summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gnu/usr.bin/perl/AUTHORS44
-rwxr-xr-xgnu/usr.bin/perl/Cross/Makefile-cross-SH12
-rw-r--r--gnu/usr.bin/perl/Cross/config.sh-arm-linux46
-rw-r--r--gnu/usr.bin/perl/Cross/config.sh-arm-linux-n77042
-rw-r--r--gnu/usr.bin/perl/META.json135
-rw-r--r--gnu/usr.bin/perl/META.yml34
-rw-r--r--gnu/usr.bin/perl/Makefile.micro2
-rw-r--r--gnu/usr.bin/perl/NetWare/Makefile5
-rw-r--r--gnu/usr.bin/perl/NetWare/NWUtil.c14
-rw-r--r--gnu/usr.bin/perl/NetWare/config.wc4
-rw-r--r--gnu/usr.bin/perl/NetWare/config_H.wc10
-rw-r--r--gnu/usr.bin/perl/NetWare/nwhashcls.cpp4
-rw-r--r--gnu/usr.bin/perl/NetWare/sv_nw.c6
-rw-r--r--gnu/usr.bin/perl/Policy_sh.SH2
-rw-r--r--gnu/usr.bin/perl/Porting/Maintainers.pm31
-rw-r--r--gnu/usr.bin/perl/Porting/README.pod355
-rw-r--r--gnu/usr.bin/perl/Porting/acknowledgements.pl4
-rw-r--r--gnu/usr.bin/perl/Porting/bisect-runner.pl32
-rw-r--r--gnu/usr.bin/perl/Porting/bump-perl-version12
-rwxr-xr-xgnu/usr.bin/perl/Porting/checkAUTHORS.pl51
-rwxr-xr-xgnu/usr.bin/perl/Porting/checkcfgvar.pl4
-rw-r--r--gnu/usr.bin/perl/Porting/checkpodencoding.pl10
-rw-r--r--gnu/usr.bin/perl/Porting/cmpVERSION.pl85
-rw-r--r--gnu/usr.bin/perl/Porting/config.sh48
-rwxr-xr-xgnu/usr.bin/perl/Porting/config_h.pl7
-rw-r--r--gnu/usr.bin/perl/Porting/core-cpan-diff41
-rwxr-xr-xgnu/usr.bin/perl/Porting/corelist-perldelta.pl8
-rwxr-xr-xgnu/usr.bin/perl/Porting/corelist.pl145
-rw-r--r--gnu/usr.bin/perl/Porting/epigraphs.pod498
-rw-r--r--gnu/usr.bin/perl/Porting/exec-bit.txt3
-rw-r--r--gnu/usr.bin/perl/Porting/leakfinder.pl166
-rw-r--r--gnu/usr.bin/perl/Porting/makemeta140
-rw-r--r--gnu/usr.bin/perl/Porting/manisort1
-rw-r--r--gnu/usr.bin/perl/Porting/new-perldelta.pl2
-rw-r--r--gnu/usr.bin/perl/Porting/perldelta_template.pod130
-rw-r--r--gnu/usr.bin/perl/Porting/perlhist_calculate.pl42
-rw-r--r--gnu/usr.bin/perl/Porting/pod_lib.pl222
-rw-r--r--gnu/usr.bin/perl/Porting/pod_rules.pl5
-rw-r--r--gnu/usr.bin/perl/Porting/release_announcement_template.txt19
-rw-r--r--gnu/usr.bin/perl/Porting/release_managers_guide.pod284
-rw-r--r--gnu/usr.bin/perl/Porting/release_schedule.pod85
-rw-r--r--gnu/usr.bin/perl/Porting/sync-with-cpan296
-rw-r--r--gnu/usr.bin/perl/Porting/todo.pod126
-rw-r--r--gnu/usr.bin/perl/README.aix9
-rw-r--r--gnu/usr.bin/perl/README.bs20002
-rw-r--r--gnu/usr.bin/perl/README.cn124
-rw-r--r--gnu/usr.bin/perl/README.cygwin8
-rw-r--r--gnu/usr.bin/perl/README.haiku6
-rw-r--r--gnu/usr.bin/perl/README.hpux81
-rw-r--r--gnu/usr.bin/perl/README.jp80
-rw-r--r--gnu/usr.bin/perl/README.ko182
-rw-r--r--gnu/usr.bin/perl/README.macosx76
-rw-r--r--gnu/usr.bin/perl/README.os3902
-rw-r--r--gnu/usr.bin/perl/README.tw8
-rw-r--r--gnu/usr.bin/perl/README.vos124
-rw-r--r--gnu/usr.bin/perl/autodoc.pl16
-rw-r--r--gnu/usr.bin/perl/charclass_invlists.h420
-rw-r--r--gnu/usr.bin/perl/configure.com222
-rw-r--r--gnu/usr.bin/perl/cpan/Archive-Extract/lib/Archive/Extract.pm27
-rwxr-xr-xgnu/usr.bin/perl/cpan/Archive-Extract/t/01_Archive-Extract.t132
-rw-r--r--gnu/usr.bin/perl/cpan/Archive-Tar/bin/ptar23
-rw-r--r--gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar.pm27
-rw-r--r--gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar/File.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/AutoLoader/lib/AutoLoader.pm30
-rwxr-xr-xgnu/usr.bin/perl/cpan/AutoLoader/t/01AutoLoader.t19
-rw-r--r--gnu/usr.bin/perl/cpan/B-Debug/Debug.pm19
-rwxr-xr-xgnu/usr.bin/perl/cpan/CGI/t/autoescape.t1
-rwxr-xr-xgnu/usr.bin/perl/cpan/CGI/t/form.t32
-rwxr-xr-xgnu/usr.bin/perl/cpan/CGI/t/function.t3
-rw-r--r--gnu/usr.bin/perl/cpan/CGI/t/headers.t6
-rw-r--r--gnu/usr.bin/perl/cpan/CGI/t/multipart_init.t22
-rw-r--r--gnu/usr.bin/perl/cpan/CGI/t/tmpdir.t21
-rwxr-xr-xgnu/usr.bin/perl/cpan/CGI/t/unescapeHTML.t6
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/Changes14
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm728
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/accepts.t29
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/bad_version_hook.t49
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/basic.t236
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/finalize.t91
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/from-hash.t69
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/merge.t136
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm11
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta-YAML/t/15_multibyte.t7
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta/Changes29
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta/t/prereqs.t1
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN-Meta/t/strings.t19
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/Changes31
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/App/Cpan.pm394
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/CPAN.pm59
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Bundle.pm3
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Debug.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Distribution.pm121
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/FirstTime.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HandleConfig.pm9
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Index.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Mirrors.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Nox.pm5
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Queue.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Tarzip.pm18
-rw-r--r--gnu/usr.bin/perl/cpan/CPAN/scripts/cpan71
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS-Dist-Build/lib/CPANPLUS/Dist/Build.pm13
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS-Dist-Build/lib/CPANPLUS/Dist/Build/Constants.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS.pm3
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Config/HomeEnv.pm63
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Configure/Setup.pm5
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Dist/Base.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Dist/Sample.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants.pm7
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants/Report.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite.pm13
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite/Tie.pm8
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Utils/Autoflush.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Module/Signature.pm5
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Shell/Classic.pm35
-rw-r--r--gnu/usr.bin/perl/cpan/CPANPLUS/t/inc/conf.pl2
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Bzip2.xs59
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Makefile.PL8
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Changes61
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Makefile.PL9
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/README26
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Zlib.xs144
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm101
-rwxr-xr-xgnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/02zlib.t21
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/crc32.h2
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/infback.c14
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inffixed.h6
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inflate.c90
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inftrees.c46
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zlib.h309
-rw-r--r--gnu/usr.bin/perl/cpan/Config-Perl-V/V.pm509
-rw-r--r--gnu/usr.bin/perl/cpan/Config-Perl-V/t/00_pod.t7
-rw-r--r--gnu/usr.bin/perl/cpan/Config-Perl-V/t/01_pod.t7
-rw-r--r--gnu/usr.bin/perl/cpan/Config-Perl-V/t/10_base.t35
-rw-r--r--gnu/usr.bin/perl/cpan/Config-Perl-V/t/20_plv.t57
-rw-r--r--gnu/usr.bin/perl/cpan/DB_File/Changes5
-rw-r--r--gnu/usr.bin/perl/cpan/DB_File/DB_File.pm6
-rwxr-xr-xgnu/usr.bin/perl/cpan/Devel-PPPort/t/misc.t1
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-MD5/MD5.pm28
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-MD5/Makefile.PL2
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-MD5/README2
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-SHA/Changes56
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-SHA/Makefile.PL34
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-SHA/README6
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-SHA/SHA.xs25
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-SHA/lib/Digest/SHA.pm68
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-SHA/shasum10
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.c136
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.h87
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.c2
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-SHA/t/unicode.t43
-rw-r--r--gnu/usr.bin/perl/cpan/Encode/Encode/Makefile_PL.e2x7
-rw-r--r--gnu/usr.bin/perl/cpan/Encode/MANIFEST1
-rw-r--r--gnu/usr.bin/perl/cpan/Encode/META.json39
-rw-r--r--gnu/usr.bin/perl/cpan/Encode/META.yml37
-rw-r--r--gnu/usr.bin/perl/cpan/Encode/lib/Encode/Supported.pod4
-rwxr-xr-xgnu/usr.bin/perl/cpan/Encode/t/Encode.t13
-rwxr-xr-xgnu/usr.bin/perl/cpan/Encode/t/encoding.t1
-rwxr-xr-xgnu/usr.bin/perl/cpan/Encode/t/gsm0338.t6
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/MANIFEST8
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm17
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm101
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod8
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm8
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm36
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/01perl_bugs.t25
-rwxr-xr-xgnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t2
-rwxr-xr-xgnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/Liblist.t2
-rwxr-xr-xgnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/MM_OS2.t2
-rwxr-xr-xgnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/MM_Win32.t6
-rwxr-xr-xgnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/basic.t5
-rwxr-xr-xgnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/hints.t60
-rwxr-xr-xgnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/metafile_data.t75
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/parse_abstract.t15
-rwxr-xr-xgnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/pod2man.t2
-rwxr-xr-xgnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/xs.t2
-rw-r--r--gnu/usr.bin/perl/cpan/File-CheckTree/lib/File/CheckTree.pm240
-rw-r--r--gnu/usr.bin/perl/cpan/File-CheckTree/t/CheckTree.t181
-rw-r--r--gnu/usr.bin/perl/cpan/File-Fetch/lib/File/Fetch.pm1090
-rwxr-xr-xgnu/usr.bin/perl/cpan/File-Fetch/t/01_File-Fetch.t78
-rw-r--r--gnu/usr.bin/perl/cpan/File-Path/lib/File/Path.pm12
-rw-r--r--gnu/usr.bin/perl/cpan/File-Temp/lib/File/Temp.pm2539
-rwxr-xr-xgnu/usr.bin/perl/cpan/File-Temp/t/cmp.t48
-rwxr-xr-xgnu/usr.bin/perl/cpan/File-Temp/t/mktemp.t3
-rwxr-xr-xgnu/usr.bin/perl/cpan/File-Temp/t/object.t29
-rwxr-xr-xgnu/usr.bin/perl/cpan/File-Temp/t/posix.t3
-rw-r--r--gnu/usr.bin/perl/cpan/File-Temp/t/rmtree.t44
-rwxr-xr-xgnu/usr.bin/perl/cpan/File-Temp/t/security.t119
-rwxr-xr-xgnu/usr.bin/perl/cpan/File-Temp/t/tempfile.t87
-rw-r--r--gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.xs2
-rwxr-xr-xgnu/usr.bin/perl/cpan/Filter-Util-Call/t/call.t2
-rw-r--r--gnu/usr.bin/perl/cpan/Getopt-Long/CHANGES34
-rwxr-xr-xgnu/usr.bin/perl/cpan/Getopt-Long/t/gol-oo.t10
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm314
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/001_api.t5
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/003_agent.t33
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/100_get.t4
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/130_redirect.t5
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-01.txt2
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-02.txt2
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-03.txt2
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-04.txt2
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-05.txt2
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-06.txt2
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-07.txt2
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-08.txt2
-rw-r--r--gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-09.txt2
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/Changes59
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/Makefile.PL10
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/README12
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/Compress/Zlib.pm143
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm9
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base.pm130
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm358
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm36
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Deflate.pm110
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/FAQ.pod77
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip.pm205
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm145
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip.pm391
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Inflate.pm8
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm131
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/AnyUncompress.pm158
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Base.pm158
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm24
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm122
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm115
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm127
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm145
-rwxr-xr-xgnu/usr.bin/perl/cpan/IO-Compress/t/000prereq.t2
-rwxr-xr-xgnu/usr.bin/perl/cpan/IO-Compress/t/006zip.t30
-rwxr-xr-xgnu/usr.bin/perl/cpan/IO-Compress/t/01misc.t145
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/t/compress/encode.pl89
-rwxr-xr-xgnu/usr.bin/perl/cpan/IO-Compress/t/cz-14gzopen.t20
-rw-r--r--gnu/usr.bin/perl/cpan/IPC-Cmd/lib/IPC/Cmd.pm11
-rw-r--r--gnu/usr.bin/perl/cpan/JSON-PP/lib/JSON/PP.pm28
-rw-r--r--gnu/usr.bin/perl/cpan/JSON-PP/t/019_incr.t13
-rw-r--r--gnu/usr.bin/perl/cpan/List-Util/Makefile.PL2
-rwxr-xr-xgnu/usr.bin/perl/cpan/List-Util/t/dualvar.t65
-rw-r--r--gnu/usr.bin/perl/cpan/List-Util/t/multicall-refcount.t21
-rw-r--r--gnu/usr.bin/perl/cpan/List-Util/t/sum0.t15
-rwxr-xr-xgnu/usr.bin/perl/cpan/List-Util/t/tainted.t2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes.pm81
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes.pod14
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/API.pod6
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Changes.pod71
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Constants.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Constants.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country.pod9
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country_Codes.pm2413
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country_Retired.pm907
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency_Codes.pm27
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency_Retired.pm207
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm1227
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Retired.pm9
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm797
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Retired.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm476
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Retired.pm9
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language_Codes.pm60631
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language_Retired.pm269
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm2081
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script_Retired.pm68
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Country.pod9
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Currency.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Language.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Script.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/t/code2currency.t2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/t/country2code.t36
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/t/country2code_old.t2
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/t/language2code.t27
-rw-r--r--gnu/usr.bin/perl/cpan/Locale-Codes/t/testfunc.pl2
-rw-r--r--gnu/usr.bin/perl/cpan/Log-Message-Simple/lib/Log/Message/Simple.pm33
-rwxr-xr-xgnu/usr.bin/perl/cpan/Log-Message-Simple/t/02_imports.t28
-rwxr-xr-xgnu/usr.bin/perl/cpan/Log-Message-Simple/t/03_functions.t22
-rw-r--r--gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message.pm27
-rw-r--r--gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Config.pm3
-rw-r--r--gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Handlers.pm3
-rw-r--r--gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Item.pm3
-rwxr-xr-xgnu/usr.bin/perl/cpan/Log-Message/t/01_Log-Message-Config.t6
-rwxr-xr-xgnu/usr.bin/perl/cpan/Log-Message/t/02_Log-Message.t34
-rw-r--r--gnu/usr.bin/perl/cpan/Log-Message/t/conf/config_file2
-rw-r--r--gnu/usr.bin/perl/cpan/Memoize/Memoize/AnyDBM_File.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Memoize/Memoize/Expire.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireFile.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireTest.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Memoize/Memoize/NDBM_File.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Memoize/Memoize/SDBM_File.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Memoize/Memoize/Storable.pm2
-rwxr-xr-xgnu/usr.bin/perl/cpan/Memoize/t/array_confusion.t20
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/Changes67
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/bin/config_data4
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build.pm28
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/API.pod58
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Authoring.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Base.pm475
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Compat.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Config.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Cookbook.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Dumper.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Notes.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/PPMMaker.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Amiga.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Default.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/EBCDIC.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/MPEiX.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/MacOS.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/RiscOS.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Unix.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/VMS.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/VOS.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Windows.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/aix.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/cygwin.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/darwin.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/os2.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/PodParser.pm5
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/inc/latest.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Build/lib/inc/latest/private.pm2
-rwxr-xr-xgnu/usr.bin/perl/cpan/Module-Build/t/install.t6
-rwxr-xr-xgnu/usr.bin/perl/cpan/Module-Build/t/pod_parser.t27
-rwxr-xr-xgnu/usr.bin/perl/cpan/Module-Build/t/use_tap_harness.t2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm167
-rwxr-xr-xgnu/usr.bin/perl/cpan/Module-Load-Conditional/t/01_Module_Load_Conditional.t97
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/test_lib/a/X.pm5
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/test_lib/b/X.pm5
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/Commented.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/LoadIt.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/MustBe/Loaded.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/NotMain.pm3
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/NotX.pm15
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Load/lib/Module/Load.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Metadata/lib/Module/Metadata.pm153
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Metadata/t/encoding.t30
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF16BE.pmbin0 -> 238 bytes
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF16LE.pmbin0 -> 238 bytes
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF8.pm13
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Metadata/t/metadata.t104
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Devel/InnerPackage.pm3
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Module/Pluggable.pm110
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Module/Pluggable/Object.pm164
-rwxr-xr-xgnu/usr.bin/perl/cpan/Module-Pluggable/t/19can_ok_clobber.t8
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/t/22trigger.t54
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/t/23depth.t38
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/t/24local_inc_object.t23
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/t/24local_inc_package.t17
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/Text/Abbrev.pm10
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/After.pm3
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackAllow.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackDeny.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Deny.pm3
-rw-r--r--gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Error.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Object-Accessor/lib/Object/Accessor.pm17
-rw-r--r--gnu/usr.bin/perl/cpan/Params-Check/lib/Params/Check.pm182
-rw-r--r--gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/Changes6
-rw-r--r--gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm2
-rwxr-xr-xgnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/01_compile.t3
-rw-r--r--gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/02_api.t3
-rw-r--r--gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/03_functions.t3
-rw-r--r--gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/04_export.t3
-rw-r--r--gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/05_errors.t3
-rw-r--r--gnu/usr.bin/perl/cpan/Perl-OSType/lib/Perl/OSType.pm57
-rw-r--r--gnu/usr.bin/perl/cpan/Perl-OSType/t/OSType.t2
-rw-r--r--gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm56
-rwxr-xr-xgnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t18
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Checker/lib/Pod/Checker.pm1330
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Checker/scripts/podchecker.PL186
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/contains_bad_pod.xr5
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/empty.xr0
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/podchkenc.t29
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/podchkenc.xr1
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/poderrs.t241
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/poderrs.xr53
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/selfcheck.t45
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/testcmp.pl94
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/testpchk.pl130
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-LaTeX/lib/Pod/LaTeX.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/Find.pm1098
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/InputObjects.pm1884
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/ParseUtils.pm1714
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/Parser.pm3668
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/scripts/podselect.PL286
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/contains_bad_pod.xr10
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/contains_pod.xr10
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/emptycmd.t42
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/emptycmd.xr4
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/find.t204
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/for.t118
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/for.xr42
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/headings.t280
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/headings.xr52
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/include.t72
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/include.xr44
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/included.t70
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/included.xr6
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/lref.t132
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/lref.xr80
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/multiline_items.t62
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/multiline_items.xr12
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_items.t128
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_items.xr38
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_seqs.t46
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_seqs.xr6
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/oneline_cmds.t92
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/oneline_cmds.xr52
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/podselect.t36
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/podselect.xr88
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/selfcheck.t98
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/special_seqs.t92
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/special_seqs.xr50
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testcmp.pl188
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testp2pt.pl384
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testpchk.pl260
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testpods/lib/Pod/Stuff.pm40
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Parser/t/pod/twice.t72
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm8
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToANSI.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTerm.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/perldoc.pod43
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/ChangeLog156
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/README4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple.pm51
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple.pod37
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm63
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm5
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm17
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm8
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm21
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod270
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Text.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm93
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm5
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Simple/t/closeys.t1
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Simple/t/corpus.t1
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jp.xml37
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpx.xml37
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpy.xml37
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpz.xml3
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/8859_7.xml44
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/cp1256.xml90
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn01.txt11
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn01.xml36
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn02.txt11
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn02.xml36
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn03.txt12
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn03.xml2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn04.txt17
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn04.xml27
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/fet_cont.xml21
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/fet_dup.xml133
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/iso6.xml96
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/koi8r.xml134
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38.xml44
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38b.xml44
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38p.xml48
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/lat1fr.xml54
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/lat1frim.xml69
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/pasternak_cp1251.xml244
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain.xml9
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_explicit.xml12
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_latin1.xml15
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_utf8.xml15
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/polish_utf8.xml52
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/s2763_sjis.xml13
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/thai_iso11.xml122
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/enc-chars.t61
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/encod04.t143
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Simple/t/fcodes_l.t10
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Simple/t/html01.t2
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Simple/t/items.t30
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Simple/t/items02.t90
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Simple/t/pulltitl.t10
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/whine.t69
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Simple/t/x_nixer.t31
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml-bkb.t21
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml01.t34
-rwxr-xr-xgnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml10.t24
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml20.t63
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Usage/lib/Pod/Usage.pm767
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Usage/scripts/pod2usage.PL190
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/p2u_data.pl18
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage.t18
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage.xr63
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage2.t357
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/testcmp.pl94
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/testp2pt.pl192
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/usage.pod18
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/usage2.pod56
-rw-r--r--gnu/usr.bin/perl/cpan/Socket/Makefile.PL51
-rw-r--r--gnu/usr.bin/perl/cpan/Socket/Socket.pm70
-rw-r--r--gnu/usr.bin/perl/cpan/Socket/Socket.xs215
-rw-r--r--gnu/usr.bin/perl/cpan/Socket/t/ip_mreq.t41
-rw-r--r--gnu/usr.bin/perl/cpan/Socket/t/sockaddr.t10
-rw-r--r--gnu/usr.bin/perl/cpan/Sys-Syslog/Changes36
-rw-r--r--gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL5
-rw-r--r--gnu/usr.bin/perl/cpan/Sys-Syslog/README19
-rw-r--r--gnu/usr.bin/perl/cpan/Sys-Syslog/README.win322
-rw-r--r--gnu/usr.bin/perl/cpan/Sys-Syslog/Syslog.pm79
-rw-r--r--gnu/usr.bin/perl/cpan/Sys-Syslog/Syslog.xs8
-rw-r--r--gnu/usr.bin/perl/cpan/Sys-Syslog/t/facilities-routing.t143
-rwxr-xr-xgnu/usr.bin/perl/cpan/Sys-Syslog/t/syslog.t43
-rw-r--r--gnu/usr.bin/perl/cpan/Sys-Syslog/win32/compile.pl2
-rw-r--r--gnu/usr.bin/perl/cpan/Term-ANSIColor/ANSIColor.pm878
-rw-r--r--gnu/usr.bin/perl/cpan/Term-ANSIColor/ChangeLog176
-rw-r--r--gnu/usr.bin/perl/cpan/Term-ANSIColor/README190
-rw-r--r--gnu/usr.bin/perl/cpan/Term-ANSIColor/t/aliases-func.t88
-rwxr-xr-xgnu/usr.bin/perl/cpan/Term-ANSIColor/t/basic.t409
-rw-r--r--gnu/usr.bin/perl/cpan/Term-ANSIColor/t/basic256.t129
-rw-r--r--gnu/usr.bin/perl/cpan/Term-ANSIColor/t/eval.t38
-rw-r--r--gnu/usr.bin/perl/cpan/Term-ANSIColor/t/stringify.t51
-rw-r--r--gnu/usr.bin/perl/cpan/Term-ANSIColor/t/taint.t39
-rw-r--r--gnu/usr.bin/perl/cpan/Term-UI/lib/Term/UI.pm15
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/Changes32
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/MANIFEST3
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/MANIFEST.CUMMULATIVE2
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/bin/prove2
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove.pm5
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State.pm67
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State/Result.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Base.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Base.pm28
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Color.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Console.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/File.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Session.pm9
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Harness.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Object.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Source.pm30
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm7
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Utils.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/lib/Test/Harness.pm28
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/t/compat/env_opts.t53
-rwxr-xr-xgnu/usr.bin/perl/cpan/Test-Harness/t/harness.t93
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/t/nowarn.t10
-rwxr-xr-xgnu/usr.bin/perl/cpan/Test-Harness/t/prove.t26
-rwxr-xr-xgnu/usr.bin/perl/cpan/Test-Harness/t/source.t7
-rw-r--r--gnu/usr.bin/perl/cpan/Test-Harness/t/source_handler.t12
-rw-r--r--gnu/usr.bin/perl/cpan/Test/lib/Test.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Text-ParseWords/lib/Text/ParseWords.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Text-Soundex/Changes5
-rw-r--r--gnu/usr.bin/perl/cpan/Text-Soundex/Soundex.pm4
-rw-r--r--gnu/usr.bin/perl/cpan/Text-Soundex/Soundex.xs2
-rw-r--r--gnu/usr.bin/perl/cpan/Text-Tabs/CHANGELOG18
-rw-r--r--gnu/usr.bin/perl/cpan/Text-Tabs/lib/Text/Tabs.pm82
-rw-r--r--gnu/usr.bin/perl/cpan/Text-Tabs/lib/Text/Wrap.pm76
-rwxr-xr-xgnu/usr.bin/perl/cpan/Text-Tabs/t/Jacobson.t2
-rwxr-xr-xgnu/usr.bin/perl/cpan/Text-Tabs/t/Jacobson2.t2
-rw-r--r--gnu/usr.bin/perl/cpan/Text-Tabs/t/Tabs-ElCid.t177
-rw-r--r--gnu/usr.bin/perl/cpan/Text-Tabs/t/Wrap-JLB.t152
-rw-r--r--gnu/usr.bin/perl/cpan/Time-HiRes/Makefile.PL3
-rw-r--r--gnu/usr.bin/perl/cpan/Time-Local/lib/Time/Local.pm16
-rw-r--r--gnu/usr.bin/perl/cpan/Time-Local/t/Local.t20
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Changes60
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate.pm222
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate.xs36
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Korean.pm26
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Stroke.pm8
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm3176
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale.pm196
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/af.pl6
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ar.pl24
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/as.pl17
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/az.pl94
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/be.pl72
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/bg.pl76
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/bn.pl11
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ca.pl28
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cs.pl44
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cy.pl52
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/da.pl144
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/de_phone.pl52
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ee.pl36
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/eo.pl52
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/es.pl12
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/es_trad.pl24
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/et.pl100
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fa.pl95
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fi.pl120
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl116
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fil.pl18
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fo.pl144
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/gu.pl11
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ha.pl24
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/haw.pl66
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hi.pl11
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hr.pl90
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hu.pl296
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hy.pl10
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ig.pl102
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/is.pl152
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ja.pl2376
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kk.pl92
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kl.pl140
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kn.pl13
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ko.pl1284
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kok.pl18
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ln.pl18
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lt.pl82
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lv.pl68
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mk.pl76
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ml.pl38
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mr.pl20
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mt.pl52
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nb.pl142
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nn.pl142
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nso.pl68
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/om.pl38
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/or.pl16
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/pa.pl36
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/pl.pl96
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ro.pl100
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ru.pl76
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sa.pl20
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/se.pl288
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/si.pl13
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/si_dict.pl11
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sk.pl84
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sl.pl28
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sq.pl92
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sr.pl84
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sv.pl168
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl164
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ta.pl80
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/te.pl11
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/th.pl21
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/tn.pl68
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/to.pl118
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/tr.pl86
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/uk.pl78
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ur.pl144
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/vi.pl420
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/wae.pl42
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/wo.pl56
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/yo.pl46
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh.pl416
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_big5.pl416
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_gb.pl416
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl562
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_strk.pl562
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl1563
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/allkeys.txt40863
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/Makefile.PL29
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/README6
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/cjk_zy.t87
-rwxr-xr-xgnu/usr.bin/perl/cpan/Unicode-Collate/t/cjkrange.t4
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/compatui.t4
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/default.t53
-rwxr-xr-xgnu/usr.bin/perl/cpan/Unicode-Collate/t/hangtype.t4
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/ident.t161
-rwxr-xr-xgnu/usr.bin/perl/cpan/Unicode-Collate/t/index.t122
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_as.t27
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_bn.t16
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_bscy.t209
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cjk.t9
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cjkc.t9
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ee.t190
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_es.t2
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_estr.t2
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_fa.t131
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_gu.t23
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_hi.t23
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_hy.t22
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kn.t19
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kok.t40
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_mr.t42
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_or.t31
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sa.t42
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_si.t21
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sidt.t27
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sq.t2
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ta.t110
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_te.t16
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_test.t20
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_th.t64
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_to.t159
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_uk.t25
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ur.t185
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_zhzy.t381
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/nonchar.t58
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/notable.t140
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/overcjk0.t4
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Collate/t/overcjk1.t4
-rwxr-xr-xgnu/usr.bin/perl/cpan/Unicode-Collate/t/test.t149
-rwxr-xr-xgnu/usr.bin/perl/cpan/Unicode-Collate/t/version.t4
-rwxr-xr-xgnu/usr.bin/perl/cpan/Unicode-Collate/t/view.t43
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Normalize/Changes8
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Normalize/Makefile.PL35
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Normalize/Normalize.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Normalize/Normalize.xs58
-rw-r--r--gnu/usr.bin/perl/cpan/Unicode-Normalize/README2
-rw-r--r--gnu/usr.bin/perl/cpan/Win32/Changes371
-rw-r--r--gnu/usr.bin/perl/cpan/Win32/Makefile.PL36
-rw-r--r--gnu/usr.bin/perl/cpan/Win32/Win32.pm2455
-rw-r--r--gnu/usr.bin/perl/cpan/Win32/Win32.xs3604
-rw-r--r--gnu/usr.bin/perl/cpan/Win32/longpath.inc222
-rw-r--r--gnu/usr.bin/perl/cpan/Win32/t/CodePage.t27
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/CreateFile.t62
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/ExpandEnvironmentStrings.t14
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/GetCurrentThreadId.t76
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/GetFileVersion.t36
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/GetFolderPath.t16
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/GetFullPathName.t68
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/GetLongPathName.t106
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/GetOSName.t5
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/GetOSVersion.t22
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/GetShortPathName.t40
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/GuidGen.t30
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/Names.t113
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32/t/Unicode.t175
-rw-r--r--gnu/usr.bin/perl/cpan/Win32API-File/Changes4
-rw-r--r--gnu/usr.bin/perl/cpan/Win32API-File/File.pm13
-rw-r--r--gnu/usr.bin/perl/cpan/Win32API-File/Makefile.PL23
-rw-r--r--gnu/usr.bin/perl/cpan/Win32API-File/cFile.pc3
-rwxr-xr-xgnu/usr.bin/perl/cpan/Win32API-File/t/file.t10
-rw-r--r--gnu/usr.bin/perl/cpan/autodie/lib/Fatal.pm74
-rw-r--r--gnu/usr.bin/perl/cpan/autodie/lib/autodie.pm6
-rw-r--r--gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception/system.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/autodie/lib/autodie/hints.pm2
-rwxr-xr-xgnu/usr.bin/perl/cpan/autodie/t/backcompat.t2
-rwxr-xr-xgnu/usr.bin/perl/cpan/autodie/t/exceptions.t1
-rwxr-xr-xgnu/usr.bin/perl/cpan/autodie/t/hints_pod_examples.t35
-rwxr-xr-xgnu/usr.bin/perl/cpan/autodie/t/recv.t9
-rwxr-xr-xgnu/usr.bin/perl/cpan/parent/t/parent.t4
-rw-r--r--gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq2.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq3.pod9
-rw-r--r--gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq4.pod4
-rw-r--r--gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq5.pod6
-rw-r--r--gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq6.pod4
-rw-r--r--gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq7.pod4
-rw-r--r--gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq8.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq9.pod2
-rw-r--r--gnu/usr.bin/perl/cpan/perlfaq/lib/perlglossary.pod3916
-rw-r--r--gnu/usr.bin/perl/cpan/podlators/VERSION2
-rw-r--r--gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Color.pm10
-rw-r--r--gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Overstrike.pm18
-rw-r--r--gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Termcap.pm10
-rw-r--r--gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL95
-rw-r--r--gnu/usr.bin/perl/cpan/podlators/scripts/pod2text.PL88
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/basic.t25
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/color.t15
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/filehandle.t18
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/man-heading.t8
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/man-options.t149
-rw-r--r--gnu/usr.bin/perl/cpan/podlators/t/man-perlio.t13
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/man-utf8.t12
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/man.t94
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/overstrike.t15
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/pod-parser.t26
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/termcap.t15
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/text-encoding.t21
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/text-options.t120
-rw-r--r--gnu/usr.bin/perl/cpan/podlators/t/text-perlio.t12
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/text-utf8.t12
-rwxr-xr-xgnu/usr.bin/perl/cpan/podlators/t/text.t25
-rw-r--r--gnu/usr.bin/perl/cygwin/cygwin.c6
-rw-r--r--gnu/usr.bin/perl/dist/Attribute-Handlers/lib/Attribute/Handlers.pm18
-rw-r--r--gnu/usr.bin/perl/dist/B-Deparse/Deparse.pm276
-rw-r--r--gnu/usr.bin/perl/dist/B-Deparse/t/core.t688
-rwxr-xr-xgnu/usr.bin/perl/dist/B-Deparse/t/deparse.t161
-rw-r--r--gnu/usr.bin/perl/dist/Carp/lib/Carp.pm84
-rw-r--r--gnu/usr.bin/perl/dist/Carp/lib/Carp/Heavy.pm2
-rw-r--r--gnu/usr.bin/perl/dist/Carp/t/Carp.t11
-rw-r--r--gnu/usr.bin/perl/dist/Carp/t/stash_deletion.t111
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/Cwd.pm6
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/Cwd.xs2
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/lib/File/Spec.pm4
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Cygwin.pm2
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Epoc.pm2
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Functions.pm2
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Mac.pm2
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/OS2.pm2
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Unix.pm76
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/VMS.pm2
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Win32.pm2
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/t/Spec.t4
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/t/cwd.t12
-rw-r--r--gnu/usr.bin/perl/dist/Cwd/t/taint.t9
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/Changes60
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/Dumper.pm537
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/Dumper.xs92
-rwxr-xr-xgnu/usr.bin/perl/dist/Data-Dumper/t/bless.t17
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/bless_var_method.t86
-rwxr-xr-xgnu/usr.bin/perl/dist/Data-Dumper/t/bugs.t2
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/deparse.t80
-rwxr-xr-xgnu/usr.bin/perl/dist/Data-Dumper/t/dumper.t66
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/dumpperl.t144
-rwxr-xr-xgnu/usr.bin/perl/dist/Data-Dumper/t/freezer.t126
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/freezer_useperl.t106
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/indent.t110
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/lib/Testing.pm15
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/misc.t209
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/names.t66
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/perl-74170.t22
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t418
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/quotekeys.t94
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/seen.t103
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/sortkeys.t190
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/sparseseen.t88
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/terse.t43
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/toaster.t88
-rw-r--r--gnu/usr.bin/perl/dist/Data-Dumper/t/values.t40
-rw-r--r--gnu/usr.bin/perl/dist/Env/lib/Env.pm4
-rw-r--r--gnu/usr.bin/perl/dist/Env/t/array.t6
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/Changes21
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/Makefile.PL1
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm8
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm5
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-Install/lib/ExtUtils/Install.pm31
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-Install/lib/ExtUtils/Installed.pm4
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm21
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-Manifest/t/Manifest.t2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/Changes3
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm6
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm10
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm2
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/perlxstut.pod8
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod8
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/115-avoid-noise.t21
-rw-r--r--gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/XSWarn.xs14
-rw-r--r--gnu/usr.bin/perl/dist/Filter-Simple/lib/Filter/Simple.pm16
-rw-r--r--gnu/usr.bin/perl/dist/I18N-LangTags/lib/I18N/LangTags.pm2
-rw-r--r--gnu/usr.bin/perl/dist/I18N-LangTags/lib/I18N/LangTags/List.pm2
-rw-r--r--gnu/usr.bin/perl/dist/IO/IO.pm2
-rw-r--r--gnu/usr.bin/perl/dist/IO/IO.xs43
-rw-r--r--gnu/usr.bin/perl/dist/IO/Makefile.PL5
-rw-r--r--gnu/usr.bin/perl/dist/IO/lib/IO/Handle.pm9
-rw-r--r--gnu/usr.bin/perl/dist/IO/lib/IO/Socket.pm21
-rwxr-xr-xgnu/usr.bin/perl/dist/IO/t/IO.t1
-rw-r--r--gnu/usr.bin/perl/dist/IO/t/cachepropagate-tcp.t57
-rw-r--r--gnu/usr.bin/perl/dist/IO/t/cachepropagate-udp.t40
-rw-r--r--gnu/usr.bin/perl/dist/IO/t/cachepropagate-unix.t102
-rwxr-xr-xgnu/usr.bin/perl/dist/IO/t/io_taint.t5
-rwxr-xr-xgnu/usr.bin/perl/dist/IO/t/io_utf8.t13
-rwxr-xr-xgnu/usr.bin/perl/dist/IO/t/io_xs.t30
-rw-r--r--gnu/usr.bin/perl/dist/Locale-Maketext/ChangeLog6
-rw-r--r--gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext.pm26
-rw-r--r--gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext.pod14
-rw-r--r--gnu/usr.bin/perl/dist/Locale-Maketext/t/09_compile.t11
-rw-r--r--gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigFloat.pm4
-rw-r--r--gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt.pm6
-rw-r--r--gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm4
-rw-r--r--gnu/usr.bin/perl/dist/Math-BigRat/lib/Math/BigRat.pm8
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/Changes97
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/MANIFEST3
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/Makefile.PL19
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/corelist88
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm2963
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod52
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm2
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm1021
-rwxr-xr-xgnu/usr.bin/perl/dist/Module-CoreList/t/deprecated.t12
-rwxr-xr-xgnu/usr.bin/perl/dist/Module-CoreList/t/find_modules.t2
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t67
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t23
-rw-r--r--gnu/usr.bin/perl/dist/Net-Ping/Changes56
-rwxr-xr-xgnu/usr.bin/perl/dist/Net-Ping/t/110_icmp_inst.t4
-rwxr-xr-xgnu/usr.bin/perl/dist/Net-Ping/t/200_ping_tcp.t2
-rwxr-xr-xgnu/usr.bin/perl/dist/Net-Ping/t/250_ping_hires.t2
-rwxr-xr-xgnu/usr.bin/perl/dist/Net-Ping/t/400_ping_syn.t3
-rwxr-xr-xgnu/usr.bin/perl/dist/Net-Ping/t/410_syn_host.t4
-rwxr-xr-xgnu/usr.bin/perl/dist/Net-Ping/t/500_ping_icmp.t4
-rwxr-xr-xgnu/usr.bin/perl/dist/Net-Ping/t/510_ping_udp.t28
-rw-r--r--gnu/usr.bin/perl/dist/Net-Ping/t/520_icmp_ttl.t47
-rw-r--r--gnu/usr.bin/perl/dist/Safe/Changes15
-rw-r--r--gnu/usr.bin/perl/dist/Safe/MANIFEST2
-rw-r--r--gnu/usr.bin/perl/dist/Safe/META.yml37
-rw-r--r--gnu/usr.bin/perl/dist/Safe/Safe.pm12
-rwxr-xr-xgnu/usr.bin/perl/dist/Safe/t/safeload.t6
-rwxr-xr-xgnu/usr.bin/perl/dist/Safe/t/safeops.t14
-rw-r--r--gnu/usr.bin/perl/dist/Safe/t/saferegexp.t34
-rw-r--r--gnu/usr.bin/perl/dist/Search-Dict/Changes16
-rw-r--r--gnu/usr.bin/perl/dist/Search-Dict/Makefile.PL22
-rw-r--r--gnu/usr.bin/perl/dist/Search-Dict/README.patching27
-rw-r--r--gnu/usr.bin/perl/dist/Search-Dict/README.release49
-rw-r--r--gnu/usr.bin/perl/dist/Search-Dict/lib/Search/Dict.pm32
-rw-r--r--gnu/usr.bin/perl/dist/Search-Dict/t/Dict.t76
-rw-r--r--gnu/usr.bin/perl/dist/SelfLoader/lib/SelfLoader.pm18
-rw-r--r--gnu/usr.bin/perl/dist/Storable/ChangeLog11
-rw-r--r--gnu/usr.bin/perl/dist/Storable/Makefile.PL2
-rw-r--r--gnu/usr.bin/perl/dist/Storable/Storable.pm38
-rw-r--r--gnu/usr.bin/perl/dist/Storable/Storable.xs132
-rwxr-xr-xgnu/usr.bin/perl/dist/Storable/t/attach_errors.t37
-rwxr-xr-xgnu/usr.bin/perl/dist/Storable/t/blessed.t58
-rwxr-xr-xgnu/usr.bin/perl/dist/Storable/t/malice.t8
-rwxr-xr-xgnu/usr.bin/perl/dist/Storable/t/restrict.t23
-rw-r--r--gnu/usr.bin/perl/dist/Term-ReadLine/lib/Term/ReadLine.pm23
-rw-r--r--gnu/usr.bin/perl/dist/Thread-Queue/lib/Thread/Queue.pm185
-rw-r--r--gnu/usr.bin/perl/dist/Thread-Queue/t/09_ended.t146
-rw-r--r--gnu/usr.bin/perl/dist/Thread-Queue/t/10_timed.t66
-rw-r--r--gnu/usr.bin/perl/dist/Tie-File/lib/Tie/File.pm4
-rw-r--r--gnu/usr.bin/perl/dist/Tie-File/t/00_version.t2
-rw-r--r--gnu/usr.bin/perl/dist/XSLoader/Makefile.PL20
-rw-r--r--gnu/usr.bin/perl/dist/XSLoader/XSLoader_pm.PL6
-rw-r--r--gnu/usr.bin/perl/dist/bignum/lib/Math/BigFloat/Trace.pm2
-rw-r--r--gnu/usr.bin/perl/dist/bignum/lib/Math/BigInt/Trace.pm2
-rw-r--r--gnu/usr.bin/perl/dist/bignum/lib/bigint.pm186
-rw-r--r--gnu/usr.bin/perl/dist/bignum/lib/bignum.pm65
-rw-r--r--gnu/usr.bin/perl/dist/bignum/lib/bigrat.pm60
-rw-r--r--gnu/usr.bin/perl/dist/bignum/t/bigint.t18
-rw-r--r--gnu/usr.bin/perl/dist/bignum/t/overrides.t112
-rw-r--r--gnu/usr.bin/perl/dist/constant/lib/constant.pm30
-rwxr-xr-xgnu/usr.bin/perl/dist/constant/t/constant.t1
-rw-r--r--gnu/usr.bin/perl/dist/constant/t/utf8.t8
-rw-r--r--gnu/usr.bin/perl/dist/threads-shared/lib/threads/shared.pm43
-rw-r--r--gnu/usr.bin/perl/dist/threads-shared/shared.xs83
-rwxr-xr-xgnu/usr.bin/perl/dist/threads-shared/t/clone.t25
-rw-r--r--gnu/usr.bin/perl/dist/threads-shared/t/dualvar.t447
-rw-r--r--gnu/usr.bin/perl/dquote_static.c247
-rw-r--r--gnu/usr.bin/perl/embed.fnc458
-rw-r--r--gnu/usr.bin/perl/embedvar.h82
-rw-r--r--gnu/usr.bin/perl/ext/B/B.pm49
-rw-r--r--gnu/usr.bin/perl/ext/B/B.xs1056
-rw-r--r--gnu/usr.bin/perl/ext/B/B/Xref.pm13
-rw-r--r--gnu/usr.bin/perl/ext/B/Makefile.PL33
-rw-r--r--gnu/usr.bin/perl/ext/B/t/OptreeCheck.pm94
-rw-r--r--gnu/usr.bin/perl/ext/B/t/b.t137
-rwxr-xr-xgnu/usr.bin/perl/ext/B/t/concise-xs.t35
-rw-r--r--gnu/usr.bin/perl/ext/B/t/concise.t16
-rwxr-xr-xgnu/usr.bin/perl/ext/B/t/f_map.t36
-rwxr-xr-xgnu/usr.bin/perl/ext/B/t/f_sort.t50
-rwxr-xr-xgnu/usr.bin/perl/ext/B/t/optree_check.t7
-rw-r--r--gnu/usr.bin/perl/ext/B/t/optree_constants.t97
-rw-r--r--gnu/usr.bin/perl/ext/B/t/optree_misc.t341
-rwxr-xr-xgnu/usr.bin/perl/ext/B/t/optree_samples.t12
-rwxr-xr-xgnu/usr.bin/perl/ext/B/t/optree_sort.t82
-rwxr-xr-xgnu/usr.bin/perl/ext/B/t/optree_specials.t23
-rwxr-xr-xgnu/usr.bin/perl/ext/B/t/optree_varinit.t16
-rw-r--r--gnu/usr.bin/perl/ext/B/t/pragma.t4
-rw-r--r--gnu/usr.bin/perl/ext/B/t/walkoptree.t2
-rw-r--r--gnu/usr.bin/perl/ext/B/t/xref.t3
-rw-r--r--gnu/usr.bin/perl/ext/B/typemap14
-rw-r--r--gnu/usr.bin/perl/ext/Devel-Peek/Changes5
-rw-r--r--gnu/usr.bin/perl/ext/Devel-Peek/Peek.pm2
-rw-r--r--gnu/usr.bin/perl/ext/Devel-Peek/Peek.xs12
-rwxr-xr-xgnu/usr.bin/perl/ext/Devel-Peek/t/Peek.t117
-rw-r--r--gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL2
-rw-r--r--gnu/usr.bin/perl/ext/DynaLoader/dl_dllload.xs38
-rw-r--r--gnu/usr.bin/perl/ext/DynaLoader/dl_win32.xs31
-rw-r--r--gnu/usr.bin/perl/ext/DynaLoader/t/DynaLoader.t10
-rw-r--r--gnu/usr.bin/perl/ext/Errno/Errno_pm.PL48
-rw-r--r--gnu/usr.bin/perl/ext/File-DosGlob/DosGlob.xs52
-rw-r--r--gnu/usr.bin/perl/ext/File-DosGlob/lib/File/DosGlob.pm304
-rw-r--r--gnu/usr.bin/perl/ext/File-DosGlob/t/DosGlob.t156
-rw-r--r--gnu/usr.bin/perl/ext/File-Glob/Glob.pm36
-rw-r--r--gnu/usr.bin/perl/ext/File-Glob/Glob.xs71
-rwxr-xr-xgnu/usr.bin/perl/ext/File-Glob/t/basic.t7
-rw-r--r--gnu/usr.bin/perl/ext/File-Glob/t/rt114984.t31
-rwxr-xr-xgnu/usr.bin/perl/ext/File-Glob/t/taint.t9
-rw-r--r--gnu/usr.bin/perl/ext/File-Glob/t/threads.t71
-rw-r--r--gnu/usr.bin/perl/ext/GDBM_File/GDBM_File.xs17
-rw-r--r--gnu/usr.bin/perl/ext/GDBM_File/t/fatal.t45
-rwxr-xr-xgnu/usr.bin/perl/ext/Hash-Util-FieldHash/t/11_hashassign.t4
-rw-r--r--gnu/usr.bin/perl/ext/Hash-Util/Util.xs182
-rw-r--r--gnu/usr.bin/perl/ext/Hash-Util/lib/Hash/Util.pm206
-rwxr-xr-xgnu/usr.bin/perl/ext/Hash-Util/t/Util.t124
-rw-r--r--gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.pm4
-rw-r--r--gnu/usr.bin/perl/ext/ODBM_File/typemap1
-rw-r--r--gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm2
-rw-r--r--gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod49
-rw-r--r--gnu/usr.bin/perl/ext/POSIX/t/posix.t22
-rw-r--r--gnu/usr.bin/perl/ext/POSIX/t/sysconf.t11
-rw-r--r--gnu/usr.bin/perl/ext/POSIX/t/taint.t11
-rw-r--r--gnu/usr.bin/perl/ext/PerlIO-encoding/encoding.pm2
-rwxr-xr-xgnu/usr.bin/perl/ext/PerlIO-encoding/t/encoding.t108
-rw-r--r--gnu/usr.bin/perl/ext/PerlIO-mmap/mmap.pm2
-rw-r--r--gnu/usr.bin/perl/ext/PerlIO-mmap/mmap.xs4
-rw-r--r--gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.pm2
-rw-r--r--gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.xs28
-rwxr-xr-xgnu/usr.bin/perl/ext/PerlIO-scalar/t/scalar.t80
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Functions/Functions_pm.PL2
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Html/lib/Pod/Html.pm11
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Html/t/crossref.t14
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Html/t/crossref2.t6
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Html/t/crossref3.t6
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Html/t/feature.t1
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Html/t/htmldir1.t12
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Html/t/htmldir3.t9
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Html/t/htmlview.t10
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Html/t/pod2html-lib.pl6
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Html/t/poderr.t2
-rw-r--r--gnu/usr.bin/perl/ext/Pod-Html/testdir/perlvar-copy.pod4
-rw-r--r--gnu/usr.bin/perl/ext/SDBM_File/sdbm/README2
-rw-r--r--gnu/usr.bin/perl/ext/SDBM_File/sdbm/dba.c16
-rw-r--r--gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbd.c18
-rw-r--r--gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbe.c4
-rw-r--r--gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbu.c24
-rw-r--r--gnu/usr.bin/perl/ext/SDBM_File/sdbm/hash.c6
-rw-r--r--gnu/usr.bin/perl/ext/SDBM_File/sdbm/util.c8
-rw-r--r--gnu/usr.bin/perl/ext/Sys-Hostname/Hostname.pm6
-rw-r--r--gnu/usr.bin/perl/ext/Tie-Hash-NamedCapture/NamedCapture.pm2
-rw-r--r--gnu/usr.bin/perl/ext/Tie-Hash-NamedCapture/NamedCapture.xs2
-rw-r--r--gnu/usr.bin/perl/ext/VMS-Stdio/Stdio.xs8
-rw-r--r--gnu/usr.bin/perl/ext/Win32CORE/Win32CORE.c139
-rw-r--r--gnu/usr.bin/perl/ext/Win32CORE/Win32CORE.pm2
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/APItest.pm2
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/APItest.xs1036
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/Makefile.PL2
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/core_or_not.inc8
-rwxr-xr-xgnu/usr.bin/perl/ext/XS-APItest/t/call.t3
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/call_checker.t50
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/callregexec.t66
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/clone-with-stack.t16
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/copstash.t9
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/fetch_pad_names.t1
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/grok.t1
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/handy.t212
-rwxr-xr-xgnu/usr.bin/perl/ext/XS-APItest/t/hash.t14
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/lexsub.t19
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/multicall.t15
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/newCONSTSUB.t51
-rwxr-xr-xgnu/usr.bin/perl/ext/XS-APItest/t/op.t3
-rwxr-xr-xgnu/usr.bin/perl/ext/XS-APItest/t/svsetsv.t7
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/sym-hook.t32
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/underscore_length.t2
-rw-r--r--gnu/usr.bin/perl/ext/XS-APItest/t/xsub_h.t4
-rw-r--r--gnu/usr.bin/perl/ext/XS-Typemap/Typemap.pm4
-rw-r--r--gnu/usr.bin/perl/ext/XS-Typemap/Typemap.xs17
-rwxr-xr-xgnu/usr.bin/perl/ext/XS-Typemap/t/Typemap.t21
-rw-r--r--gnu/usr.bin/perl/ext/arybase/arybase.pm6
-rw-r--r--gnu/usr.bin/perl/ext/arybase/ptable.h4
-rw-r--r--gnu/usr.bin/perl/ext/arybase/t/akeys.t2
-rw-r--r--gnu/usr.bin/perl/ext/arybase/t/aslice.t2
-rw-r--r--gnu/usr.bin/perl/ext/arybase/t/lslice.t2
-rw-r--r--gnu/usr.bin/perl/ext/attributes/attributes.pm25
-rw-r--r--gnu/usr.bin/perl/ext/attributes/attributes.xs4
-rw-r--r--gnu/usr.bin/perl/ext/mro/mro.pm4
-rw-r--r--gnu/usr.bin/perl/ext/mro/mro.xs4
-rw-r--r--gnu/usr.bin/perl/ext/re/Makefile.PL9
-rw-r--r--gnu/usr.bin/perl/ext/re/re.pm43
-rw-r--r--gnu/usr.bin/perl/ext/re/re.xs12
-rw-r--r--gnu/usr.bin/perl/ext/re/re_top.h5
-rw-r--r--gnu/usr.bin/perl/ext/re/t/re_funcs_u.t4
-rw-r--r--gnu/usr.bin/perl/fakesdio.h4
-rw-r--r--gnu/usr.bin/perl/fakethr.h4
-rw-r--r--gnu/usr.bin/perl/feature.h6
-rw-r--r--gnu/usr.bin/perl/globals.c4
-rw-r--r--gnu/usr.bin/perl/haiku/Haiku/Haiku.pm2
-rw-r--r--gnu/usr.bin/perl/haiku/Haiku/Haiku.xs2
-rw-r--r--gnu/usr.bin/perl/hints/catamount.sh4
-rw-r--r--gnu/usr.bin/perl/hints/gnukfreebsd.sh3
-rw-r--r--gnu/usr.bin/perl/hints/gnuknetbsd.sh3
-rw-r--r--gnu/usr.bin/perl/hints/midnightbsd.sh20
-rw-r--r--gnu/usr.bin/perl/hints/vos.sh56
-rw-r--r--gnu/usr.bin/perl/hv_func.h560
-rw-r--r--gnu/usr.bin/perl/inline.h156
-rw-r--r--gnu/usr.bin/perl/inline_invlist.c77
-rw-r--r--gnu/usr.bin/perl/install_lib.pl2
-rw-r--r--gnu/usr.bin/perl/intrpvar.h366
-rw-r--r--gnu/usr.bin/perl/iperlsys.h4
-rw-r--r--gnu/usr.bin/perl/l1_char_class_tab.h515
-rw-r--r--gnu/usr.bin/perl/lib/AnyDBM_File.t2
-rw-r--r--gnu/usr.bin/perl/lib/CORE.pod22
-rw-r--r--gnu/usr.bin/perl/lib/Class/Struct.t153
-rw-r--r--gnu/usr.bin/perl/lib/DB.t2
-rw-r--r--gnu/usr.bin/perl/lib/DBM_Filter.pm4
-rw-r--r--gnu/usr.bin/perl/lib/DBM_Filter/t/int32.t3
-rw-r--r--gnu/usr.bin/perl/lib/ExtUtils/t/Embed.t8
-rw-r--r--gnu/usr.bin/perl/lib/File/Basename.t4
-rw-r--r--gnu/usr.bin/perl/lib/File/Copy.t34
-rw-r--r--gnu/usr.bin/perl/lib/File/Find/t/find.t54
-rw-r--r--gnu/usr.bin/perl/lib/File/Find/t/taint.t11
-rw-r--r--gnu/usr.bin/perl/lib/File/stat-7896.t28
-rw-r--r--gnu/usr.bin/perl/lib/File/stat.t232
-rw-r--r--gnu/usr.bin/perl/lib/FileHandle.t4
-rw-r--r--gnu/usr.bin/perl/lib/Internals.t18
-rw-r--r--gnu/usr.bin/perl/lib/Tie/Handle/stdhandle.t8
-rw-r--r--gnu/usr.bin/perl/lib/Tie/StdHandle.pm4
-rw-r--r--gnu/usr.bin/perl/lib/Unicode/UCD.pm405
-rw-r--r--gnu/usr.bin/perl/lib/Unicode/UCD.t69
-rw-r--r--gnu/usr.bin/perl/lib/_charnames.pm99
-rw-r--r--gnu/usr.bin/perl/lib/charnames.pm55
-rw-r--r--gnu/usr.bin/perl/lib/charnames.t183
-rw-r--r--gnu/usr.bin/perl/lib/dbm_filter_util.pl13
-rw-r--r--gnu/usr.bin/perl/lib/diagnostics.t56
-rw-r--r--gnu/usr.bin/perl/lib/dumpvar.t9
-rw-r--r--gnu/usr.bin/perl/lib/feature.pm29
-rwxr-xr-xgnu/usr.bin/perl/lib/feature/unicode_strings.t1
-rw-r--r--gnu/usr.bin/perl/lib/filetest.pm4
-rw-r--r--gnu/usr.bin/perl/lib/filetest.t1
-rw-r--r--gnu/usr.bin/perl/lib/h2xs.t21
-rw-r--r--gnu/usr.bin/perl/lib/overload.t527
-rw-r--r--gnu/usr.bin/perl/lib/overload/numbers.pm2
-rw-r--r--gnu/usr.bin/perl/lib/perl5db.t2171
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/fact14
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/load-modules6
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/source-cmd-test-no-q.perldb1
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/source-cmd-test.perldb2
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/test-PrintRet-option-146
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/test-a-statement-122
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/test-dieLevel-option-122
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/test-frame-option-126
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/test-l-statement-120
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/test-l-statement-224
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/test-m-statement-143
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/test-passing-at-underscore-to-x-etc15
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/test-r-statement27
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/test-w-statement-120
-rw-r--r--gnu/usr.bin/perl/lib/perl5db/t/test-warnLevel-option-129
-rw-r--r--gnu/usr.bin/perl/lib/sort.pm6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt10
-rw-r--r--gnu/usr.bin/perl/lib/unicore/BidiMirroring.txt21
-rw-r--r--gnu/usr.bin/perl/lib/unicore/Blocks.txt8
-rw-r--r--gnu/usr.bin/perl/lib/unicore/CJKRadicals.txt8
-rw-r--r--gnu/usr.bin/perl/lib/unicore/CaseFolding.txt8
-rw-r--r--gnu/usr.bin/perl/lib/unicore/CompositionExclusions.txt7
-rw-r--r--gnu/usr.bin/perl/lib/unicore/DAge.txt14
-rw-r--r--gnu/usr.bin/perl/lib/unicore/DCoreProperties.txt10
-rw-r--r--gnu/usr.bin/perl/lib/unicore/DNormalizationProps.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/EastAsianWidth.txt173
-rw-r--r--gnu/usr.bin/perl/lib/unicore/EmojiSources.txt11
-rw-r--r--gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/Index.txt5
-rw-r--r--gnu/usr.bin/perl/lib/unicore/IndicMatraCategory.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/IndicSyllabicCategory.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/Jamo.txt9
-rw-r--r--gnu/usr.bin/perl/lib/unicore/LineBreak.txt1875
-rw-r--r--gnu/usr.bin/perl/lib/unicore/NameAliases.txt5
-rw-r--r--gnu/usr.bin/perl/lib/unicore/NamedSequences.txt12
-rw-r--r--gnu/usr.bin/perl/lib/unicore/NamedSqProv.txt7
-rw-r--r--gnu/usr.bin/perl/lib/unicore/NamesList.txt504
-rw-r--r--gnu/usr.bin/perl/lib/unicore/NormalizationCorrections.txt8
-rw-r--r--gnu/usr.bin/perl/lib/unicore/PropList.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt25
-rw-r--r--gnu/usr.bin/perl/lib/unicore/PropertyAliases.txt8
-rw-r--r--gnu/usr.bin/perl/lib/unicore/README.perl196
-rw-r--r--gnu/usr.bin/perl/lib/unicore/ReadMe.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/ScriptExtensions.txt65
-rw-r--r--gnu/usr.bin/perl/lib/unicore/Scripts.txt17
-rw-r--r--gnu/usr.bin/perl/lib/unicore/SpecialCasing.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/StandardizedVariants.txt8
-rw-r--r--gnu/usr.bin/perl/lib/unicore/UnicodeData.txt9
-rw-r--r--gnu/usr.bin/perl/lib/unicore/auxiliary/GCBTest.txt77
-rw-r--r--gnu/usr.bin/perl/lib/unicore/auxiliary/GraphemeBreakProperty.txt12
-rw-r--r--gnu/usr.bin/perl/lib/unicore/auxiliary/SentenceBreakProperty.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/auxiliary/WordBreakProperty.txt12
-rw-r--r--gnu/usr.bin/perl/lib/unicore/extracted/DBidiClass.txt14
-rw-r--r--gnu/usr.bin/perl/lib/unicore/extracted/DBinaryProperties.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/extracted/DCombiningClass.txt12
-rw-r--r--gnu/usr.bin/perl/lib/unicore/extracted/DDecompositionType.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/extracted/DEastAsianWidth.txt24
-rw-r--r--gnu/usr.bin/perl/lib/unicore/extracted/DGeneralCategory.txt14
-rw-r--r--gnu/usr.bin/perl/lib/unicore/extracted/DJoinGroup.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/extracted/DJoinType.txt6
-rw-r--r--gnu/usr.bin/perl/lib/unicore/extracted/DLineBreak.txt155
-rw-r--r--gnu/usr.bin/perl/lib/unicore/extracted/DNumType.txt12
-rw-r--r--gnu/usr.bin/perl/lib/unicore/extracted/DNumValues.txt54
-rw-r--r--gnu/usr.bin/perl/lib/unicore/mktables1852
-rw-r--r--gnu/usr.bin/perl/lib/unicore/version2
-rw-r--r--gnu/usr.bin/perl/lib/utf8.pm8
-rw-r--r--gnu/usr.bin/perl/lib/utf8_heavy.pl4
-rw-r--r--gnu/usr.bin/perl/lib/version.pm2
-rw-r--r--gnu/usr.bin/perl/lib/version/t/01base.t14
-rw-r--r--gnu/usr.bin/perl/lib/version/t/02derived.t2
-rw-r--r--gnu/usr.bin/perl/lib/version/t/03require.t2
-rw-r--r--gnu/usr.bin/perl/lib/version/t/05sigdie.t2
-rw-r--r--gnu/usr.bin/perl/lib/version/t/06noop.t2
-rw-r--r--gnu/usr.bin/perl/lib/version/t/07locale.t4
-rw-r--r--gnu/usr.bin/perl/lib/version/t/coretests.pm12
-rw-r--r--gnu/usr.bin/perl/lib/warnings.pm244
-rw-r--r--gnu/usr.bin/perl/locale.c4
-rw-r--r--gnu/usr.bin/perl/madly.c4
-rw-r--r--gnu/usr.bin/perl/make_ext.pl66
-rw-r--r--gnu/usr.bin/perl/make_patchnum.pl2
-rw-r--r--gnu/usr.bin/perl/mathoms.c114
-rw-r--r--gnu/usr.bin/perl/metaconfig.h4
-rw-r--r--gnu/usr.bin/perl/mg_names.c4
-rw-r--r--gnu/usr.bin/perl/mg_raw.h14
-rw-r--r--gnu/usr.bin/perl/mg_vtable.h32
-rw-r--r--gnu/usr.bin/perl/mro.c34
-rw-r--r--gnu/usr.bin/perl/myconfig.SH2
-rw-r--r--gnu/usr.bin/perl/mydtrace.h34
-rw-r--r--gnu/usr.bin/perl/numeric.c41
-rw-r--r--gnu/usr.bin/perl/op_reg_common.h31
-rw-r--r--gnu/usr.bin/perl/opnames.h468
-rw-r--r--gnu/usr.bin/perl/os2/OS2/OS2-ExtAttr/ExtAttr.pm4
-rw-r--r--gnu/usr.bin/perl/os2/OS2/OS2-Process/Process.pm4
-rw-r--r--gnu/usr.bin/perl/os2/OS2/OS2-REXX/DLL/DLL.pm4
-rw-r--r--gnu/usr.bin/perl/os2/perlrexx.c6
-rw-r--r--gnu/usr.bin/perl/overload.c6
-rw-r--r--gnu/usr.bin/perl/overload.h1
-rw-r--r--gnu/usr.bin/perl/pad.c607
-rw-r--r--gnu/usr.bin/perl/pad.h112
-rw-r--r--gnu/usr.bin/perl/parser.h35
-rw-r--r--gnu/usr.bin/perl/perlapi.h4
-rw-r--r--gnu/usr.bin/perl/perldtrace.d7
-rw-r--r--gnu/usr.bin/perl/perliol.h4
-rw-r--r--gnu/usr.bin/perl/perlvars.h3
-rw-r--r--gnu/usr.bin/perl/perly.act1377
-rw-r--r--gnu/usr.bin/perl/perly.tab1837
-rw-r--r--gnu/usr.bin/perl/plan9/config_sh.sample44
-rw-r--r--gnu/usr.bin/perl/pod/perl5005delta.pod2
-rw-r--r--gnu/usr.bin/perl/pod/perl5120delta.pod2
-rw-r--r--gnu/usr.bin/perl/pod/perl5125delta.pod241
-rw-r--r--gnu/usr.bin/perl/pod/perl5140delta.pod2
-rw-r--r--gnu/usr.bin/perl/pod/perl5144delta.pod240
-rw-r--r--gnu/usr.bin/perl/pod/perl5160delta.pod2
-rw-r--r--gnu/usr.bin/perl/pod/perl5163delta.pod133
-rw-r--r--gnu/usr.bin/perl/pod/perl5180delta.pod3786
-rw-r--r--gnu/usr.bin/perl/pod/perl5181delta.pod217
-rw-r--r--gnu/usr.bin/perl/pod/perlcheat.pod71
-rw-r--r--gnu/usr.bin/perl/pod/perlclib.pod4
-rw-r--r--gnu/usr.bin/perl/pod/perlcommunity.pod18
-rw-r--r--gnu/usr.bin/perl/pod/perldebguts.pod349
-rw-r--r--gnu/usr.bin/perl/pod/perldtrace.pod65
-rw-r--r--gnu/usr.bin/perl/pod/perlebcdic.pod914
-rw-r--r--gnu/usr.bin/perl/pod/perlexperiment.pod207
-rw-r--r--gnu/usr.bin/perl/pod/perlgit.pod82
-rw-r--r--gnu/usr.bin/perl/pod/perlgpl.pod100
-rw-r--r--gnu/usr.bin/perl/pod/perlhack.pod380
-rw-r--r--gnu/usr.bin/perl/pod/perlhacktips.pod116
-rw-r--r--gnu/usr.bin/perl/pod/perlhacktut.pod12
-rw-r--r--gnu/usr.bin/perl/pod/perlinterp.pod2
-rw-r--r--gnu/usr.bin/perl/pod/perlintro.pod406
-rw-r--r--gnu/usr.bin/perl/pod/perliol.pod2
-rw-r--r--gnu/usr.bin/perl/pod/perllexwarn.pod207
-rw-r--r--gnu/usr.bin/perl/pod/perlootut.pod49
-rw-r--r--gnu/usr.bin/perl/pod/perlpacktut.pod6
-rw-r--r--gnu/usr.bin/perl/pod/perlpodstyle.pod97
-rw-r--r--gnu/usr.bin/perl/pod/perlpolicy.pod25
-rw-r--r--gnu/usr.bin/perl/pod/perlport.pod113
-rw-r--r--gnu/usr.bin/perl/pod/perlpragma.pod26
-rw-r--r--gnu/usr.bin/perl/pod/perlreapi.pod430
-rw-r--r--gnu/usr.bin/perl/pod/perlrebackslash.pod25
-rw-r--r--gnu/usr.bin/perl/pod/perlrecharclass.pod327
-rw-r--r--gnu/usr.bin/perl/pod/perlreftut.pod11
-rw-r--r--gnu/usr.bin/perl/pod/perlreguts.pod128
-rw-r--r--gnu/usr.bin/perl/pod/perlreref.pod2
-rw-r--r--gnu/usr.bin/perl/pod/perlretut.pod34
-rw-r--r--gnu/usr.bin/perl/pod/perlsource.pod7
-rw-r--r--gnu/usr.bin/perl/pod/perlunicode.pod155
-rw-r--r--gnu/usr.bin/perl/pod/perlunifaq.pod8
-rw-r--r--gnu/usr.bin/perl/pod/perluniintro.pod16
-rw-r--r--gnu/usr.bin/perl/pod/perlutil.pod2
-rw-r--r--gnu/usr.bin/perl/pp_pack.c95
-rw-r--r--gnu/usr.bin/perl/pp_proto.h5
-rw-r--r--gnu/usr.bin/perl/pp_sort.c60
-rw-r--r--gnu/usr.bin/perl/reentr.c2
-rw-r--r--gnu/usr.bin/perl/regcharclass.h883
-rw-r--r--gnu/usr.bin/perl/regcomp.sym129
-rw-r--r--gnu/usr.bin/perl/regen/embed.pl63
-rw-r--r--gnu/usr.bin/perl/regen/feature.pl55
-rw-r--r--gnu/usr.bin/perl/regen/mg_vtable.pl29
-rw-r--r--gnu/usr.bin/perl/regen/mk_PL_charclass.pl218
-rw-r--r--gnu/usr.bin/perl/regen/mk_invlists.pl119
-rw-r--r--gnu/usr.bin/perl/regen/opcode.pl7
-rw-r--r--gnu/usr.bin/perl/regen/opcodes17
-rw-r--r--gnu/usr.bin/perl/regen/overload.pl2
-rw-r--r--gnu/usr.bin/perl/regen/reentr.pl2
-rw-r--r--gnu/usr.bin/perl/regen/regcharclass.pl1096
-rw-r--r--gnu/usr.bin/perl/regen/regcharclass_multi_char_folds.pl110
-rw-r--r--gnu/usr.bin/perl/regen/regcomp.pl93
-rw-r--r--gnu/usr.bin/perl/regen/unicode_constants.pl160
-rw-r--r--gnu/usr.bin/perl/regen/warnings.pl39
-rwxr-xr-xgnu/usr.bin/perl/regen_perly.pl55
-rw-r--r--gnu/usr.bin/perl/regnodes.h481
-rwxr-xr-xgnu/usr.bin/perl/runtests.SH2
-rw-r--r--gnu/usr.bin/perl/symbian/config.sh4
-rw-r--r--gnu/usr.bin/perl/t/bigmem/read.t24
-rw-r--r--gnu/usr.bin/perl/t/bigmem/vec.t34
-rw-r--r--gnu/usr.bin/perl/t/comp/bproto.t4
-rw-r--r--gnu/usr.bin/perl/t/comp/fold.t33
-rwxr-xr-xgnu/usr.bin/perl/t/comp/form_scope.t70
-rw-r--r--gnu/usr.bin/perl/t/comp/hints.t1
-rw-r--r--gnu/usr.bin/perl/t/comp/parser.t140
-rw-r--r--gnu/usr.bin/perl/t/comp/uproto.t8
-rw-r--r--gnu/usr.bin/perl/t/io/crlf.t14
-rw-r--r--gnu/usr.bin/perl/t/io/eintr.t8
-rwxr-xr-xgnu/usr.bin/perl/t/io/errno.t2
-rw-r--r--gnu/usr.bin/perl/t/io/shm.t12
-rw-r--r--gnu/usr.bin/perl/t/io/utf8.t40
-rw-r--r--gnu/usr.bin/perl/t/lib/1_compile.t35
-rw-r--r--gnu/usr.bin/perl/t/lib/Count.pm8
-rw-r--r--gnu/usr.bin/perl/t/lib/Devel/nodb.pm3
-rw-r--r--gnu/usr.bin/perl/t/lib/charnames/alias144
-rw-r--r--gnu/usr.bin/perl/t/lib/common.pl2
-rw-r--r--gnu/usr.bin/perl/t/lib/commonsense.t25
-rw-r--r--gnu/usr.bin/perl/t/lib/croak/op13
-rw-r--r--gnu/usr.bin/perl/t/lib/croak/pp_ctl8
-rw-r--r--gnu/usr.bin/perl/t/lib/croak/pp_hot60
-rw-r--r--gnu/usr.bin/perl/t/lib/croak/toke130
-rw-r--r--gnu/usr.bin/perl/t/lib/feature/switch30
-rw-r--r--gnu/usr.bin/perl/t/lib/strict/refs25
-rw-r--r--gnu/usr.bin/perl/t/lib/strict/subs15
-rw-r--r--gnu/usr.bin/perl/t/lib/strict/vars8
-rw-r--r--gnu/usr.bin/perl/t/lib/test_require.pm6
-rw-r--r--gnu/usr.bin/perl/t/lib/universal.t2
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/2use19
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/9uninit78
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/doio6
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/gv50
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/op207
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/pad24
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/perl6
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/perly236
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/pp6
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/pp_hot27
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/regcomp265
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/toke101
-rw-r--r--gnu/usr.bin/perl/t/lib/warnings/utf8465
-rw-r--r--gnu/usr.bin/perl/t/mro/basic.t58
-rw-r--r--gnu/usr.bin/perl/t/mro/isa_aliases.t10
-rw-r--r--gnu/usr.bin/perl/t/mro/method_caching.t46
-rwxr-xr-xgnu/usr.bin/perl/t/mro/package_aliases.t12
-rw-r--r--gnu/usr.bin/perl/t/op/anonsub.t3
-rw-r--r--gnu/usr.bin/perl/t/op/args.t33
-rw-r--r--gnu/usr.bin/perl/t/op/attrs.t10
-rw-r--r--gnu/usr.bin/perl/t/op/blocks.t23
-rw-r--r--gnu/usr.bin/perl/t/op/caller.t55
-rw-r--r--gnu/usr.bin/perl/t/op/chars.t76
-rwxr-xr-xgnu/usr.bin/perl/t/op/chr.t19
-rw-r--r--gnu/usr.bin/perl/t/op/closure_test.pl10
-rw-r--r--gnu/usr.bin/perl/t/op/concat2.t38
-rw-r--r--gnu/usr.bin/perl/t/op/coreamp.t151
-rw-r--r--gnu/usr.bin/perl/t/op/coresubs.t32
-rw-r--r--gnu/usr.bin/perl/t/op/cproto.t25
-rw-r--r--gnu/usr.bin/perl/t/op/current_sub.t32
-rw-r--r--gnu/usr.bin/perl/t/op/defined.t20
-rw-r--r--gnu/usr.bin/perl/t/op/defins.t77
-rw-r--r--gnu/usr.bin/perl/t/op/die.t85
-rw-r--r--gnu/usr.bin/perl/t/op/die_except.t26
-rw-r--r--gnu/usr.bin/perl/t/op/die_exit.t2
-rw-r--r--gnu/usr.bin/perl/t/op/die_keeperr.t35
-rw-r--r--gnu/usr.bin/perl/t/op/die_unwind.t18
-rw-r--r--gnu/usr.bin/perl/t/op/dor.t13
-rwxr-xr-xgnu/usr.bin/perl/t/op/each_array.t142
-rw-r--r--gnu/usr.bin/perl/t/op/exists_sub.t79
-rw-r--r--gnu/usr.bin/perl/t/op/fh.t16
-rwxr-xr-xgnu/usr.bin/perl/t/op/filehandle.t11
-rw-r--r--gnu/usr.bin/perl/t/op/filetest.t154
-rw-r--r--gnu/usr.bin/perl/t/op/for.t564
-rw-r--r--gnu/usr.bin/perl/t/op/getpid.t11
-rwxr-xr-xgnu/usr.bin/perl/t/op/getppid.t59
-rw-r--r--gnu/usr.bin/perl/t/op/grent.t10
-rw-r--r--gnu/usr.bin/perl/t/op/hashassign.t220
-rw-r--r--gnu/usr.bin/perl/t/op/heredoc.t85
-rw-r--r--gnu/usr.bin/perl/t/op/inccode.t45
-rw-r--r--gnu/usr.bin/perl/t/op/incfilter.t7
-rw-r--r--gnu/usr.bin/perl/t/op/length.t26
-rwxr-xr-xgnu/usr.bin/perl/t/op/lex.t30
-rw-r--r--gnu/usr.bin/perl/t/op/lex_assign.t110
-rw-r--r--gnu/usr.bin/perl/t/op/lexsub.t713
-rw-r--r--gnu/usr.bin/perl/t/op/loopctl.t100
-rw-r--r--gnu/usr.bin/perl/t/op/lop.t31
-rw-r--r--gnu/usr.bin/perl/t/op/mydef.t2
-rwxr-xr-xgnu/usr.bin/perl/t/op/negate.t84
-rwxr-xr-xgnu/usr.bin/perl/t/op/not.t63
-rw-r--r--gnu/usr.bin/perl/t/op/or.t10
-rw-r--r--gnu/usr.bin/perl/t/op/overload_integer.t42
-rw-r--r--gnu/usr.bin/perl/t/op/override.t6
-rw-r--r--gnu/usr.bin/perl/t/op/pos.t32
-rw-r--r--gnu/usr.bin/perl/t/op/pow.t10
-rw-r--r--gnu/usr.bin/perl/t/op/pwent.t7
-rw-r--r--gnu/usr.bin/perl/t/op/qr.t58
-rw-r--r--gnu/usr.bin/perl/t/op/require_errors.t96
-rw-r--r--gnu/usr.bin/perl/t/op/reset.t62
-rw-r--r--gnu/usr.bin/perl/t/op/reverse.t53
-rw-r--r--gnu/usr.bin/perl/t/op/sigdispatch.t16
-rw-r--r--gnu/usr.bin/perl/t/op/sigsystem.t15
-rw-r--r--gnu/usr.bin/perl/t/op/smartkve.t87
-rw-r--r--gnu/usr.bin/perl/t/op/smartmatch.t1
-rw-r--r--gnu/usr.bin/perl/t/op/splice.t84
-rw-r--r--gnu/usr.bin/perl/t/op/split_unicode.t16
-rw-r--r--gnu/usr.bin/perl/t/op/srand.t11
-rw-r--r--gnu/usr.bin/perl/t/op/stash.t19
-rw-r--r--gnu/usr.bin/perl/t/op/state.t15
-rw-r--r--gnu/usr.bin/perl/t/op/sub.t23
-rw-r--r--gnu/usr.bin/perl/t/op/sub_lval.t7
-rw-r--r--gnu/usr.bin/perl/t/op/svleak.pl1
-rw-r--r--gnu/usr.bin/perl/t/op/svleak.t292
-rw-r--r--gnu/usr.bin/perl/t/op/switch.t15
-rw-r--r--gnu/usr.bin/perl/t/op/tie_fetch_count.t38
-rw-r--r--gnu/usr.bin/perl/t/op/tr.t11
-rwxr-xr-xgnu/usr.bin/perl/t/op/utf8cache.t130
-rwxr-xr-xgnu/usr.bin/perl/t/op/utf8magic.t15
-rw-r--r--gnu/usr.bin/perl/t/op/ver.t7
-rw-r--r--gnu/usr.bin/perl/t/op/warn.t46
-rw-r--r--gnu/usr.bin/perl/t/op/while.t215
-rw-r--r--gnu/usr.bin/perl/t/opbasic/arith.t458
-rw-r--r--gnu/usr.bin/perl/t/opbasic/cmp.t322
-rw-r--r--gnu/usr.bin/perl/t/opbasic/concat.t165
-rw-r--r--gnu/usr.bin/perl/t/opbasic/magic_phase.t49
-rw-r--r--gnu/usr.bin/perl/t/opbasic/qq.t76
-rwxr-xr-xgnu/usr.bin/perl/t/porting/args_assert.t2
-rw-r--r--gnu/usr.bin/perl/t/porting/authors.t2
-rwxr-xr-xgnu/usr.bin/perl/t/porting/checkcase.t49
-rw-r--r--gnu/usr.bin/perl/t/porting/cmp_version.t3
-rw-r--r--gnu/usr.bin/perl/t/porting/customized.dat25
-rw-r--r--gnu/usr.bin/perl/t/porting/customized.t14
-rwxr-xr-xgnu/usr.bin/perl/t/porting/diag.t275
-rw-r--r--gnu/usr.bin/perl/t/porting/exec-bit.t16
-rw-r--r--gnu/usr.bin/perl/t/porting/extrefs.t128
-rw-r--r--gnu/usr.bin/perl/t/porting/filenames.t68
-rw-r--r--gnu/usr.bin/perl/t/porting/globvar.t15
-rw-r--r--gnu/usr.bin/perl/t/porting/known_pod_issues.dat82
-rwxr-xr-xgnu/usr.bin/perl/t/porting/maintainers.t4
-rwxr-xr-xgnu/usr.bin/perl/t/porting/manifest.t2
-rw-r--r--gnu/usr.bin/perl/t/porting/pending-author.t6
-rwxr-xr-xgnu/usr.bin/perl/t/porting/podcheck.t143
-rw-r--r--gnu/usr.bin/perl/t/porting/regen.t10
-rwxr-xr-xgnu/usr.bin/perl/t/porting/test_bootstrap.t17
-rw-r--r--gnu/usr.bin/perl/t/porting/utils.t1
-rw-r--r--gnu/usr.bin/perl/t/re/charset.t18
-rw-r--r--gnu/usr.bin/perl/t/re/fold_grind.t141
-rw-r--r--gnu/usr.bin/perl/t/re/no_utf8_pm.t11
-rw-r--r--gnu/usr.bin/perl/t/re/overload.t230
-rwxr-xr-xgnu/usr.bin/perl/t/re/pat_advanced.t178
-rwxr-xr-xgnu/usr.bin/perl/t/re/pat_psycho.t65
-rwxr-xr-xgnu/usr.bin/perl/t/re/pat_re_eval.t869
-rwxr-xr-xgnu/usr.bin/perl/t/re/pat_rt_report.t56
-rw-r--r--gnu/usr.bin/perl/t/re/pos.t68
-rwxr-xr-xgnu/usr.bin/perl/t/re/qr.t1
-rw-r--r--gnu/usr.bin/perl/t/re/re_tests267
-rw-r--r--gnu/usr.bin/perl/t/re/recompile.t195
-rw-r--r--gnu/usr.bin/perl/t/re/reg_eval_scope.t285
-rwxr-xr-xgnu/usr.bin/perl/t/re/reg_fold.t57
-rwxr-xr-xgnu/usr.bin/perl/t/re/reg_mesg.t322
-rwxr-xr-xgnu/usr.bin/perl/t/re/reg_pmod.t78
-rw-r--r--gnu/usr.bin/perl/t/re/regex_sets.t90
-rw-r--r--gnu/usr.bin/perl/t/re/regex_sets_compat.t15
-rwxr-xr-xgnu/usr.bin/perl/t/re/regexp.t209
-rwxr-xr-xgnu/usr.bin/perl/t/re/regexp_unicode_prop.t24
-rwxr-xr-xgnu/usr.bin/perl/t/re/rxcode.t9
-rwxr-xr-xgnu/usr.bin/perl/t/re/subst.t93
-rw-r--r--gnu/usr.bin/perl/t/run/dtrace.pl1
-rw-r--r--gnu/usr.bin/perl/t/run/dtrace.t45
-rw-r--r--gnu/usr.bin/perl/t/run/flib/broken.pm8
-rw-r--r--gnu/usr.bin/perl/t/run/fresh_perl.t61
-rw-r--r--gnu/usr.bin/perl/t/run/locale.t19
-rw-r--r--gnu/usr.bin/perl/t/run/mad.t46
-rw-r--r--gnu/usr.bin/perl/t/run/noswitch.t14
-rw-r--r--gnu/usr.bin/perl/t/run/runenv.t92
-rwxr-xr-xgnu/usr.bin/perl/t/run/script.t9
-rw-r--r--gnu/usr.bin/perl/t/run/switch0.t12
-rw-r--r--gnu/usr.bin/perl/t/run/switchF.t11
-rwxr-xr-xgnu/usr.bin/perl/t/run/switchF1.t16
-rw-r--r--gnu/usr.bin/perl/t/run/switchI.t5
-rw-r--r--gnu/usr.bin/perl/t/run/switchM.t19
-rw-r--r--gnu/usr.bin/perl/t/run/switcha.t9
-rw-r--r--gnu/usr.bin/perl/t/run/switchd.t61
-rw-r--r--gnu/usr.bin/perl/t/run/switches.t47
-rw-r--r--gnu/usr.bin/perl/t/run/switchn.t10
-rw-r--r--gnu/usr.bin/perl/t/run/switchp.t9
-rw-r--r--gnu/usr.bin/perl/t/run/switchx.aux4
-rw-r--r--gnu/usr.bin/perl/t/run/switchx2.aux4
-rw-r--r--gnu/usr.bin/perl/t/test.pl138
-rw-r--r--gnu/usr.bin/perl/t/test_pl/_num_to_alpha.t44
-rw-r--r--gnu/usr.bin/perl/t/test_pl/tempfile.t60
-rw-r--r--gnu/usr.bin/perl/t/uni/case.pl131
-rw-r--r--gnu/usr.bin/perl/t/uni/chr.t12
-rw-r--r--gnu/usr.bin/perl/t/uni/greek.t1
-rw-r--r--gnu/usr.bin/perl/t/uni/labels.t12
-rw-r--r--gnu/usr.bin/perl/t/uni/latin2.t1
-rw-r--r--gnu/usr.bin/perl/t/uni/lower.t2
-rw-r--r--gnu/usr.bin/perl/t/uni/parser.t9
-rw-r--r--gnu/usr.bin/perl/t/uni/readline.t2
-rw-r--r--gnu/usr.bin/perl/t/uni/stash.t10
-rw-r--r--gnu/usr.bin/perl/t/uni/title.t2
-rw-r--r--gnu/usr.bin/perl/t/uni/universal.t1
-rw-r--r--gnu/usr.bin/perl/t/uni/upper.t2
-rw-r--r--gnu/usr.bin/perl/t/uni/variables.t229
-rw-r--r--gnu/usr.bin/perl/t/win32/fs.t28
-rw-r--r--gnu/usr.bin/perl/t/win32/runenv.t4
-rw-r--r--gnu/usr.bin/perl/t/x2p/s2p.t15
-rw-r--r--gnu/usr.bin/perl/thread.h9
-rw-r--r--gnu/usr.bin/perl/time64.c55
-rw-r--r--gnu/usr.bin/perl/unicode_constants.h44
-rw-r--r--gnu/usr.bin/perl/utf8.c904
-rw-r--r--gnu/usr.bin/perl/utf8.h474
-rw-r--r--gnu/usr.bin/perl/utfebcdic.h66
-rw-r--r--gnu/usr.bin/perl/vms/descrip_mms.template16
-rw-r--r--gnu/usr.bin/perl/warnings.h116
-rw-r--r--gnu/usr.bin/perl/win32/Makefile.ce106
-rw-r--r--gnu/usr.bin/perl/win32/config.ce10
-rw-r--r--gnu/usr.bin/perl/win32/config.gc21
-rw-r--r--gnu/usr.bin/perl/win32/config_H.ce36
-rw-r--r--gnu/usr.bin/perl/win32/fcrypt.c18
-rw-r--r--gnu/usr.bin/perl/win32/perlhost.h40
-rw-r--r--gnu/usr.bin/perl/win32/vmem.h82
-rw-r--r--gnu/usr.bin/perl/win32/win32iop-o.h6
-rw-r--r--gnu/usr.bin/perl/win32/wince.c62
1604 files changed, 154829 insertions, 94047 deletions
diff --git a/gnu/usr.bin/perl/AUTHORS b/gnu/usr.bin/perl/AUTHORS
index 445ed7db942..9cf6807f81e 100644
--- a/gnu/usr.bin/perl/AUTHORS
+++ b/gnu/usr.bin/perl/AUTHORS
@@ -3,9 +3,9 @@
# (hopefully) current and preferred email addresses from the commits.
# These people have either submitted patches or suggestions, or their bug
# reports or comments have inspired the appropriate patches. Corrections,
-# additions, deletions welcome; send them to perl5-porters@perl.org,
-# preferably as the output of diff(1), diff -u or diff -c between the
-# original and a corrected version of this file.
+# additions, deletions welcome; send them to perlbug@perl.org, preferably
+# as the output of diff(1), diff -u or diff -c between the original and a
+# corrected version of this file.
#
# The use of this database for anything else than Perl development
# is strictly forbidden. (Passive distribution with the Perl source
@@ -18,6 +18,8 @@ A. Sinan Unur <nanis@cpan.org>
Aaron Crane <arc@cpan.org>
Aaron B. Dossett <aaron@iglou.com>
Aaron J. Mackey <ajm6q@virginia.edu>
+Aaron Trevena <aaaron.trevena@gmail.com>
+Augustina Blair <auggy@cpan.org>
Abe Timmerman <abe@ztreet.demon.nl>
Abhijit Menon-Sen <ams@toroid.org>
Abigail <abigail@abigail.be>
@@ -84,6 +86,7 @@ Andrew M. Langmead <aml@world.std.com>
Andrew Pimlott <pimlott@idiomtech.com>
Andrew Rodland <arodland@cpan.org>
Andrew Savige <ajsavige@yahoo.com.au>
+Andrew Tam <andrewtam000@gmail.com>
Andrew Vignaux <ajv@nz.sangacorp.com>
Andrew Wilcox <awilcox@maine.com>
Andrey Sapozhnikov <sapa@icb.chel.su>
@@ -94,6 +97,7 @@ Andy Lester <andy@petdance.com>
Anno Siegel <anno4000@lublin.zrz.tu-berlin.de>
Anthony David <adavid@netinfo.com.au>
Anton Berezin <tobez@tobez.org>
+Anton Nikishaev <me@lelf.lu>
Anton Tagunov <tagunov@motor.ru>
Archer Sully <archer@meer.net>
Aristotle Pagaltzis <pagaltzis@gmx.de>
@@ -103,6 +107,7 @@ Arne Ahrend <aahrend@web.de>
Arnold D. Robbins <arnold@gnu.ai.mit.edu>
Art Green <Art_Green@mercmarine.com>
Art Haas <ahaas@airmail.net>
+Arthur Axel 'fREW' Schmidt <frioux@gmail.com>
Artiom Morozov <artiom@phreaker.net>
Artur Bergman <artur@contiller.se>
Arvan <apritchard@zeus.com>
@@ -136,6 +141,7 @@ Bo Borgerson <gigabo@gmail.com>
Bo Johansson <bo.johansso@lsn.se>
Bo Lindbergh <blgl@stacken.kth.se>
Bob Dalgleish <Robert.Dalgleish@sk.sympatico.ca>
+Bob Ernst <bobernst@cpan.org>
Bob Wilkinson <bob@fourtheye.org>
Boris Ratner <ratner2@gmail.com>
Boris Zentner <bzm@2bz.de>
@@ -153,6 +159,7 @@ Breno G. de Oliveira <garu@cpan.org>
Brent Dax <brentdax@cpan.org>
Brooks D Boyd
Brian Callaghan <callagh@itginc.com>
+Brian Carlson <brian.carlson@cpanel.net>
Brian Clarke <clarke@appliedmeta.com>
brian d foy <brian.d.foy@gmail.com>
Brian Fraser <fraserbn@gmail.com>
@@ -188,6 +195,7 @@ Charles F. Randall <crandall@free.click-n-call.com>
Charles Lane <lane@DUPHY4.Physics.Drexel.Edu>
Charles Randall <cfriv@yahoo.com>
Charles Wilson <cwilson@ece.gatech.edu>
+Charlie Gonzalez <itcharlie@gmail.com>
Chas. Owens <chas.owens@gmail.com>
Chaskiel M Grundman
Chia-liang Kao <clkao@clkao.org>
@@ -255,6 +263,7 @@ Daniel Kahn Gillmor <dkg@fifthhorseman.net>
Daniel Lieberman <daniel@bitpusher.com>
Daniel Muiño <dmuino@afip.gov.ar>
Daniel P. Berrange <dan@berrange.com>
+Daniel Perrett <perrettdl@googlemail.com>
Daniel S. Lewart <lewart@uiuc.edu>
Daniel Yacob <perl@geez.org>
Danny R. Faught <faught@mailhost.rsn.hp.com>
@@ -333,6 +342,7 @@ Drago Goricanec <drago@raptor.otsd.ts.fujitsu.co.jp>
Drew Stephens <drewgstephens@gmail.com>
Duke Leto <jonathan@leto.net>
Duncan Findlay <duncf@debian.org>
+E. Choroba <choroba@weed.(none)>
Ed Mooring <mooring@Lynx.COM>
Ed Santiago <esm@pobox.com>
Eddy Tan <eddy.net@gmail.com>
@@ -356,13 +366,16 @@ Erich Rickheit
Eryq <eryq@zeegee.com>
Etienne Grossman <etienne@isr.isr.ist.utl.pt>
Eugene Alterman <Eugene.Alterman@bremer-inc.com>
+Evan Miller <eam@frap.net>
Fabien Tassin <tassin@eerie.fr>
Father Chrysostomos <sprout@cpan.org>
+Felipe Gasper <felipe@felipegasper.com>
Felix Gallo <fgallo@etoys.com>
Fergal Daly <fergal@esatclear.ie>
Fingle Nark <finglenark@gmail.com>
Florent Guillaume
Florian Ragwitz <rafl@debian.org>
+François Perrad <francois.perrad@gadz.org>
Frank Crawford
Frank Ridderbusch <Frank.Ridderbusch@pdb.siemens.de>
Frank Tobin <ftobin@uiuc.edu>
@@ -399,6 +412,7 @@ Gordon J. Miller <gjm@cray.com>
Goro Fuji <gfuji@cpan.org>
Grace Lee <grace@hal.com>
Graham Barr <gbarr@pobox.com>
+Graham Knop <haarg@haarg.org>
Graham TerMarsch <graham@howlingfrog.com>
Grant McLean <grantm@cpan.org>
Greg Bacon <gbacon@itsc.uah.edu>
@@ -435,6 +449,7 @@ Harri Pasanen <harri.pasanen@trema.com>
Harry Edmon <harry@atmos.washington.edu>
Helmut Jarausch <jarausch@numa1.igpm.rwth-aachen.de>
Henrik Tougaard <ht.000@foa.dk>
+Herbert Breunung <lichtkind@cpan.org>
Hernan Perez Masci <hmasci@uolsinectis.com.ar>
Hershel Walters <walters@smd4d.wes.army.mil>
Hojung Youn <amoc.yn@gmail.com>
@@ -452,6 +467,7 @@ Ian Maloney <ian.malonet@ubs.com>
Ian Phillipps <Ian.Phillipps@iname.com>
Ignasi Roca Carrió <ignasi.roca@fujitsu-siemens.com>
Igor Sutton <izut@cpan.org>
+Igor Zaytsev <igor.zaytsev@gmail.com>
Ilmari Karonen <iltzu@sci.fi>
Ilya Martynov <ilya@martynov.org>
Ilya N. Golubev <gin@mo.msk.ru>
@@ -487,6 +503,7 @@ Jan-Pieter Cornet <johnpc@xs4all.nl>
Jared Rhine <jared@organic.com>
Jari Aalto <jari.aalto@poboxes.com>
Jarkko Hietaniemi <jhi@iki.fi>
+Jasmine Ahuja <jasmine.ahuja11@gmail.com>
Jason A. Smith <smithj4@rpi.edu>
Jason E. Stewart <jason@openinformatics.com>
Jason Hord <pravus@cpan.org>
@@ -515,6 +532,7 @@ Jeremy Madea <jmadea@inktomi.com>
Jerome Abela <abela@hsc.fr>
Jerrad Pierce <belg4mit@MIT.EDU>
Jerry D. Hedden <jdhedden@cpan.org>
+Jess Robinson <castaway@desert-island.me.uk>
Jesse Glick <jesse@sig.bsh.com>
Jesse Luehrs <doy@tozt.net>
Jesse Vincent <jesse@fsck.com>
@@ -530,6 +548,7 @@ Jim Richardson
Jim Schneider <jschneid@netilla.com>
Jirka Hruška <jirka@fud.cz>
Joachim Huober
+Joaquin Ferrero <explorer@joaquinferrero.com>
Jochen Wiedmann <joe@ispsoft.de>
Jody Belka <dev-perl@pimb.org>
Joe Buehler <jbuehler@hekimian.com>
@@ -627,6 +646,7 @@ Ken Williams <ken@mathforum.org>
Kenichi Ishigaki <ishigaki@cpan.org>
Kenneth Albanowski <kjahds@kjahds.com>
Kenneth Duda <kjd@cisco.com>
+Kent Fredric <kentfredric@gmail.com>
Keong Lim <Keong.Lim@sr.com.au>
Kevin Brintnall <kbrint@rufus.net>
Kevin Chase <kevincha99@hotmail.com>
@@ -668,6 +688,7 @@ Lionel Cons <lionel.cons@cern.ch>
Louis Strous <louis.strous@gmail.com>
Luc St-Louis <luc.st-louis@ca.transport.bombardier.com>
Luca Fini
+Lucas Holt <luke@foolishgames.com>
Lukas Mai <l.mai@web.de>
Luke Closs <lukec@cpan.org>
Luke Ross <lukeross@gmail.com>
@@ -684,6 +705,7 @@ Marc Lehmann <pcg@goof.com>
Marc Paquette <Marc.Paquette@Softimage.COM>
Marcel Grünauer <marcel@codewerk.com>
Marcus Holland-Moritz <mhx-perl@gmx.net>
+Markus Jansen <Markus.Jansen@ericsson.com>
Marek Rouchal <marek.rouchal@infineon.com>
Mark A Biggar <mab@wdl.loral.com>
Mark A. Hershberger <mah@everybody.org>
@@ -792,6 +814,7 @@ Milosz Tanski <mtanski@gridapp.com>
Milton L. Hankins <mlh@swl.msd.ray.com>
Moritz Lenz <moritz@casella.verplant.org>
Moshe Kaminsky <kaminsky@math.huji.ac.il>
+Mottaqui Karim taqqui.karim@gmail.com
Mr. Nobody <mrnobo1024@yahoo.com>
Murray Nesbitt <murray@nesbitt.ca>
Nathan Kurz <nate@valleytel.net>
@@ -824,6 +847,7 @@ Nuno Carvalho <mestre.smash@gmail.com>
Offer Kaye <offer.kaye@gmail.com>
Olaf Flebbe <o.flebbe@science-computing.de>
Olaf Titz <olaf@bigred.inka.de>
+Oleg Nesterov <oleg@redhat.com>
Olivier Blin <blino@mandriva.com>
Olli Savia
Ollivier Robert <roberto@keltia.freenix.fr>
@@ -837,6 +861,7 @@ Patrick Donelan <pat@patspam.com>
Patrick Dugnolle <patrick.dugnolle@bnpparibas.com>
Patrick Hayes <Patrick.Hayes.CAP_SESA@renault.fr>
Patrick O'Brien <pdo@cs.umd.edu>
+Patrik Hägglund <patrik.h.hagglund@ericsson.com>
Pau Amma <pauamma@gundo.com>
Paul A Sand <pas@unh.edu>
Paul Boven <p.boven@sara.nl>
@@ -915,7 +940,9 @@ Raymund Will <ray@caldera.de>
Redvers Davies <red@criticalintegration.com>
Reini Urban <rurban@x-ray.at>
Renee Baecker <module@renee-baecker.de>
+Reuben Thomas <rrt@sc3d.org>
Rex Dieter <rdieter@math.unl.edu>
+Rhesa Rozendaal <perl@rhesa.com>
Ricardo Signes <rjbs@cpan.org>
Rich Morin <rdm@cfcl.com>
Rich Rauenzahn <rrauenza@hp.com>
@@ -971,6 +998,7 @@ Sam Tregar <sam@tregar.com>
Sam Vilain <sam@vilain.net>
Samuel Thibault <sthibault@debian.org>
Samuli Kärkkäinen <skarkkai@woods.iki.fi>
+Sawyer X <xsawyerx@cpan.org>
Schuyler Erle <schuyler@oreilly.com>
Scott A Crosby <scrosby@cs.rice.edu>
Scott Bronson <bronson@rinspin.com>
@@ -986,18 +1014,19 @@ Sean M. Burke <sburke@cpan.org>
Sean Robinson <robinson_s@sc.maricopa.edu>
Sean Sheedy <seans@ncube.com>
Sebastian Wittmeier <Sebastian.Wittmeier@ginko.de>
-Sébastien Aperghis-Tramoni <sebastien@aperghis.net>
+Sébastien Aperghis-Tramoni <saper@cpan.org>
Sebastien Barre <Sebastien.Barre@utc.fr>
Sebastian Schmidt <yath@yath.de>
Sebastian Steinlechner <steinlechner@gmx.net>
Sérgio Durigan Júnior <sergiodj@linux.vnet.ibm.com>
+Sergey Alekseev <varnie29a@mail.ru>
Shawn <svicalifornia@gmail.com>
Shawn M Moore <sartak@gmail.com>
Sherm Pendley <sherm@dot-app.org>
Shigeya Suzuki <shigeya@wide.ad.jp>
Shimpei Yamashita <shimpei@socrates.patnet.caltech.edu>
Shinya Hayakawa <hayakawa@livedoor.jp>
-Shirakata Kentaro <root@ub32.org>
+Shirakata Kentaro <argrath@ub32.org>
Shishir Gundavaram <shishir@ruby.ora.com>
Shlomi Fish <shlomif@cpan.org>
Simon Cozens <simon@netthink.co.uk>
@@ -1047,6 +1076,7 @@ Steven Parkes <parkes@sierravista.com>
Steven Schubiger <schubiger@cpan.org>
Stian Seeberg <sseeberg@nimsoft.no>
Sullivan Beck <sbeck@cpan.org>
+Sven Strickroth <sven.strickroth@tu-clausthal.de>
Sven Verdoolaege <skimo@breughel.ufsia.ac.be>
SynaptiCAD, Inc. <sales@syncad.com>
Takis Psarogiannakopoulos <takis@xfree86.org>
@@ -1079,6 +1109,7 @@ Tim Witham <twitham@pcocd2.intel.com>
Timothe Litt <litt@acm.org>
Timur I. Bakeyev <bsdi@listserv.bat.ru>
Tkil <tkil@reptile.scrye.com>
+Tobias Leich <email@froggs.de>
Todd C. Miller <Todd.Miller@courtesan.com>
Todd Rinaldo <toddr@cpanel.net>
Todd T. Fries <todd@fries.int.mrleng.com>
@@ -1092,7 +1123,7 @@ Tom Hughes <tom@compton.nu>
Tom Hukins <tom@eborcom.com>
Tom Phoenix <rootbeer@teleport.com>
Tom Spindler <dogcow@isi.net>
-Tom Wyant
+Tom Wyant <wyant@cpan.org>
Tomoyuki Sadahiro <BQW10602@nifty.com>
Ton Hospel <cpan@ton.iguana.be>
Tony Bowden <tony@kasei.com>
@@ -1118,6 +1149,7 @@ Vishal Bhatia <vishal@deja.com>
Vlad Harchev <hvv@hippo.ru>
Vladimir Alexiev <vladimir@cs.ualberta.ca>
Vladimir Timofeev <vovkasm@gmail.com>
+Volker Schatz <perldoc@volkerschatz.com>
W. Geoffrey Rommel <grommel@sears.com>
W. Phillip Moore <wpm@ms.com>
Walt Mankowski <waltman@pobox.com>
diff --git a/gnu/usr.bin/perl/Cross/Makefile-cross-SH b/gnu/usr.bin/perl/Cross/Makefile-cross-SH
index 1f9a226ba17..e5a14b490dd 100755
--- a/gnu/usr.bin/perl/Cross/Makefile-cross-SH
+++ b/gnu/usr.bin/perl/Cross/Makefile-cross-SH
@@ -53,7 +53,7 @@ true)
-compatibility_version 1 -current_version $patchlevel \
-prebind -seg1addr 0x27000000 -install_name \$(shrpdir)/\$@"
;;
- rhapsody*|darwin*)
+ darwin*)
shrpldflags="${ldflags} -dynamiclib \
-compatibility_version \
${api_revision}.${api_version}.${api_subversion} \
@@ -341,7 +341,7 @@ unidatafiles = lib/unicore/Decomposition.pl lib/unicore/TestProp.pl \
unidatadirs = lib/unicore/To lib/unicore/lib
h1 = EXTERN.h INTERN.h XSUB.h av.h xconfig.h cop.h cv.h dosish.h
-h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h opcode.h
+h2 = embed.h form.h gv.h handy.h hv.h hv_func.h keywords.h mg.h op.h opcode.h
h3 = pad.h patchlevel.h perl.h perlapi.h perly.h pp.h proto.h regcomp.h
h4 = regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h
h5 = utf8.h warnings.h
@@ -772,7 +772,10 @@ extras.install: perl$(EXE_EXT)
no-install install.perl install.man install.html
META.yml: Porting/makemeta Porting/Maintainers.pl Porting/Maintainers.pm
- $(LDLIBPTH) ./miniperl -Ilib Porting/makemeta
+ $(LDLIBPTH) ./miniperl -Ilib Porting/makemeta -y
+
+META.json: Porting/makemeta Porting/Maintainers.pl Porting/Maintainers.pm
+ $(LDLIBPTH) ./miniperl -Ilib Porting/makemeta -j
install-strip:
$(MAKE) STRIPFLAGS=-s install DESTDIR="$(DESTDIR)"
@@ -1333,9 +1336,6 @@ os390|posix-bc)
cd ..
fi
;;
-vmesa)
- # Do nothing in VM/ESA.
- ;;
*)
echo "'$osname' is an EBCDIC system I don't know that well." >&4
;;
diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux b/gnu/usr.bin/perl/Cross/config.sh-arm-linux
index a07a55c5898..a7a45f0c255 100644
--- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux
+++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux
@@ -33,11 +33,11 @@ ansi2knr=''
aphostname='/bin/hostname'
api_revision='5'
api_subversion='0'
-api_version='16'
-api_versionstring='5.16.0'
+api_version='18'
+api_versionstring='5.18.0'
ar='ar'
-archlib='/usr/lib/perl5/5.16.3/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.16.3/armv4l-linux'
+archlib='/usr/lib/perl5/5.18.2/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.18.2/armv4l-linux'
archname64=''
archname='armv4l-linux'
archobjs=''
@@ -48,6 +48,7 @@ bash=''
bin='/usr/bin'
binexp='/usr/bin'
bison='bison'
+bootstrap_charset='undef'
byacc='byacc'
byteorder='1234'
c=''
@@ -55,7 +56,7 @@ castflags='0'
cat='cat'
cc='cc'
cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.16.3/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.18.2/armv4l-linux/CORE'
ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccname='arm-linux-gcc'
@@ -284,7 +285,10 @@ d_inetaton='define'
d_inetntop='undef'
d_inetpton='undef'
d_int64_t='define'
+d_ip_mreq='undef'
+d_ip_mreq_source='undef'
d_ipv6_mreq='undef'
+d_ipv6_mreq_source='undef'
d_isascii='define'
d_isblank='undef'
d_isfinite='undef'
@@ -728,7 +732,7 @@ inc_version_list=' '
inc_version_list_init='0'
incpath=''
inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.16.3/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.18.2/armv4l-linux'
installbin='./install_me_here/usr/bin'
installhtml1dir=''
installhtml3dir=''
@@ -736,13 +740,13 @@ installman1dir='./install_me_here/usr/share/man/man1'
installman3dir='./install_me_here/usr/share/man/man3'
installprefix='./install_me_here/usr'
installprefixexp='./install_me_here/usr'
-installprivlib='./install_me_here/usr/lib/perl5/5.16.3'
+installprivlib='./install_me_here/usr/lib/perl5/5.18.2'
installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.16.3/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.18.2/armv4l-linux'
installsitebin='./install_me_here/usr/bin'
installsitehtml1dir=''
installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.16.3'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.18.2'
installsiteman1dir='./install_me_here/usr/share/man/man1'
installsiteman3dir='./install_me_here/usr/share/man/man3'
installsitescript='./install_me_here/usr/bin'
@@ -871,8 +875,8 @@ pmake=''
pr=''
prefix='/usr'
prefixexp='/usr'
-privlib='/usr/lib/perl5/5.16.3'
-privlibexp='/usr/lib/perl5/5.16.3'
+privlib='/usr/lib/perl5/5.18.2'
+privlibexp='/usr/lib/perl5/5.18.2'
procselfexe='"/proc/self/exe"'
prototype='define'
ptrsize='4'
@@ -937,17 +941,17 @@ sig_num='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
sig_num_init='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, 6, 17, 29, 31, 0'
sig_size='68'
signal_t='void'
-sitearch='/usr/lib/perl5/site_perl/5.16.3/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.16.3/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.18.2/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.18.2/armv4l-linux'
sitebin='/usr/bin'
sitebinexp='/usr/bin'
sitehtml1dir=''
sitehtml1direxp=''
sitehtml3dir=''
sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.16.3'
+sitelib='/usr/lib/perl5/site_perl/5.18.2'
sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.16.3'
+sitelibexp='/usr/lib/perl5/site_perl/5.18.2'
siteman1dir='/usr/share/man/man1'
siteman1direxp='/usr/share/man/man1'
siteman3dir='/usr/share/man/man3'
@@ -986,7 +990,7 @@ stdio_stream_array=''
strerror_r_proto='0'
strings='/usr/include/string.h'
submit=''
-subversion='3'
+subversion='2'
sysman='/usr/share/man/man1'
tail=''
tar=''
@@ -1076,8 +1080,8 @@ vendorprefix=''
vendorprefixexp=''
vendorscript=''
vendorscriptexp=''
-version='5.16.3'
-version_patchlevel_string='version 16 subversion 3'
+version='5.18.2'
+version_patchlevel_string='version 18 subversion 2'
versiononly='undef'
vi=''
voidflags='15'
@@ -1091,10 +1095,10 @@ config_arg0='Configure'
config_args=''
config_argc=0
PERL_REVISION=5
-PERL_VERSION=16
-PERL_SUBVERSION=3
+PERL_VERSION=18
+PERL_SUBVERSION=2
PERL_API_REVISION=5
-PERL_API_VERSION=16
+PERL_API_VERSION=18
PERL_API_SUBVERSION=0
PERL_PATCHLEVEL=
PERL_CONFIG_SH=true
diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 b/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770
index 177f536e2de..a9da429ce6c 100644
--- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770
+++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770
@@ -33,11 +33,11 @@ ansi2knr=''
aphostname='/bin/hostname'
api_revision='5'
api_subversion='0'
-api_version='16'
-api_versionstring='5.16.0'
+api_version='18'
+api_versionstring='5.18.0'
ar='ar'
-archlib='/usr/lib/perl5/5.16.3/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.16.3/armv4l-linux'
+archlib='/usr/lib/perl5/5.18.2/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.18.2/armv4l-linux'
archname64=''
archname='armv4l-linux'
archobjs=''
@@ -55,7 +55,7 @@ castflags='0'
cat='cat'
cc='arm-none-linux-gnueabi-gcc'
cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.16.3/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.18.2/armv4l-linux/CORE'
ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccname='arm-linux-gcc'
@@ -703,7 +703,7 @@ inc_version_list=' '
inc_version_list_init='0'
incpath=''
inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.16.3/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.18.2/armv4l-linux'
installbin='./install_me_here/usr/bin'
installhtml1dir=''
installhtml3dir=''
@@ -711,13 +711,13 @@ installman1dir='./install_me_here/usr/share/man/man1'
installman3dir='./install_me_here/usr/share/man/man3'
installprefix='./install_me_here/usr'
installprefixexp='./install_me_here/usr'
-installprivlib='./install_me_here/usr/lib/perl5/5.16.3'
+installprivlib='./install_me_here/usr/lib/perl5/5.18.2'
installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.16.3/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.18.2/armv4l-linux'
installsitebin='./install_me_here/usr/bin'
installsitehtml1dir=''
installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.16.3'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.18.2'
installsiteman1dir='./install_me_here/usr/share/man/man1'
installsiteman3dir='./install_me_here/usr/share/man/man3'
installsitescript='./install_me_here/usr/bin'
@@ -845,8 +845,8 @@ pmake=''
pr=''
prefix='/usr'
prefixexp='/usr'
-privlib='/usr/lib/perl5/5.16.3'
-privlibexp='/usr/lib/perl5/5.16.3'
+privlib='/usr/lib/perl5/5.18.2'
+privlibexp='/usr/lib/perl5/5.18.2'
procselfexe='"/proc/self/exe"'
prototype='define'
ptrsize='4'
@@ -907,17 +907,17 @@ sig_num='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
sig_num_init='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, 6, 17, 29, 31, 0'
sig_size='68'
signal_t='void'
-sitearch='/usr/lib/perl5/site_perl/5.16.3/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.16.3/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.18.2/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.18.2/armv4l-linux'
sitebin='/usr/bin'
sitebinexp='/usr/bin'
sitehtml1dir=''
sitehtml1direxp=''
sitehtml3dir=''
sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.16.3'
+sitelib='/usr/lib/perl5/site_perl/5.18.2'
sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.16.3'
+sitelibexp='/usr/lib/perl5/site_perl/5.18.2'
siteman1dir='/usr/share/man/man1'
siteman1direxp='/usr/share/man/man1'
siteman3dir='/usr/share/man/man3'
@@ -954,7 +954,7 @@ stdio_stream_array=''
strerror_r_proto='0'
strings='/usr/include/string.h'
submit=''
-subversion='3'
+subversion='2'
sysman='/usr/share/man/man1'
tail=''
tar=''
@@ -1040,8 +1040,8 @@ vendorprefix=''
vendorprefixexp=''
vendorscript=''
vendorscriptexp=''
-version='5.16.3'
-version_patchlevel_string='version 16 subversion 3'
+version='5.18.2'
+version_patchlevel_string='version 18 subversion 2'
versiononly='undef'
vi=''
voidflags='15'
@@ -1055,10 +1055,10 @@ config_arg0='Configure'
config_args=''
config_argc=0
PERL_REVISION=5
-PERL_VERSION=16
-PERL_SUBVERSION=3
+PERL_VERSION=18
+PERL_SUBVERSION=2
PERL_API_REVISION=5
-PERL_API_VERSION=16
+PERL_API_VERSION=18
PERL_API_SUBVERSION=0
PERL_PATCHLEVEL=
PERL_CONFIG_SH=true
diff --git a/gnu/usr.bin/perl/META.json b/gnu/usr.bin/perl/META.json
new file mode 100644
index 00000000000..970798e9b40
--- /dev/null
+++ b/gnu/usr.bin/perl/META.json
@@ -0,0 +1,135 @@
+{
+ "abstract" : "The Perl 5 language interpreter",
+ "author" : [
+ "perl5-porters@perl.org"
+ ],
+ "dynamic_config" : 1,
+ "generated_by" : "CPAN::Meta version 2.120921",
+ "license" : [
+ "perl_5"
+ ],
+ "meta-spec" : {
+ "version" : 2
+ },
+ "name" : "perl",
+ "no_index" : {
+ "directory" : [
+ "cpan",
+ "dist/Attribute-Handlers",
+ "dist/autouse",
+ "dist/base",
+ "dist/bignum",
+ "dist/Carp",
+ "dist/constant",
+ "dist/Cwd",
+ "dist/Data-Dumper",
+ "dist/Devel-SelfStubber",
+ "dist/Dumpvalue",
+ "dist/Env",
+ "dist/ExtUtils-CBuilder",
+ "dist/ExtUtils-Command",
+ "dist/ExtUtils-Install",
+ "dist/ExtUtils-Manifest",
+ "dist/ExtUtils-ParseXS",
+ "dist/Filter-Simple",
+ "dist/I18N-Collate",
+ "dist/I18N-LangTags",
+ "dist/if",
+ "dist/IO/",
+ "dist/lib/",
+ "dist/Locale-Maketext",
+ "dist/Math-BigInt",
+ "dist/Math-BigInt-FastCalc",
+ "dist/Math-BigRat",
+ "dist/Module-CoreList",
+ "dist/Net-Ping",
+ "dist/Safe",
+ "dist/Search-Dict",
+ "dist/SelfLoader",
+ "dist/Storable",
+ "dist/Term-Complete",
+ "dist/Term-ReadLine",
+ "dist/Text-Abbrev",
+ "dist/Thread-Queue",
+ "dist/Thread-Semaphore",
+ "dist/threads",
+ "dist/threads-shared",
+ "dist/Tie-File",
+ "dist/XSLoader",
+ "lib/version",
+ "mad",
+ "win32"
+ ],
+ "file" : [
+ "autodoc.pl",
+ "dist/IO/ChangeLog",
+ "dist/IO/hints/sco.pl",
+ "dist/IO/IO.pm",
+ "dist/IO/IO.xs",
+ "dist/IO/lib/IO/Dir.pm",
+ "dist/IO/lib/IO/File.pm",
+ "dist/IO/lib/IO/Handle.pm",
+ "dist/IO/lib/IO/Pipe.pm",
+ "dist/IO/lib/IO/Poll.pm",
+ "dist/IO/lib/IO/Seekable.pm",
+ "dist/IO/lib/IO/Select.pm",
+ "dist/IO/lib/IO/Socket.pm",
+ "dist/IO/lib/IO/Socket/INET.pm",
+ "dist/IO/lib/IO/Socket/UNIX.pm",
+ "dist/IO/Makefile.PL",
+ "dist/IO/poll.c",
+ "dist/IO/poll.h",
+ "dist/IO/README",
+ "dist/IO/t/cachepropagate-tcp.t",
+ "dist/IO/t/cachepropagate-udp.t",
+ "dist/IO/t/cachepropagate-unix.t",
+ "dist/IO/t/IO.t",
+ "dist/IO/t/io_const.t",
+ "dist/IO/t/io_dir.t",
+ "dist/IO/t/io_dup.t",
+ "dist/IO/t/io_file.t",
+ "dist/IO/t/io_file_export.t",
+ "dist/IO/t/io_linenum.t",
+ "dist/IO/t/io_multihomed.t",
+ "dist/IO/t/io_pipe.t",
+ "dist/IO/t/io_poll.t",
+ "dist/IO/t/io_sel.t",
+ "dist/IO/t/io_sock.t",
+ "dist/IO/t/io_taint.t",
+ "dist/IO/t/io_tell.t",
+ "dist/IO/t/io_udp.t",
+ "dist/IO/t/io_unix.t",
+ "dist/IO/t/io_utf8.t",
+ "dist/IO/t/io_utf8argv.t",
+ "dist/IO/t/io_xs.t",
+ "dist/lib/lib_pm.PL",
+ "dist/lib/Makefile.PL",
+ "dist/lib/t/01lib.t",
+ "lib/Exporter.pm",
+ "lib/Exporter.t",
+ "lib/Exporter/Heavy.pm",
+ "lib/unicore/mktables",
+ "lib/version.pm",
+ "lib/version.pod",
+ "pod/perlfilter.pod",
+ "pod/perlpodstyle.pod",
+ "Porting/Maintainers.pm",
+ "Porting/perldelta_template.pod",
+ "TestInit.pm"
+ ]
+ },
+ "release_status" : "stable",
+ "resources" : {
+ "bugtracker" : {
+ "web" : "http://rt.perl.org/perlbug/"
+ },
+ "homepage" : "http://www.perl.org/",
+ "license" : [
+ "http://dev.perl.org/licenses/"
+ ],
+ "repository" : {
+ "url" : "http://perl5.git.perl.org/"
+ }
+ },
+ "version" : "5.018002"
+}
diff --git a/gnu/usr.bin/perl/META.yml b/gnu/usr.bin/perl/META.yml
index 0ff1ac45e25..0aed3fbe736 100644
--- a/gnu/usr.bin/perl/META.yml
+++ b/gnu/usr.bin/perl/META.yml
@@ -1,21 +1,20 @@
-name: perl
-version: 5.016003
-abstract: The Perl 5 language interpreter
-author: perl5-porters@perl.org
+---
+abstract: 'The Perl 5 language interpreter'
+author:
+ - perl5-porters@perl.org
+build_requires: {}
+dynamic_config: 1
+generated_by: 'CPAN::Meta version 2.120921, CPAN::Meta::Converter version 2.120921'
license: perl
-resources:
- homepage: http://www.perl.org/
- bugtracker: http://rt.perl.org/perlbug/
- license: http://dev.perl.org/licenses/
- repository: http://perl5.git.perl.org/
-distribution_type: core
-generated_by: Porting/makemeta
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.4.html
+ version: 1.4
+name: perl
no_index:
directory:
- cpan
- dist/Attribute-Handlers
- dist/autouse
- - dist/B-Lint
- dist/base
- dist/bignum
- dist/Carp
@@ -30,7 +29,6 @@ no_index:
- dist/ExtUtils-Install
- dist/ExtUtils-Manifest
- dist/ExtUtils-ParseXS
- - dist/File-CheckTree
- dist/Filter-Simple
- dist/I18N-Collate
- dist/I18N-LangTags
@@ -57,6 +55,7 @@ no_index:
- dist/Tie-File
- dist/XSLoader
- lib/version
+ - mad
- win32
file:
- autodoc.pl
@@ -78,6 +77,9 @@ no_index:
- dist/IO/poll.c
- dist/IO/poll.h
- dist/IO/README
+ - dist/IO/t/cachepropagate-tcp.t
+ - dist/IO/t/cachepropagate-udp.t
+ - dist/IO/t/cachepropagate-unix.t
- dist/IO/t/IO.t
- dist/IO/t/io_const.t
- dist/IO/t/io_dir.t
@@ -111,3 +113,9 @@ no_index:
- Porting/Maintainers.pm
- Porting/perldelta_template.pod
- TestInit.pm
+resources:
+ bugtracker: http://rt.perl.org/perlbug/
+ homepage: http://www.perl.org/
+ license: http://dev.perl.org/licenses/
+ repository: http://perl5.git.perl.org/
+version: 5.018002
diff --git a/gnu/usr.bin/perl/Makefile.micro b/gnu/usr.bin/perl/Makefile.micro
index 8ce48b4d718..cd9a9c58330 100644
--- a/gnu/usr.bin/perl/Makefile.micro
+++ b/gnu/usr.bin/perl/Makefile.micro
@@ -29,7 +29,7 @@ microperl: $(O)
generated_headers = uuudmap.h ubitcount.h umg_data.h
H = av.h uconfig.h cop.h cv.h embed.h embedvar.h form.h gv.h handy.h \
- hv.h intrpvar.h iperlsys.h mg.h op.h opcode.h opnames.h pad.h \
+ hv.h hv_func.h intrpvar.h iperlsys.h mg.h op.h opcode.h opnames.h pad.h \
patchlevel.h perl.h perlsdio.h perlvars.h perly.h pp.h \
pp_proto.h proto.h reentr.h regexp.h scope.h sv.h \
thread.h unixish.h utf8.h util.h warnings.h $(generated_headers)
diff --git a/gnu/usr.bin/perl/NetWare/Makefile b/gnu/usr.bin/perl/NetWare/Makefile
index dba845788d7..fd1406f5c12 100644
--- a/gnu/usr.bin/perl/NetWare/Makefile
+++ b/gnu/usr.bin/perl/NetWare/Makefile
@@ -86,7 +86,7 @@ NLM_VERSION = 3,20,0
# Here comes the CW tools - TO BE FILLED TO BUILD WITH CW -
-MODULE_DESC = "Perl 5.16.3 for NetWare"
+MODULE_DESC = "Perl 5.18.2 for NetWare"
CCTYPE = CodeWarrior
C_COMPILER = mwccnlm -c
CPP_COMPILER = mwccnlm
@@ -462,7 +462,7 @@ INST_NW_TOP2 = $(INST_NW_DRV)\perl
# versioned installation can be obtained by setting INST_TOP above to a
# path that includes an arbitrary version string.
#
-INST_VER = \5.16.3
+INST_VER = \5.18.2
#
# Comment this out if you DON'T want your perl installation to have
@@ -756,6 +756,7 @@ CORE_NOCFG_H = \
..\gv.h \
..\handy.h \
..\hv.h \
+ ..\hv_func.h \
..\iperlsys.h \
..\mg.h \
..\nostdio.h \
diff --git a/gnu/usr.bin/perl/NetWare/NWUtil.c b/gnu/usr.bin/perl/NetWare/NWUtil.c
index 15e90cb4811..6d60dfbabdb 100644
--- a/gnu/usr.bin/perl/NetWare/NWUtil.c
+++ b/gnu/usr.bin/perl/NetWare/NWUtil.c
@@ -517,8 +517,8 @@ void fnAppendArgument(PCOMMANDLINEPARSER pclp, char *new_arg)
char *fnSkipToken(char *s, char *r)
{
- register char *t=NULL;
- register char quote = '\0'; // NULL, single quote, or double quote
+ char *t=NULL;
+ char quote = '\0'; // NULL, single quote, or double quote
char ch = '\0';
for (t=s; t[0]; t++)
@@ -577,11 +577,11 @@ char *fnSkipToken(char *s, char *r)
char *fnScanToken(char *x, char *r)
{
- register char *s = x; // input string position
- register char *t = x; // output string position
- register char quote = '\0'; // either NULL, or single quote, or double quote
- register char ch = '\0';
- register char c = '\0';
+ char *s = x; // input string position
+ char *t = x; // output string position
+ char quote = '\0'; // either NULL, or single quote, or double quote
+ char ch = '\0';
+ char c = '\0';
while (*s)
{
diff --git a/gnu/usr.bin/perl/NetWare/config.wc b/gnu/usr.bin/perl/NetWare/config.wc
index 84004bd7e34..3da939a3db2 100644
--- a/gnu/usr.bin/perl/NetWare/config.wc
+++ b/gnu/usr.bin/perl/NetWare/config.wc
@@ -37,6 +37,7 @@ bash=''
bin='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
binexp='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
bison=''
+bootstrap_charset='undef'
byacc='byacc'
byteorder='1234'
c=''
@@ -273,7 +274,10 @@ d_inetaton='undef'
d_inetntop='undef'
d_inetpton='undef'
d_int64_t='undef'
+d_ip_mreq='undef'
+d_ip_mreq_source='undef'
d_ipv6_mreq='undef'
+d_ipv6_mreq_source='undef'
d_isascii='define'
d_isblank='undef'
d_isfinite='undef'
diff --git a/gnu/usr.bin/perl/NetWare/config_H.wc b/gnu/usr.bin/perl/NetWare/config_H.wc
index 5d80fc23661..c9f3c4e444a 100644
--- a/gnu/usr.bin/perl/NetWare/config_H.wc
+++ b/gnu/usr.bin/perl/NetWare/config_H.wc
@@ -1048,7 +1048,7 @@
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define ARCHLIB "c:\\perl\\5.16.3\\lib\\NetWare-x86-multi-thread" /**/
+#define ARCHLIB "c:\\perl\\5.18.2\\lib\\NetWare-x86-multi-thread" /**/
/*#define ARCHLIB_EXP "" /**/
/* ARCHNAME:
@@ -1079,8 +1079,8 @@
* This symbol is the filename expanded version of the BIN symbol, for
* programs that do not want to deal with that at run-time.
*/
-#define BIN "c:\\perl\\5.16.3\\bin\\NetWare-x86-multi-thread" /**/
-#define BIN_EXP "c:\\perl\\5.16.3\\bin\\NetWare-x86-multi-thread" /**/
+#define BIN "c:\\perl\\5.18.2\\bin\\NetWare-x86-multi-thread" /**/
+#define BIN_EXP "c:\\perl\\5.18.2\\bin\\NetWare-x86-multi-thread" /**/
/* BYTEORDER:
* This symbol holds the hexadecimal constant defined in byteorder,
@@ -3063,7 +3063,7 @@
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITEARCH "c:\\perl\\site\\5.16.3\\lib\\NetWare-x86-multi-thread" /**/
+#define SITEARCH "c:\\perl\\site\\5.18.2\\lib\\NetWare-x86-multi-thread" /**/
/*#define SITEARCH_EXP "" /**/
/* SITELIB:
@@ -3086,7 +3086,7 @@
* removed. The elements in inc_version_list (inc_version_list.U) can
* be tacked onto this variable to generate a list of directories to search.
*/
-#define SITELIB "c:\\perl\\site\\5.16.3\\lib" /**/
+#define SITELIB "c:\\perl\\site\\5.18.2\\lib" /**/
/*#define SITELIB_EXP "" /**/
#define SITELIB_STEM "" /**/
diff --git a/gnu/usr.bin/perl/NetWare/nwhashcls.cpp b/gnu/usr.bin/perl/NetWare/nwhashcls.cpp
index 2bf24856e51..aaf5a5c0be6 100644
--- a/gnu/usr.bin/perl/NetWare/nwhashcls.cpp
+++ b/gnu/usr.bin/perl/NetWare/nwhashcls.cpp
@@ -97,7 +97,7 @@ NWPerlHashList::remove(void *ldata)
}
-void NWPerlHashList::forAll( register void (*user_fn)(void *, void*), void *data ) const
+void NWPerlHashList::forAll( void (*user_fn)(void *, void*), void *data ) const
{
for(int i=0; i<BUCKET_SIZE; i++)
@@ -210,7 +210,7 @@ NWPerlKeyHashList::remove(void *key)
}
-void NWPerlKeyHashList::forAll( register void (*user_fn)(void *, void*), void *data ) const
+void NWPerlKeyHashList::forAll( void (*user_fn)(void *, void*), void *data ) const
{
for(int i=0; i<BUCKET_SIZE; i++)
diff --git a/gnu/usr.bin/perl/NetWare/sv_nw.c b/gnu/usr.bin/perl/NetWare/sv_nw.c
index b449dda0b17..223ff94735f 100644
--- a/gnu/usr.bin/perl/NetWare/sv_nw.c
+++ b/gnu/usr.bin/perl/NetWare/sv_nw.c
@@ -9,7 +9,7 @@
void
-Perl_sv_catsv(pTHX_ SV *dstr, register SV *sstr)
+Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr)
{
sv_catsv_flags(dstr, sstr, SV_GMAGIC);
}
@@ -22,13 +22,13 @@ Perl_sv_catpvn(pTHX_ SV *dsv, const char* sstr, STRLEN slen)
}
void
-Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr)
+Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr)
{
sv_setsv_flags(dstr, sstr, SV_GMAGIC);
}
char *
-Perl_sv_2pv(pTHX_ register SV *sv, STRLEN *lp)
+Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp)
{
return sv_2pv_flags(sv, lp, SV_GMAGIC);
}
diff --git a/gnu/usr.bin/perl/Policy_sh.SH b/gnu/usr.bin/perl/Policy_sh.SH
index cc310dddd1e..1c99255dcdf 100644
--- a/gnu/usr.bin/perl/Policy_sh.SH
+++ b/gnu/usr.bin/perl/Policy_sh.SH
@@ -1,3 +1,5 @@
+#!/bin/sh
+
case $PERL_CONFIG_SH in
'') . ./config.sh ;;
esac
diff --git a/gnu/usr.bin/perl/Porting/Maintainers.pm b/gnu/usr.bin/perl/Porting/Maintainers.pm
index 3e6697f887e..896e7c8cbab 100644
--- a/gnu/usr.bin/perl/Porting/Maintainers.pm
+++ b/gnu/usr.bin/perl/Porting/Maintainers.pm
@@ -22,7 +22,7 @@ use vars qw(@ISA @EXPORT_OK $VERSION);
show_results process_options files_to_modules
finish_tap_output
reload_manifest);
-$VERSION = 0.06;
+$VERSION = 0.09;
require Exporter;
@@ -92,8 +92,9 @@ sub expand_glob {
sub filter_excluded {
my ($m, @files) = @_;
+ my $excluded = $Modules{$m}{EXCLUDED};
return @files
- unless my $excluded = $Modules{$m}{EXCLUDED};
+ unless $excluded and @$excluded;
my ($pat) = map { qr/$_/ } join '|' => map {
ref $_ ? $_ : qr/\b\Q$_\E$/
@@ -301,6 +302,8 @@ sub show_results {
}
}
} elsif ($Check or $Checkmani) {
+ require Test::More;
+ Test::More->import;
if( @Files ) {
missing_maintainers(
$Checkmani
@@ -346,22 +349,14 @@ sub maintainers_files {
sub duplicated_maintainers {
maintainers_files();
- for my $f (keys %files) {
- if ($files{$f} > 1) {
- print "not ok ".++$TestCounter." - File $f appears $files{$f} times in Maintainers.pl\n";
- } else {
- print "ok ".++$TestCounter." - File $f appears $files{$f} times in Maintainers.pl\n";
- }
+ for my $f (sort keys %files) {
+ cmp_ok($files{$f}, '<=', 1, "File $f appears $files{$f} times in Maintainers.pl");
}
}
sub warn_maintainer {
my $name = shift;
- if ($files{$name}) {
- print "ok ".++$TestCounter." - $name has a maintainer\n";
- } else {
- print "not ok ".++$TestCounter." - $name has NO maintainer\n";
- }
+ ok($files{$name}, "$name has a maintainer");
}
sub missing_maintainers {
@@ -376,17 +371,13 @@ sub missing_maintainers {
sub superfluous_maintainers {
maintainers_files();
- for my $f (keys %files) {
- if ($MANIFEST{$f}) {
- print "ok ".++$TestCounter." - Maintained file $f appears in MANIFEST\n";
- } else {
- print "not ok ".++$TestCounter." - File $f has has a maintainer but is not in MANIFEST\n";
- }
+ for my $f (sort keys %files) {
+ ok($MANIFEST{$f}, "File $f has a maintainer and is in MANIFEST");
}
}
sub finish_tap_output {
- print "1..".$TestCounter."\n";
+ done_testing();
}
1;
diff --git a/gnu/usr.bin/perl/Porting/README.pod b/gnu/usr.bin/perl/Porting/README.pod
new file mode 100644
index 00000000000..a714193a742
--- /dev/null
+++ b/gnu/usr.bin/perl/Porting/README.pod
@@ -0,0 +1,355 @@
+=head1 NAME
+
+README.pod - README for the F<Porting/> directory in the Perl 5 core distribution.
+
+=head1 FILES
+
+=head2 F<acknowledgements.pl>
+
+Generates the text which goes in the Acknowledgements section in
+a perldelta. You pass in the previous version and it guesses the next
+version, fetches information from the repository and outputs the
+text.
+
+=head2 F<add-package.pl>
+
+Program to prepare dual-life distributions for insertion into the Perl 5
+F<lib/> and F<t/> directories. Now thought to be largely superseded.
+
+=head2 F<bisect-example.sh>, F<bisect-runner.pl> and F<bisect.pl>
+
+Use C<git bisect> to pinpoint changes.
+
+=head2 F<bump-perl-version>
+
+A utility to find, and optionally bump, references to the perl version
+number in various files within the perl source.
+
+=head2 F<check83.pl>
+
+Performs pathname portability checks, including whether there are naming
+conflicts when names are truncated to the DOSish, case-ignoring 8.3 format.
+
+=head2 F<checkAUTHORS.pl>
+
+Used by F<t/porting/authors.t> to ensure the F<AUTHORS> list is up to date.
+
+=head2 F<checkURL.pl>
+
+Checks that all the URLs in the Perl source are valid.
+
+=head2 F<checkVERSION.pl>
+
+Used by F<t/porting/cmp_version.t> to ensure changed modules have had their
+versions updated.
+
+=head2 F<checkansi.pl>
+
+Check source code for ANSI-C violations.
+
+=head2 F<checkcfgvar.pl>
+
+Check that the various F<config.sh>-clones have (at least) all the same
+symbols as the top-level F<config_h.SH> so that the (potentially) needed
+symbols are not lagging after how F<Configure> thinks the world is laid out.
+VMS is probably not handled properly here, due to their own rather elaborate
+DCL scripting.
+
+=head2 F<check-cpan-pollution>
+
+Scans the commit logs for commits that are potentially, illegitimately
+touching modules that are primarily maintained outside of the perl core. Also
+checks for commits that span multiple distributions in F<cpan/> or F<dist/>.
+Makes sure that updated CPAN distributions also update
+F<Porting/Maintainers.pl>, but otherwise ignores changes to that file (and
+F<MANIFEST>).
+
+=head2 F<checkpodencoding.pl>
+
+Check if POD files contain non-ASCII without specifying
+encoding. Run it as: C<perl Porting/checkpodencoding.pl>.
+
+=head2 F<cherrymaint>
+
+Command line tool to update cherrymaint; a tool for selecting commits from
+blead to cherry-pick into stable perl versions.
+
+=head2 F<cmpVERSION.pl>
+
+Compare the current Perl source tree and a given tag for modules that have
+identical version numbers but different contents.
+
+=head2 F<config_H>
+
+This file is a sample F<config.h> file. If you are unable to successfully run
+F<Configure>, copy this file to F<config.h> and edit it to suit your system.
+
+=head2 F<config_h.pl>
+
+Used when importing changes from F<metaconfig>. This script reorders
+F<config_h.SH> after metaconfig.
+
+=head2 F<config.sh>
+
+This file is a sample F<config.sh> file. F<config.sh> is normally
+produced by running the F<Configure> script. It holds all the definitions
+figured out by F<Configure>. If you are unable to successfully run
+F<Configure> on your system, copy this sample file to F<config.sh>
+at the top of the perl source tree and edit it to suit your system.
+Then propagate those values by running C<Configure -S>. This sample
+file is normally updated each time F<Configure> is updated.
+
+=head2 F<core-cpan-diff>
+
+Compare CPAN modules with their equivalent in core.
+Originally based on App::DualLivedDiff by Steffen Mueller.
+
+=head2 F<corecpan.pl>
+
+Reports, in a perl source tree, which dual-lived core modules have not the
+same version than the corresponding module on CPAN.
+
+=head2 F<corelist-diff>
+
+Prints a table of differences between two Perl versions with respect to
+modules included in the distribution.
+
+=head2 F<corelist.pl>
+
+Generates info for Module::CoreList from this perl tree.
+
+=head2 F<corelist-perldelta.pl>
+
+Generates a list of the module changes for the Perl you are currently
+building. Also generates a diff between the corelist sections of two
+F<perldelta*> files.
+
+=head2 F<epigraphs.pod>
+
+List of Perl release epigraphs.
+
+=head2 F<exec-bit.txt>
+
+This file contains a list of files that F<makerel> will ensure get an
+executable bit.
+
+=head2 F<exercise_makedef.pl>
+
+Brute force testing for F<makedef.pl>.
+
+=head2 F<expand-macro.pl>
+
+Expand C macros using the C preprocessor.
+
+=head2 F<findrfuncs>
+
+This script finds reentrant variants of functions used in an executable and
+shared objects.
+
+=head2 F<GitUtils.pm>
+
+This script contains the subroutine to generate a F<.patch file> for a
+committish (the SHA1 checksum of a commit, a number made of 40 hexadecimal
+digits which acts the internal unique identifier for this commit
+(lilypond.org). Related file: F<make_dot_patch.pl>
+
+=head2 F<git-deltatool>
+
+This script, a rough draft, aids in generating a perldelta file
+from a series of git commits.
+
+=head2 F<git-find-p4-change>
+
+This script, given a Perforce change number, outputs the equivalent git commit
+id.
+
+=head2 F<git-make-p4-refs>
+
+This script creates a tag for every p4raw-id.
+
+=head2 F<Glossary>
+
+This file is built by F<metaconfig>. This file contains a description of all
+the shell variables whose value is determined by the Configure script.
+It later gets incorporated into the pod for F<Config.pm>.
+
+=head2 F<how_to_write_a_perldelta.pod>
+
+This file contains a specification as to how to write a perldelta pod.
+Related file: F<perldelta_template.pod>
+
+=head2 F<leakfinder.pl>
+
+This script executes every line in every file in the build directory and its
+subdirectories to determine if the number of SVs goes up and reports it as a
+leak to STDOUT. WARNING! some harm could be done if a line contains something
+similar to C<`rm *`>.
+
+=head2 F<Maintainers>
+
+This script shows information about the maintainers of core files/modules.
+
+Related files: F<Maintainers.pl>, F<Maintainers.pm>
+
+=head2 F<Maintainers.pl>
+
+A package associating core files/modules with maintainers. Related files:
+F<Maintainers>, F<Maintainers.pm>
+
+=head2 F<Maintainers.pm>
+
+A package to search and show information about which core files/modules are
+associated with maintainers. Related files: F<Maintainers>, F<Maintainers.pl>
+
+=head2 F<make-rmg-checklist>
+
+This script creates a release checklist as a simple HTML document.
+
+=head2 F<make_dot_patch.pl>
+
+Generate a F<.patch> file to STDOUT for a commit ID specified on the
+command-line.
+
+=head2 F<make_modlib_cpan.pl>
+
+This script generates the list of registered CPAN sites in F<perlmodlib.PL>.
+
+=head2 F<make_snapshot.pl>
+
+This script is a quick and dirty snapshot generator for the perl5.git.perl.org
+web page to use to generate the snapshot files.
+
+=head2 F<makemeta>
+
+This script creates F<META.yml> and F<META.json> files.
+
+=head2 F<makerel>
+
+This script builds a Perl release tarball.
+
+=head2 F<manicheck>
+
+This script outputs a list of files in F<MANIFEST> which don't exist and a
+list of files that exist and aren't in F<MANIFEST>.
+
+=head2 F<manisort>
+
+This script sorts the files in F<MANIFEST>.
+
+=head2 F<new-perldelta.pl>
+
+This script automates the process for creating perldelta.pl.
+
+=head2 F<newtests-perldelta.pl>
+
+This script outputs the added tests between the two versions of Perl.
+
+=head2 F<perldelta_template.pod>
+
+Template for F<perldelta>.
+
+=head2 F<perlhist_calculate.pl>
+
+Generates info for F<perlhist> from this perl tree.
+
+=head2 F<pod_lib.pl>
+
+When C<require>d into other programs in the Perl 5 core
+distribution, provides functions useful during testing.
+
+=head2 F<pod_rules.pl>
+
+Generate the sections of files listed in C<%Targets> from F<pod/perl.pod>.
+Mostly these are rules in Makefiles.
+
+ --verbose gives slightly more output
+ --build-all tries to build everything
+ --build-foo updates foo as follows
+ --showfiles shows the files to be changed
+ --test exit if perl.pod, MANIFEST are consistent, and regenerated
+ files are up to date, die otherwise.
+
+=head2 F<podtidy>
+
+Applies F<podtidy> to a file.
+
+=head2 F<pumpkin.pod>
+
+Pumpkin - Notes on handling the Perl Patch Pumpkin And Porting Perl.
+Many of these are out of date or superseded by other documents in
+this directory.
+
+=head2 F<README.y2038>
+
+The y2038 implementation for perl. This is an implementation of POSIX time.h
+which solves the year 2038 bug on systems where time_t is only 32 bits. It is
+implemented in bog-standard ANSI C. The latest version can be found at
+L<http://y2038.googlecode.com/>.
+
+=head2 F<release_announcement_template.txt>
+
+Release announcment for minor releasements of the 5.17 development series.
+
+=head2 F<release_managers_guide.pod>
+
+Releasing a new version of perl 5.x. Note that things change at each release,
+so there may be new things not covered here, or tools may need updating.
+
+=head2 F<release_schedule.pod>
+
+This schedule lists the projected or historical development and release
+schedules for the next, current and previous stable versions of Perl. Dates
+with all question marks will only be releases if deemed necessary by the
+Pumpking.
+
+=head2 F<rt_list_patches>
+
+Shell script to list patches in RT.
+
+=head2 F<sort_perldiag.pl>
+
+This is a script for sorting the warning and error messages in
+F<perldiag.pod>. POD formatting, printf-style escapes, non-letter characters,
+and case are ignored, as explained in L<perldiag>.
+
+=head2 F<testall.atom>
+
+Test suite profiling on Tru 64.
+
+=head2 F<thirdclean>
+
+Script for cleaning out the "known noise" from Third Degree reports: either
+noise caused by F<libc> itself, or F<Perl_yyparse> leaks.
+
+=head2 F<time>
+
+A helper tool for perl's 2038 support. See F<Porting/README.y2038> for details.
+
+=head2 F<timecheck2.c>
+
+A little program to test the limits of your system's time functions. See
+F<Porting/README.y2038> for details.
+
+=head2 F<timecheck.c>
+
+A helper tool for perl's 2038 support See F<Porting/README.y2038> for details.
+
+=head2 F<todo.pod>
+
+This is a list of wishes for Perl. The most up-to-date version of this file is
+at L<http://perl5.git.perl.org/perl.git/blob_plain/HEAD:/Porting/todo.pod>.
+The tasks we think are smaller or easier are listed first. Anyone is welcome
+to work on any of these, but it's a good idea to first contact
+F<perl5-porters@perl.org> to avoid duplication of effort, and to learn from
+any previous attempts.
+
+=head2 F<valgrindpp.pl>
+
+A post-processor for C<make test.valgrind>. F<valgrindpp.pl> is a
+post-processor for F<.valgrind> files created during C<make test.valgrind>. It
+collects all these files, extracts most of the information and produces a
+significantly shorter summary of all detected memory access errors and memory
+leaks.
+
+=cut
+
diff --git a/gnu/usr.bin/perl/Porting/acknowledgements.pl b/gnu/usr.bin/perl/Porting/acknowledgements.pl
index bdfef41f2ba..20941092cca 100644
--- a/gnu/usr.bin/perl/Porting/acknowledgements.pl
+++ b/gnu/usr.bin/perl/Porting/acknowledgements.pl
@@ -7,7 +7,7 @@ Porting/acknowledgements.pl - Generate perldelta acknowledgements text
=head1 SYNOPSIS
perl Porting/acknowledgements.pl v5.15.0..HEAD
-
+
=head1 DESCRIPTION
This generates the text which goes in the Acknowledgements section in
@@ -100,7 +100,7 @@ sub development_time {
my $development_time;
if ( $months < 2 ) {
- return "$weeks weeks";
+ return "$weeks @{[$weeks == 1 ? q(week) : q(weeks)]}";
} else {
return "$months months";
}
diff --git a/gnu/usr.bin/perl/Porting/bisect-runner.pl b/gnu/usr.bin/perl/Porting/bisect-runner.pl
index ea1534b2771..ca4c12c4398 100644
--- a/gnu/usr.bin/perl/Porting/bisect-runner.pl
+++ b/gnu/usr.bin/perl/Porting/bisect-runner.pl
@@ -108,12 +108,14 @@ bisect.pl - use git bisect to pinpoint changes
.../Porting/bisect.pl -e 'my $a := 2;'
# When did this stop being an error?
.../Porting/bisect.pl --expect-fail -e '1 // 2'
- # When did this stop matching?
+ # When were all lines matching this pattern removed from all files?
.../Porting/bisect.pl --match '\b(?:PL_)hash_seed_set\b'
- # When did this start matching?
+ # When was some line matching this pattern added to some file?
.../Porting/bisect.pl --expect-fail --match '\buseithreads\b'
- # When did this test program stop working?
+ # When did this test program stop exiting 0?
.../Porting/bisect.pl -- ./perl -Ilib ../test_prog.pl
+ # When did this test start failing?
+ .../Porting/bisect.pl -- ./perl -Ilib t/TEST op/sort.t
# When did this first become valid syntax?
.../Porting/bisect.pl --target=miniperl --end=v5.10.0 \
--expect-fail -e 'my $a := 2;'
@@ -152,10 +154,12 @@ end revisions.
By default F<bisect.pl> will process all options, then use the rest of the
command line as arguments to list C<system> to run a test case. By default,
the test case should pass (exit with 0) on earlier perls, and fail (exit
-non-zero) on I<blead>. F<bisect.pl> will use F<bisect-runner.pl> to find the
-earliest stable perl version on which the test case passes, check that it
-fails on blead, and then use F<bisect-runner.pl> with C<git bisect run> to
-find the commit which caused the failure.
+non-zero) on I<blead> (note that running most of perl's test files directly
+won't do this, you'll need to run them through a harness to get the proper
+error code). F<bisect.pl> will use F<bisect-runner.pl> to find the earliest
+stable perl version on which the test case passes, check that it fails on
+blead, and then use F<bisect-runner.pl> with C<git bisect run> to find the
+commit which caused the failure.
Because the test case is the complete argument to C<system>, it is easy to
run something other than the F<perl> built, if necessary. If you need to run
@@ -317,17 +321,23 @@ revision. The bisect run will find the first commit where it passes.
=item *
--Dnoextensions=Encode
+-D I<config_arg=value>
=item *
--Uusedevel
+-U I<config_arg>
=item *
--Accflags=-DNO_MATHOMS
+-A I<config_arg=value>
-Arguments to pass to F<Configure>. Repeated C<-A> arguments are passed
+Arguments (C<-A>, C<-D>, C<-U>) to pass to F<Configure>. For example,
+
+ -Dnoextensions=Encode
+ -Uusedevel
+ -Accflags=-DNO_MATHOMS
+
+Repeated C<-A> arguments are passed
through as is. C<-D> and C<-U> are processed in order, and override
previous settings for the same parameter. F<bisect-runner.pl> emulates
C<-Dnoextensions> when F<Configure> itself does not provide it, as it's
diff --git a/gnu/usr.bin/perl/Porting/bump-perl-version b/gnu/usr.bin/perl/Porting/bump-perl-version
index b867414fb19..627f907a513 100644
--- a/gnu/usr.bin/perl/Porting/bump-perl-version
+++ b/gnu/usr.bin/perl/Porting/bump-perl-version
@@ -26,6 +26,9 @@
# $ Porting/bump-perl-version -u < /tmp/scan
#
# (so line 52 of Porting/config.sh is now updated)
+#
+# The -i option can be used to combine these two steps (if you prefer to make
+# all of the changes at once and then edit the results via git).
# This utility 'knows' about certain files and formats, and so can spot
# 'hidden' version numbers, like PERL_SUBVERSION=9.
@@ -194,14 +197,6 @@ my @maps = (
qr/uconfig/,
],
- # rename perl-5^.15^.1.dirperl-5_15_1.dir in README.vms
- [
- qr{\sperl-(\d+)_(\d+)_(\d+)\.dir}x,
- sub { " perl-${1}_${2}_${3}.dir", " perl-${newx}_${newy}_${newz}.dir" },
- " perl-${oldx}_${oldy}_{$oldz}.dir",
- qr/README.vms/,
- ],
-
);
@@ -212,6 +207,7 @@ my %SKIP_FILES = map { ($_ => 1) } qw(
MANIFEST
Porting/Maintainers.pl
Porting/acknowledgements.pl
+ Porting/corelist-perldelta.pl
Porting/epigraphs.pod
Porting/how_to_write_a_perldelta.pod
Porting/release_managers_guide.pod
diff --git a/gnu/usr.bin/perl/Porting/checkAUTHORS.pl b/gnu/usr.bin/perl/Porting/checkAUTHORS.pl
index f42912fe59a..237a307818f 100755
--- a/gnu/usr.bin/perl/Porting/checkAUTHORS.pl
+++ b/gnu/usr.bin/perl/Porting/checkAUTHORS.pl
@@ -12,16 +12,17 @@ my (%authors, %untraced, %patchers, %committers, %real_names);
my $result = GetOptions (
# modes
- "who" => \$who,
- "rank" => \$rank,
+ "who" => \$who,
+ "rank" => \$rank,
"thanks-applied" => \$ta,
- "missing" => \$ack ,
- "tap" => \$tap,
+ "missing" => \$ack ,
+ "tap" => \$tap,
+
# modifiers
- "authors" => \$author_file,
- "percentage" => \$percentage, # show as %age
- "cumulative" => \$cumulative,
- "reverse" => \$reverse,
+ "authors=s" => \$author_file,
+ "percentage" => \$percentage, # show as %age
+ "cumulative" => \$cumulative,
+ "reverse" => \$reverse,
);
if (!$result or ( $rank + $ta + $who + $ack + $tap != 1 ) or !@ARGV) {
@@ -29,7 +30,7 @@ if (!$result or ( $rank + $ta + $who + $ack + $tap != 1 ) or !@ARGV) {
}
$author_file ||= './AUTHORS';
-die "Can't locate '$author_file'. Specify it with '--author <path>'."
+die "Can't locate '$author_file'. Specify it with '--authors <path>'."
unless -f $author_file;
my $map = generate_known_author_map();
@@ -159,6 +160,7 @@ sub generate_known_author_map {
"arbor\100al37al08.telecel.pt"
, # reported perlbug ticket 5196 - no actual code contribution. no real name - jrv 20091006
"oracle\100pcr8.pcr.com", # Reported perlbug ticket 1015 - no patch - Probably Ed Eddington ed@pcr.com
+ "snaury\100gmail.com", # Reported cpan ticket 35943, with patch for fix
;
#
@@ -335,11 +337,17 @@ sub _raw_address {
#
# Try to find the author
#
- while (my ($email, $author_name) = each %authors) {
- if ($name eq $author_name) {
- $addr = $email;
- $real_name = $name;
- last;
+ if (exists $map->{$name}) {
+ $addr = $map->{$name};
+ $real_name = $authors{$addr};
+ }
+ else {
+ while (my ($email, $author_name) = each %authors) {
+ if ($name eq $author_name) {
+ $addr = $email;
+ $real_name = $name;
+ last;
+ }
}
}
}
@@ -364,7 +372,7 @@ __DATA__
# List of mappings. First entry the "correct" email address, as appears
# in the AUTHORS file. Second is any "alias" mapped to it.
#
-# If the "correct" email address is a '+', the entry above is reused;
+# If the "correct" email address is a '+', the entry above it is reused;
# this for addresses with more than one alias.
#
# Note that all entries are in lowercase. Further, no '@' signs should
@@ -553,8 +561,10 @@ blgl\100stacken.kth.se blgl\100hagernas.com
+ 2bfjdsla52kztwejndzdstsxl9athp\100gmail.com
brian.d.foy\100gmail.com bdfoy\100cpan.org
BQW10602\100nifty.com sadahiro\100cpan.org
+bulk88\100hotmail.com bulk88
chromatic\100wgz.org chromatic\100rmci.net
+ckuskie\100cadence.com colink\100perldreamer.com
claes\100surfar.nu claes\100versed.se
clintp\100geeksalad.org cpierce1\100ford.com
clkao\100clkao.org clkao\100bestpractical.com
@@ -585,6 +595,7 @@ dennis\100booking.com dennis\100camel.ams6.corp.booking.com
dev-perl\100pimb.org knew-p5p\100pimb.org
+ lists-p5p\100pimb.org
djberg86\100attbi.com djberg96\100attbi.com
+dk\100tetsuo.karasik.eu.org dmitry\100karasik.eu.org
domo\100computer.org shouldbedomo\100mac.com
+ domo\100slipper.ip.lu
+ domo\100tcp.ip.lu
@@ -695,6 +706,7 @@ lupe\100lupe-christoph.de lupe\100alanya.m.isar.de
lutherh\100stratcom.com lutherh\100infinet.com
mab\100wdl.loral.com markb\100rdcf.sm.unisys.com
marcel\100codewerk.com gr\100univie.ac.at
++ hanekomu\100gmail.com
marcgreen\100cpan.org marcgreen\100wpi.edu
markleightonfisher\100gmail.com fisherm\100tce.com
mark.p.lutz\100boeing.com tecmpl1\100triton.ca.boeing.com
@@ -786,10 +798,13 @@ public\100khwilliamson.com khw\100karl.(none)
+ khw\100khw-desktop.(none)
radu\100netsoft.ro rgreab\100fx.ro
+rajagopa\100pauline.schrodinger.com rajagopa\100schrodinger.com
raphael.manfredi\100pobox.com raphael_manfredi\100grenoble.hp.com
module@renee-baecker.de renee.baecker\100smart-websolutions.de
+ reneeb\100reneeb-desktop.(none)
++ github@renee-baecker.de
+ otrs\100ubuntu.(none)
++ perl\100renee-baecker.de
richard.foley\100rfi.net richard.foley\100t-online.de
+ richard.foley\100ubs.com
+ richard.foley\100ubsw.com
@@ -801,6 +816,7 @@ rjbs\100cpan.org rjbs-perl-p5p\100lists.manxome.org
+ perl.p5p\100rjbs.manxome.org
rjk\100linguist.dartmouth.edu rjk\100linguist.thayer.dartmouth.edu
+ rjk-perl-p5p\100tamias.net
++ rjk\100tamias.net
rjray\100redhat.com rjray\100uswest.com
rmgiroux\100acm.org rmgiroux\100hotmail.com
+ mgiroux\100bear.com
@@ -815,11 +831,13 @@ roberto\100keltia.freenix.fr roberto\100eurocontrol.fr
robin\100cpan.org robin\100kitsite.com
roderick\100argon.org roderick\100gate.net
+ roderick\100ibcinc.com
+argrath\100ub32.org root\100ub32.org
rootbeer\100teleport.com rootbeer\100redcat.com
+ tomphoenix\100unknown
rurban\100x-ray.at rurban\100cpan.org
+ rurban\100cpanel.net
sartak\100bestpractical.com sartak\100gmail.com
++ code\100sartak.org
sadinoff\100olf.com danny-cpan\100sadinoff.com
schubiger\100cpan.org steven\100accognoscere.org
+ sts\100accognoscere.org
@@ -845,6 +863,8 @@ simon\100simon-cozens.org simon\100pembro4.pmb.ox.ac.uk
+ simon\100othersideofthe.earth.li
+ simon\100cozens.net
+ simon\100netthink.co.uk
+lannings\100who.int lannings\100gmail.com
++ slanning\100cpan.org
slaven\100rezic.de slaven.rezic\100berlin.de
+ srezic\100iconmobile.com
+ srezic\100cpan.org
@@ -896,6 +916,7 @@ whatever\100davidnicol.com davidnicol\100gmail.com
wolfgang.laun\100alcatel.at wolfgang.laun\100chello.at
+ wolfgang.laun\100thalesgroup.com
+ wolfgang.laun\100gmail.com
+wolfsage\100gmail.com mhorsfall\100darmstadtium.(none)
yath\100yath.de yath-perlbug\100yath.de
jkeen@verizon.net jkeenan@cpan.org
diff --git a/gnu/usr.bin/perl/Porting/checkcfgvar.pl b/gnu/usr.bin/perl/Porting/checkcfgvar.pl
index e6a819fbeb1..3ebde3a2d15 100755
--- a/gnu/usr.bin/perl/Porting/checkcfgvar.pl
+++ b/gnu/usr.bin/perl/Porting/checkcfgvar.pl
@@ -46,17 +46,13 @@ my @CFG = (
# We can't base our check on $], because that's the version of the
# perl that we are running, not the version of the source tree.
"Cross/config.sh-arm-linux",
- "epoc/config.sh",
"NetWare/config.wc",
"symbian/config.sh",
"uconfig.sh",
"uconfig64.sh",
"plan9/config_sh.sample",
"win32/config.gc",
- "win32/config.gc64",
- "win32/config.gc64nox",
"win32/config.vc",
- "win32/config.vc64",
"win32/config.ce",
"configure.com",
"Porting/config.sh",
diff --git a/gnu/usr.bin/perl/Porting/checkpodencoding.pl b/gnu/usr.bin/perl/Porting/checkpodencoding.pl
index a2d12df494e..a9363682754 100644
--- a/gnu/usr.bin/perl/Porting/checkpodencoding.pl
+++ b/gnu/usr.bin/perl/Porting/checkpodencoding.pl
@@ -30,21 +30,21 @@ sub finder {
next if
# Test cases
- $file ~~ m[Pod-Simple/t];
+ $file =~ m[Pod-Simple/t];
my ($in_pod, $has_encoding, @non_ascii);
FILE: while (my $line = <$fh>) {
chomp $line;
- if ($line ~~ /^=[a-z]+/) {
+ if ($line =~ /^=[a-z]+/) {
$in_pod = 1;
}
if ($in_pod) {
- if ($line ~~ /^=encoding (\S+)/) {
+ if ($line =~ /^=encoding (\S+)/) {
$has_encoding = 1;
last FILE;
- } elsif ($line ~~ /[^[:ascii:]]/) {
+ } elsif ($line =~ /[^[:ascii:]]/) {
my $encoding = guess_encoding($line);
push @non_ascii => {
num => $.,
@@ -54,7 +54,7 @@ sub finder {
}
}
- if ($line ~~ /^=cut/) {
+ if ($line =~ /^=cut/) {
$in_pod = 0;
}
}
diff --git a/gnu/usr.bin/perl/Porting/cmpVERSION.pl b/gnu/usr.bin/perl/Porting/cmpVERSION.pl
index e618533a0a0..67fb926b83d 100644
--- a/gnu/usr.bin/perl/Porting/cmpVERSION.pl
+++ b/gnu/usr.bin/perl/Porting/cmpVERSION.pl
@@ -37,10 +37,23 @@ die "$0: 'This is a Perl directory but does not look like Git working directory\
my $null = devnull();
unless (defined $tag_to_compare) {
+ my $check = 'HEAD';
+ while(1) {
+ $check = `git describe --abbrev=0 $check 2>$null`;
+ chomp $check;
+ last unless $check =~ /-RC/;
+ $check .= '^';
+ }
+ $tag_to_compare = $check;
# Thanks to David Golden for this suggestion.
- $tag_to_compare = `git describe --abbrev=0`;
- chomp $tag_to_compare;
+}
+
+unless (length $tag_to_compare) {
+ die "$0: Git found, but no Git tags found\n"
+ unless $tap;
+ print "1..0 # SKIP: Git found, but no Git tags found\n";
+ exit 0;
}
my $tag_exists = `git --no-pager tag -l $tag_to_compare 2>$null`;
@@ -87,23 +100,31 @@ my $skip_dirs = qr|^t/lib|;
sub pm_file_from_xs {
my $xs = shift;
- # First try a .pm at the same level as the .xs file, with the same basename
- my $pm = $xs;
- $pm =~ s/xs\z/pm/;
- return $pm if -f $pm;
-
- # Try for a (different) .pm at the same level, based on the directory name:
- my ($path) = $xs =~ m!^(.*)/!;
- my ($last) = $path =~ m!([^-/]+)\z!;
- $pm = "$path/$last.pm";
- return $pm if -f $pm;
-
- # Try to work out the extension's full package, and look for a .pm in lib/
- # based on that:
- ($last) = $path =~ m!([^/]+)\z!;
- $last =~ tr !-!/!;
- $pm = "$path/lib/$last.pm";
- return $pm if -f $pm;
+ foreach my $try (sub {
+ # First try a .pm at the same level as the .xs file
+ # with the same basename
+ return shift =~ s/\.xs\z//r;
+ },
+ sub {
+ # Try for a (different) .pm at the same level, based
+ # on the directory name:
+ my ($path) = shift =~ m!^(.*)/!;
+ my ($last) = $path =~ m!([^-/]+)\z!;
+ return "$path/$last";
+ },
+ sub {
+ # Try to work out the extension's full package, and
+ # look for a .pm in lib/ based on that:
+ my ($path) = shift =~ m!^(.*)/!;
+ my ($last) = $path =~ m!([^/]+)\z!;
+ $last =~ tr !-!/!;
+ return "$path/lib/$last";
+ }) {
+ # For all cases, first look to see if the .pm file is generated.
+ my $base = $try->($xs);
+ return "${base}_pm.PL" if -f "${base}_pm.PL";
+ return "${base}.pm" if -f "${base}.pm";
+ }
die "No idea which .pm file corresponds to '$xs', so aborting";
}
@@ -122,7 +143,7 @@ foreach (`git --no-pager diff --name-only $tag_to_compare --diff-filter=ACMRTUXB
my $this_dir = $1;
next if $this_dir =~ $skip_dirs || exists $skip{$_};
next if exists $upstream_files{$_};
- if (/\.pm\z/ || m|^lib/.*\.pl\z|) {
+ if (/\.pm\z/ || m|^lib/.*\.pl\z| || /_pm\.PL\z/) {
push @{$module_diffs{$_}}, $_;
} elsif (/\.xs\z/ && !/\bt\b/) {
push @{$module_diffs{pm_file_from_xs($_)}}, $_;
@@ -138,6 +159,7 @@ printf "1..%d\n" => scalar keys %module_diffs if $tap;
my $count;
my $diff_cmd = "git --no-pager diff $tag_to_compare ";
+my $q = ($^O eq 'MSWin32' || $^O eq 'NetWare' || $^O eq 'VMS') ? '"' : "'";
my (@diff);
foreach my $pm_file (sort keys %module_diffs) {
@@ -146,22 +168,25 @@ foreach my $pm_file (sort keys %module_diffs) {
my $pm_version = eval {MM->parse_version($pm_file)};
my $orig_pm_content = get_file_from_git($pm_file, $tag_to_compare);
my $orig_pm_version = eval {MM->parse_version(\$orig_pm_content)};
-
- if ((!defined $pm_version || !defined $orig_pm_version)
- || ($pm_version eq 'undef' || $orig_pm_version eq 'undef') # sigh
- || ($pm_version ne $orig_pm_version) # good
- ) {
- printf "ok %d - %s\n", ++$count, $pm_file if $tap;
+ ++$count;
+
+ if (!defined $orig_pm_version || $orig_pm_version eq 'undef') { # sigh
+ print "ok $count - SKIP Can't parse \$VERSION in $pm_file\n"
+ if $tap;
+ } elsif (!defined $pm_version || $pm_version eq 'undef') {
+ print "not ok $count - in $pm_file version was $orig_pm_version, now unparsable\n" if $tap;
+ } elsif ($pm_version ne $orig_pm_version) { # good
+ print "ok $count - $pm_file\n" if $tap;
} else {
if ($tap) {
foreach (sort @{$module_diffs{$pm_file}}) {
- print "# $_" for `$diff_cmd '$_'`;
+ print "# $_" for `$diff_cmd $q$_$q`;
}
if (exists $skip_versions{$pm_file}
and grep $pm_version eq $_, @{$skip_versions{$pm_file}}) {
- printf "ok %d - SKIP $pm_file version $pm_version\n", ++$count;
+ print "ok $count - SKIP $pm_file version $pm_version\n";
} else {
- printf "not ok %d - %s\n", ++$count, $pm_file;
+ print "not ok $count - $pm_file\n";
}
} else {
push @diff, @{$module_diffs{$pm_file}};
@@ -179,6 +204,6 @@ sub get_file_from_git {
if ($diffs) {
for (sort @diff) {
print "\n";
- system "$diff_cmd '$_'";
+ system "$diff_cmd $q$_$q";
}
}
diff --git a/gnu/usr.bin/perl/Porting/config.sh b/gnu/usr.bin/perl/Porting/config.sh
index e2c17eaad09..352d5c24afe 100644
--- a/gnu/usr.bin/perl/Porting/config.sh
+++ b/gnu/usr.bin/perl/Porting/config.sh
@@ -46,11 +46,11 @@ ansi2knr=''
aphostname=''
api_revision='5'
api_subversion='0'
-api_version='16'
-api_versionstring='5.16.0'
+api_version='18'
+api_versionstring='5.18.0'
ar='ar'
-archlib='/opt/perl/lib/5.16.3/i686-linux-64int'
-archlibexp='/opt/perl/lib/5.16.3/i686-linux-64int'
+archlib='/opt/perl/lib/5.18.2/i686-linux-64int'
+archlibexp='/opt/perl/lib/5.18.2/i686-linux-64int'
archname64='64int'
archname='i686-linux-64int'
archobjs=''
@@ -61,6 +61,7 @@ bash=''
bin='/opt/perl/bin'
binexp='/opt/perl/bin'
bison='bison'
+bootstrap_charset='undef'
byacc='byacc'
byteorder='12345678'
c=''
@@ -298,7 +299,10 @@ d_inetaton='define'
d_inetntop='define'
d_inetpton='define'
d_int64_t='define'
+d_ip_mreq='undef'
+d_ip_mreq_source='undef'
d_ipv6_mreq='undef'
+d_ipv6_mreq_source='undef'
d_isascii='define'
d_isblank='undef'
d_isfinite='undef'
@@ -746,7 +750,7 @@ inc_version_list_init='0'
incpath=''
inews=''
initialinstalllocation='/opt/perl/bin'
-installarchlib='/opt/perl/lib/5.16.3/i686-linux-64int'
+installarchlib='/opt/perl/lib/5.18.2/i686-linux-64int'
installbin='/opt/perl/bin'
installhtml1dir=''
installhtml3dir=''
@@ -754,13 +758,13 @@ installman1dir='/opt/perl/man/man1'
installman3dir='/opt/perl/man/man3'
installprefix='/opt/perl'
installprefixexp='/opt/perl'
-installprivlib='/opt/perl/lib/5.16.3'
+installprivlib='/opt/perl/lib/5.18.2'
installscript='/opt/perl/bin'
-installsitearch='/opt/perl/lib/site_perl/5.16.3/i686-linux-64int'
+installsitearch='/opt/perl/lib/site_perl/5.18.2/i686-linux-64int'
installsitebin='/opt/perl/bin'
installsitehtml1dir=''
installsitehtml3dir=''
-installsitelib='/opt/perl/lib/site_perl/5.16.3'
+installsitelib='/opt/perl/lib/site_perl/5.18.2'
installsiteman1dir='/opt/perl/man/man1'
installsiteman3dir='/opt/perl/man/man3'
installsitescript='/opt/perl/bin'
@@ -883,7 +887,7 @@ perl_patchlevel='34948'
perl_static_inline='static __inline__'
perladmin='yourname@yourhost.yourplace.com'
perllibs='-lnsl -ldl -lm -lcrypt -lutil -lc'
-perlpath='/opt/perl/bin/perl5.16.3'
+perlpath='/opt/perl/bin/perl5.18.2'
pg='pg'
phostname=''
pidtype='pid_t'
@@ -892,8 +896,8 @@ pmake=''
pr=''
prefix='/opt/perl'
prefixexp='/opt/perl'
-privlib='/opt/perl/lib/5.16.3'
-privlibexp='/opt/perl/lib/5.16.3'
+privlib='/opt/perl/lib/5.18.2'
+privlibexp='/opt/perl/lib/5.18.2'
procselfexe='"/proc/self/exe"'
prototype='define'
ptrsize='4'
@@ -959,17 +963,17 @@ sig_num='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
sig_num_init='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, 6, 17, 29, 31, 0'
sig_size='69'
signal_t='void'
-sitearch='/opt/perl/lib/site_perl/5.16.3/i686-linux-64int'
-sitearchexp='/opt/perl/lib/site_perl/5.16.3/i686-linux-64int'
+sitearch='/opt/perl/lib/site_perl/5.18.2/i686-linux-64int'
+sitearchexp='/opt/perl/lib/site_perl/5.18.2/i686-linux-64int'
sitebin='/opt/perl/bin'
sitebinexp='/opt/perl/bin'
sitehtml1dir=''
sitehtml1direxp=''
sitehtml3dir=''
sitehtml3direxp=''
-sitelib='/opt/perl/lib/site_perl/5.16.3'
+sitelib='/opt/perl/lib/site_perl/5.18.2'
sitelib_stem='/opt/perl/lib/site_perl'
-sitelibexp='/opt/perl/lib/site_perl/5.16.3'
+sitelibexp='/opt/perl/lib/site_perl/5.18.2'
siteman1dir='/opt/perl/man/man1'
siteman1direxp='/opt/perl/man/man1'
siteman3dir='/opt/perl/man/man3'
@@ -995,7 +999,7 @@ src='.'
ssizetype='ssize_t'
st_ino_sign='1'
st_ino_size='4'
-startperl='#!/opt/perl/bin/perl5.16.3'
+startperl='#!/opt/perl/bin/perl5.18.2'
startsh='#!/bin/sh'
static_ext=' '
stdchar='char'
@@ -1008,7 +1012,7 @@ stdio_stream_array=''
strerror_r_proto='0'
strings='/usr/include/string.h'
submit=''
-subversion='3'
+subversion='2'
sysman='/usr/share/man/man1'
tail=''
tar=''
@@ -1098,8 +1102,8 @@ vendorprefix=''
vendorprefixexp=''
vendorscript=''
vendorscriptexp=''
-version='5.16.3'
-version_patchlevel_string='version 16 subversion 3'
+version='5.18.2'
+version_patchlevel_string='version 18 subversion 2'
versiononly='define'
vi=''
voidflags='15'
@@ -1122,10 +1126,10 @@ config_arg7='-Duse64bitint'
config_arg8='-Dusedevel'
config_arg9='-dE'
PERL_REVISION=5
-PERL_VERSION=16
-PERL_SUBVERSION=3
+PERL_VERSION=18
+PERL_SUBVERSION=2
PERL_API_REVISION=5
-PERL_API_VERSION=16
+PERL_API_VERSION=18
PERL_API_SUBVERSION=0
PERL_PATCHLEVEL=34948
PERL_CONFIG_SH=true
diff --git a/gnu/usr.bin/perl/Porting/config_h.pl b/gnu/usr.bin/perl/Porting/config_h.pl
index cf69b2ad320..0042526b16a 100755
--- a/gnu/usr.bin/perl/Porting/config_h.pl
+++ b/gnu/usr.bin/perl/Porting/config_h.pl
@@ -3,7 +3,10 @@
# This script reorders config_h.SH after metaconfig
# Changing metaconfig is too complicated
#
-# Copyright (C) 2005-2007 by H.Merijn Brand (m)'07 [18-04-2007]
+# This script is run just after metaconfig, and it
+# is run ONLY ONCE. Not to be used afterwards
+#
+# Copyright (C) 2005-2012 by H.Merijn Brand (m)'12 [22-09-2012]
#
# You may distribute under the terms of either the GNU General Public
# License or the Artistic License, as specified in the README file.
@@ -68,6 +71,8 @@ push @ch, ";;\nesac\n";
open $ch, "> $cSH" or die "Cannot write $cSH: $!\n";
print $ch <<EOW;
+#!/bin/sh
+#
# THIS IS A GENERATED FILE
# DO NOT HAND-EDIT
#
diff --git a/gnu/usr.bin/perl/Porting/core-cpan-diff b/gnu/usr.bin/perl/Porting/core-cpan-diff
index 2ecbc2c49fb..60a27d18c97 100644
--- a/gnu/usr.bin/perl/Porting/core-cpan-diff
+++ b/gnu/usr.bin/perl/Porting/core-cpan-diff
@@ -45,7 +45,6 @@ use constant SRC_DIR => 'tarballs';
use constant UNTAR_DIR => 'untarred';
use constant DIFF_CMD => 'diff';
-use constant WGET_CMD => 'wget';
sub usage {
print STDERR "\n@_\n\n" if @_;
@@ -59,7 +58,6 @@ Usage: $0 [opts] [ -d | -v | -x ] [ -a | module ... ]
-d/--diff Display file differences using diff(1), rather than just
listing which files have changed.
- The diff(1) command is assumed to be in your PATH.
--diffopts Options to pass to the diff command. Defaults to '-u'.
@@ -88,6 +86,10 @@ those in the perl source tree.
Must be run from the root of the perl source tree.
Module names must match the keys of %Modules in Maintainers.pl.
+
+The diff(1) command is assumed to be in your PATH and is used to diff files
+regardless of whether the --diff option has been chosen to display any file
+differences.
HERE
exit(1);
}
@@ -120,6 +122,8 @@ sub run {
'x|crosscheck' => \$do_crosscheck,
) or usage;
+ @wanted_upstreams = map { $_ eq 'undef' ? undef : $_ } @wanted_upstreams;
+
my @modules;
usage("Cannot mix -a with module list") if $scan_all && @ARGV;
@@ -151,7 +155,9 @@ sub run {
}
if ( defined $cache_dir ) {
- die "ERROR: no such directory: '$cache_dir'\n" unless -d $cache_dir;
+ die "ERROR: not a directory: '$cache_dir'\n"
+ if !-d $cache_dir && -e $cache_dir;
+ File::Path::mkpath($cache_dir);
}
else {
$cache_dir = File::Temp::tempdir( CLEANUP => 1 );
@@ -165,7 +171,10 @@ sub run {
) or die "ERROR: not a CPAN mirror '$mirror_url'\n";
if ($do_crosscheck) {
- do_crosscheck( $outfh, $cache_dir, $mirror_url, $force, \@modules );
+ do_crosscheck(
+ $outfh, $cache_dir, $mirror_url,
+ $force, \@modules, \@wanted_upstreams
+ );
}
else {
do_compare(
@@ -194,7 +203,7 @@ sub cpan_url_distribution {
my ( $mirror_url, $distribution ) = @_;
$distribution =~ /^([A-Z])([A-Z])/
or die "ERROR: invalid DISTRIBUTION name (not /^[A-Z]{2}/): $distribution\n";
- my $path = "modules/by-authors/id/$1/$1$2/$distribution";
+ my $path = "authors/id/$1/$1$2/$distribution";
return cpan_url( $mirror_url, $path );
}
@@ -217,6 +226,7 @@ sub do_compare {
}
my %ignorable = map { ( $_ => 1 ) } @Maintainers::IGNORABLE;
+ my %wanted_upstream = map { ( $_ => 1 ) } @$wanted_upstreams;
my %seen_dist;
for my $module (@$modules) {
@@ -237,13 +247,13 @@ sub do_compare {
warn "WARNING: duplicate entry for $dist in $module\n";
}
- my $upstream = $m->{UPSTREAM} || 'UNKNOWN';
- next if @$wanted_upstreams and !( $upstream ~~ $wanted_upstreams );
+ my $upstream = $m->{UPSTREAM};
+ next if @$wanted_upstreams and !$wanted_upstream{$upstream};
print $outfh "\n$module - "
. $Maintainers::Modules{$module}->{DISTRIBUTION} . "\n";
print $outfh " upstream is: "
- . ( $m->{UPSTREAM} || 'UNKNOWN!' ) . "\n";
+ . ( $m->{UPSTREAM} // 'UNKNOWN!' ) . "\n";
my $cpan_dir;
eval {
@@ -419,7 +429,10 @@ sub distro_base {
# Maintainers.pl
sub do_crosscheck {
- my ( $outfh, $cache_dir, $mirror_url, $force, $modules ) = @_;
+ my (
+ $outfh, $cache_dir, $mirror_url,
+ $force, $modules, $wanted_upstreams,
+ ) = @_;
my $file = '02packages.details.txt';
my $download_dir = $cache_dir || File::Temp::tempdir( CLEANUP => 1 );
@@ -465,6 +478,7 @@ sub do_crosscheck {
$distros{ distro_base($short_distro) }{$distro} = 1;
}
+ my %wanted_upstream = map { ( $_ => 1 ) } @$wanted_upstreams;
for my $module (@$modules) {
my $m = $Maintainers::Modules{$module}
or die "ERROR: No such module in Maintainers.pl: '$module'\n";
@@ -482,6 +496,9 @@ sub do_crosscheck {
my $pdist = $m->{DISTRIBUTION};
die "ERROR: $module has no DISTRIBUTION entry\n" unless defined $pdist;
+ my $upstream = $m->{UPSTREAM};
+ next if @$wanted_upstreams and !$wanted_upstream{$upstream};
+
my $cdist = $modules{$module};
( my $short_pdist = $pdist ) =~ s{^.*/}{};
@@ -563,8 +580,9 @@ sub get_map {
sub cpan_to_perl {
my ( $excluded, $map, $customized, $cpan_file ) = @_;
+ my %customized = map { ( $_ => 1 ) } @$customized;
for my $exclude (@$excluded) {
- next if $exclude ~~ $customized;
+ next if $customized{$exclude};
# may be a simple string to match exactly, or a pattern
if ( ref $exclude ) {
@@ -625,7 +643,7 @@ sub get_distribution {
if ( -f $download_file and !-s $download_file ) {
- # wget can leave a zero-length file on failed download
+ # failed download might leave a zero-length file
unlink $download_file;
}
@@ -642,6 +660,7 @@ sub get_distribution {
my $path = catfile( $untar_dir, $filename );
$path =~ s/\.tar\.gz$//
+ or $path =~ s/\.tgz$//
or $path =~ s/\.zip$//
or die
"ERROR: downloaded file does not have a recognised suffix: $path\n";
diff --git a/gnu/usr.bin/perl/Porting/corelist-perldelta.pl b/gnu/usr.bin/perl/Porting/corelist-perldelta.pl
index 44b6ea7ddc0..e6fb582ab9a 100755
--- a/gnu/usr.bin/perl/Porting/corelist-perldelta.pl
+++ b/gnu/usr.bin/perl/Porting/corelist-perldelta.pl
@@ -13,7 +13,7 @@ use Getopt::Long;
./perl Porting/corelist-perldelta.pl
# generate a diff between the corelist sections of two perldelta* files:
- perl Porting/corelist-perldelta.pl --mode=check 5.17.1 5.17.2 <perl5172delta.pod
+ perl Porting/corelist-perldelta.pl --mode=check 5.017001 5.017002 <perl5172delta.pod
=head1 ABOUT
@@ -49,15 +49,15 @@ my $deprecated;
sub added {
my ($mod, $old_v, $new_v) = @_;
say "=item *\n";
- say "C<$mod> $new_v has been added to the Perl core.\n";
+ say "L<$mod> $new_v has been added to the Perl core.\n";
}
sub updated {
my ($mod, $old_v, $new_v) = @_;
say "=item *\n";
- say "C<$mod> has been upgraded from version $old_v to $new_v.\n";
+ say "L<$mod> has been upgraded from version $old_v to $new_v.\n";
if ( $deprecated->{$mod} ) {
- say "NOTE: C<$mod> is deprecated and may be removed from a future version of Perl.\n";
+ say "NOTE: L<$mod> is deprecated and may be removed from a future version of Perl.\n";
}
}
diff --git a/gnu/usr.bin/perl/Porting/corelist.pl b/gnu/usr.bin/perl/Porting/corelist.pl
index c5952c30284..c60b5df5200 100755
--- a/gnu/usr.bin/perl/Porting/corelist.pl
+++ b/gnu/usr.bin/perl/Porting/corelist.pl
@@ -106,7 +106,6 @@ find(
$module =~ s{^Sys-Syslog/win32}{Sys-Syslog},
$module =~ s{^Time-Piece/Seconds}{Time/Seconds},
);
- $module =~ s{^vms/ext}{VMS};
$module =~ s{^lib/}{}g;
$module =~ s{/}{::}g;
$module =~ s{-}{::}g;
@@ -115,7 +114,6 @@ find(
$lines{$module} = $version;
$module_to_file{$module} = $File::Find::name;
},
- 'vms/ext',
'symbian/ext',
'lib',
'ext',
@@ -131,13 +129,29 @@ if ( open my $ucdv, "<", "lib/unicore/version" ) {
close $ucdv;
}
+my $delta_data = make_corelist_delta(
+ $perl_vnum,
+ \%lines,
+ \%Module::CoreList::version
+);
+
my $versions_in_release = " " . $perl_vnum . " => {\n";
-foreach my $key ( sort keys %lines ) {
- $versions_in_release .= sprintf "\t%-24s=> %s,\n", "'$key'", $lines{$key};
+$versions_in_release .= " delta_from => $delta_data->{delta_from},\n";
+$versions_in_release .= " changed => {\n";
+foreach my $key (sort keys $delta_data->{changed}) {
+ $versions_in_release .= sprintf " %-24s=> %s,\n", "'$key'",
+ defined $delta_data->{changed}{$key} ? "'"
+ . $delta_data->{changed}{$key} . "'" : "undef";
+}
+$versions_in_release .= " },\n";
+$versions_in_release .= " removed => {\n";
+for my $key (sort keys($delta_data->{removed} || {})) {
+ $versions_in_release .= sprintf " %-24s=> %s,\n", "'$key'", 1;
}
+$versions_in_release .= " }\n";
$versions_in_release .= " },\n";
-$corelist =~ s/^(%version\s*=\s*.*?)(^\);)$/$1$versions_in_release$2/xism;
+$corelist =~ s/^(my %delta\s*=\s*.*?)(^\);)$/$1$versions_in_release$2/ism;
exit unless %modlist;
@@ -145,6 +159,18 @@ exit unless %modlist;
# data by "Module", which is really a dist.
my $file_to_M = files_to_modules( values %module_to_file );
+sub slurp_utf8($) {
+ open my $fh, "<:utf8", "$_[0]"
+ or die "can't open $_[0] for reading: $!";
+ return do { local $/; <$fh> };
+}
+
+sub parse_cpan_meta($) {
+ return Parse::CPAN::Meta->${
+ $_[0] =~ /\A\x7b/ ? \"load_json_string" : \"load_yaml_string"
+ }($_[0]);
+}
+
my %module_to_upstream;
my %module_to_dist;
my %dist_to_meta_YAML;
@@ -171,17 +197,18 @@ while ( my ( $module, $file ) = each %module_to_file ) {
# Like it or lump it, this has to be Unix format.
my $meta_YAML_path = "authors/id/$dist";
- $meta_YAML_path =~ s/(?:tar\.gz|tar\.bz2|zip|tgz)$/meta/ or die "$meta_YAML_path";
+ $meta_YAML_path =~ s/(?:tar\.gz|tar\.bz2|zip|tgz)$/meta/
+ or die "ERROR: bad meta YAML path: '$meta_YAML_path'";
my $meta_YAML_url = 'http://ftp.funet.fi/pub/CPAN/' . $meta_YAML_path;
if ( -e "$cpan/$meta_YAML_path" ) {
- $dist_to_meta_YAML{$dist} = Parse::CPAN::Meta::LoadFile( $cpan . "/" . $meta_YAML_path );
+ $dist_to_meta_YAML{$dist} = parse_cpan_meta(slurp_utf8( $cpan . "/" . $meta_YAML_path ));
} elsif ( my $content = fetch_url($meta_YAML_url) ) {
unless ($content) {
warn "Failed to fetch $meta_YAML_url\n";
next;
}
- eval { $dist_to_meta_YAML{$dist} = Parse::CPAN::Meta::Load($content); };
+ eval { $dist_to_meta_YAML{$dist} = parse_cpan_meta($content); };
if ( my $err = $@ ) {
warn "$meta_YAML_path: ".$err;
next;
@@ -206,13 +233,31 @@ $upstream_stanza .= ");";
$corelist =~ s/^%upstream .*? ;$/$upstream_stanza/ismx;
# Deprecation generation
-my $deprecated_stanza = " " . $perl_vnum . " => {\n";
-foreach my $module ( sort keys %module_to_deprecated ) {
- my $deprecated = defined $module_to_deprecated{$module} ? "'$module_to_deprecated{$module}'" : 'undef';
- $deprecated_stanza .= sprintf "\t%-24s=> %s,\n", "'$module'", $deprecated;
+{
+ my $delta_data = make_corelist_delta(
+ $perl_vnum,
+ \%module_to_deprecated,
+ do { no warnings 'once'; \%Module::CoreList::deprecated },
+ );
+
+ my $deprecated_stanza = " " . $perl_vnum . " => {\n";
+ $deprecated_stanza .= " delta_from => $delta_data->{delta_from},\n";
+ $deprecated_stanza .= " changed => {\n";
+ foreach my $key (sort keys $delta_data->{changed}) {
+ $deprecated_stanza .= sprintf " %-24s=> %s,\n", "'$key'",
+ defined $delta_data->{changed}{$key} ? "'"
+ . $delta_data->{changed}{$key} . "'" : "undef";
+ }
+ $deprecated_stanza .= " },\n";
+ $deprecated_stanza .= " removed => {\n";
+ for my $key (sort keys($delta_data->{removed} || {})) {
+ $deprecated_stanza .= sprintf " %-24s=> %s,\n", "'$key'", 1;
+ }
+ $deprecated_stanza .= " }\n";
+ $deprecated_stanza .= " },\n";
+
+ $corelist =~ s/^(%deprecated\s*=\s*.*?)(^\);)$/$1$deprecated_stanza$2/xism;
}
-$deprecated_stanza .= " },\n";
-$corelist =~ s/^(%deprecated\s*=\s*.*?)(^\);)$/$1$deprecated_stanza$2/xism;
my $tracker = "%bug_tracker = (\n";
foreach my $module ( sort keys %module_to_upstream ) {
@@ -226,8 +271,9 @@ foreach my $module ( sort keys %module_to_upstream ) {
my $dist = $module_to_dist{$module};
$bug_tracker = $dist_to_meta_YAML{$dist}->{resources}{bugtracker}
if $dist;
+ $bug_tracker = $bug_tracker->{web} if ref($bug_tracker) eq "HASH";
- $bug_tracker = defined $bug_tracker ? "'$bug_tracker'" : 'undef';
+ $bug_tracker = defined $bug_tracker ? quote($bug_tracker) : 'undef';
next if $bug_tracker eq "'http://rt.perl.org/perlbug/'";
$tracker .= sprintf " %-24s=> %s,\n", "'$module'", $bug_tracker;
}
@@ -254,7 +300,7 @@ my $pod = join( '', <$pod_fh> );
unless ( $pod =~ /and $perl_vstring releases of perl/ ) {
warn "Adding $perl_vstring to the list of perl versions covered by Module::CoreList\n";
- $pod =~ s/(currently covers (?:.*?))\s*and (.*?) releases of perl/$1, $2 and $perl_vstring releases of perl/ism;
+ $pod =~ s/(currently\s+covers\s+(?:.*?))\s*and\s+(.*?)\s+releases\s+of\s+perl/$1, $2 and $perl_vstring releases of perl/ism;
}
write_corelist($pod,$pod_file);
@@ -266,6 +312,7 @@ sub write_corelist {
my $content = shift;
my $filename = shift;
open (my $clfh, ">", $filename);
+ binmode $clfh;
print $clfh $content;
close($clfh);
}
@@ -281,3 +328,69 @@ sub fetch_url {
return;
}
}
+
+sub make_corelist_delta {
+ my($version, $lines, $existing) = @_;
+ # Trust core perl, if someone does use a weird version number the worst that
+ # can happen is an extra delta entry for a module.
+ my %versions = map { $_ => eval $lines->{$_} } keys %$lines;
+
+ # Ensure we have the corelist data loaded from this perl checkout, not the system one.
+ require $corelist_file;
+
+ my %deltas;
+ # Search for the release with the least amount of changes (this avoids having
+ # to ask for where this perl was branched from).
+ for my $previous(reverse sort keys %$existing) {
+ # Shouldn't happen, but ensure we don't load weird data...
+ next if $previous > $version || $previous == $version && $previous eq $version;
+
+ my $delta = $deltas{$previous} = {};
+ ($delta->{changed}, $delta->{removed}) = calculate_delta(
+ $existing->{$previous}, \%versions);
+ }
+
+ my $smallest = (sort {
+ (keys($deltas{$a}->{changed}) + keys($deltas{$a}->{removed})) <=>
+ (keys($deltas{$b}->{changed})+ keys($deltas{$b}->{removed}))
+ } keys %deltas)[0];
+
+ return {
+ delta_from => $smallest,
+ changed => $deltas{$smallest}{changed},
+ removed => $deltas{$smallest}{removed},
+ }
+}
+
+# Calculate (changed, removed) modules between two versions.
+sub calculate_delta {
+ my($from, $to) = @_;
+ my(%changed, %removed);
+
+ for my $package(keys $from) {
+ if(not exists $to->{$package}) {
+ $removed{$package} = 1;
+ }
+ }
+
+ for my $package(keys $to) {
+ if(!exists $from->{$package}
+ || (defined $from->{$package} && !defined $to->{$package})
+ || (!defined $from->{$package} && defined $to->{$package})
+ || (defined $from->{$package} && defined $to->{$package}
+ && $from->{$package} ne $to->{$package})) {
+ $changed{$package} = $to->{$package};
+ }
+ }
+
+ return \%changed, \%removed;
+}
+
+sub quote {
+ my ($str) = @_;
+ # There's gotta be something already doing this properly that we could just
+ # reuse, but I can't quite thing of where to look for it, so I'm gonna do
+ # the simplest possible thing that'll allow me to release 5.17.7. --rafl
+ $str =~ s/'/\\'/g;
+ "'${str}'";
+}
diff --git a/gnu/usr.bin/perl/Porting/epigraphs.pod b/gnu/usr.bin/perl/Porting/epigraphs.pod
index 5fee947d7ab..dc20fb71424 100644
--- a/gnu/usr.bin/perl/Porting/epigraphs.pod
+++ b/gnu/usr.bin/perl/Porting/epigraphs.pod
@@ -17,24 +17,349 @@ Consult your favorite dictionary for details.
=head1 EPIGRAPHS
+=head2 v5.17.10 - Vernor Vinge, A Fire Upon The Deep
+
+L<Announced on 2013-03-22 by Max Maischein|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-03/msg00908.html>
+
+The archive informed the automation. Data structures were built, recipes
+followed. A local network was built, faster than anything on Straum, but surely
+safe. Nodes were added, modified by other recipes. The archive was a friendly
+place, with hierarchies of translation keys that led them along. Straum itself
+would be famous for this.
+
+Six months passed. A year.
+
+The omniscient view. Not self-aware really. Self-awareness is much over-rated.
+Most automation works far better as a part of a whole, and even if human-
+powerful, it does not need to self-know.
+
+=head2 v5.16.3 - Devo, Freedom of Choice
+
+L<Announced on 2013-03-11 by Ricardo Signes|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-03/msg00414.html>
+
+ A victim of collision on the open sea
+ Nobody ever said that life was free
+ Sink, swim, go down with the ship
+ But use your freedom of choice
+
+=head2 v5.14.4 - Arthur C. Clarke, The Nine Billion Names of God
+
+L<Announced on 2013-03-11 by Dave Mitchell|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-03/msg00393.html>
+
+He began to sing, but gave it up after a while. This vast arena of
+mountains, gleaming like whitely hooded ghosts on every side, did not
+encourage such ebullience. Presently George glanced at his watch.
+
+'Should be there in an hour,' he called back over his shoulder to
+Chuck. Then he added, in an afterthought: 'Wonder if the computer's
+finished its run. It was due about now.'
+
+Chuck didn't reply, so George swung round in his saddle. He could just
+see Chuck's face, a white oval turned towards the sky.
+
+'Look,' whispered Chuck, and George lifted his eyes to heaven. (There
+is always a last time for everything.)
+
+Overhead, without any fuss, the stars were going out.
+
+
+=head2 v5.17.9 - Douglas Adams, The Hitch-Hikers Guide to the Galaxy
+
+L<Announced on 2013-02-20 by Chris 'BinGOs' Williams|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-02/msg01146.html>
+
+Vogon poetry is of course, the third worst in the universe.
+The second worst is that of the Azgoths of Kria. During a
+recitation by their poet master Grunthos the Flatulent of
+his poem 'Ode To A Small Lump of Green Putty I Found In My
+Armpit One Midsummer Morning' four of his audience died
+of internal haemorrhaging and the president of the
+Mid-Galactic Arts Nobbling Council survived by gnawing one
+of his own legs off. Grunthos is reported to have been
+'disappointed' by the poem's reception, and was about to
+embark on a reading of his twelve-book epic entitled
+'My Favourite Bathtime Gurgles' when his own major intestine,
+in a desperate attempt to save life and civilisation,
+leapt straight up through his neck and throttled his brain.
+
+The very worst poetry of all perished along with its creator
+Paula Nancy Millstone Jennings of Greenbridge, Essex, England,
+in the destruction of the planet Earth.
+
+=head2 v5.17.8 - Iain Pears, An Instance of the Fingerpost
+
+L<Announced on 2013-01-20 by Aaron Crane|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00518.html>
+
+I must here declare myself as someone who does not for a moment subscribe to
+the general view that a willingness to perform oneself is detrimental to the
+dignity of experimental philosophy. There is, after all, a clear distinction
+between labour carried out for financial reward, and that done for the
+improvement of mankind: to put it another way, Lower as a philosopher was
+fully my equal even if he fell away when he became the practising physician.
+I think ridiculous of certain professors of anatomy, who find it beneath
+them to pick up the knife themselves, but merely comment while hired hands
+do the cutting. Sylvius would never have dreamt of sitting on a dais reading
+from an authority while others cut E<0x2014> when he taught, the knife was
+in his hand and the blood spattered his coat. Boyle also did not scruple to
+perform his own experiments and, on one occasion in my presence, even showed
+himself willing to anatomise a rat with his very own hands. Nor was he less
+a gentleman when he had finished. Indeed, in my opinion, his stature was all
+the greater, for in Boyle wealth, humility and curiosity mingled, and the
+world is richer for it.
+
+=head2 v5.17.7 - R. Scott Bakker, The Darkness That Comes Before
+
+L<Announced on 2012-12-18 by Dave Rolsky|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2012-12/msg00679.html>
+
+No thought.
+ The boy extinguished. Only a place.
+ This place.
+ Motionless, the Pragma sat facing him, the bare soles of his feet flat against each other, his dark frock scored by the shadows of deep folds, his eyes as empty as the child they watched.
+ A place without breath or sound. A place of sight alone. A place without before or after . . . almost.
+ For the first lances of sunlight careered over the glacier, as ponderous as great tree limbs in the wind. Shadows hardened and light gleamed across the Pragma’s ancient skull.
+ The old man’s left hand forsook his right sleeve, bearing a watery knife. And like a rope in water, his arm pitched outward, fingertips trailing across the blade as the knife swung languidly into the air, the sun skating and the dark shrine plunging across its mirror back . . .
+ And the place where Kellhus had once existed extended an open hand—the blond hairs like luminous filaments against tanned skin—and grasped the knife from stunned space.
+ The slap of pommel against palm triggered the collapse of place into little boy. The pale stench of his body. Breath, sound, and lurching thoughts.
+ I have been legion . . .
+ In his periphery, he could see the spike of the sun ease from the mountain. He felt drunk with exhaustion. In the recoil of his trance, it seemed all he could hear were the twigs arching and bobbing in the wind, pulled by leaves like a million sails no bigger than his hand. Cause everywhere, but amid countless minute happenings—diffuse, useless.
+ Now I understand.
+
+=head2 v5.17.6 - Kurt Vonnegut, The Sirens of Titan
+
+L<Announced on 2012-11-20 by Ricardo Signes|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2012-11/msg00760.html>
+
+Beatrice, looking like a gypsy queen, smoldered at the foot of a statue
+of a young physical student. At first glance, the laboratory-gowned
+scientist seemed to be a perfect servant of nothing but truth. At first
+glance, one was convinced that nothing but truth could please him as he
+beamed at his test tube. At first glance, one thought that he was as
+much above the beastly concerns of mankind as the harmoniums in the
+caves of Mercury. There, at first glance, was a young man without
+vanity, without lust — and one accepted at its face value the title Salo
+had engraved on the statue, "Discovery of Atomic Power."
+
+=head2 v5.12.5 - William Shakespeare, Measure for Measure
+
+Announced on 2012-11-10 by Dominic Hargreaves
+
+ Music oft hath such a charm
+ To make bad good, and good provoke to harm.
+
+=head2 v5.16.2 - Stanislaw Lem, The Cyberiad, Trurl's Machine
+
+L<Announced on 2012-11-01 by Ricardo Signes|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2012-11/msg00017.html>
+
+Once upon a time Trurl the constructor built an eight-story thinking
+machine. When it was finished, he gave it a coat of white paint,
+trimmed the edges in lavender, stepped back, squinted, then added a
+little curlicue on the front and, where one might imagine the forehead
+to be, a few pale orange polkadots. Extremely pleased with himself,
+he whistled an air and, as is always done on such occasions, asked it
+the ritual question of how much is two plus two.
+
+The machine stirred. Its tubes began to glow, its coils warmed up,
+current coursed through all its circuits like a waterfall,
+transformers hummed and throbbed, there was a clanging, and a
+chugging, and such an ungodly racket that Trurl began to think of
+adding a special mentation muffler. Meanwhile the machine labored on,
+as if it had been given the most difficult problem in the Universe to
+solve; the ground shook, the sand slid underfoot from the vibration,
+valves popped like champagne corks, the relays nearly gave way under
+the strain. At last, when Trurl had grown extremely impatient, the
+machine ground to a halt and said in a voice like thunder: SEVEN!
+
+=head2 v5.17.5 - Charles Stross, "Singularity Sky"
+
+L<Announced on 2012-10-20 by Florian Ragwitz|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2012-10/msg01007.html>
+
+Neither of them noticed the pair of polka-dotted knickers hiding
+behind the ventilation duct overhead, listening patiently and
+recording everything.
+
+=head2 v5.17.4 - Roald Dahl, "Little Red Riding Hood and the Wolf"
+
+L<Announced on 2012-09-20 by Florian Ragwitz|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2012-09/msg01226.html>
+
+ The small girl smiles. One eyelid flickers.
+ She whips a pistol from her knickers.
+ She aims it at the creature's head,
+ And bang bang bang, she shoots him dead.
+
+ A few weeks later, in the wood,
+ I came across Miss Riding Hood.
+ But what a change! No cloak of red,
+ No silly hood upon her head.
+ She said, "Hello, and do please note
+ My lovely furry wolfskin coat."
+
+=head2 v5.17.3 - Kris Ta-belle, "Smoked Perl Onion Soup"
+
+L<Announced on 2012-08-20 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2012/08/msg190775.html>
+
+Preparation:
+
+Cut 16 Perl Onions into quarters and put them in a grill smoker rack
+or a perforated pan over a BBQ using hickory wood chips or Special
+Blend Smoker Bisquettes. Smoke them for an hour and remove once they
+look golden brown.
+Let them cool and put them in the fridge (or freezer) until you are
+ready to create the soup.
+
+Ingredients:
+
+ 16 diced, pre-smoked, Perl Onions
+ 3 tbsp butter
+ 1/4 cup olive oil
+ 2 small garlic cloves, finely minced
+ 1 tsp salt
+ 1 tsp sugar
+ black pepper to taste
+ 1 cup red wine
+ 1/4 cup all purpose flour
+ 6 cups of beef or vegetable stock
+ 1 cup of thick cream (milk can be used as a substitute)
+
+Method:
+
+ Melt the butter in a pan and then add olive oil.
+ Heat and add the onions to caramelize over a medium-high heat for up
+ to half an hour.
+ Add the garlic, turn down the heat and cook for a further 5 minutes.
+ Add the salt, pepper and sugar.
+ Now add the red wine and reduce to a jam like consistency.
+ Add the flour, stir well and add the stock a cup at a time.
+ Simmer for 30 minutes, add the cream and heat to almost boiling.
+
+Enjoy.
+
+=head2 v5.17.2 - Terry Pratchet, "The Colour of Magic"
+
+L<Announced on 2012-07-21 by TonyC|http://www.nntp.perl.org/group/perl.perl5.porters/2012/07/msg189828.html>
+
+‘I knew it,’ said Rincewind. ‘We're in a strong magical field.’
+
+Twoflower and Hrun looked around the little hollow where they had made
+their noonday halt. Then they looked at each other.
+
+The horses were quietly cropping the rich grass by the stream. Yellow
+butterflies skittered among the bushes. There was a smell of thyme
+and a buzzing of bees. The wild pigs on the spit sizzled gently.
+
+Hrun shrugged and went back to oiling his biceps. They gleamed.
+
+‘Looks alright to me,’ he said.
+
+‘Try tossing a coin,’ said Rincewind.
+
+‘What?’
+
+‘Go on. Toss a coin.’
+
+‘Hokay,’ said Hrun. 'If that gives you any pleasure.’ He reached into
+his pouch and withdrew a handful of loose change plundered from a
+dozen realms. With some care he selected a Zchloty leaden
+quarter-iotum and balanced it on a purple thumbnail.
+
+‘You call,’ he said. ‘Heads or—’ he inspected the obverse with
+an air of intense concentration, ‘some sort of a fish with legs.’
+
+‘When it's in the air,’ said Rincewind. Hrun grinned and flicked his thumb.
+
+The iotum rose, spinning.
+
+‘Edge,’ said Rincewind, without looking at it.
+
+=head2 v5.17.1 - Rand Miller, "Myst: The Book of Ti'ana"
+
+L<Announced on 2012-06-20 by doy|http://www.nntp.perl.org/group/perl.perl5.porters/2012/06/msg188354.html>
+
+On their return from Ko'ah, Aitrus had shown her the Book, patiently
+taking her through page after page, and showing her how such an Age was
+"made." She had seen at once the differences between this archaic form
+and the ordinary written speech of the D'ni, noting how it was not
+merely more elaborate but more specific: a language of precise yet
+subtle descriptive power. Yet seeing was one thing, believing another.
+Given all the evidence, her rational mind still fought against accepting
+it.
+
+=head2 v5.17.0 - Charles Stross, "Singularity Sky"
+
+L<Announced on 2012-05-26 by Zefram|http://www.nntp.perl.org/group/perl.perl5.porters/2012/05/msg187214.html>
+
+`Welcome, comrades!' Burya opened his arms toward the soldier.
+`Yes it is true! With help from our allies of the Festival, the iron
+hand of the reactionary junta is about to be overthrown for all time!
+The new economy is being born; the marginal cost of production has
+been abolished, and from now on, if any item is produced once, it can
+be replicated infinitely. From each according to his imagination,
+to each according to his needs! Join us or better still, bring your
+fellow soldiers and workers to join us!'
+
+There was a sharp bang from the roof of the Corn Exchange, right at the
+climax of his impromptu speech; heads turned in alarm. Something had
+broken inside the spork factory and a stream of rainbow-hued plastic
+implements fountained toward the sky and clattered to the cobblestones
+on every side, like a harbinger of the postindustrial society to come.
+Workers and peasants alike stared in open-mouthed bewilderment at this
+astounding display of productivity, then bent to scrabble in the muck
+for the brightly colored sporks of revolution. A volley of shots rang
+out and Burya Rubenstein raised his hands, grinning wildly, to accept
+the salute of the soldiers from the Skull Hill garrison.
+
+=head2 v5.16.1 - Emerald Rose - Never Split The Party
+
+L<Announced on 2012-08-08 by Ricardo
+Signes|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2012-08/msg00307.html>
+
+ Don't you know? You never split the party
+ Clerics in the back to keep those fighters hale and hearty
+ The wizard in the middle, where he can shed some light
+ And you never let that damn thief out of sight…
+
+ -- Emerald Rose, Never Split The Party
+
+=head2 v5.16.1 RC1 - Tom Moldvay - Dungeons & Dragons
+
+L<Announced on 2012-08-03 by Ricardo
+Signes|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2012-08/msg00157.html>
+
+I was busy rescuing the captured maiden when the dragon showed up.
+Fifty feed of scaled terror glared down at us with smoldering red eyes.
+Tendrils of smoke drifted out from between fangs larger than daggers.
+The dragon blocked the only exit from the cave.
+
+â‹®
+
+I unwrapped the sword which the mysterious cleric had given me. The
+sword was golden-tinted steel. Its hilt was set with a rainbow
+collection of precious gems. I shouted my battle cry and charged
+
+My charge caught the dragon by surprise. Its titanic jaws snapped shut
+inches from my face. I swung the golden sword with both arms. The
+swordblade bit into the dragon's neck and continued through to the other
+side. With an earth-shaking crash, the dragon dropped dead at my feet.
+The magic sword had saved my life and ended the reign of the
+dragon-tyrant. The countryside was freed and I could return as a hero.
+
+ -- Tom Moldvay, Foreward to the Dungeons & Dragons Basic Rulebook
+
=head2 v5.16.0 - W.H. Auden - September 1, 1939
L<Announced on 2012-05-20 by Ricardo
Signes|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2012-05/msg00728.html>
- All I have is a voice
- To undo the folded lie,
- The romantic lie in the brain
- Of the sensual man-in-the-street
- And the lie of Authority
- Whose buildings grope the sky:
- There is no such thing as the State
- And no one exists alone;
- Hunger allows no choice
- To the citizen or the police;
- We must love one another or die.
+ All I have is a voice
+ To undo the folded lie,
+ The romantic lie in the brain
+ Of the sensual man-in-the-street
+ And the lie of Authority
+ Whose buildings grope the sky:
+ There is no such thing as the State
+ And no one exists alone;
+ Hunger allows no choice
+ To the citizen or the police;
+ We must love one another or die.
- -- W.H. Auden, September 1, 1939
+ -- W.H. Auden, September 1, 1939
=head2 v5.15.9 - Bob Dylan - Blowin' In The Wind
@@ -186,6 +511,25 @@ don't have enough dots to connect, and they end up with very linear solutions
without a broad perspective on the problem. The broader one's understanding of
the human experience, the better design we will have.
+=head2 v5.14.3 - William Shakespeare, As You Like It
+
+L<Announced on 2012-10-12 by Dominic Hargreaves|http://www.nntp.perl.org/group/perl.perl5.porters/2012/10/msg194057.html>
+
+ The poor world is almost six thousand years old, and in all
+ this time there was not any man died in his own person,
+ videlicit, in a love-cause. Troilus had his brains dashed
+ out with a Grecian club; yet he did what he could to die
+ before, and he is one of the patterns of love. Leander, he
+ would have lived many a fair year, though Hero had turned
+ nun, if it had not been for a hot midsummer night; for, good
+ youth, he went but forth to wash him in the Hellespont and
+ being taken with the cramp was drowned and the foolish
+ coroners of that age found it was 'Hero of Sestos.' But these
+ are all lies: men have died from time to time and worms have
+ eaten them, but not for love.
+
+ -- As You Like It, William Shakespeare
+
=head2 v5.14.2 - L<< Larry Wall, January 12, 1988 <992@devvax.JPL.NASA.GOV> |http://groups.google.com/group/comp.sources.d/msg/5d17fa68c250b9b2 >>
L<Announced on 2011-09-26 by Florian
@@ -232,21 +576,21 @@ Little|http://www.nntp.perl.org/group/perl.perl5.porters/2011/09/msg177427.html>
L<Announced on 2011-08-20 by Ricardo
Signes|http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2011-08/msg00694.html>
-True, it is strange to live no more on earth,
-no longer follow the folkways scarecely learned;
-not to give roses and other especially auspicious
-things the significance of a human future;
-to be no more what one was in infinitely anxious hands,
-and to put aside even one's name, like a broken plaything.
-Strange, to wish wishes no longer. Strange, to see
-all that was related fluttering so loosely in space.
-And being dead is hard, full of catching-up,
-so that finally one feels a little eternity.–
-But the living all make the mistake of too sharp discrimination.
-Often angels (it's said) don't know if they move
-among the quick or the dead. The eternal current
-hurtles all ages along with it forever
-through both realms and drowns their voices in both.
+ True, it is strange to live no more on earth,
+ no longer follow the folkways scarecely learned;
+ not to give roses and other especially auspicious
+ things the significance of a human future;
+ to be no more what one was in infinitely anxious hands,
+ and to put aside even one's name, like a broken plaything.
+ Strange, to wish wishes no longer. Strange, to see
+ all that was related fluttering so loosely in space.
+ And being dead is hard, full of catching-up,
+ so that finally one feels a little eternity.–
+ But the living all make the mistake of too sharp discrimination.
+ Often angels (it's said) don't know if they move
+ among the quick or the dead. The eternal current
+ hurtles all ages along with it forever
+ through both realms and drowns their voices in both.
-- Rainer Maria Rilke, Duino, The First Elegy
trans., C. F. MacIntyre
@@ -285,18 +629,18 @@ L<Announced on 2011-06-20 by David Golden|http://www.nntp.perl.org/group/perl.pe
L<Announced on 2011-06-20 by Leon Brocard|http://www.nntp.perl.org/group/perl.perl5.porters/2011/06/msg173725.html>
-You cannot eat breakfast all day,
-Nor is it the act of a sinner,
-When breakfast is taken away,
-To turn his attention to dinner;
-And it's not in the range of belief,
-To look upon him as a glutton,
-Who, when he is tired of beef,
-Determines to tackle the mutton.
-Ah! But this I am willing to say,
-If it will appease her sorrow,
-I'll marry this lady today,
-And I'll marry the other tomorrow!
+ You cannot eat breakfast all day,
+ Nor is it the act of a sinner,
+ When breakfast is taken away,
+ To turn his attention to dinner;
+ And it's not in the range of belief,
+ To look upon him as a glutton,
+ Who, when he is tired of beef,
+ Determines to tackle the mutton.
+ Ah! But this I am willing to say,
+ If it will appease her sorrow,
+ I'll marry this lady today,
+ And I'll marry the other tomorrow!
=head2 v5.14.1 - L<< Larry Wall, January 12, 1988 <992@devvax.JPL.NASA.GOV> |http://groups.google.com/group/comp.sources.d/msg/5d17fa68c250b9b2 >>
@@ -316,36 +660,36 @@ unreadable conglomeration of awk, sed, sh and C.
L<Announced on 2011-06-15 by Leon Brocard|http://www.nntp.perl.org/group/perl.perl5.porters/2011/06/msg173609.html>
-Now for sugar, -- nay, our plan
-Tolerates no work of man.
-Hurry, then, ye golden bees;
-Fetch your clearest honey, please,
-Garnered on a Yorkshire moor,
-While the last larks sing and soar,
-From the heather-blossoms sweet
-Where sea-breeze and sunshine meet,
-And the Augusts mask as Junes, --
-Eleanor makes macaroons!
+ Now for sugar, -- nay, our plan
+ Tolerates no work of man.
+ Hurry, then, ye golden bees;
+ Fetch your clearest honey, please,
+ Garnered on a Yorkshire moor,
+ While the last larks sing and soar,
+ From the heather-blossoms sweet
+ Where sea-breeze and sunshine meet,
+ And the Augusts mask as Junes, --
+ Eleanor makes macaroons!
=head2 v5.12.4-RC1 - Ogden Nash, "The Clean Plater"
L<Announced on 2011-06-08 by Leon Brocard|http://www.nntp.perl.org/group/perl.perl5.porters/2011/06/msg173352.html>
-Pheasant is pleasant, of course,
-And terrapin, too, is tasty,
-Lobster I freely endorse,
-In pate or patty or pasty.
-But there's nothing the matter with butter,
-And nothing the matter with jam,
-And the warmest greetings I utter
-To the ham and the yam and the clam.
-For they're food,
-All food,
-And I think very fondly of food.
-Through I'm broody at times
-When bothered by rhymes,
-I brood
-On food.
+ Pheasant is pleasant, of course,
+ And terrapin, too, is tasty,
+ Lobster I freely endorse,
+ In pate or patty or pasty.
+ But there's nothing the matter with butter,
+ And nothing the matter with jam,
+ And the warmest greetings I utter
+ To the ham and the yam and the clam.
+ For they're food,
+ All food,
+ And I think very fondly of food.
+ Through I'm broody at times
+ When bothered by rhymes,
+ I brood
+ On food.
=head2 v5.14.0 - L<< Larry Wall, January 12, 1988 <992@devvax.JPL.NASA.GOV> |http://groups.google.com/group/comp.sources.d/msg/5d17fa68c250b9b2 >>
@@ -491,20 +835,22 @@ L<Announced on 2010-11-20 by Chris 'BinGOs' Williams|http://www.nntp.perl.org/gr
[Neo sees a black cat walk by them, and then a similar black cat walk by them just like the first one]
-Neo: Whoa. Deja vu.
+ Neo: Whoa. Deja vu.
[Everyone freezes right in their tracks]
-Trinity: What did you just say?
-Neo: Nothing. Just had a little deja vu.
-Trinity: What did you see?
-Cypher: What happened?
-Neo: A black cat went past us, and then another that looked just like it.
-Trinity: How much like it? Was it the same cat?
-Neo: It might have been. I'm not sure.
-Morpheus: Switch! Apoc!
-Neo: What is it?
-Trinity: A deja vu is usually a glitch in the Matrix. It happens when they change something.
+ Trinity: What did you just say?
+ Neo: Nothing. Just had a little deja vu.
+ Trinity: What did you see?
+ Cypher: What happened?
+ Neo: A black cat went past us, and then another that looked just
+ like it.
+ Trinity: How much like it? Was it the same cat?
+ Neo: It might have been. I'm not sure.
+ Morpheus: Switch! Apoc!
+ Neo: What is it?
+ Trinity: A deja vu is usually a glitch in the Matrix. It happens when
+ they change something.
=head2 v5.13.6 - Haruki Murakami, "Kafka on the Shore"
@@ -913,7 +1259,7 @@ absorbed. Presently he said: "Say, Tom, let me whitewash a little."
=head2 v5.11.2 - Michael Marshall Smith, "Only Forward"
-L<Announced on 2009-11-20 by |http://www.nntp.perl.org/group/perl.perl5.porters/2009/11/msg153646.html>
+L<Announced on 2009-11-20 by Léon Brocard|http://www.nntp.perl.org/group/perl.perl5.porters/2009/11/msg153646.html>
The streets were pretty quiet, which was nice. They're always quiet here
at that time: you have to be wearing a black jacket to be out on the
diff --git a/gnu/usr.bin/perl/Porting/exec-bit.txt b/gnu/usr.bin/perl/Porting/exec-bit.txt
index 05a896762cf..e2f445b0952 100644
--- a/gnu/usr.bin/perl/Porting/exec-bit.txt
+++ b/gnu/usr.bin/perl/Porting/exec-bit.txt
@@ -45,7 +45,6 @@ Porting/config_h.pl
Porting/corecpan.pl
Porting/corelist-perldelta.pl
Porting/corelist.pl
-Porting/curliff.pl
Porting/expand-macro.pl
Porting/findrfuncs
Porting/makerel
@@ -56,7 +55,5 @@ Porting/perlhist_calculate.pl
Porting/sort_perldiag.pl
Porting/sync-with-cpan
Porting/valgrindpp.pl
-mpeix/nm
-mpeix/relink
Cross/generate_config_sh
Cross/warp
diff --git a/gnu/usr.bin/perl/Porting/leakfinder.pl b/gnu/usr.bin/perl/Porting/leakfinder.pl
new file mode 100644
index 00000000000..c22a58e4cfd
--- /dev/null
+++ b/gnu/usr.bin/perl/Porting/leakfinder.pl
@@ -0,0 +1,166 @@
+
+# WARNING! This script can be dangerous. It executes every line in every
+# file in the build directory and its subdirectories, so it could do some
+# harm if the line contains `rm *` or something similar.
+#
+# Run this as ./perl -Ilib Porting/leakfinder.pl after building perl.
+#
+# This is a quick non-portable hack that evaluates pieces of code in an
+# eval twice and sees whether the number of SVs goes up. Any lines that
+# leak are printed to STDOUT.
+#
+# push and unshift will give false positives. Some lines (listed at the
+# bottom) are explicitly skipped. Some patterns (at the beginning of the
+# inner for loop) are also skipped.
+
+use XS::APItest "sv_count";
+use Data::Dumper;
+$Data::Dumper::Useqq++;
+for(`find .`) {
+ warn $_;
+ chomp;
+ for(`cat \Q$_\E 2>/dev/null`) {
+ next if exists $exceptions{s/^\s+//r};
+ next if /rm -rf/; # Could be an example from perlsec, e.g.
+ # Creating one of these special blocks creates SVs, obviously
+ next if /(?:END|CHECK|INIT)\s*\{/;
+ next if /^[{(]?\s*(?:push|unshift|(?:\@r = )?splice|binmode|sleep)/;
+ next if /\bselect(?:\s*|\()[^()]+,/; # 4-arg select hangs
+ next if /use parent/;
+ my $q = s/[\\']/sprintf "\\%02x", ord $&/gore
+ =~ s/\0/'."\\0".'/grid;
+ $prog = <<end;
+ open oUt, ">&", STDOUT;
+ open STDOUT, ">/dev/null";
+ open STDIN, "</dev/null";
+ open STDERR, ">/dev/null";
+ \$unused_variable = '$q';
+ eval \$unused_variable while \$also_unused++ < 4;
+ print oUt sv_count, "\n";
+ eval \$unused_variable;
+ print oUt sv_count, "\n";
+end
+ open my $fh, "-|", $^X, "-Ilib", "-MXS::APItest=sv_count",
+ '-e', $prog or warn($!), next;
+ local $/;
+ $out = <$fh>;
+ close $fh;
+ @_ = split ' ', $out;
+ if (@_ == 2 && $_[1] > $_[0]) { print Dumper $_ }
+ }
+}
+
+BEGIN {
+ @exceptions = split /^/, <<'end';
+1 while 1;
+1 while some_condition_with_side_effects; */
+$a{buttons}[2*$a{default_button}] = [$a{buttons}[2*$a{default_button}]];
+$aliases{$code_point} = [ $aliases{$code_point} ];
+$aliases_maps->[$i] = [ $aliases_maps->[$i] ]
+$allow ? $hash{$acc} = $allow : push @list, $acc;
+/(a*(*MARK:a)b?)(*MARK:x)(*SKIP:a)(?{$count++; push @res,$1})(*FAIL)/g;
+$^A .= new version ~$_ for "\xce", v205, "\xcc";
+A rare race condition that would lead to L<sleep|perlfunc/sleep> taking more
+$args{include_dirs} = [ $args{include_dirs} ]
+$ARRAY[++$#ARRAY] = $value;
+@a = sort ($b, @a)
+$a = {x => $a};
+$base =~ /^[cwnv]/i or push @tmpl, "$base>", "$base<";
+$base =~ /^[nv]/i or push @formats, "$base>", "$base<";
+BEGIN { unshift(@INC, "./blib") }
+BEGIN { unshift @INC, "lib" }
+BEGIN { unshift(@INC, LIST) }
+binmode *STDERR, ":encoding(utf8)";
+binmode *STDOUT, ":encoding(utf8)";
+char const *file = __FILE__;
+$char++ while substr( $got, $char, 1 ) eq substr( $wanted, $char, 1 );
+CHECK { $main::phase++ }
+$config{$k} = [ $config{$k} ]
+const char *file = __FILE__;
+const char* file = __FILE__;
+$count4 = unshift (@array, 0);
+$count7 = unshift (@array, 3, 2, 1);
+$data = [ $data ];
+do { $tainted_value = shift @ENV_values } while(!$tainted_value || ref $tainted_value);
+do {$x[$x] = $x;} while ($x++) < 10;
+eval {CHECK {print ":c3"}};
+eval {INIT {print ":i2"}};
+eval { $proto->can($method) } || push @nok, $method;
+eval { push \@ISA, __FILE__ };
+eval 'v23: $counter++; goto v23 unless $counter == 2';
+eval 'v23 : $counter++; goto v23 unless $counter == 2';
+$formdata->{$key} = [ $formdata->{$key}, $value ];
+$func = $next{$func} until $pod{$func};
+$got_arrayref ? unshift(@{$args[0]}, $cmd) : unshift(@args, $cmd);
+$h{ []} = 123;
+{ $h[++$i] = $_ }
+High resolution alarm, sleep, gettimeofday, interval timers
+if (-d "$directory/$_") { push @ARGV, "$directory/$_" }
+$i = int($i/2) until defined $self->[$i/2];
+$invmap_ref->[$i] = [ $invmap_ref->[$i] ];
+is(push(@ary,4), 3);
+is(push(@ary,56), 4);
+is(unshift(@ary,12), 5);
+$i++ while $self->{ids}{"$t$i"}++;
+{ --$level; push @out, (" " x $level) . "</ul>"; }
+$mod_hash->{$k} = [ $mod_hash->{$k} ];
+$modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename
+my $deep1 = []; push @$deep1, $deep1;
+my $deep2 = []; push @$deep2, $deep2;
+my $nfound = select($_[0], $_[1], $_[2], $_[3]);
+my $nfound = select($_[0], $_[1], $_[2], $gran);
+my $n = unshift(@ary,5,6);
+my @result = splice @temp, $self, $offset, $length, @_;
+my @r = splice @a, 0, 1, "x", "y";
+$_ = {name=>$_};
+$n = push @a, "rec0", "rec1", "rec2";
+$n = push @a, "rec3", "rec4$:";
+$n = unshift @a, "rec0", "rec1", "rec2";
+$n = unshift @a, "rec3", "rec4$:";
+@$obj = ($meth, (bless [@$obj]), 1); # Avoid circular reference
+@old = splice(@h, 1, 2, qw(bananas just before));
+unlink <"$filename*">;
+package XS::APItest; require XSLoader; XSLoader::load()
+$pa = { -exitval => $pa };
+$pa = { -message => $pa };
+pop @lines while $lines[-1] eq "";
+pop @to while $#to and $to[$#to] == $to[$#to -1];
+pop(@$x); unshift(@q, $q);
+@prgs = (@prgs, $file, split "\n########\n", <$fh>) ;
+print "LA LA LA\n" while 1; # loops forever
+prog => 'use Config; CHECK { $Config{awk} }',
+$p->{share_dir} = { dist => [ $p->{share_dir} ] };
+$p->{share_dir} = { dist => $p->{share_dir} };
+-sleep
+$resp = [$resp]
+$r = eval q[ qr/$r(??{$x})/; ];
+$r = qr/$r(??{$x})/;
+s/a|/push @bar, 1/e;
+$self->{DIR} = [grep $_, split ":", $self->{DIR}];
+$share_dir->{dist} = [ $share_dir->{dist} ];
+s![^/+]*$!man!&&-d&&!$s{$_}++&&push@m,#_;END{print"@m"}'
+$spec = [$spec, $_[0]];
+*s = ~(*s);
+$stack[$i++] &= ~1;
+$step = [$step];
+sub CHECK {print ":check"}
+sub INIT {print ":init"}
+system("find . -type f -print | xargs chmod 0444");
+the while clause. */
+Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers
+*tmpl = ~*tmpl;
+*tmps = ~*tmps;
+until ($i) { }
+weaken($objs[@objs] = $h{$_} = []);
+weaken($objs[@objs] = $$h{$_} = []);
+while (1) { my $k; }
+while(1) { sleep(1); }
+while($foo--) { print("In thread $thread\n"); }
+"words" =~ /(word|word|word)(?{push @got, $1})s$/;
+"words" =~ /(word|word|word)(?{push @got,$1})s$/i;
+$x->[$j] -= $BASE if $car = (($x->[$j] += $car) >= $BASE) ? 1 : 0; $j++;
+$x->[scalar @$x] = 0; # avoid || 0 test inside loop
+$z = splice @a, 3, 1, "recordZ";
+end
+ @exceptions{@exceptions} = ();
+}
diff --git a/gnu/usr.bin/perl/Porting/makemeta b/gnu/usr.bin/perl/Porting/makemeta
index 90ce9bf075e..1c7016b0a7e 100644
--- a/gnu/usr.bin/perl/Porting/makemeta
+++ b/gnu/usr.bin/perl/Porting/makemeta
@@ -1,36 +1,81 @@
#!./perl -w
# this script must be run by the current perl to get perl's version right
#
-# Create a META.yml file in the current directory. Must be run from the
+# Create META.yml and META.json files in the current directory. Must be run from the
# root directory of a perl source tree.
use strict;
use warnings;
-use lib "Porting";
+use Getopt::Std;
-use File::Basename qw( dirname );
+my $opts = {
+ 'META.yml' => { version => '1.4' },
+ 'META.json' => { version => '2' },
+};
+
+my %switches;
+getopts('byj', \%switches);
+
+my @metafiles;
+if ( $switches{y} ) {
+ push @metafiles, 'META.yml';
+}
+elsif ( $switches{j} ) {
+ push @metafiles, 'META.json';
+}
+else {
+ push @metafiles, keys %$opts;
+}
+
+my ($vers, $stat ) = _determine_status();
+
+my $distmeta = {
+ 'version' => $vers,
+ 'name' => 'perl',
+ 'author' => [
+ 'perl5-porters@perl.org'
+ ],
+ 'license' => [
+ 'perl_5'
+ ],
+ 'abstract' => 'The Perl 5 language interpreter',
+ 'release_status' => $stat,
+ 'dynamic_config' => 1,
+ 'resources' => {
+ 'repository' => {
+ 'url' => 'http://perl5.git.perl.org/'
+ },
+ 'homepage' => 'http://www.perl.org/',
+ 'bugtracker' => {
+ 'web' => 'http://rt.perl.org/perlbug/'
+ },
+ 'license' => [
+ 'http://dev.perl.org/licenses/'
+ ],
+ },
+};
+use lib "Porting";
+use File::Basename qw( dirname );
+use CPAN::Meta;
BEGIN {
# Get function prototypes
require 'regen/regen_lib.pl';
}
-
-my $file = "META.yml";
-
use Maintainers qw(%Modules get_module_files get_module_pat);
my @CPAN = grep { $Modules{$_}{CPAN} } keys %Modules;
my @files = ('autodoc.pl', 'lib/unicore/mktables', 'TestInit.pm',
- 'Porting/Maintainers.pm', 'Porting/perldelta_template.pod',
- map { get_module_files($_) } @CPAN);
-my @dirs = ('cpan', 'win32', grep { -d $_ && $_ !~ /^cpan/ } map { get_module_pat($_) } @CPAN);
+ 'Porting/Maintainers.pm', 'Porting/perldelta_template.pod',
+ map { get_module_files($_) } @CPAN);
+my @dirs = ('cpan', 'win32', 'mad', grep { -d $_ && $_ !~ /^cpan/ } map { get_module_pat($_) } @CPAN);
my %dirs;
@dirs{@dirs} = ();
-@files = map { " - $_" }
+@files =
grep {
my $d = $_;
my $previous_d = '';
@@ -42,34 +87,55 @@ my %dirs;
# if $d is "." it means we tried every parent dir of the file and none
# of them were in the private list
-
+
$d eq "." || $d eq $previous_d;
}
sort { lc $a cmp lc $b } @files;
-@dirs = map { " - $_" } sort { lc $a cmp lc $b } @dirs;
-
-my $fh = open_new($file);
-
-local $" = "\n";
-print $fh <<"EOI";
-name: perl
-version: $]
-abstract: The Perl 5 language interpreter
-author: perl5-porters\@perl.org
-license: perl
-resources:
- homepage: http://www.perl.org/
- bugtracker: http://rt.perl.org/perlbug/
- license: http://dev.perl.org/licenses/
- repository: http://perl5.git.perl.org/
-distribution_type: core
-generated_by: $0
-no_index:
- directory:
-@dirs
- file:
-@files
-EOI
-
-close_and_rename($fh);
+@dirs = sort { lc $a cmp lc $b } @dirs;
+
+$distmeta->{no_index}->{file} = \@files;
+$distmeta->{no_index}->{directory} = \@dirs;
+
+my $meta = CPAN::Meta->create( $distmeta );
+foreach my $file ( @metafiles ) {
+ my $fh = open_new($file);
+ print $fh $meta->as_string( $opts->{$file} );
+ close_and_rename($fh);
+}
+exit 0;
+
+sub _determine_status {
+ my $patchlevel_h = 'patchlevel.h';
+ return unless -e $patchlevel_h;
+ my $status = '';
+ my $version = '';
+ {
+ my %defines;
+ open my $fh, '<', $patchlevel_h;
+ my @vers;
+ while (<$fh>) {
+ chomp;
+ next unless m!^#define! or m!!;
+ if ( m!^#define! ) {
+ my ($foo,$bar) = ( split /\s+/ )[1,2];
+ $defines{$foo} = $bar;
+ }
+ elsif ( m!\"RC\d+\"! ) {
+ $status = 'testing';
+ last;
+ }
+ }
+ unless ( $status ) {
+ $status = $defines{PERL_VERSION} % 2 ? 'unstable' : 'stable';
+ }
+ if ( my @wotsits = grep { defined $defines{$_} } qw(PERL_REVISION PERL_VERSION PERL_SUBVERSION) ) {
+ $version = sprintf '%d.%03d%03d', map { $defines{$_} } @wotsits;
+ }
+ else {
+ # Well, you never know
+ $version = sprintf '5.%03d_%02d', map { $defines{$_} } qw(PATCHLEVEL SUBVERSION);
+ }
+ }
+ return ( $version, $status );
+}
diff --git a/gnu/usr.bin/perl/Porting/manisort b/gnu/usr.bin/perl/Porting/manisort
index 1c02120573d..6cf7d927177 100644
--- a/gnu/usr.bin/perl/Porting/manisort
+++ b/gnu/usr.bin/perl/Porting/manisort
@@ -50,6 +50,7 @@ for (my $ii = 0; $ii < $#manifest; $ii++) {
if (defined($outfile)) {
open(my $OUT, '>', $outfile)
or die("Can't open output file '$outfile': $!");
+ binmode($OUT);
print($OUT join("\n", @sorted), "\n");
close($OUT) or die($!);
}
diff --git a/gnu/usr.bin/perl/Porting/new-perldelta.pl b/gnu/usr.bin/perl/Porting/new-perldelta.pl
index dc4c1361095..7aa605e66c4 100644
--- a/gnu/usr.bin/perl/Porting/new-perldelta.pl
+++ b/gnu/usr.bin/perl/Porting/new-perldelta.pl
@@ -88,7 +88,7 @@ my $pod_master = slurp_or_die($filename);
$pod_master =~ s{^(\s*perl5)($was_major$was_minor)(delta\s+Perl changes in version )(5\.\d+\.\d+)(.*)}
{$1 . $old_major . $old_minor .$3 . "5.$old_major.$old_minor" . $5 . "\n" .
"$1$2$3$4$5"}me
- or die "Can't find perldelta line (for perl5$was_major${was_minor}delta) in $filename";
+ or warn "Couldn't find perldelta line (for perl5$was_major${was_minor}delta) in $filename";
write_or_die($filename, $pod_master);
git_add_modified($filename);
diff --git a/gnu/usr.bin/perl/Porting/perldelta_template.pod b/gnu/usr.bin/perl/Porting/perldelta_template.pod
index 659805e0e7f..5916b7c17d8 100644
--- a/gnu/usr.bin/perl/Porting/perldelta_template.pod
+++ b/gnu/usr.bin/perl/Porting/perldelta_template.pod
@@ -2,19 +2,18 @@
=head1 NAME
-[ this is a template for a new perldelta file. Any text flagged as
-XXX needs to be processed before release. ]
+[ this is a template for a new perldelta file. Any text flagged as XXX needs
+to be processed before release. ]
perldelta - what is new for perl v5.tXXX.cXXX
=head1 DESCRIPTION
-This document describes differences between the 5.sXXX.bXXX release and
-the 5.tXXX.cXXX release.
+This document describes differences between the 5.sXXX.bXXX release and the 5.tXXX.cXXX
+release.
If you are upgrading from an earlier release such as 5.rXXX.aXXX, first read
-L<perl5XXXdelta>, which describes differences between 5.rXXX.aXXX and
-5.sXXX.bXXX.
+L<perl5XXXdelta>, which describes differences between 5.rXXX.aXXX and 5.sXXX.bXXX.
=head1 Notice
@@ -22,8 +21,8 @@ XXX Any important notices here
=head1 Core Enhancements
-XXX New core language features go here. Summarise user-visible core language
-enhancements. Particularly prominent performance optimisations could go
+XXX New core language features go here. Summarize user-visible core language
+enhancements. Particularly prominent performance optimisations could go
here, but most should go in the L</Performance Enhancements> section.
[ List each enhancement as a =head2 entry ]
@@ -49,15 +48,37 @@ XXX For a release on a stable branch, this section aspires to be:
=head1 Deprecations
XXX Any deprecated features, syntax, modules etc. should be listed here.
-In particular, deprecated modules should be listed here even if they are
-listed as an updated module in the L</Modules and Pragmata> section.
-[ List each deprecation as a =head2 entry ]
+=head2 Module removals
+
+XXX Remove this section if inapplicable.
+
+The following modules will be removed from the core distribution in a future
+release, and will at that time need to be installed from CPAN. Distributions
+on CPAN which require these modules will need to list them as prerequisites.
+
+The core versions of these modules will now issue C<"deprecated">-category
+warnings to alert you to this fact. To silence these deprecation warnings,
+install the modules in question from CPAN.
+
+Note that these are (with rare exceptions) fine modules that you are encouraged
+to continue to use. Their disinclusion from core primarily hinges on their
+necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
+not usually on concerns over their design.
+
+=over
+
+XXX Note that deprecated modules should be listed here even if they are listed
+as an updated module in the L</Modules and Pragmata> section.
+
+=back
+
+[ List each other deprecation as a =head2 entry ]
=head1 Performance Enhancements
-XXX Changes which enhance performance without changing behaviour go here. There
-may well be none in a stable release.
+XXX Changes which enhance performance without changing behaviour go here.
+There may well be none in a stable release.
[ List each enhancement as a =item entry ]
@@ -97,7 +118,7 @@ XXX
=item *
-L<XXX> has been upgraded from version 0.69 to version 0.70.
+L<XXX> has been upgraded from version A.xx to B.yy.
=back
@@ -146,20 +167,13 @@ The following additions or changes have been made to diagnostic output,
including warnings and fatal error messages. For the complete list of
diagnostic messages, see L<perldiag>.
-XXX New or changed warnings emitted by the core's C<C> code go here. Also
+XXX New or changed warnings emitted by the core's C<C> code go here. Also
include any changes in L<perldiag> that reconcile it to the C<C> code.
-[ Within each section, list entries as a =item entry that links to perldiag,
- e.g.
-
- =item *
-
- L<Invalid version object|perldiag/"Invalid version object">
-]
-
=head2 New Diagnostics
-XXX Newly added diagnostic messages go here
+XXX Newly added diagnostic messages go under here, separated into New Errors
+and New Warnings
=head3 New Errors
@@ -195,8 +209,8 @@ XXX Describe change here
=head1 Utility Changes
-XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
-here. Most of these are built within the directories F<utils> and F<x2p>.
+XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
+Most of these are built within the directories F<utils> and F<x2p>.
[ List utility changes as a =head3 entry for each utility and =item
entries for each change
@@ -234,7 +248,7 @@ XXX
XXX Any significant changes to the testing of a freshly built perl should be
listed here. Changes which create B<new> files in F<t/> go here as do any
large changes to the testing harness (e.g. when parallel testing was added).
-Changes to existing files in F<t/> aren't worth summarising, although the bugs
+Changes to existing files in F<t/> aren't worth summarizing, although the bugs
that they represent may be covered elsewhere.
[ List each test improvement as a =item entry ]
@@ -257,7 +271,7 @@ changes as paragraphs below it. ]
=head2 New Platforms
XXX List any platforms that this version of perl compiles on, that previous
-versions did not. These will either be enabled by new files in the F<hints/>
+versions did not. These will either be enabled by new files in the F<hints/>
directories, or new subdirectories and F<README> files at the top level of the
source tree.
@@ -283,7 +297,7 @@ XXX
=head2 Platform-Specific Notes
-XXX List any changes for specific platforms. This could include configuration
+XXX List any changes for specific platforms. This could include configuration
and compilation changes or changes in portability/compatibility. However,
changes within modules for platforms should generally be listed in the
L</Modules and Pragmata> section.
@@ -298,9 +312,9 @@ XXX
=head1 Internal Changes
-XXX Changes which affect the interface available to C<XS> code go here.
-Other significant internal changes for future core maintainers should
-be noted as well.
+XXX Changes which affect the interface available to C<XS> code go here. Other
+significant internal changes for future core maintainers should be noted as
+well.
[ List each change as a =item entry ]
@@ -314,9 +328,8 @@ XXX
=head1 Selected Bug Fixes
-XXX Important bug fixes in the core language are summarised here.
-Bug fixes in files in F<ext/> and F<lib/> are best summarised in
-L</Modules and Pragmata>.
+XXX Important bug fixes in the core language are summarized here. Bug fixes in
+files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
[ List each fix as a =item entry ]
@@ -330,12 +343,9 @@ XXX
=head1 Known Problems
-XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
-tests that had to be C<TODO>ed for the release would be noted here, unless
-they were specific to a particular platform (see below).
-
-This is a list of some significant unfixed bugs, which are regressions
-from either 5.XXX.XXX or 5.XXX.XXX.
+XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
+tests that had to be C<TODO>ed for the release would be noted here. Unfixed
+platform specific bugs also go here.
[ List each fix as a =item entry ]
@@ -356,36 +366,34 @@ here.
XXX Generate this with:
- perl Porting/acknowledgements.pl v5.16.3..HEAD
+ perl Porting/acknowledgements.pl v5.18.2..HEAD
=head1 Reporting Bugs
-If you find what you think is a bug, you might check the articles
-recently posted to the comp.lang.perl.misc newsgroup and the perl
-bug database at http://rt.perl.org/perlbug/ . There may also be
-information at http://www.perl.org/ , the Perl Home Page.
+If you find what you think is a bug, you might check the articles recently
+posted to the comp.lang.perl.misc newsgroup and the perl bug database at
+http://rt.perl.org/perlbug/ . There may also be information at
+http://www.perl.org/ , the Perl Home Page.
-If you believe you have an unreported bug, please run the L<perlbug>
-program included with your release. Be sure to trim your bug down
-to a tiny but sufficient test case. Your bug report, along with the
-output of C<perl -V>, will be sent off to perlbug@perl.org to be
-analysed by the Perl porting team.
+If you believe you have an unreported bug, please run the L<perlbug> program
+included with your release. Be sure to trim your bug down to a tiny but
+sufficient test case. Your bug report, along with the output of C<perl -V>,
+will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send
-it to perl5-security-report@perl.org. This points to a closed subscription
-unarchived mailing list, which includes
-all the core committers, who will be able
-to help assess the impact of issues, figure out a resolution, and help
+inappropriate to send to a publicly archived mailing list, then please send it
+to perl5-security-report@perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who will be
+able to help assess the impact of issues, figure out a resolution, and help
co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported. Please only use this address for
-security issues in the Perl core, not for modules independently
-distributed on CPAN.
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently distributed on
+CPAN.
=head1 SEE ALSO
-The F<Changes> file for an explanation of how to view exhaustive details
-on what changed.
+The F<Changes> file for an explanation of how to view exhaustive details on
+what changed.
The F<INSTALL> file for how to build Perl.
diff --git a/gnu/usr.bin/perl/Porting/perlhist_calculate.pl b/gnu/usr.bin/perl/Porting/perlhist_calculate.pl
index b03fef480d0..0d739919939 100644
--- a/gnu/usr.bin/perl/Porting/perlhist_calculate.pl
+++ b/gnu/usr.bin/perl/Porting/perlhist_calculate.pl
@@ -9,6 +9,12 @@ use File::Find;
use warnings;
use strict;
+sub emit {
+ my $H = '%-9s:';
+ my $D = '%6d';
+ printf "$H $D $D\n", @_;
+}
+
sub calc_core {
my @core;
@@ -24,7 +30,7 @@ sub calc_core {
my $corenumber = scalar @core;
$coresize = int $coresize;
- say "core: $coresize $corenumber";
+ return $coresize, $corenumber;
}
sub calc_lib {
@@ -40,7 +46,7 @@ sub calc_lib {
find(\&wanted_lib, 'lib');
$libsize = int $libsize;
- say "lib: $libsize $libnumber";
+ return $libsize, $libnumber;
}
sub calc_ext {
@@ -61,7 +67,7 @@ sub calc_ext {
$extsize = int $extsize;
- say "ext: $extsize $extnumber";
+ return $extsize, $extnumber;
}
sub calc_t {
@@ -78,7 +84,7 @@ sub calc_t {
$tsize = int $tsize;
- say "t: $tsize $tnumber";
+ return $tsize, $tnumber;
}
sub calc_doc {
@@ -105,7 +111,7 @@ sub calc_doc {
$docsize = int $docsize;
- say "doc: $docsize $docnumber";
+ return $docsize, $docnumber;
}
sub calc_dir {
@@ -125,23 +131,19 @@ sub calc_dir {
$dirsize = int $dirsize;
- say "$dir: $dirsize $dirnumber";
+ emit $dir => $dirsize, $dirnumber;
}
sub calc_longtable {
- print "\n\nTable\n";
-
- foreach my $dir (qw(beos)) {
- calc_dir($dir);
- }
+ print "\n\nTable:\n";
my $configure_size = int ((-s 'Configure') / 1000);
- say "Configure: $configure_size 1";
+ emit Configure => $configure_size, 1;
- foreach my $dir (qw(Cross djgpp emacs epoc h2pl hints mad mint mpeix NetWare os2 plan9 Porting qnx symbian utils uts vmesa vms vos win32 x2p)) {
+ foreach my $dir (qw(Cross djgpp emacs h2pl hints mad NetWare os2 plan9 Porting qnx symbian utils vms vos win32 x2p)) {
calc_dir($dir);
}
}
@@ -149,11 +151,15 @@ sub calc_longtable {
say "Selected release sizes for perl tarball:";
print "\n";
-calc_core();
-calc_lib();
-calc_ext();
-calc_t();
-calc_doc();
+ #5.16.0 5562 109 1077 80 20504 2702 8750 2375 4815 152
+
+sub calc_line {
+ printf " %-12s %6s %3s %6s %3s %6s %4s %6s %4s %6s %3s\n",
+ '5.xx.0', calc_core(), calc_lib(), calc_ext(), calc_t(), calc_doc();
+}
+
+calc_line();
+
calc_longtable();
exit;
diff --git a/gnu/usr.bin/perl/Porting/pod_lib.pl b/gnu/usr.bin/perl/Porting/pod_lib.pl
index b257c66ed78..5d923ba9aca 100644
--- a/gnu/usr.bin/perl/Porting/pod_lib.pl
+++ b/gnu/usr.bin/perl/Porting/pod_lib.pl
@@ -4,8 +4,63 @@ use strict;
use Digest::MD5 'md5';
use File::Find;
-# make it clearer when we haven't run to completion, as we can be quite
-# noisy when things are working ok
+=head1 NAME
+
+Porting/pod_lib.pl - functions for building and installing POD
+
+=head1 SYNOPSIS
+
+ require './Porting/pod_lib.pl';
+
+=cut
+
+=head1 DESCRIPTION
+
+This program, when C<require>d into other programs in the Perl 5 core
+distribution, provides functions useful during building and, secondarily,
+testing.
+
+As of this writing, the functions in this program are used in these other
+programs:
+
+ installman
+ installperl
+ pod/buildtoc
+ pod/perl.pod
+ Porting/new-perldelta.pl
+ Porting/pod_rules.pl
+
+Note: Since these functions are used during the Perl build process, they must
+work with F<miniperl>. That necessarily implies that these functions must not
+rely on XS modules, either directly or indirectly (e.g., C<autodie>).
+
+=head1 SUBROUTINES
+
+=head2 C<my_die()>
+
+=over 4
+
+=item * Purpose
+
+Exit from a process with an error code and a message.
+
+=item * Arguments
+
+List of arguments to be passed with the error message. Example:
+
+ close $fh or my_die("close 'utils.lst': $!");
+
+=item * Return Value
+
+Exit code C<255>.
+
+=item * Comment
+
+Prints C<ABORTED> to STDERR.
+
+=back
+
+=cut
sub my_die {
print STDERR "$0: ", @_;
@@ -14,12 +69,56 @@ sub my_die {
exit 255;
}
+=head2 C<open_or_die()>
+
+=over 4
+
+=item * Purpose
+
+Opens a file or fails if it cannot.
+
+=item * Arguments
+
+String holding filename to be opened. Example:
+
+ $fh = open_or_die('utils.lst');
+
+=item * Return Value
+
+Handle to opened file.
+
+=back
+
+=cut
+
sub open_or_die {
my $filename = shift;
open my $fh, '<', $filename or my_die "Can't open $filename: $!";
return $fh;
}
+=head2 C<slurp_or_die()>
+
+=over 4
+
+=item * Purpose
+
+Read the contents of a file into memory as a single string.
+
+=item * Arguments
+
+String holding name of file to be read into memory.
+
+ $olddelta = slurp_or_die('pod/perldelta.pod');
+
+=item * Return Value
+
+String holding contents of file.
+
+=back
+
+=cut
+
sub slurp_or_die {
my $filename = shift;
my $fh = open_or_die($filename);
@@ -30,6 +129,29 @@ sub slurp_or_die {
return $contents;
}
+=head2 C<write_or_die()>
+
+=over 4
+
+=item * Purpose
+
+Write out a string to a file.
+
+=item * Arguments
+
+List of two arguments: (i) String holding name of file to be written to; (ii)
+String holding contents to be written.
+
+ write_or_die($olddeltaname, $olddelta);
+
+=item * Return Value
+
+Implicitly returns true value upon success.
+
+=back
+
+=cut
+
sub write_or_die {
my ($filename, $contents) = @_;
open my $fh, '>', $filename or die "Can't open $filename for writing: $!";
@@ -38,6 +160,48 @@ sub write_or_die {
close $fh or die "Can't close $filename: $!";
}
+=head2 C<pods_to_install()>
+
+=over 4
+
+=item * Purpose
+
+Create a lookup table holding information about PODs to be installed.
+
+=item * Arguments
+
+None.
+
+=item * Return Value
+
+Reference to a hash with a structure like this:
+
+ $found = {
+ 'MODULE' => {
+ 'CPAN::Bundle' => 'lib/CPAN/Bundle.pm',
+ 'Locale::Codes::Script_Retired' =>
+ 'lib/Locale/Codes/Script_Retired.pm',
+ 'Pod::Simple::DumpAsText' =>
+ 'lib/Pod/Simple/DumpAsText.pm',
+ # ...
+ 'Locale::Codes::LangVar' =>
+ 'lib/Locale/Codes/LangVar.pod'
+ },
+ 'PRAGMA' => {
+ 'fields' => 'lib/fields.pm',
+ 'subs' => 'lib/subs.pm',
+ # ...
+ },
+
+=item * Comment
+
+Broadly speaking, the function assembles a list of all F<.pm> and F<.pod>
+files in the distribution and then excludes certain files from installation.
+
+=back
+
+=cut
+
sub pods_to_install {
# manpages not to be installed
my %do_not_install = map { ($_ => 1) }
@@ -225,6 +389,60 @@ sub __prime_state {
if keys %flag_set;
}
+=head2 C<get_pod_metadata()>
+
+=over 4
+
+=item * Purpose
+
+=item * Arguments
+
+List of one or more arguments.
+
+=over 4
+
+=item * Boolean true or false
+
+=item * Reference to a suboutine.
+
+=item * Various other arguments.
+
+=back
+
+Example:
+
+ $state = get_pod_metadata(
+ 0, sub { warn @_ if @_ }, 'pod/perltoc.pod');
+
+ get_pod_metadata(
+ 1, sub { warn @_ if @_ }, values %Build);
+
+=item * Return Value
+
+Hash reference; each element provides either a list or a lookup table for
+information about various types of POD files.
+
+ 'aux' => [ # utility programs like
+ 'h2xs' and 'perlbug' ]
+ 'generated' => { # lookup table for generated POD files
+ like 'perlapi.pod' }
+ 'ignore' => { # lookup table for files to be ignored }
+ 'pods' => { # lookup table in "name" =>
+ "short description" format }
+ 'readmes' => { # lookup table for OS-specific
+ and other READMEs }
+ 'delta_version' => [ # major version number, minor no.,
+ patch no. ]
+ 'delta_target' => 'perl<Mmmpp>delta.pod',
+ 'master' => [ # list holding entries for files callable
+ by 'perldoc' ]
+ 'copies' => { # patch version perldelta =>
+ minor version perldelta }
+
+=back
+
+=cut
+
sub get_pod_metadata {
# Do we expect to find generated pods on disk?
my $permit_missing_generated = shift;
diff --git a/gnu/usr.bin/perl/Porting/pod_rules.pl b/gnu/usr.bin/perl/Porting/pod_rules.pl
index 838601597e2..f0b72ed41bd 100644
--- a/gnu/usr.bin/perl/Porting/pod_rules.pl
+++ b/gnu/usr.bin/perl/Porting/pod_rules.pl
@@ -204,8 +204,12 @@ sub do_unix {
# pod/perl511delta.pod: pod/perldelta.pod
# cd pod && $(LNS) perldelta.pod perl511delta.pod
+ # although it seems that HP-UX make gets confused, always tried to
+ # regenerate the symlink, and then the ln -s fails, as the target exists.
+
$makefile_SH =~ s!(
pod/perl[a-z0-9_]+\.pod: pod/perl[a-z0-9_]+\.pod
+ \$\(RMS\) pod/perl[a-z0-9_]+\.pod
\$\(LNS\) perl[a-z0-9_]+\.pod pod/perl[a-z0-9_]+\.pod
)+!\0!gm;
@@ -213,6 +217,7 @@ pod/perl[a-z0-9_]+\.pod: pod/perl[a-z0-9_]+\.pod
my @copy_rules = map "
pod/$_: pod/$state->{copies}{$_}
+ \$(RMS) pod/$_
\$(LNS) $state->{copies}{$_} pod/$_
", keys %{$state->{copies}};
diff --git a/gnu/usr.bin/perl/Porting/release_announcement_template.txt b/gnu/usr.bin/perl/Porting/release_announcement_template.txt
index 21f395e2d34..3536935861e 100644
--- a/gnu/usr.bin/perl/Porting/release_announcement_template.txt
+++ b/gnu/usr.bin/perl/Porting/release_announcement_template.txt
@@ -2,25 +2,26 @@
-- [ATTRIBUTION]
-We are [SYNONYM FOR 'pleased'] to announce Perl [VERSION], the [N-TH]
-development release of Perl 5.15.
+We are [SYNONYM FOR 'pleased'] to announce version [VERSION.SUBVERSION],
+the [N-TH] development release of version 17 of Perl 5.
-You will soon be able to download Perl [VERSION] from your favorite CPAN
-mirror or find it at:
+You will soon be able to download Perl 5.[VERSION.SUBVERSION] from your
+favorite CPAN mirror or find it at:
-https://metacpan.org/release/[AUTHOR]/perl-[VERSION]/
+https://metacpan.org/release/[AUTHOR]/perl-5.[VERSION.SUBVERSION]/
SHA1 digests for this release are:
- [TAR.GZ SHA1] perl-[VERSION].tar.gz
- [TAR.BZ2 SHA1] perl-[VERSION].tar.bz2
+ [TAR.GZ SHA1] perl-5.[VERSION.SUBVERSION].tar.gz
+ [TAR.BZ2 SHA1] perl-5.[VERSION.SUBVERSION].tar.bz2
You can find a full list of changes in the file "perldelta.pod" located in
the "pod" directory inside the release and on the web.
[ACKNOWLEDGEMENTS SECTION FROM PERLDELTA]
-We expect to release Perl [NEXT BLEAD VERSION] on [FUTURE DATE]. The next
-major stable release of Perl 5, version 5.16.3, should appear in May 2012.
+We expect to release version [NEXT BLEAD VERSION.SUBVERSION] on [FUTURE
+DATE]. The next major stable release of Perl 5, version 18.0, should
+appear in May 2013.
[YOUR SALUATION HERE]
diff --git a/gnu/usr.bin/perl/Porting/release_managers_guide.pod b/gnu/usr.bin/perl/Porting/release_managers_guide.pod
index 67cd0017981..466a5c7613c 100644
--- a/gnu/usr.bin/perl/Porting/release_managers_guide.pod
+++ b/gnu/usr.bin/perl/Porting/release_managers_guide.pod
@@ -35,8 +35,8 @@ pumpking. Blead releases from 5.11.0 forward are made each month on the
20th by a non-pumpking release engineer. The release engineer roster
and schedule can be found in Porting/release_schedule.pod.
-This document both helps as a check-list for the release engineer
-and is a base for ideas on how the various tasks could be automated
+This document both helps as a check-list for the release engineer
+and is a base for ideas on how the various tasks could be automated
or distributed.
The checklist of a typical release cycle is as follows:
@@ -65,7 +65,7 @@ The checklist of a typical release cycle is as follows:
Some of the tasks described below apply to all four types of
release of Perl. (blead, RC, final release of maint, final
release of blead). Some of these tasks apply only to a subset
-of these release types. If a step does not apply to a given
+of these release types. If a step does not apply to a given
type of release, you will see a notation to that effect at
the beginning of the step.
@@ -96,6 +96,13 @@ changes since.
It's essentially the same procedure as for making a release candidate, but
with a whole bunch of extra post-release steps.
+Note that for a maint release there are two versions of this guide to
+consider: the one in the maint branch, and the one in blead. Which one to
+use is a fine judgement. The blead one will be most up-to-date, while
+it might describe some steps or new tools that aren't applicable to older
+maint branches. It is probably best to review both versions of this
+document, but to most closely follow the steps in the maint version.
+
=item A blead point release (BLEAD-POINT)
A release with an odd version number, such as 5.15.0 or 5.15.1.
@@ -184,26 +191,33 @@ but all I<must> be done in the run up to a release.
=head3 dual-life CPAN module synchronisation
-Ensure that dual-life CPAN modules are synchronised with CPAN. Basically,
-run the following:
+To see which core distro versions differ from the current CPAN versions:
- $ ./perl -Ilib Porting/core-cpan-diff -a -o /tmp/corediffs
+ $ ./perl -Ilib Porting/core-cpan-diff -x -a
-to see any inconsistencies between the core and CPAN versions of distros,
-then fix the core, or cajole CPAN authors as appropriate. See also the
-C<-d> and C<-v> options for more detail. You'll probably want to use the
-C<-c cachedir> option to avoid repeated CPAN downloads and may want to
-use C<-m file:///mirror/path> if you made a local CPAN mirror.
+Passing C<-u cpan> (and maybe C<-u undef>) will probably be helpful, since
+those are the only types of distributions that you can actually affect as a
+perl release manager (as opposed to a CPAN module maintainer).
-To see which core distro versions differ from the current CPAN versions:
+You can also run an actual diff of the contents of the modules, comparing core
+to CPAN, to ensure that there were no erroneous/extraneous changes that need to
+be dealt with. You do this by not passing the C<-x> option:
- $ ./perl -Ilib Porting/core-cpan-diff -x -a
+ $ ./perl -Ilib Porting/core-cpan-diff -a -o /tmp/corediffs
+
+then fix the core, or cajole CPAN authors as appropriate. See also the C<-d>
+and C<-v> options for more detail (and the C<-u> option as mentioned above).
+You'll probably want to use the C<-c cachedir> option to avoid repeated CPAN
+downloads and may want to use C<-m file:///mirror/path> if you made a local
+CPAN mirror. Note that a minicpan mirror won't actually work, but can provide a
+good first pass to quickly get a list of modules which definitely haven't
+changed, to avoid having to download absolutely everything.
If you are making a MAINT release, run C<core-cpan-diff> on both blead and
maint, then diff the two outputs. Compare this with what you expect, and if
necessary, fix things up. For example, you might think that both blead
and maint are synchronised with a particular CPAN module, but one might
-have some extra changes.
+have some extra changes.
=head3 How to sync a CPAN module with a cpan/ distro
@@ -220,13 +234,13 @@ directory to the original name.
=item *
-Restore any F<.gitignore> file. This can be done by issueing
+Restore any F<.gitignore> file. This can be done by issuing
C<git checkout .gitignore> in the F<cpan/Distro> directory.
=item *
Remove files we do not need. That is, remove any files that match the
-entries in C<@IGNORE> in F<Porting/Maintainer.pl>, and anything that
+entries in C<@IGNORE> in F<Porting/Maintainer.pl>, and anything that
matches the C<EXCLUDED> section of the distro's entry in the C<%Modules>
hash.
@@ -261,7 +275,7 @@ bit, or edit F<Porting/exec-bit.txt>
=item *
-Run C<make>, see if C<perl> compiles.
+Run C<make> (or C<nmake> on Windows), see if C<perl> compiles.
=item *
@@ -289,7 +303,10 @@ For entries with a non-simple C<FILES> section, or with a C<MAP>, you
may have to take more steps than listed above.
F<Porting/sync-with-cpan> is a script that automates most of the steps
-above; but see the comments at the beginning of the file.
+above; but see the comments at the beginning of the file. In particular,
+it has not yet been exercised on Windows, but will certainly require a set
+of Unix tools such as Cygwin, and steps that run C<make> will need to run
+C<nmake> instead.
=head3 dual-life CPAN module stability
@@ -318,7 +335,8 @@ Ensure dual-life CPAN modules are stable, which comes down to:
=head3 monitor smoke tests for failures
Similarly, monitor the smoking of core tests, and try to fix. See
-L<http://doc.procura.nl/smoke/index.html> for a summary. See also
+L<http://doc.procura.nl/smoke/index.html> and L<http://perl5.test-smoke.org/>
+for a summary. See also
L<http://www.nntp.perl.org/group/perl.daily-build.reports/> which has
the raw reports.
@@ -337,10 +355,12 @@ edit the whole document.
=head3 Bump the version number
+Do not do this yet for a BLEAD-POINT release! You will do this at the end of
+the release process.
+
Increase the version number (e.g. from 5.12.0 to 5.12.1).
-For a BLEAD-POINT release, this can happen on the day of the release. For a
-release candidate for a stable perl, this should happen a week or two
+For a release candidate for a stable perl, this should happen a week or two
before the first release candidate to allow sufficient time for testing and
smoking with the target version built into the perl executable. For
subsequent release candidates and the final release, it it not necessary to
@@ -375,6 +395,8 @@ After editing, regenerate uconfig.h (this must be run on a system with a
$ perl regen/uconfig_h.pl
+This might not cause any new changes.
+
Test your changes:
$ git clean -xdf # careful if you don't have local files to keep!
@@ -391,7 +413,7 @@ Commit your changes:
$ git commit -a -m 'Bump the perl version in various places for 5.x.y'
At this point you may want to compare the commit with a previous bump to
-see if they look similar. See commit 8891dd8d for an example of a
+see if they look similar. See commit 0e79a3d1bc for an example of a
previous version bump.
When the version number is bumped, you should also update Module::CoreList
@@ -417,15 +439,27 @@ release (so for 5.15.3 this would be 5.15.2).
=head3 Check more build configurations
-Check some more build configurations.
+Try running the full test suite against multiple Perl configurations. Here are
+some sets of Configure flags you can try:
- $ sh Configure -Dprefix=/tmp/perl-5.x.y -Uinstallusrbinperl \
- -Duseshrplib -Dusesitecustomize
- $ make
- $ make test
+=over 4
-XXX think of other configurations that need testing.
+=item *
+C<-Duseshrplib -Dusesitecustomize>
+
+=item *
+
+C<-Duserelocatableinc>
+
+=item *
+
+C<-Dusethreads>
+
+=back
+
+If you have multiple compilers on your machine, you might also consider
+compiling with C<-Dcc=$other_compiler>.
=head3 update perlport
@@ -438,7 +472,7 @@ If necessary update the list and the indicated version number.
=head2 Building a release - on the day
This section describes the actions required to make a release
-that are performed on the actual day.
+that are performed near to, or on the actual release day.
=head3 re-check earlier actions
@@ -448,10 +482,14 @@ L<"Building a release - advance actions"> to ensure they are all done and
up-to-date.
-=head3 bump version number
+=head3 create a release branch
+
+For BLEAD-POINT releases, making a release from a release branch avoids the
+need to freeze blead during the release. This is less important for
+BLEAD-FINAL, MAINT, and RC releases, since blead will already be frozen in
+those cases. Create the branch by running
-For a BLEAD-POINT release, if you did not bump the perl version number as
-part of I<advance actions>, do that now.
+ git checkout -b release-5.xx.yy
=head3 finalize perldelta
@@ -494,10 +532,26 @@ For example, for RC0 of 5.16.0:
$ cd pod
$ git rm perldelta515*.pod
-All mention to them should also be removed. Edit F<pod/perl.pod> to remove
-them from its table of contents, then run F<Porting/pod_rules.pl> to
-propagate your changes there into all the other files that mention them
-(including F<MANIFEST>). You'll need to C<git add> the files that it changes.
+=for checklist skip BLEAD BLEAD-POINT
+
+=head3 add recent perldeltas
+
+For the first RC for a MAINT release, copy in any recent perldeltas from
+blead that have been added since the last release on this branch. This
+should include any recent maint releases on branches older than your one,
+but not newer. For example if you're producing a 5.14.x release, copy any
+perldeltas from recent 5.10.x, 5.12.x etc maint releases, but not from
+5.16.x or higher. Remember to
+
+ $ git add <file1> <file2> ...
+
+=head3 update and commit perldelta files
+
+If you have added or removed any perldelta files via the previous two
+steps, then edit F<pod/perl.pod> to add/remove them from its table of
+contents, then run F<Porting/pod_rules.pl> to propagate your changes there
+into all the other files that mention them (including F<MANIFEST>). You'll
+need to C<git add> the files that it changes.
Then build a clean perl and do a full test
@@ -511,7 +565,7 @@ Once all tests pass, commit your changes.
=head3 build a clean perl
-If you skipped the previous step (removing the stale perldeltas)
+If you skipped the previous step (adding/removing perldeltas)
make sure you have a gitwise-clean perl directory (no modified files,
unpushed commits etc):
@@ -531,13 +585,26 @@ from the maint branch, but commit the C<CoreList.pm> changes in
I<blead> and subsequently cherry-pick any releases since the last
maint release and then your recent commit. XXX need a better example
+[ Note that the procedure for handling Module::CoreList in maint branches
+is a bit complex, and the RMG currently don't describe a full and
+workable approach. The main issue is keeping Module::CoreList
+and its version number synchronised across all maint branches, blead and
+CPAN, while having to bump its version number for every RC release.
+See this brief p5p thread:
+
+ Message-ID: <20130311174402.GZ2294@iabyn.com>
+
+If you can devise a workable system, feel free to try it out, and to
+update the RMG accordingly!
+
+DAPM May 2013 ]
+
+
F<corelist.pl> uses ftp.funet.fi to verify information about dual-lived
-modules on CPAN. It can use a full, local CPAN mirror or fall back
-to C<wget> or C<curl> to fetch only package metadata remotely. (If you're
-on Win32, then installing Cygwin is one way to have commands like C<wget>
-and C<curl> available.)
+modules on CPAN. It can use a full, local CPAN mirror and/or fall back
+on HTTP::Tiny to fetch package metadata remotely.
-(If you'd prefer to have a full CPAN mirror, see
+(If you'd prefer to have a full CPAN mirror, see
http://www.cpan.org/misc/cpan-faq.html#How_mirror_CPAN)
Then change to your perl checkout, and if necessary,
@@ -582,6 +649,16 @@ number as a CPAN release.)
Edit the version number in the new C<< 'Module::CoreList' => 'X.YZ' >>
entry, as that is likely to reflect the previous version number.
+=head4 Bump C<$Module::CoreList::TieHashDelta::VERSION>
+
+C<$Module::CoreList::TieHashDelta::VERSION> should always be equal to
+C<$Module::CoreList::VERSION>. Make sure the two versions match before
+proceeding.
+
+Edit the version number in the new
+C<< 'Module::CoreList::TieHashDelta' => 'X.YZ' >> entry, as that is likely to
+reflect the previous version number.
+
=head4 Bump version in Module::CoreList F<Changes>
Also edit Module::CoreList's new version number in its F<Changes>
@@ -597,7 +674,7 @@ Add a perldelta entry for the new Module::CoreList version.
In addition, if this is a final release (rather than a release candidate):
-=over 4
+=over 4
=item *
@@ -619,6 +696,21 @@ cherry-pick it back).
$ git commit -m 'Update Module::CoreList for 5.x.y' dist/Module-CoreList/lib/Module/CoreList.pm dist/Module-CoreList/lib/Module/CoreList.pod
+=for checklist skip BLEAD BLEAD-POINT
+
+=head3 synchronise from blead's perlhist.pod
+
+For the first RC for a MAINT release, copy in the latest
+F<pod/perlhist.pod> from blead; this will include details of newer
+releases in all branches. In theory, blead's version should be a strict
+superset of the one in this branch, but it's probably safest to diff them
+first to ensure that there's nothing in this branch that was forgotten
+from blead:
+
+ $ diff pod/perlhist.pod ..../blead/pod/perlhist.pod
+ $ cp ..../blead/pod/perlhist.pod pod/
+ $ git commit -m 'sync perlhist from blead' pod/perlhist.pod
+
=for checklist skip RC
=head3 update perlhist.pod
@@ -634,6 +726,10 @@ if this is the first release under the stewardship of a new pumpking, make
sure that his or her name is listed in the section entitled
C<THE KEEPERS OF THE PUMPKIN>.
+I<If you're making a BLEAD-FINAL release>, also update the "SELECTED
+RELEASE SIZES" section with the output of
+F<Porting/perlhist_calculate.pl>.
+
Be sure to commit your changes:
$ git commit -m 'add new release to perlhist' pod/perlhist.pod
@@ -656,6 +752,14 @@ Be sure to commit your change:
$ git commit -m 'bump version to RCnnn' patchlevel.h
+=head3 run makemeta to update META files
+
+ $ ./perl -Ilib Porting/makemeta
+
+Be sure to commit any changes (if applicable):
+
+ $ git status # any changes?
+ $ git commit -m 'Update META files' META.*
=head3 build, test and check a fresh perl
@@ -677,9 +781,9 @@ directory, they will still identify themselves using git tags and
commits. (Note that for an odd-numbered version, perl will install
itself as C<perl5.x.y>). C<perl -v> will identify itself as:
- This is perl 5, version X, subversion Y (v5.X.Y (v5.X.Z-NNN-deadbeef))
+ This is perl 5, version X, subversion Y (v5.X.Y (v5.X.Z-NNN-gdeadbeef))
-where 5.X.Z is the latest tag, Z the number of commits since this tag,
+where 5.X.Z is the latest tag, NNN the number of commits since this tag,
and C<< deadbeef >> commit of that tag.
Then delete the temporary installation.
@@ -689,8 +793,7 @@ Then delete the temporary installation.
Push all your recent commits:
- $ git push origin ....
-
+ $ git push origin release-5.xx.yy
=head3 tag the release
@@ -757,7 +860,7 @@ have access to.
=head4 Download the tarball to another machine
-Download the tarball to some other machine. For a release candidate,
+Download the tarball to some other machine. For a release candidate,
you really want to test your tarball on two or more different platforms
and architectures. The #p5p IRC channel on irc.perl.org is a good place
to find willing victims.
@@ -780,7 +883,7 @@ Check that the test harness and install work on each test machine:
Check that the output of C<perl -v> and C<perl -V> are as expected,
especially as regards version numbers, patch and/or RC levels, and @INC
-paths.
+paths.
Note that the results may be different without a F<.git/> directory,
which is why you should test from the tarball.
@@ -807,17 +910,13 @@ previous is 5.10.0:
find . -type f | sort > /tmp/f2
diff -u /tmp/f[12]
-=head4 Test the CPAN client
+=head4 Bootstrap the CPAN client
Bootstrap the CPAN client on the clean install:
- $ bin/perl -MCPAN -e "shell"
+ $ bin/cpan
-If you're running this on Win32 you probably also need a set of Unix
-command-line tools available for CPAN to function correctly without
-Perl alternatives like LWP installed. Cygwin is an obvious choice.)
-
-=head4 Install the Inline module and test it
+=head4 Install the Inline module with CPAN and test it
Try installing a popular CPAN module that's reasonably complex and that
has dependencies; for example:
@@ -837,10 +936,6 @@ Bootstrap the CPANPLUS client on the clean install:
$ bin/cpanp
-(Again, on Win32 you'll need something like Cygwin installed, but make sure
-that you don't end up with its various F<bin/cpan*> programs being found on
-the PATH before those of the Perl that you're trying to test.)
-
=head4 Install the DBI module with CPANPLUS
CPAN Terminal> i DBI
@@ -855,14 +950,14 @@ Test L<perlbug> with the following:
$ bin/perlbug
...
Subject: test bug report
- Local perl administrator [yourself]:
- Editor [vi]:
- Module:
- Category [core]:
- Severity [low]:
+ Local perl administrator [yourself]:
+ Editor [vi]:
+ Module:
+ Category [core]:
+ Severity [low]:
(edit report)
Action (Send/Display/Edit/Subject/Save to File): f
- Name of file to save message in [perlbug.rep]:
+ Name of file to save message in [perlbug.rep]:
Action (Send/Display/Edit/Subject/Save to File): q
and carefully examine the output (in F<perlbug.rep]>), especially
@@ -962,6 +1057,20 @@ Mail p5p to announce your new release, with a quote you prepared earlier.
Use the template at Porting/release_announcement_template.txt
+Send a carbon copy to C<noc@metacpan.org>
+
+=head3 merge release branch back to blead
+
+If you made a release branch for this release, merge it back into master now,
+and delete it.
+
+ git checkout blead
+ git pull
+ git merge release-5.xx.yy
+ git push
+ git push origin :release-5.xx.yy
+ git branch -d release-5.xx.yy
+
=head3 update epigraphs.pod
Add your quote to F<Porting/epigraphs.pod> and commit it.
@@ -1008,8 +1117,7 @@ Run the C<git add> commands it outputs to add new and modified files.
=item *
Verify that the build still works, by running C<./Configure> and
-C<make test_porting>. (On Win32, run C<nmake> and
-C<nmake test TEST_FILES="porting\*.t ..\lib\diagnostics.t">.)
+C<make test_porting>. (On Win32 use the appropriate make utility).
=item *
@@ -1024,14 +1132,14 @@ When C<make test_porting> passes, commit the new perldelta.
=back
At this point you may want to compare the commit with a previous bump to
-see if they look similar. See commit e3c71926d3 for an example of a
+see if they look similar. See commit 4eabcf701b for an example of a
previous version bump.
-=for checklist skip BLEAD-POINT MAINT RC
+=for checklist skip MAINT RC
=head3 bump version
-I<You MUST SKIP this step for RC, BLEAD-POINT, MAINT>
+I<You MUST SKIP this step for RC and MAINT>
If this was a BLEAD-FINAL release (i.e. the first release of a new maint
series, 5.x.0 where x is even), then bump the version in the blead branch
@@ -1049,6 +1157,9 @@ Run F<regen/feature.pl> to propagate the changes to F<lib/feature.pm>.
Then follow the section L<"Bump the version number"> to bump the version
in the remaining files and test and commit.
+If this was a BLEAD-POINT release, then just follow the section
+L<"Bump the version number">.
+
=head3 clean build and test
@@ -1117,13 +1228,13 @@ And nag the sysadmins to make this directory available via rsync.
=for checklist skip BLEAD-POINT RC
-=head3 copy perldelta.pod to other branches
+=head3 copy perldelta.pod to blead
I<You MUST SKIP this step for RC, BLEAD-POINT>
-Copy the perldelta.pod for this release into the other branches; for
-example:
+Copy the perldelta.pod for this release into blead; for example:
+ $ cd ..../blead
$ cp -i ../5.10.x/pod/perldelta.pod pod/perl5101delta.pod # for example
$ git add pod/perl5101delta.pod
@@ -1133,18 +1244,17 @@ Edit F<pod/perl.pod> to add an entry for the file, e.g.:
Then rebuild various files:
- $ perl pod/buildtoc --build-all
+ $ perl Porting/pod_rules.pl
Finally, commit:
$ git commit -a -m 'add perlXXXdelta'
-=head3 update perlhist.pod in other branches
+=head3 copy perlhist.pod entries to blead
Make sure any recent F<pod/perlhist.pod> entries are copied to
-F<perlhist.pod> on other branches
-e.g.
+F<perlhist.pod> on blead. e.g.
5.8.9 2008-Dec-14
@@ -1190,12 +1300,11 @@ to ensure that the tarballs are available on the website.
Check C</src> on CPAN (on a fast mirror) to ensure that links to
the new tarballs have appeared. There should be links in C</src/5.0>
-(which is accumulating all new versions), links in C</src> (which shows
-only the latest version on each branch), and an appropriate mention in
-C</src/README.html> (which describes the latest versions).
+(which is accumulating all new versions), and an appropriate mention in
+C</src> (which describes the latest versions in each branch, with links).
These links should appear automatically, some hours after upload.
-If they don't, or the C<README.html> description is inadequate,
+If they don't, or the C</src> description is inadequate,
ask Ask <ask@perl.org>.
=item *
@@ -1217,10 +1326,13 @@ It should be visible at a URL like C<http://search.cpan.org/dist/perl-5.10.1/>.
I<You MUST SKIP this step for a RC release>
-In the C<perlorg> repository, edit F<docs/dev/perl5/index.html>
-to link to this new release. Then make a pull request to Leo Lapworth.
-If this fails for some reason and you cannot cajole anybody else into
-submitting that change, you can mail Leo as last resort.
+In your C<perlweb> repository, link to the new release. For a new
+latest-maint release, edit F<docs/shared/tpl/stats.html>. Otherwise,
+edit F<docs/dev/perl5/index.html>.
+
+Then make a pull request to Leo Lapworth. If this fails for some reason
+and you cannot cajole anybody else into submitting that change, you can
+mail Leo as last resort.
This repository can be found on L<github|https://github.com/perlorg/perlweb>.
diff --git a/gnu/usr.bin/perl/Porting/release_schedule.pod b/gnu/usr.bin/perl/Porting/release_schedule.pod
index d55e8e1ea9e..9249f185306 100644
--- a/gnu/usr.bin/perl/Porting/release_schedule.pod
+++ b/gnu/usr.bin/perl/Porting/release_schedule.pod
@@ -7,43 +7,42 @@ release schedules for the next, current and previous stable versions
of Perl. Dates with all question marks will only be releases if
deemed necessary by the Pumpking.
-=head2 Perl 5.16
+=head2 Perl 5.18
-Code freezes (which happen in the 5.15.X series)
+Code freezes (which happen in the 5.17.X series)
- 2011-12-20 5.15.6 Contentious changes freeze
- 2012-02-20 5.15.8 User-visible changes freeze
- 2012-03-20 5.15.9 Full code freeze
+ 2013-01-20 5.17.8 Contentious changes freeze
+ 2013-02-20 5.17.9 User-visible changes freeze
+ 2013-03-20 5.17.10 Full code freeze
Release schedule (with release manager):
- 2012-04-?? 5.16.0-RC0 Ricardo Signes
+ 2013-04-?? 5.18.0-RC0 Ricardo Signes
...(interim RC releases)...
- 2012-05-16 5.16.0 (final) Ricardo Signes
+ 2013-05-18 5.18.0 (final) Ricardo Signes
(RC0 will be released once we think that all the blockers have been
-addressed. This typically means some time in April.)
+addressed. This typically means some time in April or May.)
-=head2 Perl 5.14
+=head2 Perl 5.16
Release schedule (with release managers):
- 2011-05-14 5.14.0 (final) Jesse Vincent
- 2011-06-16 5.14.1 ✓ Jesse Vincent
- 2011-09-14 5.14.2 ✓ Florian Ragwitz
- 2012-0?-?? 5.14.3 Ricardo Signes
- ????-??-?? 5.14.4 ??
+ 2012-05-20 5.16.0 ✓ Ricardo Signes
+ 2012-08-08 5.16.1 ✓ Ricardo Signes
+ 2012-11-01 5.16.2 ✓ Ricardo Signes
+ 2013-03-11 5.16.3 ✓ Ricardo Signes
+ ????-??-?? 5.16.4 ??
-=head2 Perl 5.12
+=head2 Perl 5.14
Release schedule (with release managers):
- 2010-04-12 5.12.0 ✓ Jesse Vincent
- 2010-05-16 5.12.1 ✓ Jesse Vincent
- 2010-09-06 5.12.2 ✓ Jesse Vincent
- 2011-01-21 5.12.3 ✓ Ricardo Signes
- 2011-06-20 5.12.4 ✓ Leon Brocard
- ????-??-?? 5.12.5 ??
+ 2011-05-14 5.14.0 (final) Jesse Vincent
+ 2011-06-16 5.14.1 ✓ Jesse Vincent
+ 2011-09-14 5.14.2 ✓ Florian Ragwitz
+ 2012-10-12 5.14.3 ✓ Dominic Hargreaves
+ 2013-03-10 5.14.4 ✓ David Mitchell
=head1 DEVELOPMENT RELEASE SCHEDULE
@@ -59,27 +58,31 @@ When shipping a release, you should include the schedule for (at least)
the next four releases. If a stable version of Perl is released,
you should reset the version numbers to the next blead series.
-=head2 Perl 5.15
-
-Release schedule (with release managers and code freeze points):
-
- 2011-06-20 5.15.0 ✓ David Golden
- 2011-07-20 5.15.1 ✓ Zefram
- 2011-08-20 5.15.2 ✓ Ricardo Signes
- 2011-09-20 5.15.3 ✓ Stevan Little
- 2011-10-20 5.15.4 ✓ Florian Ragwitz
- 2011-11-20 5.15.5 ✓ Steve Hay
- 2011-12-20 5.15.6 ✓ Dave Rolsky (Contentious code freeze)
- 2012-01-20 5.15.7 ✓ Chris Williams
- 2012-02-20 5.15.8 ✓ Max Maischein (User-visible code freeze)
- 2012-03-20 5.15.9 Abigail (Full code freeze)
-
=head2 Perl 5.17
- 2012-04-20 5.17.0 Dave Cross
- 2012-05-20 5.17.1 Zefram
- 2012-06-20 5.17.2 Jesse Luehrs
- 2012-07-20 5.17.3
+ 2012-05-26 5.17.0 ✓ Zefram
+ 2012-06-20 5.17.1 ✓ Jesse Luehrs
+ 2012-07-20 5.17.2 ✓ Tony Cook
+ 2012-08-20 5.17.3 ✓ Steve Hay
+ 2012-09-20 5.17.4 ✓ Florian Ragwitz
+ 2012-10-20 5.17.5 ✓ Florian Ragwitz
+ 2012-11-20 5.17.6 ✓ Ricardo Signes
+ 2012-12-18 5.17.7 ✓ Dave Rolsky
+ 2013-01-20 5.17.8 ✓ Aaron Crane
+ 2013-02-20 5.17.9 ✓ Chris Williams
+ 2013-03-20 5.17.10 Max Maischein
+ 2013-04-20 5.17.11
+
+=head2 Perl 5.19
+
+ 2013-05-20 5.19.0 Ricardo Signes
+ 2013-06-20 5.19.1 David Golden
+ 2013-07-20 5.19.2 Aristotle Pagaltzis
+ 2013-08-20 5.19.3 Steve Hay
+ 2013-09-20 5.19.4
+ 2013-10-20 5.19.5
+ 2013-11-20 5.19.6
+ 2013-12-20 5.19.7
=head1 VICTIMS
@@ -109,6 +112,8 @@ Dave Rolsky <autarch@urth.org>
Abigail <abigail@abigail.be>
Max Maischein <corion@cpan.org>
Dave Cross <dave@perlhacks.com>
+Jesse Luehrs <doy@cpan.org>
+Tony Cook <tony@develop-help.com>
=head1 AUTHOR
diff --git a/gnu/usr.bin/perl/Porting/sync-with-cpan b/gnu/usr.bin/perl/Porting/sync-with-cpan
index aee808b7606..b6ee2464078 100644
--- a/gnu/usr.bin/perl/Porting/sync-with-cpan
+++ b/gnu/usr.bin/perl/Porting/sync-with-cpan
@@ -1,45 +1,124 @@
#!/usr/bin/env perl
-#
-# Script to help out with syncing cpan distros.
-#
-# Does the following:
-# - Fetches the package list from CPAN. Finds the current version of
-# the given package. [1]
-# - Downloads the relevant tarball; unpacks the tarball;. [1]
-# - Clean out the old directory (git clean -dfx)
-# - Moves the old directory out of the way, moves the new directory in place.
-# - Restores any .gitignore file.
-# - Removes files from @IGNORE and EXCLUDED
-# - git add any new files.
-# - git rm any files that are gone.
-# - Remove the +x bit on files in t/
-# - Remove the +x bit on files that don't have in enabled in the current dir
-# - Restore files mentioned in CUSTOMIZED
-# - Adds new files to MANIFEST
-# - Runs a "make" (assumes a configure has been run)
-# - Cleans up
-# - Runs tests for the package
-# - Runs the porting tests
-#
-# [1] If the --tarball option is given, then CPAN is not consulted.
-# --tarball should be the path to the tarball; the version is extracted
-# from the filename -- but can be overwritten by the --version option.
-#
-# TODO: - Delete files from MANIFEST
-# - Update Porting/Maintainers.pl
-# - Optional, run a full test suite
-# - Handle complicated FILES
-#
-# This is an initial version; no attempt has been made yet to make this
-# portable. It shells out instead of trying to find a Perl solution.
-# In particular, it assumes wget, git, tar, chmod, perl, make, and rm
-# to be available.
-#
-# Usage: perl Porting/sync-with-cpan <module>
-# where <module> is the name it appears in the %Modules hash
-# of Porting/Maintainers.pl
-#
+=head1 NAME
+
+Porting/sync-with-cpan - Synchronize with CPAN distributions
+
+=head1 SYNOPSIS
+
+ perl Porting/sync-with-cpan <module>
+
+where <module> is the name it appears in the C<%Modules> hash
+of F<Porting/Maintainers.pl>
+
+=head1 DESCRIPTION
+
+Script to help out with syncing cpan distros.
+
+Does the following:
+
+=over 4
+
+=item *
+
+Fetches the package list from CPAN. Finds the current version of the given
+package. [1]
+
+=item *
+
+Downloads the relevant tarball; unpacks the tarball. [1]
+
+=item *
+
+Clean out the old directory (C<git clean -dfx>)
+
+=item *
+
+Moves the old directory out of the way, moves the new directory in place.
+
+=item *
+
+Restores any F<.gitignore> file.
+
+=item *
+
+Removes files from C<@IGNORE> and C<EXCLUDED>
+
+=item *
+
+C<git add> any new files.
+
+=item *
+
+C<git rm> any files that are gone.
+
+=item *
+
+Remove the +x bit on files in F<t/>
+
+=item *
+
+Remove the +x bit on files that don't have it enabled in the current dir
+
+=item *
+
+Restore files mentioned in C<CUSTOMIZED>
+
+=item *
+
+Adds new files to F<MANIFEST>
+
+=item *
+
+Runs a C<make> (assumes a configure has been run)
+
+=item *
+
+Cleans up
+
+=item *
+
+Runs tests for the package
+
+=item *
+
+Runs the porting tests
+
+=back
+
+[1] If the C<--tarball> option is given, then CPAN is not consulted.
+C<--tarball> should be the path to the tarball; the version is extracted
+from the filename -- but can be overwritten by the C<--version> option.
+
+=head1 TODO
+
+=over 4
+
+=item *
+
+Delete files from F<MANIFEST>
+
+=item *
+
+Update F<Porting/Maintainers.pl>
+
+=item *
+
+Optional, run a full test suite
+
+=item *
+
+Handle complicated C<FILES>
+
+=back
+
+This is an initial version; no attempt has been made yet to make this
+portable. It shells out instead of trying to find a Perl solution.
+In particular, it assumes wget, git, tar, chmod, perl, make, and rm
+to be available.
+
+=cut
+
package Maintainers;
@@ -48,11 +127,10 @@ use 5.010;
use strict;
use warnings;
use Getopt::Long;
-no warnings 'syntax';
$| = 1;
-die "This does not like top level directory"
+die "This does not look like a top level directory"
unless -d "cpan" && -d "Porting";
our @IGNORABLE;
@@ -68,6 +146,10 @@ my $package = "02packages.details.txt";
my $package_url = "http://www.cpan.org/modules/$package";
my $package_file = "/tmp/$package";
+my @problematic = (
+ 'podlators', # weird CUSTOMIZED section due to .PL files
+);
+
GetOptions ('tarball=s' => \my $tarball,
'version=s' => \my $version,
@@ -84,7 +166,7 @@ my $info = $Modules {$module} or die "Cannot find module $module";
my $distribution = $$info {DISTRIBUTION};
my @files = glob $$info {FILES};
-if (@files != 1 || !-d $files [0] || $$info {MAP}) {
+if (!-d $files [0] || grep { $_ eq $module } @problematic) {
say "This looks like a setup $0 cannot handle (yet)";
unless ($force) {
say "Will not continue without a --force option";
@@ -96,7 +178,7 @@ if (@files != 1 || !-d $files [0] || $$info {MAP}) {
chdir "cpan";
-my $pkg_dir = $$info {FILES};
+my $pkg_dir = $files[0];
$pkg_dir =~ s!.*/!!;
my ($old_version) = $distribution =~ /-([0-9.]+)\.tar\.gz/;
@@ -123,6 +205,10 @@ unless ($tarball) {
or die "Cannot find $cpan_mod on CPAN\n";
chomp $new_line;
(undef, $new_version, my $new_path) = split ' ', $new_line;
+ if (defined $version) {
+ $new_path =~ s/-$new_version\./-$version\./;
+ $new_version = $version;
+ }
$new_file = (split '/', $new_path) [-1];
my $url = "http://search.cpan.org/CPAN/authors/id/$new_path";
@@ -138,7 +224,6 @@ else {
}
my $old_dir = "$pkg_dir-$old_version";
-my $new_dir = "$pkg_dir-$new_version";
say "Cleaning out old directory";
system git => 'clean', '-dfxq', $pkg_dir;
@@ -146,11 +231,66 @@ system git => 'clean', '-dfxq', $pkg_dir;
say "Unpacking $new_file";
system tar => 'xfz', $new_file;
+(my $new_dir = $new_file) =~ s/\.tar\.gz//;
+# ensure 'make' will update all files
+system('find', $new_dir, '-exec', 'touch', '{}', ';');
say "Renaming directories";
rename $pkg_dir => $old_dir;
-rename $new_dir => $pkg_dir;
+say "Creating new package directory";
+mkdir $pkg_dir;
+
+say "Populating new package directory";
+my $map = $$info {MAP};
+my @EXCLUDED_QR;
+my %EXCLUDED_QQ;
+if ($$info {EXCLUDED}) {
+ foreach my $entry (@{$$info {EXCLUDED}}) {
+ if (ref $entry) {push @EXCLUDED_QR => $entry}
+ else {$EXCLUDED_QQ {$entry} = 1}
+ }
+}
+
+FILE: for my $file ( `find $new_dir -type f` ) {
+ chomp $file;
+ my $old_file = $file;
+ $file =~ s{^$new_dir/}{};
+
+ next if $EXCLUDED_QQ{$file};
+ for my $qr (@EXCLUDED_QR) {
+ next FILE if $file =~ $qr;
+ }
+
+ if ( $map ) {
+ for my $key ( sort { length $b <=> length $a } keys %$map ) {
+ my $val = $map->{$key};
+ last if $file =~ s/^$key/$val/;
+ }
+ }
+ else {
+ $file = $files[0] . '/' . $file;
+ }
+
+ if ( $file =~ m{^cpan/} ) {
+ $file =~ s{^cpan/}{};
+ }
+ else {
+ $file = '../' . $file;
+ }
+
+ my $prefix = '';
+ my @parts = split '/', $file;
+ pop @parts;
+ for my $part (@parts) {
+ $prefix .= '/' if $prefix;
+ $prefix .= $part;
+ mkdir $prefix unless -d $prefix;
+ }
+
+ rename $old_file => $file;
+}
+system 'rm', '-rf', $new_dir;
if (-f "$old_dir/.gitignore") {
say "Restoring .gitignore";
@@ -169,18 +309,6 @@ chomp @old_files;
s!^[^/]+/!! for @old_files;
my %old_files = map {$_ => 1} @old_files;
-#
-# Find files that can be deleted.
-#
-my @EXCLUDED_QR;
-my %EXCLUDED_QQ;
-if ($$info {EXCLUDED}) {
- foreach my $entry (@{$$info {EXCLUDED}}) {
- if (ref $entry) {push @EXCLUDED_QR => $entry}
- else {$EXCLUDED_QQ {$entry} = 1}
- }
-}
-
my @delete;
my @commit;
my @gone;
@@ -192,16 +320,6 @@ foreach my $file (@new_files) {
push @delete => $file;
next;
}
- if ($EXCLUDED_QQ {$file}) {
- push @delete => $file;
- next;
- }
- foreach my $pattern (@EXCLUDED_QR) {
- if ($file =~ /$pattern/) {
- push @delete => $file;
- next FILE;
- }
- }
push @commit => $file;
}
foreach my $file (@old_files) {
@@ -319,10 +437,48 @@ print "\n";
say "Failed tests: @failed" if @failed;
-print "Now you ought to run a make; make test ...\n";
+say "Attempting to update Maintainers.pl";
+chdir '..';
+
+open my $Maintainers_pl, '<', 'Porting/Maintainers.pl';
+open my $new_Maintainers_pl, '>', 'Maintainers.pl';
+
+my $found;
+my $in_mod_section;
+while (<$Maintainers_pl>) {
+ if (!$found) {
+ if ($in_mod_section) {
+ if (/DISTRIBUTION/) {
+ if (s/\Q$old_version/$new_version/) {
+ $found = 1;
+ }
+ }
+
+ if (/^ }/) {
+ $in_mod_section = 0;
+ }
+ }
+
+ if (/\Q$cpan_mod/) {
+ $in_mod_section = 1;
+ }
+ }
+
+ print $new_Maintainers_pl $_;
+}
+
+if ($found) {
+ unlink 'Porting/Maintainers.pl';
+ rename 'Maintainers.pl' => 'Porting/Maintainers.pl';
+ system chmod => 'a+x', 'Porting/Maintainers.pl';
+}
+else {
+ say "Could not update Porting/Maintainers.pl.";
+ say "Make sure you update this by hand before committing.";
+}
-say "Do not forget to update Porting/Maintainers.pl before committing";
say "$o_module is now version $new_version";
+say "Now you ought to run a make; make test ...";
__END__
diff --git a/gnu/usr.bin/perl/Porting/todo.pod b/gnu/usr.bin/perl/Porting/todo.pod
index 6d2d51a5ba1..67792531ff2 100644
--- a/gnu/usr.bin/perl/Porting/todo.pod
+++ b/gnu/usr.bin/perl/Porting/todo.pod
@@ -23,8 +23,44 @@ not, but if your patch is incorporated, then we'll add your name to the
F<AUTHORS> file, which ships in the official distribution. How many other
programming languages offer you 1 line of immortality?
+=head1 Tasks that need only a little Perl knowledge
+
+=head2 Fix POD errors in Perl documentation
+
+Perl documentation is furnished in POD (Plain Old Documentation); see
+L<perlpod>. We also have a utility that checks for various errors in
+this documentation: F<t/porting/podcheck.t>. Unfortunately many files
+have errors in them, and there is a database of known problems, kept in
+F<t/porting/known_pod_issues.dat>. The most prevalent errors are lines
+too wide to fit in a standard terminal window, but there are more
+serious problems as well; and there are items listed there that are not
+in fact errors. The task would be to go through and clean up the
+documentation. This would be a good way to learn more about Perl.
+
=head1 Tasks that only need Perl knowledge
+=head2 Classify bug tickets by type
+
+Known bugs in Perl are tracked by L<https://rt.perl.org/rt3> (which also
+includes Perl 6). A summary can be found at
+L<https://rt.perl.org/rt3/NoAuth/perl5/Overview.html>.
+It shows bugs classified by "type". However, the type of many of the
+bugs is "unknown". This greatly lowers the chances of them getting
+fixed, as the number of open bugs is overwhelming -- too many to wade
+through for someone to try to find the bugs in the parts of
+Perl that s/he knows well enough to try to fix. This task involves
+going through these bugs and classifying them into one or more types.
+
+=head2 Ongoing: investigate new bug reports
+
+When a bug report is filed, it would be very helpful to have someone do
+a quick investigation to see if it is a real problem, and to reply to
+the poster about it, asking for example code that reproduces the
+problem. Such code should be added to the test suite as TODO tests, and
+the ticket should be classified by type. To get started on this task,
+look at the tickets that are marked as "New Issues" in
+L<https://rt.perl.org/rt3/NoAuth/perl5/Overview.html>.
+
=head2 Migrate t/ from custom TAP generation
Many tests below F<t/> still generate TAP by "hand", rather than using library
@@ -63,6 +99,14 @@ Schwern has promised to donate to $500 to TPF. We may need volunteers to
hold him upside down and shake vigorously in order to actually extract the
cash.
+=head2 Write descriptions for all tests
+
+Many individual tests in the test suite lack descriptions (or names, or labels
+-- call them what you will). Many files completely lack descriptions, meaning
+that the only output you get is the test numbers. If all tests had
+descriptions, understanding what the tests are testing and why they sometimes
+fail would both get a whole lot easier.
+
=head2 Improve the coverage of the core tests
Use Devel::Cover to ascertain the core modules' test coverage, then add
@@ -150,6 +194,12 @@ whole category.
Many diagnostic messages are not currently documented. The list is at the end
of t/porting/diag.t.
+=head2 Write TODO tests for open bugs
+
+Sometimes bugs get fixed as a side effect of something else, and
+the bug remains open because no one realizes that it has been fixed.
+Ideally, every open bug should have a TODO test in the core test suite.
+
=head1 Tasks that need a little sysadmin-type knowledge
Or if you prefer, tasks that you would learn from, and broaden your skills
@@ -416,7 +466,7 @@ Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall.
On these systems, it might be the default compilation mode, and there
is currently no guarantee that passing no use64bitall option to the
Configure process will build a 32bit perl. Implementing -Duse32bit*
-options would be nice for perl 5.18.0.
+options would be nice for perl 5.18.2.
=head2 Profile Perl - am I hot or not?
@@ -438,19 +488,6 @@ suggest evictions and promotions to achieve a better F<pp_hot.c>.
One piece of Perl code that might make a good testbed is F<installman>.
-=head2 Allocate OPs from arenas
-
-Currently all new OP structures are individually malloc()ed and free()d.
-All C<malloc> implementations have space overheads, and are now as fast as
-custom allocates so it would both use less memory and less CPU to allocate
-the various OP structures from arenas. The SV arena code can probably be
-re-used for this.
-
-Note that Configuring perl with C<-Accflags=-DPL_OP_SLAB_ALLOC> will use
-Perl_Slab_alloc() to pack optrees into a contiguous block, which is
-probably superior to the use of OP arenas, esp. from a cache locality
-standpoint. See L<Profile Perl - am I hot or not?>.
-
=head2 Improve win32/wince.c
Currently, numerous functions look virtually, if not completely,
@@ -723,6 +760,11 @@ L</"Virtualize operating system access">.
Currently the %ENV entries are always byte strings.
See L</"Virtualize operating system access">.
+(See RT ticket #113536 for information on Win32's handling of %ENV,
+which was fixed to work with native ANSI codepage characters in the
+environment, but still doesn't work with other characters outside of
+that codepage present in the environment.)
+
=head2 Unicode and glob()
Currently glob patterns and filenames returned from File::Glob::glob()
@@ -852,6 +894,12 @@ I<';' isn't legal inside an expression - if you need multiple statements use a
do {...} block>. See the thread starting at
L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-09/msg00573.html>
+=head2 strict as warnings
+
+See L<http://markmail.org/message/vbrupaslr3bybmvk>, where Josua ben Jore
+writes: I've been of the opinion that everything strict.pm does ought to be
+able to considered just warnings that have been promoted to 'FATAL'.
+
=head2 lexicals used only once
This warns:
@@ -878,15 +926,6 @@ was added, with the result that the synthetic start class often will
fail to narrow down the possible choices when given non-Latin1 input.
Karl Williamson has been working on this - talk to him.
-=begin todo
-
-Many things are fixed, but is these still true?
-
- The tokeniser ignores the UTF-8-ness of C<PL_rsfp>, or any SVs
- returned from source filters.
-
-=end
-
=head2 state variable initialization in list context
Currently this is illegal:
@@ -1013,29 +1052,15 @@ implement per-thread working directories: Win32 already does this.
See also L</"Extend PerlIO and PerlIO::Scalar">.
-=head2 Store the current pad in the OP slab allocator
-
-=for clarification
-I hope that I got that "current pad" part correct
-
-Currently we leak ops in various cases of parse failure. I suggested that we
-could solve this by always using the op slab allocator, and walking it to
-free ops. Dave comments that as some ops are already freed during optree
-creation one would have to mark which ops are freed, and not double free them
-when walking the slab. He notes that one problem with this is that for some ops
-you have to know which pad was current at the time of allocation, which does
-change. I suggested storing a pointer to the current pad in the memory allocated
-for the slab, and swapping to a new slab each time the pad changes. Dave thinks
-that this would work.
-
=head2 repack the optree
Repacking the optree after execution order is determined could allow
removal of NULL ops, and optimal ordering of OPs with respect to cache-line
-filling. The slab allocator could be reused for this purpose. I think that
+filling. I think that
the best way to do this is to make it an optional step just before the
completed optree is attached to anything else, and to use the slab allocator
-unchanged, so that freeing ops is identical whether or not this step runs.
+unchanged--but allocate a single slab the right size, avoiding partial
+slabs--, so that freeing ops is identical whether or not this step runs.
Note that the slab allocator allocates ops downwards in memory, so one would
have to actually "allocate" the ops in reverse-execution order to get them
contiguous in memory in execution order.
@@ -1053,7 +1078,7 @@ This code
use warnings;
my $undef;
-
+
if ($undef == 3) {
} elsif ($undef == 0) {
}
@@ -1076,7 +1101,7 @@ most common and the most confusing). Ideally this code
use warnings;
my $undef;
-
+
my $a = $undef + 1;
my $b
= $undef
@@ -1130,10 +1155,25 @@ It has been proposed that octal constants be specifiable through the syntax
C<0oddddd>, parallel to the existing construct to specify hex constants
C<0xddddd>
+=head2 Revisit the regex super-linear cache code
+
+Perl executes regexes using the traditional backtracking algorithm, which
+makes it possible to implement a variety of powerful pattern-matching
+features (like embedded code blocks), at the cost of taking exponential time
+to run on some pathological patterns. The exponential-time problem is
+mitigated by the I<super-linear cache>, which detects when we're processing
+such a pathological pattern, and does some additional bookkeeping to avoid
+much of the work. However, that code has bit-rotted a little; some patterns
+don't make as much use of it as they should. The proposal is to analyse
+where the current cache code has problems, and extend it to cover those cases.
+
+See also
+L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00339.html>
+
=head1 Big projects
Tasks that will get your name mentioned in the description of the "Highlights
-of 5.18.0"
+of 5.18.2"
=head2 make ithreads more robust
diff --git a/gnu/usr.bin/perl/README.aix b/gnu/usr.bin/perl/README.aix
index 97e94abcf25..9a49067ff67 100644
--- a/gnu/usr.bin/perl/README.aix
+++ b/gnu/usr.bin/perl/README.aix
@@ -229,6 +229,15 @@ following option:
-Dcc='gcc -maix64'
+=head2 Compiling Perl 5 on AIX 7.1.0
+
+A regression in AIX 7 causes a failure in make test in Time::Piece during
+daylight savings time. APAR IV16514 provides the fix for this. A quick
+test to see if it's required, assuming it is currently daylight savings
+in Eastern Time, would be to run C< TZ=EST5 date +%Z >. This will come
+back with C<EST> normally, but nothing if you have the problem.
+
+
=head2 Compiling Perl 5 on older AIX versions up to 4.3.3
Due to the fact that AIX 4.3.3 reached end-of-service in December 31,
diff --git a/gnu/usr.bin/perl/README.bs2000 b/gnu/usr.bin/perl/README.bs2000
index 6868557d021..a1ea777a8e1 100644
--- a/gnu/usr.bin/perl/README.bs2000
+++ b/gnu/usr.bin/perl/README.bs2000
@@ -218,7 +218,7 @@ L<INSTALL>, L<perlport>.
=head2 Mailing list
-If you are interested in the VM/ESA, z/OS (formerly known as OS/390)
+If you are interested in the z/OS (formerly known as OS/390)
and POSIX-BC (BS2000) ports of Perl then see the perl-mvs mailing list.
To subscribe, send an empty message to perl-mvs-subscribe@perl.org.
diff --git a/gnu/usr.bin/perl/README.cn b/gnu/usr.bin/perl/README.cn
index e45ebff2e70..04eb4de53f7 100644
--- a/gnu/usr.bin/perl/README.cn
+++ b/gnu/usr.bin/perl/README.cn
@@ -1,139 +1,133 @@
-If you read this file _as_is_, just ignore the funny characters you
-see. It is written in the POD format (see perlpod manpage) which is
-specially designed to be readable as is.
+=encoding utf8
-The following documentation is written in EUC-CN encoding.
-
-Èç¹ûÄãÓÃÒ»°ãµÄÎÄ×ֱ༭Æ÷ÔÄÀÀÕâ·ÝÎļþ, ÇëºöÂÔÎÄÖÐÆæÌصÄ×¢¼Ç×Ö·û.
-Õâ·ÝÎļþÊÇÒÔ POD (¼òÃ÷Îļþ¸ñʽ) д³É; ÕâÖÖ¸ñʽÊÇΪÁËÄÜÈÃÈËÖ±½ÓÔĶÁ,
-¶øÌرðÉè¼ÆµÄ. ¹ØÓڴ˸ñʽµÄ½øÒ»²½ÐÅÏ¢, Çë²Î¿¼ perlpod ÏßÉÏÎļþ.
-
-=encoding euc-cn
+如果你用一般的文字编辑器阅览这份文件, 请忽略文中奇特的注记字符.
+这份文件是以 POD (简明文件格å¼) 写æˆ; è¿™ç§æ ¼å¼æ˜¯ä¸ºäº†èƒ½è®©äººç›´æŽ¥é˜…读,
+而特别设计的. 关于此格å¼çš„进一步信æ¯, 请å‚考 perlpod 线上文件.
=head1 NAME
-perlcn - ¼òÌåÖÐÎÄ Perl Ö¸ÄÏ
+perlcn - 简体中文 Perl 指å—
=head1 DESCRIPTION
-»¶Ó­À´µ½ Perl µÄÌìµØ!
+欢迎æ¥åˆ° Perl 的天地!
-´Ó 5.8.0 °æ¿ªÊ¼, Perl ¾ß±¸ÁËÍêÉÆµÄ Unicode (ͳһÂë) Ö§Ô®,
-Ò²Á¬´øÖ§Ô®ÁËÐí¶àÀ­¶¡ÓïϵÒÔÍâµÄ±àÂ뷽ʽ; CJK (ÖÐÈÕº«) ±ãÊÇÆäÖеÄÒ»²¿·Ý.
-Unicode Êǹú¼ÊÐԵıê×¼, ÊÔͼº­¸ÇÊÀ½çÉÏËùÓеÄ×Ö·û: Î÷·½ÊÀ½ç, ¶«·½ÊÀ½ç,
-ÒÔ¼°Á½Õß¼äµÄÒ»ÇÐ (Ï£À°ÎÄ, ÐðÀûÑÇÎÄ, ÑÇÀ­²®ÎÄ, Ï£²®À´ÎÄ, Ó¡¶ÈÎÄ,
-Ó¡µØ°²ÎÄ, µÈµÈ). ËüÒ²ÈÝÄÉÁ˶àÖÖ×÷ҵϵͳÓëÆ½Ì¨ (Èç PC ¼°Âó½ðËþ).
+从 5.8.0 版开始, Perl 具备了完善的 Unicode (统一ç ) 支æ´,
+也连带支æ´äº†è®¸å¤šæ‹‰ä¸è¯­ç³»ä»¥å¤–çš„ç¼–ç æ–¹å¼; CJK (中日韩) 便是其中的一部份.
+Unicode 是国际性的标准, 试图涵盖世界上所有的字符: 西方世界, 东方世界,
+以åŠä¸¤è€…间的一切 (希腊文, å™åˆ©äºšæ–‡, 亚拉伯文, å¸Œä¼¯æ¥æ–‡, å°åº¦æ–‡,
+å°åœ°å®‰æ–‡, 等等). 它也容纳了多ç§ä½œä¸šç³»ç»Ÿä¸Žå¹³å° (如 PC åŠéº¦é‡‘å¡”).
-Perl ±¾ÉíÒÔ Unicode ½øÐвÙ×÷. Õâ±íʾ Perl ÄÚ²¿µÄ×Ö·û´®Êý¾Ý¿ÉÓà Unicode
-±íʾ; Perl µÄº¯Ê½ÓëËã·û (ÀýÈçÕý¹æ±íʾʽ±È¶Ô) Ò²ÄÜ¶Ô Unicode ½øÐвÙ×÷.
-ÔÚÊäÈë¼°Êä³öʱ, ΪÁË´¦ÀíÒÔ Unicode ֮ǰµÄ±àÂ뷽ʽ´æ·ÅµÄÊý¾Ý, Perl
-ÌṩÁË Encode Õâ¸öÄ£¿é, ¿ÉÒÔÈÃÄãÇáÒ׵ضÁÈ¡¼°Ð´Èë¾ÉÓеıàÂëÊý¾Ý.
+Perl 本身以 Unicode 进行æ“作. 这表示 Perl 内部的字符串数æ®å¯ç”¨ Unicode
+表示; Perl 的函å¼ä¸Žç®—符 (ä¾‹å¦‚æ­£è§„è¡¨ç¤ºå¼æ¯”对) 也能对 Unicode 进行æ“作.
+在输入åŠè¾“出时, 为了处ç†ä»¥ Unicode 之å‰çš„ç¼–ç æ–¹å¼å­˜æ”¾çš„æ•°æ®, Perl
+æä¾›äº† Encode 这个模å—, å¯ä»¥è®©ä½ è½»æ˜“地读å–åŠå†™å…¥æ—§æœ‰çš„ç¼–ç æ•°æ®.
-Encode ÑÓÉìÄ£¿éÖ§Ô®ÏÂÁмòÌåÖÐÎĵıàÂ뷽ʽ ('gb2312' ±íʾ 'euc-cn'):
+Encode å»¶ä¼¸æ¨¡å—æ”¯æ´ä¸‹åˆ—ç®€ä½“ä¸­æ–‡çš„ç¼–ç æ–¹å¼ ('gb2312' 表示 'euc-cn'):
- euc-cn Unix ÑÓÉì×Ö·û¼¯, Ò²¾ÍÊÇË׳ƵĹú±êÂë
- gb2312-raw δ¾­´¦ÀíµÄ (µÍ±ÈÌØ) GB2312 ×Ö·û±í
- gb12345 δ¾­´¦ÀíµÄÖйúÓ÷±ÌåÖÐÎıàÂë
- iso-ir-165 GB2312 + GB6345 + GB8565 + ÐÂÔö×Ö·û
- cp936 ×ÖÂëÒ³ 936, Ò²¿ÉÒÔÓà 'GBK' (À©³ä¹ú±êÂë) Ö¸Ã÷
- hz 7 ±ÈÌØÒݳöʽ GB2312 ±àÂë
+ euc-cn Unix 延伸字符集, 也就是俗称的国标ç 
+ gb2312-raw 未ç»å¤„ç†çš„ (低比特) GB2312 字符表
+ gb12345 未ç»å¤„ç†çš„中国用ç¹ä½“中文编ç 
+ iso-ir-165 GB2312 + GB6345 + GB8565 + 新增字符
+ cp936 å­—ç é¡µ 936, 也å¯ä»¥ç”¨ 'GBK' (扩充国标ç ) 指明
+ hz 7 æ¯”ç‰¹é€¸å‡ºå¼ GB2312 ç¼–ç 
-¾ÙÀýÀ´Ëµ, ½« EUC-CN ±àÂëµÄµµ°¸×ª³É Unicode, ìóÐè¼üÈëÏÂÁÐÖ¸Áî:
+举例æ¥è¯´, å°† EUC-CN ç¼–ç çš„æ¡£æ¡ˆè½¬æˆ Unicode, 祗需键入下列指令:
perl -Mencoding=euc-cn,STDOUT,utf8 -pe1 < file.euc-cn > file.utf8
-Perl Ò²ÄÚ¸½ÁË "piconv", Ò»Ö§ÍêÈ«ÒÔ Perl д³ÉµÄ×Ö·ûת»»¹¤¾ß³ÌÐò, Ó÷¨ÈçÏÂ:
+Perl 也内附了 "piconv", 一支完全以 Perl 写æˆçš„字符转æ¢å·¥å…·ç¨‹åº, 用法如下:
piconv -f euc-cn -t utf8 < file.euc-cn > file.utf8
piconv -f utf8 -t euc-cn < file.utf8 > file.euc-cn
-ÁíÍâ, ÀûÓà encoding Ä£¿é, Äã¿ÉÒÔÇáÒ×д³öÒÔ×Ö·ûΪµ¥Î»µÄ³ÌÐòÂë, ÈçÏÂËùʾ:
+å¦å¤–, 利用 encoding 模å—, ä½ å¯ä»¥è½»æ˜“写出以字符为å•ä½çš„程åºç , 如下所示:
#!/usr/bin/env perl
- # Æô¶¯ euc-cn ×Ö´®½âÎö; ±ê×¼Êä³öÈë¼°±ê×¼´íÎó¶¼ÉèΪ euc-cn ±àÂë
+ # å¯åЍ euc-cn 字串解æž; æ ‡å‡†è¾“å‡ºå…¥åŠæ ‡å‡†é”™è¯¯éƒ½è®¾ä¸º euc-cn ç¼–ç 
use encoding 'euc-cn', STDIN => 'euc-cn', STDOUT => 'euc-cn';
- print length("ÂæÍÕ"); # 2 (Ë«ÒýºÅ±íʾ×Ö·û)
- print length('ÂæÍÕ'); # 4 (µ¥ÒýºÅ±íʾ×Ö½Ú)
- print index("×»×»½Ì»å", "»×»½"); # -1 (²»°üº¬´Ë×Ó×Ö·û´®)
- print index('×»×»½Ì»å', '»×»½'); # 1 (´ÓµÚ¶þ¸ö×Ö½Ú¿ªÊ¼)
+ print length("骆驼"); # 2 (åŒå¼•å·è¡¨ç¤ºå­—符)
+ print length('骆驼'); # 4 (å•引å·è¡¨ç¤ºå­—节)
+ print index("谆谆教诲", "蛔唤"); # -1 (ä¸åŒ…嫿­¤å­å­—符串)
+ print index('谆谆教诲', '蛔唤'); # 1 (从第二个字节开始)
-ÔÚ×îºóÒ»ÁÐÀý×ÓÀï, "×»" µÄµÚ¶þ¸ö×Ö½ÚÓë "×»" µÄµÚÒ»¸ö×Ö½Ú½áºÏ³É EUC-CN
-ÂëµÄ "»×"; "×»" µÄµÚ¶þ¸ö×Ö½ÚÔòÓë "½Ì" µÄµÚÒ»¸ö×Ö½Ú½áºÏ³É "»½".
-Õâ½â¾öÁËÒÔǰ EUC-CN Âë±È¶Ô´¦ÀíÉϳ£¼ûµÄÎÊÌâ.
+在最åŽä¸€åˆ—例å­é‡Œ, "è°†" 的第二个字节与 "è°†" çš„ç¬¬ä¸€ä¸ªå­—èŠ‚ç»“åˆæˆ EUC-CN
+ç çš„ "è›”"; "è°†" 的第二个字节则与 "æ•™" çš„ç¬¬ä¸€ä¸ªå­—èŠ‚ç»“åˆæˆ "唤".
+è¿™è§£å†³äº†ä»¥å‰ EUC-CN ç æ¯”对处ç†ä¸Šå¸¸è§çš„问题.
-=head2 ¶îÍâµÄÖÐÎıàÂë
+=head2 é¢å¤–的中文编ç 
-Èç¹ûÐèÒª¸ü¶àµÄÖÐÎıàÂë, ¿ÉÒÔ´Ó CPAN (L<http://www.cpan.org/>) ÏÂÔØ
-Encode::HanExtra Ä£¿é. ËüĿǰÌṩÏÂÁбàÂ뷽ʽ:
+å¦‚æžœéœ€è¦æ›´å¤šçš„中文编ç , å¯ä»¥ä»Ž CPAN (L<http://www.cpan.org/>) 下载
+Encode::HanExtra 模å—. å®ƒç›®å‰æä¾›ä¸‹åˆ—ç¼–ç æ–¹å¼:
- gb18030 À©³ä¹ýµÄ¹ú±êÂë, °üº¬·±ÌåÖÐÎÄ
+ gb18030 扩充过的国标ç , 包å«ç¹ä½“中文
-ÁíÍâ, Encode::HanConvert Ä£¿éÔòÌṩÁ˼ò·±×ª»»ÓõÄÁ½ÖÖ±àÂë:
+å¦å¤–, Encode::HanConvert 模å—则æä¾›äº†ç®€ç¹è½¬æ¢ç”¨çš„两ç§ç¼–ç :
- big5-simp Big5 ·±ÌåÖÐÎÄÓë Unicode ¼òÌåÖÐÎÄ»¥×ª
- gbk-trad GBK ¼òÌåÖÐÎÄÓë Unicode ·±ÌåÖÐÎÄ»¥×ª
+ big5-simp Big5 ç¹ä½“中文与 Unicode 简体中文互转
+ gbk-trad GBK 简体中文与 Unicode ç¹ä½“中文互转
-ÈôÏëÔÚ GBK Óë Big5 Ö®¼ä»¥×ª, Çë²Î¿¼¸ÃÄ£¿éÄÚ¸½µÄ b2g.pl Óë g2b.pl Á½Ö§³ÌÐò,
-»òÔÚ³ÌÐòÄÚʹÓÃÏÂÁÐд·¨:
+若想在 GBK 与 Big5 之间互转, 请å‚考该模å—内附的 b2g.pl 与 g2b.pl 两支程åº,
+或在程åºå†…使用下列写法:
use Encode::HanConvert;
- $euc_cn = big5_to_gb($big5); # ´Ó Big5 תΪ GBK
- $big5 = gb_to_big5($euc_cn); # ´Ó GBK תΪ Big5
+ $euc_cn = big5_to_gb($big5); # 从 Big5 转为 GBK
+ $big5 = gb_to_big5($euc_cn); # 从 GBK 转为 Big5
-=head2 ½øÒ»²½µÄÐÅÏ¢
+=head2 进一步的信æ¯
-Çë²Î¿¼ Perl ÄÚ¸½µÄ´óÁ¿ËµÃ÷Îļþ (²»ÐÒÈ«ÊÇÓÃÓ¢ÎÄдµÄ), À´Ñ§Ï°¸ü¶à¹ØÓÚ
-Perl µÄ֪ʶ, ÒÔ¼° Unicode µÄʹÓ÷½Ê½. ²»¹ý, ÍⲿµÄ×ÊÔ´Ï൱·á¸»:
+请å‚考 Perl 内附的大é‡è¯´æ˜Žæ–‡ä»¶ (ä¸å¹¸å…¨æ˜¯ç”¨è‹±æ–‡å†™çš„), æ¥å­¦ä¹ æ›´å¤šå…³äºŽ
+Perl 的知识, ä»¥åŠ Unicode 的使用方å¼. ä¸è¿‡, 外部的资æºç›¸å½“丰富:
-=head2 Ìṩ Perl ×ÊÔ´µÄÍøÖ·
+=head2 æä¾› Perl 资æºçš„网å€
=over 4
=item L<http://www.perl.com/>
-Perl µÄÊ×Ò³ (ÓÉÅ·À³Àñ¹«Ë¾Î¬»¤)
+Perl 的首页 (由欧莱礼公å¸ç»´æŠ¤)
=item L<http://www.cpan.org/>
-Perl ×ÛºÏµä²ØÍø (Comprehensive Perl Archive Network)
+Perl 综åˆå…¸è—网 (Comprehensive Perl Archive Network)
=item L<http://lists.perl.org/>
-Perl ÓʵÝÂÛ̳һÀÀ
+Perl 邮递论å›ä¸€è§ˆ
=back
-=head2 ѧϰ Perl µÄÍøÖ·
+=head2 学习 Perl 的网å€
=over 4
=item L<http://www.oreilly.com.cn/index.php?func=booklist&cat=68>
-¼òÌåÖÐÎİæµÄÅ·À³Àñ Perl Êé½å
+简体中文版的欧莱礼 Perl 书藉
=back
-=head2 Perl ʹÓÃÕß¼¯»á
+=head2 Perl 使用者集会
=over 4
=item L<http://www.pm.org/groups/asia.html>
-Öйú Perl ÍÆ¹ã×éÒ»ÀÀ
+中国 Perl 推广组一览
=back
-=head2 Unicode Ïà¹ØÍøÖ·
+=head2 Unicode 相关网å€
=over 4
=item L<http://www.unicode.org/>
-Unicode ѧÊõѧ»á (Unicode ±ê×¼µÄÖÆ¶¨Õß)
+Unicode 学术学会 (Unicode 标准的制定者)
=item L<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>
-Unix/Linux É쵀 UTF-8 ¼° Unicode ´ð¿ÍÎÊ
+Unix/Linux 上的 UTF-8 åŠ Unicode 答客问
=back
@@ -145,6 +139,6 @@ L<Encode>, L<Encode::CN>, L<encoding>, L<perluniintro>, L<perlunicode>
Jarkko Hietaniemi E<lt>jhi@iki.fiE<gt>
-Audrey Tang (ÌÆ·ï) E<lt>audreyt@audreyt.orgE<gt>
+Audrey Tang (å”凤) E<lt>audreyt@audreyt.orgE<gt>
=cut
diff --git a/gnu/usr.bin/perl/README.cygwin b/gnu/usr.bin/perl/README.cygwin
index 4e3e6f57ff8..b2ea7bd7137 100644
--- a/gnu/usr.bin/perl/README.cygwin
+++ b/gnu/usr.bin/perl/README.cygwin
@@ -31,7 +31,7 @@ L<http://www.cygwin.com/>
A recent net or commercial release of Cygwin is required.
-At the time this document was last updated, Cygwin 1.7.10 was current.
+At the time this document was last updated, Cygwin 1.7.16 was current.
=head2 Cygwin Configuration
@@ -43,7 +43,7 @@ Perl usage.
B<NOTE:> The binaries that are built will run on all Win32 versions.
They do not depend on your host system (WinXP/Win2K/Win7) or your
Cygwin configuration (binary/text mounts, cvgserver).
-The only dependencies come from hard-coded pathnames like C</usr/local>.
+The only dependencies come from hard-coded pathnames like F</usr/local>.
However, your host system and Cygwin configuration will affect Perl's
runtime behavior (see L</"TEST">).
@@ -325,7 +325,7 @@ to portability, more information can be found in the Cygwin documentation.
Cygwin pathnames are separated by forward (F</>) slashes, Universal
Naming Codes (F<//UNC>) are also supported Since cygwin-1.7 non-POSIX
-pathnames are disencouraged. Names may contain all printable
+pathnames are discouraged. Names may contain all printable
characters.
File names are case insensitive, but case preserving. A pathname that
@@ -340,7 +340,7 @@ Since cygwin-1.7 pathnames are UTF-8 encoded.
=item * Text/Binary
-Since cywgin-1.7 textmounts are deprecated and stronlgy discouraged.
+Since cygwin-1.7 textmounts are deprecated and strongly discouraged.
When a file is opened it is in either text or binary mode. In text mode
a file is subject to CR/LF/Ctrl-Z translations. With Cygwin, the default
diff --git a/gnu/usr.bin/perl/README.haiku b/gnu/usr.bin/perl/README.haiku
index 50693a028f3..1f37bfd89ec 100644
--- a/gnu/usr.bin/perl/README.haiku
+++ b/gnu/usr.bin/perl/README.haiku
@@ -22,9 +22,9 @@ The build procedure is completely standard:
Make perl executable and create a symlink for libperl:
chmod a+x /boot/common/bin/perl
- cd /boot/common/lib; ln -s perl5/5.16.3/BePC-haiku/CORE/libperl.so .
+ cd /boot/common/lib; ln -s perl5/5.18.2/BePC-haiku/CORE/libperl.so .
-Replace C<5.16.3> with your respective version of Perl.
+Replace C<5.18.2> with your respective version of Perl.
=head1 KNOWN PROBLEMS
@@ -45,7 +45,7 @@ Haiku yet.
=item *
A subtest of the F<ext/Sys/Syslog/t/syslog.t> test fails. This is due to Haiku
-not implementing C</dev/log> support yet.
+not implementing F</dev/log> support yet.
=item *
diff --git a/gnu/usr.bin/perl/README.hpux b/gnu/usr.bin/perl/README.hpux
index 7bd4b93299d..6f65c6b22df 100644
--- a/gnu/usr.bin/perl/README.hpux
+++ b/gnu/usr.bin/perl/README.hpux
@@ -20,23 +20,13 @@ occurrence is on CD 5012-7954 and can be installed using
swinstall -s /cdrom perl
-assuming you have mounted that CD on /cdrom. In this version the
-following modules were installed:
-
- ActivePerl::DocTools-0.04 HTML::Parser-3.19 XML::DOM-1.25
- Archive::Tar-0.072 HTML::Tagset-3.03 XML::Parser-2.27
- Compress::Zlib-1.08 MIME::Base64-2.11 XML::Simple-1.05
- Convert::ASN1-0.10 Net-1.07 XML::XPath-1.09
- Digest::MD5-2.11 PPM-2.1.5 XML::XSLT-0.32
- File::CounterFile-0.12 SOAP::Lite-0.46 libwww-perl-5.51
- Font::AFM-1.18 Storable-1.011 libxml-perl-0.07
- HTML-Tree-3.11 URI-1.11 perl-ldap-0.23
+assuming you have mounted that CD on /cdrom.
That build was a portable hppa-1.1 multithread build that supports large
files compiled with gcc-2.9-hppa-991112.
If you perform a new installation, then (a newer) Perl will be installed
-automatically. Preinstalled HP-UX systems now slao have more recent versions
+automatically. Pre-installed HP-UX systems now have more recent versions
of Perl and the updated modules.
The official (threaded) builds from HP, as they are shipped on the
@@ -53,17 +43,28 @@ on /cdrom), issue this command:
perl.Perl5-32 D.5.8.8.B 32-bit 5.8.8 Perl Programming Language with Extensions
perl.Perl5-64 D.5.8.8.B 64-bit 5.8.8 Perl Programming Language with Extensions
+To see what is installed on your system:
+
+ # swlist -R perl
+ # perl E.5.8.8.J Perl Programming Language
+ # perl.Perl5-32 E.5.8.8.J 32-bit Perl Programming Language with Extensions
+ perl.Perl5-32.PERL-MAN E.5.8.8.J 32-bit Perl Man Pages for IA
+ perl.Perl5-32.PERL-RUN E.5.8.8.J 32-bit Perl Binaries for IA
+ # perl.Perl5-64 E.5.8.8.J 64-bit Perl Programming Language with Extensions
+ perl.Perl5-64.PERL-MAN E.5.8.8.J 64-bit Perl Man Pages for IA
+ perl.Perl5-64.PERL-RUN E.5.8.8.J 64-bit Perl Binaries for IA
+
=head2 Using perl from HP's porting centre
-HP porting centre tries very hard to keep up with customer demand and
-release updates from the Open Source community. Having precompiled
-Perl binaries available is obvious.
+HP porting centre tries to keep up with customer demand and release
+updates from the Open Source community. Having precompiled Perl binaries
+available is obvious, though "up-to-date" is something relative. At the
+moment of writing only perl-5.10.1 was available (with 5.16.3 being the
+latest stable release from the porters point of view).
The HP porting centres are limited in what systems they are allowed
to port to and they usually choose the two most recent OS versions
-available. This means that at the moment of writing, there are only
-HP-UX 11.11 (pa-risc 2.0) and HP-UX 11.23 (Itanium 2) ports available
-on the porting centres.
+available.
HP has asked the porting centre to move Open Source binaries
from /opt to /usr/local, so binaries produced since the start
@@ -72,6 +73,12 @@ of July 2002 are located in /usr/local.
One of HP porting centres URL's is L<http://hpux.connect.org.uk/>
The port currently available is built with GNU gcc.
+=head2 Other prebuilt perl binaries
+
+To get even more recent perl depots for the whole range of HP-UX, visit
+H.Merijn Brand's site at L<http://mirrors.develooper.com/hpux/#Perl>.
+Carefully read the notes to see if the available versions suit your needs.
+
=head2 Compiling Perl 5 on HP-UX
When compiling Perl, you must use an ANSI C compiler. The C compiler
@@ -246,8 +253,8 @@ is told to have Madison 6. As of the date of this document's last update,
the following systems contain Itanium or Itanium 2 chips (this is likely
to be out of date):
- BL60p, BL860c, BL870c, cx2600, cx2620, rx1600, rx1620, rx2600,
- rx2600hptc, rx2620, rx2660, rx3600, rx4610, rx4640, rx5670,
+ BL60p, BL860c, BL870c, BL890c, cx2600, cx2620, rx1600, rx1620, rx2600,
+ rx2600hptc, rx2620, rx2660, rx2800, rx3600, rx4610, rx4640, rx5670,
rx6600, rx7420, rx7620, rx7640, rx8420, rx8620, rx8640, rx9610,
sx1000, sx2000
@@ -262,14 +269,14 @@ To see all about your machine, type
Not all architectures (PA = PA-RISC, IPF = Itanium Processor Family)
support all versions of HP-UX, here is a short list
- HP-UX version Kernel Architecture
- ------------- ------ ------------
- 10.20 32 bit PA
- 11.00 32/64 PA
- 11.11 11i v1 32/64 PA
- 11.22 11i v2 64 IPF
- 11.23 11i v2 64 PA & IPF
- 11.31 11i v3 64 PA & IPF
+ HP-UX version Kernel Architecture End-of-factory support
+ ------------- ------ ------------ ----------------------------------
+ 10.20 32 bit PA 30-Jun-2003
+ 11.00 32/64 PA 31-Dec-2006
+ 11.11 11i v1 32/64 PA 31-Dec-2015
+ 11.22 11i v2 64 IPF 30-Apr-2004
+ 11.23 11i v2 64 PA & IPF 31-Dec-2015
+ 11.31 11i v3 64 PA & IPF 31-Dec-2020 (PA) 31-Dec-2022 (IPF)
See for the full list of hardware/OS support and expected end-of-life
L<http://www.hp.com/go/hpuxservermatrix>
@@ -403,19 +410,19 @@ for updates/patches. Enter "ANSI" as keyword.
When you are going to use the GNU C compiler (gcc), and you don't have
gcc yet, you can either build it yourself from the sources (available
from e.g. L<http://gcc.gnu.org/mirrors.html>) or fetch
-a prebuilt binary from the HP porting center. gcc prebuilds can be
-fetched from
-L<http://h21007.www2.hp.com/dspp/tech/tech_TechSoftwareDetailPage_IDX/1,1703,547,00.html>
+a prebuilt binary from the HP porting center
+at L<http://hpux.connect.org.uk/hppd/cgi-bin/search?term=gcc&Search=Search>
+or from the DSPP (you need to be a member) at
+L<http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=2a08725cc2f02110725cc2f02110275d6e10RCRD&jumpid=reg_r1002_usen_c-001_title_r0001>
(Browse through the list, because there are often multiple versions of
the same package available).
-Above mentioned distributions are depots. H.Merijn Brand has made prebuilt
+Most mentioned distributions are depots. H.Merijn Brand has made prebuilt
gcc binaries available on L<http://mirrors.develooper.com/hpux/> and/or
-L<http://www.cmve.net/~merijn/> for HP-UX 10.20, HP-UX 11.00, HP-UX 11.11
-(HP-UX 11i v1), and HP-UX 11.23 (HP-UX 11i v2) in both 32- and 64-bit
-versions. These are bzipped tar archives that also include recent GNU
-binutils and GNU gdb. Read the instructions on that page to rebuild gcc
-using itself.
+L<http://www.cmve.net/~merijn/> for HP-UX 10.20 (only 32bit), HP-UX 11.00,
+HP-UX 11.11 (HP-UX 11i v1), and HP-UX 11.23 (HP-UX 11i v2 PA-RISC) in both
+32- and 64-bit versions. For HP-UX 11.23 IPF and HP-UX 11.31 IPF depots are
+available too. The IPF versions do not need two versions of GNU gcc.
On PA-RISC you need a different compiler for 32-bit applications and for
64-bit applications. On PA-RISC, 32-bit objects and 64-bit objects do
diff --git a/gnu/usr.bin/perl/README.jp b/gnu/usr.bin/perl/README.jp
index 934a91f9180..2a1fa57939c 100644
--- a/gnu/usr.bin/perl/README.jp
+++ b/gnu/usr.bin/perl/README.jp
@@ -1,24 +1,18 @@
-If you read this file _as_is_, just ignore the funny characters you
-see. It is written in the POD format (see perlpod manpage) which is
-specially designed to be readable as is.
-
-The following documentation is written in euc-jp encoding.
-
-=encoding euc-jp
+=encoding utf8
=head1 NAME
-perljp - ÆüËܸì Perl ¥¬¥¤¥É
+perljp - 日本語 Perl ガイド
-=head1 ÀâÌÀ
+=head1 説明
-Perl ¤ÎÀ¤³¦¤Ø¤è¤¦¤³¤½!
+Perl ã®ä¸–界ã¸ã‚ˆã†ã“ã!
-Perl 5.8.0 ¤è¤ê¡¢Unicode¥µ¥Ý¡¼¥È¤¬ÂçÉý¤Ë¶¯²½¤µ¤ì¡¢¤½¤Î·ë²Ì¥é¥Æ¥óʸ»ú°Ê³°¤Îʸ»ú¥³¡¼¥É¤Î¥µ¥Ý¡¼¥È¤¬ CJK (Ãæ¹ñ¸ì¡¢ÆüËܸ졢¥Ï¥ó¥°¥ë)¤ò´Þ¤á¤Æ²Ã¤ï¤ê¤Þ¤·¤¿¡£Unicode¤ÏÀ¤³¦Ãæ¤Îʸ»ú¤ò°ì¤Ä¤Îʸ»ú¥³¡¼¥É¤Ç°·¤¦¤³¤È¤òÌܻؤ·¤¿É¸½àµ¬³Ê¤Ç¤¢¤ê¡¢Å줫¤éÀ¾¡¢¤Ï¤¿¤Þ¤¿¤½¤Î´Ö¤Îʸ»ú¡Ê¥®¥ê¥·¥ãʸ»ú¡¢¥­¥ê¡¼¥ëʸ»ú¡¢¥¢¥é¥Ó¥¢Ê¸»ú¡¢¥Ø¥Ö¥é¥¤Ê¸»ú¡¢¥Ç¥£¡¼¥ô¥¡¥Ê¥¬¡¼¥êʸ»ú¡¢¤Ê¤É¤Ê¤É¡Ë¤ä¡¢¤³¤ì¤Þ¤Ç¤ÏOS¥Ù¥ó¥À¡¼¤¬ÆÈ¼«¤ËÄê¤á¤Æ¤¤¤¿Ê¸»ú(PC¤ª¤è¤ÓMacintosh)¤¬¤¹¤Ç¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
+Perl 5.8.0 よりã€Unicodeサãƒãƒ¼ãƒˆãŒå¤§å¹…ã«å¼·åŒ–ã•れã€ãã®çµæžœãƒ©ãƒ†ãƒ³æ–‡å­—ä»¥å¤–ã®æ–‡å­—コードã®ã‚µãƒãƒ¼ãƒˆãŒ CJK (ä¸­å›½èªžã€æ—¥æœ¬èªžã€ãƒãƒ³ã‚°ãƒ«)ã‚’å«ã‚ã¦åŠ ã‚りã¾ã—ãŸã€‚Unicodeã¯ä¸–ç•Œä¸­ã®æ–‡å­—を一ã¤ã®æ–‡å­—ã‚³ãƒ¼ãƒ‰ã§æ‰±ã†ã“ã¨ã‚’目指ã—ãŸæ¨™æº–è¦æ ¼ã§ã‚ã‚Šã€æ±ã‹ã‚‰è¥¿ã€ã¯ãŸã¾ãŸãã®é–“ã®æ–‡å­—(ギリシャ文字ã€ã‚­ãƒªãƒ¼ãƒ«æ–‡å­—ã€ã‚¢ãƒ©ãƒ“ア文字ã€ãƒ˜ãƒ–ライ文字ã€ãƒ‡ã‚£ãƒ¼ãƒ´ã‚¡ãƒŠã‚¬ãƒ¼ãƒªæ–‡å­—ã€ãªã©ãªã©ï¼‰ã‚„ã€ã“れã¾ã§ã¯OSベンダーãŒç‹¬è‡ªã«å®šã‚ã¦ã„ãŸæ–‡å­—(PCãŠã‚ˆã³Macintosh)ãŒã™ã§ã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚
-Perl ¼«¿È¤Ï Unicode ¤Çưºî¤·¤Þ¤¹¡£Perl ¥¹¥¯¥ê¥×¥ÈÆâ¤Îʸ»úÎó¥ê¥Æ¥é¥ë¤äÀµµ¬É½¸½¤Ï Unicode ¤òÁ°Äó¤È¤·¤Æ¤¤¤Þ¤¹¡£¤½¤·¤ÆÆþ½ÐÎϤΤ¿¤á¤Ë¤Ï¡¢¤³¤ì¤Þ¤Ç»È¤ï¤ì¤Æ¤­¤¿¤µ¤Þ¤¶¤Þ¤Êʸ»ú¥³¡¼¥É¤ËÂбþ¤¹¤ë¥â¥¸¥å¡¼¥ë¡¢¡Ö Encode ¡×¤¬É¸½àÁõÈ÷¤µ¤ì¤Æ¤ª¤ê¡¢Unicode ¤È¤³¤ì¤é¤Îʸ»ú¥³¡¼¥É¤ÎÁê¸ßÊÑ´¹¤â´Êñ¤Ë¹Ô¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
+Perl 自身㯠Unicode ã§å‹•作ã—ã¾ã™ã€‚Perl ã‚¹ã‚¯ãƒªãƒ—ãƒˆå†…ã®æ–‡å­—列リテラルや正è¦è¡¨ç¾ã¯ Unicode ã‚’å‰æã¨ã—ã¦ã„ã¾ã™ã€‚ãã—ã¦å…¥å‡ºåŠ›ã®ãŸã‚ã«ã¯ã€ã“れã¾ã§ä½¿ã‚れã¦ããŸã•ã¾ã–ã¾ãªæ–‡å­—コードã«å¯¾å¿œã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã€ã€Œ Encode ã€ãŒæ¨™æº–装備ã•れã¦ãŠã‚Šã€Unicode ã¨ã“ã‚Œã‚‰ã®æ–‡å­—コードã®ç›¸äº’変æ›ã‚‚ç°¡å˜ã«è¡Œãˆã‚‹ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ã€‚
-¸½»þÅÀ¤Ç Encode ¤¬¥µ¥Ý¡¼¥È¤¹¤ëʸ»ú¥³¡¼¥É¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£
+ç¾æ™‚点㧠Encode ãŒã‚µãƒãƒ¼ãƒˆã™ã‚‹æ–‡å­—コードã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™ã€‚
7bit-jis AdobeStandardEncoding AdobeSymbol AdobeZdingbat
ascii big5 big5-hkscs cp1006
@@ -50,32 +44,32 @@ Perl ¼«¿È¤Ï Unicode ¤Çưºî¤·¤Þ¤¹¡£Perl ¥¹¥¯¥ê¥×¥ÈÆâ¤Îʸ»úÎó¥ê¥Æ¥é¥ë¤äÀµµ¬É½¸½¤Ï
UTF-16LE UTF-32 UTF-32BE UTF-32LE
utf8 viscii
-(Á´114¼ïÎà)
+(全114種類)
-Î㤨¤Ð¡¢Ê¸»ú¥³¡¼¥ÉFOO¤Î¥Õ¥¡¥¤¥ë¤òUTF-8¤ËÊÑ´¹¤¹¤ë¤Ë¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£
+例ãˆã°ã€æ–‡å­—コードFOOã®ãƒ•ァイルをUTF-8ã«å¤‰æ›ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã—ã¾ã™ã€‚
perl -Mencoding=FOO,STDOUT,utf8 -pe1 < file.FOO > file.utf8
-¤Þ¤¿¡¢Perl¤Ë¤Ï¡¢Á´Éô¤¬Perl¤Ç½ñ¤«¤ì¤¿Ê¸»ú¥³¡¼¥ÉÊÑ´¹¥æ¡¼¥Æ¥£¥ê¥Æ¥£¡¢piconv¤âÉÕ°¤·¤Æ¤¤¤ë¤Î¤Ç¡¢°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
+ã¾ãŸã€Perlã«ã¯ã€å…¨éƒ¨ãŒPerlã§æ›¸ã‹ã‚ŒãŸæ–‡å­—コード変æ›ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã€piconvも付属ã—ã¦ã„ã‚‹ã®ã§ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
piconv -f FOO -t utf8 < file.FOO > file.utf8
piconv -f utf8 -t FOO < file.utf8 > file.FOO
=head2 About (jcode.pl|Jcode.pm|JPerl)
-5.8°ÊÁ°¤Î¡¢¥¹¥¯¥ê¥×¥È¤¬EUC-JP¤Ç¤¢¤ì¤Ð¥ê¥Æ¥é¥ë¤À¤±¤Ï°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤·¤¿¡£¤Þ¤¿¡¢Æþ½ÐÎϤò°·¤¦¥â¥¸¥å¡¼¥ë¤È¤·¤Æ¤ÏJcode.pm¤¬( http://openlab.ring.gr.jp/Jcode/ )¡¢perl4ÍѤΥ桼¥Æ¥£¥ê¥Æ¥£¤È¤·¤Æ¤Ïjcode.pl¤¬¤½¤ì¤¾¤ì¸ºß¤·¡¢ÆüËܸì¤Î°·¤¨¤ëCGI¤Ç¤è¤¯ÍøÍѤµ¤ì¤Æ¤¤¤ë¤³¤È¤ò¸æÂ¸¤¸¤ÎÊý¤â¾¯¤Ê¤¯¤Ê¤¤¤«¤È»×¤ï¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢ÆüËܸì¤Ë¤è¤ëÀµµ¬É½¸½¤ò¤¦¤Þ¤¯°·¤¦¤³¤È¤ÏÉÔ²Äǽ¤Ç¤·¤¿¡£
+5.8以å‰ã®ã€ã‚¹ã‚¯ãƒªãƒ—トãŒEUC-JPã§ã‚れã°ãƒªãƒ†ãƒ©ãƒ«ã ã‘ã¯æ‰±ã†ã“ã¨ãŒã§ãã¾ã—ãŸã€‚ã¾ãŸã€å…¥å‡ºåŠ›ã‚’æ‰±ã†ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¨ã—ã¦ã¯Jcode.pmãŒ( http://openlab.ring.gr.jp/Jcode/ )ã€perl4用ã®ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã¨ã—ã¦ã¯jcode.plãŒãれãžã‚Œå­˜åœ¨ã—ã€æ—¥æœ¬èªžã®æ‰±ãˆã‚‹CGIã§ã‚ˆã利用ã•れã¦ã„ã‚‹ã“ã¨ã‚’御存ã˜ã®æ–¹ã‚‚å°‘ãªããªã„ã‹ã¨æ€ã‚れã¾ã™ã€‚ãŸã ã—ã€æ—¥æœ¬èªžã«ã‚ˆã‚‹æ­£è¦è¡¨ç¾ã‚’ã†ã¾ã扱ã†ã“ã¨ã¯ä¸å¯èƒ½ã§ã—ãŸã€‚
-5.005°ÊÁ°¤ÎPerl¤Ë¤Ï¡¢ÆüËܸì¤ËÆÃ²½¤·¤¿¥í¡¼¥«¥é¥¤¥ºÈÇ¡¢Jperl¤¬Â¸ºß¤·¤Þ¤·¤¿( http://homepage2.nifty.com/kipp/perl/jperl/index.html )¡£¤Þ¤¿¡¢Mac OS 9.x/ClassicÍѤÎPerl¡¢MacPerl¤ÎÆüËܸìÈǤâMacJPerl¤È¤·¤ÆÂ¸ºß¤·¤Æ¤Þ¤·¤¿¡£( http://habilis.net/macjperl/ ).¤³¤ì¤é¤Ç¤Ïʸ»ú¥³¡¼¥É¤È¤·¤ÆEUC-JP¤Ë²Ã¤¨Shift_JIS¤â¤½¤Î¤Þ¤Þ°·¤¦¤³¤È¤¬¤Ç¤­¡¢¤Þ¤¿ÆüËܸì¤Ë¤è¤ëÀµµ¬É½¸½¤ò°·¤¦¤³¤È¤â²Äǽ¤Ç¤·¤¿¡£
+5.005以å‰ã®Perlã«ã¯ã€æ—¥æœ¬èªžã«ç‰¹åŒ–ã—ãŸãƒ­ãƒ¼ã‚«ãƒ©ã‚¤ã‚ºç‰ˆã€JperlãŒå­˜åœ¨ã—ã¾ã—ãŸ( http://homepage2.nifty.com/kipp/perl/jperl/index.html )。ã¾ãŸã€Mac OS 9.x/Classic用ã®Perlã€MacPerlã®æ—¥æœ¬èªžç‰ˆã‚‚MacJPerlã¨ã—ã¦å­˜åœ¨ã—ã¦ã¾ã—ãŸã€‚( http://habilis.net/macjperl/ ).ã“れらã§ã¯æ–‡å­—コードã¨ã—ã¦EUC-JPã«åŠ ãˆShift_JISã‚‚ãã®ã¾ã¾æ‰±ã†ã“ã¨ãŒã§ãã€ã¾ãŸæ—¥æœ¬èªžã«ã‚ˆã‚‹æ­£è¦è¡¨ç¾ã‚’扱ã†ã“ã¨ã‚‚å¯èƒ½ã§ã—ãŸã€‚
-Perl5.8¤Ç¤Ï¡¢¤³¤ì¤é¤Îµ¡Ç½¤¬¤¹¤Ù¤ÆPerlËÜÂΤÀ¤±¤Ç¼Â¸½¤Ç¤­¤ë¾å¤Ë¡¢ÆüËܸì¤Î¤ß¤Ê¤é¤º¾åµ­114¤Îʸ»ú¥³¡¼¥É¤ò¤¹¤Ù¤Æ¡¢¤·¤«¤âƱ»þ¤Ë°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤µ¤é¤Ë¡¢CPAN¤Ê¤É¤«¤é¿·¤·¤¤Ê¸»ú¥³¡¼¥ÉÍѤΥ⥸¥å¡¼¥ë¤òÆþ¼ê¤¹¤ë¤³¤È¤â´Êñ¤Ë¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
+Perl5.8ã§ã¯ã€ã“ã‚Œã‚‰ã®æ©Ÿèƒ½ãŒã™ã¹ã¦Perl本体ã ã‘ã§å®Ÿç¾ã§ãる上ã«ã€æ—¥æœ¬èªžã®ã¿ãªã‚‰ãšä¸Šè¨˜114ã®æ–‡å­—コードをã™ã¹ã¦ã€ã—ã‹ã‚‚åŒæ™‚ã«æ‰±ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ã•らã«ã€CPANãªã©ã‹ã‚‰æ–°ã—ã„æ–‡å­—コード用ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’入手ã™ã‚‹ã“ã¨ã‚‚ç°¡å˜ã«ã§ãるよã†ã«ãªã£ã¦ã„ã¾ã™ã€‚
=over 4
=item *
-Æþ½ÐÎÏ
+入出力
-°Ê²¼¤ÎÎã¤Ï¤¤¤Å¤ì¤âShift_JIS¤ÎÆþÎϤòEUC-JP¤ËÊÑ´¹¤·¤Æ½ÐÎϤ·¤Þ¤¹¡£
+以下ã®ä¾‹ã¯ã„ã¥ã‚Œã‚‚Shift_JISã®å…¥åŠ›ã‚’EUC-JPã«å¤‰æ›ã—ã¦å‡ºåŠ›ã—ã¾ã™ã€‚
# jcode.pl
require "jcode.pl";
@@ -94,7 +88,7 @@ Perl5.8¤Ç¤Ï¡¢¤³¤ì¤é¤Îµ¡Ç½¤¬¤¹¤Ù¤ÆPerlËÜÂΤÀ¤±¤Ç¼Â¸½¤Ç¤­¤ë¾å¤Ë¡¢ÆüËܸì¤Î¤ß¤Ê¤é¤º¾
from_to($_, 'shiftjis', 'euc-jp');
print;
}
- # Perl 5.8 - encoding ¤òÍøÍѤ·¤Æ
+ # Perl 5.8 - encoding を利用ã—ã¦
use encoding 'euc-jp', STDIN => 'shiftjis';
while(<>){
print;
@@ -102,33 +96,33 @@ Perl5.8¤Ç¤Ï¡¢¤³¤ì¤é¤Îµ¡Ç½¤¬¤¹¤Ù¤ÆPerlËÜÂΤÀ¤±¤Ç¼Â¸½¤Ç¤­¤ë¾å¤Ë¡¢ÆüËܸì¤Î¤ß¤Ê¤é¤º¾
=item *
-Jperl ¸ß´¹¥¹¥¯¥ê¥×¥È
+Jperl 互æ›ã‚¹ã‚¯ãƒªãƒ—ト
- ¤¤¤ï¤æ¤ë"shebang"¤òÊѹ¹¤¹¤ë¤À¤±¤Ç¡¢JperlÍѤÎscript¤Î¤Û¤È¤ó¤É¤ÏÊѹ¹¤Ê¤·¤ËÍøÍѲÄǽ¤À¤È»×¤ï¤ì¤Þ¤¹¡£
+ã„ã‚ゆる"shebang"を変更ã™ã‚‹ã ã‘ã§ã€Jperl用ã®scriptã®ã»ã¨ã‚“ã©ã¯å¤‰æ›´ãªã—ã«åˆ©ç”¨å¯èƒ½ã ã¨æ€ã‚れã¾ã™ã€‚
#!/path/to/jperl
- ¢­
+ ↓
#!/path/to/perl -Mencoding=euc-jp
- ¾Ü¤·¤¯¤Ï perldoc encoding ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
+詳ã—ã㯠perldoc encoding ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
=back
-=head2 ¤µ¤é¤Ë¾Ü¤·¤¯
+=head2 ã•らã«è©³ã—ã
-Perl¤Ë¤ÏËÄÂç¤Ê»ñÎÁ¤¬ÉÕ°¤·¤Æ¤ª¤ê¡¢Perl¤Î¿·µ¡Ç½¤äUnicode¥µ¥Ý¡¼¥È¡¢¤½¤·¤ÆEncode¥â¥¸¥å¡¼¥ë¤Î»ÈÍÑË¡¤Ê¤É¤¬ºÙ¤«¤¯ÌÖÍ夵¤ì¤Æ¤¤¤Þ¤¹¡Ê»Äǰ¤Ê¤¬¤é¡¢¤Û¤È¤ó¤É±Ñ¸ì¤Ç¤Ï¤¢¤ê¤Þ¤¹¤¬¡Ë¡£°Ê²¼¤Î¥³¥Þ¥ó¥É¤Ç¤½¤ì¤é¤Î°ìÉô¤ò±ÜÍ÷¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£
+Perlã«ã¯è†¨å¤§ãªè³‡æ–™ãŒä»˜å±žã—ã¦ãŠã‚Šã€Perlã®æ–°æ©Ÿèƒ½ã‚„Unicodeサãƒãƒ¼ãƒˆã€ãã—ã¦Encodeモジュールã®ä½¿ç”¨æ³•ãªã©ãŒç´°ã‹ã網羅ã•れã¦ã„ã¾ã™ï¼ˆæ®‹å¿µãªãŒã‚‰ã€ã»ã¨ã‚“ã©è‹±èªžã§ã¯ã‚りã¾ã™ãŒï¼‰ã€‚以下ã®ã‚³ãƒžãƒ³ãƒ‰ã§ãれらã®ä¸€éƒ¨ã‚’閲覧ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚
- perldoc perlunicode # Perl¤ÎUnicode¥µ¥Ý¡¼¥ÈÁ´ÈÌ
- perldoc Encode # Encode¥â¥¸¥å¡¼¥ë¤Ë´Ø¤·¤Æ
- perldoc Encode::JP # ¤¦¤ÁÆüËܸìʸ»ú¥³¡¼¥É¤Ë´Ø¤·¤Æ
+ perldoc perlunicode # Perlã®Unicodeサãƒãƒ¼ãƒˆå…¨èˆ¬
+ perldoc Encode # Encodeモジュールã«é–¢ã—ã¦
+ perldoc Encode::JP # ã†ã¡æ—¥æœ¬èªžæ–‡å­—コードã«é–¢ã—ã¦
-=head2 PerlÁ´È̤˴ؤ¹¤ë URL
+=head2 Perl全般ã«é–¢ã™ã‚‹ URL
=over 4
=item L<http://www.perl.com/>
-Perl ¥Û¡¼¥à¥Ú¡¼¥¸ (O'Reilly and Associates)
+Perl ホームページ (O'Reilly and Associates)
=item L<http://www.cpan.org/>
@@ -136,29 +130,29 @@ CPAN (Comprehensive Perl Archive Network)
=item L<http://lists.perl.org/>
-Perl ¥á¡¼¥ê¥ó¥°¥ê¥¹¥È½¸
+Perl メーリングリスト集
=back
-=head2 Perl¤Î½¤ÆÀ¤ËÌòΩ¤Ä URL
+=head2 Perlã®ä¿®å¾—ã«å½¹ç«‹ã¤ URL
=over 4
=item L<http://www.oreilly.com.tw/>
-O'Reilly ¼Ò¤ÎPerl´ØÏ¢½ñÀÒ(ÈËÂλúÃæ¹ñ¸ì)
+O'Reilly 社ã®Perl関連書ç±(ç¹ä½“字中国語)
=item L<http://www.oreilly.com.cn/>
-O'Reilly ¼Ò¤ÎPerl´ØÏ¢½ñÀÒ(´ÊÂλúÃæ¹ñ¸ì)
+O'Reilly 社ã®Perl関連書ç±(簡体字中国語)
=item L<http://www.oreilly.co.jp/catalog/>
-¥ª¥é¥¤¥ê¡¼¼Ò¤ÎPerl´ØÏ¢½ñÀÒ(ÆüËܸì)
+オライリー社ã®Perl関連書ç±(日本語)
=back
-=head2 Perl ¥æ¡¼¥¶¡¼¥°¥ë¡¼¥×
+=head2 Perl ユーザーグループ
=over 4
@@ -166,13 +160,13 @@ O'Reilly ¼Ò¤ÎPerl´ØÏ¢½ñÀÒ(´ÊÂλúÃæ¹ñ¸ì)
=back
-=head2 Unicode´ØÏ¢¤ÎURL
+=head2 Unicode関連ã®URL
=over 4
=item L<http://www.unicode.org/>
-Unicode ¥³¥ó¥½¡¼¥·¥¢¥à (Unicodeµ¬³Ê¤ÎÁªÄêÃÄÂÎ)
+Unicode コンソーシアム (Unicodeè¦æ ¼ã®é¸å®šå›£ä½“)
=item L<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>
@@ -180,13 +174,13 @@ UTF-8 and Unicode FAQ for Unix/Linux
=item L<http://wiki.kldp.org/Translations/html/UTF8-Unicode-KLDP/UTF8-Unicode-KLDP.html>
-UTF-8 and Unicode FAQ for Unix/Linux (¥Ï¥ó¥°¥ëÌõ)
+UTF-8 and Unicode FAQ for Unix/Linux (ãƒãƒ³ã‚°ãƒ«è¨³)
=back
=head1 AUTHORS
Jarkko Hietaniemi E<lt>jhi@iki.fiE<gt>
-Dan Kogai (¾®»ô¡¡ÃÆ) E<lt>dankogai@dan.co.jpE<gt>
+Dan Kogai (å°é£¼ã€€å¼¾) E<lt>dankogai@dan.co.jpE<gt>
=cut
diff --git a/gnu/usr.bin/perl/README.ko b/gnu/usr.bin/perl/README.ko
index 4f23ea9a14c..26321354132 100644
--- a/gnu/usr.bin/perl/README.ko
+++ b/gnu/usr.bin/perl/README.ko
@@ -1,138 +1,132 @@
-If you read this file _as_is_, just ignore the funny characters you
-see. It is written in the POD format (see perlpod manpage) which is
-specially designed to be readable as is.
+=encoding utf8
-This file is in Korean encoded in EUC-KR.
-
-ÀÌ ¹®¼­¸¦ perldocÀ» ½á¼­ º¸Áö ¾Ê°í Á÷Á¢ º¸´Â °æ¿ì¿¡´Â °¢ ºÎºÐÀÇ
-¿ªÇÒÀ» Ç¥½ÃÇϱâ À§ÇØ ¾²ÀÎ =head, =item, 'L' µîÀº ¹«½ÃÇϽʽÿÀ.
-ÀÌ ¹®¼­´Â µû·Î perldocÀ» ¾²Áö ¾Ê°í º¸´õ¶óµµ Àдµ¥ º° ÁöÀåÀÌ
-¾ø´Â POD Çü½ÄÀ¸·Î Â¥¿© ÀÖ½À´Ï´Ù. ´õ ÀÚ¼¼ÇÑ °ÍÀº perlpod
-¸Å´º¾óÀ» Âü°íÇϽʽÿÀ.
-
-=encoding euc-kr
+ì´ ë¬¸ì„œë¥¼ perldocì„ ì¨ì„œ ë³´ì§€ 않고 ì§ì ‘ 보는 경우ì—는 ê° ë¶€ë¶„ì˜
+ì—­í• ì„ í‘œì‹œí•˜ê¸° 위해 ì“°ì¸ =head, =item, 'L' ë“±ì€ ë¬´ì‹œí•˜ì‹­ì‹œì˜¤.
+ì´ ë¬¸ì„œëŠ” 따로 perldocì„ ì“°ì§€ 않고 ë³´ë”ë¼ë„ ì½ëŠ”ë° ë³„ 지장ì´
+없는 POD 형ì‹ìœ¼ë¡œ 짜여 있습니다. ë” ìžì„¸í•œ ê²ƒì€ perlpod
+ë§¤ë‰´ì–¼ì„ ì°¸ê³ í•˜ì‹­ì‹œì˜¤.
=head1 NAME
-perlko - Perl°ú Çѱ¹¾î ÀÎÄÚµù
+perlko - Perlê³¼ 한국어 ì¸ì½”딩
=head1 DESCRIPTION
-PerlÀÇ ¼¼°è¿¡ ¿À½Å °ÍÀ» ȯ¿µÇÕ´Ï´Ù !
+Perlì˜ ì„¸ê³„ì— ì˜¤ì‹  ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤ !
-PerlÀº 5.8.0ÆÇºÎÅÍ À¯´ÏÄÚµå/ISO 10646¿¡ ´ëÇÑ ±¤¹üÀ§ÇÑ Áö¿øÀ» ÇÕ´Ï´Ù.
-À¯´ÏÄÚµå Áö¿øÀÇ ÀÏȯÀ¸·Î ÇÑÁßÀÏÀ» ºñ·ÔÇÑ ¼¼°è °¢±¹¿¡¼­
-À¯´ÏÄÚµå ÀÌÀü¿¡ ¾²°í ÀÖ¾ú°í Áö±Ýµµ ³Î¸® ¾²À̰í ÀÖ´Â ¼ö¸¹Àº ÀÎÄÚµùÀ»
-Áö¿øÇÕ´Ï´Ù. À¯´ÏÄÚµå´Â Àü ¼¼°è¿¡¼­ ¾²ÀÌ´Â ¸ðµç ¾ð¾î¸¦ À§ÇÑ Ç¥±â ü°è -
-À¯·´ÀÇ ¶óƾ ¾ËÆÄºª, ۸± ¾ËÆÄºª, ±×¸®½º ¾ËÆÄºª, Àεµ¿Í µ¿³² ¾Æ½Ã¾ÆÀÇ
-ºê¶ó¹Ì °è¿­ ½ºÅ©¸³Æ®, ¾Æ¶ø ¹®ÀÚ, È÷ºê¸® ¹®ÀÚ, ÇÑÁßÀÏÀÇ ÇÑÀÚ, Çѱ¹¾îÀÇ ÇѱÛ,
-ÀϺ»¾îÀÇ °¡³ª, ºÏ¹Ì Àεð¾ÈÀÇ Ç¥±â ü°è µî-¸¦ ¼ö¿ëÇÏ´Â °ÍÀ» ¸ñÇ¥·Î Çϰí
-Àֱ⠶§¹®¿¡ ±âÁ¸¿¡ ¾²ÀÌ´ø °¢ ¾ð¾î ¹× ±¹°¡ ±×¸®°í ¿î¿µ ü°è¿¡ °íÀ¯ÇÑ
-¹®ÀÚ ÁýÇÕ°ú ÀÎÄÚµù¿¡ ¾µ ¼ö ÀÖ´Â ¸ðµç ±ÛÀÚ´Â ¹°·ÐÀÌ°í ±âÁ¸ ¹®ÀÚ ÁýÇÕ¿¡¼­
-Áö¿øÇϰí ÀÖÁö ¾Ê´ø ¾ÆÁÖ ¸¹Àº ±ÛÀÚ¸¦ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù.
+Perlì€ 5.8.0íŒë¶€í„° 유니코드/ISO 10646ì— ëŒ€í•œ 광범위한 ì§€ì›ì„ 합니다.
+유니코드 ì§€ì›ì˜ ì¼í™˜ìœ¼ë¡œ 한중ì¼ì„ 비롯한 세계 ê°êµ­ì—서
+유니코드 ì´ì „ì— ì“°ê³  있었고 ì§€ê¸ˆë„ ë„리 ì“°ì´ê³  있는 ìˆ˜ë§Žì€ ì¸ì½”딩ì„
+ì§€ì›í•©ë‹ˆë‹¤. 유니코드는 ì „ 세계ì—서 ì“°ì´ëŠ” 모든 언어를 위한 표기 체계 -
+ìœ ëŸ½ì˜ ë¼í‹´ 알파벳, 키릴 알파벳, 그리스 알파벳, ì¸ë„와 ë™ë‚¨ 아시아ì˜
+브ë¼ë¯¸ 계열 스í¬ë¦½íЏ, ì•„ëž ë¬¸ìž, 히브리 문ìž, 한중ì¼ì˜ 한ìž, í•œêµ­ì–´ì˜ í•œê¸€,
+ì¼ë³¸ì–´ì˜ 가나, ë¶ë¯¸ ì¸ë””ì•ˆì˜ í‘œê¸° 체계 등-를 수용하는 ê²ƒì„ ëª©í‘œë¡œ 하고
+있기 ë•Œë¬¸ì— ê¸°ì¡´ì— ì“°ì´ë˜ ê° ì–¸ì–´ ë° êµ­ê°€ 그리고 ìš´ì˜ ì²´ê³„ì— ê³ ìœ í•œ
+ë¬¸ìž ì§‘í•©ê³¼ ì¸ì½”ë”©ì— ì“¸ 수 있는 모든 글ìžëŠ” 물론ì´ê³  기존 ë¬¸ìž ì§‘í•©ì—서
+ì§€ì›í•˜ê³  있지 ì•Šë˜ ì•„ì£¼ ë§Žì€ ê¸€ìžë¥¼ í¬í•¨í•˜ê³  있습니다.
-PerlÀº ³»ºÎÀûÀ¸·Î À¯´ÏÄڵ带 ¹®ÀÚ Ç¥ÇöÀ» À§ÇØ »ç¿ëÇÕ´Ï´Ù. º¸´Ù ±¸Ã¼ÀûÀ¸·Î
-¸»Çϸé Perl ½ºÅ©¸³Æ® ¾È¿¡¼­ UTF-8 ¹®ÀÚ¿­À» ¾µ ¼ö ÀÖ°í,
-°¢Á¾ ÇÔ¼ö¿Í ¿¬»êÀÚ(¿¹¸¦ µé¾î, Á¤±Ô½Ä, index, substr)°¡ ¹ÙÀÌÆ® ´ÜÀ§
-´ë½Å À¯´ÏÄÚµå ±ÛÀÚ ´ÜÀ§·Î µ¿ÀÛÇÕ´Ï´Ù. (´õ ÀÚ¼¼ÇÑ °ÍÀº
-perlunicode ¸Å´º¾óÀ» Âü°íÇϽʽÿÀ.) À¯´ÏÄڵ尡 ³Î¸® º¸±ÞµÇ±â Àü¿¡
-³Î¸® ¾²À̰í ÀÖ¾ú°í, ¿©ÀüÈ÷ ³Î¸® ¾²À̰í ÀÖ´Â °¢±¹/°¢ ¾ð¾îº° ÀÎÄÚµùÀ¸·Î
-ÀÔÃâ·ÂÀ» Çϰí À̵é ÀÎÄÚµùÀ¸·Î µÈ µ¥ÀÌÅÍ¿Í ¹®¼­¸¦ ´Ù·ç´Â °ÍÀ» µ½±â À§ÇØ
-'Encode'°¡ ¾²¿´½À´Ï´Ù. ¹«¾ùº¸´Ù 'Encode'¸¦ ½á¼­ ¼ö¸¹Àº ÀÎÄÚµù »çÀÌÀÇ
-º¯È¯À» ½±°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+Perlì€ ë‚´ë¶€ì ìœ¼ë¡œ 유니코드를 ë¬¸ìž í‘œí˜„ì„ ìœ„í•´ 사용합니다. 보다 구체ì ìœ¼ë¡œ
+ë§í•˜ë©´ Perl 스í¬ë¦½íЏ 안ì—서 UTF-8 문ìžì—´ì„ 쓸 수 있고,
+ê°ì¢… 함수와 ì—°ì‚°ìž(예를 들어, ì •ê·œì‹, index, substr)ê°€ ë°”ì´íЏ 단위
+대신 유니코드 ê¸€ìž ë‹¨ìœ„ë¡œ ë™ìž‘합니다. (ë” ìžì„¸í•œ 것ì€
+perlunicode ë§¤ë‰´ì–¼ì„ ì°¸ê³ í•˜ì‹­ì‹œì˜¤.) 유니코드가 ë„리 보급ë˜ê¸° ì „ì—
+ë„리 ì“°ì´ê³  있었고, 여전히 ë„리 ì“°ì´ê³  있는 ê°êµ­/ê° ì–¸ì–´ë³„ ì¸ì½”딩으로
+ìž…ì¶œë ¥ì„ í•˜ê³  ì´ë“¤ ì¸ì½”딩으로 ëœ ë°ì´í„°ì™€ 문서를 다루는 ê²ƒì„ ë•기 위해
+'Encode'ê°€ 쓰였습니다. 무엇보다 'Encode'를 ì¨ì„œ ìˆ˜ë§Žì€ ì¸ì½”딩 사ì´ì˜
+ë³€í™˜ì„ ì‰½ê²Œ í•  수 있습니다.
-'Encode'´Â ´ÙÀ½°ú °°Àº Çѱ¹¾î ÀÎÄÚµùÀ» Áö¿øÇÕ´Ï´Ù.
+'Encode'는 다ìŒê³¼ ê°™ì€ í•œêµ­ì–´ ì¸ì½”ë”©ì„ ì§€ì›í•©ë‹ˆë‹¤.
=over 4
-=item euc-kr
+=item * euc-kr
- US-ASCII¿Í KS X 1001À» °°ÀÌ ¾²´Â ¸ÖƼ¹ÙÀÌÆ® ÀÎÄÚµù (ÈçÈ÷ ¿Ï¼ºÇüÀ̶ó°í
- ºÒ¸².) KS X 2901°ú RFC 1557 Âü°í.
+US-ASCII와 KS X 1001ì„ ê°™ì´ ì“°ëŠ” 멀티바ì´íЏ ì¸ì½”딩 (í”히 완성형ì´ë¼ê³ 
+불림.) KS X 2901과 RFC 1557 참고.
-=item cp949
+=item * cp949
- MS-Windows 9x/ME¿¡¼­ ¾²ÀÌ´Â È®Àå ¿Ï¼ºÇü. euc-kr¿¡ 8,822ÀÚÀÇ
- ÇÑ±Û À½ÀýÀ» ´õÇÑ °ÍÀÓ. alias´Â uhc, windows-949, x-windows-949,
- ks_c_5601-1987. ¸Ç ¸¶Áö¸· À̸§Àº ÀûÀýÇÏÁö ¾ÊÀº À̸§ÀÌÁö¸¸, Microsoft
- Á¦Ç°¿¡¼­ CP949ÀÇ Àǹ̷Π¾²À̰í ÀÖÀ½.
+MS-Windows 9x/MEì—서 ì“°ì´ëŠ” 확장 완성형. euc-krì— 8,822ìžì˜
+한글 ìŒì ˆì„ ë”한 것임. alias는 uhc, windows-949, x-windows-949,
+ks_c_5601-1987. 맨 마지막 ì´ë¦„ì€ ì ì ˆí•˜ì§€ ì•Šì€ ì´ë¦„ì´ì§€ë§Œ, Microsoft
+제품ì—서 CP949ì˜ ì˜ë¯¸ë¡œ ì“°ì´ê³  있ìŒ.
-=item johab
+=item * johab
- KS X 1001:1998 ºÎ·Ï 3¿¡¼­ ±ÔÁ¤ÇÑ Á¶ÇÕÇü. ¹®ÀÚ ·¹ÆÛÅ丮´Â cp949¿Í
- ¸¶Âù°¡Áö·Î US-ASCII¿Í KS X 1001¿¡ 8,822ÀÚÀÇ ÇÑ±Û À½ÀýÀ» ´õÇÑ °ÍÀÓ.
- ÀÎÄÚµù ¹æ½ÄÀº ÀüÇô ´Ù¸§.
+KS X 1001:1998 ë¶€ë¡ 3ì—서 규정한 조합형. ë¬¸ìž ë ˆí¼í† ë¦¬ëŠ” cp949와
+마찬가지로 US-ASCII와 KS X 1001ì— 8,822ìžì˜ 한글 ìŒì ˆì„ ë”한 것임.
+ì¸ì½”딩 ë°©ì‹ì€ 전혀 다름.
-=item iso-2022-kr
+=item * iso-2022-kr
- RFC 1557¿¡¼­ ±ÔÁ¤ÇÑ Çѱ¹¾î ÀÎÅÍ³Ý ¸ÞÀÏ ±³È¯¿ë ÀÎÄÚµùÀ¸·Î US-ASCII¿Í
- KS X 1001À» ·¹ÆÛÅ丮·Î ÇÏ´Â Á¡¿¡¼­ euc-kr°ú °°Áö¸¸ ÀÎÄÚµù ¹æ½ÄÀÌ ´Ù¸§.
- 1997-8³â °æ±îÁö ¾²¿´À¸³ª ´õ ÀÌ»ó ¸ÞÀÏ ±³È¯¿¡ ¾²ÀÌÁö ¾ÊÀ½.
+RFC 1557ì—서 규정한 한국어 ì¸í„°ë„· ë©”ì¼ êµí™˜ìš© ì¸ì½”딩으로 US-ASCII와
+KS X 1001ì„ ë ˆí¼í† ë¦¬ë¡œ 하는 ì ì—서 euc-krê³¼ 같지만 ì¸ì½”딩 ë°©ì‹ì´ 다름.
+1997-8ë…„ 경까지 쓰였으나 ë” ì´ìƒ ë©”ì¼ êµí™˜ì— ì“°ì´ì§€ 않ìŒ.
-=item ksc5601-raw
+=item * ksc5601-raw
- KS X 1001(KS C 5601)À» GL(Áï, MSB¸¦ 0À¸·Î ÇÑ °æ¿ì) ¿¡ ³õ¾ÒÀ» ¶§ÀÇ
- ÀÎÄÚµù. US-ASCII¿Í °áÇÕÇÏÁö ¾Ê°í ´Üµ¶À¸·Î ¾²ÀÌ´Â ÀÏÀº X11 µî¿¡¼­ ±Û²Ã
- ÀÎÄÚµù (ksc5601.1987-0. '0'Àº GLÀ» ÀǹÌÇÔ.)À¸·Î ¾²ÀÌ´Â °ÍÀ» Á¦¿ÜÇϰí´Â
- °ÅÀÇ ¾øÀ½. KS C 5601Àº 1997³â KS X 1001·Î À̸§À» ¹Ù²Ù¾úÀ½. 1998³â¿¡´Â µÎ
- ±ÛÀÚ (À¯·ÎÈ­ ºÎÈ£¿Í µî·Ï »óÇ¥ ºÎÈ£)°¡ ´õÇØÁ³À½.
+KS X 1001(KS C 5601)ì„ GL(즉, MSB를 0으로 한 경우) ì— ë†“ì•˜ì„ ë•Œì˜
+ì¸ì½”딩. US-ASCII와 결합하지 않고 단ë…으로 ì“°ì´ëŠ” ì¼ì€ X11 등ì—서 글꼴
+ì¸ì½”딩 (ksc5601.1987-0. '0'ì€ GLì„ ì˜ë¯¸í•¨.)으로 ì“°ì´ëŠ” ê²ƒì„ ì œì™¸í•˜ê³ ëŠ”
+ê±°ì˜ ì—†ìŒ. KS C 5601ì€ 1997ë…„ KS X 1001로 ì´ë¦„ì„ ë°”ê¾¸ì—ˆìŒ. 1998ë…„ì—는 ë‘
+ê¸€ìž (유로화 부호와 ë“±ë¡ ìƒí‘œ 부호)ê°€ ë”해졌ìŒ.
=back
- ¸î °¡Áö »ç¿ë ¿¹Á¦¸¦ ¾Æ·¡¿¡ º¸ÀÔ´Ï´Ù.
+몇 가지 사용 예제를 ì•„ëž˜ì— ë³´ìž…ë‹ˆë‹¤.
-¿¹¸¦ µé¾î, euc-kr ÀÎÄÚµùÀ¸·Î µÈ ÆÄÀÏÀ» UTF-8·Î º¯È¯ÇÏ·Á¸é ´ÙÀ½°ú
-°°ÀÌ ÇÏ¸é µË´Ï´Ù.
+예를 들어, euc-kr ì¸ì½”딩으로 ëœ íŒŒì¼ì„ UTF-8로 변환하려면 다ìŒê³¼
+ê°™ì´ í•˜ë©´ ë©ë‹ˆë‹¤.
perl -Mencoding=euc-kr,STDOUT,utf8 -pe1 < file.euckr > file.utf8
-¿ªº¯È¯Àº ´ÙÀ½°ú °°ÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+ì—­ë³€í™˜ì€ ë‹¤ìŒê³¼ ê°™ì´ í•  수 있습니다.
perl -Mencoding=utf8,STDOUT,euc-kr -pe1 < file.utf8 > file.euckr
- ÀÌ·± º¯È¯À» Á»´õ Æí¸®ÇÏ°Ô ÇÒ ¼ö ÀÖµµ·Ï Encode ¸ðµâÀ» ½á¼­
-¼ø¼öÇÏ°Ô Perl·Î¸¸ ¾²ÀÎ piconv°¡ Perl¿¡ µé¾î ÀÖ½À´Ï´Ù.
-±× À̸§¿¡¼­ ¾Ë ¼ö ÀÖµíÀÌ piconv´Â Unix¿¡ ÀÖ´Â iconv¸¦
-¸ðµ¨·Î ÇÑ °ÍÀÔ´Ï´Ù. ±× »ç¿ë¹ýÀº ¾Æ·¡¿Í °°½À´Ï´Ù.
+ì´ëŸ° ë³€í™˜ì„ ì¢€ë” íŽ¸ë¦¬í•˜ê²Œ í•  수 있ë„ë¡ Encode ëª¨ë“ˆì„ ì¨ì„œ
+순수하게 Perl로만 ì“°ì¸ piconvê°€ Perlì— ë“¤ì–´ 있습니다.
+ê·¸ ì´ë¦„ì—서 알 수 ìžˆë“¯ì´ piconv는 Unixì— ìžˆëŠ” iconv를
+모ë¸ë¡œ 한 것입니다. ê·¸ ì‚¬ìš©ë²•ì€ ì•„ëž˜ì™€ 같습니다.
piconv -f euc-kr -t utf8 < file.euckr > file.utf8
piconv -f utf8 -t euc-kr < file.utf8 > file.euckr
- ¶Ç, 'PerlIO::encoding' ¸ðµâÀ» ½á¼­ Çѱ¹¾î ÀÎÄÚµùÀ» ¾²¸é¼­ ±ÛÀÚ ´ÜÀ§
-(¹ÙÀÌÆ® ´ÜÀ§°¡ ¾Æ´Ï¶ó) 󸮸¦ ½±°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+ë˜, 'PerlIO::encoding' ëª¨ë“ˆì„ ì¨ì„œ 한국어 ì¸ì½”ë”©ì„ ì“°ë©´ì„œ ê¸€ìž ë‹¨ìœ„
+(ë°”ì´íЏ 단위가 아니ë¼) 처리를 쉽게 í•  수 있습니다.
#!/path/to/perl
use encoding 'euc-kr', STDIN => 'euc-kr',
STDOUT-> 'euc-kr', STDERR=>'euc-kr';
- print length("°¡³ª"); # 2 (Å« µû¿ÈÇ¥´Â ±ÛÀÚ ´ÜÀ§ 󸮸¦ Áö½Ã)
- print length('°¡³ª'); # 4 (ÀÛÀº µû¿ÈÇ¥´Â ¹ÙÀÌÆ® ´ÜÀ§ 󸮸¦ Áö½Ã)
- print index("ÇѰ­, ´ëµ¿°­", "¿°"); # -1 ('¿°'ÀÌ ¾øÀ½)
- print index('ÇѰ­, ´ëµ¿°­', '¿°'); # 7 (8¹øÂ°¿Í 9¹øÂ° ¹ÙÀÌÆ®°¡ '¿°'ÀÇ
- Äڵ尪°ú ÀÏÄ¡ÇÔ.)
+ print length("가나"); # 2 (í° ë”°ì˜´í‘œëŠ” ê¸€ìž ë‹¨ìœ„ 처리를 지시)
+ print length('가나'); # 4 (ìž‘ì€ ë”°ì˜´í‘œëŠ” ë°”ì´íЏ 단위 처리를 지시)
+ print index("한강, 대ë™ê°•", "ì—¼"); # -1 ('ì—¼'ì´ ì—†ìŒ)
+ print index('한강, 대ë™ê°•', 'ì—¼'); # 7 (8번째와 9번째 ë°”ì´íŠ¸ê°€ 'ì—¼'ì˜
+ 코드값과 ì¼ì¹˜í•¨.)
-=head2 ´õ ÀÚ¼¼È÷ ¾Ë°í ½ÍÀ¸¸é...
+=head2 ë” ìžì„¸ížˆ 알고 싶으면...
- PerlÀ» ¼³Ä¡ÇÏ¸é ´ë´ÜÈ÷ ÀÚ¼¼ÇÑ ¹®¼­°¡ °°ÀÌ µû¶ó ¿À¸ç, ÀÌ ¹®¼­¸¦ ÅëÇØ
-Perl Àü¹Ý »Ó ¾Æ´Ï¶ó À¯´ÏÄÚµå Áö¿ø, EncodeÀÇ »ç¿ë¹ý µî¿¡ ¸¹Àº °ÍÀ»
-¹è¿ï ¼ö ÀÖ½À´Ï´Ù. ¾ÆÁ÷ ÀÌ ¹®¼­´Â ÇöÀç ¸ðµÎ ¿µ¾î·Î ¾²¿© ÀÖ½À´Ï´Ù.
+Perlì„ ì„¤ì¹˜í•˜ë©´ 대단히 ìžì„¸í•œ 문서가 ê°™ì´ ë”°ë¼ ì˜¤ë©°, ì´ ë¬¸ì„œë¥¼ 통해
+Perl ì „ë°˜ ë¿ ì•„ë‹ˆë¼ ìœ ë‹ˆì½”ë“œ ì§€ì›, Encodeì˜ ì‚¬ìš©ë²• ë“±ì— ë§Žì€ ê²ƒì„
+배울 수 있습니다. ì•„ì§ ì´ ë¬¸ì„œëŠ” 현재 ëª¨ë‘ ì˜ì–´ë¡œ ì“°ì—¬ 있습니다.
-=head2 Perl °ü·Ã ÀÚ·á
+=head2 Perl 관련 ìžë£Œ
-À§¿¡¼­ ¾ð±ÞÇÑ ¹®¼­ ¿Ü¿¡µµ ´ÙÀ½°ú °°Àº ÀÚ·á°¡ ÀÖ½À´Ï´Ù. ÀÌ ¸ñ·ÏÀº °áÄÚ
-¿ÏÀüÇÑ °ÍÀÌ ¾Æ´Ï°í ÀϺΠ´ëÇ¥ÀûÀÎ °Í¸¸ ¸ðÀº °ÍÀÔ´Ï´Ù.
+위ì—서 언급한 문서 외ì—ë„ ë‹¤ìŒê³¼ ê°™ì€ ìžë£Œê°€ 있습니다. ì´ ëª©ë¡ì€ ê²°ì½”
+완전한 ê²ƒì´ ì•„ë‹ˆê³  ì¼ë¶€ 대표ì ì¸ 것만 ëª¨ì€ ê²ƒìž…ë‹ˆë‹¤.
=over 4
=item L<http://www.perl.com/>
- O'ReillyÀÇ Perl À¥ ÆäÀÌÁö
+ O'Reillyì˜ Perl 웹 페ì´ì§€
=item L<http://www.cpan.org/>
@@ -140,57 +134,57 @@ Perl Àü¹Ý »Ó ¾Æ´Ï¶ó À¯´ÏÄÚµå Áö¿ø, EncodeÀÇ »ç¿ë¹ý µî¿¡ ¸¹Àº °ÍÀ»
=item L<http://lists.perl.org/>
- Perl ¸ÞÀϸµ ¸®½ºÆ®. ¸¹Àº ¸®½ºÆ® °¡¿îµ¥
- perl-unicode¿¡¼­ 'Encode'¿¡ ´ëÇØ ³íÀÇÇÔ.
+ Perl ë©”ì¼ë§ 리스트. ë§Žì€ ë¦¬ìŠ¤íŠ¸ 가운ë°
+ perl-unicodeì—서 'Encode'ì— ëŒ€í•´ ë…¼ì˜í•¨.
=back
-=head2 PerlÀ» ´õ ±í°Ô °øºÎÇϴµ¥ µµ¿òÀ» ÁÙ ¼ö ÀÖ´Â Çѱ¹¾î °ü·Ã »çÀÌÆ®
+=head2 Perlì„ ë” ê¹Šê²Œ ê³µë¶€í•˜ëŠ”ë° ë„ì›€ì„ ì¤„ 수 있는 한국어 관련 사ì´íЏ
=over 4
=item L<http://www.perl.or.kr/>
- Perl Çѱ¹ »ç¿ëÀÚ ¸ðÀÓ
+ Perl 한국 ì‚¬ìš©ìž ëª¨ìž„
=item L<news:han.comp.lang.perl/>
- Çѱ¹¾î Perl ´º½º ±×·ì
+ 한국어 Perl 뉴스 그룹
=item L<http://www.hanb.co.kr/search/searchResult.html?keyword=perl>
- O'Reilly¿¡¼­ ³ª¿Â Çѱ¹¾î Perl ¼­Àû ¸ñ·Ï
+ O'Reillyì—서 나온 한국어 Perl ì„œì  ëª©ë¡
=item L<http://www.perlschool.net/>
- Perl ±âÃÊ °­Á ¹× ¼Ò½º, ÃÖ±Ù µ¿Çâ, °ü·Ã ÇØ¿Ü »çÀÌÆ® ¸µÅ©
+ Perl 기초 강좌 ë° ì†ŒìŠ¤, 최근 ë™í–¥, 관련 해외 사ì´íЏ ë§í¬
=item L<http://www.perl.co.kr>
- Perl¿¡ °ü·ÃµÈ CGI, DB, ¿¬µ¿ µî¿¡ ´ëÇÑ Á¤º¸ ¹× ´º½º Á¦°ø
+ Perlì— ê´€ë ¨ëœ CGI, DB, ì—°ë™ ë“±ì— ëŒ€í•œ ì •ë³´ ë° ë‰´ìŠ¤ 제공
=back
-=head2 À¯´ÏÄÚµå ¹× Çѱ¹¾î ÀÎÄÚµù °ü·Ã ÀÚ·á
+=head2 유니코드 ë° í•œêµ­ì–´ ì¸ì½”딩 관련 ìžë£Œ
=over 4
=item L<http://www.unicode.org/>
- À¯´ÏÄÚµå ÄÁ¼Ò½Ã¾ö.
+ 유니코드 컨소시엄.
=item L<http://std.dkuug.dk/JTC1/SC2/WG2>
-±âº»ÀûÀ¸·Î Unicode¿Í °°Àº ISO Ç¥ÁØÀÎ ISO/IEC 10646 UCS(Universal
-Character Set)À» ¸¸µå´Â ISO/IEC JTC1/SC2/WG2ÀÇ À¥ ÆäÀÌÁö.
+기본ì ìœ¼ë¡œ Unicode와 ê°™ì€ ISO í‘œì¤€ì¸ ISO/IEC 10646 UCS(Universal
+Character Set)ì„ ë§Œë“œëŠ” ISO/IEC JTC1/SC2/WG2ì˜ ì›¹ 페ì´ì§€.
=item L<http://www.cl.cam.ac.uk/~mgk25/unicode.html>
- À¯´Ð½º/¸®´ª½º¿¡¼­ À¯´ÏÄÚµå¿Í UTF-8 »ç¿ë¿¡ ´ëÇÑ ¹®´äÁý(FAQ)
+ 유닉스/리눅스ì—서 유니코드와 UTF-8 ì‚¬ìš©ì— ëŒ€í•œ 문답집(FAQ)
=item L<http://wiki.kldp.org/Translations/html/UTF8-Unicode-KLDP/UTF8-Unicode-KLDP.html>
- À¯´Ð½º/¸®´ª½º¿¡¼­ À¯´ÏÄÚµå¿Í UTF-8 »ç¿ë¿¡ ´ëÇÑ ¹®´äÁý(FAQ)ÀÇ Çѱ¹¾î ¹ø¿ª
+ 유닉스/리눅스ì—서 유니코드와 UTF-8 ì‚¬ìš©ì— ëŒ€í•œ 문답집(FAQ)ì˜ í•œêµ­ì–´ 번역
=back
@@ -202,6 +196,6 @@ L<Encode>, L<Encode::KR>, L<encoding>, L<perluniintro>, L<perlunicode>
=head1 AUTHORS
Jarkko Hietaniemi E<lt>jhi@iki.fiE<gt>
-½ÅÁ¤½Ä E<lt>jshin@mailaps.orgE<gt>
+ì‹ ì •ì‹ E<lt>jshin@mailaps.orgE<gt>
=cut
diff --git a/gnu/usr.bin/perl/README.macosx b/gnu/usr.bin/perl/README.macosx
index 0501b1ff649..e732c73b9d1 100644
--- a/gnu/usr.bin/perl/README.macosx
+++ b/gnu/usr.bin/perl/README.macosx
@@ -10,9 +10,9 @@ perlmacosx - Perl under Mac OS X
This document briefly describes Perl under Mac OS X.
- curl http://www.cpan.org/src/perl-5.12.3.tar.gz > perl-5.12.3.tar.gz
- tar -xzf perl-5.12.3.tar.gz
- cd perl-5.12.3
+ curl http://www.cpan.org/src/perl-5.18.2.tar.gz > perl-5.18.0.tar.gz
+ tar -xzf perl-5.18.2.tar.gz
+ cd perl-5.18.2
./Configure -des -Dprefix=/usr/local/
make
make test
@@ -20,13 +20,23 @@ This document briefly describes Perl under Mac OS X.
=head1 DESCRIPTION
-The latest Perl release (5.12.3 as of this writing) builds without changes
+The latest Perl release (5.18.2 as of this writing) builds without changes
under all versions of Mac OS X from 10.3 "Panther" onwards.
-In order to build your own version of Perl you will need 'make'
-this is part of the Apples developer tools (you only need the 'unix tools'),
-usually supplied with Mac OS install DVDs. You do not need the latest
-version of Xcode (which is now charged for) in order to install make.
+In order to build your own version of Perl you will need 'make',
+which is part of Apple's developer tools - also known as Xcode. From
+Mac OS X 10.7 "Lion" onwards, it can be downloaded separately as the
+'Command Line Tools' bundle directly from L<https://developer.apple.com/downloads/>
+(you will need a free account to log in), or as a part of the Xcode suite,
+freely available at the App Store. Xcode is a pretty big app, so
+unless you already have it or really want it, you are advised to get the
+'Command Line Tools' bundle separately from the link above. If you want
+to do it from within Xcode, go to Xcode -> Preferences -> Downloads and
+select the 'Command Line Tools' option.
+
+Between Mac OS X 10.3 "Panther" and 10.6 "Snow Leopard", the 'Command
+Line Tools' bundle was called 'unix tools', and was usually supplied
+with Mac OS install DVDs.
Earlier Mac OS X releases (10.2 "Jaguar" and older) did not include a
completely thread-safe libc, so threading is not fully supported. Also,
@@ -53,9 +63,18 @@ on a file server and used by many Macs.
First, export the path to the SDK into the build environment:
- export SDK=/Developer/SDKs/MacOSX10.3.9.sdk
+ export SDK=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
-Use an SDK by exporting some additions to Perl's 'ccflags' and '..flags'
+Please make sure the SDK version (i.e. the numbers right before '.sdk')
+matches your system's (in this case, Mac OS X 10.8 "Mountain Lion"), as it is
+possible to have more than one SDK installed. Also make sure the path exists
+in your system, and if it doesn't please make sure the SDK is properly
+installed, as it should come with the 'Command Line Tools' bundle mentioned
+above. Finally, if you have an older Mac OS X (10.6 "Snow Leopard" and below)
+running Xcode 4.2 or lower, the SDK path might be something like
+C<'/Developer/SDKs/MacOSX10.3.9.sdk'>.
+
+You can use the SDK by exporting some additions to Perl's 'ccflags' and '..flags'
config variables:
./Configure -Accflags="-nostdinc -B$SDK/usr/include/gcc \
@@ -66,11 +85,18 @@ config variables:
=head2 Universal Binary support
-To compile perl as a universal binary (built for both ppc and intel), export
-the SDK variable as above, selecting the 10.4u SDK:
+Note: From Mac OS X 10.6 "Snow Leopard" onwards, Apple only supports
+Intel-based hardware. This means you can safely skip this section unless
+you have an older Apple computer running on ppc or wish to create a perl
+binary with backwards compatibility.
+
+You can compile perl as a universal binary (built for both ppc and intel).
+In Mac OS X 10.4 "Tiger", you must export the 'u' variant of the SDK:
export SDK=/Developer/SDKs/MacOSX10.4u.sdk
+Mac OS X 10.5 "Leopard" and above do not require the 'u' variant.
+
In addition to the compiler flags used to select the SDK, also add the flags
for creating a universal binary:
@@ -80,12 +106,6 @@ for creating a universal binary:
-Aldflags="-arch i686 -arch ppc -Wl,-syslibroot,$SDK" \
-de
-In Leopard (MacOSX 10.5.6 at the time of this writing) you must use the 10.5 SDK:
-
- export SDK=/Developer/SDKs/MacOSX10.5.sdk
-
-You can use the same compiler flags you would use with the 10.4u SDK.
-
Keep in mind that these compiler and linker settings will also be used when
building CPAN modules. For XS modules to be compiled as a universal binary, any
libraries it links to must also be universal binaries. The system libraries that
@@ -136,17 +156,15 @@ need to go to a great deal of effort to obtain the information needed
for pre-binding.
You can override the default and build a shared libperl if you wish
-(S<Configure ... -Duseshrplib>), but the load time on pre-10.4 OS
-releases will be greater than either the static library, or Apple's
-pre-bound dynamic library.
-
-With 10.4 "Tiger" and newer, Apple has all but eliminated the performance
-penalty for non-prebound libraries.
+(S<Configure ... -Duseshrplib>).
+With Mac OS X 10.4 "Tiger" and newer, there is almost no performance
+penalty for non-prebound libraries. Earlier releases will suffer a greater
+load time than either the static library, or Apple's pre-bound dynamic library.
=head2 Updating Apple's Perl
-In a word - don't, at least without a *very* good reason. Your scripts
+In a word - don't, at least not without a *very* good reason. Your scripts
can just as easily begin with "#!/usr/local/bin/perl" as with
"#!/usr/bin/perl". Scripts supplied by Apple and other third parties as
part of installation packages and such have generally only been tested
@@ -247,10 +265,10 @@ reinstall the entire OS.
=head1 AUTHOR
This README was written by Sherm Pendley E<lt>sherm@dot-app.orgE<gt>,
-and subsequently updated by Dominic Dunlop E<lt>domo@computer.orgE<gt>.
-The "Starting From Scratch" recipe was contributed by John Montbriand
-E<lt>montbriand@apple.comE<gt>.
+and subsequently updated by Dominic Dunlop E<lt>domo@computer.orgE<gt>
+and Breno G. de Oliveira E<lt>garu@cpan.orgE<gt>. The "Starting From Scratch"
+recipe was contributed by John Montbriand E<lt>montbriand@apple.comE<gt>.
=head1 DATE
-Last modified 2006-02-24.
+Last modified 2013-04-29.
diff --git a/gnu/usr.bin/perl/README.os390 b/gnu/usr.bin/perl/README.os390
index 6e2d49e7317..645d10e40dc 100644
--- a/gnu/usr.bin/perl/README.os390
+++ b/gnu/usr.bin/perl/README.os390
@@ -410,7 +410,7 @@ L<INSTALL>, L<perlport>, L<perlebcdic>, L<ExtUtils::MakeMaker>.
=head2 Mailing list for Perl on OS/390
-If you are interested in the VM/ESA, z/OS (formerly known as OS/390)
+If you are interested in the z/OS (formerly known as OS/390)
and POSIX-BC (BS2000) ports of Perl then see the perl-mvs mailing list.
To subscribe, send an empty message to perl-mvs-subscribe@perl.org.
diff --git a/gnu/usr.bin/perl/README.tw b/gnu/usr.bin/perl/README.tw
index 4e029d91f2a..2a4dcf54925 100644
--- a/gnu/usr.bin/perl/README.tw
+++ b/gnu/usr.bin/perl/README.tw
@@ -1,15 +1,9 @@
-If you read this file _as_is_, just ignore the funny characters you
-see. It is written in the POD format (see perlpod manpage) which is
-specially designed to be readable as is.
-
-The following documentation is written in UTF-8 encoding.
+=encoding utf8
如果你用一般的文字編輯器閱覽這份文件, 請忽略文中奇特的註記字符.
這份文件是以 POD (簡明文件格å¼) 寫æˆ; é€™ç¨®æ ¼å¼æ˜¯ç‚ºäº†èƒ½è®“人直接讀å–,
而特別設計的. 關於此格å¼çš„進一步資訊, è«‹åƒè€ƒ perlpod 線上文件.
-=encoding UTF-8
-
=head1 NAME
perltw - 正體中文 Perl 指å—
diff --git a/gnu/usr.bin/perl/README.vos b/gnu/usr.bin/perl/README.vos
index 28cc9d130dd..7249f492fd1 100644
--- a/gnu/usr.bin/perl/README.vos
+++ b/gnu/usr.bin/perl/README.vos
@@ -4,57 +4,42 @@ specially designed to be readable as is.
=head1 NAME
-perlvos - Perl for Stratus VOS
+perlvos - Perl for Stratus OpenVOS
=head1 SYNOPSIS
-This file contains notes for building perl on the Stratus VOS
+This file contains notes for building perl on the Stratus OpenVOS
operating system. Perl is a scripting or macro language that is
-popular on many systems. See L<perlbook> for a number of good
-books on Perl.
+popular on many systems. See L<perlbook> for a number of good books
+on Perl.
These are instructions for building Perl from source. This version of
-Perl is not supported on VOS Release 14.2 or earlier releases. If you
-have a Continuum platform running VOS Release 14.3 through 14.7,
-download Perl from the Stratus Anonymous FTP site at
-ftp://ftp.stratus.com/pub/vos/posix/ga/continuum/continuum.html. If
-you have a V Series platform running VOS Release 15.0 or later, or if
-you have a V Series platform running OpenVOS Release 17.0 or later,
-download Perl from
-ftp://ftp.stratus.com/pub/vos/posix/ga/v-series/v-series.html. The
-perl distribution files on the Stratus anonymous FTP site are stored
-in a format called a "bundled file". Instructions for unbundling the
-Perl distribution file are at
-ftp://ftp.stratus.com/pub/vos/utility/utility.html.
+Perl requires the dynamic linking support that is found in OpenVOS
+Release 17.1 and thus is not supported on OpenVOS Release 17.0 or
+earlier releases.
If you are running VOS Release 14.4.1 or later, you can obtain a
-pre-compiled, supported copy of perl by purchasing Release 2.0.1
-(or later) of the VOS GNU C/C++ and GNU Tools product from
-Stratus Technologies.
+pre-compiled, supported copy of perl by purchasing the GNU Tools
+product from Stratus Technologies.
-=head1 BUILDING PERL FOR VOS
+=head1 BUILDING PERL FOR OPENVOS
-To build perl from its source code on the Stratus Continuum
-platform, you must be have VOS Release 14.5.0 or later, the STCP
-product, and the GNU C/C++ and GNU Tools, Release 2.0.1 or
-later. On the V Series platform you must have VOS Release
-15.0.0 or later, and any version of the GNU C/C++ and GNU Tools
-product.
+To build perl from its source code on the Stratus V Series platform
+you must have OpenVOS Release 17.1.0 or later, GNU Tools Release
+3.5 or later, and the C/POSIX Runtime Libraries.
-To build full perl using the supplied Configure script and
-makefiles, change to the "vos" subdirectory and type the command
-"compile_full_perl" or "start_process compile_full_perl". This
-will configure, build, and test perl.
+Follow the normal instructions for building perl; e.g, enter bash, run
+the Configure script, then use "gmake" to build perl.
-=head1 INSTALLING PERL IN VOS
+=head1 INSTALLING PERL IN OPENVOS
=over 4
=item 1
-If you have built perl using the Configure script, ensure that
-you have modify and default write permission to C<<
->system>ported >> and all subdirectories. Then type
+After you have built perl using the Configure script, ensure that you
+have modify and default write permission to C<< >system>ported >> and
+all subdirectories. Then type
gmake install
@@ -65,8 +50,6 @@ modules distributed with perl, the following directories can be
used to hold such files (replace the string VERSION by the
appropriate version number):
- >system>ported>lib>perl5>VERSION>7100
- >system>ported>lib>perl5>VERSION>8000
>system>ported>lib>perl5>VERSION>i786
=item 3
@@ -79,8 +62,6 @@ two places. Put architecture-independent files into:
Put site-specific architecture-dependent files into one of the
following directories:
- >system>ported>lib>perl5>site_perl>VERSION>7100
- >system>ported>lib>perl5>site_perl>VERSION>8000
>system>ported>lib>perl5>site_perl>VERSION>i786
=item 4
@@ -90,61 +71,33 @@ to see the order in which Perl searches these directories.
=back
-=head1 USING PERL IN VOS
+=head1 USING PERL IN OPENVOS
-=head2 Restrictions of Perl on VOS
+=head2 Restrictions of Perl on OpenVOS
-This port of Perl version 5 to VOS prefers Unix-style,
-slash-separated pathnames over VOS-style greater-than-separated
-pathnames. VOS-style pathnames should work in most contexts, but
-if you have trouble, replace all greater-than characters by slash
-characters. Because the slash character is used as a pathname
-delimiter, Perl cannot process VOS pathnames containing a slash
-character in a directory or file name; these must be renamed.
+This port of Perl version 5 prefers Unix-style, slash-separated
+pathnames over OpenVOS-style greater-than-separated pathnames.
+OpenVOS-style pathnames should work in most contexts, but if you have
+trouble, replace all greater-than characters by slash characters.
+Because the slash character is used as a pathname delimiter, Perl
+cannot process OpenVOS pathnames containing a slash character in a
+directory or file name; these must be renamed.
This port of Perl also uses Unix-epoch date values internally.
As long as you are dealing with ASCII character string
representations of dates, this should not be an issue. The
supported epoch is January 1, 1980 to January 17, 2038.
-See the file pod/perlport.pod for more information about the VOS
+See the file pod/perlport.pod for more information about the OpenVOS
port of Perl.
-=head2 Handling of underflow and overflow
-
-Prior to VOS Release 14.7.0, VOS does not support automatically
-mapping overflowed floating-point values to +infinity, nor
-automatically mapping underflowed floating-point values to zero,
-unlike many other platforms. The Perl pack function has been
-modified to perform such mapping in software on VOS. Performing
-other floating-point computations that underflow or overflow
-will probably result in SIGFPE. Don't push your luck.
-
-As of VOS Release 14.7.0 or later, the VOS POSIX runtime sets up
-the PA-RISC and IA-32 hardware floating-point status register so
-that the overflow and underflow exceptions do not trap, but
-instead automatically convert the result to infinity or zero, as
-appropriate. As of this writing, there are still floating-point
-operations that can trap, for example, subtracting two infinite
-values. This is recorded as suggestion posix-1022, which has
-been fixed in VOS Release 15.2 and higher.
-
=head1 TEST STATUS
-When Perl 5.9.0 is built using the native build process on VOS
-Release 14.7.0 and GNU C++/GNU Tools 2.0.2a, all but nine
-attempted tests either pass or result in TODO (ignored)
-failures. The tests that fail are:
-
-t/io/dup, test 2
-t/io/tell, test 28
-t/op/pack, test 0
-ext/B/t/bytecode, test 1
-ext/Devel/Peek/t/Peek, test 1
-ext/Encode/t/enc_module, test 1
-ext/IO/t/io_dup, test 2
-lib/ExtUtils/t/MM_Unix, test 94
-lib/Net/ing/t/450_service, test 8
+A number of the perl self-tests fails for various reasons; generally
+these are minor and due to subtle differences between common
+POSIX-based environments and the OpenVOS POSIX environment. Ensure
+that you conduct sufficient testing of your code to guarantee that it
+works properly in the OpenVOS environment.
=head1 SUPPORT STATUS
@@ -153,10 +106,9 @@ can't guarantee I'll be able to answer them. There are some
excellent books available on the Perl language; consult a book
seller.
-If you want a supported version of perl for VOS, purchase the
-VOS GNU C/C++ and GNU Tools Release 2.0.1 (or later) product from
-Stratus Technologies, along with a support contract (or from
-anyone else who will sell you support).
+If you want a supported version of perl for OpenVOS, purchase the
+OpenVOS GNU Tools product from Stratus Technologies, along with a
+support contract (or from anyone else who will sell you support).
=head1 AUTHOR
@@ -164,6 +116,6 @@ Paul Green (Paul.Green@stratus.com)
=head1 LAST UPDATE
-October 6, 2010
+February 28, 2013
=cut
diff --git a/gnu/usr.bin/perl/autodoc.pl b/gnu/usr.bin/perl/autodoc.pl
index 37348847894..925f2f541fb 100644
--- a/gnu/usr.bin/perl/autodoc.pl
+++ b/gnu/usr.bin/perl/autodoc.pl
@@ -274,11 +274,14 @@ _EOH_
print $fh $podname eq 'perlapi' ? <<'_EOB_' : <<'_EOB_';
The following functions have been flagged as part of the public API,
but are currently undocumented. Use them at your own risk, as the
-interfaces are subject to change.
+interfaces are subject to change. Functions that are not listed in this
+document are not intended for public use, and should NOT be used under any
+circumstances.
-If you use one of them, you may wish to consider creating and submitting
-documentation for it. If your patch is accepted, this will indicate that
-the interface is stable (unless it is explicitly marked otherwise).
+If you use one of the undocumented functions below, you may wish to consider
+creating and submitting documentation for it. If your patch is accepted, this
+will indicate that the interface is stable (unless it is explicitly marked
+otherwise).
=over
@@ -412,11 +415,6 @@ But the ordinals of characters differ between ASCII, EBCDIC, and
the UTF- encodings, and a string encoded in UTF-EBCDIC may occupy more bytes
than in UTF-8.
-Also, on some EBCDIC machines, functions that are documented as operating on
-US-ASCII (or Basic Latin in Unicode terminology) may in fact operate on all
-256 characters in the EBCDIC range, not just the subset corresponding to
-US-ASCII.
-
The listing below is alphabetical, case insensitive.
_EOB_
diff --git a/gnu/usr.bin/perl/charclass_invlists.h b/gnu/usr.bin/perl/charclass_invlists.h
index 368410fd378..b5d71afb16d 100644
--- a/gnu/usr.bin/perl/charclass_invlists.h
+++ b/gnu/usr.bin/perl/charclass_invlists.h
@@ -7,39 +7,57 @@
/* See the generating file for comments */
-UV Latin1_invlist[] = {
+#ifndef PERL_IN_XSUB_RE
+
+static UV Latin1_invlist[] = {
2, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
0, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
256,
0
};
-UV AboveLatin1_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV AboveLatin1_invlist[] = {
1, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
256
};
-UV ASCII_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV ASCII_invlist[] = {
2, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
0, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
128,
0
};
-UV L1Cased_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV L1Cased_invlist[] = {
16, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
65,
@@ -60,10 +78,15 @@ UV L1Cased_invlist[] = {
443
};
-UV VertSpace_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV VertSpace_invlist[] = {
6, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
10,
@@ -74,29 +97,35 @@ UV VertSpace_invlist[] = {
8234
};
-UV PerlSpace_invlist[] = {
- 6, /* Number of elements */
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PerlSpace_invlist[] = {
+ 4, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
9,
- 11,
- 12,
14,
32,
33
};
-UV XPerlSpace_invlist[] = {
- 24, /* Number of elements */
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV XPerlSpace_invlist[] = {
+ 22, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
9,
- 11,
- 12,
14,
32,
33,
@@ -120,10 +149,15 @@ UV XPerlSpace_invlist[] = {
12289
};
-UV PosixAlnum_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixAlnum_invlist[] = {
6, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
48,
@@ -134,10 +168,15 @@ UV PosixAlnum_invlist[] = {
123
};
-UV L1PosixAlnum_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV L1PosixAlnum_invlist[] = {
18, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
48,
@@ -160,10 +199,15 @@ UV L1PosixAlnum_invlist[] = {
706
};
-UV PosixAlpha_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixAlpha_invlist[] = {
4, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
65,
@@ -172,10 +216,15 @@ UV PosixAlpha_invlist[] = {
123
};
-UV L1PosixAlpha_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV L1PosixAlpha_invlist[] = {
16, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
65,
@@ -196,10 +245,15 @@ UV L1PosixAlpha_invlist[] = {
706
};
-UV PosixBlank_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixBlank_invlist[] = {
4, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
9,
@@ -208,10 +262,15 @@ UV PosixBlank_invlist[] = {
33
};
-UV XPosixBlank_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV XPosixBlank_invlist[] = {
18, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
9,
@@ -234,10 +293,15 @@ UV XPosixBlank_invlist[] = {
12289
};
-UV PosixCntrl_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixCntrl_invlist[] = {
4, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
0, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
32,
@@ -246,10 +310,15 @@ UV PosixCntrl_invlist[] = {
0
};
-UV XPosixCntrl_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV XPosixCntrl_invlist[] = {
4, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
0, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
32,
@@ -258,30 +327,45 @@ UV XPosixCntrl_invlist[] = {
0
};
-UV PosixDigit_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixDigit_invlist[] = {
2, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
48,
58
};
-UV PosixGraph_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixGraph_invlist[] = {
2, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
33,
127
};
-UV L1PosixGraph_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV L1PosixGraph_invlist[] = {
4, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
33,
@@ -290,20 +374,30 @@ UV L1PosixGraph_invlist[] = {
888
};
-UV PosixLower_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixLower_invlist[] = {
2, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
97,
123
};
-UV L1PosixLower_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV L1PosixLower_invlist[] = {
12, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
97,
@@ -320,20 +414,30 @@ UV L1PosixLower_invlist[] = {
256
};
-UV PosixPrint_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixPrint_invlist[] = {
2, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
32,
127
};
-UV L1PosixPrint_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV L1PosixPrint_invlist[] = {
4, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
32,
@@ -342,10 +446,15 @@ UV L1PosixPrint_invlist[] = {
888
};
-UV PosixPunct_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixPunct_invlist[] = {
8, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
33,
@@ -358,10 +467,15 @@ UV PosixPunct_invlist[] = {
127
};
-UV L1PosixPunct_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV L1PosixPunct_invlist[] = {
20, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
33,
@@ -386,10 +500,15 @@ UV L1PosixPunct_invlist[] = {
192
};
-UV PosixSpace_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixSpace_invlist[] = {
4, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
9,
@@ -398,10 +517,15 @@ UV PosixSpace_invlist[] = {
33
};
-UV XPosixSpace_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV XPosixSpace_invlist[] = {
22, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
9,
@@ -428,20 +552,30 @@ UV XPosixSpace_invlist[] = {
12289
};
-UV PosixUpper_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixUpper_invlist[] = {
2, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
65,
91
};
-UV L1PosixUpper_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV L1PosixUpper_invlist[] = {
6, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
65,
@@ -452,10 +586,15 @@ UV L1PosixUpper_invlist[] = {
223
};
-UV PosixWord_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixWord_invlist[] = {
8, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
48,
@@ -468,10 +607,15 @@ UV PosixWord_invlist[] = {
123
};
-UV L1PosixWord_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV L1PosixWord_invlist[] = {
20, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
48,
@@ -496,10 +640,15 @@ UV L1PosixWord_invlist[] = {
706
};
-UV PosixXDigit_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV PosixXDigit_invlist[] = {
6, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
48,
@@ -510,10 +659,15 @@ UV PosixXDigit_invlist[] = {
103
};
-UV XPosixXDigit_invlist[] = {
+#endif
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV XPosixXDigit_invlist[] = {
12, /* Number of elements */
0, /* Current iteration position */
- 1064334010, /* Version and data structure type */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
1, /* 0 if this is the first element of the list proper;
1 if the next element is the first */
48,
@@ -530,4 +684,130 @@ UV XPosixXDigit_invlist[] = {
65351
};
+#endif
+
+static UV NonL1_Perl_Non_Final_Folds_invlist[] = {
+ 44, /* Number of elements */
+ 0, /* Current iteration position */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
+ 1, /* 0 if this is the first element of the list proper;
+ 1 if the next element is the first */
+ 700,
+ 701,
+ 776,
+ 777,
+ 787,
+ 788,
+ 834,
+ 835,
+ 940,
+ 941,
+ 942,
+ 943,
+ 945,
+ 946,
+ 951,
+ 952,
+ 953,
+ 954,
+ 961,
+ 962,
+ 965,
+ 966,
+ 969,
+ 970,
+ 974,
+ 975,
+ 1381,
+ 1382,
+ 1396,
+ 1397,
+ 1406,
+ 1407,
+ 7936,
+ 7944,
+ 7968,
+ 7976,
+ 8032,
+ 8040,
+ 8048,
+ 8049,
+ 8052,
+ 8053,
+ 8060,
+ 8061
+};
+
+#ifndef PERL_IN_XSUB_RE
+
+static UV _Perl_Multi_Char_Folds_invlist[] = {
+ 58, /* Number of elements */
+ 0, /* Current iteration position */
+ 0, /* Cache of previous search index result */
+ 290655244, /* Version and data structure type */
+ 1, /* 0 if this is the first element of the list proper;
+ 1 if the next element is the first */
+ 223,
+ 224,
+ 304,
+ 305,
+ 329,
+ 330,
+ 496,
+ 497,
+ 912,
+ 913,
+ 944,
+ 945,
+ 1415,
+ 1416,
+ 7830,
+ 7835,
+ 7838,
+ 7839,
+ 8016,
+ 8017,
+ 8018,
+ 8019,
+ 8020,
+ 8021,
+ 8022,
+ 8023,
+ 8064,
+ 8112,
+ 8114,
+ 8117,
+ 8118,
+ 8120,
+ 8124,
+ 8125,
+ 8130,
+ 8133,
+ 8134,
+ 8136,
+ 8140,
+ 8141,
+ 8146,
+ 8148,
+ 8150,
+ 8152,
+ 8162,
+ 8165,
+ 8166,
+ 8168,
+ 8178,
+ 8181,
+ 8182,
+ 8184,
+ 8188,
+ 8189,
+ 64256,
+ 64263,
+ 64275,
+ 64280
+};
+
+#endif
+
/* ex: set ro: */
diff --git a/gnu/usr.bin/perl/configure.com b/gnu/usr.bin/perl/configure.com
index 591e3b4ee7c..f3535f9cb3d 100644
--- a/gnu/usr.bin/perl/configure.com
+++ b/gnu/usr.bin/perl/configure.com
@@ -926,10 +926,10 @@ $! ...and only accept symbols if they're in the | delimited list below
$!
$ config_symbols0 ="|archlib|archlibexp|bin|binexp|builddir|cf_email|config_sh|installarchlib|installbin|installman1dir|installman3dir|"
$ config_symbols1 ="|installprivlib|installscript|installsitearch|installsitelib|most|oldarchlib|oldarchlibexp|osname|pager|perl_symbol|perl_verb|"
-$ config_symbols2 ="|prefix|privlib|privlibexp|scriptdir|sitearch|sitearchexp|sitebin|sitelib|sitelib_stem|sitelibexp|try_cxx|use64bitall|use64bitint|"
+$ config_symbols2 ="|prefix|privlib|privlibexp|scriptdir|sitearch|sitearchexp|sitebin|sitelib|sitelib_stem|sitelibexp|usecxx|use64bitall|use64bitint|"
$ config_symbols3 ="|usecasesensitive|usedefaulttypes|usedevel|useieee|useithreads|uselongdouble|usemultiplicity|usemymalloc|usedebugging_perl|"
$ config_symbols4 ="|usesecurelog|usethreads|usevmsdebug|usefaststdio|usemallocwrap|unlink_all_versions|uselargefiles|usesitecustomize|"
-$ config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthreads|useshortenedsymbols"
+$ config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthreads|useshortenedsymbols|useversionedarchname"
$!
$ open/read CONFIG 'config_sh'
$ rd_conf_loop:
@@ -1394,14 +1394,11 @@ $ DELETE/NOLOG/NOCONFIRM gccvers.lis;
$!
$Cxx_initial_check:
$!
-$! Do note that [vms]perl source files have a ways to go before they will
-$! compile under CXX.
-$! In order to test Configure.com with CXX invoke it with "-Dtry_cxx" on
+$! In order to build with the HP C++ compiler, invoke configure.com with "-Dusecxx" on
$! the command line.
$!
-$ IF F$TYPE(try_cxx) .EQS. "" THEN try_cxx := n
-$ IF try_cxx .OR. try_cxx .EQS. "define"
-$!
+$ IF F$TYPE(usecxx) .EQS. "" THEN usecxx := n
+$ IF usecxx .OR. usecxx .EQS. "define"
$ THEN
$!
$ echo "Checking for CXX..."
@@ -1442,7 +1439,7 @@ $ ! link && DEC C++ V1.1-001 on VMS VAX V5.5-2
$ ! link && DEC C++ V5.6-013 on OpenVMS VAX V7.1
$ IF tmp .eq. %X10000001
$ THEN
-$ ld_try = "Link"
+$ ld_try = "Link/nodebug"
$ vms_cc_available = vms_cc_available + "cxx "
$ echo "CXX and LINK are available."
$ ELSE
@@ -1482,7 +1479,12 @@ $ echo "Available compiler(s):"
$ echo "( ''vms_cc_available')"
$ IF .NOT.nocc
$ THEN
-$ dflt = "cc''vms_cc_dflt'" !-> "cc" in case first compile went OK
+$ IF usecxx .OR. usecxx .EQS. "define"
+$ THEN
+$ dflt = "cxx"
+$ ELSE
+$ dflt = "cc''vms_cc_dflt'" !-> "cc" in case first compile went OK
+$ ENDIF
$ ELSE
$ dflt = gcc_symbol
$ ENDIF
@@ -1751,6 +1753,8 @@ $ echo "You are using CXX ''line'"
$ cxxversion = line
$ ccversion = line
$ d_cplusplus = "define"
+$ echo4 "adding /NOANSI_ALIAS qualifier to ccflags."
+$ ccflags = ccflags + "/NOANSI_ALIAS"
$ CALL Cxx_demangler_cleanup
$ ELSE
$ d_cplusplus = "undef"
@@ -2375,6 +2379,27 @@ $ echo4 "I'll go with ''archname' anyway..."
$ ENDIF
$ ENDIF
$!
+$ bool_dflt = "n"
+$ if f$type(useversionedarchname) .nes. ""
+$ then
+$ if useversionedarchname .or. useversionedarchname .eqs. "define" then bool_dflt = "y"
+$ endif
+$ rp = "Add the Perl API version to your archname? [''bool_dflt'] "
+$ GOSUB myread
+$ IF ans
+$ THEN
+$ useversionedarchname = "define"
+$ IF F$LOCATE("-''version'", archname) .EQ. F$LENGTH(archname)
+$ THEN
+$ archname = "''archname'-''version'"
+$ echo4 "...setting architecture name to ''archname'."
+$ ELSE
+$ echo4 "...and architecture name already has -''version'."
+$ ENDIF
+$ ELSE
+$ useversionedarchname = "undef"
+$ ENDIF
+$!
$ IF usethreads .OR. usethreads .EQS. "define"
$ THEN
$ echo4 "Threads selected."
@@ -3554,6 +3579,8 @@ $ WS "int main()"
$ WS "{"
$ WS "#ifdef __STDC__"
$ WS "printf(""42\n"");"
+$ WS "#elif defined (__STD_ANSI)" ! for CXX
+$ WS "printf(""42\n"");"
$ WS "#else"
$ WS "printf(""1\n"");"
$ WS "#endif"
@@ -3564,8 +3591,8 @@ $ GOSUB compile
$ cpp_stuff=tmp
$ IF F$INTEGER(tmp) .eq. 42
$ THEN
-$ echo4 "Your C compiler and pre-processor defines the symbol:"
-$ echo4 "__STDC__"
+$ echo4 "Oh! Smells like ANSI's been here."
+$ echo "We can catify or stringify, separately or together!"
$ ENDIF
$!
$! Check for double size
@@ -4171,7 +4198,7 @@ $ WS "#include <string.h>"
$ WS "int main()"
$ WS "{"
$ WS "char * place;"
-$ WS "place = memchr(""foo"", 47, 3);"
+$ WS "place = (char *)memchr(""foo"", 47, 3);"
$ WS "exit(0);"
$ WS "}"
$ CS
@@ -4830,8 +4857,10 @@ $ WS "#endif"
$ WS "#define _SOCKADDR_LEN"
$ WS "#include <types.h>"
$ WS "#include <socket.h>"
+$ WS "#include <string.h>"
$ WS "int main() {"
$ WS "struct sockaddr sa;"
+$ WS "memset((char *)&sa, 0, sizeof(sa));"
$ WS "return (sa.sa_len);"
$ WS "}"
$ CS
@@ -4858,8 +4887,10 @@ $ OS
$ WS "#include <types.h>"
$ WS "#include <socket.h>"
$ WS "#include <in.h>"
+$ WS "#include <string.h>"
$ WS "int main() {"
$ WS "struct sockaddr_in6 sin6;"
+$ WS "memset((char *)&sin6, 0, sizeof(sin6));"
$ WS "return (sin6.sin6_scope_id);"
$ WS "}"
$ CS
@@ -5102,8 +5133,7 @@ $ usestdstat = "y"
$ echo4 -
"Looking for the realpath() function to indicate symbolic link support..."
$ OS
-$! WS "#include <stdlib.h>"
-$ WS "void exit(int foo);"
+$ WS "#include <stdlib.h>"
$ WS "char *realpath(const char *file_name, char * resolved_name, ...);"
$ WS "int main()"
$ WS "{"
@@ -5304,51 +5334,52 @@ $ THEN
$ d_attribut="define"
$ vms_cc_type="gcc"
$ ELSE
-$ vms_cc_type="cc"
+$ IF ccname .EQS. "CXX"
+$ THEN
+$ vms_cc_type="cxx"
+$ ELSE
+$ vms_cc_type="cc"
+$ ENDIF
$ d_attribut="undef"
$ ENDIF
$!
-$! Dec C >= 5.2 and VMS ver >= 7.0
-$ IF (ccname .EQS. "DEC") .AND. -
- (F$INTEGER(Dec_C_Version).GE.50200000) .AND. (vms_ver .GES. "7.0")
-$ THEN
-$ d_bcmp="define"
-$ d_getitimer="define"
-$ d_gettimeod="define"
-$ d_mmap="define"
-$ d_mprotect="define"
-$ d_munmap="define"
-$ d_msync="define"
-$ d_ualarm="define"
-$ d_uname="define"
-$! d_unsetenv="define" ! Fix me - Activating requires changing VMS code
-$ d_unsetenv="undef" ! Change will be needed to allow GNV integration
-$ d_clearenv="undef"
-$ d_usleep="define"
-$ d_setitimer="define"
-$ d_sigaction="define"
-$ d_sigprocmask="define"
-$ d_truncate="define"
-$ d_wait4="define"
-$ d_index="define"
-$ pidtype="pid_t"
-$ sig_name1="ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE"
-$ sig_name2=" ALRM TERM USR1 USR2 NUM18 NUM19 CHLD CONT STOP TSTP TTIN TTOU DEBUG"
-$ IF (vms_ver .GES. "7.3")
-$ THEN
+$ d_bcmp="define"
+$ d_getitimer="define"
+$ d_gettimeod="define"
+$ d_mmap="define"
+$ d_mprotect="define"
+$ d_munmap="define"
+$ d_msync="define"
+$ d_ualarm="define"
+$ d_uname="define"
+$! d_unsetenv="define" ! Fix me - Activating requires changing VMS code
+$ d_unsetenv="undef" ! Change will be needed to allow GNV integration
+$ d_clearenv="undef"
+$ d_usleep="define"
+$ d_setitimer="define"
+$ d_sigaction="define"
+$ d_sigprocmask="define"
+$ d_truncate="define"
+$ d_wait4="define"
+$ d_index="define"
+$ pidtype="pid_t"
+$ sig_name1="ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE"
+$ sig_name2=" ALRM TERM USR1 USR2 NUM18 NUM19 CHLD CONT STOP TSTP TTIN TTOU DEBUG"
+$ IF (vms_ver .GES. "7.3")
+$ THEN
$ sig_name2 = sig_name2 + " NUM27 WINCH"
-$ ENDIF
+$ ENDIF
$!* signal.h defines SIGRTMIN as 33 and SIGRTMAX as 64, but there is no
$!* sigqueue function or other apparent means to do realtime signalling,
$!* so let's not try to include the realtime range for now.
$!* sig_name3=" NUM29 NUM30 NUM31 NUM32 RTMIN NUM34 NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43"
$!* sig_name4=" NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58"
$!* sig_name5=" NUM59 NUM60 NUM61 NUMT62 NUM63 RTMAX"
-$ sig_name = sig_name1 + sig_name2
-$ sig_num = ""
-$ sig_num_init = ""
-$ sig_name_init = ""
-$ sig_index = 0
+$ sig_name = sig_name1 + sig_name2
+$ sig_num = ""
+$ sig_num_init = ""
+$ sig_name_init = ""
+$ sig_index = 0
$!
$ PARSE_SIG_NAME_LOOP:
$!
@@ -5372,40 +5403,7 @@ $ d_pathconf="define"
$ d_fpathconf="define"
$ d_sysconf="define"
$ d_sigsetjmp="define"
-$ ELSE
-$ pidtype="unsigned int"
-$ d_bcmp="undef"
-$ d_getitimer="undef"
-$ d_gettimeod="undef"
-$ d_mmap="undef"
-$ d_mprotect="undef"
-$ d_munmap="undef"
-$ d_msync="undef"
-$ d_ualarm="undef"
-$ d_uname="undef"
-$ d_unsetenv="undef"
-$ d_clearenv="undef"
-$ d_usleep="undef"
-$ d_setitimer="undef"
-$ d_sigaction="undef"
-$ d_sigprocmask="undef"
-$ d_truncate="undef"
-$ d_wait4="undef"
-$ d_index="undef"
-$ sig_name="ZERO HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM ABRT USR1 USR2"
-$ psnwc1="""ZERO"",""HUP"",""INT"",""QUIT"",""ILL"",""TRAP"",""IOT"",""EMT"",""FPE"",""KILL"",""BUS"",""SEGV"",""SYS"","
-$ psnwc2="""PIPE"",""ALRM"",""TERM"",""ABRT"",""USR1"",""USR2"",0"
-$ sig_name_init = psnwc1 + psnwc2
-$ sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17"
-$ sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,0"
-$ sig_size="19"
-$ sig_count="17
-$ uidtype="unsigned int"
-$ d_pathconf="undef"
-$ d_fpathconf="undef"
-$ d_sysconf="undef"
-$ d_sigsetjmp="undef"
-$ ENDIF
+$!
$!: see if tzname[] exists
$ OS
$ WS "#include <stdio.h>"
@@ -5431,7 +5429,7 @@ $ d_phostname="undef"
$ ENDIF
$!
$! Dec C alone
-$ IF ccname .EQS. "DEC"
+$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
$ THEN
$ d_mbstowcs="define"
$ d_mbtowc="define"
@@ -5665,7 +5663,7 @@ $ THEN
$ d_nv_preserves_uv = "define"
$ echo "Your NVs can preserve all ''nv_preserves_uv_bits' bits of your UVs."
$ ELSE
-$ d_nv_preserves_uv = "undef""
+$ d_nv_preserves_uv = "undef"
$ echo "Your NVs can preserve only ''nv_preserves_uv_bits' bits of your UVs."
$ ENDIF
$!
@@ -5792,12 +5790,20 @@ $ OS
$ WS "#include <stdio.h>"
$ WS "#include <lib$routines.h>"
$ WS "unsigned long code = 0;"
+$ WS "#define sys$sigprc SYS$SIGPRC"
+$ WS "#ifdef __cplusplus"
+$ WS "extern ""C"" {"
+$ WS "#endif"
+$ WS " int sys$sigprc(unsigned int *,void *,unsigned int);"
+$ WS "#ifdef __cplusplus"
+$ WS "}"
+$ WS "#endif"
$ WS "int handler(unsigned long *args) {"
$ WS " code = args[1];"
$ WS " return 1;"
$ WS "}"
$ WS "main() { "
-$ WS " int iss, sys$sigprc();"
+$ WS " int iss;"
$ WS " lib$establish(handler);"
$ WS " iss = sys$sigprc(0,0,0x1234);"
$ WS " iss = ((iss&1)==1 && code == 0x1234);"
@@ -5827,10 +5833,8 @@ $ IF ccname .EQS. "DEC"
$ THEN
$ ccflags="/Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=''obj_ext' ''ccflags'"
$ ENDIF
-$ i_dirent = "undef"
$ IF ccname .EQS. "CXX"
$ THEN
-$ i_dirent = "define"
$ ccflags="/Include=[]/Standard=ANSI/Prefix=All/Obj=''obj_ext' ''ccflags'"
$ ENDIF
$ IF use_vmsdebug_perl
@@ -5889,6 +5893,7 @@ $ WC "archname='" + archname + "'"
$ WC "baserev='" + baserev + "'"
$ WC "bin='" + bin + "'"
$ WC "binexp='" + binexp + "'"
+$ WC "bootstrap_charset='undef'"
$ WC "builddir='" + builddir + "'"
$ WC "byteorder='1234'"
$ WC "castflags='0'"
@@ -6093,7 +6098,10 @@ $ WC "d_inetaton='undef'"
$ WC "d_inetntop='undef'"
$ WC "d_inetpton='undef'"
$ WC "d_int64_t='" + d_int64_t + "'"
+$ WC "d_ip_mreq='define'"
+$ WC "d_ip_mreq_source='undef'"
$ WC "d_ipv6_mreq='define'"
+$ WC "d_ipv6_mreq_source='undef'"
$ WC "d_isascii='define'"
$ WC "d_isblank='undef'"
$ WC "d_isfinite='undef'"
@@ -6199,9 +6207,20 @@ $ WC "d_sched_yield='" + d_sched_yield + "'"
$ WC "d_scm_rights='undef'"
$ WC "d_seekdir='define'"
$ WC "d_select='" + d_select + "'"
-$ WC "d_sem='undef'"
-$ WC "d_semctl_semid_ds='undef'"
-$ WC "d_semctl_semun='undef'"
+$ IF ("''F$EXTRACT(1,3, F$GETSYI(""VERSION""))'".GES."8.4")
+$ THEN
+$ WC "d_sem='define'"
+$ WC "d_semctl_semid_ds='define'"
+$ WC "d_semctl_semun='define'"
+$ WC "d_semget='define'"
+$ WC "d_semop='define'"
+$ ELSE
+$ WC "d_sem='undef'"
+$ WC "d_semctl_semid_ds='undef'"
+$ WC "d_semctl_semun='undef'"
+$ WC "d_semget='undef'"
+$ WC "d_semop='undef'"
+$ ENDIF
$ WC "d_sendmsg='undef'"
$ WC "d_setegid='undef'"
$ WC "d_setenv='" + d_setenv + "'"
@@ -6344,7 +6363,7 @@ $ WC "devtype='" + devtype + "'"
$ WC "direntrytype='struct dirent'"
$ WC "dlext='" + dlext + "'"
$ WC "dlobj='" + dlobj + "'"
-$ WC "dlsrc='dl_vms.c'"
+$ WC "dlsrc='dl_vms.xs'"
$ WC "doublesize='" + doublesize + "'"
$ WC "drand01='" + drand01 + "'"
$ WC "dtrace='" + "'"
@@ -6391,7 +6410,7 @@ $ WC "i_assert='define'"
$ WC "i_crypt='undef'"
$ WC "i_db='undef'"
$ WC "i_dbm='undef'"
-$ WC "i_dirent='" + i_dirent + "'"
+$ WC "i_dirent='undef'" ! we roll our own
$ WC "i_dlfcn='undef'"
$ WC "i_fcntl='" + i_fcntl + "'"
$ WC "i_float='define'"
@@ -6428,7 +6447,7 @@ $ WC "i_sgtty='undef'"
$ WC "i_shadow='" + i_shadow + "'"
$ WC "i_socks='" + i_socks + "'"
$ WC "i_stdarg='define'"
-$ IF (ccname .EQS. "DEC") .AND. (F$INTEGER(Dec_C_Version).GE.60400000)
+$ IF ccname .EQS. "DEC" .AND. F$INTEGER(Dec_C_Version).GE.60400000
$ THEN
$ WC "i_stdbool='define'"
$ ELSE
@@ -6706,6 +6725,7 @@ $ WC "usesocks='undef'"
$ WC "usethreads='" + usethreads + "'"
$ WC "usethreadupcalls='" + usethreadupcalls + "'" ! VMS-specific
$ WC "usevendorprefix='" + "'" ! try to say no, though we'll be ignored as of MM 5.90_01
+$ WC "useversionedarchname='" + useversionedarchname + "'"
$ WC "usevfork='true'"
$ WC "usevmsdebug='" + usevmsdebug + "'" ! VMS-specific
$ WC "uvoformat='" + uvoformat + "'"
@@ -6928,6 +6948,9 @@ $ IF d_alwdeftype THEN WC "#define ALWAYS_DEFTYPES"
$ IF use64bitint .OR. use64bitint .EQS. "define"
$ THEN
$ WC "#define USE_64_BIT_INT"
+$ ENDIF
+$ IF uselongdouble .OR. uselongdouble .EQS. "define"
+$ THEN
$ WC "#define USE_LONG_DOUBLE"
$ ENDIF
$ IF use64bitall .OR. use64bitall .EQS. "define" THEN -
@@ -6938,17 +6961,12 @@ $ IF use_ieee_math THEN WC "#define USE_IEEE"
$ IF d_herrno .EQS. "undef" THEN WC "#define NEED_AN_H_ERRNO"
$ WC "#define HAS_ENVGETENV"
$ WC "#define PERL_EXTERNAL_GLOB"
-$ IF F$ELEMENT(0, "-", archname) .EQS. "VMS_VAX" .AND. -
- ccname .EQS. "DEC" .AND. -
- ccversion .LE. 50390006
-$ THEN
-$! Alas this does not help to build Fcntl
-$! WC "#define PERL_IGNORE_FPUSIG SIGFPE"
-$ ENDIF
$ IF kill_by_sigprc .EQS. "define" then WC "#define KILL_BY_SIGPRC"
$ IF unlink_all_versions .OR. unlink_all_versions .EQS. "define" THEN -
WC "#define UNLINK_ALL_VERSIONS"
$ IF d_sockaddr_sa_len .EQS. "define" then WC "#define _SOCKADDR_LEN 1"
+$ IF ccname .EQS. "CXX" then WC "#define NO_ENVIRON_ARRAY"
+$ IF ccname .EQS. "CXX" then WC "#define VMS" ! only has __VMS by default
$ CLOSE CONFIG
$!
$ echo4 "Doing variable substitutions on .SH files..."
diff --git a/gnu/usr.bin/perl/cpan/Archive-Extract/lib/Archive/Extract.pm b/gnu/usr.bin/perl/cpan/Archive-Extract/lib/Archive/Extract.pm
index 4a0727f6eeb..ae3af3edf82 100644
--- a/gnu/usr.bin/perl/cpan/Archive-Extract/lib/Archive/Extract.pm
+++ b/gnu/usr.bin/perl/cpan/Archive-Extract/lib/Archive/Extract.pm
@@ -1,4 +1,5 @@
package Archive::Extract;
+use if $] > 5.017, 'deprecate';
use strict;
@@ -16,7 +17,9 @@ use Locale::Maketext::Simple Style => 'gettext';
### solaris has silly /bin/tar output ###
use constant ON_SOLARIS => $^O eq 'solaris' ? 1 : 0;
use constant ON_NETBSD => $^O eq 'netbsd' ? 1 : 0;
-use constant ON_FREEBSD => $^O eq 'freebsd' ? 1 : 0;
+use constant ON_OPENBSD => $^O eq 'openbsd' ? 1 : 0;
+use constant ON_FREEBSD => $^O =~ m!^(free|midnight)bsd$! ? 1 : 0;
+use constant ON_LINUX => $^O eq 'linux' ? 1 : 0;
use constant FILE_EXISTS => sub { -e $_[0] ? 1 : 0 };
### VMS may require quoting upper case command options
@@ -45,7 +48,7 @@ use vars qw[$VERSION $PREFER_BIN $PROGRAMS $WARN $DEBUG
$_ALLOW_BIN $_ALLOW_PURE_PERL $_ALLOW_TAR_ITER
];
-$VERSION = '0.58';
+$VERSION = '0.68';
$PREFER_BIN = 0;
$WARN = 1;
$DEBUG = 0;
@@ -126,12 +129,22 @@ See the C<HOW IT WORKS> section further down for details.
### see what /bin/programs are available ###
$PROGRAMS = {};
-for my $pgm (qw[tar unzip gzip bunzip2 uncompress unlzma unxz]) {
+CMD: for my $pgm (qw[tar unzip gzip bunzip2 uncompress unlzma unxz]) {
if ( $pgm eq 'unzip' and ( ON_NETBSD or ON_FREEBSD ) ) {
local $IPC::Cmd::INSTANCES = 1;
- my @possibles = can_run($pgm);
($PROGRAMS->{$pgm}) = grep { ON_NETBSD ? m!/usr/pkg/! : m!/usr/local! } can_run($pgm);
- next;
+ next CMD;
+ }
+ if ( $pgm eq 'unzip' and ON_LINUX ) {
+ # Check if 'unzip' is busybox masquerading
+ local $IPC::Cmd::INSTANCES = 1;
+ my $opt = ON_VMS ? '"-Z"' : '-Z';
+ ($PROGRAMS->{$pgm}) = grep { scalar run(command=> [ $_, $opt, '-1' ]) } can_run($pgm);
+ next CMD;
+ }
+ if ( $pgm eq 'tar' and ON_OPENBSD || ON_SOLARIS ) {
+ # try gtar first
+ next CMD if $PROGRAMS->{$pgm} = can_run('gtar');
}
$PROGRAMS->{$pgm} = can_run($pgm);
}
@@ -647,7 +660,7 @@ sub have_old_bunzip2 {
### check for /bin/tar ###
### check for /bin/gzip if we need it ###
### if any of the binaries are not available, return NA
- { my $diag = not $self->bin_tar ?
+ { my $diag = !$self->bin_tar ?
loc("No '%1' program found", '/bin/tar') :
$self->is_tgz && !$self->bin_gzip ?
loc("No '%1' program found", '/bin/gzip') :
@@ -1655,7 +1668,7 @@ thread safe. See C<rt.cpan.org> bug C<#45671> for details.
=head1 BUG REPORTS
-Please report bugs or other issues to E<lt>bug-archive-extract@rt.cpan.org<gt>.
+Please report bugs or other issues to E<lt>bug-archive-extract@rt.cpan.orgE<gt>.
=head1 AUTHOR
diff --git a/gnu/usr.bin/perl/cpan/Archive-Extract/t/01_Archive-Extract.t b/gnu/usr.bin/perl/cpan/Archive-Extract/t/01_Archive-Extract.t
index 649aaea7b55..cb67d277562 100755
--- a/gnu/usr.bin/perl/cpan/Archive-Extract/t/01_Archive-Extract.t
+++ b/gnu/usr.bin/perl/cpan/Archive-Extract/t/01_Archive-Extract.t
@@ -2,7 +2,7 @@ BEGIN { chdir 't' if -d 't' };
BEGIN { mkdir 'out' unless -d 'out' };
### left behind, at least on Win32. See core patch #31904
-END { rmtree('out') };
+END { rmtree('out') };
use strict;
use lib qw[../lib];
@@ -41,13 +41,13 @@ my $Class = 'Archive::Extract';
use_ok($Class);
### debug will always be enabled on dev versions
-my $Debug = (not $ENV{PERL_CORE} and
+my $Debug = (not $ENV{PERL_CORE} and
($ARGV[0] or $Archive::Extract::VERSION =~ /_/))
- ? 1
+ ? 1
: 0;
-my $Self = File::Spec->rel2abs(
- IS_WIN32 ? &Win32::GetShortPathName( cwd() ) : cwd()
+my $Self = File::Spec->rel2abs(
+ IS_WIN32 ? &Win32::GetShortPathName( cwd() ) : cwd()
);
my $SrcDir = File::Spec->catdir( $Self,'src' );
my $OutDir = File::Spec->catdir( $Self,'out' );
@@ -104,7 +104,7 @@ my $tmpl = {
modules => [qw[Archive::Zip]],
method => 'is_zip',
outfile => 'a',
- },
+ },
'x.ear' => { programs => [qw[unzip]],
modules => [qw[Archive::Zip]],
method => 'is_zip',
@@ -114,12 +114,12 @@ my $tmpl = {
modules => [qw[Archive::Zip]],
method => 'is_zip',
outfile => 'a',
- },
+ },
'x.par' => { programs => [qw[unzip]],
modules => [qw[Archive::Zip]],
method => 'is_zip',
outfile => 'a',
- },
+ },
'x.lzma' => { programs => [qw[unlzma]],
modules => [qw[Compress::unLZMA]],
method => 'is_lzma',
@@ -144,33 +144,33 @@ my $tmpl = {
},
### with a directory
'y.tbz' => { programs => [qw[bunzip2 tar]],
- modules => [qw[Archive::Tar
+ modules => [qw[Archive::Tar
IO::Uncompress::Bunzip2]],
method => 'is_tbz',
outfile => 'z',
outdir => 'y',
},
'y.tar.bz2' => { programs => [qw[bunzip2 tar]],
- modules => [qw[Archive::Tar
+ modules => [qw[Archive::Tar
IO::Uncompress::Bunzip2]],
method => 'is_tbz',
outfile => 'z',
outdir => 'y'
- },
+ },
'y.txz' => { programs => [qw[unxz tar]],
- modules => [qw[Archive::Tar
+ modules => [qw[Archive::Tar
IO::Uncompress::UnXz]],
method => 'is_txz',
outfile => 'z',
outdir => 'y',
},
'y.tar.xz' => { programs => [qw[unxz tar]],
- modules => [qw[Archive::Tar
+ modules => [qw[Archive::Tar
IO::Uncompress::UnXz]],
method => 'is_txz',
outfile => 'z',
outdir => 'y'
- },
+ },
'y.tgz' => { programs => [qw[gzip tar]],
modules => [qw[Archive::Tar IO::Zlib]],
method => 'is_tgz',
@@ -238,7 +238,7 @@ my $tmpl = {
delete $tmpl->{'y.tbz'};
diag "Old bunzip2 detected, skipping .tbz test";
}
-}
+}
### show us the tools IPC::Cmd will use to run binary programs
if( $Debug ) {
@@ -258,34 +258,34 @@ if( $Debug ) {
my @types = $Class->$meth;
ok( scalar(@types), " Got a list of types" );
-
+
for my $type ( @types ) {
my $obj = $Class->new( archive => $Me, type => $type );
ok( $obj, " Object created based on '$type'" );
ok( !$obj->error, " No error logged" );
}
-
+
### test unknown type
{ ### must turn on warnings to catch error here
local $Archive::Extract::WARN = 1;
-
+
my $warnings;
local $SIG{__WARN__} = sub { $warnings .= "@_" };
-
+
my $ae = $Class->new( archive => $Me );
ok( !$ae, " No archive created based on '$Me'" );
ok( !$Class->error, " Error not captured in class method" );
ok( $warnings, " Error captured as warning" );
like( $warnings, qr/Cannot determine file type for/,
" Error is: unknown file type" );
- }
-}
+ }
+}
### test multiple errors
### XXX whitebox test
{ ### grab a random file from the template, so we can make an object
- my $ae = Archive::Extract->new(
- archive => File::Spec->catfile($SrcDir,[keys %$tmpl]->[0])
+ my $ae = Archive::Extract->new(
+ archive => File::Spec->catfile($SrcDir,[keys %$tmpl]->[0])
);
ok( $ae, "Archive created" );
ok( not($ae->error), " No errors yet" );
@@ -297,28 +297,28 @@ if( $Debug ) {
my $err = $ae->error;
ok( $err, " Errors retrieved" );
-
+
my $expect = join $/, 1..5;
is( $err, $expect, " As expected" );
### this resets the errors
- ### override the 'check' routine to return false, so we bail out of
+ ### override the 'check' routine to return false, so we bail out of
### extract() early and just run the error reset code;
{ no warnings qw[once redefine];
- local *Archive::Extract::check = sub { return };
+ local *Archive::Extract::check = sub { return };
$ae->extract;
}
ok( not($ae->error), " Errors erased after ->extract() call" );
}
### XXX whitebox test
-### test __get_extract_dir
+### test __get_extract_dir
SKIP: { my $meth = '__get_extract_dir';
### get the right separator -- File::Spec does clean ups for
### paths, so we need to join ourselves.
my $sep = [ split '', File::Spec->catfile( 'a', 'b' ) ]->[1];
-
+
### bug #23999: Attempt to generate Makefile.PL gone awry
### showed that dirs in the style of './dir/' were reported
### to be unpacked in '.' rather than in 'dir'. here we test
@@ -332,17 +332,17 @@ SKIP: { my $meth = '__get_extract_dir';
### build a list like [dir, dir/file] and [./dir ./dir/file]
### where the dir and file actually exist, which is important
### for the method call
- my @files = map { length $prefix
+ my @files = map { length $prefix
? join $sep, $prefix, $_
: $_
} $dir, File::Spec->catfile( $dir, [keys %$tmpl]->[0] );
-
+
my $res = $Class->$meth( \@files );
$res = &Win32::GetShortPathName( $res ) if IS_WIN32;
ok( $res, "Found extraction dir '$res'" );
is( $res, $SrcDir, " Is expected dir '$SrcDir'" );
- }
+ }
}
### configuration to run in: allow perl or allow binaries
@@ -351,7 +351,7 @@ for my $switch ( [0,1], [1,0] ) {
local $Archive::Extract::_ALLOW_PURE_PERL = $switch->[0];
local $Archive::Extract::_ALLOW_BIN = $switch->[1];
-
+
diag("Running extract with configuration: $cfg") if $Debug;
for my $archive (keys %$tmpl) {
@@ -370,20 +370,20 @@ for my $switch ( [0,1], [1,0] ) {
for my $tar_iter (@with_tar_iter) { SKIP: {
### Doesn't matter unless .tar, .tbz, .tgz, .txz
- local $Archive::Extract::_ALLOW_TAR_ITER = $tar_iter;
-
+ local $Archive::Extract::_ALLOW_TAR_ITER = $tar_iter;
+
diag("Archive::Tar->iter: $tar_iter") if $Debug;
isa_ok( $ae, $Class );
my $method = $tmpl->{$archive}->{method};
ok( $ae->$method(), "Archive type $method recognized properly" );
-
+
my $file = $tmpl->{$archive}->{outfile};
my $dir = $tmpl->{$archive}->{outdir}; # can be undef
my $rel_path = File::Spec->catfile( grep { defined } $dir, $file );
my $abs_path = File::Spec->catfile( $OutDir, $rel_path );
- my $abs_dir = File::Spec->catdir(
+ my $abs_dir = File::Spec->catdir(
grep { defined } $OutDir, $dir );
my $nix_path = File::Spec::Unix->catfile(
grep { defined } $dir, $file );
@@ -412,15 +412,15 @@ for my $switch ( [0,1], [1,0] ) {
### XXX test me!
#my @outs = $ae->is_gz ? ($abs_path, $OutDir) : ($OutDir);
my @outs = $ae->is_gz || $ae->is_bz2 || $ae->is_Z || $ae->is_lzma || $ae->is_xz
- ? ($abs_path)
+ ? ($abs_path)
: ($OutDir);
### 10 tests from here on down ###
if( ($mod_fail && ($pgm_fail || !$Archive::Extract::_ALLOW_BIN))
||
($pgm_fail && ($mod_fail || !$Archive::Extract::_ALLOW_PURE_PERL))
- ) {
- skip "No binaries or modules to extract ".$archive,
+ ) {
+ skip "No binaries or modules to extract ".$archive,
(10 * scalar @outs);
}
@@ -428,7 +428,7 @@ for my $switch ( [0,1], [1,0] ) {
### be a problem...
local $IPC::Cmd::WARN = 0;
local $IPC::Cmd::WARN = 0;
-
+
for my $use_buffer ( IPC::Cmd->can_capture_buffer , 0 ) {
### test buffers ###
@@ -448,13 +448,13 @@ for my $switch ( [0,1], [1,0] ) {
diag("Extracting to: $to") if $Debug;
diag("Buffers enabled: ".!$turn_off) if $Debug;
-
+
my $rv = $ae->extract( to => $to );
-
+
SKIP: {
my $re = qr/^No buffer captured/;
my $err = $ae->error || '';
-
+
### skip buffer tests if we dont have buffers or
### explicitly turned them off
skip "No buffers available", 8
@@ -462,42 +462,42 @@ for my $switch ( [0,1], [1,0] ) {
&& $err =~ $re;
### skip tests if we dont have an extractor
- skip "No extractor available", 8
+ skip "No extractor available", 8
if $err =~ /Extract failed; no extractors available/;
-
+
### win32 + bin utils is notorious, and none of them are
- ### officially supported by strawberry. So if we
+ ### officially supported by strawberry. So if we
### encounter an error while extracting while running
### with $PREFER_BIN on win32, just skip the tests.
### See rt#46948: unable to install install on win32
### for details on the pain
skip "Binary tools on Win32 are very unreliable", 8
- if $err and $Archive::Extract::_ALLOW_BIN
+ if $err and $Archive::Extract::_ALLOW_BIN
and IS_WIN32;
-
+
ok( $rv, "extract() for '$archive' reports success ($cfg)");
-
+
diag("Extractor was: " . $ae->_extractor) if $Debug;
-
+
### if we /should/ have buffers, there should be
### no errors complaining we dont have them...
unlike( $err, $re,
"No errors capturing buffers" );
-
+
### might be 1 or 2, depending whether we extracted
### a dir too
my $files = $ae->files || [];
my $file_cnt = grep { defined } $file, $dir;
is( scalar @$files, $file_cnt,
"Found correct number of output files (@$files)" );
-
+
### due to prototypes on is(), if there's no -1 index on
### the array ref, it'll give a fatal exception:
### "Modification of non-creatable array value attempted,
### subscript -1 at -e line 1." So wrap it in do { }
is( do { $files->[-1] }, $nix_path,
"Found correct output file '$nix_path'" );
-
+
ok( -e $abs_path,
"Output file '$abs_path' exists" );
ok( $ae->extract_path,
@@ -513,15 +513,15 @@ for my $switch ( [0,1], [1,0] ) {
1 while unlink $abs_path;
ok( !(-e $abs_path), "Output file successfully removed" );
-
+
SKIP: {
skip "No extract path captured, can't remove paths", 2
unless $ae->extract_path;
-
+
### if something went wrong with determining the out
### path, don't go deleting stuff.. might be Really Bad
my $out_re = quotemeta( $OutDir );
-
+
### VMS directory layout is different. Craig Berry
### explains:
### the test is trying to determine if C</disk1/foo/bar>
@@ -529,22 +529,22 @@ for my $switch ( [0,1], [1,0] ) {
### syntax, that would mean trying to determine whether
### C<disk1:[foo.bar]> is part of C<disk1:[foo.bar.baz]>
### Because we have both a directory delimiter
- ### (dot) and a directory spec terminator (right
- ### bracket), we have to trim the right bracket from
+ ### (dot) and a directory spec terminator (right
+ ### bracket), we have to trim the right bracket from
### the first one to make it successfully match the
### second one. Since we're asserting the same truth --
### that one path spec is the leading part of the other
### -- it seems to me ok to have this in the test only.
- ###
+ ###
### so we strip the ']' of the back of the regex
- $out_re =~ s/\\\]// if IS_VMS;
-
- if( $ae->extract_path !~ /^$out_re/ ) {
- ok( 0, "Extractpath WRONG (".$ae->extract_path.")");
+ $out_re =~ s/\\\]// if IS_VMS;
+
+ if( $ae->extract_path !~ /^$out_re/ ) {
+ ok( 0, "Extractpath WRONG (".$ae->extract_path.")");
skip( "Unsafe operation -- skip cleanup!!!" ), 1;
- }
-
- eval { rmtree( $ae->extract_path ) };
+ }
+
+ eval { rmtree( $ae->extract_path ) };
ok( !$@, " rmtree gave no error" );
ok( !(-d $ae->extract_path ),
" Extract dir successfully removed" );
diff --git a/gnu/usr.bin/perl/cpan/Archive-Tar/bin/ptar b/gnu/usr.bin/perl/cpan/Archive-Tar/bin/ptar
index 14c09128fc0..0eaffa7ccb7 100644
--- a/gnu/usr.bin/perl/cpan/Archive-Tar/bin/ptar
+++ b/gnu/usr.bin/perl/cpan/Archive-Tar/bin/ptar
@@ -6,8 +6,13 @@ use Getopt::Std;
use Archive::Tar;
use Data::Dumper;
+# Allow historic support for dashless bundled options
+# tar cvf file.tar
+# is valid (GNU) tar style
+@ARGV && $ARGV[0] =~ m/^[DdcvzthxIC]+[fT]?$/ and
+ unshift @ARGV, map { "-$_" } split m// => shift @ARGV;
my $opts = {};
-getopts('Ddcvzthxf:IC', $opts) or die usage();
+getopts('Ddcvzthxf:ICT:', $opts) or die usage();
### show the help message ###
die usage() if $opts->{h};
@@ -28,11 +33,21 @@ my $verbose = $opts->{v} ? 1 : 0;
my $file = $opts->{f} ? $opts->{f} : 'default.tar';
my $tar = Archive::Tar->new();
-
if( $opts->{c} ) {
my @files;
+ my @src = @ARGV;
+ if( $opts->{T} ) {
+ if( $opts->{T} eq "-" ) {
+ chomp( @src = <STDIN> );
+ } elsif( open my $fh, "<", $opts->{T} ) {
+ chomp( @src = <$fh> );
+ } else {
+ die "$0: $opts->{T}: $!\n";
+ }
+ }
+
find( sub { push @files, $File::Find::name;
- print $File::Find::name.$/ if $verbose }, @ARGV );
+ print $File::Find::name.$/ if $verbose }, @src );
if ($file eq '-') {
use IO::Handle;
@@ -88,6 +103,7 @@ sub usage {
=head1 SYNOPSIS
ptar -c [-v] [-z] [-C] [-f ARCHIVE_FILE | -] FILE FILE ...
+ ptar -c [-v] [-z] [-C] [-T index | -] [-f ARCHIVE_FILE | -]
ptar -x [-v] [-z] [-f ARCHIVE_FILE | -]
ptar -t [-z] [-f ARCHIVE_FILE | -]
ptar -h
@@ -102,6 +118,7 @@ sub usage {
v Print filenames as they are added or extracted from ARCHIVE_FILE
h Prints this help message
C CPAN mode - drop 022 from permissions
+ T get names to create from file
=head1 SEE ALSO
diff --git a/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar.pm b/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar.pm
index 4ed3ae0386e..dd4b968acd3 100644
--- a/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar.pm
+++ b/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar.pm
@@ -31,7 +31,7 @@ use vars qw[$DEBUG $error $VERSION $WARN $FOLLOW_SYMLINK $CHOWN $CHMOD
$DEBUG = 0;
$WARN = 1;
$FOLLOW_SYMLINK = 0;
-$VERSION = "1.82";
+$VERSION = "1.90";
$CHOWN = 1;
$CHMOD = 1;
$SAME_PERMISSIONS = $> == 0 ? 1 : 0;
@@ -335,8 +335,15 @@ sub _read_tar {
LOOP:
while( $handle->read( $chunk, HEAD ) ) {
### IO::Zlib doesn't support this yet
- my $offset = eval { tell $handle } || 'unknown';
- $@ = '';
+ my $offset;
+ if ( ref($handle) ne 'IO::Zlib' ) {
+ local $@;
+ $offset = eval { tell $handle } || 'unknown';
+ $@ = '';
+ }
+ else {
+ $offset = 'unknown';
+ }
unless( $read++ ) {
my $gzip = GZIP_MAGIC_NUM;
@@ -867,7 +874,7 @@ sub _extract_file {
$self->_error( qq[Could not update timestamp] );
}
- if( $CHOWN && CAN_CHOWN->() ) {
+ if( $CHOWN && CAN_CHOWN->() and not -l $full ) {
chown $entry->uid, $entry->gid, $full or
$self->_error( qq[Could not set uid/gid on '$full'] );
}
@@ -1451,6 +1458,12 @@ sub add_files {
next;
}
+ eval {
+ if( utf8::is_utf8( $file )) {
+ utf8::encode( $file );
+ }
+ };
+
unless( -e $file || -l $file ) {
$self->_error( qq[No such file: '$file'] );
next;
@@ -1482,8 +1495,8 @@ The following list of properties is supported: name, size, mtime
devmajor, devminor, prefix, type. (On MacOS, the file's path and
modification times are converted to Unix equivalents.)
-Valid values for the file type are the following constants defined in
-Archive::Tar::Constants:
+Valid values for the file type are the following constants defined by
+Archive::Tar::Constant:
=over 4
@@ -1743,7 +1756,7 @@ If C<list_archive()> is passed an array reference as its third
argument it returns a list of hash references containing the requested
properties of each file. The following list of properties is
supported: full_path, name, size, mtime (last modified date), mode,
-uid, gid, linkname, uname, gname, devmajor, devminor, prefix.
+uid, gid, linkname, uname, gname, devmajor, devminor, prefix, type.
See C<Archive::Tar::File> for details about supported properties.
diff --git a/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm b/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm
index 1bea5ce12d7..7839c6dc5cb 100644
--- a/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm
+++ b/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar/Constant.pm
@@ -3,7 +3,7 @@ package Archive::Tar::Constant;
BEGIN {
require Exporter;
- $VERSION = '1.82';
+ $VERSION = '1.90';
@ISA = qw[Exporter];
require Time::Local if $^O eq "MacOS";
diff --git a/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar/File.pm b/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar/File.pm
index 9067de10863..de01e0513d4 100644
--- a/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar/File.pm
+++ b/gnu/usr.bin/perl/cpan/Archive-Tar/lib/Archive/Tar/File.pm
@@ -13,7 +13,7 @@ use Archive::Tar::Constant;
use vars qw[@ISA $VERSION];
#@ISA = qw[Archive::Tar];
-$VERSION = '1.82';
+$VERSION = '1.90';
### set value to 1 to oct() it during the unpack ###
diff --git a/gnu/usr.bin/perl/cpan/AutoLoader/lib/AutoLoader.pm b/gnu/usr.bin/perl/cpan/AutoLoader/lib/AutoLoader.pm
index 8dab836ab30..955f852cbf3 100644
--- a/gnu/usr.bin/perl/cpan/AutoLoader/lib/AutoLoader.pm
+++ b/gnu/usr.bin/perl/cpan/AutoLoader/lib/AutoLoader.pm
@@ -15,11 +15,18 @@ BEGIN {
$is_epoc = $^O eq 'epoc';
$is_vms = $^O eq 'VMS';
$is_macos = $^O eq 'MacOS';
- $VERSION = '5.72';
+ $VERSION = '5.73';
}
AUTOLOAD {
my $sub = $AUTOLOAD;
+ autoload_sub($sub);
+ goto &$sub;
+}
+
+sub autoload_sub {
+ my $sub = shift;
+
my $filename = AutoLoader::find_filename( $sub );
my $save = $@;
@@ -48,7 +55,8 @@ AUTOLOAD {
}
}
$@ = $save;
- goto &$sub;
+
+ return 1;
}
sub find_filename {
@@ -335,6 +343,21 @@ create the individual files. L<ExtUtils::MakeMaker> will invoke
B<AutoSplit> automatically if B<AutoLoader> is used in a module source
file.
+=head2 Forcing AutoLoader to Load a Function
+
+Sometimes, it can be necessary or useful to make sure that a certain
+function is fully loaded by AutoLoader. This is the case, for example,
+when you need to wrap a function to inject debugging code. It is also
+helpful to force early loading of code before forking to make use of
+copy-on-write as much as possible.
+
+Starting with AutoLoader 5.73, you can call the
+C<AutoLoader::autoload_sub> function with the fully-qualified name of
+the function to load from its F<.al> file. The behaviour is exactly
+the same as if you called the function, triggering the regular
+C<AUTOLOAD> mechanism, but it does not actually execute the
+autoloaded function.
+
=head1 CAVEATS
AutoLoaders prior to Perl 5.002 had a slightly different interface. Any
@@ -376,7 +399,8 @@ can benefit from bug fixes.
This package has the same copyright and license as the perl core:
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011
+ 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+ 2011, 2012
by Larry Wall and others
All rights reserved.
diff --git a/gnu/usr.bin/perl/cpan/AutoLoader/t/01AutoLoader.t b/gnu/usr.bin/perl/cpan/AutoLoader/t/01AutoLoader.t
index dcee5c518ab..aa52904d1fd 100755
--- a/gnu/usr.bin/perl/cpan/AutoLoader/t/01AutoLoader.t
+++ b/gnu/usr.bin/perl/cpan/AutoLoader/t/01AutoLoader.t
@@ -18,7 +18,7 @@ BEGIN
unshift @INC, $dir;
}
-use Test::More tests => 18;
+use Test::More tests => 21;
sub write_file {
my ($file, $text) = @_;
@@ -53,6 +53,12 @@ write_file( File::Spec->catfile( $fulldir, 'blechanawilla.al' ), $blechanawilla_
# to find the above file so we duplicate it where they should find it.
write_file( File::Spec->catfile( $fulldir, 'blechanawil.al' ), $blechanawilla_text );
+write_file( File::Spec->catfile( $fulldir, 'notreached.al' ), <<'EOT' );
+package Foo;
+sub notreached { die "Should not be reached!" }
+1;
+EOT
+
# Let's define the package
package Foo;
require AutoLoader;
@@ -61,6 +67,7 @@ AutoLoader->import( 'AUTOLOAD' );
sub new { bless {}, shift };
sub foo;
sub bazmarkhianish;
+sub notreached;
package main;
@@ -118,6 +125,16 @@ EOT
Foo::a();
+# Test whether autoload_sub works without actually executing the function
+ok(!defined(&Foo::notreached), "Foo::notreached unknown to boot");
+AutoLoader::autoload_sub("Foo::notreached");
+ok(defined(&Foo::notreached), "Foo::notreached loaded by autoload_sub");
+
+# Make sure that repeatedly calling autoload_sub is not a problem:
+AutoLoader::autoload_sub("Foo::notreached");
+eval {Foo::notreached;};
+ok($@ && $@ =~ /Should not/, "Foo::notreached works as expected");
+
package Bar;
AutoLoader->import();
::ok( ! defined &AUTOLOAD, 'AutoLoader should not export AUTOLOAD by default' );
diff --git a/gnu/usr.bin/perl/cpan/B-Debug/Debug.pm b/gnu/usr.bin/perl/cpan/B-Debug/Debug.pm
index fb8db3ff20b..31b0e2834be 100644
--- a/gnu/usr.bin/perl/cpan/B-Debug/Debug.pm
+++ b/gnu/usr.bin/perl/cpan/B-Debug/Debug.pm
@@ -1,6 +1,6 @@
package B::Debug;
-our $VERSION = '1.17';
+our $VERSION = '1.18';
use strict;
require 5.006;
@@ -285,11 +285,16 @@ EOT
sub B::AV::debug {
my ($av) = @_;
$av->B::SV::debug;
+ _array_debug($av);
+}
+
+sub _array_debug {
+ my ($av) = @_;
# tied arrays may leave out FETCHSIZE
my (@array) = eval { $av->ARRAY; };
print "\tARRAY\t\t(", join(", ", map("0x" . $$_, @array)), ")\n";
my $fill = eval { scalar(@array) };
- if ($Config{'useithreads'}) {
+ if ($Config{'useithreads'} && class($av) ne 'PADLIST') {
printf <<'EOT', $fill, $av->MAX, $av->OFF;
FILL %d
MAX %d
@@ -353,6 +358,15 @@ sub B::SPECIAL::debug {
print exists $specialsv_name[$i] ? $specialsv_name[$i] : "", "\n";
}
+sub B::PADLIST::debug {
+ my ($padlist) = @_;
+ printf <<'EOT', class($padlist), $$padlist, $padlist->REFCNT;
+%s (0x%x)
+ REFCNT %d
+EOT
+ _array_debug($padlist);
+}
+
sub compile {
my $order = shift;
B::clearsym();
@@ -417,3 +431,4 @@ Copyright (c) 2008, 2010 Reini Urban
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
=cut
+
diff --git a/gnu/usr.bin/perl/cpan/CGI/t/autoescape.t b/gnu/usr.bin/perl/cpan/CGI/t/autoescape.t
index 411729823bb..3a25c2d96ac 100755
--- a/gnu/usr.bin/perl/cpan/CGI/t/autoescape.t
+++ b/gnu/usr.bin/perl/cpan/CGI/t/autoescape.t
@@ -6,6 +6,7 @@ use warnings;
use Test::More tests => 18;
use CGI qw/ autoEscape escapeHTML button textfield password_field textarea popup_menu scrolling_list checkbox_group optgroup checkbox radio_group submit image_button button /;
+$CGI::Util::SORT_ATTRIBUTES = 1;
is (button(-name => 'test<'), '<input type="button" name="test&lt;" value="test&lt;" />', "autoEscape defaults to On");
diff --git a/gnu/usr.bin/perl/cpan/CGI/t/form.t b/gnu/usr.bin/perl/cpan/CGI/t/form.t
index a8373c6da74..0a90b9cb8f1 100755
--- a/gnu/usr.bin/perl/cpan/CGI/t/form.t
+++ b/gnu/usr.bin/perl/cpan/CGI/t/form.t
@@ -27,7 +27,7 @@ $ENV{SERVER_PORT} = 8080;
$ENV{SERVER_NAME} = 'the.good.ship.lollypop.com';
is(start_form(-action=>'foobar',-method=>'get'),
- qq(<form method="get" action="foobar" enctype="multipart/form-data">\n),
+ qq(<form method="get" action="foobar" enctype="multipart/form-data">),
"start_form()");
is(submit(),
@@ -189,56 +189,46 @@ my $saved_XHTML = $CGI::XHTML;
$CGI::XHTML = 1;
is(start_form("GET","/foobar"),
- qq{<form method="get" action="/foobar" enctype="multipart/form-data">
-},
+ qq{<form method="get" action="/foobar" enctype="multipart/form-data">},
'start_form() + XHTML');
is(start_form("GET", "/foobar",&CGI::URL_ENCODED),
- qq{<form method="get" action="/foobar" enctype="application/x-www-form-urlencoded">
-},
+ qq{<form method="get" action="/foobar" enctype="application/x-www-form-urlencoded">},
'start_form() + XHTML + URL_ENCODED');
is(start_form("GET", "/foobar",&CGI::MULTIPART),
- qq{<form method="get" action="/foobar" enctype="multipart/form-data">
-},
+ qq{<form method="get" action="/foobar" enctype="multipart/form-data">},
'start_form() + XHTML + MULTIPART');
is(start_multipart_form("GET", "/foobar"),
- qq{<form method="get" action="/foobar" enctype="multipart/form-data">
-},
+ qq{<form method="get" action="/foobar" enctype="multipart/form-data">},
'start_multipart_form() + XHTML');
is(start_multipart_form("GET", "/foobar","name=\"foobar\""),
- qq{<form method="get" action="/foobar" enctype="multipart/form-data" name="foobar">
-},
+ qq{<form method="get" action="/foobar" enctype="multipart/form-data" name="foobar">},
'start_multipart_form() + XHTML + additional args');
# set no XHTML
$CGI::XHTML = 0;
is(start_form("GET","/foobar"),
- qq{<form method="get" action="/foobar" enctype="application/x-www-form-urlencoded">
-},
+ qq{<form method="get" action="/foobar" enctype="application/x-www-form-urlencoded">},
'start_form() + NO_XHTML');
is(start_form("GET", "/foobar",&CGI::URL_ENCODED),
- qq{<form method="get" action="/foobar" enctype="application/x-www-form-urlencoded">
-},
+ qq{<form method="get" action="/foobar" enctype="application/x-www-form-urlencoded">},
'start_form() + NO_XHTML + URL_ENCODED');
is(start_form("GET", "/foobar",&CGI::MULTIPART),
- qq{<form method="get" action="/foobar" enctype="multipart/form-data">
-},
+ qq{<form method="get" action="/foobar" enctype="multipart/form-data">},
'start_form() + NO_XHTML + MULTIPART');
is(start_multipart_form("GET", "/foobar"),
- qq{<form method="get" action="/foobar" enctype="multipart/form-data">
-},
+ qq{<form method="get" action="/foobar" enctype="multipart/form-data">},
'start_multipart_form() + NO_XHTML');
is(start_multipart_form("GET", "/foobar","name=\"foobar\""),
- qq{<form method="get" action="/foobar" enctype="multipart/form-data" name="foobar">
-},
+ qq{<form method="get" action="/foobar" enctype="multipart/form-data" name="foobar">},
'start_multipart_form() + NO_XHTML + additional args');
# restoring value
diff --git a/gnu/usr.bin/perl/cpan/CGI/t/function.t b/gnu/usr.bin/perl/cpan/CGI/t/function.t
index 101333953ff..a15c010dd9b 100755
--- a/gnu/usr.bin/perl/cpan/CGI/t/function.t
+++ b/gnu/usr.bin/perl/cpan/CGI/t/function.t
@@ -5,6 +5,7 @@ END {print "not ok 1\n" unless $loaded;}
use Config;
use CGI (':standard','keywords');
$loaded = 1;
+$CGI::Util::SORT_ATTRIBUTES = 1;
print "ok 1\n";
######################### End of black magic.
@@ -103,4 +104,4 @@ test(30, !charset("") && header() eq "Content-Type: text/html${CRLF}${CRLF}", "E
test(31, header(-foo=>'bar') eq "Foo: bar${CRLF}Content-Type: text/html${CRLF}${CRLF}", "Custom header");
-test(32, start_form(-action=>'one',name=>'two',onsubmit=>'three') eq qq(<form method="post" action="one" enctype="multipart/form-data" onsubmit="three" name="two">\n), "initial dash followed by undashed arguments");
+test(32, start_form(-action=>'one',name=>'two',onsubmit=>'three') eq qq(<form method="post" action="one" enctype="multipart/form-data" name="two" onsubmit="three">), "initial dash followed by undashed arguments")
diff --git a/gnu/usr.bin/perl/cpan/CGI/t/headers.t b/gnu/usr.bin/perl/cpan/CGI/t/headers.t
index 661b74bb796..4b4922c35f2 100644
--- a/gnu/usr.bin/perl/cpan/CGI/t/headers.t
+++ b/gnu/usr.bin/perl/cpan/CGI/t/headers.t
@@ -22,6 +22,12 @@ like($@,qr/contains a newline/,'invalid header blows up');
like $cgi->header( -type => "text/html".$CGI::CRLF." evil: stuff " ),
qr#Content-Type: text/html evil: stuff#, 'known header, with leading and trailing whitespace on the continuation line';
+eval { $cgi->header( -p3p => ["foo".$CGI::CRLF."bar"] ) };
+like($@,qr/contains a newline/,'P3P header with CRLF embedded blows up');
+
+eval { $cgi->header( -cookie => ["foo".$CGI::CRLF."bar"] ) };
+like($@,qr/contains a newline/,'Set-Cookie header with CRLF embedded blows up');
+
eval { $cgi->header( -foobar => "text/html".$CGI::CRLF."evil: stuff" ) };
like($@,qr/contains a newline/,'unknown header with CRLF embedded blows up');
diff --git a/gnu/usr.bin/perl/cpan/CGI/t/multipart_init.t b/gnu/usr.bin/perl/cpan/CGI/t/multipart_init.t
new file mode 100644
index 00000000000..68ae05cb7db
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/CGI/t/multipart_init.t
@@ -0,0 +1,22 @@
+use Test::More 'no_plan';
+
+use CGI;
+
+my $q = CGI->new;
+
+my $sv = $q->multipart_init;
+like( $sv, qr|Content-Type: multipart/x-mixed-replace;boundary="------- =|, 'multipart_init(), basic');
+
+like( $sv, qr/$CGI::CRLF$/, 'multipart_init(), ends in CRLF' );
+
+$sv = $q->multipart_init( 'this_is_the_boundary' );
+like( $sv, qr/boundary="this_is_the_boundary"/, 'multipart_init("simple_boundary")' );
+$sv = $q->multipart_init( -boundary => 'this_is_another_boundary' );
+like($sv,
+ qr/boundary="this_is_another_boundary"/, "multipart_init( -boundary => 'this_is_another_boundary')");
+
+{
+ my $sv = $q->multipart_init;
+ my $sv2 = $q->multipart_init;
+ isnt($sv,$sv2,"due to random boundaries, multiple calls produce different results");
+}
diff --git a/gnu/usr.bin/perl/cpan/CGI/t/tmpdir.t b/gnu/usr.bin/perl/cpan/CGI/t/tmpdir.t
index 1407356a2f3..cf9d7164c4a 100644
--- a/gnu/usr.bin/perl/cpan/CGI/t/tmpdir.t
+++ b/gnu/usr.bin/perl/cpan/CGI/t/tmpdir.t
@@ -1,7 +1,11 @@
#!perl
-use Test::More tests => 9;
+use Test::More;
use strict;
+if( $> == 0 ) {
+ plan skip_all => "Root can write to 'unwritable files', so many of these tests don't make sense for root.";
+}
+
my ($testdir, $testdir2);
BEGIN {
@@ -20,21 +24,20 @@ is($CGITempFile::TMPDIRECTORY, $testdir, "can pre-set \$CGITempFile::TMPDIRECTOR
CGITempFile->new;
is($CGITempFile::TMPDIRECTORY, $testdir, "\$CGITempFile::TMPDIRECTORY unchanged");
-TODO: {
- local $TODO = "figuring out why these tests fail on some platforms";
- ok(chmod 0500, $testdir, "revoking write access to $testdir");
- ok(! -w $testdir, "write access to $testdir revoked");
+ok(chmod 0500, $testdir, "revoking write access to $testdir");
+ok(! -w $testdir, "write access to $testdir revoked");
CGITempFile->new;
is($CGITempFile::TMPDIRECTORY, $testdir2,
- "unwritable \$CGITempFile::TMPDIRECTORY overridden");
+ "unwritable \$CGITempFile::TMPDIRECTORY overridden");
ok(chmod 0500, $testdir2, "revoking write access to $testdir2");
ok(! -w $testdir, "write access to $testdir revoked");
CGITempFile->new;
isnt($CGITempFile::TMPDIRECTORY, $testdir2,
- "unwritable \$ENV{TMPDIR} overridden");
+ "unwritable \$ENV{TMPDIR} overridden");
isnt($CGITempFile::TMPDIRECTORY, $testdir,
- "unwritable \$ENV{TMPDIR} not overridden with an unwritable \$CGITempFile::TMPDIRECTORY");
-}
+ "unwritable \$ENV{TMPDIR} not overridden with an unwritable \$CGITempFile::TMPDIRECTORY");
+
+done_testing();
END { for ($testdir, $testdir2) { chmod 0700, $_; rmdir; } }
diff --git a/gnu/usr.bin/perl/cpan/CGI/t/unescapeHTML.t b/gnu/usr.bin/perl/cpan/CGI/t/unescapeHTML.t
index 8ae302cf72e..73bb57ff458 100755
--- a/gnu/usr.bin/perl/cpan/CGI/t/unescapeHTML.t
+++ b/gnu/usr.bin/perl/cpan/CGI/t/unescapeHTML.t
@@ -1,4 +1,4 @@
-use Test::More tests => 4;
+use Test::More tests => 6;
use CGI 'unescapeHTML';
is( unescapeHTML( '&amp;'), '&', 'unescapeHTML: &');
@@ -6,3 +6,7 @@ is( unescapeHTML( '&quot;'), '"', 'unescapeHTML: "');
is( unescapeHTML( '&#60;'), '<', 'unescapeHTML: < (using a numbered sequence)');
is( unescapeHTML( 'Bob & Tom went to the store; Where did you go?'),
'Bob & Tom went to the store; Where did you go?', 'unescapeHTML: a case where &...; should not be escaped.');
+is( unescapeHTML( 'This_string_contains_both_escaped_&_unescaped_&lt;entities&gt;'),
+ 'This_string_contains_both_escaped_&_unescaped_<entities>', 'unescapeHTML: partially-escaped string.');
+is( unescapeHTML( 'This escaped string kind of looks like it has an escaped entity &x; it does not'),
+ 'This escaped string kind of looks like it has an escaped entity &x; it does not', 'unescapeHTML: Another case where &...; should not be escaped.');
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/Changes b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/Changes
new file mode 100644
index 00000000000..f39e1e2137e
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/Changes
@@ -0,0 +1,14 @@
+Revision history for CPAN-Meta-Requirements
+
+2.122 2012-05-02 17:29:17 America/New_York
+
+ [Fixed]
+
+ - Fix typo in documentation: the exclusion symbol is "!=" rather than
+ just "!". The implemenation was correct, just the docs were wrong.
+ [rt.cpan.org #76948; ticket and patch from hasch-cpan@cozap.com]
+
+2.121 2012-04-01 15:05:15 Europe/Paris
+
+ - Split out from CPAN::Meta into own distribution
+
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm
new file mode 100644
index 00000000000..ee53a3c4570
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm
@@ -0,0 +1,728 @@
+use strict;
+use warnings;
+package CPAN::Meta::Requirements;
+our $VERSION = '2.122'; # VERSION
+# ABSTRACT: a set of version requirements for a CPAN dist
+
+
+use Carp ();
+use Scalar::Util ();
+use version 0.77 (); # the ->parse method
+
+
+my @valid_options = qw( bad_version_hook );
+
+sub new {
+ my ($class, $options) = @_;
+ $options ||= {};
+ Carp::croak "Argument to $class\->new() must be a hash reference"
+ unless ref $options eq 'HASH';
+ my %self = map {; $_ => $options->{$_}} @valid_options;
+
+ return bless \%self => $class;
+}
+
+sub _version_object {
+ my ($self, $version) = @_;
+
+ my $vobj;
+
+ eval {
+ $vobj = (! defined $version) ? version->parse(0)
+ : (! Scalar::Util::blessed($version)) ? version->parse($version)
+ : $version;
+ };
+
+ if ( my $err = $@ ) {
+ my $hook = $self->{bad_version_hook};
+ $vobj = eval { $hook->($version) }
+ if ref $hook eq 'CODE';
+ unless (Scalar::Util::blessed($vobj) && $vobj->isa("version")) {
+ $err =~ s{ at .* line \d+.*$}{};
+ die "Can't convert '$version': $err";
+ }
+ }
+
+ # ensure no leading '.'
+ if ( $vobj =~ m{\A\.} ) {
+ $vobj = version->parse("0$vobj");
+ }
+
+ # ensure normal v-string form
+ if ( $vobj->is_qv ) {
+ $vobj = version->parse($vobj->normal);
+ }
+
+ return $vobj;
+}
+
+
+BEGIN {
+ for my $type (qw(minimum maximum exclusion exact_version)) {
+ my $method = "with_$type";
+ my $to_add = $type eq 'exact_version' ? $type : "add_$type";
+
+ my $code = sub {
+ my ($self, $name, $version) = @_;
+
+ $version = $self->_version_object( $version );
+
+ $self->__modify_entry_for($name, $method, $version);
+
+ return $self;
+ };
+
+ no strict 'refs';
+ *$to_add = $code;
+ }
+}
+
+
+sub add_requirements {
+ my ($self, $req) = @_;
+
+ for my $module ($req->required_modules) {
+ my $modifiers = $req->__entry_for($module)->as_modifiers;
+ for my $modifier (@$modifiers) {
+ my ($method, @args) = @$modifier;
+ $self->$method($module => @args);
+ };
+ }
+
+ return $self;
+}
+
+
+sub accepts_module {
+ my ($self, $module, $version) = @_;
+
+ $version = $self->_version_object( $version );
+
+ return 1 unless my $range = $self->__entry_for($module);
+ return $range->_accepts($version);
+}
+
+
+sub clear_requirement {
+ my ($self, $module) = @_;
+
+ return $self unless $self->__entry_for($module);
+
+ Carp::confess("can't clear requirements on finalized requirements")
+ if $self->is_finalized;
+
+ delete $self->{requirements}{ $module };
+
+ return $self;
+}
+
+
+sub requirements_for_module {
+ my ($self, $module) = @_;
+ my $entry = $self->__entry_for($module);
+ return unless $entry;
+ return $entry->as_string;
+}
+
+
+sub required_modules { keys %{ $_[0]{requirements} } }
+
+
+sub clone {
+ my ($self) = @_;
+ my $new = (ref $self)->new;
+
+ return $new->add_requirements($self);
+}
+
+sub __entry_for { $_[0]{requirements}{ $_[1] } }
+
+sub __modify_entry_for {
+ my ($self, $name, $method, $version) = @_;
+
+ my $fin = $self->is_finalized;
+ my $old = $self->__entry_for($name);
+
+ Carp::confess("can't add new requirements to finalized requirements")
+ if $fin and not $old;
+
+ my $new = ($old || 'CPAN::Meta::Requirements::_Range::Range')
+ ->$method($version);
+
+ Carp::confess("can't modify finalized requirements")
+ if $fin and $old->as_string ne $new->as_string;
+
+ $self->{requirements}{ $name } = $new;
+}
+
+
+sub is_simple {
+ my ($self) = @_;
+ for my $module ($self->required_modules) {
+ # XXX: This is a complete hack, but also entirely correct.
+ return if $self->__entry_for($module)->as_string =~ /\s/;
+ }
+
+ return 1;
+}
+
+
+sub is_finalized { $_[0]{finalized} }
+
+
+sub finalize { $_[0]{finalized} = 1 }
+
+
+sub as_string_hash {
+ my ($self) = @_;
+
+ my %hash = map {; $_ => $self->{requirements}{$_}->as_string }
+ $self->required_modules;
+
+ return \%hash;
+}
+
+
+my %methods_for_op = (
+ '==' => [ qw(exact_version) ],
+ '!=' => [ qw(add_exclusion) ],
+ '>=' => [ qw(add_minimum) ],
+ '<=' => [ qw(add_maximum) ],
+ '>' => [ qw(add_minimum add_exclusion) ],
+ '<' => [ qw(add_maximum add_exclusion) ],
+);
+
+sub add_string_requirement {
+ my ($self, $module, $req) = @_;
+
+ Carp::confess("No requirement string provided for $module")
+ unless defined $req && length $req;
+
+ my @parts = split qr{\s*,\s*}, $req;
+
+
+ for my $part (@parts) {
+ my ($op, $ver) = $part =~ m{\A\s*(==|>=|>|<=|<|!=)\s*(.*)\z};
+
+ if (! defined $op) {
+ $self->add_minimum($module => $part);
+ } else {
+ Carp::confess("illegal requirement string: $req")
+ unless my $methods = $methods_for_op{ $op };
+
+ $self->$_($module => $ver) for @$methods;
+ }
+ }
+}
+
+
+sub from_string_hash {
+ my ($class, $hash) = @_;
+
+ my $self = $class->new;
+
+ for my $module (keys %$hash) {
+ my $req = $hash->{$module};
+ unless ( defined $req && length $req ) {
+ $req = 0;
+ Carp::carp("Undefined requirement for $module treated as '0'");
+ }
+ $self->add_string_requirement($module, $req);
+ }
+
+ return $self;
+}
+
+##############################################################
+
+{
+ package
+ CPAN::Meta::Requirements::_Range::Exact;
+ sub _new { bless { version => $_[1] } => $_[0] }
+
+ sub _accepts { return $_[0]{version} == $_[1] }
+
+ sub as_string { return "== $_[0]{version}" }
+
+ sub as_modifiers { return [ [ exact_version => $_[0]{version} ] ] }
+
+ sub _clone {
+ (ref $_[0])->_new( version->new( $_[0]{version} ) )
+ }
+
+ sub with_exact_version {
+ my ($self, $version) = @_;
+
+ return $self->_clone if $self->_accepts($version);
+
+ Carp::confess("illegal requirements: unequal exact version specified");
+ }
+
+ sub with_minimum {
+ my ($self, $minimum) = @_;
+ return $self->_clone if $self->{version} >= $minimum;
+ Carp::confess("illegal requirements: minimum above exact specification");
+ }
+
+ sub with_maximum {
+ my ($self, $maximum) = @_;
+ return $self->_clone if $self->{version} <= $maximum;
+ Carp::confess("illegal requirements: maximum below exact specification");
+ }
+
+ sub with_exclusion {
+ my ($self, $exclusion) = @_;
+ return $self->_clone unless $exclusion == $self->{version};
+ Carp::confess("illegal requirements: excluded exact specification");
+ }
+}
+
+##############################################################
+
+{
+ package
+ CPAN::Meta::Requirements::_Range::Range;
+
+ sub _self { ref($_[0]) ? $_[0] : (bless { } => $_[0]) }
+
+ sub _clone {
+ return (bless { } => $_[0]) unless ref $_[0];
+
+ my ($s) = @_;
+ my %guts = (
+ (exists $s->{minimum} ? (minimum => version->new($s->{minimum})) : ()),
+ (exists $s->{maximum} ? (maximum => version->new($s->{maximum})) : ()),
+
+ (exists $s->{exclusions}
+ ? (exclusions => [ map { version->new($_) } @{ $s->{exclusions} } ])
+ : ()),
+ );
+
+ bless \%guts => ref($s);
+ }
+
+ sub as_modifiers {
+ my ($self) = @_;
+ my @mods;
+ push @mods, [ add_minimum => $self->{minimum} ] if exists $self->{minimum};
+ push @mods, [ add_maximum => $self->{maximum} ] if exists $self->{maximum};
+ push @mods, map {; [ add_exclusion => $_ ] } @{$self->{exclusions} || []};
+ return \@mods;
+ }
+
+ sub as_string {
+ my ($self) = @_;
+
+ return 0 if ! keys %$self;
+
+ return "$self->{minimum}" if (keys %$self) == 1 and exists $self->{minimum};
+
+ my @exclusions = @{ $self->{exclusions} || [] };
+
+ my @parts;
+
+ for my $pair (
+ [ qw( >= > minimum ) ],
+ [ qw( <= < maximum ) ],
+ ) {
+ my ($op, $e_op, $k) = @$pair;
+ if (exists $self->{$k}) {
+ my @new_exclusions = grep { $_ != $self->{ $k } } @exclusions;
+ if (@new_exclusions == @exclusions) {
+ push @parts, "$op $self->{ $k }";
+ } else {
+ push @parts, "$e_op $self->{ $k }";
+ @exclusions = @new_exclusions;
+ }
+ }
+ }
+
+ push @parts, map {; "!= $_" } @exclusions;
+
+ return join q{, }, @parts;
+ }
+
+ sub with_exact_version {
+ my ($self, $version) = @_;
+ $self = $self->_clone;
+
+ Carp::confess("illegal requirements: exact specification outside of range")
+ unless $self->_accepts($version);
+
+ return CPAN::Meta::Requirements::_Range::Exact->_new($version);
+ }
+
+ sub _simplify {
+ my ($self) = @_;
+
+ if (defined $self->{minimum} and defined $self->{maximum}) {
+ if ($self->{minimum} == $self->{maximum}) {
+ Carp::confess("illegal requirements: excluded all values")
+ if grep { $_ == $self->{minimum} } @{ $self->{exclusions} || [] };
+
+ return CPAN::Meta::Requirements::_Range::Exact->_new($self->{minimum})
+ }
+
+ Carp::confess("illegal requirements: minimum exceeds maximum")
+ if $self->{minimum} > $self->{maximum};
+ }
+
+ # eliminate irrelevant exclusions
+ if ($self->{exclusions}) {
+ my %seen;
+ @{ $self->{exclusions} } = grep {
+ (! defined $self->{minimum} or $_ >= $self->{minimum})
+ and
+ (! defined $self->{maximum} or $_ <= $self->{maximum})
+ and
+ ! $seen{$_}++
+ } @{ $self->{exclusions} };
+ }
+
+ return $self;
+ }
+
+ sub with_minimum {
+ my ($self, $minimum) = @_;
+ $self = $self->_clone;
+
+ if (defined (my $old_min = $self->{minimum})) {
+ $self->{minimum} = (sort { $b cmp $a } ($minimum, $old_min))[0];
+ } else {
+ $self->{minimum} = $minimum;
+ }
+
+ return $self->_simplify;
+ }
+
+ sub with_maximum {
+ my ($self, $maximum) = @_;
+ $self = $self->_clone;
+
+ if (defined (my $old_max = $self->{maximum})) {
+ $self->{maximum} = (sort { $a cmp $b } ($maximum, $old_max))[0];
+ } else {
+ $self->{maximum} = $maximum;
+ }
+
+ return $self->_simplify;
+ }
+
+ sub with_exclusion {
+ my ($self, $exclusion) = @_;
+ $self = $self->_clone;
+
+ push @{ $self->{exclusions} ||= [] }, $exclusion;
+
+ return $self->_simplify;
+ }
+
+ sub _accepts {
+ my ($self, $version) = @_;
+
+ return if defined $self->{minimum} and $version < $self->{minimum};
+ return if defined $self->{maximum} and $version > $self->{maximum};
+ return if defined $self->{exclusions}
+ and grep { $version == $_ } @{ $self->{exclusions} };
+
+ return 1;
+ }
+}
+
+1;
+# vim: ts=2 sts=2 sw=2 et:
+
+__END__
+=pod
+
+=head1 NAME
+
+CPAN::Meta::Requirements - a set of version requirements for a CPAN dist
+
+=head1 VERSION
+
+version 2.122
+
+=head1 SYNOPSIS
+
+ use CPAN::Meta::Requirements;
+
+ my $build_requires = CPAN::Meta::Requirements->new;
+
+ $build_requires->add_minimum('Library::Foo' => 1.208);
+
+ $build_requires->add_minimum('Library::Foo' => 2.602);
+
+ $build_requires->add_minimum('Module::Bar' => 'v1.2.3');
+
+ $METAyml->{build_requires} = $build_requires->as_string_hash;
+
+=head1 DESCRIPTION
+
+A CPAN::Meta::Requirements object models a set of version constraints like
+those specified in the F<META.yml> or F<META.json> files in CPAN distributions.
+It can be built up by adding more and more constraints, and it will reduce them
+to the simplest representation.
+
+Logically impossible constraints will be identified immediately by thrown
+exceptions.
+
+=head1 METHODS
+
+=head2 new
+
+ my $req = CPAN::Meta::Requirements->new;
+
+This returns a new CPAN::Meta::Requirements object. It takes an optional
+hash reference argument. The following keys are supported:
+
+=over 4
+
+=item *
+
+<bad_version_hook> -- if provided, when a version cannot be parsed into
+
+a version object, this code reference will be called with the invalid version
+string as an argument. It must return a valid version object.
+
+=back
+
+All other keys are ignored.
+
+=head2 add_minimum
+
+ $req->add_minimum( $module => $version );
+
+This adds a new minimum version requirement. If the new requirement is
+redundant to the existing specification, this has no effect.
+
+Minimum requirements are inclusive. C<$version> is required, along with any
+greater version number.
+
+This method returns the requirements object.
+
+=head2 add_maximum
+
+ $req->add_maximum( $module => $version );
+
+This adds a new maximum version requirement. If the new requirement is
+redundant to the existing specification, this has no effect.
+
+Maximum requirements are inclusive. No version strictly greater than the given
+version is allowed.
+
+This method returns the requirements object.
+
+=head2 add_exclusion
+
+ $req->add_exclusion( $module => $version );
+
+This adds a new excluded version. For example, you might use these three
+method calls:
+
+ $req->add_minimum( $module => '1.00' );
+ $req->add_maximum( $module => '1.82' );
+
+ $req->add_exclusion( $module => '1.75' );
+
+Any version between 1.00 and 1.82 inclusive would be acceptable, except for
+1.75.
+
+This method returns the requirements object.
+
+=head2 exact_version
+
+ $req->exact_version( $module => $version );
+
+This sets the version required for the given module to I<exactly> the given
+version. No other version would be considered acceptable.
+
+This method returns the requirements object.
+
+=head2 add_requirements
+
+ $req->add_requirements( $another_req_object );
+
+This method adds all the requirements in the given CPAN::Meta::Requirements object
+to the requirements object on which it was called. If there are any conflicts,
+an exception is thrown.
+
+This method returns the requirements object.
+
+=head2 accepts_module
+
+ my $bool = $req->accepts_modules($module => $version);
+
+Given an module and version, this method returns true if the version
+specification for the module accepts the provided version. In other words,
+given:
+
+ Module => '>= 1.00, < 2.00'
+
+We will accept 1.00 and 1.75 but not 0.50 or 2.00.
+
+For modules that do not appear in the requirements, this method will return
+true.
+
+=head2 clear_requirement
+
+ $req->clear_requirement( $module );
+
+This removes the requirement for a given module from the object.
+
+This method returns the requirements object.
+
+=head2 requirements_for_module
+
+ $req->requirements_for_module( $module );
+
+This returns a string containing the version requirements for a given module in
+the format described in L<CPAN::Meta::Spec> or undef if the given module has no
+requirements. This should only be used for informational purposes such as error
+messages and should not be interpreted or used for comparison (see
+L</accepts_module> instead.)
+
+=head2 required_modules
+
+This method returns a list of all the modules for which requirements have been
+specified.
+
+=head2 clone
+
+ $req->clone;
+
+This method returns a clone of the invocant. The clone and the original object
+can then be changed independent of one another.
+
+=head2 is_simple
+
+This method returns true if and only if all requirements are inclusive minimums
+-- that is, if their string expression is just the version number.
+
+=head2 is_finalized
+
+This method returns true if the requirements have been finalized by having the
+C<finalize> method called on them.
+
+=head2 finalize
+
+This method marks the requirements finalized. Subsequent attempts to change
+the requirements will be fatal, I<if> they would result in a change. If they
+would not alter the requirements, they have no effect.
+
+If a finalized set of requirements is cloned, the cloned requirements are not
+also finalized.
+
+=head2 as_string_hash
+
+This returns a reference to a hash describing the requirements using the
+strings in the F<META.yml> specification.
+
+For example after the following program:
+
+ my $req = CPAN::Meta::Requirements->new;
+
+ $req->add_minimum('CPAN::Meta::Requirements' => 0.102);
+
+ $req->add_minimum('Library::Foo' => 1.208);
+
+ $req->add_maximum('Library::Foo' => 2.602);
+
+ $req->add_minimum('Module::Bar' => 'v1.2.3');
+
+ $req->add_exclusion('Module::Bar' => 'v1.2.8');
+
+ $req->exact_version('Xyzzy' => '6.01');
+
+ my $hashref = $req->as_string_hash;
+
+C<$hashref> would contain:
+
+ {
+ 'CPAN::Meta::Requirements' => '0.102',
+ 'Library::Foo' => '>= 1.208, <= 2.206',
+ 'Module::Bar' => '>= v1.2.3, != v1.2.8',
+ 'Xyzzy' => '== 6.01',
+ }
+
+=head2 add_string_requirement
+
+ $req->add_string_requirement('Library::Foo' => '>= 1.208, <= 2.206');
+
+This method parses the passed in string and adds the appropriate requirement
+for the given module. It understands version ranges as described in the
+L<CPAN::Meta::Spec/Version Ranges>. For example:
+
+=over 4
+
+=item 1.3
+
+=item >= 1.3
+
+=item <= 1.3
+
+=item == 1.3
+
+=item != 1.3
+
+=item > 1.3
+
+=item < 1.3
+
+=item >= 1.3, != 1.5, <= 2.0
+
+A version number without an operator is equivalent to specifying a minimum
+(C<E<gt>=>). Extra whitespace is allowed.
+
+=back
+
+=head2 from_string_hash
+
+ my $req = CPAN::Meta::Requirements->from_string_hash( \%hash );
+
+This is an alternate constructor for a CPAN::Meta::Requirements object. It takes
+a hash of module names and version requirement strings and returns a new
+CPAN::Meta::Requirements object.
+
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests through the issue tracker
+at L<http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta-Requirements>.
+You will be notified automatically of any progress on your issue.
+
+=head2 Source Code
+
+This is open source software. The code repository is available for
+public review and contribution under the terms of the license.
+
+L<https://github.com/dagolden/cpan-meta-requirements>
+
+ git clone https://github.com/dagolden/cpan-meta-requirements.git
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+David Golden <dagolden@cpan.org>
+
+=item *
+
+Ricardo Signes <rjbs@cpan.org>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2010 by David Golden and Ricardo Signes.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
+
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/accepts.t b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/accepts.t
new file mode 100644
index 00000000000..3456394873d
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/accepts.t
@@ -0,0 +1,29 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+
+use Test::More 0.88;
+
+{
+ my $req = CPAN::Meta::Requirements->new->add_minimum(Foo => 1);
+
+ ok( $req->accepts_module(Foo => 1));
+ ok(! $req->accepts_module(Foo => 0));
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new->add_maximum(Foo => 1);
+
+ ok( $req->accepts_module(Foo => 1));
+ ok(! $req->accepts_module(Foo => 2));
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new->add_exclusion(Foo => 1);
+
+ ok( $req->accepts_module(Foo => 0));
+ ok(! $req->accepts_module(Foo => 1));
+}
+
+done_testing;
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/bad_version_hook.t b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/bad_version_hook.t
new file mode 100644
index 00000000000..4b7c8c0d788
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/bad_version_hook.t
@@ -0,0 +1,49 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+use version;
+
+use Test::More 0.88;
+
+sub dies_ok (&@) {
+ my ($code, $qr, $comment) = @_;
+
+ my $lived = eval { $code->(); 1 };
+
+ if ($lived) {
+ fail("$comment: did not die");
+ } else {
+ like($@, $qr, $comment);
+ }
+}
+
+sub _fixit { return version->new(42) }
+
+{
+ my $req = CPAN::Meta::Requirements->new( {bad_version_hook => \&_fixit} );
+
+ $req->add_minimum('Foo::Bar' => 10);
+ $req->add_minimum('Foo::Baz' => 'invalid_version');
+
+ is_deeply(
+ $req->as_string_hash,
+ {
+ 'Foo::Bar' => 10,
+ 'Foo::Baz' => 42,
+ },
+ "hook fixes invalid version",
+ );
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new( {bad_version_hook => sub { 0 }} );
+
+ dies_ok { $req->add_minimum('Foo::Baz' => 'invalid_version') }
+ qr/Invalid version/,
+ "dies if hook doesn't return version object";
+
+}
+
+
+done_testing;
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/basic.t b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/basic.t
new file mode 100644
index 00000000000..882e32466e4
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/basic.t
@@ -0,0 +1,236 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+
+use Test::More 0.88;
+
+sub dies_ok (&@) {
+ my ($code, $qr, $comment) = @_;
+
+ my $lived = eval { $code->(); 1 };
+
+ if ($lived) {
+ fail("$comment: did not die");
+ } else {
+ like($@, $qr, $comment);
+ }
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new;
+
+ $req->add_minimum('Foo::Bar' => 10);
+ $req->add_minimum('Foo::Bar' => 0);
+ $req->add_minimum('Foo::Bar' => 2);
+
+ $req->add_minimum('Foo::Baz' => version->declare('v1.2.3'));
+
+ $req->add_minimum('Foo::Undef' => undef);
+
+ is_deeply(
+ $req->as_string_hash,
+ {
+ 'Foo::Bar' => 10,
+ 'Foo::Baz' => 'v1.2.3',
+ 'Foo::Undef' => 0,
+ },
+ "some basic minimums",
+ );
+
+ ok($req->is_simple, "just minimums? simple");
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new;
+ $req->add_maximum(Foo => 1);
+ is_deeply($req->as_string_hash, { Foo => '<= 1' }, "max only");
+
+ ok(! $req->is_simple, "maximums? not simple");
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new;
+ $req->add_exclusion(Foo => 1);
+ $req->add_exclusion(Foo => 2);
+
+ # Why would you ever do this?? -- rjbs, 2010-02-20
+ is_deeply($req->as_string_hash, { Foo => '!= 1, != 2' }, "excl only");
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new;
+
+ $req->add_minimum(Foo => 1);
+ $req->add_maximum(Foo => 2);
+
+ is_deeply(
+ $req->as_string_hash,
+ {
+ Foo => '>= 1, <= 2',
+ },
+ "min and max",
+ );
+
+ $req->add_maximum(Foo => 3);
+
+ is_deeply(
+ $req->as_string_hash,
+ {
+ Foo => '>= 1, <= 2',
+ },
+ "exclusions already outside range do not matter",
+ );
+
+ $req->add_exclusion(Foo => 1.5);
+
+ is_deeply(
+ $req->as_string_hash,
+ {
+ Foo => '>= 1, <= 2, != 1.5',
+ },
+ "exclusions",
+ );
+
+ $req->add_minimum(Foo => 1.6);
+
+ is_deeply(
+ $req->as_string_hash,
+ {
+ Foo => '>= 1.6, <= 2',
+ },
+ "exclusions go away when made irrelevant",
+ );
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new;
+
+ $req->add_minimum(Foo => 1);
+ $req->add_exclusion(Foo => 1);
+ $req->add_maximum(Foo => 2);
+
+ is_deeply(
+ $req->as_string_hash,
+ {
+ Foo => '> 1, <= 2',
+ },
+ "we can exclude an endpoint",
+ );
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new;
+ $req->add_minimum(Foo => 1);
+
+ $req->add_exclusion(Foo => 1);
+
+ dies_ok { $req->add_maximum(Foo => 1); }
+ qr/excluded all/,
+ "can't exclude all values" ;
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new;
+ $req->add_minimum(Foo => 1);
+ dies_ok {$req->exact_version(Foo => 0.5); }
+ qr/outside of range/,
+ "can't add outside-range exact spec to range";
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new;
+ $req->add_minimum(Foo => 1);
+ dies_ok { $req->add_maximum(Foo => 0.5); }
+ qr/minimum exceeds maximum/,
+ "maximum must exceed (or equal) minimum";
+
+ $req = CPAN::Meta::Requirements->new;
+ $req->add_maximum(Foo => 0.5);
+ dies_ok { $req->add_minimum(Foo => 1); }
+ qr/minimum exceeds maximum/,
+ "maximum must exceed (or equal) minimum";
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new;
+
+ $req->add_minimum(Foo => 1);
+ $req->add_maximum(Foo => 1);
+
+ $req->add_maximum(Foo => 2); # ignored
+ $req->add_minimum(Foo => 0); # ignored
+ $req->add_exclusion(Foo => .5); # ignored
+
+ is_deeply(
+ $req->as_string_hash,
+ {
+ 'Foo' => '== 1',
+ },
+ "if min==max, becomes exact requirement",
+ );
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new;
+ $req->add_minimum(Foo => 1);
+ $req->add_exclusion(Foo => 0);
+ $req->add_maximum(Foo => 3);
+ $req->add_exclusion(Foo => 4);
+
+ $req->add_exclusion(Foo => 2);
+ $req->add_exclusion(Foo => 2);
+
+ is_deeply(
+ $req->as_string_hash,
+ {
+ Foo => '>= 1, <= 3, != 2',
+ },
+ 'test exclusion-skipping',
+ );
+}
+
+sub foo_1 {
+ my $req = CPAN::Meta::Requirements->new;
+ $req->exact_version(Foo => 1);
+ return $req;
+}
+
+{
+ my $req = foo_1;
+
+ $req->exact_version(Foo => 1); # ignored
+
+ is_deeply($req->as_string_hash, { Foo => '== 1' }, "exact requirement");
+
+ dies_ok { $req->exact_version(Foo => 2); }
+ qr/unequal/,
+ "can't exactly specify differing versions" ;
+
+ $req = foo_1;
+ $req->add_minimum(Foo => 0); # ignored
+ $req->add_maximum(Foo => 2); # ignored
+
+ dies_ok { $req->add_maximum(Foo => 0); } qr/maximum below/, "max < fixed";
+
+ $req = foo_1;
+ dies_ok { $req->add_minimum(Foo => 2); } qr/minimum above/, "min > fixed";
+
+ $req = foo_1;
+ $req->add_exclusion(Foo => 8); # ignored
+ dies_ok { $req->add_exclusion(Foo => 1); } qr/excluded exact/, "!= && ==";
+}
+
+{
+ my $req = foo_1;
+
+ is($req->requirements_for_module('Foo'), '== 1', 'requirements_for_module');
+
+ # test empty/undef returns
+ my @list = $req->requirements_for_module('FooBarBamBaz');
+ my $scalar = $req->requirements_for_module('FooBarBamBaz');
+ is ( scalar @list, 0, "requirements_for_module() returns empty for not found (list)" );
+ is ( $scalar, undef, "requirements_for_module() returns undef for not found (scalar)" );
+}
+
+done_testing;
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/finalize.t b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/finalize.t
new file mode 100644
index 00000000000..58048b51d5a
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/finalize.t
@@ -0,0 +1,91 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+
+use Test::More 0.88;
+
+sub dies_ok (&@) {
+ my ($code, $qr, $comment) = @_;
+
+ my $lived = eval { $code->(); 1 };
+
+ if ($lived) {
+ fail("$comment: did not die");
+ } else {
+ like($@, $qr, $comment);
+ }
+}
+
+{
+ my $req = CPAN::Meta::Requirements->new;
+
+ $req->add_minimum('Foo::Bar' => 10);
+ $req->add_minimum('Foo::Bar' => 0);
+ $req->add_minimum('Foo::Bar' => 2);
+
+ $req->add_minimum('Foo::Baz' => version->declare('v1.2.3'));
+
+ $req->add_minimum('Foo::Undef' => undef);
+
+ my $want = {
+ 'Foo::Bar' => 10,
+ 'Foo::Baz' => 'v1.2.3',
+ 'Foo::Undef' => 0,
+ };
+
+ is_deeply(
+ $req->as_string_hash,
+ $want,
+ "some basic minimums",
+ );
+
+ $req->finalize;
+
+ $req->add_minimum('Foo::Bar', 2);
+
+ pass('we can add a Foo::Bar requirement with no effect post finalization');
+
+ dies_ok { $req->add_minimum('Foo::Bar', 12) }
+ qr{finalized req},
+ "can't add a higher Foo::Bar after finalization";
+
+ dies_ok { $req->add_minimum('Foo::New', 0) }
+ qr{finalized req},
+ "can't add a new module prereq after finalization";
+
+ dies_ok { $req->clear_requirement('Foo::Bar') }
+ qr{finalized req},
+ "can't clear an existing prereq after finalization";
+
+ $req->clear_requirement('Bogus::Req');
+
+ pass('we can clear a prereq that was not set to begin with');
+
+ is_deeply(
+ $req->as_string_hash,
+ $want,
+ "none of our attempts to alter the object post-finalization worked",
+ );
+
+ my $cloned = $req->clone;
+
+ $cloned->add_minimum('Foo::Bar', 12);
+
+ is_deeply(
+ $cloned->as_string_hash,
+ {
+ %$want,
+ 'Foo::Bar' => 12,
+ },
+ "we can alter a cloned V:R (finalization does not survive cloning)",
+ );
+
+ is_deeply(
+ $req->as_string_hash,
+ $want,
+ "...and original requirements are untouched",
+ );
+}
+
+done_testing;
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/from-hash.t b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/from-hash.t
new file mode 100644
index 00000000000..b05440dc4fd
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/from-hash.t
@@ -0,0 +1,69 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+
+use Test::More 0.88;
+
+sub dies_ok (&@) {
+ my ($code, $qr, $comment) = @_;
+
+ my $lived = eval { $code->(); 1 };
+
+ if ($lived) {
+ fail("$comment: did not die");
+ } else {
+ like($@, $qr, $comment);
+ }
+}
+
+{
+ my $string_hash = {
+ Left => 10,
+ Shared => '>= 2, <= 9, != 7',
+ Right => 18,
+ };
+
+ my $req = CPAN::Meta::Requirements->from_string_hash($string_hash);
+
+ is_deeply(
+ $req->as_string_hash,
+ $string_hash,
+ "we can load from a string hash",
+ );
+}
+
+{
+ my $string_hash = {
+ Left => 10,
+ Shared => '= 2',
+ Right => 18,
+ };
+
+ dies_ok { CPAN::Meta::Requirements->from_string_hash($string_hash) }
+ qr/Can't convert/,
+ "we die when we can't understand a version spec";
+}
+
+{
+ my $string_hash = {
+ Left => 10,
+ Shared => undef,
+ Right => 18,
+ };
+
+ my $warning;
+ local $SIG{__WARN__} = sub { $warning = join("\n",@_) };
+
+ my $req = CPAN::Meta::Requirements->from_string_hash($string_hash);
+
+ is(
+ $req->as_string_hash->{Shared}, 0,
+ "undef requirement treated as '0'",
+ );
+
+ like ($warning, qr/Undefined requirement.*treated as '0'/, "undef requirement warns");
+
+}
+
+done_testing;
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/merge.t b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/merge.t
new file mode 100644
index 00000000000..a0513560e45
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta-Requirements/t/merge.t
@@ -0,0 +1,136 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+
+use Test::More 0.88;
+
+sub dies_ok (&@) {
+ my ($code, $qr, $comment) = @_;
+
+ my $lived = eval { $code->(); 1 };
+
+ if ($lived) {
+ fail("$comment: did not die");
+ } else {
+ like($@, $qr, $comment);
+ }
+}
+
+{
+ my $req_1 = CPAN::Meta::Requirements->new;
+ $req_1->add_minimum(Left => 10);
+ $req_1->add_minimum(Shared => 2);
+ $req_1->add_exclusion(Shared => 7);
+
+ my $req_2 = CPAN::Meta::Requirements->new;
+ $req_2->add_minimum(Shared => 1);
+ $req_2->add_maximum(Shared => 9);
+ $req_2->add_minimum(Right => 18);
+
+ $req_1->add_requirements($req_2);
+
+ is_deeply(
+ $req_1->as_string_hash,
+ {
+ Left => 10,
+ Shared => '>= 2, <= 9, != 7',
+ Right => 18,
+ },
+ "add requirements to an existing set of requirements",
+ );
+}
+
+{
+ my $req_1 = CPAN::Meta::Requirements->new;
+ $req_1->add_minimum(Left => 10);
+ $req_1->add_minimum(Shared => 2);
+ $req_1->add_exclusion(Shared => 7);
+ $req_1->exact_version(Exact => 8);
+
+ my $req_2 = CPAN::Meta::Requirements->new;
+ $req_2->add_minimum(Shared => 1);
+ $req_2->add_maximum(Shared => 9);
+ $req_2->add_minimum(Right => 18);
+ $req_2->exact_version(Exact => 8);
+
+ my $clone = $req_1->clone->add_requirements($req_2);
+
+ is_deeply(
+ $req_1->as_string_hash,
+ {
+ Left => 10,
+ Shared => '>= 2, != 7',
+ Exact => '== 8',
+ },
+ "clone/add_requirements does not affect lhs",
+ );
+
+ is_deeply(
+ $req_2->as_string_hash,
+ {
+ Shared => '>= 1, <= 9',
+ Right => 18,
+ Exact => '== 8',
+ },
+ "clone/add_requirements does not affect rhs",
+ );
+
+ is_deeply(
+ $clone->as_string_hash,
+ {
+ Left => 10,
+ Shared => '>= 2, <= 9, != 7',
+ Right => 18,
+ Exact => '== 8',
+ },
+ "clone and add_requirements",
+ );
+
+ $clone->clear_requirement('Shared');
+
+ is_deeply(
+ $clone->as_string_hash,
+ {
+ Left => 10,
+ Right => 18,
+ Exact => '== 8',
+ },
+ "cleared the shared requirement",
+ );
+}
+
+{
+ my $req_1 = CPAN::Meta::Requirements->new;
+ $req_1->add_maximum(Foo => 1);
+
+ my $req_2 = $req_1->clone;
+
+ is_deeply(
+ $req_2->as_string_hash,
+ {
+ 'Foo' => '<= 1',
+ },
+ 'clone with only max',
+ );
+}
+
+{
+ my $left = CPAN::Meta::Requirements->new;
+ $left->add_minimum(Foo => 0);
+ $left->add_minimum(Bar => 1);
+
+ my $right = CPAN::Meta::Requirements->new;
+ $right->add_requirements($left);
+
+ is_deeply(
+ $right->as_string_hash,
+ {
+ Foo => 0,
+ Bar => 1,
+ },
+ "we do not lose 0-min reqs on merge",
+ );
+}
+
+done_testing;
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm b/gnu/usr.bin/perl/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm
index ba8a702f74d..a9f4d6d94cb 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm
@@ -1,6 +1,6 @@
package CPAN::Meta::YAML;
{
- $CPAN::Meta::YAML::VERSION = '0.007';
+ $CPAN::Meta::YAML::VERSION = '0.008';
}
use strict;
@@ -614,8 +614,9 @@ BEGIN {
eval {
require Scalar::Util;
};
- if ( $@ or $Scalar::Util::VERSION < 1.18 ) {
- eval <<'END_PERL' if $@;
+ my $v = eval("$Scalar::Util::VERSION") || 0;
+ if ( $@ or $v < 1.18 ) {
+ eval <<'END_PERL';
# Scalar::Util failed to load or too old
sub refaddr {
my $pkg = ref($_[0]) or return undef;
@@ -647,7 +648,7 @@ CPAN::Meta::YAML - Read and write a subset of YAML for CPAN Meta files
=head1 VERSION
-version 0.007
+version 0.008
=head1 SYNOPSIS
@@ -689,7 +690,7 @@ L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=YAML-Tiny>
L<YAML::Tiny>, L<YAML>, L<YAML::XS>
-=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
=head1 SUPPORT
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta-YAML/t/15_multibyte.t b/gnu/usr.bin/perl/cpan/CPAN-Meta-YAML/t/15_multibyte.t
index 8e679f5fda0..5adbc1e8785 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta-YAML/t/15_multibyte.t
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta-YAML/t/15_multibyte.t
@@ -10,7 +10,7 @@ BEGIN {
use File::Spec::Functions ':ALL';
use t::lib::Test;
-use Test::More tests(0, 1, 5);
+use Test::More tests(0, 1, 6);
use CPAN::Meta::YAML;
@@ -41,11 +41,12 @@ SKIP: {
SKIP: {
unless ( CPAN::Meta::YAML::HAVE_UTF8() ) {
- skip("no utf8 support", 1 );
+ skip("no utf8 support", 2 );
}
eval { utf8::is_utf8('') };
if ( $@ ) {
- skip("no is_utf8 to test with until 5.8.1", 1);
+ skip("no is_utf8 to test with until 5.8.1", 2);
}
ok( utf8::is_utf8($yaml->[0]->{author}), "utf8 decoded" );
+ is( length($yaml->[0]->{author}), 39, "utf8 decoded as characters" );
}
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta/Changes b/gnu/usr.bin/perl/cpan/CPAN-Meta/Changes
index 61d6b27d675..e866b7611ff 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta/Changes
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta/Changes
@@ -1,5 +1,34 @@
Revision history for CPAN-Meta
+2.120921 2012-04-01 15:20:24 Europe/Paris
+
+ [REMOVED]
+
+ - CPAN::Meta::Requirements has been split out into its own distribution
+ so it can be used by CPAN.pm without requiring all of CPAN::Meta
+
+2.120920 2012-04-01 11:30:43 Europe/Paris
+
+ [ADDED]
+
+ - CPAN::Meta::Requirements now has a 'requirements_for_module' method
+ to retrieve a version requirements string for a specific module
+ [Leon Timmermans]
+
+ [OTHER]
+
+ - Parse::CPAN::Meta prerequisite bumped to 1.4403
+ - JSON::PP prerequisites bumped to 2.27200
+ - CPAN::Meta::YAML prerequisite bumped to 0.008
+
+2.120900 2012-03-30 13:15:15 Europe/Paris
+
+ [BUGFIX]
+
+ - CPAN::Meta::Requirements now treats undef requirements given to
+ from_string_hash() as '0' and warns about it; add_string_requirements()
+ dies if it does not get a requirements string to parse
+
2.120630 2012-03-03 14:48:35 EST5EDT
[BUGFIX]
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta.pm b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta.pm
index f8185983a42..19980bd4fc8 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta.pm
@@ -2,7 +2,7 @@ use 5.006;
use strict;
use warnings;
package CPAN::Meta;
-our $VERSION = '2.120630'; # VERSION
+our $VERSION = '2.120921'; # VERSION
use Carp qw(carp croak);
@@ -10,7 +10,7 @@ use CPAN::Meta::Feature;
use CPAN::Meta::Prereqs;
use CPAN::Meta::Converter;
use CPAN::Meta::Validator;
-use Parse::CPAN::Meta 1.4400 ();
+use Parse::CPAN::Meta 1.4403 ();
BEGIN { *_dclone = \&CPAN::Meta::Converter::_dclone }
@@ -346,7 +346,7 @@ CPAN::Meta - the distribution metadata for a CPAN dist
=head1 VERSION
-version 2.120630
+version 2.120921
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm
index 0348e55504e..772d5792b12 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm
@@ -2,7 +2,7 @@ use 5.006;
use strict;
use warnings;
package CPAN::Meta::Converter;
-our $VERSION = '2.120630'; # VERSION
+our $VERSION = '2.120921'; # VERSION
use CPAN::Meta::Validator;
@@ -1270,7 +1270,7 @@ CPAN::Meta::Converter - Convert CPAN distribution metadata structures
=head1 VERSION
-version 2.120630
+version 2.120921
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm
index cd7689e9a67..31f4935b178 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm
@@ -2,7 +2,7 @@ use 5.006;
use strict;
use warnings;
package CPAN::Meta::Feature;
-our $VERSION = '2.120630'; # VERSION
+our $VERSION = '2.120921'; # VERSION
use CPAN::Meta::Prereqs;
@@ -42,7 +42,7 @@ CPAN::Meta::Feature - an optional feature provided by a CPAN distribution
=head1 VERSION
-version 2.120630
+version 2.120921
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm
index 001686e1b70..9e32d56ab5a 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm
@@ -3,7 +3,7 @@ use 5.006;
use strict;
use warnings;
package CPAN::Meta::History;
-our $VERSION = '2.120630'; # VERSION
+our $VERSION = '2.120921'; # VERSION
1;
@@ -20,7 +20,7 @@ CPAN::Meta::History - history of CPAN Meta Spec changes
=head1 VERSION
-version 2.120630
+version 2.120921
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm
index 640a299a01d..c1c58f0a6a6 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm
@@ -2,12 +2,12 @@ use 5.006;
use strict;
use warnings;
package CPAN::Meta::Prereqs;
-our $VERSION = '2.120630'; # VERSION
+our $VERSION = '2.120921'; # VERSION
use Carp qw(confess);
use Scalar::Util qw(blessed);
-use CPAN::Meta::Requirements;
+use CPAN::Meta::Requirements 2.121;
sub __legal_phases { qw(configure build test runtime develop) }
@@ -149,7 +149,7 @@ CPAN::Meta::Prereqs - a set of distribution prerequisites by phase and type
=head1 VERSION
-version 2.120630
+version 2.120921
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm
index 07d32246411..9addfd43600 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm
@@ -3,7 +3,7 @@ use 5.006;
use strict;
use warnings;
package CPAN::Meta::Spec;
-our $VERSION = '2.120630'; # VERSION
+our $VERSION = '2.120921'; # VERSION
1;
@@ -20,7 +20,7 @@ CPAN::Meta::Spec - specification for CPAN distribution metadata
=head1 VERSION
-version 2.120630
+version 2.120921
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm
index 1bb53592275..e35f4c04ec7 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm
@@ -2,7 +2,7 @@ use 5.006;
use strict;
use warnings;
package CPAN::Meta::Validator;
-our $VERSION = '2.120630'; # VERSION
+our $VERSION = '2.120921'; # VERSION
#--------------------------------------------------------------------------#
@@ -838,7 +838,7 @@ CPAN::Meta::Validator - validate CPAN distribution metadata structures
=head1 VERSION
-version 2.120630
+version 2.120921
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta/t/prereqs.t b/gnu/usr.bin/perl/cpan/CPAN-Meta/t/prereqs.t
index 1ffacb55dc4..6142d6386a2 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta/t/prereqs.t
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta/t/prereqs.t
@@ -85,6 +85,7 @@ is_deeply($prereq->as_string_hash, $prereq_struct, "round-trip okay");
(! grep { 'Test' eq $_ } @req_mod),
"...but not the build requirements",
);
+
}
{
diff --git a/gnu/usr.bin/perl/cpan/CPAN-Meta/t/strings.t b/gnu/usr.bin/perl/cpan/CPAN-Meta/t/strings.t
index 300492eb13e..bb87c68d1d7 100644
--- a/gnu/usr.bin/perl/cpan/CPAN-Meta/t/strings.t
+++ b/gnu/usr.bin/perl/cpan/CPAN-Meta/t/strings.t
@@ -2,6 +2,18 @@ use strict;
use warnings;
use Test::More 0.88;
+sub dies_ok (&@) {
+ my ($code, $qr, $comment) = @_;
+
+ my $lived = eval { $code->(); 1 };
+
+ if ($lived) {
+ fail("$comment: did not die");
+ } else {
+ like($@, $qr, $comment);
+ }
+}
+
use CPAN::Meta::Requirements;
my $req = CPAN::Meta::Requirements->new;
@@ -43,4 +55,9 @@ ok(!$req->accepts_module('A::Tribe::Called' => '1.2'), 'lower version (>=, <=, !
ok(!$req->accepts_module('A::Tribe::Called' => '2.1'), 'higher version (>=, <=, !)');
ok(!$req->accepts_module('A::Tribe::Called' => '1.6'), 'excluded version (>=, <=, !)');
-done_testing; \ No newline at end of file
+# Test fatal errors
+dies_ok { $req->add_string_requirement('Foo::Bar', undef) }
+ qr/No requirement string provided/,
+ "die without a requirement string";
+
+done_testing;
diff --git a/gnu/usr.bin/perl/cpan/CPAN/Changes b/gnu/usr.bin/perl/cpan/CPAN/Changes
index 7c4e56ed90c..8e6d6e2f8f9 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/Changes
+++ b/gnu/usr.bin/perl/cpan/CPAN/Changes
@@ -1,3 +1,34 @@
+2013-04-12 Andreas Koenig <k@UX31A>
+
+ * release 2.00 (at Lancester #QA2013)
+
+ * Removed the trial status for the release in the Makefile.PL
+
+ * Merge with App::Cpan 0.61 (just a version number change)
+
+2013-02-06 k <k@k83.linux.bogus>
+
+ * release 2.00-TRIAL
+
+ * import App::Cpan 0.60_02 from brian d foy
+
+ * RT#82589 doc fix thanks to Zefram
+
+ * several portability fixes for 5.6.2
+
+ * RT#83042 workaround for current circular dependency in CPANPLUS and
+ CPANPLUS::Dist::Build
+
+2012-10-16 Andreas Koenig <andreas.koenig.7os6VVqR@franz.ak.mind.de>
+
+ * release 1.99_51
+
+ * RT #79969: fix incompatibilities with VMS (Craig Berry)
+
+ * bugfix: distroprefs of type pl/args were dropped for 'perl Build.PL'
+
+ * RT #73742: watch build_dirs and react calmly when one has gone lost
+
2011-08-07 Andreas J. Koenig <andk@cpan.org>
* release 1.9800
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/App/Cpan.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/App/Cpan.pm
index 0fce3d3ec15..6dc24922a78 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/App/Cpan.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/App/Cpan.pm
@@ -1,9 +1,11 @@
package App::Cpan;
+
+use 5.008;
use strict;
use warnings;
use vars qw($VERSION);
-$VERSION = '1.5701';
+$VERSION = '1.61';
=head1 NAME
@@ -15,10 +17,10 @@ App::Cpan - easily interact with CPAN from the command line
cpan module_name [ module_name ... ]
# with switches, installs modules with extra behavior
- cpan [-cfFimt] module_name [ module_name ... ]
+ cpan [-cfFimtTw] module_name [ module_name ... ]
# use local::lib
- cpan -l module_name [ module_name ... ]
+ cpan -I module_name [ module_name ... ]
# with just the dot, install from the distribution in the
# current directory
@@ -28,7 +30,7 @@ App::Cpan - easily interact with CPAN from the command line
cpan
# without arguments, but some switches
- cpan [-ahruvACDLO]
+ cpan [-ahpruvACDLOP]
=head1 DESCRIPTION
@@ -100,7 +102,13 @@ of the other options and arguments.
=item -i
-Install the specified modules.
+Install the specified modules. With no other switches, this switch
+is implied.
+
+=item -I
+
+Load C<local::lib> (think like C<-I> for loading lib paths). Too bad
+C<-l> was already taken.
=item -j Config.pm
@@ -116,7 +124,7 @@ for a new, custom configuration.
=item -l
-Use C<local::lib>.
+List all installed modules wth their versions
=item -L author [ author ... ]
@@ -126,18 +134,34 @@ List the modules by the specified authors.
Make the specified modules.
+=item -n
+
+Do a dry run, but don't actually install anything. (unimplemented)
+
=item -O
Show the out-of-date modules.
-=item -t
+=item -p
-Run a `make test` on the specified modules.
+Ping the configured mirrors
+
+=item -P
+
+Find the best mirrors you could be using (but doesn't configure them just yet)
=item -r
Recompiles dynamically loaded modules with CPAN::Shell->recompile.
+=item -t
+
+Run a `make test` on the specified modules.
+
+=item -T
+
+Do not test modules. Simply install them.
+
=item -u
Upgrade all installed modules. Blindly doing this can really break things,
@@ -147,6 +171,17 @@ so keep a backup.
Print the script version and CPAN.pm version then exit.
+=item -V
+
+Print detailed information about the cpan client.
+
+=item -w
+
+UNIMPLEMENTED
+
+Turn on cpan warnings. This checks various things, like directory permissions,
+and tells you about problems you might have.
+
=back
=head2 Examples
@@ -181,11 +216,11 @@ Print the script version and CPAN.pm version then exit.
use autouse Carp => qw(carp croak cluck);
use CPAN ();
+use Config;
use autouse Cwd => qw(cwd);
use autouse 'Data::Dumper' => qw(Dumper);
use File::Spec::Functions;
use File::Basename;
-
use Getopt::Std;
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
@@ -209,7 +244,7 @@ BEGIN { # most of this should be in methods
use vars qw( @META_OPTIONS $Default %CPAN_METHODS @CPAN_OPTIONS @option_order
%Method_table %Method_table_index );
-@META_OPTIONS = qw( h v g G C A D O l L a r j: J );
+@META_OPTIONS = qw( h v V I g G C A D O l L a r p P j: J w T);
$Default = 'default';
@@ -240,11 +275,15 @@ sub GOOD_EXIT () { 0 }
# options that do their thing first, then exit
h => [ \&_print_help, NO_ARGS, GOOD_EXIT, 'Printing help' ],
v => [ \&_print_version, NO_ARGS, GOOD_EXIT, 'Printing version' ],
+ V => [ \&_print_details, NO_ARGS, GOOD_EXIT, 'Printing detailed version' ],
# options that affect other options
j => [ \&_load_config, ARGS, GOOD_EXIT, 'Use specified config file' ],
J => [ \&_dump_config, NO_ARGS, GOOD_EXIT, 'Dump configuration to stdout' ],
F => [ \&_lock_lobotomy, NO_ARGS, GOOD_EXIT, 'Turn off CPAN.pm lock files' ],
+ I => [ \&_load_local_lib, NO_ARGS, GOOD_EXIT, 'Loading local::lib' ],
+ w => [ \&_turn_on_warnings, NO_ARGS, GOOD_EXIT, 'Turning on warnings' ],
+ T => [ \&_turn_off_testing, NO_ARGS, GOOD_EXIT, 'Turning off testing' ],
# options that do their one thing
g => [ \&_download, NO_ARGS, GOOD_EXIT, 'Download the latest distro' ],
@@ -254,11 +293,13 @@ sub GOOD_EXIT () { 0 }
A => [ \&_show_Author, ARGS, GOOD_EXIT, 'Showing Author' ],
D => [ \&_show_Details, ARGS, GOOD_EXIT, 'Showing Details' ],
O => [ \&_show_out_of_date, NO_ARGS, GOOD_EXIT, 'Showing Out of date' ],
-
l => [ \&_list_all_mods, NO_ARGS, GOOD_EXIT, 'Listing all modules' ],
L => [ \&_show_author_mods, ARGS, GOOD_EXIT, 'Showing author mods' ],
a => [ \&_create_autobundle, NO_ARGS, GOOD_EXIT, 'Creating autobundle' ],
+ p => [ \&_ping_mirrors, NO_ARGS, GOOD_EXIT, 'Pinging mirrors' ],
+ P => [ \&_find_good_mirrors, NO_ARGS, GOOD_EXIT, 'Finding good mirrors' ],
+
r => [ \&_recompile, NO_ARGS, GOOD_EXIT, 'Recompiling' ],
u => [ \&_upgrade, NO_ARGS, GOOD_EXIT, 'Running `make test`' ],
@@ -267,7 +308,6 @@ sub GOOD_EXIT () { 0 }
i => [ \&_default, ARGS, GOOD_EXIT, 'Running `make install`' ],
'm' => [ \&_default, ARGS, GOOD_EXIT, 'Running `make`' ],
t => [ \&_default, ARGS, GOOD_EXIT, 'Running `make test`' ],
-
);
%Method_table_index = (
@@ -278,6 +318,7 @@ sub GOOD_EXIT () { 0 }
);
}
+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# finally, do some argument processing
@@ -291,6 +332,8 @@ sub _process_options
{
my %options;
+ push @ARGV, grep $_, split /\s+/, $ENV{CPAN_OPTS} || '';
+
# if no arguments, just drop into the shell
if( 0 == @ARGV ) { CPAN::shell(); exit 0 }
else
@@ -313,16 +356,30 @@ sub _process_setup_options
else
{
# this is what CPAN.pm would do otherwise
+ local $CPAN::Be_Silent = 1;
CPAN::HandleConfig->load(
- # be_silent => 1, # candidate to be ripped out forever
+ # be_silent => 1, deprecated
write_file => 0,
);
}
- if( $options->{F} )
+ foreach my $o ( qw(F I w T) )
{
- $Method_table{F}[ $Method_table_index{code} ]->( $options->{F} );
- delete $options->{F};
+ next unless exists $options->{$o};
+ $Method_table{$o}[ $Method_table_index{code} ]->( $options->{$o} );
+ delete $options->{$o};
+ }
+
+ if( $options->{o} )
+ {
+ my @pairs = map { [ split /=/, $_, 2 ] } split /,/, $options->{o};
+ foreach my $pair ( @pairs )
+ {
+ my( $setting, $value ) = @$pair;
+ $CPAN::Config->{$setting} = $value;
+ # $logger->debug( "Setting [$setting] to [$value]" );
+ }
+ delete $options->{o};
}
my $option_count = grep { $options->{$_} } @option_order;
@@ -392,10 +449,11 @@ sub run
}
{
-package Local::Null::Logger;
+package
+ Local::Null::Logger; # hide from PAUSE
sub new { bless \ my $x, $_[0] }
-sub AUTOLOAD { shift; print "NullLogger: ", @_, $/ if $ENV{CPAN_NULL_LOGGER} }
+sub AUTOLOAD { 1 }
sub DESTROY { 1 }
}
@@ -477,12 +535,13 @@ sub _default
=for comment
-CPAN.pm sends all the good stuff either to STDOUT. I have to intercept
-that output so I can find out what happened.
+CPAN.pm sends all the good stuff either to STDOUT, or to a temp
+file if $CPAN::Be_Silent is set. I have to intercept that output
+so I can find out what happened.
=cut
-{
+BEGIN {
my $scalar = '';
sub _hook_into_CPANpm_report
@@ -491,7 +550,7 @@ sub _hook_into_CPANpm_report
*CPAN::Shell::myprint = sub {
my($self,$what) = @_;
- $scalar .= $what if defined $what;
+ $scalar .= $what;
$self->print_ornamented($what,
$CPAN::Config->{colorize_print}||'bold blue on_white',
);
@@ -499,7 +558,7 @@ sub _hook_into_CPANpm_report
*CPAN::Shell::mywarn = sub {
my($self,$what) = @_;
- $scalar .= $what if defined $what;
+ $scalar .= $what;
$self->print_ornamented($what,
$CPAN::Config->{colorize_warn}||'bold red on_white'
);
@@ -511,7 +570,6 @@ sub _clear_cpanpm_output { $scalar = '' }
sub _get_cpanpm_output { $scalar }
-BEGIN {
my @skip_lines = (
qr/^\QWarning \(usually harmless\)/,
qr/\bwill not store persistent state\b/,
@@ -537,7 +595,7 @@ sub _get_cpanpm_last_line
redo REGEXES; # we have to go through all of them for every line!
}
}
- }
+ }
$logger->debug( "Last interesting line of CPAN.pm output is:\n\t$lines[-1]" );
@@ -575,7 +633,17 @@ sub _cpanpm_output_is_vague
return TRUE;
}
-}
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+sub _turn_on_warnings {
+ carp "Warnings are implemented yet";
+ return HEY_IT_WORKED;
+ }
+
+sub _turn_off_testing {
+ $logger->debug( 'Trusting test report history' );
+ $CPAN::Config->{trust_test_report_history} = 1;
+ return HEY_IT_WORKED;
+ }
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
sub _print_help
@@ -584,7 +652,7 @@ sub _print_help
exec "perldoc $0";
}
-sub _print_version
+sub _print_version # -v
{
$logger->info(
"$0 script version $VERSION, CPAN.pm version " . CPAN->VERSION );
@@ -592,6 +660,248 @@ sub _print_version
return HEY_IT_WORKED;
}
+sub _print_details # -V
+ {
+ _print_version();
+
+ _check_install_dirs();
+
+ $logger->info( '-' x 50 . "\nChecking configured mirrors..." );
+ foreach my $mirror ( @{ $CPAN::Config->{urllist} } ) {
+ _print_ping_report( $mirror );
+ }
+
+ $logger->info( '-' x 50 . "\nChecking for faster mirrors..." );
+
+ {
+ require CPAN::Mirrors;
+
+ if ( $CPAN::Config->{connect_to_internet_ok} ) {
+ $CPAN::Frontend->myprint(qq{Trying to fetch a mirror list from the Internet\n});
+ eval { CPAN::FTP->localize('MIRRORED.BY',File::Spec->catfile($CPAN::Config->{keep_source_where},'MIRRORED.BY'),3,1) }
+ or $CPAN::Frontend->mywarn(<<'HERE');
+We failed to get a copy of the mirror list from the Internet.
+You will need to provide CPAN mirror URLs yourself.
+HERE
+ $CPAN::Frontend->myprint("\n");
+ }
+
+ my $mirrors = CPAN::Mirrors->new( );
+ $mirrors->parse_mirrored_by( File::Spec->catfile($CPAN::Config->{keep_source_where},'MIRRORED.BY') );
+ my @continents = $mirrors->find_best_continents;
+
+ my @mirrors = $mirrors->get_mirrors_by_continents( $continents[0] );
+ my @timings = $mirrors->get_mirrors_timings( \@mirrors );
+
+ foreach my $timing ( @timings ) {
+ $logger->info( sprintf "%s (%0.2f ms)",
+ $timing->hostname, $timing->rtt );
+ }
+ }
+
+ return HEY_IT_WORKED;
+ }
+
+sub _check_install_dirs
+ {
+ my $makepl_arg = $CPAN::Config->{makepl_arg};
+ my $mbuildpl_arg = $CPAN::Config->{mbuildpl_arg};
+
+ my @custom_dirs;
+ # PERL_MM_OPT
+ push @custom_dirs,
+ $makepl_arg =~ m/INSTALL_BASE\s*=\s*(\S+)/g,
+ $mbuildpl_arg =~ m/--install_base\s*=\s*(\S+)/g;
+
+ if( @custom_dirs ) {
+ foreach my $dir ( @custom_dirs ) {
+ _print_inc_dir_report( $dir );
+ }
+ }
+
+ # XXX: also need to check makepl_args, etc
+
+ my @checks = (
+ [ 'core', [ grep $_, @Config{qw(installprivlib installarchlib)} ] ],
+ [ 'vendor', [ grep $_, @Config{qw(installvendorlib installvendorarch)} ] ],
+ [ 'site', [ grep $_, @Config{qw(installsitelib installsitearch)} ] ],
+ [ 'PERL5LIB', _split_paths( $ENV{PERL5LIB} ) ],
+ [ 'PERLLIB', _split_paths( $ENV{PERLLIB} ) ],
+ );
+
+ $logger->info( '-' x 50 . "\nChecking install dirs..." );
+ foreach my $tuple ( @checks ) {
+ my( $label ) = $tuple->[0];
+
+ $logger->info( "Checking $label" );
+ $logger->info( "\tno directories for $label" ) unless @{ $tuple->[1] };
+ foreach my $dir ( @{ $tuple->[1] } ) {
+ _print_inc_dir_report( $dir );
+ }
+ }
+
+ }
+
+sub _split_paths
+ {
+ [ map { _expand_filename( $_ ) } split /$Config{path_sep}/, $_[0] || '' ];
+ }
+
+
+=pod
+
+Stolen from File::Path::Expand
+
+=cut
+
+sub _expand_filename
+ {
+ my( $path ) = @_;
+ no warnings 'uninitialized';
+ $logger->debug( "Expanding path $path\n" );
+ $path =~ s{\A~([^/]+)?}{
+ _home_of( $1 || $> ) || "~$1"
+ }e;
+ return $path;
+ }
+
+sub _home_of
+ {
+ require User::pwent;
+ my( $user ) = @_;
+ my $ent = User::pwent::getpw($user) or return;
+ return $ent->dir;
+ }
+
+sub _get_default_inc
+ {
+ require Config;
+
+ [ @Config::Config{ _vars() }, '.' ];
+ }
+
+sub _vars {
+ qw(
+ installarchlib
+ installprivlib
+ installsitearch
+ installsitelib
+ );
+ }
+
+sub _ping_mirrors {
+ my $urls = $CPAN::Config->{urllist};
+ require URI;
+
+ foreach my $url ( @$urls ) {
+ my( $obj ) = URI->new( $url );
+ next unless _is_pingable_scheme( $obj );
+ my $host = $obj->host;
+ _print_ping_report( $obj );
+ }
+
+ }
+
+sub _is_pingable_scheme {
+ my( $uri ) = @_;
+
+ $uri->scheme eq 'file'
+ }
+
+sub _find_good_mirrors {
+ require CPAN::Mirrors;
+
+ my $mirrors = CPAN::Mirrors->new;
+ my $file = do {
+ my $file = 'MIRRORED.BY';
+ my $local_path = File::Spec->catfile(
+ $CPAN::Config->{keep_source_where}, $file );
+
+ if( -e $local_path ) { $local_path }
+ else {
+ require CPAN::FTP;
+ CPAN::FTP->localize( $file, $local_path, 3, 1 );
+ $local_path;
+ }
+ };
+
+ $mirrors->parse_mirrored_by( $file );
+
+ my @mirrors = $mirrors->best_mirrors(
+ how_many => 3,
+ verbose => 1,
+ );
+
+ foreach my $mirror ( @mirrors ) {
+ next unless eval { $mirror->can( 'http' ) };
+ _print_ping_report( $mirror->http );
+ }
+
+ }
+
+sub _print_inc_dir_report
+ {
+ my( $dir ) = shift;
+
+ my $writeable = -w $dir ? '+' : '!!! (not writeable)';
+ $logger->info( "\t$writeable $dir" );
+ return -w $dir;
+ }
+
+sub _print_ping_report
+ {
+ my( $mirror ) = @_;
+
+ my $rtt = eval { _get_ping_report( $mirror ) };
+
+ $logger->info(
+ sprintf "\t%s (%4d ms) %s", $rtt ? '+' : '!', $rtt * 1000, $mirror
+ );
+ }
+
+sub _get_ping_report
+ {
+ require URI;
+ my( $mirror ) = @_;
+ my( $url ) = ref $mirror ? $mirror : URI->new( $mirror ); #XXX
+ require Net::Ping;
+
+ my $ping = Net::Ping->new( 'tcp', 1 );
+
+ if( $url->scheme eq 'file' ) {
+ return -e $url->file;
+ }
+
+ my( $port ) = $url->port;
+
+ return unless $port;
+
+ if ( $ping->can('port_number') ) {
+ $ping->port_number($port);
+ }
+ else {
+ $ping->{'port_num'} = $port;
+ }
+
+ $ping->hires(1) if $ping->can( 'hires' );
+ my( $alive, $rtt ) = eval{ $ping->ping( $url->host ) };
+ $alive ? $rtt : undef;
+ }
+
+sub _load_local_lib # -I
+ {
+ $logger->debug( "Loading local::lib" );
+
+ my $rc = eval { require local::lib; 1; };
+ unless( $rc ) {
+ $logger->die( "Could not load local::lib" );
+ }
+
+ local::lib->import;
+
+ return HEY_IT_WORKED;
+ }
+
sub _create_autobundle
{
$logger->info(
@@ -642,7 +952,7 @@ sub _load_config # -j
return HEY_IT_WORKED;
}
-sub _dump_config
+sub _dump_config # -J
{
my $args = shift;
require Data::Dumper;
@@ -659,7 +969,7 @@ sub _dump_config
return HEY_IT_WORKED;
}
-sub _lock_lobotomy
+sub _lock_lobotomy # -F
{
no warnings 'redefine';
@@ -820,7 +1130,7 @@ sub _show_Author
next unless $module->userid;
printf "%-25s %-8s %-25s %s\n",
- $arg, $module->userid, $author->email, $author->fullname;
+ $arg, $module->userid, $author->email, $author->name;
}
return HEY_IT_WORKED;
@@ -891,7 +1201,7 @@ sub _show_author_mods
return HEY_IT_WORKED;
}
-sub _list_all_mods
+sub _list_all_mods # -l
{
require File::Find;
@@ -966,8 +1276,10 @@ sub _eval_version
{
my( $line, $sigil, $var ) = @_;
+ # split package line to hide from PAUSE
my $eval = qq{
- package ExtUtils::MakeMaker::_version;
+ package
+ ExtUtils::MakeMaker::_version;
local $sigil$var;
\$$var=undef; do {
@@ -1029,6 +1341,16 @@ correctly if Log4perl is not installed.
* When I capture CPAN.pm output, I need to check for errors and
report them to the user.
+* Support local::lib
+
+* Warnings switch
+
+* Check then exit
+
+* ping mirrors support
+
+* no test option
+
=head1 BUGS
* none noted
@@ -1046,21 +1368,23 @@ This code is in Github:
=head1 CREDITS
-Japheth Cleaver added the bits to allow a forced install (-f).
+Japheth Cleaver added the bits to allow a forced install (C<-f>).
Jim Brandt suggest and provided the initial implementation for the
up-to-date and Changes features.
-Adam Kennedy pointed out that exit() causes problems on Windows
+Adam Kennedy pointed out that C<exit()> causes problems on Windows
where this script ends up with a .bat extension
+David Golden helps integrate this into the C<CPAN.pm> repos.
+
=head1 AUTHOR
brian d foy, C<< <bdfoy@cpan.org> >>
=head1 COPYRIGHT
-Copyright (c) 2001-2009, brian d foy, All Rights Reserved.
+Copyright (c) 2001-2013, brian d foy, All Rights Reserved.
You may redistribute this under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN.pm
index 4e1f2a30186..1c68b02e6e1 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN.pm
@@ -2,7 +2,7 @@
# vim: ts=4 sts=4 sw=4:
use strict;
package CPAN;
-$CPAN::VERSION = '1.9800';
+$CPAN::VERSION = '2.00';
$CPAN::VERSION =~ s/_//;
# we need to run chdir all over and we would get at wrong libraries
@@ -1316,9 +1316,28 @@ sub is_installed {
sub _list_sorted_descending_is_tested {
my($self) = @_;
- sort
+ my $foul = 0;
+ my @sorted = sort
{ ($self->{is_tested}{$b}||0) <=> ($self->{is_tested}{$a}||0) }
- keys %{$self->{is_tested}}
+ grep
+ { if ($foul){ 0 } elsif (-e) { 1 } else { $foul = $_; 0 } }
+ keys %{$self->{is_tested}};
+ if ($foul) {
+ $CPAN::Frontend->mywarn("Lost build_dir detected ($foul), giving up all cached test results of currently running session.\n");
+ for my $dbd (keys %{$self->{is_tested}}) { # distro-build-dir
+ SEARCH: for my $d ($CPAN::META->all_objects("CPAN::Distribution")) {
+ if ($d->{build_dir} && $d->{build_dir} eq $dbd) {
+ $CPAN::Frontend->mywarn(sprintf "Flushing cache for %s\n", $d->pretty_id);
+ $d->fforce("");
+ last SEARCH;
+ }
+ }
+ delete $self->{is_tested}{$dbd};
+ }
+ return ();
+ } else {
+ return @sorted;
+ }
}
#-> sub CPAN::set_perl5lib
@@ -1702,7 +1721,9 @@ C<$CPAN::Config-E<gt>{cpan_home}/Bundle> directory. The file contains
a list of all modules that are both available from CPAN and currently
installed within @INC. Duplicates of each distribution are suppressed.
The name of the bundle file is based on the current date and a
-counter.
+counter, e.g. F<Bundle/Snapshot_2012_05_21_00.pm>. This is installed
+again by running C<cpan Bundle::Snapshot_2012_05_21_00>, or installing
+C<Bundle::Snapshot_2012_05_21_00> from the CPAN shell.
Return value: path to the written file.
@@ -1716,6 +1737,21 @@ activities. The data for this is collected in the YAML file
C<FTPstats.yml> in your C<cpan_home> directory. If no YAML module is
configured or YAML not installed, no stats are provided.
+=over
+
+=item install_tested
+
+Install all distributions that have been tested successfully but have
+not yet been installed. See also C<is_tested>.
+
+=item is_tested
+
+List all buid directories of distributions that have been tested
+successfully but have not yet been installed. See also
+C<install_tested>.
+
+=back
+
=head2 mkmyconfig
mkmyconfig() writes your own CPAN::MyConfig file into your C<~/.cpan/>
@@ -2463,7 +2499,7 @@ CPAN mantra. See below under I<Processing Instructions>.
=item match [hash]
-A hashref with one or more of the keys C<distribution>, C<modules>,
+A hashref with one or more of the keys C<distribution>, C<module>,
C<perl>, C<perlconfig>, and C<env> that specify whether a document is
targeted at a specific CPAN distribution or installation.
Keys prefixed with C<not_> negates the corresponding match.
@@ -2882,11 +2918,6 @@ its dependencies, use CPAN::Shell->install.
Note that install() gives no meaningful return value. See uptodate().
-=item CPAN::Distribution::install_tested()
-
-Install all distributions that have tested successfully but
-not yet installed. See also C<is_tested>.
-
=item CPAN::Distribution::isa_perl()
Returns 1 if this distribution file seems to be a perl distribution.
@@ -3432,7 +3463,7 @@ annoying that so many distributions need some interactive configuring. So
what you can try to accomplish in your private bundle file is to have the
packages that need to be configured early in the file and the gentle
ones later, so you can go out for coffee after a few minutes and leave CPAN.pm
-to churn away untended.
+to churn away unattended.
=head1 WORKING WITH CPAN.pm BEHIND FIREWALLS
@@ -3770,7 +3801,7 @@ yourself.
=head2 OLD PERL VERSIONS
-CPAN.pm is regularly tested to run under 5.004, 5.005, and assorted
+CPAN.pm is regularly tested to run under 5.005 and assorted
newer versions. It is getting more and more difficult to get the
minimal prerequisites working on older perls. It is close to
impossible to get the whole Bundle::CPAN working there. If you're in
@@ -3834,4 +3865,8 @@ your operating system) then typing C<cpan> in a console window will
work for you as well. Above that the utility provides several
commandline shortcuts.
+melezhik (Alexey) sent me a link where he published a chef recipe to
+work with CPAN.pm: http://community.opscode.com/cookbooks/cpan.
+
+
=cut
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Bundle.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Bundle.pm
index e7360f80485..92f7990ed3d 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Bundle.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Bundle.pm
@@ -228,7 +228,8 @@ Going to $meth that.
$self->debug("type[$type] s[$s]") if $CPAN::DEBUG;
my $obj = $CPAN::META->instance($type,$s);
$obj->{reqtype} = $self->{reqtype};
- $obj->$meth();
+ # $obj->$meth();
+ CPAN::Queue->queue_item(qmod => $obj->id, reqtype => $self->{reqtype});
}
}
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Debug.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Debug.pm
index 23c4a3685b6..48e394bd419 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Debug.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Debug.pm
@@ -71,6 +71,10 @@ sub debug {
__END__
+=head1 NAME
+
+CPAN::Debug - internal debugging for CPAN.pm
+
=head1 LICENSE
This program is free software; you can redistribute it and/or
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Distribution.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Distribution.pm
index 32648ecc1ff..690d6a063db 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Distribution.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Distribution.pm
@@ -8,7 +8,7 @@ use CPAN::InfoObj;
use File::Path ();
@CPAN::Distribution::ISA = qw(CPAN::InfoObj);
use vars qw($VERSION);
-$VERSION = "1.9602";
+$VERSION = "2.00";
# Accessors
sub cpan_comment {
@@ -321,6 +321,10 @@ sub get {
);
return 1;
}
+ if (exists $self->{build_dir} && ! -d $self->{build_dir}){
+ # we have lost it.
+ $self->fforce(""); # no method to reset all phases but not set force (dodge)
+ }
# although we talk about 'force' we shall not test on
# force directly. New model of force tries to refrain from
@@ -516,8 +520,8 @@ See also http://rt.cpan.org/Ticket/Display.html?id=38932\n");
chmod 0777 &~ umask, $packagedir; # may fail
my $f;
for $f (@dirents) { # is already without "." and ".."
- my $from = File::Spec->catdir($from_dir,$f);
- my $to = File::Spec->catdir($packagedir,$f);
+ my $from = File::Spec->catfile($from_dir,$f);
+ my $to = File::Spec->catfile($packagedir,$f);
unless (File::Copy::move($from,$to)) {
my $err = $!;
$from = File::Spec->rel2abs($from);
@@ -604,7 +608,7 @@ sub pick_meta_file {
push @choices, 'META.yml' if $has_cm || $has_pcm;
for my $file ( grep { /$filter/ } @choices ) {
- my $path = File::Spec->catdir( $build_dir, $file );
+ my $path = File::Spec->catfile( $build_dir, $file );
return $path if -f $path
}
@@ -773,6 +777,7 @@ sub choose_MM_or_MB {
return $self;
}
+# see also reanimate_build_dir
#-> CPAN::Distribution::store_persistent_state
sub store_persistent_state {
my($self) = @_;
@@ -783,8 +788,8 @@ sub store_persistent_state {
"will not store persistent state\n");
return;
}
- unless (File::Spec->canonpath(File::Basename::dirname($dir))
- eq File::Spec->canonpath($CPAN::Config->{build_dir})) {
+ unless ( Cwd::realpath(File::Spec->catdir($dir, File::Spec->updir()) )
+ eq Cwd::realpath($CPAN::Config->{build_dir} ) ) {
$CPAN::Frontend->mywarnonce("Directory '$dir' not below $CPAN::Config->{build_dir}, ".
"will not store persistent state\n");
return;
@@ -1173,6 +1178,7 @@ sub untar_me {
if ($result) {
$self->{unwrapped} = CPAN::Distrostatus->new("YES");
} else {
+ # unfortunately we have no $@ here, Tarzip is using mydie which dies with "\n"
$self->{unwrapped} = CPAN::Distrostatus->new("NO -- untar failed");
}
}
@@ -1859,12 +1865,8 @@ is part of the perl-%s distribution. To install that, you need to run
return;
}
- my %env;
- while (my($k,$v) = each %ENV) {
- next unless defined $v;
- $env{$k} = $v;
- }
- local %ENV = %env;
+ local $ENV{PERL_AUTOINSTALL} = $ENV{PERL_AUTOINSTALL};
+ local $ENV{PERL_EXTUTILS_AUTOINSTALL} = $ENV{PERL_EXTUTILS_AUTOINSTALL};
if ($CPAN::Config->{prerequisites_policy} eq "follow") {
$ENV{PERL_AUTOINSTALL} ||= "--defaultdeps";
$ENV{PERL_EXTUTILS_AUTOINSTALL} ||= "--defaultdeps";
@@ -1874,6 +1876,8 @@ is part of the perl-%s distribution. To install that, you need to run
if ($self->prefs->{pl}) {
$pl_commandline = $self->prefs->{pl}{commandline};
}
+ local $ENV{PERL} = $ENV{PERL};
+ local $ENV{PERL5_CPAN_IS_EXECUTING} = $ENV{PERL5_CPAN_IS_EXECUTING};
if ($pl_commandline) {
$system = $pl_commandline;
$ENV{PERL} = $^X;
@@ -1881,7 +1885,11 @@ is part of the perl-%s distribution. To install that, you need to run
$system = $self->{'configure'};
} elsif ($self->{modulebuild}) {
my($perl) = $self->perl or die "Couldn\'t find executable perl\n";
- $system = "$perl Build.PL $CPAN::Config->{mbuildpl_arg}";
+ my $mbuildpl_arg = $self->_make_phase_arg("pl");
+ $system = sprintf("%s Build.PL%s",
+ $perl,
+ $mbuildpl_arg ? " $mbuildpl_arg" : "",
+ );
} else {
my($perl) = $self->perl or die "Couldn\'t find executable perl\n";
my $switch = "";
@@ -1902,11 +1910,7 @@ is part of the perl-%s distribution. To install that, you need to run
if ($self->prefs->{pl}) {
$pl_env = $self->prefs->{pl}{env};
}
- if ($pl_env) {
- for my $e (keys %$pl_env) {
- $ENV{$e} = $pl_env->{$e};
- }
- }
+ local @ENV{keys %$pl_env} = values %$pl_env if $pl_env;
if (exists $self->{writemakefile}) {
} else {
local($SIG{ALRM}) = sub { die "inactivity_timeout reached\n" };
@@ -1998,7 +2002,7 @@ is part of the perl-%s distribution. To install that, you need to run
return $self->goodbye("$system -- NOT OK");
}
}
- if (-f "Makefile" || -f "Build") {
+ if (-f "Makefile" || -f "Build" || ($^O eq 'VMS' && (-f 'descrip.mms' || -f 'Build.com'))) {
$self->{writemakefile} = CPAN::Distrostatus->new("YES");
delete $self->{make_clean}; # if cleaned before, enable next
} else {
@@ -2026,12 +2030,13 @@ is part of the perl-%s distribution. To install that, you need to run
if ($self->prefs->{make}) {
$make_commandline = $self->prefs->{make}{commandline};
}
+ local $ENV{PERL} = $ENV{PERL};
if ($make_commandline) {
$system = $make_commandline;
$ENV{PERL} = CPAN::find_perl();
} else {
if ($self->{modulebuild}) {
- unless (-f "Build") {
+ unless (-f "Build" || ($^O eq 'VMS' && -f 'Build.com')) {
my $cwd = CPAN::anycwd();
$CPAN::Frontend->mywarn("Alert: no Build file available for 'make $self->{id}'".
" in cwd[$cwd]. Danger, Will Robinson!\n");
@@ -2052,12 +2057,7 @@ is part of the perl-%s distribution. To install that, you need to run
if ($self->prefs->{make}) {
$make_env = $self->prefs->{make}{env};
}
- if ($make_env) { # overriding the local ENV of PL, not the outer
- # ENV, but unlikely to be a risk
- for my $e (keys %$make_env) {
- $ENV{$e} = $make_env->{$e};
- }
- }
+ local @ENV{keys %$make_env} = values %$make_env if $make_env;
my $expect_model = $self->_prefs_with_expect("make");
my $want_expect = 0;
if ( $expect_model && @{$expect_model->{talk}} ) {
@@ -2657,8 +2657,31 @@ sub unsat_prereq {
# one and is deprecated
if ( $available_file ) {
- if ( $inst_file && $available_file eq $inst_file && $nmo->inst_deprecated ) {
- # continue installing as a prereq
+ my $fulfills_all_version_rqs = $self->_fulfills_all_version_rqs
+ (
+ $need_module,
+ $available_file,
+ $available_version,
+ $need_version,
+ );
+ if (0) {
+ } elsif ( $inst_file
+ && $available_file eq $inst_file
+ && $nmo->inst_deprecated
+ ) {
+ # continue installing as a prereq. we really want that
+ # because the deprecated module may spit out warnings
+ # and third party did not know until today. Only one
+ # exception is OK, because CPANPLUS is special after
+ # all:
+ if ( $fulfills_all_version_rqs and
+ $nmo->id =~ /^CPANPLUS(?:::Dist::Build)$/
+ ) {
+ # here we have an available version that is good
+ # enough although deprecated (preventing circular
+ # loop CPANPLUS => CPANPLUS::Dist::Build RT#83042)
+ next NEED;
+ }
} elsif ($self->{reqtype} =~ /^(r|c)$/ && exists $prereq_pm->{requires}{$need_module} && $nmo && !$inst_file) {
# continue installing as a prereq; this may be a
# distro we already used when it was a build_requires
@@ -2674,9 +2697,7 @@ sub unsat_prereq {
}
}
else {
- next NEED if $self->_fulfills_all_version_rqs(
- $need_module,$available_file,$available_version,$need_version
- );
+ next NEED if $fulfills_all_version_rqs;
}
}
@@ -2760,13 +2781,13 @@ sub unsat_prereq {
# DMAKI/DateTime-Calendar-Chinese-0.05.tar.gz
# in 2007-03 for 'make install'
# and 2008-04: #30464 (for 'make test')
- $CPAN::Frontend->mywarn("Warning: Prerequisite ".
- "'$need_module => $need_version' ".
- "for '$selfid' already built ".
- "but the result looks suspicious. ".
- "Skipping another build attempt, ".
- "to prevent looping endlessly.\n"
- );
+ # $CPAN::Frontend->mywarn("Warning: Prerequisite ".
+ # "'$need_module => $need_version' ".
+ # "for '$selfid' already built ".
+ # "but the result looks suspicious. ".
+ # "Skipping another build attempt, ".
+ # "to prevent looping endlessly.\n"
+ # );
next NEED;
}
}
@@ -3205,7 +3226,7 @@ sub test {
$ENV{PERL} = CPAN::find_perl();
} elsif ($self->{modulebuild}) {
$system = sprintf "%s test", $self->_build_command();
- unless (-e "Build") {
+ unless (-e "Build" || ($^O eq 'VMS' && -e "Build.com")) {
my $id = $self->pretty_id;
$CPAN::Frontend->mywarn("Alert: no 'Build' file found while trying to test '$id'");
}
@@ -3218,21 +3239,11 @@ sub test {
$make_test_arg ? " $make_test_arg" : "",
);
my($tests_ok);
- my %env;
- while (my($k,$v) = each %ENV) {
- next unless defined $v;
- $env{$k} = $v;
- }
- local %ENV = %env;
my $test_env;
if ($self->prefs->{test}) {
$test_env = $self->prefs->{test}{env};
}
- if ($test_env) {
- for my $e (keys %$test_env) {
- $ENV{$e} = $test_env->{$e};
- }
- }
+ local @ENV{keys %$test_env} = values %$test_env if $test_env;
my $expect_model = $self->_prefs_with_expect("test");
my $want_expect = 0;
if ( $expect_model && @{$expect_model->{talk}} ) {
@@ -3554,10 +3565,13 @@ sub install {
$CPAN::Config->{mbuild_install_build_command} ?
$CPAN::Config->{mbuild_install_build_command} :
$self->_build_command();
- $system = sprintf("%s install %s",
+ my $install_directive = $^O eq 'VMS' ? '"install"' : 'install';
+ $system = sprintf("%s %s %s",
$mbuild_install_build_command,
+ $install_directive,
$CPAN::Config->{mbuild_install_arg},
);
+
} else {
my($make_install_make_command) =
CPAN::HandleConfig->prefs_lookup($self,
@@ -3569,7 +3583,7 @@ sub install {
);
}
- my($stderr) = $^O eq "MSWin32" ? "" : " 2>&1 ";
+ my($stderr) = $^O eq "MSWin32" || $^O eq 'VMS' ? "" : " 2>&1 ";
my $brip = CPAN::HandleConfig->prefs_lookup($self,
q{build_requires_install_policy});
$brip ||="ask/yes";
@@ -3883,6 +3897,9 @@ sub _build_command {
my($perl) = $self->perl or $CPAN::Frontend->mydie("Couldn't find executable perl\n");
return "$perl ./Build";
}
+ elsif ($^O eq 'VMS') {
+ return "$^X Build.com";
+ }
return "./Build";
}
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/FirstTime.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/FirstTime.pm
index 5030ef9b838..b099b04a110 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/FirstTime.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/FirstTime.pm
@@ -10,7 +10,7 @@ use File::Path ();
use File::Spec ();
use CPAN::Mirrors ();
use vars qw($VERSION $auto_config);
-$VERSION = "5.5303";
+$VERSION = "5.5304";
=head1 NAME
@@ -1029,7 +1029,7 @@ sub init {
and $^O ne "MSWin32") {
# as long as Windows needs $self->_build_command, we cannot
# support sudo on windows :-)
- my $default = "./Build";
+ my $default = $^O eq 'VMS' ? '@Build.com' : "./Build";
if ( $CPAN::Config->{install_help} eq 'sudo' ) {
if ( find_exe('sudo') ) {
$default = "sudo $default";
@@ -1393,6 +1393,8 @@ sub _do_pick_mirrors {
my $_conf = 'n';
if ( $CPAN::META->has_usable("Net::Ping") && Net::Ping->VERSION gt '2.13') {
$_conf = prompt($prompts{auto_pick}, "yes");
+ } else {
+ prompt("Autoselection disabled due to Net::Ping missing or insufficient. Please press ENTER");
}
my @old_list = @{ $CPAN::Config->{urllist} };
if ( $_conf =~ /^y/i ) {
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HandleConfig.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HandleConfig.pm
index 09c42efee08..2978c3bde99 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HandleConfig.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HandleConfig.pm
@@ -6,6 +6,12 @@ use File::Spec ();
use File::Basename ();
use Carp ();
+=head1 NAME
+
+CPAN::HandleConfig - internal configuration handling for CPAN.pm
+
+=cut
+
$VERSION = "5.5003"; # see also CPAN::Config::VERSION at end of file
%can = (
@@ -527,7 +533,8 @@ sub cpan_home_dir_candidates {
push @dirs, $ENV{USERPROFILE} if $ENV{USERPROFILE};
$CPAN::Config->{load_module_verbosity} = $old_v;
- @dirs = map { "$_/.cpan" } grep { defined } @dirs;
+ my $dotcpan = $^O eq 'VMS' ? '_cpan' : '.cpan';
+ @dirs = map { File::Spec->catdir($_, $dotcpan) } grep { defined } @dirs;
return wantarray ? @dirs : $dirs[0];
}
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Index.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Index.pm
index af98d7bf15c..c338cc7ec7b 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Index.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Index.pm
@@ -126,7 +126,7 @@ sub reanimate_build_dir {
my @candidates = map { $_->[0] }
sort { $b->[1] <=> $a->[1] }
map { [ $_, -M File::Spec->catfile($d,$_) ] }
- grep {/\.yml$/} readdir $dh;
+ grep {/(.+)\.yml$/ && -d File::Spec->catfile($d,$1)} readdir $dh;
unless (@candidates) {
$CPAN::Frontend->myprint("Build_dir empty, nothing to restore\n");
return;
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Mirrors.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Mirrors.pm
index daafc1dbaf1..38e0043d7a4 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Mirrors.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Mirrors.pm
@@ -508,7 +508,7 @@ sub url {
sub ping {
my $self = shift;
- my $ping = Net::Ping->new("tcp",1);
+ my $ping = Net::Ping->new($^O eq 'VMS' ? 'icmp' : 'tcp', 1);
my ($proto) = $self->url =~ m{^([^:]+)};
my $port = $proto eq 'http' ? 80 : 21;
return unless $port;
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Nox.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Nox.pm
index 5fe5a25ae6e..f7ed4a38afb 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Nox.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Nox.pm
@@ -6,10 +6,11 @@ BEGIN{
$CPAN::Suppress_readline=1 unless defined $CPAN::term;
}
-use base 'Exporter';
+use Exporter ();
+@CPAN::ISA = ('Exporter');
use CPAN;
-$VERSION = "5.50";
+$VERSION = "5.5001";
$CPAN::META->has_inst('Digest::MD5','no');
$CPAN::META->has_inst('LWP','no');
$CPAN::META->has_inst('Compress::Zlib','no');
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Queue.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Queue.pm
index e5d88ce2d83..1222b37ef61 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Queue.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Queue.pm
@@ -201,6 +201,10 @@ sub reqtype_of {
__END__
+=head1 NAME
+
+CPAN::Queue - internal queue support for CPAN.pm
+
=head1 LICENSE
This program is free software; you can redistribute it and/or
diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Tarzip.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Tarzip.pm
index 972df6ca06f..708a5794f34 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Tarzip.pm
+++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Tarzip.pm
@@ -343,10 +343,20 @@ Can't continue cutting file '$file'.
}
$system = qq{$tarcommand x${tar_verb}f "$file"};
$CPAN::Frontend->myprint(qq{Using Tar:$system:\n});
- if (system($system)==0) {
+ my $ret = system($system);
+ if ($ret==0) {
$CPAN::Frontend->myprint(qq{Untarred $file successfully\n});
} else {
- $CPAN::Frontend->mydie(qq{Couldn\'t untar $file\n});
+ if ($? == -1) {
+ $CPAN::Frontend->mydie(sprintf qq{Couldn\'t untar %s: '%s'\n},
+ $file, $!);
+ } elsif ($? & 127) {
+ $CPAN::Frontend->mydie(sprintf qq{Couldn\'t untar %s: child died with signal %d, %s coredump\n},
+ $file, ($? & 127), ($? & 128) ? 'with' : 'without');
+ } else {
+ $CPAN::Frontend->mydie(sprintf qq{Couldn\'t untar %s: child exited with value %d\n},
+ $file, $? >> 8);
+ }
}
return 1;
} else {
@@ -450,6 +460,10 @@ END
__END__
+=head1 NAME
+
+CPAN::Tarzip - internal handling of tar archives for CPAN.pm
+
=head1 LICENSE
This program is free software; you can redistribute it and/or
diff --git a/gnu/usr.bin/perl/cpan/CPAN/scripts/cpan b/gnu/usr.bin/perl/cpan/CPAN/scripts/cpan
index 5e5609555f6..70dd9421d91 100644
--- a/gnu/usr.bin/perl/cpan/CPAN/scripts/cpan
+++ b/gnu/usr.bin/perl/cpan/CPAN/scripts/cpan
@@ -1,9 +1,10 @@
#!/usr/local/bin/perl
+
use strict;
use vars qw($VERSION);
-use App::Cpan;
-$VERSION = '1.57';
+use App::Cpan '1.60_02';
+$VERSION = '1.61';
my $rc = App::Cpan->run( @ARGV );
@@ -20,7 +21,7 @@ cpan - easily interact with CPAN from the command line
cpan module_name [ module_name ... ]
# with switches, installs modules with extra behavior
- cpan [-cfgimt] module_name [ module_name ... ]
+ cpan [-cfgimtTw] module_name [ module_name ... ]
# with just the dot, install from the distribution in the
# current directory
@@ -66,10 +67,7 @@ Show the F<Changes> files for the specified modules
=item -D module [ module ... ]
-Show the module details. This prints one line for each out-of-date module
-(meaning, modules locally installed but have newer versions on CPAN).
-Each line has three columns: module name, local version, and CPAN
-version.
+Show the module details.
=item -f
@@ -110,6 +108,10 @@ of the other options and arguments.
Install the specified modules.
+=item -I
+
+Load C<local::lib> (think like C<-I> for loading lib paths).
+
=item -j Config.pm
Load the file that has the CPAN configuration data. This should have the
@@ -122,6 +124,10 @@ Dump the configuration in the same format that CPAN.pm uses. This is useful
for checking the configuration as well as using the dump as a starting point
for a new, custom configuration.
+=item -l
+
+List all installed modules wth their versions
+
=item -L author [ author ... ]
List the modules by the specified authors.
@@ -134,18 +140,46 @@ Make the specified modules.
Show the out-of-date modules.
-=item -t
+=item -p
-Run a `make test` on the specified modules.
+Ping the configured mirrors
+
+=item -P
+
+Find the best mirrors you could be using (but doesn't configure them just yet)
=item -r
Recompiles dynamically loaded modules with CPAN::Shell->recompile.
+=item -t
+
+Run a `make test` on the specified modules.
+
+=item -T
+
+Do not test modules. Simply install them.
+
+=item -u
+
+Upgrade all installed modules. Blindly doing this can really break things,
+so keep a backup.
+
=item -v
Print the script version and CPAN.pm version then exit.
+=item -V
+
+Print detailed information about the cpan client.
+
+=item -w
+
+UNIMPLEMENTED
+
+Turn on cpan warnings. This checks various things, like directory permissions,
+and tells you about problems you might have.
+
=back
=head2 Examples
@@ -162,12 +196,27 @@ Print the script version and CPAN.pm version then exit.
# recompile modules
cpan -r
+ # upgrade all installed modules
+ cpan -u
+
# install modules ( sole -i is optional )
cpan -i Netscape::Booksmarks Business::ISBN
# force install modules ( must use -i )
cpan -fi CGI::Minimal URI
+=head1 ENVIRONMENT VARIABLES
+
+=over 4
+
+=item CPAN_OPTS
+
+C<cpan> splits this variable on whitespace and prepends that list to C<@ARGV>
+before it processes the command-line arguments. For instance, if you always
+want to use C<local:lib>, you can set C<CPAN_OPTS> to C<-I>.
+
+=back
+
=head1 EXIT VALUES
The script exits with zero if it thinks that everything worked, or a
@@ -187,8 +236,6 @@ not control. For now, the exit codes are vague:
* one shot configuration values from the command line
-
-
=head1 BUGS
* none noted
@@ -220,7 +267,7 @@ brian d foy, C<< <bdfoy@cpan.org> >>
=head1 COPYRIGHT
-Copyright (c) 2001-2009, brian d foy, All Rights Reserved.
+Copyright (c) 2001-2013, brian d foy, All Rights Reserved.
You may redistribute this under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS-Dist-Build/lib/CPANPLUS/Dist/Build.pm b/gnu/usr.bin/perl/cpan/CPANPLUS-Dist-Build/lib/CPANPLUS/Dist/Build.pm
index 702d606115b..d938749c825 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS-Dist-Build/lib/CPANPLUS/Dist/Build.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS-Dist-Build/lib/CPANPLUS/Dist/Build.pm
@@ -1,5 +1,7 @@
package CPANPLUS::Dist::Build;
+use if $] > 5.017, 'deprecate';
+
use strict;
use warnings;
use vars qw[@ISA $STATUS $VERSION];
@@ -30,7 +32,7 @@ use Locale::Maketext::Simple Class => 'CPANPLUS', Style => 'gettext';
local $Params::Check::VERBOSE = 1;
-$VERSION = '0.62';
+$VERSION = '0.70';
=pod
@@ -327,6 +329,15 @@ sub prepare {
$fail++; last RUN;
}
+ unless ( BUILD->( $dir ) ) {
+ error( loc( "Build.PL failed to generate a Build script: %1", $prep_output ) );
+ if ( $conf->get_conf('cpantest') ) {
+ $status->{stage} = 'prepare';
+ $status->{capture} = $prep_output;
+ }
+ $fail++; last RUN;
+ }
+
msg( $prep_output, 0 );
my $prereqs = $self->status->prereqs;
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS-Dist-Build/lib/CPANPLUS/Dist/Build/Constants.pm b/gnu/usr.bin/perl/cpan/CPANPLUS-Dist-Build/lib/CPANPLUS/Dist/Build/Constants.pm
index c0fa040ffc5..f020093c9c7 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS-Dist-Build/lib/CPANPLUS/Dist/Build/Constants.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS-Dist-Build/lib/CPANPLUS/Dist/Build/Constants.pm
@@ -1,5 +1,7 @@
package CPANPLUS::Dist::Build::Constants;
+use if $] > 5.017, 'deprecate';
+
use strict;
use warnings;
use File::Spec;
@@ -9,7 +11,7 @@ BEGIN {
require Exporter;
use vars qw[$VERSION @ISA @EXPORT];
- $VERSION = '0.62';
+ $VERSION = '0.70';
@ISA = qw[Exporter];
@EXPORT = qw[ BUILD_DIR BUILD CPDB_PERL_WRAPPER];
}
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS.pm
index e1fc6ef8ad3..e0ff071b34c 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS.pm
@@ -1,4 +1,5 @@
package CPANPLUS;
+use deprecate;
use strict;
use Carp;
@@ -13,7 +14,7 @@ BEGIN {
use vars qw( @EXPORT @ISA $VERSION );
@EXPORT = qw( shell fetch get install );
@ISA = qw( Exporter );
- $VERSION = "0.9121"; #have to hardcode or cpan.org gets unhappy
+ $VERSION = "0.9135"; #have to hardcode or cpan.org gets unhappy
}
### purely for backward compatibility, so we can call it from the commandline:
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Config/HomeEnv.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Config/HomeEnv.pm
new file mode 100644
index 00000000000..90703a066de
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Config/HomeEnv.pm
@@ -0,0 +1,63 @@
+package CPANPLUS::Config::HomeEnv;
+use deprecate;
+
+use strict;
+use File::Spec;
+use vars qw($VERSION);
+
+$VERSION = "0.9135";
+
+sub setup {
+ my $conf = shift;
+ $conf->set_conf( base => File::Spec->catdir( $ENV{PERL5_CPANPLUS_HOME}, '.cpanplus' ) )
+ if $ENV{PERL5_CPANPLUS_HOME};
+ return 1;
+}
+
+qq'Wherever I hang my hat is home';
+
+__END__
+
+=head1 NAME
+
+CPANPLUS::Config::HomeEnv - Set the environment for the CPANPLUS base dir
+
+=head1 SYNOPSIS
+
+ export PERL5_CPANPLUS_HOME=/home/moo/perls/conf/perl-5.8.9/
+
+=head1 DESCRIPTION
+
+CPANPLUS::Config::HomeEnv is a L<CPANPLUS::Config> file that allows the CPANPLUS user to
+specify where L<CPANPLUS> gets its configuration from.
+
+Setting the environment variable C<PERL5_CPANPLUS_HOME> to a path location, determines
+where the C<.cpanplus> directory will be located.
+
+=head1 METHODS
+
+=over
+
+=item C<setup>
+
+Called by L<CPANPLUS::Configure>.
+
+=back
+
+=head1 AUTHOR
+
+Chris C<BinGOs> Williams <chris@bingosnet.co.uk>
+
+Contributions and patience from Jos Boumans the L<CPANPLUS> guy!
+
+=head1 LICENSE
+
+Copyright E<copy> Chris Williams and Jos Boumans.
+
+This module may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details.
+
+=head1 SEE ALSO
+
+L<CPANPLUS>
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Configure/Setup.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Configure/Setup.pm
index 7720d853083..8ac565a70ec 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Configure/Setup.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Configure/Setup.pm
@@ -1,7 +1,9 @@
package CPANPLUS::Configure::Setup;
+use deprecate;
use strict;
-use vars qw(@ISA);
+use vars qw[@ISA $VERSION];
+$VERSION = "0.9135";
use base qw[CPANPLUS::Internals::Utils];
use base qw[Object::Accessor];
@@ -11,7 +13,6 @@ use Term::UI;
use Module::Load;
use Term::ReadLine;
-
use CPANPLUS::Internals::Utils;
use CPANPLUS::Internals::Constants;
use CPANPLUS::Error;
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Dist/Base.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Dist/Base.pm
index 8e4e02f1f50..73736d9e4da 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Dist/Base.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Dist/Base.pm
@@ -1,11 +1,11 @@
package CPANPLUS::Dist::Base;
+use deprecate;
use strict;
use base qw[CPANPLUS::Dist];
use vars qw[$VERSION];
-$VERSION = $CPANPLUS::Internals::VERSION = $CPANPLUS::Internals::VERSION;
-
+$VERSION = "0.9135";
=head1 NAME
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Dist/Sample.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Dist/Sample.pm
index 0b0939208ff..e03d66f9836 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Dist/Sample.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Dist/Sample.pm
@@ -1,4 +1,8 @@
package CPANPLUS::Dist::Sample;
+use deprecate;
+
+use vars qw[$VERSION];
+$VERSION = "0.9135";
=pod
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants.pm
index bd48a1db8c6..09501c78e84 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants.pm
@@ -1,4 +1,5 @@
package CPANPLUS::Internals::Constants;
+use deprecate;
use strict;
@@ -13,10 +14,10 @@ use vars qw[$VERSION @ISA @EXPORT];
use Package::Constants;
+$VERSION = "0.9135";
@ISA = qw[Exporter];
@EXPORT = Package::Constants->list( __PACKAGE__ );
-
sub constants { @EXPORT };
use constant INSTALLER_BUILD
@@ -195,6 +196,10 @@ use constant BLIB_LIBDIR => sub { return @_
: File::Spec->catdir( BLIB->(), LIB );
};
+use constant BIN => 'bin';
+
+use constant SCRIPT => 'script';
+
use constant CONFIG_USER_LIB_DIR => sub {
require CPANPLUS::Internals::Utils;
LIB_DIR->(
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants/Report.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants/Report.pm
index 294de692369..dc92ec6c31d 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants/Report.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Constants/Report.pm
@@ -1,4 +1,5 @@
package CPANPLUS::Internals::Constants::Report;
+use deprecate;
use strict;
use CPANPLUS::Error;
@@ -14,11 +15,10 @@ use Package::Constants;
### for the version
require CPANPLUS::Internals;
-$VERSION = $CPANPLUS::Internals::VERSION = $CPANPLUS::Internals::VERSION;
+$VERSION = "0.9135";
@ISA = qw[Exporter];
@EXPORT = Package::Constants->list( __PACKAGE__ );
-
### OS to regex map ###
my %OS = (
Amiga => 'amigaos',
@@ -347,6 +347,8 @@ use constant REPORT_TOOLCHAIN_VERSIONS
ExtUtils::ParseXS
File::Spec
Module::Build
+ Pod::Parser
+ Pod::Simple
Test::Harness
Test::More
version
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite.pm
index 47bdbebfd77..50f82f485c9 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite.pm
@@ -1,4 +1,5 @@
package CPANPLUS::Internals::Source::SQLite;
+use deprecate;
use strict;
use warnings;
@@ -16,6 +17,9 @@ use DBD::SQLite;
use Params::Check qw[allow check];
use Locale::Maketext::Simple Class => 'CPANPLUS', Style => 'gettext';
+use vars qw[$VERSION];
+$VERSION = "0.9135";
+
use constant TXN_COMMIT => 1000;
=head1 NAME
@@ -240,7 +244,6 @@ CPANPLUS::Internals::Source::SQLite - SQLite implementation
*$sub = sub {
my $self = shift;
my %hash = @_;
- my $dbh = $self->__sqlite_dbh;
my($list,$type);
my $tmpl = {
@@ -256,9 +259,15 @@ CPANPLUS::Internals::Source::SQLite - SQLite implementation
### we aliased 'module' to 'name', so change that here too
$type = 'module' if $type eq 'name';
+ my $meth = $table .'_tree';
+
+ {
+ my $throw = $self->$meth;
+ }
+
+ my $dbh = $self->__sqlite_dbh;
my $res = $dbh->query( "SELECT * from $table" );
- my $meth = $table .'_tree';
my @rv = map { $self->$meth( $_->{$key} ) }
grep { allow( $_->{$type} => $list ) } $res->hashes;
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite/Tie.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite/Tie.pm
index 7208e00ee11..b44b04bd58e 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite/Tie.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite/Tie.pm
@@ -1,4 +1,5 @@
package CPANPLUS::Internals::Source::SQLite::Tie;
+use deprecate;
use strict;
use warnings;
@@ -9,17 +10,14 @@ use CPANPLUS::Module::Fake;
use CPANPLUS::Module::Author::Fake;
use CPANPLUS::Internals::Constants;
-
use Params::Check qw[check];
use Module::Load::Conditional qw[can_load];
use Locale::Maketext::Simple Class => 'CPANPLUS', Style => 'gettext';
-
-use Data::Dumper;
-$Data::Dumper::Indent = 1;
+use vars qw[@ISA $VERSION];
+$VERSION = "0.9135";
require Tie::Hash;
-use vars qw[@ISA];
push @ISA, 'Tie::StdHash';
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Utils/Autoflush.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Utils/Autoflush.pm
index 56566436a14..8aa9030dfa3 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Utils/Autoflush.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Internals/Utils/Autoflush.pm
@@ -1,4 +1,8 @@
package CPANPLUS::Internals::Utils::Autoflush;
+use deprecate;
+
+use vars qw[$VERSION];
+$VERSION = "0.9135";
BEGIN { $|++ };
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Module/Signature.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Module/Signature.pm
index cec6f2906b0..802d8cc2a60 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Module/Signature.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Module/Signature.pm
@@ -1,13 +1,14 @@
package CPANPLUS::Module::Signature;
+use deprecate;
use strict;
-
use Cwd;
use CPANPLUS::Error;
use Params::Check qw[check];
use Module::Load::Conditional qw[can_load];
-
+use vars qw[$VERSION];
+$VERSION = "0.9135";
### detached sig, not actually used afaik --kane ###
#sub get_signature {
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Shell/Classic.pm b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Shell/Classic.pm
index 089d3de16bd..6cdc6f69cca 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Shell/Classic.pm
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/lib/CPANPLUS/Shell/Classic.pm
@@ -5,6 +5,7 @@
##################################################
package CPANPLUS::Shell::Classic;
+use deprecate;
use strict;
@@ -30,7 +31,7 @@ $Params::Check::ALLOW_UNKNOWN = 1;
BEGIN {
use vars qw[ $VERSION @ISA ];
@ISA = qw[ CPANPLUS::Shell::_Base::ReadLine ];
- $VERSION = '0.0562';
+ $VERSION = "0.9135";
}
load CPANPLUS::Shell;
@@ -97,6 +98,20 @@ sub new {
code => \&__ask_about_test_report,
);
+ if (my $histfile = $self->configure_object->get_conf( 'histfile' )) {
+ my $term = $self->term;
+ if ($term->can('AddHistory')) {
+ if (open my $fh, '<', $histfile) {
+ local $/ = "\n";
+ while (my $line = <$fh>) {
+ chomp($line);
+ $term->AddHistory($line);
+ }
+ close($fh);
+ }
+ }
+ }
+
return $self;
}
@@ -194,6 +209,24 @@ sub _dispatch_on_input {
### displays quit message
sub _quit {
+ my $self = shift;
+ my $term = $self->term;
+
+ if ($term->can('GetHistory')) {
+ my @history = $term->GetHistory;
+
+ my $histfile = $self->configure_object->get_conf('histfile');
+
+ if (open my $fh, '>', $histfile) {
+ foreach my $line (@history) {
+ print {$fh} "$line\n";
+ }
+ close($fh);
+ }
+ else {
+ warn "Cannot open history file '$histfile' - $!";
+ }
+ }
### well, that's what CPAN.pm says...
print "Lockfile removed\n";
diff --git a/gnu/usr.bin/perl/cpan/CPANPLUS/t/inc/conf.pl b/gnu/usr.bin/perl/cpan/CPANPLUS/t/inc/conf.pl
index 66087077e05..4cce0efcb43 100644
--- a/gnu/usr.bin/perl/cpan/CPANPLUS/t/inc/conf.pl
+++ b/gnu/usr.bin/perl/cpan/CPANPLUS/t/inc/conf.pl
@@ -131,6 +131,8 @@ sub gimme_conf {
### don't load any other configs than the heuristic one
### during tests. They might hold broken/incorrect data
### for our test suite. Bug [perl #43629] showed this.
+ local $ENV{PERL5_CPANPLUS_HOME} = '';
+
my $conf = CPANPLUS::Configure->new( load_configs => 0 );
my $dummy_cpan = dummy_cpan_dir();
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Bzip2.xs b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Bzip2.xs
index 7c15ee68f49..ef19280b2a9 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Bzip2.xs
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Bzip2.xs
@@ -9,7 +9,7 @@
*
*/
-
+#define PERL_NO_GET_CONTEXT
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
@@ -281,9 +281,8 @@ char * string;
croak("%s: buffer parameter is a reference to a reference", string) ;
}
- if (!SvOK(sv)) {
- sv = newSVpv("", 0);
- }
+ if (!SvOK(sv))
+ sv = sv_2mortal(newSVpv("", 0));
return sv ;
}
@@ -299,6 +298,7 @@ char * string ;
{
dTHX;
bool wipe = 0 ;
+ STRLEN na;
SvGETMAGIC(sv);
wipe = ! SvOK(sv) ;
@@ -326,10 +326,9 @@ char * string ;
SvUPGRADE(sv, SVt_PV);
if (wipe)
- SvCUR_set(sv, 0);
-
- SvOOK_off(sv);
- SvPOK_only(sv);
+ sv_setpv(sv, "") ;
+ else
+ (void)SvPVbyte_force(sv, na) ;
return sv ;
}
@@ -497,7 +496,7 @@ bzdeflate (s, buf, output)
if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1))
croak("Wide character in " COMPRESS_CLASS "::bzdeflate input parameter");
#endif
- s->stream.next_in = (char*)SvPVbyte_nolen(buf) ;
+ s->stream.next_in = (char*)SvPV_nomg_nolen(buf) ;
s->stream.avail_in = SvCUR(buf) ;
/* and retrieve the output buffer */
@@ -512,16 +511,16 @@ bzdeflate (s, buf, output)
/* sv_setpvn(output, "", 0); */
}
cur_length = SvCUR(output) ;
- s->stream.next_out = (char*) SvPVbyte_nolen(output) + cur_length;
+ s->stream.next_out = (char*) SvPVX(output) + cur_length;
increment = SvLEN(output) - cur_length;
s->stream.avail_out = increment;
while (s->stream.avail_in != 0) {
if (s->stream.avail_out == 0) {
/* out of space in the output buffer so make it bigger */
- Sv_Grow(output, SvLEN(output) + bufinc) ;
+ s->stream.next_out = Sv_Grow(output, SvLEN(output) + bufinc) ;
cur_length += increment ;
- s->stream.next_out = (char*) SvPVbyte_nolen(output) + cur_length ;
+ s->stream.next_out += cur_length ;
increment = bufinc ;
s->stream.avail_out = increment;
bufinc *= 2 ;
@@ -576,16 +575,16 @@ bzclose(s, output)
/* sv_setpvn(output, "", 0); */
}
cur_length = SvCUR(output) ;
- s->stream.next_out = (char*) SvPVbyte_nolen(output) + cur_length;
+ s->stream.next_out = (char*) SvPVX(output) + cur_length;
increment = SvLEN(output) - cur_length;
s->stream.avail_out = increment;
for (;;) {
if (s->stream.avail_out == 0) {
/* consumed all the available output, so extend it */
- Sv_Grow(output, SvLEN(output) + bufinc) ;
+ s->stream.next_out = Sv_Grow(output, SvLEN(output) + bufinc) ;
cur_length += increment ;
- s->stream.next_out = (char*) SvPVbyte_nolen(output) + cur_length ;
+ s->stream.next_out += cur_length ;
increment = bufinc ;
s->stream.avail_out = increment;
bufinc *= 2 ;
@@ -637,16 +636,16 @@ bzflush(s, output)
/* sv_setpvn(output, "", 0); */
}
cur_length = SvCUR(output) ;
- s->stream.next_out = (char*) SvPVbyte_nolen(output) + cur_length;
+ s->stream.next_out = (char*) SvPVX(output) + cur_length;
increment = SvLEN(output) - cur_length;
s->stream.avail_out = increment;
for (;;) {
if (s->stream.avail_out == 0) {
/* consumed all the available output, so extend it */
- Sv_Grow(output, SvLEN(output) + bufinc) ;
+ s->stream.next_out = Sv_Grow(output, SvLEN(output) + bufinc) ;
cur_length += increment ;
- s->stream.next_out = (char*) SvPVbyte_nolen(output) + cur_length ;
+ s->stream.next_out += cur_length ;
increment = bufinc ;
s->stream.avail_out = increment;
bufinc *= 2 ;
@@ -724,8 +723,8 @@ bzinflate (s, buf, output)
uInt cur_length = 0;
uInt prefix_length = 0;
uInt increment = 0;
- STRLEN stmp = NO_INIT
uInt bufinc = NO_INIT
+ STRLEN na = NO_INIT ;
PREINIT:
#ifdef UTF8_AVAILABLE
bool out_utf8 = FALSE;
@@ -735,15 +734,18 @@ bzinflate (s, buf, output)
/* If the buffer is a reference, dereference it */
buf = deRef(buf, "bzinflate") ;
- if (s->flags & FLAG_CONSUME_INPUT && SvREADONLY(buf))
- croak(UNCOMPRESS_CLASS "::bzinflate input parameter cannot be read-only when ConsumeInput is specified");
+ if (s->flags & FLAG_CONSUME_INPUT) {
+ if (SvREADONLY(buf))
+ croak(UNCOMPRESS_CLASS "::bzinflate input parameter cannot be read-only when ConsumeInput is specified");
+ SvPV_force(buf, na);
+ }
#ifdef UTF8_AVAILABLE
if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1))
croak("Wide character in " UNCOMPRESS_CLASS "::bzinflate input parameter");
#endif
/* initialise the input buffer */
- s->stream.next_in = (char*)SvPVbyte_force(buf, stmp) ;
+ s->stream.next_in = (char*)SvPV_nomg_nolen(buf) ;
s->stream.avail_in = SvCUR(buf);
/* and retrieve the output buffer */
@@ -774,7 +776,7 @@ bzinflate (s, buf, output)
*/
if (SvLEN(output) > cur_length + 1)
{
- s->stream.next_out = (char*) SvPVbyte_nolen(output) + cur_length;
+ s->stream.next_out = (char*) SvPVX(output) + cur_length;
increment = SvLEN(output) - cur_length - 1;
s->stream.avail_out = increment;
}
@@ -788,9 +790,9 @@ bzinflate (s, buf, output)
if (s->stream.avail_out == 0) {
/* out of space in the output buffer so make it bigger */
- Sv_Grow(output, SvLEN(output) + bufinc + 1) ;
+ s->stream.next_out = Sv_Grow(output, SvLEN(output) + bufinc + 1) ;
cur_length += increment ;
- s->stream.next_out = (char*) SvPVbyte_nolen(output) + cur_length ;
+ s->stream.next_out += cur_length ;
increment = bufinc ;
s->stream.avail_out = increment;
bufinc *= 2 ;
@@ -799,7 +801,10 @@ bzinflate (s, buf, output)
/* DispStream(s, "pre"); */
RETVAL = BZ2_bzDecompress (&(s->stream));
- /* DispStream(s, "apres"); */
+ /*
+ printf("Status %d\n", RETVAL);
+ DispStream(s, "apres");
+ */
if (RETVAL != BZ_OK || s->flags & FLAG_LIMIT_OUTPUT)
break ;
@@ -835,7 +840,7 @@ bzinflate (s, buf, output)
in = s->stream.avail_in ;
SvCUR_set(buf, in) ;
if (in)
- Move(s->stream.next_in, SvPVbyte_nolen(buf), in, char) ;
+ Move(s->stream.next_in, SvPVX(buf), in, char) ;
*SvEND(buf) = '\0';
SvSETMAGIC(buf);
}
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Makefile.PL b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Makefile.PL
index 8bbf3bd11db..efcdf3f6135 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Makefile.PL
@@ -47,7 +47,13 @@ WriteMakefile(
: ()
),
- INSTALLDIRS => ($] > 5.010 ? 'perl' : 'site'),
+ INSTALLDIRS => ($] > 5.010 && $] < 5.011 ? 'perl' : 'site'),
+
+ META_MERGE => {
+ no_index => {
+ directory => [ 't', 'private' ],
+ },
+ },
((ExtUtils::MakeMaker->VERSION() gt '6.30') ?
('LICENSE' => 'perl') : ()),
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Changes b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Changes
index 29e658ead8b..99424de47bb 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Changes
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Changes
@@ -1,6 +1,67 @@
CHANGES
-------
+ 2.060 7 January 2013
+
+ * Mention SimpleZip in POD
+
+ 2.059 24 November 2012
+
+ * Copy-on-write support
+ [#81353]
+
+ 2.058 12 November 2012
+
+ * No Changes
+
+ 2.057 10 November 2012
+
+ * Compress::Raw::Zlib needs to use PERL_NO_GET_CONTEXT
+ [#80319]
+
+ * Install to 'site' instead of 'perl' when perl version is 5.11+
+ [#79812]
+
+ * update to ppport.h that includes SvPV_nomg_nolen
+ [#78079]
+
+ 2.056 10 August 2012
+
+ * Fix C++ build issue
+ Thanks to Karl Williamson for supplying the patch.
+
+ 2.055 4 August 2012
+
+ * Fix misuse of magic in API
+ [#78079]
+
+ 2.054 8 May 2012
+
+ * Build issue on Win32
+ [#77030]
+
+ 2.053 6 May 2012
+
+ * Include zlib 1.2.7 source.
+
+ 2.052 29 April 2012
+
+ * Fixed build issue when Perl is built with C++
+
+ 2.051 20 February 2012
+
+ * Bug in Compress::Raw::Zlib on Windows
+ [#75222]
+
+ 2.050 20 February 2012
+
+ * Build failure on Irix & Solaris.
+ [RT #69985]
+
+ 2.049 18 February 2012
+
+ * Include zlib 1.2.6 source.
+
2.048 29 January 2012
* Set minimum zlib version to 1.2.0
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Makefile.PL b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Makefile.PL
index 377bff48d13..2b7c2613d7d 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Makefile.PL
@@ -82,7 +82,13 @@ WriteMakefile(
: (LIBS => [ "-L$ZLIB_LIB -lz " ])
),
- INSTALLDIRS => ($] >= 5.009 ? 'perl' : 'site'),
+ INSTALLDIRS => ($] >= 5.009 && $] < 5.011 ? 'perl' : 'site'),
+
+ META_MERGE => {
+ no_index => {
+ directory => [ 't', 'private' ],
+ },
+ },
((ExtUtils::MakeMaker->VERSION() gt '6.30') ?
('LICENSE' => 'perl') : ()),
@@ -96,7 +102,6 @@ sub version_Macro
return [ "#if ZLIB_VERNUM >= 0x$ver\n", "#endif\n" ];
}
-
my @names = qw(
DEF_WBITS
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/README b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/README
index 1622ba0f46f..37a3f1ce8dd 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/README
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/README
@@ -1,17 +1,17 @@
- Compress-Raw-Zlib
+ Compress-Raw-Zlib
- Version 2.048
+ Version 2.060
- 29th January 2012
+ 7th January 2013
- Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+ Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it
and/or modify it under the same terms as Perl itself.
The directory zlib-src contains a subset of the
- source files copied directly from zlib version 1.2.5.
- These files are Copyright(C) 1995-2010
+ source files copied directly from zlib version 1.2.7.
+ These files are Copyright(C) 1995-2012
Jean-loup Gailly and Mark Adler.
Full source for the zlib library is available at
http://www.zlib.org
@@ -29,7 +29,7 @@ installed on your system:
* A C compiler
- * Perl 5.004 or better.
+ * Perl 5.006 or better.
By default, Compress-Raw-Zlib will build its own private copy of the
zlib library. If you want to use a different version of
@@ -99,16 +99,16 @@ before building this module.
For option 2, fetch a copy of the zlib source distribution from
http://www.zlib.org and unpack it into the Compress-Raw-Zlib source
- directory. Assuming you have fetched zlib 1.2.5,
- it will create a directory called zlib-1.2.5.
+ directory. Assuming you have fetched zlib 1.2.7,
+ it will create a directory called zlib-1.2.7.
Now set the variables in the file config.in as follows (if the version
- you have fetched isn't 1.2.5, change the INCLUDE and LIB
+ you have fetched isn't 1.2.7, change the INCLUDE and LIB
variables appropriately):
BUILD_ZLIB = True
- INCLUDE = ./zlib-1.2.5
- LIB = ./zlib-1.2.5
+ INCLUDE = ./zlib-1.2.7
+ LIB = ./zlib-1.2.7
OLD_ZLIB = False
GZIP_OS_CODE = AUTO_DETECT
@@ -355,7 +355,7 @@ To help me help you, I need all of the following information:
If you haven't installed Compress-Raw-Zlib then search Compress::Raw::Zlib.pm
for a line like this:
- $VERSION = "2.048" ;
+ $VERSION = "2.060" ;
c. The version of zlib you have used.
If you have successfully installed Compress-Raw-Zlib, this one-liner
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Zlib.xs b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Zlib.xs
index ebf03ce323c..1812230474f 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Zlib.xs
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Zlib.xs
@@ -3,7 +3,7 @@
* Created : 22nd January 1996
* Version : 2.000
*
- * Copyright (c) 1995-2010 Paul Marquess. All rights reserved.
+ * Copyright (c) 1995-2013 Paul Marquess. All rights reserved.
* This program is free software; you can redistribute it and/or
* modify it under the same terms as Perl itself.
*
@@ -26,7 +26,7 @@
*/
-
+#define PERL_NO_GET_CONTEXT
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
@@ -432,7 +432,7 @@ DispStream(s, message)
#define EnDis(f) (s->flags & f ? "Enabled" : "Disabled")
- printf("DispStream 0x%p", s) ;
+ printf("DispStream %p", s) ;
if (message)
printf("- %s \n", message) ;
printf("\n") ;
@@ -441,22 +441,23 @@ DispStream(s, message)
printf(" stream pointer is NULL\n");
}
else {
- printf(" stream 0x%p\n", &(s->stream));
- printf(" zalloc 0x%p\n", s->stream.zalloc);
- printf(" zfree 0x%p\n", s->stream.zfree);
- printf(" opaque 0x%p\n", s->stream.opaque);
+ printf(" stream %p\n", &(s->stream));
+ printf(" zalloc %p\n", s->stream.zalloc);
+ printf(" zfree %p\n", s->stream.zfree);
+ printf(" opaque %p\n", s->stream.opaque);
+ printf(" state %p\n", s->stream.state);
if (s->stream.msg)
printf(" msg %s\n", s->stream.msg);
else
printf(" msg \n");
- printf(" next_in 0x%p", s->stream.next_in);
+ printf(" next_in %p", s->stream.next_in);
if (s->stream.next_in){
printf(" =>");
DispHex(s->stream.next_in, 4);
}
printf("\n");
- printf(" next_out 0x%p", s->stream.next_out);
+ printf(" next_out %p", s->stream.next_out);
if (s->stream.next_out){
printf(" =>");
DispHex(s->stream.next_out, 4);
@@ -469,7 +470,7 @@ DispStream(s, message)
printf(" total_out %ld\n", s->stream.total_out);
printf(" adler %ld\n", s->stream.adler );
printf(" bufsize %ld\n", s->bufsize);
- printf(" dictionary 0x%p\n", s->dictionary);
+ printf(" dictionary %p\n", s->dictionary);
printf(" dict_adler 0x%ld\n",s->dict_adler);
printf(" zip_mode %d\n", s->zip_mode);
printf(" crc32 0x%x\n", (unsigned)s->crc32);
@@ -483,7 +484,7 @@ DispStream(s, message)
#ifdef MAGIC_APPEND
- printf(" window 0x%p\n", s->window);
+ printf(" window %p\n", s->window);
#endif
printf("\n");
@@ -499,7 +500,8 @@ voidpf my_zcalloc (voidpf opaque, unsigned items, unsigned size)
void my_zcfree (voidpf opaque, voidpf ptr)
{
- return safefree(ptr);
+ safefree(ptr);
+ return;
}
#endif
@@ -574,9 +576,8 @@ char * string;
croak("%s: buffer parameter is a reference to a reference", string) ;
}
- if (!SvOK(sv)) {
- sv = newSVpv("", 0);
- }
+ if (!SvOK(sv))
+ sv = sv_2mortal(newSVpv("", 0));
return sv ;
}
@@ -592,6 +593,7 @@ char * string ;
{
dTHX;
bool wipe = 0 ;
+ STRLEN na;
SvGETMAGIC(sv);
wipe = ! SvOK(sv) ;
@@ -619,10 +621,9 @@ char * string ;
SvUPGRADE(sv, SVt_PV);
if (wipe)
- SvCUR_set(sv, 0);
-
- SvOOK_off(sv);
- SvPOK_only(sv);
+ sv_setpv(sv, "") ;
+ else
+ (void)SvPVbyte_force(sv, na) ;
return sv ;
}
@@ -791,18 +792,21 @@ _deflateInit(flags,level, method, windowBits, memLevel, strategy, bufsize, dicti
err = deflateInit2(&(s->stream), level,
method, windowBits, memLevel, strategy);
- if (trace)
- warn(" _deflateInit2 returned %d\n", err);
+ if (trace) {
+ warn(" _deflateInit2 returned %d (state %p)\n", err, s);
+ DispStream(s, "INIT");
+ }
/* Check if a dictionary has been specified */
-
- if (err == Z_OK && SvCUR(dictionary)) {
+ SvGETMAGIC(dictionary);
+ if (err == Z_OK && SvPOK(dictionary) && SvCUR(dictionary)) {
#ifdef UTF8_AVAILABLE
- if (DO_UTF8(dictionary) && !sv_utf8_downgrade(dictionary, 1))
- croak("Wide character in Compress::Raw::Zlib::Deflate::new dicrionary parameter");
+ if (DO_UTF8(dictionary) && !sv_utf8_downgrade(dictionary, 1))
+ croak("Wide character in Compress::Raw::Zlib::Deflate::new dicrionary parameter");
#endif
- err = deflateSetDictionary(&(s->stream), (const Bytef*) SvPVbyte_nolen(dictionary),
- SvCUR(dictionary)) ;
+ err = deflateSetDictionary(&(s->stream), (const Bytef*) SvPVX(dictionary), SvCUR(dictionary)) ;
+ if (trace)
+ warn("deflateSetDictionary returned %d\n", err);
s->dict_adler = s->stream.adler ;
}
@@ -869,7 +873,7 @@ _inflateInit(flags, windowBits, bufsize, dictionary)
}
}
else
-#endif
+#endif
/* Dictionary specified - take a copy for use in inflate */
s->dictionary = newSVsv(dictionary) ;
}
@@ -941,7 +945,7 @@ deflate (s, buf, output)
if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1))
croak("Wide character in Compress::Raw::Zlib::Deflate::deflate input parameter");
#endif
- s->stream.next_in = (Bytef*)SvPVbyte_nolen(buf) ;
+ s->stream.next_in = (Bytef*)SvPV_nomg_nolen(buf) ;
s->stream.avail_in = SvCUR(buf) ;
if (s->flags & FLAG_CRC32)
@@ -962,7 +966,7 @@ deflate (s, buf, output)
/* sv_setpvn(output, "", 0); */
}
prefix = cur_length = SvCUR(output) ;
- s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) + cur_length;
+ s->stream.next_out = (Bytef*) SvPVX(output) + cur_length;
increment = SvLEN(output) - cur_length;
s->stream.avail_out = increment;
#ifdef SETP_BYTE
@@ -993,19 +997,33 @@ deflate (s, buf, output)
s->deflateParams_out_length = 0;
}
#endif
+ RETVAL = Z_OK ;
while (s->stream.avail_in != 0) {
if (s->stream.avail_out == 0) {
/* out of space in the output buffer so make it bigger */
- Sv_Grow(output, SvLEN(output) + bufinc) ;
+ s->stream.next_out = (Bytef*) Sv_Grow(output, SvLEN(output) + bufinc) ;
cur_length += increment ;
- s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) + cur_length ;
+ s->stream.next_out += cur_length ;
increment = bufinc ;
s->stream.avail_out = increment;
bufinc *= 2 ;
}
+ if (trace) {
+ printf("DEFLATE Avail In %d, Out %d\n", s->stream.avail_in, s->stream.avail_out);
+ DispStream(s, "BEFORE");
+ /* Perl_sv_dump(output); */
+ }
+
RETVAL = deflate(&(s->stream), Z_NO_FLUSH);
+
+ if (trace) {
+ printf("DEFLATE returned %d %s, avail in %d, out %d\n", RETVAL,
+ GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out);
+ DispStream(s, "AFTER");
+ }
+
if (RETVAL != Z_OK)
break;
}
@@ -1027,6 +1045,8 @@ void
DESTROY(s)
Compress::Raw::Zlib::deflateStream s
CODE:
+ if (trace)
+ printf("Compress::Raw::Zlib::deflateStream::DESTROY %p\n", s);
deflateEnd(&s->stream) ;
if (s->dictionary)
SvREFCNT_dec(s->dictionary) ;
@@ -1063,7 +1083,7 @@ flush(s, output, f=Z_FINISH)
/* sv_setpvn(output, "", 0); */
}
prefix = cur_length = SvCUR(output) ;
- s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) + cur_length;
+ s->stream.next_out = (Bytef*) SvPVX(output) + cur_length;
increment = SvLEN(output) - cur_length;
s->stream.avail_out = increment;
#ifdef SETP_BYTE
@@ -1098,9 +1118,9 @@ flush(s, output, f=Z_FINISH)
for (;;) {
if (s->stream.avail_out == 0) {
/* consumed all the available output, so extend it */
- Sv_Grow(output, SvLEN(output) + bufinc) ;
+ s->stream.next_out = (Bytef*) Sv_Grow(output, SvLEN(output) + bufinc) ;
cur_length += increment ;
- s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) + cur_length ;
+ s->stream.next_out += cur_length ;
increment = bufinc ;
s->stream.avail_out = increment;
bufinc *= 2 ;
@@ -1108,8 +1128,20 @@ flush(s, output, f=Z_FINISH)
availableout = s->stream.avail_out ;
+ if (trace) {
+ printf("flush (%d) DEFLATE Avail In %d, Out %d\n", f, s->stream.avail_in, s->stream.avail_out);
+ DispStream(s, "BEFORE");
+ /* Perl_sv_dump(output); */
+ }
+
RETVAL = deflate(&(s->stream), f);
+ if (trace) {
+ printf("flush DEFLATE returned %d %s, avail in %d, out %d\n", RETVAL,
+ GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out);
+ DispStream(s, "AFTER");
+ }
+
/* Ignore the second of two consecutive flushes: */
if (availableout == s->stream.avail_out && RETVAL == Z_BUF_ERROR)
RETVAL = Z_OK;
@@ -1323,26 +1355,29 @@ inflate (s, buf, output, eof=FALSE)
uInt cur_length = 0;
uInt prefix_length = 0;
int increment = 0;
- STRLEN stmp = NO_INIT
- uLong bufinc = NO_INIT
+ uLong bufinc = NO_INIT
+ STRLEN na = NO_INIT ;
PREINIT:
#ifdef UTF8_AVAILABLE
bool out_utf8 = FALSE;
#endif
- CODE:
+ CODE:
bufinc = s->bufsize;
/* If the buffer is a reference, dereference it */
buf = deRef(buf, "inflate") ;
- if (s->flags & FLAG_CONSUME_INPUT && SvREADONLY(buf))
- croak("Compress::Raw::Zlib::Inflate::inflate input parameter cannot be read-only when ConsumeInput is specified");
+ if (s->flags & FLAG_CONSUME_INPUT) {
+ if (SvREADONLY(buf))
+ croak("Compress::Raw::Zlib::Inflate::inflate input parameter cannot be read-only when ConsumeInput is specified");
+ SvPV_force(buf, na);
+ }
#ifdef UTF8_AVAILABLE
if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1))
croak("Wide character in Compress::Raw::Zlib::Inflate::inflate input parameter");
#endif
/* initialise the input buffer */
- s->stream.next_in = (Bytef*)SvPVbyte_force(buf, stmp) ;
+ s->stream.next_in = (Bytef*)SvPV_nomg_nolen(buf) ;
s->stream.avail_in = SvCUR(buf) ;
/* and retrieve the output buffer */
@@ -1374,7 +1409,7 @@ inflate (s, buf, output, eof=FALSE)
*/
if (SvLEN(output) > cur_length + 1)
{
- s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) + cur_length;
+ s->stream.next_out = (Bytef*) SvPV_nomg_nolen(output) + cur_length;
increment = SvLEN(output) - cur_length - 1;
s->stream.avail_out = increment;
}
@@ -1388,9 +1423,9 @@ inflate (s, buf, output, eof=FALSE)
while (RETVAL == Z_OK) {
if (s->stream.avail_out == 0) {
/* out of space in the output buffer so make it bigger */
- Sv_Grow(output, SvLEN(output) + bufinc +1) ;
+ s->stream.next_out = (Bytef*) Sv_Grow(output, SvLEN(output) + bufinc +1) ;
cur_length += increment ;
- s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) + cur_length ;
+ s->stream.next_out += cur_length ;
increment = bufinc ;
s->stream.avail_out = increment;
bufinc *= 2 ;
@@ -1408,7 +1443,7 @@ Perl_sv_dump(output); */
if (RETVAL == Z_NEED_DICT && s->dictionary) {
s->dict_adler = s->stream.adler ;
RETVAL = inflateSetDictionary(&(s->stream),
- (const Bytef*)SvPVbyte_nolen(s->dictionary),
+ (const Bytef*)SvPVX(s->dictionary),
SvCUR(s->dictionary));
if (RETVAL == Z_OK)
continue;
@@ -1439,9 +1474,9 @@ Perl_sv_dump(output); */
s->stream.avail_in = 1;
if (s->stream.avail_out == 0) {
/* out of space in the output buffer so make it bigger */
- Sv_Grow(output, SvLEN(output) + bufinc) ;
+ s->stream.next_out = Sv_Grow(output, SvLEN(output) + bufinc) ;
cur_length += increment ;
- s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) + cur_length ;
+ s->stream.next_out += cur_length ;
increment = bufinc ;
s->stream.avail_out = increment;
bufinc *= 2 ;
@@ -1471,12 +1506,12 @@ Perl_sv_dump(output); */
if (s->flags & FLAG_CRC32 )
s->crc32 = crc32(s->crc32,
- (const Bytef*)SvPVbyte_nolen(output)+prefix_length,
+ (const Bytef*)SvPVX(output)+prefix_length,
SvCUR(output)-prefix_length) ;
if (s->flags & FLAG_ADLER32)
s->adler32 = adler32(s->adler32,
- (const Bytef*)SvPVbyte_nolen(output)+prefix_length,
+ (const Bytef*)SvPVX(output)+prefix_length,
SvCUR(output)-prefix_length) ;
/* fix the input buffer */
@@ -1484,7 +1519,7 @@ Perl_sv_dump(output); */
in = s->stream.avail_in ;
SvCUR_set(buf, in) ;
if (in)
- Move(s->stream.next_in, SvPVbyte_nolen(buf), in, char) ;
+ Move(s->stream.next_in, SvPVX(buf), in, char) ;
*SvEND(buf) = '\0';
SvSETMAGIC(buf);
}
@@ -1532,7 +1567,7 @@ inflateSync (s, buf)
#endif
/* initialise the input buffer */
- s->stream.next_in = (Bytef*)SvPVbyte_nolen(buf) ;
+ s->stream.next_in = (Bytef*)SvPV_nomg_nolen(buf) ;
s->stream.avail_in = SvCUR(buf) ;
/* inflateSync doesn't create any output */
@@ -1547,7 +1582,7 @@ inflateSync (s, buf)
unsigned in = s->stream.avail_in ;
SvCUR_set(buf, in) ;
if (in)
- Move(s->stream.next_in, SvPVbyte_nolen(buf), in, char) ;
+ Move(s->stream.next_in, SvPVX(buf), in, char) ;
*SvEND(buf) = '\0';
SvSETMAGIC(buf);
}
@@ -1693,7 +1728,6 @@ scan(s, buf, out=NULL, eof=FALSE)
bool eof
bool eof_mode = FALSE;
int start_len = NO_INIT
- STRLEN stmp = NO_INIT
CODE:
/* If the input buffer is a reference, dereference it */
#ifndef MAGIC_APPEND
@@ -1706,7 +1740,7 @@ scan(s, buf, out=NULL, eof=FALSE)
croak("Wide character in Compress::Raw::Zlib::InflateScan::scan input parameter");
#endif
/* initialise the input buffer */
- s->stream.next_in = (Bytef*)SvPVbyte_force(buf, stmp) ;
+ s->stream.next_in = (Bytef*)SvPV_nomg_nolen(buf) ;
s->stream.avail_in = SvCUR(buf) ;
start_len = s->stream.avail_in ;
s->bytesInflated = 0 ;
@@ -1791,7 +1825,7 @@ scan(s, buf, out=NULL, eof=FALSE)
unsigned in = s->stream.avail_in ;
SvCUR_set(buf, in) ;
if (in)
- Move(s->stream.next_in, SvPVbyte_nolen(buf), in, char) ;
+ Move(s->stream.next_in, SvPVX(buf), in, char) ;
*SvEND(buf) = '\0';
SvSETMAGIC(buf);
}
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm
index 3a4bcfffda6..acf599daa25 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm
@@ -11,7 +11,7 @@ use warnings ;
use bytes ;
our ($VERSION, $XS_VERSION, @ISA, @EXPORT, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD, %DEFLATE_CONSTANTS, @DEFLATE_CONSTANTS );
-$VERSION = '2.048';
+$VERSION = '2.060';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -138,10 +138,10 @@ use constant Parse_any => 0x01;
use constant Parse_unsigned => 0x02;
use constant Parse_signed => 0x04;
use constant Parse_boolean => 0x08;
-use constant Parse_string => 0x10;
-use constant Parse_custom => 0x12;
+#use constant Parse_string => 0x10;
+#use constant Parse_custom => 0x12;
-use constant Parse_store_ref => 0x100 ;
+#use constant Parse_store_ref => 0x100 ;
use constant OFF_PARSED => 0 ;
use constant OFF_TYPE => 1 ;
@@ -297,14 +297,14 @@ sub Compress::Raw::Zlib::Parameters::_checkType
#local $Carp::CarpLevel = $level ;
#print "PARSE $type $key $value $validate $sub\n" ;
- if ( $type & Parse_store_ref)
- {
- #$value = $$value
- # if ref ${ $value } ;
-
- $$output = $value ;
- return 1;
- }
+# if ( $type & Parse_store_ref)
+# {
+# #$value = $$value
+# # if ref ${ $value } ;
+#
+# $$output = $value ;
+# return 1;
+# }
$value = $$value ;
@@ -340,11 +340,11 @@ sub Compress::Raw::Zlib::Parameters::_checkType
$$output = defined $value ? $value != 0 : 0 ;
return 1;
}
- elsif ($type & Parse_string)
- {
- $$output = defined $value ? $value : "" ;
- return 1;
- }
+# elsif ($type & Parse_string)
+# {
+# $$output = defined $value ? $value : "" ;
+# return 1;
+# }
$$output = $value ;
return 1;
@@ -375,24 +375,25 @@ sub Compress::Raw::Zlib::Parameters::value
return $self->{Got}{lc $name}[OFF_FIXED] ;
}
+our $OPTIONS_deflate =
+ {
+ 'AppendOutput' => [1, 1, Parse_boolean, 0],
+ 'CRC32' => [1, 1, Parse_boolean, 0],
+ 'ADLER32' => [1, 1, Parse_boolean, 0],
+ 'Bufsize' => [1, 1, Parse_unsigned, 4096],
+
+ 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()],
+ 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()],
+ 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()],
+ 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()],
+ 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()],
+ 'Dictionary' => [1, 1, Parse_any, ""],
+ };
+
sub Compress::Raw::Zlib::Deflate::new
{
my $pkg = shift ;
- my ($got) = ParseParameters(0,
- {
- 'AppendOutput' => [1, 1, Parse_boolean, 0],
- 'CRC32' => [1, 1, Parse_boolean, 0],
- 'ADLER32' => [1, 1, Parse_boolean, 0],
- 'Bufsize' => [1, 1, Parse_unsigned, 4096],
-
- 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()],
- 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()],
- 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()],
- 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()],
- 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()],
- 'Dictionary' => [1, 1, Parse_any, ""],
- }, @_) ;
-
+ my ($got) = ParseParameters(0, $OPTIONS_deflate, @_);
croak "Compress::Raw::Zlib::Deflate::new: Bufsize must be >= 1, you specified " .
$got->value('Bufsize')
@@ -431,22 +432,23 @@ sub Compress::Raw::Zlib::deflateStream::STORABLE_thaw
}
+our $OPTIONS_inflate =
+ {
+ 'AppendOutput' => [1, 1, Parse_boolean, 0],
+ 'LimitOutput' => [1, 1, Parse_boolean, 0],
+ 'CRC32' => [1, 1, Parse_boolean, 0],
+ 'ADLER32' => [1, 1, Parse_boolean, 0],
+ 'ConsumeInput' => [1, 1, Parse_boolean, 1],
+ 'Bufsize' => [1, 1, Parse_unsigned, 4096],
+
+ 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()],
+ 'Dictionary' => [1, 1, Parse_any, ""],
+ } ;
+
sub Compress::Raw::Zlib::Inflate::new
{
my $pkg = shift ;
- my ($got) = ParseParameters(0,
- {
- 'AppendOutput' => [1, 1, Parse_boolean, 0],
- 'LimitOutput' => [1, 1, Parse_boolean, 0],
- 'CRC32' => [1, 1, Parse_boolean, 0],
- 'ADLER32' => [1, 1, Parse_boolean, 0],
- 'ConsumeInput' => [1, 1, Parse_boolean, 1],
- 'Bufsize' => [1, 1, Parse_unsigned, 4096],
-
- 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()],
- 'Dictionary' => [1, 1, Parse_any, ""],
- }, @_) ;
-
+ my ($got) = ParseParameters(0, $OPTIONS_inflate, @_);
croak "Compress::Raw::Zlib::Inflate::new: Bufsize must be >= 1, you specified " .
$got->value('Bufsize')
@@ -1452,9 +1454,10 @@ C<$input>.
=head1 ACCESSING ZIP FILES
Although it is possible (with some effort on your part) to use this module
-to access .zip files, there are other perl modules available that will
-do all the hard work for you. Check out C<Archive::Zip>,
-C<IO::Compress::Zip> and C<IO::Uncompress::Unzip>.
+to access .zip files, there are other perl modules available that will do
+all the hard work for you. Check out C<Archive::Zip>,
+C<Archive::Zip::SimpleZip>, C<IO::Compress::Zip> and
+C<IO::Uncompress::Unzip>.
=head1 FAQ
@@ -1589,7 +1592,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/02zlib.t b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/02zlib.t
index 6ce990d214d..2c9aad67152 100755
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/02zlib.t
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/02zlib.t
@@ -27,10 +27,10 @@ BEGIN
$count = 232 ;
}
elsif ($] >= 5.006) {
- $count = 310 ;
+ $count = 317 ;
}
else {
- $count = 268 ;
+ $count = 275 ;
}
plan tests => $count + $extra;
@@ -908,7 +908,7 @@ SKIP:
}
{
- title "repeated calls to flush";
+ title "repeated calls to flush after some compression";
my $hello = "I am a HAL 9000 computer" ;
my ($err, $x, $X, $status);
@@ -925,6 +925,21 @@ SKIP:
is $X, "", "no output from second flush";
}
+{
+ title "repeated calls to flush - no compression";
+
+ my $hello = "I am a HAL 9000 computer" ;
+ my ($err, $x, $X, $status);
+
+ ok( ($x, $err) = new Compress::Raw::Zlib::Deflate ( ), "Create deflate object" );
+ isa_ok $x, "Compress::Raw::Zlib::deflateStream" ;
+ cmp_ok $err, '==', Z_OK, "status is Z_OK" ;
+
+ cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "flush returned Z_OK" ;
+ cmp_ok $x->flush($X, Z_SYNC_FLUSH), '==', Z_OK, "second flush returned Z_OK" ;
+ is $X, "", "no output from second flush";
+}
+
exit if $] < 5.006 ;
title 'Looping Append test with substr output - substr the end of the string';
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/crc32.h b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/crc32.h
index 8053b6117c0..9e0c7781025 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/crc32.h
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/crc32.h
@@ -2,7 +2,7 @@
* Generated automatically by crc32.c
*/
-local const unsigned long FAR crc_table[TBLS][256] =
+local const z_crc_t FAR crc_table[TBLS][256] =
{
{
0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/infback.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/infback.c
index 4f0d7baccf0..60f78dc982a 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/infback.c
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/infback.c
@@ -1,5 +1,5 @@
/* infback.c -- inflate using a call-back interface
- * Copyright (C) 1995-2009 Mark Adler
+ * Copyright (C) 1995-2011 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -42,10 +42,19 @@ int ZEXPORT inflateBackInit_(
return Z_STREAM_ERROR;
strm->msg = Z_NULL; /* in case we return an error */
if (strm->zalloc == (alloc_func)0) {
+#ifdef Z_SOLO
+ return Z_STREAM_ERROR;
+#else
strm->zalloc = zcalloc;
strm->opaque = (voidpf)0;
+#endif
}
- if (strm->zfree == (free_func)0) strm->zfree = zcfree;
+ if (strm->zfree == (free_func)0)
+#ifdef Z_SOLO
+ return Z_STREAM_ERROR;
+#else
+ strm->zfree = zcfree;
+#endif
state = (struct inflate_state FAR *)ZALLOC(strm, 1,
sizeof(struct inflate_state));
if (state == Z_NULL) return Z_MEM_ERROR;
@@ -394,7 +403,6 @@ int ZEXPORT inflateBack(
PULLBYTE();
}
if (here.val < 16) {
- NEEDBITS(here.bits);
DROPBITS(here.bits);
state->lens[state->have++] = here.val;
}
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inffixed.h b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inffixed.h
index 75ed4b5978d..d6283277694 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inffixed.h
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inffixed.h
@@ -2,9 +2,9 @@
* Generated automatically by makefixed().
*/
- /* WARNING: this file should *not* be used by applications. It
- is part of the implementation of the compression library and
- is subject to change. Applications should only use zlib.h.
+ /* WARNING: this file should *not* be used by applications.
+ It is part of the implementation of this library and is
+ subject to change. Applications should only use zlib.h.
*/
static const code lenfix[512] = {
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inflate.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inflate.c
index 72dc4c1f335..77b2de89075 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inflate.c
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inflate.c
@@ -1,5 +1,5 @@
/* inflate.c -- zlib decompression
- * Copyright (C) 1995-2010 Mark Adler
+ * Copyright (C) 1995-2012 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -100,7 +100,7 @@ local int updatewindow OF((z_streamp strm, unsigned out));
local unsigned syncsearch OF((unsigned FAR *have, unsigned char FAR *buf,
unsigned len));
-int ZEXPORT inflateReset(
+int ZEXPORT inflateResetKeep(
z_streamp strm)
{
struct inflate_state FAR *state;
@@ -109,15 +109,13 @@ int ZEXPORT inflateReset(
state = (struct inflate_state FAR *)strm->state;
strm->total_in = strm->total_out = state->total = 0;
strm->msg = Z_NULL;
- strm->adler = 1; /* to support ill-conceived Java test suite */
+ if (state->wrap) /* to support ill-conceived Java test suite */
+ strm->adler = state->wrap & 1;
state->mode = HEAD;
state->last = 0;
state->havedict = 0;
state->dmax = 32768U;
state->head = Z_NULL;
- state->wsize = 0;
- state->whave = 0;
- state->wnext = 0;
state->hold = 0;
state->bits = 0;
state->lencode = state->distcode = state->next = state->codes;
@@ -127,6 +125,19 @@ int ZEXPORT inflateReset(
return Z_OK;
}
+int ZEXPORT inflateReset(
+ z_streamp strm)
+{
+ struct inflate_state FAR *state;
+
+ if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ state = (struct inflate_state FAR *)strm->state;
+ state->wsize = 0;
+ state->whave = 0;
+ state->wnext = 0;
+ return inflateResetKeep(strm);
+}
+
int ZEXPORT inflateReset2(
z_streamp strm,
int windowBits)
@@ -180,10 +191,19 @@ int ZEXPORT inflateInit2_(
if (strm == Z_NULL) return Z_STREAM_ERROR;
strm->msg = Z_NULL; /* in case we return an error */
if (strm->zalloc == (alloc_func)0) {
+#ifdef Z_SOLO
+ return Z_STREAM_ERROR;
+#else
strm->zalloc = zcalloc;
strm->opaque = (voidpf)0;
+#endif
}
- if (strm->zfree == (free_func)0) strm->zfree = zcfree;
+ if (strm->zfree == (free_func)0)
+#ifdef Z_SOLO
+ return Z_STREAM_ERROR;
+#else
+ strm->zfree = zcfree;
+#endif
state = (struct inflate_state FAR *)
ZALLOC(strm, 1, sizeof(struct inflate_state));
if (state == Z_NULL) return Z_MEM_ERROR;
@@ -321,8 +341,8 @@ void makefixed()
low = 0;
for (;;) {
if ((low % 7) == 0) printf("\n ");
- printf("{%u,%u,%d}", state.lencode[low].op, state.lencode[low].bits,
- state.lencode[low].val);
+ printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op,
+ state.lencode[low].bits, state.lencode[low].val);
if (++low == size) break;
putchar(',');
}
@@ -499,11 +519,6 @@ local int updatewindow(
bits -= bits & 7; \
} while (0)
-/* Reverse the bytes in a 32-bit value */
-#define REVERSE(q) \
- ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \
- (((q) & 0xff00) << 8) + (((q) & 0xff) << 24))
-
/*
inflate() uses a state machine to process as much input data and generate as
much output data as possible before returning. The state machine is
@@ -797,7 +812,7 @@ int ZEXPORT inflate(
#endif
case DICTID:
NEEDBITS(32);
- strm->adler = state->check = REVERSE(hold);
+ strm->adler = state->check = ZSWAP32(hold);
INITBITS();
state->mode = DICT;
case DICT:
@@ -925,7 +940,6 @@ int ZEXPORT inflate(
PULLBYTE();
}
if (here.val < 16) {
- NEEDBITS(here.bits);
DROPBITS(here.bits);
state->lens[state->have++] = here.val;
}
@@ -1170,7 +1184,7 @@ int ZEXPORT inflate(
#ifdef GUNZIP
state->flags ? hold :
#endif
- REVERSE(hold)) != state->check) {
+ ZSWAP32(hold)) != state->check) {
strm->msg = (char *)"incorrect data check";
state->mode = BAD;
break;
@@ -1214,7 +1228,8 @@ int ZEXPORT inflate(
*/
inf_leave:
RESTORE();
- if (state->wsize || (state->mode < CHECK && out != strm->avail_out))
+ if (state->wsize || (out != strm->avail_out && state->mode < BAD &&
+ (state->mode < CHECK || flush != Z_FINISH)))
if (updatewindow(strm, out)) {
state->mode = MEM;
return Z_MEM_ERROR;
@@ -1255,7 +1270,10 @@ int ZEXPORT inflateSetDictionary(
uInt dictLength)
{
struct inflate_state FAR *state;
- unsigned long id;
+ unsigned long dictid;
+ unsigned char *next;
+ unsigned avail;
+ int ret;
/* check state */
if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
@@ -1263,29 +1281,27 @@ int ZEXPORT inflateSetDictionary(
if (state->wrap != 0 && state->mode != DICT)
return Z_STREAM_ERROR;
- /* check for correct dictionary id */
+ /* check for correct dictionary identifier */
if (state->mode == DICT) {
- id = adler32(0L, Z_NULL, 0);
- id = adler32(id, dictionary, dictLength);
- if (id != state->check)
+ dictid = adler32(0L, Z_NULL, 0);
+ dictid = adler32(dictid, dictionary, dictLength);
+ if (dictid != state->check)
return Z_DATA_ERROR;
}
- /* copy dictionary to window */
- if (updatewindow(strm, strm->avail_out)) {
+ /* copy dictionary to window using updatewindow(), which will amend the
+ existing dictionary if appropriate */
+ next = strm->next_out;
+ avail = strm->avail_out;
+ strm->next_out = (Bytef *)dictionary + dictLength;
+ strm->avail_out = 0;
+ ret = updatewindow(strm, dictLength);
+ strm->avail_out = avail;
+ strm->next_out = next;
+ if (ret) {
state->mode = MEM;
return Z_MEM_ERROR;
}
- if (dictLength > state->wsize) {
- zmemcpy(state->window, dictionary + dictLength - state->wsize,
- state->wsize);
- state->whave = state->wsize;
- }
- else {
- zmemcpy(state->window + state->wsize - dictLength, dictionary,
- dictLength);
- state->whave = dictLength;
- }
state->havedict = 1;
Tracev((stderr, "inflate: dictionary set\n"));
return Z_OK;
@@ -1433,8 +1449,8 @@ int ZEXPORT inflateCopy(
}
/* copy state */
- zmemcpy(dest, source, sizeof(z_stream));
- zmemcpy(copy, state, sizeof(struct inflate_state));
+ zmemcpy((Bytef*)dest, (Bytef*)source, sizeof(z_stream));
+ zmemcpy((Bytef*)copy, (Bytef*)state, sizeof(struct inflate_state));
if (state->lencode >= state->codes &&
state->lencode <= state->codes + ENOUGH - 1) {
copy->lencode = copy->codes + (state->lencode - state->codes);
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inftrees.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inftrees.c
index b0b60f9702a..ed1082dc3bb 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inftrees.c
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inftrees.c
@@ -1,5 +1,5 @@
/* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2010 Mark Adler
+ * Copyright (C) 1995-2012 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -9,7 +9,7 @@
#define MAXBITS 15
const char inflate_copyright[] =
- " inflate 1.2.5 Copyright 1995-2010 Mark Adler ";
+ " inflate 1.2.7 Copyright 1995-2012 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -62,7 +62,7 @@ int ZLIB_INTERNAL inflate_table(
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 73, 195};
+ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 78, 68};
static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
@@ -289,38 +289,14 @@ int ZLIB_INTERNAL inflate_table(
}
}
- /*
- Fill in rest of table for incomplete codes. This loop is similar to the
- loop above in incrementing huff for table indices. It is assumed that
- len is equal to curr + drop, so there is no loop needed to increment
- through high index bits. When the current sub-table is filled, the loop
- drops back to the root table to fill in any remaining entries there.
- */
- here.op = (unsigned char)64; /* invalid code marker */
- here.bits = (unsigned char)(len - drop);
- here.val = (unsigned short)0;
- while (huff != 0) {
- /* when done with sub-table, drop back to root table */
- if (drop != 0 && (huff & mask) != low) {
- drop = 0;
- len = root;
- next = *table;
- here.bits = (unsigned char)len;
- }
-
- /* put invalid code marker in table */
- next[huff >> drop] = here;
-
- /* backwards increment the len-bit code huff */
- incr = 1U << (len - 1);
- while (huff & incr)
- incr >>= 1;
- if (incr != 0) {
- huff &= incr - 1;
- huff += incr;
- }
- else
- huff = 0;
+ /* fill in remaining table entry if code is incomplete (guaranteed to have
+ at most one remaining entry, since if the code is incomplete, the
+ maximum code length that was allowed to get this far is one bit) */
+ if (huff != 0) {
+ here.op = (unsigned char)64; /* invalid code marker */
+ here.bits = (unsigned char)(len - drop);
+ here.val = (unsigned short)0;
+ next[huff] = here;
}
/* set return parameters */
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zlib.h b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zlib.h
index bfbba83e8ee..3edf3acdb57 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zlib.h
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zlib.h
@@ -1,7 +1,7 @@
/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.5, April 19th, 2010
+ version 1.2.7, May 2nd, 2012
- Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
+ Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -24,8 +24,8 @@
The data format used by the zlib library is described by RFCs (Request for
- Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
- (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
+ Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950
+ (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
*/
#ifndef ZLIB_H
@@ -37,11 +37,11 @@
extern "C" {
#endif
-#define ZLIB_VERSION "1.2.5"
-#define ZLIB_VERNUM 0x1250
+#define ZLIB_VERSION "1.2.7"
+#define ZLIB_VERNUM 0x1270
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 5
+#define ZLIB_VER_REVISION 7
#define ZLIB_VER_SUBREVISION 0
/*
@@ -83,15 +83,15 @@ typedef void (*free_func) OF((voidpf opaque, voidpf address));
struct internal_state;
typedef struct z_stream_s {
- Bytef *next_in; /* next input byte */
+ z_const Bytef *next_in; /* next input byte */
uInt avail_in; /* number of bytes available at next_in */
- uLong total_in; /* total nb of input bytes read so far */
+ uLong total_in; /* total number of input bytes read so far */
Bytef *next_out; /* next output byte should be put there */
uInt avail_out; /* remaining free space at next_out */
- uLong total_out; /* total nb of bytes output so far */
+ uLong total_out; /* total number of bytes output so far */
- char *msg; /* last error message, NULL if no error */
+ z_const char *msg; /* last error message, NULL if no error */
struct internal_state FAR *state; /* not visible by applications */
alloc_func zalloc; /* used to allocate the internal state */
@@ -327,8 +327,9 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
Z_FINISH can be used immediately after deflateInit if all the compression
is to be done in a single step. In this case, avail_out must be at least the
- value returned by deflateBound (see below). If deflate does not return
- Z_STREAM_END, then it must be called again as described above.
+ value returned by deflateBound (see below). Then deflate is guaranteed to
+ return Z_STREAM_END. If not enough output space is provided, deflate will
+ not return Z_STREAM_END, and it must be called again as described above.
deflate() sets strm->adler to the adler32 checksum of all input read
so far (that is, total_in bytes).
@@ -451,23 +452,29 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
error. However if all decompression is to be performed in a single step (a
single call of inflate), the parameter flush should be set to Z_FINISH. In
this case all pending input is processed and all pending output is flushed;
- avail_out must be large enough to hold all the uncompressed data. (The size
- of the uncompressed data may have been saved by the compressor for this
- purpose.) The next operation on this stream must be inflateEnd to deallocate
- the decompression state. The use of Z_FINISH is never required, but can be
- used to inform inflate that a faster approach may be used for the single
- inflate() call.
+ avail_out must be large enough to hold all of the uncompressed data for the
+ operation to complete. (The size of the uncompressed data may have been
+ saved by the compressor for this purpose.) The use of Z_FINISH is not
+ required to perform an inflation in one step. However it may be used to
+ inform inflate that a faster approach can be used for the single inflate()
+ call. Z_FINISH also informs inflate to not maintain a sliding window if the
+ stream completes, which reduces inflate's memory footprint. If the stream
+ does not complete, either because not all of the stream is provided or not
+ enough output space is provided, then a sliding window will be allocated and
+ inflate() can be called again to continue the operation as if Z_NO_FLUSH had
+ been used.
In this implementation, inflate() always flushes as much output as
possible to the output buffer, and always uses the faster approach on the
- first call. So the only effect of the flush parameter in this implementation
- is on the return value of inflate(), as noted below, or when it returns early
- because Z_BLOCK or Z_TREES is used.
+ first call. So the effects of the flush parameter in this implementation are
+ on the return value of inflate() as noted below, when inflate() returns early
+ when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of
+ memory for a sliding window when Z_FINISH is used.
If a preset dictionary is needed after this call (see inflateSetDictionary
- below), inflate sets strm->adler to the adler32 checksum of the dictionary
+ below), inflate sets strm->adler to the Adler-32 checksum of the dictionary
chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
- strm->adler to the adler32 checksum of all output produced so far (that is,
+ strm->adler to the Adler-32 checksum of all output produced so far (that is,
total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
below. At the end of the stream, inflate() checks that its computed adler32
checksum is equal to that saved by the compressor and returns Z_STREAM_END
@@ -478,7 +485,9 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
initializing with inflateInit2(). Any information contained in the gzip
header is not retained, so applications that need that information should
instead use raw inflate, see inflateInit2() below, or inflateBack() and
- perform their own processing of the gzip header and trailer.
+ perform their own processing of the gzip header and trailer. When processing
+ gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output
+ producted so far. The CRC-32 is checked against the gzip trailer.
inflate() returns Z_OK if some progress has been made (more input processed
or more output produced), Z_STREAM_END if the end of the compressed data has
@@ -580,10 +589,15 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
uInt dictLength));
/*
Initializes the compression dictionary from the given byte sequence
- without producing any compressed output. This function must be called
- immediately after deflateInit, deflateInit2 or deflateReset, before any call
- of deflate. The compressor and decompressor must use exactly the same
- dictionary (see inflateSetDictionary).
+ without producing any compressed output. When using the zlib format, this
+ function must be called immediately after deflateInit, deflateInit2 or
+ deflateReset, and before any call of deflate. When doing raw deflate, this
+ function must be called either before any call of deflate, or immediately
+ after the completion of a deflate block, i.e. after all input has been
+ consumed and all output has been delivered when using any of the flush
+ options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The
+ compressor and decompressor must use exactly the same dictionary (see
+ inflateSetDictionary).
The dictionary should consist of strings (byte sequences) that are likely
to be encountered later in the data to be compressed, with the most commonly
@@ -610,8 +624,8 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is
inconsistent (for example if deflate has already been called for this stream
- or if the compression method is bsort). deflateSetDictionary does not
- perform any compression: this will be done by deflate().
+ or if not at a block boundary for raw deflate). deflateSetDictionary does
+ not perform any compression: this will be done by deflate().
*/
ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
@@ -688,8 +702,28 @@ ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
deflation of sourceLen bytes. It must be called after deflateInit() or
deflateInit2(), and after deflateSetHeader(), if used. This would be used
to allocate an output buffer for deflation in a single pass, and so would be
- called before deflate().
-*/
+ called before deflate(). If that first deflate() call is provided the
+ sourceLen input bytes, an output buffer allocated to the size returned by
+ deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed
+ to return Z_STREAM_END. Note that it is possible for the compressed size to
+ be larger than the value returned by deflateBound() if flush options other
+ than Z_FINISH or Z_NO_FLUSH are used.
+*/
+
+ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm,
+ unsigned *pending,
+ int *bits));
+/*
+ deflatePending() returns the number of bytes and bits of output that have
+ been generated, but not yet provided in the available output. The bytes not
+ provided would be due to the available output space having being consumed.
+ The number of bits of output not provided are between 0 and 7, where they
+ await more bits to join them in order to fill out a full byte. If pending
+ or bits are Z_NULL, then those values are not set.
+
+ deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source
+ stream state was inconsistent.
+ */
ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
int bits,
@@ -703,8 +737,9 @@ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
than or equal to 16, and that many of the least significant bits of value
will be inserted in the output.
- deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent.
+ deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough
+ room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the
+ source stream state was inconsistent.
*/
ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
@@ -790,10 +825,11 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
can be determined from the adler32 value returned by that call of inflate.
The compressor and decompressor must use exactly the same dictionary (see
- deflateSetDictionary). For raw inflate, this function can be called
- immediately after inflateInit2() or inflateReset() and before any call of
- inflate() to set the dictionary. The application must insure that the
- dictionary that was used for compression is provided.
+ deflateSetDictionary). For raw inflate, this function can be called at any
+ time to set the dictionary. If the provided dictionary is smaller than the
+ window and there is already data in the window, then the provided dictionary
+ will amend what's there. The application must insure that the dictionary
+ that was used for compression is provided.
inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is
@@ -805,17 +841,21 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
/*
- Skips invalid compressed data until a full flush point (see above the
- description of deflate with Z_FULL_FLUSH) can be found, or until all
+ Skips invalid compressed data until a possible full flush point (see above
+ for the description of deflate with Z_FULL_FLUSH) can be found, or until all
available input is skipped. No output is provided.
- inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
- if no more input was provided, Z_DATA_ERROR if no flush point has been
- found, or Z_STREAM_ERROR if the stream structure was inconsistent. In the
- success case, the application may save the current current value of total_in
- which indicates where valid compressed data was found. In the error case,
- the application may repeatedly call inflateSync, providing more input each
- time, until success or end of the input data.
+ inflateSync searches for a 00 00 FF FF pattern in the compressed data.
+ All full flush points have this pattern, but not all occurences of this
+ pattern are full flush points.
+
+ inflateSync returns Z_OK if a possible full flush point has been found,
+ Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point
+ has been found, or Z_STREAM_ERROR if the stream structure was inconsistent.
+ In the success case, the application may save the current current value of
+ total_in which indicates where valid compressed data was found. In the
+ error case, the application may repeatedly call inflateSync, providing more
+ input each time, until success or end of the input data.
*/
ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
@@ -962,7 +1002,7 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
See inflateBack() for the usage of these routines.
inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
- the paramaters are invalid, Z_MEM_ERROR if the internal state could not be
+ the parameters are invalid, Z_MEM_ERROR if the internal state could not be
allocated, or Z_VERSION_ERROR if the version of the library does not match
the version of the header file.
*/
@@ -1088,6 +1128,7 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
27-31: 0 (reserved)
*/
+#ifndef Z_SOLO
/* utility functions */
@@ -1149,10 +1190,11 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
enough memory, Z_BUF_ERROR if there was not enough room in the output
- buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.
+ buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In
+ the case where there is not enough room, uncompress() will fill the output
+ buffer with the uncompressed data up to that point.
*/
-
/* gzip file access functions */
/*
@@ -1162,7 +1204,7 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
wrapper, documented in RFC 1952, wrapped around a deflate stream.
*/
-typedef voidp gzFile; /* opaque gzip file descriptor */
+typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
/*
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
@@ -1172,13 +1214,28 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
for fixed code compression as in "wb9F". (See the description of
- deflateInit2 for more information about the strategy parameter.) Also "a"
- can be used instead of "w" to request that the gzip stream that will be
- written be appended to the file. "+" will result in an error, since reading
- and writing to the same gzip file is not supported.
+ deflateInit2 for more information about the strategy parameter.) 'T' will
+ request transparent writing or appending with no compression and not using
+ the gzip format.
+
+ "a" can be used instead of "w" to request that the gzip stream that will
+ be written be appended to the file. "+" will result in an error, since
+ reading and writing to the same gzip file is not supported. The addition of
+ "x" when writing will create the file exclusively, which fails if the file
+ already exists. On systems that support it, the addition of "e" when
+ reading or writing will set the flag to close the file on an execve() call.
+
+ These functions, as well as gzip, will read and decode a sequence of gzip
+ streams in a file. The append function of gzopen() can be used to create
+ such a file. (Also see gzflush() for another way to do this.) When
+ appending, gzopen does not test whether the file begins with a gzip stream,
+ nor does it look for the end of the gzip streams to begin appending. gzopen
+ will simply append a gzip stream to the existing file.
gzopen can be used to read a file which is not in gzip format; in this
- case gzread will directly read from the file without decompression.
+ case gzread will directly read from the file without decompression. When
+ reading, this will be detected automatically by looking for the magic two-
+ byte gzip header.
gzopen returns NULL if the file could not be opened, if there was
insufficient memory to allocate the gzFile state, or if an invalid mode was
@@ -1197,7 +1254,11 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd,
mode);. The duplicated descriptor should be saved to avoid a leak, since
- gzdopen does not close fd if it fails.
+ gzdopen does not close fd if it fails. If you are using fileno() to get the
+ file descriptor from a FILE *, then you will have to use dup() to avoid
+ double-close()ing the file descriptor. Both gzclose() and fclose() will
+ close the associated file descriptor, so they need to have different file
+ descriptors.
gzdopen returns NULL if there was insufficient memory to allocate the
gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not
@@ -1235,14 +1296,26 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
/*
Reads the given number of uncompressed bytes from the compressed file. If
- the input file was not in gzip format, gzread copies the given number of
- bytes into the buffer.
+ the input file is not in gzip format, gzread copies the given number of
+ bytes into the buffer directly from the file.
After reaching the end of a gzip stream in the input, gzread will continue
- to read, looking for another gzip stream, or failing that, reading the rest
- of the input file directly without decompression. The entire input file
- will be read if gzread is called until it returns less than the requested
- len.
+ to read, looking for another gzip stream. Any number of gzip streams may be
+ concatenated in the input file, and will all be decompressed by gzread().
+ If something other than a gzip stream is encountered after a gzip stream,
+ that remaining trailing garbage is ignored (and no error is returned).
+
+ gzread can be used to read a gzip file that is being concurrently written.
+ Upon reaching the end of the input, gzread will return with the available
+ data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then
+ gzclearerr can be used to clear the end of file indicator in order to permit
+ gzread to be tried again. Z_OK indicates that a gzip stream was completed
+ on the last gzread. Z_BUF_ERROR indicates that the input file ended in the
+ middle of a gzip stream. Note that gzread does not return -1 in the event
+ of an incomplete gzip stream. This error is deferred until gzclose(), which
+ will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip
+ stream. Alternatively, gzerror can be used before gzclose to detect this
+ case.
gzread returns the number of uncompressed bytes actually read, less than
len for end of file, or -1 for error.
@@ -1256,7 +1329,7 @@ ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
error.
*/
-ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
+ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
/*
Converts, formats, and writes the arguments to the compressed file under
control of the format string, as in fprintf. gzprintf returns the number of
@@ -1301,7 +1374,10 @@ ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
/*
Reads one byte from the compressed file. gzgetc returns this byte or -1
- in case of end of file or error.
+ in case of end of file or error. This is implemented as a macro for speed.
+ As such, it does not do all of the checking the other functions do. I.e.
+ it does not check to see if file is NULL, nor whether the structure file
+ points to has been clobbered or not.
*/
ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
@@ -1397,9 +1473,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file));
ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
/*
Returns true (1) if file is being copied directly while reading, or false
- (0) if file is a gzip stream being decompressed. This state can change from
- false to true while reading the input file if the end of a gzip stream is
- reached, but is followed by data that is not another gzip stream.
+ (0) if file is a gzip stream being decompressed.
If the input file is empty, gzdirect() will return true, since the input
does not contain a gzip stream.
@@ -1408,6 +1482,13 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
cause buffers to be allocated to allow reading the file to determine if it
is a gzip file. Therefore if gzbuffer() is used, it should be called before
gzdirect().
+
+ When writing, gzdirect() returns true (1) if transparent writing was
+ requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note:
+ gzdirect() is not needed when writing. Transparent writing must be
+ explicitly requested, so the application already knows the answer. When
+ linking statically, using gzdirect() will include all of the zlib code for
+ gzip file reading and decompression, which may not be desired.)
*/
ZEXTERN int ZEXPORT gzclose OF((gzFile file));
@@ -1419,7 +1500,8 @@ ZEXTERN int ZEXPORT gzclose OF((gzFile file));
must not be called more than once on the same allocation.
gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a
- file operation error, or Z_OK on success.
+ file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the
+ last read ended in the middle of a gzip stream, or Z_OK on success.
*/
ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
@@ -1457,6 +1539,7 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
file that is being written concurrently.
*/
+#endif /* !Z_SOLO */
/* checksum functions */
@@ -1492,16 +1575,17 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
Combine two Adler-32 checksums into one. For two sequences of bytes, seq1
and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of
- seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
+ seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note
+ that the z_off_t type (like off_t) is a signed integer. If len2 is
+ negative, the result has no meaning or utility.
*/
ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
/*
Update a running CRC-32 with the bytes buf[0..len-1] and return the
updated CRC-32. If buf is Z_NULL, this function returns the required
- initial value for the for the crc. Pre- and post-conditioning (one's
- complement) is performed within this function so it shouldn't be done by the
- application.
+ initial value for the crc. Pre- and post-conditioning (one's complement) is
+ performed within this function so it shouldn't be done by the application.
Usage example:
@@ -1544,17 +1628,42 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
const char *version,
int stream_size));
#define deflateInit(strm, level) \
- deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
+ deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
#define inflateInit(strm) \
- inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
+ inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream))
#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
- (strategy), ZLIB_VERSION, sizeof(z_stream))
+ (strategy), ZLIB_VERSION, (int)sizeof(z_stream))
#define inflateInit2(strm, windowBits) \
- inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
+ inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
+ (int)sizeof(z_stream))
#define inflateBackInit(strm, windowBits, window) \
inflateBackInit_((strm), (windowBits), (window), \
- ZLIB_VERSION, sizeof(z_stream))
+ ZLIB_VERSION, (int)sizeof(z_stream))
+
+#ifndef Z_SOLO
+
+/* gzgetc() macro and its supporting function and exposed data structure. Note
+ * that the real internal state is much larger than the exposed structure.
+ * This abbreviated structure exposes just enough for the gzgetc() macro. The
+ * user should not mess with these exposed elements, since their names or
+ * behavior could change in the future, perhaps even capriciously. They can
+ * only be used by the gzgetc() macro. You have been warned.
+ */
+struct gzFile_s {
+ unsigned have;
+ unsigned char *next;
+ z_off64_t pos;
+};
+ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
+#ifdef Z_PREFIX_SET
+# undef z_gzgetc
+# define z_gzgetc(g) \
+ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
+#else
+# define gzgetc(g) \
+ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
+#endif
/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or
* change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if
@@ -1562,7 +1671,7 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
* functions are changed to 64 bits) -- in case these are set on systems
* without large file support, _LFS64_LARGEFILE must also be true
*/
-#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
+#ifdef Z_LARGE64
ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
@@ -1571,14 +1680,23 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
#endif
-#if !defined(ZLIB_INTERNAL) && _FILE_OFFSET_BITS-0 == 64 && _LFS64_LARGEFILE-0
-# define gzopen gzopen64
-# define gzseek gzseek64
-# define gztell gztell64
-# define gzoffset gzoffset64
-# define adler32_combine adler32_combine64
-# define crc32_combine crc32_combine64
-# ifdef _LARGEFILE64_SOURCE
+#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
+# ifdef Z_PREFIX_SET
+# define z_gzopen z_gzopen64
+# define z_gzseek z_gzseek64
+# define z_gztell z_gztell64
+# define z_gzoffset z_gzoffset64
+# define z_adler32_combine z_adler32_combine64
+# define z_crc32_combine z_crc32_combine64
+# else
+# define gzopen gzopen64
+# define gzseek gzseek64
+# define gztell gztell64
+# define gzoffset gzoffset64
+# define adler32_combine adler32_combine64
+# define crc32_combine crc32_combine64
+# endif
+# ifndef Z_LARGE64
ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int));
ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile));
@@ -1595,6 +1713,13 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
#endif
+#else /* Z_SOLO */
+
+ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+
+#endif /* !Z_SOLO */
+
/* hack for buggy compilers */
#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
struct internal_state {int dummy;};
@@ -1603,8 +1728,14 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
/* undocumented functions */
ZEXTERN const char * ZEXPORT zError OF((int));
ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp));
-ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void));
+ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void));
ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int));
+ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp));
+ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
+#if defined(_WIN32) && !defined(Z_SOLO)
+ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
+ const char *mode));
+#endif
#ifdef __cplusplus
}
diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/V.pm b/gnu/usr.bin/perl/cpan/Config-Perl-V/V.pm
new file mode 100644
index 00000000000..c52b82608cf
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/V.pm
@@ -0,0 +1,509 @@
+#!/pro/bin/perl
+
+package Config::Perl::V;
+
+use strict;
+use warnings;
+
+use Config;
+use Exporter;
+use vars qw($VERSION @ISA @EXPORT_OK %EXPORT_TAGS);
+$VERSION = "0.17";
+@ISA = ("Exporter");
+@EXPORT_OK = qw( plv2hash summary myconfig signature );
+%EXPORT_TAGS = (
+ all => [ @EXPORT_OK ],
+ sig => [ "signature" ],
+ );
+
+# Characteristics of this binary (from libperl):
+# Compile-time options: DEBUGGING PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
+# USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO
+
+# The list are as the perl binary has stored it in PL_bincompat_options
+# search for it in
+# perl.c line 1661 S_Internals_V ()
+# perl.h line 4664 (second block),
+my %BTD = map { $_ => 0 } qw(
+
+ DEBUGGING
+ NO_MATHOMS
+ PERL_DISABLE_PMC
+ PERL_DONT_CREATE_GVSV
+ PERL_IS_MINIPERL
+ PERL_MALLOC_WRAP
+ PERL_MEM_LOG
+ PERL_MEM_LOG_ENV
+ PERL_MEM_LOG_ENV_FD
+ PERL_MEM_LOG_NOIMPL
+ PERL_MEM_LOG_STDERR
+ PERL_MEM_LOG_TIMESTAMP
+ PERL_PRESERVE_IVUV
+ PERL_RELOCATABLE_INCPUSH
+ PERL_USE_DEVEL
+ PERL_USE_SAFE_PUTENV
+ UNLINK_ALL_VERSIONS
+ USE_ATTRIBUTES_FOR_PERLIO
+ USE_FAST_STDIO
+ USE_LOCALE
+ USE_PERL_ATOF
+ USE_SITECUSTOMIZE
+
+ DEBUG_LEAKING_SCALARS
+ DEBUG_LEAKING_SCALARS_FORK_DUMP
+ DECCRTL_SOCKETS
+ FAKE_THREADS
+ FCRYPT
+ HAS_TIMES
+ MULTIPLICITY
+ MYMALLOC
+ PERLIO_LAYERS
+ PERL_DEBUG_READONLY_OPS
+ PERL_GLOBAL_STRUCT
+ PERL_IMPLICIT_CONTEXT
+ PERL_IMPLICIT_SYS
+ PERL_MAD
+ PERL_MICRO
+ PERL_NEED_APPCTX
+ PERL_NEED_TIMESBASE
+ PERL_OLD_COPY_ON_WRITE
+ PERL_NEW_COPY_ON_WRITE
+ PERL_POISON
+ PERL_SAWAMPERSAND
+ PERL_TRACK_MEMPOOL
+ PERL_USES_PL_PIDSTATUS
+ PL_OP_SLAB_ALLOC
+ THREADS_HAVE_PIDS
+ USE_64_BIT_ALL
+ USE_64_BIT_INT
+ USE_IEEE
+ USE_ITHREADS
+ USE_LARGE_FILES
+ USE_LOCALE_COLLATE
+ USE_LOCALE_NUMERIC
+ USE_LONG_DOUBLE
+ USE_PERLIO
+ USE_REENTRANT_API
+ USE_SFIO
+ USE_SOCKS
+ VMS_DO_SOCKETS
+ VMS_SHORTEN_LONG_SYMBOLS
+ VMS_SYMBOL_CASE_AS_IS
+ );
+
+# These are all the keys that are
+# 1. Always present in %Config (first block)
+# 2. Reported by 'perl -V' (the rest)
+my @config_vars = qw(
+
+ api_subversion
+ api_version
+ api_versionstring
+ archlibexp
+ dont_use_nlink
+ d_readlink
+ d_symlink
+ exe_ext
+ inc_version_list
+ ldlibpthname
+ patchlevel
+ path_sep
+ perl_patchlevel
+ privlibexp
+ scriptdir
+ sitearchexp
+ sitelibexp
+ subversion
+ usevendorprefix
+ version
+
+ git_commit_id
+ git_describe
+ git_branch
+ git_uncommitted_changes
+ git_commit_id_title
+ git_snapshot_date
+
+ package revision version_patchlevel_string
+
+ osname osvers archname
+ myuname
+ config_args
+ hint useposix d_sigaction
+ useithreads usemultiplicity
+ useperlio d_sfio uselargefiles usesocks
+ use64bitint use64bitall uselongdouble
+ usemymalloc bincompat5005
+
+ cc ccflags
+ optimize
+ cppflags
+ ccversion gccversion gccosandvers
+ intsize longsize ptrsize doublesize byteorder
+ d_longlong longlongsize d_longdbl longdblsize
+ ivtype ivsize nvtype nvsize lseektype lseeksize
+ alignbytes prototype
+
+ ld ldflags
+ libpth
+ libs
+ perllibs
+ libc so useshrplib libperl
+ gnulibc_version
+
+ dlsrc dlext d_dlsymun ccdlflags
+ cccdlflags lddlflags
+ );
+
+my %empty_build = (
+ osname => "",
+ stamp => 0,
+ options => { %BTD },
+ patches => [],
+ );
+
+sub _make_derived
+{
+ my $conf = shift;
+
+ for ( [ lseektype => "Off_t" ],
+ [ myuname => "uname" ],
+ [ perl_patchlevel => "patch" ],
+ ) {
+ my ($official, $derived) = @$_;
+ $conf->{config}{$derived} ||= $conf->{config}{$official};
+ $conf->{config}{$official} ||= $conf->{config}{$derived};
+ $conf->{derived}{$derived} = delete $conf->{config}{$derived};
+ }
+
+ if (exists $conf->{config}{version_patchlevel_string} &&
+ !exists $conf->{config}{api_version}) {
+ my $vps = $conf->{config}{version_patchlevel_string};
+ $vps =~ s{\b revision \s+ (\S+) }{}x and
+ $conf->{config}{revision} ||= $1;
+
+ $vps =~ s{\b version \s+ (\S+) }{}x and
+ $conf->{config}{api_version} ||= $1;
+ $vps =~ s{\b subversion \s+ (\S+) }{}x and
+ $conf->{config}{subversion} ||= $1;
+ $vps =~ s{\b patch \s+ (\S+) }{}x and
+ $conf->{config}{perl_patchlevel} ||= $1;
+ }
+
+ ($conf->{config}{version_patchlevel_string} ||= join " ",
+ map { ($_, $conf->{config}{$_} ) }
+ grep { $conf->{config}{$_} }
+ qw( api_version subversion perl_patchlevel )) =~ s/\bperl_//;
+
+ $conf->{config}{perl_patchlevel} ||= ""; # 0 is not a valid patchlevel
+
+ if ($conf->{config}{perl_patchlevel} =~ m{^git\w*-([^-]+)}i) {
+ $conf->{config}{git_branch} ||= $1;
+ $conf->{config}{git_describe} ||= $conf->{config}{perl_patchlevel};
+ }
+
+ $conf;
+ } # _make_derived
+
+sub plv2hash
+{
+ my %config;
+ for (split m/\n+/ => join "\n", @_) {
+
+ if (s/^Summary of my\s+(\S+)\s+\(\s*(.*?)\s*\)//) {
+ $config{"package"} = $1;
+ my $rev = $2;
+ $rev =~ s/^ revision \s+ (\S+) \s*//x and $config{revision} = $1;
+ $rev and $config{version_patchlevel_string} = $rev;
+ my ($rel) = $config{package} =~ m{perl(\d)};
+ my ($vers, $subvers) = $rev =~ m{version\s+(\d+)\s+subversion\s+(\d+)};
+ defined $vers && defined $subvers && defined $rel and
+ $config{version} = "$rel.$vers.$subvers";
+ next;
+ }
+
+ if (s/^\s+(Snapshot of:)\s+(\S+)//) {
+ $config{git_commit_id_title} = $1;
+ $config{git_commit_id} = $2;
+ next;
+ }
+
+ my %kv = m/\G,?\s*([^=]+)=('[^']+?'|\S+)/gc;
+
+ while (my ($k, $v) = each %kv) {
+ $k =~ s/\s+$//;
+ $v =~ s/,$//;
+ $v =~ m/^'(.*)'$/ and $v = $1;
+ $v =~ s/^\s+//;
+ $v =~ s/\s+$//;
+ $config{$k} = $v;
+ }
+ }
+ my $build = { %empty_build };
+ $build->{osname} = $config{osname};
+ return _make_derived ({
+ build => $build,
+ environment => {},
+ config => \%config,
+ derived => {},
+ inc => [],
+ });
+ } # plv2hash
+
+sub summary
+{
+ my $conf = shift || myconfig ();
+ ref $conf eq "HASH" &&
+ exists $conf->{config} && exists $conf->{build} or return;
+
+ my %info = map {
+ exists $conf->{config}{$_} ? ( $_ => $conf->{config}{$_} ) : () }
+ qw( archname osname osvers revision patchlevel subversion version
+ cc ccversion gccversion config_args inc_version_list
+ d_longdbl d_longlong use64bitall use64bitint useithreads
+ uselongdouble usemultiplicity usemymalloc useperlio useshrplib
+ doublesize intsize ivsize nvsize longdblsize longlongsize lseeksize
+ );
+ $info{$_}++ for grep { $conf->{build}{options}{$_} } keys %{$conf->{build}{options}};
+
+ return \%info;
+ } # summary
+
+sub signature
+{
+ eval { require Digest::MD5 };
+ $@ and return "00000000000000000000000000000000";
+
+ my $conf = shift || summary ();
+ delete $conf->{config_args};
+ return Digest::MD5::md5_hex (join "\xFF" => map {
+ "$_=".(defined $conf->{$_} ? $conf->{$_} : "\xFE");
+ } sort keys %$conf);
+ } # signature
+
+sub myconfig
+{
+ my $args = shift;
+ my %args = ref $args eq "HASH" ? %$args :
+ ref $args eq "ARRAY" ? @$args : ();
+
+ my $build = { %empty_build };
+
+ # 5.14.0 and later provide all the information without shelling out
+ my $stamp = eval { Config::compile_date () };
+ if (defined $stamp) {
+ $stamp =~ s/^Compiled at //;
+ $build->{osname} = $^O;
+ $build->{stamp} = $stamp;
+ $build->{patches} = [ Config::local_patches () ];
+ $build->{options}{$_} = 1 for Config::bincompat_options (),
+ Config::non_bincompat_options ();
+ }
+ else {
+ #y $pv = qx[$^X -e"sub Config::myconfig{};" -V];
+ my $pv = qx[$^X -V];
+ $pv =~ s{.*?\n\n}{}s;
+ $pv =~ s{\n(?: \s+|\t\s*)}{\0}g;
+
+ # print STDERR $pv;
+
+ $pv =~ m{^\s+Built under\s+(.*)}m
+ and $build->{osname} = $1;
+ $pv =~ m{^\s+Compiled at\s+(.*)}m
+ and $build->{stamp} = $1;
+ $pv =~ m{^\s+Locally applied patches:(?:\s+|\0)(.*)}m
+ and $build->{patches} = [ split m/\0+/, $1 ];
+ $pv =~ m{^\s+Compile-time options:(?:\s+|\0)(.*)}m
+ and map { $build->{options}{$_} = 1 } split m/\s+|\0/ => $1;
+ }
+
+ my @KEYS = keys %ENV;
+ my %env =
+ map { $_ => $ENV{$_} } grep m/^PERL/ => @KEYS;
+ $args{env} and
+ map { $env{$_} = $ENV{$_} } grep m{$args{env}} => @KEYS;
+
+ my %config = map { $_ => $Config{$_} } @config_vars;
+
+ return _make_derived ({
+ build => $build,
+ environment => \%env,
+ config => \%config,
+ derived => {},
+ inc => \@INC,
+ });
+ } # myconfig
+
+1;
+
+__END__
+
+=head1 NAME
+
+Config::Perl::V - Structured data retrieval of perl -V output
+
+=head1 SYNOPSIS
+
+ use Config::Perl::V;
+
+ my $local_config = Config::Perl::V::myconfig ();
+ print $local_config->{config}{osname};
+
+=head1 DESCRIPTION
+
+=head2 $conf = myconfig ()
+
+This function will collect the data described in L<the hash structure> below,
+and return that as a hash reference. It optionally accepts an option to
+include more entries from %ENV. See L<environment> below.
+
+Note that this will not work on uninstalled perls when called with
+C<-I/path/to/uninstalled/perl/lib>, but it works when that path is in
+C<$PERL5LIB> or in C<$PERL5OPT>, as paths passed using C<-I> are not
+known when the C<-V> information is collected.
+
+=head2 $conf = plv2hash ($text [, ...])
+
+Convert a sole 'perl -V' text block, or list of lines, to a complete
+myconfig hash. All unknown entries are defaulted.
+
+=head2 $info = summary ([$conf])
+
+Return an arbitrary selection of the information. If no C<$conf> is
+given, C<myconfig ()> is used instead.
+
+=head2 $md5 = signature ([$conf])
+
+Return the MD5 of the info returned by C<summary ()> without the
+C<config_args> entry.
+
+If C<Digest::MD5> is not available, it return a string with only C<0>'s.
+
+=head2 The hash structure
+
+The returned hash consists of 4 parts:
+
+=over 4
+
+=item build
+
+This information is extracted from the second block that is emitted by
+C<perl -V>, and usually looks something like
+
+ Characteristics of this binary (from libperl):
+ Compile-time options: DEBUGGING USE_64_BIT_INT USE_LARGE_FILES
+ Locally applied patches:
+ defined-or
+ MAINT24637
+ Built under linux
+ Compiled at Jun 13 2005 10:44:20
+ @INC:
+ /usr/lib/perl5/5.8.7/i686-linux-64int
+ /usr/lib/perl5/5.8.7
+ /usr/lib/perl5/site_perl/5.8.7/i686-linux-64int
+ /usr/lib/perl5/site_perl/5.8.7
+ /usr/lib/perl5/site_perl
+ .
+
+or
+
+ Characteristics of this binary (from libperl):
+ Compile-time options: DEBUGGING MULTIPLICITY
+ PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT
+ PERL_MALLOC_WRAP PERL_TRACK_MEMPOOL
+ PERL_USE_SAFE_PUTENV USE_ITHREADS
+ USE_LARGE_FILES USE_PERLIO
+ USE_REENTRANT_API
+ Built under linux
+ Compiled at Jan 28 2009 15:26:59
+
+This information is not available anywhere else, including C<%Config>,
+but it is the information that is only known to the perl binary.
+
+The extracted information is stored in 5 entries in the C<build> hash:
+
+=over 4
+
+=item osname
+
+This is most likely the same as C<$Config{osname}>, and was the name
+known when perl was built. It might be different if perl was cross-compiled.
+
+The default for this field, if it cannot be extracted, is to copy
+C<$Config{osname}>. The two may be differing in casing (OpenBSD vs openbsd).
+
+=item stamp
+
+This is the time string for which the perl binary was compiled. The default
+value is 0.
+
+=item options
+
+This is a hash with all the known defines as keys. The value is either 0,
+which means unknown or unset, or 1, which means defined.
+
+=item derived
+
+As some variables are reported by a different name in the output of C<perl -V>
+than their actual name in C<%Config>, I decided to leave the C<config> entry
+as close to reality as possible, and put in the entries that might have been
+guessed by the printed output in a separate block.
+
+=item patches
+
+This is a list of optionally locally applied patches. Default is an empty list.
+
+=back
+
+=item environment
+
+By default this hash is only filled with the environment variables
+out of %ENV that start with C<PERL>, but you can pass the C<env> option
+to myconfig to get more
+
+ my $conf = Config::Perl::V::myconfig ({ env => qr/^ORACLE/ });
+ my $conf = Config::Perl::V::myconfig ([ env => qr/^ORACLE/ ]);
+
+=item config
+
+This hash is filled with the variables that C<perl -V> fills its report
+with, and it has the same variables that C<Config::myconfig> returns
+from C<%Config>.
+
+=item inc
+
+This is the list of default @INC.
+
+=back
+
+=head1 REASONING
+
+This module was written to be able to return the configuration for the
+currently used perl as deeply as needed for the CPANTESTERS framework.
+Up until now they used the output of myconfig as a single text blob,
+and so it was missing the vital binary characteristics of the running
+perl and the optional applied patches.
+
+=head1 BUGS
+
+Please feedback what is wrong
+
+=head1 TODO
+
+ * Implement retrieval functions/methods
+ * Documentation
+ * Error checking
+ * Tests
+
+=head1 AUTHOR
+
+H.Merijn Brand <h.m.brand@xs4all.nl>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2009-2013 H.Merijn Brand
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/00_pod.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/00_pod.t
new file mode 100644
index 00000000000..67d08157233
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/00_pod.t
@@ -0,0 +1,7 @@
+#!/usr/bin/perl
+
+use Test::More;
+
+eval "use Test::Pod 1.00";
+plan skip_all => "Test::Pod 1.00 required for testing POD" if $@;
+all_pod_files_ok ();
diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/01_pod.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/01_pod.t
new file mode 100644
index 00000000000..c99abc7b444
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/01_pod.t
@@ -0,0 +1,7 @@
+#!/usr/bin/perl
+
+use Test::More;
+
+eval "use Test::Pod::Coverage tests => 1";
+plan skip_all => "Test::Pod::Covarage required for testing POD Coverage" if $@;
+pod_coverage_ok ("Config::Perl::V", "Config::Perl::V is covered");
diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/10_base.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/10_base.t
new file mode 100644
index 00000000000..b840ef58cd1
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/10_base.t
@@ -0,0 +1,35 @@
+#!/pro/bin/perl
+
+use strict;
+use warnings;
+
+BEGIN {
+ use Test::More;
+ my $tests = 9;
+ unless ($ENV{PERL_CORE}) {
+ require Test::NoWarnings;
+ Test::NoWarnings->import ();
+ $tests++;
+ }
+
+ plan tests => $tests;
+
+ use_ok ("Config::Perl::V");
+ }
+
+ok (my $conf = Config::Perl::V::myconfig, "Read config");
+for (qw( build environment config inc )) {
+ ok (exists $conf->{build}, "Has build entry");
+ }
+is (lc $conf->{build}{osname}, lc $conf->{config}{osname}, "osname");
+
+SKIP: {
+ # Test that the code that shells out to perl -V and parses the output
+ # gives the same results as the code that calls Config::* routines directly.
+ defined &Config::compile_date or
+ skip "This perl doesn't provide perl -V in the Config module", 2;
+ eval q{no warnings "redefine"; sub Config::compile_date { return undef }};
+ is (Config::compile_date (), undef, "Successfully overriden compile_date");
+ is_deeply (Config::Perl::V::myconfig, $conf,
+ "perl -V parsing code produces same result as the Config module");
+ }
diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/20_plv.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/20_plv.t
new file mode 100644
index 00000000000..a739490d3bb
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/20_plv.t
@@ -0,0 +1,57 @@
+#!/pro/bin/perl
+
+use strict;
+use warnings;
+
+BEGIN {
+ use Test::More;
+ my $tests = 8;
+ unless ($ENV{PERL_CORE}) {
+ require Test::NoWarnings;
+ Test::NoWarnings->import ();
+ $tests++;
+ }
+
+ plan tests => $tests;
+ }
+
+use Config::Perl::V;
+
+ok (my $conf = Config::Perl::V::plv2hash (<DATA>), "Read perl -v block");
+for (qw( build environment config inc )) {
+ ok (exists $conf->{build}, "Has build entry");
+ }
+is ($conf->{build}{osname}, $conf->{config}{osname}, "osname");
+is ($conf->{build}{stamp}, 0, "No build time known");
+is ($conf->{config}{version}, "5.10.0", "reconstructed \%Config{version}");
+
+__END__
+Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
+ Platform:
+ osname=linux, osvers=2.6.22.13-0.3-default, archname=i686-linux-64int
+ uname='linux nb09 2.6.22.13-0.3-default #1 smp 20071119 15:02:58 utc i686 i686 i386 gnulinux '
+ config_args='-Duse64bitint -des'
+ hint=recommended, useposix=true, d_sigaction=define
+ useithreads=undef, usemultiplicity=undef
+ useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
+ use64bitint=define, use64bitall=undef, uselongdouble=undef
+ usemymalloc=n, bincompat5005=undef
+ Compiler:
+ cc='cc', ccflags ='-fno-strict-aliasing -pipe -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
+ optimize='-O2 -g',
+ cppflags='-fno-strict-aliasing -pipe -I/pro/local/include'
+ ccversion='', gccversion='4.2.1 (SUSE Linux)', gccosandvers=''
+ intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
+ d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
+ ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
+ alignbytes=4, prototype=define
+ Linker and Libraries:
+ ld='cc', ldflags ='-L/pro/local/lib'
+ libpth=/pro/local/lib /lib /usr/lib /usr/local/lib
+ libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc
+ perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
+ libc=/lib/libc-2.6.1.so, so=so, useshrplib=false, libperl=libperl.a
+ gnulibc_version='2.6.1'
+ Dynamic Linking:
+ dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
+ cccdlflags='-fPIC', lddlflags='-shared -O2 -L/pro/local/lib'
diff --git a/gnu/usr.bin/perl/cpan/DB_File/Changes b/gnu/usr.bin/perl/cpan/DB_File/Changes
index 200ff17f583..a650c754701 100644
--- a/gnu/usr.bin/perl/cpan/DB_File/Changes
+++ b/gnu/usr.bin/perl/cpan/DB_File/Changes
@@ -1,3 +1,8 @@
+1.827 25 Jan 2012
+
+ * DB_File.pm - Don't use "@_" construct
+ [RT ##79287]
+
1.826 25 Jan 2012
* t/db-btree.t - fix use of "length @array"
diff --git a/gnu/usr.bin/perl/cpan/DB_File/DB_File.pm b/gnu/usr.bin/perl/cpan/DB_File/DB_File.pm
index 6b7dc103ef8..58cbebeeaee 100644
--- a/gnu/usr.bin/perl/cpan/DB_File/DB_File.pm
+++ b/gnu/usr.bin/perl/cpan/DB_File/DB_File.pm
@@ -165,17 +165,17 @@ our ($db_version, $use_XSLoader, $splice_end_array_no_length, $splice_end_array,
use Carp;
-$VERSION = "1.826" ;
+$VERSION = "1.827" ;
$VERSION = eval $VERSION; # needed for dev releases
{
- local $SIG{__WARN__} = sub {$splice_end_array_no_length = "@_";};
+ local $SIG{__WARN__} = sub {$splice_end_array_no_length = join(" ",@_);};
my @a =(1); splice(@a, 3);
$splice_end_array_no_length =
($splice_end_array_no_length =~ /^splice\(\) offset past end of array at /);
}
{
- local $SIG{__WARN__} = sub {$splice_end_array = "@_";};
+ local $SIG{__WARN__} = sub {$splice_end_array = join(" ", @_);};
my @a =(1); splice(@a, 3, 1);
$splice_end_array =
($splice_end_array =~ /^splice\(\) offset past end of array at /);
diff --git a/gnu/usr.bin/perl/cpan/Devel-PPPort/t/misc.t b/gnu/usr.bin/perl/cpan/Devel-PPPort/t/misc.t
index 9dcc5655474..4667560d8d2 100755
--- a/gnu/usr.bin/perl/cpan/Devel-PPPort/t/misc.t
+++ b/gnu/usr.bin/perl/cpan/Devel-PPPort/t/misc.t
@@ -59,6 +59,7 @@ ok(&Devel::PPPort::UNDERBAR(), "Fred");
if ($] >= 5.009002) {
eval q{
+ no if $^V > v5.17.9, warnings => "experimental::lexical_topic";
my $_ = "Tony";
ok(&Devel::PPPort::DEFSV(), "Fred");
ok(&Devel::PPPort::UNDERBAR(), "Tony");
diff --git a/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.pm b/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.pm
index 1ccba4e75dd..8ea2705264b 100644
--- a/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.pm
+++ b/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.pm
@@ -3,7 +3,7 @@ package Digest::MD5;
use strict;
use vars qw($VERSION @ISA @EXPORT_OK);
-$VERSION = '2.51';
+$VERSION = '2.52';
require Exporter;
*import = \&Exporter::import;
@@ -30,7 +30,7 @@ if ($@) {
require Digest::Perl::MD5;
Digest::Perl::MD5->import(qw(md5 md5_hex md5_base64));
- push(@ISA, "Digest::Perl::MD5"); # make OO interface work
+ unshift(@ISA, "Digest::Perl::MD5"); # make OO interface work
};
if ($@) {
# restore the original error
@@ -63,7 +63,7 @@ Digest::MD5 - Perl interface to the MD5 Algorithm
$ctx = Digest::MD5->new;
$ctx->add($data);
- $ctx->addfile(*FILE);
+ $ctx->addfile($file_handle);
$digest = $ctx->digest;
$digest = $ctx->hexdigest;
@@ -253,7 +253,7 @@ The same checksum can also be calculated in OO style:
print "Digest is $digest\n";
-With OO style you can break the message arbitrary. This means that we
+With OO style, you can break the message arbitrarily. This means that we
are no longer limited to have space for the whole message in memory, i.e.
we can handle messages of any size.
@@ -261,27 +261,27 @@ This is useful when calculating checksum for files:
use Digest::MD5;
- my $file = shift || "/etc/passwd";
- open(FILE, $file) or die "Can't open '$file': $!";
- binmode(FILE);
+ my $filename = shift || "/etc/passwd";
+ open (my $fh, '<', $filename) or die "Can't open '$filename': $!";
+ binmode($fh);
$md5 = Digest::MD5->new;
- while (<FILE>) {
+ while (<$fh>) {
$md5->add($_);
}
- close(FILE);
- print $md5->b64digest, " $file\n";
+ close($fh);
+ print $md5->b64digest, " $filename\n";
Or we can use the addfile method for more efficient reading of
the file:
use Digest::MD5;
- my $file = shift || "/etc/passwd";
- open(FILE, $file) or die "Can't open '$file': $!";
- binmode(FILE);
+ my $filename = shift || "/etc/passwd";
+ open (my $fh, '<', $filename) or die "Can't open '$filename': $!";
+ binmode ($fh);
- print Digest::MD5->new->addfile(*FILE)->hexdigest, " $file\n";
+ print Digest::MD5->new->addfile($fh)->hexdigest, " $filename\n";
Perl 5.8 support Unicode characters in strings. Since the MD5
algorithm is only defined for strings of bytes, it can not be used on
diff --git a/gnu/usr.bin/perl/cpan/Digest-MD5/Makefile.PL b/gnu/usr.bin/perl/cpan/Digest-MD5/Makefile.PL
index 5f903388041..a56fe135958 100644
--- a/gnu/usr.bin/perl/cpan/Digest-MD5/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Digest-MD5/Makefile.PL
@@ -23,7 +23,7 @@ WriteMakefile(
'ABSTRACT' => 'Perl interface to the MD-5 algorithm',
'AUTHOR' => 'Gisle Aas <gisle@activestate.com>',
'LICENSE' => 'perl',
- 'MIN_PERL_VERSION' => 5.008,
+ 'MIN_PERL_VERSION' => 5.006,
'PREREQ_PM' => { 'File::Spec' => 0,
'Digest::base' => '1.00',
'XSLoader' => 0,
diff --git a/gnu/usr.bin/perl/cpan/Digest-MD5/README b/gnu/usr.bin/perl/cpan/Digest-MD5/README
index 45c3658b62b..031c8f10f13 100644
--- a/gnu/usr.bin/perl/cpan/Digest-MD5/README
+++ b/gnu/usr.bin/perl/cpan/Digest-MD5/README
@@ -4,8 +4,6 @@ algorithm takes as input a message of arbitrary length and produces as
output a 128-bit "fingerprint" or "message digest" of the input.
MD5 is described in RFC 1321.
-You will need perl version 5.8 or better to install this module.
-
Copyright 1998-2003 Gisle Aas.
Copyright 1995-1996 Neil Winton.
Copyright 1990-1992 RSA Data Security, Inc.
diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/Changes b/gnu/usr.bin/perl/cpan/Digest-SHA/Changes
index 5f9d1cc777f..98915238731 100644
--- a/gnu/usr.bin/perl/cpan/Digest-SHA/Changes
+++ b/gnu/usr.bin/perl/cpan/Digest-SHA/Changes
@@ -1,5 +1,61 @@
Revision history for Perl extension Digest::SHA.
+5.84 Sat Mar 9 17:36:08 MST 2013
+ - untweaked Makefile.PL to remove dependencies of SHA.c
+ -- dependencies were breaking builds on VMS
+ -- retaining dependencies provides too little benefit
+ for cost of portable workaround
+
+5.83 Mon Mar 4 08:12:00 MST 2013
+ - removed code for standalone C operation (no longer used)
+ -- eliminates need for external symbols
+ -- consolidates SHA and HMAC code
+ -- reduces size of object files
+ -- thanks to Marc Lehmann for suggestions
+ - tweaked Makefile.PL to show dependencies of SHA.c
+
+5.82 Thu Jan 24 04:54:12 MST 2013
+ - introduced workaround to SvPVbyte bug in Perl 5.6
+ -- module behavior now consistent under all Perls 5.6+
+ -- ref: new test script t/unicode.t
+ -- SHA routines now always croak on wide chars (5.6+)
+ - removed "static" message schedules from C code
+ -- default "auto" is now just as fast
+ -- thread-safe option (-t) no longer necessary
+ -- still allowed, but ignored
+ -- simplifies source and header files
+ -- eliminates SHA_STO_CLASS and SHA_THREAD_SAFE
+ -- ref. Bug #82784
+ -- thanks to Steve Hay for initial patch
+ - provided documentation to describe Unicode handling
+ -- ref: Bug #82378
+ - updated documentation of NIST statement on SHA-1
+
+5.81 Mon Jan 14 05:17:08 MST 2013
+ - corrected load subroutine (SHA.pm) to prevent double-free
+ -- Bug #82655: Security issue - segfault
+ -- thanks to Victor Efimov and Nicholas Clark
+ for technical expertise and suggestions
+
+5.80 Mon Dec 10 14:15:26 MST 2012
+ - obtained noticeable speedup on Intel/gcc
+ -- by setting -O1 and -fomit-frame-pointer
+ -- SHA-1 about 63% faster, SHA-2 improves 11-20%
+
+5.74 Sat Nov 24 03:10:18 MST 2012
+ - handle wide-string input by converting to bytes first
+ -- viz. use SvPVbyte instead of SvPV in SHA.xs
+ -- thanks to Eric Brine for summary and code
+
+5.73 Wed Oct 31 04:32:44 MST 2012
+ - provided workaround for DEC compiler bug (ref. Makefile.PL)
+
+5.72 Mon Sep 24 15:22:08 MST 2012
+ - adjusted module installation directory for later Perls
+ -- As of 5.11 Perl searches 'site' first, so use that
+ -- ref. INSTALLDIRS in Makefile.PL
+ -- thanks to Robert Sedlacek for patch
+
5.71 Wed Feb 29 04:06:10 MST 2012
- prevented $! from getting clobbered in _bail() routine
-- thanks to Zefram for patch
diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/Makefile.PL b/gnu/usr.bin/perl/cpan/Digest-SHA/Makefile.PL
index 400db397728..3d8386563fd 100644
--- a/gnu/usr.bin/perl/cpan/Digest-SHA/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Digest-SHA/Makefile.PL
@@ -3,28 +3,35 @@ require 5.003000;
use strict;
use ExtUtils::MakeMaker;
use Getopt::Std;
-use Config;
+use Config qw(%Config);
my $PM = 'lib/Digest/SHA.pm';
my %opts;
-getopts('tx', \%opts);
+getopts('tx', \%opts); # -t is no longer used, but allow it anyway
my @defines;
-push(@defines, '-DSHA_PERL_MODULE') if $] >= 5.004;
-push(@defines, '-DSHA_THREAD_SAFE') if $opts{'t'};
+push(@defines, '-DSHA_PerlIO') if $] >= 5.004;
push(@defines, '-DNO_SHA_384_512') if $opts{'x'};
+my $define = join(' ', @defines);
+
+ # Workaround for DEC compiler bug, adapted from Digest::MD5
- # Configure SHA source to use static arrays for
- # message schedules if compiling on Intel platforms.
- # This seems to speed things up a bit. However,
- # DON'T do this if thread-safe option is in force.
-
-if ($Config{archname} =~ /^i[3456]86/) {
- push(@defines, '-DSHA_STO_CLASS=static') unless $opts{'t'};
+my @extra = ();
+if ($^O eq 'VMS') {
+ if (defined($Config{ccname})) {
+ if (grep(/VMS_VAX/, @INC) && ($Config{ccname} eq 'DEC')) {
+ # VAX compiler optimizer even up to v6.4 gets stuck
+ push(@extra, OPTIMIZE => "/Optimize=(NODISJOINT)");
+ }
+ }
}
-my $define = join(' ', @defines);
+ # Enhance performance on Intel when using gcc
+
+if ($Config{archname} =~ /^i[3456]86/ && $Config{ccname} eq 'gcc') {
+ push(@extra, OPTIMIZE => '-O1 -fomit-frame-pointer');
+}
my %att = (
'NAME' => 'Digest::SHA',
@@ -33,7 +40,8 @@ my %att = (
'DEFINE' => $define,
'INC' => '-I.',
'EXE_FILES' => [ 'shasum' ],
- 'INSTALLDIRS' => ($] >= 5.010) ? 'perl' : 'site',
+ 'INSTALLDIRS' => ($] >= 5.010 and $] < 5.011) ? 'perl' : 'site',
+ @extra,
);
my $MMversion = $ExtUtils::MakeMaker::VERSION || 0;
diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/README b/gnu/usr.bin/perl/cpan/Digest-SHA/README
index 2478b1ec54e..98317ba4824 100644
--- a/gnu/usr.bin/perl/cpan/Digest-SHA/README
+++ b/gnu/usr.bin/perl/cpan/Digest-SHA/README
@@ -1,4 +1,4 @@
-Digest::SHA version 5.71
+Digest::SHA version 5.84
========================
Digest::SHA is a complete implementation of the NIST Secure Hash
@@ -28,13 +28,15 @@ The Makefile.PL options are:
-t : build a thread-safe version of module
-x : exclude support for SHA-384/512
+ NOTE: Option -t is still allowed but no longer necessary.
+
DEPENDENCIES
None
COPYRIGHT AND LICENSE
-Copyright (C) 2003-2012 Mark Shelor
+Copyright (C) 2003-2013 Mark Shelor
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/SHA.xs b/gnu/usr.bin/perl/cpan/Digest-SHA/SHA.xs
index 8124a5de70f..47bef28e618 100644
--- a/gnu/usr.bin/perl/cpan/Digest-SHA/SHA.xs
+++ b/gnu/usr.bin/perl/cpan/Digest-SHA/SHA.xs
@@ -2,8 +2,17 @@
#include "perl.h"
#include "XSUB.h"
+#ifdef SvPVbyte
+ #if PERL_REVISION == 5 && PERL_VERSION < 8
+ #undef SvPVbyte
+ #define SvPVbyte(sv, lp) \
+ (sv_utf8_downgrade((sv), 0), SvPV((sv), (lp)))
+ #endif
+#else
+ #define SvPVbyte SvPV
+#endif
+
#include "src/sha.c"
-#include "src/hmac.c"
static int ix2alg[] =
{1,1,1,224,224,224,256,256,256,384,384,384,512,512,512,
@@ -13,9 +22,6 @@ MODULE = Digest::SHA PACKAGE = Digest::SHA
PROTOTYPES: ENABLE
-#include "src/sha.h"
-#include "src/hmac.h"
-
#ifndef INT2PTR
#define INT2PTR(p, i) (p) (i)
#endif
@@ -25,6 +31,9 @@ PROTOTYPES: ENABLE
int
shaclose(s)
SHA * s
+CODE:
+ RETVAL = shaclose(s);
+ sv_setiv(SvRV(ST(0)), 0);
int
shadump(file, s)
@@ -87,7 +96,7 @@ PPCODE:
if ((state = shaopen(ix2alg[ix])) == NULL)
XSRETURN_UNDEF;
for (i = 0; i < items; i++) {
- data = (unsigned char *) (SvPV(ST(i), len));
+ data = (unsigned char *) (SvPVbyte(ST(i), len));
while (len > MAX_WRITE_SIZE) {
shawrite(data, MAX_WRITE_SIZE << 3, state);
data += MAX_WRITE_SIZE;
@@ -141,11 +150,11 @@ PREINIT:
HMAC *state;
char *result;
PPCODE:
- key = (unsigned char *) (SvPV(ST(items-1), len));
+ key = (unsigned char *) (SvPVbyte(ST(items-1), len));
if ((state = hmacopen(ix2alg[ix], key, len)) == NULL)
XSRETURN_UNDEF;
for (i = 0; i < items - 1; i++) {
- data = (unsigned char *) (SvPV(ST(i), len));
+ data = (unsigned char *) (SvPVbyte(ST(i), len));
while (len > MAX_WRITE_SIZE) {
hmacwrite(data, MAX_WRITE_SIZE << 3, state);
data += MAX_WRITE_SIZE;
@@ -193,7 +202,7 @@ PREINIT:
PPCODE:
state = INT2PTR(SHA *, SvIV(SvRV(SvRV(self))));
for (i = 1; i < items; i++) {
- data = (unsigned char *) (SvPV(ST(i), len));
+ data = (unsigned char *) (SvPVbyte(ST(i), len));
while (len > MAX_WRITE_SIZE) {
shawrite(data, MAX_WRITE_SIZE << 3, state);
data += MAX_WRITE_SIZE;
diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/lib/Digest/SHA.pm b/gnu/usr.bin/perl/cpan/Digest-SHA/lib/Digest/SHA.pm
index d8cc56136be..9a631b1fe9e 100644
--- a/gnu/usr.bin/perl/cpan/Digest-SHA/lib/Digest/SHA.pm
+++ b/gnu/usr.bin/perl/cpan/Digest-SHA/lib/Digest/SHA.pm
@@ -7,7 +7,7 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
use Fcntl;
use integer;
-$VERSION = '5.71';
+$VERSION = '5.84_01';
require Exporter;
require DynaLoader;
@@ -49,8 +49,8 @@ sub new {
sharewind($$class);
return($class);
}
- shaclose($$class) if $$class;
- $$class = shaopen($alg) || return;
+ if ($$class) { shaclose($$class); $$class = undef }
+ return unless $$class = shaopen($alg);
return($class);
}
$alg = 1 unless defined $alg;
@@ -62,7 +62,7 @@ sub new {
sub DESTROY {
my $self = shift;
- shaclose($$self) if $$self;
+ if ($$self) { shaclose($$self); $$self = undef }
}
sub clone {
@@ -163,18 +163,21 @@ sub Addfile {
sub dump {
my $self = shift;
- my $file = shift || "";
+ my $file = shift;
+ $file = "" unless defined $file;
shadump($file, $$self) || return;
return($self);
}
sub load {
my $class = shift;
- my $file = shift || "";
+ my $file = shift;
+
+ $file = "" unless defined $file;
if (ref($class)) { # instance method
- shaclose($$class) if $$class;
- $$class = shaload($file) || return;
+ if ($$class) { shaclose($$class); $$class = undef }
+ return unless $$class = shaload($file);
return($class);
}
my $state = shaload($file) || return;
@@ -321,21 +324,44 @@ I<sha_base64()> functions.
use Digest::SHA qw(hmac_sha256_hex);
print hmac_sha256_hex("Hi There", chr(0x0b) x 32), "\n";
-=head1 NIST STATEMENT ON SHA-1
+=head1 UNICODE AND SIDE EFFECTS
+
+Perl supports Unicode strings as of version 5.6. Such strings may
+contain wide characters, namely, characters whose ordinal values are
+greater than 255. This can cause problems for digest algorithms such
+as SHA that are specified to operate on sequences of bytes.
+
+The rule by which Digest::SHA handles a Unicode string is easy
+to state, but potentially confusing to grasp: the string is interpreted
+as a sequence of byte values, where each byte value is equal to the
+ordinal value (viz. code point) of its corresponding Unicode character.
+That way, the Unicode string 'abc' has exactly the same digest value as
+the ordinary string 'abc'.
+
+Since a wide character does not fit into a byte, the Digest::SHA
+routines croak if they encounter one. Whereas if a Unicode string
+contains no wide characters, the module accepts it quite happily.
+The following code illustrates the two cases:
-I<NIST was recently informed that researchers had discovered a way
-to "break" the current Federal Information Processing Standard SHA-1
-algorithm, which has been in effect since 1994. The researchers
-have not yet published their complete results, so NIST has not
-confirmed these findings. However, the researchers are a reputable
-research team with expertise in this area.>
+ $str1 = pack('U*', (0..255));
+ print sha1_hex($str1); # ok
+
+ $str2 = pack('U*', (0..256));
+ print sha1_hex($str2); # croaks
+
+Be aware that the digest routines silently convert UTF-8 input into its
+equivalent byte sequence in the native encoding (cf. utf8::downgrade).
+This side effect influences only the way Perl stores the data internally,
+but otherwise leaves the actual value of the data intact.
+
+=head1 NIST STATEMENT ON SHA-1
-I<Due to advances in computing power, NIST already planned to phase
-out SHA-1 in favor of the larger and stronger hash functions (SHA-224,
-SHA-256, SHA-384 and SHA-512) by 2010. New developments should use
-the larger and stronger hash functions.>
+NIST acknowledges that the work of Prof. Xiaoyun Wang constitutes a
+practical collision attack on SHA-1. Therefore, NIST encourages the
+rapid adoption of the SHA-2 hash functions (e.g. SHA-256) for applications
+requiring strong collision resistance, such as digital signatures.
-ref. L<http://www.csrc.nist.gov/pki/HashWorkshop/NIST%20Statement/Burr_Mar2005.html>
+ref. L<http://csrc.nist.gov/groups/ST/hash/statement.html>
=head1 PADDING OF BASE64 DIGESTS
@@ -707,7 +733,7 @@ darkness and moored it in so perfect a calm and in so brilliant a light"
=head1 COPYRIGHT AND LICENSE
-Copyright (C) 2003-2012 Mark Shelor
+Copyright (C) 2003-2013 Mark Shelor
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/shasum b/gnu/usr.bin/perl/cpan/Digest-SHA/shasum
index d75815a3789..11da695c4c2 100644
--- a/gnu/usr.bin/perl/cpan/Digest-SHA/shasum
+++ b/gnu/usr.bin/perl/cpan/Digest-SHA/shasum
@@ -2,10 +2,10 @@
## shasum: filter for computing SHA digests (ref. sha1sum/md5sum)
##
- ## Copyright (C) 2003-2012 Mark Shelor, All Rights Reserved
+ ## Copyright (C) 2003-2013 Mark Shelor, All Rights Reserved
##
- ## Version: 5.71
- ## Wed Feb 29 04:06:10 MST 2012
+ ## Version: 5.84
+ ## Sat Mar 9 17:36:08 MST 2013
## shasum SYNOPSIS adapted from GNU Coreutils sha1sum.
## Add an "-a" option for algorithm selection, a "-p"
@@ -82,7 +82,7 @@ the 7-bit message I<0001100>:
=head1 AUTHOR
-Copyright (c) 2003-2012 Mark Shelor <mshelor@cpan.org>.
+Copyright (c) 2003-2013 Mark Shelor <mshelor@cpan.org>.
=head1 SEE ALSO
@@ -97,7 +97,7 @@ use strict;
use Fcntl;
use Getopt::Long;
-my $VERSION = "5.71";
+my $VERSION = "5.84";
## Try to use Digest::SHA. If not installed, use the slower
diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.c b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.c
index 4aaba5f0a96..6d6fe681091 100644
--- a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.c
+++ b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.c
@@ -3,10 +3,10 @@
*
* Ref: NIST FIPS PUB 180-2 Secure Hash Standard
*
- * Copyright (C) 2003-2012 Mark Shelor, All Rights Reserved
+ * Copyright (C) 2003-2013 Mark Shelor, All Rights Reserved
*
- * Version: 5.71
- * Wed Feb 29 04:06:10 MST 2012
+ * Version: 5.84
+ * Sat Mar 9 17:36:08 MST 2013
*
*/
@@ -86,7 +86,7 @@ static W32 H0256[8] = /* SHA-256 initial hash value */
static void sha1(SHA *s, UCHR *block) /* SHA-1 transform */
{
W32 a, b, c, d, e;
- SHA_STO_CLASS W32 W[16];
+ W32 W[16];
W32 *wp = W;
W32 *H = (W32 *) s->H;
@@ -153,7 +153,7 @@ static void sha1(SHA *s, UCHR *block) /* SHA-1 transform */
static void sha256(SHA *s, UCHR *block) /* SHA-224/256 transform */
{
W32 a, b, c, d, e, f, g, h, T1;
- SHA_STO_CLASS W32 W[16];
+ W32 W[16];
W32 *kp = K256;
W32 *wp = W;
W32 *H = (W32 *) s->H;
@@ -216,7 +216,7 @@ static void sha256(SHA *s, UCHR *block) /* SHA-224/256 transform */
#define SETBIT(s, pos) s[(pos) >> 3] |= (0x01 << (7 - (pos) % 8))
#define CLRBIT(s, pos) s[(pos) >> 3] &= ~(0x01 << (7 - (pos) % 8))
-#define NBYTES(nbits) ((nbits) > 0 ? 1 + (((nbits) - 1) >> 3) : 0)
+#define NBYTES(nbits) (((nbits) + 7) >> 3)
#define HEXLEN(nbytes) ((nbytes) << 1)
#define B64LEN(nbytes) (((nbytes) % 3 == 0) ? ((nbytes) / 3) * 4 \
: ((nbytes) / 3) * 4 + ((nbytes) % 3) + 1)
@@ -258,7 +258,7 @@ static void digcpy(SHA *s)
} while (0)
/* sharewind: re-initializes the digest object */
-void sharewind(SHA *s)
+static void sharewind(SHA *s)
{
if (s->alg == SHA1) SHA_INIT(1, 1);
else if (s->alg == SHA224) SHA_INIT(224, 256);
@@ -270,9 +270,9 @@ void sharewind(SHA *s)
}
/* shaopen: creates a new digest object */
-SHA *shaopen(int alg)
+static SHA *shaopen(int alg)
{
- SHA *s;
+ SHA *s = NULL;
if (alg != SHA1 && alg != SHA224 && alg != SHA256 &&
alg != SHA384 && alg != SHA512 &&
@@ -288,6 +288,16 @@ SHA *shaopen(int alg)
return(s);
}
+/* shaclose: de-allocates digest object */
+static int shaclose(SHA *s)
+{
+ if (s != NULL) {
+ memset(s, 0, sizeof(SHA));
+ SHA_free(s);
+ }
+ return(0);
+}
+
/* shadirect: updates state directly (w/o going through s->block) */
static ULNG shadirect(UCHR *bitstr, ULNG bitcnt, SHA *s)
{
@@ -365,7 +375,7 @@ static ULNG shabits(UCHR *bitstr, ULNG bitcnt, SHA *s)
}
/* shawrite: triggers a state update using data in bitstr/bitcnt */
-ULNG shawrite(UCHR *bitstr, ULNG bitcnt, SHA *s)
+static ULNG shawrite(UCHR *bitstr, ULNG bitcnt, SHA *s)
{
if (bitcnt < 1)
return(0);
@@ -382,7 +392,7 @@ ULNG shawrite(UCHR *bitstr, ULNG bitcnt, SHA *s)
}
/* shafinish: pads remaining block(s) and computes final digest state */
-void shafinish(SHA *s)
+static void shafinish(SHA *s)
{
UINT lenpos, lhpos, llpos;
@@ -407,14 +417,14 @@ void shafinish(SHA *s)
}
/* shadigest: returns pointer to current digest (binary) */
-UCHR *shadigest(SHA *s)
+static UCHR *shadigest(SHA *s)
{
digcpy(s);
return(s->digest);
}
/* shahex: returns pointer to current digest (hexadecimal) */
-char *shahex(SHA *s)
+static char *shahex(SHA *s)
{
int i;
@@ -448,7 +458,7 @@ static void encbase64(UCHR *in, int n, char *out)
}
/* shabase64: returns pointer to current digest (Base 64) */
-char *shabase64(SHA *s)
+static char *shabase64(SHA *s)
{
int n;
UCHR *q;
@@ -456,7 +466,7 @@ char *shabase64(SHA *s)
digcpy(s);
s->base64[0] = '\0';
- if (B64LEN(s->digestlen) >= sizeof(s->base64))
+ if (B64LEN((size_t) s->digestlen) >= sizeof(s->base64))
return(s->base64);
for (n = s->digestlen, q = s->digest; n > 3; n -= 3, q += 3) {
encbase64(q, 3, out);
@@ -468,19 +478,19 @@ char *shabase64(SHA *s)
}
/* shadsize: returns length of digest in bytes */
-int shadsize(SHA *s)
+static int shadsize(SHA *s)
{
return(s->digestlen);
}
/* shaalg: returns which SHA algorithm is being used */
-int shaalg(SHA *s)
+static int shaalg(SHA *s)
{
return(s->alg);
}
/* shadup: duplicates current digest object */
-SHA *shadup(SHA *s)
+static SHA *shadup(SHA *s)
{
SHA *p;
@@ -492,7 +502,7 @@ SHA *shadup(SHA *s)
}
/* shadump: dumps digest object to a human-readable ASCII file */
-int shadump(char *file, SHA *s)
+static int shadump(char *file, SHA *s)
{
int i, j;
SHA_FILE *f;
@@ -608,7 +618,7 @@ static SHA *closeall(SHA_FILE *f, SHA *s)
}
/* shaload: creates digest object corresponding to contents of dump file */
-SHA *shaload(char *file)
+static SHA *shaload(char *file)
{
int alg;
SHA *s = NULL;
@@ -638,12 +648,88 @@ SHA *shaload(char *file)
return(s);
}
-/* shaclose: de-allocates digest object */
-int shaclose(SHA *s)
+/* hmacopen: creates a new HMAC-SHA digest object */
+static HMAC *hmacopen(int alg, UCHR *key, UINT keylen)
{
- if (s != NULL) {
- memset(s, 0, sizeof(SHA));
- SHA_free(s);
+ UINT i;
+ HMAC *h;
+
+ SHA_newz(0, h, 1, HMAC);
+ if (h == NULL)
+ return(NULL);
+ if ((h->isha = shaopen(alg)) == NULL) {
+ SHA_free(h);
+ return(NULL);
+ }
+ if ((h->osha = shaopen(alg)) == NULL) {
+ shaclose(h->isha);
+ SHA_free(h);
+ return(NULL);
+ }
+ if (keylen <= h->osha->blocksize / 8)
+ memcpy(h->key, key, keylen);
+ else {
+ if ((h->ksha = shaopen(alg)) == NULL) {
+ shaclose(h->isha);
+ shaclose(h->osha);
+ SHA_free(h);
+ return(NULL);
+ }
+ shawrite(key, keylen * 8, h->ksha);
+ shafinish(h->ksha);
+ memcpy(h->key, shadigest(h->ksha), h->ksha->digestlen);
+ shaclose(h->ksha);
+ }
+ for (i = 0; i < h->osha->blocksize / 8; i++)
+ h->key[i] ^= 0x5c;
+ shawrite(h->key, h->osha->blocksize, h->osha);
+ for (i = 0; i < h->isha->blocksize / 8; i++)
+ h->key[i] ^= (0x5c ^ 0x36);
+ shawrite(h->key, h->isha->blocksize, h->isha);
+ memset(h->key, 0, sizeof(h->key));
+ return(h);
+}
+
+/* hmacwrite: triggers a state update using data in bitstr/bitcnt */
+static ULNG hmacwrite(UCHR *bitstr, ULNG bitcnt, HMAC *h)
+{
+ return(shawrite(bitstr, bitcnt, h->isha));
+}
+
+/* hmacfinish: computes final digest state */
+static void hmacfinish(HMAC *h)
+{
+ shafinish(h->isha);
+ shawrite(shadigest(h->isha), h->isha->digestlen * 8, h->osha);
+ shaclose(h->isha);
+ shafinish(h->osha);
+}
+
+/* hmacdigest: returns pointer to digest (binary) */
+static UCHR *hmacdigest(HMAC *h)
+{
+ return(shadigest(h->osha));
+}
+
+/* hmachex: returns pointer to digest (hexadecimal) */
+static char *hmachex(HMAC *h)
+{
+ return(shahex(h->osha));
+}
+
+/* hmacbase64: returns pointer to digest (Base 64) */
+static char *hmacbase64(HMAC *h)
+{
+ return(shabase64(h->osha));
+}
+
+/* hmacclose: de-allocates digest object */
+static int hmacclose(HMAC *h)
+{
+ if (h != NULL) {
+ shaclose(h->osha);
+ memset(h, 0, sizeof(HMAC));
+ SHA_free(h);
}
return(0);
}
diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.h b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.h
index 1c80dbc9783..fb7279eee8c 100644
--- a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.h
+++ b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.h
@@ -3,10 +3,10 @@
*
* Ref: NIST FIPS PUB 180-2 Secure Hash Standard
*
- * Copyright (C) 2003-2012 Mark Shelor, All Rights Reserved
+ * Copyright (C) 2003-2013 Mark Shelor, All Rights Reserved
*
- * Version: 5.71
- * Wed Feb 29 04:06:10 MST 2012
+ * Version: 5.84
+ * Sat Mar 9 17:36:08 MST 2013
*
*/
@@ -102,27 +102,11 @@
(SHA64) b[6] << 8 | (SHA64) b[7]; }
#endif
-/*
- * SHA_STO_CLASS: default to auto storage class for message schedule
- * arrays inside transform routines. Note that redefining this to
- * static might improve performance on some platforms (e.g. Intel).
- */
-
-#if !defined(SHA_STO_CLASS)
- #define SHA_STO_CLASS auto
-#endif
+#define SHA_new New
+#define SHA_newz Newz
+#define SHA_free Safefree
-/* Override use of static arrays if compiling for thread-safety */
-#ifdef SHA_THREAD_SAFE
- #undef SHA_STO_CLASS
- #define SHA_STO_CLASS auto
-#endif
-
-/* Configure memory management and I/O for Perl or standalone C */
-#ifdef SHA_PERL_MODULE
- #define SHA_new New
- #define SHA_newz Newz
- #define SHA_free Safefree
+#ifdef SHA_PerlIO
#define SHA_FILE PerlIO
#define SHA_stdin() PerlIO_stdin()
#define SHA_stdout() PerlIO_stdout()
@@ -132,9 +116,6 @@
#define SHA_feof PerlIO_eof
#define SHA_getc PerlIO_getc
#else
- #define SHA_new(id, p, n, t) p = (t *) malloc(sizeof(t))
- #define SHA_newz(id, p, n, t) p = (t *) calloc(n, sizeof(t))
- #define SHA_free free
#define SHA_FILE FILE
#define SHA_stdin() stdin
#define SHA_stdout() stdout
@@ -194,53 +175,11 @@ typedef struct SHA {
char base64[SHA_MAX_BASE64_LEN+1];
} SHA;
-#define SHA_FMT_RAW 1
-#define SHA_FMT_HEX 2
-#define SHA_FMT_BASE64 3
-
-#define _SHA_STATE SHA *s
-#define _SHA_ALG int alg
-#define _SHA_DATA unsigned char *bitstr, unsigned long bitcnt
-#define _SHA_FNAME char *filename
-
-SHA *shaopen (_SHA_ALG);
-unsigned long shawrite (_SHA_DATA, _SHA_STATE);
-void shafinish (_SHA_STATE);
-void sharewind (_SHA_STATE);
-unsigned char *shadigest (_SHA_STATE);
-char *shahex (_SHA_STATE);
-char *shabase64 (_SHA_STATE);
-int shadsize (_SHA_STATE);
-int shaalg (_SHA_STATE);
-SHA *shadup (_SHA_STATE);
-int shadump (_SHA_FNAME, _SHA_STATE);
-SHA *shaload (_SHA_FNAME);
-int shaclose (_SHA_STATE);
-
-#ifndef SHA_PERL_MODULE
-
-unsigned char *sha1digest (_SHA_DATA);
-char *sha1hex (_SHA_DATA);
-char *sha1base64 (_SHA_DATA);
-unsigned char *sha224digest (_SHA_DATA);
-char *sha224hex (_SHA_DATA);
-char *sha224base64 (_SHA_DATA);
-unsigned char *sha256digest (_SHA_DATA);
-char *sha256hex (_SHA_DATA);
-char *sha256base64 (_SHA_DATA);
-unsigned char *sha384digest (_SHA_DATA);
-char *sha384hex (_SHA_DATA);
-char *sha384base64 (_SHA_DATA);
-unsigned char *sha512digest (_SHA_DATA);
-char *sha512hex (_SHA_DATA);
-char *sha512base64 (_SHA_DATA);
-unsigned char *sha512224digest (_SHA_DATA);
-char *sha512224hex (_SHA_DATA);
-char *sha512224base64 (_SHA_DATA);
-unsigned char *sha512256digest (_SHA_DATA);
-char *sha512256hex (_SHA_DATA);
-char *sha512256base64 (_SHA_DATA);
-
-#endif
+typedef struct {
+ SHA *ksha;
+ SHA *isha;
+ SHA *osha;
+ unsigned char key[SHA_MAX_BLOCK_BITS/8];
+} HMAC;
#endif /* _INCLUDE_SHA_H_ */
diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.c b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.c
index b37d6f3c09b..6c9096670f3 100644
--- a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.c
+++ b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.c
@@ -95,7 +95,7 @@ static W64 strto64(char *s)
static void sha512(SHA *s, unsigned char *block) /* SHA-384/512 transform */
{
W64 a, b, c, d, e, f, g, h, T1, T2;
- SHA_STO_CLASS W64 W[80];
+ W64 W[80];
W64 *H = (W64 *) s->H;
int t;
diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/t/unicode.t b/gnu/usr.bin/perl/cpan/Digest-SHA/t/unicode.t
new file mode 100644
index 00000000000..1e7bd13d531
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Digest-SHA/t/unicode.t
@@ -0,0 +1,43 @@
+use strict;
+
+my $MODULE;
+
+BEGIN {
+ $MODULE = (-d "src") ? "Digest::SHA" : "Digest::SHA::PurePerl";
+ eval "require $MODULE" || die $@;
+ $MODULE->import(qw(sha1_hex));
+}
+
+BEGIN {
+ if ($ENV{PERL_CORE}) {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ }
+}
+
+my $skip = $] < 5.006 ? 1 : 0;
+
+my $TEMPLATE = $] >= 5.006 ? 'U*' : 'C*';
+my $empty_unicode = pack($TEMPLATE, ());
+my $ok_unicode = pack($TEMPLATE, (0..255));
+my $wide_unicode = pack($TEMPLATE, (0..256));
+
+print "1..3\n";
+
+unless ($skip) {
+ print "not " unless sha1_hex($empty_unicode."abc") eq
+ "a9993e364706816aba3e25717850c26c9cd0d89d";
+}
+print "ok 1", $skip ? " # skip: no Unicode" : "", "\n";
+
+unless ($skip) {
+ print "not " unless sha1_hex($ok_unicode) eq
+ "4916d6bdb7f78e6803698cab32d1586ea457dfc8";
+}
+print "ok 2", $skip ? " # skip: no Unicode" : "", "\n";
+
+unless ($skip) {
+ eval { sha1_hex($wide_unicode) };
+ print "not " unless $@ =~ /Wide character/;
+}
+print "ok 3", $skip ? " # skip: no Unicode" : "", "\n";
diff --git a/gnu/usr.bin/perl/cpan/Encode/Encode/Makefile_PL.e2x b/gnu/usr.bin/perl/cpan/Encode/Encode/Makefile_PL.e2x
index 1d83a2fbda2..ece58830fea 100644
--- a/gnu/usr.bin/perl/cpan/Encode/Encode/Makefile_PL.e2x
+++ b/gnu/usr.bin/perl/cpan/Encode/Encode/Makefile_PL.e2x
@@ -17,12 +17,17 @@ my %tables = (
#### DO NOT EDIT BEYOND THIS POINT!
require File::Spec;
my ($enc2xs, $encode_h) = ();
+my @path_ext = ('');
+@path_ext = split(';', $ENV{PATHEXT}) if $^O eq 'MSWin32';
PATHLOOP:
for my $d (@Config{qw/bin sitebin vendorbin/},
(split /$Config{path_sep}/o, $ENV{PATH})){
for my $f (qw/enc2xs enc2xs5.7.3/){
my $path = File::Spec->catfile($d, $f);
- -r $path and $enc2xs = $path and last PATHLOOP;
+ for my $ext (@path_ext) {
+ my $bin = "$path$ext";
+ -r "$bin" and $enc2xs = $bin and last PATHLOOP;
+ }
}
}
$enc2xs or die "enc2xs not found!";
diff --git a/gnu/usr.bin/perl/cpan/Encode/MANIFEST b/gnu/usr.bin/perl/cpan/Encode/MANIFEST
index 3fe6582a22b..830cebcc6b8 100644
--- a/gnu/usr.bin/perl/cpan/Encode/MANIFEST
+++ b/gnu/usr.bin/perl/cpan/Encode/MANIFEST
@@ -202,3 +202,4 @@ ucm/posix-bc.ucm Unicode Character Map
ucm/shiftjis.ucm Unicode Character Map
ucm/symbol.ucm Unicode Character Map
ucm/viscii.ucm Unicode Character Map
+META.json Module JSON meta-data (added by MakeMaker)
diff --git a/gnu/usr.bin/perl/cpan/Encode/META.json b/gnu/usr.bin/perl/cpan/Encode/META.json
new file mode 100644
index 00000000000..4895bda5b2c
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Encode/META.json
@@ -0,0 +1,39 @@
+{
+ "abstract" : "unknown",
+ "author" : [
+ "unknown"
+ ],
+ "dynamic_config" : 1,
+ "generated_by" : "ExtUtils::MakeMaker version 6.64, CPAN::Meta::Converter version 2.120921",
+ "license" : [
+ "perl_5"
+ ],
+ "meta-spec" : {
+ "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+ "version" : "2"
+ },
+ "name" : "Encode",
+ "no_index" : {
+ "directory" : [
+ "t",
+ "inc"
+ ]
+ },
+ "prereqs" : {
+ "build" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "configure" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "runtime" : {
+ "requires" : {}
+ }
+ },
+ "release_status" : "stable",
+ "version" : "2.49"
+}
diff --git a/gnu/usr.bin/perl/cpan/Encode/META.yml b/gnu/usr.bin/perl/cpan/Encode/META.yml
index d73458f7bd1..398a230678c 100644
--- a/gnu/usr.bin/perl/cpan/Encode/META.yml
+++ b/gnu/usr.bin/perl/cpan/Encode/META.yml
@@ -1,20 +1,21 @@
---- #YAML:1.0
-name: Encode
-version: 2.44
-abstract: ~
-author: []
-license: unknown
-distribution_type: module
-configure_requires:
- ExtUtils::MakeMaker: 0
+---
+abstract: unknown
+author:
+ - unknown
build_requires:
- ExtUtils::MakeMaker: 0
-requires: {}
-no_index:
- directory:
- - t
- - inc
-generated_by: ExtUtils::MakeMaker version 6.57_05
+ ExtUtils::MakeMaker: 0
+configure_requires:
+ ExtUtils::MakeMaker: 0
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.64, CPAN::Meta::Converter version 2.120921'
+license: perl
meta-spec:
- url: http://module-build.sourceforge.net/META-spec-v1.4.html
- version: 1.4
+ url: http://module-build.sourceforge.net/META-spec-v1.4.html
+ version: 1.4
+name: Encode
+no_index:
+ directory:
+ - t
+ - inc
+requires: {}
+version: 2.49
diff --git a/gnu/usr.bin/perl/cpan/Encode/lib/Encode/Supported.pod b/gnu/usr.bin/perl/cpan/Encode/lib/Encode/Supported.pod
index e84faafd9e2..8efa4ff6f89 100644
--- a/gnu/usr.bin/perl/cpan/Encode/lib/Encode/Supported.pod
+++ b/gnu/usr.bin/perl/cpan/Encode/lib/Encode/Supported.pod
@@ -94,7 +94,7 @@ To find how (UCS-2|UTF-(16|32))(LE|BE)? differ from one another,
see L<Encode::Unicode>.
UTF-7 is a special encoding which "re-encodes" UTF-16BE into a 7-bit
-encoding. It is implemented seperately by Encode::Unicode::UTF7.
+encoding. It is implemented separately by Encode::Unicode::UTF7.
=head2 Encode::Byte -- Extended ASCII
@@ -420,7 +420,7 @@ at L<http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/> .
=item (Mac) Indic encodings
The maps for the following are available at L<http://www.unicode.org/>
-but remain unsupport because those encodings need algorithmical
+but remain unsupported because those encodings need an algorithmical
approach, currently unsupported by F<enc2xs>:
MacDevanagari
diff --git a/gnu/usr.bin/perl/cpan/Encode/t/Encode.t b/gnu/usr.bin/perl/cpan/Encode/t/Encode.t
index 369557ef1dc..918975eb4c5 100755
--- a/gnu/usr.bin/perl/cpan/Encode/t/Encode.t
+++ b/gnu/usr.bin/perl/cpan/Encode/t/Encode.t
@@ -25,7 +25,7 @@ my @character_set = ('0'..'9', 'A'..'Z', 'a'..'z');
my @source = qw(ascii iso8859-1 cp1250);
my @destiny = qw(cp1047 cp37 posix-bc);
my @ebcdic_sets = qw(cp1047 cp37 posix-bc);
-plan test => 38+$n*@encodings + 2*@source*@destiny*@character_set + 2*@ebcdic_sets*256 + 6 + 2;
+plan test => 38+$n*@encodings + 2*@source*@destiny*@character_set + 2*@ebcdic_sets*256 + 6 + 4;
my $str = join('',map(chr($_),0x20..0x7E));
my $cpy = $str;
ok(length($str),from_to($cpy,'iso8859-1','Unicode'),"Length Wrong");
@@ -149,3 +149,14 @@ sub new { my $class = shift; bless [ @_ ] => $class }
package main;
ok(decode(latin1 => Encode::Dummy->new("foobar")), "foobar");
ok(encode(utf8 => Encode::Dummy->new("foobar")), "foobar");
+
+# hash keys
+my $key = (keys %{{ "whatever\x{100}" => '' }})[0];
+my $kopy = $key;
+encode("UTF-16LE", $kopy, Encode::FB_CROAK);
+ok $key, "whatever\x{100}", 'encode with shared hash key scalars';
+undef $key;
+$key = (keys %{{ "whatever" => '' }})[0];
+$kopy = $key;
+decode("UTF-16LE", $kopy, Encode::FB_CROAK);
+ok $key, "whatever", 'decode with shared hash key scalars';
diff --git a/gnu/usr.bin/perl/cpan/Encode/t/encoding.t b/gnu/usr.bin/perl/cpan/Encode/t/encoding.t
index b17b11fc445..8c7f253377f 100755
--- a/gnu/usr.bin/perl/cpan/Encode/t/encoding.t
+++ b/gnu/usr.bin/perl/cpan/Encode/t/encoding.t
@@ -16,6 +16,7 @@ BEGIN {
print "1..31\n";
+no warnings "deprecated";
use encoding "latin1"; # ignored (overwritten by the next line)
use encoding "greek"; # iso 8859-7 (no "latin" alias, surprise...)
diff --git a/gnu/usr.bin/perl/cpan/Encode/t/gsm0338.t b/gnu/usr.bin/perl/cpan/Encode/t/gsm0338.t
index 822ff4fd978..127604b461f 100755
--- a/gnu/usr.bin/perl/cpan/Encode/t/gsm0338.t
+++ b/gnu/usr.bin/perl/cpan/Encode/t/gsm0338.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use utf8;
-use Test::More tests => 778;
+use Test::More tests => 780;
use Encode;
use Encode::GSM0338;
@@ -87,6 +87,10 @@ for my $c ( map { chr } 0 .. 127 ) {
}
}
+# https://rt.cpan.org/Ticket/Display.html?id=75670
+is decode("gsm0338", "\x09") => chr(0xC7), 'RT75670: decode';
+is encode("gsm0338", chr(0xC7)) => "\x09", 'RT75670: encode';
+
__END__
for my $c (map { chr } 0..127){
my $b = "\x1b$c";
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/MANIFEST b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/MANIFEST
index fe47e55b181..72feb7d3b78 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/MANIFEST
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/MANIFEST
@@ -1,3 +1,4 @@
+.perlcriticrc
bin/instmodsh
bundled/CPAN-Meta-YAML/CPAN/Meta/YAML.pm
bundled/CPAN-Meta/CPAN/Meta.pm
@@ -60,7 +61,7 @@ lib/ExtUtils/MM_Win95.pm
lib/ExtUtils/MY.pm
lib/ExtUtils/testlib.pm
Makefile.PL
-MANIFEST This list of files
+MANIFEST
MANIFEST.SKIP
my/bundles.pm
NOTES
@@ -68,6 +69,7 @@ PATCHING
README
README.packaging
t/00compile.t
+t/01perl_bugs.t
t/arch_check.t
t/backwards.t
t/basic.t
@@ -106,6 +108,7 @@ t/liblist/win32/__test.lib
't/liblist/win32/di r/dir_test.lib'
t/liblist/win32/dir/dir_test.lib
t/liblist/win32/double.lib
+t/liblist/win32/imp.dll.a
t/liblist/win32/lib/CORE/c_test.lib
t/liblist/win32/lib/CORE/double.lib
t/liblist/win32/lib__test.lib
@@ -165,6 +168,3 @@ t/WriteEmptyMakefile.t
t/writemakefile_args.t
t/xs.t
TODO
-META.yml Module YAML meta-data (added by MakeMaker)
-META.json Module JSON meta-data (added by MakeMaker)
-SIGNATURE Public-key signature (added by MakeMaker)
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm
index 8d82ee49b12..add6b457ce6 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm
@@ -10,7 +10,7 @@ our @ISA = qw(Exporter);
our @EXPORT = qw(test_harness pod2man perllocal_install uninstall
warn_if_old_packlist);
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
my $Is_VMS = $^O eq 'VMS';
@@ -99,7 +99,7 @@ sub pod2man {
if( !eval { require Pod::Man } ) {
warn "Pod::Man is not available: $@".
"Man pages will not be generated during this install.\n";
- return undef;
+ return 0;
}
}
require Getopt::Long;
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
index a2ef4268d1d..3914e2f7e63 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
@@ -2,7 +2,7 @@ package ExtUtils::Liblist;
use strict;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
use File::Spec;
require ExtUtils::Liblist::Kid;
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
index eddcc72c749..f0a105cca28 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
@@ -11,7 +11,7 @@ use 5.006;
use strict;
use warnings;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
use ExtUtils::MakeMaker::Config;
use Cwd 'cwd';
@@ -232,7 +232,7 @@ sub _unix_os2_ext {
}
last; # found one here so don't bother looking further
}
- warn "Note (probably harmless): " . "No library found for -l$thislib\n"
+ warn "Warning (mostly harmless): " . "No library found for -l$thislib\n"
unless $found_lib > 0;
}
@@ -308,7 +308,7 @@ sub _win32_ext {
my ( $fullname, $path ) = _win32_search_file( $thislib, $libext, \@paths, $verbose, $GC );
if ( !$fullname ) {
- warn "Note (probably harmless): No library found for $thislib\n";
+ warn "Warning (mostly harmless): No library found for $thislib\n";
next;
}
@@ -422,7 +422,8 @@ sub _win32_try_attach_extension {
sub _win32_lib_extensions {
my %extensions;
$extensions{ $Config{'lib_ext'} } = 1 if $Config{'lib_ext'};
- $extensions{".lib"} = 1;
+ $extensions{".dll.a"} = 1 if $extensions{".a"};
+ $extensions{".lib"} = 1;
return [ keys %extensions ];
}
@@ -559,11 +560,11 @@ sub _vms_ext {
if ( $fullname =~ /(?:$so|exe)$/i ) { $type = 'SHR'; }
elsif ( $fullname =~ /(?:$lib_ext|olb)$/i ) { $type = 'OLB'; }
elsif ( $fullname =~ /(?:$obj_ext|obj)$/i ) {
- warn "Note (probably harmless): " . "Plain object file $fullname found in library list\n";
+ warn "Warning (mostly harmless): " . "Plain object file $fullname found in library list\n";
$type = 'OBJ';
}
else {
- warn "Note (probably harmless): " . "Unknown library type for $fullname; assuming shared\n";
+ warn "Warning (mostly harmless): " . "Unknown library type for $fullname; assuming shared\n";
$type = 'SHR';
}
}
@@ -588,7 +589,7 @@ sub _vms_ext {
( -f ( $fullname = VMS::Filespec::rmsexpand( $name, $obj_ext ) ) or -f ( $fullname = VMS::Filespec::rmsexpand( $name, '.obj' ) ) )
)
{
- warn "Note (probably harmless): " . "Plain object file $fullname found in library list\n";
+ warn "Warning (mostly harmless): " . "Plain object file $fullname found in library list\n";
$type = 'OBJ';
$name = $fullname unless $fullname =~ /obj;?\d*$/i;
}
@@ -609,7 +610,7 @@ sub _vms_ext {
next LIB;
}
}
- warn "Note (probably harmless): " . "No library found for $lib\n";
+ warn "Warning (mostly harmless): " . "No library found for $lib\n";
}
push @fndlibs, @{ $found{OBJ} } if exists $found{OBJ};
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
index 418eb190dd1..26ed5942707 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
@@ -3,7 +3,7 @@ package ExtUtils::MM;
use strict;
use ExtUtils::MakeMaker::Config;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
require ExtUtils::Liblist;
require ExtUtils::MakeMaker;
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
index 0b0547ff521..2fb79705888 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
@@ -1,7 +1,7 @@
package ExtUtils::MM_AIX;
use strict;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
require ExtUtils::MM_Unix;
our @ISA = qw(ExtUtils::MM_Unix);
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm
index a31cf2320c3..74d3105ca15 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm
@@ -26,7 +26,7 @@ require ExtUtils::MM_Any;
require ExtUtils::MM_Unix;
our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
=item os_flavor
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm
index de6f13085ee..643682e6119 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm
@@ -9,7 +9,7 @@ require ExtUtils::MM_Unix;
require ExtUtils::MM_Win32;
our @ISA = qw( ExtUtils::MM_Unix );
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
=head1 NAME
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
index d902038412b..4f0eca3ce8e 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_DOS;
use strict;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
require ExtUtils::MM_Any;
require ExtUtils::MM_Unix;
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
index 6d78157fe5f..96ec6fbc2c6 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
@@ -7,7 +7,7 @@ BEGIN {
our @ISA = qw( ExtUtils::MM_Unix );
}
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
=head1 NAME
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
index 17bcde790e4..daba1166c3a 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_MacOS;
use strict;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
sub new {
die <<'UNSUPPORTED';
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
index be1e1555576..94531a72e7a 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
@@ -22,7 +22,7 @@ use strict;
use ExtUtils::MakeMaker::Config;
use File::Basename;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
require ExtUtils::MM_Win32;
our @ISA = qw(ExtUtils::MM_Win32);
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
index f4ebd1e738e..55d6c448c08 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
@@ -5,7 +5,7 @@ use strict;
use ExtUtils::MakeMaker qw(neatvalue);
use File::Spec;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
require ExtUtils::MM_Any;
require ExtUtils::MM_Unix;
@@ -84,7 +84,7 @@ $self->{BASEEXT}.def: Makefile.PL
system "emximp -o tmpimp$Config::Config{lib_ext} tmpimp.imp"
and die "Cannot make import library: $!, \$?=$?";
# May be running under miniperl, so have no glob...
- eval "unlink <tmp_imp/*>; 1" or system "rm tmp_imp/*";
+ eval { unlink <tmp_imp/*>; 1 } or system "rm tmp_imp/*";
system "cd tmp_imp; $Config::Config{ar} x ../tmpimp$Config::Config{lib_ext}"
and die "Cannot extract import objects: $!, \$?=$?";
}
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
index 9d1f29223d0..16169399c89 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
@@ -1,7 +1,7 @@
package ExtUtils::MM_QNX;
use strict;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
require ExtUtils::MM_Unix;
our @ISA = qw(ExtUtils::MM_Unix);
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
index d4b9370bd1a..7c28520f486 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
@@ -1,7 +1,7 @@
package ExtUtils::MM_UWIN;
use strict;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
require ExtUtils::MM_Unix;
our @ISA = qw(ExtUtils::MM_Unix);
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
index c204abcb2d1..13a3b94b692 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
@@ -15,7 +15,7 @@ BEGIN {
use File::Basename;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
require ExtUtils::MM_Any;
require ExtUtils::MM_Unix;
@@ -134,13 +134,13 @@ sub guess_name {
last;
}
}
- print STDOUT "Warning (non-fatal): Couldn't find package name in ${defpm}.pm;\n\t",
+ print "Warning (non-fatal): Couldn't find package name in ${defpm}.pm;\n\t",
"defaulting package name to $defname\n"
if eof($pm);
close $pm;
}
else {
- print STDOUT "Warning (non-fatal): Couldn't find ${defpm}.pm;\n\t",
+ print "Warning (non-fatal): Couldn't find ${defpm}.pm;\n\t",
"defaulting package name to $defname\n";
}
$defname =~ s#[\d.\-_]+$##;
@@ -244,7 +244,7 @@ sub find_perl {
return "MCR $vmsfile";
}
}
- print STDOUT "Unable to find a perl $ver (by these names: @$names, in these dirs: @$dirs)\n";
+ print "Unable to find a perl $ver (by these names: @$names, in these dirs: @$dirs)\n";
0; # false and not empty
}
@@ -507,34 +507,6 @@ CODE
return;
}
-
-=item init_others (override)
-
-Provide VMS-specific forms of various compile and link commands
-
-=cut
-
-sub init_others {
- my $self = shift;
-
- # Must come first as we're modifying and deriving from the defaults.
- $self->SUPER::init_others;
-
- if ($self->{OBJECT} =~ /\s/) {
- $self->{OBJECT} =~ s/(\\)?\n+\s+/ /g;
- $self->{OBJECT} = $self->wraplist(
- map $self->fixpath($_,0), split /,?\s+/, $self->{OBJECT}
- );
- }
-
- $self->{LDFROM} = $self->wraplist(
- map $self->fixpath($_,0), split /,?\s+/, $self->{LDFROM}
- );
-
- return;
-}
-
-
=item init_platform (override)
Add PERL_VMS, MM_VMS_REVISION and MM_VMS_VERSION.
@@ -628,13 +600,31 @@ sub constants {
# Fixup files for MMS macros
# XXX is this list complete?
for my $macro (qw/
- FULLEXT VERSION_FROM OBJECT LDFROM
+ FULLEXT VERSION_FROM
/ ) {
next unless defined $self->{$macro};
$self->{$macro} = $self->fixpath($self->{$macro},0);
}
+ for my $macro (qw/
+ OBJECT LDFROM
+ / ) {
+ next unless defined $self->{$macro};
+
+ # Must expand macros before splitting on unescaped whitespace.
+ $self->{$macro} = $self->eliminate_macros($self->{$macro});
+ if ($self->{$macro} =~ /(?<!\^)\s/) {
+ $self->{$macro} =~ s/(\\)?\n+\s+/ /g;
+ $self->{$macro} = $self->wraplist(
+ map $self->fixpath($_,0), split /,?(?<!\^)\s+/, $self->{$macro}
+ );
+ }
+ else {
+ $self->{$macro} = $self->fixpath($self->{$macro},0);
+ }
+ }
+
for my $macro (qw/ XS MAN1PODS MAN3PODS PM /) {
# Where is the space coming from? --jhi
next unless $self ne " " && defined $self->{$macro};
@@ -697,7 +687,7 @@ sub cflags {
my($name,$sys,@m);
( $name = $self->{NAME} . "_cflags" ) =~ s/:/_/g ;
- print STDOUT "Unix shell script ".$Config{"$self->{'BASEEXT'}_cflags"}.
+ print "Unix shell script ".$Config{"$self->{'BASEEXT'}_cflags"}.
" required to modify CC command for $self->{'BASEEXT'}\n"
if ($Config{$name});
@@ -1298,23 +1288,12 @@ sub perldepend {
my($self) = @_;
my(@m);
- push @m, '
-$(OBJECT) : $(PERL_INC)EXTERN.h, $(PERL_INC)INTERN.h, $(PERL_INC)XSUB.h
-$(OBJECT) : $(PERL_INC)av.h, $(PERL_INC)config.h
-$(OBJECT) : $(PERL_INC)cop.h, $(PERL_INC)cv.h, $(PERL_INC)embed.h
-$(OBJECT) : $(PERL_INC)embedvar.h, $(PERL_INC)form.h
-$(OBJECT) : $(PERL_INC)gv.h, $(PERL_INC)handy.h, $(PERL_INC)hv.h
-$(OBJECT) : $(PERL_INC)intrpvar.h, $(PERL_INC)iperlsys.h, $(PERL_INC)keywords.h
-$(OBJECT) : $(PERL_INC)mg.h, $(PERL_INC)nostdio.h, $(PERL_INC)op.h
-$(OBJECT) : $(PERL_INC)opcode.h, $(PERL_INC)patchlevel.h
-$(OBJECT) : $(PERL_INC)perl.h, $(PERL_INC)perlio.h
-$(OBJECT) : $(PERL_INC)perlsdio.h, $(PERL_INC)perlvars.h
-$(OBJECT) : $(PERL_INC)perly.h, $(PERL_INC)pp.h, $(PERL_INC)pp_proto.h
-$(OBJECT) : $(PERL_INC)proto.h, $(PERL_INC)regcomp.h, $(PERL_INC)regexp.h
-$(OBJECT) : $(PERL_INC)regnodes.h, $(PERL_INC)scope.h, $(PERL_INC)sv.h
-$(OBJECT) : $(PERL_INC)thread.h, $(PERL_INC)util.h, $(PERL_INC)vmsish.h
-
-' if $self->{OBJECT};
+ if ($self->{OBJECT}) {
+ # Need to add an object file dependency on the perl headers.
+ # this is very important for XS modules in perl.git development.
+
+ push @m, $self->_perl_header_files_fragment(""); # empty separator on VMS as its in the $(PERL_INC)
+ }
if ($self->{PERL_SRC}) {
my(@macros);
@@ -1513,7 +1492,7 @@ $(MAP_TARGET) :: $(MAKE_APERL_FILE)
push @optlibs, grep { !/PerlShr/i } split ' ', +($self->ext())[2];
if ($libperl) {
unless (-f $libperl || -f ($libperl = $self->catfile($Config{'installarchlib'},'CORE',$libperl))) {
- print STDOUT "Warning: $libperl not found\n";
+ print "Warning: $libperl not found\n";
undef $libperl;
}
}
@@ -1522,7 +1501,7 @@ $(MAP_TARGET) :: $(MAKE_APERL_FILE)
$libperl = $self->catfile($self->{PERL_SRC},"libperl$self->{LIB_EXT}");
} elsif (-f ($libperl = $self->catfile($Config{'installarchlib'},'CORE',"libperl$self->{LIB_EXT}")) ) {
} else {
- print STDOUT "Warning: $libperl not found
+ print "Warning: $libperl not found
If you're going to build a static perl binary, make sure perl is installed
otherwise ignore this warning\n";
}
@@ -1651,23 +1630,23 @@ sub prefixify {
$Config{lc $var} || $Config{lc $var_no_install};
if( !$path ) {
- print STDERR " no Config found for $var.\n" if $Verbose >= 2;
+ warn " no Config found for $var.\n" if $Verbose >= 2;
$path = $self->_prefixify_default($rprefix, $default);
}
elsif( !$self->{ARGS}{PREFIX} || !$self->file_name_is_absolute($path) ) {
# do nothing if there's no prefix or if its relative
}
elsif( $sprefix eq $rprefix ) {
- print STDERR " no new prefix.\n" if $Verbose >= 2;
+ warn " no new prefix.\n" if $Verbose >= 2;
}
else {
- print STDERR " prefixify $var => $path\n" if $Verbose >= 2;
- print STDERR " from $sprefix to $rprefix\n" if $Verbose >= 2;
+ warn " prefixify $var => $path\n" if $Verbose >= 2;
+ warn " from $sprefix to $rprefix\n" if $Verbose >= 2;
my($path_vol, $path_dirs) = $self->splitpath( $path );
if( $path_vol eq $Config{vms_prefix}.':' ) {
- print STDERR " $Config{vms_prefix}: seen\n" if $Verbose >= 2;
+ warn " $Config{vms_prefix}: seen\n" if $Verbose >= 2;
$path_dirs =~ s{^\[}{\[.} unless $path_dirs =~ m{^\[\.};
$path = $self->_catprefix($rprefix, $path_dirs);
@@ -1685,14 +1664,14 @@ sub prefixify {
sub _prefixify_default {
my($self, $rprefix, $default) = @_;
- print STDERR " cannot prefix, using default.\n" if $Verbose >= 2;
+ warn " cannot prefix, using default.\n" if $Verbose >= 2;
if( !$default ) {
- print STDERR "No default!\n" if $Verbose >= 1;
+ warn "No default!\n" if $Verbose >= 1;
return;
}
if( !$rprefix ) {
- print STDERR "No replacement prefix!\n" if $Verbose >= 1;
+ warn "No replacement prefix!\n" if $Verbose >= 1;
return '';
}
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
index cdc6659b7f5..feeca59728b 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
@@ -1,7 +1,7 @@
package ExtUtils::MM_VOS;
use strict;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
require ExtUtils::MM_Unix;
our @ISA = qw(ExtUtils::MM_Unix);
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
index 43ae9a4dd5f..34499d30b1a 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
@@ -27,7 +27,7 @@ use ExtUtils::MakeMaker qw( neatvalue );
require ExtUtils::MM_Any;
require ExtUtils::MM_Unix;
our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
$ENV{EMXSHELL} = 'sh'; # to run `commands`
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
index 694655c1baf..9b3b3b85ba8 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_Win95;
use strict;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
require ExtUtils::MM_Win32;
our @ISA = qw(ExtUtils::MM_Win32);
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
index 92d4da0a4b9..2f01658a545 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
@@ -3,7 +3,7 @@ package ExtUtils::MY;
use strict;
require ExtUtils::MM;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
our @ISA = qw(ExtUtils::MM);
{
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm
index 872f8c181cf..6f5e541b810 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm
@@ -2,7 +2,7 @@ package ExtUtils::MakeMaker::Config;
use strict;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
use Config ();
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod
index 5120271979f..a3352477b0f 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod
@@ -1,6 +1,6 @@
package ExtUtils::MakeMaker::Tutorial;
-our $VERSION = 6.63_02;
+our $VERSION = '6.66';
=head1 NAME
@@ -19,7 +19,7 @@ ExtUtils::MakeMaker::Tutorial - Writing a module with MakeMaker
=head1 DESCRIPTION
This is a short tutorial on writing a simple module with MakeMaker.
-Its really not that hard.
+It's really not that hard.
=head2 The Mantra
@@ -95,8 +95,8 @@ See L<ExtUtils::Manifest> for more details.
=item lib/
-This is the directory where your .pm and .pod files you wish to have
-installed go. They are layed out according to namespace. So Foo::Bar
+This is the directory where the .pm and .pod files you wish to have
+installed go. They are laid out according to namespace. So Foo::Bar
is F<lib/Foo/Bar.pm>.
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm
index b5f19ea95ce..f71655d6355 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm
@@ -3,7 +3,7 @@ package ExtUtils::Mkbootstrap;
# There's just too much Dynaloader incest here to turn on strict vars.
use strict 'refs';
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
require Exporter;
our @ISA = ('Exporter');
@@ -18,7 +18,7 @@ sub Mkbootstrap {
my($baseext, @bsloadlibs)=@_;
@bsloadlibs = grep($_, @bsloadlibs); # strip empty libs
- print STDOUT " bsloadlibs=@bsloadlibs\n" if $Verbose;
+ print " bsloadlibs=@bsloadlibs\n" if $Verbose;
# We need DynaLoader here because we and/or the *_BS file may
# call dl_findfile(). We don't say `use' here because when
@@ -50,8 +50,8 @@ sub Mkbootstrap {
if (@all){
open my $bs, ">", "$baseext.bs"
or die "Unable to open $baseext.bs: $!";
- print STDOUT "Writing $baseext.bs\n";
- print STDOUT " containing: @all" if $Verbose;
+ print "Writing $baseext.bs\n";
+ print " containing: @all" if $Verbose;
print $bs "# $baseext DynaLoader bootstrap file for $^O architecture.\n";
print $bs "# Do not edit this file, changes will be lost.\n";
print $bs "# This file was automatically generated by the\n";
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm
index f0860855923..a99d19840a4 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm
@@ -10,7 +10,7 @@ use Config;
our @ISA = qw(Exporter);
our @EXPORT = qw(&Mksymlists);
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
sub Mksymlists {
my(%spec) = @_;
@@ -27,7 +27,7 @@ sub Mksymlists {
unless ( ($spec{DL_FUNCS} and keys %{$spec{DL_FUNCS}}) or
@{$spec{FUNCLIST}});
if (defined $spec{DL_FUNCS}) {
- foreach my $package (keys %{$spec{DL_FUNCS}}) {
+ foreach my $package (sort keys %{$spec{DL_FUNCS}}) {
my($packprefix,$bootseen);
($packprefix = $package) =~ s/\W/_/g;
foreach my $sym (@{$spec{DL_FUNCS}->{$package}}) {
@@ -106,14 +106,20 @@ sub _write_os2 {
print $def "EXPORTS\n ";
print $def join("\n ",@{$data->{DL_VARS}}, "\n") if @{$data->{DL_VARS}};
print $def join("\n ",@{$data->{FUNCLIST}}, "\n") if @{$data->{FUNCLIST}};
- if (%{$data->{IMPORTS}}) {
+ _print_imports($def, $data);
+ close $def;
+}
+
+sub _print_imports {
+ my ($def, $data)= @_;
+ my $imports= $data->{IMPORTS}
+ or return;
+ if ( keys %$imports ) {
print $def "IMPORTS\n";
- my ($name, $exp);
- while (($name, $exp)= each %{$data->{IMPORTS}}) {
- print $def " $name=$exp\n";
+ foreach my $name (sort keys %$imports) {
+ print $def " $name=$imports->{$name}\n";
}
}
- close $def;
}
sub _write_win32 {
@@ -150,13 +156,7 @@ sub _write_win32 {
}
}
print $def join("\n ",@syms, "\n") if @syms;
- if (%{$data->{IMPORTS}}) {
- print $def "IMPORTS\n";
- my ($name, $exp);
- while (($name, $exp)= each %{$data->{IMPORTS}}) {
- print $def " $name=$exp\n";
- }
- }
+ _print_imports($def, $data);
close $def;
}
@@ -212,10 +212,10 @@ ExtUtils::Mksymlists - write linker options files for dynamic extension
=head1 SYNOPSIS
use ExtUtils::Mksymlists;
- Mksymlists({ NAME => $name ,
+ Mksymlists( NAME => $name ,
DL_VARS => [ $var1, $var2, $var3 ],
DL_FUNCS => { $pkg1 => [ $func1, $func2 ],
- $pkg2 => [ $func3 ] });
+ $pkg2 => [ $func3 ] );
=head1 DESCRIPTION
@@ -281,9 +281,9 @@ generation of the bootstrap function for the package. To still create
the bootstrap name you have to specify the package name in the
DL_FUNCS hash:
- Mksymlists({ NAME => $name ,
+ Mksymlists( NAME => $name ,
FUNCLIST => [ $func1, $func2 ],
- DL_FUNCS => { $pkg => [] } });
+ DL_FUNCS => { $pkg => [] } );
=item IMPORTS
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm
index 44832ee3531..b5a51bf3fb1 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm
@@ -3,7 +3,7 @@ package ExtUtils::testlib;
use strict;
use warnings;
-our $VERSION = '6.63_02';
+our $VERSION = '6.66';
use Cwd;
use File::Spec;
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/01perl_bugs.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/01perl_bugs.t
new file mode 100644
index 00000000000..618dc092784
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/01perl_bugs.t
@@ -0,0 +1,25 @@
+#!/usr/bin/env perl -w
+
+# Inform the user early and clearly that their Perl is broken beyond redemption
+
+use strict;
+use warnings;
+
+use lib 't/lib';
+
+use Test::More;
+
+note "The 0.01 / Gconvert bug"; {
+ my $number = 0.01;
+ my $string = "VERSION=$number";
+
+ is "VERSION=$number", "VERSION=0.01" or do {
+ diag <<END;
+Sorry, but your perl's ability to translate decimal numbers to strings
+is broken. You should probably recompile it with -Dd_Gconvert=sprintf
+or upgrade to a newer version of Perl.
+END
+ };
+}
+
+done_testing;
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t
index 6de5a73e947..71f65f8bd50 100755
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t
@@ -31,4 +31,4 @@ cmp_ok( $?, '==', 0, 'Makefile.PL exited with zero' ) || diag @mpl_out;
ok( -e 'jakefile', 'FIRST_MAKEFILE honored' );
ok( grep(/^Writing jakefile(?:\.)? for Big::Dummy/, @mpl_out) == 1,
- 'Makefile.PL output looks right' );
+ 'Makefile.PL output looks right' );
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/Liblist.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/Liblist.t
index 7161fd373b5..37d10a1c6e7 100755
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/Liblist.t
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/Liblist.t
@@ -24,5 +24,5 @@ ok( defined &ExtUtils::Liblist::ext,
unlike( $out[2], qr/-ln0tt43r3_perl/, 'bogus library not added' );
ok( @warn, 'had warning');
- is( grep(/\QNote (probably harmless): No library found for \E(-l)?n0tt43r3_perl/, map { @$_ } @warn), 1 ) || diag join "\n", @warn;
+ is( grep(/\QWarning (mostly harmless): No library found for \E(-l)?n0tt43r3_perl/, map { @$_ } @warn), 1 ) || diag join "\n", @warn;
}
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/MM_OS2.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/MM_OS2.t
index 4d88e85f28c..08d0e1abab2 100755
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/MM_OS2.t
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/MM_OS2.t
@@ -42,7 +42,7 @@ delete $mm->{SKIPHASH};
my $res = $mm->dlsyms();
like( $res, qr/baseext\.def: Makefile/,
'... without flag, should return make targets' );
-like( $res, qr/"DL_FUNCS" => { }/,
+like( $res, qr/"DL_FUNCS" => \{ \}/,
'... should provide empty hash refs where necessary' );
like( $res, qr/"DL_VARS" => \[]/, '... and empty array refs too' );
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/MM_Win32.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/MM_Win32.t
index 4bc030d9021..6d4bf8d2885 100755
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/MM_Win32.t
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/MM_Win32.t
@@ -272,12 +272,6 @@ unlink "${script_name}$script_ext" if -f "${script_name}$script_ext";
# dist_ci() should look into that
# dist_core() should look into that
-# pasthru()
-{
- my $pastru = "PASTHRU = " . ($Config{make} =~ /^nmake/i ? "-nologo" : "");
- is( $MM->pasthru(), $pastru, 'pasthru()' );
-}
-
# _identify_compiler_environment()
{
sub _run_cc_id {
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/basic.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/basic.t
index fb374c0c9b8..1410465a9f4 100755
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/basic.t
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/basic.t
@@ -412,8 +412,5 @@ close SAVERR;
sub _normalize {
my $hash = shift;
- while(my($k,$v) = each %$hash) {
- delete $hash->{$k};
- $hash->{lc $k} = $v;
- }
+ %$hash= map { lc($_) => $hash->{$_} } keys %$hash;
}
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/hints.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/hints.t
index ab9d9553f7e..19bee553cd1 100755
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/hints.t
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/hints.t
@@ -1,8 +1,9 @@
#!/usr/bin/perl -w
-BEGIN {
- unshift @INC, 't/lib/';
-}
+use strict;
+use warnings;
+
+use lib 't/lib';
chdir 't';
use File::Spec;
@@ -13,36 +14,55 @@ use Test::More tests => 3;
my $curdir = File::Spec->curdir;
@INC = grep { $_ ne $curdir && $_ ne '.' } @INC;
+use ExtUtils::MakeMaker;
+
+# Make a hints directory for testing
mkdir('hints', 0777);
(my $os = $^O) =~ s/\./_/g;
-my $hint_file = File::Spec->catfile('hints', "$os.pl");
+my $Hint_File = File::Spec->catfile('hints', "$os.pl");
-open(HINT, ">$hint_file") || die "Can't write dummy hints file $hint_file: $!";
-print HINT <<'CLOO';
+
+my $mm = bless {}, 'ExtUtils::MakeMaker';
+
+# Write a hints file for testing
+{
+ open my $hint_fh, ">", $Hint_File || die "Can't write dummy hints file $Hint_File: $!";
+ print $hint_fh <<'CLOO';
$self->{CCFLAGS} = 'basset hounds got long ears';
CLOO
-close HINT;
+}
-use TieOut;
-use ExtUtils::MakeMaker;
+# Test our hint file is detected
+{
+ my $stderr = '';
+ local $SIG{__WARN__} = sub { $stderr .= join '', @_ };
+
+ $mm->check_hints;
+ is( $mm->{CCFLAGS}, 'basset hounds got long ears' );
+ is( $stderr, "Processing hints file $Hint_File\n" );
+}
-my $out = tie *STDERR, 'TieOut';
-my $mm = bless {}, 'ExtUtils::MakeMaker';
-$mm->check_hints;
-is( $mm->{CCFLAGS}, 'basset hounds got long ears' );
-is( $out->read, "Processing hints file $hint_file\n" );
-open(HINT, ">$hint_file") || die "Can't write dummy hints file $hint_file: $!";
-print HINT <<'CLOO';
+# Test a hint file which dies
+{
+ open my $hint_fh, ">", $Hint_File || die "Can't write dummy hints file $Hint_File: $!";
+ print $hint_fh <<'CLOO';
die "Argh!\n";
CLOO
-close HINT;
+}
+
-$mm->check_hints;
-is( $out->read, <<OUT, 'hint files produce errors' );
-Processing hints file $hint_file
+# Test the hint file which produces errors
+{
+ my $stderr = '';
+ local $SIG{__WARN__} = sub { $stderr .= join '', @_ };
+
+ $mm->check_hints;
+ is( $stderr, <<OUT, 'hint files produce errors' );
+Processing hints file $Hint_File
Argh!
OUT
+}
END {
use File::Path;
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/metafile_data.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/metafile_data.t
index 4c8fa76231b..1fb8d10b9dc 100755
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/metafile_data.t
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/metafile_data.t
@@ -3,7 +3,7 @@ BEGIN {
}
use strict;
-use Test::More tests => 19;
+use Test::More tests => 22;
use Data::Dumper;
use File::Temp;
@@ -402,29 +402,37 @@ my $new_mm = sub {
version => '6.57_07',
abstract => 'Create a module Makefile',
author => ['Michael G Schwern <schwern@pobox.com>'],
- license => 'perl',
+ license => ['perl_5'],
dynamic_config => 0,
- requires => {
- "DirHandle" => 0,
- "File::Basename" => 0,
- "File::Spec" => "0.8",
- "Pod::Man" => 0,
- "perl" => "5.006"
- },
-
- configure_requires => {
- },
- build_requires => {
- 'Fake::Module1' => 1.01,
+ prereqs => {
+ runtime => {
+ requires => {
+ "DirHandle" => 0,
+ "File::Basename" => 0,
+ "File::Spec" => "0.8",
+ "Pod::Man" => 0,
+ "perl" => "5.006",
+ },
+ },
+ configure => {
+ requires => {
+ },
+ },
+ build => {
+ requires => {
+ 'Fake::Module1' => 1.01,
+ },
+ },
},
+ release_status => 'testing',
resources => {
- license => 'http://dev.perl.org/licenses/',
- homepage => 'http://makemaker.org',
- bugtracker => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
- repository => 'http://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker',
- x_MailingList => 'makemaker@perl.org',
+ license => [ 'http://dev.perl.org/licenses/' ],
+ homepage => 'http://makemaker.org',
+ bugtracker => { web => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker' },
+ repository => { url => 'http://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker' },
+ x_MailingList => 'makemaker@perl.org',
},
no_index => {
@@ -434,8 +442,8 @@ my $new_mm = sub {
generated_by => "ExtUtils::MakeMaker version 6.5707, CPAN::Meta::Converter version 2.110580",
'meta-spec' => {
- url => 'http://module-build.sourceforge.net/META-spec-v1.4.html',
- version => 1.4
+ url => 'http://search.cpan.org/perldoc?CPAN::Meta::Spec',
+ version => 2,
},
};
@@ -448,6 +456,28 @@ my $new_mm = sub {
'MYMETA YAML data (BUILD_REQUIRES wins)';
}
+{
+ my $mm = $new_mm->(
+ DISTNAME => 'Foo-Bar',
+ VERSION => 1.23,
+ BUILD_REQUIRES => { "Fake::Module1" => 1.01 },
+ TEST_REQUIRES => { "Fake::Module2" => 1.23 },
+ );
+
+ my $meta = $mm->mymeta('t/META_for_testing.json');
+ is($meta->{build_requires}, undef, "no build_requires in v2 META");
+ is_deeply(
+ $meta->{prereqs}{build}{requires},
+ { "Fake::Module1" => 1.01 },
+ "build requires are one thing in META v2...",
+ );
+
+ is_deeply(
+ $meta->{prereqs}{test}{requires},
+ { "Fake::Module2" => 1.23 },
+ "...and test requires are another",
+ );
+}
note "CPAN::Meta bug using the module version instead of the meta spec version"; {
my $mm = $new_mm->(
@@ -462,7 +492,7 @@ note "CPAN::Meta bug using the module version instead of the meta spec version";
);
my $meta = $mm->mymeta("t/META_for_testing_tricky_version.yml");
- is $meta->{'meta-spec'}{version}, 1.4;
+ is $meta->{'meta-spec'}{version}, 2, "internally, our MYMETA struct is v2";
in_dir {
$mm->write_mymeta($meta);
@@ -475,7 +505,6 @@ note "CPAN::Meta bug using the module version instead of the meta spec version";
my $meta_json = Parse::CPAN::Meta->load_file("MYMETA.json");
cmp_ok $meta_json->{'meta-spec'}{version}, ">=", 2, "MYMETA.json at 2 or better";
};
-
}
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/parse_abstract.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/parse_abstract.t
index 03e56c932e4..5ced676a5e0 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/parse_abstract.t
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/parse_abstract.t
@@ -3,8 +3,9 @@
use strict;
use warnings;
+use lib 't/lib';
use ExtUtils::MakeMaker;
-
+use File::Temp qw[tempfile];
use Test::More 'no_plan';
sub test_abstract {
@@ -12,12 +13,9 @@ sub test_abstract {
local $Test::Builder::Level = $Test::Builder::Level + 1;
- my $file = "t/abstract.tmp";
- {
- open my $fh, ">", $file or die "Can't open $file";
- print $fh $code;
- close $fh;
- }
+ my ($fh,$file) = tempfile( DIR => 't', UNLINK => 1 );
+ print $fh $code;
+ close $fh;
# Hack up a minimal MakeMaker object.
my $mm = bless { DISTNAME => $package }, "MM";
@@ -25,9 +23,6 @@ sub test_abstract {
my $ok = is( $have, $want, $name );
- # Clean up the temp file, VMS style
- 1 while unlink $file;
-
return $ok;
}
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/pod2man.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/pod2man.t
index 1632234b15f..d206e0bc956 100755
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/pod2man.t
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/pod2man.t
@@ -38,7 +38,7 @@ use Test::More tests => 3;
$warnings .= join '', @_;
};
- is pod2man(), undef;
+ ok !pod2man();
is $warnings, <<'END'
Pod::Man is not available: Simulated Pod::Man failure
Man pages will not be generated during this install.
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/xs.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/xs.t
index efd682edfd3..5cb17c2fedf 100755
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/xs.t
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/xs.t
@@ -53,6 +53,6 @@ my $make_out = run("$make");
is( $?, 0, ' make exited normally' ) ||
diag $make_out;
-my $test_out = run("$make");
+my $test_out = run("$make test");
is( $?, 0, ' make test exited normally' ) ||
diag $test_out;
diff --git a/gnu/usr.bin/perl/cpan/File-CheckTree/lib/File/CheckTree.pm b/gnu/usr.bin/perl/cpan/File-CheckTree/lib/File/CheckTree.pm
new file mode 100644
index 00000000000..8107c7ac689
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/File-CheckTree/lib/File/CheckTree.pm
@@ -0,0 +1,240 @@
+package File::CheckTree;
+
+use 5.006;
+use Cwd;
+use Exporter;
+use File::Spec;
+use warnings;
+use strict;
+
+use if $] > 5.017, 'deprecate';
+
+our $VERSION = '4.42';
+our @ISA = qw(Exporter);
+our @EXPORT = qw(validate);
+
+=head1 NAME
+
+File::CheckTree - run many filetest checks on a tree
+
+=head1 SYNOPSIS
+
+ use File::CheckTree;
+
+ $num_warnings = validate( q{
+ /vmunix -e || die
+ /boot -e || die
+ /bin cd
+ csh -ex
+ csh !-ug
+ sh -ex
+ sh !-ug
+ /usr -d || warn "What happened to $file?\n"
+ });
+
+=head1 DESCRIPTION
+
+The validate() routine takes a single multiline string consisting of
+directives, each containing a filename plus a file test to try on it.
+(The file test may also be a "cd", causing subsequent relative filenames
+to be interpreted relative to that directory.) After the file test
+you may put C<|| die> to make it a fatal error if the file test fails.
+The default is C<|| warn>. The file test may optionally have a "!' prepended
+to test for the opposite condition. If you do a cd and then list some
+relative filenames, you may want to indent them slightly for readability.
+If you supply your own die() or warn() message, you can use $file to
+interpolate the filename.
+
+Filetests may be bunched: "-rwx" tests for all of C<-r>, C<-w>, and C<-x>.
+Only the first failed test of the bunch will produce a warning.
+
+The routine returns the number of warnings issued.
+
+=head1 AUTHOR
+
+File::CheckTree was derived from lib/validate.pl which was
+written by Larry Wall.
+Revised by Paul Grassie <F<grassie@perl.com>> in 2002.
+
+=head1 HISTORY
+
+File::CheckTree used to not display fatal error messages.
+It used to count only those warnings produced by a generic C<|| warn>
+(and not those in which the user supplied the message). In addition,
+the validate() routine would leave the user program in whatever
+directory was last entered through the use of "cd" directives.
+These bugs were fixed during the development of perl 5.8.
+The first fixed version of File::CheckTree was 4.2.
+
+=cut
+
+my $Warnings;
+
+sub validate {
+ my ($starting_dir, $file, $test, $cwd, $oldwarnings);
+
+ $starting_dir = cwd;
+
+ $cwd = "";
+ $Warnings = 0;
+
+ foreach my $check (split /\n/, $_[0]) {
+ my ($testlist, @testlist);
+
+ # skip blanks/comments
+ next if $check =~ /^\s*#/ || $check =~ /^\s*$/;
+
+ # Todo:
+ # should probably check for invalid directives and die
+ # but earlier versions of File::CheckTree did not do this either
+
+ # split a line like "/foo -r || die"
+ # so that $file is "/foo", $test is "-r || die"
+ # (making special allowance for quoted filenames).
+ if ($check =~ m/^\s*"([^"]+)"\s+(.*?)\s*$/ or
+ $check =~ m/^\s*'([^']+)'\s+(.*?)\s*$/ or
+ $check =~ m/^\s*(\S+?)\s+(\S.*?)\s*$/)
+ {
+ ($file, $test) = ($1,$2);
+ }
+ else {
+ die "Malformed line: '$check'";
+ };
+
+ # change a $test like "!-ug || die" to "!-Z || die",
+ # capturing the bundled tests (e.g. "ug") in $2
+ if ($test =~ s/ ^ (!?-) (\w{2,}) \b /$1Z/x) {
+ $testlist = $2;
+ # split bundled tests, e.g. "ug" to 'u', 'g'
+ @testlist = split(//, $testlist);
+ }
+ else {
+ # put in placeholder Z for stand-alone test
+ @testlist = ('Z');
+ }
+
+ # will compare these two later to stop on 1st warning w/in a bundle
+ $oldwarnings = $Warnings;
+
+ foreach my $one (@testlist) {
+ # examples of $test: "!-Z || die" or "-w || warn"
+ my $this = $test;
+
+ # expand relative $file to full pathname if preceded by cd directive
+ $file = File::Spec->catfile($cwd, $file)
+ if $cwd && !File::Spec->file_name_is_absolute($file);
+
+ # put filename in after the test operator
+ $this =~ s/(-\w\b)/$1 "\$file"/g;
+
+ # change the "-Z" representing a bundle with the $one test
+ $this =~ s/-Z/-$one/;
+
+ # if it's a "cd" directive...
+ if ($this =~ /^cd\b/) {
+ # add "|| die ..."
+ $this .= ' || die "cannot cd to $file\n"';
+ # expand "cd" directive with directory name
+ $this =~ s/\bcd\b/chdir(\$cwd = '$file')/;
+ }
+ else {
+ # add "|| warn" as a default disposition
+ $this .= ' || warn' unless $this =~ /\|\|/;
+
+ # change a generic ".. || die" or ".. || warn"
+ # to call valmess instead of die/warn directly
+ # valmess will look up the error message from %Val_Message
+ $this =~ s/ ^ ( (\S+) \s+ \S+ ) \s* \|\| \s* (die|warn) \s* $
+ /$1 || valmess('$3', '$2', \$file)/x;
+ }
+
+ {
+ # count warnings, either from valmess or '-r || warn "my msg"'
+ # also, call any pre-existing signal handler for __WARN__
+ my $orig_sigwarn = $SIG{__WARN__};
+ local $SIG{__WARN__} = sub {
+ ++$Warnings;
+ if ( $orig_sigwarn ) {
+ $orig_sigwarn->(@_);
+ }
+ else {
+ warn "@_";
+ }
+ };
+
+ # do the test
+ eval $this;
+
+ # re-raise an exception caused by a "... || die" test
+ if (my $err = $@) {
+ # in case of any cd directives, return from whence we came
+ if ($starting_dir ne cwd) {
+ chdir($starting_dir) || die "$starting_dir: $!";
+ }
+ die $err;
+ }
+ }
+
+ # stop on 1st warning within a bundle of tests
+ last if $Warnings > $oldwarnings;
+ }
+ }
+
+ # in case of any cd directives, return from whence we came
+ if ($starting_dir ne cwd) {
+ chdir($starting_dir) || die "chdir $starting_dir: $!";
+ }
+
+ return $Warnings;
+}
+
+my %Val_Message = (
+ 'r' => "is not readable by uid $>.",
+ 'w' => "is not writable by uid $>.",
+ 'x' => "is not executable by uid $>.",
+ 'o' => "is not owned by uid $>.",
+ 'R' => "is not readable by you.",
+ 'W' => "is not writable by you.",
+ 'X' => "is not executable by you.",
+ 'O' => "is not owned by you.",
+ 'e' => "does not exist.",
+ 'z' => "does not have zero size.",
+ 's' => "does not have non-zero size.",
+ 'f' => "is not a plain file.",
+ 'd' => "is not a directory.",
+ 'l' => "is not a symbolic link.",
+ 'p' => "is not a named pipe (FIFO).",
+ 'S' => "is not a socket.",
+ 'b' => "is not a block special file.",
+ 'c' => "is not a character special file.",
+ 'u' => "does not have the setuid bit set.",
+ 'g' => "does not have the setgid bit set.",
+ 'k' => "does not have the sticky bit set.",
+ 'T' => "is not a text file.",
+ 'B' => "is not a binary file."
+);
+
+sub valmess {
+ my ($disposition, $test, $file) = @_;
+ my $ferror;
+
+ if ($test =~ / ^ (!?) -(\w) \s* $ /x) {
+ my ($neg, $ftype) = ($1, $2);
+
+ $ferror = "$file $Val_Message{$ftype}";
+
+ if ($neg eq '!') {
+ $ferror =~ s/ is not / should not be / ||
+ $ferror =~ s/ does not / should not / ||
+ $ferror =~ s/ not / /;
+ }
+ }
+ else {
+ $ferror = "Can't do $test $file.\n";
+ }
+
+ die "$ferror\n" if $disposition eq 'die';
+ warn "$ferror\n";
+}
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/File-CheckTree/t/CheckTree.t b/gnu/usr.bin/perl/cpan/File-CheckTree/t/CheckTree.t
new file mode 100644
index 00000000000..d12d60cb02f
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/File-CheckTree/t/CheckTree.t
@@ -0,0 +1,181 @@
+#!./perl -w
+
+use Test::More tests => 23;
+
+use strict;
+
+require overload;
+
+use File::CheckTree;
+use File::Spec; # used to get absolute paths
+
+# We assume that we start from the dist/File-CheckTree in the perl repository,
+# or the dist root directory for the CPAN version.
+
+
+#### TEST 1 -- No warnings ####
+# usings both relative and full paths, indented comments
+
+{
+ my ($num_warnings, $path_to_libFileCheckTree);
+ $path_to_libFileCheckTree = File::Spec->rel2abs(
+ File::Spec->catfile('lib', 'File', 'CheckTree.pm'),
+ );
+
+ my @warnings;
+ local $SIG{__WARN__} = sub { push @warnings, "@_" };
+
+ eval {
+ $num_warnings = validate qq{
+ lib -d
+# comment, followed "blank" line (w/ whitespace):
+
+ # indented comment, followed blank line (w/o whitespace):
+
+ lib/File/CheckTree.pm -f
+ '$path_to_libFileCheckTree' -e || warn
+ };
+ };
+
+ diag($_) for @warnings;
+ is( $@, '' );
+ is( scalar @warnings, 0 );
+ is( $num_warnings, 0 );
+}
+
+
+#### TEST 2 -- One warning ####
+
+{
+ my ($num_warnings, @warnings);
+
+ local $SIG{__WARN__} = sub { push @warnings, "@_" };
+
+ eval {
+ $num_warnings = validate qq{
+ lib -f
+ lib/File/CheckTree.pm -f
+ };
+ };
+
+ is( $@, '' );
+ is( scalar @warnings, 1 );
+ like( $warnings[0], qr/lib is not a plain file/);
+ is( $num_warnings, 1 );
+}
+
+
+#### TEST 3 -- Multiple warnings ####
+# including first warning only from a bundle of tests,
+# generic "|| warn", default "|| warn" and "|| warn '...' "
+
+{
+ my ($num_warnings, @warnings);
+
+ local $SIG{__WARN__} = sub { push @warnings, "@_" };
+
+ eval {
+ $num_warnings = validate q{
+ lib -effd
+ lib/File/CheckTree.pm -f || die
+ lib/File/CheckTree.pm -d || warn
+ lib -f || warn "my warning: $file\n"
+ };
+ };
+
+ is( $@, '' );
+ is( scalar @warnings, 3 );
+ like( $warnings[0], qr/lib is not a plain file/);
+ like( $warnings[1], qr{lib/File/CheckTree.pm is not a directory});
+ like( $warnings[2], qr/my warning: lib/);
+ is( $num_warnings, 3 );
+}
+
+
+#### TEST 4 -- cd directive ####
+# cd directive followed by relative paths, followed by full paths
+{
+ my ($num_warnings, @warnings, $path_to_lib, $path_to_dist);
+ $path_to_lib = File::Spec->rel2abs(File::Spec->catdir('lib'));
+ $path_to_dist = File::Spec->rel2abs(File::Spec->curdir);
+
+ local $SIG{__WARN__} = sub { push @warnings, "@_" };
+
+ eval {
+ $num_warnings = validate qq{
+ lib -d || die
+ '$path_to_lib' cd
+ File -e
+ File -f
+ '$path_to_dist' cd
+ lib/File/CheckTree.pm -ef
+ lib/File/CheckTree.pm -d || warn
+ '$path_to_lib' -d || die
+ };
+ };
+
+ is( $@, '' );
+ is( scalar @warnings, 2 );
+ like( $warnings[0], qr/File is not a plain file/);
+ like( $warnings[1], qr/CheckTree\.pm is not a directory/);
+ is( $num_warnings, 2 );
+}
+
+
+#### TEST 5 -- Exception ####
+# test with generic "|| die"
+{
+ my $num_warnings;
+
+ eval {
+ $num_warnings = validate q{
+ lib -ef || die
+ lib/File/CheckTree.pm -d
+ };
+ };
+
+ like($@, qr/lib is not a plain file/);
+}
+
+
+#### TEST 6 -- Exception ####
+# test with "|| die 'my error message'"
+{
+ my $num_warnings;
+
+ eval {
+ $num_warnings = validate q{
+ lib -ef || die "yadda $file yadda...\n"
+ lib/File/CheckTree.pm -d
+ };
+ };
+
+ like($@, qr/yadda lib yadda/);
+ is( $num_warnings, undef );
+}
+
+#### TEST 7 -- Quoted file names ####
+{
+ my $num_warnings;
+ eval {
+ $num_warnings = validate q{
+ "a file with whitespace" !-ef
+ 'a file with whitespace' !-ef
+ };
+ };
+
+ is ( $@, '', 'No errors mean we compile correctly');
+}
+
+#### TEST 8 -- Malformed query ####
+{
+ my $num_warnings;
+ eval {
+ $num_warnings = validate q{
+ a file with whitespace !-ef
+ };
+ };
+
+ like( $@, qr/syntax error/,
+ 'We got a syntax error for a malformed file query' );
+}
diff --git a/gnu/usr.bin/perl/cpan/File-Fetch/lib/File/Fetch.pm b/gnu/usr.bin/perl/cpan/File-Fetch/lib/File/Fetch.pm
index 5d0a51df161..37f7bc6ca9e 100644
--- a/gnu/usr.bin/perl/cpan/File-Fetch/lib/File/Fetch.pm
+++ b/gnu/usr.bin/perl/cpan/File-Fetch/lib/File/Fetch.pm
@@ -22,7 +22,7 @@ use vars qw[ $VERBOSE $PREFER_BIN $FROM_EMAIL $USER_AGENT
$FTP_PASSIVE $TIMEOUT $DEBUG $WARN
];
-$VERSION = '0.32';
+$VERSION = '0.38';
$VERSION = eval $VERSION; # avoid warnings with development releases
$PREFER_BIN = 0; # XXX TODO implement
$FROM_EMAIL = 'File-Fetch@example.com';
@@ -50,7 +50,7 @@ local $Module::Load::Conditional::VERBOSE = 0;
### see what OS we are on, important for file:// uris ###
use constant ON_WIN => ($^O eq 'MSWin32');
-use constant ON_VMS => ($^O eq 'VMS');
+use constant ON_VMS => ($^O eq 'VMS');
use constant ON_UNIX => (!ON_WIN);
use constant HAS_VOL => (ON_WIN);
use constant HAS_SHARE => (ON_WIN);
@@ -107,7 +107,7 @@ The scheme from the uri (like 'file', 'http', etc)
=item $ff->host
-The hostname in the uri. Will be empty if host was originally
+The hostname in the uri. Will be empty if host was originally
'localhost' for a 'file://' url.
=item $ff->vol
@@ -117,8 +117,8 @@ of a file:// is considered to the be volume specification for the file.
Thus on Win32 this routine returns the volume, on other operating
systems this returns nothing.
-On Windows this value may be empty if the uri is to a network share, in
-which case the 'share' property will be defined. Additionally, volume
+On Windows this value may be empty if the uri is to a network share, in
+which case the 'share' property will be defined. Additionally, volume
specifications that use '|' as ':' will be converted on read to use ':'.
On VMS, which has a volume concept, this field will be empty because VMS
@@ -127,7 +127,7 @@ information is transparently included.
=item $ff->share
-On systems with the concept of a network share (currently only Windows) returns
+On systems with the concept of a network share (currently only Windows) returns
the sharename from a file://// url. On other operating systems returns empty.
=item $ff->path
@@ -137,7 +137,14 @@ The path from the uri, will be at least a single '/'.
=item $ff->file
The name of the remote file. For the local file name, the
-result of $ff->output_file will be used.
+result of $ff->output_file will be used.
+
+=item $ff->file_default
+
+The name of the default local file, that $ff->output_file falls back to if
+it would otherwise return no filename. For example when fetching a URI like
+http://www.abc.net.au/ the contents retrieved may be from a remote file called
+'index.html'. The default value of this attribute is literally 'file_default'.
=cut
@@ -156,10 +163,12 @@ result of $ff->output_file will be used.
uri => { required => 1 },
vol => { default => '' }, # windows for file:// uris
share => { default => '' }, # windows for file:// uris
+ file_default => { default => 'file_default' },
+ tempdir_root => { required => 1 }, # Should be lazy-set at ->new()
_error_msg => { no_override => 1 },
_error_msg_long => { no_override => 1 },
};
-
+
for my $method ( keys %$Tmpl ) {
no strict 'refs';
*$method = sub {
@@ -168,28 +177,28 @@ result of $ff->output_file will be used.
return $self->{$method};
}
}
-
+
sub _create {
my $class = shift;
my %hash = @_;
-
+
my $args = check( $Tmpl, \%hash ) or return;
-
+
bless $args, $class;
-
+
if( lc($args->scheme) ne 'file' and not $args->host ) {
return $class->_error(loc(
"Hostname required when fetching from '%1'",$args->scheme));
}
-
- for (qw[path file]) {
+
+ for (qw[path]) {
unless( $args->$_() ) { # 5.5.x needs the ()
return $class->_error(loc("No '%1' specified",$_));
}
}
-
+
return $args;
- }
+ }
}
=item $ff->output_file
@@ -199,7 +208,7 @@ but any query parameters are stripped off. For example:
http://example.com/index.html?x=y
-would make the output file be C<index.html> rather than
+would make the output file be C<index.html> rather than
C<index.html?x=y>.
=back
@@ -209,47 +218,49 @@ C<index.html?x=y>.
sub output_file {
my $self = shift;
my $file = $self->file;
-
+
$file =~ s/\?.*$//g;
-
+
+ $file ||= $self->file_default;
+
return $file;
}
### XXX do this or just point to URI::Escape?
# =head2 $esc_uri = $ff->escaped_uri
-#
+#
# =cut
-#
+#
# ### most of this is stolen straight from URI::escape
# { ### Build a char->hex map
# my %escapes = map { chr($_) => sprintf("%%%02X", $_) } 0..255;
-#
+#
# sub escaped_uri {
# my $self = shift;
# my $uri = $self->uri;
-#
+#
# ### Default unsafe characters. RFC 2732 ^(uric - reserved)
# $uri =~ s/([^A-Za-z0-9\-_.!~*'()])/
# $escapes{$1} || $self->_fail_hi($1)/ge;
-#
+#
# return $uri;
# }
-#
+#
# sub _fail_hi {
# my $self = shift;
# my $char = shift;
-#
+#
# $self->_error(loc(
-# "Can't escape '%1', try using the '%2' module instead",
+# "Can't escape '%1', try using the '%2' module instead",
# sprintf("\\x{%04X}", ord($char)), 'URI::Escape'
-# ));
+# ));
# }
-#
+#
# sub output_file {
-#
+#
# }
-#
-#
+#
+#
# }
=head1 METHODS
@@ -267,9 +278,11 @@ sub new {
my $class = shift;
my %hash = @_;
- my ($uri);
+ my ($uri, $file_default, $tempdir_root);
my $tmpl = {
- uri => { required => 1, store => \$uri },
+ uri => { required => 1, store => \$uri },
+ file_default => { required => 0, store => \$file_default },
+ tempdir_root => { required => 0, store => \$tempdir_root },
};
check( $tmpl, \%hash ) or return;
@@ -277,6 +290,10 @@ sub new {
### parse the uri to usable parts ###
my $href = $class->_parse_uri( $uri ) or return;
+ $href->{file_default} = $file_default if $file_default;
+ $href->{tempdir_root} = File::Spec->rel2abs( $tempdir_root ) if $tempdir_root;
+ $href->{tempdir_root} = File::Spec->rel2abs( Cwd::cwd ) if not $href->{tempdir_root};
+
### make it into a FFI object ###
my $ff = $class->_create( %$href ) or return;
@@ -300,22 +317,22 @@ sub new {
###
### In the case of file:// urls there maybe be additional fields
###
-### For systems with volume specifications such as Win32 there will be
+### For systems with volume specifications such as Win32 there will be
### a volume specifier provided in the 'vol' field.
###
### 'vol' => 'volumename'
###
### For windows file shares there may be a 'share' key specified
###
-### 'share' => 'sharename'
+### 'share' => 'sharename'
###
-### Note that the rules of what a file:// url means vary by the operating system
+### Note that the rules of what a file:// url means vary by the operating system
### of the host being addressed. Thus file:///d|/foo/bar.txt means the obvious
-### 'D:\foo\bar.txt' on windows, but on unix it means '/d|/foo/bar.txt' and
+### 'D:\foo\bar.txt' on windows, but on unix it means '/d|/foo/bar.txt' and
### not '/foo/bar.txt'
###
-### Similarly if the host interpreting the url is VMS then
-### file:///disk$user/my/notes/note12345.txt' means
+### Similarly if the host interpreting the url is VMS then
+### file:///disk$user/my/notes/note12345.txt' means
### 'DISK$USER:[MY.NOTES]NOTE123456.TXT' but will be returned the same as
### if it is unix where it means /disk$user/my/notes/note12345.txt'.
### Except for some cases in the File::Spec methods, Perl on VMS will generally
@@ -341,7 +358,7 @@ sub _parse_uri {
### And wikipedia for more on windows file:// urls
### http://en.wikipedia.org/wiki/File://
if( $href->{scheme} eq 'file' ) {
-
+
my @parts = split '/',$uri;
### file://hostname/...
@@ -350,36 +367,36 @@ sub _parse_uri {
$href->{host} = $parts[0] || '';
### index in @parts where the path components begin;
- my $index = 1;
+ my $index = 1;
- ### file:////hostname/sharename/blah.txt
+ ### file:////hostname/sharename/blah.txt
if ( HAS_SHARE and not length $parts[0] and not length $parts[1] ) {
-
+
$href->{host} = $parts[2] || ''; # avoid warnings
- $href->{share} = $parts[3] || ''; # avoid warnings
+ $href->{share} = $parts[3] || ''; # avoid warnings
$index = 4 # index after the share
### file:///D|/blah.txt
### file:///D:/blah.txt
} elsif (HAS_VOL) {
-
+
### this code comes from dmq's patch, but:
### XXX if volume is empty, wouldn't that be an error? --kane
- ### if so, our file://localhost test needs to be fixed as wel
+ ### if so, our file://localhost test needs to be fixed as wel
$href->{vol} = $parts[1] || '';
### correct D| style colume descriptors
$href->{vol} =~ s/\A([A-Z])\|\z/$1:/i if ON_WIN;
$index = 2; # index after the volume
- }
+ }
### rebuild the path from the leftover parts;
$href->{path} = join '/', '', splice( @parts, $index, $#parts );
} else {
- ### using anything but qw() in hash slices may produce warnings
+ ### using anything but qw() in hash slices may produce warnings
### in older perls :-(
@{$href}{ qw(host path) } = $uri =~ m|([^/]*)(/.*)$|s;
}
@@ -390,7 +407,7 @@ sub _parse_uri {
$href->{file} = $parts[2];
}
- ### host will be empty if the target was 'localhost' and the
+ ### host will be empty if the target was 'localhost' and the
### scheme was 'file'
$href->{host} = '' if ($href->{host} eq 'localhost') and
($href->{scheme} eq 'file');
@@ -402,7 +419,7 @@ sub _parse_uri {
Fetches the file you requested and returns the full path to the file.
-By default it writes to C<cwd()>, but you can override that by specifying
+By default it writes to C<cwd()>, but you can override that by specifying
the C<to> argument:
### file fetch to /tmp, full path to the file in $where
@@ -431,7 +448,7 @@ sub fetch {
my ($to, $fh);
### you want us to slurp the contents
if( ref $target and UNIVERSAL::isa( $target, 'SCALAR' ) ) {
- $to = tempdir( 'FileFetch.XXXXXX', CLEANUP => 1 );
+ $to = tempdir( 'FileFetch.XXXXXX', DIR => $self->tempdir_root, CLEANUP => 1 );
### plain old fetch
} else {
@@ -443,7 +460,7 @@ sub fetch {
### create the path if it doesn't exist yet ###
unless( -d $to ) {
eval { mkpath( $to ) };
-
+
return $self->_error(loc("Could not create path '%1'",$to)) if $@;
}
}
@@ -453,9 +470,9 @@ sub fetch {
### we dont use catfile on win32 because if we are using a cygwin tool
### under cmd.exe they wont understand windows style separators.
- my $out_to = ON_WIN ? $to.'/'.$self->output_file
+ my $out_to = ON_WIN ? $to.'/'.$self->output_file
: File::Spec->catfile( $to, $self->output_file );
-
+
for my $method ( @{ $METHODS->{$self->scheme} } ) {
my $sub = '_'.$method.'_fetch';
@@ -473,13 +490,13 @@ sub fetch {
### there's serious issues with IPC::Run and quoting of command
### line arguments. using quotes in the wrong place breaks things,
- ### and in the case of say,
+ ### and in the case of say,
### C:\cygwin\bin\wget.EXE --quiet --passive-ftp --output-document
### "index.html" "http://www.cpan.org/index.html?q=1&y=2"
### it doesn't matter how you quote, it always fails.
local $IPC::Cmd::USE_IPC_RUN = 0;
-
- if( my $file = $self->$sub(
+
+ if( my $file = $self->$sub(
to => $out_to
)){
@@ -496,18 +513,18 @@ sub fetch {
### slurp mode?
if( ref $target and UNIVERSAL::isa( $target, 'SCALAR' ) ) {
-
+
### open the file
open my $fh, "<$file" or do {
$self->_error(
loc("Could not open '%1': %2", $file, $!));
- return;
+ return;
};
-
+
### slurp
$$target = do { local $/; <$fh> };
-
- }
+
+ }
my $abs = File::Spec->rel2abs( $file );
return $abs;
@@ -547,41 +564,40 @@ sub _lwp_fetch {
};
- if( can_load(modules => $use_list) ) {
-
- ### setup the uri object
- my $uri = URI->new( File::Spec::Unix->catfile(
- $self->path, $self->file
- ) );
+ unless( can_load( modules => $use_list ) ) {
+ $METHOD_FAIL->{'lwp'} = 1;
+ return;
+ }
- ### special rules apply for file:// uris ###
- $uri->scheme( $self->scheme );
- $uri->host( $self->scheme eq 'file' ? '' : $self->host );
- $uri->userinfo("anonymous:$FROM_EMAIL") if $self->scheme ne 'file';
+ ### setup the uri object
+ my $uri = URI->new( File::Spec::Unix->catfile(
+ $self->path, $self->file
+ ) );
- ### set up the useragent object
- my $ua = LWP::UserAgent->new();
- $ua->timeout( $TIMEOUT ) if $TIMEOUT;
- $ua->agent( $USER_AGENT );
- $ua->from( $FROM_EMAIL );
- $ua->env_proxy;
+ ### special rules apply for file:// uris ###
+ $uri->scheme( $self->scheme );
+ $uri->host( $self->scheme eq 'file' ? '' : $self->host );
+ $uri->userinfo("anonymous:$FROM_EMAIL") if $self->scheme ne 'file';
- my $res = $ua->mirror($uri, $to) or return;
+ ### set up the useragent object
+ my $ua = LWP::UserAgent->new();
+ $ua->timeout( $TIMEOUT ) if $TIMEOUT;
+ $ua->agent( $USER_AGENT );
+ $ua->from( $FROM_EMAIL );
+ $ua->env_proxy;
- ### uptodate or fetched ok ###
- if ( $res->code == 304 or $res->code == 200 ) {
- return $to;
+ my $res = $ua->mirror($uri, $to) or return;
- } else {
- return $self->_error(loc("Fetch failed! HTTP response: %1 %2 [%3]",
- $res->code, HTTP::Status::status_message($res->code),
- $res->status_line));
- }
+ ### uptodate or fetched ok ###
+ if ( $res->code == 304 or $res->code == 200 ) {
+ return $to;
} else {
- $METHOD_FAIL->{'lwp'} = 1;
- return;
+ return $self->_error(loc("Fetch failed! HTTP response: %1 %2 [%3]",
+ $res->code, HTTP::Status::status_message($res->code),
+ $res->status_line));
}
+
}
### HTTP::Tiny fetching ###
@@ -600,28 +616,26 @@ sub _httptiny_fetch {
};
- if( can_load(modules => $use_list) ) {
+ unless( can_load(modules => $use_list) ) {
+ $METHOD_FAIL->{'httptiny'} = 1;
+ return;
+ }
- my $uri = $self->uri;
+ my $uri = $self->uri;
- my $http = HTTP::Tiny->new( ( $TIMEOUT ? ( timeout => $TIMEOUT ) : () ) );
+ my $http = HTTP::Tiny->new( ( $TIMEOUT ? ( timeout => $TIMEOUT ) : () ) );
- my $rc = $http->mirror( $uri, $to );
+ my $rc = $http->mirror( $uri, $to );
- unless ( $rc->{success} ) {
+ unless ( $rc->{success} ) {
- return $self->_error(loc( "Fetch failed! HTTP response: %1 [%2]",
- $rc->{status}, $rc->{reason} ) );
+ return $self->_error(loc( "Fetch failed! HTTP response: %1 [%2]",
+ $rc->{status}, $rc->{reason} ) );
- }
+ }
- return $to;
+ return $to;
- }
- else {
- $METHOD_FAIL->{'httptiny'} = 1;
- return;
- }
}
### HTTP::Lite fetching ###
@@ -641,66 +655,63 @@ sub _httplite_fetch {
};
- # https://github.com/dagolden/cpanpm/compare/master...private%2Fuse-http-lite
-
- if( can_load(modules => $use_list) ) {
+ unless( can_load(modules => $use_list) ) {
+ $METHOD_FAIL->{'httplite'} = 1;
+ return;
+ }
- my $uri = $self->uri;
- my $retries = 0;
+ my $uri = $self->uri;
+ my $retries = 0;
- RETRIES: while ( $retries++ < 5 ) {
+ RETRIES: while ( $retries++ < 5 ) {
- my $http = HTTP::Lite->new();
- # Naughty naughty but there isn't any accessor/setter
- $http->{timeout} = $TIMEOUT if $TIMEOUT;
- $http->http11_mode(1);
+ my $http = HTTP::Lite->new();
+ # Naughty naughty but there isn't any accessor/setter
+ $http->{timeout} = $TIMEOUT if $TIMEOUT;
+ $http->http11_mode(1);
- my $fh = FileHandle->new;
+ my $fh = FileHandle->new;
- unless ( $fh->open($to,'>') ) {
- return $self->_error(loc(
- "Could not open '%1' for writing: %2",$to,$!));
- }
+ unless ( $fh->open($to,'>') ) {
+ return $self->_error(loc(
+ "Could not open '%1' for writing: %2",$to,$!));
+ }
- $fh->autoflush(1);
+ $fh->autoflush(1);
- binmode $fh;
+ binmode $fh;
- my $rc = $http->request( $uri, sub { my ($self,$dref,$cbargs) = @_; local $\; print {$cbargs} $$dref }, $fh );
+ my $rc = $http->request( $uri, sub { my ($self,$dref,$cbargs) = @_; local $\; print {$cbargs} $$dref }, $fh );
- close $fh;
+ close $fh;
- if ( $rc == 301 || $rc == 302 ) {
- my $loc;
- HEADERS: for ($http->headers_array) {
- /Location: (\S+)/ and $loc = $1, last HEADERS;
- }
- #$loc or last; # Think we should squeal here.
- if ($loc =~ m!^/!) {
- $uri =~ s{^(\w+?://[^/]+)/.*$}{$1};
- $uri .= $loc;
- }
- else {
- $uri = $loc;
- }
- next RETRIES;
+ if ( $rc == 301 || $rc == 302 ) {
+ my $loc;
+ HEADERS: for ($http->headers_array) {
+ /Location: (\S+)/ and $loc = $1, last HEADERS;
}
- elsif ( $rc == 200 ) {
- return $to;
+ #$loc or last; # Think we should squeal here.
+ if ($loc =~ m!^/!) {
+ $uri =~ s{^(\w+?://[^/]+)/.*$}{$1};
+ $uri .= $loc;
}
else {
- return $self->_error(loc("Fetch failed! HTTP response: %1 [%2]",
- $rc, $http->status_message));
+ $uri = $loc;
}
+ next RETRIES;
+ }
+ elsif ( $rc == 200 ) {
+ return $to;
+ }
+ else {
+ return $self->_error(loc("Fetch failed! HTTP response: %1 [%2]",
+ $rc, $http->status_message));
+ }
- } # Loop for 5 retries.
+ } # Loop for 5 retries.
- return $self->_error("Fetch failed! Gave up after 5 tries");
+ return $self->_error("Fetch failed! Gave up after 5 tries");
- } else {
- $METHOD_FAIL->{'httplite'} = 1;
- return;
- }
}
### Simple IO::Socket::INET fetching ###
@@ -719,74 +730,73 @@ sub _iosock_fetch {
'IO::Select' => '0.0',
};
- if( can_load(modules => $use_list) ) {
- my $sock = IO::Socket::INET->new(
- PeerHost => $self->host,
- ( $self->host =~ /:/ ? () : ( PeerPort => 80 ) ),
- );
+ unless( can_load(modules => $use_list) ) {
+ $METHOD_FAIL->{'iosock'} = 1;
+ return;
+ }
- unless ( $sock ) {
- return $self->_error(loc("Could not open socket to '%1', '%2'",$self->host,$!));
- }
+ my $sock = IO::Socket::INET->new(
+ PeerHost => $self->host,
+ ( $self->host =~ /:/ ? () : ( PeerPort => 80 ) ),
+ );
- my $fh = FileHandle->new;
+ unless ( $sock ) {
+ return $self->_error(loc("Could not open socket to '%1', '%2'",$self->host,$!));
+ }
- # Check open()
+ my $fh = FileHandle->new;
- unless ( $fh->open($to,'>') ) {
- return $self->_error(loc(
- "Could not open '%1' for writing: %2",$to,$!));
- }
+ # Check open()
- $fh->autoflush(1);
- binmode $fh;
+ unless ( $fh->open($to,'>') ) {
+ return $self->_error(loc(
+ "Could not open '%1' for writing: %2",$to,$!));
+ }
- my $path = File::Spec::Unix->catfile( $self->path, $self->file );
- my $req = "GET $path HTTP/1.0\x0d\x0aHost: " . $self->host . "\x0d\x0a\x0d\x0a";
- $sock->send( $req );
+ $fh->autoflush(1);
+ binmode $fh;
- my $select = IO::Select->new( $sock );
+ my $path = File::Spec::Unix->catfile( $self->path, $self->file );
+ my $req = "GET $path HTTP/1.0\x0d\x0aHost: " . $self->host . "\x0d\x0a\x0d\x0a";
+ $sock->send( $req );
- my $resp = '';
- my $normal = 0;
- while ( $select->can_read( $TIMEOUT || 60 ) ) {
- my $ret = $sock->sysread( $resp, 4096, length($resp) );
- if ( !defined $ret or $ret == 0 ) {
- $select->remove( $sock );
- $normal++;
- }
- }
- close $sock;
+ my $select = IO::Select->new( $sock );
- unless ( $normal ) {
- return $self->_error(loc("Socket timed out after '%1' seconds", ( $TIMEOUT || 60 )));
- }
+ my $resp = '';
+ my $normal = 0;
+ while ( $select->can_read( $TIMEOUT || 60 ) ) {
+ my $ret = $sock->sysread( $resp, 4096, length($resp) );
+ if ( !defined $ret or $ret == 0 ) {
+ $select->remove( $sock );
+ $normal++;
+ }
+ }
+ close $sock;
- # Check the "response"
- # Strip preceding blank lines apparently they are allowed (RFC 2616 4.1)
- $resp =~ s/^(\x0d?\x0a)+//;
- # Check it is an HTTP response
- unless ( $resp =~ m!^HTTP/(\d+)\.(\d+)!i ) {
- return $self->_error(loc("Did not get a HTTP response from '%1'",$self->host));
- }
+ unless ( $normal ) {
+ return $self->_error(loc("Socket timed out after '%1' seconds", ( $TIMEOUT || 60 )));
+ }
- # Check for OK
- my ($code) = $resp =~ m!^HTTP/\d+\.\d+\s+(\d+)!i;
- unless ( $code eq '200' ) {
- return $self->_error(loc("Got a '%1' from '%2' expected '200'",$code,$self->host));
- }
+ # Check the "response"
+ # Strip preceding blank lines apparently they are allowed (RFC 2616 4.1)
+ $resp =~ s/^(\x0d?\x0a)+//;
+ # Check it is an HTTP response
+ unless ( $resp =~ m!^HTTP/(\d+)\.(\d+)!i ) {
+ return $self->_error(loc("Did not get a HTTP response from '%1'",$self->host));
+ }
- {
- local $\;
- print $fh +($resp =~ m/\x0d\x0a\x0d\x0a(.*)$/s )[0];
- }
- close $fh;
- return $to;
+ # Check for OK
+ my ($code) = $resp =~ m!^HTTP/\d+\.\d+\s+(\d+)!i;
+ unless ( $code eq '200' ) {
+ return $self->_error(loc("Got a '%1' from '%2' expected '200'",$code,$self->host));
+ }
- } else {
- $METHOD_FAIL->{'iosock'} = 1;
- return;
+ {
+ local $\;
+ print $fh +($resp =~ m/\x0d\x0a\x0d\x0a(.*)$/s )[0];
}
+ close $fh;
+ return $to;
}
### Net::FTP fetching
@@ -803,44 +813,43 @@ sub _netftp_fetch {
### required modules ###
my $use_list = { 'Net::FTP' => 0 };
- if( can_load( modules => $use_list ) ) {
+ unless( can_load( modules => $use_list ) ) {
+ $METHOD_FAIL->{'netftp'} = 1;
+ return;
+ }
- ### make connection ###
- my $ftp;
- my @options = ($self->host);
- push(@options, Timeout => $TIMEOUT) if $TIMEOUT;
- unless( $ftp = Net::FTP->new( @options ) ) {
- return $self->_error(loc("Ftp creation failed: %1",$@));
- }
+ ### make connection ###
+ my $ftp;
+ my @options = ($self->host);
+ push(@options, Timeout => $TIMEOUT) if $TIMEOUT;
+ unless( $ftp = Net::FTP->new( @options ) ) {
+ return $self->_error(loc("Ftp creation failed: %1",$@));
+ }
- ### login ###
- unless( $ftp->login( anonymous => $FROM_EMAIL ) ) {
- return $self->_error(loc("Could not login to '%1'",$self->host));
- }
+ ### login ###
+ unless( $ftp->login( anonymous => $FROM_EMAIL ) ) {
+ return $self->_error(loc("Could not login to '%1'",$self->host));
+ }
- ### set binary mode, just in case ###
- $ftp->binary;
+ ### set binary mode, just in case ###
+ $ftp->binary;
- ### create the remote path
- ### remember remote paths are unix paths! [#11483]
- my $remote = File::Spec::Unix->catfile( $self->path, $self->file );
+ ### create the remote path
+ ### remember remote paths are unix paths! [#11483]
+ my $remote = File::Spec::Unix->catfile( $self->path, $self->file );
- ### fetch the file ###
- my $target;
- unless( $target = $ftp->get( $remote, $to ) ) {
- return $self->_error(loc("Could not fetch '%1' from '%2'",
- $remote, $self->host));
- }
+ ### fetch the file ###
+ my $target;
+ unless( $target = $ftp->get( $remote, $to ) ) {
+ return $self->_error(loc("Could not fetch '%1' from '%2'",
+ $remote, $self->host));
+ }
- ### log out ###
- $ftp->quit;
+ ### log out ###
+ $ftp->quit;
- return $target;
+ return $target;
- } else {
- $METHOD_FAIL->{'netftp'} = 1;
- return;
- }
}
### /bin/wget fetch ###
@@ -854,47 +863,46 @@ sub _wget_fetch {
};
check( $tmpl, \%hash ) or return;
+ my $wget;
### see if we have a wget binary ###
- if( my $wget = can_run('wget') ) {
-
- ### no verboseness, thanks ###
- my $cmd = [ $wget, '--quiet' ];
+ unless( $wget = can_run('wget') ) {
+ $METHOD_FAIL->{'wget'} = 1;
+ return;
+ }
- ### if a timeout is set, add it ###
- push(@$cmd, '--timeout=' . $TIMEOUT) if $TIMEOUT;
+ ### no verboseness, thanks ###
+ my $cmd = [ $wget, '--quiet' ];
- ### run passive if specified ###
- push @$cmd, '--passive-ftp' if $FTP_PASSIVE;
+ ### if a timeout is set, add it ###
+ push(@$cmd, '--timeout=' . $TIMEOUT) if $TIMEOUT;
- ### set the output document, add the uri ###
- push @$cmd, '--output-document', $to, $self->uri;
+ ### run passive if specified ###
+ push @$cmd, '--passive-ftp' if $FTP_PASSIVE;
- ### with IPC::Cmd > 0.41, this is fixed in teh library,
- ### and there's no need for special casing any more.
- ### DO NOT quote things for IPC::Run, it breaks stuff.
- # $IPC::Cmd::USE_IPC_RUN
- # ? ($to, $self->uri)
- # : (QUOTE. $to .QUOTE, QUOTE. $self->uri .QUOTE);
+ ### set the output document, add the uri ###
+ push @$cmd, '--output-document', $to, $self->uri;
- ### shell out ###
- my $captured;
- unless(run( command => $cmd,
- buffer => \$captured,
- verbose => $DEBUG
- )) {
- ### wget creates the output document always, even if the fetch
- ### fails.. so unlink it in that case
- 1 while unlink $to;
-
- return $self->_error(loc( "Command failed: %1", $captured || '' ));
- }
+ ### with IPC::Cmd > 0.41, this is fixed in teh library,
+ ### and there's no need for special casing any more.
+ ### DO NOT quote things for IPC::Run, it breaks stuff.
+ # $IPC::Cmd::USE_IPC_RUN
+ # ? ($to, $self->uri)
+ # : (QUOTE. $to .QUOTE, QUOTE. $self->uri .QUOTE);
- return $to;
+ ### shell out ###
+ my $captured;
+ unless(run( command => $cmd,
+ buffer => \$captured,
+ verbose => $DEBUG
+ )) {
+ ### wget creates the output document always, even if the fetch
+ ### fails.. so unlink it in that case
+ 1 while unlink $to;
- } else {
- $METHOD_FAIL->{'wget'} = 1;
- return;
+ return $self->_error(loc( "Command failed: %1", $captured || '' ));
}
+
+ return $to;
}
### /bin/lftp fetch ###
@@ -908,67 +916,66 @@ sub _lftp_fetch {
};
check( $tmpl, \%hash ) or return;
- ### see if we have a wget binary ###
- if( my $lftp = can_run('lftp') ) {
+ ### see if we have a lftp binary ###
+ my $lftp;
+ unless( $lftp = can_run('lftp') ) {
+ $METHOD_FAIL->{'lftp'} = 1;
+ return;
+ }
- ### no verboseness, thanks ###
- my $cmd = [ $lftp, '-f' ];
+ ### no verboseness, thanks ###
+ my $cmd = [ $lftp, '-f' ];
- my $fh = File::Temp->new;
-
- my $str;
-
- ### if a timeout is set, add it ###
- $str .= "set net:timeout $TIMEOUT;\n" if $TIMEOUT;
+ my $fh = File::Temp->new;
- ### run passive if specified ###
- $str .= "set ftp:passive-mode 1;\n" if $FTP_PASSIVE;
+ my $str;
- ### set the output document, add the uri ###
- ### quote the URI, because lftp supports certain shell
- ### expansions, most notably & for backgrounding.
- ### ' quote does nto work, must be "
- $str .= q[get ']. $self->uri .q[' -o ]. $to . $/;
+ ### if a timeout is set, add it ###
+ $str .= "set net:timeout $TIMEOUT;\n" if $TIMEOUT;
- if( $DEBUG ) {
- my $pp_str = join ' ', split $/, $str;
- print "# lftp command: $pp_str\n";
- }
+ ### run passive if specified ###
+ $str .= "set ftp:passive-mode 1;\n" if $FTP_PASSIVE;
- ### write straight to the file.
- $fh->autoflush(1);
- print $fh $str;
+ ### set the output document, add the uri ###
+ ### quote the URI, because lftp supports certain shell
+ ### expansions, most notably & for backgrounding.
+ ### ' quote does nto work, must be "
+ $str .= q[get ']. $self->uri .q[' -o ]. $to . $/;
- ### the command needs to be 1 string to be executed
- push @$cmd, $fh->filename;
+ if( $DEBUG ) {
+ my $pp_str = join ' ', split $/, $str;
+ print "# lftp command: $pp_str\n";
+ }
- ### with IPC::Cmd > 0.41, this is fixed in teh library,
- ### and there's no need for special casing any more.
- ### DO NOT quote things for IPC::Run, it breaks stuff.
- # $IPC::Cmd::USE_IPC_RUN
- # ? ($to, $self->uri)
- # : (QUOTE. $to .QUOTE, QUOTE. $self->uri .QUOTE);
+ ### write straight to the file.
+ $fh->autoflush(1);
+ print $fh $str;
+ ### the command needs to be 1 string to be executed
+ push @$cmd, $fh->filename;
- ### shell out ###
- my $captured;
- unless(run( command => $cmd,
- buffer => \$captured,
- verbose => $DEBUG
- )) {
- ### wget creates the output document always, even if the fetch
- ### fails.. so unlink it in that case
- 1 while unlink $to;
-
- return $self->_error(loc( "Command failed: %1", $captured || '' ));
- }
+ ### with IPC::Cmd > 0.41, this is fixed in teh library,
+ ### and there's no need for special casing any more.
+ ### DO NOT quote things for IPC::Run, it breaks stuff.
+ # $IPC::Cmd::USE_IPC_RUN
+ # ? ($to, $self->uri)
+ # : (QUOTE. $to .QUOTE, QUOTE. $self->uri .QUOTE);
- return $to;
- } else {
- $METHOD_FAIL->{'lftp'} = 1;
- return;
+ ### shell out ###
+ my $captured;
+ unless(run( command => $cmd,
+ buffer => \$captured,
+ verbose => $DEBUG
+ )) {
+ ### wget creates the output document always, even if the fetch
+ ### fails.. so unlink it in that case
+ 1 while unlink $to;
+
+ return $self->_error(loc( "Command failed: %1", $captured || '' ));
}
+
+ return $to;
}
@@ -985,32 +992,35 @@ sub _ftp_fetch {
check( $tmpl, \%hash ) or return;
### see if we have a ftp binary ###
- if( my $ftp = can_run('ftp') ) {
+ my $ftp;
+ unless( $ftp = can_run('ftp') ) {
+ $METHOD_FAIL->{'ftp'} = 1;
+ return;
+ }
- my $fh = FileHandle->new;
+ my $fh = FileHandle->new;
- local $SIG{CHLD} = 'IGNORE';
+ local $SIG{CHLD} = 'IGNORE';
- unless ($fh->open("|$ftp -n")) {
- return $self->_error(loc("%1 creation failed: %2", $ftp, $!));
- }
+ unless ($fh->open("$ftp -n", '|-')) {
+ return $self->_error(loc("%1 creation failed: %2", $ftp, $!));
+ }
- my @dialog = (
- "lcd " . dirname($to),
- "open " . $self->host,
- "user anonymous $FROM_EMAIL",
- "cd /",
- "cd " . $self->path,
- "binary",
- "get " . $self->file . " " . $self->output_file,
- "quit",
- );
+ my @dialog = (
+ "lcd " . dirname($to),
+ "open " . $self->host,
+ "user anonymous $FROM_EMAIL",
+ "cd /",
+ "cd " . $self->path,
+ "binary",
+ "get " . $self->file . " " . $self->output_file,
+ "quit",
+ );
- foreach (@dialog) { $fh->print($_, "\n") }
- $fh->close or return;
+ foreach (@dialog) { $fh->print($_, "\n") }
+ $fh->close or return;
- return $to;
- }
+ return $to;
}
### lynx is stupid - it decompresses any .gz file it finds to be text
@@ -1026,94 +1036,93 @@ sub _lynx_fetch {
check( $tmpl, \%hash ) or return;
### see if we have a lynx binary ###
- if( my $lynx = can_run('lynx') ) {
-
- unless( IPC::Cmd->can_capture_buffer ) {
- $METHOD_FAIL->{'lynx'} = 1;
-
- return $self->_error(loc(
- "Can not capture buffers. Can not use '%1' to fetch files",
- 'lynx' ));
- }
-
- ### check if the HTTP resource exists ###
- if ($self->uri =~ /^https?:\/\//i) {
- my $cmd = [
- $lynx,
- '-head',
- '-source',
- "-auth=anonymous:$FROM_EMAIL",
- ];
-
- push @$cmd, "-connect_timeout=$TIMEOUT" if $TIMEOUT;
-
- push @$cmd, $self->uri;
-
- ### shell out ###
- my $head;
- unless(run( command => $cmd,
- buffer => \$head,
- verbose => $DEBUG )
- ) {
- return $self->_error(loc("Command failed: %1", $head || ''));
- }
+ my $lynx;
+ unless ( $lynx = can_run('lynx') ){
+ $METHOD_FAIL->{'lynx'} = 1;
+ return;
+ }
- unless($head =~ /^HTTP\/\d+\.\d+ 200\b/) {
- return $self->_error(loc("Command failed: %1", $head || ''));
- }
- }
+ unless( IPC::Cmd->can_capture_buffer ) {
+ $METHOD_FAIL->{'lynx'} = 1;
- ### write to the output file ourselves, since lynx ass_u_mes to much
- my $local = FileHandle->new(">$to")
- or return $self->_error(loc(
- "Could not open '%1' for writing: %2",$to,$!));
+ return $self->_error(loc(
+ "Can not capture buffers. Can not use '%1' to fetch files",
+ 'lynx' ));
+ }
- ### dump to stdout ###
+ ### check if the HTTP resource exists ###
+ if ($self->uri =~ /^https?:\/\//i) {
my $cmd = [
$lynx,
+ '-head',
'-source',
"-auth=anonymous:$FROM_EMAIL",
];
push @$cmd, "-connect_timeout=$TIMEOUT" if $TIMEOUT;
- ### DO NOT quote things for IPC::Run, it breaks stuff.
push @$cmd, $self->uri;
-
- ### with IPC::Cmd > 0.41, this is fixed in teh library,
- ### and there's no need for special casing any more.
- ### DO NOT quote things for IPC::Run, it breaks stuff.
- # $IPC::Cmd::USE_IPC_RUN
- # ? $self->uri
- # : QUOTE. $self->uri .QUOTE;
-
### shell out ###
- my $captured;
+ my $head;
unless(run( command => $cmd,
- buffer => \$captured,
+ buffer => \$head,
verbose => $DEBUG )
) {
- return $self->_error(loc("Command failed: %1", $captured || ''));
+ return $self->_error(loc("Command failed: %1", $head || ''));
}
- ### print to local file ###
- ### XXX on a 404 with a special error page, $captured will actually
- ### hold the contents of that page, and make it *appear* like the
- ### request was a success, when really it wasn't :(
- ### there doesn't seem to be an option for lynx to change the exit
- ### code based on a 4XX status or so.
- ### the closest we can come is using --error_file and parsing that,
- ### which is very unreliable ;(
- $local->print( $captured );
- $local->close or return;
-
- return $to;
+ unless($head =~ /^HTTP\/\d+\.\d+ 200\b/) {
+ return $self->_error(loc("Command failed: %1", $head || ''));
+ }
+ }
- } else {
- $METHOD_FAIL->{'lynx'} = 1;
- return;
+ ### write to the output file ourselves, since lynx ass_u_mes to much
+ my $local = FileHandle->new( $to, 'w' )
+ or return $self->_error(loc(
+ "Could not open '%1' for writing: %2",$to,$!));
+
+ ### dump to stdout ###
+ my $cmd = [
+ $lynx,
+ '-source',
+ "-auth=anonymous:$FROM_EMAIL",
+ ];
+
+ push @$cmd, "-connect_timeout=$TIMEOUT" if $TIMEOUT;
+
+ ### DO NOT quote things for IPC::Run, it breaks stuff.
+ push @$cmd, $self->uri;
+
+ ### with IPC::Cmd > 0.41, this is fixed in teh library,
+ ### and there's no need for special casing any more.
+ ### DO NOT quote things for IPC::Run, it breaks stuff.
+ # $IPC::Cmd::USE_IPC_RUN
+ # ? $self->uri
+ # : QUOTE. $self->uri .QUOTE;
+
+
+ ### shell out ###
+ my $captured;
+ unless(run( command => $cmd,
+ buffer => \$captured,
+ verbose => $DEBUG )
+ ) {
+ return $self->_error(loc("Command failed: %1", $captured || ''));
}
+
+ ### print to local file ###
+ ### XXX on a 404 with a special error page, $captured will actually
+ ### hold the contents of that page, and make it *appear* like the
+ ### request was a success, when really it wasn't :(
+ ### there doesn't seem to be an option for lynx to change the exit
+ ### code based on a 4XX status or so.
+ ### the closest we can come is using --error_file and parsing that,
+ ### which is very unreliable ;(
+ $local->print( $captured );
+ $local->close or return;
+
+ return $to;
}
### use /bin/ncftp to fetch files
@@ -1132,38 +1141,38 @@ sub _ncftp_fetch {
return if $FTP_PASSIVE;
### see if we have a ncftp binary ###
- if( my $ncftp = can_run('ncftp') ) {
-
- my $cmd = [
- $ncftp,
- '-V', # do not be verbose
- '-p', $FROM_EMAIL, # email as password
- $self->host, # hostname
- dirname($to), # local dir for the file
- # remote path to the file
- ### DO NOT quote things for IPC::Run, it breaks stuff.
- $IPC::Cmd::USE_IPC_RUN
- ? File::Spec::Unix->catdir( $self->path, $self->file )
- : QUOTE. File::Spec::Unix->catdir(
- $self->path, $self->file ) .QUOTE
-
- ];
-
- ### shell out ###
- my $captured;
- unless(run( command => $cmd,
- buffer => \$captured,
- verbose => $DEBUG )
- ) {
- return $self->_error(loc("Command failed: %1", $captured || ''));
- }
-
- return $to;
-
- } else {
+ my $ncftp;
+ unless( $ncftp = can_run('ncftp') ) {
$METHOD_FAIL->{'ncftp'} = 1;
return;
}
+
+ my $cmd = [
+ $ncftp,
+ '-V', # do not be verbose
+ '-p', $FROM_EMAIL, # email as password
+ $self->host, # hostname
+ dirname($to), # local dir for the file
+ # remote path to the file
+ ### DO NOT quote things for IPC::Run, it breaks stuff.
+ $IPC::Cmd::USE_IPC_RUN
+ ? File::Spec::Unix->catdir( $self->path, $self->file )
+ : QUOTE. File::Spec::Unix->catdir(
+ $self->path, $self->file ) .QUOTE
+
+ ];
+
+ ### shell out ###
+ my $captured;
+ unless(run( command => $cmd,
+ buffer => \$captured,
+ verbose => $DEBUG )
+ ) {
+ return $self->_error(loc("Command failed: %1", $captured || ''));
+ }
+
+ return $to;
+
}
### use /bin/curl to fetch files
@@ -1176,48 +1185,47 @@ sub _curl_fetch {
to => { required => 1, store => \$to }
};
check( $tmpl, \%hash ) or return;
+ my $curl;
+ unless ( $curl = can_run('curl') ) {
+ $METHOD_FAIL->{'curl'} = 1;
+ return;
+ }
- if (my $curl = can_run('curl')) {
-
- ### these long opts are self explanatory - I like that -jmb
- my $cmd = [ $curl, '-q' ];
+ ### these long opts are self explanatory - I like that -jmb
+ my $cmd = [ $curl, '-q' ];
- push(@$cmd, '--connect-timeout', $TIMEOUT) if $TIMEOUT;
+ push(@$cmd, '--connect-timeout', $TIMEOUT) if $TIMEOUT;
- push(@$cmd, '--silent') unless $DEBUG;
+ push(@$cmd, '--silent') unless $DEBUG;
- ### curl does the right thing with passive, regardless ###
- if ($self->scheme eq 'ftp') {
- push(@$cmd, '--user', "anonymous:$FROM_EMAIL");
- }
+ ### curl does the right thing with passive, regardless ###
+ if ($self->scheme eq 'ftp') {
+ push(@$cmd, '--user', "anonymous:$FROM_EMAIL");
+ }
- ### curl doesn't follow 302 (temporarily moved) etc automatically
- ### so we add --location to enable that.
- push @$cmd, '--fail', '--location', '--output', $to, $self->uri;
+ ### curl doesn't follow 302 (temporarily moved) etc automatically
+ ### so we add --location to enable that.
+ push @$cmd, '--fail', '--location', '--output', $to, $self->uri;
- ### with IPC::Cmd > 0.41, this is fixed in teh library,
- ### and there's no need for special casing any more.
- ### DO NOT quote things for IPC::Run, it breaks stuff.
- # $IPC::Cmd::USE_IPC_RUN
- # ? ($to, $self->uri)
- # : (QUOTE. $to .QUOTE, QUOTE. $self->uri .QUOTE);
+ ### with IPC::Cmd > 0.41, this is fixed in teh library,
+ ### and there's no need for special casing any more.
+ ### DO NOT quote things for IPC::Run, it breaks stuff.
+ # $IPC::Cmd::USE_IPC_RUN
+ # ? ($to, $self->uri)
+ # : (QUOTE. $to .QUOTE, QUOTE. $self->uri .QUOTE);
- my $captured;
- unless(run( command => $cmd,
- buffer => \$captured,
- verbose => $DEBUG )
- ) {
+ my $captured;
+ unless(run( command => $cmd,
+ buffer => \$captured,
+ verbose => $DEBUG )
+ ) {
- return $self->_error(loc("Command failed: %1", $captured || ''));
- }
+ return $self->_error(loc("Command failed: %1", $captured || ''));
+ }
- return $to;
+ return $to;
- } else {
- $METHOD_FAIL->{'curl'} = 1;
- return;
- }
}
### /usr/bin/fetch fetch! ###
@@ -1231,48 +1239,47 @@ sub _fetch_fetch {
};
check( $tmpl, \%hash ) or return;
- ### see if we have a wget binary ###
- if( HAS_FETCH and my $fetch = can_run('fetch') ) {
-
- ### no verboseness, thanks ###
- my $cmd = [ $fetch, '-q' ];
-
- ### if a timeout is set, add it ###
- push(@$cmd, '-T', $TIMEOUT) if $TIMEOUT;
-
- ### run passive if specified ###
- #push @$cmd, '-p' if $FTP_PASSIVE;
- local $ENV{'FTP_PASSIVE_MODE'} = 1 if $FTP_PASSIVE;
-
- ### set the output document, add the uri ###
- push @$cmd, '-o', $to, $self->uri;
-
- ### with IPC::Cmd > 0.41, this is fixed in teh library,
- ### and there's no need for special casing any more.
- ### DO NOT quote things for IPC::Run, it breaks stuff.
- # $IPC::Cmd::USE_IPC_RUN
- # ? ($to, $self->uri)
- # : (QUOTE. $to .QUOTE, QUOTE. $self->uri .QUOTE);
-
- ### shell out ###
- my $captured;
- unless(run( command => $cmd,
- buffer => \$captured,
- verbose => $DEBUG
- )) {
- ### wget creates the output document always, even if the fetch
- ### fails.. so unlink it in that case
- 1 while unlink $to;
-
- return $self->_error(loc( "Command failed: %1", $captured || '' ));
- }
-
- return $to;
-
- } else {
- $METHOD_FAIL->{'wget'} = 1;
+ ### see if we have a fetch binary ###
+ my $fetch;
+ unless( HAS_FETCH and $fetch = can_run('fetch') ) {
+ $METHOD_FAIL->{'fetch'} = 1;
return;
}
+
+ ### no verboseness, thanks ###
+ my $cmd = [ $fetch, '-q' ];
+
+ ### if a timeout is set, add it ###
+ push(@$cmd, '-T', $TIMEOUT) if $TIMEOUT;
+
+ ### run passive if specified ###
+ #push @$cmd, '-p' if $FTP_PASSIVE;
+ local $ENV{'FTP_PASSIVE_MODE'} = 1 if $FTP_PASSIVE;
+
+ ### set the output document, add the uri ###
+ push @$cmd, '-o', $to, $self->uri;
+
+ ### with IPC::Cmd > 0.41, this is fixed in teh library,
+ ### and there's no need for special casing any more.
+ ### DO NOT quote things for IPC::Run, it breaks stuff.
+ # $IPC::Cmd::USE_IPC_RUN
+ # ? ($to, $self->uri)
+ # : (QUOTE. $to .QUOTE, QUOTE. $self->uri .QUOTE);
+
+ ### shell out ###
+ my $captured;
+ unless(run( command => $cmd,
+ buffer => \$captured,
+ verbose => $DEBUG
+ )) {
+ ### wget creates the output document always, even if the fetch
+ ### fails.. so unlink it in that case
+ 1 while unlink $to;
+
+ return $self->_error(loc( "Command failed: %1", $captured || '' ));
+ }
+
+ return $to;
}
### use File::Copy for fetching file:// urls ###
@@ -1280,7 +1287,7 @@ sub _fetch_fetch {
### See section 3.10 of RFC 1738 (http://www.faqs.org/rfcs/rfc1738.html)
### Also see wikipedia on file:// (http://en.wikipedia.org/wiki/File://)
###
-
+
sub _file_fetch {
my $self = shift;
my %hash = @_;
@@ -1291,8 +1298,8 @@ sub _file_fetch {
};
check( $tmpl, \%hash ) or return;
-
-
+
+
### prefix a / on unix systems with a file uri, since it would
### look somewhat like this:
### file:///home/kane/file
@@ -1301,23 +1308,23 @@ sub _file_fetch {
### file:///C|/some/dir/file
### or for a network share '\\host\share\some\dir\file':
### file:////host/share/some/dir/file
- ###
+ ###
### VMS file uri's for 'DISK$USER:[MY.NOTES]NOTE123456.TXT' might look like:
### file://vms.host.edu/disk$user/my/notes/note12345.txt
###
-
+
my $path = $self->path;
my $vol = $self->vol;
my $share = $self->share;
my $remote;
if (!$share and $self->host) {
- return $self->_error(loc(
+ return $self->_error(loc(
"Currently %1 cannot handle hosts in %2 urls",
'File::Fetch', 'file://'
- ));
+ ));
}
-
+
if( $vol ) {
$path = File::Spec->catdir( split /\//, $path );
$remote = File::Spec->catpath( $vol, $path, $self->file);
@@ -1358,42 +1365,41 @@ sub _rsync_fetch {
to => { required => 1, store => \$to }
};
check( $tmpl, \%hash ) or return;
+ my $rsync;
+ unless ( $rsync = can_run('rsync') ) {
+ $METHOD_FAIL->{'rsync'} = 1;
+ return;
+ }
- if (my $rsync = can_run('rsync')) {
-
- my $cmd = [ $rsync ];
+ my $cmd = [ $rsync ];
- ### XXX: rsync has no I/O timeouts at all, by default
- push(@$cmd, '--timeout=' . $TIMEOUT) if $TIMEOUT;
+ ### XXX: rsync has no I/O timeouts at all, by default
+ push(@$cmd, '--timeout=' . $TIMEOUT) if $TIMEOUT;
- push(@$cmd, '--quiet') unless $DEBUG;
+ push(@$cmd, '--quiet') unless $DEBUG;
- ### DO NOT quote things for IPC::Run, it breaks stuff.
- push @$cmd, $self->uri, $to;
+ ### DO NOT quote things for IPC::Run, it breaks stuff.
+ push @$cmd, $self->uri, $to;
- ### with IPC::Cmd > 0.41, this is fixed in teh library,
- ### and there's no need for special casing any more.
- ### DO NOT quote things for IPC::Run, it breaks stuff.
- # $IPC::Cmd::USE_IPC_RUN
- # ? ($to, $self->uri)
- # : (QUOTE. $to .QUOTE, QUOTE. $self->uri .QUOTE);
+ ### with IPC::Cmd > 0.41, this is fixed in teh library,
+ ### and there's no need for special casing any more.
+ ### DO NOT quote things for IPC::Run, it breaks stuff.
+ # $IPC::Cmd::USE_IPC_RUN
+ # ? ($to, $self->uri)
+ # : (QUOTE. $to .QUOTE, QUOTE. $self->uri .QUOTE);
- my $captured;
- unless(run( command => $cmd,
- buffer => \$captured,
- verbose => $DEBUG )
- ) {
+ my $captured;
+ unless(run( command => $cmd,
+ buffer => \$captured,
+ verbose => $DEBUG )
+ ) {
- return $self->_error(loc("Command %1 failed: %2",
- "@$cmd" || '', $captured || ''));
- }
+ return $self->_error(loc("Command %1 failed: %2",
+ "@$cmd" || '', $captured || ''));
+ }
- return $to;
+ return $to;
- } else {
- $METHOD_FAIL->{'rsync'} = 1;
- return;
- }
}
#################################
@@ -1415,10 +1421,10 @@ Pass it a true value to get the C<Carp::longmess()> output instead.
sub _error {
my $self = shift;
my $error = shift;
-
+
$self->_error_msg( $error );
$self->_error_msg_long( Carp::longmess($error) );
-
+
if( $WARN ) {
carp $DEBUG ? $self->_error_msg_long : $self->_error_msg;
}
@@ -1458,7 +1464,7 @@ tried again. The C<fetch> method will only fail when all options are
exhausted, and it was not able to retrieve the file.
The C<fetch> utility is available on FreeBSD. NetBSD and Dragonfly BSD
-may also have it from C<pkgsrc>. We only check for C<fetch> on those
+may also have it from C<pkgsrc>. We only check for C<fetch> on those
three platforms.
C<iosock> is a very limited L<IO::Socket::INET> based mechanism for
@@ -1597,19 +1603,19 @@ Sadly, C<lynx> doesn't support any options to return a different exit
code on non-C<200 OK> status, giving us no way to tell the difference
between a 'successful' fetch and a custom error page.
-Therefor, we recommend to only use C<lynx> as a last resort. This is
+Therefor, we recommend to only use C<lynx> as a last resort. This is
why it is at the back of our list of methods to try as well.
=head2 Files I'm trying to fetch have reserved characters or non-ASCII characters in them. What do I do?
-C<File::Fetch> is relatively smart about things. When trying to write
-a file to disk, it removes the C<query parameters> (see the
+C<File::Fetch> is relatively smart about things. When trying to write
+a file to disk, it removes the C<query parameters> (see the
C<output_file> method for details) from the file name before creating
it. In most cases this suffices.
-If you have any other characters you need to escape, please install
+If you have any other characters you need to escape, please install
the C<URI::Escape> module from CPAN, and pre-encode your URI before
-passing it to C<File::Fetch>. You can read about the details of URIs
+passing it to C<File::Fetch>. You can read about the details of URIs
and URI encoding here:
http://www.faqs.org/rfcs/rfc2396.html
@@ -1634,7 +1640,7 @@ This module by Jos Boumans E<lt>kane@cpan.orgE<gt>.
=head1 COPYRIGHT
-This library is free software; you may redistribute and/or modify it
+This library is free software; you may redistribute and/or modify it
under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/File-Fetch/t/01_File-Fetch.t b/gnu/usr.bin/perl/cpan/File-Fetch/t/01_File-Fetch.t
index c780de1f881..538c55ed649 100755
--- a/gnu/usr.bin/perl/cpan/File-Fetch/t/01_File-Fetch.t
+++ b/gnu/usr.bin/perl/cpan/File-Fetch/t/01_File-Fetch.t
@@ -35,16 +35,18 @@ to no fault of the module itself.
### show us the tools IPC::Cmd will use to run binary programs
if( $File::Fetch::DEBUG ) {
### stupid 'used only once' warnings ;(
- diag( "IPC::Run enabled: " .
+ diag( "IPC::Run enabled: " .
$IPC::Cmd::USE_IPC_RUN || $IPC::Cmd::USE_IPC_RUN );
diag( "IPC::Run available: " . IPC::Cmd->can_use_ipc_run );
diag( "IPC::Run vesion: $IPC::Run::VERSION" );
- diag( "IPC::Open3 enabled: " .
+ diag( "IPC::Open3 enabled: " .
$IPC::Cmd::USE_IPC_OPEN3 || $IPC::Cmd::USE_IPC_OPEN3 );
diag( "IPC::Open3 available: " . IPC::Cmd->can_use_ipc_open3 );
diag( "IPC::Open3 vesion: $IPC::Open3::VERSION" );
}
+### Heuristics
+my %heuristics = map { $_ => 1 } qw(http ftp rsync file);
### _parse_uri tests
### these go on all platforms
my @map = (
@@ -62,15 +64,15 @@ my @map = (
},
{ uri => 'http://localhost/tmp/index.txt',
scheme => 'http',
- host => 'localhost', # host is empty only on 'file://'
+ host => 'localhost', # host is empty only on 'file://'
path => '/tmp/',
file => 'index.txt',
- },
-
+ },
+
### only test host part, the rest is OS dependant
{ uri => 'file://localhost/tmp/index.txt',
host => '', # host should be empty on 'file://'
- },
+ },
);
### these only if we're not on win32/vms
@@ -86,7 +88,7 @@ push @map, (
host => 'hostname',
path => '/tmp/',
file => 'foo.txt',
- },
+ },
) if not &File::Fetch::ON_WIN and not &File::Fetch::ON_VMS;
### these only on win32
@@ -104,25 +106,25 @@ push @map, (
vol => 'D:',
path => '/tmp/',
file => 'foo.txt',
- },
+ },
{ uri => 'file:///D|/tmp/foo.txt',
scheme => 'file',
host => '',
vol => 'D:',
path => '/tmp/',
file => 'foo.txt',
- },
+ },
) if &File::Fetch::ON_WIN;
### sanity tests
-{
+{
no warnings;
like( $File::Fetch::USER_AGENT, qr/$File::Fetch::VERSION/,
"User agent contains version" );
like( $File::Fetch::FROM_EMAIL, qr/@/,
q[Email contains '@'] );
-}
+}
### parse uri tests ###
for my $entry (@map ) {
@@ -162,6 +164,13 @@ for my $entry (@map) {
}
}
+### Heuristics
+{
+ require IO::Socket::INET;
+ my $sock = IO::Socket::INET->new( PeerAddr => 'ftp.funet.fi', PeerPort => 21, Timeout => 20 )
+ or $heuristics{ftp} = 0;
+}
+
### ftp:// tests ###
{ my $uri = 'ftp://ftp.funet.fi/pub/CPAN/index.html';
for (qw[lwp netftp wget curl lftp fetch ncftp]) {
@@ -174,6 +183,13 @@ for my $entry (@map) {
}
}
+### Heuristics
+{
+ require IO::Socket::INET;
+ my $sock = IO::Socket::INET->new( PeerAddr => 'www.cpan.org', PeerPort => 80, Timeout => 20 )
+ or $heuristics{http} = 0;
+}
+
### http:// tests ###
{ for my $uri ( 'http://www.cpan.org/index.html',
'http://www.cpan.org/index.html?q=1',
@@ -185,6 +201,13 @@ for my $entry (@map) {
}
}
+### Heuristics
+{
+ require IO::Socket::INET;
+ my $sock = IO::Socket::INET->new( PeerAddr => 'cpan.pair.com', PeerPort => 873, Timeout => 20 )
+ or $heuristics{rsync} = 0;
+}
+
### rsync:// tests ###
{ my $uri = 'rsync://cpan.pair.com/CPAN/MIRRORING.FROM';
@@ -201,34 +224,37 @@ sub _fetch_uri {
SKIP: {
skip "'$method' fetching tests disabled under perl core", 4
if $ENV{PERL_CORE};
-
+
+ skip "'$type' fetching tests disabled due to heuristic failure", 4
+ unless $heuristics{ $type };
+
### stupid warnings ###
$File::Fetch::METHODS =
$File::Fetch::METHODS = { $type => [$method] };
-
+
### fetch regularly
my $ff = File::Fetch->new( uri => $uri );
-
+
ok( $ff, "FF object for $uri (fetch with $method)" );
-
+
for my $to ( 'tmp', do { \my $o } ) { SKIP: {
-
-
+
+
my $how = ref $to ? 'slurp' : 'file';
my $skip = ref $to ? 4 : 3;
-
+
ok( 1, " Fetching '$uri' in $how mode" );
-
+
my $file = $ff->fetch( to => $to );
-
+
skip "You do not have '$method' installed/available", $skip
if $File::Fetch::METHOD_FAIL->{$method} &&
$File::Fetch::METHOD_FAIL->{$method};
-
- ### if the file wasn't fetched, it may be a network/firewall issue
- skip "Fetch failed; no network connectivity for '$type'?", $skip
+
+ ### if the file wasn't fetched, it may be a network/firewall issue
+ skip "Fetch failed; no network connectivity for '$type'?", $skip
unless $file;
-
+
ok( $file, " File ($file) fetched with $method ($uri)" );
### check we got some contents if we were meant to slurp
@@ -236,11 +262,11 @@ sub _fetch_uri {
ok( $$to, " Contents slurped" );
}
- ok( $file && -s $file,
+ ok( $file && -s $file,
" File has size" );
is( $file && basename($file), $ff->output_file,
" File has expected name" );
-
+
unlink $file;
}}
}
diff --git a/gnu/usr.bin/perl/cpan/File-Path/lib/File/Path.pm b/gnu/usr.bin/perl/cpan/File-Path/lib/File/Path.pm
index 5a9a88e4020..23751d5fa0a 100644
--- a/gnu/usr.bin/perl/cpan/File-Path/lib/File/Path.pm
+++ b/gnu/usr.bin/perl/cpan/File-Path/lib/File/Path.pm
@@ -17,7 +17,7 @@ BEGIN {
use Exporter ();
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
-$VERSION = '2.08_01';
+$VERSION = '2.09';
@ISA = qw(Exporter);
@EXPORT = qw(mkpath rmtree);
@EXPORT_OK = qw(make_path remove_tree);
@@ -455,8 +455,8 @@ File::Path - Create or remove directory trees
=head1 VERSION
-This document describes version 2.08 of File::Path, released
-2009-10-04.
+This document describes version 2.09 of File::Path, released
+2013-01-17.
=head1 SYNOPSIS
@@ -953,6 +953,10 @@ Please report all bugs on the RT queue:
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=File-Path>
+You can also send pull requests to the Github repository:
+
+L<https://github.com/dland/File-Path>
+
=head1 ACKNOWLEDGEMENTS
Paul Szabo identified the race condition originally, and Brendan
@@ -971,7 +975,7 @@ Tim Bunce and Charles Bailey. Currently maintained by David Landgren
=head1 COPYRIGHT
This module is copyright (C) Charles Bailey, Tim Bunce and
-David Landgren 1995-2009. All rights reserved.
+David Landgren 1995-2013. All rights reserved.
=head1 LICENSE
diff --git a/gnu/usr.bin/perl/cpan/File-Temp/lib/File/Temp.pm b/gnu/usr.bin/perl/cpan/File-Temp/lib/File/Temp.pm
new file mode 100644
index 00000000000..ac57c260c8f
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/File-Temp/lib/File/Temp.pm
@@ -0,0 +1,2539 @@
+package File::Temp;
+
+=head1 NAME
+
+File::Temp - return name and handle of a temporary file safely
+
+=begin __INTERNALS
+
+=head1 PORTABILITY
+
+This section is at the top in order to provide easier access to
+porters. It is not expected to be rendered by a standard pod
+formatting tool. Please skip straight to the SYNOPSIS section if you
+are not trying to port this module to a new platform.
+
+This module is designed to be portable across operating systems and it
+currently supports Unix, VMS, DOS, OS/2, Windows and Mac OS
+(Classic). When porting to a new OS there are generally three main
+issues that have to be solved:
+
+=over 4
+
+=item *
+
+Can the OS unlink an open file? If it can not then the
+C<_can_unlink_opened_file> method should be modified.
+
+=item *
+
+Are the return values from C<stat> reliable? By default all the
+return values from C<stat> are compared when unlinking a temporary
+file using the filename and the handle. Operating systems other than
+unix do not always have valid entries in all fields. If utility function
+C<File::Temp::unlink0> fails then the C<stat> comparison should be
+modified accordingly.
+
+=item *
+
+Security. Systems that can not support a test for the sticky bit
+on a directory can not use the MEDIUM and HIGH security tests.
+The C<_can_do_level> method should be modified accordingly.
+
+=back
+
+=end __INTERNALS
+
+=head1 SYNOPSIS
+
+ use File::Temp qw/ tempfile tempdir /;
+
+ $fh = tempfile();
+ ($fh, $filename) = tempfile();
+
+ ($fh, $filename) = tempfile( $template, DIR => $dir);
+ ($fh, $filename) = tempfile( $template, SUFFIX => '.dat');
+ ($fh, $filename) = tempfile( $template, TMPDIR => 1 );
+
+ binmode( $fh, ":utf8" );
+
+ $dir = tempdir( CLEANUP => 1 );
+ ($fh, $filename) = tempfile( DIR => $dir );
+
+Object interface:
+
+ require File::Temp;
+ use File::Temp ();
+ use File::Temp qw/ :seekable /;
+
+ $fh = File::Temp->new();
+ $fname = $fh->filename;
+
+ $fh = File::Temp->new(TEMPLATE => $template);
+ $fname = $fh->filename;
+
+ $tmp = File::Temp->new( UNLINK => 0, SUFFIX => '.dat' );
+ print $tmp "Some data\n";
+ print "Filename is $tmp\n";
+ $tmp->seek( 0, SEEK_END );
+
+The following interfaces are provided for compatibility with
+existing APIs. They should not be used in new code.
+
+MkTemp family:
+
+ use File::Temp qw/ :mktemp /;
+
+ ($fh, $file) = mkstemp( "tmpfileXXXXX" );
+ ($fh, $file) = mkstemps( "tmpfileXXXXXX", $suffix);
+
+ $tmpdir = mkdtemp( $template );
+
+ $unopened_file = mktemp( $template );
+
+POSIX functions:
+
+ use File::Temp qw/ :POSIX /;
+
+ $file = tmpnam();
+ $fh = tmpfile();
+
+ ($fh, $file) = tmpnam();
+
+Compatibility functions:
+
+ $unopened_file = File::Temp::tempnam( $dir, $pfx );
+
+=head1 DESCRIPTION
+
+C<File::Temp> can be used to create and open temporary files in a safe
+way. There is both a function interface and an object-oriented
+interface. The File::Temp constructor or the tempfile() function can
+be used to return the name and the open filehandle of a temporary
+file. The tempdir() function can be used to create a temporary
+directory.
+
+The security aspect of temporary file creation is emphasized such that
+a filehandle and filename are returned together. This helps guarantee
+that a race condition can not occur where the temporary file is
+created by another process between checking for the existence of the
+file and its opening. Additional security levels are provided to
+check, for example, that the sticky bit is set on world writable
+directories. See L<"safe_level"> for more information.
+
+For compatibility with popular C library functions, Perl implementations of
+the mkstemp() family of functions are provided. These are, mkstemp(),
+mkstemps(), mkdtemp() and mktemp().
+
+Additionally, implementations of the standard L<POSIX|POSIX>
+tmpnam() and tmpfile() functions are provided if required.
+
+Implementations of mktemp(), tmpnam(), and tempnam() are provided,
+but should be used with caution since they return only a filename
+that was valid when function was called, so cannot guarantee
+that the file will not exist by the time the caller opens the filename.
+
+Filehandles returned by these functions support the seekable methods.
+
+=cut
+
+# 5.6.0 gives us S_IWOTH, S_IWGRP, our and auto-vivifying filehandls
+# People would like a version on 5.004 so give them what they want :-)
+use 5.004;
+use strict;
+use Carp;
+use File::Spec 0.8;
+use Cwd ();
+use File::Path qw/ rmtree /;
+use Fcntl 1.03;
+use IO::Seekable; # For SEEK_*
+use Errno;
+use Scalar::Util 'refaddr';
+require VMS::Stdio if $^O eq 'VMS';
+
+# pre-emptively load Carp::Heavy. If we don't when we run out of file
+# handles and attempt to call croak() we get an error message telling
+# us that Carp::Heavy won't load rather than an error telling us we
+# have run out of file handles. We either preload croak() or we
+# switch the calls to croak from _gettemp() to use die.
+eval { require Carp::Heavy; };
+
+# Need the Symbol package if we are running older perl
+require Symbol if $] < 5.006;
+
+### For the OO interface
+use base qw/ IO::Handle IO::Seekable /;
+use overload '""' => "STRINGIFY", '0+' => "NUMIFY",
+ fallback => 1;
+
+# use 'our' on v5.6.0
+use vars qw($VERSION @EXPORT_OK %EXPORT_TAGS $DEBUG $KEEP_ALL);
+
+$DEBUG = 0;
+$KEEP_ALL = 0;
+
+# We are exporting functions
+
+use base qw/Exporter/;
+
+# Export list - to allow fine tuning of export table
+
+@EXPORT_OK = qw{
+ tempfile
+ tempdir
+ tmpnam
+ tmpfile
+ mktemp
+ mkstemp
+ mkstemps
+ mkdtemp
+ unlink0
+ cleanup
+ SEEK_SET
+ SEEK_CUR
+ SEEK_END
+ };
+
+# Groups of functions for export
+
+%EXPORT_TAGS = (
+ 'POSIX' => [qw/ tmpnam tmpfile /],
+ 'mktemp' => [qw/ mktemp mkstemp mkstemps mkdtemp/],
+ 'seekable' => [qw/ SEEK_SET SEEK_CUR SEEK_END /],
+ );
+
+# add contents of these tags to @EXPORT
+Exporter::export_tags('POSIX','mktemp','seekable');
+
+# Version number
+
+$VERSION = '0.23';
+
+# This is a list of characters that can be used in random filenames
+
+my @CHARS = (qw/ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+ a b c d e f g h i j k l m n o p q r s t u v w x y z
+ 0 1 2 3 4 5 6 7 8 9 _
+ /);
+
+# Maximum number of tries to make a temp file before failing
+
+use constant MAX_TRIES => 1000;
+
+# Minimum number of X characters that should be in a template
+use constant MINX => 4;
+
+# Default template when no template supplied
+
+use constant TEMPXXX => 'X' x 10;
+
+# Constants for the security level
+
+use constant STANDARD => 0;
+use constant MEDIUM => 1;
+use constant HIGH => 2;
+
+# OPENFLAGS. If we defined the flag to use with Sysopen here this gives
+# us an optimisation when many temporary files are requested
+
+my $OPENFLAGS = O_CREAT | O_EXCL | O_RDWR;
+my $LOCKFLAG;
+
+unless ($^O eq 'MacOS') {
+ for my $oflag (qw/ NOFOLLOW BINARY LARGEFILE NOINHERIT /) {
+ my ($bit, $func) = (0, "Fcntl::O_" . $oflag);
+ no strict 'refs';
+ $OPENFLAGS |= $bit if eval {
+ # Make sure that redefined die handlers do not cause problems
+ # e.g. CGI::Carp
+ local $SIG{__DIE__} = sub {};
+ local $SIG{__WARN__} = sub {};
+ $bit = &$func();
+ 1;
+ };
+ }
+ # Special case O_EXLOCK
+ $LOCKFLAG = eval {
+ local $SIG{__DIE__} = sub {};
+ local $SIG{__WARN__} = sub {};
+ &Fcntl::O_EXLOCK();
+ };
+}
+
+# On some systems the O_TEMPORARY flag can be used to tell the OS
+# to automatically remove the file when it is closed. This is fine
+# in most cases but not if tempfile is called with UNLINK=>0 and
+# the filename is requested -- in the case where the filename is to
+# be passed to another routine. This happens on windows. We overcome
+# this by using a second open flags variable
+
+my $OPENTEMPFLAGS = $OPENFLAGS;
+unless ($^O eq 'MacOS') {
+ for my $oflag (qw/ TEMPORARY /) {
+ my ($bit, $func) = (0, "Fcntl::O_" . $oflag);
+ local($@);
+ no strict 'refs';
+ $OPENTEMPFLAGS |= $bit if eval {
+ # Make sure that redefined die handlers do not cause problems
+ # e.g. CGI::Carp
+ local $SIG{__DIE__} = sub {};
+ local $SIG{__WARN__} = sub {};
+ $bit = &$func();
+ 1;
+ };
+ }
+}
+
+# Private hash tracking which files have been created by each process id via the OO interface
+my %FILES_CREATED_BY_OBJECT;
+
+# INTERNAL ROUTINES - not to be used outside of package
+
+# Generic routine for getting a temporary filename
+# modelled on OpenBSD _gettemp() in mktemp.c
+
+# The template must contain X's that are to be replaced
+# with the random values
+
+# Arguments:
+
+# TEMPLATE - string containing the XXXXX's that is converted
+# to a random filename and opened if required
+
+# Optionally, a hash can also be supplied containing specific options
+# "open" => if true open the temp file, else just return the name
+# default is 0
+# "mkdir"=> if true, we are creating a temp directory rather than tempfile
+# default is 0
+# "suffixlen" => number of characters at end of PATH to be ignored.
+# default is 0.
+# "unlink_on_close" => indicates that, if possible, the OS should remove
+# the file as soon as it is closed. Usually indicates
+# use of the O_TEMPORARY flag to sysopen.
+# Usually irrelevant on unix
+# "use_exlock" => Indicates that O_EXLOCK should be used. Default is true.
+
+# Optionally a reference to a scalar can be passed into the function
+# On error this will be used to store the reason for the error
+# "ErrStr" => \$errstr
+
+# "open" and "mkdir" can not both be true
+# "unlink_on_close" is not used when "mkdir" is true.
+
+# The default options are equivalent to mktemp().
+
+# Returns:
+# filehandle - open file handle (if called with doopen=1, else undef)
+# temp name - name of the temp file or directory
+
+# For example:
+# ($fh, $name) = _gettemp($template, "open" => 1);
+
+# for the current version, failures are associated with
+# stored in an error string and returned to give the reason whilst debugging
+# This routine is not called by any external function
+sub _gettemp {
+
+ croak 'Usage: ($fh, $name) = _gettemp($template, OPTIONS);'
+ unless scalar(@_) >= 1;
+
+ # the internal error string - expect it to be overridden
+ # Need this in case the caller decides not to supply us a value
+ # need an anonymous scalar
+ my $tempErrStr;
+
+ # Default options
+ my %options = (
+ "open" => 0,
+ "mkdir" => 0,
+ "suffixlen" => 0,
+ "unlink_on_close" => 0,
+ "use_exlock" => 1,
+ "ErrStr" => \$tempErrStr,
+ );
+
+ # Read the template
+ my $template = shift;
+ if (ref($template)) {
+ # Use a warning here since we have not yet merged ErrStr
+ carp "File::Temp::_gettemp: template must not be a reference";
+ return ();
+ }
+
+ # Check that the number of entries on stack are even
+ if (scalar(@_) % 2 != 0) {
+ # Use a warning here since we have not yet merged ErrStr
+ carp "File::Temp::_gettemp: Must have even number of options";
+ return ();
+ }
+
+ # Read the options and merge with defaults
+ %options = (%options, @_) if @_;
+
+ # Make sure the error string is set to undef
+ ${$options{ErrStr}} = undef;
+
+ # Can not open the file and make a directory in a single call
+ if ($options{"open"} && $options{"mkdir"}) {
+ ${$options{ErrStr}} = "doopen and domkdir can not both be true\n";
+ return ();
+ }
+
+ # Find the start of the end of the Xs (position of last X)
+ # Substr starts from 0
+ my $start = length($template) - 1 - $options{"suffixlen"};
+
+ # Check that we have at least MINX x X (e.g. 'XXXX") at the end of the string
+ # (taking suffixlen into account). Any fewer is insecure.
+
+ # Do it using substr - no reason to use a pattern match since
+ # we know where we are looking and what we are looking for
+
+ if (substr($template, $start - MINX + 1, MINX) ne 'X' x MINX) {
+ ${$options{ErrStr}} = "The template must end with at least ".
+ MINX . " 'X' characters\n";
+ return ();
+ }
+
+ # Replace all the X at the end of the substring with a
+ # random character or just all the XX at the end of a full string.
+ # Do it as an if, since the suffix adjusts which section to replace
+ # and suffixlen=0 returns nothing if used in the substr directly
+ # and generate a full path from the template
+
+ my $path = _replace_XX($template, $options{"suffixlen"});
+
+
+ # Split the path into constituent parts - eventually we need to check
+ # whether the directory exists
+ # We need to know whether we are making a temp directory
+ # or a tempfile
+
+ my ($volume, $directories, $file);
+ my $parent; # parent directory
+ if ($options{"mkdir"}) {
+ # There is no filename at the end
+ ($volume, $directories, $file) = File::Spec->splitpath( $path, 1);
+
+ # The parent is then $directories without the last directory
+ # Split the directory and put it back together again
+ my @dirs = File::Spec->splitdir($directories);
+
+ # If @dirs only has one entry (i.e. the directory template) that means
+ # we are in the current directory
+ if ($#dirs == 0) {
+ $parent = File::Spec->curdir;
+ } else {
+
+ if ($^O eq 'VMS') { # need volume to avoid relative dir spec
+ $parent = File::Spec->catdir($volume, @dirs[0..$#dirs-1]);
+ $parent = 'sys$disk:[]' if $parent eq '';
+ } else {
+
+ # Put it back together without the last one
+ $parent = File::Spec->catdir(@dirs[0..$#dirs-1]);
+
+ # ...and attach the volume (no filename)
+ $parent = File::Spec->catpath($volume, $parent, '');
+ }
+
+ }
+
+ } else {
+
+ # Get rid of the last filename (use File::Basename for this?)
+ ($volume, $directories, $file) = File::Spec->splitpath( $path );
+
+ # Join up without the file part
+ $parent = File::Spec->catpath($volume,$directories,'');
+
+ # If $parent is empty replace with curdir
+ $parent = File::Spec->curdir
+ unless $directories ne '';
+
+ }
+
+ # Check that the parent directories exist
+ # Do this even for the case where we are simply returning a name
+ # not a file -- no point returning a name that includes a directory
+ # that does not exist or is not writable
+
+ unless (-e $parent) {
+ ${$options{ErrStr}} = "Parent directory ($parent) does not exist";
+ return ();
+ }
+ unless (-d $parent) {
+ ${$options{ErrStr}} = "Parent directory ($parent) is not a directory";
+ return ();
+ }
+
+ # Check the stickiness of the directory and chown giveaway if required
+ # If the directory is world writable the sticky bit
+ # must be set
+
+ if (File::Temp->safe_level == MEDIUM) {
+ my $safeerr;
+ unless (_is_safe($parent,\$safeerr)) {
+ ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)";
+ return ();
+ }
+ } elsif (File::Temp->safe_level == HIGH) {
+ my $safeerr;
+ unless (_is_verysafe($parent, \$safeerr)) {
+ ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)";
+ return ();
+ }
+ }
+
+
+ # Now try MAX_TRIES time to open the file
+ for (my $i = 0; $i < MAX_TRIES; $i++) {
+
+ # Try to open the file if requested
+ if ($options{"open"}) {
+ my $fh;
+
+ # If we are running before perl5.6.0 we can not auto-vivify
+ if ($] < 5.006) {
+ $fh = &Symbol::gensym;
+ }
+
+ # Try to make sure this will be marked close-on-exec
+ # XXX: Win32 doesn't respect this, nor the proper fcntl,
+ # but may have O_NOINHERIT. This may or may not be in Fcntl.
+ local $^F = 2;
+
+ # Attempt to open the file
+ my $open_success = undef;
+ if ( $^O eq 'VMS' and $options{"unlink_on_close"} && !$KEEP_ALL) {
+ # make it auto delete on close by setting FAB$V_DLT bit
+ $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, 0600, 'fop=dlt');
+ $open_success = $fh;
+ } else {
+ my $flags = ( ($options{"unlink_on_close"} && !$KEEP_ALL) ?
+ $OPENTEMPFLAGS :
+ $OPENFLAGS );
+ $flags |= $LOCKFLAG if (defined $LOCKFLAG && $options{use_exlock});
+ $open_success = sysopen($fh, $path, $flags, 0600);
+ }
+ if ( $open_success ) {
+
+ # in case of odd umask force rw
+ chmod(0600, $path);
+
+ # Opened successfully - return file handle and name
+ return ($fh, $path);
+
+ } else {
+
+ # Error opening file - abort with error
+ # if the reason was anything but EEXIST
+ unless ($!{EEXIST}) {
+ ${$options{ErrStr}} = "Could not create temp file $path: $!";
+ return ();
+ }
+
+ # Loop round for another try
+
+ }
+ } elsif ($options{"mkdir"}) {
+
+ # Open the temp directory
+ if (mkdir( $path, 0700)) {
+ # in case of odd umask
+ chmod(0700, $path);
+
+ return undef, $path;
+ } else {
+
+ # Abort with error if the reason for failure was anything
+ # except EEXIST
+ unless ($!{EEXIST}) {
+ ${$options{ErrStr}} = "Could not create directory $path: $!";
+ return ();
+ }
+
+ # Loop round for another try
+
+ }
+
+ } else {
+
+ # Return true if the file can not be found
+ # Directory has been checked previously
+
+ return (undef, $path) unless -e $path;
+
+ # Try again until MAX_TRIES
+
+ }
+
+ # Did not successfully open the tempfile/dir
+ # so try again with a different set of random letters
+ # No point in trying to increment unless we have only
+ # 1 X say and the randomness could come up with the same
+ # file MAX_TRIES in a row.
+
+ # Store current attempt - in principal this implies that the
+ # 3rd time around the open attempt that the first temp file
+ # name could be generated again. Probably should store each
+ # attempt and make sure that none are repeated
+
+ my $original = $path;
+ my $counter = 0; # Stop infinite loop
+ my $MAX_GUESS = 50;
+
+ do {
+
+ # Generate new name from original template
+ $path = _replace_XX($template, $options{"suffixlen"});
+
+ $counter++;
+
+ } until ($path ne $original || $counter > $MAX_GUESS);
+
+ # Check for out of control looping
+ if ($counter > $MAX_GUESS) {
+ ${$options{ErrStr}} = "Tried to get a new temp name different to the previous value $MAX_GUESS times.\nSomething wrong with template?? ($template)";
+ return ();
+ }
+
+ }
+
+ # If we get here, we have run out of tries
+ ${ $options{ErrStr} } = "Have exceeded the maximum number of attempts ("
+ . MAX_TRIES . ") to open temp file/dir";
+
+ return ();
+
+}
+
+# Internal routine to replace the XXXX... with random characters
+# This has to be done by _gettemp() every time it fails to
+# open a temp file/dir
+
+# Arguments: $template (the template with XXX),
+# $ignore (number of characters at end to ignore)
+
+# Returns: modified template
+
+sub _replace_XX {
+
+ croak 'Usage: _replace_XX($template, $ignore)'
+ unless scalar(@_) == 2;
+
+ my ($path, $ignore) = @_;
+
+ # Do it as an if, since the suffix adjusts which section to replace
+ # and suffixlen=0 returns nothing if used in the substr directly
+ # Alternatively, could simply set $ignore to length($path)-1
+ # Don't want to always use substr when not required though.
+ my $end = ( $] >= 5.006 ? "\\z" : "\\Z" );
+
+ if ($ignore) {
+ substr($path, 0, - $ignore) =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge;
+ } else {
+ $path =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge;
+ }
+ return $path;
+}
+
+# Internal routine to force a temp file to be writable after
+# it is created so that we can unlink it. Windows seems to occasionally
+# force a file to be readonly when written to certain temp locations
+sub _force_writable {
+ my $file = shift;
+ chmod 0600, $file;
+}
+
+
+# internal routine to check to see if the directory is safe
+# First checks to see if the directory is not owned by the
+# current user or root. Then checks to see if anyone else
+# can write to the directory and if so, checks to see if
+# it has the sticky bit set
+
+# Will not work on systems that do not support sticky bit
+
+#Args: directory path to check
+# Optionally: reference to scalar to contain error message
+# Returns true if the path is safe and false otherwise.
+# Returns undef if can not even run stat() on the path
+
+# This routine based on version written by Tom Christiansen
+
+# Presumably, by the time we actually attempt to create the
+# file or directory in this directory, it may not be safe
+# anymore... Have to run _is_safe directly after the open.
+
+sub _is_safe {
+
+ my $path = shift;
+ my $err_ref = shift;
+
+ # Stat path
+ my @info = stat($path);
+ unless (scalar(@info)) {
+ $$err_ref = "stat(path) returned no values";
+ return 0;
+ }
+ ;
+ return 1 if $^O eq 'VMS'; # owner delete control at file level
+
+ # Check to see whether owner is neither superuser (or a system uid) nor me
+ # Use the effective uid from the $> variable
+ # UID is in [4]
+ if ($info[4] > File::Temp->top_system_uid() && $info[4] != $>) {
+
+ Carp::cluck(sprintf "uid=$info[4] topuid=%s euid=$> path='$path'",
+ File::Temp->top_system_uid());
+
+ $$err_ref = "Directory owned neither by root nor the current user"
+ if ref($err_ref);
+ return 0;
+ }
+
+ # check whether group or other can write file
+ # use 066 to detect either reading or writing
+ # use 022 to check writability
+ # Do it with S_IWOTH and S_IWGRP for portability (maybe)
+ # mode is in info[2]
+ if (($info[2] & &Fcntl::S_IWGRP) || # Is group writable?
+ ($info[2] & &Fcntl::S_IWOTH) ) { # Is world writable?
+ # Must be a directory
+ unless (-d $path) {
+ $$err_ref = "Path ($path) is not a directory"
+ if ref($err_ref);
+ return 0;
+ }
+ # Must have sticky bit set
+ unless (-k $path) {
+ $$err_ref = "Sticky bit not set on $path when dir is group|world writable"
+ if ref($err_ref);
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+# Internal routine to check whether a directory is safe
+# for temp files. Safer than _is_safe since it checks for
+# the possibility of chown giveaway and if that is a possibility
+# checks each directory in the path to see if it is safe (with _is_safe)
+
+# If _PC_CHOWN_RESTRICTED is not set, does the full test of each
+# directory anyway.
+
+# Takes optional second arg as scalar ref to error reason
+
+sub _is_verysafe {
+
+ # Need POSIX - but only want to bother if really necessary due to overhead
+ require POSIX;
+
+ my $path = shift;
+ print "_is_verysafe testing $path\n" if $DEBUG;
+ return 1 if $^O eq 'VMS'; # owner delete control at file level
+
+ my $err_ref = shift;
+
+ # Should Get the value of _PC_CHOWN_RESTRICTED if it is defined
+ # and If it is not there do the extensive test
+ local($@);
+ my $chown_restricted;
+ $chown_restricted = &POSIX::_PC_CHOWN_RESTRICTED()
+ if eval { &POSIX::_PC_CHOWN_RESTRICTED(); 1};
+
+ # If chown_resticted is set to some value we should test it
+ if (defined $chown_restricted) {
+
+ # Return if the current directory is safe
+ return _is_safe($path,$err_ref) if POSIX::sysconf( $chown_restricted );
+
+ }
+
+ # To reach this point either, the _PC_CHOWN_RESTRICTED symbol
+ # was not available or the symbol was there but chown giveaway
+ # is allowed. Either way, we now have to test the entire tree for
+ # safety.
+
+ # Convert path to an absolute directory if required
+ unless (File::Spec->file_name_is_absolute($path)) {
+ $path = File::Spec->rel2abs($path);
+ }
+
+ # Split directory into components - assume no file
+ my ($volume, $directories, undef) = File::Spec->splitpath( $path, 1);
+
+ # Slightly less efficient than having a function in File::Spec
+ # to chop off the end of a directory or even a function that
+ # can handle ../ in a directory tree
+ # Sometimes splitdir() returns a blank at the end
+ # so we will probably check the bottom directory twice in some cases
+ my @dirs = File::Spec->splitdir($directories);
+
+ # Concatenate one less directory each time around
+ foreach my $pos (0.. $#dirs) {
+ # Get a directory name
+ my $dir = File::Spec->catpath($volume,
+ File::Spec->catdir(@dirs[0.. $#dirs - $pos]),
+ ''
+ );
+
+ print "TESTING DIR $dir\n" if $DEBUG;
+
+ # Check the directory
+ return 0 unless _is_safe($dir,$err_ref);
+
+ }
+
+ return 1;
+}
+
+
+
+# internal routine to determine whether unlink works on this
+# platform for files that are currently open.
+# Returns true if we can, false otherwise.
+
+# Currently WinNT, OS/2 and VMS can not unlink an opened file
+# On VMS this is because the O_EXCL flag is used to open the
+# temporary file. Currently I do not know enough about the issues
+# on VMS to decide whether O_EXCL is a requirement.
+
+sub _can_unlink_opened_file {
+
+ if (grep { $^O eq $_ } qw/MSWin32 os2 VMS dos MacOS haiku/) {
+ return 0;
+ } else {
+ return 1;
+ }
+
+}
+
+# internal routine to decide which security levels are allowed
+# see safe_level() for more information on this
+
+# Controls whether the supplied security level is allowed
+
+# $cando = _can_do_level( $level )
+
+sub _can_do_level {
+
+ # Get security level
+ my $level = shift;
+
+ # Always have to be able to do STANDARD
+ return 1 if $level == STANDARD;
+
+ # Currently, the systems that can do HIGH or MEDIUM are identical
+ if ( $^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'MacOS' || $^O eq 'mpeix') {
+ return 0;
+ } else {
+ return 1;
+ }
+
+}
+
+# This routine sets up a deferred unlinking of a specified
+# filename and filehandle. It is used in the following cases:
+# - Called by unlink0 if an opened file can not be unlinked
+# - Called by tempfile() if files are to be removed on shutdown
+# - Called by tempdir() if directories are to be removed on shutdown
+
+# Arguments:
+# _deferred_unlink( $fh, $fname, $isdir );
+#
+# - filehandle (so that it can be explicitly closed if open
+# - filename (the thing we want to remove)
+# - isdir (flag to indicate that we are being given a directory)
+# [and hence no filehandle]
+
+# Status is not referred to since all the magic is done with an END block
+
+{
+ # Will set up two lexical variables to contain all the files to be
+ # removed. One array for files, another for directories They will
+ # only exist in this block.
+
+ # This means we only have to set up a single END block to remove
+ # all files.
+
+ # in order to prevent child processes inadvertently deleting the parent
+ # temp files we use a hash to store the temp files and directories
+ # created by a particular process id.
+
+ # %files_to_unlink contains values that are references to an array of
+ # array references containing the filehandle and filename associated with
+ # the temp file.
+ my (%files_to_unlink, %dirs_to_unlink);
+
+ # Set up an end block to use these arrays
+ END {
+ local($., $@, $!, $^E, $?);
+ cleanup(at_exit => 1);
+ }
+
+ # Cleanup function. Always triggered on END (with at_exit => 1) but
+ # can be invoked manually.
+ sub cleanup {
+ my %h = @_;
+ my $at_exit = delete $h{at_exit};
+ $at_exit = 0 if not defined $at_exit;
+ { my @k = sort keys %h; die "unrecognized parameters: @k" if @k }
+
+ if (!$KEEP_ALL) {
+ # Files
+ my @files = (exists $files_to_unlink{$$} ?
+ @{ $files_to_unlink{$$} } : () );
+ foreach my $file (@files) {
+ # close the filehandle without checking its state
+ # in order to make real sure that this is closed
+ # if its already closed then I dont care about the answer
+ # probably a better way to do this
+ close($file->[0]); # file handle is [0]
+
+ if (-f $file->[1]) { # file name is [1]
+ _force_writable( $file->[1] ); # for windows
+ unlink $file->[1] or warn "Error removing ".$file->[1];
+ }
+ }
+ # Dirs
+ my @dirs = (exists $dirs_to_unlink{$$} ?
+ @{ $dirs_to_unlink{$$} } : () );
+ my ($cwd, $cwd_to_remove);
+ foreach my $dir (@dirs) {
+ if (-d $dir) {
+ # Some versions of rmtree will abort if you attempt to remove
+ # the directory you are sitting in. For automatic cleanup
+ # at program exit, we avoid this by chdir()ing out of the way
+ # first. If not at program exit, it's best not to mess with the
+ # current directory, so just let it fail with a warning.
+ if ($at_exit) {
+ $cwd = Cwd::abs_path(File::Spec->curdir) if not defined $cwd;
+ my $abs = Cwd::abs_path($dir);
+ if ($abs eq $cwd) {
+ $cwd_to_remove = $dir;
+ next;
+ }
+ }
+ eval { rmtree($dir, $DEBUG, 0); };
+ warn $@ if ($@ && $^W);
+ }
+ }
+
+ if (defined $cwd_to_remove) {
+ # We do need to clean up the current directory, and everything
+ # else is done, so get out of there and remove it.
+ chdir $cwd_to_remove or die "cannot chdir to $cwd_to_remove: $!";
+ my $updir = File::Spec->updir;
+ chdir $updir or die "cannot chdir to $updir: $!";
+ eval { rmtree($cwd_to_remove, $DEBUG, 0); };
+ warn $@ if ($@ && $^W);
+ }
+
+ # clear the arrays
+ @{ $files_to_unlink{$$} } = ()
+ if exists $files_to_unlink{$$};
+ @{ $dirs_to_unlink{$$} } = ()
+ if exists $dirs_to_unlink{$$};
+ }
+ }
+
+
+ # This is the sub called to register a file for deferred unlinking
+ # This could simply store the input parameters and defer everything
+ # until the END block. For now we do a bit of checking at this
+ # point in order to make sure that (1) we have a file/dir to delete
+ # and (2) we have been called with the correct arguments.
+ sub _deferred_unlink {
+
+ croak 'Usage: _deferred_unlink($fh, $fname, $isdir)'
+ unless scalar(@_) == 3;
+
+ my ($fh, $fname, $isdir) = @_;
+
+ warn "Setting up deferred removal of $fname\n"
+ if $DEBUG;
+
+ # make sure we save the absolute path for later cleanup
+ # OK to untaint because we only ever use this internally
+ # as a file path, never interpolating into the shell
+ $fname = Cwd::abs_path($fname);
+ ($fname) = $fname =~ /^(.*)$/;
+
+ # If we have a directory, check that it is a directory
+ if ($isdir) {
+
+ if (-d $fname) {
+
+ # Directory exists so store it
+ # first on VMS turn []foo into [.foo] for rmtree
+ $fname = VMS::Filespec::vmspath($fname) if $^O eq 'VMS';
+ $dirs_to_unlink{$$} = []
+ unless exists $dirs_to_unlink{$$};
+ push (@{ $dirs_to_unlink{$$} }, $fname);
+
+ } else {
+ carp "Request to remove directory $fname could not be completed since it does not exist!\n" if $^W;
+ }
+
+ } else {
+
+ if (-f $fname) {
+
+ # file exists so store handle and name for later removal
+ $files_to_unlink{$$} = []
+ unless exists $files_to_unlink{$$};
+ push(@{ $files_to_unlink{$$} }, [$fh, $fname]);
+
+ } else {
+ carp "Request to remove file $fname could not be completed since it is not there!\n" if $^W;
+ }
+
+ }
+
+ }
+
+
+}
+
+# normalize argument keys to upper case and do consistent handling
+# of leading template vs TEMPLATE
+sub _parse_args {
+ my $leading_template = (scalar(@_) % 2 == 1 ? shift(@_) : '' );
+ my %args = @_;
+ %args = map { uc($_), $args{$_} } keys %args;
+
+ # template (store it in an array so that it will
+ # disappear from the arg list of tempfile)
+ my @template = (
+ exists $args{TEMPLATE} ? $args{TEMPLATE} :
+ $leading_template ? $leading_template : ()
+ );
+ delete $args{TEMPLATE};
+
+ return( \@template, \%args );
+}
+
+=head1 OBJECT-ORIENTED INTERFACE
+
+This is the primary interface for interacting with
+C<File::Temp>. Using the OO interface a temporary file can be created
+when the object is constructed and the file can be removed when the
+object is no longer required.
+
+Note that there is no method to obtain the filehandle from the
+C<File::Temp> object. The object itself acts as a filehandle. The object
+isa C<IO::Handle> and isa C<IO::Seekable> so all those methods are
+available.
+
+Also, the object is configured such that it stringifies to the name of the
+temporary file and so can be compared to a filename directly. It numifies
+to the C<refaddr> the same as other handles and so can be compared to other
+handles with C<==>.
+
+ $fh eq $filename # as a string
+ $fh != \*STDOUT # as a number
+
+=over 4
+
+=item B<new>
+
+Create a temporary file object.
+
+ my $tmp = File::Temp->new();
+
+by default the object is constructed as if C<tempfile>
+was called without options, but with the additional behaviour
+that the temporary file is removed by the object destructor
+if UNLINK is set to true (the default).
+
+Supported arguments are the same as for C<tempfile>: UNLINK
+(defaulting to true), DIR, EXLOCK and SUFFIX. Additionally, the filename
+template is specified using the TEMPLATE option. The OPEN option
+is not supported (the file is always opened).
+
+ $tmp = File::Temp->new( TEMPLATE => 'tempXXXXX',
+ DIR => 'mydir',
+ SUFFIX => '.dat');
+
+Arguments are case insensitive.
+
+Can call croak() if an error occurs.
+
+=cut
+
+sub new {
+ my $proto = shift;
+ my $class = ref($proto) || $proto;
+
+ my ($maybe_template, $args) = _parse_args(@_);
+
+ # see if they are unlinking (defaulting to yes)
+ my $unlink = (exists $args->{UNLINK} ? $args->{UNLINK} : 1 );
+ delete $args->{UNLINK};
+
+ # Protect OPEN
+ delete $args->{OPEN};
+
+ # Open the file and retain file handle and file name
+ my ($fh, $path) = tempfile( @$maybe_template, %$args );
+
+ print "Tmp: $fh - $path\n" if $DEBUG;
+
+ # Store the filename in the scalar slot
+ ${*$fh} = $path;
+
+ # Cache the filename by pid so that the destructor can decide whether to remove it
+ $FILES_CREATED_BY_OBJECT{$$}{$path} = 1;
+
+ # Store unlink information in hash slot (plus other constructor info)
+ %{*$fh} = %$args;
+
+ # create the object
+ bless $fh, $class;
+
+ # final method-based configuration
+ $fh->unlink_on_destroy( $unlink );
+
+ return $fh;
+}
+
+=item B<newdir>
+
+Create a temporary directory using an object oriented interface.
+
+ $dir = File::Temp->newdir();
+
+By default the directory is deleted when the object goes out of scope.
+
+Supports the same options as the C<tempdir> function. Note that directories
+created with this method default to CLEANUP => 1.
+
+ $dir = File::Temp->newdir( $template, %options );
+
+A template may be specified either with a leading template or
+with a TEMPLATE argument.
+
+=cut
+
+sub newdir {
+ my $self = shift;
+
+ my ($maybe_template, $args) = _parse_args(@_);
+
+ # handle CLEANUP without passing CLEANUP to tempdir
+ my $cleanup = (exists $args->{CLEANUP} ? $args->{CLEANUP} : 1 );
+ delete $args->{CLEANUP};
+
+ my $tempdir = tempdir( @$maybe_template, %$args);
+
+ # get a safe absolute path for cleanup, just like
+ # happens in _deferred_unlink
+ my $real_dir = Cwd::abs_path( $tempdir );
+ ($real_dir) = $real_dir =~ /^(.*)$/;
+
+ return bless { DIRNAME => $tempdir,
+ REALNAME => $real_dir,
+ CLEANUP => $cleanup,
+ LAUNCHPID => $$,
+ }, "File::Temp::Dir";
+}
+
+=item B<filename>
+
+Return the name of the temporary file associated with this object
+(if the object was created using the "new" constructor).
+
+ $filename = $tmp->filename;
+
+This method is called automatically when the object is used as
+a string.
+
+=cut
+
+sub filename {
+ my $self = shift;
+ return ${*$self};
+}
+
+sub STRINGIFY {
+ my $self = shift;
+ return $self->filename;
+}
+
+# For reference, can't use '0+'=>\&Scalar::Util::refaddr directly because
+# refaddr() demands one parameter only, whereas overload.pm calls with three
+# even for unary operations like '0+'.
+sub NUMIFY {
+ return refaddr($_[0]);
+}
+
+=item B<dirname>
+
+Return the name of the temporary directory associated with this
+object (if the object was created using the "newdir" constructor).
+
+ $dirname = $tmpdir->dirname;
+
+This method is called automatically when the object is used in string context.
+
+=item B<unlink_on_destroy>
+
+Control whether the file is unlinked when the object goes out of scope.
+The file is removed if this value is true and $KEEP_ALL is not.
+
+ $fh->unlink_on_destroy( 1 );
+
+Default is for the file to be removed.
+
+=cut
+
+sub unlink_on_destroy {
+ my $self = shift;
+ if (@_) {
+ ${*$self}{UNLINK} = shift;
+ }
+ return ${*$self}{UNLINK};
+}
+
+=item B<DESTROY>
+
+When the object goes out of scope, the destructor is called. This
+destructor will attempt to unlink the file (using L<unlink1|"unlink1">)
+if the constructor was called with UNLINK set to 1 (the default state
+if UNLINK is not specified).
+
+No error is given if the unlink fails.
+
+If the object has been passed to a child process during a fork, the
+file will be deleted when the object goes out of scope in the parent.
+
+For a temporary directory object the directory will be removed unless
+the CLEANUP argument was used in the constructor (and set to false) or
+C<unlink_on_destroy> was modified after creation. Note that if a temp
+directory is your current directory, it cannot be removed - a warning
+will be given in this case. C<chdir()> out of the directory before
+letting the object go out of scope.
+
+If the global variable $KEEP_ALL is true, the file or directory
+will not be removed.
+
+=cut
+
+sub DESTROY {
+ local($., $@, $!, $^E, $?);
+ my $self = shift;
+
+ # Make sure we always remove the file from the global hash
+ # on destruction. This prevents the hash from growing uncontrollably
+ # and post-destruction there is no reason to know about the file.
+ my $file = $self->filename;
+ my $was_created_by_proc;
+ if (exists $FILES_CREATED_BY_OBJECT{$$}{$file}) {
+ $was_created_by_proc = 1;
+ delete $FILES_CREATED_BY_OBJECT{$$}{$file};
+ }
+
+ if (${*$self}{UNLINK} && !$KEEP_ALL) {
+ print "# ---------> Unlinking $self\n" if $DEBUG;
+
+ # only delete if this process created it
+ return unless $was_created_by_proc;
+
+ # The unlink1 may fail if the file has been closed
+ # by the caller. This leaves us with the decision
+ # of whether to refuse to remove the file or simply
+ # do an unlink without test. Seems to be silly
+ # to do this when we are trying to be careful
+ # about security
+ _force_writable( $file ); # for windows
+ unlink1( $self, $file )
+ or unlink($file);
+ }
+}
+
+=back
+
+=head1 FUNCTIONS
+
+This section describes the recommended interface for generating
+temporary files and directories.
+
+=over 4
+
+=item B<tempfile>
+
+This is the basic function to generate temporary files.
+The behaviour of the file can be changed using various options:
+
+ $fh = tempfile();
+ ($fh, $filename) = tempfile();
+
+Create a temporary file in the directory specified for temporary
+files, as specified by the tmpdir() function in L<File::Spec>.
+
+ ($fh, $filename) = tempfile($template);
+
+Create a temporary file in the current directory using the supplied
+template. Trailing `X' characters are replaced with random letters to
+generate the filename. At least four `X' characters must be present
+at the end of the template.
+
+ ($fh, $filename) = tempfile($template, SUFFIX => $suffix)
+
+Same as previously, except that a suffix is added to the template
+after the `X' translation. Useful for ensuring that a temporary
+filename has a particular extension when needed by other applications.
+But see the WARNING at the end.
+
+ ($fh, $filename) = tempfile($template, DIR => $dir);
+
+Translates the template as before except that a directory name
+is specified.
+
+ ($fh, $filename) = tempfile($template, TMPDIR => 1);
+
+Equivalent to specifying a DIR of "File::Spec->tmpdir", writing the file
+into the same temporary directory as would be used if no template was
+specified at all.
+
+ ($fh, $filename) = tempfile($template, UNLINK => 1);
+
+Return the filename and filehandle as before except that the file is
+automatically removed when the program exits (dependent on
+$KEEP_ALL). Default is for the file to be removed if a file handle is
+requested and to be kept if the filename is requested. In a scalar
+context (where no filename is returned) the file is always deleted
+either (depending on the operating system) on exit or when it is
+closed (unless $KEEP_ALL is true when the temp file is created).
+
+Use the object-oriented interface if fine-grained control of when
+a file is removed is required.
+
+If the template is not specified, a template is always
+automatically generated. This temporary file is placed in tmpdir()
+(L<File::Spec>) unless a directory is specified explicitly with the
+DIR option.
+
+ $fh = tempfile( DIR => $dir );
+
+If called in scalar context, only the filehandle is returned and the
+file will automatically be deleted when closed on operating systems
+that support this (see the description of tmpfile() elsewhere in this
+document). This is the preferred mode of operation, as if you only
+have a filehandle, you can never create a race condition by fumbling
+with the filename. On systems that can not unlink an open file or can
+not mark a file as temporary when it is opened (for example, Windows
+NT uses the C<O_TEMPORARY> flag) the file is marked for deletion when
+the program ends (equivalent to setting UNLINK to 1). The C<UNLINK>
+flag is ignored if present.
+
+ (undef, $filename) = tempfile($template, OPEN => 0);
+
+This will return the filename based on the template but
+will not open this file. Cannot be used in conjunction with
+UNLINK set to true. Default is to always open the file
+to protect from possible race conditions. A warning is issued
+if warnings are turned on. Consider using the tmpnam()
+and mktemp() functions described elsewhere in this document
+if opening the file is not required.
+
+If the operating system supports it (for example BSD derived systems), the
+filehandle will be opened with O_EXLOCK (open with exclusive file lock).
+This can sometimes cause problems if the intention is to pass the filename
+to another system that expects to take an exclusive lock itself (such as
+DBD::SQLite) whilst ensuring that the tempfile is not reused. In this
+situation the "EXLOCK" option can be passed to tempfile. By default EXLOCK
+will be true (this retains compatibility with earlier releases).
+
+ ($fh, $filename) = tempfile($template, EXLOCK => 0);
+
+Options can be combined as required.
+
+Will croak() if there is an error.
+
+=cut
+
+sub tempfile {
+ if ( @_ && $_[0] eq 'File::Temp' ) {
+ croak "'tempfile' can't be called as a method";
+ }
+ # Can not check for argument count since we can have any
+ # number of args
+
+ # Default options
+ my %options = (
+ "DIR" => undef, # Directory prefix
+ "SUFFIX" => '', # Template suffix
+ "UNLINK" => 0, # Do not unlink file on exit
+ "OPEN" => 1, # Open file
+ "TMPDIR" => 0, # Place tempfile in tempdir if template specified
+ "EXLOCK" => 1, # Open file with O_EXLOCK
+ );
+
+ # Check to see whether we have an odd or even number of arguments
+ my ($maybe_template, $args) = _parse_args(@_);
+ my $template = @$maybe_template ? $maybe_template->[0] : undef;
+
+ # Read the options and merge with defaults
+ %options = (%options, %$args);
+
+ # First decision is whether or not to open the file
+ if (! $options{"OPEN"}) {
+
+ warn "tempfile(): temporary filename requested but not opened.\nPossibly unsafe, consider using tempfile() with OPEN set to true\n"
+ if $^W;
+
+ }
+
+ if ($options{"DIR"} and $^O eq 'VMS') {
+
+ # on VMS turn []foo into [.foo] for concatenation
+ $options{"DIR"} = VMS::Filespec::vmspath($options{"DIR"});
+ }
+
+ # Construct the template
+
+ # Have a choice of trying to work around the mkstemp/mktemp/tmpnam etc
+ # functions or simply constructing a template and using _gettemp()
+ # explicitly. Go for the latter
+
+ # First generate a template if not defined and prefix the directory
+ # If no template must prefix the temp directory
+ if (defined $template) {
+ # End up with current directory if neither DIR not TMPDIR are set
+ if ($options{"DIR"}) {
+
+ $template = File::Spec->catfile($options{"DIR"}, $template);
+
+ } elsif ($options{TMPDIR}) {
+
+ $template = File::Spec->catfile(File::Spec->tmpdir, $template );
+
+ }
+
+ } else {
+
+ if ($options{"DIR"}) {
+
+ $template = File::Spec->catfile($options{"DIR"}, TEMPXXX);
+
+ } else {
+
+ $template = File::Spec->catfile(File::Spec->tmpdir, TEMPXXX);
+
+ }
+
+ }
+
+ # Now add a suffix
+ $template .= $options{"SUFFIX"};
+
+ # Determine whether we should tell _gettemp to unlink the file
+ # On unix this is irrelevant and can be worked out after the file is
+ # opened (simply by unlinking the open filehandle). On Windows or VMS
+ # we have to indicate temporary-ness when we open the file. In general
+ # we only want a true temporary file if we are returning just the
+ # filehandle - if the user wants the filename they probably do not
+ # want the file to disappear as soon as they close it (which may be
+ # important if they want a child process to use the file)
+ # For this reason, tie unlink_on_close to the return context regardless
+ # of OS.
+ my $unlink_on_close = ( wantarray ? 0 : 1);
+
+ # Create the file
+ my ($fh, $path, $errstr);
+ croak "Error in tempfile() using template $template: $errstr"
+ unless (($fh, $path) = _gettemp($template,
+ "open" => $options{'OPEN'},
+ "mkdir"=> 0 ,
+ "unlink_on_close" => $unlink_on_close,
+ "suffixlen" => length($options{'SUFFIX'}),
+ "ErrStr" => \$errstr,
+ "use_exlock" => $options{EXLOCK},
+ ) );
+
+ # Set up an exit handler that can do whatever is right for the
+ # system. This removes files at exit when requested explicitly or when
+ # system is asked to unlink_on_close but is unable to do so because
+ # of OS limitations.
+ # The latter should be achieved by using a tied filehandle.
+ # Do not check return status since this is all done with END blocks.
+ _deferred_unlink($fh, $path, 0) if $options{"UNLINK"};
+
+ # Return
+ if (wantarray()) {
+
+ if ($options{'OPEN'}) {
+ return ($fh, $path);
+ } else {
+ return (undef, $path);
+ }
+
+ } else {
+
+ # Unlink the file. It is up to unlink0 to decide what to do with
+ # this (whether to unlink now or to defer until later)
+ unlink0($fh, $path) or croak "Error unlinking file $path using unlink0";
+
+ # Return just the filehandle.
+ return $fh;
+ }
+
+
+}
+
+=item B<tempdir>
+
+This is the recommended interface for creation of temporary
+directories. By default the directory will not be removed on exit
+(that is, it won't be temporary; this behaviour can not be changed
+because of issues with backwards compatibility). To enable removal
+either use the CLEANUP option which will trigger removal on program
+exit, or consider using the "newdir" method in the object interface which
+will allow the directory to be cleaned up when the object goes out of
+scope.
+
+The behaviour of the function depends on the arguments:
+
+ $tempdir = tempdir();
+
+Create a directory in tmpdir() (see L<File::Spec|File::Spec>).
+
+ $tempdir = tempdir( $template );
+
+Create a directory from the supplied template. This template is
+similar to that described for tempfile(). `X' characters at the end
+of the template are replaced with random letters to construct the
+directory name. At least four `X' characters must be in the template.
+
+ $tempdir = tempdir ( DIR => $dir );
+
+Specifies the directory to use for the temporary directory.
+The temporary directory name is derived from an internal template.
+
+ $tempdir = tempdir ( $template, DIR => $dir );
+
+Prepend the supplied directory name to the template. The template
+should not include parent directory specifications itself. Any parent
+directory specifications are removed from the template before
+prepending the supplied directory.
+
+ $tempdir = tempdir ( $template, TMPDIR => 1 );
+
+Using the supplied template, create the temporary directory in
+a standard location for temporary files. Equivalent to doing
+
+ $tempdir = tempdir ( $template, DIR => File::Spec->tmpdir);
+
+but shorter. Parent directory specifications are stripped from the
+template itself. The C<TMPDIR> option is ignored if C<DIR> is set
+explicitly. Additionally, C<TMPDIR> is implied if neither a template
+nor a directory are supplied.
+
+ $tempdir = tempdir( $template, CLEANUP => 1);
+
+Create a temporary directory using the supplied template, but
+attempt to remove it (and all files inside it) when the program
+exits. Note that an attempt will be made to remove all files from
+the directory even if they were not created by this module (otherwise
+why ask to clean it up?). The directory removal is made with
+the rmtree() function from the L<File::Path|File::Path> module.
+Of course, if the template is not specified, the temporary directory
+will be created in tmpdir() and will also be removed at program exit.
+
+Will croak() if there is an error.
+
+=cut
+
+# '
+
+sub tempdir {
+ if ( @_ && $_[0] eq 'File::Temp' ) {
+ croak "'tempdir' can't be called as a method";
+ }
+
+ # Can not check for argument count since we can have any
+ # number of args
+
+ # Default options
+ my %options = (
+ "CLEANUP" => 0, # Remove directory on exit
+ "DIR" => '', # Root directory
+ "TMPDIR" => 0, # Use tempdir with template
+ );
+
+ # Check to see whether we have an odd or even number of arguments
+ my ($maybe_template, $args) = _parse_args(@_);
+ my $template = @$maybe_template ? $maybe_template->[0] : undef;
+
+ # Read the options and merge with defaults
+ %options = (%options, %$args);
+
+ # Modify or generate the template
+
+ # Deal with the DIR and TMPDIR options
+ if (defined $template) {
+
+ # Need to strip directory path if using DIR or TMPDIR
+ if ($options{'TMPDIR'} || $options{'DIR'}) {
+
+ # Strip parent directory from the filename
+ #
+ # There is no filename at the end
+ $template = VMS::Filespec::vmspath($template) if $^O eq 'VMS';
+ my ($volume, $directories, undef) = File::Spec->splitpath( $template, 1);
+
+ # Last directory is then our template
+ $template = (File::Spec->splitdir($directories))[-1];
+
+ # Prepend the supplied directory or temp dir
+ if ($options{"DIR"}) {
+
+ $template = File::Spec->catdir($options{"DIR"}, $template);
+
+ } elsif ($options{TMPDIR}) {
+
+ # Prepend tmpdir
+ $template = File::Spec->catdir(File::Spec->tmpdir, $template);
+
+ }
+
+ }
+
+ } else {
+
+ if ($options{"DIR"}) {
+
+ $template = File::Spec->catdir($options{"DIR"}, TEMPXXX);
+
+ } else {
+
+ $template = File::Spec->catdir(File::Spec->tmpdir, TEMPXXX);
+
+ }
+
+ }
+
+ # Create the directory
+ my $tempdir;
+ my $suffixlen = 0;
+ if ($^O eq 'VMS') { # dir names can end in delimiters
+ $template =~ m/([\.\]:>]+)$/;
+ $suffixlen = length($1);
+ }
+ if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) {
+ # dir name has a trailing ':'
+ ++$suffixlen;
+ }
+
+ my $errstr;
+ croak "Error in tempdir() using $template: $errstr"
+ unless ((undef, $tempdir) = _gettemp($template,
+ "open" => 0,
+ "mkdir"=> 1 ,
+ "suffixlen" => $suffixlen,
+ "ErrStr" => \$errstr,
+ ) );
+
+ # Install exit handler; must be dynamic to get lexical
+ if ( $options{'CLEANUP'} && -d $tempdir) {
+ _deferred_unlink(undef, $tempdir, 1);
+ }
+
+ # Return the dir name
+ return $tempdir;
+
+}
+
+=back
+
+=head1 MKTEMP FUNCTIONS
+
+The following functions are Perl implementations of the
+mktemp() family of temp file generation system calls.
+
+=over 4
+
+=item B<mkstemp>
+
+Given a template, returns a filehandle to the temporary file and the name
+of the file.
+
+ ($fh, $name) = mkstemp( $template );
+
+In scalar context, just the filehandle is returned.
+
+The template may be any filename with some number of X's appended
+to it, for example F</tmp/temp.XXXX>. The trailing X's are replaced
+with unique alphanumeric combinations.
+
+Will croak() if there is an error.
+
+=cut
+
+
+
+sub mkstemp {
+
+ croak "Usage: mkstemp(template)"
+ if scalar(@_) != 1;
+
+ my $template = shift;
+
+ my ($fh, $path, $errstr);
+ croak "Error in mkstemp using $template: $errstr"
+ unless (($fh, $path) = _gettemp($template,
+ "open" => 1,
+ "mkdir"=> 0 ,
+ "suffixlen" => 0,
+ "ErrStr" => \$errstr,
+ ) );
+
+ if (wantarray()) {
+ return ($fh, $path);
+ } else {
+ return $fh;
+ }
+
+}
+
+
+=item B<mkstemps>
+
+Similar to mkstemp(), except that an extra argument can be supplied
+with a suffix to be appended to the template.
+
+ ($fh, $name) = mkstemps( $template, $suffix );
+
+For example a template of C<testXXXXXX> and suffix of C<.dat>
+would generate a file similar to F<testhGji_w.dat>.
+
+Returns just the filehandle alone when called in scalar context.
+
+Will croak() if there is an error.
+
+=cut
+
+sub mkstemps {
+
+ croak "Usage: mkstemps(template, suffix)"
+ if scalar(@_) != 2;
+
+
+ my $template = shift;
+ my $suffix = shift;
+
+ $template .= $suffix;
+
+ my ($fh, $path, $errstr);
+ croak "Error in mkstemps using $template: $errstr"
+ unless (($fh, $path) = _gettemp($template,
+ "open" => 1,
+ "mkdir"=> 0 ,
+ "suffixlen" => length($suffix),
+ "ErrStr" => \$errstr,
+ ) );
+
+ if (wantarray()) {
+ return ($fh, $path);
+ } else {
+ return $fh;
+ }
+
+}
+
+=item B<mkdtemp>
+
+Create a directory from a template. The template must end in
+X's that are replaced by the routine.
+
+ $tmpdir_name = mkdtemp($template);
+
+Returns the name of the temporary directory created.
+
+Directory must be removed by the caller.
+
+Will croak() if there is an error.
+
+=cut
+
+#' # for emacs
+
+sub mkdtemp {
+
+ croak "Usage: mkdtemp(template)"
+ if scalar(@_) != 1;
+
+ my $template = shift;
+ my $suffixlen = 0;
+ if ($^O eq 'VMS') { # dir names can end in delimiters
+ $template =~ m/([\.\]:>]+)$/;
+ $suffixlen = length($1);
+ }
+ if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) {
+ # dir name has a trailing ':'
+ ++$suffixlen;
+ }
+ my ($junk, $tmpdir, $errstr);
+ croak "Error creating temp directory from template $template\: $errstr"
+ unless (($junk, $tmpdir) = _gettemp($template,
+ "open" => 0,
+ "mkdir"=> 1 ,
+ "suffixlen" => $suffixlen,
+ "ErrStr" => \$errstr,
+ ) );
+
+ return $tmpdir;
+
+}
+
+=item B<mktemp>
+
+Returns a valid temporary filename but does not guarantee
+that the file will not be opened by someone else.
+
+ $unopened_file = mktemp($template);
+
+Template is the same as that required by mkstemp().
+
+Will croak() if there is an error.
+
+=cut
+
+sub mktemp {
+
+ croak "Usage: mktemp(template)"
+ if scalar(@_) != 1;
+
+ my $template = shift;
+
+ my ($tmpname, $junk, $errstr);
+ croak "Error getting name to temp file from template $template: $errstr"
+ unless (($junk, $tmpname) = _gettemp($template,
+ "open" => 0,
+ "mkdir"=> 0 ,
+ "suffixlen" => 0,
+ "ErrStr" => \$errstr,
+ ) );
+
+ return $tmpname;
+}
+
+=back
+
+=head1 POSIX FUNCTIONS
+
+This section describes the re-implementation of the tmpnam()
+and tmpfile() functions described in L<POSIX>
+using the mkstemp() from this module.
+
+Unlike the L<POSIX|POSIX> implementations, the directory used
+for the temporary file is not specified in a system include
+file (C<P_tmpdir>) but simply depends on the choice of tmpdir()
+returned by L<File::Spec|File::Spec>. On some implementations this
+location can be set using the C<TMPDIR> environment variable, which
+may not be secure.
+If this is a problem, simply use mkstemp() and specify a template.
+
+=over 4
+
+=item B<tmpnam>
+
+When called in scalar context, returns the full name (including path)
+of a temporary file (uses mktemp()). The only check is that the file does
+not already exist, but there is no guarantee that that condition will
+continue to apply.
+
+ $file = tmpnam();
+
+When called in list context, a filehandle to the open file and
+a filename are returned. This is achieved by calling mkstemp()
+after constructing a suitable template.
+
+ ($fh, $file) = tmpnam();
+
+If possible, this form should be used to prevent possible
+race conditions.
+
+See L<File::Spec/tmpdir> for information on the choice of temporary
+directory for a particular operating system.
+
+Will croak() if there is an error.
+
+=cut
+
+sub tmpnam {
+
+ # Retrieve the temporary directory name
+ my $tmpdir = File::Spec->tmpdir;
+
+ croak "Error temporary directory is not writable"
+ if $tmpdir eq '';
+
+ # Use a ten character template and append to tmpdir
+ my $template = File::Spec->catfile($tmpdir, TEMPXXX);
+
+ if (wantarray() ) {
+ return mkstemp($template);
+ } else {
+ return mktemp($template);
+ }
+
+}
+
+=item B<tmpfile>
+
+Returns the filehandle of a temporary file.
+
+ $fh = tmpfile();
+
+The file is removed when the filehandle is closed or when the program
+exits. No access to the filename is provided.
+
+If the temporary file can not be created undef is returned.
+Currently this command will probably not work when the temporary
+directory is on an NFS file system.
+
+Will croak() if there is an error.
+
+=cut
+
+sub tmpfile {
+
+ # Simply call tmpnam() in a list context
+ my ($fh, $file) = tmpnam();
+
+ # Make sure file is removed when filehandle is closed
+ # This will fail on NFS
+ unlink0($fh, $file)
+ or return undef;
+
+ return $fh;
+
+}
+
+=back
+
+=head1 ADDITIONAL FUNCTIONS
+
+These functions are provided for backwards compatibility
+with common tempfile generation C library functions.
+
+They are not exported and must be addressed using the full package
+name.
+
+=over 4
+
+=item B<tempnam>
+
+Return the name of a temporary file in the specified directory
+using a prefix. The file is guaranteed not to exist at the time
+the function was called, but such guarantees are good for one
+clock tick only. Always use the proper form of C<sysopen>
+with C<O_CREAT | O_EXCL> if you must open such a filename.
+
+ $filename = File::Temp::tempnam( $dir, $prefix );
+
+Equivalent to running mktemp() with $dir/$prefixXXXXXXXX
+(using unix file convention as an example)
+
+Because this function uses mktemp(), it can suffer from race conditions.
+
+Will croak() if there is an error.
+
+=cut
+
+sub tempnam {
+
+ croak 'Usage tempnam($dir, $prefix)' unless scalar(@_) == 2;
+
+ my ($dir, $prefix) = @_;
+
+ # Add a string to the prefix
+ $prefix .= 'XXXXXXXX';
+
+ # Concatenate the directory to the file
+ my $template = File::Spec->catfile($dir, $prefix);
+
+ return mktemp($template);
+
+}
+
+=back
+
+=head1 UTILITY FUNCTIONS
+
+Useful functions for dealing with the filehandle and filename.
+
+=over 4
+
+=item B<unlink0>
+
+Given an open filehandle and the associated filename, make a safe
+unlink. This is achieved by first checking that the filename and
+filehandle initially point to the same file and that the number of
+links to the file is 1 (all fields returned by stat() are compared).
+Then the filename is unlinked and the filehandle checked once again to
+verify that the number of links on that file is now 0. This is the
+closest you can come to making sure that the filename unlinked was the
+same as the file whose descriptor you hold.
+
+ unlink0($fh, $path)
+ or die "Error unlinking file $path safely";
+
+Returns false on error but croaks() if there is a security
+anomaly. The filehandle is not closed since on some occasions this is
+not required.
+
+On some platforms, for example Windows NT, it is not possible to
+unlink an open file (the file must be closed first). On those
+platforms, the actual unlinking is deferred until the program ends and
+good status is returned. A check is still performed to make sure that
+the filehandle and filename are pointing to the same thing (but not at
+the time the end block is executed since the deferred removal may not
+have access to the filehandle).
+
+Additionally, on Windows NT not all the fields returned by stat() can
+be compared. For example, the C<dev> and C<rdev> fields seem to be
+different. Also, it seems that the size of the file returned by stat()
+does not always agree, with C<stat(FH)> being more accurate than
+C<stat(filename)>, presumably because of caching issues even when
+using autoflush (this is usually overcome by waiting a while after
+writing to the tempfile before attempting to C<unlink0> it).
+
+Finally, on NFS file systems the link count of the file handle does
+not always go to zero immediately after unlinking. Currently, this
+command is expected to fail on NFS disks.
+
+This function is disabled if the global variable $KEEP_ALL is true
+and an unlink on open file is supported. If the unlink is to be deferred
+to the END block, the file is still registered for removal.
+
+This function should not be called if you are using the object oriented
+interface since the it will interfere with the object destructor deleting
+the file.
+
+=cut
+
+sub unlink0 {
+
+ croak 'Usage: unlink0(filehandle, filename)'
+ unless scalar(@_) == 2;
+
+ # Read args
+ my ($fh, $path) = @_;
+
+ cmpstat($fh, $path) or return 0;
+
+ # attempt remove the file (does not work on some platforms)
+ if (_can_unlink_opened_file()) {
+
+ # return early (Without unlink) if we have been instructed to retain files.
+ return 1 if $KEEP_ALL;
+
+ # XXX: do *not* call this on a directory; possible race
+ # resulting in recursive removal
+ croak "unlink0: $path has become a directory!" if -d $path;
+ unlink($path) or return 0;
+
+ # Stat the filehandle
+ my @fh = stat $fh;
+
+ print "Link count = $fh[3] \n" if $DEBUG;
+
+ # Make sure that the link count is zero
+ # - Cygwin provides deferred unlinking, however,
+ # on Win9x the link count remains 1
+ # On NFS the link count may still be 1 but we can't know that
+ # we are on NFS. Since we can't be sure, we'll defer it
+
+ return 1 if $fh[3] == 0 || $^O eq 'cygwin';
+ }
+ # fall-through if we can't unlink now
+ _deferred_unlink($fh, $path, 0);
+ return 1;
+}
+
+=item B<cmpstat>
+
+Compare C<stat> of filehandle with C<stat> of provided filename. This
+can be used to check that the filename and filehandle initially point
+to the same file and that the number of links to the file is 1 (all
+fields returned by stat() are compared).
+
+ cmpstat($fh, $path)
+ or die "Error comparing handle with file";
+
+Returns false if the stat information differs or if the link count is
+greater than 1. Calls croak if there is a security anomaly.
+
+On certain platforms, for example Windows, not all the fields returned by stat()
+can be compared. For example, the C<dev> and C<rdev> fields seem to be
+different in Windows. Also, it seems that the size of the file
+returned by stat() does not always agree, with C<stat(FH)> being more
+accurate than C<stat(filename)>, presumably because of caching issues
+even when using autoflush (this is usually overcome by waiting a while
+after writing to the tempfile before attempting to C<unlink0> it).
+
+Not exported by default.
+
+=cut
+
+sub cmpstat {
+
+ croak 'Usage: cmpstat(filehandle, filename)'
+ unless scalar(@_) == 2;
+
+ # Read args
+ my ($fh, $path) = @_;
+
+ warn "Comparing stat\n"
+ if $DEBUG;
+
+ # Stat the filehandle - which may be closed if someone has manually
+ # closed the file. Can not turn off warnings without using $^W
+ # unless we upgrade to 5.006 minimum requirement
+ my @fh;
+ {
+ local ($^W) = 0;
+ @fh = stat $fh;
+ }
+ return unless @fh;
+
+ if ($fh[3] > 1 && $^W) {
+ carp "unlink0: fstat found too many links; SB=@fh" if $^W;
+ }
+
+ # Stat the path
+ my @path = stat $path;
+
+ unless (@path) {
+ carp "unlink0: $path is gone already" if $^W;
+ return;
+ }
+
+ # this is no longer a file, but may be a directory, or worse
+ unless (-f $path) {
+ confess "panic: $path is no longer a file: SB=@fh";
+ }
+
+ # Do comparison of each member of the array
+ # On WinNT dev and rdev seem to be different
+ # depending on whether it is a file or a handle.
+ # Cannot simply compare all members of the stat return
+ # Select the ones we can use
+ my @okstat = (0..$#fh); # Use all by default
+ if ($^O eq 'MSWin32') {
+ @okstat = (1,2,3,4,5,7,8,9,10);
+ } elsif ($^O eq 'os2') {
+ @okstat = (0, 2..$#fh);
+ } elsif ($^O eq 'VMS') { # device and file ID are sufficient
+ @okstat = (0, 1);
+ } elsif ($^O eq 'dos') {
+ @okstat = (0,2..7,11..$#fh);
+ } elsif ($^O eq 'mpeix') {
+ @okstat = (0..4,8..10);
+ }
+
+ # Now compare each entry explicitly by number
+ for (@okstat) {
+ print "Comparing: $_ : $fh[$_] and $path[$_]\n" if $DEBUG;
+ # Use eq rather than == since rdev, blksize, and blocks (6, 11,
+ # and 12) will be '' on platforms that do not support them. This
+ # is fine since we are only comparing integers.
+ unless ($fh[$_] eq $path[$_]) {
+ warn "Did not match $_ element of stat\n" if $DEBUG;
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+=item B<unlink1>
+
+Similar to C<unlink0> except after file comparison using cmpstat, the
+filehandle is closed prior to attempting to unlink the file. This
+allows the file to be removed without using an END block, but does
+mean that the post-unlink comparison of the filehandle state provided
+by C<unlink0> is not available.
+
+ unlink1($fh, $path)
+ or die "Error closing and unlinking file";
+
+Usually called from the object destructor when using the OO interface.
+
+Not exported by default.
+
+This function is disabled if the global variable $KEEP_ALL is true.
+
+Can call croak() if there is a security anomaly during the stat()
+comparison.
+
+=cut
+
+sub unlink1 {
+ croak 'Usage: unlink1(filehandle, filename)'
+ unless scalar(@_) == 2;
+
+ # Read args
+ my ($fh, $path) = @_;
+
+ cmpstat($fh, $path) or return 0;
+
+ # Close the file
+ close( $fh ) or return 0;
+
+ # Make sure the file is writable (for windows)
+ _force_writable( $path );
+
+ # return early (without unlink) if we have been instructed to retain files.
+ return 1 if $KEEP_ALL;
+
+ # remove the file
+ return unlink($path);
+}
+
+=item B<cleanup>
+
+Calling this function will cause any temp files or temp directories
+that are registered for removal to be removed. This happens automatically
+when the process exits but can be triggered manually if the caller is sure
+that none of the temp files are required. This method can be registered as
+an Apache callback.
+
+Note that if a temp directory is your current directory, it cannot be
+removed. C<chdir()> out of the directory first before calling
+C<cleanup()>. (For the cleanup at program exit when the CLEANUP flag
+is set, this happens automatically.)
+
+On OSes where temp files are automatically removed when the temp file
+is closed, calling this function will have no effect other than to remove
+temporary directories (which may include temporary files).
+
+ File::Temp::cleanup();
+
+Not exported by default.
+
+=back
+
+=head1 PACKAGE VARIABLES
+
+These functions control the global state of the package.
+
+=over 4
+
+=item B<safe_level>
+
+Controls the lengths to which the module will go to check the safety of the
+temporary file or directory before proceeding.
+Options are:
+
+=over 8
+
+=item STANDARD
+
+Do the basic security measures to ensure the directory exists and is
+writable, that temporary files are opened only if they do not already
+exist, and that possible race conditions are avoided. Finally the
+L<unlink0|"unlink0"> function is used to remove files safely.
+
+=item MEDIUM
+
+In addition to the STANDARD security, the output directory is checked
+to make sure that it is owned either by root or the user running the
+program. If the directory is writable by group or by other, it is then
+checked to make sure that the sticky bit is set.
+
+Will not work on platforms that do not support the C<-k> test
+for sticky bit.
+
+=item HIGH
+
+In addition to the MEDIUM security checks, also check for the
+possibility of ``chown() giveaway'' using the L<POSIX|POSIX>
+sysconf() function. If this is a possibility, each directory in the
+path is checked in turn for safeness, recursively walking back to the
+root directory.
+
+For platforms that do not support the L<POSIX|POSIX>
+C<_PC_CHOWN_RESTRICTED> symbol (for example, Windows NT) it is
+assumed that ``chown() giveaway'' is possible and the recursive test
+is performed.
+
+=back
+
+The level can be changed as follows:
+
+ File::Temp->safe_level( File::Temp::HIGH );
+
+The level constants are not exported by the module.
+
+Currently, you must be running at least perl v5.6.0 in order to
+run with MEDIUM or HIGH security. This is simply because the
+safety tests use functions from L<Fcntl|Fcntl> that are not
+available in older versions of perl. The problem is that the version
+number for Fcntl is the same in perl 5.6.0 and in 5.005_03 even though
+they are different versions.
+
+On systems that do not support the HIGH or MEDIUM safety levels
+(for example Win NT or OS/2) any attempt to change the level will
+be ignored. The decision to ignore rather than raise an exception
+allows portable programs to be written with high security in mind
+for the systems that can support this without those programs failing
+on systems where the extra tests are irrelevant.
+
+If you really need to see whether the change has been accepted
+simply examine the return value of C<safe_level>.
+
+ $newlevel = File::Temp->safe_level( File::Temp::HIGH );
+ die "Could not change to high security"
+ if $newlevel != File::Temp::HIGH;
+
+=cut
+
+{
+ # protect from using the variable itself
+ my $LEVEL = STANDARD;
+ sub safe_level {
+ my $self = shift;
+ if (@_) {
+ my $level = shift;
+ if (($level != STANDARD) && ($level != MEDIUM) && ($level != HIGH)) {
+ carp "safe_level: Specified level ($level) not STANDARD, MEDIUM or HIGH - ignoring\n" if $^W;
+ } else {
+ # Don't allow this on perl 5.005 or earlier
+ if ($] < 5.006 && $level != STANDARD) {
+ # Cant do MEDIUM or HIGH checks
+ croak "Currently requires perl 5.006 or newer to do the safe checks";
+ }
+ # Check that we are allowed to change level
+ # Silently ignore if we can not.
+ $LEVEL = $level if _can_do_level($level);
+ }
+ }
+ return $LEVEL;
+ }
+}
+
+=item TopSystemUID
+
+This is the highest UID on the current system that refers to a root
+UID. This is used to make sure that the temporary directory is
+owned by a system UID (C<root>, C<bin>, C<sys> etc) rather than
+simply by root.
+
+This is required since on many unix systems C</tmp> is not owned
+by root.
+
+Default is to assume that any UID less than or equal to 10 is a root
+UID.
+
+ File::Temp->top_system_uid(10);
+ my $topid = File::Temp->top_system_uid;
+
+This value can be adjusted to reduce security checking if required.
+The value is only relevant when C<safe_level> is set to MEDIUM or higher.
+
+=cut
+
+{
+ my $TopSystemUID = 10;
+ $TopSystemUID = 197108 if $^O eq 'interix'; # "Administrator"
+ sub top_system_uid {
+ my $self = shift;
+ if (@_) {
+ my $newuid = shift;
+ croak "top_system_uid: UIDs should be numeric"
+ unless $newuid =~ /^\d+$/s;
+ $TopSystemUID = $newuid;
+ }
+ return $TopSystemUID;
+ }
+}
+
+=item B<$KEEP_ALL>
+
+Controls whether temporary files and directories should be retained
+regardless of any instructions in the program to remove them
+automatically. This is useful for debugging but should not be used in
+production code.
+
+ $File::Temp::KEEP_ALL = 1;
+
+Default is for files to be removed as requested by the caller.
+
+In some cases, files will only be retained if this variable is true
+when the file is created. This means that you can not create a temporary
+file, set this variable and expect the temp file to still be around
+when the program exits.
+
+=item B<$DEBUG>
+
+Controls whether debugging messages should be enabled.
+
+ $File::Temp::DEBUG = 1;
+
+Default is for debugging mode to be disabled.
+
+=back
+
+=head1 WARNING
+
+For maximum security, endeavour always to avoid ever looking at,
+touching, or even imputing the existence of the filename. You do not
+know that that filename is connected to the same file as the handle
+you have, and attempts to check this can only trigger more race
+conditions. It's far more secure to use the filehandle alone and
+dispense with the filename altogether.
+
+If you need to pass the handle to something that expects a filename
+then on a unix system you can use C<"/dev/fd/" . fileno($fh)> for
+arbitrary programs. Perl code that uses the 2-argument version of
+C<< open >> can be passed C<< "+<=&" . fileno($fh) >>. Otherwise you
+will need to pass the filename. You will have to clear the
+close-on-exec bit on that file descriptor before passing it to another
+process.
+
+ use Fcntl qw/F_SETFD F_GETFD/;
+ fcntl($tmpfh, F_SETFD, 0)
+ or die "Can't clear close-on-exec flag on temp fh: $!\n";
+
+=head2 Temporary files and NFS
+
+Some problems are associated with using temporary files that reside
+on NFS file systems and it is recommended that a local filesystem
+is used whenever possible. Some of the security tests will most probably
+fail when the temp file is not local. Additionally, be aware that
+the performance of I/O operations over NFS will not be as good as for
+a local disk.
+
+=head2 Forking
+
+In some cases files created by File::Temp are removed from within an
+END block. Since END blocks are triggered when a child process exits
+(unless C<POSIX::_exit()> is used by the child) File::Temp takes care
+to only remove those temp files created by a particular process ID. This
+means that a child will not attempt to remove temp files created by the
+parent process.
+
+If you are forking many processes in parallel that are all creating
+temporary files, you may need to reset the random number seed using
+srand(EXPR) in each child else all the children will attempt to walk
+through the same set of random file names and may well cause
+themselves to give up if they exceed the number of retry attempts.
+
+=head2 Directory removal
+
+Note that if you have chdir'ed into the temporary directory and it is
+subsequently cleaned up (either in the END block or as part of object
+destruction), then you will get a warning from File::Path::rmtree().
+
+=head2 Taint mode
+
+If you need to run code under taint mode, updating to the latest
+L<File::Spec> is highly recommended.
+
+=head2 BINMODE
+
+The file returned by File::Temp will have been opened in binary mode
+if such a mode is available. If that is not correct, use the C<binmode()>
+function to change the mode of the filehandle.
+
+Note that you can modify the encoding of a file opened by File::Temp
+also by using C<binmode()>.
+
+=head1 HISTORY
+
+Originally began life in May 1999 as an XS interface to the system
+mkstemp() function. In March 2000, the OpenBSD mkstemp() code was
+translated to Perl for total control of the code's
+security checking, to ensure the presence of the function regardless of
+operating system and to help with portability. The module was shipped
+as a standard part of perl from v5.6.1.
+
+=head1 SEE ALSO
+
+L<POSIX/tmpnam>, L<POSIX/tmpfile>, L<File::Spec>, L<File::Path>
+
+See L<IO::File> and L<File::MkTemp>, L<Apache::TempFile> for
+different implementations of temporary file handling.
+
+See L<File::Tempdir> for an alternative object-oriented wrapper for
+the C<tempdir> function.
+
+=head1 AUTHOR
+
+Tim Jenness E<lt>tjenness@cpan.orgE<gt>
+
+Copyright (C) 2007-2010 Tim Jenness.
+Copyright (C) 1999-2007 Tim Jenness and the UK Particle Physics and
+Astronomy Research Council. All Rights Reserved. This program is free
+software; you can redistribute it and/or modify it under the same
+terms as Perl itself.
+
+Original Perl implementation loosely based on the OpenBSD C code for
+mkstemp(). Thanks to Tom Christiansen for suggesting that this module
+should be written and providing ideas for code improvements and
+security enhancements.
+
+=cut
+
+package File::Temp::Dir;
+
+use File::Path qw/ rmtree /;
+use strict;
+use overload '""' => "STRINGIFY",
+ '0+' => \&File::Temp::NUMIFY,
+ fallback => 1;
+
+# private class specifically to support tempdir objects
+# created by File::Temp->newdir
+
+# ostensibly the same method interface as File::Temp but without
+# inheriting all the IO::Seekable methods and other cruft
+
+# Read-only - returns the name of the temp directory
+
+sub dirname {
+ my $self = shift;
+ return $self->{DIRNAME};
+}
+
+sub STRINGIFY {
+ my $self = shift;
+ return $self->dirname;
+}
+
+sub unlink_on_destroy {
+ my $self = shift;
+ if (@_) {
+ $self->{CLEANUP} = shift;
+ }
+ return $self->{CLEANUP};
+}
+
+sub DESTROY {
+ my $self = shift;
+ local($., $@, $!, $^E, $?);
+ if ($self->unlink_on_destroy &&
+ $$ == $self->{LAUNCHPID} && !$File::Temp::KEEP_ALL) {
+ if (-d $self->{REALNAME}) {
+ # Some versions of rmtree will abort if you attempt to remove
+ # the directory you are sitting in. We protect that and turn it
+ # into a warning. We do this because this occurs during object
+ # destruction and so can not be caught by the user.
+ eval { rmtree($self->{REALNAME}, $File::Temp::DEBUG, 0); };
+ warn $@ if ($@ && $^W);
+ }
+ }
+}
+
+
+1;
+
+# vim: ts=2 sts=2 sw=2 et:
diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/cmp.t b/gnu/usr.bin/perl/cpan/File-Temp/t/cmp.t
index db94e44ccc9..d826edec73c 100755
--- a/gnu/usr.bin/perl/cpan/File-Temp/t/cmp.t
+++ b/gnu/usr.bin/perl/cpan/File-Temp/t/cmp.t
@@ -1,11 +1,51 @@
#!perl -w
# Test overloading
-use Test::More tests => 3;
+use Test::More tests => 19;
use strict;
BEGIN {use_ok( "File::Temp" ); }
-my $fh = new File::Temp();
-ok( "$fh" ne "foo", "compare stringified object with string");
-ok( $fh ne "foo", "compare object with string"); \ No newline at end of file
+{
+ my $fh = new File::Temp();
+ isa_ok ($fh, 'File::Temp');
+
+ ok( "$fh" ne "foo", "compare stringified object with string");
+ ok( $fh ne "foo", "compare object with string");
+ ok( $fh eq $fh, "compare eq with self");
+
+ ok( $fh != 0, "compare != 0");
+ ok( $fh == $fh, "compare == with self");
+ ok( $fh != \*STDOUT, "compare != \*STDOUT");
+
+ {
+ my $num = $fh+0;
+ like ($num, qr/^\d+$/, '+0 is a number');
+ }
+ {
+ my $str = "$fh";
+ unlike ($str, qr/^\d+$/, '"" is not a number');
+ }
+}
+
+{
+ my $fh = File::Temp->newdir();
+ isa_ok ($fh, 'File::Temp::Dir');
+
+ ok( "$fh" ne "foo", "compare stringified object with string");
+ ok( $fh ne "foo", "compare object with string");
+ ok( $fh eq $fh, "compare eq with self");
+
+ ok( $fh != 0, "compare != 0");
+ ok( $fh == $fh, "compare == with self");
+ ok( $fh != \*STDOUT, "compare != \*STDOUT");
+
+ {
+ my $num = $fh+0;
+ like ($num, qr/^\d+$/, '+0 is a number');
+ }
+ {
+ my $str = "$fh";
+ unlike ($str, qr/^\d+$/, '"" is not a number');
+ }
+}
diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/mktemp.t b/gnu/usr.bin/perl/cpan/File-Temp/t/mktemp.t
index 2014e30717d..dc49c8561be 100755
--- a/gnu/usr.bin/perl/cpan/File-Temp/t/mktemp.t
+++ b/gnu/usr.bin/perl/cpan/File-Temp/t/mktemp.t
@@ -4,8 +4,7 @@
# Use STANDARD safe level for these tests
use strict;
-use Test;
-BEGIN { plan tests => 9 }
+use Test::More tests => 9;
use File::Spec;
use File::Path;
diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/object.t b/gnu/usr.bin/perl/cpan/File-Temp/t/object.t
index 8cf37858ccb..5732bfd0c20 100755
--- a/gnu/usr.bin/perl/cpan/File-Temp/t/object.t
+++ b/gnu/usr.bin/perl/cpan/File-Temp/t/object.t
@@ -2,7 +2,7 @@
# Test for File::Temp - OO interface
use strict;
-use Test::More tests => 30;
+use Test::More tests => 35;
use File::Spec;
# Will need to check that all files were unlinked correctly
@@ -33,6 +33,12 @@ END { foreach (@dirs) { ok( !(-d $_), "Directory $_ should not be there" ) } }
# removes them
BEGIN {use_ok( "File::Temp" ); }
+# Check for misuse
+eval { File::Temp->tempfile };
+like( $@, qr/can't be called as a method/, "File::Temp->tempfile error" );
+eval { File::Temp->tempdir };
+like( $@, qr/can't be called as a method/, "File::Temp->tempfile error" );
+
# Tempfile
# Open tempfile in some directory, unlink at end
my $fh = new File::Temp( SUFFIX => '.txt' );
@@ -51,6 +57,15 @@ ok( -d $dirname, "Directory $tdir exists");
undef $tdir;
ok( !-d $dirname, "Directory should now be gone");
+# with template
+$tdir = File::Temp->newdir( TEMPLATE => 'helloXXXXX' );
+like( "$tdir", qr/hello/, "Directory with TEMPLATE" );
+undef $tdir;
+
+$tdir = File::Temp->newdir( 'helloXXXXX' );
+like( "$tdir", qr/hello/, "Directory with leading template" );
+undef $tdir;
+
# Quick basic tempfile test
my $qfh = File::Temp->new();
my $qfname = "$qfh";
@@ -102,10 +117,20 @@ $fh = new File::Temp( TEMPLATE => 'helloXXXXXXX',
print "# TEMPFILE: Created $fh\n";
-ok( (-f "$fh"), "File $fh exists? [from template]" );
+# and with a leading template
+$fh = File::Temp->new( 'helloXXXXXXX',
+ DIR => $tempdir,
+ SUFFIX => '.dat',
+ );
+
+print "# TEMPFILE: Created $fh\n";
+
+ok( (-f "$fh"), "File $fh exists? [from leading template]" );
+like( "$fh", qr/hello/, "saw template" );
push(@files, "$fh");
+
# Create a temporary file that should stay around after
# it has been closed
$fh = new File::Temp( TEMPLATE => 'permXXXXXXX', UNLINK => 0);
diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/posix.t b/gnu/usr.bin/perl/cpan/File-Temp/t/posix.t
index b63fb29140b..07784046adf 100755
--- a/gnu/usr.bin/perl/cpan/File-Temp/t/posix.t
+++ b/gnu/usr.bin/perl/cpan/File-Temp/t/posix.t
@@ -2,8 +2,7 @@
# Test for File::Temp - POSIX functions
use strict;
-use Test;
-BEGIN { plan tests => 7}
+use Test::More tests => 7;
use File::Temp qw/ :POSIX unlink0 /;
use FileHandle;
diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/rmtree.t b/gnu/usr.bin/perl/cpan/File-Temp/t/rmtree.t
new file mode 100644
index 00000000000..c5c98d75e45
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/File-Temp/t/rmtree.t
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+
+use Test::More tests => 1;
+
+use File::Spec;
+use File::Path;
+use File::Temp;
+
+rmtree "testing";
+mkdir "testing" or die "mkdir failed: $!";
+chdir "testing";
+mkdir "tmp" or die "mkdir failed: $!";
+
+my $tempdirstr;
+{
+ my $dir = File::Temp->newdir( DIR => "tmp" );
+ $tempdirstr = "$dir";
+
+ mkdir "hide" or die "mkdir failed: $!";
+ chdir "hide";
+}
+
+chdir File::Spec->updir;
+$tempdirstr = File::Spec->rel2abs($tempdirstr);
+ok !-d $tempdirstr or diag dircontent("tmp", $tempdirstr);
+
+# cleanup
+chdir File::Spec->updir;
+rmtree( "testing" );
+
+exit;
+
+sub dircontent {
+ my $dir = shift;
+ my $tempdirstr = shift;
+ my $str = "Contents of $dir (should not contain \"$tempdirstr\"):\n";
+ opendir(my $DH, $dir) or die "opendir failed; $!";
+ my @contents = grep { $_ !~ /^\.+/; } readdir($DH);
+ closedir($DH);
+ for my $ls (@contents) {
+ $str .= " $ls\n";
+ }
+ return $str;
+}
diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/security.t b/gnu/usr.bin/perl/cpan/File-Temp/t/security.t
index 736854f0549..dee3df87815 100755
--- a/gnu/usr.bin/perl/cpan/File-Temp/t/security.t
+++ b/gnu/usr.bin/perl/cpan/File-Temp/t/security.t
@@ -5,8 +5,7 @@
# Test a simple open in the cwd and tmpdir foreach of the
# security levels
-use Test;
-BEGIN { plan tests => 13 }
+use Test::More tests => 12;
use strict;
use File::Spec;
@@ -18,7 +17,6 @@ my @files; # list of files to remove
END { foreach (@files) { ok( !(-e $_) )} }
use File::Temp qw/ tempfile unlink0 /;
-ok(1);
# The high security tests must currently be skipped on some platforms
my $skipplat = ( (
@@ -32,9 +30,9 @@ my $skipperl = ($] < 5.006 ? 1 : 0 );
# Determine whether we need to skip things and why
my $skip = 0;
if ($skipplat) {
- $skip = "Skip Not supported on this platform";
+ $skip = "Not supported on this platform";
} elsif ($skipperl) {
- $skip = "Skip Perl version must be v5.6.0 for these tests";
+ $skip = "Perl version must be v5.6.0 for these tests";
}
@@ -46,26 +44,28 @@ File::Temp->safe_level( File::Temp::STANDARD );
print "# Testing with STANDARD security...\n";
-&test_security(0);
+test_security();
-# Try medium
+SKIP: {
+ skip $skip, 8 if $skip;
-File::Temp->safe_level( File::Temp::MEDIUM )
- unless $skip;
+ # Try medium
-print "# Testing with MEDIUM security...\n";
+ File::Temp->safe_level( File::Temp::MEDIUM );
-# Now we need to start skipping tests
-&test_security($skip);
+ print "# Testing with MEDIUM security...\n";
-# Try HIGH
+ # Now we need to start skipping tests
+ test_security();
-File::Temp->safe_level( File::Temp::HIGH )
- unless $skip;
+ # Try HIGH
-print "# Testing with HIGH security...\n";
+ File::Temp->safe_level( File::Temp::HIGH );
-&test_security($skip);
+ print "# Testing with HIGH security...\n";
+
+ test_security();
+}
exit;
@@ -74,23 +74,6 @@ exit;
sub test_security {
- # Read in the skip flag
- my $skip = shift;
-
- # If we are skipping we need to simply fake the correct number
- # of tests -- we dont use skip since the tempfile() commands will
- # fail with MEDIUM/HIGH security before the skip() command would be run
- if ($skip) {
-
- skip($skip,1);
- skip($skip,1);
-
- # plus we need an end block so the tests come out in the right order
- eval q{ END { skip($skip,1); skip($skip,1) } 1; } || die;
-
- return;
- }
-
# Create the tempfile
my $template = "tmpXXXXX";
my ($fh1, $fname1) = eval { tempfile ( $template,
@@ -99,42 +82,40 @@ sub test_security {
);
};
- if (defined $fname1) {
- print "# fname1 = $fname1\n";
- ok( (-e $fname1) );
- push(@files, $fname1); # store for end block
- } elsif (File::Temp->safe_level() != File::Temp::STANDARD) {
- chomp($@);
- my $skip2 = "Skip: " . File::Spec->tmpdir() . " possibly insecure: $@. " .
- "See INSTALL under 'make test'";
- skip($skip2, 1);
- # plus we need an end block so the tests come out in the right order
- eval q{ END { skip($skip2,1); } 1; } || die;
- } else {
- ok(0);
+ SKIP: {
+ if (defined $fname1) {
+ print "# fname1 = $fname1\n";
+ ok( (-e $fname1) );
+ push(@files, $fname1); # store for end block
+ } elsif (File::Temp->safe_level() != File::Temp::STANDARD) {
+ chomp($@);
+ my $msg = File::Spec->tmpdir() . " possibly insecure: $@";
+ skip $msg, 2; # one here and one in END
+ } else {
+ ok(0);
+ }
}
- # Explicitly
- if ( $< < File::Temp->top_system_uid() ){
- skip("Skip Test inappropriate for root", 1);
- eval q{ END { skip($skip,1); } 1; } || die;
- return;
- }
- my ($fh2, $fname2) = eval { tempfile ($template, UNLINK => 1 ); };
- if (defined $fname2) {
- print "# fname2 = $fname2\n";
- ok( (-e $fname2) );
- push(@files, $fname2); # store for end block
- close($fh2);
- } elsif (File::Temp->safe_level() != File::Temp::STANDARD) {
- chomp($@);
- my $skip2 = "Skip: current directory possibly insecure: $@. " .
- "See INSTALL under 'make test'";
- skip($skip2, 1);
- # plus we need an end block so the tests come out in the right order
- eval q{ END { skip($skip2,1); } 1; } || die;
- } else {
- ok(0);
+ SKIP: {
+ # Explicitly
+ if ( $< < File::Temp->top_system_uid() ){
+ skip("Skip Test inappropriate for root", 2);
+ return;
+ }
+ my ($fh2, $fname2) = eval { tempfile ($template, UNLINK => 1 ); };
+ if (defined $fname2) {
+ print "# fname2 = $fname2\n";
+ ok( (-e $fname2) );
+ push(@files, $fname2); # store for end block
+ close($fh2);
+ } elsif (File::Temp->safe_level() != File::Temp::STANDARD) {
+ chomp($@);
+ my $msg = "current directory possibly insecure: $@";
+ skip $msg, 2; # one here and one in END
+ } else {
+ ok(0);
+ }
}
-
}
+
+# vim: ts=2 sts=2 sw=2 et:
diff --git a/gnu/usr.bin/perl/cpan/File-Temp/t/tempfile.t b/gnu/usr.bin/perl/cpan/File-Temp/t/tempfile.t
index 70216457044..555c53ad697 100755
--- a/gnu/usr.bin/perl/cpan/File-Temp/t/tempfile.t
+++ b/gnu/usr.bin/perl/cpan/File-Temp/t/tempfile.t
@@ -2,9 +2,9 @@
# Test for File::Temp - tempfile function
use strict;
-use Test;
-BEGIN { plan tests => 22}
+use Test::More tests => 28;
use File::Spec;
+use Cwd qw/ cwd /;
# Will need to check that all files were unlinked correctly
# Set up an END block here to do it
@@ -16,17 +16,18 @@ my (@files, @dirs, @still_there);
# These are tidied up
END {
foreach (@still_there) {
- ok( -f $_ );
- ok( unlink( $_ ) );
- ok( !(-f $_) );
+ ($_) = /(^.*)/; # untaint for testing under taint mode
+ ok( -f $_, "File $_ is still present" );
+ ok( unlink( $_ ), "Unlink file" );
+ ok( !(-f $_), "File is no longer present" );
}
}
# Loop over an array hoping that the files dont exist
-END { foreach (@files) { ok( !(-e $_) )} }
+END { foreach (@files) { ok( !(-e $_), "File $_ should not be present" )} }
# And a test for directories
-END { foreach (@dirs) { ok( !(-d $_) )} }
+END { foreach (@dirs) { ok( !(-d $_), "Dir $_ should not be present" )} }
# Need to make sure that the END blocks are setup before
# the ones that File::Temp configures since END blocks are evaluated
@@ -35,7 +36,7 @@ END { foreach (@dirs) { ok( !(-d $_) )} }
use File::Temp qw/ tempfile tempdir/;
# Now we start the tests properly
-ok(1);
+ok(1, "Start test");
# Tempfile
@@ -45,10 +46,10 @@ my ($fh, $tempfile) = tempfile(
SUFFIX => '.txt',
);
-ok( (-f $tempfile) );
+ok( (-f $tempfile), "Tempfile exists" );
# Should still be around after closing
-ok( close( $fh ) );
-ok( (-f $tempfile) );
+ok( close( $fh ), "Tempfile closed" );
+ok( (-f $tempfile), "Tempfile exists" );
# Check again at exit
push(@files, $tempfile);
@@ -63,8 +64,18 @@ my $tempdir = tempdir( $template ,
print "# TEMPDIR: $tempdir\n";
-ok( (-d $tempdir) );
-push(@dirs, $tempdir);
+ok( (-d $tempdir), "Local tempdir exists" );
+push(@dirs, File::Spec->rel2abs($tempdir));
+
+my $tempdir2 = tempdir( TEMPLATE => "customXXXXX",
+ DIR => File::Spec->curdir,
+ CLEANUP => 1,
+ );
+
+print "# TEMPDIR2: $tempdir2\n";
+
+like( $tempdir2, qr/custom/, "tempdir with TEMPLATE" );
+push(@dirs, File::Spec->rel2abs($tempdir));
# Create file in the temp dir
($fh, $tempfile) = tempfile(
@@ -75,8 +86,8 @@ push(@dirs, $tempdir);
print "# TEMPFILE: Created $tempfile\n";
-ok( (-f $tempfile));
-push(@files, $tempfile);
+ok( (-f $tempfile), "Local temp file exists with .dat extension");
+push(@files, File::Spec->rel2abs($tempfile));
# Test tempfile
# ..and again
@@ -85,8 +96,8 @@ push(@files, $tempfile);
);
-ok( (-f $tempfile ));
-push(@files, $tempfile);
+ok( (-f $tempfile ), "Local tempfile in tempdir exists");
+push(@files, File::Spec->rel2abs($tempfile));
# Test tempfile
# ..and another with changed permissions (read-only)
@@ -95,8 +106,8 @@ push(@files, $tempfile);
);
chmod 0444, $tempfile;
-ok( (-f $tempfile ));
-push(@files, $tempfile);
+ok( (-f $tempfile ), "Local tempfile in tempdir exists read-only");
+push(@files, File::Spec->rel2abs($tempfile));
print "# TEMPFILE: Created $tempfile\n";
@@ -110,17 +121,30 @@ print "# TEMPFILE: Created $tempfile\n";
print "# TEMPFILE: Created $tempfile\n";
-ok( (-f $tempfile) );
-push(@files, $tempfile);
+ok( (-f $tempfile), "Local tempfile in tempdir with .dat extension exists" );
+push(@files, File::Spec->rel2abs($tempfile));
+
+# and another (with TEMPLATE)
+
+($fh, $tempfile) = tempfile( TEMPLATE => 'goodbyeXXXXXXX',
+ DIR => $tempdir,
+ UNLINK => 1,
+ SUFFIX => '.dat',
+ );
+
+print "# TEMPFILE: Created $tempfile\n";
+
+ok( (-f $tempfile), "Local tempfile in tempdir with TEMPLATE" );
+push(@files, File::Spec->rel2abs($tempfile));
# Create a temporary file that should stay around after
# it has been closed
($fh, $tempfile) = tempfile( 'permXXXXXXX', UNLINK => 0 );
print "# TEMPFILE: Created $tempfile\n";
-ok( -f $tempfile );
-ok( close( $fh ) );
-push( @still_there, $tempfile); # check at END
+ok( -f $tempfile, "Long-lived temp file" );
+ok( close( $fh ), "Close long-lived temp file" );
+push( @still_there, File::Spec->rel2abs($tempfile) ); # check at END
# Would like to create a temp file and just retrieve the handle
# but the test is problematic since:
@@ -135,16 +159,25 @@ $fh = eval { tempfile( 'ftmpXXXXX', DIR => File::Spec->tmpdir ) };
if ($fh) {
# print something to it to make sure something is there
- ok( print $fh "Test\n" );
+ ok( print($fh "Test\n"), "Write to temp file" );
# Close it - can not check it is gone since we dont know the name
- ok( close($fh) );
+ ok( close($fh), "Close temp file" );
} else {
skip "Skip Failed probably due to NFS", 1;
skip "Skip Failed probably due to NFS", 1;
}
+# Create temp directory and chdir to it; it should still be removed on exit.
+$tempdir = tempdir(CLEANUP => 1);
+
+print "# TEMPDIR: $tempdir\n";
+
+ok( (-d $tempdir), "Temp directory in temp dir" );
+chdir $tempdir or die $!;
+push(@dirs, File::Spec->rel2abs($tempdir));
+
# Now END block will execute to test the removal of directories
-print "# End of tests. Execute END blocks\n";
+print "# End of tests. Execute END blocks in directory ". cwd() ."\n";
diff --git a/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.pm b/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.pm
index a502575a615..46a7b32dfdd 100644
--- a/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.pm
+++ b/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.pm
@@ -18,7 +18,7 @@ use vars qw($VERSION @ISA @EXPORT) ;
@ISA = qw(Exporter DynaLoader);
@EXPORT = qw( filter_add filter_del filter_read filter_read_exact) ;
-$VERSION = "1.40" ;
+$VERSION = "1.45" ;
sub filter_read_exact($)
{
diff --git a/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.xs b/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.xs
index 69f677d719a..a6a82627bec 100644
--- a/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.xs
+++ b/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.xs
@@ -3,7 +3,7 @@
*
* Author : Paul Marquess
* Date : 24th April 2011
- * Version : 1.40
+ * Version : 1.43
*
* Copyright (c) 1995-2011 Paul Marquess. All rights reserved.
* This program is free software; you can redistribute it and/or
diff --git a/gnu/usr.bin/perl/cpan/Filter-Util-Call/t/call.t b/gnu/usr.bin/perl/cpan/Filter-Util-Call/t/call.t
index 5fa7e38b53b..b01a14328ac 100755
--- a/gnu/usr.bin/perl/cpan/Filter-Util-Call/t/call.t
+++ b/gnu/usr.bin/perl/cpan/Filter-Util-Call/t/call.t
@@ -786,7 +786,7 @@ EOM
{
# no without use
-# see Message-ID: <20021106212427.A15377@ttul.org>
+# see Message-ID: <2002110621.427.A15377@ttul.org>
####################
writeFile("${module6}.pm", <<EOM);
diff --git a/gnu/usr.bin/perl/cpan/Getopt-Long/CHANGES b/gnu/usr.bin/perl/cpan/Getopt-Long/CHANGES
index 679da2abae6..ec8a0247dea 100644
--- a/gnu/usr.bin/perl/cpan/Getopt-Long/CHANGES
+++ b/gnu/usr.bin/perl/cpan/Getopt-Long/CHANGES
@@ -1,3 +1,30 @@
+Changes in version 2.39
+-----------------------
+
+* Fix unneccessary warnings when @ARGV contains undefs (yes, it
+ happens).
+
+* Passing an object as first argument to the callback handler for <>
+ turned out to be a problem in cases where the argument was passed to
+ other modules, e.g., Archive::Tar. Revert the change since the added
+ functionality of the object is not really relevant for the <>
+ callback function.
+
+* Silence the deprecation warnings from newgetopt.pl for the purpose
+ of testing. These tests will be removed along with newgetopt.pl in
+ the next major release of perl.
+ http://perl5.git.perl.org/perl.git/commit/b814bbfa9a2087bc
+
+* Eliminiate spurious warning.
+
+* Retain taintedness of command line option values.
+
+* Document that you need to check GetOptions return value :).
+
+* Several other minor documentation fixes and enhancements.
+
+* Fix bug #67577 Parsing of type 'o' not correct for multiple values
+
Changes in version 2.38
-----------------------
@@ -10,6 +37,9 @@ Changes in version 2.38
* Bugfix for Ticket 24941: Autoabbrev with + incorrect.
+* Bugfix: Reject syntax 'foo|!' for option spec. This was illegal
+ anyway.
+
Changes in version 2.37
-----------------------
@@ -71,7 +101,7 @@ Changes in version 2.35
prefix_pattern has now been complemented by a new configuration
option 'long_prefix_pattern' that allows the user to specify what
- prefix patterns should have long option style sematics applied.
+ prefix patterns should have long option style semantics applied.
This will enable people to do things like
foo.pl /option=value
@@ -259,7 +289,7 @@ Changes in version 2.27
generated. E.g., GetOptions('foo', 'foo').
Thanks to Wolfgang Laun.
-* Lots of internal restructoring to make room for extensions.
+* Lots of internal restructuring to make room for extensions.
* Redesigned the regression tests.
diff --git a/gnu/usr.bin/perl/cpan/Getopt-Long/t/gol-oo.t b/gnu/usr.bin/perl/cpan/Getopt-Long/t/gol-oo.t
index df49cb63b28..cf1d981b9c5 100755
--- a/gnu/usr.bin/perl/cpan/Getopt-Long/t/gol-oo.t
+++ b/gnu/usr.bin/perl/cpan/Getopt-Long/t/gol-oo.t
@@ -14,7 +14,7 @@ my $want_version="2.24";
die("Getopt::Long version $want_version required--this is only version ".
$Getopt::Long::VERSION)
unless $Getopt::Long::VERSION ge $want_version;
-print "1..9\n";
+print "1..14\n";
@ARGV = qw(-Foo -baR --foo bar);
my $p = new Getopt::Long::Parser (config => ["no_ignore_case"]);
@@ -29,3 +29,11 @@ print ((@ARGV == 1) ? "" : "not ", "ok 6\n");
print (($ARGV[0] eq "bar") ? "" : "not ", "ok 7\n");
print (!(defined $opt_baR) ? "" : "not ", "ok 8\n");
print (!(defined $opt_bar) ? "" : "not ", "ok 9\n");
+
+my @args = (qw[-test 1]);
+my $o = Getopt::Long::Parser->new;
+print "ok 10\n" if $o->getoptionsfromarray(\@args, "test=i");
+print ((defined $opt_test) ? "" : "not ", "ok 11\n");
+print (($opt_test == 1) ? "" : "not ", "ok 12\n");
+print ((@ARGV == 1) ? "" : "not ", "ok 13\n");
+print ((@args == 0) ? "" : "not ", "ok 14\n");
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm b/gnu/usr.bin/perl/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
index 46dce742e38..333aab56f7d 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
@@ -3,14 +3,14 @@ package HTTP::Tiny;
use strict;
use warnings;
# ABSTRACT: A small, simple, correct HTTP/1.1 client
-our $VERSION = '0.017'; # VERSION
+our $VERSION = '0.025'; # VERSION
use Carp ();
my @attributes;
BEGIN {
- @attributes = qw(agent default_headers max_redirect max_size proxy timeout);
+ @attributes = qw(agent default_headers local_address max_redirect max_size proxy timeout SSL_options verify_SSL);
no strict 'refs';
for my $accessor ( @attributes ) {
*{$accessor} = sub {
@@ -21,12 +21,20 @@ BEGIN {
sub new {
my($class, %args) = @_;
- (my $agent = $class) =~ s{::}{-}g;
+
+ (my $default_agent = $class) =~ s{::}{-}g;
+ $default_agent .= "/" . ($class->VERSION || 0);
+
my $self = {
- agent => $agent . "/" . ($class->VERSION || 0),
+ agent => $default_agent,
max_redirect => 5,
timeout => 60,
+ verify_SSL => $args{verify_SSL} || $args{verify_ssl} || 0, # no verification by default
};
+
+ $args{agent} .= $default_agent
+ if defined $args{agent} && $args{agent} =~ / $/;
+
for my $key ( @attributes ) {
$self->{$key} = $args{$key} if exists $args{$key}
}
@@ -129,6 +137,7 @@ sub request {
if (my $e = "$@") {
$response = {
+ url => $url,
success => q{},
status => 599,
reason => 'Internal Exception',
@@ -190,7 +199,12 @@ sub _request {
headers => {},
};
- my $handle = HTTP::Tiny::Handle->new(timeout => $self->{timeout});
+ my $handle = HTTP::Tiny::Handle->new(
+ timeout => $self->{timeout},
+ SSL_options => $self->{SSL_options},
+ verify_SSL => $self->{verify_SSL},
+ local_address => $self->{local_address},
+ );
if ($self->{proxy}) {
$request->{uri} = "$scheme://$request->{host_port}$path_query";
@@ -224,6 +238,7 @@ sub _request {
$handle->close;
$response->{success} = substr($response->{status},0,1) eq '2';
+ $response->{url} = $url;
return $response;
}
@@ -402,33 +417,30 @@ sub new {
timeout => 60,
max_line_size => 16384,
max_header_lines => 64,
+ verify_SSL => 0,
+ SSL_options => {},
%args
}, $class;
}
-my $ssl_verify_args = {
- check_cn => "when_only",
- wildcards_in_alt => "anywhere",
- wildcards_in_cn => "anywhere"
-};
-
sub connect {
@_ == 4 || die(q/Usage: $handle->connect(scheme, host, port)/ . "\n");
my ($self, $scheme, $host, $port) = @_;
if ( $scheme eq 'https' ) {
- eval "require IO::Socket::SSL"
- unless exists $INC{'IO/Socket/SSL.pm'};
- die(qq/IO::Socket::SSL must be installed for https support\n/)
- unless $INC{'IO/Socket/SSL.pm'};
+ die(qq/IO::Socket::SSL 1.56 must be installed for https support\n/)
+ unless eval {require IO::Socket::SSL; IO::Socket::SSL->VERSION(1.56)};
+ die(qq/Net::SSLeay 1.49 must be installed for https support\n/)
+ unless eval {require Net::SSLeay; Net::SSLeay->VERSION(1.49)};
}
elsif ( $scheme ne 'http' ) {
die(qq/Unsupported URL scheme '$scheme'\n/);
}
-
$self->{fh} = 'IO::Socket::INET'->new(
PeerHost => $host,
PeerPort => $port,
+ $self->{local_address} ?
+ ( LocalAddr => $self->{local_address} ) : (),
Proto => 'tcp',
Type => SOCK_STREAM,
Timeout => $self->{timeout}
@@ -438,11 +450,20 @@ sub connect {
or die(qq/Could not binmode() socket: '$!'\n/);
if ( $scheme eq 'https') {
- IO::Socket::SSL->start_SSL($self->{fh});
- ref($self->{fh}) eq 'IO::Socket::SSL'
- or die(qq/SSL connection failed for $host\n/);
- $self->{fh}->verify_hostname( $host, $ssl_verify_args )
- or die(qq/SSL certificate not valid for $host\n/);
+ my $ssl_args = $self->_ssl_args($host);
+ IO::Socket::SSL->start_SSL(
+ $self->{fh},
+ %$ssl_args,
+ SSL_create_ctx_callback => sub {
+ my $ctx = shift;
+ Net::SSLeay::CTX_set_mode($ctx, Net::SSLeay::MODE_AUTO_RETRY());
+ },
+ );
+
+ unless ( ref($self->{fh}) eq 'IO::Socket::SSL' ) {
+ my $ssl_err = IO::Socket::SSL->errstr;
+ die(qq/SSL connection failed for $host: $ssl_err\n/);
+ }
}
$self->{host} = $host;
@@ -485,7 +506,14 @@ sub write {
die(qq/Socket closed by remote server: $!\n/);
}
elsif ($! != EINTR) {
- die(qq/Could not write to socket: '$!'\n/);
+ if ($self->{fh}->can('errstr')){
+ my $err = $self->{fh}->errstr();
+ die (qq/Could not write to SSL socket: '$err'\n /);
+ }
+ else {
+ die(qq/Could not write to socket: '$!'\n/);
+ }
+
}
}
return $off;
@@ -513,7 +541,13 @@ sub read {
$len -= $r;
}
elsif ($! != EINTR) {
- die(qq/Could not read from socket: '$!'\n/);
+ if ($self->{fh}->can('errstr')){
+ my $err = $self->{fh}->errstr();
+ die (qq/Could not read from SSL socket: '$err'\n /);
+ }
+ else {
+ die(qq/Could not read from socket: '$!'\n/);
+ }
}
}
if ($len && !$allow_partial) {
@@ -540,7 +574,13 @@ sub readline {
last unless $r;
}
elsif ($! != EINTR) {
- die(qq/Could not read from socket: '$!'\n/);
+ if ($self->{fh}->can('errstr')){
+ my $err = $self->{fh}->errstr();
+ die (qq/Could not read from SSL socket: '$err'\n /);
+ }
+ else {
+ die(qq/Could not read from socket: '$!'\n/);
+ }
}
}
die(qq/Unexpected end of stream while looking for line\n/);
@@ -827,11 +867,60 @@ sub can_write {
return $self->_do_timeout('write', @_)
}
-1;
+# Try to find a CA bundle to validate the SSL cert,
+# prefer Mozilla::CA or fallback to a system file
+sub _find_CA_file {
+ my $self = shift();
+
+ return $self->{SSL_options}->{SSL_ca_file}
+ if $self->{SSL_options}->{SSL_ca_file} and -e $self->{SSL_options}->{SSL_ca_file};
+
+ return Mozilla::CA::SSL_ca_file()
+ if eval { require Mozilla::CA };
+
+ foreach my $ca_bundle (qw{
+ /etc/ssl/certs/ca-certificates.crt
+ /etc/pki/tls/certs/ca-bundle.crt
+ /etc/ssl/ca-bundle.pem
+ }
+ ) {
+ return $ca_bundle if -e $ca_bundle;
+ }
+
+ die qq/Couldn't find a CA bundle with which to verify the SSL certificate.\n/
+ . qq/Try installing Mozilla::CA from CPAN\n/;
+}
+
+sub _ssl_args {
+ my ($self, $host) = @_;
+ my %ssl_args = (
+ SSL_hostname => $host, # SNI
+ );
+
+ if ($self->{verify_SSL}) {
+ $ssl_args{SSL_verifycn_scheme} = 'http'; # enable CN validation
+ $ssl_args{SSL_verifycn_name} = $host; # set validation hostname
+ $ssl_args{SSL_verify_mode} = 0x01; # enable cert validation
+ $ssl_args{SSL_ca_file} = $self->_find_CA_file;
+ }
+ else {
+ $ssl_args{SSL_verifycn_scheme} = 'none'; # disable CN validation
+ $ssl_args{SSL_verify_mode} = 0x00; # disable cert validation
+ }
+
+ # user options override settings from verify_SSL
+ for my $k ( keys %{$self->{SSL_options}} ) {
+ $ssl_args{$k} = $self->{SSL_options}{$k} if $k =~ m/^SSL_/;
+ }
+ return \%ssl_args;
+}
+
+1;
__END__
+
=pod
=head1 NAME
@@ -840,7 +929,7 @@ HTTP::Tiny - A small, simple, correct HTTP/1.1 client
=head1 VERSION
-version 0.017
+version 0.025
=head1 SYNOPSIS
@@ -883,7 +972,7 @@ This constructor returns a new HTTP::Tiny object. Valid attributes include:
C<agent>
-A user-agent string (defaults to 'HTTP::Tiny/$VERSION')
+A user-agent string (defaults to 'HTTP-Tiny/$VERSION'). If C<agent> ends in a space character, the default user-agent string is appended.
=item *
@@ -893,6 +982,12 @@ A hashref of default headers to apply to requests
=item *
+C<local_address>
+
+The local IP address to bind to
+
+=item *
+
C<max_redirect>
Maximum number of redirects allowed (defaults to 5)
@@ -916,12 +1011,27 @@ C<timeout>
Request timeout in seconds (default is 60)
+=item *
+
+C<verify_SSL>
+
+A boolean that indicates whether to validate the SSL certificate of an C<https>
+connection (default is false)
+
+=item *
+
+C<SSL_options>
+
+A hashref of C<SSL_*> options to pass through to L<IO::Socket::SSL>
+
=back
Exceptions from C<max_size>, C<timeout> or other errors will result in a
pseudo-HTTP status code of 599 and a reason of "Internal Exception". The
content field in the response will contain the text of the exception.
+See L</SSL SUPPORT> for more on the C<verify_SSL> and C<SSL_options> attributes.
+
=head2 get|head|put|post|delete
$response = $http->get($url);
@@ -987,7 +1097,7 @@ Valid options are:
=item *
-headers
+C<headers>
A hashref containing headers to include with the request. If the value for
a header is an array reference, the header will be output multiple times with
@@ -995,21 +1105,21 @@ each value in the array. These headers over-write any default headers.
=item *
-content
+C<content>
A scalar to include as the body of the request OR a code reference
-that will be called iteratively to produce the body of the response
+that will be called iteratively to produce the body of the request
=item *
-trailer_callback
+C<trailer_callback>
A code reference that will be called if it exists to provide a hashref
of trailing headers (only used with chunked transfer-encoding)
=item *
-data_callback
+C<data_callback>
A code reference that will be called for each chunks of the response
body received.
@@ -1034,25 +1144,33 @@ will have the following keys:
=item *
-success
+C<success>
Boolean indicating whether the operation returned a 2XX status code
=item *
-status
+C<url>
+
+URL that provided the response. This is the URL of the request unless
+there were redirections, in which case it is the last URL queried
+in a redirection chain
+
+=item *
+
+C<status>
The HTTP status code of the response
=item *
-reason
+C<reason>
The response phrase returned by the server
=item *
-content
+C<content>
The body of the response. If the response does not have any content
or if a data callback is provided to consume the response body,
@@ -1060,7 +1178,7 @@ this will be the empty string
=item *
-headers
+C<headers>
A hashref of header fields. All header field names will be normalized
to be lower case. If a header is repeated, the value will be an arrayref;
@@ -1085,10 +1203,96 @@ and value.
=for Pod::Coverage agent
default_headers
+local_address
max_redirect
max_size
proxy
timeout
+verify_SSL
+SSL_options
+
+=head1 SSL SUPPORT
+
+Direct C<https> connections are supported only if L<IO::Socket::SSL> 1.56 or
+greater and L<Net::SSLeay> 1.49 or greater are installed. An exception will be
+thrown if a new enough versions of these modules not installed or if the SSL
+encryption fails. There is no support for C<https> connections via proxy (i.e.
+RFC 2817).
+
+SSL provides two distinct capabilities:
+
+=over 4
+
+=item *
+
+Encrypted communication channel
+
+=item *
+
+Verification of server identity
+
+=back
+
+B<By default, HTTP::Tiny does not verify server identity>.
+
+Server identity verification is controversial and potentially tricky because it
+depends on a (usually paid) third-party Certificate Authority (CA) trust model
+to validate a certificate as legitimate. This discriminates against servers
+with self-signed certificates or certificates signed by free, community-driven
+CA's such as L<CAcert.org|http://cacert.org>.
+
+By default, HTTP::Tiny does not make any assumptions about your trust model,
+threat level or risk tolerance. It just aims to give you an encrypted channel
+when you need one.
+
+Setting the C<verify_SSL> attribute to a true value will make HTTP::Tiny verify
+that an SSL connection has a valid SSL certificate corresponding to the host
+name of the connection and that the SSL certificate has been verified by a CA.
+Assuming you trust the CA, this will protect against a L<man-in-the-middle
+attack|http://en.wikipedia.org/wiki/Man-in-the-middle_attack>. If you are
+concerned about security, you should enable this option.
+
+Certificate verification requires a file containing trusted CA certificates.
+If the L<Mozilla::CA> module is installed, HTTP::Tiny will use the CA file
+included with it as a source of trusted CA's. (This means you trust Mozilla,
+the author of Mozilla::CA, the CPAN mirror where you got Mozilla::CA, the
+toolchain used to install it, and your operating system security, right?)
+
+If that module is not available, then HTTP::Tiny will search several
+system-specific default locations for a CA certificate file:
+
+=over 4
+
+=item *
+
+/etc/ssl/certs/ca-certificates.crt
+
+=item *
+
+/etc/pki/tls/certs/ca-bundle.crt
+
+=item *
+
+/etc/ssl/ca-bundle.pem
+
+=back
+
+An exception will be raised if C<verify_SSL> is true and no CA certificate file
+is available.
+
+If you desire complete control over SSL connections, the C<SSL_options> attribute
+lets you provide a hash reference that will be passed through to
+C<IO::Socket::SSL::start_SSL()>, overriding any options set by HTTP::Tiny. For
+example, to provide your own trusted CA file:
+
+ SSL_options => {
+ SSL_ca_file => $file_path,
+ }
+
+The C<SSL_options> attribute could also be used for such things as providing a
+client certificate for authentication to a server or controlling the choice of
+cipher used for the SSL connection. See L<IO::Socket::SSL> documentation for
+details.
=head1 LIMITATIONS
@@ -1128,13 +1332,6 @@ always be set to C<close>.
=item *
-Direct C<https> connections are supported only if L<IO::Socket::SSL> is
-installed. There is no support for C<https> connections via proxy.
-Any SSL certificate that matches the host is accepted -- SSL certificates
-are not verified against certificate authorities.
-
-=item *
-
Cookies are not directly supported. Users that set a C<Cookie> header
should also set C<max_redirect> to zero to ensure cookies are not
inappropriately re-transmitted.
@@ -1158,6 +1355,10 @@ Only 'chunked' C<Transfer-Encoding> is supported.
There is no support for a Request-URI of '*' for the 'OPTIONS' request.
+=item *
+
+There is no support for IPv6 of any kind.
+
=back
=head1 SEE ALSO
@@ -1168,16 +1369,28 @@ There is no support for a Request-URI of '*' for the 'OPTIONS' request.
L<LWP::UserAgent>
+=item *
+
+L<IO::Socket::SSL>
+
+=item *
+
+L<Mozilla::CA>
+
+=item *
+
+L<Net::SSLeay>
+
=back
-=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
=head1 SUPPORT
=head2 Bugs / Feature Requests
Please report any bugs or feature requests through the issue tracker
-at L<http://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-Tiny>.
+at L<https://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-Tiny>.
You will be notified automatically of any progress on your issue.
=head2 Source Code
@@ -1185,9 +1398,9 @@ You will be notified automatically of any progress on your issue.
This is open source software. The code repository is available for
public review and contribution under the terms of the license.
-L<https://github.com/dagolden/p5-http-tiny>
+L<https://github.com/dagolden/http-tiny>
- git clone https://github.com/dagolden/p5-http-tiny.git
+ git clone git://github.com/dagolden/http-tiny.git
=head1 AUTHORS
@@ -1201,6 +1414,10 @@ Christian Hansen <chansen@cpan.org>
David Golden <dagolden@cpan.org>
+=item *
+
+Mike Doherty <doherty@cpan.org>
+
=back
=head1 COPYRIGHT AND LICENSE
@@ -1211,4 +1428,3 @@ This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
-
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/001_api.t b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/001_api.t
index 8b3168313f4..4311c67a55f 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/001_api.t
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/001_api.t
@@ -6,7 +6,9 @@ use warnings;
use Test::More tests => 2;
use HTTP::Tiny;
-my @accessors = qw(agent default_headers max_redirect max_size proxy timeout);
+my @accessors = qw(
+ agent default_headers local_address max_redirect max_size proxy timeout SSL_options verify_SSL
+);
my @methods = qw(
new get head put post delete post_form request mirror www_form_urlencode
);
@@ -25,4 +27,3 @@ my @extra =
ok( ! scalar @extra, "No unexpected subroutines defined" )
or diag "Found: @extra";
-
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/003_agent.t b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/003_agent.t
new file mode 100644
index 00000000000..274917d2dab
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/003_agent.t
@@ -0,0 +1,33 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 3;
+use HTTP::Tiny;
+
+# a couple tests to ensure that we get the default agent expected, the coorect
+# agent when specified, and the correct agent when specifified with a space at
+# the end of the string (as LWP::UserAgent does)
+
+
+my $default = 'HTTP-Tiny/' . (HTTP::Tiny->VERSION || 0);
+
+{
+ my $ua = HTTP::Tiny->new();
+ is $ua->agent, $default, 'default agent string is as expected';
+}
+
+{
+ my $ua = HTTP::Tiny->new(agent => 'something else');
+ is $ua->agent, 'something else', 'agent string is as expected';
+}
+
+{
+ my $ua = HTTP::Tiny->new(agent => 'something else ');
+ is
+ $ua->agent,
+ "something else $default",
+ 'agent string is as properly appended to',
+ ;
+}
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/100_get.t b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/100_get.t
index 35251e0f12b..ff645a3d9a5 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/100_get.t
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/100_get.t
@@ -75,6 +75,8 @@ for my $file ( dir_list("t/cases", qr/^get/ ) ) {
ok( ! $response->{success}, "$label success flag false" );
}
+ is ( $response->{url}, $url, "$label response URL" );
+
if (defined $case->{expected_headers}) {
my %expected = hashify( $case->{expected_headers} );
is_deeply($response->{headers}, \%expected, "$label expected headers");
@@ -93,6 +95,8 @@ for my $file ( dir_list("t/cases", qr/^get/ ) ) {
}
;
+
+
if ( $options{data_callback} ) {
$check_expected->( $main::data, "$label cb got content" );
is ( $response->{content}, '', "$label resp content empty" );
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/130_redirect.t b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/130_redirect.t
index 68d92557d74..04e7a266c5c 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/130_redirect.t
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/130_redirect.t
@@ -65,6 +65,11 @@ for my $file ( dir_list("t/cases", qr/^redirect/ ) ) {
? join("$CRLF", @{$case->{expected}}) : '';
is ( $response->{content}, $exp_content, "$label content" );
+
+ if ( $case->{expected_url} ) {
+ is ( $response->{url}, $case->{expected_url}[0], "$label response URL" );
+ }
+
}
done_testing;
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-01.txt b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-01.txt
index 25e2ff26281..c6ed575482e 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-01.txt
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-01.txt
@@ -2,6 +2,8 @@ url
http://example.com/index.html
expected
abcdefghijklmnopqrstuvwxyz1234567890abcdef
+expected_url
+ http://example.com/index2.html
----------
GET /index.html HTTP/1.1
Host: example.com
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-02.txt b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-02.txt
index 5035879ff4d..b2a296796ef 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-02.txt
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-02.txt
@@ -4,6 +4,8 @@ url
http://example.com/index.html
expected
<a href="http://example.com/index2.html">redirect</a>
+expected_url
+ http://example.com/index.html
----------
GET /index.html HTTP/1.1
Host: example.com
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-03.txt b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-03.txt
index 0a7df722a71..8fc84beeb45 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-03.txt
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-03.txt
@@ -4,6 +4,8 @@ url
http://example.com/index.html
expected
<a href="http://example.com/index3.html">redirect</a>
+expected_url
+ http://example.com/index2.html
----------
GET /index.html HTTP/1.1
Host: example.com
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-04.txt b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-04.txt
index c07412bdc3d..3c19ada3529 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-04.txt
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-04.txt
@@ -4,6 +4,8 @@ url
http://example.com/index.html
expected
abcdefghijklmnopqrstuvwxyz1234567890abcdef
+expected_url
+ http://example.com/index3.html
----------
GET /index.html HTTP/1.1
Host: example.com
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-05.txt b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-05.txt
index 0691a807589..5ffce1838fa 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-05.txt
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-05.txt
@@ -2,6 +2,8 @@ url
http://example.com/index.html
expected
abcdefghijklmnopqrstuvwxyz1234567890abcdef
+expected_url
+ http://example.com/index3.html
----------
GET /index.html HTTP/1.1
Host: example.com
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-06.txt b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-06.txt
index b5a6a49762a..27e3e4ad728 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-06.txt
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-06.txt
@@ -2,6 +2,8 @@ url
http://example.com/index.html
expected
abcdefghijklmnopqrstuvwxyz1234567890abcdef
+expected_url
+ http://example.com/index2.html
----------
GET /index.html HTTP/1.1
Host: example.com
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-07.txt b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-07.txt
index 3320c6ce3c5..11b448090cc 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-07.txt
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-07.txt
@@ -2,6 +2,8 @@ url
http://example.com/index.html
expected
abcdefghijklmnopqrstuvwxyz1234567890abcdef
+expected_url
+ http://example.com/index2.html
----------
GET /index.html HTTP/1.1
Host: example.com
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-08.txt b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-08.txt
index 3f983b84025..67a59da5023 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-08.txt
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-08.txt
@@ -2,6 +2,8 @@ url
http://example.com/index.html
expected
<a href="http://example.com/index2.html">redirect</a>
+expected_url
+ http://example.com/index.html
----------
GET /index.html HTTP/1.1
Host: example.com
diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-09.txt b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-09.txt
index 02a75aa63b9..afb0ec2f06c 100644
--- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-09.txt
+++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/t/cases/redirect-09.txt
@@ -4,6 +4,8 @@ method
POST
expected
abcdefghijklmnopqrstuvwxyz1234567890abcdef
+expected_url
+ http://example.com/index2.html
----------
POST /index.html HTTP/1.1
Host: example.com
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/Changes b/gnu/usr.bin/perl/cpan/IO-Compress/Changes
index 0862dd6b3bc..0b823273680 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/Changes
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/Changes
@@ -1,11 +1,68 @@
CHANGES
-------
+ 2.060 7 January 2013
+
+ * Updated POD
+ RT# 82138: Example code not clear - gunzip() takes filenames!
+
+ * IO::Compress::Base
+ Remove the flush call when opening a filehandle.
+
+ 2.059 10 December 2012
+
+ * IO::Compress::Base
+ Added "Encode" option.
+ Fixes the encoding half of RT# 42656. Decode is still TODO
+
+ 2.058 12 November 2012
+
+ * RT# 81119: Latest IO::Compress 2.057 fails tests on 5.8.x
+
+ 2.057 10 November 2012
+
+ * IO::Compress::Zip
+ Allow member name & Zip Comment to be "0"
+
+ * IO::Compress::Base::Common
+ Remove "-r" test - the file open will catch this.
+ RT# 80855: IO::Compress::Base::Common returns that it cannot read readable files in NFS
+
+ * RT# 79820: Install to 'site' instead of 'perl' when perl version is 5.11+
+
+ * General Performance improvements.
+
+ 2.055 5 August 2012
+
+ * FAQ
+ Added a few paragraphs on how to deal with pbzip2 files
+ [RT# #77743: Interoperability problems with pbzip2]
+
+ * Compress::Zip
+ speed up compress, uncompress, memGzip & memGunzip.
+ [RT# #77350: Compress::Zlib::uncompress() is slowed down needlessly
+ by parameter validation
+
+ 2.052 29 April 2012
+
+ * IO::Compress::Zip
+ Force a ZIP64 archive when it contains >= 0xFFFF entries.
+
+ * Typos in POD
+ [RT# #76130: Gunzip Pod typo in OO section: $$output instead of $$input
+
+ 2.049 18 February 2012
+
+ * IO::Compress::Zip
+ Error in t/cz-03zlib-v1.t that caused warnings with 5.15
+ [RT# 110736: warnings from cpan/IO-Compress/t/cz-03zlib-v1.t]
+
2.048 29 January 2012
* Set minimum zlib version to 1.2.0
- * IO::Compress test suite fails with Compress::Raw::Zlib 2.047 and zlib < 1.2.4
+ * IO::Compress test suite fails with Compress::Raw::Zlib 2.047
+ and zlib < 1.2.4
[RT# 74503]
2.047 28 January 2012
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/Makefile.PL b/gnu/usr.bin/perl/cpan/IO-Compress/Makefile.PL
index ae85bbb9f8f..a0e8ce3a7fe 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/Makefile.PL
@@ -3,7 +3,7 @@
use strict ;
require 5.006 ;
-$::VERSION = '2.048' ;
+$::VERSION = '2.060' ;
use private::MakeUtil;
use ExtUtils::MakeMaker 5.16 ;
@@ -39,7 +39,7 @@ WriteMakefile(
: ()
),
- INSTALLDIRS => ($] >= 5.009 ? 'perl' : 'site'),
+ INSTALLDIRS => ($] >= 5.009 && $] < 5.011 ? 'perl' : 'site'),
EXE_FILES => ['bin/zipdetails'],
@@ -49,6 +49,12 @@ WriteMakefile(
: ()
),
+ META_MERGE => {
+ no_index => {
+ directory => [ 't', 'private' ],
+ },
+ },
+
((ExtUtils::MakeMaker->VERSION() gt '6.30') ?
('LICENSE' => 'perl') : ()),
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/README b/gnu/usr.bin/perl/cpan/IO-Compress/README
index ac90f58def3..1af8b7148d3 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/README
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/README
@@ -1,11 +1,11 @@
- IO-Compress
+ IO-Compress
- Version 2.048
+ Version 2.060
- 29th January 2012
+ 7th January 2013
- Copyright (c) 1995-2012 Paul Marquess. All rights reserved.
+ Copyright (c) 1995-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it
and/or modify it under the same terms as Perl itself.
@@ -32,7 +32,7 @@ PREREQUISITES
Before you can build IO-Compress you need to have the following
installed on your system:
- * Perl 5.004 or better.
+ * Perl 5.006 or better.
* Compress::Raw::Zlib
* Compress::Raw::Bzip2
@@ -89,7 +89,7 @@ To help me help you, I need all of the following information:
If you haven't installed IO-Compress then search IO::Compress::Gzip.pm
for a line like this:
- $VERSION = "2.048" ;
+ $VERSION = "2.060" ;
2. If you are having problems building IO-Compress, send me a
complete log of what happened. Start by unpacking the IO-Compress
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/Compress/Zlib.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/Compress/Zlib.pm
index db13bb03860..c5525ce1f92 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/Compress/Zlib.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/Compress/Zlib.pm
@@ -7,17 +7,17 @@ use Carp ;
use IO::Handle ;
use Scalar::Util qw(dualvar);
-use IO::Compress::Base::Common 2.048 ;
-use Compress::Raw::Zlib 2.048 ;
-use IO::Compress::Gzip 2.048 ;
-use IO::Uncompress::Gunzip 2.048 ;
+use IO::Compress::Base::Common 2.060 ;
+use Compress::Raw::Zlib 2.060 ;
+use IO::Compress::Gzip 2.060 ;
+use IO::Uncompress::Gunzip 2.060 ;
use strict ;
use warnings ;
use bytes ;
our ($VERSION, $XS_VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-$VERSION = '2.048';
+$VERSION = '2.060';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -315,7 +315,14 @@ sub compress($;$)
my $level = (@_ == 2 ? $_[1] : Z_DEFAULT_COMPRESSION() );
- $x = new Compress::Raw::Zlib::Deflate -AppendOutput => 1, -Level => $level
+ $x = Compress::Raw::Zlib::_deflateInit(FLAG_APPEND,
+ $level,
+ Z_DEFLATED,
+ MAX_WBITS,
+ MAX_MEM_LEVEL,
+ Z_DEFAULT_STRATEGY,
+ 4096,
+ '')
or return undef ;
$err = $x->deflate($in, $output) ;
@@ -325,12 +332,11 @@ sub compress($;$)
return undef unless $err == Z_OK() ;
return $output ;
-
}
sub uncompress($)
{
- my ($x, $output, $err, $in) =('', '', '', '') ;
+ my ($output, $in) =('', '') ;
if (ref $_[0] ) {
$in = $_[0] ;
@@ -341,47 +347,49 @@ sub uncompress($)
}
$] >= 5.008 and (utf8::downgrade($$in, 1)
- or croak "Wide character in uncompress");
-
- $x = new Compress::Raw::Zlib::Inflate -ConsumeInput => 0 or return undef ;
-
- $err = $x->inflate($in, $output) ;
- return undef unless $err == Z_STREAM_END() ;
-
- return $output ;
+ or croak "Wide character in uncompress");
+
+ my ($obj, $status) = Compress::Raw::Zlib::_inflateInit(0,
+ MAX_WBITS, 4096, "") ;
+
+ $status == Z_OK
+ or return undef;
+
+ $obj->inflate($in, $output) == Z_STREAM_END
+ or return undef;
+
+ return $output;
}
-
-
sub deflateInit(@)
{
my ($got) = ParseParameters(0,
{
- 'Bufsize' => [1, 1, Parse_unsigned, 4096],
- 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()],
- 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()],
- 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()],
- 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()],
- 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()],
- 'Dictionary' => [1, 1, Parse_any, ""],
+ 'bufsize' => [IO::Compress::Base::Common::Parse_unsigned, 4096],
+ 'level' => [IO::Compress::Base::Common::Parse_signed, Z_DEFAULT_COMPRESSION()],
+ 'method' => [IO::Compress::Base::Common::Parse_unsigned, Z_DEFLATED()],
+ 'windowbits' => [IO::Compress::Base::Common::Parse_signed, MAX_WBITS()],
+ 'memlevel' => [IO::Compress::Base::Common::Parse_unsigned, MAX_MEM_LEVEL()],
+ 'strategy' => [IO::Compress::Base::Common::Parse_unsigned, Z_DEFAULT_STRATEGY()],
+ 'dictionary' => [IO::Compress::Base::Common::Parse_any, ""],
}, @_ ) ;
croak "Compress::Zlib::deflateInit: Bufsize must be >= 1, you specified " .
- $got->value('Bufsize')
- unless $got->value('Bufsize') >= 1;
+ $got->getValue('bufsize')
+ unless $got->getValue('bufsize') >= 1;
my $obj ;
my $status = 0 ;
($obj, $status) =
Compress::Raw::Zlib::_deflateInit(0,
- $got->value('Level'),
- $got->value('Method'),
- $got->value('WindowBits'),
- $got->value('MemLevel'),
- $got->value('Strategy'),
- $got->value('Bufsize'),
- $got->value('Dictionary')) ;
+ $got->getValue('level'),
+ $got->getValue('method'),
+ $got->getValue('windowbits'),
+ $got->getValue('memlevel'),
+ $got->getValue('strategy'),
+ $got->getValue('bufsize'),
+ $got->getValue('dictionary')) ;
my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldDeflate" : undef) ;
return wantarray ? ($x, $status) : $x ;
@@ -391,22 +399,22 @@ sub inflateInit(@)
{
my ($got) = ParseParameters(0,
{
- 'Bufsize' => [1, 1, Parse_unsigned, 4096],
- 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()],
- 'Dictionary' => [1, 1, Parse_any, ""],
+ 'bufsize' => [IO::Compress::Base::Common::Parse_unsigned, 4096],
+ 'windowbits' => [IO::Compress::Base::Common::Parse_signed, MAX_WBITS()],
+ 'dictionary' => [IO::Compress::Base::Common::Parse_any, ""],
}, @_) ;
croak "Compress::Zlib::inflateInit: Bufsize must be >= 1, you specified " .
- $got->value('Bufsize')
- unless $got->value('Bufsize') >= 1;
+ $got->getValue('bufsize')
+ unless $got->getValue('bufsize') >= 1;
my $status = 0 ;
my $obj ;
($obj, $status) = Compress::Raw::Zlib::_inflateInit(FLAG_CONSUME_INPUT,
- $got->value('WindowBits'),
- $got->value('Bufsize'),
- $got->value('Dictionary')) ;
+ $got->getValue('windowbits'),
+ $got->getValue('bufsize'),
+ $got->getValue('dictionary')) ;
my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldInflate" : undef) ;
@@ -453,28 +461,42 @@ sub inflate
package Compress::Zlib ;
-use IO::Compress::Gzip::Constants 2.048 ;
+use IO::Compress::Gzip::Constants 2.060 ;
sub memGzip($)
{
- my $out;
-
- # if the deflation buffer isn't a reference, make it one
- my $string = (ref $_[0] ? $_[0] : \$_[0]) ;
+ _set_gzerr(0);
+ my $x = Compress::Raw::Zlib::_deflateInit(FLAG_APPEND|FLAG_CRC,
+ Z_BEST_COMPRESSION,
+ Z_DEFLATED,
+ -MAX_WBITS(),
+ MAX_MEM_LEVEL,
+ Z_DEFAULT_STRATEGY,
+ 4096,
+ '')
+ or return undef ;
+
+ # if the deflation buffer isn't a reference, make it one
+ my $string = (ref $_[0] ? $_[0] : \$_[0]) ;
- $] >= 5.008 and (utf8::downgrade($$string, 1)
- or croak "Wide character in memGzip");
+ $] >= 5.008 and (utf8::downgrade($$string, 1)
+ or croak "Wide character in memGzip");
- _set_gzerr(0);
- if ( ! IO::Compress::Gzip::gzip($string, \$out, Minimal => 1) )
- {
- $Compress::Zlib::gzerrno = $IO::Compress::Gzip::GzipError;
- return undef ;
- }
+ my $out;
+ my $status ;
- return $out;
+ $x->deflate($string, $out) == Z_OK
+ or return undef ;
+
+ $x->flush($out) == Z_OK
+ or return undef ;
+
+ return IO::Compress::Gzip::Constants::GZIP_MINIMUM_HEADER .
+ $out .
+ pack("V V", $x->crc32(), $x->total_in());
}
+
sub _removeGzipHeader($)
{
my $string = shift ;
@@ -555,12 +577,11 @@ sub memGunzip($)
or return _set_gzerr_undef($status);
my $bufsize = length $$string > 4096 ? length $$string : 4096 ;
- my $x = new Compress::Raw::Zlib::Inflate({-WindowBits => - MAX_WBITS(),
- -Bufsize => $bufsize})
-
+ my $x = Compress::Raw::Zlib::_inflateInit(FLAG_CRC | FLAG_CONSUME_INPUT,
+ -MAX_WBITS(), $bufsize, '')
or return _ret_gun_error();
- my $output = "" ;
+ my $output = '' ;
$status = $x->inflate($string, $output);
if ( $status == Z_OK() )
@@ -1478,7 +1499,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 1995-2012 Paul Marquess. All rights reserved.
+Copyright (c) 1995-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm
index 452e12ef483..e665ca3cebf 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm
@@ -4,12 +4,12 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.048 qw(:Status);
+use IO::Compress::Base::Common 2.060 qw(:Status);
-use Compress::Raw::Bzip2 2.048 ;
+use Compress::Raw::Bzip2 2.060 ;
our ($VERSION);
-$VERSION = '2.048';
+$VERSION = '2.060';
sub mkCompObject
{
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm
index 4a99c36cf7e..d064a141e73 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm
@@ -4,13 +4,13 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.048 qw(:Status);
-use Compress::Raw::Zlib 2.048 qw( !crc32 !adler32 ) ;
+use IO::Compress::Base::Common 2.060 qw(:Status);
+use Compress::Raw::Zlib 2.060 qw( !crc32 !adler32 ) ;
require Exporter;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, @EXPORT, %DEFLATE_CONSTANTS);
-$VERSION = '2.048';
+$VERSION = '2.060';
@ISA = qw(Exporter);
@EXPORT_OK = @Compress::Raw::Zlib::DEFLATE_CONSTANTS;
%EXPORT_TAGS = %Compress::Raw::Zlib::DEFLATE_CONSTANTS;
@@ -74,8 +74,7 @@ sub flush
return STATUS_ERROR;
}
- return STATUS_OK;
-
+ return STATUS_OK;
}
sub close
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm
index c7a0031a1d4..73d911f68e2 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm
@@ -4,10 +4,10 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.048 qw(:Status);
+use IO::Compress::Base::Common 2.060 qw(:Status);
our ($VERSION);
-$VERSION = '2.048';
+$VERSION = '2.060';
sub mkCompObject
{
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base.pm
index 2137bbb8de2..9b8ef7552a5 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base.pm
@@ -6,21 +6,21 @@ require 5.006 ;
use strict ;
use warnings;
-use IO::Compress::Base::Common 2.048 ;
+use IO::Compress::Base::Common 2.060 ;
-use IO::File qw(SEEK_SET SEEK_END); ;
-use Scalar::Util qw(blessed readonly);
+use IO::File (); ;
+use Scalar::Util ();
#use File::Glob;
#require Exporter ;
use Carp() ;
use Symbol();
-use bytes;
+#use bytes;
our (@ISA, $VERSION);
@ISA = qw(Exporter IO::File);
-$VERSION = '2.048';
+$VERSION = '2.060';
#Can't locate object method "SWASHNEW" via package "utf8" (perhaps you forgot to load "utf8"?) at .../ext/Compress-Zlib/Gzip/blib/lib/Compress/Zlib/Common.pm line 16.
@@ -92,11 +92,11 @@ sub writeAt
my $here = tell(*$self->{FH});
return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!)
if $here < 0 ;
- seek(*$self->{FH}, $offset, SEEK_SET)
+ seek(*$self->{FH}, $offset, IO::Handle::SEEK_SET)
or return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ;
defined *$self->{FH}->write($data, length $data)
or return $self->saveErrorString(undef, $!, $!) ;
- seek(*$self->{FH}, $here, SEEK_SET)
+ seek(*$self->{FH}, $here, IO::Handle::SEEK_SET)
or return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ;
}
else {
@@ -143,10 +143,21 @@ sub output
sub getOneShotParams
{
- return ( 'MultiStream' => [1, 1, Parse_boolean, 1],
+ return ( 'multistream' => [IO::Compress::Base::Common::Parse_boolean, 1],
);
}
+our %PARAMS = (
+ # Generic Parameters
+ 'autoclose' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'encode' => [IO::Compress::Base::Common::Parse_any, undef],
+ 'strict' => [IO::Compress::Base::Common::Parse_boolean, 1],
+ 'append' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'binmodein' => [IO::Compress::Base::Common::Parse_boolean, 0],
+
+ 'filtercontainer' => [IO::Compress::Base::Common::Parse_code, undef],
+ );
+
sub checkParams
{
my $self = shift ;
@@ -156,20 +167,14 @@ sub checkParams
$got->parse(
{
- # Generic Parameters
- 'AutoClose' => [1, 1, Parse_boolean, 0],
- #'Encode' => [1, 1, Parse_any, undef],
- 'Strict' => [0, 1, Parse_boolean, 1],
- 'Append' => [1, 1, Parse_boolean, 0],
- 'BinModeIn' => [1, 1, Parse_boolean, 0],
+ %PARAMS,
- 'FilterContainer' => [1, 1, Parse_code, undef],
$self->getExtraParams(),
*$self->{OneShot} ? $self->getOneShotParams()
: (),
},
- @_) or $self->croakError("${class}: $got->{Error}") ;
+ @_) or $self->croakError("${class}: " . $got->getError()) ;
return $got ;
}
@@ -195,9 +200,9 @@ sub _create
or return undef ;
}
- my $lax = ! $got->value('Strict') ;
+ my $lax = ! $got->getValue('strict') ;
- my $outType = whatIsOutput($outValue);
+ my $outType = IO::Compress::Base::Common::whatIsOutput($outValue);
$obj->ckOutputParam($class, $outValue)
or return undef ;
@@ -211,10 +216,10 @@ sub _create
}
# Merge implies Append
- my $merge = $got->value('Merge') ;
- my $appendOutput = $got->value('Append') || $merge ;
+ my $merge = $got->getValue('merge') ;
+ my $appendOutput = $got->getValue('append') || $merge ;
*$obj->{Append} = $appendOutput;
- *$obj->{FilterContainer} = $got->value('FilterContainer') ;
+ *$obj->{FilterContainer} = $got->getValue('filtercontainer') ;
if ($merge)
{
@@ -229,17 +234,18 @@ sub _create
#if ($outType eq 'filename' && -e $outValue && ! -w _)
# { return $obj->saveErrorString(undef, "Output file '$outValue' is not writable" ) }
-
-
- if ($got->parsed('Encode')) {
- my $want_encoding = $got->value('Encode');
- *$obj->{Encoding} = getEncoding($obj, $class, $want_encoding);
- }
-
$obj->ckParams($got)
or $obj->croakError("${class}: " . $obj->error());
-
+ if ($got->getValue('encode')) {
+ my $want_encoding = $got->getValue('encode');
+ *$obj->{Encoding} = IO::Compress::Base::Common::getEncoding($obj, $class, $want_encoding);
+ my $x = *$obj->{Encoding};
+ }
+ else {
+ *$obj->{Encoding} = undef;
+ }
+
$obj->saveStatus(STATUS_OK) ;
my $status ;
@@ -259,11 +265,11 @@ sub _create
if ($outType eq 'handle') {
*$obj->{FH} = $outValue ;
setBinModeOutput(*$obj->{FH}) ;
- $outValue->flush() ;
+ #$outValue->flush() ;
*$obj->{Handle} = 1 ;
if ($appendOutput)
{
- seek(*$obj->{FH}, 0, SEEK_END)
+ seek(*$obj->{FH}, 0, IO::Handle::SEEK_END)
or return $obj->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ;
}
@@ -292,7 +298,7 @@ sub _create
}
*$obj->{Closed} = 0 ;
- *$obj->{AutoClose} = $got->value('AutoClose') ;
+ *$obj->{AutoClose} = $got->getValue('autoclose') ;
*$obj->{Output} = $outValue;
*$obj->{ClassName} = $class;
*$obj->{Got} = $got;
@@ -305,7 +311,7 @@ sub ckOutputParam
{
my $self = shift ;
my $from = shift ;
- my $outType = whatIsOutput($_[0]);
+ my $outType = IO::Compress::Base::Common::whatIsOutput($_[0]);
$self->croakError("$from: output parameter not a filename, filehandle or scalar ref")
if ! $outType ;
@@ -314,7 +320,7 @@ sub ckOutputParam
#if $outType eq 'filename' && (! defined $_[0] || $_[0] eq '') ;
$self->croakError("$from: output buffer is read-only")
- if $outType eq 'buffer' && readonly(${ $_[0] });
+ if $outType eq 'buffer' && Scalar::Util::readonly(${ $_[0] });
return 1;
}
@@ -490,7 +496,7 @@ sub _wr2
$fh = new IO::File "<$input"
or return $self->saveErrorString(undef, "cannot open file '$input': $!", $!) ;
}
- binmode $fh if *$self->{Got}->valueOrDefault('BinModeIn') ;
+ binmode $fh if *$self->{Got}->valueOrDefault('binmodein') ;
my $status ;
my $buff ;
@@ -523,7 +529,7 @@ sub addInterStream
my $input = shift ;
my $inputIsFilename = shift ;
- if (*$self->{Got}->value('MultiStream'))
+ if (*$self->{Got}->getValue('multistream'))
{
$self->getFileInfo(*$self->{Got}, $input)
#if isaFilename($input) and $inputIsFilename ;
@@ -532,7 +538,7 @@ sub addInterStream
# TODO -- newStream needs to allow gzip/zip header to be modified
return $self->newStream();
}
- elsif (*$self->{Got}->value('AutoFlush'))
+ elsif (*$self->{Got}->getValue('autoflush'))
{
#return $self->flush(Z_FULL_FLUSH);
}
@@ -589,10 +595,6 @@ sub syswrite
$buffer = \$_[0] ;
}
- $] >= 5.008 and ( utf8::downgrade($$buffer, 1)
- or Carp::croak "Wide character in " . *$self->{ClassName} . "::write:");
-
-
if (@_ > 1) {
my $slen = defined $$buffer ? length($$buffer) : 0;
my $len = $slen;
@@ -614,11 +616,23 @@ sub syswrite
$buffer = \substr($$buffer, $offset, $len) ;
}
- return 0 if ! defined $$buffer || length $$buffer == 0 ;
-
- if (*$self->{Encoding}) {
+ return 0 if (! defined $$buffer || length $$buffer == 0) && ! *$self->{FlushPending};
+
+# *$self->{Pending} .= $$buffer ;
+#
+# return length $$buffer
+# if (length *$self->{Pending} < 1024 * 16 && ! *$self->{FlushPending}) ;
+#
+# $$buffer = *$self->{Pending} ;
+# *$self->{Pending} = '';
+
+ if (*$self->{Encoding}) {
$$buffer = *$self->{Encoding}->encode($$buffer);
}
+ else {
+ $] >= 5.008 and ( utf8::downgrade($$buffer, 1)
+ or Carp::croak "Wide character in " . *$self->{ClassName} . "::write:");
+ }
$self->filterUncompressed($buffer);
@@ -670,9 +684,7 @@ sub printf
defined $self->syswrite(sprintf($fmt, @_));
}
-
-
-sub flush
+sub _flushCompressed
{
my $self = shift ;
@@ -690,6 +702,15 @@ sub flush
$self->outputPayload($outBuffer)
or return 0;
+ return 1;
+}
+
+sub flush
+{
+ my $self = shift ;
+
+ $self->_flushCompressed(@_)
+ or return 0;
if ( defined *$self->{FH} ) {
defined *$self->{FH}->flush()
@@ -708,12 +729,22 @@ sub _newStream
my $self = shift ;
my $got = shift;
+ my $class = ref $self;
+
$self->_writeTrailer()
or return 0 ;
$self->ckParams($got)
or $self->croakError("newStream: $self->{Error}");
+ if ($got->getValue('encode')) {
+ my $want_encoding = $got->getValue('encode');
+ *$self->{Encoding} = IO::Compress::Base::Common::getEncoding($self, $class, $want_encoding);
+ }
+ else {
+ *$self->{Encoding} = undef;
+ }
+
*$self->{Compress} = $self->mkComp($got)
or return 0;
@@ -788,13 +819,13 @@ sub _writeFinalTrailer
sub close
{
my $self = shift ;
-
return 1 if *$self->{Closed} || ! *$self->{Compress} ;
*$self->{Closed} = 1 ;
untie *$self
if $] >= 5.008 ;
+ *$self->{FlushPending} = 1 ;
$self->_writeTrailer()
or return 0 ;
@@ -806,7 +837,6 @@ sub close
if (defined *$self->{FH}) {
- #if (! *$self->{Handle} || *$self->{AutoClose}) {
if ((! *$self->{Handle} || *$self->{AutoClose}) && ! *$self->{StdIO}) {
$! = 0 ;
*$self->{FH}->close()
@@ -1011,7 +1041,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm
index c6c38181ef8..cce097dd6dc 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm
@@ -11,7 +11,7 @@ use File::GlobMapper;
require Exporter;
our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE);
@ISA = qw(Exporter);
-$VERSION = '2.048';
+$VERSION = '2.060';
@EXPORT = qw( isaFilehandle isaFilename isaScalar
whatIsInput whatIsOutput
@@ -19,8 +19,7 @@ $VERSION = '2.048';
setBinModeInput setBinModeOutput
ckInOutParams
createSelfTiedObject
- getEncoding
-
+
isGeMax32
MAX32
@@ -106,7 +105,7 @@ sub setBinModeOutput($)
{
my $handle = shift ;
- binmode $handle
+ binmode $handle
if $needBinmode;
}
@@ -377,10 +376,10 @@ sub IO::Compress::Base::Validator::validateInputFilenames
return $self->saveErrorString("input file '$filename' is a directory");
}
- if (! -r _ )
- {
- return $self->saveErrorString("cannot open file '$filename': $!");
- }
+# if (! -r _ )
+# {
+# return $self->saveErrorString("cannot open file '$filename': $!");
+# }
}
return 1 ;
@@ -472,7 +471,7 @@ $EXPORT_TAGS{Parse} = [qw( ParseParameters
Parse_any Parse_unsigned Parse_signed
Parse_boolean Parse_string
Parse_code
- Parse_multiple Parse_writable_scalar
+ Parse_writable_scalar
)
];
@@ -486,7 +485,7 @@ use constant Parse_string => 0x10;
use constant Parse_code => 0x20;
#use constant Parse_store_ref => 0x100 ;
-use constant Parse_multiple => 0x100 ;
+#use constant Parse_multiple => 0x100 ;
use constant Parse_writable => 0x200 ;
use constant Parse_writable_scalar => 0x400 | Parse_writable ;
@@ -494,10 +493,11 @@ use constant OFF_PARSED => 0 ;
use constant OFF_TYPE => 1 ;
use constant OFF_DEFAULT => 2 ;
use constant OFF_FIXED => 3 ;
-use constant OFF_FIRST_ONLY => 4 ;
-use constant OFF_STICKY => 5 ;
-
+#use constant OFF_FIRST_ONLY => 4 ;
+#use constant OFF_STICKY => 5 ;
+use constant IxError => 0;
+use constant IxGot => 1 ;
sub ParseParameters
{
@@ -511,27 +511,60 @@ sub ParseParameters
my $p = new IO::Compress::Base::Parameters() ;
$p->parse(@_)
- or croak "$sub: $p->{Error}" ;
+ or croak "$sub: $p->[IxError]" ;
return $p;
}
-#package IO::Compress::Base::Parameters;
use strict;
use warnings;
use Carp;
+
+sub Init
+{
+ my $default = shift ;
+ my %got ;
+
+ my $obj = IO::Compress::Base::Parameters::new();
+ while (my ($key, $v) = each %$default)
+ {
+ croak "need 2 params [@$v]"
+ if @$v != 2 ;
+
+ my ($type, $value) = @$v ;
+# my ($first_only, $sticky, $type, $value) = @$v ;
+ my $sticky = 0;
+ my $x ;
+ $obj->_checkType($key, \$value, $type, 0, \$x)
+ or return undef ;
+
+ $key = lc $key;
+
+# if (! $sticky) {
+# $x = []
+# if $type & Parse_multiple;
+
+# $got{$key} = [0, $type, $value, $x, $first_only, $sticky] ;
+ $got{$key} = [0, $type, $value, $x] ;
+# }
+#
+# $got{$key}[OFF_PARSED] = 0 ;
+ }
+
+ return bless \%got, "IO::Compress::Base::Parameters::Defaults" ;
+}
+
sub IO::Compress::Base::Parameters::new
{
- my $class = shift ;
+ #my $class = shift ;
- my $obj = { Error => '',
- Got => {},
- } ;
+ my $obj;
+ $obj->[IxError] = '';
+ $obj->[IxGot] = {} ;
- #return bless $obj, ref($class) || $class || __PACKAGE__ ;
return bless $obj, 'IO::Compress::Base::Parameters' ;
}
@@ -541,25 +574,24 @@ sub IO::Compress::Base::Parameters::setError
my $error = shift ;
my $retval = @_ ? shift : undef ;
- $self->{Error} = $error ;
+
+ $self->[IxError] = $error ;
return $retval;
}
-#sub getError
-#{
-# my $self = shift ;
-# return $self->{Error} ;
-#}
+sub IO::Compress::Base::Parameters::getError
+{
+ my $self = shift ;
+ return $self->[IxError] ;
+}
sub IO::Compress::Base::Parameters::parse
{
my $self = shift ;
-
my $default = shift ;
- my $got = $self->{Got} ;
+ my $got = $self->[IxGot] ;
my $firstTime = keys %{ $got } == 0 ;
- my $other;
my (@Bad) ;
my @entered = () ;
@@ -581,63 +613,35 @@ sub IO::Compress::Base::Parameters::parse
}
}
else {
+
my $count = @_;
return $self->setError("Expected even number of parameters, got $count")
if $count % 2 != 0 ;
for my $i (0.. $count / 2 - 1) {
- if ($_[2 * $i] eq '__xxx__') {
- $other = $_[2 * $i + 1] ;
- }
- else {
- push @entered, $_[2 * $i] ;
- push @entered, \$_[2 * $i + 1] ;
- }
+ push @entered, $_[2 * $i] ;
+ push @entered, \$_[2 * $i + 1] ;
}
}
-
- while (my ($key, $v) = each %$default)
- {
- croak "need 4 params [@$v]"
- if @$v != 4 ;
-
- my ($first_only, $sticky, $type, $value) = @$v ;
- my $x ;
- $self->_checkType($key, \$value, $type, 0, \$x)
- or return undef ;
-
- $key = lc $key;
-
- if ($firstTime || ! $sticky) {
- $x = []
- if $type & Parse_multiple;
-
- $got->{$key} = [0, $type, $value, $x, $first_only, $sticky] ;
+ foreach my $key (keys %$default)
+ {
+
+ my ($type, $value) = @{ $default->{$key} } ;
+
+ if ($firstTime) {
+ $got->{$key} = [0, $type, $value, $value] ;
+ }
+ else
+ {
+ $got->{$key}[OFF_PARSED] = 0 ;
+ }
}
- $got->{$key}[OFF_PARSED] = 0 ;
- }
my %parsed = ();
- if ($other)
- {
- for my $key (keys %$default)
- {
- my $canonkey = lc $key;
- if ($other->parsed($canonkey))
- {
- my $value = $other->value($canonkey);
-#print "SET '$canonkey' to $value [$$value]\n";
- ++ $parsed{$canonkey};
- $got->{$canonkey}[OFF_PARSED] = 1;
- $got->{$canonkey}[OFF_DEFAULT] = $value;
- $got->{$canonkey}[OFF_FIXED] = $value;
- }
- }
- }
-
+
for my $i (0.. @entered / 2 - 1) {
my $key = $entered[2* $i] ;
my $value = $entered[2* $i+1] ;
@@ -648,28 +652,22 @@ sub IO::Compress::Base::Parameters::parse
$key =~ s/^-// ;
my $canonkey = lc $key;
- if ($got->{$canonkey} && ($firstTime ||
- ! $got->{$canonkey}[OFF_FIRST_ONLY] ))
+ if ($got->{$canonkey})
{
my $type = $got->{$canonkey}[OFF_TYPE] ;
my $parsed = $parsed{$canonkey};
++ $parsed{$canonkey};
return $self->setError("Muliple instances of '$key' found")
- if $parsed && ($type & Parse_multiple) == 0 ;
+ if $parsed ;
my $s ;
$self->_checkType($key, $value, $type, 1, \$s)
or return undef ;
$value = $$value ;
- if ($type & Parse_multiple) {
- $got->{$canonkey}[OFF_PARSED] = 1;
- push @{ $got->{$canonkey}[OFF_FIXED] }, $s ;
- }
- else {
- $got->{$canonkey} = [1, $type, $value, $s] ;
- }
+ $got->{$canonkey} = [1, $type, $value, $s] ;
+
}
else
{ push (@Bad, $key) }
@@ -699,19 +697,19 @@ sub IO::Compress::Base::Parameters::_checkType
if ($type & Parse_writable_scalar)
{
return $self->setError("Parameter '$key' not writable")
- if $validate && readonly $$value ;
+ if readonly $$value ;
if (ref $$value)
{
return $self->setError("Parameter '$key' not a scalar reference")
- if $validate && ref $$value ne 'SCALAR' ;
+ if ref $$value ne 'SCALAR' ;
$$output = $$value ;
}
else
{
return $self->setError("Parameter '$key' not a scalar")
- if $validate && ref $value ne 'SCALAR' ;
+ if ref $value ne 'SCALAR' ;
$$output = $value ;
}
@@ -719,14 +717,6 @@ sub IO::Compress::Base::Parameters::_checkType
return 1;
}
-# if ($type & Parse_store_ref)
-# {
-# #$value = $$value
-# # if ref ${ $value } ;
-#
-# $$output = $value ;
-# return 1;
-# }
$value = $$value ;
@@ -737,20 +727,21 @@ sub IO::Compress::Base::Parameters::_checkType
}
elsif ($type & Parse_unsigned)
{
+
return $self->setError("Parameter '$key' must be an unsigned int, got 'undef'")
- if $validate && ! defined $value ;
+ if ! defined $value ;
return $self->setError("Parameter '$key' must be an unsigned int, got '$value'")
- if $validate && $value !~ /^\d+$/;
-
+ if $value !~ /^\d+$/;
+
$$output = defined $value ? $value : 0 ;
return 1;
}
elsif ($type & Parse_signed)
{
return $self->setError("Parameter '$key' must be a signed int, got 'undef'")
- if $validate && ! defined $value ;
+ if ! defined $value ;
return $self->setError("Parameter '$key' must be a signed int, got '$value'")
- if $validate && $value !~ /^-?\d+$/;
+ if $value !~ /^-?\d+$/;
$$output = defined $value ? $value : 0 ;
return 1 ;
@@ -758,50 +749,50 @@ sub IO::Compress::Base::Parameters::_checkType
elsif ($type & Parse_boolean)
{
return $self->setError("Parameter '$key' must be an int, got '$value'")
- if $validate && defined $value && $value !~ /^\d*$/;
- $$output = defined $value ? $value != 0 : 0 ;
+ if defined $value && $value !~ /^\d*$/;
+
+ $$output = defined $value && $value != 0 ? 1 : 0 ;
return 1;
}
- elsif ($type & Parse_code)
+
+ elsif ($type & Parse_string)
{
- return $self->setError("Parameter '$key' must be a code reference, got '$value'")
- if $validate && (! defined $value || ref $value ne 'CODE') ;
$$output = defined $value ? $value : "" ;
return 1;
}
- elsif ($type & Parse_string)
+ elsif ($type & Parse_code)
{
+ return $self->setError("Parameter '$key' must be a code reference, got '$value'")
+ if (! defined $value || ref $value ne 'CODE') ;
+
$$output = defined $value ? $value : "" ;
return 1;
}
-
+
$$output = $value ;
return 1;
}
-
-
sub IO::Compress::Base::Parameters::parsed
{
- my $self = shift ;
- my $name = shift ;
-
- return $self->{Got}{lc $name}[OFF_PARSED] ;
+ return $_[0]->[IxGot]{$_[1]}[OFF_PARSED] ;
}
-sub IO::Compress::Base::Parameters::value
-{
- my $self = shift ;
- my $name = shift ;
- if (@_)
- {
- $self->{Got}{lc $name}[OFF_PARSED] = 1;
- $self->{Got}{lc $name}[OFF_DEFAULT] = $_[0] ;
- $self->{Got}{lc $name}[OFF_FIXED] = $_[0] ;
- }
+sub IO::Compress::Base::Parameters::getValue
+{
+ return $_[0]->[IxGot]{$_[1]}[OFF_FIXED] ;
+}
+sub IO::Compress::Base::Parameters::setValue
+{
+ $_[0]->[IxGot]{$_[1]}[OFF_PARSED] = 1;
+ $_[0]->[IxGot]{$_[1]}[OFF_DEFAULT] = $_[2] ;
+ $_[0]->[IxGot]{$_[1]}[OFF_FIXED] = $_[2] ;
+}
- return $self->{Got}{lc $name}[OFF_FIXED] ;
+sub IO::Compress::Base::Parameters::valueRef
+{
+ return $_[0]->[IxGot]{$_[1]}[OFF_FIXED] ;
}
sub IO::Compress::Base::Parameters::valueOrDefault
@@ -810,33 +801,31 @@ sub IO::Compress::Base::Parameters::valueOrDefault
my $name = shift ;
my $default = shift ;
- my $value = $self->{Got}{lc $name}[OFF_DEFAULT] ;
-
+ my $value = $self->[IxGot]{$name}[OFF_DEFAULT] ;
+
return $value if defined $value ;
return $default ;
}
sub IO::Compress::Base::Parameters::wantValue
{
- my $self = shift ;
- my $name = shift ;
-
- return defined $self->{Got}{lc $name}[OFF_DEFAULT] ;
-
+ return defined $_[0]->[IxGot]{$_[1]}[OFF_DEFAULT] ;
}
sub IO::Compress::Base::Parameters::clone
{
my $self = shift ;
- my $obj = { };
+ my $obj = [] ;
my %got ;
- while (my ($k, $v) = each %{ $self->{Got} }) {
- $got{$k} = [ @$v ];
+ my $hash = $self->[IxGot] ;
+ for my $k (keys %{ $hash })
+ {
+ $got{$k} = [ @{ $hash->{$k} } ];
}
- $obj->{Error} = $self->{Error};
- $obj->{Got} = \%got ;
+ $obj->[IxError] = $self->[IxError];
+ $obj->[IxGot] = \%got ;
return bless $obj, 'IO::Compress::Base::Parameters' ;
}
@@ -850,27 +839,19 @@ use constant HIGH => 1;
sub new
{
- my $class = shift ;
-
- my $high = 0 ;
- my $low = 0 ;
-
- if (@_ == 2) {
- $high = shift ;
- $low = shift ;
- }
- elsif (@_ == 1) {
- $low = shift ;
- }
-
- bless [$low, $high], $class;
+ return bless [ 0, 0 ], $_[0]
+ if @_ == 1 ;
+
+ return bless [ $_[1], 0 ], $_[0]
+ if @_ == 2 ;
+
+ return bless [ $_[2], $_[1] ], $_[0]
+ if @_ == 3 ;
}
sub newUnpack_V64
{
- my $string = shift;
-
- my ($low, $hi) = unpack "V V", $string ;
+ my ($low, $hi) = unpack "V V", $_[0] ;
bless [ $low, $hi ], "U64";
}
@@ -884,64 +865,79 @@ sub newUnpack_V32
sub reset
{
- my $self = shift;
- $self->[HIGH] = $self->[LOW] = 0;
+ $_[0]->[HIGH] = $_[0]->[LOW] = 0;
}
sub clone
{
- my $self = shift;
- bless [ @$self ], ref $self ;
+ bless [ @{$_[0]} ], ref $_[0] ;
}
sub getHigh
{
- my $self = shift;
- return $self->[HIGH];
+ return $_[0]->[HIGH];
}
sub getLow
{
- my $self = shift;
- return $self->[LOW];
+ return $_[0]->[LOW];
}
sub get32bit
{
- my $self = shift;
- return $self->[LOW];
+ return $_[0]->[LOW];
}
sub get64bit
{
- my $self = shift;
# Not using << here because the result will still be
# a 32-bit value on systems where int size is 32-bits
- return $self->[HIGH] * HI_1 + $self->[LOW];
+ return $_[0]->[HIGH] * HI_1 + $_[0]->[LOW];
}
sub add
{
- my $self = shift;
- my $value = shift;
+# my $self = shift;
+ my $value = $_[1];
if (ref $value eq 'U64') {
- $self->[HIGH] += $value->[HIGH] ;
+ $_[0]->[HIGH] += $value->[HIGH] ;
$value = $value->[LOW];
}
elsif ($value > MAX32) {
- $self->[HIGH] += int($value / HI_1) ;
+ $_[0]->[HIGH] += int($value / HI_1) ;
+ $value = $value % HI_1;
+ }
+
+ my $available = MAX32 - $_[0]->[LOW] ;
+
+ if ($value > $available) {
+ ++ $_[0]->[HIGH] ;
+ $_[0]->[LOW] = $value - $available - 1;
+ }
+ else {
+ $_[0]->[LOW] += $value ;
+ }
+}
+
+sub add32
+{
+# my $self = shift;
+ my $value = $_[1];
+
+ if ($value > MAX32) {
+ $_[0]->[HIGH] += int($value / HI_1) ;
$value = $value % HI_1;
}
- my $available = MAX32 - $self->[LOW] ;
+ my $available = MAX32 - $_[0]->[LOW] ;
if ($value > $available) {
- ++ $self->[HIGH] ;
- $self->[LOW] = $value - $available - 1;
+ ++ $_[0]->[HIGH] ;
+ $_[0]->[LOW] = $value - $available - 1;
}
else {
- $self->[LOW] += $value ;
+ $_[0]->[LOW] += $value ;
}
}
@@ -1005,35 +1001,27 @@ sub cmp
sub is64bit
{
- my $self = shift;
- return $self->[HIGH] > 0 ;
+ return $_[0]->[HIGH] > 0 ;
}
sub isAlmost64bit
{
- my $self = shift;
- return $self->[HIGH] > 0 || $self->[LOW] == MAX32 ;
+ return $_[0]->[HIGH] > 0 || $_[0]->[LOW] == MAX32 ;
}
sub getPacked_V64
{
- my $self = shift;
-
- return pack "V V", @$self ;
+ return pack "V V", @{ $_[0] } ;
}
sub getPacked_V32
{
- my $self = shift;
-
- return pack "V", $self->[LOW] ;
+ return pack "V", $_[0]->[LOW] ;
}
sub pack_V64
{
- my $low = shift;
-
- return pack "V V", $low, 0;
+ return pack "V V", $_[0], 0;
}
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm
index dd9016bf834..7c5dc793e71 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm
@@ -5,16 +5,16 @@ use warnings;
use bytes;
require Exporter ;
-use IO::Compress::Base 2.048 ;
+use IO::Compress::Base 2.060 ;
-use IO::Compress::Base::Common 2.048 qw(createSelfTiedObject);
-use IO::Compress::Adapter::Bzip2 2.048 ;
+use IO::Compress::Base::Common 2.060 qw();
+use IO::Compress::Adapter::Bzip2 2.060 ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bzip2Error);
-$VERSION = '2.048';
+$VERSION = '2.060';
$Bzip2Error = '';
@ISA = qw(Exporter IO::Compress::Base);
@@ -29,13 +29,13 @@ sub new
{
my $class = shift ;
- my $obj = createSelfTiedObject($class, \$Bzip2Error);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$Bzip2Error);
return $obj->_create(undef, @_);
}
sub bzip2
{
- my $obj = createSelfTiedObject(undef, \$Bzip2Error);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$Bzip2Error);
$obj->_def(@_);
}
@@ -51,12 +51,12 @@ sub getExtraParams
{
my $self = shift ;
- use IO::Compress::Base::Common 2.048 qw(:Parse);
+ use IO::Compress::Base::Common 2.060 qw(:Parse);
- return (
- 'BlockSize100K' => [0, 1, Parse_unsigned, 1],
- 'WorkFactor' => [0, 1, Parse_unsigned, 0],
- 'Verbosity' => [0, 1, Parse_boolean, 0],
+ return (
+ 'blocksize100k' => [IO::Compress::Base::Common::Parse_unsigned, 1],
+ 'workfactor' => [IO::Compress::Base::Common::Parse_unsigned, 0],
+ 'verbosity' => [IO::Compress::Base::Common::Parse_boolean, 0],
);
}
@@ -68,16 +68,16 @@ sub ckParams
my $got = shift;
# check that BlockSize100K is a number between 1 & 9
- if ($got->parsed('BlockSize100K')) {
- my $value = $got->value('BlockSize100K');
+ if ($got->parsed('blocksize100k')) {
+ my $value = $got->getValue('blocksize100k');
return $self->saveErrorString(undef, "Parameter 'BlockSize100K' not between 1 and 9, got $value")
unless defined $value && $value >= 1 && $value <= 9;
}
# check that WorkFactor between 0 & 250
- if ($got->parsed('WorkFactor')) {
- my $value = $got->value('WorkFactor');
+ if ($got->parsed('workfactor')) {
+ my $value = $got->getValue('workfactor');
return $self->saveErrorString(undef, "Parameter 'WorkFactor' not between 0 and 250, got $value")
unless $value >= 0 && $value <= 250;
}
@@ -91,9 +91,9 @@ sub mkComp
my $self = shift ;
my $got = shift ;
- my $BlockSize100K = $got->value('BlockSize100K');
- my $WorkFactor = $got->value('WorkFactor');
- my $Verbosity = $got->value('Verbosity');
+ my $BlockSize100K = $got->getValue('blocksize100k');
+ my $WorkFactor = $got->getValue('workfactor');
+ my $Verbosity = $got->getValue('verbosity');
my ($obj, $errstr, $errno) = IO::Compress::Adapter::Bzip2::mkCompObject(
$BlockSize100K, $WorkFactor,
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Deflate.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Deflate.pm
index daa7d7aa258..d6158deb5bf 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Deflate.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Deflate.pm
@@ -8,16 +8,16 @@ use bytes;
require Exporter ;
-use IO::Compress::RawDeflate 2.048 ();
-use IO::Compress::Adapter::Deflate 2.048 ;
+use IO::Compress::RawDeflate 2.060 ();
+use IO::Compress::Adapter::Deflate 2.060 ;
-use IO::Compress::Zlib::Constants 2.048 ;
-use IO::Compress::Base::Common 2.048 qw(createSelfTiedObject);
+use IO::Compress::Zlib::Constants 2.060 ;
+use IO::Compress::Base::Common 2.060 qw();
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $DeflateError);
-$VERSION = '2.048';
+$VERSION = '2.060';
$DeflateError = '';
@ISA = qw(Exporter IO::Compress::RawDeflate);
@@ -32,13 +32,13 @@ sub new
{
my $class = shift ;
- my $obj = createSelfTiedObject($class, \$DeflateError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$DeflateError);
return $obj->_create(undef, @_);
}
sub deflate
{
- my $obj = createSelfTiedObject(undef, \$DeflateError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$DeflateError);
return $obj->_def(@_);
}
@@ -85,8 +85,8 @@ sub mkHeader
my $self = shift ;
my $param = shift ;
- my $level = $param->value('Level');
- my $strategy = $param->value('Strategy');
+ my $level = $param->getValue('level');
+ my $strategy = $param->getValue('strategy');
my $lflag ;
$level = 6
@@ -119,7 +119,7 @@ sub ckParams
my $self = shift ;
my $got = shift;
- $got->value('ADLER32' => 1);
+ $got->setValue('adler32' => 1);
return 1 ;
}
@@ -233,19 +233,20 @@ section.
use IO::Compress::Deflate qw(deflate $DeflateError) ;
- deflate $input => $output [,OPTS]
+ deflate $input_filename_or_reference => $output_filename_or_reference [,OPTS]
or die "deflate failed: $DeflateError\n";
The functional interface needs Perl5.005 or better.
=head2 deflate $input => $output [, OPTS]
-C<deflate> expects at least two parameters, C<$input> and C<$output>.
+C<deflate> expects at least two parameters,
+C<$input_filename_or_reference> and C<$output_filename_or_reference>.
-=head3 The C<$input> parameter
+=head3 The C<$input_filename_or_reference> parameter
-The parameter, C<$input>, is used to define the source of
-the uncompressed data.
+The parameter, C<$input_filename_or_reference>, is used to define the
+source of the uncompressed data.
It can take one of the following forms:
@@ -253,25 +254,25 @@ It can take one of the following forms:
=item A filename
-If the C<$input> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for reading and the input data
-will be read from it.
+If the <$input_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for reading and the
+input data will be read from it.
=item A filehandle
-If the C<$input> parameter is a filehandle, the input data will be
-read from it.
-The string '-' can be used as an alias for standard input.
+If the C<$input_filename_or_reference> parameter is a filehandle, the input
+data will be read from it. The string '-' can be used as an alias for
+standard input.
=item A scalar reference
-If C<$input> is a scalar reference, the input data will be read
-from C<$$input>.
+If C<$input_filename_or_reference> is a scalar reference, the input data
+will be read from C<$$input_filename_or_reference>.
=item An array reference
-If C<$input> is an array reference, each element in the array must be a
-filename.
+If C<$input_filename_or_reference> is an array reference, each element in
+the array must be a filename.
The input data will be read from each file in turn.
@@ -280,65 +281,72 @@ contains valid filenames before any data is compressed.
=item An Input FileGlob string
-If C<$input> is a string that is delimited by the characters "<" and ">"
-C<deflate> will assume that it is an I<input fileglob string>. The
-input is the list of files that match the fileglob.
+If C<$input_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<deflate> will assume that it is an
+I<input fileglob string>. The input is the list of files that match the
+fileglob.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$input> parameter is any other type, C<undef> will be returned.
+If the C<$input_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
-=head3 The C<$output> parameter
+=head3 The C<$output_filename_or_reference> parameter
-The parameter C<$output> is used to control the destination of the
-compressed data. This parameter can take one of these forms.
+The parameter C<$output_filename_or_reference> is used to control the
+destination of the compressed data. This parameter can take one of
+these forms.
=over 5
=item A filename
-If the C<$output> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for writing and the compressed
-data will be written to it.
+If the C<$output_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for writing and the
+compressed data will be written to it.
=item A filehandle
-If the C<$output> parameter is a filehandle, the compressed data
-will be written to it.
-The string '-' can be used as an alias for standard output.
+If the C<$output_filename_or_reference> parameter is a filehandle, the
+compressed data will be written to it. The string '-' can be used as
+an alias for standard output.
=item A scalar reference
-If C<$output> is a scalar reference, the compressed data will be
-stored in C<$$output>.
+If C<$output_filename_or_reference> is a scalar reference, the
+compressed data will be stored in C<$$output_filename_or_reference>.
=item An Array Reference
-If C<$output> is an array reference, the compressed data will be
-pushed onto the array.
+If C<$output_filename_or_reference> is an array reference,
+the compressed data will be pushed onto the array.
=item An Output FileGlob
-If C<$output> is a string that is delimited by the characters "<" and ">"
-C<deflate> will assume that it is an I<output fileglob string>. The
-output is the list of files that match the fileglob.
+If C<$output_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<deflate> will assume that it is an
+I<output fileglob string>. The output is the list of files that match the
+fileglob.
-When C<$output> is an fileglob string, C<$input> must also be a fileglob
-string. Anything else is an error.
+When C<$output_filename_or_reference> is an fileglob string,
+C<$input_filename_or_reference> must also be a fileglob string. Anything
+else is an error.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$output> parameter is any other type, C<undef> will be returned.
+If the C<$output_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
=head2 Notes
-When C<$input> maps to multiple files/buffers and C<$output> is a single
+When C<$input_filename_or_reference> maps to multiple files/buffers and
+C<$output_filename_or_reference> is a single
file/buffer the input files/buffers will be stored
-in C<$output> as a concatenated series of compressed data streams.
+in C<$output_filename_or_reference> as a concatenated series of compressed data streams.
=head2 Optional Parameters
@@ -924,7 +932,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/FAQ.pod b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/FAQ.pod
index d392ff2cc91..8750e47c833 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/FAQ.pod
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/FAQ.pod
@@ -180,6 +180,10 @@ In particular, if you are using Info-Zip you need to have zip version 3.x
or better to update a Zip64 archive and unzip version 6.x to read a zip64
archive.
+=head2 Can I write more that 64K entries is a Zip files?
+
+Yes. Zip64 allows this. See previous question.
+
=head2 Zip Resources
The primary reference for zip files is the "appnote" document available at
@@ -197,6 +201,32 @@ L<http://www.faqs.org/rfcs/rfc1952.html>
The primary site for gzip is F<http://www.gzip.org>.
+=head2 Dealing with Concatenated gzip files
+
+If the gunzip program encounters a file containing multiple gzip files
+concatenated together it will automatically uncompress them all.
+The example below illustrates this behaviour
+
+ $ echo abc | gzip -c >x.gz
+ $ echo def | gzip -c >>x.gz
+ $ gunzip -c x.gz
+ abc
+ def
+
+By default C<IO::Uncompress::Gunzip> will I<not> bahave like the gunzip
+program. It will only uncompress the first gzip data stream in the file, as
+shown below
+
+ $ perl -MIO::Uncompress::Gunzip=:all -e 'gunzip "x.gz" => \*STDOUT'
+ abc
+
+To force C<IO::Uncompress::Gunzip> to uncompress all the gzip data streams,
+include the C<MultiStream> option, as shown below
+
+ $ perl -MIO::Uncompress::Gunzip=:all -e 'gunzip "x.gz" => \*STDOUT, MultiStream => 1'
+ abc
+ def
+
=head1 ZLIB
=head2 Zlib Resources
@@ -204,6 +234,51 @@ The primary site for gzip is F<http://www.gzip.org>.
The primary site for the I<zlib> compression library is
F<http://www.zlib.org>.
+=head1 Bzip2
+
+=head2 Bzip2 Resources
+
+The primary site for bzip2 is F<http://www.bzip.org>.
+
+=head2 Dealing with Concatenated bzip2 files
+
+If the bunzip2 program encounters a file containing multiple bzip2 files
+concatenated together it will automatically uncompress them all.
+The example below illustrates this behaviour
+
+ $ echo abc | bzip2 -c >x.bz2
+ $ echo def | bzip2 -c >>x.bz2
+ $ bunzip2 -c x.bz2
+ abc
+ def
+
+By default C<IO::Uncompress::Bunzip2> will I<not> bahave like the bunzip2
+program. It will only uncompress the first bunzip2 data stream in the file, as
+shown below
+
+ $ perl -MIO::Uncompress::Bunzip2=:all -e 'bunzip2 "x.bz2" => \*STDOUT'
+ abc
+
+To force C<IO::Uncompress::Bunzip2> to uncompress all the bzip2 data streams,
+include the C<MultiStream> option, as shown below
+
+ $ perl -MIO::Uncompress::Bunzip2=:all -e 'bunzip2 "x.bz2" => \*STDOUT, MultiStream => 1'
+ abc
+ def
+
+=head2 Interoperating with Pbzip2
+
+Pbzip2 (L<http://compression.ca/pbzip2/>) is a parallel implementation of
+bzip2. The output from pbzip2 consists of a series of concatenated bzip2
+data streams.
+
+By default C<IO::Uncompress::Bzip2> will only uncompress the first bzip2
+data stream in a pbzip2 file. To uncompress the complete pbzip2 file you
+must include the C<MultiStream> option, like this.
+
+ bunzip2 $input => \$output, MultiStream => 1
+ or die "bunzip2 failed: $Bunzip2Error\n";
+
=head1 HTTP & NETWORK
=head2 Apache::GZip Revisited
@@ -590,7 +665,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip.pm
index 6530c2532de..21141530e7c 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip.pm
@@ -8,12 +8,12 @@ use bytes;
require Exporter ;
-use IO::Compress::RawDeflate 2.048 () ;
-use IO::Compress::Adapter::Deflate 2.048 ;
+use IO::Compress::RawDeflate 2.060 () ;
+use IO::Compress::Adapter::Deflate 2.060 ;
-use IO::Compress::Base::Common 2.048 qw(:Status :Parse isaScalar createSelfTiedObject);
-use IO::Compress::Gzip::Constants 2.048 ;
-use IO::Compress::Zlib::Extra 2.048 ;
+use IO::Compress::Base::Common 2.060 qw(:Status );
+use IO::Compress::Gzip::Constants 2.060 ;
+use IO::Compress::Zlib::Extra 2.060 ;
BEGIN
{
@@ -25,7 +25,7 @@ BEGIN
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $GzipError);
-$VERSION = '2.048';
+$VERSION = '2.060';
$GzipError = '' ;
@ISA = qw(Exporter IO::Compress::RawDeflate);
@@ -39,7 +39,7 @@ sub new
{
my $class = shift ;
- my $obj = createSelfTiedObject($class, \$GzipError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$GzipError);
$obj->_create(undef, @_);
}
@@ -47,7 +47,7 @@ sub new
sub gzip
{
- my $obj = createSelfTiedObject(undef, \$GzipError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$GzipError);
return $obj->_def(@_);
}
@@ -65,17 +65,17 @@ sub getExtraParams
return (
# zlib behaviour
$self->getZlibParams(),
-
+
# Gzip header fields
- 'Minimal' => [0, 1, Parse_boolean, 0],
- 'Comment' => [0, 1, Parse_any, undef],
- 'Name' => [0, 1, Parse_any, undef],
- 'Time' => [0, 1, Parse_any, undef],
- 'TextFlag' => [0, 1, Parse_boolean, 0],
- 'HeaderCRC' => [0, 1, Parse_boolean, 0],
- 'OS_Code' => [0, 1, Parse_unsigned, $Compress::Raw::Zlib::gzip_os_code],
- 'ExtraField'=> [0, 1, Parse_any, undef],
- 'ExtraFlags'=> [0, 1, Parse_any, undef],
+ 'minimal' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'comment' => [IO::Compress::Base::Common::Parse_any, undef],
+ 'name' => [IO::Compress::Base::Common::Parse_any, undef],
+ 'time' => [IO::Compress::Base::Common::Parse_any, undef],
+ 'textflag' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'headercrc' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'os_code' => [IO::Compress::Base::Common::Parse_unsigned, $Compress::Raw::Zlib::gzip_os_code],
+ 'extrafield'=> [IO::Compress::Base::Common::Parse_any, undef],
+ 'extraflags'=> [IO::Compress::Base::Common::Parse_any, undef],
);
}
@@ -87,24 +87,24 @@ sub ckParams
my $got = shift ;
# gzip always needs crc32
- $got->value('CRC32' => 1);
+ $got->setValue('crc32' => 1);
return 1
- if $got->value('Merge') ;
+ if $got->getValue('merge') ;
- my $strict = $got->value('Strict') ;
+ my $strict = $got->getValue('strict') ;
{
- if (! $got->parsed('Time') ) {
+ if (! $got->parsed('time') ) {
# Modification time defaults to now.
- $got->value('Time' => time) ;
+ $got->setValue(time => time) ;
}
# Check that the Name & Comment don't have embedded NULLs
# Also check that they only contain ISO 8859-1 chars.
- if ($got->parsed('Name') && defined $got->value('Name')) {
- my $name = $got->value('Name');
+ if ($got->parsed('name') && defined $got->getValue('name')) {
+ my $name = $got->getValue('name');
return $self->saveErrorString(undef, "Null Character found in Name",
Z_DATA_ERROR)
@@ -115,8 +115,8 @@ sub ckParams
if $strict && $name =~ /$GZIP_FNAME_INVALID_CHAR_RE/o ;
}
- if ($got->parsed('Comment') && defined $got->value('Comment')) {
- my $comment = $got->value('Comment');
+ if ($got->parsed('comment') && defined $got->getValue('comment')) {
+ my $comment = $got->getValue('comment');
return $self->saveErrorString(undef, "Null Character found in Comment",
Z_DATA_ERROR)
@@ -127,8 +127,8 @@ sub ckParams
if $strict && $comment =~ /$GZIP_FCOMMENT_INVALID_CHAR_RE/o;
}
- if ($got->parsed('OS_Code') ) {
- my $value = $got->value('OS_Code');
+ if ($got->parsed('os_code') ) {
+ my $value = $got->getValue('os_code');
return $self->saveErrorString(undef, "OS_Code must be between 0 and 255, got '$value'")
if $value < 0 || $value > 255 ;
@@ -136,22 +136,22 @@ sub ckParams
}
# gzip only supports Deflate at present
- $got->value('Method' => Z_DEFLATED) ;
+ $got->setValue('method' => Z_DEFLATED) ;
- if ( ! $got->parsed('ExtraFlags')) {
- $got->value('ExtraFlags' => 2)
- if $got->value('Level') == Z_BEST_COMPRESSION ;
- $got->value('ExtraFlags' => 4)
- if $got->value('Level') == Z_BEST_SPEED ;
+ if ( ! $got->parsed('extraflags')) {
+ $got->setValue('extraflags' => 2)
+ if $got->getValue('level') == Z_BEST_COMPRESSION ;
+ $got->setValue('extraflags' => 4)
+ if $got->getValue('level') == Z_BEST_SPEED ;
}
- my $data = $got->value('ExtraField') ;
+ my $data = $got->getValue('extrafield') ;
if (defined $data) {
my $bad = IO::Compress::Zlib::Extra::parseExtraField($data, $strict, 1) ;
return $self->saveErrorString(undef, "Error with ExtraField Parameter: $bad", Z_DATA_ERROR)
if $bad ;
- $got->value('ExtraField', $data) ;
+ $got->setValue('extrafield' => $data) ;
}
}
@@ -177,15 +177,15 @@ sub getFileInfo
my $params = shift;
my $filename = shift ;
- return if isaScalar($filename);
+ return if IO::Compress::Base::Common::isaScalar($filename);
my $defaultTime = (stat($filename))[9] ;
- $params->value('Name' => $filename)
- if ! $params->parsed('Name') ;
+ $params->setValue('name' => $filename)
+ if ! $params->parsed('name') ;
- $params->value('Time' => $defaultTime)
- if ! $params->parsed('Time') ;
+ $params->setValue('time' => $defaultTime)
+ if ! $params->parsed('time') ;
}
@@ -195,27 +195,27 @@ sub mkHeader
my $param = shift ;
# stort-circuit if a minimal header is requested.
- return GZIP_MINIMUM_HEADER if $param->value('Minimal') ;
+ return GZIP_MINIMUM_HEADER if $param->getValue('minimal') ;
# METHOD
- my $method = $param->valueOrDefault('Method', GZIP_CM_DEFLATED) ;
+ my $method = $param->valueOrDefault('method', GZIP_CM_DEFLATED) ;
# FLAGS
my $flags = GZIP_FLG_DEFAULT ;
- $flags |= GZIP_FLG_FTEXT if $param->value('TextFlag') ;
- $flags |= GZIP_FLG_FHCRC if $param->value('HeaderCRC') ;
- $flags |= GZIP_FLG_FEXTRA if $param->wantValue('ExtraField') ;
- $flags |= GZIP_FLG_FNAME if $param->wantValue('Name') ;
- $flags |= GZIP_FLG_FCOMMENT if $param->wantValue('Comment') ;
+ $flags |= GZIP_FLG_FTEXT if $param->getValue('textflag') ;
+ $flags |= GZIP_FLG_FHCRC if $param->getValue('headercrc') ;
+ $flags |= GZIP_FLG_FEXTRA if $param->wantValue('extrafield') ;
+ $flags |= GZIP_FLG_FNAME if $param->wantValue('name') ;
+ $flags |= GZIP_FLG_FCOMMENT if $param->wantValue('comment') ;
# MTIME
- my $time = $param->valueOrDefault('Time', GZIP_MTIME_DEFAULT) ;
+ my $time = $param->valueOrDefault('time', GZIP_MTIME_DEFAULT) ;
# EXTRA FLAGS
- my $extra_flags = $param->valueOrDefault('ExtraFlags', GZIP_XFL_DEFAULT);
+ my $extra_flags = $param->valueOrDefault('extraflags', GZIP_XFL_DEFAULT);
# OS CODE
- my $os_code = $param->valueOrDefault('OS_Code', GZIP_OS_DEFAULT) ;
+ my $os_code = $param->valueOrDefault('os_code', GZIP_OS_DEFAULT) ;
my $out = pack("C4 V C C",
@@ -230,13 +230,13 @@ sub mkHeader
# EXTRA
if ($flags & GZIP_FLG_FEXTRA) {
- my $extra = $param->value('ExtraField') ;
+ my $extra = $param->getValue('extrafield') ;
$out .= pack("v", length $extra) . $extra ;
}
# NAME
if ($flags & GZIP_FLG_FNAME) {
- my $name .= $param->value('Name') ;
+ my $name .= $param->getValue('name') ;
$name =~ s/\x00.*$//;
$out .= $name ;
# Terminate the filename with NULL unless it already is
@@ -247,7 +247,7 @@ sub mkHeader
# COMMENT
if ($flags & GZIP_FLG_FCOMMENT) {
- my $comment .= $param->value('Comment') ;
+ my $comment .= $param->getValue('comment') ;
$comment =~ s/\x00.*$//;
$out .= $comment ;
# Terminate the comment with NULL unless it already is
@@ -257,7 +257,7 @@ sub mkHeader
}
# HEADER CRC
- $out .= pack("v", Compress::Raw::Zlib::crc32($out) & 0x00FF ) if $param->value('HeaderCRC') ;
+ $out .= pack("v", Compress::Raw::Zlib::crc32($out) & 0x00FF ) if $param->getValue('headercrc') ;
noUTF8($out);
@@ -342,19 +342,20 @@ section.
use IO::Compress::Gzip qw(gzip $GzipError) ;
- gzip $input => $output [,OPTS]
+ gzip $input_filename_or_reference => $output_filename_or_reference [,OPTS]
or die "gzip failed: $GzipError\n";
The functional interface needs Perl5.005 or better.
=head2 gzip $input => $output [, OPTS]
-C<gzip> expects at least two parameters, C<$input> and C<$output>.
+C<gzip> expects at least two parameters,
+C<$input_filename_or_reference> and C<$output_filename_or_reference>.
-=head3 The C<$input> parameter
+=head3 The C<$input_filename_or_reference> parameter
-The parameter, C<$input>, is used to define the source of
-the uncompressed data.
+The parameter, C<$input_filename_or_reference>, is used to define the
+source of the uncompressed data.
It can take one of the following forms:
@@ -362,25 +363,25 @@ It can take one of the following forms:
=item A filename
-If the C<$input> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for reading and the input data
-will be read from it.
+If the <$input_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for reading and the
+input data will be read from it.
=item A filehandle
-If the C<$input> parameter is a filehandle, the input data will be
-read from it.
-The string '-' can be used as an alias for standard input.
+If the C<$input_filename_or_reference> parameter is a filehandle, the input
+data will be read from it. The string '-' can be used as an alias for
+standard input.
=item A scalar reference
-If C<$input> is a scalar reference, the input data will be read
-from C<$$input>.
+If C<$input_filename_or_reference> is a scalar reference, the input data
+will be read from C<$$input_filename_or_reference>.
=item An array reference
-If C<$input> is an array reference, each element in the array must be a
-filename.
+If C<$input_filename_or_reference> is an array reference, each element in
+the array must be a filename.
The input data will be read from each file in turn.
@@ -389,72 +390,80 @@ contains valid filenames before any data is compressed.
=item An Input FileGlob string
-If C<$input> is a string that is delimited by the characters "<" and ">"
-C<gzip> will assume that it is an I<input fileglob string>. The
-input is the list of files that match the fileglob.
+If C<$input_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<gzip> will assume that it is an
+I<input fileglob string>. The input is the list of files that match the
+fileglob.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$input> parameter is any other type, C<undef> will be returned.
+If the C<$input_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
-In addition, if C<$input> is a simple filename, the default values for
+In addition, if C<$input_filename_or_reference> is a simple filename,
+the default values for
the C<Name> and C<Time> options will be sourced from that file.
If you do not want to use these defaults they can be overridden by
explicitly setting the C<Name> and C<Time> options or by setting the
C<Minimal> parameter.
-=head3 The C<$output> parameter
+=head3 The C<$output_filename_or_reference> parameter
-The parameter C<$output> is used to control the destination of the
-compressed data. This parameter can take one of these forms.
+The parameter C<$output_filename_or_reference> is used to control the
+destination of the compressed data. This parameter can take one of
+these forms.
=over 5
=item A filename
-If the C<$output> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for writing and the compressed
-data will be written to it.
+If the C<$output_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for writing and the
+compressed data will be written to it.
=item A filehandle
-If the C<$output> parameter is a filehandle, the compressed data
-will be written to it.
-The string '-' can be used as an alias for standard output.
+If the C<$output_filename_or_reference> parameter is a filehandle, the
+compressed data will be written to it. The string '-' can be used as
+an alias for standard output.
=item A scalar reference
-If C<$output> is a scalar reference, the compressed data will be
-stored in C<$$output>.
+If C<$output_filename_or_reference> is a scalar reference, the
+compressed data will be stored in C<$$output_filename_or_reference>.
=item An Array Reference
-If C<$output> is an array reference, the compressed data will be
-pushed onto the array.
+If C<$output_filename_or_reference> is an array reference,
+the compressed data will be pushed onto the array.
=item An Output FileGlob
-If C<$output> is a string that is delimited by the characters "<" and ">"
-C<gzip> will assume that it is an I<output fileglob string>. The
-output is the list of files that match the fileglob.
+If C<$output_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<gzip> will assume that it is an
+I<output fileglob string>. The output is the list of files that match the
+fileglob.
-When C<$output> is an fileglob string, C<$input> must also be a fileglob
-string. Anything else is an error.
+When C<$output_filename_or_reference> is an fileglob string,
+C<$input_filename_or_reference> must also be a fileglob string. Anything
+else is an error.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$output> parameter is any other type, C<undef> will be returned.
+If the C<$output_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
=head2 Notes
-When C<$input> maps to multiple files/buffers and C<$output> is a single
+When C<$input_filename_or_reference> maps to multiple files/buffers and
+C<$output_filename_or_reference> is a single
file/buffer the input files/buffers will be stored
-in C<$output> as a concatenated series of compressed data streams.
+in C<$output_filename_or_reference> as a concatenated series of compressed data streams.
=head2 Optional Parameters
@@ -1234,7 +1243,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm
index c218a31445c..b65f56b91f3 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm
@@ -9,7 +9,7 @@ require Exporter;
our ($VERSION, @ISA, @EXPORT, %GZIP_OS_Names);
our ($GZIP_FNAME_INVALID_CHAR_RE, $GZIP_FCOMMENT_INVALID_CHAR_RE);
-$VERSION = '2.048';
+$VERSION = '2.060';
@ISA = qw(Exporter);
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm
index 883a4eb2f72..0862e6e216d 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm
@@ -6,16 +6,15 @@ use strict ;
use warnings;
use bytes;
-
-use IO::Compress::Base 2.048 ;
-use IO::Compress::Base::Common 2.048 qw(:Status createSelfTiedObject);
-use IO::Compress::Adapter::Deflate 2.048 ;
+use IO::Compress::Base 2.060 ;
+use IO::Compress::Base::Common 2.060 qw(:Status );
+use IO::Compress::Adapter::Deflate 2.060 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError);
-$VERSION = '2.048';
+$VERSION = '2.060';
$RawDeflateError = '';
@ISA = qw(Exporter IO::Compress::Base);
@@ -49,14 +48,14 @@ sub new
{
my $class = shift ;
- my $obj = createSelfTiedObject($class, \$RawDeflateError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$RawDeflateError);
return $obj->_create(undef, @_);
}
sub rawdeflate
{
- my $obj = createSelfTiedObject(undef, \$RawDeflateError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$RawDeflateError);
return $obj->_def(@_);
}
@@ -74,10 +73,10 @@ sub mkComp
my $got = shift ;
my ($obj, $errstr, $errno) = IO::Compress::Adapter::Deflate::mkCompObject(
- $got->value('CRC32'),
- $got->value('Adler32'),
- $got->value('Level'),
- $got->value('Strategy')
+ $got->getValue('crc32'),
+ $got->getValue('adler32'),
+ $got->getValue('level'),
+ $got->getValue('strategy')
);
return $self->saveErrorString(undef, $errstr, $errno)
@@ -114,30 +113,24 @@ sub mkFinalTrailer
sub getExtraParams
{
my $self = shift ;
- return $self->getZlibParams();
+ return getZlibParams();
}
-sub getZlibParams
-{
- my $self = shift ;
-
- use IO::Compress::Base::Common 2.048 qw(:Parse);
- use Compress::Raw::Zlib 2.048 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
+use IO::Compress::Base::Common 2.060 qw(:Parse);
+use Compress::Raw::Zlib 2.060 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
+our %PARAMS = (
+ #'method' => [IO::Compress::Base::Common::Parse_unsigned, Z_DEFLATED],
+ 'level' => [IO::Compress::Base::Common::Parse_signed, Z_DEFAULT_COMPRESSION],
+ 'strategy' => [IO::Compress::Base::Common::Parse_signed, Z_DEFAULT_STRATEGY],
-
- return (
-
- # zlib behaviour
- #'Method' => [0, 1, Parse_unsigned, Z_DEFLATED],
- 'Level' => [0, 1, Parse_signed, Z_DEFAULT_COMPRESSION],
- 'Strategy' => [0, 1, Parse_signed, Z_DEFAULT_STRATEGY],
-
- 'CRC32' => [0, 1, Parse_boolean, 0],
- 'ADLER32' => [0, 1, Parse_boolean, 0],
- 'Merge' => [1, 1, Parse_boolean, 0],
+ 'crc32' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'adler32' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'merge' => [IO::Compress::Base::Common::Parse_boolean, 0],
);
-
-
+
+sub getZlibParams
+{
+ return %PARAMS;
}
sub getInverseClass
@@ -296,19 +289,20 @@ section.
use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
- rawdeflate $input => $output [,OPTS]
+ rawdeflate $input_filename_or_reference => $output_filename_or_reference [,OPTS]
or die "rawdeflate failed: $RawDeflateError\n";
The functional interface needs Perl5.005 or better.
=head2 rawdeflate $input => $output [, OPTS]
-C<rawdeflate> expects at least two parameters, C<$input> and C<$output>.
+C<rawdeflate> expects at least two parameters,
+C<$input_filename_or_reference> and C<$output_filename_or_reference>.
-=head3 The C<$input> parameter
+=head3 The C<$input_filename_or_reference> parameter
-The parameter, C<$input>, is used to define the source of
-the uncompressed data.
+The parameter, C<$input_filename_or_reference>, is used to define the
+source of the uncompressed data.
It can take one of the following forms:
@@ -316,25 +310,25 @@ It can take one of the following forms:
=item A filename
-If the C<$input> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for reading and the input data
-will be read from it.
+If the <$input_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for reading and the
+input data will be read from it.
=item A filehandle
-If the C<$input> parameter is a filehandle, the input data will be
-read from it.
-The string '-' can be used as an alias for standard input.
+If the C<$input_filename_or_reference> parameter is a filehandle, the input
+data will be read from it. The string '-' can be used as an alias for
+standard input.
=item A scalar reference
-If C<$input> is a scalar reference, the input data will be read
-from C<$$input>.
+If C<$input_filename_or_reference> is a scalar reference, the input data
+will be read from C<$$input_filename_or_reference>.
=item An array reference
-If C<$input> is an array reference, each element in the array must be a
-filename.
+If C<$input_filename_or_reference> is an array reference, each element in
+the array must be a filename.
The input data will be read from each file in turn.
@@ -343,65 +337,72 @@ contains valid filenames before any data is compressed.
=item An Input FileGlob string
-If C<$input> is a string that is delimited by the characters "<" and ">"
-C<rawdeflate> will assume that it is an I<input fileglob string>. The
-input is the list of files that match the fileglob.
+If C<$input_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<rawdeflate> will assume that it is an
+I<input fileglob string>. The input is the list of files that match the
+fileglob.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$input> parameter is any other type, C<undef> will be returned.
+If the C<$input_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
-=head3 The C<$output> parameter
+=head3 The C<$output_filename_or_reference> parameter
-The parameter C<$output> is used to control the destination of the
-compressed data. This parameter can take one of these forms.
+The parameter C<$output_filename_or_reference> is used to control the
+destination of the compressed data. This parameter can take one of
+these forms.
=over 5
=item A filename
-If the C<$output> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for writing and the compressed
-data will be written to it.
+If the C<$output_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for writing and the
+compressed data will be written to it.
=item A filehandle
-If the C<$output> parameter is a filehandle, the compressed data
-will be written to it.
-The string '-' can be used as an alias for standard output.
+If the C<$output_filename_or_reference> parameter is a filehandle, the
+compressed data will be written to it. The string '-' can be used as
+an alias for standard output.
=item A scalar reference
-If C<$output> is a scalar reference, the compressed data will be
-stored in C<$$output>.
+If C<$output_filename_or_reference> is a scalar reference, the
+compressed data will be stored in C<$$output_filename_or_reference>.
=item An Array Reference
-If C<$output> is an array reference, the compressed data will be
-pushed onto the array.
+If C<$output_filename_or_reference> is an array reference,
+the compressed data will be pushed onto the array.
=item An Output FileGlob
-If C<$output> is a string that is delimited by the characters "<" and ">"
-C<rawdeflate> will assume that it is an I<output fileglob string>. The
-output is the list of files that match the fileglob.
+If C<$output_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<rawdeflate> will assume that it is an
+I<output fileglob string>. The output is the list of files that match the
+fileglob.
-When C<$output> is an fileglob string, C<$input> must also be a fileglob
-string. Anything else is an error.
+When C<$output_filename_or_reference> is an fileglob string,
+C<$input_filename_or_reference> must also be a fileglob string. Anything
+else is an error.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$output> parameter is any other type, C<undef> will be returned.
+If the C<$output_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
=head2 Notes
-When C<$input> maps to multiple files/buffers and C<$output> is a single
+When C<$input_filename_or_reference> maps to multiple files/buffers and
+C<$output_filename_or_reference> is a single
file/buffer the input files/buffers will be stored
-in C<$output> as a concatenated series of compressed data streams.
+in C<$output_filename_or_reference> as a concatenated series of compressed data streams.
=head2 Optional Parameters
@@ -987,7 +988,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip.pm
index 9c2780a5e06..a5bf89ecc40 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip.pm
@@ -4,30 +4,30 @@ use strict ;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.048 qw(:Status MAX32 isGeMax32 isaScalar createSelfTiedObject);
-use IO::Compress::RawDeflate 2.048 ();
-use IO::Compress::Adapter::Deflate 2.048 ;
-use IO::Compress::Adapter::Identity 2.048 ;
-use IO::Compress::Zlib::Extra 2.048 ;
-use IO::Compress::Zip::Constants 2.048 ;
+use IO::Compress::Base::Common 2.060 qw(:Status );
+use IO::Compress::RawDeflate 2.060 ();
+use IO::Compress::Adapter::Deflate 2.060 ;
+use IO::Compress::Adapter::Identity 2.060 ;
+use IO::Compress::Zlib::Extra 2.060 ;
+use IO::Compress::Zip::Constants 2.060 ;
use File::Spec();
use Config;
-use Compress::Raw::Zlib 2.048 ();
+use Compress::Raw::Zlib 2.060 ();
BEGIN
{
eval { require IO::Compress::Adapter::Bzip2 ;
- import IO::Compress::Adapter::Bzip2 2.048 ;
+ import IO::Compress::Adapter::Bzip2 2.060 ;
require IO::Compress::Bzip2 ;
- import IO::Compress::Bzip2 2.048 ;
+ import IO::Compress::Bzip2 2.060 ;
} ;
eval { require IO::Compress::Adapter::Lzma ;
- import IO::Compress::Adapter::Lzma 2.048 ;
+ import IO::Compress::Adapter::Lzma 2.060 ;
require IO::Compress::Lzma ;
- import IO::Compress::Lzma 2.048 ;
+ import IO::Compress::Lzma 2.060 ;
} ;
}
@@ -36,7 +36,7 @@ require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $ZipError);
-$VERSION = '2.048';
+$VERSION = '2.060';
$ZipError = '';
@ISA = qw(Exporter IO::Compress::RawDeflate);
@@ -54,14 +54,14 @@ sub new
{
my $class = shift ;
- my $obj = createSelfTiedObject($class, \$ZipError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$ZipError);
$obj->_create(undef, @_);
}
sub zip
{
- my $obj = createSelfTiedObject(undef, \$ZipError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$ZipError);
return $obj->_def(@_);
}
@@ -114,30 +114,30 @@ sub mkComp
if (*$self->{ZipData}{Method} == ZIP_CM_STORE) {
($obj, $errstr, $errno) = IO::Compress::Adapter::Identity::mkCompObject(
- $got->value('Level'),
- $got->value('Strategy')
+ $got->getValue('level'),
+ $got->getValue('strategy')
);
*$self->{ZipData}{CRC32} = Compress::Raw::Zlib::crc32(undef);
}
elsif (*$self->{ZipData}{Method} == ZIP_CM_DEFLATE) {
($obj, $errstr, $errno) = IO::Compress::Adapter::Deflate::mkCompObject(
- $got->value('CRC32'),
- $got->value('Adler32'),
- $got->value('Level'),
- $got->value('Strategy')
+ $got->getValue('crc32'),
+ $got->getValue('adler32'),
+ $got->getValue('level'),
+ $got->getValue('strategy')
);
}
elsif (*$self->{ZipData}{Method} == ZIP_CM_BZIP2) {
($obj, $errstr, $errno) = IO::Compress::Adapter::Bzip2::mkCompObject(
- $got->value('BlockSize100K'),
- $got->value('WorkFactor'),
- $got->value('Verbosity')
+ $got->getValue('blocksize100k'),
+ $got->getValue('workfactor'),
+ $got->getValue('verbosity')
);
*$self->{ZipData}{CRC32} = Compress::Raw::Zlib::crc32(undef);
}
elsif (*$self->{ZipData}{Method} == ZIP_CM_LZMA) {
- ($obj, $errstr, $errno) = IO::Compress::Adapter::Lzma::mkRawZipCompObject($got->value('Preset'),
- $got->value('Extreme'),
+ ($obj, $errstr, $errno) = IO::Compress::Adapter::Lzma::mkRawZipCompObject($got->getValue('preset'),
+ $got->getValue('extreme'),
);
*$self->{ZipData}{CRC32} = Compress::Raw::Zlib::crc32(undef);
}
@@ -230,39 +230,38 @@ sub mkHeader
my $self = shift;
my $param = shift ;
-
*$self->{ZipData}{LocalHdrOffset} = U64::clone(*$self->{ZipData}{Offset});
-
+
my $comment = '';
- $comment = $param->value('Comment') || '';
+ $comment = $param->valueOrDefault('comment') ;
my $filename = '';
- $filename = $param->value('Name') || '';
+ $filename = $param->valueOrDefault('name') ;
$filename = canonicalName($filename)
- if length $filename && $param->value('CanonicalName') ;
+ if length $filename && $param->getValue('canonicalname') ;
if (defined *$self->{ZipData}{FilterName} ) {
local *_ = \$filename ;
&{ *$self->{ZipData}{FilterName} }() ;
}
-# if ( $param->value('UTF8') ) {
+# if ( $param->getValue('utf8') ) {
# require Encode ;
# $filename = Encode::encode_utf8($filename)
# if length $filename ;
-# $comment = Encode::encode_utf8($filename)
+# $comment = Encode::encode_utf8($comment)
# if length $comment ;
# }
my $hdr = '';
- my $time = _unixToDosTime($param->value('Time'));
+ my $time = _unixToDosTime($param->getValue('time'));
my $extra = '';
my $ctlExtra = '';
my $empty = 0;
- my $osCode = $param->value('OS_Code') ;
+ my $osCode = $param->getValue('os_code') ;
my $extFileAttr = 0 ;
# This code assumes Unix.
@@ -271,7 +270,7 @@ sub mkHeader
if $osCode == ZIP_OS_CODE_UNIX ;
if (*$self->{ZipData}{Zip64}) {
- $empty = MAX32;
+ $empty = IO::Compress::Base::Common::MAX32;
my $x = '';
$x .= pack "V V", 0, 0 ; # uncompressedLength
@@ -279,40 +278,40 @@ sub mkHeader
$extra .= IO::Compress::Zlib::Extra::mkSubField(ZIP_EXTRA_ID_ZIP64, $x);
}
- if (! $param->value('Minimal')) {
- if ($param->parsed('MTime'))
+ if (! $param->getValue('minimal')) {
+ if ($param->parsed('mtime'))
{
- $extra .= mkExtendedTime($param->value('MTime'),
- $param->value('ATime'),
- $param->value('CTime'));
+ $extra .= mkExtendedTime($param->getValue('mtime'),
+ $param->getValue('atime'),
+ $param->getValue('ctime'));
- $ctlExtra .= mkExtendedTime($param->value('MTime'));
+ $ctlExtra .= mkExtendedTime($param->getValue('mtime'));
}
if ( $osCode == ZIP_OS_CODE_UNIX )
{
- if ( $param->value('want_exUnixN') )
+ if ( $param->getValue('want_exunixn') )
{
- my $ux3 = mkUnixNExtra( @{ $param->value('want_exUnixN') });
+ my $ux3 = mkUnixNExtra( @{ $param->getValue('want_exunixn') });
$extra .= $ux3;
$ctlExtra .= $ux3;
}
- if ( $param->value('exUnix2') )
+ if ( $param->getValue('exunix2') )
{
- $extra .= mkUnix2Extra( @{ $param->value('exUnix2') });
+ $extra .= mkUnix2Extra( @{ $param->getValue('exunix2') });
$ctlExtra .= mkUnix2Extra();
}
}
- $extFileAttr = $param->value('ExtAttr')
- if defined $param->value('ExtAttr') ;
+ $extFileAttr = $param->getValue('extattr')
+ if defined $param->getValue('extattr') ;
- $extra .= $param->value('ExtraFieldLocal')
- if defined $param->value('ExtraFieldLocal');
+ $extra .= $param->getValue('extrafieldlocal')
+ if defined $param->getValue('extrafieldlocal');
- $ctlExtra .= $param->value('ExtraFieldCentral')
- if defined $param->value('ExtraFieldCentral');
+ $ctlExtra .= $param->getValue('extrafieldcentral')
+ if defined $param->getValue('extrafieldcentral');
}
my $method = *$self->{ZipData}{Method} ;
@@ -323,14 +322,14 @@ sub mkHeader
$gpFlag |= ZIP_GP_FLAG_LZMA_EOS_PRESENT
if $method == ZIP_CM_LZMA ;
- #$gpFlag |= ZIP_GP_FLAG_LANGUAGE_ENCODING
- #if $param->value('UTF8') && length($filename) + length($comment);
+# $gpFlag |= ZIP_GP_FLAG_LANGUAGE_ENCODING
+# if $param->getValue('utf8') && (length($filename) || length($comment));
my $version = $ZIP_CM_MIN_VERSIONS{$method};
$version = ZIP64_MIN_VERSION
if ZIP64_MIN_VERSION > $version && *$self->{ZipData}{Zip64};
- my $madeBy = ($param->value('OS_Code') << 8) + $version;
+ my $madeBy = ($param->getValue('os_code') << 8) + $version;
my $extract = $version;
*$self->{ZipData}{Version} = $version;
@@ -338,7 +337,7 @@ sub mkHeader
my $ifa = 0;
$ifa |= ZIP_IFA_TEXT_MASK
- if $param->value('TextFlag');
+ if $param->getValue('textflag');
$hdr .= pack "V", ZIP_LOCAL_HDR_SIG ; # signature
$hdr .= pack 'v', $extract ; # extract Version & OS
@@ -391,7 +390,7 @@ sub mkHeader
# offset to local hdr
if (*$self->{ZipData}{LocalHdrOffset}->is64bit() ) {
- $ctl .= pack 'V', MAX32 ;
+ $ctl .= pack 'V', IO::Compress::Base::Common::MAX32 ;
}
else {
$ctl .= *$self->{ZipData}{LocalHdrOffset}->getPacked_V32() ;
@@ -401,7 +400,7 @@ sub mkHeader
$ctl .= $ctlExtra ;
$ctl .= $comment ;
- *$self->{ZipData}{Offset}->add(length $hdr) ;
+ *$self->{ZipData}{Offset}->add32(length $hdr) ;
*$self->{ZipData}{CentralHeader} = $ctl;
@@ -489,7 +488,7 @@ sub mkTrailer
*$self->{ZipData}{AnyZip64} = 1;
}
- *$self->{ZipData}{Offset}->add(length($hdr));
+ *$self->{ZipData}{Offset}->add32(length($hdr));
*$self->{ZipData}{Offset}->add( *$self->{CompSize} );
push @{ *$self->{ZipData}{CentralDir} }, $ctl ;
@@ -499,13 +498,17 @@ sub mkTrailer
sub mkFinalTrailer
{
my $self = shift ;
-
+
my $comment = '';
$comment = *$self->{ZipData}{ZipComment} ;
my $cd_offset = *$self->{ZipData}{Offset}->get32bit() ; # offset to start central dir
my $entries = @{ *$self->{ZipData}{CentralDir} };
+
+ *$self->{ZipData}{AnyZip64} = 1
+ if *$self->{ZipData}{Offset}->is64bit || $entries >= 0xFFFF ;
+
my $cd = join '', @{ *$self->{ZipData}{CentralDir} };
my $cd_len = length $cd ;
@@ -528,15 +531,15 @@ sub mkFinalTrailer
. U64::pack_V64(length $z64e)
. $z64e ;
- *$self->{ZipData}{Offset}->add(length $cd) ;
+ *$self->{ZipData}{Offset}->add32(length $cd) ;
$z64e .= pack "V", ZIP64_END_CENTRAL_LOC_HDR_SIG; # signature
$z64e .= pack 'V', 0 ; # number of disk with central dir
$z64e .= *$self->{ZipData}{Offset}->getPacked_V64() ; # offset to end zip64 central dir
$z64e .= pack 'V', 1 ; # Total number of disks
- $cd_offset = MAX32 ;
- $cd_len = MAX32 if isGeMax32 $cd_len ;
+ $cd_offset = IO::Compress::Base::Common::MAX32 ;
+ $cd_len = IO::Compress::Base::Common::MAX32 if IO::Compress::Base::Common::isGeMax32 $cd_len ;
$entries = 0xFFFF if $entries >= 0xFFFF ;
}
@@ -559,47 +562,47 @@ sub ckParams
my $self = shift ;
my $got = shift;
- $got->value('CRC32' => 1);
+ $got->setValue('crc32' => 1);
- if (! $got->parsed('Time') ) {
+ if (! $got->parsed('time') ) {
# Modification time defaults to now.
- $got->value('Time' => time) ;
+ $got->setValue('time' => time) ;
}
- if ($got->parsed('exTime') ) {
- my $timeRef = $got->value('exTime');
+ if ($got->parsed('extime') ) {
+ my $timeRef = $got->getValue('extime');
if ( defined $timeRef) {
return $self->saveErrorString(undef, "exTime not a 3-element array ref")
if ref $timeRef ne 'ARRAY' || @$timeRef != 3;
}
- $got->value("MTime", $timeRef->[1]);
- $got->value("ATime", $timeRef->[0]);
- $got->value("CTime", $timeRef->[2]);
+ $got->setValue("mtime", $timeRef->[1]);
+ $got->setValue("atime", $timeRef->[0]);
+ $got->setValue("ctime", $timeRef->[2]);
}
# Unix2/3 Extended Attribute
- for my $name (qw(exUnix2 exUnixN))
+ for my $name (qw(exunix2 exunixn))
{
if ($got->parsed($name) ) {
- my $idRef = $got->value($name);
+ my $idRef = $got->getValue($name);
if ( defined $idRef) {
return $self->saveErrorString(undef, "$name not a 2-element array ref")
if ref $idRef ne 'ARRAY' || @$idRef != 2;
}
- $got->value("UID", $idRef->[0]);
- $got->value("GID", $idRef->[1]);
- $got->value("want_$name", $idRef);
+ $got->setValue("uid", $idRef->[0]);
+ $got->setValue("gid", $idRef->[1]);
+ $got->setValue("want_$name", $idRef);
}
}
*$self->{ZipData}{AnyZip64} = 1
- if $got->value('Zip64');
- *$self->{ZipData}{Zip64} = $got->value('Zip64');
- *$self->{ZipData}{Stream} = $got->value('Stream');
+ if $got->getValue('zip64');
+ *$self->{ZipData}{Zip64} = $got->getValue('zip64');
+ *$self->{ZipData}{Stream} = $got->getValue('stream');
- my $method = $got->value('Method');
+ my $method = $got->getValue('method');
return $self->saveErrorString(undef, "Unknown Method '$method'")
if ! defined $ZIP_CM_MIN_VERSIONS{$method};
@@ -613,17 +616,17 @@ sub ckParams
*$self->{ZipData}{Method} = $method;
- *$self->{ZipData}{ZipComment} = $got->value('ZipComment') ;
+ *$self->{ZipData}{ZipComment} = $got->getValue('zipcomment') ;
- for my $name (qw( ExtraFieldLocal ExtraFieldCentral ))
+ for my $name (qw( extrafieldlocal extrafieldcentral ))
{
- my $data = $got->value($name) ;
+ my $data = $got->getValue($name) ;
if (defined $data) {
my $bad = IO::Compress::Zlib::Extra::parseExtraField($data, 1, 0) ;
return $self->saveErrorString(undef, "Error with $name Parameter: $bad")
if $bad ;
- $got->value($name, $data) ;
+ $got->setValue($name, $data) ;
}
}
@@ -631,13 +634,13 @@ sub ckParams
if defined $IO::Compress::Bzip2::VERSION
and ! IO::Compress::Bzip2::ckParams($self, $got);
- if ($got->parsed('Sparse') ) {
- *$self->{ZipData}{Sparse} = $got->value('Sparse') ;
+ if ($got->parsed('sparse') ) {
+ *$self->{ZipData}{Sparse} = $got->getValue('sparse') ;
*$self->{ZipData}{Method} = ZIP_CM_STORE;
}
- if ($got->parsed('FilterName')) {
- my $v = $got->value('FilterName') ;
+ if ($got->parsed('filtername')) {
+ my $v = $got->getValue('filtername') ;
*$self->{ZipData}{FilterName} = $v
if ref $v eq 'CODE' ;
}
@@ -660,58 +663,53 @@ sub outputPayload
# return $self->mkHeader(*$self->{Got});
#}
-sub getExtraParams
-{
- my $self = shift ;
-
- use IO::Compress::Base::Common 2.048 qw(:Parse);
- use Compress::Raw::Zlib 2.048 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
- my @Bzip2 = ();
-
- @Bzip2 = IO::Compress::Bzip2::getExtraParams($self)
- if defined $IO::Compress::Bzip2::VERSION;
-
- return (
- # zlib behaviour
- $self->getZlibParams(),
-
- 'Stream' => [1, 1, Parse_boolean, 1],
- #'Store' => [0, 1, Parse_boolean, 0],
- 'Method' => [0, 1, Parse_unsigned, ZIP_CM_DEFLATE],
+our %PARAMS = (
+ 'stream' => [IO::Compress::Base::Common::Parse_boolean, 1],
+ #'store' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'method' => [IO::Compress::Base::Common::Parse_unsigned, ZIP_CM_DEFLATE],
# # Zip header fields
- 'Minimal' => [0, 1, Parse_boolean, 0],
- 'Zip64' => [0, 1, Parse_boolean, 0],
- 'Comment' => [0, 1, Parse_any, ''],
- 'ZipComment'=> [0, 1, Parse_any, ''],
- 'Name' => [0, 1, Parse_any, ''],
- 'FilterName'=> [0, 1, Parse_code, undef],
- 'CanonicalName'=> [0, 1, Parse_boolean, 0],
- #'UTF8' => [0, 1, Parse_boolean, 0],
- 'Time' => [0, 1, Parse_any, undef],
- 'exTime' => [0, 1, Parse_any, undef],
- 'exUnix2' => [0, 1, Parse_any, undef],
- 'exUnixN' => [0, 1, Parse_any, undef],
- 'ExtAttr' => [0, 1, Parse_any,
+ 'minimal' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'zip64' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'comment' => [IO::Compress::Base::Common::Parse_any, ''],
+ 'zipcomment'=> [IO::Compress::Base::Common::Parse_any, ''],
+ 'name' => [IO::Compress::Base::Common::Parse_any, ''],
+ 'filtername'=> [IO::Compress::Base::Common::Parse_code, undef],
+ 'canonicalname'=> [IO::Compress::Base::Common::Parse_boolean, 0],
+# 'utf8' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'time' => [IO::Compress::Base::Common::Parse_any, undef],
+ 'extime' => [IO::Compress::Base::Common::Parse_any, undef],
+ 'exunix2' => [IO::Compress::Base::Common::Parse_any, undef],
+ 'exunixn' => [IO::Compress::Base::Common::Parse_any, undef],
+ 'extattr' => [IO::Compress::Base::Common::Parse_any,
$Compress::Raw::Zlib::gzip_os_code == 3
? 0100644 << 16
: 0],
- 'OS_Code' => [0, 1, Parse_unsigned, $Compress::Raw::Zlib::gzip_os_code],
+ 'os_code' => [IO::Compress::Base::Common::Parse_unsigned, $Compress::Raw::Zlib::gzip_os_code],
- 'TextFlag' => [0, 1, Parse_boolean, 0],
- 'ExtraFieldLocal' => [0, 1, Parse_any, undef],
- 'ExtraFieldCentral'=> [0, 1, Parse_any, undef],
+ 'textflag' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'extrafieldlocal' => [IO::Compress::Base::Common::Parse_any, undef],
+ 'extrafieldcentral'=> [IO::Compress::Base::Common::Parse_any, undef],
# Lzma
- 'Preset' => [0, 1, Parse_unsigned, 6],
- 'Extreme' => [1, 1, Parse_boolean, 0],
+ 'preset' => [IO::Compress::Base::Common::Parse_unsigned, 6],
+ 'extreme' => [IO::Compress::Base::Common::Parse_boolean, 0],
# For internal use only
- 'Sparse' => [0, 1, Parse_unsigned, 0],
+ 'sparse' => [IO::Compress::Base::Common::Parse_unsigned, 0],
- @Bzip2,
- );
+ IO::Compress::RawDeflate::getZlibParams(),
+ defined $IO::Compress::Bzip2::VERSION
+ ? IO::Compress::Bzip2::getExtraParams()
+ : ()
+
+
+ );
+
+sub getExtraParams
+{
+ return %PARAMS ;
}
sub getInverseClass
@@ -726,16 +724,16 @@ sub getFileInfo
my $params = shift;
my $filename = shift ;
- if (isaScalar($filename))
+ if (IO::Compress::Base::Common::isaScalar($filename))
{
- $params->value(Zip64 => 1)
- if isGeMax32 length (${ $filename }) ;
+ $params->setValue(zip64 => 1)
+ if IO::Compress::Base::Common::isGeMax32 length (${ $filename }) ;
return ;
}
my ($mode, $uid, $gid, $size, $atime, $mtime, $ctime) ;
- if ( $params->parsed('StoreLinks') )
+ if ( $params->parsed('storelinks') )
{
($mode, $uid, $gid, $size, $atime, $mtime, $ctime)
= (lstat($filename))[2, 4,5,7, 8,9,10] ;
@@ -746,40 +744,40 @@ sub getFileInfo
= (stat($filename))[2, 4,5,7, 8,9,10] ;
}
- $params->value(TextFlag => -T $filename )
- if ! $params->parsed('TextFlag');
+ $params->setValue(textflag => -T $filename )
+ if ! $params->parsed('textflag');
- $params->value(Zip64 => 1)
- if isGeMax32 $size ;
+ $params->setValue(zip64 => 1)
+ if IO::Compress::Base::Common::isGeMax32 $size ;
- $params->value('Name' => $filename)
- if ! $params->parsed('Name') ;
+ $params->setValue('name' => $filename)
+ if ! $params->parsed('name') ;
- $params->value('Time' => $mtime)
- if ! $params->parsed('Time') ;
+ $params->setValue('time' => $mtime)
+ if ! $params->parsed('time') ;
- if ( ! $params->parsed('exTime'))
+ if ( ! $params->parsed('extime'))
{
- $params->value('MTime' => $mtime) ;
- $params->value('ATime' => $atime) ;
- $params->value('CTime' => undef) ; # No Creation time
+ $params->setValue('mtime' => $mtime) ;
+ $params->setValue('atime' => $atime) ;
+ $params->setValue('ctime' => undef) ; # No Creation time
# TODO - see if can fillout creation time on non-Unix
}
# NOTE - Unix specific code alert
- if (! $params->parsed('ExtAttr'))
+ if (! $params->parsed('extattr'))
{
use Fcntl qw(:mode) ;
my $attr = $mode << 16;
$attr |= ZIP_A_RONLY if ($mode & S_IWRITE) == 0 ;
$attr |= ZIP_A_DIR if ($mode & S_IFMT ) == S_IFDIR ;
- $params->value('ExtAttr' => $attr);
+ $params->setValue('extattr' => $attr);
}
- $params->value('want_exUnixN', [$uid, $gid]);
- $params->value('UID' => $uid) ;
- $params->value('GID' => $gid) ;
+ $params->setValue('want_exunixn', [$uid, $gid]);
+ $params->setValue('uid' => $uid) ;
+ $params->setValue('gid' => $gid) ;
}
@@ -936,19 +934,20 @@ section.
use IO::Compress::Zip qw(zip $ZipError) ;
- zip $input => $output [,OPTS]
+ zip $input_filename_or_reference => $output_filename_or_reference [,OPTS]
or die "zip failed: $ZipError\n";
The functional interface needs Perl5.005 or better.
=head2 zip $input => $output [, OPTS]
-C<zip> expects at least two parameters, C<$input> and C<$output>.
+C<zip> expects at least two parameters,
+C<$input_filename_or_reference> and C<$output_filename_or_reference>.
-=head3 The C<$input> parameter
+=head3 The C<$input_filename_or_reference> parameter
-The parameter, C<$input>, is used to define the source of
-the uncompressed data.
+The parameter, C<$input_filename_or_reference>, is used to define the
+source of the uncompressed data.
It can take one of the following forms:
@@ -956,25 +955,25 @@ It can take one of the following forms:
=item A filename
-If the C<$input> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for reading and the input data
-will be read from it.
+If the <$input_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for reading and the
+input data will be read from it.
=item A filehandle
-If the C<$input> parameter is a filehandle, the input data will be
-read from it.
-The string '-' can be used as an alias for standard input.
+If the C<$input_filename_or_reference> parameter is a filehandle, the input
+data will be read from it. The string '-' can be used as an alias for
+standard input.
=item A scalar reference
-If C<$input> is a scalar reference, the input data will be read
-from C<$$input>.
+If C<$input_filename_or_reference> is a scalar reference, the input data
+will be read from C<$$input_filename_or_reference>.
=item An array reference
-If C<$input> is an array reference, each element in the array must be a
-filename.
+If C<$input_filename_or_reference> is an array reference, each element in
+the array must be a filename.
The input data will be read from each file in turn.
@@ -983,72 +982,80 @@ contains valid filenames before any data is compressed.
=item An Input FileGlob string
-If C<$input> is a string that is delimited by the characters "<" and ">"
-C<zip> will assume that it is an I<input fileglob string>. The
-input is the list of files that match the fileglob.
+If C<$input_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<zip> will assume that it is an
+I<input fileglob string>. The input is the list of files that match the
+fileglob.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$input> parameter is any other type, C<undef> will be returned.
+If the C<$input_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
-In addition, if C<$input> is a simple filename, the default values for
+In addition, if C<$input_filename_or_reference> is a simple filename,
+the default values for
the C<Name>, C<Time>, C<TextFlag>, C<ExtAttr>, C<exUnixN> and C<exTime> options will be sourced from that file.
If you do not want to use these defaults they can be overridden by
explicitly setting the C<Name>, C<Time>, C<TextFlag>, C<ExtAttr>, C<exUnixN> and C<exTime> options or by setting the
C<Minimal> parameter.
-=head3 The C<$output> parameter
+=head3 The C<$output_filename_or_reference> parameter
-The parameter C<$output> is used to control the destination of the
-compressed data. This parameter can take one of these forms.
+The parameter C<$output_filename_or_reference> is used to control the
+destination of the compressed data. This parameter can take one of
+these forms.
=over 5
=item A filename
-If the C<$output> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for writing and the compressed
-data will be written to it.
+If the C<$output_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for writing and the
+compressed data will be written to it.
=item A filehandle
-If the C<$output> parameter is a filehandle, the compressed data
-will be written to it.
-The string '-' can be used as an alias for standard output.
+If the C<$output_filename_or_reference> parameter is a filehandle, the
+compressed data will be written to it. The string '-' can be used as
+an alias for standard output.
=item A scalar reference
-If C<$output> is a scalar reference, the compressed data will be
-stored in C<$$output>.
+If C<$output_filename_or_reference> is a scalar reference, the
+compressed data will be stored in C<$$output_filename_or_reference>.
=item An Array Reference
-If C<$output> is an array reference, the compressed data will be
-pushed onto the array.
+If C<$output_filename_or_reference> is an array reference,
+the compressed data will be pushed onto the array.
=item An Output FileGlob
-If C<$output> is a string that is delimited by the characters "<" and ">"
-C<zip> will assume that it is an I<output fileglob string>. The
-output is the list of files that match the fileglob.
+If C<$output_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<zip> will assume that it is an
+I<output fileglob string>. The output is the list of files that match the
+fileglob.
-When C<$output> is an fileglob string, C<$input> must also be a fileglob
-string. Anything else is an error.
+When C<$output_filename_or_reference> is an fileglob string,
+C<$input_filename_or_reference> must also be a fileglob string. Anything
+else is an error.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$output> parameter is any other type, C<undef> will be returned.
+If the C<$output_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
=head2 Notes
-When C<$input> maps to multiple files/buffers and C<$output> is a single
+When C<$input_filename_or_reference> maps to multiple files/buffers and
+C<$output_filename_or_reference> is a single
file/buffer the input files/buffers will each be stored
-in C<$output> as a distinct entry.
+in C<$output_filename_or_reference> as a distinct entry.
=head2 Optional Parameters
@@ -1463,7 +1470,8 @@ The default is 1.
=item C<< Zip64 => 0|1 >>
Create a Zip64 zip file/buffer. This option is used if you want
-to store files larger than 4 Gig.
+to store files larger than 4 Gig or store more than 64K files in a single
+zip archive..
C<Zip64> will be automatically set, as needed, if working with the one-shot
interface when the input is either a filename or a scalar reference.
@@ -1489,6 +1497,7 @@ the file contains text.
The default is 0.
=item C<< ExtraFieldLocal => $data >>
+
=item C<< ExtraFieldCentral => $data >>
The C<ExtraFieldLocal> option is used to store additional metadata in the
@@ -1944,7 +1953,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm
index 8db079cb93d..64cfc2685c6 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm
@@ -7,7 +7,7 @@ require Exporter;
our ($VERSION, @ISA, @EXPORT, %ZIP_CM_MIN_VERSIONS);
-$VERSION = '2.048';
+$VERSION = '2.060';
@ISA = qw(Exporter);
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm
index 992b1b925f2..328fc4aa8e6 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm
@@ -9,7 +9,7 @@ require Exporter;
our ($VERSION, @ISA, @EXPORT);
-$VERSION = '2.048';
+$VERSION = '2.060';
@ISA = qw(Exporter);
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm
index 9e0be2e4b6c..d320dccabd4 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm
@@ -8,9 +8,9 @@ use bytes;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS);
-$VERSION = '2.048';
+$VERSION = '2.060';
-use IO::Compress::Gzip::Constants 2.048 ;
+use IO::Compress::Gzip::Constants 2.060 ;
sub ExtraFieldError
{
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm
index 516c5dda4f0..c35601cd3d2 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm
@@ -4,12 +4,12 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.048 qw(:Status);
+use IO::Compress::Base::Common 2.060 qw(:Status);
-use Compress::Raw::Bzip2 2.048 ;
+use Compress::Raw::Bzip2 2.060 ;
our ($VERSION, @ISA);
-$VERSION = '2.048';
+$VERSION = '2.060';
sub mkUncompObject
{
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm
index 5d74d042124..5c63b5ccbd2 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Identity.pm
@@ -4,14 +4,14 @@ use warnings;
use strict;
use bytes;
-use IO::Compress::Base::Common 2.048 qw(:Status);
+use IO::Compress::Base::Common 2.060 qw(:Status);
use IO::Compress::Zip::Constants ;
our ($VERSION);
-$VERSION = '2.048';
+$VERSION = '2.060';
-use Compress::Raw::Zlib 2.048 ();
+use Compress::Raw::Zlib 2.060 ();
sub mkUncompObject
{
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Inflate.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Inflate.pm
index c0f3542a98a..5d8e1a326d3 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Inflate.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Adapter/Inflate.pm
@@ -2,13 +2,13 @@ package IO::Uncompress::Adapter::Inflate;
use strict;
use warnings;
-use bytes;
+#use bytes;
-use IO::Compress::Base::Common 2.048 qw(:Status);
-use Compress::Raw::Zlib 2.048 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
+use IO::Compress::Base::Common 2.060 qw(:Status);
+use Compress::Raw::Zlib 2.060 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
our ($VERSION);
-$VERSION = '2.048';
+$VERSION = '2.060';
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm
index a6ab437159a..14c695f0d44 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm
@@ -6,22 +6,22 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.048 qw(createSelfTiedObject);
+use IO::Compress::Base::Common 2.060 ();
-use IO::Uncompress::Adapter::Inflate 2.048 ();
+use IO::Uncompress::Adapter::Inflate 2.060 ();
-use IO::Uncompress::Base 2.048 ;
-use IO::Uncompress::Gunzip 2.048 ;
-use IO::Uncompress::Inflate 2.048 ;
-use IO::Uncompress::RawInflate 2.048 ;
-use IO::Uncompress::Unzip 2.048 ;
+use IO::Uncompress::Base 2.060 ;
+use IO::Uncompress::Gunzip 2.060 ;
+use IO::Uncompress::Inflate 2.060 ;
+use IO::Uncompress::RawInflate 2.060 ;
+use IO::Uncompress::Unzip 2.060 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyInflateError);
-$VERSION = '2.048';
+$VERSION = '2.060';
$AnyInflateError = '';
@ISA = qw( Exporter IO::Uncompress::Base );
@@ -36,20 +36,20 @@ Exporter::export_ok_tags('all');
sub new
{
my $class = shift ;
- my $obj = createSelfTiedObject($class, \$AnyInflateError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$AnyInflateError);
$obj->_create(undef, 0, @_);
}
sub anyinflate
{
- my $obj = createSelfTiedObject(undef, \$AnyInflateError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$AnyInflateError);
return $obj->_inf(@_) ;
}
sub getExtraParams
{
- use IO::Compress::Base::Common 2.048 qw(:Parse);
- return ( 'RawInflate' => [1, 1, Parse_boolean, 0] ) ;
+ use IO::Compress::Base::Common 2.060 qw(:Parse);
+ return ( 'rawinflate' => [Parse_boolean, 0] ) ;
}
sub ckParams
@@ -58,8 +58,8 @@ sub ckParams
my $got = shift ;
# any always needs both crc32 and adler32
- $got->value('CRC32' => 1);
- $got->value('ADLER32' => 1);
+ $got->setValue('crc32' => 1);
+ $got->setValue('adler32' => 1);
return 1;
}
@@ -78,7 +78,7 @@ sub mkUncomp
my @possible = qw( Inflate Gunzip Unzip );
unshift @possible, 'RawInflate'
- if 1 || $got->value('RawInflate');
+ if 1 || $got->getValue('rawinflate');
my $magic = $self->ckMagic( @possible );
@@ -205,19 +205,20 @@ section.
use IO::Uncompress::AnyInflate qw(anyinflate $AnyInflateError) ;
- anyinflate $input => $output [,OPTS]
+ anyinflate $input_filename_or_reference => $output_filename_or_reference [,OPTS]
or die "anyinflate failed: $AnyInflateError\n";
The functional interface needs Perl5.005 or better.
=head2 anyinflate $input => $output [, OPTS]
-C<anyinflate> expects at least two parameters, C<$input> and C<$output>.
+C<anyinflate> expects at least two parameters,
+C<$input_filename_or_reference> and C<$output_filename_or_reference>.
-=head3 The C<$input> parameter
+=head3 The C<$input_filename_or_reference> parameter
-The parameter, C<$input>, is used to define the source of
-the compressed data.
+The parameter, C<$input_filename_or_reference>, is used to define the
+source of the compressed data.
It can take one of the following forms:
@@ -225,25 +226,25 @@ It can take one of the following forms:
=item A filename
-If the C<$input> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for reading and the input data
-will be read from it.
+If the <$input_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for reading and the
+input data will be read from it.
=item A filehandle
-If the C<$input> parameter is a filehandle, the input data will be
-read from it.
-The string '-' can be used as an alias for standard input.
+If the C<$input_filename_or_reference> parameter is a filehandle, the input
+data will be read from it. The string '-' can be used as an alias for
+standard input.
=item A scalar reference
-If C<$input> is a scalar reference, the input data will be read
-from C<$$input>.
+If C<$input_filename_or_reference> is a scalar reference, the input data
+will be read from C<$$input_filename_or_reference>.
=item An array reference
-If C<$input> is an array reference, each element in the array must be a
-filename.
+If C<$input_filename_or_reference> is an array reference, each element in
+the array must be a filename.
The input data will be read from each file in turn.
@@ -252,64 +253,71 @@ contains valid filenames before any data is uncompressed.
=item An Input FileGlob string
-If C<$input> is a string that is delimited by the characters "<" and ">"
-C<anyinflate> will assume that it is an I<input fileglob string>. The
-input is the list of files that match the fileglob.
+If C<$input_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<anyinflate> will assume that it is an
+I<input fileglob string>. The input is the list of files that match the
+fileglob.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$input> parameter is any other type, C<undef> will be returned.
+If the C<$input_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
-=head3 The C<$output> parameter
+=head3 The C<$output_filename_or_reference> parameter
-The parameter C<$output> is used to control the destination of the
-uncompressed data. This parameter can take one of these forms.
+The parameter C<$output_filename_or_reference> is used to control the
+destination of the uncompressed data. This parameter can take one of
+these forms.
=over 5
=item A filename
-If the C<$output> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for writing and the uncompressed
-data will be written to it.
+If the C<$output_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for writing and the
+uncompressed data will be written to it.
=item A filehandle
-If the C<$output> parameter is a filehandle, the uncompressed data
-will be written to it.
-The string '-' can be used as an alias for standard output.
+If the C<$output_filename_or_reference> parameter is a filehandle, the
+uncompressed data will be written to it. The string '-' can be used as
+an alias for standard output.
=item A scalar reference
-If C<$output> is a scalar reference, the uncompressed data will be
-stored in C<$$output>.
+If C<$output_filename_or_reference> is a scalar reference, the
+uncompressed data will be stored in C<$$output_filename_or_reference>.
=item An Array Reference
-If C<$output> is an array reference, the uncompressed data will be
-pushed onto the array.
+If C<$output_filename_or_reference> is an array reference,
+the uncompressed data will be pushed onto the array.
=item An Output FileGlob
-If C<$output> is a string that is delimited by the characters "<" and ">"
-C<anyinflate> will assume that it is an I<output fileglob string>. The
-output is the list of files that match the fileglob.
+If C<$output_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<anyinflate> will assume that it is an
+I<output fileglob string>. The output is the list of files that match the
+fileglob.
-When C<$output> is an fileglob string, C<$input> must also be a fileglob
-string. Anything else is an error.
+When C<$output_filename_or_reference> is an fileglob string,
+C<$input_filename_or_reference> must also be a fileglob string. Anything
+else is an error.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$output> parameter is any other type, C<undef> will be returned.
+If the C<$output_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
=head2 Notes
-When C<$input> maps to multiple compressed files/buffers and C<$output> is
-a single file/buffer, after uncompression C<$output> will contain a
+When C<$input_filename_or_reference> maps to multiple compressed
+files/buffers and C<$output_filename_or_reference> is
+a single file/buffer, after uncompression C<$output_filename_or_reference> will contain a
concatenation of all the uncompressed data from each of the input
files/buffers.
@@ -507,7 +515,7 @@ The string '-' can be used as an alias for standard input.
=item A scalar reference
If C<$input> is a scalar reference, the compressed data will be read from
-C<$$output>.
+C<$$input>.
=back
@@ -799,6 +807,13 @@ Provides a sub-set of the C<seek> functionality, with the restriction
that it is only legal to seek forward in the input file/buffer.
It is a fatal error to attempt to seek backward.
+Note that the implementation of C<seek> in this module does not provide
+true random access to a compressed file/buffer. It works by uncompressing
+data from the current offset in the file/buffer until it reaches the
+ucompressed offset specified in the parameters to C<seek>. For very small
+files this may be acceptable behaviour. For large files it may cause an
+unacceptable delay.
+
The C<$whence> parameter takes one the usual values, namely SEEK_SET,
SEEK_CUR or SEEK_END.
@@ -945,7 +960,7 @@ Same as doing this
=head2 Working with Net::FTP
-See L<IO::Uncompress::AnyInflate::FAQ|IO::Uncompress::AnyInflate::FAQ/"Compressed files and Net::FTP">
+See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
=head1 SEE ALSO
@@ -980,7 +995,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/AnyUncompress.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/AnyUncompress.pm
index d9a48e6a240..a202763c0a5 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/AnyUncompress.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/AnyUncompress.pm
@@ -4,16 +4,16 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.048 qw(createSelfTiedObject);
+use IO::Compress::Base::Common 2.060 ();
-use IO::Uncompress::Base 2.048 ;
+use IO::Uncompress::Base 2.060 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyUncompressError);
-$VERSION = '2.048';
+$VERSION = '2.060';
$AnyUncompressError = '';
@ISA = qw( Exporter IO::Uncompress::Base );
@@ -27,42 +27,41 @@ Exporter::export_ok_tags('all');
BEGIN
{
- eval ' use IO::Uncompress::Adapter::Inflate 2.048 ;';
- eval ' use IO::Uncompress::Adapter::Bunzip2 2.048 ;';
- eval ' use IO::Uncompress::Adapter::LZO 2.048 ;';
- eval ' use IO::Uncompress::Adapter::Lzf 2.048 ;';
- eval ' use IO::Uncompress::Adapter::UnLzma 2.048 ;';
- eval ' use IO::Uncompress::Adapter::UnXz 2.048 ;';
-
- eval ' use IO::Uncompress::Bunzip2 2.048 ;';
- eval ' use IO::Uncompress::UnLzop 2.048 ;';
- eval ' use IO::Uncompress::Gunzip 2.048 ;';
- eval ' use IO::Uncompress::Inflate 2.048 ;';
- eval ' use IO::Uncompress::RawInflate 2.048 ;';
- eval ' use IO::Uncompress::Unzip 2.048 ;';
- eval ' use IO::Uncompress::UnLzf 2.048 ;';
- eval ' use IO::Uncompress::UnLzma 2.048 ;';
- eval ' use IO::Uncompress::UnXz 2.048 ;';
+ eval ' use IO::Uncompress::Adapter::Inflate 2.060 ;';
+ eval ' use IO::Uncompress::Adapter::Bunzip2 2.060 ;';
+ eval ' use IO::Uncompress::Adapter::LZO 2.060 ;';
+ eval ' use IO::Uncompress::Adapter::Lzf 2.060 ;';
+ eval ' use IO::Uncompress::Adapter::UnLzma 2.060 ;';
+ eval ' use IO::Uncompress::Adapter::UnXz 2.060 ;';
+
+ eval ' use IO::Uncompress::Bunzip2 2.060 ;';
+ eval ' use IO::Uncompress::UnLzop 2.060 ;';
+ eval ' use IO::Uncompress::Gunzip 2.060 ;';
+ eval ' use IO::Uncompress::Inflate 2.060 ;';
+ eval ' use IO::Uncompress::RawInflate 2.060 ;';
+ eval ' use IO::Uncompress::Unzip 2.060 ;';
+ eval ' use IO::Uncompress::UnLzf 2.060 ;';
+ eval ' use IO::Uncompress::UnLzma 2.060 ;';
+ eval ' use IO::Uncompress::UnXz 2.060 ;';
}
sub new
{
my $class = shift ;
- my $obj = createSelfTiedObject($class, \$AnyUncompressError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$AnyUncompressError);
$obj->_create(undef, 0, @_);
}
sub anyuncompress
{
- my $obj = createSelfTiedObject(undef, \$AnyUncompressError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$AnyUncompressError);
return $obj->_inf(@_) ;
}
sub getExtraParams
-{
- use IO::Compress::Base::Common 2.048 qw(:Parse);
- return ( 'RawInflate' => [1, 1, Parse_boolean, 0] ,
- 'UnLzma' => [1, 1, Parse_boolean, 0] ) ;
+{
+ return ( 'rawinflate' => [IO::Compress::Base::Common::Parse_boolean, 0] ,
+ 'unlzma' => [IO::Compress::Base::Common::Parse_boolean, 0] ) ;
}
sub ckParams
@@ -71,8 +70,8 @@ sub ckParams
my $got = shift ;
# any always needs both crc32 and adler32
- $got->value('CRC32' => 1);
- $got->value('ADLER32' => 1);
+ $got->setValue('crc32' => 1);
+ $got->setValue('adler32' => 1);
return 1;
}
@@ -96,7 +95,7 @@ sub mkUncomp
my @possible = qw( Inflate Gunzip Unzip );
unshift @possible, 'RawInflate'
- if $got->value('RawInflate');
+ if $got->getValue('rawinflate');
$magic = $self->ckMagic( @possible );
@@ -108,7 +107,7 @@ sub mkUncomp
}
}
- if (defined $IO::Uncompress::UnLzma::VERSION && $got->value('UnLzma'))
+ if (defined $IO::Uncompress::UnLzma::VERSION && $got->getValue('unlzma'))
{
my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::UnLzma::mkUncompObject();
@@ -119,7 +118,7 @@ sub mkUncomp
my @possible = qw( UnLzma );
#unshift @possible, 'RawInflate'
- # if $got->value('RawInflate');
+ # if $got->getValue('rawinflate');
if ( *$self->{Info} = $self->ckMagic( @possible ))
{
@@ -314,19 +313,20 @@ section.
use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError) ;
- anyuncompress $input => $output [,OPTS]
+ anyuncompress $input_filename_or_reference => $output_filename_or_reference [,OPTS]
or die "anyuncompress failed: $AnyUncompressError\n";
The functional interface needs Perl5.005 or better.
=head2 anyuncompress $input => $output [, OPTS]
-C<anyuncompress> expects at least two parameters, C<$input> and C<$output>.
+C<anyuncompress> expects at least two parameters,
+C<$input_filename_or_reference> and C<$output_filename_or_reference>.
-=head3 The C<$input> parameter
+=head3 The C<$input_filename_or_reference> parameter
-The parameter, C<$input>, is used to define the source of
-the compressed data.
+The parameter, C<$input_filename_or_reference>, is used to define the
+source of the compressed data.
It can take one of the following forms:
@@ -334,25 +334,25 @@ It can take one of the following forms:
=item A filename
-If the C<$input> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for reading and the input data
-will be read from it.
+If the <$input_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for reading and the
+input data will be read from it.
=item A filehandle
-If the C<$input> parameter is a filehandle, the input data will be
-read from it.
-The string '-' can be used as an alias for standard input.
+If the C<$input_filename_or_reference> parameter is a filehandle, the input
+data will be read from it. The string '-' can be used as an alias for
+standard input.
=item A scalar reference
-If C<$input> is a scalar reference, the input data will be read
-from C<$$input>.
+If C<$input_filename_or_reference> is a scalar reference, the input data
+will be read from C<$$input_filename_or_reference>.
=item An array reference
-If C<$input> is an array reference, each element in the array must be a
-filename.
+If C<$input_filename_or_reference> is an array reference, each element in
+the array must be a filename.
The input data will be read from each file in turn.
@@ -361,64 +361,71 @@ contains valid filenames before any data is uncompressed.
=item An Input FileGlob string
-If C<$input> is a string that is delimited by the characters "<" and ">"
-C<anyuncompress> will assume that it is an I<input fileglob string>. The
-input is the list of files that match the fileglob.
+If C<$input_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<anyuncompress> will assume that it is an
+I<input fileglob string>. The input is the list of files that match the
+fileglob.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$input> parameter is any other type, C<undef> will be returned.
+If the C<$input_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
-=head3 The C<$output> parameter
+=head3 The C<$output_filename_or_reference> parameter
-The parameter C<$output> is used to control the destination of the
-uncompressed data. This parameter can take one of these forms.
+The parameter C<$output_filename_or_reference> is used to control the
+destination of the uncompressed data. This parameter can take one of
+these forms.
=over 5
=item A filename
-If the C<$output> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for writing and the uncompressed
-data will be written to it.
+If the C<$output_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for writing and the
+uncompressed data will be written to it.
=item A filehandle
-If the C<$output> parameter is a filehandle, the uncompressed data
-will be written to it.
-The string '-' can be used as an alias for standard output.
+If the C<$output_filename_or_reference> parameter is a filehandle, the
+uncompressed data will be written to it. The string '-' can be used as
+an alias for standard output.
=item A scalar reference
-If C<$output> is a scalar reference, the uncompressed data will be
-stored in C<$$output>.
+If C<$output_filename_or_reference> is a scalar reference, the
+uncompressed data will be stored in C<$$output_filename_or_reference>.
=item An Array Reference
-If C<$output> is an array reference, the uncompressed data will be
-pushed onto the array.
+If C<$output_filename_or_reference> is an array reference,
+the uncompressed data will be pushed onto the array.
=item An Output FileGlob
-If C<$output> is a string that is delimited by the characters "<" and ">"
-C<anyuncompress> will assume that it is an I<output fileglob string>. The
-output is the list of files that match the fileglob.
+If C<$output_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<anyuncompress> will assume that it is an
+I<output fileglob string>. The output is the list of files that match the
+fileglob.
-When C<$output> is an fileglob string, C<$input> must also be a fileglob
-string. Anything else is an error.
+When C<$output_filename_or_reference> is an fileglob string,
+C<$input_filename_or_reference> must also be a fileglob string. Anything
+else is an error.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$output> parameter is any other type, C<undef> will be returned.
+If the C<$output_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
=head2 Notes
-When C<$input> maps to multiple compressed files/buffers and C<$output> is
-a single file/buffer, after uncompression C<$output> will contain a
+When C<$input_filename_or_reference> maps to multiple compressed
+files/buffers and C<$output_filename_or_reference> is
+a single file/buffer, after uncompression C<$output_filename_or_reference> will contain a
concatenation of all the uncompressed data from each of the input
files/buffers.
@@ -616,7 +623,7 @@ The string '-' can be used as an alias for standard input.
=item A scalar reference
If C<$input> is a scalar reference, the compressed data will be read from
-C<$$output>.
+C<$$input>.
=back
@@ -847,6 +854,13 @@ Provides a sub-set of the C<seek> functionality, with the restriction
that it is only legal to seek forward in the input file/buffer.
It is a fatal error to attempt to seek backward.
+Note that the implementation of C<seek> in this module does not provide
+true random access to a compressed file/buffer. It works by uncompressing
+data from the current offset in the file/buffer until it reaches the
+ucompressed offset specified in the parameters to C<seek>. For very small
+files this may be acceptable behaviour. For large files it may cause an
+unacceptable delay.
+
The C<$whence> parameter takes one the usual values, namely SEEK_SET,
SEEK_CUR or SEEK_END.
@@ -1011,7 +1025,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Base.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Base.pm
index cb1e15e9aef..5d6336b9473 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Base.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Base.pm
@@ -3,23 +3,23 @@ package IO::Uncompress::Base ;
use strict ;
use warnings;
-use bytes;
+#use bytes;
our (@ISA, $VERSION, @EXPORT_OK, %EXPORT_TAGS);
@ISA = qw(Exporter IO::File);
-$VERSION = '2.048';
+$VERSION = '2.060';
use constant G_EOF => 0 ;
use constant G_ERR => -1 ;
-use IO::Compress::Base::Common 2.048 ;
+use IO::Compress::Base::Common 2.060 ;
use IO::File ;
use Symbol;
-use Scalar::Util qw(readonly);
-use List::Util qw(min);
+use Scalar::Util ();
+use List::Util ();
use Carp ;
%EXPORT_TAGS = ( );
@@ -39,7 +39,7 @@ sub smartRead
if (defined *$self->{InputLength}) {
return 0
if *$self->{InputLengthRemaining} <= 0 ;
- $size = min($size, *$self->{InputLengthRemaining});
+ $size = List::Util::min($size, *$self->{InputLengthRemaining});
}
if ( length *$self->{Prime} ) {
@@ -348,34 +348,34 @@ sub checkParams
my $got = shift || IO::Compress::Base::Parameters::new();
my $Valid = {
- 'BlockSize' => [1, 1, Parse_unsigned, 16 * 1024],
- 'AutoClose' => [1, 1, Parse_boolean, 0],
- 'Strict' => [1, 1, Parse_boolean, 0],
- 'Append' => [1, 1, Parse_boolean, 0],
- 'Prime' => [1, 1, Parse_any, undef],
- 'MultiStream' => [1, 1, Parse_boolean, 0],
- 'Transparent' => [1, 1, Parse_any, 1],
- 'Scan' => [1, 1, Parse_boolean, 0],
- 'InputLength' => [1, 1, Parse_unsigned, undef],
- 'BinModeOut' => [1, 1, Parse_boolean, 0],
- #'Encode' => [1, 1, Parse_any, undef],
-
- #'ConsumeInput' => [1, 1, Parse_boolean, 0],
-
+ 'blocksize' => [IO::Compress::Base::Common::Parse_unsigned, 16 * 1024],
+ 'autoclose' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'strict' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'append' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'prime' => [IO::Compress::Base::Common::Parse_any, undef],
+ 'multistream' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'transparent' => [IO::Compress::Base::Common::Parse_any, 1],
+ 'scan' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'inputlength' => [IO::Compress::Base::Common::Parse_unsigned, undef],
+ 'binmodeout' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ #'decode' => [IO::Compress::Base::Common::Parse_any, undef],
+
+ #'consumeinput' => [IO::Compress::Base::Common::Parse_boolean, 0],
+
$self->getExtraParams(),
#'Todo - Revert to ordinary file on end Z_STREAM_END'=> 0,
# ContinueAfterEof
} ;
- $Valid->{TrailingData} = [1, 1, Parse_writable_scalar, undef]
+ $Valid->{trailingdata} = [IO::Compress::Base::Common::Parse_writable_scalar, undef]
if *$self->{OneShot} ;
$got->parse($Valid, @_ )
- or $self->croakError("${class}: $got->{Error}") ;
+ or $self->croakError("${class}: " . $got->getError()) ;
$self->postCheckParams($got)
- or $self->croakError("${class}: " . $self->error()) ;
+ or $self->croakError("${class}: " . $self->error()) ;
return $got;
}
@@ -392,7 +392,7 @@ sub _create
my $inValue = shift ;
- *$obj->{OneShot} = 0 ;
+ *$obj->{OneShot} = 0 ;
if (! $got)
{
@@ -422,12 +422,12 @@ sub _create
# Need to rewind for Scan
*$obj->{FH}->seek(0, SEEK_SET)
- if $got->value('Scan');
+ if $got->getValue('scan');
}
else {
no warnings ;
my $mode = '<';
- $mode = '+<' if $got->value('Scan');
+ $mode = '+<' if $got->getValue('scan');
*$obj->{StdIO} = ($inValue eq '-');
*$obj->{FH} = new IO::File "$mode $inValue"
or return $obj->saveErrorString(undef, "cannot open file '$inValue': $!", $!) ;
@@ -440,32 +440,34 @@ sub _create
*$obj->{Buffer} = \$buff ;
}
- if ($got->parsed('Encode')) {
- my $want_encoding = $got->value('Encode');
- *$obj->{Encoding} = getEncoding($obj, $class, $want_encoding);
- }
-
+# if ($got->getValue('decode')) {
+# my $want_encoding = $got->getValue('decode');
+# *$obj->{Encoding} = IO::Compress::Base::Common::getEncoding($obj, $class, $want_encoding);
+# }
+# else {
+# *$obj->{Encoding} = undef;
+# }
- *$obj->{InputLength} = $got->parsed('InputLength')
- ? $got->value('InputLength')
+ *$obj->{InputLength} = $got->parsed('inputlength')
+ ? $got->getValue('inputlength')
: undef ;
- *$obj->{InputLengthRemaining} = $got->value('InputLength');
+ *$obj->{InputLengthRemaining} = $got->getValue('inputlength');
*$obj->{BufferOffset} = 0 ;
- *$obj->{AutoClose} = $got->value('AutoClose');
- *$obj->{Strict} = $got->value('Strict');
- *$obj->{BlockSize} = $got->value('BlockSize');
- *$obj->{Append} = $got->value('Append');
- *$obj->{AppendOutput} = $append_mode || $got->value('Append');
- *$obj->{ConsumeInput} = $got->value('ConsumeInput');
- *$obj->{Transparent} = $got->value('Transparent');
- *$obj->{MultiStream} = $got->value('MultiStream');
+ *$obj->{AutoClose} = $got->getValue('autoclose');
+ *$obj->{Strict} = $got->getValue('strict');
+ *$obj->{BlockSize} = $got->getValue('blocksize');
+ *$obj->{Append} = $got->getValue('append');
+ *$obj->{AppendOutput} = $append_mode || $got->getValue('append');
+ *$obj->{ConsumeInput} = $got->getValue('consumeinput');
+ *$obj->{Transparent} = $got->getValue('transparent');
+ *$obj->{MultiStream} = $got->getValue('multistream');
# TODO - move these two into RawDeflate
- *$obj->{Scan} = $got->value('Scan');
- *$obj->{ParseExtra} = $got->value('ParseExtra')
- || $got->value('Strict') ;
+ *$obj->{Scan} = $got->getValue('scan');
+ *$obj->{ParseExtra} = $got->getValue('parseextra')
+ || $got->getValue('strict') ;
*$obj->{Type} = '';
- *$obj->{Prime} = $got->value('Prime') || '' ;
+ *$obj->{Prime} = $got->getValue('prime') || '' ;
*$obj->{Pending} = '';
*$obj->{Plain} = 0;
*$obj->{PlainBytesRead} = 0;
@@ -577,13 +579,36 @@ sub _inf
my $got = $obj->checkParams($name, undef, @_)
or return undef ;
- if ($got->parsed('TrailingData'))
+ if ($got->parsed('trailingdata'))
{
- *$obj->{TrailingData} = $got->value('TrailingData');
+# my $value = $got->valueRef('TrailingData');
+# warn "TD $value ";
+# #$value = $$value;
+## warn "TD $value $$value ";
+#
+# return retErr($obj, "Parameter 'TrailingData' not writable")
+# if readonly $$value ;
+#
+# if (ref $$value)
+# {
+# return retErr($obj,"Parameter 'TrailingData' not a scalar reference")
+# if ref $$value ne 'SCALAR' ;
+#
+# *$obj->{TrailingData} = $$value ;
+# }
+# else
+# {
+# return retErr($obj,"Parameter 'TrailingData' not a scalar")
+# if ref $value ne 'SCALAR' ;
+#
+# *$obj->{TrailingData} = $value ;
+# }
+
+ *$obj->{TrailingData} = $got->getValue('trailingdata');
}
- *$obj->{MultiStream} = $got->value('MultiStream');
- $got->value('MultiStream', 0);
+ *$obj->{MultiStream} = $got->getValue('multistream');
+ $got->setValue('multistream', 0);
$x->{Got} = $got ;
@@ -663,17 +688,17 @@ sub _singleTarget
if ($x->{outType} eq 'filename') {
my $mode = '>' ;
$mode = '>>'
- if $x->{Got}->value('Append') ;
+ if $x->{Got}->getValue('append') ;
$x->{fh} = new IO::File "$mode $output"
or return retErr($x, "cannot open file '$output': $!") ;
- binmode $x->{fh} if $x->{Got}->valueOrDefault('BinModeOut');
+ binmode $x->{fh} if $x->{Got}->valueOrDefault('binmodeout');
}
elsif ($x->{outType} eq 'handle') {
$x->{fh} = $output;
- binmode $x->{fh} if $x->{Got}->valueOrDefault('BinModeOut');
- if ($x->{Got}->value('Append')) {
+ binmode $x->{fh} if $x->{Got}->valueOrDefault('binmodeout');
+ if ($x->{Got}->getValue('append')) {
seek($x->{fh}, 0, SEEK_END)
or return retErr($x, "Cannot seek to end of output filehandle: $!") ;
}
@@ -683,7 +708,7 @@ sub _singleTarget
elsif ($x->{outType} eq 'buffer' )
{
$$output = ''
- unless $x->{Got}->value('Append');
+ unless $x->{Got}->getValue('append');
$x->{buff} = $output ;
}
@@ -703,7 +728,7 @@ sub _singleTarget
if ( ($x->{outType} eq 'filename' && $output ne '-') ||
- ($x->{outType} eq 'handle' && $x->{Got}->value('AutoClose'))) {
+ ($x->{outType} eq 'handle' && $x->{Got}->getValue('autoclose'))) {
$x->{fh}->close()
or return retErr($x, $!);
delete $x->{fh};
@@ -719,7 +744,7 @@ sub _rd2
my $input = shift;
my $output = shift;
- my $z = createSelfTiedObject($x->{Class}, *$self->{Error});
+ my $z = IO::Compress::Base::Common::createSelfTiedObject($x->{Class}, *$self->{Error});
$z->_create($x->{Got}, 1, $input, @_)
or return undef ;
@@ -803,7 +828,7 @@ sub readBlock
*$self->{CompressedInputLengthDone} = 1;
return STATUS_OK ;
}
- $size = min($size, *$self->{CompressedInputLengthRemaining} );
+ $size = List::Util::min($size, *$self->{CompressedInputLengthRemaining} );
*$self->{CompressedInputLengthRemaining} -= $size ;
}
@@ -905,9 +930,12 @@ sub _raw_read
$self->filterUncompressed($buffer, $before_len);
- if (*$self->{Encoding}) {
- $$buffer = *$self->{Encoding}->decode($$buffer);
- }
+# if (*$self->{Encoding}) {
+# use Encode ;
+# *$self->{PendingDecode} .= substr($$buffer, $before_len) ;
+# my $got = *$self->{Encoding}->decode(*$self->{PendingDecode}, Encode::FB_QUIET) ;
+# substr($$buffer, $before_len) = $got;
+# }
}
if ($status == STATUS_ENDSTREAM) {
@@ -1073,7 +1101,7 @@ sub read
if (ref $_[0] ) {
$self->croakError(*$self->{ClassName} . "::read: buffer parameter is read-only")
- if readonly(${ $_[0] });
+ if Scalar::Util::readonly(${ $_[0] });
$self->croakError(*$self->{ClassName} . "::read: not a scalar reference $_[0]" )
unless ref $_[0] eq 'SCALAR' ;
@@ -1081,7 +1109,7 @@ sub read
}
else {
$self->croakError(*$self->{ClassName} . "::read: buffer parameter is read-only")
- if readonly($_[0]);
+ if Scalar::Util::readonly($_[0]);
$buffer = \$_[0] ;
}
@@ -1402,7 +1430,7 @@ sub seek
my $offset = $target - $here ;
my $got;
- while (($got = $self->read(my $buffer, min($offset, *$self->{BlockSize})) ) > 0)
+ while (($got = $self->read(my $buffer, List::Util::min($offset, *$self->{BlockSize})) ) > 0)
{
$offset -= $got;
last if $offset == 0 ;
@@ -1520,7 +1548,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm
index f53513a7e48..ccfb69b2bd8 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm
@@ -4,15 +4,15 @@ use strict ;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.048 qw(:Status createSelfTiedObject);
+use IO::Compress::Base::Common 2.060 qw(:Status );
-use IO::Uncompress::Base 2.048 ;
-use IO::Uncompress::Adapter::Bunzip2 2.048 ;
+use IO::Uncompress::Base 2.060 ;
+use IO::Uncompress::Adapter::Bunzip2 2.060 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bunzip2Error);
-$VERSION = '2.048';
+$VERSION = '2.060';
$Bunzip2Error = '';
@ISA = qw( Exporter IO::Uncompress::Base );
@@ -25,26 +25,22 @@ push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ;
sub new
{
my $class = shift ;
- my $obj = createSelfTiedObject($class, \$Bunzip2Error);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$Bunzip2Error);
$obj->_create(undef, 0, @_);
}
sub bunzip2
{
- my $obj = createSelfTiedObject(undef, \$Bunzip2Error);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$Bunzip2Error);
return $obj->_inf(@_);
}
sub getExtraParams
{
- my $self = shift ;
-
- use IO::Compress::Base::Common 2.048 qw(:Parse);
-
return (
- 'Verbosity' => [1, 1, Parse_boolean, 0],
- 'Small' => [1, 1, Parse_boolean, 0],
+ 'verbosity' => [IO::Compress::Base::Common::Parse_boolean, 0],
+ 'small' => [IO::Compress::Base::Common::Parse_boolean, 0],
);
}
@@ -68,8 +64,8 @@ sub mkUncomp
*$self->{Info} = $self->readHeader($magic)
or return undef ;
- my $Small = $got->value('Small');
- my $Verbosity = $got->value('Verbosity');
+ my $Small = $got->getValue('small');
+ my $Verbosity = $got->getValue('verbosity');
my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::Bunzip2::mkUncompObject(
$Small, $Verbosity);
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm
index bf803ae161b..753d34a5bc9 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm
@@ -9,12 +9,12 @@ use strict ;
use warnings;
use bytes;
-use IO::Uncompress::RawInflate 2.048 ;
+use IO::Uncompress::RawInflate 2.060 ;
-use Compress::Raw::Zlib 2.048 () ;
-use IO::Compress::Base::Common 2.048 qw(:Status createSelfTiedObject);
-use IO::Compress::Gzip::Constants 2.048 ;
-use IO::Compress::Zlib::Extra 2.048 ;
+use Compress::Raw::Zlib 2.060 () ;
+use IO::Compress::Base::Common 2.060 qw(:Status );
+use IO::Compress::Gzip::Constants 2.060 ;
+use IO::Compress::Zlib::Extra 2.060 ;
require Exporter ;
@@ -28,27 +28,26 @@ Exporter::export_ok_tags('all');
$GunzipError = '';
-$VERSION = '2.048';
+$VERSION = '2.060';
sub new
{
my $class = shift ;
$GunzipError = '';
- my $obj = createSelfTiedObject($class, \$GunzipError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$GunzipError);
$obj->_create(undef, 0, @_);
}
sub gunzip
{
- my $obj = createSelfTiedObject(undef, \$GunzipError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$GunzipError);
return $obj->_inf(@_) ;
}
sub getExtraParams
{
- use IO::Compress::Base::Common 2.048 qw(:Parse);
- return ( 'ParseExtra' => [1, 1, Parse_boolean, 0] ) ;
+ return ( 'parseextra' => [IO::Compress::Base::Common::Parse_boolean, 0] ) ;
}
sub ckParams
@@ -57,7 +56,7 @@ sub ckParams
my $got = shift ;
# gunzip always needs crc32
- $got->value('CRC32' => 1);
+ $got->setValue('crc32' => 1);
return 1;
}
@@ -341,19 +340,20 @@ section.
use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ;
- gunzip $input => $output [,OPTS]
+ gunzip $input_filename_or_reference => $output_filename_or_reference [,OPTS]
or die "gunzip failed: $GunzipError\n";
The functional interface needs Perl5.005 or better.
=head2 gunzip $input => $output [, OPTS]
-C<gunzip> expects at least two parameters, C<$input> and C<$output>.
+C<gunzip> expects at least two parameters,
+C<$input_filename_or_reference> and C<$output_filename_or_reference>.
-=head3 The C<$input> parameter
+=head3 The C<$input_filename_or_reference> parameter
-The parameter, C<$input>, is used to define the source of
-the compressed data.
+The parameter, C<$input_filename_or_reference>, is used to define the
+source of the compressed data.
It can take one of the following forms:
@@ -361,25 +361,25 @@ It can take one of the following forms:
=item A filename
-If the C<$input> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for reading and the input data
-will be read from it.
+If the <$input_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for reading and the
+input data will be read from it.
=item A filehandle
-If the C<$input> parameter is a filehandle, the input data will be
-read from it.
-The string '-' can be used as an alias for standard input.
+If the C<$input_filename_or_reference> parameter is a filehandle, the input
+data will be read from it. The string '-' can be used as an alias for
+standard input.
=item A scalar reference
-If C<$input> is a scalar reference, the input data will be read
-from C<$$input>.
+If C<$input_filename_or_reference> is a scalar reference, the input data
+will be read from C<$$input_filename_or_reference>.
=item An array reference
-If C<$input> is an array reference, each element in the array must be a
-filename.
+If C<$input_filename_or_reference> is an array reference, each element in
+the array must be a filename.
The input data will be read from each file in turn.
@@ -388,64 +388,71 @@ contains valid filenames before any data is uncompressed.
=item An Input FileGlob string
-If C<$input> is a string that is delimited by the characters "<" and ">"
-C<gunzip> will assume that it is an I<input fileglob string>. The
-input is the list of files that match the fileglob.
+If C<$input_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<gunzip> will assume that it is an
+I<input fileglob string>. The input is the list of files that match the
+fileglob.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$input> parameter is any other type, C<undef> will be returned.
+If the C<$input_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
-=head3 The C<$output> parameter
+=head3 The C<$output_filename_or_reference> parameter
-The parameter C<$output> is used to control the destination of the
-uncompressed data. This parameter can take one of these forms.
+The parameter C<$output_filename_or_reference> is used to control the
+destination of the uncompressed data. This parameter can take one of
+these forms.
=over 5
=item A filename
-If the C<$output> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for writing and the uncompressed
-data will be written to it.
+If the C<$output_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for writing and the
+uncompressed data will be written to it.
=item A filehandle
-If the C<$output> parameter is a filehandle, the uncompressed data
-will be written to it.
-The string '-' can be used as an alias for standard output.
+If the C<$output_filename_or_reference> parameter is a filehandle, the
+uncompressed data will be written to it. The string '-' can be used as
+an alias for standard output.
=item A scalar reference
-If C<$output> is a scalar reference, the uncompressed data will be
-stored in C<$$output>.
+If C<$output_filename_or_reference> is a scalar reference, the
+uncompressed data will be stored in C<$$output_filename_or_reference>.
=item An Array Reference
-If C<$output> is an array reference, the uncompressed data will be
-pushed onto the array.
+If C<$output_filename_or_reference> is an array reference,
+the uncompressed data will be pushed onto the array.
=item An Output FileGlob
-If C<$output> is a string that is delimited by the characters "<" and ">"
-C<gunzip> will assume that it is an I<output fileglob string>. The
-output is the list of files that match the fileglob.
+If C<$output_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<gunzip> will assume that it is an
+I<output fileglob string>. The output is the list of files that match the
+fileglob.
-When C<$output> is an fileglob string, C<$input> must also be a fileglob
-string. Anything else is an error.
+When C<$output_filename_or_reference> is an fileglob string,
+C<$input_filename_or_reference> must also be a fileglob string. Anything
+else is an error.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$output> parameter is any other type, C<undef> will be returned.
+If the C<$output_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
=head2 Notes
-When C<$input> maps to multiple compressed files/buffers and C<$output> is
-a single file/buffer, after uncompression C<$output> will contain a
+When C<$input_filename_or_reference> maps to multiple compressed
+files/buffers and C<$output_filename_or_reference> is
+a single file/buffer, after uncompression C<$output_filename_or_reference> will contain a
concatenation of all the uncompressed data from each of the input
files/buffers.
@@ -643,7 +650,7 @@ The string '-' can be used as an alias for standard input.
=item A scalar reference
If C<$input> is a scalar reference, the compressed data will be read from
-C<$$output>.
+C<$$input>.
=back
@@ -923,6 +930,13 @@ Provides a sub-set of the C<seek> functionality, with the restriction
that it is only legal to seek forward in the input file/buffer.
It is a fatal error to attempt to seek backward.
+Note that the implementation of C<seek> in this module does not provide
+true random access to a compressed file/buffer. It works by uncompressing
+data from the current offset in the file/buffer until it reaches the
+ucompressed offset specified in the parameters to C<seek>. For very small
+files this may be acceptable behaviour. For large files it may cause an
+unacceptable delay.
+
The C<$whence> parameter takes one the usual values, namely SEEK_SET,
SEEK_CUR or SEEK_END.
@@ -1069,7 +1083,7 @@ Same as doing this
=head2 Working with Net::FTP
-See L<IO::Uncompress::Gunzip::FAQ|IO::Uncompress::Gunzip::FAQ/"Compressed files and Net::FTP">
+See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
=head1 SEE ALSO
@@ -1104,7 +1118,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm
index 7a40889fa84..4cea9aa0028 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm
@@ -5,15 +5,15 @@ use strict ;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.048 qw(:Status createSelfTiedObject);
-use IO::Compress::Zlib::Constants 2.048 ;
+use IO::Compress::Base::Common 2.060 qw(:Status );
+use IO::Compress::Zlib::Constants 2.060 ;
-use IO::Uncompress::RawInflate 2.048 ;
+use IO::Uncompress::RawInflate 2.060 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $InflateError);
-$VERSION = '2.048';
+$VERSION = '2.060';
$InflateError = '';
@ISA = qw( Exporter IO::Uncompress::RawInflate );
@@ -26,14 +26,14 @@ Exporter::export_ok_tags('all');
sub new
{
my $class = shift ;
- my $obj = createSelfTiedObject($class, \$InflateError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$InflateError);
$obj->_create(undef, 0, @_);
}
sub inflate
{
- my $obj = createSelfTiedObject(undef, \$InflateError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$InflateError);
return $obj->_inf(@_);
}
@@ -48,7 +48,7 @@ sub ckParams
my $got = shift ;
# gunzip always needs adler32
- $got->value('ADLER32' => 1);
+ $got->setValue('adler32' => 1);
return 1;
}
@@ -262,19 +262,20 @@ section.
use IO::Uncompress::Inflate qw(inflate $InflateError) ;
- inflate $input => $output [,OPTS]
+ inflate $input_filename_or_reference => $output_filename_or_reference [,OPTS]
or die "inflate failed: $InflateError\n";
The functional interface needs Perl5.005 or better.
=head2 inflate $input => $output [, OPTS]
-C<inflate> expects at least two parameters, C<$input> and C<$output>.
+C<inflate> expects at least two parameters,
+C<$input_filename_or_reference> and C<$output_filename_or_reference>.
-=head3 The C<$input> parameter
+=head3 The C<$input_filename_or_reference> parameter
-The parameter, C<$input>, is used to define the source of
-the compressed data.
+The parameter, C<$input_filename_or_reference>, is used to define the
+source of the compressed data.
It can take one of the following forms:
@@ -282,25 +283,25 @@ It can take one of the following forms:
=item A filename
-If the C<$input> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for reading and the input data
-will be read from it.
+If the <$input_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for reading and the
+input data will be read from it.
=item A filehandle
-If the C<$input> parameter is a filehandle, the input data will be
-read from it.
-The string '-' can be used as an alias for standard input.
+If the C<$input_filename_or_reference> parameter is a filehandle, the input
+data will be read from it. The string '-' can be used as an alias for
+standard input.
=item A scalar reference
-If C<$input> is a scalar reference, the input data will be read
-from C<$$input>.
+If C<$input_filename_or_reference> is a scalar reference, the input data
+will be read from C<$$input_filename_or_reference>.
=item An array reference
-If C<$input> is an array reference, each element in the array must be a
-filename.
+If C<$input_filename_or_reference> is an array reference, each element in
+the array must be a filename.
The input data will be read from each file in turn.
@@ -309,64 +310,71 @@ contains valid filenames before any data is uncompressed.
=item An Input FileGlob string
-If C<$input> is a string that is delimited by the characters "<" and ">"
-C<inflate> will assume that it is an I<input fileglob string>. The
-input is the list of files that match the fileglob.
+If C<$input_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<inflate> will assume that it is an
+I<input fileglob string>. The input is the list of files that match the
+fileglob.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$input> parameter is any other type, C<undef> will be returned.
+If the C<$input_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
-=head3 The C<$output> parameter
+=head3 The C<$output_filename_or_reference> parameter
-The parameter C<$output> is used to control the destination of the
-uncompressed data. This parameter can take one of these forms.
+The parameter C<$output_filename_or_reference> is used to control the
+destination of the uncompressed data. This parameter can take one of
+these forms.
=over 5
=item A filename
-If the C<$output> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for writing and the uncompressed
-data will be written to it.
+If the C<$output_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for writing and the
+uncompressed data will be written to it.
=item A filehandle
-If the C<$output> parameter is a filehandle, the uncompressed data
-will be written to it.
-The string '-' can be used as an alias for standard output.
+If the C<$output_filename_or_reference> parameter is a filehandle, the
+uncompressed data will be written to it. The string '-' can be used as
+an alias for standard output.
=item A scalar reference
-If C<$output> is a scalar reference, the uncompressed data will be
-stored in C<$$output>.
+If C<$output_filename_or_reference> is a scalar reference, the
+uncompressed data will be stored in C<$$output_filename_or_reference>.
=item An Array Reference
-If C<$output> is an array reference, the uncompressed data will be
-pushed onto the array.
+If C<$output_filename_or_reference> is an array reference,
+the uncompressed data will be pushed onto the array.
=item An Output FileGlob
-If C<$output> is a string that is delimited by the characters "<" and ">"
-C<inflate> will assume that it is an I<output fileglob string>. The
-output is the list of files that match the fileglob.
+If C<$output_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<inflate> will assume that it is an
+I<output fileglob string>. The output is the list of files that match the
+fileglob.
-When C<$output> is an fileglob string, C<$input> must also be a fileglob
-string. Anything else is an error.
+When C<$output_filename_or_reference> is an fileglob string,
+C<$input_filename_or_reference> must also be a fileglob string. Anything
+else is an error.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$output> parameter is any other type, C<undef> will be returned.
+If the C<$output_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
=head2 Notes
-When C<$input> maps to multiple compressed files/buffers and C<$output> is
-a single file/buffer, after uncompression C<$output> will contain a
+When C<$input_filename_or_reference> maps to multiple compressed
+files/buffers and C<$output_filename_or_reference> is
+a single file/buffer, after uncompression C<$output_filename_or_reference> will contain a
concatenation of all the uncompressed data from each of the input
files/buffers.
@@ -564,7 +572,7 @@ The string '-' can be used as an alias for standard input.
=item A scalar reference
If C<$input> is a scalar reference, the compressed data will be read from
-C<$$output>.
+C<$$input>.
=back
@@ -794,6 +802,13 @@ Provides a sub-set of the C<seek> functionality, with the restriction
that it is only legal to seek forward in the input file/buffer.
It is a fatal error to attempt to seek backward.
+Note that the implementation of C<seek> in this module does not provide
+true random access to a compressed file/buffer. It works by uncompressing
+data from the current offset in the file/buffer until it reaches the
+ucompressed offset specified in the parameters to C<seek>. For very small
+files this may be acceptable behaviour. For large files it may cause an
+unacceptable delay.
+
The C<$whence> parameter takes one the usual values, namely SEEK_SET,
SEEK_CUR or SEEK_END.
@@ -940,7 +955,7 @@ Same as doing this
=head2 Working with Net::FTP
-See L<IO::Uncompress::Inflate::FAQ|IO::Uncompress::Inflate::FAQ/"Compressed files and Net::FTP">
+See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
=head1 SEE ALSO
@@ -975,7 +990,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm
index 0372ec72e35..9a57eb343c6 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm
@@ -3,18 +3,18 @@ package IO::Uncompress::RawInflate ;
use strict ;
use warnings;
-use bytes;
+#use bytes;
-use Compress::Raw::Zlib 2.048 ;
-use IO::Compress::Base::Common 2.048 qw(:Status createSelfTiedObject);
+use Compress::Raw::Zlib 2.060 ;
+use IO::Compress::Base::Common 2.060 qw(:Status );
-use IO::Uncompress::Base 2.048 ;
-use IO::Uncompress::Adapter::Inflate 2.048 ;
+use IO::Uncompress::Base 2.060 ;
+use IO::Uncompress::Adapter::Inflate 2.060 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $RawInflateError);
-$VERSION = '2.048';
+$VERSION = '2.060';
$RawInflateError = '';
@ISA = qw( Exporter IO::Uncompress::Base );
@@ -45,13 +45,13 @@ Exporter::export_ok_tags('all');
sub new
{
my $class = shift ;
- my $obj = createSelfTiedObject($class, \$RawInflateError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$RawInflateError);
$obj->_create(undef, 0, @_);
}
sub rawinflate
{
- my $obj = createSelfTiedObject(undef, \$RawInflateError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$RawInflateError);
return $obj->_inf(@_);
}
@@ -74,9 +74,9 @@ sub mkUncomp
my $got = shift ;
my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::Inflate::mkUncompObject(
- $got->value('CRC32'),
- $got->value('ADLER32'),
- $got->value('Scan'),
+ $got->getValue('crc32'),
+ $got->getValue('adler32'),
+ $got->getValue('scan'),
);
return $self->saveErrorString(undef, $errstr, $errno)
@@ -332,8 +332,8 @@ sub createDeflate
my ($def, $status) = *$self->{Uncomp}->createDeflateStream(
-AppendOutput => 1,
-WindowBits => - MAX_WBITS,
- -CRC32 => *$self->{Params}->value('CRC32'),
- -ADLER32 => *$self->{Params}->value('ADLER32'),
+ -CRC32 => *$self->{Params}->getValue('crc32'),
+ -ADLER32 => *$self->{Params}->getValue('adler32'),
);
return wantarray ? ($status, $def) : $def ;
@@ -410,19 +410,20 @@ section.
use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError) ;
- rawinflate $input => $output [,OPTS]
+ rawinflate $input_filename_or_reference => $output_filename_or_reference [,OPTS]
or die "rawinflate failed: $RawInflateError\n";
The functional interface needs Perl5.005 or better.
=head2 rawinflate $input => $output [, OPTS]
-C<rawinflate> expects at least two parameters, C<$input> and C<$output>.
+C<rawinflate> expects at least two parameters,
+C<$input_filename_or_reference> and C<$output_filename_or_reference>.
-=head3 The C<$input> parameter
+=head3 The C<$input_filename_or_reference> parameter
-The parameter, C<$input>, is used to define the source of
-the compressed data.
+The parameter, C<$input_filename_or_reference>, is used to define the
+source of the compressed data.
It can take one of the following forms:
@@ -430,25 +431,25 @@ It can take one of the following forms:
=item A filename
-If the C<$input> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for reading and the input data
-will be read from it.
+If the <$input_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for reading and the
+input data will be read from it.
=item A filehandle
-If the C<$input> parameter is a filehandle, the input data will be
-read from it.
-The string '-' can be used as an alias for standard input.
+If the C<$input_filename_or_reference> parameter is a filehandle, the input
+data will be read from it. The string '-' can be used as an alias for
+standard input.
=item A scalar reference
-If C<$input> is a scalar reference, the input data will be read
-from C<$$input>.
+If C<$input_filename_or_reference> is a scalar reference, the input data
+will be read from C<$$input_filename_or_reference>.
=item An array reference
-If C<$input> is an array reference, each element in the array must be a
-filename.
+If C<$input_filename_or_reference> is an array reference, each element in
+the array must be a filename.
The input data will be read from each file in turn.
@@ -457,64 +458,71 @@ contains valid filenames before any data is uncompressed.
=item An Input FileGlob string
-If C<$input> is a string that is delimited by the characters "<" and ">"
-C<rawinflate> will assume that it is an I<input fileglob string>. The
-input is the list of files that match the fileglob.
+If C<$input_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<rawinflate> will assume that it is an
+I<input fileglob string>. The input is the list of files that match the
+fileglob.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$input> parameter is any other type, C<undef> will be returned.
+If the C<$input_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
-=head3 The C<$output> parameter
+=head3 The C<$output_filename_or_reference> parameter
-The parameter C<$output> is used to control the destination of the
-uncompressed data. This parameter can take one of these forms.
+The parameter C<$output_filename_or_reference> is used to control the
+destination of the uncompressed data. This parameter can take one of
+these forms.
=over 5
=item A filename
-If the C<$output> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for writing and the uncompressed
-data will be written to it.
+If the C<$output_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for writing and the
+uncompressed data will be written to it.
=item A filehandle
-If the C<$output> parameter is a filehandle, the uncompressed data
-will be written to it.
-The string '-' can be used as an alias for standard output.
+If the C<$output_filename_or_reference> parameter is a filehandle, the
+uncompressed data will be written to it. The string '-' can be used as
+an alias for standard output.
=item A scalar reference
-If C<$output> is a scalar reference, the uncompressed data will be
-stored in C<$$output>.
+If C<$output_filename_or_reference> is a scalar reference, the
+uncompressed data will be stored in C<$$output_filename_or_reference>.
=item An Array Reference
-If C<$output> is an array reference, the uncompressed data will be
-pushed onto the array.
+If C<$output_filename_or_reference> is an array reference,
+the uncompressed data will be pushed onto the array.
=item An Output FileGlob
-If C<$output> is a string that is delimited by the characters "<" and ">"
-C<rawinflate> will assume that it is an I<output fileglob string>. The
-output is the list of files that match the fileglob.
+If C<$output_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<rawinflate> will assume that it is an
+I<output fileglob string>. The output is the list of files that match the
+fileglob.
-When C<$output> is an fileglob string, C<$input> must also be a fileglob
-string. Anything else is an error.
+When C<$output_filename_or_reference> is an fileglob string,
+C<$input_filename_or_reference> must also be a fileglob string. Anything
+else is an error.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$output> parameter is any other type, C<undef> will be returned.
+If the C<$output_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
=head2 Notes
-When C<$input> maps to multiple compressed files/buffers and C<$output> is
-a single file/buffer, after uncompression C<$output> will contain a
+When C<$input_filename_or_reference> maps to multiple compressed
+files/buffers and C<$output_filename_or_reference> is
+a single file/buffer, after uncompression C<$output_filename_or_reference> will contain a
concatenation of all the uncompressed data from each of the input
files/buffers.
@@ -709,7 +717,7 @@ The string '-' can be used as an alias for standard input.
=item A scalar reference
If C<$input> is a scalar reference, the compressed data will be read from
-C<$$output>.
+C<$$input>.
=back
@@ -922,6 +930,13 @@ Provides a sub-set of the C<seek> functionality, with the restriction
that it is only legal to seek forward in the input file/buffer.
It is a fatal error to attempt to seek backward.
+Note that the implementation of C<seek> in this module does not provide
+true random access to a compressed file/buffer. It works by uncompressing
+data from the current offset in the file/buffer until it reaches the
+ucompressed offset specified in the parameters to C<seek>. For very small
+files this may be acceptable behaviour. For large files it may cause an
+unacceptable delay.
+
The C<$whence> parameter takes one the usual values, namely SEEK_SET,
SEEK_CUR or SEEK_END.
@@ -1068,7 +1083,7 @@ Same as doing this
=head2 Working with Net::FTP
-See L<IO::Uncompress::RawInflate::FAQ|IO::Uncompress::RawInflate::FAQ/"Compressed files and Net::FTP">
+See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
=head1 SEE ALSO
@@ -1103,7 +1118,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm
index 7b2121c4e75..4175136fc3c 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm
@@ -6,24 +6,24 @@ require 5.006 ;
use strict ;
use warnings;
-use bytes;
+#use bytes;
use IO::File;
-use IO::Uncompress::RawInflate 2.048 ;
-use IO::Compress::Base::Common 2.048 qw(:Status createSelfTiedObject);
-use IO::Uncompress::Adapter::Inflate 2.048 ;
-use IO::Uncompress::Adapter::Identity 2.048 ;
-use IO::Compress::Zlib::Extra 2.048 ;
-use IO::Compress::Zip::Constants 2.048 ;
+use IO::Uncompress::RawInflate 2.060 ;
+use IO::Compress::Base::Common 2.060 qw(:Status );
+use IO::Uncompress::Adapter::Inflate 2.060 ;
+use IO::Uncompress::Adapter::Identity 2.060 ;
+use IO::Compress::Zlib::Extra 2.060 ;
+use IO::Compress::Zip::Constants 2.060 ;
-use Compress::Raw::Zlib 2.048 () ;
+use Compress::Raw::Zlib 2.060 () ;
BEGIN
{
- eval { require IO::Uncompress::Adapter::Bunzip2 ;
+ eval{ require IO::Uncompress::Adapter::Bunzip2 ;
import IO::Uncompress::Adapter::Bunzip2 } ;
- eval { require IO::Uncompress::Adapter::UnLzma ;
- import IO::Uncompress::Adapter::UnLzma } ;
+ eval{ require IO::Uncompress::Adapter::UnLzma ;
+ import IO::Uncompress::Adapter::UnLzma } ;
}
@@ -31,7 +31,7 @@ require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $UnzipError, %headerLookup);
-$VERSION = '2.048';
+$VERSION = '2.060';
$UnzipError = '';
@ISA = qw(Exporter IO::Uncompress::RawInflate);
@@ -52,27 +52,25 @@ Exporter::export_ok_tags('all');
sub new
{
my $class = shift ;
- my $obj = createSelfTiedObject($class, \$UnzipError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$UnzipError);
$obj->_create(undef, 0, @_);
}
sub unzip
{
- my $obj = createSelfTiedObject(undef, \$UnzipError);
+ my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$UnzipError);
return $obj->_inf(@_) ;
}
sub getExtraParams
{
- use IO::Compress::Base::Common 2.048 qw(:Parse);
-
-
+
return (
# # Zip header fields
- 'Name' => [1, 1, Parse_any, undef],
-
- 'Stream' => [1, 1, Parse_boolean, 0],
+ 'name' => [IO::Compress::Base::Common::Parse_any, undef],
+ 'stream' => [IO::Compress::Base::Common::Parse_boolean, 0],
+
# TODO - This means reading the central directory to get
# 1. the local header offsets
# 2. The compressed data length
@@ -85,9 +83,9 @@ sub ckParams
my $got = shift ;
# unzip always needs crc32
- $got->value('CRC32' => 1);
+ $got->setValue('crc32' => 1);
- *$self->{UnzipData}{Name} = $got->value('Name');
+ *$self->{UnzipData}{Name} = $got->getValue('name');
return 1;
}
@@ -1098,19 +1096,20 @@ section.
use IO::Uncompress::Unzip qw(unzip $UnzipError) ;
- unzip $input => $output [,OPTS]
+ unzip $input_filename_or_reference => $output_filename_or_reference [,OPTS]
or die "unzip failed: $UnzipError\n";
The functional interface needs Perl5.005 or better.
=head2 unzip $input => $output [, OPTS]
-C<unzip> expects at least two parameters, C<$input> and C<$output>.
+C<unzip> expects at least two parameters,
+C<$input_filename_or_reference> and C<$output_filename_or_reference>.
-=head3 The C<$input> parameter
+=head3 The C<$input_filename_or_reference> parameter
-The parameter, C<$input>, is used to define the source of
-the compressed data.
+The parameter, C<$input_filename_or_reference>, is used to define the
+source of the compressed data.
It can take one of the following forms:
@@ -1118,25 +1117,25 @@ It can take one of the following forms:
=item A filename
-If the C<$input> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for reading and the input data
-will be read from it.
+If the <$input_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for reading and the
+input data will be read from it.
=item A filehandle
-If the C<$input> parameter is a filehandle, the input data will be
-read from it.
-The string '-' can be used as an alias for standard input.
+If the C<$input_filename_or_reference> parameter is a filehandle, the input
+data will be read from it. The string '-' can be used as an alias for
+standard input.
=item A scalar reference
-If C<$input> is a scalar reference, the input data will be read
-from C<$$input>.
+If C<$input_filename_or_reference> is a scalar reference, the input data
+will be read from C<$$input_filename_or_reference>.
=item An array reference
-If C<$input> is an array reference, each element in the array must be a
-filename.
+If C<$input_filename_or_reference> is an array reference, each element in
+the array must be a filename.
The input data will be read from each file in turn.
@@ -1145,64 +1144,71 @@ contains valid filenames before any data is uncompressed.
=item An Input FileGlob string
-If C<$input> is a string that is delimited by the characters "<" and ">"
-C<unzip> will assume that it is an I<input fileglob string>. The
-input is the list of files that match the fileglob.
+If C<$input_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<unzip> will assume that it is an
+I<input fileglob string>. The input is the list of files that match the
+fileglob.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$input> parameter is any other type, C<undef> will be returned.
+If the C<$input_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
-=head3 The C<$output> parameter
+=head3 The C<$output_filename_or_reference> parameter
-The parameter C<$output> is used to control the destination of the
-uncompressed data. This parameter can take one of these forms.
+The parameter C<$output_filename_or_reference> is used to control the
+destination of the uncompressed data. This parameter can take one of
+these forms.
=over 5
=item A filename
-If the C<$output> parameter is a simple scalar, it is assumed to be a
-filename. This file will be opened for writing and the uncompressed
-data will be written to it.
+If the C<$output_filename_or_reference> parameter is a simple scalar, it is
+assumed to be a filename. This file will be opened for writing and the
+uncompressed data will be written to it.
=item A filehandle
-If the C<$output> parameter is a filehandle, the uncompressed data
-will be written to it.
-The string '-' can be used as an alias for standard output.
+If the C<$output_filename_or_reference> parameter is a filehandle, the
+uncompressed data will be written to it. The string '-' can be used as
+an alias for standard output.
=item A scalar reference
-If C<$output> is a scalar reference, the uncompressed data will be
-stored in C<$$output>.
+If C<$output_filename_or_reference> is a scalar reference, the
+uncompressed data will be stored in C<$$output_filename_or_reference>.
=item An Array Reference
-If C<$output> is an array reference, the uncompressed data will be
-pushed onto the array.
+If C<$output_filename_or_reference> is an array reference,
+the uncompressed data will be pushed onto the array.
=item An Output FileGlob
-If C<$output> is a string that is delimited by the characters "<" and ">"
-C<unzip> will assume that it is an I<output fileglob string>. The
-output is the list of files that match the fileglob.
+If C<$output_filename_or_reference> is a string that is delimited by the
+characters "<" and ">" C<unzip> will assume that it is an
+I<output fileglob string>. The output is the list of files that match the
+fileglob.
-When C<$output> is an fileglob string, C<$input> must also be a fileglob
-string. Anything else is an error.
+When C<$output_filename_or_reference> is an fileglob string,
+C<$input_filename_or_reference> must also be a fileglob string. Anything
+else is an error.
See L<File::GlobMapper|File::GlobMapper> for more details.
=back
-If the C<$output> parameter is any other type, C<undef> will be returned.
+If the C<$output_filename_or_reference> parameter is any other type,
+C<undef> will be returned.
=head2 Notes
-When C<$input> maps to multiple compressed files/buffers and C<$output> is
-a single file/buffer, after uncompression C<$output> will contain a
+When C<$input_filename_or_reference> maps to multiple compressed
+files/buffers and C<$output_filename_or_reference> is
+a single file/buffer, after uncompression C<$output_filename_or_reference> will contain a
concatenation of all the uncompressed data from each of the input
files/buffers.
@@ -1403,7 +1409,7 @@ The string '-' can be used as an alias for standard input.
=item A scalar reference
If C<$input> is a scalar reference, the compressed data will be read from
-C<$$output>.
+C<$$input>.
=back
@@ -1623,6 +1629,13 @@ Provides a sub-set of the C<seek> functionality, with the restriction
that it is only legal to seek forward in the input file/buffer.
It is a fatal error to attempt to seek backward.
+Note that the implementation of C<seek> in this module does not provide
+true random access to a compressed file/buffer. It works by uncompressing
+data from the current offset in the file/buffer until it reaches the
+ucompressed offset specified in the parameters to C<seek>. For very small
+files this may be acceptable behaviour. For large files it may cause an
+unacceptable delay.
+
The C<$whence> parameter takes one the usual values, namely SEEK_SET,
SEEK_CUR or SEEK_END.
@@ -1769,7 +1782,7 @@ Same as doing this
=head2 Working with Net::FTP
-See L<IO::Uncompress::Unzip::FAQ|IO::Uncompress::Unzip::FAQ/"Compressed files and Net::FTP">
+See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
=head2 Walking through a zip file
@@ -1783,7 +1796,7 @@ stream at a time.
or die "Cannot open $zipfile: $UnzipError";
my $status;
- for ($status = 1; $stream > 0; $status = $u->nextStream())
+ for ($status = 1; $status > 0; $status = $u->nextStream())
{
my $name = $u->getHeaderInfo()->{Name};
@@ -1841,7 +1854,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2012 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/000prereq.t b/gnu/usr.bin/perl/cpan/IO-Compress/t/000prereq.t
index d8618117209..764821e9e29 100755
--- a/gnu/usr.bin/perl/cpan/IO-Compress/t/000prereq.t
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/000prereq.t
@@ -25,7 +25,7 @@ BEGIN
if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 };
- my $VERSION = '2.048';
+ my $VERSION = '2.060';
my @NAMES = qw(
Compress::Raw::Bzip2
Compress::Raw::Zlib
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/006zip.t b/gnu/usr.bin/perl/cpan/IO-Compress/t/006zip.t
index b4d1e649fbe..ad05cef376e 100755
--- a/gnu/usr.bin/perl/cpan/IO-Compress/t/006zip.t
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/006zip.t
@@ -19,7 +19,7 @@ BEGIN {
$extra = 1
if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 };
- plan tests => 95 + $extra ;
+ plan tests => 101 + $extra ;
use_ok('IO::Compress::Zip', qw(:all)) ;
use_ok('IO::Uncompress::Unzip', qw(unzip $UnzipError)) ;
@@ -330,3 +330,31 @@ for my $method (ZIP_CM_DEFLATE, ZIP_CM_STORE, ZIP_CM_BZIP2)
ok ! IO::Compress::Zip::isMethodAvailable(999), "999 not available";
}
+
+{
+ title "Memember & Comment 0";
+
+ my $lex = new LexFile my $file1;
+
+ my $content = 'hello' ;
+
+
+ my $zip = new IO::Compress::Zip $file1,
+ Name => "0", Comment => "0" ;
+ isa_ok $zip, "IO::Compress::Zip";
+
+ is $zip->write($content), length($content), "write";
+
+ ok $zip->close(), "closed";
+
+
+
+ my $u = new IO::Uncompress::Unzip $file1, Append => 1, @_
+ or die "Cannot open $file1: $UnzipError";
+
+ isa_ok $u, "IO::Uncompress::Unzip";
+
+ my $name = $u->getHeaderInfo()->{Name};
+
+ is $u->getHeaderInfo()->{Name}, "0", "Name is '0'";
+}
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/01misc.t b/gnu/usr.bin/perl/cpan/IO-Compress/t/01misc.t
index 528b71f0342..150fb69bd6b 100755
--- a/gnu/usr.bin/perl/cpan/IO-Compress/t/01misc.t
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/01misc.t
@@ -19,7 +19,7 @@ BEGIN {
$extra = 1
if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 };
- plan tests => 140 + $extra ;
+ plan tests => 163 + $extra ;
use_ok('Scalar::Util');
use_ok('IO::Compress::Base::Common');
@@ -47,24 +47,24 @@ sub My::testParseParameters()
like $@, mkErr(': Expected even number of parameters, got 1'),
"Trap odd number of params";
- eval { ParseParameters(1, {'Fred' => [1, 1, Parse_boolean, 0]}, Fred => 'joe') ; };
- like $@, mkErr("Parameter 'Fred' must be an int, got 'joe'"),
+ eval { ParseParameters(1, {'fred' => [Parse_boolean, 0]}, fred => 'joe') ; };
+ like $@, mkErr("Parameter 'fred' must be an int, got 'joe'"),
"wanted unsigned, got undef";
- eval { ParseParameters(1, {'Fred' => [1, 1, Parse_unsigned, 0]}, Fred => undef) ; };
- like $@, mkErr("Parameter 'Fred' must be an unsigned int, got 'undef'"),
+ eval { ParseParameters(1, {'fred' => [Parse_unsigned, 0]}, fred => undef) ; };
+ like $@, mkErr("Parameter 'fred' must be an unsigned int, got 'undef'"),
"wanted unsigned, got undef";
- eval { ParseParameters(1, {'Fred' => [1, 1, Parse_signed, 0]}, Fred => undef) ; };
- like $@, mkErr("Parameter 'Fred' must be a signed int, got 'undef'"),
+ eval { ParseParameters(1, {'fred' => [Parse_signed, 0]}, fred => undef) ; };
+ like $@, mkErr("Parameter 'fred' must be a signed int, got 'undef'"),
"wanted signed, got undef";
- eval { ParseParameters(1, {'Fred' => [1, 1, Parse_signed, 0]}, Fred => 'abc') ; };
- like $@, mkErr("Parameter 'Fred' must be a signed int, got 'abc'"),
+ eval { ParseParameters(1, {'fred' => [Parse_signed, 0]}, fred => 'abc') ; };
+ like $@, mkErr("Parameter 'fred' must be a signed int, got 'abc'"),
"wanted signed, got 'abc'";
- eval { ParseParameters(1, {'Fred' => [1, 1, Parse_code, undef]}, Fred => 'abc') ; };
- like $@, mkErr("Parameter 'Fred' must be a code reference, got 'abc'"),
+ eval { ParseParameters(1, {'fred' => [Parse_code, undef]}, fred => 'abc') ; };
+ like $@, mkErr("Parameter 'fred' must be a code reference, got 'abc'"),
"wanted code, got 'abc'";
@@ -72,89 +72,120 @@ sub My::testParseParameters()
{
use Config;
- skip 'readonly + threads', 1
+ skip 'readonly + threads', 2
if $Config{useithreads};
- eval { ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, 0]}, Fred => 'abc') ; };
- like $@, mkErr("Parameter 'Fred' not writable"),
+ eval { ParseParameters(1, {'fred' => [Parse_writable_scalar, 0]}, fred => 'abc') ; };
+ like $@, mkErr("Parameter 'fred' not writable"),
+ "wanted writable, got readonly";
+
+ eval { ParseParameters(1, {'fred' => [Parse_writable_scalar, 0]}, fred => \'abc') ; };
+ like $@, mkErr("Parameter 'fred' not writable"),
"wanted writable, got readonly";
}
my @xx;
- eval { ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, 0]}, Fred => \@xx) ; };
- like $@, mkErr("Parameter 'Fred' not a scalar reference"),
+ eval { ParseParameters(1, {'fred' => [Parse_writable_scalar, 0]}, fred => \@xx) ; };
+ like $@, mkErr("Parameter 'fred' not a scalar reference"),
"wanted scalar reference";
local *ABC;
- eval { ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, 0]}, Fred => *ABC) ; };
- like $@, mkErr("Parameter 'Fred' not a scalar"),
+ eval { ParseParameters(1, {'fred' => [Parse_writable_scalar, 0]}, fred => *ABC) ; };
+ like $@, mkErr("Parameter 'fred' not a scalar"),
"wanted scalar";
- eval { ParseParameters(1, {'Fred' => [1, 1, Parse_any, 0]}, Fred => 1, Fred => 2) ; };
- like $@, mkErr("Muliple instances of 'Fred' found"),
+ eval { ParseParameters(1, {'fred' => [Parse_any, 0]}, fred => 1, fred => 2) ; };
+ like $@, mkErr("Muliple instances of 'fred' found"),
"multiple instances";
- my $g = ParseParameters(1, {'Fred' => [1, 1, Parse_unsigned|Parse_multiple, 7]}, Fred => 1, Fred => 2) ;
- is_deeply $g->value('Fred'), [ 1, 2 ] ;
+# my $g = ParseParameters(1, {'fred' => [Parse_unsigned|Parse_multiple, 7]}, fred => 1, fred => 2) ;
+# is_deeply $g->value('fred'), [ 1, 2 ] ;
+ ok 1;
#ok 1;
- my $got = ParseParameters(1, {'Fred' => [1, 1, 0x1000000, 0]}, Fred => 'abc') ;
- is $got->value('Fred'), "abc", "other" ;
+ my $got = ParseParameters(1, {'fred' => [0x1000000, 0]}, fred => 'abc') ;
+ is $got->getValue('fred'), "abc", "other" ;
- $got = ParseParameters(1, {'Fred' => [0, 1, Parse_any, undef]}, Fred => undef) ;
- ok $got->parsed('Fred'), "undef" ;
- ok ! defined $got->value('Fred'), "undef" ;
+ $got = ParseParameters(1, {'fred' => [Parse_any, undef]}, fred => undef) ;
+ ok $got->parsed('fred'), "undef" ;
+ ok ! defined $got->getValue('fred'), "undef" ;
- $got = ParseParameters(1, {'Fred' => [0, 1, Parse_string, undef]}, Fred => undef) ;
- ok $got->parsed('Fred'), "undef" ;
- is $got->value('Fred'), "", "empty string" ;
+ $got = ParseParameters(1, {'fred' => [Parse_string, undef]}, fred => undef) ;
+ ok $got->parsed('fred'), "undef" ;
+ is $got->getValue('fred'), "", "empty string" ;
my $xx;
- $got = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, Fred => $xx) ;
+ $got = ParseParameters(1, {'fred' => [Parse_writable_scalar, undef]}, fred => $xx) ;
- ok $got->parsed('Fred'), "parsed" ;
- my $xx_ref = $got->value('Fred');
+ ok $got->parsed('fred'), "parsed" ;
+ my $xx_ref = $got->getValue('fred');
$$xx_ref = 77 ;
is $xx, 77;
- $got = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, Fred => \$xx) ;
+ $got = ParseParameters(1, {'fred' => [Parse_writable_scalar, undef]}, fred => \$xx) ;
- ok $got->parsed('Fred'), "parsed" ;
- $xx_ref = $got->value('Fred');
+ ok $got->parsed('fred'), "parsed" ;
+ $xx_ref = $got->getValue('fred');
$$xx_ref = 666 ;
is $xx, 666;
{
- my $got1 = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, $got) ;
+ my $got1 = ParseParameters(1, {'fred' => [Parse_writable_scalar, undef]}, $got) ;
is $got1, $got, "Same object";
- ok $got1->parsed('Fred'), "parsed" ;
- $xx_ref = $got1->value('Fred');
+ ok $got1->parsed('fred'), "parsed" ;
+ $xx_ref = $got1->getValue('fred');
$$xx_ref = 777 ;
is $xx, 777;
}
+
+ for my $type (Parse_unsigned, Parse_signed, Parse_any)
+ {
+ my $value = 0;
+ my $got1 ;
+ eval { $got1 = ParseParameters(1, {'fred' => [$type, 1]}, fred => $value) } ;
+
+ ok ! $@;
+ ok $got1->parsed('fred'), "parsed ok" ;
+ is $got1->getValue('fred'), 0;
+ }
+
+ {
+ # setValue/getValue
+ my $value = 0;
+ my $got1 ;
+ eval { $got1 = ParseParameters(1, {'fred' => [Parse_any, 1]}, fred => $value) } ;
-## my $got2 = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, '__xxx__' => $got) ;
-## isnt $got2, $got, "not the Same object";
-##
-## ok $got2->parsed('Fred'), "parsed" ;
-## $xx_ref = $got2->value('Fred');
-## $$xx_ref = 888 ;
-## is $xx, 888;
-##
-## my $other;
-## my $got3 = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, '__xxx__' => $got, Fred => \$other) ;
-## isnt $got3, $got, "not the Same object";
-##
-## exit;
-## ok $got3->parsed('Fred'), "parsed" ;
-## $xx_ref = $got3->value('Fred');
-## $$xx_ref = 999 ;
-## is $other, 999;
-## is $xx, 888;
+ ok ! $@;
+ ok $got1->parsed('fred'), "parsed ok" ;
+ is $got1->getValue('fred'), 0;
+ $got1->setValue('fred' => undef);
+ is $got1->getValue('fred'), undef;
+ }
+
+ {
+ # twice
+ my $value = 0;
+
+ my $got = IO::Compress::Base::Parameters::new();
+
+
+ ok $got->parse({'fred' => [Parse_any, 1]}, fred => $value) ;
+
+ ok $got->parsed('fred'), "parsed ok" ;
+ is $got->getValue('fred'), 0;
+
+ ok $got->parse({'fred' => [Parse_any, 1]}, fred => undef) ;
+ ok $got->parsed('fred'), "parsed ok" ;
+ is $got->getValue('fred'), undef;
+
+ ok $got->parse({'fred' => [Parse_any, 1]}, fred => 7) ;
+ ok $got->parsed('fred'), "parsed ok" ;
+ is $got->getValue('fred'), 7;
+ }
}
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/encode.pl b/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/encode.pl
index 142bd08e596..875f0ceab71 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/encode.pl
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/compress/encode.pl
@@ -1,7 +1,7 @@
use strict;
use warnings;
-use bytes;
+#use bytes;
use Test::More ;
use CompTestUtils;
@@ -23,7 +23,7 @@ BEGIN
$extra = 1
if $st ;
- plan(tests => 7 + $extra) ;
+ plan(tests => 29 + $extra) ;
}
sub run
@@ -34,7 +34,7 @@ sub run
my $UnError = getErrorRef($UncompressClass);
- my $string = "\x{df}\x{100}";
+ my $string = "\x{df}\x{100}\x80";
my $encString = Encode::encode_utf8($string);
my $buffer = $encString;
@@ -92,10 +92,13 @@ sub run
my $ucs = new $UncompressClass($input, Append => 1);
my $got;
1 while $ucs->read($got) > 0 ;
+
+ is $got, $encString, " Expected output";
+
my $decode = Encode::decode_utf8($got);
- is $string, $decode, " Expected output";
+ is $decode, $string, " Expected output";
}
@@ -110,9 +113,81 @@ sub run
eval { $cs->syswrite($a) };
like($@, qr/Wide character in ${CompressClass}::write/,
" wide characters in ${CompressClass}::write");
- eval { syswrite($cs, $a) };
- like($@, qr/Wide character in ${CompressClass}::write/,
- " wide characters in ${CompressClass}::write");
+
+ }
+
+ {
+ title "Unknown encoding";
+ my $output;
+ eval { my $cs = new $CompressClass(\$output, Encode => 'fred'); } ;
+ like($@, qr/${CompressClass}: Encoding 'fred' is not available/,
+ " Encoding 'fred' is not available");
+ }
+
+ {
+ title "Encode option";
+
+ for my $to ( qw(filehandle filename buffer))
+ {
+ title "Encode: To $to, Encode option";
+
+ my $lex2 = new LexFile my $name2 ;
+ my $output;
+ my $buffer;
+
+ if ($to eq 'buffer')
+ {
+ $output = \$buffer
+ }
+ elsif ($to eq 'filename')
+ {
+ $output = $name2 ;
+ }
+ elsif ($to eq 'filehandle')
+ {
+ $output = new IO::File ">$name2" ;
+ }
+
+ my $out ;
+ my $cs = new $CompressClass($output, AutoClose =>1, Encode => 'utf8');
+ ok $cs->print($string);
+ ok $cs->close();
+
+ my $input;
+ if ($to eq 'buffer')
+ {
+ $input = \$buffer
+ }
+ elsif ($to eq 'filename')
+ {
+ $input = $name2 ;
+ }
+ else
+ {
+ $input = new IO::File "<$name2" ;
+ }
+
+ {
+ my $ucs = new $UncompressClass($input, AutoClose =>1, Append => 1);
+ my $got;
+ 1 while $ucs->read($got) > 0 ;
+ ok length($got) > 0;
+ is $got, $encString, " Expected output";
+
+ my $decode = Encode::decode_utf8($got);
+
+ is $decode, $string, " Expected output";
+ }
+
+
+# {
+# my $ucs = new $UncompressClass($input, Append => 1, Decode => 'utf8');
+# my $got;
+# 1 while $ucs->read($got) > 0 ;
+# ok length($got) > 0;
+# is $got, $string, " Expected output";
+# }
+ }
}
}
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/t/cz-14gzopen.t b/gnu/usr.bin/perl/cpan/IO-Compress/t/cz-14gzopen.t
index 0918ce5482c..01d2d65a2bc 100755
--- a/gnu/usr.bin/perl/cpan/IO-Compress/t/cz-14gzopen.t
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/t/cz-14gzopen.t
@@ -20,7 +20,7 @@ BEGIN {
$extra = 1
if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 };
- plan tests => 260 + $extra ;
+ plan tests => 264 + $extra ;
use_ok('Compress::Zlib', 2) ;
use_ok('IO::Compress::Gzip::Constants') ;
@@ -489,6 +489,9 @@ foreach my $stdio ( ['-', '-'], [*STDIN, *STDOUT])
SKIP:
{
+ skip "Cannot create non-writable file", 3
+ if $^O eq 'cygwin';
+
my $lex = new LexFile my $name ;
writeFile($name, "abc");
chmod 0444, $name
@@ -651,7 +654,20 @@ foreach my $stdio ( ['-', '-'], [*STDIN, *STDOUT])
}
{
- title 'gzflush called twice';
+ title 'gzflush called twice with Z_SYNC_FLUSH - no compression';
+
+ my $lex = new LexFile my $name ;
+
+ ok my $a = gzopen($name, "w");
+
+ is $a->gzflush(Z_SYNC_FLUSH), Z_OK, "gzflush returns Z_OK";
+ is $a->gzflush(Z_SYNC_FLUSH), Z_OK, "gzflush returns Z_OK";
+}
+
+
+
+{
+ title 'gzflush called twice - after compression';
my $lex = new LexFile my $name ;
diff --git a/gnu/usr.bin/perl/cpan/IPC-Cmd/lib/IPC/Cmd.pm b/gnu/usr.bin/perl/cpan/IPC-Cmd/lib/IPC/Cmd.pm
index 99ba7bf9886..c3d18b54617 100644
--- a/gnu/usr.bin/perl/cpan/IPC-Cmd/lib/IPC/Cmd.pm
+++ b/gnu/usr.bin/perl/cpan/IPC-Cmd/lib/IPC/Cmd.pm
@@ -17,7 +17,7 @@ BEGIN {
$INSTANCES $ALLOW_NULL_ARGS
];
- $VERSION = '0.76';
+ $VERSION = '0.80';
$VERBOSE = 0;
$DEBUG = 0;
$WARN = 1;
@@ -212,7 +212,6 @@ sub can_run {
return $command if scalar $syms->getsym( uc $command );
}
- require Config;
require File::Spec;
require ExtUtils::MakeMaker;
@@ -223,7 +222,7 @@ sub can_run {
} else {
for my $dir (
- (split /\Q$Config::Config{path_sep}\E/, $ENV{PATH}),
+ File::Spec->path,
File::Spec->curdir
) {
next if ! $dir || ! -d $dir;
@@ -529,7 +528,7 @@ sub open3_run {
#
kill(-9, $$);
- exit 1;
+ POSIX::_exit 1;
}
if ($got_sig_child) {
@@ -1046,7 +1045,7 @@ sub run_forked {
$opts->{'child_END'}->();
}
- exit $child_exit_code;
+ POSIX::_exit $child_exit_code;
}
}
@@ -1883,7 +1882,7 @@ special characters are escaped and passed as arguments instead of retaining
their special meaning.
However, if the command contained arguments that contained whitespace,
-stringifying the command would loose the significance of the whitespace.
+stringifying the command would lose the significance of the whitespace.
Therefore, C<IPC::Cmd> will quote any arguments containing whitespace in your
command if the command is passed as an arrayref and contains special characters.
diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/lib/JSON/PP.pm b/gnu/usr.bin/perl/cpan/JSON-PP/lib/JSON/PP.pm
index 2e617fc6227..e9e65b11c1c 100644
--- a/gnu/usr.bin/perl/cpan/JSON-PP/lib/JSON/PP.pm
+++ b/gnu/usr.bin/perl/cpan/JSON-PP/lib/JSON/PP.pm
@@ -11,7 +11,7 @@ use Carp ();
use B ();
#use Devel::Peek;
-$JSON::PP::VERSION = '2.27200';
+$JSON::PP::VERSION = '2.27202';
@JSON::PP::EXPORT = qw(encode_json decode_json from_json to_json);
@@ -1630,32 +1630,14 @@ JSON::PP - JSON::XS compatible pure-Perl module.
=head1 VERSION
- 2.27200
+ 2.27202
L<JSON::XS> 2.27 (~2.30) compatible.
=head1 NOTE
-JSON::PP was inculded in JSON distribution (CPAN module).
-It comes to be a perl core module in Perl 5.14.
-
- [STEPS]
-
- * release this module as JSON::PPdev.
-
- * release other PP::* modules as JSON::PP::Compat*.
-
- * JSON distribution will inculde yet another JSON::PP modules.
- They are JSNO::backportPP. So JSON.pm should work as it did at all!
-
- * remove JSON::PP and JSON::PP::* modules from JSON distribution
- and release it as developer version.
-
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- * release JSON distribution as stable version.
-
- * rename JSON::PPdev into JSON::PP and release on CPAN. <<<< HERE
+JSON::PP had been inculded in JSON distribution (CPAN module).
+It was a perl core module in Perl 5.14.
=head1 DESCRIPTION
@@ -2809,7 +2791,7 @@ Makamaka Hannyaharamitu, E<lt>makamaka[at]cpan.orgE<gt>
=head1 COPYRIGHT AND LICENSE
-Copyright 2007-2011 by Makamaka Hannyaharamitu
+Copyright 2007-2013 by Makamaka Hannyaharamitu
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/JSON-PP/t/019_incr.t b/gnu/usr.bin/perl/cpan/JSON-PP/t/019_incr.t
index c5fab960020..dc84c551060 100644
--- a/gnu/usr.bin/perl/cpan/JSON-PP/t/019_incr.t
+++ b/gnu/usr.bin/perl/cpan/JSON-PP/t/019_incr.t
@@ -13,11 +13,13 @@ use JSON::PP;
if ( $] >= 5.006 ) {
-eval <<'TEST';
+eval <<'TEST' or die "Failed to eval test code for version $]: $@";
sub splitter {
my ($coder, $text) = @_;
+ $coder->canonical(1) if $] >= 5.017009;
+
for (0 .. length $text) {
my $a = substr $text, 0, $_;
my $b = substr $text, $_;
@@ -27,7 +29,7 @@ sub splitter {
my $data = $coder->incr_parse;
ok ($data);
- ok ($coder->encode ($data) eq $coder->encode ($coder->decode ($text)), "data");
+ is ($coder->encode ($data), $coder->encode ($coder->decode ($text)), "data");
ok ($coder->incr_text =~ /^\s*$/, "tailws");
}
}
@@ -75,16 +77,15 @@ splitter +JSON::PP->new->allow_nonref, ' "5" ';
ok ('[5]' eq $coder->encode (scalar $coder->incr_parse), "sparse3");
}
-
+1
TEST
-print $@;
}
else {
-eval <<'TEST';
+eval <<'TEST' or die "Failed to eval test code for version $]: $@";
my $incr_text;
@@ -148,8 +149,6 @@ splitter +JSON::PP->new->allow_nonref, ' "5" ';
TEST
-print $@;
-
} # for 5.005
diff --git a/gnu/usr.bin/perl/cpan/List-Util/Makefile.PL b/gnu/usr.bin/perl/cpan/List-Util/Makefile.PL
index 40f91670e51..5068e34598e 100644
--- a/gnu/usr.bin/perl/cpan/List-Util/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/List-Util/Makefile.PL
@@ -28,7 +28,7 @@ WriteMakefile(
( $PERL_CORE
? ()
: (
- INSTALLDIRS => q[perl],
+ INSTALLDIRS => ($] < 5.011 ? q[perl] : q[site]),
PREREQ_PM => {'Test::More' => 0,},
(eval { ExtUtils::MakeMaker->VERSION(6.31) } ? (LICENSE => 'perl') : ()),
( eval { ExtUtils::MakeMaker->VERSION(6.46) } ? (
diff --git a/gnu/usr.bin/perl/cpan/List-Util/t/dualvar.t b/gnu/usr.bin/perl/cpan/List-Util/t/dualvar.t
index 5c0fe2140bd..abd6479001b 100755
--- a/gnu/usr.bin/perl/cpan/List-Util/t/dualvar.t
+++ b/gnu/usr.bin/perl/cpan/List-Util/t/dualvar.t
@@ -16,22 +16,27 @@ BEGIN {
use Scalar::Util ();
use Test::More (grep { /dualvar/ } @Scalar::Util::EXPORT_FAIL)
? (skip_all => 'dualvar requires XS version')
- : (tests => 13);
+ : (tests => 41);
+use Config;
Scalar::Util->import('dualvar');
+Scalar::Util->import('isdual');
$var = dualvar( 2.2,"string");
+ok( isdual($var), 'Is a dualvar');
ok( $var == 2.2, 'Numeric value');
ok( $var eq "string", 'String value');
$var2 = $var;
+ok( isdual($var2), 'Is a dualvar');
ok( $var2 == 2.2, 'copy Numeric value');
ok( $var2 eq "string", 'copy String value');
$var++;
+ok( ! isdual($var), 'No longer dualvar');
ok( $var == 3.2, 'inc Numeric value');
ok( $var ne "string", 'inc String value');
@@ -40,15 +45,23 @@ my $numtmp = int($numstr); # use $numstr as an int
$var = dualvar($numstr, "");
+ok( isdual($var), 'Is a dualvar');
ok( $var == $numstr, 'NV');
SKIP: {
skip("dualvar with UV value known to fail with $]",2) if $] < 5.006_001;
- $var = dualvar(1<<31, "");
- ok( $var == (1<<31), 'UV 1');
- ok( $var > 0, 'UV 2');
+ my $bits = ($Config{'use64bitint'}) ? 63 : 31;
+ $var = dualvar(1<<$bits, "");
+ ok( isdual($var), 'Is a dualvar');
+ ok( $var == (1<<$bits), 'UV 1');
+ ok( $var > 0, 'UV 2');
}
+# Create a dualvar "the old fashioned way"
+$var = "10";
+ok( ! isdual($var), 'Not a dualvar');
+my $foo = $var + 0;
+ok( isdual($var), 'Is a dualvar');
{
package Tied;
@@ -59,12 +72,54 @@ SKIP: {
tie my $tied, 'Tied';
$var = dualvar($tied, "ok");
+ok(isdual($var), 'Is a dualvar');
ok($var == 7.5, 'Tied num');
ok($var eq 'ok', 'Tied str');
SKIP: {
- skip("need utf8::is_utf8",2) unless defined &utf8::is_utf8;
+ skip("need utf8::is_utf8",3) unless defined &utf8::is_utf8;
ok(!!utf8::is_utf8(dualvar(1,chr(400))), 'utf8');
ok( !utf8::is_utf8(dualvar(1,"abc")), 'not utf8');
}
+
+
+SKIP: {
+ skip("Perl not compiled with 'useithreads'",20) unless ($Config{'useithreads'});
+ require threads; import threads;
+ require threads::shared; import threads::shared;
+ skip("Requires threads::shared v1.42 or later",20) unless ($threads::shared::VERSION >= 1.42);
+
+ my $siv :shared = dualvar(42, 'Fourty-Two');
+ my $snv :shared = dualvar(3.14, 'PI');
+ my $bits = ($Config{'use64bitint'}) ? 63 : 31;
+ my $suv :shared = dualvar(1<<$bits, 'Large unsigned int');
+
+ ok($siv == 42, 'Shared IV number preserved');
+ ok($siv eq 'Fourty-Two', 'Shared string preserved');
+ ok(isdual($siv), 'Is a dualvar');
+ ok($snv == 3.14, 'Shared NV number preserved');
+ ok($snv eq 'PI', 'Shared string preserved');
+ ok(isdual($snv), 'Is a dualvar');
+ ok($suv == (1<<$bits), 'Shared UV number preserved');
+ ok($suv > 0, 'Shared UV number preserved');
+ ok($suv eq 'Large unsigned int', 'Shared string preserved');
+ ok(isdual($suv), 'Is a dualvar');
+
+ my @ary :shared;
+ $ary[0] = $siv;
+ $ary[1] = $snv;
+ $ary[2] = $suv;
+
+ ok($ary[0] == 42, 'Shared IV number preserved');
+ ok($ary[0] eq 'Fourty-Two', 'Shared string preserved');
+ ok(isdual($ary[0]), 'Is a dualvar');
+ ok($ary[1] == 3.14, 'Shared NV number preserved');
+ ok($ary[1] eq 'PI', 'Shared string preserved');
+ ok(isdual($ary[1]), 'Is a dualvar');
+ ok($ary[2] == (1<<$bits), 'Shared UV number preserved');
+ ok($ary[2] > 0, 'Shared UV number preserved');
+ ok($ary[2] eq 'Large unsigned int', 'Shared string preserved');
+ ok(isdual($ary[2]), 'Is a dualvar');
+}
+
diff --git a/gnu/usr.bin/perl/cpan/List-Util/t/multicall-refcount.t b/gnu/usr.bin/perl/cpan/List-Util/t/multicall-refcount.t
new file mode 100644
index 00000000000..1d6fb598081
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/List-Util/t/multicall-refcount.t
@@ -0,0 +1,21 @@
+use Test::More tests => 1;
+
+use List::Util 'first';
+
+our $comparison;
+
+sub foo {
+ if( $comparison ) {
+ return 1;
+ }
+ else {
+ local $comparison = 1;
+ first \&foo, 1,2,3;
+ }
+}
+
+for(1,2){
+ foo();
+}
+
+ok( "Didn't crash calling recursively" );
diff --git a/gnu/usr.bin/perl/cpan/List-Util/t/sum0.t b/gnu/usr.bin/perl/cpan/List-Util/t/sum0.t
new file mode 100644
index 00000000000..e76f8a79d37
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/List-Util/t/sum0.t
@@ -0,0 +1,15 @@
+use strict;
+use warnings;
+
+use Test::More tests => 3;
+
+use List::Util qw( sum0 );
+
+my $v = sum0;
+is( $v, 0, 'no args' );
+
+$v = sum0(9);
+is( $v, 9, 'one arg' );
+
+$v = sum0(1,2,3,4);
+is( $v, 10, '4 args');
diff --git a/gnu/usr.bin/perl/cpan/List-Util/t/tainted.t b/gnu/usr.bin/perl/cpan/List-Util/t/tainted.t
index ab40aa69fed..8666117fe43 100755
--- a/gnu/usr.bin/perl/cpan/List-Util/t/tainted.t
+++ b/gnu/usr.bin/perl/cpan/List-Util/t/tainted.t
@@ -26,7 +26,7 @@ my $var = 2;
ok( !tainted($var), 'known variable');
-my $key = (keys %ENV)[0];
+my $key = (grep { !/^PERL/ } keys %ENV)[0];
ok( tainted($ENV{$key}), 'environment variable');
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes.pm
index c6a8257c37c..b8c0e39a780 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes.pm
@@ -1,13 +1,13 @@
package Locale::Codes;
# Copyright (C) 2001 Canon Research Centre Europe (CRE).
# Copyright (C) 2002-2009 Neil Bowers
-# Copyright (c) 2010-2012 Sullivan Beck
+# Copyright (c) 2010-2013 Sullivan Beck
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
use strict;
+require 5.006;
use warnings;
-require 5.002;
use Carp;
use Locale::Codes::Constants;
@@ -31,7 +31,7 @@ our($VERSION,%Data,%Retired);
# $Retired{ TYPE }{ CODESET }{ code }{ CODE } = NAME
# { name }{ NAME } = [CODE,NAME] (the key is lowercase)
-$VERSION='3.21';
+$VERSION='3.25';
#=======================================================================
#
@@ -486,7 +486,7 @@ sub _delete_alias {
return 0;
}
- my $n = $#{ $Data{$type}{'id2names'}{$id} };
+ my $n = $#{ $Data{$type}{'id2names'}{$id} } + 1;
if ($n == 1) {
carp "delete_${type}_alias(): only one name defined (use _delete_${type} instead)\n"
unless ($nowarn);
@@ -687,79 +687,6 @@ sub _delete_code_alias {
return 1;
}
-#=======================================================================
-#
-# alias_code ( ALIAS => CODE [ , CODESET ] )
-#
-# Add an alias for an existing code. If the CODESET isn't specified,
-# then we use the default (currently the alpha-2 codeset).
-#
-# Locale::Country::alias_code('uk' => 'gb');
-#
-#=======================================================================
-
-# sub alias_code {
-# my $nowarn = 0;
-# $nowarn = 1, pop if ($_[$#_] eq "nowarn");
-# my $alias = shift;
-# my $code = shift;
-# my $codeset = @_ > 0 ? shift : LOCALE_CODE_DEFAULT;
-
-# return 0 if ($codeset !~ /^\d+$/);
-
-# if ($codeset == LOCALE_CODE_ALPHA_2) {
-# $codeset = "alpha2";
-# $alias = lc($alias);
-# } elsif ($codeset == LOCALE_CODE_ALPHA_3) {
-# $codeset = "alpha3";
-# $alias = lc($alias);
-# } elsif ($codeset == LOCALE_CODE_FIPS) {
-# $codeset = "fips";
-# $alias = uc($alias);
-# } elsif ($codeset == LOCALE_CODE_NUMERIC) {
-# $codeset = "num";
-# return undef if ($alias =~ /\D/);
-# $alias = sprintf("%.3d", $alias);
-# } else {
-# carp "rename_country(): unknown codeset\n" unless ($nowarn);
-# return 0;
-# }
-
-# # Check that $code exists in the codeset.
-
-# my ($id,$i);
-# if (exists $Data{$type}{'code2id'}{$codeset}{$code}) {
-# ($id,$i) = @{ $Data{$type}{'code2id'}{$codeset}{$code} };
-# } else {
-# carp "alias_code: attempt to alias \"$alias\" to unknown country code \"$code\"\n"
-# unless ($nowarn);
-# return 0;
-# }
-
-# # Cases:
-# # The alias already exists.
-# # Error
-# #
-# # It's new
-# # Create a new entry in Code2CountryID
-# # Replace the entiry in CountryID2Code
-# # Regenerate %Codes
-
-# if (exists $Data{$type}{'code2id'}{$codeset}{$alias}) {
-# carp "alias_code: attempt to alias \"$alias\" which is already in use\n"
-# unless ($nowarn);
-# return 0;
-# }
-
-# $Data{$type}{'code2id'}{$codeset}{$alias} = [ $id, $i ];
-# $Data{$type}{'id2names'}ID2Code{$codeset}{$id} = $alias;
-
-# my @codes = keys %{ $Data{$type}{'code2id'}{$codeset} };
-# $Locale::CountryCodes::Codes{$codeset} = [ sort @codes ];
-
-# return $alias;
-# }
-
1;
# Local Variables:
# mode: cperl
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes.pod
index df10c849a1b..c971b896bf0 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes.pod
@@ -244,6 +244,18 @@ Codes for identification of scripts.
Codes for identification of currencies and funds.
+=item B<Locale::Codes::LangExt>
+
+Codes for identification of language extensions.
+
+=item B<Locale::Codes::LangVar>
+
+Codes for identification of language variations.
+
+=item B<Locale::Codes::LangFam>
+
+Codes for identification of language families.
+
=item B<Locale::Codes::Changes>
A history of changes made to this distribution.
@@ -277,7 +289,7 @@ perl problem tracker at:
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001 Michael Hennecke (Locale::Currency)
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/API.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/API.pod
index 1a566d2b157..1e48e0fb95d 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/API.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/API.pod
@@ -278,7 +278,7 @@ delete the alias.
=over 4
-=item B<*>
+=item B<Relationship between code sets>
Because each code set uses a slightly different list of elements, and
they are not necessarily one-to-one, there may be some confusion
@@ -291,7 +291,7 @@ to different islands (Baker Island, Howland Island, etc.).
This may cause some confusion... I've done the best that I could do
to minimize it.
-=item B<*>
+=item B<Non-ASCII characters not supported>
Currently all names must be all ASCII. I plan on relaxing that
limitation in the future.
@@ -312,7 +312,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Changes.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Changes.pod
index 88e91c78488..a9f358df251 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Changes.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Changes.pod
@@ -22,7 +22,74 @@ September, December). I will also check on request, so if a code
changes that you use, feel free to contact me. Any time there are new
codes, I will add them to the module and release a new version.
-=head1 VERSION 3.22 (yyyy-mm-dd; sbeck)
+=head1 VERSION 3.28 (planned 2013-12-01; sbeck)
+
+=head1 VERSION 3.27 (planned 2013-09-01; sbeck)
+
+=head1 VERSION 3.26 (planned 2013-06-01; sbeck)
+
+=head1 VERSION 3.25 (2013-03-01; sbeck)
+
+NEW CODE(s)
+
+=head1 VERSION 3.24 (2012-12-03; sbeck)
+
+NEW CODE(s)
+
+=over 4
+
+=item B<Syria alias>
+
+Syria added as an alias. RT 82747
+
+=item B<FIPS-10 country codes deprecated>
+
+The FIPS-10 document is being withdrawn. It was deprecated in 2008,
+and is being updated now only until all the agencies that use it have
+switched to something else. The current version no longer lists the
+long names for countries. These long names (such as 'Republic of
+Albania' for Albania) only appeared in the old FIPS-10 document which
+is no longer available, so they are no longer available in this module.
+
+I will continue to support the FIPS-10 codeset as long as it is available,
+but at that point, it will be withdrawn immediately. If an official
+end-of-life date is announced, I will include a notice here. Otherwise, support
+for the codeset will be discontinued when the document is withdrawn.
+
+You are encouraged to no longer use the FIPS-10 codeset.
+
+=item B<Domain country codes now come from ISO 3166>
+
+The IANA domain codes have changed slightly. The IANA no longer
+publishes a list of countries associated with their codes. Instead,
+they use the ISO 3166 codes and country names. However, they support
+a few non-standard codes, so I will continue to maintain this codeset.
+The domain codes are now lowercase to correspond to the ISO 3166 codes.
+
+=back
+
+=head1 VERSION 3.23 (2012-09-01; sbeck)
+
+NEW CODE(s)
+
+=head1 VERSION 3.22 (2012-06-01; sbeck)
+
+NEW CODE(s)
+
+=over 4
+
+=item B<Updated perl version required>
+
+Changed 'require 5.002' (which dated back to the version 2.xx Locale-Codes)
+to 'require 5.006'. Some features used in Locale-Codes are not supported that
+far back. Nicholas Clark
+
+=item B<Sorted deprecated codes>
+
+The codes in the generated deprecated codes modules were not sorted making version
+diffs bigger than they should be. Nicholas Clark
+
+=back
=head1 VERSION 3.21 (2012-03-01; sbeck)
@@ -562,7 +629,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
=head1 COPYRIGHT
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Constants.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Constants.pm
index 64b96edde74..142318d4e87 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Constants.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Constants.pm
@@ -1,7 +1,7 @@
package Locale::Codes::Constants;
# Copyright (C) 2001 Canon Research Centre Europe (CRE).
# Copyright (C) 2002-2009 Neil Bowers
-# Copyright (c) 2010-2012 Sullivan Beck
+# Copyright (c) 2010-2013 Sullivan Beck
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -17,7 +17,7 @@ require Exporter;
our($VERSION,@ISA,@EXPORT);
our(%ALL_CODESETS);
-$VERSION='3.21';
+$VERSION='3.25';
@ISA = qw(Exporter);
@EXPORT = qw(LOCALE_CODE_ALPHA_2
LOCALE_CODE_ALPHA_3
@@ -60,7 +60,7 @@ $ALL_CODESETS{'country'} = {
'alpha-3' => ['lc'],
'numeric' => ['numeric',3],
'fips-10' => ['uc'],
- 'dom' => ['uc'],
+ 'dom' => ['lc'],
}
};
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Constants.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Constants.pod
index 78ded778e96..4cbff2309d5 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Constants.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Constants.pod
@@ -32,7 +32,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country.pm
index 4e0056fa4d6..423c3ad5898 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country.pm
@@ -1,13 +1,13 @@
package Locale::Codes::Country;
# Copyright (C) 2001 Canon Research Centre Europe (CRE).
# Copyright (C) 2002-2009 Neil Bowers
-# Copyright (c) 2010-2012 Sullivan Beck
+# Copyright (c) 2010-2013 Sullivan Beck
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
use strict;
+require 5.006;
use warnings;
-require 5.002;
require Exporter;
use Carp;
@@ -22,7 +22,7 @@ use Locale::Codes::Country_Retired;
our($VERSION,@ISA,@EXPORT,@EXPORT_OK);
-$VERSION='3.21';
+$VERSION='3.25';
@ISA = qw(Exporter);
@EXPORT = qw(code2country
country2code
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country.pod
index c559c37bf4e..dd60f1f26ca 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country.pod
@@ -72,8 +72,9 @@ National Geospatial-Intelligence Agency.
=item B<dom, LOCALE_CODE_DOM>
-The IANA is responsible for assigning two-letter (uppercase) top-level
-domain names to each country.
+The IANA is responsible for delegating management of the top level country
+domains. The country domains are the two-letter (lowercase) codes from ISO 3166
+with a few other additions.
=back
@@ -162,6 +163,8 @@ so I cannot check the alpha-3 and numerical codes here.
=item B<http://www.iso.org/iso/list-en1-semic-3.txt>
+=item B<http://www.iso.org/iso/home/standards/country_codes/iso-3166-1_decoding_table.htm>
+
The source of ISO 3166-1 two-letter codes used by this
module.
@@ -206,7 +209,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country_Codes.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country_Codes.pm
index 8f172c9a123..7bdf6e93fc6 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country_Codes.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country_Codes.pm
@@ -2,7 +2,7 @@ package Locale::Codes::Country_Codes;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'get_codes' is run.
-# Generated on: Thu Mar 1 08:06:53 EST 2012
+# Generated on: Wed Feb 27 10:04:03 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,41 +33,36 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
+$VERSION='3.25';
-$Locale::Codes::Data{'country'}{'id'} = '0282';
+$Locale::Codes::Data{'country'}{'id'} = '0294';
$Locale::Codes::Data{'country'}{'id2names'} = {
q(0001) => [
q(Afghanistan),
- q(Islamic State of Afghanistan),
],
q(0002) => [
q(Aland Islands),
],
q(0003) => [
q(Albania),
- q(Republic of Albania),
],
q(0004) => [
q(Algeria),
- q(People's Democratic Republic of Algeria),
],
q(0005) => [
q(American Samoa),
- q(Territory of American Samoa),
],
q(0006) => [
q(Andorra),
- q(Principality of Andorra),
],
q(0007) => [
q(Angola),
- q(Republic of Angola),
],
q(0008) => [
q(Anguilla),
@@ -80,71 +75,58 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0011) => [
q(Argentina),
- q(Argentine Republic),
],
q(0012) => [
q(Armenia),
- q(Republic of Armenia),
],
q(0013) => [
q(Aruba),
],
q(0014) => [
q(Australia),
- q(Commonwealth of Australia),
],
q(0015) => [
q(Austria),
- q(Republic of Austria),
],
q(0016) => [
q(Azerbaijan),
- q(Republic of Azerbaijan),
],
q(0017) => [
q(Bahamas),
q(Bahamas, The),
- q(Commonwealth of the Bahamas),
q(The Bahamas),
],
q(0018) => [
q(Bahrain),
- q(State of Bahrain),
],
q(0019) => [
q(Bangladesh),
- q(People's Republic of Bangladesh),
],
q(0020) => [
q(Barbados),
],
q(0021) => [
q(Belarus),
- q(Republic of Belarus),
],
q(0022) => [
q(Belgium),
- q(Kingdom of Belgium),
],
q(0023) => [
q(Belize),
],
q(0024) => [
q(Benin),
- q(Republic of Benin),
],
q(0025) => [
q(Bermuda),
],
q(0026) => [
q(Bhutan),
- q(Kingdom of Bhutan),
],
q(0027) => [
q(Bolivia, Plurinational State of),
q(Bolivia (Plurinational State of)),
q(Bolivia),
- q(Republic of Bolivia),
],
q(0028) => [
q(Bonaire, Saint Eustatius and Saba),
@@ -154,14 +136,12 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0030) => [
q(Botswana),
- q(Republic of Botswana),
],
q(0031) => [
q(Bouvet Island),
],
q(0032) => [
q(Brazil),
- q(Federative Republic of Brazil),
],
q(0033) => [
q(British Indian Ocean Territory),
@@ -169,7 +149,6 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
q(0034) => [
q(Brunei Darussalam),
q(Brunei),
- q(Negara Brunei Darussalam),
],
q(0035) => [
q(Bulgaria),
@@ -179,22 +158,18 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0037) => [
q(Burundi),
- q(Republic of Burundi),
],
q(0038) => [
q(Cambodia),
- q(Kingdom of Cambodia),
],
q(0039) => [
q(Cameroon),
- q(Republic of Cameroon),
],
q(0040) => [
q(Canada),
],
q(0041) => [
q(Cape Verde),
- q(Republic of Cape Verde),
],
q(0042) => [
q(Cayman Islands),
@@ -204,45 +179,36 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0044) => [
q(Chad),
- q(Republic of Chad),
],
q(0045) => [
q(Chile),
- q(Republic of Chile),
],
q(0046) => [
q(China),
- q(People's Republic of China),
],
q(0047) => [
q(Christmas Island),
- q(Territory of Christmas Island),
],
q(0048) => [
q(Cocos (Keeling) Islands),
- q(Territory of Cocos (Keeling) Islands),
q(Keeling Islands),
q(Cocos Islands),
],
q(0049) => [
q(Colombia),
- q(Republic of Colombia),
],
q(0050) => [
q(Comoros),
- q(Federal Islamic Republic of the Comoros),
],
q(0051) => [
q(Congo),
q(Congo (Brazzaville)),
- q(Republic of the Congo),
q(Congo, Republic of the),
q(The Republic of the Congo),
],
q(0052) => [
q(Congo, The Democratic Republic of the),
q(Democratic Republic of the Congo),
- q(Congo (Kinshasa)),
q(Congo, Democratic Republic of the),
q(The Democratic Republic of the Congo),
],
@@ -251,72 +217,57 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0054) => [
q(Costa Rica),
- q(Republic of Costa Rica),
],
q(0055) => [
q(Cote d'Ivoire),
- q(Republic of Cote D'Ivoire),
],
q(0056) => [
q(Croatia),
- q(Republic of Croatia),
],
q(0057) => [
q(Cuba),
- q(Republic of Cuba),
],
q(0058) => [
q(Curacao),
],
q(0059) => [
q(Cyprus),
- q(Republic of Cyprus),
],
q(0060) => [
q(Czech Republic),
],
q(0061) => [
q(Denmark),
- q(Kingdom of Denmark),
],
q(0062) => [
q(Djibouti),
- q(Republic of Djibouti),
],
q(0063) => [
q(Dominica),
- q(Commonwealth of Dominica),
],
q(0064) => [
q(Dominican Republic),
],
q(0065) => [
q(Ecuador),
- q(Republic of Ecuador),
],
q(0066) => [
q(Egypt),
- q(Arab Republic of Egypt),
],
q(0067) => [
q(El Salvador),
- q(Republic of El Salvador),
],
q(0068) => [
q(Equatorial Guinea),
- q(Republic of Equatorial Guinea),
],
q(0069) => [
q(Eritrea),
- q(State of Eritrea),
],
q(0070) => [
q(Estonia),
- q(Republic of Estonia),
],
q(0071) => [
q(Ethiopia),
- q(Federal Democratic Republic of Ethiopia),
],
q(0072) => [
q(Falkland Islands (Malvinas)),
@@ -328,55 +279,44 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0074) => [
q(Fiji),
- q(Republic of the Fiji Islands),
],
q(0075) => [
q(Finland),
- q(Republic of Finland),
],
q(0076) => [
q(France),
- q(French Republic),
],
q(0077) => [
q(French Guiana),
- q(Department of Guiana),
],
q(0078) => [
q(French Polynesia),
- q(Territory of French Polynesia),
],
q(0079) => [
q(French Southern Territories),
q(French Southern and Antarctic Lands),
- q(Territory of the French Southern and Antarctic Lands),
],
q(0080) => [
q(Gabon),
- q(Gabonese Republic),
],
q(0081) => [
q(Gambia),
q(Gambia, The),
- q(Republic of the Gambia),
],
q(0082) => [
q(Georgia),
],
q(0083) => [
q(Germany),
- q(Federal Republic of Germany),
],
q(0084) => [
q(Ghana),
- q(Republic of Ghana),
],
q(0085) => [
q(Gibraltar),
],
q(0086) => [
q(Greece),
- q(Hellenic Republic),
],
q(0087) => [
q(Greenland),
@@ -386,83 +326,65 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0089) => [
q(Guadeloupe),
- q(Department of Guadeloupe),
],
q(0090) => [
q(Guam),
- q(Territory of Guam),
],
q(0091) => [
q(Guatemala),
- q(Republic of Guatemala),
],
q(0092) => [
q(Guernsey),
- q(Bailiwick of Guernsey),
],
q(0093) => [
q(Guinea),
- q(Republic of Guinea),
],
q(0094) => [
q(Guinea-Bissau),
- q(Republic of Guinea-Bissau),
],
q(0095) => [
q(Guyana),
- q(Co-operative Republic of Guyana),
],
q(0096) => [
q(Haiti),
- q(Republic of Haiti),
],
q(0097) => [
q(Heard Island and Mcdonald Islands),
- q(Territory of Heard Island and McDonald Islands),
],
q(0098) => [
q(Holy See (Vatican City State)),
q(Holy See),
q(Vatican City),
- q(State of the Vatican City),
q(Holy See (Vatican City)),
],
q(0099) => [
q(Honduras),
- q(Republic of Honduras),
],
q(0100) => [
q(Hong Kong),
q(China, Hong Kong Special Administrative Region),
q(Hong Kong S.A.R.),
- q(Hong Kong Special Administrative Region),
q(Hong Kong Special Administrative Region of China),
],
q(0101) => [
q(Hungary),
- q(Republic of Hungary),
],
q(0102) => [
q(Iceland),
- q(Republic of Iceland),
],
q(0103) => [
q(India),
- q(Republic of India),
],
q(0104) => [
q(Indonesia),
- q(Republic of Indonesia),
],
q(0105) => [
q(Iran, Islamic Republic of),
q(Iran (Islamic Republic of)),
q(Iran),
- q(Islamic Republic of Iran),
],
q(0106) => [
q(Iraq),
- q(Republic of Iraq),
],
q(0107) => [
q(Ireland),
@@ -472,11 +394,9 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0109) => [
q(Israel),
- q(State of Israel),
],
q(0110) => [
q(Italy),
- q(Italian Republic),
],
q(0111) => [
q(Jamaica),
@@ -486,143 +406,112 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0113) => [
q(Jersey),
- q(Bailiwick of Jersey),
],
q(0114) => [
q(Jordan),
- q(Hashemite Kingdom of Jordan),
],
q(0115) => [
q(Kazakhstan),
- q(Republic of Kazakhstan),
q(Kazakstan),
],
q(0116) => [
q(Kenya),
- q(Republic of Kenya),
],
q(0117) => [
q(Kiribati),
- q(Republic of Kiribati),
],
q(0118) => [
q(Korea, Democratic People's Republic of),
q(Democratic People's Republic of Korea),
- q(Korea, North),
q(North Korea),
],
q(0119) => [
q(Korea, Republic of),
q(Republic of Korea),
- q(Korea, South),
q(South Korea),
],
q(0120) => [
q(Kuwait),
- q(State of Kuwait),
],
q(0121) => [
q(Kyrgyzstan),
- q(Kyrgyz Republic),
],
q(0122) => [
q(Lao People's Democratic Republic),
- q(Laos),
],
q(0123) => [
q(Latvia),
- q(Republic of Latvia),
],
q(0124) => [
q(Lebanon),
- q(Lebanese Republic),
],
q(0125) => [
q(Lesotho),
- q(Republic of Lesotho),
],
q(0126) => [
q(Liberia),
- q(Republic of Liberia),
],
q(0127) => [
q(Libya),
- q(Great Socialist People's Libyan Arab Jamahiriya),
],
q(0128) => [
q(Liechtenstein),
- q(Principality of Liechtenstein),
],
q(0129) => [
q(Lithuania),
- q(Republic of Lithuania),
],
q(0130) => [
q(Luxembourg),
- q(Grand Duchy of Luxembourg),
],
q(0131) => [
q(Macao),
q(China, Macao Special Administrative Region),
+ q(Macau),
q(Macau S.A.R),
- q(Macau Special Administrative Region),
q(Macau S.A.R.),
- q(Macau),
q(Macao Special Administrative Region of China),
],
q(0132) => [
q(Macedonia, The Former Yugoslav Republic of),
q(The former Yugoslav Republic of Macedonia),
q(Macedonia),
- q(Republic of Macedonia),
q(Macedonia, Former Yugoslav Republic of),
],
q(0133) => [
q(Madagascar),
- q(Republic of Madagascar),
],
q(0134) => [
q(Malawi),
- q(Republic of Malawi),
],
q(0135) => [
q(Malaysia),
],
q(0136) => [
q(Maldives),
- q(Republic of Maldives),
],
q(0137) => [
q(Mali),
- q(Republic of Mali),
],
q(0138) => [
q(Malta),
- q(Republic of Malta),
],
q(0139) => [
q(Marshall Islands),
- q(Republic of the Marshall Islands),
],
q(0140) => [
q(Martinique),
- q(Department of Martinique),
],
q(0141) => [
q(Mauritania),
- q(Islamic Republic of Mauritania),
],
q(0142) => [
q(Mauritius),
- q(Republic of Mauritius),
],
q(0143) => [
q(Mayotte),
- q(Territorial Collectivity of Mayotte),
],
q(0144) => [
q(Mexico),
- q(United Mexican States),
],
q(0145) => [
q(Micronesia, Federated States of),
@@ -632,11 +521,9 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
q(0146) => [
q(Moldova, Republic of),
q(Republic of Moldova),
- q(Moldova),
],
q(0147) => [
q(Monaco),
- q(Principality of Monaco),
],
q(0148) => [
q(Mongolia),
@@ -649,139 +536,109 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0151) => [
q(Morocco),
- q(Kingdom of Morocco),
],
q(0152) => [
q(Mozambique),
- q(Republic of Mozambique),
],
q(0153) => [
q(Myanmar),
q(Burma),
- q(Union of Burma),
],
q(0154) => [
q(Namibia),
- q(Republic of Namibia),
],
q(0155) => [
q(Nauru),
- q(Republic of Nauru),
],
q(0156) => [
q(Nepal),
- q(Kingdom of Nepal),
],
q(0157) => [
q(Netherlands),
- q(Kingdom of the Netherlands),
],
q(0158) => [
q(New Caledonia),
- q(Territory of New Caledonia and Dependencies),
],
q(0159) => [
q(New Zealand),
],
q(0160) => [
q(Nicaragua),
- q(Republic of Nicaragua),
],
q(0161) => [
q(Niger),
- q(Republic of Niger),
],
q(0162) => [
q(Nigeria),
- q(Federal Republic of Nigeria),
],
q(0163) => [
q(Niue),
],
q(0164) => [
q(Norfolk Island),
- q(Territory of Norfolk Island),
],
q(0165) => [
q(Northern Mariana Islands),
- q(Commonwealth of the Northern Mariana Islands),
],
q(0166) => [
q(Norway),
- q(Kingdom of Norway),
],
q(0167) => [
q(Oman),
- q(Sultanate of Oman),
],
q(0168) => [
q(Pakistan),
- q(Islamic Republic of Pakistan),
],
q(0169) => [
q(Palau),
- q(Republic of Palau),
],
q(0170) => [
- q(Palestinian Territory, Occupied),
- q(Occupied Palestinian Territory),
+ q(Palestine, State of),
+ q(State of Palestine),
],
q(0171) => [
q(Panama),
- q(Republic of Panama),
],
q(0172) => [
q(Papua New Guinea),
- q(Independent State of Papua New Guinea),
],
q(0173) => [
q(Paraguay),
- q(Republic of Paraguay),
],
q(0174) => [
q(Peru),
- q(Republic of Peru),
],
q(0175) => [
q(Philippines),
- q(Republic of the Philippines),
],
q(0176) => [
q(Pitcairn),
q(Pitcairn Islands),
- q(Pitcairn, Henderson, Ducie and Oeno Islands),
q(Pitcairn Island),
],
q(0177) => [
q(Poland),
- q(Republic of Poland),
],
q(0178) => [
q(Portugal),
- q(Portuguese Republic),
],
q(0179) => [
q(Puerto Rico),
- q(Commonwealth of Puerto Rico),
],
q(0180) => [
q(Qatar),
- q(State of Qatar),
],
q(0181) => [
q(Reunion),
- q(Department of Reunion),
],
q(0182) => [
q(Romania),
],
q(0183) => [
q(Russian Federation),
- q(Russia),
],
q(0184) => [
q(Rwanda),
- q(Rwandese Republic),
],
q(0185) => [
q(Saint Barthelemy),
@@ -793,7 +650,6 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0187) => [
q(Saint Kitts and Nevis),
- q(Federation of Saint Kitts and Nevis),
],
q(0188) => [
q(Saint Lucia),
@@ -801,61 +657,50 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
q(0189) => [
q(Saint Martin (French part)),
q(Saint-Martin (French part)),
- q(Saint-Martin),
q(Saint Martin),
+ q(Saint-Martin),
],
q(0190) => [
q(Saint Pierre and Miquelon),
- q(Territorial Collectivity of Saint Pierre and Miquelon),
],
q(0191) => [
q(Saint Vincent and the Grenadines),
],
q(0192) => [
q(Samoa),
- q(Independent State of Samoa),
],
q(0193) => [
q(San Marino),
- q(Republic of San Marino),
],
q(0194) => [
q(Sao Tome and Principe),
- q(Democratic Republic of Sao Tome and Principe),
],
q(0195) => [
q(Saudi Arabia),
- q(Kingdom of Saudi Arabia),
],
q(0196) => [
q(Senegal),
- q(Republic of Senegal),
],
q(0197) => [
q(Serbia),
],
q(0198) => [
q(Seychelles),
- q(Republic of Seychelles),
],
q(0199) => [
q(Sierra Leone),
- q(Republic of Sierra Leone),
],
q(0200) => [
q(Singapore),
- q(Republic of Singapore),
],
q(0201) => [
q(Sint Maarten (Dutch part)),
],
q(0202) => [
q(Slovakia),
- q(Slovak Republic),
],
q(0203) => [
q(Slovenia),
- q(Republic of Slovenia),
],
q(0204) => [
q(Solomon Islands),
@@ -865,7 +710,6 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0206) => [
q(South Africa),
- q(Republic of South Africa),
],
q(0207) => [
q(South Georgia and the South Sandwich Islands),
@@ -876,19 +720,15 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0209) => [
q(Spain),
- q(Kingdom of Spain),
],
q(0210) => [
q(Sri Lanka),
- q(Democratic Socialist Republic of Sri Lanka),
],
q(0211) => [
q(Sudan),
- q(Republic of the Sudan),
],
q(0212) => [
q(Suriname),
- q(Republic of Suriname),
],
q(0213) => [
q(Svalbard and Jan Mayen),
@@ -896,15 +736,12 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0214) => [
q(Swaziland),
- q(Kingdom of Swaziland),
],
q(0215) => [
q(Sweden),
- q(Kingdom of Sweden),
],
q(0216) => [
q(Switzerland),
- q(Swiss Confederation),
],
q(0217) => [
q(Syrian Arab Republic),
@@ -917,16 +754,13 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0219) => [
q(Tajikistan),
- q(Republic of Tajikistan),
],
q(0220) => [
q(Tanzania, United Republic of),
q(United Republic of Tanzania),
- q(Tanzania),
],
q(0221) => [
q(Thailand),
- q(Kingdom of Thailand),
],
q(0222) => [
q(Timor-Leste),
@@ -934,26 +768,21 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0223) => [
q(Togo),
- q(Togolese Republic),
],
q(0224) => [
q(Tokelau),
],
q(0225) => [
q(Tonga),
- q(Kingdom of Tonga),
],
q(0226) => [
q(Trinidad and Tobago),
- q(Republic of Trinidad and Tobago),
],
q(0227) => [
q(Tunisia),
- q(Republic of Tunisia),
],
q(0228) => [
q(Turkey),
- q(Republic of Turkey),
],
q(0229) => [
q(Turkmenistan),
@@ -990,26 +819,21 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
],
q(0238) => [
q(Uruguay),
- q(Oriental Republic of Uruguay),
],
q(0239) => [
q(Uzbekistan),
- q(Republic of Uzbekistan),
],
q(0240) => [
q(Vanuatu),
- q(Republic of Vanuatu),
],
q(0241) => [
q(Venezuela, Bolivarian Republic of),
q(Venezuela (Bolivarian Republic of)),
q(Venezuela),
- q(Bolivarian Republic of Venezuela),
],
q(0242) => [
q(Viet Nam),
q(Vietnam),
- q(Socialist Republic of Vietnam),
],
q(0243) => [
q(Virgin Islands, British),
@@ -1019,29 +843,24 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
q(0244) => [
q(Virgin Islands, U.S.),
q(United States Virgin Islands),
- q(Virgin Islands),
- q(Virgin Islands of the United States),
q(Virgin Islands (US)),
+ q(Virgin Islands),
],
q(0245) => [
q(Wallis and Futuna),
q(Wallis and Futuna Islands),
- q(Territory of the Wallis and Futuna Islands),
],
q(0246) => [
q(Western Sahara),
],
q(0247) => [
q(Yemen),
- q(Republic of Yemen),
],
q(0248) => [
q(Zambia),
- q(Republic of Zambia),
],
q(0249) => [
q(Zimbabwe),
- q(Republic of Zimbabwe),
],
q(0250) => [
q(Channel Islands),
@@ -1050,11 +869,10 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
q(Sark),
],
q(0252) => [
- q(Serbia and Montenegro),
+ q(Akrotiri),
],
q(0253) => [
q(Ashmore and Cartier Islands),
- q(Territory of Ashmore and Cartier Islands),
],
q(0254) => [
q(Baker Island),
@@ -1066,80 +884,115 @@ $Locale::Codes::Data{'country'}{'id2names'} = {
q(Clipperton Island),
],
q(0257) => [
- q(Coral Sea Islands),
- q(Coral Sea Islands Territory),
+ q(Congo (Kinshasa)),
],
q(0258) => [
- q(Europa Island),
+ q(Coral Sea Islands),
],
q(0259) => [
- q(Gaza Strip),
+ q(Dhekelia),
],
q(0260) => [
- q(Glorioso Islands),
+ q(Etorofu, Habomai, Kunashiri, and Shikotan Islands),
],
q(0261) => [
- q(Howland Island),
+ q(Europa Island),
],
q(0262) => [
- q(Jan Mayen),
+ q(Gaza Strip),
],
q(0263) => [
- q(Jarvis Island),
+ q(Glorioso Islands),
],
q(0264) => [
- q(Johnston Atoll),
+ q(Heard Island and McDonald Islands),
],
q(0265) => [
- q(Juan De Nova Island),
+ q(Howland Island),
],
q(0266) => [
- q(Kingman Reef),
+ q(Jan Mayen),
],
q(0267) => [
- q(Midway Islands),
+ q(Jarvis Island),
],
q(0268) => [
- q(Navassa Island),
+ q(Johnston Atoll),
],
q(0269) => [
- q(Netherlands Antilles),
+ q(Juan de Nova Island),
],
q(0270) => [
- q(Palmyra Atoll),
+ q(Kingman Reef),
],
q(0271) => [
- q(Paracel Islands),
+ q(Korea, North),
],
q(0272) => [
- q(Spratly Islands),
+ q(Korea, South),
],
q(0273) => [
- q(Svalbard),
+ q(Kosovo),
],
q(0274) => [
- q(Tromelin Island),
+ q(Laos),
],
q(0275) => [
- q(Wake Atoll),
+ q(Midway Islands),
],
q(0276) => [
- q(West Bank),
+ q(Moldova),
],
q(0277) => [
- q(Ascension Island),
+ q(Navassa Island),
],
q(0278) => [
- q(Bonaire, Sint Eustatius and Saba),
+ q(Palmyra Atoll),
],
q(0279) => [
- q(European Union),
+ q(Paracel Islands),
],
q(0280) => [
- q(Soviet Union),
+ q(Russia),
],
q(0281) => [
- q(Portuguese Timor),
+ q(Saint Helena, Ascension, and Tristan da Cunha),
+ ],
+ q(0282) => [
+ q(Sint Maarten),
+ ],
+ q(0283) => [
+ q(South Georgia and South Sandwich Islands),
+ ],
+ q(0284) => [
+ q(Spratly Islands),
+ ],
+ q(0285) => [
+ q(Svalbard),
+ ],
+ q(0286) => [
+ q(Tanzania),
+ ],
+ q(0287) => [
+ q(Tromelin Island),
+ ],
+ q(0288) => [
+ q(Wake Island),
+ ],
+ q(0289) => [
+ q(West Bank),
+ ],
+ q(0290) => [
+ q(Ascension Island),
+ ],
+ q(0291) => [
+ q(Netherlands Antilles),
+ ],
+ q(0292) => [
+ q(European Union),
+ ],
+ q(0293) => [
+ q(USSR),
],
};
@@ -1148,6 +1001,10 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0001),
q(0),
],
+ q(akrotiri) => [
+ q(0252),
+ q(0),
+ ],
q(aland islands) => [
q(0002),
q(0),
@@ -1184,18 +1041,10 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0010),
q(0),
],
- q(arab republic of egypt) => [
- q(0066),
- q(1),
- ],
q(argentina) => [
q(0011),
q(0),
],
- q(argentine republic) => [
- q(0011),
- q(1),
- ],
q(armenia) => [
q(0012),
q(0),
@@ -1205,7 +1054,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(ascension island) => [
- q(0277),
+ q(0290),
q(0),
],
q(ashmore and cartier islands) => [
@@ -1236,14 +1085,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0018),
q(0),
],
- q(bailiwick of guernsey) => [
- q(0092),
- q(1),
- ],
- q(bailiwick of jersey) => [
- q(0113),
- q(1),
- ],
q(baker island) => [
q(0254),
q(0),
@@ -1284,10 +1125,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0026),
q(0),
],
- q(bolivarian republic of venezuela) => [
- q(0241),
- q(3),
- ],
q(bolivia) => [
q(0027),
q(2),
@@ -1304,10 +1141,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0028),
q(0),
],
- q(bonaire, sint eustatius and saba) => [
- q(0278),
- q(0),
- ],
q(bosnia and herzegovina) => [
q(0029),
q(0),
@@ -1412,42 +1245,18 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0256),
q(0),
],
- q(co-operative republic of guyana) => [
- q(0095),
- q(1),
- ],
q(cocos (keeling) islands) => [
q(0048),
q(0),
],
q(cocos islands) => [
q(0048),
- q(3),
+ q(2),
],
q(colombia) => [
q(0049),
q(0),
],
- q(commonwealth of australia) => [
- q(0014),
- q(1),
- ],
- q(commonwealth of dominica) => [
- q(0063),
- q(1),
- ],
- q(commonwealth of puerto rico) => [
- q(0179),
- q(1),
- ],
- q(commonwealth of the bahamas) => [
- q(0017),
- q(2),
- ],
- q(commonwealth of the northern mariana islands) => [
- q(0165),
- q(1),
- ],
q(comoros) => [
q(0050),
q(0),
@@ -1461,16 +1270,16 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(1),
],
q(congo (kinshasa)) => [
- q(0052),
- q(2),
+ q(0257),
+ q(0),
],
q(congo, democratic republic of the) => [
q(0052),
- q(3),
+ q(2),
],
q(congo, republic of the) => [
q(0051),
- q(3),
+ q(2),
],
q(congo, the democratic republic of the) => [
q(0052),
@@ -1481,11 +1290,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(coral sea islands) => [
- q(0257),
- q(0),
- ],
- q(coral sea islands territory) => [
- q(0257),
+ q(0258),
q(0),
],
q(costa rica) => [
@@ -1520,37 +1325,17 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0118),
q(1),
],
- q(democratic republic of sao tome and principe) => [
- q(0194),
- q(1),
- ],
q(democratic republic of the congo) => [
q(0052),
q(1),
],
- q(democratic socialist republic of sri lanka) => [
- q(0210),
- q(1),
- ],
q(denmark) => [
q(0061),
q(0),
],
- q(department of guadeloupe) => [
- q(0089),
- q(1),
- ],
- q(department of guiana) => [
- q(0077),
- q(1),
- ],
- q(department of martinique) => [
- q(0140),
- q(1),
- ],
- q(department of reunion) => [
- q(0181),
- q(1),
+ q(dhekelia) => [
+ q(0259),
+ q(0),
],
q(djibouti) => [
q(0062),
@@ -1596,12 +1381,16 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0071),
q(0),
],
+ q(etorofu, habomai, kunashiri, and shikotan islands) => [
+ q(0260),
+ q(0),
+ ],
q(europa island) => [
- q(0258),
+ q(0261),
q(0),
],
q(european union) => [
- q(0279),
+ q(0292),
q(0),
],
q(faeroe islands) => [
@@ -1620,34 +1409,10 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0073),
q(0),
],
- q(federal democratic republic of ethiopia) => [
- q(0071),
- q(1),
- ],
- q(federal islamic republic of the comoros) => [
- q(0050),
- q(1),
- ],
- q(federal republic of germany) => [
- q(0083),
- q(1),
- ],
- q(federal republic of nigeria) => [
- q(0162),
- q(1),
- ],
q(federated states of micronesia) => [
q(0145),
q(2),
],
- q(federation of saint kitts and nevis) => [
- q(0187),
- q(1),
- ],
- q(federative republic of brazil) => [
- q(0032),
- q(1),
- ],
q(fiji) => [
q(0074),
q(0),
@@ -1668,10 +1433,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0078),
q(0),
],
- q(french republic) => [
- q(0076),
- q(1),
- ],
q(french southern and antarctic lands) => [
q(0079),
q(1),
@@ -1684,10 +1445,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0080),
q(0),
],
- q(gabonese republic) => [
- q(0080),
- q(1),
- ],
q(gambia) => [
q(0081),
q(0),
@@ -1697,7 +1454,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(1),
],
q(gaza strip) => [
- q(0259),
+ q(0262),
q(0),
],
q(georgia) => [
@@ -1717,25 +1474,17 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(glorioso islands) => [
- q(0260),
+ q(0263),
q(0),
],
q(golan heights (israeli-occupied)) => [
q(0217),
q(2),
],
- q(grand duchy of luxembourg) => [
- q(0130),
- q(1),
- ],
q(great britain) => [
q(0235),
q(2),
],
- q(great socialist people's libyan arab jamahiriya) => [
- q(0127),
- q(1),
- ],
q(greece) => [
q(0086),
q(0),
@@ -1780,18 +1529,14 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0096),
q(0),
],
- q(hashemite kingdom of jordan) => [
- q(0114),
- q(1),
+ q(heard island and mcdonald islands) => [
+ q(0264),
+ q(0),
],
q(heard island and mcdonald islands) => [
q(0097),
q(0),
],
- q(hellenic republic) => [
- q(0086),
- q(1),
- ],
q(holy see) => [
q(0098),
q(1),
@@ -1802,7 +1547,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
],
q(holy see (vatican city)) => [
q(0098),
- q(4),
+ q(3),
],
q(honduras) => [
q(0099),
@@ -1816,16 +1561,12 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0100),
q(2),
],
- q(hong kong special administrative region) => [
- q(0100),
- q(3),
- ],
q(hong kong special administrative region of china) => [
q(0100),
- q(4),
+ q(3),
],
q(howland island) => [
- q(0261),
+ q(0265),
q(0),
],
q(hungary) => [
@@ -1836,14 +1577,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0102),
q(0),
],
- q(independent state of papua new guinea) => [
- q(0172),
- q(1),
- ],
- q(independent state of samoa) => [
- q(0192),
- q(1),
- ],
q(india) => [
q(0103),
q(0),
@@ -1872,22 +1605,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0107),
q(0),
],
- q(islamic republic of iran) => [
- q(0105),
- q(3),
- ],
- q(islamic republic of mauritania) => [
- q(0141),
- q(1),
- ],
- q(islamic republic of pakistan) => [
- q(0168),
- q(1),
- ],
- q(islamic state of afghanistan) => [
- q(0001),
- q(1),
- ],
q(isle of man) => [
q(0108),
q(0),
@@ -1896,10 +1613,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0109),
q(0),
],
- q(italian republic) => [
- q(0110),
- q(1),
- ],
q(italy) => [
q(0110),
q(0),
@@ -1909,7 +1622,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(jan mayen) => [
- q(0262),
+ q(0266),
q(0),
],
q(japan) => [
@@ -1917,7 +1630,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(jarvis island) => [
- q(0263),
+ q(0267),
q(0),
],
q(jersey) => [
@@ -1925,7 +1638,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(johnston atoll) => [
- q(0264),
+ q(0268),
q(0),
],
q(jordan) => [
@@ -1933,7 +1646,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(juan de nova island) => [
- q(0265),
+ q(0269),
q(0),
],
q(kazakhstan) => [
@@ -1942,74 +1655,18 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
],
q(kazakstan) => [
q(0115),
- q(2),
+ q(1),
],
q(keeling islands) => [
q(0048),
- q(2),
+ q(1),
],
q(kenya) => [
q(0116),
q(0),
],
- q(kingdom of belgium) => [
- q(0022),
- q(1),
- ],
- q(kingdom of bhutan) => [
- q(0026),
- q(1),
- ],
- q(kingdom of cambodia) => [
- q(0038),
- q(1),
- ],
- q(kingdom of denmark) => [
- q(0061),
- q(1),
- ],
- q(kingdom of morocco) => [
- q(0151),
- q(1),
- ],
- q(kingdom of nepal) => [
- q(0156),
- q(1),
- ],
- q(kingdom of norway) => [
- q(0166),
- q(1),
- ],
- q(kingdom of saudi arabia) => [
- q(0195),
- q(1),
- ],
- q(kingdom of spain) => [
- q(0209),
- q(1),
- ],
- q(kingdom of swaziland) => [
- q(0214),
- q(1),
- ],
- q(kingdom of sweden) => [
- q(0215),
- q(1),
- ],
- q(kingdom of thailand) => [
- q(0221),
- q(1),
- ],
- q(kingdom of the netherlands) => [
- q(0157),
- q(1),
- ],
- q(kingdom of tonga) => [
- q(0225),
- q(1),
- ],
q(kingman reef) => [
- q(0266),
+ q(0270),
q(0),
],
q(kiribati) => [
@@ -2021,25 +1678,25 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(korea, north) => [
- q(0118),
- q(2),
+ q(0271),
+ q(0),
],
q(korea, republic of) => [
q(0119),
q(0),
],
q(korea, south) => [
- q(0119),
- q(2),
+ q(0272),
+ q(0),
+ ],
+ q(kosovo) => [
+ q(0273),
+ q(0),
],
q(kuwait) => [
q(0120),
q(0),
],
- q(kyrgyz republic) => [
- q(0121),
- q(1),
- ],
q(kyrgyzstan) => [
q(0121),
q(0),
@@ -2049,17 +1706,13 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(laos) => [
- q(0122),
- q(1),
+ q(0274),
+ q(0),
],
q(latvia) => [
q(0123),
q(0),
],
- q(lebanese republic) => [
- q(0124),
- q(1),
- ],
q(lebanon) => [
q(0124),
q(0),
@@ -2094,31 +1747,27 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
],
q(macao special administrative region of china) => [
q(0131),
- q(6),
+ q(5),
],
q(macau) => [
q(0131),
- q(5),
+ q(2),
],
q(macau s.a.r) => [
q(0131),
- q(2),
+ q(3),
],
q(macau s.a.r.) => [
q(0131),
q(4),
],
- q(macau special administrative region) => [
- q(0131),
- q(3),
- ],
q(macedonia) => [
q(0132),
q(2),
],
q(macedonia, former yugoslav republic of) => [
q(0132),
- q(4),
+ q(3),
],
q(macedonia, the former yugoslav republic of) => [
q(0132),
@@ -2181,12 +1830,12 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(midway islands) => [
- q(0267),
+ q(0275),
q(0),
],
q(moldova) => [
- q(0146),
- q(2),
+ q(0276),
+ q(0),
],
q(moldova, republic of) => [
q(0146),
@@ -2229,13 +1878,9 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(navassa island) => [
- q(0268),
+ q(0277),
q(0),
],
- q(negara brunei darussalam) => [
- q(0034),
- q(2),
- ],
q(nepal) => [
q(0156),
q(0),
@@ -2245,7 +1890,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(netherlands antilles) => [
- q(0269),
+ q(0291),
q(0),
],
q(new caledonia) => [
@@ -2278,7 +1923,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
],
q(north korea) => [
q(0118),
- q(3),
+ q(2),
],
q(northern mariana islands) => [
q(0165),
@@ -2288,18 +1933,10 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0166),
q(0),
],
- q(occupied palestinian territory) => [
- q(0170),
- q(1),
- ],
q(oman) => [
q(0167),
q(0),
],
- q(oriental republic of uruguay) => [
- q(0238),
- q(1),
- ],
q(pakistan) => [
q(0168),
q(0),
@@ -2308,12 +1945,12 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0169),
q(0),
],
- q(palestinian territory, occupied) => [
+ q(palestine, state of) => [
q(0170),
q(0),
],
q(palmyra atoll) => [
- q(0270),
+ q(0278),
q(0),
],
q(panama) => [
@@ -2325,25 +1962,13 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(paracel islands) => [
- q(0271),
+ q(0279),
q(0),
],
q(paraguay) => [
q(0173),
q(0),
],
- q(people's democratic republic of algeria) => [
- q(0004),
- q(1),
- ],
- q(people's republic of bangladesh) => [
- q(0019),
- q(1),
- ],
- q(people's republic of china) => [
- q(0046),
- q(1),
- ],
q(peru) => [
q(0174),
q(0),
@@ -2358,16 +1983,12 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
],
q(pitcairn island) => [
q(0176),
- q(3),
+ q(2),
],
q(pitcairn islands) => [
q(0176),
q(1),
],
- q(pitcairn, henderson, ducie and oeno islands) => [
- q(0176),
- q(2),
- ],
q(poland) => [
q(0177),
q(0),
@@ -2376,26 +1997,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0178),
q(0),
],
- q(portuguese republic) => [
- q(0178),
- q(1),
- ],
- q(portuguese timor) => [
- q(0281),
- q(0),
- ],
- q(principality of andorra) => [
- q(0006),
- q(1),
- ],
- q(principality of liechtenstein) => [
- q(0128),
- q(1),
- ],
- q(principality of monaco) => [
- q(0147),
- q(1),
- ],
q(puerto rico) => [
q(0179),
q(0),
@@ -2404,350 +2005,14 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0180),
q(0),
],
- q(republic of albania) => [
- q(0003),
- q(1),
- ],
- q(republic of angola) => [
- q(0007),
- q(1),
- ],
- q(republic of armenia) => [
- q(0012),
- q(1),
- ],
- q(republic of austria) => [
- q(0015),
- q(1),
- ],
- q(republic of azerbaijan) => [
- q(0016),
- q(1),
- ],
- q(republic of belarus) => [
- q(0021),
- q(1),
- ],
- q(republic of benin) => [
- q(0024),
- q(1),
- ],
- q(republic of bolivia) => [
- q(0027),
- q(3),
- ],
- q(republic of botswana) => [
- q(0030),
- q(1),
- ],
- q(republic of burundi) => [
- q(0037),
- q(1),
- ],
- q(republic of cameroon) => [
- q(0039),
- q(1),
- ],
- q(republic of cape verde) => [
- q(0041),
- q(1),
- ],
- q(republic of chad) => [
- q(0044),
- q(1),
- ],
- q(republic of chile) => [
- q(0045),
- q(1),
- ],
- q(republic of colombia) => [
- q(0049),
- q(1),
- ],
- q(republic of costa rica) => [
- q(0054),
- q(1),
- ],
- q(republic of cote d'ivoire) => [
- q(0055),
- q(1),
- ],
- q(republic of croatia) => [
- q(0056),
- q(1),
- ],
- q(republic of cuba) => [
- q(0057),
- q(1),
- ],
- q(republic of cyprus) => [
- q(0059),
- q(1),
- ],
- q(republic of djibouti) => [
- q(0062),
- q(1),
- ],
- q(republic of ecuador) => [
- q(0065),
- q(1),
- ],
- q(republic of el salvador) => [
- q(0067),
- q(1),
- ],
- q(republic of equatorial guinea) => [
- q(0068),
- q(1),
- ],
- q(republic of estonia) => [
- q(0070),
- q(1),
- ],
- q(republic of finland) => [
- q(0075),
- q(1),
- ],
- q(republic of ghana) => [
- q(0084),
- q(1),
- ],
- q(republic of guatemala) => [
- q(0091),
- q(1),
- ],
- q(republic of guinea) => [
- q(0093),
- q(1),
- ],
- q(republic of guinea-bissau) => [
- q(0094),
- q(1),
- ],
- q(republic of haiti) => [
- q(0096),
- q(1),
- ],
- q(republic of honduras) => [
- q(0099),
- q(1),
- ],
- q(republic of hungary) => [
- q(0101),
- q(1),
- ],
- q(republic of iceland) => [
- q(0102),
- q(1),
- ],
- q(republic of india) => [
- q(0103),
- q(1),
- ],
- q(republic of indonesia) => [
- q(0104),
- q(1),
- ],
- q(republic of iraq) => [
- q(0106),
- q(1),
- ],
- q(republic of kazakhstan) => [
- q(0115),
- q(1),
- ],
- q(republic of kenya) => [
- q(0116),
- q(1),
- ],
- q(republic of kiribati) => [
- q(0117),
- q(1),
- ],
q(republic of korea) => [
q(0119),
q(1),
],
- q(republic of latvia) => [
- q(0123),
- q(1),
- ],
- q(republic of lesotho) => [
- q(0125),
- q(1),
- ],
- q(republic of liberia) => [
- q(0126),
- q(1),
- ],
- q(republic of lithuania) => [
- q(0129),
- q(1),
- ],
- q(republic of macedonia) => [
- q(0132),
- q(3),
- ],
- q(republic of madagascar) => [
- q(0133),
- q(1),
- ],
- q(republic of malawi) => [
- q(0134),
- q(1),
- ],
- q(republic of maldives) => [
- q(0136),
- q(1),
- ],
- q(republic of mali) => [
- q(0137),
- q(1),
- ],
- q(republic of malta) => [
- q(0138),
- q(1),
- ],
- q(republic of mauritius) => [
- q(0142),
- q(1),
- ],
q(republic of moldova) => [
q(0146),
q(1),
],
- q(republic of mozambique) => [
- q(0152),
- q(1),
- ],
- q(republic of namibia) => [
- q(0154),
- q(1),
- ],
- q(republic of nauru) => [
- q(0155),
- q(1),
- ],
- q(republic of nicaragua) => [
- q(0160),
- q(1),
- ],
- q(republic of niger) => [
- q(0161),
- q(1),
- ],
- q(republic of palau) => [
- q(0169),
- q(1),
- ],
- q(republic of panama) => [
- q(0171),
- q(1),
- ],
- q(republic of paraguay) => [
- q(0173),
- q(1),
- ],
- q(republic of peru) => [
- q(0174),
- q(1),
- ],
- q(republic of poland) => [
- q(0177),
- q(1),
- ],
- q(republic of san marino) => [
- q(0193),
- q(1),
- ],
- q(republic of senegal) => [
- q(0196),
- q(1),
- ],
- q(republic of seychelles) => [
- q(0198),
- q(1),
- ],
- q(republic of sierra leone) => [
- q(0199),
- q(1),
- ],
- q(republic of singapore) => [
- q(0200),
- q(1),
- ],
- q(republic of slovenia) => [
- q(0203),
- q(1),
- ],
- q(republic of south africa) => [
- q(0206),
- q(1),
- ],
- q(republic of suriname) => [
- q(0212),
- q(1),
- ],
- q(republic of tajikistan) => [
- q(0219),
- q(1),
- ],
- q(republic of the congo) => [
- q(0051),
- q(2),
- ],
- q(republic of the fiji islands) => [
- q(0074),
- q(1),
- ],
- q(republic of the gambia) => [
- q(0081),
- q(2),
- ],
- q(republic of the marshall islands) => [
- q(0139),
- q(1),
- ],
- q(republic of the philippines) => [
- q(0175),
- q(1),
- ],
- q(republic of the sudan) => [
- q(0211),
- q(1),
- ],
- q(republic of trinidad and tobago) => [
- q(0226),
- q(1),
- ],
- q(republic of tunisia) => [
- q(0227),
- q(1),
- ],
- q(republic of turkey) => [
- q(0228),
- q(1),
- ],
- q(republic of uzbekistan) => [
- q(0239),
- q(1),
- ],
- q(republic of vanuatu) => [
- q(0240),
- q(1),
- ],
- q(republic of yemen) => [
- q(0247),
- q(1),
- ],
- q(republic of zambia) => [
- q(0248),
- q(1),
- ],
- q(republic of zimbabwe) => [
- q(0249),
- q(1),
- ],
q(reunion) => [
q(0181),
q(0),
@@ -2757,8 +2022,8 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(russia) => [
- q(0183),
- q(1),
+ q(0280),
+ q(0),
],
q(russian federation) => [
q(0183),
@@ -2768,10 +2033,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0184),
q(0),
],
- q(rwandese republic) => [
- q(0184),
- q(1),
- ],
q(saint barthelemy) => [
q(0185),
q(0),
@@ -2784,6 +2045,10 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0186),
q(0),
],
+ q(saint helena, ascension, and tristan da cunha) => [
+ q(0281),
+ q(0),
+ ],
q(saint kitts and nevis) => [
q(0187),
q(0),
@@ -2794,7 +2059,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
],
q(saint martin) => [
q(0189),
- q(3),
+ q(2),
],
q(saint martin (french part)) => [
q(0189),
@@ -2814,7 +2079,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
],
q(saint-martin) => [
q(0189),
- q(2),
+ q(3),
],
q(saint-martin (french part)) => [
q(0189),
@@ -2848,10 +2113,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0197),
q(0),
],
- q(serbia and montenegro) => [
- q(0252),
- q(0),
- ],
q(seychelles) => [
q(0198),
q(0),
@@ -2864,14 +2125,14 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0200),
q(0),
],
+ q(sint maarten) => [
+ q(0282),
+ q(0),
+ ],
q(sint maarten (dutch part)) => [
q(0201),
q(0),
],
- q(slovak republic) => [
- q(0202),
- q(1),
- ],
q(slovakia) => [
q(0202),
q(0),
@@ -2880,10 +2141,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0203),
q(0),
],
- q(socialist republic of vietnam) => [
- q(0242),
- q(2),
- ],
q(solomon islands) => [
q(0204),
q(0),
@@ -2896,6 +2153,10 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0206),
q(0),
],
+ q(south georgia and south sandwich islands) => [
+ q(0283),
+ q(0),
+ ],
q(south georgia and the islands) => [
q(0207),
q(1),
@@ -2906,66 +2167,38 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
],
q(south korea) => [
q(0119),
- q(3),
+ q(2),
],
q(south sudan) => [
q(0208),
q(0),
],
- q(soviet union) => [
- q(0280),
- q(0),
- ],
q(spain) => [
q(0209),
q(0),
],
q(spratly islands) => [
- q(0272),
+ q(0284),
q(0),
],
q(sri lanka) => [
q(0210),
q(0),
],
- q(state of bahrain) => [
- q(0018),
- q(1),
- ],
- q(state of eritrea) => [
- q(0069),
- q(1),
- ],
- q(state of israel) => [
- q(0109),
- q(1),
- ],
- q(state of kuwait) => [
- q(0120),
- q(1),
- ],
- q(state of qatar) => [
- q(0180),
+ q(state of palestine) => [
+ q(0170),
q(1),
],
- q(state of the vatican city) => [
- q(0098),
- q(3),
- ],
q(sudan) => [
q(0211),
q(0),
],
- q(sultanate of oman) => [
- q(0167),
- q(1),
- ],
q(suriname) => [
q(0212),
q(0),
],
q(svalbard) => [
- q(0273),
+ q(0285),
q(0),
],
q(svalbard and jan mayen) => [
@@ -2984,10 +2217,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0215),
q(0),
],
- q(swiss confederation) => [
- q(0216),
- q(1),
- ],
q(switzerland) => [
q(0216),
q(0),
@@ -3013,76 +2242,24 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(tanzania) => [
- q(0220),
- q(2),
+ q(0286),
+ q(0),
],
q(tanzania, united republic of) => [
q(0220),
q(0),
],
- q(territorial collectivity of mayotte) => [
- q(0143),
- q(1),
- ],
- q(territorial collectivity of saint pierre and miquelon) => [
- q(0190),
- q(1),
- ],
- q(territory of american samoa) => [
- q(0005),
- q(1),
- ],
- q(territory of ashmore and cartier islands) => [
- q(0253),
- q(0),
- ],
- q(territory of christmas island) => [
- q(0047),
- q(1),
- ],
- q(territory of cocos (keeling) islands) => [
- q(0048),
- q(1),
- ],
- q(territory of french polynesia) => [
- q(0078),
- q(1),
- ],
- q(territory of guam) => [
- q(0090),
- q(1),
- ],
- q(territory of heard island and mcdonald islands) => [
- q(0097),
- q(1),
- ],
- q(territory of new caledonia and dependencies) => [
- q(0158),
- q(1),
- ],
- q(territory of norfolk island) => [
- q(0164),
- q(1),
- ],
- q(territory of the french southern and antarctic lands) => [
- q(0079),
- q(2),
- ],
- q(territory of the wallis and futuna islands) => [
- q(0245),
- q(2),
- ],
q(thailand) => [
q(0221),
q(0),
],
q(the bahamas) => [
q(0017),
- q(3),
+ q(2),
],
q(the democratic republic of the congo) => [
q(0052),
- q(4),
+ q(3),
],
q(the former yugoslav republic of macedonia) => [
q(0132),
@@ -3090,7 +2267,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
],
q(the republic of the congo) => [
q(0051),
- q(4),
+ q(3),
],
q(timor-leste) => [
q(0222),
@@ -3100,10 +2277,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0223),
q(0),
],
- q(togolese republic) => [
- q(0223),
- q(1),
- ],
q(tokelau) => [
q(0224),
q(0),
@@ -3117,7 +2290,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0),
],
q(tromelin island) => [
- q(0274),
+ q(0287),
q(0),
],
q(tunisia) => [
@@ -3152,10 +2325,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0233),
q(0),
],
- q(union of burma) => [
- q(0153),
- q(2),
- ],
q(united arab emirates) => [
q(0234),
q(0),
@@ -3168,10 +2337,6 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0235),
q(1),
],
- q(united mexican states) => [
- q(0144),
- q(1),
- ],
q(united republic of tanzania) => [
q(0220),
q(1),
@@ -3204,6 +2369,10 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0236),
q(3),
],
+ q(ussr) => [
+ q(0293),
+ q(0),
+ ],
q(uzbekistan) => [
q(0239),
q(0),
@@ -3238,7 +2407,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
],
q(virgin islands) => [
q(0244),
- q(2),
+ q(3),
],
q(virgin islands (uk)) => [
q(0243),
@@ -3246,11 +2415,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
],
q(virgin islands (us)) => [
q(0244),
- q(4),
- ],
- q(virgin islands of the united states) => [
- q(0244),
- q(3),
+ q(2),
],
q(virgin islands, british) => [
q(0243),
@@ -3260,8 +2425,8 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(0244),
q(0),
],
- q(wake atoll) => [
- q(0275),
+ q(wake island) => [
+ q(0288),
q(0),
],
q(wallis and futuna) => [
@@ -3273,7 +2438,7 @@ $Locale::Codes::Data{'country'}{'alias2id'} = {
q(1),
],
q(west bank) => [
- q(0276),
+ q(0289),
q(0),
],
q(western sahara) => [
@@ -5252,1023 +4417,1023 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
],
},
q(dom) => {
- q(AC) => [
- q(0277),
+ q(ac) => [
+ q(0290),
q(0),
],
- q(AD) => [
+ q(ad) => [
q(0006),
q(0),
],
- q(AE) => [
+ q(ae) => [
q(0234),
q(0),
],
- q(AF) => [
+ q(af) => [
q(0001),
q(0),
],
- q(AG) => [
+ q(ag) => [
q(0010),
q(0),
],
- q(AI) => [
+ q(ai) => [
q(0008),
q(0),
],
- q(AL) => [
+ q(al) => [
q(0003),
q(0),
],
- q(AM) => [
+ q(am) => [
q(0012),
q(0),
],
- q(AN) => [
- q(0269),
+ q(an) => [
+ q(0291),
q(0),
],
- q(AO) => [
+ q(ao) => [
q(0007),
q(0),
],
- q(AQ) => [
+ q(aq) => [
q(0009),
q(0),
],
- q(AR) => [
+ q(ar) => [
q(0011),
q(0),
],
- q(AS) => [
+ q(as) => [
q(0005),
q(0),
],
- q(AT) => [
+ q(at) => [
q(0015),
q(0),
],
- q(AU) => [
+ q(au) => [
q(0014),
q(0),
],
- q(AW) => [
+ q(aw) => [
q(0013),
q(0),
],
- q(AX) => [
+ q(ax) => [
q(0002),
q(0),
],
- q(AZ) => [
+ q(az) => [
q(0016),
q(0),
],
- q(BA) => [
+ q(ba) => [
q(0029),
q(0),
],
- q(BB) => [
+ q(bb) => [
q(0020),
q(0),
],
- q(BD) => [
+ q(bd) => [
q(0019),
q(0),
],
- q(BE) => [
+ q(be) => [
q(0022),
q(0),
],
- q(BF) => [
+ q(bf) => [
q(0036),
q(0),
],
- q(BG) => [
+ q(bg) => [
q(0035),
q(0),
],
- q(BH) => [
+ q(bh) => [
q(0018),
q(0),
],
- q(BI) => [
+ q(bi) => [
q(0037),
q(0),
],
- q(BJ) => [
+ q(bj) => [
q(0024),
q(0),
],
- q(BL) => [
+ q(bl) => [
q(0185),
q(0),
],
- q(BM) => [
+ q(bm) => [
q(0025),
q(0),
],
- q(BN) => [
+ q(bn) => [
q(0034),
q(0),
],
- q(BO) => [
+ q(bo) => [
q(0027),
- q(2),
+ q(0),
],
- q(BQ) => [
- q(0278),
+ q(bq) => [
+ q(0028),
q(0),
],
- q(BR) => [
+ q(br) => [
q(0032),
q(0),
],
- q(BS) => [
+ q(bs) => [
q(0017),
q(0),
],
- q(BT) => [
+ q(bt) => [
q(0026),
q(0),
],
- q(BV) => [
+ q(bv) => [
q(0031),
q(0),
],
- q(BW) => [
+ q(bw) => [
q(0030),
q(0),
],
- q(BY) => [
+ q(by) => [
q(0021),
q(0),
],
- q(BZ) => [
+ q(bz) => [
q(0023),
q(0),
],
- q(CA) => [
+ q(ca) => [
q(0040),
q(0),
],
- q(CC) => [
+ q(cc) => [
q(0048),
q(0),
],
- q(CD) => [
+ q(cd) => [
q(0052),
q(0),
],
- q(CF) => [
+ q(cf) => [
q(0043),
q(0),
],
- q(CG) => [
+ q(cg) => [
q(0051),
q(0),
],
- q(CH) => [
+ q(ch) => [
q(0216),
q(0),
],
- q(CI) => [
+ q(ci) => [
q(0055),
q(0),
],
- q(CK) => [
+ q(ck) => [
q(0053),
q(0),
],
- q(CL) => [
+ q(cl) => [
q(0045),
q(0),
],
- q(CM) => [
+ q(cm) => [
q(0039),
q(0),
],
- q(CN) => [
+ q(cn) => [
q(0046),
q(0),
],
- q(CO) => [
+ q(co) => [
q(0049),
q(0),
],
- q(CR) => [
+ q(cr) => [
q(0054),
q(0),
],
- q(CU) => [
+ q(cu) => [
q(0057),
q(0),
],
- q(CV) => [
+ q(cv) => [
q(0041),
q(0),
],
- q(CW) => [
+ q(cw) => [
q(0058),
q(0),
],
- q(CX) => [
+ q(cx) => [
q(0047),
q(0),
],
- q(CY) => [
+ q(cy) => [
q(0059),
q(0),
],
- q(CZ) => [
+ q(cz) => [
q(0060),
q(0),
],
- q(DE) => [
+ q(de) => [
q(0083),
q(0),
],
- q(DJ) => [
+ q(dj) => [
q(0062),
q(0),
],
- q(DK) => [
+ q(dk) => [
q(0061),
q(0),
],
- q(DM) => [
+ q(dm) => [
q(0063),
q(0),
],
- q(DO) => [
+ q(do) => [
q(0064),
q(0),
],
- q(DZ) => [
+ q(dz) => [
q(0004),
q(0),
],
- q(EC) => [
+ q(ec) => [
q(0065),
q(0),
],
- q(EE) => [
+ q(ee) => [
q(0070),
q(0),
],
- q(EG) => [
+ q(eg) => [
q(0066),
q(0),
],
- q(EH) => [
+ q(eh) => [
q(0246),
q(0),
],
- q(ER) => [
+ q(er) => [
q(0069),
q(0),
],
- q(ES) => [
+ q(es) => [
q(0209),
q(0),
],
- q(ET) => [
+ q(et) => [
q(0071),
q(0),
],
- q(EU) => [
- q(0279),
+ q(eu) => [
+ q(0292),
q(0),
],
- q(FI) => [
+ q(fi) => [
q(0075),
q(0),
],
- q(FJ) => [
+ q(fj) => [
q(0074),
q(0),
],
- q(FK) => [
+ q(fk) => [
q(0072),
q(0),
],
- q(FM) => [
+ q(fm) => [
q(0145),
q(0),
],
- q(FO) => [
+ q(fo) => [
q(0073),
q(0),
],
- q(FR) => [
+ q(fr) => [
q(0076),
q(0),
],
- q(GA) => [
+ q(ga) => [
q(0080),
q(0),
],
- q(GB) => [
+ q(gb) => [
q(0235),
q(0),
],
- q(GD) => [
+ q(gd) => [
q(0088),
q(0),
],
- q(GE) => [
+ q(ge) => [
q(0082),
q(0),
],
- q(GF) => [
+ q(gf) => [
q(0077),
q(0),
],
- q(GG) => [
+ q(gg) => [
q(0092),
q(0),
],
- q(GH) => [
+ q(gh) => [
q(0084),
q(0),
],
- q(GI) => [
+ q(gi) => [
q(0085),
q(0),
],
- q(GL) => [
+ q(gl) => [
q(0087),
q(0),
],
- q(GM) => [
+ q(gm) => [
q(0081),
q(0),
],
- q(GN) => [
+ q(gn) => [
q(0093),
q(0),
],
- q(GP) => [
+ q(gp) => [
q(0089),
q(0),
],
- q(GQ) => [
+ q(gq) => [
q(0068),
q(0),
],
- q(GR) => [
+ q(gr) => [
q(0086),
q(0),
],
- q(GS) => [
+ q(gs) => [
q(0207),
q(0),
],
- q(GT) => [
+ q(gt) => [
q(0091),
q(0),
],
- q(GU) => [
+ q(gu) => [
q(0090),
q(0),
],
- q(GW) => [
+ q(gw) => [
q(0094),
q(0),
],
- q(GY) => [
+ q(gy) => [
q(0095),
q(0),
],
- q(HK) => [
+ q(hk) => [
q(0100),
q(0),
],
- q(HM) => [
+ q(hm) => [
q(0097),
q(0),
],
- q(HN) => [
+ q(hn) => [
q(0099),
q(0),
],
- q(HR) => [
+ q(hr) => [
q(0056),
q(0),
],
- q(HT) => [
+ q(ht) => [
q(0096),
q(0),
],
- q(HU) => [
+ q(hu) => [
q(0101),
q(0),
],
- q(ID) => [
+ q(id) => [
q(0104),
q(0),
],
- q(IE) => [
+ q(ie) => [
q(0107),
q(0),
],
- q(IL) => [
+ q(il) => [
q(0109),
q(0),
],
- q(IM) => [
+ q(im) => [
q(0108),
q(0),
],
- q(IN) => [
+ q(in) => [
q(0103),
q(0),
],
- q(IO) => [
+ q(io) => [
q(0033),
q(0),
],
- q(IQ) => [
+ q(iq) => [
q(0106),
q(0),
],
- q(IR) => [
+ q(ir) => [
q(0105),
q(0),
],
- q(IS) => [
+ q(is) => [
q(0102),
q(0),
],
- q(IT) => [
+ q(it) => [
q(0110),
q(0),
],
- q(JE) => [
+ q(je) => [
q(0113),
q(0),
],
- q(JM) => [
+ q(jm) => [
q(0111),
q(0),
],
- q(JO) => [
+ q(jo) => [
q(0114),
q(0),
],
- q(JP) => [
+ q(jp) => [
q(0112),
q(0),
],
- q(KE) => [
+ q(ke) => [
q(0116),
q(0),
],
- q(KG) => [
+ q(kg) => [
q(0121),
q(0),
],
- q(KH) => [
+ q(kh) => [
q(0038),
q(0),
],
- q(KI) => [
+ q(ki) => [
q(0117),
q(0),
],
- q(KM) => [
+ q(km) => [
q(0050),
q(0),
],
- q(KN) => [
+ q(kn) => [
q(0187),
q(0),
],
- q(KP) => [
+ q(kp) => [
q(0118),
q(0),
],
- q(KR) => [
+ q(kr) => [
q(0119),
q(0),
],
- q(KW) => [
+ q(kw) => [
q(0120),
q(0),
],
- q(KY) => [
+ q(ky) => [
q(0042),
q(0),
],
- q(KZ) => [
+ q(kz) => [
q(0115),
q(0),
],
- q(LA) => [
+ q(la) => [
q(0122),
q(0),
],
- q(LB) => [
+ q(lb) => [
q(0124),
q(0),
],
- q(LC) => [
+ q(lc) => [
q(0188),
q(0),
],
- q(LI) => [
+ q(li) => [
q(0128),
q(0),
],
- q(LK) => [
+ q(lk) => [
q(0210),
q(0),
],
- q(LR) => [
+ q(lr) => [
q(0126),
q(0),
],
- q(LS) => [
+ q(ls) => [
q(0125),
q(0),
],
- q(LT) => [
+ q(lt) => [
q(0129),
q(0),
],
- q(LU) => [
+ q(lu) => [
q(0130),
q(0),
],
- q(LV) => [
+ q(lv) => [
q(0123),
q(0),
],
- q(LY) => [
+ q(ly) => [
q(0127),
q(0),
],
- q(MA) => [
+ q(ma) => [
q(0151),
q(0),
],
- q(MC) => [
+ q(mc) => [
q(0147),
q(0),
],
- q(MD) => [
+ q(md) => [
q(0146),
q(0),
],
- q(ME) => [
+ q(me) => [
q(0149),
q(0),
],
- q(MF) => [
+ q(mf) => [
q(0189),
q(0),
],
- q(MG) => [
+ q(mg) => [
q(0133),
q(0),
],
- q(MH) => [
+ q(mh) => [
q(0139),
q(0),
],
- q(MK) => [
+ q(mk) => [
q(0132),
q(0),
],
- q(ML) => [
+ q(ml) => [
q(0137),
q(0),
],
- q(MM) => [
+ q(mm) => [
q(0153),
q(0),
],
- q(MN) => [
+ q(mn) => [
q(0148),
q(0),
],
- q(MO) => [
+ q(mo) => [
q(0131),
q(0),
],
- q(MP) => [
+ q(mp) => [
q(0165),
q(0),
],
- q(MQ) => [
+ q(mq) => [
q(0140),
q(0),
],
- q(MR) => [
+ q(mr) => [
q(0141),
q(0),
],
- q(MS) => [
+ q(ms) => [
q(0150),
q(0),
],
- q(MT) => [
+ q(mt) => [
q(0138),
q(0),
],
- q(MU) => [
+ q(mu) => [
q(0142),
q(0),
],
- q(MV) => [
+ q(mv) => [
q(0136),
q(0),
],
- q(MW) => [
+ q(mw) => [
q(0134),
q(0),
],
- q(MX) => [
+ q(mx) => [
q(0144),
q(0),
],
- q(MY) => [
+ q(my) => [
q(0135),
q(0),
],
- q(MZ) => [
+ q(mz) => [
q(0152),
q(0),
],
- q(NA) => [
+ q(na) => [
q(0154),
q(0),
],
- q(NC) => [
+ q(nc) => [
q(0158),
q(0),
],
- q(NE) => [
+ q(ne) => [
q(0161),
q(0),
],
- q(NF) => [
+ q(nf) => [
q(0164),
q(0),
],
- q(NG) => [
+ q(ng) => [
q(0162),
q(0),
],
- q(NI) => [
+ q(ni) => [
q(0160),
q(0),
],
- q(NL) => [
+ q(nl) => [
q(0157),
q(0),
],
- q(NO) => [
+ q(no) => [
q(0166),
q(0),
],
- q(NP) => [
+ q(np) => [
q(0156),
q(0),
],
- q(NR) => [
+ q(nr) => [
q(0155),
q(0),
],
- q(NU) => [
+ q(nu) => [
q(0163),
q(0),
],
- q(NZ) => [
+ q(nz) => [
q(0159),
q(0),
],
- q(OM) => [
+ q(om) => [
q(0167),
q(0),
],
- q(PA) => [
+ q(pa) => [
q(0171),
q(0),
],
- q(PE) => [
+ q(pe) => [
q(0174),
q(0),
],
- q(PF) => [
+ q(pf) => [
q(0078),
q(0),
],
- q(PG) => [
+ q(pg) => [
q(0172),
q(0),
],
- q(PH) => [
+ q(ph) => [
q(0175),
q(0),
],
- q(PK) => [
+ q(pk) => [
q(0168),
q(0),
],
- q(PL) => [
+ q(pl) => [
q(0177),
q(0),
],
- q(PM) => [
+ q(pm) => [
q(0190),
q(0),
],
- q(PN) => [
+ q(pn) => [
q(0176),
q(0),
],
- q(PR) => [
+ q(pr) => [
q(0179),
q(0),
],
- q(PS) => [
+ q(ps) => [
q(0170),
q(0),
],
- q(PT) => [
+ q(pt) => [
q(0178),
q(0),
],
- q(PW) => [
+ q(pw) => [
q(0169),
q(0),
],
- q(PY) => [
+ q(py) => [
q(0173),
q(0),
],
- q(QA) => [
+ q(qa) => [
q(0180),
q(0),
],
- q(RE) => [
+ q(re) => [
q(0181),
q(0),
],
- q(RO) => [
+ q(ro) => [
q(0182),
q(0),
],
- q(RS) => [
+ q(rs) => [
q(0197),
q(0),
],
- q(RU) => [
+ q(ru) => [
q(0183),
q(0),
],
- q(RW) => [
+ q(rw) => [
q(0184),
q(0),
],
- q(SA) => [
+ q(sa) => [
q(0195),
q(0),
],
- q(SB) => [
+ q(sb) => [
q(0204),
q(0),
],
- q(SC) => [
+ q(sc) => [
q(0198),
q(0),
],
- q(SD) => [
+ q(sd) => [
q(0211),
q(0),
],
- q(SE) => [
+ q(se) => [
q(0215),
q(0),
],
- q(SG) => [
+ q(sg) => [
q(0200),
q(0),
],
- q(SH) => [
+ q(sh) => [
q(0186),
- q(1),
+ q(0),
],
- q(SI) => [
+ q(si) => [
q(0203),
q(0),
],
- q(SJ) => [
+ q(sj) => [
q(0213),
q(0),
],
- q(SK) => [
+ q(sk) => [
q(0202),
q(0),
],
- q(SL) => [
+ q(sl) => [
q(0199),
q(0),
],
- q(SM) => [
+ q(sm) => [
q(0193),
q(0),
],
- q(SN) => [
+ q(sn) => [
q(0196),
q(0),
],
- q(SO) => [
+ q(so) => [
q(0205),
q(0),
],
- q(SR) => [
+ q(sr) => [
q(0212),
q(0),
],
- q(SS) => [
+ q(ss) => [
q(0208),
q(0),
],
- q(ST) => [
+ q(st) => [
q(0194),
q(0),
],
- q(SU) => [
- q(0280),
+ q(su) => [
+ q(0293),
q(0),
],
- q(SV) => [
+ q(sv) => [
q(0067),
q(0),
],
- q(SX) => [
+ q(sx) => [
q(0201),
q(0),
],
- q(SY) => [
+ q(sy) => [
q(0217),
q(0),
],
- q(SZ) => [
+ q(sz) => [
q(0214),
q(0),
],
- q(TC) => [
+ q(tc) => [
q(0230),
q(0),
],
- q(TD) => [
+ q(td) => [
q(0044),
q(0),
],
- q(TF) => [
+ q(tf) => [
q(0079),
q(0),
],
- q(TG) => [
+ q(tg) => [
q(0223),
q(0),
],
- q(TH) => [
+ q(th) => [
q(0221),
q(0),
],
- q(TJ) => [
+ q(tj) => [
q(0219),
q(0),
],
- q(TK) => [
+ q(tk) => [
q(0224),
q(0),
],
- q(TL) => [
+ q(tl) => [
q(0222),
q(0),
],
- q(TM) => [
+ q(tm) => [
q(0229),
q(0),
],
- q(TN) => [
+ q(tn) => [
q(0227),
q(0),
],
- q(TO) => [
+ q(to) => [
q(0225),
q(0),
],
- q(TP) => [
- q(0281),
- q(0),
+ q(tp) => [
+ q(0222),
+ q(1),
],
- q(TR) => [
+ q(tr) => [
q(0228),
q(0),
],
- q(TT) => [
+ q(tt) => [
q(0226),
q(0),
],
- q(TV) => [
+ q(tv) => [
q(0231),
q(0),
],
- q(TW) => [
+ q(tw) => [
q(0218),
q(0),
],
- q(TZ) => [
+ q(tz) => [
q(0220),
q(0),
],
- q(UA) => [
+ q(ua) => [
q(0233),
q(0),
],
- q(UG) => [
+ q(ug) => [
q(0232),
q(0),
],
- q(UK) => [
+ q(uk) => [
q(0235),
q(0),
],
- q(UM) => [
+ q(um) => [
q(0237),
q(0),
],
- q(US) => [
+ q(us) => [
q(0236),
q(0),
],
- q(UY) => [
+ q(uy) => [
q(0238),
q(0),
],
- q(UZ) => [
+ q(uz) => [
q(0239),
q(0),
],
- q(VA) => [
+ q(va) => [
q(0098),
q(0),
],
- q(VC) => [
+ q(vc) => [
q(0191),
q(0),
],
- q(VE) => [
+ q(ve) => [
q(0241),
q(0),
],
- q(VG) => [
+ q(vg) => [
q(0243),
q(0),
],
- q(VI) => [
+ q(vi) => [
q(0244),
q(0),
],
- q(VN) => [
+ q(vn) => [
q(0242),
q(0),
],
- q(VU) => [
+ q(vu) => [
q(0240),
q(0),
],
- q(WF) => [
+ q(wf) => [
q(0245),
q(0),
],
- q(WS) => [
+ q(ws) => [
q(0192),
q(0),
],
- q(YE) => [
+ q(ye) => [
q(0247),
q(0),
],
- q(YT) => [
+ q(yt) => [
q(0143),
q(0),
],
- q(ZA) => [
+ q(za) => [
q(0206),
q(0),
],
- q(ZM) => [
+ q(zm) => [
q(0248),
q(0),
],
- q(ZW) => [
+ q(zw) => [
q(0249),
q(0),
],
@@ -6338,6 +5503,10 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0008),
q(0),
],
+ q(AX) => [
+ q(0252),
+ q(0),
+ ],
q(AY) => [
q(0009),
q(0),
@@ -6399,7 +5568,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(BQ) => [
- q(0268),
+ q(0277),
q(0),
],
q(BR) => [
@@ -6451,8 +5620,8 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(1),
],
q(CG) => [
- q(0052),
- q(2),
+ q(0257),
+ q(0),
],
q(CH) => [
q(0046),
@@ -6487,7 +5656,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(CR) => [
- q(0257),
+ q(0258),
q(0),
],
q(CS) => [
@@ -6527,13 +5696,17 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(DQ) => [
- q(0263),
+ q(0267),
q(0),
],
q(DR) => [
q(0064),
q(0),
],
+ q(DX) => [
+ q(0259),
+ q(0),
+ ],
q(EC) => [
q(0065),
q(0),
@@ -6567,7 +5740,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(EU) => [
- q(0258),
+ q(0261),
q(0),
],
q(EZ) => [
@@ -6592,7 +5765,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
],
q(FM) => [
q(0145),
- q(2),
+ q(0),
],
q(FO) => [
q(0073),
@@ -6651,7 +5824,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(GO) => [
- q(0260),
+ q(0263),
q(0),
],
q(GP) => [
@@ -6679,7 +5852,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(GZ) => [
- q(0259),
+ q(0262),
q(0),
],
q(HA) => [
@@ -6688,10 +5861,10 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
],
q(HK) => [
q(0100),
- q(2),
+ q(0),
],
q(HM) => [
- q(0097),
+ q(0264),
q(0),
],
q(HO) => [
@@ -6699,7 +5872,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(HQ) => [
- q(0261),
+ q(0265),
q(0),
],
q(HR) => [
@@ -6767,7 +5940,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(JN) => [
- q(0262),
+ q(0266),
q(0),
],
q(JO) => [
@@ -6775,11 +5948,11 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(JQ) => [
- q(0264),
+ q(0268),
q(0),
],
q(JU) => [
- q(0265),
+ q(0269),
q(0),
],
q(KE) => [
@@ -6791,11 +5964,11 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(KN) => [
- q(0118),
- q(2),
+ q(0271),
+ q(0),
],
q(KQ) => [
- q(0266),
+ q(0270),
q(0),
],
q(KR) => [
@@ -6803,8 +5976,8 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(KS) => [
- q(0119),
- q(2),
+ q(0272),
+ q(0),
],
q(KT) => [
q(0047),
@@ -6814,13 +5987,17 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0120),
q(0),
],
+ q(KV) => [
+ q(0273),
+ q(0),
+ ],
q(KZ) => [
q(0115),
q(0),
],
q(LA) => [
- q(0122),
- q(1),
+ q(0274),
+ q(0),
],
q(LE) => [
q(0124),
@@ -6843,7 +6020,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(LQ) => [
- q(0270),
+ q(0278),
q(0),
],
q(LS) => [
@@ -6875,8 +6052,8 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(2),
],
q(MD) => [
- q(0146),
- q(2),
+ q(0276),
+ q(0),
],
q(MF) => [
q(0143),
@@ -6894,6 +6071,10 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0134),
q(0),
],
+ q(MJ) => [
+ q(0149),
+ q(0),
+ ],
q(MK) => [
q(0132),
q(2),
@@ -6915,7 +6096,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(MQ) => [
- q(0267),
+ q(0275),
q(0),
],
q(MR) => [
@@ -6974,6 +6155,10 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0157),
q(0),
],
+ q(NN) => [
+ q(0282),
+ q(0),
+ ],
q(NO) => [
q(0166),
q(0),
@@ -6990,10 +6175,6 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0212),
q(0),
],
- q(NT) => [
- q(0269),
- q(0),
- ],
q(NU) => [
q(0160),
q(0),
@@ -7002,6 +6183,10 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0159),
q(0),
],
+ q(OD) => [
+ q(0208),
+ q(0),
+ ],
q(PA) => [
q(0173),
q(0),
@@ -7015,11 +6200,15 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(PF) => [
- q(0271),
+ q(0279),
q(0),
],
q(PG) => [
- q(0272),
+ q(0284),
+ q(0),
+ ],
+ q(PJ) => [
+ q(0260),
q(0),
],
q(PK) => [
@@ -7058,10 +6247,18 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0181),
q(0),
],
+ q(RI) => [
+ q(0197),
+ q(0),
+ ],
q(RM) => [
q(0139),
q(0),
],
+ q(RN) => [
+ q(0189),
+ q(2),
+ ],
q(RO) => [
q(0182),
q(0),
@@ -7075,8 +6272,8 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(RS) => [
- q(0183),
- q(1),
+ q(0280),
+ q(0),
],
q(RW) => [
q(0184),
@@ -7107,8 +6304,8 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(SH) => [
- q(0186),
- q(1),
+ q(0281),
+ q(0),
],
q(SI) => [
q(0203),
@@ -7143,7 +6340,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(SV) => [
- q(0273),
+ q(0285),
q(0),
],
q(SW) => [
@@ -7151,7 +6348,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(SX) => [
- q(0207),
+ q(0283),
q(0),
],
q(SY) => [
@@ -7162,12 +6359,16 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0216),
q(0),
],
+ q(TB) => [
+ q(0185),
+ q(0),
+ ],
q(TD) => [
q(0226),
q(0),
],
q(TE) => [
- q(0274),
+ q(0287),
q(0),
],
q(TH) => [
@@ -7204,7 +6405,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
],
q(TT) => [
q(0222),
- q(1),
+ q(0),
],
q(TU) => [
q(0228),
@@ -7223,8 +6424,12 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(TZ) => [
- q(0220),
- q(2),
+ q(0286),
+ q(0),
+ ],
+ q(UC) => [
+ q(0058),
+ q(0),
],
q(UG) => [
q(0232),
@@ -7264,7 +6469,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
],
q(VI) => [
q(0243),
- q(1),
+ q(0),
],
q(VM) => [
q(0242),
@@ -7272,7 +6477,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
],
q(VQ) => [
q(0244),
- q(2),
+ q(0),
],
q(VT) => [
q(0098),
@@ -7283,7 +6488,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(WE) => [
- q(0276),
+ q(0289),
q(0),
],
q(WF) => [
@@ -7295,7 +6500,7 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0),
],
q(WQ) => [
- q(0275),
+ q(0288),
q(0),
],
q(WS) => [
@@ -7306,10 +6511,6 @@ $Locale::Codes::Data{'country'}{'code2id'} = {
q(0214),
q(0),
],
- q(YI) => [
- q(0252),
- q(0),
- ],
q(YM) => [
q(0247),
q(0),
@@ -8785,260 +7986,259 @@ $Locale::Codes::Data{'country'}{'id2code'} = {
q(0249) => q(zwe),
},
q(dom) => {
- q(0001) => q(AF),
- q(0002) => q(AX),
- q(0003) => q(AL),
- q(0004) => q(DZ),
- q(0005) => q(AS),
- q(0006) => q(AD),
- q(0007) => q(AO),
- q(0008) => q(AI),
- q(0009) => q(AQ),
- q(0010) => q(AG),
- q(0011) => q(AR),
- q(0012) => q(AM),
- q(0013) => q(AW),
- q(0014) => q(AU),
- q(0015) => q(AT),
- q(0016) => q(AZ),
- q(0017) => q(BS),
- q(0018) => q(BH),
- q(0019) => q(BD),
- q(0020) => q(BB),
- q(0021) => q(BY),
- q(0022) => q(BE),
- q(0023) => q(BZ),
- q(0024) => q(BJ),
- q(0025) => q(BM),
- q(0026) => q(BT),
- q(0027) => q(BO),
- q(0029) => q(BA),
- q(0030) => q(BW),
- q(0031) => q(BV),
- q(0032) => q(BR),
- q(0033) => q(IO),
- q(0034) => q(BN),
- q(0035) => q(BG),
- q(0036) => q(BF),
- q(0037) => q(BI),
- q(0038) => q(KH),
- q(0039) => q(CM),
- q(0040) => q(CA),
- q(0041) => q(CV),
- q(0042) => q(KY),
- q(0043) => q(CF),
- q(0044) => q(TD),
- q(0045) => q(CL),
- q(0046) => q(CN),
- q(0047) => q(CX),
- q(0048) => q(CC),
- q(0049) => q(CO),
- q(0050) => q(KM),
- q(0051) => q(CG),
- q(0052) => q(CD),
- q(0053) => q(CK),
- q(0054) => q(CR),
- q(0055) => q(CI),
- q(0056) => q(HR),
- q(0057) => q(CU),
- q(0058) => q(CW),
- q(0059) => q(CY),
- q(0060) => q(CZ),
- q(0061) => q(DK),
- q(0062) => q(DJ),
- q(0063) => q(DM),
- q(0064) => q(DO),
- q(0065) => q(EC),
- q(0066) => q(EG),
- q(0067) => q(SV),
- q(0068) => q(GQ),
- q(0069) => q(ER),
- q(0070) => q(EE),
- q(0071) => q(ET),
- q(0072) => q(FK),
- q(0073) => q(FO),
- q(0074) => q(FJ),
- q(0075) => q(FI),
- q(0076) => q(FR),
- q(0077) => q(GF),
- q(0078) => q(PF),
- q(0079) => q(TF),
- q(0080) => q(GA),
- q(0081) => q(GM),
- q(0082) => q(GE),
- q(0083) => q(DE),
- q(0084) => q(GH),
- q(0085) => q(GI),
- q(0086) => q(GR),
- q(0087) => q(GL),
- q(0088) => q(GD),
- q(0089) => q(GP),
- q(0090) => q(GU),
- q(0091) => q(GT),
- q(0092) => q(GG),
- q(0093) => q(GN),
- q(0094) => q(GW),
- q(0095) => q(GY),
- q(0096) => q(HT),
- q(0097) => q(HM),
- q(0098) => q(VA),
- q(0099) => q(HN),
- q(0100) => q(HK),
- q(0101) => q(HU),
- q(0102) => q(IS),
- q(0103) => q(IN),
- q(0104) => q(ID),
- q(0105) => q(IR),
- q(0106) => q(IQ),
- q(0107) => q(IE),
- q(0108) => q(IM),
- q(0109) => q(IL),
- q(0110) => q(IT),
- q(0111) => q(JM),
- q(0112) => q(JP),
- q(0113) => q(JE),
- q(0114) => q(JO),
- q(0115) => q(KZ),
- q(0116) => q(KE),
- q(0117) => q(KI),
- q(0118) => q(KP),
- q(0119) => q(KR),
- q(0120) => q(KW),
- q(0121) => q(KG),
- q(0122) => q(LA),
- q(0123) => q(LV),
- q(0124) => q(LB),
- q(0125) => q(LS),
- q(0126) => q(LR),
- q(0127) => q(LY),
- q(0128) => q(LI),
- q(0129) => q(LT),
- q(0130) => q(LU),
- q(0131) => q(MO),
- q(0132) => q(MK),
- q(0133) => q(MG),
- q(0134) => q(MW),
- q(0135) => q(MY),
- q(0136) => q(MV),
- q(0137) => q(ML),
- q(0138) => q(MT),
- q(0139) => q(MH),
- q(0140) => q(MQ),
- q(0141) => q(MR),
- q(0142) => q(MU),
- q(0143) => q(YT),
- q(0144) => q(MX),
- q(0145) => q(FM),
- q(0146) => q(MD),
- q(0147) => q(MC),
- q(0148) => q(MN),
- q(0149) => q(ME),
- q(0150) => q(MS),
- q(0151) => q(MA),
- q(0152) => q(MZ),
- q(0153) => q(MM),
- q(0154) => q(NA),
- q(0155) => q(NR),
- q(0156) => q(NP),
- q(0157) => q(NL),
- q(0158) => q(NC),
- q(0159) => q(NZ),
- q(0160) => q(NI),
- q(0161) => q(NE),
- q(0162) => q(NG),
- q(0163) => q(NU),
- q(0164) => q(NF),
- q(0165) => q(MP),
- q(0166) => q(NO),
- q(0167) => q(OM),
- q(0168) => q(PK),
- q(0169) => q(PW),
- q(0170) => q(PS),
- q(0171) => q(PA),
- q(0172) => q(PG),
- q(0173) => q(PY),
- q(0174) => q(PE),
- q(0175) => q(PH),
- q(0176) => q(PN),
- q(0177) => q(PL),
- q(0178) => q(PT),
- q(0179) => q(PR),
- q(0180) => q(QA),
- q(0181) => q(RE),
- q(0182) => q(RO),
- q(0183) => q(RU),
- q(0184) => q(RW),
- q(0185) => q(BL),
- q(0186) => q(SH),
- q(0187) => q(KN),
- q(0188) => q(LC),
- q(0189) => q(MF),
- q(0190) => q(PM),
- q(0191) => q(VC),
- q(0192) => q(WS),
- q(0193) => q(SM),
- q(0194) => q(ST),
- q(0195) => q(SA),
- q(0196) => q(SN),
- q(0197) => q(RS),
- q(0198) => q(SC),
- q(0199) => q(SL),
- q(0200) => q(SG),
- q(0201) => q(SX),
- q(0202) => q(SK),
- q(0203) => q(SI),
- q(0204) => q(SB),
- q(0205) => q(SO),
- q(0206) => q(ZA),
- q(0207) => q(GS),
- q(0208) => q(SS),
- q(0209) => q(ES),
- q(0210) => q(LK),
- q(0211) => q(SD),
- q(0212) => q(SR),
- q(0213) => q(SJ),
- q(0214) => q(SZ),
- q(0215) => q(SE),
- q(0216) => q(CH),
- q(0217) => q(SY),
- q(0218) => q(TW),
- q(0219) => q(TJ),
- q(0220) => q(TZ),
- q(0221) => q(TH),
- q(0222) => q(TL),
- q(0223) => q(TG),
- q(0224) => q(TK),
- q(0225) => q(TO),
- q(0226) => q(TT),
- q(0227) => q(TN),
- q(0228) => q(TR),
- q(0229) => q(TM),
- q(0230) => q(TC),
- q(0231) => q(TV),
- q(0232) => q(UG),
- q(0233) => q(UA),
- q(0234) => q(AE),
- q(0235) => q(UK),
- q(0236) => q(US),
- q(0237) => q(UM),
- q(0238) => q(UY),
- q(0239) => q(UZ),
- q(0240) => q(VU),
- q(0241) => q(VE),
- q(0242) => q(VN),
- q(0243) => q(VG),
- q(0244) => q(VI),
- q(0245) => q(WF),
- q(0246) => q(EH),
- q(0247) => q(YE),
- q(0248) => q(ZM),
- q(0249) => q(ZW),
- q(0269) => q(AN),
- q(0277) => q(AC),
- q(0278) => q(BQ),
- q(0279) => q(EU),
- q(0280) => q(SU),
- q(0281) => q(TP),
+ q(0001) => q(af),
+ q(0002) => q(ax),
+ q(0003) => q(al),
+ q(0004) => q(dz),
+ q(0005) => q(as),
+ q(0006) => q(ad),
+ q(0007) => q(ao),
+ q(0008) => q(ai),
+ q(0009) => q(aq),
+ q(0010) => q(ag),
+ q(0011) => q(ar),
+ q(0012) => q(am),
+ q(0013) => q(aw),
+ q(0014) => q(au),
+ q(0015) => q(at),
+ q(0016) => q(az),
+ q(0017) => q(bs),
+ q(0018) => q(bh),
+ q(0019) => q(bd),
+ q(0020) => q(bb),
+ q(0021) => q(by),
+ q(0022) => q(be),
+ q(0023) => q(bz),
+ q(0024) => q(bj),
+ q(0025) => q(bm),
+ q(0026) => q(bt),
+ q(0027) => q(bo),
+ q(0028) => q(bq),
+ q(0029) => q(ba),
+ q(0030) => q(bw),
+ q(0031) => q(bv),
+ q(0032) => q(br),
+ q(0033) => q(io),
+ q(0034) => q(bn),
+ q(0035) => q(bg),
+ q(0036) => q(bf),
+ q(0037) => q(bi),
+ q(0038) => q(kh),
+ q(0039) => q(cm),
+ q(0040) => q(ca),
+ q(0041) => q(cv),
+ q(0042) => q(ky),
+ q(0043) => q(cf),
+ q(0044) => q(td),
+ q(0045) => q(cl),
+ q(0046) => q(cn),
+ q(0047) => q(cx),
+ q(0048) => q(cc),
+ q(0049) => q(co),
+ q(0050) => q(km),
+ q(0051) => q(cg),
+ q(0052) => q(cd),
+ q(0053) => q(ck),
+ q(0054) => q(cr),
+ q(0055) => q(ci),
+ q(0056) => q(hr),
+ q(0057) => q(cu),
+ q(0058) => q(cw),
+ q(0059) => q(cy),
+ q(0060) => q(cz),
+ q(0061) => q(dk),
+ q(0062) => q(dj),
+ q(0063) => q(dm),
+ q(0064) => q(do),
+ q(0065) => q(ec),
+ q(0066) => q(eg),
+ q(0067) => q(sv),
+ q(0068) => q(gq),
+ q(0069) => q(er),
+ q(0070) => q(ee),
+ q(0071) => q(et),
+ q(0072) => q(fk),
+ q(0073) => q(fo),
+ q(0074) => q(fj),
+ q(0075) => q(fi),
+ q(0076) => q(fr),
+ q(0077) => q(gf),
+ q(0078) => q(pf),
+ q(0079) => q(tf),
+ q(0080) => q(ga),
+ q(0081) => q(gm),
+ q(0082) => q(ge),
+ q(0083) => q(de),
+ q(0084) => q(gh),
+ q(0085) => q(gi),
+ q(0086) => q(gr),
+ q(0087) => q(gl),
+ q(0088) => q(gd),
+ q(0089) => q(gp),
+ q(0090) => q(gu),
+ q(0091) => q(gt),
+ q(0092) => q(gg),
+ q(0093) => q(gn),
+ q(0094) => q(gw),
+ q(0095) => q(gy),
+ q(0096) => q(ht),
+ q(0097) => q(hm),
+ q(0098) => q(va),
+ q(0099) => q(hn),
+ q(0100) => q(hk),
+ q(0101) => q(hu),
+ q(0102) => q(is),
+ q(0103) => q(in),
+ q(0104) => q(id),
+ q(0105) => q(ir),
+ q(0106) => q(iq),
+ q(0107) => q(ie),
+ q(0108) => q(im),
+ q(0109) => q(il),
+ q(0110) => q(it),
+ q(0111) => q(jm),
+ q(0112) => q(jp),
+ q(0113) => q(je),
+ q(0114) => q(jo),
+ q(0115) => q(kz),
+ q(0116) => q(ke),
+ q(0117) => q(ki),
+ q(0118) => q(kp),
+ q(0119) => q(kr),
+ q(0120) => q(kw),
+ q(0121) => q(kg),
+ q(0122) => q(la),
+ q(0123) => q(lv),
+ q(0124) => q(lb),
+ q(0125) => q(ls),
+ q(0126) => q(lr),
+ q(0127) => q(ly),
+ q(0128) => q(li),
+ q(0129) => q(lt),
+ q(0130) => q(lu),
+ q(0131) => q(mo),
+ q(0132) => q(mk),
+ q(0133) => q(mg),
+ q(0134) => q(mw),
+ q(0135) => q(my),
+ q(0136) => q(mv),
+ q(0137) => q(ml),
+ q(0138) => q(mt),
+ q(0139) => q(mh),
+ q(0140) => q(mq),
+ q(0141) => q(mr),
+ q(0142) => q(mu),
+ q(0143) => q(yt),
+ q(0144) => q(mx),
+ q(0145) => q(fm),
+ q(0146) => q(md),
+ q(0147) => q(mc),
+ q(0148) => q(mn),
+ q(0149) => q(me),
+ q(0150) => q(ms),
+ q(0151) => q(ma),
+ q(0152) => q(mz),
+ q(0153) => q(mm),
+ q(0154) => q(na),
+ q(0155) => q(nr),
+ q(0156) => q(np),
+ q(0157) => q(nl),
+ q(0158) => q(nc),
+ q(0159) => q(nz),
+ q(0160) => q(ni),
+ q(0161) => q(ne),
+ q(0162) => q(ng),
+ q(0163) => q(nu),
+ q(0164) => q(nf),
+ q(0165) => q(mp),
+ q(0166) => q(no),
+ q(0167) => q(om),
+ q(0168) => q(pk),
+ q(0169) => q(pw),
+ q(0170) => q(ps),
+ q(0171) => q(pa),
+ q(0172) => q(pg),
+ q(0173) => q(py),
+ q(0174) => q(pe),
+ q(0175) => q(ph),
+ q(0176) => q(pn),
+ q(0177) => q(pl),
+ q(0178) => q(pt),
+ q(0179) => q(pr),
+ q(0180) => q(qa),
+ q(0181) => q(re),
+ q(0182) => q(ro),
+ q(0183) => q(ru),
+ q(0184) => q(rw),
+ q(0185) => q(bl),
+ q(0186) => q(sh),
+ q(0187) => q(kn),
+ q(0188) => q(lc),
+ q(0189) => q(mf),
+ q(0190) => q(pm),
+ q(0191) => q(vc),
+ q(0192) => q(ws),
+ q(0193) => q(sm),
+ q(0194) => q(st),
+ q(0195) => q(sa),
+ q(0196) => q(sn),
+ q(0197) => q(rs),
+ q(0198) => q(sc),
+ q(0199) => q(sl),
+ q(0200) => q(sg),
+ q(0201) => q(sx),
+ q(0202) => q(sk),
+ q(0203) => q(si),
+ q(0204) => q(sb),
+ q(0205) => q(so),
+ q(0206) => q(za),
+ q(0207) => q(gs),
+ q(0208) => q(ss),
+ q(0209) => q(es),
+ q(0210) => q(lk),
+ q(0211) => q(sd),
+ q(0212) => q(sr),
+ q(0213) => q(sj),
+ q(0214) => q(sz),
+ q(0215) => q(se),
+ q(0216) => q(ch),
+ q(0217) => q(sy),
+ q(0218) => q(tw),
+ q(0219) => q(tj),
+ q(0220) => q(tz),
+ q(0221) => q(th),
+ q(0222) => q(tp),
+ q(0223) => q(tg),
+ q(0224) => q(tk),
+ q(0225) => q(to),
+ q(0226) => q(tt),
+ q(0227) => q(tn),
+ q(0228) => q(tr),
+ q(0229) => q(tm),
+ q(0230) => q(tc),
+ q(0231) => q(tv),
+ q(0232) => q(ug),
+ q(0233) => q(ua),
+ q(0234) => q(ae),
+ q(0235) => q(uk),
+ q(0236) => q(us),
+ q(0237) => q(um),
+ q(0238) => q(uy),
+ q(0239) => q(uz),
+ q(0240) => q(vu),
+ q(0241) => q(ve),
+ q(0242) => q(vn),
+ q(0243) => q(vg),
+ q(0244) => q(vi),
+ q(0245) => q(wf),
+ q(0246) => q(eh),
+ q(0247) => q(ye),
+ q(0248) => q(zm),
+ q(0249) => q(zw),
+ q(0290) => q(ac),
+ q(0291) => q(an),
+ q(0292) => q(eu),
+ q(0293) => q(su),
},
q(fips-10) => {
q(0001) => q(AF),
@@ -9090,12 +8290,12 @@ $Locale::Codes::Data{'country'}{'id2code'} = {
q(0049) => q(CO),
q(0050) => q(CN),
q(0051) => q(CF),
- q(0052) => q(CG),
q(0053) => q(CW),
q(0054) => q(CS),
q(0055) => q(IV),
q(0056) => q(HR),
q(0057) => q(CU),
+ q(0058) => q(UC),
q(0059) => q(CY),
q(0060) => q(EZ),
q(0061) => q(DA),
@@ -9134,7 +8334,6 @@ $Locale::Codes::Data{'country'}{'id2code'} = {
q(0094) => q(PU),
q(0095) => q(GY),
q(0096) => q(HA),
- q(0097) => q(HM),
q(0098) => q(VT),
q(0099) => q(HO),
q(0100) => q(HK),
@@ -9155,11 +8354,8 @@ $Locale::Codes::Data{'country'}{'id2code'} = {
q(0115) => q(KZ),
q(0116) => q(KE),
q(0117) => q(KR),
- q(0118) => q(KN),
- q(0119) => q(KS),
q(0120) => q(KU),
q(0121) => q(KG),
- q(0122) => q(LA),
q(0123) => q(LG),
q(0124) => q(LE),
q(0125) => q(LT),
@@ -9183,9 +8379,9 @@ $Locale::Codes::Data{'country'}{'id2code'} = {
q(0143) => q(MF),
q(0144) => q(MX),
q(0145) => q(FM),
- q(0146) => q(MD),
q(0147) => q(MN),
q(0148) => q(MG),
+ q(0149) => q(MJ),
q(0150) => q(MH),
q(0151) => q(MO),
q(0152) => q(MZ),
@@ -9218,11 +8414,11 @@ $Locale::Codes::Data{'country'}{'id2code'} = {
q(0180) => q(QA),
q(0181) => q(RE),
q(0182) => q(RO),
- q(0183) => q(RS),
q(0184) => q(RW),
- q(0186) => q(SH),
+ q(0185) => q(TB),
q(0187) => q(SC),
q(0188) => q(ST),
+ q(0189) => q(RN),
q(0190) => q(SB),
q(0191) => q(VC),
q(0192) => q(WS),
@@ -9230,6 +8426,7 @@ $Locale::Codes::Data{'country'}{'id2code'} = {
q(0194) => q(TP),
q(0195) => q(SA),
q(0196) => q(SG),
+ q(0197) => q(RI),
q(0198) => q(SE),
q(0199) => q(SL),
q(0200) => q(SN),
@@ -9238,7 +8435,7 @@ $Locale::Codes::Data{'country'}{'id2code'} = {
q(0204) => q(BP),
q(0205) => q(SO),
q(0206) => q(SF),
- q(0207) => q(SX),
+ q(0208) => q(OD),
q(0209) => q(SP),
q(0210) => q(CE),
q(0211) => q(SU),
@@ -9249,7 +8446,6 @@ $Locale::Codes::Data{'country'}{'id2code'} = {
q(0217) => q(SY),
q(0218) => q(TW),
q(0219) => q(TI),
- q(0220) => q(TZ),
q(0221) => q(TH),
q(0222) => q(TT),
q(0223) => q(TO),
@@ -9278,31 +8474,44 @@ $Locale::Codes::Data{'country'}{'id2code'} = {
q(0247) => q(YM),
q(0248) => q(ZA),
q(0249) => q(ZI),
- q(0252) => q(YI),
+ q(0252) => q(AX),
q(0253) => q(AT),
q(0254) => q(FQ),
q(0255) => q(BS),
q(0256) => q(IP),
- q(0257) => q(CR),
- q(0258) => q(EU),
- q(0259) => q(GZ),
- q(0260) => q(GO),
- q(0261) => q(HQ),
- q(0262) => q(JN),
- q(0263) => q(DQ),
- q(0264) => q(JQ),
- q(0265) => q(JU),
- q(0266) => q(KQ),
- q(0267) => q(MQ),
- q(0268) => q(BQ),
- q(0269) => q(NT),
- q(0270) => q(LQ),
- q(0271) => q(PF),
- q(0272) => q(PG),
- q(0273) => q(SV),
- q(0274) => q(TE),
- q(0275) => q(WQ),
- q(0276) => q(WE),
+ q(0257) => q(CG),
+ q(0258) => q(CR),
+ q(0259) => q(DX),
+ q(0260) => q(PJ),
+ q(0261) => q(EU),
+ q(0262) => q(GZ),
+ q(0263) => q(GO),
+ q(0264) => q(HM),
+ q(0265) => q(HQ),
+ q(0266) => q(JN),
+ q(0267) => q(DQ),
+ q(0268) => q(JQ),
+ q(0269) => q(JU),
+ q(0270) => q(KQ),
+ q(0271) => q(KN),
+ q(0272) => q(KS),
+ q(0273) => q(KV),
+ q(0274) => q(LA),
+ q(0275) => q(MQ),
+ q(0276) => q(MD),
+ q(0277) => q(BQ),
+ q(0278) => q(LQ),
+ q(0279) => q(PF),
+ q(0280) => q(RS),
+ q(0281) => q(SH),
+ q(0282) => q(NN),
+ q(0283) => q(SX),
+ q(0284) => q(PG),
+ q(0285) => q(SV),
+ q(0286) => q(TZ),
+ q(0287) => q(TE),
+ q(0288) => q(WQ),
+ q(0289) => q(WE),
},
q(numeric) => {
q(0001) => q(004),
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country_Retired.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country_Retired.pm
index 55f49e1353c..22ffbd054d7 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country_Retired.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Country_Retired.pm
@@ -2,7 +2,7 @@ package Locale::Codes::Country_Retired;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'deprecate_codes' is run.
-# Generated on: Thu Mar 1 08:11:47 EST 2012
+# Generated on: Wed Feb 27 10:06:46 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,396 +33,669 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
-
-$Locale::Codes::Retired{'country'}{'dom'}{'code'} = {
- q(FX) => q(France, Metropolitan),
- q(YU) => q(Yugoslavia ),
-};
+$VERSION='3.25';
$Locale::Codes::Retired{'country'}{'alpha-2'}{'code'} = {
- q(zr) => q(Zaire),
- q(yu) => q(Yugoslavia),
- q(tp) => q(East Timor),
+ q(an) => q(Netherlands Antilles),
q(cs) => q(Serbia and Montenegro),
q(fx) => q(France, Metropolitan),
- q(an) => q(Netherlands Antilles),
-};
-
-$Locale::Codes::Retired{'country'}{'numeric'}{'code'} = {
- q(074) => q(Bouvet Island),
- q(334) => q(Heard Island and Mcdonald Islands),
- q(010) => q(Antarctica),
- q(239) => q(South Georgia and the Islands),
- q(086) => q(British Indian Ocean Territory),
- q(249) => q(France, Metropolitan),
- q(581) => q(United States Minor Outlying Islands),
- q(158) => q(Taiwan),
- q(166) => q(Cocos (Keeling) Islands),
- q(891) => q(Serbia and Montenegro),
- q(162) => q(Christmas Island),
- q(530) => q(Netherlands Antilles),
- q(736) => q(Sudan),
- q(260) => q(French Southern and Antarctic Lands),
+ q(tp) => q(East Timor),
+ q(yu) => q(Yugoslavia),
+ q(zr) => q(Zaire),
};
$Locale::Codes::Retired{'country'}{'alpha-3'}{'code'} = {
- q(tmp) => q(East Timor),
- q(sgs) => q(South Georgia and the Islands),
q(ant) => q(Netherlands Antilles),
- q(umi) => q(United States Minor Outlying Islands),
- q(cxr) => q(Christmas Island),
- q(rom) => q(Romania),
- q(iot) => q(British Indian Ocean Territory),
+ q(ata) => q(Antarctica),
+ q(atf) => q(French Southern and Antarctic Lands),
q(bvt) => q(Bouvet Island),
- q(twn) => q(Taiwan),
+ q(cck) => q(Cocos (Keeling) Islands),
+ q(cxr) => q(Christmas Island),
q(fxx) => q(France, Metropolitan),
- q(scg) => q(Serbia and Montenegro),
q(hmd) => q(Heard Island and Mcdonald Islands),
- q(atf) => q(French Southern and Antarctic Lands),
+ q(iot) => q(British Indian Ocean Territory),
+ q(rom) => q(Romania),
+ q(scg) => q(Serbia and Montenegro),
+ q(sgs) => q(South Georgia and the Islands),
+ q(tmp) => q(East Timor),
+ q(twn) => q(Taiwan),
+ q(umi) => q(United States Minor Outlying Islands),
q(yug) => q(Yugoslavia),
- q(ata) => q(Antarctica),
- q(cck) => q(Cocos (Keeling) Islands),
q(zar) => q(Zaire),
};
+$Locale::Codes::Retired{'country'}{'dom'}{'code'} = {
+ q(AC) => q(Ascension Island),
+ q(AD) => q(Andorra),
+ q(AE) => q(United Arab Emirates),
+ q(AF) => q(Afghanistan),
+ q(AG) => q(Antigua and Barbuda),
+ q(AI) => q(Anguilla),
+ q(AL) => q(Albania),
+ q(AM) => q(Armenia),
+ q(AN) => q(Netherlands Antilles),
+ q(AO) => q(Angola),
+ q(AQ) => q(Antarctica),
+ q(AR) => q(Argentina),
+ q(AS) => q(American Samoa),
+ q(AT) => q(Austria),
+ q(AU) => q(Australia),
+ q(AW) => q(Aruba),
+ q(AX) => q(Aland Islands),
+ q(AZ) => q(Azerbaijan),
+ q(BA) => q(Bosnia and Herzegovina),
+ q(BB) => q(Barbados),
+ q(BD) => q(Bangladesh),
+ q(BE) => q(Belgium),
+ q(BF) => q(Burkina Faso),
+ q(BG) => q(Bulgaria),
+ q(BH) => q(Bahrain),
+ q(BI) => q(Burundi),
+ q(BJ) => q(Benin),
+ q(BL) => q(Saint Barthelemy),
+ q(BM) => q(Bermuda),
+ q(BN) => q(Brunei Darussalam),
+ q(BO) => q(Bolivia, Plurinational State of),
+ q(BQ) => q(Bonaire, Sint Eustatius and Saba),
+ q(BR) => q(Brazil),
+ q(BS) => q(Bahamas),
+ q(BT) => q(Bhutan),
+ q(BV) => q(Bouvet Island),
+ q(BW) => q(Botswana),
+ q(BY) => q(Belarus),
+ q(BZ) => q(Belize),
+ q(CA) => q(Canada),
+ q(CC) => q(Cocos (Keeling) Islands),
+ q(CD) => q(Congo, The Democratic Republic of the),
+ q(CF) => q(Central African Republic),
+ q(CG) => q(Congo),
+ q(CH) => q(Switzerland),
+ q(CI) => q(Cote d'Ivoire),
+ q(CK) => q(Cook Islands),
+ q(CL) => q(Chile),
+ q(CM) => q(Cameroon),
+ q(CN) => q(China),
+ q(CO) => q(Colombia),
+ q(CR) => q(Costa Rica),
+ q(CU) => q(Cuba),
+ q(CV) => q(Cape Verde),
+ q(CW) => q(Curacao),
+ q(CX) => q(Christmas Island),
+ q(CY) => q(Cyprus),
+ q(CZ) => q(Czech Republic),
+ q(DE) => q(Germany),
+ q(DJ) => q(Djibouti),
+ q(DK) => q(Denmark),
+ q(DM) => q(Dominica),
+ q(DO) => q(Dominican Republic),
+ q(DZ) => q(Algeria),
+ q(EC) => q(Ecuador),
+ q(EE) => q(Estonia),
+ q(EG) => q(Egypt),
+ q(EH) => q(Western Sahara),
+ q(ER) => q(Eritrea),
+ q(ES) => q(Spain),
+ q(ET) => q(Ethiopia),
+ q(EU) => q(European Union),
+ q(FI) => q(Finland),
+ q(FJ) => q(Fiji),
+ q(FK) => q(Falkland Islands (Malvinas)),
+ q(FM) => q(Micronesia, Federated States of),
+ q(FO) => q(Faroe Islands),
+ q(FR) => q(France),
+ q(FX) => q(France, Metropolitan),
+ q(GA) => q(Gabon),
+ q(GB) => q(United Kingdom),
+ q(GD) => q(Grenada),
+ q(GE) => q(Georgia),
+ q(GF) => q(French Guiana),
+ q(GG) => q(Guernsey),
+ q(GH) => q(Ghana),
+ q(GI) => q(Gibraltar),
+ q(GL) => q(Greenland),
+ q(GM) => q(Gambia),
+ q(GN) => q(Guinea),
+ q(GP) => q(Guadeloupe),
+ q(GQ) => q(Equatorial Guinea),
+ q(GR) => q(Greece),
+ q(GS) => q(South Georgia and the South Sandwich Islands),
+ q(GT) => q(Guatemala),
+ q(GU) => q(Guam),
+ q(GW) => q(Guinea-Bissau),
+ q(GY) => q(Guyana),
+ q(HK) => q(Hong Kong),
+ q(HM) => q(Heard Island and Mcdonald Islands),
+ q(HN) => q(Honduras),
+ q(HR) => q(Croatia),
+ q(HT) => q(Haiti),
+ q(HU) => q(Hungary),
+ q(ID) => q(Indonesia),
+ q(IE) => q(Ireland),
+ q(IL) => q(Israel),
+ q(IM) => q(Isle of Man),
+ q(IN) => q(India),
+ q(IO) => q(British Indian Ocean Territory),
+ q(IQ) => q(Iraq),
+ q(IR) => q(Iran, Islamic Republic of),
+ q(IS) => q(Iceland),
+ q(IT) => q(Italy),
+ q(JE) => q(Jersey),
+ q(JM) => q(Jamaica),
+ q(JO) => q(Jordan),
+ q(JP) => q(Japan),
+ q(KE) => q(Kenya),
+ q(KG) => q(Kyrgyzstan),
+ q(KH) => q(Cambodia),
+ q(KI) => q(Kiribati),
+ q(KM) => q(Comoros),
+ q(KN) => q(Saint Kitts and Nevis),
+ q(KP) => q(Korea, Democratic People's Republic of),
+ q(KR) => q(Korea, Republic of),
+ q(KW) => q(Kuwait),
+ q(KY) => q(Cayman Islands),
+ q(KZ) => q(Kazakhstan),
+ q(LA) => q(Lao People's Democratic Republic),
+ q(LB) => q(Lebanon),
+ q(LC) => q(Saint Lucia),
+ q(LI) => q(Liechtenstein),
+ q(LK) => q(Sri Lanka),
+ q(LR) => q(Liberia),
+ q(LS) => q(Lesotho),
+ q(LT) => q(Lithuania),
+ q(LU) => q(Luxembourg),
+ q(LV) => q(Latvia),
+ q(LY) => q(Libya),
+ q(MA) => q(Morocco),
+ q(MC) => q(Monaco),
+ q(MD) => q(Moldova, Republic of),
+ q(ME) => q(Montenegro),
+ q(MF) => q(Saint Martin (French part)),
+ q(MG) => q(Madagascar),
+ q(MH) => q(Marshall Islands),
+ q(MK) => q(Macedonia, The Former Yugoslav Republic of),
+ q(ML) => q(Mali),
+ q(MM) => q(Myanmar),
+ q(MN) => q(Mongolia),
+ q(MO) => q(Macao),
+ q(MP) => q(Northern Mariana Islands),
+ q(MQ) => q(Martinique),
+ q(MR) => q(Mauritania),
+ q(MS) => q(Montserrat),
+ q(MT) => q(Malta),
+ q(MU) => q(Mauritius),
+ q(MV) => q(Maldives),
+ q(MW) => q(Malawi),
+ q(MX) => q(Mexico),
+ q(MY) => q(Malaysia),
+ q(MZ) => q(Mozambique),
+ q(NA) => q(Namibia),
+ q(NC) => q(New Caledonia),
+ q(NE) => q(Niger),
+ q(NF) => q(Norfolk Island),
+ q(NG) => q(Nigeria),
+ q(NI) => q(Nicaragua),
+ q(NL) => q(Netherlands),
+ q(NO) => q(Norway),
+ q(NP) => q(Nepal),
+ q(NR) => q(Nauru),
+ q(NU) => q(Niue),
+ q(NZ) => q(New Zealand),
+ q(OM) => q(Oman),
+ q(PA) => q(Panama),
+ q(PE) => q(Peru),
+ q(PF) => q(French Polynesia),
+ q(PG) => q(Papua New Guinea),
+ q(PH) => q(Philippines),
+ q(PK) => q(Pakistan),
+ q(PL) => q(Poland),
+ q(PM) => q(Saint Pierre and Miquelon),
+ q(PN) => q(Pitcairn),
+ q(PR) => q(Puerto Rico),
+ q(PS) => q(Palestinian Territory, Occupied),
+ q(PT) => q(Portugal),
+ q(PW) => q(Palau),
+ q(PY) => q(Paraguay),
+ q(QA) => q(Qatar),
+ q(RE) => q(Reunion),
+ q(RO) => q(Romania),
+ q(RS) => q(Serbia),
+ q(RU) => q(Russian Federation),
+ q(RW) => q(Rwanda),
+ q(SA) => q(Saudi Arabia),
+ q(SB) => q(Solomon Islands),
+ q(SC) => q(Seychelles),
+ q(SD) => q(Sudan),
+ q(SE) => q(Sweden),
+ q(SG) => q(Singapore),
+ q(SH) => q(Saint Helena, Ascension and Tristan da Cunha),
+ q(SI) => q(Slovenia),
+ q(SJ) => q(Svalbard and Jan Mayen),
+ q(SK) => q(Slovakia),
+ q(SL) => q(Sierra Leone),
+ q(SM) => q(San Marino),
+ q(SN) => q(Senegal),
+ q(SO) => q(Somalia),
+ q(SR) => q(Suriname),
+ q(SS) => q(South Sudan),
+ q(ST) => q(Sao Tome and Principe),
+ q(SU) => q(Soviet Union),
+ q(SV) => q(El Salvador),
+ q(SX) => q(Sint Maarten (Dutch part)),
+ q(SY) => q(Syrian Arab Republic),
+ q(SZ) => q(Swaziland),
+ q(TC) => q(Turks and Caicos Islands),
+ q(TD) => q(Chad),
+ q(TF) => q(French Southern Territories),
+ q(TG) => q(Togo),
+ q(TH) => q(Thailand),
+ q(TJ) => q(Tajikistan),
+ q(TK) => q(Tokelau),
+ q(TL) => q(Timor-Leste),
+ q(TM) => q(Turkmenistan),
+ q(TN) => q(Tunisia),
+ q(TO) => q(Tonga),
+ q(TP) => q(Portuguese Timor),
+ q(TR) => q(Turkey),
+ q(TT) => q(Trinidad and Tobago),
+ q(TV) => q(Tuvalu),
+ q(TW) => q(Taiwan, Province of China),
+ q(TZ) => q(Tanzania, United Republic of),
+ q(UA) => q(Ukraine),
+ q(UG) => q(Uganda),
+ q(UK) => q(United Kingdom),
+ q(UM) => q(United States Minor Outlying Islands),
+ q(US) => q(United States),
+ q(UY) => q(Uruguay),
+ q(UZ) => q(Uzbekistan),
+ q(VA) => q(Holy See (Vatican City State)),
+ q(VC) => q(Saint Vincent and the Grenadines),
+ q(VE) => q(Venezuela, Bolivarian Republic of),
+ q(VG) => q(Virgin Islands, British),
+ q(VI) => q(Virgin Islands, U.S.),
+ q(VN) => q(Viet Nam),
+ q(VU) => q(Vanuatu),
+ q(WF) => q(Wallis and Futuna),
+ q(WS) => q(Samoa),
+ q(YE) => q(Yemen),
+ q(YT) => q(Mayotte),
+ q(YU) => q(Yugoslavia ),
+ q(ZA) => q(South Africa),
+ q(ZM) => q(Zambia),
+ q(ZW) => q(Zimbabwe),
+};
+
$Locale::Codes::Retired{'country'}{'fips-10'}{'code'} = {
- q(RN) => q(Saint Martin),
- q(UC) => q(Curacao),
- q(RI) => q(Serbia),
- q(MJ) => q(Montenegro),
q(KV) => q(Kosovo),
- q(TB) => q(Saint Barthelemy),
+ q(MJ) => q(Montenegro),
q(NN) => q(Sint Maarten),
+ q(NT) => q(Netherlands Antilles),
+ q(RI) => q(Serbia),
+ q(RN) => q(Saint Martin),
+ q(TB) => q(Saint Barthelemy),
+ q(UC) => q(Curacao),
+ q(YI) => q(Serbia and Montenegro),
};
-$Locale::Codes::Retired{'country'}{'dom'}{'name'} = {
- q(libyan arab jamahiriya) => [ q(LY), q(Libyan Arab Jamahiriya) ],
- q(taiwan) => [ q(TW), q(Taiwan) ],
- q(yugoslavia ) => [ q(YU), q(Yugoslavia ) ],
- q(soviet union ) => [ q(SU), q(Soviet Union ) ],
- q(france, metropolitan) => [ q(FX), q(France, Metropolitan) ],
- q(bonaire, saint eustatius and saba) => [ q(BQ), q(Bonaire, Saint Eustatius and Saba) ],
- q(saint helena, ascension and tristan da cunha) => [ q(SH), q(Saint Helena, Ascension and Tristan da Cunha) ],
- q(saint martin) => [ q(MF), q(Saint Martin) ],
- q(portuguese timor ) => [ q(TP), q(Portuguese Timor ) ],
+$Locale::Codes::Retired{'country'}{'numeric'}{'code'} = {
+ q(010) => q(Antarctica),
+ q(074) => q(Bouvet Island),
+ q(086) => q(British Indian Ocean Territory),
+ q(158) => q(Taiwan),
+ q(162) => q(Christmas Island),
+ q(166) => q(Cocos (Keeling) Islands),
+ q(239) => q(South Georgia and the Islands),
+ q(249) => q(France, Metropolitan),
+ q(260) => q(French Southern and Antarctic Lands),
+ q(334) => q(Heard Island and Mcdonald Islands),
+ q(530) => q(Netherlands Antilles),
+ q(581) => q(United States Minor Outlying Islands),
+ q(736) => q(Sudan),
+ q(891) => q(Serbia and Montenegro),
};
$Locale::Codes::Retired{'country'}{'alpha-2'}{'name'} = {
- q(netherlands antilles) => [ q(an), q(Netherlands Antilles) ],
+ q(bolivia) => [ q(bo), q(Bolivia) ],
+ q(bosnia and herzegowina) => [ q(ba), q(Bosnia and Herzegowina) ],
q(east timor) => [ q(tl), q(East Timor) ],
- q(virgin islands (u.s.)) => [ q(vi), q(Virgin Islands (U.S.)) ],
- q(libyan arab jamahiriya) => [ q(ly), q(Libyan Arab Jamahiriya) ],
- q(venezuela) => [ q(ve), q(Venezuela) ],
+ q(france, metropolitan) => [ q(fx), q(France, Metropolitan) ],
+ q(heard and mc donald islands) => [ q(hm), q(Heard and Mc Donald Islands) ],
+ q(iran (islamic republic of)) => [ q(ir), q(Iran (Islamic Republic of)) ],
q(kazakstan) => [ q(kz), q(Kazakstan) ],
+ q(libyan arab jamahiriya) => [ q(ly), q(Libyan Arab Jamahiriya) ],
+ q(macau) => [ q(mo), q(Macau) ],
q(micronesia (federated states of)) => [ q(fm), q(Micronesia (Federated States of)) ],
- q(france, metropolitan) => [ q(fx), q(France, Metropolitan) ],
- q(bosnia and herzegowina) => [ q(ba), q(Bosnia and Herzegowina) ],
+ q(netherlands antilles) => [ q(an), q(Netherlands Antilles) ],
+ q(saint helena) => [ q(sh), q(Saint Helena) ],
+ q(saint martin) => [ q(mf), q(Saint Martin) ],
+ q(serbia and montenegro) => [ q(cs), q(Serbia and Montenegro) ],
+ q(st. helena) => [ q(sh), q(St. Helena) ],
+ q(st. pierre and miquelon) => [ q(pm), q(St. Pierre and Miquelon) ],
q(svalbard and jan mayen islands) => [ q(sj), q(Svalbard and Jan Mayen Islands) ],
- q(heard and mc donald islands) => [ q(hm), q(Heard and Mc Donald Islands) ],
+ q(vatican city state (holy see)) => [ q(va), q(Vatican City State (Holy See)) ],
+ q(venezuela) => [ q(ve), q(Venezuela) ],
+ q(vietnam) => [ q(vn), q(Vietnam) ],
+ q(virgin islands (british)) => [ q(vg), q(Virgin Islands (British)) ],
+ q(virgin islands (u.s.)) => [ q(vi), q(Virgin Islands (U.S.)) ],
q(wallis and futuna islands) => [ q(wf), q(Wallis and Futuna Islands) ],
q(yugoslavia) => [ q(yu), q(Yugoslavia) ],
- q(st. pierre and miquelon) => [ q(pm), q(St. Pierre and Miquelon) ],
q(zaire) => [ q(zr), q(Zaire) ],
- q(virgin islands (british)) => [ q(vg), q(Virgin Islands (British)) ],
- q(serbia and montenegro) => [ q(cs), q(Serbia and Montenegro) ],
- q(vatican city state (holy see)) => [ q(va), q(Vatican City State (Holy See)) ],
- q(macau) => [ q(mo), q(Macau) ],
- q(st. helena) => [ q(sh), q(St. Helena) ],
- q(vietnam) => [ q(vn), q(Vietnam) ],
- q(bolivia) => [ q(bo), q(Bolivia) ],
- q(saint helena) => [ q(sh), q(Saint Helena) ],
- q(saint martin) => [ q(mf), q(Saint Martin) ],
- q(iran (islamic republic of)) => [ q(ir), q(Iran (Islamic Republic of)) ],
-};
-
-$Locale::Codes::Retired{'country'}{'numeric'}{'name'} = {
- q(netherlands antilles) => [ q(530), q(Netherlands Antilles) ],
- q(united kingdom) => [ q(826), q(United Kingdom) ],
- q(east timor) => [ q(626), q(East Timor) ],
- q(libyan arab jamahiriya) => [ q(434), q(Libyan Arab Jamahiriya) ],
- q(antarctica) => [ q(010), q(Antarctica) ],
- q(taiwan) => [ q(158), q(Taiwan) ],
- q(venezuela) => [ q(862), q(Venezuela) ],
- q(taiwan, province of china) => [ q(158), q(Taiwan, Province of China) ],
- q(south georgia and the south sandwich islands) => [ q(239), q(South Georgia and the South Sandwich Islands) ],
- q(korea, democratic people's republic of) => [ q(408), q(Korea, Democratic People's Republic of) ],
- q(christmas island) => [ q(162), q(Christmas Island) ],
- q(heard island and mcdonald islands) => [ q(334), q(Heard Island and Mcdonald Islands) ],
- q(yugoslavia) => [ q(891), q(Yugoslavia) ],
- q(cocos (keeling) islands) => [ q(166), q(Cocos (Keeling) Islands) ],
- q(hong kong special administrative region of china) => [ q(344), q(Hong Kong Special Administrative Region of China) ],
- q(british indian ocean territory) => [ q(086), q(British Indian Ocean Territory) ],
- q(virgin islands, british) => [ q(092), q(Virgin Islands, British) ],
- q(french southern territories) => [ q(260), q(French Southern Territories) ],
- q(faroe islands) => [ q(234), q(Faroe Islands) ],
- q(zaire) => [ q(180), q(Zaire) ],
- q(united states minor outlying islands) => [ q(581), q(United States Minor Outlying Islands) ],
- q(congo, the democratic republic of the) => [ q(180), q(Congo, The Democratic Republic of the) ],
- q(iran, islamic republic of) => [ q(364), q(Iran, Islamic Republic of) ],
- q(serbia and montenegro) => [ q(891), q(Serbia and Montenegro) ],
- q(macedonia, the former yugoslav republic of) => [ q(807), q(Macedonia, the Former Yugoslav Republic of) ],
- q(macau) => [ q(446), q(Macau) ],
- q(french southern and antarctic lands) => [ q(260), q(French Southern and Antarctic Lands) ],
- q(hong kong) => [ q(344), q(Hong Kong) ],
- q(macao special administrative region of china) => [ q(446), q(Macao Special Administrative Region of China) ],
- q(palestinian territory, occupied) => [ q(275), q(Palestinian Territory, Occupied) ],
- q(kazakstan) => [ q(398), q(Kazakstan) ],
- q(macao) => [ q(446), q(Macao) ],
- q(france, metropolitan) => [ q(249), q(France, Metropolitan) ],
- q(tanzania, united republic of) => [ q(834), q(Tanzania, United Republic of) ],
- q(bouvet island) => [ q(074), q(Bouvet Island) ],
- q(holy see (vatican city state)) => [ q(336), q(Holy See (Vatican City State)) ],
- q(micronesia, federated states of) => [ q(583), q(Micronesia, Federated States of) ],
- q(moldova, republic of) => [ q(498), q(Moldova, Republic of) ],
- q(virgin islands, u.s.) => [ q(850), q(Virgin Islands, U.S.) ],
- q(united states) => [ q(840), q(United States) ],
- q(korea, republic of) => [ q(410), q(Korea, Republic of) ],
- q(vietnam) => [ q(704), q(Vietnam) ],
- q(bolivia) => [ q(068), q(Bolivia) ],
- q(south georgia and the islands) => [ q(239), q(South Georgia and the Islands) ],
- q(svalbard and jan mayen) => [ q(744), q(Svalbard and Jan Mayen) ],
- q(wallis and futuna) => [ q(876), q(Wallis and Futuna) ],
};
$Locale::Codes::Retired{'country'}{'alpha-3'}{'name'} = {
- q(netherlands antilles) => [ q(ant), q(Netherlands Antilles) ],
- q(united kingdom) => [ q(gbr), q(United Kingdom) ],
- q(east timor) => [ q(tls), q(East Timor) ],
- q(libyan arab jamahiriya) => [ q(lby), q(Libyan Arab Jamahiriya) ],
q(antarctica) => [ q(ata), q(Antarctica) ],
- q(taiwan) => [ q(twn), q(Taiwan) ],
- q(venezuela) => [ q(ven), q(Venezuela) ],
- q(taiwan, province of china) => [ q(twn), q(Taiwan, Province of China) ],
- q(south georgia and the south sandwich islands) => [ q(sgs), q(South Georgia and the South Sandwich Islands) ],
- q(korea, democratic people's republic of) => [ q(prk), q(Korea, Democratic People's Republic of) ],
+ q(bolivia) => [ q(bol), q(Bolivia) ],
+ q(bouvet island) => [ q(bvt), q(Bouvet Island) ],
+ q(british indian ocean territory) => [ q(iot), q(British Indian Ocean Territory) ],
q(christmas island) => [ q(cxr), q(Christmas Island) ],
- q(heard island and mcdonald islands) => [ q(hmd), q(Heard Island and Mcdonald Islands) ],
- q(yugoslavia) => [ q(yug), q(Yugoslavia) ],
q(cocos (keeling) islands) => [ q(cck), q(Cocos (Keeling) Islands) ],
- q(hong kong special administrative region of china) => [ q(hkg), q(Hong Kong Special Administrative Region of China) ],
- q(british indian ocean territory) => [ q(iot), q(British Indian Ocean Territory) ],
- q(virgin islands, british) => [ q(vgb), q(Virgin Islands, British) ],
- q(french southern territories) => [ q(atf), q(French Southern Territories) ],
- q(faroe islands) => [ q(fro), q(Faroe Islands) ],
- q(zaire) => [ q(zar), q(Zaire) ],
- q(united states minor outlying islands) => [ q(umi), q(United States Minor Outlying Islands) ],
q(congo, the democratic republic of the) => [ q(cod), q(Congo, The Democratic Republic of the) ],
- q(iran, islamic republic of) => [ q(irn), q(Iran, Islamic Republic of) ],
- q(serbia and montenegro) => [ q(scg), q(Serbia and Montenegro) ],
- q(macedonia, the former yugoslav republic of) => [ q(mkd), q(Macedonia, the Former Yugoslav Republic of) ],
- q(macau) => [ q(mac), q(Macau) ],
+ q(east timor) => [ q(tls), q(East Timor) ],
+ q(faroe islands) => [ q(fro), q(Faroe Islands) ],
+ q(france, metropolitan) => [ q(fxx), q(France, Metropolitan) ],
q(french southern and antarctic lands) => [ q(atf), q(French Southern and Antarctic Lands) ],
+ q(french southern territories) => [ q(atf), q(French Southern Territories) ],
+ q(heard island and mcdonald islands) => [ q(hmd), q(Heard Island and Mcdonald Islands) ],
+ q(holy see (vatican city state)) => [ q(vat), q(Holy See (Vatican City State)) ],
q(hong kong) => [ q(hkg), q(Hong Kong) ],
- q(macao special administrative region of china) => [ q(mac), q(Macao Special Administrative Region of China) ],
- q(palestinian territory, occupied) => [ q(pse), q(Palestinian Territory, Occupied) ],
+ q(hong kong special administrative region of china) => [ q(hkg), q(Hong Kong Special Administrative Region of China) ],
+ q(iran, islamic republic of) => [ q(irn), q(Iran, Islamic Republic of) ],
q(kazakstan) => [ q(kaz), q(Kazakstan) ],
+ q(korea, democratic people's republic of) => [ q(prk), q(Korea, Democratic People's Republic of) ],
+ q(korea, republic of) => [ q(kor), q(Korea, Republic of) ],
+ q(libyan arab jamahiriya) => [ q(lby), q(Libyan Arab Jamahiriya) ],
q(macao) => [ q(mac), q(Macao) ],
- q(france, metropolitan) => [ q(fxx), q(France, Metropolitan) ],
- q(tanzania, united republic of) => [ q(tza), q(Tanzania, United Republic of) ],
- q(bouvet island) => [ q(bvt), q(Bouvet Island) ],
- q(holy see (vatican city state)) => [ q(vat), q(Holy See (Vatican City State)) ],
+ q(macao special administrative region of china) => [ q(mac), q(Macao Special Administrative Region of China) ],
+ q(macau) => [ q(mac), q(Macau) ],
+ q(macedonia, the former yugoslav republic of) => [ q(mkd), q(Macedonia, the Former Yugoslav Republic of) ],
q(micronesia, federated states of) => [ q(fsm), q(Micronesia, Federated States of) ],
q(moldova, republic of) => [ q(mda), q(Moldova, Republic of) ],
- q(virgin islands, u.s.) => [ q(vir), q(Virgin Islands, U.S.) ],
- q(united states) => [ q(usa), q(United States) ],
- q(korea, republic of) => [ q(kor), q(Korea, Republic of) ],
- q(vietnam) => [ q(vnm), q(Vietnam) ],
- q(bolivia) => [ q(bol), q(Bolivia) ],
+ q(netherlands antilles) => [ q(ant), q(Netherlands Antilles) ],
+ q(palestinian territory, occupied) => [ q(pse), q(Palestinian Territory, Occupied) ],
+ q(serbia and montenegro) => [ q(scg), q(Serbia and Montenegro) ],
q(south georgia and the islands) => [ q(sgs), q(South Georgia and the Islands) ],
+ q(south georgia and the south sandwich islands) => [ q(sgs), q(South Georgia and the South Sandwich Islands) ],
q(svalbard and jan mayen) => [ q(sjm), q(Svalbard and Jan Mayen) ],
+ q(taiwan) => [ q(twn), q(Taiwan) ],
+ q(taiwan, province of china) => [ q(twn), q(Taiwan, Province of China) ],
+ q(tanzania, united republic of) => [ q(tza), q(Tanzania, United Republic of) ],
+ q(united kingdom) => [ q(gbr), q(United Kingdom) ],
+ q(united states) => [ q(usa), q(United States) ],
+ q(united states minor outlying islands) => [ q(umi), q(United States Minor Outlying Islands) ],
+ q(venezuela) => [ q(ven), q(Venezuela) ],
+ q(vietnam) => [ q(vnm), q(Vietnam) ],
+ q(virgin islands, british) => [ q(vgb), q(Virgin Islands, British) ],
+ q(virgin islands, u.s.) => [ q(vir), q(Virgin Islands, U.S.) ],
q(wallis and futuna) => [ q(wlf), q(Wallis and Futuna) ],
+ q(yugoslavia) => [ q(yug), q(Yugoslavia) ],
+ q(zaire) => [ q(zar), q(Zaire) ],
+};
+
+$Locale::Codes::Retired{'country'}{'dom'}{'name'} = {
+ q(bonaire, saint eustatius and saba) => [ q(BQ), q(Bonaire, Saint Eustatius and Saba) ],
+ q(bonaire, sint eustatius and saba) => [ q(BQ), q(Bonaire, Sint Eustatius and Saba) ],
+ q(france, metropolitan) => [ q(FX), q(France, Metropolitan) ],
+ q(libyan arab jamahiriya) => [ q(LY), q(Libyan Arab Jamahiriya) ],
+ q(portuguese timor) => [ q(TP), q(Portuguese Timor) ],
+ q(portuguese timor ) => [ q(TP), q(Portuguese Timor ) ],
+ q(saint helena, ascension and tristan da cunha) => [ q(SH), q(Saint Helena, Ascension and Tristan da Cunha) ],
+ q(saint martin) => [ q(MF), q(Saint Martin) ],
+ q(soviet union) => [ q(SU), q(Soviet Union) ],
+ q(soviet union ) => [ q(SU), q(Soviet Union ) ],
+ q(taiwan) => [ q(TW), q(Taiwan) ],
+ q(yugoslavia ) => [ q(YU), q(Yugoslavia ) ],
};
$Locale::Codes::Retired{'country'}{'fips-10'}{'name'} = {
- q(islamic state of afghanistan) => [ q(AF), q(Islamic State of Afghanistan) ],
- q(department of guiana) => [ q(FG), q(Department of Guiana) ],
- q(territorial collectivity of saint pierre and miquelon) => [ q(SB), q(Territorial Collectivity of Saint Pierre and Miquelon) ],
- q(union of burma) => [ q(BM), q(Union of Burma) ],
- q(republic of iceland) => [ q(IC), q(Republic of Iceland) ],
- q(republic of cote d'ivoire) => [ q(IV), q(Republic of Cote D'Ivoire) ],
q(arab republic of egypt) => [ q(EG), q(Arab Republic of Egypt) ],
+ q(argentine republic) => [ q(AR), q(Argentine Republic) ],
+ q(bailiwick of guernsey) => [ q(GK), q(Bailiwick of Guernsey) ],
+ q(bailiwick of jersey) => [ q(JE), q(Bailiwick of Jersey) ],
+ q(bolivarian republic of venezuela) => [ q(VE), q(Bolivarian Republic of Venezuela) ],
+ q(british virgin islands) => [ q(VI), q(British Virgin Islands) ],
+ q(co-operative republic of guyana) => [ q(GY), q(Co-operative Republic of Guyana) ],
+ q(commonwealth of australia) => [ q(AS), q(Commonwealth of Australia) ],
+ q(commonwealth of dominica) => [ q(DO), q(Commonwealth of Dominica) ],
+ q(commonwealth of puerto rico) => [ q(RQ), q(Commonwealth of Puerto Rico) ],
+ q(commonwealth of the bahamas) => [ q(BF), q(Commonwealth of the Bahamas) ],
+ q(commonwealth of the northern mariana islands) => [ q(CQ), q(Commonwealth of the Northern Mariana Islands) ],
+ q(coral sea islands territory) => [ q(CR), q(Coral Sea Islands Territory) ],
+ q(curacao) => [ q(UC), q(Curacao) ],
+ q(democratic republic of sao tome and principe) => [ q(TP), q(Democratic Republic of Sao Tome and Principe) ],
+ q(democratic socialist republic of sri lanka) => [ q(CE), q(Democratic Socialist Republic of Sri Lanka) ],
+ q(department of guadeloupe) => [ q(GP), q(Department of Guadeloupe) ],
+ q(department of guiana) => [ q(FG), q(Department of Guiana) ],
+ q(department of martinique) => [ q(MB), q(Department of Martinique) ],
+ q(department of reunion) => [ q(RE), q(Department of Reunion) ],
+ q(east timor) => [ q(TT), q(East Timor) ],
q(federal democratic republic of ethiopia) => [ q(ET), q(Federal Democratic Republic of Ethiopia) ],
- q(republic of tajikistan) => [ q(TI), q(Republic of Tajikistan) ],
- q(kingdom of bhutan) => [ q(BT), q(Kingdom of Bhutan) ],
- q(republic of guatemala) => [ q(GT), q(Republic of Guatemala) ],
- q(republic of el salvador) => [ q(ES), q(Republic of El Salvador) ],
- q(republic of niger) => [ q(NG), q(Republic of Niger) ],
- q(republic of guinea-bissau) => [ q(PU), q(Republic of Guinea-Bissau) ],
- q(republic of indonesia) => [ q(ID), q(Republic of Indonesia) ],
- q(republic of trinidad and tobago) => [ q(TD), q(Republic of Trinidad and Tobago) ],
- q(republic of vanuatu) => [ q(NH), q(Republic of Vanuatu) ],
- q(federative republic of brazil) => [ q(BR), q(Federative Republic of Brazil) ],
- q(republic of croatia) => [ q(HR), q(Republic of Croatia) ],
- q(virgin islands of the united states) => [ q(VQ), q(Virgin Islands of the United States) ],
- q(republic of honduras) => [ q(HO), q(Republic of Honduras) ],
- q(republic of chile) => [ q(CI), q(Republic of Chile) ],
- q(republic of cameroon) => [ q(CM), q(Republic of Cameroon) ],
- q(territorial collectivity of mayotte) => [ q(MF), q(Territorial Collectivity of Mayotte) ],
- q(kingdom of spain) => [ q(SP), q(Kingdom of Spain) ],
- q(republic of paraguay) => [ q(PA), q(Republic of Paraguay) ],
- q(kosovo) => [ q(KV), q(Kosovo) ],
+ q(federal islamic republic of the comoros) => [ q(CN), q(Federal Islamic Republic of the Comoros) ],
q(federal republic of germany) => [ q(GM), q(Federal Republic of Germany) ],
- q(republic of cyprus) => [ q(CY), q(Republic of Cyprus) ],
+ q(federal republic of nigeria) => [ q(NI), q(Federal Republic of Nigeria) ],
+ q(federated states of micronesia) => [ q(FM), q(Federated States of Micronesia) ],
+ q(federation of saint kitts and nevis) => [ q(SC), q(Federation of Saint Kitts and Nevis) ],
+ q(federative republic of brazil) => [ q(BR), q(Federative Republic of Brazil) ],
+ q(french republic) => [ q(FR), q(French Republic) ],
+ q(gabonese republic) => [ q(GB), q(Gabonese Republic) ],
+ q(grand duchy of luxembourg) => [ q(LU), q(Grand Duchy of Luxembourg) ],
+ q(great socialist people's libyan arab jamahiriya) => [ q(LY), q(Great Socialist People's Libyan Arab Jamahiriya) ],
+ q(hashemite kingdom of jordan) => [ q(JO), q(Hashemite Kingdom of Jordan) ],
+ q(heard island and mcdonald islands) => [ q(HM), q(Heard Island and Mcdonald Islands) ],
+ q(hellenic republic) => [ q(GR), q(Hellenic Republic) ],
+ q(hong kong s.a.r.) => [ q(HK), q(Hong Kong S.A.R.) ],
q(hong kong special administrative region) => [ q(HK), q(Hong Kong Special Administrative Region) ],
- q(kingdom of norway) => [ q(NO), q(Kingdom of Norway) ],
- q(republic of suriname) => [ q(NS), q(Republic of Suriname) ],
- q(commonwealth of the northern mariana islands) => [ q(CQ), q(Commonwealth of the Northern Mariana Islands) ],
- q(swiss confederation) => [ q(SZ), q(Swiss Confederation) ],
- q(republic of djibouti) => [ q(DJ), q(Republic of Djibouti) ],
- q(republic of haiti) => [ q(HA), q(Republic of Haiti) ],
- q(republic of the gambia) => [ q(GA), q(Republic of the Gambia) ],
- q(state of israel) => [ q(IS), q(State of Israel) ],
+ q(independent state of papua new guinea) => [ q(PP), q(Independent State of Papua New Guinea) ],
+ q(independent state of samoa) => [ q(WS), q(Independent State of Samoa) ],
+ q(islamic republic of iran) => [ q(IR), q(Islamic Republic of Iran) ],
q(islamic republic of mauritania) => [ q(MR), q(Islamic Republic of Mauritania) ],
- q(united mexican states) => [ q(MX), q(United Mexican States) ],
- q(territory of cocos (keeling) islands) => [ q(CK), q(Territory of Cocos (Keeling) Islands) ],
- q(republic of malawi) => [ q(MI), q(Republic of Malawi) ],
- q(kingdom of tonga) => [ q(TN), q(Kingdom of Tonga) ],
- q(togolese republic) => [ q(TO), q(Togolese Republic) ],
- q(bolivarian republic of venezuela) => [ q(VE), q(Bolivarian Republic of Venezuela) ],
- q(republic of albania) => [ q(AL), q(Republic of Albania) ],
- q(republic of hungary) => [ q(HU), q(Republic of Hungary) ],
- q(republic of namibia) => [ q(WA), q(Republic of Namibia) ],
- q(commonwealth of puerto rico) => [ q(RQ), q(Commonwealth of Puerto Rico) ],
- q(principality of monaco) => [ q(MN), q(Principality of Monaco) ],
- q(socialist republic of vietnam) => [ q(VM), q(Socialist Republic of Vietnam) ],
- q(federation of saint kitts and nevis) => [ q(SC), q(Federation of Saint Kitts and Nevis) ],
- q(republic of estonia) => [ q(EN), q(Republic of Estonia) ],
- q(department of reunion) => [ q(RE), q(Department of Reunion) ],
q(islamic republic of pakistan) => [ q(PK), q(Islamic Republic of Pakistan) ],
- q(kingdom of thailand) => [ q(TH), q(Kingdom of Thailand) ],
+ q(islamic state of afghanistan) => [ q(AF), q(Islamic State of Afghanistan) ],
+ q(italian republic) => [ q(IT), q(Italian Republic) ],
+ q(kingdom of belgium) => [ q(BE), q(Kingdom of Belgium) ],
+ q(kingdom of bhutan) => [ q(BT), q(Kingdom of Bhutan) ],
+ q(kingdom of cambodia) => [ q(CB), q(Kingdom of Cambodia) ],
q(kingdom of denmark) => [ q(DA), q(Kingdom of Denmark) ],
- q(saint barthelemy) => [ q(TB), q(Saint Barthelemy) ],
- q(territory of ashmore and cartier islands) => [ q(AT), q(Territory of Ashmore and Cartier Islands) ],
- q(republic of yemen) => [ q(YM), q(Republic of Yemen) ],
- q(republic of finland) => [ q(FI), q(Republic of Finland) ],
- q(republic of lithuania) => [ q(LH), q(Republic of Lithuania) ],
- q(republic of cape verde) => [ q(CV), q(Republic of Cape Verde) ],
+ q(kingdom of morocco) => [ q(MO), q(Kingdom of Morocco) ],
+ q(kingdom of nepal) => [ q(NP), q(Kingdom of Nepal) ],
+ q(kingdom of norway) => [ q(NO), q(Kingdom of Norway) ],
+ q(kingdom of saudi arabia) => [ q(SA), q(Kingdom of Saudi Arabia) ],
+ q(kingdom of spain) => [ q(SP), q(Kingdom of Spain) ],
+ q(kingdom of swaziland) => [ q(WZ), q(Kingdom of Swaziland) ],
+ q(kingdom of sweden) => [ q(SW), q(Kingdom of Sweden) ],
+ q(kingdom of thailand) => [ q(TH), q(Kingdom of Thailand) ],
+ q(kingdom of the netherlands) => [ q(NL), q(Kingdom of the Netherlands) ],
+ q(kingdom of tonga) => [ q(TN), q(Kingdom of Tonga) ],
+ q(kosovo) => [ q(KV), q(Kosovo) ],
+ q(kyrgyz republic) => [ q(KG), q(Kyrgyz Republic) ],
+ q(lebanese republic) => [ q(LE), q(Lebanese Republic) ],
+ q(macau s.a.r) => [ q(MC), q(Macau S.A.R) ],
+ q(macau special administrative region) => [ q(MC), q(Macau Special Administrative Region) ],
+ q(montenegro) => [ q(MJ), q(Montenegro) ],
+ q(negara brunei darussalam) => [ q(BX), q(Negara Brunei Darussalam) ],
+ q(netherlands antilles) => [ q(NT), q(Netherlands Antilles) ],
+ q(oriental republic of uruguay) => [ q(UY), q(Oriental Republic of Uruguay) ],
+ q(people's democratic republic of algeria) => [ q(AG), q(People's Democratic Republic of Algeria) ],
+ q(people's republic of bangladesh) => [ q(BG), q(People's Republic of Bangladesh) ],
+ q(people's republic of china) => [ q(CH), q(People's Republic of China) ],
+ q(pitcairn, henderson, ducie and oeno islands) => [ q(PC), q(Pitcairn, Henderson, Ducie and Oeno Islands) ],
q(portuguese republic) => [ q(PO), q(Portuguese Republic) ],
- q(republic of senegal) => [ q(SG), q(Republic of Senegal) ],
q(principality of andorra) => [ q(AN), q(Principality of Andorra) ],
- q(great socialist people's libyan arab jamahiriya) => [ q(LY), q(Great Socialist People's Libyan Arab Jamahiriya) ],
- q(republic of mozambique) => [ q(MZ), q(Republic of Mozambique) ],
- q(territory of guam) => [ q(GQ), q(Territory of Guam) ],
+ q(principality of liechtenstein) => [ q(LS), q(Principality of Liechtenstein) ],
+ q(principality of monaco) => [ q(MN), q(Principality of Monaco) ],
+ q(republic of albania) => [ q(AL), q(Republic of Albania) ],
+ q(republic of angola) => [ q(AO), q(Republic of Angola) ],
+ q(republic of armenia) => [ q(AM), q(Republic of Armenia) ],
q(republic of austria) => [ q(AU), q(Republic of Austria) ],
- q(republic of botswana) => [ q(BC), q(Republic of Botswana) ],
- q(territory of heard island and mcdonald islands) => [ q(HM), q(Territory of Heard Island and McDonald Islands) ],
+ q(republic of azerbaijan) => [ q(AJ), q(Republic of Azerbaijan) ],
+ q(republic of belarus) => [ q(BO), q(Republic of Belarus) ],
+ q(republic of benin) => [ q(BN), q(Republic of Benin) ],
q(republic of bolivia) => [ q(BL), q(Republic of Bolivia) ],
- q(republic of kazakhstan) => [ q(KZ), q(Republic of Kazakhstan) ],
- q(department of martinique) => [ q(MB), q(Department of Martinique) ],
- q(oriental republic of uruguay) => [ q(UY), q(Oriental Republic of Uruguay) ],
+ q(republic of botswana) => [ q(BC), q(Republic of Botswana) ],
+ q(republic of burundi) => [ q(BY), q(Republic of Burundi) ],
+ q(republic of cameroon) => [ q(CM), q(Republic of Cameroon) ],
+ q(republic of cape verde) => [ q(CV), q(Republic of Cape Verde) ],
+ q(republic of chad) => [ q(CD), q(Republic of Chad) ],
+ q(republic of chile) => [ q(CI), q(Republic of Chile) ],
+ q(republic of colombia) => [ q(CO), q(Republic of Colombia) ],
q(republic of costa rica) => [ q(CS), q(Republic of Costa Rica) ],
- q(state of eritrea) => [ q(ER), q(State of Eritrea) ],
- q(republic of belarus) => [ q(BO), q(Republic of Belarus) ],
- q(slovak republic) => [ q(LO), q(Slovak Republic) ],
- q(republic of angola) => [ q(AO), q(Republic of Angola) ],
- q(republic of panama) => [ q(PM), q(Republic of Panama) ],
- q(territory of new caledonia and dependencies) => [ q(NC), q(Territory of New Caledonia and Dependencies) ],
- q(state of qatar) => [ q(QA), q(State of Qatar) ],
- q(kingdom of swaziland) => [ q(WZ), q(Kingdom of Swaziland) ],
- q(republic of palau) => [ q(PS), q(Republic of Palau) ],
- q(territory of the french southern and antarctic lands) => [ q(FS), q(Territory of the French Southern and Antarctic Lands) ],
- q(democratic republic of sao tome and principe) => [ q(TP), q(Democratic Republic of Sao Tome and Principe) ],
- q(islamic republic of iran) => [ q(IR), q(Islamic Republic of Iran) ],
- q(montenegro) => [ q(MJ), q(Montenegro) ],
- q(commonwealth of australia) => [ q(AS), q(Commonwealth of Australia) ],
- q(people's republic of china) => [ q(CH), q(People's Republic of China) ],
- q(republic of sierra leone) => [ q(SL), q(Republic of Sierra Leone) ],
- q(republic of the fiji islands) => [ q(FJ), q(Republic of the Fiji Islands) ],
- q(serbia) => [ q(RI), q(Serbia) ],
- q(territory of norfolk island) => [ q(NF), q(Territory of Norfolk Island) ],
- q(republic of zambia) => [ q(ZA), q(Republic of Zambia) ],
- q(republic of tunisia) => [ q(TS), q(Republic of Tunisia) ],
- q(republic of peru) => [ q(PE), q(Republic of Peru) ],
- q(republic of slovenia) => [ q(SI), q(Republic of Slovenia) ],
- q(republic of the congo) => [ q(CF), q(Republic of the Congo) ],
- q(republic of liberia) => [ q(LI), q(Republic of Liberia) ],
+ q(republic of cote d'ivoire) => [ q(IV), q(Republic of Cote D'Ivoire) ],
+ q(republic of croatia) => [ q(HR), q(Republic of Croatia) ],
+ q(republic of cuba) => [ q(CU), q(Republic of Cuba) ],
+ q(republic of cyprus) => [ q(CY), q(Republic of Cyprus) ],
+ q(republic of djibouti) => [ q(DJ), q(Republic of Djibouti) ],
+ q(republic of ecuador) => [ q(EC), q(Republic of Ecuador) ],
+ q(republic of el salvador) => [ q(ES), q(Republic of El Salvador) ],
q(republic of equatorial guinea) => [ q(EK), q(Republic of Equatorial Guinea) ],
- q(macau special administrative region) => [ q(MC), q(Macau Special Administrative Region) ],
- q(republic of san marino) => [ q(SM), q(Republic of San Marino) ],
+ q(republic of estonia) => [ q(EN), q(Republic of Estonia) ],
+ q(republic of finland) => [ q(FI), q(Republic of Finland) ],
+ q(republic of ghana) => [ q(GH), q(Republic of Ghana) ],
+ q(republic of guatemala) => [ q(GT), q(Republic of Guatemala) ],
q(republic of guinea) => [ q(GV), q(Republic of Guinea) ],
- q(commonwealth of dominica) => [ q(DO), q(Commonwealth of Dominica) ],
- q(federal republic of nigeria) => [ q(NI), q(Federal Republic of Nigeria) ],
- q(italian republic) => [ q(IT), q(Italian Republic) ],
- q(kingdom of cambodia) => [ q(CB), q(Kingdom of Cambodia) ],
- q(pitcairn, henderson, ducie and oeno islands) => [ q(PC), q(Pitcairn, Henderson, Ducie and Oeno Islands) ],
- q(kingdom of belgium) => [ q(BE), q(Kingdom of Belgium) ],
- q(kingdom of sweden) => [ q(SW), q(Kingdom of Sweden) ],
- q(bailiwick of guernsey) => [ q(GK), q(Bailiwick of Guernsey) ],
- q(democratic socialist republic of sri lanka) => [ q(CE), q(Democratic Socialist Republic of Sri Lanka) ],
+ q(republic of guinea-bissau) => [ q(PU), q(Republic of Guinea-Bissau) ],
+ q(republic of haiti) => [ q(HA), q(Republic of Haiti) ],
+ q(republic of honduras) => [ q(HO), q(Republic of Honduras) ],
+ q(republic of hungary) => [ q(HU), q(Republic of Hungary) ],
+ q(republic of iceland) => [ q(IC), q(Republic of Iceland) ],
+ q(republic of india) => [ q(IN), q(Republic of India) ],
+ q(republic of indonesia) => [ q(ID), q(Republic of Indonesia) ],
+ q(republic of iraq) => [ q(IZ), q(Republic of Iraq) ],
+ q(republic of kazakhstan) => [ q(KZ), q(Republic of Kazakhstan) ],
+ q(republic of kenya) => [ q(KE), q(Republic of Kenya) ],
+ q(republic of kiribati) => [ q(KR), q(Republic of Kiribati) ],
+ q(republic of latvia) => [ q(LG), q(Republic of Latvia) ],
+ q(republic of lesotho) => [ q(LT), q(Republic of Lesotho) ],
+ q(republic of liberia) => [ q(LI), q(Republic of Liberia) ],
+ q(republic of lithuania) => [ q(LH), q(Republic of Lithuania) ],
+ q(republic of macedonia) => [ q(MK), q(Republic of Macedonia) ],
+ q(republic of madagascar) => [ q(MA), q(Republic of Madagascar) ],
+ q(republic of malawi) => [ q(MI), q(Republic of Malawi) ],
q(republic of maldives) => [ q(MV), q(Republic of Maldives) ],
q(republic of mali) => [ q(ML), q(Republic of Mali) ],
- q(republic of south africa) => [ q(SF), q(Republic of South Africa) ],
- q(sultanate of oman) => [ q(MU), q(Sultanate of Oman) ],
- q(territory of american samoa) => [ q(AQ), q(Territory of American Samoa) ],
- q(rwandese republic) => [ q(RW), q(Rwandese Republic) ],
- q(republic of latvia) => [ q(LG), q(Republic of Latvia) ],
- q(independent state of papua new guinea) => [ q(PP), q(Independent State of Papua New Guinea) ],
+ q(republic of malta) => [ q(MT), q(Republic of Malta) ],
+ q(republic of mauritius) => [ q(MP), q(Republic of Mauritius) ],
+ q(republic of mozambique) => [ q(MZ), q(Republic of Mozambique) ],
+ q(republic of namibia) => [ q(WA), q(Republic of Namibia) ],
+ q(republic of nauru) => [ q(NR), q(Republic of Nauru) ],
q(republic of nicaragua) => [ q(NU), q(Republic of Nicaragua) ],
- q(republic of the philippines) => [ q(RP), q(Republic of the Philippines) ],
- q(french republic) => [ q(FR), q(French Republic) ],
- q(grand duchy of luxembourg) => [ q(LU), q(Grand Duchy of Luxembourg) ],
- q(bailiwick of jersey) => [ q(JE), q(Bailiwick of Jersey) ],
- q(republic of macedonia) => [ q(MK), q(Republic of Macedonia) ],
- q(state of the vatican city) => [ q(VT), q(State of the Vatican City) ],
- q(people's democratic republic of algeria) => [ q(AG), q(People's Democratic Republic of Algeria) ],
- q(republic of kiribati) => [ q(KR), q(Republic of Kiribati) ],
- q(kingdom of nepal) => [ q(NP), q(Kingdom of Nepal) ],
- q(republic of cuba) => [ q(CU), q(Republic of Cuba) ],
- q(saint martin) => [ q(RN), q(Saint Martin) ],
- q(kingdom of the netherlands) => [ q(NL), q(Kingdom of the Netherlands) ],
+ q(republic of niger) => [ q(NG), q(Republic of Niger) ],
+ q(republic of palau) => [ q(PS), q(Republic of Palau) ],
+ q(republic of panama) => [ q(PM), q(Republic of Panama) ],
+ q(republic of paraguay) => [ q(PA), q(Republic of Paraguay) ],
+ q(republic of peru) => [ q(PE), q(Republic of Peru) ],
+ q(republic of poland) => [ q(PL), q(Republic of Poland) ],
+ q(republic of san marino) => [ q(SM), q(Republic of San Marino) ],
+ q(republic of senegal) => [ q(SG), q(Republic of Senegal) ],
+ q(republic of seychelles) => [ q(SE), q(Republic of Seychelles) ],
+ q(republic of sierra leone) => [ q(SL), q(Republic of Sierra Leone) ],
+ q(republic of singapore) => [ q(SN), q(Republic of Singapore) ],
+ q(republic of slovenia) => [ q(SI), q(Republic of Slovenia) ],
+ q(republic of south africa) => [ q(SF), q(Republic of South Africa) ],
+ q(republic of suriname) => [ q(NS), q(Republic of Suriname) ],
+ q(republic of tajikistan) => [ q(TI), q(Republic of Tajikistan) ],
+ q(republic of the congo) => [ q(CF), q(Republic of the Congo) ],
+ q(republic of the fiji islands) => [ q(FJ), q(Republic of the Fiji Islands) ],
+ q(republic of the gambia) => [ q(GA), q(Republic of the Gambia) ],
q(republic of the marshall islands) => [ q(RM), q(Republic of the Marshall Islands) ],
- q(people's republic of bangladesh) => [ q(BG), q(People's Republic of Bangladesh) ],
- q(republic of madagascar) => [ q(MA), q(Republic of Madagascar) ],
- q(kingdom of morocco) => [ q(MO), q(Kingdom of Morocco) ],
+ q(republic of the philippines) => [ q(RP), q(Republic of the Philippines) ],
q(republic of the sudan) => [ q(SU), q(Republic of the Sudan) ],
- q(co-operative republic of guyana) => [ q(GY), q(Co-operative Republic of Guyana) ],
- q(republic of ghana) => [ q(GH), q(Republic of Ghana) ],
- q(state of bahrain) => [ q(BA), q(State of Bahrain) ],
- q(republic of chad) => [ q(CD), q(Republic of Chad) ],
- q(gabonese republic) => [ q(GB), q(Gabonese Republic) ],
- q(coral sea islands territory) => [ q(CR), q(Coral Sea Islands Territory) ],
- q(argentine republic) => [ q(AR), q(Argentine Republic) ],
- q(republic of poland) => [ q(PL), q(Republic of Poland) ],
- q(republic of zimbabwe) => [ q(ZI), q(Republic of Zimbabwe) ],
- q(kyrgyz republic) => [ q(KG), q(Kyrgyz Republic) ],
- q(republic of azerbaijan) => [ q(AJ), q(Republic of Azerbaijan) ],
- q(republic of malta) => [ q(MT), q(Republic of Malta) ],
- q(hellenic republic) => [ q(GR), q(Hellenic Republic) ],
- q(republic of armenia) => [ q(AM), q(Republic of Armenia) ],
- q(kingdom of saudi arabia) => [ q(SA), q(Kingdom of Saudi Arabia) ],
- q(curacao) => [ q(UC), q(Curacao) ],
- q(republic of benin) => [ q(BN), q(Republic of Benin) ],
- q(territory of french polynesia) => [ q(FP), q(Territory of French Polynesia) ],
- q(republic of ecuador) => [ q(EC), q(Republic of Ecuador) ],
- q(republic of lesotho) => [ q(LT), q(Republic of Lesotho) ],
- q(hashemite kingdom of jordan) => [ q(JO), q(Hashemite Kingdom of Jordan) ],
- q(republic of burundi) => [ q(BY), q(Republic of Burundi) ],
+ q(republic of trinidad and tobago) => [ q(TD), q(Republic of Trinidad and Tobago) ],
+ q(republic of tunisia) => [ q(TS), q(Republic of Tunisia) ],
+ q(republic of turkey) => [ q(TU), q(Republic of Turkey) ],
q(republic of uzbekistan) => [ q(UZ), q(Republic of Uzbekistan) ],
- q(territory of the wallis and futuna islands) => [ q(WF), q(Territory of the Wallis and Futuna Islands) ],
+ q(republic of vanuatu) => [ q(NH), q(Republic of Vanuatu) ],
+ q(republic of yemen) => [ q(YM), q(Republic of Yemen) ],
+ q(republic of zambia) => [ q(ZA), q(Republic of Zambia) ],
+ q(republic of zimbabwe) => [ q(ZI), q(Republic of Zimbabwe) ],
+ q(rwandese republic) => [ q(RW), q(Rwandese Republic) ],
+ q(saint barthelemy) => [ q(TB), q(Saint Barthelemy) ],
+ q(saint helena) => [ q(SH), q(Saint Helena) ],
+ q(saint martin) => [ q(RN), q(Saint Martin) ],
+ q(serbia) => [ q(RI), q(Serbia) ],
+ q(serbia and montenegro) => [ q(YI), q(Serbia and Montenegro) ],
q(sint maarten) => [ q(NN), q(Sint Maarten) ],
- q(lebanese republic) => [ q(LE), q(Lebanese Republic) ],
+ q(slovak republic) => [ q(LO), q(Slovak Republic) ],
+ q(socialist republic of vietnam) => [ q(VM), q(Socialist Republic of Vietnam) ],
+ q(south georgia and the south sandwich islands) => [ q(SX), q(South Georgia and the South Sandwich Islands) ],
+ q(state of bahrain) => [ q(BA), q(State of Bahrain) ],
+ q(state of eritrea) => [ q(ER), q(State of Eritrea) ],
+ q(state of israel) => [ q(IS), q(State of Israel) ],
q(state of kuwait) => [ q(KU), q(State of Kuwait) ],
- q(department of guadeloupe) => [ q(GP), q(Department of Guadeloupe) ],
- q(republic of colombia) => [ q(CO), q(Republic of Colombia) ],
- q(republic of singapore) => [ q(SN), q(Republic of Singapore) ],
- q(republic of turkey) => [ q(TU), q(Republic of Turkey) ],
- q(republic of seychelles) => [ q(SE), q(Republic of Seychelles) ],
- q(republic of iraq) => [ q(IZ), q(Republic of Iraq) ],
- q(republic of india) => [ q(IN), q(Republic of India) ],
- q(independent state of samoa) => [ q(WS), q(Independent State of Samoa) ],
- q(republic of nauru) => [ q(NR), q(Republic of Nauru) ],
+ q(state of qatar) => [ q(QA), q(State of Qatar) ],
+ q(state of the vatican city) => [ q(VT), q(State of the Vatican City) ],
+ q(sultanate of oman) => [ q(MU), q(Sultanate of Oman) ],
+ q(swiss confederation) => [ q(SZ), q(Swiss Confederation) ],
+ q(territorial collectivity of mayotte) => [ q(MF), q(Territorial Collectivity of Mayotte) ],
+ q(territorial collectivity of saint pierre and miquelon) => [ q(SB), q(Territorial Collectivity of Saint Pierre and Miquelon) ],
+ q(territory of american samoa) => [ q(AQ), q(Territory of American Samoa) ],
+ q(territory of ashmore and cartier islands) => [ q(AT), q(Territory of Ashmore and Cartier Islands) ],
q(territory of christmas island) => [ q(KT), q(Territory of Christmas Island) ],
- q(negara brunei darussalam) => [ q(BX), q(Negara Brunei Darussalam) ],
- q(commonwealth of the bahamas) => [ q(BF), q(Commonwealth of the Bahamas) ],
- q(republic of mauritius) => [ q(MP), q(Republic of Mauritius) ],
- q(federal islamic republic of the comoros) => [ q(CN), q(Federal Islamic Republic of the Comoros) ],
- q(republic of kenya) => [ q(KE), q(Republic of Kenya) ],
- q(principality of liechtenstein) => [ q(LS), q(Principality of Liechtenstein) ],
+ q(territory of cocos (keeling) islands) => [ q(CK), q(Territory of Cocos (Keeling) Islands) ],
+ q(territory of french polynesia) => [ q(FP), q(Territory of French Polynesia) ],
+ q(territory of guam) => [ q(GQ), q(Territory of Guam) ],
+ q(territory of heard island and mcdonald islands) => [ q(HM), q(Territory of Heard Island and McDonald Islands) ],
+ q(territory of new caledonia and dependencies) => [ q(NC), q(Territory of New Caledonia and Dependencies) ],
+ q(territory of norfolk island) => [ q(NF), q(Territory of Norfolk Island) ],
+ q(territory of the french southern and antarctic lands) => [ q(FS), q(Territory of the French Southern and Antarctic Lands) ],
+ q(territory of the wallis and futuna islands) => [ q(WF), q(Territory of the Wallis and Futuna Islands) ],
+ q(togolese republic) => [ q(TO), q(Togolese Republic) ],
+ q(union of burma) => [ q(BM), q(Union of Burma) ],
+ q(united mexican states) => [ q(MX), q(United Mexican States) ],
+ q(virgin islands) => [ q(VQ), q(Virgin Islands) ],
+ q(virgin islands of the united states) => [ q(VQ), q(Virgin Islands of the United States) ],
+ q(wake atoll) => [ q(WQ), q(Wake Atoll) ],
+};
+
+$Locale::Codes::Retired{'country'}{'numeric'}{'name'} = {
+ q(antarctica) => [ q(010), q(Antarctica) ],
+ q(bolivia) => [ q(068), q(Bolivia) ],
+ q(bouvet island) => [ q(074), q(Bouvet Island) ],
+ q(british indian ocean territory) => [ q(086), q(British Indian Ocean Territory) ],
+ q(christmas island) => [ q(162), q(Christmas Island) ],
+ q(cocos (keeling) islands) => [ q(166), q(Cocos (Keeling) Islands) ],
+ q(congo, the democratic republic of the) => [ q(180), q(Congo, The Democratic Republic of the) ],
+ q(east timor) => [ q(626), q(East Timor) ],
+ q(faroe islands) => [ q(234), q(Faroe Islands) ],
+ q(france, metropolitan) => [ q(249), q(France, Metropolitan) ],
+ q(french southern and antarctic lands) => [ q(260), q(French Southern and Antarctic Lands) ],
+ q(french southern territories) => [ q(260), q(French Southern Territories) ],
+ q(heard island and mcdonald islands) => [ q(334), q(Heard Island and Mcdonald Islands) ],
+ q(holy see (vatican city state)) => [ q(336), q(Holy See (Vatican City State)) ],
+ q(hong kong) => [ q(344), q(Hong Kong) ],
+ q(hong kong special administrative region of china) => [ q(344), q(Hong Kong Special Administrative Region of China) ],
+ q(iran, islamic republic of) => [ q(364), q(Iran, Islamic Republic of) ],
+ q(kazakstan) => [ q(398), q(Kazakstan) ],
+ q(korea, democratic people's republic of) => [ q(408), q(Korea, Democratic People's Republic of) ],
+ q(korea, republic of) => [ q(410), q(Korea, Republic of) ],
+ q(libyan arab jamahiriya) => [ q(434), q(Libyan Arab Jamahiriya) ],
+ q(macao) => [ q(446), q(Macao) ],
+ q(macao special administrative region of china) => [ q(446), q(Macao Special Administrative Region of China) ],
+ q(macau) => [ q(446), q(Macau) ],
+ q(macedonia, the former yugoslav republic of) => [ q(807), q(Macedonia, the Former Yugoslav Republic of) ],
+ q(micronesia, federated states of) => [ q(583), q(Micronesia, Federated States of) ],
+ q(moldova, republic of) => [ q(498), q(Moldova, Republic of) ],
+ q(netherlands antilles) => [ q(530), q(Netherlands Antilles) ],
+ q(palestinian territory, occupied) => [ q(275), q(Palestinian Territory, Occupied) ],
+ q(serbia and montenegro) => [ q(891), q(Serbia and Montenegro) ],
+ q(south georgia and the islands) => [ q(239), q(South Georgia and the Islands) ],
+ q(south georgia and the south sandwich islands) => [ q(239), q(South Georgia and the South Sandwich Islands) ],
+ q(svalbard and jan mayen) => [ q(744), q(Svalbard and Jan Mayen) ],
+ q(taiwan) => [ q(158), q(Taiwan) ],
+ q(taiwan, province of china) => [ q(158), q(Taiwan, Province of China) ],
+ q(tanzania, united republic of) => [ q(834), q(Tanzania, United Republic of) ],
+ q(united kingdom) => [ q(826), q(United Kingdom) ],
+ q(united states) => [ q(840), q(United States) ],
+ q(united states minor outlying islands) => [ q(581), q(United States Minor Outlying Islands) ],
+ q(venezuela) => [ q(862), q(Venezuela) ],
+ q(vietnam) => [ q(704), q(Vietnam) ],
+ q(virgin islands, british) => [ q(092), q(Virgin Islands, British) ],
+ q(virgin islands, u.s.) => [ q(850), q(Virgin Islands, U.S.) ],
+ q(wallis and futuna) => [ q(876), q(Wallis and Futuna) ],
+ q(yugoslavia) => [ q(891), q(Yugoslavia) ],
+ q(zaire) => [ q(180), q(Zaire) ],
};
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency.pm
index b6b4e7a144d..789d8e36d2f 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency.pm
@@ -1,13 +1,13 @@
package Locale::Codes::Currency;
# Copyright (C) 2001 Canon Research Centre Europe (CRE).
# Copyright (C) 2002-2009 Neil Bowers
-# Copyright (c) 2010-2012 Sullivan Beck
+# Copyright (c) 2010-2013 Sullivan Beck
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
use strict;
+require 5.006;
use warnings;
-require 5.002;
require Exporter;
use Carp;
@@ -22,7 +22,7 @@ use Locale::Codes::Currency_Retired;
our($VERSION,@ISA,@EXPORT,@EXPORT_OK);
-$VERSION='3.21';
+$VERSION='3.25';
@ISA = qw(Exporter);
@EXPORT = qw(code2currency
currency2code
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency.pod
index a79b811c1d0..17e86f4ba2a 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency.pod
@@ -119,7 +119,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001 Michael Hennecke
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency_Codes.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency_Codes.pm
index aaff8601f4d..6d0bd348c66 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency_Codes.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency_Codes.pm
@@ -2,7 +2,7 @@ package Locale::Codes::Currency_Codes;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'get_codes' is run.
-# Generated on: Thu Mar 1 08:07:11 EST 2012
+# Generated on: Wed Feb 27 10:04:26 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,11 +33,12 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
+$VERSION='3.25';
$Locale::Codes::Data{'currency'}{'id'} = '0180';
@@ -541,7 +542,7 @@ $Locale::Codes::Data{'currency'}{'id2names'} = {
q(Vatu),
],
q(0167) => [
- q(Bolivar Fuerte),
+ q(Bolivar),
],
q(0168) => [
q(Dong),
@@ -646,7 +647,7 @@ $Locale::Codes::Data{'currency'}{'alias2id'} = {
q(0020),
q(0),
],
- q(bolivar fuerte) => [
+ q(bolivar) => [
q(0167),
q(0),
],
@@ -2010,7 +2011,7 @@ $Locale::Codes::Data{'currency'}{'code2id'} = {
q(0092),
q(0),
],
- q(ZMK) => [
+ q(ZMW) => [
q(0170),
q(0),
],
@@ -2532,10 +2533,6 @@ $Locale::Codes::Data{'currency'}{'code2id'} = {
q(0169),
q(0),
],
- q(894) => [
- q(0170),
- q(0),
- ],
q(901) => [
q(0149),
q(0),
@@ -2652,6 +2649,10 @@ $Locale::Codes::Data{'currency'}{'code2id'} = {
q(0105),
q(0),
],
+ q(967) => [
+ q(0170),
+ q(0),
+ ],
q(968) => [
q(0143),
q(0),
@@ -2910,7 +2911,7 @@ $Locale::Codes::Data{'currency'}{'id2code'} = {
q(0167) => q(VEF),
q(0168) => q(VND),
q(0169) => q(YER),
- q(0170) => q(ZMK),
+ q(0170) => q(ZMW),
q(0171) => q(ZWL),
q(0172) => q(XBA),
q(0173) => q(XBB),
@@ -3091,7 +3092,7 @@ $Locale::Codes::Data{'currency'}{'id2code'} = {
q(0167) => q(937),
q(0168) => q(704),
q(0169) => q(886),
- q(0170) => q(894),
+ q(0170) => q(967),
q(0171) => q(932),
q(0172) => q(955),
q(0173) => q(956),
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency_Retired.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency_Retired.pm
index d5c8e174cc4..4d398958025 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency_Retired.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Currency_Retired.pm
@@ -2,7 +2,7 @@ package Locale::Codes::Currency_Retired;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'deprecate_codes' is run.
-# Generated on: Thu Mar 1 08:11:47 EST 2012
+# Generated on: Wed Feb 27 10:06:46 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,139 +33,142 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
-
-$Locale::Codes::Retired{'currency'}{'num'}{'code'} = {
-};
+$VERSION='3.25';
$Locale::Codes::Retired{'currency'}{'alpha'}{'code'} = {
- q(YUM) => q(New Dinar),
- q(SKK) => q(Slovak Koruna),
- q(MTL) => q(Maltese Lira),
- q(BYB) => q(Belarussian Ruble),
+ q(ADP) => q(Andorran Peseta),
+ q(AFA) => q(Afghani),
+ q(AON) => q(New Kwanza),
+ q(AOR) => q(Kwanza Reajustado),
q(ATS) => q(Schilling),
- q(NLG) => q(Netherlands Guilder),
- q(XB5) => q(European Unit of Account 17),
+ q(AZM) => q(Azerbaijanian Manat),
+ q(BEF) => q(Belgian Franc),
+ q(BGL) => q(Lev),
+ q(BYB) => q(Belarussian Ruble),
q(CYP) => q(Cyprus Pound),
- q(AFA) => q(Afghani),
- q(ZAL) => q(Financial Rand),
- q(FRF) => q(French Franc),
+ q(DEM) => q(German Mark),
+ q(ECS) => q(Sucre),
+ q(ECV) => q(Unidad de Valor Constante (UVC)),
q(EEK) => q(Kroon),
- q(TMM) => q(Manat),
- q(ZRN) => q(New Zaire),
- q(GHC) => q(Cedi),
- q(XFU) => q(UIC-Franc),
- q(TJR) => q(Tajik Ruble),
- q(AZM) => q(Azerbaijanian Manat),
- q(SRG) => q(Surinam Guilder),
q(ESP) => q(Spanish Peseta),
- q(TPE) => q(Timor Escudo),
- q(LUF) => q(Luxembourg Franc),
+ q(FIM) => q(Markka),
+ q(FRF) => q(French Franc),
+ q(GHC) => q(Cedi),
+ q(GRD) => q(Drachma),
q(GWP) => q(Guinea-Bissau Peso),
- q(BGL) => q(Lev),
- q(ECV) => q(Unidad de Valor Constante (UVC)),
- q(PTE) => q(Portuguese Escudo),
q(IEP) => q(Irish Pound),
- q(UAK) => q(Karbovanets),
- q(ECS) => q(Sucre),
- q(MZM) => q(Metical),
- q(RUR) => q(Russian Ruble),
- q(XFO) => q(Gold-Franc),
+ q(ITL) => q(Italian Lira),
+ q(LUF) => q(Luxembourg Franc),
q(MGF) => q(Malagasy Franc),
+ q(MTL) => q(Maltese Lira),
+ q(MZM) => q(Metical),
+ q(NLG) => q(Netherlands Guilder),
+ q(PTE) => q(Portuguese Escudo),
q(ROL) => q(Leu),
- q(BEF) => q(Belgian Franc),
- q(AON) => q(New Kwanza),
- q(ZWD) => q(Zimbabwe Dollar),
- q(FIM) => q(Markka),
- q(SIT) => q(Tolar),
- q(GRD) => q(Drachma),
+ q(RUR) => q(Russian Ruble),
q(SDD) => q(Sudanese Dinar),
- q(AOR) => q(Kwanza Reajustado),
- q(VEB) => q(Bolivar),
+ q(SIT) => q(Tolar),
+ q(SKK) => q(Slovak Koruna),
+ q(SRG) => q(Surinam Guilder),
+ q(TJR) => q(Tajik Ruble),
+ q(TMM) => q(Manat),
+ q(TPE) => q(Timor Escudo),
q(TRL) => q(Turkish Lira),
- q(ITL) => q(Italian Lira),
- q(DEM) => q(German Mark),
+ q(UAK) => q(Karbovanets),
+ q(VEB) => q(Bolivar),
+ q(XB5) => q(European Unit of Account 17),
q(XEU) => q(ECU (until 1998-12-31)),
- q(ADP) => q(Andorran Peseta),
+ q(XFO) => q(Gold-Franc),
+ q(XFU) => q(UIC-Franc),
+ q(YUM) => q(New Dinar),
+ q(ZAL) => q(Financial Rand),
+ q(ZRN) => q(New Zaire),
+ q(ZWD) => q(Zimbabwe Dollar),
};
-$Locale::Codes::Retired{'currency'}{'num'}{'name'} = {
- q(new manat) => [ q(934), q(New Manat) ],
- q(metical) => [ q(943), q(Metical) ],
- q(cedi) => [ q(936), q(Cedi) ],
- q(leu) => [ q(946), q(Leu) ],
+$Locale::Codes::Retired{'currency'}{'num'}{'code'} = {
};
$Locale::Codes::Retired{'currency'}{'alpha'}{'name'} = {
- q(irish pound) => [ q(IEP), q(Irish Pound) ],
- q(netherlands antillian guilder) => [ q(ANG), q(Netherlands Antillian Guilder) ],
- q(schilling) => [ q(ATS), q(Schilling) ],
- q(uic-franc) => [ q(XFU), q(UIC-Franc) ],
- q(netherlands guilder) => [ q(NLG), q(Netherlands Guilder) ],
- q(mexican nuevo peso) => [ q(MXN), q(Mexican Nuevo Peso) ],
- q(new kwanza) => [ q(AON), q(New Kwanza) ],
- q(karbovanets) => [ q(UAK), q(Karbovanets) ],
- q(european composite unit) => [ q(XBA), q(European Composite Unit) ],
- q(new manat) => [ q(TMT), q(New Manat) ],
- q(malagasy franc) => [ q(MGF), q(Malagasy Franc) ],
- q(ecu (until 1998-12-31)) => [ q(XEU), q(ECU (until 1998-12-31)) ],
- q(kuna) => [ q(HRK), q(Kuna) ],
- q(german mark) => [ q(DEM), q(German Mark) ],
- q(convertible marks) => [ q(BAM), q(Convertible Marks) ],
- q(lev) => [ q(BGL), q(Lev) ],
- q(drachma) => [ q(GRD), q(Drachma) ],
- q(sdr) => [ q(XDR), q(SDR) ],
- q(bolivar) => [ q(VEB), q(Bolivar) ],
- q(dinar) => [ q(BHD), q(Dinar) ],
- q(tunisian dollar) => [ q(TND), q(Tunisian Dollar) ],
q(andorran peseta) => [ q(ADP), q(Andorran Peseta) ],
- q(tajik ruble) => [ q(TJR), q(Tajik Ruble) ],
- q(metical) => [ q(MZN), q(Metical) ],
q(aruban guilder) => [ q(AWG), q(Aruban Guilder) ],
- q(gold-franc) => [ q(XFO), q(Gold-Franc) ],
- q(cyprus pound) => [ q(CYP), q(Cyprus Pound) ],
- q(kwanza reajustado) => [ q(AOR), q(Kwanza Reajustado) ],
- q(new zaire) => [ q(ZRN), q(New Zaire) ],
q(belgian franc) => [ q(BEF), q(Belgian Franc) ],
- q(sudanese dinar) => [ q(SDD), q(Sudanese Dinar) ],
- q(manat) => [ q(TMT), q(Manat) ],
- q(guinea-bissau peso) => [ q(GWP), q(Guinea-Bissau Peso) ],
- q(european unit of account 9) => [ q(XBC), q(European Unit of Account 9) ],
- q(european unit of account 9(e.u.a.-9)) => [ q(XBC), q(European Unit of Account 9(E.U.A.-9)) ],
- q(shekel) => [ q(ILS), q(Shekel) ],
- q(slovak koruna) => [ q(SKK), q(Slovak Koruna) ],
- q(portuguese escudo) => [ q(PTE), q(Portuguese Escudo) ],
+ q(bermudian dollar (customarily known as bermuda dollar)) => [ q(BMD), q(Bermudian Dollar (customarily known as Bermuda Dollar)) ],
+ q(bolivar) => [ q(VEB), q(Bolivar) ],
+ q(bolivar fuerte) => [ q(VEF), q(Bolivar Fuerte) ],
q(bond markets units european composite unit (eurco)) => [ q(XBA), q(Bond Markets Units European Composite Unit (EURCO)) ],
- q(new dinar) => [ q(YUM), q(New Dinar) ],
- q(unidades de formento) => [ q(CLF), q(Unidades de Formento) ],
- q(new leu) => [ q(RON), q(New Leu) ],
+ q(candian dollar) => [ q(CAD), q(Candian Dollar) ],
q(cedi) => [ q(GHS), q(Cedi) ],
- q(unidad de valor constante (uvc)) => [ q(ECV), q(Unidad de Valor Constante (UVC)) ],
- q(st. helena pound) => [ q(SHP), q(St. Helena Pound) ],
+ q(convertible marks) => [ q(BAM), q(Convertible Marks) ],
+ q(cyprus pound) => [ q(CYP), q(Cyprus Pound) ],
+ q(dinar) => [ q(BHD), q(Dinar) ],
+ q(drachma) => [ q(GRD), q(Drachma) ],
+ q(ecu (until 1998-12-31)) => [ q(XEU), q(ECU (until 1998-12-31)) ],
+ q(european composite unit) => [ q(XBA), q(European Composite Unit) ],
+ q(european monetary unit) => [ q(XBB), q(European Monetary Unit) ],
+ q(european monetary unit (e.m.u.-6)) => [ q(XBB), q(European Monetary Unit (E.M.U.-6)) ],
+ q(european unit of account 17) => [ q(XB5), q(European Unit of Account 17) ],
q(european unit of account 17(e.u.a.-17)) => [ q(XBD), q(European Unit of Account 17(E.U.A.-17)) ],
- q(uruguay peso en unidades indexadas) => [ q(UYI), q(Uruguay Peso en Unidades Indexadas) ],
- q(timor escudo) => [ q(TPE), q(Timor Escudo) ],
- q(candian dollar) => [ q(CAD), q(Candian Dollar) ],
+ q(european unit of account 9) => [ q(XBC), q(European Unit of Account 9) ],
+ q(european unit of account 9(e.u.a.-9)) => [ q(XBC), q(European Unit of Account 9(E.U.A.-9)) ],
+ q(financial rand) => [ q(ZAL), q(Financial Rand) ],
+ q(franc congolais) => [ q(CDF), q(Franc Congolais) ],
+ q(french franc) => [ q(FRF), q(French Franc) ],
+ q(german mark) => [ q(DEM), q(German Mark) ],
+ q(gold-franc) => [ q(XFO), q(Gold-Franc) ],
+ q(guinea-bissau peso) => [ q(GWP), q(Guinea-Bissau Peso) ],
+ q(irish pound) => [ q(IEP), q(Irish Pound) ],
q(italian lira) => [ q(ITL), q(Italian Lira) ],
- q(european unit of account 17) => [ q(XB5), q(European Unit of Account 17) ],
+ q(karbovanets) => [ q(UAK), q(Karbovanets) ],
+ q(kroon) => [ q(EEK), q(Kroon) ],
+ q(kuna) => [ q(HRK), q(Kuna) ],
+ q(kwanza reajustado) => [ q(AOR), q(Kwanza Reajustado) ],
+ q(leu) => [ q(RON), q(Leu) ],
+ q(lev) => [ q(BGL), q(Lev) ],
q(luxembourg franc) => [ q(LUF), q(Luxembourg Franc) ],
- q(french franc) => [ q(FRF), q(French Franc) ],
+ q(malagasy franc) => [ q(MGF), q(Malagasy Franc) ],
q(maltese lira) => [ q(MTL), q(Maltese Lira) ],
+ q(manat) => [ q(TMT), q(Manat) ],
q(markka) => [ q(FIM), q(Markka) ],
- q(tolar) => [ q(SIT), q(Tolar) ],
- q(european monetary unit (e.m.u.-6)) => [ q(XBB), q(European Monetary Unit (E.M.U.-6)) ],
- q(kroon) => [ q(EEK), q(Kroon) ],
+ q(metical) => [ q(MZN), q(Metical) ],
+ q(mexican nuevo peso) => [ q(MXN), q(Mexican Nuevo Peso) ],
+ q(netherlands antillian guilder) => [ q(ANG), q(Netherlands Antillian Guilder) ],
+ q(netherlands guilder) => [ q(NLG), q(Netherlands Guilder) ],
+ q(new dinar) => [ q(YUM), q(New Dinar) ],
+ q(new kwanza) => [ q(AON), q(New Kwanza) ],
+ q(new leu) => [ q(RON), q(New Leu) ],
+ q(new manat) => [ q(TMT), q(New Manat) ],
+ q(new zaire) => [ q(ZRN), q(New Zaire) ],
+ q(portuguese escudo) => [ q(PTE), q(Portuguese Escudo) ],
+ q(schilling) => [ q(ATS), q(Schilling) ],
+ q(sdr) => [ q(XDR), q(SDR) ],
+ q(shekel) => [ q(ILS), q(Shekel) ],
+ q(slovak koruna) => [ q(SKK), q(Slovak Koruna) ],
q(spanish peseta) => [ q(ESP), q(Spanish Peseta) ],
- q(financial rand) => [ q(ZAL), q(Financial Rand) ],
- q(bermudian dollar (customarily known as bermuda dollar)) => [ q(BMD), q(Bermudian Dollar (customarily known as Bermuda Dollar)) ],
+ q(st. helena pound) => [ q(SHP), q(St. Helena Pound) ],
+ q(sudanese dinar) => [ q(SDD), q(Sudanese Dinar) ],
q(surinam guilder) => [ q(SRG), q(Surinam Guilder) ],
- q(franc congolais) => [ q(CDF), q(Franc Congolais) ],
- q(european monetary unit) => [ q(XBB), q(European Monetary Unit) ],
- q(leu) => [ q(RON), q(Leu) ],
+ q(tajik ruble) => [ q(TJR), q(Tajik Ruble) ],
+ q(timor escudo) => [ q(TPE), q(Timor Escudo) ],
+ q(tolar) => [ q(SIT), q(Tolar) ],
+ q(tunisian dollar) => [ q(TND), q(Tunisian Dollar) ],
+ q(uic-franc) => [ q(XFU), q(UIC-Franc) ],
+ q(unidad de valor constante (uvc)) => [ q(ECV), q(Unidad de Valor Constante (UVC)) ],
+ q(unidades de formento) => [ q(CLF), q(Unidades de Formento) ],
+ q(uruguay peso en unidades indexadas) => [ q(UYI), q(Uruguay Peso en Unidades Indexadas) ],
+};
+
+$Locale::Codes::Retired{'currency'}{'num'}{'name'} = {
+ q(bolivar fuerte) => [ q(937), q(Bolivar Fuerte) ],
+ q(cedi) => [ q(936), q(Cedi) ],
+ q(leu) => [ q(946), q(Leu) ],
+ q(metical) => [ q(943), q(Metical) ],
+ q(new manat) => [ q(934), q(New Manat) ],
};
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm
index 2817fa7fc57..13f8cf79d4d 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm
@@ -1,11 +1,11 @@
package Locale::Codes::LangExt;
-# Copyright (c) 2011-2012 Sullivan Beck
+# Copyright (c) 2011-2013 Sullivan Beck
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
use strict;
+require 5.006;
use warnings;
-require 5.002;
require Exporter;
use Carp;
@@ -20,7 +20,7 @@ use Locale::Codes::LangExt_Retired;
our($VERSION,@ISA,@EXPORT,@EXPORT_OK);
-$VERSION='3.21';
+$VERSION='3.25';
@ISA = qw(Exporter);
@EXPORT = qw(code2langext
langext2code
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pod
index da1421bcb36..daf081056bf 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pod
@@ -108,7 +108,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
=head1 COPYRIGHT
- Copyright (c) 2011-2012 Sullivan Beck
+ Copyright (c) 2011-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm
index a26c9c8674b..dec24a3d021 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm
@@ -2,7 +2,7 @@ package Locale::Codes::LangExt_Codes;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'get_codes' is run.
-# Generated on: Thu Mar 1 08:07:43 EST 2012
+# Generated on: Wed Feb 27 10:04:32 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,13 +33,14 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
+$VERSION='3.25';
-$Locale::Codes::Data{'langext'}{'id'} = '0226';
+$Locale::Codes::Data{'langext'}{'id'} = '0228';
$Locale::Codes::Data{'langext'}{'id2names'} = {
q(0001) => [
@@ -281,453 +282,459 @@ $Locale::Codes::Data{'langext'}{'id2names'} = {
q(Gan Chinese),
],
q(0079) => [
- q(Goan Konkani),
+ q(Ghandruk Sign Language),
],
q(0080) => [
- q(Ghanaian Sign Language),
+ q(Goan Konkani),
],
q(0081) => [
- q(German Sign Language),
+ q(Ghanaian Sign Language),
],
q(0082) => [
- q(Guatemalan Sign Language),
+ q(German Sign Language),
],
q(0083) => [
- q(Greek Sign Language),
+ q(Guatemalan Sign Language),
],
q(0084) => [
- q(Guinean Sign Language),
+ q(Greek Sign Language),
],
q(0085) => [
- q(Hanoi Sign Language),
+ q(Guinean Sign Language),
],
q(0086) => [
- q(Haiphong Sign Language),
+ q(Hanoi Sign Language),
],
q(0087) => [
- q(Hakka Chinese),
+ q(Haiphong Sign Language),
],
q(0088) => [
- q(Honduras Sign Language),
+ q(Hakka Chinese),
],
q(0089) => [
- q(Haji),
+ q(Honduras Sign Language),
],
q(0090) => [
+ q(Haji),
+ ],
+ q(0091) => [
q(Hong Kong Sign Language),
q(Heung Kong Sau Yue),
],
- q(0091) => [
+ q(0092) => [
q(Ho Chi Minh City Sign Language),
],
- q(0092) => [
+ q(0093) => [
q(Hawai'i Pidgin Sign Language),
],
- q(0093) => [
+ q(0094) => [
q(Hungarian Sign Language),
],
- q(0094) => [
+ q(0095) => [
q(Hausa Sign Language),
],
- q(0095) => [
+ q(0096) => [
q(Xiang Chinese),
],
- q(0096) => [
+ q(0097) => [
q(Icelandic Sign Language),
],
- q(0097) => [
+ q(0098) => [
q(International Sign),
],
- q(0098) => [
+ q(0099) => [
q(Indonesian Sign Language),
],
- q(0099) => [
+ q(0100) => [
q(Indian Sign Language),
],
- q(0100) => [
+ q(0101) => [
q(Italian Sign Language),
],
- q(0101) => [
+ q(0102) => [
q(Irish Sign Language),
],
- q(0102) => [
+ q(0103) => [
q(Israeli Sign Language),
],
- q(0103) => [
+ q(0104) => [
q(Jakun),
],
- q(0104) => [
+ q(0105) => [
q(Jambi Malay),
],
- q(0105) => [
+ q(0106) => [
q(Jamaican Country Sign Language),
],
- q(0106) => [
+ q(0107) => [
q(Jhankot Sign Language),
],
- q(0107) => [
+ q(0108) => [
q(Jamaican Sign Language),
],
- q(0108) => [
+ q(0109) => [
q(Jordanian Sign Language),
],
- q(0109) => [
+ q(0110) => [
q(Japanese Sign Language),
],
- q(0110) => [
+ q(0111) => [
q(Jumla Sign Language),
],
- q(0111) => [
+ q(0112) => [
q(Selangor Sign Language),
],
- q(0112) => [
+ q(0113) => [
q(Konkani (individual language)),
],
- q(0113) => [
+ q(0114) => [
q(Kubu),
],
- q(0114) => [
+ q(0115) => [
q(Korean Sign Language),
],
- q(0115) => [
+ q(0116) => [
q(Kerinci),
],
- q(0116) => [
+ q(0117) => [
q(Brunei),
],
- q(0117) => [
+ q(0118) => [
q(Libyan Sign Language),
],
- q(0118) => [
+ q(0119) => [
q(Loncong),
],
- q(0119) => [
+ q(0120) => [
q(Lubu),
],
- q(0120) => [
+ q(0121) => [
q(Col),
],
- q(0121) => [
+ q(0122) => [
q(Lithuanian Sign Language),
],
- q(0122) => [
+ q(0123) => [
q(Lyons Sign Language),
],
- q(0123) => [
+ q(0124) => [
q(Latvian Sign Language),
],
- q(0124) => [
+ q(0125) => [
q(Laos Sign Language),
],
- q(0125) => [
+ q(0126) => [
q(Panamanian Sign Language),
q(Lengua de Senas Panamenas),
],
- q(0126) => [
+ q(0127) => [
q(Trinidad and Tobago Sign Language),
],
- q(0127) => [
+ q(0128) => [
q(Mauritian Sign Language),
],
- q(0128) => [
+ q(0129) => [
q(Latgalian),
],
- q(0129) => [
+ q(0130) => [
q(Standard Latvian),
],
- q(0130) => [
+ q(0131) => [
q(Literary Chinese),
],
- q(0131) => [
+ q(0132) => [
q(North Moluccan Malay),
],
- q(0132) => [
+ q(0133) => [
q(Maltese Sign Language),
],
- q(0133) => [
+ q(0134) => [
q(Kedah Malay),
],
- q(0134) => [
+ q(0135) => [
q(Pattani Malay),
],
- q(0135) => [
+ q(0136) => [
q(Bangka),
],
- q(0136) => [
+ q(0137) => [
q(Mexican Sign Language),
],
- q(0137) => [
+ q(0138) => [
q(Minangkabau),
],
- q(0138) => [
+ q(0139) => [
q(Min Bei Chinese),
],
- q(0139) => [
+ q(0140) => [
q(Kota Bangun Kutai Malay),
],
- q(0140) => [
+ q(0141) => [
q(Martha's Vineyard Sign Language),
],
- q(0141) => [
+ q(0142) => [
q(Yucatec Maya Sign Language),
],
- q(0142) => [
+ q(0143) => [
q(Sabah Malay),
],
- q(0143) => [
+ q(0144) => [
q(Mongolian Sign Language),
],
- q(0144) => [
+ q(0145) => [
q(Musi),
],
- q(0145) => [
+ q(0146) => [
q(Madagascar Sign Language),
],
- q(0146) => [
+ q(0147) => [
q(Monastic Sign Language),
],
- q(0147) => [
+ q(0148) => [
q(Mozambican Sign Language),
],
- q(0148) => [
+ q(0149) => [
q(Min Nan Chinese),
],
- q(0149) => [
+ q(0150) => [
q(Namibian Sign Language),
],
- q(0150) => [
+ q(0151) => [
q(Nicaraguan Sign Language),
],
- q(0151) => [
+ q(0152) => [
q(Nigerian Sign Language),
],
- q(0152) => [
+ q(0153) => [
q(Norwegian Sign Language),
],
- q(0153) => [
+ q(0154) => [
q(Nepalese Sign Language),
],
- q(0154) => [
+ q(0155) => [
q(Maritime Sign Language),
],
- q(0155) => [
+ q(0156) => [
q(New Zealand Sign Language),
],
- q(0156) => [
+ q(0157) => [
q(Old Kentish Sign Language),
],
- q(0157) => [
+ q(0158) => [
q(Orang Kanaq),
],
- q(0158) => [
+ q(0159) => [
q(Orang Seletar),
],
- q(0159) => [
+ q(0160) => [
q(Pekal),
],
- q(0160) => [
+ q(0161) => [
q(Sudanese Creole Arabic),
],
- q(0161) => [
+ q(0162) => [
q(Pakistan Sign Language),
],
- q(0162) => [
+ q(0163) => [
q(Peruvian Sign Language),
],
- q(0163) => [
+ q(0164) => [
q(Providencia Sign Language),
],
- q(0164) => [
+ q(0165) => [
q(Persian Sign Language),
],
- q(0165) => [
+ q(0166) => [
q(Plains Indian Sign Language),
],
- q(0166) => [
+ q(0167) => [
q(Central Malay),
],
- q(0167) => [
+ q(0168) => [
q(Penang Sign Language),
],
- q(0168) => [
+ q(0169) => [
q(Puerto Rican Sign Language),
],
- q(0169) => [
+ q(0170) => [
q(Polish Sign Language),
],
- q(0170) => [
+ q(0171) => [
q(Philippine Sign Language),
],
- q(0171) => [
+ q(0172) => [
q(Portuguese Sign Language),
],
- q(0172) => [
+ q(0173) => [
q(Paraguayan Sign Language),
q(Lengua de Senas del Paraguay),
],
- q(0173) => [
+ q(0174) => [
q(Romanian Sign Language),
],
- q(0174) => [
+ q(0175) => [
q(Rennellese Sign Language),
],
- q(0175) => [
+ q(0176) => [
q(Russian Sign Language),
],
- q(0176) => [
+ q(0177) => [
q(Saudi Arabian Sign Language),
],
- q(0177) => [
+ q(0178) => [
q(Langue des signes de Belgique Francophone),
q(French Belgian Sign Language),
],
- q(0178) => [
+ q(0179) => [
q(South African Sign Language),
],
- q(0179) => [
+ q(0180) => [
q(Swiss-German Sign Language),
],
- q(0180) => [
+ q(0181) => [
q(Sierra Leone Sign Language),
],
- q(0181) => [
+ q(0182) => [
q(Chadian Arabic),
],
- q(0182) => [
+ q(0183) => [
q(Swiss-Italian Sign Language),
],
- q(0183) => [
+ q(0184) => [
q(Singapore Sign Language),
],
- q(0184) => [
+ q(0185) => [
+ q(Albanian Sign Language),
+ ],
+ q(0186) => [
q(Sri Lankan Sign Language),
],
- q(0185) => [
+ q(0187) => [
q(Shihhi Arabic),
],
- q(0186) => [
+ q(0188) => [
q(Spanish Sign Language),
],
- q(0187) => [
+ q(0189) => [
q(Swiss-French Sign Language),
],
- q(0188) => [
+ q(0190) => [
q(Slovakian Sign Language),
],
- q(0189) => [
+ q(0191) => [
q(Congo Swahili),
],
- q(0190) => [
+ q(0192) => [
q(Swahili (individual language)),
q(Kiswahili),
],
- q(0191) => [
+ q(0193) => [
q(Swedish Sign Language),
],
- q(0192) => [
+ q(0194) => [
q(Al-Sayyid Bedouin Sign Language),
],
- q(0193) => [
+ q(0195) => [
q(Temuan),
],
- q(0194) => [
+ q(0196) => [
q(Tunisian Sign Language),
],
- q(0195) => [
+ q(0197) => [
q(Turkish Sign Language),
q(Turk Isaret Dili),
],
- q(0196) => [
+ q(0198) => [
q(Thai Sign Language),
],
- q(0197) => [
+ q(0199) => [
q(Taiwan Sign Language),
],
- q(0198) => [
+ q(0200) => [
q(Tebul Sign Language),
],
- q(0199) => [
+ q(0201) => [
q(Tanzanian Sign Language),
],
- q(0200) => [
+ q(0202) => [
q(Ugandan Sign Language),
],
- q(0201) => [
+ q(0203) => [
q(Uruguayan Sign Language),
],
- q(0202) => [
+ q(0204) => [
q(Ukrainian Sign Language),
],
- q(0203) => [
+ q(0205) => [
q(Urubu-Kaapor Sign Language),
q(Kaapor Sign Language),
],
- q(0204) => [
+ q(0206) => [
q(Urak Lawoi'),
],
- q(0205) => [
+ q(0207) => [
q(Northern Uzbek),
],
- q(0206) => [
+ q(0208) => [
q(Southern Uzbek),
],
- q(0207) => [
+ q(0209) => [
q(Vlaamse Gebarentaal),
q(Flemish Sign Language),
],
- q(0208) => [
+ q(0210) => [
q(Kaur),
],
- q(0209) => [
+ q(0211) => [
q(Tenggarong Kutai Malay),
],
- q(0210) => [
+ q(0212) => [
q(Moldova Sign Language),
],
- q(0211) => [
+ q(0213) => [
q(Venezuelan Sign Language),
],
- q(0212) => [
+ q(0214) => [
q(Valencian Sign Language),
q(Llengua de signes valenciana),
],
- q(0213) => [
+ q(0215) => [
q(Wu Chinese),
],
- q(0214) => [
+ q(0216) => [
q(Kenyan Sign Language),
],
- q(0215) => [
+ q(0217) => [
q(Malaysian Sign Language),
],
- q(0216) => [
+ q(0218) => [
q(Manado Malay),
],
- q(0217) => [
+ q(0219) => [
q(Moroccan Sign Language),
],
- q(0218) => [
+ q(0220) => [
q(Yiddish Sign Language),
],
- q(0219) => [
+ q(0221) => [
q(Yugoslavian Sign Language),
],
- q(0220) => [
+ q(0222) => [
q(Yue Chinese),
],
- q(0221) => [
+ q(0223) => [
q(Zimbabwe Sign Language),
],
- q(0222) => [
+ q(0224) => [
q(Malay (individual language)),
],
- q(0223) => [
+ q(0225) => [
q(Negeri Sembilan Malay),
],
- q(0224) => [
+ q(0226) => [
q(Zambian Sign Language),
],
- q(0225) => [
+ q(0227) => [
q(Standard Malay),
],
};
@@ -742,7 +749,11 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(al-sayyid bedouin sign language) => [
- q(0192),
+ q(0194),
+ q(0),
+ ],
+ q(albanian sign language) => [
+ q(0185),
q(0),
],
q(algerian arabic) => [
@@ -802,7 +813,7 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(bangka) => [
- q(0135),
+ q(0136),
q(0),
],
q(banjar) => [
@@ -830,7 +841,7 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(brunei) => [
- q(0116),
+ q(0117),
q(0),
],
q(bukit malay) => [
@@ -846,11 +857,11 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(central malay) => [
- q(0166),
+ q(0167),
q(0),
],
q(chadian arabic) => [
- q(0181),
+ q(0182),
q(0),
],
q(chadian sign language) => [
@@ -874,7 +885,7 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(col) => [
- q(0120),
+ q(0121),
q(0),
],
q(colombian sign language) => [
@@ -882,7 +893,7 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(congo swahili) => [
- q(0189),
+ q(0191),
q(0),
],
q(costa rican sign language) => [
@@ -962,11 +973,11 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(flemish sign language) => [
- q(0207),
+ q(0209),
q(0),
],
q(french belgian sign language) => [
- q(0177),
+ q(0178),
q(0),
],
q(french sign language) => [
@@ -978,27 +989,31 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(german sign language) => [
- q(0081),
+ q(0082),
q(0),
],
q(ghanaian sign language) => [
- q(0080),
+ q(0081),
q(0),
],
- q(goan konkani) => [
+ q(ghandruk sign language) => [
q(0079),
q(0),
],
+ q(goan konkani) => [
+ q(0080),
+ q(0),
+ ],
q(greek sign language) => [
- q(0083),
+ q(0084),
q(0),
],
q(guatemalan sign language) => [
- q(0082),
+ q(0083),
q(0),
],
q(guinean sign language) => [
- q(0084),
+ q(0085),
q(0),
],
q(gulf arabic) => [
@@ -1010,31 +1025,31 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(haiphong sign language) => [
- q(0086),
+ q(0087),
q(0),
],
q(haji) => [
- q(0089),
+ q(0090),
q(0),
],
q(hakka chinese) => [
- q(0087),
+ q(0088),
q(0),
],
q(hanoi sign language) => [
- q(0085),
+ q(0086),
q(0),
],
q(hausa sign language) => [
- q(0094),
+ q(0095),
q(0),
],
q(hawai'i pidgin sign language) => [
- q(0092),
+ q(0093),
q(0),
],
q(heung kong sau yue) => [
- q(0090),
+ q(0091),
q(0),
],
q(hijazi arabic) => [
@@ -1042,15 +1057,15 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(ho chi minh city sign language) => [
- q(0091),
+ q(0092),
q(0),
],
q(honduras sign language) => [
- q(0088),
+ q(0089),
q(0),
],
q(hong kong sign language) => [
- q(0090),
+ q(0091),
q(0),
],
q(huizhou chinese) => [
@@ -1058,59 +1073,59 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(hungarian sign language) => [
- q(0093),
+ q(0094),
q(0),
],
q(icelandic sign language) => [
- q(0096),
+ q(0097),
q(0),
],
q(indian sign language) => [
- q(0099),
+ q(0100),
q(0),
],
q(indonesian sign language) => [
- q(0098),
+ q(0099),
q(0),
],
q(international sign) => [
- q(0097),
+ q(0098),
q(0),
],
q(irish sign language) => [
- q(0101),
+ q(0102),
q(0),
],
q(israeli sign language) => [
- q(0102),
+ q(0103),
q(0),
],
q(italian sign language) => [
- q(0100),
+ q(0101),
q(0),
],
q(jakun) => [
- q(0103),
+ q(0104),
q(0),
],
q(jamaican country sign language) => [
- q(0105),
+ q(0106),
q(0),
],
q(jamaican sign language) => [
- q(0107),
+ q(0108),
q(0),
],
q(jambi malay) => [
- q(0104),
+ q(0105),
q(0),
],
q(japanese sign language) => [
- q(0109),
+ q(0110),
q(0),
],
q(jhankot sign language) => [
- q(0106),
+ q(0107),
q(0),
],
q(jinyu chinese) => [
@@ -1118,67 +1133,67 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(jordanian sign language) => [
- q(0108),
+ q(0109),
q(0),
],
q(jumla sign language) => [
- q(0110),
+ q(0111),
q(0),
],
q(kaapor sign language) => [
- q(0203),
+ q(0205),
q(0),
],
q(kaur) => [
- q(0208),
+ q(0210),
q(0),
],
q(kedah malay) => [
- q(0133),
+ q(0134),
q(0),
],
q(kenyan sign language) => [
- q(0214),
+ q(0216),
q(0),
],
q(kerinci) => [
- q(0115),
+ q(0116),
q(0),
],
q(kiswahili) => [
- q(0190),
+ q(0192),
q(0),
],
q(konkani (individual language)) => [
- q(0112),
+ q(0113),
q(0),
],
q(korean sign language) => [
- q(0114),
+ q(0115),
q(0),
],
q(kota bangun kutai malay) => [
- q(0139),
+ q(0140),
q(0),
],
q(kubu) => [
- q(0113),
+ q(0114),
q(0),
],
q(langue des signes de belgique francophone) => [
- q(0177),
+ q(0178),
q(0),
],
q(laos sign language) => [
- q(0124),
+ q(0125),
q(0),
],
q(latgalian) => [
- q(0128),
+ q(0129),
q(0),
],
q(latvian sign language) => [
- q(0123),
+ q(0124),
q(0),
],
q(lengua de senas catalana) => [
@@ -1186,11 +1201,11 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(lengua de senas del paraguay) => [
- q(0172),
+ q(0173),
q(0),
],
q(lengua de senas panamenas) => [
- q(0125),
+ q(0126),
q(0),
],
q(libyan arabic) => [
@@ -1198,15 +1213,15 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(libyan sign language) => [
- q(0117),
+ q(0118),
q(0),
],
q(literary chinese) => [
- q(0130),
+ q(0131),
q(0),
],
q(lithuanian sign language) => [
- q(0121),
+ q(0122),
q(0),
],
q(llengua de signes catalana) => [
@@ -1214,39 +1229,39 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(llengua de signes valenciana) => [
- q(0212),
+ q(0214),
q(0),
],
q(loncong) => [
- q(0118),
+ q(0119),
q(0),
],
q(lubu) => [
- q(0119),
+ q(0120),
q(0),
],
q(lyons sign language) => [
- q(0122),
+ q(0123),
q(0),
],
q(madagascar sign language) => [
- q(0145),
+ q(0146),
q(0),
],
q(malay (individual language)) => [
- q(0222),
+ q(0224),
q(0),
],
q(malaysian sign language) => [
- q(0215),
+ q(0217),
q(0),
],
q(maltese sign language) => [
- q(0132),
+ q(0133),
q(0),
],
q(manado malay) => [
- q(0216),
+ q(0218),
q(0),
],
q(mandarin chinese) => [
@@ -1254,15 +1269,15 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(maritime sign language) => [
- q(0154),
+ q(0155),
q(0),
],
q(martha's vineyard sign language) => [
- q(0140),
+ q(0141),
q(0),
],
q(mauritian sign language) => [
- q(0127),
+ q(0128),
q(0),
],
q(mesopotamian arabic) => [
@@ -1270,11 +1285,11 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(mexican sign language) => [
- q(0136),
+ q(0137),
q(0),
],
q(min bei chinese) => [
- q(0138),
+ q(0139),
q(0),
],
q(min dong chinese) => [
@@ -1282,7 +1297,7 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(min nan chinese) => [
- q(0148),
+ q(0149),
q(0),
],
q(min zhong chinese) => [
@@ -1290,19 +1305,19 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(minangkabau) => [
- q(0137),
+ q(0138),
q(0),
],
q(moldova sign language) => [
- q(0210),
+ q(0212),
q(0),
],
q(monastic sign language) => [
- q(0146),
+ q(0147),
q(0),
],
q(mongolian sign language) => [
- q(0143),
+ q(0144),
q(0),
],
q(moroccan arabic) => [
@@ -1310,15 +1325,15 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(moroccan sign language) => [
- q(0217),
+ q(0219),
q(0),
],
q(mozambican sign language) => [
- q(0147),
+ q(0148),
q(0),
],
q(musi) => [
- q(0144),
+ q(0145),
q(0),
],
q(najdi arabic) => [
@@ -1326,27 +1341,27 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(namibian sign language) => [
- q(0149),
+ q(0150),
q(0),
],
q(negeri sembilan malay) => [
- q(0223),
+ q(0225),
q(0),
],
q(nepalese sign language) => [
- q(0153),
+ q(0154),
q(0),
],
q(new zealand sign language) => [
- q(0155),
+ q(0156),
q(0),
],
q(nicaraguan sign language) => [
- q(0150),
+ q(0151),
q(0),
],
q(nigerian sign language) => [
- q(0151),
+ q(0152),
q(0),
],
q(north levantine arabic) => [
@@ -1358,19 +1373,19 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(north moluccan malay) => [
- q(0131),
+ q(0132),
q(0),
],
q(northern uzbek) => [
- q(0205),
+ q(0207),
q(0),
],
q(norwegian sign language) => [
- q(0152),
+ q(0153),
q(0),
],
q(old kentish sign language) => [
- q(0156),
+ q(0157),
q(0),
],
q(omani arabic) => [
@@ -1378,63 +1393,63 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(orang kanaq) => [
- q(0157),
+ q(0158),
q(0),
],
q(orang seletar) => [
- q(0158),
+ q(0159),
q(0),
],
q(pakistan sign language) => [
- q(0161),
+ q(0162),
q(0),
],
q(panamanian sign language) => [
- q(0125),
+ q(0126),
q(0),
],
q(paraguayan sign language) => [
- q(0172),
+ q(0173),
q(0),
],
q(pattani malay) => [
- q(0134),
+ q(0135),
q(0),
],
q(pekal) => [
- q(0159),
+ q(0160),
q(0),
],
q(penang sign language) => [
- q(0167),
+ q(0168),
q(0),
],
q(persian sign language) => [
- q(0164),
+ q(0165),
q(0),
],
q(peruvian sign language) => [
- q(0162),
+ q(0163),
q(0),
],
q(philippine sign language) => [
- q(0170),
+ q(0171),
q(0),
],
q(plains indian sign language) => [
- q(0165),
+ q(0166),
q(0),
],
q(polish sign language) => [
- q(0169),
+ q(0170),
q(0),
],
q(portuguese sign language) => [
- q(0171),
+ q(0172),
q(0),
],
q(providencia sign language) => [
- q(0163),
+ q(0164),
q(0),
],
q(pu-xian chinese) => [
@@ -1442,7 +1457,7 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(puerto rican sign language) => [
- q(0168),
+ q(0169),
q(0),
],
q(quebec sign language) => [
@@ -1450,19 +1465,19 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(rennellese sign language) => [
- q(0174),
+ q(0175),
q(0),
],
q(romanian sign language) => [
- q(0173),
+ q(0174),
q(0),
],
q(russian sign language) => [
- q(0175),
+ q(0176),
q(0),
],
q(sabah malay) => [
- q(0142),
+ q(0143),
q(0),
],
q(saidi arabic) => [
@@ -1478,31 +1493,31 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(saudi arabian sign language) => [
- q(0176),
+ q(0177),
q(0),
],
q(selangor sign language) => [
- q(0111),
+ q(0112),
q(0),
],
q(shihhi arabic) => [
- q(0185),
+ q(0187),
q(0),
],
q(sierra leone sign language) => [
- q(0180),
+ q(0181),
q(0),
],
q(singapore sign language) => [
- q(0183),
+ q(0184),
q(0),
],
q(slovakian sign language) => [
- q(0188),
+ q(0190),
q(0),
],
q(south african sign language) => [
- q(0178),
+ q(0179),
q(0),
],
q(south levantine arabic) => [
@@ -1510,15 +1525,15 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(southern uzbek) => [
- q(0206),
+ q(0208),
q(0),
],
q(spanish sign language) => [
- q(0186),
+ q(0188),
q(0),
],
q(sri lankan sign language) => [
- q(0184),
+ q(0186),
q(0),
],
q(standard arabic) => [
@@ -1526,11 +1541,11 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(standard latvian) => [
- q(0129),
+ q(0130),
q(0),
],
q(standard malay) => [
- q(0225),
+ q(0227),
q(0),
],
q(sudanese arabic) => [
@@ -1538,7 +1553,7 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(sudanese creole arabic) => [
- q(0160),
+ q(0161),
q(0),
],
q(suomenruotsalainen viittomakieli) => [
@@ -1546,23 +1561,23 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(swahili (individual language)) => [
- q(0190),
+ q(0192),
q(0),
],
q(swedish sign language) => [
- q(0191),
+ q(0193),
q(0),
],
q(swiss-french sign language) => [
- q(0187),
+ q(0189),
q(0),
],
q(swiss-german sign language) => [
- q(0179),
+ q(0180),
q(0),
],
q(swiss-italian sign language) => [
- q(0182),
+ q(0183),
q(0),
],
q(ta'izzi-adeni arabic) => [
@@ -1570,7 +1585,7 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(taiwan sign language) => [
- q(0197),
+ q(0199),
q(0),
],
q(tajiki arabic) => [
@@ -1578,27 +1593,27 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(tanzanian sign language) => [
- q(0199),
+ q(0201),
q(0),
],
q(tebul sign language) => [
- q(0198),
+ q(0200),
q(0),
],
q(temuan) => [
- q(0193),
+ q(0195),
q(0),
],
q(tenggarong kutai malay) => [
- q(0209),
+ q(0211),
q(0),
],
q(thai sign language) => [
- q(0196),
+ q(0198),
q(0),
],
q(trinidad and tobago sign language) => [
- q(0126),
+ q(0127),
q(0),
],
q(tunisian arabic) => [
@@ -1606,35 +1621,35 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(tunisian sign language) => [
- q(0194),
+ q(0196),
q(0),
],
q(turk isaret dili) => [
- q(0195),
+ q(0197),
q(0),
],
q(turkish sign language) => [
- q(0195),
+ q(0197),
q(0),
],
q(ugandan sign language) => [
- q(0200),
+ q(0202),
q(0),
],
q(ukrainian sign language) => [
- q(0202),
+ q(0204),
q(0),
],
q(urak lawoi') => [
- q(0204),
+ q(0206),
q(0),
],
q(urubu-kaapor sign language) => [
- q(0203),
+ q(0205),
q(0),
],
q(uruguayan sign language) => [
- q(0201),
+ q(0203),
q(0),
],
q(uzbeki arabic) => [
@@ -1642,47 +1657,47 @@ $Locale::Codes::Data{'langext'}{'alias2id'} = {
q(0),
],
q(valencian sign language) => [
- q(0212),
+ q(0214),
q(0),
],
q(venezuelan sign language) => [
- q(0211),
+ q(0213),
q(0),
],
q(vlaamse gebarentaal) => [
- q(0207),
+ q(0209),
q(0),
],
q(wu chinese) => [
- q(0213),
+ q(0215),
q(0),
],
q(xiang chinese) => [
- q(0095),
+ q(0096),
q(0),
],
q(yiddish sign language) => [
- q(0218),
+ q(0220),
q(0),
],
q(yucatec maya sign language) => [
- q(0141),
+ q(0142),
q(0),
],
q(yue chinese) => [
- q(0220),
+ q(0222),
q(0),
],
q(yugoslavian sign language) => [
- q(0219),
+ q(0221),
q(0),
],
q(zambian sign language) => [
- q(0224),
+ q(0226),
q(0),
],
q(zimbabwe sign language) => [
- q(0221),
+ q(0223),
q(0),
],
};
@@ -2001,594 +2016,602 @@ $Locale::Codes::Data{'langext'}{'code2id'} = {
q(0078),
q(0),
],
- q(gom) => [
+ q(gds) => [
q(0079),
q(0),
],
- q(gse) => [
+ q(gom) => [
q(0080),
q(0),
],
- q(gsg) => [
+ q(gse) => [
q(0081),
q(0),
],
- q(gsm) => [
+ q(gsg) => [
q(0082),
q(0),
],
- q(gss) => [
+ q(gsm) => [
q(0083),
q(0),
],
- q(gus) => [
+ q(gss) => [
q(0084),
q(0),
],
- q(hab) => [
+ q(gus) => [
q(0085),
q(0),
],
- q(haf) => [
+ q(hab) => [
q(0086),
q(0),
],
- q(hak) => [
+ q(haf) => [
q(0087),
q(0),
],
- q(hds) => [
+ q(hak) => [
q(0088),
q(0),
],
- q(hji) => [
+ q(hds) => [
q(0089),
q(0),
],
- q(hks) => [
+ q(hji) => [
q(0090),
q(0),
],
- q(hos) => [
+ q(hks) => [
q(0091),
q(0),
],
- q(hps) => [
+ q(hos) => [
q(0092),
q(0),
],
- q(hsh) => [
+ q(hps) => [
q(0093),
q(0),
],
- q(hsl) => [
+ q(hsh) => [
q(0094),
q(0),
],
- q(hsn) => [
+ q(hsl) => [
q(0095),
q(0),
],
- q(icl) => [
+ q(hsn) => [
q(0096),
q(0),
],
- q(ils) => [
+ q(icl) => [
q(0097),
q(0),
],
- q(inl) => [
+ q(ils) => [
q(0098),
q(0),
],
- q(ins) => [
+ q(inl) => [
q(0099),
q(0),
],
- q(ise) => [
+ q(ins) => [
q(0100),
q(0),
],
- q(isg) => [
+ q(ise) => [
q(0101),
q(0),
],
- q(isr) => [
+ q(isg) => [
q(0102),
q(0),
],
- q(jak) => [
+ q(isr) => [
q(0103),
q(0),
],
- q(jax) => [
+ q(jak) => [
q(0104),
q(0),
],
- q(jcs) => [
+ q(jax) => [
q(0105),
q(0),
],
- q(jhs) => [
+ q(jcs) => [
q(0106),
q(0),
],
- q(jls) => [
+ q(jhs) => [
q(0107),
q(0),
],
- q(jos) => [
+ q(jls) => [
q(0108),
q(0),
],
- q(jsl) => [
+ q(jos) => [
q(0109),
q(0),
],
- q(jus) => [
+ q(jsl) => [
q(0110),
q(0),
],
- q(kgi) => [
+ q(jus) => [
q(0111),
q(0),
],
- q(knn) => [
+ q(kgi) => [
q(0112),
q(0),
],
- q(kvb) => [
+ q(knn) => [
q(0113),
q(0),
],
- q(kvk) => [
+ q(kvb) => [
q(0114),
q(0),
],
- q(kvr) => [
+ q(kvk) => [
q(0115),
q(0),
],
- q(kxd) => [
+ q(kvr) => [
q(0116),
q(0),
],
- q(lbs) => [
+ q(kxd) => [
q(0117),
q(0),
],
- q(lce) => [
+ q(lbs) => [
q(0118),
q(0),
],
- q(lcf) => [
+ q(lce) => [
q(0119),
q(0),
],
- q(liw) => [
+ q(lcf) => [
q(0120),
q(0),
],
- q(lls) => [
+ q(liw) => [
q(0121),
q(0),
],
- q(lsg) => [
+ q(lls) => [
q(0122),
q(0),
],
- q(lsl) => [
+ q(lsg) => [
q(0123),
q(0),
],
- q(lso) => [
+ q(lsl) => [
q(0124),
q(0),
],
- q(lsp) => [
+ q(lso) => [
q(0125),
q(0),
],
- q(lst) => [
+ q(lsp) => [
q(0126),
q(0),
],
- q(lsy) => [
+ q(lst) => [
q(0127),
q(0),
],
- q(ltg) => [
+ q(lsy) => [
q(0128),
q(0),
],
- q(lvs) => [
+ q(ltg) => [
q(0129),
q(0),
],
- q(lzh) => [
+ q(lvs) => [
q(0130),
q(0),
],
- q(max) => [
+ q(lzh) => [
q(0131),
q(0),
],
- q(mdl) => [
+ q(max) => [
q(0132),
q(0),
],
- q(meo) => [
+ q(mdl) => [
q(0133),
q(0),
],
- q(mfa) => [
+ q(meo) => [
q(0134),
q(0),
],
- q(mfb) => [
+ q(mfa) => [
q(0135),
q(0),
],
- q(mfs) => [
+ q(mfb) => [
q(0136),
q(0),
],
- q(min) => [
+ q(mfs) => [
q(0137),
q(0),
],
- q(mnp) => [
+ q(min) => [
q(0138),
q(0),
],
- q(mqg) => [
+ q(mnp) => [
q(0139),
q(0),
],
- q(mre) => [
+ q(mqg) => [
q(0140),
q(0),
],
- q(msd) => [
+ q(mre) => [
q(0141),
q(0),
],
- q(msi) => [
+ q(msd) => [
q(0142),
q(0),
],
- q(msr) => [
+ q(msi) => [
q(0143),
q(0),
],
- q(mui) => [
+ q(msr) => [
q(0144),
q(0),
],
- q(mzc) => [
+ q(mui) => [
q(0145),
q(0),
],
- q(mzg) => [
+ q(mzc) => [
q(0146),
q(0),
],
- q(mzy) => [
+ q(mzg) => [
q(0147),
q(0),
],
- q(nan) => [
+ q(mzy) => [
q(0148),
q(0),
],
- q(nbs) => [
+ q(nan) => [
q(0149),
q(0),
],
- q(ncs) => [
+ q(nbs) => [
q(0150),
q(0),
],
- q(nsi) => [
+ q(ncs) => [
q(0151),
q(0),
],
- q(nsl) => [
+ q(nsi) => [
q(0152),
q(0),
],
- q(nsp) => [
+ q(nsl) => [
q(0153),
q(0),
],
- q(nsr) => [
+ q(nsp) => [
q(0154),
q(0),
],
- q(nzs) => [
+ q(nsr) => [
q(0155),
q(0),
],
- q(okl) => [
+ q(nzs) => [
q(0156),
q(0),
],
- q(orn) => [
+ q(okl) => [
q(0157),
q(0),
],
- q(ors) => [
+ q(orn) => [
q(0158),
q(0),
],
- q(pel) => [
+ q(ors) => [
q(0159),
q(0),
],
- q(pga) => [
+ q(pel) => [
q(0160),
q(0),
],
- q(pks) => [
+ q(pga) => [
q(0161),
q(0),
],
- q(prl) => [
+ q(pks) => [
q(0162),
q(0),
],
- q(prz) => [
+ q(prl) => [
q(0163),
q(0),
],
- q(psc) => [
+ q(prz) => [
q(0164),
q(0),
],
- q(psd) => [
+ q(psc) => [
q(0165),
q(0),
],
- q(pse) => [
+ q(psd) => [
q(0166),
q(0),
],
- q(psg) => [
+ q(pse) => [
q(0167),
q(0),
],
- q(psl) => [
+ q(psg) => [
q(0168),
q(0),
],
- q(pso) => [
+ q(psl) => [
q(0169),
q(0),
],
- q(psp) => [
+ q(pso) => [
q(0170),
q(0),
],
- q(psr) => [
+ q(psp) => [
q(0171),
q(0),
],
- q(pys) => [
+ q(psr) => [
q(0172),
q(0),
],
- q(rms) => [
+ q(pys) => [
q(0173),
q(0),
],
- q(rsi) => [
+ q(rms) => [
q(0174),
q(0),
],
- q(rsl) => [
+ q(rsi) => [
q(0175),
q(0),
],
- q(sdl) => [
+ q(rsl) => [
q(0176),
q(0),
],
- q(sfb) => [
+ q(sdl) => [
q(0177),
q(0),
],
- q(sfs) => [
+ q(sfb) => [
q(0178),
q(0),
],
- q(sgg) => [
+ q(sfs) => [
q(0179),
q(0),
],
- q(sgx) => [
+ q(sgg) => [
q(0180),
q(0),
],
- q(shu) => [
+ q(sgx) => [
q(0181),
q(0),
],
- q(slf) => [
+ q(shu) => [
q(0182),
q(0),
],
- q(sls) => [
+ q(slf) => [
q(0183),
q(0),
],
- q(sqs) => [
+ q(sls) => [
q(0184),
q(0),
],
- q(ssh) => [
+ q(sqk) => [
q(0185),
q(0),
],
- q(ssp) => [
+ q(sqs) => [
q(0186),
q(0),
],
- q(ssr) => [
+ q(ssh) => [
q(0187),
q(0),
],
- q(svk) => [
+ q(ssp) => [
q(0188),
q(0),
],
- q(swc) => [
+ q(ssr) => [
q(0189),
q(0),
],
- q(swh) => [
+ q(svk) => [
q(0190),
q(0),
],
- q(swl) => [
+ q(swc) => [
q(0191),
q(0),
],
- q(syy) => [
+ q(swh) => [
q(0192),
q(0),
],
- q(tmw) => [
+ q(swl) => [
q(0193),
q(0),
],
- q(tse) => [
+ q(syy) => [
q(0194),
q(0),
],
- q(tsm) => [
+ q(tmw) => [
q(0195),
q(0),
],
- q(tsq) => [
+ q(tse) => [
q(0196),
q(0),
],
- q(tss) => [
+ q(tsm) => [
q(0197),
q(0),
],
- q(tsy) => [
+ q(tsq) => [
q(0198),
q(0),
],
- q(tza) => [
+ q(tss) => [
q(0199),
q(0),
],
- q(ugn) => [
+ q(tsy) => [
q(0200),
q(0),
],
- q(ugy) => [
+ q(tza) => [
q(0201),
q(0),
],
- q(ukl) => [
+ q(ugn) => [
q(0202),
q(0),
],
- q(uks) => [
+ q(ugy) => [
q(0203),
q(0),
],
- q(urk) => [
+ q(ukl) => [
q(0204),
q(0),
],
- q(uzn) => [
+ q(uks) => [
q(0205),
q(0),
],
- q(uzs) => [
+ q(urk) => [
q(0206),
q(0),
],
- q(vgt) => [
+ q(uzn) => [
q(0207),
q(0),
],
- q(vkk) => [
+ q(uzs) => [
q(0208),
q(0),
],
- q(vkt) => [
+ q(vgt) => [
q(0209),
q(0),
],
- q(vsi) => [
+ q(vkk) => [
q(0210),
q(0),
],
- q(vsl) => [
+ q(vkt) => [
q(0211),
q(0),
],
- q(vsv) => [
+ q(vsi) => [
q(0212),
q(0),
],
- q(wuu) => [
+ q(vsl) => [
q(0213),
q(0),
],
- q(xki) => [
+ q(vsv) => [
q(0214),
q(0),
],
- q(xml) => [
+ q(wuu) => [
q(0215),
q(0),
],
- q(xmm) => [
+ q(xki) => [
q(0216),
q(0),
],
- q(xms) => [
+ q(xml) => [
q(0217),
q(0),
],
- q(yds) => [
+ q(xmm) => [
q(0218),
q(0),
],
- q(ysl) => [
+ q(xms) => [
q(0219),
q(0),
],
- q(yue) => [
+ q(yds) => [
q(0220),
q(0),
],
- q(zib) => [
+ q(ysl) => [
q(0221),
q(0),
],
- q(zlm) => [
+ q(yue) => [
q(0222),
q(0),
],
- q(zmi) => [
+ q(zib) => [
q(0223),
q(0),
],
- q(zsl) => [
+ q(zlm) => [
q(0224),
q(0),
],
- q(zsm) => [
+ q(zmi) => [
q(0225),
q(0),
],
+ q(zsl) => [
+ q(0226),
+ q(0),
+ ],
+ q(zsm) => [
+ q(0227),
+ q(0),
+ ],
},
};
@@ -2672,153 +2695,155 @@ $Locale::Codes::Data{'langext'}{'id2code'} = {
q(0076) => q(fsl),
q(0077) => q(fss),
q(0078) => q(gan),
- q(0079) => q(gom),
- q(0080) => q(gse),
- q(0081) => q(gsg),
- q(0082) => q(gsm),
- q(0083) => q(gss),
- q(0084) => q(gus),
- q(0085) => q(hab),
- q(0086) => q(haf),
- q(0087) => q(hak),
- q(0088) => q(hds),
- q(0089) => q(hji),
- q(0090) => q(hks),
- q(0091) => q(hos),
- q(0092) => q(hps),
- q(0093) => q(hsh),
- q(0094) => q(hsl),
- q(0095) => q(hsn),
- q(0096) => q(icl),
- q(0097) => q(ils),
- q(0098) => q(inl),
- q(0099) => q(ins),
- q(0100) => q(ise),
- q(0101) => q(isg),
- q(0102) => q(isr),
- q(0103) => q(jak),
- q(0104) => q(jax),
- q(0105) => q(jcs),
- q(0106) => q(jhs),
- q(0107) => q(jls),
- q(0108) => q(jos),
- q(0109) => q(jsl),
- q(0110) => q(jus),
- q(0111) => q(kgi),
- q(0112) => q(knn),
- q(0113) => q(kvb),
- q(0114) => q(kvk),
- q(0115) => q(kvr),
- q(0116) => q(kxd),
- q(0117) => q(lbs),
- q(0118) => q(lce),
- q(0119) => q(lcf),
- q(0120) => q(liw),
- q(0121) => q(lls),
- q(0122) => q(lsg),
- q(0123) => q(lsl),
- q(0124) => q(lso),
- q(0125) => q(lsp),
- q(0126) => q(lst),
- q(0127) => q(lsy),
- q(0128) => q(ltg),
- q(0129) => q(lvs),
- q(0130) => q(lzh),
- q(0131) => q(max),
- q(0132) => q(mdl),
- q(0133) => q(meo),
- q(0134) => q(mfa),
- q(0135) => q(mfb),
- q(0136) => q(mfs),
- q(0137) => q(min),
- q(0138) => q(mnp),
- q(0139) => q(mqg),
- q(0140) => q(mre),
- q(0141) => q(msd),
- q(0142) => q(msi),
- q(0143) => q(msr),
- q(0144) => q(mui),
- q(0145) => q(mzc),
- q(0146) => q(mzg),
- q(0147) => q(mzy),
- q(0148) => q(nan),
- q(0149) => q(nbs),
- q(0150) => q(ncs),
- q(0151) => q(nsi),
- q(0152) => q(nsl),
- q(0153) => q(nsp),
- q(0154) => q(nsr),
- q(0155) => q(nzs),
- q(0156) => q(okl),
- q(0157) => q(orn),
- q(0158) => q(ors),
- q(0159) => q(pel),
- q(0160) => q(pga),
- q(0161) => q(pks),
- q(0162) => q(prl),
- q(0163) => q(prz),
- q(0164) => q(psc),
- q(0165) => q(psd),
- q(0166) => q(pse),
- q(0167) => q(psg),
- q(0168) => q(psl),
- q(0169) => q(pso),
- q(0170) => q(psp),
- q(0171) => q(psr),
- q(0172) => q(pys),
- q(0173) => q(rms),
- q(0174) => q(rsi),
- q(0175) => q(rsl),
- q(0176) => q(sdl),
- q(0177) => q(sfb),
- q(0178) => q(sfs),
- q(0179) => q(sgg),
- q(0180) => q(sgx),
- q(0181) => q(shu),
- q(0182) => q(slf),
- q(0183) => q(sls),
- q(0184) => q(sqs),
- q(0185) => q(ssh),
- q(0186) => q(ssp),
- q(0187) => q(ssr),
- q(0188) => q(svk),
- q(0189) => q(swc),
- q(0190) => q(swh),
- q(0191) => q(swl),
- q(0192) => q(syy),
- q(0193) => q(tmw),
- q(0194) => q(tse),
- q(0195) => q(tsm),
- q(0196) => q(tsq),
- q(0197) => q(tss),
- q(0198) => q(tsy),
- q(0199) => q(tza),
- q(0200) => q(ugn),
- q(0201) => q(ugy),
- q(0202) => q(ukl),
- q(0203) => q(uks),
- q(0204) => q(urk),
- q(0205) => q(uzn),
- q(0206) => q(uzs),
- q(0207) => q(vgt),
- q(0208) => q(vkk),
- q(0209) => q(vkt),
- q(0210) => q(vsi),
- q(0211) => q(vsl),
- q(0212) => q(vsv),
- q(0213) => q(wuu),
- q(0214) => q(xki),
- q(0215) => q(xml),
- q(0216) => q(xmm),
- q(0217) => q(xms),
- q(0218) => q(yds),
- q(0219) => q(ysl),
- q(0220) => q(yue),
- q(0221) => q(zib),
- q(0222) => q(zlm),
- q(0223) => q(zmi),
- q(0224) => q(zsl),
- q(0225) => q(zsm),
+ q(0079) => q(gds),
+ q(0080) => q(gom),
+ q(0081) => q(gse),
+ q(0082) => q(gsg),
+ q(0083) => q(gsm),
+ q(0084) => q(gss),
+ q(0085) => q(gus),
+ q(0086) => q(hab),
+ q(0087) => q(haf),
+ q(0088) => q(hak),
+ q(0089) => q(hds),
+ q(0090) => q(hji),
+ q(0091) => q(hks),
+ q(0092) => q(hos),
+ q(0093) => q(hps),
+ q(0094) => q(hsh),
+ q(0095) => q(hsl),
+ q(0096) => q(hsn),
+ q(0097) => q(icl),
+ q(0098) => q(ils),
+ q(0099) => q(inl),
+ q(0100) => q(ins),
+ q(0101) => q(ise),
+ q(0102) => q(isg),
+ q(0103) => q(isr),
+ q(0104) => q(jak),
+ q(0105) => q(jax),
+ q(0106) => q(jcs),
+ q(0107) => q(jhs),
+ q(0108) => q(jls),
+ q(0109) => q(jos),
+ q(0110) => q(jsl),
+ q(0111) => q(jus),
+ q(0112) => q(kgi),
+ q(0113) => q(knn),
+ q(0114) => q(kvb),
+ q(0115) => q(kvk),
+ q(0116) => q(kvr),
+ q(0117) => q(kxd),
+ q(0118) => q(lbs),
+ q(0119) => q(lce),
+ q(0120) => q(lcf),
+ q(0121) => q(liw),
+ q(0122) => q(lls),
+ q(0123) => q(lsg),
+ q(0124) => q(lsl),
+ q(0125) => q(lso),
+ q(0126) => q(lsp),
+ q(0127) => q(lst),
+ q(0128) => q(lsy),
+ q(0129) => q(ltg),
+ q(0130) => q(lvs),
+ q(0131) => q(lzh),
+ q(0132) => q(max),
+ q(0133) => q(mdl),
+ q(0134) => q(meo),
+ q(0135) => q(mfa),
+ q(0136) => q(mfb),
+ q(0137) => q(mfs),
+ q(0138) => q(min),
+ q(0139) => q(mnp),
+ q(0140) => q(mqg),
+ q(0141) => q(mre),
+ q(0142) => q(msd),
+ q(0143) => q(msi),
+ q(0144) => q(msr),
+ q(0145) => q(mui),
+ q(0146) => q(mzc),
+ q(0147) => q(mzg),
+ q(0148) => q(mzy),
+ q(0149) => q(nan),
+ q(0150) => q(nbs),
+ q(0151) => q(ncs),
+ q(0152) => q(nsi),
+ q(0153) => q(nsl),
+ q(0154) => q(nsp),
+ q(0155) => q(nsr),
+ q(0156) => q(nzs),
+ q(0157) => q(okl),
+ q(0158) => q(orn),
+ q(0159) => q(ors),
+ q(0160) => q(pel),
+ q(0161) => q(pga),
+ q(0162) => q(pks),
+ q(0163) => q(prl),
+ q(0164) => q(prz),
+ q(0165) => q(psc),
+ q(0166) => q(psd),
+ q(0167) => q(pse),
+ q(0168) => q(psg),
+ q(0169) => q(psl),
+ q(0170) => q(pso),
+ q(0171) => q(psp),
+ q(0172) => q(psr),
+ q(0173) => q(pys),
+ q(0174) => q(rms),
+ q(0175) => q(rsi),
+ q(0176) => q(rsl),
+ q(0177) => q(sdl),
+ q(0178) => q(sfb),
+ q(0179) => q(sfs),
+ q(0180) => q(sgg),
+ q(0181) => q(sgx),
+ q(0182) => q(shu),
+ q(0183) => q(slf),
+ q(0184) => q(sls),
+ q(0185) => q(sqk),
+ q(0186) => q(sqs),
+ q(0187) => q(ssh),
+ q(0188) => q(ssp),
+ q(0189) => q(ssr),
+ q(0190) => q(svk),
+ q(0191) => q(swc),
+ q(0192) => q(swh),
+ q(0193) => q(swl),
+ q(0194) => q(syy),
+ q(0195) => q(tmw),
+ q(0196) => q(tse),
+ q(0197) => q(tsm),
+ q(0198) => q(tsq),
+ q(0199) => q(tss),
+ q(0200) => q(tsy),
+ q(0201) => q(tza),
+ q(0202) => q(ugn),
+ q(0203) => q(ugy),
+ q(0204) => q(ukl),
+ q(0205) => q(uks),
+ q(0206) => q(urk),
+ q(0207) => q(uzn),
+ q(0208) => q(uzs),
+ q(0209) => q(vgt),
+ q(0210) => q(vkk),
+ q(0211) => q(vkt),
+ q(0212) => q(vsi),
+ q(0213) => q(vsl),
+ q(0214) => q(vsv),
+ q(0215) => q(wuu),
+ q(0216) => q(xki),
+ q(0217) => q(xml),
+ q(0218) => q(xmm),
+ q(0219) => q(xms),
+ q(0220) => q(yds),
+ q(0221) => q(ysl),
+ q(0222) => q(yue),
+ q(0223) => q(zib),
+ q(0224) => q(zlm),
+ q(0225) => q(zmi),
+ q(0226) => q(zsl),
+ q(0227) => q(zsm),
},
};
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Retired.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Retired.pm
index 06d5c98d43d..265b0d131ba 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Retired.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Retired.pm
@@ -2,7 +2,7 @@ package Locale::Codes::LangExt_Retired;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'deprecate_codes' is run.
-# Generated on: Thu Mar 1 08:11:47 EST 2012
+# Generated on: Wed Feb 27 10:06:46 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,11 +33,12 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
+$VERSION='3.25';
$Locale::Codes::Retired{'langext'}{'alpha'}{'code'} = {
};
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm
index 66eed230cf6..07fbe84909a 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm
@@ -1,11 +1,11 @@
package Locale::Codes::LangFam;
-# Copyright (c) 2011-2012 Sullivan Beck
+# Copyright (c) 2011-2013 Sullivan Beck
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
use strict;
+require 5.006;
use warnings;
-require 5.002;
require Exporter;
use Carp;
@@ -20,7 +20,7 @@ use Locale::Codes::LangFam_Retired;
our($VERSION,@ISA,@EXPORT,@EXPORT_OK);
-$VERSION='3.21';
+$VERSION='3.25';
@ISA = qw(Exporter);
@EXPORT = qw(code2langfam
langfam2code
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pod
index 7faabee5b10..377c2217ccb 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pod
@@ -108,7 +108,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
=head1 COPYRIGHT
- Copyright (c) 2011-2012 Sullivan Beck
+ Copyright (c) 2011-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm
index 9f361424d7e..98f48f6bc77 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm
@@ -2,7 +2,7 @@ package Locale::Codes::LangFam_Codes;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'get_codes' is run.
-# Generated on: Thu Mar 1 08:08:02 EST 2012
+# Generated on: Wed Feb 27 10:04:35 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,13 +33,14 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
+$VERSION='3.25';
-$Locale::Codes::Data{'langfam'}{'id'} = '0115';
+$Locale::Codes::Data{'langfam'}{'id'} = '0116';
$Locale::Codes::Data{'langfam'}{'id2names'} = {
q(0001) => [
@@ -94,294 +95,297 @@ $Locale::Codes::Data{'langfam'}{'id2names'} = {
q(Berber languages),
],
q(0018) => [
- q(Bantu languages),
+ q(Bihari languages),
],
q(0019) => [
- q(Batak languages),
+ q(Bantu languages),
],
q(0020) => [
- q(Central American Indian languages),
+ q(Batak languages),
],
q(0021) => [
- q(Caucasian languages),
+ q(Central American Indian languages),
],
q(0022) => [
- q(Chibchan languages),
+ q(Caucasian languages),
],
q(0023) => [
- q(North Caucasian languages),
+ q(Chibchan languages),
],
q(0024) => [
- q(South Caucasian languages),
+ q(North Caucasian languages),
],
q(0025) => [
- q(Chadic languages),
+ q(South Caucasian languages),
],
q(0026) => [
- q(Caddoan languages),
+ q(Chadic languages),
],
q(0027) => [
- q(Celtic languages),
+ q(Caddoan languages),
],
q(0028) => [
- q(Chamic languages),
+ q(Celtic languages),
],
q(0029) => [
- q(Creoles and pidgins, English-based),
+ q(Chamic languages),
],
q(0030) => [
- q(Creoles and pidgins, French-based),
+ q(Creoles and pidgins, English-based),
],
q(0031) => [
- q(Creoles and pidgins, Portuguese-based),
+ q(Creoles and pidgins, French-based),
],
q(0032) => [
- q(Creoles and pidgins),
+ q(Creoles and pidgins, Portuguese-based),
],
q(0033) => [
- q(Central Sudanic languages),
+ q(Creoles and pidgins),
],
q(0034) => [
- q(Cushitic languages),
+ q(Central Sudanic languages),
],
q(0035) => [
- q(Land Dayak languages),
+ q(Cushitic languages),
],
q(0036) => [
- q(Mande languages),
+ q(Land Dayak languages),
],
q(0037) => [
- q(Dravidian languages),
+ q(Mande languages),
],
q(0038) => [
- q(Egyptian languages),
+ q(Dravidian languages),
],
q(0039) => [
- q(Eskimo-Aleut languages),
+ q(Egyptian languages),
],
q(0040) => [
- q(Basque (family)),
+ q(Eskimo-Aleut languages),
],
q(0041) => [
- q(Finno-Ugrian languages),
+ q(Basque (family)),
],
q(0042) => [
- q(Formosan languages),
+ q(Finno-Ugrian languages),
],
q(0043) => [
- q(Germanic languages),
+ q(Formosan languages),
],
q(0044) => [
- q(East Germanic languages),
+ q(Germanic languages),
],
q(0045) => [
- q(North Germanic languages),
+ q(East Germanic languages),
],
q(0046) => [
- q(West Germanic languages),
+ q(North Germanic languages),
],
q(0047) => [
- q(Greek languages),
+ q(West Germanic languages),
],
q(0048) => [
- q(Hmong-Mien languages),
+ q(Greek languages),
],
q(0049) => [
- q(Hokan languages),
+ q(Hmong-Mien languages),
],
q(0050) => [
- q(Armenian (family)),
+ q(Hokan languages),
],
q(0051) => [
- q(Indo-Iranian languages),
+ q(Armenian (family)),
],
q(0052) => [
- q(Ijo languages),
+ q(Indo-Iranian languages),
],
q(0053) => [
- q(Indic languages),
+ q(Ijo languages),
],
q(0054) => [
- q(Indo-European languages),
+ q(Indic languages),
],
q(0055) => [
- q(Iranian languages),
+ q(Indo-European languages),
],
q(0056) => [
- q(Iroquoian languages),
+ q(Iranian languages),
],
q(0057) => [
- q(Italic languages),
+ q(Iroquoian languages),
],
q(0058) => [
- q(Japanese (family)),
+ q(Italic languages),
],
q(0059) => [
- q(Karen languages),
+ q(Japanese (family)),
],
q(0060) => [
- q(Kordofanian languages),
+ q(Karen languages),
],
q(0061) => [
- q(Khoisan languages),
+ q(Kordofanian languages),
],
q(0062) => [
- q(Kru languages),
+ q(Khoisan languages),
],
q(0063) => [
- q(Austronesian languages),
+ q(Kru languages),
],
q(0064) => [
- q(Mon-Khmer languages),
+ q(Austronesian languages),
],
q(0065) => [
- q(Manobo languages),
+ q(Mon-Khmer languages),
],
q(0066) => [
- q(Munda languages),
+ q(Manobo languages),
],
q(0067) => [
- q(Mayan languages),
+ q(Munda languages),
],
q(0068) => [
- q(Nahuatl languages),
+ q(Mayan languages),
],
q(0069) => [
- q(North American Indian languages),
+ q(Nahuatl languages),
],
q(0070) => [
- q(Trans-New Guinea languages),
+ q(North American Indian languages),
],
q(0071) => [
- q(Niger-Kordofanian languages),
+ q(Trans-New Guinea languages),
],
q(0072) => [
- q(Nubian languages),
+ q(Niger-Kordofanian languages),
],
q(0073) => [
- q(Oto-Manguean languages),
+ q(Nubian languages),
],
q(0074) => [
- q(Omotic languages),
+ q(Oto-Manguean languages),
],
q(0075) => [
- q(Otomian languages),
+ q(Omotic languages),
],
q(0076) => [
- q(Papuan languages),
+ q(Otomian languages),
],
q(0077) => [
- q(Philippine languages),
+ q(Papuan languages),
],
q(0078) => [
- q(Central Malayo-Polynesian languages),
+ q(Philippine languages),
],
q(0079) => [
- q(Malayo-Polynesian languages),
+ q(Central Malayo-Polynesian languages),
],
q(0080) => [
- q(Eastern Malayo-Polynesian languages),
+ q(Malayo-Polynesian languages),
],
q(0081) => [
- q(Western Malayo-Polynesian languages),
+ q(Eastern Malayo-Polynesian languages),
],
q(0082) => [
- q(Prakrit languages),
+ q(Western Malayo-Polynesian languages),
],
q(0083) => [
- q(Quechuan (family)),
+ q(Prakrit languages),
],
q(0084) => [
- q(Romance languages),
+ q(Quechuan (family)),
],
q(0085) => [
- q(South American Indian languages),
+ q(Romance languages),
],
q(0086) => [
- q(Salishan languages),
+ q(South American Indian languages),
],
q(0087) => [
- q(Eastern Sudanic languages),
+ q(Salishan languages),
],
q(0088) => [
- q(Semitic languages),
+ q(Eastern Sudanic languages),
],
q(0089) => [
- q(sign languages),
+ q(Semitic languages),
],
q(0090) => [
- q(Siouan languages),
+ q(sign languages),
],
q(0091) => [
- q(Sino-Tibetan languages),
+ q(Siouan languages),
],
q(0092) => [
- q(Slavic languages),
+ q(Sino-Tibetan languages),
],
q(0093) => [
- q(Sami languages),
+ q(Slavic languages),
],
q(0094) => [
- q(Songhai languages),
+ q(Sami languages),
],
q(0095) => [
- q(Albanian languages),
+ q(Songhai languages),
],
q(0096) => [
- q(Nilo-Saharan languages),
+ q(Albanian languages),
],
q(0097) => [
- q(Samoyedic languages),
+ q(Nilo-Saharan languages),
],
q(0098) => [
- q(Tai languages),
+ q(Samoyedic languages),
],
q(0099) => [
- q(Tibeto-Burman languages),
+ q(Tai languages),
],
q(0100) => [
- q(Turkic languages),
+ q(Tibeto-Burman languages),
],
q(0101) => [
- q(Tupi languages),
+ q(Turkic languages),
],
q(0102) => [
- q(Altaic languages),
+ q(Tupi languages),
],
q(0103) => [
- q(Tungus languages),
+ q(Altaic languages),
],
q(0104) => [
- q(Uralic languages),
+ q(Tungus languages),
],
q(0105) => [
- q(Wakashan languages),
+ q(Uralic languages),
],
q(0106) => [
- q(Sorbian languages),
+ q(Wakashan languages),
],
q(0107) => [
- q(Mongolian languages),
+ q(Sorbian languages),
],
q(0108) => [
- q(Na-Dene languages),
+ q(Mongolian languages),
],
q(0109) => [
- q(Yupik languages),
+ q(Na-Dene languages),
],
q(0110) => [
- q(Chinese (family)),
+ q(Yupik languages),
],
q(0111) => [
- q(East Slavic languages),
+ q(Chinese (family)),
],
q(0112) => [
- q(South Slavic languages),
+ q(East Slavic languages),
],
q(0113) => [
- q(West Slavic languages),
+ q(South Slavic languages),
],
q(0114) => [
+ q(West Slavic languages),
+ ],
+ q(0115) => [
q(Zande languages),
],
};
@@ -396,7 +400,7 @@ $Locale::Codes::Data{'langfam'}{'alias2id'} = {
q(0),
],
q(albanian languages) => [
- q(0095),
+ q(0096),
q(0),
],
q(algic languages) => [
@@ -408,7 +412,7 @@ $Locale::Codes::Data{'langfam'}{'alias2id'} = {
q(0),
],
q(altaic languages) => [
- q(0102),
+ q(0103),
q(0),
],
q(apache languages) => [
@@ -424,7 +428,7 @@ $Locale::Codes::Data{'langfam'}{'alias2id'} = {
q(0),
],
q(armenian (family)) => [
- q(0050),
+ q(0051),
q(0),
],
q(artificial languages) => [
@@ -448,7 +452,7 @@ $Locale::Codes::Data{'langfam'}{'alias2id'} = {
q(0),
],
q(austronesian languages) => [
- q(0063),
+ q(0064),
q(0),
],
q(baltic languages) => [
@@ -464,355 +468,359 @@ $Locale::Codes::Data{'langfam'}{'alias2id'} = {
q(0),
],
q(bantu languages) => [
- q(0018),
+ q(0019),
q(0),
],
q(basque (family)) => [
- q(0040),
+ q(0041),
q(0),
],
q(batak languages) => [
- q(0019),
+ q(0020),
q(0),
],
q(berber languages) => [
q(0017),
q(0),
],
+ q(bihari languages) => [
+ q(0018),
+ q(0),
+ ],
q(caddoan languages) => [
- q(0026),
+ q(0027),
q(0),
],
q(caucasian languages) => [
- q(0021),
+ q(0022),
q(0),
],
q(celtic languages) => [
- q(0027),
+ q(0028),
q(0),
],
q(central american indian languages) => [
- q(0020),
+ q(0021),
q(0),
],
q(central malayo-polynesian languages) => [
- q(0078),
+ q(0079),
q(0),
],
q(central sudanic languages) => [
- q(0033),
+ q(0034),
q(0),
],
q(chadic languages) => [
- q(0025),
+ q(0026),
q(0),
],
q(chamic languages) => [
- q(0028),
+ q(0029),
q(0),
],
q(chibchan languages) => [
- q(0022),
+ q(0023),
q(0),
],
q(chinese (family)) => [
- q(0110),
+ q(0111),
q(0),
],
q(creoles and pidgins) => [
- q(0032),
+ q(0033),
q(0),
],
q(creoles and pidgins, english-based) => [
- q(0029),
+ q(0030),
q(0),
],
q(creoles and pidgins, french-based) => [
- q(0030),
+ q(0031),
q(0),
],
q(creoles and pidgins, portuguese-based) => [
- q(0031),
+ q(0032),
q(0),
],
q(cushitic languages) => [
- q(0034),
+ q(0035),
q(0),
],
q(dravidian languages) => [
- q(0037),
+ q(0038),
q(0),
],
q(east germanic languages) => [
- q(0044),
+ q(0045),
q(0),
],
q(east slavic languages) => [
- q(0111),
+ q(0112),
q(0),
],
q(eastern malayo-polynesian languages) => [
- q(0080),
+ q(0081),
q(0),
],
q(eastern sudanic languages) => [
- q(0087),
+ q(0088),
q(0),
],
q(egyptian languages) => [
- q(0038),
+ q(0039),
q(0),
],
q(eskimo-aleut languages) => [
- q(0039),
+ q(0040),
q(0),
],
q(finno-ugrian languages) => [
- q(0041),
+ q(0042),
q(0),
],
q(formosan languages) => [
- q(0042),
+ q(0043),
q(0),
],
q(germanic languages) => [
- q(0043),
+ q(0044),
q(0),
],
q(greek languages) => [
- q(0047),
+ q(0048),
q(0),
],
q(hmong-mien languages) => [
- q(0048),
+ q(0049),
q(0),
],
q(hokan languages) => [
- q(0049),
+ q(0050),
q(0),
],
q(ijo languages) => [
- q(0052),
+ q(0053),
q(0),
],
q(indic languages) => [
- q(0053),
+ q(0054),
q(0),
],
q(indo-european languages) => [
- q(0054),
+ q(0055),
q(0),
],
q(indo-iranian languages) => [
- q(0051),
+ q(0052),
q(0),
],
q(iranian languages) => [
- q(0055),
+ q(0056),
q(0),
],
q(iroquoian languages) => [
- q(0056),
+ q(0057),
q(0),
],
q(italic languages) => [
- q(0057),
+ q(0058),
q(0),
],
q(japanese (family)) => [
- q(0058),
+ q(0059),
q(0),
],
q(karen languages) => [
- q(0059),
+ q(0060),
q(0),
],
q(khoisan languages) => [
- q(0061),
+ q(0062),
q(0),
],
q(kordofanian languages) => [
- q(0060),
+ q(0061),
q(0),
],
q(kru languages) => [
- q(0062),
+ q(0063),
q(0),
],
q(land dayak languages) => [
- q(0035),
+ q(0036),
q(0),
],
q(malayo-polynesian languages) => [
- q(0079),
+ q(0080),
q(0),
],
q(mande languages) => [
- q(0036),
+ q(0037),
q(0),
],
q(manobo languages) => [
- q(0065),
+ q(0066),
q(0),
],
q(mayan languages) => [
- q(0067),
+ q(0068),
q(0),
],
q(mon-khmer languages) => [
- q(0064),
+ q(0065),
q(0),
],
q(mongolian languages) => [
- q(0107),
+ q(0108),
q(0),
],
q(munda languages) => [
- q(0066),
+ q(0067),
q(0),
],
q(na-dene languages) => [
- q(0108),
+ q(0109),
q(0),
],
q(nahuatl languages) => [
- q(0068),
+ q(0069),
q(0),
],
q(niger-kordofanian languages) => [
- q(0071),
+ q(0072),
q(0),
],
q(nilo-saharan languages) => [
- q(0096),
+ q(0097),
q(0),
],
q(north american indian languages) => [
- q(0069),
+ q(0070),
q(0),
],
q(north caucasian languages) => [
- q(0023),
+ q(0024),
q(0),
],
q(north germanic languages) => [
- q(0045),
+ q(0046),
q(0),
],
q(nubian languages) => [
- q(0072),
+ q(0073),
q(0),
],
q(omotic languages) => [
- q(0074),
+ q(0075),
q(0),
],
q(oto-manguean languages) => [
- q(0073),
+ q(0074),
q(0),
],
q(otomian languages) => [
- q(0075),
+ q(0076),
q(0),
],
q(papuan languages) => [
- q(0076),
+ q(0077),
q(0),
],
q(philippine languages) => [
- q(0077),
+ q(0078),
q(0),
],
q(prakrit languages) => [
- q(0082),
+ q(0083),
q(0),
],
q(quechuan (family)) => [
- q(0083),
+ q(0084),
q(0),
],
q(romance languages) => [
- q(0084),
+ q(0085),
q(0),
],
q(salishan languages) => [
- q(0086),
+ q(0087),
q(0),
],
q(sami languages) => [
- q(0093),
+ q(0094),
q(0),
],
q(samoyedic languages) => [
- q(0097),
+ q(0098),
q(0),
],
q(semitic languages) => [
- q(0088),
+ q(0089),
q(0),
],
q(sign languages) => [
- q(0089),
+ q(0090),
q(0),
],
q(sino-tibetan languages) => [
- q(0091),
+ q(0092),
q(0),
],
q(siouan languages) => [
- q(0090),
+ q(0091),
q(0),
],
q(slavic languages) => [
- q(0092),
+ q(0093),
q(0),
],
q(songhai languages) => [
- q(0094),
+ q(0095),
q(0),
],
q(sorbian languages) => [
- q(0106),
+ q(0107),
q(0),
],
q(south american indian languages) => [
- q(0085),
+ q(0086),
q(0),
],
q(south caucasian languages) => [
- q(0024),
+ q(0025),
q(0),
],
q(south slavic languages) => [
- q(0112),
+ q(0113),
q(0),
],
q(tai languages) => [
- q(0098),
+ q(0099),
q(0),
],
q(tibeto-burman languages) => [
- q(0099),
+ q(0100),
q(0),
],
q(trans-new guinea languages) => [
- q(0070),
+ q(0071),
q(0),
],
q(tungus languages) => [
- q(0103),
+ q(0104),
q(0),
],
q(tupi languages) => [
- q(0101),
+ q(0102),
q(0),
],
q(turkic languages) => [
- q(0100),
+ q(0101),
q(0),
],
q(uralic languages) => [
- q(0104),
+ q(0105),
q(0),
],
q(uto-aztecan languages) => [
@@ -820,27 +828,27 @@ $Locale::Codes::Data{'langfam'}{'alias2id'} = {
q(0),
],
q(wakashan languages) => [
- q(0105),
+ q(0106),
q(0),
],
q(west germanic languages) => [
- q(0046),
+ q(0047),
q(0),
],
q(west slavic languages) => [
- q(0113),
+ q(0114),
q(0),
],
q(western malayo-polynesian languages) => [
- q(0081),
+ q(0082),
q(0),
],
q(yupik languages) => [
- q(0109),
+ q(0110),
q(0),
],
q(zande languages) => [
- q(0114),
+ q(0115),
q(0),
],
};
@@ -915,394 +923,398 @@ $Locale::Codes::Data{'langfam'}{'code2id'} = {
q(0017),
q(0),
],
- q(bnt) => [
+ q(bih) => [
q(0018),
q(0),
],
- q(btk) => [
+ q(bnt) => [
q(0019),
q(0),
],
- q(cai) => [
+ q(btk) => [
q(0020),
q(0),
],
- q(cau) => [
+ q(cai) => [
q(0021),
q(0),
],
- q(cba) => [
+ q(cau) => [
q(0022),
q(0),
],
- q(ccn) => [
+ q(cba) => [
q(0023),
q(0),
],
- q(ccs) => [
+ q(ccn) => [
q(0024),
q(0),
],
- q(cdc) => [
+ q(ccs) => [
q(0025),
q(0),
],
- q(cdd) => [
+ q(cdc) => [
q(0026),
q(0),
],
- q(cel) => [
+ q(cdd) => [
q(0027),
q(0),
],
- q(cmc) => [
+ q(cel) => [
q(0028),
q(0),
],
- q(cpe) => [
+ q(cmc) => [
q(0029),
q(0),
],
- q(cpf) => [
+ q(cpe) => [
q(0030),
q(0),
],
- q(cpp) => [
+ q(cpf) => [
q(0031),
q(0),
],
- q(crp) => [
+ q(cpp) => [
q(0032),
q(0),
],
- q(csu) => [
+ q(crp) => [
q(0033),
q(0),
],
- q(cus) => [
+ q(csu) => [
q(0034),
q(0),
],
- q(day) => [
+ q(cus) => [
q(0035),
q(0),
],
- q(dmn) => [
+ q(day) => [
q(0036),
q(0),
],
- q(dra) => [
+ q(dmn) => [
q(0037),
q(0),
],
- q(egx) => [
+ q(dra) => [
q(0038),
q(0),
],
- q(esx) => [
+ q(egx) => [
q(0039),
q(0),
],
- q(euq) => [
+ q(esx) => [
q(0040),
q(0),
],
- q(fiu) => [
+ q(euq) => [
q(0041),
q(0),
],
- q(fox) => [
+ q(fiu) => [
q(0042),
q(0),
],
- q(gem) => [
+ q(fox) => [
q(0043),
q(0),
],
- q(gme) => [
+ q(gem) => [
q(0044),
q(0),
],
- q(gmq) => [
+ q(gme) => [
q(0045),
q(0),
],
- q(gmw) => [
+ q(gmq) => [
q(0046),
q(0),
],
- q(grk) => [
+ q(gmw) => [
q(0047),
q(0),
],
- q(hmx) => [
+ q(grk) => [
q(0048),
q(0),
],
- q(hok) => [
+ q(hmx) => [
q(0049),
q(0),
],
- q(hyx) => [
+ q(hok) => [
q(0050),
q(0),
],
- q(iir) => [
+ q(hyx) => [
q(0051),
q(0),
],
- q(ijo) => [
+ q(iir) => [
q(0052),
q(0),
],
- q(inc) => [
+ q(ijo) => [
q(0053),
q(0),
],
- q(ine) => [
+ q(inc) => [
q(0054),
q(0),
],
- q(ira) => [
+ q(ine) => [
q(0055),
q(0),
],
- q(iro) => [
+ q(ira) => [
q(0056),
q(0),
],
- q(itc) => [
+ q(iro) => [
q(0057),
q(0),
],
- q(jpx) => [
+ q(itc) => [
q(0058),
q(0),
],
- q(kar) => [
+ q(jpx) => [
q(0059),
q(0),
],
- q(kdo) => [
+ q(kar) => [
q(0060),
q(0),
],
- q(khi) => [
+ q(kdo) => [
q(0061),
q(0),
],
- q(kro) => [
+ q(khi) => [
q(0062),
q(0),
],
- q(map) => [
+ q(kro) => [
q(0063),
q(0),
],
- q(mkh) => [
+ q(map) => [
q(0064),
q(0),
],
- q(mno) => [
+ q(mkh) => [
q(0065),
q(0),
],
- q(mun) => [
+ q(mno) => [
q(0066),
q(0),
],
- q(myn) => [
+ q(mun) => [
q(0067),
q(0),
],
- q(nah) => [
+ q(myn) => [
q(0068),
q(0),
],
- q(nai) => [
+ q(nah) => [
q(0069),
q(0),
],
- q(ngf) => [
+ q(nai) => [
q(0070),
q(0),
],
- q(nic) => [
+ q(ngf) => [
q(0071),
q(0),
],
- q(nub) => [
+ q(nic) => [
q(0072),
q(0),
],
- q(omq) => [
+ q(nub) => [
q(0073),
q(0),
],
- q(omv) => [
+ q(omq) => [
q(0074),
q(0),
],
- q(oto) => [
+ q(omv) => [
q(0075),
q(0),
],
- q(paa) => [
+ q(oto) => [
q(0076),
q(0),
],
- q(phi) => [
+ q(paa) => [
q(0077),
q(0),
],
- q(plf) => [
+ q(phi) => [
q(0078),
q(0),
],
- q(poz) => [
+ q(plf) => [
q(0079),
q(0),
],
- q(pqe) => [
+ q(poz) => [
q(0080),
q(0),
],
- q(pqw) => [
+ q(pqe) => [
q(0081),
q(0),
],
- q(pra) => [
+ q(pqw) => [
q(0082),
q(0),
],
- q(qwe) => [
+ q(pra) => [
q(0083),
q(0),
],
- q(roa) => [
+ q(qwe) => [
q(0084),
q(0),
],
- q(sai) => [
+ q(roa) => [
q(0085),
q(0),
],
- q(sal) => [
+ q(sai) => [
q(0086),
q(0),
],
- q(sdv) => [
+ q(sal) => [
q(0087),
q(0),
],
- q(sem) => [
+ q(sdv) => [
q(0088),
q(0),
],
- q(sgn) => [
+ q(sem) => [
q(0089),
q(0),
],
- q(sio) => [
+ q(sgn) => [
q(0090),
q(0),
],
- q(sit) => [
+ q(sio) => [
q(0091),
q(0),
],
- q(sla) => [
+ q(sit) => [
q(0092),
q(0),
],
- q(smi) => [
+ q(sla) => [
q(0093),
q(0),
],
- q(son) => [
+ q(smi) => [
q(0094),
q(0),
],
- q(sqj) => [
+ q(son) => [
q(0095),
q(0),
],
- q(ssa) => [
+ q(sqj) => [
q(0096),
q(0),
],
- q(syd) => [
+ q(ssa) => [
q(0097),
q(0),
],
- q(tai) => [
+ q(syd) => [
q(0098),
q(0),
],
- q(tbq) => [
+ q(tai) => [
q(0099),
q(0),
],
- q(trk) => [
+ q(tbq) => [
q(0100),
q(0),
],
- q(tup) => [
+ q(trk) => [
q(0101),
q(0),
],
- q(tut) => [
+ q(tup) => [
q(0102),
q(0),
],
- q(tuw) => [
+ q(tut) => [
q(0103),
q(0),
],
- q(urj) => [
+ q(tuw) => [
q(0104),
q(0),
],
- q(wak) => [
+ q(urj) => [
q(0105),
q(0),
],
- q(wen) => [
+ q(wak) => [
q(0106),
q(0),
],
- q(xgn) => [
+ q(wen) => [
q(0107),
q(0),
],
- q(xnd) => [
+ q(xgn) => [
q(0108),
q(0),
],
- q(ypk) => [
+ q(xnd) => [
q(0109),
q(0),
],
- q(zhx) => [
+ q(ypk) => [
q(0110),
q(0),
],
- q(zle) => [
+ q(zhx) => [
q(0111),
q(0),
],
- q(zls) => [
+ q(zle) => [
q(0112),
q(0),
],
- q(zlw) => [
+ q(zls) => [
q(0113),
q(0),
],
- q(znd) => [
+ q(zlw) => [
q(0114),
q(0),
],
+ q(znd) => [
+ q(0115),
+ q(0),
+ ],
},
};
@@ -1325,103 +1337,104 @@ $Locale::Codes::Data{'langfam'}{'id2code'} = {
q(0015) => q(bai),
q(0016) => q(bat),
q(0017) => q(ber),
- q(0018) => q(bnt),
- q(0019) => q(btk),
- q(0020) => q(cai),
- q(0021) => q(cau),
- q(0022) => q(cba),
- q(0023) => q(ccn),
- q(0024) => q(ccs),
- q(0025) => q(cdc),
- q(0026) => q(cdd),
- q(0027) => q(cel),
- q(0028) => q(cmc),
- q(0029) => q(cpe),
- q(0030) => q(cpf),
- q(0031) => q(cpp),
- q(0032) => q(crp),
- q(0033) => q(csu),
- q(0034) => q(cus),
- q(0035) => q(day),
- q(0036) => q(dmn),
- q(0037) => q(dra),
- q(0038) => q(egx),
- q(0039) => q(esx),
- q(0040) => q(euq),
- q(0041) => q(fiu),
- q(0042) => q(fox),
- q(0043) => q(gem),
- q(0044) => q(gme),
- q(0045) => q(gmq),
- q(0046) => q(gmw),
- q(0047) => q(grk),
- q(0048) => q(hmx),
- q(0049) => q(hok),
- q(0050) => q(hyx),
- q(0051) => q(iir),
- q(0052) => q(ijo),
- q(0053) => q(inc),
- q(0054) => q(ine),
- q(0055) => q(ira),
- q(0056) => q(iro),
- q(0057) => q(itc),
- q(0058) => q(jpx),
- q(0059) => q(kar),
- q(0060) => q(kdo),
- q(0061) => q(khi),
- q(0062) => q(kro),
- q(0063) => q(map),
- q(0064) => q(mkh),
- q(0065) => q(mno),
- q(0066) => q(mun),
- q(0067) => q(myn),
- q(0068) => q(nah),
- q(0069) => q(nai),
- q(0070) => q(ngf),
- q(0071) => q(nic),
- q(0072) => q(nub),
- q(0073) => q(omq),
- q(0074) => q(omv),
- q(0075) => q(oto),
- q(0076) => q(paa),
- q(0077) => q(phi),
- q(0078) => q(plf),
- q(0079) => q(poz),
- q(0080) => q(pqe),
- q(0081) => q(pqw),
- q(0082) => q(pra),
- q(0083) => q(qwe),
- q(0084) => q(roa),
- q(0085) => q(sai),
- q(0086) => q(sal),
- q(0087) => q(sdv),
- q(0088) => q(sem),
- q(0089) => q(sgn),
- q(0090) => q(sio),
- q(0091) => q(sit),
- q(0092) => q(sla),
- q(0093) => q(smi),
- q(0094) => q(son),
- q(0095) => q(sqj),
- q(0096) => q(ssa),
- q(0097) => q(syd),
- q(0098) => q(tai),
- q(0099) => q(tbq),
- q(0100) => q(trk),
- q(0101) => q(tup),
- q(0102) => q(tut),
- q(0103) => q(tuw),
- q(0104) => q(urj),
- q(0105) => q(wak),
- q(0106) => q(wen),
- q(0107) => q(xgn),
- q(0108) => q(xnd),
- q(0109) => q(ypk),
- q(0110) => q(zhx),
- q(0111) => q(zle),
- q(0112) => q(zls),
- q(0113) => q(zlw),
- q(0114) => q(znd),
+ q(0018) => q(bih),
+ q(0019) => q(bnt),
+ q(0020) => q(btk),
+ q(0021) => q(cai),
+ q(0022) => q(cau),
+ q(0023) => q(cba),
+ q(0024) => q(ccn),
+ q(0025) => q(ccs),
+ q(0026) => q(cdc),
+ q(0027) => q(cdd),
+ q(0028) => q(cel),
+ q(0029) => q(cmc),
+ q(0030) => q(cpe),
+ q(0031) => q(cpf),
+ q(0032) => q(cpp),
+ q(0033) => q(crp),
+ q(0034) => q(csu),
+ q(0035) => q(cus),
+ q(0036) => q(day),
+ q(0037) => q(dmn),
+ q(0038) => q(dra),
+ q(0039) => q(egx),
+ q(0040) => q(esx),
+ q(0041) => q(euq),
+ q(0042) => q(fiu),
+ q(0043) => q(fox),
+ q(0044) => q(gem),
+ q(0045) => q(gme),
+ q(0046) => q(gmq),
+ q(0047) => q(gmw),
+ q(0048) => q(grk),
+ q(0049) => q(hmx),
+ q(0050) => q(hok),
+ q(0051) => q(hyx),
+ q(0052) => q(iir),
+ q(0053) => q(ijo),
+ q(0054) => q(inc),
+ q(0055) => q(ine),
+ q(0056) => q(ira),
+ q(0057) => q(iro),
+ q(0058) => q(itc),
+ q(0059) => q(jpx),
+ q(0060) => q(kar),
+ q(0061) => q(kdo),
+ q(0062) => q(khi),
+ q(0063) => q(kro),
+ q(0064) => q(map),
+ q(0065) => q(mkh),
+ q(0066) => q(mno),
+ q(0067) => q(mun),
+ q(0068) => q(myn),
+ q(0069) => q(nah),
+ q(0070) => q(nai),
+ q(0071) => q(ngf),
+ q(0072) => q(nic),
+ q(0073) => q(nub),
+ q(0074) => q(omq),
+ q(0075) => q(omv),
+ q(0076) => q(oto),
+ q(0077) => q(paa),
+ q(0078) => q(phi),
+ q(0079) => q(plf),
+ q(0080) => q(poz),
+ q(0081) => q(pqe),
+ q(0082) => q(pqw),
+ q(0083) => q(pra),
+ q(0084) => q(qwe),
+ q(0085) => q(roa),
+ q(0086) => q(sai),
+ q(0087) => q(sal),
+ q(0088) => q(sdv),
+ q(0089) => q(sem),
+ q(0090) => q(sgn),
+ q(0091) => q(sio),
+ q(0092) => q(sit),
+ q(0093) => q(sla),
+ q(0094) => q(smi),
+ q(0095) => q(son),
+ q(0096) => q(sqj),
+ q(0097) => q(ssa),
+ q(0098) => q(syd),
+ q(0099) => q(tai),
+ q(0100) => q(tbq),
+ q(0101) => q(trk),
+ q(0102) => q(tup),
+ q(0103) => q(tut),
+ q(0104) => q(tuw),
+ q(0105) => q(urj),
+ q(0106) => q(wak),
+ q(0107) => q(wen),
+ q(0108) => q(xgn),
+ q(0109) => q(xnd),
+ q(0110) => q(ypk),
+ q(0111) => q(zhx),
+ q(0112) => q(zle),
+ q(0113) => q(zls),
+ q(0114) => q(zlw),
+ q(0115) => q(znd),
},
};
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Retired.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Retired.pm
index 940e7bef98e..2d09a68ed80 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Retired.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Retired.pm
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -37,7 +37,7 @@ use warnings;
require 5.002;
our($VERSION);
-$VERSION='3.21';
+$VERSION='3.25';
$Locale::Codes::Retired{'langfam'}{'alpha'}{'code'} = {
};
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm
index e3ec0b69d43..013a0768b6b 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm
@@ -1,11 +1,11 @@
package Locale::Codes::LangVar;
-# Copyright (c) 2011-2012 Sullivan Beck
+# Copyright (c) 2011-2013 Sullivan Beck
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
use strict;
+require 5.006;
use warnings;
-require 5.002;
require Exporter;
use Carp;
@@ -20,7 +20,7 @@ use Locale::Codes::LangVar_Retired;
our($VERSION,@ISA,@EXPORT,@EXPORT_OK);
-$VERSION='3.21';
+$VERSION='3.25';
@ISA = qw(Exporter);
@EXPORT = qw(code2langvar
langvar2code
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pod
index cb74ab7790d..d8febb7a069 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pod
@@ -110,7 +110,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
=head1 COPYRIGHT
- Copyright (c) 2011-2012 Sullivan Beck
+ Copyright (c) 2011-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm
index 38531b74db2..8bca5041103 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm
@@ -2,7 +2,7 @@ package Locale::Codes::LangVar_Codes;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'get_codes' is run.
-# Generated on: Thu Mar 1 08:07:50 EST 2012
+# Generated on: Wed Feb 27 10:04:34 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,13 +33,14 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
+$VERSION='3.25';
-$Locale::Codes::Data{'langvar'}{'id'} = '0057';
+$Locale::Codes::Data{'langvar'}{'id'} = '0061';
$Locale::Codes::Data{'langvar'}{'id2names'} = {
q(0001) => [
@@ -88,146 +89,159 @@ $Locale::Codes::Data{'langvar'}{'id2names'} = {
q(The Bila dialect of Resian),
],
q(0015) => [
- q(Boontling),
+ q(Slovene in BohoriÄ alphabet),
],
q(0016) => [
- q(Early Modern English (1500-1700)),
+ q(Boontling),
],
q(0017) => [
- q(International Phonetic Alphabet),
+ q(Slovene in Dajnko alphabet),
],
q(0018) => [
- q(Uralic Phonetic Alphabet),
+ q(Early Modern English (1500-1700)),
],
q(0019) => [
- q(X-SAMPA transcription),
+ q(International Phonetic Alphabet),
],
q(0020) => [
- q(Hepburn romanization),
+ q(Uralic Phonetic Alphabet),
],
q(0021) => [
- q(Norwegian in Hognorsk (High Norwegian) orthography),
+ q(X-SAMPA transcription),
],
q(0022) => [
- q(Epic Sanskrit),
+ q(Hepburn romanization),
],
q(0023) => [
- q(Jauer dialect of Romansh),
+ q(Norwegian in Hognorsk (High Norwegian) orthography),
],
q(0024) => [
- q(Jyutping Cantonese Romanization),
+ q(Epic Sanskrit),
],
q(0025) => [
- q(Common Cornish orthography of Revived Cornish),
+ q(Jauer dialect of Romansh),
],
q(0026) => [
- q(Classical Sanskrit),
+ q(Jyutping Cantonese Romanization),
],
q(0027) => [
+ q(Common Cornish orthography of Revived Cornish),
+ ],
+ q(0028) => [
+ q(Standard Cornish orthography of Revived Cornish),
+ q(Kernowek Standard),
+ ],
+ q(0029) => [
+ q(Classical Sanskrit),
+ ],
+ q(0030) => [
q(The Lipovaz dialect of Resian),
q(The Lipovec dialect of Resian),
],
- q(0028) => [
+ q(0031) => [
q(Post-1917 Russian orthography),
],
- q(0029) => [
+ q(0032) => [
+ q(Slovene in Metelko alphabet),
+ ],
+ q(0033) => [
q(Monotonic Greek),
],
- q(0030) => [
+ q(0034) => [
q(Ndyuka dialect),
q(Aukan dialect),
],
- q(0031) => [
+ q(0035) => [
q(Natisone dialect),
q(Nadiza dialect),
],
- q(0032) => [
+ q(0036) => [
q(The Gniva dialect of Resian),
q(The Njiva dialect of Resian),
],
- q(0033) => [
- q(Volapük nulik),
- q(Volapük perevidöl),
- q(Volapük nulädik),
- q(de Jong's Volapük),
- q(New Volapük),
- q(Revised Volapük),
- q(Modern Volapük),
+ q(0037) => [
+ q(Volapuk nulik),
+ q(Volapuk perevidol),
+ q(Volapuk nuladik),
+ q(de Jong's Volapuk),
+ q(New Volapuk),
+ q(Revised Volapuk),
+ q(Modern Volapuk),
],
- q(0034) => [
+ q(0038) => [
q(The Oseacco dialect of Resian),
q(The Osojane dialect of Resian),
],
- q(0035) => [
+ q(0039) => [
q(Pamaka dialect),
],
- q(0036) => [
+ q(0040) => [
q(Petrine orthography),
],
- q(0037) => [
+ q(0041) => [
q(Pinyin romanization),
],
- q(0038) => [
+ q(0042) => [
q(Polytonic Greek),
],
- q(0039) => [
+ q(0043) => [
q(Puter idiom of Romansh),
],
- q(0040) => [
- q(Volapük rigik),
- q(Schleyer's Volapük),
- q(Original Volapük),
- q(Classic Volapük),
+ q(0044) => [
+ q(Volapuk rigik),
+ q(Schleyer's Volapuk),
+ q(Original Volapuk),
+ q(Classic Volapuk),
],
- q(0041) => [
+ q(0045) => [
q(Resian),
q(Resianic),
q(Rezijan),
],
- q(0042) => [
+ q(0046) => [
q(Rumantsch Grischun),
],
- q(0043) => [
+ q(0047) => [
q(Scottish Standard English),
],
- q(0044) => [
+ q(0048) => [
q(Scouse),
],
- q(0045) => [
+ q(0049) => [
q(The Stolvizza dialect of Resian),
q(The Solbica dialect of Resian),
],
- q(0046) => [
+ q(0050) => [
q(Surmiran idiom of Romansh),
],
- q(0047) => [
+ q(0051) => [
q(Sursilvan idiom of Romansh),
],
- q(0048) => [
+ q(0052) => [
q(Sutsilvan idiom of Romansh),
],
- q(0049) => [
+ q(0053) => [
q(Belarusian in Taraskievica orthography),
],
- q(0050) => [
+ q(0054) => [
q(Unified Cornish orthography of Revived Cornish),
],
- q(0051) => [
+ q(0055) => [
q(Unified Cornish Revised orthography of Revived Cornish),
],
- q(0052) => [
+ q(0056) => [
q(Ulster dialect of Scots),
],
- q(0053) => [
+ q(0057) => [
q(Vedic Sanskrit),
],
- q(0054) => [
+ q(0058) => [
q(Valencian),
],
- q(0055) => [
+ q(0059) => [
q(Vallader idiom of Romansh),
],
- q(0056) => [
+ q(0060) => [
q(Wade-Giles romanization),
],
};
@@ -246,11 +260,11 @@ $Locale::Codes::Data{'langvar'}{'alias2id'} = {
q(0),
],
q(aukan dialect) => [
- q(0030),
+ q(0034),
q(0),
],
q(belarusian in taraskievica orthography) => [
- q(0049),
+ q(0053),
q(0),
],
q(biscayan dialect of basque) => [
@@ -262,31 +276,31 @@ $Locale::Codes::Data{'langvar'}{'alias2id'} = {
q(0),
],
q(boontling) => [
- q(0015),
+ q(0016),
q(0),
],
q(buddhist hybrid sanskrit) => [
q(0012),
q(0),
],
- q(classic volapük) => [
- q(0040),
+ q(classic volapuk) => [
+ q(0044),
q(0),
],
q(classical sanskrit) => [
- q(0026),
+ q(0029),
q(0),
],
q(common cornish orthography of revived cornish) => [
- q(0025),
+ q(0027),
q(0),
],
- q(de jong's volapük) => [
- q(0033),
+ q(de jong's volapuk) => [
+ q(0037),
q(0),
],
q(early modern english (1500-1700)) => [
- q(0016),
+ q(0018),
q(0),
],
q(early modern french) => [
@@ -298,7 +312,7 @@ $Locale::Codes::Data{'langvar'}{'alias2id'} = {
q(0),
],
q(epic sanskrit) => [
- q(0022),
+ q(0024),
q(0),
],
q(german orthography of 1996) => [
@@ -306,111 +320,131 @@ $Locale::Codes::Data{'langvar'}{'alias2id'} = {
q(0),
],
q(hepburn romanization) => [
- q(0020),
+ q(0022),
q(0),
],
q(international phonetic alphabet) => [
- q(0017),
+ q(0019),
q(0),
],
q(jauer dialect of romansh) => [
- q(0023),
+ q(0025),
q(0),
],
q(jyutping cantonese romanization) => [
- q(0024),
+ q(0026),
+ q(0),
+ ],
+ q(kernowek standard) => [
+ q(0028),
q(0),
],
q(late middle french (to 1606)) => [
q(0001),
q(0),
],
- q(modern volapük) => [
- q(0033),
+ q(modern volapuk) => [
+ q(0037),
q(0),
],
q(monotonic greek) => [
- q(0029),
+ q(0033),
q(0),
],
q(nadiza dialect) => [
- q(0031),
+ q(0035),
q(0),
],
q(natisone dialect) => [
- q(0031),
+ q(0035),
q(0),
],
q(ndyuka dialect) => [
- q(0030),
+ q(0034),
q(0),
],
- q(new volapük) => [
- q(0033),
+ q(new volapuk) => [
+ q(0037),
q(0),
],
q(norwegian in hognorsk (high norwegian) orthography) => [
- q(0021),
+ q(0023),
q(0),
],
- q(original volapük) => [
- q(0040),
+ q(original volapuk) => [
+ q(0044),
q(0),
],
q(pamaka dialect) => [
- q(0035),
+ q(0039),
q(0),
],
q(petrine orthography) => [
- q(0036),
+ q(0040),
q(0),
],
q(pinyin romanization) => [
- q(0037),
+ q(0041),
q(0),
],
q(polytonic greek) => [
- q(0038),
+ q(0042),
q(0),
],
q(post-1917 russian orthography) => [
- q(0028),
+ q(0031),
q(0),
],
q(puter idiom of romansh) => [
- q(0039),
+ q(0043),
q(0),
],
q(resian) => [
- q(0041),
+ q(0045),
q(0),
],
q(resianic) => [
- q(0041),
+ q(0045),
q(0),
],
- q(revised volapük) => [
- q(0033),
+ q(revised volapuk) => [
+ q(0037),
q(0),
],
q(rezijan) => [
- q(0041),
+ q(0045),
q(0),
],
q(rumantsch grischun) => [
- q(0042),
+ q(0046),
q(0),
],
- q(schleyer's volapük) => [
- q(0040),
+ q(schleyer's volapuk) => [
+ q(0044),
q(0),
],
q(scottish standard english) => [
- q(0043),
+ q(0047),
q(0),
],
q(scouse) => [
- q(0044),
+ q(0048),
+ q(0),
+ ],
+ q(slovene in bohoriÄ alphabet) => [
+ q(0015),
+ q(0),
+ ],
+ q(slovene in dajnko alphabet) => [
+ q(0017),
+ q(0),
+ ],
+ q(slovene in metelko alphabet) => [
+ q(0032),
+ q(0),
+ ],
+ q(standard cornish orthography of revived cornish) => [
+ q(0028),
q(0),
],
q(standardized resian orthography) => [
@@ -418,15 +452,15 @@ $Locale::Codes::Data{'langvar'}{'alias2id'} = {
q(0),
],
q(surmiran idiom of romansh) => [
- q(0046),
+ q(0050),
q(0),
],
q(sursilvan idiom of romansh) => [
- q(0047),
+ q(0051),
q(0),
],
q(sutsilvan idiom of romansh) => [
- q(0048),
+ q(0052),
q(0),
],
q(the bila dialect of resian) => [
@@ -434,27 +468,27 @@ $Locale::Codes::Data{'langvar'}{'alias2id'} = {
q(0),
],
q(the gniva dialect of resian) => [
- q(0032),
+ q(0036),
q(0),
],
q(the lipovaz dialect of resian) => [
- q(0027),
+ q(0030),
q(0),
],
q(the lipovec dialect of resian) => [
- q(0027),
+ q(0030),
q(0),
],
q(the njiva dialect of resian) => [
- q(0032),
+ q(0036),
q(0),
],
q(the oseacco dialect of resian) => [
- q(0034),
+ q(0038),
q(0),
],
q(the osojane dialect of resian) => [
- q(0034),
+ q(0038),
q(0),
],
q(the san giorgio dialect of resian) => [
@@ -462,11 +496,11 @@ $Locale::Codes::Data{'langvar'}{'alias2id'} = {
q(0),
],
q(the solbica dialect of resian) => [
- q(0045),
+ q(0049),
q(0),
],
q(the stolvizza dialect of resian) => [
- q(0045),
+ q(0049),
q(0),
],
q(traditional german orthography) => [
@@ -474,15 +508,15 @@ $Locale::Codes::Data{'langvar'}{'alias2id'} = {
q(0),
],
q(ulster dialect of scots) => [
- q(0052),
+ q(0056),
q(0),
],
q(unified cornish orthography of revived cornish) => [
- q(0050),
+ q(0054),
q(0),
],
q(unified cornish revised orthography of revived cornish) => [
- q(0051),
+ q(0055),
q(0),
],
q(unified turkic latin alphabet (historical)) => [
@@ -490,39 +524,39 @@ $Locale::Codes::Data{'langvar'}{'alias2id'} = {
q(0),
],
q(uralic phonetic alphabet) => [
- q(0018),
+ q(0020),
q(0),
],
q(valencian) => [
- q(0054),
+ q(0058),
q(0),
],
q(vallader idiom of romansh) => [
- q(0055),
+ q(0059),
q(0),
],
q(vedic sanskrit) => [
- q(0053),
+ q(0057),
q(0),
],
- q(volapük nulik) => [
- q(0033),
+ q(volapuk nuladik) => [
+ q(0037),
q(0),
],
- q(volapük nulädik) => [
- q(0033),
+ q(volapuk nulik) => [
+ q(0037),
q(0),
],
- q(volapük perevidöl) => [
- q(0033),
+ q(volapuk perevidol) => [
+ q(0037),
q(0),
],
- q(volapük rigik) => [
- q(0040),
+ q(volapuk rigik) => [
+ q(0044),
q(0),
],
q(wade-giles romanization) => [
- q(0056),
+ q(0060),
q(0),
],
q(western armenian) => [
@@ -530,7 +564,7 @@ $Locale::Codes::Data{'langvar'}{'alias2id'} = {
q(0),
],
q(x-sampa transcription) => [
- q(0019),
+ q(0021),
q(0),
],
};
@@ -593,174 +627,190 @@ $Locale::Codes::Data{'langvar'}{'code2id'} = {
q(0014),
q(0),
],
- q(boont) => [
+ q(bohoric) => [
q(0015),
q(0),
],
- q(emodeng) => [
+ q(boont) => [
q(0016),
q(0),
],
- q(fonipa) => [
+ q(dajnko) => [
q(0017),
q(0),
],
- q(fonupa) => [
+ q(emodeng) => [
q(0018),
q(0),
],
- q(fonxsamp) => [
+ q(fonipa) => [
q(0019),
q(0),
],
- q(hepburn) => [
+ q(fonupa) => [
q(0020),
q(0),
],
- q(hognorsk) => [
+ q(fonxsamp) => [
q(0021),
q(0),
],
- q(itihasa) => [
+ q(hepburn) => [
q(0022),
q(0),
],
- q(jauer) => [
+ q(hognorsk) => [
q(0023),
q(0),
],
- q(jyutping) => [
+ q(itihasa) => [
q(0024),
q(0),
],
- q(kkcor) => [
+ q(jauer) => [
q(0025),
q(0),
],
- q(laukika) => [
+ q(jyutping) => [
q(0026),
q(0),
],
- q(lipaw) => [
+ q(kkcor) => [
q(0027),
q(0),
],
- q(luna1918) => [
+ q(kscor) => [
q(0028),
q(0),
],
- q(monoton) => [
+ q(laukika) => [
q(0029),
q(0),
],
- q(ndyuka) => [
+ q(lipaw) => [
q(0030),
q(0),
],
- q(nedis) => [
+ q(luna1918) => [
q(0031),
q(0),
],
- q(njiva) => [
+ q(metelko) => [
q(0032),
q(0),
],
- q(nulik) => [
+ q(monoton) => [
q(0033),
q(0),
],
- q(osojs) => [
+ q(ndyuka) => [
q(0034),
q(0),
],
- q(pamaka) => [
+ q(nedis) => [
q(0035),
q(0),
],
- q(petr1708) => [
+ q(njiva) => [
q(0036),
q(0),
],
- q(pinyin) => [
+ q(nulik) => [
q(0037),
q(0),
],
- q(polyton) => [
+ q(osojs) => [
q(0038),
q(0),
],
- q(puter) => [
+ q(pamaka) => [
q(0039),
q(0),
],
- q(rigik) => [
+ q(petr1708) => [
q(0040),
q(0),
],
- q(rozaj) => [
+ q(pinyin) => [
q(0041),
q(0),
],
- q(rumgr) => [
+ q(polyton) => [
q(0042),
q(0),
],
- q(scotland) => [
+ q(puter) => [
q(0043),
q(0),
],
- q(scouse) => [
+ q(rigik) => [
q(0044),
q(0),
],
- q(solba) => [
+ q(rozaj) => [
q(0045),
q(0),
],
- q(surmiran) => [
+ q(rumgr) => [
q(0046),
q(0),
],
- q(sursilv) => [
+ q(scotland) => [
q(0047),
q(0),
],
- q(sutsilv) => [
+ q(scouse) => [
q(0048),
q(0),
],
- q(tarask) => [
+ q(solba) => [
q(0049),
q(0),
],
- q(uccor) => [
+ q(surmiran) => [
q(0050),
q(0),
],
- q(ucrcor) => [
+ q(sursilv) => [
q(0051),
q(0),
],
- q(ulster) => [
+ q(sutsilv) => [
q(0052),
q(0),
],
- q(vaidika) => [
+ q(tarask) => [
q(0053),
q(0),
],
- q(valencia) => [
+ q(uccor) => [
q(0054),
q(0),
],
- q(vallader) => [
+ q(ucrcor) => [
q(0055),
q(0),
],
- q(wadegile) => [
+ q(ulster) => [
q(0056),
q(0),
],
+ q(vaidika) => [
+ q(0057),
+ q(0),
+ ],
+ q(valencia) => [
+ q(0058),
+ q(0),
+ ],
+ q(vallader) => [
+ q(0059),
+ q(0),
+ ],
+ q(wadegile) => [
+ q(0060),
+ q(0),
+ ],
},
};
@@ -780,48 +830,52 @@ $Locale::Codes::Data{'langvar'}{'id2code'} = {
q(0012) => q(bauddha),
q(0013) => q(biscayan),
q(0014) => q(biske),
- q(0015) => q(boont),
- q(0016) => q(emodeng),
- q(0017) => q(fonipa),
- q(0018) => q(fonupa),
- q(0019) => q(fonxsamp),
- q(0020) => q(hepburn),
- q(0021) => q(hognorsk),
- q(0022) => q(itihasa),
- q(0023) => q(jauer),
- q(0024) => q(jyutping),
- q(0025) => q(kkcor),
- q(0026) => q(laukika),
- q(0027) => q(lipaw),
- q(0028) => q(luna1918),
- q(0029) => q(monoton),
- q(0030) => q(ndyuka),
- q(0031) => q(nedis),
- q(0032) => q(njiva),
- q(0033) => q(nulik),
- q(0034) => q(osojs),
- q(0035) => q(pamaka),
- q(0036) => q(petr1708),
- q(0037) => q(pinyin),
- q(0038) => q(polyton),
- q(0039) => q(puter),
- q(0040) => q(rigik),
- q(0041) => q(rozaj),
- q(0042) => q(rumgr),
- q(0043) => q(scotland),
- q(0044) => q(scouse),
- q(0045) => q(solba),
- q(0046) => q(surmiran),
- q(0047) => q(sursilv),
- q(0048) => q(sutsilv),
- q(0049) => q(tarask),
- q(0050) => q(uccor),
- q(0051) => q(ucrcor),
- q(0052) => q(ulster),
- q(0053) => q(vaidika),
- q(0054) => q(valencia),
- q(0055) => q(vallader),
- q(0056) => q(wadegile),
+ q(0015) => q(bohoric),
+ q(0016) => q(boont),
+ q(0017) => q(dajnko),
+ q(0018) => q(emodeng),
+ q(0019) => q(fonipa),
+ q(0020) => q(fonupa),
+ q(0021) => q(fonxsamp),
+ q(0022) => q(hepburn),
+ q(0023) => q(hognorsk),
+ q(0024) => q(itihasa),
+ q(0025) => q(jauer),
+ q(0026) => q(jyutping),
+ q(0027) => q(kkcor),
+ q(0028) => q(kscor),
+ q(0029) => q(laukika),
+ q(0030) => q(lipaw),
+ q(0031) => q(luna1918),
+ q(0032) => q(metelko),
+ q(0033) => q(monoton),
+ q(0034) => q(ndyuka),
+ q(0035) => q(nedis),
+ q(0036) => q(njiva),
+ q(0037) => q(nulik),
+ q(0038) => q(osojs),
+ q(0039) => q(pamaka),
+ q(0040) => q(petr1708),
+ q(0041) => q(pinyin),
+ q(0042) => q(polyton),
+ q(0043) => q(puter),
+ q(0044) => q(rigik),
+ q(0045) => q(rozaj),
+ q(0046) => q(rumgr),
+ q(0047) => q(scotland),
+ q(0048) => q(scouse),
+ q(0049) => q(solba),
+ q(0050) => q(surmiran),
+ q(0051) => q(sursilv),
+ q(0052) => q(sutsilv),
+ q(0053) => q(tarask),
+ q(0054) => q(uccor),
+ q(0055) => q(ucrcor),
+ q(0056) => q(ulster),
+ q(0057) => q(vaidika),
+ q(0058) => q(valencia),
+ q(0059) => q(vallader),
+ q(0060) => q(wadegile),
},
};
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Retired.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Retired.pm
index 447325b9929..a1ea9924d56 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Retired.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Retired.pm
@@ -2,7 +2,7 @@ package Locale::Codes::LangVar_Retired;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'deprecate_codes' is run.
-# Generated on: Thu Mar 1 08:11:47 EST 2012
+# Generated on: Wed Feb 27 10:06:46 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,11 +33,12 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
+$VERSION='3.25';
$Locale::Codes::Retired{'langvar'}{'alpha'}{'code'} = {
};
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language.pm
index b23242ce91a..aa85767ec82 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language.pm
@@ -1,13 +1,13 @@
package Locale::Codes::Language;
# Copyright (C) 2001 Canon Research Centre Europe (CRE).
# Copyright (C) 2002-2009 Neil Bowers
-# Copyright (c) 2010-2012 Sullivan Beck
+# Copyright (c) 2010-2013 Sullivan Beck
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
use strict;
+require 5.006;
use warnings;
-require 5.002;
require Exporter;
use Carp;
@@ -22,7 +22,7 @@ use Locale::Codes::Language_Retired;
our($VERSION,@ISA,@EXPORT,@EXPORT_OK);
-$VERSION='3.21';
+$VERSION='3.25';
@ISA = qw(Exporter);
@EXPORT = qw(code2language
language2code
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language.pod
index 96c10884361..29107e5fc65 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language.pod
@@ -129,7 +129,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language_Codes.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language_Codes.pm
index 7b156fbe363..35bd5352257 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language_Codes.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language_Codes.pm
@@ -2,7 +2,7 @@ package Locale::Codes::Language_Codes;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'get_codes' is run.
-# Generated on: Thu Mar 1 08:07:05 EST 2012
+# Generated on: Wed Feb 27 10:04:21 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,13 +33,14 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
+$VERSION='3.25';
-$Locale::Codes::Data{'language'}{'id'} = '7819';
+$Locale::Codes::Data{'language'}{'id'} = '7887';
$Locale::Codes::Data{'language'}{'id2names'} = {
q(0001) => [
@@ -1037,6 +1038,7 @@ $Locale::Codes::Data{'language'}{'id2names'} = {
],
q(0307) => [
q(Nepali),
+ q(Nepali (macrolanguage)),
],
q(0308) => [
q(Nepal Bhasa),
@@ -1111,6 +1113,7 @@ $Locale::Codes::Data{'language'}{'id2names'} = {
],
q(0328) => [
q(Oriya),
+ q(Oriya (macrolanguage)),
],
q(0329) => [
q(Oromo),
@@ -1594,23 +1597,26 @@ $Locale::Codes::Data{'language'}{'id2names'} = {
q(Zenaga),
],
q(0480) => [
+ q(Standard Moroccan Tamazight),
+ ],
+ q(0481) => [
q(Zhuang),
q(Chuang),
],
- q(0481) => [
+ q(0482) => [
q(Zande languages),
],
- q(0482) => [
+ q(0483) => [
q(Zulu),
],
- q(0483) => [
+ q(0484) => [
q(Zuni),
],
- q(0484) => [
+ q(0485) => [
q(No linguistic content),
q(Not applicable),
],
- q(0485) => [
+ q(0486) => [
q(Zaza),
q(Dimili),
q(Dimli),
@@ -1620,22268 +1626,22491 @@ $Locale::Codes::Data{'language'}{'id2names'} = {
q(Dimli (macrolanguage)),
q(Kirmanjki (macrolanguage)),
],
- q(0486) => [
- q(Austro-Asiatic languages),
- ],
q(0487) => [
- q(Atlantic-Congo languages),
+ q(Austro-Asiatic languages),
],
q(0488) => [
- q(Alacalufan languages),
+ q(Atlantic-Congo languages),
],
q(0489) => [
- q(Algic languages),
+ q(Alacalufan languages),
],
q(0490) => [
- q(Arauan languages),
+ q(Algic languages),
],
q(0491) => [
- q(Arawakan languages),
+ q(Arauan languages),
],
q(0492) => [
- q(Uto-Aztecan languages),
+ q(Arawakan languages),
],
q(0493) => [
- q(Chibchan languages),
+ q(Uto-Aztecan languages),
],
q(0494) => [
- q(North Caucasian languages),
+ q(Chibchan languages),
],
q(0495) => [
- q(South Caucasian languages),
+ q(North Caucasian languages),
],
q(0496) => [
- q(Chadic languages),
+ q(South Caucasian languages),
],
q(0497) => [
- q(Caddoan languages),
+ q(Chadic languages),
],
q(0498) => [
- q(Central Sudanic languages),
+ q(Caddoan languages),
],
q(0499) => [
- q(Mande languages),
+ q(Central Sudanic languages),
],
q(0500) => [
- q(Egyptian languages),
+ q(Mande languages),
],
q(0501) => [
- q(Eskimo-Aleut languages),
+ q(Egyptian languages),
],
q(0502) => [
- q(Basque (family)),
+ q(Eskimo-Aleut languages),
],
q(0503) => [
- q(Formosan languages),
+ q(Basque (family)),
],
q(0504) => [
- q(East Germanic languages),
+ q(Formosan languages),
],
q(0505) => [
- q(North Germanic languages),
+ q(East Germanic languages),
],
q(0506) => [
- q(West Germanic languages),
+ q(North Germanic languages),
],
q(0507) => [
- q(Greek languages),
+ q(West Germanic languages),
],
q(0508) => [
- q(Hmong-Mien languages),
+ q(Greek languages),
],
q(0509) => [
- q(Hokan languages),
+ q(Hmong-Mien languages),
],
q(0510) => [
- q(Armenian (family)),
+ q(Hokan languages),
],
q(0511) => [
- q(Indo-Iranian languages),
+ q(Armenian (family)),
],
q(0512) => [
- q(Italic languages),
+ q(Indo-Iranian languages),
],
q(0513) => [
- q(Japanese (family)),
+ q(Italic languages),
],
q(0514) => [
- q(Kordofanian languages),
+ q(Japanese (family)),
],
q(0515) => [
- q(Trans-New Guinea languages),
+ q(Kordofanian languages),
],
q(0516) => [
- q(Oto-Manguean languages),
+ q(Trans-New Guinea languages),
],
q(0517) => [
- q(Omotic languages),
+ q(Oto-Manguean languages),
],
q(0518) => [
- q(Central Malayo-Polynesian languages),
+ q(Omotic languages),
],
q(0519) => [
- q(Malayo-Polynesian languages),
+ q(Central Malayo-Polynesian languages),
],
q(0520) => [
- q(Eastern Malayo-Polynesian languages),
+ q(Malayo-Polynesian languages),
],
q(0521) => [
- q(Western Malayo-Polynesian languages),
+ q(Eastern Malayo-Polynesian languages),
],
q(0522) => [
- q(Quechuan (family)),
+ q(Western Malayo-Polynesian languages),
],
q(0523) => [
- q(Eastern Sudanic languages),
+ q(Quechuan (family)),
],
q(0524) => [
- q(Albanian languages),
+ q(Eastern Sudanic languages),
],
q(0525) => [
- q(Samoyedic languages),
+ q(Albanian languages),
],
q(0526) => [
- q(Tibeto-Burman languages),
+ q(Samoyedic languages),
],
q(0527) => [
- q(Turkic languages),
+ q(Tibeto-Burman languages),
],
q(0528) => [
- q(Tungus languages),
+ q(Turkic languages),
],
q(0529) => [
- q(Uralic languages),
+ q(Tungus languages),
],
q(0530) => [
- q(Mongolian languages),
+ q(Uralic languages),
],
q(0531) => [
- q(Na-Dene languages),
+ q(Mongolian languages),
],
q(0532) => [
- q(Chinese (family)),
+ q(Na-Dene languages),
],
q(0533) => [
- q(East Slavic languages),
+ q(Chinese (family)),
],
q(0534) => [
- q(South Slavic languages),
+ q(East Slavic languages),
],
q(0535) => [
- q(West Slavic languages),
+ q(South Slavic languages),
],
q(0536) => [
- q(Serbo-Croatian),
+ q(West Slavic languages),
],
q(0537) => [
- q(Ghotuo),
+ q(Serbo-Croatian),
],
q(0538) => [
- q(Alumu-Tesu),
+ q(Ghotuo),
],
q(0539) => [
- q(Ari),
+ q(Alumu-Tesu),
],
q(0540) => [
- q(Amal),
+ q(Ari),
],
q(0541) => [
- q(Arbereshe Albanian),
+ q(Amal),
],
q(0542) => [
- q(Aranadan),
+ q(Arbereshe Albanian),
],
q(0543) => [
- q(Ambrak),
+ q(Aranadan),
],
q(0544) => [
- q(Abu' Arapesh),
+ q(Ambrak),
],
q(0545) => [
- q(Arifama-Miniafia),
+ q(Abu' Arapesh),
],
q(0546) => [
- q(Ankave),
+ q(Arifama-Miniafia),
],
q(0547) => [
- q(Afade),
+ q(Ankave),
],
q(0548) => [
- q(Aramanik),
+ q(Afade),
],
q(0549) => [
- q(Anambe),
+ q(Aramanik),
],
q(0550) => [
- q(Algerian Saharan Arabic),
+ q(Anambe),
],
q(0551) => [
- q(Para Arara),
+ q(Algerian Saharan Arabic),
],
q(0552) => [
- q(Eastern Abnaki),
+ q(Para Arara),
],
q(0553) => [
- q(Aasax),
+ q(Eastern Abnaki),
],
q(0554) => [
- q(Arvanitika Albanian),
+ q(Aasax),
],
q(0555) => [
- q(Abau),
+ q(Arvanitika Albanian),
],
q(0556) => [
- q(Solong),
+ q(Abau),
],
q(0557) => [
- q(Mandobo Atas),
+ q(Solong),
],
q(0558) => [
- q(Amarasi),
+ q(Mandobo Atas),
],
q(0559) => [
- q(Abe),
+ q(Amarasi),
],
q(0560) => [
- q(Bankon),
+ q(Abe),
],
q(0561) => [
- q(Ambala Ayta),
+ q(Bankon),
],
q(0562) => [
- q(Manide),
+ q(Ambala Ayta),
],
q(0563) => [
- q(Western Abnaki),
+ q(Manide),
],
q(0564) => [
- q(Abai Sungai),
+ q(Western Abnaki),
],
q(0565) => [
- q(Abaga),
+ q(Abai Sungai),
],
q(0566) => [
- q(Tajiki Arabic),
+ q(Abaga),
],
q(0567) => [
- q(Abidji),
+ q(Tajiki Arabic),
],
q(0568) => [
- q(Aka-Bea),
+ q(Abidji),
],
q(0569) => [
- q(Lampung Nyo),
+ q(Aka-Bea),
],
q(0570) => [
- q(Abanyom),
+ q(Lampung Nyo),
],
q(0571) => [
- q(Abua),
+ q(Abanyom),
],
q(0572) => [
- q(Abon),
+ q(Abua),
],
q(0573) => [
- q(Abellen Ayta),
+ q(Abon),
],
q(0574) => [
- q(Abaza),
+ q(Abellen Ayta),
],
q(0575) => [
- q(Abron),
+ q(Abaza),
],
q(0576) => [
- q(Ambonese Malay),
+ q(Abron),
],
q(0577) => [
- q(Ambulas),
+ q(Ambonese Malay),
],
q(0578) => [
- q(Abure),
+ q(Ambulas),
],
q(0579) => [
- q(Baharna Arabic),
+ q(Abure),
],
q(0580) => [
- q(Pal),
+ q(Baharna Arabic),
],
q(0581) => [
- q(Inabaknon),
+ q(Pal),
],
q(0582) => [
- q(Aneme Wake),
+ q(Inabaknon),
],
q(0583) => [
- q(Abui),
+ q(Aneme Wake),
],
q(0584) => [
- q(Achagua),
+ q(Abui),
],
q(0585) => [
- q(Anca),
+ q(Achagua),
],
q(0586) => [
- q(Gikyode),
+ q(Anca),
],
q(0587) => [
- q(Saint Lucian Creole French),
+ q(Gikyode),
],
q(0588) => [
- q(Aka-Cari),
+ q(Saint Lucian Creole French),
],
q(0589) => [
- q(Aka-Kora),
+ q(Aka-Cari),
],
q(0590) => [
- q(Akar-Bale),
+ q(Aka-Kora),
],
q(0591) => [
- q(Mesopotamian Arabic),
+ q(Akar-Bale),
],
q(0592) => [
- q(Achang),
+ q(Mesopotamian Arabic),
],
q(0593) => [
- q(Eastern Acipa),
+ q(Achang),
],
q(0594) => [
- q(Ta'izzi-Adeni Arabic),
+ q(Eastern Acipa),
],
q(0595) => [
- q(Achi),
+ q(Ta'izzi-Adeni Arabic),
],
q(0596) => [
- q(Acroa),
+ q(Achi),
],
q(0597) => [
- q(Achterhoeks),
+ q(Acroa),
],
q(0598) => [
- q(Achuar-Shiwiar),
+ q(Achterhoeks),
],
q(0599) => [
- q(Achumawi),
+ q(Achuar-Shiwiar),
],
q(0600) => [
- q(Hijazi Arabic),
+ q(Achumawi),
],
q(0601) => [
- q(Omani Arabic),
+ q(Hijazi Arabic),
],
q(0602) => [
- q(Cypriot Arabic),
+ q(Omani Arabic),
],
q(0603) => [
- q(Acheron),
+ q(Cypriot Arabic),
],
q(0604) => [
- q(Adabe),
+ q(Acheron),
],
q(0605) => [
- q(Dzodinka),
+ q(Adabe),
],
q(0606) => [
- q(Adele),
+ q(Dzodinka),
],
q(0607) => [
- q(Dhofari Arabic),
+ q(Adele),
],
q(0608) => [
- q(Andegerebinha),
+ q(Dhofari Arabic),
],
q(0609) => [
- q(Adhola),
+ q(Andegerebinha),
],
q(0610) => [
- q(Adi),
+ q(Adhola),
],
q(0611) => [
- q(Adioukrou),
+ q(Adi),
],
q(0612) => [
- q(Galo),
+ q(Adioukrou),
],
q(0613) => [
- q(Adang),
+ q(Galo),
],
q(0614) => [
- q(Abu),
+ q(Adang),
],
q(0615) => [
- q(Adap),
+ q(Abu),
],
q(0616) => [
- q(Adangbe),
+ q(Adap),
],
q(0617) => [
- q(Adonara),
+ q(Adangbe),
],
q(0618) => [
- q(Adamorobe Sign Language),
+ q(Adonara),
],
q(0619) => [
- q(Adnyamathanha),
+ q(Adamorobe Sign Language),
],
q(0620) => [
- q(Aduge),
+ q(Adnyamathanha),
],
q(0621) => [
- q(Amundava),
+ q(Aduge),
],
q(0622) => [
- q(Amdo Tibetan),
+ q(Amundava),
],
q(0623) => [
- q(Adzera),
+ q(Amdo Tibetan),
],
q(0624) => [
- q(Areba),
+ q(Adzera),
],
q(0625) => [
- q(Tunisian Arabic),
+ q(Areba),
],
q(0626) => [
- q(Saidi Arabic),
+ q(Tunisian Arabic),
],
q(0627) => [
- q(Argentine Sign Language),
+ q(Saidi Arabic),
],
q(0628) => [
- q(Northeast Pashayi),
+ q(Argentine Sign Language),
],
q(0629) => [
- q(Haeke),
+ q(Northeast Pashayi),
],
q(0630) => [
- q(Ambele),
+ q(Haeke),
],
q(0631) => [
- q(Arem),
+ q(Ambele),
],
q(0632) => [
- q(Armenian Sign Language),
+ q(Arem),
],
q(0633) => [
- q(Aer),
+ q(Armenian Sign Language),
],
q(0634) => [
- q(Eastern Arrernte),
+ q(Aer),
],
q(0635) => [
- q(Alsea),
+ q(Eastern Arrernte),
],
q(0636) => [
- q(Akeu),
+ q(Alsea),
],
q(0637) => [
- q(Ambakich),
+ q(Akeu),
],
q(0638) => [
- q(Amele),
+ q(Ambakich),
],
q(0639) => [
- q(Aeka),
+ q(Amele),
],
q(0640) => [
- q(Gulf Arabic),
+ q(Aeka),
],
q(0641) => [
- q(Andai),
+ q(Gulf Arabic),
],
q(0642) => [
- q(Putukwam),
+ q(Andai),
],
q(0643) => [
- q(Afghan Sign Language),
+ q(Putukwam),
],
q(0644) => [
- q(Akrukay),
+ q(Afghan Sign Language),
],
q(0645) => [
- q(Nanubae),
+ q(Akrukay),
],
q(0646) => [
- q(Defaka),
+ q(Nanubae),
],
q(0647) => [
- q(Eloyi),
+ q(Defaka),
],
q(0648) => [
- q(Tapei),
+ q(Eloyi),
],
q(0649) => [
- q(Afro-Seminole Creole),
+ q(Tapei),
],
q(0650) => [
- q(Afitti),
+ q(Afro-Seminole Creole),
],
q(0651) => [
- q(Awutu),
+ q(Afitti),
],
q(0652) => [
- q(Obokuitai),
+ q(Awutu),
],
q(0653) => [
- q(Aguano),
+ q(Obokuitai),
],
q(0654) => [
- q(Legbo),
+ q(Aguano),
],
q(0655) => [
- q(Agatu),
+ q(Legbo),
],
q(0656) => [
- q(Agarabi),
+ q(Agatu),
],
q(0657) => [
- q(Angal),
+ q(Agarabi),
],
q(0658) => [
- q(Arguni),
+ q(Angal),
],
q(0659) => [
- q(Angor),
+ q(Arguni),
],
q(0660) => [
- q(Ngelima),
+ q(Angor),
],
q(0661) => [
- q(Agariya),
+ q(Ngelima),
],
q(0662) => [
- q(Argobba),
+ q(Agariya),
],
q(0663) => [
- q(Isarog Agta),
+ q(Argobba),
],
q(0664) => [
- q(Fembe),
+ q(Isarog Agta),
],
q(0665) => [
- q(Angaataha),
+ q(Fembe),
],
q(0666) => [
- q(Agutaynen),
+ q(Angaataha),
],
q(0667) => [
- q(Tainae),
+ q(Agutaynen),
],
q(0668) => [
- q(Aghem),
+ q(Tainae),
],
q(0669) => [
- q(Aguaruna),
+ q(Aghem),
],
q(0670) => [
- q(Esimbi),
+ q(Aguaruna),
],
q(0671) => [
- q(Central Cagayan Agta),
+ q(Esimbi),
],
q(0672) => [
- q(Aguacateco),
+ q(Central Cagayan Agta),
],
q(0673) => [
- q(Remontado Dumagat),
+ q(Aguacateco),
],
q(0674) => [
- q(Kahua),
+ q(Remontado Dumagat),
],
q(0675) => [
- q(Aghul),
+ q(Kahua),
],
q(0676) => [
- q(Southern Alta),
+ q(Aghul),
],
q(0677) => [
- q(Mt. Iriga Agta),
+ q(Southern Alta),
],
q(0678) => [
- q(Ahanta),
+ q(Mt. Iriga Agta),
],
q(0679) => [
- q(Axamb),
+ q(Ahanta),
],
q(0680) => [
- q(Qimant),
+ q(Axamb),
],
q(0681) => [
- q(Aghu),
+ q(Qimant),
],
q(0682) => [
- q(Tiagbamrin Aizi),
+ q(Aghu),
],
q(0683) => [
- q(Akha),
+ q(Tiagbamrin Aizi),
],
q(0684) => [
- q(Igo),
+ q(Akha),
],
q(0685) => [
- q(Mobumrin Aizi),
+ q(Igo),
],
q(0686) => [
- q(Ahan),
+ q(Mobumrin Aizi),
],
q(0687) => [
- q(Ahom),
+ q(Ahan),
],
q(0688) => [
- q(Aproumu Aizi),
+ q(Ahom),
],
q(0689) => [
- q(Ahirani),
+ q(Aproumu Aizi),
],
q(0690) => [
- q(Ashe),
+ q(Ahirani),
],
q(0691) => [
- q(Ahtena),
+ q(Ashe),
],
q(0692) => [
- q(Arosi),
+ q(Ahtena),
],
q(0693) => [
- q(Ainu (China)),
+ q(Arosi),
],
q(0694) => [
- q(Ainbai),
+ q(Ainu (China)),
],
q(0695) => [
- q(Alngith),
+ q(Ainbai),
],
q(0696) => [
- q(Amara),
+ q(Alngith),
],
q(0697) => [
- q(Agi),
+ q(Amara),
],
q(0698) => [
- q(Antigua and Barbuda Creole English),
+ q(Agi),
],
q(0699) => [
- q(Ai-Cham),
+ q(Antigua and Barbuda Creole English),
],
q(0700) => [
- q(Assyrian Neo-Aramaic),
+ q(Ai-Cham),
],
q(0701) => [
- q(Lishanid Noshan),
+ q(Assyrian Neo-Aramaic),
],
q(0702) => [
- q(Ake),
+ q(Lishanid Noshan),
],
q(0703) => [
- q(Aimele),
+ q(Ake),
],
q(0704) => [
- q(Aimol),
+ q(Aimele),
],
q(0705) => [
- q(Aiton),
+ q(Aimol),
],
q(0706) => [
- q(Burumakok),
+ q(Aiton),
],
q(0707) => [
- q(Aimaq),
+ q(Burumakok),
],
q(0708) => [
- q(Airoran),
+ q(Aimaq),
],
q(0709) => [
- q(Nataoran Amis),
+ q(Airoran),
],
q(0710) => [
- q(Arikem),
+ q(Nataoran Amis),
],
q(0711) => [
- q(Aari),
+ q(Arikem),
],
q(0712) => [
- q(Aighon),
+ q(Aari),
],
q(0713) => [
- q(Ali),
+ q(Aighon),
],
q(0714) => [
- q(Aja (Sudan)),
+ q(Ali),
],
q(0715) => [
- q(Aja (Benin)),
+ q(Aja (Sudan)),
],
q(0716) => [
- q(Ajie),
+ q(Aja (Benin)),
],
q(0717) => [
- q(South Levantine Arabic),
+ q(Ajie),
],
q(0718) => [
- q(Judeo-Tunisian Arabic),
+ q(Andajin),
],
q(0719) => [
- q(Judeo-Moroccan Arabic),
+ q(South Levantine Arabic),
],
q(0720) => [
- q(Ajawa),
+ q(Judeo-Tunisian Arabic),
],
q(0721) => [
- q(Amri Karbi),
+ q(Judeo-Moroccan Arabic),
],
q(0722) => [
- q(Batak Angkola),
+ q(Ajawa),
],
q(0723) => [
- q(Mpur),
+ q(Amri Karbi),
],
q(0724) => [
- q(Ukpet-Ehom),
+ q(Batak Angkola),
],
q(0725) => [
- q(Akawaio),
+ q(Mpur),
],
q(0726) => [
- q(Akpa),
+ q(Ukpet-Ehom),
],
q(0727) => [
- q(Anakalangu),
+ q(Akawaio),
],
q(0728) => [
- q(Angal Heneng),
+ q(Akpa),
],
q(0729) => [
- q(Aiome),
+ q(Anakalangu),
],
q(0730) => [
- q(Aka-Jeru),
+ q(Angal Heneng),
],
q(0731) => [
- q(Aklanon),
+ q(Aiome),
],
q(0732) => [
- q(Aka-Bo),
+ q(Aka-Jeru),
],
q(0733) => [
- q(Akurio),
+ q(Aklanon),
],
q(0734) => [
- q(Siwu),
+ q(Aka-Bo),
],
q(0735) => [
- q(Ak),
+ q(Akurio),
],
q(0736) => [
- q(Araki),
+ q(Siwu),
],
q(0737) => [
- q(Akaselem),
+ q(Ak),
],
q(0738) => [
- q(Akolet),
+ q(Araki),
],
q(0739) => [
- q(Akum),
+ q(Akaselem),
],
q(0740) => [
- q(Akhvakh),
+ q(Akolet),
],
q(0741) => [
- q(Akwa),
+ q(Akum),
],
q(0742) => [
- q(Aka-Kede),
+ q(Akhvakh),
],
q(0743) => [
- q(Aka-Kol),
+ q(Akwa),
],
q(0744) => [
- q(Alabama),
+ q(Aka-Kede),
],
q(0745) => [
- q(Alago),
+ q(Aka-Kol),
],
q(0746) => [
- q(Qawasqar),
+ q(Alabama),
],
q(0747) => [
- q(Alladian),
+ q(Alago),
],
q(0748) => [
- q(Alege),
+ q(Qawasqar),
],
q(0749) => [
- q(Alawa),
+ q(Alladian),
],
q(0750) => [
- q(Amaimon),
+ q(Alege),
],
q(0751) => [
- q(Alangan),
+ q(Alawa),
],
q(0752) => [
- q(Alak),
+ q(Amaimon),
],
q(0753) => [
- q(Allar),
+ q(Alangan),
],
q(0754) => [
- q(Amblong),
+ q(Alak),
],
q(0755) => [
- q(Gheg Albanian),
+ q(Allar),
],
q(0756) => [
- q(Larike-Wakasihu),
+ q(Amblong),
],
q(0757) => [
- q(Alune),
+ q(Gheg Albanian),
],
q(0758) => [
- q(Algonquin),
+ q(Larike-Wakasihu),
],
q(0759) => [
- q(Alutor),
+ q(Alune),
],
q(0760) => [
- q(Tosk Albanian),
+ q(Algonquin),
],
q(0761) => [
- q('Are'are),
+ q(Alutor),
],
q(0762) => [
- q(Alaba-K'abeena),
- q(Wanbasana),
+ q(Tosk Albanian),
],
q(0763) => [
- q(Amol),
+ q('Are'are),
],
q(0764) => [
- q(Alyawarr),
+ q(Alaba-K'abeena),
+ q(Wanbasana),
],
q(0765) => [
- q(Alur),
+ q(Amol),
],
q(0766) => [
- q(Amanaye),
+ q(Alyawarr),
],
q(0767) => [
- q(Ambo),
+ q(Alur),
],
q(0768) => [
- q(Amahuaca),
+ q(Amanaye),
],
q(0769) => [
- q(Yanesha'),
+ q(Ambo),
],
q(0770) => [
- q(Hamer-Banna),
+ q(Amahuaca),
],
q(0771) => [
- q(Amarag),
+ q(Yanesha'),
],
q(0772) => [
- q(Amis),
+ q(Hamer-Banna),
],
q(0773) => [
- q(Amdang),
+ q(Amurdak),
],
q(0774) => [
- q(Ambai),
+ q(Amis),
],
q(0775) => [
- q(War-Jaintia),
+ q(Amdang),
],
q(0776) => [
- q(Ama (Papua New Guinea)),
+ q(Ambai),
],
q(0777) => [
- q(Amanab),
+ q(War-Jaintia),
],
q(0778) => [
- q(Amo),
+ q(Ama (Papua New Guinea)),
],
q(0779) => [
- q(Alamblak),
+ q(Amanab),
],
q(0780) => [
- q(Amahai),
+ q(Amo),
],
q(0781) => [
- q(Amarakaeri),
+ q(Alamblak),
],
q(0782) => [
- q(Southern Amami-Oshima),
+ q(Amahai),
],
q(0783) => [
- q(Amto),
+ q(Amarakaeri),
],
q(0784) => [
- q(Guerrero Amuzgo),
+ q(Southern Amami-Oshima),
],
q(0785) => [
- q(Ambelau),
+ q(Amto),
],
q(0786) => [
- q(Western Neo-Aramaic),
+ q(Guerrero Amuzgo),
],
q(0787) => [
- q(Anmatyerre),
+ q(Ambelau),
],
q(0788) => [
- q(Ami),
+ q(Western Neo-Aramaic),
],
q(0789) => [
- q(Atampaya),
+ q(Anmatyerre),
],
q(0790) => [
- q(Andaqui),
+ q(Ami),
],
q(0791) => [
- q(Andoa),
+ q(Atampaya),
],
q(0792) => [
- q(Ngas),
+ q(Andaqui),
],
q(0793) => [
- q(Ansus),
+ q(Andoa),
],
q(0794) => [
- q(Xaracuu),
+ q(Ngas),
],
q(0795) => [
- q(Animere),
+ q(Ansus),
],
q(0796) => [
- q(Nend),
+ q(Xaracuu),
],
q(0797) => [
- q(Andi),
+ q(Animere),
],
q(0798) => [
- q(Anor),
+ q(Nend),
],
q(0799) => [
- q(Goemai),
+ q(Andi),
],
q(0800) => [
- q(Anu),
+ q(Anor),
],
q(0801) => [
- q(Anal),
+ q(Goemai),
],
q(0802) => [
- q(Obolo),
+ q(Anu-Hkongso Chin),
],
q(0803) => [
- q(Andoque),
+ q(Anal),
],
q(0804) => [
- q(Jarawa (India)),
+ q(Obolo),
],
q(0805) => [
- q(Andh),
+ q(Andoque),
],
q(0806) => [
- q(Anserma),
+ q(Jarawa (India)),
],
q(0807) => [
- q(Antakarinya),
+ q(Andh),
],
q(0808) => [
- q(Anuak),
+ q(Anserma),
],
q(0809) => [
- q(Denya),
+ q(Antakarinya),
],
q(0810) => [
- q(Anaang),
+ q(Anuak),
],
q(0811) => [
- q(Andra-Hus),
+ q(Denya),
],
q(0812) => [
- q(Anyin),
+ q(Anaang),
],
q(0813) => [
- q(Anem),
+ q(Andra-Hus),
],
q(0814) => [
- q(Angolar),
+ q(Anyin),
],
q(0815) => [
- q(Abom),
+ q(Anem),
],
q(0816) => [
- q(Pemon),
+ q(Angolar),
],
q(0817) => [
- q(Andarum),
+ q(Abom),
],
q(0818) => [
- q(Angal Enen),
+ q(Pemon),
],
q(0819) => [
- q(Bragat),
+ q(Andarum),
],
q(0820) => [
- q(Angoram),
+ q(Angal Enen),
],
q(0821) => [
- q(Arma),
+ q(Bragat),
],
q(0822) => [
- q(Anindilyakwa),
+ q(Angoram),
],
q(0823) => [
- q(Mufian),
+ q(Arma),
],
q(0824) => [
- q(Arho),
+ q(Anindilyakwa),
],
q(0825) => [
- q(Alor),
+ q(Mufian),
],
q(0826) => [
- q(Omie),
+ q(Arho),
],
q(0827) => [
- q(Bumbita Arapesh),
+ q(Alor),
],
q(0828) => [
- q(Aore),
+ q(Omie),
],
q(0829) => [
- q(Taikat),
+ q(Bumbita Arapesh),
],
q(0830) => [
- q(A'tong),
+ q(Aore),
],
q(0831) => [
- q(Atorada),
+ q(Taikat),
],
q(0832) => [
- q(Uab Meto),
+ q(A'tong),
],
q(0833) => [
- q(Sa'a),
+ q(A'ou),
],
q(0834) => [
- q(North Levantine Arabic),
+ q(Atorada),
],
q(0835) => [
- q(Sudanese Arabic),
+ q(Uab Meto),
],
q(0836) => [
- q(Bukiyip),
+ q(Sa'a),
],
q(0837) => [
- q(Pahanan Agta),
+ q(North Levantine Arabic),
],
q(0838) => [
- q(Ampanang),
+ q(Sudanese Arabic),
],
q(0839) => [
- q(Athpariya),
+ q(Bukiyip),
],
q(0840) => [
- q(Apiaka),
+ q(Pahanan Agta),
],
q(0841) => [
- q(Jicarilla Apache),
+ q(Ampanang),
],
q(0842) => [
- q(Kiowa Apache),
+ q(Athpariya),
],
q(0843) => [
- q(Lipan Apache),
+ q(Apiaka),
],
q(0844) => [
- q(Mescalero-Chiricahua Apache),
+ q(Jicarilla Apache),
],
q(0845) => [
- q(Apinaye),
+ q(Kiowa Apache),
],
q(0846) => [
- q(Ambul),
+ q(Lipan Apache),
],
q(0847) => [
- q(Apma),
+ q(Mescalero-Chiricahua Apache),
],
q(0848) => [
- q(A-Pucikwar),
+ q(Apinaye),
],
q(0849) => [
- q(Arop-Lokep),
+ q(Ambul),
],
q(0850) => [
- q(Arop-Sissano),
+ q(Apma),
],
q(0851) => [
- q(Apatani),
+ q(A-Pucikwar),
],
q(0852) => [
- q(Apurina),
+ q(Arop-Lokep),
],
q(0853) => [
- q(Alapmunte),
+ q(Arop-Sissano),
],
q(0854) => [
- q(Western Apache),
+ q(Apatani),
],
q(0855) => [
- q(Aputai),
+ q(Apurina),
],
q(0856) => [
- q(Apalai),
+ q(Alapmunte),
],
q(0857) => [
- q(Safeyoka),
+ q(Western Apache),
],
q(0858) => [
- q(Archi),
+ q(Aputai),
],
q(0859) => [
- q(Ampari Dogon),
+ q(Apalai),
],
q(0860) => [
- q(Arigidi),
+ q(Safeyoka),
],
q(0861) => [
- q(Atohwaim),
+ q(Archi),
],
q(0862) => [
- q(Northern Alta),
+ q(Ampari Dogon),
],
q(0863) => [
- q(Atakapa),
+ q(Arigidi),
],
q(0864) => [
- q(Arha),
+ q(Atohwaim),
],
q(0865) => [
- q(Akuntsu),
+ q(Northern Alta),
],
q(0866) => [
- q(Standard Arabic),
+ q(Atakapa),
],
q(0867) => [
- q(Arabana),
+ q(Arha),
],
q(0868) => [
- q(Western Arrarnta),
+ q(Akuntsu),
],
q(0869) => [
- q(Arhuaco),
+ q(Standard Arabic),
],
q(0870) => [
- q(Arikara),
+ q(Arabana),
],
q(0871) => [
- q(Arapaso),
+ q(Western Arrarnta),
],
q(0872) => [
- q(Arikapu),
+ q(Arhuaco),
],
q(0873) => [
- q(Arabela),
+ q(Arikara),
],
q(0874) => [
- q(Araona),
+ q(Arapaso),
],
q(0875) => [
- q(Algerian Arabic),
+ q(Arikapu),
],
q(0876) => [
- q(Karo (Brazil)),
+ q(Arabela),
],
q(0877) => [
- q(Najdi Arabic),
+ q(Araona),
],
q(0878) => [
- q(Arua (Amazonas State)),
- q(Arawa),
+ q(Algerian Arabic),
],
q(0879) => [
- q(Arbore),
+ q(Karo (Brazil)),
],
q(0880) => [
- q(Arua (Rodonia State)),
+ q(Najdi Arabic),
],
q(0881) => [
- q(Moroccan Arabic),
+ q(Arua (Amazonas State)),
+ q(Arawa),
],
q(0882) => [
- q(Egyptian Arabic),
+ q(Arbore),
],
q(0883) => [
- q(Asu (Tanzania)),
+ q(Arua (Rodonia State)),
],
q(0884) => [
- q(Assiniboine),
+ q(Moroccan Arabic),
],
q(0885) => [
- q(Casuarina Coast Asmat),
+ q(Egyptian Arabic),
],
q(0886) => [
- q(Asas),
+ q(Asu (Tanzania)),
],
q(0887) => [
- q(American Sign Language),
+ q(Assiniboine),
],
q(0888) => [
- q(Australian Sign Language),
+ q(Casuarina Coast Asmat),
],
q(0889) => [
- q(Cishingini),
+ q(Asas),
],
q(0890) => [
- q(Abishira),
+ q(American Sign Language),
],
q(0891) => [
- q(Buruwai),
+ q(Australian Sign Language),
],
q(0892) => [
- q(Nsari),
+ q(Cishingini),
],
q(0893) => [
- q(Ashkun),
+ q(Abishira),
],
q(0894) => [
- q(Asilulu),
+ q(Buruwai),
],
q(0895) => [
- q(Xingu Asurini),
+ q(Nsari),
],
q(0896) => [
- q(Dano),
+ q(Ashkun),
],
q(0897) => [
- q(Algerian Sign Language),
+ q(Asilulu),
],
q(0898) => [
- q(Austrian Sign Language),
+ q(Xingu Asurini),
],
q(0899) => [
- q(Asuri),
+ q(Dano),
],
q(0900) => [
- q(Ipulo),
+ q(Algerian Sign Language),
],
q(0901) => [
- q(Tocantins Asurini),
+ q(Austrian Sign Language),
],
q(0902) => [
- q(Asoa),
+ q(Asuri),
],
q(0903) => [
- q(Australian Aborigines Sign Language),
+ q(Ipulo),
],
q(0904) => [
- q(Muratayak),
+ q(Tocantins Asurini),
],
q(0905) => [
- q(Yaosakor Asmat),
+ q(Asoa),
],
q(0906) => [
- q(As),
+ q(Australian Aborigines Sign Language),
],
q(0907) => [
- q(Pele-Ata),
+ q(Muratayak),
],
q(0908) => [
- q(Zaiwa),
+ q(Yaosakor Asmat),
],
q(0909) => [
- q(Atsahuaca),
+ q(As),
],
q(0910) => [
- q(Ata Manobo),
+ q(Pele-Ata),
],
q(0911) => [
- q(Atemble),
+ q(Zaiwa),
],
q(0912) => [
- q(Ivbie North-Okpela-Arhe),
+ q(Atsahuaca),
],
q(0913) => [
- q(Attie),
+ q(Ata Manobo),
],
q(0914) => [
- q(Atikamekw),
+ q(Atemble),
],
q(0915) => [
- q(Ati),
+ q(Ivbie North-Okpela-Arhe),
],
q(0916) => [
- q(Mt. Iraya Agta),
+ q(Attie),
],
q(0917) => [
- q(Ata),
+ q(Atikamekw),
],
q(0918) => [
- q(Ashtiani),
+ q(Ati),
],
q(0919) => [
- q(Atong),
+ q(Mt. Iraya Agta),
],
q(0920) => [
- q(Pudtol Atta),
+ q(Ata),
],
q(0921) => [
- q(Aralle-Tabulahan),
+ q(Ashtiani),
],
q(0922) => [
- q(Waimiri-Atroari),
+ q(Atong),
],
q(0923) => [
- q(Gros Ventre),
+ q(Pudtol Atta),
],
q(0924) => [
- q(Pamplona Atta),
+ q(Aralle-Tabulahan),
],
q(0925) => [
- q(Reel),
+ q(Waimiri-Atroari),
],
q(0926) => [
- q(Northern Altai),
+ q(Gros Ventre),
],
q(0927) => [
- q(Atsugewi),
+ q(Pamplona Atta),
],
q(0928) => [
- q(Arutani),
+ q(Reel),
],
q(0929) => [
- q(Aneityum),
+ q(Northern Altai),
],
q(0930) => [
- q(Arta),
+ q(Atsugewi),
],
q(0931) => [
- q(Asumboa),
+ q(Arutani),
],
q(0932) => [
- q(Alugu),
+ q(Aneityum),
],
q(0933) => [
- q(Waorani),
+ q(Arta),
],
q(0934) => [
- q(Anuta),
+ q(Asumboa),
],
q(0935) => [
- q(=/Kx'au//'ein),
+ q(Alugu),
],
q(0936) => [
- q(Aguna),
+ q(Waorani),
],
q(0937) => [
- q(Aushi),
+ q(Anuta),
],
q(0938) => [
- q(Anuki),
+ q(=/Kx'au//'ein),
],
q(0939) => [
- q(Awjilah),
+ q(Aguna),
],
q(0940) => [
- q(Heyo),
+ q(Aushi),
],
q(0941) => [
- q(Aulua),
+ q(Anuki),
],
q(0942) => [
- q(Asu (Nigeria)),
+ q(Awjilah),
],
q(0943) => [
- q(Molmo One),
+ q(Heyo),
],
q(0944) => [
- q(Auyokawa),
+ q(Aulua),
],
q(0945) => [
- q(Makayam),
+ q(Asu (Nigeria)),
],
q(0946) => [
- q(Anus),
- q(Korur),
+ q(Molmo One),
],
q(0947) => [
- q(Aruek),
+ q(Auyokawa),
],
q(0948) => [
- q(Austral),
+ q(Makayam),
],
q(0949) => [
- q(Auye),
+ q(Anus),
+ q(Korur),
],
q(0950) => [
- q(Awyi),
+ q(Aruek),
],
q(0951) => [
- q(Aura),
+ q(Austral),
],
q(0952) => [
- q(Awiyaana),
+ q(Auye),
],
q(0953) => [
- q(Uzbeki Arabic),
+ q(Awyi),
],
q(0954) => [
- q(Avau),
+ q(Aura),
],
q(0955) => [
- q(Alviri-Vidari),
+ q(Awiyaana),
],
q(0956) => [
- q(Avikam),
+ q(Uzbeki Arabic),
],
q(0957) => [
- q(Kotava),
+ q(Avau),
],
q(0958) => [
- q(Eastern Egyptian Bedawi Arabic),
+ q(Alviri-Vidari),
],
q(0959) => [
- q(Avatime),
+ q(Avikam),
],
q(0960) => [
- q(Agavotaguerra),
+ q(Kotava),
],
q(0961) => [
- q(Aushiri),
+ q(Eastern Egyptian Bedawi Arabic),
],
q(0962) => [
- q(Au),
+ q(Angkamuthi),
],
q(0963) => [
- q(Avokaya),
+ q(Avatime),
],
q(0964) => [
- q(Ava-Canoeiro),
+ q(Agavotaguerra),
],
q(0965) => [
- q(Awa (Papua New Guinea)),
+ q(Aushiri),
],
q(0966) => [
- q(Cicipu),
+ q(Au),
],
q(0967) => [
- q(Aweti),
+ q(Avokaya),
],
q(0968) => [
- q(Awbono),
+ q(Ava-Canoeiro),
],
q(0969) => [
- q(Aekyom),
+ q(Awa (Papua New Guinea)),
],
q(0970) => [
- q(Awabakal),
+ q(Cicipu),
],
q(0971) => [
- q(Arawum),
+ q(Aweti),
],
q(0972) => [
- q(Awngi),
+ q(Anguthimri),
],
q(0973) => [
- q(Awak),
+ q(Awbono),
],
q(0974) => [
- q(Awera),
+ q(Aekyom),
],
q(0975) => [
- q(South Awyu),
+ q(Awabakal),
],
q(0976) => [
- q(Arawete),
+ q(Arawum),
],
q(0977) => [
- q(Central Awyu),
+ q(Awngi),
],
q(0978) => [
- q(Jair Awyu),
+ q(Awak),
],
q(0979) => [
- q(Awun),
+ q(Awera),
],
q(0980) => [
- q(Awara),
+ q(South Awyu),
],
q(0981) => [
- q(Edera Awyu),
+ q(Arawete),
],
q(0982) => [
- q(Abipon),
+ q(Central Awyu),
],
q(0983) => [
- q(Mato Grosso Arara),
+ q(Jair Awyu),
],
q(0984) => [
- q(Yaka (Central African Republic)),
+ q(Awun),
],
q(0985) => [
- q(Middle Armenian),
+ q(Awara),
],
q(0986) => [
- q(Xaragure),
+ q(Edera Awyu),
],
q(0987) => [
- q(Awar),
+ q(Abipon),
],
q(0988) => [
- q(Ayizo Gbe),
+ q(Ayerrerenge),
],
q(0989) => [
- q(Southern Aymara),
+ q(Mato Grosso Arara),
],
q(0990) => [
- q(Ayabadhu),
+ q(Yaka (Central African Republic)),
],
q(0991) => [
- q(Ayere),
+ q(Middle Armenian),
],
q(0992) => [
- q(Ginyanga),
+ q(Xaragure),
],
q(0993) => [
- q(Hadrami Arabic),
+ q(Awar),
],
q(0994) => [
- q(Leyigha),
+ q(Ayizo Gbe),
],
q(0995) => [
- q(Akuku),
+ q(Southern Aymara),
],
q(0996) => [
- q(Libyan Arabic),
+ q(Ayabadhu),
],
q(0997) => [
- q(Sanaani Arabic),
+ q(Ayere),
],
q(0998) => [
- q(Ayoreo),
+ q(Ginyanga),
],
q(0999) => [
- q(North Mesopotamian Arabic),
+ q(Hadrami Arabic),
],
q(1000) => [
- q(Ayi (Papua New Guinea)),
+ q(Leyigha),
],
q(1001) => [
- q(Central Aymara),
+ q(Akuku),
],
q(1002) => [
- q(Sorsogon Ayta),
+ q(Libyan Arabic),
],
q(1003) => [
- q(Magbukun Ayta),
+ q(Sanaani Arabic),
],
q(1004) => [
- q(Ayu),
+ q(Ayoreo),
],
q(1005) => [
- q(Tayabas Ayta),
+ q(North Mesopotamian Arabic),
],
q(1006) => [
- q(Mai Brat),
+ q(Ayi (Papua New Guinea)),
],
q(1007) => [
- q(Azha),
+ q(Central Aymara),
],
q(1008) => [
- q(South Azerbaijani),
+ q(Sorsogon Ayta),
],
q(1009) => [
- q(San Pedro Amuzgos Amuzgo),
+ q(Magbukun Ayta),
],
q(1010) => [
- q(North Azerbaijani),
+ q(Ayu),
],
q(1011) => [
- q(Ipalapa Amuzgo),
+ q(Tayabas Ayta),
],
q(1012) => [
- q(Awing),
+ q(Mai Brat),
],
q(1013) => [
- q(Faire Atta),
+ q(Azha),
],
q(1014) => [
- q(Highland Puebla Nahuatl),
+ q(South Azerbaijani),
],
q(1015) => [
- q(Babatana),
+ q(Eastern Durango Nahuatl),
],
q(1016) => [
- q(Bainouk-Gunyuno),
+ q(San Pedro Amuzgos Amuzgo),
],
q(1017) => [
- q(Badui),
+ q(North Azerbaijani),
],
q(1018) => [
- q(Bare),
+ q(Ipalapa Amuzgo),
],
q(1019) => [
- q(Nubaca),
+ q(Western Durango Nahuatl),
],
q(1020) => [
- q(Tuki),
+ q(Awing),
],
q(1021) => [
- q(Bahamas Creole English),
+ q(Faire Atta),
],
q(1022) => [
- q(Barakai),
+ q(Highland Puebla Nahuatl),
],
q(1023) => [
- q(Waimaha),
+ q(Babatana),
],
q(1024) => [
- q(Bantawa),
+ q(Bainouk-Gunyuno),
],
q(1025) => [
- q(Bavarian),
+ q(Badui),
],
q(1026) => [
- q(Bada (Nigeria)),
+ q(Bare),
],
q(1027) => [
- q(Vengo),
+ q(Nubaca),
],
q(1028) => [
- q(Bambili-Bambui),
+ q(Tuki),
],
q(1029) => [
- q(Bamun),
+ q(Bahamas Creole English),
],
q(1030) => [
- q(Batuley),
+ q(Barakai),
],
q(1031) => [
- q(Tunen),
+ q(Waimaha),
],
q(1032) => [
- q(Baatonum),
+ q(Bantawa),
],
q(1033) => [
- q(Barai),
+ q(Bavarian),
],
q(1034) => [
- q(Batak Toba),
+ q(Bada (Nigeria)),
],
q(1035) => [
- q(Bau),
+ q(Vengo),
],
q(1036) => [
- q(Bangba),
+ q(Bambili-Bambui),
],
q(1037) => [
- q(Baibai),
+ q(Bamun),
],
q(1038) => [
- q(Barama),
+ q(Batuley),
],
q(1039) => [
- q(Bugan),
+ q(Baatonum),
],
q(1040) => [
- q(Barombi),
+ q(Barai),
],
q(1041) => [
- q(Ghomala'),
+ q(Batak Toba),
],
q(1042) => [
- q(Babanki),
+ q(Bau),
],
q(1043) => [
- q(Bats),
+ q(Bangba),
],
q(1044) => [
- q(Babango),
+ q(Baibai),
],
q(1045) => [
- q(Uneapa),
+ q(Barama),
],
q(1046) => [
- q(Northern Bobo Madare),
- q(Konabere),
+ q(Bugan),
],
q(1047) => [
- q(West Central Banda),
+ q(Barombi),
],
q(1048) => [
- q(Bamali),
+ q(Ghomala'),
],
q(1049) => [
- q(Girawa),
+ q(Babanki),
],
q(1050) => [
- q(Bakpinka),
+ q(Bats),
],
q(1051) => [
- q(Mburku),
+ q(Babango),
],
q(1052) => [
- q(Kulung (Nigeria)),
+ q(Uneapa),
],
q(1053) => [
- q(Karnai),
+ q(Northern Bobo Madare),
+ q(Konabere),
],
q(1054) => [
- q(Baba),
+ q(West Central Banda),
],
q(1055) => [
- q(Bubia),
+ q(Bamali),
],
q(1056) => [
- q(Befang),
+ q(Girawa),
],
q(1057) => [
- q(Babalia Creole Arabic),
+ q(Bakpinka),
],
q(1058) => [
- q(Central Bai),
+ q(Mburku),
],
q(1059) => [
- q(Bainouk-Samik),
+ q(Kulung (Nigeria)),
],
q(1060) => [
- q(Southern Balochi),
+ q(Karnai),
],
q(1061) => [
- q(North Babar),
+ q(Baba),
],
q(1062) => [
- q(Bamenyam),
+ q(Bubia),
],
q(1063) => [
- q(Bamu),
+ q(Befang),
],
q(1064) => [
- q(Baga Binari),
+ q(Babalia Creole Arabic),
],
q(1065) => [
- q(Bariai),
+ q(Central Bai),
],
q(1066) => [
- q(Baoule),
+ q(Bainouk-Samik),
],
q(1067) => [
- q(Bardi),
+ q(Southern Balochi),
],
q(1068) => [
- q(Bunaba),
+ q(North Babar),
],
q(1069) => [
- q(Central Bicolano),
+ q(Bamenyam),
],
q(1070) => [
- q(Bannoni),
+ q(Bamu),
],
q(1071) => [
- q(Bali (Nigeria)),
+ q(Baga Binari),
],
q(1072) => [
- q(Kaluli),
+ q(Bariai),
],
q(1073) => [
- q(Bali (Democratic Republic of Congo)),
+ q(Baoule),
],
q(1074) => [
- q(Bench),
+ q(Bardi),
],
q(1075) => [
- q(Babine),
+ q(Bunaba),
],
q(1076) => [
- q(Kohumono),
+ q(Central Bikol),
],
q(1077) => [
- q(Bendi),
+ q(Bannoni),
],
q(1078) => [
- q(Awad Bing),
+ q(Bali (Nigeria)),
],
q(1079) => [
- q(Shoo-Minda-Nye),
+ q(Kaluli),
],
q(1080) => [
- q(Bana),
+ q(Bali (Democratic Republic of Congo)),
],
q(1081) => [
- q(Bacama),
+ q(Bench),
],
q(1082) => [
- q(Bainouk-Gunyaamolo),
+ q(Babine),
],
q(1083) => [
- q(Bayot),
+ q(Kohumono),
],
q(1084) => [
- q(Basap),
+ q(Bendi),
],
q(1085) => [
- q(Embera-Baudo),
+ q(Awad Bing),
],
q(1086) => [
- q(Bunama),
+ q(Shoo-Minda-Nye),
],
q(1087) => [
- q(Bade),
+ q(Bana),
],
q(1088) => [
- q(Biage),
+ q(Bacama),
],
q(1089) => [
- q(Bonggi),
+ q(Bainouk-Gunyaamolo),
],
q(1090) => [
- q(Baka (Sudan)),
+ q(Bayot),
],
q(1091) => [
- q(Burun),
+ q(Basap),
],
q(1092) => [
- q(Bai),
+ q(Embera-Baudo),
],
q(1093) => [
- q(Budukh),
+ q(Bunama),
],
q(1094) => [
- q(Indonesian Bajau),
+ q(Bade),
],
q(1095) => [
- q(Buduma),
+ q(Biage),
],
q(1096) => [
- q(Baldemu),
+ q(Bonggi),
],
q(1097) => [
- q(Morom),
+ q(Baka (Sudan)),
],
q(1098) => [
- q(Bende),
+ q(Burun),
],
q(1099) => [
- q(Bahnar),
+ q(Bai),
],
q(1100) => [
- q(West Coast Bajau),
+ q(Budukh),
],
q(1101) => [
- q(Burunge),
+ q(Indonesian Bajau),
],
q(1102) => [
- q(Bokoto),
+ q(Buduma),
],
q(1103) => [
- q(Oroko),
+ q(Baldemu),
],
q(1104) => [
- q(Bodo Parja),
+ q(Morom),
],
q(1105) => [
- q(Baham),
+ q(Bende),
],
q(1106) => [
- q(Budong-Budong),
+ q(Bahnar),
],
q(1107) => [
- q(Bandjalang),
+ q(West Coast Bajau),
],
q(1108) => [
- q(Badeshi),
+ q(Burunge),
],
q(1109) => [
- q(Beaver),
+ q(Bokoto),
],
q(1110) => [
- q(Bebele),
+ q(Oroko),
],
q(1111) => [
- q(Iceve-Maci),
+ q(Bodo Parja),
],
q(1112) => [
- q(Bedoanas),
+ q(Baham),
],
q(1113) => [
- q(Byangsi),
+ q(Budong-Budong),
],
q(1114) => [
- q(Benabena),
+ q(Bandjalang),
],
q(1115) => [
- q(Belait),
+ q(Badeshi),
],
q(1116) => [
- q(Biali),
+ q(Beaver),
],
q(1117) => [
- q(Bekati'),
+ q(Bebele),
],
q(1118) => [
- q(Bebeli),
+ q(Iceve-Maci),
],
q(1119) => [
- q(Beami),
+ q(Bedoanas),
],
q(1120) => [
- q(Besoa),
+ q(Byangsi),
],
q(1121) => [
- q(Beembe),
+ q(Benabena),
],
q(1122) => [
- q(Besme),
+ q(Belait),
],
q(1123) => [
- q(Guiberoua Bete),
+ q(Biali),
],
q(1124) => [
- q(Blagar),
+ q(Bekati'),
],
q(1125) => [
- q(Daloa Bete),
+ q(Bebeli),
],
q(1126) => [
- q(Betawi),
+ q(Beami),
],
q(1127) => [
- q(Jur Modo),
+ q(Besoa),
],
q(1128) => [
- q(Beli (Papua New Guinea)),
+ q(Beembe),
],
q(1129) => [
- q(Bena (Tanzania)),
+ q(Besme),
],
q(1130) => [
- q(Bari),
+ q(Guiberoua Bete),
],
q(1131) => [
- q(Pauri Bareli),
+ q(Blagar),
],
q(1132) => [
- q(Northern Bai),
+ q(Daloa Bete),
],
q(1133) => [
- q(Bafut),
+ q(Betawi),
],
q(1134) => [
+ q(Jur Modo),
+ ],
+ q(1135) => [
+ q(Beli (Papua New Guinea)),
+ ],
+ q(1136) => [
+ q(Bena (Tanzania)),
+ ],
+ q(1137) => [
+ q(Bari),
+ ],
+ q(1138) => [
+ q(Pauri Bareli),
+ ],
+ q(1139) => [
+ q(Northern Bai),
+ ],
+ q(1140) => [
+ q(Bafut),
+ ],
+ q(1141) => [
q(Betaf),
q(Tena),
],
- q(1135) => [
+ q(1142) => [
q(Bofi),
],
- q(1136) => [
+ q(1143) => [
q(Busang Kayan),
],
- q(1137) => [
+ q(1144) => [
q(Blafe),
],
- q(1138) => [
+ q(1145) => [
q(British Sign Language),
],
- q(1139) => [
+ q(1146) => [
q(Bafanji),
],
- q(1140) => [
+ q(1147) => [
q(Ban Khor Sign Language),
],
- q(1141) => [
+ q(1148) => [
q(Banda-Ndele),
],
- q(1142) => [
+ q(1149) => [
q(Mmen),
],
- q(1143) => [
+ q(1150) => [
q(Bunak),
],
- q(1144) => [
+ q(1151) => [
q(Malba Birifor),
],
- q(1145) => [
+ q(1152) => [
q(Beba),
],
- q(1146) => [
+ q(1153) => [
q(Badaga),
],
- q(1147) => [
+ q(1154) => [
q(Bazigar),
],
- q(1148) => [
+ q(1155) => [
q(Southern Bai),
],
- q(1149) => [
+ q(1156) => [
q(Balti),
],
- q(1150) => [
+ q(1157) => [
q(Gahri),
],
- q(1151) => [
+ q(1158) => [
q(Bondo),
],
- q(1152) => [
+ q(1159) => [
q(Bantayanon),
],
- q(1153) => [
+ q(1160) => [
q(Bagheli),
],
- q(1154) => [
+ q(1161) => [
q(Mahasu Pahari),
],
- q(1155) => [
+ q(1162) => [
q(Gwamhi-Wuri),
],
- q(1156) => [
+ q(1163) => [
q(Bobongko),
],
- q(1157) => [
+ q(1164) => [
q(Haryanvi),
],
- q(1158) => [
+ q(1165) => [
q(Rathwi Bareli),
],
- q(1159) => [
+ q(1166) => [
q(Bauria),
],
- q(1160) => [
+ q(1167) => [
q(Bangandu),
],
- q(1161) => [
+ q(1168) => [
q(Bugun),
],
- q(1162) => [
+ q(1169) => [
q(Giangan),
],
- q(1163) => [
+ q(1170) => [
q(Bangolan),
],
- q(1164) => [
+ q(1171) => [
q(Bit),
q(Buxinhua),
],
- q(1165) => [
+ q(1172) => [
q(Bo (Laos)),
],
- q(1166) => [
+ q(1173) => [
q(Baga Mboteni),
],
- q(1167) => [
+ q(1174) => [
q(Western Balochi),
],
- q(1168) => [
+ q(1175) => [
q(Baga Koga),
],
- q(1169) => [
+ q(1176) => [
q(Eastern Balochi),
],
- q(1170) => [
+ q(1177) => [
q(Bagri),
],
- q(1171) => [
+ q(1178) => [
q(Bawm Chin),
],
- q(1172) => [
+ q(1179) => [
q(Tagabawa),
],
- q(1173) => [
+ q(1180) => [
q(Bughotu),
],
- q(1174) => [
+ q(1181) => [
q(Mbongno),
],
- q(1175) => [
+ q(1182) => [
q(Warkay-Bipim),
],
- q(1176) => [
+ q(1183) => [
q(Bhatri),
],
- q(1177) => [
+ q(1184) => [
q(Balkan Gagauz Turkish),
],
- q(1178) => [
+ q(1185) => [
q(Benggoi),
],
- q(1179) => [
+ q(1186) => [
q(Banggai),
],
- q(1180) => [
+ q(1187) => [
q(Bharia),
],
- q(1181) => [
+ q(1188) => [
q(Bhili),
],
- q(1182) => [
+ q(1189) => [
q(Biga),
],
- q(1183) => [
+ q(1190) => [
q(Bhadrawahi),
],
- q(1184) => [
+ q(1191) => [
q(Bhaya),
],
- q(1185) => [
+ q(1192) => [
q(Odiai),
],
- q(1186) => [
+ q(1193) => [
q(Binandere),
],
- q(1187) => [
+ q(1194) => [
q(Bukharic),
],
- q(1188) => [
+ q(1195) => [
q(Bhilali),
],
- q(1189) => [
+ q(1196) => [
q(Bahing),
],
- q(1190) => [
+ q(1197) => [
q(Bimin),
],
- q(1191) => [
+ q(1198) => [
q(Bathari),
],
- q(1192) => [
+ q(1199) => [
q(Bohtan Neo-Aramaic),
],
- q(1193) => [
+ q(1200) => [
q(Bima),
],
- q(1194) => [
+ q(1201) => [
q(Tukang Besi South),
],
- q(1195) => [
+ q(1202) => [
q(Bara Malagasy),
],
- q(1196) => [
+ q(1203) => [
q(Buwal),
],
- q(1197) => [
+ q(1204) => [
q(Bhattiyali),
],
- q(1198) => [
+ q(1205) => [
q(Bhunjia),
],
- q(1199) => [
+ q(1206) => [
q(Bahau),
],
- q(1200) => [
+ q(1207) => [
q(Biak),
],
- q(1201) => [
+ q(1208) => [
q(Bhalay),
],
- q(1202) => [
+ q(1209) => [
q(Bhele),
],
- q(1203) => [
+ q(1210) => [
q(Bada (Indonesia)),
],
- q(1204) => [
+ q(1211) => [
q(Badimaya),
],
- q(1205) => [
+ q(1212) => [
q(Bissa),
q(Bisa),
],
- q(1206) => [
+ q(1213) => [
q(Bikaru),
],
- q(1207) => [
+ q(1214) => [
q(Bidiyo),
],
- q(1208) => [
+ q(1215) => [
q(Bepour),
],
- q(1209) => [
+ q(1216) => [
q(Biafada),
],
- q(1210) => [
+ q(1217) => [
q(Biangai),
],
- q(1211) => [
+ q(1218) => [
q(Vaghat-Ya-Bijim-Legeri),
],
- q(1212) => [
+ q(1219) => [
q(Bile),
],
- q(1213) => [
+ q(1220) => [
q(Bimoba),
],
- q(1214) => [
+ q(1221) => [
q(Nai),
],
- q(1215) => [
+ q(1222) => [
q(Bila),
],
- q(1216) => [
+ q(1223) => [
q(Bipi),
],
- q(1217) => [
+ q(1224) => [
q(Bisorio),
],
- q(1218) => [
+ q(1225) => [
q(Berinomo),
],
- q(1219) => [
+ q(1226) => [
q(Biete),
],
- q(1220) => [
+ q(1227) => [
q(Southern Birifor),
],
- q(1221) => [
+ q(1228) => [
q(Kol (Cameroon)),
],
- q(1222) => [
+ q(1229) => [
q(Bijori),
],
- q(1223) => [
+ q(1230) => [
q(Birhor),
],
- q(1224) => [
+ q(1231) => [
q(Baloi),
],
- q(1225) => [
+ q(1232) => [
q(Budza),
],
- q(1226) => [
+ q(1233) => [
q(Banggarla),
],
- q(1227) => [
+ q(1234) => [
q(Bariji),
],
- q(1228) => [
- q(Bandjigali),
- ],
- q(1229) => [
+ q(1235) => [
q(Biao-Jiao Mien),
],
- q(1230) => [
+ q(1236) => [
q(Barzani Jewish Neo-Aramaic),
],
- q(1231) => [
+ q(1237) => [
q(Bidyogo),
],
- q(1232) => [
+ q(1238) => [
q(Bahinemo),
],
- q(1233) => [
+ q(1239) => [
q(Burji),
],
- q(1234) => [
+ q(1240) => [
q(Kanauji),
],
- q(1235) => [
+ q(1241) => [
q(Barok),
],
- q(1236) => [
+ q(1242) => [
q(Bulu (Papua New Guinea)),
],
- q(1237) => [
+ q(1243) => [
q(Bajelani),
],
- q(1238) => [
+ q(1244) => [
q(Banjar),
],
- q(1239) => [
+ q(1245) => [
q(Mid-Southern Banda),
],
- q(1240) => [
+ q(1246) => [
q(Binumarien),
],
- q(1241) => [
+ q(1247) => [
q(Bajan),
],
- q(1242) => [
+ q(1248) => [
q(Balanta-Ganja),
],
- q(1243) => [
+ q(1249) => [
q(Busuu),
],
- q(1244) => [
+ q(1250) => [
q(Bedjond),
],
- q(1245) => [
+ q(1251) => [
q(Bakwe),
],
- q(1246) => [
+ q(1252) => [
q(Banao Itneg),
],
- q(1247) => [
+ q(1253) => [
q(Bayali),
],
- q(1248) => [
+ q(1254) => [
q(Baruga),
],
- q(1249) => [
+ q(1255) => [
q(Kyak),
],
- q(1250) => [
+ q(1256) => [
q(Baka (Cameroon)),
],
- q(1251) => [
+ q(1257) => [
q(Binukid),
q(Talaandig),
],
- q(1252) => [
+ q(1258) => [
q(Beeke),
],
- q(1253) => [
+ q(1259) => [
q(Buraka),
],
- q(1254) => [
+ q(1260) => [
q(Bakoko),
],
- q(1255) => [
+ q(1261) => [
q(Baki),
],
- q(1256) => [
+ q(1262) => [
q(Pande),
],
- q(1257) => [
+ q(1263) => [
q(Brokskat),
],
- q(1258) => [
+ q(1264) => [
q(Berik),
],
- q(1259) => [
+ q(1265) => [
q(Kom (Cameroon)),
],
- q(1260) => [
+ q(1266) => [
q(Bukitan),
],
- q(1261) => [
+ q(1267) => [
q(Kwa'),
],
- q(1262) => [
+ q(1268) => [
q(Boko (Democratic Republic of Congo)),
],
- q(1263) => [
+ q(1269) => [
q(Bakairi),
],
- q(1264) => [
+ q(1270) => [
q(Bakumpai),
],
- q(1265) => [
+ q(1271) => [
q(Northern Sorsoganon),
],
- q(1266) => [
+ q(1272) => [
q(Boloki),
],
- q(1267) => [
+ q(1273) => [
q(Buhid),
],
- q(1268) => [
+ q(1274) => [
q(Bekwarra),
],
- q(1269) => [
+ q(1275) => [
q(Bekwel),
],
- q(1270) => [
+ q(1276) => [
q(Baikeno),
],
- q(1271) => [
+ q(1277) => [
q(Bokyi),
],
- q(1272) => [
+ q(1278) => [
q(Bungku),
],
- q(1273) => [
+ q(1279) => [
q(Bilua),
],
- q(1274) => [
+ q(1280) => [
q(Bella Coola),
],
- q(1275) => [
+ q(1281) => [
q(Bolango),
],
- q(1276) => [
+ q(1282) => [
q(Balanta-Kentohe),
],
- q(1277) => [
+ q(1283) => [
q(Buol),
],
- q(1278) => [
+ q(1284) => [
q(Balau),
],
- q(1279) => [
+ q(1285) => [
q(Kuwaa),
],
- q(1280) => [
+ q(1286) => [
q(Bolia),
],
- q(1281) => [
+ q(1287) => [
q(Bolongan),
],
- q(1282) => [
+ q(1288) => [
q(Pa'o Karen),
+ q(Pa'O),
],
- q(1283) => [
+ q(1289) => [
q(Biloxi),
],
- q(1284) => [
+ q(1290) => [
q(Beli (Sudan)),
],
- q(1285) => [
- q(Southern Catanduanes Bicolano),
+ q(1291) => [
+ q(Southern Catanduanes Bikol),
],
- q(1286) => [
+ q(1292) => [
q(Anii),
],
- q(1287) => [
+ q(1293) => [
q(Blablanga),
],
- q(1288) => [
+ q(1294) => [
q(Baluan-Pam),
],
- q(1289) => [
+ q(1295) => [
q(Blang),
],
- q(1290) => [
+ q(1296) => [
q(Balaesang),
],
- q(1291) => [
+ q(1297) => [
q(Tai Dam),
],
- q(1292) => [
+ q(1298) => [
q(Bolo),
],
- q(1293) => [
+ q(1299) => [
q(Balangao),
],
- q(1294) => [
+ q(1300) => [
q(Mag-Indi Ayta),
],
- q(1295) => [
+ q(1301) => [
q(Notre),
],
- q(1296) => [
+ q(1302) => [
q(Balantak),
],
- q(1297) => [
+ q(1303) => [
q(Lame),
],
- q(1298) => [
+ q(1304) => [
q(Bembe),
],
- q(1299) => [
+ q(1305) => [
q(Biem),
],
- q(1300) => [
+ q(1306) => [
q(Baga Manduri),
],
- q(1301) => [
+ q(1307) => [
q(Limassa),
],
- q(1302) => [
+ q(1308) => [
q(Bom),
],
- q(1303) => [
+ q(1309) => [
q(Bamwe),
],
- q(1304) => [
+ q(1310) => [
q(Kein),
],
- q(1305) => [
+ q(1311) => [
q(Bagirmi),
],
- q(1306) => [
+ q(1312) => [
q(Bote-Majhi),
],
- q(1307) => [
+ q(1313) => [
q(Ghayavi),
],
- q(1308) => [
+ q(1314) => [
q(Bomboli),
],
- q(1309) => [
+ q(1315) => [
q(Northern Betsimisaraka Malagasy),
],
- q(1310) => [
+ q(1316) => [
q(Bina (Papua New Guinea)),
],
- q(1311) => [
+ q(1317) => [
q(Bambalang),
],
- q(1312) => [
+ q(1318) => [
q(Bulgebi),
],
- q(1313) => [
+ q(1319) => [
q(Bomu),
],
- q(1314) => [
+ q(1320) => [
q(Muinane),
],
- q(1315) => [
+ q(1321) => [
q(Bilma Kanuri),
],
- q(1316) => [
+ q(1322) => [
q(Biao Mon),
],
- q(1317) => [
+ q(1323) => [
q(Somba-Siawari),
],
- q(1318) => [
+ q(1324) => [
q(Bum),
],
- q(1319) => [
+ q(1325) => [
q(Bomwali),
],
- q(1320) => [
+ q(1326) => [
q(Baimak),
],
- q(1321) => [
+ q(1327) => [
q(Bemba (Democratic Republic of Congo)),
],
- q(1322) => [
+ q(1328) => [
q(Baramu),
],
- q(1323) => [
+ q(1329) => [
q(Bonerate),
],
- q(1324) => [
+ q(1330) => [
q(Bookan),
],
- q(1325) => [
+ q(1331) => [
q(Bontok),
],
- q(1326) => [
+ q(1332) => [
q(Banda (Indonesia)),
],
- q(1327) => [
+ q(1333) => [
q(Bintauna),
],
- q(1328) => [
+ q(1334) => [
q(Masiwang),
],
- q(1329) => [
+ q(1335) => [
q(Benga),
],
- q(1330) => [
+ q(1336) => [
q(Bangi),
],
- q(1331) => [
+ q(1337) => [
q(Eastern Tawbuid),
],
- q(1332) => [
+ q(1338) => [
q(Bierebo),
],
- q(1333) => [
+ q(1339) => [
q(Boon),
],
- q(1334) => [
+ q(1340) => [
q(Batanga),
],
- q(1335) => [
+ q(1341) => [
q(Bunun),
],
- q(1336) => [
+ q(1342) => [
q(Bantoanon),
],
- q(1337) => [
+ q(1343) => [
q(Bola),
],
- q(1338) => [
+ q(1344) => [
q(Bantik),
],
- q(1339) => [
+ q(1345) => [
q(Butmas-Tur),
],
- q(1340) => [
+ q(1346) => [
q(Bundeli),
],
- q(1341) => [
+ q(1347) => [
q(Bentong),
],
- q(1342) => [
+ q(1348) => [
q(Bonerif),
q(Beneraf),
q(Edwas),
],
- q(1343) => [
+ q(1349) => [
q(Bisis),
],
- q(1344) => [
+ q(1350) => [
q(Bangubangu),
],
- q(1345) => [
+ q(1351) => [
q(Bintulu),
],
- q(1346) => [
+ q(1352) => [
q(Beezen),
],
- q(1347) => [
+ q(1353) => [
q(Bora),
],
- q(1348) => [
+ q(1354) => [
q(Aweer),
],
- q(1349) => [
+ q(1355) => [
q(Mundabli),
],
- q(1350) => [
+ q(1356) => [
q(Bolon),
],
- q(1351) => [
+ q(1357) => [
q(Bamako Sign Language),
],
- q(1352) => [
+ q(1358) => [
q(Boma),
],
- q(1353) => [
+ q(1359) => [
q(Barbareno),
],
- q(1354) => [
+ q(1360) => [
q(Anjam),
],
- q(1355) => [
+ q(1361) => [
q(Bonjo),
],
- q(1356) => [
+ q(1362) => [
q(Bole),
],
- q(1357) => [
+ q(1363) => [
q(Berom),
],
- q(1358) => [
+ q(1364) => [
q(Bine),
],
- q(1359) => [
+ q(1365) => [
q(Tiemacewe Bozo),
],
- q(1360) => [
+ q(1366) => [
q(Bonkiman),
],
- q(1361) => [
+ q(1367) => [
q(Bogaya),
],
- q(1362) => [
+ q(1368) => [
q(Bororo),
],
- q(1363) => [
+ q(1369) => [
q(Bongo),
],
- q(1364) => [
+ q(1370) => [
q(Bondei),
],
- q(1365) => [
+ q(1371) => [
q(Tuwuli),
],
- q(1366) => [
+ q(1372) => [
q(Rema),
],
- q(1367) => [
+ q(1373) => [
q(Buamu),
],
- q(1368) => [
+ q(1374) => [
q(Bodo (Central African Republic)),
],
- q(1369) => [
+ q(1375) => [
q(Tieyaxo Bozo),
],
- q(1370) => [
+ q(1376) => [
q(Dakaka),
],
- q(1371) => [
+ q(1377) => [
q(Barbacoas),
],
- q(1372) => [
+ q(1378) => [
q(Banda-Banda),
],
- q(1373) => [
+ q(1379) => [
q(Bonggo),
],
- q(1374) => [
+ q(1380) => [
q(Botlikh),
],
- q(1375) => [
+ q(1381) => [
q(Bagupi),
],
- q(1376) => [
+ q(1382) => [
q(Binji),
],
- q(1377) => [
+ q(1383) => [
q(Orowe),
],
- q(1378) => [
+ q(1384) => [
q(Broome Pearling Lugger Pidgin),
],
- q(1379) => [
+ q(1385) => [
q(Biyom),
],
- q(1380) => [
+ q(1386) => [
q(Dzao Min),
],
- q(1381) => [
+ q(1387) => [
q(Anasi),
],
- q(1382) => [
+ q(1388) => [
q(Kaure),
],
- q(1383) => [
+ q(1389) => [
q(Banda Malay),
],
- q(1384) => [
+ q(1390) => [
q(Koronadal Blaan),
],
- q(1385) => [
+ q(1391) => [
q(Sarangani Blaan),
],
- q(1386) => [
+ q(1392) => [
q(Barrow Point),
],
- q(1387) => [
+ q(1393) => [
q(Bongu),
],
- q(1388) => [
+ q(1394) => [
q(Bian Marind),
],
- q(1389) => [
+ q(1395) => [
q(Bo (Papua New Guinea)),
],
- q(1390) => [
+ q(1396) => [
q(Palya Bareli),
],
- q(1391) => [
+ q(1397) => [
q(Bishnupriya),
],
- q(1392) => [
+ q(1398) => [
q(Bilba),
],
- q(1393) => [
+ q(1399) => [
q(Tchumbuli),
],
- q(1394) => [
+ q(1400) => [
q(Bagusa),
],
- q(1395) => [
+ q(1401) => [
q(Boko (Benin)),
],
- q(1396) => [
+ q(1402) => [
q(Bung),
],
- q(1397) => [
+ q(1403) => [
q(Baga Kaloum),
],
- q(1398) => [
+ q(1404) => [
q(Bago-Kusuntu),
],
- q(1399) => [
+ q(1405) => [
q(Baima),
],
- q(1400) => [
+ q(1406) => [
q(Bakhtiari),
],
- q(1401) => [
+ q(1407) => [
q(Bandial),
],
- q(1402) => [
+ q(1408) => [
q(Banda-Mbres),
],
- q(1403) => [
+ q(1409) => [
q(Bilakura),
],
- q(1404) => [
+ q(1410) => [
q(Wumboko),
],
- q(1405) => [
+ q(1411) => [
q(Bulgarian Sign Language),
],
- q(1406) => [
+ q(1412) => [
q(Balo),
],
- q(1407) => [
+ q(1413) => [
q(Busa),
],
- q(1408) => [
+ q(1414) => [
q(Biritai),
],
- q(1409) => [
+ q(1415) => [
q(Burusu),
],
- q(1410) => [
+ q(1416) => [
q(Bosngun),
],
- q(1411) => [
+ q(1417) => [
q(Bamukumbit),
],
- q(1412) => [
+ q(1418) => [
q(Boguru),
],
- q(1413) => [
+ q(1419) => [
+ q(Koro Wachi),
q(Begbere-Ejar),
],
- q(1414) => [
+ q(1420) => [
q(Buru (Nigeria)),
],
- q(1415) => [
+ q(1421) => [
q(Baangi),
],
- q(1416) => [
+ q(1422) => [
q(Bengkala Sign Language),
],
- q(1417) => [
+ q(1423) => [
q(Bakaka),
],
- q(1418) => [
+ q(1424) => [
q(Lave),
],
- q(1419) => [
+ q(1425) => [
q(Berbice Creole Dutch),
],
- q(1420) => [
+ q(1426) => [
q(Baraamu),
],
- q(1421) => [
+ q(1427) => [
q(Bera),
],
- q(1422) => [
+ q(1428) => [
q(Baure),
],
- q(1423) => [
+ q(1429) => [
q(Brahui),
],
- q(1424) => [
+ q(1430) => [
q(Mokpwe),
],
- q(1425) => [
+ q(1431) => [
q(Bieria),
],
- q(1426) => [
+ q(1432) => [
q(Birked),
],
- q(1427) => [
+ q(1433) => [
q(Birwa),
],
- q(1428) => [
+ q(1434) => [
q(Barambu),
],
- q(1429) => [
+ q(1435) => [
q(Boruca),
],
- q(1430) => [
+ q(1436) => [
q(Brokkat),
],
- q(1431) => [
+ q(1437) => [
q(Barapasi),
],
- q(1432) => [
+ q(1438) => [
q(Breri),
],
- q(1433) => [
+ q(1439) => [
q(Birao),
],
- q(1434) => [
+ q(1440) => [
q(Baras),
],
- q(1435) => [
+ q(1441) => [
q(Bitare),
],
- q(1436) => [
+ q(1442) => [
q(Eastern Bru),
],
- q(1437) => [
+ q(1443) => [
q(Western Bru),
],
- q(1438) => [
+ q(1444) => [
q(Bellari),
],
- q(1439) => [
+ q(1445) => [
q(Bodo (India)),
],
- q(1440) => [
+ q(1446) => [
q(Burui),
],
- q(1441) => [
+ q(1447) => [
q(Bilbil),
],
- q(1442) => [
+ q(1448) => [
q(Abinomn),
],
- q(1443) => [
+ q(1449) => [
q(Brunei Bisaya),
],
- q(1444) => [
+ q(1450) => [
q(Bassari),
q(Oniyan),
],
- q(1445) => [
+ q(1451) => [
q(Wushi),
],
- q(1446) => [
+ q(1452) => [
q(Bauchi),
],
- q(1447) => [
+ q(1453) => [
q(Bashkardi),
],
- q(1448) => [
+ q(1454) => [
q(Kati),
],
- q(1449) => [
+ q(1455) => [
q(Bassossi),
],
- q(1450) => [
+ q(1456) => [
q(Bangwinji),
],
- q(1451) => [
+ q(1457) => [
q(Burushaski),
],
- q(1452) => [
+ q(1458) => [
q(Basa-Gumna),
],
- q(1453) => [
+ q(1459) => [
q(Busami),
],
- q(1454) => [
+ q(1460) => [
q(Barasana-Eduria),
],
- q(1455) => [
+ q(1461) => [
q(Buso),
],
- q(1456) => [
+ q(1462) => [
q(Baga Sitemu),
],
- q(1457) => [
+ q(1463) => [
q(Bassa),
],
- q(1458) => [
+ q(1464) => [
q(Bassa-Kontagora),
],
- q(1459) => [
+ q(1465) => [
q(Akoose),
],
- q(1460) => [
+ q(1466) => [
q(Basketo),
],
- q(1461) => [
+ q(1467) => [
q(Bahonsuai),
],
- q(1462) => [
+ q(1468) => [
q(Baga Sobane),
],
- q(1463) => [
+ q(1469) => [
q(Baiso),
],
- q(1464) => [
+ q(1470) => [
q(Yangkam),
],
- q(1465) => [
+ q(1471) => [
q(Sabah Bisaya),
],
- q(1466) => [
+ q(1472) => [
q(Bata),
],
- q(1467) => [
+ q(1473) => [
q(Bati (Cameroon)),
],
- q(1468) => [
+ q(1474) => [
q(Batak Dairi),
],
- q(1469) => [
+ q(1475) => [
q(Gamo-Ningi),
],
- q(1470) => [
+ q(1476) => [
q(Birgit),
],
- q(1471) => [
+ q(1477) => [
q(Gagnoa Bete),
],
- q(1472) => [
+ q(1478) => [
q(Biatah Bidayuh),
],
- q(1473) => [
+ q(1479) => [
q(Burate),
],
- q(1474) => [
+ q(1480) => [
q(Bacanese Malay),
],
- q(1475) => [
+ q(1481) => [
q(Bhatola),
],
- q(1476) => [
+ q(1482) => [
q(Batak Mandailing),
],
- q(1477) => [
+ q(1483) => [
q(Ratagnon),
],
- q(1478) => [
+ q(1484) => [
q(Rinconada Bikol),
],
- q(1479) => [
+ q(1485) => [
q(Budibud),
],
- q(1480) => [
+ q(1486) => [
q(Batek),
],
- q(1481) => [
+ q(1487) => [
q(Baetora),
],
- q(1482) => [
+ q(1488) => [
q(Batak Simalungun),
],
- q(1483) => [
+ q(1489) => [
q(Bete-Bendi),
],
- q(1484) => [
+ q(1490) => [
q(Batu),
],
- q(1485) => [
+ q(1491) => [
q(Bateri),
],
- q(1486) => [
+ q(1492) => [
q(Butuanon),
],
- q(1487) => [
+ q(1493) => [
q(Batak Karo),
],
- q(1488) => [
+ q(1494) => [
q(Bobot),
],
- q(1489) => [
+ q(1495) => [
q(Batak Alas-Kluet),
],
- q(1490) => [
+ q(1496) => [
q(Bua),
],
- q(1491) => [
+ q(1497) => [
q(Bushi),
],
- q(1492) => [
+ q(1498) => [
q(Ntcham),
],
- q(1493) => [
+ q(1499) => [
q(Beothuk),
],
- q(1494) => [
+ q(1500) => [
q(Bushoong),
],
- q(1495) => [
+ q(1501) => [
q(Younuo Bunu),
],
- q(1496) => [
+ q(1502) => [
q(Bongili),
],
- q(1497) => [
+ q(1503) => [
q(Basa-Gurmana),
],
- q(1498) => [
+ q(1504) => [
q(Bugawac),
],
- q(1499) => [
+ q(1505) => [
q(Bulu (Cameroon)),
],
- q(1500) => [
+ q(1506) => [
q(Sherbro),
],
- q(1501) => [
+ q(1507) => [
q(Terei),
],
- q(1502) => [
+ q(1508) => [
q(Busoa),
],
- q(1503) => [
+ q(1509) => [
q(Brem),
],
- q(1504) => [
+ q(1510) => [
q(Bokobaru),
],
- q(1505) => [
+ q(1511) => [
q(Bungain),
],
- q(1506) => [
+ q(1512) => [
q(Budu),
],
- q(1507) => [
+ q(1513) => [
q(Bun),
],
- q(1508) => [
+ q(1514) => [
q(Bubi),
],
- q(1509) => [
+ q(1515) => [
q(Boghom),
],
- q(1510) => [
+ q(1516) => [
q(Bullom So),
],
- q(1511) => [
+ q(1517) => [
q(Bukwen),
],
- q(1512) => [
+ q(1518) => [
q(Barein),
],
- q(1513) => [
+ q(1519) => [
q(Bube),
],
- q(1514) => [
+ q(1520) => [
q(Baelelea),
],
- q(1515) => [
+ q(1521) => [
q(Baeggu),
],
- q(1516) => [
+ q(1522) => [
q(Berau Malay),
],
- q(1517) => [
+ q(1523) => [
q(Boor),
],
- q(1518) => [
+ q(1524) => [
q(Bonkeng),
],
- q(1519) => [
+ q(1525) => [
q(Bure),
],
- q(1520) => [
+ q(1526) => [
q(Belanda Viri),
],
- q(1521) => [
+ q(1527) => [
q(Baan),
],
- q(1522) => [
+ q(1528) => [
q(Bukat),
],
- q(1523) => [
+ q(1529) => [
q(Bolivian Sign Language),
],
- q(1524) => [
+ q(1530) => [
q(Bamunka),
],
- q(1525) => [
+ q(1531) => [
q(Buna),
],
- q(1526) => [
+ q(1532) => [
q(Bolgo),
],
- q(1527) => [
+ q(1533) => [
q(Birri),
],
- q(1528) => [
+ q(1534) => [
q(Burarra),
],
- q(1529) => [
+ q(1535) => [
q(Bati (Indonesia)),
],
- q(1530) => [
+ q(1536) => [
q(Bukit Malay),
],
- q(1531) => [
+ q(1537) => [
q(Baniva),
],
- q(1532) => [
+ q(1538) => [
q(Boga),
],
- q(1533) => [
+ q(1539) => [
q(Dibole),
],
- q(1534) => [
+ q(1540) => [
q(Baybayanon),
],
- q(1535) => [
+ q(1541) => [
q(Bauzi),
],
- q(1536) => [
+ q(1542) => [
q(Bwatoo),
],
- q(1537) => [
+ q(1543) => [
q(Namosi-Naitasiri-Serua),
],
- q(1538) => [
+ q(1544) => [
q(Bwile),
],
- q(1539) => [
+ q(1545) => [
q(Bwaidoka),
],
- q(1540) => [
+ q(1546) => [
q(Bwe Karen),
],
- q(1541) => [
+ q(1547) => [
q(Boselewa),
],
- q(1542) => [
+ q(1548) => [
q(Barwe),
],
- q(1543) => [
+ q(1549) => [
q(Bishuo),
],
- q(1544) => [
+ q(1550) => [
q(Baniwa),
],
- q(1545) => [
+ q(1551) => [
q(Laa Laa Bwamu),
],
- q(1546) => [
+ q(1552) => [
q(Bauwaki),
],
- q(1547) => [
+ q(1553) => [
q(Bwela),
],
- q(1548) => [
+ q(1554) => [
q(Biwat),
],
- q(1549) => [
+ q(1555) => [
q(Wunai Bunu),
],
- q(1550) => [
+ q(1556) => [
q(Boro (Ethiopia)),
q(Borna (Ethiopia)),
],
- q(1551) => [
+ q(1557) => [
q(Mandobo Bawah),
],
- q(1552) => [
+ q(1558) => [
q(Southern Bobo Madare),
],
- q(1553) => [
+ q(1559) => [
q(Bura-Pabir),
],
- q(1554) => [
+ q(1560) => [
q(Bomboma),
],
- q(1555) => [
+ q(1561) => [
q(Bafaw-Balong),
],
- q(1556) => [
+ q(1562) => [
q(Buli (Ghana)),
],
- q(1557) => [
+ q(1563) => [
q(Bwa),
],
- q(1558) => [
+ q(1564) => [
q(Bu-Nao Bunu),
],
- q(1559) => [
+ q(1565) => [
q(Cwi Bwamu),
],
- q(1560) => [
+ q(1566) => [
q(Bwisi),
],
- q(1561) => [
+ q(1567) => [
q(Bauro),
],
- q(1562) => [
+ q(1568) => [
q(Belanda Bor),
],
- q(1563) => [
+ q(1569) => [
q(Molengue),
],
- q(1564) => [
+ q(1570) => [
q(Pela),
],
- q(1565) => [
+ q(1571) => [
q(Birale),
],
- q(1566) => [
+ q(1572) => [
q(Bilur),
],
- q(1567) => [
+ q(1573) => [
q(Bangala),
],
- q(1568) => [
+ q(1574) => [
q(Buhutu),
],
- q(1569) => [
+ q(1575) => [
q(Pirlatapa),
],
- q(1570) => [
+ q(1576) => [
q(Bayungu),
],
- q(1571) => [
+ q(1577) => [
q(Bukusu),
q(Lubukusu),
],
- q(1572) => [
+ q(1578) => [
q(Jalkunan),
],
- q(1573) => [
+ q(1579) => [
q(Mongolia Buriat),
],
- q(1574) => [
+ q(1580) => [
q(Burduna),
],
- q(1575) => [
+ q(1581) => [
q(Barikanchi),
],
- q(1576) => [
+ q(1582) => [
q(Bebil),
],
- q(1577) => [
+ q(1583) => [
q(Beele),
],
- q(1578) => [
+ q(1584) => [
q(Russia Buriat),
],
- q(1579) => [
+ q(1585) => [
q(Busam),
],
- q(1580) => [
+ q(1586) => [
q(China Buriat),
],
- q(1581) => [
+ q(1587) => [
q(Berakou),
],
- q(1582) => [
+ q(1588) => [
q(Bankagooma),
],
- q(1583) => [
+ q(1589) => [
q(Borna (Democratic Republic of Congo)),
],
- q(1584) => [
+ q(1590) => [
q(Binahari),
],
- q(1585) => [
+ q(1591) => [
q(Batak),
],
- q(1586) => [
+ q(1592) => [
q(Bikya),
],
- q(1587) => [
+ q(1593) => [
q(Ubaghara),
],
- q(1588) => [
+ q(1594) => [
q(Benyadu'),
],
- q(1589) => [
+ q(1595) => [
q(Pouye),
],
- q(1590) => [
+ q(1596) => [
q(Bete),
],
- q(1591) => [
+ q(1597) => [
q(Baygo),
],
- q(1592) => [
+ q(1598) => [
q(Bhujel),
],
- q(1593) => [
+ q(1599) => [
q(Buyu),
],
- q(1594) => [
+ q(1600) => [
q(Bina (Nigeria)),
],
- q(1595) => [
+ q(1601) => [
q(Biao),
],
- q(1596) => [
+ q(1602) => [
q(Bayono),
],
- q(1597) => [
+ q(1603) => [
q(Bidyara),
],
- q(1598) => [
+ q(1604) => [
q(Biyo),
],
- q(1599) => [
+ q(1605) => [
q(Bumaji),
],
- q(1600) => [
+ q(1606) => [
q(Basay),
],
- q(1601) => [
+ q(1607) => [
q(Baruya),
+ q(Yipma),
],
- q(1602) => [
+ q(1608) => [
q(Burak),
],
- q(1603) => [
+ q(1609) => [
q(Berti),
],
- q(1604) => [
+ q(1610) => [
q(Medumba),
],
- q(1605) => [
+ q(1611) => [
q(Belhariya),
],
- q(1606) => [
+ q(1612) => [
q(Qaqet),
],
- q(1607) => [
+ q(1613) => [
q(Buya),
],
- q(1608) => [
+ q(1614) => [
q(Banaro),
],
- q(1609) => [
+ q(1615) => [
q(Bandi),
],
- q(1610) => [
+ q(1616) => [
q(Andio),
],
- q(1611) => [
+ q(1617) => [
q(Southern Betsimisaraka Malagasy),
],
- q(1612) => [
+ q(1618) => [
q(Bribri),
],
- q(1613) => [
+ q(1619) => [
q(Jenaama Bozo),
],
- q(1614) => [
+ q(1620) => [
q(Boikin),
],
- q(1615) => [
+ q(1621) => [
q(Babuza),
],
- q(1616) => [
+ q(1622) => [
q(Mapos Buang),
],
- q(1617) => [
+ q(1623) => [
q(Bisu),
],
- q(1618) => [
+ q(1624) => [
q(Belize Kriol English),
],
- q(1619) => [
+ q(1625) => [
q(Nicaragua Creole English),
],
- q(1620) => [
+ q(1626) => [
q(Boano (Sulawesi)),
],
- q(1621) => [
+ q(1627) => [
q(Bolondo),
],
- q(1622) => [
+ q(1628) => [
q(Boano (Maluku)),
],
- q(1623) => [
+ q(1629) => [
q(Bozaba),
],
- q(1624) => [
+ q(1630) => [
q(Kemberano),
],
- q(1625) => [
+ q(1631) => [
q(Buli (Indonesia)),
],
- q(1626) => [
+ q(1632) => [
q(Biri),
],
- q(1627) => [
+ q(1633) => [
q(Brazilian Sign Language),
],
- q(1628) => [
+ q(1634) => [
q(Brithenig),
],
- q(1629) => [
+ q(1635) => [
q(Burmeso),
],
- q(1630) => [
+ q(1636) => [
q(Bebe),
],
- q(1631) => [
+ q(1637) => [
q(Basa (Nigeria)),
],
- q(1632) => [
+ q(1638) => [
q(Kelengazxo Bozo),
],
- q(1633) => [
+ q(1639) => [
q(Obanliku),
],
- q(1634) => [
+ q(1640) => [
q(Evant),
],
- q(1635) => [
+ q(1641) => [
q(Chorti),
],
- q(1636) => [
+ q(1642) => [
q(Garifuna),
],
- q(1637) => [
+ q(1643) => [
q(Chuj),
],
- q(1638) => [
+ q(1644) => [
q(Lehar),
q(Laalaa),
],
- q(1639) => [
+ q(1645) => [
q(Southern Carrier),
],
- q(1640) => [
+ q(1646) => [
q(Nivacle),
],
- q(1641) => [
+ q(1647) => [
q(Cahuarano),
],
- q(1642) => [
+ q(1648) => [
q(Chane),
],
- q(1643) => [
+ q(1649) => [
q(Kaqchikel),
q(Cakchiquel),
],
- q(1644) => [
+ q(1650) => [
q(Carolinian),
],
- q(1645) => [
+ q(1651) => [
q(Cemuhi),
],
- q(1646) => [
+ q(1652) => [
q(Chambri),
],
- q(1647) => [
+ q(1653) => [
q(Chacobo),
],
- q(1648) => [
+ q(1654) => [
q(Chipaya),
],
- q(1649) => [
+ q(1655) => [
q(Car Nicobarese),
],
- q(1650) => [
+ q(1656) => [
q(Tsimane),
],
- q(1651) => [
+ q(1657) => [
q(Cavinena),
],
- q(1652) => [
+ q(1658) => [
q(Callawalla),
],
- q(1653) => [
+ q(1659) => [
q(Chiquitano),
],
- q(1654) => [
+ q(1660) => [
q(Cayuga),
],
- q(1655) => [
+ q(1661) => [
q(Canichana),
],
- q(1656) => [
+ q(1662) => [
q(Cabiyari),
],
- q(1657) => [
+ q(1663) => [
q(Carapana),
],
- q(1658) => [
+ q(1664) => [
q(Carijona),
],
- q(1659) => [
+ q(1665) => [
q(Chipiajes),
],
- q(1660) => [
+ q(1666) => [
q(Chimila),
],
- q(1661) => [
+ q(1667) => [
q(Cagua),
],
- q(1662) => [
+ q(1668) => [
q(Chachi),
],
- q(1663) => [
+ q(1669) => [
q(Ede Cabe),
],
- q(1664) => [
+ q(1670) => [
q(Chavacano),
],
- q(1665) => [
+ q(1671) => [
q(Bualkhaw Chin),
],
- q(1666) => [
+ q(1672) => [
q(Nyahkur),
],
- q(1667) => [
+ q(1673) => [
q(Izora),
],
- q(1668) => [
+ q(1674) => [
q(Cashibo-Cacataibo),
],
- q(1669) => [
+ q(1675) => [
q(Cashinahua),
],
- q(1670) => [
+ q(1676) => [
q(Chayahuita),
],
- q(1671) => [
+ q(1677) => [
q(Candoshi-Shapra),
],
- q(1672) => [
+ q(1678) => [
q(Cacua),
],
- q(1673) => [
+ q(1679) => [
q(Kinabalian),
],
- q(1674) => [
+ q(1680) => [
q(Carabayo),
],
- q(1675) => [
+ q(1681) => [
q(Cauca),
],
- q(1676) => [
+ q(1682) => [
q(Chamicuro),
],
- q(1677) => [
+ q(1683) => [
q(Cafundo Creole),
],
- q(1678) => [
+ q(1684) => [
q(Chopi),
],
- q(1679) => [
+ q(1685) => [
q(Samba Daka),
],
- q(1680) => [
+ q(1686) => [
q(Atsam),
],
- q(1681) => [
+ q(1687) => [
q(Kasanga),
],
- q(1682) => [
+ q(1688) => [
q(Cutchi-Swahili),
],
- q(1683) => [
+ q(1689) => [
q(Malaccan Creole Malay),
],
- q(1684) => [
+ q(1690) => [
q(Comaltepec Chinantec),
],
- q(1685) => [
+ q(1691) => [
q(Chakma),
],
- q(1686) => [
- q(Chaungtha),
- ],
- q(1687) => [
+ q(1692) => [
q(Cacaopera),
],
- q(1688) => [
+ q(1693) => [
q(Choni),
],
- q(1689) => [
+ q(1694) => [
q(Chenchu),
],
- q(1690) => [
+ q(1695) => [
q(Chiru),
],
- q(1691) => [
+ q(1696) => [
q(Chamari),
],
- q(1692) => [
+ q(1697) => [
q(Chambeali),
],
- q(1693) => [
+ q(1698) => [
q(Chodri),
],
- q(1694) => [
+ q(1699) => [
q(Churahi),
],
- q(1695) => [
+ q(1700) => [
q(Chepang),
],
- q(1696) => [
+ q(1701) => [
q(Chaudangsi),
],
- q(1697) => [
+ q(1702) => [
q(Min Dong Chinese),
],
- q(1698) => [
+ q(1703) => [
q(Cinda-Regi-Tiyal),
],
- q(1699) => [
+ q(1704) => [
q(Chadian Sign Language),
],
- q(1700) => [
+ q(1705) => [
q(Chadong),
],
- q(1701) => [
+ q(1706) => [
q(Koda),
],
- q(1702) => [
+ q(1707) => [
q(Lower Chehalis),
],
- q(1703) => [
+ q(1708) => [
q(Chamacoco),
],
- q(1704) => [
+ q(1709) => [
+ q(Eastern Khumi Chin),
+ ],
+ q(1710) => [
q(Cen),
],
- q(1705) => [
+ q(1711) => [
q(Centuum),
],
- q(1706) => [
+ q(1712) => [
q(Dijim-Bwilim),
],
- q(1707) => [
+ q(1713) => [
q(Cara),
],
- q(1708) => [
+ q(1714) => [
q(Como Karim),
],
- q(1709) => [
+ q(1715) => [
q(Falam Chin),
],
- q(1710) => [
+ q(1716) => [
q(Changriwa),
],
- q(1711) => [
+ q(1717) => [
q(Kagayanen),
],
- q(1712) => [
+ q(1718) => [
q(Chiga),
],
- q(1713) => [
+ q(1719) => [
q(Chocangacakha),
],
- q(1714) => [
+ q(1720) => [
q(Catawba),
],
- q(1715) => [
+ q(1721) => [
q(Highland Oaxaca Chontal),
],
- q(1716) => [
+ q(1722) => [
q(Tabasco Chontal),
],
- q(1717) => [
+ q(1723) => [
q(Chinook),
],
- q(1718) => [
+ q(1724) => [
q(Ojitlan Chinantec),
],
- q(1719) => [
+ q(1725) => [
q(Cahuilla),
],
- q(1720) => [
+ q(1726) => [
q(Quiotepec Chinantec),
],
- q(1721) => [
+ q(1727) => [
q(Cholon),
],
- q(1722) => [
+ q(1728) => [
q(Chuwabu),
],
- q(1723) => [
+ q(1729) => [
q(Chantyal),
],
- q(1724) => [
+ q(1730) => [
q(Ozumacin Chinantec),
],
- q(1725) => [
+ q(1731) => [
q(Cia-Cia),
],
- q(1726) => [
+ q(1732) => [
q(Ci Gbe),
],
- q(1727) => [
+ q(1733) => [
q(Chickasaw),
],
- q(1728) => [
+ q(1734) => [
q(Chimariko),
],
- q(1729) => [
+ q(1735) => [
q(Cineni),
],
- q(1730) => [
+ q(1736) => [
q(Chinali),
],
- q(1731) => [
+ q(1737) => [
q(Chitkuli Kinnauri),
],
- q(1732) => [
+ q(1738) => [
q(Cimbrian),
],
- q(1733) => [
+ q(1739) => [
q(Cinta Larga),
],
- q(1734) => [
+ q(1740) => [
q(Chiapanec),
],
- q(1735) => [
+ q(1741) => [
q(Tiri),
],
- q(1736) => [
+ q(1742) => [
q(Chippewa),
],
- q(1737) => [
+ q(1743) => [
q(Chaima),
],
- q(1738) => [
+ q(1744) => [
q(Western Cham),
],
- q(1739) => [
+ q(1745) => [
q(Chru),
],
- q(1740) => [
+ q(1746) => [
q(Upper Chehalis),
],
- q(1741) => [
+ q(1747) => [
q(Chamalal),
],
- q(1742) => [
+ q(1748) => [
q(Chokwe),
],
- q(1743) => [
+ q(1749) => [
q(Eastern Cham),
],
- q(1744) => [
+ q(1750) => [
q(Chenapian),
],
- q(1745) => [
+ q(1751) => [
q(Asheninka Pajonal),
],
- q(1746) => [
+ q(1752) => [
q(Cabecar),
],
- q(1747) => [
+ q(1753) => [
q(Shor),
],
- q(1748) => [
+ q(1754) => [
q(Chuave),
],
- q(1749) => [
+ q(1755) => [
q(Jinyu Chinese),
],
- q(1750) => [
- q(Khumi Awa Chin),
- ],
- q(1751) => [
+ q(1756) => [
q(Central Kurdish),
],
- q(1752) => [
+ q(1757) => [
q(Chak),
],
- q(1753) => [
+ q(1758) => [
q(Cibak),
],
- q(1754) => [
+ q(1759) => [
q(Anufo),
],
- q(1755) => [
+ q(1760) => [
q(Kajakse),
],
- q(1756) => [
+ q(1761) => [
q(Kairak),
],
- q(1757) => [
+ q(1762) => [
q(Tayo),
],
- q(1758) => [
+ q(1763) => [
q(Chukot),
],
- q(1759) => [
+ q(1764) => [
q(Koasati),
],
- q(1760) => [
+ q(1765) => [
q(Kavalan),
],
- q(1761) => [
+ q(1766) => [
q(Caka),
],
- q(1762) => [
+ q(1767) => [
q(Cakfem-Mushere),
],
- q(1763) => [
+ q(1768) => [
q(Cakchiquel-Quiche Mixed Language),
],
- q(1764) => [
+ q(1769) => [
q(Ron),
],
- q(1765) => [
+ q(1770) => [
q(Chilcotin),
],
- q(1766) => [
+ q(1771) => [
q(Chaldean Neo-Aramaic),
],
- q(1767) => [
+ q(1772) => [
q(Lealao Chinantec),
],
- q(1768) => [
+ q(1773) => [
q(Chilisso),
],
- q(1769) => [
+ q(1774) => [
q(Chakali),
],
- q(1770) => [
+ q(1775) => [
+ q(Laitu Chin),
+ ],
+ q(1776) => [
q(Idu-Mishmi),
],
- q(1771) => [
+ q(1777) => [
q(Chala),
],
- q(1772) => [
+ q(1778) => [
q(Clallam),
],
- q(1773) => [
+ q(1779) => [
q(Lowland Oaxaca Chontal),
],
- q(1774) => [
+ q(1780) => [
+ q(Lautu Chin),
+ ],
+ q(1781) => [
q(Caluyanun),
],
- q(1775) => [
+ q(1782) => [
q(Chulym),
],
- q(1776) => [
+ q(1783) => [
q(Eastern Highland Chatino),
],
- q(1777) => [
+ q(1784) => [
q(Maa),
],
- q(1778) => [
+ q(1785) => [
q(Cerma),
],
- q(1779) => [
+ q(1786) => [
q(Classical Mongolian),
],
- q(1780) => [
+ q(1787) => [
q(Embera-Chami),
],
- q(1781) => [
+ q(1788) => [
q(Campalagian),
],
- q(1782) => [
+ q(1789) => [
q(Michigamea),
],
- q(1783) => [
+ q(1790) => [
q(Mandarin Chinese),
],
- q(1784) => [
+ q(1791) => [
q(Central Mnong),
],
- q(1785) => [
- q(Mro Chin),
+ q(1792) => [
+ q(Mro-Khimi Chin),
],
- q(1786) => [
+ q(1793) => [
q(Messapic),
],
- q(1787) => [
+ q(1794) => [
q(Camtho),
],
- q(1788) => [
+ q(1795) => [
q(Changthang),
],
- q(1789) => [
+ q(1796) => [
q(Chinbon Chin),
],
- q(1790) => [
+ q(1797) => [
q(Coong),
],
- q(1791) => [
+ q(1798) => [
q(Northern Qiang),
],
- q(1792) => [
+ q(1799) => [
q(Haka Chin),
],
- q(1793) => [
+ q(1800) => [
q(Ashaninka),
],
- q(1794) => [
+ q(1801) => [
q(Khumi Chin),
],
- q(1795) => [
+ q(1802) => [
q(Lalana Chinantec),
],
- q(1796) => [
+ q(1803) => [
q(Con),
],
- q(1797) => [
+ q(1804) => [
q(Central Asmat),
],
- q(1798) => [
+ q(1805) => [
q(Tepetotutla Chinantec),
],
- q(1799) => [
+ q(1806) => [
q(Chenoua),
],
- q(1800) => [
+ q(1807) => [
q(Ngawn Chin),
],
- q(1801) => [
+ q(1808) => [
q(Middle Cornish),
],
- q(1802) => [
+ q(1809) => [
q(Cocos Islands Malay),
],
- q(1803) => [
+ q(1810) => [
q(Chicomuceltec),
],
- q(1804) => [
+ q(1811) => [
q(Cocopa),
],
- q(1805) => [
+ q(1812) => [
q(Cocama-Cocamilla),
],
- q(1806) => [
+ q(1813) => [
q(Koreguaje),
],
- q(1807) => [
+ q(1814) => [
q(Colorado),
],
- q(1808) => [
+ q(1815) => [
q(Chong),
],
- q(1809) => [
+ q(1816) => [
q(Chonyi-Dzihana-Kauma),
q(Chichonyi-Chidzihana-Chikauma),
],
- q(1810) => [
+ q(1817) => [
q(Cochimi),
],
- q(1811) => [
+ q(1818) => [
q(Santa Teresa Cora),
],
- q(1812) => [
+ q(1819) => [
q(Columbia-Wenatchi),
],
- q(1813) => [
+ q(1820) => [
q(Comanche),
],
- q(1814) => [
+ q(1821) => [
q(Cofan),
],
- q(1815) => [
+ q(1822) => [
q(Comox),
],
- q(1816) => [
+ q(1823) => [
q(Coquille),
],
- q(1817) => [
+ q(1824) => [
q(Caquinte),
],
- q(1818) => [
+ q(1825) => [
q(Wamey),
],
- q(1819) => [
+ q(1826) => [
q(Cao Miao),
],
- q(1820) => [
+ q(1827) => [
q(Cowlitz),
],
- q(1821) => [
+ q(1828) => [
q(Nanti),
],
- q(1822) => [
+ q(1829) => [
q(Coyaima),
],
- q(1823) => [
+ q(1830) => [
q(Chochotec),
],
- q(1824) => [
+ q(1831) => [
q(Palantla Chinantec),
],
- q(1825) => [
+ q(1832) => [
q(Ucayali-Yurua Asheninka),
],
- q(1826) => [
+ q(1833) => [
q(Ajyininka Apurucayali),
],
- q(1827) => [
+ q(1834) => [
q(Cappadocian Greek),
],
- q(1828) => [
+ q(1835) => [
q(Chinese Pidgin English),
],
- q(1829) => [
+ q(1836) => [
q(Cherepon),
],
- q(1830) => [
+ q(1837) => [
q(Capiznon),
],
- q(1831) => [
+ q(1838) => [
q(Pichis Asheninka),
],
- q(1832) => [
+ q(1839) => [
q(Pu-Xian Chinese),
],
- q(1833) => [
+ q(1840) => [
q(South Ucayali Asheninka),
],
- q(1834) => [
+ q(1841) => [
q(Chuanqiandian Cluster Miao),
],
- q(1835) => [
+ q(1842) => [
q(Chilean Quechua),
],
- q(1836) => [
+ q(1843) => [
q(Chara),
],
- q(1837) => [
+ q(1844) => [
q(Island Carib),
],
- q(1838) => [
+ q(1845) => [
q(Lonwolwol),
],
- q(1839) => [
+ q(1846) => [
q(Coeur d'Alene),
],
- q(1840) => [
+ q(1847) => [
q(Caramanta),
],
- q(1841) => [
+ q(1848) => [
q(Michif),
],
- q(1842) => [
+ q(1849) => [
q(Saotomense),
],
- q(1843) => [
+ q(1850) => [
q(Southern East Cree),
],
- q(1844) => [
+ q(1851) => [
q(Plains Cree),
],
- q(1845) => [
+ q(1852) => [
q(Northern East Cree),
],
- q(1846) => [
+ q(1853) => [
q(Moose Cree),
],
- q(1847) => [
+ q(1854) => [
q(El Nayar Cora),
],
- q(1848) => [
+ q(1855) => [
q(Crow),
],
- q(1849) => [
+ q(1856) => [
q(Iyo'wujwa Chorote),
],
- q(1850) => [
+ q(1857) => [
q(Carolina Algonquian),
],
- q(1851) => [
+ q(1858) => [
q(Seselwa Creole French),
],
- q(1852) => [
+ q(1859) => [
q(Iyojwa'ja Chorote),
],
- q(1853) => [
+ q(1860) => [
q(Chaura),
],
- q(1854) => [
+ q(1861) => [
q(Chrau),
],
- q(1855) => [
+ q(1862) => [
q(Carrier),
],
- q(1856) => [
+ q(1863) => [
q(Cori),
],
- q(1857) => [
+ q(1864) => [
q(Cruzeno),
],
- q(1858) => [
+ q(1865) => [
q(Chiltepec Chinantec),
],
- q(1859) => [
+ q(1866) => [
q(Catalan Sign Language),
q(Lengua de senas catalana),
q(Llengua de Signes Catalana),
],
- q(1860) => [
+ q(1867) => [
q(Chiangmai Sign Language),
],
- q(1861) => [
+ q(1868) => [
q(Czech Sign Language),
],
- q(1862) => [
+ q(1869) => [
q(Cuba Sign Language),
],
- q(1863) => [
+ q(1870) => [
q(Chilean Sign Language),
],
- q(1864) => [
+ q(1871) => [
q(Asho Chin),
],
- q(1865) => [
+ q(1872) => [
q(Coast Miwok),
],
- q(1866) => [
+ q(1873) => [
q(Jola-Kasa),
],
- q(1867) => [
+ q(1874) => [
q(Chinese Sign Language),
],
- q(1868) => [
+ q(1875) => [
q(Central Sierra Miwok),
],
- q(1869) => [
+ q(1876) => [
q(Colombian Sign Language),
],
- q(1870) => [
+ q(1877) => [
q(Sochiapam Chinantec),
q(Sochiapan Chinantec),
],
- q(1871) => [
+ q(1878) => [
q(Croatia Sign Language),
],
- q(1872) => [
+ q(1879) => [
q(Costa Rican Sign Language),
],
- q(1873) => [
+ q(1880) => [
q(Southern Ohlone),
],
- q(1874) => [
+ q(1881) => [
q(Northern Ohlone),
],
- q(1875) => [
+ q(1882) => [
+ q(Sumtu Chin),
+ ],
+ q(1883) => [
q(Swampy Cree),
],
- q(1876) => [
+ q(1884) => [
q(Siyin Chin),
],
- q(1877) => [
+ q(1885) => [
q(Coos),
],
- q(1878) => [
+ q(1886) => [
q(Tataltepec Chatino),
],
- q(1879) => [
+ q(1887) => [
q(Chetco),
],
- q(1880) => [
+ q(1888) => [
q(Tedim Chin),
],
- q(1881) => [
+ q(1889) => [
q(Tepinapa Chinantec),
],
- q(1882) => [
+ q(1890) => [
q(Chittagonian),
],
- q(1883) => [
+ q(1891) => [
+ q(Thaiphum Chin),
+ ],
+ q(1892) => [
q(Tlacoatzintepec Chinantec),
],
- q(1884) => [
+ q(1893) => [
q(Chitimacha),
],
- q(1885) => [
+ q(1894) => [
q(Chhintange),
],
- q(1886) => [
+ q(1895) => [
q(Embera-Catio),
],
- q(1887) => [
+ q(1896) => [
q(Western Highland Chatino),
],
- q(1888) => [
- q(Northern Catanduanes Bicolano),
+ q(1897) => [
+ q(Northern Catanduanes Bikol),
],
- q(1889) => [
+ q(1898) => [
q(Wayanad Chetti),
],
- q(1890) => [
+ q(1899) => [
q(Chol),
],
- q(1891) => [
+ q(1900) => [
q(Zacatepec Chatino),
],
- q(1892) => [
+ q(1901) => [
q(Cua),
],
- q(1893) => [
+ q(1902) => [
q(Cubeo),
],
- q(1894) => [
+ q(1903) => [
q(Usila Chinantec),
],
- q(1895) => [
+ q(1904) => [
q(Cung),
],
- q(1896) => [
+ q(1905) => [
q(Chuka),
q(Gichuka),
],
- q(1897) => [
+ q(1906) => [
q(Cuiba),
],
- q(1898) => [
+ q(1907) => [
q(Mashco Piro),
],
- q(1899) => [
+ q(1908) => [
q(San Blas Kuna),
],
- q(1900) => [
+ q(1909) => [
q(Culina),
q(Kulina),
],
- q(1901) => [
+ q(1910) => [
q(Cumeral),
],
- q(1902) => [
+ q(1911) => [
q(Cumanagoto),
],
- q(1903) => [
+ q(1912) => [
q(Cupeno),
],
- q(1904) => [
+ q(1913) => [
q(Cun),
],
- q(1905) => [
+ q(1914) => [
q(Chhulung),
],
- q(1906) => [
+ q(1915) => [
q(Teutila Cuicatec),
],
- q(1907) => [
+ q(1916) => [
q(Tai Ya),
],
- q(1908) => [
+ q(1917) => [
q(Cuvok),
],
- q(1909) => [
+ q(1918) => [
q(Chukwa),
],
- q(1910) => [
+ q(1919) => [
q(Tepeuxila Cuicatec),
],
- q(1911) => [
+ q(1920) => [
q(Chug),
],
- q(1912) => [
+ q(1921) => [
q(Valle Nacional Chinantec),
],
- q(1913) => [
+ q(1922) => [
q(Kabwa),
],
- q(1914) => [
+ q(1923) => [
q(Maindo),
],
- q(1915) => [
+ q(1924) => [
q(Woods Cree),
],
- q(1916) => [
+ q(1925) => [
q(Kwere),
],
- q(1917) => [
+ q(1926) => [
q(Chewong),
q(Cheq Wong),
],
- q(1918) => [
+ q(1927) => [
q(Kuwaataay),
],
- q(1919) => [
+ q(1928) => [
q(Nopala Chatino),
],
- q(1920) => [
+ q(1929) => [
q(Cayubaba),
],
- q(1921) => [
+ q(1930) => [
q(Cuyonon),
],
- q(1922) => [
+ q(1931) => [
q(Huizhou Chinese),
],
- q(1923) => [
+ q(1932) => [
q(Knaanic),
],
- q(1924) => [
+ q(1933) => [
q(Zenzontepec Chatino),
],
- q(1925) => [
+ q(1934) => [
q(Min Zhong Chinese),
],
- q(1926) => [
+ q(1935) => [
q(Zotung Chin),
],
- q(1927) => [
+ q(1936) => [
q(Dangaleat),
],
- q(1928) => [
+ q(1937) => [
q(Dambi),
],
- q(1929) => [
+ q(1938) => [
q(Marik),
],
- q(1930) => [
+ q(1939) => [
q(Duupa),
],
- q(1931) => [
+ q(1940) => [
q(Dan),
],
- q(1932) => [
+ q(1941) => [
q(Dagbani),
],
- q(1933) => [
+ q(1942) => [
q(Gwahatike),
],
- q(1934) => [
+ q(1943) => [
q(Day),
],
- q(1935) => [
+ q(1944) => [
q(Dar Fur Daju),
],
- q(1936) => [
+ q(1945) => [
q(Dahalo),
],
- q(1937) => [
+ q(1946) => [
q(Damakawa),
],
- q(1938) => [
+ q(1947) => [
q(Daai Chin),
],
- q(1939) => [
- q(Nisi (India)),
- ],
- q(1940) => [
+ q(1948) => [
q(Dandami Maria),
],
- q(1941) => [
+ q(1949) => [
q(Daho-Doo),
],
- q(1942) => [
+ q(1950) => [
q(Dar Sila Daju),
],
- q(1943) => [
+ q(1951) => [
q(Taita),
q(Dawida),
],
- q(1944) => [
+ q(1952) => [
q(Davawenyo),
],
- q(1945) => [
+ q(1953) => [
q(Dayi),
],
- q(1946) => [
+ q(1954) => [
q(Dao),
],
- q(1947) => [
+ q(1955) => [
q(Bangi Me),
],
- q(1948) => [
+ q(1956) => [
q(Deno),
],
- q(1949) => [
+ q(1957) => [
q(Dadiya),
],
- q(1950) => [
+ q(1958) => [
q(Dabe),
],
- q(1951) => [
+ q(1959) => [
q(Edopi),
],
- q(1952) => [
+ q(1960) => [
q(Dogul Dom Dogon),
],
- q(1953) => [
+ q(1961) => [
q(Doka),
],
- q(1954) => [
+ q(1962) => [
q(Ida'an),
],
- q(1955) => [
+ q(1963) => [
q(Dyirbal),
],
- q(1956) => [
+ q(1964) => [
q(Duguri),
],
- q(1957) => [
+ q(1965) => [
q(Duriankere),
],
- q(1958) => [
+ q(1966) => [
q(Dulbu),
],
- q(1959) => [
+ q(1967) => [
q(Duwai),
],
- q(1960) => [
+ q(1968) => [
q(Daba),
],
- q(1961) => [
+ q(1969) => [
q(Dabarre),
],
- q(1962) => [
+ q(1970) => [
+ q(Ben Tey Dogon),
+ ],
+ q(1971) => [
q(Bondum Dom Dogon),
],
- q(1963) => [
+ q(1972) => [
q(Dungu),
],
- q(1964) => [
+ q(1973) => [
+ q(Bankan Tey Dogon),
+ ],
+ q(1974) => [
q(Dibiyaso),
],
- q(1965) => [
+ q(1975) => [
q(Deccan),
],
- q(1966) => [
+ q(1976) => [
q(Negerhollands),
],
- q(1967) => [
+ q(1977) => [
+ q(Dadi Dadi),
+ ],
+ q(1978) => [
q(Dongotono),
],
- q(1968) => [
+ q(1979) => [
q(Doondo),
],
- q(1969) => [
+ q(1980) => [
q(Fataluku),
],
- q(1970) => [
+ q(1981) => [
q(West Goodenough),
],
- q(1971) => [
+ q(1982) => [
q(Jaru),
],
- q(1972) => [
+ q(1983) => [
q(Dendi (Benin)),
],
- q(1973) => [
+ q(1984) => [
q(Dido),
],
- q(1974) => [
+ q(1985) => [
+ q(Dhudhuroa),
+ ],
+ q(1986) => [
q(Donno So Dogon),
],
- q(1975) => [
+ q(1987) => [
q(Dawera-Daweloor),
],
- q(1976) => [
+ q(1988) => [
q(Dagik),
],
- q(1977) => [
+ q(1989) => [
q(Dedua),
],
- q(1978) => [
+ q(1990) => [
q(Dewoin),
],
- q(1979) => [
+ q(1991) => [
q(Dezfuli),
],
- q(1980) => [
+ q(1992) => [
q(Degema),
],
- q(1981) => [
+ q(1993) => [
q(Dehwari),
],
- q(1982) => [
+ q(1994) => [
q(Demisa),
],
- q(1983) => [
+ q(1995) => [
q(Dek),
],
- q(1984) => [
+ q(1996) => [
q(Dem),
],
- q(1985) => [
+ q(1997) => [
q(Pidgin Delaware),
],
- q(1986) => [
+ q(1998) => [
q(Dendi (Central African Republic)),
],
- q(1987) => [
+ q(1999) => [
q(Deori),
],
- q(1988) => [
+ q(2000) => [
q(Desano),
],
- q(1989) => [
+ q(2001) => [
q(Domung),
],
- q(1990) => [
+ q(2002) => [
q(Dengese),
],
- q(1991) => [
+ q(2003) => [
q(Southern Dagaare),
],
- q(1992) => [
+ q(2004) => [
q(Bunoge Dogon),
],
- q(1993) => [
+ q(2005) => [
q(Casiguran Dumagat Agta),
],
- q(1994) => [
+ q(2006) => [
q(Dagaari Dioula),
],
- q(1995) => [
+ q(2007) => [
q(Degenan),
],
- q(1996) => [
+ q(2008) => [
q(Doga),
],
- q(1997) => [
+ q(2009) => [
q(Dghwede),
],
- q(1998) => [
+ q(2010) => [
q(Northern Dagara),
],
- q(1999) => [
+ q(2011) => [
q(Dagba),
],
- q(2000) => [
+ q(2012) => [
+ q(Andaandi),
+ q(Dongolawi),
+ ],
+ q(2013) => [
q(Dagoman),
],
- q(2001) => [
+ q(2014) => [
q(Dogri (individual language)),
],
- q(2002) => [
+ q(2015) => [
q(Dogoso),
],
- q(2003) => [
+ q(2016) => [
+ q(Ndrag'ngith),
+ ],
+ q(2017) => [
q(Degaru),
],
- q(2004) => [
+ q(2018) => [
+ q(Daungwurrung),
+ ],
+ q(2019) => [
q(Doghoro),
],
- q(2005) => [
+ q(2020) => [
q(Daga),
],
- q(2006) => [
+ q(2021) => [
q(Dhundari),
],
- q(2007) => [
+ q(2022) => [
q(Dhangu),
],
- q(2008) => [
+ q(2023) => [
q(Dhimal),
],
- q(2009) => [
+ q(2024) => [
q(Dhalandji),
],
- q(2010) => [
+ q(2025) => [
q(Zemba),
],
- q(2011) => [
+ q(2026) => [
q(Dhanki),
],
- q(2012) => [
+ q(2027) => [
q(Dhodia),
],
- q(2013) => [
+ q(2028) => [
q(Dhargari),
],
- q(2014) => [
+ q(2029) => [
q(Dhaiso),
],
- q(2015) => [
+ q(2030) => [
q(Dhurga),
],
- q(2016) => [
+ q(2031) => [
q(Dehu),
],
- q(2017) => [
+ q(2032) => [
q(Dhanwar (Nepal)),
],
- q(2018) => [
+ q(2033) => [
q(Dia),
],
- q(2019) => [
+ q(2034) => [
q(South Central Dinka),
],
- q(2020) => [
+ q(2035) => [
q(Lakota Dida),
],
- q(2021) => [
+ q(2036) => [
q(Didinga),
],
- q(2022) => [
+ q(2037) => [
q(Dieri),
],
- q(2023) => [
+ q(2038) => [
q(Digo),
q(Chidigo),
],
- q(2024) => [
+ q(2039) => [
q(Kumiai),
],
- q(2025) => [
+ q(2040) => [
q(Dimbong),
],
- q(2026) => [
+ q(2041) => [
q(Dai),
],
- q(2027) => [
+ q(2042) => [
q(Southwestern Dinka),
],
- q(2028) => [
+ q(2043) => [
q(Dilling),
],
- q(2029) => [
+ q(2044) => [
q(Dime),
],
- q(2030) => [
+ q(2045) => [
q(Dibo),
],
- q(2031) => [
+ q(2046) => [
q(Northeastern Dinka),
],
- q(2032) => [
+ q(2047) => [
q(Dimli (individual language)),
],
- q(2033) => [
+ q(2048) => [
q(Dirim),
],
- q(2034) => [
+ q(2049) => [
q(Dimasa),
],
- q(2035) => [
+ q(2050) => [
q(Dirari),
],
- q(2036) => [
+ q(2051) => [
q(Diriku),
],
- q(2037) => [
+ q(2052) => [
q(Northwestern Dinka),
],
- q(2038) => [
+ q(2053) => [
q(Dixon Reef),
],
- q(2039) => [
+ q(2054) => [
q(Diuwe),
],
- q(2040) => [
+ q(2055) => [
q(Ding),
],
- q(2041) => [
+ q(2056) => [
+ q(Djadjawurrung),
+ ],
+ q(2057) => [
q(Djinba),
],
- q(2042) => [
+ q(2058) => [
q(Dar Daju Daju),
],
- q(2043) => [
+ q(2059) => [
q(Djamindjung),
],
- q(2044) => [
+ q(2060) => [
q(Zarma),
],
- q(2045) => [
+ q(2061) => [
q(Djangun),
],
- q(2046) => [
+ q(2062) => [
q(Djinang),
],
- q(2047) => [
+ q(2063) => [
q(Djeebbana),
],
- q(2048) => [
+ q(2064) => [
q(Eastern Maroon Creole),
q(Businenge Tongo),
q(Nenge),
],
- q(2049) => [
+ q(2065) => [
q(Djiwarli),
],
- q(2050) => [
+ q(2066) => [
q(Jamsay Dogon),
],
- q(2051) => [
+ q(2067) => [
q(Djauan),
],
- q(2052) => [
+ q(2068) => [
q(Jangkang),
],
- q(2053) => [
+ q(2069) => [
q(Djambarrpuyngu),
],
- q(2054) => [
+ q(2070) => [
q(Kapriman),
],
- q(2055) => [
+ q(2071) => [
q(Djawi),
],
- q(2056) => [
+ q(2072) => [
q(Dakpakha),
],
- q(2057) => [
+ q(2073) => [
q(Dakka),
],
- q(2058) => [
+ q(2074) => [
q(Kuijau),
],
- q(2059) => [
+ q(2075) => [
q(Southeastern Dinka),
],
- q(2060) => [
+ q(2076) => [
q(Mazagway),
],
- q(2061) => [
+ q(2077) => [
q(Dolgan),
],
- q(2062) => [
+ q(2078) => [
q(Dalmatian),
],
- q(2063) => [
+ q(2079) => [
q(Darlong),
],
- q(2064) => [
+ q(2080) => [
q(Duma),
],
- q(2065) => [
+ q(2081) => [
q(Mombo Dogon),
],
- q(2066) => [
+ q(2082) => [
q(Dimir),
],
- q(2067) => [
+ q(2083) => [
+ q(Madhi Madhi),
+ ],
+ q(2084) => [
q(Dugwor),
],
- q(2068) => [
+ q(2085) => [
q(Upper Kinabatangan),
],
- q(2069) => [
+ q(2086) => [
q(Domaaki),
],
- q(2070) => [
+ q(2087) => [
q(Dameli),
],
- q(2071) => [
+ q(2088) => [
q(Dama),
],
- q(2072) => [
- q(Kemezung),
+ q(2089) => [
+ q(Kemedzung),
],
- q(2073) => [
+ q(2090) => [
q(East Damar),
],
- q(2074) => [
+ q(2091) => [
q(Dampelas),
],
- q(2075) => [
+ q(2092) => [
q(Dubu),
q(Tebi),
],
- q(2076) => [
+ q(2093) => [
q(Dumpas),
],
- q(2077) => [
+ q(2094) => [
q(Dema),
],
- q(2078) => [
+ q(2095) => [
q(Demta),
q(Sowari),
],
- q(2079) => [
+ q(2096) => [
q(Upper Grand Valley Dani),
],
- q(2080) => [
+ q(2097) => [
q(Daonda),
],
- q(2081) => [
+ q(2098) => [
q(Ndendeule),
],
- q(2082) => [
+ q(2099) => [
q(Dungan),
],
- q(2083) => [
+ q(2100) => [
q(Lower Grand Valley Dani),
],
- q(2084) => [
+ q(2101) => [
q(Dengka),
],
- q(2085) => [
+ q(2102) => [
q(Dzuungoo),
],
- q(2086) => [
+ q(2103) => [
q(Danaru),
],
- q(2087) => [
+ q(2104) => [
q(Mid Grand Valley Dani),
],
- q(2088) => [
+ q(2105) => [
q(Danau),
],
- q(2089) => [
+ q(2106) => [
+ q(Danu),
+ ],
+ q(2107) => [
q(Western Dani),
],
- q(2090) => [
+ q(2108) => [
q(Deni),
],
- q(2091) => [
+ q(2109) => [
q(Dom),
],
- q(2092) => [
+ q(2110) => [
q(Dobu),
],
- q(2093) => [
+ q(2111) => [
q(Northern Dong),
],
- q(2094) => [
+ q(2112) => [
q(Doe),
],
- q(2095) => [
+ q(2113) => [
q(Domu),
],
- q(2096) => [
+ q(2114) => [
q(Dong),
],
- q(2097) => [
+ q(2115) => [
q(Dondo),
],
- q(2098) => [
+ q(2116) => [
q(Doso),
],
- q(2099) => [
+ q(2117) => [
q(Toura (Papua New Guinea)),
],
- q(2100) => [
+ q(2118) => [
q(Dongo),
],
- q(2101) => [
+ q(2119) => [
q(Lukpa),
],
- q(2102) => [
+ q(2120) => [
q(Dominican Sign Language),
],
- q(2103) => [
+ q(2121) => [
q(Dori'o),
],
- q(2104) => [
+ q(2122) => [
q(Dogose),
],
- q(2105) => [
+ q(2123) => [
q(Dass),
],
- q(2106) => [
+ q(2124) => [
q(Dombe),
],
- q(2107) => [
+ q(2125) => [
q(Doyayo),
],
- q(2108) => [
+ q(2126) => [
q(Bussa),
],
- q(2109) => [
+ q(2127) => [
q(Dompo),
],
- q(2110) => [
+ q(2128) => [
q(Dorze),
],
- q(2111) => [
+ q(2129) => [
q(Papar),
],
- q(2112) => [
+ q(2130) => [
q(Dair),
],
- q(2113) => [
+ q(2131) => [
q(Minderico),
],
- q(2114) => [
+ q(2132) => [
q(Darmiya),
],
- q(2115) => [
+ q(2133) => [
q(Dolpo),
],
- q(2116) => [
+ q(2134) => [
q(Rungus),
],
- q(2117) => [
+ q(2135) => [
q(C'lela),
],
- q(2118) => [
- q(Darling),
+ q(2136) => [
+ q(Paakantyi),
],
- q(2119) => [
+ q(2137) => [
q(West Damar),
],
- q(2120) => [
+ q(2138) => [
q(Daro-Matu Melanau),
],
- q(2121) => [
+ q(2139) => [
q(Dura),
],
- q(2122) => [
+ q(2140) => [
q(Dororo),
],
- q(2123) => [
+ q(2141) => [
q(Gedeo),
],
- q(2124) => [
+ q(2142) => [
q(Drents),
],
- q(2125) => [
+ q(2143) => [
q(Rukai),
],
- q(2126) => [
+ q(2144) => [
q(Darai),
],
- q(2127) => [
+ q(2145) => [
q(Dutch Sign Language),
],
- q(2128) => [
+ q(2146) => [
q(Daasanach),
],
- q(2129) => [
+ q(2147) => [
q(Disa),
],
- q(2130) => [
+ q(2148) => [
q(Danish Sign Language),
],
- q(2131) => [
+ q(2149) => [
q(Dusner),
],
- q(2132) => [
+ q(2150) => [
q(Desiya),
],
- q(2133) => [
+ q(2151) => [
q(Tadaksahak),
],
- q(2134) => [
+ q(2152) => [
q(Daur),
],
- q(2135) => [
+ q(2153) => [
q(Labuk-Kinabatangan Kadazan),
],
- q(2136) => [
+ q(2154) => [
q(Ditidaht),
],
- q(2137) => [
+ q(2155) => [
+ q(Adithinngithigh),
+ ],
+ q(2156) => [
q(Ana Tinga Dogon),
],
- q(2138) => [
+ q(2157) => [
q(Tene Kan Dogon),
],
- q(2139) => [
+ q(2158) => [
q(Tomo Kan Dogon),
],
- q(2140) => [
+ q(2159) => [
+ q(Tommo So Dogon),
+ ],
+ q(2160) => [
q(Central Dusun),
],
- q(2141) => [
+ q(2161) => [
q(Lotud),
],
- q(2142) => [
+ q(2162) => [
q(Toro So Dogon),
],
- q(2143) => [
+ q(2163) => [
q(Toro Tegu Dogon),
],
- q(2144) => [
+ q(2164) => [
q(Tebul Ure Dogon),
],
- q(2145) => [
+ q(2165) => [
+ q(Dotyali),
+ ],
+ q(2166) => [
q(Dubli),
],
- q(2146) => [
+ q(2167) => [
q(Duna),
],
- q(2147) => [
+ q(2168) => [
q(Hun-Saare),
],
- q(2148) => [
+ q(2169) => [
q(Umiray Dumaget Agta),
],
- q(2149) => [
+ q(2170) => [
q(Dumbea),
],
- q(2150) => [
+ q(2171) => [
q(Duruma),
q(Chiduruma),
],
- q(2151) => [
+ q(2172) => [
q(Dungra Bhil),
],
- q(2152) => [
+ q(2173) => [
q(Dumun),
],
- q(2153) => [
+ q(2174) => [
q(Dhuwal),
],
- q(2154) => [
+ q(2175) => [
q(Uyajitaya),
],
- q(2155) => [
+ q(2176) => [
q(Alabat Island Agta),
],
- q(2156) => [
+ q(2177) => [
q(Dusun Deyah),
],
- q(2157) => [
+ q(2178) => [
q(Dupaninan Agta),
],
- q(2158) => [
+ q(2179) => [
q(Duano),
],
- q(2159) => [
+ q(2180) => [
q(Dusun Malang),
],
- q(2160) => [
+ q(2181) => [
q(Dii),
],
- q(2161) => [
+ q(2182) => [
q(Dumi),
],
- q(2162) => [
+ q(2183) => [
q(Drung),
],
- q(2163) => [
+ q(2184) => [
q(Duvle),
],
- q(2164) => [
+ q(2185) => [
q(Dusun Witu),
],
- q(2165) => [
+ q(2186) => [
q(Duungooma),
],
- q(2166) => [
+ q(2187) => [
q(Dicamay Agta),
],
- q(2167) => [
+ q(2188) => [
q(Duli),
],
- q(2168) => [
+ q(2189) => [
q(Duau),
],
- q(2169) => [
+ q(2190) => [
q(Diri),
],
- q(2170) => [
- q(Walo Kumbe Dogon),
- ],
- q(2171) => [
+ q(2191) => [
q(Dawro),
],
- q(2172) => [
+ q(2192) => [
q(Dutton World Speedwords),
],
- q(2173) => [
+ q(2193) => [
q(Dawawa),
],
- q(2174) => [
+ q(2194) => [
q(Dyan),
],
- q(2175) => [
+ q(2195) => [
q(Dyaberdyaber),
],
- q(2176) => [
+ q(2196) => [
q(Dyugun),
],
- q(2177) => [
+ q(2197) => [
q(Villa Viciosa Agta),
],
- q(2178) => [
+ q(2198) => [
q(Djimini Senoufo),
],
- q(2179) => [
+ q(2199) => [
q(Yanda Dom Dogon),
],
- q(2180) => [
+ q(2200) => [
q(Dyangadi),
],
- q(2181) => [
+ q(2201) => [
q(Jola-Fonyi),
],
- q(2182) => [
+ q(2202) => [
q(Dyaabugay),
],
- q(2183) => [
+ q(2203) => [
q(Tunzu),
],
- q(2184) => [
+ q(2204) => [
q(Daza),
],
- q(2185) => [
+ q(2205) => [
q(Dazaga),
],
- q(2186) => [
+ q(2206) => [
q(Dzalakha),
],
- q(2187) => [
+ q(2207) => [
q(Dzando),
],
- q(2188) => [
+ q(2208) => [
q(Ebughu),
],
- q(2189) => [
+ q(2209) => [
q(Eastern Bontok),
],
- q(2190) => [
+ q(2210) => [
q(Teke-Ebo),
],
- q(2191) => [
+ q(2211) => [
q(Ebrie),
],
- q(2192) => [
+ q(2212) => [
q(Embu),
q(Kiembu),
],
- q(2193) => [
+ q(2213) => [
q(Eteocretan),
],
- q(2194) => [
+ q(2214) => [
q(Ecuadorian Sign Language),
],
- q(2195) => [
+ q(2215) => [
q(Eteocypriot),
],
- q(2196) => [
+ q(2216) => [
q(E),
],
- q(2197) => [
+ q(2217) => [
q(Efai),
],
- q(2198) => [
+ q(2218) => [
q(Efe),
],
- q(2199) => [
+ q(2219) => [
q(Ega),
],
- q(2200) => [
+ q(2220) => [
q(Emilian),
],
- q(2201) => [
+ q(2221) => [
q(Eggon),
],
- q(2202) => [
+ q(2222) => [
q(Ehueun),
],
- q(2203) => [
+ q(2223) => [
q(Eipomek),
],
- q(2204) => [
+ q(2224) => [
q(Eitiep),
],
- q(2205) => [
+ q(2225) => [
q(Askopan),
],
- q(2206) => [
+ q(2226) => [
q(Ejamat),
],
- q(2207) => [
+ q(2227) => [
q(Ekit),
],
- q(2208) => [
+ q(2228) => [
q(Ekari),
],
- q(2209) => [
+ q(2229) => [
q(Eki),
],
- q(2210) => [
+ q(2230) => [
q(Standard Estonian),
],
- q(2211) => [
+ q(2231) => [
+ q(Kol (Bangladesh)),
q(Kol),
],
- q(2212) => [
+ q(2232) => [
q(Elip),
],
- q(2213) => [
+ q(2233) => [
q(Koti),
],
- q(2214) => [
+ q(2234) => [
q(Ekpeye),
],
- q(2215) => [
+ q(2235) => [
q(Yace),
],
- q(2216) => [
+ q(2236) => [
q(Eastern Kayah),
],
- q(2217) => [
+ q(2237) => [
q(Elepi),
],
- q(2218) => [
+ q(2238) => [
q(El Hugeirat),
],
- q(2219) => [
+ q(2239) => [
q(Nding),
],
- q(2220) => [
+ q(2240) => [
q(Elkei),
],
- q(2221) => [
+ q(2241) => [
q(Eleme),
],
- q(2222) => [
+ q(2242) => [
q(El Molo),
],
- q(2223) => [
- q(Elpaputih),
- ],
- q(2224) => [
+ q(2243) => [
q(Elu),
],
- q(2225) => [
+ q(2244) => [
q(Emai-Iuleha-Ora),
],
- q(2226) => [
+ q(2245) => [
q(Embaloh),
],
- q(2227) => [
+ q(2246) => [
q(Emerillon),
],
- q(2228) => [
+ q(2247) => [
q(Eastern Meohang),
],
- q(2229) => [
+ q(2248) => [
q(Mussau-Emira),
],
- q(2230) => [
+ q(2249) => [
q(Eastern Maninkakan),
],
- q(2231) => [
+ q(2250) => [
q(Mamulique),
],
- q(2232) => [
+ q(2251) => [
q(Eman),
],
- q(2233) => [
+ q(2252) => [
q(Emok),
],
- q(2234) => [
+ q(2253) => [
q(Northern Embera),
],
- q(2235) => [
+ q(2254) => [
q(Pacific Gulf Yupik),
],
- q(2236) => [
+ q(2255) => [
q(Eastern Muria),
],
- q(2237) => [
+ q(2256) => [
q(Emplawas),
],
- q(2238) => [
+ q(2257) => [
q(Erromintxela),
],
- q(2239) => [
+ q(2258) => [
q(Epigraphic Mayan),
],
- q(2240) => [
+ q(2259) => [
q(Apali),
],
- q(2241) => [
+ q(2260) => [
q(Markweeta),
],
- q(2242) => [
+ q(2261) => [
q(En),
],
- q(2243) => [
+ q(2262) => [
q(Ende),
],
- q(2244) => [
+ q(2263) => [
q(Forest Enets),
],
- q(2245) => [
+ q(2264) => [
q(Tundra Enets),
],
- q(2246) => [
+ q(2265) => [
q(Engenni),
],
- q(2247) => [
+ q(2266) => [
q(Enggano),
],
- q(2248) => [
+ q(2267) => [
q(Enga),
],
- q(2249) => [
+ q(2268) => [
q(Emumu),
q(Emem),
],
- q(2250) => [
+ q(2269) => [
q(Enu),
],
- q(2251) => [
+ q(2270) => [
q(Enwan (Edu State)),
],
- q(2252) => [
+ q(2271) => [
q(Enwan (Akwa Ibom State)),
],
- q(2253) => [
+ q(2272) => [
q(Beti (Cote d'Ivoire)),
],
- q(2254) => [
+ q(2273) => [
q(Epie),
],
- q(2255) => [
+ q(2274) => [
q(Eravallan),
],
- q(2256) => [
+ q(2275) => [
q(Sie),
],
- q(2257) => [
+ q(2276) => [
q(Eruwa),
],
- q(2258) => [
+ q(2277) => [
q(Ogea),
],
- q(2259) => [
+ q(2278) => [
q(South Efate),
],
- q(2260) => [
+ q(2279) => [
q(Horpa),
],
- q(2261) => [
+ q(2280) => [
q(Erre),
],
- q(2262) => [
+ q(2281) => [
q(Ersu),
],
- q(2263) => [
+ q(2282) => [
q(Eritai),
],
- q(2264) => [
+ q(2283) => [
q(Erokwanas),
],
- q(2265) => [
+ q(2284) => [
q(Ese Ejja),
],
- q(2266) => [
+ q(2285) => [
q(Eshtehardi),
],
- q(2267) => [
+ q(2286) => [
q(North Alaskan Inupiatun),
],
- q(2268) => [
+ q(2287) => [
q(Northwest Alaska Inupiatun),
],
- q(2269) => [
+ q(2288) => [
q(Egypt Sign Language),
],
- q(2270) => [
+ q(2289) => [
q(Esuma),
],
- q(2271) => [
+ q(2290) => [
q(Salvadoran Sign Language),
],
- q(2272) => [
+ q(2291) => [
q(Estonian Sign Language),
],
- q(2273) => [
+ q(2292) => [
q(Esselen),
],
- q(2274) => [
+ q(2293) => [
q(Central Siberian Yupik),
],
- q(2275) => [
+ q(2294) => [
q(Central Yupik),
],
- q(2276) => [
+ q(2295) => [
q(Etebi),
],
- q(2277) => [
+ q(2296) => [
q(Etchemin),
],
- q(2278) => [
+ q(2297) => [
q(Ethiopian Sign Language),
],
- q(2279) => [
+ q(2298) => [
q(Eton (Vanuatu)),
],
- q(2280) => [
+ q(2299) => [
q(Eton (Cameroon)),
],
- q(2281) => [
+ q(2300) => [
q(Edolo),
],
- q(2282) => [
+ q(2301) => [
q(Yekhee),
],
- q(2283) => [
+ q(2302) => [
q(Etruscan),
],
- q(2284) => [
+ q(2303) => [
q(Ejagham),
],
- q(2285) => [
+ q(2304) => [
q(Eten),
],
- q(2286) => [
+ q(2305) => [
q(Semimi),
],
- q(2287) => [
+ q(2306) => [
q(Even),
],
- q(2288) => [
+ q(2307) => [
q(Uvbie),
],
- q(2289) => [
+ q(2308) => [
q(Evenki),
],
- q(2290) => [
+ q(2309) => [
q(Extremaduran),
],
- q(2291) => [
+ q(2310) => [
q(Eyak),
],
- q(2292) => [
+ q(2311) => [
q(Keiyo),
],
- q(2293) => [
+ q(2312) => [
q(Uzekwe),
],
- q(2294) => [
+ q(2313) => [
q(Fasu),
],
- q(2295) => [
+ q(2314) => [
q(Fa D'ambu),
],
- q(2296) => [
+ q(2315) => [
q(Wagi),
],
- q(2297) => [
+ q(2316) => [
q(Fagani),
],
- q(2298) => [
+ q(2317) => [
q(Finongan),
],
- q(2299) => [
+ q(2318) => [
q(Baissa Fali),
],
- q(2300) => [
+ q(2319) => [
q(Faiwol),
],
- q(2301) => [
+ q(2320) => [
q(Faita),
],
- q(2302) => [
+ q(2321) => [
q(Fang (Cameroon)),
],
- q(2303) => [
+ q(2322) => [
q(South Fali),
],
- q(2304) => [
+ q(2323) => [
q(Fam),
],
- q(2305) => [
+ q(2324) => [
q(Palor),
],
- q(2306) => [
+ q(2325) => [
q(Fataleka),
],
- q(2307) => [
+ q(2326) => [
q(Fayu),
],
- q(2308) => [
+ q(2327) => [
q(Fala),
],
- q(2309) => [
+ q(2328) => [
q(Southwestern Fars),
],
- q(2310) => [
+ q(2329) => [
q(Northwestern Fars),
],
- q(2311) => [
+ q(2330) => [
q(West Albay Bikol),
],
- q(2312) => [
+ q(2331) => [
q(Quebec Sign Language),
],
- q(2313) => [
+ q(2332) => [
q(Feroge),
],
- q(2314) => [
+ q(2333) => [
q(Foia Foia),
],
- q(2315) => [
+ q(2334) => [
q(Maasina Fulfulde),
],
- q(2316) => [
+ q(2335) => [
q(Fongoro),
],
- q(2317) => [
+ q(2336) => [
q(Nobiin),
],
- q(2318) => [
+ q(2337) => [
q(Fyer),
],
- q(2319) => [
+ q(2338) => [
q(Fipa),
],
- q(2320) => [
+ q(2339) => [
q(Firan),
],
- q(2321) => [
+ q(2340) => [
q(Tornedalen Finnish),
],
- q(2322) => [
+ q(2341) => [
q(Fiwaga),
],
- q(2323) => [
+ q(2342) => [
+ q(Kirya-Konzel),
+ ],
+ q(2343) => [
q(Kven Finnish),
],
- q(2324) => [
+ q(2344) => [
q(Kalispel-Pend d'Oreille),
],
- q(2325) => [
+ q(2345) => [
q(Foau),
],
- q(2326) => [
+ q(2346) => [
q(Fali),
],
- q(2327) => [
+ q(2347) => [
q(North Fali),
],
- q(2328) => [
+ q(2348) => [
q(Flinders Island),
],
- q(2329) => [
+ q(2349) => [
q(Fuliiru),
],
- q(2330) => [
+ q(2350) => [
q(Tsotsitaal),
],
- q(2331) => [
+ q(2351) => [
q(Fe'fe'),
],
- q(2332) => [
+ q(2352) => [
q(Far Western Muria),
],
- q(2333) => [
+ q(2353) => [
q(Fanagalo),
],
- q(2334) => [
+ q(2354) => [
q(Fania),
],
- q(2335) => [
+ q(2355) => [
q(Foodo),
],
- q(2336) => [
+ q(2356) => [
q(Foi),
],
- q(2337) => [
+ q(2357) => [
q(Foma),
],
- q(2338) => [
+ q(2358) => [
q(Fore),
],
- q(2339) => [
+ q(2359) => [
q(Siraya),
],
- q(2340) => [
+ q(2360) => [
q(Fernando Po Creole English),
],
- q(2341) => [
+ q(2361) => [
q(Fas),
],
- q(2342) => [
+ q(2362) => [
q(Cajun French),
],
- q(2343) => [
+ q(2363) => [
q(Fordata),
],
- q(2344) => [
+ q(2364) => [
q(Frankish),
],
- q(2345) => [
+ q(2365) => [
q(Arpitan),
q(Francoprovencal),
],
- q(2346) => [
+ q(2366) => [
q(Forak),
],
- q(2347) => [
+ q(2367) => [
q(Fortsenal),
],
- q(2348) => [
+ q(2368) => [
q(Finnish Sign Language),
],
- q(2349) => [
+ q(2369) => [
q(French Sign Language),
],
- q(2350) => [
+ q(2370) => [
q(Finland-Swedish Sign Language),
q(finlandssvenskt teckensprak),
q(suomenruotsalainen viittomakieli),
],
- q(2351) => [
+ q(2371) => [
q(Adamawa Fulfulde),
],
- q(2352) => [
+ q(2372) => [
q(Pulaar),
],
- q(2353) => [
+ q(2373) => [
q(East Futuna),
],
- q(2354) => [
+ q(2374) => [
q(Borgu Fulfulde),
],
- q(2355) => [
+ q(2375) => [
q(Pular),
],
- q(2356) => [
+ q(2376) => [
q(Western Niger Fulfulde),
],
- q(2357) => [
+ q(2377) => [
q(Bagirmi Fulfulde),
],
- q(2358) => [
+ q(2378) => [
q(Ko),
],
- q(2359) => [
+ q(2379) => [
q(Fum),
],
- q(2360) => [
+ q(2380) => [
q(Fulnio),
],
- q(2361) => [
+ q(2381) => [
q(Central-Eastern Niger Fulfulde),
],
- q(2362) => [
+ q(2382) => [
q(Futuna-Aniwa),
],
- q(2363) => [
+ q(2383) => [
q(Furu),
],
- q(2364) => [
+ q(2384) => [
q(Nigerian Fulfulde),
],
- q(2365) => [
+ q(2385) => [
q(Fuyug),
],
- q(2366) => [
+ q(2386) => [
q(Fur),
],
- q(2367) => [
+ q(2387) => [
q(Fwai),
],
- q(2368) => [
+ q(2388) => [
q(Fwe),
],
- q(2369) => [
+ q(2389) => [
q(Gabri),
],
- q(2370) => [
+ q(2390) => [
q(Mixed Great Andamanese),
],
- q(2371) => [
+ q(2391) => [
q(Gaddang),
],
- q(2372) => [
+ q(2392) => [
q(Guarequena),
],
- q(2373) => [
+ q(2393) => [
q(Gende),
],
- q(2374) => [
+ q(2394) => [
q(Gagauz),
],
- q(2375) => [
+ q(2395) => [
q(Alekano),
],
- q(2376) => [
+ q(2396) => [
q(Borei),
],
- q(2377) => [
+ q(2397) => [
q(Gadsup),
],
- q(2378) => [
+ q(2398) => [
q(Gamkonora),
],
- q(2379) => [
+ q(2399) => [
q(Galoli),
],
- q(2380) => [
+ q(2400) => [
q(Kandawo),
],
- q(2381) => [
+ q(2401) => [
q(Gan Chinese),
],
- q(2382) => [
+ q(2402) => [
q(Gants),
],
- q(2383) => [
+ q(2403) => [
q(Gal),
],
- q(2384) => [
+ q(2404) => [
q(Gata'),
],
- q(2385) => [
+ q(2405) => [
q(Galeya),
],
- q(2386) => [
+ q(2406) => [
q(Adiwasi Garasia),
],
- q(2387) => [
+ q(2407) => [
q(Kenati),
],
- q(2388) => [
+ q(2408) => [
q(Mudhili Gadaba),
],
- q(2389) => [
+ q(2409) => [
q(Nobonob),
],
- q(2390) => [
+ q(2410) => [
q(Borana-Arsi-Guji Oromo),
],
- q(2391) => [
+ q(2411) => [
q(West Central Oromo),
],
- q(2392) => [
+ q(2412) => [
q(Kaytetye),
],
- q(2393) => [
- q(Garawa),
- ],
- q(2394) => [
+ q(2413) => [
q(Karadjeri),
],
- q(2395) => [
+ q(2414) => [
q(Niksek),
],
- q(2396) => [
+ q(2415) => [
q(Gaikundi),
],
- q(2397) => [
+ q(2416) => [
q(Gbanziri),
],
- q(2398) => [
+ q(2417) => [
q(Defi Gbe),
],
- q(2399) => [
+ q(2418) => [
q(Galela),
],
- q(2400) => [
+ q(2419) => [
q(Bodo Gadaba),
],
- q(2401) => [
+ q(2420) => [
q(Gaddi),
],
- q(2402) => [
+ q(2421) => [
q(Gamit),
],
- q(2403) => [
+ q(2422) => [
q(Garhwali),
],
- q(2404) => [
+ q(2423) => [
q(Mo'da),
],
- q(2405) => [
+ q(2424) => [
q(Northern Grebo),
],
- q(2406) => [
+ q(2425) => [
q(Gbaya-Bossangoa),
],
- q(2407) => [
+ q(2426) => [
q(Gbaya-Bozoum),
],
- q(2408) => [
+ q(2427) => [
q(Gbagyi),
],
- q(2409) => [
+ q(2428) => [
q(Gbesi Gbe),
],
- q(2410) => [
+ q(2429) => [
q(Gagadu),
],
- q(2411) => [
+ q(2430) => [
q(Gbanu),
],
- q(2412) => [
+ q(2431) => [
q(Eastern Xwla Gbe),
],
- q(2413) => [
+ q(2432) => [
q(Gbari),
],
- q(2414) => [
+ q(2433) => [
q(Zoroastrian Dari),
],
- q(2415) => [
+ q(2434) => [
q(Mali),
],
- q(2416) => [
+ q(2435) => [
q(Ganggalida),
],
- q(2417) => [
+ q(2436) => [
q(Galice),
],
- q(2418) => [
+ q(2437) => [
q(Guadeloupean Creole French),
],
- q(2419) => [
+ q(2438) => [
q(Grenadian Creole English),
],
- q(2420) => [
+ q(2439) => [
q(Gaina),
],
- q(2421) => [
+ q(2440) => [
q(Guianese Creole French),
],
- q(2422) => [
+ q(2441) => [
q(Colonia Tovar German),
],
- q(2423) => [
+ q(2442) => [
q(Gade Lohar),
],
- q(2424) => [
+ q(2443) => [
q(Pottangi Ollar Gadaba),
],
- q(2425) => [
+ q(2444) => [
q(Gugu Badhun),
],
- q(2426) => [
+ q(2445) => [
q(Gedaged),
],
- q(2427) => [
+ q(2446) => [
q(Gude),
],
- q(2428) => [
+ q(2447) => [
q(Guduf-Gava),
],
- q(2429) => [
+ q(2448) => [
q(Ga'dang),
],
- q(2430) => [
+ q(2449) => [
q(Gadjerawang),
],
- q(2431) => [
+ q(2450) => [
q(Gundi),
],
- q(2432) => [
+ q(2451) => [
q(Gurdjar),
],
- q(2433) => [
+ q(2452) => [
q(Gadang),
],
- q(2434) => [
+ q(2453) => [
q(Dirasha),
],
- q(2435) => [
+ q(2454) => [
q(Laal),
],
- q(2436) => [
+ q(2455) => [
q(Umanakaina),
],
- q(2437) => [
+ q(2456) => [
q(Ghodoberi),
],
- q(2438) => [
+ q(2457) => [
q(Mehri),
],
- q(2439) => [
+ q(2458) => [
q(Wipi),
],
- q(2440) => [
+ q(2459) => [
+ q(Ghandruk Sign Language),
+ ],
+ q(2460) => [
q(Gudu),
],
- q(2441) => [
+ q(2461) => [
q(Godwari),
],
- q(2442) => [
+ q(2462) => [
q(Geruma),
],
- q(2443) => [
+ q(2463) => [
q(Kire),
],
- q(2444) => [
+ q(2464) => [
q(Gboloo Grebo),
],
- q(2445) => [
+ q(2465) => [
q(Gade),
],
- q(2446) => [
+ q(2466) => [
q(Gengle),
],
- q(2447) => [
+ q(2467) => [
q(Hutterite German),
q(Hutterisch),
],
- q(2448) => [
+ q(2468) => [
q(Gebe),
],
- q(2449) => [
+ q(2469) => [
q(Gen),
],
- q(2450) => [
+ q(2470) => [
q(Yiwom),
],
- q(2451) => [
+ q(2471) => [
q(ut-Ma'in),
],
- q(2452) => [
+ q(2472) => [
q(Geme),
],
- q(2453) => [
+ q(2473) => [
q(Geser-Gorom),
],
- q(2454) => [
+ q(2474) => [
q(Gera),
],
- q(2455) => [
+ q(2475) => [
q(Garre),
],
- q(2456) => [
+ q(2476) => [
q(Enya),
],
- q(2457) => [
+ q(2477) => [
q(Patpatar),
],
- q(2458) => [
+ q(2478) => [
q(Gafat),
],
- q(2459) => [
+ q(2479) => [
+ q(Mangetti Dune !Xung),
+ ],
+ q(2480) => [
q(Gao),
],
- q(2460) => [
+ q(2481) => [
q(Gbii),
],
- q(2461) => [
+ q(2482) => [
q(Gugadj),
],
- q(2462) => [
+ q(2483) => [
q(Guragone),
],
- q(2463) => [
+ q(2484) => [
q(Gurgula),
],
- q(2464) => [
+ q(2485) => [
q(Kungarakany),
],
- q(2465) => [
+ q(2486) => [
q(Ganglau),
],
- q(2466) => [
+ q(2487) => [
q(Eastern Gurung),
],
- q(2467) => [
+ q(2488) => [
q(Southern Gondi),
],
- q(2468) => [
+ q(2489) => [
q(Aghu Tharnggalu),
],
- q(2469) => [
+ q(2490) => [
q(Gitua),
],
- q(2470) => [
+ q(2491) => [
q(Gagu),
],
- q(2471) => [
+ q(2492) => [
q(Gogodala),
],
- q(2472) => [
+ q(2493) => [
q(Ghadames),
],
- q(2473) => [
+ q(2494) => [
q(Hiberno-Scottish Gaelic),
],
- q(2474) => [
+ q(2495) => [
q(Southern Ghale),
],
- q(2475) => [
+ q(2496) => [
q(Northern Ghale),
],
- q(2476) => [
+ q(2497) => [
q(Geko Karen),
],
- q(2477) => [
+ q(2498) => [
q(Ghulfan),
],
- q(2478) => [
+ q(2499) => [
q(Ghanongga),
],
- q(2479) => [
+ q(2500) => [
q(Ghomara),
],
- q(2480) => [
+ q(2501) => [
q(Ghera),
],
- q(2481) => [
+ q(2502) => [
q(Guhu-Samane),
],
- q(2482) => [
+ q(2503) => [
+ q(Kuke),
q(Kutang Ghale),
],
- q(2483) => [
+ q(2504) => [
q(Kitja),
],
- q(2484) => [
+ q(2505) => [
q(Gibanawa),
],
- q(2485) => [
+ q(2506) => [
q(Gail),
],
- q(2486) => [
+ q(2507) => [
q(Gidar),
],
- q(2487) => [
+ q(2508) => [
q(Goaria),
],
- q(2488) => [
+ q(2509) => [
q(Gimi (Eastern Highlands)),
],
- q(2489) => [
+ q(2510) => [
q(Hinukh),
],
- q(2490) => [
- q(Gelao),
- ],
- q(2491) => [
+ q(2511) => [
q(Gimi (West New Britain)),
],
- q(2492) => [
+ q(2512) => [
q(Green Gelao),
],
- q(2493) => [
+ q(2513) => [
q(Red Gelao),
],
- q(2494) => [
+ q(2514) => [
q(North Giziga),
],
- q(2495) => [
+ q(2515) => [
q(Gitxsan),
],
- q(2496) => [
+ q(2516) => [
+ q(Mulao),
+ ],
+ q(2517) => [
q(White Gelao),
],
- q(2497) => [
+ q(2518) => [
q(Gilima),
],
- q(2498) => [
+ q(2519) => [
q(Giyug),
],
- q(2499) => [
+ q(2520) => [
q(South Giziga),
],
- q(2500) => [
+ q(2521) => [
q(Geji),
],
- q(2501) => [
+ q(2522) => [
q(Kachi Koli),
],
- q(2502) => [
+ q(2523) => [
q(Gonja),
],
- q(2503) => [
+ q(2524) => [
q(Gujari),
],
- q(2504) => [
+ q(2525) => [
q(Guya),
],
- q(2505) => [
+ q(2526) => [
q(Ndai),
],
- q(2506) => [
+ q(2527) => [
q(Gokana),
],
- q(2507) => [
+ q(2528) => [
+ q(Kok-Nar),
+ ],
+ q(2529) => [
q(Guinea Kpelle),
],
- q(2508) => [
+ q(2530) => [
q(Bon Gula),
],
- q(2509) => [
+ q(2531) => [
q(Nanai),
],
- q(2510) => [
+ q(2532) => [
q(Northwest Pashayi),
],
- q(2511) => [
+ q(2533) => [
q(Guliguli),
],
- q(2512) => [
+ q(2534) => [
q(Gula Iro),
],
- q(2513) => [
+ q(2535) => [
q(Gilaki),
],
- q(2514) => [
+ q(2536) => [
q(Galambu),
],
- q(2515) => [
+ q(2537) => [
q(Glaro-Twabo),
],
- q(2516) => [
+ q(2538) => [
q(Gula (Chad)),
],
- q(2517) => [
+ q(2539) => [
q(Glavda),
],
- q(2518) => [
+ q(2540) => [
q(Gule),
],
- q(2519) => [
+ q(2541) => [
q(Gambera),
],
- q(2520) => [
+ q(2542) => [
q(Gula'alaa),
],
- q(2521) => [
+ q(2543) => [
q(Maghdi),
],
- q(2522) => [
+ q(2544) => [
q(Middle Low German),
],
- q(2523) => [
+ q(2545) => [
q(Gbaya-Mbodomo),
],
- q(2524) => [
+ q(2546) => [
q(Gimnime),
],
- q(2525) => [
+ q(2547) => [
q(Gumalu),
],
- q(2526) => [
+ q(2548) => [
q(Gamo),
],
- q(2527) => [
+ q(2549) => [
q(Magoma),
],
- q(2528) => [
+ q(2550) => [
q(Mycenaean Greek),
],
- q(2529) => [
+ q(2551) => [
q(Kaansa),
],
- q(2530) => [
+ q(2552) => [
q(Gangte),
],
- q(2531) => [
+ q(2553) => [
q(Guanche),
],
- q(2532) => [
+ q(2554) => [
q(Zulgo-Gemzek),
],
- q(2533) => [
+ q(2555) => [
q(Ganang),
],
- q(2534) => [
+ q(2556) => [
q(Ngangam),
],
- q(2535) => [
+ q(2557) => [
q(Lere),
],
- q(2536) => [
+ q(2558) => [
q(Gooniyandi),
],
- q(2537) => [
+ q(2559) => [
q(//Gana),
],
- q(2538) => [
+ q(2560) => [
q(Gangulu),
],
- q(2539) => [
+ q(2561) => [
q(Ginuman),
],
- q(2540) => [
+ q(2562) => [
q(Gumatj),
],
- q(2541) => [
+ q(2563) => [
q(Northern Gondi),
],
- q(2542) => [
+ q(2564) => [
q(Gana),
],
- q(2543) => [
+ q(2565) => [
q(Gureng Gureng),
],
- q(2544) => [
+ q(2566) => [
q(Guntai),
],
- q(2545) => [
+ q(2567) => [
q(Gnau),
],
- q(2546) => [
+ q(2568) => [
q(Western Bolivian Guarani),
],
- q(2547) => [
+ q(2569) => [
q(Ganzi),
],
- q(2548) => [
+ q(2570) => [
q(Guro),
],
- q(2549) => [
+ q(2571) => [
q(Playero),
],
- q(2550) => [
+ q(2572) => [
q(Gorakor),
],
- q(2551) => [
+ q(2573) => [
q(Godie),
],
- q(2552) => [
+ q(2574) => [
q(Gongduk),
],
- q(2553) => [
+ q(2575) => [
q(Gofa),
],
- q(2554) => [
+ q(2576) => [
q(Gogo),
],
- q(2555) => [
+ q(2577) => [
q(Gobasi),
],
- q(2556) => [
+ q(2578) => [
q(Gowlan),
],
- q(2557) => [
+ q(2579) => [
q(Gowli),
],
- q(2558) => [
+ q(2580) => [
q(Gola),
],
- q(2559) => [
+ q(2581) => [
q(Goan Konkani),
],
- q(2560) => [
+ q(2582) => [
q(Gone Dau),
],
- q(2561) => [
+ q(2583) => [
q(Yeretuar),
],
- q(2562) => [
+ q(2584) => [
q(Gorap),
],
- q(2563) => [
+ q(2585) => [
q(Gronings),
],
- q(2564) => [
+ q(2586) => [
q(Gavar),
],
- q(2565) => [
+ q(2587) => [
q(Gorowa),
],
- q(2566) => [
+ q(2588) => [
q(Gobu),
],
- q(2567) => [
+ q(2589) => [
q(Goundo),
],
- q(2568) => [
+ q(2590) => [
q(Gozarkhani),
],
- q(2569) => [
+ q(2591) => [
q(Gupa-Abawa),
],
- q(2570) => [
+ q(2592) => [
+ q(Ghanaian Pidgin English),
+ ],
+ q(2593) => [
q(Taiap),
],
- q(2571) => [
+ q(2594) => [
q(Ga'anda),
],
- q(2572) => [
+ q(2595) => [
q(Guiqiong),
],
- q(2573) => [
+ q(2596) => [
q(Guana (Brazil)),
],
- q(2574) => [
+ q(2597) => [
q(Gor),
],
- q(2575) => [
+ q(2598) => [
+ q(Qau),
+ ],
+ q(2599) => [
q(Rajput Garasia),
],
- q(2576) => [
+ q(2600) => [
q(Guruntum-Mbaaru),
],
- q(2577) => [
+ q(2601) => [
q(Madi),
],
- q(2578) => [
+ q(2602) => [
q(Gbiri-Niragu),
],
- q(2579) => [
+ q(2603) => [
q(Ghari),
],
- q(2580) => [
+ q(2604) => [
q(Southern Grebo),
],
- q(2581) => [
+ q(2605) => [
q(Kota Marudu Talantang),
],
- q(2582) => [
+ q(2606) => [
q(Groma),
],
- q(2583) => [
+ q(2607) => [
q(Gorovu),
],
- q(2584) => [
+ q(2608) => [
q(Taznatit),
],
- q(2585) => [
+ q(2609) => [
q(Gresi),
],
- q(2586) => [
+ q(2610) => [
q(Garo),
],
- q(2587) => [
+ q(2611) => [
q(Kistane),
],
- q(2588) => [
+ q(2612) => [
q(Central Grebo),
],
- q(2589) => [
+ q(2613) => [
q(Gweda),
],
- q(2590) => [
+ q(2614) => [
q(Guriaso),
],
- q(2591) => [
+ q(2615) => [
q(Barclayville Grebo),
],
- q(2592) => [
+ q(2616) => [
q(Guramalum),
],
- q(2593) => [
+ q(2617) => [
q(Ghanaian Sign Language),
],
- q(2594) => [
+ q(2618) => [
q(German Sign Language),
],
- q(2595) => [
+ q(2619) => [
q(Gusilay),
],
- q(2596) => [
+ q(2620) => [
q(Guatemalan Sign Language),
],
- q(2597) => [
+ q(2621) => [
q(Gusan),
],
- q(2598) => [
+ q(2622) => [
q(Southwest Gbaya),
],
- q(2599) => [
+ q(2623) => [
q(Wasembo),
],
- q(2600) => [
+ q(2624) => [
q(Greek Sign Language),
],
- q(2601) => [
+ q(2625) => [
q(Guato),
],
- q(2602) => [
+ q(2626) => [
q(Gbati-ri),
],
- q(2603) => [
+ q(2627) => [
q(Shiki),
],
- q(2604) => [
+ q(2628) => [
q(Guajajara),
],
- q(2605) => [
+ q(2629) => [
q(Wayuu),
],
- q(2606) => [
+ q(2630) => [
q(Yocoboue Dida),
],
- q(2607) => [
+ q(2631) => [
q(Gurinji),
],
- q(2608) => [
+ q(2632) => [
q(Gupapuyngu),
],
- q(2609) => [
+ q(2633) => [
q(Paraguayan Guarani),
],
- q(2610) => [
+ q(2634) => [
q(Guahibo),
],
- q(2611) => [
+ q(2635) => [
q(Eastern Bolivian Guarani),
],
- q(2612) => [
+ q(2636) => [
q(Gumuz),
],
- q(2613) => [
+ q(2637) => [
q(Sea Island Creole English),
],
- q(2614) => [
+ q(2638) => [
q(Guambiano),
],
- q(2615) => [
+ q(2639) => [
q(Mbya Guarani),
],
- q(2616) => [
+ q(2640) => [
q(Guayabero),
],
- q(2617) => [
+ q(2641) => [
q(Gunwinggu),
],
- q(2618) => [
+ q(2642) => [
q(Ache),
],
- q(2619) => [
+ q(2643) => [
q(Farefare),
],
- q(2620) => [
+ q(2644) => [
q(Guinean Sign Language),
],
- q(2621) => [
+ q(2645) => [
q(Maleku Jaika),
],
- q(2622) => [
+ q(2646) => [
q(Yanomamo),
],
- q(2623) => [
+ q(2647) => [
q(Gey),
],
- q(2624) => [
+ q(2648) => [
q(Gun),
],
- q(2625) => [
+ q(2649) => [
q(Gourmanchema),
],
- q(2626) => [
+ q(2650) => [
q(Gusii),
q(Ekegusii),
],
- q(2627) => [
+ q(2651) => [
q(Guana (Paraguay)),
],
- q(2628) => [
+ q(2652) => [
q(Guanano),
],
- q(2629) => [
+ q(2653) => [
q(Duwet),
],
- q(2630) => [
+ q(2654) => [
q(Golin),
],
- q(2631) => [
+ q(2655) => [
q(Guaja),
],
- q(2632) => [
+ q(2656) => [
q(Gulay),
],
- q(2633) => [
+ q(2657) => [
q(Gurmana),
],
- q(2634) => [
+ q(2658) => [
q(Kuku-Yalanji),
],
- q(2635) => [
+ q(2659) => [
q(Gaviao Do Jiparana),
],
- q(2636) => [
+ q(2660) => [
q(Para Gaviao),
],
- q(2637) => [
+ q(2661) => [
q(Western Gurung),
],
- q(2638) => [
+ q(2662) => [
q(Gumawana),
],
- q(2639) => [
+ q(2663) => [
q(Guyani),
],
- q(2640) => [
+ q(2664) => [
q(Mbato),
],
- q(2641) => [
+ q(2665) => [
q(Gwa),
],
- q(2642) => [
+ q(2666) => [
q(Kalami),
],
- q(2643) => [
+ q(2667) => [
q(Gawwada),
],
- q(2644) => [
+ q(2668) => [
q(Gweno),
],
- q(2645) => [
+ q(2669) => [
q(Gowro),
],
- q(2646) => [
+ q(2670) => [
q(Moo),
],
- q(2647) => [
+ q(2671) => [
q(/Gwi),
],
- q(2648) => [
+ q(2672) => [
+ q(Awngthim),
+ ],
+ q(2673) => [
q(Gwandara),
],
- q(2649) => [
+ q(2674) => [
q(Gwere),
],
- q(2650) => [
+ q(2675) => [
q(Gawar-Bati),
],
- q(2651) => [
+ q(2676) => [
q(Guwamu),
],
- q(2652) => [
+ q(2677) => [
q(Kwini),
],
- q(2653) => [
+ q(2678) => [
q(Gua),
],
- q(2654) => [
+ q(2679) => [
q(We Southern),
],
- q(2655) => [
+ q(2680) => [
q(Northwest Gbaya),
],
- q(2656) => [
+ q(2681) => [
q(Garus),
],
- q(2657) => [
+ q(2682) => [
q(Kayardild),
],
- q(2658) => [
+ q(2683) => [
q(Gyem),
],
- q(2659) => [
+ q(2684) => [
q(Gungabula),
],
- q(2660) => [
+ q(2685) => [
q(Gbayi),
],
- q(2661) => [
+ q(2686) => [
q(Gyele),
],
- q(2662) => [
+ q(2687) => [
q(Gayil),
],
- q(2663) => [
+ q(2688) => [
q(Ngabere),
],
- q(2664) => [
+ q(2689) => [
q(Guyanese Creole English),
],
- q(2665) => [
+ q(2690) => [
q(Guarayu),
],
- q(2666) => [
+ q(2691) => [
q(Gunya),
],
- q(2667) => [
+ q(2692) => [
q(Ganza),
],
- q(2668) => [
+ q(2693) => [
q(Gazi),
],
- q(2669) => [
+ q(2694) => [
q(Gane),
],
- q(2670) => [
+ q(2695) => [
q(Han),
],
- q(2671) => [
+ q(2696) => [
q(Hanoi Sign Language),
],
- q(2672) => [
+ q(2697) => [
q(Gurani),
],
- q(2673) => [
+ q(2698) => [
q(Hatam),
],
- q(2674) => [
+ q(2699) => [
q(Eastern Oromo),
],
- q(2675) => [
+ q(2700) => [
q(Haiphong Sign Language),
],
- q(2676) => [
+ q(2701) => [
q(Hanga),
],
- q(2677) => [
+ q(2702) => [
q(Hahon),
],
- q(2678) => [
+ q(2703) => [
q(Hajong),
],
- q(2679) => [
+ q(2704) => [
q(Hakka Chinese),
],
- q(2680) => [
+ q(2705) => [
q(Halang),
],
- q(2681) => [
+ q(2706) => [
q(Hewa),
],
- q(2682) => [
+ q(2707) => [
q(Hangaza),
],
- q(2683) => [
+ q(2708) => [
q(Hako),
],
- q(2684) => [
+ q(2709) => [
q(Hupla),
],
- q(2685) => [
+ q(2710) => [
q(Ha),
],
- q(2686) => [
+ q(2711) => [
q(Harari),
],
- q(2687) => [
+ q(2712) => [
q(Haisla),
],
- q(2688) => [
+ q(2713) => [
q(Havu),
],
- q(2689) => [
+ q(2714) => [
q(Southern Haida),
],
- q(2690) => [
+ q(2715) => [
q(Haya),
],
- q(2691) => [
+ q(2716) => [
q(Hazaragi),
],
- q(2692) => [
+ q(2717) => [
q(Hamba),
],
- q(2693) => [
+ q(2718) => [
q(Huba),
],
- q(2694) => [
+ q(2719) => [
q(Heiban),
],
- q(2695) => [
+ q(2720) => [
q(Ancient Hebrew),
],
- q(2696) => [
+ q(2721) => [
q(Habu),
],
- q(2697) => [
+ q(2722) => [
q(Andaman Creole Hindi),
],
- q(2698) => [
+ q(2723) => [
q(Huichol),
],
- q(2699) => [
+ q(2724) => [
q(Northern Haida),
],
- q(2700) => [
+ q(2725) => [
q(Honduras Sign Language),
],
- q(2701) => [
+ q(2726) => [
q(Hadiyya),
],
- q(2702) => [
+ q(2727) => [
q(Northern Qiandong Miao),
],
- q(2703) => [
+ q(2728) => [
q(Herde),
],
- q(2704) => [
+ q(2729) => [
q(Helong),
],
- q(2705) => [
+ q(2730) => [
q(Hehe),
],
- q(2706) => [
+ q(2731) => [
q(Heiltsuk),
],
- q(2707) => [
+ q(2732) => [
q(Hemba),
],
- q(2708) => [
+ q(2733) => [
q(Hai//om),
],
- q(2709) => [
+ q(2734) => [
q(Haigwai),
],
- q(2710) => [
+ q(2735) => [
q(Hoia Hoia),
],
- q(2711) => [
+ q(2736) => [
q(Kerak),
],
- q(2712) => [
+ q(2737) => [
q(Hoyahoya),
],
- q(2713) => [
+ q(2738) => [
q(Lamang),
],
- q(2714) => [
+ q(2739) => [
q(Hibito),
],
- q(2715) => [
+ q(2740) => [
q(Hidatsa),
],
- q(2716) => [
+ q(2741) => [
q(Fiji Hindi),
],
- q(2717) => [
+ q(2742) => [
q(Kamwe),
],
- q(2718) => [
+ q(2743) => [
q(Pamosu),
],
- q(2719) => [
+ q(2744) => [
q(Hinduri),
],
- q(2720) => [
+ q(2745) => [
q(Hijuk),
],
- q(2721) => [
+ q(2746) => [
q(Seit-Kaitetu),
],
- q(2722) => [
+ q(2747) => [
q(Tsoa),
],
- q(2723) => [
+ q(2748) => [
q(Himarima),
],
- q(2724) => [
+ q(2749) => [
q(Hiw),
],
- q(2725) => [
+ q(2750) => [
q(Hixkaryana),
],
- q(2726) => [
+ q(2751) => [
q(Haji),
],
- q(2727) => [
+ q(2752) => [
q(Kahe),
],
- q(2728) => [
+ q(2753) => [
q(Hunde),
],
- q(2729) => [
+ q(2754) => [
q(Hunjara-Kaina Ke),
],
- q(2730) => [
+ q(2755) => [
q(Hong Kong Sign Language),
q(Heung Kong Sau Yue),
],
- q(2731) => [
+ q(2756) => [
q(Halia),
],
- q(2732) => [
+ q(2757) => [
q(Halbi),
],
- q(2733) => [
+ q(2758) => [
q(Halang Doan),
],
- q(2734) => [
+ q(2759) => [
q(Hlersu),
],
- q(2735) => [
- q(Nga La),
+ q(2760) => [
+ q(Matu Chin),
],
- q(2736) => [
+ q(2761) => [
q(Hieroglyphic Luwian),
],
- q(2737) => [
+ q(2762) => [
q(Southern Mashan Hmong),
q(Southern Mashan Miao),
],
- q(2738) => [
+ q(2763) => [
q(Humburi Senni Songhay),
],
- q(2739) => [
+ q(2764) => [
q(Central Huishui Hmong),
q(Central Huishui Miao),
],
- q(2740) => [
+ q(2765) => [
q(Large Flowery Miao),
q(A-hmaos),
q(Da-Hua Miao),
],
- q(2741) => [
+ q(2766) => [
q(Eastern Huishui Hmong),
q(Eastern Huishui Miao),
],
- q(2742) => [
+ q(2767) => [
q(Hmong Don),
],
- q(2743) => [
+ q(2768) => [
q(Southwestern Guiyang Hmong),
],
- q(2744) => [
+ q(2769) => [
q(Southwestern Huishui Hmong),
q(Southwestern Huishui Miao),
],
- q(2745) => [
+ q(2770) => [
q(Northern Huishui Hmong),
q(Northern Huishui Miao),
],
- q(2746) => [
+ q(2771) => [
q(Ge),
q(Gejia),
],
- q(2747) => [
+ q(2772) => [
q(Maek),
],
- q(2748) => [
+ q(2773) => [
q(Luopohe Hmong),
q(Luopohe Miao),
],
- q(2749) => [
+ q(2774) => [
q(Central Mashan Hmong),
q(Central Mashan Miao),
],
- q(2750) => [
+ q(2775) => [
q(Northern Mashan Hmong),
q(Northern Mashan Miao),
],
- q(2751) => [
+ q(2776) => [
q(Eastern Qiandong Miao),
],
- q(2752) => [
+ q(2777) => [
q(Hmar),
],
- q(2753) => [
+ q(2778) => [
q(Southern Qiandong Miao),
],
- q(2754) => [
+ q(2779) => [
q(Hamtai),
],
- q(2755) => [
+ q(2780) => [
q(Hamap),
],
- q(2756) => [
+ q(2781) => [
q(Hmong Do),
],
- q(2757) => [
+ q(2782) => [
q(Western Mashan Hmong),
q(Western Mashan Miao),
],
- q(2758) => [
+ q(2783) => [
q(Southern Guiyang Hmong),
q(Southern Guiyang Miao),
],
- q(2759) => [
+ q(2784) => [
q(Hmong Shua),
q(Sinicized Miao),
],
- q(2760) => [
+ q(2785) => [
q(Mina (Cameroon)),
],
- q(2761) => [
+ q(2786) => [
q(Southern Hindko),
],
- q(2762) => [
+ q(2787) => [
q(Chhattisgarhi),
],
- q(2763) => [
+ q(2788) => [
q(//Ani),
],
- q(2764) => [
+ q(2789) => [
q(Hani),
],
- q(2765) => [
+ q(2790) => [
q(Hmong Njua),
q(Mong Leng),
q(Mong Njua),
],
- q(2766) => [
+ q(2791) => [
q(Hanunoo),
],
- q(2767) => [
+ q(2792) => [
q(Northern Hindko),
],
- q(2768) => [
+ q(2793) => [
q(Caribbean Hindustani),
],
- q(2769) => [
+ q(2794) => [
q(Hung),
],
- q(2770) => [
+ q(2795) => [
q(Hoava),
],
- q(2771) => [
+ q(2796) => [
q(Mari (Madang Province)),
],
- q(2772) => [
+ q(2797) => [
q(Ho),
],
- q(2773) => [
+ q(2798) => [
q(Holma),
],
- q(2774) => [
+ q(2799) => [
q(Horom),
],
- q(2775) => [
+ q(2800) => [
q(Hobyot),
],
- q(2776) => [
+ q(2801) => [
q(Holikachuk),
],
- q(2777) => [
+ q(2802) => [
q(Hadothi),
+ q(Haroti),
],
- q(2778) => [
+ q(2803) => [
q(Holu),
],
- q(2779) => [
+ q(2804) => [
q(Homa),
],
- q(2780) => [
+ q(2805) => [
q(Holoholo),
],
- q(2781) => [
+ q(2806) => [
q(Hopi),
],
- q(2782) => [
+ q(2807) => [
q(Horo),
],
- q(2783) => [
+ q(2808) => [
q(Ho Chi Minh City Sign Language),
],
- q(2784) => [
+ q(2809) => [
q(Hote),
q(Male),
],
- q(2785) => [
+ q(2810) => [
q(Hovongan),
],
- q(2786) => [
+ q(2811) => [
q(Honi),
],
- q(2787) => [
+ q(2812) => [
q(Holiya),
],
- q(2788) => [
+ q(2813) => [
q(Hozo),
],
- q(2789) => [
+ q(2814) => [
q(Hpon),
],
- q(2790) => [
+ q(2815) => [
q(Hawai'i Pidgin Sign Language),
],
- q(2791) => [
+ q(2816) => [
q(Hrangkhol),
],
- q(2792) => [
+ q(2817) => [
q(Hre),
],
- q(2793) => [
+ q(2818) => [
q(Haruku),
],
- q(2794) => [
+ q(2819) => [
q(Horned Miao),
],
- q(2795) => [
+ q(2820) => [
q(Haroi),
],
- q(2796) => [
- q(Horuru),
- ],
- q(2797) => [
+ q(2821) => [
q(Hertevin),
],
- q(2798) => [
+ q(2822) => [
q(Hruso),
],
- q(2799) => [
+ q(2823) => [
q(Hunsrik),
],
- q(2800) => [
+ q(2824) => [
q(Harzani),
],
- q(2801) => [
+ q(2825) => [
q(Hungarian Sign Language),
],
- q(2802) => [
+ q(2826) => [
q(Hausa Sign Language),
],
- q(2803) => [
+ q(2827) => [
q(Xiang Chinese),
],
- q(2804) => [
+ q(2828) => [
q(Harsusi),
],
- q(2805) => [
+ q(2829) => [
q(Hoti),
],
- q(2806) => [
+ q(2830) => [
q(Minica Huitoto),
],
- q(2807) => [
+ q(2831) => [
q(Hadza),
],
- q(2808) => [
+ q(2832) => [
q(Hitu),
],
- q(2809) => [
+ q(2833) => [
q(Middle Hittite),
],
- q(2810) => [
+ q(2834) => [
q(Huambisa),
],
- q(2811) => [
+ q(2835) => [
q(=/Hua),
],
- q(2812) => [
+ q(2836) => [
q(Huaulu),
],
- q(2813) => [
+ q(2837) => [
q(San Francisco Del Mar Huave),
],
- q(2814) => [
+ q(2838) => [
q(Humene),
],
- q(2815) => [
+ q(2839) => [
q(Huachipaeri),
],
- q(2816) => [
+ q(2840) => [
q(Huilliche),
],
- q(2817) => [
+ q(2841) => [
q(Huli),
],
- q(2818) => [
+ q(2842) => [
q(Northern Guiyang Hmong),
q(Northern Guiyang Miao),
],
- q(2819) => [
+ q(2843) => [
q(Hulung),
],
- q(2820) => [
+ q(2844) => [
q(Hula),
],
- q(2821) => [
+ q(2845) => [
q(Hungana),
],
- q(2822) => [
+ q(2846) => [
q(Hu),
],
- q(2823) => [
+ q(2847) => [
q(Tsat),
],
- q(2824) => [
+ q(2848) => [
q(Halkomelem),
],
- q(2825) => [
+ q(2849) => [
q(Huastec),
],
- q(2826) => [
+ q(2850) => [
q(Humla),
],
- q(2827) => [
+ q(2851) => [
q(Murui Huitoto),
],
- q(2828) => [
+ q(2852) => [
q(San Mateo Del Mar Huave),
],
- q(2829) => [
+ q(2853) => [
q(Hukumina),
],
- q(2830) => [
+ q(2854) => [
q(Nupode Huitoto),
],
- q(2831) => [
+ q(2855) => [
q(Hulaula),
],
- q(2832) => [
+ q(2856) => [
q(Hunzib),
],
- q(2833) => [
+ q(2857) => [
q(Haitian Vodoun Culture Language),
],
- q(2834) => [
+ q(2858) => [
q(San Dionisio Del Mar Huave),
],
- q(2835) => [
+ q(2859) => [
q(Haveke),
],
- q(2836) => [
+ q(2860) => [
q(Sabu),
],
- q(2837) => [
+ q(2861) => [
q(Santa Maria Del Mar Huave),
],
- q(2838) => [
+ q(2862) => [
q(Wane),
],
- q(2839) => [
+ q(2863) => [
q(Hawai'i Creole English),
],
- q(2840) => [
+ q(2864) => [
q(Hwana),
],
- q(2841) => [
+ q(2865) => [
q(Hya),
],
- q(2842) => [
+ q(2866) => [
q(Iaai),
],
- q(2843) => [
+ q(2867) => [
q(Iatmul),
],
- q(2844) => [
+ q(2868) => [
q(Iapama),
],
- q(2845) => [
+ q(2869) => [
q(Purari),
],
- q(2846) => [
+ q(2870) => [
q(Ibibio),
],
- q(2847) => [
+ q(2871) => [
q(Iwaidja),
],
- q(2848) => [
+ q(2872) => [
q(Akpes),
],
- q(2849) => [
+ q(2873) => [
q(Ibanag),
],
- q(2850) => [
- q(Ibilo),
- ],
- q(2851) => [
+ q(2874) => [
q(Ibaloi),
],
- q(2852) => [
+ q(2875) => [
q(Agoi),
],
- q(2853) => [
+ q(2876) => [
q(Ibino),
],
- q(2854) => [
+ q(2877) => [
q(Ibuoro),
],
- q(2855) => [
+ q(2878) => [
q(Ibu),
],
- q(2856) => [
+ q(2879) => [
q(Ibani),
],
- q(2857) => [
+ q(2880) => [
q(Ede Ica),
],
- q(2858) => [
+ q(2881) => [
q(Etkywan),
],
- q(2859) => [
+ q(2882) => [
q(Icelandic Sign Language),
],
- q(2860) => [
+ q(2883) => [
q(Islander Creole English),
],
- q(2861) => [
+ q(2884) => [
q(Idakho-Isukha-Tiriki),
q(Luidakho-Luisukha-Lutirichi),
],
- q(2862) => [
+ q(2885) => [
q(Indo-Portuguese),
],
- q(2863) => [
+ q(2886) => [
q(Idon),
],
- q(2864) => [
+ q(2887) => [
q(Ede Idaca),
],
- q(2865) => [
+ q(2888) => [
q(Idere),
],
- q(2866) => [
+ q(2889) => [
q(Idi),
],
- q(2867) => [
+ q(2890) => [
q(Indri),
],
- q(2868) => [
+ q(2891) => [
q(Idesa),
],
- q(2869) => [
+ q(2892) => [
q(Idate),
],
- q(2870) => [
+ q(2893) => [
q(Idoma),
],
- q(2871) => [
+ q(2894) => [
q(Amganad Ifugao),
],
- q(2872) => [
+ q(2895) => [
q(Batad Ifugao),
q(Ayangan Ifugao),
],
- q(2873) => [
+ q(2896) => [
q(Ife),
],
- q(2874) => [
+ q(2897) => [
q(Ifo),
],
- q(2875) => [
+ q(2898) => [
q(Tuwali Ifugao),
],
- q(2876) => [
+ q(2899) => [
q(Teke-Fuumu),
],
- q(2877) => [
+ q(2900) => [
q(Mayoyao Ifugao),
],
- q(2878) => [
+ q(2901) => [
q(Keley-I Kallahan),
],
- q(2879) => [
+ q(2902) => [
q(Ebira),
],
- q(2880) => [
+ q(2903) => [
q(Igede),
],
- q(2881) => [
+ q(2904) => [
q(Igana),
],
- q(2882) => [
+ q(2905) => [
q(Igala),
],
- q(2883) => [
+ q(2906) => [
q(Kanggape),
],
- q(2884) => [
+ q(2907) => [
q(Ignaciano),
],
- q(2885) => [
+ q(2908) => [
q(Isebe),
],
- q(2886) => [
+ q(2909) => [
q(Interglossa),
],
- q(2887) => [
+ q(2910) => [
q(Igwe),
],
- q(2888) => [
+ q(2911) => [
q(Iha Based Pidgin),
],
- q(2889) => [
+ q(2912) => [
q(Ihievbe),
],
- q(2890) => [
+ q(2913) => [
q(Iha),
],
- q(2891) => [
+ q(2914) => [
+ q(Bidhawal),
+ ],
+ q(2915) => [
q(Izon),
],
- q(2892) => [
+ q(2916) => [
q(Biseni),
],
- q(2893) => [
+ q(2917) => [
q(Ede Ije),
],
- q(2894) => [
+ q(2918) => [
q(Kalabari),
],
- q(2895) => [
+ q(2919) => [
q(Southeast Ijo),
],
- q(2896) => [
+ q(2920) => [
q(Eastern Canadian Inuktitut),
],
- q(2897) => [
+ q(2921) => [
q(Iko),
],
- q(2898) => [
+ q(2922) => [
q(Ika),
],
- q(2899) => [
+ q(2923) => [
q(Ikulu),
],
- q(2900) => [
+ q(2924) => [
q(Olulumo-Ikom),
],
- q(2901) => [
+ q(2925) => [
q(Ikpeshi),
],
- q(2902) => [
+ q(2926) => [
+ q(Inuinnaqtun),
q(Western Canadian Inuktitut),
],
- q(2903) => [
+ q(2927) => [
q(Iku-Gora-Ankwa),
],
- q(2904) => [
+ q(2928) => [
q(Ikwere),
],
- q(2905) => [
+ q(2929) => [
q(Ik),
],
- q(2906) => [
+ q(2930) => [
q(Ikizu),
],
- q(2907) => [
+ q(2931) => [
q(Ile Ape),
],
- q(2908) => [
+ q(2932) => [
q(Ila),
],
- q(2909) => [
+ q(2933) => [
q(Garig-Ilgar),
],
- q(2910) => [
+ q(2934) => [
q(Ili Turki),
],
- q(2911) => [
+ q(2935) => [
q(Ilongot),
],
- q(2912) => [
+ q(2936) => [
q(Iranun),
],
- q(2913) => [
+ q(2937) => [
q(International Sign),
],
- q(2914) => [
+ q(2938) => [
q(Ili'uun),
],
- q(2915) => [
+ q(2939) => [
q(Ilue),
],
- q(2916) => [
+ q(2940) => [
q(Talur),
],
- q(2917) => [
+ q(2941) => [
q(Mala Malasar),
],
- q(2918) => [
+ q(2942) => [
q(Imeraguen),
],
- q(2919) => [
+ q(2943) => [
q(Anamgura),
],
- q(2920) => [
+ q(2944) => [
q(Miluk),
],
- q(2921) => [
+ q(2945) => [
q(Imonda),
],
- q(2922) => [
+ q(2946) => [
q(Imbongu),
],
- q(2923) => [
+ q(2947) => [
q(Imroing),
],
- q(2924) => [
+ q(2948) => [
q(Marsian),
],
- q(2925) => [
+ q(2949) => [
q(Milyan),
],
- q(2926) => [
+ q(2950) => [
q(Inga),
],
- q(2927) => [
+ q(2951) => [
q(Degexit'an),
],
- q(2928) => [
+ q(2952) => [
q(Jungle Inga),
],
- q(2929) => [
+ q(2953) => [
q(Indonesian Sign Language),
],
- q(2930) => [
+ q(2954) => [
q(Minaean),
],
- q(2931) => [
+ q(2955) => [
q(Isinai),
],
- q(2932) => [
+ q(2956) => [
q(Inoke-Yate),
],
- q(2933) => [
+ q(2957) => [
q(Inapari),
],
- q(2934) => [
+ q(2958) => [
q(Indian Sign Language),
],
- q(2935) => [
+ q(2959) => [
q(Intha),
],
- q(2936) => [
+ q(2960) => [
q(Ineseno),
],
- q(2937) => [
+ q(2961) => [
q(Inor),
],
- q(2938) => [
+ q(2962) => [
q(Tuma-Irumu),
],
- q(2939) => [
+ q(2963) => [
q(Iowa-Oto),
],
- q(2940) => [
+ q(2964) => [
q(Ipili),
],
- q(2941) => [
+ q(2965) => [
q(Ipiko),
],
- q(2942) => [
+ q(2966) => [
q(Iquito),
],
- q(2943) => [
+ q(2967) => [
q(Iresim),
],
- q(2944) => [
+ q(2968) => [
q(Irarutu),
],
- q(2945) => [
+ q(2969) => [
q(Irigwe),
],
- q(2946) => [
+ q(2970) => [
q(Iraqw),
],
- q(2947) => [
+ q(2971) => [
q(Irantxe),
],
- q(2948) => [
+ q(2972) => [
q(Ir),
],
- q(2949) => [
+ q(2973) => [
q(Irula),
],
- q(2950) => [
+ q(2974) => [
q(Kamberau),
],
- q(2951) => [
+ q(2975) => [
q(Iraya),
],
- q(2952) => [
+ q(2976) => [
q(Isabi),
],
- q(2953) => [
+ q(2977) => [
q(Isconahua),
],
- q(2954) => [
+ q(2978) => [
q(Isnag),
],
- q(2955) => [
+ q(2979) => [
q(Italian Sign Language),
],
- q(2956) => [
+ q(2980) => [
q(Irish Sign Language),
],
- q(2957) => [
+ q(2981) => [
q(Esan),
],
- q(2958) => [
+ q(2982) => [
q(Nkem-Nkum),
],
- q(2959) => [
+ q(2983) => [
q(Ishkashimi),
],
- q(2960) => [
+ q(2984) => [
q(Masimasi),
],
- q(2961) => [
+ q(2985) => [
q(Isanzu),
],
- q(2962) => [
+ q(2986) => [
q(Isoko),
],
- q(2963) => [
+ q(2987) => [
q(Israeli Sign Language),
],
- q(2964) => [
+ q(2988) => [
q(Istriot),
],
- q(2965) => [
+ q(2989) => [
q(Isu (Menchum Division)),
],
- q(2966) => [
+ q(2990) => [
q(Binongan Itneg),
],
- q(2967) => [
+ q(2991) => [
q(Itene),
],
- q(2968) => [
+ q(2992) => [
q(Inlaod Itneg),
],
- q(2969) => [
+ q(2993) => [
q(Judeo-Italian),
],
- q(2970) => [
+ q(2994) => [
q(Itelmen),
],
- q(2971) => [
+ q(2995) => [
q(Itu Mbon Uzo),
],
- q(2972) => [
+ q(2996) => [
q(Itonama),
],
- q(2973) => [
+ q(2997) => [
q(Iteri),
],
- q(2974) => [
+ q(2998) => [
q(Isekiri),
],
- q(2975) => [
+ q(2999) => [
q(Maeng Itneg),
],
- q(2976) => [
+ q(3000) => [
q(Itawit),
],
- q(2977) => [
+ q(3001) => [
q(Ito),
],
- q(2978) => [
+ q(3002) => [
q(Itik),
],
- q(2979) => [
+ q(3003) => [
q(Moyadan Itneg),
],
- q(2980) => [
+ q(3004) => [
q(Itza),
],
- q(2981) => [
+ q(3005) => [
q(Iu Mien),
],
- q(2982) => [
+ q(3006) => [
q(Ibatan),
],
- q(2983) => [
+ q(3007) => [
q(Ivatan),
],
- q(2984) => [
+ q(3008) => [
q(I-Wak),
],
- q(2985) => [
+ q(3009) => [
q(Iwam),
],
- q(2986) => [
+ q(3010) => [
q(Iwur),
],
- q(2987) => [
+ q(3011) => [
q(Sepik Iwam),
],
- q(2988) => [
+ q(3012) => [
q(Ixcatec),
],
- q(2989) => [
+ q(3013) => [
q(Ixil),
],
- q(2990) => [
+ q(3014) => [
q(Iyayu),
],
- q(2991) => [
+ q(3015) => [
q(Mesaka),
],
- q(2992) => [
+ q(3016) => [
q(Yaka (Congo)),
],
- q(2993) => [
+ q(3017) => [
q(Ingrian),
],
- q(2994) => [
+ q(3018) => [
q(Izi-Ezaa-Ikwo-Mgbo),
],
- q(2995) => [
+ q(3019) => [
q(Izere),
],
- q(2996) => [
+ q(3020) => [
q(Jamamadi),
],
- q(2997) => [
+ q(3021) => [
q(Hyam),
],
- q(2998) => [
+ q(3022) => [
q(Popti'),
q(Jakalteko),
],
- q(2999) => [
+ q(3023) => [
q(Jahanka),
],
- q(3000) => [
+ q(3024) => [
q(Yabem),
],
- q(3001) => [
+ q(3025) => [
q(Jara),
],
- q(3002) => [
+ q(3026) => [
q(Jah Hut),
],
- q(3003) => [
+ q(3027) => [
q(Zazao),
],
- q(3004) => [
+ q(3028) => [
q(Jakun),
],
- q(3005) => [
+ q(3029) => [
q(Yalahatan),
],
- q(3006) => [
+ q(3030) => [
q(Jamaican Creole English),
],
- q(3007) => [
+ q(3031) => [
+ q(Jandai),
+ ],
+ q(3032) => [
q(Yanyuwa),
],
- q(3008) => [
+ q(3033) => [
q(Yaqay),
],
- q(3009) => [
- q(Jarawa (Nigeria)),
- ],
- q(3010) => [
+ q(3034) => [
q(New Caledonian Javanese),
],
- q(3011) => [
+ q(3035) => [
q(Jakati),
],
- q(3012) => [
+ q(3036) => [
q(Yaur),
],
- q(3013) => [
+ q(3037) => [
q(Jambi Malay),
],
- q(3014) => [
+ q(3038) => [
q(Yan-nhangu),
],
- q(3015) => [
+ q(3039) => [
q(Jawe),
],
- q(3016) => [
+ q(3040) => [
q(Judeo-Berber),
],
- q(3017) => [
+ q(3041) => [
q(Arandai),
],
- q(3018) => [
+ q(3042) => [
+ q(Barikewa),
+ ],
+ q(3043) => [
q(Nafusi),
],
- q(3019) => [
+ q(3044) => [
q(Jofotek-Bromnya),
],
- q(3020) => [
+ q(3045) => [
q(Jabuti),
],
- q(3021) => [
+ q(3046) => [
q(Jukun Takum),
],
- q(3022) => [
+ q(3047) => [
+ q(Yawijibaya),
+ ],
+ q(3048) => [
q(Jamaican Country Sign Language),
],
- q(3023) => [
+ q(3049) => [
q(Krymchak),
],
- q(3024) => [
+ q(3050) => [
q(Jad),
],
- q(3025) => [
+ q(3051) => [
q(Jadgali),
],
- q(3026) => [
+ q(3052) => [
q(Judeo-Tat),
],
- q(3027) => [
+ q(3053) => [
q(Jebero),
],
- q(3028) => [
+ q(3054) => [
q(Jerung),
],
- q(3029) => [
+ q(3055) => [
q(Jeng),
],
- q(3030) => [
+ q(3056) => [
q(Jeh),
],
- q(3031) => [
+ q(3057) => [
q(Yei),
],
- q(3032) => [
+ q(3058) => [
q(Jeri Kuo),
],
- q(3033) => [
+ q(3059) => [
q(Yelmek),
],
- q(3034) => [
+ q(3060) => [
q(Dza),
],
- q(3035) => [
+ q(3061) => [
q(Jere),
],
- q(3036) => [
+ q(3062) => [
q(Manem),
],
- q(3037) => [
+ q(3063) => [
q(Jonkor Bourmataguil),
],
- q(3038) => [
+ q(3064) => [
q(Ngbee),
],
- q(3039) => [
+ q(3065) => [
q(Judeo-Georgian),
],
- q(3040) => [
+ q(3066) => [
+ q(Gwak),
+ ],
+ q(3067) => [
q(Ngomba),
],
- q(3041) => [
+ q(3068) => [
q(Jehai),
],
- q(3042) => [
+ q(3069) => [
q(Jhankot Sign Language),
],
- q(3043) => [
+ q(3070) => [
q(Jina),
],
- q(3044) => [
+ q(3071) => [
q(Jibu),
],
- q(3045) => [
+ q(3072) => [
q(Tol),
],
- q(3046) => [
+ q(3073) => [
q(Bu),
],
- q(3047) => [
+ q(3074) => [
q(Jilbe),
],
- q(3048) => [
+ q(3075) => [
q(Djingili),
],
- q(3049) => [
+ q(3076) => [
+ q(sTodsde),
q(Shangzhai),
],
- q(3050) => [
+ q(3077) => [
q(Jiiddu),
],
- q(3051) => [
+ q(3078) => [
q(Jilim),
],
- q(3052) => [
+ q(3079) => [
q(Jimi (Cameroon)),
],
- q(3053) => [
+ q(3080) => [
q(Jiamao),
],
- q(3054) => [
+ q(3081) => [
q(Guanyinqiao),
+ q(Lavrung),
],
- q(3055) => [
+ q(3082) => [
q(Jita),
],
- q(3056) => [
+ q(3083) => [
q(Youle Jinuo),
],
- q(3057) => [
+ q(3084) => [
q(Shuar),
],
- q(3058) => [
+ q(3085) => [
q(Buyuan Jinuo),
],
- q(3059) => [
+ q(3086) => [
+ q(Bankal),
+ ],
+ q(3087) => [
+ q(Mobwa Karen),
+ ],
+ q(3088) => [
q(Kubo),
],
- q(3060) => [
+ q(3089) => [
+ q(Paku Karen),
+ ],
+ q(3090) => [
+ q(Koro (India)),
+ ],
+ q(3091) => [
q(Labir),
],
- q(3061) => [
+ q(3092) => [
q(Ngile),
],
- q(3062) => [
+ q(3093) => [
q(Jamaican Sign Language),
],
- q(3063) => [
+ q(3094) => [
q(Dima),
],
- q(3064) => [
+ q(3095) => [
q(Zumbun),
],
- q(3065) => [
+ q(3096) => [
q(Machame),
],
- q(3066) => [
+ q(3097) => [
q(Yamdena),
],
- q(3067) => [
+ q(3098) => [
q(Jimi (Nigeria)),
],
- q(3068) => [
+ q(3099) => [
q(Jumli),
],
- q(3069) => [
+ q(3100) => [
q(Makuri Naga),
],
- q(3070) => [
+ q(3101) => [
q(Kamara),
],
- q(3071) => [
+ q(3102) => [
q(Mashi (Nigeria)),
],
- q(3072) => [
+ q(3103) => [
+ q(Mouwase),
+ ],
+ q(3104) => [
q(Western Juxtlahuaca Mixtec),
],
- q(3073) => [
+ q(3105) => [
q(Jangshung),
],
- q(3074) => [
+ q(3106) => [
q(Jandavra),
],
- q(3075) => [
+ q(3107) => [
q(Yangman),
],
- q(3076) => [
+ q(3108) => [
q(Janji),
],
- q(3077) => [
+ q(3109) => [
q(Yemsa),
],
- q(3078) => [
+ q(3110) => [
q(Rawat),
],
- q(3079) => [
+ q(3111) => [
q(Jaunsari),
],
- q(3080) => [
+ q(3112) => [
q(Joba),
],
- q(3081) => [
+ q(3113) => [
q(Wojenaka),
],
- q(3082) => [
+ q(3114) => [
q(Jora),
],
- q(3083) => [
+ q(3115) => [
q(Jordanian Sign Language),
],
- q(3084) => [
+ q(3116) => [
q(Jowulu),
],
- q(3085) => [
+ q(3117) => [
q(Jewish Palestinian Aramaic),
],
- q(3086) => [
+ q(3118) => [
q(Jaqaru),
],
- q(3087) => [
+ q(3119) => [
q(Jarai),
],
- q(3088) => [
+ q(3120) => [
q(Jiru),
],
- q(3089) => [
+ q(3121) => [
q(Jorto),
],
- q(3090) => [
+ q(3122) => [
q(Japreria),
],
- q(3091) => [
+ q(3123) => [
q(Japanese Sign Language),
],
- q(3092) => [
+ q(3124) => [
q(Juma),
],
- q(3093) => [
+ q(3125) => [
q(Wannu),
],
- q(3094) => [
+ q(3126) => [
q(Jurchen),
],
- q(3095) => [
+ q(3127) => [
q(Worodougou),
],
- q(3096) => [
+ q(3128) => [
q(Hone),
],
- q(3097) => [
+ q(3129) => [
+ q(Ngadjuri),
+ ],
+ q(3130) => [
q(Wapan),
],
- q(3098) => [
+ q(3131) => [
q(Jirel),
],
- q(3099) => [
+ q(3132) => [
q(Jumjum),
],
- q(3100) => [
+ q(3133) => [
q(Juang),
],
- q(3101) => [
+ q(3134) => [
q(Jiba),
],
- q(3102) => [
+ q(3135) => [
q(Hupde),
],
- q(3103) => [
+ q(3136) => [
q(Juruna),
],
- q(3104) => [
+ q(3137) => [
q(Jumla Sign Language),
],
- q(3105) => [
+ q(3138) => [
q(Jutish),
],
- q(3106) => [
+ q(3139) => [
q(Ju),
],
- q(3107) => [
+ q(3140) => [
q(Wapha),
],
- q(3108) => [
+ q(3141) => [
q(Juray),
],
- q(3109) => [
+ q(3142) => [
q(Javindo),
],
- q(3110) => [
+ q(3143) => [
q(Caribbean Javanese),
],
- q(3111) => [
+ q(3144) => [
q(Jwira-Pepesa),
],
- q(3112) => [
+ q(3145) => [
q(Jiarong),
],
- q(3113) => [
+ q(3146) => [
q(Judeo-Yemeni Arabic),
],
- q(3114) => [
+ q(3147) => [
q(Jaya),
],
- q(3115) => [
- q(Kadara),
+ q(3148) => [
+ q(Adara),
],
- q(3116) => [
+ q(3149) => [
q(Ketangalan),
],
- q(3117) => [
+ q(3150) => [
q(Katso),
],
- q(3118) => [
+ q(3151) => [
q(Kajaman),
],
- q(3119) => [
+ q(3152) => [
q(Kara (Central African Republic)),
],
- q(3120) => [
+ q(3153) => [
q(Karekare),
],
- q(3121) => [
+ q(3154) => [
q(Jju),
],
- q(3122) => [
+ q(3155) => [
q(Kayapa Kallahan),
],
- q(3123) => [
+ q(3156) => [
q(Xaasongaxango),
],
- q(3124) => [
+ q(3157) => [
q(Bezhta),
],
- q(3125) => [
+ q(3158) => [
q(Capanahua),
],
- q(3126) => [
+ q(3159) => [
q(Katukina),
],
- q(3127) => [
+ q(3160) => [
q(Kao),
],
- q(3128) => [
+ q(3161) => [
q(Kamayura),
],
- q(3129) => [
+ q(3162) => [
q(Kalarko),
],
- q(3130) => [
+ q(3163) => [
q(Kaxuiana),
],
- q(3131) => [
+ q(3164) => [
q(Kadiweu),
],
- q(3132) => [
+ q(3165) => [
q(Kanju),
],
- q(3133) => [
+ q(3166) => [
q(Kakauhua),
],
- q(3134) => [
+ q(3167) => [
q(Khamba),
],
- q(3135) => [
+ q(3168) => [
q(Camsa),
],
- q(3136) => [
+ q(3169) => [
q(Kaptiau),
],
- q(3137) => [
+ q(3170) => [
q(Kari),
],
- q(3138) => [
+ q(3171) => [
q(Grass Koiari),
],
- q(3139) => [
+ q(3172) => [
q(Kanembu),
],
- q(3140) => [
+ q(3173) => [
q(Iwal),
],
- q(3141) => [
+ q(3174) => [
q(Kare (Central African Republic)),
],
- q(3142) => [
+ q(3175) => [
q(Keliko),
],
- q(3143) => [
+ q(3176) => [
q(Kabiye),
],
- q(3144) => [
+ q(3177) => [
q(Kamano),
],
- q(3145) => [
+ q(3178) => [
q(Kafa),
],
- q(3146) => [
+ q(3179) => [
q(Kande),
],
- q(3147) => [
+ q(3180) => [
q(Abadi),
],
- q(3148) => [
+ q(3181) => [
q(Kabutra),
],
- q(3149) => [
+ q(3182) => [
q(Dera (Indonesia)),
],
- q(3150) => [
+ q(3183) => [
q(Kaiep),
],
- q(3151) => [
+ q(3184) => [
q(Ap Ma),
],
- q(3152) => [
+ q(3185) => [
q(Manga Kanuri),
],
- q(3153) => [
+ q(3186) => [
q(Duhwa),
],
- q(3154) => [
+ q(3187) => [
q(Khanty),
],
- q(3155) => [
+ q(3188) => [
q(Kawacha),
],
- q(3156) => [
+ q(3189) => [
q(Lubila),
],
- q(3157) => [
+ q(3190) => [
q(Ngkalmpw Kanum),
],
- q(3158) => [
+ q(3191) => [
q(Kaivi),
],
- q(3159) => [
+ q(3192) => [
q(Ukaan),
],
- q(3160) => [
+ q(3193) => [
q(Tyap),
],
- q(3161) => [
+ q(3194) => [
q(Vono),
],
- q(3162) => [
+ q(3195) => [
q(Kamantan),
],
- q(3163) => [
+ q(3196) => [
q(Kobiana),
],
- q(3164) => [
+ q(3197) => [
q(Kalanga),
],
- q(3165) => [
+ q(3198) => [
q(Kela (Papua New Guinea)),
+ q(Kala),
],
- q(3166) => [
+ q(3199) => [
q(Gula (Central African Republic)),
],
- q(3167) => [
+ q(3200) => [
q(Nubi),
],
- q(3168) => [
+ q(3201) => [
q(Kinalakna),
],
- q(3169) => [
+ q(3202) => [
q(Kanga),
],
- q(3170) => [
+ q(3203) => [
q(Kamo),
],
- q(3171) => [
+ q(3204) => [
q(Katla),
],
- q(3172) => [
+ q(3205) => [
q(Koenoem),
],
- q(3173) => [
+ q(3206) => [
q(Kaian),
],
- q(3174) => [
+ q(3207) => [
q(Kami (Tanzania)),
],
- q(3175) => [
+ q(3208) => [
q(Kete),
],
- q(3176) => [
+ q(3209) => [
q(Kabwari),
],
- q(3177) => [
+ q(3210) => [
q(Kachama-Ganjule),
],
- q(3178) => [
+ q(3211) => [
q(Korandje),
],
- q(3179) => [
+ q(3212) => [
q(Konongo),
],
- q(3180) => [
+ q(3213) => [
q(Worimi),
],
- q(3181) => [
+ q(3214) => [
q(Kutu),
],
- q(3182) => [
+ q(3215) => [
q(Yankunytjatjara),
],
- q(3183) => [
+ q(3216) => [
q(Makonde),
],
- q(3184) => [
+ q(3217) => [
q(Mamusi),
],
- q(3185) => [
+ q(3218) => [
q(Seba),
],
- q(3186) => [
+ q(3219) => [
q(Tem),
],
- q(3187) => [
+ q(3220) => [
q(Kumam),
],
- q(3188) => [
+ q(3221) => [
q(Karamojong),
],
- q(3189) => [
+ q(3222) => [
q(Numee),
],
- q(3190) => [
+ q(3223) => [
q(Tsikimba),
],
- q(3191) => [
+ q(3224) => [
q(Kagoma),
],
- q(3192) => [
+ q(3225) => [
q(Kunda),
],
- q(3193) => [
+ q(3226) => [
q(Kaningdon-Nindem),
],
- q(3194) => [
+ q(3227) => [
q(Koch),
],
- q(3195) => [
+ q(3228) => [
q(Karaim),
],
- q(3196) => [
+ q(3229) => [
q(Kuy),
],
- q(3197) => [
+ q(3230) => [
q(Kadaru),
],
- q(3198) => [
- q(Kado),
- ],
- q(3199) => [
+ q(3231) => [
q(Koneraw),
],
- q(3200) => [
+ q(3232) => [
q(Kam),
],
- q(3201) => [
+ q(3233) => [
q(Keder),
q(Keijar),
],
- q(3202) => [
+ q(3234) => [
q(Kwaja),
],
- q(3203) => [
+ q(3235) => [
q(Kabuverdianu),
],
- q(3204) => [
+ q(3236) => [
q(Kele),
],
- q(3205) => [
+ q(3237) => [
q(Keiga),
],
- q(3206) => [
+ q(3238) => [
q(Kerewe),
],
- q(3207) => [
+ q(3239) => [
q(Eastern Keres),
],
- q(3208) => [
+ q(3240) => [
q(Kpessi),
],
- q(3209) => [
+ q(3241) => [
q(Tese),
],
- q(3210) => [
+ q(3242) => [
q(Keak),
],
- q(3211) => [
+ q(3243) => [
q(Kei),
],
- q(3212) => [
+ q(3244) => [
q(Kadar),
],
- q(3213) => [
+ q(3245) => [
q(Kekchi),
],
- q(3214) => [
+ q(3246) => [
q(Kela (Democratic Republic of Congo)),
],
- q(3215) => [
+ q(3247) => [
q(Kemak),
],
- q(3216) => [
+ q(3248) => [
q(Kenyang),
],
- q(3217) => [
+ q(3249) => [
q(Kakwa),
],
- q(3218) => [
+ q(3250) => [
q(Kaikadi),
],
- q(3219) => [
+ q(3251) => [
q(Kamar),
],
- q(3220) => [
+ q(3252) => [
q(Kera),
],
- q(3221) => [
+ q(3253) => [
q(Kugbo),
],
- q(3222) => [
+ q(3254) => [
q(Ket),
],
- q(3223) => [
+ q(3255) => [
q(Akebu),
],
- q(3224) => [
+ q(3256) => [
q(Kanikkaran),
],
- q(3225) => [
+ q(3257) => [
q(West Kewa),
],
- q(3226) => [
+ q(3258) => [
q(Kukna),
],
- q(3227) => [
+ q(3259) => [
q(Kupia),
],
- q(3228) => [
+ q(3260) => [
q(Kukele),
],
- q(3229) => [
+ q(3261) => [
q(Kodava),
],
- q(3230) => [
+ q(3262) => [
q(Northwestern Kolami),
],
- q(3231) => [
+ q(3263) => [
q(Konda-Dora),
],
- q(3232) => [
+ q(3264) => [
q(Korra Koraga),
],
- q(3233) => [
+ q(3265) => [
q(Kota (India)),
],
- q(3234) => [
+ q(3266) => [
q(Koya),
],
- q(3235) => [
+ q(3267) => [
q(Kudiya),
],
- q(3236) => [
+ q(3268) => [
q(Kurichiya),
],
- q(3237) => [
+ q(3269) => [
q(Kannada Kurumba),
],
- q(3238) => [
+ q(3270) => [
q(Kemiehua),
],
- q(3239) => [
+ q(3271) => [
q(Kinnauri),
],
- q(3240) => [
+ q(3272) => [
q(Kung),
],
- q(3241) => [
+ q(3273) => [
q(Khunsari),
],
- q(3242) => [
+ q(3274) => [
q(Kuk),
],
- q(3243) => [
+ q(3275) => [
q(Koro (Cote d'Ivoire)),
],
- q(3244) => [
+ q(3276) => [
q(Korwa),
],
- q(3245) => [
+ q(3277) => [
q(Korku),
],
- q(3246) => [
+ q(3278) => [
q(Kachchi),
],
- q(3247) => [
+ q(3279) => [
q(Bilaspuri),
],
- q(3248) => [
+ q(3280) => [
q(Kanjari),
],
- q(3249) => [
+ q(3281) => [
q(Katkari),
],
- q(3250) => [
+ q(3282) => [
q(Kurmukar),
],
- q(3251) => [
+ q(3283) => [
q(Kharam Naga),
],
- q(3252) => [
+ q(3284) => [
q(Kullu Pahari),
],
- q(3253) => [
+ q(3285) => [
q(Kumaoni),
],
- q(3254) => [
+ q(3286) => [
q(Koromfe),
],
- q(3255) => [
+ q(3287) => [
q(Koyaga),
],
- q(3256) => [
+ q(3288) => [
q(Kawe),
],
- q(3257) => [
+ q(3289) => [
q(Kasseng),
],
- q(3258) => [
+ q(3290) => [
q(Kataang),
],
- q(3259) => [
+ q(3291) => [
q(Komering),
],
- q(3260) => [
+ q(3292) => [
q(Kube),
],
- q(3261) => [
+ q(3293) => [
q(Kusunda),
],
- q(3262) => [
- q(Upper Tanudan Kalinga),
- ],
- q(3263) => [
+ q(3294) => [
q(Selangor Sign Language),
],
- q(3264) => [
+ q(3295) => [
q(Gamale Kham),
],
- q(3265) => [
+ q(3296) => [
q(Kaiwa),
],
- q(3266) => [
+ q(3297) => [
q(Kunggari),
],
- q(3267) => [
+ q(3298) => [
q(Karipuna),
],
- q(3268) => [
+ q(3299) => [
q(Karingani),
],
- q(3269) => [
+ q(3300) => [
q(Krongo),
],
- q(3270) => [
+ q(3301) => [
q(Kaingang),
],
- q(3271) => [
+ q(3302) => [
q(Kamoro),
],
- q(3272) => [
+ q(3303) => [
q(Abun),
],
- q(3273) => [
+ q(3304) => [
q(Kumbainggar),
],
- q(3274) => [
+ q(3305) => [
q(Somyev),
],
- q(3275) => [
+ q(3306) => [
q(Kobol),
],
- q(3276) => [
+ q(3307) => [
q(Karas),
],
- q(3277) => [
+ q(3308) => [
q(Karon Dori),
],
- q(3278) => [
+ q(3309) => [
q(Kamaru),
],
- q(3279) => [
+ q(3310) => [
q(Kyerung),
],
- q(3280) => [
+ q(3311) => [
q(Lu),
],
- q(3281) => [
+ q(3312) => [
q(Tukang Besi North),
],
- q(3282) => [
+ q(3313) => [
q(Badi Kanum),
],
- q(3283) => [
+ q(3314) => [
q(Korowai),
],
- q(3284) => [
+ q(3315) => [
q(Khuen),
],
- q(3285) => [
+ q(3316) => [
q(Khams Tibetan),
],
- q(3286) => [
+ q(3317) => [
q(Kehu),
],
- q(3287) => [
+ q(3318) => [
q(Kuturmi),
],
- q(3288) => [
+ q(3319) => [
q(Halh Mongolian),
],
- q(3289) => [
+ q(3320) => [
q(Lusi),
],
- q(3290) => [
+ q(3321) => [
q(Khandesi),
],
- q(3291) => [
+ q(3322) => [
q(Kapori),
q(Kapauri),
],
- q(3292) => [
+ q(3323) => [
q(Koyra Chiini Songhay),
],
- q(3293) => [
+ q(3324) => [
q(Kharia),
],
- q(3294) => [
+ q(3325) => [
q(Kasua),
],
- q(3295) => [
+ q(3326) => [
q(Khamti),
],
- q(3296) => [
+ q(3327) => [
q(Nkhumbi),
],
- q(3297) => [
+ q(3328) => [
q(Khvarshi),
],
- q(3298) => [
+ q(3329) => [
q(Khowar),
],
- q(3299) => [
+ q(3330) => [
q(Kanu),
],
- q(3300) => [
+ q(3331) => [
q(Kele (Democratic Republic of Congo)),
],
- q(3301) => [
+ q(3332) => [
q(Keapara),
],
- q(3302) => [
+ q(3333) => [
q(Kim),
],
- q(3303) => [
+ q(3334) => [
q(Koalib),
],
- q(3304) => [
+ q(3335) => [
q(Kickapoo),
],
- q(3305) => [
+ q(3336) => [
q(Koshin),
],
- q(3306) => [
+ q(3337) => [
q(Kibet),
],
- q(3307) => [
+ q(3338) => [
q(Eastern Parbate Kham),
],
- q(3308) => [
+ q(3339) => [
q(Kimaama),
q(Kimaghima),
],
- q(3309) => [
+ q(3340) => [
q(Kilmeri),
],
- q(3310) => [
+ q(3341) => [
q(Kitsai),
],
- q(3311) => [
+ q(3342) => [
q(Kilivila),
],
- q(3312) => [
+ q(3343) => [
q(Kariya),
],
- q(3313) => [
+ q(3344) => [
q(Karagas),
],
- q(3314) => [
+ q(3345) => [
q(Kiowa),
],
- q(3315) => [
+ q(3346) => [
q(Sheshi Kham),
],
- q(3316) => [
+ q(3347) => [
q(Kosadle),
q(Kosare),
],
- q(3317) => [
+ q(3348) => [
q(Kis),
],
- q(3318) => [
+ q(3349) => [
q(Agob),
],
- q(3319) => [
+ q(3350) => [
q(Kirmanjki (individual language)),
],
- q(3320) => [
+ q(3351) => [
q(Kimbu),
],
- q(3321) => [
+ q(3352) => [
q(Northeast Kiwai),
],
- q(3322) => [
+ q(3353) => [
q(Khiamniungan Naga),
],
- q(3323) => [
+ q(3354) => [
q(Kirikiri),
],
- q(3324) => [
+ q(3355) => [
q(Kisi),
],
- q(3325) => [
+ q(3356) => [
q(Mlap),
],
- q(3326) => [
+ q(3357) => [
q(Q'anjob'al),
q(Kanjobal),
],
- q(3327) => [
+ q(3358) => [
q(Coastal Konjo),
],
- q(3328) => [
+ q(3359) => [
q(Southern Kiwai),
],
- q(3329) => [
+ q(3360) => [
q(Kisar),
],
- q(3330) => [
+ q(3361) => [
q(Khalaj),
],
- q(3331) => [
+ q(3362) => [
q(Khmu),
],
- q(3332) => [
+ q(3363) => [
q(Khakas),
],
- q(3333) => [
+ q(3364) => [
q(Zabana),
],
- q(3334) => [
+ q(3365) => [
q(Khinalugh),
],
- q(3335) => [
+ q(3366) => [
q(Highland Konjo),
],
- q(3336) => [
+ q(3367) => [
q(Western Parbate Kham),
],
- q(3337) => [
+ q(3368) => [
q(Khang),
],
- q(3338) => [
+ q(3369) => [
q(Kunjen),
],
- q(3339) => [
+ q(3370) => [
q(Harijan Kinnauri),
],
- q(3340) => [
+ q(3371) => [
q(Pwo Eastern Karen),
],
- q(3341) => [
+ q(3372) => [
q(Western Keres),
],
- q(3342) => [
+ q(3373) => [
q(Kurudu),
],
- q(3343) => [
+ q(3374) => [
q(East Kewa),
],
- q(3344) => [
+ q(3375) => [
q(Phrae Pwo Karen),
],
- q(3345) => [
+ q(3376) => [
q(Kashaya),
],
- q(3346) => [
+ q(3377) => [
q(Ramopa),
],
- q(3347) => [
+ q(3378) => [
q(Erave),
],
- q(3348) => [
+ q(3379) => [
q(Bumthangkha),
],
- q(3349) => [
+ q(3380) => [
q(Kakanda),
],
- q(3350) => [
+ q(3381) => [
q(Kwerisa),
],
- q(3351) => [
+ q(3382) => [
q(Odoodee),
],
- q(3352) => [
+ q(3383) => [
q(Kinuku),
],
- q(3353) => [
+ q(3384) => [
q(Kakabe),
],
- q(3354) => [
+ q(3385) => [
q(Kalaktang Monpa),
],
- q(3355) => [
+ q(3386) => [
q(Mabaka Valley Kalinga),
],
- q(3356) => [
+ q(3387) => [
q(Khun),
],
- q(3357) => [
+ q(3388) => [
q(Kagulu),
],
- q(3358) => [
+ q(3389) => [
q(Kako),
],
- q(3359) => [
+ q(3390) => [
q(Kokota),
],
- q(3360) => [
+ q(3391) => [
q(Kosarek Yale),
],
- q(3361) => [
+ q(3392) => [
q(Kiong),
],
- q(3362) => [
+ q(3393) => [
q(Kon Keu),
],
- q(3363) => [
+ q(3394) => [
q(Karko),
],
- q(3364) => [
+ q(3395) => [
q(Gugubera),
],
- q(3365) => [
+ q(3396) => [
q(Kaiku),
],
- q(3366) => [
+ q(3397) => [
q(Kir-Balar),
],
- q(3367) => [
+ q(3398) => [
q(Giiwo),
],
- q(3368) => [
+ q(3399) => [
q(Koi),
],
- q(3369) => [
+ q(3400) => [
q(Tumi),
],
- q(3370) => [
+ q(3401) => [
q(Kangean),
],
- q(3371) => [
+ q(3402) => [
q(Teke-Kukuya),
],
- q(3372) => [
+ q(3403) => [
q(Kohin),
],
- q(3373) => [
+ q(3404) => [
q(Guguyimidjir),
],
- q(3374) => [
+ q(3405) => [
q(Kaska),
],
- q(3375) => [
+ q(3406) => [
q(Klamath-Modoc),
],
- q(3376) => [
+ q(3407) => [
q(Kiliwa),
],
- q(3377) => [
+ q(3408) => [
q(Kolbila),
],
- q(3378) => [
+ q(3409) => [
q(Gamilaraay),
],
- q(3379) => [
+ q(3410) => [
q(Kulung (Nepal)),
],
- q(3380) => [
+ q(3411) => [
q(Kendeje),
],
- q(3381) => [
+ q(3412) => [
q(Tagakaulo),
],
- q(3382) => [
+ q(3413) => [
q(Weliki),
],
- q(3383) => [
+ q(3414) => [
q(Kalumpang),
],
- q(3384) => [
+ q(3415) => [
q(Turkic Khalaj),
],
- q(3385) => [
+ q(3416) => [
q(Kono (Nigeria)),
],
- q(3386) => [
+ q(3417) => [
q(Kagan Kalagan),
],
- q(3387) => [
+ q(3418) => [
q(Migum),
],
- q(3388) => [
+ q(3419) => [
q(Kalenjin),
],
- q(3389) => [
+ q(3420) => [
q(Kapya),
],
- q(3390) => [
+ q(3421) => [
q(Kamasa),
],
- q(3391) => [
+ q(3422) => [
q(Rumu),
],
- q(3392) => [
+ q(3423) => [
q(Khaling),
],
- q(3393) => [
+ q(3424) => [
q(Kalasha),
],
- q(3394) => [
+ q(3425) => [
q(Nukna),
],
- q(3395) => [
+ q(3426) => [
q(Klao),
],
- q(3396) => [
+ q(3427) => [
q(Maskelynes),
],
- q(3397) => [
+ q(3428) => [
q(Lindu),
],
- q(3398) => [
+ q(3429) => [
q(Koluwawa),
],
- q(3399) => [
+ q(3430) => [
q(Kalao),
],
- q(3400) => [
+ q(3431) => [
q(Kabola),
],
- q(3401) => [
+ q(3432) => [
q(Konni),
],
- q(3402) => [
+ q(3433) => [
q(Southern Dong),
],
- q(3403) => [
+ q(3434) => [
q(Majukayang Kalinga),
],
- q(3404) => [
+ q(3435) => [
q(Bakole),
],
- q(3405) => [
+ q(3436) => [
q(Kare (Papua New Guinea)),
],
- q(3406) => [
+ q(3437) => [
q(Kate),
],
- q(3407) => [
+ q(3438) => [
q(Kalam),
],
- q(3408) => [
+ q(3439) => [
q(Kami (Nigeria)),
],
- q(3409) => [
+ q(3440) => [
q(Kumarbhag Paharia),
],
- q(3410) => [
+ q(3441) => [
q(Limos Kalinga),
],
- q(3411) => [
- q(Lower Tanudan Kalinga),
+ q(3442) => [
+ q(Tanudan Kalinga),
],
- q(3412) => [
+ q(3443) => [
q(Kom (India)),
],
- q(3413) => [
+ q(3444) => [
q(Awtuw),
],
- q(3414) => [
+ q(3445) => [
q(Kwoma),
],
- q(3415) => [
+ q(3446) => [
q(Gimme),
],
- q(3416) => [
+ q(3447) => [
q(Kwama),
],
- q(3417) => [
+ q(3448) => [
q(Northern Kurdish),
],
- q(3418) => [
+ q(3449) => [
q(Kamasau),
],
- q(3419) => [
+ q(3450) => [
q(Kemtuik),
],
- q(3420) => [
+ q(3451) => [
q(Kanite),
],
- q(3421) => [
+ q(3452) => [
q(Karipuna Creole French),
],
- q(3422) => [
+ q(3453) => [
q(Komo (Democratic Republic of Congo)),
],
- q(3423) => [
+ q(3454) => [
q(Waboda),
],
- q(3424) => [
+ q(3455) => [
q(Koma),
],
- q(3425) => [
+ q(3456) => [
q(Khorasani Turkish),
],
- q(3426) => [
+ q(3457) => [
q(Dera (Nigeria)),
],
- q(3427) => [
+ q(3458) => [
q(Lubuagan Kalinga),
],
- q(3428) => [
+ q(3459) => [
q(Central Kanuri),
],
- q(3429) => [
+ q(3460) => [
q(Konda),
],
- q(3430) => [
+ q(3461) => [
q(Kankanaey),
],
- q(3431) => [
+ q(3462) => [
q(Mankanya),
],
- q(3432) => [
+ q(3463) => [
q(Koongo),
],
- q(3433) => [
+ q(3464) => [
q(Kanufi),
],
- q(3434) => [
+ q(3465) => [
q(Western Kanjobal),
],
- q(3435) => [
+ q(3466) => [
q(Kuranko),
],
- q(3436) => [
+ q(3467) => [
q(Keninjal),
],
- q(3437) => [
+ q(3468) => [
q(Kanamari),
],
- q(3438) => [
+ q(3469) => [
q(Konkani (individual language)),
],
- q(3439) => [
+ q(3470) => [
q(Kono (Sierra Leone)),
],
- q(3440) => [
+ q(3471) => [
q(Kwanja),
],
- q(3441) => [
+ q(3472) => [
q(Kintaq),
],
- q(3442) => [
+ q(3473) => [
q(Kaningra),
],
- q(3443) => [
+ q(3474) => [
q(Kensiu),
],
- q(3444) => [
+ q(3475) => [
q(Panoan Katukina),
],
- q(3445) => [
+ q(3476) => [
q(Kono (Guinea)),
],
- q(3446) => [
+ q(3477) => [
q(Tabo),
],
- q(3447) => [
+ q(3478) => [
q(Kung-Ekoka),
],
- q(3448) => [
+ q(3479) => [
q(Kendayan),
q(Salako),
],
- q(3449) => [
+ q(3480) => [
q(Kanyok),
],
- q(3450) => [
+ q(3481) => [
q(Kalamse),
],
- q(3451) => [
+ q(3482) => [
q(Konomala),
],
- q(3452) => [
+ q(3483) => [
q(Kpati),
],
- q(3453) => [
+ q(3484) => [
q(Kodi),
],
- q(3454) => [
+ q(3485) => [
q(Kacipo-Balesi),
],
- q(3455) => [
+ q(3486) => [
q(Kubi),
],
- q(3456) => [
+ q(3487) => [
q(Cogui),
q(Kogi),
],
- q(3457) => [
+ q(3488) => [
q(Koyo),
],
- q(3458) => [
+ q(3489) => [
q(Komi-Permyak),
],
- q(3459) => [
+ q(3490) => [
q(Sara Dunjo),
],
- q(3460) => [
+ q(3491) => [
q(Kol (Papua New Guinea)),
],
- q(3461) => [
+ q(3492) => [
q(Konzo),
],
- q(3462) => [
+ q(3493) => [
q(Waube),
],
- q(3463) => [
+ q(3494) => [
q(Kota (Gabon)),
],
- q(3464) => [
+ q(3495) => [
q(Lagwan),
],
- q(3465) => [
+ q(3496) => [
q(Koke),
],
- q(3466) => [
+ q(3497) => [
q(Kudu-Camo),
],
- q(3467) => [
+ q(3498) => [
q(Kugama),
],
- q(3468) => [
+ q(3499) => [
q(Coxima),
],
- q(3469) => [
+ q(3500) => [
q(Koyukon),
],
- q(3470) => [
+ q(3501) => [
q(Korak),
],
- q(3471) => [
+ q(3502) => [
q(Kutto),
],
- q(3472) => [
+ q(3503) => [
q(Mullu Kurumba),
],
- q(3473) => [
+ q(3504) => [
q(Curripaco),
],
- q(3474) => [
+ q(3505) => [
q(Koba),
],
- q(3475) => [
+ q(3506) => [
q(Komba),
],
- q(3476) => [
+ q(3507) => [
q(Kapingamarangi),
],
- q(3477) => [
+ q(3508) => [
q(Kplang),
],
- q(3478) => [
+ q(3509) => [
q(Kofei),
],
- q(3479) => [
+ q(3510) => [
q(Karaja),
],
- q(3480) => [
+ q(3511) => [
q(Kpan),
],
- q(3481) => [
+ q(3512) => [
q(Kpala),
],
- q(3482) => [
+ q(3513) => [
q(Koho),
],
- q(3483) => [
+ q(3514) => [
q(Kepkiriwat),
],
- q(3484) => [
+ q(3515) => [
q(Ikposo),
],
- q(3485) => [
- q(Paku Karen),
- ],
- q(3486) => [
+ q(3516) => [
q(Korupun-Sela),
],
- q(3487) => [
+ q(3517) => [
q(Korafe-Yegha),
],
- q(3488) => [
+ q(3518) => [
q(Tehit),
],
- q(3489) => [
+ q(3519) => [
q(Karata),
],
- q(3490) => [
+ q(3520) => [
q(Kafoa),
],
- q(3491) => [
+ q(3521) => [
q(Komi-Zyrian),
],
- q(3492) => [
+ q(3522) => [
q(Kobon),
],
- q(3493) => [
+ q(3523) => [
q(Mountain Koiali),
],
- q(3494) => [
+ q(3524) => [
q(Koryak),
],
- q(3495) => [
+ q(3525) => [
q(Kupsabiny),
],
- q(3496) => [
+ q(3526) => [
q(Mum),
],
- q(3497) => [
+ q(3527) => [
q(Kovai),
],
- q(3498) => [
+ q(3528) => [
q(Doromu-Koki),
],
- q(3499) => [
+ q(3529) => [
q(Koy Sanjaq Surat),
],
- q(3500) => [
+ q(3530) => [
q(Kalagan),
],
- q(3501) => [
+ q(3531) => [
q(Kakabai),
],
- q(3502) => [
+ q(3532) => [
q(Khe),
],
- q(3503) => [
+ q(3533) => [
q(Kisankasa),
],
- q(3504) => [
+ q(3534) => [
q(Koitabu),
],
- q(3505) => [
+ q(3535) => [
q(Koromira),
],
- q(3506) => [
+ q(3536) => [
q(Kotafon Gbe),
],
- q(3507) => [
+ q(3537) => [
q(Kyenele),
],
- q(3508) => [
+ q(3538) => [
q(Khisa),
],
- q(3509) => [
+ q(3539) => [
q(Kaonde),
],
- q(3510) => [
+ q(3540) => [
q(Eastern Krahn),
],
- q(3511) => [
+ q(3541) => [
q(Kimre),
],
- q(3512) => [
+ q(3542) => [
q(Krenak),
],
- q(3513) => [
+ q(3543) => [
q(Kimaragang),
],
- q(3514) => [
+ q(3544) => [
q(Northern Kissi),
],
- q(3515) => [
+ q(3545) => [
q(Klias River Kadazan),
],
- q(3516) => [
+ q(3546) => [
q(Seroa),
],
- q(3517) => [
+ q(3547) => [
q(Okolod),
],
- q(3518) => [
+ q(3548) => [
q(Kandas),
],
- q(3519) => [
+ q(3549) => [
q(Mser),
],
- q(3520) => [
+ q(3550) => [
q(Koorete),
],
- q(3521) => [
+ q(3551) => [
q(Korana),
],
- q(3522) => [
+ q(3552) => [
q(Kumhali),
],
- q(3523) => [
+ q(3553) => [
q(Karkin),
],
- q(3524) => [
+ q(3554) => [
q(Kairui-Midiki),
],
- q(3525) => [
+ q(3555) => [
q(Panara),
],
- q(3526) => [
+ q(3556) => [
q(Koro (Vanuatu)),
],
- q(3527) => [
+ q(3557) => [
q(Kurama),
],
- q(3528) => [
+ q(3558) => [
q(Krio),
],
- q(3529) => [
+ q(3559) => [
q(Kinaray-A),
],
- q(3530) => [
+ q(3560) => [
q(Kerek),
],
- q(3531) => [
+ q(3561) => [
q(Krim),
],
- q(3532) => [
+ q(3562) => [
q(Sapo),
],
- q(3533) => [
+ q(3563) => [
q(Korop),
],
- q(3534) => [
+ q(3564) => [
q(Kru'ng 2),
],
- q(3535) => [
+ q(3565) => [
q(Gbaya (Sudan)),
],
- q(3536) => [
+ q(3566) => [
q(Tumari Kanuri),
],
- q(3537) => [
+ q(3567) => [
q(Kavet),
],
- q(3538) => [
+ q(3568) => [
q(Western Krahn),
],
- q(3539) => [
+ q(3569) => [
q(Karon),
],
- q(3540) => [
+ q(3570) => [
q(Kryts),
],
- q(3541) => [
+ q(3571) => [
q(Sota Kanum),
],
- q(3542) => [
+ q(3572) => [
q(Shuwa-Zamani),
],
- q(3543) => [
+ q(3573) => [
q(Shambala),
],
- q(3544) => [
+ q(3574) => [
q(Southern Kalinga),
],
- q(3545) => [
+ q(3575) => [
q(Kuanua),
],
- q(3546) => [
+ q(3576) => [
q(Kuni),
],
- q(3547) => [
+ q(3577) => [
q(Bafia),
],
- q(3548) => [
+ q(3578) => [
q(Kusaghe),
],
- q(3549) => [
+ q(3579) => [
q(Kolsch),
],
- q(3550) => [
+ q(3580) => [
q(Krisa),
q(I'saka),
],
- q(3551) => [
+ q(3581) => [
q(Uare),
],
- q(3552) => [
+ q(3582) => [
q(Kansa),
],
- q(3553) => [
+ q(3583) => [
q(Kumalu),
],
- q(3554) => [
+ q(3584) => [
q(Kumba),
],
- q(3555) => [
+ q(3585) => [
q(Kasiguranin),
],
- q(3556) => [
+ q(3586) => [
q(Kofa),
],
- q(3557) => [
+ q(3587) => [
q(Kaba),
],
- q(3558) => [
+ q(3588) => [
q(Kwaami),
],
- q(3559) => [
+ q(3589) => [
q(Borong),
],
- q(3560) => [
+ q(3590) => [
q(Southern Kisi),
],
- q(3561) => [
+ q(3591) => [
q(Winye),
],
- q(3562) => [
+ q(3592) => [
q(Khamyang),
],
- q(3563) => [
+ q(3593) => [
q(Kusu),
],
- q(3564) => [
+ q(3594) => [
q(S'gaw Karen),
],
- q(3565) => [
+ q(3595) => [
q(Kedang),
],
- q(3566) => [
+ q(3596) => [
q(Kharia Thar),
],
- q(3567) => [
+ q(3597) => [
q(Kodaku),
],
- q(3568) => [
+ q(3598) => [
q(Katua),
],
- q(3569) => [
+ q(3599) => [
q(Kambaata),
],
- q(3570) => [
+ q(3600) => [
q(Kholok),
],
- q(3571) => [
+ q(3601) => [
q(Kokata),
],
- q(3572) => [
+ q(3602) => [
q(Nubri),
],
- q(3573) => [
+ q(3603) => [
q(Kwami),
],
- q(3574) => [
+ q(3604) => [
q(Kalkutung),
],
- q(3575) => [
+ q(3605) => [
q(Karanga),
],
- q(3576) => [
+ q(3606) => [
q(North Muyu),
],
- q(3577) => [
+ q(3607) => [
q(Plapo Krumen),
],
- q(3578) => [
+ q(3608) => [
q(Kaniet),
],
- q(3579) => [
+ q(3609) => [
q(Koroshi),
],
- q(3580) => [
+ q(3610) => [
q(Kurti),
],
- q(3581) => [
+ q(3611) => [
q(Karitiana),
],
- q(3582) => [
+ q(3612) => [
q(Kuot),
],
- q(3583) => [
+ q(3613) => [
q(Kaduo),
],
- q(3584) => [
+ q(3614) => [
q(Katabaga),
],
- q(3585) => [
+ q(3615) => [
q(Kota Marudu Tinagas),
],
- q(3586) => [
+ q(3616) => [
q(South Muyu),
],
- q(3587) => [
+ q(3617) => [
q(Ketum),
],
- q(3588) => [
+ q(3618) => [
q(Kituba (Democratic Republic of Congo)),
],
- q(3589) => [
+ q(3619) => [
q(Eastern Katu),
],
- q(3590) => [
+ q(3620) => [
q(Kato),
],
- q(3591) => [
+ q(3621) => [
q(Kaxarari),
],
- q(3592) => [
+ q(3622) => [
q(Kango (Bas-Uele District)),
],
- q(3593) => [
+ q(3623) => [
q(Ju/'hoan),
],
- q(3594) => [
+ q(3624) => [
q(Kutep),
],
- q(3595) => [
+ q(3625) => [
q(Kwinsu),
],
- q(3596) => [
+ q(3626) => [
q('Auhelawa),
],
- q(3597) => [
+ q(3627) => [
q(Kuman),
],
- q(3598) => [
+ q(3628) => [
q(Western Katu),
],
- q(3599) => [
+ q(3629) => [
q(Kupa),
],
- q(3600) => [
+ q(3630) => [
q(Kushi),
],
- q(3601) => [
+ q(3631) => [
q(Kuikuro-Kalapalo),
],
- q(3602) => [
+ q(3632) => [
q(Kuria),
],
- q(3603) => [
+ q(3633) => [
q(Kepo'),
],
- q(3604) => [
+ q(3634) => [
q(Kulere),
],
- q(3605) => [
+ q(3635) => [
q(Kunama),
],
- q(3606) => [
+ q(3636) => [
q(Kumukio),
],
- q(3607) => [
+ q(3637) => [
q(Kunimaipa),
],
- q(3608) => [
+ q(3638) => [
q(Kusaal),
],
- q(3609) => [
+ q(3639) => [
q(Upper Kuskokwim),
],
- q(3610) => [
+ q(3640) => [
q(Kur),
],
- q(3611) => [
+ q(3641) => [
q(Kpagua),
],
- q(3612) => [
+ q(3642) => [
q(Kukatja),
],
- q(3613) => [
+ q(3643) => [
q(Kuuku-Ya'u),
],
- q(3614) => [
+ q(3644) => [
q(Kunza),
],
- q(3615) => [
+ q(3645) => [
q(Bagvalal),
],
- q(3616) => [
+ q(3646) => [
q(Kubu),
],
- q(3617) => [
+ q(3647) => [
q(Kove),
],
- q(3618) => [
+ q(3648) => [
q(Kui (Indonesia)),
],
- q(3619) => [
+ q(3649) => [
q(Kalabakan),
],
- q(3620) => [
+ q(3650) => [
q(Kabalai),
],
- q(3621) => [
+ q(3651) => [
q(Kuni-Boazi),
],
- q(3622) => [
+ q(3652) => [
q(Komodo),
],
- q(3623) => [
+ q(3653) => [
q(Kwang),
],
- q(3624) => [
+ q(3654) => [
q(Psikye),
],
- q(3625) => [
+ q(3655) => [
q(Korean Sign Language),
],
- q(3626) => [
- q(Brek Karen),
+ q(3656) => [
+ q(Kayaw),
],
- q(3627) => [
+ q(3657) => [
q(Kendem),
],
- q(3628) => [
+ q(3658) => [
q(Border Kuna),
],
- q(3629) => [
+ q(3659) => [
q(Dobel),
],
- q(3630) => [
+ q(3660) => [
q(Kompane),
],
- q(3631) => [
+ q(3661) => [
q(Geba Karen),
],
- q(3632) => [
+ q(3662) => [
q(Kerinci),
],
- q(3633) => [
+ q(3663) => [
q(Kunggara),
],
- q(3634) => [
+ q(3664) => [
q(Lahta Karen),
+ q(Lahta),
],
- q(3635) => [
+ q(3665) => [
q(Yinbaw Karen),
],
- q(3636) => [
+ q(3666) => [
q(Kola),
],
- q(3637) => [
+ q(3667) => [
q(Wersing),
],
- q(3638) => [
+ q(3668) => [
q(Parkari Koli),
],
- q(3639) => [
+ q(3669) => [
q(Yintale Karen),
+ q(Yintale),
],
- q(3640) => [
+ q(3670) => [
q(Tsakwambo),
q(Tsaukambo),
],
- q(3641) => [
+ q(3671) => [
q(Daw),
],
- q(3642) => [
+ q(3672) => [
q(Kwa),
],
- q(3643) => [
+ q(3673) => [
q(Likwala),
],
- q(3644) => [
+ q(3674) => [
q(Kwaio),
],
- q(3645) => [
+ q(3675) => [
q(Kwerba),
],
- q(3646) => [
+ q(3676) => [
q(Kwara'ae),
],
- q(3647) => [
+ q(3677) => [
q(Sara Kaba Deme),
],
- q(3648) => [
+ q(3678) => [
q(Kowiai),
],
- q(3649) => [
+ q(3679) => [
q(Awa-Cuaiquer),
],
- q(3650) => [
+ q(3680) => [
q(Kwanga),
],
- q(3651) => [
+ q(3681) => [
q(Kwakiutl),
],
- q(3652) => [
+ q(3682) => [
q(Kofyar),
],
- q(3653) => [
+ q(3683) => [
q(Kwambi),
],
- q(3654) => [
+ q(3684) => [
q(Kwangali),
],
- q(3655) => [
+ q(3685) => [
q(Kwomtari),
],
- q(3656) => [
+ q(3686) => [
q(Kodia),
],
- q(3657) => [
+ q(3687) => [
q(Kwak),
],
- q(3658) => [
+ q(3688) => [
q(Kwer),
],
- q(3659) => [
+ q(3689) => [
q(Kwese),
],
- q(3660) => [
+ q(3690) => [
q(Kwesten),
],
- q(3661) => [
+ q(3691) => [
q(Kwakum),
],
- q(3662) => [
+ q(3692) => [
q(Sara Kaba Naa),
],
- q(3663) => [
+ q(3693) => [
q(Kwinti),
],
- q(3664) => [
+ q(3694) => [
q(Khirwar),
],
- q(3665) => [
+ q(3695) => [
q(San Salvador Kongo),
],
- q(3666) => [
+ q(3696) => [
q(Kwadi),
],
- q(3667) => [
+ q(3697) => [
q(Kairiru),
],
- q(3668) => [
+ q(3698) => [
q(Krobu),
],
- q(3669) => [
+ q(3699) => [
q(Konso),
q(Khonso),
],
- q(3670) => [
+ q(3700) => [
q(Brunei),
],
- q(3671) => [
+ q(3701) => [
q(Kakihum),
],
- q(3672) => [
+ q(3702) => [
q(Manumanaw Karen),
+ q(Manumanaw),
],
- q(3673) => [
+ q(3703) => [
q(Karo (Ethiopia)),
],
- q(3674) => [
+ q(3704) => [
q(Keningau Murut),
],
- q(3675) => [
+ q(3705) => [
q(Kulfa),
],
- q(3676) => [
+ q(3706) => [
q(Zayein Karen),
],
- q(3677) => [
+ q(3707) => [
q(Nepali Kurux),
],
- q(3678) => [
+ q(3708) => [
q(Northern Khmer),
],
- q(3679) => [
+ q(3709) => [
q(Kanowit-Tanjong Melanau),
],
- q(3680) => [
+ q(3710) => [
q(Kanoe),
],
- q(3681) => [
+ q(3711) => [
q(Wadiyara Koli),
],
- q(3682) => [
+ q(3712) => [
q(Smarky Kanum),
],
- q(3683) => [
+ q(3713) => [
q(Koro (Papua New Guinea)),
],
- q(3684) => [
+ q(3714) => [
q(Kangjia),
],
- q(3685) => [
+ q(3715) => [
q(Koiwat),
],
- q(3686) => [
+ q(3716) => [
q(Kui (India)),
],
- q(3687) => [
+ q(3717) => [
q(Kuvi),
],
- q(3688) => [
+ q(3718) => [
q(Konai),
],
- q(3689) => [
+ q(3719) => [
q(Likuba),
],
- q(3690) => [
+ q(3720) => [
q(Kayong),
],
- q(3691) => [
+ q(3721) => [
q(Kerewo),
],
- q(3692) => [
+ q(3722) => [
q(Kwaya),
],
- q(3693) => [
+ q(3723) => [
q(Butbut Kalinga),
],
- q(3694) => [
+ q(3724) => [
q(Kyaka),
],
- q(3695) => [
+ q(3725) => [
q(Karey),
],
- q(3696) => [
+ q(3726) => [
q(Krache),
],
- q(3697) => [
+ q(3727) => [
q(Kouya),
],
- q(3698) => [
+ q(3728) => [
q(Keyagana),
],
- q(3699) => [
+ q(3729) => [
q(Karok),
],
- q(3700) => [
+ q(3730) => [
q(Kiput),
],
- q(3701) => [
+ q(3731) => [
q(Karao),
],
- q(3702) => [
+ q(3732) => [
q(Kamayo),
],
- q(3703) => [
+ q(3733) => [
q(Kalapuya),
],
- q(3704) => [
+ q(3734) => [
q(Kpatili),
],
- q(3705) => [
+ q(3735) => [
q(Northern Binukidnon),
],
- q(3706) => [
+ q(3736) => [
q(Kelon),
],
- q(3707) => [
+ q(3737) => [
q(Kang),
],
- q(3708) => [
+ q(3738) => [
q(Kenga),
],
- q(3709) => [
+ q(3739) => [
q(Kuruaya),
],
- q(3710) => [
+ q(3740) => [
q(Baram Kayan),
],
- q(3711) => [
+ q(3741) => [
q(Kayagar),
],
- q(3712) => [
+ q(3742) => [
q(Western Kayah),
],
- q(3713) => [
+ q(3743) => [
q(Kayort),
],
- q(3714) => [
+ q(3744) => [
q(Kudmali),
],
- q(3715) => [
+ q(3745) => [
q(Rapoisi),
],
- q(3716) => [
+ q(3746) => [
q(Kambaira),
],
- q(3717) => [
+ q(3747) => [
q(Kayabi),
],
- q(3718) => [
+ q(3748) => [
q(Western Karaboro),
],
- q(3719) => [
+ q(3749) => [
q(Kaibobo),
],
- q(3720) => [
+ q(3750) => [
q(Bondoukou Kulango),
],
- q(3721) => [
+ q(3751) => [
q(Kadai),
],
- q(3722) => [
+ q(3752) => [
q(Kosena),
],
- q(3723) => [
+ q(3753) => [
q(Da'a Kaili),
],
- q(3724) => [
+ q(3754) => [
q(Kikai),
],
- q(3725) => [
- q(Kenuzi-Dongola),
- ],
- q(3726) => [
+ q(3755) => [
q(Kelabit),
],
- q(3727) => [
+ q(3756) => [
q(Coastal Kadazan),
],
- q(3728) => [
+ q(3757) => [
q(Kazukuru),
],
- q(3729) => [
+ q(3758) => [
q(Kayeli),
],
- q(3730) => [
+ q(3759) => [
q(Kais),
],
- q(3731) => [
+ q(3760) => [
q(Kokola),
],
- q(3732) => [
+ q(3761) => [
q(Kaningi),
],
- q(3733) => [
+ q(3762) => [
q(Kaidipang),
],
- q(3734) => [
+ q(3763) => [
q(Kaike),
],
- q(3735) => [
+ q(3764) => [
q(Karang),
],
- q(3736) => [
+ q(3765) => [
q(Sugut Dusun),
],
- q(3737) => [
+ q(3766) => [
q(Tambunan Dusun),
],
- q(3738) => [
+ q(3767) => [
q(Kayupulau),
],
- q(3739) => [
+ q(3768) => [
q(Komyandaret),
],
- q(3740) => [
+ q(3769) => [
q(Kariri-Xoco),
],
- q(3741) => [
+ q(3770) => [
q(Kamarian),
],
- q(3742) => [
+ q(3771) => [
q(Kango (Tshopo District)),
],
- q(3743) => [
+ q(3772) => [
q(Kalabra),
],
- q(3744) => [
+ q(3773) => [
q(Southern Subanen),
],
- q(3745) => [
+ q(3774) => [
q(Linear A),
],
- q(3746) => [
+ q(3775) => [
q(Lacandon),
],
- q(3747) => [
+ q(3776) => [
q(Pattani),
],
- q(3748) => [
+ q(3777) => [
q(Lafofa),
],
- q(3749) => [
+ q(3778) => [
q(Langi),
],
- q(3750) => [
+ q(3779) => [
q(Lambya),
],
- q(3751) => [
+ q(3780) => [
q(Lango (Uganda)),
],
- q(3752) => [
+ q(3781) => [
q(Laka (Nigeria)),
],
- q(3753) => [
+ q(3782) => [
q(Lalia),
],
- q(3754) => [
+ q(3783) => [
q(Laru),
],
- q(3755) => [
+ q(3784) => [
q(Laka (Chad)),
],
- q(3756) => [
+ q(3785) => [
q(Qabiao),
],
- q(3757) => [
+ q(3786) => [
q(Larteh),
],
- q(3758) => [
+ q(3787) => [
q(Lama (Togo)),
],
- q(3759) => [
+ q(3788) => [
q(Laba),
],
- q(3760) => [
+ q(3789) => [
q(Lauje),
],
- q(3761) => [
+ q(3790) => [
q(Tiwa),
],
- q(3762) => [
+ q(3791) => [
q(Lama (Myanmar)),
],
- q(3763) => [
+ q(3792) => [
q(Aribwatsa),
],
- q(3764) => [
+ q(3793) => [
q(Lui),
],
- q(3765) => [
+ q(3794) => [
q(Label),
],
- q(3766) => [
+ q(3795) => [
q(Lakkia),
],
- q(3767) => [
+ q(3796) => [
q(Lak),
],
- q(3768) => [
+ q(3797) => [
q(Tinani),
],
- q(3769) => [
+ q(3798) => [
q(Laopang),
],
- q(3770) => [
+ q(3799) => [
q(La'bi),
],
- q(3771) => [
+ q(3800) => [
q(Ladakhi),
],
- q(3772) => [
+ q(3801) => [
q(Central Bontok),
],
- q(3773) => [
+ q(3802) => [
q(Libon Bikol),
],
- q(3774) => [
+ q(3803) => [
q(Lodhi),
],
- q(3775) => [
+ q(3804) => [
q(Lamet),
],
- q(3776) => [
+ q(3805) => [
q(Laven),
],
- q(3777) => [
+ q(3806) => [
q(Wampar),
],
- q(3778) => [
- q(Northern Lorung),
+ q(3807) => [
+ q(Lohorung),
],
- q(3779) => [
+ q(3808) => [
q(Libyan Sign Language),
],
- q(3780) => [
+ q(3809) => [
q(Lachi),
],
- q(3781) => [
+ q(3810) => [
q(Labu),
],
- q(3782) => [
+ q(3811) => [
q(Lavatbura-Lamusong),
],
- q(3783) => [
+ q(3812) => [
q(Tolaki),
],
- q(3784) => [
+ q(3813) => [
q(Lawangan),
],
- q(3785) => [
+ q(3814) => [
q(Lamu-Lamu),
],
- q(3786) => [
+ q(3815) => [
q(Lardil),
],
- q(3787) => [
+ q(3816) => [
q(Legenyem),
],
- q(3788) => [
+ q(3817) => [
q(Lola),
],
- q(3789) => [
+ q(3818) => [
q(Loncong),
],
- q(3790) => [
+ q(3819) => [
q(Lubu),
],
- q(3791) => [
+ q(3820) => [
q(Luchazi),
],
- q(3792) => [
+ q(3821) => [
q(Lisela),
],
- q(3793) => [
+ q(3822) => [
q(Tungag),
],
- q(3794) => [
+ q(3823) => [
q(Western Lawa),
],
- q(3795) => [
- q(Luhu),
- ],
- q(3796) => [
+ q(3824) => [
q(Lisabata-Nuniali),
],
- q(3797) => [
- q(Idun),
+ q(3825) => [
+ q(Duya),
],
- q(3798) => [
+ q(3826) => [
q(Luri),
],
- q(3799) => [
+ q(3827) => [
q(Lenyima),
],
- q(3800) => [
+ q(3828) => [
q(Lamja-Dengsa-Tola),
],
- q(3801) => [
+ q(3829) => [
q(Laari),
],
- q(3802) => [
+ q(3830) => [
q(Lemoro),
],
- q(3803) => [
+ q(3831) => [
q(Leelau),
],
- q(3804) => [
+ q(3832) => [
q(Kaan),
],
- q(3805) => [
+ q(3833) => [
q(Landoma),
],
- q(3806) => [
+ q(3834) => [
q(Laadan),
],
- q(3807) => [
+ q(3835) => [
q(Loo),
],
- q(3808) => [
+ q(3836) => [
q(Tso),
],
- q(3809) => [
+ q(3837) => [
q(Lufu),
],
- q(3810) => [
+ q(3838) => [
q(Lega-Shabunda),
],
- q(3811) => [
+ q(3839) => [
q(Lala-Bisa),
],
- q(3812) => [
+ q(3840) => [
q(Leco),
],
- q(3813) => [
+ q(3841) => [
q(Lendu),
],
- q(3814) => [
+ q(3842) => [
q(Lyele),
],
- q(3815) => [
+ q(3843) => [
q(Lelemi),
],
- q(3816) => [
+ q(3844) => [
q(Lengua),
],
- q(3817) => [
+ q(3845) => [
q(Lenje),
],
- q(3818) => [
+ q(3846) => [
q(Lemio),
],
- q(3819) => [
+ q(3847) => [
q(Lengola),
],
- q(3820) => [
+ q(3848) => [
q(Leipon),
],
- q(3821) => [
+ q(3849) => [
q(Lele (Democratic Republic of Congo)),
],
- q(3822) => [
+ q(3850) => [
q(Nomaande),
],
- q(3823) => [
+ q(3851) => [
q(Lenca),
],
- q(3824) => [
+ q(3852) => [
q(Leti (Cameroon)),
],
- q(3825) => [
+ q(3853) => [
q(Lepcha),
],
- q(3826) => [
+ q(3854) => [
q(Lembena),
],
- q(3827) => [
+ q(3855) => [
q(Lenkau),
],
- q(3828) => [
+ q(3856) => [
q(Lese),
],
- q(3829) => [
+ q(3857) => [
q(Lesing-Gelimi),
+ q(Amio-Gelimi),
],
- q(3830) => [
+ q(3858) => [
q(Kara (Papua New Guinea)),
],
- q(3831) => [
+ q(3859) => [
q(Lamma),
],
- q(3832) => [
+ q(3860) => [
q(Ledo Kaili),
],
- q(3833) => [
+ q(3861) => [
q(Luang),
],
- q(3834) => [
+ q(3862) => [
q(Lemolang),
],
- q(3835) => [
+ q(3863) => [
q(Lefa),
],
- q(3836) => [
+ q(3864) => [
q(Lingua Franca Nova),
],
- q(3837) => [
+ q(3865) => [
q(Lungga),
],
- q(3838) => [
+ q(3866) => [
q(Laghu),
],
- q(3839) => [
+ q(3867) => [
q(Lugbara),
],
- q(3840) => [
+ q(3868) => [
q(Laghuu),
],
- q(3841) => [
+ q(3869) => [
q(Lengilu),
],
- q(3842) => [
+ q(3870) => [
q(Lingarak),
q(Neverver),
],
- q(3843) => [
+ q(3871) => [
q(Wala),
],
- q(3844) => [
+ q(3872) => [
q(Lega-Mwenga),
],
- q(3845) => [
+ q(3873) => [
q(Opuuo),
],
- q(3846) => [
+ q(3874) => [
q(Logba),
],
- q(3847) => [
+ q(3875) => [
q(Lengo),
],
- q(3848) => [
+ q(3876) => [
q(Pahi),
],
- q(3849) => [
+ q(3877) => [
q(Longgu),
],
- q(3850) => [
+ q(3878) => [
q(Ligenza),
],
- q(3851) => [
+ q(3879) => [
q(Laha (Viet Nam)),
],
- q(3852) => [
+ q(3880) => [
q(Laha (Indonesia)),
],
- q(3853) => [
+ q(3881) => [
q(Lahu Shi),
],
- q(3854) => [
+ q(3882) => [
q(Lahul Lohar),
],
- q(3855) => [
+ q(3883) => [
q(Lhomi),
],
- q(3856) => [
+ q(3884) => [
q(Lahanan),
],
- q(3857) => [
+ q(3885) => [
q(Lhokpu),
],
- q(3858) => [
+ q(3886) => [
q(Mlahso),
],
- q(3859) => [
+ q(3887) => [
q(Lo-Toga),
],
- q(3860) => [
+ q(3888) => [
q(Lahu),
],
- q(3861) => [
+ q(3889) => [
q(West-Central Limba),
],
- q(3862) => [
+ q(3890) => [
q(Likum),
],
- q(3863) => [
+ q(3891) => [
q(Hlai),
],
- q(3864) => [
+ q(3892) => [
q(Nyindrou),
],
- q(3865) => [
+ q(3893) => [
q(Likila),
],
- q(3866) => [
+ q(3894) => [
q(Limbu),
],
- q(3867) => [
+ q(3895) => [
q(Ligbi),
],
- q(3868) => [
+ q(3896) => [
q(Lihir),
],
- q(3869) => [
+ q(3897) => [
q(Lingkhim),
],
- q(3870) => [
+ q(3898) => [
q(Ligurian),
],
- q(3871) => [
+ q(3899) => [
q(Lika),
],
- q(3872) => [
+ q(3900) => [
q(Lillooet),
],
- q(3873) => [
+ q(3901) => [
q(Liki),
],
- q(3874) => [
+ q(3902) => [
q(Sekpele),
],
- q(3875) => [
+ q(3903) => [
q(Libido),
],
- q(3876) => [
+ q(3904) => [
q(Liberian English),
],
- q(3877) => [
+ q(3905) => [
q(Lisu),
],
- q(3878) => [
+ q(3906) => [
q(Logorik),
],
- q(3879) => [
+ q(3907) => [
q(Liv),
],
- q(3880) => [
+ q(3908) => [
q(Col),
],
- q(3881) => [
+ q(3909) => [
q(Liabuku),
],
- q(3882) => [
+ q(3910) => [
q(Banda-Bambari),
],
- q(3883) => [
+ q(3911) => [
q(Libinza),
],
- q(3884) => [
+ q(3912) => [
q(Rampi),
],
- q(3885) => [
+ q(3913) => [
q(Laiyolo),
],
- q(3886) => [
+ q(3914) => [
q(Li'o),
],
- q(3887) => [
+ q(3915) => [
q(Lampung Api),
],
- q(3888) => [
+ q(3916) => [
q(Lakalei),
],
- q(3889) => [
+ q(3917) => [
q(Kabras),
q(Lukabaras),
],
- q(3890) => [
+ q(3918) => [
q(Kucong),
],
- q(3891) => [
+ q(3919) => [
q(Lakonde),
],
- q(3892) => [
+ q(3920) => [
q(Kenyi),
],
- q(3893) => [
+ q(3921) => [
q(Lakha),
],
- q(3894) => [
+ q(3922) => [
q(Laki),
],
- q(3895) => [
+ q(3923) => [
q(Remun),
],
- q(3896) => [
+ q(3924) => [
q(Laeko-Libuat),
],
- q(3897) => [
+ q(3925) => [
q(Lakon),
q(Vure),
],
- q(3898) => [
+ q(3926) => [
q(Khayo),
q(Olukhayo),
],
- q(3899) => [
+ q(3927) => [
q(Pari),
],
- q(3900) => [
+ q(3928) => [
q(Kisa),
q(Olushisa),
],
- q(3901) => [
+ q(3929) => [
q(Lakota),
],
- q(3902) => [
+ q(3930) => [
q(Lokoya),
],
- q(3903) => [
+ q(3931) => [
q(Lala-Roba),
],
- q(3904) => [
+ q(3932) => [
q(Lolo),
],
- q(3905) => [
+ q(3933) => [
q(Lele (Guinea)),
],
- q(3906) => [
+ q(3934) => [
q(Ladin),
],
- q(3907) => [
+ q(3935) => [
q(Lele (Papua New Guinea)),
],
- q(3908) => [
+ q(3936) => [
q(Hermit),
],
- q(3909) => [
+ q(3937) => [
q(Lole),
],
- q(3910) => [
+ q(3938) => [
q(Lamu),
],
- q(3911) => [
+ q(3939) => [
q(Teke-Laali),
],
- q(3912) => [
+ q(3940) => [
+ q(Ladji Ladji),
+ ],
+ q(3941) => [
q(Lelak),
],
- q(3913) => [
+ q(3942) => [
q(Lilau),
],
- q(3914) => [
+ q(3943) => [
q(Lasalimu),
],
- q(3915) => [
+ q(3944) => [
q(Lele (Chad)),
],
- q(3916) => [
+ q(3945) => [
q(Khlor),
],
- q(3917) => [
+ q(3946) => [
q(North Efate),
],
- q(3918) => [
+ q(3947) => [
q(Lolak),
],
- q(3919) => [
+ q(3948) => [
q(Lithuanian Sign Language),
],
- q(3920) => [
+ q(3949) => [
q(Lau),
],
- q(3921) => [
+ q(3950) => [
q(Lauan),
],
- q(3922) => [
+ q(3951) => [
q(East Limba),
],
- q(3923) => [
+ q(3952) => [
q(Merei),
],
- q(3924) => [
+ q(3953) => [
q(Limilngan),
],
- q(3925) => [
+ q(3954) => [
q(Lumun),
],
- q(3926) => [
+ q(3955) => [
q(Peve),
],
- q(3927) => [
+ q(3956) => [
q(South Lembata),
],
- q(3928) => [
+ q(3957) => [
q(Lamogai),
],
- q(3929) => [
+ q(3958) => [
q(Lambichhong),
],
- q(3930) => [
+ q(3959) => [
q(Lombi),
],
- q(3931) => [
+ q(3960) => [
q(West Lembata),
],
- q(3932) => [
+ q(3961) => [
q(Lamkang),
],
- q(3933) => [
+ q(3962) => [
q(Hano),
],
- q(3934) => [
+ q(3963) => [
q(Lamam),
],
- q(3935) => [
+ q(3964) => [
q(Lambadi),
],
- q(3936) => [
+ q(3965) => [
q(Lombard),
],
- q(3937) => [
+ q(3966) => [
q(Limbum),
],
- q(3938) => [
+ q(3967) => [
q(Lamatuka),
],
- q(3939) => [
+ q(3968) => [
q(Lamalera),
],
- q(3940) => [
+ q(3969) => [
q(Lamenu),
],
- q(3941) => [
+ q(3970) => [
q(Lomaiviti),
],
- q(3942) => [
+ q(3971) => [
q(Lake Miwok),
],
- q(3943) => [
+ q(3972) => [
q(Laimbue),
],
- q(3944) => [
+ q(3973) => [
q(Lamboya),
],
- q(3945) => [
+ q(3974) => [
q(Lumbee),
],
- q(3946) => [
+ q(3975) => [
q(Langbashe),
],
- q(3947) => [
+ q(3976) => [
q(Mbalanhu),
],
- q(3948) => [
+ q(3977) => [
q(Lundayeh),
q(Lun Bawang),
],
- q(3949) => [
+ q(3978) => [
q(Langobardic),
],
- q(3950) => [
+ q(3979) => [
q(Lanoh),
],
- q(3951) => [
+ q(3980) => [
q(Daantanai'),
],
- q(3952) => [
+ q(3981) => [
q(Leningitij),
],
- q(3953) => [
+ q(3982) => [
q(South Central Banda),
],
- q(3954) => [
+ q(3983) => [
q(Langam),
],
- q(3955) => [
+ q(3984) => [
q(Lorediakarkar),
],
- q(3956) => [
+ q(3985) => [
q(Lango (Sudan)),
],
- q(3957) => [
+ q(3986) => [
q(Lamnso'),
],
- q(3958) => [
+ q(3987) => [
q(Longuda),
],
- q(3959) => [
+ q(3988) => [
q(Lonzo),
],
- q(3960) => [
+ q(3989) => [
q(Loloda),
],
- q(3961) => [
+ q(3990) => [
q(Lobi),
],
- q(3962) => [
+ q(3991) => [
q(Inonhan),
],
- q(3963) => [
+ q(3992) => [
q(Saluan),
],
- q(3964) => [
+ q(3993) => [
q(Logol),
],
- q(3965) => [
+ q(3994) => [
q(Logo),
],
- q(3966) => [
+ q(3995) => [
q(Narim),
],
- q(3967) => [
+ q(3996) => [
q(Loma (Cote d'Ivoire)),
],
- q(3968) => [
+ q(3997) => [
q(Lou),
],
- q(3969) => [
+ q(3998) => [
q(Loko),
],
- q(3970) => [
+ q(3999) => [
q(Loma (Liberia)),
],
- q(3971) => [
+ q(4000) => [
q(Malawi Lomwe),
],
- q(3972) => [
+ q(4001) => [
q(Lombo),
],
- q(3973) => [
+ q(4002) => [
q(Lopa),
],
- q(3974) => [
+ q(4003) => [
q(Lobala),
],
- q(3975) => [
+ q(4004) => [
q(Teen),
],
- q(3976) => [
+ q(4005) => [
q(Loniu),
],
- q(3977) => [
+ q(4006) => [
q(Otuho),
],
- q(3978) => [
+ q(4007) => [
q(Louisiana Creole French),
],
- q(3979) => [
+ q(4008) => [
q(Lopi),
],
- q(3980) => [
+ q(4009) => [
q(Tampias Lobu),
],
- q(3981) => [
+ q(4010) => [
q(Loun),
],
- q(3982) => [
- q(Lowa),
+ q(4011) => [
+ q(Loke),
],
- q(3983) => [
+ q(4012) => [
q(Lelepa),
],
- q(3984) => [
+ q(4013) => [
q(Lepki),
],
- q(3985) => [
+ q(4014) => [
q(Long Phuri Naga),
],
- q(3986) => [
+ q(4015) => [
q(Lipo),
],
- q(3987) => [
+ q(4016) => [
q(Lopit),
],
- q(3988) => [
+ q(4017) => [
q(Rara Bakati'),
],
- q(3989) => [
+ q(4018) => [
q(Northern Luri),
],
- q(3990) => [
+ q(4019) => [
q(Laurentian),
],
- q(3991) => [
+ q(4020) => [
q(Laragia),
],
- q(3992) => [
+ q(4021) => [
q(Marachi),
q(Olumarachi),
],
- q(3993) => [
+ q(4022) => [
q(Loarki),
],
- q(3994) => [
+ q(4023) => [
q(Lari),
],
- q(3995) => [
+ q(4024) => [
q(Marama),
q(Olumarama),
],
- q(3996) => [
+ q(4025) => [
q(Lorang),
],
- q(3997) => [
+ q(4026) => [
q(Laro),
],
- q(3998) => [
- q(Southern Lorung),
+ q(4027) => [
+ q(Southern Yamphu),
],
- q(3999) => [
+ q(4028) => [
q(Larantuka Malay),
],
- q(4000) => [
+ q(4029) => [
q(Larevat),
],
- q(4001) => [
+ q(4030) => [
q(Lemerig),
],
- q(4002) => [
+ q(4031) => [
q(Lasgerdi),
],
- q(4003) => [
+ q(4032) => [
q(Lishana Deni),
],
- q(4004) => [
+ q(4033) => [
q(Lusengo),
],
- q(4005) => [
+ q(4034) => [
q(Lyons Sign Language),
],
- q(4006) => [
+ q(4035) => [
q(Lish),
],
- q(4007) => [
+ q(4036) => [
q(Lashi),
],
- q(4008) => [
+ q(4037) => [
q(Latvian Sign Language),
],
- q(4009) => [
+ q(4038) => [
q(Saamia),
q(Olusamia),
],
- q(4010) => [
+ q(4039) => [
q(Laos Sign Language),
],
- q(4011) => [
+ q(4040) => [
q(Panamanian Sign Language),
q(Lengua de Senas Panamenas),
],
- q(4012) => [
+ q(4041) => [
q(Aruop),
],
- q(4013) => [
+ q(4042) => [
q(Lasi),
],
- q(4014) => [
+ q(4043) => [
q(Trinidad and Tobago Sign Language),
],
- q(4015) => [
+ q(4044) => [
q(Mauritian Sign Language),
],
- q(4016) => [
+ q(4045) => [
q(Late Middle Chinese),
],
- q(4017) => [
+ q(4046) => [
q(Latgalian),
],
- q(4018) => [
+ q(4047) => [
q(Leti (Indonesia)),
],
- q(4019) => [
+ q(4048) => [
q(Latunde),
],
- q(4020) => [
+ q(4049) => [
q(Tsotso),
q(Olutsotso),
],
- q(4021) => [
+ q(4050) => [
q(Tachoni),
q(Lutachoni),
],
- q(4022) => [
+ q(4051) => [
q(Latu),
],
- q(4023) => [
+ q(4052) => [
q(Aringa),
],
- q(4024) => [
+ q(4053) => [
q(Ludian),
],
- q(4025) => [
+ q(4054) => [
q(Luvale),
],
- q(4026) => [
+ q(4055) => [
q(Laua),
],
- q(4027) => [
+ q(4056) => [
q(Luna),
],
- q(4028) => [
+ q(4057) => [
q(Lunanakha),
],
- q(4029) => [
+ q(4058) => [
q(Olu'bo),
],
- q(4030) => [
+ q(4059) => [
q(Luimbi),
],
- q(4031) => [
+ q(4060) => [
q(Lumbu),
],
- q(4032) => [
+ q(4061) => [
q(Lucumi),
],
- q(4033) => [
+ q(4062) => [
q(Laura),
],
- q(4034) => [
+ q(4063) => [
q(Lushootseed),
],
- q(4035) => [
+ q(4064) => [
q(Lumba-Yakkha),
],
- q(4036) => [
+ q(4065) => [
q(Luwati),
],
- q(4037) => [
+ q(4066) => [
q(Luo (Cameroon)),
],
- q(4038) => [
+ q(4067) => [
q(Luyia),
q(Oluluyia),
],
- q(4039) => [
+ q(4068) => [
q(Southern Luri),
],
- q(4040) => [
+ q(4069) => [
q(Maku'a),
],
- q(4041) => [
+ q(4070) => [
q(Lavukaleve),
],
- q(4042) => [
+ q(4071) => [
q(Standard Latvian),
],
- q(4043) => [
+ q(4072) => [
q(Levuka),
],
- q(4044) => [
+ q(4073) => [
q(Lwalu),
],
- q(4045) => [
+ q(4074) => [
q(Lewo Eleng),
],
- q(4046) => [
+ q(4075) => [
q(Wanga),
q(Oluwanga),
],
- q(4047) => [
+ q(4076) => [
q(White Lachi),
],
- q(4048) => [
+ q(4077) => [
q(Eastern Lawa),
],
- q(4049) => [
+ q(4078) => [
q(Laomian),
],
- q(4050) => [
+ q(4079) => [
q(Luwo),
],
- q(4051) => [
+ q(4080) => [
q(Lewotobi),
],
- q(4052) => [
+ q(4081) => [
q(Lewo),
],
- q(4053) => [
+ q(4082) => [
q(Layakha),
],
- q(4054) => [
+ q(4083) => [
q(Lyngngam),
],
- q(4055) => [
+ q(4084) => [
q(Luyana),
],
- q(4056) => [
+ q(4085) => [
q(Literary Chinese),
],
- q(4057) => [
+ q(4086) => [
q(Litzlitz),
],
- q(4058) => [
+ q(4087) => [
q(Leinong Naga),
],
- q(4059) => [
+ q(4088) => [
q(Laz),
],
- q(4060) => [
+ q(4089) => [
q(San Jeronimo Tecoatl Mazatec),
],
- q(4061) => [
+ q(4090) => [
q(Yutanduchi Mixtec),
],
- q(4062) => [
+ q(4091) => [
q(Bo-Rukul),
],
- q(4063) => [
+ q(4092) => [
q(Mafa),
],
- q(4064) => [
+ q(4093) => [
q(Jalapa De Diaz Mazatec),
],
- q(4065) => [
+ q(4094) => [
q(Mam),
],
- q(4066) => [
+ q(4095) => [
q(Chiquihuitlan Mazatec),
],
- q(4067) => [
+ q(4096) => [
q(San Francisco Matlatzinca),
],
- q(4068) => [
+ q(4097) => [
q(Huautla Mazatec),
],
- q(4069) => [
+ q(4098) => [
q(Satere-Mawe),
],
- q(4070) => [
+ q(4099) => [
q(Mampruli),
],
- q(4071) => [
+ q(4100) => [
q(North Moluccan Malay),
],
- q(4072) => [
+ q(4101) => [
q(Central Mazahua),
],
- q(4073) => [
+ q(4102) => [
q(Higaonon),
],
- q(4074) => [
+ q(4103) => [
q(Western Bukidnon Manobo),
],
- q(4075) => [
+ q(4104) => [
q(Macushi),
],
- q(4076) => [
+ q(4105) => [
q(Dibabawon Manobo),
],
- q(4077) => [
+ q(4106) => [
q(Molale),
],
- q(4078) => [
+ q(4107) => [
q(Baba Malay),
],
- q(4079) => [
+ q(4108) => [
q(Mangseng),
],
- q(4080) => [
+ q(4109) => [
q(Ilianen Manobo),
],
- q(4081) => [
+ q(4110) => [
q(Nadeb),
],
- q(4082) => [
+ q(4111) => [
q(Malol),
],
- q(4083) => [
+ q(4112) => [
q(Maxakali),
],
- q(4084) => [
+ q(4113) => [
q(Ombamba),
],
- q(4085) => [
+ q(4114) => [
q(Macaguan),
],
- q(4086) => [
+ q(4115) => [
q(Mbo (Cameroon)),
],
- q(4087) => [
+ q(4116) => [
q(Malayo),
],
- q(4088) => [
+ q(4117) => [
q(Maisin),
],
- q(4089) => [
+ q(4118) => [
q(Nukak Maku),
],
- q(4090) => [
+ q(4119) => [
q(Sarangani Manobo),
],
- q(4091) => [
+ q(4120) => [
q(Matigsalug Manobo),
],
- q(4092) => [
+ q(4121) => [
q(Mbula-Bwazza),
],
- q(4093) => [
+ q(4122) => [
q(Mbulungish),
],
- q(4094) => [
+ q(4123) => [
q(Maring),
],
- q(4095) => [
+ q(4124) => [
q(Mari (East Sepik Province)),
],
- q(4096) => [
+ q(4125) => [
q(Memoni),
],
- q(4097) => [
+ q(4126) => [
q(Amoltepec Mixtec),
],
- q(4098) => [
+ q(4127) => [
q(Maca),
],
- q(4099) => [
+ q(4128) => [
q(Machiguenga),
],
- q(4100) => [
+ q(4129) => [
q(Bitur),
],
- q(4101) => [
+ q(4130) => [
q(Sharanahua),
],
- q(4102) => [
+ q(4131) => [
q(Itundujia Mixtec),
],
- q(4103) => [
+ q(4132) => [
q(Matses),
],
- q(4104) => [
+ q(4133) => [
q(Mapoyo),
],
- q(4105) => [
+ q(4134) => [
q(Maquiritari),
],
- q(4106) => [
+ q(4135) => [
q(Mese),
],
- q(4107) => [
+ q(4136) => [
q(Mvanip),
],
- q(4108) => [
+ q(4137) => [
q(Mbunda),
],
- q(4109) => [
+ q(4138) => [
q(Macaguaje),
],
- q(4110) => [
+ q(4139) => [
q(Malaccan Creole Portuguese),
],
- q(4111) => [
+ q(4140) => [
q(Masana),
],
- q(4112) => [
+ q(4141) => [
q(Coatlan Mixe),
],
- q(4113) => [
+ q(4142) => [
q(Makaa),
],
- q(4114) => [
+ q(4143) => [
q(Ese),
],
- q(4115) => [
+ q(4144) => [
q(Menya),
],
- q(4116) => [
+ q(4145) => [
q(Mambai),
],
- q(4117) => [
+ q(4146) => [
q(Mengisa),
],
- q(4118) => [
+ q(4147) => [
q(Cameroon Mambila),
],
- q(4119) => [
+ q(4148) => [
q(Minanibai),
],
- q(4120) => [
+ q(4149) => [
q(Mawa (Chad)),
],
- q(4121) => [
+ q(4150) => [
q(Mpiemo),
],
- q(4122) => [
+ q(4151) => [
q(South Watut),
],
- q(4123) => [
+ q(4152) => [
q(Mawan),
],
- q(4124) => [
+ q(4153) => [
q(Mada (Nigeria)),
],
- q(4125) => [
+ q(4154) => [
q(Morigi),
],
- q(4126) => [
+ q(4155) => [
q(Male (Papua New Guinea)),
],
- q(4127) => [
+ q(4156) => [
q(Mbum),
],
- q(4128) => [
+ q(4157) => [
q(Maba (Chad)),
],
- q(4129) => [
+ q(4158) => [
q(Massalat),
],
- q(4130) => [
+ q(4159) => [
q(Maguindanaon),
],
- q(4131) => [
+ q(4160) => [
q(Mamvu),
],
- q(4132) => [
+ q(4161) => [
q(Mangbetu),
],
- q(4133) => [
+ q(4162) => [
q(Mangbutu),
],
- q(4134) => [
+ q(4163) => [
q(Maltese Sign Language),
],
- q(4135) => [
+ q(4164) => [
q(Mayogo),
],
- q(4136) => [
+ q(4165) => [
q(Mbati),
],
- q(4137) => [
+ q(4166) => [
q(Mbala),
],
- q(4138) => [
+ q(4167) => [
q(Mbole),
],
- q(4139) => [
+ q(4168) => [
q(Maria (Papua New Guinea)),
],
- q(4140) => [
+ q(4169) => [
q(Mbere),
],
- q(4141) => [
+ q(4170) => [
q(Mboko),
],
- q(4142) => [
+ q(4171) => [
q(Santa Lucia Monteverde Mixtec),
],
- q(4143) => [
+ q(4172) => [
q(Mbosi),
],
- q(4144) => [
+ q(4173) => [
q(Dizin),
],
- q(4145) => [
+ q(4174) => [
q(Male (Ethiopia)),
],
- q(4146) => [
+ q(4175) => [
q(Surui Do Para),
],
- q(4147) => [
+ q(4176) => [
q(Menka),
],
- q(4148) => [
- q(Ikobi-Mena),
+ q(4177) => [
+ q(Ikobi),
],
- q(4149) => [
+ q(4178) => [
q(Mara),
],
- q(4150) => [
+ q(4179) => [
q(Melpa),
],
- q(4151) => [
+ q(4180) => [
q(Mengen),
],
- q(4152) => [
+ q(4181) => [
q(Megam),
],
- q(4153) => [
+ q(4182) => [
q(Mea),
],
- q(4154) => [
+ q(4183) => [
q(Southwestern Tlaxiaco Mixtec),
],
- q(4155) => [
+ q(4184) => [
q(Midob),
],
- q(4156) => [
+ q(4185) => [
q(Meyah),
],
- q(4157) => [
+ q(4186) => [
q(Mekeo),
],
- q(4158) => [
+ q(4187) => [
q(Central Melanau),
],
- q(4159) => [
+ q(4188) => [
q(Mangala),
],
- q(4160) => [
+ q(4189) => [
q(Kedah Malay),
],
- q(4161) => [
+ q(4190) => [
q(Miriwung),
],
- q(4162) => [
+ q(4191) => [
q(Merey),
],
- q(4163) => [
+ q(4192) => [
q(Meru),
],
- q(4164) => [
+ q(4193) => [
q(Masmaje),
],
- q(4165) => [
+ q(4194) => [
q(Mato),
],
- q(4166) => [
+ q(4195) => [
q(Motu),
],
- q(4167) => [
+ q(4196) => [
q(Mann),
],
- q(4168) => [
+ q(4197) => [
q(Maaka),
],
- q(4169) => [
+ q(4198) => [
q(Hassaniyya),
],
- q(4170) => [
+ q(4199) => [
q(Menominee),
],
- q(4171) => [
+ q(4200) => [
q(Pattani Malay),
],
- q(4172) => [
+ q(4201) => [
q(Bangka),
],
- q(4173) => [
+ q(4202) => [
q(Mba),
],
- q(4174) => [
+ q(4203) => [
q(Mendankwe-Nkwen),
],
- q(4175) => [
+ q(4204) => [
q(Morisyen),
],
- q(4176) => [
+ q(4205) => [
q(Naki),
],
- q(4177) => [
+ q(4206) => [
q(Mixifore),
],
- q(4178) => [
+ q(4207) => [
q(Matal),
],
- q(4179) => [
+ q(4208) => [
q(Wandala),
],
- q(4180) => [
+ q(4209) => [
q(Mefele),
],
- q(4181) => [
+ q(4210) => [
q(North Mofu),
],
- q(4182) => [
+ q(4211) => [
q(Putai),
],
- q(4183) => [
+ q(4212) => [
q(Marghi South),
],
- q(4184) => [
+ q(4213) => [
q(Cross River Mbembe),
],
- q(4185) => [
+ q(4214) => [
q(Mbe),
],
- q(4186) => [
+ q(4215) => [
q(Makassar Malay),
],
- q(4187) => [
+ q(4216) => [
q(Moba),
],
- q(4188) => [
+ q(4217) => [
q(Marithiel),
],
- q(4189) => [
+ q(4218) => [
q(Mexican Sign Language),
],
- q(4190) => [
+ q(4219) => [
q(Mokerang),
],
- q(4191) => [
+ q(4220) => [
q(Mbwela),
],
- q(4192) => [
+ q(4221) => [
q(Mandjak),
],
- q(4193) => [
+ q(4222) => [
q(Mulaha),
],
- q(4194) => [
+ q(4223) => [
q(Melo),
],
- q(4195) => [
+ q(4224) => [
q(Mayo),
],
- q(4196) => [
+ q(4225) => [
q(Mabaan),
],
- q(4197) => [
+ q(4226) => [
q(Mararit),
],
- q(4198) => [
+ q(4227) => [
q(Morokodo),
],
- q(4199) => [
+ q(4228) => [
q(Moru),
],
- q(4200) => [
+ q(4229) => [
q(Mango),
],
- q(4201) => [
+ q(4230) => [
q(Maklew),
],
- q(4202) => [
- q(Mpongmpong),
+ q(4231) => [
+ q(Mpumpong),
],
- q(4203) => [
+ q(4232) => [
q(Makhuwa-Meetto),
],
- q(4204) => [
+ q(4233) => [
q(Lijili),
],
- q(4205) => [
+ q(4234) => [
q(Abureni),
],
- q(4206) => [
+ q(4235) => [
q(Mawes),
],
- q(4207) => [
+ q(4236) => [
q(Maleu-Kilenge),
],
- q(4208) => [
+ q(4237) => [
q(Mambae),
],
- q(4209) => [
+ q(4238) => [
q(Mbangi),
],
- q(4210) => [
+ q(4239) => [
q(Meta'),
],
- q(4211) => [
+ q(4240) => [
q(Eastern Magar),
],
- q(4212) => [
+ q(4241) => [
q(Malila),
],
- q(4213) => [
+ q(4242) => [
q(Mambwe-Lungu),
],
- q(4214) => [
+ q(4243) => [
q(Manda (Tanzania)),
],
- q(4215) => [
+ q(4244) => [
q(Mongol),
],
- q(4216) => [
+ q(4245) => [
q(Mailu),
],
- q(4217) => [
+ q(4246) => [
q(Matengo),
],
- q(4218) => [
+ q(4247) => [
q(Matumbi),
],
- q(4219) => [
- q(Omati),
- ],
- q(4220) => [
+ q(4248) => [
q(Mbunga),
],
- q(4221) => [
+ q(4249) => [
q(Mbugwe),
],
- q(4222) => [
+ q(4250) => [
q(Manda (India)),
],
- q(4223) => [
+ q(4251) => [
q(Mahongwe),
],
- q(4224) => [
+ q(4252) => [
q(Mocho),
],
- q(4225) => [
+ q(4253) => [
q(Mbugu),
],
- q(4226) => [
+ q(4254) => [
q(Besisi),
q(Mah Meri),
],
- q(4227) => [
+ q(4255) => [
q(Mamaa),
],
- q(4228) => [
+ q(4256) => [
q(Margu),
],
- q(4229) => [
+ q(4257) => [
q(Maskoy Pidgin),
],
- q(4230) => [
+ q(4258) => [
q(Ma'di),
],
- q(4231) => [
+ q(4259) => [
q(Mogholi),
],
- q(4232) => [
+ q(4260) => [
q(Mungaka),
],
- q(4233) => [
+ q(4261) => [
q(Mauwake),
],
- q(4234) => [
+ q(4262) => [
q(Makhuwa-Moniga),
],
- q(4235) => [
+ q(4263) => [
q(Mocheno),
],
- q(4236) => [
+ q(4264) => [
q(Mashi (Zambia)),
],
- q(4237) => [
+ q(4265) => [
q(Balinese Malay),
],
- q(4238) => [
+ q(4266) => [
q(Mandan),
],
- q(4239) => [
+ q(4267) => [
q(Eastern Mari),
],
- q(4240) => [
+ q(4268) => [
q(Buru (Indonesia)),
],
- q(4241) => [
+ q(4269) => [
q(Mandahuaca),
],
- q(4242) => [
+ q(4270) => [
q(Digaro-Mishmi),
q(Darang Deng),
],
- q(4243) => [
+ q(4271) => [
q(Mbukushu),
],
- q(4244) => [
+ q(4272) => [
q(Maru),
q(Lhaovo),
],
- q(4245) => [
+ q(4273) => [
q(Ma'anyan),
],
- q(4246) => [
+ q(4274) => [
q(Mor (Mor Islands)),
],
- q(4247) => [
+ q(4275) => [
q(Miami),
],
- q(4248) => [
+ q(4276) => [
q(Atatlahuca Mixtec),
],
- q(4249) => [
+ q(4277) => [
q(Mandaic),
],
- q(4250) => [
+ q(4278) => [
q(Ocotepec Mixtec),
],
- q(4251) => [
+ q(4279) => [
q(Mofu-Gudur),
],
- q(4252) => [
+ q(4280) => [
q(San Miguel El Grande Mixtec),
],
- q(4253) => [
+ q(4281) => [
q(Chayuco Mixtec),
],
- q(4254) => [
+ q(4282) => [
q(Chigmecatitlan Mixtec),
],
- q(4255) => [
+ q(4283) => [
q(Abar),
],
- q(4256) => [
+ q(4284) => [
q(Mikasuki),
],
- q(4257) => [
+ q(4285) => [
q(Penoles Mixtec),
],
- q(4258) => [
+ q(4286) => [
q(Alacatlatzala Mixtec),
],
- q(4259) => [
+ q(4287) => [
q(Pinotepa Nacional Mixtec),
],
- q(4260) => [
+ q(4288) => [
q(Apasco-Apoala Mixtec),
],
- q(4261) => [
+ q(4289) => [
q(Miskito),
],
- q(4262) => [
+ q(4290) => [
q(Isthmus Mixe),
],
- q(4263) => [
+ q(4291) => [
q(Southern Puebla Mixtec),
],
- q(4264) => [
+ q(4292) => [
q(Cacaloxtepec Mixtec),
],
- q(4265) => [
+ q(4293) => [
q(Akoye),
],
- q(4266) => [
+ q(4294) => [
q(Mixtepec Mixtec),
],
- q(4267) => [
+ q(4295) => [
q(Ayutla Mixtec),
],
- q(4268) => [
+ q(4296) => [
q(Coatzospan Mixtec),
],
- q(4269) => [
+ q(4297) => [
q(San Juan Colorado Mixtec),
],
- q(4270) => [
+ q(4298) => [
q(Northwest Maidu),
],
- q(4271) => [
+ q(4299) => [
q(Muskum),
],
- q(4272) => [
+ q(4300) => [
q(Tu),
],
- q(4273) => [
+ q(4301) => [
q(Mwera (Nyasa)),
],
- q(4274) => [
+ q(4302) => [
q(Kim Mun),
],
- q(4275) => [
+ q(4303) => [
q(Mawak),
],
- q(4276) => [
+ q(4304) => [
q(Matukar),
],
- q(4277) => [
+ q(4305) => [
q(Mandeali),
],
- q(4278) => [
+ q(4306) => [
q(Medebur),
],
- q(4279) => [
+ q(4307) => [
q(Ma (Papua New Guinea)),
],
- q(4280) => [
+ q(4308) => [
q(Malankuravan),
],
- q(4281) => [
+ q(4309) => [
q(Malapandaram),
],
- q(4282) => [
+ q(4310) => [
q(Malaryan),
],
- q(4283) => [
+ q(4311) => [
q(Malavedan),
],
- q(4284) => [
+ q(4312) => [
q(Miship),
],
- q(4285) => [
+ q(4313) => [
q(Sauria Paharia),
],
- q(4286) => [
+ q(4314) => [
q(Manna-Dora),
],
- q(4287) => [
+ q(4315) => [
q(Mannan),
],
- q(4288) => [
+ q(4316) => [
q(Karbi),
],
- q(4289) => [
+ q(4317) => [
q(Mahali),
],
- q(4290) => [
+ q(4318) => [
q(Mahican),
],
- q(4291) => [
+ q(4319) => [
q(Majhi),
],
- q(4292) => [
+ q(4320) => [
q(Mbre),
],
- q(4293) => [
+ q(4321) => [
q(Mal Paharia),
],
- q(4294) => [
+ q(4322) => [
q(Siliput),
],
- q(4295) => [
+ q(4323) => [
q(Mawchi),
],
- q(4296) => [
+ q(4324) => [
q(Miya),
],
- q(4297) => [
+ q(4325) => [
q(Mak (China)),
],
- q(4298) => [
+ q(4326) => [
q(Dhatki),
],
- q(4299) => [
+ q(4327) => [
q(Mokilese),
],
- q(4300) => [
+ q(4328) => [
q(Byep),
],
- q(4301) => [
+ q(4329) => [
q(Mokole),
],
- q(4302) => [
+ q(4330) => [
q(Moklen),
],
- q(4303) => [
+ q(4331) => [
q(Kupang Malay),
],
- q(4304) => [
+ q(4332) => [
q(Mingang Doso),
],
- q(4305) => [
+ q(4333) => [
q(Moikodi),
],
- q(4306) => [
+ q(4334) => [
q(Bay Miwok),
],
- q(4307) => [
+ q(4335) => [
q(Malas),
],
- q(4308) => [
+ q(4336) => [
q(Silacayoapan Mixtec),
],
- q(4309) => [
+ q(4337) => [
q(Vamale),
],
- q(4310) => [
+ q(4338) => [
q(Konyanka Maninka),
],
- q(4311) => [
+ q(4339) => [
q(Mafea),
],
- q(4312) => [
+ q(4340) => [
q(Kituba (Congo)),
],
- q(4313) => [
+ q(4341) => [
q(Kinamiging Manobo),
],
- q(4314) => [
+ q(4342) => [
q(East Makian),
],
- q(4315) => [
+ q(4343) => [
q(Makasae),
],
- q(4316) => [
+ q(4344) => [
q(Malo),
],
- q(4317) => [
+ q(4345) => [
q(Mbule),
],
- q(4318) => [
+ q(4346) => [
q(Cao Lan),
],
- q(4319) => [
+ q(4347) => [
q(Malakhel),
],
- q(4320) => [
+ q(4348) => [
q(Manambu),
],
- q(4321) => [
+ q(4349) => [
q(Mal),
],
- q(4322) => [
+ q(4350) => [
q(Mape),
],
- q(4323) => [
+ q(4351) => [
q(Malimpung),
],
- q(4324) => [
+ q(4352) => [
q(Miltu),
],
- q(4325) => [
+ q(4353) => [
q(Ilwana),
q(Kiwilwana),
],
- q(4326) => [
+ q(4354) => [
q(Malua Bay),
],
- q(4327) => [
+ q(4355) => [
q(Mulam),
],
- q(4328) => [
+ q(4356) => [
q(Malango),
],
- q(4329) => [
+ q(4357) => [
q(Mlomp),
],
- q(4330) => [
+ q(4358) => [
q(Bargam),
],
- q(4331) => [
+ q(4359) => [
q(Western Maninkakan),
],
- q(4332) => [
+ q(4360) => [
q(Vame),
],
- q(4333) => [
+ q(4361) => [
q(Masalit),
],
- q(4334) => [
+ q(4362) => [
q(To'abaita),
],
- q(4335) => [
+ q(4363) => [
q(Motlav),
q(Mwotlap),
],
- q(4336) => [
+ q(4364) => [
q(Moloko),
],
- q(4337) => [
+ q(4365) => [
q(Malfaxal),
q(Naha'ai),
],
- q(4338) => [
+ q(4366) => [
q(Malaynon),
],
- q(4339) => [
+ q(4367) => [
q(Mama),
],
- q(4340) => [
+ q(4368) => [
q(Momina),
],
- q(4341) => [
+ q(4369) => [
q(Michoacan Mazahua),
],
- q(4342) => [
+ q(4370) => [
q(Maonan),
],
- q(4343) => [
+ q(4371) => [
q(Mae),
],
- q(4344) => [
+ q(4372) => [
q(Mundat),
],
- q(4345) => [
+ q(4373) => [
q(North Ambrym),
],
- q(4346) => [
+ q(4374) => [
q(Mehinaku),
],
- q(4347) => [
+ q(4375) => [
q(Musar),
],
- q(4348) => [
+ q(4376) => [
q(Majhwar),
],
- q(4349) => [
+ q(4377) => [
q(Mukha-Dora),
],
- q(4350) => [
+ q(4378) => [
q(Man Met),
],
- q(4351) => [
+ q(4379) => [
q(Maii),
],
- q(4352) => [
+ q(4380) => [
q(Mamanwa),
],
- q(4353) => [
+ q(4381) => [
q(Mangga Buang),
],
- q(4354) => [
+ q(4382) => [
q(Siawi),
],
- q(4355) => [
+ q(4383) => [
q(Musak),
],
- q(4356) => [
+ q(4384) => [
q(Western Xiangxi Miao),
],
- q(4357) => [
+ q(4385) => [
q(Malalamai),
],
- q(4358) => [
+ q(4386) => [
q(Mmaala),
],
- q(4359) => [
+ q(4387) => [
q(Miriti),
],
- q(4360) => [
+ q(4388) => [
q(Emae),
],
- q(4361) => [
+ q(4389) => [
q(Madak),
],
- q(4362) => [
+ q(4390) => [
q(Migaama),
],
- q(4363) => [
+ q(4391) => [
q(Mabaale),
],
- q(4364) => [
+ q(4392) => [
q(Mbula),
],
- q(4365) => [
+ q(4393) => [
q(Muna),
],
- q(4366) => [
+ q(4394) => [
q(Monde),
],
- q(4367) => [
+ q(4395) => [
q(Naba),
],
- q(4368) => [
+ q(4396) => [
q(Mundani),
],
- q(4369) => [
+ q(4397) => [
q(Eastern Mnong),
],
- q(4370) => [
+ q(4398) => [
q(Mono (Democratic Republic of Congo)),
],
- q(4371) => [
+ q(4399) => [
q(Munji),
],
- q(4372) => [
+ q(4400) => [
q(Mandinka),
],
- q(4373) => [
+ q(4401) => [
q(Tiale),
],
- q(4374) => [
+ q(4402) => [
q(Mapena),
],
- q(4375) => [
+ q(4403) => [
q(Southern Mnong),
],
- q(4376) => [
+ q(4404) => [
q(Min Bei Chinese),
],
- q(4377) => [
+ q(4405) => [
q(Minriq),
],
- q(4378) => [
+ q(4406) => [
q(Mono (USA)),
],
- q(4379) => [
+ q(4407) => [
q(Mansi),
],
- q(4380) => [
+ q(4408) => [
q(Maykulan),
],
- q(4381) => [
+ q(4409) => [
q(Mer),
],
- q(4382) => [
+ q(4410) => [
q(Rennell-Bellona),
],
- q(4383) => [
+ q(4411) => [
q(Mon),
],
- q(4384) => [
+ q(4412) => [
q(Manikion),
],
- q(4385) => [
+ q(4413) => [
q(Manyawa),
],
- q(4386) => [
+ q(4414) => [
q(Moni),
],
- q(4387) => [
+ q(4415) => [
q(Mwan),
],
- q(4388) => [
+ q(4416) => [
q(Mocovi),
],
- q(4389) => [
+ q(4417) => [
q(Mobilian),
],
- q(4390) => [
+ q(4418) => [
q(Montagnais),
],
- q(4391) => [
+ q(4419) => [
q(Mongondow),
],
- q(4392) => [
+ q(4420) => [
q(Mboi),
],
- q(4393) => [
+ q(4421) => [
q(Monzombo),
],
- q(4394) => [
+ q(4422) => [
q(Morori),
],
- q(4395) => [
+ q(4423) => [
q(Mangue),
],
- q(4396) => [
+ q(4424) => [
q(Monom),
],
- q(4397) => [
+ q(4425) => [
q(Mopan Maya),
],
- q(4398) => [
+ q(4426) => [
q(Mor (Bomberai Peninsula)),
],
- q(4399) => [
+ q(4427) => [
q(Moro),
],
- q(4400) => [
+ q(4428) => [
q(Mogum),
],
- q(4401) => [
+ q(4429) => [
q(Mohave),
],
- q(4402) => [
+ q(4430) => [
q(Moi (Congo)),
],
- q(4403) => [
+ q(4431) => [
q(Molima),
],
- q(4404) => [
+ q(4432) => [
q(Shekkacho),
],
- q(4405) => [
+ q(4433) => [
q(Mukulu),
q(Gergiko),
],
- q(4406) => [
+ q(4434) => [
q(Mpoto),
],
- q(4407) => [
+ q(4435) => [
q(Mullukmulluk),
],
- q(4408) => [
+ q(4436) => [
q(Mangarayi),
],
- q(4409) => [
+ q(4437) => [
q(Machinere),
],
- q(4410) => [
+ q(4438) => [
q(Majang),
],
- q(4411) => [
+ q(4439) => [
q(Marba),
],
- q(4412) => [
+ q(4440) => [
q(Maung),
],
- q(4413) => [
+ q(4441) => [
q(Mpade),
],
- q(4414) => [
+ q(4442) => [
q(Martu Wangka),
],
- q(4415) => [
+ q(4443) => [
q(Mbara (Chad)),
],
- q(4416) => [
+ q(4444) => [
q(Middle Watut),
],
- q(4417) => [
+ q(4445) => [
q(Yosondua Mixtec),
],
- q(4418) => [
+ q(4446) => [
q(Mindiri),
],
- q(4419) => [
+ q(4447) => [
q(Miu),
],
- q(4420) => [
+ q(4448) => [
q(Migabac),
],
- q(4421) => [
+ q(4449) => [
q(Matis),
],
- q(4422) => [
+ q(4450) => [
q(Vangunu),
],
- q(4423) => [
+ q(4451) => [
q(Dadibi),
],
- q(4424) => [
+ q(4452) => [
q(Mian),
],
- q(4425) => [
+ q(4453) => [
q(Makurap),
],
- q(4426) => [
+ q(4454) => [
q(Mungkip),
],
- q(4427) => [
+ q(4455) => [
q(Mapidian),
],
- q(4428) => [
- q(Misima-Paneati),
+ q(4456) => [
+ q(Misima-Panaeati),
],
- q(4429) => [
+ q(4457) => [
q(Mapia),
],
- q(4430) => [
+ q(4458) => [
q(Mpi),
],
- q(4431) => [
+ q(4459) => [
q(Maba (Indonesia)),
],
- q(4432) => [
+ q(4460) => [
q(Mbuko),
],
- q(4433) => [
+ q(4461) => [
q(Mangole),
],
- q(4434) => [
+ q(4462) => [
q(Matepi),
],
- q(4435) => [
+ q(4463) => [
q(Momuna),
],
- q(4436) => [
+ q(4464) => [
q(Kota Bangun Kutai Malay),
],
- q(4437) => [
+ q(4465) => [
q(Tlazoyaltepec Mixtec),
],
- q(4438) => [
+ q(4466) => [
q(Mariri),
],
- q(4439) => [
+ q(4467) => [
q(Mamasa),
],
- q(4440) => [
+ q(4468) => [
q(Rajah Kabunsuwan Manobo),
],
- q(4441) => [
+ q(4469) => [
q(Mbelime),
],
- q(4442) => [
+ q(4470) => [
q(South Marquesan),
],
- q(4443) => [
+ q(4471) => [
q(Moronene),
],
- q(4444) => [
+ q(4472) => [
q(Modole),
],
- q(4445) => [
+ q(4473) => [
q(Manipa),
],
- q(4446) => [
+ q(4474) => [
q(Minokok),
],
- q(4447) => [
+ q(4475) => [
q(Mander),
],
- q(4448) => [
+ q(4476) => [
q(West Makian),
],
- q(4449) => [
+ q(4477) => [
q(Mok),
],
- q(4450) => [
+ q(4478) => [
q(Mandari),
],
- q(4451) => [
+ q(4479) => [
q(Mosimo),
],
- q(4452) => [
+ q(4480) => [
q(Murupi),
],
- q(4453) => [
+ q(4481) => [
q(Mamuju),
],
- q(4454) => [
+ q(4482) => [
q(Manggarai),
],
- q(4455) => [
- q(Malasanga),
+ q(4483) => [
+ q(Pano),
],
- q(4456) => [
+ q(4484) => [
q(Mlabri),
],
- q(4457) => [
+ q(4485) => [
q(Marino),
],
- q(4458) => [
+ q(4486) => [
q(Maricopa),
],
- q(4459) => [
+ q(4487) => [
q(Western Magar),
],
- q(4460) => [
+ q(4488) => [
q(Martha's Vineyard Sign Language),
],
- q(4461) => [
+ q(4489) => [
q(Elseng),
],
- q(4462) => [
+ q(4490) => [
q(Mising),
],
- q(4463) => [
+ q(4491) => [
q(Mara Chin),
],
- q(4464) => [
+ q(4492) => [
q(Western Mari),
],
- q(4465) => [
+ q(4493) => [
q(Hmwaveke),
],
- q(4466) => [
+ q(4494) => [
q(Mortlockese),
],
- q(4467) => [
+ q(4495) => [
q(Merlav),
q(Mwerlap),
],
- q(4468) => [
+ q(4496) => [
q(Cheke Holo),
],
- q(4469) => [
+ q(4497) => [
q(Mru),
],
- q(4470) => [
+ q(4498) => [
q(Morouas),
],
- q(4471) => [
+ q(4499) => [
q(North Marquesan),
],
- q(4472) => [
+ q(4500) => [
q(Maria (India)),
],
- q(4473) => [
+ q(4501) => [
q(Maragus),
],
- q(4474) => [
+ q(4502) => [
q(Marghi Central),
],
- q(4475) => [
+ q(4503) => [
q(Mono (Cameroon)),
],
- q(4476) => [
+ q(4504) => [
q(Mangareva),
],
- q(4477) => [
+ q(4505) => [
q(Maranao),
],
- q(4478) => [
+ q(4506) => [
q(Maremgi),
q(Dineor),
],
- q(4479) => [
+ q(4507) => [
q(Mandaya),
],
- q(4480) => [
+ q(4508) => [
q(Marind),
],
- q(4481) => [
+ q(4509) => [
q(Masbatenyo),
],
- q(4482) => [
+ q(4510) => [
q(Sankaran Maninka),
],
- q(4483) => [
+ q(4511) => [
q(Yucatec Maya Sign Language),
],
- q(4484) => [
+ q(4512) => [
q(Musey),
],
- q(4485) => [
+ q(4513) => [
q(Mekwei),
],
- q(4486) => [
+ q(4514) => [
q(Moraid),
],
- q(4487) => [
+ q(4515) => [
q(Masikoro Malagasy),
],
- q(4488) => [
+ q(4516) => [
q(Sabah Malay),
],
- q(4489) => [
+ q(4517) => [
q(Ma (Democratic Republic of Congo)),
],
- q(4490) => [
+ q(4518) => [
q(Mansaka),
],
- q(4491) => [
+ q(4519) => [
q(Molof),
q(Poule),
],
- q(4492) => [
+ q(4520) => [
q(Agusan Manobo),
],
- q(4493) => [
+ q(4521) => [
q(Vures),
],
- q(4494) => [
+ q(4522) => [
q(Mombum),
],
- q(4495) => [
+ q(4523) => [
q(Maritsaua),
],
- q(4496) => [
+ q(4524) => [
q(Caac),
],
- q(4497) => [
+ q(4525) => [
q(Mongolian Sign Language),
],
- q(4498) => [
+ q(4526) => [
q(West Masela),
],
- q(4499) => [
+ q(4527) => [
q(Musom),
],
- q(4500) => [
+ q(4528) => [
q(Maslam),
],
- q(4501) => [
+ q(4529) => [
q(Mansoanka),
],
- q(4502) => [
+ q(4530) => [
q(Moresada),
],
- q(4503) => [
+ q(4531) => [
q(Aruamu),
],
- q(4504) => [
+ q(4532) => [
q(Momare),
],
- q(4505) => [
+ q(4533) => [
q(Cotabato Manobo),
],
- q(4506) => [
+ q(4534) => [
q(Anyin Morofo),
],
- q(4507) => [
+ q(4535) => [
q(Munit),
],
- q(4508) => [
+ q(4536) => [
q(Mualang),
],
- q(4509) => [
+ q(4537) => [
q(Mono (Solomon Islands)),
],
- q(4510) => [
+ q(4538) => [
q(Murik (Papua New Guinea)),
],
- q(4511) => [
+ q(4539) => [
q(Una),
],
- q(4512) => [
+ q(4540) => [
q(Munggui),
],
- q(4513) => [
+ q(4541) => [
q(Maiwa (Papua New Guinea)),
],
- q(4514) => [
+ q(4542) => [
q(Moskona),
],
- q(4515) => [
+ q(4543) => [
q(Mbe'),
],
- q(4516) => [
+ q(4544) => [
q(Montol),
],
- q(4517) => [
+ q(4545) => [
q(Mator),
],
- q(4518) => [
+ q(4546) => [
q(Matagalpa),
],
- q(4519) => [
+ q(4547) => [
q(Totontepec Mixe),
],
- q(4520) => [
+ q(4548) => [
q(Wichi Lhamtes Nocten),
],
- q(4521) => [
+ q(4549) => [
q(Muong),
],
- q(4522) => [
+ q(4550) => [
q(Mewari),
],
- q(4523) => [
+ q(4551) => [
q(Yora),
],
- q(4524) => [
+ q(4552) => [
q(Mota),
],
- q(4525) => [
+ q(4553) => [
q(Tututepec Mixtec),
],
- q(4526) => [
+ q(4554) => [
q(Asaro'o),
],
- q(4527) => [
+ q(4555) => [
q(Southern Binukidnon),
],
- q(4528) => [
+ q(4556) => [
q(Tidaa Mixtec),
],
- q(4529) => [
+ q(4557) => [
q(Nabi),
],
- q(4530) => [
+ q(4558) => [
q(Mundang),
],
- q(4531) => [
+ q(4559) => [
q(Mubi),
],
- q(4532) => [
+ q(4560) => [
q(Mbu'),
],
- q(4533) => [
+ q(4561) => [
q(Mednyj Aleut),
],
- q(4534) => [
+ q(4562) => [
q(Media Lengua),
],
- q(4535) => [
+ q(4563) => [
q(Musgu),
],
- q(4536) => [
+ q(4564) => [
q(Mundu),
],
- q(4537) => [
+ q(4565) => [
q(Musi),
],
- q(4538) => [
+ q(4566) => [
q(Mabire),
],
- q(4539) => [
+ q(4567) => [
q(Mugom),
],
- q(4540) => [
+ q(4568) => [
q(Maiwala),
],
- q(4541) => [
+ q(4569) => [
q(Nyong),
],
- q(4542) => [
+ q(4570) => [
q(Malvi),
],
- q(4543) => [
+ q(4571) => [
q(Eastern Xiangxi Miao),
],
- q(4544) => [
+ q(4572) => [
q(Murle),
],
- q(4545) => [
+ q(4573) => [
q(Western Muria),
],
- q(4546) => [
+ q(4574) => [
q(Yaaku),
],
- q(4547) => [
+ q(4575) => [
q(Muthuvan),
],
- q(4548) => [
+ q(4576) => [
q(Bo-Ung),
],
- q(4549) => [
+ q(4577) => [
q(Muyang),
],
- q(4550) => [
+ q(4578) => [
q(Mursi),
],
- q(4551) => [
+ q(4579) => [
q(Manam),
],
- q(4552) => [
+ q(4580) => [
q(Mattole),
],
- q(4553) => [
+ q(4581) => [
q(Mamboru),
],
- q(4554) => [
+ q(4582) => [
q(Marwari (Pakistan)),
],
- q(4555) => [
+ q(4583) => [
q(Peripheral Mongolian),
],
- q(4556) => [
+ q(4584) => [
q(Yucuane Mixtec),
],
- q(4557) => [
- q(Mire),
+ q(4585) => [
+ q(Mulgi),
],
- q(4558) => [
+ q(4586) => [
q(Miyako),
],
- q(4559) => [
+ q(4587) => [
q(Mekmek),
],
- q(4560) => [
+ q(4588) => [
q(Mbara (Australia)),
],
- q(4561) => [
+ q(4589) => [
q(Muya),
],
- q(4562) => [
+ q(4590) => [
q(Minaveha),
],
- q(4563) => [
+ q(4591) => [
q(Marovo),
],
- q(4564) => [
+ q(4592) => [
q(Duri),
],
- q(4565) => [
+ q(4593) => [
q(Moere),
],
- q(4566) => [
+ q(4594) => [
q(Marau),
],
- q(4567) => [
+ q(4595) => [
q(Massep),
],
- q(4568) => [
+ q(4596) => [
q(Mpotovoro),
],
- q(4569) => [
+ q(4597) => [
q(Marfa),
],
- q(4570) => [
+ q(4598) => [
q(Tagal Murut),
],
- q(4571) => [
+ q(4599) => [
q(Machinga),
],
- q(4572) => [
+ q(4600) => [
q(Meoswar),
],
- q(4573) => [
+ q(4601) => [
q(Indus Kohistani),
],
- q(4574) => [
+ q(4602) => [
q(Mesqan),
],
- q(4575) => [
+ q(4603) => [
q(Mwatebu),
],
- q(4576) => [
+ q(4604) => [
q(Juwal),
],
- q(4577) => [
+ q(4605) => [
q(Are),
],
- q(4578) => [
+ q(4606) => [
q(Mudbura),
],
- q(4579) => [
+ q(4607) => [
q(Mwera (Chimwera)),
],
- q(4580) => [
+ q(4608) => [
q(Murrinh-Patha),
],
- q(4581) => [
+ q(4609) => [
q(Aiklep),
],
- q(4582) => [
+ q(4610) => [
q(Mouk-Aria),
],
- q(4583) => [
+ q(4611) => [
q(Labo),
q(Ninde),
],
- q(4584) => [
+ q(4612) => [
q(Maligo),
],
- q(4585) => [
+ q(4613) => [
q(Kita Maninkakan),
],
- q(4586) => [
+ q(4614) => [
q(Sar),
],
- q(4587) => [
+ q(4615) => [
q(Nyamwanga),
],
- q(4588) => [
+ q(4616) => [
q(Central Maewo),
],
- q(4589) => [
+ q(4617) => [
q(Kala Lagaw Ya),
],
- q(4590) => [
+ q(4618) => [
q(Mun Chin),
],
- q(4591) => [
+ q(4619) => [
q(Mwimbi-Muthambi),
],
- q(4592) => [
+ q(4620) => [
q(Moken),
],
- q(4593) => [
+ q(4621) => [
q(Mittu),
],
- q(4594) => [
+ q(4622) => [
q(Mentawai),
],
- q(4595) => [
+ q(4623) => [
q(Hmong Daw),
],
- q(4596) => [
+ q(4624) => [
q(Mediak),
],
- q(4597) => [
+ q(4625) => [
q(Mosiro),
],
- q(4598) => [
+ q(4626) => [
q(Moingi),
],
- q(4599) => [
+ q(4627) => [
q(Northwest Oaxaca Mixtec),
],
- q(4600) => [
+ q(4628) => [
q(Tezoatlan Mixtec),
],
- q(4601) => [
+ q(4629) => [
q(Manyika),
],
- q(4602) => [
+ q(4630) => [
q(Modang),
],
- q(4603) => [
+ q(4631) => [
q(Mele-Fila),
],
- q(4604) => [
+ q(4632) => [
q(Malgbe),
],
- q(4605) => [
+ q(4633) => [
q(Mbangala),
],
- q(4606) => [
+ q(4634) => [
q(Mvuba),
],
- q(4607) => [
+ q(4635) => [
q(Mozarabic),
],
- q(4608) => [
+ q(4636) => [
q(Miju-Mishmi),
q(Geman Deng),
],
- q(4609) => [
+ q(4637) => [
q(Monumbo),
],
- q(4610) => [
+ q(4638) => [
q(Maxi Gbe),
],
- q(4611) => [
+ q(4639) => [
q(Meramera),
],
- q(4612) => [
+ q(4640) => [
q(Moi (Indonesia)),
],
- q(4613) => [
+ q(4641) => [
q(Mbowe),
],
- q(4614) => [
+ q(4642) => [
q(Tlahuitoltepec Mixe),
],
- q(4615) => [
+ q(4643) => [
q(Juquila Mixe),
],
- q(4616) => [
+ q(4644) => [
q(Murik (Malaysia)),
],
- q(4617) => [
+ q(4645) => [
q(Huitepec Mixtec),
],
- q(4618) => [
+ q(4646) => [
q(Jamiltepec Mixtec),
],
- q(4619) => [
+ q(4647) => [
q(Mada (Cameroon)),
],
- q(4620) => [
+ q(4648) => [
q(Metlatonoc Mixtec),
],
- q(4621) => [
+ q(4649) => [
q(Namo),
],
- q(4622) => [
+ q(4650) => [
q(Mahou),
q(Mawukakan),
],
- q(4623) => [
+ q(4651) => [
q(Southeastern Nochixtlan Mixtec),
],
- q(4624) => [
+ q(4652) => [
q(Central Masela),
],
- q(4625) => [
+ q(4653) => [
q(Mbay),
],
- q(4626) => [
+ q(4654) => [
q(Mayeka),
],
- q(4627) => [
+ q(4655) => [
q(Maramba),
],
- q(4628) => [
+ q(4656) => [
q(Myene),
],
- q(4629) => [
+ q(4657) => [
q(Bambassi),
],
- q(4630) => [
+ q(4658) => [
q(Manta),
],
- q(4631) => [
+ q(4659) => [
q(Makah),
],
- q(4632) => [
+ q(4660) => [
q(Mina (India)),
],
- q(4633) => [
+ q(4661) => [
q(Mangayat),
],
- q(4634) => [
+ q(4662) => [
q(Mamara Senoufo),
],
- q(4635) => [
+ q(4663) => [
q(Moma),
],
- q(4636) => [
+ q(4664) => [
q(Me'en),
],
- q(4637) => [
+ q(4665) => [
q(Anfillo),
],
- q(4638) => [
+ q(4666) => [
q(Piraha),
],
- q(4639) => [
+ q(4667) => [
q(Forest Maninka),
],
- q(4640) => [
+ q(4668) => [
q(Muniche),
],
- q(4641) => [
+ q(4669) => [
q(Mesmes),
],
- q(4642) => [
+ q(4670) => [
q(Munduruku),
],
- q(4643) => [
+ q(4671) => [
q(Muyuw),
],
- q(4644) => [
+ q(4672) => [
q(Masaaba),
],
- q(4645) => [
+ q(4673) => [
q(Macuna),
],
- q(4646) => [
+ q(4674) => [
q(Classical Mandaic),
],
- q(4647) => [
+ q(4675) => [
q(Santa Maria Zacatepec Mixtec),
],
- q(4648) => [
+ q(4676) => [
q(Tumzabt),
],
- q(4649) => [
+ q(4677) => [
q(Madagascar Sign Language),
],
- q(4650) => [
+ q(4678) => [
q(Malimba),
],
- q(4651) => [
+ q(4679) => [
q(Morawa),
],
- q(4652) => [
+ q(4680) => [
q(Monastic Sign Language),
],
- q(4653) => [
+ q(4681) => [
q(Wichi Lhamtes Guisnay),
],
- q(4654) => [
+ q(4682) => [
q(Ixcatlan Mazatec),
],
- q(4655) => [
+ q(4683) => [
q(Manya),
],
- q(4656) => [
+ q(4684) => [
q(Nigeria Mambila),
],
- q(4657) => [
+ q(4685) => [
q(Mazatlan Mixe),
],
- q(4658) => [
+ q(4686) => [
q(Mumuye),
],
- q(4659) => [
+ q(4687) => [
q(Mazanderani),
],
- q(4660) => [
+ q(4688) => [
q(Matipuhy),
],
- q(4661) => [
+ q(4689) => [
q(Movima),
],
- q(4662) => [
+ q(4690) => [
q(Mori Atas),
],
- q(4663) => [
+ q(4691) => [
q(Marubo),
],
- q(4664) => [
+ q(4692) => [
q(Macanese),
],
- q(4665) => [
+ q(4693) => [
q(Mintil),
],
- q(4666) => [
+ q(4694) => [
q(Inapang),
],
- q(4667) => [
+ q(4695) => [
q(Manza),
],
- q(4668) => [
+ q(4696) => [
q(Deg),
],
- q(4669) => [
+ q(4697) => [
q(Mawayana),
],
- q(4670) => [
+ q(4698) => [
q(Mozambican Sign Language),
],
- q(4671) => [
+ q(4699) => [
q(Maiadomu),
],
- q(4672) => [
+ q(4700) => [
q(Namla),
],
- q(4673) => [
+ q(4701) => [
q(Southern Nambikuara),
],
- q(4674) => [
+ q(4702) => [
q(Narak),
],
- q(4675) => [
+ q(4703) => [
q(Nijadali),
],
- q(4676) => [
+ q(4704) => [
q(Naka'ela),
],
- q(4677) => [
+ q(4705) => [
q(Nabak),
],
- q(4678) => [
+ q(4706) => [
q(Naga Pidgin),
],
- q(4679) => [
+ q(4707) => [
q(Nalu),
],
- q(4680) => [
+ q(4708) => [
q(Nakanai),
],
- q(4681) => [
+ q(4709) => [
q(Nalik),
],
- q(4682) => [
- q(Nangikurrunggurr),
+ q(4710) => [
+ q(Ngan'gityemerri),
],
- q(4683) => [
+ q(4711) => [
q(Min Nan Chinese),
],
- q(4684) => [
+ q(4712) => [
q(Naaba),
],
- q(4685) => [
+ q(4713) => [
q(Nama (Namibia)),
],
- q(4686) => [
+ q(4714) => [
q(Iguta),
],
- q(4687) => [
+ q(4715) => [
q(Naasioi),
],
- q(4688) => [
+ q(4716) => [
q(Hungworo),
],
- q(4689) => [
+ q(4717) => [
q(Nawuri),
],
- q(4690) => [
+ q(4718) => [
q(Nakwi),
],
- q(4691) => [
+ q(4719) => [
q(Narrinyeri),
],
- q(4692) => [
+ q(4720) => [
q(Coatepec Nahuatl),
],
- q(4693) => [
+ q(4721) => [
q(Nyemba),
],
- q(4694) => [
+ q(4722) => [
q(Ndoe),
],
- q(4695) => [
+ q(4723) => [
q(Chang Naga),
],
- q(4696) => [
+ q(4724) => [
q(Ngbinda),
],
- q(4697) => [
+ q(4725) => [
q(Konyak Naga),
],
- q(4698) => [
+ q(4726) => [
q(Nagarchal),
],
- q(4699) => [
+ q(4727) => [
q(Ngamo),
],
- q(4700) => [
+ q(4728) => [
q(Mao Naga),
],
- q(4701) => [
+ q(4729) => [
q(Ngarinman),
],
- q(4702) => [
+ q(4730) => [
q(Nake),
],
- q(4703) => [
+ q(4731) => [
q(Ngbaka Ma'bo),
],
- q(4704) => [
+ q(4732) => [
q(Kuri),
],
- q(4705) => [
+ q(4733) => [
q(Nkukoli),
],
- q(4706) => [
+ q(4734) => [
q(Nnam),
],
- q(4707) => [
+ q(4735) => [
q(Nggem),
],
- q(4708) => [
+ q(4736) => [
q(Numana-Nunku-Gbantu-Numbu),
],
- q(4709) => [
+ q(4737) => [
q(Namibian Sign Language),
],
- q(4710) => [
+ q(4738) => [
q(Na),
],
- q(4711) => [
+ q(4739) => [
q(Rongmei Naga),
],
- q(4712) => [
+ q(4740) => [
q(Ngamambo),
],
- q(4713) => [
+ q(4741) => [
q(Southern Ngbandi),
],
- q(4714) => [
+ q(4742) => [
q(Ngura),
],
- q(4715) => [
+ q(4743) => [
q(Ningera),
],
- q(4716) => [
+ q(4744) => [
q(Iyo),
],
- q(4717) => [
+ q(4745) => [
q(Central Nicobarese),
],
- q(4718) => [
+ q(4746) => [
q(Ponam),
],
- q(4719) => [
+ q(4747) => [
q(Nachering),
],
- q(4720) => [
+ q(4748) => [
q(Yale),
],
- q(4721) => [
+ q(4749) => [
q(Notsi),
],
- q(4722) => [
+ q(4750) => [
q(Nisga'a),
],
- q(4723) => [
+ q(4751) => [
q(Central Huasteca Nahuatl),
],
- q(4724) => [
+ q(4752) => [
q(Classical Nahuatl),
],
- q(4725) => [
+ q(4753) => [
q(Northern Puebla Nahuatl),
],
- q(4726) => [
+ q(4754) => [
q(Nakara),
],
- q(4727) => [
+ q(4755) => [
q(Michoacan Nahuatl),
],
- q(4728) => [
+ q(4756) => [
q(Nambo),
],
- q(4729) => [
+ q(4757) => [
q(Nauna),
],
- q(4730) => [
+ q(4758) => [
q(Sibe),
],
- q(4731) => [
+ q(4759) => [
q(Ndaktup),
],
- q(4732) => [
+ q(4760) => [
q(Ncane),
],
- q(4733) => [
+ q(4761) => [
q(Nicaraguan Sign Language),
],
- q(4734) => [
+ q(4762) => [
q(Chothe Naga),
],
- q(4735) => [
+ q(4763) => [
q(Chumburung),
],
- q(4736) => [
+ q(4764) => [
q(Central Puebla Nahuatl),
],
- q(4737) => [
+ q(4765) => [
q(Natchez),
],
- q(4738) => [
+ q(4766) => [
q(Ndasa),
],
- q(4739) => [
+ q(4767) => [
q(Kenswei Nsei),
],
- q(4740) => [
+ q(4768) => [
q(Ndau),
],
- q(4741) => [
+ q(4769) => [
q(Nde-Nsele-Nta),
],
- q(4742) => [
+ q(4770) => [
q(Nadruvian),
],
- q(4743) => [
+ q(4771) => [
q(Ndengereko),
],
- q(4744) => [
+ q(4772) => [
q(Ndali),
],
- q(4745) => [
+ q(4773) => [
q(Samba Leko),
],
- q(4746) => [
+ q(4774) => [
q(Ndamba),
],
- q(4747) => [
+ q(4775) => [
q(Ndaka),
],
- q(4748) => [
+ q(4776) => [
q(Ndolo),
],
- q(4749) => [
+ q(4777) => [
q(Ndam),
],
- q(4750) => [
+ q(4778) => [
q(Ngundi),
],
- q(4751) => [
+ q(4779) => [
q(Ndo),
],
- q(4752) => [
+ q(4780) => [
q(Ndombe),
],
- q(4753) => [
+ q(4781) => [
q(Ndoola),
],
- q(4754) => [
+ q(4782) => [
q(Ndunga),
],
- q(4755) => [
+ q(4783) => [
q(Dugun),
],
- q(4756) => [
+ q(4784) => [
q(Ndut),
],
- q(4757) => [
+ q(4785) => [
q(Ndobo),
],
- q(4758) => [
+ q(4786) => [
q(Nduga),
],
- q(4759) => [
+ q(4787) => [
q(Lutos),
],
- q(4760) => [
+ q(4788) => [
q(Ndogo),
],
- q(4761) => [
+ q(4789) => [
q(Eastern Ngad'a),
],
- q(4762) => [
+ q(4790) => [
q(Toura (Cote d'Ivoire)),
],
- q(4763) => [
+ q(4791) => [
q(Nedebang),
],
- q(4764) => [
+ q(4792) => [
q(Nde-Gbite),
],
- q(4765) => [
+ q(4793) => [
q(Nelemwa-Nixumwak),
],
- q(4766) => [
+ q(4794) => [
q(Nefamese),
],
- q(4767) => [
+ q(4795) => [
q(Negidal),
],
- q(4768) => [
+ q(4796) => [
q(Nyenkha),
],
- q(4769) => [
+ q(4797) => [
q(Neo-Hittite),
],
- q(4770) => [
+ q(4798) => [
q(Neko),
],
- q(4771) => [
+ q(4799) => [
q(Neku),
],
- q(4772) => [
+ q(4800) => [
q(Nemi),
],
- q(4773) => [
+ q(4801) => [
q(Nengone),
],
- q(4774) => [
+ q(4802) => [
q(Na-Meo),
],
- q(4775) => [
+ q(4803) => [
q(North Central Mixe),
],
- q(4776) => [
+ q(4804) => [
q(Yahadian),
],
- q(4777) => [
+ q(4805) => [
q(Bhoti Kinnauri),
],
- q(4778) => [
+ q(4806) => [
q(Nete),
],
- q(4779) => [
+ q(4807) => [
+ q(Neo),
+ ],
+ q(4808) => [
q(Nyaheun),
],
- q(4780) => [
+ q(4809) => [
q(Neme),
],
- q(4781) => [
+ q(4810) => [
q(Neyo),
],
- q(4782) => [
+ q(4811) => [
q(Nez Perce),
],
- q(4783) => [
+ q(4812) => [
q(Dhao),
],
- q(4784) => [
+ q(4813) => [
q(Ahwai),
],
- q(4785) => [
+ q(4814) => [
q(Ayiwo),
q(Aiwoo),
],
- q(4786) => [
+ q(4815) => [
q(Nafaanra),
],
- q(4787) => [
+ q(4816) => [
q(Mfumte),
],
- q(4788) => [
+ q(4817) => [
q(Ngbaka),
],
- q(4789) => [
+ q(4818) => [
q(Northern Ngbandi),
],
- q(4790) => [
+ q(4819) => [
q(Ngombe (Democratic Republic of Congo)),
],
- q(4791) => [
+ q(4820) => [
q(Ngando (Central African Republic)),
],
- q(4792) => [
+ q(4821) => [
q(Ngemba),
],
- q(4793) => [
+ q(4822) => [
q(Ngbaka Manza),
],
- q(4794) => [
+ q(4823) => [
q(N/u),
],
- q(4795) => [
+ q(4824) => [
q(Ngizim),
],
- q(4796) => [
+ q(4825) => [
q(Ngie),
],
- q(4797) => [
+ q(4826) => [
q(Ngalkbun),
],
- q(4798) => [
+ q(4827) => [
q(Lomwe),
],
- q(4799) => [
+ q(4828) => [
q(Ngatik Men's Creole),
],
- q(4800) => [
+ q(4829) => [
q(Ngwo),
],
- q(4801) => [
+ q(4830) => [
q(Ngoni),
],
- q(4802) => [
+ q(4831) => [
q(Ngulu),
],
- q(4803) => [
+ q(4832) => [
q(Ngurimi),
q(Ngoreme),
],
- q(4804) => [
- q(Nanggu),
- q(Nagu),
+ q(4833) => [
+ q(Engdewu),
],
- q(4805) => [
+ q(4834) => [
q(Gvoko),
],
- q(4806) => [
+ q(4835) => [
q(Ngeq),
],
- q(4807) => [
+ q(4836) => [
q(Guerrero Nahuatl),
],
- q(4808) => [
+ q(4837) => [
q(Nagumi),
],
- q(4809) => [
+ q(4838) => [
q(Ngwaba),
],
- q(4810) => [
+ q(4839) => [
q(Nggwahyi),
],
- q(4811) => [
+ q(4840) => [
q(Tibea),
],
- q(4812) => [
+ q(4841) => [
q(Ngungwel),
],
- q(4813) => [
+ q(4842) => [
q(Nhanda),
],
- q(4814) => [
+ q(4843) => [
q(Beng),
],
- q(4815) => [
+ q(4844) => [
q(Tabasco Nahuatl),
],
- q(4816) => [
+ q(4845) => [
q(Chiripa),
q(Ava Guarani),
],
- q(4817) => [
+ q(4846) => [
q(Eastern Huasteca Nahuatl),
],
- q(4818) => [
+ q(4847) => [
q(Nhuwala),
],
- q(4819) => [
+ q(4848) => [
q(Tetelcingo Nahuatl),
],
- q(4820) => [
+ q(4849) => [
q(Nahari),
],
- q(4821) => [
+ q(4850) => [
q(Zacatlan-Ahuacatlan-Tepetzintla Nahuatl),
],
- q(4822) => [
+ q(4851) => [
q(Isthmus-Cosoleacaque Nahuatl),
],
- q(4823) => [
+ q(4852) => [
q(Morelos Nahuatl),
],
- q(4824) => [
+ q(4853) => [
q(Central Nahuatl),
],
- q(4825) => [
+ q(4854) => [
q(Takuu),
],
- q(4826) => [
+ q(4855) => [
q(Isthmus-Pajapan Nahuatl),
],
- q(4827) => [
+ q(4856) => [
q(Huaxcaleca Nahuatl),
],
- q(4828) => [
+ q(4857) => [
q(Naro),
],
- q(4829) => [
+ q(4858) => [
q(Ometepec Nahuatl),
],
- q(4830) => [
+ q(4859) => [
q(Noone),
],
- q(4831) => [
+ q(4860) => [
q(Temascaltepec Nahuatl),
],
- q(4832) => [
+ q(4861) => [
q(Western Huasteca Nahuatl),
],
- q(4833) => [
+ q(4862) => [
q(Isthmus-Mecayapan Nahuatl),
],
- q(4834) => [
+ q(4863) => [
q(Northern Oaxaca Nahuatl),
],
- q(4835) => [
+ q(4864) => [
q(Santa Maria La Alta Nahuatl),
],
- q(4836) => [
+ q(4865) => [
q(Nakame),
],
- q(4837) => [
+ q(4866) => [
q(Ngandi),
],
- q(4838) => [
+ q(4867) => [
q(Niellim),
],
- q(4839) => [
+ q(4868) => [
q(Nek),
],
- q(4840) => [
+ q(4869) => [
q(Ngalakan),
],
- q(4841) => [
+ q(4870) => [
q(Nyiha (Tanzania)),
],
- q(4842) => [
+ q(4871) => [
q(Nii),
],
- q(4843) => [
+ q(4872) => [
q(Ngaju),
],
- q(4844) => [
+ q(4873) => [
q(Southern Nicobarese),
],
- q(4845) => [
+ q(4874) => [
q(Nila),
],
- q(4846) => [
+ q(4875) => [
q(Nilamba),
],
- q(4847) => [
+ q(4876) => [
q(Ninzo),
],
- q(4848) => [
+ q(4877) => [
q(Nganasan),
],
- q(4849) => [
+ q(4878) => [
q(Nandi),
],
- q(4850) => [
+ q(4879) => [
q(Nimboran),
],
- q(4851) => [
+ q(4880) => [
q(Nimi),
],
- q(4852) => [
+ q(4881) => [
q(Southeastern Kolami),
],
- q(4853) => [
+ q(4882) => [
q(Gilyak),
],
- q(4854) => [
+ q(4883) => [
q(Nimo),
],
- q(4855) => [
+ q(4884) => [
q(Hema),
],
- q(4856) => [
+ q(4885) => [
q(Ngiti),
],
- q(4857) => [
+ q(4886) => [
q(Ningil),
],
- q(4858) => [
+ q(4887) => [
q(Nzanyi),
],
- q(4859) => [
+ q(4888) => [
q(Nocte Naga),
],
- q(4860) => [
+ q(4889) => [
q(Ndonde Hamba),
],
- q(4861) => [
+ q(4890) => [
q(Lotha Naga),
],
- q(4862) => [
+ q(4891) => [
q(Gudanji),
],
- q(4863) => [
+ q(4892) => [
q(Njen),
],
- q(4864) => [
+ q(4893) => [
q(Njalgulgule),
],
- q(4865) => [
+ q(4894) => [
q(Angami Naga),
],
- q(4866) => [
+ q(4895) => [
q(Liangmai Naga),
],
- q(4867) => [
+ q(4896) => [
q(Ao Naga),
],
- q(4868) => [
+ q(4897) => [
q(Njerep),
],
- q(4869) => [
+ q(4898) => [
q(Nisa),
],
- q(4870) => [
+ q(4899) => [
q(Ndyuka-Trio Pidgin),
],
- q(4871) => [
+ q(4900) => [
q(Ngadjunmaya),
],
- q(4872) => [
+ q(4901) => [
q(Kunyi),
],
- q(4873) => [
+ q(4902) => [
q(Njyem),
],
- q(4874) => [
+ q(4903) => [
+ q(Nyishi),
+ ],
+ q(4904) => [
q(Nkoya),
],
- q(4875) => [
+ q(4905) => [
q(Khoibu Naga),
],
- q(4876) => [
+ q(4906) => [
q(Nkongho),
],
- q(4877) => [
+ q(4907) => [
q(Koireng),
],
- q(4878) => [
+ q(4908) => [
q(Duke),
],
- q(4879) => [
+ q(4909) => [
q(Inpui Naga),
],
- q(4880) => [
+ q(4910) => [
q(Nekgini),
],
- q(4881) => [
+ q(4911) => [
q(Khezha Naga),
],
- q(4882) => [
+ q(4912) => [
q(Thangal Naga),
],
- q(4883) => [
+ q(4913) => [
q(Nakai),
],
- q(4884) => [
+ q(4914) => [
q(Nokuku),
],
- q(4885) => [
+ q(4915) => [
q(Namat),
],
- q(4886) => [
+ q(4916) => [
q(Nkangala),
],
- q(4887) => [
+ q(4917) => [
q(Nkonya),
],
- q(4888) => [
+ q(4918) => [
q(Niuatoputapu),
],
- q(4889) => [
+ q(4919) => [
q(Nkami),
],
- q(4890) => [
+ q(4920) => [
q(Nukuoro),
],
- q(4891) => [
+ q(4921) => [
q(North Asmat),
],
- q(4892) => [
+ q(4922) => [
q(Nyika (Tanzania)),
],
- q(4893) => [
+ q(4923) => [
q(Bouna Kulango),
],
- q(4894) => [
+ q(4924) => [
q(Nyika (Malawi and Zambia)),
],
- q(4895) => [
+ q(4925) => [
q(Nkutu),
],
- q(4896) => [
+ q(4926) => [
q(Nkoroo),
],
- q(4897) => [
+ q(4927) => [
q(Nkari),
],
- q(4898) => [
+ q(4928) => [
q(Ngombale),
],
- q(4899) => [
+ q(4929) => [
q(Nalca),
],
- q(4900) => [
+ q(4930) => [
q(East Nyala),
],
- q(4901) => [
+ q(4931) => [
q(Gela),
],
- q(4902) => [
+ q(4932) => [
q(Grangali),
],
- q(4903) => [
+ q(4933) => [
q(Nyali),
],
- q(4904) => [
+ q(4934) => [
q(Ninia Yali),
],
- q(4905) => [
+ q(4935) => [
q(Nihali),
],
- q(4906) => [
- q(Durango Nahuatl),
- ],
- q(4907) => [
+ q(4936) => [
q(Ngul),
],
- q(4908) => [
+ q(4937) => [
q(Ngarla),
],
- q(4909) => [
+ q(4938) => [
q(Nchumbulu),
],
- q(4910) => [
+ q(4939) => [
q(Orizaba Nahuatl),
],
- q(4911) => [
+ q(4940) => [
q(Nahali),
],
- q(4912) => [
+ q(4941) => [
q(Nyamal),
],
- q(4913) => [
+ q(4942) => [
q(Nalogo),
],
- q(4914) => [
+ q(4943) => [
q(Maram Naga),
],
- q(4915) => [
+ q(4944) => [
q(Big Nambas),
q(V'enen Taut),
],
- q(4916) => [
+ q(4945) => [
q(Ngam),
],
- q(4917) => [
+ q(4946) => [
q(Ndumu),
],
- q(4918) => [
+ q(4947) => [
q(Mzieme Naga),
],
- q(4919) => [
- q(Tangkhul Naga),
+ q(4948) => [
+ q(Tangkhul Naga (India)),
],
- q(4920) => [
+ q(4949) => [
q(Kwasio),
],
- q(4921) => [
+ q(4950) => [
q(Monsang Naga),
],
- q(4922) => [
+ q(4951) => [
q(Nyam),
],
- q(4923) => [
+ q(4952) => [
q(Ngombe (Central African Republic)),
],
- q(4924) => [
+ q(4953) => [
q(Namakura),
],
- q(4925) => [
+ q(4954) => [
q(Ndemli),
],
- q(4926) => [
+ q(4955) => [
q(Manangba),
],
- q(4927) => [
+ q(4956) => [
q(!Xoo),
],
- q(4928) => [
+ q(4957) => [
q(Moyon Naga),
],
- q(4929) => [
+ q(4958) => [
q(Nimanbur),
],
- q(4930) => [
+ q(4959) => [
q(Nambya),
],
- q(4931) => [
+ q(4960) => [
q(Nimbari),
],
- q(4932) => [
+ q(4961) => [
q(Letemboi),
],
- q(4933) => [
+ q(4962) => [
q(Namonuito),
],
- q(4934) => [
+ q(4963) => [
q(Northeast Maidu),
],
- q(4935) => [
+ q(4964) => [
q(Ngamini),
],
- q(4936) => [
+ q(4965) => [
q(Nimoa),
],
- q(4937) => [
+ q(4966) => [
q(Nama (Papua New Guinea)),
],
- q(4938) => [
+ q(4967) => [
q(Namuyi),
],
- q(4939) => [
+ q(4968) => [
q(Nawdm),
],
- q(4940) => [
+ q(4969) => [
q(Nyangumarta),
],
- q(4941) => [
+ q(4970) => [
q(Nande),
],
- q(4942) => [
+ q(4971) => [
q(Nancere),
],
- q(4943) => [
+ q(4972) => [
q(West Ambae),
],
- q(4944) => [
+ q(4973) => [
q(Ngandyera),
],
- q(4945) => [
+ q(4974) => [
q(Ngaing),
],
- q(4946) => [
+ q(4975) => [
q(Maring Naga),
],
- q(4947) => [
+ q(4976) => [
q(Ngiemboon),
],
- q(4948) => [
+ q(4977) => [
q(North Nuaulu),
],
- q(4949) => [
+ q(4978) => [
q(Nyangatom),
],
- q(4950) => [
+ q(4979) => [
q(Nankina),
],
- q(4951) => [
+ q(4980) => [
q(Northern Rengma Naga),
],
- q(4952) => [
+ q(4981) => [
q(Namia),
],
- q(4953) => [
+ q(4982) => [
q(Ngete),
],
- q(4954) => [
+ q(4983) => [
q(Wancho Naga),
],
- q(4955) => [
+ q(4984) => [
q(Ngindo),
],
- q(4956) => [
+ q(4985) => [
q(Narungga),
],
- q(4957) => [
+ q(4986) => [
q(Ningye),
],
- q(4958) => [
+ q(4987) => [
q(Nanticoke),
],
- q(4959) => [
+ q(4988) => [
q(Dwang),
],
- q(4960) => [
+ q(4989) => [
q(Nugunu (Australia)),
],
- q(4961) => [
+ q(4990) => [
q(Southern Nuni),
],
- q(4962) => [
+ q(4991) => [
q(Ngong),
],
- q(4963) => [
+ q(4992) => [
q(Nyangga),
],
- q(4964) => [
+ q(4993) => [
q(Nda'nda'),
],
- q(4965) => [
+ q(4994) => [
q(Woun Meu),
],
- q(4966) => [
+ q(4995) => [
q(Nuk),
],
- q(4967) => [
+ q(4996) => [
q(Northern Thai),
],
- q(4968) => [
+ q(4997) => [
q(Nimadi),
],
- q(4969) => [
+ q(4998) => [
q(Nomane),
],
- q(4970) => [
+ q(4999) => [
q(Nomu),
],
- q(4971) => [
+ q(5000) => [
q(Noiri),
],
- q(4972) => [
+ q(5001) => [
q(Nonuya),
],
- q(4973) => [
+ q(5002) => [
q(Nooksack),
],
- q(4974) => [
+ q(5003) => [
q(Nocaman),
],
- q(4975) => [
+ q(5004) => [
q(Numanggang),
],
- q(4976) => [
+ q(5005) => [
q(Ngongo),
],
- q(4977) => [
+ q(5006) => [
q(Eastern Nisu),
],
- q(4978) => [
+ q(5007) => [
q(Nomatsiguenga),
],
- q(4979) => [
+ q(5008) => [
q(Ewage-Notu),
],
- q(4980) => [
+ q(5009) => [
q(Novial),
],
- q(4981) => [
+ q(5010) => [
q(Nyambo),
],
- q(4982) => [
+ q(5011) => [
q(Noy),
],
- q(4983) => [
+ q(5012) => [
q(Nayi),
],
- q(4984) => [
+ q(5013) => [
q(Nar Phu),
],
- q(4985) => [
+ q(5014) => [
q(Nupbikha),
],
- q(4986) => [
+ q(5015) => [
+ q(Ponyo-Gongwang Naga),
+ ],
+ q(5016) => [
q(Phom Naga),
],
- q(4987) => [
+ q(5017) => [
+ q(Nepali (individual language)),
+ ],
+ q(5018) => [
q(Southeastern Puebla Nahuatl),
],
- q(4988) => [
+ q(5019) => [
q(Mondropolon),
],
- q(4989) => [
+ q(5020) => [
q(Pochuri Naga),
],
- q(4990) => [
+ q(5021) => [
q(Nipsan),
],
- q(4991) => [
+ q(5022) => [
q(Puimei Naga),
],
- q(4992) => [
+ q(5023) => [
q(Napu),
],
- q(4993) => [
+ q(5024) => [
q(Southern Nago),
],
- q(4994) => [
+ q(5025) => [
q(Kura Ede Nago),
],
- q(4995) => [
+ q(5026) => [
q(Ndom),
],
- q(4996) => [
+ q(5027) => [
q(Nen),
],
- q(4997) => [
+ q(5028) => [
+ q(Akyaung Ari Naga),
+ ],
+ q(5029) => [
q(Ngom),
],
- q(4998) => [
+ q(5030) => [
q(Nara),
],
- q(4999) => [
+ q(5031) => [
q(Noric),
],
- q(5000) => [
+ q(5032) => [
q(Southern Rengma Naga),
],
- q(5001) => [
+ q(5033) => [
q(Narango),
],
- q(5002) => [
+ q(5034) => [
q(Chokri Naga),
],
- q(5003) => [
+ q(5035) => [
q(Ngarluma),
],
- q(5004) => [
+ q(5036) => [
q(Narom),
],
- q(5005) => [
+ q(5037) => [
q(Norn),
],
- q(5006) => [
+ q(5038) => [
q(North Picene),
],
- q(5007) => [
+ q(5039) => [
q(Norra),
],
- q(5008) => [
+ q(5040) => [
q(Northern Kalapuya),
],
- q(5009) => [
+ q(5041) => [
q(Narua),
],
- q(5010) => [
+ q(5042) => [
q(Ngurmbur),
],
- q(5011) => [
+ q(5043) => [
q(Lala),
],
- q(5012) => [
+ q(5044) => [
q(Sangtam Naga),
],
- q(5013) => [
+ q(5045) => [
q(Nshi),
],
- q(5014) => [
+ q(5046) => [
q(Southern Nisu),
],
- q(5015) => [
+ q(5047) => [
q(Nsenga),
],
- q(5016) => [
+ q(5048) => [
+ q(Northwestern Nisu),
+ ],
+ q(5049) => [
q(Ngasa),
],
- q(5017) => [
+ q(5050) => [
q(Ngoshie),
],
- q(5018) => [
+ q(5051) => [
q(Nigerian Sign Language),
],
- q(5019) => [
+ q(5052) => [
q(Naskapi),
],
- q(5020) => [
+ q(5053) => [
q(Norwegian Sign Language),
],
- q(5021) => [
+ q(5054) => [
q(Sumi Naga),
],
- q(5022) => [
+ q(5055) => [
q(Nehan),
],
- q(5023) => [
+ q(5056) => [
q(Nepalese Sign Language),
],
- q(5024) => [
+ q(5057) => [
q(Northern Sierra Miwok),
],
- q(5025) => [
+ q(5058) => [
q(Maritime Sign Language),
],
- q(5026) => [
+ q(5059) => [
q(Nali),
],
- q(5027) => [
+ q(5060) => [
q(Tase Naga),
],
- q(5028) => [
+ q(5061) => [
q(Sierra Negra Nahuatl),
],
- q(5029) => [
+ q(5062) => [
q(Southwestern Nisu),
],
- q(5030) => [
+ q(5063) => [
q(Navut),
],
- q(5031) => [
+ q(5064) => [
q(Nsongo),
],
- q(5032) => [
+ q(5065) => [
q(Nasal),
],
- q(5033) => [
+ q(5066) => [
q(Nisenan),
],
- q(5034) => [
+ q(5067) => [
q(Nathembo),
],
- q(5035) => [
+ q(5068) => [
q(Natioro),
],
- q(5036) => [
+ q(5069) => [
q(Ngaanyatjarra),
],
- q(5037) => [
+ q(5070) => [
q(Ikoma-Nata-Isenye),
],
- q(5038) => [
+ q(5071) => [
q(Nateni),
],
- q(5039) => [
+ q(5072) => [
q(Ntomba),
],
- q(5040) => [
+ q(5073) => [
q(Northern Tepehuan),
],
- q(5041) => [
+ q(5074) => [
q(Delo),
],
- q(5042) => [
+ q(5075) => [
q(Natagaimas),
],
- q(5043) => [
+ q(5076) => [
q(Natugu),
],
- q(5044) => [
+ q(5077) => [
q(Nottoway),
],
- q(5045) => [
+ q(5078) => [
+ q(Tangkhul Naga (Myanmar)),
+ ],
+ q(5079) => [
q(Mantsi),
],
- q(5046) => [
+ q(5080) => [
q(Natanzi),
],
- q(5047) => [
+ q(5081) => [
q(Yuaga),
],
- q(5048) => [
+ q(5082) => [
q(Nukuini),
],
- q(5049) => [
+ q(5083) => [
q(Ngala),
],
- q(5050) => [
+ q(5084) => [
q(Ngundu),
],
- q(5051) => [
+ q(5085) => [
q(Nusu),
],
- q(5052) => [
+ q(5086) => [
q(Nungali),
],
- q(5053) => [
+ q(5087) => [
q(Ndunda),
],
- q(5054) => [
+ q(5088) => [
q(Ngumbi),
],
- q(5055) => [
+ q(5089) => [
q(Nyole),
],
- q(5056) => [
+ q(5090) => [
q(Nuu-chah-nulth),
q(Nuuchahnulth),
],
- q(5057) => [
+ q(5091) => [
q(Nusa Laut),
],
- q(5058) => [
+ q(5092) => [
q(Niuafo'ou),
],
- q(5059) => [
+ q(5093) => [
q(Anong),
],
- q(5060) => [
+ q(5094) => [
q(Nguon),
],
- q(5061) => [
+ q(5095) => [
q(Nupe-Nupe-Tako),
],
- q(5062) => [
+ q(5096) => [
q(Nukumanu),
],
- q(5063) => [
+ q(5097) => [
q(Nukuria),
],
- q(5064) => [
+ q(5098) => [
q(Nuer),
],
- q(5065) => [
+ q(5099) => [
q(Nung (Viet Nam)),
],
- q(5066) => [
+ q(5100) => [
q(Ngbundu),
],
- q(5067) => [
+ q(5101) => [
q(Northern Nuni),
],
- q(5068) => [
+ q(5102) => [
q(Nguluwan),
],
- q(5069) => [
+ q(5103) => [
q(Mehek),
],
- q(5070) => [
+ q(5104) => [
q(Nunggubuyu),
],
- q(5071) => [
+ q(5105) => [
q(Tlamacazapa Nahuatl),
],
- q(5072) => [
+ q(5106) => [
q(Nasarian),
],
- q(5073) => [
+ q(5107) => [
q(Namiae),
],
- q(5074) => [
+ q(5108) => [
+ q(Nyokon),
+ ],
+ q(5109) => [
q(Nawathinehena),
],
- q(5075) => [
+ q(5110) => [
q(Nyabwa),
],
- q(5076) => [
+ q(5111) => [
q(Ngwe),
],
- q(5077) => [
+ q(5112) => [
+ q(Ngayawung),
+ ],
+ q(5113) => [
q(Southwest Tanna),
],
- q(5078) => [
+ q(5114) => [
q(Nyamusa-Molo),
],
- q(5079) => [
+ q(5115) => [
+ q(Nauo),
+ ],
+ q(5116) => [
q(Nawaru),
],
- q(5080) => [
+ q(5117) => [
q(Middle Newar),
],
- q(5081) => [
+ q(5118) => [
q(Nottoway-Meherrin),
],
- q(5082) => [
+ q(5119) => [
q(Nauete),
],
- q(5083) => [
+ q(5120) => [
q(Ngando (Democratic Republic of Congo)),
],
- q(5084) => [
+ q(5121) => [
q(Nage),
],
- q(5085) => [
+ q(5122) => [
q(Ngad'a),
],
- q(5086) => [
+ q(5123) => [
q(Nindi),
],
- q(5087) => [
+ q(5124) => [
+ q(Koki Naga),
+ ],
+ q(5125) => [
q(South Nuaulu),
],
- q(5088) => [
+ q(5126) => [
q(Numidian),
],
- q(5089) => [
+ q(5127) => [
q(Ngawun),
],
- q(5090) => [
+ q(5128) => [
q(Naxi),
],
- q(5091) => [
+ q(5129) => [
q(Ninggerum),
],
- q(5092) => [
+ q(5130) => [
q(Narau),
],
- q(5093) => [
+ q(5131) => [
q(Nafri),
],
- q(5094) => [
+ q(5132) => [
q(Nyangbo),
],
- q(5095) => [
+ q(5133) => [
q(Nyanga-li),
],
- q(5096) => [
+ q(5134) => [
q(Nyore),
q(Olunyole),
],
- q(5097) => [
+ q(5135) => [
q(Nyengo),
],
- q(5098) => [
+ q(5136) => [
q(Giryama),
q(Kigiryama),
],
- q(5099) => [
+ q(5137) => [
q(Nyindu),
],
- q(5100) => [
+ q(5138) => [
q(Nyigina),
],
- q(5101) => [
+ q(5139) => [
q(Ama (Sudan)),
],
- q(5102) => [
+ q(5140) => [
q(Nyanga),
],
- q(5103) => [
+ q(5141) => [
q(Nyaneka),
],
- q(5104) => [
+ q(5142) => [
q(Nyeu),
],
- q(5105) => [
+ q(5143) => [
q(Nyang'i),
],
- q(5106) => [
+ q(5144) => [
q(Nayini),
],
- q(5107) => [
+ q(5145) => [
q(Nyiha (Malawi)),
],
- q(5108) => [
+ q(5146) => [
q(Nyunga),
],
- q(5109) => [
+ q(5147) => [
q(Nyawaygi),
],
- q(5110) => [
+ q(5148) => [
q(Nyungwe),
],
- q(5111) => [
+ q(5149) => [
q(Nyulnyul),
],
- q(5112) => [
+ q(5150) => [
q(Nyaw),
],
- q(5113) => [
+ q(5151) => [
q(Nganyaywana),
],
- q(5114) => [
+ q(5152) => [
q(Nyakyusa-Ngonde),
],
- q(5115) => [
+ q(5153) => [
q(Tigon Mbembe),
],
- q(5116) => [
+ q(5154) => [
q(Njebi),
],
- q(5117) => [
+ q(5155) => [
q(Nzakara),
],
- q(5118) => [
+ q(5156) => [
q(Zeme Naga),
],
- q(5119) => [
+ q(5157) => [
q(New Zealand Sign Language),
],
- q(5120) => [
+ q(5158) => [
q(Teke-Nzikou),
],
- q(5121) => [
+ q(5159) => [
q(Nzakambay),
],
- q(5122) => [
+ q(5160) => [
q(Nanga Dama Dogon),
],
- q(5123) => [
+ q(5161) => [
q(Orok),
],
- q(5124) => [
+ q(5162) => [
q(Oroch),
],
- q(5125) => [
+ q(5163) => [
q(Old Aramaic (up to 700 BCE)),
q(Ancient Aramaic (up to 700 BCE)),
],
- q(5126) => [
+ q(5164) => [
q(Old Avar),
],
- q(5127) => [
+ q(5165) => [
q(Obispeno),
],
- q(5128) => [
+ q(5166) => [
q(Southern Bontok),
],
- q(5129) => [
+ q(5167) => [
q(Oblo),
],
- q(5130) => [
+ q(5168) => [
q(Moabite),
],
- q(5131) => [
+ q(5169) => [
q(Obo Manobo),
],
- q(5132) => [
+ q(5170) => [
q(Old Burmese),
],
- q(5133) => [
+ q(5171) => [
q(Old Breton),
],
- q(5134) => [
+ q(5172) => [
q(Obulom),
],
- q(5135) => [
+ q(5173) => [
q(Ocaina),
],
- q(5136) => [
+ q(5174) => [
q(Old Chinese),
],
- q(5137) => [
+ q(5175) => [
q(Old Cornish),
],
- q(5138) => [
+ q(5176) => [
q(Atzingo Matlatzinca),
],
- q(5139) => [
+ q(5177) => [
q(Odut),
],
- q(5140) => [
+ q(5178) => [
q(Od),
],
- q(5141) => [
+ q(5179) => [
q(Old Dutch),
],
- q(5142) => [
+ q(5180) => [
q(Odual),
],
- q(5143) => [
+ q(5181) => [
q(Ofo),
],
- q(5144) => [
+ q(5182) => [
q(Old Frisian),
],
- q(5145) => [
+ q(5183) => [
q(Efutop),
],
- q(5146) => [
+ q(5184) => [
q(Ogbia),
],
- q(5147) => [
+ q(5185) => [
q(Ogbah),
],
- q(5148) => [
+ q(5186) => [
q(Old Georgian),
],
- q(5149) => [
+ q(5187) => [
q(Ogbogolo),
],
- q(5150) => [
+ q(5188) => [
q(Khana),
],
- q(5151) => [
+ q(5189) => [
q(Ogbronuagum),
],
- q(5152) => [
+ q(5190) => [
q(Old Hittite),
],
- q(5153) => [
+ q(5191) => [
q(Old Hungarian),
],
- q(5154) => [
+ q(5192) => [
q(Oirata),
],
- q(5155) => [
+ q(5193) => [
q(Inebu One),
],
- q(5156) => [
+ q(5194) => [
q(Northwestern Ojibwa),
],
- q(5157) => [
+ q(5195) => [
q(Central Ojibwa),
],
- q(5158) => [
+ q(5196) => [
q(Eastern Ojibwa),
],
- q(5159) => [
+ q(5197) => [
q(Old Japanese),
],
- q(5160) => [
+ q(5198) => [
q(Severn Ojibwa),
],
- q(5161) => [
+ q(5199) => [
q(Ontong Java),
],
- q(5162) => [
+ q(5200) => [
q(Western Ojibwa),
],
- q(5163) => [
+ q(5201) => [
q(Okanagan),
],
- q(5164) => [
+ q(5202) => [
q(Okobo),
],
- q(5165) => [
+ q(5203) => [
q(Okodia),
],
- q(5166) => [
+ q(5204) => [
q(Okpe (Southwestern Edo)),
],
- q(5167) => [
+ q(5205) => [
+ q(Koko Babangk),
+ ],
+ q(5206) => [
q(Koresh-e Rostam),
],
- q(5168) => [
+ q(5207) => [
q(Okiek),
],
- q(5169) => [
+ q(5208) => [
q(Oko-Juwoi),
],
- q(5170) => [
+ q(5209) => [
q(Kwamtim One),
],
- q(5171) => [
+ q(5210) => [
q(Old Kentish Sign Language),
],
- q(5172) => [
+ q(5211) => [
q(Middle Korean (10th-16th cent.)),
],
- q(5173) => [
+ q(5212) => [
q(Oki-No-Erabu),
],
- q(5174) => [
+ q(5213) => [
q(Old Korean (3rd-9th cent.)),
],
- q(5175) => [
+ q(5214) => [
q(Kirike),
],
- q(5176) => [
+ q(5215) => [
q(Oko-Eni-Osayen),
],
- q(5177) => [
+ q(5216) => [
q(Oku),
],
- q(5178) => [
+ q(5217) => [
q(Orokaiva),
],
- q(5179) => [
+ q(5218) => [
q(Okpe (Northwestern Edo)),
],
- q(5180) => [
+ q(5219) => [
q(Walungge),
],
- q(5181) => [
+ q(5220) => [
q(Mochi),
],
- q(5182) => [
+ q(5221) => [
q(Olekha),
],
- q(5183) => [
+ q(5222) => [
q(Oloma),
],
- q(5184) => [
+ q(5223) => [
q(Livvi),
],
- q(5185) => [
+ q(5224) => [
q(Olrat),
],
- q(5186) => [
+ q(5225) => [
q(Omaha-Ponca),
],
- q(5187) => [
+ q(5226) => [
q(East Ambae),
],
- q(5188) => [
+ q(5227) => [
q(Mochica),
],
- q(5189) => [
+ q(5228) => [
q(Omejes),
],
- q(5190) => [
+ q(5229) => [
q(Omagua),
],
- q(5191) => [
+ q(5230) => [
q(Omi),
],
- q(5192) => [
+ q(5231) => [
q(Omok),
],
- q(5193) => [
+ q(5232) => [
q(Ombo),
],
- q(5194) => [
+ q(5233) => [
q(Minoan),
],
- q(5195) => [
+ q(5234) => [
q(Utarmbung),
],
- q(5196) => [
+ q(5235) => [
q(Old Manipuri),
],
- q(5197) => [
+ q(5236) => [
q(Old Marathi),
],
- q(5198) => [
+ q(5237) => [
q(Omotik),
],
- q(5199) => [
+ q(5238) => [
q(Omurano),
],
- q(5200) => [
+ q(5239) => [
q(South Tairora),
],
- q(5201) => [
+ q(5240) => [
q(Old Mon),
],
- q(5202) => [
+ q(5241) => [
q(Ona),
],
- q(5203) => [
+ q(5242) => [
q(Lingao),
],
- q(5204) => [
+ q(5243) => [
q(Oneida),
],
- q(5205) => [
+ q(5244) => [
q(Olo),
],
- q(5206) => [
+ q(5245) => [
q(Onin),
],
- q(5207) => [
+ q(5246) => [
q(Onjob),
],
- q(5208) => [
+ q(5247) => [
q(Kabore One),
],
- q(5209) => [
+ q(5248) => [
q(Onobasulu),
],
- q(5210) => [
+ q(5249) => [
q(Onondaga),
],
- q(5211) => [
+ q(5250) => [
q(Sartang),
],
- q(5212) => [
+ q(5251) => [
q(Northern One),
],
- q(5213) => [
+ q(5252) => [
q(Ono),
],
- q(5214) => [
+ q(5253) => [
q(Ontenu),
],
- q(5215) => [
+ q(5254) => [
q(Unua),
],
- q(5216) => [
+ q(5255) => [
q(Old Nubian),
],
- q(5217) => [
+ q(5256) => [
q(Onin Based Pidgin),
],
- q(5218) => [
+ q(5257) => [
q(Tohono O'odham),
],
- q(5219) => [
+ q(5258) => [
q(Ong),
],
- q(5220) => [
+ q(5259) => [
q(Onge),
],
- q(5221) => [
+ q(5260) => [
q(Oorlams),
],
- q(5222) => [
+ q(5261) => [
q(Old Ossetic),
],
- q(5223) => [
+ q(5262) => [
q(Okpamheri),
],
- q(5224) => [
+ q(5263) => [
q(Kopkaka),
],
- q(5225) => [
+ q(5264) => [
q(Oksapmin),
],
- q(5226) => [
+ q(5265) => [
q(Opao),
],
- q(5227) => [
+ q(5266) => [
q(Opata),
],
- q(5228) => [
+ q(5267) => [
q(Ofaye),
],
- q(5229) => [
+ q(5268) => [
q(Oroha),
],
- q(5230) => [
+ q(5269) => [
q(Orma),
],
- q(5231) => [
+ q(5270) => [
q(Orejon),
],
- q(5232) => [
+ q(5271) => [
q(Oring),
],
- q(5233) => [
+ q(5272) => [
q(Oroqen),
],
- q(5234) => [
+ q(5273) => [
q(Orang Kanaq),
],
- q(5235) => [
+ q(5274) => [
q(Orokolo),
],
- q(5236) => [
+ q(5275) => [
q(Oruma),
],
- q(5237) => [
+ q(5276) => [
q(Orang Seletar),
],
- q(5238) => [
+ q(5277) => [
q(Adivasi Oriya),
],
- q(5239) => [
+ q(5278) => [
q(Ormuri),
],
- q(5240) => [
+ q(5279) => [
q(Old Russian),
],
- q(5241) => [
+ q(5280) => [
q(Oro Win),
],
- q(5242) => [
+ q(5281) => [
q(Oro),
],
- q(5243) => [
+ q(5282) => [
+ q(Oriya (individual language)),
+ ],
+ q(5283) => [
q(Ormu),
],
- q(5244) => [
+ q(5284) => [
q(Oscan),
],
- q(5245) => [
+ q(5285) => [
q(Osing),
],
- q(5246) => [
+ q(5286) => [
q(Ososo),
],
- q(5247) => [
+ q(5287) => [
q(Old Spanish),
],
- q(5248) => [
+ q(5288) => [
q(Osatu),
],
- q(5249) => [
+ q(5289) => [
q(Southern One),
],
- q(5250) => [
+ q(5290) => [
q(Old Saxon),
],
- q(5251) => [
+ q(5291) => [
q(Old Tibetan),
],
- q(5252) => [
+ q(5292) => [
q(Ot Danum),
],
- q(5253) => [
+ q(5293) => [
q(Mezquital Otomi),
],
- q(5254) => [
+ q(5294) => [
q(Oti),
],
- q(5255) => [
+ q(5295) => [
q(Old Turkish),
],
- q(5256) => [
+ q(5296) => [
q(Tilapa Otomi),
],
- q(5257) => [
+ q(5297) => [
q(Eastern Highland Otomi),
],
- q(5258) => [
+ q(5298) => [
q(Tenango Otomi),
],
- q(5259) => [
+ q(5299) => [
q(Queretaro Otomi),
],
- q(5260) => [
+ q(5300) => [
q(Otoro),
],
- q(5261) => [
+ q(5301) => [
q(Estado de Mexico Otomi),
],
- q(5262) => [
+ q(5302) => [
q(Temoaya Otomi),
],
- q(5263) => [
+ q(5303) => [
q(Otuke),
],
- q(5264) => [
+ q(5304) => [
q(Ottawa),
],
- q(5265) => [
+ q(5305) => [
q(Texcatepec Otomi),
],
- q(5266) => [
+ q(5306) => [
q(Old Tamil),
],
- q(5267) => [
+ q(5307) => [
q(Ixtenco Otomi),
],
- q(5268) => [
+ q(5308) => [
q(Tagargrent),
],
- q(5269) => [
+ q(5309) => [
q(Glio-Oubi),
],
- q(5270) => [
+ q(5310) => [
q(Oune),
],
- q(5271) => [
+ q(5311) => [
q(Old Uighur),
],
- q(5272) => [
+ q(5312) => [
q(Ouma),
],
- q(5273) => [
+ q(5313) => [
q(!O!ung),
],
- q(5274) => [
+ q(5314) => [
q(Owiniga),
],
- q(5275) => [
+ q(5315) => [
q(Old Welsh),
],
- q(5276) => [
+ q(5316) => [
q(Oy),
],
- q(5277) => [
+ q(5317) => [
q(Oyda),
],
- q(5278) => [
+ q(5318) => [
q(Wayampi),
],
- q(5279) => [
+ q(5319) => [
q(Oya'oya),
],
- q(5280) => [
+ q(5320) => [
q(Koonzime),
],
- q(5281) => [
+ q(5321) => [
q(Parecis),
],
- q(5282) => [
+ q(5322) => [
q(Pacoh),
],
- q(5283) => [
+ q(5323) => [
q(Paumari),
],
- q(5284) => [
+ q(5324) => [
q(Pagibete),
],
- q(5285) => [
+ q(5325) => [
q(Paranawat),
],
- q(5286) => [
+ q(5326) => [
q(Tenharim),
],
- q(5287) => [
+ q(5327) => [
q(Pe),
],
- q(5288) => [
+ q(5328) => [
q(Parakana),
],
- q(5289) => [
+ q(5329) => [
q(Northern Paiute),
],
- q(5290) => [
+ q(5330) => [
q(Parya),
],
- q(5291) => [
+ q(5331) => [
q(Panamint),
q(Timbisha),
],
- q(5292) => [
+ q(5332) => [
q(Papasena),
],
- q(5293) => [
+ q(5333) => [
q(Papitalai),
],
- q(5294) => [
+ q(5334) => [
q(Pakaasnovos),
],
- q(5295) => [
+ q(5335) => [
q(Pawnee),
],
- q(5296) => [
+ q(5336) => [
q(Pankarare),
],
- q(5297) => [
+ q(5337) => [
q(Pech),
],
- q(5298) => [
+ q(5338) => [
q(Pankararu),
],
- q(5299) => [
+ q(5339) => [
q(Paez),
],
- q(5300) => [
+ q(5340) => [
q(Patamona),
],
- q(5301) => [
+ q(5341) => [
q(Mezontla Popoloca),
],
- q(5302) => [
+ q(5342) => [
q(Coyotepec Popoloca),
],
- q(5303) => [
+ q(5343) => [
q(Paraujano),
],
- q(5304) => [
+ q(5344) => [
q(E'napa Woromaipu),
],
- q(5305) => [
+ q(5345) => [
q(Parkwa),
],
- q(5306) => [
+ q(5346) => [
q(Mak (Nigeria)),
],
- q(5307) => [
+ q(5347) => [
q(Kpasam),
],
- q(5308) => [
+ q(5348) => [
q(Papel),
],
- q(5309) => [
+ q(5349) => [
q(Badyara),
],
- q(5310) => [
+ q(5350) => [
q(Pangwa),
],
- q(5311) => [
+ q(5351) => [
q(Central Pame),
],
- q(5312) => [
+ q(5352) => [
q(Southern Pashto),
],
- q(5313) => [
+ q(5353) => [
q(Northern Pashto),
],
- q(5314) => [
+ q(5354) => [
q(Pnar),
],
- q(5315) => [
+ q(5355) => [
q(Pyu),
],
- q(5316) => [
- q(Palu),
- ],
- q(5317) => [
+ q(5356) => [
q(Santa Ines Ahuatempan Popoloca),
],
- q(5318) => [
+ q(5357) => [
q(Pear),
],
- q(5319) => [
+ q(5358) => [
q(Bouyei),
],
- q(5320) => [
+ q(5359) => [
q(Picard),
],
- q(5321) => [
+ q(5360) => [
q(Ruching Palaung),
],
- q(5322) => [
+ q(5361) => [
q(Paliyan),
],
- q(5323) => [
+ q(5362) => [
q(Paniya),
],
- q(5324) => [
+ q(5363) => [
q(Pardhan),
],
- q(5325) => [
+ q(5364) => [
q(Duruwa),
],
- q(5326) => [
+ q(5365) => [
q(Parenga),
],
- q(5327) => [
+ q(5366) => [
q(Paite Chin),
],
- q(5328) => [
+ q(5367) => [
q(Pardhi),
],
- q(5329) => [
+ q(5368) => [
q(Nigerian Pidgin),
],
- q(5330) => [
+ q(5369) => [
q(Piti),
],
- q(5331) => [
+ q(5370) => [
q(Pacahuara),
],
- q(5332) => [
+ q(5371) => [
q(Panang),
],
- q(5333) => [
+ q(5372) => [
q(Pyapun),
],
- q(5334) => [
+ q(5373) => [
q(Anam),
],
- q(5335) => [
+ q(5374) => [
q(Pennsylvania German),
],
- q(5336) => [
+ q(5375) => [
q(Pa Di),
],
- q(5337) => [
+ q(5376) => [
q(Podena),
q(Fedan),
],
- q(5338) => [
+ q(5377) => [
q(Padoe),
],
- q(5339) => [
+ q(5378) => [
q(Plautdietsch),
],
- q(5340) => [
+ q(5379) => [
q(Kayan),
],
- q(5341) => [
+ q(5380) => [
q(Peranakan Indonesian),
],
- q(5342) => [
+ q(5381) => [
q(Eastern Pomo),
],
- q(5343) => [
+ q(5382) => [
q(Mala (Papua New Guinea)),
],
- q(5344) => [
+ q(5383) => [
q(Taje),
],
- q(5345) => [
+ q(5384) => [
q(Northeastern Pomo),
],
- q(5346) => [
+ q(5385) => [
q(Pengo),
],
- q(5347) => [
+ q(5386) => [
q(Bonan),
],
- q(5348) => [
+ q(5387) => [
q(Chichimeca-Jonaz),
],
- q(5349) => [
+ q(5388) => [
q(Northern Pomo),
],
- q(5350) => [
+ q(5389) => [
q(Penchal),
],
- q(5351) => [
+ q(5390) => [
q(Pekal),
],
- q(5352) => [
+ q(5391) => [
q(Phende),
],
- q(5353) => [
+ q(5392) => [
q(Kunja),
],
- q(5354) => [
+ q(5393) => [
q(Southern Pomo),
],
- q(5355) => [
+ q(5394) => [
q(Iranian Persian),
],
- q(5356) => [
+ q(5395) => [
q(Pemono),
],
- q(5357) => [
+ q(5396) => [
q(Petats),
],
- q(5358) => [
+ q(5397) => [
q(Petjo),
],
- q(5359) => [
+ q(5398) => [
q(Eastern Penan),
],
- q(5360) => [
+ q(5399) => [
q(Paafang),
],
- q(5361) => [
+ q(5400) => [
q(Peere),
],
- q(5362) => [
+ q(5401) => [
q(Pfaelzisch),
],
- q(5363) => [
+ q(5402) => [
q(Sudanese Creole Arabic),
],
- q(5364) => [
+ q(5403) => [
q(Pangwali),
],
- q(5365) => [
+ q(5404) => [
q(Pagi),
],
- q(5366) => [
+ q(5405) => [
q(Rerep),
],
- q(5367) => [
+ q(5406) => [
q(Primitive Irish),
],
- q(5368) => [
+ q(5407) => [
q(Paelignian),
],
- q(5369) => [
+ q(5408) => [
q(Pangseng),
],
- q(5370) => [
+ q(5409) => [
q(Pagu),
],
- q(5371) => [
- q(Pongyong),
- ],
- q(5372) => [
+ q(5410) => [
q(Pa-Hng),
],
- q(5373) => [
+ q(5411) => [
q(Phudagi),
],
- q(5374) => [
+ q(5412) => [
q(Phuong),
],
- q(5375) => [
+ q(5413) => [
q(Phukha),
],
- q(5376) => [
+ q(5414) => [
q(Phake),
],
- q(5377) => [
+ q(5415) => [
q(Phalura),
q(Palula),
],
- q(5378) => [
+ q(5416) => [
q(Phimbi),
],
- q(5379) => [
+ q(5417) => [
q(Phunoi),
],
- q(5380) => [
+ q(5418) => [
q(Phana'),
],
- q(5381) => [
+ q(5419) => [
q(Pahari-Potwari),
],
- q(5382) => [
+ q(5420) => [
q(Phu Thai),
],
- q(5383) => [
+ q(5421) => [
q(Phuan),
],
- q(5384) => [
+ q(5422) => [
q(Pahlavani),
],
- q(5385) => [
+ q(5423) => [
q(Phangduwali),
],
- q(5386) => [
+ q(5424) => [
q(Pima Bajo),
],
- q(5387) => [
+ q(5425) => [
q(Yine),
],
- q(5388) => [
+ q(5426) => [
q(Pinji),
],
- q(5389) => [
+ q(5427) => [
q(Piaroa),
],
- q(5390) => [
+ q(5428) => [
q(Piro),
],
- q(5391) => [
+ q(5429) => [
q(Pingelapese),
],
- q(5392) => [
+ q(5430) => [
q(Pisabo),
],
- q(5393) => [
+ q(5431) => [
q(Pitcairn-Norfolk),
],
- q(5394) => [
+ q(5432) => [
q(Pini),
],
- q(5395) => [
+ q(5433) => [
q(Pijao),
],
- q(5396) => [
+ q(5434) => [
q(Yom),
],
- q(5397) => [
+ q(5435) => [
q(Powhatan),
],
- q(5398) => [
+ q(5436) => [
q(Piame),
],
- q(5399) => [
+ q(5437) => [
q(Piapoco),
],
- q(5400) => [
+ q(5438) => [
q(Pero),
],
- q(5401) => [
+ q(5439) => [
q(Piratapuyo),
],
- q(5402) => [
+ q(5440) => [
q(Pijin),
],
- q(5403) => [
+ q(5441) => [
q(Pitta Pitta),
],
- q(5404) => [
+ q(5442) => [
q(Pintupi-Luritja),
],
- q(5405) => [
+ q(5443) => [
q(Pileni),
q(Vaeakau-Taumako),
],
- q(5406) => [
+ q(5444) => [
q(Pimbwe),
],
- q(5407) => [
+ q(5445) => [
q(Piu),
],
- q(5408) => [
+ q(5446) => [
q(Piya-Kwonci),
],
- q(5409) => [
+ q(5447) => [
q(Pije),
],
- q(5410) => [
+ q(5448) => [
q(Pitjantjatjara),
],
- q(5411) => [
+ q(5449) => [
q(Ardhamagadhi Prakrit),
],
- q(5412) => [
+ q(5450) => [
q(Pokomo),
q(Kipfokomo),
],
- q(5413) => [
+ q(5451) => [
q(Paekche),
],
- q(5414) => [
+ q(5452) => [
q(Pak-Tong),
],
- q(5415) => [
+ q(5453) => [
q(Pankhu),
],
- q(5416) => [
+ q(5454) => [
q(Pakanha),
],
- q(5417) => [
+ q(5455) => [
q(Pokoot),
],
- q(5418) => [
+ q(5456) => [
q(Pukapuka),
],
- q(5419) => [
+ q(5457) => [
q(Attapady Kurumba),
],
- q(5420) => [
+ q(5458) => [
q(Pakistan Sign Language),
],
- q(5421) => [
+ q(5459) => [
q(Maleng),
],
- q(5422) => [
+ q(5460) => [
q(Paku),
],
- q(5423) => [
+ q(5461) => [
q(Miani),
],
- q(5424) => [
+ q(5462) => [
q(Polonombauk),
],
- q(5425) => [
+ q(5463) => [
q(Central Palawano),
],
- q(5426) => [
+ q(5464) => [
q(Polari),
],
- q(5427) => [
+ q(5465) => [
q(Palu'e),
],
- q(5428) => [
+ q(5466) => [
q(Pilaga),
],
- q(5429) => [
+ q(5467) => [
q(Paulohi),
],
- q(5430) => [
+ q(5468) => [
q(Polci),
],
- q(5431) => [
+ q(5469) => [
q(Kohistani Shina),
],
- q(5432) => [
+ q(5470) => [
q(Shwe Palaung),
],
- q(5433) => [
+ q(5471) => [
q(Palenquero),
],
- q(5434) => [
+ q(5472) => [
q(Oluta Popoluca),
],
- q(5435) => [
+ q(5473) => [
q(Palpa),
],
- q(5436) => [
+ q(5474) => [
q(Palaic),
],
- q(5437) => [
+ q(5475) => [
q(Palaka Senoufo),
],
- q(5438) => [
+ q(5476) => [
q(San Marcos Tlalcoyalco Popoloca),
],
- q(5439) => [
+ q(5477) => [
q(Plateau Malagasy),
],
- q(5440) => [
+ q(5478) => [
q(Palikur),
],
- q(5441) => [
+ q(5479) => [
q(Southwest Palawano),
],
- q(5442) => [
+ q(5480) => [
q(Brooke's Point Palawano),
],
- q(5443) => [
+ q(5481) => [
q(Bolyu),
],
- q(5444) => [
+ q(5482) => [
q(Paluan),
],
- q(5445) => [
+ q(5483) => [
q(Paama),
],
- q(5446) => [
+ q(5484) => [
q(Pambia),
],
- q(5447) => [
+ q(5485) => [
q(Palumata),
],
- q(5448) => [
+ q(5486) => [
+ q(Pallanganmiddang),
+ ],
+ q(5487) => [
q(Pwaamei),
],
- q(5449) => [
+ q(5488) => [
q(Pamona),
],
- q(5450) => [
+ q(5489) => [
q(Maharastri Prakrit),
],
- q(5451) => [
+ q(5490) => [
q(Northern Pumi),
],
- q(5452) => [
+ q(5491) => [
q(Southern Pumi),
],
- q(5453) => [
+ q(5492) => [
q(Pamlico),
],
- q(5454) => [
+ q(5493) => [
q(Lingua Franca),
],
- q(5455) => [
+ q(5494) => [
q(Pomo),
],
- q(5456) => [
+ q(5495) => [
q(Pam),
],
- q(5457) => [
+ q(5496) => [
q(Pom),
],
- q(5458) => [
+ q(5497) => [
q(Northern Pame),
],
- q(5459) => [
+ q(5498) => [
q(Paynamar),
],
- q(5460) => [
+ q(5499) => [
q(Piemontese),
],
- q(5461) => [
+ q(5500) => [
q(Tuamotuan),
],
- q(5462) => [
+ q(5501) => [
q(Mirpur Panjabi),
],
- q(5463) => [
+ q(5502) => [
q(Plains Miwok),
],
- q(5464) => [
+ q(5503) => [
q(Poumei Naga),
],
- q(5465) => [
+ q(5504) => [
q(Papuan Malay),
],
- q(5466) => [
+ q(5505) => [
q(Southern Pame),
],
- q(5467) => [
+ q(5506) => [
q(Punan Bah-Biau),
],
- q(5468) => [
+ q(5507) => [
q(Western Panjabi),
],
- q(5469) => [
+ q(5508) => [
q(Pannei),
],
- q(5470) => [
+ q(5509) => [
q(Western Penan),
],
- q(5471) => [
+ q(5510) => [
q(Pongu),
],
- q(5472) => [
+ q(5511) => [
q(Penrhyn),
],
- q(5473) => [
+ q(5512) => [
q(Aoheng),
],
- q(5474) => [
+ q(5513) => [
+ q(Paunaka),
+ ],
+ q(5514) => [
q(Punan Batu 1),
],
- q(5475) => [
+ q(5515) => [
q(Pinai-Hagahai),
],
- q(5476) => [
+ q(5516) => [
q(Panobo),
],
- q(5477) => [
+ q(5517) => [
q(Pancana),
],
- q(5478) => [
+ q(5518) => [
q(Pana (Burkina Faso)),
],
- q(5479) => [
+ q(5519) => [
q(Panim),
],
- q(5480) => [
+ q(5520) => [
q(Ponosakan),
],
- q(5481) => [
+ q(5521) => [
q(Pontic),
],
- q(5482) => [
+ q(5522) => [
q(Jiongnai Bunu),
],
- q(5483) => [
+ q(5523) => [
q(Pinigura),
],
- q(5484) => [
+ q(5524) => [
q(Panytyima),
],
- q(5485) => [
+ q(5525) => [
q(Phong-Kniang),
],
- q(5486) => [
+ q(5526) => [
q(Pinyin),
],
- q(5487) => [
+ q(5527) => [
q(Pana (Central African Republic)),
],
- q(5488) => [
+ q(5528) => [
q(Poqomam),
],
- q(5489) => [
+ q(5529) => [
q(Ponares),
],
- q(5490) => [
+ q(5530) => [
q(San Juan Atzingo Popoloca),
],
- q(5491) => [
+ q(5531) => [
q(Poke),
],
- q(5492) => [
+ q(5532) => [
q(Potiguara),
],
- q(5493) => [
+ q(5533) => [
q(Poqomchi'),
],
- q(5494) => [
+ q(5534) => [
q(Highland Popoluca),
],
- q(5495) => [
+ q(5535) => [
q(Pokanga),
],
- q(5496) => [
+ q(5536) => [
q(Southeastern Pomo),
],
- q(5497) => [
+ q(5537) => [
q(Central Pomo),
],
- q(5498) => [
+ q(5538) => [
q(Pwapwa),
],
- q(5499) => [
+ q(5539) => [
q(Texistepec Popoluca),
],
- q(5500) => [
+ q(5540) => [
q(Sayula Popoluca),
],
- q(5501) => [
+ q(5541) => [
q(Potawatomi),
],
- q(5502) => [
+ q(5542) => [
q(Upper Guinea Crioulo),
],
- q(5503) => [
+ q(5543) => [
q(San Felipe Otlaltepec Popoloca),
],
- q(5504) => [
+ q(5544) => [
q(Polabian),
],
- q(5505) => [
+ q(5545) => [
q(Pogolo),
],
- q(5506) => [
+ q(5546) => [
q(Pao),
],
- q(5507) => [
+ q(5547) => [
q(Papi),
],
- q(5508) => [
+ q(5548) => [
q(Paipai),
],
- q(5509) => [
+ q(5549) => [
q(Uma),
],
- q(5510) => [
+ q(5550) => [
q(Pipil),
q(Nicarao),
],
- q(5511) => [
+ q(5551) => [
q(Papuma),
],
- q(5512) => [
+ q(5552) => [
q(Papapana),
],
- q(5513) => [
+ q(5553) => [
q(Folopa),
],
- q(5514) => [
+ q(5554) => [
q(Pelende),
],
- q(5515) => [
+ q(5555) => [
q(Pei),
],
- q(5516) => [
+ q(5556) => [
q(Piru),
],
- q(5517) => [
+ q(5557) => [
q(San Luis Temalacayuca Popoloca),
],
- q(5518) => [
+ q(5558) => [
q(Pare),
],
- q(5519) => [
+ q(5559) => [
q(Papora),
],
- q(5520) => [
+ q(5560) => [
q(Pa'a),
],
- q(5521) => [
+ q(5561) => [
q(Malecite-Passamaquoddy),
],
- q(5522) => [
+ q(5562) => [
q(Lua'),
],
- q(5523) => [
+ q(5563) => [
q(Parachi),
],
- q(5524) => [
+ q(5564) => [
q(Parsi-Dari),
],
- q(5525) => [
+ q(5565) => [
q(Principense),
],
- q(5526) => [
+ q(5566) => [
q(Paranan),
],
- q(5527) => [
+ q(5567) => [
q(Prussian),
],
- q(5528) => [
+ q(5568) => [
q(Porohanon),
],
- q(5529) => [
+ q(5569) => [
q(Paici),
],
- q(5530) => [
+ q(5570) => [
q(Parauk),
],
- q(5531) => [
+ q(5571) => [
q(Peruvian Sign Language),
],
- q(5532) => [
+ q(5572) => [
q(Kibiri),
],
- q(5533) => [
+ q(5573) => [
q(Prasuni),
],
- q(5534) => [
+ q(5574) => [
q(Parsi),
],
- q(5535) => [
+ q(5575) => [
q(Asheninka Perene),
],
- q(5536) => [
+ q(5576) => [
q(Puri),
],
- q(5537) => [
+ q(5577) => [
q(Dari),
q(Afghan Persian),
],
- q(5538) => [
+ q(5578) => [
q(Phai),
],
- q(5539) => [
+ q(5579) => [
q(Puragi),
],
- q(5540) => [
+ q(5580) => [
q(Parawen),
],
- q(5541) => [
+ q(5581) => [
q(Purik),
],
- q(5542) => [
+ q(5582) => [
q(Pray 3),
],
- q(5543) => [
+ q(5583) => [
q(Providencia Sign Language),
],
- q(5544) => [
+ q(5584) => [
q(Asue Awyu),
],
- q(5545) => [
+ q(5585) => [
q(Persian Sign Language),
],
- q(5546) => [
+ q(5586) => [
q(Plains Indian Sign Language),
],
- q(5547) => [
+ q(5587) => [
q(Central Malay),
],
- q(5548) => [
+ q(5588) => [
q(Penang Sign Language),
],
- q(5549) => [
+ q(5589) => [
q(Southwest Pashayi),
],
- q(5550) => [
+ q(5590) => [
q(Southeast Pashayi),
],
- q(5551) => [
+ q(5591) => [
q(Puerto Rican Sign Language),
],
- q(5552) => [
+ q(5592) => [
q(Pauserna),
],
- q(5553) => [
+ q(5593) => [
q(Panasuan),
],
- q(5554) => [
+ q(5594) => [
q(Polish Sign Language),
],
- q(5555) => [
+ q(5595) => [
q(Philippine Sign Language),
],
- q(5556) => [
+ q(5596) => [
q(Pasi),
],
- q(5557) => [
+ q(5597) => [
q(Portuguese Sign Language),
],
- q(5558) => [
+ q(5598) => [
q(Kaulong),
],
- q(5559) => [
+ q(5599) => [
q(Central Pashto),
],
- q(5560) => [
+ q(5600) => [
q(Sauraseni Prakrit),
],
- q(5561) => [
+ q(5601) => [
q(Port Sandwich),
],
- q(5562) => [
+ q(5602) => [
q(Piscataway),
],
- q(5563) => [
+ q(5603) => [
q(Pai Tavytera),
],
- q(5564) => [
+ q(5604) => [
q(Pataxo Ha-Ha-Hae),
],
- q(5565) => [
+ q(5605) => [
q(Pintiini),
],
- q(5566) => [
+ q(5606) => [
q(Patani),
],
- q(5567) => [
+ q(5607) => [
q(Zo'e),
],
- q(5568) => [
+ q(5608) => [
q(Patep),
],
- q(5569) => [
+ q(5609) => [
q(Piamatsina),
],
- q(5570) => [
+ q(5610) => [
q(Enrekang),
],
- q(5571) => [
+ q(5611) => [
q(Bambam),
],
- q(5572) => [
+ q(5612) => [
q(Port Vato),
],
- q(5573) => [
+ q(5613) => [
q(Pentlatch),
],
- q(5574) => [
+ q(5614) => [
q(Pathiya),
],
- q(5575) => [
+ q(5615) => [
q(Western Highland Purepecha),
],
- q(5576) => [
+ q(5616) => [
q(Purum),
],
- q(5577) => [
+ q(5617) => [
q(Punan Merap),
],
- q(5578) => [
+ q(5618) => [
q(Punan Aput),
],
- q(5579) => [
+ q(5619) => [
q(Puelche),
],
- q(5580) => [
+ q(5620) => [
q(Punan Merah),
],
- q(5581) => [
+ q(5621) => [
q(Phuie),
],
- q(5582) => [
+ q(5622) => [
q(Puinave),
],
- q(5583) => [
+ q(5623) => [
q(Punan Tubu),
],
- q(5584) => [
+ q(5624) => [
q(Pu Ko),
],
- q(5585) => [
+ q(5625) => [
q(Puma),
],
- q(5586) => [
+ q(5626) => [
q(Puoc),
],
- q(5587) => [
+ q(5627) => [
q(Pulabu),
],
- q(5588) => [
+ q(5628) => [
q(Puquina),
],
- q(5589) => [
+ q(5629) => [
q(Purubora),
],
- q(5590) => [
+ q(5630) => [
q(Putoh),
],
- q(5591) => [
+ q(5631) => [
q(Punu),
],
- q(5592) => [
+ q(5632) => [
q(Puluwatese),
],
- q(5593) => [
+ q(5633) => [
q(Puare),
],
- q(5594) => [
+ q(5634) => [
q(Purisimeno),
],
- q(5595) => [
+ q(5635) => [
q(Purum Naga),
],
- q(5596) => [
+ q(5636) => [
q(Pawaia),
],
- q(5597) => [
+ q(5637) => [
q(Panawa),
],
- q(5598) => [
+ q(5638) => [
q(Gapapaiwa),
],
- q(5599) => [
+ q(5639) => [
q(Molbog),
],
- q(5600) => [
+ q(5640) => [
q(Paiwan),
],
- q(5601) => [
+ q(5641) => [
q(Pwo Western Karen),
],
- q(5602) => [
+ q(5642) => [
q(Powari),
],
- q(5603) => [
+ q(5643) => [
q(Pwo Northern Karen),
],
- q(5604) => [
+ q(5644) => [
q(Quetzaltepec Mixe),
],
- q(5605) => [
+ q(5645) => [
q(Pye Krumen),
],
- q(5606) => [
+ q(5646) => [
q(Fyam),
],
- q(5607) => [
+ q(5647) => [
q(Poyanawa),
],
- q(5608) => [
+ q(5648) => [
q(Paraguayan Sign Language),
q(Lengua de Senas del Paraguay),
],
- q(5609) => [
+ q(5649) => [
q(Puyuma),
],
- q(5610) => [
+ q(5650) => [
q(Pyu (Myanmar)),
],
- q(5611) => [
+ q(5651) => [
q(Pyen),
],
- q(5612) => [
+ q(5652) => [
q(Para Naga),
],
- q(5613) => [
+ q(5653) => [
q(Quapaw),
],
- q(5614) => [
+ q(5654) => [
q(Huallaga Huanuco Quechua),
],
- q(5615) => [
+ q(5655) => [
q(K'iche'),
q(Quiche),
],
- q(5616) => [
+ q(5656) => [
q(Calderon Highland Quichua),
],
- q(5617) => [
+ q(5657) => [
q(Lambayeque Quechua),
],
- q(5618) => [
+ q(5658) => [
q(Chimborazo Highland Quichua),
],
- q(5619) => [
+ q(5659) => [
q(South Bolivian Quechua),
],
- q(5620) => [
+ q(5660) => [
q(Quileute),
],
- q(5621) => [
+ q(5661) => [
q(Chachapoyas Quechua),
],
- q(5622) => [
+ q(5662) => [
q(North Bolivian Quechua),
],
- q(5623) => [
+ q(5663) => [
q(Sipacapense),
],
- q(5624) => [
+ q(5664) => [
q(Quinault),
],
- q(5625) => [
+ q(5665) => [
q(Southern Pastaza Quechua),
],
- q(5626) => [
+ q(5666) => [
q(Quinqui),
],
- q(5627) => [
+ q(5667) => [
q(Yanahuanca Pasco Quechua),
],
- q(5628) => [
+ q(5668) => [
q(Santiago del Estero Quichua),
],
- q(5629) => [
+ q(5669) => [
q(Sacapulteco),
],
- q(5630) => [
+ q(5670) => [
q(Tena Lowland Quichua),
],
- q(5631) => [
+ q(5671) => [
q(Yauyos Quechua),
],
- q(5632) => [
+ q(5672) => [
q(Ayacucho Quechua),
],
- q(5633) => [
+ q(5673) => [
q(Cusco Quechua),
],
- q(5634) => [
+ q(5674) => [
q(Ambo-Pasco Quechua),
],
- q(5635) => [
+ q(5675) => [
q(Cajamarca Quechua),
],
- q(5636) => [
+ q(5676) => [
q(Eastern Apurimac Quechua),
],
- q(5637) => [
+ q(5677) => [
q(Huamalies-Dos de Mayo Huanuco Quechua),
],
- q(5638) => [
+ q(5678) => [
q(Imbabura Highland Quichua),
],
- q(5639) => [
+ q(5679) => [
q(Loja Highland Quichua),
],
- q(5640) => [
+ q(5680) => [
q(Cajatambo North Lima Quechua),
],
- q(5641) => [
+ q(5681) => [
q(Margos-Yarowilca-Lauricocha Quechua),
],
- q(5642) => [
+ q(5682) => [
q(North Junin Quechua),
],
- q(5643) => [
+ q(5683) => [
q(Napo Lowland Quechua),
],
- q(5644) => [
+ q(5684) => [
q(Pacaraos Quechua),
],
- q(5645) => [
+ q(5685) => [
q(San Martin Quechua),
],
- q(5646) => [
+ q(5686) => [
q(Huaylla Wanca Quechua),
],
- q(5647) => [
+ q(5687) => [
q(Queyu),
],
- q(5648) => [
+ q(5688) => [
q(Northern Pastaza Quichua),
],
- q(5649) => [
+ q(5689) => [
q(Corongo Ancash Quechua),
],
- q(5650) => [
+ q(5690) => [
q(Classical Quechua),
],
- q(5651) => [
+ q(5691) => [
q(Huaylas Ancash Quechua),
],
- q(5652) => [
+ q(5692) => [
q(Kuman (Russia)),
],
- q(5653) => [
+ q(5693) => [
q(Sihuas Ancash Quechua),
],
- q(5654) => [
+ q(5694) => [
q(Kwalhioqua-Tlatskanai),
],
- q(5655) => [
+ q(5695) => [
q(Chiquian Ancash Quechua),
],
- q(5656) => [
+ q(5696) => [
q(Chincha Quechua),
],
- q(5657) => [
+ q(5697) => [
q(Panao Huanuco Quechua),
],
- q(5658) => [
+ q(5698) => [
q(Salasaca Highland Quichua),
],
- q(5659) => [
+ q(5699) => [
q(Northern Conchucos Ancash Quechua),
],
- q(5660) => [
+ q(5700) => [
q(Southern Conchucos Ancash Quechua),
],
- q(5661) => [
+ q(5701) => [
q(Puno Quechua),
],
- q(5662) => [
+ q(5702) => [
q(Qashqa'i),
],
- q(5663) => [
+ q(5703) => [
q(Canar Highland Quichua),
],
- q(5664) => [
+ q(5704) => [
q(Southern Qiang),
],
- q(5665) => [
+ q(5705) => [
q(Santa Ana de Tusi Pasco Quechua),
],
- q(5666) => [
+ q(5706) => [
q(Arequipa-La Union Quechua),
],
- q(5667) => [
+ q(5707) => [
q(Jauja Wanca Quechua),
],
- q(5668) => [
+ q(5708) => [
q(Quenya),
],
- q(5669) => [
+ q(5709) => [
q(Quiripi),
],
- q(5670) => [
+ q(5710) => [
q(Dungmali),
],
- q(5671) => [
+ q(5711) => [
q(Camling),
],
- q(5672) => [
+ q(5712) => [
q(Rasawa),
],
- q(5673) => [
+ q(5713) => [
q(Rade),
],
- q(5674) => [
+ q(5714) => [
q(Western Meohang),
],
- q(5675) => [
+ q(5715) => [
q(Logooli),
q(Lulogooli),
],
- q(5676) => [
+ q(5716) => [
q(Rabha),
],
- q(5677) => [
+ q(5717) => [
q(Ramoaaina),
],
- q(5678) => [
+ q(5718) => [
q(Tulu-Bohuai),
],
- q(5679) => [
+ q(5719) => [
q(Ralte),
],
- q(5680) => [
+ q(5720) => [
q(Canela),
],
- q(5681) => [
+ q(5721) => [
q(Riantana),
],
- q(5682) => [
+ q(5722) => [
q(Rao),
],
- q(5683) => [
+ q(5723) => [
q(Saam),
],
- q(5684) => [
+ q(5724) => [
q(Tegali),
],
- q(5685) => [
+ q(5725) => [
q(Razajerdi),
],
- q(5686) => [
+ q(5726) => [
q(Raute),
],
- q(5687) => [
+ q(5727) => [
q(Sampang),
],
- q(5688) => [
+ q(5728) => [
q(Rawang),
],
- q(5689) => [
+ q(5729) => [
q(Rang),
],
- q(5690) => [
+ q(5730) => [
q(Rapa),
],
- q(5691) => [
+ q(5731) => [
q(Rahambuu),
],
- q(5692) => [
+ q(5732) => [
q(Rumai Palaung),
],
- q(5693) => [
+ q(5733) => [
q(Northern Bontok),
],
- q(5694) => [
+ q(5734) => [
q(Miraya Bikol),
],
- q(5695) => [
+ q(5735) => [
+ q(Barababaraba),
+ ],
+ q(5736) => [
q(Reunion Creole French),
],
- q(5696) => [
+ q(5737) => [
q(Rudbari),
],
- q(5697) => [
+ q(5738) => [
q(Rerau),
],
- q(5698) => [
+ q(5739) => [
q(Rembong),
],
- q(5699) => [
+ q(5740) => [
q(Rejang Kayan),
],
- q(5700) => [
+ q(5741) => [
q(Kara (Tanzania)),
],
- q(5701) => [
+ q(5742) => [
q(Reli),
],
- q(5702) => [
+ q(5743) => [
q(Rejang),
],
- q(5703) => [
+ q(5744) => [
q(Rendille),
],
- q(5704) => [
+ q(5745) => [
q(Remo),
],
- q(5705) => [
+ q(5746) => [
q(Rengao),
],
- q(5706) => [
+ q(5747) => [
q(Rer Bare),
],
- q(5707) => [
+ q(5748) => [
q(Reshe),
],
- q(5708) => [
+ q(5749) => [
q(Retta),
],
- q(5709) => [
+ q(5750) => [
q(Reyesano),
],
- q(5710) => [
+ q(5751) => [
q(Roria),
],
- q(5711) => [
+ q(5752) => [
q(Romano-Greek),
],
- q(5712) => [
+ q(5753) => [
q(Rangkas),
],
- q(5713) => [
+ q(5754) => [
q(Romagnol),
],
- q(5714) => [
+ q(5755) => [
q(Resigaro),
],
- q(5715) => [
+ q(5756) => [
q(Southern Roglai),
],
- q(5716) => [
+ q(5757) => [
q(Ringgou),
],
- q(5717) => [
+ q(5758) => [
q(Rohingya),
],
- q(5718) => [
+ q(5759) => [
q(Yahang),
],
- q(5719) => [
+ q(5760) => [
q(Riang (India)),
],
- q(5720) => [
+ q(5761) => [
q(Rien),
],
- q(5721) => [
+ q(5762) => [
q(Tarifit),
],
- q(5722) => [
+ q(5763) => [
q(Riang (Myanmar)),
],
- q(5723) => [
+ q(5764) => [
q(Nyaturu),
],
- q(5724) => [
+ q(5765) => [
q(Nungu),
],
- q(5725) => [
+ q(5766) => [
q(Ribun),
],
- q(5726) => [
+ q(5767) => [
q(Ritarungo),
],
- q(5727) => [
+ q(5768) => [
q(Riung),
],
- q(5728) => [
+ q(5769) => [
q(Rajong),
],
- q(5729) => [
+ q(5770) => [
q(Raji),
],
- q(5730) => [
+ q(5771) => [
q(Rajbanshi),
],
- q(5731) => [
+ q(5772) => [
q(Kraol),
],
- q(5732) => [
+ q(5773) => [
q(Rikbaktsa),
],
- q(5733) => [
+ q(5774) => [
q(Rakahanga-Manihiki),
],
- q(5734) => [
+ q(5775) => [
q(Rakhine),
],
- q(5735) => [
+ q(5776) => [
q(Marka),
],
- q(5736) => [
+ q(5777) => [
q(Rangpuri),
q(Kamta),
],
- q(5737) => [
+ q(5778) => [
q(Rama),
],
- q(5738) => [
+ q(5779) => [
q(Rembarunga),
],
- q(5739) => [
+ q(5780) => [
q(Carpathian Romani),
],
- q(5740) => [
+ q(5781) => [
q(Traveller Danish),
],
- q(5741) => [
+ q(5782) => [
q(Angloromani),
],
- q(5742) => [
+ q(5783) => [
q(Kalo Finnish Romani),
],
- q(5743) => [
+ q(5784) => [
q(Traveller Norwegian),
],
- q(5744) => [
+ q(5785) => [
q(Murkim),
],
- q(5745) => [
+ q(5786) => [
q(Lomavren),
],
- q(5746) => [
+ q(5787) => [
q(Romkun),
],
- q(5747) => [
+ q(5788) => [
q(Baltic Romani),
],
- q(5748) => [
+ q(5789) => [
q(Roma),
],
- q(5749) => [
+ q(5790) => [
q(Balkan Romani),
],
- q(5750) => [
+ q(5791) => [
q(Sinte Romani),
],
- q(5751) => [
+ q(5792) => [
q(Rempi),
],
- q(5752) => [
+ q(5793) => [
q(Calo),
],
- q(5753) => [
+ q(5794) => [
q(Romanian Sign Language),
],
- q(5754) => [
+ q(5795) => [
q(Domari),
],
- q(5755) => [
+ q(5796) => [
q(Tavringer Romani),
],
- q(5756) => [
+ q(5797) => [
q(Romanova),
],
- q(5757) => [
+ q(5798) => [
q(Welsh Romani),
],
- q(5758) => [
+ q(5799) => [
q(Romam),
],
- q(5759) => [
+ q(5800) => [
q(Vlax Romani),
],
- q(5760) => [
+ q(5801) => [
q(Marma),
],
- q(5761) => [
+ q(5802) => [
q(Runa),
],
- q(5762) => [
+ q(5803) => [
q(Ruund),
],
- q(5763) => [
+ q(5804) => [
q(Ronga),
],
- q(5764) => [
+ q(5805) => [
q(Ranglong),
],
- q(5765) => [
+ q(5806) => [
q(Roon),
],
- q(5766) => [
+ q(5807) => [
q(Rongpo),
],
- q(5767) => [
+ q(5808) => [
+ q(Nari Nari),
+ ],
+ q(5809) => [
q(Rungwa),
],
- q(5768) => [
+ q(5810) => [
q(Tae'),
],
- q(5769) => [
+ q(5811) => [
q(Cacgia Roglai),
],
- q(5770) => [
+ q(5812) => [
q(Rogo),
],
- q(5771) => [
+ q(5813) => [
q(Ronji),
],
- q(5772) => [
+ q(5814) => [
q(Rombo),
],
- q(5773) => [
+ q(5815) => [
q(Northern Roglai),
],
- q(5774) => [
+ q(5816) => [
q(Romblomanon),
],
- q(5775) => [
+ q(5817) => [
q(Rotokas),
],
- q(5776) => [
+ q(5818) => [
q(Kriol),
],
- q(5777) => [
+ q(5819) => [
q(Rongga),
],
- q(5778) => [
+ q(5820) => [
q(Runga),
],
- q(5779) => [
+ q(5821) => [
q(Dela-Oenale),
],
- q(5780) => [
+ q(5822) => [
q(Repanbitip),
],
- q(5781) => [
+ q(5823) => [
q(Rapting),
],
- q(5782) => [
+ q(5824) => [
q(Ririo),
],
- q(5783) => [
+ q(5825) => [
q(Waima),
],
- q(5784) => [
+ q(5826) => [
+ q(Arritinngithigh),
+ ],
+ q(5827) => [
q(Romano-Serbian),
],
- q(5785) => [
+ q(5828) => [
q(Rennellese Sign Language),
],
- q(5786) => [
+ q(5829) => [
q(Russian Sign Language),
],
- q(5787) => [
+ q(5830) => [
+ q(Rungtu Chin),
+ ],
+ q(5831) => [
q(Ratahan),
],
- q(5788) => [
+ q(5832) => [
q(Rotuman),
],
- q(5789) => [
+ q(5833) => [
q(Rathawi),
],
- q(5790) => [
+ q(5834) => [
q(Gungu),
],
- q(5791) => [
+ q(5835) => [
q(Ruuli),
],
- q(5792) => [
+ q(5836) => [
q(Rusyn),
],
- q(5793) => [
+ q(5837) => [
q(Luguru),
],
- q(5794) => [
+ q(5838) => [
q(Roviana),
],
- q(5795) => [
+ q(5839) => [
q(Ruga),
],
- q(5796) => [
+ q(5840) => [
q(Rufiji),
],
- q(5797) => [
+ q(5841) => [
q(Che),
],
- q(5798) => [
+ q(5842) => [
q(Istro Romanian),
],
- q(5799) => [
+ q(5843) => [
q(Megleno Romanian),
],
- q(5800) => [
+ q(5844) => [
q(Rutul),
],
- q(5801) => [
+ q(5845) => [
q(Lanas Lobu),
],
- q(5802) => [
+ q(5846) => [
q(Mala (Nigeria)),
],
- q(5803) => [
+ q(5847) => [
q(Ruma),
],
- q(5804) => [
+ q(5848) => [
q(Rawo),
],
- q(5805) => [
+ q(5849) => [
q(Rwa),
],
- q(5806) => [
+ q(5850) => [
q(Amba (Uganda)),
],
- q(5807) => [
+ q(5851) => [
q(Rawa),
],
- q(5808) => [
+ q(5852) => [
q(Marwari (India)),
],
- q(5809) => [
+ q(5853) => [
q(Northern Amami-Oshima),
],
- q(5810) => [
+ q(5854) => [
q(Yaeyama),
],
- q(5811) => [
+ q(5855) => [
q(Central Okinawan),
],
- q(5812) => [
+ q(5856) => [
q(Saba),
],
- q(5813) => [
+ q(5857) => [
q(Buglere),
],
- q(5814) => [
+ q(5858) => [
q(Meskwaki),
],
- q(5815) => [
+ q(5859) => [
q(Sabane),
],
- q(5816) => [
+ q(5860) => [
q(Safaliba),
],
- q(5817) => [
+ q(5861) => [
q(Sahu),
],
- q(5818) => [
+ q(5862) => [
q(Sake),
],
- q(5819) => [
+ q(5863) => [
q(Sause),
],
- q(5820) => [
+ q(5864) => [
q(Sanapana),
],
- q(5821) => [
+ q(5865) => [
q(Samburu),
],
- q(5822) => [
+ q(5866) => [
q(Saraveca),
],
- q(5823) => [
+ q(5867) => [
q(Saleman),
],
- q(5824) => [
+ q(5868) => [
q(Saafi-Saafi),
],
- q(5825) => [
+ q(5869) => [
q(Sawi),
],
- q(5826) => [
+ q(5870) => [
q(Sa),
],
- q(5827) => [
+ q(5871) => [
q(Saya),
],
- q(5828) => [
+ q(5872) => [
q(Saurashtra),
],
- q(5829) => [
+ q(5873) => [
q(Ngambay),
],
- q(5830) => [
+ q(5874) => [
q(Simbo),
],
- q(5831) => [
+ q(5875) => [
q(Kele (Papua New Guinea)),
],
- q(5832) => [
+ q(5876) => [
q(Southern Samo),
],
- q(5833) => [
+ q(5877) => [
q(Saliba),
],
- q(5834) => [
+ q(5878) => [
q(Shabo),
],
- q(5835) => [
+ q(5879) => [
q(Seget),
],
- q(5836) => [
+ q(5880) => [
q(Sori-Harengan),
],
- q(5837) => [
+ q(5881) => [
q(Seti),
],
- q(5838) => [
+ q(5882) => [
q(Surbakhal),
],
- q(5839) => [
+ q(5883) => [
q(Safwa),
],
- q(5840) => [
+ q(5884) => [
q(Botolan Sambal),
],
- q(5841) => [
+ q(5885) => [
q(Sagala),
],
- q(5842) => [
+ q(5886) => [
q(Sindhi Bhil),
],
- q(5843) => [
+ q(5887) => [
q(Sabum),
],
- q(5844) => [
+ q(5888) => [
q(Sangu (Tanzania)),
],
- q(5845) => [
+ q(5889) => [
q(Sileibi),
],
- q(5846) => [
+ q(5890) => [
q(Sembakung Murut),
],
- q(5847) => [
+ q(5891) => [
q(Subiya),
],
- q(5848) => [
+ q(5892) => [
q(Kimki),
],
- q(5849) => [
+ q(5893) => [
q(Stod Bhoti),
],
- q(5850) => [
+ q(5894) => [
q(Sabine),
],
- q(5851) => [
+ q(5895) => [
q(Simba),
],
- q(5852) => [
+ q(5896) => [
q(Seberuang),
],
- q(5853) => [
+ q(5897) => [
q(Soli),
],
- q(5854) => [
+ q(5898) => [
q(Sara Kaba),
],
- q(5855) => [
- q(Sansu),
- ],
- q(5856) => [
+ q(5899) => [
q(Chut),
],
- q(5857) => [
+ q(5900) => [
q(Dongxiang),
],
- q(5858) => [
+ q(5901) => [
q(San Miguel Creole French),
],
- q(5859) => [
+ q(5902) => [
q(Sanggau),
],
- q(5860) => [
+ q(5903) => [
q(Sakachep),
],
- q(5861) => [
+ q(5904) => [
q(Sri Lankan Creole Malay),
],
- q(5862) => [
+ q(5905) => [
q(Sadri),
],
- q(5863) => [
+ q(5906) => [
q(Shina),
],
- q(5864) => [
+ q(5907) => [
q(Helambu Sherpa),
],
- q(5865) => [
+ q(5908) => [
q(Sa'och),
],
- q(5866) => [
+ q(5909) => [
q(North Slavey),
],
- q(5867) => [
+ q(5910) => [
q(Shumcho),
],
- q(5868) => [
+ q(5911) => [
q(Sheni),
],
- q(5869) => [
+ q(5912) => [
q(Sha),
],
- q(5870) => [
+ q(5913) => [
q(Sicel),
],
- q(5871) => [
+ q(5914) => [
q(Toraja-Sa'dan),
],
- q(5872) => [
+ q(5915) => [
q(Shabak),
],
- q(5873) => [
+ q(5916) => [
q(Sassarese Sardinian),
],
- q(5874) => [
+ q(5917) => [
q(Surubu),
],
- q(5875) => [
+ q(5918) => [
q(Sarli),
],
- q(5876) => [
+ q(5919) => [
q(Savi),
],
- q(5877) => [
+ q(5920) => [
q(Southern Kurdish),
],
- q(5878) => [
+ q(5921) => [
q(Suundi),
],
- q(5879) => [
+ q(5922) => [
q(Sos Kundi),
],
- q(5880) => [
+ q(5923) => [
q(Saudi Arabian Sign Language),
],
- q(5881) => [
+ q(5924) => [
q(Semandang),
],
- q(5882) => [
+ q(5925) => [
q(Gallurese Sardinian),
],
- q(5883) => [
+ q(5926) => [
q(Bukar-Sadung Bidayuh),
],
- q(5884) => [
+ q(5927) => [
q(Sherdukpen),
],
- q(5885) => [
+ q(5928) => [
q(Oraon Sadri),
],
- q(5886) => [
+ q(5929) => [
q(Sened),
],
- q(5887) => [
+ q(5930) => [
q(Shuadit),
],
- q(5888) => [
+ q(5931) => [
q(Sarudu),
],
- q(5889) => [
+ q(5932) => [
q(Sibu Melanau),
],
- q(5890) => [
+ q(5933) => [
q(Sallands),
],
- q(5891) => [
+ q(5934) => [
q(Semai),
],
- q(5892) => [
+ q(5935) => [
q(Shempire Senoufo),
],
- q(5893) => [
+ q(5936) => [
q(Sechelt),
],
- q(5894) => [
+ q(5937) => [
q(Sedang),
],
- q(5895) => [
+ q(5938) => [
q(Seneca),
],
- q(5896) => [
+ q(5939) => [
q(Cebaara Senoufo),
],
- q(5897) => [
+ q(5940) => [
q(Segeju),
],
- q(5898) => [
+ q(5941) => [
q(Sena),
],
- q(5899) => [
+ q(5942) => [
q(Seri),
],
- q(5900) => [
+ q(5943) => [
q(Sene),
],
- q(5901) => [
+ q(5944) => [
q(Sekani),
],
- q(5902) => [
+ q(5945) => [
q(Nanerige Senoufo),
],
- q(5903) => [
+ q(5946) => [
q(Suarmin),
],
- q(5904) => [
+ q(5947) => [
q(Sicite Senoufo),
],
- q(5905) => [
+ q(5948) => [
q(Senara Senoufo),
],
- q(5906) => [
+ q(5949) => [
q(Serrano),
],
- q(5907) => [
+ q(5950) => [
q(Koyraboro Senni Songhai),
],
- q(5908) => [
+ q(5951) => [
q(Sentani),
],
- q(5909) => [
+ q(5952) => [
q(Serui-Laut),
],
- q(5910) => [
+ q(5953) => [
q(Nyarafolo Senoufo),
],
- q(5911) => [
+ q(5954) => [
q(Sewa Bay),
],
- q(5912) => [
+ q(5955) => [
q(Secoya),
],
- q(5913) => [
+ q(5956) => [
q(Senthang Chin),
],
- q(5914) => [
+ q(5957) => [
q(Langue des signes de Belgique Francophone),
q(French Belgian Sign Language),
],
- q(5915) => [
+ q(5958) => [
+ q(Eastern Subanen),
+ ],
+ q(5959) => [
q(Small Flowery Miao),
],
- q(5916) => [
+ q(5960) => [
q(South African Sign Language),
],
- q(5917) => [
+ q(5961) => [
q(Sehwi),
],
- q(5918) => [
+ q(5962) => [
q(Mag-antsi Ayta),
],
- q(5919) => [
+ q(5963) => [
q(Kipsigis),
],
- q(5920) => [
+ q(5964) => [
q(Surigaonon),
],
- q(5921) => [
+ q(5965) => [
q(Segai),
],
- q(5922) => [
+ q(5966) => [
q(Swiss-German Sign Language),
],
- q(5923) => [
+ q(5967) => [
q(Shughni),
],
- q(5924) => [
+ q(5968) => [
q(Suga),
],
- q(5925) => [
+ q(5969) => [
+ q(Surgujia),
+ ],
+ q(5970) => [
q(Sangkong),
],
- q(5926) => [
+ q(5971) => [
q(Singa),
],
- q(5927) => [
+ q(5972) => [
q(Songa),
],
- q(5928) => [
+ q(5973) => [
q(Singpho),
],
- q(5929) => [
+ q(5974) => [
q(Sangisari),
],
- q(5930) => [
+ q(5975) => [
q(Samogitian),
],
- q(5931) => [
+ q(5976) => [
q(Brokpake),
],
- q(5932) => [
+ q(5977) => [
q(Salas),
],
- q(5933) => [
+ q(5978) => [
q(Sebat Bet Gurage),
],
- q(5934) => [
+ q(5979) => [
q(Sierra Leone Sign Language),
],
- q(5935) => [
+ q(5980) => [
q(Sanglechi),
],
- q(5936) => [
+ q(5981) => [
q(Sursurunga),
],
- q(5937) => [
+ q(5982) => [
q(Shall-Zwall),
],
- q(5938) => [
+ q(5983) => [
q(Ninam),
],
- q(5939) => [
+ q(5984) => [
q(Sonde),
],
- q(5940) => [
+ q(5985) => [
q(Kundal Shahi),
],
- q(5941) => [
+ q(5986) => [
q(Sheko),
],
- q(5942) => [
+ q(5987) => [
q(Shua),
],
- q(5943) => [
+ q(5988) => [
q(Shoshoni),
],
- q(5944) => [
+ q(5989) => [
q(Tachelhit),
],
- q(5945) => [
+ q(5990) => [
q(Shatt),
],
- q(5946) => [
+ q(5991) => [
q(Shilluk),
],
- q(5947) => [
+ q(5992) => [
q(Shendu),
],
- q(5948) => [
+ q(5993) => [
q(Shahrudi),
],
- q(5949) => [
+ q(5994) => [
q(Shanga),
],
- q(5950) => [
+ q(5995) => [
q(Shipibo-Conibo),
],
- q(5951) => [
+ q(5996) => [
q(Sala),
],
- q(5952) => [
+ q(5997) => [
q(Shi),
],
- q(5953) => [
+ q(5998) => [
q(Shuswap),
],
- q(5954) => [
+ q(5999) => [
q(Shasta),
],
- q(5955) => [
+ q(6000) => [
q(Chadian Arabic),
],
- q(5956) => [
+ q(6001) => [
q(Shehri),
],
- q(5957) => [
+ q(6002) => [
q(Shwai),
],
- q(5958) => [
+ q(6003) => [
q(She),
],
- q(5959) => [
+ q(6004) => [
q(Tachawit),
],
- q(5960) => [
+ q(6005) => [
q(Syenara Senoufo),
],
- q(5961) => [
+ q(6006) => [
q(Akkala Sami),
],
- q(5962) => [
+ q(6007) => [
q(Sebop),
],
- q(5963) => [
+ q(6008) => [
q(Simaa),
],
- q(5964) => [
+ q(6009) => [
q(Siamou),
],
- q(5965) => [
+ q(6010) => [
q(Paasaal),
],
- q(5966) => [
+ q(6011) => [
q(Zire),
],
- q(5967) => [
+ q(6012) => [
q(Shom Peng),
],
- q(5968) => [
+ q(6013) => [
q(Numbami),
],
- q(5969) => [
+ q(6014) => [
q(Sikiana),
],
- q(5970) => [
+ q(6015) => [
q(Tumulung Sisaala),
],
- q(5971) => [
+ q(6016) => [
q(Mende (Papua New Guinea)),
],
- q(5972) => [
+ q(6017) => [
q(Sikkimese),
],
- q(5973) => [
+ q(6018) => [
q(Sonia),
],
- q(5974) => [
+ q(6019) => [
q(Siri),
],
- q(5975) => [
+ q(6020) => [
q(Siuslaw),
],
- q(5976) => [
+ q(6021) => [
q(Sinagen),
],
- q(5977) => [
+ q(6022) => [
q(Sumariup),
],
- q(5978) => [
+ q(6023) => [
q(Siwai),
],
- q(5979) => [
+ q(6024) => [
q(Sumau),
],
- q(5980) => [
+ q(6025) => [
q(Sivandi),
],
- q(5981) => [
+ q(6026) => [
q(Siwi),
],
- q(5982) => [
+ q(6027) => [
q(Epena),
],
- q(5983) => [
+ q(6028) => [
q(Sajau Basap),
],
- q(5984) => [
+ q(6029) => [
q(Kildin Sami),
],
- q(5985) => [
+ q(6030) => [
q(Pite Sami),
],
- q(5986) => [
+ q(6031) => [
q(Assangori),
],
- q(5987) => [
+ q(6032) => [
q(Kemi Sami),
],
- q(5988) => [
+ q(6033) => [
q(Sajalong),
q(Miji),
],
- q(5989) => [
+ q(6034) => [
q(Mapun),
],
- q(5990) => [
+ q(6035) => [
q(Sindarin),
],
- q(5991) => [
+ q(6036) => [
q(Xibe),
],
- q(5992) => [
+ q(6037) => [
q(Surjapuri),
],
- q(5993) => [
+ q(6038) => [
q(Siar-Lak),
],
- q(5994) => [
+ q(6039) => [
q(Senhaja De Srair),
],
- q(5995) => [
+ q(6040) => [
q(Ter Sami),
],
- q(5996) => [
+ q(6041) => [
q(Ume Sami),
],
- q(5997) => [
+ q(6042) => [
q(Shawnee),
],
- q(5998) => [
+ q(6043) => [
q(Skagit),
],
- q(5999) => [
+ q(6044) => [
q(Saek),
],
- q(6000) => [
- q(Sauk),
+ q(6045) => [
+ q(Ma Manda),
],
- q(6001) => [
+ q(6046) => [
q(Southern Sierra Miwok),
],
- q(6002) => [
+ q(6047) => [
q(Seke (Vanuatu)),
],
- q(6003) => [
+ q(6048) => [
q(Sakirabia),
],
- q(6004) => [
+ q(6049) => [
q(Sakalava Malagasy),
],
- q(6005) => [
+ q(6050) => [
q(Sikule),
],
- q(6006) => [
+ q(6051) => [
q(Sika),
],
- q(6007) => [
+ q(6052) => [
q(Seke (Nepal)),
],
- q(6008) => [
+ q(6053) => [
q(Sok),
],
- q(6009) => [
- q(Sakam),
+ q(6054) => [
+ q(Kutong),
],
- q(6010) => [
+ q(6055) => [
q(Kolibugan Subanon),
],
- q(6011) => [
+ q(6056) => [
q(Seko Tengah),
],
- q(6012) => [
+ q(6057) => [
q(Sekapan),
],
- q(6013) => [
+ q(6058) => [
q(Sininkere),
],
- q(6014) => [
+ q(6059) => [
q(Seraiki),
],
- q(6015) => [
+ q(6060) => [
q(Maia),
],
- q(6016) => [
+ q(6061) => [
q(Sakata),
],
- q(6017) => [
+ q(6062) => [
q(Sakao),
],
- q(6018) => [
+ q(6063) => [
q(Skou),
],
- q(6019) => [
+ q(6064) => [
q(Skepi Creole Dutch),
],
- q(6020) => [
+ q(6065) => [
q(Seko Padang),
],
- q(6021) => [
+ q(6066) => [
q(Sikaiana),
],
- q(6022) => [
+ q(6067) => [
q(Sekar),
],
- q(6023) => [
+ q(6068) => [
q(Sissala),
],
- q(6024) => [
+ q(6069) => [
q(Sholaga),
],
- q(6025) => [
+ q(6070) => [
q(Swiss-Italian Sign Language),
],
- q(6026) => [
+ q(6071) => [
q(Selungai Murut),
],
- q(6027) => [
+ q(6072) => [
q(Southern Puget Sound Salish),
],
- q(6028) => [
+ q(6073) => [
q(Lower Silesian),
],
- q(6029) => [
+ q(6074) => [
q(Saluma),
],
- q(6030) => [
+ q(6075) => [
q(Salt-Yui),
],
- q(6031) => [
+ q(6076) => [
q(Pangutaran Sama),
],
- q(6032) => [
+ q(6077) => [
q(Salinan),
],
- q(6033) => [
+ q(6078) => [
q(Lamaholot),
],
- q(6034) => [
+ q(6079) => [
q(Salchuq),
],
- q(6035) => [
+ q(6080) => [
q(Salar),
],
- q(6036) => [
+ q(6081) => [
q(Singapore Sign Language),
],
- q(6037) => [
+ q(6082) => [
q(Sila),
],
- q(6038) => [
+ q(6083) => [
q(Selaru),
],
- q(6039) => [
+ q(6084) => [
q(Sialum),
],
- q(6040) => [
+ q(6085) => [
q(Salampasu),
],
- q(6041) => [
+ q(6086) => [
q(Selayar),
],
- q(6042) => [
+ q(6087) => [
q(Ma'ya),
],
- q(6043) => [
+ q(6088) => [
q(Simbari),
],
- q(6044) => [
+ q(6089) => [
q(Som),
],
- q(6045) => [
+ q(6090) => [
q(Sama),
],
- q(6046) => [
+ q(6091) => [
q(Auwe),
],
- q(6047) => [
+ q(6092) => [
q(Simbali),
],
- q(6048) => [
+ q(6093) => [
q(Samei),
],
- q(6049) => [
+ q(6094) => [
q(Bolinao),
],
- q(6050) => [
+ q(6095) => [
q(Central Sama),
],
- q(6051) => [
+ q(6096) => [
q(Musasa),
],
- q(6052) => [
+ q(6097) => [
q(Samaritan),
],
- q(6053) => [
+ q(6098) => [
q(Samo),
],
- q(6054) => [
+ q(6099) => [
q(Simeulue),
],
- q(6055) => [
+ q(6100) => [
q(Simte),
],
- q(6056) => [
+ q(6101) => [
q(Somray),
],
- q(6057) => [
+ q(6102) => [
q(Samvedi),
],
- q(6058) => [
+ q(6103) => [
q(Sumbawa),
],
- q(6059) => [
+ q(6104) => [
q(Samba),
],
- q(6060) => [
+ q(6105) => [
q(Semnani),
],
- q(6061) => [
+ q(6106) => [
q(Simeku),
],
- q(6062) => [
+ q(6107) => [
q(Sebuyau),
],
- q(6063) => [
+ q(6108) => [
q(Sinaugoro),
],
- q(6064) => [
+ q(6109) => [
q(Bau Bidayuh),
],
- q(6065) => [
+ q(6110) => [
q(Noon),
],
- q(6066) => [
+ q(6111) => [
q(Sanga (Democratic Republic of Congo)),
],
- q(6067) => [
+ q(6112) => [
q(Shinabo),
],
- q(6068) => [
+ q(6113) => [
q(Sensi),
],
- q(6069) => [
+ q(6114) => [
q(Riverain Sango),
],
- q(6070) => [
+ q(6115) => [
q(Sangil),
],
- q(6071) => [
+ q(6116) => [
q(Southern Ma'di),
],
- q(6072) => [
+ q(6117) => [
q(Siona),
],
- q(6073) => [
+ q(6118) => [
q(Snohomish),
],
- q(6074) => [
+ q(6119) => [
q(Siane),
],
- q(6075) => [
+ q(6120) => [
q(Sangu (Gabon)),
],
- q(6076) => [
+ q(6121) => [
q(Sihan),
],
- q(6077) => [
+ q(6122) => [
q(South West Bay),
q(Nahavaq),
],
- q(6078) => [
+ q(6123) => [
q(Senggi),
q(Viid),
],
- q(6079) => [
+ q(6124) => [
q(Sa'ban),
],
- q(6080) => [
+ q(6125) => [
q(Selee),
],
- q(6081) => [
+ q(6126) => [
q(Sam),
],
- q(6082) => [
+ q(6127) => [
q(Saniyo-Hiyewe),
],
- q(6083) => [
+ q(6128) => [
q(Sinsauru),
],
- q(6084) => [
+ q(6129) => [
q(Thai Song),
],
- q(6085) => [
+ q(6130) => [
q(Sobei),
],
- q(6086) => [
+ q(6131) => [
q(So (Democratic Republic of Congo)),
],
- q(6087) => [
+ q(6132) => [
q(Songoora),
],
- q(6088) => [
+ q(6133) => [
q(Songomeno),
],
- q(6089) => [
+ q(6134) => [
q(Aka),
],
- q(6090) => [
+ q(6135) => [
q(Sonha),
],
- q(6091) => [
+ q(6136) => [
q(Soi),
],
- q(6092) => [
+ q(6137) => [
q(Sokoro),
],
- q(6093) => [
+ q(6138) => [
q(Solos),
],
- q(6094) => [
+ q(6139) => [
q(Songo),
],
- q(6095) => [
+ q(6140) => [
q(Songe),
],
- q(6096) => [
+ q(6141) => [
q(Kanasi),
],
- q(6097) => [
+ q(6142) => [
q(Somrai),
],
- q(6098) => [
+ q(6143) => [
q(Seeku),
],
- q(6099) => [
+ q(6144) => [
q(Southern Thai),
],
- q(6100) => [
+ q(6145) => [
q(Sonsorol),
],
- q(6101) => [
+ q(6146) => [
q(Sowanda),
],
- q(6102) => [
- q(So (Cameroon)),
+ q(6147) => [
+ q(Swo),
],
- q(6103) => [
+ q(6148) => [
q(Miyobe),
],
- q(6104) => [
+ q(6149) => [
q(Temi),
],
- q(6105) => [
+ q(6150) => [
q(Sepa (Indonesia)),
],
- q(6106) => [
+ q(6151) => [
q(Sape),
],
- q(6107) => [
+ q(6152) => [
q(Saep),
],
- q(6108) => [
+ q(6153) => [
q(Sepa (Papua New Guinea)),
],
- q(6109) => [
+ q(6154) => [
q(Sian),
],
- q(6110) => [
+ q(6155) => [
q(Saponi),
],
- q(6111) => [
+ q(6156) => [
q(Sengo),
],
- q(6112) => [
+ q(6157) => [
q(Selepet),
],
- q(6113) => [
- q(Sepen),
+ q(6158) => [
+ q(Akukem),
],
- q(6114) => [
+ q(6159) => [
q(Spokane),
],
- q(6115) => [
+ q(6160) => [
q(Supyire Senoufo),
],
- q(6116) => [
+ q(6161) => [
q(Loreto-Ucayali Spanish),
],
- q(6117) => [
+ q(6162) => [
q(Saparua),
],
- q(6118) => [
+ q(6163) => [
q(Saposa),
],
- q(6119) => [
+ q(6164) => [
q(Spiti Bhoti),
],
- q(6120) => [
+ q(6165) => [
q(Sapuan),
],
- q(6121) => [
+ q(6166) => [
+ q(Sambalpuri),
+ q(Kosli),
+ ],
+ q(6167) => [
q(South Picene),
],
- q(6122) => [
+ q(6168) => [
q(Sabaot),
],
- q(6123) => [
+ q(6169) => [
q(Shama-Sambuga),
],
- q(6124) => [
+ q(6170) => [
q(Shau),
],
- q(6125) => [
+ q(6171) => [
+ q(Albanian Sign Language),
+ ],
+ q(6172) => [
q(Suma),
],
- q(6126) => [
+ q(6173) => [
q(Susquehannock),
],
- q(6127) => [
+ q(6174) => [
q(Sorkhei),
],
- q(6128) => [
+ q(6175) => [
q(Sou),
],
- q(6129) => [
+ q(6176) => [
q(Siculo Arabic),
],
- q(6130) => [
+ q(6177) => [
q(Sri Lankan Sign Language),
],
- q(6131) => [
+ q(6178) => [
q(Soqotri),
],
- q(6132) => [
+ q(6179) => [
q(Squamish),
],
- q(6133) => [
+ q(6180) => [
q(Saruga),
],
- q(6134) => [
+ q(6181) => [
q(Sora),
],
- q(6135) => [
+ q(6182) => [
q(Logudorese Sardinian),
],
- q(6136) => [
+ q(6183) => [
q(Sara),
],
- q(6137) => [
+ q(6184) => [
q(Nafi),
],
- q(6138) => [
+ q(6185) => [
q(Sulod),
],
- q(6139) => [
+ q(6186) => [
q(Sarikoli),
],
- q(6140) => [
+ q(6187) => [
q(Siriano),
],
- q(6141) => [
+ q(6188) => [
q(Serudung Murut),
],
- q(6142) => [
+ q(6189) => [
q(Isirawa),
],
- q(6143) => [
+ q(6190) => [
q(Saramaccan),
],
- q(6144) => [
+ q(6191) => [
q(Campidanese Sardinian),
],
- q(6145) => [
+ q(6192) => [
q(Siriono),
],
- q(6146) => [
+ q(6193) => [
q(Sarsi),
],
- q(6147) => [
+ q(6194) => [
q(Sauri),
],
- q(6148) => [
+ q(6195) => [
q(Surui),
],
- q(6149) => [
+ q(6196) => [
q(Southern Sorsoganon),
],
- q(6150) => [
+ q(6197) => [
q(Serua),
],
- q(6151) => [
+ q(6198) => [
q(Sirmauri),
],
- q(6152) => [
+ q(6199) => [
q(Sera),
],
- q(6153) => [
+ q(6200) => [
q(Shahmirzadi),
],
- q(6154) => [
+ q(6201) => [
q(Southern Sama),
],
- q(6155) => [
+ q(6202) => [
q(Suba-Simbiti),
],
- q(6156) => [
+ q(6203) => [
q(Siroi),
],
- q(6157) => [
+ q(6204) => [
q(Balangingi),
q(Bangingih Sama),
],
- q(6158) => [
+ q(6205) => [
q(Thao),
],
- q(6159) => [
+ q(6206) => [
q(Seimat),
],
- q(6160) => [
+ q(6207) => [
q(Shihhi Arabic),
],
- q(6161) => [
+ q(6208) => [
q(Sansi),
],
- q(6162) => [
+ q(6209) => [
q(Sausi),
],
- q(6163) => [
+ q(6210) => [
q(Sunam),
],
- q(6164) => [
+ q(6211) => [
q(Western Sisaala),
],
- q(6165) => [
+ q(6212) => [
q(Semnam),
],
- q(6166) => [
+ q(6213) => [
q(Waata),
],
- q(6167) => [
+ q(6214) => [
q(Sissano),
],
- q(6168) => [
+ q(6215) => [
q(Spanish Sign Language),
],
- q(6169) => [
+ q(6216) => [
q(So'a),
],
- q(6170) => [
+ q(6217) => [
q(Swiss-French Sign Language),
],
- q(6171) => [
+ q(6218) => [
q(So),
],
- q(6172) => [
+ q(6219) => [
q(Sinasina),
],
- q(6173) => [
+ q(6220) => [
q(Susuami),
],
- q(6174) => [
+ q(6221) => [
q(Shark Bay),
],
- q(6175) => [
+ q(6222) => [
q(Samberigi),
],
- q(6176) => [
+ q(6223) => [
q(Saho),
],
- q(6177) => [
+ q(6224) => [
q(Sengseng),
],
- q(6178) => [
+ q(6225) => [
q(Settla),
],
- q(6179) => [
+ q(6226) => [
q(Northern Subanen),
],
- q(6180) => [
+ q(6227) => [
q(Sentinel),
],
- q(6181) => [
+ q(6228) => [
q(Liana-Seti),
],
- q(6182) => [
+ q(6229) => [
q(Seta),
],
- q(6183) => [
+ q(6230) => [
q(Trieng),
],
- q(6184) => [
+ q(6231) => [
q(Shelta),
],
- q(6185) => [
+ q(6232) => [
q(Bulo Stieng),
],
- q(6186) => [
+ q(6233) => [
q(Matya Samo),
],
- q(6187) => [
+ q(6234) => [
q(Arammba),
],
- q(6188) => [
+ q(6235) => [
q(Stellingwerfs),
],
- q(6189) => [
+ q(6236) => [
q(Setaman),
],
- q(6190) => [
+ q(6237) => [
q(Owa),
],
- q(6191) => [
+ q(6238) => [
q(Stoney),
],
- q(6192) => [
+ q(6239) => [
q(Southeastern Tepehuan),
],
- q(6193) => [
+ q(6240) => [
q(Saterfriesisch),
],
- q(6194) => [
+ q(6241) => [
q(Straits Salish),
],
- q(6195) => [
+ q(6242) => [
q(Shumashti),
],
- q(6196) => [
+ q(6243) => [
q(Budeh Stieng),
],
- q(6197) => [
+ q(6244) => [
q(Samtao),
],
- q(6198) => [
+ q(6245) => [
q(Silt'e),
],
- q(6199) => [
+ q(6246) => [
q(Satawalese),
],
- q(6200) => [
+ q(6247) => [
q(Sulka),
],
- q(6201) => [
+ q(6248) => [
q(Suku),
],
- q(6202) => [
+ q(6249) => [
q(Western Subanon),
],
- q(6203) => [
+ q(6250) => [
q(Suena),
],
- q(6204) => [
+ q(6251) => [
q(Suganga),
],
- q(6205) => [
+ q(6252) => [
q(Suki),
],
- q(6206) => [
+ q(6253) => [
q(Shubi),
],
- q(6207) => [
+ q(6254) => [
q(Suri),
],
- q(6208) => [
+ q(6255) => [
q(Mwaghavul),
],
- q(6209) => [
+ q(6256) => [
q(Subtiaba),
],
- q(6210) => [
- q(Sulung),
+ q(6257) => [
+ q(Puroik),
],
- q(6211) => [
+ q(6258) => [
q(Sumbwa),
],
- q(6212) => [
+ q(6259) => [
q(Suya),
],
- q(6213) => [
+ q(6260) => [
q(Sunwar),
],
- q(6214) => [
+ q(6261) => [
q(Svan),
],
- q(6215) => [
+ q(6262) => [
q(Ulau-Suain),
],
- q(6216) => [
+ q(6263) => [
q(Vincentian Creole English),
],
- q(6217) => [
+ q(6264) => [
q(Serili),
],
- q(6218) => [
+ q(6265) => [
q(Slovakian Sign Language),
],
- q(6219) => [
+ q(6266) => [
q(Savara),
],
- q(6220) => [
+ q(6267) => [
q(Savosavo),
],
- q(6221) => [
+ q(6268) => [
q(Skalvian),
],
- q(6222) => [
+ q(6269) => [
q(Maore Comorian),
],
- q(6223) => [
+ q(6270) => [
q(Congo Swahili),
],
- q(6224) => [
+ q(6271) => [
q(Sere),
],
- q(6225) => [
+ q(6272) => [
q(Swabian),
],
- q(6226) => [
+ q(6273) => [
q(Swahili (individual language)),
q(Kiswahili),
],
- q(6227) => [
+ q(6274) => [
q(Sui),
],
- q(6228) => [
+ q(6275) => [
q(Sira),
],
- q(6229) => [
+ q(6276) => [
q(Malawi Sena),
],
- q(6230) => [
+ q(6277) => [
q(Swedish Sign Language),
],
- q(6231) => [
+ q(6278) => [
q(Samosa),
],
- q(6232) => [
+ q(6279) => [
q(Sawknah),
],
- q(6233) => [
+ q(6280) => [
q(Shanenawa),
],
- q(6234) => [
+ q(6281) => [
q(Suau),
],
- q(6235) => [
+ q(6282) => [
q(Sharwa),
],
- q(6236) => [
+ q(6283) => [
q(Saweru),
],
- q(6237) => [
+ q(6284) => [
q(Seluwasan),
],
- q(6238) => [
+ q(6285) => [
q(Sawila),
],
- q(6239) => [
+ q(6286) => [
q(Suwawa),
],
- q(6240) => [
+ q(6287) => [
q(Shekhawati),
],
- q(6241) => [
+ q(6288) => [
q(Sowa),
],
- q(6242) => [
+ q(6289) => [
q(Suruaha),
],
- q(6243) => [
+ q(6290) => [
q(Sarua),
],
- q(6244) => [
+ q(6291) => [
q(Suba),
],
- q(6245) => [
+ q(6292) => [
q(Sicanian),
],
- q(6246) => [
+ q(6293) => [
q(Sighu),
],
- q(6247) => [
+ q(6294) => [
q(Shixing),
],
- q(6248) => [
+ q(6295) => [
q(Southern Kalapuya),
],
- q(6249) => [
+ q(6296) => [
q(Selian),
],
- q(6250) => [
+ q(6297) => [
q(Samre),
],
- q(6251) => [
+ q(6298) => [
q(Sangir),
],
- q(6252) => [
+ q(6299) => [
q(Sorothaptic),
],
- q(6253) => [
+ q(6300) => [
q(Saaroa),
],
- q(6254) => [
+ q(6301) => [
q(Sasaru),
],
- q(6255) => [
+ q(6302) => [
q(Upper Saxon),
],
- q(6256) => [
+ q(6303) => [
q(Saxwe Gbe),
],
- q(6257) => [
+ q(6304) => [
q(Siang),
],
- q(6258) => [
+ q(6305) => [
q(Central Subanen),
],
- q(6259) => [
+ q(6306) => [
q(Seki),
],
- q(6260) => [
+ q(6307) => [
q(Sukur),
],
- q(6261) => [
+ q(6308) => [
q(Sylheti),
],
- q(6262) => [
+ q(6309) => [
q(Maya Samo),
],
- q(6263) => [
+ q(6310) => [
q(Senaya),
],
- q(6264) => [
+ q(6311) => [
q(Suoy),
],
- q(6265) => [
+ q(6312) => [
q(Sinyar),
],
- q(6266) => [
+ q(6313) => [
q(Kagate),
],
- q(6267) => [
+ q(6314) => [
q(Al-Sayyid Bedouin Sign Language),
],
- q(6268) => [
+ q(6315) => [
q(Semelai),
],
- q(6269) => [
+ q(6316) => [
q(Ngalum),
],
- q(6270) => [
+ q(6317) => [
q(Semaq Beri),
],
- q(6271) => [
+ q(6318) => [
q(Seru),
],
- q(6272) => [
+ q(6319) => [
q(Seze),
],
- q(6273) => [
+ q(6320) => [
q(Sengele),
],
- q(6274) => [
+ q(6321) => [
q(Silesian),
],
- q(6275) => [
+ q(6322) => [
q(Sula),
],
- q(6276) => [
+ q(6323) => [
q(Suabo),
],
- q(6277) => [
+ q(6324) => [
q(Isu (Fako Division)),
],
- q(6278) => [
+ q(6325) => [
q(Sawai),
],
- q(6279) => [
+ q(6326) => [
q(Lower Tanana),
],
- q(6280) => [
+ q(6327) => [
q(Tabassaran),
],
- q(6281) => [
+ q(6328) => [
q(Lowland Tarahumara),
],
- q(6282) => [
+ q(6329) => [
q(Tause),
],
- q(6283) => [
+ q(6330) => [
q(Tariana),
],
- q(6284) => [
+ q(6331) => [
q(Tapirape),
],
- q(6285) => [
+ q(6332) => [
q(Tagoi),
],
- q(6286) => [
+ q(6333) => [
q(Eastern Tamang),
],
- q(6287) => [
+ q(6334) => [
q(Tala),
],
- q(6288) => [
+ q(6335) => [
q(Tal),
],
- q(6289) => [
+ q(6336) => [
q(Tangale),
],
- q(6290) => [
+ q(6337) => [
q(Yami),
],
- q(6291) => [
+ q(6338) => [
q(Taabwa),
],
- q(6292) => [
+ q(6339) => [
q(Tamasheq),
],
- q(6293) => [
+ q(6340) => [
q(Central Tarahumara),
],
- q(6294) => [
+ q(6341) => [
q(Tay Boi),
],
- q(6295) => [
+ q(6342) => [
q(Upper Tanana),
],
- q(6296) => [
+ q(6343) => [
q(Tatuyo),
],
- q(6297) => [
+ q(6344) => [
q(Tai),
],
- q(6298) => [
+ q(6345) => [
q(Tamki),
],
- q(6299) => [
+ q(6346) => [
q(Atayal),
],
- q(6300) => [
+ q(6347) => [
q(Tocho),
],
- q(6301) => [
+ q(6348) => [
q(Aikana),
],
- q(6302) => [
+ q(6349) => [
q(Tapeba),
],
- q(6303) => [
+ q(6350) => [
q(Takia),
],
- q(6304) => [
+ q(6351) => [
q(Kaki Ae),
],
- q(6305) => [
+ q(6352) => [
q(Tanimbili),
],
- q(6306) => [
+ q(6353) => [
q(Mandara),
],
- q(6307) => [
+ q(6354) => [
q(North Tairora),
],
- q(6308) => [
+ q(6355) => [
q(Thurawal),
],
- q(6309) => [
+ q(6356) => [
q(Gaam),
],
- q(6310) => [
+ q(6357) => [
q(Tiang),
],
- q(6311) => [
+ q(6358) => [
q(Calamian Tagbanwa),
],
- q(6312) => [
+ q(6359) => [
q(Tboli),
],
- q(6313) => [
+ q(6360) => [
q(Tagbu),
],
- q(6314) => [
+ q(6361) => [
q(Barro Negro Tunebo),
],
- q(6315) => [
+ q(6362) => [
q(Tawala),
],
- q(6316) => [
+ q(6363) => [
q(Taworta),
q(Diebroud),
],
- q(6317) => [
+ q(6364) => [
q(Tumtum),
],
- q(6318) => [
+ q(6365) => [
q(Tanguat),
],
- q(6319) => [
+ q(6366) => [
q(Tembo (Kitembo)),
],
- q(6320) => [
+ q(6367) => [
q(Tubar),
],
- q(6321) => [
+ q(6368) => [
q(Tobo),
],
- q(6322) => [
+ q(6369) => [
q(Tagbanwa),
],
- q(6323) => [
+ q(6370) => [
q(Kapin),
],
- q(6324) => [
+ q(6371) => [
q(Tabaru),
],
- q(6325) => [
+ q(6372) => [
q(Ditammari),
],
- q(6326) => [
+ q(6373) => [
q(Ticuna),
],
- q(6327) => [
+ q(6374) => [
q(Tanacross),
],
- q(6328) => [
+ q(6375) => [
q(Datooga),
],
- q(6329) => [
+ q(6376) => [
q(Tafi),
],
- q(6330) => [
+ q(6377) => [
q(Southern Tutchone),
],
- q(6331) => [
+ q(6378) => [
q(Malinaltepec Me'phaa),
q(Malinaltepec Tlapanec),
],
- q(6332) => [
+ q(6379) => [
q(Tamagario),
],
- q(6333) => [
+ q(6380) => [
q(Turks And Caicos Creole English),
],
- q(6334) => [
+ q(6381) => [
q(Wara),
],
- q(6335) => [
+ q(6382) => [
q(Tchitchege),
],
- q(6336) => [
+ q(6383) => [
q(Taman (Myanmar)),
],
- q(6337) => [
+ q(6384) => [
q(Tanahmerah),
],
- q(6338) => [
+ q(6385) => [
q(Tichurong),
],
- q(6339) => [
+ q(6386) => [
q(Taungyo),
],
- q(6340) => [
+ q(6387) => [
q(Tawr Chin),
],
- q(6341) => [
+ q(6388) => [
q(Kaiy),
],
- q(6342) => [
+ q(6389) => [
q(Torres Strait Creole),
],
- q(6343) => [
+ q(6390) => [
q(T'en),
],
- q(6344) => [
+ q(6391) => [
q(Southeastern Tarahumara),
],
- q(6345) => [
+ q(6392) => [
q(Tecpatlan Totonac),
],
- q(6346) => [
+ q(6393) => [
q(Toda),
],
- q(6347) => [
+ q(6394) => [
q(Tulu),
],
- q(6348) => [
+ q(6395) => [
q(Thado Chin),
],
- q(6349) => [
+ q(6396) => [
q(Tagdal),
],
- q(6350) => [
+ q(6397) => [
q(Panchpargania),
],
- q(6351) => [
+ q(6398) => [
q(Embera-Tado),
],
- q(6352) => [
+ q(6399) => [
q(Tai Nua),
],
- q(6353) => [
+ q(6400) => [
q(Tiranige Diga Dogon),
],
- q(6354) => [
+ q(6401) => [
q(Talieng),
],
- q(6355) => [
+ q(6402) => [
q(Western Tamang),
],
- q(6356) => [
+ q(6403) => [
q(Thulung),
],
- q(6357) => [
+ q(6404) => [
q(Tomadino),
],
- q(6358) => [
+ q(6405) => [
q(Tajio),
],
- q(6359) => [
+ q(6406) => [
q(Tambas),
],
- q(6360) => [
+ q(6407) => [
q(Sur),
],
- q(6361) => [
+ q(6408) => [
q(Tondano),
],
- q(6362) => [
+ q(6409) => [
q(Teme),
],
- q(6363) => [
+ q(6410) => [
q(Tita),
],
- q(6364) => [
+ q(6411) => [
q(Todrah),
],
- q(6365) => [
+ q(6412) => [
q(Doutai),
],
- q(6366) => [
+ q(6413) => [
q(Tetun Dili),
],
- q(6367) => [
+ q(6414) => [
q(Tempasuk Dusun),
],
- q(6368) => [
+ q(6415) => [
q(Toro),
],
- q(6369) => [
+ q(6416) => [
q(Tandroy-Mahafaly Malagasy),
],
- q(6370) => [
+ q(6417) => [
q(Tadyawan),
],
- q(6371) => [
+ q(6418) => [
q(Temiar),
],
- q(6372) => [
+ q(6419) => [
q(Tetete),
],
- q(6373) => [
+ q(6420) => [
q(Terik),
],
- q(6374) => [
+ q(6421) => [
q(Tepo Krumen),
],
- q(6375) => [
+ q(6422) => [
q(Huehuetla Tepehua),
],
- q(6376) => [
+ q(6423) => [
q(Teressa),
],
- q(6377) => [
+ q(6424) => [
q(Teke-Tege),
],
- q(6378) => [
+ q(6425) => [
q(Tehuelche),
],
- q(6379) => [
+ q(6426) => [
q(Torricelli),
],
- q(6380) => [
+ q(6427) => [
q(Ibali Teke),
],
- q(6381) => [
+ q(6428) => [
q(Tama (Colombia)),
],
- q(6382) => [
+ q(6429) => [
q(Teso),
],
- q(6383) => [
+ q(6430) => [
q(Tepecano),
],
- q(6384) => [
+ q(6431) => [
q(Temein),
],
- q(6385) => [
+ q(6432) => [
q(Tengger),
],
- q(6386) => [
+ q(6433) => [
q(Soo),
],
- q(6387) => [
+ q(6434) => [
q(Teor),
],
- q(6388) => [
+ q(6435) => [
q(Tewa (USA)),
],
- q(6389) => [
+ q(6436) => [
q(Tennet),
],
- q(6390) => [
+ q(6437) => [
q(Tulishi),
],
- q(6391) => [
+ q(6438) => [
q(Tofin Gbe),
],
- q(6392) => [
+ q(6439) => [
q(Tanaina),
],
- q(6393) => [
+ q(6440) => [
q(Tefaro),
],
- q(6394) => [
+ q(6441) => [
q(Teribe),
],
- q(6395) => [
+ q(6442) => [
q(Ternate),
],
- q(6396) => [
+ q(6443) => [
q(Sagalla),
],
- q(6397) => [
+ q(6444) => [
q(Tobilung),
],
- q(6398) => [
+ q(6445) => [
q(Tigak),
],
- q(6399) => [
+ q(6446) => [
q(Ciwogai),
],
- q(6400) => [
+ q(6447) => [
q(Eastern Gorkha Tamang),
],
- q(6401) => [
+ q(6448) => [
q(Chalikha),
],
- q(6402) => [
+ q(6449) => [
q(Tangga),
],
- q(6403) => [
+ q(6450) => [
q(Tobagonian Creole English),
],
- q(6404) => [
+ q(6451) => [
q(Lawunuia),
],
- q(6405) => [
+ q(6452) => [
+ q(Tagin),
+ ],
+ q(6453) => [
q(Tandaganon),
],
- q(6406) => [
+ q(6454) => [
q(Sudest),
],
- q(6407) => [
+ q(6455) => [
q(Tangoa),
],
- q(6408) => [
+ q(6456) => [
q(Tring),
],
- q(6409) => [
+ q(6457) => [
q(Tareng),
],
- q(6410) => [
+ q(6458) => [
q(Nume),
],
- q(6411) => [
+ q(6459) => [
q(Central Tagbanwa),
],
- q(6412) => [
+ q(6460) => [
q(Tanggu),
],
- q(6413) => [
+ q(6461) => [
q(Tingui-Boto),
],
- q(6414) => [
+ q(6462) => [
q(Tagwana Senoufo),
],
- q(6415) => [
+ q(6463) => [
q(Tagish),
],
- q(6416) => [
+ q(6464) => [
q(Togoyo),
],
- q(6417) => [
+ q(6465) => [
+ q(Tagalaka),
+ ],
+ q(6466) => [
q(Tai Hang Tong),
],
- q(6418) => [
+ q(6467) => [
q(Thayore),
],
- q(6419) => [
+ q(6468) => [
q(Chitwania Tharu),
],
- q(6420) => [
+ q(6469) => [
q(Thangmi),
],
- q(6421) => [
+ q(6470) => [
q(Northern Tarahumara),
],
- q(6422) => [
+ q(6471) => [
q(Tai Long),
],
- q(6423) => [
+ q(6472) => [
q(Tharaka),
q(Kitharaka),
],
- q(6424) => [
+ q(6473) => [
q(Dangaura Tharu),
],
- q(6425) => [
+ q(6474) => [
q(Aheu),
],
- q(6426) => [
+ q(6475) => [
q(Thachanadan),
],
- q(6427) => [
+ q(6476) => [
q(Thompson),
],
- q(6428) => [
+ q(6477) => [
q(Kochila Tharu),
],
- q(6429) => [
+ q(6478) => [
q(Rana Tharu),
],
- q(6430) => [
+ q(6479) => [
q(Thakali),
],
- q(6431) => [
+ q(6480) => [
q(Tahltan),
],
- q(6432) => [
+ q(6481) => [
q(Thuri),
],
- q(6433) => [
+ q(6482) => [
q(Tahaggart Tamahaq),
],
- q(6434) => [
+ q(6483) => [
q(Thudam),
],
- q(6435) => [
+ q(6484) => [
q(The),
],
- q(6436) => [
+ q(6485) => [
q(Tha),
],
- q(6437) => [
+ q(6486) => [
q(Tayart Tamajeq),
],
- q(6438) => [
+ q(6487) => [
q(Tidikelt Tamazight),
],
- q(6439) => [
+ q(6488) => [
q(Tira),
],
- q(6440) => [
+ q(6489) => [
q(Tidong),
],
- q(6441) => [
+ q(6490) => [
q(Tifal),
],
- q(6442) => [
+ q(6491) => [
q(Timugon Murut),
],
- q(6443) => [
+ q(6492) => [
q(Tiene),
],
- q(6444) => [
+ q(6493) => [
q(Tilung),
],
- q(6445) => [
+ q(6494) => [
q(Tikar),
],
- q(6446) => [
+ q(6495) => [
q(Tillamook),
],
- q(6447) => [
+ q(6496) => [
q(Timbe),
],
- q(6448) => [
+ q(6497) => [
q(Tindi),
],
- q(6449) => [
+ q(6498) => [
q(Teop),
],
- q(6450) => [
+ q(6499) => [
q(Trimuris),
],
- q(6451) => [
+ q(6500) => [
q(Tiefo),
],
- q(6452) => [
+ q(6501) => [
q(Masadiit Itneg),
],
- q(6453) => [
+ q(6502) => [
q(Tinigua),
],
- q(6454) => [
+ q(6503) => [
q(Adasen),
],
- q(6455) => [
+ q(6504) => [
q(Tiwi),
],
- q(6456) => [
+ q(6505) => [
q(Southern Tiwa),
],
- q(6457) => [
+ q(6506) => [
q(Tiruray),
],
- q(6458) => [
+ q(6507) => [
q(Tai Hongjin),
],
- q(6459) => [
+ q(6508) => [
q(Tajuasohn),
],
- q(6460) => [
+ q(6509) => [
q(Tunjung),
],
- q(6461) => [
+ q(6510) => [
q(Northern Tujia),
],
- q(6462) => [
+ q(6511) => [
+ q(Tai Laing),
+ ],
+ q(6512) => [
q(Timucua),
],
- q(6463) => [
+ q(6513) => [
q(Tonjon),
],
- q(6464) => [
+ q(6514) => [
q(Temacine Tamazight),
],
- q(6465) => [
+ q(6515) => [
q(Southern Tujia),
],
- q(6466) => [
+ q(6516) => [
q(Tjurruru),
],
- q(6467) => [
+ q(6517) => [
q(Truka),
],
- q(6468) => [
+ q(6518) => [
q(Buksa),
],
- q(6469) => [
+ q(6519) => [
q(Tukudede),
],
- q(6470) => [
+ q(6520) => [
q(Takwane),
],
- q(6471) => [
+ q(6521) => [
q(Tukumanfed),
],
- q(6472) => [
+ q(6522) => [
q(Tesaka Malagasy),
],
- q(6473) => [
+ q(6523) => [
q(Takelma),
],
- q(6474) => [
+ q(6524) => [
q(Toku-No-Shima),
],
- q(6475) => [
+ q(6525) => [
q(Tikopia),
],
- q(6476) => [
+ q(6526) => [
q(Tee),
],
- q(6477) => [
+ q(6527) => [
q(Tsakhur),
],
- q(6478) => [
+ q(6528) => [
q(Takestani),
],
- q(6479) => [
+ q(6529) => [
q(Kathoriya Tharu),
],
- q(6480) => [
+ q(6530) => [
q(Upper Necaxa Totonac),
],
- q(6481) => [
+ q(6531) => [
q(Teanu),
],
- q(6482) => [
+ q(6532) => [
q(Tangko),
],
- q(6483) => [
+ q(6533) => [
q(Takua),
],
- q(6484) => [
+ q(6534) => [
q(Southwestern Tepehuan),
],
- q(6485) => [
+ q(6535) => [
q(Tobelo),
],
- q(6486) => [
+ q(6536) => [
q(Yecuatla Totonac),
],
- q(6487) => [
+ q(6537) => [
q(Talaud),
],
- q(6488) => [
+ q(6538) => [
q(Telefol),
],
- q(6489) => [
+ q(6539) => [
q(Tofanma),
],
- q(6490) => [
+ q(6540) => [
q(Talinga-Bwisi),
],
- q(6491) => [
+ q(6541) => [
q(Taloki),
],
- q(6492) => [
+ q(6542) => [
q(Tetela),
],
- q(6493) => [
+ q(6543) => [
q(Tolomako),
],
- q(6494) => [
+ q(6544) => [
q(Talondo'),
],
- q(6495) => [
+ q(6545) => [
q(Talodi),
],
- q(6496) => [
+ q(6546) => [
q(Filomena Mata-Coahuitlan Totonac),
],
- q(6497) => [
+ q(6547) => [
q(Tai Loi),
],
- q(6498) => [
+ q(6548) => [
q(Talise),
],
- q(6499) => [
+ q(6549) => [
q(Tambotalo),
],
- q(6500) => [
+ q(6550) => [
q(Teluti),
],
- q(6501) => [
+ q(6551) => [
q(Tulehu),
],
- q(6502) => [
+ q(6552) => [
q(Taliabu),
],
- q(6503) => [
- q(South Wemale),
- ],
- q(6504) => [
+ q(6553) => [
q(Khehek),
],
- q(6505) => [
+ q(6554) => [
q(Talysh),
],
- q(6506) => [
+ q(6555) => [
q(Tama (Chad)),
],
- q(6507) => [
+ q(6556) => [
q(Katbol),
q(Avava),
],
- q(6508) => [
+ q(6557) => [
q(Tumak),
],
- q(6509) => [
+ q(6558) => [
q(Haruai),
],
- q(6510) => [
+ q(6559) => [
q(Tremembe),
],
- q(6511) => [
+ q(6560) => [
q(Toba-Maskoy),
],
- q(6512) => [
+ q(6561) => [
q(Ternateno),
],
- q(6513) => [
+ q(6562) => [
q(Tutuba),
],
- q(6514) => [
+ q(6563) => [
q(Samarokena),
],
- q(6515) => [
+ q(6564) => [
q(Northwestern Tamang),
],
- q(6516) => [
+ q(6565) => [
q(Tamnim Citak),
],
- q(6517) => [
+ q(6566) => [
q(Tai Thanh),
],
- q(6518) => [
+ q(6567) => [
q(Taman (Indonesia)),
],
- q(6519) => [
+ q(6568) => [
q(Temoq),
],
- q(6520) => [
+ q(6569) => [
q(Tai Mene),
],
- q(6521) => [
+ q(6570) => [
q(Tumleo),
],
- q(6522) => [
+ q(6571) => [
q(Jewish Babylonian Aramaic (ca. 200-1200 CE)),
],
- q(6523) => [
+ q(6572) => [
q(Tima),
],
- q(6524) => [
+ q(6573) => [
q(Tasmate),
],
- q(6525) => [
+ q(6574) => [
q(Iau),
],
- q(6526) => [
+ q(6575) => [
q(Tembo (Motembo)),
],
- q(6527) => [
+ q(6576) => [
q(Temuan),
],
- q(6528) => [
+ q(6577) => [
q(Tami),
],
- q(6529) => [
+ q(6578) => [
q(Tamanaku),
],
- q(6530) => [
+ q(6579) => [
q(Tacana),
],
- q(6531) => [
+ q(6580) => [
q(Western Tunebo),
],
- q(6532) => [
+ q(6581) => [
q(Tanimuca-Retuara),
],
- q(6533) => [
+ q(6582) => [
q(Angosturas Tunebo),
],
- q(6534) => [
+ q(6583) => [
q(Tinoc Kallahan),
],
- q(6535) => [
+ q(6584) => [
q(Tobanga),
],
- q(6536) => [
+ q(6585) => [
q(Maiani),
],
- q(6537) => [
+ q(6586) => [
q(Tandia),
],
- q(6538) => [
+ q(6587) => [
q(Kwamera),
],
- q(6539) => [
+ q(6588) => [
q(Lenakel),
],
- q(6540) => [
+ q(6589) => [
q(Tabla),
],
- q(6541) => [
+ q(6590) => [
q(North Tanna),
],
- q(6542) => [
+ q(6591) => [
q(Toromono),
],
- q(6543) => [
+ q(6592) => [
q(Whitesands),
],
- q(6544) => [
+ q(6593) => [
q(Taino),
],
- q(6545) => [
+ q(6594) => [
q(Bedik),
],
- q(6546) => [
+ q(6595) => [
q(Tenis),
],
- q(6547) => [
+ q(6596) => [
q(Tontemboan),
],
- q(6548) => [
+ q(6597) => [
q(Tay Khang),
],
- q(6549) => [
+ q(6598) => [
q(Tangchangya),
],
- q(6550) => [
+ q(6599) => [
q(Tonsawang),
],
- q(6551) => [
+ q(6600) => [
q(Tanema),
],
- q(6552) => [
+ q(6601) => [
q(Tongwe),
],
- q(6553) => [
+ q(6602) => [
q(Tonga (Thailand)),
],
- q(6554) => [
+ q(6603) => [
q(Toba),
],
- q(6555) => [
+ q(6604) => [
q(Coyutla Totonac),
],
- q(6556) => [
+ q(6605) => [
q(Toma),
],
- q(6557) => [
+ q(6606) => [
q(Tomedes),
],
- q(6558) => [
+ q(6607) => [
q(Gizrra),
],
- q(6559) => [
+ q(6608) => [
q(Gitonga),
],
- q(6560) => [
+ q(6609) => [
q(Tonga (Zambia)),
],
- q(6561) => [
+ q(6610) => [
q(Tojolabal),
],
- q(6562) => [
+ q(6611) => [
q(Tolowa),
],
- q(6563) => [
+ q(6612) => [
q(Tombulu),
],
- q(6564) => [
+ q(6613) => [
q(Xicotepec De Juarez Totonac),
],
- q(6565) => [
+ q(6614) => [
q(Papantla Totonac),
],
- q(6566) => [
+ q(6615) => [
q(Toposa),
],
- q(6567) => [
+ q(6616) => [
q(Togbo-Vara Banda),
],
- q(6568) => [
+ q(6617) => [
q(Highland Totonac),
],
- q(6569) => [
+ q(6618) => [
q(Tho),
],
- q(6570) => [
+ q(6619) => [
q(Upper Taromi),
],
- q(6571) => [
+ q(6620) => [
q(Jemez),
],
- q(6572) => [
+ q(6621) => [
q(Tobian),
],
- q(6573) => [
+ q(6622) => [
q(Topoiyo),
],
- q(6574) => [
+ q(6623) => [
q(To),
],
- q(6575) => [
+ q(6624) => [
q(Taupota),
],
- q(6576) => [
+ q(6625) => [
q(Azoyu Me'phaa),
q(Azoyu Tlapanec),
],
- q(6577) => [
+ q(6626) => [
q(Tippera),
],
- q(6578) => [
+ q(6627) => [
q(Tarpia),
],
- q(6579) => [
+ q(6628) => [
q(Kula),
],
- q(6580) => [
+ q(6629) => [
q(Tapiete),
],
- q(6581) => [
+ q(6630) => [
q(Tupinikin),
],
- q(6582) => [
+ q(6631) => [
q(Tlacoapa Me'phaa),
q(Tlacoapa Tlapanec),
],
- q(6583) => [
+ q(6632) => [
q(Tampulma),
],
- q(6584) => [
+ q(6633) => [
q(Tupinamba),
],
- q(6585) => [
+ q(6634) => [
q(Tai Pao),
],
- q(6586) => [
+ q(6635) => [
q(Pisaflores Tepehua),
],
- q(6587) => [
+ q(6636) => [
q(Tukpa),
],
- q(6588) => [
+ q(6637) => [
q(Tupari),
],
- q(6589) => [
+ q(6638) => [
q(Tlachichilco Tepehua),
],
- q(6590) => [
+ q(6639) => [
q(Tampuan),
],
- q(6591) => [
+ q(6640) => [
q(Tanapag),
],
- q(6592) => [
+ q(6641) => [
q(Tupi),
],
- q(6593) => [
+ q(6642) => [
q(Acatepec Me'phaa),
q(Acatepec Tlapanec),
],
- q(6594) => [
+ q(6643) => [
q(Trumai),
],
- q(6595) => [
+ q(6644) => [
q(Tinputz),
],
- q(6596) => [
+ q(6645) => [
q(Tembe),
],
- q(6597) => [
+ q(6646) => [
q(Lehali),
],
- q(6598) => [
+ q(6647) => [
q(Turumsa),
],
- q(6599) => [
+ q(6648) => [
q(Tenino),
],
- q(6600) => [
+ q(6649) => [
q(Toaripi),
],
- q(6601) => [
+ q(6650) => [
q(Tomoip),
],
- q(6602) => [
+ q(6651) => [
q(Tunni),
],
- q(6603) => [
+ q(6652) => [
q(Torona),
],
- q(6604) => [
+ q(6653) => [
q(Western Totonac),
],
- q(6605) => [
+ q(6654) => [
q(Touo),
],
- q(6606) => [
+ q(6655) => [
q(Tonkawa),
],
- q(6607) => [
+ q(6656) => [
q(Tirahi),
],
- q(6608) => [
+ q(6657) => [
q(Terebu),
],
- q(6609) => [
+ q(6658) => [
q(Copala Triqui),
],
- q(6610) => [
+ q(6659) => [
q(Turi),
],
- q(6611) => [
+ q(6660) => [
q(East Tarangan),
],
- q(6612) => [
+ q(6661) => [
q(Trinidadian Creole English),
],
- q(6613) => [
+ q(6662) => [
q(Lishan Didan),
],
- q(6614) => [
+ q(6663) => [
q(Turaka),
],
- q(6615) => [
+ q(6664) => [
q(Trio),
],
- q(6616) => [
+ q(6665) => [
q(Toram),
],
- q(6617) => [
+ q(6666) => [
q(Traveller Scottish),
],
- q(6618) => [
+ q(6667) => [
q(Tregami),
],
- q(6619) => [
+ q(6668) => [
q(Trinitario),
],
- q(6620) => [
+ q(6669) => [
q(Tarao Naga),
],
- q(6621) => [
+ q(6670) => [
q(Kok Borok),
],
- q(6622) => [
+ q(6671) => [
q(San Martin Itunyoso Triqui),
],
- q(6623) => [
+ q(6672) => [
q(Taushiro),
],
- q(6624) => [
+ q(6673) => [
q(Chicahuaxtla Triqui),
],
- q(6625) => [
+ q(6674) => [
q(Tunggare),
],
- q(6626) => [
+ q(6675) => [
q(Turoyo),
+ q(Surayt),
],
- q(6627) => [
+ q(6676) => [
q(Taroko),
],
- q(6628) => [
+ q(6677) => [
q(Torwali),
],
- q(6629) => [
+ q(6678) => [
q(Tringgus-Sembaan Bidayuh),
],
- q(6630) => [
+ q(6679) => [
q(Turung),
],
- q(6631) => [
+ q(6680) => [
q(Tora),
],
- q(6632) => [
+ q(6681) => [
q(Tsaangi),
],
- q(6633) => [
+ q(6682) => [
q(Tsamai),
],
- q(6634) => [
+ q(6683) => [
q(Tswa),
],
- q(6635) => [
+ q(6684) => [
q(Tsakonian),
],
- q(6636) => [
+ q(6685) => [
q(Tunisian Sign Language),
],
- q(6637) => [
+ q(6686) => [
q(Southwestern Tamang),
],
- q(6638) => [
+ q(6687) => [
q(Tausug),
],
- q(6639) => [
+ q(6688) => [
q(Tsuvan),
],
- q(6640) => [
+ q(6689) => [
q(Tshangla),
],
- q(6641) => [
+ q(6690) => [
q(Tseku),
],
- q(6642) => [
+ q(6691) => [
q(Ts'un-Lao),
],
- q(6643) => [
+ q(6692) => [
q(Turkish Sign Language),
q(Turk Isaret Dili),
],
- q(6644) => [
+ q(6693) => [
q(Northern Toussian),
],
- q(6645) => [
+ q(6694) => [
q(Thai Sign Language),
],
- q(6646) => [
+ q(6695) => [
q(Akei),
],
- q(6647) => [
+ q(6696) => [
q(Taiwan Sign Language),
],
- q(6648) => [
+ q(6697) => [
q(Tondi Songway Kiini),
],
- q(6649) => [
+ q(6698) => [
q(Tsou),
],
- q(6650) => [
+ q(6699) => [
q(Tsogo),
],
- q(6651) => [
+ q(6700) => [
q(Tsishingini),
],
- q(6652) => [
+ q(6701) => [
q(Mubami),
],
- q(6653) => [
+ q(6702) => [
q(Tebul Sign Language),
],
- q(6654) => [
+ q(6703) => [
q(Purepecha),
],
- q(6655) => [
+ q(6704) => [
q(Tutelo),
],
- q(6656) => [
+ q(6705) => [
q(Gaa),
],
- q(6657) => [
+ q(6706) => [
q(Tektiteko),
],
- q(6658) => [
+ q(6707) => [
q(Tauade),
],
- q(6659) => [
+ q(6708) => [
q(Bwanabwana),
],
- q(6660) => [
+ q(6709) => [
q(Tuotomb),
],
- q(6661) => [
+ q(6710) => [
q(Tutong),
],
- q(6662) => [
+ q(6711) => [
q(Upper Ta'oih),
],
- q(6663) => [
+ q(6712) => [
q(Tobati),
],
- q(6664) => [
+ q(6713) => [
q(Tooro),
],
- q(6665) => [
+ q(6714) => [
q(Totoro),
],
- q(6666) => [
+ q(6715) => [
q(Totela),
],
- q(6667) => [
+ q(6716) => [
q(Northern Tutchone),
],
- q(6668) => [
+ q(6717) => [
q(Towei),
],
- q(6669) => [
+ q(6718) => [
q(Lower Ta'oih),
],
- q(6670) => [
+ q(6719) => [
q(Tombelala),
],
- q(6671) => [
+ q(6720) => [
q(Tawallammat Tamajaq),
],
- q(6672) => [
+ q(6721) => [
q(Tera),
],
- q(6673) => [
+ q(6722) => [
q(Northeastern Thai),
],
- q(6674) => [
+ q(6723) => [
q(Muslim Tat),
],
- q(6675) => [
+ q(6724) => [
q(Torau),
],
- q(6676) => [
+ q(6725) => [
q(Titan),
],
- q(6677) => [
+ q(6726) => [
q(Long Wat),
],
- q(6678) => [
+ q(6727) => [
q(Sikaritai),
],
- q(6679) => [
+ q(6728) => [
q(Tsum),
],
- q(6680) => [
+ q(6729) => [
q(Wiarumus),
],
- q(6681) => [
+ q(6730) => [
q(Tubatulabal),
],
- q(6682) => [
+ q(6731) => [
q(Mutu),
],
- q(6683) => [
+ q(6732) => [
q(Tuxa),
],
- q(6684) => [
+ q(6733) => [
q(Tuyuca),
],
- q(6685) => [
+ q(6734) => [
q(Central Tunebo),
],
- q(6686) => [
+ q(6735) => [
q(Tunia),
],
- q(6687) => [
+ q(6736) => [
q(Taulil),
],
- q(6688) => [
+ q(6737) => [
q(Tupuri),
],
- q(6689) => [
+ q(6738) => [
q(Tugutil),
],
- q(6690) => [
+ q(6739) => [
q(Tula),
],
- q(6691) => [
+ q(6740) => [
q(Tunica),
],
- q(6692) => [
+ q(6741) => [
q(Tucano),
],
- q(6693) => [
+ q(6742) => [
q(Tedaga),
],
- q(6694) => [
+ q(6743) => [
q(Tuscarora),
],
- q(6695) => [
+ q(6744) => [
q(Tututni),
],
- q(6696) => [
+ q(6745) => [
q(Turkana),
],
- q(6697) => [
+ q(6746) => [
q(Tuxinawa),
],
- q(6698) => [
+ q(6747) => [
q(Tugen),
],
- q(6699) => [
+ q(6748) => [
q(Turka),
],
- q(6700) => [
+ q(6749) => [
q(Vaghua),
],
- q(6701) => [
+ q(6750) => [
q(Tsuvadi),
],
- q(6702) => [
+ q(6751) => [
q(Te'un),
],
- q(6703) => [
+ q(6752) => [
q(Southeast Ambrym),
],
- q(6704) => [
+ q(6753) => [
q(Tela-Masbuar),
],
- q(6705) => [
+ q(6754) => [
q(Tavoyan),
],
- q(6706) => [
+ q(6755) => [
q(Tidore),
],
- q(6707) => [
+ q(6756) => [
q(Taveta),
],
- q(6708) => [
+ q(6757) => [
q(Tutsa Naga),
],
- q(6709) => [
+ q(6758) => [
+ q(Tunen),
+ ],
+ q(6759) => [
q(Sedoa),
],
- q(6710) => [
+ q(6760) => [
q(Timor Pidgin),
],
- q(6711) => [
+ q(6761) => [
q(Twana),
],
- q(6712) => [
+ q(6762) => [
q(Western Tawbuid),
],
- q(6713) => [
+ q(6763) => [
q(Teshenawa),
],
- q(6714) => [
+ q(6764) => [
q(Twents),
],
- q(6715) => [
+ q(6765) => [
q(Tewa (Indonesia)),
],
- q(6716) => [
+ q(6766) => [
q(Northern Tiwa),
],
- q(6717) => [
+ q(6767) => [
q(Tereweng),
],
- q(6718) => [
+ q(6768) => [
q(Tai Don),
],
- q(6719) => [
+ q(6769) => [
q(Tawara),
],
- q(6720) => [
+ q(6770) => [
q(Tawang Monpa),
],
- q(6721) => [
+ q(6771) => [
q(Twendi),
],
- q(6722) => [
+ q(6772) => [
q(Tswapong),
],
- q(6723) => [
+ q(6773) => [
q(Ere),
],
- q(6724) => [
+ q(6774) => [
q(Tasawaq),
],
- q(6725) => [
+ q(6775) => [
q(Southwestern Tarahumara),
],
- q(6726) => [
+ q(6776) => [
q(Turiwara),
],
- q(6727) => [
+ q(6777) => [
q(Termanu),
],
- q(6728) => [
+ q(6778) => [
q(Tuwari),
],
- q(6729) => [
+ q(6779) => [
q(Tewe),
],
- q(6730) => [
+ q(6780) => [
q(Tawoyan),
],
- q(6731) => [
+ q(6781) => [
q(Tombonuo),
],
- q(6732) => [
+ q(6782) => [
q(Tokharian B),
],
- q(6733) => [
+ q(6783) => [
q(Tsetsaut),
],
- q(6734) => [
+ q(6784) => [
q(Totoli),
],
- q(6735) => [
+ q(6785) => [
q(Tangut),
],
- q(6736) => [
+ q(6786) => [
q(Thracian),
],
- q(6737) => [
+ q(6787) => [
q(Ikpeng),
],
- q(6738) => [
+ q(6788) => [
q(Tomini),
],
- q(6739) => [
+ q(6789) => [
q(West Tarangan),
],
- q(6740) => [
+ q(6790) => [
q(Toto),
],
- q(6741) => [
+ q(6791) => [
q(Tii),
],
- q(6742) => [
+ q(6792) => [
q(Tartessian),
],
- q(6743) => [
+ q(6793) => [
q(Tonsea),
],
- q(6744) => [
+ q(6794) => [
q(Citak),
],
- q(6745) => [
+ q(6795) => [
q(Kayapo),
],
- q(6746) => [
+ q(6796) => [
q(Tatana),
],
- q(6747) => [
+ q(6797) => [
q(Tanosy Malagasy),
],
- q(6748) => [
+ q(6798) => [
q(Tauya),
],
- q(6749) => [
+ q(6799) => [
q(Kyenga),
],
- q(6750) => [
+ q(6800) => [
q(O'du),
],
- q(6751) => [
+ q(6801) => [
q(Teke-Tsaayi),
],
- q(6752) => [
+ q(6802) => [
q(Tai Do),
],
- q(6753) => [
+ q(6803) => [
q(Thu Lao),
],
- q(6754) => [
+ q(6804) => [
q(Kombai),
],
- q(6755) => [
+ q(6805) => [
q(Thaypan),
],
- q(6756) => [
+ q(6806) => [
q(Tai Daeng),
],
- q(6757) => [
+ q(6807) => [
q(Tay Sa Pa),
],
- q(6758) => [
+ q(6808) => [
q(Tay Tac),
],
- q(6759) => [
+ q(6809) => [
q(Kua),
],
- q(6760) => [
+ q(6810) => [
q(Teke-Tyee),
],
- q(6761) => [
+ q(6811) => [
q(Tay),
],
- q(6762) => [
+ q(6812) => [
q(Tanzanian Sign Language),
],
- q(6763) => [
+ q(6813) => [
q(Tzeltal),
],
- q(6764) => [
+ q(6814) => [
q(Tz'utujil),
],
- q(6765) => [
+ q(6815) => [
q(Central Atlas Tamazight),
],
- q(6766) => [
+ q(6816) => [
q(Tugun),
],
- q(6767) => [
+ q(6817) => [
q(Tzotzil),
],
- q(6768) => [
+ q(6818) => [
q(Tabriak),
],
- q(6769) => [
+ q(6819) => [
q(Uamue),
],
- q(6770) => [
+ q(6820) => [
q(Kuan),
],
- q(6771) => [
+ q(6821) => [
q(Tairuma),
],
- q(6772) => [
+ q(6822) => [
q(Ubang),
],
- q(6773) => [
+ q(6823) => [
q(Ubi),
],
- q(6774) => [
+ q(6824) => [
q(Buhi'non Bikol),
],
- q(6775) => [
+ q(6825) => [
q(Ubir),
],
- q(6776) => [
+ q(6826) => [
q(Umbu-Ungu),
],
- q(6777) => [
+ q(6827) => [
q(Ubykh),
],
- q(6778) => [
+ q(6828) => [
q(Uda),
],
- q(6779) => [
+ q(6829) => [
q(Udihe),
],
- q(6780) => [
+ q(6830) => [
q(Muduga),
],
- q(6781) => [
+ q(6831) => [
q(Udi),
],
- q(6782) => [
+ q(6832) => [
q(Ujir),
],
- q(6783) => [
+ q(6833) => [
q(Wuzlam),
],
- q(6784) => [
+ q(6834) => [
q(Uduk),
],
- q(6785) => [
+ q(6835) => [
q(Kioko),
],
- q(6786) => [
+ q(6836) => [
q(Ufim),
],
- q(6787) => [
+ q(6837) => [
q(Kuku-Ugbanh),
],
- q(6788) => [
+ q(6838) => [
q(Ughele),
],
- q(6789) => [
+ q(6839) => [
q(Ugandan Sign Language),
],
- q(6790) => [
+ q(6840) => [
q(Ugong),
],
- q(6791) => [
+ q(6841) => [
q(Uruguayan Sign Language),
],
- q(6792) => [
+ q(6842) => [
q(Uhami),
],
- q(6793) => [
+ q(6843) => [
q(Damal),
],
- q(6794) => [
+ q(6844) => [
q(Uisai),
],
- q(6795) => [
+ q(6845) => [
q(Iyive),
],
- q(6796) => [
+ q(6846) => [
q(Tanjijili),
],
- q(6797) => [
+ q(6847) => [
q(Kaburi),
],
- q(6798) => [
+ q(6848) => [
q(Ukuriguma),
],
- q(6799) => [
+ q(6849) => [
q(Ukhwejo),
],
- q(6800) => [
+ q(6850) => [
q(Ukrainian Sign Language),
],
- q(6801) => [
+ q(6851) => [
q(Ukpe-Bayobiri),
],
- q(6802) => [
+ q(6852) => [
q(Ukwa),
],
- q(6803) => [
+ q(6853) => [
q(Urubu-Kaapor Sign Language),
q(Kaapor Sign Language),
],
- q(6804) => [
+ q(6854) => [
q(Ukue),
],
- q(6805) => [
+ q(6855) => [
q(Ukwuani-Aboh-Ndoni),
],
- q(6806) => [
+ q(6856) => [
+ q(Kuuk-Yak),
+ ],
+ q(6857) => [
q(Fungwa),
],
- q(6807) => [
+ q(6858) => [
q(Ulukwumi),
],
- q(6808) => [
+ q(6859) => [
q(Ulch),
],
- q(6809) => [
+ q(6860) => [
q(Usku),
q(Afra),
],
- q(6810) => [
+ q(6861) => [
q(Ulithian),
],
- q(6811) => [
+ q(6862) => [
q(Meriam),
],
- q(6812) => [
+ q(6863) => [
q(Ullatan),
],
- q(6813) => [
+ q(6864) => [
q(Ulumanda'),
],
- q(6814) => [
+ q(6865) => [
q(Unserdeutsch),
],
- q(6815) => [
+ q(6866) => [
q(Uma' Lung),
],
- q(6816) => [
+ q(6867) => [
q(Ulwa),
],
- q(6817) => [
+ q(6868) => [
q(Umatilla),
],
- q(6818) => [
+ q(6869) => [
q(Marrucinian),
],
- q(6819) => [
+ q(6870) => [
q(Umbindhamu),
],
- q(6820) => [
+ q(6871) => [
q(Umbuygamu),
],
- q(6821) => [
+ q(6872) => [
q(Ukit),
],
- q(6822) => [
+ q(6873) => [
q(Umon),
],
- q(6823) => [
+ q(6874) => [
q(Makyan Naga),
],
- q(6824) => [
+ q(6875) => [
q(Umotina),
],
- q(6825) => [
+ q(6876) => [
q(Umpila),
],
- q(6826) => [
+ q(6877) => [
q(Umbugarla),
],
- q(6827) => [
+ q(6878) => [
q(Pendau),
],
- q(6828) => [
+ q(6879) => [
q(Munsee),
],
- q(6829) => [
+ q(6880) => [
q(North Watut),
],
- q(6830) => [
+ q(6881) => [
q(Uneme),
],
- q(6831) => [
+ q(6882) => [
q(Ngarinyin),
],
- q(6832) => [
+ q(6883) => [
q(Enawene-Nawe),
],
- q(6833) => [
+ q(6884) => [
q(Unami),
],
- q(6834) => [
- q(Worora),
- ],
- q(6835) => [
+ q(6885) => [
q(Mundari),
],
- q(6836) => [
+ q(6886) => [
q(Munda),
],
- q(6837) => [
+ q(6887) => [
q(Unde Kaili),
],
- q(6838) => [
+ q(6888) => [
q(Uokha),
],
- q(6839) => [
+ q(6889) => [
q(Umeda),
],
- q(6840) => [
+ q(6890) => [
q(Uripiv-Wala-Rano-Atchin),
],
- q(6841) => [
+ q(6891) => [
q(Urarina),
],
- q(6842) => [
+ q(6892) => [
q(Urubu-Kaapor),
q(Kaapor),
],
- q(6843) => [
+ q(6893) => [
q(Urningangg),
],
- q(6844) => [
+ q(6894) => [
q(Uru),
],
- q(6845) => [
+ q(6895) => [
q(Uradhi),
],
- q(6846) => [
+ q(6896) => [
q(Urigina),
],
- q(6847) => [
+ q(6897) => [
q(Urhobo),
],
- q(6848) => [
+ q(6898) => [
q(Urim),
],
- q(6849) => [
+ q(6899) => [
q(Urak Lawoi'),
],
- q(6850) => [
+ q(6900) => [
q(Urali),
],
- q(6851) => [
+ q(6901) => [
q(Urapmin),
],
- q(6852) => [
+ q(6902) => [
q(Uruangnirin),
],
- q(6853) => [
+ q(6903) => [
q(Ura (Papua New Guinea)),
],
- q(6854) => [
+ q(6904) => [
q(Uru-Pa-In),
],
- q(6855) => [
+ q(6905) => [
q(Lehalurup),
q(Loyop),
],
- q(6856) => [
+ q(6906) => [
q(Urat),
],
- q(6857) => [
+ q(6907) => [
q(Urumi),
],
- q(6858) => [
+ q(6908) => [
q(Uruava),
],
- q(6859) => [
+ q(6909) => [
q(Sop),
],
- q(6860) => [
+ q(6910) => [
q(Urimo),
],
- q(6861) => [
+ q(6911) => [
q(Orya),
],
- q(6862) => [
+ q(6912) => [
q(Uru-Eu-Wau-Wau),
],
- q(6863) => [
+ q(6913) => [
q(Usarufa),
],
- q(6864) => [
+ q(6914) => [
q(Ushojo),
],
- q(6865) => [
+ q(6915) => [
q(Usui),
],
- q(6866) => [
+ q(6916) => [
q(Usaghade),
],
- q(6867) => [
+ q(6917) => [
q(Uspanteco),
],
- q(6868) => [
+ q(6918) => [
q(Uya),
],
- q(6869) => [
+ q(6919) => [
q(Otank),
],
- q(6870) => [
+ q(6920) => [
q(Ute-Southern Paiute),
],
- q(6871) => [
+ q(6921) => [
q(Amba (Solomon Islands)),
],
- q(6872) => [
+ q(6922) => [
q(Etulo),
],
- q(6873) => [
+ q(6923) => [
q(Utu),
],
- q(6874) => [
+ q(6924) => [
q(Urum),
],
- q(6875) => [
+ q(6925) => [
q(Kulon-Pazeh),
],
- q(6876) => [
+ q(6926) => [
q(Ura (Vanuatu)),
],
- q(6877) => [
+ q(6927) => [
q(U),
],
- q(6878) => [
+ q(6928) => [
q(West Uvean),
],
- q(6879) => [
+ q(6929) => [
q(Uri),
],
- q(6880) => [
+ q(6930) => [
q(Lote),
],
- q(6881) => [
+ q(6931) => [
q(Kuku-Uwanh),
],
- q(6882) => [
+ q(6932) => [
q(Doko-Uyanga),
],
- q(6883) => [
+ q(6933) => [
q(Northern Uzbek),
],
- q(6884) => [
+ q(6934) => [
q(Southern Uzbek),
],
- q(6885) => [
+ q(6935) => [
q(Vaagri Booli),
],
- q(6886) => [
+ q(6936) => [
q(Vale),
],
- q(6887) => [
+ q(6937) => [
q(Vafsi),
],
- q(6888) => [
+ q(6938) => [
q(Vagla),
],
- q(6889) => [
+ q(6939) => [
q(Varhadi-Nagpuri),
],
- q(6890) => [
+ q(6940) => [
q(Vasekela Bushman),
],
- q(6891) => [
+ q(6941) => [
q(Vehes),
],
- q(6892) => [
+ q(6942) => [
q(Vanimo),
],
- q(6893) => [
+ q(6943) => [
q(Valman),
],
- q(6894) => [
+ q(6944) => [
q(Vao),
],
- q(6895) => [
+ q(6945) => [
q(Vaiphei),
],
- q(6896) => [
+ q(6946) => [
q(Huarijio),
],
- q(6897) => [
+ q(6947) => [
q(Vasavi),
],
- q(6898) => [
+ q(6948) => [
q(Vanuma),
],
- q(6899) => [
+ q(6949) => [
q(Varli),
],
- q(6900) => [
+ q(6950) => [
q(Wayu),
],
- q(6901) => [
+ q(6951) => [
q(Southeast Babar),
],
- q(6902) => [
+ q(6952) => [
q(Southwestern Bontok),
],
- q(6903) => [
+ q(6953) => [
q(Venetian),
],
- q(6904) => [
+ q(6954) => [
q(Veddah),
],
- q(6905) => [
+ q(6955) => [
q(Veluws),
],
- q(6906) => [
+ q(6956) => [
q(Vemgo-Mabas),
],
- q(6907) => [
+ q(6957) => [
q(Ventureno),
],
- q(6908) => [
+ q(6958) => [
q(Veps),
],
- q(6909) => [
+ q(6959) => [
q(Mom Jango),
],
- q(6910) => [
+ q(6960) => [
q(Vaghri),
],
- q(6911) => [
+ q(6961) => [
q(Vlaamse Gebarentaal),
q(Flemish Sign Language),
],
- q(6912) => [
+ q(6962) => [
q(Virgin Islands Creole English),
],
- q(6913) => [
+ q(6963) => [
q(Vidunda),
],
- q(6914) => [
+ q(6964) => [
q(Vili),
],
- q(6915) => [
+ q(6965) => [
q(Viemo),
],
- q(6916) => [
+ q(6966) => [
q(Vilela),
],
- q(6917) => [
+ q(6967) => [
q(Vinza),
],
- q(6918) => [
+ q(6968) => [
q(Vishavan),
],
- q(6919) => [
+ q(6969) => [
q(Viti),
],
- q(6920) => [
+ q(6970) => [
q(Iduna),
],
- q(6921) => [
+ q(6971) => [
q(Kariyarra),
],
- q(6922) => [
+ q(6972) => [
q(Ija-Zuba),
],
- q(6923) => [
+ q(6973) => [
q(Kujarge),
],
- q(6924) => [
+ q(6974) => [
q(Kaur),
],
- q(6925) => [
+ q(6975) => [
q(Kulisusu),
],
- q(6926) => [
+ q(6976) => [
q(Kamakan),
],
- q(6927) => [
+ q(6977) => [
q(Kodeoha),
],
- q(6928) => [
+ q(6978) => [
q(Korlai Creole Portuguese),
],
- q(6929) => [
+ q(6979) => [
q(Tenggarong Kutai Malay),
],
- q(6930) => [
+ q(6980) => [
q(Kurrama),
],
- q(6931) => [
+ q(6981) => [
q(Valpei),
],
- q(6932) => [
+ q(6982) => [
q(Vlaams),
],
- q(6933) => [
+ q(6983) => [
q(Martuyhunira),
],
- q(6934) => [
+ q(6984) => [
q(Mbabaram),
],
- q(6935) => [
+ q(6985) => [
q(Juxtlahuaca Mixtec),
],
- q(6936) => [
+ q(6986) => [
q(Mudu Koraga),
],
- q(6937) => [
+ q(6987) => [
q(East Masela),
],
- q(6938) => [
+ q(6988) => [
q(Mainfrankisch),
],
- q(6939) => [
+ q(6989) => [
q(Minigir),
],
- q(6940) => [
+ q(6990) => [
q(Maraghei),
],
- q(6941) => [
+ q(6991) => [
q(Miwa),
],
- q(6942) => [
+ q(6992) => [
q(Ixtayutla Mixtec),
],
- q(6943) => [
+ q(6993) => [
q(Makhuwa-Shirima),
],
- q(6944) => [
+ q(6994) => [
q(Malgana),
],
- q(6945) => [
+ q(6995) => [
q(Mitlatongo Mixtec),
],
- q(6946) => [
+ q(6996) => [
q(Soyaltepec Mazatec),
],
- q(6947) => [
+ q(6997) => [
q(Soyaltepec Mixtec),
],
- q(6948) => [
+ q(6998) => [
q(Marenje),
],
- q(6949) => [
+ q(6999) => [
q(Moksela),
],
- q(6950) => [
+ q(7000) => [
q(Muluridyi),
],
- q(6951) => [
+ q(7001) => [
q(Valley Maidu),
],
- q(6952) => [
+ q(7002) => [
q(Makhuwa),
],
- q(6953) => [
+ q(7003) => [
q(Tamazola Mixtec),
],
- q(6954) => [
+ q(7004) => [
q(Ayautla Mazatec),
],
- q(6955) => [
+ q(7005) => [
q(Mazatlan Mazatec),
],
- q(6956) => [
+ q(7006) => [
q(Vano),
q(Lovono),
],
- q(6957) => [
+ q(7007) => [
q(Vinmavis),
q(Neve'ei),
],
- q(6958) => [
+ q(7008) => [
q(Vunapu),
],
- q(6959) => [
+ q(7009) => [
q(Voro),
],
- q(6960) => [
+ q(7010) => [
q(Vera'a),
],
- q(6961) => [
+ q(7011) => [
q(Varisi),
],
- q(6962) => [
+ q(7012) => [
q(Burmbar),
q(Banam Bay),
],
- q(6963) => [
+ q(7013) => [
q(Moldova Sign Language),
],
- q(6964) => [
+ q(7014) => [
q(Venezuelan Sign Language),
],
- q(6965) => [
+ q(7015) => [
q(Valencian Sign Language),
q(Llengua de signes valenciana),
],
- q(6966) => [
+ q(7016) => [
q(Vitou),
],
- q(6967) => [
+ q(7017) => [
q(Vumbu),
],
- q(6968) => [
+ q(7018) => [
q(Vunjo),
],
- q(6969) => [
+ q(7019) => [
q(Vute),
],
- q(6970) => [
+ q(7020) => [
q(Awa (China)),
],
- q(6971) => [
+ q(7021) => [
q(Walla Walla),
],
- q(6972) => [
+ q(7022) => [
q(Wab),
],
- q(6973) => [
+ q(7023) => [
q(Wasco-Wishram),
],
- q(6974) => [
+ q(7024) => [
q(Wandamen),
],
- q(6975) => [
+ q(7025) => [
q(Walser),
],
- q(6976) => [
+ q(7026) => [
q(Wakona),
],
- q(6977) => [
+ q(7027) => [
q(Wa'ema),
],
- q(6978) => [
+ q(7028) => [
q(Watubela),
],
- q(6979) => [
+ q(7029) => [
q(Wares),
],
- q(6980) => [
+ q(7030) => [
q(Waffa),
],
- q(6981) => [
+ q(7031) => [
q(Wampanoag),
],
- q(6982) => [
+ q(7032) => [
q(Wan),
],
- q(6983) => [
+ q(7033) => [
q(Wappo),
],
- q(6984) => [
+ q(7034) => [
q(Wapishana),
],
- q(6985) => [
+ q(7035) => [
q(Wageman),
],
- q(6986) => [
+ q(7036) => [
q(Kaninuwa),
],
- q(6987) => [
+ q(7037) => [
q(Waura),
],
- q(6988) => [
+ q(7038) => [
q(Waka),
],
- q(6989) => [
+ q(7039) => [
q(Waiwai),
],
- q(6990) => [
+ q(7040) => [
q(Watam),
],
- q(6991) => [
+ q(7041) => [
q(Wayana),
],
- q(6992) => [
+ q(7042) => [
q(Wampur),
],
- q(6993) => [
+ q(7043) => [
q(Warao),
],
- q(6994) => [
+ q(7044) => [
q(Wabo),
],
- q(6995) => [
+ q(7045) => [
q(Waritai),
],
- q(6996) => [
+ q(7046) => [
q(Wanda),
],
- q(6997) => [
+ q(7047) => [
q(Vwanji),
],
- q(6998) => [
+ q(7048) => [
q(Alagwa),
],
- q(6999) => [
+ q(7049) => [
q(Waigali),
],
- q(7000) => [
+ q(7050) => [
q(Wakhi),
],
- q(7001) => [
+ q(7051) => [
q(Wa),
],
- q(7002) => [
+ q(7052) => [
q(Warlpiri),
],
- q(7003) => [
+ q(7053) => [
q(Waddar),
],
- q(7004) => [
+ q(7054) => [
q(Wagdi),
],
- q(7005) => [
+ q(7055) => [
q(Wanman),
],
- q(7006) => [
+ q(7056) => [
q(Wajarri),
],
- q(7007) => [
+ q(7057) => [
q(Woi),
],
- q(7008) => [
+ q(7058) => [
q(Yanomami),
],
- q(7009) => [
+ q(7059) => [
q(Waci Gbe),
],
- q(7010) => [
+ q(7060) => [
q(Wandji),
],
- q(7011) => [
+ q(7061) => [
q(Wadaginam),
],
- q(7012) => [
+ q(7062) => [
q(Wadjiginy),
],
- q(7013) => [
+ q(7063) => [
q(Wadjigu),
],
- q(7014) => [
+ q(7064) => [
q(Wewaw),
],
- q(7015) => [
+ q(7065) => [
q(We Western),
],
- q(7016) => [
+ q(7066) => [
q(Wedau),
],
- q(7017) => [
+ q(7067) => [
q(Weh),
],
- q(7018) => [
+ q(7068) => [
q(Kiunum),
],
- q(7019) => [
+ q(7069) => [
q(Weme Gbe),
],
- q(7020) => [
- q(North Wemale),
+ q(7070) => [
+ q(Wemale),
],
- q(7021) => [
+ q(7071) => [
q(Westphalien),
],
- q(7022) => [
+ q(7072) => [
q(Weri),
],
- q(7023) => [
+ q(7073) => [
q(Cameroon Pidgin),
],
- q(7024) => [
+ q(7074) => [
q(Perai),
],
- q(7025) => [
- q(Welaung),
+ q(7075) => [
+ q(Rawngtu Chin),
],
- q(7026) => [
+ q(7076) => [
q(Wejewa),
],
- q(7027) => [
+ q(7077) => [
q(Yafi),
q(Zorop),
],
- q(7028) => [
+ q(7078) => [
q(Wagaya),
],
- q(7029) => [
+ q(7079) => [
q(Wagawaga),
],
- q(7030) => [
+ q(7080) => [
q(Wangganguru),
],
- q(7031) => [
+ q(7081) => [
q(Wahgi),
],
- q(7032) => [
+ q(7082) => [
q(Waigeo),
],
- q(7033) => [
+ q(7083) => [
+ q(Wirangu),
+ ],
+ q(7084) => [
q(Warrgamay),
],
- q(7034) => [
+ q(7085) => [
q(Manusela),
],
- q(7035) => [
+ q(7086) => [
q(North Wahgi),
],
- q(7036) => [
+ q(7087) => [
q(Wahau Kenyah),
],
- q(7037) => [
+ q(7088) => [
q(Wahau Kayan),
],
- q(7038) => [
+ q(7089) => [
q(Southern Toussian),
],
- q(7039) => [
+ q(7090) => [
q(Wichita),
],
- q(7040) => [
+ q(7091) => [
q(Wik-Epa),
],
- q(7041) => [
+ q(7092) => [
q(Wik-Keyangan),
],
- q(7042) => [
+ q(7093) => [
q(Wik-Ngathana),
],
- q(7043) => [
+ q(7094) => [
q(Wik-Me'anha),
],
- q(7044) => [
+ q(7095) => [
q(Minidien),
],
- q(7045) => [
+ q(7096) => [
q(Wik-Iiyanh),
],
- q(7046) => [
+ q(7097) => [
q(Wikalkan),
],
- q(7047) => [
+ q(7098) => [
q(Wilawila),
],
- q(7048) => [
+ q(7099) => [
q(Wik-Mungkan),
],
- q(7049) => [
+ q(7100) => [
q(Ho-Chunk),
],
- q(7050) => [
+ q(7101) => [
q(Wirafed),
],
- q(7051) => [
+ q(7102) => [
q(Wintu),
],
- q(7052) => [
+ q(7103) => [
q(Wiru),
],
- q(7053) => [
- q(Muduapa),
- ],
- q(7054) => [
- q(Wirangu),
+ q(7104) => [
+ q(Vitu),
],
- q(7055) => [
+ q(7105) => [
q(Wiyot),
],
- q(7056) => [
+ q(7106) => [
q(Waja),
],
- q(7057) => [
+ q(7107) => [
q(Warji),
],
- q(7058) => [
+ q(7108) => [
q(Kw'adza),
],
- q(7059) => [
+ q(7109) => [
q(Kumbaran),
],
- q(7060) => [
+ q(7110) => [
q(Wakde),
q(Mo),
],
- q(7061) => [
+ q(7111) => [
q(Kalanadi),
],
- q(7062) => [
+ q(7112) => [
q(Kunduvadi),
],
- q(7063) => [
+ q(7113) => [
q(Wakawaka),
],
- q(7064) => [
+ q(7114) => [
q(Walio),
],
- q(7065) => [
+ q(7115) => [
q(Mwali Comorian),
],
- q(7066) => [
+ q(7116) => [
q(Wolane),
],
- q(7067) => [
+ q(7117) => [
q(Kunbarlang),
],
- q(7068) => [
+ q(7118) => [
q(Waioli),
],
- q(7069) => [
+ q(7119) => [
q(Wailaki),
],
- q(7070) => [
+ q(7120) => [
q(Wali (Sudan)),
],
- q(7071) => [
+ q(7121) => [
q(Middle Welsh),
],
- q(7072) => [
+ q(7122) => [
q(Wolio),
],
- q(7073) => [
+ q(7123) => [
q(Wailapa),
],
- q(7074) => [
+ q(7124) => [
q(Wallisian),
],
- q(7075) => [
+ q(7125) => [
q(Wuliwuli),
],
- q(7076) => [
+ q(7126) => [
q(Wichi Lhamtes Vejoz),
],
- q(7077) => [
+ q(7127) => [
q(Walak),
],
- q(7078) => [
+ q(7128) => [
q(Wali (Ghana)),
],
- q(7079) => [
+ q(7129) => [
q(Waling),
],
- q(7080) => [
+ q(7130) => [
q(Mawa (Nigeria)),
],
- q(7081) => [
+ q(7131) => [
q(Wambaya),
],
- q(7082) => [
+ q(7132) => [
q(Wamas),
],
- q(7083) => [
+ q(7133) => [
q(Mamainde),
],
- q(7084) => [
+ q(7134) => [
q(Wambule),
],
- q(7085) => [
+ q(7135) => [
q(Waima'a),
],
- q(7086) => [
+ q(7136) => [
q(Wamin),
],
- q(7087) => [
+ q(7137) => [
q(Maiwa (Indonesia)),
],
- q(7088) => [
+ q(7138) => [
q(Waamwang),
],
- q(7089) => [
+ q(7139) => [
q(Wom (Papua New Guinea)),
],
- q(7090) => [
+ q(7140) => [
q(Wambon),
],
- q(7091) => [
+ q(7141) => [
q(Walmajarri),
],
- q(7092) => [
+ q(7142) => [
q(Mwani),
],
- q(7093) => [
+ q(7143) => [
q(Womo),
],
- q(7094) => [
+ q(7144) => [
q(Wanambre),
],
- q(7095) => [
+ q(7145) => [
q(Wantoat),
],
- q(7096) => [
+ q(7146) => [
q(Wandarang),
],
- q(7097) => [
+ q(7147) => [
q(Waneci),
],
- q(7098) => [
+ q(7148) => [
q(Wanggom),
],
- q(7099) => [
+ q(7149) => [
q(Ndzwani Comorian),
],
- q(7100) => [
+ q(7150) => [
q(Wanukaka),
],
- q(7101) => [
+ q(7151) => [
q(Wanggamala),
],
- q(7102) => [
+ q(7152) => [
q(Wano),
],
- q(7103) => [
+ q(7153) => [
q(Wanap),
],
- q(7104) => [
+ q(7154) => [
q(Usan),
],
- q(7105) => [
+ q(7155) => [
+ q(Wanyi),
+ ],
+ q(7156) => [
q(Tyaraity),
],
- q(7106) => [
+ q(7157) => [
q(We Northern),
],
- q(7107) => [
+ q(7158) => [
q(Wogeo),
],
- q(7108) => [
+ q(7159) => [
q(Wolani),
],
- q(7109) => [
+ q(7160) => [
q(Woleaian),
],
- q(7110) => [
+ q(7161) => [
q(Gambian Wolof),
],
- q(7111) => [
+ q(7162) => [
q(Wogamusin),
],
- q(7112) => [
+ q(7163) => [
q(Kamang),
],
- q(7113) => [
+ q(7164) => [
q(Longto),
],
- q(7114) => [
+ q(7165) => [
q(Wom (Nigeria)),
],
- q(7115) => [
+ q(7166) => [
q(Wongo),
],
- q(7116) => [
+ q(7167) => [
q(Manombai),
],
- q(7117) => [
+ q(7168) => [
q(Woria),
],
- q(7118) => [
+ q(7169) => [
q(Hanga Hundi),
],
- q(7119) => [
+ q(7170) => [
q(Wawonii),
],
- q(7120) => [
+ q(7171) => [
q(Weyto),
],
- q(7121) => [
+ q(7172) => [
q(Maco),
],
- q(7122) => [
+ q(7173) => [
q(Warapu),
],
- q(7123) => [
+ q(7174) => [
q(Warluwara),
],
- q(7124) => [
+ q(7175) => [
q(Warduji),
],
- q(7125) => [
+ q(7176) => [
q(Warungu),
],
- q(7126) => [
+ q(7177) => [
q(Wiradhuri),
],
- q(7127) => [
+ q(7178) => [
q(Wariyangga),
],
- q(7128) => [
+ q(7179) => [
+ q(Garrwa),
+ ],
+ q(7180) => [
q(Warlmanpa),
],
- q(7129) => [
+ q(7181) => [
q(Warumungu),
],
- q(7130) => [
+ q(7182) => [
q(Warnang),
],
- q(7131) => [
+ q(7183) => [
+ q(Worrorra),
+ ],
+ q(7184) => [
q(Waropen),
],
- q(7132) => [
+ q(7185) => [
q(Wardaman),
],
- q(7133) => [
+ q(7186) => [
q(Waris),
],
- q(7134) => [
+ q(7187) => [
q(Waru),
],
- q(7135) => [
+ q(7188) => [
q(Waruna),
],
- q(7136) => [
+ q(7189) => [
q(Gugu Warra),
],
- q(7137) => [
+ q(7190) => [
q(Wae Rana),
],
- q(7138) => [
+ q(7191) => [
q(Merwari),
],
- q(7139) => [
+ q(7192) => [
q(Waray (Australia)),
],
- q(7140) => [
+ q(7193) => [
q(Warembori),
],
- q(7141) => [
+ q(7194) => [
q(Wusi),
],
- q(7142) => [
+ q(7195) => [
q(Waskia),
],
- q(7143) => [
+ q(7196) => [
q(Owenia),
],
- q(7144) => [
+ q(7197) => [
q(Wasa),
],
- q(7145) => [
+ q(7198) => [
q(Wasu),
],
- q(7146) => [
+ q(7199) => [
q(Wotapuri-Katarqalai),
],
- q(7147) => [
+ q(7200) => [
q(Watiwa),
],
- q(7148) => [
+ q(7201) => [
q(Berta),
],
- q(7149) => [
+ q(7202) => [
q(Watakataui),
],
- q(7150) => [
+ q(7203) => [
q(Mewati),
],
- q(7151) => [
+ q(7204) => [
q(Wotu),
],
- q(7152) => [
+ q(7205) => [
q(Wikngenchera),
],
- q(7153) => [
+ q(7206) => [
q(Wunambal),
],
- q(7154) => [
+ q(7207) => [
q(Wudu),
],
- q(7155) => [
+ q(7208) => [
q(Wutunhua),
],
- q(7156) => [
+ q(7209) => [
q(Silimo),
],
- q(7157) => [
+ q(7210) => [
q(Wumbvu),
],
- q(7158) => [
+ q(7211) => [
q(Bungu),
],
- q(7159) => [
+ q(7212) => [
q(Wurrugu),
],
- q(7160) => [
+ q(7213) => [
q(Wutung),
],
- q(7161) => [
+ q(7214) => [
q(Wu Chinese),
],
- q(7162) => [
+ q(7215) => [
q(Wuvulu-Aua),
],
- q(7163) => [
+ q(7216) => [
q(Wulna),
],
- q(7164) => [
+ q(7217) => [
q(Wauyai),
],
- q(7165) => [
+ q(7218) => [
q(Waama),
],
- q(7166) => [
+ q(7219) => [
+ q(Wakabunga),
+ ],
+ q(7220) => [
q(Wetamut),
q(Dorig),
],
- q(7167) => [
+ q(7221) => [
q(Warrwa),
],
- q(7168) => [
+ q(7222) => [
q(Wawa),
],
- q(7169) => [
+ q(7223) => [
q(Waxianghua),
],
- q(7170) => [
+ q(7224) => [
q(Wyandot),
],
- q(7171) => [
+ q(7225) => [
q(Wangaaybuwan-Ngiyambaa),
],
- q(7172) => [
+ q(7226) => [
q(Wymysorys),
],
- q(7173) => [
+ q(7227) => [
q(Wayoro),
],
- q(7174) => [
+ q(7228) => [
q(Western Fijian),
],
- q(7175) => [
+ q(7229) => [
q(Andalusian Arabic),
],
- q(7176) => [
+ q(7230) => [
q(Sambe),
],
- q(7177) => [
+ q(7231) => [
q(Kachari),
],
- q(7178) => [
+ q(7232) => [
q(Adai),
],
- q(7179) => [
+ q(7233) => [
q(Aequian),
],
- q(7180) => [
+ q(7234) => [
q(Aghwan),
],
- q(7181) => [
+ q(7235) => [
q(Kaimbe),
],
- q(7182) => [
+ q(7236) => [
q(/Xam),
],
- q(7183) => [
+ q(7237) => [
q(Xamtanga),
],
- q(7184) => [
+ q(7238) => [
q(Khao),
],
- q(7185) => [
+ q(7239) => [
q(Apalachee),
],
- q(7186) => [
+ q(7240) => [
q(Aquitanian),
],
- q(7187) => [
+ q(7241) => [
q(Karami),
],
- q(7188) => [
+ q(7242) => [
q(Kamas),
],
- q(7189) => [
+ q(7243) => [
q(Katawixi),
],
- q(7190) => [
+ q(7244) => [
q(Kauwera),
],
- q(7191) => [
+ q(7245) => [
q(Xavante),
],
- q(7192) => [
+ q(7246) => [
q(Kawaiisu),
],
- q(7193) => [
+ q(7247) => [
q(Kayan Mahakam),
],
- q(7194) => [
+ q(7248) => [
q(Kamba (Brazil)),
],
- q(7195) => [
+ q(7249) => [
q(Lower Burdekin),
],
- q(7196) => [
+ q(7250) => [
q(Bactrian),
],
- q(7197) => [
+ q(7251) => [
q(Kombio),
],
- q(7198) => [
+ q(7252) => [
q(Middle Breton),
],
- q(7199) => [
+ q(7253) => [
q(Kenaboi),
],
- q(7200) => [
+ q(7254) => [
q(Bolgarian),
],
- q(7201) => [
+ q(7255) => [
q(Kambera),
],
- q(7202) => [
+ q(7256) => [
q(Kambiwa),
],
- q(7203) => [
+ q(7257) => [
q(Kabixi),
],
- q(7204) => [
+ q(7258) => [
q(Cumbric),
],
- q(7205) => [
+ q(7259) => [
q(Camunic),
],
- q(7206) => [
+ q(7260) => [
q(Celtiberian),
],
- q(7207) => [
+ q(7261) => [
q(Cisalpine Gaulish),
],
- q(7208) => [
+ q(7262) => [
q(Chemakum),
q(Chimakum),
],
- q(7209) => [
+ q(7263) => [
q(Classical Armenian),
],
- q(7210) => [
+ q(7264) => [
q(Comecrudo),
],
- q(7211) => [
+ q(7265) => [
q(Cotoname),
],
- q(7212) => [
+ q(7266) => [
q(Chorasmian),
],
- q(7213) => [
+ q(7267) => [
q(Carian),
],
- q(7214) => [
+ q(7268) => [
q(Classical Tibetan),
],
- q(7215) => [
+ q(7269) => [
q(Curonian),
],
- q(7216) => [
+ q(7270) => [
q(Chuvantsy),
],
- q(7217) => [
+ q(7271) => [
q(Coahuilteco),
],
- q(7218) => [
+ q(7272) => [
q(Cayuse),
],
- q(7219) => [
+ q(7273) => [
q(Dacian),
],
- q(7220) => [
+ q(7274) => [
q(Edomite),
],
- q(7221) => [
+ q(7275) => [
q(Malayic Dayak),
],
- q(7222) => [
+ q(7276) => [
q(Eblan),
],
- q(7223) => [
+ q(7277) => [
q(Hdi),
],
- q(7224) => [
+ q(7278) => [
q(//Xegwi),
],
- q(7225) => [
+ q(7279) => [
q(Kelo),
],
- q(7226) => [
+ q(7280) => [
q(Kembayan),
],
- q(7227) => [
+ q(7281) => [
q(Epi-Olmec),
],
- q(7228) => [
+ q(7282) => [
q(Xerente),
],
- q(7229) => [
+ q(7283) => [
q(Kesawai),
],
- q(7230) => [
+ q(7284) => [
q(Xeta),
],
- q(7231) => [
+ q(7285) => [
q(Keoru-Ahia),
],
- q(7232) => [
+ q(7286) => [
q(Faliscan),
],
- q(7233) => [
+ q(7287) => [
q(Galatian),
],
- q(7234) => [
+ q(7288) => [
+ q(Gbin),
+ ],
+ q(7289) => [
q(Gabrielino-Fernandeno),
],
- q(7235) => [
+ q(7290) => [
q(Galindan),
],
- q(7236) => [
+ q(7291) => [
q(Garza),
],
- q(7237) => [
+ q(7292) => [
+ q(Unggumi),
+ ],
+ q(7293) => [
q(Harami),
],
- q(7238) => [
+ q(7294) => [
q(Hunnic),
],
- q(7239) => [
+ q(7295) => [
q(Hadrami),
],
- q(7240) => [
+ q(7296) => [
q(Khetrani),
],
- q(7241) => [
+ q(7297) => [
q(Hernican),
],
- q(7242) => [
+ q(7298) => [
q(Hattic),
],
- q(7243) => [
+ q(7299) => [
q(Hurrian),
],
- q(7244) => [
+ q(7300) => [
q(Khua),
],
- q(7245) => [
+ q(7301) => [
q(Xiandao),
],
- q(7246) => [
+ q(7302) => [
q(Iberian),
],
- q(7247) => [
+ q(7303) => [
q(Xiri),
],
- q(7248) => [
+ q(7304) => [
q(Illyrian),
],
- q(7249) => [
+ q(7305) => [
q(Xinca),
],
- q(7250) => [
+ q(7306) => [
q(Xipinawa),
],
- q(7251) => [
+ q(7307) => [
q(Xiriana),
],
- q(7252) => [
+ q(7308) => [
q(Indus Valley Language),
],
- q(7253) => [
+ q(7309) => [
q(Xipaya),
],
- q(7254) => [
+ q(7310) => [
q(Kalkoti),
],
- q(7255) => [
+ q(7311) => [
q(Northern Nago),
],
- q(7256) => [
+ q(7312) => [
q(Kho'ini),
],
- q(7257) => [
+ q(7313) => [
q(Mendalam Kayan),
],
- q(7258) => [
+ q(7314) => [
q(Kereho),
],
- q(7259) => [
+ q(7315) => [
q(Khengkha),
],
- q(7260) => [
+ q(7316) => [
q(Kagoro),
],
- q(7261) => [
+ q(7317) => [
q(Karahawyana),
],
- q(7262) => [
+ q(7318) => [
q(Kenyan Sign Language),
],
- q(7263) => [
+ q(7319) => [
q(Kajali),
],
- q(7264) => [
+ q(7320) => [
q(Kaco'),
],
- q(7265) => [
+ q(7321) => [
q(Mainstream Kenyah),
],
- q(7266) => [
+ q(7322) => [
q(Kayan River Kayan),
],
- q(7267) => [
+ q(7323) => [
q(Kiorr),
],
- q(7268) => [
+ q(7324) => [
q(Kabatei),
],
- q(7269) => [
+ q(7325) => [
q(Koroni),
],
- q(7270) => [
+ q(7326) => [
q(Xakriaba),
],
- q(7271) => [
+ q(7327) => [
q(Kumbewaha),
],
- q(7272) => [
+ q(7328) => [
q(Kantosi),
],
- q(7273) => [
+ q(7329) => [
q(Kaamba),
],
- q(7274) => [
+ q(7330) => [
q(Kgalagadi),
],
- q(7275) => [
+ q(7331) => [
q(Kembra),
],
- q(7276) => [
+ q(7332) => [
q(Karore),
],
- q(7277) => [
+ q(7333) => [
q(Uma' Lasan),
],
- q(7278) => [
+ q(7334) => [
q(Kurtokha),
],
- q(7279) => [
+ q(7335) => [
q(Kamula),
],
- q(7280) => [
+ q(7336) => [
q(Loup B),
],
- q(7281) => [
+ q(7337) => [
q(Lycian),
],
- q(7282) => [
+ q(7338) => [
q(Lydian),
],
- q(7283) => [
+ q(7339) => [
q(Lemnian),
],
- q(7284) => [
+ q(7340) => [
q(Ligurian (Ancient)),
],
- q(7285) => [
+ q(7341) => [
q(Liburnian),
],
- q(7286) => [
+ q(7342) => [
q(Alanic),
],
- q(7287) => [
+ q(7343) => [
q(Loup A),
],
- q(7288) => [
+ q(7344) => [
q(Lepontic),
],
- q(7289) => [
+ q(7345) => [
q(Lusitanian),
],
- q(7290) => [
+ q(7346) => [
q(Cuneiform Luwian),
],
- q(7291) => [
+ q(7347) => [
q(Elymian),
],
- q(7292) => [
+ q(7348) => [
q(Mushungulu),
],
- q(7293) => [
+ q(7349) => [
q(Mbonga),
],
- q(7294) => [
+ q(7350) => [
q(Makhuwa-Marrevone),
],
- q(7295) => [
+ q(7351) => [
q(Mbudum),
],
- q(7296) => [
+ q(7352) => [
q(Median),
],
- q(7297) => [
+ q(7353) => [
q(Mingrelian),
],
- q(7298) => [
+ q(7354) => [
q(Mengaka),
],
- q(7299) => [
+ q(7355) => [
q(Kuku-Muminh),
],
- q(7300) => [
+ q(7356) => [
q(Majera),
],
- q(7301) => [
+ q(7357) => [
q(Ancient Macedonian),
],
- q(7302) => [
+ q(7358) => [
q(Malaysian Sign Language),
],
- q(7303) => [
+ q(7359) => [
q(Manado Malay),
],
- q(7304) => [
+ q(7360) => [
q(Manichaean Middle Persian),
],
- q(7305) => [
+ q(7361) => [
q(Morerebi),
],
- q(7306) => [
+ q(7362) => [
q(Kuku-Mu'inh),
],
- q(7307) => [
+ q(7363) => [
q(Kuku-Mangk),
],
- q(7308) => [
+ q(7364) => [
q(Meroitic),
],
- q(7309) => [
+ q(7365) => [
q(Moroccan Sign Language),
],
- q(7310) => [
+ q(7366) => [
q(Matbat),
],
- q(7311) => [
+ q(7367) => [
q(Kamu),
],
- q(7312) => [
+ q(7368) => [
q(Antankarana Malagasy),
q(Tankarana Malagasy),
],
- q(7313) => [
+ q(7369) => [
q(Tsimihety Malagasy),
],
- q(7314) => [
+ q(7370) => [
q(Maden),
],
- q(7315) => [
+ q(7371) => [
q(Mayaguduna),
],
- q(7316) => [
+ q(7372) => [
q(Mori Bawah),
],
- q(7317) => [
+ q(7373) => [
q(Ancient North Arabian),
],
- q(7318) => [
+ q(7374) => [
q(Kanakanabu),
],
- q(7319) => [
+ q(7375) => [
q(Middle Mongolian),
],
- q(7320) => [
+ q(7376) => [
q(Kuanhua),
],
- q(7321) => [
+ q(7377) => [
q(Northern Kankanay),
],
- q(7322) => [
+ q(7378) => [
q(Anglo-Norman),
],
- q(7323) => [
+ q(7379) => [
q(Kangri),
],
- q(7324) => [
+ q(7380) => [
q(Kanashi),
],
- q(7325) => [
+ q(7381) => [
q(Narragansett),
],
- q(7326) => [
+ q(7382) => [
+ q(Kenzi),
+ q(Mattoki),
+ ],
+ q(7383) => [
q(O'chi'chi'),
],
- q(7327) => [
+ q(7384) => [
q(Kokoda),
],
- q(7328) => [
+ q(7385) => [
q(Soga),
],
- q(7329) => [
+ q(7386) => [
q(Kominimung),
],
- q(7330) => [
+ q(7387) => [
q(Xokleng),
],
- q(7331) => [
+ q(7388) => [
q(Komo (Sudan)),
],
- q(7332) => [
+ q(7389) => [
q(Konkomba),
],
- q(7333) => [
+ q(7390) => [
q(Xukuru),
],
- q(7334) => [
+ q(7391) => [
q(Kopar),
],
- q(7335) => [
+ q(7392) => [
q(Korubo),
],
- q(7336) => [
+ q(7393) => [
q(Kowaki),
],
- q(7337) => [
+ q(7394) => [
q(Pecheneg),
],
- q(7338) => [
+ q(7395) => [
q(Liberia Kpelle),
],
- q(7339) => [
+ q(7396) => [
q(Phrygian),
],
- q(7340) => [
+ q(7397) => [
q(Pictish),
],
- q(7341) => [
+ q(7398) => [
+ q(Mpalitjanh),
+ ],
+ q(7399) => [
q(Kulina Pano),
],
- q(7342) => [
+ q(7400) => [
q(Pumpokol),
],
- q(7343) => [
+ q(7401) => [
q(Kapinawa),
],
- q(7344) => [
+ q(7402) => [
q(Pochutec),
],
- q(7345) => [
+ q(7403) => [
q(Puyo-Paekche),
],
- q(7346) => [
+ q(7404) => [
q(Mohegan-Pequot),
],
- q(7347) => [
+ q(7405) => [
q(Parthian),
],
- q(7348) => [
+ q(7406) => [
q(Pisidian),
],
- q(7349) => [
+ q(7407) => [
q(Punic),
],
- q(7350) => [
+ q(7408) => [
q(Puyo),
],
- q(7351) => [
+ q(7409) => [
q(Karakhanid),
],
- q(7352) => [
+ q(7410) => [
q(Qatabanian),
],
- q(7353) => [
+ q(7411) => [
q(Kraho),
],
- q(7354) => [
+ q(7412) => [
q(Eastern Karaboro),
],
- q(7355) => [
+ q(7413) => [
q(Kreye),
],
- q(7356) => [
+ q(7414) => [
q(Krikati-Timbira),
],
- q(7357) => [
+ q(7415) => [
q(Armazic),
],
- q(7358) => [
+ q(7416) => [
q(Arin),
],
- q(7359) => [
+ q(7417) => [
q(Raetic),
],
- q(7360) => [
+ q(7418) => [
q(Aranama-Tamique),
],
- q(7361) => [
+ q(7419) => [
q(Marriammu),
],
- q(7362) => [
+ q(7420) => [
q(Karawa),
],
- q(7363) => [
+ q(7421) => [
q(Sabaean),
],
- q(7364) => [
- q(Tina Sambal),
+ q(7422) => [
+ q(Sambal),
],
- q(7365) => [
+ q(7423) => [
q(Scythian),
],
- q(7366) => [
+ q(7424) => [
q(Sidetic),
],
- q(7367) => [
+ q(7425) => [
q(Sempan),
],
- q(7368) => [
+ q(7426) => [
q(Shamang),
],
- q(7369) => [
+ q(7427) => [
q(Sio),
],
- q(7370) => [
+ q(7428) => [
q(Subi),
],
- q(7371) => [
+ q(7429) => [
q(South Slavey),
],
- q(7372) => [
+ q(7430) => [
q(Kasem),
],
- q(7373) => [
+ q(7431) => [
q(Sanga (Nigeria)),
],
- q(7374) => [
+ q(7432) => [
q(Solano),
],
- q(7375) => [
+ q(7433) => [
q(Silopi),
],
- q(7376) => [
+ q(7434) => [
q(Makhuwa-Saka),
],
- q(7377) => [
+ q(7435) => [
q(Sherpa),
],
- q(7378) => [
+ q(7436) => [
q(Assan),
],
- q(7379) => [
+ q(7437) => [
q(Sanuma),
],
- q(7380) => [
+ q(7438) => [
q(Sudovian),
],
- q(7381) => [
+ q(7439) => [
q(Saisiyat),
],
- q(7382) => [
+ q(7440) => [
q(Alcozauca Mixtec),
],
- q(7383) => [
+ q(7441) => [
q(Chazumba Mixtec),
],
- q(7384) => [
+ q(7442) => [
q(Katcha-Kadugli-Miri),
],
- q(7385) => [
+ q(7443) => [
q(Diuxi-Tilantongo Mixtec),
],
- q(7386) => [
+ q(7444) => [
q(Ketengban),
],
- q(7387) => [
+ q(7445) => [
q(Transalpine Gaulish),
],
- q(7388) => [
+ q(7446) => [
q(Sinicahua Mixtec),
],
- q(7389) => [
+ q(7447) => [
q(San Juan Teita Mixtec),
],
- q(7390) => [
+ q(7448) => [
q(Tijaltepec Mixtec),
],
- q(7391) => [
+ q(7449) => [
q(Magdalena Penasco Mixtec),
],
- q(7392) => [
+ q(7450) => [
q(Northern Tlaxiaco Mixtec),
],
- q(7393) => [
+ q(7451) => [
q(Tokharian A),
],
- q(7394) => [
+ q(7452) => [
q(San Miguel Piedras Mixtec),
],
- q(7395) => [
+ q(7453) => [
q(Tumshuqese),
],
- q(7396) => [
+ q(7454) => [
q(Early Tripuri),
],
- q(7397) => [
+ q(7455) => [
q(Sindihui Mixtec),
],
- q(7398) => [
+ q(7456) => [
q(Tacahua Mixtec),
],
- q(7399) => [
+ q(7457) => [
q(Cuyamecalco Mixtec),
],
- q(7400) => [
+ q(7458) => [
q(Tawande),
],
- q(7401) => [
+ q(7459) => [
q(Yoloxochitl Mixtec),
],
- q(7402) => [
+ q(7460) => [
q(Tasmanian),
],
- q(7403) => [
+ q(7461) => [
q(Alu Kurumba),
],
- q(7404) => [
+ q(7462) => [
q(Betta Kurumba),
],
- q(7405) => [
+ q(7463) => [
+ q(Umiida),
+ ],
+ q(7464) => [
q(Kunigami),
],
- q(7406) => [
+ q(7465) => [
q(Jennu Kurumba),
],
- q(7407) => [
+ q(7466) => [
q(Umbrian),
],
- q(7408) => [
+ q(7467) => [
+ q(Unggarranggu),
+ ],
+ q(7468) => [
q(Kuo),
],
- q(7409) => [
+ q(7469) => [
q(Upper Umpqua),
],
- q(7410) => [
+ q(7470) => [
q(Urartian),
],
- q(7411) => [
+ q(7471) => [
q(Kuthant),
],
- q(7412) => [
+ q(7472) => [
q(Kxoe),
],
- q(7413) => [
+ q(7473) => [
q(Venetic),
],
- q(7414) => [
+ q(7474) => [
q(Kamviri),
],
- q(7415) => [
+ q(7475) => [
q(Vandalic),
],
- q(7416) => [
+ q(7476) => [
q(Volscian),
],
- q(7417) => [
+ q(7477) => [
q(Vestinian),
],
- q(7418) => [
+ q(7478) => [
q(Kwaza),
],
- q(7419) => [
+ q(7479) => [
q(Woccon),
],
- q(7420) => [
+ q(7480) => [
q(Xwela Gbe),
],
- q(7421) => [
+ q(7481) => [
q(Kwegu),
],
- q(7422) => [
+ q(7482) => [
q(Western Xwla Gbe),
],
- q(7423) => [
+ q(7483) => [
q(Written Oirat),
],
- q(7424) => [
+ q(7484) => [
q(Kwerba Mamberamo),
],
- q(7425) => [
+ q(7485) => [
q(Boro (Ghana)),
],
- q(7426) => [
+ q(7486) => [
q(Ke'o),
],
- q(7427) => [
+ q(7487) => [
q(Koropo),
],
- q(7428) => [
+ q(7488) => [
q(Tambora),
],
- q(7429) => [
+ q(7489) => [
q(Yalakalore),
],
- q(7430) => [
+ q(7490) => [
+ q(Yorta Yorta),
+ ],
+ q(7491) => [
q(Zhang-Zhung),
],
- q(7431) => [
+ q(7492) => [
q(Zemgalian),
],
- q(7432) => [
+ q(7493) => [
q(Ancient Zapotec),
],
- q(7433) => [
+ q(7494) => [
q(Yaminahua),
],
- q(7434) => [
+ q(7495) => [
q(Yuhup),
],
- q(7435) => [
+ q(7496) => [
q(Pass Valley Yali),
],
- q(7436) => [
+ q(7497) => [
q(Yagua),
],
- q(7437) => [
+ q(7498) => [
q(Pume),
],
- q(7438) => [
+ q(7499) => [
q(Yaka (Democratic Republic of Congo)),
],
- q(7439) => [
+ q(7500) => [
q(Yamana),
],
- q(7440) => [
+ q(7501) => [
q(Yazgulyam),
],
- q(7441) => [
+ q(7502) => [
q(Yagnobi),
],
- q(7442) => [
+ q(7503) => [
q(Banda-Yangere),
],
- q(7443) => [
+ q(7504) => [
q(Yakama),
],
- q(7444) => [
+ q(7505) => [
q(Yalunka),
],
- q(7445) => [
+ q(7506) => [
q(Yamba),
],
- q(7446) => [
+ q(7507) => [
q(Mayangna),
],
- q(7447) => [
+ q(7508) => [
q(Yaqui),
],
- q(7448) => [
+ q(7509) => [
q(Yabarana),
],
- q(7449) => [
+ q(7510) => [
q(Nugunu (Cameroon)),
],
- q(7450) => [
+ q(7511) => [
q(Yambeta),
],
- q(7451) => [
+ q(7512) => [
q(Yuwana),
],
- q(7452) => [
+ q(7513) => [
q(Yangben),
],
- q(7453) => [
+ q(7514) => [
q(Yawalapiti),
],
- q(7454) => [
+ q(7515) => [
q(Yauma),
],
- q(7455) => [
+ q(7516) => [
q(Agwagwune),
],
- q(7456) => [
+ q(7517) => [
q(Lokaa),
],
- q(7457) => [
+ q(7518) => [
q(Yala),
],
- q(7458) => [
+ q(7519) => [
q(Yemba),
],
- q(7459) => [
- q(Yangbye),
- ],
- q(7460) => [
+ q(7520) => [
q(West Yugur),
],
- q(7461) => [
+ q(7521) => [
q(Yakha),
],
- q(7462) => [
+ q(7522) => [
q(Yamphu),
],
- q(7463) => [
+ q(7523) => [
q(Hasha),
],
- q(7464) => [
+ q(7524) => [
q(Bokha),
],
- q(7465) => [
+ q(7525) => [
q(Yukuben),
],
- q(7466) => [
+ q(7526) => [
q(Yaben),
],
- q(7467) => [
+ q(7527) => [
q(Yabaana),
],
- q(7468) => [
+ q(7528) => [
q(Yabong),
],
- q(7469) => [
+ q(7529) => [
q(Yawiyo),
],
- q(7470) => [
+ q(7530) => [
q(Yaweyuha),
],
- q(7471) => [
+ q(7531) => [
q(Chesu),
],
- q(7472) => [
+ q(7532) => [
q(Lolopo),
],
- q(7473) => [
+ q(7533) => [
q(Yucuna),
],
- q(7474) => [
+ q(7534) => [
q(Chepya),
],
- q(7475) => [
+ q(7535) => [
q(Eastern Yiddish),
],
- q(7476) => [
+ q(7536) => [
q(Yangum Dey),
],
- q(7477) => [
+ q(7537) => [
q(Yidgha),
],
- q(7478) => [
+ q(7538) => [
q(Yoidik),
],
- q(7479) => [
+ q(7539) => [
q(Yiddish Sign Language),
],
- q(7480) => [
+ q(7540) => [
q(Ravula),
],
- q(7481) => [
+ q(7541) => [
q(Yeniche),
],
- q(7482) => [
+ q(7542) => [
q(Yimas),
],
- q(7483) => [
+ q(7543) => [
q(Yeni),
],
- q(7484) => [
+ q(7544) => [
q(Yevanic),
],
- q(7485) => [
+ q(7545) => [
q(Yela),
],
- q(7486) => [
- q(Yendang),
- ],
- q(7487) => [
+ q(7546) => [
q(Tarok),
],
- q(7488) => [
- q(Yeskwa),
+ q(7547) => [
+ q(Nyankpa),
],
- q(7489) => [
+ q(7548) => [
q(Yetfa),
],
- q(7490) => [
+ q(7549) => [
q(Yerukula),
],
- q(7491) => [
+ q(7550) => [
q(Yapunda),
],
- q(7492) => [
+ q(7551) => [
q(Yeyi),
],
- q(7493) => [
+ q(7552) => [
+ q(Malyangapa),
+ ],
+ q(7553) => [
q(Yangum Gel),
],
- q(7494) => [
+ q(7554) => [
q(Yagomi),
],
- q(7495) => [
+ q(7555) => [
q(Gepo),
],
- q(7496) => [
+ q(7556) => [
q(Yagaria),
],
- q(7497) => [
+ q(7557) => [
q(Yagwoia),
],
- q(7498) => [
+ q(7558) => [
q(Baha Buyang),
],
- q(7499) => [
+ q(7559) => [
q(Judeo-Iraqi Arabic),
],
- q(7500) => [
+ q(7560) => [
q(Hlepho Phowa),
],
- q(7501) => [
+ q(7561) => [
q(Yinggarda),
],
- q(7502) => [
+ q(7562) => [
q(Wusa Nasu),
],
- q(7503) => [
+ q(7563) => [
q(Western Yiddish),
],
- q(7504) => [
+ q(7564) => [
q(Yidiny),
],
- q(7505) => [
+ q(7565) => [
q(Yindjibarndi),
],
- q(7506) => [
+ q(7566) => [
q(Dongshanba Lalo),
],
- q(7507) => [
+ q(7567) => [
q(Yindjilandji),
],
- q(7508) => [
+ q(7568) => [
q(Yimchungru Naga),
],
- q(7509) => [
+ q(7569) => [
q(Yinchia),
],
- q(7510) => [
+ q(7570) => [
q(Pholo),
],
- q(7511) => [
+ q(7571) => [
q(Miqie),
],
- q(7512) => [
+ q(7572) => [
q(North Awyu),
],
- q(7513) => [
+ q(7573) => [
q(Yis),
],
- q(7514) => [
+ q(7574) => [
q(Eastern Lalu),
],
- q(7515) => [
+ q(7575) => [
q(Awu),
],
- q(7516) => [
+ q(7576) => [
q(Northern Nisu),
],
- q(7517) => [
+ q(7577) => [
q(Axi Yi),
],
- q(7518) => [
+ q(7578) => [
q(Yir Yoront),
],
- q(7519) => [
+ q(7579) => [
q(Azhe),
],
- q(7520) => [
+ q(7580) => [
q(Yakan),
],
- q(7521) => [
+ q(7581) => [
q(Northern Yukaghir),
],
- q(7522) => [
+ q(7582) => [
q(Yoke),
],
- q(7523) => [
+ q(7583) => [
q(Yakaikeke),
],
- q(7524) => [
+ q(7584) => [
q(Khlula),
],
- q(7525) => [
+ q(7585) => [
q(Kap),
],
- q(7526) => [
+ q(7586) => [
+ q(Kua-nsi),
+ ],
+ q(7587) => [
q(Yasa),
],
- q(7527) => [
+ q(7588) => [
q(Yekora),
],
- q(7528) => [
+ q(7589) => [
q(Kathu),
],
- q(7529) => [
+ q(7590) => [
+ q(Kuamasi),
+ ],
+ q(7591) => [
q(Yakoma),
],
- q(7530) => [
+ q(7592) => [
q(Yaul),
],
- q(7531) => [
+ q(7593) => [
q(Yaleba),
],
- q(7532) => [
+ q(7594) => [
q(Yele),
],
- q(7533) => [
+ q(7595) => [
q(Yelogu),
],
- q(7534) => [
+ q(7596) => [
q(Angguruk Yali),
],
- q(7535) => [
+ q(7597) => [
q(Yil),
],
- q(7536) => [
+ q(7598) => [
q(Limi),
],
- q(7537) => [
+ q(7599) => [
q(Langnian Buyang),
],
- q(7538) => [
+ q(7600) => [
q(Naluo Yi),
],
- q(7539) => [
+ q(7601) => [
q(Yalarnnga),
],
- q(7540) => [
+ q(7602) => [
q(Aribwaung),
],
- q(7541) => [
+ q(7603) => [
q(Nyalayu),
],
- q(7542) => [
- q(Yamphe),
- ],
- q(7543) => [
+ q(7604) => [
q(Yambes),
],
- q(7544) => [
+ q(7605) => [
q(Southern Muji),
],
- q(7545) => [
+ q(7606) => [
q(Muda),
],
- q(7546) => [
+ q(7607) => [
q(Yameo),
],
- q(7547) => [
+ q(7608) => [
q(Yamongeri),
],
- q(7548) => [
+ q(7609) => [
q(Mili),
],
- q(7549) => [
+ q(7610) => [
q(Moji),
],
- q(7550) => [
+ q(7611) => [
q(Makwe),
],
- q(7551) => [
+ q(7612) => [
q(Iamalele),
],
- q(7552) => [
+ q(7613) => [
q(Maay),
],
- q(7553) => [
+ q(7614) => [
q(Yamna),
q(Sunum),
],
- q(7554) => [
+ q(7615) => [
q(Yangum Mon),
],
- q(7555) => [
+ q(7616) => [
q(Yamap),
],
- q(7556) => [
+ q(7617) => [
q(Qila Muji),
],
- q(7557) => [
+ q(7618) => [
q(Malasar),
],
- q(7558) => [
+ q(7619) => [
q(Mysian),
],
- q(7559) => [
+ q(7620) => [
q(Mator-Taygi-Karagas),
],
- q(7560) => [
+ q(7621) => [
q(Northern Muji),
],
- q(7561) => [
+ q(7622) => [
q(Muzi),
],
- q(7562) => [
+ q(7623) => [
q(Aluo),
],
- q(7563) => [
+ q(7624) => [
q(Yandruwandha),
],
- q(7564) => [
+ q(7625) => [
q(Lang'e),
],
- q(7565) => [
+ q(7626) => [
q(Yango),
],
- q(7566) => [
+ q(7627) => [
q(Yangho),
],
- q(7567) => [
+ q(7628) => [
q(Naukan Yupik),
],
- q(7568) => [
+ q(7629) => [
q(Yangulam),
],
- q(7569) => [
+ q(7630) => [
q(Yana),
],
- q(7570) => [
+ q(7631) => [
q(Yong),
],
- q(7571) => [
+ q(7632) => [
+ q(Yendang),
+ ],
+ q(7633) => [
q(Yansi),
],
- q(7572) => [
+ q(7634) => [
q(Yahuna),
],
- q(7573) => [
+ q(7635) => [
q(Yoba),
],
- q(7574) => [
+ q(7636) => [
q(Yogad),
],
- q(7575) => [
+ q(7637) => [
q(Yonaguni),
],
- q(7576) => [
+ q(7638) => [
q(Yokuts),
],
- q(7577) => [
+ q(7639) => [
q(Yola),
],
- q(7578) => [
+ q(7640) => [
q(Yombe),
],
- q(7579) => [
+ q(7641) => [
q(Yongkom),
],
- q(7580) => [
+ q(7642) => [
q(Yos),
],
- q(7581) => [
+ q(7643) => [
+ q(Yotti),
+ ],
+ q(7644) => [
q(Yoron),
],
- q(7582) => [
+ q(7645) => [
q(Yoy),
],
- q(7583) => [
+ q(7646) => [
q(Phala),
],
- q(7584) => [
+ q(7647) => [
q(Labo Phowa),
],
- q(7585) => [
+ q(7648) => [
q(Phola),
],
- q(7586) => [
+ q(7649) => [
q(Phupha),
],
- q(7587) => [
+ q(7650) => [
q(Phuma),
],
- q(7588) => [
+ q(7651) => [
q(Ani Phowa),
],
- q(7589) => [
+ q(7652) => [
q(Alo Phola),
],
- q(7590) => [
+ q(7653) => [
q(Phupa),
],
- q(7591) => [
+ q(7654) => [
q(Phuza),
],
- q(7592) => [
+ q(7655) => [
q(Yerakai),
],
- q(7593) => [
+ q(7656) => [
q(Yareba),
],
- q(7594) => [
+ q(7657) => [
q(Yaoure),
],
- q(7595) => [
+ q(7658) => [
q(Yari),
],
- q(7596) => [
+ q(7659) => [
q(Nenets),
],
- q(7597) => [
+ q(7660) => [
q(Nhengatu),
],
- q(7598) => [
+ q(7661) => [
q(Yerong),
],
- q(7599) => [
+ q(7662) => [
q(Yarsun),
],
- q(7600) => [
+ q(7663) => [
q(Yarawata),
],
- q(7601) => [
+ q(7664) => [
q(Yassic),
],
- q(7602) => [
+ q(7665) => [
q(Samatao),
],
- q(7603) => [
+ q(7666) => [
+ q(Sonaga),
+ ],
+ q(7667) => [
q(Yugoslavian Sign Language),
],
- q(7604) => [
+ q(7668) => [
q(Sani),
],
- q(7605) => [
+ q(7669) => [
q(Nisi (China)),
],
- q(7606) => [
+ q(7670) => [
q(Southern Lolopo),
],
- q(7607) => [
+ q(7671) => [
q(Sirenik Yupik),
],
- q(7608) => [
+ q(7672) => [
q(Yessan-Mayo),
],
- q(7609) => [
+ q(7673) => [
q(Sanie),
],
- q(7610) => [
+ q(7674) => [
q(Talu),
],
- q(7611) => [
+ q(7675) => [
q(Tanglang),
],
- q(7612) => [
+ q(7676) => [
q(Thopho),
],
- q(7613) => [
+ q(7677) => [
q(Yout Wam),
],
- q(7614) => [
+ q(7678) => [
q(Yucateco),
q(Yucatec Maya),
],
- q(7615) => [
+ q(7679) => [
q(Yugambal),
],
- q(7616) => [
+ q(7680) => [
q(Yuchi),
],
- q(7617) => [
+ q(7681) => [
q(Judeo-Tripolitanian Arabic),
],
- q(7618) => [
+ q(7682) => [
q(Yue Chinese),
],
- q(7619) => [
+ q(7683) => [
q(Havasupai-Walapai-Yavapai),
],
- q(7620) => [
+ q(7684) => [
q(Yug),
],
- q(7621) => [
+ q(7685) => [
q(Yuruti),
],
- q(7622) => [
+ q(7686) => [
q(Karkar-Yuri),
],
- q(7623) => [
+ q(7687) => [
q(Yuki),
],
- q(7624) => [
+ q(7688) => [
q(Yulu),
],
- q(7625) => [
+ q(7689) => [
q(Quechan),
],
- q(7626) => [
+ q(7690) => [
q(Bena (Nigeria)),
],
- q(7627) => [
+ q(7691) => [
q(Yukpa),
],
- q(7628) => [
+ q(7692) => [
q(Yuqui),
],
- q(7629) => [
+ q(7693) => [
q(Yurok),
],
- q(7630) => [
+ q(7694) => [
q(Yopno),
],
- q(7631) => [
+ q(7695) => [
q(Yugh),
],
- q(7632) => [
+ q(7696) => [
q(Yau (Morobe Province)),
],
- q(7633) => [
+ q(7697) => [
q(Southern Yukaghir),
],
- q(7634) => [
+ q(7698) => [
q(East Yugur),
],
- q(7635) => [
+ q(7699) => [
q(Yuracare),
],
- q(7636) => [
+ q(7700) => [
q(Yawa),
],
- q(7637) => [
+ q(7701) => [
q(Yavitero),
],
- q(7638) => [
+ q(7702) => [
q(Kalou),
],
- q(7639) => [
+ q(7703) => [
q(Western Lalu),
],
- q(7640) => [
+ q(7704) => [
q(Yawanawa),
],
- q(7641) => [
+ q(7705) => [
q(Wuding-Luquan Yi),
],
- q(7642) => [
+ q(7706) => [
q(Yawuru),
],
- q(7643) => [
+ q(7707) => [
q(Xishanba Lalo),
+ q(Central Lalo),
],
- q(7644) => [
+ q(7708) => [
q(Wumeng Nasu),
],
- q(7645) => [
+ q(7709) => [
q(Yawarawarga),
],
- q(7646) => [
+ q(7710) => [
+ q(Yagara),
+ ],
+ q(7711) => [
+ q(Yabula Yabula),
+ ],
+ q(7712) => [
q(Yau (Sandaun Province)),
],
- q(7647) => [
+ q(7713) => [
q(Ayizi),
],
- q(7648) => [
+ q(7714) => [
q(E'ma Buyang),
],
- q(7649) => [
+ q(7715) => [
q(Zokhuo),
],
- q(7650) => [
+ q(7716) => [
q(Sierra de Juarez Zapotec),
],
- q(7651) => [
+ q(7717) => [
q(San Juan Guelavia Zapotec),
],
- q(7652) => [
+ q(7718) => [
q(Ocotlan Zapotec),
],
- q(7653) => [
+ q(7719) => [
q(Cajonos Zapotec),
],
- q(7654) => [
+ q(7720) => [
q(Yareni Zapotec),
],
- q(7655) => [
+ q(7721) => [
q(Ayoquesco Zapotec),
],
- q(7656) => [
+ q(7722) => [
q(Zaghawa),
],
- q(7657) => [
+ q(7723) => [
q(Zangwal),
],
- q(7658) => [
+ q(7724) => [
q(Isthmus Zapotec),
],
- q(7659) => [
+ q(7725) => [
q(Zaramo),
],
- q(7660) => [
+ q(7726) => [
q(Zanaki),
],
- q(7661) => [
+ q(7727) => [
q(Zauzou),
],
- q(7662) => [
+ q(7728) => [
q(Miahuatlan Zapotec),
],
- q(7663) => [
+ q(7729) => [
q(Ozolotepec Zapotec),
],
- q(7664) => [
+ q(7730) => [
q(Aloapam Zapotec),
],
- q(7665) => [
+ q(7731) => [
q(Rincon Zapotec),
],
- q(7666) => [
+ q(7732) => [
q(Santo Domingo Albarradas Zapotec),
],
- q(7667) => [
+ q(7733) => [
q(Tabaa Zapotec),
],
- q(7668) => [
+ q(7734) => [
q(Zangskari),
],
- q(7669) => [
+ q(7735) => [
q(Yatzachi Zapotec),
],
- q(7670) => [
+ q(7736) => [
q(Mitla Zapotec),
],
- q(7671) => [
+ q(7737) => [
q(Xadani Zapotec),
],
- q(7672) => [
+ q(7738) => [
q(Zayse-Zergulla),
q(Zaysete),
],
- q(7673) => [
+ q(7739) => [
q(Zari),
],
- q(7674) => [
+ q(7740) => [
q(Central Berawan),
],
- q(7675) => [
+ q(7741) => [
q(East Berawan),
],
- q(7676) => [
+ q(7742) => [
q(Batui),
],
- q(7677) => [
+ q(7743) => [
q(West Berawan),
],
- q(7678) => [
+ q(7744) => [
q(Coatecas Altas Zapotec),
],
- q(7679) => [
+ q(7745) => [
q(Central Hongshuihe Zhuang),
],
- q(7680) => [
+ q(7746) => [
q(Ngazidja Comorian),
],
- q(7681) => [
+ q(7747) => [
q(Zeeuws),
],
- q(7682) => [
+ q(7748) => [
q(Zenag),
],
- q(7683) => [
+ q(7749) => [
q(Eastern Hongshuihe Zhuang),
],
- q(7684) => [
+ q(7750) => [
q(Kinga),
],
- q(7685) => [
+ q(7751) => [
q(Guibei Zhuang),
],
- q(7686) => [
+ q(7752) => [
q(Minz Zhuang),
],
- q(7687) => [
+ q(7753) => [
q(Guibian Zhuang),
],
- q(7688) => [
+ q(7754) => [
q(Magori),
],
- q(7689) => [
+ q(7755) => [
q(Zhaba),
],
- q(7690) => [
+ q(7756) => [
q(Dai Zhuang),
],
- q(7691) => [
+ q(7757) => [
q(Zhire),
],
- q(7692) => [
+ q(7758) => [
q(Nong Zhuang),
],
- q(7693) => [
+ q(7759) => [
q(Zhoa),
],
- q(7694) => [
+ q(7760) => [
q(Zia),
],
- q(7695) => [
+ q(7761) => [
q(Zimbabwe Sign Language),
],
- q(7696) => [
+ q(7762) => [
q(Zimakani),
],
- q(7697) => [
+ q(7763) => [
q(Zialo),
],
- q(7698) => [
+ q(7764) => [
q(Mesme),
],
- q(7699) => [
+ q(7765) => [
q(Zinza),
],
- q(7700) => [
+ q(7766) => [
q(Ziriya),
],
- q(7701) => [
+ q(7767) => [
q(Zigula),
],
- q(7702) => [
+ q(7768) => [
q(Zizilivakan),
],
- q(7703) => [
+ q(7769) => [
q(Kaimbulawa),
],
- q(7704) => [
+ q(7770) => [
q(Koibal),
],
- q(7705) => [
+ q(7771) => [
+ q(Kadu),
+ ],
+ q(7772) => [
q(Koguryo),
],
- q(7706) => [
+ q(7773) => [
q(Khorezmian),
],
- q(7707) => [
+ q(7774) => [
q(Karankawa),
],
- q(7708) => [
+ q(7775) => [
+ q(Kanan),
+ ],
+ q(7776) => [
q(Kott),
],
- q(7709) => [
+ q(7777) => [
q(Sao Paulo Kaingang),
],
- q(7710) => [
+ q(7778) => [
q(Zakhring),
],
- q(7711) => [
+ q(7779) => [
q(Kitan),
],
- q(7712) => [
+ q(7780) => [
q(Kaurna),
],
- q(7713) => [
+ q(7781) => [
q(Krevinian),
],
- q(7714) => [
+ q(7782) => [
q(Khazar),
],
- q(7715) => [
+ q(7783) => [
q(Liujiang Zhuang),
],
- q(7716) => [
+ q(7784) => [
q(Malay (individual language)),
],
- q(7717) => [
+ q(7785) => [
q(Lianshan Zhuang),
],
- q(7718) => [
+ q(7786) => [
q(Liuqian Zhuang),
],
- q(7719) => [
+ q(7787) => [
q(Manda (Australia)),
],
- q(7720) => [
+ q(7788) => [
q(Zimba),
],
- q(7721) => [
+ q(7789) => [
q(Margany),
],
- q(7722) => [
+ q(7790) => [
q(Maridan),
],
- q(7723) => [
+ q(7791) => [
q(Mangerr),
],
- q(7724) => [
+ q(7792) => [
q(Mfinu),
],
- q(7725) => [
+ q(7793) => [
q(Marti Ke),
],
- q(7726) => [
+ q(7794) => [
q(Makolkol),
],
- q(7727) => [
+ q(7795) => [
q(Negeri Sembilan Malay),
],
- q(7728) => [
+ q(7796) => [
q(Maridjabin),
],
- q(7729) => [
+ q(7797) => [
q(Mandandanyi),
],
- q(7730) => [
+ q(7798) => [
q(Madngele),
],
- q(7731) => [
+ q(7799) => [
q(Marimanindji),
],
- q(7732) => [
+ q(7800) => [
q(Mbangwe),
],
- q(7733) => [
+ q(7801) => [
q(Molo),
],
- q(7734) => [
+ q(7802) => [
q(Mpuono),
],
- q(7735) => [
+ q(7803) => [
q(Mituku),
],
- q(7736) => [
+ q(7804) => [
q(Maranunggu),
],
- q(7737) => [
+ q(7805) => [
q(Mbesa),
],
- q(7738) => [
+ q(7806) => [
q(Maringarr),
],
- q(7739) => [
+ q(7807) => [
q(Muruwari),
],
- q(7740) => [
+ q(7808) => [
q(Mbariman-Gudhinma),
],
- q(7741) => [
+ q(7809) => [
q(Mbo (Democratic Republic of Congo)),
],
- q(7742) => [
+ q(7810) => [
q(Bomitaba),
],
- q(7743) => [
+ q(7811) => [
q(Mariyedi),
],
- q(7744) => [
+ q(7812) => [
q(Mbandja),
],
- q(7745) => [
+ q(7813) => [
q(Zan Gula),
],
- q(7746) => [
+ q(7814) => [
q(Zande (individual language)),
],
- q(7747) => [
+ q(7815) => [
q(Mang),
],
- q(7748) => [
+ q(7816) => [
q(Manangkari),
],
- q(7749) => [
+ q(7817) => [
q(Mangas),
],
- q(7750) => [
+ q(7818) => [
q(Copainala Zoque),
],
- q(7751) => [
+ q(7819) => [
q(Chimalapa Zoque),
],
- q(7752) => [
+ q(7820) => [
q(Zou),
],
- q(7753) => [
+ q(7821) => [
q(Asuncion Mixtepec Zapotec),
],
- q(7754) => [
+ q(7822) => [
q(Tabasco Zoque),
],
- q(7755) => [
+ q(7823) => [
q(Rayon Zoque),
],
- q(7756) => [
+ q(7824) => [
q(Francisco Leon Zoque),
],
- q(7757) => [
+ q(7825) => [
q(Lachiguiri Zapotec),
],
- q(7758) => [
+ q(7826) => [
q(Yautepec Zapotec),
],
- q(7759) => [
+ q(7827) => [
q(Choapan Zapotec),
],
- q(7760) => [
+ q(7828) => [
q(Southeastern Ixtlan Zapotec),
],
- q(7761) => [
+ q(7829) => [
q(Petapa Zapotec),
],
- q(7762) => [
+ q(7830) => [
q(San Pedro Quiatoni Zapotec),
],
- q(7763) => [
+ q(7831) => [
q(Guevea De Humboldt Zapotec),
],
- q(7764) => [
+ q(7832) => [
q(Totomachapan Zapotec),
],
- q(7765) => [
+ q(7833) => [
q(Santa Maria Quiegolani Zapotec),
],
- q(7766) => [
+ q(7834) => [
q(Quiavicuzas Zapotec),
],
- q(7767) => [
+ q(7835) => [
q(Tlacolulita Zapotec),
],
- q(7768) => [
+ q(7836) => [
q(Lachixio Zapotec),
],
- q(7769) => [
+ q(7837) => [
q(Mixtepec Zapotec),
],
- q(7770) => [
+ q(7838) => [
q(Santa Ines Yatzechi Zapotec),
],
- q(7771) => [
+ q(7839) => [
q(Amatlan Zapotec),
],
- q(7772) => [
+ q(7840) => [
q(El Alto Zapotec),
],
- q(7773) => [
+ q(7841) => [
q(Zoogocho Zapotec),
],
- q(7774) => [
+ q(7842) => [
q(Santiago Xanica Zapotec),
],
- q(7775) => [
+ q(7843) => [
q(Coatlan Zapotec),
],
- q(7776) => [
+ q(7844) => [
q(San Vicente Coatlan Zapotec),
],
- q(7777) => [
+ q(7845) => [
q(Yalalag Zapotec),
],
- q(7778) => [
+ q(7846) => [
q(Chichicapan Zapotec),
],
- q(7779) => [
+ q(7847) => [
q(Zaniza Zapotec),
],
- q(7780) => [
+ q(7848) => [
q(San Baltazar Loxicha Zapotec),
],
- q(7781) => [
+ q(7849) => [
q(Mazaltepec Zapotec),
],
- q(7782) => [
+ q(7850) => [
q(Texmelucan Zapotec),
],
- q(7783) => [
+ q(7851) => [
q(Qiubei Zhuang),
],
- q(7784) => [
+ q(7852) => [
q(Kara (Korea)),
],
- q(7785) => [
+ q(7853) => [
q(Mirgan),
],
- q(7786) => [
+ q(7854) => [
q(Zerenkel),
],
- q(7787) => [
+ q(7855) => [
q(Zaparo),
],
- q(7788) => [
+ q(7856) => [
q(Zarphatic),
],
- q(7789) => [
+ q(7857) => [
q(Mairasi),
],
- q(7790) => [
+ q(7858) => [
q(Sarasira),
],
- q(7791) => [
+ q(7859) => [
q(Kaskean),
],
- q(7792) => [
+ q(7860) => [
q(Zambian Sign Language),
],
- q(7793) => [
+ q(7861) => [
q(Standard Malay),
],
- q(7794) => [
+ q(7862) => [
q(Southern Rincon Zapotec),
],
- q(7795) => [
+ q(7863) => [
q(Sukurum),
],
- q(7796) => [
+ q(7864) => [
q(Elotepec Zapotec),
],
- q(7797) => [
+ q(7865) => [
q(Xanaguia Zapotec),
],
- q(7798) => [
+ q(7866) => [
q(Lapaguia-Guivini Zapotec),
],
- q(7799) => [
+ q(7867) => [
q(San Agustin Mixtepec Zapotec),
],
- q(7800) => [
+ q(7868) => [
q(Santa Catarina Albarradas Zapotec),
],
- q(7801) => [
+ q(7869) => [
q(Loxicha Zapotec),
],
- q(7802) => [
+ q(7870) => [
q(Quioquitani-Quieri Zapotec),
],
- q(7803) => [
+ q(7871) => [
q(Tilquiapan Zapotec),
],
- q(7804) => [
+ q(7872) => [
q(Tejalapan Zapotec),
],
- q(7805) => [
+ q(7873) => [
q(Guila Zapotec),
],
- q(7806) => [
+ q(7874) => [
q(Zaachila Zapotec),
],
- q(7807) => [
+ q(7875) => [
q(Yatee Zapotec),
],
- q(7808) => [
+ q(7876) => [
q(Zeem),
],
- q(7809) => [
+ q(7877) => [
q(Tokano),
],
- q(7810) => [
+ q(7878) => [
q(Kumzari),
],
- q(7811) => [
+ q(7879) => [
q(Zumaya),
],
- q(7812) => [
+ q(7880) => [
q(Zay),
],
- q(7813) => [
+ q(7881) => [
q(Yongbei Zhuang),
],
- q(7814) => [
+ q(7882) => [
q(Yang Zhuang),
],
- q(7815) => [
+ q(7883) => [
q(Youjiang Zhuang),
],
- q(7816) => [
+ q(7884) => [
q(Yongnan Zhuang),
],
- q(7817) => [
+ q(7885) => [
q(Zyphe),
],
- q(7818) => [
+ q(7886) => [
q(Zuojiang Zhuang),
],
};
$Locale::Codes::Data{'language'}{'alias2id'} = {
q(!o!ung) => [
- q(5273),
+ q(5313),
q(0),
],
q(!xoo) => [
- q(4927),
+ q(4956),
q(0),
],
q('are'are) => [
- q(0761),
+ q(0763),
q(0),
],
q('auhelawa) => [
- q(3596),
+ q(3626),
q(0),
],
q(//ani) => [
- q(2763),
+ q(2788),
q(0),
],
q(//gana) => [
- q(2537),
+ q(2559),
q(0),
],
q(//xegwi) => [
- q(7224),
+ q(7278),
q(0),
],
q(/gwi) => [
- q(2647),
+ q(2671),
q(0),
],
q(/xam) => [
- q(7182),
+ q(7236),
q(0),
],
q(=/hua) => [
- q(2811),
+ q(2835),
q(0),
],
q(=/kx'au//'ein) => [
- q(0935),
+ q(0938),
+ q(0),
+ ],
+ q(a'ou) => [
+ q(0833),
q(0),
],
q(a'tong) => [
- q(0830),
+ q(0832),
q(0),
],
q(a-hmaos) => [
- q(2740),
+ q(2765),
q(0),
],
q(a-pucikwar) => [
- q(0848),
+ q(0851),
q(0),
],
q(aari) => [
- q(0711),
+ q(0712),
q(0),
],
q(aasax) => [
- q(0553),
+ q(0554),
q(0),
],
q(abadi) => [
- q(3147),
+ q(3180),
q(0),
],
q(abaga) => [
- q(0565),
+ q(0566),
q(0),
],
q(abai sungai) => [
- q(0564),
+ q(0565),
q(0),
],
q(abanyom) => [
- q(0570),
+ q(0571),
q(0),
],
q(abar) => [
- q(4255),
+ q(4283),
q(0),
],
q(abau) => [
- q(0555),
+ q(0556),
q(0),
],
q(abaza) => [
- q(0574),
+ q(0575),
q(0),
],
q(abe) => [
- q(0559),
+ q(0560),
q(0),
],
q(abellen ayta) => [
- q(0573),
+ q(0574),
q(0),
],
q(abidji) => [
- q(0567),
+ q(0568),
q(0),
],
q(abinomn) => [
- q(1442),
+ q(1448),
q(0),
],
q(abipon) => [
- q(0982),
+ q(0987),
q(0),
],
q(abishira) => [
- q(0890),
+ q(0893),
q(0),
],
q(abkhazian) => [
@@ -23889,71 +24118,71 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(abom) => [
- q(0815),
+ q(0817),
q(0),
],
q(abon) => [
- q(0572),
+ q(0573),
q(0),
],
q(abron) => [
- q(0575),
+ q(0576),
q(0),
],
q(abu) => [
- q(0614),
+ q(0615),
q(0),
],
q(abu' arapesh) => [
- q(0544),
+ q(0545),
q(0),
],
q(abua) => [
- q(0571),
+ q(0572),
q(0),
],
q(abui) => [
- q(0583),
+ q(0584),
q(0),
],
q(abun) => [
- q(3272),
+ q(3303),
q(0),
],
q(abure) => [
- q(0578),
+ q(0579),
q(0),
],
q(abureni) => [
- q(4205),
+ q(4234),
q(0),
],
q(acatepec me'phaa) => [
- q(6593),
+ q(6642),
q(0),
],
q(acatepec tlapanec) => [
- q(6593),
+ q(6642),
q(0),
],
q(achagua) => [
- q(0584),
+ q(0585),
q(0),
],
q(achang) => [
- q(0592),
+ q(0593),
q(0),
],
q(ache) => [
- q(2618),
+ q(2642),
q(0),
],
q(acheron) => [
- q(0603),
+ q(0604),
q(0),
],
q(achi) => [
- q(0595),
+ q(0596),
q(0),
],
q(achinese) => [
@@ -23961,15 +24190,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(achterhoeks) => [
- q(0597),
+ q(0598),
q(0),
],
q(achuar-shiwiar) => [
- q(0598),
+ q(0599),
q(0),
],
q(achumawi) => [
- q(0599),
+ q(0600),
q(0),
],
q(acoli) => [
@@ -23977,31 +24206,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(acroa) => [
- q(0596),
+ q(0597),
q(0),
],
q(adabe) => [
- q(0604),
+ q(0605),
q(0),
],
q(adai) => [
- q(7178),
+ q(7232),
q(0),
],
q(adamawa fulfulde) => [
- q(2351),
+ q(2371),
q(0),
],
q(adamorobe sign language) => [
- q(0618),
+ q(0619),
q(0),
],
q(adang) => [
- q(0613),
+ q(0614),
q(0),
],
q(adangbe) => [
- q(0616),
+ q(0617),
q(0),
],
q(adangme) => [
@@ -24009,47 +24238,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(adap) => [
- q(0615),
+ q(0616),
+ q(0),
+ ],
+ q(adara) => [
+ q(3148),
q(0),
],
q(adasen) => [
- q(6454),
+ q(6503),
q(0),
],
q(adele) => [
- q(0606),
+ q(0607),
q(0),
],
q(adhola) => [
- q(0609),
+ q(0610),
q(0),
],
q(adi) => [
- q(0610),
+ q(0611),
q(0),
],
q(adioukrou) => [
- q(0611),
+ q(0612),
+ q(0),
+ ],
+ q(adithinngithigh) => [
+ q(2155),
q(0),
],
q(adivasi oriya) => [
- q(5238),
+ q(5277),
q(0),
],
q(adiwasi garasia) => [
- q(2386),
+ q(2406),
q(0),
],
q(adnyamathanha) => [
- q(0619),
+ q(0620),
q(0),
],
q(adonara) => [
- q(0617),
+ q(0618),
q(0),
],
q(aduge) => [
- q(0620),
+ q(0621),
q(0),
],
q(adygei) => [
@@ -24061,27 +24298,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(adzera) => [
- q(0623),
+ q(0624),
q(0),
],
q(aeka) => [
- q(0639),
+ q(0640),
q(0),
],
q(aekyom) => [
- q(0969),
+ q(0974),
q(0),
],
q(aequian) => [
- q(7179),
+ q(7233),
q(0),
],
q(aer) => [
- q(0633),
+ q(0634),
q(0),
],
q(afade) => [
- q(0547),
+ q(0548),
q(0),
],
q(afar) => [
@@ -24089,19 +24326,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(afghan persian) => [
- q(5537),
+ q(5577),
q(0),
],
q(afghan sign language) => [
- q(0643),
+ q(0644),
q(0),
],
q(afitti) => [
- q(0650),
+ q(0651),
q(0),
],
q(afra) => [
- q(6809),
+ q(6860),
q(0),
],
q(afrihili) => [
@@ -24117,143 +24354,143 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(afro-seminole creole) => [
- q(0649),
+ q(0650),
q(0),
],
q(agarabi) => [
- q(0656),
+ q(0657),
q(0),
],
q(agariya) => [
- q(0661),
+ q(0662),
q(0),
],
q(agatu) => [
- q(0655),
+ q(0656),
q(0),
],
q(agavotaguerra) => [
- q(0960),
+ q(0964),
q(0),
],
q(aghem) => [
- q(0668),
+ q(0669),
q(0),
],
q(aghu) => [
- q(0681),
+ q(0682),
q(0),
],
q(aghu tharnggalu) => [
- q(2468),
+ q(2489),
q(0),
],
q(aghul) => [
- q(0675),
+ q(0676),
q(0),
],
q(aghwan) => [
- q(7180),
+ q(7234),
q(0),
],
q(agi) => [
- q(0697),
+ q(0698),
q(0),
],
q(agob) => [
- q(3318),
+ q(3349),
q(0),
],
q(agoi) => [
- q(2852),
+ q(2875),
q(0),
],
q(aguacateco) => [
- q(0672),
+ q(0673),
q(0),
],
q(aguano) => [
- q(0653),
+ q(0654),
q(0),
],
q(aguaruna) => [
- q(0669),
+ q(0670),
q(0),
],
q(aguna) => [
- q(0936),
+ q(0939),
q(0),
],
q(agusan manobo) => [
- q(4492),
+ q(4520),
q(0),
],
q(agutaynen) => [
- q(0666),
+ q(0667),
q(0),
],
q(agwagwune) => [
- q(7455),
+ q(7516),
q(0),
],
q(ahan) => [
- q(0686),
+ q(0687),
q(0),
],
q(ahanta) => [
- q(0678),
+ q(0679),
q(0),
],
q(aheu) => [
- q(6425),
+ q(6474),
q(0),
],
q(ahirani) => [
- q(0689),
+ q(0690),
q(0),
],
q(ahom) => [
- q(0687),
+ q(0688),
q(0),
],
q(ahtena) => [
- q(0691),
+ q(0692),
q(0),
],
q(ahwai) => [
- q(4784),
+ q(4813),
q(0),
],
q(ai-cham) => [
- q(0699),
+ q(0700),
q(0),
],
q(aighon) => [
- q(0712),
+ q(0713),
q(0),
],
q(aikana) => [
- q(6301),
+ q(6348),
q(0),
],
q(aiklep) => [
- q(4581),
+ q(4609),
q(0),
],
q(aimaq) => [
- q(0707),
+ q(0708),
q(0),
],
q(aimele) => [
- q(0703),
+ q(0704),
q(0),
],
q(aimol) => [
- q(0704),
+ q(0705),
q(0),
],
q(ainbai) => [
- q(0694),
+ q(0695),
q(0),
],
q(ainu) => [
@@ -24261,7 +24498,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ainu (china)) => [
- q(0693),
+ q(0694),
q(0),
],
q(ainu (japan)) => [
@@ -24269,75 +24506,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(aiome) => [
- q(0729),
+ q(0731),
q(0),
],
q(airoran) => [
- q(0708),
+ q(0709),
q(0),
],
q(aiton) => [
- q(0705),
+ q(0706),
q(0),
],
q(aiwoo) => [
- q(4785),
+ q(4814),
q(0),
],
q(aja (benin)) => [
- q(0715),
+ q(0716),
q(0),
],
q(aja (sudan)) => [
- q(0714),
+ q(0715),
q(0),
],
q(ajawa) => [
- q(0720),
+ q(0722),
q(0),
],
q(ajie) => [
- q(0716),
+ q(0717),
q(0),
],
q(ajyininka apurucayali) => [
- q(1826),
+ q(1833),
q(0),
],
q(ak) => [
- q(0735),
+ q(0737),
q(0),
],
q(aka) => [
- q(6089),
+ q(6134),
q(0),
],
q(aka-bea) => [
- q(0568),
+ q(0569),
q(0),
],
q(aka-bo) => [
- q(0732),
+ q(0734),
q(0),
],
q(aka-cari) => [
- q(0588),
+ q(0589),
q(0),
],
q(aka-jeru) => [
- q(0730),
+ q(0732),
q(0),
],
q(aka-kede) => [
- q(0742),
+ q(0744),
q(0),
],
q(aka-kol) => [
- q(0743),
+ q(0745),
q(0),
],
q(aka-kora) => [
- q(0589),
+ q(0590),
q(0),
],
q(akan) => [
@@ -24345,39 +24582,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(akar-bale) => [
- q(0590),
+ q(0591),
q(0),
],
q(akaselem) => [
- q(0737),
+ q(0739),
q(0),
],
q(akawaio) => [
- q(0725),
+ q(0727),
q(0),
],
q(ake) => [
- q(0702),
+ q(0703),
q(0),
],
q(akebu) => [
- q(3223),
+ q(3255),
q(0),
],
q(akei) => [
- q(6646),
+ q(6695),
q(0),
],
q(akeu) => [
- q(0636),
+ q(0637),
q(0),
],
q(akha) => [
- q(0683),
+ q(0684),
q(0),
],
q(akhvakh) => [
- q(0740),
+ q(0742),
q(0),
],
q(akkadian) => [
@@ -24385,111 +24622,119 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(akkala sami) => [
- q(5961),
+ q(6006),
q(0),
],
q(aklanon) => [
- q(0731),
+ q(0733),
q(0),
],
q(akolet) => [
- q(0738),
+ q(0740),
q(0),
],
q(akoose) => [
- q(1459),
+ q(1465),
q(0),
],
q(akoye) => [
- q(4265),
+ q(4293),
q(0),
],
q(akpa) => [
- q(0726),
+ q(0728),
q(0),
],
q(akpes) => [
- q(2848),
+ q(2872),
q(0),
],
q(akrukay) => [
- q(0644),
+ q(0645),
+ q(0),
+ ],
+ q(akukem) => [
+ q(6158),
q(0),
],
q(akuku) => [
- q(0995),
+ q(1001),
q(0),
],
q(akum) => [
- q(0739),
+ q(0741),
q(0),
],
q(akuntsu) => [
- q(0865),
+ q(0868),
q(0),
],
q(akurio) => [
- q(0733),
+ q(0735),
q(0),
],
q(akwa) => [
- q(0741),
+ q(0743),
+ q(0),
+ ],
+ q(akyaung ari naga) => [
+ q(5028),
q(0),
],
q(al-sayyid bedouin sign language) => [
- q(6267),
+ q(6314),
q(0),
],
q(alaba-k'abeena) => [
- q(0762),
+ q(0764),
q(0),
],
q(alabama) => [
- q(0744),
+ q(0746),
q(0),
],
q(alabat island agta) => [
- q(2155),
+ q(2176),
q(0),
],
q(alacalufan languages) => [
- q(0488),
+ q(0489),
q(0),
],
q(alacatlatzala mixtec) => [
- q(4258),
+ q(4286),
q(0),
],
q(alago) => [
- q(0745),
+ q(0747),
q(0),
],
q(alagwa) => [
- q(6998),
+ q(7048),
q(0),
],
q(alak) => [
- q(0752),
+ q(0754),
q(0),
],
q(alamblak) => [
- q(0779),
+ q(0781),
q(0),
],
q(alangan) => [
- q(0751),
+ q(0753),
q(0),
],
q(alanic) => [
- q(7286),
+ q(7342),
q(0),
],
q(alapmunte) => [
- q(0853),
+ q(0856),
q(0),
],
q(alawa) => [
- q(0749),
+ q(0751),
q(0),
],
q(albanian) => [
@@ -24497,19 +24742,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(albanian languages) => [
- q(0524),
+ q(0525),
+ q(0),
+ ],
+ q(albanian sign language) => [
+ q(6171),
q(0),
],
q(alcozauca mixtec) => [
- q(7382),
+ q(7440),
q(0),
],
q(alege) => [
- q(0748),
+ q(0750),
q(0),
],
q(alekano) => [
- q(2375),
+ q(2395),
q(0),
],
q(alemannic) => [
@@ -24521,19 +24770,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(algerian arabic) => [
- q(0875),
+ q(0878),
q(0),
],
q(algerian saharan arabic) => [
- q(0550),
+ q(0551),
q(0),
],
q(algerian sign language) => [
- q(0897),
+ q(0900),
q(0),
],
q(algic languages) => [
- q(0489),
+ q(0490),
q(0),
],
q(algonquian languages) => [
@@ -24541,35 +24790,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(algonquin) => [
- q(0758),
+ q(0760),
q(0),
],
q(ali) => [
- q(0713),
+ q(0714),
q(0),
],
q(alladian) => [
- q(0747),
+ q(0749),
q(0),
],
q(allar) => [
- q(0753),
+ q(0755),
q(0),
],
q(alngith) => [
- q(0695),
+ q(0696),
q(0),
],
q(alo phola) => [
- q(7589),
+ q(7652),
q(0),
],
q(aloapam zapotec) => [
- q(7664),
+ q(7730),
q(0),
],
q(alor) => [
- q(0825),
+ q(0827),
q(0),
],
q(alsatian) => [
@@ -24577,7 +24826,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(alsea) => [
- q(0635),
+ q(0636),
q(0),
],
q(altaic languages) => [
@@ -24585,167 +24834,163 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(alu kurumba) => [
- q(7403),
+ q(7461),
q(0),
],
q(alugu) => [
- q(0932),
+ q(0935),
q(0),
],
q(alumu-tesu) => [
- q(0538),
+ q(0539),
q(0),
],
q(alune) => [
- q(0757),
+ q(0759),
q(0),
],
q(aluo) => [
- q(7562),
+ q(7623),
q(0),
],
q(alur) => [
- q(0765),
+ q(0767),
q(0),
],
q(alutor) => [
- q(0759),
+ q(0761),
q(0),
],
q(alviri-vidari) => [
- q(0955),
+ q(0958),
q(0),
],
q(alyawarr) => [
- q(0764),
+ q(0766),
q(0),
],
q(ama (papua new guinea)) => [
- q(0776),
+ q(0778),
q(0),
],
q(ama (sudan)) => [
- q(5101),
+ q(5139),
q(0),
],
q(amahai) => [
- q(0780),
+ q(0782),
q(0),
],
q(amahuaca) => [
- q(0768),
+ q(0770),
q(0),
],
q(amaimon) => [
- q(0750),
+ q(0752),
q(0),
],
q(amal) => [
- q(0540),
+ q(0541),
q(0),
],
q(amanab) => [
- q(0777),
+ q(0779),
q(0),
],
q(amanaye) => [
- q(0766),
+ q(0768),
q(0),
],
q(amara) => [
- q(0696),
- q(0),
- ],
- q(amarag) => [
- q(0771),
+ q(0697),
q(0),
],
q(amarakaeri) => [
- q(0781),
+ q(0783),
q(0),
],
q(amarasi) => [
- q(0558),
+ q(0559),
q(0),
],
q(amatlan zapotec) => [
- q(7771),
+ q(7839),
q(0),
],
q(amba (solomon islands)) => [
- q(6871),
+ q(6921),
q(0),
],
q(amba (uganda)) => [
- q(5806),
+ q(5850),
q(0),
],
q(ambai) => [
- q(0774),
+ q(0776),
q(0),
],
q(ambakich) => [
- q(0637),
+ q(0638),
q(0),
],
q(ambala ayta) => [
- q(0561),
+ q(0562),
q(0),
],
q(ambelau) => [
- q(0785),
+ q(0787),
q(0),
],
q(ambele) => [
- q(0630),
+ q(0631),
q(0),
],
q(amblong) => [
- q(0754),
+ q(0756),
q(0),
],
q(ambo) => [
- q(0767),
+ q(0769),
q(0),
],
q(ambo-pasco quechua) => [
- q(5634),
+ q(5674),
q(0),
],
q(ambonese malay) => [
- q(0576),
+ q(0577),
q(0),
],
q(ambrak) => [
- q(0543),
+ q(0544),
q(0),
],
q(ambul) => [
- q(0846),
+ q(0849),
q(0),
],
q(ambulas) => [
- q(0577),
+ q(0578),
q(0),
],
q(amdang) => [
- q(0773),
+ q(0775),
q(0),
],
q(amdo tibetan) => [
- q(0622),
+ q(0623),
q(0),
],
q(amele) => [
- q(0638),
+ q(0639),
q(0),
],
q(american sign language) => [
- q(0887),
+ q(0890),
q(0),
],
q(amganad ifugao) => [
- q(2871),
+ q(2894),
q(0),
],
q(amharic) => [
@@ -24753,83 +24998,91 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ami) => [
- q(0788),
+ q(0790),
+ q(0),
+ ],
+ q(amio-gelimi) => [
+ q(3857),
q(0),
],
q(amis) => [
- q(0772),
+ q(0774),
q(0),
],
q(amo) => [
- q(0778),
+ q(0780),
q(0),
],
q(amol) => [
- q(0763),
+ q(0765),
q(0),
],
q(amoltepec mixtec) => [
- q(4097),
+ q(4126),
q(0),
],
q(ampanang) => [
- q(0838),
+ q(0841),
q(0),
],
q(ampari dogon) => [
- q(0859),
+ q(0862),
q(0),
],
q(amri karbi) => [
- q(0721),
+ q(0723),
q(0),
],
q(amto) => [
- q(0783),
+ q(0785),
q(0),
],
q(amundava) => [
- q(0621),
+ q(0622),
+ q(0),
+ ],
+ q(amurdak) => [
+ q(0773),
q(0),
],
q(ana tinga dogon) => [
- q(2137),
+ q(2156),
q(0),
],
q(anaang) => [
- q(0810),
+ q(0812),
q(0),
],
q(anakalangu) => [
- q(0727),
+ q(0729),
q(0),
],
q(anal) => [
- q(0801),
+ q(0803),
q(0),
],
q(anam) => [
- q(5334),
+ q(5373),
q(0),
],
q(anambe) => [
- q(0549),
+ q(0550),
q(0),
],
q(anamgura) => [
- q(2919),
+ q(2943),
q(0),
],
q(anasi) => [
- q(1381),
+ q(1387),
q(0),
],
q(anca) => [
- q(0585),
+ q(0586),
q(0),
],
q(ancient aramaic (up to 700 bce)) => [
- q(5125),
+ q(5163),
q(0),
],
q(ancient greek (to 1453)) => [
@@ -24837,239 +25090,255 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(ancient hebrew) => [
- q(2695),
+ q(2720),
q(0),
],
q(ancient macedonian) => [
- q(7301),
+ q(7357),
q(0),
],
q(ancient north arabian) => [
- q(7317),
+ q(7373),
q(0),
],
q(ancient zapotec) => [
- q(7432),
+ q(7493),
+ q(0),
+ ],
+ q(andaandi) => [
+ q(2012),
q(0),
],
q(andai) => [
- q(0641),
+ q(0642),
+ q(0),
+ ],
+ q(andajin) => [
+ q(0718),
q(0),
],
q(andalusian arabic) => [
- q(7175),
+ q(7229),
q(0),
],
q(andaman creole hindi) => [
- q(2697),
+ q(2722),
q(0),
],
q(andaqui) => [
- q(0790),
+ q(0792),
q(0),
],
q(andarum) => [
- q(0817),
+ q(0819),
q(0),
],
q(andegerebinha) => [
- q(0608),
+ q(0609),
q(0),
],
q(andh) => [
- q(0805),
+ q(0807),
q(0),
],
q(andi) => [
- q(0797),
+ q(0799),
q(0),
],
q(andio) => [
- q(1610),
+ q(1616),
q(0),
],
q(andoa) => [
- q(0791),
+ q(0793),
q(0),
],
q(andoque) => [
- q(0803),
+ q(0805),
q(0),
],
q(andra-hus) => [
- q(0811),
+ q(0813),
q(0),
],
q(aneityum) => [
- q(0929),
+ q(0932),
q(0),
],
q(anem) => [
- q(0813),
+ q(0815),
q(0),
],
q(aneme wake) => [
- q(0582),
+ q(0583),
q(0),
],
q(anfillo) => [
- q(4637),
+ q(4665),
q(0),
],
q(angaataha) => [
- q(0665),
+ q(0666),
q(0),
],
q(angal) => [
- q(0657),
+ q(0658),
q(0),
],
q(angal enen) => [
- q(0818),
+ q(0820),
q(0),
],
q(angal heneng) => [
- q(0728),
+ q(0730),
q(0),
],
q(angami naga) => [
- q(4865),
+ q(4894),
q(0),
],
q(angguruk yali) => [
- q(7534),
+ q(7596),
q(0),
],
q(angika) => [
q(0019),
q(0),
],
+ q(angkamuthi) => [
+ q(0962),
+ q(0),
+ ],
q(anglo-norman) => [
- q(7322),
+ q(7378),
q(0),
],
q(angloromani) => [
- q(5741),
+ q(5782),
q(0),
],
q(angolar) => [
- q(0814),
+ q(0816),
q(0),
],
q(angor) => [
- q(0659),
+ q(0660),
q(0),
],
q(angoram) => [
- q(0820),
+ q(0822),
q(0),
],
q(angosturas tunebo) => [
- q(6533),
+ q(6582),
+ q(0),
+ ],
+ q(anguthimri) => [
+ q(0972),
q(0),
],
q(ani phowa) => [
- q(7588),
+ q(7651),
q(0),
],
q(anii) => [
- q(1286),
+ q(1292),
q(0),
],
q(animere) => [
- q(0795),
+ q(0797),
q(0),
],
q(anindilyakwa) => [
- q(0822),
+ q(0824),
q(0),
],
q(anjam) => [
- q(1354),
+ q(1360),
q(0),
],
q(ankave) => [
- q(0546),
+ q(0547),
q(0),
],
q(anmatyerre) => [
- q(0787),
+ q(0789),
q(0),
],
q(anong) => [
- q(5059),
+ q(5093),
q(0),
],
q(anor) => [
- q(0798),
+ q(0800),
q(0),
],
q(anserma) => [
- q(0806),
+ q(0808),
q(0),
],
q(ansus) => [
- q(0793),
+ q(0795),
q(0),
],
q(antakarinya) => [
- q(0807),
+ q(0809),
q(0),
],
q(antankarana malagasy) => [
- q(7312),
+ q(7368),
q(0),
],
q(antigua and barbuda creole english) => [
- q(0698),
+ q(0699),
q(0),
],
- q(anu) => [
- q(0800),
+ q(anu-hkongso chin) => [
+ q(0802),
q(0),
],
q(anuak) => [
- q(0808),
+ q(0810),
q(0),
],
q(anufo) => [
- q(1754),
+ q(1759),
q(0),
],
q(anuki) => [
- q(0938),
+ q(0941),
q(0),
],
q(anus) => [
- q(0946),
+ q(0949),
q(0),
],
q(anuta) => [
- q(0934),
+ q(0937),
q(0),
],
q(anyin) => [
- q(0812),
+ q(0814),
q(0),
],
q(anyin morofo) => [
- q(4506),
+ q(4534),
q(0),
],
q(ao naga) => [
- q(4867),
+ q(4896),
q(0),
],
q(aoheng) => [
- q(5473),
+ q(5512),
q(0),
],
q(aore) => [
- q(0828),
+ q(0830),
q(0),
],
q(ap ma) => [
- q(3151),
+ q(3184),
q(0),
],
q(apache languages) => [
@@ -25077,59 +25346,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(apalachee) => [
- q(7185),
+ q(7239),
q(0),
],
q(apalai) => [
- q(0856),
+ q(0859),
q(0),
],
q(apali) => [
- q(2240),
+ q(2259),
q(0),
],
q(apasco-apoala mixtec) => [
- q(4260),
+ q(4288),
q(0),
],
q(apatani) => [
- q(0851),
+ q(0854),
q(0),
],
q(apiaka) => [
- q(0840),
+ q(0843),
q(0),
],
q(apinaye) => [
- q(0845),
+ q(0848),
q(0),
],
q(apma) => [
- q(0847),
+ q(0850),
q(0),
],
q(aproumu aizi) => [
- q(0688),
+ q(0689),
q(0),
],
q(apurina) => [
- q(0852),
+ q(0855),
q(0),
],
q(aputai) => [
- q(0855),
+ q(0858),
q(0),
],
q(aquitanian) => [
- q(7186),
+ q(7240),
q(0),
],
q(arabana) => [
- q(0867),
+ q(0870),
q(0),
],
q(arabela) => [
- q(0873),
+ q(0876),
q(0),
],
q(arabic) => [
@@ -25141,35 +25410,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(araki) => [
- q(0736),
+ q(0738),
q(0),
],
q(aralle-tabulahan) => [
- q(0921),
+ q(0924),
q(0),
],
q(aramanik) => [
- q(0548),
+ q(0549),
q(0),
],
q(arammba) => [
- q(6187),
+ q(6234),
q(0),
],
q(aranadan) => [
- q(0542),
+ q(0543),
q(0),
],
q(aranama-tamique) => [
- q(7360),
+ q(7418),
q(0),
],
q(arandai) => [
- q(3017),
+ q(3041),
q(0),
],
q(araona) => [
- q(0874),
+ q(0877),
q(0),
],
q(arapaho) => [
@@ -25177,15 +25446,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(arapaso) => [
- q(0871),
+ q(0874),
q(0),
],
q(arauan languages) => [
- q(0490),
+ q(0491),
q(0),
],
q(arawa) => [
- q(0878),
+ q(0881),
q(0),
],
q(arawak) => [
@@ -25193,119 +25462,119 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(arawakan languages) => [
- q(0491),
+ q(0492),
q(0),
],
q(arawete) => [
- q(0976),
+ q(0981),
q(0),
],
q(arawum) => [
- q(0971),
+ q(0976),
q(0),
],
q(arbereshe albanian) => [
- q(0541),
+ q(0542),
q(0),
],
q(arbore) => [
- q(0879),
+ q(0882),
q(0),
],
q(archi) => [
- q(0858),
+ q(0861),
q(0),
],
q(ardhamagadhi prakrit) => [
- q(5411),
+ q(5449),
q(0),
],
q(are) => [
- q(4577),
+ q(4605),
q(0),
],
q(areba) => [
- q(0624),
+ q(0625),
q(0),
],
q(arem) => [
- q(0631),
+ q(0632),
q(0),
],
q(arequipa-la union quechua) => [
- q(5666),
+ q(5706),
q(0),
],
q(argentine sign language) => [
- q(0627),
+ q(0628),
q(0),
],
q(argobba) => [
- q(0662),
+ q(0663),
q(0),
],
q(arguni) => [
- q(0658),
+ q(0659),
q(0),
],
q(arha) => [
- q(0864),
+ q(0867),
q(0),
],
q(arho) => [
- q(0824),
+ q(0826),
q(0),
],
q(arhuaco) => [
- q(0869),
+ q(0872),
q(0),
],
q(ari) => [
- q(0539),
+ q(0540),
q(0),
],
q(aribwatsa) => [
- q(3763),
+ q(3792),
q(0),
],
q(aribwaung) => [
- q(7540),
+ q(7602),
q(0),
],
q(arifama-miniafia) => [
- q(0545),
+ q(0546),
q(0),
],
q(arigidi) => [
- q(0860),
+ q(0863),
q(0),
],
q(arikapu) => [
- q(0872),
+ q(0875),
q(0),
],
q(arikara) => [
- q(0870),
+ q(0873),
q(0),
],
q(arikem) => [
- q(0710),
+ q(0711),
q(0),
],
q(arin) => [
- q(7358),
+ q(7416),
q(0),
],
q(aringa) => [
- q(4023),
+ q(4052),
q(0),
],
q(arma) => [
- q(0821),
+ q(0823),
q(0),
],
q(armazic) => [
- q(7357),
+ q(7415),
q(0),
],
q(armenian) => [
@@ -25313,11 +25582,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(armenian (family)) => [
- q(0510),
+ q(0511),
q(0),
],
q(armenian sign language) => [
- q(0632),
+ q(0633),
q(0),
],
q(aromanian) => [
@@ -25325,23 +25594,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(arop-lokep) => [
- q(0849),
+ q(0852),
q(0),
],
q(arop-sissano) => [
- q(0850),
+ q(0853),
q(0),
],
q(arosi) => [
- q(0692),
+ q(0693),
q(0),
],
q(arpitan) => [
- q(2345),
+ q(2365),
+ q(0),
+ ],
+ q(arritinngithigh) => [
+ q(5826),
q(0),
],
q(arta) => [
- q(0930),
+ q(0933),
q(0),
],
q(artificial languages) => [
@@ -25349,19 +25622,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(arua (amazonas state)) => [
- q(0878),
+ q(0881),
q(0),
],
q(arua (rodonia state)) => [
- q(0880),
+ q(0883),
q(0),
],
q(aruamu) => [
- q(4503),
+ q(4531),
q(0),
],
q(aruek) => [
- q(0947),
+ q(0950),
q(0),
],
q(arumanian) => [
@@ -25369,67 +25642,67 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(aruop) => [
- q(4012),
+ q(4041),
q(0),
],
q(arutani) => [
- q(0928),
+ q(0931),
q(0),
],
q(arvanitika albanian) => [
- q(0554),
+ q(0555),
q(0),
],
q(as) => [
- q(0906),
+ q(0909),
q(0),
],
q(asaro'o) => [
- q(4526),
+ q(4554),
q(0),
],
q(asas) => [
- q(0886),
+ q(0889),
q(0),
],
q(ashaninka) => [
- q(1793),
+ q(1800),
q(0),
],
q(ashe) => [
- q(0690),
+ q(0691),
q(0),
],
q(asheninka pajonal) => [
- q(1745),
+ q(1751),
q(0),
],
q(asheninka perene) => [
- q(5535),
+ q(5575),
q(0),
],
q(ashkun) => [
- q(0893),
+ q(0896),
q(0),
],
q(asho chin) => [
- q(1864),
+ q(1871),
q(0),
],
q(ashtiani) => [
- q(0918),
+ q(0921),
q(0),
],
q(asilulu) => [
- q(0894),
+ q(0897),
q(0),
],
q(askopan) => [
- q(2205),
+ q(2225),
q(0),
],
q(asoa) => [
- q(0902),
+ q(0905),
q(0),
],
q(assamese) => [
@@ -25437,19 +25710,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(assan) => [
- q(7378),
+ q(7436),
q(0),
],
q(assangori) => [
- q(5986),
+ q(6031),
q(0),
],
q(assiniboine) => [
- q(0884),
+ q(0887),
q(0),
],
q(assyrian neo-aramaic) => [
- q(0700),
+ q(0701),
q(0),
],
q(asturian) => [
@@ -25461,55 +25734,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(asu (nigeria)) => [
- q(0942),
+ q(0945),
q(0),
],
q(asu (tanzania)) => [
- q(0883),
+ q(0886),
q(0),
],
q(asue awyu) => [
- q(5544),
+ q(5584),
q(0),
],
q(asumboa) => [
- q(0931),
+ q(0934),
q(0),
],
q(asuncion mixtepec zapotec) => [
- q(7753),
+ q(7821),
q(0),
],
q(asuri) => [
- q(0899),
+ q(0902),
q(0),
],
q(ata) => [
- q(0917),
+ q(0920),
q(0),
],
q(ata manobo) => [
- q(0910),
+ q(0913),
q(0),
],
q(atakapa) => [
- q(0863),
+ q(0866),
q(0),
],
q(atampaya) => [
- q(0789),
+ q(0791),
q(0),
],
q(atatlahuca mixtec) => [
- q(4248),
+ q(4276),
q(0),
],
q(atayal) => [
- q(6299),
+ q(6346),
q(0),
],
q(atemble) => [
- q(0911),
+ q(0914),
q(0),
],
q(athapascan languages) => [
@@ -25517,83 +25790,83 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(athpariya) => [
- q(0839),
+ q(0842),
q(0),
],
q(ati) => [
- q(0915),
+ q(0918),
q(0),
],
q(atikamekw) => [
- q(0914),
+ q(0917),
q(0),
],
q(atlantic-congo languages) => [
- q(0487),
+ q(0488),
q(0),
],
q(atohwaim) => [
- q(0861),
+ q(0864),
q(0),
],
q(atong) => [
- q(0919),
+ q(0922),
q(0),
],
q(atorada) => [
- q(0831),
+ q(0834),
q(0),
],
q(atsahuaca) => [
- q(0909),
+ q(0912),
q(0),
],
q(atsam) => [
- q(1680),
+ q(1686),
q(0),
],
q(atsugewi) => [
- q(0927),
+ q(0930),
q(0),
],
q(attapady kurumba) => [
- q(5419),
+ q(5457),
q(0),
],
q(attie) => [
- q(0913),
+ q(0916),
q(0),
],
q(atzingo matlatzinca) => [
- q(5138),
+ q(5176),
q(0),
],
q(au) => [
- q(0962),
+ q(0966),
q(0),
],
q(aulua) => [
- q(0941),
+ q(0944),
q(0),
],
q(aura) => [
- q(0951),
+ q(0954),
q(0),
],
q(aushi) => [
- q(0937),
+ q(0940),
q(0),
],
q(aushiri) => [
- q(0961),
+ q(0965),
q(0),
],
q(austral) => [
- q(0948),
+ q(0951),
q(0),
],
q(australian aborigines sign language) => [
- q(0903),
+ q(0906),
q(0),
],
q(australian languages) => [
@@ -25601,15 +25874,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(australian sign language) => [
- q(0888),
+ q(0891),
q(0),
],
q(austrian sign language) => [
- q(0898),
+ q(0901),
q(0),
],
q(austro-asiatic languages) => [
- q(0486),
+ q(0487),
q(0),
],
q(austronesian languages) => [
@@ -25617,23 +25890,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(auwe) => [
- q(6046),
+ q(6091),
q(0),
],
q(auye) => [
- q(0949),
+ q(0952),
q(0),
],
q(auyokawa) => [
- q(0944),
+ q(0947),
q(0),
],
q(ava guarani) => [
- q(4816),
+ q(4845),
q(0),
],
q(ava-canoeiro) => [
- q(0964),
+ q(0968),
q(0),
],
q(avaric) => [
@@ -25641,15 +25914,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(avatime) => [
- q(0959),
+ q(0963),
q(0),
],
q(avau) => [
- q(0954),
+ q(0957),
q(0),
],
q(avava) => [
- q(6507),
+ q(6556),
q(0),
],
q(avestan) => [
@@ -25657,31 +25930,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(avikam) => [
- q(0956),
+ q(0959),
q(0),
],
q(avokaya) => [
- q(0963),
+ q(0967),
q(0),
],
q(awa (china)) => [
- q(6970),
+ q(7020),
q(0),
],
q(awa (papua new guinea)) => [
- q(0965),
+ q(0969),
q(0),
],
q(awa-cuaiquer) => [
- q(3649),
+ q(3679),
q(0),
],
q(awabakal) => [
- q(0970),
+ q(0975),
q(0),
],
q(awad bing) => [
- q(1078),
+ q(1085),
q(0),
],
q(awadhi) => [
@@ -25689,111 +25962,119 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(awak) => [
- q(0973),
+ q(0978),
q(0),
],
q(awar) => [
- q(0987),
+ q(0993),
q(0),
],
q(awara) => [
- q(0980),
+ q(0985),
q(0),
],
q(awbono) => [
- q(0968),
+ q(0973),
q(0),
],
q(aweer) => [
- q(1348),
+ q(1354),
q(0),
],
q(awera) => [
- q(0974),
+ q(0979),
q(0),
],
q(aweti) => [
- q(0967),
+ q(0971),
q(0),
],
q(awing) => [
- q(1012),
+ q(1020),
q(0),
],
q(awiyaana) => [
- q(0952),
+ q(0955),
q(0),
],
q(awjilah) => [
- q(0939),
+ q(0942),
q(0),
],
q(awngi) => [
- q(0972),
+ q(0977),
+ q(0),
+ ],
+ q(awngthim) => [
+ q(2672),
q(0),
],
q(awtuw) => [
- q(3413),
+ q(3444),
q(0),
],
q(awu) => [
- q(7515),
+ q(7575),
q(0),
],
q(awun) => [
- q(0979),
+ q(0984),
q(0),
],
q(awutu) => [
- q(0651),
+ q(0652),
q(0),
],
q(awyi) => [
- q(0950),
+ q(0953),
q(0),
],
q(axamb) => [
- q(0679),
+ q(0680),
q(0),
],
q(axi yi) => [
- q(7517),
+ q(7577),
q(0),
],
q(ayabadhu) => [
- q(0990),
+ q(0996),
q(0),
],
q(ayacucho quechua) => [
- q(5632),
+ q(5672),
q(0),
],
q(ayangan ifugao) => [
- q(2872),
+ q(2895),
q(0),
],
q(ayautla mazatec) => [
- q(6954),
+ q(7004),
q(0),
],
q(ayere) => [
- q(0991),
+ q(0997),
+ q(0),
+ ],
+ q(ayerrerenge) => [
+ q(0988),
q(0),
],
q(ayi (papua new guinea)) => [
- q(1000),
+ q(1006),
q(0),
],
q(ayiwo) => [
- q(4785),
+ q(4814),
q(0),
],
q(ayizi) => [
- q(7647),
+ q(7713),
q(0),
],
q(ayizo gbe) => [
- q(0988),
+ q(0994),
q(0),
],
q(aymara) => [
@@ -25801,19 +26082,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ayoquesco zapotec) => [
- q(7655),
+ q(7721),
q(0),
],
q(ayoreo) => [
- q(0998),
+ q(1004),
q(0),
],
q(ayu) => [
- q(1004),
+ q(1010),
q(0),
],
q(ayutla mixtec) => [
- q(4267),
+ q(4295),
q(0),
],
q(azerbaijani) => [
@@ -25821,59 +26102,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(azha) => [
- q(1007),
+ q(1013),
q(0),
],
q(azhe) => [
- q(7519),
+ q(7579),
q(0),
],
q(azoyu me'phaa) => [
- q(6576),
+ q(6625),
q(0),
],
q(azoyu tlapanec) => [
- q(6576),
+ q(6625),
q(0),
],
q(baan) => [
- q(1521),
+ q(1527),
q(0),
],
q(baangi) => [
- q(1415),
+ q(1421),
q(0),
],
q(baatonum) => [
- q(1032),
+ q(1039),
q(0),
],
q(baba) => [
- q(1054),
+ q(1061),
q(0),
],
q(baba malay) => [
- q(4078),
+ q(4107),
q(0),
],
q(babalia creole arabic) => [
- q(1057),
+ q(1064),
q(0),
],
q(babango) => [
- q(1044),
+ q(1051),
q(0),
],
q(babanki) => [
- q(1042),
+ q(1049),
q(0),
],
q(babatana) => [
- q(1015),
+ q(1023),
q(0),
],
q(babine) => [
- q(1075),
+ q(1082),
q(0),
],
q(bable) => [
@@ -25881,311 +26162,311 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(babuza) => [
- q(1615),
+ q(1621),
q(0),
],
q(bacama) => [
- q(1081),
+ q(1088),
q(0),
],
q(bacanese malay) => [
- q(1474),
+ q(1480),
q(0),
],
q(bactrian) => [
- q(7196),
+ q(7250),
q(0),
],
q(bada (indonesia)) => [
- q(1203),
+ q(1210),
q(0),
],
q(bada (nigeria)) => [
- q(1026),
+ q(1034),
q(0),
],
q(badaga) => [
- q(1146),
+ q(1153),
q(0),
],
q(bade) => [
- q(1087),
+ q(1094),
q(0),
],
q(badeshi) => [
- q(1108),
+ q(1115),
q(0),
],
q(badi kanum) => [
- q(3282),
+ q(3313),
q(0),
],
q(badimaya) => [
- q(1204),
+ q(1211),
q(0),
],
q(badui) => [
- q(1017),
+ q(1025),
q(0),
],
q(badyara) => [
- q(5309),
+ q(5349),
q(0),
],
q(baeggu) => [
- q(1515),
+ q(1521),
q(0),
],
q(baelelea) => [
- q(1514),
+ q(1520),
q(0),
],
q(baetora) => [
- q(1481),
+ q(1487),
q(0),
],
q(bafanji) => [
- q(1139),
+ q(1146),
q(0),
],
q(bafaw-balong) => [
- q(1555),
+ q(1561),
q(0),
],
q(bafia) => [
- q(3547),
+ q(3577),
q(0),
],
q(bafut) => [
- q(1133),
+ q(1140),
q(0),
],
q(baga binari) => [
- q(1064),
+ q(1071),
q(0),
],
q(baga kaloum) => [
- q(1397),
+ q(1403),
q(0),
],
q(baga koga) => [
- q(1168),
+ q(1175),
q(0),
],
q(baga manduri) => [
- q(1300),
+ q(1306),
q(0),
],
q(baga mboteni) => [
- q(1166),
+ q(1173),
q(0),
],
q(baga sitemu) => [
- q(1456),
+ q(1462),
q(0),
],
q(baga sobane) => [
- q(1462),
+ q(1468),
q(0),
],
q(bagheli) => [
- q(1153),
+ q(1160),
q(0),
],
q(bagirmi) => [
- q(1305),
+ q(1311),
q(0),
],
q(bagirmi fulfulde) => [
- q(2357),
+ q(2377),
q(0),
],
q(bago-kusuntu) => [
- q(1398),
+ q(1404),
q(0),
],
q(bagri) => [
- q(1170),
+ q(1177),
q(0),
],
q(bagupi) => [
- q(1375),
+ q(1381),
q(0),
],
q(bagusa) => [
- q(1394),
+ q(1400),
q(0),
],
q(bagvalal) => [
- q(3615),
+ q(3645),
q(0),
],
q(baha buyang) => [
- q(7498),
+ q(7558),
q(0),
],
q(baham) => [
- q(1105),
+ q(1112),
q(0),
],
q(bahamas creole english) => [
- q(1021),
+ q(1029),
q(0),
],
q(baharna arabic) => [
- q(0579),
+ q(0580),
q(0),
],
q(bahau) => [
- q(1199),
+ q(1206),
q(0),
],
q(bahinemo) => [
- q(1232),
+ q(1238),
q(0),
],
q(bahing) => [
- q(1189),
+ q(1196),
q(0),
],
q(bahnar) => [
- q(1099),
+ q(1106),
q(0),
],
q(bahonsuai) => [
- q(1461),
+ q(1467),
q(0),
],
q(bai) => [
- q(1092),
+ q(1099),
q(0),
],
q(baibai) => [
- q(1037),
+ q(1044),
q(0),
],
q(baikeno) => [
- q(1270),
+ q(1276),
q(0),
],
q(baima) => [
- q(1399),
+ q(1405),
q(0),
],
q(baimak) => [
- q(1320),
+ q(1326),
q(0),
],
q(bainouk-gunyaamolo) => [
- q(1082),
+ q(1089),
q(0),
],
q(bainouk-gunyuno) => [
- q(1016),
+ q(1024),
q(0),
],
q(bainouk-samik) => [
- q(1059),
+ q(1066),
q(0),
],
q(baiso) => [
- q(1463),
+ q(1469),
q(0),
],
q(baissa fali) => [
- q(2299),
+ q(2318),
q(0),
],
q(bajan) => [
- q(1241),
+ q(1247),
q(0),
],
q(bajelani) => [
- q(1237),
+ q(1243),
q(0),
],
q(baka (cameroon)) => [
- q(1250),
+ q(1256),
q(0),
],
q(baka (sudan)) => [
- q(1090),
+ q(1097),
q(0),
],
q(bakairi) => [
- q(1263),
+ q(1269),
q(0),
],
q(bakaka) => [
- q(1417),
+ q(1423),
q(0),
],
q(bakhtiari) => [
- q(1400),
+ q(1406),
q(0),
],
q(baki) => [
- q(1255),
+ q(1261),
q(0),
],
q(bakoko) => [
- q(1254),
+ q(1260),
q(0),
],
q(bakole) => [
- q(3404),
+ q(3435),
q(0),
],
q(bakpinka) => [
- q(1050),
+ q(1057),
q(0),
],
q(bakumpai) => [
- q(1264),
+ q(1270),
q(0),
],
q(bakwe) => [
- q(1245),
+ q(1251),
q(0),
],
q(balaesang) => [
- q(1290),
+ q(1296),
q(0),
],
q(balangao) => [
- q(1293),
+ q(1299),
q(0),
],
q(balangingi) => [
- q(6157),
+ q(6204),
q(0),
],
q(balanta-ganja) => [
- q(1242),
+ q(1248),
q(0),
],
q(balanta-kentohe) => [
- q(1276),
+ q(1282),
q(0),
],
q(balantak) => [
- q(1296),
+ q(1302),
q(0),
],
q(balau) => [
- q(1278),
+ q(1284),
q(0),
],
q(baldemu) => [
- q(1096),
+ q(1103),
q(0),
],
q(bali (democratic republic of congo)) => [
- q(1073),
+ q(1080),
q(0),
],
q(bali (nigeria)) => [
- q(1071),
+ q(1078),
q(0),
],
q(balinese) => [
@@ -26193,27 +26474,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(balinese malay) => [
- q(4237),
+ q(4265),
q(0),
],
q(balkan gagauz turkish) => [
- q(1177),
+ q(1184),
q(0),
],
q(balkan romani) => [
- q(5749),
+ q(5790),
q(0),
],
q(balo) => [
- q(1406),
+ q(1412),
q(0),
],
q(baloi) => [
- q(1224),
+ q(1231),
q(0),
],
q(balti) => [
- q(1149),
+ q(1156),
q(0),
],
q(baltic languages) => [
@@ -26221,11 +26502,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(baltic romani) => [
- q(5747),
+ q(5788),
q(0),
],
q(baluan-pam) => [
- q(1288),
+ q(1294),
q(0),
],
q(baluchi) => [
@@ -26233,19 +26514,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bamako sign language) => [
- q(1351),
+ q(1357),
q(0),
],
q(bamali) => [
- q(1048),
+ q(1055),
q(0),
],
q(bambalang) => [
- q(1311),
+ q(1317),
q(0),
],
q(bambam) => [
- q(5571),
+ q(5611),
q(0),
],
q(bambara) => [
@@ -26253,15 +26534,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bambassi) => [
- q(4629),
+ q(4657),
q(0),
],
q(bambili-bambui) => [
- q(1028),
+ q(1036),
q(0),
],
q(bamenyam) => [
- q(1062),
+ q(1069),
q(0),
],
q(bamileke languages) => [
@@ -26269,47 +26550,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bamu) => [
- q(1063),
+ q(1070),
q(0),
],
q(bamukumbit) => [
- q(1411),
+ q(1417),
q(0),
],
q(bamun) => [
- q(1029),
+ q(1037),
q(0),
],
q(bamunka) => [
- q(1524),
+ q(1530),
q(0),
],
q(bamwe) => [
- q(1303),
+ q(1309),
q(0),
],
q(ban khor sign language) => [
- q(1140),
+ q(1147),
q(0),
],
q(bana) => [
- q(1080),
+ q(1087),
q(0),
],
q(banam bay) => [
- q(6962),
+ q(7012),
q(0),
],
q(banao itneg) => [
- q(1246),
+ q(1252),
q(0),
],
q(banaro) => [
- q(1608),
+ q(1614),
q(0),
],
q(banda (indonesia)) => [
- q(1326),
+ q(1332),
q(0),
],
q(banda languages) => [
@@ -26317,131 +26598,135 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(banda malay) => [
- q(1383),
+ q(1389),
q(0),
],
q(banda-bambari) => [
- q(3882),
+ q(3910),
q(0),
],
q(banda-banda) => [
- q(1372),
+ q(1378),
q(0),
],
q(banda-mbres) => [
- q(1402),
+ q(1408),
q(0),
],
q(banda-ndele) => [
- q(1141),
+ q(1148),
q(0),
],
q(banda-yangere) => [
- q(7442),
+ q(7503),
q(0),
],
q(bandi) => [
- q(1609),
+ q(1615),
q(0),
],
q(bandial) => [
- q(1401),
+ q(1407),
q(0),
],
q(bandjalang) => [
- q(1107),
- q(0),
- ],
- q(bandjigali) => [
- q(1228),
+ q(1114),
q(0),
],
q(bangala) => [
- q(1567),
+ q(1573),
q(0),
],
q(bangandu) => [
- q(1160),
+ q(1167),
q(0),
],
q(bangba) => [
- q(1036),
+ q(1043),
q(0),
],
q(banggai) => [
- q(1179),
+ q(1186),
q(0),
],
q(banggarla) => [
- q(1226),
+ q(1233),
q(0),
],
q(bangi) => [
- q(1330),
+ q(1336),
q(0),
],
q(bangi me) => [
- q(1947),
+ q(1955),
q(0),
],
q(bangingih sama) => [
- q(6157),
+ q(6204),
q(0),
],
q(bangka) => [
- q(4172),
+ q(4201),
q(0),
],
q(bangolan) => [
- q(1163),
+ q(1170),
q(0),
],
q(bangubangu) => [
- q(1344),
+ q(1350),
q(0),
],
q(bangwinji) => [
- q(1450),
+ q(1456),
q(0),
],
q(baniva) => [
- q(1531),
+ q(1537),
q(0),
],
q(baniwa) => [
- q(1544),
+ q(1550),
q(0),
],
q(banjar) => [
- q(1238),
+ q(1244),
q(0),
],
q(bankagooma) => [
- q(1582),
+ q(1588),
+ q(0),
+ ],
+ q(bankal) => [
+ q(3086),
+ q(0),
+ ],
+ q(bankan tey dogon) => [
+ q(1973),
q(0),
],
q(bankon) => [
- q(0560),
+ q(0561),
q(0),
],
q(bannoni) => [
- q(1070),
+ q(1077),
q(0),
],
q(bantawa) => [
- q(1024),
+ q(1032),
q(0),
],
q(bantayanon) => [
- q(1152),
+ q(1159),
q(0),
],
q(bantik) => [
- q(1338),
+ q(1344),
q(0),
],
q(bantoanon) => [
- q(1336),
+ q(1342),
q(0),
],
q(bantu (other)) => [
@@ -26453,127 +26738,135 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(baoule) => [
- q(1066),
+ q(1073),
q(0),
],
q(bara malagasy) => [
- q(1195),
+ q(1202),
q(0),
],
q(baraamu) => [
- q(1420),
+ q(1426),
+ q(0),
+ ],
+ q(barababaraba) => [
+ q(5735),
q(0),
],
q(barai) => [
- q(1033),
+ q(1040),
q(0),
],
q(barakai) => [
- q(1022),
+ q(1030),
q(0),
],
q(baram kayan) => [
- q(3710),
+ q(3740),
q(0),
],
q(barama) => [
- q(1038),
+ q(1045),
q(0),
],
q(barambu) => [
- q(1428),
+ q(1434),
q(0),
],
q(baramu) => [
- q(1322),
+ q(1328),
q(0),
],
q(barapasi) => [
- q(1431),
+ q(1437),
q(0),
],
q(baras) => [
- q(1434),
+ q(1440),
q(0),
],
q(barasana-eduria) => [
- q(1454),
+ q(1460),
q(0),
],
q(barbacoas) => [
- q(1371),
+ q(1377),
q(0),
],
q(barbareno) => [
- q(1353),
+ q(1359),
q(0),
],
q(barclayville grebo) => [
- q(2591),
+ q(2615),
q(0),
],
q(bardi) => [
- q(1067),
+ q(1074),
q(0),
],
q(bare) => [
- q(1018),
+ q(1026),
q(0),
],
q(barein) => [
- q(1512),
+ q(1518),
q(0),
],
q(bargam) => [
- q(4330),
+ q(4358),
q(0),
],
q(bari) => [
- q(1130),
+ q(1137),
q(0),
],
q(bariai) => [
- q(1065),
+ q(1072),
q(0),
],
q(bariji) => [
- q(1227),
+ q(1234),
q(0),
],
q(barikanchi) => [
- q(1575),
+ q(1581),
+ q(0),
+ ],
+ q(barikewa) => [
+ q(3042),
q(0),
],
q(barok) => [
- q(1235),
+ q(1241),
q(0),
],
q(barombi) => [
- q(1040),
+ q(1047),
q(0),
],
q(barro negro tunebo) => [
- q(6314),
+ q(6361),
q(0),
],
q(barrow point) => [
- q(1386),
+ q(1392),
q(0),
],
q(baruga) => [
- q(1248),
+ q(1254),
q(0),
],
q(baruya) => [
- q(1601),
+ q(1607),
q(0),
],
q(barwe) => [
- q(1542),
+ q(1548),
q(0),
],
q(barzani jewish neo-aramaic) => [
- q(1230),
+ q(1236),
q(0),
],
q(basa) => [
@@ -26585,27 +26878,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(basa (nigeria)) => [
- q(1631),
+ q(1637),
q(0),
],
q(basa-gumna) => [
- q(1452),
+ q(1458),
q(0),
],
q(basa-gurmana) => [
- q(1497),
+ q(1503),
q(0),
],
q(basap) => [
- q(1084),
+ q(1091),
q(0),
],
q(basay) => [
- q(1600),
+ q(1606),
q(0),
],
q(bashkardi) => [
- q(1447),
+ q(1453),
q(0),
],
q(bashkir) => [
@@ -26613,7 +26906,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(basketo) => [
- q(1460),
+ q(1466),
q(0),
],
q(basque) => [
@@ -26621,51 +26914,51 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(basque (family)) => [
- q(0502),
+ q(0503),
q(0),
],
q(bassa) => [
- q(1457),
+ q(1463),
q(0),
],
q(bassa-kontagora) => [
- q(1458),
+ q(1464),
q(0),
],
q(bassari) => [
- q(1444),
+ q(1450),
q(0),
],
q(bassossi) => [
- q(1449),
+ q(1455),
q(0),
],
q(bata) => [
- q(1466),
+ q(1472),
q(0),
],
q(batad ifugao) => [
- q(2872),
+ q(2895),
q(0),
],
q(batak) => [
- q(1585),
+ q(1591),
q(0),
],
q(batak alas-kluet) => [
- q(1489),
+ q(1495),
q(0),
],
q(batak angkola) => [
- q(0722),
+ q(0724),
q(0),
],
q(batak dairi) => [
- q(1468),
+ q(1474),
q(0),
],
q(batak karo) => [
- q(1487),
+ q(1493),
q(0),
],
q(batak languages) => [
@@ -26673,155 +26966,155 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(batak mandailing) => [
- q(1476),
+ q(1482),
q(0),
],
q(batak simalungun) => [
- q(1482),
+ q(1488),
q(0),
],
q(batak toba) => [
- q(1034),
+ q(1041),
q(0),
],
q(batanga) => [
- q(1334),
+ q(1340),
q(0),
],
q(batek) => [
- q(1480),
+ q(1486),
q(0),
],
q(bateri) => [
- q(1485),
+ q(1491),
q(0),
],
q(bathari) => [
- q(1191),
+ q(1198),
q(0),
],
q(bati (cameroon)) => [
- q(1467),
+ q(1473),
q(0),
],
q(bati (indonesia)) => [
- q(1529),
+ q(1535),
q(0),
],
q(bats) => [
- q(1043),
+ q(1050),
q(0),
],
q(batu) => [
- q(1484),
+ q(1490),
q(0),
],
q(batui) => [
- q(7676),
+ q(7742),
q(0),
],
q(batuley) => [
- q(1030),
+ q(1038),
q(0),
],
q(bau) => [
- q(1035),
+ q(1042),
q(0),
],
q(bau bidayuh) => [
- q(6064),
+ q(6109),
q(0),
],
q(bauchi) => [
- q(1446),
+ q(1452),
q(0),
],
q(baure) => [
- q(1422),
+ q(1428),
q(0),
],
q(bauria) => [
- q(1159),
+ q(1166),
q(0),
],
q(bauro) => [
- q(1561),
+ q(1567),
q(0),
],
q(bauwaki) => [
- q(1546),
+ q(1552),
q(0),
],
q(bauzi) => [
- q(1535),
+ q(1541),
q(0),
],
q(bavarian) => [
- q(1025),
+ q(1033),
q(0),
],
q(bawm chin) => [
- q(1171),
+ q(1178),
q(0),
],
q(bay miwok) => [
- q(4306),
+ q(4334),
q(0),
],
q(bayali) => [
- q(1247),
+ q(1253),
q(0),
],
q(baybayanon) => [
- q(1534),
+ q(1540),
q(0),
],
q(baygo) => [
- q(1591),
+ q(1597),
q(0),
],
q(bayono) => [
- q(1596),
+ q(1602),
q(0),
],
q(bayot) => [
- q(1083),
+ q(1090),
q(0),
],
q(bayungu) => [
- q(1570),
+ q(1576),
q(0),
],
q(bazigar) => [
- q(1147),
+ q(1154),
q(0),
],
q(beami) => [
- q(1119),
+ q(1126),
q(0),
],
q(beaver) => [
- q(1109),
+ q(1116),
q(0),
],
q(beba) => [
- q(1145),
+ q(1152),
q(0),
],
q(bebe) => [
- q(1630),
+ q(1636),
q(0),
],
q(bebele) => [
- q(1110),
+ q(1117),
q(0),
],
q(bebeli) => [
- q(1118),
+ q(1125),
q(0),
],
q(bebil) => [
- q(1576),
+ q(1582),
q(0),
],
q(bedawiyet) => [
@@ -26829,39 +27122,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bedik) => [
- q(6545),
+ q(6594),
q(0),
],
q(bedjond) => [
- q(1244),
+ q(1250),
q(0),
],
q(bedoanas) => [
- q(1112),
+ q(1119),
q(0),
],
q(beeke) => [
- q(1252),
+ q(1258),
q(0),
],
q(beele) => [
- q(1577),
+ q(1583),
q(0),
],
q(beembe) => [
- q(1121),
+ q(1128),
q(0),
],
q(beezen) => [
- q(1346),
+ q(1352),
q(0),
],
q(befang) => [
- q(1056),
+ q(1063),
q(0),
],
q(begbere-ejar) => [
- q(1413),
+ q(1419),
q(0),
],
q(beja) => [
@@ -26869,27 +27162,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bekati') => [
- q(1117),
+ q(1124),
q(0),
],
q(bekwarra) => [
- q(1268),
+ q(1274),
q(0),
],
q(bekwel) => [
- q(1269),
+ q(1275),
q(0),
],
q(belait) => [
- q(1115),
+ q(1122),
q(0),
],
q(belanda bor) => [
- q(1562),
+ q(1568),
q(0),
],
q(belanda viri) => [
- q(1520),
+ q(1526),
q(0),
],
q(belarusian) => [
@@ -26897,27 +27190,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(belhariya) => [
- q(1605),
+ q(1611),
q(0),
],
q(beli (papua new guinea)) => [
- q(1128),
+ q(1135),
q(0),
],
q(beli (sudan)) => [
- q(1284),
+ q(1290),
q(0),
],
q(belize kriol english) => [
- q(1618),
+ q(1624),
q(0),
],
q(bella coola) => [
- q(1274),
+ q(1280),
q(0),
],
q(bellari) => [
- q(1438),
+ q(1444),
q(0),
],
q(bemba) => [
@@ -26925,7 +27218,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bemba (democratic republic of congo)) => [
- q(1321),
+ q(1327),
q(0),
],
q(bemba (zambia)) => [
@@ -26933,43 +27226,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(bembe) => [
- q(1298),
+ q(1304),
+ q(0),
+ ],
+ q(ben tey dogon) => [
+ q(1970),
q(0),
],
q(bena (nigeria)) => [
- q(7626),
+ q(7690),
q(0),
],
q(bena (tanzania)) => [
- q(1129),
+ q(1136),
q(0),
],
q(benabena) => [
- q(1114),
+ q(1121),
q(0),
],
q(bench) => [
- q(1074),
+ q(1081),
q(0),
],
q(bende) => [
- q(1098),
+ q(1105),
q(0),
],
q(bendi) => [
- q(1077),
+ q(1084),
q(0),
],
q(beneraf) => [
- q(1342),
+ q(1348),
q(0),
],
q(beng) => [
- q(4814),
+ q(4843),
q(0),
],
q(benga) => [
- q(1329),
+ q(1335),
q(0),
],
q(bengali) => [
@@ -26977,39 +27274,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(benggoi) => [
- q(1178),
+ q(1185),
q(0),
],
q(bengkala sign language) => [
- q(1416),
+ q(1422),
q(0),
],
q(bentong) => [
- q(1341),
+ q(1347),
q(0),
],
q(benyadu') => [
- q(1588),
+ q(1594),
q(0),
],
q(beothuk) => [
- q(1493),
+ q(1499),
q(0),
],
q(bepour) => [
- q(1208),
+ q(1215),
q(0),
],
q(bera) => [
- q(1421),
+ q(1427),
q(0),
],
q(berakou) => [
- q(1581),
+ q(1587),
q(0),
],
q(berau malay) => [
- q(1516),
+ q(1522),
q(0),
],
q(berber languages) => [
@@ -27017,107 +27314,107 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(berbice creole dutch) => [
- q(1419),
+ q(1425),
q(0),
],
q(berik) => [
- q(1258),
+ q(1264),
q(0),
],
q(berinomo) => [
- q(1218),
+ q(1225),
q(0),
],
q(berom) => [
- q(1357),
+ q(1363),
q(0),
],
q(berta) => [
- q(7148),
+ q(7201),
q(0),
],
q(berti) => [
- q(1603),
+ q(1609),
q(0),
],
q(besisi) => [
- q(4226),
+ q(4254),
q(0),
],
q(besme) => [
- q(1122),
+ q(1129),
q(0),
],
q(besoa) => [
- q(1120),
+ q(1127),
q(0),
],
q(betaf) => [
- q(1134),
+ q(1141),
q(0),
],
q(betawi) => [
- q(1126),
+ q(1133),
q(0),
],
q(bete) => [
- q(1590),
+ q(1596),
q(0),
],
q(bete-bendi) => [
- q(1483),
+ q(1489),
q(0),
],
q(beti (cote d'ivoire)) => [
- q(2253),
+ q(2272),
q(0),
],
q(betta kurumba) => [
- q(7404),
+ q(7462),
q(0),
],
q(bezhta) => [
- q(3124),
+ q(3157),
q(0),
],
q(bhadrawahi) => [
- q(1183),
+ q(1190),
q(0),
],
q(bhalay) => [
- q(1201),
+ q(1208),
q(0),
],
q(bharia) => [
- q(1180),
+ q(1187),
q(0),
],
q(bhatola) => [
- q(1475),
+ q(1481),
q(0),
],
q(bhatri) => [
- q(1176),
+ q(1183),
q(0),
],
q(bhattiyali) => [
- q(1197),
+ q(1204),
q(0),
],
q(bhaya) => [
- q(1184),
+ q(1191),
q(0),
],
q(bhele) => [
- q(1202),
+ q(1209),
q(0),
],
q(bhilali) => [
- q(1188),
+ q(1195),
q(0),
],
q(bhili) => [
- q(1181),
+ q(1188),
q(0),
],
q(bhojpuri) => [
@@ -27125,91 +27422,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bhoti kinnauri) => [
- q(4777),
+ q(4805),
q(0),
],
q(bhujel) => [
- q(1592),
+ q(1598),
q(0),
],
q(bhunjia) => [
- q(1198),
+ q(1205),
q(0),
],
q(biafada) => [
- q(1209),
+ q(1216),
q(0),
],
q(biage) => [
- q(1088),
+ q(1095),
q(0),
],
q(biak) => [
- q(1200),
+ q(1207),
q(0),
],
q(biali) => [
- q(1116),
+ q(1123),
q(0),
],
q(bian marind) => [
- q(1388),
+ q(1394),
q(0),
],
q(biangai) => [
- q(1210),
+ q(1217),
q(0),
],
q(biao) => [
- q(1595),
+ q(1601),
q(0),
],
q(biao mon) => [
- q(1316),
+ q(1322),
q(0),
],
q(biao-jiao mien) => [
- q(1229),
+ q(1235),
q(0),
],
q(biatah bidayuh) => [
- q(1472),
+ q(1478),
+ q(0),
+ ],
+ q(bidhawal) => [
+ q(2914),
q(0),
],
q(bidiyo) => [
- q(1207),
+ q(1214),
q(0),
],
q(bidyara) => [
- q(1597),
+ q(1603),
q(0),
],
q(bidyogo) => [
- q(1231),
+ q(1237),
q(0),
],
q(biem) => [
- q(1299),
+ q(1305),
q(0),
],
q(bierebo) => [
- q(1332),
+ q(1338),
q(0),
],
q(bieria) => [
- q(1425),
+ q(1431),
q(0),
],
q(biete) => [
- q(1219),
+ q(1226),
q(0),
],
q(big nambas) => [
- q(4915),
+ q(4944),
q(0),
],
q(biga) => [
- q(1182),
+ q(1189),
q(0),
],
q(bihari languages) => [
@@ -27217,11 +27518,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bijori) => [
- q(1222),
+ q(1229),
q(0),
],
q(bikaru) => [
- q(1206),
+ q(1213),
q(0),
],
q(bikol) => [
@@ -27229,31 +27530,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bikya) => [
- q(1586),
+ q(1592),
q(0),
],
q(bila) => [
- q(1215),
+ q(1222),
q(0),
],
q(bilakura) => [
- q(1403),
+ q(1409),
q(0),
],
q(bilaspuri) => [
- q(3247),
+ q(3279),
q(0),
],
q(bilba) => [
- q(1392),
+ q(1398),
q(0),
],
q(bilbil) => [
- q(1441),
+ q(1447),
q(0),
],
q(bile) => [
- q(1212),
+ q(1219),
q(0),
],
q(bilin) => [
@@ -27261,51 +27562,51 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bilma kanuri) => [
- q(1315),
+ q(1321),
q(0),
],
q(biloxi) => [
- q(1283),
+ q(1289),
q(0),
],
q(bilua) => [
- q(1273),
+ q(1279),
q(0),
],
q(bilur) => [
- q(1566),
+ q(1572),
q(0),
],
q(bima) => [
- q(1193),
+ q(1200),
q(0),
],
q(bimin) => [
- q(1190),
+ q(1197),
q(0),
],
q(bimoba) => [
- q(1213),
+ q(1220),
q(0),
],
q(bina (nigeria)) => [
- q(1594),
+ q(1600),
q(0),
],
q(bina (papua new guinea)) => [
- q(1310),
+ q(1316),
q(0),
],
q(binahari) => [
- q(1584),
+ q(1590),
q(0),
],
q(binandere) => [
- q(1186),
+ q(1193),
q(0),
],
q(bine) => [
- q(1358),
+ q(1364),
q(0),
],
q(bini) => [
@@ -27313,87 +27614,87 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(binji) => [
- q(1376),
+ q(1382),
q(0),
],
q(binongan itneg) => [
- q(2966),
+ q(2990),
q(0),
],
q(bintauna) => [
- q(1327),
+ q(1333),
q(0),
],
q(bintulu) => [
- q(1345),
+ q(1351),
q(0),
],
q(binukid) => [
- q(1251),
+ q(1257),
q(0),
],
q(binumarien) => [
- q(1240),
+ q(1246),
q(0),
],
q(bipi) => [
- q(1216),
+ q(1223),
q(0),
],
q(birale) => [
- q(1565),
+ q(1571),
q(0),
],
q(birao) => [
- q(1433),
+ q(1439),
q(0),
],
q(birgit) => [
- q(1470),
+ q(1476),
q(0),
],
q(birhor) => [
- q(1223),
+ q(1230),
q(0),
],
q(biri) => [
- q(1626),
+ q(1632),
q(0),
],
q(biritai) => [
- q(1408),
+ q(1414),
q(0),
],
q(birked) => [
- q(1426),
+ q(1432),
q(0),
],
q(birri) => [
- q(1527),
+ q(1533),
q(0),
],
q(birwa) => [
- q(1427),
+ q(1433),
q(0),
],
q(bisa) => [
- q(1205),
+ q(1212),
q(0),
],
q(biseni) => [
- q(2892),
+ q(2916),
q(0),
],
q(bishnupriya) => [
- q(1391),
+ q(1397),
q(0),
],
q(bishuo) => [
- q(1543),
+ q(1549),
q(0),
],
q(bisis) => [
- q(1343),
+ q(1349),
q(0),
],
q(bislama) => [
@@ -27401,55 +27702,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bisorio) => [
- q(1217),
+ q(1224),
q(0),
],
q(bissa) => [
- q(1205),
+ q(1212),
q(0),
],
q(bisu) => [
- q(1617),
+ q(1623),
q(0),
],
q(bit) => [
- q(1164),
+ q(1171),
q(0),
],
q(bitare) => [
- q(1435),
+ q(1441),
q(0),
],
q(bitur) => [
- q(4100),
+ q(4129),
q(0),
],
q(biwat) => [
- q(1548),
+ q(1554),
q(0),
],
q(biyo) => [
- q(1598),
+ q(1604),
q(0),
],
q(biyom) => [
- q(1379),
+ q(1385),
q(0),
],
q(blablanga) => [
- q(1287),
+ q(1293),
q(0),
],
q(blafe) => [
- q(1137),
+ q(1144),
q(0),
],
q(blagar) => [
- q(1124),
+ q(1131),
q(0),
],
q(blang) => [
- q(1289),
+ q(1295),
q(0),
],
q(blin) => [
@@ -27469,83 +27770,83 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bo (laos)) => [
- q(1165),
+ q(1172),
q(0),
],
q(bo (papua new guinea)) => [
- q(1389),
+ q(1395),
q(0),
],
q(bo-rukul) => [
- q(4062),
+ q(4091),
q(0),
],
q(bo-ung) => [
- q(4548),
+ q(4576),
q(0),
],
q(boano (maluku)) => [
- q(1622),
+ q(1628),
q(0),
],
q(boano (sulawesi)) => [
- q(1620),
+ q(1626),
q(0),
],
q(bobongko) => [
- q(1156),
+ q(1163),
q(0),
],
q(bobot) => [
- q(1488),
+ q(1494),
q(0),
],
q(bodo (central african republic)) => [
- q(1368),
+ q(1374),
q(0),
],
q(bodo (india)) => [
- q(1439),
+ q(1445),
q(0),
],
q(bodo gadaba) => [
- q(2400),
+ q(2419),
q(0),
],
q(bodo parja) => [
- q(1104),
+ q(1111),
q(0),
],
q(bofi) => [
- q(1135),
+ q(1142),
q(0),
],
q(boga) => [
- q(1532),
+ q(1538),
q(0),
],
q(bogaya) => [
- q(1361),
+ q(1367),
q(0),
],
q(boghom) => [
- q(1509),
+ q(1515),
q(0),
],
q(boguru) => [
- q(1412),
+ q(1418),
q(0),
],
q(bohtan neo-aramaic) => [
- q(1192),
+ q(1199),
q(0),
],
q(boikin) => [
- q(1614),
+ q(1620),
q(0),
],
q(bokha) => [
- q(7464),
+ q(7524),
q(0),
],
q(bokmal, norwegian) => [
@@ -27553,243 +27854,243 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(boko (benin)) => [
- q(1395),
+ q(1401),
q(0),
],
q(boko (democratic republic of congo)) => [
- q(1262),
+ q(1268),
q(0),
],
q(bokobaru) => [
- q(1504),
+ q(1510),
q(0),
],
q(bokoto) => [
- q(1102),
+ q(1109),
q(0),
],
q(bokyi) => [
- q(1271),
+ q(1277),
q(0),
],
q(bola) => [
- q(1337),
+ q(1343),
q(0),
],
q(bolango) => [
- q(1275),
+ q(1281),
q(0),
],
q(bole) => [
- q(1356),
+ q(1362),
q(0),
],
q(bolgarian) => [
- q(7200),
+ q(7254),
q(0),
],
q(bolgo) => [
- q(1526),
+ q(1532),
q(0),
],
q(bolia) => [
- q(1280),
+ q(1286),
q(0),
],
q(bolinao) => [
- q(6049),
+ q(6094),
q(0),
],
q(bolivian sign language) => [
- q(1523),
+ q(1529),
q(0),
],
q(bolo) => [
- q(1292),
+ q(1298),
q(0),
],
q(boloki) => [
- q(1266),
+ q(1272),
q(0),
],
q(bolon) => [
- q(1350),
+ q(1356),
q(0),
],
q(bolondo) => [
- q(1621),
+ q(1627),
q(0),
],
q(bolongan) => [
- q(1281),
+ q(1287),
q(0),
],
q(bolyu) => [
- q(5443),
+ q(5481),
q(0),
],
q(bom) => [
- q(1302),
+ q(1308),
q(0),
],
q(boma) => [
- q(1352),
+ q(1358),
q(0),
],
q(bomboli) => [
- q(1308),
+ q(1314),
q(0),
],
q(bomboma) => [
- q(1554),
+ q(1560),
q(0),
],
q(bomitaba) => [
- q(7742),
+ q(7810),
q(0),
],
q(bomu) => [
- q(1313),
+ q(1319),
q(0),
],
q(bomwali) => [
- q(1319),
+ q(1325),
q(0),
],
q(bon gula) => [
- q(2508),
+ q(2530),
q(0),
],
q(bonan) => [
- q(5347),
+ q(5386),
q(0),
],
q(bondei) => [
- q(1364),
+ q(1370),
q(0),
],
q(bondo) => [
- q(1151),
+ q(1158),
q(0),
],
q(bondoukou kulango) => [
- q(3720),
+ q(3750),
q(0),
],
q(bondum dom dogon) => [
- q(1962),
+ q(1971),
q(0),
],
q(bonerate) => [
- q(1323),
+ q(1329),
q(0),
],
q(bonerif) => [
- q(1342),
+ q(1348),
q(0),
],
q(bonggi) => [
- q(1089),
+ q(1096),
q(0),
],
q(bonggo) => [
- q(1373),
+ q(1379),
q(0),
],
q(bongili) => [
- q(1496),
+ q(1502),
q(0),
],
q(bongo) => [
- q(1363),
+ q(1369),
q(0),
],
q(bongu) => [
- q(1387),
+ q(1393),
q(0),
],
q(bonjo) => [
- q(1355),
+ q(1361),
q(0),
],
q(bonkeng) => [
- q(1518),
+ q(1524),
q(0),
],
q(bonkiman) => [
- q(1360),
+ q(1366),
q(0),
],
q(bontok) => [
- q(1325),
+ q(1331),
q(0),
],
q(bookan) => [
- q(1324),
+ q(1330),
q(0),
],
q(boon) => [
- q(1333),
+ q(1339),
q(0),
],
q(boor) => [
- q(1517),
+ q(1523),
q(0),
],
q(bora) => [
- q(1347),
+ q(1353),
q(0),
],
q(borana-arsi-guji oromo) => [
- q(2390),
+ q(2410),
q(0),
],
q(border kuna) => [
- q(3628),
+ q(3658),
q(0),
],
q(borei) => [
- q(2376),
+ q(2396),
q(0),
],
q(borgu fulfulde) => [
- q(2354),
+ q(2374),
q(0),
],
q(borna (democratic republic of congo)) => [
- q(1583),
+ q(1589),
q(0),
],
q(borna (ethiopia)) => [
- q(1550),
+ q(1556),
q(0),
],
q(boro (ethiopia)) => [
- q(1550),
+ q(1556),
q(0),
],
q(boro (ghana)) => [
- q(7425),
+ q(7485),
q(0),
],
q(borong) => [
- q(3559),
+ q(3589),
q(0),
],
q(bororo) => [
- q(1362),
+ q(1368),
q(0),
],
q(boruca) => [
- q(1429),
+ q(1435),
q(0),
],
q(boselewa) => [
- q(1541),
+ q(1547),
q(0),
],
q(bosngun) => [
- q(1410),
+ q(1416),
q(0),
],
q(bosnian) => [
@@ -27797,35 +28098,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bote-majhi) => [
- q(1306),
+ q(1312),
q(0),
],
q(botlikh) => [
- q(1374),
+ q(1380),
q(0),
],
q(botolan sambal) => [
- q(5840),
+ q(5884),
q(0),
],
q(bouna kulango) => [
- q(4893),
+ q(4923),
q(0),
],
q(bouyei) => [
- q(5319),
+ q(5358),
q(0),
],
q(bozaba) => [
- q(1623),
+ q(1629),
q(0),
],
q(bragat) => [
- q(0819),
+ q(0821),
q(0),
],
q(brahui) => [
- q(1423),
+ q(1429),
q(0),
],
q(braj) => [
@@ -27833,19 +28134,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(brazilian sign language) => [
- q(1627),
- q(0),
- ],
- q(brek karen) => [
- q(3626),
+ q(1633),
q(0),
],
q(brem) => [
- q(1503),
+ q(1509),
q(0),
],
q(breri) => [
- q(1432),
+ q(1438),
q(0),
],
q(breton) => [
@@ -27853,115 +28150,115 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bribri) => [
- q(1612),
+ q(1618),
q(0),
],
q(brithenig) => [
- q(1628),
+ q(1634),
q(0),
],
q(british sign language) => [
- q(1138),
+ q(1145),
q(0),
],
q(brokkat) => [
- q(1430),
+ q(1436),
q(0),
],
q(brokpake) => [
- q(5931),
+ q(5976),
q(0),
],
q(brokskat) => [
- q(1257),
+ q(1263),
q(0),
],
q(brooke's point palawano) => [
- q(5442),
+ q(5480),
q(0),
],
q(broome pearling lugger pidgin) => [
- q(1378),
+ q(1384),
q(0),
],
q(brunei) => [
- q(3670),
+ q(3700),
q(0),
],
q(brunei bisaya) => [
- q(1443),
+ q(1449),
q(0),
],
q(bu) => [
- q(3046),
+ q(3073),
q(0),
],
q(bu-nao bunu) => [
- q(1558),
+ q(1564),
q(0),
],
q(bua) => [
- q(1490),
+ q(1496),
q(0),
],
q(bualkhaw chin) => [
- q(1665),
+ q(1671),
q(0),
],
q(buamu) => [
- q(1367),
+ q(1373),
q(0),
],
q(bube) => [
- q(1513),
+ q(1519),
q(0),
],
q(bubi) => [
- q(1508),
+ q(1514),
q(0),
],
q(bubia) => [
- q(1055),
+ q(1062),
q(0),
],
q(budeh stieng) => [
- q(6196),
+ q(6243),
q(0),
],
q(budibud) => [
- q(1479),
+ q(1485),
q(0),
],
q(budong-budong) => [
- q(1106),
+ q(1113),
q(0),
],
q(budu) => [
- q(1506),
+ q(1512),
q(0),
],
q(budukh) => [
- q(1093),
+ q(1100),
q(0),
],
q(buduma) => [
- q(1095),
+ q(1102),
q(0),
],
q(budza) => [
- q(1225),
+ q(1232),
q(0),
],
q(bugan) => [
- q(1039),
+ q(1046),
q(0),
],
q(bugawac) => [
- q(1498),
+ q(1504),
q(0),
],
q(bughotu) => [
- q(1173),
+ q(1180),
q(0),
],
q(buginese) => [
@@ -27969,59 +28266,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(buglere) => [
- q(5813),
+ q(5857),
q(0),
],
q(bugun) => [
- q(1161),
+ q(1168),
q(0),
],
q(buhi'non bikol) => [
- q(6774),
+ q(6824),
q(0),
],
q(buhid) => [
- q(1267),
+ q(1273),
q(0),
],
q(buhutu) => [
- q(1568),
+ q(1574),
q(0),
],
q(bukar-sadung bidayuh) => [
- q(5883),
+ q(5926),
q(0),
],
q(bukat) => [
- q(1522),
+ q(1528),
q(0),
],
q(bukharic) => [
- q(1187),
+ q(1194),
q(0),
],
q(bukit malay) => [
- q(1530),
+ q(1536),
q(0),
],
q(bukitan) => [
- q(1260),
+ q(1266),
q(0),
],
q(bukiyip) => [
- q(0836),
+ q(0839),
q(0),
],
q(buksa) => [
- q(6468),
+ q(6518),
q(0),
],
q(bukusu) => [
- q(1571),
+ q(1577),
q(0),
],
q(bukwen) => [
- q(1511),
+ q(1517),
q(0),
],
q(bulgarian) => [
@@ -28029,131 +28326,131 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(bulgarian sign language) => [
- q(1405),
+ q(1411),
q(0),
],
q(bulgebi) => [
- q(1312),
+ q(1318),
q(0),
],
q(buli (ghana)) => [
- q(1556),
+ q(1562),
q(0),
],
q(buli (indonesia)) => [
- q(1625),
+ q(1631),
q(0),
],
q(bullom so) => [
- q(1510),
+ q(1516),
q(0),
],
q(bulo stieng) => [
- q(6185),
+ q(6232),
q(0),
],
q(bulu (cameroon)) => [
- q(1499),
+ q(1505),
q(0),
],
q(bulu (papua new guinea)) => [
- q(1236),
+ q(1242),
q(0),
],
q(bum) => [
- q(1318),
+ q(1324),
q(0),
],
q(bumaji) => [
- q(1599),
+ q(1605),
q(0),
],
q(bumbita arapesh) => [
- q(0827),
+ q(0829),
q(0),
],
q(bumthangkha) => [
- q(3348),
+ q(3379),
q(0),
],
q(bun) => [
- q(1507),
+ q(1513),
q(0),
],
q(buna) => [
- q(1525),
+ q(1531),
q(0),
],
q(bunaba) => [
- q(1068),
+ q(1075),
q(0),
],
q(bunak) => [
- q(1143),
+ q(1150),
q(0),
],
q(bunama) => [
- q(1086),
+ q(1093),
q(0),
],
q(bundeli) => [
- q(1340),
+ q(1346),
q(0),
],
q(bung) => [
- q(1396),
+ q(1402),
q(0),
],
q(bungain) => [
- q(1505),
+ q(1511),
q(0),
],
q(bungku) => [
- q(1272),
+ q(1278),
q(0),
],
q(bungu) => [
- q(7158),
+ q(7211),
q(0),
],
q(bunoge dogon) => [
- q(1992),
+ q(2004),
q(0),
],
q(bunun) => [
- q(1335),
+ q(1341),
q(0),
],
q(buol) => [
- q(1277),
+ q(1283),
q(0),
],
q(bura-pabir) => [
- q(1553),
+ q(1559),
q(0),
],
q(burak) => [
- q(1602),
+ q(1608),
q(0),
],
q(buraka) => [
- q(1253),
+ q(1259),
q(0),
],
q(burarra) => [
- q(1528),
+ q(1534),
q(0),
],
q(burate) => [
- q(1473),
+ q(1479),
q(0),
],
q(burduna) => [
- q(1574),
+ q(1580),
q(0),
],
q(bure) => [
- q(1519),
+ q(1525),
q(0),
],
q(buriat) => [
@@ -28161,11 +28458,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(burji) => [
- q(1233),
+ q(1239),
q(0),
],
q(burmbar) => [
- q(6962),
+ q(7012),
q(0),
],
q(burmese) => [
@@ -28173,191 +28470,191 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(burmeso) => [
- q(1629),
+ q(1635),
q(0),
],
q(buru (indonesia)) => [
- q(4240),
+ q(4268),
q(0),
],
q(buru (nigeria)) => [
- q(1414),
+ q(1420),
q(0),
],
q(burui) => [
- q(1440),
+ q(1446),
q(0),
],
q(burumakok) => [
- q(0706),
+ q(0707),
q(0),
],
q(burun) => [
- q(1091),
+ q(1098),
q(0),
],
q(burunge) => [
- q(1101),
+ q(1108),
q(0),
],
q(burushaski) => [
- q(1451),
+ q(1457),
q(0),
],
q(burusu) => [
- q(1409),
+ q(1415),
q(0),
],
q(buruwai) => [
- q(0891),
+ q(0894),
q(0),
],
q(busa) => [
- q(1407),
+ q(1413),
q(0),
],
q(busam) => [
- q(1579),
+ q(1585),
q(0),
],
q(busami) => [
- q(1453),
+ q(1459),
q(0),
],
q(busang kayan) => [
- q(1136),
+ q(1143),
q(0),
],
q(bushi) => [
- q(1491),
+ q(1497),
q(0),
],
q(bushoong) => [
- q(1494),
+ q(1500),
q(0),
],
q(businenge tongo) => [
- q(2048),
+ q(2064),
q(0),
],
q(buso) => [
- q(1455),
+ q(1461),
q(0),
],
q(busoa) => [
- q(1502),
+ q(1508),
q(0),
],
q(bussa) => [
- q(2108),
+ q(2126),
q(0),
],
q(busuu) => [
- q(1243),
+ q(1249),
q(0),
],
q(butbut kalinga) => [
- q(3693),
+ q(3723),
q(0),
],
q(butmas-tur) => [
- q(1339),
+ q(1345),
q(0),
],
q(butuanon) => [
- q(1486),
+ q(1492),
q(0),
],
q(buwal) => [
- q(1196),
+ q(1203),
q(0),
],
q(buxinhua) => [
- q(1164),
+ q(1171),
q(0),
],
q(buya) => [
- q(1607),
+ q(1613),
q(0),
],
q(buyu) => [
- q(1593),
+ q(1599),
q(0),
],
q(buyuan jinuo) => [
- q(3058),
+ q(3085),
q(0),
],
q(bwa) => [
- q(1557),
+ q(1563),
q(0),
],
q(bwaidoka) => [
- q(1539),
+ q(1545),
q(0),
],
q(bwanabwana) => [
- q(6659),
+ q(6708),
q(0),
],
q(bwatoo) => [
- q(1536),
+ q(1542),
q(0),
],
q(bwe karen) => [
- q(1540),
+ q(1546),
q(0),
],
q(bwela) => [
- q(1547),
+ q(1553),
q(0),
],
q(bwile) => [
- q(1538),
+ q(1544),
q(0),
],
q(bwisi) => [
- q(1560),
+ q(1566),
q(0),
],
q(byangsi) => [
- q(1113),
+ q(1120),
q(0),
],
q(byep) => [
- q(4300),
+ q(4328),
q(0),
],
q(c'lela) => [
- q(2117),
+ q(2135),
q(0),
],
q(caac) => [
- q(4496),
+ q(4524),
q(0),
],
q(cabecar) => [
- q(1746),
+ q(1752),
q(0),
],
q(cabiyari) => [
- q(1656),
+ q(1662),
q(0),
],
q(cacaloxtepec mixtec) => [
- q(4264),
+ q(4292),
q(0),
],
q(cacaopera) => [
- q(1687),
+ q(1692),
q(0),
],
q(cacgia roglai) => [
- q(5769),
+ q(5811),
q(0),
],
q(cacua) => [
- q(1672),
+ q(1678),
q(0),
],
q(caddo) => [
@@ -28365,211 +28662,211 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(caddoan languages) => [
- q(0497),
+ q(0498),
q(0),
],
q(cafundo creole) => [
- q(1677),
+ q(1683),
q(0),
],
q(cagua) => [
- q(1661),
+ q(1667),
q(0),
],
q(cahuarano) => [
- q(1641),
+ q(1647),
q(0),
],
q(cahuilla) => [
- q(1719),
+ q(1725),
q(0),
],
q(cajamarca quechua) => [
- q(5635),
+ q(5675),
q(0),
],
q(cajatambo north lima quechua) => [
- q(5640),
+ q(5680),
q(0),
],
q(cajonos zapotec) => [
- q(7653),
+ q(7719),
q(0),
],
q(cajun french) => [
- q(2342),
+ q(2362),
q(0),
],
q(caka) => [
- q(1761),
+ q(1766),
q(0),
],
q(cakchiquel) => [
- q(1643),
+ q(1649),
q(0),
],
q(cakchiquel-quiche mixed language) => [
- q(1763),
+ q(1768),
q(0),
],
q(cakfem-mushere) => [
- q(1762),
+ q(1767),
q(0),
],
q(calamian tagbanwa) => [
- q(6311),
+ q(6358),
q(0),
],
q(calderon highland quichua) => [
- q(5616),
+ q(5656),
q(0),
],
q(callawalla) => [
- q(1652),
+ q(1658),
q(0),
],
q(calo) => [
- q(5752),
+ q(5793),
q(0),
],
q(caluyanun) => [
- q(1774),
+ q(1781),
q(0),
],
q(cameroon mambila) => [
- q(4118),
+ q(4147),
q(0),
],
q(cameroon pidgin) => [
- q(7023),
+ q(7073),
q(0),
],
q(camling) => [
- q(5671),
+ q(5711),
q(0),
],
q(campalagian) => [
- q(1781),
+ q(1788),
q(0),
],
q(campidanese sardinian) => [
- q(6144),
+ q(6191),
q(0),
],
q(camsa) => [
- q(3135),
+ q(3168),
q(0),
],
q(camtho) => [
- q(1787),
+ q(1794),
q(0),
],
q(camunic) => [
- q(7205),
+ q(7259),
q(0),
],
q(canar highland quichua) => [
- q(5663),
+ q(5703),
q(0),
],
q(candoshi-shapra) => [
- q(1671),
+ q(1677),
q(0),
],
q(canela) => [
- q(5680),
+ q(5720),
q(0),
],
q(canichana) => [
- q(1655),
+ q(1661),
q(0),
],
q(cao lan) => [
- q(4318),
+ q(4346),
q(0),
],
q(cao miao) => [
- q(1819),
+ q(1826),
q(0),
],
q(capanahua) => [
- q(3125),
+ q(3158),
q(0),
],
q(capiznon) => [
- q(1830),
+ q(1837),
q(0),
],
q(cappadocian greek) => [
- q(1827),
+ q(1834),
q(0),
],
q(caquinte) => [
- q(1817),
+ q(1824),
q(0),
],
q(car nicobarese) => [
- q(1649),
+ q(1655),
q(0),
],
q(cara) => [
- q(1707),
+ q(1713),
q(0),
],
q(carabayo) => [
- q(1674),
+ q(1680),
q(0),
],
q(caramanta) => [
- q(1840),
+ q(1847),
q(0),
],
q(carapana) => [
- q(1657),
+ q(1663),
q(0),
],
q(carian) => [
- q(7213),
+ q(7267),
q(0),
],
q(caribbean hindustani) => [
- q(2768),
+ q(2793),
q(0),
],
q(caribbean javanese) => [
- q(3110),
+ q(3143),
q(0),
],
q(carijona) => [
- q(1658),
+ q(1664),
q(0),
],
q(carolina algonquian) => [
- q(1850),
+ q(1857),
q(0),
],
q(carolinian) => [
- q(1644),
+ q(1650),
q(0),
],
q(carpathian romani) => [
- q(5739),
+ q(5780),
q(0),
],
q(carrier) => [
- q(1855),
+ q(1862),
q(0),
],
q(cashibo-cacataibo) => [
- q(1668),
+ q(1674),
q(0),
],
q(cashinahua) => [
- q(1669),
+ q(1675),
q(0),
],
q(casiguran dumagat agta) => [
- q(1993),
+ q(2005),
q(0),
],
q(castilian) => [
@@ -28577,7 +28874,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(casuarina coast asmat) => [
- q(0885),
+ q(0888),
q(0),
],
q(catalan) => [
@@ -28585,15 +28882,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(catalan sign language) => [
- q(1859),
+ q(1866),
q(0),
],
q(catawba) => [
- q(1714),
+ q(1720),
q(0),
],
q(cauca) => [
- q(1675),
+ q(1681),
q(0),
],
q(caucasian languages) => [
@@ -28601,23 +28898,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(cavinena) => [
- q(1651),
+ q(1657),
q(0),
],
q(cayubaba) => [
- q(1920),
+ q(1929),
q(0),
],
q(cayuga) => [
- q(1654),
+ q(1660),
q(0),
],
q(cayuse) => [
- q(7218),
+ q(7272),
q(0),
],
q(cebaara senoufo) => [
- q(5896),
+ q(5939),
q(0),
],
q(cebuano) => [
@@ -28625,7 +28922,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(celtiberian) => [
- q(7206),
+ q(7260),
q(0),
],
q(celtic languages) => [
@@ -28633,11 +28930,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(cemuhi) => [
- q(1645),
+ q(1651),
q(0),
],
q(cen) => [
- q(1704),
+ q(1710),
q(0),
],
q(central american indian languages) => [
@@ -28645,67 +28942,67 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(central asmat) => [
- q(1797),
+ q(1804),
q(0),
],
q(central atlas tamazight) => [
- q(6765),
+ q(6815),
q(0),
],
q(central awyu) => [
- q(0977),
+ q(0982),
q(0),
],
q(central aymara) => [
- q(1001),
+ q(1007),
q(0),
],
q(central bai) => [
- q(1058),
+ q(1065),
q(0),
],
q(central berawan) => [
- q(7674),
+ q(7740),
q(0),
],
- q(central bicolano) => [
- q(1069),
+ q(central bikol) => [
+ q(1076),
q(0),
],
q(central bontok) => [
- q(3772),
+ q(3801),
q(0),
],
q(central cagayan agta) => [
- q(0671),
+ q(0672),
q(0),
],
q(central dusun) => [
- q(2140),
+ q(2160),
q(0),
],
q(central grebo) => [
- q(2588),
+ q(2612),
q(0),
],
q(central hongshuihe zhuang) => [
- q(7679),
+ q(7745),
q(0),
],
q(central huasteca nahuatl) => [
- q(4723),
+ q(4751),
q(0),
],
q(central huishui hmong) => [
- q(2739),
+ q(2764),
q(0),
],
q(central huishui miao) => [
- q(2739),
+ q(2764),
q(0),
],
q(central kanuri) => [
- q(3428),
+ q(3459),
q(0),
],
q(central khmer) => [
@@ -28713,155 +29010,159 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(central kurdish) => [
- q(1751),
+ q(1756),
+ q(0),
+ ],
+ q(central lalo) => [
+ q(7707),
q(0),
],
q(central maewo) => [
- q(4588),
+ q(4616),
q(0),
],
q(central malay) => [
- q(5547),
+ q(5587),
q(0),
],
q(central malayo-polynesian languages) => [
- q(0518),
+ q(0519),
q(0),
],
q(central masela) => [
- q(4624),
+ q(4652),
q(0),
],
q(central mashan hmong) => [
- q(2749),
+ q(2774),
q(0),
],
q(central mashan miao) => [
- q(2749),
+ q(2774),
q(0),
],
q(central mazahua) => [
- q(4072),
+ q(4101),
q(0),
],
q(central melanau) => [
- q(4158),
+ q(4187),
q(0),
],
q(central mnong) => [
- q(1784),
+ q(1791),
q(0),
],
q(central nahuatl) => [
- q(4824),
+ q(4853),
q(0),
],
q(central nicobarese) => [
- q(4717),
+ q(4745),
q(0),
],
q(central ojibwa) => [
- q(5157),
+ q(5195),
q(0),
],
q(central okinawan) => [
- q(5811),
+ q(5855),
q(0),
],
q(central palawano) => [
- q(5425),
+ q(5463),
q(0),
],
q(central pame) => [
- q(5311),
+ q(5351),
q(0),
],
q(central pashto) => [
- q(5559),
+ q(5599),
q(0),
],
q(central pomo) => [
- q(5497),
+ q(5537),
q(0),
],
q(central puebla nahuatl) => [
- q(4736),
+ q(4764),
q(0),
],
q(central sama) => [
- q(6050),
+ q(6095),
q(0),
],
q(central siberian yupik) => [
- q(2274),
+ q(2293),
q(0),
],
q(central sierra miwok) => [
- q(1868),
+ q(1875),
q(0),
],
q(central subanen) => [
- q(6258),
+ q(6305),
q(0),
],
q(central sudanic languages) => [
- q(0498),
+ q(0499),
q(0),
],
q(central tagbanwa) => [
- q(6411),
+ q(6459),
q(0),
],
q(central tarahumara) => [
- q(6293),
+ q(6340),
q(0),
],
q(central tunebo) => [
- q(6685),
+ q(6734),
q(0),
],
q(central yupik) => [
- q(2275),
+ q(2294),
q(0),
],
q(central-eastern niger fulfulde) => [
- q(2361),
+ q(2381),
q(0),
],
q(centuum) => [
- q(1705),
+ q(1711),
q(0),
],
q(cerma) => [
- q(1778),
+ q(1785),
q(0),
],
q(chachapoyas quechua) => [
- q(5621),
+ q(5661),
q(0),
],
q(chachi) => [
- q(1662),
+ q(1668),
q(0),
],
q(chacobo) => [
- q(1647),
+ q(1653),
q(0),
],
q(chadian arabic) => [
- q(5955),
+ q(6000),
q(0),
],
q(chadian sign language) => [
- q(1699),
+ q(1704),
q(0),
],
q(chadic languages) => [
- q(0496),
+ q(0497),
q(0),
],
q(chadong) => [
- q(1700),
+ q(1705),
q(0),
],
q(chagatai) => [
@@ -28869,51 +29170,51 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chaima) => [
- q(1737),
+ q(1743),
q(0),
],
q(chak) => [
- q(1752),
+ q(1757),
q(0),
],
q(chakali) => [
- q(1769),
+ q(1774),
q(0),
],
q(chakma) => [
- q(1685),
+ q(1691),
q(0),
],
q(chala) => [
- q(1771),
+ q(1777),
q(0),
],
q(chaldean neo-aramaic) => [
- q(1766),
+ q(1771),
q(0),
],
q(chalikha) => [
- q(6401),
+ q(6448),
q(0),
],
q(chamacoco) => [
- q(1703),
+ q(1708),
q(0),
],
q(chamalal) => [
- q(1741),
+ q(1747),
q(0),
],
q(chamari) => [
- q(1691),
+ q(1696),
q(0),
],
q(chambeali) => [
- q(1692),
+ q(1697),
q(0),
],
q(chambri) => [
- q(1646),
+ q(1652),
q(0),
],
q(chamic languages) => [
@@ -28921,7 +29222,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chamicuro) => [
- q(1676),
+ q(1682),
q(0),
],
q(chamorro) => [
@@ -28929,59 +29230,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chane) => [
- q(1642),
+ q(1648),
q(0),
],
q(chang naga) => [
- q(4695),
+ q(4723),
q(0),
],
q(changriwa) => [
- q(1710),
+ q(1716),
q(0),
],
q(changthang) => [
- q(1788),
+ q(1795),
q(0),
],
q(chantyal) => [
- q(1723),
+ q(1729),
q(0),
],
q(chara) => [
- q(1836),
+ q(1843),
q(0),
],
q(chaudangsi) => [
- q(1696),
- q(0),
- ],
- q(chaungtha) => [
- q(1686),
+ q(1701),
q(0),
],
q(chaura) => [
- q(1853),
+ q(1860),
q(0),
],
q(chavacano) => [
- q(1664),
+ q(1670),
q(0),
],
q(chayahuita) => [
- q(1670),
+ q(1676),
q(0),
],
q(chayuco mixtec) => [
- q(4253),
+ q(4281),
q(0),
],
q(chazumba mixtec) => [
- q(7383),
+ q(7441),
q(0),
],
q(che) => [
- q(5797),
+ q(5841),
q(0),
],
q(chechen) => [
@@ -28989,39 +29286,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(cheke holo) => [
- q(4468),
+ q(4496),
q(0),
],
q(chemakum) => [
- q(7208),
+ q(7262),
q(0),
],
q(chenapian) => [
- q(1744),
+ q(1750),
q(0),
],
q(chenchu) => [
- q(1689),
+ q(1694),
q(0),
],
q(chenoua) => [
- q(1799),
+ q(1806),
q(0),
],
q(chepang) => [
- q(1695),
+ q(1700),
q(0),
],
q(chepya) => [
- q(7474),
+ q(7534),
q(0),
],
q(cheq wong) => [
- q(1917),
+ q(1926),
q(0),
],
q(cherepon) => [
- q(1829),
+ q(1836),
q(0),
],
q(cherokee) => [
@@ -29029,11 +29326,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chesu) => [
- q(7471),
+ q(7531),
q(0),
],
q(chetco) => [
- q(1879),
+ q(1887),
q(0),
],
q(chewa) => [
@@ -29041,7 +29338,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chewong) => [
- q(1917),
+ q(1926),
q(0),
],
q(cheyenne) => [
@@ -29049,23 +29346,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chhattisgarhi) => [
- q(2762),
+ q(2787),
q(0),
],
q(chhintange) => [
- q(1885),
+ q(1894),
q(0),
],
q(chhulung) => [
- q(1905),
+ q(1914),
q(0),
],
q(chiangmai sign language) => [
- q(1860),
+ q(1867),
q(0),
],
q(chiapanec) => [
- q(1734),
+ q(1740),
q(0),
],
q(chibcha) => [
@@ -29073,11 +29370,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chibchan languages) => [
- q(0493),
+ q(0494),
q(0),
],
q(chicahuaxtla triqui) => [
- q(6624),
+ q(6673),
q(0),
],
q(chichewa) => [
@@ -29085,95 +29382,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chichicapan zapotec) => [
- q(7778),
+ q(7846),
q(0),
],
q(chichimeca-jonaz) => [
- q(5348),
+ q(5387),
q(0),
],
q(chichonyi-chidzihana-chikauma) => [
- q(1809),
+ q(1816),
q(0),
],
q(chickasaw) => [
- q(1727),
+ q(1733),
q(0),
],
q(chicomuceltec) => [
- q(1803),
+ q(1810),
q(0),
],
q(chidigo) => [
- q(2023),
+ q(2038),
q(0),
],
q(chiduruma) => [
- q(2150),
+ q(2171),
q(0),
],
q(chiga) => [
- q(1712),
+ q(1718),
q(0),
],
q(chigmecatitlan mixtec) => [
- q(4254),
+ q(4282),
q(0),
],
q(chilcotin) => [
- q(1765),
+ q(1770),
q(0),
],
q(chilean quechua) => [
- q(1835),
+ q(1842),
q(0),
],
q(chilean sign language) => [
- q(1863),
+ q(1870),
q(0),
],
q(chilisso) => [
- q(1768),
+ q(1773),
q(0),
],
q(chiltepec chinantec) => [
- q(1858),
+ q(1865),
q(0),
],
q(chimakum) => [
- q(7208),
+ q(7262),
q(0),
],
q(chimalapa zoque) => [
- q(7751),
+ q(7819),
q(0),
],
q(chimariko) => [
- q(1728),
+ q(1734),
q(0),
],
q(chimborazo highland quichua) => [
- q(5618),
+ q(5658),
q(0),
],
q(chimila) => [
- q(1660),
+ q(1666),
q(0),
],
q(china buriat) => [
- q(1580),
+ q(1586),
q(0),
],
q(chinali) => [
- q(1730),
+ q(1736),
q(0),
],
q(chinbon chin) => [
- q(1789),
+ q(1796),
q(0),
],
q(chincha quechua) => [
- q(5656),
+ q(5696),
q(0),
],
q(chinese) => [
@@ -29181,19 +29478,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chinese (family)) => [
- q(0532),
+ q(0533),
q(0),
],
q(chinese pidgin english) => [
- q(1828),
+ q(1835),
q(0),
],
q(chinese sign language) => [
- q(1867),
+ q(1874),
q(0),
],
q(chinook) => [
- q(1717),
+ q(1723),
q(0),
],
q(chinook jargon) => [
@@ -29201,7 +29498,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chipaya) => [
- q(1648),
+ q(1654),
q(0),
],
q(chipewyan) => [
@@ -29209,59 +29506,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chipiajes) => [
- q(1659),
+ q(1665),
q(0),
],
q(chippewa) => [
- q(1736),
+ q(1742),
q(0),
],
q(chiquian ancash quechua) => [
- q(5655),
+ q(5695),
q(0),
],
q(chiquihuitlan mazatec) => [
- q(4066),
+ q(4095),
q(0),
],
q(chiquitano) => [
- q(1653),
+ q(1659),
q(0),
],
q(chiripa) => [
- q(4816),
+ q(4845),
q(0),
],
q(chiru) => [
- q(1690),
+ q(1695),
q(0),
],
q(chitimacha) => [
- q(1884),
+ q(1893),
q(0),
],
q(chitkuli kinnauri) => [
- q(1731),
+ q(1737),
q(0),
],
q(chittagonian) => [
- q(1882),
+ q(1890),
q(0),
],
q(chitwania tharu) => [
- q(6419),
+ q(6468),
q(0),
],
q(choapan zapotec) => [
- q(7759),
+ q(7827),
q(0),
],
q(chocangacakha) => [
- q(1713),
+ q(1719),
q(0),
],
q(chochotec) => [
- q(1823),
+ q(1830),
q(0),
],
q(choctaw) => [
@@ -29269,103 +29566,103 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chodri) => [
- q(1693),
+ q(1698),
q(0),
],
q(chokri naga) => [
- q(5002),
+ q(5034),
q(0),
],
q(chokwe) => [
- q(1742),
+ q(1748),
q(0),
],
q(chol) => [
- q(1890),
+ q(1899),
q(0),
],
q(cholon) => [
- q(1721),
+ q(1727),
q(0),
],
q(chong) => [
- q(1808),
+ q(1815),
q(0),
],
q(choni) => [
- q(1688),
+ q(1693),
q(0),
],
q(chonyi-dzihana-kauma) => [
- q(1809),
+ q(1816),
q(0),
],
q(chopi) => [
- q(1678),
+ q(1684),
q(0),
],
q(chorasmian) => [
- q(7212),
+ q(7266),
q(0),
],
q(chorti) => [
- q(1635),
+ q(1641),
q(0),
],
q(chothe naga) => [
- q(4734),
+ q(4762),
q(0),
],
q(chrau) => [
- q(1854),
+ q(1861),
q(0),
],
q(chru) => [
- q(1739),
+ q(1745),
q(0),
],
q(chuang) => [
- q(0480),
+ q(0481),
q(0),
],
q(chuanqiandian cluster miao) => [
- q(1834),
+ q(1841),
q(0),
],
q(chuave) => [
- q(1748),
+ q(1754),
q(0),
],
q(chug) => [
- q(1911),
+ q(1920),
q(0),
],
q(chuj) => [
- q(1637),
+ q(1643),
q(0),
],
q(chuka) => [
- q(1896),
+ q(1905),
q(0),
],
q(chukot) => [
- q(1758),
+ q(1763),
q(0),
],
q(chukwa) => [
- q(1909),
+ q(1918),
q(0),
],
q(chulym) => [
- q(1775),
+ q(1782),
q(0),
],
q(chumburung) => [
- q(4735),
+ q(4763),
q(0),
],
q(churahi) => [
- q(1694),
+ q(1699),
q(0),
],
q(church slavic) => [
@@ -29377,7 +29674,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chut) => [
- q(5856),
+ q(5899),
q(0),
],
q(chuukese) => [
@@ -29385,7 +29682,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chuvantsy) => [
- q(7216),
+ q(7270),
q(0),
],
q(chuvash) => [
@@ -29393,75 +29690,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(chuwabu) => [
- q(1722),
+ q(1728),
q(0),
],
q(ci gbe) => [
- q(1726),
+ q(1732),
q(0),
],
q(cia-cia) => [
- q(1725),
+ q(1731),
q(0),
],
q(cibak) => [
- q(1753),
+ q(1758),
q(0),
],
q(cicipu) => [
- q(0966),
+ q(0970),
q(0),
],
q(cimbrian) => [
- q(1732),
+ q(1738),
q(0),
],
q(cinda-regi-tiyal) => [
- q(1698),
+ q(1703),
q(0),
],
q(cineni) => [
- q(1729),
+ q(1735),
q(0),
],
q(cinta larga) => [
- q(1733),
+ q(1739),
q(0),
],
q(cisalpine gaulish) => [
- q(7207),
+ q(7261),
q(0),
],
q(cishingini) => [
- q(0889),
+ q(0892),
q(0),
],
q(citak) => [
- q(6744),
+ q(6794),
q(0),
],
q(ciwogai) => [
- q(6399),
+ q(6446),
q(0),
],
q(clallam) => [
- q(1772),
+ q(1778),
q(0),
],
q(classical armenian) => [
- q(7209),
+ q(7263),
q(0),
],
q(classical mandaic) => [
- q(4646),
+ q(4674),
q(0),
],
q(classical mongolian) => [
- q(1779),
+ q(1786),
q(0),
],
q(classical nahuatl) => [
- q(4724),
+ q(4752),
q(0),
],
q(classical nepal bhasa) => [
@@ -29473,7 +29770,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(classical quechua) => [
- q(5650),
+ q(5690),
q(0),
],
q(classical syriac) => [
@@ -29481,119 +29778,119 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(classical tibetan) => [
- q(7214),
+ q(7268),
q(0),
],
q(coahuilteco) => [
- q(7217),
+ q(7271),
q(0),
],
q(coast miwok) => [
- q(1865),
+ q(1872),
q(0),
],
q(coastal kadazan) => [
- q(3727),
+ q(3756),
q(0),
],
q(coastal konjo) => [
- q(3327),
+ q(3358),
q(0),
],
q(coatecas altas zapotec) => [
- q(7678),
+ q(7744),
q(0),
],
q(coatepec nahuatl) => [
- q(4692),
+ q(4720),
q(0),
],
q(coatlan mixe) => [
- q(4112),
+ q(4141),
q(0),
],
q(coatlan zapotec) => [
- q(7775),
+ q(7843),
q(0),
],
q(coatzospan mixtec) => [
- q(4268),
+ q(4296),
q(0),
],
q(cocama-cocamilla) => [
- q(1805),
+ q(1812),
q(0),
],
q(cochimi) => [
- q(1810),
+ q(1817),
q(0),
],
q(cocopa) => [
- q(1804),
+ q(1811),
q(0),
],
q(cocos islands malay) => [
- q(1802),
+ q(1809),
q(0),
],
q(coeur d'alene) => [
- q(1839),
+ q(1846),
q(0),
],
q(cofan) => [
- q(1814),
+ q(1821),
q(0),
],
q(cogui) => [
- q(3456),
+ q(3487),
q(0),
],
q(col) => [
- q(3880),
+ q(3908),
q(0),
],
q(colombian sign language) => [
- q(1869),
+ q(1876),
q(0),
],
q(colonia tovar german) => [
- q(2422),
+ q(2441),
q(0),
],
q(colorado) => [
- q(1807),
+ q(1814),
q(0),
],
q(columbia-wenatchi) => [
- q(1812),
+ q(1819),
q(0),
],
q(comaltepec chinantec) => [
- q(1684),
+ q(1690),
q(0),
],
q(comanche) => [
- q(1813),
+ q(1820),
q(0),
],
q(comecrudo) => [
- q(7210),
+ q(7264),
q(0),
],
q(como karim) => [
- q(1708),
+ q(1714),
q(0),
],
q(comox) => [
- q(1815),
+ q(1822),
q(0),
],
q(con) => [
- q(1796),
+ q(1803),
q(0),
],
q(congo swahili) => [
- q(6223),
+ q(6270),
q(0),
],
q(cook islands maori) => [
@@ -29601,19 +29898,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(coong) => [
- q(1790),
+ q(1797),
q(0),
],
q(coos) => [
- q(1877),
+ q(1885),
q(0),
],
q(copainala zoque) => [
- q(7750),
+ q(7818),
q(0),
],
q(copala triqui) => [
- q(6609),
+ q(6658),
q(0),
],
q(coptic) => [
@@ -29621,11 +29918,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(coquille) => [
- q(1816),
+ q(1823),
q(0),
],
q(cori) => [
- q(1856),
+ q(1863),
q(0),
],
q(cornish) => [
@@ -29633,7 +29930,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(corongo ancash quechua) => [
- q(5649),
+ q(5689),
q(0),
],
q(corsican) => [
@@ -29641,35 +29938,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(costa rican sign language) => [
- q(1872),
+ q(1879),
q(0),
],
q(cotabato manobo) => [
- q(4505),
+ q(4533),
q(0),
],
q(cotoname) => [
- q(7211),
+ q(7265),
q(0),
],
q(cowlitz) => [
- q(1820),
+ q(1827),
q(0),
],
q(coxima) => [
- q(3468),
+ q(3499),
q(0),
],
q(coyaima) => [
- q(1822),
+ q(1829),
q(0),
],
q(coyotepec popoloca) => [
- q(5302),
+ q(5342),
q(0),
],
q(coyutla totonac) => [
- q(6555),
+ q(6604),
q(0),
],
q(cree) => [
@@ -29721,7 +30018,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(croatia sign language) => [
- q(1871),
+ q(1878),
q(0),
],
q(croatian) => [
@@ -29729,75 +30026,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(cross river mbembe) => [
- q(4184),
+ q(4213),
q(0),
],
q(crow) => [
- q(1848),
+ q(1855),
q(0),
],
q(cruzeno) => [
- q(1857),
+ q(1864),
q(0),
],
q(cua) => [
- q(1892),
+ q(1901),
q(0),
],
q(cuba sign language) => [
- q(1862),
+ q(1869),
q(0),
],
q(cubeo) => [
- q(1893),
+ q(1902),
q(0),
],
q(cuiba) => [
- q(1897),
+ q(1906),
q(0),
],
q(culina) => [
- q(1900),
+ q(1909),
q(0),
],
q(cumanagoto) => [
- q(1902),
+ q(1911),
q(0),
],
q(cumbric) => [
- q(7204),
+ q(7258),
q(0),
],
q(cumeral) => [
- q(1901),
+ q(1910),
q(0),
],
q(cun) => [
- q(1904),
+ q(1913),
q(0),
],
q(cuneiform luwian) => [
- q(7290),
+ q(7346),
q(0),
],
q(cung) => [
- q(1895),
+ q(1904),
q(0),
],
q(cupeno) => [
- q(1903),
+ q(1912),
q(0),
],
q(curonian) => [
- q(7215),
+ q(7269),
q(0),
],
q(curripaco) => [
- q(3473),
+ q(3504),
q(0),
],
q(cusco quechua) => [
- q(5633),
+ q(5673),
q(0),
],
q(cushitic languages) => [
@@ -29805,27 +30102,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(cutchi-swahili) => [
- q(1682),
+ q(1688),
q(0),
],
q(cuvok) => [
- q(1908),
+ q(1917),
q(0),
],
q(cuyamecalco mixtec) => [
- q(7399),
+ q(7457),
q(0),
],
q(cuyonon) => [
- q(1921),
+ q(1930),
q(0),
],
q(cwi bwamu) => [
- q(1559),
+ q(1565),
q(0),
],
q(cypriot arabic) => [
- q(0602),
+ q(0603),
q(0),
],
q(czech) => [
@@ -29833,103 +30130,107 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(czech sign language) => [
- q(1861),
+ q(1868),
q(0),
],
q(da'a kaili) => [
- q(3723),
+ q(3753),
q(0),
],
q(da-hua miao) => [
- q(2740),
+ q(2765),
q(0),
],
q(daai chin) => [
- q(1938),
+ q(1947),
q(0),
],
q(daantanai') => [
- q(3951),
+ q(3980),
q(0),
],
q(daasanach) => [
- q(2128),
+ q(2146),
q(0),
],
q(daba) => [
- q(1960),
+ q(1968),
q(0),
],
q(dabarre) => [
- q(1961),
+ q(1969),
q(0),
],
q(dabe) => [
- q(1950),
+ q(1958),
q(0),
],
q(dacian) => [
- q(7219),
+ q(7273),
+ q(0),
+ ],
+ q(dadi dadi) => [
+ q(1977),
q(0),
],
q(dadibi) => [
- q(4423),
+ q(4451),
q(0),
],
q(dadiya) => [
- q(1949),
+ q(1957),
q(0),
],
q(daga) => [
- q(2005),
+ q(2020),
q(0),
],
q(dagaari dioula) => [
- q(1994),
+ q(2006),
q(0),
],
q(dagba) => [
- q(1999),
+ q(2011),
q(0),
],
q(dagbani) => [
- q(1932),
+ q(1941),
q(0),
],
q(dagik) => [
- q(1976),
+ q(1988),
q(0),
],
q(dagoman) => [
- q(2000),
+ q(2013),
q(0),
],
q(dahalo) => [
- q(1936),
+ q(1945),
q(0),
],
q(daho-doo) => [
- q(1941),
+ q(1949),
q(0),
],
q(dai) => [
- q(2026),
+ q(2041),
q(0),
],
q(dai zhuang) => [
- q(7690),
+ q(7756),
q(0),
],
q(dair) => [
- q(2112),
+ q(2130),
q(0),
],
q(dakaka) => [
- q(1370),
+ q(1376),
q(0),
],
q(dakka) => [
- q(2057),
+ q(2073),
q(0),
],
q(dakota) => [
@@ -29937,63 +30238,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dakpakha) => [
- q(2056),
+ q(2072),
q(0),
],
q(dalmatian) => [
- q(2062),
+ q(2078),
q(0),
],
q(daloa bete) => [
- q(1125),
+ q(1132),
q(0),
],
q(dama) => [
- q(2071),
+ q(2088),
q(0),
],
q(damakawa) => [
- q(1937),
+ q(1946),
q(0),
],
q(damal) => [
- q(6793),
+ q(6843),
q(0),
],
q(dambi) => [
- q(1928),
+ q(1937),
q(0),
],
q(dameli) => [
- q(2070),
+ q(2087),
q(0),
],
q(dampelas) => [
- q(2074),
+ q(2091),
q(0),
],
q(dan) => [
- q(1931),
+ q(1940),
q(0),
],
q(danaru) => [
- q(2086),
+ q(2103),
q(0),
],
q(danau) => [
- q(2088),
+ q(2105),
q(0),
],
q(dandami maria) => [
- q(1940),
+ q(1948),
q(0),
],
q(dangaleat) => [
- q(1927),
+ q(1936),
q(0),
],
q(dangaura tharu) => [
- q(6424),
+ q(6473),
q(0),
],
q(danish) => [
@@ -30001,39 +30302,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(danish sign language) => [
- q(2130),
+ q(2148),
q(0),
],
q(dano) => [
- q(0896),
+ q(0899),
+ q(0),
+ ],
+ q(danu) => [
+ q(2106),
q(0),
],
q(dao) => [
- q(1946),
+ q(1954),
q(0),
],
q(daonda) => [
- q(2080),
+ q(2097),
q(0),
],
q(dar daju daju) => [
- q(2042),
+ q(2058),
q(0),
],
q(dar fur daju) => [
- q(1935),
+ q(1944),
q(0),
],
q(dar sila daju) => [
- q(1942),
+ q(1950),
q(0),
],
q(darai) => [
- q(2126),
+ q(2144),
q(0),
],
q(darang deng) => [
- q(4242),
+ q(4270),
q(0),
],
q(dargwa) => [
@@ -30041,127 +30346,127 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dari) => [
- q(5537),
- q(0),
- ],
- q(darling) => [
- q(2118),
+ q(5577),
q(0),
],
q(darlong) => [
- q(2063),
+ q(2079),
q(0),
],
q(darmiya) => [
- q(2114),
+ q(2132),
q(0),
],
q(daro-matu melanau) => [
- q(2120),
+ q(2138),
q(0),
],
q(dass) => [
- q(2105),
+ q(2123),
q(0),
],
q(datooga) => [
- q(6328),
+ q(6375),
+ q(0),
+ ],
+ q(daungwurrung) => [
+ q(2018),
q(0),
],
q(daur) => [
- q(2134),
+ q(2152),
q(0),
],
q(davawenyo) => [
- q(1944),
+ q(1952),
q(0),
],
q(daw) => [
- q(3641),
+ q(3671),
q(0),
],
q(dawawa) => [
- q(2173),
+ q(2193),
q(0),
],
q(dawera-daweloor) => [
- q(1975),
+ q(1987),
q(0),
],
q(dawida) => [
- q(1943),
+ q(1951),
q(0),
],
q(dawro) => [
- q(2171),
+ q(2191),
q(0),
],
q(day) => [
- q(1934),
+ q(1943),
q(0),
],
q(dayi) => [
- q(1945),
+ q(1953),
q(0),
],
q(daza) => [
- q(2184),
+ q(2204),
q(0),
],
q(dazaga) => [
- q(2185),
+ q(2205),
q(0),
],
q(deccan) => [
- q(1965),
+ q(1975),
q(0),
],
q(dedua) => [
- q(1977),
+ q(1989),
q(0),
],
q(defaka) => [
- q(0646),
+ q(0647),
q(0),
],
q(defi gbe) => [
- q(2398),
+ q(2417),
q(0),
],
q(deg) => [
- q(4668),
+ q(4696),
q(0),
],
q(degaru) => [
- q(2003),
+ q(2017),
q(0),
],
q(degema) => [
- q(1980),
+ q(1992),
q(0),
],
q(degenan) => [
- q(1995),
+ q(2007),
q(0),
],
q(degexit'an) => [
- q(2927),
+ q(2951),
q(0),
],
q(dehu) => [
- q(2016),
+ q(2031),
q(0),
],
q(dehwari) => [
- q(1981),
+ q(1993),
q(0),
],
q(dek) => [
- q(1983),
+ q(1995),
q(0),
],
q(dela-oenale) => [
- q(5779),
+ q(5821),
q(0),
],
q(delaware) => [
@@ -30169,31 +30474,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(delo) => [
- q(5041),
+ q(5074),
q(0),
],
q(dem) => [
- q(1984),
+ q(1996),
q(0),
],
q(dema) => [
- q(2077),
+ q(2094),
q(0),
],
q(demisa) => [
- q(1982),
+ q(1994),
q(0),
],
q(demta) => [
- q(2078),
+ q(2095),
q(0),
],
q(dendi (benin)) => [
- q(1972),
+ q(1983),
q(0),
],
q(dendi (central african republic)) => [
- q(1986),
+ q(1998),
q(0),
],
q(dene suline) => [
@@ -30201,91 +30506,91 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dengese) => [
- q(1990),
+ q(2002),
q(0),
],
q(dengka) => [
- q(2084),
+ q(2101),
q(0),
],
q(deni) => [
- q(2090),
+ q(2108),
q(0),
],
q(deno) => [
- q(1948),
+ q(1956),
q(0),
],
q(denya) => [
- q(0809),
+ q(0811),
q(0),
],
q(deori) => [
- q(1987),
+ q(1999),
q(0),
],
q(dera (indonesia)) => [
- q(3149),
+ q(3182),
q(0),
],
q(dera (nigeria)) => [
- q(3426),
+ q(3457),
q(0),
],
q(desano) => [
- q(1988),
+ q(2000),
q(0),
],
q(desiya) => [
- q(2132),
+ q(2150),
q(0),
],
q(dewoin) => [
- q(1978),
+ q(1990),
q(0),
],
q(dezfuli) => [
- q(1979),
+ q(1991),
q(0),
],
q(dghwede) => [
- q(1997),
+ q(2009),
q(0),
],
q(dhaiso) => [
- q(2014),
+ q(2029),
q(0),
],
q(dhalandji) => [
- q(2009),
+ q(2024),
q(0),
],
q(dhangu) => [
- q(2007),
+ q(2022),
q(0),
],
q(dhanki) => [
- q(2011),
+ q(2026),
q(0),
],
q(dhanwar (nepal)) => [
- q(2017),
+ q(2032),
q(0),
],
q(dhao) => [
- q(4783),
+ q(4812),
q(0),
],
q(dhargari) => [
- q(2013),
+ q(2028),
q(0),
],
q(dhatki) => [
- q(4298),
+ q(4326),
q(0),
],
q(dhimal) => [
- q(2008),
+ q(2023),
q(0),
],
q(dhivehi) => [
@@ -30293,131 +30598,135 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dhodia) => [
- q(2012),
+ q(2027),
q(0),
],
q(dhofari arabic) => [
- q(0607),
+ q(0608),
q(0),
],
q(dholuo) => [
q(0260),
q(1),
],
+ q(dhudhuroa) => [
+ q(1985),
+ q(0),
+ ],
q(dhundari) => [
- q(2006),
+ q(2021),
q(0),
],
q(dhurga) => [
- q(2015),
+ q(2030),
q(0),
],
q(dhuwal) => [
- q(2153),
+ q(2174),
q(0),
],
q(dia) => [
- q(2018),
+ q(2033),
q(0),
],
q(dibabawon manobo) => [
- q(4076),
+ q(4105),
q(0),
],
q(dibiyaso) => [
- q(1964),
+ q(1974),
q(0),
],
q(dibo) => [
- q(2030),
+ q(2045),
q(0),
],
q(dibole) => [
- q(1533),
+ q(1539),
q(0),
],
q(dicamay agta) => [
- q(2166),
+ q(2187),
q(0),
],
q(didinga) => [
- q(2021),
+ q(2036),
q(0),
],
q(dido) => [
- q(1973),
+ q(1984),
q(0),
],
q(diebroud) => [
- q(6316),
+ q(6363),
q(0),
],
q(dieri) => [
- q(2022),
+ q(2037),
q(0),
],
q(digaro-mishmi) => [
- q(4242),
+ q(4270),
q(0),
],
q(digo) => [
- q(2023),
+ q(2038),
q(0),
],
q(dii) => [
- q(2160),
+ q(2181),
q(0),
],
q(dijim-bwilim) => [
- q(1706),
+ q(1712),
q(0),
],
q(dilling) => [
- q(2028),
+ q(2043),
q(0),
],
q(dima) => [
- q(3063),
+ q(3094),
q(0),
],
q(dimasa) => [
- q(2034),
+ q(2049),
q(0),
],
q(dimbong) => [
- q(2025),
+ q(2040),
q(0),
],
q(dime) => [
- q(2029),
+ q(2044),
q(0),
],
q(dimili) => [
- q(0485),
+ q(0486),
q(0),
],
q(dimir) => [
- q(2066),
+ q(2082),
q(0),
],
q(dimli) => [
- q(0485),
+ q(0486),
q(0),
],
q(dimli (individual language)) => [
- q(2032),
+ q(2047),
q(0),
],
q(dimli (macrolanguage)) => [
- q(0485),
+ q(0486),
q(6),
],
q(dineor) => [
- q(4478),
+ q(4506),
q(0),
],
q(ding) => [
- q(2040),
+ q(2055),
q(0),
],
q(dinka) => [
@@ -30425,43 +30734,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dirari) => [
- q(2035),
+ q(2050),
q(0),
],
q(dirasha) => [
- q(2434),
+ q(2453),
q(0),
],
q(diri) => [
- q(2169),
+ q(2190),
q(0),
],
q(diriku) => [
- q(2036),
+ q(2051),
q(0),
],
q(dirim) => [
- q(2033),
+ q(2048),
q(0),
],
q(disa) => [
- q(2129),
+ q(2147),
q(0),
],
q(ditammari) => [
- q(6325),
+ q(6372),
q(0),
],
q(ditidaht) => [
- q(2136),
+ q(2154),
q(0),
],
q(diuwe) => [
- q(2039),
+ q(2054),
q(0),
],
q(diuxi-tilantongo mixtec) => [
- q(7385),
+ q(7443),
q(0),
],
q(divehi) => [
@@ -30469,83 +30778,87 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dixon reef) => [
- q(2038),
+ q(2053),
q(0),
],
q(dizin) => [
- q(4144),
+ q(4173),
+ q(0),
+ ],
+ q(djadjawurrung) => [
+ q(2056),
q(0),
],
q(djambarrpuyngu) => [
- q(2053),
+ q(2069),
q(0),
],
q(djamindjung) => [
- q(2043),
+ q(2059),
q(0),
],
q(djangun) => [
- q(2045),
+ q(2061),
q(0),
],
q(djauan) => [
- q(2051),
+ q(2067),
q(0),
],
q(djawi) => [
- q(2055),
+ q(2071),
q(0),
],
q(djeebbana) => [
- q(2047),
+ q(2063),
q(0),
],
q(djimini senoufo) => [
- q(2178),
+ q(2198),
q(0),
],
q(djinang) => [
- q(2046),
+ q(2062),
q(0),
],
q(djinba) => [
- q(2041),
+ q(2057),
q(0),
],
q(djingili) => [
- q(3048),
+ q(3075),
q(0),
],
q(djiwarli) => [
- q(2049),
+ q(2065),
q(0),
],
q(dobel) => [
- q(3629),
+ q(3659),
q(0),
],
q(dobu) => [
- q(2092),
+ q(2110),
q(0),
],
q(doe) => [
- q(2094),
+ q(2112),
q(0),
],
q(doga) => [
- q(1996),
+ q(2008),
q(0),
],
q(doghoro) => [
- q(2004),
+ q(2019),
q(0),
],
q(dogose) => [
- q(2104),
+ q(2122),
q(0),
],
q(dogoso) => [
- q(2002),
+ q(2015),
q(0),
],
q(dogri) => [
@@ -30553,7 +30866,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dogri (individual language)) => [
- q(2001),
+ q(2014),
q(0),
],
q(dogri (macrolanguage)) => [
@@ -30565,119 +30878,127 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dogul dom dogon) => [
- q(1952),
+ q(1960),
q(0),
],
q(doka) => [
- q(1953),
+ q(1961),
q(0),
],
q(doko-uyanga) => [
- q(6882),
+ q(6932),
q(0),
],
q(dolgan) => [
- q(2061),
+ q(2077),
q(0),
],
q(dolpo) => [
- q(2115),
+ q(2133),
q(0),
],
q(dom) => [
- q(2091),
+ q(2109),
q(0),
],
q(domaaki) => [
- q(2069),
+ q(2086),
q(0),
],
q(domari) => [
- q(5754),
+ q(5795),
q(0),
],
q(dombe) => [
- q(2106),
+ q(2124),
q(0),
],
q(dominican sign language) => [
- q(2102),
+ q(2120),
q(0),
],
q(dompo) => [
- q(2109),
+ q(2127),
q(0),
],
q(domu) => [
- q(2095),
+ q(2113),
q(0),
],
q(domung) => [
- q(1989),
+ q(2001),
q(0),
],
q(dondo) => [
- q(2097),
+ q(2115),
q(0),
],
q(dong) => [
- q(2096),
+ q(2114),
q(0),
],
q(dongo) => [
- q(2100),
+ q(2118),
+ q(0),
+ ],
+ q(dongolawi) => [
+ q(2012),
q(0),
],
q(dongotono) => [
- q(1967),
+ q(1978),
q(0),
],
q(dongshanba lalo) => [
- q(7506),
+ q(7566),
q(0),
],
q(dongxiang) => [
- q(5857),
+ q(5900),
q(0),
],
q(donno so dogon) => [
- q(1974),
+ q(1986),
q(0),
],
q(doondo) => [
- q(1968),
+ q(1979),
q(0),
],
q(dori'o) => [
- q(2103),
+ q(2121),
q(0),
],
q(dorig) => [
- q(7166),
+ q(7220),
q(0),
],
q(doromu-koki) => [
- q(3498),
+ q(3528),
q(0),
],
q(dororo) => [
- q(2122),
+ q(2140),
q(0),
],
q(dorze) => [
- q(2110),
+ q(2128),
q(0),
],
q(doso) => [
- q(2098),
+ q(2116),
+ q(0),
+ ],
+ q(dotyali) => [
+ q(2165),
q(0),
],
q(doutai) => [
- q(6365),
+ q(6412),
q(0),
],
q(doyayo) => [
- q(2107),
+ q(2125),
q(0),
],
q(dravidian languages) => [
@@ -30685,11 +31006,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(drents) => [
- q(2124),
+ q(2142),
q(0),
],
q(drung) => [
- q(2162),
+ q(2183),
q(0),
],
q(duala) => [
@@ -30697,131 +31018,127 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(duano) => [
- q(2158),
+ q(2179),
q(0),
],
q(duau) => [
- q(2168),
+ q(2189),
q(0),
],
q(dubli) => [
- q(2145),
+ q(2166),
q(0),
],
q(dubu) => [
- q(2075),
+ q(2092),
q(0),
],
q(dugun) => [
- q(4755),
+ q(4783),
q(0),
],
q(duguri) => [
- q(1956),
+ q(1964),
q(0),
],
q(dugwor) => [
- q(2067),
+ q(2084),
q(0),
],
q(duhwa) => [
- q(3153),
+ q(3186),
q(0),
],
q(duke) => [
- q(4878),
+ q(4908),
q(0),
],
q(dulbu) => [
- q(1958),
+ q(1966),
q(0),
],
q(duli) => [
- q(2167),
+ q(2188),
q(0),
],
q(duma) => [
- q(2064),
+ q(2080),
q(0),
],
q(dumbea) => [
- q(2149),
+ q(2170),
q(0),
],
q(dumi) => [
- q(2161),
+ q(2182),
q(0),
],
q(dumpas) => [
- q(2076),
+ q(2093),
q(0),
],
q(dumun) => [
- q(2152),
+ q(2173),
q(0),
],
q(duna) => [
- q(2146),
+ q(2167),
q(0),
],
q(dungan) => [
- q(2082),
+ q(2099),
q(0),
],
q(dungmali) => [
- q(5670),
+ q(5710),
q(0),
],
q(dungra bhil) => [
- q(2151),
+ q(2172),
q(0),
],
q(dungu) => [
- q(1963),
+ q(1972),
q(0),
],
q(dupaninan agta) => [
- q(2157),
+ q(2178),
q(0),
],
q(dura) => [
- q(2121),
- q(0),
- ],
- q(durango nahuatl) => [
- q(4906),
+ q(2139),
q(0),
],
q(duri) => [
- q(4564),
+ q(4592),
q(0),
],
q(duriankere) => [
- q(1957),
+ q(1965),
q(0),
],
q(duruma) => [
- q(2150),
+ q(2171),
q(0),
],
q(duruwa) => [
- q(5325),
+ q(5364),
q(0),
],
q(dusner) => [
- q(2131),
+ q(2149),
q(0),
],
q(dusun deyah) => [
- q(2156),
+ q(2177),
q(0),
],
q(dusun malang) => [
- q(2159),
+ q(2180),
q(0),
],
q(dusun witu) => [
- q(2164),
+ q(2185),
q(0),
],
q(dutch) => [
@@ -30829,7 +31146,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dutch sign language) => [
- q(2127),
+ q(2145),
q(0),
],
q(dutch, middle (ca.1050-1350)) => [
@@ -30837,55 +31154,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dutton world speedwords) => [
- q(2172),
+ q(2192),
q(0),
],
q(duungooma) => [
- q(2165),
+ q(2186),
q(0),
],
q(duupa) => [
- q(1930),
+ q(1939),
q(0),
],
q(duvle) => [
- q(2163),
+ q(2184),
q(0),
],
q(duwai) => [
- q(1959),
+ q(1967),
q(0),
],
q(duwet) => [
- q(2629),
+ q(2653),
+ q(0),
+ ],
+ q(duya) => [
+ q(3825),
q(0),
],
q(dwang) => [
- q(4959),
+ q(4988),
q(0),
],
q(dyaabugay) => [
- q(2182),
+ q(2202),
q(0),
],
q(dyaberdyaber) => [
- q(2175),
+ q(2195),
q(0),
],
q(dyan) => [
- q(2174),
+ q(2194),
q(0),
],
q(dyangadi) => [
- q(2180),
+ q(2200),
q(0),
],
q(dyirbal) => [
- q(1955),
+ q(1963),
q(0),
],
q(dyugun) => [
- q(2176),
+ q(2196),
q(0),
],
q(dyula) => [
@@ -30893,23 +31214,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dza) => [
- q(3034),
+ q(3060),
q(0),
],
q(dzalakha) => [
- q(2186),
+ q(2206),
q(0),
],
q(dzando) => [
- q(2187),
+ q(2207),
q(0),
],
q(dzao min) => [
- q(1380),
+ q(1386),
q(0),
],
q(dzodinka) => [
- q(0605),
+ q(0606),
q(0),
],
q(dzongkha) => [
@@ -30917,119 +31238,123 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(dzuungoo) => [
- q(2085),
+ q(2102),
q(0),
],
q(e) => [
- q(2196),
+ q(2216),
q(0),
],
q(e'ma buyang) => [
- q(7648),
+ q(7714),
q(0),
],
q(e'napa woromaipu) => [
- q(5304),
+ q(5344),
q(0),
],
q(early tripuri) => [
- q(7396),
+ q(7454),
q(0),
],
q(east ambae) => [
- q(5187),
+ q(5226),
q(0),
],
q(east berawan) => [
- q(7675),
+ q(7741),
q(0),
],
q(east damar) => [
- q(2073),
+ q(2090),
q(0),
],
q(east futuna) => [
- q(2353),
+ q(2373),
q(0),
],
q(east germanic languages) => [
- q(0504),
+ q(0505),
q(0),
],
q(east kewa) => [
- q(3343),
+ q(3374),
q(0),
],
q(east limba) => [
- q(3922),
+ q(3951),
q(0),
],
q(east makian) => [
- q(4314),
+ q(4342),
q(0),
],
q(east masela) => [
- q(6937),
+ q(6987),
q(0),
],
q(east nyala) => [
- q(4900),
+ q(4930),
q(0),
],
q(east slavic languages) => [
- q(0533),
+ q(0534),
q(0),
],
q(east tarangan) => [
- q(6611),
+ q(6660),
q(0),
],
q(east yugur) => [
- q(7634),
+ q(7698),
q(0),
],
q(eastern abnaki) => [
- q(0552),
+ q(0553),
q(0),
],
q(eastern acipa) => [
- q(0593),
+ q(0594),
q(0),
],
q(eastern apurimac quechua) => [
- q(5636),
+ q(5676),
q(0),
],
q(eastern arrernte) => [
- q(0634),
+ q(0635),
q(0),
],
q(eastern balochi) => [
- q(1169),
+ q(1176),
q(0),
],
q(eastern bolivian guarani) => [
- q(2611),
+ q(2635),
q(0),
],
q(eastern bontok) => [
- q(2189),
+ q(2209),
q(0),
],
q(eastern bru) => [
- q(1436),
+ q(1442),
q(0),
],
q(eastern canadian inuktitut) => [
- q(2896),
+ q(2920),
q(0),
],
q(eastern cham) => [
- q(1743),
+ q(1749),
+ q(0),
+ ],
+ q(eastern durango nahuatl) => [
+ q(1015),
q(0),
],
q(eastern egyptian bedawi arabic) => [
- q(0958),
+ q(0961),
q(0),
],
q(eastern frisian) => [
@@ -31037,191 +31362,199 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(eastern gorkha tamang) => [
- q(6400),
+ q(6447),
q(0),
],
q(eastern gurung) => [
- q(2466),
+ q(2487),
q(0),
],
q(eastern highland chatino) => [
- q(1776),
+ q(1783),
q(0),
],
q(eastern highland otomi) => [
- q(5257),
+ q(5297),
q(0),
],
q(eastern hongshuihe zhuang) => [
- q(7683),
+ q(7749),
q(0),
],
q(eastern huasteca nahuatl) => [
- q(4817),
+ q(4846),
q(0),
],
q(eastern huishui hmong) => [
- q(2741),
+ q(2766),
q(0),
],
q(eastern huishui miao) => [
- q(2741),
+ q(2766),
q(0),
],
q(eastern karaboro) => [
- q(7354),
+ q(7412),
q(0),
],
q(eastern katu) => [
- q(3589),
+ q(3619),
q(0),
],
q(eastern kayah) => [
- q(2216),
+ q(2236),
q(0),
],
q(eastern keres) => [
- q(3207),
+ q(3239),
+ q(0),
+ ],
+ q(eastern khumi chin) => [
+ q(1709),
q(0),
],
q(eastern krahn) => [
- q(3510),
+ q(3540),
q(0),
],
q(eastern lalu) => [
- q(7514),
+ q(7574),
q(0),
],
q(eastern lawa) => [
- q(4048),
+ q(4077),
q(0),
],
q(eastern magar) => [
- q(4211),
+ q(4240),
q(0),
],
q(eastern malayo-polynesian languages) => [
- q(0520),
+ q(0521),
q(0),
],
q(eastern maninkakan) => [
- q(2230),
+ q(2249),
q(0),
],
q(eastern mari) => [
- q(4239),
+ q(4267),
q(0),
],
q(eastern maroon creole) => [
- q(2048),
+ q(2064),
q(0),
],
q(eastern meohang) => [
- q(2228),
+ q(2247),
q(0),
],
q(eastern mnong) => [
- q(4369),
+ q(4397),
q(0),
],
q(eastern muria) => [
- q(2236),
+ q(2255),
q(0),
],
q(eastern ngad'a) => [
- q(4761),
+ q(4789),
q(0),
],
q(eastern nisu) => [
- q(4977),
+ q(5006),
q(0),
],
q(eastern ojibwa) => [
- q(5158),
+ q(5196),
q(0),
],
q(eastern oromo) => [
- q(2674),
+ q(2699),
q(0),
],
q(eastern parbate kham) => [
- q(3307),
+ q(3338),
q(0),
],
q(eastern penan) => [
- q(5359),
+ q(5398),
q(0),
],
q(eastern pomo) => [
- q(5342),
+ q(5381),
q(0),
],
q(eastern qiandong miao) => [
- q(2751),
+ q(2776),
+ q(0),
+ ],
+ q(eastern subanen) => [
+ q(5958),
q(0),
],
q(eastern sudanic languages) => [
- q(0523),
+ q(0524),
q(0),
],
q(eastern tamang) => [
- q(6286),
+ q(6333),
q(0),
],
q(eastern tawbuid) => [
- q(1331),
+ q(1337),
q(0),
],
q(eastern xiangxi miao) => [
- q(4543),
+ q(4571),
q(0),
],
q(eastern xwla gbe) => [
- q(2412),
+ q(2431),
q(0),
],
q(eastern yiddish) => [
- q(7475),
+ q(7535),
q(0),
],
q(ebira) => [
- q(2879),
+ q(2902),
q(0),
],
q(eblan) => [
- q(7222),
+ q(7276),
q(0),
],
q(ebrie) => [
- q(2191),
+ q(2211),
q(0),
],
q(ebughu) => [
- q(2188),
+ q(2208),
q(0),
],
q(ecuadorian sign language) => [
- q(2194),
+ q(2214),
q(0),
],
q(ede cabe) => [
- q(1663),
+ q(1669),
q(0),
],
q(ede ica) => [
- q(2857),
+ q(2880),
q(0),
],
q(ede idaca) => [
- q(2864),
+ q(2887),
q(0),
],
q(ede ije) => [
- q(2893),
+ q(2917),
q(0),
],
q(edera awyu) => [
- q(0981),
+ q(0986),
q(0),
],
q(edo) => [
@@ -31229,27 +31562,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(edolo) => [
- q(2281),
+ q(2300),
q(0),
],
q(edomite) => [
- q(7220),
+ q(7274),
q(0),
],
q(edopi) => [
- q(1951),
+ q(1959),
q(0),
],
q(edwas) => [
- q(1342),
+ q(1348),
q(0),
],
q(efai) => [
- q(2197),
+ q(2217),
q(0),
],
q(efe) => [
- q(2198),
+ q(2218),
q(0),
],
q(efik) => [
@@ -31257,19 +31590,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(efutop) => [
- q(5145),
+ q(5183),
q(0),
],
q(ega) => [
- q(2199),
+ q(2219),
q(0),
],
q(eggon) => [
- q(2201),
+ q(2221),
q(0),
],
q(egypt sign language) => [
- q(2269),
+ q(2288),
q(0),
],
q(egyptian (ancient)) => [
@@ -31277,31 +31610,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(egyptian arabic) => [
- q(0882),
+ q(0885),
q(0),
],
q(egyptian languages) => [
- q(0500),
+ q(0501),
q(0),
],
q(ehueun) => [
- q(2202),
+ q(2222),
q(0),
],
q(eipomek) => [
- q(2203),
+ q(2223),
q(0),
],
q(eitiep) => [
- q(2204),
+ q(2224),
q(0),
],
q(ejagham) => [
- q(2284),
+ q(2303),
q(0),
],
q(ejamat) => [
- q(2206),
+ q(2226),
q(0),
],
q(ekajuk) => [
@@ -31309,39 +31642,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ekari) => [
- q(2208),
+ q(2228),
q(0),
],
q(ekegusii) => [
- q(2626),
+ q(2650),
q(0),
],
q(eki) => [
- q(2209),
+ q(2229),
q(0),
],
q(ekit) => [
- q(2207),
+ q(2227),
q(0),
],
q(ekpeye) => [
- q(2214),
+ q(2234),
q(0),
],
q(el alto zapotec) => [
- q(7772),
+ q(7840),
q(0),
],
q(el hugeirat) => [
- q(2218),
+ q(2238),
q(0),
],
q(el molo) => [
- q(2222),
+ q(2242),
q(0),
],
q(el nayar cora) => [
- q(1847),
+ q(1854),
q(0),
],
q(elamite) => [
@@ -31349,127 +31682,127 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(eleme) => [
- q(2221),
+ q(2241),
q(0),
],
q(elepi) => [
- q(2217),
+ q(2237),
q(0),
],
q(elip) => [
- q(2212),
+ q(2232),
q(0),
],
q(elkei) => [
- q(2220),
+ q(2240),
q(0),
],
q(elotepec zapotec) => [
- q(7796),
+ q(7864),
q(0),
],
q(eloyi) => [
- q(0647),
- q(0),
- ],
- q(elpaputih) => [
- q(2223),
+ q(0648),
q(0),
],
q(elseng) => [
- q(4461),
+ q(4489),
q(0),
],
q(elu) => [
- q(2224),
+ q(2243),
q(0),
],
q(elymian) => [
- q(7291),
+ q(7347),
q(0),
],
q(emae) => [
- q(4360),
+ q(4388),
q(0),
],
q(emai-iuleha-ora) => [
- q(2225),
+ q(2244),
q(0),
],
q(eman) => [
- q(2232),
+ q(2251),
q(0),
],
q(embaloh) => [
- q(2226),
+ q(2245),
q(0),
],
q(embera-baudo) => [
- q(1085),
+ q(1092),
q(0),
],
q(embera-catio) => [
- q(1886),
+ q(1895),
q(0),
],
q(embera-chami) => [
- q(1780),
+ q(1787),
q(0),
],
q(embera-tado) => [
- q(6351),
+ q(6398),
q(0),
],
q(embu) => [
- q(2192),
+ q(2212),
q(0),
],
q(emem) => [
- q(2249),
+ q(2268),
q(0),
],
q(emerillon) => [
- q(2227),
+ q(2246),
q(0),
],
q(emilian) => [
- q(2200),
+ q(2220),
q(0),
],
q(emok) => [
- q(2233),
+ q(2252),
q(0),
],
q(emplawas) => [
- q(2237),
+ q(2256),
q(0),
],
q(emumu) => [
- q(2249),
+ q(2268),
q(0),
],
q(en) => [
- q(2242),
+ q(2261),
q(0),
],
q(enawene-nawe) => [
- q(6832),
+ q(6883),
q(0),
],
q(ende) => [
- q(2243),
+ q(2262),
q(0),
],
q(enga) => [
- q(2248),
+ q(2267),
+ q(0),
+ ],
+ q(engdewu) => [
+ q(4833),
q(0),
],
q(engenni) => [
- q(2246),
+ q(2265),
q(0),
],
q(enggano) => [
- q(2247),
+ q(2266),
q(0),
],
q(english) => [
@@ -31489,75 +31822,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(2),
],
q(enrekang) => [
- q(5570),
+ q(5610),
q(0),
],
q(enu) => [
- q(2250),
+ q(2269),
q(0),
],
q(enwan (akwa ibom state)) => [
- q(2252),
+ q(2271),
q(0),
],
q(enwan (edu state)) => [
- q(2251),
+ q(2270),
q(0),
],
q(enya) => [
- q(2456),
+ q(2476),
q(0),
],
q(epena) => [
- q(5982),
+ q(6027),
q(0),
],
q(epi-olmec) => [
- q(7227),
+ q(7281),
q(0),
],
q(epie) => [
- q(2254),
+ q(2273),
q(0),
],
q(epigraphic mayan) => [
- q(2239),
+ q(2258),
q(0),
],
q(eravallan) => [
- q(2255),
+ q(2274),
q(0),
],
q(erave) => [
- q(3347),
+ q(3378),
q(0),
],
q(ere) => [
- q(6723),
+ q(6773),
q(0),
],
q(eritai) => [
- q(2263),
+ q(2282),
q(0),
],
q(erokwanas) => [
- q(2264),
+ q(2283),
q(0),
],
q(erre) => [
- q(2261),
+ q(2280),
q(0),
],
q(erromintxela) => [
- q(2238),
+ q(2257),
q(0),
],
q(ersu) => [
- q(2262),
+ q(2281),
q(0),
],
q(eruwa) => [
- q(2257),
+ q(2276),
q(0),
],
q(erzya) => [
@@ -31565,27 +31898,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(esan) => [
- q(2957),
+ q(2981),
q(0),
],
q(ese) => [
- q(4114),
+ q(4143),
q(0),
],
q(ese ejja) => [
- q(2265),
+ q(2284),
q(0),
],
q(eshtehardi) => [
- q(2266),
+ q(2285),
q(0),
],
q(esimbi) => [
- q(0670),
+ q(0671),
q(0),
],
q(eskimo-aleut languages) => [
- q(0501),
+ q(0502),
q(0),
],
q(esperanto) => [
@@ -31593,11 +31926,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(esselen) => [
- q(2273),
+ q(2292),
q(0),
],
q(estado de mexico otomi) => [
- q(5261),
+ q(5301),
q(0),
],
q(estonian) => [
@@ -31605,71 +31938,71 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(estonian sign language) => [
- q(2272),
+ q(2291),
q(0),
],
q(esuma) => [
- q(2270),
+ q(2289),
q(0),
],
q(etchemin) => [
- q(2277),
+ q(2296),
q(0),
],
q(etebi) => [
- q(2276),
+ q(2295),
q(0),
],
q(eten) => [
- q(2285),
+ q(2304),
q(0),
],
q(eteocretan) => [
- q(2193),
+ q(2213),
q(0),
],
q(eteocypriot) => [
- q(2195),
+ q(2215),
q(0),
],
q(ethiopian sign language) => [
- q(2278),
+ q(2297),
q(0),
],
q(etkywan) => [
- q(2858),
+ q(2881),
q(0),
],
q(eton (cameroon)) => [
- q(2280),
+ q(2299),
q(0),
],
q(eton (vanuatu)) => [
- q(2279),
+ q(2298),
q(0),
],
q(etruscan) => [
- q(2283),
+ q(2302),
q(0),
],
q(etulo) => [
- q(6872),
+ q(6922),
q(0),
],
q(evant) => [
- q(1634),
+ q(1640),
q(0),
],
q(even) => [
- q(2287),
+ q(2306),
q(0),
],
q(evenki) => [
- q(2289),
+ q(2308),
q(0),
],
q(ewage-notu) => [
- q(4979),
+ q(5008),
q(0),
],
q(ewe) => [
@@ -31681,55 +32014,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(extremaduran) => [
- q(2290),
+ q(2309),
q(0),
],
q(eyak) => [
- q(2291),
+ q(2310),
q(0),
],
q(fa d'ambu) => [
- q(2295),
+ q(2314),
q(0),
],
q(fagani) => [
- q(2297),
+ q(2316),
q(0),
],
q(faire atta) => [
- q(1013),
+ q(1021),
q(0),
],
q(faita) => [
- q(2301),
+ q(2320),
q(0),
],
q(faiwol) => [
- q(2300),
+ q(2319),
q(0),
],
q(fala) => [
- q(2308),
+ q(2327),
q(0),
],
q(falam chin) => [
- q(1709),
+ q(1715),
q(0),
],
q(fali) => [
- q(2326),
+ q(2346),
q(0),
],
q(faliscan) => [
- q(7232),
+ q(7286),
q(0),
],
q(fam) => [
- q(2304),
+ q(2323),
q(0),
],
q(fanagalo) => [
- q(2333),
+ q(2353),
q(0),
],
q(fang) => [
@@ -31737,7 +32070,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(fang (cameroon)) => [
- q(2302),
+ q(2321),
q(0),
],
q(fang (equatorial guinea)) => [
@@ -31745,7 +32078,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(fania) => [
- q(2334),
+ q(2354),
q(0),
],
q(fanti) => [
@@ -31753,11 +32086,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(far western muria) => [
- q(2332),
+ q(2352),
q(0),
],
q(farefare) => [
- q(2619),
+ q(2643),
q(0),
],
q(faroese) => [
@@ -31765,47 +32098,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(fas) => [
- q(2341),
+ q(2361),
q(0),
],
q(fasu) => [
- q(2294),
+ q(2313),
q(0),
],
q(fataleka) => [
- q(2306),
+ q(2325),
q(0),
],
q(fataluku) => [
- q(1969),
+ q(1980),
q(0),
],
q(fayu) => [
- q(2307),
+ q(2326),
q(0),
],
q(fe'fe') => [
- q(2331),
+ q(2351),
q(0),
],
q(fedan) => [
- q(5337),
+ q(5376),
q(0),
],
q(fembe) => [
- q(0664),
+ q(0665),
q(0),
],
q(fernando po creole english) => [
- q(2340),
+ q(2360),
q(0),
],
q(feroge) => [
- q(2313),
+ q(2332),
q(0),
],
q(fiji hindi) => [
- q(2716),
+ q(2741),
q(0),
],
q(fijian) => [
@@ -31817,15 +32150,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(filomena mata-coahuitlan totonac) => [
- q(6496),
+ q(6546),
q(0),
],
q(finland-swedish sign language) => [
- q(2350),
+ q(2370),
q(0),
],
q(finlandssvenskt teckensprak) => [
- q(2350),
+ q(2370),
q(0),
],
q(finnish) => [
@@ -31833,7 +32166,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(finnish sign language) => [
- q(2348),
+ q(2368),
q(0),
],
q(finno-ugrian languages) => [
@@ -31841,19 +32174,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(finongan) => [
- q(2298),
+ q(2317),
q(0),
],
q(fipa) => [
- q(2319),
+ q(2338),
q(0),
],
q(firan) => [
- q(2320),
+ q(2339),
q(0),
],
q(fiwaga) => [
- q(2322),
+ q(2341),
q(0),
],
q(flemish) => [
@@ -31861,31 +32194,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(flemish sign language) => [
- q(6911),
+ q(6961),
q(0),
],
q(flinders island) => [
- q(2328),
+ q(2348),
q(0),
],
q(foau) => [
- q(2325),
+ q(2345),
q(0),
],
q(foi) => [
- q(2336),
+ q(2356),
q(0),
],
q(foia foia) => [
- q(2314),
+ q(2333),
q(0),
],
q(folopa) => [
- q(5513),
+ q(5553),
q(0),
],
q(foma) => [
- q(2337),
+ q(2357),
q(0),
],
q(fon) => [
@@ -31893,51 +32226,51 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(fongoro) => [
- q(2316),
+ q(2335),
q(0),
],
q(foodo) => [
- q(2335),
+ q(2355),
q(0),
],
q(forak) => [
- q(2346),
+ q(2366),
q(0),
],
q(fordata) => [
- q(2343),
+ q(2363),
q(0),
],
q(fore) => [
- q(2338),
+ q(2358),
q(0),
],
q(forest enets) => [
- q(2244),
+ q(2263),
q(0),
],
q(forest maninka) => [
- q(4639),
+ q(4667),
q(0),
],
q(formosan languages) => [
- q(0503),
+ q(0504),
q(0),
],
q(fortsenal) => [
- q(2347),
+ q(2367),
q(0),
],
q(francisco leon zoque) => [
- q(7756),
+ q(7824),
q(0),
],
q(francoprovencal) => [
- q(2345),
+ q(2365),
q(0),
],
q(frankish) => [
- q(2344),
+ q(2364),
q(0),
],
q(french) => [
@@ -31945,11 +32278,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(french belgian sign language) => [
- q(5914),
+ q(5957),
q(0),
],
q(french sign language) => [
- q(2349),
+ q(2369),
q(0),
],
q(french, middle (ca.1400-1600)) => [
@@ -31973,51 +32306,51 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(fuliiru) => [
- q(2329),
+ q(2349),
q(0),
],
q(fulnio) => [
- q(2360),
+ q(2380),
q(0),
],
q(fum) => [
- q(2359),
+ q(2379),
q(0),
],
q(fungwa) => [
- q(6806),
+ q(6857),
q(0),
],
q(fur) => [
- q(2366),
+ q(2386),
q(0),
],
q(furu) => [
- q(2363),
+ q(2383),
q(0),
],
q(futuna-aniwa) => [
- q(2362),
+ q(2382),
q(0),
],
q(fuyug) => [
- q(2365),
+ q(2385),
q(0),
],
q(fwai) => [
- q(2367),
+ q(2387),
q(0),
],
q(fwe) => [
- q(2368),
+ q(2388),
q(0),
],
q(fyam) => [
- q(5606),
+ q(5646),
q(0),
],
q(fyer) => [
- q(2318),
+ q(2337),
q(0),
],
q(ga) => [
@@ -32025,55 +32358,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ga'anda) => [
- q(2571),
+ q(2594),
q(0),
],
q(ga'dang) => [
- q(2429),
+ q(2448),
q(0),
],
q(gaa) => [
- q(6656),
+ q(6705),
q(0),
],
q(gaam) => [
- q(6309),
+ q(6356),
q(0),
],
q(gabri) => [
- q(2369),
+ q(2389),
q(0),
],
q(gabrielino-fernandeno) => [
- q(7234),
+ q(7289),
q(0),
],
q(gadang) => [
- q(2433),
+ q(2452),
q(0),
],
q(gaddang) => [
- q(2371),
+ q(2391),
q(0),
],
q(gaddi) => [
- q(2401),
+ q(2420),
q(0),
],
q(gade) => [
- q(2445),
+ q(2465),
q(0),
],
q(gade lohar) => [
- q(2423),
+ q(2442),
q(0),
],
q(gadjerawang) => [
- q(2430),
+ q(2449),
q(0),
],
q(gadsup) => [
- q(2377),
+ q(2397),
q(0),
],
q(gaelic) => [
@@ -32081,59 +32414,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(gafat) => [
- q(2458),
+ q(2478),
q(0),
],
q(gagadu) => [
- q(2410),
+ q(2429),
q(0),
],
q(gagauz) => [
- q(2374),
+ q(2394),
q(0),
],
q(gagnoa bete) => [
- q(1471),
+ q(1477),
q(0),
],
q(gagu) => [
- q(2470),
+ q(2491),
q(0),
],
q(gahri) => [
- q(1150),
+ q(1157),
q(0),
],
q(gaikundi) => [
- q(2396),
+ q(2415),
q(0),
],
q(gail) => [
- q(2485),
+ q(2506),
q(0),
],
q(gaina) => [
- q(2420),
+ q(2439),
q(0),
],
q(gal) => [
- q(2383),
+ q(2403),
q(0),
],
q(galambu) => [
- q(2514),
+ q(2536),
q(0),
],
q(galatian) => [
- q(7233),
+ q(7287),
q(0),
],
q(galela) => [
- q(2399),
+ q(2418),
q(0),
],
q(galeya) => [
- q(2385),
+ q(2405),
q(0),
],
q(galibi carib) => [
@@ -32141,7 +32474,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(galice) => [
- q(2417),
+ q(2436),
q(0),
],
q(galician) => [
@@ -32149,63 +32482,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(galindan) => [
- q(7235),
+ q(7290),
q(0),
],
q(gallurese sardinian) => [
- q(5882),
+ q(5925),
q(0),
],
q(galo) => [
- q(0612),
+ q(0613),
q(0),
],
q(galoli) => [
- q(2379),
+ q(2399),
q(0),
],
q(gamale kham) => [
- q(3264),
+ q(3295),
q(0),
],
q(gambera) => [
- q(2519),
+ q(2541),
q(0),
],
q(gambian wolof) => [
- q(7110),
+ q(7161),
q(0),
],
q(gamilaraay) => [
- q(3378),
+ q(3409),
q(0),
],
q(gamit) => [
- q(2402),
+ q(2421),
q(0),
],
q(gamkonora) => [
- q(2378),
+ q(2398),
q(0),
],
q(gamo) => [
- q(2526),
+ q(2548),
q(0),
],
q(gamo-ningi) => [
- q(1469),
+ q(1475),
q(0),
],
q(gan chinese) => [
- q(2381),
+ q(2401),
q(0),
],
q(gana) => [
- q(2542),
+ q(2564),
q(0),
],
q(ganang) => [
- q(2533),
+ q(2555),
q(0),
],
q(ganda) => [
@@ -32213,99 +32546,99 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(gane) => [
- q(2669),
+ q(2694),
q(0),
],
q(ganggalida) => [
- q(2416),
+ q(2435),
q(0),
],
q(ganglau) => [
- q(2465),
+ q(2486),
q(0),
],
q(gangte) => [
- q(2530),
+ q(2552),
q(0),
],
q(gangulu) => [
- q(2538),
+ q(2560),
q(0),
],
q(gants) => [
- q(2382),
+ q(2402),
q(0),
],
q(ganza) => [
- q(2667),
+ q(2692),
q(0),
],
q(ganzi) => [
- q(2547),
+ q(2569),
q(0),
],
q(gao) => [
- q(2459),
+ q(2480),
q(0),
],
q(gapapaiwa) => [
- q(5598),
- q(0),
- ],
- q(garawa) => [
- q(2393),
+ q(5638),
q(0),
],
q(garhwali) => [
- q(2403),
+ q(2422),
q(0),
],
q(garifuna) => [
- q(1636),
+ q(1642),
q(0),
],
q(garig-ilgar) => [
- q(2909),
+ q(2933),
q(0),
],
q(garo) => [
- q(2586),
+ q(2610),
q(0),
],
q(garre) => [
- q(2455),
+ q(2475),
+ q(0),
+ ],
+ q(garrwa) => [
+ q(7179),
q(0),
],
q(garus) => [
- q(2656),
+ q(2681),
q(0),
],
q(garza) => [
- q(7236),
+ q(7291),
q(0),
],
q(gata') => [
- q(2384),
+ q(2404),
q(0),
],
q(gavar) => [
- q(2564),
+ q(2586),
q(0),
],
q(gaviao do jiparana) => [
- q(2635),
+ q(2659),
q(0),
],
q(gawar-bati) => [
- q(2650),
+ q(2675),
q(0),
],
q(gawwada) => [
- q(2643),
+ q(2667),
q(0),
],
q(gayil) => [
- q(2662),
+ q(2687),
q(0),
],
q(gayo) => [
@@ -32313,27 +32646,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(gazi) => [
- q(2668),
+ q(2693),
q(0),
],
q(gbagyi) => [
- q(2408),
+ q(2427),
q(0),
],
q(gbanu) => [
- q(2411),
+ q(2430),
q(0),
],
q(gbanziri) => [
- q(2397),
+ q(2416),
q(0),
],
q(gbari) => [
- q(2413),
+ q(2432),
q(0),
],
q(gbati-ri) => [
- q(2602),
+ q(2626),
q(0),
],
q(gbaya) => [
@@ -32345,59 +32678,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(gbaya (sudan)) => [
- q(3535),
+ q(3565),
q(0),
],
q(gbaya-bossangoa) => [
- q(2406),
+ q(2425),
q(0),
],
q(gbaya-bozoum) => [
- q(2407),
+ q(2426),
q(0),
],
q(gbaya-mbodomo) => [
- q(2523),
+ q(2545),
q(0),
],
q(gbayi) => [
- q(2660),
+ q(2685),
q(0),
],
q(gbesi gbe) => [
- q(2409),
+ q(2428),
q(0),
],
q(gbii) => [
- q(2460),
+ q(2481),
+ q(0),
+ ],
+ q(gbin) => [
+ q(7288),
q(0),
],
q(gbiri-niragu) => [
- q(2578),
+ q(2602),
q(0),
],
q(gboloo grebo) => [
- q(2444),
+ q(2464),
q(0),
],
q(ge) => [
- q(2746),
+ q(2771),
q(0),
],
q(geba karen) => [
- q(3631),
+ q(3661),
q(0),
],
q(gebe) => [
- q(2448),
+ q(2468),
q(0),
],
q(gedaged) => [
- q(2426),
+ q(2445),
q(0),
],
q(gedeo) => [
- q(2123),
+ q(2141),
q(0),
],
q(geez) => [
@@ -32405,43 +32742,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(geji) => [
- q(2500),
+ q(2521),
q(0),
],
q(gejia) => [
- q(2746),
+ q(2771),
q(0),
],
q(geko karen) => [
- q(2476),
+ q(2497),
q(0),
],
q(gela) => [
- q(4901),
- q(0),
- ],
- q(gelao) => [
- q(2490),
+ q(4931),
q(0),
],
q(geman deng) => [
- q(4608),
+ q(4636),
q(0),
],
q(geme) => [
- q(2452),
+ q(2472),
q(0),
],
q(gen) => [
- q(2449),
+ q(2469),
q(0),
],
q(gende) => [
- q(2373),
+ q(2393),
q(0),
],
q(gengle) => [
- q(2446),
+ q(2466),
q(0),
],
q(georgian) => [
@@ -32449,15 +32782,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(gepo) => [
- q(7495),
+ q(7555),
q(0),
],
q(gera) => [
- q(2454),
+ q(2474),
q(0),
],
q(gergiko) => [
- q(4405),
+ q(4433),
q(0),
],
q(german) => [
@@ -32465,7 +32798,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(german sign language) => [
- q(2594),
+ q(2618),
q(0),
],
q(german, low) => [
@@ -32485,83 +32818,91 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(geruma) => [
- q(2442),
+ q(2462),
q(0),
],
q(geser-gorom) => [
- q(2453),
+ q(2473),
q(0),
],
q(gey) => [
- q(2623),
+ q(2647),
q(0),
],
q(ghadames) => [
- q(2472),
+ q(2493),
+ q(0),
+ ],
+ q(ghanaian pidgin english) => [
+ q(2592),
q(0),
],
q(ghanaian sign language) => [
- q(2593),
+ q(2617),
+ q(0),
+ ],
+ q(ghandruk sign language) => [
+ q(2459),
q(0),
],
q(ghanongga) => [
- q(2478),
+ q(2499),
q(0),
],
q(ghari) => [
- q(2579),
+ q(2603),
q(0),
],
q(ghayavi) => [
- q(1307),
+ q(1313),
q(0),
],
q(gheg albanian) => [
- q(0755),
+ q(0757),
q(0),
],
q(ghera) => [
- q(2480),
+ q(2501),
q(0),
],
q(ghodoberi) => [
- q(2437),
+ q(2456),
q(0),
],
q(ghomala') => [
- q(1041),
+ q(1048),
q(0),
],
q(ghomara) => [
- q(2479),
+ q(2500),
q(0),
],
q(ghotuo) => [
- q(0537),
+ q(0538),
q(0),
],
q(ghulfan) => [
- q(2477),
+ q(2498),
q(0),
],
q(giangan) => [
- q(1162),
+ q(1169),
q(0),
],
q(gibanawa) => [
- q(2484),
+ q(2505),
q(0),
],
q(gichuka) => [
- q(1896),
+ q(1905),
q(0),
],
q(gidar) => [
- q(2486),
+ q(2507),
q(0),
],
q(giiwo) => [
- q(3367),
+ q(3398),
q(0),
],
q(gikuyu) => [
@@ -32569,11 +32910,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(gikyode) => [
- q(0586),
+ q(0587),
q(0),
],
q(gilaki) => [
- q(2513),
+ q(2535),
q(0),
],
q(gilbertese) => [
@@ -32581,131 +32922,131 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(gilima) => [
- q(2497),
+ q(2518),
q(0),
],
q(gilyak) => [
- q(4853),
+ q(4882),
q(0),
],
q(gimi (eastern highlands)) => [
- q(2488),
+ q(2509),
q(0),
],
q(gimi (west new britain)) => [
- q(2491),
+ q(2511),
q(0),
],
q(gimme) => [
- q(3415),
+ q(3446),
q(0),
],
q(gimnime) => [
- q(2524),
+ q(2546),
q(0),
],
q(ginuman) => [
- q(2539),
+ q(2561),
q(0),
],
q(ginyanga) => [
- q(0992),
+ q(0998),
q(0),
],
q(girawa) => [
- q(1049),
+ q(1056),
q(0),
],
q(giryama) => [
- q(5098),
+ q(5136),
q(0),
],
q(gitonga) => [
- q(6559),
+ q(6608),
q(0),
],
q(gitua) => [
- q(2469),
+ q(2490),
q(0),
],
q(gitxsan) => [
- q(2495),
+ q(2515),
q(0),
],
q(giyug) => [
- q(2498),
+ q(2519),
q(0),
],
q(gizrra) => [
- q(6558),
+ q(6607),
q(0),
],
q(glaro-twabo) => [
- q(2515),
+ q(2537),
q(0),
],
q(glavda) => [
- q(2517),
+ q(2539),
q(0),
],
q(glio-oubi) => [
- q(5269),
+ q(5309),
q(0),
],
q(gnau) => [
- q(2545),
+ q(2567),
q(0),
],
q(goan konkani) => [
- q(2559),
+ q(2581),
q(0),
],
q(goaria) => [
- q(2487),
+ q(2508),
q(0),
],
q(gobasi) => [
- q(2555),
+ q(2577),
q(0),
],
q(gobu) => [
- q(2566),
+ q(2588),
q(0),
],
q(godie) => [
- q(2551),
+ q(2573),
q(0),
],
q(godwari) => [
- q(2441),
+ q(2461),
q(0),
],
q(goemai) => [
- q(0799),
+ q(0801),
q(0),
],
q(gofa) => [
- q(2553),
+ q(2575),
q(0),
],
q(gogo) => [
- q(2554),
+ q(2576),
q(0),
],
q(gogodala) => [
- q(2471),
+ q(2492),
q(0),
],
q(gokana) => [
- q(2506),
+ q(2527),
q(0),
],
q(gola) => [
- q(2558),
+ q(2580),
q(0),
],
q(golin) => [
- q(2630),
+ q(2654),
q(0),
],
q(gondi) => [
@@ -32713,31 +33054,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(gone dau) => [
- q(2560),
+ q(2582),
q(0),
],
q(gongduk) => [
- q(2552),
+ q(2574),
q(0),
],
q(gonja) => [
- q(2502),
+ q(2523),
q(0),
],
q(gooniyandi) => [
- q(2536),
+ q(2558),
q(0),
],
q(gor) => [
- q(2574),
+ q(2597),
q(0),
],
q(gorakor) => [
- q(2550),
+ q(2572),
q(0),
],
q(gorap) => [
- q(2562),
+ q(2584),
q(0),
],
q(gorontalo) => [
@@ -32745,11 +33086,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(gorovu) => [
- q(2583),
+ q(2607),
q(0),
],
q(gorowa) => [
- q(2565),
+ q(2587),
q(0),
],
q(gothic) => [
@@ -32757,35 +33098,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(goundo) => [
- q(2567),
+ q(2589),
q(0),
],
q(gourmanchema) => [
- q(2625),
+ q(2649),
q(0),
],
q(gowlan) => [
- q(2556),
+ q(2578),
q(0),
],
q(gowli) => [
- q(2557),
+ q(2579),
q(0),
],
q(gowro) => [
- q(2645),
+ q(2669),
q(0),
],
q(gozarkhani) => [
- q(2568),
+ q(2590),
q(0),
],
q(grangali) => [
- q(4902),
+ q(4932),
q(0),
],
q(grass koiari) => [
- q(3138),
+ q(3171),
q(0),
],
q(grebo) => [
@@ -32797,11 +33138,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(2),
],
q(greek languages) => [
- q(0507),
+ q(0508),
q(0),
],
q(greek sign language) => [
- q(2600),
+ q(2624),
q(0),
],
q(greek, ancient (to 1453)) => [
@@ -32813,7 +33154,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(green gelao) => [
- q(2492),
+ q(2512),
q(0),
],
q(greenlandic) => [
@@ -32821,67 +33162,67 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(grenadian creole english) => [
- q(2419),
+ q(2438),
q(0),
],
q(gresi) => [
- q(2585),
+ q(2609),
q(0),
],
q(groma) => [
- q(2582),
+ q(2606),
q(0),
],
q(gronings) => [
- q(2563),
+ q(2585),
q(0),
],
q(gros ventre) => [
- q(0923),
+ q(0926),
q(0),
],
q(gua) => [
- q(2653),
+ q(2678),
q(0),
],
q(guadeloupean creole french) => [
- q(2418),
+ q(2437),
q(0),
],
q(guahibo) => [
- q(2610),
+ q(2634),
q(0),
],
q(guaja) => [
- q(2631),
+ q(2655),
q(0),
],
q(guajajara) => [
- q(2604),
+ q(2628),
q(0),
],
q(guambiano) => [
- q(2614),
+ q(2638),
q(0),
],
q(guana (brazil)) => [
- q(2573),
+ q(2596),
q(0),
],
q(guana (paraguay)) => [
- q(2627),
+ q(2651),
q(0),
],
q(guanano) => [
- q(2628),
+ q(2652),
q(0),
],
q(guanche) => [
- q(2531),
+ q(2553),
q(0),
],
q(guanyinqiao) => [
- q(3054),
+ q(3081),
q(0),
],
q(guarani) => [
@@ -32889,107 +33230,107 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(guarayu) => [
- q(2665),
+ q(2690),
q(0),
],
q(guarequena) => [
- q(2372),
+ q(2392),
q(0),
],
q(guatemalan sign language) => [
- q(2596),
+ q(2620),
q(0),
],
q(guato) => [
- q(2601),
+ q(2625),
q(0),
],
q(guayabero) => [
- q(2616),
+ q(2640),
q(0),
],
q(gudanji) => [
- q(4862),
+ q(4891),
q(0),
],
q(gude) => [
- q(2427),
+ q(2446),
q(0),
],
q(gudu) => [
- q(2440),
+ q(2460),
q(0),
],
q(guduf-gava) => [
- q(2428),
+ q(2447),
q(0),
],
q(guerrero amuzgo) => [
- q(0784),
+ q(0786),
q(0),
],
q(guerrero nahuatl) => [
- q(4807),
+ q(4836),
q(0),
],
q(guevea de humboldt zapotec) => [
- q(7763),
+ q(7831),
q(0),
],
q(gugadj) => [
- q(2461),
+ q(2482),
q(0),
],
q(gugu badhun) => [
- q(2425),
+ q(2444),
q(0),
],
q(gugu warra) => [
- q(7136),
+ q(7189),
q(0),
],
q(gugubera) => [
- q(3364),
+ q(3395),
q(0),
],
q(guguyimidjir) => [
- q(3373),
+ q(3404),
q(0),
],
q(guhu-samane) => [
- q(2481),
+ q(2502),
q(0),
],
q(guianese creole french) => [
- q(2421),
+ q(2440),
q(0),
],
q(guibei zhuang) => [
- q(7685),
+ q(7751),
q(0),
],
q(guiberoua bete) => [
- q(1123),
+ q(1130),
q(0),
],
q(guibian zhuang) => [
- q(7687),
+ q(7753),
q(0),
],
q(guila zapotec) => [
- q(7805),
+ q(7873),
q(0),
],
q(guinea kpelle) => [
- q(2507),
+ q(2529),
q(0),
],
q(guinean sign language) => [
- q(2620),
+ q(2644),
q(0),
],
q(guiqiong) => [
- q(2572),
+ q(2595),
q(0),
],
q(gujarati) => [
@@ -32997,195 +33338,199 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(gujari) => [
- q(2503),
+ q(2524),
q(0),
],
q(gula (central african republic)) => [
- q(3166),
+ q(3199),
q(0),
],
q(gula (chad)) => [
- q(2516),
+ q(2538),
q(0),
],
q(gula iro) => [
- q(2512),
+ q(2534),
q(0),
],
q(gula'alaa) => [
- q(2520),
+ q(2542),
q(0),
],
q(gulay) => [
- q(2632),
+ q(2656),
q(0),
],
q(gule) => [
- q(2518),
+ q(2540),
q(0),
],
q(gulf arabic) => [
- q(0640),
+ q(0641),
q(0),
],
q(guliguli) => [
- q(2511),
+ q(2533),
q(0),
],
q(gumalu) => [
- q(2525),
+ q(2547),
q(0),
],
q(gumatj) => [
- q(2540),
+ q(2562),
q(0),
],
q(gumawana) => [
- q(2638),
+ q(2662),
q(0),
],
q(gumuz) => [
- q(2612),
+ q(2636),
q(0),
],
q(gun) => [
- q(2624),
+ q(2648),
q(0),
],
q(gundi) => [
- q(2431),
+ q(2450),
q(0),
],
q(gungabula) => [
- q(2659),
+ q(2684),
q(0),
],
q(gungu) => [
- q(5790),
+ q(5834),
q(0),
],
q(guntai) => [
- q(2544),
+ q(2566),
q(0),
],
q(gunwinggu) => [
- q(2617),
+ q(2641),
q(0),
],
q(gunya) => [
- q(2666),
+ q(2691),
q(0),
],
q(gupa-abawa) => [
- q(2569),
+ q(2591),
q(0),
],
q(gupapuyngu) => [
- q(2608),
+ q(2632),
q(0),
],
q(guragone) => [
- q(2462),
+ q(2483),
q(0),
],
q(guramalum) => [
- q(2592),
+ q(2616),
q(0),
],
q(gurani) => [
- q(2672),
+ q(2697),
q(0),
],
q(gurdjar) => [
- q(2432),
+ q(2451),
q(0),
],
q(gureng gureng) => [
- q(2543),
+ q(2565),
q(0),
],
q(gurgula) => [
- q(2463),
+ q(2484),
q(0),
],
q(guriaso) => [
- q(2590),
+ q(2614),
q(0),
],
q(gurinji) => [
- q(2607),
+ q(2631),
q(0),
],
q(gurmana) => [
- q(2633),
+ q(2657),
q(0),
],
q(guro) => [
- q(2548),
+ q(2570),
q(0),
],
q(guruntum-mbaaru) => [
- q(2576),
+ q(2600),
q(0),
],
q(gusan) => [
- q(2597),
+ q(2621),
q(0),
],
q(gusii) => [
- q(2626),
+ q(2650),
q(0),
],
q(gusilay) => [
- q(2595),
+ q(2619),
q(0),
],
q(guwamu) => [
- q(2651),
+ q(2676),
q(0),
],
q(guya) => [
- q(2504),
+ q(2525),
q(0),
],
q(guyanese creole english) => [
- q(2664),
+ q(2689),
q(0),
],
q(guyani) => [
- q(2639),
+ q(2663),
q(0),
],
q(gvoko) => [
- q(4805),
+ q(4834),
q(0),
],
q(gwa) => [
- q(2641),
+ q(2665),
q(0),
],
q(gwahatike) => [
- q(1933),
+ q(1942),
+ q(0),
+ ],
+ q(gwak) => [
+ q(3066),
q(0),
],
q(gwamhi-wuri) => [
- q(1155),
+ q(1162),
q(0),
],
q(gwandara) => [
- q(2648),
+ q(2673),
q(0),
],
q(gweda) => [
- q(2589),
+ q(2613),
q(0),
],
q(gweno) => [
- q(2644),
+ q(2668),
q(0),
],
q(gwere) => [
- q(2649),
+ q(2674),
q(0),
],
q(gwich'in) => [
@@ -33193,51 +33538,51 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(gyele) => [
- q(2661),
+ q(2686),
q(0),
],
q(gyem) => [
- q(2658),
+ q(2683),
q(0),
],
q(ha) => [
- q(2685),
+ q(2710),
q(0),
],
q(habu) => [
- q(2696),
+ q(2721),
q(0),
],
q(hadiyya) => [
- q(2701),
+ q(2726),
q(0),
],
q(hadothi) => [
- q(2777),
+ q(2802),
q(0),
],
q(hadrami) => [
- q(7239),
+ q(7295),
q(0),
],
q(hadrami arabic) => [
- q(0993),
+ q(0999),
q(0),
],
q(hadza) => [
- q(2807),
+ q(2831),
q(0),
],
q(haeke) => [
- q(0629),
+ q(0630),
q(0),
],
q(hahon) => [
- q(2677),
+ q(2702),
q(0),
],
q(hai//om) => [
- q(2708),
+ q(2733),
q(0),
],
q(haida) => [
@@ -33245,15 +33590,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(haigwai) => [
- q(2709),
+ q(2734),
q(0),
],
q(haiphong sign language) => [
- q(2675),
+ q(2700),
q(0),
],
q(haisla) => [
- q(2687),
+ q(2712),
q(0),
],
q(haitian) => [
@@ -33265,151 +33610,155 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(haitian vodoun culture language) => [
- q(2833),
+ q(2857),
q(0),
],
q(haji) => [
- q(2726),
+ q(2751),
q(0),
],
q(hajong) => [
- q(2678),
+ q(2703),
q(0),
],
q(haka chin) => [
- q(1792),
+ q(1799),
q(0),
],
q(hakka chinese) => [
- q(2679),
+ q(2704),
q(0),
],
q(hako) => [
- q(2683),
+ q(2708),
q(0),
],
q(halang) => [
- q(2680),
+ q(2705),
q(0),
],
q(halang doan) => [
- q(2733),
+ q(2758),
q(0),
],
q(halbi) => [
- q(2732),
+ q(2757),
q(0),
],
q(halh mongolian) => [
- q(3288),
+ q(3319),
q(0),
],
q(halia) => [
- q(2731),
+ q(2756),
q(0),
],
q(halkomelem) => [
- q(2824),
+ q(2848),
q(0),
],
q(hamap) => [
- q(2755),
+ q(2780),
q(0),
],
q(hamba) => [
- q(2692),
+ q(2717),
q(0),
],
q(hamer-banna) => [
- q(0770),
+ q(0772),
q(0),
],
q(hamtai) => [
- q(2754),
+ q(2779),
q(0),
],
q(han) => [
- q(2670),
+ q(2695),
q(0),
],
q(hanga) => [
- q(2676),
+ q(2701),
q(0),
],
q(hanga hundi) => [
- q(7118),
+ q(7169),
q(0),
],
q(hangaza) => [
- q(2682),
+ q(2707),
q(0),
],
q(hani) => [
- q(2764),
+ q(2789),
q(0),
],
q(hano) => [
- q(3933),
+ q(3962),
q(0),
],
q(hanoi sign language) => [
- q(2671),
+ q(2696),
q(0),
],
q(hanunoo) => [
- q(2766),
+ q(2791),
q(0),
],
q(harami) => [
- q(7237),
+ q(7293),
q(0),
],
q(harari) => [
- q(2686),
+ q(2711),
q(0),
],
q(harijan kinnauri) => [
- q(3339),
+ q(3370),
q(0),
],
q(haroi) => [
- q(2795),
+ q(2820),
+ q(0),
+ ],
+ q(haroti) => [
+ q(2802),
q(0),
],
q(harsusi) => [
- q(2804),
+ q(2828),
q(0),
],
q(haruai) => [
- q(6509),
+ q(6558),
q(0),
],
q(haruku) => [
- q(2793),
+ q(2818),
q(0),
],
q(haryanvi) => [
- q(1157),
+ q(1164),
q(0),
],
q(harzani) => [
- q(2800),
+ q(2824),
q(0),
],
q(hasha) => [
- q(7463),
+ q(7523),
q(0),
],
q(hassaniyya) => [
- q(4169),
+ q(4198),
q(0),
],
q(hatam) => [
- q(2673),
+ q(2698),
q(0),
],
q(hattic) => [
- q(7242),
+ q(7298),
q(0),
],
q(hausa) => [
@@ -33417,27 +33766,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(hausa sign language) => [
- q(2802),
+ q(2826),
q(0),
],
q(havasupai-walapai-yavapai) => [
- q(7619),
+ q(7683),
q(0),
],
q(haveke) => [
- q(2835),
+ q(2859),
q(0),
],
q(havu) => [
- q(2688),
+ q(2713),
q(0),
],
q(hawai'i creole english) => [
- q(2839),
+ q(2863),
q(0),
],
q(hawai'i pidgin sign language) => [
- q(2790),
+ q(2815),
q(0),
],
q(hawaiian) => [
@@ -33445,15 +33794,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(haya) => [
- q(2690),
+ q(2715),
q(0),
],
q(hazaragi) => [
- q(2691),
+ q(2716),
q(0),
],
q(hdi) => [
- q(7223),
+ q(7277),
q(0),
],
q(hebrew) => [
@@ -33461,35 +33810,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(hehe) => [
- q(2705),
+ q(2730),
q(0),
],
q(heiban) => [
- q(2694),
+ q(2719),
q(0),
],
q(heiltsuk) => [
- q(2706),
+ q(2731),
q(0),
],
q(helambu sherpa) => [
- q(5864),
+ q(5907),
q(0),
],
q(helong) => [
- q(2704),
+ q(2729),
q(0),
],
q(hema) => [
- q(4855),
+ q(4884),
q(0),
],
q(hemba) => [
- q(2707),
+ q(2732),
q(0),
],
q(herde) => [
- q(2703),
+ q(2728),
q(0),
],
q(herero) => [
@@ -33497,75 +33846,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(hermit) => [
- q(3908),
+ q(3936),
q(0),
],
q(hernican) => [
- q(7241),
+ q(7297),
q(0),
],
q(hertevin) => [
- q(2797),
+ q(2821),
q(0),
],
q(heung kong sau yue) => [
- q(2730),
+ q(2755),
q(0),
],
q(hewa) => [
- q(2681),
+ q(2706),
q(0),
],
q(heyo) => [
- q(0940),
+ q(0943),
q(0),
],
q(hiberno-scottish gaelic) => [
- q(2473),
+ q(2494),
q(0),
],
q(hibito) => [
- q(2714),
+ q(2739),
q(0),
],
q(hidatsa) => [
- q(2715),
+ q(2740),
q(0),
],
q(hieroglyphic luwian) => [
- q(2736),
+ q(2761),
q(0),
],
q(higaonon) => [
- q(4073),
+ q(4102),
q(0),
],
q(highland konjo) => [
- q(3335),
+ q(3366),
q(0),
],
q(highland oaxaca chontal) => [
- q(1715),
+ q(1721),
q(0),
],
q(highland popoluca) => [
- q(5494),
+ q(5534),
q(0),
],
q(highland puebla nahuatl) => [
- q(1014),
+ q(1022),
q(0),
],
q(highland totonac) => [
- q(6568),
+ q(6617),
q(0),
],
q(hijazi arabic) => [
- q(0600),
+ q(0601),
q(0),
],
q(hijuk) => [
- q(2720),
+ q(2745),
q(0),
],
q(hiligaynon) => [
@@ -33577,7 +33926,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(himarima) => [
- q(2723),
+ q(2748),
q(0),
],
q(hindi) => [
@@ -33585,11 +33934,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(hinduri) => [
- q(2719),
+ q(2744),
q(0),
],
q(hinukh) => [
- q(2489),
+ q(2510),
q(0),
],
q(hiri motu) => [
@@ -33601,31 +33950,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(hitu) => [
- q(2808),
+ q(2832),
q(0),
],
q(hiw) => [
- q(2724),
+ q(2749),
q(0),
],
q(hixkaryana) => [
- q(2725),
+ q(2750),
q(0),
],
q(hlai) => [
- q(3863),
+ q(3891),
q(0),
],
q(hlepho phowa) => [
- q(7500),
+ q(7560),
q(0),
],
q(hlersu) => [
- q(2734),
+ q(2759),
q(0),
],
q(hmar) => [
- q(2752),
+ q(2777),
q(0),
],
q(hmong) => [
@@ -33633,279 +33982,275 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(hmong daw) => [
- q(4595),
+ q(4623),
q(0),
],
q(hmong do) => [
- q(2756),
+ q(2781),
q(0),
],
q(hmong don) => [
- q(2742),
+ q(2767),
q(0),
],
q(hmong njua) => [
- q(2765),
+ q(2790),
q(0),
],
q(hmong shua) => [
- q(2759),
+ q(2784),
q(0),
],
q(hmong-mien languages) => [
- q(0508),
+ q(0509),
q(0),
],
q(hmwaveke) => [
- q(4465),
+ q(4493),
q(0),
],
q(ho) => [
- q(2772),
+ q(2797),
q(0),
],
q(ho chi minh city sign language) => [
- q(2783),
+ q(2808),
q(0),
],
q(ho-chunk) => [
- q(7049),
+ q(7100),
q(0),
],
q(hoava) => [
- q(2770),
+ q(2795),
q(0),
],
q(hobyot) => [
- q(2775),
+ q(2800),
q(0),
],
q(hoia hoia) => [
- q(2710),
+ q(2735),
q(0),
],
q(hokan languages) => [
- q(0509),
+ q(0510),
q(0),
],
q(holikachuk) => [
- q(2776),
+ q(2801),
q(0),
],
q(holiya) => [
- q(2787),
+ q(2812),
q(0),
],
q(holma) => [
- q(2773),
+ q(2798),
q(0),
],
q(holoholo) => [
- q(2780),
+ q(2805),
q(0),
],
q(holu) => [
- q(2778),
+ q(2803),
q(0),
],
q(homa) => [
- q(2779),
+ q(2804),
q(0),
],
q(honduras sign language) => [
- q(2700),
+ q(2725),
q(0),
],
q(hone) => [
- q(3096),
+ q(3128),
q(0),
],
q(hong kong sign language) => [
- q(2730),
+ q(2755),
q(0),
],
q(honi) => [
- q(2786),
+ q(2811),
q(0),
],
q(hopi) => [
- q(2781),
+ q(2806),
q(0),
],
q(horned miao) => [
- q(2794),
+ q(2819),
q(0),
],
q(horo) => [
- q(2782),
+ q(2807),
q(0),
],
q(horom) => [
- q(2774),
+ q(2799),
q(0),
],
q(horpa) => [
- q(2260),
- q(0),
- ],
- q(horuru) => [
- q(2796),
+ q(2279),
q(0),
],
q(hote) => [
- q(2784),
+ q(2809),
q(0),
],
q(hoti) => [
- q(2805),
+ q(2829),
q(0),
],
q(hovongan) => [
- q(2785),
+ q(2810),
q(0),
],
q(hoyahoya) => [
- q(2712),
+ q(2737),
q(0),
],
q(hozo) => [
- q(2788),
+ q(2813),
q(0),
],
q(hpon) => [
- q(2789),
+ q(2814),
q(0),
],
q(hrangkhol) => [
- q(2791),
+ q(2816),
q(0),
],
q(hre) => [
- q(2792),
+ q(2817),
q(0),
],
q(hruso) => [
- q(2798),
+ q(2822),
q(0),
],
q(hu) => [
- q(2822),
+ q(2846),
q(0),
],
q(huachipaeri) => [
- q(2815),
+ q(2839),
q(0),
],
q(huallaga huanuco quechua) => [
- q(5614),
+ q(5654),
q(0),
],
q(huamalies-dos de mayo huanuco quechua) => [
- q(5637),
+ q(5677),
q(0),
],
q(huambisa) => [
- q(2810),
+ q(2834),
q(0),
],
q(huarijio) => [
- q(6896),
+ q(6946),
q(0),
],
q(huastec) => [
- q(2825),
+ q(2849),
q(0),
],
q(huaulu) => [
- q(2812),
+ q(2836),
q(0),
],
q(huautla mazatec) => [
- q(4068),
+ q(4097),
q(0),
],
q(huaxcaleca nahuatl) => [
- q(4827),
+ q(4856),
q(0),
],
q(huaylas ancash quechua) => [
- q(5651),
+ q(5691),
q(0),
],
q(huaylla wanca quechua) => [
- q(5646),
+ q(5686),
q(0),
],
q(huba) => [
- q(2693),
+ q(2718),
q(0),
],
q(huehuetla tepehua) => [
- q(6375),
+ q(6422),
q(0),
],
q(huichol) => [
- q(2698),
+ q(2723),
q(0),
],
q(huilliche) => [
- q(2816),
+ q(2840),
q(0),
],
q(huitepec mixtec) => [
- q(4617),
+ q(4645),
q(0),
],
q(huizhou chinese) => [
- q(1922),
+ q(1931),
q(0),
],
q(hukumina) => [
- q(2829),
+ q(2853),
q(0),
],
q(hula) => [
- q(2820),
+ q(2844),
q(0),
],
q(hulaula) => [
- q(2831),
+ q(2855),
q(0),
],
q(huli) => [
- q(2817),
+ q(2841),
q(0),
],
q(hulung) => [
- q(2819),
+ q(2843),
q(0),
],
q(humburi senni songhay) => [
- q(2738),
+ q(2763),
q(0),
],
q(humene) => [
- q(2814),
+ q(2838),
q(0),
],
q(humla) => [
- q(2826),
+ q(2850),
q(0),
],
q(hun-saare) => [
- q(2147),
+ q(2168),
q(0),
],
q(hunde) => [
- q(2728),
+ q(2753),
q(0),
],
q(hung) => [
- q(2769),
+ q(2794),
q(0),
],
q(hungana) => [
- q(2821),
+ q(2845),
q(0),
],
q(hungarian) => [
@@ -33913,27 +34258,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(hungarian sign language) => [
- q(2801),
+ q(2825),
q(0),
],
q(hungworo) => [
- q(4688),
+ q(4716),
q(0),
],
q(hunjara-kaina ke) => [
- q(2729),
+ q(2754),
q(0),
],
q(hunnic) => [
- q(7238),
+ q(7294),
q(0),
],
q(hunsrik) => [
- q(2799),
+ q(2823),
q(0),
],
q(hunzib) => [
- q(2832),
+ q(2856),
q(0),
],
q(hupa) => [
@@ -33941,71 +34286,71 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(hupde) => [
- q(3102),
+ q(3135),
q(0),
],
q(hupla) => [
- q(2684),
+ q(2709),
q(0),
],
q(hurrian) => [
- q(7243),
+ q(7299),
q(0),
],
q(hutterisch) => [
- q(2447),
+ q(2467),
q(0),
],
q(hutterite german) => [
- q(2447),
+ q(2467),
q(0),
],
q(hwana) => [
- q(2840),
+ q(2864),
q(0),
],
q(hya) => [
- q(2841),
+ q(2865),
q(0),
],
q(hyam) => [
- q(2997),
+ q(3021),
q(0),
],
q(i'saka) => [
- q(3550),
+ q(3580),
q(0),
],
q(i-wak) => [
- q(2984),
+ q(3008),
q(0),
],
q(iaai) => [
- q(2842),
+ q(2866),
q(0),
],
q(iamalele) => [
- q(7551),
+ q(7612),
q(0),
],
q(iapama) => [
- q(2844),
+ q(2868),
q(0),
],
q(iatmul) => [
- q(2843),
+ q(2867),
q(0),
],
q(iau) => [
- q(6525),
+ q(6574),
q(0),
],
q(ibali teke) => [
- q(6380),
+ q(6427),
q(0),
],
q(ibaloi) => [
- q(2851),
+ q(2874),
q(0),
],
q(iban) => [
@@ -34013,39 +34358,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ibanag) => [
- q(2849),
+ q(2873),
q(0),
],
q(ibani) => [
- q(2856),
+ q(2879),
q(0),
],
q(ibatan) => [
- q(2982),
+ q(3006),
q(0),
],
q(iberian) => [
- q(7246),
+ q(7302),
q(0),
],
q(ibibio) => [
- q(2846),
- q(0),
- ],
- q(ibilo) => [
- q(2850),
+ q(2870),
q(0),
],
q(ibino) => [
- q(2853),
+ q(2876),
q(0),
],
q(ibu) => [
- q(2855),
+ q(2878),
q(0),
],
q(ibuoro) => [
- q(2854),
+ q(2877),
q(0),
],
q(icelandic) => [
@@ -34053,35 +34394,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(icelandic sign language) => [
- q(2859),
+ q(2882),
q(0),
],
q(iceve-maci) => [
- q(1111),
+ q(1118),
q(0),
],
q(ida'an) => [
- q(1954),
+ q(1962),
q(0),
],
q(idakho-isukha-tiriki) => [
- q(2861),
+ q(2884),
q(0),
],
q(idate) => [
- q(2869),
+ q(2892),
q(0),
],
q(idere) => [
- q(2865),
+ q(2888),
q(0),
],
q(idesa) => [
- q(2868),
+ q(2891),
q(0),
],
q(idi) => [
- q(2866),
+ q(2889),
q(0),
],
q(ido) => [
@@ -34089,39 +34430,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(idoma) => [
- q(2870),
+ q(2893),
q(0),
],
q(idon) => [
- q(2863),
+ q(2886),
q(0),
],
q(idu-mishmi) => [
- q(1770),
- q(0),
- ],
- q(idun) => [
- q(3797),
+ q(1776),
q(0),
],
q(iduna) => [
- q(6920),
+ q(6970),
q(0),
],
q(ife) => [
- q(2873),
+ q(2896),
q(0),
],
q(ifo) => [
- q(2874),
+ q(2897),
q(0),
],
q(igala) => [
- q(2882),
+ q(2905),
q(0),
],
q(igana) => [
- q(2881),
+ q(2904),
q(0),
],
q(igbo) => [
@@ -34129,39 +34466,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(igede) => [
- q(2880),
+ q(2903),
q(0),
],
q(ignaciano) => [
- q(2884),
+ q(2907),
q(0),
],
q(igo) => [
- q(0684),
+ q(0685),
q(0),
],
q(iguta) => [
- q(4686),
+ q(4714),
q(0),
],
q(igwe) => [
- q(2887),
+ q(2910),
q(0),
],
q(iha) => [
- q(2890),
+ q(2913),
q(0),
],
q(iha based pidgin) => [
- q(2888),
+ q(2911),
q(0),
],
q(ihievbe) => [
- q(2889),
+ q(2912),
q(0),
],
q(ija-zuba) => [
- q(6922),
+ q(6972),
q(0),
],
q(ijo languages) => [
@@ -34169,75 +34506,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ik) => [
- q(2905),
+ q(2929),
q(0),
],
q(ika) => [
- q(2898),
+ q(2922),
q(0),
],
q(ikizu) => [
- q(2906),
+ q(2930),
q(0),
],
q(iko) => [
- q(2897),
+ q(2921),
q(0),
],
- q(ikobi-mena) => [
- q(4148),
+ q(ikobi) => [
+ q(4177),
q(0),
],
q(ikoma-nata-isenye) => [
- q(5037),
+ q(5070),
q(0),
],
q(ikpeng) => [
- q(6737),
+ q(6787),
q(0),
],
q(ikpeshi) => [
- q(2901),
+ q(2925),
q(0),
],
q(ikposo) => [
- q(3484),
+ q(3515),
q(0),
],
q(iku-gora-ankwa) => [
- q(2903),
+ q(2927),
q(0),
],
q(ikulu) => [
- q(2899),
+ q(2923),
q(0),
],
q(ikwere) => [
- q(2904),
+ q(2928),
q(0),
],
q(ila) => [
- q(2908),
+ q(2932),
q(0),
],
q(ile ape) => [
- q(2907),
+ q(2931),
q(0),
],
q(ili turki) => [
- q(2910),
+ q(2934),
q(0),
],
q(ili'uun) => [
- q(2914),
+ q(2938),
q(0),
],
q(ilianen manobo) => [
- q(4080),
+ q(4109),
q(0),
],
q(illyrian) => [
- q(7248),
+ q(7304),
q(0),
],
q(iloko) => [
@@ -34245,31 +34582,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ilongot) => [
- q(2911),
+ q(2935),
q(0),
],
q(ilue) => [
- q(2915),
+ q(2939),
q(0),
],
q(ilwana) => [
- q(4325),
+ q(4353),
q(0),
],
q(imbabura highland quichua) => [
- q(5638),
+ q(5678),
q(0),
],
q(imbongu) => [
- q(2922),
+ q(2946),
q(0),
],
q(imeraguen) => [
- q(2918),
+ q(2942),
q(0),
],
q(imonda) => [
- q(2921),
+ q(2945),
q(0),
],
q(imperial aramaic (700-300 bce)) => [
@@ -34277,19 +34614,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(imroing) => [
- q(2923),
+ q(2947),
q(0),
],
q(inabaknon) => [
- q(0581),
+ q(0582),
q(0),
],
q(inapang) => [
- q(4666),
+ q(4694),
q(0),
],
q(inapari) => [
- q(2933),
+ q(2957),
q(0),
],
q(inari sami) => [
@@ -34297,7 +34634,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(indian sign language) => [
- q(2934),
+ q(2958),
q(0),
],
q(indic languages) => [
@@ -34309,11 +34646,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(indo-iranian languages) => [
- q(0511),
+ q(0512),
q(0),
],
q(indo-portuguese) => [
- q(2862),
+ q(2885),
q(0),
],
q(indonesian) => [
@@ -34321,39 +34658,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(indonesian bajau) => [
- q(1094),
+ q(1101),
q(0),
],
q(indonesian sign language) => [
- q(2929),
+ q(2953),
q(0),
],
q(indri) => [
- q(2867),
+ q(2890),
q(0),
],
q(indus kohistani) => [
- q(4573),
+ q(4601),
q(0),
],
q(indus valley language) => [
- q(7252),
+ q(7308),
q(0),
],
q(inebu one) => [
- q(5155),
+ q(5193),
q(0),
],
q(ineseno) => [
- q(2936),
+ q(2960),
q(0),
],
q(inga) => [
- q(2926),
+ q(2950),
q(0),
],
q(ingrian) => [
- q(2993),
+ q(3017),
q(0),
],
q(ingush) => [
@@ -34361,27 +34698,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(inlaod itneg) => [
- q(2968),
+ q(2992),
q(0),
],
q(inoke-yate) => [
- q(2932),
+ q(2956),
q(0),
],
q(inonhan) => [
- q(3962),
+ q(3991),
q(0),
],
q(inor) => [
- q(2937),
+ q(2961),
q(0),
],
q(inpui naga) => [
- q(4879),
+ q(4909),
q(0),
],
q(interglossa) => [
- q(2886),
+ q(2909),
q(0),
],
q(interlingua (international auxiliary language association)) => [
@@ -34393,11 +34730,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(international sign) => [
- q(2913),
+ q(2937),
q(0),
],
q(intha) => [
- q(2935),
+ q(2959),
+ q(0),
+ ],
+ q(inuinnaqtun) => [
+ q(2926),
q(0),
],
q(inuktitut) => [
@@ -34409,31 +34750,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(iowa-oto) => [
- q(2939),
+ q(2963),
q(0),
],
q(ipalapa amuzgo) => [
- q(1011),
+ q(1018),
q(0),
],
q(ipiko) => [
- q(2941),
+ q(2965),
q(0),
],
q(ipili) => [
- q(2940),
+ q(2964),
q(0),
],
q(ipulo) => [
- q(0900),
+ q(0903),
q(0),
],
q(iquito) => [
- q(2942),
+ q(2966),
q(0),
],
q(ir) => [
- q(2948),
+ q(2972),
q(0),
],
q(iranian languages) => [
@@ -34441,35 +34782,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(iranian persian) => [
- q(5355),
+ q(5394),
q(0),
],
q(irantxe) => [
- q(2947),
+ q(2971),
q(0),
],
q(iranun) => [
- q(2912),
+ q(2936),
q(0),
],
q(iraqw) => [
- q(2946),
+ q(2970),
q(0),
],
q(irarutu) => [
- q(2944),
+ q(2968),
q(0),
],
q(iraya) => [
- q(2951),
+ q(2975),
q(0),
],
q(iresim) => [
- q(2943),
+ q(2967),
q(0),
],
q(irigwe) => [
- q(2945),
+ q(2969),
q(0),
],
q(irish) => [
@@ -34477,7 +34818,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(irish sign language) => [
- q(2956),
+ q(2980),
q(0),
],
q(irish, middle (900-1200)) => [
@@ -34493,99 +34834,99 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(irula) => [
- q(2949),
+ q(2973),
q(0),
],
q(isabi) => [
- q(2952),
+ q(2976),
q(0),
],
q(isanzu) => [
- q(2961),
+ q(2985),
q(0),
],
q(isarog agta) => [
- q(0663),
+ q(0664),
q(0),
],
q(isconahua) => [
- q(2953),
+ q(2977),
q(0),
],
q(isebe) => [
- q(2885),
+ q(2908),
q(0),
],
q(isekiri) => [
- q(2974),
+ q(2998),
q(0),
],
q(ishkashimi) => [
- q(2959),
+ q(2983),
q(0),
],
q(isinai) => [
- q(2931),
+ q(2955),
q(0),
],
q(isirawa) => [
- q(6142),
+ q(6189),
q(0),
],
q(island carib) => [
- q(1837),
+ q(1844),
q(0),
],
q(islander creole english) => [
- q(2860),
+ q(2883),
q(0),
],
q(isnag) => [
- q(2954),
+ q(2978),
q(0),
],
q(isoko) => [
- q(2962),
+ q(2986),
q(0),
],
q(israeli sign language) => [
- q(2963),
+ q(2987),
q(0),
],
q(isthmus mixe) => [
- q(4262),
+ q(4290),
q(0),
],
q(isthmus zapotec) => [
- q(7658),
+ q(7724),
q(0),
],
q(isthmus-cosoleacaque nahuatl) => [
- q(4822),
+ q(4851),
q(0),
],
q(isthmus-mecayapan nahuatl) => [
- q(4833),
+ q(4862),
q(0),
],
q(isthmus-pajapan nahuatl) => [
- q(4826),
+ q(4855),
q(0),
],
q(istriot) => [
- q(2964),
+ q(2988),
q(0),
],
q(istro romanian) => [
- q(5798),
+ q(5842),
q(0),
],
q(isu (fako division)) => [
- q(6277),
+ q(6324),
q(0),
],
q(isu (menchum division)) => [
- q(2965),
+ q(2989),
q(0),
],
q(italian) => [
@@ -34593,223 +34934,227 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(italian sign language) => [
- q(2955),
+ q(2979),
q(0),
],
q(italic languages) => [
- q(0512),
+ q(0513),
q(0),
],
q(itawit) => [
- q(2976),
+ q(3000),
q(0),
],
q(itelmen) => [
- q(2970),
+ q(2994),
q(0),
],
q(itene) => [
- q(2967),
+ q(2991),
q(0),
],
q(iteri) => [
- q(2973),
+ q(2997),
q(0),
],
q(itik) => [
- q(2978),
+ q(3002),
q(0),
],
q(ito) => [
- q(2977),
+ q(3001),
q(0),
],
q(itonama) => [
- q(2972),
+ q(2996),
q(0),
],
q(itu mbon uzo) => [
- q(2971),
+ q(2995),
q(0),
],
q(itundujia mixtec) => [
- q(4102),
+ q(4131),
q(0),
],
q(itza) => [
- q(2980),
+ q(3004),
q(0),
],
q(iu mien) => [
- q(2981),
+ q(3005),
q(0),
],
q(ivatan) => [
- q(2983),
+ q(3007),
q(0),
],
q(ivbie north-okpela-arhe) => [
- q(0912),
+ q(0915),
q(0),
],
q(iwaidja) => [
- q(2847),
+ q(2871),
q(0),
],
q(iwal) => [
- q(3140),
+ q(3173),
q(0),
],
q(iwam) => [
- q(2985),
+ q(3009),
q(0),
],
q(iwur) => [
- q(2986),
+ q(3010),
q(0),
],
q(ixcatec) => [
- q(2988),
+ q(3012),
q(0),
],
q(ixcatlan mazatec) => [
- q(4654),
+ q(4682),
q(0),
],
q(ixil) => [
- q(2989),
+ q(3013),
q(0),
],
q(ixtayutla mixtec) => [
- q(6942),
+ q(6992),
q(0),
],
q(ixtenco otomi) => [
- q(5267),
+ q(5307),
q(0),
],
q(iyayu) => [
- q(2990),
+ q(3014),
q(0),
],
q(iyive) => [
- q(6795),
+ q(6845),
q(0),
],
q(iyo) => [
- q(4716),
+ q(4744),
q(0),
],
q(iyo'wujwa chorote) => [
- q(1849),
+ q(1856),
q(0),
],
q(iyojwa'ja chorote) => [
- q(1852),
+ q(1859),
q(0),
],
q(izere) => [
- q(2995),
+ q(3019),
q(0),
],
q(izi-ezaa-ikwo-mgbo) => [
- q(2994),
+ q(3018),
q(0),
],
q(izon) => [
- q(2891),
+ q(2915),
q(0),
],
q(izora) => [
- q(1667),
+ q(1673),
q(0),
],
q(jabuti) => [
- q(3020),
+ q(3045),
q(0),
],
q(jad) => [
- q(3024),
+ q(3050),
q(0),
],
q(jadgali) => [
- q(3025),
+ q(3051),
q(0),
],
q(jah hut) => [
- q(3002),
+ q(3026),
q(0),
],
q(jahanka) => [
- q(2999),
+ q(3023),
q(0),
],
q(jair awyu) => [
- q(0978),
+ q(0983),
q(0),
],
q(jakalteko) => [
- q(2998),
+ q(3022),
q(0),
],
q(jakati) => [
- q(3011),
+ q(3035),
q(0),
],
q(jakun) => [
- q(3004),
+ q(3028),
q(0),
],
q(jalapa de diaz mazatec) => [
- q(4064),
+ q(4093),
q(0),
],
q(jalkunan) => [
- q(1572),
+ q(1578),
q(0),
],
q(jamaican country sign language) => [
- q(3022),
+ q(3048),
q(0),
],
q(jamaican creole english) => [
- q(3006),
+ q(3030),
q(0),
],
q(jamaican sign language) => [
- q(3062),
+ q(3093),
q(0),
],
q(jamamadi) => [
- q(2996),
+ q(3020),
q(0),
],
q(jambi malay) => [
- q(3013),
+ q(3037),
q(0),
],
q(jamiltepec mixtec) => [
- q(4618),
+ q(4646),
q(0),
],
q(jamsay dogon) => [
- q(2050),
+ q(2066),
+ q(0),
+ ],
+ q(jandai) => [
+ q(3031),
q(0),
],
q(jandavra) => [
- q(3074),
+ q(3106),
q(0),
],
q(jangkang) => [
- q(2052),
+ q(2068),
q(0),
],
q(jangshung) => [
- q(3073),
+ q(3105),
q(0),
],
q(janji) => [
- q(3076),
+ q(3108),
q(0),
],
q(japanese) => [
@@ -34817,47 +35162,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(japanese (family)) => [
- q(0513),
+ q(0514),
q(0),
],
q(japanese sign language) => [
- q(3091),
+ q(3123),
q(0),
],
q(japreria) => [
- q(3090),
+ q(3122),
q(0),
],
q(jaqaru) => [
- q(3086),
+ q(3118),
q(0),
],
q(jara) => [
- q(3001),
+ q(3025),
q(0),
],
q(jarai) => [
- q(3087),
+ q(3119),
q(0),
],
q(jarawa (india)) => [
- q(0804),
- q(0),
- ],
- q(jarawa (nigeria)) => [
- q(3009),
+ q(0806),
q(0),
],
q(jaru) => [
- q(1971),
+ q(1982),
q(0),
],
q(jauja wanca quechua) => [
- q(5667),
+ q(5707),
q(0),
],
q(jaunsari) => [
- q(3079),
+ q(3111),
q(0),
],
q(javanese) => [
@@ -34865,111 +35206,111 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(javindo) => [
- q(3109),
+ q(3142),
q(0),
],
q(jawe) => [
- q(3015),
+ q(3039),
q(0),
],
q(jaya) => [
- q(3114),
+ q(3147),
q(0),
],
q(jebero) => [
- q(3027),
+ q(3053),
q(0),
],
q(jeh) => [
- q(3030),
+ q(3056),
q(0),
],
q(jehai) => [
- q(3041),
+ q(3068),
q(0),
],
q(jemez) => [
- q(6571),
+ q(6620),
q(0),
],
q(jenaama bozo) => [
- q(1613),
+ q(1619),
q(0),
],
q(jeng) => [
- q(3029),
+ q(3055),
q(0),
],
q(jennu kurumba) => [
- q(7406),
+ q(7465),
q(0),
],
q(jere) => [
- q(3035),
+ q(3061),
q(0),
],
q(jeri kuo) => [
- q(3032),
+ q(3058),
q(0),
],
q(jerung) => [
- q(3028),
+ q(3054),
q(0),
],
q(jewish babylonian aramaic (ca. 200-1200 ce)) => [
- q(6522),
+ q(6571),
q(0),
],
q(jewish palestinian aramaic) => [
- q(3085),
+ q(3117),
q(0),
],
q(jhankot sign language) => [
- q(3042),
+ q(3069),
q(0),
],
q(jiamao) => [
- q(3053),
+ q(3080),
q(0),
],
q(jiarong) => [
- q(3112),
+ q(3145),
q(0),
],
q(jiba) => [
- q(3101),
+ q(3134),
q(0),
],
q(jibu) => [
- q(3044),
+ q(3071),
q(0),
],
q(jicarilla apache) => [
- q(0841),
+ q(0844),
q(0),
],
q(jiiddu) => [
- q(3050),
+ q(3077),
q(0),
],
q(jilbe) => [
- q(3047),
+ q(3074),
q(0),
],
q(jilim) => [
- q(3051),
+ q(3078),
q(0),
],
q(jimi (cameroon)) => [
- q(3052),
+ q(3079),
q(0),
],
q(jimi (nigeria)) => [
- q(3067),
+ q(3098),
q(0),
],
q(jina) => [
- q(3043),
+ q(3070),
q(0),
],
q(jingpho) => [
@@ -34977,75 +35318,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(jinyu chinese) => [
- q(1749),
+ q(1755),
q(0),
],
q(jiongnai bunu) => [
- q(5482),
+ q(5522),
q(0),
],
q(jirel) => [
- q(3098),
+ q(3131),
q(0),
],
q(jiru) => [
- q(3088),
+ q(3120),
q(0),
],
q(jita) => [
- q(3055),
+ q(3082),
q(0),
],
q(jju) => [
- q(3121),
+ q(3154),
q(0),
],
q(joba) => [
- q(3080),
+ q(3112),
q(0),
],
q(jofotek-bromnya) => [
- q(3019),
+ q(3044),
q(0),
],
q(jola-fonyi) => [
- q(2181),
+ q(2201),
q(0),
],
q(jola-kasa) => [
- q(1866),
+ q(1873),
q(0),
],
q(jonkor bourmataguil) => [
- q(3037),
+ q(3063),
q(0),
],
q(jora) => [
- q(3082),
+ q(3114),
q(0),
],
q(jordanian sign language) => [
- q(3083),
+ q(3115),
q(0),
],
q(jorto) => [
- q(3089),
+ q(3121),
q(0),
],
q(jowulu) => [
- q(3084),
+ q(3116),
q(0),
],
q(ju) => [
- q(3106),
+ q(3139),
q(0),
],
q(ju/'hoan) => [
- q(3593),
+ q(3623),
q(0),
],
q(juang) => [
- q(3100),
+ q(3133),
q(0),
],
q(judeo-arabic) => [
@@ -35053,23 +35394,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(judeo-berber) => [
- q(3016),
+ q(3040),
q(0),
],
q(judeo-georgian) => [
- q(3039),
+ q(3065),
q(0),
],
q(judeo-iraqi arabic) => [
- q(7499),
+ q(7559),
q(0),
],
q(judeo-italian) => [
- q(2969),
+ q(2993),
q(0),
],
q(judeo-moroccan arabic) => [
- q(0719),
+ q(0721),
q(0),
],
q(judeo-persian) => [
@@ -35077,111 +35418,111 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(judeo-tat) => [
- q(3026),
+ q(3052),
q(0),
],
q(judeo-tripolitanian arabic) => [
- q(7617),
+ q(7681),
q(0),
],
q(judeo-tunisian arabic) => [
- q(0718),
+ q(0720),
q(0),
],
q(judeo-yemeni arabic) => [
- q(3113),
+ q(3146),
q(0),
],
q(jukun takum) => [
- q(3021),
+ q(3046),
q(0),
],
q(juma) => [
- q(3092),
+ q(3124),
q(0),
],
q(jumjum) => [
- q(3099),
+ q(3132),
q(0),
],
q(jumla sign language) => [
- q(3104),
+ q(3137),
q(0),
],
q(jumli) => [
- q(3068),
+ q(3099),
q(0),
],
q(jungle inga) => [
- q(2928),
+ q(2952),
q(0),
],
q(juquila mixe) => [
- q(4615),
+ q(4643),
q(0),
],
q(jur modo) => [
- q(1127),
+ q(1134),
q(0),
],
q(juray) => [
- q(3108),
+ q(3141),
q(0),
],
q(jurchen) => [
- q(3094),
+ q(3126),
q(0),
],
q(juruna) => [
- q(3103),
+ q(3136),
q(0),
],
q(jutish) => [
- q(3105),
+ q(3138),
q(0),
],
q(juwal) => [
- q(4576),
+ q(4604),
q(0),
],
q(juxtlahuaca mixtec) => [
- q(6935),
+ q(6985),
q(0),
],
q(jwira-pepesa) => [
- q(3111),
+ q(3144),
q(0),
],
q(k'iche') => [
- q(5615),
+ q(5655),
q(0),
],
q(kaamba) => [
- q(7273),
+ q(7329),
q(0),
],
q(kaan) => [
- q(3804),
+ q(3832),
q(0),
],
q(kaansa) => [
- q(2529),
+ q(2551),
q(0),
],
q(kaapor) => [
- q(6842),
+ q(6892),
q(0),
],
q(kaapor sign language) => [
- q(6803),
+ q(6853),
q(0),
],
q(kaba) => [
- q(3557),
+ q(3587),
q(0),
],
q(kabalai) => [
- q(3620),
+ q(3650),
q(0),
],
q(kabardian) => [
@@ -35189,47 +35530,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kabatei) => [
- q(7268),
+ q(7324),
q(0),
],
q(kabixi) => [
- q(7203),
+ q(7257),
q(0),
],
q(kabiye) => [
- q(3143),
+ q(3176),
q(0),
],
q(kabola) => [
- q(3400),
+ q(3431),
q(0),
],
q(kabore one) => [
- q(5208),
+ q(5247),
q(0),
],
q(kabras) => [
- q(3889),
+ q(3917),
q(0),
],
q(kaburi) => [
- q(6797),
+ q(6847),
q(0),
],
q(kabutra) => [
- q(3148),
+ q(3181),
q(0),
],
q(kabuverdianu) => [
- q(3203),
+ q(3235),
q(0),
],
q(kabwa) => [
- q(1913),
+ q(1922),
q(0),
],
q(kabwari) => [
- q(3176),
+ q(3209),
q(0),
],
q(kabyle) => [
@@ -35237,19 +35578,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kachama-ganjule) => [
- q(3177),
+ q(3210),
q(0),
],
q(kachari) => [
- q(7177),
+ q(7231),
q(0),
],
q(kachchi) => [
- q(3246),
+ q(3278),
q(0),
],
q(kachi koli) => [
- q(2501),
+ q(2522),
q(0),
],
q(kachin) => [
@@ -35257,195 +35598,195 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kacipo-balesi) => [
- q(3454),
+ q(3485),
q(0),
],
q(kaco') => [
- q(7264),
+ q(7320),
q(0),
],
q(kadai) => [
- q(3721),
+ q(3751),
q(0),
],
q(kadar) => [
- q(3212),
- q(0),
- ],
- q(kadara) => [
- q(3115),
+ q(3244),
q(0),
],
q(kadaru) => [
- q(3197),
+ q(3230),
q(0),
],
q(kadiweu) => [
- q(3131),
+ q(3164),
q(0),
],
- q(kado) => [
- q(3198),
+ q(kadu) => [
+ q(7771),
q(0),
],
q(kaduo) => [
- q(3583),
+ q(3613),
q(0),
],
q(kafa) => [
- q(3145),
+ q(3178),
q(0),
],
q(kafoa) => [
- q(3490),
+ q(3520),
q(0),
],
q(kagan kalagan) => [
- q(3386),
+ q(3417),
q(0),
],
q(kagate) => [
- q(6266),
+ q(6313),
q(0),
],
q(kagayanen) => [
- q(1711),
+ q(1717),
q(0),
],
q(kagoma) => [
- q(3191),
+ q(3224),
q(0),
],
q(kagoro) => [
- q(7260),
+ q(7316),
q(0),
],
q(kagulu) => [
- q(3357),
+ q(3388),
q(0),
],
q(kahe) => [
- q(2727),
+ q(2752),
q(0),
],
q(kahua) => [
- q(0674),
+ q(0675),
q(0),
],
q(kaian) => [
- q(3173),
+ q(3206),
q(0),
],
q(kaibobo) => [
- q(3719),
+ q(3749),
q(0),
],
q(kaidipang) => [
- q(3733),
+ q(3762),
q(0),
],
q(kaiep) => [
- q(3150),
+ q(3183),
q(0),
],
q(kaikadi) => [
- q(3218),
+ q(3250),
q(0),
],
q(kaike) => [
- q(3734),
+ q(3763),
q(0),
],
q(kaiku) => [
- q(3365),
+ q(3396),
q(0),
],
q(kaimbe) => [
- q(7181),
+ q(7235),
q(0),
],
q(kaimbulawa) => [
- q(7703),
+ q(7769),
q(0),
],
q(kaingang) => [
- q(3270),
+ q(3301),
q(0),
],
q(kairak) => [
- q(1756),
+ q(1761),
q(0),
],
q(kairiru) => [
- q(3667),
+ q(3697),
q(0),
],
q(kairui-midiki) => [
- q(3524),
+ q(3554),
q(0),
],
q(kais) => [
- q(3730),
+ q(3759),
q(0),
],
q(kaivi) => [
- q(3158),
+ q(3191),
q(0),
],
q(kaiwa) => [
- q(3265),
+ q(3296),
q(0),
],
q(kaiy) => [
- q(6341),
+ q(6388),
q(0),
],
q(kajakse) => [
- q(1755),
+ q(1760),
q(0),
],
q(kajali) => [
- q(7263),
+ q(7319),
q(0),
],
q(kajaman) => [
- q(3118),
+ q(3151),
q(0),
],
q(kakabai) => [
- q(3501),
+ q(3531),
q(0),
],
q(kakabe) => [
- q(3353),
+ q(3384),
q(0),
],
q(kakanda) => [
- q(3349),
+ q(3380),
q(0),
],
q(kakauhua) => [
- q(3133),
+ q(3166),
q(0),
],
q(kaki ae) => [
- q(6304),
+ q(6351),
q(0),
],
q(kakihum) => [
- q(3671),
+ q(3701),
q(0),
],
q(kako) => [
- q(3358),
+ q(3389),
q(0),
],
q(kakwa) => [
- q(3217),
+ q(3249),
+ q(0),
+ ],
+ q(kala) => [
+ q(3198),
q(0),
],
q(kala lagaw ya) => [
- q(4589),
+ q(4617),
q(0),
],
q(kalaallisut) => [
@@ -35453,75 +35794,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kalabakan) => [
- q(3619),
+ q(3649),
q(0),
],
q(kalabari) => [
- q(2894),
+ q(2918),
q(0),
],
q(kalabra) => [
- q(3743),
+ q(3772),
q(0),
],
q(kalagan) => [
- q(3500),
+ q(3530),
q(0),
],
q(kalaktang monpa) => [
- q(3354),
+ q(3385),
q(0),
],
q(kalam) => [
- q(3407),
+ q(3438),
q(0),
],
q(kalami) => [
- q(2642),
+ q(2666),
q(0),
],
q(kalamse) => [
- q(3450),
+ q(3481),
q(0),
],
q(kalanadi) => [
- q(7061),
+ q(7111),
q(0),
],
q(kalanga) => [
- q(3164),
+ q(3197),
q(0),
],
q(kalao) => [
- q(3399),
+ q(3430),
q(0),
],
q(kalapuya) => [
- q(3703),
+ q(3733),
q(0),
],
q(kalarko) => [
- q(3129),
+ q(3162),
q(0),
],
q(kalasha) => [
- q(3393),
+ q(3424),
q(0),
],
q(kalenjin) => [
- q(3388),
+ q(3419),
q(0),
],
q(kalispel-pend d'oreille) => [
- q(2324),
+ q(2344),
q(0),
],
q(kalkoti) => [
- q(7254),
+ q(7310),
q(0),
],
q(kalkutung) => [
- q(3574),
+ q(3604),
q(0),
],
q(kalmyk) => [
@@ -35529,75 +35870,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kalo finnish romani) => [
- q(5742),
+ q(5783),
q(0),
],
q(kalou) => [
- q(7638),
+ q(7702),
q(0),
],
q(kaluli) => [
- q(1072),
+ q(1079),
q(0),
],
q(kalumpang) => [
- q(3383),
+ q(3414),
q(0),
],
q(kam) => [
- q(3200),
+ q(3232),
q(0),
],
q(kamakan) => [
- q(6926),
+ q(6976),
q(0),
],
q(kamang) => [
- q(7112),
+ q(7163),
q(0),
],
q(kamano) => [
- q(3144),
+ q(3177),
q(0),
],
q(kamantan) => [
- q(3162),
+ q(3195),
q(0),
],
q(kamar) => [
- q(3219),
+ q(3251),
q(0),
],
q(kamara) => [
- q(3070),
+ q(3101),
q(0),
],
q(kamarian) => [
- q(3741),
+ q(3770),
q(0),
],
q(kamaru) => [
- q(3278),
+ q(3309),
q(0),
],
q(kamas) => [
- q(7188),
+ q(7242),
q(0),
],
q(kamasa) => [
- q(3390),
+ q(3421),
q(0),
],
q(kamasau) => [
- q(3418),
+ q(3449),
q(0),
],
q(kamayo) => [
- q(3702),
+ q(3732),
q(0),
],
q(kamayura) => [
- q(3128),
+ q(3161),
q(0),
],
q(kamba) => [
@@ -35605,7 +35946,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kamba (brazil)) => [
- q(7194),
+ q(7248),
q(0),
],
q(kamba (kenya)) => [
@@ -35613,171 +35954,175 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(kambaata) => [
- q(3569),
+ q(3599),
q(0),
],
q(kambaira) => [
- q(3716),
+ q(3746),
q(0),
],
q(kambera) => [
- q(7201),
+ q(7255),
q(0),
],
q(kamberau) => [
- q(2950),
+ q(2974),
q(0),
],
q(kambiwa) => [
- q(7202),
+ q(7256),
q(0),
],
q(kami (nigeria)) => [
- q(3408),
+ q(3439),
q(0),
],
q(kami (tanzania)) => [
- q(3174),
+ q(3207),
q(0),
],
q(kamo) => [
- q(3170),
+ q(3203),
q(0),
],
q(kamoro) => [
- q(3271),
+ q(3302),
q(0),
],
q(kamta) => [
- q(5736),
+ q(5777),
q(0),
],
q(kamu) => [
- q(7311),
+ q(7367),
q(0),
],
q(kamula) => [
- q(7279),
+ q(7335),
q(0),
],
q(kamviri) => [
- q(7414),
+ q(7474),
q(0),
],
q(kamwe) => [
- q(2717),
+ q(2742),
q(0),
],
q(kanakanabu) => [
- q(7318),
+ q(7374),
q(0),
],
q(kanamari) => [
- q(3437),
+ q(3468),
+ q(0),
+ ],
+ q(kanan) => [
+ q(7775),
q(0),
],
q(kanashi) => [
- q(7324),
+ q(7380),
q(0),
],
q(kanasi) => [
- q(6096),
+ q(6141),
q(0),
],
q(kanauji) => [
- q(1234),
+ q(1240),
q(0),
],
q(kandas) => [
- q(3518),
+ q(3548),
q(0),
],
q(kandawo) => [
- q(2380),
+ q(2400),
q(0),
],
q(kande) => [
- q(3146),
+ q(3179),
q(0),
],
q(kanembu) => [
- q(3139),
+ q(3172),
q(0),
],
q(kang) => [
- q(3707),
+ q(3737),
q(0),
],
q(kanga) => [
- q(3169),
+ q(3202),
q(0),
],
q(kangean) => [
- q(3370),
+ q(3401),
q(0),
],
q(kanggape) => [
- q(2883),
+ q(2906),
q(0),
],
q(kangjia) => [
- q(3684),
+ q(3714),
q(0),
],
q(kango (bas-uele district)) => [
- q(3592),
+ q(3622),
q(0),
],
q(kango (tshopo district)) => [
- q(3742),
+ q(3771),
q(0),
],
q(kangri) => [
- q(7323),
+ q(7379),
q(0),
],
q(kaniet) => [
- q(3578),
+ q(3608),
q(0),
],
q(kanikkaran) => [
- q(3224),
+ q(3256),
q(0),
],
q(kaningdon-nindem) => [
- q(3193),
+ q(3226),
q(0),
],
q(kaningi) => [
- q(3732),
+ q(3761),
q(0),
],
q(kaningra) => [
- q(3442),
+ q(3473),
q(0),
],
q(kaninuwa) => [
- q(6986),
+ q(7036),
q(0),
],
q(kanite) => [
- q(3420),
+ q(3451),
q(0),
],
q(kanjari) => [
- q(3248),
+ q(3280),
q(0),
],
q(kanjobal) => [
- q(3326),
+ q(3357),
q(0),
],
q(kanju) => [
- q(3132),
+ q(3165),
q(0),
],
q(kankanaey) => [
- q(3430),
+ q(3461),
q(0),
],
q(kannada) => [
@@ -35785,31 +36130,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kannada kurumba) => [
- q(3237),
+ q(3269),
q(0),
],
q(kanoe) => [
- q(3680),
+ q(3710),
q(0),
],
q(kanowit-tanjong melanau) => [
- q(3679),
+ q(3709),
q(0),
],
q(kansa) => [
- q(3552),
+ q(3582),
q(0),
],
q(kantosi) => [
- q(7272),
+ q(7328),
q(0),
],
q(kanu) => [
- q(3299),
+ q(3330),
q(0),
],
q(kanufi) => [
- q(3433),
+ q(3464),
q(0),
],
q(kanuri) => [
@@ -35817,19 +36162,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kanyok) => [
- q(3449),
+ q(3480),
q(0),
],
q(kao) => [
- q(3127),
+ q(3160),
q(0),
],
q(kaonde) => [
- q(3509),
+ q(3539),
q(0),
],
q(kap) => [
- q(7525),
+ q(7585),
q(0),
],
q(kapampangan) => [
@@ -35837,55 +36182,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kapauri) => [
- q(3291),
+ q(3322),
q(0),
],
q(kapin) => [
- q(6323),
+ q(6370),
q(0),
],
q(kapinawa) => [
- q(7343),
+ q(7401),
q(0),
],
q(kapingamarangi) => [
- q(3476),
+ q(3507),
q(0),
],
q(kapori) => [
- q(3291),
+ q(3322),
q(0),
],
q(kapriman) => [
- q(2054),
+ q(2070),
q(0),
],
q(kaptiau) => [
- q(3136),
+ q(3169),
q(0),
],
q(kapya) => [
- q(3389),
+ q(3420),
q(0),
],
q(kaqchikel) => [
- q(1643),
+ q(1649),
q(0),
],
q(kara (central african republic)) => [
- q(3119),
+ q(3152),
q(0),
],
q(kara (korea)) => [
- q(7784),
+ q(7852),
q(0),
],
q(kara (papua new guinea)) => [
- q(3830),
+ q(3858),
q(0),
],
q(kara (tanzania)) => [
- q(5700),
+ q(5741),
q(0),
],
q(kara-kalpak) => [
@@ -35897,79 +36242,79 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(karadjeri) => [
- q(2394),
+ q(2413),
q(0),
],
q(karagas) => [
- q(3313),
+ q(3344),
q(0),
],
q(karahawyana) => [
- q(7261),
+ q(7317),
q(0),
],
q(karaim) => [
- q(3195),
+ q(3228),
q(0),
],
q(karaja) => [
- q(3479),
+ q(3510),
q(0),
],
q(karakhanid) => [
- q(7351),
+ q(7409),
q(0),
],
q(karami) => [
- q(7187),
+ q(7241),
q(0),
],
q(karamojong) => [
- q(3188),
+ q(3221),
q(0),
],
q(karang) => [
- q(3735),
+ q(3764),
q(0),
],
q(karanga) => [
- q(3575),
+ q(3605),
q(0),
],
q(karankawa) => [
- q(7707),
+ q(7774),
q(0),
],
q(karao) => [
- q(3701),
+ q(3731),
q(0),
],
q(karas) => [
- q(3276),
+ q(3307),
q(0),
],
q(karata) => [
- q(3489),
+ q(3519),
q(0),
],
q(karawa) => [
- q(7362),
+ q(7420),
q(0),
],
q(karbi) => [
- q(4288),
+ q(4316),
q(0),
],
q(kare (central african republic)) => [
- q(3141),
+ q(3174),
q(0),
],
q(kare (papua new guinea)) => [
- q(3405),
+ q(3436),
q(0),
],
q(karekare) => [
- q(3120),
+ q(3153),
q(0),
],
q(karelian) => [
@@ -35981,91 +36326,91 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(karey) => [
- q(3695),
+ q(3725),
q(0),
],
q(kari) => [
- q(3137),
+ q(3170),
q(0),
],
q(karingani) => [
- q(3268),
+ q(3299),
q(0),
],
q(karipuna) => [
- q(3267),
+ q(3298),
q(0),
],
q(karipuna creole french) => [
- q(3421),
+ q(3452),
q(0),
],
q(kariri-xoco) => [
- q(3740),
+ q(3769),
q(0),
],
q(karitiana) => [
- q(3581),
+ q(3611),
q(0),
],
q(kariya) => [
- q(3312),
+ q(3343),
q(0),
],
q(kariyarra) => [
- q(6921),
+ q(6971),
q(0),
],
q(karkar-yuri) => [
- q(7622),
+ q(7686),
q(0),
],
q(karkin) => [
- q(3523),
+ q(3553),
q(0),
],
q(karko) => [
- q(3363),
+ q(3394),
q(0),
],
q(karnai) => [
- q(1053),
+ q(1060),
q(0),
],
q(karo (brazil)) => [
- q(0876),
+ q(0879),
q(0),
],
q(karo (ethiopia)) => [
- q(3673),
+ q(3703),
q(0),
],
q(karok) => [
- q(3699),
+ q(3729),
q(0),
],
q(karon) => [
- q(3539),
+ q(3569),
q(0),
],
q(karon dori) => [
- q(3277),
+ q(3308),
q(0),
],
q(karore) => [
- q(7276),
+ q(7332),
q(0),
],
q(kasanga) => [
- q(1681),
+ q(1687),
q(0),
],
q(kasem) => [
- q(7372),
+ q(7430),
q(0),
],
q(kashaya) => [
- q(3345),
+ q(3376),
q(0),
],
q(kashmiri) => [
@@ -36077,123 +36422,123 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kasiguranin) => [
- q(3555),
+ q(3585),
q(0),
],
q(kaska) => [
- q(3374),
+ q(3405),
q(0),
],
q(kaskean) => [
- q(7791),
+ q(7859),
q(0),
],
q(kasseng) => [
- q(3257),
+ q(3289),
q(0),
],
q(kasua) => [
- q(3294),
+ q(3325),
q(0),
],
q(kataang) => [
- q(3258),
+ q(3290),
q(0),
],
q(katabaga) => [
- q(3584),
+ q(3614),
q(0),
],
q(katawixi) => [
- q(7189),
+ q(7243),
q(0),
],
q(katbol) => [
- q(6507),
+ q(6556),
q(0),
],
q(katcha-kadugli-miri) => [
- q(7384),
+ q(7442),
q(0),
],
q(kate) => [
- q(3406),
+ q(3437),
q(0),
],
q(kathoriya tharu) => [
- q(6479),
+ q(6529),
q(0),
],
q(kathu) => [
- q(7528),
+ q(7589),
q(0),
],
q(kati) => [
- q(1448),
+ q(1454),
q(0),
],
q(katkari) => [
- q(3249),
+ q(3281),
q(0),
],
q(katla) => [
- q(3171),
+ q(3204),
q(0),
],
q(kato) => [
- q(3590),
+ q(3620),
q(0),
],
q(katso) => [
- q(3117),
+ q(3150),
q(0),
],
q(katua) => [
- q(3568),
+ q(3598),
q(0),
],
q(katukina) => [
- q(3126),
+ q(3159),
q(0),
],
q(kaulong) => [
- q(5558),
+ q(5598),
q(0),
],
q(kaur) => [
- q(6924),
+ q(6974),
q(0),
],
q(kaure) => [
- q(1382),
+ q(1388),
q(0),
],
q(kaurna) => [
- q(7712),
+ q(7780),
q(0),
],
q(kauwera) => [
- q(7190),
+ q(7244),
q(0),
],
q(kavalan) => [
- q(1760),
+ q(1765),
q(0),
],
q(kavet) => [
- q(3537),
+ q(3567),
q(0),
],
q(kawacha) => [
- q(3155),
+ q(3188),
q(0),
],
q(kawaiisu) => [
- q(7192),
+ q(7246),
q(0),
],
q(kawe) => [
- q(3256),
+ q(3288),
q(0),
],
q(kawi) => [
@@ -36201,63 +36546,67 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kaxarari) => [
- q(3591),
+ q(3621),
q(0),
],
q(kaxuiana) => [
- q(3130),
+ q(3163),
q(0),
],
q(kayabi) => [
- q(3717),
+ q(3747),
q(0),
],
q(kayagar) => [
- q(3711),
+ q(3741),
q(0),
],
q(kayan) => [
- q(5340),
+ q(5379),
q(0),
],
q(kayan mahakam) => [
- q(7193),
+ q(7247),
q(0),
],
q(kayan river kayan) => [
- q(7266),
+ q(7322),
q(0),
],
q(kayapa kallahan) => [
- q(3122),
+ q(3155),
q(0),
],
q(kayapo) => [
- q(6745),
+ q(6795),
q(0),
],
q(kayardild) => [
- q(2657),
+ q(2682),
+ q(0),
+ ],
+ q(kayaw) => [
+ q(3656),
q(0),
],
q(kayeli) => [
- q(3729),
+ q(3758),
q(0),
],
q(kayong) => [
- q(3690),
+ q(3720),
q(0),
],
q(kayort) => [
- q(3713),
+ q(3743),
q(0),
],
q(kaytetye) => [
- q(2392),
+ q(2412),
q(0),
],
q(kayupulau) => [
- q(3738),
+ q(3767),
q(0),
],
q(kazakh) => [
@@ -36265,323 +36614,323 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kazukuru) => [
- q(3728),
+ q(3757),
q(0),
],
q(ke'o) => [
- q(7426),
+ q(7486),
q(0),
],
q(keak) => [
- q(3210),
+ q(3242),
q(0),
],
q(keapara) => [
- q(3301),
+ q(3332),
q(0),
],
q(kedah malay) => [
- q(4160),
+ q(4189),
q(0),
],
q(kedang) => [
- q(3565),
+ q(3595),
q(0),
],
q(keder) => [
- q(3201),
+ q(3233),
q(0),
],
q(kehu) => [
- q(3286),
+ q(3317),
q(0),
],
q(kei) => [
- q(3211),
+ q(3243),
q(0),
],
q(keiga) => [
- q(3205),
+ q(3237),
q(0),
],
q(keijar) => [
- q(3201),
+ q(3233),
q(0),
],
q(kein) => [
- q(1304),
+ q(1310),
q(0),
],
q(keiyo) => [
- q(2292),
+ q(2311),
q(0),
],
q(kekchi) => [
- q(3213),
+ q(3245),
q(0),
],
q(kela (democratic republic of congo)) => [
- q(3214),
+ q(3246),
q(0),
],
q(kela (papua new guinea)) => [
- q(3165),
+ q(3198),
q(0),
],
q(kelabit) => [
- q(3726),
+ q(3755),
q(0),
],
q(kele) => [
- q(3204),
+ q(3236),
q(0),
],
q(kele (democratic republic of congo)) => [
- q(3300),
+ q(3331),
q(0),
],
q(kele (papua new guinea)) => [
- q(5831),
+ q(5875),
q(0),
],
q(kelengazxo bozo) => [
- q(1632),
+ q(1638),
q(0),
],
q(keley-i kallahan) => [
- q(2878),
+ q(2901),
q(0),
],
q(keliko) => [
- q(3142),
+ q(3175),
q(0),
],
q(kelo) => [
- q(7225),
+ q(7279),
q(0),
],
q(kelon) => [
- q(3706),
+ q(3736),
q(0),
],
q(kemak) => [
- q(3215),
+ q(3247),
q(0),
],
q(kembayan) => [
- q(7226),
+ q(7280),
q(0),
],
q(kemberano) => [
- q(1624),
+ q(1630),
q(0),
],
q(kembra) => [
- q(7275),
+ q(7331),
q(0),
],
- q(kemezung) => [
- q(2072),
+ q(kemedzung) => [
+ q(2089),
q(0),
],
q(kemi sami) => [
- q(5987),
+ q(6032),
q(0),
],
q(kemiehua) => [
- q(3238),
+ q(3270),
q(0),
],
q(kemtuik) => [
- q(3419),
+ q(3450),
q(0),
],
q(kenaboi) => [
- q(7199),
+ q(7253),
q(0),
],
q(kenati) => [
- q(2387),
+ q(2407),
q(0),
],
q(kendayan) => [
- q(3448),
+ q(3479),
q(0),
],
q(kendeje) => [
- q(3380),
+ q(3411),
q(0),
],
q(kendem) => [
- q(3627),
+ q(3657),
q(0),
],
q(kenga) => [
- q(3708),
+ q(3738),
q(0),
],
q(keningau murut) => [
- q(3674),
+ q(3704),
q(0),
],
q(keninjal) => [
- q(3436),
+ q(3467),
q(0),
],
q(kensiu) => [
- q(3443),
+ q(3474),
q(0),
],
q(kenswei nsei) => [
- q(4739),
- q(0),
- ],
- q(kenuzi-dongola) => [
- q(3725),
+ q(4767),
q(0),
],
q(kenyan sign language) => [
- q(7262),
+ q(7318),
q(0),
],
q(kenyang) => [
- q(3216),
+ q(3248),
q(0),
],
q(kenyi) => [
- q(3892),
+ q(3920),
+ q(0),
+ ],
+ q(kenzi) => [
+ q(7382),
q(0),
],
q(keoru-ahia) => [
- q(7231),
+ q(7285),
q(0),
],
q(kepkiriwat) => [
- q(3483),
+ q(3514),
q(0),
],
q(kepo') => [
- q(3603),
+ q(3633),
q(0),
],
q(kera) => [
- q(3220),
+ q(3252),
q(0),
],
q(kerak) => [
- q(2711),
+ q(2736),
q(0),
],
q(kereho) => [
- q(7258),
+ q(7314),
q(0),
],
q(kerek) => [
- q(3530),
+ q(3560),
q(0),
],
q(kerewe) => [
- q(3206),
+ q(3238),
q(0),
],
q(kerewo) => [
- q(3691),
+ q(3721),
q(0),
],
q(kerinci) => [
- q(3632),
+ q(3662),
q(0),
],
q(kesawai) => [
- q(7229),
+ q(7283),
q(0),
],
q(ket) => [
- q(3222),
+ q(3254),
q(0),
],
q(ketangalan) => [
- q(3116),
+ q(3149),
q(0),
],
q(kete) => [
- q(3175),
+ q(3208),
q(0),
],
q(ketengban) => [
- q(7386),
+ q(7444),
q(0),
],
q(ketum) => [
- q(3587),
+ q(3617),
q(0),
],
q(keyagana) => [
- q(3698),
+ q(3728),
q(0),
],
q(kgalagadi) => [
- q(7274),
+ q(7330),
q(0),
],
q(khakas) => [
- q(3332),
+ q(3363),
q(0),
],
q(khalaj) => [
- q(3330),
+ q(3361),
q(0),
],
q(khaling) => [
- q(3392),
+ q(3423),
q(0),
],
q(khamba) => [
- q(3134),
+ q(3167),
q(0),
],
q(khams tibetan) => [
- q(3285),
+ q(3316),
q(0),
],
q(khamti) => [
- q(3295),
+ q(3326),
q(0),
],
q(khamyang) => [
- q(3562),
+ q(3592),
q(0),
],
q(khana) => [
- q(5150),
+ q(5188),
q(0),
],
q(khandesi) => [
- q(3290),
+ q(3321),
q(0),
],
q(khang) => [
- q(3337),
+ q(3368),
q(0),
],
q(khanty) => [
- q(3154),
+ q(3187),
q(0),
],
q(khao) => [
- q(7184),
+ q(7238),
q(0),
],
q(kharam naga) => [
- q(3251),
+ q(3283),
q(0),
],
q(kharia) => [
- q(3293),
+ q(3324),
q(0),
],
q(kharia thar) => [
- q(3566),
+ q(3596),
q(0),
],
q(khasi) => [
@@ -36589,67 +36938,67 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(khayo) => [
- q(3898),
+ q(3926),
q(0),
],
q(khazar) => [
- q(7714),
+ q(7782),
q(0),
],
q(khe) => [
- q(3502),
+ q(3532),
q(0),
],
q(khehek) => [
- q(6504),
+ q(6553),
q(0),
],
q(khengkha) => [
- q(7259),
+ q(7315),
q(0),
],
q(khetrani) => [
- q(7240),
+ q(7296),
q(0),
],
q(khezha naga) => [
- q(4881),
+ q(4911),
q(0),
],
q(khiamniungan naga) => [
- q(3322),
+ q(3353),
q(0),
],
q(khinalugh) => [
- q(3334),
+ q(3365),
q(0),
],
q(khirwar) => [
- q(3664),
+ q(3694),
q(0),
],
q(khisa) => [
- q(3508),
+ q(3538),
q(0),
],
q(khlor) => [
- q(3916),
+ q(3945),
q(0),
],
q(khlula) => [
- q(7524),
+ q(7584),
q(0),
],
q(khmu) => [
- q(3331),
+ q(3362),
q(0),
],
q(kho'ini) => [
- q(7256),
+ q(7312),
q(0),
],
q(khoibu naga) => [
- q(4875),
+ q(4905),
q(0),
],
q(khoisan languages) => [
@@ -36657,19 +37006,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kholok) => [
- q(3570),
+ q(3600),
q(0),
],
q(khonso) => [
- q(3669),
+ q(3699),
q(0),
],
q(khorasani turkish) => [
- q(3425),
+ q(3456),
q(0),
],
q(khorezmian) => [
- q(7706),
+ q(7773),
q(0),
],
q(khotanese) => [
@@ -36677,59 +37026,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(khowar) => [
- q(3298),
+ q(3329),
q(0),
],
q(khua) => [
- q(7244),
+ q(7300),
q(0),
],
q(khuen) => [
- q(3284),
- q(0),
- ],
- q(khumi awa chin) => [
- q(1750),
+ q(3315),
q(0),
],
q(khumi chin) => [
- q(1794),
+ q(1801),
q(0),
],
q(khun) => [
- q(3356),
+ q(3387),
q(0),
],
q(khunsari) => [
- q(3241),
+ q(3273),
q(0),
],
q(khvarshi) => [
- q(3297),
+ q(3328),
q(0),
],
q(kibet) => [
- q(3306),
+ q(3337),
q(0),
],
q(kibiri) => [
- q(5532),
+ q(5572),
q(0),
],
q(kickapoo) => [
- q(3304),
+ q(3335),
q(0),
],
q(kiembu) => [
- q(2192),
+ q(2212),
q(0),
],
q(kigiryama) => [
- q(5098),
+ q(5136),
q(0),
],
q(kikai) => [
- q(3724),
+ q(3754),
q(0),
],
q(kikuyu) => [
@@ -36737,43 +37082,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kildin sami) => [
- q(5984),
+ q(6029),
q(0),
],
q(kilivila) => [
- q(3311),
+ q(3342),
q(0),
],
q(kiliwa) => [
- q(3376),
+ q(3407),
q(0),
],
q(kilmeri) => [
- q(3309),
+ q(3340),
q(0),
],
q(kim) => [
- q(3302),
+ q(3333),
q(0),
],
q(kim mun) => [
- q(4274),
+ q(4302),
q(0),
],
q(kimaama) => [
- q(3308),
+ q(3339),
q(0),
],
q(kimaghima) => [
- q(3308),
+ q(3339),
q(0),
],
q(kimaragang) => [
- q(3513),
+ q(3543),
q(0),
],
q(kimbu) => [
- q(3320),
+ q(3351),
q(0),
],
q(kimbundu) => [
@@ -36781,43 +37126,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kimki) => [
- q(5848),
+ q(5892),
q(0),
],
q(kimre) => [
- q(3511),
+ q(3541),
q(0),
],
q(kinabalian) => [
- q(1673),
+ q(1679),
q(0),
],
q(kinalakna) => [
- q(3168),
+ q(3201),
q(0),
],
q(kinamiging manobo) => [
- q(4313),
+ q(4341),
q(0),
],
q(kinaray-a) => [
- q(3529),
+ q(3559),
q(0),
],
q(kinga) => [
- q(7684),
+ q(7750),
q(0),
],
q(kinnauri) => [
- q(3239),
+ q(3271),
q(0),
],
q(kintaq) => [
- q(3441),
+ q(3472),
q(0),
],
q(kinuku) => [
- q(3352),
+ q(3383),
q(0),
],
q(kinyarwanda) => [
@@ -36825,47 +37170,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kioko) => [
- q(6785),
+ q(6835),
q(0),
],
q(kiong) => [
- q(3361),
+ q(3392),
q(0),
],
q(kiorr) => [
- q(7267),
+ q(7323),
q(0),
],
q(kiowa) => [
- q(3314),
+ q(3345),
q(0),
],
q(kiowa apache) => [
- q(0842),
+ q(0845),
q(0),
],
q(kipfokomo) => [
- q(5412),
+ q(5450),
q(0),
],
q(kipsigis) => [
- q(5919),
+ q(5963),
q(0),
],
q(kiput) => [
- q(3700),
+ q(3730),
q(0),
],
q(kir-balar) => [
- q(3366),
+ q(3397),
q(0),
],
q(kirdki) => [
- q(0485),
+ q(0486),
q(0),
],
q(kire) => [
- q(2443),
+ q(2463),
q(0),
],
q(kirghiz) => [
@@ -36873,99 +37218,103 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kirike) => [
- q(5175),
+ q(5214),
q(0),
],
q(kirikiri) => [
- q(3323),
+ q(3354),
q(0),
],
q(kirmanjki) => [
- q(0485),
+ q(0486),
q(0),
],
q(kirmanjki (individual language)) => [
- q(3319),
+ q(3350),
q(0),
],
q(kirmanjki (macrolanguage)) => [
- q(0485),
+ q(0486),
q(7),
],
+ q(kirya-konzel) => [
+ q(2342),
+ q(0),
+ ],
q(kis) => [
- q(3317),
+ q(3348),
q(0),
],
q(kisa) => [
- q(3900),
+ q(3928),
q(0),
],
q(kisankasa) => [
- q(3503),
+ q(3533),
q(0),
],
q(kisar) => [
- q(3329),
+ q(3360),
q(0),
],
q(kisi) => [
- q(3324),
+ q(3355),
q(0),
],
q(kistane) => [
- q(2587),
+ q(2611),
q(0),
],
q(kiswahili) => [
- q(6226),
+ q(6273),
q(0),
],
q(kita maninkakan) => [
- q(4585),
+ q(4613),
q(0),
],
q(kitan) => [
- q(7711),
+ q(7779),
q(0),
],
q(kitharaka) => [
- q(6423),
+ q(6472),
q(0),
],
q(kitja) => [
- q(2483),
+ q(2504),
q(0),
],
q(kitsai) => [
- q(3310),
+ q(3341),
q(0),
],
q(kituba (congo)) => [
- q(4312),
+ q(4340),
q(0),
],
q(kituba (democratic republic of congo)) => [
- q(3588),
+ q(3618),
q(0),
],
q(kiunum) => [
- q(7018),
+ q(7068),
q(0),
],
q(kiwilwana) => [
- q(4325),
+ q(4353),
q(0),
],
q(klamath-modoc) => [
- q(3375),
+ q(3406),
q(0),
],
q(klao) => [
- q(3395),
+ q(3426),
q(0),
],
q(klias river kadazan) => [
- q(3515),
+ q(3545),
q(0),
],
q(klingon) => [
@@ -36973,211 +37322,227 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(knaanic) => [
- q(1923),
+ q(1932),
q(0),
],
q(ko) => [
- q(2358),
+ q(2378),
q(0),
],
q(koalib) => [
- q(3303),
+ q(3334),
q(0),
],
q(koasati) => [
- q(1759),
+ q(1764),
q(0),
],
q(koba) => [
- q(3474),
+ q(3505),
q(0),
],
q(kobiana) => [
- q(3163),
+ q(3196),
q(0),
],
q(kobol) => [
- q(3275),
+ q(3306),
q(0),
],
q(kobon) => [
- q(3492),
+ q(3522),
q(0),
],
q(koch) => [
- q(3194),
+ q(3227),
q(0),
],
q(kochila tharu) => [
- q(6428),
+ q(6477),
q(0),
],
q(koda) => [
- q(1701),
+ q(1706),
q(0),
],
q(kodaku) => [
- q(3567),
+ q(3597),
q(0),
],
q(kodava) => [
- q(3229),
+ q(3261),
q(0),
],
q(kodeoha) => [
- q(6927),
+ q(6977),
q(0),
],
q(kodi) => [
- q(3453),
+ q(3484),
q(0),
],
q(kodia) => [
- q(3656),
+ q(3686),
q(0),
],
q(koenoem) => [
- q(3172),
+ q(3205),
q(0),
],
q(kofa) => [
- q(3556),
+ q(3586),
q(0),
],
q(kofei) => [
- q(3478),
+ q(3509),
q(0),
],
q(kofyar) => [
- q(3652),
+ q(3682),
q(0),
],
q(kogi) => [
- q(3456),
+ q(3487),
q(0),
],
q(koguryo) => [
- q(7705),
+ q(7772),
q(0),
],
q(kohin) => [
- q(3372),
+ q(3403),
q(0),
],
q(kohistani shina) => [
- q(5431),
+ q(5469),
q(0),
],
q(koho) => [
- q(3482),
+ q(3513),
q(0),
],
q(kohumono) => [
- q(1076),
+ q(1083),
q(0),
],
q(koi) => [
- q(3368),
+ q(3399),
q(0),
],
q(koibal) => [
- q(7704),
+ q(7770),
q(0),
],
q(koireng) => [
- q(4877),
+ q(4907),
q(0),
],
q(koitabu) => [
- q(3504),
+ q(3534),
q(0),
],
q(koiwat) => [
- q(3685),
+ q(3715),
q(0),
],
q(kok borok) => [
- q(6621),
+ q(6670),
+ q(0),
+ ],
+ q(kok-nar) => [
+ q(2528),
q(0),
],
q(kokata) => [
- q(3571),
+ q(3601),
q(0),
],
q(koke) => [
- q(3465),
+ q(3496),
+ q(0),
+ ],
+ q(koki naga) => [
+ q(5124),
+ q(0),
+ ],
+ q(koko babangk) => [
+ q(5205),
q(0),
],
q(kokoda) => [
- q(7327),
+ q(7384),
q(0),
],
q(kokola) => [
- q(3731),
+ q(3760),
q(0),
],
q(kokota) => [
- q(3359),
+ q(3390),
q(0),
],
q(kol) => [
- q(2211),
+ q(2231),
+ q(0),
+ ],
+ q(kol (bangladesh)) => [
+ q(2231),
q(0),
],
q(kol (cameroon)) => [
- q(1221),
+ q(1228),
q(0),
],
q(kol (papua new guinea)) => [
- q(3460),
+ q(3491),
q(0),
],
q(kola) => [
- q(3636),
+ q(3666),
q(0),
],
q(kolbila) => [
- q(3377),
+ q(3408),
q(0),
],
q(kolibugan subanon) => [
- q(6010),
+ q(6055),
q(0),
],
q(kolsch) => [
- q(3549),
+ q(3579),
q(0),
],
q(koluwawa) => [
- q(3398),
+ q(3429),
q(0),
],
q(kom (cameroon)) => [
- q(1259),
+ q(1265),
q(0),
],
q(kom (india)) => [
- q(3412),
+ q(3443),
q(0),
],
q(koma) => [
- q(3424),
+ q(3455),
q(0),
],
q(komba) => [
- q(3475),
+ q(3506),
q(0),
],
q(kombai) => [
- q(6754),
+ q(6804),
q(0),
],
q(kombio) => [
- q(7197),
+ q(7251),
q(0),
],
q(komering) => [
- q(3259),
+ q(3291),
q(0),
],
q(komi) => [
@@ -37185,59 +37550,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(komi-permyak) => [
- q(3458),
+ q(3489),
q(0),
],
q(komi-zyrian) => [
- q(3491),
+ q(3521),
q(0),
],
q(kominimung) => [
- q(7329),
+ q(7386),
q(0),
],
q(komo (democratic republic of congo)) => [
- q(3422),
+ q(3453),
q(0),
],
q(komo (sudan)) => [
- q(7331),
+ q(7388),
q(0),
],
q(komodo) => [
- q(3622),
+ q(3652),
q(0),
],
q(kompane) => [
- q(3630),
+ q(3660),
q(0),
],
q(komyandaret) => [
- q(3739),
+ q(3768),
q(0),
],
q(kon keu) => [
- q(3362),
+ q(3393),
q(0),
],
q(konabere) => [
- q(1046),
+ q(1053),
q(0),
],
q(konai) => [
- q(3688),
+ q(3718),
q(0),
],
q(konda) => [
- q(3429),
+ q(3460),
q(0),
],
q(konda-dora) => [
- q(3231),
+ q(3263),
q(0),
],
q(koneraw) => [
- q(3199),
+ q(3231),
q(0),
],
q(kongo) => [
@@ -37249,7 +37614,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(konkani (individual language)) => [
- q(3438),
+ q(3469),
q(0),
],
q(konkani (macrolanguage)) => [
@@ -37257,87 +37622,87 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(konkomba) => [
- q(7332),
+ q(7389),
q(0),
],
q(konni) => [
- q(3401),
+ q(3432),
q(0),
],
q(kono (guinea)) => [
- q(3445),
+ q(3476),
q(0),
],
q(kono (nigeria)) => [
- q(3385),
+ q(3416),
q(0),
],
q(kono (sierra leone)) => [
- q(3439),
+ q(3470),
q(0),
],
q(konomala) => [
- q(3451),
+ q(3482),
q(0),
],
q(konongo) => [
- q(3179),
+ q(3212),
q(0),
],
q(konso) => [
- q(3669),
+ q(3699),
q(0),
],
q(konyak naga) => [
- q(4697),
+ q(4725),
q(0),
],
q(konyanka maninka) => [
- q(4310),
+ q(4338),
q(0),
],
q(konzo) => [
- q(3461),
+ q(3492),
q(0),
],
q(koongo) => [
- q(3432),
+ q(3463),
q(0),
],
q(koonzime) => [
- q(5280),
+ q(5320),
q(0),
],
q(koorete) => [
- q(3520),
+ q(3550),
q(0),
],
q(kopar) => [
- q(7334),
+ q(7391),
q(0),
],
q(kopkaka) => [
- q(5224),
+ q(5263),
q(0),
],
q(korafe-yegha) => [
- q(3487),
+ q(3517),
q(0),
],
q(korak) => [
- q(3470),
+ q(3501),
q(0),
],
q(korana) => [
- q(3521),
+ q(3551),
q(0),
],
q(korandje) => [
- q(3178),
+ q(3211),
q(0),
],
q(kordofanian languages) => [
- q(0514),
+ q(0515),
q(0),
],
q(korean) => [
@@ -37345,111 +37710,123 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(korean sign language) => [
- q(3625),
+ q(3655),
q(0),
],
q(koreguaje) => [
- q(1806),
+ q(1813),
q(0),
],
q(koresh-e rostam) => [
- q(5167),
+ q(5206),
q(0),
],
q(korku) => [
- q(3245),
+ q(3277),
q(0),
],
q(korlai creole portuguese) => [
- q(6928),
+ q(6978),
q(0),
],
q(koro (cote d'ivoire)) => [
- q(3243),
+ q(3275),
+ q(0),
+ ],
+ q(koro (india)) => [
+ q(3090),
q(0),
],
q(koro (papua new guinea)) => [
- q(3683),
+ q(3713),
q(0),
],
q(koro (vanuatu)) => [
- q(3526),
+ q(3556),
+ q(0),
+ ],
+ q(koro wachi) => [
+ q(1419),
q(0),
],
q(koromfe) => [
- q(3254),
+ q(3286),
q(0),
],
q(koromira) => [
- q(3505),
+ q(3535),
q(0),
],
q(koronadal blaan) => [
- q(1384),
+ q(1390),
q(0),
],
q(koroni) => [
- q(7269),
+ q(7325),
q(0),
],
q(korop) => [
- q(3533),
+ q(3563),
q(0),
],
q(koropo) => [
- q(7427),
+ q(7487),
q(0),
],
q(koroshi) => [
- q(3579),
+ q(3609),
q(0),
],
q(korowai) => [
- q(3283),
+ q(3314),
q(0),
],
q(korra koraga) => [
- q(3232),
+ q(3264),
q(0),
],
q(korubo) => [
- q(7335),
+ q(7392),
q(0),
],
q(korupun-sela) => [
- q(3486),
+ q(3516),
q(0),
],
q(korur) => [
- q(0946),
+ q(0949),
q(0),
],
q(korwa) => [
- q(3244),
+ q(3276),
q(0),
],
q(koryak) => [
- q(3494),
+ q(3524),
q(0),
],
q(kosadle) => [
- q(3316),
+ q(3347),
q(0),
],
q(kosare) => [
- q(3316),
+ q(3347),
q(0),
],
q(kosarek yale) => [
- q(3360),
+ q(3391),
q(0),
],
q(kosena) => [
- q(3722),
+ q(3752),
q(0),
],
q(koshin) => [
- q(3305),
+ q(3336),
+ q(0),
+ ],
+ q(kosli) => [
+ q(6166),
q(0),
],
q(kosraean) => [
@@ -37457,111 +37834,111 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kota (gabon)) => [
- q(3463),
+ q(3494),
q(0),
],
q(kota (india)) => [
- q(3233),
+ q(3265),
q(0),
],
q(kota bangun kutai malay) => [
- q(4436),
+ q(4464),
q(0),
],
q(kota marudu talantang) => [
- q(2581),
+ q(2605),
q(0),
],
q(kota marudu tinagas) => [
- q(3585),
+ q(3615),
q(0),
],
q(kotafon gbe) => [
- q(3506),
+ q(3536),
q(0),
],
q(kotava) => [
- q(0957),
+ q(0960),
q(0),
],
q(koti) => [
- q(2213),
+ q(2233),
q(0),
],
q(kott) => [
- q(7708),
+ q(7776),
q(0),
],
q(kouya) => [
- q(3697),
+ q(3727),
q(0),
],
q(kovai) => [
- q(3497),
+ q(3527),
q(0),
],
q(kove) => [
- q(3617),
+ q(3647),
q(0),
],
q(kowaki) => [
- q(7336),
+ q(7393),
q(0),
],
q(kowiai) => [
- q(3648),
+ q(3678),
q(0),
],
q(koy sanjaq surat) => [
- q(3499),
+ q(3529),
q(0),
],
q(koya) => [
- q(3234),
+ q(3266),
q(0),
],
q(koyaga) => [
- q(3255),
+ q(3287),
q(0),
],
q(koyo) => [
- q(3457),
+ q(3488),
q(0),
],
q(koyra chiini songhay) => [
- q(3292),
+ q(3323),
q(0),
],
q(koyraboro senni songhai) => [
- q(5907),
+ q(5950),
q(0),
],
q(koyukon) => [
- q(3469),
+ q(3500),
q(0),
],
q(kpagua) => [
- q(3611),
+ q(3641),
q(0),
],
q(kpala) => [
- q(3481),
+ q(3512),
q(0),
],
q(kpan) => [
- q(3480),
+ q(3511),
q(0),
],
q(kpasam) => [
- q(5307),
+ q(5347),
q(0),
],
q(kpati) => [
- q(3452),
+ q(3483),
q(0),
],
q(kpatili) => [
- q(3704),
+ q(3734),
q(0),
],
q(kpelle) => [
@@ -37569,63 +37946,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kpessi) => [
- q(3208),
+ q(3240),
q(0),
],
q(kplang) => [
- q(3477),
+ q(3508),
q(0),
],
q(krache) => [
- q(3696),
+ q(3726),
q(0),
],
q(kraho) => [
- q(7353),
+ q(7411),
q(0),
],
q(kraol) => [
- q(5731),
+ q(5772),
q(0),
],
q(krenak) => [
- q(3512),
+ q(3542),
q(0),
],
q(krevinian) => [
- q(7713),
+ q(7781),
q(0),
],
q(kreye) => [
- q(7355),
+ q(7413),
q(0),
],
q(krikati-timbira) => [
- q(7356),
+ q(7414),
q(0),
],
q(krim) => [
- q(3531),
+ q(3561),
q(0),
],
q(krio) => [
- q(3528),
+ q(3558),
q(0),
],
q(kriol) => [
- q(5776),
+ q(5818),
q(0),
],
q(krisa) => [
- q(3550),
+ q(3580),
q(0),
],
q(krobu) => [
- q(3668),
+ q(3698),
q(0),
],
q(krongo) => [
- q(3269),
+ q(3300),
q(0),
],
q(kru languages) => [
@@ -37633,31 +38010,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kru'ng 2) => [
- q(3534),
+ q(3564),
q(0),
],
q(krymchak) => [
- q(3023),
+ q(3049),
q(0),
],
q(kryts) => [
- q(3540),
+ q(3570),
q(0),
],
q(kua) => [
- q(6759),
+ q(6809),
+ q(0),
+ ],
+ q(kua-nsi) => [
+ q(7586),
+ q(0),
+ ],
+ q(kuamasi) => [
+ q(7590),
q(0),
],
q(kuan) => [
- q(6770),
+ q(6820),
q(0),
],
q(kuanhua) => [
- q(7320),
+ q(7376),
q(0),
],
q(kuanua) => [
- q(3545),
+ q(3575),
q(0),
],
q(kuanyama) => [
@@ -37665,195 +38050,199 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kube) => [
- q(3260),
+ q(3292),
q(0),
],
q(kubi) => [
- q(3455),
+ q(3486),
q(0),
],
q(kubo) => [
- q(3059),
+ q(3088),
q(0),
],
q(kubu) => [
- q(3616),
+ q(3646),
q(0),
],
q(kucong) => [
- q(3890),
+ q(3918),
q(0),
],
q(kudiya) => [
- q(3235),
+ q(3267),
q(0),
],
q(kudmali) => [
- q(3714),
+ q(3744),
q(0),
],
q(kudu-camo) => [
- q(3466),
+ q(3497),
q(0),
],
q(kugama) => [
- q(3467),
+ q(3498),
q(0),
],
q(kugbo) => [
- q(3221),
+ q(3253),
q(0),
],
q(kui (india)) => [
- q(3686),
+ q(3716),
q(0),
],
q(kui (indonesia)) => [
- q(3618),
+ q(3648),
q(0),
],
q(kuijau) => [
- q(2058),
+ q(2074),
q(0),
],
q(kuikuro-kalapalo) => [
- q(3601),
+ q(3631),
q(0),
],
q(kujarge) => [
- q(6923),
+ q(6973),
q(0),
],
q(kuk) => [
- q(3242),
+ q(3274),
q(0),
],
q(kukatja) => [
- q(3612),
+ q(3642),
+ q(0),
+ ],
+ q(kuke) => [
+ q(2503),
q(0),
],
q(kukele) => [
- q(3228),
+ q(3260),
q(0),
],
q(kukna) => [
- q(3226),
+ q(3258),
q(0),
],
q(kuku-mangk) => [
- q(7307),
+ q(7363),
q(0),
],
q(kuku-mu'inh) => [
- q(7306),
+ q(7362),
q(0),
],
q(kuku-muminh) => [
- q(7299),
+ q(7355),
q(0),
],
q(kuku-ugbanh) => [
- q(6787),
+ q(6837),
q(0),
],
q(kuku-uwanh) => [
- q(6881),
+ q(6931),
q(0),
],
q(kuku-yalanji) => [
- q(2634),
+ q(2658),
q(0),
],
q(kula) => [
- q(6579),
+ q(6628),
q(0),
],
q(kulere) => [
- q(3604),
+ q(3634),
q(0),
],
q(kulfa) => [
- q(3675),
+ q(3705),
q(0),
],
q(kulina) => [
- q(1900),
+ q(1909),
q(0),
],
q(kulina pano) => [
- q(7341),
+ q(7399),
q(0),
],
q(kulisusu) => [
- q(6925),
+ q(6975),
q(0),
],
q(kullu pahari) => [
- q(3252),
+ q(3284),
q(0),
],
q(kulon-pazeh) => [
- q(6875),
+ q(6925),
q(0),
],
q(kulung (nepal)) => [
- q(3379),
+ q(3410),
q(0),
],
q(kulung (nigeria)) => [
- q(1052),
+ q(1059),
q(0),
],
q(kumalu) => [
- q(3553),
+ q(3583),
q(0),
],
q(kumam) => [
- q(3187),
+ q(3220),
q(0),
],
q(kuman) => [
- q(3597),
+ q(3627),
q(0),
],
q(kuman (russia)) => [
- q(5652),
+ q(5692),
q(0),
],
q(kumaoni) => [
- q(3253),
+ q(3285),
q(0),
],
q(kumarbhag paharia) => [
- q(3409),
+ q(3440),
q(0),
],
q(kumba) => [
- q(3554),
+ q(3584),
q(0),
],
q(kumbainggar) => [
- q(3273),
+ q(3304),
q(0),
],
q(kumbaran) => [
- q(7059),
+ q(7109),
q(0),
],
q(kumbewaha) => [
- q(7271),
+ q(7327),
q(0),
],
q(kumhali) => [
- q(3522),
+ q(3552),
q(0),
],
q(kumiai) => [
- q(2024),
+ q(2039),
q(0),
],
q(kumukio) => [
- q(3606),
+ q(3636),
q(0),
],
q(kumyk) => [
@@ -37861,119 +38250,119 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kumzari) => [
- q(7810),
+ q(7878),
q(0),
],
q(kunama) => [
- q(3605),
+ q(3635),
q(0),
],
q(kunbarlang) => [
- q(7067),
+ q(7117),
q(0),
],
q(kunda) => [
- q(3192),
+ q(3225),
q(0),
],
q(kundal shahi) => [
- q(5940),
+ q(5985),
q(0),
],
q(kunduvadi) => [
- q(7062),
+ q(7112),
q(0),
],
q(kung) => [
- q(3240),
+ q(3272),
q(0),
],
q(kung-ekoka) => [
- q(3447),
+ q(3478),
q(0),
],
q(kungarakany) => [
- q(2464),
+ q(2485),
q(0),
],
q(kunggara) => [
- q(3633),
+ q(3663),
q(0),
],
q(kunggari) => [
- q(3266),
+ q(3297),
q(0),
],
q(kuni) => [
- q(3546),
+ q(3576),
q(0),
],
q(kuni-boazi) => [
- q(3621),
+ q(3651),
q(0),
],
q(kunigami) => [
- q(7405),
+ q(7464),
q(0),
],
q(kunimaipa) => [
- q(3607),
+ q(3637),
q(0),
],
q(kunja) => [
- q(5353),
+ q(5392),
q(0),
],
q(kunjen) => [
- q(3338),
+ q(3369),
q(0),
],
q(kunyi) => [
- q(4872),
+ q(4901),
q(0),
],
q(kunza) => [
- q(3614),
+ q(3644),
q(0),
],
q(kuo) => [
- q(7408),
+ q(7468),
q(0),
],
q(kuot) => [
- q(3582),
+ q(3612),
q(0),
],
q(kupa) => [
- q(3599),
+ q(3629),
q(0),
],
q(kupang malay) => [
- q(4303),
+ q(4331),
q(0),
],
q(kupia) => [
- q(3227),
+ q(3259),
q(0),
],
q(kupsabiny) => [
- q(3495),
+ q(3525),
q(0),
],
q(kur) => [
- q(3610),
+ q(3640),
q(0),
],
q(kura ede nago) => [
- q(4994),
+ q(5025),
q(0),
],
q(kurama) => [
- q(3527),
+ q(3557),
q(0),
],
q(kuranko) => [
- q(3435),
+ q(3466),
q(0),
],
q(kurdish) => [
@@ -37981,39 +38370,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kuri) => [
- q(4704),
+ q(4732),
q(0),
],
q(kuria) => [
- q(3602),
+ q(3632),
q(0),
],
q(kurichiya) => [
- q(3236),
+ q(3268),
q(0),
],
q(kurmukar) => [
- q(3250),
+ q(3282),
q(0),
],
q(kurrama) => [
- q(6930),
+ q(6980),
q(0),
],
q(kurti) => [
- q(3580),
+ q(3610),
q(0),
],
q(kurtokha) => [
- q(7278),
+ q(7334),
q(0),
],
q(kuruaya) => [
- q(3709),
+ q(3739),
q(0),
],
q(kurudu) => [
- q(3342),
+ q(3373),
q(0),
],
q(kurukh) => [
@@ -38021,27 +38410,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kusaal) => [
- q(3608),
+ q(3638),
q(0),
],
q(kusaghe) => [
- q(3548),
+ q(3578),
q(0),
],
q(kushi) => [
- q(3600),
+ q(3630),
q(0),
],
q(kusu) => [
- q(3563),
+ q(3593),
q(0),
],
q(kusunda) => [
- q(3261),
+ q(3293),
q(0),
],
q(kutang ghale) => [
- q(2482),
+ q(2503),
q(0),
],
q(kutenai) => [
@@ -38049,127 +38438,135 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kutep) => [
- q(3594),
+ q(3624),
q(0),
],
q(kuthant) => [
- q(7411),
+ q(7471),
+ q(0),
+ ],
+ q(kutong) => [
+ q(6054),
q(0),
],
q(kutto) => [
- q(3471),
+ q(3502),
q(0),
],
q(kutu) => [
- q(3181),
+ q(3214),
q(0),
],
q(kuturmi) => [
- q(3287),
+ q(3318),
+ q(0),
+ ],
+ q(kuuk-yak) => [
+ q(6856),
q(0),
],
q(kuuku-ya'u) => [
- q(3613),
+ q(3643),
q(0),
],
q(kuvi) => [
- q(3687),
+ q(3717),
q(0),
],
q(kuwaa) => [
- q(1279),
+ q(1285),
q(0),
],
q(kuwaataay) => [
- q(1918),
+ q(1927),
q(0),
],
q(kuy) => [
- q(3196),
+ q(3229),
q(0),
],
q(kven finnish) => [
- q(2323),
+ q(2343),
q(0),
],
q(kw'adza) => [
- q(7058),
+ q(7108),
q(0),
],
q(kwa) => [
- q(3642),
+ q(3672),
q(0),
],
q(kwa') => [
- q(1261),
+ q(1267),
q(0),
],
q(kwaami) => [
- q(3558),
+ q(3588),
q(0),
],
q(kwadi) => [
- q(3666),
+ q(3696),
q(0),
],
q(kwaio) => [
- q(3644),
+ q(3674),
q(0),
],
q(kwaja) => [
- q(3202),
+ q(3234),
q(0),
],
q(kwak) => [
- q(3657),
+ q(3687),
q(0),
],
q(kwakiutl) => [
- q(3651),
+ q(3681),
q(0),
],
q(kwakum) => [
- q(3661),
+ q(3691),
q(0),
],
q(kwalhioqua-tlatskanai) => [
- q(5654),
+ q(5694),
q(0),
],
q(kwama) => [
- q(3416),
+ q(3447),
q(0),
],
q(kwambi) => [
- q(3653),
+ q(3683),
q(0),
],
q(kwamera) => [
- q(6538),
+ q(6587),
q(0),
],
q(kwami) => [
- q(3573),
+ q(3603),
q(0),
],
q(kwamtim one) => [
- q(5170),
+ q(5209),
q(0),
],
q(kwang) => [
- q(3623),
+ q(3653),
q(0),
],
q(kwanga) => [
- q(3650),
+ q(3680),
q(0),
],
q(kwangali) => [
- q(3654),
+ q(3684),
q(0),
],
q(kwanja) => [
- q(3440),
+ q(3471),
q(0),
],
q(kwanyama) => [
@@ -38177,95 +38574,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(kwara'ae) => [
- q(3646),
+ q(3676),
q(0),
],
q(kwasio) => [
- q(4920),
+ q(4949),
q(0),
],
q(kwaya) => [
- q(3692),
+ q(3722),
q(0),
],
q(kwaza) => [
- q(7418),
+ q(7478),
q(0),
],
q(kwegu) => [
- q(7421),
+ q(7481),
q(0),
],
q(kwer) => [
- q(3658),
+ q(3688),
q(0),
],
q(kwerba) => [
- q(3645),
+ q(3675),
q(0),
],
q(kwerba mamberamo) => [
- q(7424),
+ q(7484),
q(0),
],
q(kwere) => [
- q(1916),
+ q(1925),
q(0),
],
q(kwerisa) => [
- q(3350),
+ q(3381),
q(0),
],
q(kwese) => [
- q(3659),
+ q(3689),
q(0),
],
q(kwesten) => [
- q(3660),
+ q(3690),
q(0),
],
q(kwini) => [
- q(2652),
+ q(2677),
q(0),
],
q(kwinsu) => [
- q(3595),
+ q(3625),
q(0),
],
q(kwinti) => [
- q(3663),
+ q(3693),
q(0),
],
q(kwoma) => [
- q(3414),
+ q(3445),
q(0),
],
q(kwomtari) => [
- q(3655),
+ q(3685),
q(0),
],
q(kxoe) => [
- q(7412),
+ q(7472),
q(0),
],
q(kyak) => [
- q(1249),
+ q(1255),
q(0),
],
q(kyaka) => [
- q(3694),
+ q(3724),
q(0),
],
q(kyenele) => [
- q(3507),
+ q(3537),
q(0),
],
q(kyenga) => [
- q(6749),
+ q(6799),
q(0),
],
q(kyerung) => [
- q(3279),
+ q(3310),
q(0),
],
q(kyrgyz) => [
@@ -38273,239 +38670,251 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(la'bi) => [
- q(3770),
+ q(3799),
q(0),
],
q(laa laa bwamu) => [
- q(1545),
+ q(1551),
q(0),
],
q(laadan) => [
- q(3806),
+ q(3834),
q(0),
],
q(laal) => [
- q(2435),
+ q(2454),
q(0),
],
q(laalaa) => [
- q(1638),
+ q(1644),
q(0),
],
q(laari) => [
- q(3801),
+ q(3829),
q(0),
],
q(laba) => [
- q(3759),
+ q(3788),
q(0),
],
q(label) => [
- q(3765),
+ q(3794),
q(0),
],
q(labir) => [
- q(3060),
+ q(3091),
q(0),
],
q(labo) => [
- q(4583),
+ q(4611),
q(0),
],
q(labo phowa) => [
- q(7584),
+ q(7647),
q(0),
],
q(labu) => [
- q(3781),
+ q(3810),
q(0),
],
q(labuk-kinabatangan kadazan) => [
- q(2135),
+ q(2153),
q(0),
],
q(lacandon) => [
- q(3746),
+ q(3775),
q(0),
],
q(lachi) => [
- q(3780),
+ q(3809),
q(0),
],
q(lachiguiri zapotec) => [
- q(7757),
+ q(7825),
q(0),
],
q(lachixio zapotec) => [
- q(7768),
+ q(7836),
q(0),
],
q(ladakhi) => [
- q(3771),
+ q(3800),
q(0),
],
q(ladin) => [
- q(3906),
+ q(3934),
q(0),
],
q(ladino) => [
q(0242),
q(0),
],
+ q(ladji ladji) => [
+ q(3940),
+ q(0),
+ ],
q(laeko-libuat) => [
- q(3896),
+ q(3924),
q(0),
],
q(lafofa) => [
- q(3748),
+ q(3777),
q(0),
],
q(laghu) => [
- q(3838),
+ q(3866),
q(0),
],
q(laghuu) => [
- q(3840),
+ q(3868),
q(0),
],
q(lagwan) => [
- q(3464),
+ q(3495),
q(0),
],
q(laha (indonesia)) => [
- q(3852),
+ q(3880),
q(0),
],
q(laha (viet nam)) => [
- q(3851),
+ q(3879),
q(0),
],
q(lahanan) => [
- q(3856),
+ q(3884),
q(0),
],
q(lahnda) => [
q(0243),
q(0),
],
+ q(lahta) => [
+ q(3664),
+ q(0),
+ ],
q(lahta karen) => [
- q(3634),
+ q(3664),
q(0),
],
q(lahu) => [
- q(3860),
+ q(3888),
q(0),
],
q(lahu shi) => [
- q(3853),
+ q(3881),
q(0),
],
q(lahul lohar) => [
- q(3854),
+ q(3882),
q(0),
],
q(laimbue) => [
- q(3943),
+ q(3972),
+ q(0),
+ ],
+ q(laitu chin) => [
+ q(1775),
q(0),
],
q(laiyolo) => [
- q(3885),
+ q(3913),
q(0),
],
q(lak) => [
- q(3767),
+ q(3796),
q(0),
],
q(laka (chad)) => [
- q(3755),
+ q(3784),
q(0),
],
q(laka (nigeria)) => [
- q(3752),
+ q(3781),
q(0),
],
q(lakalei) => [
- q(3888),
+ q(3916),
q(0),
],
q(lake miwok) => [
- q(3942),
+ q(3971),
q(0),
],
q(lakha) => [
- q(3893),
+ q(3921),
q(0),
],
q(laki) => [
- q(3894),
+ q(3922),
q(0),
],
q(lakkia) => [
- q(3766),
+ q(3795),
q(0),
],
q(lakon) => [
- q(3897),
+ q(3925),
q(0),
],
q(lakonde) => [
- q(3891),
+ q(3919),
q(0),
],
q(lakota) => [
- q(3901),
+ q(3929),
q(0),
],
q(lakota dida) => [
- q(2020),
+ q(2035),
q(0),
],
q(lala) => [
- q(5011),
+ q(5043),
q(0),
],
q(lala-bisa) => [
- q(3811),
+ q(3839),
q(0),
],
q(lala-roba) => [
- q(3903),
+ q(3931),
q(0),
],
q(lalana chinantec) => [
- q(1795),
+ q(1802),
q(0),
],
q(lalia) => [
- q(3753),
+ q(3782),
q(0),
],
q(lama (myanmar)) => [
- q(3762),
+ q(3791),
q(0),
],
q(lama (togo)) => [
- q(3758),
+ q(3787),
q(0),
],
q(lamaholot) => [
- q(6033),
+ q(6078),
q(0),
],
q(lamalera) => [
- q(3939),
+ q(3968),
q(0),
],
q(lamam) => [
- q(3934),
+ q(3963),
q(0),
],
q(lamang) => [
- q(2713),
+ q(2738),
q(0),
],
q(lamatuka) => [
- q(3938),
+ q(3967),
q(0),
],
q(lamba) => [
@@ -38513,75 +38922,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lambadi) => [
- q(3935),
+ q(3964),
q(0),
],
q(lambayeque quechua) => [
- q(5617),
+ q(5657),
q(0),
],
q(lambichhong) => [
- q(3929),
+ q(3958),
q(0),
],
q(lamboya) => [
- q(3944),
+ q(3973),
q(0),
],
q(lambya) => [
- q(3750),
+ q(3779),
q(0),
],
q(lame) => [
- q(1297),
+ q(1303),
q(0),
],
q(lamenu) => [
- q(3940),
+ q(3969),
q(0),
],
q(lamet) => [
- q(3775),
+ q(3804),
q(0),
],
q(lamja-dengsa-tola) => [
- q(3800),
+ q(3828),
q(0),
],
q(lamkang) => [
- q(3932),
+ q(3961),
q(0),
],
q(lamma) => [
- q(3831),
+ q(3859),
q(0),
],
q(lamnso') => [
- q(3957),
+ q(3986),
q(0),
],
q(lamogai) => [
- q(3928),
+ q(3957),
q(0),
],
q(lampung api) => [
- q(3887),
+ q(3915),
q(0),
],
q(lampung nyo) => [
- q(0569),
+ q(0570),
q(0),
],
q(lamu) => [
- q(3910),
+ q(3938),
q(0),
],
q(lamu-lamu) => [
- q(3785),
+ q(3814),
q(0),
],
q(lanas lobu) => [
- q(5801),
+ q(5845),
q(0),
],
q(land dayak languages) => [
@@ -38589,47 +38998,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(landoma) => [
- q(3805),
+ q(3833),
q(0),
],
q(lang'e) => [
- q(7564),
+ q(7625),
q(0),
],
q(langam) => [
- q(3954),
+ q(3983),
q(0),
],
q(langbashe) => [
- q(3946),
+ q(3975),
q(0),
],
q(langi) => [
- q(3749),
+ q(3778),
q(0),
],
q(langnian buyang) => [
- q(7537),
+ q(7599),
q(0),
],
q(lango (sudan)) => [
- q(3956),
+ q(3985),
q(0),
],
q(lango (uganda)) => [
- q(3751),
+ q(3780),
q(0),
],
q(langobardic) => [
- q(3949),
+ q(3978),
q(0),
],
q(langue des signes de belgique francophone) => [
- q(5914),
+ q(5957),
q(0),
],
q(lanoh) => [
- q(3950),
+ q(3979),
q(0),
],
q(lao) => [
@@ -38637,83 +39046,83 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(laomian) => [
- q(4049),
+ q(4078),
q(0),
],
q(laopang) => [
- q(3769),
+ q(3798),
q(0),
],
q(laos sign language) => [
- q(4010),
+ q(4039),
q(0),
],
q(lapaguia-guivini zapotec) => [
- q(7798),
+ q(7866),
q(0),
],
q(laragia) => [
- q(3991),
+ q(4020),
q(0),
],
q(larantuka malay) => [
- q(3999),
+ q(4028),
q(0),
],
q(lardil) => [
- q(3786),
+ q(3815),
q(0),
],
q(larevat) => [
- q(4000),
+ q(4029),
q(0),
],
q(large flowery miao) => [
- q(2740),
+ q(2765),
q(0),
],
q(lari) => [
- q(3994),
+ q(4023),
q(0),
],
q(larike-wakasihu) => [
- q(0756),
+ q(0758),
q(0),
],
q(laro) => [
- q(3997),
+ q(4026),
q(0),
],
q(larteh) => [
- q(3757),
+ q(3786),
q(0),
],
q(laru) => [
- q(3754),
+ q(3783),
q(0),
],
q(lasalimu) => [
- q(3914),
+ q(3943),
q(0),
],
q(lasgerdi) => [
- q(4002),
+ q(4031),
q(0),
],
q(lashi) => [
- q(4007),
+ q(4036),
q(0),
],
q(lasi) => [
- q(4013),
+ q(4042),
q(0),
],
q(late middle chinese) => [
- q(4016),
+ q(4045),
q(0),
],
q(latgalian) => [
- q(4017),
+ q(4046),
q(0),
],
q(latin) => [
@@ -38721,11 +39130,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(latu) => [
- q(4022),
+ q(4051),
q(0),
],
q(latunde) => [
- q(4019),
+ q(4048),
q(0),
],
q(latvian) => [
@@ -38733,227 +39142,235 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(latvian sign language) => [
- q(4008),
+ q(4037),
q(0),
],
q(lau) => [
- q(3920),
+ q(3949),
q(0),
],
q(laua) => [
- q(4026),
+ q(4055),
q(0),
],
q(lauan) => [
- q(3921),
+ q(3950),
q(0),
],
q(lauje) => [
- q(3760),
+ q(3789),
q(0),
],
q(laura) => [
- q(4033),
+ q(4062),
q(0),
],
q(laurentian) => [
- q(3990),
+ q(4019),
+ q(0),
+ ],
+ q(lautu chin) => [
+ q(1780),
q(0),
],
q(lavatbura-lamusong) => [
- q(3782),
+ q(3811),
q(0),
],
q(lave) => [
- q(1418),
+ q(1424),
q(0),
],
q(laven) => [
- q(3776),
+ q(3805),
+ q(0),
+ ],
+ q(lavrung) => [
+ q(3081),
q(0),
],
q(lavukaleve) => [
- q(4041),
+ q(4070),
q(0),
],
q(lawangan) => [
- q(3784),
+ q(3813),
q(0),
],
q(lawunuia) => [
- q(6404),
+ q(6451),
q(0),
],
q(layakha) => [
- q(4053),
+ q(4082),
q(0),
],
q(laz) => [
- q(4059),
+ q(4088),
q(0),
],
q(lealao chinantec) => [
- q(1767),
+ q(1772),
q(0),
],
q(leco) => [
- q(3812),
+ q(3840),
q(0),
],
q(ledo kaili) => [
- q(3832),
+ q(3860),
q(0),
],
q(leelau) => [
- q(3803),
+ q(3831),
q(0),
],
q(lefa) => [
- q(3835),
+ q(3863),
q(0),
],
q(lega-mwenga) => [
- q(3844),
+ q(3872),
q(0),
],
q(lega-shabunda) => [
- q(3810),
+ q(3838),
q(0),
],
q(legbo) => [
- q(0654),
+ q(0655),
q(0),
],
q(legenyem) => [
- q(3787),
+ q(3816),
q(0),
],
q(lehali) => [
- q(6597),
+ q(6646),
q(0),
],
q(lehalurup) => [
- q(6855),
+ q(6905),
q(0),
],
q(lehar) => [
- q(1638),
+ q(1644),
q(0),
],
q(leinong naga) => [
- q(4058),
+ q(4087),
q(0),
],
q(leipon) => [
- q(3820),
+ q(3848),
q(0),
],
q(lelak) => [
- q(3912),
+ q(3941),
q(0),
],
q(lele (chad)) => [
- q(3915),
+ q(3944),
q(0),
],
q(lele (democratic republic of congo)) => [
- q(3821),
+ q(3849),
q(0),
],
q(lele (guinea)) => [
- q(3905),
+ q(3933),
q(0),
],
q(lele (papua new guinea)) => [
- q(3907),
+ q(3935),
q(0),
],
q(lelemi) => [
- q(3815),
+ q(3843),
q(0),
],
q(lelepa) => [
- q(3983),
+ q(4012),
q(0),
],
q(lembena) => [
- q(3826),
+ q(3854),
q(0),
],
q(lemerig) => [
- q(4001),
+ q(4030),
q(0),
],
q(lemio) => [
- q(3818),
+ q(3846),
q(0),
],
q(lemnian) => [
- q(7283),
+ q(7339),
q(0),
],
q(lemolang) => [
- q(3834),
+ q(3862),
q(0),
],
q(lemoro) => [
- q(3802),
+ q(3830),
q(0),
],
q(lenakel) => [
- q(6539),
+ q(6588),
q(0),
],
q(lenca) => [
- q(3823),
+ q(3851),
q(0),
],
q(lendu) => [
- q(3813),
+ q(3841),
q(0),
],
q(lengilu) => [
- q(3841),
+ q(3869),
q(0),
],
q(lengo) => [
- q(3847),
+ q(3875),
q(0),
],
q(lengola) => [
- q(3819),
+ q(3847),
q(0),
],
q(lengua) => [
- q(3816),
+ q(3844),
q(0),
],
q(lengua de senas catalana) => [
- q(1859),
+ q(1866),
q(0),
],
q(lengua de senas del paraguay) => [
- q(5608),
+ q(5648),
q(0),
],
q(lengua de senas panamenas) => [
- q(4011),
+ q(4040),
q(0),
],
q(leningitij) => [
- q(3952),
+ q(3981),
q(0),
],
q(lenje) => [
- q(3817),
+ q(3845),
q(0),
],
q(lenkau) => [
- q(3827),
+ q(3855),
q(0),
],
q(lenyima) => [
- q(3799),
+ q(3827),
q(0),
],
q(leonese) => [
@@ -38961,39 +39378,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lepcha) => [
- q(3825),
+ q(3853),
q(0),
],
q(lepki) => [
- q(3984),
+ q(4013),
q(0),
],
q(lepontic) => [
- q(7288),
+ q(7344),
q(0),
],
q(lere) => [
- q(2535),
+ q(2557),
q(0),
],
q(lese) => [
- q(3828),
+ q(3856),
q(0),
],
q(lesing-gelimi) => [
- q(3829),
+ q(3857),
q(0),
],
q(letemboi) => [
- q(4932),
+ q(4961),
q(0),
],
q(leti (cameroon)) => [
- q(3824),
+ q(3852),
q(0),
],
q(leti (indonesia)) => [
- q(4018),
+ q(4047),
q(0),
],
q(letzeburgesch) => [
@@ -39001,23 +39418,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(levuka) => [
- q(4043),
+ q(4072),
q(0),
],
q(lewo) => [
- q(4052),
+ q(4081),
q(0),
],
q(lewo eleng) => [
- q(4045),
+ q(4074),
q(0),
],
q(lewotobi) => [
- q(4051),
+ q(4080),
q(0),
],
q(leyigha) => [
- q(0994),
+ q(1000),
q(0),
],
q(lezghian) => [
@@ -39025,135 +39442,135 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lhaovo) => [
- q(4244),
+ q(4272),
q(0),
],
q(lhokpu) => [
- q(3857),
+ q(3885),
q(0),
],
q(lhomi) => [
- q(3855),
+ q(3883),
q(0),
],
q(li'o) => [
- q(3886),
+ q(3914),
q(0),
],
q(liabuku) => [
- q(3881),
+ q(3909),
q(0),
],
q(liana-seti) => [
- q(6181),
+ q(6228),
q(0),
],
q(liangmai naga) => [
- q(4866),
+ q(4895),
q(0),
],
q(lianshan zhuang) => [
- q(7717),
+ q(7785),
q(0),
],
q(liberia kpelle) => [
- q(7338),
+ q(7395),
q(0),
],
q(liberian english) => [
- q(3876),
+ q(3904),
q(0),
],
q(libido) => [
- q(3875),
+ q(3903),
q(0),
],
q(libinza) => [
- q(3883),
+ q(3911),
q(0),
],
q(libon bikol) => [
- q(3773),
+ q(3802),
q(0),
],
q(liburnian) => [
- q(7285),
+ q(7341),
q(0),
],
q(libyan arabic) => [
- q(0996),
+ q(1002),
q(0),
],
q(libyan sign language) => [
- q(3779),
+ q(3808),
q(0),
],
q(ligbi) => [
- q(3867),
+ q(3895),
q(0),
],
q(ligenza) => [
- q(3850),
+ q(3878),
q(0),
],
q(ligurian) => [
- q(3870),
+ q(3898),
q(0),
],
q(ligurian (ancient)) => [
- q(7284),
+ q(7340),
q(0),
],
q(lihir) => [
- q(3868),
+ q(3896),
q(0),
],
q(lijili) => [
- q(4204),
+ q(4233),
q(0),
],
q(lika) => [
- q(3871),
+ q(3899),
q(0),
],
q(liki) => [
- q(3873),
+ q(3901),
q(0),
],
q(likila) => [
- q(3865),
+ q(3893),
q(0),
],
q(likuba) => [
- q(3689),
+ q(3719),
q(0),
],
q(likum) => [
- q(3862),
+ q(3890),
q(0),
],
q(likwala) => [
- q(3643),
+ q(3673),
q(0),
],
q(lilau) => [
- q(3913),
+ q(3942),
q(0),
],
q(lillooet) => [
- q(3872),
+ q(3900),
q(0),
],
q(limassa) => [
- q(1301),
+ q(1307),
q(0),
],
q(limbu) => [
- q(3866),
+ q(3894),
q(0),
],
q(limbum) => [
- q(3937),
+ q(3966),
q(0),
],
q(limburgan) => [
@@ -39169,23 +39586,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(limi) => [
- q(7536),
+ q(7598),
q(0),
],
q(limilngan) => [
- q(3924),
+ q(3953),
q(0),
],
q(limos kalinga) => [
- q(3410),
+ q(3441),
q(0),
],
q(lindu) => [
- q(3397),
+ q(3428),
q(0),
],
q(linear a) => [
- q(3745),
+ q(3774),
q(0),
],
q(lingala) => [
@@ -39193,63 +39610,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lingao) => [
- q(5203),
+ q(5242),
q(0),
],
q(lingarak) => [
- q(3842),
+ q(3870),
q(0),
],
q(lingkhim) => [
- q(3869),
+ q(3897),
q(0),
],
q(lingua franca) => [
- q(5454),
+ q(5493),
q(0),
],
q(lingua franca nova) => [
- q(3836),
+ q(3864),
q(0),
],
q(lipan apache) => [
- q(0843),
+ q(0846),
q(0),
],
q(lipo) => [
- q(3986),
+ q(4015),
q(0),
],
q(lisabata-nuniali) => [
- q(3796),
+ q(3824),
q(0),
],
q(lisela) => [
- q(3792),
+ q(3821),
q(0),
],
q(lish) => [
- q(4006),
+ q(4035),
q(0),
],
q(lishan didan) => [
- q(6613),
+ q(6662),
q(0),
],
q(lishana deni) => [
- q(4003),
+ q(4032),
q(0),
],
q(lishanid noshan) => [
- q(0701),
+ q(0702),
q(0),
],
q(lisu) => [
- q(3877),
+ q(3905),
q(0),
],
q(literary chinese) => [
- q(4056),
+ q(4085),
q(0),
],
q(lithuanian) => [
@@ -39257,83 +39674,87 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lithuanian sign language) => [
- q(3919),
+ q(3948),
q(0),
],
q(litzlitz) => [
- q(4057),
+ q(4086),
q(0),
],
q(liujiang zhuang) => [
- q(7715),
+ q(7783),
q(0),
],
q(liuqian zhuang) => [
- q(7718),
+ q(7786),
q(0),
],
q(liv) => [
- q(3879),
+ q(3907),
q(0),
],
q(livvi) => [
- q(5184),
+ q(5223),
q(0),
],
q(llengua de signes catalana) => [
- q(1859),
+ q(1866),
q(0),
],
q(llengua de signes valenciana) => [
- q(6965),
+ q(7015),
q(0),
],
q(lo-toga) => [
- q(3859),
+ q(3887),
q(0),
],
q(loarki) => [
- q(3993),
+ q(4022),
q(0),
],
q(lobala) => [
- q(3974),
+ q(4003),
q(0),
],
q(lobi) => [
- q(3961),
+ q(3990),
q(0),
],
q(lodhi) => [
- q(3774),
+ q(3803),
q(0),
],
q(logba) => [
- q(3846),
+ q(3874),
q(0),
],
q(logo) => [
- q(3965),
+ q(3994),
q(0),
],
q(logol) => [
- q(3964),
+ q(3993),
q(0),
],
q(logooli) => [
- q(5675),
+ q(5715),
q(0),
],
q(logorik) => [
- q(3878),
+ q(3906),
q(0),
],
q(logudorese sardinian) => [
- q(6135),
+ q(6182),
+ q(0),
+ ],
+ q(lohorung) => [
+ q(3807),
q(0),
],
q(loja highland quichua) => [
- q(5639),
+ q(5679),
q(0),
],
q(lojban) => [
@@ -39341,171 +39762,175 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lokaa) => [
- q(7456),
+ q(7517),
+ q(0),
+ ],
+ q(loke) => [
+ q(4011),
q(0),
],
q(loko) => [
- q(3969),
+ q(3998),
q(0),
],
q(lokoya) => [
- q(3902),
+ q(3930),
q(0),
],
q(lola) => [
- q(3788),
+ q(3817),
q(0),
],
q(lolak) => [
- q(3918),
+ q(3947),
q(0),
],
q(lole) => [
- q(3909),
+ q(3937),
q(0),
],
q(lolo) => [
- q(3904),
+ q(3932),
q(0),
],
q(loloda) => [
- q(3960),
+ q(3989),
q(0),
],
q(lolopo) => [
- q(7472),
+ q(7532),
q(0),
],
q(loma (cote d'ivoire)) => [
- q(3967),
+ q(3996),
q(0),
],
q(loma (liberia)) => [
- q(3970),
+ q(3999),
q(0),
],
q(lomaiviti) => [
- q(3941),
+ q(3970),
q(0),
],
q(lomavren) => [
- q(5745),
+ q(5786),
q(0),
],
q(lombard) => [
- q(3936),
+ q(3965),
q(0),
],
q(lombi) => [
- q(3930),
+ q(3959),
q(0),
],
q(lombo) => [
- q(3972),
+ q(4001),
q(0),
],
q(lomwe) => [
- q(4798),
+ q(4827),
q(0),
],
q(loncong) => [
- q(3789),
+ q(3818),
q(0),
],
q(long phuri naga) => [
- q(3985),
+ q(4014),
q(0),
],
q(long wat) => [
- q(6677),
+ q(6726),
q(0),
],
q(longgu) => [
- q(3849),
+ q(3877),
q(0),
],
q(longto) => [
- q(7113),
+ q(7164),
q(0),
],
q(longuda) => [
- q(3958),
+ q(3987),
q(0),
],
q(loniu) => [
- q(3976),
+ q(4005),
q(0),
],
q(lonwolwol) => [
- q(1838),
+ q(1845),
q(0),
],
q(lonzo) => [
- q(3959),
+ q(3988),
q(0),
],
q(loo) => [
- q(3807),
+ q(3835),
q(0),
],
q(lopa) => [
- q(3973),
+ q(4002),
q(0),
],
q(lopi) => [
- q(3979),
+ q(4008),
q(0),
],
q(lopit) => [
- q(3987),
+ q(4016),
q(0),
],
q(lorang) => [
- q(3996),
+ q(4025),
q(0),
],
q(lorediakarkar) => [
- q(3955),
+ q(3984),
q(0),
],
q(loreto-ucayali spanish) => [
- q(6116),
+ q(6161),
q(0),
],
q(lote) => [
- q(6880),
+ q(6930),
q(0),
],
q(lotha naga) => [
- q(4861),
+ q(4890),
q(0),
],
q(lotud) => [
- q(2141),
+ q(2161),
q(0),
],
q(lou) => [
- q(3968),
+ q(3997),
q(0),
],
q(louisiana creole french) => [
- q(3978),
+ q(4007),
q(0),
],
q(loun) => [
- q(3981),
+ q(4010),
q(0),
],
q(loup a) => [
- q(7287),
+ q(7343),
q(0),
],
q(loup b) => [
- q(7280),
+ q(7336),
q(0),
],
q(lovono) => [
- q(6956),
+ q(7006),
q(0),
],
q(low german) => [
@@ -39516,24 +39941,20 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0306),
q(0),
],
- q(lowa) => [
- q(3982),
- q(0),
- ],
q(lower burdekin) => [
- q(7195),
+ q(7249),
q(0),
],
q(lower chehalis) => [
- q(1702),
+ q(1707),
q(0),
],
q(lower grand valley dani) => [
- q(2083),
+ q(2100),
q(0),
],
q(lower silesian) => [
- q(6028),
+ q(6073),
q(0),
],
q(lower sorbian) => [
@@ -39541,31 +39962,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lower ta'oih) => [
- q(6669),
+ q(6718),
q(0),
],
q(lower tanana) => [
- q(6279),
- q(0),
- ],
- q(lower tanudan kalinga) => [
- q(3411),
+ q(6326),
q(0),
],
q(lowland oaxaca chontal) => [
- q(1773),
+ q(1779),
q(0),
],
q(lowland tarahumara) => [
- q(6281),
+ q(6328),
q(0),
],
q(loxicha zapotec) => [
- q(7801),
+ q(7869),
q(0),
],
q(loyop) => [
- q(6855),
+ q(6905),
q(0),
],
q(lozi) => [
@@ -39573,15 +39990,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lu) => [
- q(3280),
+ q(3311),
q(0),
],
q(lua') => [
- q(5522),
+ q(5562),
q(0),
],
q(luang) => [
- q(3833),
+ q(3861),
q(0),
],
q(luba-katanga) => [
@@ -39593,59 +40010,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lubila) => [
- q(3156),
+ q(3189),
q(0),
],
q(lubu) => [
- q(3790),
+ q(3819),
q(0),
],
q(lubuagan kalinga) => [
- q(3427),
+ q(3458),
q(0),
],
q(lubukusu) => [
- q(1571),
+ q(1577),
q(0),
],
q(luchazi) => [
- q(3791),
+ q(3820),
q(0),
],
q(lucumi) => [
- q(4032),
+ q(4061),
q(0),
],
q(ludian) => [
- q(4024),
+ q(4053),
q(0),
],
q(lufu) => [
- q(3809),
+ q(3837),
q(0),
],
q(lugbara) => [
- q(3839),
+ q(3867),
q(0),
],
q(luguru) => [
- q(5793),
- q(0),
- ],
- q(luhu) => [
- q(3795),
+ q(5837),
q(0),
],
q(lui) => [
- q(3764),
+ q(3793),
q(0),
],
q(luidakho-luisukha-lutirichi) => [
- q(2861),
+ q(2884),
q(0),
],
q(luimbi) => [
- q(4030),
+ q(4059),
q(0),
],
q(luiseno) => [
@@ -39653,11 +40066,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lukabaras) => [
- q(3889),
+ q(3917),
q(0),
],
q(lukpa) => [
- q(2101),
+ q(2119),
q(0),
],
q(lule sami) => [
@@ -39665,35 +40078,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lulogooli) => [
- q(5675),
+ q(5715),
q(0),
],
q(lumba-yakkha) => [
- q(4035),
+ q(4064),
q(0),
],
q(lumbee) => [
- q(3945),
+ q(3974),
q(0),
],
q(lumbu) => [
- q(4031),
+ q(4060),
q(0),
],
q(lumun) => [
- q(3925),
+ q(3954),
q(0),
],
q(lun bawang) => [
- q(3948),
+ q(3977),
q(0),
],
q(luna) => [
- q(4027),
+ q(4056),
q(0),
],
q(lunanakha) => [
- q(4028),
+ q(4057),
q(0),
],
q(lunda) => [
@@ -39701,15 +40114,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lundayeh) => [
- q(3948),
+ q(3977),
q(0),
],
q(lungga) => [
- q(3837),
+ q(3865),
q(0),
],
q(luo (cameroon)) => [
- q(4037),
+ q(4066),
q(0),
],
q(luo (kenya and tanzania)) => [
@@ -39717,19 +40130,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(luopohe hmong) => [
- q(2748),
+ q(2773),
q(0),
],
q(luopohe miao) => [
- q(2748),
+ q(2773),
q(0),
],
q(luri) => [
- q(3798),
+ q(3826),
q(0),
],
q(lusengo) => [
- q(4004),
+ q(4033),
q(0),
],
q(lushai) => [
@@ -39737,35 +40150,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(lushootseed) => [
- q(4034),
+ q(4063),
q(0),
],
q(lusi) => [
- q(3289),
+ q(3320),
q(0),
],
q(lusitanian) => [
- q(7289),
+ q(7345),
q(0),
],
q(lutachoni) => [
- q(4021),
+ q(4050),
q(0),
],
q(lutos) => [
- q(4759),
+ q(4787),
q(0),
],
q(luvale) => [
- q(4025),
+ q(4054),
q(0),
],
q(luwati) => [
- q(4036),
+ q(4065),
q(0),
],
q(luwo) => [
- q(4050),
+ q(4079),
q(0),
],
q(luxembourgish) => [
@@ -39773,111 +40186,115 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(luyana) => [
- q(4055),
+ q(4084),
q(0),
],
q(luyia) => [
- q(4038),
+ q(4067),
q(0),
],
q(lwalu) => [
- q(4044),
+ q(4073),
q(0),
],
q(lycian) => [
- q(7281),
+ q(7337),
q(0),
],
q(lydian) => [
- q(7282),
+ q(7338),
q(0),
],
q(lyele) => [
- q(3814),
+ q(3842),
q(0),
],
q(lyngngam) => [
- q(4054),
+ q(4083),
q(0),
],
q(lyons sign language) => [
- q(4005),
+ q(4034),
q(0),
],
q(ma (democratic republic of congo)) => [
- q(4489),
+ q(4517),
q(0),
],
q(ma (papua new guinea)) => [
- q(4279),
+ q(4307),
+ q(0),
+ ],
+ q(ma manda) => [
+ q(6045),
q(0),
],
q(ma'anyan) => [
- q(4245),
+ q(4273),
q(0),
],
q(ma'di) => [
- q(4230),
+ q(4258),
q(0),
],
q(ma'ya) => [
- q(6042),
+ q(6087),
q(0),
],
q(maa) => [
- q(1777),
+ q(1784),
q(0),
],
q(maaka) => [
- q(4168),
+ q(4197),
q(0),
],
q(maasina fulfulde) => [
- q(2315),
+ q(2334),
q(0),
],
q(maay) => [
- q(7552),
+ q(7613),
q(0),
],
q(maba (chad)) => [
- q(4128),
+ q(4157),
q(0),
],
q(maba (indonesia)) => [
- q(4431),
+ q(4459),
q(0),
],
q(mabaale) => [
- q(4363),
+ q(4391),
q(0),
],
q(mabaan) => [
- q(4196),
+ q(4225),
q(0),
],
q(mabaka valley kalinga) => [
- q(3355),
+ q(3386),
q(0),
],
q(mabire) => [
- q(4538),
+ q(4566),
q(0),
],
q(maca) => [
- q(4098),
+ q(4127),
q(0),
],
q(macaguaje) => [
- q(4109),
+ q(4138),
q(0),
],
q(macaguan) => [
- q(4085),
+ q(4114),
q(0),
],
q(macanese) => [
- q(4664),
+ q(4692),
q(0),
],
q(macedo-romanian) => [
@@ -39889,59 +40306,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(machame) => [
- q(3065),
+ q(3096),
q(0),
],
q(machiguenga) => [
- q(4099),
+ q(4128),
q(0),
],
q(machinere) => [
- q(4409),
+ q(4437),
q(0),
],
q(machinga) => [
- q(4571),
+ q(4599),
q(0),
],
q(maco) => [
- q(7121),
+ q(7172),
q(0),
],
q(macuna) => [
- q(4645),
+ q(4673),
q(0),
],
q(macushi) => [
- q(4075),
+ q(4104),
q(0),
],
q(mada (cameroon)) => [
- q(4619),
+ q(4647),
q(0),
],
q(mada (nigeria)) => [
- q(4124),
+ q(4153),
q(0),
],
q(madagascar sign language) => [
- q(4649),
+ q(4677),
q(0),
],
q(madak) => [
- q(4361),
+ q(4389),
q(0),
],
q(maden) => [
- q(7314),
+ q(7370),
+ q(0),
+ ],
+ q(madhi madhi) => [
+ q(2083),
q(0),
],
q(madi) => [
- q(2577),
+ q(2601),
q(0),
],
q(madngele) => [
- q(7730),
+ q(7798),
q(0),
],
q(madurese) => [
@@ -39949,31 +40370,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mae) => [
- q(4343),
+ q(4371),
q(0),
],
q(maek) => [
- q(2747),
+ q(2772),
q(0),
],
q(maeng itneg) => [
- q(2975),
+ q(2999),
q(0),
],
q(mafa) => [
- q(4063),
+ q(4092),
q(0),
],
q(mafea) => [
- q(4311),
+ q(4339),
q(0),
],
q(mag-antsi ayta) => [
- q(5918),
+ q(5962),
q(0),
],
q(mag-indi ayta) => [
- q(1294),
+ q(1300),
q(0),
],
q(magahi) => [
@@ -39981,99 +40402,99 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(magbukun ayta) => [
- q(1003),
+ q(1009),
q(0),
],
q(magdalena penasco mixtec) => [
- q(7391),
+ q(7449),
q(0),
],
q(maghdi) => [
- q(2521),
+ q(2543),
q(0),
],
q(magoma) => [
- q(2527),
+ q(2549),
q(0),
],
q(magori) => [
- q(7688),
+ q(7754),
q(0),
],
q(maguindanaon) => [
- q(4130),
+ q(4159),
q(0),
],
q(mah meri) => [
- q(4226),
+ q(4254),
q(0),
],
q(mahali) => [
- q(4289),
+ q(4317),
q(0),
],
q(maharastri prakrit) => [
- q(5450),
+ q(5489),
q(0),
],
q(mahasu pahari) => [
- q(1154),
+ q(1161),
q(0),
],
q(mahican) => [
- q(4290),
+ q(4318),
q(0),
],
q(mahongwe) => [
- q(4223),
+ q(4251),
q(0),
],
q(mahou) => [
- q(4622),
+ q(4650),
q(0),
],
q(mai brat) => [
- q(1006),
+ q(1012),
q(0),
],
q(maia) => [
- q(6015),
+ q(6060),
q(0),
],
q(maiadomu) => [
- q(4671),
+ q(4699),
q(0),
],
q(maiani) => [
- q(6536),
+ q(6585),
q(0),
],
q(maii) => [
- q(4351),
+ q(4379),
q(0),
],
q(mailu) => [
- q(4216),
+ q(4245),
q(0),
],
q(maindo) => [
- q(1914),
+ q(1923),
q(0),
],
q(mainfrankisch) => [
- q(6938),
+ q(6988),
q(0),
],
q(mainstream kenyah) => [
- q(7265),
+ q(7321),
q(0),
],
q(mairasi) => [
- q(7789),
+ q(7857),
q(0),
],
q(maisin) => [
- q(4088),
+ q(4117),
q(0),
],
q(maithili) => [
@@ -40081,55 +40502,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(maiwa (indonesia)) => [
- q(7087),
+ q(7137),
q(0),
],
q(maiwa (papua new guinea)) => [
- q(4513),
+ q(4541),
q(0),
],
q(maiwala) => [
- q(4540),
+ q(4568),
q(0),
],
q(majang) => [
- q(4410),
+ q(4438),
q(0),
],
q(majera) => [
- q(7300),
+ q(7356),
q(0),
],
q(majhi) => [
- q(4291),
+ q(4319),
q(0),
],
q(majhwar) => [
- q(4348),
+ q(4376),
q(0),
],
q(majukayang kalinga) => [
- q(3403),
+ q(3434),
q(0),
],
q(mak (china)) => [
- q(4297),
+ q(4325),
q(0),
],
q(mak (nigeria)) => [
- q(5306),
+ q(5346),
q(0),
],
q(makaa) => [
- q(4113),
+ q(4142),
q(0),
],
q(makah) => [
- q(4631),
+ q(4659),
q(0),
],
q(makasae) => [
- q(4315),
+ q(4343),
q(0),
],
q(makasar) => [
@@ -40137,95 +40558,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(makassar malay) => [
- q(4186),
+ q(4215),
q(0),
],
q(makayam) => [
- q(0945),
+ q(0948),
q(0),
],
q(makhuwa) => [
- q(6952),
+ q(7002),
q(0),
],
q(makhuwa-marrevone) => [
- q(7294),
+ q(7350),
q(0),
],
q(makhuwa-meetto) => [
- q(4203),
+ q(4232),
q(0),
],
q(makhuwa-moniga) => [
- q(4234),
+ q(4262),
q(0),
],
q(makhuwa-saka) => [
- q(7376),
+ q(7434),
q(0),
],
q(makhuwa-shirima) => [
- q(6943),
+ q(6993),
q(0),
],
q(maklew) => [
- q(4201),
+ q(4230),
q(0),
],
q(makolkol) => [
- q(7726),
+ q(7794),
q(0),
],
q(makonde) => [
- q(3183),
+ q(3216),
q(0),
],
q(maku'a) => [
- q(4040),
+ q(4069),
q(0),
],
q(makurap) => [
- q(4425),
+ q(4453),
q(0),
],
q(makuri naga) => [
- q(3069),
+ q(3100),
q(0),
],
q(makwe) => [
- q(7550),
+ q(7611),
q(0),
],
q(makyan naga) => [
- q(6823),
+ q(6874),
q(0),
],
q(mal) => [
- q(4321),
+ q(4349),
q(0),
],
q(mal paharia) => [
- q(4293),
+ q(4321),
q(0),
],
q(mala (nigeria)) => [
- q(5802),
+ q(5846),
q(0),
],
q(mala (papua new guinea)) => [
- q(5343),
+ q(5382),
q(0),
],
q(mala malasar) => [
- q(2917),
+ q(2941),
q(0),
],
q(malaccan creole malay) => [
- q(1683),
+ q(1689),
q(0),
],
q(malaccan creole portuguese) => [
- q(4110),
+ q(4139),
q(0),
],
q(malagasy) => [
@@ -40233,51 +40654,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(malakhel) => [
- q(4319),
+ q(4347),
q(0),
],
q(malalamai) => [
- q(4357),
+ q(4385),
q(0),
],
q(malango) => [
- q(4328),
+ q(4356),
q(0),
],
q(malankuravan) => [
- q(4280),
+ q(4308),
q(0),
],
q(malapandaram) => [
- q(4281),
+ q(4309),
q(0),
],
q(malaryan) => [
- q(4282),
+ q(4310),
q(0),
],
q(malas) => [
- q(4307),
- q(0),
- ],
- q(malasanga) => [
- q(4455),
+ q(4335),
q(0),
],
q(malasar) => [
- q(7557),
+ q(7618),
q(0),
],
q(malavedan) => [
- q(4283),
+ q(4311),
q(0),
],
q(malawi lomwe) => [
- q(3971),
+ q(4000),
q(0),
],
q(malawi sena) => [
- q(6229),
+ q(6276),
q(0),
],
q(malay) => [
@@ -40285,7 +40702,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(malay (individual language)) => [
- q(7716),
+ q(7784),
q(0),
],
q(malay (macrolanguage)) => [
@@ -40297,27 +40714,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(malayic dayak) => [
- q(7221),
+ q(7275),
q(0),
],
q(malaynon) => [
- q(4338),
+ q(4366),
q(0),
],
q(malayo) => [
- q(4087),
+ q(4116),
q(0),
],
q(malayo-polynesian languages) => [
- q(0519),
+ q(0520),
q(0),
],
q(malaysian sign language) => [
- q(7302),
+ q(7358),
q(0),
],
q(malba birifor) => [
- q(1144),
+ q(1151),
q(0),
],
q(maldivian) => [
@@ -40325,79 +40742,79 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(male) => [
- q(2784),
+ q(2809),
q(0),
],
q(male (ethiopia)) => [
- q(4145),
+ q(4174),
q(0),
],
q(male (papua new guinea)) => [
- q(4126),
+ q(4155),
q(0),
],
q(malecite-passamaquoddy) => [
- q(5521),
+ q(5561),
q(0),
],
q(maleku jaika) => [
- q(2621),
+ q(2645),
q(0),
],
q(maleng) => [
- q(5421),
+ q(5459),
q(0),
],
q(maleu-kilenge) => [
- q(4207),
+ q(4236),
q(0),
],
q(malfaxal) => [
- q(4337),
+ q(4365),
q(0),
],
q(malgana) => [
- q(6944),
+ q(6994),
q(0),
],
q(malgbe) => [
- q(4604),
+ q(4632),
q(0),
],
q(mali) => [
- q(2415),
+ q(2434),
q(0),
],
q(maligo) => [
- q(4584),
+ q(4612),
q(0),
],
q(malila) => [
- q(4212),
+ q(4241),
q(0),
],
q(malimba) => [
- q(4650),
+ q(4678),
q(0),
],
q(malimpung) => [
- q(4323),
+ q(4351),
q(0),
],
q(malinaltepec me'phaa) => [
- q(6331),
+ q(6378),
q(0),
],
q(malinaltepec tlapanec) => [
- q(6331),
+ q(6378),
q(0),
],
q(malo) => [
- q(4316),
+ q(4344),
q(0),
],
q(malol) => [
- q(4082),
+ q(4111),
q(0),
],
q(maltese) => [
@@ -40405,103 +40822,107 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(maltese sign language) => [
- q(4134),
+ q(4163),
q(0),
],
q(malua bay) => [
- q(4326),
+ q(4354),
q(0),
],
q(malvi) => [
- q(4542),
+ q(4570),
+ q(0),
+ ],
+ q(malyangapa) => [
+ q(7552),
q(0),
],
q(mam) => [
- q(4065),
+ q(4094),
q(0),
],
q(mama) => [
- q(4339),
+ q(4367),
q(0),
],
q(mamaa) => [
- q(4227),
+ q(4255),
q(0),
],
q(mamainde) => [
- q(7083),
+ q(7133),
q(0),
],
q(mamanwa) => [
- q(4352),
+ q(4380),
q(0),
],
q(mamara senoufo) => [
- q(4634),
+ q(4662),
q(0),
],
q(mamasa) => [
- q(4439),
+ q(4467),
q(0),
],
q(mambae) => [
- q(4208),
+ q(4237),
q(0),
],
q(mambai) => [
- q(4116),
+ q(4145),
q(0),
],
q(mamboru) => [
- q(4553),
+ q(4581),
q(0),
],
q(mambwe-lungu) => [
- q(4213),
+ q(4242),
q(0),
],
q(mampruli) => [
- q(4070),
+ q(4099),
q(0),
],
q(mamuju) => [
- q(4453),
+ q(4481),
q(0),
],
q(mamulique) => [
- q(2231),
+ q(2250),
q(0),
],
q(mamusi) => [
- q(3184),
+ q(3217),
q(0),
],
q(mamvu) => [
- q(4131),
+ q(4160),
q(0),
],
q(man met) => [
- q(4350),
+ q(4378),
q(0),
],
q(manado malay) => [
- q(7303),
+ q(7359),
q(0),
],
q(manam) => [
- q(4551),
+ q(4579),
q(0),
],
q(manambu) => [
- q(4320),
+ q(4348),
q(0),
],
q(manangba) => [
- q(4926),
+ q(4955),
q(0),
],
q(manangkari) => [
- q(7748),
+ q(7816),
q(0),
],
q(manchu) => [
@@ -40509,31 +40930,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(manda (australia)) => [
- q(7719),
+ q(7787),
q(0),
],
q(manda (india)) => [
- q(4222),
+ q(4250),
q(0),
],
q(manda (tanzania)) => [
- q(4214),
+ q(4243),
q(0),
],
q(mandahuaca) => [
- q(4241),
+ q(4269),
q(0),
],
q(mandaic) => [
- q(4249),
+ q(4277),
q(0),
],
q(mandan) => [
- q(4238),
+ q(4266),
q(0),
],
q(mandandanyi) => [
- q(7729),
+ q(7797),
q(0),
],
q(mandar) => [
@@ -40541,31 +40962,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mandara) => [
- q(6306),
+ q(6353),
q(0),
],
q(mandari) => [
- q(4450),
+ q(4478),
q(0),
],
q(mandarin chinese) => [
- q(1783),
+ q(1790),
q(0),
],
q(mandaya) => [
- q(4479),
+ q(4507),
q(0),
],
q(mande languages) => [
- q(0499),
+ q(0500),
q(0),
],
q(mandeali) => [
- q(4277),
+ q(4305),
q(0),
],
q(mander) => [
- q(4447),
+ q(4475),
q(0),
],
q(mandingo) => [
@@ -40573,103 +40994,107 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mandinka) => [
- q(4372),
+ q(4400),
q(0),
],
q(mandjak) => [
- q(4192),
+ q(4221),
q(0),
],
q(mandobo atas) => [
- q(0557),
+ q(0558),
q(0),
],
q(mandobo bawah) => [
- q(1551),
+ q(1557),
q(0),
],
q(manem) => [
- q(3036),
+ q(3062),
q(0),
],
q(mang) => [
- q(7747),
+ q(7815),
q(0),
],
q(manga kanuri) => [
- q(3152),
+ q(3185),
q(0),
],
q(mangala) => [
- q(4159),
+ q(4188),
q(0),
],
q(mangarayi) => [
- q(4408),
+ q(4436),
q(0),
],
q(mangareva) => [
- q(4476),
+ q(4504),
q(0),
],
q(mangas) => [
- q(7749),
+ q(7817),
q(0),
],
q(mangayat) => [
- q(4633),
+ q(4661),
q(0),
],
q(mangbetu) => [
- q(4132),
+ q(4161),
q(0),
],
q(mangbutu) => [
- q(4133),
+ q(4162),
q(0),
],
q(mangerr) => [
- q(7723),
+ q(7791),
+ q(0),
+ ],
+ q(mangetti dune !xung) => [
+ q(2479),
q(0),
],
q(mangga buang) => [
- q(4353),
+ q(4381),
q(0),
],
q(manggarai) => [
- q(4454),
+ q(4482),
q(0),
],
q(mango) => [
- q(4200),
+ q(4229),
q(0),
],
q(mangole) => [
- q(4433),
+ q(4461),
q(0),
],
q(mangseng) => [
- q(4079),
+ q(4108),
q(0),
],
q(mangue) => [
- q(4395),
+ q(4423),
q(0),
],
q(manichaean middle persian) => [
- q(7304),
+ q(7360),
q(0),
],
q(manide) => [
- q(0562),
+ q(0563),
q(0),
],
q(manikion) => [
- q(4384),
+ q(4412),
q(0),
],
q(manipa) => [
- q(4445),
+ q(4473),
q(0),
],
q(manipuri) => [
@@ -40677,19 +41102,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mankanya) => [
- q(3431),
+ q(3462),
q(0),
],
q(mann) => [
- q(4167),
+ q(4196),
q(0),
],
q(manna-dora) => [
- q(4286),
+ q(4314),
q(0),
],
q(mannan) => [
- q(4287),
+ q(4315),
q(0),
],
q(manobo languages) => [
@@ -40697,35 +41122,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(manombai) => [
- q(7116),
+ q(7167),
q(0),
],
q(mansaka) => [
- q(4490),
+ q(4518),
q(0),
],
q(mansi) => [
- q(4379),
+ q(4407),
q(0),
],
q(mansoanka) => [
- q(4501),
+ q(4529),
q(0),
],
q(manta) => [
- q(4630),
+ q(4658),
q(0),
],
q(mantsi) => [
- q(5045),
+ q(5079),
+ q(0),
+ ],
+ q(manumanaw) => [
+ q(3702),
q(0),
],
q(manumanaw karen) => [
- q(3672),
+ q(3702),
q(0),
],
q(manusela) => [
- q(7034),
+ q(7085),
q(0),
],
q(manx) => [
@@ -40733,31 +41162,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(manya) => [
- q(4655),
+ q(4683),
q(0),
],
q(manyawa) => [
- q(4385),
+ q(4413),
q(0),
],
q(manyika) => [
- q(4601),
+ q(4629),
q(0),
],
q(manza) => [
- q(4667),
+ q(4695),
q(0),
],
q(mao naga) => [
- q(4700),
+ q(4728),
q(0),
],
q(maonan) => [
- q(4342),
+ q(4370),
q(0),
],
q(maore comorian) => [
- q(6222),
+ q(6269),
q(0),
],
q(maori) => [
@@ -40765,27 +41194,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mape) => [
- q(4322),
+ q(4350),
q(0),
],
q(mapena) => [
- q(4374),
+ q(4402),
q(0),
],
q(mapia) => [
- q(4429),
+ q(4457),
q(0),
],
q(mapidian) => [
- q(4427),
+ q(4455),
q(0),
],
q(mapos buang) => [
- q(1616),
+ q(1622),
q(0),
],
q(mapoyo) => [
- q(4104),
+ q(4133),
q(0),
],
q(mapuche) => [
@@ -40797,55 +41226,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mapun) => [
- q(5989),
+ q(6034),
q(0),
],
q(maquiritari) => [
- q(4105),
+ q(4134),
q(0),
],
q(mara) => [
- q(4149),
+ q(4178),
q(0),
],
q(mara chin) => [
- q(4463),
+ q(4491),
q(0),
],
q(marachi) => [
- q(3992),
+ q(4021),
q(0),
],
q(maraghei) => [
- q(6940),
+ q(6990),
q(0),
],
q(maragus) => [
- q(4473),
+ q(4501),
q(0),
],
q(maram naga) => [
- q(4914),
+ q(4943),
q(0),
],
q(marama) => [
- q(3995),
+ q(4024),
q(0),
],
q(maramba) => [
- q(4627),
+ q(4655),
q(0),
],
q(maranao) => [
- q(4477),
+ q(4505),
q(0),
],
q(maranunggu) => [
- q(7736),
+ q(7804),
q(0),
],
q(mararit) => [
- q(4197),
+ q(4226),
q(0),
],
q(marathi) => [
@@ -40853,43 +41282,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(marau) => [
- q(4566),
+ q(4594),
q(0),
],
q(marba) => [
- q(4411),
+ q(4439),
q(0),
],
q(maremgi) => [
- q(4478),
+ q(4506),
q(0),
],
q(marenje) => [
- q(6948),
+ q(6998),
q(0),
],
q(marfa) => [
- q(4569),
+ q(4597),
q(0),
],
q(margany) => [
- q(7721),
+ q(7789),
q(0),
],
q(marghi central) => [
- q(4474),
+ q(4502),
q(0),
],
q(marghi south) => [
- q(4183),
+ q(4212),
q(0),
],
q(margos-yarowilca-lauricocha quechua) => [
- q(5641),
+ q(5681),
q(0),
],
q(margu) => [
- q(4228),
+ q(4256),
q(0),
],
q(mari) => [
@@ -40897,11 +41326,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mari (east sepik province)) => [
- q(4095),
+ q(4124),
q(0),
],
q(mari (madang province)) => [
- q(2771),
+ q(2796),
q(0),
],
q(mari (russia)) => [
@@ -40909,95 +41338,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(maria (india)) => [
- q(4472),
+ q(4500),
q(0),
],
q(maria (papua new guinea)) => [
- q(4139),
+ q(4168),
q(0),
],
q(maricopa) => [
- q(4458),
+ q(4486),
q(0),
],
q(maridan) => [
- q(7722),
+ q(7790),
q(0),
],
q(maridjabin) => [
- q(7728),
+ q(7796),
q(0),
],
q(marik) => [
- q(1929),
+ q(1938),
q(0),
],
q(marimanindji) => [
- q(7731),
+ q(7799),
q(0),
],
q(marind) => [
- q(4480),
+ q(4508),
q(0),
],
q(maring) => [
- q(4094),
+ q(4123),
q(0),
],
q(maring naga) => [
- q(4946),
+ q(4975),
q(0),
],
q(maringarr) => [
- q(7738),
+ q(7806),
q(0),
],
q(marino) => [
- q(4457),
+ q(4485),
q(0),
],
q(mariri) => [
- q(4438),
+ q(4466),
q(0),
],
q(marithiel) => [
- q(4188),
+ q(4217),
q(0),
],
q(maritime sign language) => [
- q(5025),
+ q(5058),
q(0),
],
q(maritsaua) => [
- q(4495),
+ q(4523),
q(0),
],
q(mariyedi) => [
- q(7743),
+ q(7811),
q(0),
],
q(marka) => [
- q(5735),
+ q(5776),
q(0),
],
q(markweeta) => [
- q(2241),
+ q(2260),
q(0),
],
q(marma) => [
- q(5760),
+ q(5801),
q(0),
],
q(marovo) => [
- q(4563),
+ q(4591),
q(0),
],
q(marriammu) => [
- q(7361),
+ q(7419),
q(0),
],
q(marrucinian) => [
- q(6818),
+ q(6869),
q(0),
],
q(marshallese) => [
@@ -41005,31 +41434,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(marsian) => [
- q(2924),
+ q(2948),
q(0),
],
q(martha's vineyard sign language) => [
- q(4460),
+ q(4488),
q(0),
],
q(marti ke) => [
- q(7725),
+ q(7793),
q(0),
],
q(martu wangka) => [
- q(4414),
+ q(4442),
q(0),
],
q(martuyhunira) => [
- q(6933),
+ q(6983),
q(0),
],
q(maru) => [
- q(4244),
+ q(4272),
q(0),
],
q(marubo) => [
- q(4663),
+ q(4691),
q(0),
],
q(marwari) => [
@@ -41037,19 +41466,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(marwari (india)) => [
- q(5808),
+ q(5852),
q(0),
],
q(marwari (pakistan)) => [
- q(4554),
+ q(4582),
q(0),
],
q(masaaba) => [
- q(4644),
+ q(4672),
q(0),
],
q(masadiit itneg) => [
- q(6452),
+ q(6501),
q(0),
],
q(masai) => [
@@ -41057,191 +41486,199 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(masalit) => [
- q(4333),
+ q(4361),
q(0),
],
q(masana) => [
- q(4111),
+ q(4140),
q(0),
],
q(masbatenyo) => [
- q(4481),
+ q(4509),
q(0),
],
q(mashco piro) => [
- q(1898),
+ q(1907),
q(0),
],
q(mashi (nigeria)) => [
- q(3071),
+ q(3102),
q(0),
],
q(mashi (zambia)) => [
- q(4236),
+ q(4264),
q(0),
],
q(masikoro malagasy) => [
- q(4487),
+ q(4515),
q(0),
],
q(masimasi) => [
- q(2960),
+ q(2984),
q(0),
],
q(masiwang) => [
- q(1328),
+ q(1334),
q(0),
],
q(maskelynes) => [
- q(3396),
+ q(3427),
q(0),
],
q(maskoy pidgin) => [
- q(4229),
+ q(4257),
q(0),
],
q(maslam) => [
- q(4500),
+ q(4528),
q(0),
],
q(masmaje) => [
- q(4164),
+ q(4193),
q(0),
],
q(massalat) => [
- q(4129),
+ q(4158),
q(0),
],
q(massep) => [
- q(4567),
+ q(4595),
q(0),
],
q(matagalpa) => [
- q(4518),
+ q(4546),
q(0),
],
q(matal) => [
- q(4178),
+ q(4207),
q(0),
],
q(matbat) => [
- q(7310),
+ q(7366),
q(0),
],
q(matengo) => [
- q(4217),
+ q(4246),
q(0),
],
q(matepi) => [
- q(4434),
+ q(4462),
q(0),
],
q(matigsalug manobo) => [
- q(4091),
+ q(4120),
q(0),
],
q(matipuhy) => [
- q(4660),
+ q(4688),
q(0),
],
q(matis) => [
- q(4421),
+ q(4449),
q(0),
],
q(mato) => [
- q(4165),
+ q(4194),
q(0),
],
q(mato grosso arara) => [
- q(0983),
+ q(0989),
q(0),
],
q(mator) => [
- q(4517),
+ q(4545),
q(0),
],
q(mator-taygi-karagas) => [
- q(7559),
+ q(7620),
q(0),
],
q(matses) => [
- q(4103),
+ q(4132),
+ q(0),
+ ],
+ q(mattoki) => [
+ q(7382),
q(0),
],
q(mattole) => [
- q(4552),
+ q(4580),
+ q(0),
+ ],
+ q(matu chin) => [
+ q(2760),
q(0),
],
q(matukar) => [
- q(4276),
+ q(4304),
q(0),
],
q(matumbi) => [
- q(4218),
+ q(4247),
q(0),
],
q(matya samo) => [
- q(6186),
+ q(6233),
q(0),
],
q(maung) => [
- q(4412),
+ q(4440),
q(0),
],
q(mauritian sign language) => [
- q(4015),
+ q(4044),
q(0),
],
q(mauwake) => [
- q(4233),
+ q(4261),
q(0),
],
q(mawa (chad)) => [
- q(4120),
+ q(4149),
q(0),
],
q(mawa (nigeria)) => [
- q(7080),
+ q(7130),
q(0),
],
q(mawak) => [
- q(4275),
+ q(4303),
q(0),
],
q(mawan) => [
- q(4123),
+ q(4152),
q(0),
],
q(mawayana) => [
- q(4669),
+ q(4697),
q(0),
],
q(mawchi) => [
- q(4295),
+ q(4323),
q(0),
],
q(mawes) => [
- q(4206),
+ q(4235),
q(0),
],
q(mawukakan) => [
- q(4622),
+ q(4650),
q(0),
],
q(maxakali) => [
- q(4083),
+ q(4112),
q(0),
],
q(maxi gbe) => [
- q(4610),
+ q(4638),
q(0),
],
q(maya samo) => [
- q(6262),
+ q(6309),
q(0),
],
q(mayaguduna) => [
- q(7315),
+ q(7371),
q(0),
],
q(mayan languages) => [
@@ -41249,319 +41686,319 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mayangna) => [
- q(7446),
+ q(7507),
q(0),
],
q(mayeka) => [
- q(4626),
+ q(4654),
q(0),
],
q(maykulan) => [
- q(4380),
+ q(4408),
q(0),
],
q(mayo) => [
- q(4195),
+ q(4224),
q(0),
],
q(mayogo) => [
- q(4135),
+ q(4164),
q(0),
],
q(mayoyao ifugao) => [
- q(2877),
+ q(2900),
q(0),
],
q(mazagway) => [
- q(2060),
+ q(2076),
q(0),
],
q(mazaltepec zapotec) => [
- q(7781),
+ q(7849),
q(0),
],
q(mazanderani) => [
- q(4659),
+ q(4687),
q(0),
],
q(mazatlan mazatec) => [
- q(6955),
+ q(7005),
q(0),
],
q(mazatlan mixe) => [
- q(4657),
+ q(4685),
q(0),
],
q(mba) => [
- q(4173),
+ q(4202),
q(0),
],
q(mbabaram) => [
- q(6934),
+ q(6984),
q(0),
],
q(mbala) => [
- q(4137),
+ q(4166),
q(0),
],
q(mbalanhu) => [
- q(3947),
+ q(3976),
q(0),
],
q(mbandja) => [
- q(7744),
+ q(7812),
q(0),
],
q(mbangala) => [
- q(4605),
+ q(4633),
q(0),
],
q(mbangi) => [
- q(4209),
+ q(4238),
q(0),
],
q(mbangwe) => [
- q(7732),
+ q(7800),
q(0),
],
q(mbara (australia)) => [
- q(4560),
+ q(4588),
q(0),
],
q(mbara (chad)) => [
- q(4415),
+ q(4443),
q(0),
],
q(mbariman-gudhinma) => [
- q(7740),
+ q(7808),
q(0),
],
q(mbati) => [
- q(4136),
+ q(4165),
q(0),
],
q(mbato) => [
- q(2640),
+ q(2664),
q(0),
],
q(mbay) => [
- q(4625),
+ q(4653),
q(0),
],
q(mbe) => [
- q(4185),
+ q(4214),
q(0),
],
q(mbe') => [
- q(4515),
+ q(4543),
q(0),
],
q(mbelime) => [
- q(4441),
+ q(4469),
q(0),
],
q(mbere) => [
- q(4140),
+ q(4169),
q(0),
],
q(mbesa) => [
- q(7737),
+ q(7805),
q(0),
],
q(mbo (cameroon)) => [
- q(4086),
+ q(4115),
q(0),
],
q(mbo (democratic republic of congo)) => [
- q(7741),
+ q(7809),
q(0),
],
q(mboi) => [
- q(4392),
+ q(4420),
q(0),
],
q(mboko) => [
- q(4141),
+ q(4170),
q(0),
],
q(mbole) => [
- q(4138),
+ q(4167),
q(0),
],
q(mbonga) => [
- q(7293),
+ q(7349),
q(0),
],
q(mbongno) => [
- q(1174),
+ q(1181),
q(0),
],
q(mbosi) => [
- q(4143),
+ q(4172),
q(0),
],
q(mbowe) => [
- q(4613),
+ q(4641),
q(0),
],
q(mbre) => [
- q(4292),
+ q(4320),
q(0),
],
q(mbu') => [
- q(4532),
+ q(4560),
q(0),
],
q(mbudum) => [
- q(7295),
+ q(7351),
q(0),
],
q(mbugu) => [
- q(4225),
+ q(4253),
q(0),
],
q(mbugwe) => [
- q(4221),
+ q(4249),
q(0),
],
q(mbuko) => [
- q(4432),
+ q(4460),
q(0),
],
q(mbukushu) => [
- q(4243),
+ q(4271),
q(0),
],
q(mbula) => [
- q(4364),
+ q(4392),
q(0),
],
q(mbula-bwazza) => [
- q(4092),
+ q(4121),
q(0),
],
q(mbule) => [
- q(4317),
+ q(4345),
q(0),
],
q(mbulungish) => [
- q(4093),
+ q(4122),
q(0),
],
q(mbum) => [
- q(4127),
+ q(4156),
q(0),
],
q(mbunda) => [
- q(4108),
+ q(4137),
q(0),
],
q(mbunga) => [
- q(4220),
+ q(4248),
q(0),
],
q(mburku) => [
- q(1051),
+ q(1058),
q(0),
],
q(mbwela) => [
- q(4191),
+ q(4220),
q(0),
],
q(mbya guarani) => [
- q(2615),
+ q(2639),
q(0),
],
q(me'en) => [
- q(4636),
+ q(4664),
q(0),
],
q(mea) => [
- q(4153),
+ q(4182),
q(0),
],
q(medebur) => [
- q(4278),
+ q(4306),
q(0),
],
q(media lengua) => [
- q(4534),
+ q(4562),
q(0),
],
q(mediak) => [
- q(4596),
+ q(4624),
q(0),
],
q(median) => [
- q(7296),
+ q(7352),
q(0),
],
q(mednyj aleut) => [
- q(4533),
+ q(4561),
q(0),
],
q(medumba) => [
- q(1604),
+ q(1610),
q(0),
],
q(mefele) => [
- q(4180),
+ q(4209),
q(0),
],
q(megam) => [
- q(4152),
+ q(4181),
q(0),
],
q(megleno romanian) => [
- q(5799),
+ q(5843),
q(0),
],
q(mehek) => [
- q(5069),
+ q(5103),
q(0),
],
q(mehinaku) => [
- q(4346),
+ q(4374),
q(0),
],
q(mehri) => [
- q(2438),
+ q(2457),
q(0),
],
q(mekeo) => [
- q(4157),
+ q(4186),
q(0),
],
q(mekmek) => [
- q(4559),
+ q(4587),
q(0),
],
q(mekwei) => [
- q(4485),
+ q(4513),
q(0),
],
q(mele-fila) => [
- q(4603),
+ q(4631),
q(0),
],
q(melo) => [
- q(4194),
+ q(4223),
q(0),
],
q(melpa) => [
- q(4150),
+ q(4179),
q(0),
],
q(memoni) => [
- q(4096),
+ q(4125),
q(0),
],
q(mendalam kayan) => [
- q(7257),
+ q(7313),
q(0),
],
q(mendankwe-nkwen) => [
- q(4174),
+ q(4203),
q(0),
],
q(mende) => [
@@ -41569,7 +42006,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mende (papua new guinea)) => [
- q(5971),
+ q(6016),
q(0),
],
q(mende (sierra leone)) => [
@@ -41577,147 +42014,147 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(mengaka) => [
- q(7298),
+ q(7354),
q(0),
],
q(mengen) => [
- q(4151),
+ q(4180),
q(0),
],
q(mengisa) => [
- q(4117),
+ q(4146),
q(0),
],
q(menka) => [
- q(4147),
+ q(4176),
q(0),
],
q(menominee) => [
- q(4170),
+ q(4199),
q(0),
],
q(mentawai) => [
- q(4594),
+ q(4622),
q(0),
],
q(menya) => [
- q(4115),
+ q(4144),
q(0),
],
q(meoswar) => [
- q(4572),
+ q(4600),
q(0),
],
q(mer) => [
- q(4381),
+ q(4409),
q(0),
],
q(meramera) => [
- q(4611),
+ q(4639),
q(0),
],
q(merei) => [
- q(3923),
+ q(3952),
q(0),
],
q(merey) => [
- q(4162),
+ q(4191),
q(0),
],
q(meriam) => [
- q(6811),
+ q(6862),
q(0),
],
q(merlav) => [
- q(4467),
+ q(4495),
q(0),
],
q(meroitic) => [
- q(7308),
+ q(7364),
q(0),
],
q(meru) => [
- q(4163),
+ q(4192),
q(0),
],
q(merwari) => [
- q(7138),
+ q(7191),
q(0),
],
q(mesaka) => [
- q(2991),
+ q(3015),
q(0),
],
q(mescalero-chiricahua apache) => [
- q(0844),
+ q(0847),
q(0),
],
q(mese) => [
- q(4106),
+ q(4135),
q(0),
],
q(meskwaki) => [
- q(5814),
+ q(5858),
q(0),
],
q(mesme) => [
- q(7698),
+ q(7764),
q(0),
],
q(mesmes) => [
- q(4641),
+ q(4669),
q(0),
],
q(mesopotamian arabic) => [
- q(0591),
+ q(0592),
q(0),
],
q(mesqan) => [
- q(4574),
+ q(4602),
q(0),
],
q(messapic) => [
- q(1786),
+ q(1793),
q(0),
],
q(meta') => [
- q(4210),
+ q(4239),
q(0),
],
q(metlatonoc mixtec) => [
- q(4620),
+ q(4648),
q(0),
],
q(mewari) => [
- q(4522),
+ q(4550),
q(0),
],
q(mewati) => [
- q(7150),
+ q(7203),
q(0),
],
q(mexican sign language) => [
- q(4189),
+ q(4218),
q(0),
],
q(meyah) => [
- q(4156),
+ q(4185),
q(0),
],
q(mezontla popoloca) => [
- q(5301),
+ q(5341),
q(0),
],
q(mezquital otomi) => [
- q(5253),
+ q(5293),
q(0),
],
q(mfinu) => [
- q(7724),
+ q(7792),
q(0),
],
q(mfumte) => [
- q(4787),
+ q(4816),
q(0),
],
q(mi'kmaq) => [
@@ -41725,35 +42162,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(miahuatlan zapotec) => [
- q(7662),
+ q(7728),
q(0),
],
q(miami) => [
- q(4247),
+ q(4275),
q(0),
],
q(mian) => [
- q(4424),
+ q(4452),
q(0),
],
q(miani) => [
- q(5423),
+ q(5461),
q(0),
],
q(michif) => [
- q(1841),
+ q(1848),
q(0),
],
q(michigamea) => [
- q(1782),
+ q(1789),
q(0),
],
q(michoacan mazahua) => [
- q(4341),
+ q(4369),
q(0),
],
q(michoacan nahuatl) => [
- q(4727),
+ q(4755),
q(0),
],
q(micmac) => [
@@ -41761,23 +42198,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mid grand valley dani) => [
- q(2087),
+ q(2104),
q(0),
],
q(mid-southern banda) => [
- q(1239),
+ q(1245),
q(0),
],
q(middle armenian) => [
- q(0985),
+ q(0991),
q(0),
],
q(middle breton) => [
- q(7198),
+ q(7252),
q(0),
],
q(middle cornish) => [
- q(1801),
+ q(1808),
q(0),
],
q(middle dutch (ca. 1050-1350)) => [
@@ -41797,7 +42234,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(middle hittite) => [
- q(2809),
+ q(2833),
q(0),
],
q(middle irish (900-1200)) => [
@@ -41805,99 +42242,99 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(middle korean (10th-16th cent.)) => [
- q(5172),
+ q(5211),
q(0),
],
q(middle low german) => [
- q(2522),
+ q(2544),
q(0),
],
q(middle mongolian) => [
- q(7319),
+ q(7375),
q(0),
],
q(middle newar) => [
- q(5080),
+ q(5117),
q(0),
],
q(middle watut) => [
- q(4416),
+ q(4444),
q(0),
],
q(middle welsh) => [
- q(7071),
+ q(7121),
q(0),
],
q(midob) => [
- q(4155),
+ q(4184),
q(0),
],
q(migaama) => [
- q(4362),
+ q(4390),
q(0),
],
q(migabac) => [
- q(4420),
+ q(4448),
q(0),
],
q(migum) => [
- q(3387),
+ q(3418),
q(0),
],
q(miji) => [
- q(5988),
+ q(6033),
q(0),
],
q(miju-mishmi) => [
- q(4608),
+ q(4636),
q(0),
],
q(mikasuki) => [
- q(4256),
+ q(4284),
q(0),
],
q(mili) => [
- q(7548),
+ q(7609),
q(0),
],
q(miltu) => [
- q(4324),
+ q(4352),
q(0),
],
q(miluk) => [
- q(2920),
+ q(2944),
q(0),
],
q(milyan) => [
- q(2925),
+ q(2949),
q(0),
],
q(min bei chinese) => [
- q(4376),
+ q(4404),
q(0),
],
q(min dong chinese) => [
- q(1697),
+ q(1702),
q(0),
],
q(min nan chinese) => [
- q(4683),
+ q(4711),
q(0),
],
q(min zhong chinese) => [
- q(1925),
+ q(1934),
q(0),
],
q(mina (cameroon)) => [
- q(2760),
+ q(2785),
q(0),
],
q(mina (india)) => [
- q(4632),
+ q(4660),
q(0),
],
q(minaean) => [
- q(2930),
+ q(2954),
q(0),
],
q(minangkabau) => [
@@ -41905,63 +42342,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(minanibai) => [
- q(4119),
+ q(4148),
q(0),
],
q(minaveha) => [
- q(4562),
+ q(4590),
q(0),
],
q(minderico) => [
- q(2113),
+ q(2131),
q(0),
],
q(mindiri) => [
- q(4418),
+ q(4446),
q(0),
],
q(mingang doso) => [
- q(4304),
+ q(4332),
q(0),
],
q(mingrelian) => [
- q(7297),
+ q(7353),
q(0),
],
q(minica huitoto) => [
- q(2806),
+ q(2830),
q(0),
],
q(minidien) => [
- q(7044),
+ q(7095),
q(0),
],
q(minigir) => [
- q(6939),
+ q(6989),
q(0),
],
q(minoan) => [
- q(5194),
+ q(5233),
q(0),
],
q(minokok) => [
- q(4446),
+ q(4474),
q(0),
],
q(minriq) => [
- q(4377),
+ q(4405),
q(0),
],
q(mintil) => [
- q(4665),
+ q(4693),
q(0),
],
q(minz zhuang) => [
- q(7686),
+ q(7752),
q(0),
],
q(miqie) => [
- q(7511),
+ q(7571),
q(0),
],
q(mirandese) => [
@@ -41969,167 +42406,167 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(miraya bikol) => [
- q(5694),
- q(0),
- ],
- q(mire) => [
- q(4557),
+ q(5734),
q(0),
],
q(mirgan) => [
- q(7785),
+ q(7853),
q(0),
],
q(miriti) => [
- q(4359),
+ q(4387),
q(0),
],
q(miriwung) => [
- q(4161),
+ q(4190),
q(0),
],
q(mirpur panjabi) => [
- q(5462),
+ q(5501),
q(0),
],
q(miship) => [
- q(4284),
+ q(4312),
q(0),
],
- q(misima-paneati) => [
- q(4428),
+ q(misima-panaeati) => [
+ q(4456),
q(0),
],
q(mising) => [
- q(4462),
+ q(4490),
q(0),
],
q(miskito) => [
- q(4261),
+ q(4289),
q(0),
],
q(mitla zapotec) => [
- q(7670),
+ q(7736),
q(0),
],
q(mitlatongo mixtec) => [
- q(6945),
+ q(6995),
q(0),
],
q(mittu) => [
- q(4593),
+ q(4621),
q(0),
],
q(mituku) => [
- q(7735),
+ q(7803),
q(0),
],
q(miu) => [
- q(4419),
+ q(4447),
q(0),
],
q(miwa) => [
- q(6941),
+ q(6991),
q(0),
],
q(mixed great andamanese) => [
- q(2370),
+ q(2390),
q(0),
],
q(mixifore) => [
- q(4177),
+ q(4206),
q(0),
],
q(mixtepec mixtec) => [
- q(4266),
+ q(4294),
q(0),
],
q(mixtepec zapotec) => [
- q(7769),
+ q(7837),
q(0),
],
q(miya) => [
- q(4296),
+ q(4324),
q(0),
],
q(miyako) => [
- q(4558),
+ q(4586),
q(0),
],
q(miyobe) => [
- q(6103),
+ q(6148),
q(0),
],
q(mlabri) => [
- q(4456),
+ q(4484),
q(0),
],
q(mlahso) => [
- q(3858),
+ q(3886),
q(0),
],
q(mlap) => [
- q(3325),
+ q(3356),
q(0),
],
q(mlomp) => [
- q(4329),
+ q(4357),
q(0),
],
q(mmaala) => [
- q(4358),
+ q(4386),
q(0),
],
q(mmen) => [
- q(1142),
+ q(1149),
q(0),
],
q(mo) => [
- q(7060),
+ q(7110),
q(0),
],
q(mo'da) => [
- q(2404),
+ q(2423),
q(0),
],
q(moabite) => [
- q(5130),
+ q(5168),
q(0),
],
q(moba) => [
- q(4187),
+ q(4216),
q(0),
],
q(mobilian) => [
- q(4389),
+ q(4417),
q(0),
],
q(mobumrin aizi) => [
- q(0685),
+ q(0686),
+ q(0),
+ ],
+ q(mobwa karen) => [
+ q(3087),
q(0),
],
q(mocheno) => [
- q(4235),
+ q(4263),
q(0),
],
q(mochi) => [
- q(5181),
+ q(5220),
q(0),
],
q(mochica) => [
- q(5188),
+ q(5227),
q(0),
],
q(mocho) => [
- q(4224),
+ q(4252),
q(0),
],
q(mocovi) => [
- q(4388),
+ q(4416),
q(0),
],
q(modang) => [
- q(4602),
+ q(4630),
q(0),
],
q(modern greek (1453-)) => [
@@ -42137,27 +42574,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(modole) => [
- q(4444),
+ q(4472),
q(0),
],
q(moere) => [
- q(4565),
+ q(4593),
q(0),
],
q(mofu-gudur) => [
- q(4251),
+ q(4279),
q(0),
],
q(mogholi) => [
- q(4231),
+ q(4259),
q(0),
],
q(mogum) => [
- q(4400),
+ q(4428),
q(0),
],
q(mohave) => [
- q(4401),
+ q(4429),
q(0),
],
q(mohawk) => [
@@ -42165,59 +42602,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mohegan-pequot) => [
- q(7346),
+ q(7404),
q(0),
],
q(moi (congo)) => [
- q(4402),
+ q(4430),
q(0),
],
q(moi (indonesia)) => [
- q(4612),
+ q(4640),
q(0),
],
q(moikodi) => [
- q(4305),
+ q(4333),
q(0),
],
q(moingi) => [
- q(4598),
+ q(4626),
q(0),
],
q(moji) => [
- q(7549),
+ q(7610),
q(0),
],
q(mok) => [
- q(4449),
+ q(4477),
q(0),
],
q(moken) => [
- q(4592),
+ q(4620),
q(0),
],
q(mokerang) => [
- q(4190),
+ q(4219),
q(0),
],
q(mokilese) => [
- q(4299),
+ q(4327),
q(0),
],
q(moklen) => [
- q(4302),
+ q(4330),
q(0),
],
q(mokole) => [
- q(4301),
+ q(4329),
q(0),
],
q(mokpwe) => [
- q(1424),
+ q(1430),
q(0),
],
q(moksela) => [
- q(6949),
+ q(6999),
q(0),
],
q(moksha) => [
@@ -42225,11 +42662,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(molale) => [
- q(4077),
+ q(4106),
q(0),
],
q(molbog) => [
- q(5599),
+ q(5639),
q(0),
],
q(moldavian) => [
@@ -42237,7 +42674,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(moldova sign language) => [
- q(6963),
+ q(7013),
q(0),
],
q(moldovan) => [
@@ -42245,59 +42682,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(molengue) => [
- q(1563),
+ q(1569),
q(0),
],
q(molima) => [
- q(4403),
+ q(4431),
q(0),
],
q(molmo one) => [
- q(0943),
+ q(0946),
q(0),
],
q(molo) => [
- q(7733),
+ q(7801),
q(0),
],
q(molof) => [
- q(4491),
+ q(4519),
q(0),
],
q(moloko) => [
- q(4336),
+ q(4364),
q(0),
],
q(mom jango) => [
- q(6909),
+ q(6959),
q(0),
],
q(moma) => [
- q(4635),
+ q(4663),
q(0),
],
q(momare) => [
- q(4504),
+ q(4532),
q(0),
],
q(mombo dogon) => [
- q(2065),
+ q(2081),
q(0),
],
q(mombum) => [
- q(4494),
+ q(4522),
q(0),
],
q(momina) => [
- q(4340),
+ q(4368),
q(0),
],
q(momuna) => [
- q(4435),
+ q(4463),
q(0),
],
q(mon) => [
- q(4383),
+ q(4411),
q(0),
],
q(mon-khmer languages) => [
@@ -42305,15 +42742,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(monastic sign language) => [
- q(4652),
+ q(4680),
q(0),
],
q(monde) => [
- q(4366),
+ q(4394),
q(0),
],
q(mondropolon) => [
- q(4988),
+ q(5019),
q(0),
],
q(mong) => [
@@ -42321,11 +42758,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mong leng) => [
- q(2765),
+ q(2790),
q(0),
],
q(mong njua) => [
- q(2765),
+ q(2790),
q(0),
],
q(mongo) => [
@@ -42333,11 +42770,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mongol) => [
- q(4215),
+ q(4244),
q(0),
],
q(mongolia buriat) => [
- q(1573),
+ q(1579),
q(0),
],
q(mongolian) => [
@@ -42345,167 +42782,167 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mongolian languages) => [
- q(0530),
+ q(0531),
q(0),
],
q(mongolian sign language) => [
- q(4497),
+ q(4525),
q(0),
],
q(mongondow) => [
- q(4391),
+ q(4419),
q(0),
],
q(moni) => [
- q(4386),
+ q(4414),
q(0),
],
q(mono (cameroon)) => [
- q(4475),
+ q(4503),
q(0),
],
q(mono (democratic republic of congo)) => [
- q(4370),
+ q(4398),
q(0),
],
q(mono (solomon islands)) => [
- q(4509),
+ q(4537),
q(0),
],
q(mono (usa)) => [
- q(4378),
+ q(4406),
q(0),
],
q(monom) => [
- q(4396),
+ q(4424),
q(0),
],
q(monsang naga) => [
- q(4921),
+ q(4950),
q(0),
],
q(montagnais) => [
- q(4390),
+ q(4418),
q(0),
],
q(montol) => [
- q(4516),
+ q(4544),
q(0),
],
q(monumbo) => [
- q(4609),
+ q(4637),
q(0),
],
q(monzombo) => [
- q(4393),
+ q(4421),
q(0),
],
q(moo) => [
- q(2646),
+ q(2670),
q(0),
],
q(moose cree) => [
- q(1846),
+ q(1853),
q(0),
],
q(mopan maya) => [
- q(4397),
+ q(4425),
q(0),
],
q(mor (bomberai peninsula)) => [
- q(4398),
+ q(4426),
q(0),
],
q(mor (mor islands)) => [
- q(4246),
+ q(4274),
q(0),
],
q(moraid) => [
- q(4486),
+ q(4514),
q(0),
],
q(morawa) => [
- q(4651),
+ q(4679),
q(0),
],
q(morelos nahuatl) => [
- q(4823),
+ q(4852),
q(0),
],
q(morerebi) => [
- q(7305),
+ q(7361),
q(0),
],
q(moresada) => [
- q(4502),
+ q(4530),
q(0),
],
q(mori atas) => [
- q(4662),
+ q(4690),
q(0),
],
q(mori bawah) => [
- q(7316),
+ q(7372),
q(0),
],
q(morigi) => [
- q(4125),
+ q(4154),
q(0),
],
q(morisyen) => [
- q(4175),
+ q(4204),
q(0),
],
q(moro) => [
- q(4399),
+ q(4427),
q(0),
],
q(moroccan arabic) => [
- q(0881),
+ q(0884),
q(0),
],
q(moroccan sign language) => [
- q(7309),
+ q(7365),
q(0),
],
q(morokodo) => [
- q(4198),
+ q(4227),
q(0),
],
q(morom) => [
- q(1097),
+ q(1104),
q(0),
],
q(moronene) => [
- q(4443),
+ q(4471),
q(0),
],
q(morori) => [
- q(4394),
+ q(4422),
q(0),
],
q(morouas) => [
- q(4470),
+ q(4498),
q(0),
],
q(mortlockese) => [
- q(4466),
+ q(4494),
q(0),
],
q(moru) => [
- q(4199),
+ q(4228),
q(0),
],
q(mosimo) => [
- q(4451),
+ q(4479),
q(0),
],
q(mosiro) => [
- q(4597),
+ q(4625),
q(0),
],
q(moskona) => [
- q(4514),
+ q(4542),
q(0),
],
q(mossi) => [
@@ -42513,167 +42950,179 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mota) => [
- q(4524),
+ q(4552),
q(0),
],
q(motlav) => [
- q(4335),
+ q(4363),
q(0),
],
q(motu) => [
- q(4166),
+ q(4195),
q(0),
],
q(mouk-aria) => [
- q(4582),
+ q(4610),
q(0),
],
q(mountain koiali) => [
- q(3493),
+ q(3523),
+ q(0),
+ ],
+ q(mouwase) => [
+ q(3103),
q(0),
],
q(movima) => [
- q(4661),
+ q(4689),
q(0),
],
q(moyadan itneg) => [
- q(2979),
+ q(3003),
q(0),
],
q(moyon naga) => [
- q(4928),
+ q(4957),
q(0),
],
q(mozambican sign language) => [
- q(4670),
+ q(4698),
q(0),
],
q(mozarabic) => [
- q(4607),
+ q(4635),
q(0),
],
q(mpade) => [
- q(4413),
+ q(4441),
q(0),
],
- q(mpi) => [
- q(4430),
+ q(mpalitjanh) => [
+ q(7398),
q(0),
],
- q(mpiemo) => [
- q(4121),
+ q(mpi) => [
+ q(4458),
q(0),
],
- q(mpongmpong) => [
- q(4202),
+ q(mpiemo) => [
+ q(4150),
q(0),
],
q(mpoto) => [
- q(4406),
+ q(4434),
q(0),
],
q(mpotovoro) => [
- q(4568),
+ q(4596),
+ q(0),
+ ],
+ q(mpumpong) => [
+ q(4231),
q(0),
],
q(mpuono) => [
- q(7734),
+ q(7802),
q(0),
],
q(mpur) => [
- q(0723),
+ q(0725),
q(0),
],
- q(mro chin) => [
- q(1785),
+ q(mro-khimi chin) => [
+ q(1792),
q(0),
],
q(mru) => [
- q(4469),
+ q(4497),
q(0),
],
q(mser) => [
- q(3519),
+ q(3549),
q(0),
],
q(mt. iraya agta) => [
- q(0916),
+ q(0919),
q(0),
],
q(mt. iriga agta) => [
- q(0677),
+ q(0678),
q(0),
],
q(mualang) => [
- q(4508),
+ q(4536),
q(0),
],
q(mubami) => [
- q(6652),
+ q(6701),
q(0),
],
q(mubi) => [
- q(4531),
+ q(4559),
q(0),
],
q(muda) => [
- q(7545),
+ q(7606),
q(0),
],
q(mudbura) => [
- q(4578),
+ q(4606),
q(0),
],
q(mudhili gadaba) => [
- q(2388),
+ q(2408),
q(0),
],
q(mudu koraga) => [
- q(6936),
- q(0),
- ],
- q(muduapa) => [
- q(7053),
+ q(6986),
q(0),
],
q(muduga) => [
- q(6780),
+ q(6830),
q(0),
],
q(mufian) => [
- q(0823),
+ q(0825),
q(0),
],
q(mugom) => [
- q(4539),
+ q(4567),
q(0),
],
q(muinane) => [
- q(1314),
+ q(1320),
q(0),
],
q(mukha-dora) => [
- q(4349),
+ q(4377),
q(0),
],
q(mukulu) => [
- q(4405),
+ q(4433),
q(0),
],
q(mulaha) => [
- q(4193),
+ q(4222),
q(0),
],
q(mulam) => [
- q(4327),
+ q(4355),
+ q(0),
+ ],
+ q(mulao) => [
+ q(2516),
+ q(0),
+ ],
+ q(mulgi) => [
+ q(4585),
q(0),
],
q(mullu kurumba) => [
- q(3472),
+ q(3503),
q(0),
],
q(mullukmulluk) => [
- q(4407),
+ q(4435),
q(0),
],
q(multiple languages) => [
@@ -42681,27 +43130,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(muluridyi) => [
- q(6950),
+ q(7000),
q(0),
],
q(mum) => [
- q(3496),
+ q(3526),
q(0),
],
q(mumuye) => [
- q(4658),
+ q(4686),
q(0),
],
q(mun chin) => [
- q(4590),
+ q(4618),
q(0),
],
q(muna) => [
- q(4365),
+ q(4393),
q(0),
],
q(munda) => [
- q(6836),
+ q(6886),
q(0),
],
q(munda languages) => [
@@ -42709,235 +43158,235 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(mundabli) => [
- q(1349),
+ q(1355),
q(0),
],
q(mundang) => [
- q(4530),
+ q(4558),
q(0),
],
q(mundani) => [
- q(4368),
+ q(4396),
q(0),
],
q(mundari) => [
- q(6835),
+ q(6885),
q(0),
],
q(mundat) => [
- q(4344),
+ q(4372),
q(0),
],
q(mundu) => [
- q(4536),
+ q(4564),
q(0),
],
q(munduruku) => [
- q(4642),
+ q(4670),
q(0),
],
q(mungaka) => [
- q(4232),
+ q(4260),
q(0),
],
q(munggui) => [
- q(4512),
+ q(4540),
q(0),
],
q(mungkip) => [
- q(4426),
+ q(4454),
q(0),
],
q(muniche) => [
- q(4640),
+ q(4668),
q(0),
],
q(munit) => [
- q(4507),
+ q(4535),
q(0),
],
q(munji) => [
- q(4371),
+ q(4399),
q(0),
],
q(munsee) => [
- q(6828),
+ q(6879),
q(0),
],
q(muong) => [
- q(4521),
+ q(4549),
q(0),
],
q(muratayak) => [
- q(0904),
+ q(0907),
q(0),
],
q(murik (malaysia)) => [
- q(4616),
+ q(4644),
q(0),
],
q(murik (papua new guinea)) => [
- q(4510),
+ q(4538),
q(0),
],
q(murkim) => [
- q(5744),
+ q(5785),
q(0),
],
q(murle) => [
- q(4544),
+ q(4572),
q(0),
],
q(murrinh-patha) => [
- q(4580),
+ q(4608),
q(0),
],
q(mursi) => [
- q(4550),
+ q(4578),
q(0),
],
q(murui huitoto) => [
- q(2827),
+ q(2851),
q(0),
],
q(murupi) => [
- q(4452),
+ q(4480),
q(0),
],
q(muruwari) => [
- q(7739),
+ q(7807),
q(0),
],
q(musak) => [
- q(4355),
+ q(4383),
q(0),
],
q(musar) => [
- q(4347),
+ q(4375),
q(0),
],
q(musasa) => [
- q(6051),
+ q(6096),
q(0),
],
q(musey) => [
- q(4484),
+ q(4512),
q(0),
],
q(musgu) => [
- q(4535),
+ q(4563),
q(0),
],
q(mushungulu) => [
- q(7292),
+ q(7348),
q(0),
],
q(musi) => [
- q(4537),
+ q(4565),
q(0),
],
q(muskum) => [
- q(4271),
+ q(4299),
q(0),
],
q(muslim tat) => [
- q(6674),
+ q(6723),
q(0),
],
q(musom) => [
- q(4499),
+ q(4527),
q(0),
],
q(mussau-emira) => [
- q(2229),
+ q(2248),
q(0),
],
q(muthuvan) => [
- q(4547),
+ q(4575),
q(0),
],
q(mutu) => [
- q(6682),
+ q(6731),
q(0),
],
q(muya) => [
- q(4561),
+ q(4589),
q(0),
],
q(muyang) => [
- q(4549),
+ q(4577),
q(0),
],
q(muyuw) => [
- q(4643),
+ q(4671),
q(0),
],
q(muzi) => [
- q(7561),
+ q(7622),
q(0),
],
q(mvanip) => [
- q(4107),
+ q(4136),
q(0),
],
q(mvuba) => [
- q(4606),
+ q(4634),
q(0),
],
q(mwaghavul) => [
- q(6208),
+ q(6255),
q(0),
],
q(mwali comorian) => [
- q(7065),
+ q(7115),
q(0),
],
q(mwan) => [
- q(4387),
+ q(4415),
q(0),
],
q(mwani) => [
- q(7092),
+ q(7142),
q(0),
],
q(mwatebu) => [
- q(4575),
+ q(4603),
q(0),
],
q(mwera (chimwera)) => [
- q(4579),
+ q(4607),
q(0),
],
q(mwera (nyasa)) => [
- q(4273),
+ q(4301),
q(0),
],
q(mwerlap) => [
- q(4467),
+ q(4495),
q(0),
],
q(mwimbi-muthambi) => [
- q(4591),
+ q(4619),
q(0),
],
q(mwotlap) => [
- q(4335),
+ q(4363),
q(0),
],
q(mycenaean greek) => [
- q(2528),
+ q(2550),
q(0),
],
q(myene) => [
- q(4628),
+ q(4656),
q(0),
],
q(mysian) => [
- q(7558),
+ q(7619),
q(0),
],
q(mzieme naga) => [
- q(4918),
+ q(4947),
q(0),
],
q(n'ko) => [
@@ -42945,103 +43394,99 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(n/u) => [
- q(4794),
+ q(4823),
q(0),
],
q(na) => [
- q(4710),
+ q(4738),
q(0),
],
q(na-dene languages) => [
- q(0531),
+ q(0532),
q(0),
],
q(na-meo) => [
- q(4774),
+ q(4802),
q(0),
],
q(naaba) => [
- q(4684),
+ q(4712),
q(0),
],
q(naasioi) => [
- q(4687),
+ q(4715),
q(0),
],
q(naba) => [
- q(4367),
+ q(4395),
q(0),
],
q(nabak) => [
- q(4677),
+ q(4705),
q(0),
],
q(nabi) => [
- q(4529),
+ q(4557),
q(0),
],
q(nachering) => [
- q(4719),
+ q(4747),
q(0),
],
q(nadeb) => [
- q(4081),
+ q(4110),
q(0),
],
q(nadruvian) => [
- q(4742),
+ q(4770),
q(0),
],
q(nafaanra) => [
- q(4786),
+ q(4815),
q(0),
],
q(nafi) => [
- q(6137),
+ q(6184),
q(0),
],
q(nafri) => [
- q(5093),
+ q(5131),
q(0),
],
q(nafusi) => [
- q(3018),
+ q(3043),
q(0),
],
q(naga pidgin) => [
- q(4678),
+ q(4706),
q(0),
],
q(nagarchal) => [
- q(4698),
+ q(4726),
q(0),
],
q(nage) => [
- q(5084),
- q(0),
- ],
- q(nagu) => [
- q(4804),
+ q(5121),
q(0),
],
q(nagumi) => [
- q(4808),
+ q(4837),
q(0),
],
q(naha'ai) => [
- q(4337),
+ q(4365),
q(0),
],
q(nahali) => [
- q(4911),
+ q(4940),
q(0),
],
q(nahari) => [
- q(4820),
+ q(4849),
q(0),
],
q(nahavaq) => [
- q(6077),
+ q(6122),
q(0),
],
q(nahuatl languages) => [
@@ -43049,283 +43494,283 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(nai) => [
- q(1214),
+ q(1221),
q(0),
],
q(najdi arabic) => [
- q(0877),
+ q(0880),
q(0),
],
q(naka'ela) => [
- q(4676),
+ q(4704),
q(0),
],
q(nakai) => [
- q(4883),
+ q(4913),
q(0),
],
q(nakame) => [
- q(4836),
+ q(4865),
q(0),
],
q(nakanai) => [
- q(4680),
+ q(4708),
q(0),
],
q(nakara) => [
- q(4726),
+ q(4754),
q(0),
],
q(nake) => [
- q(4702),
+ q(4730),
q(0),
],
q(naki) => [
- q(4176),
+ q(4205),
q(0),
],
q(nakwi) => [
- q(4690),
+ q(4718),
q(0),
],
q(nalca) => [
- q(4899),
+ q(4929),
q(0),
],
q(nali) => [
- q(5026),
+ q(5059),
q(0),
],
q(nalik) => [
- q(4681),
+ q(4709),
q(0),
],
q(nalogo) => [
- q(4913),
+ q(4942),
q(0),
],
q(nalu) => [
- q(4679),
+ q(4707),
q(0),
],
q(naluo yi) => [
- q(7538),
+ q(7600),
q(0),
],
q(nama (namibia)) => [
- q(4685),
+ q(4713),
q(0),
],
q(nama (papua new guinea)) => [
- q(4937),
+ q(4966),
q(0),
],
q(namakura) => [
- q(4924),
+ q(4953),
q(0),
],
q(namat) => [
- q(4885),
+ q(4915),
q(0),
],
q(nambo) => [
- q(4728),
+ q(4756),
q(0),
],
q(nambya) => [
- q(4930),
+ q(4959),
q(0),
],
q(namia) => [
- q(4952),
+ q(4981),
q(0),
],
q(namiae) => [
- q(5073),
+ q(5107),
q(0),
],
q(namibian sign language) => [
- q(4709),
+ q(4737),
q(0),
],
q(namla) => [
- q(4672),
+ q(4700),
q(0),
],
q(namo) => [
- q(4621),
+ q(4649),
q(0),
],
q(namonuito) => [
- q(4933),
+ q(4962),
q(0),
],
q(namosi-naitasiri-serua) => [
- q(1537),
+ q(1543),
q(0),
],
q(namuyi) => [
- q(4938),
+ q(4967),
q(0),
],
q(nanai) => [
- q(2509),
+ q(2531),
q(0),
],
q(nancere) => [
- q(4942),
+ q(4971),
q(0),
],
q(nande) => [
- q(4941),
+ q(4970),
q(0),
],
q(nandi) => [
- q(4849),
+ q(4878),
q(0),
],
q(nanerige senoufo) => [
- q(5902),
+ q(5945),
q(0),
],
q(nanga dama dogon) => [
- q(5122),
- q(0),
- ],
- q(nanggu) => [
- q(4804),
- q(0),
- ],
- q(nangikurrunggurr) => [
- q(4682),
+ q(5160),
q(0),
],
q(nankina) => [
- q(4950),
+ q(4979),
q(0),
],
q(nanti) => [
- q(1821),
+ q(1828),
q(0),
],
q(nanticoke) => [
- q(4958),
+ q(4987),
q(0),
],
q(nanubae) => [
- q(0645),
+ q(0646),
q(0),
],
q(napo lowland quechua) => [
- q(5643),
+ q(5683),
q(0),
],
q(napu) => [
- q(4992),
+ q(5023),
q(0),
],
q(nar phu) => [
- q(4984),
+ q(5013),
q(0),
],
q(nara) => [
- q(4998),
+ q(5030),
q(0),
],
q(narak) => [
- q(4674),
+ q(4702),
q(0),
],
q(narango) => [
- q(5001),
+ q(5033),
q(0),
],
q(narau) => [
- q(5092),
+ q(5130),
+ q(0),
+ ],
+ q(nari nari) => [
+ q(5808),
q(0),
],
q(narim) => [
- q(3966),
+ q(3995),
q(0),
],
q(naro) => [
- q(4828),
+ q(4857),
q(0),
],
q(narom) => [
- q(5004),
+ q(5036),
q(0),
],
q(narragansett) => [
- q(7325),
+ q(7381),
q(0),
],
q(narrinyeri) => [
- q(4691),
+ q(4719),
q(0),
],
q(narua) => [
- q(5009),
+ q(5041),
q(0),
],
q(narungga) => [
- q(4956),
+ q(4985),
q(0),
],
q(nasal) => [
- q(5032),
+ q(5065),
q(0),
],
q(nasarian) => [
- q(5072),
+ q(5106),
q(0),
],
q(naskapi) => [
- q(5019),
+ q(5052),
q(0),
],
q(natagaimas) => [
- q(5042),
+ q(5075),
q(0),
],
q(natanzi) => [
- q(5046),
+ q(5080),
q(0),
],
q(nataoran amis) => [
- q(0709),
+ q(0710),
q(0),
],
q(natchez) => [
- q(4737),
+ q(4765),
q(0),
],
q(nateni) => [
- q(5038),
+ q(5071),
q(0),
],
q(nathembo) => [
- q(5034),
+ q(5067),
q(0),
],
q(natioro) => [
- q(5035),
+ q(5068),
q(0),
],
q(natugu) => [
- q(5043),
+ q(5076),
q(0),
],
q(nauete) => [
- q(5082),
+ q(5119),
q(0),
],
q(naukan yupik) => [
- q(7567),
+ q(7628),
q(0),
],
q(nauna) => [
- q(4729),
+ q(4757),
+ q(0),
+ ],
+ q(nauo) => [
+ q(5115),
q(0),
],
q(nauru) => [
@@ -43341,87 +43786,87 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(navut) => [
- q(5030),
+ q(5063),
q(0),
],
q(nawaru) => [
- q(5079),
+ q(5116),
q(0),
],
q(nawathinehena) => [
- q(5074),
+ q(5109),
q(0),
],
q(nawdm) => [
- q(4939),
+ q(4968),
q(0),
],
q(nawuri) => [
- q(4689),
+ q(4717),
q(0),
],
q(naxi) => [
- q(5090),
+ q(5128),
q(0),
],
q(nayi) => [
- q(4983),
+ q(5012),
q(0),
],
q(nayini) => [
- q(5106),
+ q(5144),
q(0),
],
q(ncane) => [
- q(4732),
+ q(4760),
q(0),
],
q(nchumbulu) => [
- q(4909),
+ q(4938),
q(0),
],
q(nda'nda') => [
- q(4964),
+ q(4993),
q(0),
],
q(ndai) => [
- q(2505),
+ q(2526),
q(0),
],
q(ndaka) => [
- q(4747),
+ q(4775),
q(0),
],
q(ndaktup) => [
- q(4731),
+ q(4759),
q(0),
],
q(ndali) => [
- q(4744),
+ q(4772),
q(0),
],
q(ndam) => [
- q(4749),
+ q(4777),
q(0),
],
q(ndamba) => [
- q(4746),
+ q(4774),
q(0),
],
q(ndasa) => [
- q(4738),
+ q(4766),
q(0),
],
q(ndau) => [
- q(4740),
+ q(4768),
q(0),
],
q(nde-gbite) => [
- q(4764),
+ q(4792),
q(0),
],
q(nde-nsele-nta) => [
- q(4741),
+ q(4769),
q(0),
],
q(ndebele, north) => [
@@ -43433,51 +43878,51 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ndemli) => [
- q(4925),
+ q(4954),
q(0),
],
q(ndendeule) => [
- q(2081),
+ q(2098),
q(0),
],
q(ndengereko) => [
- q(4743),
+ q(4771),
q(0),
],
q(nding) => [
- q(2219),
+ q(2239),
q(0),
],
q(ndo) => [
- q(4751),
+ q(4779),
q(0),
],
q(ndobo) => [
- q(4757),
+ q(4785),
q(0),
],
q(ndoe) => [
- q(4694),
+ q(4722),
q(0),
],
q(ndogo) => [
- q(4760),
+ q(4788),
q(0),
],
q(ndolo) => [
- q(4748),
+ q(4776),
q(0),
],
q(ndom) => [
- q(4995),
+ q(5026),
q(0),
],
q(ndombe) => [
- q(4752),
+ q(4780),
q(0),
],
q(ndonde hamba) => [
- q(4860),
+ q(4889),
q(0),
],
q(ndonga) => [
@@ -43485,35 +43930,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ndoola) => [
- q(4753),
+ q(4781),
+ q(0),
+ ],
+ q(ndrag'ngith) => [
+ q(2016),
q(0),
],
q(nduga) => [
- q(4758),
+ q(4786),
q(0),
],
q(ndumu) => [
- q(4917),
+ q(4946),
q(0),
],
q(ndunda) => [
- q(5053),
+ q(5087),
q(0),
],
q(ndunga) => [
- q(4754),
+ q(4782),
q(0),
],
q(ndut) => [
- q(4756),
+ q(4784),
q(0),
],
q(ndyuka-trio pidgin) => [
- q(4870),
+ q(4899),
q(0),
],
q(ndzwani comorian) => [
- q(7099),
+ q(7149),
q(0),
],
q(neapolitan) => [
@@ -43521,79 +43970,83 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(nedebang) => [
- q(4763),
+ q(4791),
q(0),
],
q(nefamese) => [
- q(4766),
+ q(4794),
q(0),
],
q(negerhollands) => [
- q(1966),
+ q(1976),
q(0),
],
q(negeri sembilan malay) => [
- q(7727),
+ q(7795),
q(0),
],
q(negidal) => [
- q(4767),
+ q(4795),
q(0),
],
q(nehan) => [
- q(5022),
+ q(5055),
q(0),
],
q(nek) => [
- q(4839),
+ q(4868),
q(0),
],
q(nekgini) => [
- q(4880),
+ q(4910),
q(0),
],
q(neko) => [
- q(4770),
+ q(4798),
q(0),
],
q(neku) => [
- q(4771),
+ q(4799),
q(0),
],
q(nelemwa-nixumwak) => [
- q(4765),
+ q(4793),
q(0),
],
q(neme) => [
- q(4780),
+ q(4809),
q(0),
],
q(nemi) => [
- q(4772),
+ q(4800),
q(0),
],
q(nen) => [
- q(4996),
+ q(5027),
q(0),
],
q(nend) => [
- q(0796),
+ q(0798),
q(0),
],
q(nenets) => [
- q(7596),
+ q(7659),
q(0),
],
q(nenge) => [
- q(2048),
+ q(2064),
q(0),
],
q(nengone) => [
- q(4773),
+ q(4801),
+ q(0),
+ ],
+ q(neo) => [
+ q(4807),
q(0),
],
q(neo-hittite) => [
- q(4769),
+ q(4797),
q(0),
],
q(nepal bhasa) => [
@@ -43601,35 +44054,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(nepalese sign language) => [
- q(5023),
+ q(5056),
q(0),
],
q(nepali) => [
q(0307),
q(0),
],
+ q(nepali (individual language)) => [
+ q(5017),
+ q(0),
+ ],
+ q(nepali (macrolanguage)) => [
+ q(0307),
+ q(1),
+ ],
q(nepali kurux) => [
- q(3677),
+ q(3707),
q(0),
],
q(nete) => [
- q(4778),
+ q(4806),
q(0),
],
q(neve'ei) => [
- q(6957),
+ q(7007),
q(0),
],
q(neverver) => [
- q(3842),
+ q(3870),
q(0),
],
q(new caledonian javanese) => [
- q(3010),
+ q(3034),
q(0),
],
q(new zealand sign language) => [
- q(5119),
+ q(5157),
q(0),
],
q(newari) => [
@@ -43637,327 +44098,335 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(neyo) => [
- q(4781),
+ q(4810),
q(0),
],
q(nez perce) => [
- q(4782),
- q(0),
- ],
- q(nga la) => [
- q(2735),
+ q(4811),
q(0),
],
q(ngaanyatjarra) => [
- q(5036),
+ q(5069),
q(0),
],
q(ngabere) => [
- q(2663),
+ q(2688),
q(0),
],
q(ngad'a) => [
- q(5085),
+ q(5122),
q(0),
],
q(ngadjunmaya) => [
- q(4871),
+ q(4900),
+ q(0),
+ ],
+ q(ngadjuri) => [
+ q(3129),
q(0),
],
q(ngaing) => [
- q(4945),
+ q(4974),
q(0),
],
q(ngaju) => [
- q(4843),
+ q(4872),
q(0),
],
q(ngala) => [
- q(5049),
+ q(5083),
q(0),
],
q(ngalakan) => [
- q(4840),
+ q(4869),
q(0),
],
q(ngalkbun) => [
- q(4797),
+ q(4826),
q(0),
],
q(ngalum) => [
- q(6269),
+ q(6316),
q(0),
],
q(ngam) => [
- q(4916),
+ q(4945),
q(0),
],
q(ngamambo) => [
- q(4712),
+ q(4740),
q(0),
],
q(ngambay) => [
- q(5829),
+ q(5873),
q(0),
],
q(ngamini) => [
- q(4935),
+ q(4964),
q(0),
],
q(ngamo) => [
- q(4699),
+ q(4727),
+ q(0),
+ ],
+ q(ngan'gityemerri) => [
+ q(4710),
q(0),
],
q(nganasan) => [
- q(4848),
+ q(4877),
q(0),
],
q(ngandi) => [
- q(4837),
+ q(4866),
q(0),
],
q(ngando (central african republic)) => [
- q(4791),
+ q(4820),
q(0),
],
q(ngando (democratic republic of congo)) => [
- q(5083),
+ q(5120),
q(0),
],
q(ngandyera) => [
- q(4944),
+ q(4973),
q(0),
],
q(ngangam) => [
- q(2534),
+ q(2556),
q(0),
],
q(nganyaywana) => [
- q(5113),
+ q(5151),
q(0),
],
q(ngarinman) => [
- q(4701),
+ q(4729),
q(0),
],
q(ngarinyin) => [
- q(6831),
+ q(6882),
q(0),
],
q(ngarla) => [
- q(4908),
+ q(4937),
q(0),
],
q(ngarluma) => [
- q(5003),
+ q(5035),
q(0),
],
q(ngas) => [
- q(0792),
+ q(0794),
q(0),
],
q(ngasa) => [
- q(5016),
+ q(5049),
q(0),
],
q(ngatik men's creole) => [
- q(4799),
+ q(4828),
q(0),
],
q(ngawn chin) => [
- q(1800),
+ q(1807),
q(0),
],
q(ngawun) => [
- q(5089),
+ q(5127),
+ q(0),
+ ],
+ q(ngayawung) => [
+ q(5112),
q(0),
],
q(ngazidja comorian) => [
- q(7680),
+ q(7746),
q(0),
],
q(ngbaka) => [
- q(4788),
+ q(4817),
q(0),
],
q(ngbaka ma'bo) => [
- q(4703),
+ q(4731),
q(0),
],
q(ngbaka manza) => [
- q(4793),
+ q(4822),
q(0),
],
q(ngbee) => [
- q(3038),
+ q(3064),
q(0),
],
q(ngbinda) => [
- q(4696),
+ q(4724),
q(0),
],
q(ngbundu) => [
- q(5066),
+ q(5100),
q(0),
],
q(ngelima) => [
- q(0660),
+ q(0661),
q(0),
],
q(ngemba) => [
- q(4792),
+ q(4821),
q(0),
],
q(ngeq) => [
- q(4806),
+ q(4835),
q(0),
],
q(ngete) => [
- q(4953),
+ q(4982),
q(0),
],
q(nggem) => [
- q(4707),
+ q(4735),
q(0),
],
q(nggwahyi) => [
- q(4810),
+ q(4839),
q(0),
],
q(ngie) => [
- q(4796),
+ q(4825),
q(0),
],
q(ngiemboon) => [
- q(4947),
+ q(4976),
q(0),
],
q(ngile) => [
- q(3061),
+ q(3092),
q(0),
],
q(ngindo) => [
- q(4955),
+ q(4984),
q(0),
],
q(ngiti) => [
- q(4856),
+ q(4885),
q(0),
],
q(ngizim) => [
- q(4795),
+ q(4824),
q(0),
],
q(ngkalmpw kanum) => [
- q(3157),
+ q(3190),
q(0),
],
q(ngom) => [
- q(4997),
+ q(5029),
q(0),
],
q(ngomba) => [
- q(3040),
+ q(3067),
q(0),
],
q(ngombale) => [
- q(4898),
+ q(4928),
q(0),
],
q(ngombe (central african republic)) => [
- q(4923),
+ q(4952),
q(0),
],
q(ngombe (democratic republic of congo)) => [
- q(4790),
+ q(4819),
q(0),
],
q(ngong) => [
- q(4962),
+ q(4991),
q(0),
],
q(ngongo) => [
- q(4976),
+ q(5005),
q(0),
],
q(ngoni) => [
- q(4801),
+ q(4830),
q(0),
],
q(ngoreme) => [
- q(4803),
+ q(4832),
q(0),
],
q(ngoshie) => [
- q(5017),
+ q(5050),
q(0),
],
q(ngul) => [
- q(4907),
+ q(4936),
q(0),
],
q(ngulu) => [
- q(4802),
+ q(4831),
q(0),
],
q(nguluwan) => [
- q(5068),
+ q(5102),
q(0),
],
q(ngumbi) => [
- q(5054),
+ q(5088),
q(0),
],
q(ngundi) => [
- q(4750),
+ q(4778),
q(0),
],
q(ngundu) => [
- q(5050),
+ q(5084),
q(0),
],
q(ngungwel) => [
- q(4812),
+ q(4841),
q(0),
],
q(nguon) => [
- q(5060),
+ q(5094),
q(0),
],
q(ngura) => [
- q(4714),
+ q(4742),
q(0),
],
q(ngurimi) => [
- q(4803),
+ q(4832),
q(0),
],
q(ngurmbur) => [
- q(5010),
+ q(5042),
q(0),
],
q(ngwaba) => [
- q(4809),
+ q(4838),
q(0),
],
q(ngwe) => [
- q(5076),
+ q(5111),
q(0),
],
q(ngwo) => [
- q(4800),
+ q(4829),
q(0),
],
q(nhanda) => [
- q(4813),
+ q(4842),
q(0),
],
q(nhengatu) => [
- q(7597),
+ q(7660),
q(0),
],
q(nhuwala) => [
- q(4818),
+ q(4847),
q(0),
],
q(nias) => [
@@ -43965,19 +44434,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(nicaragua creole english) => [
- q(1619),
+ q(1625),
q(0),
],
q(nicaraguan sign language) => [
- q(4733),
+ q(4761),
q(0),
],
q(nicarao) => [
- q(5510),
+ q(5550),
q(0),
],
q(niellim) => [
- q(4838),
+ q(4867),
q(0),
],
q(niger-kordofanian languages) => [
@@ -43985,43 +44454,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(nigeria mambila) => [
- q(4656),
+ q(4684),
q(0),
],
q(nigerian fulfulde) => [
- q(2364),
+ q(2384),
q(0),
],
q(nigerian pidgin) => [
- q(5329),
+ q(5368),
q(0),
],
q(nigerian sign language) => [
- q(5018),
+ q(5051),
q(0),
],
q(nihali) => [
- q(4905),
+ q(4935),
q(0),
],
q(nii) => [
- q(4842),
+ q(4871),
q(0),
],
q(nijadali) => [
- q(4675),
+ q(4703),
q(0),
],
q(niksek) => [
- q(2395),
+ q(2414),
q(0),
],
q(nila) => [
- q(4845),
+ q(4874),
q(0),
],
q(nilamba) => [
- q(4846),
+ q(4875),
q(0),
],
q(nilo-saharan languages) => [
@@ -44029,99 +44498,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(nimadi) => [
- q(4968),
+ q(4997),
q(0),
],
q(nimanbur) => [
- q(4929),
+ q(4958),
q(0),
],
q(nimbari) => [
- q(4931),
+ q(4960),
q(0),
],
q(nimboran) => [
- q(4850),
+ q(4879),
q(0),
],
q(nimi) => [
- q(4851),
+ q(4880),
q(0),
],
q(nimo) => [
- q(4854),
+ q(4883),
q(0),
],
q(nimoa) => [
- q(4936),
+ q(4965),
q(0),
],
q(ninam) => [
- q(5938),
+ q(5983),
q(0),
],
q(ninde) => [
- q(4583),
+ q(4611),
q(0),
],
q(nindi) => [
- q(5086),
+ q(5123),
q(0),
],
q(ningera) => [
- q(4715),
+ q(4743),
q(0),
],
q(ninggerum) => [
- q(5091),
+ q(5129),
q(0),
],
q(ningil) => [
- q(4857),
+ q(4886),
q(0),
],
q(ningye) => [
- q(4957),
+ q(4986),
q(0),
],
q(ninia yali) => [
- q(4904),
+ q(4934),
q(0),
],
q(ninzo) => [
- q(4847),
+ q(4876),
q(0),
],
q(nipsan) => [
- q(4990),
+ q(5021),
q(0),
],
q(nisa) => [
- q(4869),
+ q(4898),
q(0),
],
q(nisenan) => [
- q(5033),
+ q(5066),
q(0),
],
q(nisga'a) => [
- q(4722),
+ q(4750),
q(0),
],
q(nisi (china)) => [
- q(7605),
- q(0),
- ],
- q(nisi (india)) => [
- q(1939),
+ q(7669),
q(0),
],
q(niuafo'ou) => [
- q(5058),
+ q(5092),
q(0),
],
q(niuatoputapu) => [
- q(4888),
+ q(4918),
q(0),
],
q(niuean) => [
@@ -44129,95 +44594,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(nivacle) => [
- q(1640),
+ q(1646),
q(0),
],
q(njalgulgule) => [
- q(4864),
+ q(4893),
q(0),
],
q(njebi) => [
- q(5116),
+ q(5154),
q(0),
],
q(njen) => [
- q(4863),
+ q(4892),
q(0),
],
q(njerep) => [
- q(4868),
+ q(4897),
q(0),
],
q(njyem) => [
- q(4873),
+ q(4902),
q(0),
],
q(nkami) => [
- q(4889),
+ q(4919),
q(0),
],
q(nkangala) => [
- q(4886),
+ q(4916),
q(0),
],
q(nkari) => [
- q(4897),
+ q(4927),
q(0),
],
q(nkem-nkum) => [
- q(2958),
+ q(2982),
q(0),
],
q(nkhumbi) => [
- q(3296),
+ q(3327),
q(0),
],
q(nkongho) => [
- q(4876),
+ q(4906),
q(0),
],
q(nkonya) => [
- q(4887),
+ q(4917),
q(0),
],
q(nkoroo) => [
- q(4896),
+ q(4926),
q(0),
],
q(nkoya) => [
- q(4874),
+ q(4904),
q(0),
],
q(nkukoli) => [
- q(4705),
+ q(4733),
q(0),
],
q(nkutu) => [
- q(4895),
+ q(4925),
q(0),
],
q(nnam) => [
- q(4706),
+ q(4734),
q(0),
],
q(no linguistic content) => [
- q(0484),
+ q(0485),
q(0),
],
q(nobiin) => [
- q(2317),
+ q(2336),
q(0),
],
q(nobonob) => [
- q(2389),
+ q(2409),
q(0),
],
q(nocaman) => [
- q(4974),
+ q(5003),
q(0),
],
q(nocte naga) => [
- q(4859),
+ q(4888),
q(0),
],
q(nogai) => [
@@ -44225,63 +44690,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(noiri) => [
- q(4971),
+ q(5000),
q(0),
],
q(nokuku) => [
- q(4884),
+ q(4914),
q(0),
],
q(nomaande) => [
- q(3822),
+ q(3850),
q(0),
],
q(nomane) => [
- q(4969),
+ q(4998),
q(0),
],
q(nomatsiguenga) => [
- q(4978),
+ q(5007),
q(0),
],
q(nomu) => [
- q(4970),
+ q(4999),
q(0),
],
q(nong zhuang) => [
- q(7692),
+ q(7758),
q(0),
],
q(nonuya) => [
- q(4972),
+ q(5001),
q(0),
],
q(nooksack) => [
- q(4973),
+ q(5002),
q(0),
],
q(noon) => [
- q(6065),
+ q(6110),
q(0),
],
q(noone) => [
- q(4830),
+ q(4859),
q(0),
],
q(nopala chatino) => [
- q(1919),
+ q(1928),
q(0),
],
q(noric) => [
- q(4999),
+ q(5031),
q(0),
],
q(norn) => [
- q(5005),
+ q(5037),
q(0),
],
q(norra) => [
- q(5007),
+ q(5039),
q(0),
],
q(norse, old) => [
@@ -44289,11 +44754,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(north alaskan inupiatun) => [
- q(2267),
+ q(2286),
q(0),
],
q(north ambrym) => [
- q(4345),
+ q(4373),
q(0),
],
q(north american indian languages) => [
@@ -44301,75 +44766,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(north asmat) => [
- q(4891),
+ q(4921),
q(0),
],
q(north awyu) => [
- q(7512),
+ q(7572),
q(0),
],
q(north azerbaijani) => [
- q(1010),
+ q(1017),
q(0),
],
q(north babar) => [
- q(1061),
+ q(1068),
q(0),
],
q(north bolivian quechua) => [
- q(5622),
+ q(5662),
q(0),
],
q(north caucasian languages) => [
- q(0494),
+ q(0495),
q(0),
],
q(north central mixe) => [
- q(4775),
+ q(4803),
q(0),
],
q(north efate) => [
- q(3917),
+ q(3946),
q(0),
],
q(north fali) => [
- q(2327),
+ q(2347),
q(0),
],
q(north germanic languages) => [
- q(0505),
+ q(0506),
q(0),
],
q(north giziga) => [
- q(2494),
+ q(2514),
q(0),
],
q(north junin quechua) => [
- q(5642),
+ q(5682),
q(0),
],
q(north levantine arabic) => [
- q(0834),
+ q(0837),
q(0),
],
q(north marquesan) => [
- q(4471),
+ q(4499),
q(0),
],
q(north mesopotamian arabic) => [
- q(0999),
+ q(1005),
q(0),
],
q(north mofu) => [
- q(4181),
+ q(4210),
q(0),
],
q(north moluccan malay) => [
- q(4071),
+ q(4100),
q(0),
],
q(north muyu) => [
- q(3576),
+ q(3606),
q(0),
],
q(north ndebele) => [
@@ -44377,115 +44842,111 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(north nuaulu) => [
- q(4948),
+ q(4977),
q(0),
],
q(north picene) => [
- q(5006),
+ q(5038),
q(0),
],
q(north slavey) => [
- q(5866),
+ q(5909),
q(0),
],
q(north tairora) => [
- q(6307),
+ q(6354),
q(0),
],
q(north tanna) => [
- q(6541),
+ q(6590),
q(0),
],
q(north wahgi) => [
- q(7035),
+ q(7086),
q(0),
],
q(north watut) => [
- q(6829),
- q(0),
- ],
- q(north wemale) => [
- q(7020),
+ q(6880),
q(0),
],
q(northeast kiwai) => [
- q(3321),
+ q(3352),
q(0),
],
q(northeast maidu) => [
- q(4934),
+ q(4963),
q(0),
],
q(northeast pashayi) => [
- q(0628),
+ q(0629),
q(0),
],
q(northeastern dinka) => [
- q(2031),
+ q(2046),
q(0),
],
q(northeastern pomo) => [
- q(5345),
+ q(5384),
q(0),
],
q(northeastern thai) => [
- q(6673),
+ q(6722),
q(0),
],
q(northern alta) => [
- q(0862),
+ q(0865),
q(0),
],
q(northern altai) => [
- q(0926),
+ q(0929),
q(0),
],
q(northern amami-oshima) => [
- q(5809),
+ q(5853),
q(0),
],
q(northern bai) => [
- q(1132),
+ q(1139),
q(0),
],
q(northern betsimisaraka malagasy) => [
- q(1309),
+ q(1315),
q(0),
],
q(northern binukidnon) => [
- q(3705),
+ q(3735),
q(0),
],
q(northern bobo madare) => [
- q(1046),
+ q(1053),
q(0),
],
q(northern bontok) => [
- q(5693),
+ q(5733),
q(0),
],
- q(northern catanduanes bicolano) => [
- q(1888),
+ q(northern catanduanes bikol) => [
+ q(1897),
q(0),
],
q(northern conchucos ancash quechua) => [
- q(5659),
+ q(5699),
q(0),
],
q(northern dagara) => [
- q(1998),
+ q(2010),
q(0),
],
q(northern dong) => [
- q(2093),
+ q(2111),
q(0),
],
q(northern east cree) => [
- q(1845),
+ q(1852),
q(0),
],
q(northern embera) => [
- q(2234),
+ q(2253),
q(0),
],
q(northern frisian) => [
@@ -44493,151 +44954,147 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(northern ghale) => [
- q(2475),
+ q(2496),
q(0),
],
q(northern gondi) => [
- q(2541),
+ q(2563),
q(0),
],
q(northern grebo) => [
- q(2405),
+ q(2424),
q(0),
],
q(northern guiyang hmong) => [
- q(2818),
+ q(2842),
q(0),
],
q(northern guiyang miao) => [
- q(2818),
+ q(2842),
q(0),
],
q(northern haida) => [
- q(2699),
+ q(2724),
q(0),
],
q(northern hindko) => [
- q(2767),
+ q(2792),
q(0),
],
q(northern huishui hmong) => [
- q(2745),
+ q(2770),
q(0),
],
q(northern huishui miao) => [
- q(2745),
+ q(2770),
q(0),
],
q(northern kalapuya) => [
- q(5008),
+ q(5040),
q(0),
],
q(northern kankanay) => [
- q(7321),
+ q(7377),
q(0),
],
q(northern khmer) => [
- q(3678),
+ q(3708),
q(0),
],
q(northern kissi) => [
- q(3514),
+ q(3544),
q(0),
],
q(northern kurdish) => [
- q(3417),
- q(0),
- ],
- q(northern lorung) => [
- q(3778),
+ q(3448),
q(0),
],
q(northern luri) => [
- q(3989),
+ q(4018),
q(0),
],
q(northern mashan hmong) => [
- q(2750),
+ q(2775),
q(0),
],
q(northern mashan miao) => [
- q(2750),
+ q(2775),
q(0),
],
q(northern muji) => [
- q(7560),
+ q(7621),
q(0),
],
q(northern nago) => [
- q(7255),
+ q(7311),
q(0),
],
q(northern ngbandi) => [
- q(4789),
+ q(4818),
q(0),
],
q(northern nisu) => [
- q(7516),
+ q(7576),
q(0),
],
q(northern nuni) => [
- q(5067),
+ q(5101),
q(0),
],
q(northern oaxaca nahuatl) => [
- q(4834),
+ q(4863),
q(0),
],
q(northern ohlone) => [
- q(1874),
+ q(1881),
q(0),
],
q(northern one) => [
- q(5212),
+ q(5251),
q(0),
],
q(northern paiute) => [
- q(5289),
+ q(5329),
q(0),
],
q(northern pame) => [
- q(5458),
+ q(5497),
q(0),
],
q(northern pashto) => [
- q(5313),
+ q(5353),
q(0),
],
q(northern pastaza quichua) => [
- q(5648),
+ q(5688),
q(0),
],
q(northern pomo) => [
- q(5349),
+ q(5388),
q(0),
],
q(northern puebla nahuatl) => [
- q(4725),
+ q(4753),
q(0),
],
q(northern pumi) => [
- q(5451),
+ q(5490),
q(0),
],
q(northern qiandong miao) => [
- q(2702),
+ q(2727),
q(0),
],
q(northern qiang) => [
- q(1791),
+ q(1798),
q(0),
],
q(northern rengma naga) => [
- q(4951),
+ q(4980),
q(0),
],
q(northern roglai) => [
- q(5773),
+ q(5815),
q(0),
],
q(northern sami) => [
@@ -44645,11 +45102,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(northern sierra miwok) => [
- q(5024),
+ q(5057),
q(0),
],
q(northern sorsoganon) => [
- q(1265),
+ q(1271),
q(0),
],
q(northern sotho) => [
@@ -44657,87 +45114,91 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(northern subanen) => [
- q(6179),
+ q(6226),
q(0),
],
q(northern tarahumara) => [
- q(6421),
+ q(6470),
q(0),
],
q(northern tepehuan) => [
- q(5040),
+ q(5073),
q(0),
],
q(northern thai) => [
- q(4967),
+ q(4996),
q(0),
],
q(northern tiwa) => [
- q(6716),
+ q(6766),
q(0),
],
q(northern tlaxiaco mixtec) => [
- q(7392),
+ q(7450),
q(0),
],
q(northern toussian) => [
- q(6644),
+ q(6693),
q(0),
],
q(northern tujia) => [
- q(6461),
+ q(6510),
q(0),
],
q(northern tutchone) => [
- q(6667),
+ q(6716),
q(0),
],
q(northern uzbek) => [
- q(6883),
+ q(6933),
q(0),
],
q(northern yukaghir) => [
- q(7521),
+ q(7581),
q(0),
],
q(northwest alaska inupiatun) => [
- q(2268),
+ q(2287),
q(0),
],
q(northwest gbaya) => [
- q(2655),
+ q(2680),
q(0),
],
q(northwest maidu) => [
- q(4270),
+ q(4298),
q(0),
],
q(northwest oaxaca mixtec) => [
- q(4599),
+ q(4627),
q(0),
],
q(northwest pashayi) => [
- q(2510),
+ q(2532),
q(0),
],
q(northwestern dinka) => [
- q(2037),
+ q(2052),
q(0),
],
q(northwestern fars) => [
- q(2310),
+ q(2329),
q(0),
],
q(northwestern kolami) => [
- q(3230),
+ q(3262),
+ q(0),
+ ],
+ q(northwestern nisu) => [
+ q(5048),
q(0),
],
q(northwestern ojibwa) => [
- q(5156),
+ q(5194),
q(0),
],
q(northwestern tamang) => [
- q(6515),
+ q(6564),
q(0),
],
q(norwegian) => [
@@ -44753,67 +45214,67 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(norwegian sign language) => [
- q(5020),
+ q(5053),
q(0),
],
q(not applicable) => [
- q(0484),
+ q(0485),
q(0),
],
q(notre) => [
- q(1295),
+ q(1301),
q(0),
],
q(notsi) => [
- q(4721),
+ q(4749),
q(0),
],
q(nottoway) => [
- q(5044),
+ q(5077),
q(0),
],
q(nottoway-meherrin) => [
- q(5081),
+ q(5118),
q(0),
],
q(novial) => [
- q(4980),
+ q(5009),
q(0),
],
q(noy) => [
- q(4982),
+ q(5011),
q(0),
],
q(nsari) => [
- q(0892),
+ q(0895),
q(0),
],
q(nsenga) => [
- q(5015),
+ q(5047),
q(0),
],
q(nshi) => [
- q(5013),
+ q(5045),
q(0),
],
q(nsongo) => [
- q(5031),
+ q(5064),
q(0),
],
q(ntcham) => [
- q(1492),
+ q(1498),
q(0),
],
q(ntomba) => [
- q(5039),
+ q(5072),
q(0),
],
q(nubaca) => [
- q(1019),
+ q(1027),
q(0),
],
q(nubi) => [
- q(3167),
+ q(3200),
q(0),
],
q(nubian languages) => [
@@ -44821,87 +45282,87 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(nubri) => [
- q(3572),
+ q(3602),
q(0),
],
q(nuer) => [
- q(5064),
+ q(5098),
q(0),
],
q(nugunu (australia)) => [
- q(4960),
+ q(4989),
q(0),
],
q(nugunu (cameroon)) => [
- q(7449),
+ q(7510),
q(0),
],
q(nuk) => [
- q(4966),
+ q(4995),
q(0),
],
q(nukak maku) => [
- q(4089),
+ q(4118),
q(0),
],
q(nukna) => [
- q(3394),
+ q(3425),
q(0),
],
q(nukuini) => [
- q(5048),
+ q(5082),
q(0),
],
q(nukumanu) => [
- q(5062),
+ q(5096),
q(0),
],
q(nukuoro) => [
- q(4890),
+ q(4920),
q(0),
],
q(nukuria) => [
- q(5063),
+ q(5097),
q(0),
],
q(numana-nunku-gbantu-numbu) => [
- q(4708),
+ q(4736),
q(0),
],
q(numanggang) => [
- q(4975),
+ q(5004),
q(0),
],
q(numbami) => [
- q(5968),
+ q(6013),
q(0),
],
q(nume) => [
- q(6410),
+ q(6458),
q(0),
],
q(numee) => [
- q(3189),
+ q(3222),
q(0),
],
q(numidian) => [
- q(5088),
+ q(5126),
q(0),
],
q(nung (viet nam)) => [
- q(5065),
+ q(5099),
q(0),
],
q(nungali) => [
- q(5052),
+ q(5086),
q(0),
],
q(nunggubuyu) => [
- q(5070),
+ q(5104),
q(0),
],
q(nungu) => [
- q(5724),
+ q(5765),
q(0),
],
q(nuosu) => [
@@ -44909,75 +45370,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(nupbikha) => [
- q(4985),
+ q(5014),
q(0),
],
q(nupe-nupe-tako) => [
- q(5061),
+ q(5095),
q(0),
],
q(nupode huitoto) => [
- q(2830),
+ q(2854),
q(0),
],
q(nusa laut) => [
- q(5057),
+ q(5091),
q(0),
],
q(nusu) => [
- q(5051),
+ q(5085),
q(0),
],
q(nuu-chah-nulth) => [
- q(5056),
+ q(5090),
q(0),
],
q(nuuchahnulth) => [
- q(5056),
+ q(5090),
q(0),
],
q(nyabwa) => [
- q(5075),
+ q(5110),
q(0),
],
q(nyaheun) => [
- q(4779),
+ q(4808),
q(0),
],
q(nyahkur) => [
- q(1666),
+ q(1672),
q(0),
],
q(nyakyusa-ngonde) => [
- q(5114),
+ q(5152),
q(0),
],
q(nyalayu) => [
- q(7541),
+ q(7603),
q(0),
],
q(nyali) => [
- q(4903),
+ q(4933),
q(0),
],
q(nyam) => [
- q(4922),
+ q(4951),
q(0),
],
q(nyamal) => [
- q(4912),
+ q(4941),
q(0),
],
q(nyambo) => [
- q(4981),
+ q(5010),
q(0),
],
q(nyamusa-molo) => [
- q(5078),
+ q(5114),
q(0),
],
q(nyamwanga) => [
- q(4587),
+ q(4615),
q(0),
],
q(nyamwezi) => [
@@ -44985,35 +45446,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(nyaneka) => [
- q(5103),
+ q(5141),
q(0),
],
q(nyang'i) => [
- q(5105),
+ q(5143),
q(0),
],
q(nyanga) => [
- q(5102),
+ q(5140),
q(0),
],
q(nyanga-li) => [
- q(5095),
+ q(5133),
q(0),
],
q(nyangatom) => [
- q(4949),
+ q(4978),
q(0),
],
q(nyangbo) => [
- q(5094),
+ q(5132),
q(0),
],
q(nyangga) => [
- q(4963),
+ q(4992),
q(0),
],
q(nyangumarta) => [
- q(4940),
+ q(4969),
q(0),
],
q(nyanja) => [
@@ -45024,80 +45485,92 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0323),
q(0),
],
+ q(nyankpa) => [
+ q(7547),
+ q(0),
+ ],
q(nyarafolo senoufo) => [
- q(5910),
+ q(5953),
q(0),
],
q(nyaturu) => [
- q(5723),
+ q(5764),
q(0),
],
q(nyaw) => [
- q(5112),
+ q(5150),
q(0),
],
q(nyawaygi) => [
- q(5109),
+ q(5147),
q(0),
],
q(nyemba) => [
- q(4693),
+ q(4721),
q(0),
],
q(nyengo) => [
- q(5097),
+ q(5135),
q(0),
],
q(nyenkha) => [
- q(4768),
+ q(4796),
q(0),
],
q(nyeu) => [
- q(5104),
+ q(5142),
q(0),
],
q(nyigina) => [
- q(5100),
+ q(5138),
q(0),
],
q(nyiha (malawi)) => [
- q(5107),
+ q(5145),
q(0),
],
q(nyiha (tanzania)) => [
- q(4841),
+ q(4870),
q(0),
],
q(nyika (malawi and zambia)) => [
- q(4894),
+ q(4924),
q(0),
],
q(nyika (tanzania)) => [
- q(4892),
+ q(4922),
q(0),
],
q(nyindrou) => [
- q(3864),
+ q(3892),
q(0),
],
q(nyindu) => [
- q(5099),
+ q(5137),
+ q(0),
+ ],
+ q(nyishi) => [
+ q(4903),
q(0),
],
q(nynorsk, norwegian) => [
q(0312),
q(0),
],
+ q(nyokon) => [
+ q(5108),
+ q(0),
+ ],
q(nyole) => [
- q(5055),
+ q(5089),
q(0),
],
q(nyong) => [
- q(4541),
+ q(4569),
q(0),
],
q(nyore) => [
- q(5096),
+ q(5134),
q(0),
],
q(nyoro) => [
@@ -45105,27 +45578,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(nyulnyul) => [
- q(5111),
+ q(5149),
q(0),
],
q(nyunga) => [
- q(5108),
+ q(5146),
q(0),
],
q(nyungwe) => [
- q(5110),
+ q(5148),
q(0),
],
q(nzakambay) => [
- q(5121),
+ q(5159),
q(0),
],
q(nzakara) => [
- q(5117),
+ q(5155),
q(0),
],
q(nzanyi) => [
- q(4858),
+ q(4887),
q(0),
],
q(nzima) => [
@@ -45133,43 +45606,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(o'chi'chi') => [
- q(7326),
+ q(7383),
q(0),
],
q(o'du) => [
- q(6750),
+ q(6800),
q(0),
],
q(obanliku) => [
- q(1633),
+ q(1639),
q(0),
],
q(obispeno) => [
- q(5127),
+ q(5165),
q(0),
],
q(oblo) => [
- q(5129),
+ q(5167),
q(0),
],
q(obo manobo) => [
- q(5131),
+ q(5169),
q(0),
],
q(obokuitai) => [
- q(0652),
+ q(0653),
q(0),
],
q(obolo) => [
- q(0802),
+ q(0804),
q(0),
],
q(obulom) => [
- q(5134),
+ q(5172),
q(0),
],
q(ocaina) => [
- q(5135),
+ q(5173),
q(0),
],
q(occidental) => [
@@ -45181,35 +45654,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ocotepec mixtec) => [
- q(4250),
+ q(4278),
q(0),
],
q(ocotlan zapotec) => [
- q(7652),
+ q(7718),
q(0),
],
q(od) => [
- q(5140),
+ q(5178),
q(0),
],
q(odiai) => [
- q(1185),
+ q(1192),
q(0),
],
q(odoodee) => [
- q(3351),
+ q(3382),
q(0),
],
q(odual) => [
- q(5142),
+ q(5180),
q(0),
],
q(odut) => [
- q(5139),
+ q(5177),
q(0),
],
q(ofaye) => [
- q(5228),
+ q(5267),
q(0),
],
q(official aramaic (700-300 bce)) => [
@@ -45217,27 +45690,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ofo) => [
- q(5143),
+ q(5181),
q(0),
],
q(ogbah) => [
- q(5147),
+ q(5185),
q(0),
],
q(ogbia) => [
- q(5146),
+ q(5184),
q(0),
],
q(ogbogolo) => [
- q(5149),
+ q(5187),
q(0),
],
q(ogbronuagum) => [
- q(5151),
+ q(5189),
q(0),
],
q(ogea) => [
- q(2258),
+ q(2277),
q(0),
],
q(oirat) => [
@@ -45245,7 +45718,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(oirata) => [
- q(5154),
+ q(5192),
q(0),
],
q(ojibwa) => [
@@ -45253,71 +45726,71 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ojitlan chinantec) => [
- q(1718),
+ q(1724),
q(0),
],
q(okanagan) => [
- q(5163),
+ q(5201),
q(0),
],
q(oki-no-erabu) => [
- q(5173),
+ q(5212),
q(0),
],
q(okiek) => [
- q(5168),
+ q(5207),
q(0),
],
q(oko-eni-osayen) => [
- q(5176),
+ q(5215),
q(0),
],
q(oko-juwoi) => [
- q(5169),
+ q(5208),
q(0),
],
q(okobo) => [
- q(5164),
+ q(5202),
q(0),
],
q(okodia) => [
- q(5165),
+ q(5203),
q(0),
],
q(okolod) => [
- q(3517),
+ q(3547),
q(0),
],
q(okpamheri) => [
- q(5223),
+ q(5262),
q(0),
],
q(okpe (northwestern edo)) => [
- q(5179),
+ q(5218),
q(0),
],
q(okpe (southwestern edo)) => [
- q(5166),
+ q(5204),
q(0),
],
q(oksapmin) => [
- q(5225),
+ q(5264),
q(0),
],
q(oku) => [
- q(5177),
+ q(5216),
q(0),
],
q(old aramaic (up to 700 bce)) => [
- q(5125),
+ q(5163),
q(0),
],
q(old avar) => [
- q(5126),
+ q(5164),
q(0),
],
q(old breton) => [
- q(5133),
+ q(5171),
q(0),
],
q(old bulgarian) => [
@@ -45325,11 +45798,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(old burmese) => [
- q(5132),
+ q(5170),
q(0),
],
q(old chinese) => [
- q(5136),
+ q(5174),
q(0),
],
q(old church slavonic) => [
@@ -45337,11 +45810,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(old cornish) => [
- q(5137),
+ q(5175),
q(0),
],
q(old dutch) => [
- q(5141),
+ q(5179),
q(0),
],
q(old english (ca. 450-1100)) => [
@@ -45353,11 +45826,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(old frisian) => [
- q(5144),
+ q(5182),
q(0),
],
q(old georgian) => [
- q(5148),
+ q(5186),
q(0),
],
q(old high german (ca. 750-1050)) => [
@@ -45365,11 +45838,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(old hittite) => [
- q(5152),
+ q(5190),
q(0),
],
q(old hungarian) => [
- q(5153),
+ q(5191),
q(0),
],
q(old irish (to 900)) => [
@@ -45377,27 +45850,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(old japanese) => [
- q(5159),
+ q(5197),
q(0),
],
q(old kentish sign language) => [
- q(5171),
+ q(5210),
q(0),
],
q(old korean (3rd-9th cent.)) => [
- q(5174),
+ q(5213),
q(0),
],
q(old manipuri) => [
- q(5196),
+ q(5235),
q(0),
],
q(old marathi) => [
- q(5197),
+ q(5236),
q(0),
],
q(old mon) => [
- q(5201),
+ q(5240),
q(0),
],
q(old newari) => [
@@ -45409,7 +45882,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(old nubian) => [
- q(5216),
+ q(5255),
q(0),
],
q(old occitan (to 1500)) => [
@@ -45417,7 +45890,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(2),
],
q(old ossetic) => [
- q(5222),
+ q(5261),
q(0),
],
q(old persian (ca. 600-400 b.c.)) => [
@@ -45429,11 +45902,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(old russian) => [
- q(5240),
+ q(5279),
q(0),
],
q(old saxon) => [
- q(5250),
+ q(5290),
q(0),
],
q(old slavonic) => [
@@ -45441,287 +45914,291 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(old spanish) => [
- q(5247),
+ q(5287),
q(0),
],
q(old tamil) => [
- q(5266),
+ q(5306),
q(0),
],
q(old tibetan) => [
- q(5251),
+ q(5291),
q(0),
],
q(old turkish) => [
- q(5255),
+ q(5295),
q(0),
],
q(old uighur) => [
- q(5271),
+ q(5311),
q(0),
],
q(old welsh) => [
- q(5275),
+ q(5315),
q(0),
],
q(olekha) => [
- q(5182),
+ q(5221),
q(0),
],
q(olo) => [
- q(5205),
+ q(5244),
q(0),
],
q(oloma) => [
- q(5183),
+ q(5222),
q(0),
],
q(olrat) => [
- q(5185),
+ q(5224),
q(0),
],
q(olu'bo) => [
- q(4029),
+ q(4058),
q(0),
],
q(olukhayo) => [
- q(3898),
+ q(3926),
q(0),
],
q(olulumo-ikom) => [
- q(2900),
+ q(2924),
q(0),
],
q(oluluyia) => [
- q(4038),
+ q(4067),
q(0),
],
q(olumarachi) => [
- q(3992),
+ q(4021),
q(0),
],
q(olumarama) => [
- q(3995),
+ q(4024),
q(0),
],
q(olunyole) => [
- q(5096),
+ q(5134),
q(0),
],
q(olusamia) => [
- q(4009),
+ q(4038),
q(0),
],
q(olushisa) => [
- q(3900),
+ q(3928),
q(0),
],
q(oluta popoluca) => [
- q(5434),
+ q(5472),
q(0),
],
q(olutsotso) => [
- q(4020),
+ q(4049),
q(0),
],
q(oluwanga) => [
- q(4046),
+ q(4075),
q(0),
],
q(omagua) => [
- q(5190),
+ q(5229),
q(0),
],
q(omaha-ponca) => [
- q(5186),
+ q(5225),
q(0),
],
q(omani arabic) => [
- q(0601),
- q(0),
- ],
- q(omati) => [
- q(4219),
+ q(0602),
q(0),
],
q(ombamba) => [
- q(4084),
+ q(4113),
q(0),
],
q(ombo) => [
- q(5193),
+ q(5232),
q(0),
],
q(omejes) => [
- q(5189),
+ q(5228),
q(0),
],
q(ometepec nahuatl) => [
- q(4829),
+ q(4858),
q(0),
],
q(omi) => [
- q(5191),
+ q(5230),
q(0),
],
q(omie) => [
- q(0826),
+ q(0828),
q(0),
],
q(omok) => [
- q(5192),
+ q(5231),
q(0),
],
q(omotic languages) => [
- q(0517),
+ q(0518),
q(0),
],
q(omotik) => [
- q(5198),
+ q(5237),
q(0),
],
q(omurano) => [
- q(5199),
+ q(5238),
q(0),
],
q(ona) => [
- q(5202),
+ q(5241),
q(0),
],
q(oneida) => [
- q(5204),
+ q(5243),
q(0),
],
q(ong) => [
- q(5219),
+ q(5258),
q(0),
],
q(onge) => [
- q(5220),
+ q(5259),
q(0),
],
q(onin) => [
- q(5206),
+ q(5245),
q(0),
],
q(onin based pidgin) => [
- q(5217),
+ q(5256),
q(0),
],
q(oniyan) => [
- q(1444),
+ q(1450),
q(0),
],
q(onjob) => [
- q(5207),
+ q(5246),
q(0),
],
q(ono) => [
- q(5213),
+ q(5252),
q(0),
],
q(onobasulu) => [
- q(5209),
+ q(5248),
q(0),
],
q(onondaga) => [
- q(5210),
+ q(5249),
q(0),
],
q(ontenu) => [
- q(5214),
+ q(5253),
q(0),
],
q(ontong java) => [
- q(5161),
+ q(5199),
q(0),
],
q(oorlams) => [
- q(5221),
+ q(5260),
q(0),
],
q(opao) => [
- q(5226),
+ q(5265),
q(0),
],
q(opata) => [
- q(5227),
+ q(5266),
q(0),
],
q(opuuo) => [
- q(3845),
+ q(3873),
q(0),
],
q(orang kanaq) => [
- q(5234),
+ q(5273),
q(0),
],
q(orang seletar) => [
- q(5237),
+ q(5276),
q(0),
],
q(oraon sadri) => [
- q(5885),
+ q(5928),
q(0),
],
q(orejon) => [
- q(5231),
+ q(5270),
q(0),
],
q(oring) => [
- q(5232),
+ q(5271),
q(0),
],
q(oriya) => [
q(0328),
q(0),
],
+ q(oriya (individual language)) => [
+ q(5282),
+ q(0),
+ ],
+ q(oriya (macrolanguage)) => [
+ q(0328),
+ q(1),
+ ],
q(orizaba nahuatl) => [
- q(4910),
+ q(4939),
q(0),
],
q(orma) => [
- q(5230),
+ q(5269),
q(0),
],
q(ormu) => [
- q(5243),
+ q(5283),
q(0),
],
q(ormuri) => [
- q(5239),
+ q(5278),
q(0),
],
q(oro) => [
- q(5242),
+ q(5281),
q(0),
],
q(oro win) => [
- q(5241),
+ q(5280),
q(0),
],
q(oroch) => [
- q(5124),
+ q(5162),
q(0),
],
q(oroha) => [
- q(5229),
+ q(5268),
q(0),
],
q(orok) => [
- q(5123),
+ q(5161),
q(0),
],
q(orokaiva) => [
- q(5178),
+ q(5217),
q(0),
],
q(oroko) => [
- q(1103),
+ q(1110),
q(0),
],
q(orokolo) => [
- q(5235),
+ q(5274),
q(0),
],
q(oromo) => [
@@ -45729,19 +46206,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(oroqen) => [
- q(5233),
+ q(5272),
q(0),
],
q(orowe) => [
- q(1377),
+ q(1383),
q(0),
],
q(oruma) => [
- q(5236),
+ q(5275),
q(0),
],
q(orya) => [
- q(6861),
+ q(6911),
q(0),
],
q(osage) => [
@@ -45749,19 +46226,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(osatu) => [
- q(5248),
+ q(5288),
q(0),
],
q(oscan) => [
- q(5244),
+ q(5284),
q(0),
],
q(osing) => [
- q(5245),
+ q(5285),
q(0),
],
q(ososo) => [
- q(5246),
+ q(5286),
q(0),
],
q(ossetian) => [
@@ -45773,19 +46250,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ot danum) => [
- q(5252),
+ q(5292),
q(0),
],
q(otank) => [
- q(6869),
+ q(6919),
q(0),
],
q(oti) => [
- q(5254),
+ q(5294),
q(0),
],
q(oto-manguean languages) => [
- q(0516),
+ q(0517),
q(0),
],
q(otomian languages) => [
@@ -45793,11 +46270,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(otoro) => [
- q(5260),
+ q(5300),
q(0),
],
q(ottawa) => [
- q(5264),
+ q(5304),
q(0),
],
q(ottoman turkish (1500-1928)) => [
@@ -45805,139 +46282,147 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(otuho) => [
- q(3977),
+ q(4006),
q(0),
],
q(otuke) => [
- q(5263),
+ q(5303),
q(0),
],
q(ouma) => [
- q(5272),
+ q(5312),
q(0),
],
q(oune) => [
- q(5270),
+ q(5310),
q(0),
],
q(owa) => [
- q(6190),
+ q(6237),
q(0),
],
q(owenia) => [
- q(7143),
+ q(7196),
q(0),
],
q(owiniga) => [
- q(5274),
+ q(5314),
q(0),
],
q(oy) => [
- q(5276),
+ q(5316),
q(0),
],
q(oya'oya) => [
- q(5279),
+ q(5319),
q(0),
],
q(oyda) => [
- q(5277),
+ q(5317),
q(0),
],
q(ozolotepec zapotec) => [
- q(7663),
+ q(7729),
q(0),
],
q(ozumacin chinantec) => [
- q(1724),
+ q(1730),
q(0),
],
q(pa di) => [
- q(5336),
+ q(5375),
q(0),
],
q(pa'a) => [
- q(5520),
+ q(5560),
+ q(0),
+ ],
+ q(pa'o) => [
+ q(1288),
q(0),
],
q(pa'o karen) => [
- q(1282),
+ q(1288),
q(0),
],
q(pa-hng) => [
- q(5372),
+ q(5410),
q(0),
],
q(paafang) => [
- q(5360),
+ q(5399),
+ q(0),
+ ],
+ q(paakantyi) => [
+ q(2136),
q(0),
],
q(paama) => [
- q(5445),
+ q(5483),
q(0),
],
q(paasaal) => [
- q(5965),
+ q(6010),
q(0),
],
q(pacahuara) => [
- q(5331),
+ q(5370),
q(0),
],
q(pacaraos quechua) => [
- q(5644),
+ q(5684),
q(0),
],
q(pacific gulf yupik) => [
- q(2235),
+ q(2254),
q(0),
],
q(pacoh) => [
- q(5282),
+ q(5322),
q(0),
],
q(padoe) => [
- q(5338),
+ q(5377),
q(0),
],
q(paekche) => [
- q(5413),
+ q(5451),
q(0),
],
q(paelignian) => [
- q(5368),
+ q(5407),
q(0),
],
q(paez) => [
- q(5299),
+ q(5339),
q(0),
],
q(pagi) => [
- q(5365),
+ q(5404),
q(0),
],
q(pagibete) => [
- q(5284),
+ q(5324),
q(0),
],
q(pagu) => [
- q(5370),
+ q(5409),
q(0),
],
q(pahanan agta) => [
- q(0837),
+ q(0840),
q(0),
],
q(pahari-potwari) => [
- q(5381),
+ q(5419),
q(0),
],
q(pahi) => [
- q(3848),
+ q(3876),
q(0),
],
q(pahlavani) => [
- q(5384),
+ q(5422),
q(0),
],
q(pahlavi) => [
@@ -45945,63 +46430,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(pai tavytera) => [
- q(5563),
+ q(5603),
q(0),
],
q(paici) => [
- q(5529),
+ q(5569),
q(0),
],
q(paipai) => [
- q(5508),
+ q(5548),
q(0),
],
q(paite chin) => [
- q(5327),
+ q(5366),
q(0),
],
q(paiwan) => [
- q(5600),
+ q(5640),
q(0),
],
q(pak-tong) => [
- q(5414),
+ q(5452),
q(0),
],
q(pakaasnovos) => [
- q(5294),
+ q(5334),
q(0),
],
q(pakanha) => [
- q(5416),
+ q(5454),
q(0),
],
q(pakistan sign language) => [
- q(5420),
+ q(5458),
q(0),
],
q(paku) => [
- q(5422),
+ q(5460),
q(0),
],
q(paku karen) => [
- q(3485),
+ q(3089),
q(0),
],
q(pal) => [
- q(0580),
+ q(0581),
q(0),
],
q(palaic) => [
- q(5436),
+ q(5474),
q(0),
],
q(palaka senoufo) => [
- q(5437),
+ q(5475),
q(0),
],
q(palantla chinantec) => [
- q(1824),
+ q(1831),
q(0),
],
q(palauan) => [
@@ -46009,7 +46494,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(palenquero) => [
- q(5433),
+ q(5471),
q(0),
],
q(pali) => [
@@ -46017,63 +46502,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(palikur) => [
- q(5440),
+ q(5478),
q(0),
],
q(paliyan) => [
- q(5322),
+ q(5361),
q(0),
],
- q(palor) => [
- q(2305),
+ q(pallanganmiddang) => [
+ q(5486),
q(0),
],
- q(palpa) => [
- q(5435),
+ q(palor) => [
+ q(2324),
q(0),
],
- q(palu) => [
- q(5316),
+ q(palpa) => [
+ q(5473),
q(0),
],
q(palu'e) => [
- q(5427),
+ q(5465),
q(0),
],
q(paluan) => [
- q(5444),
+ q(5482),
q(0),
],
q(palula) => [
- q(5377),
+ q(5415),
q(0),
],
q(palumata) => [
- q(5447),
+ q(5485),
q(0),
],
q(palya bareli) => [
- q(1390),
+ q(1396),
q(0),
],
q(pam) => [
- q(5456),
+ q(5495),
q(0),
],
q(pambia) => [
- q(5446),
+ q(5484),
q(0),
],
q(pamlico) => [
- q(5453),
+ q(5492),
q(0),
],
q(pamona) => [
- q(5449),
+ q(5488),
q(0),
],
q(pamosu) => [
- q(2718),
+ q(2743),
q(0),
],
q(pampanga) => [
@@ -46081,55 +46566,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(pamplona atta) => [
- q(0924),
+ q(0927),
q(0),
],
q(pana (burkina faso)) => [
- q(5478),
+ q(5518),
q(0),
],
q(pana (central african republic)) => [
- q(5487),
+ q(5527),
q(0),
],
q(panamanian sign language) => [
- q(4011),
+ q(4040),
q(0),
],
q(panamint) => [
- q(5291),
+ q(5331),
q(0),
],
q(panang) => [
- q(5332),
+ q(5371),
q(0),
],
q(panao huanuco quechua) => [
- q(5657),
+ q(5697),
q(0),
],
q(panara) => [
- q(3525),
+ q(3555),
q(0),
],
q(panasuan) => [
- q(5553),
+ q(5593),
q(0),
],
q(panawa) => [
- q(5597),
+ q(5637),
q(0),
],
q(pancana) => [
- q(5477),
+ q(5517),
q(0),
],
q(panchpargania) => [
- q(6350),
+ q(6397),
q(0),
],
q(pande) => [
- q(1256),
+ q(1262),
q(0),
],
q(pangasinan) => [
@@ -46137,27 +46622,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(pangseng) => [
- q(5369),
+ q(5408),
q(0),
],
q(pangutaran sama) => [
- q(6031),
+ q(6076),
q(0),
],
q(pangwa) => [
- q(5310),
+ q(5350),
q(0),
],
q(pangwali) => [
- q(5364),
+ q(5403),
q(0),
],
q(panim) => [
- q(5479),
+ q(5519),
q(0),
],
q(paniya) => [
- q(5323),
+ q(5362),
q(0),
],
q(panjabi) => [
@@ -46165,59 +46650,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(pankarare) => [
- q(5296),
+ q(5336),
q(0),
],
q(pankararu) => [
- q(5298),
+ q(5338),
q(0),
],
q(pankhu) => [
- q(5415),
+ q(5453),
q(0),
],
q(pannei) => [
- q(5469),
+ q(5508),
+ q(0),
+ ],
+ q(pano) => [
+ q(4483),
q(0),
],
q(panoan katukina) => [
- q(3444),
+ q(3475),
q(0),
],
q(panobo) => [
- q(5476),
+ q(5516),
q(0),
],
q(panytyima) => [
- q(5484),
+ q(5524),
q(0),
],
q(pao) => [
- q(5506),
+ q(5546),
q(0),
],
q(papantla totonac) => [
- q(6565),
+ q(6614),
q(0),
],
q(papapana) => [
- q(5512),
+ q(5552),
q(0),
],
q(papar) => [
- q(2111),
+ q(2129),
q(0),
],
q(papasena) => [
- q(5292),
+ q(5332),
q(0),
],
q(papel) => [
- q(5308),
+ q(5348),
q(0),
],
q(papi) => [
- q(5507),
+ q(5547),
q(0),
],
q(papiamento) => [
@@ -46225,11 +46714,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(papitalai) => [
- q(5293),
+ q(5333),
q(0),
],
q(papora) => [
- q(5519),
+ q(5559),
q(0),
],
q(papuan languages) => [
@@ -46237,107 +46726,107 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(papuan malay) => [
- q(5465),
+ q(5504),
q(0),
],
q(papuma) => [
- q(5511),
+ q(5551),
q(0),
],
q(para arara) => [
- q(0551),
+ q(0552),
q(0),
],
q(para gaviao) => [
- q(2636),
+ q(2660),
q(0),
],
q(para naga) => [
- q(5612),
+ q(5652),
q(0),
],
q(parachi) => [
- q(5523),
+ q(5563),
q(0),
],
q(paraguayan guarani) => [
- q(2609),
+ q(2633),
q(0),
],
q(paraguayan sign language) => [
- q(5608),
+ q(5648),
q(0),
],
q(parakana) => [
- q(5288),
+ q(5328),
q(0),
],
q(paranan) => [
- q(5526),
+ q(5566),
q(0),
],
q(paranawat) => [
- q(5285),
+ q(5325),
q(0),
],
q(paraujano) => [
- q(5303),
+ q(5343),
q(0),
],
q(parauk) => [
- q(5530),
+ q(5570),
q(0),
],
q(parawen) => [
- q(5540),
+ q(5580),
q(0),
],
q(pardhan) => [
- q(5324),
+ q(5363),
q(0),
],
q(pardhi) => [
- q(5328),
+ q(5367),
q(0),
],
q(pare) => [
- q(5518),
+ q(5558),
q(0),
],
q(parecis) => [
- q(5281),
+ q(5321),
q(0),
],
q(parenga) => [
- q(5326),
+ q(5365),
q(0),
],
q(pari) => [
- q(3899),
+ q(3927),
q(0),
],
q(parkari koli) => [
- q(3638),
+ q(3668),
q(0),
],
q(parkwa) => [
- q(5305),
+ q(5345),
q(0),
],
q(parsi) => [
- q(5534),
+ q(5574),
q(0),
],
q(parsi-dari) => [
- q(5524),
+ q(5564),
q(0),
],
q(parthian) => [
- q(7347),
+ q(7405),
q(0),
],
q(parya) => [
- q(5290),
+ q(5330),
q(0),
],
q(pashto) => [
@@ -46345,87 +46834,91 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(pasi) => [
- q(5556),
+ q(5596),
q(0),
],
q(pass valley yali) => [
- q(7435),
+ q(7496),
q(0),
],
q(patamona) => [
- q(5300),
+ q(5340),
q(0),
],
q(patani) => [
- q(5566),
+ q(5606),
q(0),
],
q(pataxo ha-ha-hae) => [
- q(5564),
+ q(5604),
q(0),
],
q(patep) => [
- q(5568),
+ q(5608),
q(0),
],
q(pathiya) => [
- q(5574),
+ q(5614),
q(0),
],
q(patpatar) => [
- q(2457),
+ q(2477),
q(0),
],
q(pattani) => [
- q(3747),
+ q(3776),
q(0),
],
q(pattani malay) => [
- q(4171),
+ q(4200),
q(0),
],
q(paulohi) => [
- q(5429),
+ q(5467),
q(0),
],
q(paumari) => [
- q(5283),
+ q(5323),
+ q(0),
+ ],
+ q(paunaka) => [
+ q(5513),
q(0),
],
q(pauri bareli) => [
- q(1131),
+ q(1138),
q(0),
],
q(pauserna) => [
- q(5552),
+ q(5592),
q(0),
],
q(pawaia) => [
- q(5596),
+ q(5636),
q(0),
],
q(pawnee) => [
- q(5295),
+ q(5335),
q(0),
],
q(paynamar) => [
- q(5459),
+ q(5498),
q(0),
],
q(pe) => [
- q(5287),
+ q(5327),
q(0),
],
q(pear) => [
- q(5318),
+ q(5357),
q(0),
],
q(pech) => [
- q(5297),
+ q(5337),
q(0),
],
q(pecheneg) => [
- q(7337),
+ q(7394),
q(0),
],
q(pedi) => [
@@ -46433,83 +46926,83 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(peere) => [
- q(5361),
+ q(5400),
q(0),
],
q(pei) => [
- q(5515),
+ q(5555),
q(0),
],
q(pekal) => [
- q(5351),
+ q(5390),
q(0),
],
q(pela) => [
- q(1564),
+ q(1570),
q(0),
],
q(pele-ata) => [
- q(0907),
+ q(0910),
q(0),
],
q(pelende) => [
- q(5514),
+ q(5554),
q(0),
],
q(pemon) => [
- q(0816),
+ q(0818),
q(0),
],
q(pemono) => [
- q(5356),
+ q(5395),
q(0),
],
q(penang sign language) => [
- q(5548),
+ q(5588),
q(0),
],
q(penchal) => [
- q(5350),
+ q(5389),
q(0),
],
q(pendau) => [
- q(6827),
+ q(6878),
q(0),
],
q(pengo) => [
- q(5346),
+ q(5385),
q(0),
],
q(pennsylvania german) => [
- q(5335),
+ q(5374),
q(0),
],
q(penoles mixtec) => [
- q(4257),
+ q(4285),
q(0),
],
q(penrhyn) => [
- q(5472),
+ q(5511),
q(0),
],
q(pentlatch) => [
- q(5573),
+ q(5613),
q(0),
],
q(perai) => [
- q(7024),
+ q(7074),
q(0),
],
q(peranakan indonesian) => [
- q(5341),
+ q(5380),
q(0),
],
q(peripheral mongolian) => [
- q(4555),
+ q(4583),
q(0),
],
q(pero) => [
- q(5400),
+ q(5438),
q(0),
],
q(persian) => [
@@ -46517,7 +47010,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(persian sign language) => [
- q(5545),
+ q(5585),
q(0),
],
q(persian, old (ca.600-400 b.c.)) => [
@@ -46525,55 +47018,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(peruvian sign language) => [
- q(5531),
+ q(5571),
q(0),
],
q(petapa zapotec) => [
- q(7761),
+ q(7829),
q(0),
],
q(petats) => [
- q(5357),
+ q(5396),
q(0),
],
q(petjo) => [
- q(5358),
+ q(5397),
q(0),
],
q(peve) => [
- q(3926),
+ q(3955),
q(0),
],
q(pfaelzisch) => [
- q(5362),
+ q(5401),
q(0),
],
q(phai) => [
- q(5538),
+ q(5578),
q(0),
],
q(phake) => [
- q(5376),
+ q(5414),
q(0),
],
q(phala) => [
- q(7583),
+ q(7646),
q(0),
],
q(phalura) => [
- q(5377),
+ q(5415),
q(0),
],
q(phana') => [
- q(5380),
+ q(5418),
q(0),
],
q(phangduwali) => [
- q(5385),
+ q(5423),
q(0),
],
q(phende) => [
- q(5352),
+ q(5391),
q(0),
],
q(philippine languages) => [
@@ -46581,11 +47074,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(philippine sign language) => [
- q(5555),
+ q(5595),
q(0),
],
q(phimbi) => [
- q(5378),
+ q(5416),
q(0),
],
q(phoenician) => [
@@ -46593,127 +47086,127 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(phola) => [
- q(7585),
+ q(7648),
q(0),
],
q(pholo) => [
- q(7510),
+ q(7570),
q(0),
],
q(phom naga) => [
- q(4986),
+ q(5016),
q(0),
],
q(phong-kniang) => [
- q(5485),
+ q(5525),
q(0),
],
q(phrae pwo karen) => [
- q(3344),
+ q(3375),
q(0),
],
q(phrygian) => [
- q(7339),
+ q(7396),
q(0),
],
q(phu thai) => [
- q(5382),
+ q(5420),
q(0),
],
q(phuan) => [
- q(5383),
+ q(5421),
q(0),
],
q(phudagi) => [
- q(5373),
+ q(5411),
q(0),
],
q(phuie) => [
- q(5581),
+ q(5621),
q(0),
],
q(phukha) => [
- q(5375),
+ q(5413),
q(0),
],
q(phuma) => [
- q(7587),
+ q(7650),
q(0),
],
q(phunoi) => [
- q(5379),
+ q(5417),
q(0),
],
q(phuong) => [
- q(5374),
+ q(5412),
q(0),
],
q(phupa) => [
- q(7590),
+ q(7653),
q(0),
],
q(phupha) => [
- q(7586),
+ q(7649),
q(0),
],
q(phuza) => [
- q(7591),
+ q(7654),
q(0),
],
q(piamatsina) => [
- q(5569),
+ q(5609),
q(0),
],
q(piame) => [
- q(5398),
+ q(5436),
q(0),
],
q(piapoco) => [
- q(5399),
+ q(5437),
q(0),
],
q(piaroa) => [
- q(5389),
+ q(5427),
q(0),
],
q(picard) => [
- q(5320),
+ q(5359),
q(0),
],
q(pichis asheninka) => [
- q(1831),
+ q(1838),
q(0),
],
q(pictish) => [
- q(7340),
+ q(7397),
q(0),
],
q(pidgin delaware) => [
- q(1985),
+ q(1997),
q(0),
],
q(piemontese) => [
- q(5460),
+ q(5499),
q(0),
],
q(pijao) => [
- q(5395),
+ q(5433),
q(0),
],
q(pije) => [
- q(5409),
+ q(5447),
q(0),
],
q(pijin) => [
- q(5402),
+ q(5440),
q(0),
],
q(pilaga) => [
- q(5428),
+ q(5466),
q(0),
],
q(pileni) => [
- q(5405),
+ q(5443),
q(0),
],
q(pilipino) => [
@@ -46721,163 +47214,163 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(pima bajo) => [
- q(5386),
+ q(5424),
q(0),
],
q(pimbwe) => [
- q(5406),
+ q(5444),
q(0),
],
q(pinai-hagahai) => [
- q(5475),
+ q(5515),
q(0),
],
q(pingelapese) => [
- q(5391),
+ q(5429),
q(0),
],
q(pini) => [
- q(5394),
+ q(5432),
q(0),
],
q(pinigura) => [
- q(5483),
+ q(5523),
q(0),
],
q(pinji) => [
- q(5388),
+ q(5426),
q(0),
],
q(pinotepa nacional mixtec) => [
- q(4259),
+ q(4287),
q(0),
],
q(pintiini) => [
- q(5565),
+ q(5605),
q(0),
],
q(pintupi-luritja) => [
- q(5404),
+ q(5442),
q(0),
],
q(pinyin) => [
- q(5486),
+ q(5526),
q(0),
],
q(pipil) => [
- q(5510),
+ q(5550),
q(0),
],
q(piraha) => [
- q(4638),
+ q(4666),
q(0),
],
q(piratapuyo) => [
- q(5401),
+ q(5439),
q(0),
],
q(pirlatapa) => [
- q(1569),
+ q(1575),
q(0),
],
q(piro) => [
- q(5390),
+ q(5428),
q(0),
],
q(piru) => [
- q(5516),
+ q(5556),
q(0),
],
q(pisabo) => [
- q(5392),
+ q(5430),
q(0),
],
q(pisaflores tepehua) => [
- q(6586),
+ q(6635),
q(0),
],
q(piscataway) => [
- q(5562),
+ q(5602),
q(0),
],
q(pisidian) => [
- q(7348),
+ q(7406),
q(0),
],
q(pitcairn-norfolk) => [
- q(5393),
+ q(5431),
q(0),
],
q(pite sami) => [
- q(5985),
+ q(6030),
q(0),
],
q(piti) => [
- q(5330),
+ q(5369),
q(0),
],
q(pitjantjatjara) => [
- q(5410),
+ q(5448),
q(0),
],
q(pitta pitta) => [
- q(5403),
+ q(5441),
q(0),
],
q(piu) => [
- q(5407),
+ q(5445),
q(0),
],
q(piya-kwonci) => [
- q(5408),
+ q(5446),
q(0),
],
q(plains cree) => [
- q(1844),
+ q(1851),
q(0),
],
q(plains indian sign language) => [
- q(5546),
+ q(5586),
q(0),
],
q(plains miwok) => [
- q(5463),
+ q(5502),
q(0),
],
q(plapo krumen) => [
- q(3577),
+ q(3607),
q(0),
],
q(plateau malagasy) => [
- q(5439),
+ q(5477),
q(0),
],
q(plautdietsch) => [
- q(5339),
+ q(5378),
q(0),
],
q(playero) => [
- q(2549),
+ q(2571),
q(0),
],
q(pnar) => [
- q(5314),
+ q(5354),
q(0),
],
q(pochuri naga) => [
- q(4989),
+ q(5020),
q(0),
],
q(pochutec) => [
- q(7344),
+ q(7402),
q(0),
],
q(podena) => [
- q(5337),
+ q(5376),
q(0),
],
q(pogolo) => [
- q(5505),
+ q(5545),
q(0),
],
q(pohnpeian) => [
@@ -46885,31 +47378,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(pokanga) => [
- q(5495),
+ q(5535),
q(0),
],
q(poke) => [
- q(5491),
+ q(5531),
q(0),
],
q(pokomo) => [
- q(5412),
+ q(5450),
q(0),
],
q(pokoot) => [
- q(5417),
+ q(5455),
q(0),
],
q(polabian) => [
- q(5504),
+ q(5544),
q(0),
],
q(polari) => [
- q(5426),
+ q(5464),
q(0),
],
q(polci) => [
- q(5430),
+ q(5468),
q(0),
],
q(polish) => [
@@ -46917,67 +47410,67 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(polish sign language) => [
- q(5554),
+ q(5594),
q(0),
],
q(polonombauk) => [
- q(5424),
+ q(5462),
q(0),
],
q(pom) => [
- q(5457),
+ q(5496),
q(0),
],
q(pomo) => [
- q(5455),
+ q(5494),
q(0),
],
q(ponam) => [
- q(4718),
+ q(4746),
q(0),
],
q(ponares) => [
- q(5489),
+ q(5529),
q(0),
],
q(pongu) => [
- q(5471),
- q(0),
- ],
- q(pongyong) => [
- q(5371),
+ q(5510),
q(0),
],
q(ponosakan) => [
- q(5480),
+ q(5520),
q(0),
],
q(pontic) => [
- q(5481),
+ q(5521),
+ q(0),
+ ],
+ q(ponyo-gongwang naga) => [
+ q(5015),
q(0),
],
q(popti') => [
- q(2998),
+ q(3022),
q(0),
],
q(poqomam) => [
- q(5488),
+ q(5528),
q(0),
],
q(poqomchi') => [
- q(5493),
+ q(5533),
q(0),
],
q(porohanon) => [
- q(5528),
+ q(5568),
q(0),
],
q(port sandwich) => [
- q(5561),
+ q(5601),
q(0),
],
q(port vato) => [
- q(5572),
+ q(5612),
q(0),
],
q(portuguese) => [
@@ -46985,7 +47478,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(portuguese sign language) => [
- q(5557),
+ q(5597),
q(0),
],
q(portuguese-based creoles and pidgins) => [
@@ -46993,39 +47486,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(2),
],
q(potawatomi) => [
- q(5501),
+ q(5541),
q(0),
],
q(potiguara) => [
- q(5492),
+ q(5532),
q(0),
],
q(pottangi ollar gadaba) => [
- q(2424),
+ q(2443),
q(0),
],
q(poule) => [
- q(4491),
+ q(4519),
q(0),
],
q(poumei naga) => [
- q(5464),
+ q(5503),
q(0),
],
q(pouye) => [
- q(1589),
+ q(1595),
q(0),
],
q(powari) => [
- q(5602),
+ q(5642),
q(0),
],
q(powhatan) => [
- q(5397),
+ q(5435),
q(0),
],
q(poyanawa) => [
- q(5607),
+ q(5647),
q(0),
],
q(prakrit languages) => [
@@ -47033,19 +47526,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(prasuni) => [
- q(5533),
+ q(5573),
q(0),
],
q(pray 3) => [
- q(5542),
+ q(5582),
q(0),
],
q(primitive irish) => [
- q(5367),
+ q(5406),
q(0),
],
q(principense) => [
- q(5525),
+ q(5565),
q(0),
],
q(provencal) => [
@@ -47057,107 +47550,107 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(providencia sign language) => [
- q(5543),
+ q(5583),
q(0),
],
q(prussian) => [
- q(5527),
+ q(5567),
q(0),
],
q(psikye) => [
- q(3624),
+ q(3654),
q(0),
],
q(pu ko) => [
- q(5584),
+ q(5624),
q(0),
],
q(pu-xian chinese) => [
- q(1832),
+ q(1839),
q(0),
],
q(puare) => [
- q(5593),
+ q(5633),
q(0),
],
q(pudtol atta) => [
- q(0920),
+ q(0923),
q(0),
],
q(puelche) => [
- q(5579),
+ q(5619),
q(0),
],
q(puerto rican sign language) => [
- q(5551),
+ q(5591),
q(0),
],
q(puimei naga) => [
- q(4991),
+ q(5022),
q(0),
],
q(puinave) => [
- q(5582),
+ q(5622),
q(0),
],
q(pukapuka) => [
- q(5418),
+ q(5456),
q(0),
],
q(pulaar) => [
- q(2352),
+ q(2372),
q(0),
],
q(pulabu) => [
- q(5587),
+ q(5627),
q(0),
],
q(pular) => [
- q(2355),
+ q(2375),
q(0),
],
q(puluwatese) => [
- q(5592),
+ q(5632),
q(0),
],
q(puma) => [
- q(5585),
+ q(5625),
q(0),
],
q(pume) => [
- q(7437),
+ q(7498),
q(0),
],
q(pumpokol) => [
- q(7342),
+ q(7400),
q(0),
],
q(punan aput) => [
- q(5578),
+ q(5618),
q(0),
],
q(punan bah-biau) => [
- q(5467),
+ q(5506),
q(0),
],
q(punan batu 1) => [
- q(5474),
+ q(5514),
q(0),
],
q(punan merah) => [
- q(5580),
+ q(5620),
q(0),
],
q(punan merap) => [
- q(5577),
+ q(5617),
q(0),
],
q(punan tubu) => [
- q(5583),
+ q(5623),
q(0),
],
q(punic) => [
- q(7349),
+ q(7407),
q(0),
],
q(punjabi) => [
@@ -47165,55 +47658,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(puno quechua) => [
- q(5661),
+ q(5701),
q(0),
],
q(punu) => [
- q(5591),
+ q(5631),
q(0),
],
q(puoc) => [
- q(5586),
+ q(5626),
q(0),
],
q(puquina) => [
- q(5588),
+ q(5628),
q(0),
],
q(puragi) => [
- q(5539),
+ q(5579),
q(0),
],
q(purari) => [
- q(2845),
+ q(2869),
q(0),
],
q(purepecha) => [
- q(6654),
+ q(6703),
q(0),
],
q(puri) => [
- q(5536),
+ q(5576),
q(0),
],
q(purik) => [
- q(5541),
+ q(5581),
q(0),
],
q(purisimeno) => [
- q(5594),
+ q(5634),
+ q(0),
+ ],
+ q(puroik) => [
+ q(6257),
q(0),
],
q(purubora) => [
- q(5589),
+ q(5629),
q(0),
],
q(purum) => [
- q(5576),
+ q(5616),
q(0),
],
q(purum naga) => [
- q(5595),
+ q(5635),
q(0),
],
q(pushto) => [
@@ -47221,115 +47718,119 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(putai) => [
- q(4182),
+ q(4211),
q(0),
],
q(putoh) => [
- q(5590),
+ q(5630),
q(0),
],
q(putukwam) => [
- q(0642),
+ q(0643),
q(0),
],
q(puyo) => [
- q(7350),
+ q(7408),
q(0),
],
q(puyo-paekche) => [
- q(7345),
+ q(7403),
q(0),
],
q(puyuma) => [
- q(5609),
+ q(5649),
q(0),
],
q(pwaamei) => [
- q(5448),
+ q(5487),
q(0),
],
q(pwapwa) => [
- q(5498),
+ q(5538),
q(0),
],
q(pwo eastern karen) => [
- q(3340),
+ q(3371),
q(0),
],
q(pwo northern karen) => [
- q(5603),
+ q(5643),
q(0),
],
q(pwo western karen) => [
- q(5601),
+ q(5641),
q(0),
],
q(pyapun) => [
- q(5333),
+ q(5372),
q(0),
],
q(pye krumen) => [
- q(5605),
+ q(5645),
q(0),
],
q(pyen) => [
- q(5611),
+ q(5651),
q(0),
],
q(pyu) => [
- q(5315),
+ q(5355),
q(0),
],
q(pyu (myanmar)) => [
- q(5610),
+ q(5650),
q(0),
],
q(q'anjob'al) => [
- q(3326),
+ q(3357),
q(0),
],
q(qabiao) => [
- q(3756),
+ q(3785),
q(0),
],
q(qaqet) => [
- q(1606),
+ q(1612),
q(0),
],
q(qashqa'i) => [
- q(5662),
+ q(5702),
q(0),
],
q(qatabanian) => [
- q(7352),
+ q(7410),
+ q(0),
+ ],
+ q(qau) => [
+ q(2598),
q(0),
],
q(qawasqar) => [
- q(0746),
+ q(0748),
q(0),
],
q(qila muji) => [
- q(7556),
+ q(7617),
q(0),
],
q(qimant) => [
- q(0680),
+ q(0681),
q(0),
],
q(qiubei zhuang) => [
- q(7783),
+ q(7851),
q(0),
],
q(quapaw) => [
- q(5613),
+ q(5653),
q(0),
],
q(quebec sign language) => [
- q(2312),
+ q(2331),
q(0),
],
q(quechan) => [
- q(7625),
+ q(7689),
q(0),
],
q(quechua) => [
@@ -47337,75 +47838,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(quechuan (family)) => [
- q(0522),
+ q(0523),
q(0),
],
q(quenya) => [
- q(5668),
+ q(5708),
q(0),
],
q(queretaro otomi) => [
- q(5259),
+ q(5299),
q(0),
],
q(quetzaltepec mixe) => [
- q(5604),
+ q(5644),
q(0),
],
q(queyu) => [
- q(5647),
+ q(5687),
q(0),
],
q(quiavicuzas zapotec) => [
- q(7766),
+ q(7834),
q(0),
],
q(quiche) => [
- q(5615),
+ q(5655),
q(0),
],
q(quileute) => [
- q(5620),
+ q(5660),
q(0),
],
q(quinault) => [
- q(5624),
+ q(5664),
q(0),
],
q(quinqui) => [
- q(5626),
+ q(5666),
q(0),
],
q(quioquitani-quieri zapotec) => [
- q(7802),
+ q(7870),
q(0),
],
q(quiotepec chinantec) => [
- q(1720),
+ q(1726),
q(0),
],
q(quiripi) => [
- q(5669),
+ q(5709),
q(0),
],
q(rabha) => [
- q(5676),
+ q(5716),
q(0),
],
q(rade) => [
- q(5673),
+ q(5713),
q(0),
],
q(raetic) => [
- q(7359),
+ q(7417),
q(0),
],
q(rahambuu) => [
- q(5691),
+ q(5731),
q(0),
],
q(rajah kabunsuwan manobo) => [
- q(4440),
+ q(4468),
q(0),
],
q(rajasthani) => [
@@ -47413,75 +47914,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(rajbanshi) => [
- q(5730),
+ q(5771),
q(0),
],
q(raji) => [
- q(5729),
+ q(5770),
q(0),
],
q(rajong) => [
- q(5728),
+ q(5769),
q(0),
],
q(rajput garasia) => [
- q(2575),
+ q(2599),
q(0),
],
q(rakahanga-manihiki) => [
- q(5733),
+ q(5774),
q(0),
],
q(rakhine) => [
- q(5734),
+ q(5775),
q(0),
],
q(ralte) => [
- q(5679),
+ q(5719),
q(0),
],
q(rama) => [
- q(5737),
+ q(5778),
q(0),
],
q(ramoaaina) => [
- q(5677),
+ q(5717),
q(0),
],
q(ramopa) => [
- q(3346),
+ q(3377),
q(0),
],
q(rampi) => [
- q(3884),
+ q(3912),
q(0),
],
q(rana tharu) => [
- q(6429),
+ q(6478),
q(0),
],
q(rang) => [
- q(5689),
+ q(5729),
q(0),
],
q(rangkas) => [
- q(5712),
+ q(5753),
q(0),
],
q(ranglong) => [
- q(5764),
+ q(5805),
q(0),
],
q(rangpuri) => [
- q(5736),
+ q(5777),
q(0),
],
q(rao) => [
- q(5682),
+ q(5722),
q(0),
],
q(rapa) => [
- q(5690),
+ q(5730),
q(0),
],
q(rapanui) => [
@@ -47489,15 +47990,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(rapoisi) => [
- q(3715),
+ q(3745),
q(0),
],
q(rapting) => [
- q(5781),
+ q(5823),
q(0),
],
q(rara bakati') => [
- q(3988),
+ q(4017),
q(0),
],
q(rarotongan) => [
@@ -47505,135 +48006,139 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(rasawa) => [
- q(5672),
+ q(5712),
q(0),
],
q(ratagnon) => [
- q(1477),
+ q(1483),
q(0),
],
q(ratahan) => [
- q(5787),
+ q(5831),
q(0),
],
q(rathawi) => [
- q(5789),
+ q(5833),
q(0),
],
q(rathwi bareli) => [
- q(1158),
+ q(1165),
q(0),
],
q(raute) => [
- q(5686),
+ q(5726),
q(0),
],
q(ravula) => [
- q(7480),
+ q(7540),
q(0),
],
q(rawa) => [
- q(5807),
+ q(5851),
q(0),
],
q(rawang) => [
- q(5688),
+ q(5728),
q(0),
],
q(rawat) => [
- q(3078),
+ q(3110),
+ q(0),
+ ],
+ q(rawngtu chin) => [
+ q(7075),
q(0),
],
q(rawo) => [
- q(5804),
+ q(5848),
q(0),
],
q(rayon zoque) => [
- q(7755),
+ q(7823),
q(0),
],
q(razajerdi) => [
- q(5685),
+ q(5725),
q(0),
],
q(red gelao) => [
- q(2493),
+ q(2513),
q(0),
],
q(reel) => [
- q(0925),
+ q(0928),
q(0),
],
q(rejang) => [
- q(5702),
+ q(5743),
q(0),
],
q(rejang kayan) => [
- q(5699),
+ q(5740),
q(0),
],
q(reli) => [
- q(5701),
+ q(5742),
q(0),
],
q(rema) => [
- q(1366),
+ q(1372),
q(0),
],
q(rembarunga) => [
- q(5738),
+ q(5779),
q(0),
],
q(rembong) => [
- q(5698),
+ q(5739),
q(0),
],
q(remo) => [
- q(5704),
+ q(5745),
q(0),
],
q(remontado dumagat) => [
- q(0673),
+ q(0674),
q(0),
],
q(rempi) => [
- q(5751),
+ q(5792),
q(0),
],
q(remun) => [
- q(3895),
+ q(3923),
q(0),
],
q(rendille) => [
- q(5703),
+ q(5744),
q(0),
],
q(rengao) => [
- q(5705),
+ q(5746),
q(0),
],
q(rennell-bellona) => [
- q(4382),
+ q(4410),
q(0),
],
q(rennellese sign language) => [
- q(5785),
+ q(5828),
q(0),
],
q(repanbitip) => [
- q(5780),
+ q(5822),
q(0),
],
q(rer bare) => [
- q(5706),
+ q(5747),
q(0),
],
q(rerau) => [
- q(5697),
+ q(5738),
q(0),
],
q(rerep) => [
- q(5366),
+ q(5405),
q(0),
],
q(reserved for local use) => [
@@ -47641,95 +48146,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(reshe) => [
- q(5707),
+ q(5748),
q(0),
],
q(resigaro) => [
- q(5714),
+ q(5755),
q(0),
],
q(retta) => [
- q(5708),
+ q(5749),
q(0),
],
q(reunion creole french) => [
- q(5695),
+ q(5736),
q(0),
],
q(reyesano) => [
- q(5709),
+ q(5750),
q(0),
],
q(riang (india)) => [
- q(5719),
+ q(5760),
q(0),
],
q(riang (myanmar)) => [
- q(5722),
+ q(5763),
q(0),
],
q(riantana) => [
- q(5681),
+ q(5721),
q(0),
],
q(ribun) => [
- q(5725),
+ q(5766),
q(0),
],
q(rien) => [
- q(5720),
+ q(5761),
q(0),
],
q(rikbaktsa) => [
- q(5732),
+ q(5773),
q(0),
],
q(rincon zapotec) => [
- q(7665),
+ q(7731),
q(0),
],
q(rinconada bikol) => [
- q(1478),
+ q(1484),
q(0),
],
q(ringgou) => [
- q(5716),
+ q(5757),
q(0),
],
q(ririo) => [
- q(5782),
+ q(5824),
q(0),
],
q(ritarungo) => [
- q(5726),
+ q(5767),
q(0),
],
q(riung) => [
- q(5727),
+ q(5768),
q(0),
],
q(riverain sango) => [
- q(6069),
+ q(6114),
q(0),
],
q(rogo) => [
- q(5770),
+ q(5812),
q(0),
],
q(rohingya) => [
- q(5717),
+ q(5758),
q(0),
],
q(roma) => [
- q(5748),
+ q(5789),
q(0),
],
q(romagnol) => [
- q(5713),
+ q(5754),
q(0),
],
q(romam) => [
- q(5758),
+ q(5799),
q(0),
],
q(romance languages) => [
@@ -47741,19 +48246,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(romanian sign language) => [
- q(5753),
+ q(5794),
q(0),
],
q(romano-greek) => [
- q(5711),
+ q(5752),
q(0),
],
q(romano-serbian) => [
- q(5784),
+ q(5827),
q(0),
],
q(romanova) => [
- q(5756),
+ q(5797),
q(0),
],
q(romansh) => [
@@ -47765,95 +48270,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(romblomanon) => [
- q(5774),
+ q(5816),
q(0),
],
q(rombo) => [
- q(5772),
+ q(5814),
q(0),
],
q(romkun) => [
- q(5746),
+ q(5787),
q(0),
],
q(ron) => [
- q(1764),
+ q(1769),
q(0),
],
q(ronga) => [
- q(5763),
+ q(5804),
q(0),
],
q(rongga) => [
- q(5777),
+ q(5819),
q(0),
],
q(rongmei naga) => [
- q(4711),
+ q(4739),
q(0),
],
q(rongpo) => [
- q(5766),
+ q(5807),
q(0),
],
q(ronji) => [
- q(5771),
+ q(5813),
q(0),
],
q(roon) => [
- q(5765),
+ q(5806),
q(0),
],
q(roria) => [
- q(5710),
+ q(5751),
q(0),
],
q(rotokas) => [
- q(5775),
+ q(5817),
q(0),
],
q(rotuman) => [
- q(5788),
+ q(5832),
q(0),
],
q(roviana) => [
- q(5794),
+ q(5838),
q(0),
],
q(ruching palaung) => [
- q(5321),
+ q(5360),
q(0),
],
q(rudbari) => [
- q(5696),
+ q(5737),
q(0),
],
q(rufiji) => [
- q(5796),
+ q(5840),
q(0),
],
q(ruga) => [
- q(5795),
+ q(5839),
q(0),
],
q(rukai) => [
- q(2125),
+ q(2143),
q(0),
],
q(ruma) => [
- q(5803),
+ q(5847),
q(0),
],
q(rumai palaung) => [
- q(5692),
+ q(5732),
q(0),
],
q(rumu) => [
- q(3391),
+ q(3422),
q(0),
],
q(runa) => [
- q(5761),
+ q(5802),
q(0),
],
q(rundi) => [
@@ -47861,19 +48366,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(runga) => [
- q(5778),
+ q(5820),
+ q(0),
+ ],
+ q(rungtu chin) => [
+ q(5830),
q(0),
],
q(rungus) => [
- q(2116),
+ q(2134),
q(0),
],
q(rungwa) => [
- q(5767),
+ q(5809),
q(0),
],
q(russia buriat) => [
- q(1578),
+ q(1584),
q(0),
],
q(russian) => [
@@ -47881,175 +48390,171 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(russian sign language) => [
- q(5786),
+ q(5829),
q(0),
],
q(rusyn) => [
- q(5792),
+ q(5836),
q(0),
],
q(rutul) => [
- q(5800),
+ q(5844),
q(0),
],
q(ruuli) => [
- q(5791),
+ q(5835),
q(0),
],
q(ruund) => [
- q(5762),
+ q(5803),
q(0),
],
q(rwa) => [
- q(5805),
+ q(5849),
q(0),
],
q(s'gaw karen) => [
- q(3564),
+ q(3594),
q(0),
],
q(sa) => [
- q(5826),
+ q(5870),
q(0),
],
q(sa'a) => [
- q(0833),
+ q(0836),
q(0),
],
q(sa'ban) => [
- q(6079),
+ q(6124),
q(0),
],
q(sa'och) => [
- q(5865),
+ q(5908),
q(0),
],
q(saafi-saafi) => [
- q(5824),
+ q(5868),
q(0),
],
q(saam) => [
- q(5683),
+ q(5723),
q(0),
],
q(saamia) => [
- q(4009),
+ q(4038),
q(0),
],
q(saaroa) => [
- q(6253),
+ q(6300),
q(0),
],
q(saba) => [
- q(5812),
+ q(5856),
q(0),
],
q(sabaean) => [
- q(7363),
+ q(7421),
q(0),
],
q(sabah bisaya) => [
- q(1465),
+ q(1471),
q(0),
],
q(sabah malay) => [
- q(4488),
+ q(4516),
q(0),
],
q(sabane) => [
- q(5815),
+ q(5859),
q(0),
],
q(sabaot) => [
- q(6122),
+ q(6168),
q(0),
],
q(sabine) => [
- q(5850),
+ q(5894),
q(0),
],
q(sabu) => [
- q(2836),
+ q(2860),
q(0),
],
q(sabum) => [
- q(5843),
+ q(5887),
q(0),
],
q(sacapulteco) => [
- q(5629),
+ q(5669),
q(0),
],
q(sadri) => [
- q(5862),
+ q(5905),
q(0),
],
q(saek) => [
- q(5999),
+ q(6044),
q(0),
],
q(saep) => [
- q(6107),
+ q(6152),
q(0),
],
q(safaliba) => [
- q(5816),
+ q(5860),
q(0),
],
q(safeyoka) => [
- q(0857),
+ q(0860),
q(0),
],
q(safwa) => [
- q(5839),
+ q(5883),
q(0),
],
q(sagala) => [
- q(5841),
+ q(5885),
q(0),
],
q(sagalla) => [
- q(6396),
+ q(6443),
q(0),
],
q(saho) => [
- q(6176),
+ q(6223),
q(0),
],
q(sahu) => [
- q(5817),
+ q(5861),
q(0),
],
q(saidi arabic) => [
- q(0626),
+ q(0627),
q(0),
],
q(saint lucian creole french) => [
- q(0587),
+ q(0588),
q(0),
],
q(saisiyat) => [
- q(7381),
+ q(7439),
q(0),
],
q(sajalong) => [
- q(5988),
+ q(6033),
q(0),
],
q(sajau basap) => [
- q(5983),
+ q(6028),
q(0),
],
q(sakachep) => [
- q(5860),
+ q(5903),
q(0),
],
q(sakalava malagasy) => [
- q(6004),
- q(0),
- ],
- q(sakam) => [
- q(6009),
+ q(6049),
q(0),
],
q(sakan) => [
@@ -48057,59 +48562,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sakao) => [
- q(6017),
+ q(6062),
q(0),
],
q(sakata) => [
- q(6016),
+ q(6061),
q(0),
],
q(sake) => [
- q(5818),
+ q(5862),
q(0),
],
q(sakirabia) => [
- q(6003),
+ q(6048),
q(0),
],
q(sala) => [
- q(5951),
+ q(5996),
q(0),
],
q(salako) => [
- q(3448),
+ q(3479),
q(0),
],
q(salampasu) => [
- q(6040),
+ q(6085),
q(0),
],
q(salar) => [
- q(6035),
+ q(6080),
q(0),
],
q(salas) => [
- q(5932),
+ q(5977),
q(0),
],
q(salasaca highland quichua) => [
- q(5658),
+ q(5698),
q(0),
],
q(salchuq) => [
- q(6034),
+ q(6079),
q(0),
],
q(saleman) => [
- q(5823),
+ q(5867),
q(0),
],
q(saliba) => [
- q(5833),
+ q(5877),
q(0),
],
q(salinan) => [
- q(6032),
+ q(6077),
q(0),
],
q(salishan languages) => [
@@ -48117,35 +48622,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sallands) => [
- q(5890),
+ q(5933),
q(0),
],
q(salt-yui) => [
- q(6030),
+ q(6075),
q(0),
],
q(saluan) => [
- q(3963),
+ q(3992),
q(0),
],
q(saluma) => [
- q(6029),
+ q(6074),
q(0),
],
q(salvadoran sign language) => [
- q(2271),
+ q(2290),
q(0),
],
q(sam) => [
- q(6081),
+ q(6126),
q(0),
],
q(sama) => [
- q(6045),
+ q(6090),
q(0),
],
q(samaritan) => [
- q(6052),
+ q(6097),
q(0),
],
q(samaritan aramaic) => [
@@ -48153,39 +48658,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(samarokena) => [
- q(6514),
+ q(6563),
q(0),
],
q(samatao) => [
- q(7602),
+ q(7665),
q(0),
],
q(samba) => [
- q(6059),
+ q(6104),
q(0),
],
q(samba daka) => [
- q(1679),
+ q(1685),
q(0),
],
q(samba leko) => [
- q(4745),
+ q(4773),
+ q(0),
+ ],
+ q(sambal) => [
+ q(7422),
+ q(0),
+ ],
+ q(sambalpuri) => [
+ q(6166),
q(0),
],
q(sambe) => [
- q(7176),
+ q(7230),
q(0),
],
q(samberigi) => [
- q(6175),
+ q(6222),
q(0),
],
q(samburu) => [
- q(5821),
+ q(5865),
q(0),
],
q(samei) => [
- q(6048),
+ q(6093),
q(0),
],
q(sami languages) => [
@@ -48193,7 +48706,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(samo) => [
- q(6053),
+ q(6098),
q(0),
],
q(samoan) => [
@@ -48201,135 +48714,135 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(samogitian) => [
- q(5930),
+ q(5975),
q(0),
],
q(samosa) => [
- q(6231),
+ q(6278),
q(0),
],
q(samoyedic languages) => [
- q(0525),
+ q(0526),
q(0),
],
q(sampang) => [
- q(5687),
+ q(5727),
q(0),
],
q(samre) => [
- q(6250),
+ q(6297),
q(0),
],
q(samtao) => [
- q(6197),
+ q(6244),
q(0),
],
q(samvedi) => [
- q(6057),
+ q(6102),
q(0),
],
q(san agustin mixtepec zapotec) => [
- q(7799),
+ q(7867),
q(0),
],
q(san baltazar loxicha zapotec) => [
- q(7780),
+ q(7848),
q(0),
],
q(san blas kuna) => [
- q(1899),
+ q(1908),
q(0),
],
q(san dionisio del mar huave) => [
- q(2834),
+ q(2858),
q(0),
],
q(san felipe otlaltepec popoloca) => [
- q(5503),
+ q(5543),
q(0),
],
q(san francisco del mar huave) => [
- q(2813),
+ q(2837),
q(0),
],
q(san francisco matlatzinca) => [
- q(4067),
+ q(4096),
q(0),
],
q(san jeronimo tecoatl mazatec) => [
- q(4060),
+ q(4089),
q(0),
],
q(san juan atzingo popoloca) => [
- q(5490),
+ q(5530),
q(0),
],
q(san juan colorado mixtec) => [
- q(4269),
+ q(4297),
q(0),
],
q(san juan guelavia zapotec) => [
- q(7651),
+ q(7717),
q(0),
],
q(san juan teita mixtec) => [
- q(7389),
+ q(7447),
q(0),
],
q(san luis temalacayuca popoloca) => [
- q(5517),
+ q(5557),
q(0),
],
q(san marcos tlalcoyalco popoloca) => [
- q(5438),
+ q(5476),
q(0),
],
q(san martin itunyoso triqui) => [
- q(6622),
+ q(6671),
q(0),
],
q(san martin quechua) => [
- q(5645),
+ q(5685),
q(0),
],
q(san mateo del mar huave) => [
- q(2828),
+ q(2852),
q(0),
],
q(san miguel creole french) => [
- q(5858),
+ q(5901),
q(0),
],
q(san miguel el grande mixtec) => [
- q(4252),
+ q(4280),
q(0),
],
q(san miguel piedras mixtec) => [
- q(7394),
+ q(7452),
q(0),
],
q(san pedro amuzgos amuzgo) => [
- q(1009),
+ q(1016),
q(0),
],
q(san pedro quiatoni zapotec) => [
- q(7762),
+ q(7830),
q(0),
],
q(san salvador kongo) => [
- q(3665),
+ q(3695),
q(0),
],
q(san vicente coatlan zapotec) => [
- q(7776),
+ q(7844),
q(0),
],
q(sanaani arabic) => [
- q(0997),
+ q(1003),
q(0),
],
q(sanapana) => [
- q(5820),
+ q(5864),
q(0),
],
q(sandawe) => [
@@ -48337,35 +48850,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sanga (democratic republic of congo)) => [
- q(6066),
+ q(6111),
q(0),
],
q(sanga (nigeria)) => [
- q(7373),
+ q(7431),
q(0),
],
q(sanggau) => [
- q(5859),
+ q(5902),
q(0),
],
q(sangil) => [
- q(6070),
+ q(6115),
q(0),
],
q(sangir) => [
- q(6251),
+ q(6298),
q(0),
],
q(sangisari) => [
- q(5929),
+ q(5974),
q(0),
],
q(sangkong) => [
- q(5925),
+ q(5970),
q(0),
],
q(sanglechi) => [
- q(5935),
+ q(5980),
q(0),
],
q(sango) => [
@@ -48373,83 +48886,79 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sangtam naga) => [
- q(5012),
+ q(5044),
q(0),
],
q(sangu (gabon)) => [
- q(6075),
+ q(6120),
q(0),
],
q(sangu (tanzania)) => [
- q(5844),
+ q(5888),
q(0),
],
q(sani) => [
- q(7604),
+ q(7668),
q(0),
],
q(sanie) => [
- q(7609),
+ q(7673),
q(0),
],
q(saniyo-hiyewe) => [
- q(6082),
+ q(6127),
q(0),
],
q(sankaran maninka) => [
- q(4482),
+ q(4510),
q(0),
],
q(sansi) => [
- q(6161),
+ q(6208),
q(0),
],
q(sanskrit) => [
q(0370),
q(0),
],
- q(sansu) => [
- q(5855),
- q(0),
- ],
q(santa ana de tusi pasco quechua) => [
- q(5665),
+ q(5705),
q(0),
],
q(santa catarina albarradas zapotec) => [
- q(7800),
+ q(7868),
q(0),
],
q(santa ines ahuatempan popoloca) => [
- q(5317),
+ q(5356),
q(0),
],
q(santa ines yatzechi zapotec) => [
- q(7770),
+ q(7838),
q(0),
],
q(santa lucia monteverde mixtec) => [
- q(4142),
+ q(4171),
q(0),
],
q(santa maria del mar huave) => [
- q(2837),
+ q(2861),
q(0),
],
q(santa maria la alta nahuatl) => [
- q(4835),
+ q(4864),
q(0),
],
q(santa maria quiegolani zapotec) => [
- q(7765),
+ q(7833),
q(0),
],
q(santa maria zacatepec mixtec) => [
- q(4647),
+ q(4675),
q(0),
],
q(santa teresa cora) => [
- q(1811),
+ q(1818),
q(0),
],
q(santali) => [
@@ -48457,95 +48966,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(santiago del estero quichua) => [
- q(5628),
+ q(5668),
q(0),
],
q(santiago xanica zapotec) => [
- q(7774),
+ q(7842),
q(0),
],
q(santo domingo albarradas zapotec) => [
- q(7666),
+ q(7732),
q(0),
],
q(sanuma) => [
- q(7379),
+ q(7437),
q(0),
],
q(sao paulo kaingang) => [
- q(7709),
+ q(7777),
q(0),
],
q(saotomense) => [
- q(1842),
+ q(1849),
q(0),
],
q(saparua) => [
- q(6117),
+ q(6162),
q(0),
],
q(sape) => [
- q(6106),
+ q(6151),
q(0),
],
q(sapo) => [
- q(3532),
+ q(3562),
q(0),
],
q(saponi) => [
- q(6110),
+ q(6155),
q(0),
],
q(saposa) => [
- q(6118),
+ q(6163),
q(0),
],
q(sapuan) => [
- q(6120),
+ q(6165),
q(0),
],
q(sar) => [
- q(4586),
+ q(4614),
q(0),
],
q(sara) => [
- q(6136),
+ q(6183),
q(0),
],
q(sara dunjo) => [
- q(3459),
+ q(3490),
q(0),
],
q(sara kaba) => [
- q(5854),
+ q(5898),
q(0),
],
q(sara kaba deme) => [
- q(3647),
+ q(3677),
q(0),
],
q(sara kaba naa) => [
- q(3662),
+ q(3692),
q(0),
],
q(saramaccan) => [
- q(6143),
+ q(6190),
q(0),
],
q(sarangani blaan) => [
- q(1385),
+ q(1391),
q(0),
],
q(sarangani manobo) => [
- q(4090),
+ q(4119),
q(0),
],
q(sarasira) => [
- q(7790),
+ q(7858),
q(0),
],
q(saraveca) => [
- q(5822),
+ q(5866),
q(0),
],
q(sardinian) => [
@@ -48553,31 +49062,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sarikoli) => [
- q(6139),
+ q(6186),
q(0),
],
q(sarli) => [
- q(5875),
+ q(5918),
q(0),
],
q(sarsi) => [
- q(6146),
+ q(6193),
q(0),
],
q(sartang) => [
- q(5211),
+ q(5250),
q(0),
],
q(sarua) => [
- q(6243),
+ q(6290),
q(0),
],
q(sarudu) => [
- q(5888),
+ q(5931),
q(0),
],
q(saruga) => [
- q(6133),
+ q(6180),
q(0),
],
q(sasak) => [
@@ -48585,87 +49094,83 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sasaru) => [
- q(6254),
+ q(6301),
q(0),
],
q(sassarese sardinian) => [
- q(5873),
+ q(5916),
q(0),
],
q(satawalese) => [
- q(6199),
+ q(6246),
q(0),
],
q(satere-mawe) => [
- q(4069),
+ q(4098),
q(0),
],
q(saterfriesisch) => [
- q(6193),
+ q(6240),
q(0),
],
q(saudi arabian sign language) => [
- q(5880),
- q(0),
- ],
- q(sauk) => [
- q(6000),
+ q(5923),
q(0),
],
q(sauraseni prakrit) => [
- q(5560),
+ q(5600),
q(0),
],
q(saurashtra) => [
- q(5828),
+ q(5872),
q(0),
],
q(sauri) => [
- q(6147),
+ q(6194),
q(0),
],
q(sauria paharia) => [
- q(4285),
+ q(4313),
q(0),
],
q(sause) => [
- q(5819),
+ q(5863),
q(0),
],
q(sausi) => [
- q(6162),
+ q(6209),
q(0),
],
q(savara) => [
- q(6219),
+ q(6266),
q(0),
],
q(savi) => [
- q(5876),
+ q(5919),
q(0),
],
q(savosavo) => [
- q(6220),
+ q(6267),
q(0),
],
q(sawai) => [
- q(6278),
+ q(6325),
q(0),
],
q(saweru) => [
- q(6236),
+ q(6283),
q(0),
],
q(sawi) => [
- q(5825),
+ q(5869),
q(0),
],
q(sawila) => [
- q(6238),
+ q(6285),
q(0),
],
q(sawknah) => [
- q(6232),
+ q(6279),
q(0),
],
q(saxon, low) => [
@@ -48673,15 +49178,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(saxwe gbe) => [
- q(6256),
+ q(6303),
q(0),
],
q(saya) => [
- q(5827),
+ q(5871),
q(0),
],
q(sayula popoluca) => [
- q(5500),
+ q(5540),
q(0),
],
q(scots) => [
@@ -48693,135 +49198,135 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(scythian) => [
- q(7365),
+ q(7423),
q(0),
],
q(sea island creole english) => [
- q(2613),
+ q(2637),
q(0),
],
q(seba) => [
- q(3185),
+ q(3218),
q(0),
],
q(sebat bet gurage) => [
- q(5933),
+ q(5978),
q(0),
],
q(seberuang) => [
- q(5852),
+ q(5896),
q(0),
],
q(sebop) => [
- q(5962),
+ q(6007),
q(0),
],
q(sebuyau) => [
- q(6062),
+ q(6107),
q(0),
],
q(sechelt) => [
- q(5893),
+ q(5936),
q(0),
],
q(secoya) => [
- q(5912),
+ q(5955),
q(0),
],
q(sedang) => [
- q(5894),
+ q(5937),
q(0),
],
q(sedoa) => [
- q(6709),
+ q(6759),
q(0),
],
q(seeku) => [
- q(6098),
+ q(6143),
q(0),
],
q(segai) => [
- q(5921),
+ q(5965),
q(0),
],
q(segeju) => [
- q(5897),
+ q(5940),
q(0),
],
q(seget) => [
- q(5835),
+ q(5879),
q(0),
],
q(sehwi) => [
- q(5917),
+ q(5961),
q(0),
],
q(seimat) => [
- q(6159),
+ q(6206),
q(0),
],
q(seit-kaitetu) => [
- q(2721),
+ q(2746),
q(0),
],
q(sekani) => [
- q(5901),
+ q(5944),
q(0),
],
q(sekapan) => [
- q(6012),
+ q(6057),
q(0),
],
q(sekar) => [
- q(6022),
+ q(6067),
q(0),
],
q(seke (nepal)) => [
- q(6007),
+ q(6052),
q(0),
],
q(seke (vanuatu)) => [
- q(6002),
+ q(6047),
q(0),
],
q(seki) => [
- q(6259),
+ q(6306),
q(0),
],
q(seko padang) => [
- q(6020),
+ q(6065),
q(0),
],
q(seko tengah) => [
- q(6011),
+ q(6056),
q(0),
],
q(sekpele) => [
- q(3874),
+ q(3902),
q(0),
],
q(selangor sign language) => [
- q(3263),
+ q(3294),
q(0),
],
q(selaru) => [
- q(6038),
+ q(6083),
q(0),
],
q(selayar) => [
- q(6041),
+ q(6086),
q(0),
],
q(selee) => [
- q(6080),
+ q(6125),
q(0),
],
q(selepet) => [
- q(6112),
+ q(6157),
q(0),
],
q(selian) => [
- q(6249),
+ q(6296),
q(0),
],
q(selkup) => [
@@ -48829,35 +49334,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(selungai murut) => [
- q(6026),
+ q(6071),
q(0),
],
q(seluwasan) => [
- q(6237),
+ q(6284),
q(0),
],
q(semai) => [
- q(5891),
+ q(5934),
q(0),
],
q(semandang) => [
- q(5881),
+ q(5924),
q(0),
],
q(semaq beri) => [
- q(6270),
+ q(6317),
q(0),
],
q(sembakung murut) => [
- q(5846),
+ q(5890),
q(0),
],
q(semelai) => [
- q(6268),
+ q(6315),
q(0),
],
q(semimi) => [
- q(2286),
+ q(2305),
q(0),
],
q(semitic languages) => [
@@ -48865,103 +49370,99 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(semnam) => [
- q(6165),
+ q(6212),
q(0),
],
q(semnani) => [
- q(6060),
+ q(6105),
q(0),
],
q(sempan) => [
- q(7367),
+ q(7425),
q(0),
],
q(sena) => [
- q(5898),
+ q(5941),
q(0),
],
q(senara senoufo) => [
- q(5905),
+ q(5948),
q(0),
],
q(senaya) => [
- q(6263),
+ q(6310),
q(0),
],
q(sene) => [
- q(5900),
+ q(5943),
q(0),
],
q(seneca) => [
- q(5895),
+ q(5938),
q(0),
],
q(sened) => [
- q(5886),
+ q(5929),
q(0),
],
q(sengele) => [
- q(6273),
+ q(6320),
q(0),
],
q(senggi) => [
- q(6078),
+ q(6123),
q(0),
],
q(sengo) => [
- q(6111),
+ q(6156),
q(0),
],
q(sengseng) => [
- q(6177),
+ q(6224),
q(0),
],
q(senhaja de srair) => [
- q(5994),
+ q(6039),
q(0),
],
q(sensi) => [
- q(6068),
+ q(6113),
q(0),
],
q(sentani) => [
- q(5908),
+ q(5951),
q(0),
],
q(senthang chin) => [
- q(5913),
+ q(5956),
q(0),
],
q(sentinel) => [
- q(6180),
+ q(6227),
q(0),
],
q(sepa (indonesia)) => [
- q(6105),
+ q(6150),
q(0),
],
q(sepa (papua new guinea)) => [
- q(6108),
+ q(6153),
q(0),
],
q(sepedi) => [
q(0318),
q(0),
],
- q(sepen) => [
- q(6113),
- q(0),
- ],
q(sepik iwam) => [
- q(2987),
+ q(3011),
q(0),
],
q(sera) => [
- q(6152),
+ q(6199),
q(0),
],
q(seraiki) => [
- q(6014),
+ q(6059),
q(0),
],
q(serbian) => [
@@ -48969,11 +49470,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(serbo-croatian) => [
- q(0536),
+ q(0537),
q(0),
],
q(sere) => [
- q(6224),
+ q(6271),
q(0),
],
q(serer) => [
@@ -48981,103 +49482,103 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(seri) => [
- q(5899),
+ q(5942),
q(0),
],
q(serili) => [
- q(6217),
+ q(6264),
q(0),
],
q(seroa) => [
- q(3516),
+ q(3546),
q(0),
],
q(serrano) => [
- q(5906),
+ q(5949),
q(0),
],
q(seru) => [
- q(6271),
+ q(6318),
q(0),
],
q(serua) => [
- q(6150),
+ q(6197),
q(0),
],
q(serudung murut) => [
- q(6141),
+ q(6188),
q(0),
],
q(serui-laut) => [
- q(5909),
+ q(5952),
q(0),
],
q(seselwa creole french) => [
- q(1851),
+ q(1858),
q(0),
],
q(seta) => [
- q(6182),
+ q(6229),
q(0),
],
q(setaman) => [
- q(6189),
+ q(6236),
q(0),
],
q(seti) => [
- q(5837),
+ q(5881),
q(0),
],
q(settla) => [
- q(6178),
+ q(6225),
q(0),
],
q(severn ojibwa) => [
- q(5160),
+ q(5198),
q(0),
],
q(sewa bay) => [
- q(5911),
+ q(5954),
q(0),
],
q(seze) => [
- q(6272),
+ q(6319),
q(0),
],
q(sha) => [
- q(5869),
+ q(5912),
q(0),
],
q(shabak) => [
- q(5872),
+ q(5915),
q(0),
],
q(shabo) => [
- q(5834),
+ q(5878),
q(0),
],
q(shahmirzadi) => [
- q(6153),
+ q(6200),
q(0),
],
q(shahrudi) => [
- q(5948),
+ q(5993),
q(0),
],
q(shall-zwall) => [
- q(5937),
+ q(5982),
q(0),
],
q(shama-sambuga) => [
- q(6123),
+ q(6169),
q(0),
],
q(shamang) => [
- q(7368),
+ q(7426),
q(0),
],
q(shambala) => [
- q(3543),
+ q(3573),
q(0),
],
q(shan) => [
@@ -49085,135 +49586,135 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(shanenawa) => [
- q(6233),
+ q(6280),
q(0),
],
q(shanga) => [
- q(5949),
+ q(5994),
q(0),
],
q(shangzhai) => [
- q(3049),
+ q(3076),
q(0),
],
q(sharanahua) => [
- q(4101),
+ q(4130),
q(0),
],
q(shark bay) => [
- q(6174),
+ q(6221),
q(0),
],
q(sharwa) => [
- q(6235),
+ q(6282),
q(0),
],
q(shasta) => [
- q(5954),
+ q(5999),
q(0),
],
q(shatt) => [
- q(5945),
+ q(5990),
q(0),
],
q(shau) => [
- q(6124),
+ q(6170),
q(0),
],
q(shawnee) => [
- q(5997),
+ q(6042),
q(0),
],
q(she) => [
- q(5958),
+ q(6003),
q(0),
],
q(shehri) => [
- q(5956),
+ q(6001),
q(0),
],
q(shekhawati) => [
- q(6240),
+ q(6287),
q(0),
],
q(shekkacho) => [
- q(4404),
+ q(4432),
q(0),
],
q(sheko) => [
- q(5941),
+ q(5986),
q(0),
],
q(shelta) => [
- q(6184),
+ q(6231),
q(0),
],
q(shempire senoufo) => [
- q(5892),
+ q(5935),
q(0),
],
q(shendu) => [
- q(5947),
+ q(5992),
q(0),
],
q(sheni) => [
- q(5868),
+ q(5911),
q(0),
],
q(sherbro) => [
- q(1500),
+ q(1506),
q(0),
],
q(sherdukpen) => [
- q(5884),
+ q(5927),
q(0),
],
q(sherpa) => [
- q(7377),
+ q(7435),
q(0),
],
q(sheshi kham) => [
- q(3315),
+ q(3346),
q(0),
],
q(shi) => [
- q(5952),
+ q(5997),
q(0),
],
q(shihhi arabic) => [
- q(6160),
+ q(6207),
q(0),
],
q(shiki) => [
- q(2603),
+ q(2627),
q(0),
],
q(shilluk) => [
- q(5946),
+ q(5991),
q(0),
],
q(shina) => [
- q(5863),
+ q(5906),
q(0),
],
q(shinabo) => [
- q(6067),
+ q(6112),
q(0),
],
q(shipibo-conibo) => [
- q(5950),
+ q(5995),
q(0),
],
q(shixing) => [
- q(6247),
+ q(6294),
q(0),
],
q(sholaga) => [
- q(6024),
+ q(6069),
q(0),
],
q(shom peng) => [
- q(5967),
+ q(6012),
q(0),
],
q(shona) => [
@@ -49221,103 +49722,103 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(shoo-minda-nye) => [
- q(1079),
+ q(1086),
q(0),
],
q(shor) => [
- q(1747),
+ q(1753),
q(0),
],
q(shoshoni) => [
- q(5943),
+ q(5988),
q(0),
],
q(shua) => [
- q(5942),
+ q(5987),
q(0),
],
q(shuadit) => [
- q(5887),
+ q(5930),
q(0),
],
q(shuar) => [
- q(3057),
+ q(3084),
q(0),
],
q(shubi) => [
- q(6206),
+ q(6253),
q(0),
],
q(shughni) => [
- q(5923),
+ q(5967),
q(0),
],
q(shumashti) => [
- q(6195),
+ q(6242),
q(0),
],
q(shumcho) => [
- q(5867),
+ q(5910),
q(0),
],
q(shuswap) => [
- q(5953),
+ q(5998),
q(0),
],
q(shuwa-zamani) => [
- q(3542),
+ q(3572),
q(0),
],
q(shwai) => [
- q(5957),
+ q(6002),
q(0),
],
q(shwe palaung) => [
- q(5432),
+ q(5470),
q(0),
],
q(sialum) => [
- q(6039),
+ q(6084),
q(0),
],
q(siamou) => [
- q(5964),
+ q(6009),
q(0),
],
q(sian) => [
- q(6109),
+ q(6154),
q(0),
],
q(siane) => [
- q(6074),
+ q(6119),
q(0),
],
q(siang) => [
- q(6257),
+ q(6304),
q(0),
],
q(siar-lak) => [
- q(5993),
+ q(6038),
q(0),
],
q(siawi) => [
- q(4354),
+ q(4382),
q(0),
],
q(sibe) => [
- q(4730),
+ q(4758),
q(0),
],
q(sibu melanau) => [
- q(5889),
+ q(5932),
q(0),
],
q(sicanian) => [
- q(6245),
+ q(6292),
q(0),
],
q(sicel) => [
- q(5870),
+ q(5913),
q(0),
],
q(sichuan yi) => [
@@ -49329,11 +49830,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sicite senoufo) => [
- q(5904),
+ q(5947),
q(0),
],
q(siculo arabic) => [
- q(6129),
+ q(6176),
q(0),
],
q(sidamo) => [
@@ -49341,27 +49842,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sidetic) => [
- q(7366),
+ q(7424),
q(0),
],
q(sie) => [
- q(2256),
+ q(2275),
q(0),
],
q(sierra de juarez zapotec) => [
- q(7650),
+ q(7716),
q(0),
],
q(sierra leone sign language) => [
- q(5934),
+ q(5979),
q(0),
],
q(sierra negra nahuatl) => [
- q(5028),
+ q(5061),
q(0),
],
q(sighu) => [
- q(6246),
+ q(6293),
q(0),
],
q(sign languages) => [
@@ -49369,31 +49870,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sihan) => [
- q(6076),
+ q(6121),
q(0),
],
q(sihuas ancash quechua) => [
- q(5653),
+ q(5693),
q(0),
],
q(sika) => [
- q(6006),
+ q(6051),
q(0),
],
q(sikaiana) => [
- q(6021),
+ q(6066),
q(0),
],
q(sikaritai) => [
- q(6678),
+ q(6727),
q(0),
],
q(sikiana) => [
- q(5969),
+ q(6014),
q(0),
],
q(sikkimese) => [
- q(5972),
+ q(6017),
q(0),
],
q(siksika) => [
@@ -49401,87 +49902,87 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sikule) => [
- q(6005),
+ q(6050),
q(0),
],
q(sila) => [
- q(6037),
+ q(6082),
q(0),
],
q(silacayoapan mixtec) => [
- q(4308),
+ q(4336),
q(0),
],
q(sileibi) => [
- q(5845),
+ q(5889),
q(0),
],
q(silesian) => [
- q(6274),
+ q(6321),
q(0),
],
q(silimo) => [
- q(7156),
+ q(7209),
q(0),
],
q(siliput) => [
- q(4294),
+ q(4322),
q(0),
],
q(silopi) => [
- q(7375),
+ q(7433),
q(0),
],
q(silt'e) => [
- q(6198),
+ q(6245),
q(0),
],
q(simaa) => [
- q(5963),
+ q(6008),
q(0),
],
q(simba) => [
- q(5851),
+ q(5895),
q(0),
],
q(simbali) => [
- q(6047),
+ q(6092),
q(0),
],
q(simbari) => [
- q(6043),
+ q(6088),
q(0),
],
q(simbo) => [
- q(5830),
+ q(5874),
q(0),
],
q(simeku) => [
- q(6061),
+ q(6106),
q(0),
],
q(simeulue) => [
- q(6054),
+ q(6099),
q(0),
],
q(simte) => [
- q(6055),
+ q(6100),
q(0),
],
q(sinagen) => [
- q(5976),
+ q(6021),
q(0),
],
q(sinasina) => [
- q(6172),
+ q(6219),
q(0),
],
q(sinaugoro) => [
- q(6063),
+ q(6108),
q(0),
],
q(sindarin) => [
- q(5990),
+ q(6035),
q(0),
],
q(sindhi) => [
@@ -49489,23 +49990,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sindhi bhil) => [
- q(5842),
+ q(5886),
q(0),
],
q(sindihui mixtec) => [
- q(7397),
+ q(7455),
q(0),
],
q(singa) => [
- q(5926),
+ q(5971),
q(0),
],
q(singapore sign language) => [
- q(6036),
+ q(6081),
q(0),
],
q(singpho) => [
- q(5928),
+ q(5973),
q(0),
],
q(sinhala) => [
@@ -49517,15 +50018,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sinicahua mixtec) => [
- q(7388),
+ q(7446),
q(0),
],
q(sinicized miao) => [
- q(2759),
+ q(2784),
q(0),
],
q(sininkere) => [
- q(6013),
+ q(6058),
q(0),
],
q(sino-tibetan languages) => [
@@ -49533,23 +50034,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sinsauru) => [
- q(6083),
+ q(6128),
q(0),
],
q(sinte romani) => [
- q(5750),
+ q(5791),
q(0),
],
q(sinyar) => [
- q(6265),
+ q(6312),
q(0),
],
q(sio) => [
- q(7369),
+ q(7427),
q(0),
],
q(siona) => [
- q(6072),
+ q(6117),
q(0),
],
q(siouan languages) => [
@@ -49557,83 +50058,83 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sipacapense) => [
- q(5623),
+ q(5663),
q(0),
],
q(sira) => [
- q(6228),
+ q(6275),
q(0),
],
q(siraya) => [
- q(2339),
+ q(2359),
q(0),
],
q(sirenik yupik) => [
- q(7607),
+ q(7671),
q(0),
],
q(siri) => [
- q(5974),
+ q(6019),
q(0),
],
q(siriano) => [
- q(6140),
+ q(6187),
q(0),
],
q(siriono) => [
- q(6145),
+ q(6192),
q(0),
],
q(sirmauri) => [
- q(6151),
+ q(6198),
q(0),
],
q(siroi) => [
- q(6156),
+ q(6203),
q(0),
],
q(sissala) => [
- q(6023),
+ q(6068),
q(0),
],
q(sissano) => [
- q(6167),
+ q(6214),
q(0),
],
q(siuslaw) => [
- q(5975),
+ q(6020),
q(0),
],
q(sivandi) => [
- q(5980),
+ q(6025),
q(0),
],
q(siwai) => [
- q(5978),
+ q(6023),
q(0),
],
q(siwi) => [
- q(5981),
+ q(6026),
q(0),
],
q(siwu) => [
- q(0734),
+ q(0736),
q(0),
],
q(siyin chin) => [
- q(1876),
+ q(1884),
q(0),
],
q(skagit) => [
- q(5998),
+ q(6043),
q(0),
],
q(skalvian) => [
- q(6221),
+ q(6268),
q(0),
],
q(skepi creole dutch) => [
- q(6019),
+ q(6064),
q(0),
],
q(skolt sami) => [
@@ -49641,7 +50142,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(skou) => [
- q(6018),
+ q(6063),
q(0),
],
q(slave (athapascan)) => [
@@ -49657,7 +50158,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(slovakian sign language) => [
- q(6218),
+ q(6265),
q(0),
],
q(slovenian) => [
@@ -49665,47 +50166,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(small flowery miao) => [
- q(5915),
+ q(5959),
q(0),
],
q(smarky kanum) => [
- q(3682),
+ q(3712),
q(0),
],
q(snohomish) => [
- q(6073),
+ q(6118),
q(0),
],
q(so) => [
- q(6171),
- q(0),
- ],
- q(so (cameroon)) => [
- q(6102),
+ q(6218),
q(0),
],
q(so (democratic republic of congo)) => [
- q(6086),
+ q(6131),
q(0),
],
q(so'a) => [
- q(6169),
+ q(6216),
q(0),
],
q(sobei) => [
- q(6085),
+ q(6130),
q(0),
],
q(sochiapam chinantec) => [
- q(1870),
+ q(1877),
q(0),
],
q(sochiapan chinantec) => [
- q(1870),
+ q(1877),
q(0),
],
q(soga) => [
- q(7328),
+ q(7385),
q(0),
],
q(sogdian) => [
@@ -49713,35 +50210,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(soi) => [
- q(6091),
+ q(6136),
q(0),
],
q(sok) => [
- q(6008),
+ q(6053),
q(0),
],
q(sokoro) => [
- q(6092),
+ q(6137),
q(0),
],
q(solano) => [
- q(7374),
+ q(7432),
q(0),
],
q(soli) => [
- q(5853),
+ q(5897),
q(0),
],
q(solong) => [
- q(0556),
+ q(0557),
q(0),
],
q(solos) => [
- q(6093),
+ q(6138),
q(0),
],
q(som) => [
- q(6044),
+ q(6089),
q(0),
],
q(somali) => [
@@ -49749,31 +50246,35 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(somba-siawari) => [
- q(1317),
+ q(1323),
q(0),
],
q(somrai) => [
- q(6097),
+ q(6142),
q(0),
],
q(somray) => [
- q(6056),
+ q(6101),
q(0),
],
q(somyev) => [
- q(3274),
+ q(3305),
+ q(0),
+ ],
+ q(sonaga) => [
+ q(7666),
q(0),
],
q(sonde) => [
- q(5939),
+ q(5984),
q(0),
],
q(songa) => [
- q(5927),
+ q(5972),
q(0),
],
q(songe) => [
- q(6095),
+ q(6140),
q(0),
],
q(songhai languages) => [
@@ -49781,23 +50282,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(songo) => [
- q(6094),
+ q(6139),
q(0),
],
q(songomeno) => [
- q(6088),
+ q(6133),
q(0),
],
q(songoora) => [
- q(6087),
+ q(6132),
q(0),
],
q(sonha) => [
- q(6090),
+ q(6135),
q(0),
],
q(sonia) => [
- q(5973),
+ q(6018),
q(0),
],
q(soninke) => [
@@ -49805,23 +50306,23 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sonsorol) => [
- q(6100),
+ q(6145),
q(0),
],
q(soo) => [
- q(6386),
+ q(6433),
q(0),
],
q(sop) => [
- q(6859),
+ q(6909),
q(0),
],
q(soqotri) => [
- q(6131),
+ q(6178),
q(0),
],
q(sora) => [
- q(6134),
+ q(6181),
q(0),
],
q(sorbian languages) => [
@@ -49829,27 +50330,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sori-harengan) => [
- q(5836),
+ q(5880),
q(0),
],
q(sorkhei) => [
- q(6127),
+ q(6174),
q(0),
],
q(sorothaptic) => [
- q(6252),
+ q(6299),
q(0),
],
q(sorsogon ayta) => [
- q(1002),
+ q(1008),
q(0),
],
q(sos kundi) => [
- q(5879),
+ q(5922),
q(0),
],
q(sota kanum) => [
- q(3541),
+ q(3571),
q(0),
],
q(sotho, southern) => [
@@ -49857,11 +50358,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sou) => [
- q(6128),
+ q(6175),
q(0),
],
q(south african sign language) => [
- q(5916),
+ q(5960),
q(0),
],
q(south american indian (other)) => [
@@ -49873,55 +50374,55 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(south awyu) => [
- q(0975),
+ q(0980),
q(0),
],
q(south azerbaijani) => [
- q(1008),
+ q(1014),
q(0),
],
q(south bolivian quechua) => [
- q(5619),
+ q(5659),
q(0),
],
q(south caucasian languages) => [
- q(0495),
+ q(0496),
q(0),
],
q(south central banda) => [
- q(3953),
+ q(3982),
q(0),
],
q(south central dinka) => [
- q(2019),
+ q(2034),
q(0),
],
q(south efate) => [
- q(2259),
+ q(2278),
q(0),
],
q(south fali) => [
- q(2303),
+ q(2322),
q(0),
],
q(south giziga) => [
- q(2499),
+ q(2520),
q(0),
],
q(south lembata) => [
- q(3927),
+ q(3956),
q(0),
],
q(south levantine arabic) => [
- q(0717),
+ q(0719),
q(0),
],
q(south marquesan) => [
- q(4442),
+ q(4470),
q(0),
],
q(south muyu) => [
- q(3586),
+ q(3616),
q(0),
],
q(south ndebele) => [
@@ -49929,91 +50430,87 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(south nuaulu) => [
- q(5087),
+ q(5125),
q(0),
],
q(south picene) => [
- q(6121),
+ q(6167),
q(0),
],
q(south slavey) => [
- q(7371),
+ q(7429),
q(0),
],
q(south slavic languages) => [
- q(0534),
+ q(0535),
q(0),
],
q(south tairora) => [
- q(5200),
+ q(5239),
q(0),
],
q(south ucayali asheninka) => [
- q(1833),
+ q(1840),
q(0),
],
q(south watut) => [
- q(4122),
- q(0),
- ],
- q(south wemale) => [
- q(6503),
+ q(4151),
q(0),
],
q(south west bay) => [
- q(6077),
+ q(6122),
q(0),
],
q(southeast ambrym) => [
- q(6703),
+ q(6752),
q(0),
],
q(southeast babar) => [
- q(6901),
+ q(6951),
q(0),
],
q(southeast ijo) => [
- q(2895),
+ q(2919),
q(0),
],
q(southeast pashayi) => [
- q(5550),
+ q(5590),
q(0),
],
q(southeastern dinka) => [
- q(2059),
+ q(2075),
q(0),
],
q(southeastern ixtlan zapotec) => [
- q(7760),
+ q(7828),
q(0),
],
q(southeastern kolami) => [
- q(4852),
+ q(4881),
q(0),
],
q(southeastern nochixtlan mixtec) => [
- q(4623),
+ q(4651),
q(0),
],
q(southeastern pomo) => [
- q(5496),
+ q(5536),
q(0),
],
q(southeastern puebla nahuatl) => [
- q(4987),
+ q(5018),
q(0),
],
q(southeastern tarahumara) => [
- q(6344),
+ q(6391),
q(0),
],
q(southeastern tepehuan) => [
- q(6192),
+ q(6239),
q(0),
],
q(southern alta) => [
- q(0676),
+ q(0677),
q(0),
],
q(southern altai) => [
@@ -50021,227 +50518,223 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(southern amami-oshima) => [
- q(0782),
+ q(0784),
q(0),
],
q(southern aymara) => [
- q(0989),
+ q(0995),
q(0),
],
q(southern bai) => [
- q(1148),
+ q(1155),
q(0),
],
q(southern balochi) => [
- q(1060),
+ q(1067),
q(0),
],
q(southern betsimisaraka malagasy) => [
- q(1611),
+ q(1617),
q(0),
],
q(southern binukidnon) => [
- q(4527),
+ q(4555),
q(0),
],
q(southern birifor) => [
- q(1220),
+ q(1227),
q(0),
],
q(southern bobo madare) => [
- q(1552),
+ q(1558),
q(0),
],
q(southern bontok) => [
- q(5128),
+ q(5166),
q(0),
],
q(southern carrier) => [
- q(1639),
+ q(1645),
q(0),
],
- q(southern catanduanes bicolano) => [
- q(1285),
+ q(southern catanduanes bikol) => [
+ q(1291),
q(0),
],
q(southern conchucos ancash quechua) => [
- q(5660),
+ q(5700),
q(0),
],
q(southern dagaare) => [
- q(1991),
+ q(2003),
q(0),
],
q(southern dong) => [
- q(3402),
+ q(3433),
q(0),
],
q(southern east cree) => [
- q(1843),
+ q(1850),
q(0),
],
q(southern ghale) => [
- q(2474),
+ q(2495),
q(0),
],
q(southern gondi) => [
- q(2467),
+ q(2488),
q(0),
],
q(southern grebo) => [
- q(2580),
+ q(2604),
q(0),
],
q(southern guiyang hmong) => [
- q(2758),
+ q(2783),
q(0),
],
q(southern guiyang miao) => [
- q(2758),
+ q(2783),
q(0),
],
q(southern haida) => [
- q(2689),
+ q(2714),
q(0),
],
q(southern hindko) => [
- q(2761),
+ q(2786),
q(0),
],
q(southern kalapuya) => [
- q(6248),
+ q(6295),
q(0),
],
q(southern kalinga) => [
- q(3544),
+ q(3574),
q(0),
],
q(southern kisi) => [
- q(3560),
+ q(3590),
q(0),
],
q(southern kiwai) => [
- q(3328),
+ q(3359),
q(0),
],
q(southern kurdish) => [
- q(5877),
+ q(5920),
q(0),
],
q(southern lolopo) => [
- q(7606),
- q(0),
- ],
- q(southern lorung) => [
- q(3998),
+ q(7670),
q(0),
],
q(southern luri) => [
- q(4039),
+ q(4068),
q(0),
],
q(southern ma'di) => [
- q(6071),
+ q(6116),
q(0),
],
q(southern mashan hmong) => [
- q(2737),
+ q(2762),
q(0),
],
q(southern mashan miao) => [
- q(2737),
+ q(2762),
q(0),
],
q(southern mnong) => [
- q(4375),
+ q(4403),
q(0),
],
q(southern muji) => [
- q(7544),
+ q(7605),
q(0),
],
q(southern nago) => [
- q(4993),
+ q(5024),
q(0),
],
q(southern nambikuara) => [
- q(4673),
+ q(4701),
q(0),
],
q(southern ngbandi) => [
- q(4713),
+ q(4741),
q(0),
],
q(southern nicobarese) => [
- q(4844),
+ q(4873),
q(0),
],
q(southern nisu) => [
- q(5014),
+ q(5046),
q(0),
],
q(southern nuni) => [
- q(4961),
+ q(4990),
q(0),
],
q(southern ohlone) => [
- q(1873),
+ q(1880),
q(0),
],
q(southern one) => [
- q(5249),
+ q(5289),
q(0),
],
q(southern pame) => [
- q(5466),
+ q(5505),
q(0),
],
q(southern pashto) => [
- q(5312),
+ q(5352),
q(0),
],
q(southern pastaza quechua) => [
- q(5625),
+ q(5665),
q(0),
],
q(southern pomo) => [
- q(5354),
+ q(5393),
q(0),
],
q(southern puebla mixtec) => [
- q(4263),
+ q(4291),
q(0),
],
q(southern puget sound salish) => [
- q(6027),
+ q(6072),
q(0),
],
q(southern pumi) => [
- q(5452),
+ q(5491),
q(0),
],
q(southern qiandong miao) => [
- q(2753),
+ q(2778),
q(0),
],
q(southern qiang) => [
- q(5664),
+ q(5704),
q(0),
],
q(southern rengma naga) => [
- q(5000),
+ q(5032),
q(0),
],
q(southern rincon zapotec) => [
- q(7794),
+ q(7862),
q(0),
],
q(southern roglai) => [
- q(5715),
+ q(5756),
q(0),
],
q(southern sama) => [
- q(6154),
+ q(6201),
q(0),
],
q(southern sami) => [
@@ -50249,15 +50742,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(southern samo) => [
- q(5832),
+ q(5876),
q(0),
],
q(southern sierra miwok) => [
- q(6001),
+ q(6046),
q(0),
],
q(southern sorsoganon) => [
- q(6149),
+ q(6196),
q(0),
],
q(southern sotho) => [
@@ -50265,115 +50758,119 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(southern subanen) => [
- q(3744),
+ q(3773),
q(0),
],
q(southern thai) => [
- q(6099),
+ q(6144),
q(0),
],
q(southern tiwa) => [
- q(6456),
+ q(6505),
q(0),
],
q(southern toussian) => [
- q(7038),
+ q(7089),
q(0),
],
q(southern tujia) => [
- q(6465),
+ q(6515),
q(0),
],
q(southern tutchone) => [
- q(6330),
+ q(6377),
q(0),
],
q(southern uzbek) => [
- q(6884),
+ q(6934),
+ q(0),
+ ],
+ q(southern yamphu) => [
+ q(4027),
q(0),
],
q(southern yukaghir) => [
- q(7633),
+ q(7697),
q(0),
],
q(southwest gbaya) => [
- q(2598),
+ q(2622),
q(0),
],
q(southwest palawano) => [
- q(5441),
+ q(5479),
q(0),
],
q(southwest pashayi) => [
- q(5549),
+ q(5589),
q(0),
],
q(southwest tanna) => [
- q(5077),
+ q(5113),
q(0),
],
q(southwestern bontok) => [
- q(6902),
+ q(6952),
q(0),
],
q(southwestern dinka) => [
- q(2027),
+ q(2042),
q(0),
],
q(southwestern fars) => [
- q(2309),
+ q(2328),
q(0),
],
q(southwestern guiyang hmong) => [
- q(2743),
+ q(2768),
q(0),
],
q(southwestern huishui hmong) => [
- q(2744),
+ q(2769),
q(0),
],
q(southwestern huishui miao) => [
- q(2744),
+ q(2769),
q(0),
],
q(southwestern nisu) => [
- q(5029),
+ q(5062),
q(0),
],
q(southwestern tamang) => [
- q(6637),
+ q(6686),
q(0),
],
q(southwestern tarahumara) => [
- q(6725),
+ q(6775),
q(0),
],
q(southwestern tepehuan) => [
- q(6484),
+ q(6534),
q(0),
],
q(southwestern tlaxiaco mixtec) => [
- q(4154),
+ q(4183),
q(0),
],
q(sowa) => [
- q(6241),
+ q(6288),
q(0),
],
q(sowanda) => [
- q(6101),
+ q(6146),
q(0),
],
q(sowari) => [
- q(2078),
+ q(2095),
q(0),
],
q(soyaltepec mazatec) => [
- q(6946),
+ q(6996),
q(0),
],
q(soyaltepec mixtec) => [
- q(6947),
+ q(6997),
q(0),
],
q(spanish) => [
@@ -50381,19 +50878,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(spanish sign language) => [
- q(6168),
+ q(6215),
q(0),
],
q(spiti bhoti) => [
- q(6119),
+ q(6164),
q(0),
],
q(spokane) => [
- q(6114),
+ q(6159),
q(0),
],
q(squamish) => [
- q(6132),
+ q(6179),
q(0),
],
q(sranan tongo) => [
@@ -50401,119 +50898,127 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sri lankan creole malay) => [
- q(5861),
+ q(5904),
q(0),
],
q(sri lankan sign language) => [
- q(6130),
+ q(6177),
q(0),
],
q(standard arabic) => [
- q(0866),
+ q(0869),
q(0),
],
q(standard estonian) => [
- q(2210),
+ q(2230),
q(0),
],
q(standard latvian) => [
- q(4042),
+ q(4071),
q(0),
],
q(standard malay) => [
- q(7793),
+ q(7861),
+ q(0),
+ ],
+ q(standard moroccan tamazight) => [
+ q(0480),
q(0),
],
q(stellingwerfs) => [
- q(6188),
+ q(6235),
q(0),
],
q(stod bhoti) => [
- q(5849),
+ q(5893),
+ q(0),
+ ],
+ q(stodsde) => [
+ q(3076),
q(0),
],
q(stoney) => [
- q(6191),
+ q(6238),
q(0),
],
q(straits salish) => [
- q(6194),
+ q(6241),
q(0),
],
q(suabo) => [
- q(6276),
+ q(6323),
q(0),
],
q(suarmin) => [
- q(5903),
+ q(5946),
q(0),
],
q(suau) => [
- q(6234),
+ q(6281),
q(0),
],
q(suba) => [
- q(6244),
+ q(6291),
q(0),
],
q(suba-simbiti) => [
- q(6155),
+ q(6202),
q(0),
],
q(subi) => [
- q(7370),
+ q(7428),
q(0),
],
q(subiya) => [
- q(5847),
+ q(5891),
q(0),
],
q(subtiaba) => [
- q(6209),
+ q(6256),
q(0),
],
q(sudanese arabic) => [
- q(0835),
+ q(0838),
q(0),
],
q(sudanese creole arabic) => [
- q(5363),
+ q(5402),
q(0),
],
q(sudest) => [
- q(6406),
+ q(6454),
q(0),
],
q(sudovian) => [
- q(7380),
+ q(7438),
q(0),
],
q(suena) => [
- q(6203),
+ q(6250),
q(0),
],
q(suga) => [
- q(5924),
+ q(5968),
q(0),
],
q(suganga) => [
- q(6204),
+ q(6251),
q(0),
],
q(sugut dusun) => [
- q(3736),
+ q(3765),
q(0),
],
q(sui) => [
- q(6227),
+ q(6274),
q(0),
],
q(suki) => [
- q(6205),
+ q(6252),
q(0),
],
q(suku) => [
- q(6201),
+ q(6248),
q(0),
],
q(sukuma) => [
@@ -50521,47 +51026,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sukur) => [
- q(6260),
+ q(6307),
q(0),
],
q(sukurum) => [
- q(7795),
+ q(7863),
q(0),
],
q(sula) => [
- q(6275),
+ q(6322),
q(0),
],
q(sulka) => [
- q(6200),
+ q(6247),
q(0),
],
q(sulod) => [
- q(6138),
- q(0),
- ],
- q(sulung) => [
- q(6210),
+ q(6185),
q(0),
],
q(suma) => [
- q(6125),
+ q(6172),
q(0),
],
q(sumariup) => [
- q(5977),
+ q(6022),
q(0),
],
q(sumau) => [
- q(5979),
+ q(6024),
q(0),
],
q(sumbawa) => [
- q(6058),
+ q(6103),
q(0),
],
q(sumbwa) => [
- q(6211),
+ q(6258),
q(0),
],
q(sumerian) => [
@@ -50569,11 +51070,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sumi naga) => [
- q(5021),
+ q(5054),
+ q(0),
+ ],
+ q(sumtu chin) => [
+ q(1882),
q(0),
],
q(sunam) => [
- q(6163),
+ q(6210),
q(0),
],
q(sundanese) => [
@@ -50581,67 +51086,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(sunum) => [
- q(7553),
+ q(7614),
q(0),
],
q(sunwar) => [
- q(6213),
+ q(6260),
q(0),
],
q(suomenruotsalainen viittomakieli) => [
- q(2350),
+ q(2370),
q(0),
],
q(suoy) => [
- q(6264),
+ q(6311),
q(0),
],
q(supyire senoufo) => [
- q(6115),
+ q(6160),
q(0),
],
q(sur) => [
- q(6360),
+ q(6407),
+ q(0),
+ ],
+ q(surayt) => [
+ q(6675),
q(0),
],
q(surbakhal) => [
- q(5838),
+ q(5882),
+ q(0),
+ ],
+ q(surgujia) => [
+ q(5969),
q(0),
],
q(suri) => [
- q(6207),
+ q(6254),
q(0),
],
q(surigaonon) => [
- q(5920),
+ q(5964),
q(0),
],
q(surjapuri) => [
- q(5992),
+ q(6037),
q(0),
],
q(sursurunga) => [
- q(5936),
+ q(5981),
q(0),
],
q(suruaha) => [
- q(6242),
+ q(6289),
q(0),
],
q(surubu) => [
- q(5874),
+ q(5917),
q(0),
],
q(surui) => [
- q(6148),
+ q(6195),
q(0),
],
q(surui do para) => [
- q(4146),
+ q(4175),
q(0),
],
q(susquehannock) => [
- q(6126),
+ q(6173),
q(0),
],
q(susu) => [
@@ -50649,27 +51162,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(susuami) => [
- q(6173),
+ q(6220),
q(0),
],
q(suundi) => [
- q(5878),
+ q(5921),
q(0),
],
q(suwawa) => [
- q(6239),
+ q(6286),
q(0),
],
q(suya) => [
- q(6212),
+ q(6259),
q(0),
],
q(svan) => [
- q(6214),
+ q(6261),
q(0),
],
q(swabian) => [
- q(6225),
+ q(6272),
q(0),
],
q(swahili) => [
@@ -50677,7 +51190,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(swahili (individual language)) => [
- q(6226),
+ q(6273),
q(0),
],
q(swahili (macrolanguage)) => [
@@ -50685,7 +51198,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(swampy cree) => [
- q(1875),
+ q(1883),
q(0),
],
q(swati) => [
@@ -50697,7 +51210,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(swedish sign language) => [
- q(6230),
+ q(6277),
q(0),
],
q(swiss german) => [
@@ -50705,23 +51218,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(swiss-french sign language) => [
- q(6170),
+ q(6217),
q(0),
],
q(swiss-german sign language) => [
- q(5922),
+ q(5966),
q(0),
],
q(swiss-italian sign language) => [
- q(6025),
+ q(6070),
+ q(0),
+ ],
+ q(swo) => [
+ q(6147),
q(0),
],
q(syenara senoufo) => [
- q(5960),
+ q(6005),
q(0),
],
q(sylheti) => [
- q(6261),
+ q(6308),
q(0),
],
q(syriac) => [
@@ -50729,99 +51246,103 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(t'en) => [
- q(6343),
+ q(6390),
q(0),
],
q(ta'izzi-adeni arabic) => [
- q(0594),
+ q(0595),
q(0),
],
q(taabwa) => [
- q(6291),
+ q(6338),
q(0),
],
q(tabaa zapotec) => [
- q(7667),
+ q(7733),
q(0),
],
q(tabaru) => [
- q(6324),
+ q(6371),
q(0),
],
q(tabasco chontal) => [
- q(1716),
+ q(1722),
q(0),
],
q(tabasco nahuatl) => [
- q(4815),
+ q(4844),
q(0),
],
q(tabasco zoque) => [
- q(7754),
+ q(7822),
q(0),
],
q(tabassaran) => [
- q(6280),
+ q(6327),
q(0),
],
q(tabla) => [
- q(6540),
+ q(6589),
q(0),
],
q(tabo) => [
- q(3446),
+ q(3477),
q(0),
],
q(tabriak) => [
- q(6768),
+ q(6818),
q(0),
],
q(tacahua mixtec) => [
- q(7398),
+ q(7456),
q(0),
],
q(tacana) => [
- q(6530),
+ q(6579),
q(0),
],
q(tachawit) => [
- q(5959),
+ q(6004),
q(0),
],
q(tachelhit) => [
- q(5944),
+ q(5989),
q(0),
],
q(tachoni) => [
- q(4021),
+ q(4050),
q(0),
],
q(tadaksahak) => [
- q(2133),
+ q(2151),
q(0),
],
q(tadyawan) => [
- q(6370),
+ q(6417),
q(0),
],
q(tae') => [
- q(5768),
+ q(5810),
q(0),
],
q(tafi) => [
- q(6329),
+ q(6376),
q(0),
],
q(tagabawa) => [
- q(1172),
+ q(1179),
q(0),
],
q(tagakaulo) => [
- q(3381),
+ q(3412),
q(0),
],
q(tagal murut) => [
- q(4570),
+ q(4598),
+ q(0),
+ ],
+ q(tagalaka) => [
+ q(6465),
q(0),
],
q(tagalog) => [
@@ -50829,35 +51350,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tagargrent) => [
- q(5268),
+ q(5308),
q(0),
],
q(tagbanwa) => [
- q(6322),
+ q(6369),
q(0),
],
q(tagbu) => [
- q(6313),
+ q(6360),
q(0),
],
q(tagdal) => [
- q(6349),
+ q(6396),
+ q(0),
+ ],
+ q(tagin) => [
+ q(6452),
q(0),
],
q(tagish) => [
- q(6415),
+ q(6463),
q(0),
],
q(tagoi) => [
- q(6285),
+ q(6332),
q(0),
],
q(tagwana senoufo) => [
- q(6414),
+ q(6462),
q(0),
],
q(tahaggart tamahaq) => [
- q(6433),
+ q(6482),
q(0),
],
q(tahitian) => [
@@ -50865,35 +51390,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tahltan) => [
- q(6431),
+ q(6480),
q(0),
],
q(tai) => [
- q(6297),
+ q(6344),
q(0),
],
q(tai daeng) => [
- q(6756),
+ q(6806),
q(0),
],
q(tai dam) => [
- q(1291),
+ q(1297),
q(0),
],
q(tai do) => [
- q(6752),
+ q(6802),
q(0),
],
q(tai don) => [
- q(6718),
+ q(6768),
q(0),
],
q(tai hang tong) => [
- q(6417),
+ q(6466),
q(0),
],
q(tai hongjin) => [
- q(6458),
+ q(6507),
+ q(0),
+ ],
+ q(tai laing) => [
+ q(6511),
q(0),
],
q(tai languages) => [
@@ -50901,63 +51430,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tai loi) => [
- q(6497),
+ q(6547),
q(0),
],
q(tai long) => [
- q(6422),
+ q(6471),
q(0),
],
q(tai mene) => [
- q(6520),
+ q(6569),
q(0),
],
q(tai nua) => [
- q(6352),
+ q(6399),
q(0),
],
q(tai pao) => [
- q(6585),
+ q(6634),
q(0),
],
q(tai thanh) => [
- q(6517),
+ q(6566),
q(0),
],
q(tai ya) => [
- q(1907),
+ q(1916),
q(0),
],
q(taiap) => [
- q(2570),
+ q(2593),
q(0),
],
q(taikat) => [
- q(0829),
+ q(0831),
q(0),
],
q(tainae) => [
- q(0667),
+ q(0668),
q(0),
],
q(taino) => [
- q(6544),
+ q(6593),
q(0),
],
q(tairuma) => [
- q(6771),
+ q(6821),
q(0),
],
q(taita) => [
- q(1943),
+ q(1951),
q(0),
],
q(taiwan sign language) => [
- q(6647),
+ q(6696),
q(0),
],
q(taje) => [
- q(5344),
+ q(5383),
q(0),
],
q(tajik) => [
@@ -50965,119 +51494,119 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tajiki arabic) => [
- q(0566),
+ q(0567),
q(0),
],
q(tajio) => [
- q(6358),
+ q(6405),
q(0),
],
q(tajuasohn) => [
- q(6459),
+ q(6508),
q(0),
],
q(takelma) => [
- q(6473),
+ q(6523),
q(0),
],
q(takestani) => [
- q(6478),
+ q(6528),
q(0),
],
q(takia) => [
- q(6303),
+ q(6350),
q(0),
],
q(takua) => [
- q(6483),
+ q(6533),
q(0),
],
q(takuu) => [
- q(4825),
+ q(4854),
q(0),
],
q(takwane) => [
- q(6470),
+ q(6520),
q(0),
],
q(tal) => [
- q(6288),
+ q(6335),
q(0),
],
q(tala) => [
- q(6287),
+ q(6334),
q(0),
],
q(talaandig) => [
- q(1251),
+ q(1257),
q(0),
],
q(talaud) => [
- q(6487),
+ q(6537),
q(0),
],
q(taliabu) => [
- q(6502),
+ q(6552),
q(0),
],
q(talieng) => [
- q(6354),
+ q(6401),
q(0),
],
q(talinga-bwisi) => [
- q(6490),
+ q(6540),
q(0),
],
q(talise) => [
- q(6498),
+ q(6548),
q(0),
],
q(talodi) => [
- q(6495),
+ q(6545),
q(0),
],
q(taloki) => [
- q(6491),
+ q(6541),
q(0),
],
q(talondo') => [
- q(6494),
+ q(6544),
q(0),
],
q(talu) => [
- q(7610),
+ q(7674),
q(0),
],
q(talur) => [
- q(2916),
+ q(2940),
q(0),
],
q(talysh) => [
- q(6505),
+ q(6554),
q(0),
],
q(tama (chad)) => [
- q(6506),
+ q(6555),
q(0),
],
q(tama (colombia)) => [
- q(6381),
+ q(6428),
q(0),
],
q(tamagario) => [
- q(6332),
+ q(6379),
q(0),
],
q(taman (indonesia)) => [
- q(6518),
+ q(6567),
q(0),
],
q(taman (myanmar)) => [
- q(6336),
+ q(6383),
q(0),
],
q(tamanaku) => [
- q(6529),
+ q(6578),
q(0),
],
q(tamashek) => [
@@ -51085,31 +51614,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tamasheq) => [
- q(6292),
+ q(6339),
q(0),
],
q(tamazola mixtec) => [
- q(6953),
+ q(7003),
q(0),
],
q(tambas) => [
- q(6359),
+ q(6406),
q(0),
],
q(tambora) => [
- q(7428),
+ q(7488),
q(0),
],
q(tambotalo) => [
- q(6499),
+ q(6549),
q(0),
],
q(tambunan dusun) => [
- q(3737),
+ q(3766),
q(0),
],
q(tami) => [
- q(6528),
+ q(6577),
q(0),
],
q(tamil) => [
@@ -51117,191 +51646,199 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tamki) => [
- q(6298),
+ q(6345),
q(0),
],
q(tamnim citak) => [
- q(6516),
+ q(6565),
q(0),
],
q(tampias lobu) => [
- q(3980),
+ q(4009),
q(0),
],
q(tampuan) => [
- q(6590),
+ q(6639),
q(0),
],
q(tampulma) => [
- q(6583),
+ q(6632),
q(0),
],
q(tanacross) => [
- q(6327),
+ q(6374),
q(0),
],
q(tanahmerah) => [
- q(6337),
+ q(6384),
q(0),
],
q(tanaina) => [
- q(6392),
+ q(6439),
q(0),
],
q(tanapag) => [
- q(6591),
+ q(6640),
q(0),
],
q(tandaganon) => [
- q(6405),
+ q(6453),
q(0),
],
q(tandia) => [
- q(6537),
+ q(6586),
q(0),
],
q(tandroy-mahafaly malagasy) => [
- q(6369),
+ q(6416),
q(0),
],
q(tanema) => [
- q(6551),
+ q(6600),
q(0),
],
q(tangale) => [
- q(6289),
+ q(6336),
q(0),
],
q(tangchangya) => [
- q(6549),
+ q(6598),
q(0),
],
q(tangga) => [
- q(6402),
+ q(6449),
q(0),
],
q(tanggu) => [
- q(6412),
+ q(6460),
q(0),
],
- q(tangkhul naga) => [
- q(4919),
+ q(tangkhul naga (india)) => [
+ q(4948),
+ q(0),
+ ],
+ q(tangkhul naga (myanmar)) => [
+ q(5078),
q(0),
],
q(tangko) => [
- q(6482),
+ q(6532),
q(0),
],
q(tanglang) => [
- q(7611),
+ q(7675),
q(0),
],
q(tangoa) => [
- q(6407),
+ q(6455),
q(0),
],
q(tanguat) => [
- q(6318),
+ q(6365),
q(0),
],
q(tangut) => [
- q(6735),
+ q(6785),
q(0),
],
q(tanimbili) => [
- q(6305),
+ q(6352),
q(0),
],
q(tanimuca-retuara) => [
- q(6532),
+ q(6581),
q(0),
],
q(tanjijili) => [
- q(6796),
+ q(6846),
q(0),
],
q(tankarana malagasy) => [
- q(7312),
+ q(7368),
q(0),
],
q(tanosy malagasy) => [
- q(6747),
+ q(6797),
+ q(0),
+ ],
+ q(tanudan kalinga) => [
+ q(3442),
q(0),
],
q(tanzanian sign language) => [
- q(6762),
+ q(6812),
q(0),
],
q(tapeba) => [
- q(6302),
+ q(6349),
q(0),
],
q(tapei) => [
- q(0648),
+ q(0649),
q(0),
],
q(tapiete) => [
- q(6580),
+ q(6629),
q(0),
],
q(tapirape) => [
- q(6284),
+ q(6331),
q(0),
],
q(tarao naga) => [
- q(6620),
+ q(6669),
q(0),
],
q(tareng) => [
- q(6409),
+ q(6457),
q(0),
],
q(tariana) => [
- q(6283),
+ q(6330),
q(0),
],
q(tarifit) => [
- q(5721),
+ q(5762),
q(0),
],
q(tarok) => [
- q(7487),
+ q(7546),
q(0),
],
q(taroko) => [
- q(6627),
+ q(6676),
q(0),
],
q(tarpia) => [
- q(6578),
+ q(6627),
q(0),
],
q(tartessian) => [
- q(6742),
+ q(6792),
q(0),
],
q(tasawaq) => [
- q(6724),
+ q(6774),
q(0),
],
q(tase naga) => [
- q(5027),
+ q(5060),
q(0),
],
q(tasmanian) => [
- q(7402),
+ q(7460),
q(0),
],
q(tasmate) => [
- q(6524),
+ q(6573),
q(0),
],
q(tataltepec chatino) => [
- q(1878),
+ q(1886),
q(0),
],
q(tatana) => [
- q(6746),
+ q(6796),
q(0),
],
q(tatar) => [
@@ -51309,235 +51846,235 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tatuyo) => [
- q(6296),
+ q(6343),
q(0),
],
q(tauade) => [
- q(6658),
+ q(6707),
q(0),
],
q(taulil) => [
- q(6687),
+ q(6736),
q(0),
],
q(taungyo) => [
- q(6339),
+ q(6386),
q(0),
],
q(taupota) => [
- q(6575),
+ q(6624),
q(0),
],
q(tause) => [
- q(6282),
+ q(6329),
q(0),
],
q(taushiro) => [
- q(6623),
+ q(6672),
q(0),
],
q(tausug) => [
- q(6638),
+ q(6687),
q(0),
],
q(tauya) => [
- q(6748),
+ q(6798),
q(0),
],
q(taveta) => [
- q(6707),
+ q(6756),
q(0),
],
q(tavoyan) => [
- q(6705),
+ q(6754),
q(0),
],
q(tavringer romani) => [
- q(5755),
+ q(5796),
q(0),
],
q(tawala) => [
- q(6315),
+ q(6362),
q(0),
],
q(tawallammat tamajaq) => [
- q(6671),
+ q(6720),
q(0),
],
q(tawande) => [
- q(7400),
+ q(7458),
q(0),
],
q(tawang monpa) => [
- q(6720),
+ q(6770),
q(0),
],
q(tawara) => [
- q(6719),
+ q(6769),
q(0),
],
q(taworta) => [
- q(6316),
+ q(6363),
q(0),
],
q(tawoyan) => [
- q(6730),
+ q(6780),
q(0),
],
q(tawr chin) => [
- q(6340),
+ q(6387),
q(0),
],
q(tay) => [
- q(6761),
+ q(6811),
q(0),
],
q(tay boi) => [
- q(6294),
+ q(6341),
q(0),
],
q(tay khang) => [
- q(6548),
+ q(6597),
q(0),
],
q(tay sa pa) => [
- q(6757),
+ q(6807),
q(0),
],
q(tay tac) => [
- q(6758),
+ q(6808),
q(0),
],
q(tayabas ayta) => [
- q(1005),
+ q(1011),
q(0),
],
q(tayart tamajeq) => [
- q(6437),
+ q(6486),
q(0),
],
q(tayo) => [
- q(1757),
+ q(1762),
q(0),
],
q(taznatit) => [
- q(2584),
+ q(2608),
q(0),
],
q(tboli) => [
- q(6312),
+ q(6359),
q(0),
],
q(tchitchege) => [
- q(6335),
+ q(6382),
q(0),
],
q(tchumbuli) => [
- q(1393),
+ q(1399),
q(0),
],
q(te'un) => [
- q(6702),
+ q(6751),
q(0),
],
q(teanu) => [
- q(6481),
+ q(6531),
q(0),
],
q(tebi) => [
- q(2075),
+ q(2092),
q(0),
],
q(tebul sign language) => [
- q(6653),
+ q(6702),
q(0),
],
q(tebul ure dogon) => [
- q(2144),
+ q(2164),
q(0),
],
q(tecpatlan totonac) => [
- q(6345),
+ q(6392),
q(0),
],
q(tedaga) => [
- q(6693),
+ q(6742),
q(0),
],
q(tedim chin) => [
- q(1880),
+ q(1888),
q(0),
],
q(tee) => [
- q(6476),
+ q(6526),
q(0),
],
q(teen) => [
- q(3975),
+ q(4004),
q(0),
],
q(tefaro) => [
- q(6393),
+ q(6440),
q(0),
],
q(tegali) => [
- q(5684),
+ q(5724),
q(0),
],
q(tehit) => [
- q(3488),
+ q(3518),
q(0),
],
q(tehuelche) => [
- q(6378),
+ q(6425),
q(0),
],
q(tejalapan zapotec) => [
- q(7804),
+ q(7872),
q(0),
],
q(teke-ebo) => [
- q(2190),
+ q(2210),
q(0),
],
q(teke-fuumu) => [
- q(2876),
+ q(2899),
q(0),
],
q(teke-kukuya) => [
- q(3371),
+ q(3402),
q(0),
],
q(teke-laali) => [
- q(3911),
+ q(3939),
q(0),
],
q(teke-nzikou) => [
- q(5120),
+ q(5158),
q(0),
],
q(teke-tege) => [
- q(6377),
+ q(6424),
q(0),
],
q(teke-tsaayi) => [
- q(6751),
+ q(6801),
q(0),
],
q(teke-tyee) => [
- q(6760),
+ q(6810),
q(0),
],
q(tektiteko) => [
- q(6657),
+ q(6706),
q(0),
],
q(tela-masbuar) => [
- q(6704),
+ q(6753),
q(0),
],
q(telefol) => [
- q(6488),
+ q(6538),
q(0),
],
q(telugu) => [
@@ -51545,147 +52082,147 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(teluti) => [
- q(6500),
+ q(6550),
q(0),
],
q(tem) => [
- q(3186),
+ q(3219),
q(0),
],
q(temacine tamazight) => [
- q(6464),
+ q(6514),
q(0),
],
q(temascaltepec nahuatl) => [
- q(4831),
+ q(4860),
q(0),
],
q(tembe) => [
- q(6596),
+ q(6645),
q(0),
],
q(tembo (kitembo)) => [
- q(6319),
+ q(6366),
q(0),
],
q(tembo (motembo)) => [
- q(6526),
+ q(6575),
q(0),
],
q(teme) => [
- q(6362),
+ q(6409),
q(0),
],
q(temein) => [
- q(6384),
+ q(6431),
q(0),
],
q(temi) => [
- q(6104),
+ q(6149),
q(0),
],
q(temiar) => [
- q(6371),
+ q(6418),
q(0),
],
q(temoaya otomi) => [
- q(5262),
+ q(5302),
q(0),
],
q(temoq) => [
- q(6519),
+ q(6568),
q(0),
],
q(tempasuk dusun) => [
- q(6367),
+ q(6414),
q(0),
],
q(temuan) => [
- q(6527),
+ q(6576),
q(0),
],
q(tena) => [
- q(1134),
+ q(1141),
q(0),
],
q(tena lowland quichua) => [
- q(5630),
+ q(5670),
q(0),
],
q(tenango otomi) => [
- q(5258),
+ q(5298),
q(0),
],
q(tene kan dogon) => [
- q(2138),
+ q(2157),
q(0),
],
q(tenggarong kutai malay) => [
- q(6929),
+ q(6979),
q(0),
],
q(tengger) => [
- q(6385),
+ q(6432),
q(0),
],
q(tenharim) => [
- q(5286),
+ q(5326),
q(0),
],
q(tenino) => [
- q(6599),
+ q(6648),
q(0),
],
q(tenis) => [
- q(6546),
+ q(6595),
q(0),
],
q(tennet) => [
- q(6389),
+ q(6436),
q(0),
],
q(teop) => [
- q(6449),
+ q(6498),
q(0),
],
q(teor) => [
- q(6387),
+ q(6434),
q(0),
],
q(tepecano) => [
- q(6383),
+ q(6430),
q(0),
],
q(tepetotutla chinantec) => [
- q(1798),
+ q(1805),
q(0),
],
q(tepeuxila cuicatec) => [
- q(1910),
+ q(1919),
q(0),
],
q(tepinapa chinantec) => [
- q(1881),
+ q(1889),
q(0),
],
q(tepo krumen) => [
- q(6374),
+ q(6421),
q(0),
],
q(ter sami) => [
- q(5995),
+ q(6040),
q(0),
],
q(tera) => [
- q(6672),
+ q(6721),
q(0),
],
q(terebu) => [
- q(6608),
+ q(6657),
q(0),
],
q(terei) => [
- q(1501),
+ q(1507),
q(0),
],
q(tereno) => [
@@ -51693,59 +52230,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(teressa) => [
- q(6376),
+ q(6423),
q(0),
],
q(tereweng) => [
- q(6717),
+ q(6767),
q(0),
],
q(teribe) => [
- q(6394),
+ q(6441),
q(0),
],
q(terik) => [
- q(6373),
+ q(6420),
q(0),
],
q(termanu) => [
- q(6727),
+ q(6777),
q(0),
],
q(ternate) => [
- q(6395),
+ q(6442),
q(0),
],
q(ternateno) => [
- q(6512),
+ q(6561),
q(0),
],
q(tesaka malagasy) => [
- q(6472),
+ q(6522),
q(0),
],
q(tese) => [
- q(3209),
+ q(3241),
q(0),
],
q(teshenawa) => [
- q(6713),
+ q(6763),
q(0),
],
q(teso) => [
- q(6382),
+ q(6429),
q(0),
],
q(tetela) => [
- q(6492),
+ q(6542),
q(0),
],
q(tetelcingo nahuatl) => [
- q(4819),
+ q(4848),
q(0),
],
q(tetete) => [
- q(6372),
+ q(6419),
q(0),
],
q(tetum) => [
@@ -51753,51 +52290,51 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tetun dili) => [
- q(6366),
+ q(6413),
q(0),
],
q(teutila cuicatec) => [
- q(1906),
+ q(1915),
q(0),
],
q(tewa (indonesia)) => [
- q(6715),
+ q(6765),
q(0),
],
q(tewa (usa)) => [
- q(6388),
+ q(6435),
q(0),
],
q(tewe) => [
- q(6729),
+ q(6779),
q(0),
],
q(texcatepec otomi) => [
- q(5265),
+ q(5305),
q(0),
],
q(texistepec popoluca) => [
- q(5499),
+ q(5539),
q(0),
],
q(texmelucan zapotec) => [
- q(7782),
+ q(7850),
q(0),
],
q(tezoatlan mixtec) => [
- q(4600),
+ q(4628),
q(0),
],
q(tha) => [
- q(6436),
+ q(6485),
q(0),
],
q(thachanadan) => [
- q(6426),
+ q(6475),
q(0),
],
q(thado chin) => [
- q(6348),
+ q(6395),
q(0),
],
q(thai) => [
@@ -51805,95 +52342,99 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(thai sign language) => [
- q(6645),
+ q(6694),
q(0),
],
q(thai song) => [
- q(6084),
+ q(6129),
+ q(0),
+ ],
+ q(thaiphum chin) => [
+ q(1891),
q(0),
],
q(thakali) => [
- q(6430),
+ q(6479),
q(0),
],
q(thangal naga) => [
- q(4882),
+ q(4912),
q(0),
],
q(thangmi) => [
- q(6420),
+ q(6469),
q(0),
],
q(thao) => [
- q(6158),
+ q(6205),
q(0),
],
q(tharaka) => [
- q(6423),
+ q(6472),
q(0),
],
q(thayore) => [
- q(6418),
+ q(6467),
q(0),
],
q(thaypan) => [
- q(6755),
+ q(6805),
q(0),
],
q(the) => [
- q(6435),
+ q(6484),
q(0),
],
q(tho) => [
- q(6569),
+ q(6618),
q(0),
],
q(thompson) => [
- q(6427),
+ q(6476),
q(0),
],
q(thopho) => [
- q(7612),
+ q(7676),
q(0),
],
q(thracian) => [
- q(6736),
+ q(6786),
q(0),
],
q(thu lao) => [
- q(6753),
+ q(6803),
q(0),
],
q(thudam) => [
- q(6434),
+ q(6483),
q(0),
],
q(thulung) => [
- q(6356),
+ q(6403),
q(0),
],
q(thurawal) => [
- q(6308),
+ q(6355),
q(0),
],
q(thuri) => [
- q(6432),
+ q(6481),
q(0),
],
q(tiagbamrin aizi) => [
- q(0682),
+ q(0683),
q(0),
],
q(tiale) => [
- q(4373),
+ q(4401),
q(0),
],
q(tiang) => [
- q(6310),
+ q(6357),
q(0),
],
q(tibea) => [
- q(4811),
+ q(4840),
q(0),
],
q(tibetan) => [
@@ -51901,59 +52442,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tibeto-burman languages) => [
- q(0526),
+ q(0527),
q(0),
],
q(tichurong) => [
- q(6338),
+ q(6385),
q(0),
],
q(ticuna) => [
- q(6326),
+ q(6373),
q(0),
],
q(tidaa mixtec) => [
- q(4528),
+ q(4556),
q(0),
],
q(tidikelt tamazight) => [
- q(6438),
+ q(6487),
q(0),
],
q(tidong) => [
- q(6440),
+ q(6489),
q(0),
],
q(tidore) => [
- q(6706),
+ q(6755),
q(0),
],
q(tiefo) => [
- q(6451),
+ q(6500),
q(0),
],
q(tiemacewe bozo) => [
- q(1359),
+ q(1365),
q(0),
],
q(tiene) => [
- q(6443),
+ q(6492),
q(0),
],
q(tieyaxo bozo) => [
- q(1369),
+ q(1375),
q(0),
],
q(tifal) => [
- q(6441),
+ q(6490),
q(0),
],
q(tigak) => [
- q(6398),
+ q(6445),
q(0),
],
q(tigon mbembe) => [
- q(5115),
+ q(5153),
q(0),
],
q(tigre) => [
@@ -51965,47 +52506,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tii) => [
- q(6741),
+ q(6791),
q(0),
],
q(tijaltepec mixtec) => [
- q(7390),
+ q(7448),
q(0),
],
q(tikar) => [
- q(6445),
+ q(6494),
q(0),
],
q(tikopia) => [
- q(6475),
+ q(6525),
q(0),
],
q(tilapa otomi) => [
- q(5256),
+ q(5296),
q(0),
],
q(tillamook) => [
- q(6446),
+ q(6495),
q(0),
],
q(tilquiapan zapotec) => [
- q(7803),
+ q(7871),
q(0),
],
q(tilung) => [
- q(6444),
+ q(6493),
q(0),
],
q(tima) => [
- q(6523),
+ q(6572),
q(0),
],
q(timbe) => [
- q(6447),
+ q(6496),
q(0),
],
q(timbisha) => [
- q(5291),
+ q(5331),
q(0),
],
q(timne) => [
@@ -52013,75 +52554,71 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(timor pidgin) => [
- q(6710),
+ q(6760),
q(0),
],
q(timucua) => [
- q(6462),
+ q(6512),
q(0),
],
q(timugon murut) => [
- q(6442),
- q(0),
- ],
- q(tina sambal) => [
- q(7364),
+ q(6491),
q(0),
],
q(tinani) => [
- q(3768),
+ q(3797),
q(0),
],
q(tindi) => [
- q(6448),
+ q(6497),
q(0),
],
q(tingui-boto) => [
- q(6413),
+ q(6461),
q(0),
],
q(tinigua) => [
- q(6453),
+ q(6502),
q(0),
],
q(tinoc kallahan) => [
- q(6534),
+ q(6583),
q(0),
],
q(tinputz) => [
- q(6595),
+ q(6644),
q(0),
],
q(tippera) => [
- q(6577),
+ q(6626),
q(0),
],
q(tira) => [
- q(6439),
+ q(6488),
q(0),
],
q(tirahi) => [
- q(6607),
+ q(6656),
q(0),
],
q(tiranige diga dogon) => [
- q(6353),
+ q(6400),
q(0),
],
q(tiri) => [
- q(1735),
+ q(1741),
q(0),
],
q(tiruray) => [
- q(6457),
+ q(6506),
q(0),
],
q(tita) => [
- q(6363),
+ q(6410),
q(0),
],
q(titan) => [
- q(6676),
+ q(6725),
q(0),
],
q(tiv) => [
@@ -52089,47 +52626,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tiwa) => [
- q(3761),
+ q(3790),
q(0),
],
q(tiwi) => [
- q(6455),
+ q(6504),
q(0),
],
q(tjurruru) => [
- q(6466),
+ q(6516),
q(0),
],
q(tlachichilco tepehua) => [
- q(6589),
+ q(6638),
q(0),
],
q(tlacoapa me'phaa) => [
- q(6582),
+ q(6631),
q(0),
],
q(tlacoapa tlapanec) => [
- q(6582),
+ q(6631),
q(0),
],
q(tlacoatzintepec chinantec) => [
- q(1883),
+ q(1892),
q(0),
],
q(tlacolulita zapotec) => [
- q(7767),
+ q(7835),
q(0),
],
q(tlahuitoltepec mixe) => [
- q(4614),
+ q(4642),
q(0),
],
q(tlamacazapa nahuatl) => [
- q(5071),
+ q(5105),
q(0),
],
q(tlazoyaltepec mixtec) => [
- q(4437),
+ q(4465),
q(0),
],
q(tlhingan-hol) => [
@@ -52141,91 +52678,91 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(to) => [
- q(6574),
+ q(6623),
q(0),
],
q(to'abaita) => [
- q(4334),
+ q(4362),
q(0),
],
q(toaripi) => [
- q(6600),
+ q(6649),
q(0),
],
q(toba) => [
- q(6554),
+ q(6603),
q(0),
],
q(toba-maskoy) => [
- q(6511),
+ q(6560),
q(0),
],
q(tobagonian creole english) => [
- q(6403),
+ q(6450),
q(0),
],
q(tobanga) => [
- q(6535),
+ q(6584),
q(0),
],
q(tobati) => [
- q(6663),
+ q(6712),
q(0),
],
q(tobelo) => [
- q(6485),
+ q(6535),
q(0),
],
q(tobian) => [
- q(6572),
+ q(6621),
q(0),
],
q(tobilung) => [
- q(6397),
+ q(6444),
q(0),
],
q(tobo) => [
- q(6321),
+ q(6368),
q(0),
],
q(tocantins asurini) => [
- q(0901),
+ q(0904),
q(0),
],
q(tocho) => [
- q(6300),
+ q(6347),
q(0),
],
q(toda) => [
- q(6346),
+ q(6393),
q(0),
],
q(todrah) => [
- q(6364),
+ q(6411),
q(0),
],
q(tofanma) => [
- q(6489),
+ q(6539),
q(0),
],
q(tofin gbe) => [
- q(6391),
+ q(6438),
q(0),
],
q(togbo-vara banda) => [
- q(6567),
+ q(6616),
q(0),
],
q(togoyo) => [
- q(6416),
+ q(6464),
q(0),
],
q(tohono o'odham) => [
- q(5218),
+ q(5257),
q(0),
],
q(tojolabal) => [
- q(6561),
+ q(6610),
q(0),
],
q(tok pisin) => [
@@ -52233,7 +52770,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tokano) => [
- q(7809),
+ q(7877),
q(0),
],
q(tokelau) => [
@@ -52241,75 +52778,79 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tokharian a) => [
- q(7393),
+ q(7451),
q(0),
],
q(tokharian b) => [
- q(6732),
+ q(6782),
q(0),
],
q(toku-no-shima) => [
- q(6474),
+ q(6524),
q(0),
],
q(tol) => [
- q(3045),
+ q(3072),
q(0),
],
q(tolaki) => [
- q(3783),
+ q(3812),
q(0),
],
q(tolomako) => [
- q(6493),
+ q(6543),
q(0),
],
q(tolowa) => [
- q(6562),
+ q(6611),
q(0),
],
q(toma) => [
- q(6556),
+ q(6605),
q(0),
],
q(tomadino) => [
- q(6357),
+ q(6404),
q(0),
],
q(tombelala) => [
- q(6670),
+ q(6719),
q(0),
],
q(tombonuo) => [
- q(6731),
+ q(6781),
q(0),
],
q(tombulu) => [
- q(6563),
+ q(6612),
q(0),
],
q(tomedes) => [
- q(6557),
+ q(6606),
q(0),
],
q(tomini) => [
- q(6738),
+ q(6788),
+ q(0),
+ ],
+ q(tommo so dogon) => [
+ q(2159),
q(0),
],
q(tomo kan dogon) => [
- q(2139),
+ q(2158),
q(0),
],
q(tomoip) => [
- q(6601),
+ q(6650),
q(0),
],
q(tondano) => [
- q(6361),
+ q(6408),
q(0),
],
q(tondi songway kiini) => [
- q(6648),
+ q(6697),
q(0),
],
q(tonga) => [
@@ -52321,7 +52862,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tonga (thailand)) => [
- q(6553),
+ q(6602),
q(0),
],
q(tonga (tonga islands)) => [
@@ -52329,263 +52870,263 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tonga (zambia)) => [
- q(6560),
+ q(6609),
q(0),
],
q(tongwe) => [
- q(6552),
+ q(6601),
q(0),
],
q(tonjon) => [
- q(6463),
+ q(6513),
q(0),
],
q(tonkawa) => [
- q(6606),
+ q(6655),
q(0),
],
q(tonsawang) => [
- q(6550),
+ q(6599),
q(0),
],
q(tonsea) => [
- q(6743),
+ q(6793),
q(0),
],
q(tontemboan) => [
- q(6547),
+ q(6596),
q(0),
],
q(tooro) => [
- q(6664),
+ q(6713),
q(0),
],
q(topoiyo) => [
- q(6573),
+ q(6622),
q(0),
],
q(toposa) => [
- q(6566),
+ q(6615),
q(0),
],
q(tora) => [
- q(6631),
+ q(6680),
q(0),
],
q(toraja-sa'dan) => [
- q(5871),
+ q(5914),
q(0),
],
q(toram) => [
- q(6616),
+ q(6665),
q(0),
],
q(torau) => [
- q(6675),
+ q(6724),
q(0),
],
q(tornedalen finnish) => [
- q(2321),
+ q(2340),
q(0),
],
q(toro) => [
- q(6368),
+ q(6415),
q(0),
],
q(toro so dogon) => [
- q(2142),
+ q(2162),
q(0),
],
q(toro tegu dogon) => [
- q(2143),
+ q(2163),
q(0),
],
q(toromono) => [
- q(6542),
+ q(6591),
q(0),
],
q(torona) => [
- q(6603),
+ q(6652),
q(0),
],
q(torres strait creole) => [
- q(6342),
+ q(6389),
q(0),
],
q(torricelli) => [
- q(6379),
+ q(6426),
q(0),
],
q(torwali) => [
- q(6628),
+ q(6677),
q(0),
],
q(tosk albanian) => [
- q(0760),
+ q(0762),
q(0),
],
q(totela) => [
- q(6666),
+ q(6715),
q(0),
],
q(toto) => [
- q(6740),
+ q(6790),
q(0),
],
q(totoli) => [
- q(6734),
+ q(6784),
q(0),
],
q(totomachapan zapotec) => [
- q(7764),
+ q(7832),
q(0),
],
q(totontepec mixe) => [
- q(4519),
+ q(4547),
q(0),
],
q(totoro) => [
- q(6665),
+ q(6714),
q(0),
],
q(touo) => [
- q(6605),
+ q(6654),
q(0),
],
q(toura (cote d'ivoire)) => [
- q(4762),
+ q(4790),
q(0),
],
q(toura (papua new guinea)) => [
- q(2099),
+ q(2117),
q(0),
],
q(towei) => [
- q(6668),
+ q(6717),
q(0),
],
q(trans-new guinea languages) => [
- q(0515),
+ q(0516),
q(0),
],
q(transalpine gaulish) => [
- q(7387),
+ q(7445),
q(0),
],
q(traveller danish) => [
- q(5740),
+ q(5781),
q(0),
],
q(traveller norwegian) => [
- q(5743),
+ q(5784),
q(0),
],
q(traveller scottish) => [
- q(6617),
+ q(6666),
q(0),
],
q(tregami) => [
- q(6618),
+ q(6667),
q(0),
],
q(tremembe) => [
- q(6510),
+ q(6559),
q(0),
],
q(trieng) => [
- q(6183),
+ q(6230),
q(0),
],
q(trimuris) => [
- q(6450),
+ q(6499),
q(0),
],
q(tring) => [
- q(6408),
+ q(6456),
q(0),
],
q(tringgus-sembaan bidayuh) => [
- q(6629),
+ q(6678),
q(0),
],
q(trinidad and tobago sign language) => [
- q(4014),
+ q(4043),
q(0),
],
q(trinidadian creole english) => [
- q(6612),
+ q(6661),
q(0),
],
q(trinitario) => [
- q(6619),
+ q(6668),
q(0),
],
q(trio) => [
- q(6615),
+ q(6664),
q(0),
],
q(truka) => [
- q(6467),
+ q(6517),
q(0),
],
q(trumai) => [
- q(6594),
+ q(6643),
q(0),
],
q(ts'un-lao) => [
- q(6642),
+ q(6691),
q(0),
],
q(tsaangi) => [
- q(6632),
+ q(6681),
q(0),
],
q(tsakhur) => [
- q(6477),
+ q(6527),
q(0),
],
q(tsakonian) => [
- q(6635),
+ q(6684),
q(0),
],
q(tsakwambo) => [
- q(3640),
+ q(3670),
q(0),
],
q(tsamai) => [
- q(6633),
+ q(6682),
q(0),
],
q(tsat) => [
- q(2823),
+ q(2847),
q(0),
],
q(tsaukambo) => [
- q(3640),
+ q(3670),
q(0),
],
q(tseku) => [
- q(6641),
+ q(6690),
q(0),
],
q(tsetsaut) => [
- q(6733),
+ q(6783),
q(0),
],
q(tshangla) => [
- q(6640),
+ q(6689),
q(0),
],
q(tsikimba) => [
- q(3190),
+ q(3223),
q(0),
],
q(tsimane) => [
- q(1650),
+ q(1656),
q(0),
],
q(tsimihety malagasy) => [
- q(7313),
+ q(7369),
q(0),
],
q(tsimshian) => [
@@ -52593,19 +53134,19 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tsishingini) => [
- q(6651),
+ q(6700),
q(0),
],
q(tso) => [
- q(3808),
+ q(3836),
q(0),
],
q(tsoa) => [
- q(2722),
+ q(2747),
q(0),
],
q(tsogo) => [
- q(6650),
+ q(6699),
q(0),
],
q(tsonga) => [
@@ -52613,31 +53154,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tsotsitaal) => [
- q(2330),
+ q(2350),
q(0),
],
q(tsotso) => [
- q(4020),
+ q(4049),
q(0),
],
q(tsou) => [
- q(6649),
+ q(6698),
q(0),
],
q(tsum) => [
- q(6679),
+ q(6728),
q(0),
],
q(tsuvadi) => [
- q(6701),
+ q(6750),
q(0),
],
q(tsuvan) => [
- q(6639),
+ q(6688),
q(0),
],
q(tswa) => [
- q(6634),
+ q(6683),
q(0),
],
q(tswana) => [
@@ -52645,95 +53186,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tswapong) => [
- q(6722),
+ q(6772),
q(0),
],
q(tu) => [
- q(4272),
+ q(4300),
q(0),
],
q(tuamotuan) => [
- q(5461),
+ q(5500),
q(0),
],
q(tubar) => [
- q(6320),
+ q(6367),
q(0),
],
q(tubatulabal) => [
- q(6681),
+ q(6730),
q(0),
],
q(tucano) => [
- q(6692),
+ q(6741),
q(0),
],
q(tugen) => [
- q(6698),
+ q(6747),
q(0),
],
q(tugun) => [
- q(6766),
+ q(6816),
q(0),
],
q(tugutil) => [
- q(6689),
+ q(6738),
q(0),
],
q(tukang besi north) => [
- q(3281),
+ q(3312),
q(0),
],
q(tukang besi south) => [
- q(1194),
+ q(1201),
q(0),
],
q(tuki) => [
- q(1020),
+ q(1028),
q(0),
],
q(tukpa) => [
- q(6587),
+ q(6636),
q(0),
],
q(tukudede) => [
- q(6469),
+ q(6519),
q(0),
],
q(tukumanfed) => [
- q(6471),
+ q(6521),
q(0),
],
q(tula) => [
- q(6690),
+ q(6739),
q(0),
],
q(tulehu) => [
- q(6501),
+ q(6551),
q(0),
],
q(tulishi) => [
- q(6390),
+ q(6437),
q(0),
],
q(tulu) => [
- q(6347),
+ q(6394),
q(0),
],
q(tulu-bohuai) => [
- q(5678),
+ q(5718),
q(0),
],
q(tuma-irumu) => [
- q(2938),
+ q(2962),
q(0),
],
q(tumak) => [
- q(6508),
+ q(6557),
q(0),
],
q(tumari kanuri) => [
- q(3536),
+ q(3566),
q(0),
],
q(tumbuka) => [
@@ -52741,87 +53282,87 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tumi) => [
- q(3369),
+ q(3400),
q(0),
],
q(tumleo) => [
- q(6521),
+ q(6570),
q(0),
],
q(tumshuqese) => [
- q(7395),
+ q(7453),
q(0),
],
q(tumtum) => [
- q(6317),
+ q(6364),
q(0),
],
q(tumulung sisaala) => [
- q(5970),
+ q(6015),
q(0),
],
q(tumzabt) => [
- q(4648),
+ q(4676),
q(0),
],
q(tundra enets) => [
- q(2245),
+ q(2264),
q(0),
],
q(tunen) => [
- q(1031),
+ q(6758),
q(0),
],
q(tungag) => [
- q(3793),
+ q(3822),
q(0),
],
q(tunggare) => [
- q(6625),
+ q(6674),
q(0),
],
q(tungus languages) => [
- q(0528),
+ q(0529),
q(0),
],
q(tunia) => [
- q(6686),
+ q(6735),
q(0),
],
q(tunica) => [
- q(6691),
+ q(6740),
q(0),
],
q(tunisian arabic) => [
- q(0625),
+ q(0626),
q(0),
],
q(tunisian sign language) => [
- q(6636),
+ q(6685),
q(0),
],
q(tunjung) => [
- q(6460),
+ q(6509),
q(0),
],
q(tunni) => [
- q(6602),
+ q(6651),
q(0),
],
q(tunzu) => [
- q(2183),
+ q(2203),
q(0),
],
q(tuotomb) => [
- q(6660),
+ q(6709),
q(0),
],
q(tupari) => [
- q(6588),
+ q(6637),
q(0),
],
q(tupi) => [
- q(6592),
+ q(6641),
q(0),
],
q(tupi languages) => [
@@ -52829,47 +53370,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tupinamba) => [
- q(6584),
+ q(6633),
q(0),
],
q(tupinikin) => [
- q(6581),
+ q(6630),
q(0),
],
q(tupuri) => [
- q(6688),
+ q(6737),
q(0),
],
q(turaka) => [
- q(6614),
+ q(6663),
q(0),
],
q(turi) => [
- q(6610),
+ q(6659),
q(0),
],
q(turiwara) => [
- q(6726),
+ q(6776),
q(0),
],
q(turk isaret dili) => [
- q(6643),
+ q(6692),
q(0),
],
q(turka) => [
- q(6699),
+ q(6748),
q(0),
],
q(turkana) => [
- q(6696),
+ q(6745),
q(0),
],
q(turkic khalaj) => [
- q(3384),
+ q(3415),
q(0),
],
q(turkic languages) => [
- q(0527),
+ q(0528),
q(0),
],
q(turkish) => [
@@ -52877,7 +53418,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(turkish sign language) => [
- q(6643),
+ q(6692),
q(0),
],
q(turkish, ottoman (1500-1928)) => [
@@ -52889,47 +53430,47 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(turks and caicos creole english) => [
- q(6333),
+ q(6380),
q(0),
],
q(turoyo) => [
- q(6626),
+ q(6675),
q(0),
],
q(turumsa) => [
- q(6598),
+ q(6647),
q(0),
],
q(turung) => [
- q(6630),
+ q(6679),
q(0),
],
q(tuscarora) => [
- q(6694),
+ q(6743),
q(0),
],
q(tutelo) => [
- q(6655),
+ q(6704),
q(0),
],
q(tutong) => [
- q(6661),
+ q(6710),
q(0),
],
q(tutsa naga) => [
- q(6708),
+ q(6757),
q(0),
],
q(tutuba) => [
- q(6513),
+ q(6562),
q(0),
],
q(tututepec mixtec) => [
- q(4525),
+ q(4553),
q(0),
],
q(tututni) => [
- q(6695),
+ q(6744),
q(0),
],
q(tuvalu) => [
@@ -52941,39 +53482,39 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tuwali ifugao) => [
- q(2875),
+ q(2898),
q(0),
],
q(tuwari) => [
- q(6728),
+ q(6778),
q(0),
],
q(tuwuli) => [
- q(1365),
+ q(1371),
q(0),
],
q(tuxa) => [
- q(6683),
+ q(6732),
q(0),
],
q(tuxinawa) => [
- q(6697),
+ q(6746),
q(0),
],
q(tuyuca) => [
- q(6684),
+ q(6733),
q(0),
],
q(twana) => [
- q(6711),
+ q(6761),
q(0),
],
q(twendi) => [
- q(6721),
+ q(6771),
q(0),
],
q(twents) => [
- q(6714),
+ q(6764),
q(0),
],
q(twi) => [
@@ -52981,75 +53522,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(tyap) => [
- q(3160),
+ q(3193),
q(0),
],
q(tyaraity) => [
- q(7105),
+ q(7156),
q(0),
],
q(tz'utujil) => [
- q(6764),
+ q(6814),
q(0),
],
q(tzeltal) => [
- q(6763),
+ q(6813),
q(0),
],
q(tzotzil) => [
- q(6767),
+ q(6817),
q(0),
],
q(u) => [
- q(6877),
+ q(6927),
q(0),
],
q(uab meto) => [
- q(0832),
+ q(0835),
q(0),
],
q(uamue) => [
- q(6769),
+ q(6819),
q(0),
],
q(uare) => [
- q(3551),
+ q(3581),
q(0),
],
q(ubaghara) => [
- q(1587),
+ q(1593),
q(0),
],
q(ubang) => [
- q(6772),
+ q(6822),
q(0),
],
q(ubi) => [
- q(6773),
+ q(6823),
q(0),
],
q(ubir) => [
- q(6775),
+ q(6825),
q(0),
],
q(ubykh) => [
- q(6777),
+ q(6827),
q(0),
],
q(ucayali-yurua asheninka) => [
- q(1825),
+ q(1832),
q(0),
],
q(uda) => [
- q(6778),
+ q(6828),
q(0),
],
q(udi) => [
- q(6781),
+ q(6831),
q(0),
],
q(udihe) => [
- q(6779),
+ q(6829),
q(0),
],
q(udmurt) => [
@@ -53057,15 +53598,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(uduk) => [
- q(6784),
+ q(6834),
q(0),
],
q(ufim) => [
- q(6786),
+ q(6836),
q(0),
],
q(ugandan sign language) => [
- q(6789),
+ q(6839),
q(0),
],
q(ugaritic) => [
@@ -53073,15 +53614,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ughele) => [
- q(6788),
+ q(6838),
q(0),
],
q(ugong) => [
- q(6790),
+ q(6840),
q(0),
],
q(uhami) => [
- q(6792),
+ q(6842),
q(0),
],
q(uighur) => [
@@ -53089,31 +53630,31 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(uisai) => [
- q(6794),
+ q(6844),
q(0),
],
q(ujir) => [
- q(6782),
+ q(6832),
q(0),
],
q(ukaan) => [
- q(3159),
+ q(3192),
q(0),
],
q(ukhwejo) => [
- q(6799),
+ q(6849),
q(0),
],
q(ukit) => [
- q(6821),
+ q(6872),
q(0),
],
q(ukpe-bayobiri) => [
- q(6801),
+ q(6851),
q(0),
],
q(ukpet-ehom) => [
- q(0724),
+ q(0726),
q(0),
],
q(ukrainian) => [
@@ -53121,87 +53662,87 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(ukrainian sign language) => [
- q(6800),
+ q(6850),
q(0),
],
q(ukue) => [
- q(6804),
+ q(6854),
q(0),
],
q(ukuriguma) => [
- q(6798),
+ q(6848),
q(0),
],
q(ukwa) => [
- q(6802),
+ q(6852),
q(0),
],
q(ukwuani-aboh-ndoni) => [
- q(6805),
+ q(6855),
q(0),
],
q(ulau-suain) => [
- q(6215),
+ q(6262),
q(0),
],
q(ulch) => [
- q(6808),
+ q(6859),
q(0),
],
q(ulithian) => [
- q(6810),
+ q(6861),
q(0),
],
q(ullatan) => [
- q(6812),
+ q(6863),
q(0),
],
q(ulukwumi) => [
- q(6807),
+ q(6858),
q(0),
],
q(ulumanda') => [
- q(6813),
+ q(6864),
q(0),
],
q(ulwa) => [
- q(6816),
+ q(6867),
q(0),
],
q(uma) => [
- q(5509),
+ q(5549),
q(0),
],
q(uma' lasan) => [
- q(7277),
+ q(7333),
q(0),
],
q(uma' lung) => [
- q(6815),
+ q(6866),
q(0),
],
q(umanakaina) => [
- q(2436),
+ q(2455),
q(0),
],
q(umatilla) => [
- q(6817),
+ q(6868),
q(0),
],
q(umbindhamu) => [
- q(6819),
+ q(6870),
q(0),
],
q(umbrian) => [
- q(7407),
+ q(7466),
q(0),
],
q(umbu-ungu) => [
- q(6776),
+ q(6826),
q(0),
],
q(umbugarla) => [
- q(6826),
+ q(6877),
q(0),
],
q(umbundu) => [
@@ -53209,39 +53750,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(umbuygamu) => [
- q(6820),
+ q(6871),
q(0),
],
q(ume sami) => [
- q(5996),
+ q(6041),
q(0),
],
q(umeda) => [
- q(6839),
+ q(6889),
+ q(0),
+ ],
+ q(umiida) => [
+ q(7463),
q(0),
],
q(umiray dumaget agta) => [
- q(2148),
+ q(2169),
q(0),
],
q(umon) => [
- q(6822),
+ q(6873),
q(0),
],
q(umotina) => [
- q(6824),
+ q(6875),
q(0),
],
q(umpila) => [
- q(6825),
+ q(6876),
q(0),
],
q(una) => [
- q(4511),
+ q(4539),
q(0),
],
q(unami) => [
- q(6833),
+ q(6884),
q(0),
],
q(uncoded languages) => [
@@ -53249,7 +53794,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(unde kaili) => [
- q(6837),
+ q(6887),
q(0),
],
q(undetermined) => [
@@ -53257,51 +53802,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(uneapa) => [
- q(1045),
+ q(1052),
q(0),
],
q(uneme) => [
- q(6830),
+ q(6881),
+ q(0),
+ ],
+ q(unggarranggu) => [
+ q(7467),
+ q(0),
+ ],
+ q(unggumi) => [
+ q(7292),
q(0),
],
q(unserdeutsch) => [
- q(6814),
+ q(6865),
q(0),
],
q(unua) => [
- q(5215),
+ q(5254),
q(0),
],
q(uokha) => [
- q(6838),
+ q(6888),
q(0),
],
q(upper chehalis) => [
- q(1740),
+ q(1746),
q(0),
],
q(upper grand valley dani) => [
- q(2079),
+ q(2096),
q(0),
],
q(upper guinea crioulo) => [
- q(5502),
+ q(5542),
q(0),
],
q(upper kinabatangan) => [
- q(2068),
+ q(2085),
q(0),
],
q(upper kuskokwim) => [
- q(3609),
+ q(3639),
q(0),
],
q(upper necaxa totonac) => [
- q(6480),
+ q(6530),
q(0),
],
q(upper saxon) => [
- q(6255),
+ q(6302),
q(0),
],
q(upper sorbian) => [
@@ -53309,63 +53862,59 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(upper ta'oih) => [
- q(6662),
+ q(6711),
q(0),
],
q(upper tanana) => [
- q(6295),
- q(0),
- ],
- q(upper tanudan kalinga) => [
- q(3262),
+ q(6342),
q(0),
],
q(upper taromi) => [
- q(6570),
+ q(6619),
q(0),
],
q(upper umpqua) => [
- q(7409),
+ q(7469),
q(0),
],
q(ura (papua new guinea)) => [
- q(6853),
+ q(6903),
q(0),
],
q(ura (vanuatu)) => [
- q(6876),
+ q(6926),
q(0),
],
q(uradhi) => [
- q(6845),
+ q(6895),
q(0),
],
q(urak lawoi') => [
- q(6849),
+ q(6899),
q(0),
],
q(urali) => [
- q(6850),
+ q(6900),
q(0),
],
q(uralic languages) => [
- q(0529),
+ q(0530),
q(0),
],
q(urapmin) => [
- q(6851),
+ q(6901),
q(0),
],
q(urarina) => [
- q(6841),
+ q(6891),
q(0),
],
q(urartian) => [
- q(7410),
+ q(7470),
q(0),
],
q(urat) => [
- q(6856),
+ q(6906),
q(0),
],
q(urdu) => [
@@ -53373,135 +53922,135 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(urhobo) => [
- q(6847),
+ q(6897),
q(0),
],
q(uri) => [
- q(6879),
+ q(6929),
q(0),
],
q(urigina) => [
- q(6846),
+ q(6896),
q(0),
],
q(urim) => [
- q(6848),
+ q(6898),
q(0),
],
q(urimo) => [
- q(6860),
+ q(6910),
q(0),
],
q(uripiv-wala-rano-atchin) => [
- q(6840),
+ q(6890),
q(0),
],
q(urningangg) => [
- q(6843),
+ q(6893),
q(0),
],
q(uru) => [
- q(6844),
+ q(6894),
q(0),
],
q(uru-eu-wau-wau) => [
- q(6862),
+ q(6912),
q(0),
],
q(uru-pa-in) => [
- q(6854),
+ q(6904),
q(0),
],
q(uruangnirin) => [
- q(6852),
+ q(6902),
q(0),
],
q(uruava) => [
- q(6858),
+ q(6908),
q(0),
],
q(urubu-kaapor) => [
- q(6842),
+ q(6892),
q(0),
],
q(urubu-kaapor sign language) => [
- q(6803),
+ q(6853),
q(0),
],
q(uruguayan sign language) => [
- q(6791),
+ q(6841),
q(0),
],
q(urum) => [
- q(6874),
+ q(6924),
q(0),
],
q(urumi) => [
- q(6857),
+ q(6907),
q(0),
],
q(usaghade) => [
- q(6866),
+ q(6916),
q(0),
],
q(usan) => [
- q(7104),
+ q(7154),
q(0),
],
q(usarufa) => [
- q(6863),
+ q(6913),
q(0),
],
q(ushojo) => [
- q(6864),
+ q(6914),
q(0),
],
q(usila chinantec) => [
- q(1894),
+ q(1903),
q(0),
],
q(usku) => [
- q(6809),
+ q(6860),
q(0),
],
q(uspanteco) => [
- q(6867),
+ q(6917),
q(0),
],
q(usui) => [
- q(6865),
+ q(6915),
q(0),
],
q(ut-ma'in) => [
- q(2451),
+ q(2471),
q(0),
],
q(utarmbung) => [
- q(5195),
+ q(5234),
q(0),
],
q(ute-southern paiute) => [
- q(6870),
+ q(6920),
q(0),
],
q(uto-aztecan languages) => [
- q(0492),
+ q(0493),
q(0),
],
q(utu) => [
- q(6873),
+ q(6923),
q(0),
],
q(uvbie) => [
- q(2288),
+ q(2307),
q(0),
],
q(uya) => [
- q(6868),
+ q(6918),
q(0),
],
q(uyajitaya) => [
- q(2154),
+ q(2175),
q(0),
],
q(uyghur) => [
@@ -53513,43 +54062,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(uzbeki arabic) => [
- q(0953),
+ q(0956),
q(0),
],
q(uzekwe) => [
- q(2293),
+ q(2312),
q(0),
],
q(v'enen taut) => [
- q(4915),
+ q(4944),
q(0),
],
q(vaagri booli) => [
- q(6885),
+ q(6935),
q(0),
],
q(vaeakau-taumako) => [
- q(5405),
+ q(5443),
q(0),
],
q(vafsi) => [
- q(6887),
+ q(6937),
q(0),
],
q(vaghat-ya-bijim-legeri) => [
- q(1211),
+ q(1218),
q(0),
],
q(vaghri) => [
- q(6910),
+ q(6960),
q(0),
],
q(vaghua) => [
- q(6700),
+ q(6749),
q(0),
],
q(vagla) => [
- q(6888),
+ q(6938),
q(0),
],
q(vai) => [
@@ -53557,11 +54106,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(vaiphei) => [
- q(6895),
+ q(6945),
q(0),
],
q(vale) => [
- q(6886),
+ q(6936),
q(0),
],
q(valencian) => [
@@ -53569,91 +54118,91 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(valencian sign language) => [
- q(6965),
+ q(7015),
q(0),
],
q(valle nacional chinantec) => [
- q(1912),
+ q(1921),
q(0),
],
q(valley maidu) => [
- q(6951),
+ q(7001),
q(0),
],
q(valman) => [
- q(6893),
+ q(6943),
q(0),
],
q(valpei) => [
- q(6931),
+ q(6981),
q(0),
],
q(vamale) => [
- q(4309),
+ q(4337),
q(0),
],
q(vame) => [
- q(4332),
+ q(4360),
q(0),
],
q(vandalic) => [
- q(7415),
+ q(7475),
q(0),
],
q(vangunu) => [
- q(4422),
+ q(4450),
q(0),
],
q(vanimo) => [
- q(6892),
+ q(6942),
q(0),
],
q(vano) => [
- q(6956),
+ q(7006),
q(0),
],
q(vanuma) => [
- q(6898),
+ q(6948),
q(0),
],
q(vao) => [
- q(6894),
+ q(6944),
q(0),
],
q(varhadi-nagpuri) => [
- q(6889),
+ q(6939),
q(0),
],
q(varisi) => [
- q(6961),
+ q(7011),
q(0),
],
q(varli) => [
- q(6899),
+ q(6949),
q(0),
],
q(vasavi) => [
- q(6897),
+ q(6947),
q(0),
],
q(vasekela bushman) => [
- q(6890),
+ q(6940),
q(0),
],
q(veddah) => [
- q(6904),
+ q(6954),
q(0),
],
q(vehes) => [
- q(6891),
+ q(6941),
q(0),
],
q(veluws) => [
- q(6905),
+ q(6955),
q(0),
],
q(vemgo-mabas) => [
- q(6906),
+ q(6956),
q(0),
],
q(venda) => [
@@ -53661,43 +54210,43 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(venetian) => [
- q(6903),
+ q(6953),
q(0),
],
q(venetic) => [
- q(7413),
+ q(7473),
q(0),
],
q(venezuelan sign language) => [
- q(6964),
+ q(7014),
q(0),
],
q(vengo) => [
- q(1027),
+ q(1035),
q(0),
],
q(ventureno) => [
- q(6907),
+ q(6957),
q(0),
],
q(veps) => [
- q(6908),
+ q(6958),
q(0),
],
q(vera'a) => [
- q(6960),
+ q(7010),
q(0),
],
q(vestinian) => [
- q(7417),
+ q(7477),
q(0),
],
q(vidunda) => [
- q(6913),
+ q(6963),
q(0),
],
q(viemo) => [
- q(6915),
+ q(6965),
q(0),
],
q(vietnamese) => [
@@ -53705,59 +54254,63 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(viid) => [
- q(6078),
+ q(6123),
q(0),
],
q(vilela) => [
- q(6916),
+ q(6966),
q(0),
],
q(vili) => [
- q(6914),
+ q(6964),
q(0),
],
q(villa viciosa agta) => [
- q(2177),
+ q(2197),
q(0),
],
q(vincentian creole english) => [
- q(6216),
+ q(6263),
q(0),
],
q(vinmavis) => [
- q(6957),
+ q(7007),
q(0),
],
q(vinza) => [
- q(6917),
+ q(6967),
q(0),
],
q(virgin islands creole english) => [
- q(6912),
+ q(6962),
q(0),
],
q(vishavan) => [
- q(6918),
+ q(6968),
q(0),
],
q(viti) => [
- q(6919),
+ q(6969),
q(0),
],
q(vitou) => [
- q(6966),
+ q(7016),
+ q(0),
+ ],
+ q(vitu) => [
+ q(7104),
q(0),
],
q(vlaams) => [
- q(6932),
+ q(6982),
q(0),
],
q(vlaamse gebarentaal) => [
- q(6911),
+ q(6961),
q(0),
],
q(vlax romani) => [
- q(5759),
+ q(5800),
q(0),
],
q(volapuk) => [
@@ -53765,15 +54318,15 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(volscian) => [
- q(7416),
+ q(7476),
q(0),
],
q(vono) => [
- q(3161),
+ q(3194),
q(0),
],
q(voro) => [
- q(6959),
+ q(7009),
q(0),
],
q(votic) => [
@@ -53781,179 +54334,183 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(vumbu) => [
- q(6967),
+ q(7017),
q(0),
],
q(vunapu) => [
- q(6958),
+ q(7008),
q(0),
],
q(vunjo) => [
- q(6968),
+ q(7018),
q(0),
],
q(vure) => [
- q(3897),
+ q(3925),
q(0),
],
q(vures) => [
- q(4493),
+ q(4521),
q(0),
],
q(vute) => [
- q(6969),
+ q(7019),
q(0),
],
q(vwanji) => [
- q(6997),
+ q(7047),
q(0),
],
q(wa) => [
- q(7001),
+ q(7051),
q(0),
],
q(wa'ema) => [
- q(6977),
+ q(7027),
q(0),
],
q(waama) => [
- q(7165),
+ q(7218),
q(0),
],
q(waamwang) => [
- q(7088),
+ q(7138),
q(0),
],
q(waata) => [
- q(6166),
+ q(6213),
q(0),
],
q(wab) => [
- q(6972),
+ q(7022),
q(0),
],
q(wabo) => [
- q(6994),
+ q(7044),
q(0),
],
q(waboda) => [
- q(3423),
+ q(3454),
q(0),
],
q(waci gbe) => [
- q(7009),
+ q(7059),
q(0),
],
q(wadaginam) => [
- q(7011),
+ q(7061),
q(0),
],
q(waddar) => [
- q(7003),
+ q(7053),
q(0),
],
q(wadiyara koli) => [
- q(3681),
+ q(3711),
q(0),
],
q(wadjiginy) => [
- q(7012),
+ q(7062),
q(0),
],
q(wadjigu) => [
- q(7013),
+ q(7063),
q(0),
],
q(wae rana) => [
- q(7137),
+ q(7190),
q(0),
],
q(waffa) => [
- q(6980),
+ q(7030),
q(0),
],
q(wagawaga) => [
- q(7029),
+ q(7079),
q(0),
],
q(wagaya) => [
- q(7028),
+ q(7078),
q(0),
],
q(wagdi) => [
- q(7004),
+ q(7054),
q(0),
],
q(wageman) => [
- q(6985),
+ q(7035),
q(0),
],
q(wagi) => [
- q(2296),
+ q(2315),
q(0),
],
q(wahau kayan) => [
- q(7037),
+ q(7088),
q(0),
],
q(wahau kenyah) => [
- q(7036),
+ q(7087),
q(0),
],
q(wahgi) => [
- q(7031),
+ q(7081),
q(0),
],
q(waigali) => [
- q(6999),
+ q(7049),
q(0),
],
q(waigeo) => [
- q(7032),
+ q(7082),
q(0),
],
q(wailaki) => [
- q(7069),
+ q(7119),
q(0),
],
q(wailapa) => [
- q(7073),
+ q(7123),
q(0),
],
q(waima) => [
- q(5783),
+ q(5825),
q(0),
],
q(waima'a) => [
- q(7085),
+ q(7135),
q(0),
],
q(waimaha) => [
- q(1023),
+ q(1031),
q(0),
],
q(waimiri-atroari) => [
- q(0922),
+ q(0925),
q(0),
],
q(waioli) => [
- q(7068),
+ q(7118),
q(0),
],
q(waiwai) => [
- q(6989),
+ q(7039),
q(0),
],
q(waja) => [
- q(7056),
+ q(7106),
q(0),
],
q(wajarri) => [
- q(7006),
+ q(7056),
q(0),
],
q(waka) => [
- q(6988),
+ q(7038),
+ q(0),
+ ],
+ q(wakabunga) => [
+ q(7219),
q(0),
],
q(wakashan languages) => [
@@ -53961,27 +54518,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(wakawaka) => [
- q(7063),
+ q(7113),
q(0),
],
q(wakde) => [
- q(7060),
+ q(7110),
q(0),
],
q(wakhi) => [
- q(7000),
+ q(7050),
q(0),
],
q(wakona) => [
- q(6976),
+ q(7026),
q(0),
],
q(wala) => [
- q(3843),
+ q(3871),
q(0),
],
q(walak) => [
- q(7077),
+ q(7127),
q(0),
],
q(walamo) => [
@@ -53989,27 +54546,27 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(wali (ghana)) => [
- q(7078),
+ q(7128),
q(0),
],
q(wali (sudan)) => [
- q(7070),
+ q(7120),
q(0),
],
q(waling) => [
- q(7079),
+ q(7129),
q(0),
],
q(walio) => [
- q(7064),
+ q(7114),
q(0),
],
q(walla walla) => [
- q(6971),
+ q(7021),
q(0),
],
q(wallisian) => [
- q(7074),
+ q(7124),
q(0),
],
q(walloon) => [
@@ -54017,179 +54574,179 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(walmajarri) => [
- q(7091),
- q(0),
- ],
- q(walo kumbe dogon) => [
- q(2170),
+ q(7141),
q(0),
],
q(walser) => [
- q(6975),
+ q(7025),
q(0),
],
q(walungge) => [
- q(5180),
+ q(5219),
q(0),
],
q(wamas) => [
- q(7082),
+ q(7132),
q(0),
],
q(wambaya) => [
- q(7081),
+ q(7131),
q(0),
],
q(wambon) => [
- q(7090),
+ q(7140),
q(0),
],
q(wambule) => [
- q(7084),
+ q(7134),
q(0),
],
q(wamey) => [
- q(1818),
+ q(1825),
q(0),
],
q(wamin) => [
- q(7086),
+ q(7136),
q(0),
],
q(wampanoag) => [
- q(6981),
+ q(7031),
q(0),
],
q(wampar) => [
- q(3777),
+ q(3806),
q(0),
],
q(wampur) => [
- q(6992),
+ q(7042),
q(0),
],
q(wan) => [
- q(6982),
+ q(7032),
q(0),
],
q(wanambre) => [
- q(7094),
+ q(7144),
q(0),
],
q(wanap) => [
- q(7103),
+ q(7153),
q(0),
],
q(wanbasana) => [
- q(0762),
+ q(0764),
q(0),
],
q(wancho naga) => [
- q(4954),
+ q(4983),
q(0),
],
q(wanda) => [
- q(6996),
+ q(7046),
q(0),
],
q(wandala) => [
- q(4179),
+ q(4208),
q(0),
],
q(wandamen) => [
- q(6974),
+ q(7024),
q(0),
],
q(wandarang) => [
- q(7096),
+ q(7146),
q(0),
],
q(wandji) => [
- q(7010),
+ q(7060),
q(0),
],
q(wane) => [
- q(2838),
+ q(2862),
q(0),
],
q(waneci) => [
- q(7097),
+ q(7147),
q(0),
],
q(wanga) => [
- q(4046),
+ q(4075),
q(0),
],
q(wangaaybuwan-ngiyambaa) => [
- q(7171),
+ q(7225),
q(0),
],
q(wanggamala) => [
- q(7101),
+ q(7151),
q(0),
],
q(wangganguru) => [
- q(7030),
+ q(7080),
q(0),
],
q(wanggom) => [
- q(7098),
+ q(7148),
q(0),
],
q(wanman) => [
- q(7005),
+ q(7055),
q(0),
],
q(wannu) => [
- q(3093),
+ q(3125),
q(0),
],
q(wano) => [
- q(7102),
+ q(7152),
q(0),
],
q(wantoat) => [
- q(7095),
+ q(7145),
q(0),
],
q(wanukaka) => [
- q(7100),
+ q(7150),
+ q(0),
+ ],
+ q(wanyi) => [
+ q(7155),
q(0),
],
q(waorani) => [
- q(0933),
+ q(0936),
q(0),
],
q(wapan) => [
- q(3097),
+ q(3130),
q(0),
],
q(wapha) => [
- q(3107),
+ q(3140),
q(0),
],
q(wapishana) => [
- q(6984),
+ q(7034),
q(0),
],
q(wappo) => [
- q(6983),
+ q(7033),
q(0),
],
q(war-jaintia) => [
- q(0775),
+ q(0777),
q(0),
],
q(wara) => [
- q(6334),
+ q(6381),
q(0),
],
q(warao) => [
- q(6993),
+ q(7043),
q(0),
],
q(warapu) => [
- q(7122),
+ q(7173),
q(0),
],
q(waray) => [
@@ -54197,7 +54754,7 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(waray (australia)) => [
- q(7139),
+ q(7192),
q(0),
],
q(waray (philippines)) => [
@@ -54205,95 +54762,95 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(wardaman) => [
- q(7132),
+ q(7185),
q(0),
],
q(warduji) => [
- q(7124),
+ q(7175),
q(0),
],
q(warembori) => [
- q(7140),
+ q(7193),
q(0),
],
q(wares) => [
- q(6979),
+ q(7029),
q(0),
],
q(waris) => [
- q(7133),
+ q(7186),
q(0),
],
q(waritai) => [
- q(6995),
+ q(7045),
q(0),
],
q(wariyangga) => [
- q(7127),
+ q(7178),
q(0),
],
q(warji) => [
- q(7057),
+ q(7107),
q(0),
],
q(warkay-bipim) => [
- q(1175),
+ q(1182),
q(0),
],
q(warlmanpa) => [
- q(7128),
+ q(7180),
q(0),
],
q(warlpiri) => [
- q(7002),
+ q(7052),
q(0),
],
q(warluwara) => [
- q(7123),
+ q(7174),
q(0),
],
q(warnang) => [
- q(7130),
+ q(7182),
q(0),
],
q(waropen) => [
- q(7131),
+ q(7184),
q(0),
],
q(warrgamay) => [
- q(7033),
+ q(7084),
q(0),
],
q(warrwa) => [
- q(7167),
+ q(7221),
q(0),
],
q(waru) => [
- q(7134),
+ q(7187),
q(0),
],
q(warumungu) => [
- q(7129),
+ q(7181),
q(0),
],
q(waruna) => [
- q(7135),
+ q(7188),
q(0),
],
q(warungu) => [
- q(7125),
+ q(7176),
q(0),
],
q(wasa) => [
- q(7144),
+ q(7197),
q(0),
],
q(wasco-wishram) => [
- q(6973),
+ q(7023),
q(0),
],
q(wasembo) => [
- q(2599),
+ q(2623),
q(0),
],
q(washo) => [
@@ -54301,107 +54858,103 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(waskia) => [
- q(7142),
+ q(7195),
q(0),
],
q(wasu) => [
- q(7145),
+ q(7198),
q(0),
],
q(watakataui) => [
- q(7149),
+ q(7202),
q(0),
],
q(watam) => [
- q(6990),
+ q(7040),
q(0),
],
q(watiwa) => [
- q(7147),
+ q(7200),
q(0),
],
q(watubela) => [
- q(6978),
+ q(7028),
q(0),
],
q(waube) => [
- q(3462),
+ q(3493),
q(0),
],
q(waura) => [
- q(6987),
+ q(7037),
q(0),
],
q(wauyai) => [
- q(7164),
+ q(7217),
q(0),
],
q(wawa) => [
- q(7168),
+ q(7222),
q(0),
],
q(wawonii) => [
- q(7119),
+ q(7170),
q(0),
],
q(waxianghua) => [
- q(7169),
+ q(7223),
q(0),
],
q(wayampi) => [
- q(5278),
+ q(5318),
q(0),
],
q(wayana) => [
- q(6991),
+ q(7041),
q(0),
],
q(wayanad chetti) => [
- q(1889),
+ q(1898),
q(0),
],
q(wayoro) => [
- q(7173),
+ q(7227),
q(0),
],
q(wayu) => [
- q(6900),
+ q(6950),
q(0),
],
q(wayuu) => [
- q(2605),
+ q(2629),
q(0),
],
q(we northern) => [
- q(7106),
+ q(7157),
q(0),
],
q(we southern) => [
- q(2654),
+ q(2679),
q(0),
],
q(we western) => [
- q(7015),
+ q(7065),
q(0),
],
q(wedau) => [
- q(7016),
+ q(7066),
q(0),
],
q(weh) => [
- q(7017),
+ q(7067),
q(0),
],
q(wejewa) => [
- q(7026),
- q(0),
- ],
- q(welaung) => [
- q(7025),
+ q(7076),
q(0),
],
q(weliki) => [
- q(3382),
+ q(3413),
q(0),
],
q(welsh) => [
@@ -54409,135 +54962,143 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(welsh romani) => [
- q(5757),
+ q(5798),
+ q(0),
+ ],
+ q(wemale) => [
+ q(7070),
q(0),
],
q(weme gbe) => [
- q(7019),
+ q(7069),
q(0),
],
q(weri) => [
- q(7022),
+ q(7072),
q(0),
],
q(wersing) => [
- q(3637),
+ q(3667),
q(0),
],
q(west albay bikol) => [
- q(2311),
+ q(2330),
q(0),
],
q(west ambae) => [
- q(4943),
+ q(4972),
q(0),
],
q(west berawan) => [
- q(7677),
+ q(7743),
q(0),
],
q(west central banda) => [
- q(1047),
+ q(1054),
q(0),
],
q(west central oromo) => [
- q(2391),
+ q(2411),
q(0),
],
q(west coast bajau) => [
- q(1100),
+ q(1107),
q(0),
],
q(west damar) => [
- q(2119),
+ q(2137),
q(0),
],
q(west germanic languages) => [
- q(0506),
+ q(0507),
q(0),
],
q(west goodenough) => [
- q(1970),
+ q(1981),
q(0),
],
q(west kewa) => [
- q(3225),
+ q(3257),
q(0),
],
q(west lembata) => [
- q(3931),
+ q(3960),
q(0),
],
q(west makian) => [
- q(4448),
+ q(4476),
q(0),
],
q(west masela) => [
- q(4498),
+ q(4526),
q(0),
],
q(west slavic languages) => [
- q(0535),
+ q(0536),
q(0),
],
q(west tarangan) => [
- q(6739),
+ q(6789),
q(0),
],
q(west uvean) => [
- q(6878),
+ q(6928),
q(0),
],
q(west yugur) => [
- q(7460),
+ q(7520),
q(0),
],
q(west-central limba) => [
- q(3861),
+ q(3889),
q(0),
],
q(western abnaki) => [
- q(0563),
+ q(0564),
q(0),
],
q(western apache) => [
- q(0854),
+ q(0857),
q(0),
],
q(western arrarnta) => [
- q(0868),
+ q(0871),
q(0),
],
q(western balochi) => [
- q(1167),
+ q(1174),
q(0),
],
q(western bolivian guarani) => [
- q(2546),
+ q(2568),
q(0),
],
q(western bru) => [
- q(1437),
+ q(1443),
q(0),
],
q(western bukidnon manobo) => [
- q(4074),
+ q(4103),
q(0),
],
q(western canadian inuktitut) => [
- q(2902),
+ q(2926),
q(0),
],
q(western cham) => [
- q(1738),
+ q(1744),
q(0),
],
q(western dani) => [
- q(2089),
+ q(2107),
+ q(0),
+ ],
+ q(western durango nahuatl) => [
+ q(1019),
q(0),
],
q(western fijian) => [
- q(7174),
+ q(7228),
q(0),
],
q(western frisian) => [
@@ -54545,99 +55106,99 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(western gurung) => [
- q(2637),
+ q(2661),
q(0),
],
q(western highland chatino) => [
- q(1887),
+ q(1896),
q(0),
],
q(western highland purepecha) => [
- q(5575),
+ q(5615),
q(0),
],
q(western huasteca nahuatl) => [
- q(4832),
+ q(4861),
q(0),
],
q(western juxtlahuaca mixtec) => [
- q(3072),
+ q(3104),
q(0),
],
q(western kanjobal) => [
- q(3434),
+ q(3465),
q(0),
],
q(western karaboro) => [
- q(3718),
+ q(3748),
q(0),
],
q(western katu) => [
- q(3598),
+ q(3628),
q(0),
],
q(western kayah) => [
- q(3712),
+ q(3742),
q(0),
],
q(western keres) => [
- q(3341),
+ q(3372),
q(0),
],
q(western krahn) => [
- q(3538),
+ q(3568),
q(0),
],
q(western lalu) => [
- q(7639),
+ q(7703),
q(0),
],
q(western lawa) => [
- q(3794),
+ q(3823),
q(0),
],
q(western magar) => [
- q(4459),
+ q(4487),
q(0),
],
q(western malayo-polynesian languages) => [
- q(0521),
+ q(0522),
q(0),
],
q(western maninkakan) => [
- q(4331),
+ q(4359),
q(0),
],
q(western mari) => [
- q(4464),
+ q(4492),
q(0),
],
q(western mashan hmong) => [
- q(2757),
+ q(2782),
q(0),
],
q(western mashan miao) => [
- q(2757),
+ q(2782),
q(0),
],
q(western meohang) => [
- q(5674),
+ q(5714),
q(0),
],
q(western muria) => [
- q(4545),
+ q(4573),
q(0),
],
q(western neo-aramaic) => [
- q(0786),
+ q(0788),
q(0),
],
q(western niger fulfulde) => [
- q(2356),
+ q(2376),
q(0),
],
q(western ojibwa) => [
- q(5162),
+ q(5200),
q(0),
],
q(western pahari languages) => [
@@ -54645,187 +55206,187 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(western panjabi) => [
- q(5468),
+ q(5507),
q(0),
],
q(western parbate kham) => [
- q(3336),
+ q(3367),
q(0),
],
q(western penan) => [
- q(5470),
+ q(5509),
q(0),
],
q(western sisaala) => [
- q(6164),
+ q(6211),
q(0),
],
q(western subanon) => [
- q(6202),
+ q(6249),
q(0),
],
q(western tamang) => [
- q(6355),
+ q(6402),
q(0),
],
q(western tawbuid) => [
- q(6712),
+ q(6762),
q(0),
],
q(western totonac) => [
- q(6604),
+ q(6653),
q(0),
],
q(western tunebo) => [
- q(6531),
+ q(6580),
q(0),
],
q(western xiangxi miao) => [
- q(4356),
+ q(4384),
q(0),
],
q(western xwla gbe) => [
- q(7422),
+ q(7482),
q(0),
],
q(western yiddish) => [
- q(7503),
+ q(7563),
q(0),
],
q(westphalien) => [
- q(7021),
+ q(7071),
q(0),
],
q(wetamut) => [
- q(7166),
+ q(7220),
q(0),
],
q(wewaw) => [
- q(7014),
+ q(7064),
q(0),
],
q(weyto) => [
- q(7120),
+ q(7171),
q(0),
],
q(white gelao) => [
- q(2496),
+ q(2517),
q(0),
],
q(white lachi) => [
- q(4047),
+ q(4076),
q(0),
],
q(whitesands) => [
- q(6543),
+ q(6592),
q(0),
],
q(wiarumus) => [
- q(6680),
+ q(6729),
q(0),
],
q(wichi lhamtes guisnay) => [
- q(4653),
+ q(4681),
q(0),
],
q(wichi lhamtes nocten) => [
- q(4520),
+ q(4548),
q(0),
],
q(wichi lhamtes vejoz) => [
- q(7076),
+ q(7126),
q(0),
],
q(wichita) => [
- q(7039),
+ q(7090),
q(0),
],
q(wik-epa) => [
- q(7040),
+ q(7091),
q(0),
],
q(wik-iiyanh) => [
- q(7045),
+ q(7096),
q(0),
],
q(wik-keyangan) => [
- q(7041),
+ q(7092),
q(0),
],
q(wik-me'anha) => [
- q(7043),
+ q(7094),
q(0),
],
q(wik-mungkan) => [
- q(7048),
+ q(7099),
q(0),
],
q(wik-ngathana) => [
- q(7042),
+ q(7093),
q(0),
],
q(wikalkan) => [
- q(7046),
+ q(7097),
q(0),
],
q(wikngenchera) => [
- q(7152),
+ q(7205),
q(0),
],
q(wilawila) => [
- q(7047),
+ q(7098),
q(0),
],
q(wintu) => [
- q(7051),
+ q(7102),
q(0),
],
q(winye) => [
- q(3561),
+ q(3591),
q(0),
],
q(wipi) => [
- q(2439),
+ q(2458),
q(0),
],
q(wiradhuri) => [
- q(7126),
+ q(7177),
q(0),
],
q(wirafed) => [
- q(7050),
+ q(7101),
q(0),
],
q(wirangu) => [
- q(7054),
+ q(7083),
q(0),
],
q(wiru) => [
- q(7052),
+ q(7103),
q(0),
],
q(wiyot) => [
- q(7055),
+ q(7105),
q(0),
],
q(woccon) => [
- q(7419),
+ q(7479),
q(0),
],
q(wogamusin) => [
- q(7111),
+ q(7162),
q(0),
],
q(wogeo) => [
- q(7107),
+ q(7158),
q(0),
],
q(woi) => [
- q(7007),
+ q(7057),
q(0),
],
q(wojenaka) => [
- q(3081),
+ q(3113),
q(0),
],
q(wolaitta) => [
@@ -54833,11 +55394,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(2),
],
q(wolane) => [
- q(7066),
+ q(7116),
q(0),
],
q(wolani) => [
- q(7108),
+ q(7159),
q(0),
],
q(wolaytta) => [
@@ -54845,11 +55406,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(1),
],
q(woleaian) => [
- q(7109),
+ q(7160),
q(0),
],
q(wolio) => [
- q(7072),
+ q(7122),
q(0),
],
q(wolof) => [
@@ -54857,175 +55418,175 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(wom (nigeria)) => [
- q(7114),
+ q(7165),
q(0),
],
q(wom (papua new guinea)) => [
- q(7089),
+ q(7139),
q(0),
],
q(womo) => [
- q(7093),
+ q(7143),
q(0),
],
q(wongo) => [
- q(7115),
+ q(7166),
q(0),
],
q(woods cree) => [
- q(1915),
+ q(1924),
q(0),
],
q(woria) => [
- q(7117),
+ q(7168),
q(0),
],
q(worimi) => [
- q(3180),
+ q(3213),
q(0),
],
q(worodougou) => [
- q(3095),
+ q(3127),
q(0),
],
- q(worora) => [
- q(6834),
+ q(worrorra) => [
+ q(7183),
q(0),
],
q(wotapuri-katarqalai) => [
- q(7146),
+ q(7199),
q(0),
],
q(wotu) => [
- q(7151),
+ q(7204),
q(0),
],
q(woun meu) => [
- q(4965),
+ q(4994),
q(0),
],
q(written oirat) => [
- q(7423),
+ q(7483),
q(0),
],
q(wu chinese) => [
- q(7161),
+ q(7214),
q(0),
],
q(wuding-luquan yi) => [
- q(7641),
+ q(7705),
q(0),
],
q(wudu) => [
- q(7154),
+ q(7207),
q(0),
],
q(wuliwuli) => [
- q(7075),
+ q(7125),
q(0),
],
q(wulna) => [
- q(7163),
+ q(7216),
q(0),
],
q(wumboko) => [
- q(1404),
+ q(1410),
q(0),
],
q(wumbvu) => [
- q(7157),
+ q(7210),
q(0),
],
q(wumeng nasu) => [
- q(7644),
+ q(7708),
q(0),
],
q(wunai bunu) => [
- q(1549),
+ q(1555),
q(0),
],
q(wunambal) => [
- q(7153),
+ q(7206),
q(0),
],
q(wurrugu) => [
- q(7159),
+ q(7212),
q(0),
],
q(wusa nasu) => [
- q(7502),
+ q(7562),
q(0),
],
q(wushi) => [
- q(1445),
+ q(1451),
q(0),
],
q(wusi) => [
- q(7141),
+ q(7194),
q(0),
],
q(wutung) => [
- q(7160),
+ q(7213),
q(0),
],
q(wutunhua) => [
- q(7155),
+ q(7208),
q(0),
],
q(wuvulu-aua) => [
- q(7162),
+ q(7215),
q(0),
],
q(wuzlam) => [
- q(6783),
+ q(6833),
q(0),
],
q(wyandot) => [
- q(7170),
+ q(7224),
q(0),
],
q(wymysorys) => [
- q(7172),
+ q(7226),
q(0),
],
q(xaasongaxango) => [
- q(3123),
+ q(3156),
q(0),
],
q(xadani zapotec) => [
- q(7671),
+ q(7737),
q(0),
],
q(xakriaba) => [
- q(7270),
+ q(7326),
q(0),
],
q(xamtanga) => [
- q(7183),
+ q(7237),
q(0),
],
q(xanaguia zapotec) => [
- q(7797),
+ q(7865),
q(0),
],
q(xaracuu) => [
- q(0794),
+ q(0796),
q(0),
],
q(xaragure) => [
- q(0986),
+ q(0992),
q(0),
],
q(xavante) => [
- q(7191),
+ q(7245),
q(0),
],
q(xerente) => [
- q(7228),
+ q(7282),
q(0),
],
q(xeta) => [
- q(7230),
+ q(7284),
q(0),
],
q(xhosa) => [
@@ -55033,159 +55594,167 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(xiandao) => [
- q(7245),
+ q(7301),
q(0),
],
q(xiang chinese) => [
- q(2803),
+ q(2827),
q(0),
],
q(xibe) => [
- q(5991),
+ q(6036),
q(0),
],
q(xicotepec de juarez totonac) => [
- q(6564),
+ q(6613),
q(0),
],
q(xinca) => [
- q(7249),
+ q(7305),
q(0),
],
q(xingu asurini) => [
- q(0895),
+ q(0898),
q(0),
],
q(xipaya) => [
- q(7253),
+ q(7309),
q(0),
],
q(xipinawa) => [
- q(7250),
+ q(7306),
q(0),
],
q(xiri) => [
- q(7247),
+ q(7303),
q(0),
],
q(xiriana) => [
- q(7251),
+ q(7307),
q(0),
],
q(xishanba lalo) => [
- q(7643),
+ q(7707),
q(0),
],
q(xokleng) => [
- q(7330),
+ q(7387),
q(0),
],
q(xukuru) => [
- q(7333),
+ q(7390),
q(0),
],
q(xwela gbe) => [
- q(7420),
+ q(7480),
q(0),
],
q(yaaku) => [
- q(4546),
+ q(4574),
q(0),
],
q(yabaana) => [
- q(7467),
+ q(7527),
q(0),
],
q(yabarana) => [
- q(7448),
+ q(7509),
q(0),
],
q(yabem) => [
- q(3000),
+ q(3024),
q(0),
],
q(yaben) => [
- q(7466),
+ q(7526),
q(0),
],
q(yabong) => [
- q(7468),
+ q(7528),
+ q(0),
+ ],
+ q(yabula yabula) => [
+ q(7711),
q(0),
],
q(yace) => [
- q(2215),
+ q(2235),
q(0),
],
q(yaeyama) => [
- q(5810),
+ q(5854),
q(0),
],
q(yafi) => [
- q(7027),
+ q(7077),
+ q(0),
+ ],
+ q(yagara) => [
+ q(7710),
q(0),
],
q(yagaria) => [
- q(7496),
+ q(7556),
q(0),
],
q(yagnobi) => [
- q(7441),
+ q(7502),
q(0),
],
q(yagomi) => [
- q(7494),
+ q(7554),
q(0),
],
q(yagua) => [
- q(7436),
+ q(7497),
q(0),
],
q(yagwoia) => [
- q(7497),
+ q(7557),
q(0),
],
q(yahadian) => [
- q(4776),
+ q(4804),
q(0),
],
q(yahang) => [
- q(5718),
+ q(5759),
q(0),
],
q(yahuna) => [
- q(7572),
+ q(7634),
q(0),
],
q(yaka (central african republic)) => [
- q(0984),
+ q(0990),
q(0),
],
q(yaka (congo)) => [
- q(2992),
+ q(3016),
q(0),
],
q(yaka (democratic republic of congo)) => [
- q(7438),
+ q(7499),
q(0),
],
q(yakaikeke) => [
- q(7523),
+ q(7583),
q(0),
],
q(yakama) => [
- q(7443),
+ q(7504),
q(0),
],
q(yakan) => [
- q(7520),
+ q(7580),
q(0),
],
q(yakha) => [
- q(7461),
+ q(7521),
q(0),
],
q(yakoma) => [
- q(7529),
+ q(7591),
q(0),
],
q(yakut) => [
@@ -55193,175 +55762,167 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(yala) => [
- q(7457),
+ q(7518),
q(0),
],
q(yalahatan) => [
- q(3005),
+ q(3029),
q(0),
],
q(yalakalore) => [
- q(7429),
+ q(7489),
q(0),
],
q(yalalag zapotec) => [
- q(7777),
+ q(7845),
q(0),
],
q(yalarnnga) => [
- q(7539),
+ q(7601),
q(0),
],
q(yale) => [
- q(4720),
+ q(4748),
q(0),
],
q(yaleba) => [
- q(7531),
+ q(7593),
q(0),
],
q(yalunka) => [
- q(7444),
+ q(7505),
q(0),
],
q(yamana) => [
- q(7439),
+ q(7500),
q(0),
],
q(yamap) => [
- q(7555),
+ q(7616),
q(0),
],
q(yamba) => [
- q(7445),
+ q(7506),
q(0),
],
q(yambes) => [
- q(7543),
+ q(7604),
q(0),
],
q(yambeta) => [
- q(7450),
+ q(7511),
q(0),
],
q(yamdena) => [
- q(3066),
+ q(3097),
q(0),
],
q(yameo) => [
- q(7546),
+ q(7607),
q(0),
],
q(yami) => [
- q(6290),
+ q(6337),
q(0),
],
q(yaminahua) => [
- q(7433),
+ q(7494),
q(0),
],
q(yamna) => [
- q(7553),
+ q(7614),
q(0),
],
q(yamongeri) => [
- q(7547),
- q(0),
- ],
- q(yamphe) => [
- q(7542),
+ q(7608),
q(0),
],
q(yamphu) => [
- q(7462),
+ q(7522),
q(0),
],
q(yan-nhangu) => [
- q(3014),
+ q(3038),
q(0),
],
q(yana) => [
- q(7569),
+ q(7630),
q(0),
],
q(yanahuanca pasco quechua) => [
- q(5627),
+ q(5667),
q(0),
],
q(yanda dom dogon) => [
- q(2179),
+ q(2199),
q(0),
],
q(yandruwandha) => [
- q(7563),
+ q(7624),
q(0),
],
q(yanesha') => [
- q(0769),
+ q(0771),
q(0),
],
q(yang zhuang) => [
- q(7814),
+ q(7882),
q(0),
],
q(yangben) => [
- q(7452),
- q(0),
- ],
- q(yangbye) => [
- q(7459),
+ q(7513),
q(0),
],
q(yangho) => [
- q(7566),
+ q(7627),
q(0),
],
q(yangkam) => [
- q(1464),
+ q(1470),
q(0),
],
q(yangman) => [
- q(3075),
+ q(3107),
q(0),
],
q(yango) => [
- q(7565),
+ q(7626),
q(0),
],
q(yangulam) => [
- q(7568),
+ q(7629),
q(0),
],
q(yangum dey) => [
- q(7476),
+ q(7536),
q(0),
],
q(yangum gel) => [
- q(7493),
+ q(7553),
q(0),
],
q(yangum mon) => [
- q(7554),
+ q(7615),
q(0),
],
q(yankunytjatjara) => [
- q(3182),
+ q(3215),
q(0),
],
q(yanomami) => [
- q(7008),
+ q(7058),
q(0),
],
q(yanomamo) => [
- q(2622),
+ q(2646),
q(0),
],
q(yansi) => [
- q(7571),
+ q(7633),
q(0),
],
q(yanyuwa) => [
- q(3007),
+ q(3032),
q(0),
],
q(yao) => [
@@ -55369,11 +55930,11 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(yaosakor asmat) => [
- q(0905),
+ q(0908),
q(0),
],
q(yaoure) => [
- q(7594),
+ q(7657),
q(0),
],
q(yapese) => [
@@ -55381,203 +55942,203 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(yapunda) => [
- q(7491),
+ q(7550),
q(0),
],
q(yaqay) => [
- q(3008),
+ q(3033),
q(0),
],
q(yaqui) => [
- q(7447),
+ q(7508),
q(0),
],
q(yarawata) => [
- q(7600),
+ q(7663),
q(0),
],
q(yareba) => [
- q(7593),
+ q(7656),
q(0),
],
q(yareni zapotec) => [
- q(7654),
+ q(7720),
q(0),
],
q(yari) => [
- q(7595),
+ q(7658),
q(0),
],
q(yarsun) => [
- q(7599),
+ q(7662),
q(0),
],
q(yasa) => [
- q(7526),
+ q(7587),
q(0),
],
q(yassic) => [
- q(7601),
+ q(7664),
q(0),
],
q(yatee zapotec) => [
- q(7807),
+ q(7875),
q(0),
],
q(yatzachi zapotec) => [
- q(7669),
+ q(7735),
q(0),
],
q(yau (morobe province)) => [
- q(7632),
+ q(7696),
q(0),
],
q(yau (sandaun province)) => [
- q(7646),
+ q(7712),
q(0),
],
q(yaul) => [
- q(7530),
+ q(7592),
q(0),
],
q(yauma) => [
- q(7454),
+ q(7515),
q(0),
],
q(yaur) => [
- q(3012),
+ q(3036),
q(0),
],
q(yautepec zapotec) => [
- q(7758),
+ q(7826),
q(0),
],
q(yauyos quechua) => [
- q(5631),
+ q(5671),
q(0),
],
q(yavitero) => [
- q(7637),
+ q(7701),
q(0),
],
q(yawa) => [
- q(7636),
+ q(7700),
q(0),
],
q(yawalapiti) => [
- q(7453),
+ q(7514),
q(0),
],
q(yawanawa) => [
- q(7640),
+ q(7704),
q(0),
],
q(yawarawarga) => [
- q(7645),
+ q(7709),
q(0),
],
q(yaweyuha) => [
- q(7470),
+ q(7530),
+ q(0),
+ ],
+ q(yawijibaya) => [
+ q(3047),
q(0),
],
q(yawiyo) => [
- q(7469),
+ q(7529),
q(0),
],
q(yawuru) => [
- q(7642),
+ q(7706),
q(0),
],
q(yazgulyam) => [
- q(7440),
+ q(7501),
q(0),
],
q(yecuatla totonac) => [
- q(6486),
+ q(6536),
q(0),
],
q(yei) => [
- q(3031),
+ q(3057),
q(0),
],
q(yekhee) => [
- q(2282),
+ q(2301),
q(0),
],
q(yekora) => [
- q(7527),
+ q(7588),
q(0),
],
q(yela) => [
- q(7485),
+ q(7545),
q(0),
],
q(yele) => [
- q(7532),
+ q(7594),
q(0),
],
q(yelmek) => [
- q(3033),
+ q(3059),
q(0),
],
q(yelogu) => [
- q(7533),
+ q(7595),
q(0),
],
q(yemba) => [
- q(7458),
+ q(7519),
q(0),
],
q(yemsa) => [
- q(3077),
+ q(3109),
q(0),
],
q(yendang) => [
- q(7486),
+ q(7632),
q(0),
],
q(yeni) => [
- q(7483),
+ q(7543),
q(0),
],
q(yeniche) => [
- q(7481),
+ q(7541),
q(0),
],
q(yerakai) => [
- q(7592),
+ q(7655),
q(0),
],
q(yeretuar) => [
- q(2561),
+ q(2583),
q(0),
],
q(yerong) => [
- q(7598),
+ q(7661),
q(0),
],
q(yerukula) => [
- q(7490),
- q(0),
- ],
- q(yeskwa) => [
- q(7488),
+ q(7549),
q(0),
],
q(yessan-mayo) => [
- q(7608),
+ q(7672),
q(0),
],
q(yetfa) => [
- q(7489),
+ q(7548),
q(0),
],
q(yevanic) => [
- q(7484),
+ q(7544),
q(0),
],
q(yeyi) => [
- q(7492),
+ q(7551),
q(0),
],
q(yiddish) => [
@@ -55585,139 +56146,151 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(yiddish sign language) => [
- q(7479),
+ q(7539),
q(0),
],
q(yidgha) => [
- q(7477),
+ q(7537),
q(0),
],
q(yidiny) => [
- q(7504),
+ q(7564),
q(0),
],
q(yil) => [
- q(7535),
+ q(7597),
q(0),
],
q(yimas) => [
- q(7482),
+ q(7542),
q(0),
],
q(yimchungru naga) => [
- q(7508),
+ q(7568),
q(0),
],
q(yinbaw karen) => [
- q(3635),
+ q(3665),
q(0),
],
q(yinchia) => [
- q(7509),
+ q(7569),
q(0),
],
q(yindjibarndi) => [
- q(7505),
+ q(7565),
q(0),
],
q(yindjilandji) => [
- q(7507),
+ q(7567),
q(0),
],
q(yine) => [
- q(5387),
+ q(5425),
q(0),
],
q(yinggarda) => [
- q(7501),
+ q(7561),
+ q(0),
+ ],
+ q(yintale) => [
+ q(3669),
q(0),
],
q(yintale karen) => [
- q(3639),
+ q(3669),
+ q(0),
+ ],
+ q(yipma) => [
+ q(1607),
q(0),
],
q(yir yoront) => [
- q(7518),
+ q(7578),
q(0),
],
q(yis) => [
- q(7513),
+ q(7573),
q(0),
],
q(yiwom) => [
- q(2450),
+ q(2470),
q(0),
],
q(yoba) => [
- q(7573),
+ q(7635),
q(0),
],
q(yocoboue dida) => [
- q(2606),
+ q(2630),
q(0),
],
q(yogad) => [
- q(7574),
+ q(7636),
q(0),
],
q(yoidik) => [
- q(7478),
+ q(7538),
q(0),
],
q(yoke) => [
- q(7522),
+ q(7582),
q(0),
],
q(yokuts) => [
- q(7576),
+ q(7638),
q(0),
],
q(yola) => [
- q(7577),
+ q(7639),
q(0),
],
q(yoloxochitl mixtec) => [
- q(7401),
+ q(7459),
q(0),
],
q(yom) => [
- q(5396),
+ q(5434),
q(0),
],
q(yombe) => [
- q(7578),
+ q(7640),
q(0),
],
q(yonaguni) => [
- q(7575),
+ q(7637),
q(0),
],
q(yong) => [
- q(7570),
+ q(7631),
q(0),
],
q(yongbei zhuang) => [
- q(7813),
+ q(7881),
q(0),
],
q(yongkom) => [
- q(7579),
+ q(7641),
q(0),
],
q(yongnan zhuang) => [
- q(7816),
+ q(7884),
q(0),
],
q(yopno) => [
- q(7630),
+ q(7694),
q(0),
],
q(yora) => [
- q(4523),
+ q(4551),
q(0),
],
q(yoron) => [
- q(7581),
+ q(7644),
+ q(0),
+ ],
+ q(yorta yorta) => [
+ q(7490),
q(0),
],
q(yoruba) => [
@@ -55725,99 +56298,103 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(yos) => [
- q(7580),
+ q(7642),
q(0),
],
q(yosondua mixtec) => [
- q(4417),
+ q(4445),
+ q(0),
+ ],
+ q(yotti) => [
+ q(7643),
q(0),
],
q(youjiang zhuang) => [
- q(7815),
+ q(7883),
q(0),
],
q(youle jinuo) => [
- q(3056),
+ q(3083),
q(0),
],
q(younuo bunu) => [
- q(1495),
+ q(1501),
q(0),
],
q(yout wam) => [
- q(7613),
+ q(7677),
q(0),
],
q(yoy) => [
- q(7582),
+ q(7645),
q(0),
],
q(yuaga) => [
- q(5047),
+ q(5081),
q(0),
],
q(yucatec maya) => [
- q(7614),
+ q(7678),
q(0),
],
q(yucatec maya sign language) => [
- q(4483),
+ q(4511),
q(0),
],
q(yucateco) => [
- q(7614),
+ q(7678),
q(0),
],
q(yuchi) => [
- q(7616),
+ q(7680),
q(0),
],
q(yucuane mixtec) => [
- q(4556),
+ q(4584),
q(0),
],
q(yucuna) => [
- q(7473),
+ q(7533),
q(0),
],
q(yue chinese) => [
- q(7618),
+ q(7682),
q(0),
],
q(yug) => [
- q(7620),
+ q(7684),
q(0),
],
q(yugambal) => [
- q(7615),
+ q(7679),
q(0),
],
q(yugh) => [
- q(7631),
+ q(7695),
q(0),
],
q(yugoslavian sign language) => [
- q(7603),
+ q(7667),
q(0),
],
q(yuhup) => [
- q(7434),
+ q(7495),
q(0),
],
q(yuki) => [
- q(7623),
+ q(7687),
q(0),
],
q(yukpa) => [
- q(7627),
+ q(7691),
q(0),
],
q(yukuben) => [
- q(7465),
+ q(7525),
q(0),
],
q(yulu) => [
- q(7624),
+ q(7688),
q(0),
],
q(yupik languages) => [
@@ -55825,91 +56402,91 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(yuqui) => [
- q(7628),
+ q(7692),
q(0),
],
q(yuracare) => [
- q(7635),
+ q(7699),
q(0),
],
q(yurok) => [
- q(7629),
+ q(7693),
q(0),
],
q(yuruti) => [
- q(7621),
+ q(7685),
q(0),
],
q(yutanduchi mixtec) => [
- q(4061),
+ q(4090),
q(0),
],
q(yuwana) => [
- q(7451),
+ q(7512),
q(0),
],
q(zaachila zapotec) => [
- q(7806),
+ q(7874),
q(0),
],
q(zabana) => [
- q(3333),
+ q(3364),
q(0),
],
q(zacatepec chatino) => [
- q(1891),
+ q(1900),
q(0),
],
q(zacatlan-ahuacatlan-tepetzintla nahuatl) => [
- q(4821),
+ q(4850),
q(0),
],
q(zaghawa) => [
- q(7656),
+ q(7722),
q(0),
],
q(zaiwa) => [
- q(0908),
+ q(0911),
q(0),
],
q(zakhring) => [
- q(7710),
+ q(7778),
q(0),
],
q(zambian sign language) => [
- q(7792),
+ q(7860),
q(0),
],
q(zan gula) => [
- q(7745),
+ q(7813),
q(0),
],
q(zanaki) => [
- q(7660),
+ q(7726),
q(0),
],
q(zande (individual language)) => [
- q(7746),
+ q(7814),
q(0),
],
q(zande languages) => [
- q(0481),
+ q(0482),
q(0),
],
q(zangskari) => [
- q(7668),
+ q(7734),
q(0),
],
q(zangwal) => [
- q(7657),
+ q(7723),
q(0),
],
q(zaniza zapotec) => [
- q(7779),
+ q(7847),
q(0),
],
q(zaparo) => [
- q(7787),
+ q(7855),
q(0),
],
q(zapotec) => [
@@ -55917,75 +56494,75 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(zaramo) => [
- q(7659),
+ q(7725),
q(0),
],
q(zari) => [
- q(7673),
+ q(7739),
q(0),
],
q(zarma) => [
- q(2044),
+ q(2060),
q(0),
],
q(zarphatic) => [
- q(7788),
+ q(7856),
q(0),
],
q(zauzou) => [
- q(7661),
+ q(7727),
q(0),
],
q(zay) => [
- q(7812),
+ q(7880),
q(0),
],
q(zayein karen) => [
- q(3676),
+ q(3706),
q(0),
],
q(zayse-zergulla) => [
- q(7672),
+ q(7738),
q(0),
],
q(zaysete) => [
- q(7672),
+ q(7738),
q(0),
],
q(zaza) => [
- q(0485),
+ q(0486),
q(0),
],
q(zazaki) => [
- q(0485),
+ q(0486),
q(0),
],
q(zazao) => [
- q(3003),
+ q(3027),
q(0),
],
q(zeem) => [
- q(7808),
+ q(7876),
q(0),
],
q(zeeuws) => [
- q(7681),
+ q(7747),
q(0),
],
q(zemba) => [
- q(2010),
+ q(2025),
q(0),
],
q(zeme naga) => [
- q(5118),
+ q(5156),
q(0),
],
q(zemgalian) => [
- q(7431),
+ q(7492),
q(0),
],
q(zenag) => [
- q(7682),
+ q(7748),
q(0),
],
q(zenaga) => [
@@ -55993,127 +56570,127 @@ $Locale::Codes::Data{'language'}{'alias2id'} = {
q(0),
],
q(zenzontepec chatino) => [
- q(1924),
+ q(1933),
q(0),
],
q(zerenkel) => [
- q(7786),
+ q(7854),
q(0),
],
q(zhaba) => [
- q(7689),
+ q(7755),
q(0),
],
q(zhang-zhung) => [
- q(7430),
+ q(7491),
q(0),
],
q(zhire) => [
- q(7691),
+ q(7757),
q(0),
],
q(zhoa) => [
- q(7693),
+ q(7759),
q(0),
],
q(zhuang) => [
- q(0480),
+ q(0481),
q(0),
],
q(zia) => [
- q(7694),
+ q(7760),
q(0),
],
q(zialo) => [
- q(7697),
+ q(7763),
q(0),
],
q(zigula) => [
- q(7701),
+ q(7767),
q(0),
],
q(zimakani) => [
- q(7696),
+ q(7762),
q(0),
],
q(zimba) => [
- q(7720),
+ q(7788),
q(0),
],
q(zimbabwe sign language) => [
- q(7695),
+ q(7761),
q(0),
],
q(zinza) => [
- q(7699),
+ q(7765),
q(0),
],
q(zire) => [
- q(5966),
+ q(6011),
q(0),
],
q(ziriya) => [
- q(7700),
+ q(7766),
q(0),
],
q(zizilivakan) => [
- q(7702),
+ q(7768),
q(0),
],
q(zo'e) => [
- q(5567),
+ q(5607),
q(0),
],
q(zokhuo) => [
- q(7649),
+ q(7715),
q(0),
],
q(zoogocho zapotec) => [
- q(7773),
+ q(7841),
q(0),
],
q(zoroastrian dari) => [
- q(2414),
+ q(2433),
q(0),
],
q(zorop) => [
- q(7027),
+ q(7077),
q(0),
],
q(zotung chin) => [
- q(1926),
+ q(1935),
q(0),
],
q(zou) => [
- q(7752),
+ q(7820),
q(0),
],
q(zulgo-gemzek) => [
- q(2532),
+ q(2554),
q(0),
],
q(zulu) => [
- q(0482),
+ q(0483),
q(0),
],
q(zumaya) => [
- q(7811),
+ q(7879),
q(0),
],
q(zumbun) => [
- q(3064),
+ q(3095),
q(0),
],
q(zuni) => [
- q(0483),
+ q(0484),
q(0),
],
q(zuojiang zhuang) => [
- q(7818),
+ q(7886),
q(0),
],
q(zyphe) => [
- q(7817),
+ q(7885),
q(0),
],
};
@@ -56574,7 +57151,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
],
q(ne) => [
q(0307),
- q(0),
+ q(1),
],
q(ng) => [
q(0305),
@@ -56618,7 +57195,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
],
q(or) => [
q(0328),
- q(0),
+ q(1),
],
q(os) => [
q(0331),
@@ -56689,7 +57266,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sh) => [
- q(0536),
+ q(0537),
q(0),
],
q(si) => [
@@ -56849,7 +57426,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(za) => [
- q(0480),
+ q(0481),
q(0),
],
q(zh) => [
@@ -56857,73 +57434,73 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(zu) => [
- q(0482),
+ q(0483),
q(0),
],
},
q(alpha-3) => {
q(aaa) => [
- q(0537),
+ q(0538),
q(0),
],
q(aab) => [
- q(0538),
+ q(0539),
q(0),
],
q(aac) => [
- q(0539),
+ q(0540),
q(0),
],
q(aad) => [
- q(0540),
+ q(0541),
q(0),
],
q(aae) => [
- q(0541),
+ q(0542),
q(0),
],
q(aaf) => [
- q(0542),
+ q(0543),
q(0),
],
q(aag) => [
- q(0543),
+ q(0544),
q(0),
],
q(aah) => [
- q(0544),
+ q(0545),
q(0),
],
q(aai) => [
- q(0545),
+ q(0546),
q(0),
],
q(aak) => [
- q(0546),
+ q(0547),
q(0),
],
q(aal) => [
- q(0547),
+ q(0548),
q(0),
],
q(aam) => [
- q(0548),
+ q(0549),
q(0),
],
q(aan) => [
- q(0549),
+ q(0550),
q(0),
],
q(aao) => [
- q(0550),
+ q(0551),
q(0),
],
q(aap) => [
- q(0551),
+ q(0552),
q(0),
],
q(aaq) => [
- q(0552),
+ q(0553),
q(0),
],
q(aar) => [
@@ -56931,71 +57508,71 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(aas) => [
- q(0553),
+ q(0554),
q(0),
],
q(aat) => [
- q(0554),
+ q(0555),
q(0),
],
q(aau) => [
- q(0555),
+ q(0556),
q(0),
],
q(aav) => [
- q(0486),
+ q(0487),
q(0),
],
q(aaw) => [
- q(0556),
+ q(0557),
q(0),
],
q(aax) => [
- q(0557),
+ q(0558),
q(0),
],
q(aaz) => [
- q(0558),
+ q(0559),
q(0),
],
q(aba) => [
- q(0559),
+ q(0560),
q(0),
],
q(abb) => [
- q(0560),
+ q(0561),
q(0),
],
q(abc) => [
- q(0561),
+ q(0562),
q(0),
],
q(abd) => [
- q(0562),
+ q(0563),
q(0),
],
q(abe) => [
- q(0563),
+ q(0564),
q(0),
],
q(abf) => [
- q(0564),
+ q(0565),
q(0),
],
q(abg) => [
- q(0565),
+ q(0566),
q(0),
],
q(abh) => [
- q(0566),
+ q(0567),
q(0),
],
q(abi) => [
- q(0567),
+ q(0568),
q(0),
],
q(abj) => [
- q(0568),
+ q(0569),
q(0),
],
q(abk) => [
@@ -57003,75 +57580,75 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(abl) => [
- q(0569),
+ q(0570),
q(0),
],
q(abm) => [
- q(0570),
+ q(0571),
q(0),
],
q(abn) => [
- q(0571),
+ q(0572),
q(0),
],
q(abo) => [
- q(0572),
+ q(0573),
q(0),
],
q(abp) => [
- q(0573),
+ q(0574),
q(0),
],
q(abq) => [
- q(0574),
+ q(0575),
q(0),
],
q(abr) => [
- q(0575),
+ q(0576),
q(0),
],
q(abs) => [
- q(0576),
+ q(0577),
q(0),
],
q(abt) => [
- q(0577),
+ q(0578),
q(0),
],
q(abu) => [
- q(0578),
+ q(0579),
q(0),
],
q(abv) => [
- q(0579),
+ q(0580),
q(0),
],
q(abw) => [
- q(0580),
+ q(0581),
q(0),
],
q(abx) => [
- q(0581),
+ q(0582),
q(0),
],
q(aby) => [
- q(0582),
+ q(0583),
q(0),
],
q(abz) => [
- q(0583),
+ q(0584),
q(0),
],
q(aca) => [
- q(0584),
+ q(0585),
q(0),
],
q(acb) => [
- q(0585),
+ q(0586),
q(0),
],
q(acd) => [
- q(0586),
+ q(0587),
q(0),
],
q(ace) => [
@@ -57079,7 +57656,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(acf) => [
- q(0587),
+ q(0588),
q(0),
],
q(ach) => [
@@ -57087,67 +57664,67 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(aci) => [
- q(0588),
+ q(0589),
q(0),
],
q(ack) => [
- q(0589),
+ q(0590),
q(0),
],
q(acl) => [
- q(0590),
+ q(0591),
q(0),
],
q(acm) => [
- q(0591),
+ q(0592),
q(0),
],
q(acn) => [
- q(0592),
+ q(0593),
q(0),
],
q(acp) => [
- q(0593),
+ q(0594),
q(0),
],
q(acq) => [
- q(0594),
+ q(0595),
q(0),
],
q(acr) => [
- q(0595),
+ q(0596),
q(0),
],
q(acs) => [
- q(0596),
+ q(0597),
q(0),
],
q(act) => [
- q(0597),
+ q(0598),
q(0),
],
q(acu) => [
- q(0598),
+ q(0599),
q(0),
],
q(acv) => [
- q(0599),
+ q(0600),
q(0),
],
q(acw) => [
- q(0600),
+ q(0601),
q(0),
],
q(acx) => [
- q(0601),
+ q(0602),
q(0),
],
q(acy) => [
- q(0602),
+ q(0603),
q(0),
],
q(acz) => [
- q(0603),
+ q(0604),
q(0),
],
q(ada) => [
@@ -57155,79 +57732,79 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(adb) => [
- q(0604),
+ q(0605),
q(0),
],
q(add) => [
- q(0605),
+ q(0606),
q(0),
],
q(ade) => [
- q(0606),
+ q(0607),
q(0),
],
q(adf) => [
- q(0607),
+ q(0608),
q(0),
],
q(adg) => [
- q(0608),
+ q(0609),
q(0),
],
q(adh) => [
- q(0609),
+ q(0610),
q(0),
],
q(adi) => [
- q(0610),
+ q(0611),
q(0),
],
q(adj) => [
- q(0611),
+ q(0612),
q(0),
],
q(adl) => [
- q(0612),
+ q(0613),
q(0),
],
q(adn) => [
- q(0613),
+ q(0614),
q(0),
],
q(ado) => [
- q(0614),
+ q(0615),
q(0),
],
q(adp) => [
- q(0615),
+ q(0616),
q(0),
],
q(adq) => [
- q(0616),
+ q(0617),
q(0),
],
q(adr) => [
- q(0617),
+ q(0618),
q(0),
],
q(ads) => [
- q(0618),
+ q(0619),
q(0),
],
q(adt) => [
- q(0619),
+ q(0620),
q(0),
],
q(adu) => [
- q(0620),
+ q(0621),
q(0),
],
q(adw) => [
- q(0621),
+ q(0622),
q(0),
],
q(adx) => [
- q(0622),
+ q(0623),
q(0),
],
q(ady) => [
@@ -57235,71 +57812,71 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(adz) => [
- q(0623),
+ q(0624),
q(0),
],
q(aea) => [
- q(0624),
+ q(0625),
q(0),
],
q(aeb) => [
- q(0625),
+ q(0626),
q(0),
],
q(aec) => [
- q(0626),
+ q(0627),
q(0),
],
q(aed) => [
- q(0627),
+ q(0628),
q(0),
],
q(aee) => [
- q(0628),
+ q(0629),
q(0),
],
q(aek) => [
- q(0629),
+ q(0630),
q(0),
],
q(ael) => [
- q(0630),
+ q(0631),
q(0),
],
q(aem) => [
- q(0631),
+ q(0632),
q(0),
],
q(aen) => [
- q(0632),
+ q(0633),
q(0),
],
q(aeq) => [
- q(0633),
+ q(0634),
q(0),
],
q(aer) => [
- q(0634),
+ q(0635),
q(0),
],
q(aes) => [
- q(0635),
+ q(0636),
q(0),
],
q(aeu) => [
- q(0636),
+ q(0637),
q(0),
],
q(aew) => [
- q(0637),
+ q(0638),
q(0),
],
q(aey) => [
- q(0638),
+ q(0639),
q(0),
],
q(aez) => [
- q(0639),
+ q(0640),
q(0),
],
q(afa) => [
@@ -57307,19 +57884,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(afb) => [
- q(0640),
+ q(0641),
q(0),
],
q(afd) => [
- q(0641),
+ q(0642),
q(0),
],
q(afe) => [
- q(0642),
+ q(0643),
q(0),
],
q(afg) => [
- q(0643),
+ q(0644),
q(0),
],
q(afh) => [
@@ -57327,23 +57904,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(afi) => [
- q(0644),
+ q(0645),
q(0),
],
q(afk) => [
- q(0645),
+ q(0646),
q(0),
],
q(afn) => [
- q(0646),
+ q(0647),
q(0),
],
q(afo) => [
- q(0647),
+ q(0648),
q(0),
],
q(afp) => [
- q(0648),
+ q(0649),
q(0),
],
q(afr) => [
@@ -57351,227 +57928,227 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(afs) => [
- q(0649),
+ q(0650),
q(0),
],
q(aft) => [
- q(0650),
+ q(0651),
q(0),
],
q(afu) => [
- q(0651),
+ q(0652),
q(0),
],
q(afz) => [
- q(0652),
+ q(0653),
q(0),
],
q(aga) => [
- q(0653),
+ q(0654),
q(0),
],
q(agb) => [
- q(0654),
+ q(0655),
q(0),
],
q(agc) => [
- q(0655),
+ q(0656),
q(0),
],
q(agd) => [
- q(0656),
+ q(0657),
q(0),
],
q(age) => [
- q(0657),
+ q(0658),
q(0),
],
q(agf) => [
- q(0658),
+ q(0659),
q(0),
],
q(agg) => [
- q(0659),
+ q(0660),
q(0),
],
q(agh) => [
- q(0660),
+ q(0661),
q(0),
],
q(agi) => [
- q(0661),
+ q(0662),
q(0),
],
q(agj) => [
- q(0662),
+ q(0663),
q(0),
],
q(agk) => [
- q(0663),
+ q(0664),
q(0),
],
q(agl) => [
- q(0664),
+ q(0665),
q(0),
],
q(agm) => [
- q(0665),
+ q(0666),
q(0),
],
q(agn) => [
- q(0666),
+ q(0667),
q(0),
],
q(ago) => [
- q(0667),
+ q(0668),
q(0),
],
q(agq) => [
- q(0668),
+ q(0669),
q(0),
],
q(agr) => [
- q(0669),
+ q(0670),
q(0),
],
q(ags) => [
- q(0670),
+ q(0671),
q(0),
],
q(agt) => [
- q(0671),
+ q(0672),
q(0),
],
q(agu) => [
- q(0672),
+ q(0673),
q(0),
],
q(agv) => [
- q(0673),
+ q(0674),
q(0),
],
q(agw) => [
- q(0674),
+ q(0675),
q(0),
],
q(agx) => [
- q(0675),
+ q(0676),
q(0),
],
q(agy) => [
- q(0676),
+ q(0677),
q(0),
],
q(agz) => [
- q(0677),
+ q(0678),
q(0),
],
q(aha) => [
- q(0678),
+ q(0679),
q(0),
],
q(ahb) => [
- q(0679),
+ q(0680),
q(0),
],
q(ahg) => [
- q(0680),
+ q(0681),
q(0),
],
q(ahh) => [
- q(0681),
+ q(0682),
q(0),
],
q(ahi) => [
- q(0682),
+ q(0683),
q(0),
],
q(ahk) => [
- q(0683),
+ q(0684),
q(0),
],
q(ahl) => [
- q(0684),
+ q(0685),
q(0),
],
q(ahm) => [
- q(0685),
+ q(0686),
q(0),
],
q(ahn) => [
- q(0686),
+ q(0687),
q(0),
],
q(aho) => [
- q(0687),
+ q(0688),
q(0),
],
q(ahp) => [
- q(0688),
+ q(0689),
q(0),
],
q(ahr) => [
- q(0689),
+ q(0690),
q(0),
],
q(ahs) => [
- q(0690),
+ q(0691),
q(0),
],
q(aht) => [
- q(0691),
+ q(0692),
q(0),
],
q(aia) => [
- q(0692),
+ q(0693),
q(0),
],
q(aib) => [
- q(0693),
+ q(0694),
q(0),
],
q(aic) => [
- q(0694),
+ q(0695),
q(0),
],
q(aid) => [
- q(0695),
+ q(0696),
q(0),
],
q(aie) => [
- q(0696),
+ q(0697),
q(0),
],
q(aif) => [
- q(0697),
+ q(0698),
q(0),
],
q(aig) => [
- q(0698),
+ q(0699),
q(0),
],
q(aih) => [
- q(0699),
+ q(0700),
q(0),
],
q(aii) => [
- q(0700),
+ q(0701),
q(0),
],
q(aij) => [
- q(0701),
+ q(0702),
q(0),
],
q(aik) => [
- q(0702),
+ q(0703),
q(0),
],
q(ail) => [
- q(0703),
+ q(0704),
q(0),
],
q(aim) => [
- q(0704),
+ q(0705),
q(0),
],
q(ain) => [
@@ -57579,71 +58156,75 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(aio) => [
- q(0705),
+ q(0706),
q(0),
],
q(aip) => [
- q(0706),
+ q(0707),
q(0),
],
q(aiq) => [
- q(0707),
+ q(0708),
q(0),
],
q(air) => [
- q(0708),
+ q(0709),
q(0),
],
q(ais) => [
- q(0709),
+ q(0710),
q(0),
],
q(ait) => [
- q(0710),
+ q(0711),
q(0),
],
q(aiw) => [
- q(0711),
+ q(0712),
q(0),
],
q(aix) => [
- q(0712),
+ q(0713),
q(0),
],
q(aiy) => [
- q(0713),
+ q(0714),
q(0),
],
q(aja) => [
- q(0714),
+ q(0715),
q(0),
],
q(ajg) => [
- q(0715),
+ q(0716),
q(0),
],
q(aji) => [
- q(0716),
+ q(0717),
+ q(0),
+ ],
+ q(ajn) => [
+ q(0718),
q(0),
],
q(ajp) => [
- q(0717),
+ q(0719),
q(0),
],
q(ajt) => [
- q(0718),
+ q(0720),
q(0),
],
q(aju) => [
- q(0719),
+ q(0721),
q(0),
],
q(ajw) => [
- q(0720),
+ q(0722),
q(0),
],
q(ajz) => [
- q(0721),
+ q(0723),
q(0),
],
q(aka) => [
@@ -57651,39 +58232,39 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(akb) => [
- q(0722),
+ q(0724),
q(0),
],
q(akc) => [
- q(0723),
+ q(0725),
q(0),
],
q(akd) => [
- q(0724),
+ q(0726),
q(0),
],
q(ake) => [
- q(0725),
+ q(0727),
q(0),
],
q(akf) => [
- q(0726),
+ q(0728),
q(0),
],
q(akg) => [
- q(0727),
+ q(0729),
q(0),
],
q(akh) => [
- q(0728),
+ q(0730),
q(0),
],
q(aki) => [
- q(0729),
+ q(0731),
q(0),
],
q(akj) => [
- q(0730),
+ q(0732),
q(0),
],
q(akk) => [
@@ -57691,63 +58272,63 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(akl) => [
- q(0731),
+ q(0733),
q(0),
],
q(akm) => [
- q(0732),
+ q(0734),
q(0),
],
q(ako) => [
- q(0733),
+ q(0735),
q(0),
],
q(akp) => [
- q(0734),
+ q(0736),
q(0),
],
q(akq) => [
- q(0735),
+ q(0737),
q(0),
],
q(akr) => [
- q(0736),
+ q(0738),
q(0),
],
q(aks) => [
- q(0737),
+ q(0739),
q(0),
],
q(akt) => [
- q(0738),
+ q(0740),
q(0),
],
q(aku) => [
- q(0739),
+ q(0741),
q(0),
],
q(akv) => [
- q(0740),
+ q(0742),
q(0),
],
q(akw) => [
- q(0741),
+ q(0743),
q(0),
],
q(akx) => [
- q(0742),
+ q(0744),
q(0),
],
q(aky) => [
- q(0743),
+ q(0745),
q(0),
],
q(akz) => [
- q(0744),
+ q(0746),
q(0),
],
q(ala) => [
- q(0745),
+ q(0747),
q(0),
],
q(alb) => [
@@ -57755,11 +58336,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(alc) => [
- q(0746),
+ q(0748),
q(0),
],
q(ald) => [
- q(0747),
+ q(0749),
q(0),
],
q(ale) => [
@@ -57767,7 +58348,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(alf) => [
- q(0748),
+ q(0750),
q(0),
],
q(alg) => [
@@ -57775,51 +58356,51 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(alh) => [
- q(0749),
+ q(0751),
q(0),
],
q(ali) => [
- q(0750),
+ q(0752),
q(0),
],
q(alj) => [
- q(0751),
+ q(0753),
q(0),
],
q(alk) => [
- q(0752),
+ q(0754),
q(0),
],
q(all) => [
- q(0753),
+ q(0755),
q(0),
],
q(alm) => [
- q(0754),
+ q(0756),
q(0),
],
q(aln) => [
- q(0755),
+ q(0757),
q(0),
],
q(alo) => [
- q(0756),
+ q(0758),
q(0),
],
q(alp) => [
- q(0757),
+ q(0759),
q(0),
],
q(alq) => [
- q(0758),
+ q(0760),
q(0),
],
q(alr) => [
- q(0759),
+ q(0761),
q(0),
],
q(als) => [
- q(0760),
+ q(0762),
q(0),
],
q(alt) => [
@@ -57827,51 +58408,51 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(alu) => [
- q(0761),
+ q(0763),
q(0),
],
q(alv) => [
- q(0487),
+ q(0488),
q(0),
],
q(alw) => [
- q(0762),
+ q(0764),
q(0),
],
q(alx) => [
- q(0763),
+ q(0765),
q(0),
],
q(aly) => [
- q(0764),
+ q(0766),
q(0),
],
q(alz) => [
- q(0765),
+ q(0767),
q(0),
],
q(ama) => [
- q(0766),
+ q(0768),
q(0),
],
q(amb) => [
- q(0767),
+ q(0769),
q(0),
],
q(amc) => [
- q(0768),
+ q(0770),
q(0),
],
q(ame) => [
- q(0769),
+ q(0771),
q(0),
],
q(amf) => [
- q(0770),
+ q(0772),
q(0),
],
q(amg) => [
- q(0771),
+ q(0773),
q(0),
],
q(amh) => [
@@ -57879,99 +58460,99 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ami) => [
- q(0772),
+ q(0774),
q(0),
],
q(amj) => [
- q(0773),
+ q(0775),
q(0),
],
q(amk) => [
- q(0774),
+ q(0776),
q(0),
],
q(aml) => [
- q(0775),
+ q(0777),
q(0),
],
q(amm) => [
- q(0776),
+ q(0778),
q(0),
],
q(amn) => [
- q(0777),
+ q(0779),
q(0),
],
q(amo) => [
- q(0778),
+ q(0780),
q(0),
],
q(amp) => [
- q(0779),
+ q(0781),
q(0),
],
q(amq) => [
- q(0780),
+ q(0782),
q(0),
],
q(amr) => [
- q(0781),
+ q(0783),
q(0),
],
q(ams) => [
- q(0782),
+ q(0784),
q(0),
],
q(amt) => [
- q(0783),
+ q(0785),
q(0),
],
q(amu) => [
- q(0784),
+ q(0786),
q(0),
],
q(amv) => [
- q(0785),
+ q(0787),
q(0),
],
q(amw) => [
- q(0786),
+ q(0788),
q(0),
],
q(amx) => [
- q(0787),
+ q(0789),
q(0),
],
q(amy) => [
- q(0788),
+ q(0790),
q(0),
],
q(amz) => [
- q(0789),
+ q(0791),
q(0),
],
q(ana) => [
- q(0790),
+ q(0792),
q(0),
],
q(anb) => [
- q(0791),
+ q(0793),
q(0),
],
q(anc) => [
- q(0792),
+ q(0794),
q(0),
],
q(and) => [
- q(0793),
+ q(0795),
q(0),
],
q(ane) => [
- q(0794),
+ q(0796),
q(0),
],
q(anf) => [
- q(0795),
+ q(0797),
q(0),
],
q(ang) => [
@@ -57979,35 +58560,35 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(anh) => [
- q(0796),
+ q(0798),
q(0),
],
q(ani) => [
- q(0797),
+ q(0799),
q(0),
],
q(anj) => [
- q(0798),
+ q(0800),
q(0),
],
q(ank) => [
- q(0799),
+ q(0801),
q(0),
],
q(anl) => [
- q(0800),
+ q(0802),
q(0),
],
q(anm) => [
- q(0801),
+ q(0803),
q(0),
],
q(ann) => [
- q(0802),
+ q(0804),
q(0),
],
q(ano) => [
- q(0803),
+ q(0805),
q(0),
],
q(anp) => [
@@ -58015,119 +58596,123 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(anq) => [
- q(0804),
+ q(0806),
q(0),
],
q(anr) => [
- q(0805),
+ q(0807),
q(0),
],
q(ans) => [
- q(0806),
+ q(0808),
q(0),
],
q(ant) => [
- q(0807),
+ q(0809),
q(0),
],
q(anu) => [
- q(0808),
+ q(0810),
q(0),
],
q(anv) => [
- q(0809),
+ q(0811),
q(0),
],
q(anw) => [
- q(0810),
+ q(0812),
q(0),
],
q(anx) => [
- q(0811),
+ q(0813),
q(0),
],
q(any) => [
- q(0812),
+ q(0814),
q(0),
],
q(anz) => [
- q(0813),
+ q(0815),
q(0),
],
q(aoa) => [
- q(0814),
+ q(0816),
q(0),
],
q(aob) => [
- q(0815),
+ q(0817),
q(0),
],
q(aoc) => [
- q(0816),
+ q(0818),
q(0),
],
q(aod) => [
- q(0817),
+ q(0819),
q(0),
],
q(aoe) => [
- q(0818),
+ q(0820),
q(0),
],
q(aof) => [
- q(0819),
+ q(0821),
q(0),
],
q(aog) => [
- q(0820),
+ q(0822),
q(0),
],
q(aoh) => [
- q(0821),
+ q(0823),
q(0),
],
q(aoi) => [
- q(0822),
+ q(0824),
q(0),
],
q(aoj) => [
- q(0823),
+ q(0825),
q(0),
],
q(aok) => [
- q(0824),
+ q(0826),
q(0),
],
q(aol) => [
- q(0825),
+ q(0827),
q(0),
],
q(aom) => [
- q(0826),
+ q(0828),
q(0),
],
q(aon) => [
- q(0827),
+ q(0829),
q(0),
],
q(aor) => [
- q(0828),
+ q(0830),
q(0),
],
q(aos) => [
- q(0829),
+ q(0831),
q(0),
],
q(aot) => [
- q(0830),
+ q(0832),
+ q(0),
+ ],
+ q(aou) => [
+ q(0833),
q(0),
],
q(aox) => [
- q(0831),
+ q(0834),
q(0),
],
q(aoz) => [
- q(0832),
+ q(0835),
q(0),
],
q(apa) => [
@@ -58135,143 +58720,143 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(apb) => [
- q(0833),
+ q(0836),
q(0),
],
q(apc) => [
- q(0834),
+ q(0837),
q(0),
],
q(apd) => [
- q(0835),
+ q(0838),
q(0),
],
q(ape) => [
- q(0836),
+ q(0839),
q(0),
],
q(apf) => [
- q(0837),
+ q(0840),
q(0),
],
q(apg) => [
- q(0838),
+ q(0841),
q(0),
],
q(aph) => [
- q(0839),
+ q(0842),
q(0),
],
q(api) => [
- q(0840),
+ q(0843),
q(0),
],
q(apj) => [
- q(0841),
+ q(0844),
q(0),
],
q(apk) => [
- q(0842),
+ q(0845),
q(0),
],
q(apl) => [
- q(0843),
+ q(0846),
q(0),
],
q(apm) => [
- q(0844),
+ q(0847),
q(0),
],
q(apn) => [
- q(0845),
+ q(0848),
q(0),
],
q(apo) => [
- q(0846),
+ q(0849),
q(0),
],
q(app) => [
- q(0847),
+ q(0850),
q(0),
],
q(apq) => [
- q(0848),
+ q(0851),
q(0),
],
q(apr) => [
- q(0849),
+ q(0852),
q(0),
],
q(aps) => [
- q(0850),
+ q(0853),
q(0),
],
q(apt) => [
- q(0851),
+ q(0854),
q(0),
],
q(apu) => [
- q(0852),
+ q(0855),
q(0),
],
q(apv) => [
- q(0853),
+ q(0856),
q(0),
],
q(apw) => [
- q(0854),
+ q(0857),
q(0),
],
q(apx) => [
- q(0855),
+ q(0858),
q(0),
],
q(apy) => [
- q(0856),
+ q(0859),
q(0),
],
q(apz) => [
- q(0857),
+ q(0860),
q(0),
],
q(aqa) => [
- q(0488),
+ q(0489),
q(0),
],
q(aqc) => [
- q(0858),
+ q(0861),
q(0),
],
q(aqd) => [
- q(0859),
+ q(0862),
q(0),
],
q(aqg) => [
- q(0860),
+ q(0863),
q(0),
],
q(aql) => [
- q(0489),
+ q(0490),
q(0),
],
q(aqm) => [
- q(0861),
+ q(0864),
q(0),
],
q(aqn) => [
- q(0862),
+ q(0865),
q(0),
],
q(aqp) => [
- q(0863),
+ q(0866),
q(0),
],
q(aqr) => [
- q(0864),
+ q(0867),
q(0),
],
q(aqz) => [
- q(0865),
+ q(0868),
q(0),
],
q(ara) => [
@@ -58279,7 +58864,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(arb) => [
- q(0866),
+ q(0869),
q(0),
],
q(arc) => [
@@ -58287,11 +58872,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ard) => [
- q(0867),
+ q(0870),
q(0),
],
q(are) => [
- q(0868),
+ q(0871),
q(0),
],
q(arg) => [
@@ -58299,23 +58884,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(arh) => [
- q(0869),
+ q(0872),
q(0),
],
q(ari) => [
- q(0870),
+ q(0873),
q(0),
],
q(arj) => [
- q(0871),
+ q(0874),
q(0),
],
q(ark) => [
- q(0872),
+ q(0875),
q(0),
],
q(arl) => [
- q(0873),
+ q(0876),
q(0),
],
q(arm) => [
@@ -58327,7 +58912,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(aro) => [
- q(0874),
+ q(0877),
q(0),
],
q(arp) => [
@@ -58335,15 +58920,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(arq) => [
- q(0875),
+ q(0878),
q(0),
],
q(arr) => [
- q(0876),
+ q(0879),
q(0),
],
q(ars) => [
- q(0877),
+ q(0880),
q(0),
],
q(art) => [
@@ -58351,11 +58936,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(aru) => [
- q(0878),
+ q(0881),
q(0),
],
q(arv) => [
- q(0879),
+ q(0882),
q(0),
],
q(arw) => [
@@ -58363,63 +58948,63 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(arx) => [
- q(0880),
+ q(0883),
q(0),
],
q(ary) => [
- q(0881),
+ q(0884),
q(0),
],
q(arz) => [
- q(0882),
+ q(0885),
q(0),
],
q(asa) => [
- q(0883),
+ q(0886),
q(0),
],
q(asb) => [
- q(0884),
+ q(0887),
q(0),
],
q(asc) => [
- q(0885),
+ q(0888),
q(0),
],
q(asd) => [
- q(0886),
+ q(0889),
q(0),
],
q(ase) => [
- q(0887),
+ q(0890),
q(0),
],
q(asf) => [
- q(0888),
+ q(0891),
q(0),
],
q(asg) => [
- q(0889),
+ q(0892),
q(0),
],
q(ash) => [
- q(0890),
+ q(0893),
q(0),
],
q(asi) => [
- q(0891),
+ q(0894),
q(0),
],
q(asj) => [
- q(0892),
+ q(0895),
q(0),
],
q(ask) => [
- q(0893),
+ q(0896),
q(0),
],
q(asl) => [
- q(0894),
+ q(0897),
q(0),
],
q(asm) => [
@@ -58427,27 +59012,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(asn) => [
- q(0895),
+ q(0898),
q(0),
],
q(aso) => [
- q(0896),
+ q(0899),
q(0),
],
q(asp) => [
- q(0897),
+ q(0900),
q(0),
],
q(asq) => [
- q(0898),
+ q(0901),
q(0),
],
q(asr) => [
- q(0899),
+ q(0902),
q(0),
],
q(ass) => [
- q(0900),
+ q(0903),
q(0),
],
q(ast) => [
@@ -58455,51 +59040,51 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(asu) => [
- q(0901),
+ q(0904),
q(0),
],
q(asv) => [
- q(0902),
+ q(0905),
q(0),
],
q(asw) => [
- q(0903),
+ q(0906),
q(0),
],
q(asx) => [
- q(0904),
+ q(0907),
q(0),
],
q(asy) => [
- q(0905),
+ q(0908),
q(0),
],
q(asz) => [
- q(0906),
+ q(0909),
q(0),
],
q(ata) => [
- q(0907),
+ q(0910),
q(0),
],
q(atb) => [
- q(0908),
+ q(0911),
q(0),
],
q(atc) => [
- q(0909),
+ q(0912),
q(0),
],
q(atd) => [
- q(0910),
+ q(0913),
q(0),
],
q(ate) => [
- q(0911),
+ q(0914),
q(0),
],
q(atg) => [
- q(0912),
+ q(0915),
q(0),
],
q(ath) => [
@@ -58507,147 +59092,147 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ati) => [
- q(0913),
+ q(0916),
q(0),
],
q(atj) => [
- q(0914),
+ q(0917),
q(0),
],
q(atk) => [
- q(0915),
+ q(0918),
q(0),
],
q(atl) => [
- q(0916),
+ q(0919),
q(0),
],
q(atm) => [
- q(0917),
+ q(0920),
q(0),
],
q(atn) => [
- q(0918),
+ q(0921),
q(0),
],
q(ato) => [
- q(0919),
+ q(0922),
q(0),
],
q(atp) => [
- q(0920),
+ q(0923),
q(0),
],
q(atq) => [
- q(0921),
+ q(0924),
q(0),
],
q(atr) => [
- q(0922),
+ q(0925),
q(0),
],
q(ats) => [
- q(0923),
+ q(0926),
q(0),
],
q(att) => [
- q(0924),
+ q(0927),
q(0),
],
q(atu) => [
- q(0925),
+ q(0928),
q(0),
],
q(atv) => [
- q(0926),
+ q(0929),
q(0),
],
q(atw) => [
- q(0927),
+ q(0930),
q(0),
],
q(atx) => [
- q(0928),
+ q(0931),
q(0),
],
q(aty) => [
- q(0929),
+ q(0932),
q(0),
],
q(atz) => [
- q(0930),
+ q(0933),
q(0),
],
q(aua) => [
- q(0931),
+ q(0934),
q(0),
],
q(aub) => [
- q(0932),
+ q(0935),
q(0),
],
q(auc) => [
- q(0933),
+ q(0936),
q(0),
],
q(aud) => [
- q(0934),
+ q(0937),
q(0),
],
q(aue) => [
- q(0935),
+ q(0938),
q(0),
],
q(auf) => [
- q(0490),
+ q(0491),
q(0),
],
q(aug) => [
- q(0936),
+ q(0939),
q(0),
],
q(auh) => [
- q(0937),
+ q(0940),
q(0),
],
q(aui) => [
- q(0938),
+ q(0941),
q(0),
],
q(auj) => [
- q(0939),
+ q(0942),
q(0),
],
q(auk) => [
- q(0940),
+ q(0943),
q(0),
],
q(aul) => [
- q(0941),
+ q(0944),
q(0),
],
q(aum) => [
- q(0942),
+ q(0945),
q(0),
],
q(aun) => [
- q(0943),
+ q(0946),
q(0),
],
q(auo) => [
- q(0944),
+ q(0947),
q(0),
],
q(aup) => [
- q(0945),
+ q(0948),
q(0),
],
q(auq) => [
- q(0946),
+ q(0949),
q(0),
],
q(aur) => [
- q(0947),
+ q(0950),
q(0),
],
q(aus) => [
@@ -58655,27 +59240,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(aut) => [
- q(0948),
+ q(0951),
q(0),
],
q(auu) => [
- q(0949),
+ q(0952),
q(0),
],
q(auw) => [
- q(0950),
+ q(0953),
q(0),
],
q(aux) => [
- q(0951),
+ q(0954),
q(0),
],
q(auy) => [
- q(0952),
+ q(0955),
q(0),
],
q(auz) => [
- q(0953),
+ q(0956),
q(0),
],
q(ava) => [
@@ -58683,11 +59268,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(avb) => [
- q(0954),
+ q(0957),
q(0),
],
q(avd) => [
- q(0955),
+ q(0958),
q(0),
],
q(ave) => [
@@ -58695,39 +59280,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(avi) => [
- q(0956),
+ q(0959),
q(0),
],
q(avk) => [
- q(0957),
+ q(0960),
q(0),
],
q(avl) => [
- q(0958),
+ q(0961),
+ q(0),
+ ],
+ q(avm) => [
+ q(0962),
q(0),
],
q(avn) => [
- q(0959),
+ q(0963),
q(0),
],
q(avo) => [
- q(0960),
+ q(0964),
q(0),
],
q(avs) => [
- q(0961),
+ q(0965),
q(0),
],
q(avt) => [
- q(0962),
+ q(0966),
q(0),
],
q(avu) => [
- q(0963),
+ q(0967),
q(0),
],
q(avv) => [
- q(0964),
+ q(0968),
q(0),
],
q(awa) => [
@@ -58735,135 +59324,143 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(awb) => [
- q(0965),
+ q(0969),
q(0),
],
q(awc) => [
- q(0966),
+ q(0970),
q(0),
],
q(awd) => [
- q(0491),
+ q(0492),
q(0),
],
q(awe) => [
- q(0967),
+ q(0971),
+ q(0),
+ ],
+ q(awg) => [
+ q(0972),
q(0),
],
q(awh) => [
- q(0968),
+ q(0973),
q(0),
],
q(awi) => [
- q(0969),
+ q(0974),
q(0),
],
q(awk) => [
- q(0970),
+ q(0975),
q(0),
],
q(awm) => [
- q(0971),
+ q(0976),
q(0),
],
q(awn) => [
- q(0972),
+ q(0977),
q(0),
],
q(awo) => [
- q(0973),
+ q(0978),
q(0),
],
q(awr) => [
- q(0974),
+ q(0979),
q(0),
],
q(aws) => [
- q(0975),
+ q(0980),
q(0),
],
q(awt) => [
- q(0976),
+ q(0981),
q(0),
],
q(awu) => [
- q(0977),
+ q(0982),
q(0),
],
q(awv) => [
- q(0978),
+ q(0983),
q(0),
],
q(aww) => [
- q(0979),
+ q(0984),
q(0),
],
q(awx) => [
- q(0980),
+ q(0985),
q(0),
],
q(awy) => [
- q(0981),
+ q(0986),
q(0),
],
q(axb) => [
- q(0982),
+ q(0987),
+ q(0),
+ ],
+ q(axe) => [
+ q(0988),
q(0),
],
q(axg) => [
- q(0983),
+ q(0989),
q(0),
],
q(axk) => [
- q(0984),
+ q(0990),
q(0),
],
q(axm) => [
- q(0985),
+ q(0991),
q(0),
],
q(axx) => [
- q(0986),
+ q(0992),
q(0),
],
q(aya) => [
- q(0987),
+ q(0993),
q(0),
],
q(ayb) => [
- q(0988),
+ q(0994),
q(0),
],
q(ayc) => [
- q(0989),
+ q(0995),
q(0),
],
q(ayd) => [
- q(0990),
+ q(0996),
q(0),
],
q(aye) => [
- q(0991),
+ q(0997),
q(0),
],
q(ayg) => [
- q(0992),
+ q(0998),
q(0),
],
q(ayh) => [
- q(0993),
+ q(0999),
q(0),
],
q(ayi) => [
- q(0994),
+ q(1000),
q(0),
],
q(ayk) => [
- q(0995),
+ q(1001),
q(0),
],
q(ayl) => [
- q(0996),
+ q(1002),
q(0),
],
q(aym) => [
@@ -58871,55 +59468,59 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ayn) => [
- q(0997),
+ q(1003),
q(0),
],
q(ayo) => [
- q(0998),
+ q(1004),
q(0),
],
q(ayp) => [
- q(0999),
+ q(1005),
q(0),
],
q(ayq) => [
- q(1000),
+ q(1006),
q(0),
],
q(ayr) => [
- q(1001),
+ q(1007),
q(0),
],
q(ays) => [
- q(1002),
+ q(1008),
q(0),
],
q(ayt) => [
- q(1003),
+ q(1009),
q(0),
],
q(ayu) => [
- q(1004),
+ q(1010),
q(0),
],
q(ayy) => [
- q(1005),
+ q(1011),
q(0),
],
q(ayz) => [
- q(1006),
+ q(1012),
q(0),
],
q(aza) => [
- q(1007),
+ q(1013),
q(0),
],
q(azb) => [
- q(1008),
+ q(1014),
q(0),
],
q(azc) => [
- q(0492),
+ q(0493),
+ q(0),
+ ],
+ q(azd) => [
+ q(1015),
q(0),
],
q(aze) => [
@@ -58927,39 +59528,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(azg) => [
- q(1009),
+ q(1016),
q(0),
],
q(azj) => [
- q(1010),
+ q(1017),
q(0),
],
q(azm) => [
- q(1011),
+ q(1018),
+ q(0),
+ ],
+ q(azn) => [
+ q(1019),
q(0),
],
q(azo) => [
- q(1012),
+ q(1020),
q(0),
],
q(azt) => [
- q(1013),
+ q(1021),
q(0),
],
q(azz) => [
- q(1014),
+ q(1022),
q(0),
],
q(baa) => [
- q(1015),
+ q(1023),
q(0),
],
q(bab) => [
- q(1016),
+ q(1024),
q(0),
],
q(bac) => [
- q(1017),
+ q(1025),
q(0),
],
q(bad) => [
@@ -58967,19 +59572,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bae) => [
- q(1018),
+ q(1026),
q(0),
],
q(baf) => [
- q(1019),
+ q(1027),
q(0),
],
q(bag) => [
- q(1020),
+ q(1028),
q(0),
],
q(bah) => [
- q(1021),
+ q(1029),
q(0),
],
q(bai) => [
@@ -58987,7 +59592,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(baj) => [
- q(1022),
+ q(1030),
q(0),
],
q(bak) => [
@@ -59007,11 +59612,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bao) => [
- q(1023),
+ q(1031),
q(0),
],
q(bap) => [
- q(1024),
+ q(1032),
q(0),
],
q(baq) => [
@@ -59019,7 +59624,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bar) => [
- q(1025),
+ q(1033),
q(0),
],
q(bas) => [
@@ -59031,371 +59636,367 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bau) => [
- q(1026),
+ q(1034),
q(0),
],
q(bav) => [
- q(1027),
+ q(1035),
q(0),
],
q(baw) => [
- q(1028),
+ q(1036),
q(0),
],
q(bax) => [
- q(1029),
+ q(1037),
q(0),
],
q(bay) => [
- q(1030),
- q(0),
- ],
- q(baz) => [
- q(1031),
+ q(1038),
q(0),
],
q(bba) => [
- q(1032),
+ q(1039),
q(0),
],
q(bbb) => [
- q(1033),
+ q(1040),
q(0),
],
q(bbc) => [
- q(1034),
+ q(1041),
q(0),
],
q(bbd) => [
- q(1035),
+ q(1042),
q(0),
],
q(bbe) => [
- q(1036),
+ q(1043),
q(0),
],
q(bbf) => [
- q(1037),
+ q(1044),
q(0),
],
q(bbg) => [
- q(1038),
+ q(1045),
q(0),
],
q(bbh) => [
- q(1039),
+ q(1046),
q(0),
],
q(bbi) => [
- q(1040),
+ q(1047),
q(0),
],
q(bbj) => [
- q(1041),
+ q(1048),
q(0),
],
q(bbk) => [
- q(1042),
+ q(1049),
q(0),
],
q(bbl) => [
- q(1043),
+ q(1050),
q(0),
],
q(bbm) => [
- q(1044),
+ q(1051),
q(0),
],
q(bbn) => [
- q(1045),
+ q(1052),
q(0),
],
q(bbo) => [
- q(1046),
+ q(1053),
q(0),
],
q(bbp) => [
- q(1047),
+ q(1054),
q(0),
],
q(bbq) => [
- q(1048),
+ q(1055),
q(0),
],
q(bbr) => [
- q(1049),
+ q(1056),
q(0),
],
q(bbs) => [
- q(1050),
+ q(1057),
q(0),
],
q(bbt) => [
- q(1051),
+ q(1058),
q(0),
],
q(bbu) => [
- q(1052),
+ q(1059),
q(0),
],
q(bbv) => [
- q(1053),
+ q(1060),
q(0),
],
q(bbw) => [
- q(1054),
+ q(1061),
q(0),
],
q(bbx) => [
- q(1055),
+ q(1062),
q(0),
],
q(bby) => [
- q(1056),
+ q(1063),
q(0),
],
q(bbz) => [
- q(1057),
+ q(1064),
q(0),
],
q(bca) => [
- q(1058),
+ q(1065),
q(0),
],
q(bcb) => [
- q(1059),
+ q(1066),
q(0),
],
q(bcc) => [
- q(1060),
+ q(1067),
q(0),
],
q(bcd) => [
- q(1061),
+ q(1068),
q(0),
],
q(bce) => [
- q(1062),
+ q(1069),
q(0),
],
q(bcf) => [
- q(1063),
+ q(1070),
q(0),
],
q(bcg) => [
- q(1064),
+ q(1071),
q(0),
],
q(bch) => [
- q(1065),
+ q(1072),
q(0),
],
q(bci) => [
- q(1066),
+ q(1073),
q(0),
],
q(bcj) => [
- q(1067),
+ q(1074),
q(0),
],
q(bck) => [
- q(1068),
+ q(1075),
q(0),
],
q(bcl) => [
- q(1069),
+ q(1076),
q(0),
],
q(bcm) => [
- q(1070),
+ q(1077),
q(0),
],
q(bcn) => [
- q(1071),
+ q(1078),
q(0),
],
q(bco) => [
- q(1072),
+ q(1079),
q(0),
],
q(bcp) => [
- q(1073),
+ q(1080),
q(0),
],
q(bcq) => [
- q(1074),
+ q(1081),
q(0),
],
q(bcr) => [
- q(1075),
+ q(1082),
q(0),
],
q(bcs) => [
- q(1076),
+ q(1083),
q(0),
],
q(bct) => [
- q(1077),
+ q(1084),
q(0),
],
q(bcu) => [
- q(1078),
+ q(1085),
q(0),
],
q(bcv) => [
- q(1079),
+ q(1086),
q(0),
],
q(bcw) => [
- q(1080),
+ q(1087),
q(0),
],
q(bcy) => [
- q(1081),
+ q(1088),
q(0),
],
q(bcz) => [
- q(1082),
+ q(1089),
q(0),
],
q(bda) => [
- q(1083),
+ q(1090),
q(0),
],
q(bdb) => [
- q(1084),
+ q(1091),
q(0),
],
q(bdc) => [
- q(1085),
+ q(1092),
q(0),
],
q(bdd) => [
- q(1086),
+ q(1093),
q(0),
],
q(bde) => [
- q(1087),
+ q(1094),
q(0),
],
q(bdf) => [
- q(1088),
+ q(1095),
q(0),
],
q(bdg) => [
- q(1089),
+ q(1096),
q(0),
],
q(bdh) => [
- q(1090),
+ q(1097),
q(0),
],
q(bdi) => [
- q(1091),
+ q(1098),
q(0),
],
q(bdj) => [
- q(1092),
+ q(1099),
q(0),
],
q(bdk) => [
- q(1093),
+ q(1100),
q(0),
],
q(bdl) => [
- q(1094),
+ q(1101),
q(0),
],
q(bdm) => [
- q(1095),
+ q(1102),
q(0),
],
q(bdn) => [
- q(1096),
+ q(1103),
q(0),
],
q(bdo) => [
- q(1097),
+ q(1104),
q(0),
],
q(bdp) => [
- q(1098),
+ q(1105),
q(0),
],
q(bdq) => [
- q(1099),
+ q(1106),
q(0),
],
q(bdr) => [
- q(1100),
+ q(1107),
q(0),
],
q(bds) => [
- q(1101),
+ q(1108),
q(0),
],
q(bdt) => [
- q(1102),
+ q(1109),
q(0),
],
q(bdu) => [
- q(1103),
+ q(1110),
q(0),
],
q(bdv) => [
- q(1104),
+ q(1111),
q(0),
],
q(bdw) => [
- q(1105),
+ q(1112),
q(0),
],
q(bdx) => [
- q(1106),
+ q(1113),
q(0),
],
q(bdy) => [
- q(1107),
+ q(1114),
q(0),
],
q(bdz) => [
- q(1108),
+ q(1115),
q(0),
],
q(bea) => [
- q(1109),
+ q(1116),
q(0),
],
q(beb) => [
- q(1110),
+ q(1117),
q(0),
],
q(bec) => [
- q(1111),
+ q(1118),
q(0),
],
q(bed) => [
- q(1112),
+ q(1119),
q(0),
],
q(bee) => [
- q(1113),
+ q(1120),
q(0),
],
q(bef) => [
- q(1114),
+ q(1121),
q(0),
],
q(beg) => [
- q(1115),
+ q(1122),
q(0),
],
q(beh) => [
- q(1116),
+ q(1123),
q(0),
],
q(bei) => [
- q(1117),
+ q(1124),
q(0),
],
q(bej) => [
@@ -59403,7 +60004,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bek) => [
- q(1118),
+ q(1125),
q(0),
],
q(bel) => [
@@ -59419,15 +60020,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(beo) => [
- q(1119),
+ q(1126),
q(0),
],
q(bep) => [
- q(1120),
+ q(1127),
q(0),
],
q(beq) => [
- q(1121),
+ q(1128),
q(0),
],
q(ber) => [
@@ -59435,287 +60036,287 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bes) => [
- q(1122),
+ q(1129),
q(0),
],
q(bet) => [
- q(1123),
+ q(1130),
q(0),
],
q(beu) => [
- q(1124),
+ q(1131),
q(0),
],
q(bev) => [
- q(1125),
+ q(1132),
q(0),
],
q(bew) => [
- q(1126),
+ q(1133),
q(0),
],
q(bex) => [
- q(1127),
+ q(1134),
q(0),
],
q(bey) => [
- q(1128),
+ q(1135),
q(0),
],
q(bez) => [
- q(1129),
+ q(1136),
q(0),
],
q(bfa) => [
- q(1130),
+ q(1137),
q(0),
],
q(bfb) => [
- q(1131),
+ q(1138),
q(0),
],
q(bfc) => [
- q(1132),
+ q(1139),
q(0),
],
q(bfd) => [
- q(1133),
+ q(1140),
q(0),
],
q(bfe) => [
- q(1134),
+ q(1141),
q(0),
],
q(bff) => [
- q(1135),
+ q(1142),
q(0),
],
q(bfg) => [
- q(1136),
+ q(1143),
q(0),
],
q(bfh) => [
- q(1137),
+ q(1144),
q(0),
],
q(bfi) => [
- q(1138),
+ q(1145),
q(0),
],
q(bfj) => [
- q(1139),
+ q(1146),
q(0),
],
q(bfk) => [
- q(1140),
+ q(1147),
q(0),
],
q(bfl) => [
- q(1141),
+ q(1148),
q(0),
],
q(bfm) => [
- q(1142),
+ q(1149),
q(0),
],
q(bfn) => [
- q(1143),
+ q(1150),
q(0),
],
q(bfo) => [
- q(1144),
+ q(1151),
q(0),
],
q(bfp) => [
- q(1145),
+ q(1152),
q(0),
],
q(bfq) => [
- q(1146),
+ q(1153),
q(0),
],
q(bfr) => [
- q(1147),
+ q(1154),
q(0),
],
q(bfs) => [
- q(1148),
+ q(1155),
q(0),
],
q(bft) => [
- q(1149),
+ q(1156),
q(0),
],
q(bfu) => [
- q(1150),
+ q(1157),
q(0),
],
q(bfw) => [
- q(1151),
+ q(1158),
q(0),
],
q(bfx) => [
- q(1152),
+ q(1159),
q(0),
],
q(bfy) => [
- q(1153),
+ q(1160),
q(0),
],
q(bfz) => [
- q(1154),
+ q(1161),
q(0),
],
q(bga) => [
- q(1155),
+ q(1162),
q(0),
],
q(bgb) => [
- q(1156),
+ q(1163),
q(0),
],
q(bgc) => [
- q(1157),
+ q(1164),
q(0),
],
q(bgd) => [
- q(1158),
+ q(1165),
q(0),
],
q(bge) => [
- q(1159),
+ q(1166),
q(0),
],
q(bgf) => [
- q(1160),
+ q(1167),
q(0),
],
q(bgg) => [
- q(1161),
+ q(1168),
q(0),
],
q(bgi) => [
- q(1162),
+ q(1169),
q(0),
],
q(bgj) => [
- q(1163),
+ q(1170),
q(0),
],
q(bgk) => [
- q(1164),
+ q(1171),
q(0),
],
q(bgl) => [
- q(1165),
+ q(1172),
q(0),
],
q(bgm) => [
- q(1166),
+ q(1173),
q(0),
],
q(bgn) => [
- q(1167),
+ q(1174),
q(0),
],
q(bgo) => [
- q(1168),
+ q(1175),
q(0),
],
q(bgp) => [
- q(1169),
+ q(1176),
q(0),
],
q(bgq) => [
- q(1170),
+ q(1177),
q(0),
],
q(bgr) => [
- q(1171),
+ q(1178),
q(0),
],
q(bgs) => [
- q(1172),
+ q(1179),
q(0),
],
q(bgt) => [
- q(1173),
+ q(1180),
q(0),
],
q(bgu) => [
- q(1174),
+ q(1181),
q(0),
],
q(bgv) => [
- q(1175),
+ q(1182),
q(0),
],
q(bgw) => [
- q(1176),
+ q(1183),
q(0),
],
q(bgx) => [
- q(1177),
+ q(1184),
q(0),
],
q(bgy) => [
- q(1178),
+ q(1185),
q(0),
],
q(bgz) => [
- q(1179),
+ q(1186),
q(0),
],
q(bha) => [
- q(1180),
+ q(1187),
q(0),
],
q(bhb) => [
- q(1181),
+ q(1188),
q(0),
],
q(bhc) => [
- q(1182),
+ q(1189),
q(0),
],
q(bhd) => [
- q(1183),
+ q(1190),
q(0),
],
q(bhe) => [
- q(1184),
+ q(1191),
q(0),
],
q(bhf) => [
- q(1185),
+ q(1192),
q(0),
],
q(bhg) => [
- q(1186),
+ q(1193),
q(0),
],
q(bhh) => [
- q(1187),
+ q(1194),
q(0),
],
q(bhi) => [
- q(1188),
+ q(1195),
q(0),
],
q(bhj) => [
- q(1189),
+ q(1196),
q(0),
],
q(bhl) => [
- q(1190),
+ q(1197),
q(0),
],
q(bhm) => [
- q(1191),
+ q(1198),
q(0),
],
q(bhn) => [
- q(1192),
+ q(1199),
q(0),
],
q(bho) => [
@@ -59723,75 +60324,75 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bhp) => [
- q(1193),
+ q(1200),
q(0),
],
q(bhq) => [
- q(1194),
+ q(1201),
q(0),
],
q(bhr) => [
- q(1195),
+ q(1202),
q(0),
],
q(bhs) => [
- q(1196),
+ q(1203),
q(0),
],
q(bht) => [
- q(1197),
+ q(1204),
q(0),
],
q(bhu) => [
- q(1198),
+ q(1205),
q(0),
],
q(bhv) => [
- q(1199),
+ q(1206),
q(0),
],
q(bhw) => [
- q(1200),
+ q(1207),
q(0),
],
q(bhx) => [
- q(1201),
+ q(1208),
q(0),
],
q(bhy) => [
- q(1202),
+ q(1209),
q(0),
],
q(bhz) => [
- q(1203),
+ q(1210),
q(0),
],
q(bia) => [
- q(1204),
+ q(1211),
q(0),
],
q(bib) => [
- q(1205),
+ q(1212),
q(0),
],
q(bic) => [
- q(1206),
+ q(1213),
q(0),
],
q(bid) => [
- q(1207),
+ q(1214),
q(0),
],
q(bie) => [
- q(1208),
+ q(1215),
q(0),
],
q(bif) => [
- q(1209),
+ q(1216),
q(0),
],
q(big) => [
- q(1210),
+ q(1217),
q(0),
],
q(bih) => [
@@ -59799,7 +60400,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bij) => [
- q(1211),
+ q(1218),
q(0),
],
q(bik) => [
@@ -59807,11 +60408,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bil) => [
- q(1212),
+ q(1219),
q(0),
],
q(bim) => [
- q(1213),
+ q(1220),
q(0),
],
q(bin) => [
@@ -59819,19 +60420,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bio) => [
- q(1214),
+ q(1221),
q(0),
],
q(bip) => [
- q(1215),
+ q(1222),
q(0),
],
q(biq) => [
- q(1216),
+ q(1223),
q(0),
],
q(bir) => [
- q(1217),
+ q(1224),
q(0),
],
q(bis) => [
@@ -59839,223 +60440,219 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bit) => [
- q(1218),
+ q(1225),
q(0),
],
q(biu) => [
- q(1219),
+ q(1226),
q(0),
],
q(biv) => [
- q(1220),
+ q(1227),
q(0),
],
q(biw) => [
- q(1221),
+ q(1228),
q(0),
],
q(bix) => [
- q(1222),
+ q(1229),
q(0),
],
q(biy) => [
- q(1223),
+ q(1230),
q(0),
],
q(biz) => [
- q(1224),
+ q(1231),
q(0),
],
q(bja) => [
- q(1225),
+ q(1232),
q(0),
],
q(bjb) => [
- q(1226),
+ q(1233),
q(0),
],
q(bjc) => [
- q(1227),
- q(0),
- ],
- q(bjd) => [
- q(1228),
+ q(1234),
q(0),
],
q(bje) => [
- q(1229),
+ q(1235),
q(0),
],
q(bjf) => [
- q(1230),
+ q(1236),
q(0),
],
q(bjg) => [
- q(1231),
+ q(1237),
q(0),
],
q(bjh) => [
- q(1232),
+ q(1238),
q(0),
],
q(bji) => [
- q(1233),
+ q(1239),
q(0),
],
q(bjj) => [
- q(1234),
+ q(1240),
q(0),
],
q(bjk) => [
- q(1235),
+ q(1241),
q(0),
],
q(bjl) => [
- q(1236),
+ q(1242),
q(0),
],
q(bjm) => [
- q(1237),
+ q(1243),
q(0),
],
q(bjn) => [
- q(1238),
+ q(1244),
q(0),
],
q(bjo) => [
- q(1239),
+ q(1245),
q(0),
],
q(bjr) => [
- q(1240),
+ q(1246),
q(0),
],
q(bjs) => [
- q(1241),
+ q(1247),
q(0),
],
q(bjt) => [
- q(1242),
+ q(1248),
q(0),
],
q(bju) => [
- q(1243),
+ q(1249),
q(0),
],
q(bjv) => [
- q(1244),
+ q(1250),
q(0),
],
q(bjw) => [
- q(1245),
+ q(1251),
q(0),
],
q(bjx) => [
- q(1246),
+ q(1252),
q(0),
],
q(bjy) => [
- q(1247),
+ q(1253),
q(0),
],
q(bjz) => [
- q(1248),
+ q(1254),
q(0),
],
q(bka) => [
- q(1249),
+ q(1255),
q(0),
],
q(bkc) => [
- q(1250),
+ q(1256),
q(0),
],
q(bkd) => [
- q(1251),
+ q(1257),
q(0),
],
q(bkf) => [
- q(1252),
+ q(1258),
q(0),
],
q(bkg) => [
- q(1253),
+ q(1259),
q(0),
],
q(bkh) => [
- q(1254),
+ q(1260),
q(0),
],
q(bki) => [
- q(1255),
+ q(1261),
q(0),
],
q(bkj) => [
- q(1256),
+ q(1262),
q(0),
],
q(bkk) => [
- q(1257),
+ q(1263),
q(0),
],
q(bkl) => [
- q(1258),
+ q(1264),
q(0),
],
q(bkm) => [
- q(1259),
+ q(1265),
q(0),
],
q(bkn) => [
- q(1260),
+ q(1266),
q(0),
],
q(bko) => [
- q(1261),
+ q(1267),
q(0),
],
q(bkp) => [
- q(1262),
+ q(1268),
q(0),
],
q(bkq) => [
- q(1263),
+ q(1269),
q(0),
],
q(bkr) => [
- q(1264),
+ q(1270),
q(0),
],
q(bks) => [
- q(1265),
+ q(1271),
q(0),
],
q(bkt) => [
- q(1266),
+ q(1272),
q(0),
],
q(bku) => [
- q(1267),
+ q(1273),
q(0),
],
q(bkv) => [
- q(1268),
+ q(1274),
q(0),
],
q(bkw) => [
- q(1269),
+ q(1275),
q(0),
],
q(bkx) => [
- q(1270),
+ q(1276),
q(0),
],
q(bky) => [
- q(1271),
+ q(1277),
q(0),
],
q(bkz) => [
- q(1272),
+ q(1278),
q(0),
],
q(bla) => [
@@ -60063,275 +60660,275 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(blb) => [
- q(1273),
+ q(1279),
q(0),
],
q(blc) => [
- q(1274),
+ q(1280),
q(0),
],
q(bld) => [
- q(1275),
+ q(1281),
q(0),
],
q(ble) => [
- q(1276),
+ q(1282),
q(0),
],
q(blf) => [
- q(1277),
+ q(1283),
q(0),
],
q(blg) => [
- q(1278),
+ q(1284),
q(0),
],
q(blh) => [
- q(1279),
+ q(1285),
q(0),
],
q(bli) => [
- q(1280),
+ q(1286),
q(0),
],
q(blj) => [
- q(1281),
+ q(1287),
q(0),
],
q(blk) => [
- q(1282),
+ q(1288),
q(0),
],
q(bll) => [
- q(1283),
+ q(1289),
q(0),
],
q(blm) => [
- q(1284),
+ q(1290),
q(0),
],
q(bln) => [
- q(1285),
+ q(1291),
q(0),
],
q(blo) => [
- q(1286),
+ q(1292),
q(0),
],
q(blp) => [
- q(1287),
+ q(1293),
q(0),
],
q(blq) => [
- q(1288),
+ q(1294),
q(0),
],
q(blr) => [
- q(1289),
+ q(1295),
q(0),
],
q(bls) => [
- q(1290),
+ q(1296),
q(0),
],
q(blt) => [
- q(1291),
+ q(1297),
q(0),
],
q(blv) => [
- q(1292),
+ q(1298),
q(0),
],
q(blw) => [
- q(1293),
+ q(1299),
q(0),
],
q(blx) => [
- q(1294),
+ q(1300),
q(0),
],
q(bly) => [
- q(1295),
+ q(1301),
q(0),
],
q(blz) => [
- q(1296),
+ q(1302),
q(0),
],
q(bma) => [
- q(1297),
+ q(1303),
q(0),
],
q(bmb) => [
- q(1298),
+ q(1304),
q(0),
],
q(bmc) => [
- q(1299),
+ q(1305),
q(0),
],
q(bmd) => [
- q(1300),
+ q(1306),
q(0),
],
q(bme) => [
- q(1301),
+ q(1307),
q(0),
],
q(bmf) => [
- q(1302),
+ q(1308),
q(0),
],
q(bmg) => [
- q(1303),
+ q(1309),
q(0),
],
q(bmh) => [
- q(1304),
+ q(1310),
q(0),
],
q(bmi) => [
- q(1305),
+ q(1311),
q(0),
],
q(bmj) => [
- q(1306),
+ q(1312),
q(0),
],
q(bmk) => [
- q(1307),
+ q(1313),
q(0),
],
q(bml) => [
- q(1308),
+ q(1314),
q(0),
],
q(bmm) => [
- q(1309),
+ q(1315),
q(0),
],
q(bmn) => [
- q(1310),
+ q(1316),
q(0),
],
q(bmo) => [
- q(1311),
+ q(1317),
q(0),
],
q(bmp) => [
- q(1312),
+ q(1318),
q(0),
],
q(bmq) => [
- q(1313),
+ q(1319),
q(0),
],
q(bmr) => [
- q(1314),
+ q(1320),
q(0),
],
q(bms) => [
- q(1315),
+ q(1321),
q(0),
],
q(bmt) => [
- q(1316),
+ q(1322),
q(0),
],
q(bmu) => [
- q(1317),
+ q(1323),
q(0),
],
q(bmv) => [
- q(1318),
+ q(1324),
q(0),
],
q(bmw) => [
- q(1319),
+ q(1325),
q(0),
],
q(bmx) => [
- q(1320),
+ q(1326),
q(0),
],
q(bmy) => [
- q(1321),
+ q(1327),
q(0),
],
q(bmz) => [
- q(1322),
+ q(1328),
q(0),
],
q(bna) => [
- q(1323),
+ q(1329),
q(0),
],
q(bnb) => [
- q(1324),
+ q(1330),
q(0),
],
q(bnc) => [
- q(1325),
+ q(1331),
q(0),
],
q(bnd) => [
- q(1326),
+ q(1332),
q(0),
],
q(bne) => [
- q(1327),
+ q(1333),
q(0),
],
q(bnf) => [
- q(1328),
+ q(1334),
q(0),
],
q(bng) => [
- q(1329),
+ q(1335),
q(0),
],
q(bni) => [
- q(1330),
+ q(1336),
q(0),
],
q(bnj) => [
- q(1331),
+ q(1337),
q(0),
],
q(bnk) => [
- q(1332),
+ q(1338),
q(0),
],
q(bnl) => [
- q(1333),
+ q(1339),
q(0),
],
q(bnm) => [
- q(1334),
+ q(1340),
q(0),
],
q(bnn) => [
- q(1335),
+ q(1341),
q(0),
],
q(bno) => [
- q(1336),
+ q(1342),
q(0),
],
q(bnp) => [
- q(1337),
+ q(1343),
q(0),
],
q(bnq) => [
- q(1338),
+ q(1344),
q(0),
],
q(bnr) => [
- q(1339),
+ q(1345),
q(0),
],
q(bns) => [
- q(1340),
+ q(1346),
q(0),
],
q(bnt) => [
@@ -60339,91 +60936,91 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(bnu) => [
- q(1341),
+ q(1347),
q(0),
],
q(bnv) => [
- q(1342),
+ q(1348),
q(0),
],
q(bnw) => [
- q(1343),
+ q(1349),
q(0),
],
q(bnx) => [
- q(1344),
+ q(1350),
q(0),
],
q(bny) => [
- q(1345),
+ q(1351),
q(0),
],
q(bnz) => [
- q(1346),
+ q(1352),
q(0),
],
q(boa) => [
- q(1347),
+ q(1353),
q(0),
],
q(bob) => [
- q(1348),
+ q(1354),
q(0),
],
q(boe) => [
- q(1349),
+ q(1355),
q(0),
],
q(bof) => [
- q(1350),
+ q(1356),
q(0),
],
q(bog) => [
- q(1351),
+ q(1357),
q(0),
],
q(boh) => [
- q(1352),
+ q(1358),
q(0),
],
q(boi) => [
- q(1353),
+ q(1359),
q(0),
],
q(boj) => [
- q(1354),
+ q(1360),
q(0),
],
q(bok) => [
- q(1355),
+ q(1361),
q(0),
],
q(bol) => [
- q(1356),
+ q(1362),
q(0),
],
q(bom) => [
- q(1357),
+ q(1363),
q(0),
],
q(bon) => [
- q(1358),
+ q(1364),
q(0),
],
q(boo) => [
- q(1359),
+ q(1365),
q(0),
],
q(bop) => [
- q(1360),
+ q(1366),
q(0),
],
q(boq) => [
- q(1361),
+ q(1367),
q(0),
],
q(bor) => [
- q(1362),
+ q(1368),
q(0),
],
q(bos) => [
@@ -60431,223 +61028,223 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bot) => [
- q(1363),
+ q(1369),
q(0),
],
q(bou) => [
- q(1364),
+ q(1370),
q(0),
],
q(bov) => [
- q(1365),
+ q(1371),
q(0),
],
q(bow) => [
- q(1366),
+ q(1372),
q(0),
],
q(box) => [
- q(1367),
+ q(1373),
q(0),
],
q(boy) => [
- q(1368),
+ q(1374),
q(0),
],
q(boz) => [
- q(1369),
+ q(1375),
q(0),
],
q(bpa) => [
- q(1370),
+ q(1376),
q(0),
],
q(bpb) => [
- q(1371),
+ q(1377),
q(0),
],
q(bpd) => [
- q(1372),
+ q(1378),
q(0),
],
q(bpg) => [
- q(1373),
+ q(1379),
q(0),
],
q(bph) => [
- q(1374),
+ q(1380),
q(0),
],
q(bpi) => [
- q(1375),
+ q(1381),
q(0),
],
q(bpj) => [
- q(1376),
+ q(1382),
q(0),
],
q(bpk) => [
- q(1377),
+ q(1383),
q(0),
],
q(bpl) => [
- q(1378),
+ q(1384),
q(0),
],
q(bpm) => [
- q(1379),
+ q(1385),
q(0),
],
q(bpn) => [
- q(1380),
+ q(1386),
q(0),
],
q(bpo) => [
- q(1381),
+ q(1387),
q(0),
],
q(bpp) => [
- q(1382),
+ q(1388),
q(0),
],
q(bpq) => [
- q(1383),
+ q(1389),
q(0),
],
q(bpr) => [
- q(1384),
+ q(1390),
q(0),
],
q(bps) => [
- q(1385),
+ q(1391),
q(0),
],
q(bpt) => [
- q(1386),
+ q(1392),
q(0),
],
q(bpu) => [
- q(1387),
+ q(1393),
q(0),
],
q(bpv) => [
- q(1388),
+ q(1394),
q(0),
],
q(bpw) => [
- q(1389),
+ q(1395),
q(0),
],
q(bpx) => [
- q(1390),
+ q(1396),
q(0),
],
q(bpy) => [
- q(1391),
+ q(1397),
q(0),
],
q(bpz) => [
- q(1392),
+ q(1398),
q(0),
],
q(bqa) => [
- q(1393),
+ q(1399),
q(0),
],
q(bqb) => [
- q(1394),
+ q(1400),
q(0),
],
q(bqc) => [
- q(1395),
+ q(1401),
q(0),
],
q(bqd) => [
- q(1396),
+ q(1402),
q(0),
],
q(bqf) => [
- q(1397),
+ q(1403),
q(0),
],
q(bqg) => [
- q(1398),
+ q(1404),
q(0),
],
q(bqh) => [
- q(1399),
+ q(1405),
q(0),
],
q(bqi) => [
- q(1400),
+ q(1406),
q(0),
],
q(bqj) => [
- q(1401),
+ q(1407),
q(0),
],
q(bqk) => [
- q(1402),
+ q(1408),
q(0),
],
q(bql) => [
- q(1403),
+ q(1409),
q(0),
],
q(bqm) => [
- q(1404),
+ q(1410),
q(0),
],
q(bqn) => [
- q(1405),
+ q(1411),
q(0),
],
q(bqo) => [
- q(1406),
+ q(1412),
q(0),
],
q(bqp) => [
- q(1407),
+ q(1413),
q(0),
],
q(bqq) => [
- q(1408),
+ q(1414),
q(0),
],
q(bqr) => [
- q(1409),
+ q(1415),
q(0),
],
q(bqs) => [
- q(1410),
+ q(1416),
q(0),
],
q(bqt) => [
- q(1411),
+ q(1417),
q(0),
],
q(bqu) => [
- q(1412),
+ q(1418),
q(0),
],
q(bqv) => [
- q(1413),
+ q(1419),
q(0),
],
q(bqw) => [
- q(1414),
+ q(1420),
q(0),
],
q(bqx) => [
- q(1415),
+ q(1421),
q(0),
],
q(bqy) => [
- q(1416),
+ q(1422),
q(0),
],
q(bqz) => [
- q(1417),
+ q(1423),
q(0),
],
q(bra) => [
@@ -60655,15 +61252,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(brb) => [
- q(1418),
+ q(1424),
q(0),
],
q(brc) => [
- q(1419),
+ q(1425),
q(0),
],
q(brd) => [
- q(1420),
+ q(1426),
q(0),
],
q(bre) => [
@@ -60671,219 +61268,219 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(brf) => [
- q(1421),
+ q(1427),
q(0),
],
q(brg) => [
- q(1422),
+ q(1428),
q(0),
],
q(brh) => [
- q(1423),
+ q(1429),
q(0),
],
q(bri) => [
- q(1424),
+ q(1430),
q(0),
],
q(brj) => [
- q(1425),
+ q(1431),
q(0),
],
q(brk) => [
- q(1426),
+ q(1432),
q(0),
],
q(brl) => [
- q(1427),
+ q(1433),
q(0),
],
q(brm) => [
- q(1428),
+ q(1434),
q(0),
],
q(brn) => [
- q(1429),
+ q(1435),
q(0),
],
q(bro) => [
- q(1430),
+ q(1436),
q(0),
],
q(brp) => [
- q(1431),
+ q(1437),
q(0),
],
q(brq) => [
- q(1432),
+ q(1438),
q(0),
],
q(brr) => [
- q(1433),
+ q(1439),
q(0),
],
q(brs) => [
- q(1434),
+ q(1440),
q(0),
],
q(brt) => [
- q(1435),
+ q(1441),
q(0),
],
q(bru) => [
- q(1436),
+ q(1442),
q(0),
],
q(brv) => [
- q(1437),
+ q(1443),
q(0),
],
q(brw) => [
- q(1438),
+ q(1444),
q(0),
],
q(brx) => [
- q(1439),
+ q(1445),
q(0),
],
q(bry) => [
- q(1440),
+ q(1446),
q(0),
],
q(brz) => [
- q(1441),
+ q(1447),
q(0),
],
q(bsa) => [
- q(1442),
+ q(1448),
q(0),
],
q(bsb) => [
- q(1443),
+ q(1449),
q(0),
],
q(bsc) => [
- q(1444),
+ q(1450),
q(0),
],
q(bse) => [
- q(1445),
+ q(1451),
q(0),
],
q(bsf) => [
- q(1446),
+ q(1452),
q(0),
],
q(bsg) => [
- q(1447),
+ q(1453),
q(0),
],
q(bsh) => [
- q(1448),
+ q(1454),
q(0),
],
q(bsi) => [
- q(1449),
+ q(1455),
q(0),
],
q(bsj) => [
- q(1450),
+ q(1456),
q(0),
],
q(bsk) => [
- q(1451),
+ q(1457),
q(0),
],
q(bsl) => [
- q(1452),
+ q(1458),
q(0),
],
q(bsm) => [
- q(1453),
+ q(1459),
q(0),
],
q(bsn) => [
- q(1454),
+ q(1460),
q(0),
],
q(bso) => [
- q(1455),
+ q(1461),
q(0),
],
q(bsp) => [
- q(1456),
+ q(1462),
q(0),
],
q(bsq) => [
- q(1457),
+ q(1463),
q(0),
],
q(bsr) => [
- q(1458),
+ q(1464),
q(0),
],
q(bss) => [
- q(1459),
+ q(1465),
q(0),
],
q(bst) => [
- q(1460),
+ q(1466),
q(0),
],
q(bsu) => [
- q(1461),
+ q(1467),
q(0),
],
q(bsv) => [
- q(1462),
+ q(1468),
q(0),
],
q(bsw) => [
- q(1463),
+ q(1469),
q(0),
],
q(bsx) => [
- q(1464),
+ q(1470),
q(0),
],
q(bsy) => [
- q(1465),
+ q(1471),
q(0),
],
q(bta) => [
- q(1466),
+ q(1472),
q(0),
],
q(btc) => [
- q(1467),
+ q(1473),
q(0),
],
q(btd) => [
- q(1468),
+ q(1474),
q(0),
],
q(bte) => [
- q(1469),
+ q(1475),
q(0),
],
q(btf) => [
- q(1470),
+ q(1476),
q(0),
],
q(btg) => [
- q(1471),
+ q(1477),
q(0),
],
q(bth) => [
- q(1472),
+ q(1478),
q(0),
],
q(bti) => [
- q(1473),
+ q(1479),
q(0),
],
q(btj) => [
- q(1474),
+ q(1480),
q(0),
],
q(btk) => [
@@ -60891,63 +61488,63 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(btl) => [
- q(1475),
+ q(1481),
q(0),
],
q(btm) => [
- q(1476),
+ q(1482),
q(0),
],
q(btn) => [
- q(1477),
+ q(1483),
q(0),
],
q(bto) => [
- q(1478),
+ q(1484),
q(0),
],
q(btp) => [
- q(1479),
+ q(1485),
q(0),
],
q(btq) => [
- q(1480),
+ q(1486),
q(0),
],
q(btr) => [
- q(1481),
+ q(1487),
q(0),
],
q(bts) => [
- q(1482),
+ q(1488),
q(0),
],
q(btt) => [
- q(1483),
+ q(1489),
q(0),
],
q(btu) => [
- q(1484),
+ q(1490),
q(0),
],
q(btv) => [
- q(1485),
+ q(1491),
q(0),
],
q(btw) => [
- q(1486),
+ q(1492),
q(0),
],
q(btx) => [
- q(1487),
+ q(1493),
q(0),
],
q(bty) => [
- q(1488),
+ q(1494),
q(0),
],
q(btz) => [
- q(1489),
+ q(1495),
q(0),
],
q(bua) => [
@@ -60955,23 +61552,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bub) => [
- q(1490),
+ q(1496),
q(0),
],
q(buc) => [
- q(1491),
+ q(1497),
q(0),
],
q(bud) => [
- q(1492),
+ q(1498),
q(0),
],
q(bue) => [
- q(1493),
+ q(1499),
q(0),
],
q(buf) => [
- q(1494),
+ q(1500),
q(0),
],
q(bug) => [
@@ -60979,19 +61576,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(buh) => [
- q(1495),
+ q(1501),
q(0),
],
q(bui) => [
- q(1496),
+ q(1502),
q(0),
],
q(buj) => [
- q(1497),
+ q(1503),
q(0),
],
q(buk) => [
- q(1498),
+ q(1504),
q(0),
],
q(bul) => [
@@ -60999,23 +61596,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bum) => [
- q(1499),
+ q(1505),
q(0),
],
q(bun) => [
- q(1500),
+ q(1506),
q(0),
],
q(buo) => [
- q(1501),
+ q(1507),
q(0),
],
q(bup) => [
- q(1502),
+ q(1508),
q(0),
],
q(buq) => [
- q(1503),
+ q(1509),
q(0),
],
q(bur) => [
@@ -61023,379 +61620,379 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(bus) => [
- q(1504),
+ q(1510),
q(0),
],
q(but) => [
- q(1505),
+ q(1511),
q(0),
],
q(buu) => [
- q(1506),
+ q(1512),
q(0),
],
q(buv) => [
- q(1507),
+ q(1513),
q(0),
],
q(buw) => [
- q(1508),
+ q(1514),
q(0),
],
q(bux) => [
- q(1509),
+ q(1515),
q(0),
],
q(buy) => [
- q(1510),
+ q(1516),
q(0),
],
q(buz) => [
- q(1511),
+ q(1517),
q(0),
],
q(bva) => [
- q(1512),
+ q(1518),
q(0),
],
q(bvb) => [
- q(1513),
+ q(1519),
q(0),
],
q(bvc) => [
- q(1514),
+ q(1520),
q(0),
],
q(bvd) => [
- q(1515),
+ q(1521),
q(0),
],
q(bve) => [
- q(1516),
+ q(1522),
q(0),
],
q(bvf) => [
- q(1517),
+ q(1523),
q(0),
],
q(bvg) => [
- q(1518),
+ q(1524),
q(0),
],
q(bvh) => [
- q(1519),
+ q(1525),
q(0),
],
q(bvi) => [
- q(1520),
+ q(1526),
q(0),
],
q(bvj) => [
- q(1521),
+ q(1527),
q(0),
],
q(bvk) => [
- q(1522),
+ q(1528),
q(0),
],
q(bvl) => [
- q(1523),
+ q(1529),
q(0),
],
q(bvm) => [
- q(1524),
+ q(1530),
q(0),
],
q(bvn) => [
- q(1525),
+ q(1531),
q(0),
],
q(bvo) => [
- q(1526),
+ q(1532),
q(0),
],
q(bvq) => [
- q(1527),
+ q(1533),
q(0),
],
q(bvr) => [
- q(1528),
+ q(1534),
q(0),
],
q(bvt) => [
- q(1529),
+ q(1535),
q(0),
],
q(bvu) => [
- q(1530),
+ q(1536),
q(0),
],
q(bvv) => [
- q(1531),
+ q(1537),
q(0),
],
q(bvw) => [
- q(1532),
+ q(1538),
q(0),
],
q(bvx) => [
- q(1533),
+ q(1539),
q(0),
],
q(bvy) => [
- q(1534),
+ q(1540),
q(0),
],
q(bvz) => [
- q(1535),
+ q(1541),
q(0),
],
q(bwa) => [
- q(1536),
+ q(1542),
q(0),
],
q(bwb) => [
- q(1537),
+ q(1543),
q(0),
],
q(bwc) => [
- q(1538),
+ q(1544),
q(0),
],
q(bwd) => [
- q(1539),
+ q(1545),
q(0),
],
q(bwe) => [
- q(1540),
+ q(1546),
q(0),
],
q(bwf) => [
- q(1541),
+ q(1547),
q(0),
],
q(bwg) => [
- q(1542),
+ q(1548),
q(0),
],
q(bwh) => [
- q(1543),
+ q(1549),
q(0),
],
q(bwi) => [
- q(1544),
+ q(1550),
q(0),
],
q(bwj) => [
- q(1545),
+ q(1551),
q(0),
],
q(bwk) => [
- q(1546),
+ q(1552),
q(0),
],
q(bwl) => [
- q(1547),
+ q(1553),
q(0),
],
q(bwm) => [
- q(1548),
+ q(1554),
q(0),
],
q(bwn) => [
- q(1549),
+ q(1555),
q(0),
],
q(bwo) => [
- q(1550),
+ q(1556),
q(0),
],
q(bwp) => [
- q(1551),
+ q(1557),
q(0),
],
q(bwq) => [
- q(1552),
+ q(1558),
q(0),
],
q(bwr) => [
- q(1553),
+ q(1559),
q(0),
],
q(bws) => [
- q(1554),
+ q(1560),
q(0),
],
q(bwt) => [
- q(1555),
+ q(1561),
q(0),
],
q(bwu) => [
- q(1556),
+ q(1562),
q(0),
],
q(bww) => [
- q(1557),
+ q(1563),
q(0),
],
q(bwx) => [
- q(1558),
+ q(1564),
q(0),
],
q(bwy) => [
- q(1559),
+ q(1565),
q(0),
],
q(bwz) => [
- q(1560),
+ q(1566),
q(0),
],
q(bxa) => [
- q(1561),
+ q(1567),
q(0),
],
q(bxb) => [
- q(1562),
+ q(1568),
q(0),
],
q(bxc) => [
- q(1563),
+ q(1569),
q(0),
],
q(bxd) => [
- q(1564),
+ q(1570),
q(0),
],
q(bxe) => [
- q(1565),
+ q(1571),
q(0),
],
q(bxf) => [
- q(1566),
+ q(1572),
q(0),
],
q(bxg) => [
- q(1567),
+ q(1573),
q(0),
],
q(bxh) => [
- q(1568),
+ q(1574),
q(0),
],
q(bxi) => [
- q(1569),
+ q(1575),
q(0),
],
q(bxj) => [
- q(1570),
+ q(1576),
q(0),
],
q(bxk) => [
- q(1571),
+ q(1577),
q(0),
],
q(bxl) => [
- q(1572),
+ q(1578),
q(0),
],
q(bxm) => [
- q(1573),
+ q(1579),
q(0),
],
q(bxn) => [
- q(1574),
+ q(1580),
q(0),
],
q(bxo) => [
- q(1575),
+ q(1581),
q(0),
],
q(bxp) => [
- q(1576),
+ q(1582),
q(0),
],
q(bxq) => [
- q(1577),
+ q(1583),
q(0),
],
q(bxr) => [
- q(1578),
+ q(1584),
q(0),
],
q(bxs) => [
- q(1579),
+ q(1585),
q(0),
],
q(bxu) => [
- q(1580),
+ q(1586),
q(0),
],
q(bxv) => [
- q(1581),
+ q(1587),
q(0),
],
q(bxw) => [
- q(1582),
+ q(1588),
q(0),
],
q(bxx) => [
- q(1583),
+ q(1589),
q(0),
],
q(bxz) => [
- q(1584),
+ q(1590),
q(0),
],
q(bya) => [
- q(1585),
+ q(1591),
q(0),
],
q(byb) => [
- q(1586),
+ q(1592),
q(0),
],
q(byc) => [
- q(1587),
+ q(1593),
q(0),
],
q(byd) => [
- q(1588),
+ q(1594),
q(0),
],
q(bye) => [
- q(1589),
+ q(1595),
q(0),
],
q(byf) => [
- q(1590),
+ q(1596),
q(0),
],
q(byg) => [
- q(1591),
+ q(1597),
q(0),
],
q(byh) => [
- q(1592),
+ q(1598),
q(0),
],
q(byi) => [
- q(1593),
+ q(1599),
q(0),
],
q(byj) => [
- q(1594),
+ q(1600),
q(0),
],
q(byk) => [
- q(1595),
+ q(1601),
q(0),
],
q(byl) => [
- q(1596),
+ q(1602),
q(0),
],
q(bym) => [
- q(1597),
+ q(1603),
q(0),
],
q(byn) => [
@@ -61403,163 +62000,163 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(byo) => [
- q(1598),
+ q(1604),
q(0),
],
q(byp) => [
- q(1599),
+ q(1605),
q(0),
],
q(byq) => [
- q(1600),
+ q(1606),
q(0),
],
q(byr) => [
- q(1601),
+ q(1607),
q(0),
],
q(bys) => [
- q(1602),
+ q(1608),
q(0),
],
q(byt) => [
- q(1603),
+ q(1609),
q(0),
],
q(byv) => [
- q(1604),
+ q(1610),
q(0),
],
q(byw) => [
- q(1605),
+ q(1611),
q(0),
],
q(byx) => [
- q(1606),
+ q(1612),
q(0),
],
q(byy) => [
- q(1607),
+ q(1613),
q(0),
],
q(byz) => [
- q(1608),
+ q(1614),
q(0),
],
q(bza) => [
- q(1609),
+ q(1615),
q(0),
],
q(bzb) => [
- q(1610),
+ q(1616),
q(0),
],
q(bzc) => [
- q(1611),
+ q(1617),
q(0),
],
q(bzd) => [
- q(1612),
+ q(1618),
q(0),
],
q(bze) => [
- q(1613),
+ q(1619),
q(0),
],
q(bzf) => [
- q(1614),
+ q(1620),
q(0),
],
q(bzg) => [
- q(1615),
+ q(1621),
q(0),
],
q(bzh) => [
- q(1616),
+ q(1622),
q(0),
],
q(bzi) => [
- q(1617),
+ q(1623),
q(0),
],
q(bzj) => [
- q(1618),
+ q(1624),
q(0),
],
q(bzk) => [
- q(1619),
+ q(1625),
q(0),
],
q(bzl) => [
- q(1620),
+ q(1626),
q(0),
],
q(bzm) => [
- q(1621),
+ q(1627),
q(0),
],
q(bzn) => [
- q(1622),
+ q(1628),
q(0),
],
q(bzo) => [
- q(1623),
+ q(1629),
q(0),
],
q(bzp) => [
- q(1624),
+ q(1630),
q(0),
],
q(bzq) => [
- q(1625),
+ q(1631),
q(0),
],
q(bzr) => [
- q(1626),
+ q(1632),
q(0),
],
q(bzs) => [
- q(1627),
+ q(1633),
q(0),
],
q(bzt) => [
- q(1628),
+ q(1634),
q(0),
],
q(bzu) => [
- q(1629),
+ q(1635),
q(0),
],
q(bzv) => [
- q(1630),
+ q(1636),
q(0),
],
q(bzw) => [
- q(1631),
+ q(1637),
q(0),
],
q(bzx) => [
- q(1632),
+ q(1638),
q(0),
],
q(bzy) => [
- q(1633),
+ q(1639),
q(0),
],
q(bzz) => [
- q(1634),
+ q(1640),
q(0),
],
q(caa) => [
- q(1635),
+ q(1641),
q(0),
],
q(cab) => [
- q(1636),
+ q(1642),
q(0),
],
q(cac) => [
- q(1637),
+ q(1643),
q(0),
],
q(cad) => [
@@ -61567,19 +62164,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(cae) => [
- q(1638),
+ q(1644),
q(0),
],
q(caf) => [
- q(1639),
+ q(1645),
q(0),
],
q(cag) => [
- q(1640),
+ q(1646),
q(0),
],
q(cah) => [
- q(1641),
+ q(1647),
q(0),
],
q(cai) => [
@@ -61587,35 +62184,35 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(caj) => [
- q(1642),
+ q(1648),
q(0),
],
q(cak) => [
- q(1643),
+ q(1649),
q(0),
],
q(cal) => [
- q(1644),
+ q(1650),
q(0),
],
q(cam) => [
- q(1645),
+ q(1651),
q(0),
],
q(can) => [
- q(1646),
+ q(1652),
q(0),
],
q(cao) => [
- q(1647),
+ q(1653),
q(0),
],
q(cap) => [
- q(1648),
+ q(1654),
q(0),
],
q(caq) => [
- q(1649),
+ q(1655),
q(0),
],
q(car) => [
@@ -61623,7 +62220,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(cas) => [
- q(1650),
+ q(1656),
q(0),
],
q(cat) => [
@@ -61635,231 +62232,227 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(cav) => [
- q(1651),
+ q(1657),
q(0),
],
q(caw) => [
- q(1652),
+ q(1658),
q(0),
],
q(cax) => [
- q(1653),
+ q(1659),
q(0),
],
q(cay) => [
- q(1654),
+ q(1660),
q(0),
],
q(caz) => [
- q(1655),
+ q(1661),
q(0),
],
q(cba) => [
- q(0493),
+ q(0494),
q(0),
],
q(cbb) => [
- q(1656),
+ q(1662),
q(0),
],
q(cbc) => [
- q(1657),
+ q(1663),
q(0),
],
q(cbd) => [
- q(1658),
+ q(1664),
q(0),
],
q(cbe) => [
- q(1659),
+ q(1665),
q(0),
],
q(cbg) => [
- q(1660),
+ q(1666),
q(0),
],
q(cbh) => [
- q(1661),
+ q(1667),
q(0),
],
q(cbi) => [
- q(1662),
+ q(1668),
q(0),
],
q(cbj) => [
- q(1663),
+ q(1669),
q(0),
],
q(cbk) => [
- q(1664),
+ q(1670),
q(0),
],
q(cbl) => [
- q(1665),
+ q(1671),
q(0),
],
q(cbn) => [
- q(1666),
+ q(1672),
q(0),
],
q(cbo) => [
- q(1667),
+ q(1673),
q(0),
],
q(cbr) => [
- q(1668),
+ q(1674),
q(0),
],
q(cbs) => [
- q(1669),
+ q(1675),
q(0),
],
q(cbt) => [
- q(1670),
+ q(1676),
q(0),
],
q(cbu) => [
- q(1671),
+ q(1677),
q(0),
],
q(cbv) => [
- q(1672),
+ q(1678),
q(0),
],
q(cbw) => [
- q(1673),
+ q(1679),
q(0),
],
q(cby) => [
- q(1674),
+ q(1680),
q(0),
],
q(cca) => [
- q(1675),
+ q(1681),
q(0),
],
q(ccc) => [
- q(1676),
+ q(1682),
q(0),
],
q(ccd) => [
- q(1677),
+ q(1683),
q(0),
],
q(cce) => [
- q(1678),
+ q(1684),
q(0),
],
q(ccg) => [
- q(1679),
+ q(1685),
q(0),
],
q(cch) => [
- q(1680),
+ q(1686),
q(0),
],
q(ccj) => [
- q(1681),
+ q(1687),
q(0),
],
q(ccl) => [
- q(1682),
+ q(1688),
q(0),
],
q(ccm) => [
- q(1683),
+ q(1689),
q(0),
],
q(ccn) => [
- q(0494),
+ q(0495),
q(0),
],
q(cco) => [
- q(1684),
+ q(1690),
q(0),
],
q(ccp) => [
- q(1685),
- q(0),
- ],
- q(ccq) => [
- q(1686),
+ q(1691),
q(0),
],
q(ccr) => [
- q(1687),
+ q(1692),
q(0),
],
q(ccs) => [
- q(0495),
+ q(0496),
q(0),
],
q(cda) => [
- q(1688),
+ q(1693),
q(0),
],
q(cdc) => [
- q(0496),
+ q(0497),
q(0),
],
q(cdd) => [
- q(0497),
+ q(0498),
q(0),
],
q(cde) => [
- q(1689),
+ q(1694),
q(0),
],
q(cdf) => [
- q(1690),
+ q(1695),
q(0),
],
q(cdg) => [
- q(1691),
+ q(1696),
q(0),
],
q(cdh) => [
- q(1692),
+ q(1697),
q(0),
],
q(cdi) => [
- q(1693),
+ q(1698),
q(0),
],
q(cdj) => [
- q(1694),
+ q(1699),
q(0),
],
q(cdm) => [
- q(1695),
+ q(1700),
q(0),
],
q(cdn) => [
- q(1696),
+ q(1701),
q(0),
],
q(cdo) => [
- q(1697),
+ q(1702),
q(0),
],
q(cdr) => [
- q(1698),
+ q(1703),
q(0),
],
q(cds) => [
- q(1699),
+ q(1704),
q(0),
],
q(cdy) => [
- q(1700),
+ q(1705),
q(0),
],
q(cdz) => [
- q(1701),
+ q(1706),
q(0),
],
q(cea) => [
- q(1702),
+ q(1707),
q(0),
],
q(ceb) => [
@@ -61867,7 +62460,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ceg) => [
- q(1703),
+ q(1708),
+ q(0),
+ ],
+ q(cek) => [
+ q(1709),
q(0),
],
q(cel) => [
@@ -61875,43 +62472,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(cen) => [
- q(1704),
+ q(1710),
q(0),
],
q(cet) => [
- q(1705),
+ q(1711),
q(0),
],
q(cfa) => [
- q(1706),
+ q(1712),
q(0),
],
q(cfd) => [
- q(1707),
+ q(1713),
q(0),
],
q(cfg) => [
- q(1708),
+ q(1714),
q(0),
],
q(cfm) => [
- q(1709),
+ q(1715),
q(0),
],
q(cga) => [
- q(1710),
+ q(1716),
q(0),
],
q(cgc) => [
- q(1711),
+ q(1717),
q(0),
],
q(cgg) => [
- q(1712),
+ q(1718),
q(0),
],
q(cgk) => [
- q(1713),
+ q(1719),
q(0),
],
q(cha) => [
@@ -61923,11 +62520,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(chc) => [
- q(1714),
+ q(1720),
q(0),
],
q(chd) => [
- q(1715),
+ q(1721),
q(0),
],
q(che) => [
@@ -61935,7 +62532,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(chf) => [
- q(1716),
+ q(1722),
q(0),
],
q(chg) => [
@@ -61943,7 +62540,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(chh) => [
- q(1717),
+ q(1723),
q(0),
],
q(chi) => [
@@ -61951,7 +62548,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(chj) => [
- q(1718),
+ q(1724),
q(0),
],
q(chk) => [
@@ -61959,7 +62556,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(chl) => [
- q(1719),
+ q(1725),
q(0),
],
q(chm) => [
@@ -61979,7 +62576,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(chq) => [
- q(1720),
+ q(1726),
q(0),
],
q(chr) => [
@@ -61987,7 +62584,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(cht) => [
- q(1721),
+ q(1727),
q(0),
],
q(chu) => [
@@ -61999,11 +62596,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(chw) => [
- q(1722),
+ q(1728),
q(0),
],
q(chx) => [
- q(1723),
+ q(1729),
q(0),
],
q(chy) => [
@@ -62011,219 +62608,223 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(chz) => [
- q(1724),
+ q(1730),
q(0),
],
q(cia) => [
- q(1725),
+ q(1731),
q(0),
],
q(cib) => [
- q(1726),
+ q(1732),
q(0),
],
q(cic) => [
- q(1727),
+ q(1733),
q(0),
],
q(cid) => [
- q(1728),
+ q(1734),
q(0),
],
q(cie) => [
- q(1729),
+ q(1735),
q(0),
],
q(cih) => [
- q(1730),
+ q(1736),
q(0),
],
q(cik) => [
- q(1731),
+ q(1737),
q(0),
],
q(cim) => [
- q(1732),
+ q(1738),
q(0),
],
q(cin) => [
- q(1733),
+ q(1739),
q(0),
],
q(cip) => [
- q(1734),
+ q(1740),
q(0),
],
q(cir) => [
- q(1735),
+ q(1741),
q(0),
],
q(ciw) => [
- q(1736),
+ q(1742),
q(0),
],
q(ciy) => [
- q(1737),
+ q(1743),
q(0),
],
q(cja) => [
- q(1738),
+ q(1744),
q(0),
],
q(cje) => [
- q(1739),
+ q(1745),
q(0),
],
q(cjh) => [
- q(1740),
+ q(1746),
q(0),
],
q(cji) => [
- q(1741),
+ q(1747),
q(0),
],
q(cjk) => [
- q(1742),
+ q(1748),
q(0),
],
q(cjm) => [
- q(1743),
+ q(1749),
q(0),
],
q(cjn) => [
- q(1744),
+ q(1750),
q(0),
],
q(cjo) => [
- q(1745),
+ q(1751),
q(0),
],
q(cjp) => [
- q(1746),
+ q(1752),
q(0),
],
q(cjs) => [
- q(1747),
+ q(1753),
q(0),
],
q(cjv) => [
- q(1748),
+ q(1754),
q(0),
],
q(cjy) => [
- q(1749),
- q(0),
- ],
- q(cka) => [
- q(1750),
+ q(1755),
q(0),
],
q(ckb) => [
- q(1751),
+ q(1756),
q(0),
],
q(ckh) => [
- q(1752),
+ q(1757),
q(0),
],
q(ckl) => [
- q(1753),
+ q(1758),
q(0),
],
q(cko) => [
- q(1754),
+ q(1759),
q(0),
],
q(ckq) => [
- q(1755),
+ q(1760),
q(0),
],
q(ckr) => [
- q(1756),
+ q(1761),
q(0),
],
q(cks) => [
- q(1757),
+ q(1762),
q(0),
],
q(ckt) => [
- q(1758),
+ q(1763),
q(0),
],
q(cku) => [
- q(1759),
+ q(1764),
q(0),
],
q(ckv) => [
- q(1760),
+ q(1765),
q(0),
],
q(ckx) => [
- q(1761),
+ q(1766),
q(0),
],
q(cky) => [
- q(1762),
+ q(1767),
q(0),
],
q(ckz) => [
- q(1763),
+ q(1768),
q(0),
],
q(cla) => [
- q(1764),
+ q(1769),
q(0),
],
q(clc) => [
- q(1765),
+ q(1770),
q(0),
],
q(cld) => [
- q(1766),
+ q(1771),
q(0),
],
q(cle) => [
- q(1767),
+ q(1772),
q(0),
],
q(clh) => [
- q(1768),
+ q(1773),
q(0),
],
q(cli) => [
- q(1769),
+ q(1774),
+ q(0),
+ ],
+ q(clj) => [
+ q(1775),
q(0),
],
q(clk) => [
- q(1770),
+ q(1776),
q(0),
],
q(cll) => [
- q(1771),
+ q(1777),
q(0),
],
q(clm) => [
- q(1772),
+ q(1778),
q(0),
],
q(clo) => [
- q(1773),
+ q(1779),
+ q(0),
+ ],
+ q(clt) => [
+ q(1780),
q(0),
],
q(clu) => [
- q(1774),
+ q(1781),
q(0),
],
q(clw) => [
- q(1775),
+ q(1782),
q(0),
],
q(cly) => [
- q(1776),
+ q(1783),
q(0),
],
q(cma) => [
- q(1777),
+ q(1784),
q(0),
],
q(cmc) => [
@@ -62231,155 +62832,155 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(cme) => [
- q(1778),
+ q(1785),
q(0),
],
q(cmg) => [
- q(1779),
+ q(1786),
q(0),
],
q(cmi) => [
- q(1780),
+ q(1787),
q(0),
],
q(cml) => [
- q(1781),
+ q(1788),
q(0),
],
q(cmm) => [
- q(1782),
+ q(1789),
q(0),
],
q(cmn) => [
- q(1783),
+ q(1790),
q(0),
],
q(cmo) => [
- q(1784),
+ q(1791),
q(0),
],
q(cmr) => [
- q(1785),
+ q(1792),
q(0),
],
q(cms) => [
- q(1786),
+ q(1793),
q(0),
],
q(cmt) => [
- q(1787),
+ q(1794),
q(0),
],
q(cna) => [
- q(1788),
+ q(1795),
q(0),
],
q(cnb) => [
- q(1789),
+ q(1796),
q(0),
],
q(cnc) => [
- q(1790),
+ q(1797),
q(0),
],
q(cng) => [
- q(1791),
+ q(1798),
q(0),
],
q(cnh) => [
- q(1792),
+ q(1799),
q(0),
],
q(cni) => [
- q(1793),
+ q(1800),
q(0),
],
q(cnk) => [
- q(1794),
+ q(1801),
q(0),
],
q(cnl) => [
- q(1795),
+ q(1802),
q(0),
],
q(cno) => [
- q(1796),
+ q(1803),
q(0),
],
q(cns) => [
- q(1797),
+ q(1804),
q(0),
],
q(cnt) => [
- q(1798),
+ q(1805),
q(0),
],
q(cnu) => [
- q(1799),
+ q(1806),
q(0),
],
q(cnw) => [
- q(1800),
+ q(1807),
q(0),
],
q(cnx) => [
- q(1801),
+ q(1808),
q(0),
],
q(coa) => [
- q(1802),
+ q(1809),
q(0),
],
q(cob) => [
- q(1803),
+ q(1810),
q(0),
],
q(coc) => [
- q(1804),
+ q(1811),
q(0),
],
q(cod) => [
- q(1805),
+ q(1812),
q(0),
],
q(coe) => [
- q(1806),
+ q(1813),
q(0),
],
q(cof) => [
- q(1807),
+ q(1814),
q(0),
],
q(cog) => [
- q(1808),
+ q(1815),
q(0),
],
q(coh) => [
- q(1809),
+ q(1816),
q(0),
],
q(coj) => [
- q(1810),
+ q(1817),
q(0),
],
q(cok) => [
- q(1811),
+ q(1818),
q(0),
],
q(col) => [
- q(1812),
+ q(1819),
q(0),
],
q(com) => [
- q(1813),
+ q(1820),
q(0),
],
q(con) => [
- q(1814),
+ q(1821),
q(0),
],
q(coo) => [
- q(1815),
+ q(1822),
q(0),
],
q(cop) => [
@@ -62387,7 +62988,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(coq) => [
- q(1816),
+ q(1823),
q(0),
],
q(cor) => [
@@ -62399,43 +63000,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(cot) => [
- q(1817),
+ q(1824),
q(0),
],
q(cou) => [
- q(1818),
+ q(1825),
q(0),
],
q(cov) => [
- q(1819),
+ q(1826),
q(0),
],
q(cow) => [
- q(1820),
+ q(1827),
q(0),
],
q(cox) => [
- q(1821),
+ q(1828),
q(0),
],
q(coy) => [
- q(1822),
+ q(1829),
q(0),
],
q(coz) => [
- q(1823),
+ q(1830),
q(0),
],
q(cpa) => [
- q(1824),
+ q(1831),
q(0),
],
q(cpb) => [
- q(1825),
+ q(1832),
q(0),
],
q(cpc) => [
- q(1826),
+ q(1833),
q(0),
],
q(cpe) => [
@@ -62447,15 +63048,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(2),
],
q(cpg) => [
- q(1827),
+ q(1834),
q(0),
],
q(cpi) => [
- q(1828),
+ q(1835),
q(0),
],
q(cpn) => [
- q(1829),
+ q(1836),
q(0),
],
q(cpp) => [
@@ -62463,43 +63064,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(2),
],
q(cps) => [
- q(1830),
+ q(1837),
q(0),
],
q(cpu) => [
- q(1831),
+ q(1838),
q(0),
],
q(cpx) => [
- q(1832),
+ q(1839),
q(0),
],
q(cpy) => [
- q(1833),
+ q(1840),
q(0),
],
q(cqd) => [
- q(1834),
+ q(1841),
q(0),
],
q(cqu) => [
- q(1835),
+ q(1842),
q(0),
],
q(cra) => [
- q(1836),
+ q(1843),
q(0),
],
q(crb) => [
- q(1837),
+ q(1844),
q(0),
],
q(crc) => [
- q(1838),
+ q(1845),
q(0),
],
q(crd) => [
- q(1839),
+ q(1846),
q(0),
],
q(cre) => [
@@ -62507,11 +63108,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(crf) => [
- q(1840),
+ q(1847),
q(0),
],
q(crg) => [
- q(1841),
+ q(1848),
q(0),
],
q(crh) => [
@@ -62519,31 +63120,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(cri) => [
- q(1842),
+ q(1849),
q(0),
],
q(crj) => [
- q(1843),
+ q(1850),
q(0),
],
q(crk) => [
- q(1844),
+ q(1851),
q(0),
],
q(crl) => [
- q(1845),
+ q(1852),
q(0),
],
q(crm) => [
- q(1846),
+ q(1853),
q(0),
],
q(crn) => [
- q(1847),
+ q(1854),
q(0),
],
q(cro) => [
- q(1848),
+ q(1855),
q(0),
],
q(crp) => [
@@ -62551,43 +63152,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(crq) => [
- q(1849),
+ q(1856),
q(0),
],
q(crr) => [
- q(1850),
+ q(1857),
q(0),
],
q(crs) => [
- q(1851),
+ q(1858),
q(0),
],
q(crt) => [
- q(1852),
+ q(1859),
q(0),
],
q(crv) => [
- q(1853),
+ q(1860),
q(0),
],
q(crw) => [
- q(1854),
+ q(1861),
q(0),
],
q(crx) => [
- q(1855),
+ q(1862),
q(0),
],
q(cry) => [
- q(1856),
+ q(1863),
q(0),
],
q(crz) => [
- q(1857),
+ q(1864),
q(0),
],
q(csa) => [
- q(1858),
+ q(1865),
q(0),
],
q(csb) => [
@@ -62595,195 +63196,203 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(csc) => [
- q(1859),
+ q(1866),
q(0),
],
q(csd) => [
- q(1860),
+ q(1867),
q(0),
],
q(cse) => [
- q(1861),
+ q(1868),
q(0),
],
q(csf) => [
- q(1862),
+ q(1869),
q(0),
],
q(csg) => [
- q(1863),
+ q(1870),
q(0),
],
q(csh) => [
- q(1864),
+ q(1871),
q(0),
],
q(csi) => [
- q(1865),
+ q(1872),
q(0),
],
q(csk) => [
- q(1866),
+ q(1873),
q(0),
],
q(csl) => [
- q(1867),
+ q(1874),
q(0),
],
q(csm) => [
- q(1868),
+ q(1875),
q(0),
],
q(csn) => [
- q(1869),
+ q(1876),
q(0),
],
q(cso) => [
- q(1870),
+ q(1877),
q(0),
],
q(csq) => [
- q(1871),
+ q(1878),
q(0),
],
q(csr) => [
- q(1872),
+ q(1879),
q(0),
],
q(css) => [
- q(1873),
+ q(1880),
q(0),
],
q(cst) => [
- q(1874),
+ q(1881),
q(0),
],
q(csu) => [
- q(0498),
+ q(0499),
+ q(0),
+ ],
+ q(csv) => [
+ q(1882),
q(0),
],
q(csw) => [
- q(1875),
+ q(1883),
q(0),
],
q(csy) => [
- q(1876),
+ q(1884),
q(0),
],
q(csz) => [
- q(1877),
+ q(1885),
q(0),
],
q(cta) => [
- q(1878),
+ q(1886),
q(0),
],
q(ctc) => [
- q(1879),
+ q(1887),
q(0),
],
q(ctd) => [
- q(1880),
+ q(1888),
q(0),
],
q(cte) => [
- q(1881),
+ q(1889),
q(0),
],
q(ctg) => [
- q(1882),
+ q(1890),
+ q(0),
+ ],
+ q(cth) => [
+ q(1891),
q(0),
],
q(ctl) => [
- q(1883),
+ q(1892),
q(0),
],
q(ctm) => [
- q(1884),
+ q(1893),
q(0),
],
q(ctn) => [
- q(1885),
+ q(1894),
q(0),
],
q(cto) => [
- q(1886),
+ q(1895),
q(0),
],
q(ctp) => [
- q(1887),
+ q(1896),
q(0),
],
q(cts) => [
- q(1888),
+ q(1897),
q(0),
],
q(ctt) => [
- q(1889),
+ q(1898),
q(0),
],
q(ctu) => [
- q(1890),
+ q(1899),
q(0),
],
q(ctz) => [
- q(1891),
+ q(1900),
q(0),
],
q(cua) => [
- q(1892),
+ q(1901),
q(0),
],
q(cub) => [
- q(1893),
+ q(1902),
q(0),
],
q(cuc) => [
- q(1894),
+ q(1903),
q(0),
],
q(cug) => [
- q(1895),
+ q(1904),
q(0),
],
q(cuh) => [
- q(1896),
+ q(1905),
q(0),
],
q(cui) => [
- q(1897),
+ q(1906),
q(0),
],
q(cuj) => [
- q(1898),
+ q(1907),
q(0),
],
q(cuk) => [
- q(1899),
+ q(1908),
q(0),
],
q(cul) => [
- q(1900),
+ q(1909),
q(0),
],
q(cum) => [
- q(1901),
+ q(1910),
q(0),
],
q(cuo) => [
- q(1902),
+ q(1911),
q(0),
],
q(cup) => [
- q(1903),
+ q(1912),
q(0),
],
q(cuq) => [
- q(1904),
+ q(1913),
q(0),
],
q(cur) => [
- q(1905),
+ q(1914),
q(0),
],
q(cus) => [
@@ -62791,67 +63400,67 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(cut) => [
- q(1906),
+ q(1915),
q(0),
],
q(cuu) => [
- q(1907),
+ q(1916),
q(0),
],
q(cuv) => [
- q(1908),
+ q(1917),
q(0),
],
q(cuw) => [
- q(1909),
+ q(1918),
q(0),
],
q(cux) => [
- q(1910),
+ q(1919),
q(0),
],
q(cvg) => [
- q(1911),
+ q(1920),
q(0),
],
q(cvn) => [
- q(1912),
+ q(1921),
q(0),
],
q(cwa) => [
- q(1913),
+ q(1922),
q(0),
],
q(cwb) => [
- q(1914),
+ q(1923),
q(0),
],
q(cwd) => [
- q(1915),
+ q(1924),
q(0),
],
q(cwe) => [
- q(1916),
+ q(1925),
q(0),
],
q(cwg) => [
- q(1917),
+ q(1926),
q(0),
],
q(cwt) => [
- q(1918),
+ q(1927),
q(0),
],
q(cya) => [
- q(1919),
+ q(1928),
q(0),
],
q(cyb) => [
- q(1920),
+ q(1929),
q(0),
],
q(cyo) => [
- q(1921),
+ q(1930),
q(0),
],
q(cze) => [
@@ -62859,59 +63468,59 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(czh) => [
- q(1922),
+ q(1931),
q(0),
],
q(czk) => [
- q(1923),
+ q(1932),
q(0),
],
q(czn) => [
- q(1924),
+ q(1933),
q(0),
],
q(czo) => [
- q(1925),
+ q(1934),
q(0),
],
q(czt) => [
- q(1926),
+ q(1935),
q(0),
],
q(daa) => [
- q(1927),
+ q(1936),
q(0),
],
q(dac) => [
- q(1928),
+ q(1937),
q(0),
],
q(dad) => [
- q(1929),
+ q(1938),
q(0),
],
q(dae) => [
- q(1930),
+ q(1939),
q(0),
],
q(daf) => [
- q(1931),
+ q(1940),
q(0),
],
q(dag) => [
- q(1932),
+ q(1941),
q(0),
],
q(dah) => [
- q(1933),
+ q(1942),
q(0),
],
q(dai) => [
- q(1934),
+ q(1943),
q(0),
],
q(daj) => [
- q(1935),
+ q(1944),
q(0),
],
q(dak) => [
@@ -62919,11 +63528,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(dal) => [
- q(1936),
+ q(1945),
q(0),
],
q(dam) => [
- q(1937),
+ q(1946),
q(0),
],
q(dan) => [
@@ -62931,15 +63540,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(dao) => [
- q(1938),
- q(0),
- ],
- q(dap) => [
- q(1939),
+ q(1947),
q(0),
],
q(daq) => [
- q(1940),
+ q(1948),
q(0),
],
q(dar) => [
@@ -62947,23 +63552,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(das) => [
- q(1941),
+ q(1949),
q(0),
],
q(dau) => [
- q(1942),
+ q(1950),
q(0),
],
q(dav) => [
- q(1943),
+ q(1951),
q(0),
],
q(daw) => [
- q(1944),
+ q(1952),
q(0),
],
q(dax) => [
- q(1945),
+ q(1953),
q(0),
],
q(day) => [
@@ -62971,155 +63576,171 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(daz) => [
- q(1946),
+ q(1954),
q(0),
],
q(dba) => [
- q(1947),
+ q(1955),
q(0),
],
q(dbb) => [
- q(1948),
+ q(1956),
q(0),
],
q(dbd) => [
- q(1949),
+ q(1957),
q(0),
],
q(dbe) => [
- q(1950),
+ q(1958),
q(0),
],
q(dbf) => [
- q(1951),
+ q(1959),
q(0),
],
q(dbg) => [
- q(1952),
+ q(1960),
q(0),
],
q(dbi) => [
- q(1953),
+ q(1961),
q(0),
],
q(dbj) => [
- q(1954),
+ q(1962),
q(0),
],
q(dbl) => [
- q(1955),
+ q(1963),
q(0),
],
q(dbm) => [
- q(1956),
+ q(1964),
q(0),
],
q(dbn) => [
- q(1957),
+ q(1965),
q(0),
],
q(dbo) => [
- q(1958),
+ q(1966),
q(0),
],
q(dbp) => [
- q(1959),
+ q(1967),
q(0),
],
q(dbq) => [
- q(1960),
+ q(1968),
q(0),
],
q(dbr) => [
- q(1961),
+ q(1969),
+ q(0),
+ ],
+ q(dbt) => [
+ q(1970),
q(0),
],
q(dbu) => [
- q(1962),
+ q(1971),
q(0),
],
q(dbv) => [
- q(1963),
+ q(1972),
+ q(0),
+ ],
+ q(dbw) => [
+ q(1973),
q(0),
],
q(dby) => [
- q(1964),
+ q(1974),
q(0),
],
q(dcc) => [
- q(1965),
+ q(1975),
q(0),
],
q(dcr) => [
- q(1966),
+ q(1976),
+ q(0),
+ ],
+ q(dda) => [
+ q(1977),
q(0),
],
q(ddd) => [
- q(1967),
+ q(1978),
q(0),
],
q(dde) => [
- q(1968),
+ q(1979),
q(0),
],
q(ddg) => [
- q(1969),
+ q(1980),
q(0),
],
q(ddi) => [
- q(1970),
+ q(1981),
q(0),
],
q(ddj) => [
- q(1971),
+ q(1982),
q(0),
],
q(ddn) => [
- q(1972),
+ q(1983),
q(0),
],
q(ddo) => [
- q(1973),
+ q(1984),
+ q(0),
+ ],
+ q(ddr) => [
+ q(1985),
q(0),
],
q(dds) => [
- q(1974),
+ q(1986),
q(0),
],
q(ddw) => [
- q(1975),
+ q(1987),
q(0),
],
q(dec) => [
- q(1976),
+ q(1988),
q(0),
],
q(ded) => [
- q(1977),
+ q(1989),
q(0),
],
q(dee) => [
- q(1978),
+ q(1990),
q(0),
],
q(def) => [
- q(1979),
+ q(1991),
q(0),
],
q(deg) => [
- q(1980),
+ q(1992),
q(0),
],
q(deh) => [
- q(1981),
+ q(1993),
q(0),
],
q(dei) => [
- q(1982),
+ q(1994),
q(0),
],
q(dek) => [
- q(1983),
+ q(1995),
q(0),
],
q(del) => [
@@ -63127,7 +63748,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(dem) => [
- q(1984),
+ q(1996),
q(0),
],
q(den) => [
@@ -63135,71 +63756,75 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(dep) => [
- q(1985),
+ q(1997),
q(0),
],
q(deq) => [
- q(1986),
+ q(1998),
q(0),
],
q(der) => [
- q(1987),
+ q(1999),
q(0),
],
q(des) => [
- q(1988),
+ q(2000),
q(0),
],
q(dev) => [
- q(1989),
+ q(2001),
q(0),
],
q(dez) => [
- q(1990),
+ q(2002),
q(0),
],
q(dga) => [
- q(1991),
+ q(2003),
q(0),
],
q(dgb) => [
- q(1992),
+ q(2004),
q(0),
],
q(dgc) => [
- q(1993),
+ q(2005),
q(0),
],
q(dgd) => [
- q(1994),
+ q(2006),
q(0),
],
q(dge) => [
- q(1995),
+ q(2007),
q(0),
],
q(dgg) => [
- q(1996),
+ q(2008),
q(0),
],
q(dgh) => [
- q(1997),
+ q(2009),
q(0),
],
q(dgi) => [
- q(1998),
+ q(2010),
q(0),
],
q(dgk) => [
- q(1999),
+ q(2011),
+ q(0),
+ ],
+ q(dgl) => [
+ q(2012),
q(0),
],
q(dgn) => [
- q(2000),
+ q(2013),
q(0),
],
q(dgo) => [
- q(2001),
+ q(2014),
q(0),
],
q(dgr) => [
@@ -63207,115 +63832,123 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(dgs) => [
- q(2002),
+ q(2015),
+ q(0),
+ ],
+ q(dgt) => [
+ q(2016),
q(0),
],
q(dgu) => [
- q(2003),
+ q(2017),
+ q(0),
+ ],
+ q(dgw) => [
+ q(2018),
q(0),
],
q(dgx) => [
- q(2004),
+ q(2019),
q(0),
],
q(dgz) => [
- q(2005),
+ q(2020),
q(0),
],
q(dhd) => [
- q(2006),
+ q(2021),
q(0),
],
q(dhg) => [
- q(2007),
+ q(2022),
q(0),
],
q(dhi) => [
- q(2008),
+ q(2023),
q(0),
],
q(dhl) => [
- q(2009),
+ q(2024),
q(0),
],
q(dhm) => [
- q(2010),
+ q(2025),
q(0),
],
q(dhn) => [
- q(2011),
+ q(2026),
q(0),
],
q(dho) => [
- q(2012),
+ q(2027),
q(0),
],
q(dhr) => [
- q(2013),
+ q(2028),
q(0),
],
q(dhs) => [
- q(2014),
+ q(2029),
q(0),
],
q(dhu) => [
- q(2015),
+ q(2030),
q(0),
],
q(dhv) => [
- q(2016),
+ q(2031),
q(0),
],
q(dhw) => [
- q(2017),
+ q(2032),
q(0),
],
q(dia) => [
- q(2018),
+ q(2033),
q(0),
],
q(dib) => [
- q(2019),
+ q(2034),
q(0),
],
q(dic) => [
- q(2020),
+ q(2035),
q(0),
],
q(did) => [
- q(2021),
+ q(2036),
q(0),
],
q(dif) => [
- q(2022),
+ q(2037),
q(0),
],
q(dig) => [
- q(2023),
+ q(2038),
q(0),
],
q(dih) => [
- q(2024),
+ q(2039),
q(0),
],
q(dii) => [
- q(2025),
+ q(2040),
q(0),
],
q(dij) => [
- q(2026),
+ q(2041),
q(0),
],
q(dik) => [
- q(2027),
+ q(2042),
q(0),
],
q(dil) => [
- q(2028),
+ q(2043),
q(0),
],
q(dim) => [
- q(2029),
+ q(2044),
q(0),
],
q(din) => [
@@ -63323,31 +63956,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(dio) => [
- q(2030),
+ q(2045),
q(0),
],
q(dip) => [
- q(2031),
+ q(2046),
q(0),
],
q(diq) => [
- q(2032),
+ q(2047),
q(0),
],
q(dir) => [
- q(2033),
+ q(2048),
q(0),
],
q(dis) => [
- q(2034),
+ q(2049),
q(0),
],
q(dit) => [
- q(2035),
+ q(2050),
q(0),
],
q(diu) => [
- q(2036),
+ q(2051),
q(0),
],
q(div) => [
@@ -63355,247 +63988,259 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(diw) => [
- q(2037),
+ q(2052),
q(0),
],
q(dix) => [
- q(2038),
+ q(2053),
q(0),
],
q(diy) => [
- q(2039),
+ q(2054),
q(0),
],
q(diz) => [
- q(2040),
+ q(2055),
+ q(0),
+ ],
+ q(dja) => [
+ q(2056),
q(0),
],
q(djb) => [
- q(2041),
+ q(2057),
q(0),
],
q(djc) => [
- q(2042),
+ q(2058),
q(0),
],
q(djd) => [
- q(2043),
+ q(2059),
q(0),
],
q(dje) => [
- q(2044),
+ q(2060),
q(0),
],
q(djf) => [
- q(2045),
+ q(2061),
q(0),
],
q(dji) => [
- q(2046),
+ q(2062),
q(0),
],
q(djj) => [
- q(2047),
+ q(2063),
q(0),
],
q(djk) => [
- q(2048),
+ q(2064),
q(0),
],
q(djl) => [
- q(2049),
+ q(2065),
q(0),
],
q(djm) => [
- q(2050),
+ q(2066),
q(0),
],
q(djn) => [
- q(2051),
+ q(2067),
q(0),
],
q(djo) => [
- q(2052),
+ q(2068),
q(0),
],
q(djr) => [
- q(2053),
+ q(2069),
q(0),
],
q(dju) => [
- q(2054),
+ q(2070),
q(0),
],
q(djw) => [
- q(2055),
+ q(2071),
q(0),
],
q(dka) => [
- q(2056),
+ q(2072),
q(0),
],
q(dkk) => [
- q(2057),
+ q(2073),
q(0),
],
q(dkr) => [
- q(2058),
+ q(2074),
q(0),
],
q(dks) => [
- q(2059),
+ q(2075),
q(0),
],
q(dkx) => [
- q(2060),
+ q(2076),
q(0),
],
q(dlg) => [
- q(2061),
+ q(2077),
q(0),
],
q(dlm) => [
- q(2062),
+ q(2078),
q(0),
],
q(dln) => [
- q(2063),
+ q(2079),
q(0),
],
q(dma) => [
- q(2064),
+ q(2080),
q(0),
],
q(dmb) => [
- q(2065),
+ q(2081),
q(0),
],
q(dmc) => [
- q(2066),
+ q(2082),
+ q(0),
+ ],
+ q(dmd) => [
+ q(2083),
q(0),
],
q(dme) => [
- q(2067),
+ q(2084),
q(0),
],
q(dmg) => [
- q(2068),
+ q(2085),
q(0),
],
q(dmk) => [
- q(2069),
+ q(2086),
q(0),
],
q(dml) => [
- q(2070),
+ q(2087),
q(0),
],
q(dmm) => [
- q(2071),
+ q(2088),
q(0),
],
q(dmn) => [
- q(0499),
+ q(0500),
q(0),
],
q(dmo) => [
- q(2072),
+ q(2089),
q(0),
],
q(dmr) => [
- q(2073),
+ q(2090),
q(0),
],
q(dms) => [
- q(2074),
+ q(2091),
q(0),
],
q(dmu) => [
- q(2075),
+ q(2092),
q(0),
],
q(dmv) => [
- q(2076),
+ q(2093),
q(0),
],
q(dmx) => [
- q(2077),
+ q(2094),
q(0),
],
q(dmy) => [
- q(2078),
+ q(2095),
q(0),
],
q(dna) => [
- q(2079),
+ q(2096),
q(0),
],
q(dnd) => [
- q(2080),
+ q(2097),
q(0),
],
q(dne) => [
- q(2081),
+ q(2098),
q(0),
],
q(dng) => [
- q(2082),
+ q(2099),
q(0),
],
q(dni) => [
- q(2083),
+ q(2100),
q(0),
],
q(dnk) => [
- q(2084),
+ q(2101),
q(0),
],
q(dnn) => [
- q(2085),
+ q(2102),
q(0),
],
q(dnr) => [
- q(2086),
+ q(2103),
q(0),
],
q(dnt) => [
- q(2087),
+ q(2104),
q(0),
],
q(dnu) => [
- q(2088),
+ q(2105),
+ q(0),
+ ],
+ q(dnv) => [
+ q(2106),
q(0),
],
q(dnw) => [
- q(2089),
+ q(2107),
q(0),
],
q(dny) => [
- q(2090),
+ q(2108),
q(0),
],
q(doa) => [
- q(2091),
+ q(2109),
q(0),
],
q(dob) => [
- q(2092),
+ q(2110),
q(0),
],
q(doc) => [
- q(2093),
+ q(2111),
q(0),
],
q(doe) => [
- q(2094),
+ q(2112),
q(0),
],
q(dof) => [
- q(2095),
+ q(2113),
q(0),
],
q(doh) => [
- q(2096),
+ q(2114),
q(0),
],
q(doi) => [
@@ -63603,63 +64248,63 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(dok) => [
- q(2097),
+ q(2115),
q(0),
],
q(dol) => [
- q(2098),
+ q(2116),
q(0),
],
q(don) => [
- q(2099),
+ q(2117),
q(0),
],
q(doo) => [
- q(2100),
+ q(2118),
q(0),
],
q(dop) => [
- q(2101),
+ q(2119),
q(0),
],
q(doq) => [
- q(2102),
+ q(2120),
q(0),
],
q(dor) => [
- q(2103),
+ q(2121),
q(0),
],
q(dos) => [
- q(2104),
+ q(2122),
q(0),
],
q(dot) => [
- q(2105),
+ q(2123),
q(0),
],
q(dov) => [
- q(2106),
+ q(2124),
q(0),
],
q(dow) => [
- q(2107),
+ q(2125),
q(0),
],
q(dox) => [
- q(2108),
+ q(2126),
q(0),
],
q(doy) => [
- q(2109),
+ q(2127),
q(0),
],
q(doz) => [
- q(2110),
+ q(2128),
q(0),
],
q(dpp) => [
- q(2111),
+ q(2129),
q(0),
],
q(dra) => [
@@ -63667,63 +64312,63 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(drb) => [
- q(2112),
+ q(2130),
q(0),
],
q(drc) => [
- q(2113),
+ q(2131),
q(0),
],
q(drd) => [
- q(2114),
+ q(2132),
q(0),
],
q(dre) => [
- q(2115),
+ q(2133),
q(0),
],
q(drg) => [
- q(2116),
+ q(2134),
q(0),
],
q(dri) => [
- q(2117),
+ q(2135),
q(0),
],
q(drl) => [
- q(2118),
+ q(2136),
q(0),
],
q(drn) => [
- q(2119),
+ q(2137),
q(0),
],
q(dro) => [
- q(2120),
+ q(2138),
q(0),
],
q(drq) => [
- q(2121),
+ q(2139),
q(0),
],
q(drr) => [
- q(2122),
+ q(2140),
q(0),
],
q(drs) => [
- q(2123),
+ q(2141),
q(0),
],
q(drt) => [
- q(2124),
+ q(2142),
q(0),
],
q(dru) => [
- q(2125),
+ q(2143),
q(0),
],
q(dry) => [
- q(2126),
+ q(2144),
q(0),
],
q(dsb) => [
@@ -63731,75 +64376,87 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(dse) => [
- q(2127),
+ q(2145),
q(0),
],
q(dsh) => [
- q(2128),
+ q(2146),
q(0),
],
q(dsi) => [
- q(2129),
+ q(2147),
q(0),
],
q(dsl) => [
- q(2130),
+ q(2148),
q(0),
],
q(dsn) => [
- q(2131),
+ q(2149),
q(0),
],
q(dso) => [
- q(2132),
+ q(2150),
q(0),
],
q(dsq) => [
- q(2133),
+ q(2151),
q(0),
],
q(dta) => [
- q(2134),
+ q(2152),
q(0),
],
q(dtb) => [
- q(2135),
+ q(2153),
q(0),
],
q(dtd) => [
- q(2136),
+ q(2154),
+ q(0),
+ ],
+ q(dth) => [
+ q(2155),
q(0),
],
q(dti) => [
- q(2137),
+ q(2156),
q(0),
],
q(dtk) => [
- q(2138),
+ q(2157),
q(0),
],
q(dtm) => [
- q(2139),
+ q(2158),
+ q(0),
+ ],
+ q(dto) => [
+ q(2159),
q(0),
],
q(dtp) => [
- q(2140),
+ q(2160),
q(0),
],
q(dtr) => [
- q(2141),
+ q(2161),
q(0),
],
q(dts) => [
- q(2142),
+ q(2162),
q(0),
],
q(dtt) => [
- q(2143),
+ q(2163),
q(0),
],
q(dtu) => [
- q(2144),
+ q(2164),
+ q(0),
+ ],
+ q(dty) => [
+ q(2165),
q(0),
],
q(dua) => [
@@ -63807,47 +64464,47 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(dub) => [
- q(2145),
+ q(2166),
q(0),
],
q(duc) => [
- q(2146),
+ q(2167),
q(0),
],
q(dud) => [
- q(2147),
+ q(2168),
q(0),
],
q(due) => [
- q(2148),
+ q(2169),
q(0),
],
q(duf) => [
- q(2149),
+ q(2170),
q(0),
],
q(dug) => [
- q(2150),
+ q(2171),
q(0),
],
q(duh) => [
- q(2151),
+ q(2172),
q(0),
],
q(dui) => [
- q(2152),
+ q(2173),
q(0),
],
q(duj) => [
- q(2153),
+ q(2174),
q(0),
],
q(duk) => [
- q(2154),
+ q(2175),
q(0),
],
q(dul) => [
- q(2155),
+ q(2176),
q(0),
],
q(dum) => [
@@ -63855,27 +64512,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(dun) => [
- q(2156),
+ q(2177),
q(0),
],
q(duo) => [
- q(2157),
+ q(2178),
q(0),
],
q(dup) => [
- q(2158),
+ q(2179),
q(0),
],
q(duq) => [
- q(2159),
+ q(2180),
q(0),
],
q(dur) => [
- q(2160),
+ q(2181),
q(0),
],
q(dus) => [
- q(2161),
+ q(2182),
q(0),
],
q(dut) => [
@@ -63883,83 +64540,79 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(duu) => [
- q(2162),
+ q(2183),
q(0),
],
q(duv) => [
- q(2163),
+ q(2184),
q(0),
],
q(duw) => [
- q(2164),
+ q(2185),
q(0),
],
q(dux) => [
- q(2165),
+ q(2186),
q(0),
],
q(duy) => [
- q(2166),
+ q(2187),
q(0),
],
q(duz) => [
- q(2167),
+ q(2188),
q(0),
],
q(dva) => [
- q(2168),
+ q(2189),
q(0),
],
q(dwa) => [
- q(2169),
- q(0),
- ],
- q(dwl) => [
- q(2170),
+ q(2190),
q(0),
],
q(dwr) => [
- q(2171),
+ q(2191),
q(0),
],
q(dws) => [
- q(2172),
+ q(2192),
q(0),
],
q(dww) => [
- q(2173),
+ q(2193),
q(0),
],
q(dya) => [
- q(2174),
+ q(2194),
q(0),
],
q(dyb) => [
- q(2175),
+ q(2195),
q(0),
],
q(dyd) => [
- q(2176),
+ q(2196),
q(0),
],
q(dyg) => [
- q(2177),
+ q(2197),
q(0),
],
q(dyi) => [
- q(2178),
+ q(2198),
q(0),
],
q(dym) => [
- q(2179),
+ q(2199),
q(0),
],
q(dyn) => [
- q(2180),
+ q(2200),
q(0),
],
q(dyo) => [
- q(2181),
+ q(2201),
q(0),
],
q(dyu) => [
@@ -63967,27 +64620,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(dyy) => [
- q(2182),
+ q(2202),
q(0),
],
q(dza) => [
- q(2183),
+ q(2203),
q(0),
],
q(dzd) => [
- q(2184),
+ q(2204),
q(0),
],
q(dzg) => [
- q(2185),
+ q(2205),
q(0),
],
q(dzl) => [
- q(2186),
+ q(2206),
q(0),
],
q(dzn) => [
- q(2187),
+ q(2207),
q(0),
],
q(dzo) => [
@@ -63995,47 +64648,47 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ebg) => [
- q(2188),
+ q(2208),
q(0),
],
q(ebk) => [
- q(2189),
+ q(2209),
q(0),
],
q(ebo) => [
- q(2190),
+ q(2210),
q(0),
],
q(ebr) => [
- q(2191),
+ q(2211),
q(0),
],
q(ebu) => [
- q(2192),
+ q(2212),
q(0),
],
q(ecr) => [
- q(2193),
+ q(2213),
q(0),
],
q(ecs) => [
- q(2194),
+ q(2214),
q(0),
],
q(ecy) => [
- q(2195),
+ q(2215),
q(0),
],
q(eee) => [
- q(2196),
+ q(2216),
q(0),
],
q(efa) => [
- q(2197),
+ q(2217),
q(0),
],
q(efe) => [
- q(2198),
+ q(2218),
q(0),
],
q(efi) => [
@@ -64043,19 +64696,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ega) => [
- q(2199),
+ q(2219),
q(0),
],
q(egl) => [
- q(2200),
+ q(2220),
q(0),
],
q(ego) => [
- q(2201),
+ q(2221),
q(0),
],
q(egx) => [
- q(0500),
+ q(0501),
q(0),
],
q(egy) => [
@@ -64063,23 +64716,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ehu) => [
- q(2202),
+ q(2222),
q(0),
],
q(eip) => [
- q(2203),
+ q(2223),
q(0),
],
q(eit) => [
- q(2204),
+ q(2224),
q(0),
],
q(eiv) => [
- q(2205),
+ q(2225),
q(0),
],
q(eja) => [
- q(2206),
+ q(2226),
q(0),
],
q(eka) => [
@@ -64087,75 +64740,71 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(eke) => [
- q(2207),
+ q(2227),
q(0),
],
q(ekg) => [
- q(2208),
+ q(2228),
q(0),
],
q(eki) => [
- q(2209),
+ q(2229),
q(0),
],
q(ekk) => [
- q(2210),
+ q(2230),
q(0),
],
q(ekl) => [
- q(2211),
+ q(2231),
q(0),
],
q(ekm) => [
- q(2212),
+ q(2232),
q(0),
],
q(eko) => [
- q(2213),
+ q(2233),
q(0),
],
q(ekp) => [
- q(2214),
+ q(2234),
q(0),
],
q(ekr) => [
- q(2215),
+ q(2235),
q(0),
],
q(eky) => [
- q(2216),
+ q(2236),
q(0),
],
q(ele) => [
- q(2217),
+ q(2237),
q(0),
],
q(elh) => [
- q(2218),
+ q(2238),
q(0),
],
q(eli) => [
- q(2219),
+ q(2239),
q(0),
],
q(elk) => [
- q(2220),
+ q(2240),
q(0),
],
q(elm) => [
- q(2221),
+ q(2241),
q(0),
],
q(elo) => [
- q(2222),
- q(0),
- ],
- q(elp) => [
- q(2223),
+ q(2242),
q(0),
],
q(elu) => [
- q(2224),
+ q(2243),
q(0),
],
q(elx) => [
@@ -64163,83 +64812,83 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ema) => [
- q(2225),
+ q(2244),
q(0),
],
q(emb) => [
- q(2226),
+ q(2245),
q(0),
],
q(eme) => [
- q(2227),
+ q(2246),
q(0),
],
q(emg) => [
- q(2228),
+ q(2247),
q(0),
],
q(emi) => [
- q(2229),
+ q(2248),
q(0),
],
q(emk) => [
- q(2230),
+ q(2249),
q(0),
],
q(emm) => [
- q(2231),
+ q(2250),
q(0),
],
q(emn) => [
- q(2232),
+ q(2251),
q(0),
],
q(emo) => [
- q(2233),
+ q(2252),
q(0),
],
q(emp) => [
- q(2234),
+ q(2253),
q(0),
],
q(ems) => [
- q(2235),
+ q(2254),
q(0),
],
q(emu) => [
- q(2236),
+ q(2255),
q(0),
],
q(emw) => [
- q(2237),
+ q(2256),
q(0),
],
q(emx) => [
- q(2238),
+ q(2257),
q(0),
],
q(emy) => [
- q(2239),
+ q(2258),
q(0),
],
q(ena) => [
- q(2240),
+ q(2259),
q(0),
],
q(enb) => [
- q(2241),
+ q(2260),
q(0),
],
q(enc) => [
- q(2242),
+ q(2261),
q(0),
],
q(end) => [
- q(2243),
+ q(2262),
q(0),
],
q(enf) => [
- q(2244),
+ q(2263),
q(0),
],
q(eng) => [
@@ -64247,7 +64896,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(enh) => [
- q(2245),
+ q(2264),
q(0),
],
q(enm) => [
@@ -64255,39 +64904,39 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(enn) => [
- q(2246),
+ q(2265),
q(0),
],
q(eno) => [
- q(2247),
+ q(2266),
q(0),
],
q(enq) => [
- q(2248),
+ q(2267),
q(0),
],
q(enr) => [
- q(2249),
+ q(2268),
q(0),
],
q(enu) => [
- q(2250),
+ q(2269),
q(0),
],
q(env) => [
- q(2251),
+ q(2270),
q(0),
],
q(enw) => [
- q(2252),
+ q(2271),
q(0),
],
q(eot) => [
- q(2253),
+ q(2272),
q(0),
],
q(epi) => [
- q(2254),
+ q(2273),
q(0),
],
q(epo) => [
@@ -64295,83 +64944,83 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(era) => [
- q(2255),
+ q(2274),
q(0),
],
q(erg) => [
- q(2256),
+ q(2275),
q(0),
],
q(erh) => [
- q(2257),
+ q(2276),
q(0),
],
q(eri) => [
- q(2258),
+ q(2277),
q(0),
],
q(erk) => [
- q(2259),
+ q(2278),
q(0),
],
q(ero) => [
- q(2260),
+ q(2279),
q(0),
],
q(err) => [
- q(2261),
+ q(2280),
q(0),
],
q(ers) => [
- q(2262),
+ q(2281),
q(0),
],
q(ert) => [
- q(2263),
+ q(2282),
q(0),
],
q(erw) => [
- q(2264),
+ q(2283),
q(0),
],
q(ese) => [
- q(2265),
+ q(2284),
q(0),
],
q(esh) => [
- q(2266),
+ q(2285),
q(0),
],
q(esi) => [
- q(2267),
+ q(2286),
q(0),
],
q(esk) => [
- q(2268),
+ q(2287),
q(0),
],
q(esl) => [
- q(2269),
+ q(2288),
q(0),
],
q(esm) => [
- q(2270),
+ q(2289),
q(0),
],
q(esn) => [
- q(2271),
+ q(2290),
q(0),
],
q(eso) => [
- q(2272),
+ q(2291),
q(0),
],
q(esq) => [
- q(2273),
+ q(2292),
q(0),
],
q(ess) => [
- q(2274),
+ q(2293),
q(0),
],
q(est) => [
@@ -64379,71 +65028,71 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(esu) => [
- q(2275),
+ q(2294),
q(0),
],
q(esx) => [
- q(0501),
+ q(0502),
q(0),
],
q(etb) => [
- q(2276),
+ q(2295),
q(0),
],
q(etc) => [
- q(2277),
+ q(2296),
q(0),
],
q(eth) => [
- q(2278),
+ q(2297),
q(0),
],
q(etn) => [
- q(2279),
+ q(2298),
q(0),
],
q(eto) => [
- q(2280),
+ q(2299),
q(0),
],
q(etr) => [
- q(2281),
+ q(2300),
q(0),
],
q(ets) => [
- q(2282),
+ q(2301),
q(0),
],
q(ett) => [
- q(2283),
+ q(2302),
q(0),
],
q(etu) => [
- q(2284),
+ q(2303),
q(0),
],
q(etx) => [
- q(2285),
+ q(2304),
q(0),
],
q(etz) => [
- q(2286),
+ q(2305),
q(0),
],
q(euq) => [
- q(0502),
+ q(0503),
q(0),
],
q(eve) => [
- q(2287),
+ q(2306),
q(0),
],
q(evh) => [
- q(2288),
+ q(2307),
q(0),
],
q(evn) => [
- q(2289),
+ q(2308),
q(0),
],
q(ewe) => [
@@ -64455,63 +65104,63 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ext) => [
- q(2290),
+ q(2309),
q(0),
],
q(eya) => [
- q(2291),
+ q(2310),
q(0),
],
q(eyo) => [
- q(2292),
+ q(2311),
q(0),
],
q(eze) => [
- q(2293),
+ q(2312),
q(0),
],
q(faa) => [
- q(2294),
+ q(2313),
q(0),
],
q(fab) => [
- q(2295),
+ q(2314),
q(0),
],
q(fad) => [
- q(2296),
+ q(2315),
q(0),
],
q(faf) => [
- q(2297),
+ q(2316),
q(0),
],
q(fag) => [
- q(2298),
+ q(2317),
q(0),
],
q(fah) => [
- q(2299),
+ q(2318),
q(0),
],
q(fai) => [
- q(2300),
+ q(2319),
q(0),
],
q(faj) => [
- q(2301),
+ q(2320),
q(0),
],
q(fak) => [
- q(2302),
+ q(2321),
q(0),
],
q(fal) => [
- q(2303),
+ q(2322),
q(0),
],
q(fam) => [
- q(2304),
+ q(2323),
q(0),
],
q(fan) => [
@@ -64523,11 +65172,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(fap) => [
- q(2305),
+ q(2324),
q(0),
],
q(far) => [
- q(2306),
+ q(2325),
q(0),
],
q(fat) => [
@@ -64535,51 +65184,51 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(fau) => [
- q(2307),
+ q(2326),
q(0),
],
q(fax) => [
- q(2308),
+ q(2327),
q(0),
],
q(fay) => [
- q(2309),
+ q(2328),
q(0),
],
q(faz) => [
- q(2310),
+ q(2329),
q(0),
],
q(fbl) => [
- q(2311),
+ q(2330),
q(0),
],
q(fcs) => [
- q(2312),
+ q(2331),
q(0),
],
q(fer) => [
- q(2313),
+ q(2332),
q(0),
],
q(ffi) => [
- q(2314),
+ q(2333),
q(0),
],
q(ffm) => [
- q(2315),
+ q(2334),
q(0),
],
q(fgr) => [
- q(2316),
+ q(2335),
q(0),
],
q(fia) => [
- q(2317),
+ q(2336),
q(0),
],
q(fie) => [
- q(2318),
+ q(2337),
q(0),
],
q(fij) => [
@@ -64595,15 +65244,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(fip) => [
- q(2319),
+ q(2338),
q(0),
],
q(fir) => [
- q(2320),
+ q(2339),
q(0),
],
q(fit) => [
- q(2321),
+ q(2340),
q(0),
],
q(fiu) => [
@@ -64611,67 +65260,71 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(fiw) => [
- q(2322),
+ q(2341),
+ q(0),
+ ],
+ q(fkk) => [
+ q(2342),
q(0),
],
q(fkv) => [
- q(2323),
+ q(2343),
q(0),
],
q(fla) => [
- q(2324),
+ q(2344),
q(0),
],
q(flh) => [
- q(2325),
+ q(2345),
q(0),
],
q(fli) => [
- q(2326),
+ q(2346),
q(0),
],
q(fll) => [
- q(2327),
+ q(2347),
q(0),
],
q(fln) => [
- q(2328),
+ q(2348),
q(0),
],
q(flr) => [
- q(2329),
+ q(2349),
q(0),
],
q(fly) => [
- q(2330),
+ q(2350),
q(0),
],
q(fmp) => [
- q(2331),
+ q(2351),
q(0),
],
q(fmu) => [
- q(2332),
+ q(2352),
q(0),
],
q(fng) => [
- q(2333),
+ q(2353),
q(0),
],
q(fni) => [
- q(2334),
+ q(2354),
q(0),
],
q(fod) => [
- q(2335),
+ q(2355),
q(0),
],
q(foi) => [
- q(2336),
+ q(2356),
q(0),
],
q(fom) => [
- q(2337),
+ q(2357),
q(0),
],
q(fon) => [
@@ -64679,31 +65332,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(for) => [
- q(2338),
+ q(2358),
q(0),
],
q(fos) => [
- q(2339),
+ q(2359),
q(0),
],
q(fox) => [
- q(0503),
+ q(0504),
q(0),
],
q(fpe) => [
- q(2340),
+ q(2360),
q(0),
],
q(fqs) => [
- q(2341),
+ q(2361),
q(0),
],
q(frc) => [
- q(2342),
+ q(2362),
q(0),
],
q(frd) => [
- q(2343),
+ q(2363),
q(0),
],
q(fre) => [
@@ -64711,7 +65364,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(frk) => [
- q(2344),
+ q(2364),
q(0),
],
q(frm) => [
@@ -64723,11 +65376,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(frp) => [
- q(2345),
+ q(2365),
q(0),
],
q(frq) => [
- q(2346),
+ q(2366),
q(0),
],
q(frr) => [
@@ -64739,7 +65392,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(frt) => [
- q(2347),
+ q(2367),
q(0),
],
q(fry) => [
@@ -64747,47 +65400,47 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(fse) => [
- q(2348),
+ q(2368),
q(0),
],
q(fsl) => [
- q(2349),
+ q(2369),
q(0),
],
q(fss) => [
- q(2350),
+ q(2370),
q(0),
],
q(fub) => [
- q(2351),
+ q(2371),
q(0),
],
q(fuc) => [
- q(2352),
+ q(2372),
q(0),
],
q(fud) => [
- q(2353),
+ q(2373),
q(0),
],
q(fue) => [
- q(2354),
+ q(2374),
q(0),
],
q(fuf) => [
- q(2355),
+ q(2375),
q(0),
],
q(fuh) => [
- q(2356),
+ q(2376),
q(0),
],
q(fui) => [
- q(2357),
+ q(2377),
q(0),
],
q(fuj) => [
- q(2358),
+ q(2378),
q(0),
],
q(ful) => [
@@ -64795,15 +65448,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(fum) => [
- q(2359),
+ q(2379),
q(0),
],
q(fun) => [
- q(2360),
+ q(2380),
q(0),
],
q(fuq) => [
- q(2361),
+ q(2381),
q(0),
],
q(fur) => [
@@ -64811,31 +65464,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(fut) => [
- q(2362),
+ q(2382),
q(0),
],
q(fuu) => [
- q(2363),
+ q(2383),
q(0),
],
q(fuv) => [
- q(2364),
+ q(2384),
q(0),
],
q(fuy) => [
- q(2365),
+ q(2385),
q(0),
],
q(fvr) => [
- q(2366),
+ q(2386),
q(0),
],
q(fwa) => [
- q(2367),
+ q(2387),
q(0),
],
q(fwe) => [
- q(2368),
+ q(2388),
q(0),
],
q(gaa) => [
@@ -64843,91 +65496,91 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(gab) => [
- q(2369),
+ q(2389),
q(0),
],
q(gac) => [
- q(2370),
+ q(2390),
q(0),
],
q(gad) => [
- q(2371),
+ q(2391),
q(0),
],
q(gae) => [
- q(2372),
+ q(2392),
q(0),
],
q(gaf) => [
- q(2373),
+ q(2393),
q(0),
],
q(gag) => [
- q(2374),
+ q(2394),
q(0),
],
q(gah) => [
- q(2375),
+ q(2395),
q(0),
],
q(gai) => [
- q(2376),
+ q(2396),
q(0),
],
q(gaj) => [
- q(2377),
+ q(2397),
q(0),
],
q(gak) => [
- q(2378),
+ q(2398),
q(0),
],
q(gal) => [
- q(2379),
+ q(2399),
q(0),
],
q(gam) => [
- q(2380),
+ q(2400),
q(0),
],
q(gan) => [
- q(2381),
+ q(2401),
q(0),
],
q(gao) => [
- q(2382),
+ q(2402),
q(0),
],
q(gap) => [
- q(2383),
+ q(2403),
q(0),
],
q(gaq) => [
- q(2384),
+ q(2404),
q(0),
],
q(gar) => [
- q(2385),
+ q(2405),
q(0),
],
q(gas) => [
- q(2386),
+ q(2406),
q(0),
],
q(gat) => [
- q(2387),
+ q(2407),
q(0),
],
q(gau) => [
- q(2388),
+ q(2408),
q(0),
],
q(gaw) => [
- q(2389),
+ q(2409),
q(0),
],
q(gax) => [
- q(2390),
+ q(2410),
q(0),
],
q(gay) => [
@@ -64935,7 +65588,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(gaz) => [
- q(2391),
+ q(2411),
q(0),
],
q(gba) => [
@@ -64943,243 +65596,243 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(gbb) => [
- q(2392),
- q(0),
- ],
- q(gbc) => [
- q(2393),
+ q(2412),
q(0),
],
q(gbd) => [
- q(2394),
+ q(2413),
q(0),
],
q(gbe) => [
- q(2395),
+ q(2414),
q(0),
],
q(gbf) => [
- q(2396),
+ q(2415),
q(0),
],
q(gbg) => [
- q(2397),
+ q(2416),
q(0),
],
q(gbh) => [
- q(2398),
+ q(2417),
q(0),
],
q(gbi) => [
- q(2399),
+ q(2418),
q(0),
],
q(gbj) => [
- q(2400),
+ q(2419),
q(0),
],
q(gbk) => [
- q(2401),
+ q(2420),
q(0),
],
q(gbl) => [
- q(2402),
+ q(2421),
q(0),
],
q(gbm) => [
- q(2403),
+ q(2422),
q(0),
],
q(gbn) => [
- q(2404),
+ q(2423),
q(0),
],
q(gbo) => [
- q(2405),
+ q(2424),
q(0),
],
q(gbp) => [
- q(2406),
+ q(2425),
q(0),
],
q(gbq) => [
- q(2407),
+ q(2426),
q(0),
],
q(gbr) => [
- q(2408),
+ q(2427),
q(0),
],
q(gbs) => [
- q(2409),
+ q(2428),
q(0),
],
q(gbu) => [
- q(2410),
+ q(2429),
q(0),
],
q(gbv) => [
- q(2411),
+ q(2430),
q(0),
],
q(gbx) => [
- q(2412),
+ q(2431),
q(0),
],
q(gby) => [
- q(2413),
+ q(2432),
q(0),
],
q(gbz) => [
- q(2414),
+ q(2433),
q(0),
],
q(gcc) => [
- q(2415),
+ q(2434),
q(0),
],
q(gcd) => [
- q(2416),
+ q(2435),
q(0),
],
q(gce) => [
- q(2417),
+ q(2436),
q(0),
],
q(gcf) => [
- q(2418),
+ q(2437),
q(0),
],
q(gcl) => [
- q(2419),
+ q(2438),
q(0),
],
q(gcn) => [
- q(2420),
+ q(2439),
q(0),
],
q(gcr) => [
- q(2421),
+ q(2440),
q(0),
],
q(gct) => [
- q(2422),
+ q(2441),
q(0),
],
q(gda) => [
- q(2423),
+ q(2442),
q(0),
],
q(gdb) => [
- q(2424),
+ q(2443),
q(0),
],
q(gdc) => [
- q(2425),
+ q(2444),
q(0),
],
q(gdd) => [
- q(2426),
+ q(2445),
q(0),
],
q(gde) => [
- q(2427),
+ q(2446),
q(0),
],
q(gdf) => [
- q(2428),
+ q(2447),
q(0),
],
q(gdg) => [
- q(2429),
+ q(2448),
q(0),
],
q(gdh) => [
- q(2430),
+ q(2449),
q(0),
],
q(gdi) => [
- q(2431),
+ q(2450),
q(0),
],
q(gdj) => [
- q(2432),
+ q(2451),
q(0),
],
q(gdk) => [
- q(2433),
+ q(2452),
q(0),
],
q(gdl) => [
- q(2434),
+ q(2453),
q(0),
],
q(gdm) => [
- q(2435),
+ q(2454),
q(0),
],
q(gdn) => [
- q(2436),
+ q(2455),
q(0),
],
q(gdo) => [
- q(2437),
+ q(2456),
q(0),
],
q(gdq) => [
- q(2438),
+ q(2457),
q(0),
],
q(gdr) => [
- q(2439),
+ q(2458),
+ q(0),
+ ],
+ q(gds) => [
+ q(2459),
q(0),
],
q(gdu) => [
- q(2440),
+ q(2460),
q(0),
],
q(gdx) => [
- q(2441),
+ q(2461),
q(0),
],
q(gea) => [
- q(2442),
+ q(2462),
q(0),
],
q(geb) => [
- q(2443),
+ q(2463),
q(0),
],
q(gec) => [
- q(2444),
+ q(2464),
q(0),
],
q(ged) => [
- q(2445),
+ q(2465),
q(0),
],
q(geg) => [
- q(2446),
+ q(2466),
q(0),
],
q(geh) => [
- q(2447),
+ q(2467),
q(0),
],
q(gei) => [
- q(2448),
+ q(2468),
q(0),
],
q(gej) => [
- q(2449),
+ q(2469),
q(0),
],
q(gek) => [
- q(2450),
+ q(2470),
q(0),
],
q(gel) => [
- q(2451),
+ q(2471),
q(0),
],
q(gem) => [
@@ -65191,7 +65844,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(geq) => [
- q(2452),
+ q(2472),
q(0),
],
q(ger) => [
@@ -65199,19 +65852,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ges) => [
- q(2453),
+ q(2473),
q(0),
],
q(gew) => [
- q(2454),
+ q(2474),
q(0),
],
q(gex) => [
- q(2455),
+ q(2475),
q(0),
],
q(gey) => [
- q(2456),
+ q(2476),
q(0),
],
q(gez) => [
@@ -65219,127 +65872,131 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(gfk) => [
- q(2457),
+ q(2477),
q(0),
],
q(gft) => [
- q(2458),
+ q(2478),
+ q(0),
+ ],
+ q(gfx) => [
+ q(2479),
q(0),
],
q(gga) => [
- q(2459),
+ q(2480),
q(0),
],
q(ggb) => [
- q(2460),
+ q(2481),
q(0),
],
q(ggd) => [
- q(2461),
+ q(2482),
q(0),
],
q(gge) => [
- q(2462),
+ q(2483),
q(0),
],
q(ggg) => [
- q(2463),
+ q(2484),
q(0),
],
q(ggk) => [
- q(2464),
+ q(2485),
q(0),
],
q(ggl) => [
- q(2465),
+ q(2486),
q(0),
],
q(ggn) => [
- q(2466),
+ q(2487),
q(0),
],
q(ggo) => [
- q(2467),
+ q(2488),
q(0),
],
q(ggr) => [
- q(2468),
+ q(2489),
q(0),
],
q(ggt) => [
- q(2469),
+ q(2490),
q(0),
],
q(ggu) => [
- q(2470),
+ q(2491),
q(0),
],
q(ggw) => [
- q(2471),
+ q(2492),
q(0),
],
q(gha) => [
- q(2472),
+ q(2493),
q(0),
],
q(ghc) => [
- q(2473),
+ q(2494),
q(0),
],
q(ghe) => [
- q(2474),
+ q(2495),
q(0),
],
q(ghh) => [
- q(2475),
+ q(2496),
q(0),
],
q(ghk) => [
- q(2476),
+ q(2497),
q(0),
],
q(ghl) => [
- q(2477),
+ q(2498),
q(0),
],
q(ghn) => [
- q(2478),
+ q(2499),
q(0),
],
q(gho) => [
- q(2479),
+ q(2500),
q(0),
],
q(ghr) => [
- q(2480),
+ q(2501),
q(0),
],
q(ghs) => [
- q(2481),
+ q(2502),
q(0),
],
q(ght) => [
- q(2482),
+ q(2503),
q(0),
],
q(gia) => [
- q(2483),
+ q(2504),
q(0),
],
q(gib) => [
- q(2484),
+ q(2505),
q(0),
],
q(gic) => [
- q(2485),
+ q(2506),
q(0),
],
q(gid) => [
- q(2486),
+ q(2507),
q(0),
],
q(gig) => [
- q(2487),
+ q(2508),
q(0),
],
q(gil) => [
@@ -65347,83 +66004,87 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(gim) => [
- q(2488),
+ q(2509),
q(0),
],
q(gin) => [
- q(2489),
- q(0),
- ],
- q(gio) => [
- q(2490),
+ q(2510),
q(0),
],
q(gip) => [
- q(2491),
+ q(2511),
q(0),
],
q(giq) => [
- q(2492),
+ q(2512),
q(0),
],
q(gir) => [
- q(2493),
+ q(2513),
q(0),
],
q(gis) => [
- q(2494),
+ q(2514),
q(0),
],
q(git) => [
- q(2495),
+ q(2515),
+ q(0),
+ ],
+ q(giu) => [
+ q(2516),
q(0),
],
q(giw) => [
- q(2496),
+ q(2517),
q(0),
],
q(gix) => [
- q(2497),
+ q(2518),
q(0),
],
q(giy) => [
- q(2498),
+ q(2519),
q(0),
],
q(giz) => [
- q(2499),
+ q(2520),
q(0),
],
q(gji) => [
- q(2500),
+ q(2521),
q(0),
],
q(gjk) => [
- q(2501),
+ q(2522),
q(0),
],
q(gjn) => [
- q(2502),
+ q(2523),
q(0),
],
q(gju) => [
- q(2503),
+ q(2524),
q(0),
],
q(gka) => [
- q(2504),
+ q(2525),
q(0),
],
q(gke) => [
- q(2505),
+ q(2526),
q(0),
],
q(gkn) => [
- q(2506),
+ q(2527),
+ q(0),
+ ],
+ q(gko) => [
+ q(2528),
q(0),
],
q(gkp) => [
- q(2507),
+ q(2529),
q(0),
],
q(gla) => [
@@ -65431,11 +66092,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(glc) => [
- q(2508),
+ q(2530),
q(0),
],
q(gld) => [
- q(2509),
+ q(2531),
q(0),
],
q(gle) => [
@@ -65447,31 +66108,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(glh) => [
- q(2510),
+ q(2532),
q(0),
],
q(gli) => [
- q(2511),
+ q(2533),
q(0),
],
q(glj) => [
- q(2512),
+ q(2534),
q(0),
],
q(glk) => [
- q(2513),
+ q(2535),
q(0),
],
q(glo) => [
- q(2514),
+ q(2536),
q(0),
],
q(glr) => [
- q(2515),
+ q(2537),
q(0),
],
q(glu) => [
- q(2516),
+ q(2538),
q(0),
],
q(glv) => [
@@ -65479,27 +66140,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(glw) => [
- q(2517),
+ q(2539),
q(0),
],
q(gly) => [
- q(2518),
+ q(2540),
q(0),
],
q(gma) => [
- q(2519),
+ q(2541),
q(0),
],
q(gmb) => [
- q(2520),
+ q(2542),
q(0),
],
q(gmd) => [
- q(2521),
+ q(2543),
q(0),
],
q(gme) => [
- q(0504),
+ q(0505),
q(0),
],
q(gmh) => [
@@ -65507,143 +66168,143 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(gml) => [
- q(2522),
+ q(2544),
q(0),
],
q(gmm) => [
- q(2523),
+ q(2545),
q(0),
],
q(gmn) => [
- q(2524),
+ q(2546),
q(0),
],
q(gmq) => [
- q(0505),
+ q(0506),
q(0),
],
q(gmu) => [
- q(2525),
+ q(2547),
q(0),
],
q(gmv) => [
- q(2526),
+ q(2548),
q(0),
],
q(gmw) => [
- q(0506),
+ q(0507),
q(0),
],
q(gmx) => [
- q(2527),
+ q(2549),
q(0),
],
q(gmy) => [
- q(2528),
+ q(2550),
q(0),
],
q(gna) => [
- q(2529),
+ q(2551),
q(0),
],
q(gnb) => [
- q(2530),
+ q(2552),
q(0),
],
q(gnc) => [
- q(2531),
+ q(2553),
q(0),
],
q(gnd) => [
- q(2532),
+ q(2554),
q(0),
],
q(gne) => [
- q(2533),
+ q(2555),
q(0),
],
q(gng) => [
- q(2534),
+ q(2556),
q(0),
],
q(gnh) => [
- q(2535),
+ q(2557),
q(0),
],
q(gni) => [
- q(2536),
+ q(2558),
q(0),
],
q(gnk) => [
- q(2537),
+ q(2559),
q(0),
],
q(gnl) => [
- q(2538),
+ q(2560),
q(0),
],
q(gnm) => [
- q(2539),
+ q(2561),
q(0),
],
q(gnn) => [
- q(2540),
+ q(2562),
q(0),
],
q(gno) => [
- q(2541),
+ q(2563),
q(0),
],
q(gnq) => [
- q(2542),
+ q(2564),
q(0),
],
q(gnr) => [
- q(2543),
+ q(2565),
q(0),
],
q(gnt) => [
- q(2544),
+ q(2566),
q(0),
],
q(gnu) => [
- q(2545),
+ q(2567),
q(0),
],
q(gnw) => [
- q(2546),
+ q(2568),
q(0),
],
q(gnz) => [
- q(2547),
+ q(2569),
q(0),
],
q(goa) => [
- q(2548),
+ q(2570),
q(0),
],
q(gob) => [
- q(2549),
+ q(2571),
q(0),
],
q(goc) => [
- q(2550),
+ q(2572),
q(0),
],
q(god) => [
- q(2551),
+ q(2573),
q(0),
],
q(goe) => [
- q(2552),
+ q(2574),
q(0),
],
q(gof) => [
- q(2553),
+ q(2575),
q(0),
],
q(gog) => [
- q(2554),
+ q(2576),
q(0),
],
q(goh) => [
@@ -65651,23 +66312,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(goi) => [
- q(2555),
+ q(2577),
q(0),
],
q(goj) => [
- q(2556),
+ q(2578),
q(0),
],
q(gok) => [
- q(2557),
+ q(2579),
q(0),
],
q(gol) => [
- q(2558),
+ q(2580),
q(0),
],
q(gom) => [
- q(2559),
+ q(2581),
q(0),
],
q(gon) => [
@@ -65675,15 +66336,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(goo) => [
- q(2560),
+ q(2582),
q(0),
],
q(gop) => [
- q(2561),
+ q(2583),
q(0),
],
q(goq) => [
- q(2562),
+ q(2584),
q(0),
],
q(gor) => [
@@ -65691,7 +66352,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(gos) => [
- q(2563),
+ q(2585),
q(0),
],
q(got) => [
@@ -65699,51 +66360,59 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(gou) => [
- q(2564),
+ q(2586),
q(0),
],
q(gow) => [
- q(2565),
+ q(2587),
q(0),
],
q(gox) => [
- q(2566),
+ q(2588),
q(0),
],
q(goy) => [
- q(2567),
+ q(2589),
q(0),
],
q(goz) => [
- q(2568),
+ q(2590),
q(0),
],
q(gpa) => [
- q(2569),
+ q(2591),
+ q(0),
+ ],
+ q(gpe) => [
+ q(2592),
q(0),
],
q(gpn) => [
- q(2570),
+ q(2593),
q(0),
],
q(gqa) => [
- q(2571),
+ q(2594),
q(0),
],
q(gqi) => [
- q(2572),
+ q(2595),
q(0),
],
q(gqn) => [
- q(2573),
+ q(2596),
q(0),
],
q(gqr) => [
- q(2574),
+ q(2597),
+ q(0),
+ ],
+ q(gqu) => [
+ q(2598),
q(0),
],
q(gra) => [
- q(2575),
+ q(2599),
q(0),
],
q(grb) => [
@@ -65755,7 +66424,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(grd) => [
- q(2576),
+ q(2600),
q(0),
],
q(gre) => [
@@ -65763,27 +66432,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(grg) => [
- q(2577),
+ q(2601),
q(0),
],
q(grh) => [
- q(2578),
+ q(2602),
q(0),
],
q(gri) => [
- q(2579),
+ q(2603),
q(0),
],
q(grj) => [
- q(2580),
+ q(2604),
q(0),
],
q(grk) => [
- q(0507),
+ q(0508),
q(0),
],
q(grm) => [
- q(2581),
+ q(2605),
q(0),
],
q(grn) => [
@@ -65791,79 +66460,79 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(gro) => [
- q(2582),
+ q(2606),
q(0),
],
q(grq) => [
- q(2583),
+ q(2607),
q(0),
],
q(grr) => [
- q(2584),
+ q(2608),
q(0),
],
q(grs) => [
- q(2585),
+ q(2609),
q(0),
],
q(grt) => [
- q(2586),
+ q(2610),
q(0),
],
q(gru) => [
- q(2587),
+ q(2611),
q(0),
],
q(grv) => [
- q(2588),
+ q(2612),
q(0),
],
q(grw) => [
- q(2589),
+ q(2613),
q(0),
],
q(grx) => [
- q(2590),
+ q(2614),
q(0),
],
q(gry) => [
- q(2591),
+ q(2615),
q(0),
],
q(grz) => [
- q(2592),
+ q(2616),
q(0),
],
q(gse) => [
- q(2593),
+ q(2617),
q(0),
],
q(gsg) => [
- q(2594),
+ q(2618),
q(0),
],
q(gsl) => [
- q(2595),
+ q(2619),
q(0),
],
q(gsm) => [
- q(2596),
+ q(2620),
q(0),
],
q(gsn) => [
- q(2597),
+ q(2621),
q(0),
],
q(gso) => [
- q(2598),
+ q(2622),
q(0),
],
q(gsp) => [
- q(2599),
+ q(2623),
q(0),
],
q(gss) => [
- q(2600),
+ q(2624),
q(0),
],
q(gsw) => [
@@ -65871,47 +66540,47 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(gta) => [
- q(2601),
+ q(2625),
q(0),
],
q(gti) => [
- q(2602),
+ q(2626),
q(0),
],
q(gua) => [
- q(2603),
+ q(2627),
q(0),
],
q(gub) => [
- q(2604),
+ q(2628),
q(0),
],
q(guc) => [
- q(2605),
+ q(2629),
q(0),
],
q(gud) => [
- q(2606),
+ q(2630),
q(0),
],
q(gue) => [
- q(2607),
+ q(2631),
q(0),
],
q(guf) => [
- q(2608),
+ q(2632),
q(0),
],
q(gug) => [
- q(2609),
+ q(2633),
q(0),
],
q(guh) => [
- q(2610),
+ q(2634),
q(0),
],
q(gui) => [
- q(2611),
+ q(2635),
q(0),
],
q(guj) => [
@@ -65919,143 +66588,143 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(guk) => [
- q(2612),
+ q(2636),
q(0),
],
q(gul) => [
- q(2613),
+ q(2637),
q(0),
],
q(gum) => [
- q(2614),
+ q(2638),
q(0),
],
q(gun) => [
- q(2615),
+ q(2639),
q(0),
],
q(guo) => [
- q(2616),
+ q(2640),
q(0),
],
q(gup) => [
- q(2617),
+ q(2641),
q(0),
],
q(guq) => [
- q(2618),
+ q(2642),
q(0),
],
q(gur) => [
- q(2619),
+ q(2643),
q(0),
],
q(gus) => [
- q(2620),
+ q(2644),
q(0),
],
q(gut) => [
- q(2621),
+ q(2645),
q(0),
],
q(guu) => [
- q(2622),
+ q(2646),
q(0),
],
q(guv) => [
- q(2623),
+ q(2647),
q(0),
],
q(guw) => [
- q(2624),
+ q(2648),
q(0),
],
q(gux) => [
- q(2625),
+ q(2649),
q(0),
],
q(guz) => [
- q(2626),
+ q(2650),
q(0),
],
q(gva) => [
- q(2627),
+ q(2651),
q(0),
],
q(gvc) => [
- q(2628),
+ q(2652),
q(0),
],
q(gve) => [
- q(2629),
+ q(2653),
q(0),
],
q(gvf) => [
- q(2630),
+ q(2654),
q(0),
],
q(gvj) => [
- q(2631),
+ q(2655),
q(0),
],
q(gvl) => [
- q(2632),
+ q(2656),
q(0),
],
q(gvm) => [
- q(2633),
+ q(2657),
q(0),
],
q(gvn) => [
- q(2634),
+ q(2658),
q(0),
],
q(gvo) => [
- q(2635),
+ q(2659),
q(0),
],
q(gvp) => [
- q(2636),
+ q(2660),
q(0),
],
q(gvr) => [
- q(2637),
+ q(2661),
q(0),
],
q(gvs) => [
- q(2638),
+ q(2662),
q(0),
],
q(gvy) => [
- q(2639),
+ q(2663),
q(0),
],
q(gwa) => [
- q(2640),
+ q(2664),
q(0),
],
q(gwb) => [
- q(2641),
+ q(2665),
q(0),
],
q(gwc) => [
- q(2642),
+ q(2666),
q(0),
],
q(gwd) => [
- q(2643),
+ q(2667),
q(0),
],
q(gwe) => [
- q(2644),
+ q(2668),
q(0),
],
q(gwf) => [
- q(2645),
+ q(2669),
q(0),
],
q(gwg) => [
- q(2646),
+ q(2670),
q(0),
],
q(gwi) => [
@@ -66063,127 +66732,131 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(gwj) => [
- q(2647),
+ q(2671),
+ q(0),
+ ],
+ q(gwm) => [
+ q(2672),
q(0),
],
q(gwn) => [
- q(2648),
+ q(2673),
q(0),
],
q(gwr) => [
- q(2649),
+ q(2674),
q(0),
],
q(gwt) => [
- q(2650),
+ q(2675),
q(0),
],
q(gwu) => [
- q(2651),
+ q(2676),
q(0),
],
q(gww) => [
- q(2652),
+ q(2677),
q(0),
],
q(gwx) => [
- q(2653),
+ q(2678),
q(0),
],
q(gxx) => [
- q(2654),
+ q(2679),
q(0),
],
q(gya) => [
- q(2655),
+ q(2680),
q(0),
],
q(gyb) => [
- q(2656),
+ q(2681),
q(0),
],
q(gyd) => [
- q(2657),
+ q(2682),
q(0),
],
q(gye) => [
- q(2658),
+ q(2683),
q(0),
],
q(gyf) => [
- q(2659),
+ q(2684),
q(0),
],
q(gyg) => [
- q(2660),
+ q(2685),
q(0),
],
q(gyi) => [
- q(2661),
+ q(2686),
q(0),
],
q(gyl) => [
- q(2662),
+ q(2687),
q(0),
],
q(gym) => [
- q(2663),
+ q(2688),
q(0),
],
q(gyn) => [
- q(2664),
+ q(2689),
q(0),
],
q(gyr) => [
- q(2665),
+ q(2690),
q(0),
],
q(gyy) => [
- q(2666),
+ q(2691),
q(0),
],
q(gza) => [
- q(2667),
+ q(2692),
q(0),
],
q(gzi) => [
- q(2668),
+ q(2693),
q(0),
],
q(gzn) => [
- q(2669),
+ q(2694),
q(0),
],
q(haa) => [
- q(2670),
+ q(2695),
q(0),
],
q(hab) => [
- q(2671),
+ q(2696),
q(0),
],
q(hac) => [
- q(2672),
+ q(2697),
q(0),
],
q(had) => [
- q(2673),
+ q(2698),
q(0),
],
q(hae) => [
- q(2674),
+ q(2699),
q(0),
],
q(haf) => [
- q(2675),
+ q(2700),
q(0),
],
q(hag) => [
- q(2676),
+ q(2701),
q(0),
],
q(hah) => [
- q(2677),
+ q(2702),
q(0),
],
q(hai) => [
@@ -66191,43 +66864,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(haj) => [
- q(2678),
+ q(2703),
q(0),
],
q(hak) => [
- q(2679),
+ q(2704),
q(0),
],
q(hal) => [
- q(2680),
+ q(2705),
q(0),
],
q(ham) => [
- q(2681),
+ q(2706),
q(0),
],
q(han) => [
- q(2682),
+ q(2707),
q(0),
],
q(hao) => [
- q(2683),
+ q(2708),
q(0),
],
q(hap) => [
- q(2684),
+ q(2709),
q(0),
],
q(haq) => [
- q(2685),
+ q(2710),
q(0),
],
q(har) => [
- q(2686),
+ q(2711),
q(0),
],
q(has) => [
- q(2687),
+ q(2712),
q(0),
],
q(hat) => [
@@ -66239,7 +66912,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(hav) => [
- q(2688),
+ q(2713),
q(0),
],
q(haw) => [
@@ -66247,59 +66920,59 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(hax) => [
- q(2689),
+ q(2714),
q(0),
],
q(hay) => [
- q(2690),
+ q(2715),
q(0),
],
q(haz) => [
- q(2691),
+ q(2716),
q(0),
],
q(hba) => [
- q(2692),
+ q(2717),
q(0),
],
q(hbb) => [
- q(2693),
+ q(2718),
q(0),
],
q(hbn) => [
- q(2694),
+ q(2719),
q(0),
],
q(hbo) => [
- q(2695),
+ q(2720),
q(0),
],
q(hbu) => [
- q(2696),
+ q(2721),
q(0),
],
q(hca) => [
- q(2697),
+ q(2722),
q(0),
],
q(hch) => [
- q(2698),
+ q(2723),
q(0),
],
q(hdn) => [
- q(2699),
+ q(2724),
q(0),
],
q(hds) => [
- q(2700),
+ q(2725),
q(0),
],
q(hdy) => [
- q(2701),
+ q(2726),
q(0),
],
q(hea) => [
- q(2702),
+ q(2727),
q(0),
],
q(heb) => [
@@ -66307,23 +66980,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(hed) => [
- q(2703),
+ q(2728),
q(0),
],
q(heg) => [
- q(2704),
+ q(2729),
q(0),
],
q(heh) => [
- q(2705),
+ q(2730),
q(0),
],
q(hei) => [
- q(2706),
+ q(2731),
q(0),
],
q(hem) => [
- q(2707),
+ q(2732),
q(0),
],
q(her) => [
@@ -66331,59 +67004,59 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(hgm) => [
- q(2708),
+ q(2733),
q(0),
],
q(hgw) => [
- q(2709),
+ q(2734),
q(0),
],
q(hhi) => [
- q(2710),
+ q(2735),
q(0),
],
q(hhr) => [
- q(2711),
+ q(2736),
q(0),
],
q(hhy) => [
- q(2712),
+ q(2737),
q(0),
],
q(hia) => [
- q(2713),
+ q(2738),
q(0),
],
q(hib) => [
- q(2714),
+ q(2739),
q(0),
],
q(hid) => [
- q(2715),
+ q(2740),
q(0),
],
q(hif) => [
- q(2716),
+ q(2741),
q(0),
],
q(hig) => [
- q(2717),
+ q(2742),
q(0),
],
q(hih) => [
- q(2718),
+ q(2743),
q(0),
],
q(hii) => [
- q(2719),
+ q(2744),
q(0),
],
q(hij) => [
- q(2720),
+ q(2745),
q(0),
],
q(hik) => [
- q(2721),
+ q(2746),
q(0),
],
q(hil) => [
@@ -66399,11 +67072,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(hio) => [
- q(2722),
+ q(2747),
q(0),
],
q(hir) => [
- q(2723),
+ q(2748),
q(0),
],
q(hit) => [
@@ -66411,107 +67084,107 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(hiw) => [
- q(2724),
+ q(2749),
q(0),
],
q(hix) => [
- q(2725),
+ q(2750),
q(0),
],
q(hji) => [
- q(2726),
+ q(2751),
q(0),
],
q(hka) => [
- q(2727),
+ q(2752),
q(0),
],
q(hke) => [
- q(2728),
+ q(2753),
q(0),
],
q(hkk) => [
- q(2729),
+ q(2754),
q(0),
],
q(hks) => [
- q(2730),
+ q(2755),
q(0),
],
q(hla) => [
- q(2731),
+ q(2756),
q(0),
],
q(hlb) => [
- q(2732),
+ q(2757),
q(0),
],
q(hld) => [
- q(2733),
+ q(2758),
q(0),
],
q(hle) => [
- q(2734),
+ q(2759),
q(0),
],
q(hlt) => [
- q(2735),
+ q(2760),
q(0),
],
q(hlu) => [
- q(2736),
+ q(2761),
q(0),
],
q(hma) => [
- q(2737),
+ q(2762),
q(0),
],
q(hmb) => [
- q(2738),
+ q(2763),
q(0),
],
q(hmc) => [
- q(2739),
+ q(2764),
q(0),
],
q(hmd) => [
- q(2740),
+ q(2765),
q(0),
],
q(hme) => [
- q(2741),
+ q(2766),
q(0),
],
q(hmf) => [
- q(2742),
+ q(2767),
q(0),
],
q(hmg) => [
- q(2743),
+ q(2768),
q(0),
],
q(hmh) => [
- q(2744),
+ q(2769),
q(0),
],
q(hmi) => [
- q(2745),
+ q(2770),
q(0),
],
q(hmj) => [
- q(2746),
+ q(2771),
q(0),
],
q(hmk) => [
- q(2747),
+ q(2772),
q(0),
],
q(hml) => [
- q(2748),
+ q(2773),
q(0),
],
q(hmm) => [
- q(2749),
+ q(2774),
q(0),
],
q(hmn) => [
@@ -66523,207 +67196,203 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(hmp) => [
- q(2750),
+ q(2775),
q(0),
],
q(hmq) => [
- q(2751),
+ q(2776),
q(0),
],
q(hmr) => [
- q(2752),
+ q(2777),
q(0),
],
q(hms) => [
- q(2753),
+ q(2778),
q(0),
],
q(hmt) => [
- q(2754),
+ q(2779),
q(0),
],
q(hmu) => [
- q(2755),
+ q(2780),
q(0),
],
q(hmv) => [
- q(2756),
+ q(2781),
q(0),
],
q(hmw) => [
- q(2757),
+ q(2782),
q(0),
],
q(hmx) => [
- q(0508),
+ q(0509),
q(0),
],
q(hmy) => [
- q(2758),
+ q(2783),
q(0),
],
q(hmz) => [
- q(2759),
+ q(2784),
q(0),
],
q(hna) => [
- q(2760),
+ q(2785),
q(0),
],
q(hnd) => [
- q(2761),
+ q(2786),
q(0),
],
q(hne) => [
- q(2762),
+ q(2787),
q(0),
],
q(hnh) => [
- q(2763),
+ q(2788),
q(0),
],
q(hni) => [
- q(2764),
+ q(2789),
q(0),
],
q(hnj) => [
- q(2765),
+ q(2790),
q(0),
],
q(hnn) => [
- q(2766),
+ q(2791),
q(0),
],
q(hno) => [
- q(2767),
+ q(2792),
q(0),
],
q(hns) => [
- q(2768),
+ q(2793),
q(0),
],
q(hnu) => [
- q(2769),
+ q(2794),
q(0),
],
q(hoa) => [
- q(2770),
+ q(2795),
q(0),
],
q(hob) => [
- q(2771),
+ q(2796),
q(0),
],
q(hoc) => [
- q(2772),
+ q(2797),
q(0),
],
q(hod) => [
- q(2773),
+ q(2798),
q(0),
],
q(hoe) => [
- q(2774),
+ q(2799),
q(0),
],
q(hoh) => [
- q(2775),
+ q(2800),
q(0),
],
q(hoi) => [
- q(2776),
+ q(2801),
q(0),
],
q(hoj) => [
- q(2777),
+ q(2802),
q(0),
],
q(hok) => [
- q(0509),
+ q(0510),
q(0),
],
q(hol) => [
- q(2778),
+ q(2803),
q(0),
],
q(hom) => [
- q(2779),
+ q(2804),
q(0),
],
q(hoo) => [
- q(2780),
+ q(2805),
q(0),
],
q(hop) => [
- q(2781),
+ q(2806),
q(0),
],
q(hor) => [
- q(2782),
+ q(2807),
q(0),
],
q(hos) => [
- q(2783),
+ q(2808),
q(0),
],
q(hot) => [
- q(2784),
+ q(2809),
q(0),
],
q(hov) => [
- q(2785),
+ q(2810),
q(0),
],
q(how) => [
- q(2786),
+ q(2811),
q(0),
],
q(hoy) => [
- q(2787),
+ q(2812),
q(0),
],
q(hoz) => [
- q(2788),
+ q(2813),
q(0),
],
q(hpo) => [
- q(2789),
+ q(2814),
q(0),
],
q(hps) => [
- q(2790),
+ q(2815),
q(0),
],
q(hra) => [
- q(2791),
+ q(2816),
q(0),
],
q(hre) => [
- q(2792),
+ q(2817),
q(0),
],
q(hrk) => [
- q(2793),
+ q(2818),
q(0),
],
q(hrm) => [
- q(2794),
+ q(2819),
q(0),
],
q(hro) => [
- q(2795),
- q(0),
- ],
- q(hrr) => [
- q(2796),
+ q(2820),
q(0),
],
q(hrt) => [
- q(2797),
+ q(2821),
q(0),
],
q(hru) => [
- q(2798),
+ q(2822),
q(0),
],
q(hrv) => [
@@ -66731,11 +67400,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(hrx) => [
- q(2799),
+ q(2823),
q(0),
],
q(hrz) => [
- q(2800),
+ q(2824),
q(0),
],
q(hsb) => [
@@ -66743,87 +67412,87 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(hsh) => [
- q(2801),
+ q(2825),
q(0),
],
q(hsl) => [
- q(2802),
+ q(2826),
q(0),
],
q(hsn) => [
- q(2803),
+ q(2827),
q(0),
],
q(hss) => [
- q(2804),
+ q(2828),
q(0),
],
q(hti) => [
- q(2805),
+ q(2829),
q(0),
],
q(hto) => [
- q(2806),
+ q(2830),
q(0),
],
q(hts) => [
- q(2807),
+ q(2831),
q(0),
],
q(htu) => [
- q(2808),
+ q(2832),
q(0),
],
q(htx) => [
- q(2809),
+ q(2833),
q(0),
],
q(hub) => [
- q(2810),
+ q(2834),
q(0),
],
q(huc) => [
- q(2811),
+ q(2835),
q(0),
],
q(hud) => [
- q(2812),
+ q(2836),
q(0),
],
q(hue) => [
- q(2813),
+ q(2837),
q(0),
],
q(huf) => [
- q(2814),
+ q(2838),
q(0),
],
q(hug) => [
- q(2815),
+ q(2839),
q(0),
],
q(huh) => [
- q(2816),
+ q(2840),
q(0),
],
q(hui) => [
- q(2817),
+ q(2841),
q(0),
],
q(huj) => [
- q(2818),
+ q(2842),
q(0),
],
q(huk) => [
- q(2819),
+ q(2843),
q(0),
],
q(hul) => [
- q(2820),
+ q(2844),
q(0),
],
q(hum) => [
- q(2821),
+ q(2845),
q(0),
],
q(hun) => [
@@ -66831,7 +67500,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(huo) => [
- q(2822),
+ q(2846),
q(0),
],
q(hup) => [
@@ -66839,99 +67508,99 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(huq) => [
- q(2823),
+ q(2847),
q(0),
],
q(hur) => [
- q(2824),
+ q(2848),
q(0),
],
q(hus) => [
- q(2825),
+ q(2849),
q(0),
],
q(hut) => [
- q(2826),
+ q(2850),
q(0),
],
q(huu) => [
- q(2827),
+ q(2851),
q(0),
],
q(huv) => [
- q(2828),
+ q(2852),
q(0),
],
q(huw) => [
- q(2829),
+ q(2853),
q(0),
],
q(hux) => [
- q(2830),
+ q(2854),
q(0),
],
q(huy) => [
- q(2831),
+ q(2855),
q(0),
],
q(huz) => [
- q(2832),
+ q(2856),
q(0),
],
q(hvc) => [
- q(2833),
+ q(2857),
q(0),
],
q(hve) => [
- q(2834),
+ q(2858),
q(0),
],
q(hvk) => [
- q(2835),
+ q(2859),
q(0),
],
q(hvn) => [
- q(2836),
+ q(2860),
q(0),
],
q(hvv) => [
- q(2837),
+ q(2861),
q(0),
],
q(hwa) => [
- q(2838),
+ q(2862),
q(0),
],
q(hwc) => [
- q(2839),
+ q(2863),
q(0),
],
q(hwo) => [
- q(2840),
+ q(2864),
q(0),
],
q(hya) => [
- q(2841),
+ q(2865),
q(0),
],
q(hyx) => [
- q(0510),
+ q(0511),
q(0),
],
q(iai) => [
- q(2842),
+ q(2866),
q(0),
],
q(ian) => [
- q(2843),
+ q(2867),
q(0),
],
q(iap) => [
- q(2844),
+ q(2868),
q(0),
],
q(iar) => [
- q(2845),
+ q(2869),
q(0),
],
q(iba) => [
@@ -66939,35 +67608,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ibb) => [
- q(2846),
+ q(2870),
q(0),
],
q(ibd) => [
- q(2847),
+ q(2871),
q(0),
],
q(ibe) => [
- q(2848),
+ q(2872),
q(0),
],
q(ibg) => [
- q(2849),
- q(0),
- ],
- q(ibi) => [
- q(2850),
+ q(2873),
q(0),
],
q(ibl) => [
- q(2851),
+ q(2874),
q(0),
],
q(ibm) => [
- q(2852),
+ q(2875),
q(0),
],
q(ibn) => [
- q(2853),
+ q(2876),
q(0),
],
q(ibo) => [
@@ -66975,19 +67640,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ibr) => [
- q(2854),
+ q(2877),
q(0),
],
q(ibu) => [
- q(2855),
+ q(2878),
q(0),
],
q(iby) => [
- q(2856),
+ q(2879),
q(0),
],
q(ica) => [
- q(2857),
+ q(2880),
q(0),
],
q(ice) => [
@@ -66995,39 +67660,39 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ich) => [
- q(2858),
+ q(2881),
q(0),
],
q(icl) => [
- q(2859),
+ q(2882),
q(0),
],
q(icr) => [
- q(2860),
+ q(2883),
q(0),
],
q(ida) => [
- q(2861),
+ q(2884),
q(0),
],
q(idb) => [
- q(2862),
+ q(2885),
q(0),
],
q(idc) => [
- q(2863),
+ q(2886),
q(0),
],
q(idd) => [
- q(2864),
+ q(2887),
q(0),
],
q(ide) => [
- q(2865),
+ q(2888),
q(0),
],
q(idi) => [
- q(2866),
+ q(2889),
q(0),
],
q(ido) => [
@@ -67035,99 +67700,103 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(idr) => [
- q(2867),
+ q(2890),
q(0),
],
q(ids) => [
- q(2868),
+ q(2891),
q(0),
],
q(idt) => [
- q(2869),
+ q(2892),
q(0),
],
q(idu) => [
- q(2870),
+ q(2893),
q(0),
],
q(ifa) => [
- q(2871),
+ q(2894),
q(0),
],
q(ifb) => [
- q(2872),
+ q(2895),
q(0),
],
q(ife) => [
- q(2873),
+ q(2896),
q(0),
],
q(iff) => [
- q(2874),
+ q(2897),
q(0),
],
q(ifk) => [
- q(2875),
+ q(2898),
q(0),
],
q(ifm) => [
- q(2876),
+ q(2899),
q(0),
],
q(ifu) => [
- q(2877),
+ q(2900),
q(0),
],
q(ify) => [
- q(2878),
+ q(2901),
q(0),
],
q(igb) => [
- q(2879),
+ q(2902),
q(0),
],
q(ige) => [
- q(2880),
+ q(2903),
q(0),
],
q(igg) => [
- q(2881),
+ q(2904),
q(0),
],
q(igl) => [
- q(2882),
+ q(2905),
q(0),
],
q(igm) => [
- q(2883),
+ q(2906),
q(0),
],
q(ign) => [
- q(2884),
+ q(2907),
q(0),
],
q(igo) => [
- q(2885),
+ q(2908),
q(0),
],
q(igs) => [
- q(2886),
+ q(2909),
q(0),
],
q(igw) => [
- q(2887),
+ q(2910),
q(0),
],
q(ihb) => [
- q(2888),
+ q(2911),
q(0),
],
q(ihi) => [
- q(2889),
+ q(2912),
q(0),
],
q(ihp) => [
- q(2890),
+ q(2913),
+ q(0),
+ ],
+ q(ihw) => [
+ q(2914),
q(0),
],
q(iii) => [
@@ -67135,23 +67804,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(iir) => [
- q(0511),
+ q(0512),
q(0),
],
q(ijc) => [
- q(2891),
+ q(2915),
q(0),
],
q(ije) => [
- q(2892),
+ q(2916),
q(0),
],
q(ijj) => [
- q(2893),
+ q(2917),
q(0),
],
q(ijn) => [
- q(2894),
+ q(2918),
q(0),
],
q(ijo) => [
@@ -67159,35 +67828,35 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ijs) => [
- q(2895),
+ q(2919),
q(0),
],
q(ike) => [
- q(2896),
+ q(2920),
q(0),
],
q(iki) => [
- q(2897),
+ q(2921),
q(0),
],
q(ikk) => [
- q(2898),
+ q(2922),
q(0),
],
q(ikl) => [
- q(2899),
+ q(2923),
q(0),
],
q(iko) => [
- q(2900),
+ q(2924),
q(0),
],
q(ikp) => [
- q(2901),
+ q(2925),
q(0),
],
q(ikt) => [
- q(2902),
+ q(2926),
q(0),
],
q(iku) => [
@@ -67195,27 +67864,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ikv) => [
- q(2903),
+ q(2927),
q(0),
],
q(ikw) => [
- q(2904),
+ q(2928),
q(0),
],
q(ikx) => [
- q(2905),
+ q(2929),
q(0),
],
q(ikz) => [
- q(2906),
+ q(2930),
q(0),
],
q(ila) => [
- q(2907),
+ q(2931),
q(0),
],
q(ilb) => [
- q(2908),
+ q(2932),
q(0),
],
q(ile) => [
@@ -67223,19 +67892,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ilg) => [
- q(2909),
+ q(2933),
q(0),
],
q(ili) => [
- q(2910),
+ q(2934),
q(0),
],
q(ilk) => [
- q(2911),
+ q(2935),
q(0),
],
q(ill) => [
- q(2912),
+ q(2936),
q(0),
],
q(ilo) => [
@@ -67243,55 +67912,55 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ils) => [
- q(2913),
+ q(2937),
q(0),
],
q(ilu) => [
- q(2914),
+ q(2938),
q(0),
],
q(ilv) => [
- q(2915),
+ q(2939),
q(0),
],
q(ilw) => [
- q(2916),
+ q(2940),
q(0),
],
q(ima) => [
- q(2917),
+ q(2941),
q(0),
],
q(ime) => [
- q(2918),
+ q(2942),
q(0),
],
q(imi) => [
- q(2919),
+ q(2943),
q(0),
],
q(iml) => [
- q(2920),
+ q(2944),
q(0),
],
q(imn) => [
- q(2921),
+ q(2945),
q(0),
],
q(imo) => [
- q(2922),
+ q(2946),
q(0),
],
q(imr) => [
- q(2923),
+ q(2947),
q(0),
],
q(ims) => [
- q(2924),
+ q(2948),
q(0),
],
q(imy) => [
- q(2925),
+ q(2949),
q(0),
],
q(ina) => [
@@ -67299,7 +67968,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(inb) => [
- q(2926),
+ q(2950),
q(0),
],
q(inc) => [
@@ -67315,7 +67984,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ing) => [
- q(2927),
+ q(2951),
q(0),
],
q(inh) => [
@@ -67323,55 +67992,55 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(inj) => [
- q(2928),
+ q(2952),
q(0),
],
q(inl) => [
- q(2929),
+ q(2953),
q(0),
],
q(inm) => [
- q(2930),
+ q(2954),
q(0),
],
q(inn) => [
- q(2931),
+ q(2955),
q(0),
],
q(ino) => [
- q(2932),
+ q(2956),
q(0),
],
q(inp) => [
- q(2933),
+ q(2957),
q(0),
],
q(ins) => [
- q(2934),
+ q(2958),
q(0),
],
q(int) => [
- q(2935),
+ q(2959),
q(0),
],
q(inz) => [
- q(2936),
+ q(2960),
q(0),
],
q(ior) => [
- q(2937),
+ q(2961),
q(0),
],
q(iou) => [
- q(2938),
+ q(2962),
q(0),
],
q(iow) => [
- q(2939),
+ q(2963),
q(0),
],
q(ipi) => [
- q(2940),
+ q(2964),
q(0),
],
q(ipk) => [
@@ -67379,11 +68048,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ipo) => [
- q(2941),
+ q(2965),
q(0),
],
q(iqu) => [
- q(2942),
+ q(2966),
q(0),
],
q(ira) => [
@@ -67391,23 +68060,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ire) => [
- q(2943),
+ q(2967),
q(0),
],
q(irh) => [
- q(2944),
+ q(2968),
q(0),
],
q(iri) => [
- q(2945),
+ q(2969),
q(0),
],
q(irk) => [
- q(2946),
+ q(2970),
q(0),
],
q(irn) => [
- q(2947),
+ q(2971),
q(0),
],
q(iro) => [
@@ -67415,75 +68084,75 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(irr) => [
- q(2948),
+ q(2972),
q(0),
],
q(iru) => [
- q(2949),
+ q(2973),
q(0),
],
q(irx) => [
- q(2950),
+ q(2974),
q(0),
],
q(iry) => [
- q(2951),
+ q(2975),
q(0),
],
q(isa) => [
- q(2952),
+ q(2976),
q(0),
],
q(isc) => [
- q(2953),
+ q(2977),
q(0),
],
q(isd) => [
- q(2954),
+ q(2978),
q(0),
],
q(ise) => [
- q(2955),
+ q(2979),
q(0),
],
q(isg) => [
- q(2956),
+ q(2980),
q(0),
],
q(ish) => [
- q(2957),
+ q(2981),
q(0),
],
q(isi) => [
- q(2958),
+ q(2982),
q(0),
],
q(isk) => [
- q(2959),
+ q(2983),
q(0),
],
q(ism) => [
- q(2960),
+ q(2984),
q(0),
],
q(isn) => [
- q(2961),
+ q(2985),
q(0),
],
q(iso) => [
- q(2962),
+ q(2986),
q(0),
],
q(isr) => [
- q(2963),
+ q(2987),
q(0),
],
q(ist) => [
- q(2964),
+ q(2988),
q(0),
],
q(isu) => [
- q(2965),
+ q(2989),
q(0),
],
q(ita) => [
@@ -67491,195 +68160,195 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(itb) => [
- q(2966),
+ q(2990),
q(0),
],
q(itc) => [
- q(0512),
+ q(0513),
q(0),
],
q(ite) => [
- q(2967),
+ q(2991),
q(0),
],
q(iti) => [
- q(2968),
+ q(2992),
q(0),
],
q(itk) => [
- q(2969),
+ q(2993),
q(0),
],
q(itl) => [
- q(2970),
+ q(2994),
q(0),
],
q(itm) => [
- q(2971),
+ q(2995),
q(0),
],
q(ito) => [
- q(2972),
+ q(2996),
q(0),
],
q(itr) => [
- q(2973),
+ q(2997),
q(0),
],
q(its) => [
- q(2974),
+ q(2998),
q(0),
],
q(itt) => [
- q(2975),
+ q(2999),
q(0),
],
q(itv) => [
- q(2976),
+ q(3000),
q(0),
],
q(itw) => [
- q(2977),
+ q(3001),
q(0),
],
q(itx) => [
- q(2978),
+ q(3002),
q(0),
],
q(ity) => [
- q(2979),
+ q(3003),
q(0),
],
q(itz) => [
- q(2980),
+ q(3004),
q(0),
],
q(ium) => [
- q(2981),
+ q(3005),
q(0),
],
q(ivb) => [
- q(2982),
+ q(3006),
q(0),
],
q(ivv) => [
- q(2983),
+ q(3007),
q(0),
],
q(iwk) => [
- q(2984),
+ q(3008),
q(0),
],
q(iwm) => [
- q(2985),
+ q(3009),
q(0),
],
q(iwo) => [
- q(2986),
+ q(3010),
q(0),
],
q(iws) => [
- q(2987),
+ q(3011),
q(0),
],
q(ixc) => [
- q(2988),
+ q(3012),
q(0),
],
q(ixl) => [
- q(2989),
+ q(3013),
q(0),
],
q(iya) => [
- q(2990),
+ q(3014),
q(0),
],
q(iyo) => [
- q(2991),
+ q(3015),
q(0),
],
q(iyx) => [
- q(2992),
+ q(3016),
q(0),
],
q(izh) => [
- q(2993),
+ q(3017),
q(0),
],
q(izi) => [
- q(2994),
+ q(3018),
q(0),
],
q(izr) => [
- q(2995),
+ q(3019),
q(0),
],
q(jaa) => [
- q(2996),
+ q(3020),
q(0),
],
q(jab) => [
- q(2997),
+ q(3021),
q(0),
],
q(jac) => [
- q(2998),
+ q(3022),
q(0),
],
q(jad) => [
- q(2999),
+ q(3023),
q(0),
],
q(jae) => [
- q(3000),
+ q(3024),
q(0),
],
q(jaf) => [
- q(3001),
+ q(3025),
q(0),
],
q(jah) => [
- q(3002),
+ q(3026),
q(0),
],
q(jaj) => [
- q(3003),
+ q(3027),
q(0),
],
q(jak) => [
- q(3004),
+ q(3028),
q(0),
],
q(jal) => [
- q(3005),
+ q(3029),
q(0),
],
q(jam) => [
- q(3006),
+ q(3030),
q(0),
],
- q(jao) => [
- q(3007),
+ q(jan) => [
+ q(3031),
q(0),
],
- q(jaq) => [
- q(3008),
+ q(jao) => [
+ q(3032),
q(0),
],
- q(jar) => [
- q(3009),
+ q(jaq) => [
+ q(3033),
q(0),
],
q(jas) => [
- q(3010),
+ q(3034),
q(0),
],
q(jat) => [
- q(3011),
+ q(3035),
q(0),
],
q(jau) => [
- q(3012),
+ q(3036),
q(0),
],
q(jav) => [
@@ -67687,27 +68356,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(jax) => [
- q(3013),
+ q(3037),
q(0),
],
q(jay) => [
- q(3014),
+ q(3038),
q(0),
],
q(jaz) => [
- q(3015),
+ q(3039),
q(0),
],
q(jbe) => [
- q(3016),
+ q(3040),
q(0),
],
q(jbj) => [
- q(3017),
+ q(3041),
+ q(0),
+ ],
+ q(jbk) => [
+ q(3042),
q(0),
],
q(jbn) => [
- q(3018),
+ q(3043),
q(0),
],
q(jbo) => [
@@ -67715,271 +68388,299 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(jbr) => [
- q(3019),
+ q(3044),
q(0),
],
q(jbt) => [
- q(3020),
+ q(3045),
q(0),
],
q(jbu) => [
- q(3021),
+ q(3046),
+ q(0),
+ ],
+ q(jbw) => [
+ q(3047),
q(0),
],
q(jcs) => [
- q(3022),
+ q(3048),
q(0),
],
q(jct) => [
- q(3023),
+ q(3049),
q(0),
],
q(jda) => [
- q(3024),
+ q(3050),
q(0),
],
q(jdg) => [
- q(3025),
+ q(3051),
q(0),
],
q(jdt) => [
- q(3026),
+ q(3052),
q(0),
],
q(jeb) => [
- q(3027),
+ q(3053),
q(0),
],
q(jee) => [
- q(3028),
+ q(3054),
q(0),
],
q(jeg) => [
- q(3029),
+ q(3055),
q(0),
],
q(jeh) => [
- q(3030),
+ q(3056),
q(0),
],
q(jei) => [
- q(3031),
+ q(3057),
q(0),
],
q(jek) => [
- q(3032),
+ q(3058),
q(0),
],
q(jel) => [
- q(3033),
+ q(3059),
q(0),
],
q(jen) => [
- q(3034),
+ q(3060),
q(0),
],
q(jer) => [
- q(3035),
+ q(3061),
q(0),
],
q(jet) => [
- q(3036),
+ q(3062),
q(0),
],
q(jeu) => [
- q(3037),
+ q(3063),
q(0),
],
q(jgb) => [
- q(3038),
+ q(3064),
q(0),
],
q(jge) => [
- q(3039),
+ q(3065),
+ q(0),
+ ],
+ q(jgk) => [
+ q(3066),
q(0),
],
q(jgo) => [
- q(3040),
+ q(3067),
q(0),
],
q(jhi) => [
- q(3041),
+ q(3068),
q(0),
],
q(jhs) => [
- q(3042),
+ q(3069),
q(0),
],
q(jia) => [
- q(3043),
+ q(3070),
q(0),
],
q(jib) => [
- q(3044),
+ q(3071),
q(0),
],
q(jic) => [
- q(3045),
+ q(3072),
q(0),
],
q(jid) => [
- q(3046),
+ q(3073),
q(0),
],
q(jie) => [
- q(3047),
+ q(3074),
q(0),
],
q(jig) => [
- q(3048),
+ q(3075),
q(0),
],
q(jih) => [
- q(3049),
+ q(3076),
q(0),
],
q(jii) => [
- q(3050),
+ q(3077),
q(0),
],
q(jil) => [
- q(3051),
+ q(3078),
q(0),
],
q(jim) => [
- q(3052),
+ q(3079),
q(0),
],
q(jio) => [
- q(3053),
+ q(3080),
q(0),
],
q(jiq) => [
- q(3054),
+ q(3081),
q(0),
],
q(jit) => [
- q(3055),
+ q(3082),
q(0),
],
q(jiu) => [
- q(3056),
+ q(3083),
q(0),
],
q(jiv) => [
- q(3057),
+ q(3084),
q(0),
],
q(jiy) => [
- q(3058),
+ q(3085),
+ q(0),
+ ],
+ q(jjr) => [
+ q(3086),
+ q(0),
+ ],
+ q(jkm) => [
+ q(3087),
q(0),
],
q(jko) => [
- q(3059),
+ q(3088),
+ q(0),
+ ],
+ q(jkp) => [
+ q(3089),
+ q(0),
+ ],
+ q(jkr) => [
+ q(3090),
q(0),
],
q(jku) => [
- q(3060),
+ q(3091),
q(0),
],
q(jle) => [
- q(3061),
+ q(3092),
q(0),
],
q(jls) => [
- q(3062),
+ q(3093),
q(0),
],
q(jma) => [
- q(3063),
+ q(3094),
q(0),
],
q(jmb) => [
- q(3064),
+ q(3095),
q(0),
],
q(jmc) => [
- q(3065),
+ q(3096),
q(0),
],
q(jmd) => [
- q(3066),
+ q(3097),
q(0),
],
q(jmi) => [
- q(3067),
+ q(3098),
q(0),
],
q(jml) => [
- q(3068),
+ q(3099),
q(0),
],
q(jmn) => [
- q(3069),
+ q(3100),
q(0),
],
q(jmr) => [
- q(3070),
+ q(3101),
q(0),
],
q(jms) => [
- q(3071),
+ q(3102),
+ q(0),
+ ],
+ q(jmw) => [
+ q(3103),
q(0),
],
q(jmx) => [
- q(3072),
+ q(3104),
q(0),
],
q(jna) => [
- q(3073),
+ q(3105),
q(0),
],
q(jnd) => [
- q(3074),
+ q(3106),
q(0),
],
q(jng) => [
- q(3075),
+ q(3107),
q(0),
],
q(jni) => [
- q(3076),
+ q(3108),
q(0),
],
q(jnj) => [
- q(3077),
+ q(3109),
q(0),
],
q(jnl) => [
- q(3078),
+ q(3110),
q(0),
],
q(jns) => [
- q(3079),
+ q(3111),
q(0),
],
q(job) => [
- q(3080),
+ q(3112),
q(0),
],
q(jod) => [
- q(3081),
+ q(3113),
q(0),
],
q(jor) => [
- q(3082),
+ q(3114),
q(0),
],
q(jos) => [
- q(3083),
+ q(3115),
q(0),
],
q(jow) => [
- q(3084),
+ q(3116),
q(0),
],
q(jpa) => [
- q(3085),
+ q(3117),
q(0),
],
q(jpn) => [
@@ -67991,15 +68692,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(jpx) => [
- q(0513),
+ q(0514),
q(0),
],
q(jqr) => [
- q(3086),
+ q(3118),
q(0),
],
q(jra) => [
- q(3087),
+ q(3119),
q(0),
],
q(jrb) => [
@@ -68007,111 +68708,115 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(jrr) => [
- q(3088),
+ q(3120),
q(0),
],
q(jrt) => [
- q(3089),
+ q(3121),
q(0),
],
q(jru) => [
- q(3090),
+ q(3122),
q(0),
],
q(jsl) => [
- q(3091),
+ q(3123),
q(0),
],
q(jua) => [
- q(3092),
+ q(3124),
q(0),
],
q(jub) => [
- q(3093),
+ q(3125),
q(0),
],
q(juc) => [
- q(3094),
+ q(3126),
q(0),
],
q(jud) => [
- q(3095),
+ q(3127),
q(0),
],
q(juh) => [
- q(3096),
+ q(3128),
+ q(0),
+ ],
+ q(jui) => [
+ q(3129),
q(0),
],
q(juk) => [
- q(3097),
+ q(3130),
q(0),
],
q(jul) => [
- q(3098),
+ q(3131),
q(0),
],
q(jum) => [
- q(3099),
+ q(3132),
q(0),
],
q(jun) => [
- q(3100),
+ q(3133),
q(0),
],
q(juo) => [
- q(3101),
+ q(3134),
q(0),
],
q(jup) => [
- q(3102),
+ q(3135),
q(0),
],
q(jur) => [
- q(3103),
+ q(3136),
q(0),
],
q(jus) => [
- q(3104),
+ q(3137),
q(0),
],
q(jut) => [
- q(3105),
+ q(3138),
q(0),
],
q(juu) => [
- q(3106),
+ q(3139),
q(0),
],
q(juw) => [
- q(3107),
+ q(3140),
q(0),
],
q(juy) => [
- q(3108),
+ q(3141),
q(0),
],
q(jvd) => [
- q(3109),
+ q(3142),
q(0),
],
q(jvn) => [
- q(3110),
+ q(3143),
q(0),
],
q(jwi) => [
- q(3111),
+ q(3144),
q(0),
],
q(jya) => [
- q(3112),
+ q(3145),
q(0),
],
q(jye) => [
- q(3113),
+ q(3146),
q(0),
],
q(jyy) => [
- q(3114),
+ q(3147),
q(0),
],
q(kaa) => [
@@ -68127,35 +68832,35 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kad) => [
- q(3115),
+ q(3148),
q(0),
],
q(kae) => [
- q(3116),
+ q(3149),
q(0),
],
q(kaf) => [
- q(3117),
+ q(3150),
q(0),
],
q(kag) => [
- q(3118),
+ q(3151),
q(0),
],
q(kah) => [
- q(3119),
+ q(3152),
q(0),
],
q(kai) => [
- q(3120),
+ q(3153),
q(0),
],
q(kaj) => [
- q(3121),
+ q(3154),
q(0),
],
q(kak) => [
- q(3122),
+ q(3155),
q(0),
],
q(kal) => [
@@ -68171,15 +68876,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kao) => [
- q(3123),
+ q(3156),
q(0),
],
q(kap) => [
- q(3124),
+ q(3157),
q(0),
],
q(kaq) => [
- q(3125),
+ q(3158),
q(0),
],
q(kar) => [
@@ -68195,7 +68900,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kav) => [
- q(3126),
+ q(3159),
q(0),
],
q(kaw) => [
@@ -68203,11 +68908,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kax) => [
- q(3127),
+ q(3160),
q(0),
],
q(kay) => [
- q(3128),
+ q(3161),
q(0),
],
q(kaz) => [
@@ -68215,15 +68920,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kba) => [
- q(3129),
+ q(3162),
q(0),
],
q(kbb) => [
- q(3130),
+ q(3163),
q(0),
],
q(kbc) => [
- q(3131),
+ q(3164),
q(0),
],
q(kbd) => [
@@ -68231,599 +68936,591 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kbe) => [
- q(3132),
+ q(3165),
q(0),
],
q(kbf) => [
- q(3133),
+ q(3166),
q(0),
],
q(kbg) => [
- q(3134),
+ q(3167),
q(0),
],
q(kbh) => [
- q(3135),
+ q(3168),
q(0),
],
q(kbi) => [
- q(3136),
+ q(3169),
q(0),
],
q(kbj) => [
- q(3137),
+ q(3170),
q(0),
],
q(kbk) => [
- q(3138),
+ q(3171),
q(0),
],
q(kbl) => [
- q(3139),
+ q(3172),
q(0),
],
q(kbm) => [
- q(3140),
+ q(3173),
q(0),
],
q(kbn) => [
- q(3141),
+ q(3174),
q(0),
],
q(kbo) => [
- q(3142),
+ q(3175),
q(0),
],
q(kbp) => [
- q(3143),
+ q(3176),
q(0),
],
q(kbq) => [
- q(3144),
+ q(3177),
q(0),
],
q(kbr) => [
- q(3145),
+ q(3178),
q(0),
],
q(kbs) => [
- q(3146),
+ q(3179),
q(0),
],
q(kbt) => [
- q(3147),
+ q(3180),
q(0),
],
q(kbu) => [
- q(3148),
+ q(3181),
q(0),
],
q(kbv) => [
- q(3149),
+ q(3182),
q(0),
],
q(kbw) => [
- q(3150),
+ q(3183),
q(0),
],
q(kbx) => [
- q(3151),
+ q(3184),
q(0),
],
q(kby) => [
- q(3152),
+ q(3185),
q(0),
],
q(kbz) => [
- q(3153),
+ q(3186),
q(0),
],
q(kca) => [
- q(3154),
+ q(3187),
q(0),
],
q(kcb) => [
- q(3155),
+ q(3188),
q(0),
],
q(kcc) => [
- q(3156),
+ q(3189),
q(0),
],
q(kcd) => [
- q(3157),
+ q(3190),
q(0),
],
q(kce) => [
- q(3158),
+ q(3191),
q(0),
],
q(kcf) => [
- q(3159),
+ q(3192),
q(0),
],
q(kcg) => [
- q(3160),
+ q(3193),
q(0),
],
q(kch) => [
- q(3161),
+ q(3194),
q(0),
],
q(kci) => [
- q(3162),
+ q(3195),
q(0),
],
q(kcj) => [
- q(3163),
+ q(3196),
q(0),
],
q(kck) => [
- q(3164),
+ q(3197),
q(0),
],
q(kcl) => [
- q(3165),
+ q(3198),
q(0),
],
q(kcm) => [
- q(3166),
+ q(3199),
q(0),
],
q(kcn) => [
- q(3167),
+ q(3200),
q(0),
],
q(kco) => [
- q(3168),
+ q(3201),
q(0),
],
q(kcp) => [
- q(3169),
+ q(3202),
q(0),
],
q(kcq) => [
- q(3170),
+ q(3203),
q(0),
],
q(kcr) => [
- q(3171),
+ q(3204),
q(0),
],
q(kcs) => [
- q(3172),
+ q(3205),
q(0),
],
q(kct) => [
- q(3173),
+ q(3206),
q(0),
],
q(kcu) => [
- q(3174),
+ q(3207),
q(0),
],
q(kcv) => [
- q(3175),
+ q(3208),
q(0),
],
q(kcw) => [
- q(3176),
+ q(3209),
q(0),
],
q(kcx) => [
- q(3177),
+ q(3210),
q(0),
],
q(kcy) => [
- q(3178),
+ q(3211),
q(0),
],
q(kcz) => [
- q(3179),
+ q(3212),
q(0),
],
q(kda) => [
- q(3180),
+ q(3213),
q(0),
],
q(kdc) => [
- q(3181),
+ q(3214),
q(0),
],
q(kdd) => [
- q(3182),
+ q(3215),
q(0),
],
q(kde) => [
- q(3183),
+ q(3216),
q(0),
],
q(kdf) => [
- q(3184),
+ q(3217),
q(0),
],
q(kdg) => [
- q(3185),
+ q(3218),
q(0),
],
q(kdh) => [
- q(3186),
+ q(3219),
q(0),
],
q(kdi) => [
- q(3187),
+ q(3220),
q(0),
],
q(kdj) => [
- q(3188),
+ q(3221),
q(0),
],
q(kdk) => [
- q(3189),
+ q(3222),
q(0),
],
q(kdl) => [
- q(3190),
+ q(3223),
q(0),
],
q(kdm) => [
- q(3191),
+ q(3224),
q(0),
],
q(kdn) => [
- q(3192),
+ q(3225),
q(0),
],
q(kdo) => [
- q(0514),
+ q(0515),
q(0),
],
q(kdp) => [
- q(3193),
+ q(3226),
q(0),
],
q(kdq) => [
- q(3194),
+ q(3227),
q(0),
],
q(kdr) => [
- q(3195),
+ q(3228),
q(0),
],
q(kdt) => [
- q(3196),
+ q(3229),
q(0),
],
q(kdu) => [
- q(3197),
- q(0),
- ],
- q(kdv) => [
- q(3198),
+ q(3230),
q(0),
],
q(kdw) => [
- q(3199),
+ q(3231),
q(0),
],
q(kdx) => [
- q(3200),
+ q(3232),
q(0),
],
q(kdy) => [
- q(3201),
+ q(3233),
q(0),
],
q(kdz) => [
- q(3202),
+ q(3234),
q(0),
],
q(kea) => [
- q(3203),
+ q(3235),
q(0),
],
q(keb) => [
- q(3204),
+ q(3236),
q(0),
],
q(kec) => [
- q(3205),
+ q(3237),
q(0),
],
q(ked) => [
- q(3206),
+ q(3238),
q(0),
],
q(kee) => [
- q(3207),
+ q(3239),
q(0),
],
q(kef) => [
- q(3208),
+ q(3240),
q(0),
],
q(keg) => [
- q(3209),
+ q(3241),
q(0),
],
q(keh) => [
- q(3210),
+ q(3242),
q(0),
],
q(kei) => [
- q(3211),
+ q(3243),
q(0),
],
q(kej) => [
- q(3212),
+ q(3244),
q(0),
],
q(kek) => [
- q(3213),
+ q(3245),
q(0),
],
q(kel) => [
- q(3214),
+ q(3246),
q(0),
],
q(kem) => [
- q(3215),
+ q(3247),
q(0),
],
q(ken) => [
- q(3216),
+ q(3248),
q(0),
],
q(keo) => [
- q(3217),
+ q(3249),
q(0),
],
q(kep) => [
- q(3218),
+ q(3250),
q(0),
],
q(keq) => [
- q(3219),
+ q(3251),
q(0),
],
q(ker) => [
- q(3220),
+ q(3252),
q(0),
],
q(kes) => [
- q(3221),
+ q(3253),
q(0),
],
q(ket) => [
- q(3222),
+ q(3254),
q(0),
],
q(keu) => [
- q(3223),
+ q(3255),
q(0),
],
q(kev) => [
- q(3224),
+ q(3256),
q(0),
],
q(kew) => [
- q(3225),
+ q(3257),
q(0),
],
q(kex) => [
- q(3226),
+ q(3258),
q(0),
],
q(key) => [
- q(3227),
+ q(3259),
q(0),
],
q(kez) => [
- q(3228),
+ q(3260),
q(0),
],
q(kfa) => [
- q(3229),
+ q(3261),
q(0),
],
q(kfb) => [
- q(3230),
+ q(3262),
q(0),
],
q(kfc) => [
- q(3231),
+ q(3263),
q(0),
],
q(kfd) => [
- q(3232),
+ q(3264),
q(0),
],
q(kfe) => [
- q(3233),
+ q(3265),
q(0),
],
q(kff) => [
- q(3234),
+ q(3266),
q(0),
],
q(kfg) => [
- q(3235),
+ q(3267),
q(0),
],
q(kfh) => [
- q(3236),
+ q(3268),
q(0),
],
q(kfi) => [
- q(3237),
+ q(3269),
q(0),
],
q(kfj) => [
- q(3238),
+ q(3270),
q(0),
],
q(kfk) => [
- q(3239),
+ q(3271),
q(0),
],
q(kfl) => [
- q(3240),
+ q(3272),
q(0),
],
q(kfm) => [
- q(3241),
+ q(3273),
q(0),
],
q(kfn) => [
- q(3242),
+ q(3274),
q(0),
],
q(kfo) => [
- q(3243),
+ q(3275),
q(0),
],
q(kfp) => [
- q(3244),
+ q(3276),
q(0),
],
q(kfq) => [
- q(3245),
+ q(3277),
q(0),
],
q(kfr) => [
- q(3246),
+ q(3278),
q(0),
],
q(kfs) => [
- q(3247),
+ q(3279),
q(0),
],
q(kft) => [
- q(3248),
+ q(3280),
q(0),
],
q(kfu) => [
- q(3249),
+ q(3281),
q(0),
],
q(kfv) => [
- q(3250),
+ q(3282),
q(0),
],
q(kfw) => [
- q(3251),
+ q(3283),
q(0),
],
q(kfx) => [
- q(3252),
+ q(3284),
q(0),
],
q(kfy) => [
- q(3253),
+ q(3285),
q(0),
],
q(kfz) => [
- q(3254),
+ q(3286),
q(0),
],
q(kga) => [
- q(3255),
+ q(3287),
q(0),
],
q(kgb) => [
- q(3256),
+ q(3288),
q(0),
],
q(kgc) => [
- q(3257),
+ q(3289),
q(0),
],
q(kgd) => [
- q(3258),
+ q(3290),
q(0),
],
q(kge) => [
- q(3259),
+ q(3291),
q(0),
],
q(kgf) => [
- q(3260),
+ q(3292),
q(0),
],
q(kgg) => [
- q(3261),
- q(0),
- ],
- q(kgh) => [
- q(3262),
+ q(3293),
q(0),
],
q(kgi) => [
- q(3263),
+ q(3294),
q(0),
],
q(kgj) => [
- q(3264),
+ q(3295),
q(0),
],
q(kgk) => [
- q(3265),
+ q(3296),
q(0),
],
q(kgl) => [
- q(3266),
+ q(3297),
q(0),
],
q(kgm) => [
- q(3267),
+ q(3298),
q(0),
],
q(kgn) => [
- q(3268),
+ q(3299),
q(0),
],
q(kgo) => [
- q(3269),
+ q(3300),
q(0),
],
q(kgp) => [
- q(3270),
+ q(3301),
q(0),
],
q(kgq) => [
- q(3271),
+ q(3302),
q(0),
],
q(kgr) => [
- q(3272),
+ q(3303),
q(0),
],
q(kgs) => [
- q(3273),
+ q(3304),
q(0),
],
q(kgt) => [
- q(3274),
+ q(3305),
q(0),
],
q(kgu) => [
- q(3275),
+ q(3306),
q(0),
],
q(kgv) => [
- q(3276),
+ q(3307),
q(0),
],
q(kgw) => [
- q(3277),
+ q(3308),
q(0),
],
q(kgx) => [
- q(3278),
+ q(3309),
q(0),
],
q(kgy) => [
- q(3279),
+ q(3310),
q(0),
],
q(kha) => [
@@ -68831,31 +69528,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(khb) => [
- q(3280),
+ q(3311),
q(0),
],
q(khc) => [
- q(3281),
+ q(3312),
q(0),
],
q(khd) => [
- q(3282),
+ q(3313),
q(0),
],
q(khe) => [
- q(3283),
+ q(3314),
q(0),
],
q(khf) => [
- q(3284),
+ q(3315),
q(0),
],
q(khg) => [
- q(3285),
+ q(3316),
q(0),
],
q(khh) => [
- q(3286),
+ q(3317),
q(0),
],
q(khi) => [
@@ -68863,15 +69560,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(khj) => [
- q(3287),
+ q(3318),
q(0),
],
q(khk) => [
- q(3288),
+ q(3319),
q(0),
],
q(khl) => [
- q(3289),
+ q(3320),
q(0),
],
q(khm) => [
@@ -68879,7 +69576,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(khn) => [
- q(3290),
+ q(3321),
q(0),
],
q(kho) => [
@@ -68887,87 +69584,87 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(khp) => [
- q(3291),
+ q(3322),
q(0),
],
q(khq) => [
- q(3292),
+ q(3323),
q(0),
],
q(khr) => [
- q(3293),
+ q(3324),
q(0),
],
q(khs) => [
- q(3294),
+ q(3325),
q(0),
],
q(kht) => [
- q(3295),
+ q(3326),
q(0),
],
q(khu) => [
- q(3296),
+ q(3327),
q(0),
],
q(khv) => [
- q(3297),
+ q(3328),
q(0),
],
q(khw) => [
- q(3298),
+ q(3329),
q(0),
],
q(khx) => [
- q(3299),
+ q(3330),
q(0),
],
q(khy) => [
- q(3300),
+ q(3331),
q(0),
],
q(khz) => [
- q(3301),
+ q(3332),
q(0),
],
q(kia) => [
- q(3302),
+ q(3333),
q(0),
],
q(kib) => [
- q(3303),
+ q(3334),
q(0),
],
q(kic) => [
- q(3304),
+ q(3335),
q(0),
],
q(kid) => [
- q(3305),
+ q(3336),
q(0),
],
q(kie) => [
- q(3306),
+ q(3337),
q(0),
],
q(kif) => [
- q(3307),
+ q(3338),
q(0),
],
q(kig) => [
- q(3308),
+ q(3339),
q(0),
],
q(kih) => [
- q(3309),
+ q(3340),
q(0),
],
q(kii) => [
- q(3310),
+ q(3341),
q(0),
],
q(kij) => [
- q(3311),
+ q(3342),
q(0),
],
q(kik) => [
@@ -68975,11 +69672,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kil) => [
- q(3312),
+ q(3343),
q(0),
],
q(kim) => [
- q(3313),
+ q(3344),
q(0),
],
q(kin) => [
@@ -68987,15 +69684,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kio) => [
- q(3314),
+ q(3345),
q(0),
],
q(kip) => [
- q(3315),
+ q(3346),
q(0),
],
q(kiq) => [
- q(3316),
+ q(3347),
q(0),
],
q(kir) => [
@@ -69003,343 +69700,343 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kis) => [
- q(3317),
+ q(3348),
q(0),
],
q(kit) => [
- q(3318),
+ q(3349),
q(0),
],
q(kiu) => [
- q(3319),
+ q(3350),
q(0),
],
q(kiv) => [
- q(3320),
+ q(3351),
q(0),
],
q(kiw) => [
- q(3321),
+ q(3352),
q(0),
],
q(kix) => [
- q(3322),
+ q(3353),
q(0),
],
q(kiy) => [
- q(3323),
+ q(3354),
q(0),
],
q(kiz) => [
- q(3324),
+ q(3355),
q(0),
],
q(kja) => [
- q(3325),
+ q(3356),
q(0),
],
q(kjb) => [
- q(3326),
+ q(3357),
q(0),
],
q(kjc) => [
- q(3327),
+ q(3358),
q(0),
],
q(kjd) => [
- q(3328),
+ q(3359),
q(0),
],
q(kje) => [
- q(3329),
+ q(3360),
q(0),
],
q(kjf) => [
- q(3330),
+ q(3361),
q(0),
],
q(kjg) => [
- q(3331),
+ q(3362),
q(0),
],
q(kjh) => [
- q(3332),
+ q(3363),
q(0),
],
q(kji) => [
- q(3333),
+ q(3364),
q(0),
],
q(kjj) => [
- q(3334),
+ q(3365),
q(0),
],
q(kjk) => [
- q(3335),
+ q(3366),
q(0),
],
q(kjl) => [
- q(3336),
+ q(3367),
q(0),
],
q(kjm) => [
- q(3337),
+ q(3368),
q(0),
],
q(kjn) => [
- q(3338),
+ q(3369),
q(0),
],
q(kjo) => [
- q(3339),
+ q(3370),
q(0),
],
q(kjp) => [
- q(3340),
+ q(3371),
q(0),
],
q(kjq) => [
- q(3341),
+ q(3372),
q(0),
],
q(kjr) => [
- q(3342),
+ q(3373),
q(0),
],
q(kjs) => [
- q(3343),
+ q(3374),
q(0),
],
q(kjt) => [
- q(3344),
+ q(3375),
q(0),
],
q(kju) => [
- q(3345),
+ q(3376),
q(0),
],
q(kjx) => [
- q(3346),
+ q(3377),
q(0),
],
q(kjy) => [
- q(3347),
+ q(3378),
q(0),
],
q(kjz) => [
- q(3348),
+ q(3379),
q(0),
],
q(kka) => [
- q(3349),
+ q(3380),
q(0),
],
q(kkb) => [
- q(3350),
+ q(3381),
q(0),
],
q(kkc) => [
- q(3351),
+ q(3382),
q(0),
],
q(kkd) => [
- q(3352),
+ q(3383),
q(0),
],
q(kke) => [
- q(3353),
+ q(3384),
q(0),
],
q(kkf) => [
- q(3354),
+ q(3385),
q(0),
],
q(kkg) => [
- q(3355),
+ q(3386),
q(0),
],
q(kkh) => [
- q(3356),
+ q(3387),
q(0),
],
q(kki) => [
- q(3357),
+ q(3388),
q(0),
],
q(kkj) => [
- q(3358),
+ q(3389),
q(0),
],
q(kkk) => [
- q(3359),
+ q(3390),
q(0),
],
q(kkl) => [
- q(3360),
+ q(3391),
q(0),
],
q(kkm) => [
- q(3361),
+ q(3392),
q(0),
],
q(kkn) => [
- q(3362),
+ q(3393),
q(0),
],
q(kko) => [
- q(3363),
+ q(3394),
q(0),
],
q(kkp) => [
- q(3364),
+ q(3395),
q(0),
],
q(kkq) => [
- q(3365),
+ q(3396),
q(0),
],
q(kkr) => [
- q(3366),
+ q(3397),
q(0),
],
q(kks) => [
- q(3367),
+ q(3398),
q(0),
],
q(kkt) => [
- q(3368),
+ q(3399),
q(0),
],
q(kku) => [
- q(3369),
+ q(3400),
q(0),
],
q(kkv) => [
- q(3370),
+ q(3401),
q(0),
],
q(kkw) => [
- q(3371),
+ q(3402),
q(0),
],
q(kkx) => [
- q(3372),
+ q(3403),
q(0),
],
q(kky) => [
- q(3373),
+ q(3404),
q(0),
],
q(kkz) => [
- q(3374),
+ q(3405),
q(0),
],
q(kla) => [
- q(3375),
+ q(3406),
q(0),
],
q(klb) => [
- q(3376),
+ q(3407),
q(0),
],
q(klc) => [
- q(3377),
+ q(3408),
q(0),
],
q(kld) => [
- q(3378),
+ q(3409),
q(0),
],
q(kle) => [
- q(3379),
+ q(3410),
q(0),
],
q(klf) => [
- q(3380),
+ q(3411),
q(0),
],
q(klg) => [
- q(3381),
+ q(3412),
q(0),
],
q(klh) => [
- q(3382),
+ q(3413),
q(0),
],
q(kli) => [
- q(3383),
+ q(3414),
q(0),
],
q(klj) => [
- q(3384),
+ q(3415),
q(0),
],
q(klk) => [
- q(3385),
+ q(3416),
q(0),
],
q(kll) => [
- q(3386),
+ q(3417),
q(0),
],
q(klm) => [
- q(3387),
+ q(3418),
q(0),
],
q(kln) => [
- q(3388),
+ q(3419),
q(0),
],
q(klo) => [
- q(3389),
+ q(3420),
q(0),
],
q(klp) => [
- q(3390),
+ q(3421),
q(0),
],
q(klq) => [
- q(3391),
+ q(3422),
q(0),
],
q(klr) => [
- q(3392),
+ q(3423),
q(0),
],
q(kls) => [
- q(3393),
+ q(3424),
q(0),
],
q(klt) => [
- q(3394),
+ q(3425),
q(0),
],
q(klu) => [
- q(3395),
+ q(3426),
q(0),
],
q(klv) => [
- q(3396),
+ q(3427),
q(0),
],
q(klw) => [
- q(3397),
+ q(3428),
q(0),
],
q(klx) => [
- q(3398),
+ q(3429),
q(0),
],
q(kly) => [
- q(3399),
+ q(3430),
q(0),
],
q(klz) => [
- q(3400),
+ q(3431),
q(0),
],
q(kma) => [
- q(3401),
+ q(3432),
q(0),
],
q(kmb) => [
@@ -69347,235 +70044,235 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kmc) => [
- q(3402),
+ q(3433),
q(0),
],
q(kmd) => [
- q(3403),
+ q(3434),
q(0),
],
q(kme) => [
- q(3404),
+ q(3435),
q(0),
],
q(kmf) => [
- q(3405),
+ q(3436),
q(0),
],
q(kmg) => [
- q(3406),
+ q(3437),
q(0),
],
q(kmh) => [
- q(3407),
+ q(3438),
q(0),
],
q(kmi) => [
- q(3408),
+ q(3439),
q(0),
],
q(kmj) => [
- q(3409),
+ q(3440),
q(0),
],
q(kmk) => [
- q(3410),
+ q(3441),
q(0),
],
q(kml) => [
- q(3411),
+ q(3442),
q(0),
],
q(kmm) => [
- q(3412),
+ q(3443),
q(0),
],
q(kmn) => [
- q(3413),
+ q(3444),
q(0),
],
q(kmo) => [
- q(3414),
+ q(3445),
q(0),
],
q(kmp) => [
- q(3415),
+ q(3446),
q(0),
],
q(kmq) => [
- q(3416),
+ q(3447),
q(0),
],
q(kmr) => [
- q(3417),
+ q(3448),
q(0),
],
q(kms) => [
- q(3418),
+ q(3449),
q(0),
],
q(kmt) => [
- q(3419),
+ q(3450),
q(0),
],
q(kmu) => [
- q(3420),
+ q(3451),
q(0),
],
q(kmv) => [
- q(3421),
+ q(3452),
q(0),
],
q(kmw) => [
- q(3422),
+ q(3453),
q(0),
],
q(kmx) => [
- q(3423),
+ q(3454),
q(0),
],
q(kmy) => [
- q(3424),
+ q(3455),
q(0),
],
q(kmz) => [
- q(3425),
+ q(3456),
q(0),
],
q(kna) => [
- q(3426),
+ q(3457),
q(0),
],
q(knb) => [
- q(3427),
+ q(3458),
q(0),
],
q(knc) => [
- q(3428),
+ q(3459),
q(0),
],
q(knd) => [
- q(3429),
+ q(3460),
q(0),
],
q(kne) => [
- q(3430),
+ q(3461),
q(0),
],
q(knf) => [
- q(3431),
+ q(3462),
q(0),
],
q(kng) => [
- q(3432),
+ q(3463),
q(0),
],
q(kni) => [
- q(3433),
+ q(3464),
q(0),
],
q(knj) => [
- q(3434),
+ q(3465),
q(0),
],
q(knk) => [
- q(3435),
+ q(3466),
q(0),
],
q(knl) => [
- q(3436),
+ q(3467),
q(0),
],
q(knm) => [
- q(3437),
+ q(3468),
q(0),
],
q(knn) => [
- q(3438),
+ q(3469),
q(0),
],
q(kno) => [
- q(3439),
+ q(3470),
q(0),
],
q(knp) => [
- q(3440),
+ q(3471),
q(0),
],
q(knq) => [
- q(3441),
+ q(3472),
q(0),
],
q(knr) => [
- q(3442),
+ q(3473),
q(0),
],
q(kns) => [
- q(3443),
+ q(3474),
q(0),
],
q(knt) => [
- q(3444),
+ q(3475),
q(0),
],
q(knu) => [
- q(3445),
+ q(3476),
q(0),
],
q(knv) => [
- q(3446),
+ q(3477),
q(0),
],
q(knw) => [
- q(3447),
+ q(3478),
q(0),
],
q(knx) => [
- q(3448),
+ q(3479),
q(0),
],
q(kny) => [
- q(3449),
+ q(3480),
q(0),
],
q(knz) => [
- q(3450),
+ q(3481),
q(0),
],
q(koa) => [
- q(3451),
+ q(3482),
q(0),
],
q(koc) => [
- q(3452),
+ q(3483),
q(0),
],
q(kod) => [
- q(3453),
+ q(3484),
q(0),
],
q(koe) => [
- q(3454),
+ q(3485),
q(0),
],
q(kof) => [
- q(3455),
+ q(3486),
q(0),
],
q(kog) => [
- q(3456),
+ q(3487),
q(0),
],
q(koh) => [
- q(3457),
+ q(3488),
q(0),
],
q(koi) => [
- q(3458),
+ q(3489),
q(0),
],
q(koj) => [
- q(3459),
+ q(3490),
q(0),
],
q(kok) => [
@@ -69583,7 +70280,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(kol) => [
- q(3460),
+ q(3491),
q(0),
],
q(kom) => [
@@ -69595,15 +70292,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(koo) => [
- q(3461),
+ q(3492),
q(0),
],
q(kop) => [
- q(3462),
+ q(3493),
q(0),
],
q(koq) => [
- q(3463),
+ q(3494),
q(0),
],
q(kor) => [
@@ -69615,47 +70312,47 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kot) => [
- q(3464),
+ q(3495),
q(0),
],
q(kou) => [
- q(3465),
+ q(3496),
q(0),
],
q(kov) => [
- q(3466),
+ q(3497),
q(0),
],
q(kow) => [
- q(3467),
+ q(3498),
q(0),
],
q(kox) => [
- q(3468),
+ q(3499),
q(0),
],
q(koy) => [
- q(3469),
+ q(3500),
q(0),
],
q(koz) => [
- q(3470),
+ q(3501),
q(0),
],
q(kpa) => [
- q(3471),
+ q(3502),
q(0),
],
q(kpb) => [
- q(3472),
+ q(3503),
q(0),
],
q(kpc) => [
- q(3473),
+ q(3504),
q(0),
],
q(kpd) => [
- q(3474),
+ q(3505),
q(0),
],
q(kpe) => [
@@ -69663,199 +70360,195 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kpf) => [
- q(3475),
+ q(3506),
q(0),
],
q(kpg) => [
- q(3476),
+ q(3507),
q(0),
],
q(kph) => [
- q(3477),
+ q(3508),
q(0),
],
q(kpi) => [
- q(3478),
+ q(3509),
q(0),
],
q(kpj) => [
- q(3479),
+ q(3510),
q(0),
],
q(kpk) => [
- q(3480),
+ q(3511),
q(0),
],
q(kpl) => [
- q(3481),
+ q(3512),
q(0),
],
q(kpm) => [
- q(3482),
+ q(3513),
q(0),
],
q(kpn) => [
- q(3483),
+ q(3514),
q(0),
],
q(kpo) => [
- q(3484),
- q(0),
- ],
- q(kpp) => [
- q(3485),
+ q(3515),
q(0),
],
q(kpq) => [
- q(3486),
+ q(3516),
q(0),
],
q(kpr) => [
- q(3487),
+ q(3517),
q(0),
],
q(kps) => [
- q(3488),
+ q(3518),
q(0),
],
q(kpt) => [
- q(3489),
+ q(3519),
q(0),
],
q(kpu) => [
- q(3490),
+ q(3520),
q(0),
],
q(kpv) => [
- q(3491),
+ q(3521),
q(0),
],
q(kpw) => [
- q(3492),
+ q(3522),
q(0),
],
q(kpx) => [
- q(3493),
+ q(3523),
q(0),
],
q(kpy) => [
- q(3494),
+ q(3524),
q(0),
],
q(kpz) => [
- q(3495),
+ q(3525),
q(0),
],
q(kqa) => [
- q(3496),
+ q(3526),
q(0),
],
q(kqb) => [
- q(3497),
+ q(3527),
q(0),
],
q(kqc) => [
- q(3498),
+ q(3528),
q(0),
],
q(kqd) => [
- q(3499),
+ q(3529),
q(0),
],
q(kqe) => [
- q(3500),
+ q(3530),
q(0),
],
q(kqf) => [
- q(3501),
+ q(3531),
q(0),
],
q(kqg) => [
- q(3502),
+ q(3532),
q(0),
],
q(kqh) => [
- q(3503),
+ q(3533),
q(0),
],
q(kqi) => [
- q(3504),
+ q(3534),
q(0),
],
q(kqj) => [
- q(3505),
+ q(3535),
q(0),
],
q(kqk) => [
- q(3506),
+ q(3536),
q(0),
],
q(kql) => [
- q(3507),
+ q(3537),
q(0),
],
q(kqm) => [
- q(3508),
+ q(3538),
q(0),
],
q(kqn) => [
- q(3509),
+ q(3539),
q(0),
],
q(kqo) => [
- q(3510),
+ q(3540),
q(0),
],
q(kqp) => [
- q(3511),
+ q(3541),
q(0),
],
q(kqq) => [
- q(3512),
+ q(3542),
q(0),
],
q(kqr) => [
- q(3513),
+ q(3543),
q(0),
],
q(kqs) => [
- q(3514),
+ q(3544),
q(0),
],
q(kqt) => [
- q(3515),
+ q(3545),
q(0),
],
q(kqu) => [
- q(3516),
+ q(3546),
q(0),
],
q(kqv) => [
- q(3517),
+ q(3547),
q(0),
],
q(kqw) => [
- q(3518),
+ q(3548),
q(0),
],
q(kqx) => [
- q(3519),
+ q(3549),
q(0),
],
q(kqy) => [
- q(3520),
+ q(3550),
q(0),
],
q(kqz) => [
- q(3521),
+ q(3551),
q(0),
],
q(kra) => [
- q(3522),
+ q(3552),
q(0),
],
q(krb) => [
- q(3523),
+ q(3553),
q(0),
],
q(krc) => [
@@ -69863,31 +70556,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(krd) => [
- q(3524),
+ q(3554),
q(0),
],
q(kre) => [
- q(3525),
+ q(3555),
q(0),
],
q(krf) => [
- q(3526),
+ q(3556),
q(0),
],
q(krh) => [
- q(3527),
+ q(3557),
q(0),
],
q(kri) => [
- q(3528),
+ q(3558),
q(0),
],
q(krj) => [
- q(3529),
+ q(3559),
q(0),
],
q(krk) => [
- q(3530),
+ q(3560),
q(0),
],
q(krl) => [
@@ -69895,11 +70588,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(krm) => [
- q(3531),
+ q(3561),
q(0),
],
q(krn) => [
- q(3532),
+ q(3562),
q(0),
],
q(kro) => [
@@ -69907,19 +70600,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(krp) => [
- q(3533),
+ q(3563),
q(0),
],
q(krr) => [
- q(3534),
+ q(3564),
q(0),
],
q(krs) => [
- q(3535),
+ q(3565),
q(0),
],
q(krt) => [
- q(3536),
+ q(3566),
q(0),
],
q(kru) => [
@@ -69927,231 +70620,231 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(krv) => [
- q(3537),
+ q(3567),
q(0),
],
q(krw) => [
- q(3538),
+ q(3568),
q(0),
],
q(krx) => [
- q(3539),
+ q(3569),
q(0),
],
q(kry) => [
- q(3540),
+ q(3570),
q(0),
],
q(krz) => [
- q(3541),
+ q(3571),
q(0),
],
q(ksa) => [
- q(3542),
+ q(3572),
q(0),
],
q(ksb) => [
- q(3543),
+ q(3573),
q(0),
],
q(ksc) => [
- q(3544),
+ q(3574),
q(0),
],
q(ksd) => [
- q(3545),
+ q(3575),
q(0),
],
q(kse) => [
- q(3546),
+ q(3576),
q(0),
],
q(ksf) => [
- q(3547),
+ q(3577),
q(0),
],
q(ksg) => [
- q(3548),
+ q(3578),
q(0),
],
q(ksh) => [
- q(3549),
+ q(3579),
q(0),
],
q(ksi) => [
- q(3550),
+ q(3580),
q(0),
],
q(ksj) => [
- q(3551),
+ q(3581),
q(0),
],
q(ksk) => [
- q(3552),
+ q(3582),
q(0),
],
q(ksl) => [
- q(3553),
+ q(3583),
q(0),
],
q(ksm) => [
- q(3554),
+ q(3584),
q(0),
],
q(ksn) => [
- q(3555),
+ q(3585),
q(0),
],
q(kso) => [
- q(3556),
+ q(3586),
q(0),
],
q(ksp) => [
- q(3557),
+ q(3587),
q(0),
],
q(ksq) => [
- q(3558),
+ q(3588),
q(0),
],
q(ksr) => [
- q(3559),
+ q(3589),
q(0),
],
q(kss) => [
- q(3560),
+ q(3590),
q(0),
],
q(kst) => [
- q(3561),
+ q(3591),
q(0),
],
q(ksu) => [
- q(3562),
+ q(3592),
q(0),
],
q(ksv) => [
- q(3563),
+ q(3593),
q(0),
],
q(ksw) => [
- q(3564),
+ q(3594),
q(0),
],
q(ksx) => [
- q(3565),
+ q(3595),
q(0),
],
q(ksy) => [
- q(3566),
+ q(3596),
q(0),
],
q(ksz) => [
- q(3567),
+ q(3597),
q(0),
],
q(kta) => [
- q(3568),
+ q(3598),
q(0),
],
q(ktb) => [
- q(3569),
+ q(3599),
q(0),
],
q(ktc) => [
- q(3570),
+ q(3600),
q(0),
],
q(ktd) => [
- q(3571),
+ q(3601),
q(0),
],
q(kte) => [
- q(3572),
+ q(3602),
q(0),
],
q(ktf) => [
- q(3573),
+ q(3603),
q(0),
],
q(ktg) => [
- q(3574),
+ q(3604),
q(0),
],
q(kth) => [
- q(3575),
+ q(3605),
q(0),
],
q(kti) => [
- q(3576),
+ q(3606),
q(0),
],
q(ktj) => [
- q(3577),
+ q(3607),
q(0),
],
q(ktk) => [
- q(3578),
+ q(3608),
q(0),
],
q(ktl) => [
- q(3579),
+ q(3609),
q(0),
],
q(ktm) => [
- q(3580),
+ q(3610),
q(0),
],
q(ktn) => [
- q(3581),
+ q(3611),
q(0),
],
q(kto) => [
- q(3582),
+ q(3612),
q(0),
],
q(ktp) => [
- q(3583),
+ q(3613),
q(0),
],
q(ktq) => [
- q(3584),
+ q(3614),
q(0),
],
q(ktr) => [
- q(3585),
+ q(3615),
q(0),
],
q(kts) => [
- q(3586),
+ q(3616),
q(0),
],
q(ktt) => [
- q(3587),
+ q(3617),
q(0),
],
q(ktu) => [
- q(3588),
+ q(3618),
q(0),
],
q(ktv) => [
- q(3589),
+ q(3619),
q(0),
],
q(ktw) => [
- q(3590),
+ q(3620),
q(0),
],
q(ktx) => [
- q(3591),
+ q(3621),
q(0),
],
q(kty) => [
- q(3592),
+ q(3622),
q(0),
],
q(ktz) => [
- q(3593),
+ q(3623),
q(0),
],
q(kua) => [
@@ -70159,47 +70852,47 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kub) => [
- q(3594),
+ q(3624),
q(0),
],
q(kuc) => [
- q(3595),
+ q(3625),
q(0),
],
q(kud) => [
- q(3596),
+ q(3626),
q(0),
],
q(kue) => [
- q(3597),
+ q(3627),
q(0),
],
q(kuf) => [
- q(3598),
+ q(3628),
q(0),
],
q(kug) => [
- q(3599),
+ q(3629),
q(0),
],
q(kuh) => [
- q(3600),
+ q(3630),
q(0),
],
q(kui) => [
- q(3601),
+ q(3631),
q(0),
],
q(kuj) => [
- q(3602),
+ q(3632),
q(0),
],
q(kuk) => [
- q(3603),
+ q(3633),
q(0),
],
q(kul) => [
- q(3604),
+ q(3634),
q(0),
],
q(kum) => [
@@ -70207,19 +70900,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kun) => [
- q(3605),
+ q(3635),
q(0),
],
q(kuo) => [
- q(3606),
+ q(3636),
q(0),
],
q(kup) => [
- q(3607),
+ q(3637),
q(0),
],
q(kuq) => [
- q(3267),
+ q(3298),
q(0),
],
q(kur) => [
@@ -70227,7 +70920,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kus) => [
- q(3608),
+ q(3638),
q(0),
],
q(kut) => [
@@ -70235,555 +70928,551 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(kuu) => [
- q(3609),
+ q(3639),
q(0),
],
q(kuv) => [
- q(3610),
+ q(3640),
q(0),
],
q(kuw) => [
- q(3611),
+ q(3641),
q(0),
],
q(kux) => [
- q(3612),
+ q(3642),
q(0),
],
q(kuy) => [
- q(3613),
+ q(3643),
q(0),
],
q(kuz) => [
- q(3614),
+ q(3644),
q(0),
],
q(kva) => [
- q(3615),
+ q(3645),
q(0),
],
q(kvb) => [
- q(3616),
+ q(3646),
q(0),
],
q(kvc) => [
- q(3617),
+ q(3647),
q(0),
],
q(kvd) => [
- q(3618),
+ q(3648),
q(0),
],
q(kve) => [
- q(3619),
+ q(3649),
q(0),
],
q(kvf) => [
- q(3620),
+ q(3650),
q(0),
],
q(kvg) => [
- q(3621),
+ q(3651),
q(0),
],
q(kvh) => [
- q(3622),
+ q(3652),
q(0),
],
q(kvi) => [
- q(3623),
+ q(3653),
q(0),
],
q(kvj) => [
- q(3624),
+ q(3654),
q(0),
],
q(kvk) => [
- q(3625),
+ q(3655),
q(0),
],
q(kvl) => [
- q(3626),
+ q(3656),
q(0),
],
q(kvm) => [
- q(3627),
+ q(3657),
q(0),
],
q(kvn) => [
- q(3628),
+ q(3658),
q(0),
],
q(kvo) => [
- q(3629),
+ q(3659),
q(0),
],
q(kvp) => [
- q(3630),
+ q(3660),
q(0),
],
q(kvq) => [
- q(3631),
+ q(3661),
q(0),
],
q(kvr) => [
- q(3632),
+ q(3662),
q(0),
],
q(kvs) => [
- q(3633),
+ q(3663),
q(0),
],
q(kvt) => [
- q(3634),
+ q(3664),
q(0),
],
q(kvu) => [
- q(3635),
+ q(3665),
q(0),
],
q(kvv) => [
- q(3636),
+ q(3666),
q(0),
],
q(kvw) => [
- q(3637),
+ q(3667),
q(0),
],
q(kvx) => [
- q(3638),
+ q(3668),
q(0),
],
q(kvy) => [
- q(3639),
+ q(3669),
q(0),
],
q(kvz) => [
- q(3640),
+ q(3670),
q(0),
],
q(kwa) => [
- q(3641),
+ q(3671),
q(0),
],
q(kwb) => [
- q(3642),
+ q(3672),
q(0),
],
q(kwc) => [
- q(3643),
+ q(3673),
q(0),
],
q(kwd) => [
- q(3644),
+ q(3674),
q(0),
],
q(kwe) => [
- q(3645),
+ q(3675),
q(0),
],
q(kwf) => [
- q(3646),
+ q(3676),
q(0),
],
q(kwg) => [
- q(3647),
+ q(3677),
q(0),
],
q(kwh) => [
- q(3648),
+ q(3678),
q(0),
],
q(kwi) => [
- q(3649),
+ q(3679),
q(0),
],
q(kwj) => [
- q(3650),
+ q(3680),
q(0),
],
q(kwk) => [
- q(3651),
+ q(3681),
q(0),
],
q(kwl) => [
- q(3652),
+ q(3682),
q(0),
],
q(kwm) => [
- q(3653),
+ q(3683),
q(0),
],
q(kwn) => [
- q(3654),
+ q(3684),
q(0),
],
q(kwo) => [
- q(3655),
+ q(3685),
q(0),
],
q(kwp) => [
- q(3656),
+ q(3686),
q(0),
],
q(kwq) => [
- q(3657),
+ q(3687),
q(0),
],
q(kwr) => [
- q(3658),
+ q(3688),
q(0),
],
q(kws) => [
- q(3659),
+ q(3689),
q(0),
],
q(kwt) => [
- q(3660),
+ q(3690),
q(0),
],
q(kwu) => [
- q(3661),
+ q(3691),
q(0),
],
q(kwv) => [
- q(3662),
+ q(3692),
q(0),
],
q(kww) => [
- q(3663),
+ q(3693),
q(0),
],
q(kwx) => [
- q(3664),
+ q(3694),
q(0),
],
q(kwy) => [
- q(3665),
+ q(3695),
q(0),
],
q(kwz) => [
- q(3666),
+ q(3696),
q(0),
],
q(kxa) => [
- q(3667),
+ q(3697),
q(0),
],
q(kxb) => [
- q(3668),
+ q(3698),
q(0),
],
q(kxc) => [
- q(3669),
+ q(3699),
q(0),
],
q(kxd) => [
- q(3670),
+ q(3700),
q(0),
],
q(kxe) => [
- q(3671),
+ q(3701),
q(0),
],
q(kxf) => [
- q(3672),
+ q(3702),
q(0),
],
q(kxh) => [
- q(3673),
+ q(3703),
q(0),
],
q(kxi) => [
- q(3674),
+ q(3704),
q(0),
],
q(kxj) => [
- q(3675),
+ q(3705),
q(0),
],
q(kxk) => [
- q(3676),
+ q(3706),
q(0),
],
q(kxl) => [
- q(3677),
+ q(3707),
q(0),
],
q(kxm) => [
- q(3678),
+ q(3708),
q(0),
],
q(kxn) => [
- q(3679),
+ q(3709),
q(0),
],
q(kxo) => [
- q(3680),
+ q(3710),
q(0),
],
q(kxp) => [
- q(3681),
+ q(3711),
q(0),
],
q(kxq) => [
- q(3682),
+ q(3712),
q(0),
],
q(kxr) => [
- q(3683),
+ q(3713),
q(0),
],
q(kxs) => [
- q(3684),
+ q(3714),
q(0),
],
q(kxt) => [
- q(3685),
+ q(3715),
q(0),
],
q(kxu) => [
- q(3686),
+ q(3716),
q(0),
],
q(kxv) => [
- q(3687),
+ q(3717),
q(0),
],
q(kxw) => [
- q(3688),
+ q(3718),
q(0),
],
q(kxx) => [
- q(3689),
+ q(3719),
q(0),
],
q(kxy) => [
- q(3690),
+ q(3720),
q(0),
],
q(kxz) => [
- q(3691),
+ q(3721),
q(0),
],
q(kya) => [
- q(3692),
+ q(3722),
q(0),
],
q(kyb) => [
- q(3693),
+ q(3723),
q(0),
],
q(kyc) => [
- q(3694),
+ q(3724),
q(0),
],
q(kyd) => [
- q(3695),
+ q(3725),
q(0),
],
q(kye) => [
- q(3696),
+ q(3726),
q(0),
],
q(kyf) => [
- q(3697),
+ q(3727),
q(0),
],
q(kyg) => [
- q(3698),
+ q(3728),
q(0),
],
q(kyh) => [
- q(3699),
+ q(3729),
q(0),
],
q(kyi) => [
- q(3700),
+ q(3730),
q(0),
],
q(kyj) => [
- q(3701),
+ q(3731),
q(0),
],
q(kyk) => [
- q(3702),
+ q(3732),
q(0),
],
q(kyl) => [
- q(3703),
+ q(3733),
q(0),
],
q(kym) => [
- q(3704),
+ q(3734),
q(0),
],
q(kyn) => [
- q(3705),
+ q(3735),
q(0),
],
q(kyo) => [
- q(3706),
+ q(3736),
q(0),
],
q(kyp) => [
- q(3707),
+ q(3737),
q(0),
],
q(kyq) => [
- q(3708),
+ q(3738),
q(0),
],
q(kyr) => [
- q(3709),
+ q(3739),
q(0),
],
q(kys) => [
- q(3710),
+ q(3740),
q(0),
],
q(kyt) => [
- q(3711),
+ q(3741),
q(0),
],
q(kyu) => [
- q(3712),
+ q(3742),
q(0),
],
q(kyv) => [
- q(3713),
+ q(3743),
q(0),
],
q(kyw) => [
- q(3714),
+ q(3744),
q(0),
],
q(kyx) => [
- q(3715),
+ q(3745),
q(0),
],
q(kyy) => [
- q(3716),
+ q(3746),
q(0),
],
q(kyz) => [
- q(3717),
+ q(3747),
q(0),
],
q(kza) => [
- q(3718),
+ q(3748),
q(0),
],
q(kzb) => [
- q(3719),
+ q(3749),
q(0),
],
q(kzc) => [
- q(3720),
+ q(3750),
q(0),
],
q(kzd) => [
- q(3721),
+ q(3751),
q(0),
],
q(kze) => [
- q(3722),
+ q(3752),
q(0),
],
q(kzf) => [
- q(3723),
+ q(3753),
q(0),
],
q(kzg) => [
- q(3724),
- q(0),
- ],
- q(kzh) => [
- q(3725),
+ q(3754),
q(0),
],
q(kzi) => [
- q(3726),
+ q(3755),
q(0),
],
q(kzj) => [
- q(3727),
+ q(3756),
q(0),
],
q(kzk) => [
- q(3728),
+ q(3757),
q(0),
],
q(kzl) => [
- q(3729),
+ q(3758),
q(0),
],
q(kzm) => [
- q(3730),
+ q(3759),
q(0),
],
q(kzn) => [
- q(3731),
+ q(3760),
q(0),
],
q(kzo) => [
- q(3732),
+ q(3761),
q(0),
],
q(kzp) => [
- q(3733),
+ q(3762),
q(0),
],
q(kzq) => [
- q(3734),
+ q(3763),
q(0),
],
q(kzr) => [
- q(3735),
+ q(3764),
q(0),
],
q(kzs) => [
- q(3736),
+ q(3765),
q(0),
],
q(kzt) => [
- q(3737),
+ q(3766),
q(0),
],
q(kzu) => [
- q(3738),
+ q(3767),
q(0),
],
q(kzv) => [
- q(3739),
+ q(3768),
q(0),
],
q(kzw) => [
- q(3740),
+ q(3769),
q(0),
],
q(kzx) => [
- q(3741),
+ q(3770),
q(0),
],
q(kzy) => [
- q(3742),
+ q(3771),
q(0),
],
q(kzz) => [
- q(3743),
+ q(3772),
q(0),
],
q(laa) => [
- q(3744),
+ q(3773),
q(0),
],
q(lab) => [
- q(3745),
+ q(3774),
q(0),
],
q(lac) => [
- q(3746),
+ q(3775),
q(0),
],
q(lad) => [
@@ -70791,15 +71480,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(lae) => [
- q(3747),
+ q(3776),
q(0),
],
q(laf) => [
- q(3748),
+ q(3777),
q(0),
],
q(lag) => [
- q(3749),
+ q(3778),
q(0),
],
q(lah) => [
@@ -70807,19 +71496,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(lai) => [
- q(3750),
+ q(3779),
q(0),
],
q(laj) => [
- q(3751),
+ q(3780),
q(0),
],
q(lak) => [
- q(3752),
+ q(3781),
q(0),
],
q(lal) => [
- q(3753),
+ q(3782),
q(0),
],
q(lam) => [
@@ -70827,7 +71516,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(lan) => [
- q(3754),
+ q(3783),
q(0),
],
q(lao) => [
@@ -70835,19 +71524,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(lap) => [
- q(3755),
+ q(3784),
q(0),
],
q(laq) => [
- q(3756),
+ q(3785),
q(0),
],
q(lar) => [
- q(3757),
+ q(3786),
q(0),
],
q(las) => [
- q(3758),
+ q(3787),
q(0),
],
q(lat) => [
@@ -70855,7 +71544,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(lau) => [
- q(3759),
+ q(3788),
q(0),
],
q(lav) => [
@@ -70863,303 +71552,299 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(law) => [
- q(3760),
+ q(3789),
q(0),
],
q(lax) => [
- q(3761),
+ q(3790),
q(0),
],
q(lay) => [
- q(3762),
+ q(3791),
q(0),
],
q(laz) => [
- q(3763),
+ q(3792),
q(0),
],
q(lba) => [
- q(3764),
+ q(3793),
q(0),
],
q(lbb) => [
- q(3765),
+ q(3794),
q(0),
],
q(lbc) => [
- q(3766),
+ q(3795),
q(0),
],
q(lbe) => [
- q(3767),
+ q(3796),
q(0),
],
q(lbf) => [
- q(3768),
+ q(3797),
q(0),
],
q(lbg) => [
- q(3769),
+ q(3798),
q(0),
],
q(lbi) => [
- q(3770),
+ q(3799),
q(0),
],
q(lbj) => [
- q(3771),
+ q(3800),
q(0),
],
q(lbk) => [
- q(3772),
+ q(3801),
q(0),
],
q(lbl) => [
- q(3773),
+ q(3802),
q(0),
],
q(lbm) => [
- q(3774),
+ q(3803),
q(0),
],
q(lbn) => [
- q(3775),
+ q(3804),
q(0),
],
q(lbo) => [
- q(3776),
+ q(3805),
q(0),
],
q(lbq) => [
- q(3777),
+ q(3806),
q(0),
],
q(lbr) => [
- q(3778),
+ q(3807),
q(0),
],
q(lbs) => [
- q(3779),
+ q(3808),
q(0),
],
q(lbt) => [
- q(3780),
+ q(3809),
q(0),
],
q(lbu) => [
- q(3781),
+ q(3810),
q(0),
],
q(lbv) => [
- q(3782),
+ q(3811),
q(0),
],
q(lbw) => [
- q(3783),
+ q(3812),
q(0),
],
q(lbx) => [
- q(3784),
+ q(3813),
q(0),
],
q(lby) => [
- q(3785),
+ q(3814),
q(0),
],
q(lbz) => [
- q(3786),
+ q(3815),
q(0),
],
q(lcc) => [
- q(3787),
+ q(3816),
q(0),
],
q(lcd) => [
- q(3788),
+ q(3817),
q(0),
],
q(lce) => [
- q(3789),
+ q(3818),
q(0),
],
q(lcf) => [
- q(3790),
+ q(3819),
q(0),
],
q(lch) => [
- q(3791),
+ q(3820),
q(0),
],
q(lcl) => [
- q(3792),
+ q(3821),
q(0),
],
q(lcm) => [
- q(3793),
+ q(3822),
q(0),
],
q(lcp) => [
- q(3794),
- q(0),
- ],
- q(lcq) => [
- q(3795),
+ q(3823),
q(0),
],
q(lcs) => [
- q(3796),
+ q(3824),
q(0),
],
q(ldb) => [
- q(3797),
+ q(3825),
q(0),
],
q(ldd) => [
- q(3798),
+ q(3826),
q(0),
],
q(ldg) => [
- q(3799),
+ q(3827),
q(0),
],
q(ldh) => [
- q(3800),
+ q(3828),
q(0),
],
q(ldi) => [
- q(3801),
+ q(3829),
q(0),
],
q(ldj) => [
- q(3802),
+ q(3830),
q(0),
],
q(ldk) => [
- q(3803),
+ q(3831),
q(0),
],
q(ldl) => [
- q(3804),
+ q(3832),
q(0),
],
q(ldm) => [
- q(3805),
+ q(3833),
q(0),
],
q(ldn) => [
- q(3806),
+ q(3834),
q(0),
],
q(ldo) => [
- q(3807),
+ q(3835),
q(0),
],
q(ldp) => [
- q(3808),
+ q(3836),
q(0),
],
q(ldq) => [
- q(3809),
+ q(3837),
q(0),
],
q(lea) => [
- q(3810),
+ q(3838),
q(0),
],
q(leb) => [
- q(3811),
+ q(3839),
q(0),
],
q(lec) => [
- q(3812),
+ q(3840),
q(0),
],
q(led) => [
- q(3813),
+ q(3841),
q(0),
],
q(lee) => [
- q(3814),
+ q(3842),
q(0),
],
q(lef) => [
- q(3815),
+ q(3843),
q(0),
],
q(leg) => [
- q(3816),
+ q(3844),
q(0),
],
q(leh) => [
- q(3817),
+ q(3845),
q(0),
],
q(lei) => [
- q(3818),
+ q(3846),
q(0),
],
q(lej) => [
- q(3819),
+ q(3847),
q(0),
],
q(lek) => [
- q(3820),
+ q(3848),
q(0),
],
q(lel) => [
- q(3821),
+ q(3849),
q(0),
],
q(lem) => [
- q(3822),
+ q(3850),
q(0),
],
q(len) => [
- q(3823),
+ q(3851),
q(0),
],
q(leo) => [
- q(3824),
+ q(3852),
q(0),
],
q(lep) => [
- q(3825),
+ q(3853),
q(0),
],
q(leq) => [
- q(3826),
+ q(3854),
q(0),
],
q(ler) => [
- q(3827),
+ q(3855),
q(0),
],
q(les) => [
- q(3828),
+ q(3856),
q(0),
],
q(let) => [
- q(3829),
+ q(3857),
q(0),
],
q(leu) => [
- q(3830),
+ q(3858),
q(0),
],
q(lev) => [
- q(3831),
+ q(3859),
q(0),
],
q(lew) => [
- q(3832),
+ q(3860),
q(0),
],
q(lex) => [
- q(3833),
+ q(3861),
q(0),
],
q(ley) => [
- q(3834),
+ q(3862),
q(0),
],
q(lez) => [
@@ -71167,155 +71852,155 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(lfa) => [
- q(3835),
+ q(3863),
q(0),
],
q(lfn) => [
- q(3836),
+ q(3864),
q(0),
],
q(lga) => [
- q(3837),
+ q(3865),
q(0),
],
q(lgb) => [
- q(3838),
+ q(3866),
q(0),
],
q(lgg) => [
- q(3839),
+ q(3867),
q(0),
],
q(lgh) => [
- q(3840),
+ q(3868),
q(0),
],
q(lgi) => [
- q(3841),
+ q(3869),
q(0),
],
q(lgk) => [
- q(3842),
+ q(3870),
q(0),
],
q(lgl) => [
- q(3843),
+ q(3871),
q(0),
],
q(lgm) => [
- q(3844),
+ q(3872),
q(0),
],
q(lgn) => [
- q(3845),
+ q(3873),
q(0),
],
q(lgq) => [
- q(3846),
+ q(3874),
q(0),
],
q(lgr) => [
- q(3847),
+ q(3875),
q(0),
],
q(lgt) => [
- q(3848),
+ q(3876),
q(0),
],
q(lgu) => [
- q(3849),
+ q(3877),
q(0),
],
q(lgz) => [
- q(3850),
+ q(3878),
q(0),
],
q(lha) => [
- q(3851),
+ q(3879),
q(0),
],
q(lhh) => [
- q(3852),
+ q(3880),
q(0),
],
q(lhi) => [
- q(3853),
+ q(3881),
q(0),
],
q(lhl) => [
- q(3854),
+ q(3882),
q(0),
],
q(lhm) => [
- q(3855),
+ q(3883),
q(0),
],
q(lhn) => [
- q(3856),
+ q(3884),
q(0),
],
q(lhp) => [
- q(3857),
+ q(3885),
q(0),
],
q(lhs) => [
- q(3858),
+ q(3886),
q(0),
],
q(lht) => [
- q(3859),
+ q(3887),
q(0),
],
q(lhu) => [
- q(3860),
+ q(3888),
q(0),
],
q(lia) => [
- q(3861),
+ q(3889),
q(0),
],
q(lib) => [
- q(3862),
+ q(3890),
q(0),
],
q(lic) => [
- q(3863),
+ q(3891),
q(0),
],
q(lid) => [
- q(3864),
+ q(3892),
q(0),
],
q(lie) => [
- q(3865),
+ q(3893),
q(0),
],
q(lif) => [
- q(3866),
+ q(3894),
q(0),
],
q(lig) => [
- q(3867),
+ q(3895),
q(0),
],
q(lih) => [
- q(3868),
+ q(3896),
q(0),
],
q(lii) => [
- q(3869),
+ q(3897),
q(0),
],
q(lij) => [
- q(3870),
+ q(3898),
q(0),
],
q(lik) => [
- q(3871),
+ q(3899),
q(0),
],
q(lil) => [
- q(3872),
+ q(3900),
q(0),
],
q(lim) => [
@@ -71327,23 +72012,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(lio) => [
- q(3873),
+ q(3901),
q(0),
],
q(lip) => [
- q(3874),
+ q(3902),
q(0),
],
q(liq) => [
- q(3875),
+ q(3903),
q(0),
],
q(lir) => [
- q(3876),
+ q(3904),
q(0),
],
q(lis) => [
- q(3877),
+ q(3905),
q(0),
],
q(lit) => [
@@ -71351,371 +72036,375 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(liu) => [
- q(3878),
+ q(3906),
q(0),
],
q(liv) => [
- q(3879),
+ q(3907),
q(0),
],
q(liw) => [
- q(3880),
+ q(3908),
q(0),
],
q(lix) => [
- q(3881),
+ q(3909),
q(0),
],
q(liy) => [
- q(3882),
+ q(3910),
q(0),
],
q(liz) => [
- q(3883),
+ q(3911),
q(0),
],
q(lje) => [
- q(3884),
+ q(3912),
q(0),
],
q(lji) => [
- q(3885),
+ q(3913),
q(0),
],
q(ljl) => [
- q(3886),
+ q(3914),
q(0),
],
q(ljp) => [
- q(3887),
+ q(3915),
q(0),
],
q(lka) => [
- q(3888),
+ q(3916),
q(0),
],
q(lkb) => [
- q(3889),
+ q(3917),
q(0),
],
q(lkc) => [
- q(3890),
+ q(3918),
q(0),
],
q(lkd) => [
- q(3891),
+ q(3919),
q(0),
],
q(lke) => [
- q(3892),
+ q(3920),
q(0),
],
q(lkh) => [
- q(3893),
+ q(3921),
q(0),
],
q(lki) => [
- q(3894),
+ q(3922),
q(0),
],
q(lkj) => [
- q(3895),
+ q(3923),
q(0),
],
q(lkl) => [
- q(3896),
+ q(3924),
q(0),
],
q(lkn) => [
- q(3897),
+ q(3925),
q(0),
],
q(lko) => [
- q(3898),
+ q(3926),
q(0),
],
q(lkr) => [
- q(3899),
+ q(3927),
q(0),
],
q(lks) => [
- q(3900),
+ q(3928),
q(0),
],
q(lkt) => [
- q(3901),
+ q(3929),
q(0),
],
q(lky) => [
- q(3902),
+ q(3930),
q(0),
],
q(lla) => [
- q(3903),
+ q(3931),
q(0),
],
q(llb) => [
- q(3904),
+ q(3932),
q(0),
],
q(llc) => [
- q(3905),
+ q(3933),
q(0),
],
q(lld) => [
- q(3906),
+ q(3934),
q(0),
],
q(lle) => [
- q(3907),
+ q(3935),
q(0),
],
q(llf) => [
- q(3908),
+ q(3936),
q(0),
],
q(llg) => [
- q(3909),
+ q(3937),
q(0),
],
q(llh) => [
- q(3910),
+ q(3938),
q(0),
],
q(lli) => [
- q(3911),
+ q(3939),
+ q(0),
+ ],
+ q(llj) => [
+ q(3940),
q(0),
],
q(llk) => [
- q(3912),
+ q(3941),
q(0),
],
q(lll) => [
- q(3913),
+ q(3942),
q(0),
],
q(llm) => [
- q(3914),
+ q(3943),
q(0),
],
q(lln) => [
- q(3915),
+ q(3944),
q(0),
],
q(llo) => [
- q(3916),
+ q(3945),
q(0),
],
q(llp) => [
- q(3917),
+ q(3946),
q(0),
],
q(llq) => [
- q(3918),
+ q(3947),
q(0),
],
q(lls) => [
- q(3919),
+ q(3948),
q(0),
],
q(llu) => [
- q(3920),
+ q(3949),
q(0),
],
q(llx) => [
- q(3921),
+ q(3950),
q(0),
],
q(lma) => [
- q(3922),
+ q(3951),
q(0),
],
q(lmb) => [
- q(3923),
+ q(3952),
q(0),
],
q(lmc) => [
- q(3924),
+ q(3953),
q(0),
],
q(lmd) => [
- q(3925),
+ q(3954),
q(0),
],
q(lme) => [
- q(3926),
+ q(3955),
q(0),
],
q(lmf) => [
- q(3927),
+ q(3956),
q(0),
],
q(lmg) => [
- q(3928),
+ q(3957),
q(0),
],
q(lmh) => [
- q(3929),
+ q(3958),
q(0),
],
q(lmi) => [
- q(3930),
+ q(3959),
q(0),
],
q(lmj) => [
- q(3931),
+ q(3960),
q(0),
],
q(lmk) => [
- q(3932),
+ q(3961),
q(0),
],
q(lml) => [
- q(3933),
+ q(3962),
q(0),
],
q(lmm) => [
- q(3934),
+ q(3963),
q(0),
],
q(lmn) => [
- q(3935),
+ q(3964),
q(0),
],
q(lmo) => [
- q(3936),
+ q(3965),
q(0),
],
q(lmp) => [
- q(3937),
+ q(3966),
q(0),
],
q(lmq) => [
- q(3938),
+ q(3967),
q(0),
],
q(lmr) => [
- q(3939),
+ q(3968),
q(0),
],
q(lmu) => [
- q(3940),
+ q(3969),
q(0),
],
q(lmv) => [
- q(3941),
+ q(3970),
q(0),
],
q(lmw) => [
- q(3942),
+ q(3971),
q(0),
],
q(lmx) => [
- q(3943),
+ q(3972),
q(0),
],
q(lmy) => [
- q(3944),
+ q(3973),
q(0),
],
q(lmz) => [
- q(3945),
+ q(3974),
q(0),
],
q(lna) => [
- q(3946),
+ q(3975),
q(0),
],
q(lnb) => [
- q(3947),
+ q(3976),
q(0),
],
q(lnd) => [
- q(3948),
+ q(3977),
q(0),
],
q(lng) => [
- q(3949),
+ q(3978),
q(0),
],
q(lnh) => [
- q(3950),
+ q(3979),
q(0),
],
q(lni) => [
- q(3951),
+ q(3980),
q(0),
],
q(lnj) => [
- q(3952),
+ q(3981),
q(0),
],
q(lnl) => [
- q(3953),
+ q(3982),
q(0),
],
q(lnm) => [
- q(3954),
+ q(3983),
q(0),
],
q(lnn) => [
- q(3955),
+ q(3984),
q(0),
],
q(lno) => [
- q(3956),
+ q(3985),
q(0),
],
q(lns) => [
- q(3957),
+ q(3986),
q(0),
],
q(lnu) => [
- q(3958),
+ q(3987),
q(0),
],
q(lnz) => [
- q(3959),
+ q(3988),
q(0),
],
q(loa) => [
- q(3960),
+ q(3989),
q(0),
],
q(lob) => [
- q(3961),
+ q(3990),
q(0),
],
q(loc) => [
- q(3962),
+ q(3991),
q(0),
],
q(loe) => [
- q(3963),
+ q(3992),
q(0),
],
q(lof) => [
- q(3964),
+ q(3993),
q(0),
],
q(log) => [
- q(3965),
+ q(3994),
q(0),
],
q(loh) => [
- q(3966),
+ q(3995),
q(0),
],
q(loi) => [
- q(3967),
+ q(3996),
q(0),
],
q(loj) => [
- q(3968),
+ q(3997),
q(0),
],
q(lok) => [
- q(3969),
+ q(3998),
q(0),
],
q(lol) => [
@@ -71723,55 +72412,55 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(lom) => [
- q(3970),
+ q(3999),
q(0),
],
q(lon) => [
- q(3971),
+ q(4000),
q(0),
],
q(loo) => [
- q(3972),
+ q(4001),
q(0),
],
q(lop) => [
- q(3973),
+ q(4002),
q(0),
],
q(loq) => [
- q(3974),
+ q(4003),
q(0),
],
q(lor) => [
- q(3975),
+ q(4004),
q(0),
],
q(los) => [
- q(3976),
+ q(4005),
q(0),
],
q(lot) => [
- q(3977),
+ q(4006),
q(0),
],
q(lou) => [
- q(3978),
+ q(4007),
q(0),
],
q(lov) => [
- q(3979),
+ q(4008),
q(0),
],
q(low) => [
- q(3980),
+ q(4009),
q(0),
],
q(lox) => [
- q(3981),
+ q(4010),
q(0),
],
q(loy) => [
- q(3982),
+ q(4011),
q(0),
],
q(loz) => [
@@ -71779,163 +72468,163 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(lpa) => [
- q(3983),
+ q(4012),
q(0),
],
q(lpe) => [
- q(3984),
+ q(4013),
q(0),
],
q(lpn) => [
- q(3985),
+ q(4014),
q(0),
],
q(lpo) => [
- q(3986),
+ q(4015),
q(0),
],
q(lpx) => [
- q(3987),
+ q(4016),
q(0),
],
q(lra) => [
- q(3988),
+ q(4017),
q(0),
],
q(lrc) => [
- q(3989),
+ q(4018),
q(0),
],
q(lre) => [
- q(3990),
+ q(4019),
q(0),
],
q(lrg) => [
- q(3991),
+ q(4020),
q(0),
],
q(lri) => [
- q(3992),
+ q(4021),
q(0),
],
q(lrk) => [
- q(3993),
+ q(4022),
q(0),
],
q(lrl) => [
- q(3994),
+ q(4023),
q(0),
],
q(lrm) => [
- q(3995),
+ q(4024),
q(0),
],
q(lrn) => [
- q(3996),
+ q(4025),
q(0),
],
q(lro) => [
- q(3997),
+ q(4026),
q(0),
],
q(lrr) => [
- q(3998),
+ q(4027),
q(0),
],
q(lrt) => [
- q(3999),
+ q(4028),
q(0),
],
q(lrv) => [
- q(4000),
+ q(4029),
q(0),
],
q(lrz) => [
- q(4001),
+ q(4030),
q(0),
],
q(lsa) => [
- q(4002),
+ q(4031),
q(0),
],
q(lsd) => [
- q(4003),
+ q(4032),
q(0),
],
q(lse) => [
- q(4004),
+ q(4033),
q(0),
],
q(lsg) => [
- q(4005),
+ q(4034),
q(0),
],
q(lsh) => [
- q(4006),
+ q(4035),
q(0),
],
q(lsi) => [
- q(4007),
+ q(4036),
q(0),
],
q(lsl) => [
- q(4008),
+ q(4037),
q(0),
],
q(lsm) => [
- q(4009),
+ q(4038),
q(0),
],
q(lso) => [
- q(4010),
+ q(4039),
q(0),
],
q(lsp) => [
- q(4011),
+ q(4040),
q(0),
],
q(lsr) => [
- q(4012),
+ q(4041),
q(0),
],
q(lss) => [
- q(4013),
+ q(4042),
q(0),
],
q(lst) => [
- q(4014),
+ q(4043),
q(0),
],
q(lsy) => [
- q(4015),
+ q(4044),
q(0),
],
q(ltc) => [
- q(4016),
+ q(4045),
q(0),
],
q(ltg) => [
- q(4017),
+ q(4046),
q(0),
],
q(lti) => [
- q(4018),
+ q(4047),
q(0),
],
q(ltn) => [
- q(4019),
+ q(4048),
q(0),
],
q(lto) => [
- q(4020),
+ q(4049),
q(0),
],
q(lts) => [
- q(4021),
+ q(4050),
q(0),
],
q(ltu) => [
- q(4022),
+ q(4051),
q(0),
],
q(ltz) => [
@@ -71951,19 +72640,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(luc) => [
- q(4023),
+ q(4052),
q(0),
],
q(lud) => [
- q(4024),
+ q(4053),
q(0),
],
q(lue) => [
- q(4025),
+ q(4054),
q(0),
],
q(luf) => [
- q(4026),
+ q(4055),
q(0),
],
q(lug) => [
@@ -71975,19 +72664,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(luj) => [
- q(4027),
+ q(4056),
q(0),
],
q(luk) => [
- q(4028),
+ q(4057),
q(0),
],
q(lul) => [
- q(4029),
+ q(4058),
q(0),
],
q(lum) => [
- q(4030),
+ q(4059),
q(0),
],
q(lun) => [
@@ -71999,15 +72688,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(lup) => [
- q(4031),
+ q(4060),
q(0),
],
q(luq) => [
- q(4032),
+ q(4061),
q(0),
],
q(lur) => [
- q(4033),
+ q(4062),
q(0),
],
q(lus) => [
@@ -72015,115 +72704,115 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(lut) => [
- q(4034),
+ q(4063),
q(0),
],
q(luu) => [
- q(4035),
+ q(4064),
q(0),
],
q(luv) => [
- q(4036),
+ q(4065),
q(0),
],
q(luw) => [
- q(4037),
+ q(4066),
q(0),
],
q(luy) => [
- q(4038),
+ q(4067),
q(0),
],
q(luz) => [
- q(4039),
+ q(4068),
q(0),
],
q(lva) => [
- q(4040),
+ q(4069),
q(0),
],
q(lvk) => [
- q(4041),
+ q(4070),
q(0),
],
q(lvs) => [
- q(4042),
+ q(4071),
q(0),
],
q(lvu) => [
- q(4043),
+ q(4072),
q(0),
],
q(lwa) => [
- q(4044),
+ q(4073),
q(0),
],
q(lwe) => [
- q(4045),
+ q(4074),
q(0),
],
q(lwg) => [
- q(4046),
+ q(4075),
q(0),
],
q(lwh) => [
- q(4047),
+ q(4076),
q(0),
],
q(lwl) => [
- q(4048),
+ q(4077),
q(0),
],
q(lwm) => [
- q(4049),
+ q(4078),
q(0),
],
q(lwo) => [
- q(4050),
+ q(4079),
q(0),
],
q(lwt) => [
- q(4051),
+ q(4080),
q(0),
],
q(lww) => [
- q(4052),
+ q(4081),
q(0),
],
q(lya) => [
- q(4053),
+ q(4082),
q(0),
],
q(lyg) => [
- q(4054),
+ q(4083),
q(0),
],
q(lyn) => [
- q(4055),
+ q(4084),
q(0),
],
q(lzh) => [
- q(4056),
+ q(4085),
q(0),
],
q(lzl) => [
- q(4057),
+ q(4086),
q(0),
],
q(lzn) => [
- q(4058),
+ q(4087),
q(0),
],
q(lzz) => [
- q(4059),
+ q(4088),
q(0),
],
q(maa) => [
- q(4060),
+ q(4089),
q(0),
],
q(mab) => [
- q(4061),
+ q(4090),
q(0),
],
q(mac) => [
@@ -72135,11 +72824,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mae) => [
- q(4062),
+ q(4091),
q(0),
],
q(maf) => [
- q(4063),
+ q(4092),
q(0),
],
q(mag) => [
@@ -72155,7 +72844,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(maj) => [
- q(4064),
+ q(4093),
q(0),
],
q(mak) => [
@@ -72167,7 +72856,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mam) => [
- q(4065),
+ q(4094),
q(0),
],
q(man) => [
@@ -72183,7 +72872,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(maq) => [
- q(4066),
+ q(4095),
q(0),
],
q(mar) => [
@@ -72195,23 +72884,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mat) => [
- q(4067),
+ q(4096),
q(0),
],
q(mau) => [
- q(4068),
+ q(4097),
q(0),
],
q(mav) => [
- q(4069),
+ q(4098),
q(0),
],
q(maw) => [
- q(4070),
+ q(4099),
q(0),
],
q(max) => [
- q(4071),
+ q(4100),
q(0),
],
q(may) => [
@@ -72219,231 +72908,231 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(maz) => [
- q(4072),
+ q(4101),
q(0),
],
q(mba) => [
- q(4073),
+ q(4102),
q(0),
],
q(mbb) => [
- q(4074),
+ q(4103),
q(0),
],
q(mbc) => [
- q(4075),
+ q(4104),
q(0),
],
q(mbd) => [
- q(4076),
+ q(4105),
q(0),
],
q(mbe) => [
- q(4077),
+ q(4106),
q(0),
],
q(mbf) => [
- q(4078),
+ q(4107),
q(0),
],
q(mbh) => [
- q(4079),
+ q(4108),
q(0),
],
q(mbi) => [
- q(4080),
+ q(4109),
q(0),
],
q(mbj) => [
- q(4081),
+ q(4110),
q(0),
],
q(mbk) => [
- q(4082),
+ q(4111),
q(0),
],
q(mbl) => [
- q(4083),
+ q(4112),
q(0),
],
q(mbm) => [
- q(4084),
+ q(4113),
q(0),
],
q(mbn) => [
- q(4085),
+ q(4114),
q(0),
],
q(mbo) => [
- q(4086),
+ q(4115),
q(0),
],
q(mbp) => [
- q(4087),
+ q(4116),
q(0),
],
q(mbq) => [
- q(4088),
+ q(4117),
q(0),
],
q(mbr) => [
- q(4089),
+ q(4118),
q(0),
],
q(mbs) => [
- q(4090),
+ q(4119),
q(0),
],
q(mbt) => [
- q(4091),
+ q(4120),
q(0),
],
q(mbu) => [
- q(4092),
+ q(4121),
q(0),
],
q(mbv) => [
- q(4093),
+ q(4122),
q(0),
],
q(mbw) => [
- q(4094),
+ q(4123),
q(0),
],
q(mbx) => [
- q(4095),
+ q(4124),
q(0),
],
q(mby) => [
- q(4096),
+ q(4125),
q(0),
],
q(mbz) => [
- q(4097),
+ q(4126),
q(0),
],
q(mca) => [
- q(4098),
+ q(4127),
q(0),
],
q(mcb) => [
- q(4099),
+ q(4128),
q(0),
],
q(mcc) => [
- q(4100),
+ q(4129),
q(0),
],
q(mcd) => [
- q(4101),
+ q(4130),
q(0),
],
q(mce) => [
- q(4102),
+ q(4131),
q(0),
],
q(mcf) => [
- q(4103),
+ q(4132),
q(0),
],
q(mcg) => [
- q(4104),
+ q(4133),
q(0),
],
q(mch) => [
- q(4105),
+ q(4134),
q(0),
],
q(mci) => [
- q(4106),
+ q(4135),
q(0),
],
q(mcj) => [
- q(4107),
+ q(4136),
q(0),
],
q(mck) => [
- q(4108),
+ q(4137),
q(0),
],
q(mcl) => [
- q(4109),
+ q(4138),
q(0),
],
q(mcm) => [
- q(4110),
+ q(4139),
q(0),
],
q(mcn) => [
- q(4111),
+ q(4140),
q(0),
],
q(mco) => [
- q(4112),
+ q(4141),
q(0),
],
q(mcp) => [
- q(4113),
+ q(4142),
q(0),
],
q(mcq) => [
- q(4114),
+ q(4143),
q(0),
],
q(mcr) => [
- q(4115),
+ q(4144),
q(0),
],
q(mcs) => [
- q(4116),
+ q(4145),
q(0),
],
q(mct) => [
- q(4117),
+ q(4146),
q(0),
],
q(mcu) => [
- q(4118),
+ q(4147),
q(0),
],
q(mcv) => [
- q(4119),
+ q(4148),
q(0),
],
q(mcw) => [
- q(4120),
+ q(4149),
q(0),
],
q(mcx) => [
- q(4121),
+ q(4150),
q(0),
],
q(mcy) => [
- q(4122),
+ q(4151),
q(0),
],
q(mcz) => [
- q(4123),
+ q(4152),
q(0),
],
q(mda) => [
- q(4124),
+ q(4153),
q(0),
],
q(mdb) => [
- q(4125),
+ q(4154),
q(0),
],
q(mdc) => [
- q(4126),
+ q(4155),
q(0),
],
q(mdd) => [
- q(4127),
+ q(4156),
q(0),
],
q(mde) => [
- q(4128),
+ q(4157),
q(0),
],
q(mdf) => [
@@ -72451,43 +73140,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mdg) => [
- q(4129),
+ q(4158),
q(0),
],
q(mdh) => [
- q(4130),
+ q(4159),
q(0),
],
q(mdi) => [
- q(4131),
+ q(4160),
q(0),
],
q(mdj) => [
- q(4132),
+ q(4161),
q(0),
],
q(mdk) => [
- q(4133),
+ q(4162),
q(0),
],
q(mdl) => [
- q(4134),
+ q(4163),
q(0),
],
q(mdm) => [
- q(4135),
+ q(4164),
q(0),
],
q(mdn) => [
- q(4136),
+ q(4165),
q(0),
],
q(mdp) => [
- q(4137),
+ q(4166),
q(0),
],
q(mdq) => [
- q(4138),
+ q(4167),
q(0),
],
q(mdr) => [
@@ -72495,87 +73184,87 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mds) => [
- q(4139),
+ q(4168),
q(0),
],
q(mdt) => [
- q(4140),
+ q(4169),
q(0),
],
q(mdu) => [
- q(4141),
+ q(4170),
q(0),
],
q(mdv) => [
- q(4142),
+ q(4171),
q(0),
],
q(mdw) => [
- q(4143),
+ q(4172),
q(0),
],
q(mdx) => [
- q(4144),
+ q(4173),
q(0),
],
q(mdy) => [
- q(4145),
+ q(4174),
q(0),
],
q(mdz) => [
- q(4146),
+ q(4175),
q(0),
],
q(mea) => [
- q(4147),
+ q(4176),
q(0),
],
q(meb) => [
- q(4148),
+ q(4177),
q(0),
],
q(mec) => [
- q(4149),
+ q(4178),
q(0),
],
q(med) => [
- q(4150),
+ q(4179),
q(0),
],
q(mee) => [
- q(4151),
+ q(4180),
q(0),
],
q(mef) => [
- q(4152),
+ q(4181),
q(0),
],
q(meg) => [
- q(4153),
+ q(4182),
q(0),
],
q(meh) => [
- q(4154),
+ q(4183),
q(0),
],
q(mei) => [
- q(4155),
+ q(4184),
q(0),
],
q(mej) => [
- q(4156),
+ q(4185),
q(0),
],
q(mek) => [
- q(4157),
+ q(4186),
q(0),
],
q(mel) => [
- q(4158),
+ q(4187),
q(0),
],
q(mem) => [
- q(4159),
+ q(4188),
q(0),
],
q(men) => [
@@ -72583,151 +73272,151 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(meo) => [
- q(4160),
+ q(4189),
q(0),
],
q(mep) => [
- q(4161),
+ q(4190),
q(0),
],
q(meq) => [
- q(4162),
+ q(4191),
q(0),
],
q(mer) => [
- q(4163),
+ q(4192),
q(0),
],
q(mes) => [
- q(4164),
+ q(4193),
q(0),
],
q(met) => [
- q(4165),
+ q(4194),
q(0),
],
q(meu) => [
- q(4166),
+ q(4195),
q(0),
],
q(mev) => [
- q(4167),
+ q(4196),
q(0),
],
q(mew) => [
- q(4168),
+ q(4197),
q(0),
],
q(mey) => [
- q(4169),
+ q(4198),
q(0),
],
q(mez) => [
- q(4170),
+ q(4199),
q(0),
],
q(mfa) => [
- q(4171),
+ q(4200),
q(0),
],
q(mfb) => [
- q(4172),
+ q(4201),
q(0),
],
q(mfc) => [
- q(4173),
+ q(4202),
q(0),
],
q(mfd) => [
- q(4174),
+ q(4203),
q(0),
],
q(mfe) => [
- q(4175),
+ q(4204),
q(0),
],
q(mff) => [
- q(4176),
+ q(4205),
q(0),
],
q(mfg) => [
- q(4177),
+ q(4206),
q(0),
],
q(mfh) => [
- q(4178),
+ q(4207),
q(0),
],
q(mfi) => [
- q(4179),
+ q(4208),
q(0),
],
q(mfj) => [
- q(4180),
+ q(4209),
q(0),
],
q(mfk) => [
- q(4181),
+ q(4210),
q(0),
],
q(mfl) => [
- q(4182),
+ q(4211),
q(0),
],
q(mfm) => [
- q(4183),
+ q(4212),
q(0),
],
q(mfn) => [
- q(4184),
+ q(4213),
q(0),
],
q(mfo) => [
- q(4185),
+ q(4214),
q(0),
],
q(mfp) => [
- q(4186),
+ q(4215),
q(0),
],
q(mfq) => [
- q(4187),
+ q(4216),
q(0),
],
q(mfr) => [
- q(4188),
+ q(4217),
q(0),
],
q(mfs) => [
- q(4189),
+ q(4218),
q(0),
],
q(mft) => [
- q(4190),
+ q(4219),
q(0),
],
q(mfu) => [
- q(4191),
+ q(4220),
q(0),
],
q(mfv) => [
- q(4192),
+ q(4221),
q(0),
],
q(mfw) => [
- q(4193),
+ q(4222),
q(0),
],
q(mfx) => [
- q(4194),
+ q(4223),
q(0),
],
q(mfy) => [
- q(4195),
+ q(4224),
q(0),
],
q(mfz) => [
- q(4196),
+ q(4225),
q(0),
],
q(mga) => [
@@ -72735,211 +73424,207 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(mgb) => [
- q(4197),
+ q(4226),
q(0),
],
q(mgc) => [
- q(4198),
+ q(4227),
q(0),
],
q(mgd) => [
- q(4199),
+ q(4228),
q(0),
],
q(mge) => [
- q(4200),
+ q(4229),
q(0),
],
q(mgf) => [
- q(4201),
+ q(4230),
q(0),
],
q(mgg) => [
- q(4202),
+ q(4231),
q(0),
],
q(mgh) => [
- q(4203),
+ q(4232),
q(0),
],
q(mgi) => [
- q(4204),
+ q(4233),
q(0),
],
q(mgj) => [
- q(4205),
+ q(4234),
q(0),
],
q(mgk) => [
- q(4206),
+ q(4235),
q(0),
],
q(mgl) => [
- q(4207),
+ q(4236),
q(0),
],
q(mgm) => [
- q(4208),
+ q(4237),
q(0),
],
q(mgn) => [
- q(4209),
+ q(4238),
q(0),
],
q(mgo) => [
- q(4210),
+ q(4239),
q(0),
],
q(mgp) => [
- q(4211),
+ q(4240),
q(0),
],
q(mgq) => [
- q(4212),
+ q(4241),
q(0),
],
q(mgr) => [
- q(4213),
+ q(4242),
q(0),
],
q(mgs) => [
- q(4214),
+ q(4243),
q(0),
],
q(mgt) => [
- q(4215),
+ q(4244),
q(0),
],
q(mgu) => [
- q(4216),
+ q(4245),
q(0),
],
q(mgv) => [
- q(4217),
+ q(4246),
q(0),
],
q(mgw) => [
- q(4218),
- q(0),
- ],
- q(mgx) => [
- q(4219),
+ q(4247),
q(0),
],
q(mgy) => [
- q(4220),
+ q(4248),
q(0),
],
q(mgz) => [
- q(4221),
+ q(4249),
q(0),
],
q(mha) => [
- q(4222),
+ q(4250),
q(0),
],
q(mhb) => [
- q(4223),
+ q(4251),
q(0),
],
q(mhc) => [
- q(4224),
+ q(4252),
q(0),
],
q(mhd) => [
- q(4225),
+ q(4253),
q(0),
],
q(mhe) => [
- q(4226),
+ q(4254),
q(0),
],
q(mhf) => [
- q(4227),
+ q(4255),
q(0),
],
q(mhg) => [
- q(4228),
+ q(4256),
q(0),
],
q(mhh) => [
- q(4229),
+ q(4257),
q(0),
],
q(mhi) => [
- q(4230),
+ q(4258),
q(0),
],
q(mhj) => [
- q(4231),
+ q(4259),
q(0),
],
q(mhk) => [
- q(4232),
+ q(4260),
q(0),
],
q(mhl) => [
- q(4233),
+ q(4261),
q(0),
],
q(mhm) => [
- q(4234),
+ q(4262),
q(0),
],
q(mhn) => [
- q(4235),
+ q(4263),
q(0),
],
q(mho) => [
- q(4236),
+ q(4264),
q(0),
],
q(mhp) => [
- q(4237),
+ q(4265),
q(0),
],
q(mhq) => [
- q(4238),
+ q(4266),
q(0),
],
q(mhr) => [
- q(4239),
+ q(4267),
q(0),
],
q(mhs) => [
- q(4240),
+ q(4268),
q(0),
],
q(mht) => [
- q(4241),
+ q(4269),
q(0),
],
q(mhu) => [
- q(4242),
+ q(4270),
q(0),
],
q(mhw) => [
- q(4243),
+ q(4271),
q(0),
],
q(mhx) => [
- q(4244),
+ q(4272),
q(0),
],
q(mhy) => [
- q(4245),
+ q(4273),
q(0),
],
q(mhz) => [
- q(4246),
+ q(4274),
q(0),
],
q(mia) => [
- q(4247),
+ q(4275),
q(0),
],
q(mib) => [
- q(4248),
+ q(4276),
q(0),
],
q(mic) => [
@@ -72947,43 +73632,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mid) => [
- q(4249),
+ q(4277),
q(0),
],
q(mie) => [
- q(4250),
+ q(4278),
q(0),
],
q(mif) => [
- q(4251),
+ q(4279),
q(0),
],
q(mig) => [
- q(4252),
+ q(4280),
q(0),
],
q(mih) => [
- q(4253),
+ q(4281),
q(0),
],
q(mii) => [
- q(4254),
+ q(4282),
q(0),
],
q(mij) => [
- q(4255),
+ q(4283),
q(0),
],
q(mik) => [
- q(4256),
+ q(4284),
q(0),
],
q(mil) => [
- q(4257),
+ q(4285),
q(0),
],
q(mim) => [
- q(4258),
+ q(4286),
q(0),
],
q(min) => [
@@ -72991,19 +73676,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mio) => [
- q(4259),
+ q(4287),
q(0),
],
q(mip) => [
- q(4260),
+ q(4288),
q(0),
],
q(miq) => [
- q(4261),
+ q(4289),
q(0),
],
q(mir) => [
- q(4262),
+ q(4290),
q(0),
],
q(mis) => [
@@ -73011,143 +73696,143 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mit) => [
- q(4263),
+ q(4291),
q(0),
],
q(miu) => [
- q(4264),
+ q(4292),
q(0),
],
q(miw) => [
- q(4265),
+ q(4293),
q(0),
],
q(mix) => [
- q(4266),
+ q(4294),
q(0),
],
q(miy) => [
- q(4267),
+ q(4295),
q(0),
],
q(miz) => [
- q(4268),
+ q(4296),
q(0),
],
q(mjc) => [
- q(4269),
+ q(4297),
q(0),
],
q(mjd) => [
- q(4270),
+ q(4298),
q(0),
],
q(mje) => [
- q(4271),
+ q(4299),
q(0),
],
q(mjg) => [
- q(4272),
+ q(4300),
q(0),
],
q(mjh) => [
- q(4273),
+ q(4301),
q(0),
],
q(mji) => [
- q(4274),
+ q(4302),
q(0),
],
q(mjj) => [
- q(4275),
+ q(4303),
q(0),
],
q(mjk) => [
- q(4276),
+ q(4304),
q(0),
],
q(mjl) => [
- q(4277),
+ q(4305),
q(0),
],
q(mjm) => [
- q(4278),
+ q(4306),
q(0),
],
q(mjn) => [
- q(4279),
+ q(4307),
q(0),
],
q(mjo) => [
- q(4280),
+ q(4308),
q(0),
],
q(mjp) => [
- q(4281),
+ q(4309),
q(0),
],
q(mjq) => [
- q(4282),
+ q(4310),
q(0),
],
q(mjr) => [
- q(4283),
+ q(4311),
q(0),
],
q(mjs) => [
- q(4284),
+ q(4312),
q(0),
],
q(mjt) => [
- q(4285),
+ q(4313),
q(0),
],
q(mju) => [
- q(4286),
+ q(4314),
q(0),
],
q(mjv) => [
- q(4287),
+ q(4315),
q(0),
],
q(mjw) => [
- q(4288),
+ q(4316),
q(0),
],
q(mjx) => [
- q(4289),
+ q(4317),
q(0),
],
q(mjy) => [
- q(4290),
+ q(4318),
q(0),
],
q(mjz) => [
- q(4291),
+ q(4319),
q(0),
],
q(mka) => [
- q(4292),
+ q(4320),
q(0),
],
q(mkb) => [
- q(4293),
+ q(4321),
q(0),
],
q(mkc) => [
- q(4294),
+ q(4322),
q(0),
],
q(mke) => [
- q(4295),
+ q(4323),
q(0),
],
q(mkf) => [
- q(4296),
+ q(4324),
q(0),
],
q(mkg) => [
- q(4297),
+ q(4325),
q(0),
],
q(mkh) => [
@@ -73155,99 +73840,99 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mki) => [
- q(4298),
+ q(4326),
q(0),
],
q(mkj) => [
- q(4299),
+ q(4327),
q(0),
],
q(mkk) => [
- q(4300),
+ q(4328),
q(0),
],
q(mkl) => [
- q(4301),
+ q(4329),
q(0),
],
q(mkm) => [
- q(4302),
+ q(4330),
q(0),
],
q(mkn) => [
- q(4303),
+ q(4331),
q(0),
],
q(mko) => [
- q(4304),
+ q(4332),
q(0),
],
q(mkp) => [
- q(4305),
+ q(4333),
q(0),
],
q(mkq) => [
- q(4306),
+ q(4334),
q(0),
],
q(mkr) => [
- q(4307),
+ q(4335),
q(0),
],
q(mks) => [
- q(4308),
+ q(4336),
q(0),
],
q(mkt) => [
- q(4309),
+ q(4337),
q(0),
],
q(mku) => [
- q(4310),
+ q(4338),
q(0),
],
q(mkv) => [
- q(4311),
+ q(4339),
q(0),
],
q(mkw) => [
- q(4312),
+ q(4340),
q(0),
],
q(mkx) => [
- q(4313),
+ q(4341),
q(0),
],
q(mky) => [
- q(4314),
+ q(4342),
q(0),
],
q(mkz) => [
- q(4315),
+ q(4343),
q(0),
],
q(mla) => [
- q(4316),
+ q(4344),
q(0),
],
q(mlb) => [
- q(4317),
+ q(4345),
q(0),
],
q(mlc) => [
- q(4318),
+ q(4346),
q(0),
],
q(mld) => [
- q(4319),
+ q(4347),
q(0),
],
q(mle) => [
- q(4320),
+ q(4348),
q(0),
],
q(mlf) => [
- q(4321),
+ q(4349),
q(0),
],
q(mlg) => [
@@ -73255,51 +73940,51 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mlh) => [
- q(4322),
+ q(4350),
q(0),
],
q(mli) => [
- q(4323),
+ q(4351),
q(0),
],
q(mlj) => [
- q(4324),
+ q(4352),
q(0),
],
q(mlk) => [
- q(4325),
+ q(4353),
q(0),
],
q(mll) => [
- q(4326),
+ q(4354),
q(0),
],
q(mlm) => [
- q(4327),
+ q(4355),
q(0),
],
q(mln) => [
- q(4328),
+ q(4356),
q(0),
],
q(mlo) => [
- q(4329),
+ q(4357),
q(0),
],
q(mlp) => [
- q(4330),
+ q(4358),
q(0),
],
q(mlq) => [
- q(4331),
+ q(4359),
q(0),
],
q(mlr) => [
- q(4332),
+ q(4360),
q(0),
],
q(mls) => [
- q(4333),
+ q(4361),
q(0),
],
q(mlt) => [
@@ -73307,131 +73992,131 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mlu) => [
- q(4334),
+ q(4362),
q(0),
],
q(mlv) => [
- q(4335),
+ q(4363),
q(0),
],
q(mlw) => [
- q(4336),
+ q(4364),
q(0),
],
q(mlx) => [
- q(4337),
+ q(4365),
q(0),
],
q(mlz) => [
- q(4338),
+ q(4366),
q(0),
],
q(mma) => [
- q(4339),
+ q(4367),
q(0),
],
q(mmb) => [
- q(4340),
+ q(4368),
q(0),
],
q(mmc) => [
- q(4341),
+ q(4369),
q(0),
],
q(mmd) => [
- q(4342),
+ q(4370),
q(0),
],
q(mme) => [
- q(4343),
+ q(4371),
q(0),
],
q(mmf) => [
- q(4344),
+ q(4372),
q(0),
],
q(mmg) => [
- q(4345),
+ q(4373),
q(0),
],
q(mmh) => [
- q(4346),
+ q(4374),
q(0),
],
q(mmi) => [
- q(4347),
+ q(4375),
q(0),
],
q(mmj) => [
- q(4348),
+ q(4376),
q(0),
],
q(mmk) => [
- q(4349),
+ q(4377),
q(0),
],
q(mml) => [
- q(4350),
+ q(4378),
q(0),
],
q(mmm) => [
- q(4351),
+ q(4379),
q(0),
],
q(mmn) => [
- q(4352),
+ q(4380),
q(0),
],
q(mmo) => [
- q(4353),
+ q(4381),
q(0),
],
q(mmp) => [
- q(4354),
+ q(4382),
q(0),
],
q(mmq) => [
- q(4355),
+ q(4383),
q(0),
],
q(mmr) => [
- q(4356),
+ q(4384),
q(0),
],
q(mmt) => [
- q(4357),
+ q(4385),
q(0),
],
q(mmu) => [
- q(4358),
+ q(4386),
q(0),
],
q(mmv) => [
- q(4359),
+ q(4387),
q(0),
],
q(mmw) => [
- q(4360),
+ q(4388),
q(0),
],
q(mmx) => [
- q(4361),
+ q(4389),
q(0),
],
q(mmy) => [
- q(4362),
+ q(4390),
q(0),
],
q(mmz) => [
- q(4363),
+ q(4391),
q(0),
],
q(mna) => [
- q(4364),
+ q(4392),
q(0),
],
q(mnb) => [
- q(4365),
+ q(4393),
q(0),
],
q(mnc) => [
@@ -73439,23 +74124,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mnd) => [
- q(4366),
+ q(4394),
q(0),
],
q(mne) => [
- q(4367),
+ q(4395),
q(0),
],
q(mnf) => [
- q(4368),
+ q(4396),
q(0),
],
q(mng) => [
- q(4369),
+ q(4397),
q(0),
],
q(mnh) => [
- q(4370),
+ q(4398),
q(0),
],
q(mni) => [
@@ -73463,23 +74148,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mnj) => [
- q(4371),
+ q(4399),
q(0),
],
q(mnk) => [
- q(4372),
+ q(4400),
q(0),
],
q(mnl) => [
- q(4373),
+ q(4401),
q(0),
],
q(mnm) => [
- q(4374),
+ q(4402),
q(0),
],
q(mnn) => [
- q(4375),
+ q(4403),
q(0),
],
q(mno) => [
@@ -73487,67 +74172,67 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mnp) => [
- q(4376),
+ q(4404),
q(0),
],
q(mnq) => [
- q(4377),
+ q(4405),
q(0),
],
q(mnr) => [
- q(4378),
+ q(4406),
q(0),
],
q(mns) => [
- q(4379),
+ q(4407),
q(0),
],
q(mnt) => [
- q(4380),
+ q(4408),
q(0),
],
q(mnu) => [
- q(4381),
+ q(4409),
q(0),
],
q(mnv) => [
- q(4382),
+ q(4410),
q(0),
],
q(mnw) => [
- q(4383),
+ q(4411),
q(0),
],
q(mnx) => [
- q(4384),
+ q(4412),
q(0),
],
q(mny) => [
- q(4385),
+ q(4413),
q(0),
],
q(mnz) => [
- q(4386),
+ q(4414),
q(0),
],
q(moa) => [
- q(4387),
+ q(4415),
q(0),
],
q(moc) => [
- q(4388),
+ q(4416),
q(0),
],
q(mod) => [
- q(4389),
+ q(4417),
q(0),
],
q(moe) => [
- q(4390),
+ q(4418),
q(0),
],
q(mog) => [
- q(4391),
+ q(4419),
q(0),
],
q(moh) => [
@@ -73555,19 +74240,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(moi) => [
- q(4392),
+ q(4420),
q(0),
],
q(moj) => [
- q(4393),
+ q(4421),
q(0),
],
q(mok) => [
- q(4394),
+ q(4422),
q(0),
],
q(mom) => [
- q(4395),
+ q(4423),
q(0),
],
q(mon) => [
@@ -73575,19 +74260,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(moo) => [
- q(4396),
+ q(4424),
q(0),
],
q(mop) => [
- q(4397),
+ q(4425),
q(0),
],
q(moq) => [
- q(4398),
+ q(4426),
q(0),
],
q(mor) => [
- q(4399),
+ q(4427),
q(0),
],
q(mos) => [
@@ -73595,567 +74280,567 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mot) => [
- q(1130),
+ q(1137),
q(0),
],
q(mou) => [
- q(4400),
+ q(4428),
q(0),
],
q(mov) => [
- q(4401),
+ q(4429),
q(0),
],
q(mow) => [
- q(4402),
+ q(4430),
q(0),
],
q(mox) => [
- q(4403),
+ q(4431),
q(0),
],
q(moy) => [
- q(4404),
+ q(4432),
q(0),
],
q(moz) => [
- q(4405),
+ q(4433),
q(0),
],
q(mpa) => [
- q(4406),
+ q(4434),
q(0),
],
q(mpb) => [
- q(4407),
+ q(4435),
q(0),
],
q(mpc) => [
- q(4408),
+ q(4436),
q(0),
],
q(mpd) => [
- q(4409),
+ q(4437),
q(0),
],
q(mpe) => [
- q(4410),
+ q(4438),
q(0),
],
q(mpg) => [
- q(4411),
+ q(4439),
q(0),
],
q(mph) => [
- q(4412),
+ q(4440),
q(0),
],
q(mpi) => [
- q(4413),
+ q(4441),
q(0),
],
q(mpj) => [
- q(4414),
+ q(4442),
q(0),
],
q(mpk) => [
- q(4415),
+ q(4443),
q(0),
],
q(mpl) => [
- q(4416),
+ q(4444),
q(0),
],
q(mpm) => [
- q(4417),
+ q(4445),
q(0),
],
q(mpn) => [
- q(4418),
+ q(4446),
q(0),
],
q(mpo) => [
- q(4419),
+ q(4447),
q(0),
],
q(mpp) => [
- q(4420),
+ q(4448),
q(0),
],
q(mpq) => [
- q(4421),
+ q(4449),
q(0),
],
q(mpr) => [
- q(4422),
+ q(4450),
q(0),
],
q(mps) => [
- q(4423),
+ q(4451),
q(0),
],
q(mpt) => [
- q(4424),
+ q(4452),
q(0),
],
q(mpu) => [
- q(4425),
+ q(4453),
q(0),
],
q(mpv) => [
- q(4426),
+ q(4454),
q(0),
],
q(mpw) => [
- q(4427),
+ q(4455),
q(0),
],
q(mpx) => [
- q(4428),
+ q(4456),
q(0),
],
q(mpy) => [
- q(4429),
+ q(4457),
q(0),
],
q(mpz) => [
- q(4430),
+ q(4458),
q(0),
],
q(mqa) => [
- q(4431),
+ q(4459),
q(0),
],
q(mqb) => [
- q(4432),
+ q(4460),
q(0),
],
q(mqc) => [
- q(4433),
+ q(4461),
q(0),
],
q(mqe) => [
- q(4434),
+ q(4462),
q(0),
],
q(mqf) => [
- q(4435),
+ q(4463),
q(0),
],
q(mqg) => [
- q(4436),
+ q(4464),
q(0),
],
q(mqh) => [
- q(4437),
+ q(4465),
q(0),
],
q(mqi) => [
- q(4438),
+ q(4466),
q(0),
],
q(mqj) => [
- q(4439),
+ q(4467),
q(0),
],
q(mqk) => [
- q(4440),
+ q(4468),
q(0),
],
q(mql) => [
- q(4441),
+ q(4469),
q(0),
],
q(mqm) => [
- q(4442),
+ q(4470),
q(0),
],
q(mqn) => [
- q(4443),
+ q(4471),
q(0),
],
q(mqo) => [
- q(4444),
+ q(4472),
q(0),
],
q(mqp) => [
- q(4445),
+ q(4473),
q(0),
],
q(mqq) => [
- q(4446),
+ q(4474),
q(0),
],
q(mqr) => [
- q(4447),
+ q(4475),
q(0),
],
q(mqs) => [
- q(4448),
+ q(4476),
q(0),
],
q(mqt) => [
- q(4449),
+ q(4477),
q(0),
],
q(mqu) => [
- q(4450),
+ q(4478),
q(0),
],
q(mqv) => [
- q(4451),
+ q(4479),
q(0),
],
q(mqw) => [
- q(4452),
+ q(4480),
q(0),
],
q(mqx) => [
- q(4453),
+ q(4481),
q(0),
],
q(mqy) => [
- q(4454),
+ q(4482),
q(0),
],
q(mqz) => [
- q(4455),
+ q(4483),
q(0),
],
q(mra) => [
- q(4456),
+ q(4484),
q(0),
],
q(mrb) => [
- q(4457),
+ q(4485),
q(0),
],
q(mrc) => [
- q(4458),
+ q(4486),
q(0),
],
q(mrd) => [
- q(4459),
+ q(4487),
q(0),
],
q(mre) => [
- q(4460),
+ q(4488),
q(0),
],
q(mrf) => [
- q(4461),
+ q(4489),
q(0),
],
q(mrg) => [
- q(4462),
+ q(4490),
q(0),
],
q(mrh) => [
- q(4463),
+ q(4491),
q(0),
],
q(mrj) => [
- q(4464),
+ q(4492),
q(0),
],
q(mrk) => [
- q(4465),
+ q(4493),
q(0),
],
q(mrl) => [
- q(4466),
+ q(4494),
q(0),
],
q(mrm) => [
- q(4467),
+ q(4495),
q(0),
],
q(mrn) => [
- q(4468),
+ q(4496),
q(0),
],
q(mro) => [
- q(4469),
+ q(4497),
q(0),
],
q(mrp) => [
- q(4470),
+ q(4498),
q(0),
],
q(mrq) => [
- q(4471),
+ q(4499),
q(0),
],
q(mrr) => [
- q(4472),
+ q(4500),
q(0),
],
q(mrs) => [
- q(4473),
+ q(4501),
q(0),
],
q(mrt) => [
- q(4474),
+ q(4502),
q(0),
],
q(mru) => [
- q(4475),
+ q(4503),
q(0),
],
q(mrv) => [
- q(4476),
+ q(4504),
q(0),
],
q(mrw) => [
- q(4477),
+ q(4505),
q(0),
],
q(mrx) => [
- q(4478),
+ q(4506),
q(0),
],
q(mry) => [
- q(4479),
+ q(4507),
q(0),
],
q(mrz) => [
- q(4480),
+ q(4508),
q(0),
],
q(msb) => [
- q(4481),
+ q(4509),
q(0),
],
q(msc) => [
- q(4482),
+ q(4510),
q(0),
],
q(msd) => [
- q(4483),
+ q(4511),
q(0),
],
q(mse) => [
- q(4484),
+ q(4512),
q(0),
],
q(msf) => [
- q(4485),
+ q(4513),
q(0),
],
q(msg) => [
- q(4486),
+ q(4514),
q(0),
],
q(msh) => [
- q(4487),
+ q(4515),
q(0),
],
q(msi) => [
- q(4488),
+ q(4516),
q(0),
],
q(msj) => [
- q(4489),
+ q(4517),
q(0),
],
q(msk) => [
- q(4490),
+ q(4518),
q(0),
],
q(msl) => [
- q(4491),
+ q(4519),
q(0),
],
q(msm) => [
- q(4492),
+ q(4520),
q(0),
],
q(msn) => [
- q(4493),
+ q(4521),
q(0),
],
q(mso) => [
- q(4494),
+ q(4522),
q(0),
],
q(msp) => [
- q(4495),
+ q(4523),
q(0),
],
q(msq) => [
- q(4496),
+ q(4524),
q(0),
],
q(msr) => [
- q(4497),
+ q(4525),
q(0),
],
q(mss) => [
- q(4498),
+ q(4526),
q(0),
],
q(msu) => [
- q(4499),
+ q(4527),
q(0),
],
q(msv) => [
- q(4500),
+ q(4528),
q(0),
],
q(msw) => [
- q(4501),
+ q(4529),
q(0),
],
q(msx) => [
- q(4502),
+ q(4530),
q(0),
],
q(msy) => [
- q(4503),
+ q(4531),
q(0),
],
q(msz) => [
- q(4504),
+ q(4532),
q(0),
],
q(mta) => [
- q(4505),
+ q(4533),
q(0),
],
q(mtb) => [
- q(4506),
+ q(4534),
q(0),
],
q(mtc) => [
- q(4507),
+ q(4535),
q(0),
],
q(mtd) => [
- q(4508),
+ q(4536),
q(0),
],
q(mte) => [
- q(4509),
+ q(4537),
q(0),
],
q(mtf) => [
- q(4510),
+ q(4538),
q(0),
],
q(mtg) => [
- q(4511),
+ q(4539),
q(0),
],
q(mth) => [
- q(4512),
+ q(4540),
q(0),
],
q(mti) => [
- q(4513),
+ q(4541),
q(0),
],
q(mtj) => [
- q(4514),
+ q(4542),
q(0),
],
q(mtk) => [
- q(4515),
+ q(4543),
q(0),
],
q(mtl) => [
- q(4516),
+ q(4544),
q(0),
],
q(mtm) => [
- q(4517),
+ q(4545),
q(0),
],
q(mtn) => [
- q(4518),
+ q(4546),
q(0),
],
q(mto) => [
- q(4519),
+ q(4547),
q(0),
],
q(mtp) => [
- q(4520),
+ q(4548),
q(0),
],
q(mtq) => [
- q(4521),
+ q(4549),
q(0),
],
q(mtr) => [
- q(4522),
+ q(4550),
q(0),
],
q(mts) => [
- q(4523),
+ q(4551),
q(0),
],
q(mtt) => [
- q(4524),
+ q(4552),
q(0),
],
q(mtu) => [
- q(4525),
+ q(4553),
q(0),
],
q(mtv) => [
- q(4526),
+ q(4554),
q(0),
],
q(mtw) => [
- q(4527),
+ q(4555),
q(0),
],
q(mtx) => [
- q(4528),
+ q(4556),
q(0),
],
q(mty) => [
- q(4529),
+ q(4557),
q(0),
],
q(mua) => [
- q(4530),
+ q(4558),
q(0),
],
q(mub) => [
- q(4531),
+ q(4559),
q(0),
],
q(muc) => [
- q(4532),
+ q(4560),
q(0),
],
q(mud) => [
- q(4533),
+ q(4561),
q(0),
],
q(mue) => [
- q(4534),
+ q(4562),
q(0),
],
q(mug) => [
- q(4535),
+ q(4563),
q(0),
],
q(muh) => [
- q(4536),
+ q(4564),
q(0),
],
q(mui) => [
- q(4537),
+ q(4565),
q(0),
],
q(muj) => [
- q(4538),
+ q(4566),
q(0),
],
q(muk) => [
- q(4539),
+ q(4567),
q(0),
],
q(mul) => [
@@ -74163,7 +74848,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mum) => [
- q(4540),
+ q(4568),
q(0),
],
q(mun) => [
@@ -74171,19 +74856,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(muo) => [
- q(4541),
+ q(4569),
q(0),
],
q(mup) => [
- q(4542),
+ q(4570),
q(0),
],
q(muq) => [
- q(4543),
+ q(4571),
q(0),
],
q(mur) => [
- q(4544),
+ q(4572),
q(0),
],
q(mus) => [
@@ -74191,167 +74876,167 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mut) => [
- q(4545),
+ q(4573),
q(0),
],
q(muu) => [
- q(4546),
+ q(4574),
q(0),
],
q(muv) => [
- q(4547),
+ q(4575),
q(0),
],
q(mux) => [
- q(4548),
+ q(4576),
q(0),
],
q(muy) => [
- q(4549),
+ q(4577),
q(0),
],
q(muz) => [
- q(4550),
+ q(4578),
q(0),
],
q(mva) => [
- q(4551),
+ q(4579),
q(0),
],
q(mvb) => [
- q(4552),
+ q(4580),
q(0),
],
q(mvd) => [
- q(4553),
+ q(4581),
q(0),
],
q(mve) => [
- q(4554),
+ q(4582),
q(0),
],
q(mvf) => [
- q(4555),
+ q(4583),
q(0),
],
q(mvg) => [
- q(4556),
+ q(4584),
q(0),
],
q(mvh) => [
- q(4557),
+ q(4585),
q(0),
],
q(mvi) => [
- q(4558),
+ q(4586),
q(0),
],
q(mvk) => [
- q(4559),
+ q(4587),
q(0),
],
q(mvl) => [
- q(4560),
+ q(4588),
q(0),
],
q(mvm) => [
- q(4561),
+ q(4589),
q(0),
],
q(mvn) => [
- q(4562),
+ q(4590),
q(0),
],
q(mvo) => [
- q(4563),
+ q(4591),
q(0),
],
q(mvp) => [
- q(4564),
+ q(4592),
q(0),
],
q(mvq) => [
- q(4565),
+ q(4593),
q(0),
],
q(mvr) => [
- q(4566),
+ q(4594),
q(0),
],
q(mvs) => [
- q(4567),
+ q(4595),
q(0),
],
q(mvt) => [
- q(4568),
+ q(4596),
q(0),
],
q(mvu) => [
- q(4569),
+ q(4597),
q(0),
],
q(mvv) => [
- q(4570),
+ q(4598),
q(0),
],
q(mvw) => [
- q(4571),
+ q(4599),
q(0),
],
q(mvx) => [
- q(4572),
+ q(4600),
q(0),
],
q(mvy) => [
- q(4573),
+ q(4601),
q(0),
],
q(mvz) => [
- q(4574),
+ q(4602),
q(0),
],
q(mwa) => [
- q(4575),
+ q(4603),
q(0),
],
q(mwb) => [
- q(4576),
+ q(4604),
q(0),
],
q(mwc) => [
- q(4577),
+ q(4605),
q(0),
],
q(mwd) => [
- q(4578),
+ q(4606),
q(0),
],
q(mwe) => [
- q(4579),
+ q(4607),
q(0),
],
q(mwf) => [
- q(4580),
+ q(4608),
q(0),
],
q(mwg) => [
- q(4581),
+ q(4609),
q(0),
],
q(mwh) => [
- q(4582),
+ q(4610),
q(0),
],
q(mwi) => [
- q(4583),
+ q(4611),
q(0),
],
q(mwj) => [
- q(4584),
+ q(4612),
q(0),
],
q(mwk) => [
- q(4585),
+ q(4613),
q(0),
],
q(mwl) => [
@@ -74359,23 +75044,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mwm) => [
- q(4586),
+ q(4614),
q(0),
],
q(mwn) => [
- q(4587),
+ q(4615),
q(0),
],
q(mwo) => [
- q(4588),
+ q(4616),
q(0),
],
q(mwp) => [
- q(4589),
+ q(4617),
q(0),
],
q(mwq) => [
- q(4590),
+ q(4618),
q(0),
],
q(mwr) => [
@@ -74383,187 +75068,187 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(mws) => [
- q(4591),
+ q(4619),
q(0),
],
q(mwt) => [
- q(4592),
+ q(4620),
q(0),
],
q(mwu) => [
- q(4593),
+ q(4621),
q(0),
],
q(mwv) => [
- q(4594),
+ q(4622),
q(0),
],
q(mww) => [
- q(4595),
+ q(4623),
q(0),
],
q(mwx) => [
- q(4596),
+ q(4624),
q(0),
],
q(mwy) => [
- q(4597),
+ q(4625),
q(0),
],
q(mwz) => [
- q(4598),
+ q(4626),
q(0),
],
q(mxa) => [
- q(4599),
+ q(4627),
q(0),
],
q(mxb) => [
- q(4600),
+ q(4628),
q(0),
],
q(mxc) => [
- q(4601),
+ q(4629),
q(0),
],
q(mxd) => [
- q(4602),
+ q(4630),
q(0),
],
q(mxe) => [
- q(4603),
+ q(4631),
q(0),
],
q(mxf) => [
- q(4604),
+ q(4632),
q(0),
],
q(mxg) => [
- q(4605),
+ q(4633),
q(0),
],
q(mxh) => [
- q(4606),
+ q(4634),
q(0),
],
q(mxi) => [
- q(4607),
+ q(4635),
q(0),
],
q(mxj) => [
- q(4608),
+ q(4636),
q(0),
],
q(mxk) => [
- q(4609),
+ q(4637),
q(0),
],
q(mxl) => [
- q(4610),
+ q(4638),
q(0),
],
q(mxm) => [
- q(4611),
+ q(4639),
q(0),
],
q(mxn) => [
- q(4612),
+ q(4640),
q(0),
],
q(mxo) => [
- q(4613),
+ q(4641),
q(0),
],
q(mxp) => [
- q(4614),
+ q(4642),
q(0),
],
q(mxq) => [
- q(4615),
+ q(4643),
q(0),
],
q(mxr) => [
- q(4616),
+ q(4644),
q(0),
],
q(mxs) => [
- q(4617),
+ q(4645),
q(0),
],
q(mxt) => [
- q(4618),
+ q(4646),
q(0),
],
q(mxu) => [
- q(4619),
+ q(4647),
q(0),
],
q(mxv) => [
- q(4620),
+ q(4648),
q(0),
],
q(mxw) => [
- q(4621),
+ q(4649),
q(0),
],
q(mxx) => [
- q(4622),
+ q(4650),
q(0),
],
q(mxy) => [
- q(4623),
+ q(4651),
q(0),
],
q(mxz) => [
- q(4624),
+ q(4652),
q(0),
],
q(myb) => [
- q(4625),
+ q(4653),
q(0),
],
q(myc) => [
- q(4626),
+ q(4654),
q(0),
],
q(myd) => [
- q(4627),
+ q(4655),
q(0),
],
q(mye) => [
- q(4628),
+ q(4656),
q(0),
],
q(myf) => [
- q(4629),
+ q(4657),
q(0),
],
q(myg) => [
- q(4630),
+ q(4658),
q(0),
],
q(myh) => [
- q(4631),
+ q(4659),
q(0),
],
q(myi) => [
- q(4632),
+ q(4660),
q(0),
],
q(myj) => [
- q(4633),
+ q(4661),
q(0),
],
q(myk) => [
- q(4634),
+ q(4662),
q(0),
],
q(myl) => [
- q(4635),
+ q(4663),
q(0),
],
q(mym) => [
- q(4636),
+ q(4664),
q(0),
],
q(myn) => [
@@ -74571,27 +75256,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(myo) => [
- q(4637),
+ q(4665),
q(0),
],
q(myp) => [
- q(4638),
+ q(4666),
q(0),
],
q(myq) => [
- q(4639),
+ q(4667),
q(0),
],
q(myr) => [
- q(4640),
+ q(4668),
q(0),
],
q(mys) => [
- q(4641),
+ q(4669),
q(0),
],
q(myu) => [
- q(4642),
+ q(4670),
q(0),
],
q(myv) => [
@@ -74599,147 +75284,147 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(myw) => [
- q(4643),
+ q(4671),
q(0),
],
q(myx) => [
- q(4644),
+ q(4672),
q(0),
],
q(myy) => [
- q(4645),
+ q(4673),
q(0),
],
q(myz) => [
- q(4646),
+ q(4674),
q(0),
],
q(mza) => [
- q(4647),
+ q(4675),
q(0),
],
q(mzb) => [
- q(4648),
+ q(4676),
q(0),
],
q(mzc) => [
- q(4649),
+ q(4677),
q(0),
],
q(mzd) => [
- q(4650),
+ q(4678),
q(0),
],
q(mze) => [
- q(4651),
+ q(4679),
q(0),
],
q(mzg) => [
- q(4652),
+ q(4680),
q(0),
],
q(mzh) => [
- q(4653),
+ q(4681),
q(0),
],
q(mzi) => [
- q(4654),
+ q(4682),
q(0),
],
q(mzj) => [
- q(4655),
+ q(4683),
q(0),
],
q(mzk) => [
- q(4656),
+ q(4684),
q(0),
],
q(mzl) => [
- q(4657),
+ q(4685),
q(0),
],
q(mzm) => [
- q(4658),
+ q(4686),
q(0),
],
q(mzn) => [
- q(4659),
+ q(4687),
q(0),
],
q(mzo) => [
- q(4660),
+ q(4688),
q(0),
],
q(mzp) => [
- q(4661),
+ q(4689),
q(0),
],
q(mzq) => [
- q(4662),
+ q(4690),
q(0),
],
q(mzr) => [
- q(4663),
+ q(4691),
q(0),
],
q(mzs) => [
- q(4664),
+ q(4692),
q(0),
],
q(mzt) => [
- q(4665),
+ q(4693),
q(0),
],
q(mzu) => [
- q(4666),
+ q(4694),
q(0),
],
q(mzv) => [
- q(4667),
+ q(4695),
q(0),
],
q(mzw) => [
- q(4668),
+ q(4696),
q(0),
],
q(mzx) => [
- q(4669),
+ q(4697),
q(0),
],
q(mzy) => [
- q(4670),
+ q(4698),
q(0),
],
q(mzz) => [
- q(4671),
+ q(4699),
q(0),
],
q(naa) => [
- q(4672),
+ q(4700),
q(0),
],
q(nab) => [
- q(4673),
+ q(4701),
q(0),
],
q(nac) => [
- q(4674),
+ q(4702),
q(0),
],
q(nad) => [
- q(4675),
+ q(4703),
q(0),
],
q(nae) => [
- q(4676),
+ q(4704),
q(0),
],
q(naf) => [
- q(4677),
+ q(4705),
q(0),
],
q(nag) => [
- q(4678),
+ q(4706),
q(0),
],
q(nah) => [
@@ -74751,27 +75436,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(naj) => [
- q(4679),
+ q(4707),
q(0),
],
q(nak) => [
- q(4680),
+ q(4708),
q(0),
],
q(nal) => [
- q(4681),
+ q(4709),
q(0),
],
q(nam) => [
- q(4682),
+ q(4710),
q(0),
],
q(nan) => [
- q(4683),
+ q(4711),
q(0),
],
q(nao) => [
- q(4684),
+ q(4712),
q(0),
],
q(nap) => [
@@ -74779,19 +75464,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(naq) => [
- q(4685),
+ q(4713),
q(0),
],
q(nar) => [
- q(4686),
+ q(4714),
q(0),
],
q(nas) => [
- q(4687),
+ q(4715),
q(0),
],
q(nat) => [
- q(4688),
+ q(4716),
q(0),
],
q(nau) => [
@@ -74803,59 +75488,59 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(naw) => [
- q(4689),
+ q(4717),
q(0),
],
q(nax) => [
- q(4690),
+ q(4718),
q(0),
],
q(nay) => [
- q(4691),
+ q(4719),
q(0),
],
q(naz) => [
- q(4692),
+ q(4720),
q(0),
],
q(nba) => [
- q(4693),
+ q(4721),
q(0),
],
q(nbb) => [
- q(4694),
+ q(4722),
q(0),
],
q(nbc) => [
- q(4695),
+ q(4723),
q(0),
],
q(nbd) => [
- q(4696),
+ q(4724),
q(0),
],
q(nbe) => [
- q(4697),
+ q(4725),
q(0),
],
q(nbg) => [
- q(4698),
+ q(4726),
q(0),
],
q(nbh) => [
- q(4699),
+ q(4727),
q(0),
],
q(nbi) => [
- q(4700),
+ q(4728),
q(0),
],
q(nbj) => [
- q(4701),
+ q(4729),
q(0),
],
q(nbk) => [
- q(4702),
+ q(4730),
q(0),
],
q(nbl) => [
@@ -74863,159 +75548,159 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nbm) => [
- q(4703),
+ q(4731),
q(0),
],
q(nbn) => [
- q(4704),
+ q(4732),
q(0),
],
q(nbo) => [
- q(4705),
+ q(4733),
q(0),
],
q(nbp) => [
- q(4706),
+ q(4734),
q(0),
],
q(nbq) => [
- q(4707),
+ q(4735),
q(0),
],
q(nbr) => [
- q(4708),
+ q(4736),
q(0),
],
q(nbs) => [
- q(4709),
+ q(4737),
q(0),
],
q(nbt) => [
- q(4710),
+ q(4738),
q(0),
],
q(nbu) => [
- q(4711),
+ q(4739),
q(0),
],
q(nbv) => [
- q(4712),
+ q(4740),
q(0),
],
q(nbw) => [
- q(4713),
+ q(4741),
q(0),
],
q(nbx) => [
- q(4714),
+ q(4742),
q(0),
],
q(nby) => [
- q(4715),
+ q(4743),
q(0),
],
q(nca) => [
- q(4716),
+ q(4744),
q(0),
],
q(ncb) => [
- q(4717),
+ q(4745),
q(0),
],
q(ncc) => [
- q(4718),
+ q(4746),
q(0),
],
q(ncd) => [
- q(4719),
+ q(4747),
q(0),
],
q(nce) => [
- q(4720),
+ q(4748),
q(0),
],
q(ncf) => [
- q(4721),
+ q(4749),
q(0),
],
q(ncg) => [
- q(4722),
+ q(4750),
q(0),
],
q(nch) => [
- q(4723),
+ q(4751),
q(0),
],
q(nci) => [
- q(4724),
+ q(4752),
q(0),
],
q(ncj) => [
- q(4725),
+ q(4753),
q(0),
],
q(nck) => [
- q(4726),
+ q(4754),
q(0),
],
q(ncl) => [
- q(4727),
+ q(4755),
q(0),
],
q(ncm) => [
- q(4728),
+ q(4756),
q(0),
],
q(ncn) => [
- q(4729),
+ q(4757),
q(0),
],
q(nco) => [
- q(4730),
+ q(4758),
q(0),
],
q(ncp) => [
- q(4731),
+ q(4759),
q(0),
],
q(ncr) => [
- q(4732),
+ q(4760),
q(0),
],
q(ncs) => [
- q(4733),
+ q(4761),
q(0),
],
q(nct) => [
- q(4734),
+ q(4762),
q(0),
],
q(ncu) => [
- q(4735),
+ q(4763),
q(0),
],
q(ncx) => [
- q(4736),
+ q(4764),
q(0),
],
q(ncz) => [
- q(4737),
+ q(4765),
q(0),
],
q(nda) => [
- q(4738),
+ q(4766),
q(0),
],
q(ndb) => [
- q(4739),
+ q(4767),
q(0),
],
q(ndc) => [
- q(4740),
+ q(4768),
q(0),
],
q(ndd) => [
- q(4741),
+ q(4769),
q(0),
],
q(nde) => [
@@ -75023,39 +75708,39 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ndf) => [
- q(4742),
+ q(4770),
q(0),
],
q(ndg) => [
- q(4743),
+ q(4771),
q(0),
],
q(ndh) => [
- q(4744),
+ q(4772),
q(0),
],
q(ndi) => [
- q(4745),
+ q(4773),
q(0),
],
q(ndj) => [
- q(4746),
+ q(4774),
q(0),
],
q(ndk) => [
- q(4747),
+ q(4775),
q(0),
],
q(ndl) => [
- q(4748),
+ q(4776),
q(0),
],
q(ndm) => [
- q(4749),
+ q(4777),
q(0),
],
q(ndn) => [
- q(4750),
+ q(4778),
q(0),
],
q(ndo) => [
@@ -75063,15 +75748,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ndp) => [
- q(4751),
+ q(4779),
q(0),
],
q(ndq) => [
- q(4752),
+ q(4780),
q(0),
],
q(ndr) => [
- q(4753),
+ q(4781),
q(0),
],
q(nds) => [
@@ -75079,87 +75764,87 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ndt) => [
- q(4754),
+ q(4782),
q(0),
],
q(ndu) => [
- q(4755),
+ q(4783),
q(0),
],
q(ndv) => [
- q(4756),
+ q(4784),
q(0),
],
q(ndw) => [
- q(4757),
+ q(4785),
q(0),
],
q(ndx) => [
- q(4758),
+ q(4786),
q(0),
],
q(ndy) => [
- q(4759),
+ q(4787),
q(0),
],
q(ndz) => [
- q(4760),
+ q(4788),
q(0),
],
q(nea) => [
- q(4761),
+ q(4789),
q(0),
],
q(neb) => [
- q(4762),
+ q(4790),
q(0),
],
q(nec) => [
- q(4763),
+ q(4791),
q(0),
],
q(ned) => [
- q(4764),
+ q(4792),
q(0),
],
q(nee) => [
- q(4765),
+ q(4793),
q(0),
],
q(nef) => [
- q(4766),
+ q(4794),
q(0),
],
q(neg) => [
- q(4767),
+ q(4795),
q(0),
],
q(neh) => [
- q(4768),
+ q(4796),
q(0),
],
q(nei) => [
- q(4769),
+ q(4797),
q(0),
],
q(nej) => [
- q(4770),
+ q(4798),
q(0),
],
q(nek) => [
- q(4771),
+ q(4799),
q(0),
],
q(nem) => [
- q(4772),
+ q(4800),
q(0),
],
q(nen) => [
- q(4773),
+ q(4801),
q(0),
],
q(neo) => [
- q(4774),
+ q(4802),
q(0),
],
q(nep) => [
@@ -75167,23 +75852,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(neq) => [
- q(4775),
+ q(4803),
q(0),
],
q(ner) => [
- q(4776),
+ q(4804),
q(0),
],
q(nes) => [
- q(4777),
+ q(4805),
q(0),
],
q(net) => [
- q(4778),
+ q(4806),
+ q(0),
+ ],
+ q(neu) => [
+ q(4807),
q(0),
],
q(nev) => [
- q(4779),
+ q(4808),
q(0),
],
q(new) => [
@@ -75191,231 +75880,231 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nex) => [
- q(4780),
+ q(4809),
q(0),
],
q(ney) => [
- q(4781),
+ q(4810),
q(0),
],
q(nez) => [
- q(4782),
+ q(4811),
q(0),
],
q(nfa) => [
- q(4783),
+ q(4812),
q(0),
],
q(nfd) => [
- q(4784),
+ q(4813),
q(0),
],
q(nfl) => [
- q(4785),
+ q(4814),
q(0),
],
q(nfr) => [
- q(4786),
+ q(4815),
q(0),
],
q(nfu) => [
- q(4787),
+ q(4816),
q(0),
],
q(nga) => [
- q(4788),
+ q(4817),
q(0),
],
q(ngb) => [
- q(4789),
+ q(4818),
q(0),
],
q(ngc) => [
- q(4790),
+ q(4819),
q(0),
],
q(ngd) => [
- q(4791),
+ q(4820),
q(0),
],
q(nge) => [
- q(4792),
+ q(4821),
q(0),
],
q(ngf) => [
- q(0515),
+ q(0516),
q(0),
],
q(ngg) => [
- q(4793),
+ q(4822),
q(0),
],
q(ngh) => [
- q(4794),
+ q(4823),
q(0),
],
q(ngi) => [
- q(4795),
+ q(4824),
q(0),
],
q(ngj) => [
- q(4796),
+ q(4825),
q(0),
],
q(ngk) => [
- q(4797),
+ q(4826),
q(0),
],
q(ngl) => [
- q(4798),
+ q(4827),
q(0),
],
q(ngm) => [
- q(4799),
+ q(4828),
q(0),
],
q(ngn) => [
- q(4800),
+ q(4829),
q(0),
],
q(ngo) => [
- q(4801),
+ q(4830),
q(0),
],
q(ngp) => [
- q(4802),
+ q(4831),
q(0),
],
q(ngq) => [
- q(4803),
+ q(4832),
q(0),
],
q(ngr) => [
- q(4804),
+ q(4833),
q(0),
],
q(ngs) => [
- q(4805),
+ q(4834),
q(0),
],
q(ngt) => [
- q(4806),
+ q(4835),
q(0),
],
q(ngu) => [
- q(4807),
+ q(4836),
q(0),
],
q(ngv) => [
- q(4808),
+ q(4837),
q(0),
],
q(ngw) => [
- q(4809),
+ q(4838),
q(0),
],
q(ngx) => [
- q(4810),
+ q(4839),
q(0),
],
q(ngy) => [
- q(4811),
+ q(4840),
q(0),
],
q(ngz) => [
- q(4812),
+ q(4841),
q(0),
],
q(nha) => [
- q(4813),
+ q(4842),
q(0),
],
q(nhb) => [
- q(4814),
+ q(4843),
q(0),
],
q(nhc) => [
- q(4815),
+ q(4844),
q(0),
],
q(nhd) => [
- q(4816),
+ q(4845),
q(0),
],
q(nhe) => [
- q(4817),
+ q(4846),
q(0),
],
q(nhf) => [
- q(4818),
+ q(4847),
q(0),
],
q(nhg) => [
- q(4819),
+ q(4848),
q(0),
],
q(nhh) => [
- q(4820),
+ q(4849),
q(0),
],
q(nhi) => [
- q(4821),
+ q(4850),
q(0),
],
q(nhk) => [
- q(4822),
+ q(4851),
q(0),
],
q(nhm) => [
- q(4823),
+ q(4852),
q(0),
],
q(nhn) => [
- q(4824),
+ q(4853),
q(0),
],
q(nho) => [
- q(4825),
+ q(4854),
q(0),
],
q(nhp) => [
- q(4826),
+ q(4855),
q(0),
],
q(nhq) => [
- q(4827),
+ q(4856),
q(0),
],
q(nhr) => [
- q(4828),
+ q(4857),
q(0),
],
q(nht) => [
- q(4829),
+ q(4858),
q(0),
],
q(nhu) => [
- q(4830),
+ q(4859),
q(0),
],
q(nhv) => [
- q(4831),
+ q(4860),
q(0),
],
q(nhw) => [
- q(4832),
+ q(4861),
q(0),
],
q(nhx) => [
- q(4833),
+ q(4862),
q(0),
],
q(nhy) => [
- q(4834),
+ q(4863),
q(0),
],
q(nhz) => [
- q(4835),
+ q(4864),
q(0),
],
q(nia) => [
@@ -75423,7 +76112,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nib) => [
- q(4836),
+ q(4865),
q(0),
],
q(nic) => [
@@ -75431,67 +76120,67 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nid) => [
- q(4837),
+ q(4866),
q(0),
],
q(nie) => [
- q(4838),
+ q(4867),
q(0),
],
q(nif) => [
- q(4839),
+ q(4868),
q(0),
],
q(nig) => [
- q(4840),
+ q(4869),
q(0),
],
q(nih) => [
- q(4841),
+ q(4870),
q(0),
],
q(nii) => [
- q(4842),
+ q(4871),
q(0),
],
q(nij) => [
- q(4843),
+ q(4872),
q(0),
],
q(nik) => [
- q(4844),
+ q(4873),
q(0),
],
q(nil) => [
- q(4845),
+ q(4874),
q(0),
],
q(nim) => [
- q(4846),
+ q(4875),
q(0),
],
q(nin) => [
- q(4847),
+ q(4876),
q(0),
],
q(nio) => [
- q(4848),
+ q(4877),
q(0),
],
q(niq) => [
- q(4849),
+ q(4878),
q(0),
],
q(nir) => [
- q(4850),
+ q(4879),
q(0),
],
q(nis) => [
- q(4851),
+ q(4880),
q(0),
],
q(nit) => [
- q(4852),
+ q(4881),
q(0),
],
q(niu) => [
@@ -75499,407 +76188,407 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(niv) => [
- q(4853),
+ q(4882),
q(0),
],
q(niw) => [
- q(4854),
+ q(4883),
q(0),
],
q(nix) => [
- q(4855),
+ q(4884),
q(0),
],
q(niy) => [
- q(4856),
+ q(4885),
q(0),
],
q(niz) => [
- q(4857),
+ q(4886),
q(0),
],
q(nja) => [
- q(4858),
+ q(4887),
q(0),
],
q(njb) => [
- q(4859),
+ q(4888),
q(0),
],
q(njd) => [
- q(4860),
+ q(4889),
q(0),
],
q(njh) => [
- q(4861),
+ q(4890),
q(0),
],
q(nji) => [
- q(4862),
+ q(4891),
q(0),
],
q(njj) => [
- q(4863),
+ q(4892),
q(0),
],
q(njl) => [
- q(4864),
+ q(4893),
q(0),
],
q(njm) => [
- q(4865),
+ q(4894),
q(0),
],
q(njn) => [
- q(4866),
+ q(4895),
q(0),
],
q(njo) => [
- q(4867),
+ q(4896),
q(0),
],
q(njr) => [
- q(4868),
+ q(4897),
q(0),
],
q(njs) => [
- q(4869),
+ q(4898),
q(0),
],
q(njt) => [
- q(4870),
+ q(4899),
q(0),
],
q(nju) => [
- q(4871),
+ q(4900),
q(0),
],
q(njx) => [
- q(4872),
+ q(4901),
q(0),
],
q(njy) => [
- q(4873),
+ q(4902),
+ q(0),
+ ],
+ q(njz) => [
+ q(4903),
q(0),
],
q(nka) => [
- q(4874),
+ q(4904),
q(0),
],
q(nkb) => [
- q(4875),
+ q(4905),
q(0),
],
q(nkc) => [
- q(4876),
+ q(4906),
q(0),
],
q(nkd) => [
- q(4877),
+ q(4907),
q(0),
],
q(nke) => [
- q(4878),
+ q(4908),
q(0),
],
q(nkf) => [
- q(4879),
+ q(4909),
q(0),
],
q(nkg) => [
- q(4880),
+ q(4910),
q(0),
],
q(nkh) => [
- q(4881),
+ q(4911),
q(0),
],
q(nki) => [
- q(4882),
+ q(4912),
q(0),
],
q(nkj) => [
- q(4883),
+ q(4913),
q(0),
],
q(nkk) => [
- q(4884),
+ q(4914),
q(0),
],
q(nkm) => [
- q(4885),
+ q(4915),
q(0),
],
q(nkn) => [
- q(4886),
+ q(4916),
q(0),
],
q(nko) => [
- q(4887),
+ q(4917),
q(0),
],
q(nkp) => [
- q(4888),
+ q(4918),
q(0),
],
q(nkq) => [
- q(4889),
+ q(4919),
q(0),
],
q(nkr) => [
- q(4890),
+ q(4920),
q(0),
],
q(nks) => [
- q(4891),
+ q(4921),
q(0),
],
q(nkt) => [
- q(4892),
+ q(4922),
q(0),
],
q(nku) => [
- q(4893),
+ q(4923),
q(0),
],
q(nkv) => [
- q(4894),
+ q(4924),
q(0),
],
q(nkw) => [
- q(4895),
+ q(4925),
q(0),
],
q(nkx) => [
- q(4896),
+ q(4926),
q(0),
],
q(nkz) => [
- q(4897),
+ q(4927),
q(0),
],
q(nla) => [
- q(4898),
+ q(4928),
q(0),
],
q(nlc) => [
- q(4899),
+ q(4929),
q(0),
],
q(nle) => [
- q(4900),
+ q(4930),
q(0),
],
q(nlg) => [
- q(4901),
+ q(4931),
q(0),
],
q(nli) => [
- q(4902),
+ q(4932),
q(0),
],
q(nlj) => [
- q(4903),
+ q(4933),
q(0),
],
q(nlk) => [
- q(4904),
+ q(4934),
q(0),
],
q(nll) => [
- q(4905),
- q(0),
- ],
- q(nln) => [
- q(4906),
+ q(4935),
q(0),
],
q(nlo) => [
- q(4907),
+ q(4936),
q(0),
],
q(nlr) => [
- q(4908),
+ q(4937),
q(0),
],
q(nlu) => [
- q(4909),
+ q(4938),
q(0),
],
q(nlv) => [
- q(4910),
+ q(4939),
q(0),
],
q(nlx) => [
- q(4911),
+ q(4940),
q(0),
],
q(nly) => [
- q(4912),
+ q(4941),
q(0),
],
q(nlz) => [
- q(4913),
+ q(4942),
q(0),
],
q(nma) => [
- q(4914),
+ q(4943),
q(0),
],
q(nmb) => [
- q(4915),
+ q(4944),
q(0),
],
q(nmc) => [
- q(4916),
+ q(4945),
q(0),
],
q(nmd) => [
- q(4917),
+ q(4946),
q(0),
],
q(nme) => [
- q(4918),
+ q(4947),
q(0),
],
q(nmf) => [
- q(4919),
+ q(4948),
q(0),
],
q(nmg) => [
- q(4920),
+ q(4949),
q(0),
],
q(nmh) => [
- q(4921),
+ q(4950),
q(0),
],
q(nmi) => [
- q(4922),
+ q(4951),
q(0),
],
q(nmj) => [
- q(4923),
+ q(4952),
q(0),
],
q(nmk) => [
- q(4924),
+ q(4953),
q(0),
],
q(nml) => [
- q(4925),
+ q(4954),
q(0),
],
q(nmm) => [
- q(4926),
+ q(4955),
q(0),
],
q(nmn) => [
- q(4927),
+ q(4956),
q(0),
],
q(nmo) => [
- q(4928),
+ q(4957),
q(0),
],
q(nmp) => [
- q(4929),
+ q(4958),
q(0),
],
q(nmq) => [
- q(4930),
+ q(4959),
q(0),
],
q(nmr) => [
- q(4931),
+ q(4960),
q(0),
],
q(nms) => [
- q(4932),
+ q(4961),
q(0),
],
q(nmt) => [
- q(4933),
+ q(4962),
q(0),
],
q(nmu) => [
- q(4934),
+ q(4963),
q(0),
],
q(nmv) => [
- q(4935),
+ q(4964),
q(0),
],
q(nmw) => [
- q(4936),
+ q(4965),
q(0),
],
q(nmx) => [
- q(4937),
+ q(4966),
q(0),
],
q(nmy) => [
- q(4938),
+ q(4967),
q(0),
],
q(nmz) => [
- q(4939),
+ q(4968),
q(0),
],
q(nna) => [
- q(4940),
+ q(4969),
q(0),
],
q(nnb) => [
- q(4941),
+ q(4970),
q(0),
],
q(nnc) => [
- q(4942),
+ q(4971),
q(0),
],
q(nnd) => [
- q(4943),
+ q(4972),
q(0),
],
q(nne) => [
- q(4944),
+ q(4973),
q(0),
],
q(nnf) => [
- q(4945),
+ q(4974),
q(0),
],
q(nng) => [
- q(4946),
+ q(4975),
q(0),
],
q(nnh) => [
- q(4947),
+ q(4976),
q(0),
],
q(nni) => [
- q(4948),
+ q(4977),
q(0),
],
q(nnj) => [
- q(4949),
+ q(4978),
q(0),
],
q(nnk) => [
- q(4950),
+ q(4979),
q(0),
],
q(nnl) => [
- q(4951),
+ q(4980),
q(0),
],
q(nnm) => [
- q(4952),
+ q(4981),
q(0),
],
q(nnn) => [
- q(4953),
+ q(4982),
q(0),
],
q(nno) => [
@@ -75907,51 +76596,51 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nnp) => [
- q(4954),
+ q(4983),
q(0),
],
q(nnq) => [
- q(4955),
+ q(4984),
q(0),
],
q(nnr) => [
- q(4956),
+ q(4985),
q(0),
],
q(nns) => [
- q(4957),
+ q(4986),
q(0),
],
q(nnt) => [
- q(4958),
+ q(4987),
q(0),
],
q(nnu) => [
- q(4959),
+ q(4988),
q(0),
],
q(nnv) => [
- q(4960),
+ q(4989),
q(0),
],
q(nnw) => [
- q(4961),
+ q(4990),
q(0),
],
q(nnx) => [
- q(4962),
+ q(4991),
q(0),
],
q(nny) => [
- q(4963),
+ q(4992),
q(0),
],
q(nnz) => [
- q(4964),
+ q(4993),
q(0),
],
q(noa) => [
- q(4965),
+ q(4994),
q(0),
],
q(nob) => [
@@ -75959,19 +76648,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(noc) => [
- q(4966),
+ q(4995),
q(0),
],
q(nod) => [
- q(4967),
+ q(4996),
q(0),
],
q(noe) => [
- q(4968),
+ q(4997),
q(0),
],
q(nof) => [
- q(4969),
+ q(4998),
q(0),
],
q(nog) => [
@@ -75979,23 +76668,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(noh) => [
- q(4970),
+ q(4999),
q(0),
],
q(noi) => [
- q(4971),
+ q(5000),
q(0),
],
q(noj) => [
- q(4972),
+ q(5001),
q(0),
],
q(nok) => [
- q(4973),
+ q(5002),
q(0),
],
q(nom) => [
- q(4974),
+ q(5003),
q(0),
],
q(non) => [
@@ -76003,11 +76692,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(nop) => [
- q(4975),
+ q(5004),
q(0),
],
q(noq) => [
- q(4976),
+ q(5005),
q(0),
],
q(nor) => [
@@ -76015,191 +76704,207 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nos) => [
- q(4977),
+ q(5006),
q(0),
],
q(not) => [
- q(4978),
+ q(5007),
q(0),
],
q(nou) => [
- q(4979),
+ q(5008),
q(0),
],
q(nov) => [
- q(4980),
+ q(5009),
q(0),
],
q(now) => [
- q(4981),
+ q(5010),
q(0),
],
q(noy) => [
- q(4982),
+ q(5011),
q(0),
],
q(noz) => [
- q(4983),
+ q(5012),
q(0),
],
q(npa) => [
- q(4984),
+ q(5013),
q(0),
],
q(npb) => [
- q(4985),
+ q(5014),
+ q(0),
+ ],
+ q(npg) => [
+ q(5015),
q(0),
],
q(nph) => [
- q(4986),
+ q(5016),
+ q(0),
+ ],
+ q(npi) => [
+ q(5017),
q(0),
],
q(npl) => [
- q(4987),
+ q(5018),
q(0),
],
q(npn) => [
- q(4988),
+ q(5019),
q(0),
],
q(npo) => [
- q(4989),
+ q(5020),
q(0),
],
q(nps) => [
- q(4990),
+ q(5021),
q(0),
],
q(npu) => [
- q(4991),
+ q(5022),
q(0),
],
q(npy) => [
- q(4992),
+ q(5023),
q(0),
],
q(nqg) => [
- q(4993),
+ q(5024),
q(0),
],
q(nqk) => [
- q(4994),
+ q(5025),
q(0),
],
q(nqm) => [
- q(4995),
+ q(5026),
q(0),
],
q(nqn) => [
- q(4996),
+ q(5027),
q(0),
],
q(nqo) => [
q(0317),
q(0),
],
+ q(nqy) => [
+ q(5028),
+ q(0),
+ ],
q(nra) => [
- q(4997),
+ q(5029),
q(0),
],
q(nrb) => [
- q(4998),
+ q(5030),
q(0),
],
q(nrc) => [
- q(4999),
+ q(5031),
q(0),
],
q(nre) => [
- q(5000),
+ q(5032),
q(0),
],
q(nrg) => [
- q(5001),
+ q(5033),
q(0),
],
q(nri) => [
- q(5002),
+ q(5034),
q(0),
],
q(nrl) => [
- q(5003),
+ q(5035),
q(0),
],
q(nrm) => [
- q(5004),
+ q(5036),
q(0),
],
q(nrn) => [
- q(5005),
+ q(5037),
q(0),
],
q(nrp) => [
- q(5006),
+ q(5038),
q(0),
],
q(nrr) => [
- q(5007),
+ q(5039),
q(0),
],
q(nrt) => [
- q(5008),
+ q(5040),
q(0),
],
q(nru) => [
- q(5009),
+ q(5041),
q(0),
],
q(nrx) => [
- q(5010),
+ q(5042),
q(0),
],
q(nrz) => [
- q(5011),
+ q(5043),
q(0),
],
q(nsa) => [
- q(5012),
+ q(5044),
q(0),
],
q(nsc) => [
- q(5013),
+ q(5045),
q(0),
],
q(nsd) => [
- q(5014),
+ q(5046),
q(0),
],
q(nse) => [
- q(5015),
+ q(5047),
+ q(0),
+ ],
+ q(nsf) => [
+ q(5048),
q(0),
],
q(nsg) => [
- q(5016),
+ q(5049),
q(0),
],
q(nsh) => [
- q(5017),
+ q(5050),
q(0),
],
q(nsi) => [
- q(5018),
+ q(5051),
q(0),
],
q(nsk) => [
- q(5019),
+ q(5052),
q(0),
],
q(nsl) => [
- q(5020),
+ q(5053),
q(0),
],
q(nsm) => [
- q(5021),
+ q(5054),
q(0),
],
q(nsn) => [
- q(5022),
+ q(5055),
q(0),
],
q(nso) => [
@@ -76207,103 +76912,107 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nsp) => [
- q(5023),
+ q(5056),
q(0),
],
q(nsq) => [
- q(5024),
+ q(5057),
q(0),
],
q(nsr) => [
- q(5025),
+ q(5058),
q(0),
],
q(nss) => [
- q(5026),
+ q(5059),
q(0),
],
q(nst) => [
- q(5027),
+ q(5060),
q(0),
],
q(nsu) => [
- q(5028),
+ q(5061),
q(0),
],
q(nsv) => [
- q(5029),
+ q(5062),
q(0),
],
q(nsw) => [
- q(5030),
+ q(5063),
q(0),
],
q(nsx) => [
- q(5031),
+ q(5064),
q(0),
],
q(nsy) => [
- q(5032),
+ q(5065),
q(0),
],
q(nsz) => [
- q(5033),
+ q(5066),
q(0),
],
q(nte) => [
- q(5034),
+ q(5067),
q(0),
],
q(nti) => [
- q(5035),
+ q(5068),
q(0),
],
q(ntj) => [
- q(5036),
+ q(5069),
q(0),
],
q(ntk) => [
- q(5037),
+ q(5070),
q(0),
],
q(ntm) => [
- q(5038),
+ q(5071),
q(0),
],
q(nto) => [
- q(5039),
+ q(5072),
q(0),
],
q(ntp) => [
- q(5040),
+ q(5073),
q(0),
],
q(ntr) => [
- q(5041),
+ q(5074),
q(0),
],
q(nts) => [
- q(5042),
+ q(5075),
q(0),
],
q(ntu) => [
- q(5043),
+ q(5076),
q(0),
],
q(ntw) => [
- q(5044),
+ q(5077),
+ q(0),
+ ],
+ q(ntx) => [
+ q(5078),
q(0),
],
q(nty) => [
- q(5045),
+ q(5079),
q(0),
],
q(ntz) => [
- q(5046),
+ q(5080),
q(0),
],
q(nua) => [
- q(5047),
+ q(5081),
q(0),
],
q(nub) => [
@@ -76311,115 +77020,119 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nuc) => [
- q(5048),
+ q(5082),
q(0),
],
q(nud) => [
- q(5049),
+ q(5083),
q(0),
],
q(nue) => [
- q(5050),
+ q(5084),
q(0),
],
q(nuf) => [
- q(5051),
+ q(5085),
q(0),
],
q(nug) => [
- q(5052),
+ q(5086),
q(0),
],
q(nuh) => [
- q(5053),
+ q(5087),
q(0),
],
q(nui) => [
- q(5054),
+ q(5088),
q(0),
],
q(nuj) => [
- q(5055),
+ q(5089),
q(0),
],
q(nuk) => [
- q(5056),
+ q(5090),
q(0),
],
q(nul) => [
- q(5057),
+ q(5091),
q(0),
],
q(num) => [
- q(5058),
+ q(5092),
q(0),
],
q(nun) => [
- q(5059),
+ q(5093),
q(0),
],
q(nuo) => [
- q(5060),
+ q(5094),
q(0),
],
q(nup) => [
- q(5061),
+ q(5095),
q(0),
],
q(nuq) => [
- q(5062),
+ q(5096),
q(0),
],
q(nur) => [
- q(5063),
+ q(5097),
q(0),
],
q(nus) => [
- q(5064),
+ q(5098),
q(0),
],
q(nut) => [
- q(5065),
+ q(5099),
q(0),
],
q(nuu) => [
- q(5066),
+ q(5100),
q(0),
],
q(nuv) => [
- q(5067),
+ q(5101),
q(0),
],
q(nuw) => [
- q(5068),
+ q(5102),
q(0),
],
q(nux) => [
- q(5069),
+ q(5103),
q(0),
],
q(nuy) => [
- q(5070),
+ q(5104),
q(0),
],
q(nuz) => [
- q(5071),
+ q(5105),
q(0),
],
q(nvh) => [
- q(5072),
+ q(5106),
q(0),
],
q(nvm) => [
- q(5073),
+ q(5107),
+ q(0),
+ ],
+ q(nvo) => [
+ q(5108),
q(0),
],
q(nwa) => [
- q(5074),
+ q(5109),
q(0),
],
q(nwb) => [
- q(5075),
+ q(5110),
q(0),
],
q(nwc) => [
@@ -76427,75 +77140,87 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nwe) => [
- q(5076),
+ q(5111),
+ q(0),
+ ],
+ q(nwg) => [
+ q(5112),
q(0),
],
q(nwi) => [
- q(5077),
+ q(5113),
q(0),
],
q(nwm) => [
- q(5078),
+ q(5114),
+ q(0),
+ ],
+ q(nwo) => [
+ q(5115),
q(0),
],
q(nwr) => [
- q(5079),
+ q(5116),
q(0),
],
q(nwx) => [
- q(5080),
+ q(5117),
q(0),
],
q(nwy) => [
- q(5081),
+ q(5118),
q(0),
],
q(nxa) => [
- q(5082),
+ q(5119),
q(0),
],
q(nxd) => [
- q(5083),
+ q(5120),
q(0),
],
q(nxe) => [
- q(5084),
+ q(5121),
q(0),
],
q(nxg) => [
- q(5085),
+ q(5122),
q(0),
],
q(nxi) => [
- q(5086),
+ q(5123),
+ q(0),
+ ],
+ q(nxk) => [
+ q(5124),
q(0),
],
q(nxl) => [
- q(5087),
+ q(5125),
q(0),
],
q(nxm) => [
- q(5088),
+ q(5126),
q(0),
],
q(nxn) => [
- q(5089),
+ q(5127),
q(0),
],
q(nxq) => [
- q(5090),
+ q(5128),
q(0),
],
q(nxr) => [
- q(5091),
+ q(5129),
q(0),
],
q(nxu) => [
- q(5092),
+ q(5130),
q(0),
],
q(nxx) => [
- q(5093),
+ q(5131),
q(0),
],
q(nya) => [
@@ -76503,47 +77228,47 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nyb) => [
- q(5094),
+ q(5132),
q(0),
],
q(nyc) => [
- q(5095),
+ q(5133),
q(0),
],
q(nyd) => [
- q(5096),
+ q(5134),
q(0),
],
q(nye) => [
- q(5097),
+ q(5135),
q(0),
],
q(nyf) => [
- q(5098),
+ q(5136),
q(0),
],
q(nyg) => [
- q(5099),
+ q(5137),
q(0),
],
q(nyh) => [
- q(5100),
+ q(5138),
q(0),
],
q(nyi) => [
- q(5101),
+ q(5139),
q(0),
],
q(nyj) => [
- q(5102),
+ q(5140),
q(0),
],
q(nyk) => [
- q(5103),
+ q(5141),
q(0),
],
q(nyl) => [
- q(5104),
+ q(5142),
q(0),
],
q(nym) => [
@@ -76559,51 +77284,51 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nyp) => [
- q(5105),
+ q(5143),
q(0),
],
q(nyq) => [
- q(5106),
+ q(5144),
q(0),
],
q(nyr) => [
- q(5107),
+ q(5145),
q(0),
],
q(nys) => [
- q(5108),
+ q(5146),
q(0),
],
q(nyt) => [
- q(5109),
+ q(5147),
q(0),
],
q(nyu) => [
- q(5110),
+ q(5148),
q(0),
],
q(nyv) => [
- q(5111),
+ q(5149),
q(0),
],
q(nyw) => [
- q(5112),
+ q(5150),
q(0),
],
q(nyx) => [
- q(5113),
+ q(5151),
q(0),
],
q(nyy) => [
- q(5114),
+ q(5152),
q(0),
],
q(nza) => [
- q(5115),
+ q(5153),
q(0),
],
q(nzb) => [
- q(5116),
+ q(5154),
q(0),
],
q(nzi) => [
@@ -76611,83 +77336,83 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(nzk) => [
- q(5117),
+ q(5155),
q(0),
],
q(nzm) => [
- q(5118),
+ q(5156),
q(0),
],
q(nzs) => [
- q(5119),
+ q(5157),
q(0),
],
q(nzu) => [
- q(5120),
+ q(5158),
q(0),
],
q(nzy) => [
- q(5121),
+ q(5159),
q(0),
],
q(nzz) => [
- q(5122),
+ q(5160),
q(0),
],
q(oaa) => [
- q(5123),
+ q(5161),
q(0),
],
q(oac) => [
- q(5124),
+ q(5162),
q(0),
],
q(oar) => [
- q(5125),
+ q(5163),
q(0),
],
q(oav) => [
- q(5126),
+ q(5164),
q(0),
],
q(obi) => [
- q(5127),
+ q(5165),
q(0),
],
q(obk) => [
- q(5128),
+ q(5166),
q(0),
],
q(obl) => [
- q(5129),
+ q(5167),
q(0),
],
q(obm) => [
- q(5130),
+ q(5168),
q(0),
],
q(obo) => [
- q(5131),
+ q(5169),
q(0),
],
q(obr) => [
- q(5132),
+ q(5170),
q(0),
],
q(obt) => [
- q(5133),
+ q(5171),
q(0),
],
q(obu) => [
- q(5134),
+ q(5172),
q(0),
],
q(oca) => [
- q(5135),
+ q(5173),
q(0),
],
q(och) => [
- q(5136),
+ q(5174),
q(0),
],
q(oci) => [
@@ -76695,91 +77420,91 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(oco) => [
- q(5137),
+ q(5175),
q(0),
],
q(ocu) => [
- q(5138),
+ q(5176),
q(0),
],
q(oda) => [
- q(5139),
+ q(5177),
q(0),
],
q(odk) => [
- q(5140),
+ q(5178),
q(0),
],
q(odt) => [
- q(5141),
+ q(5179),
q(0),
],
q(odu) => [
- q(5142),
+ q(5180),
q(0),
],
q(ofo) => [
- q(5143),
+ q(5181),
q(0),
],
q(ofs) => [
- q(5144),
+ q(5182),
q(0),
],
q(ofu) => [
- q(5145),
+ q(5183),
q(0),
],
q(ogb) => [
- q(5146),
+ q(5184),
q(0),
],
q(ogc) => [
- q(5147),
+ q(5185),
q(0),
],
q(oge) => [
- q(5148),
+ q(5186),
q(0),
],
q(ogg) => [
- q(5149),
+ q(5187),
q(0),
],
q(ogo) => [
- q(5150),
+ q(5188),
q(0),
],
q(ogu) => [
- q(5151),
+ q(5189),
q(0),
],
q(oht) => [
- q(5152),
+ q(5190),
q(0),
],
q(ohu) => [
- q(5153),
+ q(5191),
q(0),
],
q(oia) => [
- q(5154),
+ q(5192),
q(0),
],
q(oin) => [
- q(5155),
+ q(5193),
q(0),
],
q(ojb) => [
- q(5156),
+ q(5194),
q(0),
],
q(ojc) => [
- q(5157),
+ q(5195),
q(0),
],
q(ojg) => [
- q(5158),
+ q(5196),
q(0),
],
q(oji) => [
@@ -76787,311 +77512,315 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ojp) => [
- q(5159),
+ q(5197),
q(0),
],
q(ojs) => [
- q(5160),
+ q(5198),
q(0),
],
q(ojv) => [
- q(5161),
+ q(5199),
q(0),
],
q(ojw) => [
- q(5162),
+ q(5200),
q(0),
],
q(oka) => [
- q(5163),
+ q(5201),
q(0),
],
q(okb) => [
- q(5164),
+ q(5202),
q(0),
],
q(okd) => [
- q(5165),
+ q(5203),
q(0),
],
q(oke) => [
- q(5166),
+ q(5204),
+ q(0),
+ ],
+ q(okg) => [
+ q(5205),
q(0),
],
q(okh) => [
- q(5167),
+ q(5206),
q(0),
],
q(oki) => [
- q(5168),
+ q(5207),
q(0),
],
q(okj) => [
- q(5169),
+ q(5208),
q(0),
],
q(okk) => [
- q(5170),
+ q(5209),
q(0),
],
q(okl) => [
- q(5171),
+ q(5210),
q(0),
],
q(okm) => [
- q(5172),
+ q(5211),
q(0),
],
q(okn) => [
- q(5173),
+ q(5212),
q(0),
],
q(oko) => [
- q(5174),
+ q(5213),
q(0),
],
q(okr) => [
- q(5175),
+ q(5214),
q(0),
],
q(oks) => [
- q(5176),
+ q(5215),
q(0),
],
q(oku) => [
- q(5177),
+ q(5216),
q(0),
],
q(okv) => [
- q(5178),
+ q(5217),
q(0),
],
q(okx) => [
- q(5179),
+ q(5218),
q(0),
],
q(ola) => [
- q(5180),
+ q(5219),
q(0),
],
q(old) => [
- q(5181),
+ q(5220),
q(0),
],
q(ole) => [
- q(5182),
+ q(5221),
q(0),
],
q(olm) => [
- q(5183),
+ q(5222),
q(0),
],
q(olo) => [
- q(5184),
+ q(5223),
q(0),
],
q(olr) => [
- q(5185),
+ q(5224),
q(0),
],
q(oma) => [
- q(5186),
+ q(5225),
q(0),
],
q(omb) => [
- q(5187),
+ q(5226),
q(0),
],
q(omc) => [
- q(5188),
+ q(5227),
q(0),
],
q(ome) => [
- q(5189),
+ q(5228),
q(0),
],
q(omg) => [
- q(5190),
+ q(5229),
q(0),
],
q(omi) => [
- q(5191),
+ q(5230),
q(0),
],
q(omk) => [
- q(5192),
+ q(5231),
q(0),
],
q(oml) => [
- q(5193),
+ q(5232),
q(0),
],
q(omn) => [
- q(5194),
+ q(5233),
q(0),
],
q(omo) => [
- q(5195),
+ q(5234),
q(0),
],
q(omp) => [
- q(5196),
+ q(5235),
q(0),
],
q(omq) => [
- q(0516),
+ q(0517),
q(0),
],
q(omr) => [
- q(5197),
+ q(5236),
q(0),
],
q(omt) => [
- q(5198),
+ q(5237),
q(0),
],
q(omu) => [
- q(5199),
+ q(5238),
q(0),
],
q(omv) => [
- q(0517),
+ q(0518),
q(0),
],
q(omw) => [
- q(5200),
+ q(5239),
q(0),
],
q(omx) => [
- q(5201),
+ q(5240),
q(0),
],
q(ona) => [
- q(5202),
+ q(5241),
q(0),
],
q(onb) => [
- q(5203),
+ q(5242),
q(0),
],
q(one) => [
- q(5204),
+ q(5243),
q(0),
],
q(ong) => [
- q(5205),
+ q(5244),
q(0),
],
q(oni) => [
- q(5206),
+ q(5245),
q(0),
],
q(onj) => [
- q(5207),
+ q(5246),
q(0),
],
q(onk) => [
- q(5208),
+ q(5247),
q(0),
],
q(onn) => [
- q(5209),
+ q(5248),
q(0),
],
q(ono) => [
- q(5210),
+ q(5249),
q(0),
],
q(onp) => [
- q(5211),
+ q(5250),
q(0),
],
q(onr) => [
- q(5212),
+ q(5251),
q(0),
],
q(ons) => [
- q(5213),
+ q(5252),
q(0),
],
q(ont) => [
- q(5214),
+ q(5253),
q(0),
],
q(onu) => [
- q(5215),
+ q(5254),
q(0),
],
q(onw) => [
- q(5216),
+ q(5255),
q(0),
],
q(onx) => [
- q(5217),
+ q(5256),
q(0),
],
q(ood) => [
- q(5218),
+ q(5257),
q(0),
],
q(oog) => [
- q(5219),
+ q(5258),
q(0),
],
q(oon) => [
- q(5220),
+ q(5259),
q(0),
],
q(oor) => [
- q(5221),
+ q(5260),
q(0),
],
q(oos) => [
- q(5222),
+ q(5261),
q(0),
],
q(opa) => [
- q(5223),
+ q(5262),
q(0),
],
q(opk) => [
- q(5224),
+ q(5263),
q(0),
],
q(opm) => [
- q(5225),
+ q(5264),
q(0),
],
q(opo) => [
- q(5226),
+ q(5265),
q(0),
],
q(opt) => [
- q(5227),
+ q(5266),
q(0),
],
q(opy) => [
- q(5228),
+ q(5267),
q(0),
],
q(ora) => [
- q(5229),
+ q(5268),
q(0),
],
q(orc) => [
- q(5230),
+ q(5269),
q(0),
],
q(ore) => [
- q(5231),
+ q(5270),
q(0),
],
q(org) => [
- q(5232),
+ q(5271),
q(0),
],
q(orh) => [
- q(5233),
+ q(5272),
q(0),
],
q(ori) => [
@@ -77103,43 +77832,47 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(orn) => [
- q(5234),
+ q(5273),
q(0),
],
q(oro) => [
- q(5235),
+ q(5274),
q(0),
],
q(orr) => [
- q(5236),
+ q(5275),
q(0),
],
q(ors) => [
- q(5237),
+ q(5276),
q(0),
],
q(ort) => [
- q(5238),
+ q(5277),
q(0),
],
q(oru) => [
- q(5239),
+ q(5278),
q(0),
],
q(orv) => [
- q(5240),
+ q(5279),
q(0),
],
q(orw) => [
- q(5241),
+ q(5280),
q(0),
],
q(orx) => [
- q(5242),
+ q(5281),
+ q(0),
+ ],
+ q(ory) => [
+ q(5282),
q(0),
],
q(orz) => [
- q(5243),
+ q(5283),
q(0),
],
q(osa) => [
@@ -77147,19 +77880,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(osc) => [
- q(5244),
+ q(5284),
q(0),
],
q(osi) => [
- q(5245),
+ q(5285),
q(0),
],
q(oso) => [
- q(5246),
+ q(5286),
q(0),
],
q(osp) => [
- q(5247),
+ q(5287),
q(0),
],
q(oss) => [
@@ -77167,15 +77900,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ost) => [
- q(5248),
+ q(5288),
q(0),
],
q(osu) => [
- q(5249),
+ q(5289),
q(0),
],
q(osx) => [
- q(5250),
+ q(5290),
q(0),
],
q(ota) => [
@@ -77183,35 +77916,35 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(otb) => [
- q(5251),
+ q(5291),
q(0),
],
q(otd) => [
- q(5252),
+ q(5292),
q(0),
],
q(ote) => [
- q(5253),
+ q(5293),
q(0),
],
q(oti) => [
- q(5254),
+ q(5294),
q(0),
],
q(otk) => [
- q(5255),
+ q(5295),
q(0),
],
q(otl) => [
- q(5256),
+ q(5296),
q(0),
],
q(otm) => [
- q(5257),
+ q(5297),
q(0),
],
q(otn) => [
- q(5258),
+ q(5298),
q(0),
],
q(oto) => [
@@ -77219,91 +77952,91 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(otq) => [
- q(5259),
+ q(5299),
q(0),
],
q(otr) => [
- q(5260),
+ q(5300),
q(0),
],
q(ots) => [
- q(5261),
+ q(5301),
q(0),
],
q(ott) => [
- q(5262),
+ q(5302),
q(0),
],
q(otu) => [
- q(5263),
+ q(5303),
q(0),
],
q(otw) => [
- q(5264),
+ q(5304),
q(0),
],
q(otx) => [
- q(5265),
+ q(5305),
q(0),
],
q(oty) => [
- q(5266),
+ q(5306),
q(0),
],
q(otz) => [
- q(5267),
+ q(5307),
q(0),
],
q(oua) => [
- q(5268),
+ q(5308),
q(0),
],
q(oub) => [
- q(5269),
+ q(5309),
q(0),
],
q(oue) => [
- q(5270),
+ q(5310),
q(0),
],
q(oui) => [
- q(5271),
+ q(5311),
q(0),
],
q(oum) => [
- q(5272),
+ q(5312),
q(0),
],
q(oun) => [
- q(5273),
+ q(5313),
q(0),
],
q(owi) => [
- q(5274),
+ q(5314),
q(0),
],
q(owl) => [
- q(5275),
+ q(5315),
q(0),
],
q(oyb) => [
- q(5276),
+ q(5316),
q(0),
],
q(oyd) => [
- q(5277),
+ q(5317),
q(0),
],
q(oym) => [
- q(5278),
+ q(5318),
q(0),
],
q(oyy) => [
- q(5279),
+ q(5319),
q(0),
],
q(ozm) => [
- q(5280),
+ q(5320),
q(0),
],
q(paa) => [
@@ -77311,23 +78044,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(pab) => [
- q(5281),
+ q(5321),
q(0),
],
q(pac) => [
- q(5282),
+ q(5322),
q(0),
],
q(pad) => [
- q(5283),
+ q(5323),
q(0),
],
q(pae) => [
- q(5284),
+ q(5324),
q(0),
],
q(paf) => [
- q(5285),
+ q(5325),
q(0),
],
q(pag) => [
@@ -77335,15 +78068,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(pah) => [
- q(5286),
+ q(5326),
q(0),
],
q(pai) => [
- q(5287),
+ q(5327),
q(0),
],
q(pak) => [
- q(5288),
+ q(5328),
q(0),
],
q(pal) => [
@@ -77359,7 +78092,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(pao) => [
- q(5289),
+ q(5329),
q(0),
],
q(pap) => [
@@ -77367,19 +78100,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(paq) => [
- q(5290),
+ q(5330),
q(0),
],
q(par) => [
- q(5291),
+ q(5331),
q(0),
],
q(pas) => [
- q(5292),
+ q(5332),
q(0),
],
q(pat) => [
- q(5293),
+ q(5333),
q(0),
],
q(pau) => [
@@ -77387,239 +78120,235 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(pav) => [
- q(5294),
+ q(5334),
q(0),
],
q(paw) => [
- q(5295),
+ q(5335),
q(0),
],
q(pax) => [
- q(5296),
+ q(5336),
q(0),
],
q(pay) => [
- q(5297),
+ q(5337),
q(0),
],
q(paz) => [
- q(5298),
+ q(5338),
q(0),
],
q(pbb) => [
- q(5299),
+ q(5339),
q(0),
],
q(pbc) => [
- q(5300),
+ q(5340),
q(0),
],
q(pbe) => [
- q(5301),
+ q(5341),
q(0),
],
q(pbf) => [
- q(5302),
+ q(5342),
q(0),
],
q(pbg) => [
- q(5303),
+ q(5343),
q(0),
],
q(pbh) => [
- q(5304),
+ q(5344),
q(0),
],
q(pbi) => [
- q(5305),
+ q(5345),
q(0),
],
q(pbl) => [
- q(5306),
+ q(5346),
q(0),
],
q(pbn) => [
- q(5307),
+ q(5347),
q(0),
],
q(pbo) => [
- q(5308),
+ q(5348),
q(0),
],
q(pbp) => [
- q(5309),
+ q(5349),
q(0),
],
q(pbr) => [
- q(5310),
+ q(5350),
q(0),
],
q(pbs) => [
- q(5311),
+ q(5351),
q(0),
],
q(pbt) => [
- q(5312),
+ q(5352),
q(0),
],
q(pbu) => [
- q(5313),
+ q(5353),
q(0),
],
q(pbv) => [
- q(5314),
+ q(5354),
q(0),
],
q(pby) => [
- q(5315),
- q(0),
- ],
- q(pbz) => [
- q(5316),
+ q(5355),
q(0),
],
q(pca) => [
- q(5317),
+ q(5356),
q(0),
],
q(pcb) => [
- q(5318),
+ q(5357),
q(0),
],
q(pcc) => [
- q(5319),
+ q(5358),
q(0),
],
q(pcd) => [
- q(5320),
+ q(5359),
q(0),
],
q(pce) => [
- q(5321),
+ q(5360),
q(0),
],
q(pcf) => [
- q(5322),
+ q(5361),
q(0),
],
q(pcg) => [
- q(5323),
+ q(5362),
q(0),
],
q(pch) => [
- q(5324),
+ q(5363),
q(0),
],
q(pci) => [
- q(5325),
+ q(5364),
q(0),
],
q(pcj) => [
- q(5326),
+ q(5365),
q(0),
],
q(pck) => [
- q(5327),
+ q(5366),
q(0),
],
q(pcl) => [
- q(5328),
+ q(5367),
q(0),
],
q(pcm) => [
- q(5329),
+ q(5368),
q(0),
],
q(pcn) => [
- q(5330),
+ q(5369),
q(0),
],
q(pcp) => [
- q(5331),
+ q(5370),
q(0),
],
q(pcr) => [
- q(5332),
+ q(5371),
q(0),
],
q(pcw) => [
- q(5333),
+ q(5372),
q(0),
],
q(pda) => [
- q(5334),
+ q(5373),
q(0),
],
q(pdc) => [
- q(5335),
+ q(5374),
q(0),
],
q(pdi) => [
- q(5336),
+ q(5375),
q(0),
],
q(pdn) => [
- q(5337),
+ q(5376),
q(0),
],
q(pdo) => [
- q(5338),
+ q(5377),
q(0),
],
q(pdt) => [
- q(5339),
+ q(5378),
q(0),
],
q(pdu) => [
- q(5340),
+ q(5379),
q(0),
],
q(pea) => [
- q(5341),
+ q(5380),
q(0),
],
q(peb) => [
- q(5342),
+ q(5381),
q(0),
],
q(ped) => [
- q(5343),
+ q(5382),
q(0),
],
q(pee) => [
- q(5344),
+ q(5383),
q(0),
],
q(pef) => [
- q(5345),
+ q(5384),
q(0),
],
q(peg) => [
- q(5346),
+ q(5385),
q(0),
],
q(peh) => [
- q(5347),
+ q(5386),
q(0),
],
q(pei) => [
- q(5348),
+ q(5387),
q(0),
],
q(pej) => [
- q(5349),
+ q(5388),
q(0),
],
q(pek) => [
- q(5350),
+ q(5389),
q(0),
],
q(pel) => [
- q(5351),
+ q(5390),
q(0),
],
q(pem) => [
- q(5352),
+ q(5391),
q(0),
],
q(peo) => [
@@ -77627,11 +78356,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(pep) => [
- q(5353),
+ q(5392),
q(0),
],
q(peq) => [
- q(5354),
+ q(5393),
q(0),
],
q(per) => [
@@ -77639,87 +78368,83 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(pes) => [
- q(5355),
+ q(5394),
q(0),
],
q(pev) => [
- q(5356),
+ q(5395),
q(0),
],
q(pex) => [
- q(5357),
+ q(5396),
q(0),
],
q(pey) => [
- q(5358),
+ q(5397),
q(0),
],
q(pez) => [
- q(5359),
+ q(5398),
q(0),
],
q(pfa) => [
- q(5360),
+ q(5399),
q(0),
],
q(pfe) => [
- q(5361),
+ q(5400),
q(0),
],
q(pfl) => [
- q(5362),
+ q(5401),
q(0),
],
q(pga) => [
- q(5363),
+ q(5402),
q(0),
],
q(pgg) => [
- q(5364),
+ q(5403),
q(0),
],
q(pgi) => [
- q(5365),
+ q(5404),
q(0),
],
q(pgk) => [
- q(5366),
+ q(5405),
q(0),
],
q(pgl) => [
- q(5367),
+ q(5406),
q(0),
],
q(pgn) => [
- q(5368),
+ q(5407),
q(0),
],
q(pgs) => [
- q(5369),
+ q(5408),
q(0),
],
q(pgu) => [
- q(5370),
- q(0),
- ],
- q(pgy) => [
- q(5371),
+ q(5409),
q(0),
],
q(pha) => [
- q(5372),
+ q(5410),
q(0),
],
q(phd) => [
- q(5373),
+ q(5411),
q(0),
],
q(phg) => [
- q(5374),
+ q(5412),
q(0),
],
q(phh) => [
- q(5375),
+ q(5413),
q(0),
],
q(phi) => [
@@ -77727,15 +78452,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(phk) => [
- q(5376),
+ q(5414),
q(0),
],
q(phl) => [
- q(5377),
+ q(5415),
q(0),
],
q(phm) => [
- q(5378),
+ q(5416),
q(0),
],
q(phn) => [
@@ -77743,211 +78468,211 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(pho) => [
- q(5379),
+ q(5417),
q(0),
],
q(phq) => [
- q(5380),
+ q(5418),
q(0),
],
q(phr) => [
- q(5381),
+ q(5419),
q(0),
],
q(pht) => [
- q(5382),
+ q(5420),
q(0),
],
q(phu) => [
- q(5383),
+ q(5421),
q(0),
],
q(phv) => [
- q(5384),
+ q(5422),
q(0),
],
q(phw) => [
- q(5385),
+ q(5423),
q(0),
],
q(pia) => [
- q(5386),
+ q(5424),
q(0),
],
q(pib) => [
- q(5387),
+ q(5425),
q(0),
],
q(pic) => [
- q(5388),
+ q(5426),
q(0),
],
q(pid) => [
- q(5389),
+ q(5427),
q(0),
],
q(pie) => [
- q(5390),
+ q(5428),
q(0),
],
q(pif) => [
- q(5391),
+ q(5429),
q(0),
],
q(pig) => [
- q(5392),
+ q(5430),
q(0),
],
q(pih) => [
- q(5393),
+ q(5431),
q(0),
],
q(pii) => [
- q(5394),
+ q(5432),
q(0),
],
q(pij) => [
- q(5395),
+ q(5433),
q(0),
],
q(pil) => [
- q(5396),
+ q(5434),
q(0),
],
q(pim) => [
- q(5397),
+ q(5435),
q(0),
],
q(pin) => [
- q(5398),
+ q(5436),
q(0),
],
q(pio) => [
- q(5399),
+ q(5437),
q(0),
],
q(pip) => [
- q(5400),
+ q(5438),
q(0),
],
q(pir) => [
- q(5401),
+ q(5439),
q(0),
],
q(pis) => [
- q(5402),
+ q(5440),
q(0),
],
q(pit) => [
- q(5403),
+ q(5441),
q(0),
],
q(piu) => [
- q(5404),
+ q(5442),
q(0),
],
q(piv) => [
- q(5405),
+ q(5443),
q(0),
],
q(piw) => [
- q(5406),
+ q(5444),
q(0),
],
q(pix) => [
- q(5407),
+ q(5445),
q(0),
],
q(piy) => [
- q(5408),
+ q(5446),
q(0),
],
q(piz) => [
- q(5409),
+ q(5447),
q(0),
],
q(pjt) => [
- q(5410),
+ q(5448),
q(0),
],
q(pka) => [
- q(5411),
+ q(5449),
q(0),
],
q(pkb) => [
- q(5412),
+ q(5450),
q(0),
],
q(pkc) => [
- q(5413),
+ q(5451),
q(0),
],
q(pkg) => [
- q(5414),
+ q(5452),
q(0),
],
q(pkh) => [
- q(5415),
+ q(5453),
q(0),
],
q(pkn) => [
- q(5416),
+ q(5454),
q(0),
],
q(pko) => [
- q(5417),
+ q(5455),
q(0),
],
q(pkp) => [
- q(5418),
+ q(5456),
q(0),
],
q(pkr) => [
- q(5419),
+ q(5457),
q(0),
],
q(pks) => [
- q(5420),
+ q(5458),
q(0),
],
q(pkt) => [
- q(5421),
+ q(5459),
q(0),
],
q(pku) => [
- q(5422),
+ q(5460),
q(0),
],
q(pla) => [
- q(5423),
+ q(5461),
q(0),
],
q(plb) => [
- q(5424),
+ q(5462),
q(0),
],
q(plc) => [
- q(5425),
+ q(5463),
q(0),
],
q(pld) => [
- q(5426),
+ q(5464),
q(0),
],
q(ple) => [
- q(5427),
+ q(5465),
q(0),
],
q(plf) => [
- q(0518),
+ q(0519),
q(0),
],
q(plg) => [
- q(5428),
+ q(5466),
q(0),
],
q(plh) => [
- q(5429),
+ q(5467),
q(0),
],
q(pli) => [
@@ -77955,267 +78680,275 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(plj) => [
- q(5430),
+ q(5468),
q(0),
],
q(plk) => [
- q(5431),
+ q(5469),
q(0),
],
q(pll) => [
- q(5432),
+ q(5470),
q(0),
],
q(pln) => [
- q(5433),
+ q(5471),
q(0),
],
q(plo) => [
- q(5434),
+ q(5472),
q(0),
],
q(plp) => [
- q(5435),
+ q(5473),
q(0),
],
q(plq) => [
- q(5436),
+ q(5474),
q(0),
],
q(plr) => [
- q(5437),
+ q(5475),
q(0),
],
q(pls) => [
- q(5438),
+ q(5476),
q(0),
],
q(plt) => [
- q(5439),
+ q(5477),
q(0),
],
q(plu) => [
- q(5440),
+ q(5478),
q(0),
],
q(plv) => [
- q(5441),
+ q(5479),
q(0),
],
q(plw) => [
- q(5442),
+ q(5480),
q(0),
],
q(ply) => [
- q(5443),
+ q(5481),
q(0),
],
q(plz) => [
- q(5444),
+ q(5482),
q(0),
],
q(pma) => [
- q(5445),
+ q(5483),
q(0),
],
q(pmb) => [
- q(5446),
+ q(5484),
q(0),
],
q(pmc) => [
- q(5447),
+ q(5485),
+ q(0),
+ ],
+ q(pmd) => [
+ q(5486),
q(0),
],
q(pme) => [
- q(5448),
+ q(5487),
q(0),
],
q(pmf) => [
- q(5449),
+ q(5488),
q(0),
],
q(pmh) => [
- q(5450),
+ q(5489),
q(0),
],
q(pmi) => [
- q(5451),
+ q(5490),
q(0),
],
q(pmj) => [
- q(5452),
+ q(5491),
q(0),
],
q(pmk) => [
- q(5453),
+ q(5492),
q(0),
],
q(pml) => [
- q(5454),
+ q(5493),
q(0),
],
q(pmm) => [
- q(5455),
+ q(5494),
q(0),
],
q(pmn) => [
- q(5456),
+ q(5495),
q(0),
],
q(pmo) => [
- q(5457),
+ q(5496),
q(0),
],
q(pmq) => [
- q(5458),
+ q(5497),
q(0),
],
q(pmr) => [
- q(5459),
+ q(5498),
q(0),
],
q(pms) => [
- q(5460),
+ q(5499),
q(0),
],
q(pmt) => [
- q(5461),
+ q(5500),
q(0),
],
q(pmu) => [
- q(5462),
+ q(5501),
q(0),
],
q(pmw) => [
- q(5463),
+ q(5502),
q(0),
],
q(pmx) => [
- q(5464),
+ q(5503),
q(0),
],
q(pmy) => [
- q(5465),
+ q(5504),
q(0),
],
q(pmz) => [
- q(5466),
+ q(5505),
q(0),
],
q(pna) => [
- q(5467),
+ q(5506),
q(0),
],
q(pnb) => [
- q(5468),
+ q(5507),
q(0),
],
q(pnc) => [
- q(5469),
+ q(5508),
q(0),
],
q(pne) => [
- q(5470),
+ q(5509),
q(0),
],
q(png) => [
- q(5471),
+ q(5510),
q(0),
],
q(pnh) => [
- q(5472),
+ q(5511),
q(0),
],
q(pni) => [
- q(5473),
+ q(5512),
+ q(0),
+ ],
+ q(pnk) => [
+ q(5513),
q(0),
],
q(pnm) => [
- q(5474),
+ q(5514),
q(0),
],
q(pnn) => [
- q(5475),
+ q(5515),
q(0),
],
q(pno) => [
- q(5476),
+ q(5516),
q(0),
],
q(pnp) => [
- q(5477),
+ q(5517),
q(0),
],
q(pnq) => [
- q(5478),
+ q(5518),
q(0),
],
q(pnr) => [
- q(5479),
+ q(5519),
q(0),
],
q(pns) => [
- q(5480),
+ q(5520),
q(0),
],
q(pnt) => [
- q(5481),
+ q(5521),
q(0),
],
q(pnu) => [
- q(5482),
+ q(5522),
q(0),
],
q(pnv) => [
- q(5483),
+ q(5523),
q(0),
],
q(pnw) => [
- q(5484),
+ q(5524),
q(0),
],
q(pnx) => [
- q(5485),
+ q(5525),
q(0),
],
q(pny) => [
- q(5486),
+ q(5526),
q(0),
],
q(pnz) => [
- q(5487),
+ q(5527),
q(0),
],
q(poc) => [
- q(5488),
+ q(5528),
q(0),
],
q(pod) => [
- q(5489),
+ q(5529),
q(0),
],
q(poe) => [
- q(5490),
+ q(5530),
q(0),
],
q(pof) => [
- q(5491),
+ q(5531),
q(0),
],
q(pog) => [
- q(5492),
+ q(5532),
q(0),
],
q(poh) => [
- q(5493),
+ q(5533),
q(0),
],
q(poi) => [
- q(5494),
+ q(5534),
q(0),
],
q(pok) => [
- q(5495),
+ q(5535),
q(0),
],
q(pol) => [
@@ -78223,7 +78956,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(pom) => [
- q(5496),
+ q(5536),
q(0),
],
q(pon) => [
@@ -78231,15 +78964,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(poo) => [
- q(5497),
+ q(5537),
q(0),
],
q(pop) => [
- q(5498),
+ q(5538),
q(0),
],
q(poq) => [
- q(5499),
+ q(5539),
q(0),
],
q(por) => [
@@ -78247,103 +78980,103 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(pos) => [
- q(5500),
+ q(5540),
q(0),
],
q(pot) => [
- q(5501),
+ q(5541),
q(0),
],
q(pov) => [
- q(5502),
+ q(5542),
q(0),
],
q(pow) => [
- q(5503),
+ q(5543),
q(0),
],
q(pox) => [
- q(5504),
+ q(5544),
q(0),
],
q(poy) => [
- q(5505),
+ q(5545),
q(0),
],
q(poz) => [
- q(0519),
+ q(0520),
q(0),
],
q(ppa) => [
- q(5506),
+ q(5546),
q(0),
],
q(ppe) => [
- q(5507),
+ q(5547),
q(0),
],
q(ppi) => [
- q(5508),
+ q(5548),
q(0),
],
q(ppk) => [
- q(5509),
+ q(5549),
q(0),
],
q(ppl) => [
- q(5510),
+ q(5550),
q(0),
],
q(ppm) => [
- q(5511),
+ q(5551),
q(0),
],
q(ppn) => [
- q(5512),
+ q(5552),
q(0),
],
q(ppo) => [
- q(5513),
+ q(5553),
q(0),
],
q(ppp) => [
- q(5514),
+ q(5554),
q(0),
],
q(ppq) => [
- q(5515),
+ q(5555),
q(0),
],
q(ppr) => [
- q(5516),
+ q(5556),
q(0),
],
q(pps) => [
- q(5517),
+ q(5557),
q(0),
],
q(ppt) => [
- q(5518),
+ q(5558),
q(0),
],
q(ppu) => [
- q(5519),
+ q(5559),
q(0),
],
q(pqa) => [
- q(5520),
+ q(5560),
q(0),
],
q(pqe) => [
- q(0520),
+ q(0521),
q(0),
],
q(pqm) => [
- q(5521),
+ q(5561),
q(0),
],
q(pqw) => [
- q(0521),
+ q(0522),
q(0),
],
q(pra) => [
@@ -78351,51 +79084,51 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(prb) => [
- q(5522),
+ q(5562),
q(0),
],
q(prc) => [
- q(5523),
+ q(5563),
q(0),
],
q(prd) => [
- q(5524),
+ q(5564),
q(0),
],
q(pre) => [
- q(5525),
+ q(5565),
q(0),
],
q(prf) => [
- q(5526),
+ q(5566),
q(0),
],
q(prg) => [
- q(5527),
+ q(5567),
q(0),
],
q(prh) => [
- q(5528),
+ q(5568),
q(0),
],
q(pri) => [
- q(5529),
+ q(5569),
q(0),
],
q(prk) => [
- q(5530),
+ q(5570),
q(0),
],
q(prl) => [
- q(5531),
+ q(5571),
q(0),
],
q(prm) => [
- q(5532),
+ q(5572),
q(0),
],
q(prn) => [
- q(5533),
+ q(5573),
q(0),
],
q(pro) => [
@@ -78403,227 +79136,227 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(prp) => [
- q(5534),
+ q(5574),
q(0),
],
q(prq) => [
- q(5535),
+ q(5575),
q(0),
],
q(prr) => [
- q(5536),
+ q(5576),
q(0),
],
q(prs) => [
- q(5537),
+ q(5577),
q(0),
],
q(prt) => [
- q(5538),
+ q(5578),
q(0),
],
q(pru) => [
- q(5539),
+ q(5579),
q(0),
],
q(prw) => [
- q(5540),
+ q(5580),
q(0),
],
q(prx) => [
- q(5541),
+ q(5581),
q(0),
],
q(pry) => [
- q(5542),
+ q(5582),
q(0),
],
q(prz) => [
- q(5543),
+ q(5583),
q(0),
],
q(psa) => [
- q(5544),
+ q(5584),
q(0),
],
q(psc) => [
- q(5545),
+ q(5585),
q(0),
],
q(psd) => [
- q(5546),
+ q(5586),
q(0),
],
q(pse) => [
- q(5547),
+ q(5587),
q(0),
],
q(psg) => [
- q(5548),
+ q(5588),
q(0),
],
q(psh) => [
- q(5549),
+ q(5589),
q(0),
],
q(psi) => [
- q(5550),
+ q(5590),
q(0),
],
q(psl) => [
- q(5551),
+ q(5591),
q(0),
],
q(psm) => [
- q(5552),
+ q(5592),
q(0),
],
q(psn) => [
- q(5553),
+ q(5593),
q(0),
],
q(pso) => [
- q(5554),
+ q(5594),
q(0),
],
q(psp) => [
- q(5555),
+ q(5595),
q(0),
],
q(psq) => [
- q(5556),
+ q(5596),
q(0),
],
q(psr) => [
- q(5557),
+ q(5597),
q(0),
],
q(pss) => [
- q(5558),
+ q(5598),
q(0),
],
q(pst) => [
- q(5559),
+ q(5599),
q(0),
],
q(psu) => [
- q(5560),
+ q(5600),
q(0),
],
q(psw) => [
- q(5561),
+ q(5601),
q(0),
],
q(psy) => [
- q(5562),
+ q(5602),
q(0),
],
q(pta) => [
- q(5563),
+ q(5603),
q(0),
],
q(pth) => [
- q(5564),
+ q(5604),
q(0),
],
q(pti) => [
- q(5565),
+ q(5605),
q(0),
],
q(ptn) => [
- q(5566),
+ q(5606),
q(0),
],
q(pto) => [
- q(5567),
+ q(5607),
q(0),
],
q(ptp) => [
- q(5568),
+ q(5608),
q(0),
],
q(ptr) => [
- q(5569),
+ q(5609),
q(0),
],
q(ptt) => [
- q(5570),
+ q(5610),
q(0),
],
q(ptu) => [
- q(5571),
+ q(5611),
q(0),
],
q(ptv) => [
- q(5572),
+ q(5612),
q(0),
],
q(ptw) => [
- q(5573),
+ q(5613),
q(0),
],
q(pty) => [
- q(5574),
+ q(5614),
q(0),
],
q(pua) => [
- q(5575),
+ q(5615),
q(0),
],
q(pub) => [
- q(5576),
+ q(5616),
q(0),
],
q(puc) => [
- q(5577),
+ q(5617),
q(0),
],
q(pud) => [
- q(5578),
+ q(5618),
q(0),
],
q(pue) => [
- q(5579),
+ q(5619),
q(0),
],
q(puf) => [
- q(5580),
+ q(5620),
q(0),
],
q(pug) => [
- q(5581),
+ q(5621),
q(0),
],
q(pui) => [
- q(5582),
+ q(5622),
q(0),
],
q(puj) => [
- q(5583),
+ q(5623),
q(0),
],
q(puk) => [
- q(5584),
+ q(5624),
q(0),
],
q(pum) => [
- q(5585),
+ q(5625),
q(0),
],
q(puo) => [
- q(5586),
+ q(5626),
q(0),
],
q(pup) => [
- q(5587),
+ q(5627),
q(0),
],
q(puq) => [
- q(5588),
+ q(5628),
q(0),
],
q(pur) => [
- q(5589),
+ q(5629),
q(0),
],
q(pus) => [
@@ -78631,95 +79364,95 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(put) => [
- q(5590),
+ q(5630),
q(0),
],
q(puu) => [
- q(5591),
+ q(5631),
q(0),
],
q(puw) => [
- q(5592),
+ q(5632),
q(0),
],
q(pux) => [
- q(5593),
+ q(5633),
q(0),
],
q(puy) => [
- q(5594),
+ q(5634),
q(0),
],
q(puz) => [
- q(5595),
+ q(5635),
q(0),
],
q(pwa) => [
- q(5596),
+ q(5636),
q(0),
],
q(pwb) => [
- q(5597),
+ q(5637),
q(0),
],
q(pwg) => [
- q(5598),
+ q(5638),
q(0),
],
q(pwm) => [
- q(5599),
+ q(5639),
q(0),
],
q(pwn) => [
- q(5600),
+ q(5640),
q(0),
],
q(pwo) => [
- q(5601),
+ q(5641),
q(0),
],
q(pwr) => [
- q(5602),
+ q(5642),
q(0),
],
q(pww) => [
- q(5603),
+ q(5643),
q(0),
],
q(pxm) => [
- q(5604),
+ q(5644),
q(0),
],
q(pye) => [
- q(5605),
+ q(5645),
q(0),
],
q(pym) => [
- q(5606),
+ q(5646),
q(0),
],
q(pyn) => [
- q(5607),
+ q(5647),
q(0),
],
q(pys) => [
- q(5608),
+ q(5648),
q(0),
],
q(pyu) => [
- q(5609),
+ q(5649),
q(0),
],
q(pyx) => [
- q(5610),
+ q(5650),
q(0),
],
q(pyy) => [
- q(5611),
+ q(5651),
q(0),
],
q(pzn) => [
- q(5612),
+ q(5652),
q(0),
],
q(qtz) => [
@@ -78727,19 +79460,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(qua) => [
- q(5613),
+ q(5653),
q(0),
],
q(qub) => [
- q(5614),
+ q(5654),
q(0),
],
q(quc) => [
- q(5615),
+ q(5655),
q(0),
],
q(qud) => [
- q(5616),
+ q(5656),
q(0),
],
q(que) => [
@@ -78747,251 +79480,251 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(quf) => [
- q(5617),
+ q(5657),
q(0),
],
q(qug) => [
- q(5618),
+ q(5658),
q(0),
],
q(quh) => [
- q(5619),
+ q(5659),
q(0),
],
q(qui) => [
- q(5620),
+ q(5660),
q(0),
],
q(quk) => [
- q(5621),
+ q(5661),
q(0),
],
q(qul) => [
- q(5622),
+ q(5662),
q(0),
],
q(qum) => [
- q(5623),
+ q(5663),
q(0),
],
q(qun) => [
- q(5624),
+ q(5664),
q(0),
],
q(qup) => [
- q(5625),
+ q(5665),
q(0),
],
q(quq) => [
- q(5626),
+ q(5666),
q(0),
],
q(qur) => [
- q(5627),
+ q(5667),
q(0),
],
q(qus) => [
- q(5628),
+ q(5668),
q(0),
],
q(quv) => [
- q(5629),
+ q(5669),
q(0),
],
q(quw) => [
- q(5630),
+ q(5670),
q(0),
],
q(qux) => [
- q(5631),
+ q(5671),
q(0),
],
q(quy) => [
- q(5632),
+ q(5672),
q(0),
],
q(quz) => [
- q(5633),
+ q(5673),
q(0),
],
q(qva) => [
- q(5634),
+ q(5674),
q(0),
],
q(qvc) => [
- q(5635),
+ q(5675),
q(0),
],
q(qve) => [
- q(5636),
+ q(5676),
q(0),
],
q(qvh) => [
- q(5637),
+ q(5677),
q(0),
],
q(qvi) => [
- q(5638),
+ q(5678),
q(0),
],
q(qvj) => [
- q(5639),
+ q(5679),
q(0),
],
q(qvl) => [
- q(5640),
+ q(5680),
q(0),
],
q(qvm) => [
- q(5641),
+ q(5681),
q(0),
],
q(qvn) => [
- q(5642),
+ q(5682),
q(0),
],
q(qvo) => [
- q(5643),
+ q(5683),
q(0),
],
q(qvp) => [
- q(5644),
+ q(5684),
q(0),
],
q(qvs) => [
- q(5645),
+ q(5685),
q(0),
],
q(qvw) => [
- q(5646),
+ q(5686),
q(0),
],
q(qvy) => [
- q(5647),
+ q(5687),
q(0),
],
q(qvz) => [
- q(5648),
+ q(5688),
q(0),
],
q(qwa) => [
- q(5649),
+ q(5689),
q(0),
],
q(qwc) => [
- q(5650),
+ q(5690),
q(0),
],
q(qwe) => [
- q(0522),
+ q(0523),
q(0),
],
q(qwh) => [
- q(5651),
+ q(5691),
q(0),
],
q(qwm) => [
- q(5652),
+ q(5692),
q(0),
],
q(qws) => [
- q(5653),
+ q(5693),
q(0),
],
q(qwt) => [
- q(5654),
+ q(5694),
q(0),
],
q(qxa) => [
- q(5655),
+ q(5695),
q(0),
],
q(qxc) => [
- q(5656),
+ q(5696),
q(0),
],
q(qxh) => [
- q(5657),
+ q(5697),
q(0),
],
q(qxl) => [
- q(5658),
+ q(5698),
q(0),
],
q(qxn) => [
- q(5659),
+ q(5699),
q(0),
],
q(qxo) => [
- q(5660),
+ q(5700),
q(0),
],
q(qxp) => [
- q(5661),
+ q(5701),
q(0),
],
q(qxq) => [
- q(5662),
+ q(5702),
q(0),
],
q(qxr) => [
- q(5663),
+ q(5703),
q(0),
],
q(qxs) => [
- q(5664),
+ q(5704),
q(0),
],
q(qxt) => [
- q(5665),
+ q(5705),
q(0),
],
q(qxu) => [
- q(5666),
+ q(5706),
q(0),
],
q(qxw) => [
- q(5667),
+ q(5707),
q(0),
],
q(qya) => [
- q(5668),
+ q(5708),
q(0),
],
q(qyp) => [
- q(5669),
+ q(5709),
q(0),
],
q(raa) => [
- q(5670),
+ q(5710),
q(0),
],
q(rab) => [
- q(5671),
+ q(5711),
q(0),
],
q(rac) => [
- q(5672),
+ q(5712),
q(0),
],
q(rad) => [
- q(5673),
+ q(5713),
q(0),
],
q(raf) => [
- q(5674),
+ q(5714),
q(0),
],
q(rag) => [
- q(5675),
+ q(5715),
q(0),
],
q(rah) => [
- q(5676),
+ q(5716),
q(0),
],
q(rai) => [
- q(5677),
+ q(5717),
q(0),
],
q(raj) => [
@@ -78999,23 +79732,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(rak) => [
- q(5678),
+ q(5718),
q(0),
],
q(ral) => [
- q(5679),
+ q(5719),
q(0),
],
q(ram) => [
- q(5680),
+ q(5720),
q(0),
],
q(ran) => [
- q(5681),
+ q(5721),
q(0),
],
q(rao) => [
- q(5682),
+ q(5722),
q(0),
],
q(rap) => [
@@ -79023,7 +79756,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(raq) => [
- q(5683),
+ q(5723),
q(0),
],
q(rar) => [
@@ -79031,339 +79764,347 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ras) => [
- q(5684),
+ q(5724),
q(0),
],
q(rat) => [
- q(5685),
+ q(5725),
q(0),
],
q(rau) => [
- q(5686),
+ q(5726),
q(0),
],
q(rav) => [
- q(5687),
+ q(5727),
q(0),
],
q(raw) => [
- q(5688),
+ q(5728),
q(0),
],
q(rax) => [
- q(5689),
+ q(5729),
q(0),
],
q(ray) => [
- q(5690),
+ q(5730),
q(0),
],
q(raz) => [
- q(5691),
+ q(5731),
q(0),
],
q(rbb) => [
- q(5692),
+ q(5732),
q(0),
],
q(rbk) => [
- q(5693),
+ q(5733),
q(0),
],
q(rbl) => [
- q(5694),
+ q(5734),
+ q(0),
+ ],
+ q(rbp) => [
+ q(5735),
q(0),
],
q(rcf) => [
- q(5695),
+ q(5736),
q(0),
],
q(rdb) => [
- q(5696),
+ q(5737),
q(0),
],
q(rea) => [
- q(5697),
+ q(5738),
q(0),
],
q(reb) => [
- q(5698),
+ q(5739),
q(0),
],
q(ree) => [
- q(5699),
+ q(5740),
q(0),
],
q(reg) => [
- q(5700),
+ q(5741),
q(0),
],
q(rei) => [
- q(5701),
+ q(5742),
q(0),
],
q(rej) => [
- q(5702),
+ q(5743),
q(0),
],
q(rel) => [
- q(5703),
+ q(5744),
q(0),
],
q(rem) => [
- q(5704),
+ q(5745),
q(0),
],
q(ren) => [
- q(5705),
+ q(5746),
q(0),
],
q(rer) => [
- q(5706),
+ q(5747),
q(0),
],
q(res) => [
- q(5707),
+ q(5748),
q(0),
],
q(ret) => [
- q(5708),
+ q(5749),
q(0),
],
q(rey) => [
- q(5709),
+ q(5750),
q(0),
],
q(rga) => [
- q(5710),
+ q(5751),
q(0),
],
q(rge) => [
- q(5711),
+ q(5752),
q(0),
],
q(rgk) => [
- q(5712),
+ q(5753),
q(0),
],
q(rgn) => [
- q(5713),
+ q(5754),
q(0),
],
q(rgr) => [
- q(5714),
+ q(5755),
q(0),
],
q(rgs) => [
- q(5715),
+ q(5756),
q(0),
],
q(rgu) => [
- q(5716),
+ q(5757),
q(0),
],
q(rhg) => [
- q(5717),
+ q(5758),
q(0),
],
q(rhp) => [
- q(5718),
+ q(5759),
q(0),
],
q(ria) => [
- q(5719),
+ q(5760),
q(0),
],
q(rie) => [
- q(5720),
+ q(5761),
q(0),
],
q(rif) => [
- q(5721),
+ q(5762),
q(0),
],
q(ril) => [
- q(5722),
+ q(5763),
q(0),
],
q(rim) => [
- q(5723),
+ q(5764),
q(0),
],
q(rin) => [
- q(5724),
+ q(5765),
q(0),
],
q(rir) => [
- q(5725),
+ q(5766),
q(0),
],
q(rit) => [
- q(5726),
+ q(5767),
q(0),
],
q(riu) => [
- q(5727),
+ q(5768),
q(0),
],
q(rjg) => [
- q(5728),
+ q(5769),
q(0),
],
q(rji) => [
- q(5729),
+ q(5770),
q(0),
],
q(rjs) => [
- q(5730),
+ q(5771),
q(0),
],
q(rka) => [
- q(5731),
+ q(5772),
q(0),
],
q(rkb) => [
- q(5732),
+ q(5773),
q(0),
],
q(rkh) => [
- q(5733),
+ q(5774),
q(0),
],
q(rki) => [
- q(5734),
+ q(5775),
q(0),
],
q(rkm) => [
- q(5735),
+ q(5776),
q(0),
],
q(rkt) => [
- q(5736),
+ q(5777),
q(0),
],
q(rma) => [
- q(5737),
+ q(5778),
q(0),
],
q(rmb) => [
- q(5738),
+ q(5779),
q(0),
],
q(rmc) => [
- q(5739),
+ q(5780),
q(0),
],
q(rmd) => [
- q(5740),
+ q(5781),
q(0),
],
q(rme) => [
- q(5741),
+ q(5782),
q(0),
],
q(rmf) => [
- q(5742),
+ q(5783),
q(0),
],
q(rmg) => [
- q(5743),
+ q(5784),
q(0),
],
q(rmh) => [
- q(5744),
+ q(5785),
q(0),
],
q(rmi) => [
- q(5745),
+ q(5786),
q(0),
],
q(rmk) => [
- q(5746),
+ q(5787),
q(0),
],
q(rml) => [
- q(5747),
+ q(5788),
q(0),
],
q(rmm) => [
- q(5748),
+ q(5789),
q(0),
],
q(rmn) => [
- q(5749),
+ q(5790),
q(0),
],
q(rmo) => [
- q(5750),
+ q(5791),
q(0),
],
q(rmp) => [
- q(5751),
+ q(5792),
q(0),
],
q(rmq) => [
- q(5752),
+ q(5793),
q(0),
],
q(rms) => [
- q(5753),
+ q(5794),
q(0),
],
q(rmt) => [
- q(5754),
+ q(5795),
q(0),
],
q(rmu) => [
- q(5755),
+ q(5796),
q(0),
],
q(rmv) => [
- q(5756),
+ q(5797),
q(0),
],
q(rmw) => [
- q(5757),
+ q(5798),
q(0),
],
q(rmx) => [
- q(5758),
+ q(5799),
q(0),
],
q(rmy) => [
- q(5759),
+ q(5800),
q(0),
],
q(rmz) => [
- q(5760),
+ q(5801),
q(0),
],
q(rna) => [
- q(5761),
+ q(5802),
q(0),
],
q(rnd) => [
- q(5762),
+ q(5803),
q(0),
],
q(rng) => [
- q(5763),
+ q(5804),
q(0),
],
q(rnl) => [
- q(5764),
+ q(5805),
q(0),
],
q(rnn) => [
- q(5765),
+ q(5806),
q(0),
],
q(rnp) => [
- q(5766),
+ q(5807),
+ q(0),
+ ],
+ q(rnr) => [
+ q(5808),
q(0),
],
q(rnw) => [
- q(5767),
+ q(5809),
q(0),
],
q(roa) => [
@@ -79371,27 +80112,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(rob) => [
- q(5768),
+ q(5810),
q(0),
],
q(roc) => [
- q(5769),
+ q(5811),
q(0),
],
q(rod) => [
- q(5770),
+ q(5812),
q(0),
],
q(roe) => [
- q(5771),
+ q(5813),
q(0),
],
q(rof) => [
- q(5772),
+ q(5814),
q(0),
],
q(rog) => [
- q(5773),
+ q(5815),
q(0),
],
q(roh) => [
@@ -79399,7 +80140,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(rol) => [
- q(5774),
+ q(5816),
q(0),
],
q(rom) => [
@@ -79407,95 +80148,103 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(roo) => [
- q(5775),
+ q(5817),
q(0),
],
q(rop) => [
- q(5776),
+ q(5818),
q(0),
],
q(ror) => [
- q(5777),
+ q(5819),
q(0),
],
q(rou) => [
- q(5778),
+ q(5820),
q(0),
],
q(row) => [
- q(5779),
+ q(5821),
q(0),
],
q(rpn) => [
- q(5780),
+ q(5822),
q(0),
],
q(rpt) => [
- q(5781),
+ q(5823),
q(0),
],
q(rri) => [
- q(5782),
+ q(5824),
q(0),
],
q(rro) => [
- q(5783),
+ q(5825),
+ q(0),
+ ],
+ q(rrt) => [
+ q(5826),
q(0),
],
q(rsb) => [
- q(5784),
+ q(5827),
q(0),
],
q(rsi) => [
- q(5785),
+ q(5828),
q(0),
],
q(rsl) => [
- q(5786),
+ q(5829),
+ q(0),
+ ],
+ q(rtc) => [
+ q(5830),
q(0),
],
q(rth) => [
- q(5787),
+ q(5831),
q(0),
],
q(rtm) => [
- q(5788),
+ q(5832),
q(0),
],
q(rtw) => [
- q(5789),
+ q(5833),
q(0),
],
q(rub) => [
- q(5790),
+ q(5834),
q(0),
],
q(ruc) => [
- q(5791),
+ q(5835),
q(0),
],
q(rue) => [
- q(5792),
+ q(5836),
q(0),
],
q(ruf) => [
- q(5793),
+ q(5837),
q(0),
],
q(rug) => [
- q(5794),
+ q(5838),
q(0),
],
q(ruh) => [
- q(5795),
+ q(5839),
q(0),
],
q(rui) => [
- q(5796),
+ q(5840),
q(0),
],
q(ruk) => [
- q(5797),
+ q(5841),
q(0),
],
q(rum) => [
@@ -79507,7 +80256,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ruo) => [
- q(5798),
+ q(5842),
q(0),
],
q(rup) => [
@@ -79515,7 +80264,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ruq) => [
- q(5799),
+ q(5843),
q(0),
],
q(rus) => [
@@ -79523,63 +80272,63 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(rut) => [
- q(5800),
+ q(5844),
q(0),
],
q(ruu) => [
- q(5801),
+ q(5845),
q(0),
],
q(ruy) => [
- q(5802),
+ q(5846),
q(0),
],
q(ruz) => [
- q(5803),
+ q(5847),
q(0),
],
q(rwa) => [
- q(5804),
+ q(5848),
q(0),
],
q(rwk) => [
- q(5805),
+ q(5849),
q(0),
],
q(rwm) => [
- q(5806),
+ q(5850),
q(0),
],
q(rwo) => [
- q(5807),
+ q(5851),
q(0),
],
q(rwr) => [
- q(5808),
+ q(5852),
q(0),
],
q(ryn) => [
- q(5809),
+ q(5853),
q(0),
],
q(rys) => [
- q(5810),
+ q(5854),
q(0),
],
q(ryu) => [
- q(5811),
+ q(5855),
q(0),
],
q(saa) => [
- q(5812),
+ q(5856),
q(0),
],
q(sab) => [
- q(5813),
+ q(5857),
q(0),
],
q(sac) => [
- q(5814),
+ q(5858),
q(0),
],
q(sad) => [
@@ -79587,11 +80336,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sae) => [
- q(5815),
+ q(5859),
q(0),
],
q(saf) => [
- q(5816),
+ q(5860),
q(0),
],
q(sag) => [
@@ -79607,11 +80356,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(saj) => [
- q(5817),
+ q(5861),
q(0),
],
q(sak) => [
- q(5818),
+ q(5862),
q(0),
],
q(sal) => [
@@ -79627,19 +80376,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sao) => [
- q(5819),
+ q(5863),
q(0),
],
q(sap) => [
- q(5820),
+ q(5864),
q(0),
],
q(saq) => [
- q(5821),
+ q(5865),
q(0),
],
q(sar) => [
- q(5822),
+ q(5866),
q(0),
],
q(sas) => [
@@ -79651,167 +80400,163 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sau) => [
- q(5823),
+ q(5867),
q(0),
],
q(sav) => [
- q(5824),
+ q(5868),
q(0),
],
q(saw) => [
- q(5825),
+ q(5869),
q(0),
],
q(sax) => [
- q(5826),
+ q(5870),
q(0),
],
q(say) => [
- q(5827),
+ q(5871),
q(0),
],
q(saz) => [
- q(5828),
+ q(5872),
q(0),
],
q(sba) => [
- q(5829),
+ q(5873),
q(0),
],
q(sbb) => [
- q(5830),
+ q(5874),
q(0),
],
q(sbc) => [
- q(5831),
+ q(5875),
q(0),
],
q(sbd) => [
- q(5832),
+ q(5876),
q(0),
],
q(sbe) => [
- q(5833),
+ q(5877),
q(0),
],
q(sbf) => [
- q(5834),
+ q(5878),
q(0),
],
q(sbg) => [
- q(5835),
+ q(5879),
q(0),
],
q(sbh) => [
- q(5836),
+ q(5880),
q(0),
],
q(sbi) => [
- q(5837),
+ q(5881),
q(0),
],
q(sbj) => [
- q(5838),
+ q(5882),
q(0),
],
q(sbk) => [
- q(5839),
+ q(5883),
q(0),
],
q(sbl) => [
- q(5840),
+ q(5884),
q(0),
],
q(sbm) => [
- q(5841),
+ q(5885),
q(0),
],
q(sbn) => [
- q(5842),
+ q(5886),
q(0),
],
q(sbo) => [
- q(5843),
+ q(5887),
q(0),
],
q(sbp) => [
- q(5844),
+ q(5888),
q(0),
],
q(sbq) => [
- q(5845),
+ q(5889),
q(0),
],
q(sbr) => [
- q(5846),
+ q(5890),
q(0),
],
q(sbs) => [
- q(5847),
+ q(5891),
q(0),
],
q(sbt) => [
- q(5848),
+ q(5892),
q(0),
],
q(sbu) => [
- q(5849),
+ q(5893),
q(0),
],
q(sbv) => [
- q(5850),
+ q(5894),
q(0),
],
q(sbw) => [
- q(5851),
+ q(5895),
q(0),
],
q(sbx) => [
- q(5852),
+ q(5896),
q(0),
],
q(sby) => [
- q(5853),
+ q(5897),
q(0),
],
q(sbz) => [
- q(5854),
- q(0),
- ],
- q(sca) => [
- q(5855),
+ q(5898),
q(0),
],
q(scb) => [
- q(5856),
+ q(5899),
q(0),
],
q(sce) => [
- q(5857),
+ q(5900),
q(0),
],
q(scf) => [
- q(5858),
+ q(5901),
q(0),
],
q(scg) => [
- q(5859),
+ q(5902),
q(0),
],
q(sch) => [
- q(5860),
+ q(5903),
q(0),
],
q(sci) => [
- q(5861),
+ q(5904),
q(0),
],
q(sck) => [
- q(5862),
+ q(5905),
q(0),
],
q(scl) => [
- q(5863),
+ q(5906),
q(0),
],
q(scn) => [
@@ -79823,159 +80568,159 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(scp) => [
- q(5864),
+ q(5907),
q(0),
],
q(scq) => [
- q(5865),
+ q(5908),
q(0),
],
q(scs) => [
- q(5866),
+ q(5909),
q(0),
],
q(scu) => [
- q(5867),
+ q(5910),
q(0),
],
q(scv) => [
- q(5868),
+ q(5911),
q(0),
],
q(scw) => [
- q(5869),
+ q(5912),
q(0),
],
q(scx) => [
- q(5870),
+ q(5913),
q(0),
],
q(sda) => [
- q(5871),
+ q(5914),
q(0),
],
q(sdb) => [
- q(5872),
+ q(5915),
q(0),
],
q(sdc) => [
- q(5873),
+ q(5916),
q(0),
],
q(sde) => [
- q(5874),
+ q(5917),
q(0),
],
q(sdf) => [
- q(5875),
+ q(5918),
q(0),
],
q(sdg) => [
- q(5876),
+ q(5919),
q(0),
],
q(sdh) => [
- q(5877),
+ q(5920),
q(0),
],
q(sdj) => [
- q(5878),
+ q(5921),
q(0),
],
q(sdk) => [
- q(5879),
+ q(5922),
q(0),
],
q(sdl) => [
- q(5880),
+ q(5923),
q(0),
],
q(sdm) => [
- q(5881),
+ q(5924),
q(0),
],
q(sdn) => [
- q(5882),
+ q(5925),
q(0),
],
q(sdo) => [
- q(5883),
+ q(5926),
q(0),
],
q(sdp) => [
- q(5884),
+ q(5927),
q(0),
],
q(sdr) => [
- q(5885),
+ q(5928),
q(0),
],
q(sds) => [
- q(5886),
+ q(5929),
q(0),
],
q(sdt) => [
- q(5887),
+ q(5930),
q(0),
],
q(sdu) => [
- q(5888),
+ q(5931),
q(0),
],
q(sdv) => [
- q(0523),
+ q(0524),
q(0),
],
q(sdx) => [
- q(5889),
+ q(5932),
q(0),
],
q(sdz) => [
- q(5890),
+ q(5933),
q(0),
],
q(sea) => [
- q(5891),
+ q(5934),
q(0),
],
q(seb) => [
- q(5892),
+ q(5935),
q(0),
],
q(sec) => [
- q(5893),
+ q(5936),
q(0),
],
q(sed) => [
- q(5894),
+ q(5937),
q(0),
],
q(see) => [
- q(5895),
+ q(5938),
q(0),
],
q(sef) => [
- q(5896),
+ q(5939),
q(0),
],
q(seg) => [
- q(5897),
+ q(5940),
q(0),
],
q(seh) => [
- q(5898),
+ q(5941),
q(0),
],
q(sei) => [
- q(5899),
+ q(5942),
q(0),
],
q(sej) => [
- q(5900),
+ q(5943),
q(0),
],
q(sek) => [
- q(5901),
+ q(5944),
q(0),
],
q(sel) => [
@@ -79987,67 +80732,71 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sen) => [
- q(5902),
+ q(5945),
q(0),
],
q(seo) => [
- q(5903),
+ q(5946),
q(0),
],
q(sep) => [
- q(5904),
+ q(5947),
q(0),
],
q(seq) => [
- q(5905),
+ q(5948),
q(0),
],
q(ser) => [
- q(5906),
+ q(5949),
q(0),
],
q(ses) => [
- q(5907),
+ q(5950),
q(0),
],
q(set) => [
- q(5908),
+ q(5951),
q(0),
],
q(seu) => [
- q(5909),
+ q(5952),
q(0),
],
q(sev) => [
- q(5910),
+ q(5953),
q(0),
],
q(sew) => [
- q(5911),
+ q(5954),
q(0),
],
q(sey) => [
- q(5912),
+ q(5955),
q(0),
],
q(sez) => [
- q(5913),
+ q(5956),
q(0),
],
q(sfb) => [
- q(5914),
+ q(5957),
+ q(0),
+ ],
+ q(sfe) => [
+ q(5958),
q(0),
],
q(sfm) => [
- q(5915),
+ q(5959),
q(0),
],
q(sfs) => [
- q(5916),
+ q(5960),
q(0),
],
q(sfw) => [
- q(5917),
+ q(5961),
q(0),
],
q(sga) => [
@@ -80055,39 +80804,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(sgb) => [
- q(5918),
+ q(5962),
q(0),
],
q(sgc) => [
- q(5919),
+ q(5963),
q(0),
],
q(sgd) => [
- q(5920),
+ q(5964),
q(0),
],
q(sge) => [
- q(5921),
+ q(5965),
q(0),
],
q(sgg) => [
- q(5922),
+ q(5966),
q(0),
],
q(sgh) => [
- q(5923),
+ q(5967),
q(0),
],
q(sgi) => [
- q(5924),
+ q(5968),
+ q(0),
+ ],
+ q(sgj) => [
+ q(5969),
q(0),
],
q(sgk) => [
- q(5925),
+ q(5970),
q(0),
],
q(sgm) => [
- q(5926),
+ q(5971),
q(0),
],
q(sgn) => [
@@ -80095,91 +80848,91 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sgo) => [
- q(5927),
+ q(5972),
q(0),
],
q(sgp) => [
- q(5928),
+ q(5973),
q(0),
],
q(sgr) => [
- q(5929),
+ q(5974),
q(0),
],
q(sgs) => [
- q(5930),
+ q(5975),
q(0),
],
q(sgt) => [
- q(5931),
+ q(5976),
q(0),
],
q(sgu) => [
- q(5932),
+ q(5977),
q(0),
],
q(sgw) => [
- q(5933),
+ q(5978),
q(0),
],
q(sgx) => [
- q(5934),
+ q(5979),
q(0),
],
q(sgy) => [
- q(5935),
+ q(5980),
q(0),
],
q(sgz) => [
- q(5936),
+ q(5981),
q(0),
],
q(sha) => [
- q(5937),
+ q(5982),
q(0),
],
q(shb) => [
- q(5938),
+ q(5983),
q(0),
],
q(shc) => [
- q(5939),
+ q(5984),
q(0),
],
q(shd) => [
- q(5940),
+ q(5985),
q(0),
],
q(she) => [
- q(5941),
+ q(5986),
q(0),
],
q(shg) => [
- q(5942),
+ q(5987),
q(0),
],
q(shh) => [
- q(5943),
+ q(5988),
q(0),
],
q(shi) => [
- q(5944),
+ q(5989),
q(0),
],
q(shj) => [
- q(5945),
+ q(5990),
q(0),
],
q(shk) => [
- q(5946),
+ q(5991),
q(0),
],
q(shl) => [
- q(5947),
+ q(5992),
q(0),
],
q(shm) => [
- q(5948),
+ q(5993),
q(0),
],
q(shn) => [
@@ -80187,59 +80940,59 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sho) => [
- q(5949),
+ q(5994),
q(0),
],
q(shp) => [
- q(5950),
+ q(5995),
q(0),
],
q(shq) => [
- q(5951),
+ q(5996),
q(0),
],
q(shr) => [
- q(5952),
+ q(5997),
q(0),
],
q(shs) => [
- q(5953),
+ q(5998),
q(0),
],
q(sht) => [
- q(5954),
+ q(5999),
q(0),
],
q(shu) => [
- q(5955),
+ q(6000),
q(0),
],
q(shv) => [
- q(5956),
+ q(6001),
q(0),
],
q(shw) => [
- q(5957),
+ q(6002),
q(0),
],
q(shx) => [
- q(5958),
+ q(6003),
q(0),
],
q(shy) => [
- q(5959),
+ q(6004),
q(0),
],
q(shz) => [
- q(5960),
+ q(6005),
q(0),
],
q(sia) => [
- q(5961),
+ q(6006),
q(0),
],
q(sib) => [
- q(5962),
+ q(6007),
q(0),
],
q(sid) => [
@@ -80247,39 +81000,39 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sie) => [
- q(5963),
+ q(6008),
q(0),
],
q(sif) => [
- q(5964),
+ q(6009),
q(0),
],
q(sig) => [
- q(5965),
+ q(6010),
q(0),
],
q(sih) => [
- q(5966),
+ q(6011),
q(0),
],
q(sii) => [
- q(5967),
+ q(6012),
q(0),
],
q(sij) => [
- q(5968),
+ q(6013),
q(0),
],
q(sik) => [
- q(5969),
+ q(6014),
q(0),
],
q(sil) => [
- q(5970),
+ q(6015),
q(0),
],
q(sim) => [
- q(5971),
+ q(6016),
q(0),
],
q(sin) => [
@@ -80291,19 +81044,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sip) => [
- q(5972),
+ q(6017),
q(0),
],
q(siq) => [
- q(5973),
+ q(6018),
q(0),
],
q(sir) => [
- q(5974),
+ q(6019),
q(0),
],
q(sis) => [
- q(5975),
+ q(6020),
q(0),
],
q(sit) => [
@@ -80311,191 +81064,191 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(siu) => [
- q(5976),
+ q(6021),
q(0),
],
q(siv) => [
- q(5977),
+ q(6022),
q(0),
],
q(siw) => [
- q(5978),
+ q(6023),
q(0),
],
q(six) => [
- q(5979),
+ q(6024),
q(0),
],
q(siy) => [
- q(5980),
+ q(6025),
q(0),
],
q(siz) => [
- q(5981),
+ q(6026),
q(0),
],
q(sja) => [
- q(5982),
+ q(6027),
q(0),
],
q(sjb) => [
- q(5983),
+ q(6028),
q(0),
],
q(sjd) => [
- q(5984),
+ q(6029),
q(0),
],
q(sje) => [
- q(5985),
+ q(6030),
q(0),
],
q(sjg) => [
- q(5986),
+ q(6031),
q(0),
],
q(sjk) => [
- q(5987),
+ q(6032),
q(0),
],
q(sjl) => [
- q(5988),
+ q(6033),
q(0),
],
q(sjm) => [
- q(5989),
+ q(6034),
q(0),
],
q(sjn) => [
- q(5990),
+ q(6035),
q(0),
],
q(sjo) => [
- q(5991),
+ q(6036),
q(0),
],
q(sjp) => [
- q(5992),
+ q(6037),
q(0),
],
q(sjr) => [
- q(5993),
+ q(6038),
q(0),
],
q(sjs) => [
- q(5994),
+ q(6039),
q(0),
],
q(sjt) => [
- q(5995),
+ q(6040),
q(0),
],
q(sju) => [
- q(5996),
+ q(6041),
q(0),
],
q(sjw) => [
- q(5997),
+ q(6042),
q(0),
],
q(ska) => [
- q(5998),
+ q(6043),
q(0),
],
q(skb) => [
- q(5999),
+ q(6044),
q(0),
],
q(skc) => [
- q(6000),
+ q(6045),
q(0),
],
q(skd) => [
- q(6001),
+ q(6046),
q(0),
],
q(ske) => [
- q(6002),
+ q(6047),
q(0),
],
q(skf) => [
- q(6003),
+ q(6048),
q(0),
],
q(skg) => [
- q(6004),
+ q(6049),
q(0),
],
q(skh) => [
- q(6005),
+ q(6050),
q(0),
],
q(ski) => [
- q(6006),
+ q(6051),
q(0),
],
q(skj) => [
- q(6007),
+ q(6052),
q(0),
],
q(skk) => [
- q(6008),
+ q(6053),
q(0),
],
q(skm) => [
- q(6009),
+ q(6054),
q(0),
],
q(skn) => [
- q(6010),
+ q(6055),
q(0),
],
q(sko) => [
- q(6011),
+ q(6056),
q(0),
],
q(skp) => [
- q(6012),
+ q(6057),
q(0),
],
q(skq) => [
- q(6013),
+ q(6058),
q(0),
],
q(skr) => [
- q(6014),
+ q(6059),
q(0),
],
q(sks) => [
- q(6015),
+ q(6060),
q(0),
],
q(skt) => [
- q(6016),
+ q(6061),
q(0),
],
q(sku) => [
- q(6017),
+ q(6062),
q(0),
],
q(skv) => [
- q(6018),
+ q(6063),
q(0),
],
q(skw) => [
- q(6019),
+ q(6064),
q(0),
],
q(skx) => [
- q(6020),
+ q(6065),
q(0),
],
q(sky) => [
- q(6021),
+ q(6066),
q(0),
],
q(skz) => [
- q(6022),
+ q(6067),
q(0),
],
q(sla) => [
@@ -80503,47 +81256,47 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(slc) => [
- q(5833),
+ q(5877),
q(0),
],
q(sld) => [
- q(6023),
+ q(6068),
q(0),
],
q(sle) => [
- q(6024),
+ q(6069),
q(0),
],
q(slf) => [
- q(6025),
+ q(6070),
q(0),
],
q(slg) => [
- q(6026),
+ q(6071),
q(0),
],
q(slh) => [
- q(6027),
+ q(6072),
q(0),
],
q(sli) => [
- q(6028),
+ q(6073),
q(0),
],
q(slj) => [
- q(6029),
+ q(6074),
q(0),
],
q(sll) => [
- q(6030),
+ q(6075),
q(0),
],
q(slm) => [
- q(6031),
+ q(6076),
q(0),
],
q(sln) => [
- q(6032),
+ q(6077),
q(0),
],
q(slo) => [
@@ -80551,27 +81304,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(slp) => [
- q(6033),
+ q(6078),
q(0),
],
q(slq) => [
- q(6034),
+ q(6079),
q(0),
],
q(slr) => [
- q(6035),
+ q(6080),
q(0),
],
q(sls) => [
- q(6036),
+ q(6081),
q(0),
],
q(slt) => [
- q(6037),
+ q(6082),
q(0),
],
q(slu) => [
- q(6038),
+ q(6083),
q(0),
],
q(slv) => [
@@ -80579,19 +81332,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(slw) => [
- q(6039),
+ q(6084),
q(0),
],
q(slx) => [
- q(6040),
+ q(6085),
q(0),
],
q(sly) => [
- q(6041),
+ q(6086),
q(0),
],
q(slz) => [
- q(6042),
+ q(6087),
q(0),
],
q(sma) => [
@@ -80599,15 +81352,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(smb) => [
- q(6043),
+ q(6088),
q(0),
],
q(smc) => [
- q(6044),
+ q(6089),
q(0),
],
q(smd) => [
- q(6045),
+ q(6090),
q(0),
],
q(sme) => [
@@ -80615,15 +81368,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(smf) => [
- q(6046),
+ q(6091),
q(0),
],
q(smg) => [
- q(6047),
+ q(6092),
q(0),
],
q(smh) => [
- q(6048),
+ q(6093),
q(0),
],
q(smi) => [
@@ -80635,15 +81388,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(smk) => [
- q(6049),
+ q(6094),
q(0),
],
q(sml) => [
- q(6050),
+ q(6095),
q(0),
],
q(smm) => [
- q(6051),
+ q(6096),
q(0),
],
q(smn) => [
@@ -80655,15 +81408,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(smp) => [
- q(6052),
+ q(6097),
q(0),
],
q(smq) => [
- q(6053),
+ q(6098),
q(0),
],
q(smr) => [
- q(6054),
+ q(6099),
q(0),
],
q(sms) => [
@@ -80671,31 +81424,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(smt) => [
- q(6055),
+ q(6100),
q(0),
],
q(smu) => [
- q(6056),
+ q(6101),
q(0),
],
q(smv) => [
- q(6057),
+ q(6102),
q(0),
],
q(smw) => [
- q(6058),
+ q(6103),
q(0),
],
q(smx) => [
- q(6059),
+ q(6104),
q(0),
],
q(smy) => [
- q(6060),
+ q(6105),
q(0),
],
q(smz) => [
- q(6061),
+ q(6106),
q(0),
],
q(sna) => [
@@ -80703,11 +81456,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(snb) => [
- q(6062),
+ q(6107),
q(0),
],
q(snc) => [
- q(6063),
+ q(6108),
q(0),
],
q(snd) => [
@@ -80715,27 +81468,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sne) => [
- q(6064),
+ q(6109),
q(0),
],
q(snf) => [
- q(6065),
+ q(6110),
q(0),
],
q(sng) => [
- q(6066),
+ q(6111),
q(0),
],
q(snh) => [
- q(6067),
+ q(6112),
q(0),
],
q(sni) => [
- q(6068),
+ q(6113),
q(0),
],
q(snj) => [
- q(6069),
+ q(6114),
q(0),
],
q(snk) => [
@@ -80743,79 +81496,79 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(snl) => [
- q(6070),
+ q(6115),
q(0),
],
q(snm) => [
- q(6071),
+ q(6116),
q(0),
],
q(snn) => [
- q(6072),
+ q(6117),
q(0),
],
q(sno) => [
- q(6073),
+ q(6118),
q(0),
],
q(snp) => [
- q(6074),
+ q(6119),
q(0),
],
q(snq) => [
- q(6075),
+ q(6120),
q(0),
],
q(snr) => [
- q(6076),
+ q(6121),
q(0),
],
q(sns) => [
- q(6077),
+ q(6122),
q(0),
],
q(snu) => [
- q(6078),
+ q(6123),
q(0),
],
q(snv) => [
- q(6079),
+ q(6124),
q(0),
],
q(snw) => [
- q(6080),
+ q(6125),
q(0),
],
q(snx) => [
- q(6081),
+ q(6126),
q(0),
],
q(sny) => [
- q(6082),
+ q(6127),
q(0),
],
q(snz) => [
- q(6083),
+ q(6128),
q(0),
],
q(soa) => [
- q(6084),
+ q(6129),
q(0),
],
q(sob) => [
- q(6085),
+ q(6130),
q(0),
],
q(soc) => [
- q(6086),
+ q(6131),
q(0),
],
q(sod) => [
- q(6087),
+ q(6132),
q(0),
],
q(soe) => [
- q(6088),
+ q(6133),
q(0),
],
q(sog) => [
@@ -80823,23 +81576,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(soh) => [
- q(6089),
+ q(6134),
q(0),
],
q(soi) => [
- q(6090),
+ q(6135),
q(0),
],
q(soj) => [
- q(6091),
+ q(6136),
q(0),
],
q(sok) => [
- q(6092),
+ q(6137),
q(0),
],
q(sol) => [
- q(6093),
+ q(6138),
q(0),
],
q(som) => [
@@ -80851,23 +81604,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(soo) => [
- q(6094),
+ q(6139),
q(0),
],
q(sop) => [
- q(6095),
+ q(6140),
q(0),
],
q(soq) => [
- q(6096),
+ q(6141),
q(0),
],
q(sor) => [
- q(6097),
+ q(6142),
q(0),
],
q(sos) => [
- q(6098),
+ q(6143),
q(0),
],
q(sot) => [
@@ -80875,27 +81628,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sou) => [
- q(6099),
+ q(6144),
q(0),
],
q(sov) => [
- q(6100),
+ q(6145),
q(0),
],
q(sow) => [
- q(6101),
+ q(6146),
q(0),
],
q(sox) => [
- q(6102),
+ q(6147),
q(0),
],
q(soy) => [
- q(6103),
+ q(6148),
q(0),
],
q(soz) => [
- q(6104),
+ q(6149),
q(0),
],
q(spa) => [
@@ -80903,131 +81656,139 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(spb) => [
- q(6105),
+ q(6150),
q(0),
],
q(spc) => [
- q(6106),
+ q(6151),
q(0),
],
q(spd) => [
- q(6107),
+ q(6152),
q(0),
],
q(spe) => [
- q(6108),
+ q(6153),
q(0),
],
q(spg) => [
- q(6109),
+ q(6154),
q(0),
],
q(spi) => [
- q(6110),
+ q(6155),
q(0),
],
q(spk) => [
- q(6111),
+ q(6156),
q(0),
],
q(spl) => [
- q(6112),
+ q(6157),
q(0),
],
q(spm) => [
- q(6113),
+ q(6158),
q(0),
],
q(spo) => [
- q(6114),
+ q(6159),
q(0),
],
q(spp) => [
- q(6115),
+ q(6160),
q(0),
],
q(spq) => [
- q(6116),
+ q(6161),
q(0),
],
q(spr) => [
- q(6117),
+ q(6162),
q(0),
],
q(sps) => [
- q(6118),
+ q(6163),
q(0),
],
q(spt) => [
- q(6119),
+ q(6164),
q(0),
],
q(spu) => [
- q(6120),
+ q(6165),
+ q(0),
+ ],
+ q(spv) => [
+ q(6166),
q(0),
],
q(spx) => [
- q(6121),
+ q(6167),
q(0),
],
q(spy) => [
- q(6122),
+ q(6168),
q(0),
],
q(sqa) => [
- q(6123),
+ q(6169),
q(0),
],
q(sqh) => [
- q(6124),
+ q(6170),
q(0),
],
q(sqj) => [
- q(0524),
+ q(0525),
+ q(0),
+ ],
+ q(sqk) => [
+ q(6171),
q(0),
],
q(sqm) => [
- q(6125),
+ q(6172),
q(0),
],
q(sqn) => [
- q(6126),
+ q(6173),
q(0),
],
q(sqo) => [
- q(6127),
+ q(6174),
q(0),
],
q(sqq) => [
- q(6128),
+ q(6175),
q(0),
],
q(sqr) => [
- q(6129),
+ q(6176),
q(0),
],
q(sqs) => [
- q(6130),
+ q(6177),
q(0),
],
q(sqt) => [
- q(6131),
+ q(6178),
q(0),
],
q(squ) => [
- q(6132),
+ q(6179),
q(0),
],
q(sra) => [
- q(6133),
+ q(6180),
q(0),
],
q(srb) => [
- q(6134),
+ q(6181),
q(0),
],
q(src) => [
- q(6135),
+ q(6182),
q(0),
],
q(srd) => [
@@ -81035,35 +81796,35 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sre) => [
- q(6136),
+ q(6183),
q(0),
],
q(srf) => [
- q(6137),
+ q(6184),
q(0),
],
q(srg) => [
- q(6138),
+ q(6185),
q(0),
],
q(srh) => [
- q(6139),
+ q(6186),
q(0),
],
q(sri) => [
- q(6140),
+ q(6187),
q(0),
],
q(srk) => [
- q(6141),
+ q(6188),
q(0),
],
q(srl) => [
- q(6142),
+ q(6189),
q(0),
],
q(srm) => [
- q(6143),
+ q(6190),
q(0),
],
q(srn) => [
@@ -81071,7 +81832,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sro) => [
- q(6144),
+ q(6191),
q(0),
],
q(srp) => [
@@ -81079,7 +81840,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(srq) => [
- q(6145),
+ q(6192),
q(0),
],
q(srr) => [
@@ -81087,35 +81848,35 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(srs) => [
- q(6146),
+ q(6193),
q(0),
],
q(srt) => [
- q(6147),
+ q(6194),
q(0),
],
q(sru) => [
- q(6148),
+ q(6195),
q(0),
],
q(srv) => [
- q(6149),
+ q(6196),
q(0),
],
q(srw) => [
- q(6150),
+ q(6197),
q(0),
],
q(srx) => [
- q(6151),
+ q(6198),
q(0),
],
q(sry) => [
- q(6152),
+ q(6199),
q(0),
],
q(srz) => [
- q(6153),
+ q(6200),
q(0),
],
q(ssa) => [
@@ -81123,87 +81884,87 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ssb) => [
- q(6154),
+ q(6201),
q(0),
],
q(ssc) => [
- q(6155),
+ q(6202),
q(0),
],
q(ssd) => [
- q(6156),
+ q(6203),
q(0),
],
q(sse) => [
- q(6157),
+ q(6204),
q(0),
],
q(ssf) => [
- q(6158),
+ q(6205),
q(0),
],
q(ssg) => [
- q(6159),
+ q(6206),
q(0),
],
q(ssh) => [
- q(6160),
+ q(6207),
q(0),
],
q(ssi) => [
- q(6161),
+ q(6208),
q(0),
],
q(ssj) => [
- q(6162),
+ q(6209),
q(0),
],
q(ssk) => [
- q(6163),
+ q(6210),
q(0),
],
q(ssl) => [
- q(6164),
+ q(6211),
q(0),
],
q(ssm) => [
- q(6165),
+ q(6212),
q(0),
],
q(ssn) => [
- q(6166),
+ q(6213),
q(0),
],
q(sso) => [
- q(6167),
+ q(6214),
q(0),
],
q(ssp) => [
- q(6168),
+ q(6215),
q(0),
],
q(ssq) => [
- q(6169),
+ q(6216),
q(0),
],
q(ssr) => [
- q(6170),
+ q(6217),
q(0),
],
q(sss) => [
- q(6171),
+ q(6218),
q(0),
],
q(sst) => [
- q(6172),
+ q(6219),
q(0),
],
q(ssu) => [
- q(6173),
+ q(6220),
q(0),
],
q(ssv) => [
- q(6174),
+ q(6221),
q(0),
],
q(ssw) => [
@@ -81211,131 +81972,131 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ssx) => [
- q(6175),
+ q(6222),
q(0),
],
q(ssy) => [
- q(6176),
+ q(6223),
q(0),
],
q(ssz) => [
- q(6177),
+ q(6224),
q(0),
],
q(sta) => [
- q(6178),
+ q(6225),
q(0),
],
q(stb) => [
- q(6179),
+ q(6226),
q(0),
],
q(std) => [
- q(6180),
+ q(6227),
q(0),
],
q(ste) => [
- q(6181),
+ q(6228),
q(0),
],
q(stf) => [
- q(6182),
+ q(6229),
q(0),
],
q(stg) => [
- q(6183),
+ q(6230),
q(0),
],
q(sth) => [
- q(6184),
+ q(6231),
q(0),
],
q(sti) => [
- q(6185),
+ q(6232),
q(0),
],
q(stj) => [
- q(6186),
+ q(6233),
q(0),
],
q(stk) => [
- q(6187),
+ q(6234),
q(0),
],
q(stl) => [
- q(6188),
+ q(6235),
q(0),
],
q(stm) => [
- q(6189),
+ q(6236),
q(0),
],
q(stn) => [
- q(6190),
+ q(6237),
q(0),
],
q(sto) => [
- q(6191),
+ q(6238),
q(0),
],
q(stp) => [
- q(6192),
+ q(6239),
q(0),
],
q(stq) => [
- q(6193),
+ q(6240),
q(0),
],
q(str) => [
- q(6194),
+ q(6241),
q(0),
],
q(sts) => [
- q(6195),
+ q(6242),
q(0),
],
q(stt) => [
- q(6196),
+ q(6243),
q(0),
],
q(stu) => [
- q(6197),
+ q(6244),
q(0),
],
q(stv) => [
- q(6198),
+ q(6245),
q(0),
],
q(stw) => [
- q(6199),
+ q(6246),
q(0),
],
q(sua) => [
- q(6200),
+ q(6247),
q(0),
],
q(sub) => [
- q(6201),
+ q(6248),
q(0),
],
q(suc) => [
- q(6202),
+ q(6249),
q(0),
],
q(sue) => [
- q(6203),
+ q(6250),
q(0),
],
q(sug) => [
- q(6204),
+ q(6251),
q(0),
],
q(sui) => [
- q(6205),
+ q(6252),
q(0),
],
q(suj) => [
- q(6206),
+ q(6253),
q(0),
],
q(suk) => [
@@ -81347,11 +82108,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(suq) => [
- q(6207),
+ q(6254),
q(0),
],
q(sur) => [
- q(6208),
+ q(6255),
q(0),
],
q(sus) => [
@@ -81359,15 +82120,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sut) => [
- q(6209),
+ q(6256),
q(0),
],
q(suv) => [
- q(6210),
+ q(6257),
q(0),
],
q(suw) => [
- q(6211),
+ q(6258),
q(0),
],
q(sux) => [
@@ -81375,43 +82136,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(suy) => [
- q(6212),
+ q(6259),
q(0),
],
q(suz) => [
- q(6213),
+ q(6260),
q(0),
],
q(sva) => [
- q(6214),
+ q(6261),
q(0),
],
q(svb) => [
- q(6215),
+ q(6262),
q(0),
],
q(svc) => [
- q(6216),
+ q(6263),
q(0),
],
q(sve) => [
- q(6217),
+ q(6264),
q(0),
],
q(svk) => [
- q(6218),
+ q(6265),
q(0),
],
q(svr) => [
- q(6219),
+ q(6266),
q(0),
],
q(svs) => [
- q(6220),
+ q(6267),
q(0),
],
q(svx) => [
- q(6221),
+ q(6268),
q(0),
],
q(swa) => [
@@ -81419,11 +82180,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(swb) => [
- q(6222),
+ q(6269),
q(0),
],
q(swc) => [
- q(6223),
+ q(6270),
q(0),
],
q(swe) => [
@@ -81431,143 +82192,143 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(swf) => [
- q(6224),
+ q(6271),
q(0),
],
q(swg) => [
- q(6225),
+ q(6272),
q(0),
],
q(swh) => [
- q(6226),
+ q(6273),
q(0),
],
q(swi) => [
- q(6227),
+ q(6274),
q(0),
],
q(swj) => [
- q(6228),
+ q(6275),
q(0),
],
q(swk) => [
- q(6229),
+ q(6276),
q(0),
],
q(swl) => [
- q(6230),
+ q(6277),
q(0),
],
q(swm) => [
- q(6231),
+ q(6278),
q(0),
],
q(swn) => [
- q(6232),
+ q(6279),
q(0),
],
q(swo) => [
- q(6233),
+ q(6280),
q(0),
],
q(swp) => [
- q(6234),
+ q(6281),
q(0),
],
q(swq) => [
- q(6235),
+ q(6282),
q(0),
],
q(swr) => [
- q(6236),
+ q(6283),
q(0),
],
q(sws) => [
- q(6237),
+ q(6284),
q(0),
],
q(swt) => [
- q(6238),
+ q(6285),
q(0),
],
q(swu) => [
- q(6239),
+ q(6286),
q(0),
],
q(swv) => [
- q(6240),
+ q(6287),
q(0),
],
q(sww) => [
- q(6241),
+ q(6288),
q(0),
],
q(swx) => [
- q(6242),
+ q(6289),
q(0),
],
q(swy) => [
- q(6243),
+ q(6290),
q(0),
],
q(sxb) => [
- q(6244),
+ q(6291),
q(0),
],
q(sxc) => [
- q(6245),
+ q(6292),
q(0),
],
q(sxe) => [
- q(6246),
+ q(6293),
q(0),
],
q(sxg) => [
- q(6247),
+ q(6294),
q(0),
],
q(sxk) => [
- q(6248),
+ q(6295),
q(0),
],
q(sxl) => [
- q(6249),
+ q(6296),
q(0),
],
q(sxm) => [
- q(6250),
+ q(6297),
q(0),
],
q(sxn) => [
- q(6251),
+ q(6298),
q(0),
],
q(sxo) => [
- q(6252),
+ q(6299),
q(0),
],
q(sxr) => [
- q(6253),
+ q(6300),
q(0),
],
q(sxs) => [
- q(6254),
+ q(6301),
q(0),
],
q(sxu) => [
- q(6255),
+ q(6302),
q(0),
],
q(sxw) => [
- q(6256),
+ q(6303),
q(0),
],
q(sya) => [
- q(6257),
+ q(6304),
q(0),
],
q(syb) => [
- q(6258),
+ q(6305),
q(0),
],
q(syc) => [
@@ -81575,31 +82336,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(syd) => [
- q(0525),
+ q(0526),
q(0),
],
q(syi) => [
- q(6259),
+ q(6306),
q(0),
],
q(syk) => [
- q(6260),
+ q(6307),
q(0),
],
q(syl) => [
- q(6261),
+ q(6308),
q(0),
],
q(sym) => [
- q(6262),
+ q(6309),
q(0),
],
q(syn) => [
- q(6263),
+ q(6310),
q(0),
],
q(syo) => [
- q(6264),
+ q(6311),
q(0),
],
q(syr) => [
@@ -81607,87 +82368,87 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(sys) => [
- q(6265),
+ q(6312),
q(0),
],
q(syw) => [
- q(6266),
+ q(6313),
q(0),
],
q(syy) => [
- q(6267),
+ q(6314),
q(0),
],
q(sza) => [
- q(6268),
+ q(6315),
q(0),
],
q(szb) => [
- q(6269),
+ q(6316),
q(0),
],
q(szc) => [
- q(6270),
+ q(6317),
q(0),
],
q(szd) => [
- q(6271),
+ q(6318),
q(0),
],
q(sze) => [
- q(6272),
+ q(6319),
q(0),
],
q(szg) => [
- q(6273),
+ q(6320),
q(0),
],
q(szl) => [
- q(6274),
+ q(6321),
q(0),
],
q(szn) => [
- q(6275),
+ q(6322),
q(0),
],
q(szp) => [
- q(6276),
+ q(6323),
q(0),
],
q(szv) => [
- q(6277),
+ q(6324),
q(0),
],
q(szw) => [
- q(6278),
+ q(6325),
q(0),
],
q(taa) => [
- q(6279),
+ q(6326),
q(0),
],
q(tab) => [
- q(6280),
+ q(6327),
q(0),
],
q(tac) => [
- q(6281),
+ q(6328),
q(0),
],
q(tad) => [
- q(6282),
+ q(6329),
q(0),
],
q(tae) => [
- q(6283),
+ q(6330),
q(0),
],
q(taf) => [
- q(6284),
+ q(6331),
q(0),
],
q(tag) => [
- q(6285),
+ q(6332),
q(0),
],
q(tah) => [
@@ -81699,15 +82460,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(taj) => [
- q(6286),
+ q(6333),
q(0),
],
q(tak) => [
- q(6287),
+ q(6334),
q(0),
],
q(tal) => [
- q(6288),
+ q(6335),
q(0),
],
q(tam) => [
@@ -81715,27 +82476,27 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tan) => [
- q(6289),
+ q(6336),
q(0),
],
q(tao) => [
- q(6290),
+ q(6337),
q(0),
],
q(tap) => [
- q(6291),
+ q(6338),
q(0),
],
q(taq) => [
- q(6292),
+ q(6339),
q(0),
],
q(tar) => [
- q(6293),
+ q(6340),
q(0),
],
q(tas) => [
- q(6294),
+ q(6341),
q(0),
],
q(tat) => [
@@ -81743,351 +82504,351 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tau) => [
- q(6295),
+ q(6342),
q(0),
],
q(tav) => [
- q(6296),
+ q(6343),
q(0),
],
q(taw) => [
- q(6297),
+ q(6344),
q(0),
],
q(tax) => [
- q(6298),
+ q(6345),
q(0),
],
q(tay) => [
- q(6299),
+ q(6346),
q(0),
],
q(taz) => [
- q(6300),
+ q(6347),
q(0),
],
q(tba) => [
- q(6301),
+ q(6348),
q(0),
],
q(tbb) => [
- q(6302),
+ q(6349),
q(0),
],
q(tbc) => [
- q(6303),
+ q(6350),
q(0),
],
q(tbd) => [
- q(6304),
+ q(6351),
q(0),
],
q(tbe) => [
- q(6305),
+ q(6352),
q(0),
],
q(tbf) => [
- q(6306),
+ q(6353),
q(0),
],
q(tbg) => [
- q(6307),
+ q(6354),
q(0),
],
q(tbh) => [
- q(6308),
+ q(6355),
q(0),
],
q(tbi) => [
- q(6309),
+ q(6356),
q(0),
],
q(tbj) => [
- q(6310),
+ q(6357),
q(0),
],
q(tbk) => [
- q(6311),
+ q(6358),
q(0),
],
q(tbl) => [
- q(6312),
+ q(6359),
q(0),
],
q(tbm) => [
- q(6313),
+ q(6360),
q(0),
],
q(tbn) => [
- q(6314),
+ q(6361),
q(0),
],
q(tbo) => [
- q(6315),
+ q(6362),
q(0),
],
q(tbp) => [
- q(6316),
+ q(6363),
q(0),
],
q(tbq) => [
- q(0526),
+ q(0527),
q(0),
],
q(tbr) => [
- q(6317),
+ q(6364),
q(0),
],
q(tbs) => [
- q(6318),
+ q(6365),
q(0),
],
q(tbt) => [
- q(6319),
+ q(6366),
q(0),
],
q(tbu) => [
- q(6320),
+ q(6367),
q(0),
],
q(tbv) => [
- q(6321),
+ q(6368),
q(0),
],
q(tbw) => [
- q(6322),
+ q(6369),
q(0),
],
q(tbx) => [
- q(6323),
+ q(6370),
q(0),
],
q(tby) => [
- q(6324),
+ q(6371),
q(0),
],
q(tbz) => [
- q(6325),
+ q(6372),
q(0),
],
q(tca) => [
- q(6326),
+ q(6373),
q(0),
],
q(tcb) => [
- q(6327),
+ q(6374),
q(0),
],
q(tcc) => [
- q(6328),
+ q(6375),
q(0),
],
q(tcd) => [
- q(6329),
+ q(6376),
q(0),
],
q(tce) => [
- q(6330),
+ q(6377),
q(0),
],
q(tcf) => [
- q(6331),
+ q(6378),
q(0),
],
q(tcg) => [
- q(6332),
+ q(6379),
q(0),
],
q(tch) => [
- q(6333),
+ q(6380),
q(0),
],
q(tci) => [
- q(6334),
+ q(6381),
q(0),
],
q(tck) => [
- q(6335),
+ q(6382),
q(0),
],
q(tcl) => [
- q(6336),
+ q(6383),
q(0),
],
q(tcm) => [
- q(6337),
+ q(6384),
q(0),
],
q(tcn) => [
- q(6338),
+ q(6385),
q(0),
],
q(tco) => [
- q(6339),
+ q(6386),
q(0),
],
q(tcp) => [
- q(6340),
+ q(6387),
q(0),
],
q(tcq) => [
- q(6341),
+ q(6388),
q(0),
],
q(tcs) => [
- q(6342),
+ q(6389),
q(0),
],
q(tct) => [
- q(6343),
+ q(6390),
q(0),
],
q(tcu) => [
- q(6344),
+ q(6391),
q(0),
],
q(tcw) => [
- q(6345),
+ q(6392),
q(0),
],
q(tcx) => [
- q(6346),
+ q(6393),
q(0),
],
q(tcy) => [
- q(6347),
+ q(6394),
q(0),
],
q(tcz) => [
- q(6348),
+ q(6395),
q(0),
],
q(tda) => [
- q(6349),
+ q(6396),
q(0),
],
q(tdb) => [
- q(6350),
+ q(6397),
q(0),
],
q(tdc) => [
- q(6351),
+ q(6398),
q(0),
],
q(tdd) => [
- q(6352),
+ q(6399),
q(0),
],
q(tde) => [
- q(6353),
+ q(6400),
q(0),
],
q(tdf) => [
- q(6354),
+ q(6401),
q(0),
],
q(tdg) => [
- q(6355),
+ q(6402),
q(0),
],
q(tdh) => [
- q(6356),
+ q(6403),
q(0),
],
q(tdi) => [
- q(6357),
+ q(6404),
q(0),
],
q(tdj) => [
- q(6358),
+ q(6405),
q(0),
],
q(tdk) => [
- q(6359),
+ q(6406),
q(0),
],
q(tdl) => [
- q(6360),
+ q(6407),
q(0),
],
q(tdn) => [
- q(6361),
+ q(6408),
q(0),
],
q(tdo) => [
- q(6362),
+ q(6409),
q(0),
],
q(tdq) => [
- q(6363),
+ q(6410),
q(0),
],
q(tdr) => [
- q(6364),
+ q(6411),
q(0),
],
q(tds) => [
- q(6365),
+ q(6412),
q(0),
],
q(tdt) => [
- q(6366),
+ q(6413),
q(0),
],
q(tdu) => [
- q(6367),
+ q(6414),
q(0),
],
q(tdv) => [
- q(6368),
+ q(6415),
q(0),
],
q(tdx) => [
- q(6369),
+ q(6416),
q(0),
],
q(tdy) => [
- q(6370),
+ q(6417),
q(0),
],
q(tea) => [
- q(6371),
+ q(6418),
q(0),
],
q(teb) => [
- q(6372),
+ q(6419),
q(0),
],
q(tec) => [
- q(6373),
+ q(6420),
q(0),
],
q(ted) => [
- q(6374),
+ q(6421),
q(0),
],
q(tee) => [
- q(6375),
+ q(6422),
q(0),
],
q(tef) => [
- q(6376),
+ q(6423),
q(0),
],
q(teg) => [
- q(6377),
+ q(6424),
q(0),
],
q(teh) => [
- q(6378),
+ q(6425),
q(0),
],
q(tei) => [
- q(6379),
+ q(6426),
q(0),
],
q(tek) => [
- q(6380),
+ q(6427),
q(0),
],
q(tel) => [
@@ -82099,19 +82860,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ten) => [
- q(6381),
+ q(6428),
q(0),
],
q(teo) => [
- q(6382),
+ q(6429),
q(0),
],
q(tep) => [
- q(6383),
+ q(6430),
q(0),
],
q(teq) => [
- q(6384),
+ q(6431),
q(0),
],
q(ter) => [
@@ -82119,7 +82880,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tes) => [
- q(6385),
+ q(6432),
q(0),
],
q(tet) => [
@@ -82127,79 +82888,83 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(teu) => [
- q(6386),
+ q(6433),
q(0),
],
q(tev) => [
- q(6387),
+ q(6434),
q(0),
],
q(tew) => [
- q(6388),
+ q(6435),
q(0),
],
q(tex) => [
- q(6389),
+ q(6436),
q(0),
],
q(tey) => [
- q(6390),
+ q(6437),
q(0),
],
q(tfi) => [
- q(6391),
+ q(6438),
q(0),
],
q(tfn) => [
- q(6392),
+ q(6439),
q(0),
],
q(tfo) => [
- q(6393),
+ q(6440),
q(0),
],
q(tfr) => [
- q(6394),
+ q(6441),
q(0),
],
q(tft) => [
- q(6395),
+ q(6442),
q(0),
],
q(tga) => [
- q(6396),
+ q(6443),
q(0),
],
q(tgb) => [
- q(6397),
+ q(6444),
q(0),
],
q(tgc) => [
- q(6398),
+ q(6445),
q(0),
],
q(tgd) => [
- q(6399),
+ q(6446),
q(0),
],
q(tge) => [
- q(6400),
+ q(6447),
q(0),
],
q(tgf) => [
- q(6401),
+ q(6448),
q(0),
],
q(tgg) => [
- q(6402),
+ q(6449),
q(0),
],
q(tgh) => [
- q(6403),
+ q(6450),
q(0),
],
q(tgi) => [
- q(6404),
+ q(6451),
+ q(0),
+ ],
+ q(tgj) => [
+ q(6452),
q(0),
],
q(tgk) => [
@@ -82211,51 +82976,55 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tgn) => [
- q(6405),
+ q(6453),
q(0),
],
q(tgo) => [
- q(6406),
+ q(6454),
q(0),
],
q(tgp) => [
- q(6407),
+ q(6455),
q(0),
],
q(tgq) => [
- q(6408),
+ q(6456),
q(0),
],
q(tgr) => [
- q(6409),
+ q(6457),
q(0),
],
q(tgs) => [
- q(6410),
+ q(6458),
q(0),
],
q(tgt) => [
- q(6411),
+ q(6459),
q(0),
],
q(tgu) => [
- q(6412),
+ q(6460),
q(0),
],
q(tgv) => [
- q(6413),
+ q(6461),
q(0),
],
q(tgw) => [
- q(6414),
+ q(6462),
q(0),
],
q(tgx) => [
- q(6415),
+ q(6463),
q(0),
],
q(tgy) => [
- q(6416),
+ q(6464),
+ q(0),
+ ],
+ q(tgz) => [
+ q(6465),
q(0),
],
q(tha) => [
@@ -82263,91 +83032,91 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(thc) => [
- q(6417),
+ q(6466),
q(0),
],
q(thd) => [
- q(6418),
+ q(6467),
q(0),
],
q(the) => [
- q(6419),
+ q(6468),
q(0),
],
q(thf) => [
- q(6420),
+ q(6469),
q(0),
],
q(thh) => [
- q(6421),
+ q(6470),
q(0),
],
q(thi) => [
- q(6422),
+ q(6471),
q(0),
],
q(thk) => [
- q(6423),
+ q(6472),
q(0),
],
q(thl) => [
- q(6424),
+ q(6473),
q(0),
],
q(thm) => [
- q(6425),
+ q(6474),
q(0),
],
q(thn) => [
- q(6426),
+ q(6475),
q(0),
],
q(thp) => [
- q(6427),
+ q(6476),
q(0),
],
q(thq) => [
- q(6428),
+ q(6477),
q(0),
],
q(thr) => [
- q(6429),
+ q(6478),
q(0),
],
q(ths) => [
- q(6430),
+ q(6479),
q(0),
],
q(tht) => [
- q(6431),
+ q(6480),
q(0),
],
q(thu) => [
- q(6432),
+ q(6481),
q(0),
],
q(thv) => [
- q(6433),
+ q(6482),
q(0),
],
q(thw) => [
- q(6434),
+ q(6483),
q(0),
],
q(thx) => [
- q(6435),
+ q(6484),
q(0),
],
q(thy) => [
- q(6436),
+ q(6485),
q(0),
],
q(thz) => [
- q(6437),
+ q(6486),
q(0),
],
q(tia) => [
- q(6438),
+ q(6487),
q(0),
],
q(tib) => [
@@ -82355,15 +83124,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tic) => [
- q(6439),
+ q(6488),
q(0),
],
q(tid) => [
- q(6440),
+ q(6489),
q(0),
],
q(tif) => [
- q(6441),
+ q(6490),
q(0),
],
q(tig) => [
@@ -82371,43 +83140,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tih) => [
- q(6442),
+ q(6491),
q(0),
],
q(tii) => [
- q(6443),
+ q(6492),
q(0),
],
q(tij) => [
- q(6444),
+ q(6493),
q(0),
],
q(tik) => [
- q(6445),
+ q(6494),
q(0),
],
q(til) => [
- q(6446),
+ q(6495),
q(0),
],
q(tim) => [
- q(6447),
+ q(6496),
q(0),
],
q(tin) => [
- q(6448),
+ q(6497),
q(0),
],
q(tio) => [
- q(6449),
+ q(6498),
q(0),
],
q(tip) => [
- q(6450),
+ q(6499),
q(0),
],
q(tiq) => [
- q(6451),
+ q(6500),
q(0),
],
q(tir) => [
@@ -82415,15 +83184,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tis) => [
- q(6452),
+ q(6501),
q(0),
],
q(tit) => [
- q(6453),
+ q(6502),
q(0),
],
q(tiu) => [
- q(6454),
+ q(6503),
q(0),
],
q(tiv) => [
@@ -82431,75 +83200,79 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tiw) => [
- q(6455),
+ q(6504),
q(0),
],
q(tix) => [
- q(6456),
+ q(6505),
q(0),
],
q(tiy) => [
- q(6457),
+ q(6506),
q(0),
],
q(tiz) => [
- q(6458),
+ q(6507),
q(0),
],
q(tja) => [
- q(6459),
+ q(6508),
q(0),
],
q(tjg) => [
- q(6460),
+ q(6509),
q(0),
],
q(tji) => [
- q(6461),
+ q(6510),
+ q(0),
+ ],
+ q(tjl) => [
+ q(6511),
q(0),
],
q(tjm) => [
- q(6462),
+ q(6512),
q(0),
],
q(tjn) => [
- q(6463),
+ q(6513),
q(0),
],
q(tjo) => [
- q(6464),
+ q(6514),
q(0),
],
q(tjs) => [
- q(6465),
+ q(6515),
q(0),
],
q(tju) => [
- q(6466),
+ q(6516),
q(0),
],
q(tka) => [
- q(6467),
+ q(6517),
q(0),
],
q(tkb) => [
- q(6468),
+ q(6518),
q(0),
],
q(tkd) => [
- q(6469),
+ q(6519),
q(0),
],
q(tke) => [
- q(6470),
+ q(6520),
q(0),
],
q(tkf) => [
- q(6471),
+ q(6521),
q(0),
],
q(tkg) => [
- q(6472),
+ q(6522),
q(0),
],
q(tkl) => [
@@ -82507,71 +83280,71 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tkm) => [
- q(6473),
+ q(6523),
q(0),
],
q(tkn) => [
- q(6474),
+ q(6524),
q(0),
],
q(tkp) => [
- q(6475),
+ q(6525),
q(0),
],
q(tkq) => [
- q(6476),
+ q(6526),
q(0),
],
q(tkr) => [
- q(6477),
+ q(6527),
q(0),
],
q(tks) => [
- q(6478),
+ q(6528),
q(0),
],
q(tkt) => [
- q(6479),
+ q(6529),
q(0),
],
q(tku) => [
- q(6480),
+ q(6530),
q(0),
],
q(tkw) => [
- q(6481),
+ q(6531),
q(0),
],
q(tkx) => [
- q(6482),
+ q(6532),
q(0),
],
q(tkz) => [
- q(6483),
+ q(6533),
q(0),
],
q(tla) => [
- q(6484),
+ q(6534),
q(0),
],
q(tlb) => [
- q(6485),
+ q(6535),
q(0),
],
q(tlc) => [
- q(6486),
+ q(6536),
q(0),
],
q(tld) => [
- q(6487),
+ q(6537),
q(0),
],
q(tlf) => [
- q(6488),
+ q(6538),
q(0),
],
q(tlg) => [
- q(6489),
+ q(6539),
q(0),
],
q(tlh) => [
@@ -82583,95 +83356,91 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tlj) => [
- q(6490),
+ q(6540),
q(0),
],
q(tlk) => [
- q(6491),
+ q(6541),
q(0),
],
q(tll) => [
- q(6492),
+ q(6542),
q(0),
],
q(tlm) => [
- q(6493),
+ q(6543),
q(0),
],
q(tln) => [
- q(6494),
+ q(6544),
q(0),
],
q(tlo) => [
- q(6495),
+ q(6545),
q(0),
],
q(tlp) => [
- q(6496),
+ q(6546),
q(0),
],
q(tlq) => [
- q(6497),
+ q(6547),
q(0),
],
q(tlr) => [
- q(6498),
+ q(6548),
q(0),
],
q(tls) => [
- q(6499),
+ q(6549),
q(0),
],
q(tlt) => [
- q(6500),
+ q(6550),
q(0),
],
q(tlu) => [
- q(6501),
+ q(6551),
q(0),
],
q(tlv) => [
- q(6502),
- q(0),
- ],
- q(tlw) => [
- q(6503),
+ q(6552),
q(0),
],
q(tlx) => [
- q(6504),
+ q(6553),
q(0),
],
q(tly) => [
- q(6505),
+ q(6554),
q(0),
],
q(tma) => [
- q(6506),
+ q(6555),
q(0),
],
q(tmb) => [
- q(6507),
+ q(6556),
q(0),
],
q(tmc) => [
- q(6508),
+ q(6557),
q(0),
],
q(tmd) => [
- q(6509),
+ q(6558),
q(0),
],
q(tme) => [
- q(6510),
+ q(6559),
q(0),
],
q(tmf) => [
- q(6511),
+ q(6560),
q(0),
],
q(tmg) => [
- q(6512),
+ q(6561),
q(0),
],
q(tmh) => [
@@ -82679,187 +83448,187 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tmi) => [
- q(6513),
+ q(6562),
q(0),
],
q(tmj) => [
- q(6514),
+ q(6563),
q(0),
],
q(tmk) => [
- q(6515),
+ q(6564),
q(0),
],
q(tml) => [
- q(6516),
+ q(6565),
q(0),
],
q(tmm) => [
- q(6517),
+ q(6566),
q(0),
],
q(tmn) => [
- q(6518),
+ q(6567),
q(0),
],
q(tmo) => [
- q(6519),
+ q(6568),
q(0),
],
q(tmp) => [
- q(6520),
+ q(6569),
q(0),
],
q(tmq) => [
- q(6521),
+ q(6570),
q(0),
],
q(tmr) => [
- q(6522),
+ q(6571),
q(0),
],
q(tms) => [
- q(6523),
+ q(6572),
q(0),
],
q(tmt) => [
- q(6524),
+ q(6573),
q(0),
],
q(tmu) => [
- q(6525),
+ q(6574),
q(0),
],
q(tmv) => [
- q(6526),
+ q(6575),
q(0),
],
q(tmw) => [
- q(6527),
+ q(6576),
q(0),
],
q(tmy) => [
- q(6528),
+ q(6577),
q(0),
],
q(tmz) => [
- q(6529),
+ q(6578),
q(0),
],
q(tna) => [
- q(6530),
+ q(6579),
q(0),
],
q(tnb) => [
- q(6531),
+ q(6580),
q(0),
],
q(tnc) => [
- q(6532),
+ q(6581),
q(0),
],
q(tnd) => [
- q(6533),
+ q(6582),
q(0),
],
q(tne) => [
- q(6534),
+ q(6583),
q(0),
],
q(tng) => [
- q(6535),
+ q(6584),
q(0),
],
q(tnh) => [
- q(6536),
+ q(6585),
q(0),
],
q(tni) => [
- q(6537),
+ q(6586),
q(0),
],
q(tnk) => [
- q(6538),
+ q(6587),
q(0),
],
q(tnl) => [
- q(6539),
+ q(6588),
q(0),
],
q(tnm) => [
- q(6540),
+ q(6589),
q(0),
],
q(tnn) => [
- q(6541),
+ q(6590),
q(0),
],
q(tno) => [
- q(6542),
+ q(6591),
q(0),
],
q(tnp) => [
- q(6543),
+ q(6592),
q(0),
],
q(tnq) => [
- q(6544),
+ q(6593),
q(0),
],
q(tnr) => [
- q(6545),
+ q(6594),
q(0),
],
q(tns) => [
- q(6546),
+ q(6595),
q(0),
],
q(tnt) => [
- q(6547),
+ q(6596),
q(0),
],
q(tnu) => [
- q(6548),
+ q(6597),
q(0),
],
q(tnv) => [
- q(6549),
+ q(6598),
q(0),
],
q(tnw) => [
- q(6550),
+ q(6599),
q(0),
],
q(tnx) => [
- q(6551),
+ q(6600),
q(0),
],
q(tny) => [
- q(6552),
+ q(6601),
q(0),
],
q(tnz) => [
- q(6553),
+ q(6602),
q(0),
],
q(tob) => [
- q(6554),
+ q(6603),
q(0),
],
q(toc) => [
- q(6555),
+ q(6604),
q(0),
],
q(tod) => [
- q(6556),
+ q(6605),
q(0),
],
q(toe) => [
- q(6557),
+ q(6606),
q(0),
],
q(tof) => [
- q(6558),
+ q(6607),
q(0),
],
q(tog) => [
@@ -82867,23 +83636,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(toh) => [
- q(6559),
+ q(6608),
q(0),
],
q(toi) => [
- q(6560),
+ q(6609),
q(0),
],
q(toj) => [
- q(6561),
+ q(6610),
q(0),
],
q(tol) => [
- q(6562),
+ q(6611),
q(0),
],
q(tom) => [
- q(6563),
+ q(6612),
q(0),
],
q(ton) => [
@@ -82891,67 +83660,67 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(too) => [
- q(6564),
+ q(6613),
q(0),
],
q(top) => [
- q(6565),
+ q(6614),
q(0),
],
q(toq) => [
- q(6566),
+ q(6615),
q(0),
],
q(tor) => [
- q(6567),
+ q(6616),
q(0),
],
q(tos) => [
- q(6568),
+ q(6617),
q(0),
],
q(tou) => [
- q(6569),
+ q(6618),
q(0),
],
q(tov) => [
- q(6570),
+ q(6619),
q(0),
],
q(tow) => [
- q(6571),
+ q(6620),
q(0),
],
q(tox) => [
- q(6572),
+ q(6621),
q(0),
],
q(toy) => [
- q(6573),
+ q(6622),
q(0),
],
q(toz) => [
- q(6574),
+ q(6623),
q(0),
],
q(tpa) => [
- q(6575),
+ q(6624),
q(0),
],
q(tpc) => [
- q(6576),
+ q(6625),
q(0),
],
q(tpe) => [
- q(6577),
+ q(6626),
q(0),
],
q(tpf) => [
- q(6578),
+ q(6627),
q(0),
],
q(tpg) => [
- q(6579),
+ q(6628),
q(0),
],
q(tpi) => [
@@ -82959,247 +83728,247 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tpj) => [
- q(6580),
+ q(6629),
q(0),
],
q(tpk) => [
- q(6581),
+ q(6630),
q(0),
],
q(tpl) => [
- q(6582),
+ q(6631),
q(0),
],
q(tpm) => [
- q(6583),
+ q(6632),
q(0),
],
q(tpn) => [
- q(6584),
+ q(6633),
q(0),
],
q(tpo) => [
- q(6585),
+ q(6634),
q(0),
],
q(tpp) => [
- q(6586),
+ q(6635),
q(0),
],
q(tpq) => [
- q(6587),
+ q(6636),
q(0),
],
q(tpr) => [
- q(6588),
+ q(6637),
q(0),
],
q(tpt) => [
- q(6589),
+ q(6638),
q(0),
],
q(tpu) => [
- q(6590),
+ q(6639),
q(0),
],
q(tpv) => [
- q(6591),
+ q(6640),
q(0),
],
q(tpw) => [
- q(6592),
+ q(6641),
q(0),
],
q(tpx) => [
- q(6593),
+ q(6642),
q(0),
],
q(tpy) => [
- q(6594),
+ q(6643),
q(0),
],
q(tpz) => [
- q(6595),
+ q(6644),
q(0),
],
q(tqb) => [
- q(6596),
+ q(6645),
q(0),
],
q(tql) => [
- q(6597),
+ q(6646),
q(0),
],
q(tqm) => [
- q(6598),
+ q(6647),
q(0),
],
q(tqn) => [
- q(6599),
+ q(6648),
q(0),
],
q(tqo) => [
- q(6600),
+ q(6649),
q(0),
],
q(tqp) => [
- q(6601),
+ q(6650),
q(0),
],
q(tqq) => [
- q(6602),
+ q(6651),
q(0),
],
q(tqr) => [
- q(6603),
+ q(6652),
q(0),
],
q(tqt) => [
- q(6604),
+ q(6653),
q(0),
],
q(tqu) => [
- q(6605),
+ q(6654),
q(0),
],
q(tqw) => [
- q(6606),
+ q(6655),
q(0),
],
q(tra) => [
- q(6607),
+ q(6656),
q(0),
],
q(trb) => [
- q(6608),
+ q(6657),
q(0),
],
q(trc) => [
- q(6609),
+ q(6658),
q(0),
],
q(trd) => [
- q(6610),
+ q(6659),
q(0),
],
q(tre) => [
- q(6611),
+ q(6660),
q(0),
],
q(trf) => [
- q(6612),
+ q(6661),
q(0),
],
q(trg) => [
- q(6613),
+ q(6662),
q(0),
],
q(trh) => [
- q(6614),
+ q(6663),
q(0),
],
q(tri) => [
- q(6615),
+ q(6664),
q(0),
],
q(trj) => [
- q(6616),
+ q(6665),
q(0),
],
q(trk) => [
- q(0527),
+ q(0528),
q(0),
],
q(trl) => [
- q(6617),
+ q(6666),
q(0),
],
q(trm) => [
- q(6618),
+ q(6667),
q(0),
],
q(trn) => [
- q(6619),
+ q(6668),
q(0),
],
q(tro) => [
- q(6620),
+ q(6669),
q(0),
],
q(trp) => [
- q(6621),
+ q(6670),
q(0),
],
q(trq) => [
- q(6622),
+ q(6671),
q(0),
],
q(trr) => [
- q(6623),
+ q(6672),
q(0),
],
q(trs) => [
- q(6624),
+ q(6673),
q(0),
],
q(trt) => [
- q(6625),
+ q(6674),
q(0),
],
q(tru) => [
- q(6626),
+ q(6675),
q(0),
],
q(trv) => [
- q(6627),
+ q(6676),
q(0),
],
q(trw) => [
- q(6628),
+ q(6677),
q(0),
],
q(trx) => [
- q(6629),
+ q(6678),
q(0),
],
q(try) => [
- q(6630),
+ q(6679),
q(0),
],
q(trz) => [
- q(6631),
+ q(6680),
q(0),
],
q(tsa) => [
- q(6632),
+ q(6681),
q(0),
],
q(tsb) => [
- q(6633),
+ q(6682),
q(0),
],
q(tsc) => [
- q(6634),
+ q(6683),
q(0),
],
q(tsd) => [
- q(6635),
+ q(6684),
q(0),
],
q(tse) => [
- q(6636),
+ q(6685),
q(0),
],
q(tsf) => [
- q(6637),
+ q(6686),
q(0),
],
q(tsg) => [
- q(6638),
+ q(6687),
q(0),
],
q(tsh) => [
- q(6639),
+ q(6688),
q(0),
],
q(tsi) => [
@@ -83207,19 +83976,19 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tsj) => [
- q(6640),
+ q(6689),
q(0),
],
q(tsk) => [
- q(6641),
+ q(6690),
q(0),
],
q(tsl) => [
- q(6642),
+ q(6691),
q(0),
],
q(tsm) => [
- q(6643),
+ q(6692),
q(0),
],
q(tsn) => [
@@ -83231,187 +84000,187 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tsp) => [
- q(6644),
+ q(6693),
q(0),
],
q(tsq) => [
- q(6645),
+ q(6694),
q(0),
],
q(tsr) => [
- q(6646),
+ q(6695),
q(0),
],
q(tss) => [
- q(6647),
+ q(6696),
q(0),
],
q(tst) => [
- q(6648),
+ q(6697),
q(0),
],
q(tsu) => [
- q(6649),
+ q(6698),
q(0),
],
q(tsv) => [
- q(6650),
+ q(6699),
q(0),
],
q(tsw) => [
- q(6651),
+ q(6700),
q(0),
],
q(tsx) => [
- q(6652),
+ q(6701),
q(0),
],
q(tsy) => [
- q(6653),
+ q(6702),
q(0),
],
q(tsz) => [
- q(6654),
+ q(6703),
q(0),
],
q(tta) => [
- q(6655),
+ q(6704),
q(0),
],
q(ttb) => [
- q(6656),
+ q(6705),
q(0),
],
q(ttc) => [
- q(6657),
+ q(6706),
q(0),
],
q(ttd) => [
- q(6658),
+ q(6707),
q(0),
],
q(tte) => [
- q(6659),
+ q(6708),
q(0),
],
q(ttf) => [
- q(6660),
+ q(6709),
q(0),
],
q(ttg) => [
- q(6661),
+ q(6710),
q(0),
],
q(tth) => [
- q(6662),
+ q(6711),
q(0),
],
q(tti) => [
- q(6663),
+ q(6712),
q(0),
],
q(ttj) => [
- q(6664),
+ q(6713),
q(0),
],
q(ttk) => [
- q(6665),
+ q(6714),
q(0),
],
q(ttl) => [
- q(6666),
+ q(6715),
q(0),
],
q(ttm) => [
- q(6667),
+ q(6716),
q(0),
],
q(ttn) => [
- q(6668),
+ q(6717),
q(0),
],
q(tto) => [
- q(6669),
+ q(6718),
q(0),
],
q(ttp) => [
- q(6670),
+ q(6719),
q(0),
],
q(ttq) => [
- q(6671),
+ q(6720),
q(0),
],
q(ttr) => [
- q(6672),
+ q(6721),
q(0),
],
q(tts) => [
- q(6673),
+ q(6722),
q(0),
],
q(ttt) => [
- q(6674),
+ q(6723),
q(0),
],
q(ttu) => [
- q(6675),
+ q(6724),
q(0),
],
q(ttv) => [
- q(6676),
+ q(6725),
q(0),
],
q(ttw) => [
- q(6677),
+ q(6726),
q(0),
],
q(tty) => [
- q(6678),
+ q(6727),
q(0),
],
q(ttz) => [
- q(6679),
+ q(6728),
q(0),
],
q(tua) => [
- q(6680),
+ q(6729),
q(0),
],
q(tub) => [
- q(6681),
+ q(6730),
q(0),
],
q(tuc) => [
- q(6682),
+ q(6731),
q(0),
],
q(tud) => [
- q(6683),
+ q(6732),
q(0),
],
q(tue) => [
- q(6684),
+ q(6733),
q(0),
],
q(tuf) => [
- q(6685),
+ q(6734),
q(0),
],
q(tug) => [
- q(6686),
+ q(6735),
q(0),
],
q(tuh) => [
- q(6687),
+ q(6736),
q(0),
],
q(tui) => [
- q(6688),
+ q(6737),
q(0),
],
q(tuj) => [
- q(6689),
+ q(6738),
q(0),
],
q(tuk) => [
@@ -83419,7 +84188,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tul) => [
- q(6690),
+ q(6739),
q(0),
],
q(tum) => [
@@ -83427,11 +84196,11 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tun) => [
- q(6691),
+ q(6740),
q(0),
],
q(tuo) => [
- q(6692),
+ q(6741),
q(0),
],
q(tup) => [
@@ -83439,7 +84208,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tuq) => [
- q(6693),
+ q(6742),
q(0),
],
q(tur) => [
@@ -83447,7 +84216,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tus) => [
- q(6694),
+ q(6743),
q(0),
],
q(tut) => [
@@ -83455,43 +84224,43 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tuu) => [
- q(6695),
+ q(6744),
q(0),
],
q(tuv) => [
- q(6696),
+ q(6745),
q(0),
],
q(tuw) => [
- q(0528),
+ q(0529),
q(0),
],
q(tux) => [
- q(6697),
+ q(6746),
q(0),
],
q(tuy) => [
- q(6698),
+ q(6747),
q(0),
],
q(tuz) => [
- q(6699),
+ q(6748),
q(0),
],
q(tva) => [
- q(6700),
+ q(6749),
q(0),
],
q(tvd) => [
- q(6701),
+ q(6750),
q(0),
],
q(tve) => [
- q(6702),
+ q(6751),
q(0),
],
q(tvk) => [
- q(6703),
+ q(6752),
q(0),
],
q(tvl) => [
@@ -83499,63 +84268,67 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tvm) => [
- q(6704),
+ q(6753),
q(0),
],
q(tvn) => [
- q(6705),
+ q(6754),
q(0),
],
q(tvo) => [
- q(6706),
+ q(6755),
q(0),
],
q(tvs) => [
- q(6707),
+ q(6756),
q(0),
],
q(tvt) => [
- q(6708),
+ q(6757),
+ q(0),
+ ],
+ q(tvu) => [
+ q(6758),
q(0),
],
q(tvw) => [
- q(6709),
+ q(6759),
q(0),
],
q(tvy) => [
- q(6710),
+ q(6760),
q(0),
],
q(twa) => [
- q(6711),
+ q(6761),
q(0),
],
q(twb) => [
- q(6712),
+ q(6762),
q(0),
],
q(twc) => [
- q(6713),
+ q(6763),
q(0),
],
q(twd) => [
- q(6714),
+ q(6764),
q(0),
],
q(twe) => [
- q(6715),
+ q(6765),
q(0),
],
q(twf) => [
- q(6716),
+ q(6766),
q(0),
],
q(twg) => [
- q(6717),
+ q(6767),
q(0),
],
q(twh) => [
- q(6718),
+ q(6768),
q(0),
],
q(twi) => [
@@ -83563,167 +84336,167 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(twl) => [
- q(6719),
+ q(6769),
q(0),
],
q(twm) => [
- q(6720),
+ q(6770),
q(0),
],
q(twn) => [
- q(6721),
+ q(6771),
q(0),
],
q(two) => [
- q(6722),
+ q(6772),
q(0),
],
q(twp) => [
- q(6723),
+ q(6773),
q(0),
],
q(twq) => [
- q(6724),
+ q(6774),
q(0),
],
q(twr) => [
- q(6725),
+ q(6775),
q(0),
],
q(twt) => [
- q(6726),
+ q(6776),
q(0),
],
q(twu) => [
- q(6727),
+ q(6777),
q(0),
],
q(tww) => [
- q(6728),
+ q(6778),
q(0),
],
q(twx) => [
- q(6729),
+ q(6779),
q(0),
],
q(twy) => [
- q(6730),
+ q(6780),
q(0),
],
q(txa) => [
- q(6731),
+ q(6781),
q(0),
],
q(txb) => [
- q(6732),
+ q(6782),
q(0),
],
q(txc) => [
- q(6733),
+ q(6783),
q(0),
],
q(txe) => [
- q(6734),
+ q(6784),
q(0),
],
q(txg) => [
- q(6735),
+ q(6785),
q(0),
],
q(txh) => [
- q(6736),
+ q(6786),
q(0),
],
q(txi) => [
- q(6737),
+ q(6787),
q(0),
],
q(txm) => [
- q(6738),
+ q(6788),
q(0),
],
q(txn) => [
- q(6739),
+ q(6789),
q(0),
],
q(txo) => [
- q(6740),
+ q(6790),
q(0),
],
q(txq) => [
- q(6741),
+ q(6791),
q(0),
],
q(txr) => [
- q(6742),
+ q(6792),
q(0),
],
q(txs) => [
- q(6743),
+ q(6793),
q(0),
],
q(txt) => [
- q(6744),
+ q(6794),
q(0),
],
q(txu) => [
- q(6745),
+ q(6795),
q(0),
],
q(txx) => [
- q(6746),
+ q(6796),
q(0),
],
q(txy) => [
- q(6747),
+ q(6797),
q(0),
],
q(tya) => [
- q(6748),
+ q(6798),
q(0),
],
q(tye) => [
- q(6749),
+ q(6799),
q(0),
],
q(tyh) => [
- q(6750),
+ q(6800),
q(0),
],
q(tyi) => [
- q(6751),
+ q(6801),
q(0),
],
q(tyj) => [
- q(6752),
+ q(6802),
q(0),
],
q(tyl) => [
- q(6753),
+ q(6803),
q(0),
],
q(tyn) => [
- q(6754),
+ q(6804),
q(0),
],
q(typ) => [
- q(6755),
+ q(6805),
q(0),
],
q(tyr) => [
- q(6756),
+ q(6806),
q(0),
],
q(tys) => [
- q(6757),
+ q(6807),
q(0),
],
q(tyt) => [
- q(6758),
+ q(6808),
q(0),
],
q(tyu) => [
- q(6759),
+ q(6809),
q(0),
],
q(tyv) => [
@@ -83731,99 +84504,99 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(tyx) => [
- q(6760),
+ q(6810),
q(0),
],
q(tyz) => [
- q(6761),
+ q(6811),
q(0),
],
q(tza) => [
- q(6762),
+ q(6812),
q(0),
],
q(tzh) => [
- q(6763),
+ q(6813),
q(0),
],
q(tzj) => [
- q(6764),
+ q(6814),
q(0),
],
q(tzm) => [
- q(6765),
+ q(6815),
q(0),
],
q(tzn) => [
- q(6766),
+ q(6816),
q(0),
],
q(tzo) => [
- q(6767),
+ q(6817),
q(0),
],
q(tzx) => [
- q(6768),
+ q(6818),
q(0),
],
q(uam) => [
- q(6769),
+ q(6819),
q(0),
],
q(uan) => [
- q(6770),
+ q(6820),
q(0),
],
q(uar) => [
- q(6771),
+ q(6821),
q(0),
],
q(uba) => [
- q(6772),
+ q(6822),
q(0),
],
q(ubi) => [
- q(6773),
+ q(6823),
q(0),
],
q(ubl) => [
- q(6774),
+ q(6824),
q(0),
],
q(ubr) => [
- q(6775),
+ q(6825),
q(0),
],
q(ubu) => [
- q(6776),
+ q(6826),
q(0),
],
q(uby) => [
- q(6777),
+ q(6827),
q(0),
],
q(uda) => [
- q(6778),
+ q(6828),
q(0),
],
q(ude) => [
- q(6779),
+ q(6829),
q(0),
],
q(udg) => [
- q(6780),
+ q(6830),
q(0),
],
q(udi) => [
- q(6781),
+ q(6831),
q(0),
],
q(udj) => [
- q(6782),
+ q(6832),
q(0),
],
q(udl) => [
- q(6783),
+ q(6833),
q(0),
],
q(udm) => [
@@ -83831,15 +84604,15 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(udu) => [
- q(6784),
+ q(6834),
q(0),
],
q(ues) => [
- q(6785),
+ q(6835),
q(0),
],
q(ufi) => [
- q(6786),
+ q(6836),
q(0),
],
q(uga) => [
@@ -83847,31 +84620,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ugb) => [
- q(6787),
+ q(6837),
q(0),
],
q(uge) => [
- q(6788),
+ q(6838),
q(0),
],
q(ugn) => [
- q(6789),
+ q(6839),
q(0),
],
q(ugo) => [
- q(6790),
+ q(6840),
q(0),
],
q(ugy) => [
- q(6791),
+ q(6841),
q(0),
],
q(uha) => [
- q(6792),
+ q(6842),
q(0),
],
q(uhn) => [
- q(6793),
+ q(6843),
q(0),
],
q(uig) => [
@@ -83879,39 +84652,39 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(uis) => [
- q(6794),
+ q(6844),
q(0),
],
q(uiv) => [
- q(6795),
+ q(6845),
q(0),
],
q(uji) => [
- q(6796),
+ q(6846),
q(0),
],
q(uka) => [
- q(6797),
+ q(6847),
q(0),
],
q(ukg) => [
- q(6798),
+ q(6848),
q(0),
],
q(ukh) => [
- q(6799),
+ q(6849),
q(0),
],
q(ukl) => [
- q(6800),
+ q(6850),
q(0),
],
q(ukp) => [
- q(6801),
+ q(6851),
q(0),
],
q(ukq) => [
- q(6802),
+ q(6852),
q(0),
],
q(ukr) => [
@@ -83919,63 +84692,67 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(uks) => [
- q(6803),
+ q(6853),
q(0),
],
q(uku) => [
- q(6804),
+ q(6854),
q(0),
],
q(ukw) => [
- q(6805),
+ q(6855),
+ q(0),
+ ],
+ q(uky) => [
+ q(6856),
q(0),
],
q(ula) => [
- q(6806),
+ q(6857),
q(0),
],
q(ulb) => [
- q(6807),
+ q(6858),
q(0),
],
q(ulc) => [
- q(6808),
+ q(6859),
q(0),
],
q(ulf) => [
- q(6809),
+ q(6860),
q(0),
],
q(uli) => [
- q(6810),
+ q(6861),
q(0),
],
q(ulk) => [
- q(6811),
+ q(6862),
q(0),
],
q(ull) => [
- q(6812),
+ q(6863),
q(0),
],
q(ulm) => [
- q(6813),
+ q(6864),
q(0),
],
q(uln) => [
- q(6814),
+ q(6865),
q(0),
],
q(ulu) => [
- q(6815),
+ q(6866),
q(0),
],
q(ulw) => [
- q(6816),
+ q(6867),
q(0),
],
q(uma) => [
- q(6817),
+ q(6868),
q(0),
],
q(umb) => [
@@ -83983,51 +84760,51 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(umc) => [
- q(6818),
+ q(6869),
q(0),
],
q(umd) => [
- q(6819),
+ q(6870),
q(0),
],
q(umg) => [
- q(6820),
+ q(6871),
q(0),
],
q(umi) => [
- q(6821),
+ q(6872),
q(0),
],
q(umm) => [
- q(6822),
+ q(6873),
q(0),
],
q(umn) => [
- q(6823),
+ q(6874),
q(0),
],
q(umo) => [
- q(6824),
+ q(6875),
q(0),
],
q(ump) => [
- q(6825),
+ q(6876),
q(0),
],
q(umr) => [
- q(6826),
+ q(6877),
q(0),
],
q(ums) => [
- q(6827),
+ q(6878),
q(0),
],
q(umu) => [
- q(6828),
+ q(6879),
q(0),
],
q(una) => [
- q(6829),
+ q(6880),
q(0),
],
q(und) => [
@@ -84035,59 +84812,55 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(une) => [
- q(6830),
+ q(6881),
q(0),
],
q(ung) => [
- q(6831),
+ q(6882),
q(0),
],
q(unk) => [
- q(6832),
+ q(6883),
q(0),
],
q(unm) => [
- q(6833),
- q(0),
- ],
- q(unp) => [
- q(6834),
+ q(6884),
q(0),
],
q(unr) => [
- q(6835),
+ q(6885),
q(0),
],
q(unx) => [
- q(6836),
+ q(6886),
q(0),
],
q(unz) => [
- q(6837),
+ q(6887),
q(0),
],
q(uok) => [
- q(6838),
+ q(6888),
q(0),
],
q(upi) => [
- q(6839),
+ q(6889),
q(0),
],
q(upv) => [
- q(6840),
+ q(6890),
q(0),
],
q(ura) => [
- q(6841),
+ q(6891),
q(0),
],
q(urb) => [
- q(6842),
+ q(6892),
q(0),
],
q(urc) => [
- q(6843),
+ q(6893),
q(0),
],
q(urd) => [
@@ -84095,163 +84868,163 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ure) => [
- q(6844),
+ q(6894),
q(0),
],
q(urf) => [
- q(6845),
+ q(6895),
q(0),
],
q(urg) => [
- q(6846),
+ q(6896),
q(0),
],
q(urh) => [
- q(6847),
+ q(6897),
q(0),
],
q(uri) => [
- q(6848),
+ q(6898),
q(0),
],
q(urj) => [
- q(0529),
+ q(0530),
q(0),
],
q(urk) => [
- q(6849),
+ q(6899),
q(0),
],
q(url) => [
- q(6850),
+ q(6900),
q(0),
],
q(urm) => [
- q(6851),
+ q(6901),
q(0),
],
q(urn) => [
- q(6852),
+ q(6902),
q(0),
],
q(uro) => [
- q(6853),
+ q(6903),
q(0),
],
q(urp) => [
- q(6854),
+ q(6904),
q(0),
],
q(urr) => [
- q(6855),
+ q(6905),
q(0),
],
q(urt) => [
- q(6856),
+ q(6906),
q(0),
],
q(uru) => [
- q(6857),
+ q(6907),
q(0),
],
q(urv) => [
- q(6858),
+ q(6908),
q(0),
],
q(urw) => [
- q(6859),
+ q(6909),
q(0),
],
q(urx) => [
- q(6860),
+ q(6910),
q(0),
],
q(ury) => [
- q(6861),
+ q(6911),
q(0),
],
q(urz) => [
- q(6862),
+ q(6912),
q(0),
],
q(usa) => [
- q(6863),
+ q(6913),
q(0),
],
q(ush) => [
- q(6864),
+ q(6914),
q(0),
],
q(usi) => [
- q(6865),
+ q(6915),
q(0),
],
q(usk) => [
- q(6866),
+ q(6916),
q(0),
],
q(usp) => [
- q(6867),
+ q(6917),
q(0),
],
q(usu) => [
- q(6868),
+ q(6918),
q(0),
],
q(uta) => [
- q(6869),
+ q(6919),
q(0),
],
q(ute) => [
- q(6870),
+ q(6920),
q(0),
],
q(utp) => [
- q(6871),
+ q(6921),
q(0),
],
q(utr) => [
- q(6872),
+ q(6922),
q(0),
],
q(utu) => [
- q(6873),
+ q(6923),
q(0),
],
q(uum) => [
- q(6874),
+ q(6924),
q(0),
],
q(uun) => [
- q(6875),
+ q(6925),
q(0),
],
q(uur) => [
- q(6876),
+ q(6926),
q(0),
],
q(uuu) => [
- q(6877),
+ q(6927),
q(0),
],
q(uve) => [
- q(6878),
+ q(6928),
q(0),
],
q(uvh) => [
- q(6879),
+ q(6929),
q(0),
],
q(uvl) => [
- q(6880),
+ q(6930),
q(0),
],
q(uwa) => [
- q(6881),
+ q(6931),
q(0),
],
q(uya) => [
- q(6882),
+ q(6932),
q(0),
],
q(uzb) => [
@@ -84259,31 +85032,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(uzn) => [
- q(6883),
+ q(6933),
q(0),
],
q(uzs) => [
- q(6884),
+ q(6934),
q(0),
],
q(vaa) => [
- q(6885),
+ q(6935),
q(0),
],
q(vae) => [
- q(6886),
+ q(6936),
q(0),
],
q(vaf) => [
- q(6887),
+ q(6937),
q(0),
],
q(vag) => [
- q(6888),
+ q(6938),
q(0),
],
q(vah) => [
- q(6889),
+ q(6939),
q(0),
],
q(vai) => [
@@ -84291,71 +85064,71 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(vaj) => [
- q(6890),
+ q(6940),
q(0),
],
q(val) => [
- q(6891),
+ q(6941),
q(0),
],
q(vam) => [
- q(6892),
+ q(6942),
q(0),
],
q(van) => [
- q(6893),
+ q(6943),
q(0),
],
q(vao) => [
- q(6894),
+ q(6944),
q(0),
],
q(vap) => [
- q(6895),
+ q(6945),
q(0),
],
q(var) => [
- q(6896),
+ q(6946),
q(0),
],
q(vas) => [
- q(6897),
+ q(6947),
q(0),
],
q(vau) => [
- q(6898),
+ q(6948),
q(0),
],
q(vav) => [
- q(6899),
+ q(6949),
q(0),
],
q(vay) => [
- q(6900),
+ q(6950),
q(0),
],
q(vbb) => [
- q(6901),
+ q(6951),
q(0),
],
q(vbk) => [
- q(6902),
+ q(6952),
q(0),
],
q(vec) => [
- q(6903),
+ q(6953),
q(0),
],
q(ved) => [
- q(6904),
+ q(6954),
q(0),
],
q(vel) => [
- q(6905),
+ q(6955),
q(0),
],
q(vem) => [
- q(6906),
+ q(6956),
q(0),
],
q(ven) => [
@@ -84363,31 +85136,31 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(veo) => [
- q(6907),
+ q(6957),
q(0),
],
q(vep) => [
- q(6908),
+ q(6958),
q(0),
],
q(ver) => [
- q(6909),
+ q(6959),
q(0),
],
q(vgr) => [
- q(6910),
+ q(6960),
q(0),
],
q(vgt) => [
- q(6911),
+ q(6961),
q(0),
],
q(vic) => [
- q(6912),
+ q(6962),
q(0),
],
q(vid) => [
- q(6913),
+ q(6963),
q(0),
],
q(vie) => [
@@ -84395,183 +85168,183 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(vif) => [
- q(6914),
+ q(6964),
q(0),
],
q(vig) => [
- q(6915),
+ q(6965),
q(0),
],
q(vil) => [
- q(6916),
+ q(6966),
q(0),
],
q(vin) => [
- q(6917),
+ q(6967),
q(0),
],
q(vis) => [
- q(6918),
+ q(6968),
q(0),
],
q(vit) => [
- q(6919),
+ q(6969),
q(0),
],
q(viv) => [
- q(6920),
+ q(6970),
q(0),
],
q(vka) => [
- q(6921),
+ q(6971),
q(0),
],
q(vki) => [
- q(6922),
+ q(6972),
q(0),
],
q(vkj) => [
- q(6923),
+ q(6973),
q(0),
],
q(vkk) => [
- q(6924),
+ q(6974),
q(0),
],
q(vkl) => [
- q(6925),
+ q(6975),
q(0),
],
q(vkm) => [
- q(6926),
+ q(6976),
q(0),
],
q(vko) => [
- q(6927),
+ q(6977),
q(0),
],
q(vkp) => [
- q(6928),
+ q(6978),
q(0),
],
q(vkt) => [
- q(6929),
+ q(6979),
q(0),
],
q(vku) => [
- q(6930),
+ q(6980),
q(0),
],
q(vlp) => [
- q(6931),
+ q(6981),
q(0),
],
q(vls) => [
- q(6932),
+ q(6982),
q(0),
],
q(vma) => [
- q(6933),
+ q(6983),
q(0),
],
q(vmb) => [
- q(6934),
+ q(6984),
q(0),
],
q(vmc) => [
- q(6935),
+ q(6985),
q(0),
],
q(vmd) => [
- q(6936),
+ q(6986),
q(0),
],
q(vme) => [
- q(6937),
+ q(6987),
q(0),
],
q(vmf) => [
- q(6938),
+ q(6988),
q(0),
],
q(vmg) => [
- q(6939),
+ q(6989),
q(0),
],
q(vmh) => [
- q(6940),
+ q(6990),
q(0),
],
q(vmi) => [
- q(6941),
+ q(6991),
q(0),
],
q(vmj) => [
- q(6942),
+ q(6992),
q(0),
],
q(vmk) => [
- q(6943),
+ q(6993),
q(0),
],
q(vml) => [
- q(6944),
+ q(6994),
q(0),
],
q(vmm) => [
- q(6945),
+ q(6995),
q(0),
],
q(vmp) => [
- q(6946),
+ q(6996),
q(0),
],
q(vmq) => [
- q(6947),
+ q(6997),
q(0),
],
q(vmr) => [
- q(6948),
+ q(6998),
q(0),
],
q(vms) => [
- q(6949),
+ q(6999),
q(0),
],
q(vmu) => [
- q(6950),
+ q(7000),
q(0),
],
q(vmv) => [
- q(6951),
+ q(7001),
q(0),
],
q(vmw) => [
- q(6952),
+ q(7002),
q(0),
],
q(vmx) => [
- q(6953),
+ q(7003),
q(0),
],
q(vmy) => [
- q(6954),
+ q(7004),
q(0),
],
q(vmz) => [
- q(6955),
+ q(7005),
q(0),
],
q(vnk) => [
- q(6956),
+ q(7006),
q(0),
],
q(vnm) => [
- q(6957),
+ q(7007),
q(0),
],
q(vnp) => [
- q(6958),
+ q(7008),
q(0),
],
q(vol) => [
@@ -84579,7 +85352,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(vor) => [
- q(6959),
+ q(7009),
q(0),
],
q(vot) => [
@@ -84587,91 +85360,91 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(vra) => [
- q(6960),
+ q(7010),
q(0),
],
q(vro) => [
- q(6959),
+ q(7009),
q(0),
],
q(vrs) => [
- q(6961),
+ q(7011),
q(0),
],
q(vrt) => [
- q(6962),
+ q(7012),
q(0),
],
q(vsi) => [
- q(6963),
+ q(7013),
q(0),
],
q(vsl) => [
- q(6964),
+ q(7014),
q(0),
],
q(vsv) => [
- q(6965),
+ q(7015),
q(0),
],
q(vto) => [
- q(6966),
+ q(7016),
q(0),
],
q(vum) => [
- q(6967),
+ q(7017),
q(0),
],
q(vun) => [
- q(6968),
+ q(7018),
q(0),
],
q(vut) => [
- q(6969),
+ q(7019),
q(0),
],
q(vwa) => [
- q(6970),
+ q(7020),
q(0),
],
q(waa) => [
- q(6971),
+ q(7021),
q(0),
],
q(wab) => [
- q(6972),
+ q(7022),
q(0),
],
q(wac) => [
- q(6973),
+ q(7023),
q(0),
],
q(wad) => [
- q(6974),
+ q(7024),
q(0),
],
q(wae) => [
- q(6975),
+ q(7025),
q(0),
],
q(waf) => [
- q(6976),
+ q(7026),
q(0),
],
q(wag) => [
- q(6977),
+ q(7027),
q(0),
],
q(wah) => [
- q(6978),
+ q(7028),
q(0),
],
q(wai) => [
- q(6979),
+ q(7029),
q(0),
],
q(waj) => [
- q(6980),
+ q(7030),
q(0),
],
q(wak) => [
@@ -84683,23 +85456,23 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(1),
],
q(wam) => [
- q(6981),
+ q(7031),
q(0),
],
q(wan) => [
- q(6982),
+ q(7032),
q(0),
],
q(wao) => [
- q(6983),
+ q(7033),
q(0),
],
q(wap) => [
- q(6984),
+ q(7034),
q(0),
],
q(waq) => [
- q(6985),
+ q(7035),
q(0),
],
q(war) => [
@@ -84711,139 +85484,139 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(wat) => [
- q(6986),
+ q(7036),
q(0),
],
q(wau) => [
- q(6987),
+ q(7037),
q(0),
],
q(wav) => [
- q(6988),
+ q(7038),
q(0),
],
q(waw) => [
- q(6989),
+ q(7039),
q(0),
],
q(wax) => [
- q(6990),
+ q(7040),
q(0),
],
q(way) => [
- q(6991),
+ q(7041),
q(0),
],
q(waz) => [
- q(6992),
+ q(7042),
q(0),
],
q(wba) => [
- q(6993),
+ q(7043),
q(0),
],
q(wbb) => [
- q(6994),
+ q(7044),
q(0),
],
q(wbe) => [
- q(6995),
+ q(7045),
q(0),
],
q(wbf) => [
- q(6334),
+ q(6381),
q(0),
],
q(wbh) => [
- q(6996),
+ q(7046),
q(0),
],
q(wbi) => [
- q(6997),
+ q(7047),
q(0),
],
q(wbj) => [
- q(6998),
+ q(7048),
q(0),
],
q(wbk) => [
- q(6999),
+ q(7049),
q(0),
],
q(wbl) => [
- q(7000),
+ q(7050),
q(0),
],
q(wbm) => [
- q(7001),
+ q(7051),
q(0),
],
q(wbp) => [
- q(7002),
+ q(7052),
q(0),
],
q(wbq) => [
- q(7003),
+ q(7053),
q(0),
],
q(wbr) => [
- q(7004),
+ q(7054),
q(0),
],
q(wbt) => [
- q(7005),
+ q(7055),
q(0),
],
q(wbv) => [
- q(7006),
+ q(7056),
q(0),
],
q(wbw) => [
- q(7007),
+ q(7057),
q(0),
],
q(wca) => [
- q(7008),
+ q(7058),
q(0),
],
q(wci) => [
- q(7009),
+ q(7059),
q(0),
],
q(wdd) => [
- q(7010),
+ q(7060),
q(0),
],
q(wdg) => [
- q(7011),
+ q(7061),
q(0),
],
q(wdj) => [
- q(7012),
+ q(7062),
q(0),
],
q(wdu) => [
- q(7013),
+ q(7063),
q(0),
],
q(wea) => [
- q(7014),
+ q(7064),
q(0),
],
q(wec) => [
- q(7015),
+ q(7065),
q(0),
],
q(wed) => [
- q(7016),
+ q(7066),
q(0),
],
q(weh) => [
- q(7017),
+ q(7067),
q(0),
],
q(wei) => [
- q(7018),
+ q(7068),
q(0),
],
q(wel) => [
@@ -84851,7 +85624,7 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(wem) => [
- q(7019),
+ q(7069),
q(0),
],
q(wen) => [
@@ -84859,211 +85632,211 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(weo) => [
- q(7020),
+ q(7070),
q(0),
],
q(wep) => [
- q(7021),
+ q(7071),
q(0),
],
q(wer) => [
- q(7022),
+ q(7072),
q(0),
],
q(wes) => [
- q(7023),
+ q(7073),
q(0),
],
q(wet) => [
- q(7024),
+ q(7074),
q(0),
],
q(weu) => [
- q(7025),
+ q(7075),
q(0),
],
q(wew) => [
- q(7026),
+ q(7076),
q(0),
],
q(wfg) => [
- q(7027),
+ q(7077),
q(0),
],
q(wga) => [
- q(7028),
+ q(7078),
q(0),
],
q(wgb) => [
- q(7029),
+ q(7079),
q(0),
],
q(wgg) => [
- q(7030),
+ q(7080),
q(0),
],
q(wgi) => [
- q(7031),
+ q(7081),
q(0),
],
q(wgo) => [
- q(7032),
+ q(7082),
+ q(0),
+ ],
+ q(wgu) => [
+ q(7083),
q(0),
],
q(wgy) => [
- q(7033),
+ q(7084),
q(0),
],
q(wha) => [
- q(7034),
+ q(7085),
q(0),
],
q(whg) => [
- q(7035),
+ q(7086),
q(0),
],
q(whk) => [
- q(7036),
+ q(7087),
q(0),
],
q(whu) => [
- q(7037),
+ q(7088),
q(0),
],
q(wib) => [
- q(7038),
+ q(7089),
q(0),
],
q(wic) => [
- q(7039),
+ q(7090),
q(0),
],
q(wie) => [
- q(7040),
+ q(7091),
q(0),
],
q(wif) => [
- q(7041),
+ q(7092),
q(0),
],
q(wig) => [
- q(7042),
+ q(7093),
q(0),
],
q(wih) => [
- q(7043),
+ q(7094),
q(0),
],
q(wii) => [
- q(7044),
+ q(7095),
q(0),
],
q(wij) => [
- q(7045),
+ q(7096),
q(0),
],
q(wik) => [
- q(7046),
+ q(7097),
q(0),
],
q(wil) => [
- q(7047),
+ q(7098),
q(0),
],
q(wim) => [
- q(7048),
+ q(7099),
q(0),
],
q(win) => [
- q(7049),
+ q(7100),
q(0),
],
q(wir) => [
- q(7050),
+ q(7101),
q(0),
],
q(wit) => [
- q(7051),
+ q(7102),
q(0),
],
q(wiu) => [
- q(7052),
+ q(7103),
q(0),
],
q(wiv) => [
- q(7053),
- q(0),
- ],
- q(wiw) => [
- q(7054),
+ q(7104),
q(0),
],
q(wiy) => [
- q(7055),
+ q(7105),
q(0),
],
q(wja) => [
- q(7056),
+ q(7106),
q(0),
],
q(wji) => [
- q(7057),
+ q(7107),
q(0),
],
q(wka) => [
- q(7058),
+ q(7108),
q(0),
],
q(wkb) => [
- q(7059),
+ q(7109),
q(0),
],
q(wkd) => [
- q(7060),
+ q(7110),
q(0),
],
q(wkl) => [
- q(7061),
+ q(7111),
q(0),
],
q(wku) => [
- q(7062),
+ q(7112),
q(0),
],
q(wkw) => [
- q(7063),
+ q(7113),
q(0),
],
q(wla) => [
- q(7064),
+ q(7114),
q(0),
],
q(wlc) => [
- q(7065),
+ q(7115),
q(0),
],
q(wle) => [
- q(7066),
+ q(7116),
q(0),
],
q(wlg) => [
- q(7067),
+ q(7117),
q(0),
],
q(wli) => [
- q(7068),
+ q(7118),
q(0),
],
q(wlk) => [
- q(7069),
+ q(7119),
q(0),
],
q(wll) => [
- q(7070),
+ q(7120),
q(0),
],
q(wlm) => [
- q(7071),
+ q(7121),
q(0),
],
q(wln) => [
@@ -85071,171 +85844,175 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(wlo) => [
- q(7072),
+ q(7122),
q(0),
],
q(wlr) => [
- q(7073),
+ q(7123),
q(0),
],
q(wls) => [
- q(7074),
+ q(7124),
q(0),
],
q(wlu) => [
- q(7075),
+ q(7125),
q(0),
],
q(wlv) => [
- q(7076),
+ q(7126),
q(0),
],
q(wlw) => [
- q(7077),
+ q(7127),
q(0),
],
q(wlx) => [
- q(7078),
+ q(7128),
q(0),
],
q(wly) => [
- q(7079),
+ q(7129),
q(0),
],
q(wma) => [
- q(7080),
+ q(7130),
q(0),
],
q(wmb) => [
- q(7081),
+ q(7131),
q(0),
],
q(wmc) => [
- q(7082),
+ q(7132),
q(0),
],
q(wmd) => [
- q(7083),
+ q(7133),
q(0),
],
q(wme) => [
- q(7084),
+ q(7134),
q(0),
],
q(wmh) => [
- q(7085),
+ q(7135),
q(0),
],
q(wmi) => [
- q(7086),
+ q(7136),
q(0),
],
q(wmm) => [
- q(7087),
+ q(7137),
q(0),
],
q(wmn) => [
- q(7088),
+ q(7138),
q(0),
],
q(wmo) => [
- q(7089),
+ q(7139),
q(0),
],
q(wms) => [
- q(7090),
+ q(7140),
q(0),
],
q(wmt) => [
- q(7091),
+ q(7141),
q(0),
],
q(wmw) => [
- q(7092),
+ q(7142),
q(0),
],
q(wmx) => [
- q(7093),
+ q(7143),
q(0),
],
q(wnb) => [
- q(7094),
+ q(7144),
q(0),
],
q(wnc) => [
- q(7095),
+ q(7145),
q(0),
],
q(wnd) => [
- q(7096),
+ q(7146),
q(0),
],
q(wne) => [
- q(7097),
+ q(7147),
q(0),
],
q(wng) => [
- q(7098),
+ q(7148),
q(0),
],
q(wni) => [
- q(7099),
+ q(7149),
q(0),
],
q(wnk) => [
- q(7100),
+ q(7150),
q(0),
],
q(wnm) => [
- q(7101),
+ q(7151),
q(0),
],
q(wno) => [
- q(7102),
+ q(7152),
q(0),
],
q(wnp) => [
- q(7103),
+ q(7153),
q(0),
],
q(wnu) => [
- q(7104),
+ q(7154),
+ q(0),
+ ],
+ q(wny) => [
+ q(7155),
q(0),
],
q(woa) => [
- q(7105),
+ q(7156),
q(0),
],
q(wob) => [
- q(7106),
+ q(7157),
q(0),
],
q(woc) => [
- q(7107),
+ q(7158),
q(0),
],
q(wod) => [
- q(7108),
+ q(7159),
q(0),
],
q(woe) => [
- q(7109),
+ q(7160),
q(0),
],
q(wof) => [
- q(7110),
+ q(7161),
q(0),
],
q(wog) => [
- q(7111),
+ q(7162),
q(0),
],
q(woi) => [
- q(7112),
+ q(7163),
q(0),
],
q(wok) => [
- q(7113),
+ q(7164),
q(0),
],
q(wol) => [
@@ -85243,275 +86020,287 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(wom) => [
- q(7114),
+ q(7165),
q(0),
],
q(won) => [
- q(7115),
+ q(7166),
q(0),
],
q(woo) => [
- q(7116),
+ q(7167),
q(0),
],
q(wor) => [
- q(7117),
+ q(7168),
q(0),
],
q(wos) => [
- q(7118),
+ q(7169),
q(0),
],
q(wow) => [
- q(7119),
+ q(7170),
q(0),
],
q(woy) => [
- q(7120),
+ q(7171),
q(0),
],
q(wpc) => [
- q(7121),
+ q(7172),
q(0),
],
q(wra) => [
- q(7122),
+ q(7173),
q(0),
],
q(wrb) => [
- q(7123),
+ q(7174),
q(0),
],
q(wrd) => [
- q(7124),
+ q(7175),
q(0),
],
q(wrg) => [
- q(7125),
+ q(7176),
q(0),
],
q(wrh) => [
- q(7126),
+ q(7177),
q(0),
],
q(wri) => [
- q(7127),
+ q(7178),
+ q(0),
+ ],
+ q(wrk) => [
+ q(7179),
q(0),
],
q(wrl) => [
- q(7128),
+ q(7180),
q(0),
],
q(wrm) => [
- q(7129),
+ q(7181),
q(0),
],
q(wrn) => [
- q(7130),
+ q(7182),
+ q(0),
+ ],
+ q(wro) => [
+ q(7183),
q(0),
],
q(wrp) => [
- q(7131),
+ q(7184),
q(0),
],
q(wrr) => [
- q(7132),
+ q(7185),
q(0),
],
q(wrs) => [
- q(7133),
+ q(7186),
q(0),
],
q(wru) => [
- q(7134),
+ q(7187),
q(0),
],
q(wrv) => [
- q(7135),
+ q(7188),
q(0),
],
q(wrw) => [
- q(7136),
+ q(7189),
q(0),
],
q(wrx) => [
- q(7137),
+ q(7190),
q(0),
],
q(wry) => [
- q(7138),
+ q(7191),
q(0),
],
q(wrz) => [
- q(7139),
+ q(7192),
q(0),
],
q(wsa) => [
- q(7140),
+ q(7193),
q(0),
],
q(wsi) => [
- q(7141),
+ q(7194),
q(0),
],
q(wsk) => [
- q(7142),
+ q(7195),
q(0),
],
q(wsr) => [
- q(7143),
+ q(7196),
q(0),
],
q(wss) => [
- q(7144),
+ q(7197),
q(0),
],
q(wsu) => [
- q(7145),
+ q(7198),
q(0),
],
q(wsv) => [
- q(7146),
+ q(7199),
q(0),
],
q(wtf) => [
- q(7147),
+ q(7200),
q(0),
],
q(wti) => [
- q(7148),
+ q(7201),
q(0),
],
q(wtk) => [
- q(7149),
+ q(7202),
q(0),
],
q(wtm) => [
- q(7150),
+ q(7203),
q(0),
],
q(wtw) => [
- q(7151),
+ q(7204),
q(0),
],
q(wua) => [
- q(7152),
+ q(7205),
q(0),
],
q(wub) => [
- q(7153),
+ q(7206),
q(0),
],
q(wud) => [
- q(7154),
+ q(7207),
q(0),
],
q(wuh) => [
- q(7155),
+ q(7208),
q(0),
],
q(wul) => [
- q(7156),
+ q(7209),
q(0),
],
q(wum) => [
- q(7157),
+ q(7210),
q(0),
],
q(wun) => [
- q(7158),
+ q(7211),
q(0),
],
q(wur) => [
- q(7159),
+ q(7212),
q(0),
],
q(wut) => [
- q(7160),
+ q(7213),
q(0),
],
q(wuu) => [
- q(7161),
+ q(7214),
q(0),
],
q(wuv) => [
- q(7162),
+ q(7215),
q(0),
],
q(wux) => [
- q(7163),
+ q(7216),
q(0),
],
q(wuy) => [
- q(7164),
+ q(7217),
q(0),
],
q(wwa) => [
- q(7165),
+ q(7218),
+ q(0),
+ ],
+ q(wwb) => [
+ q(7219),
q(0),
],
q(wwo) => [
- q(7166),
+ q(7220),
q(0),
],
q(wwr) => [
- q(7167),
+ q(7221),
q(0),
],
q(www) => [
- q(7168),
+ q(7222),
q(0),
],
q(wxa) => [
- q(7169),
+ q(7223),
q(0),
],
q(wya) => [
- q(7170),
+ q(7224),
q(0),
],
q(wyb) => [
- q(7171),
+ q(7225),
q(0),
],
q(wym) => [
- q(7172),
+ q(7226),
q(0),
],
q(wyr) => [
- q(7173),
+ q(7227),
q(0),
],
q(wyy) => [
- q(7174),
+ q(7228),
q(0),
],
q(xaa) => [
- q(7175),
+ q(7229),
q(0),
],
q(xab) => [
- q(7176),
+ q(7230),
q(0),
],
q(xac) => [
- q(7177),
+ q(7231),
q(0),
],
q(xad) => [
- q(7178),
+ q(7232),
q(0),
],
q(xae) => [
- q(7179),
+ q(7233),
q(0),
],
q(xag) => [
- q(7180),
+ q(7234),
q(0),
],
q(xai) => [
- q(7181),
+ q(7235),
q(0),
],
q(xal) => [
@@ -85519,243 +86308,251 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(xam) => [
- q(7182),
+ q(7236),
q(0),
],
q(xan) => [
- q(7183),
+ q(7237),
q(0),
],
q(xao) => [
- q(7184),
+ q(7238),
q(0),
],
q(xap) => [
- q(7185),
+ q(7239),
q(0),
],
q(xaq) => [
- q(7186),
+ q(7240),
q(0),
],
q(xar) => [
- q(7187),
+ q(7241),
q(0),
],
q(xas) => [
- q(7188),
+ q(7242),
q(0),
],
q(xat) => [
- q(7189),
+ q(7243),
q(0),
],
q(xau) => [
- q(7190),
+ q(7244),
q(0),
],
q(xav) => [
- q(7191),
+ q(7245),
q(0),
],
q(xaw) => [
- q(7192),
+ q(7246),
q(0),
],
q(xay) => [
- q(7193),
+ q(7247),
q(0),
],
q(xba) => [
- q(7194),
+ q(7248),
q(0),
],
q(xbb) => [
- q(7195),
+ q(7249),
q(0),
],
q(xbc) => [
- q(7196),
+ q(7250),
q(0),
],
q(xbi) => [
- q(7197),
+ q(7251),
q(0),
],
q(xbm) => [
- q(7198),
+ q(7252),
q(0),
],
q(xbn) => [
- q(7199),
+ q(7253),
q(0),
],
q(xbo) => [
- q(7200),
+ q(7254),
q(0),
],
q(xbr) => [
- q(7201),
+ q(7255),
q(0),
],
q(xbw) => [
- q(7202),
+ q(7256),
q(0),
],
q(xbx) => [
- q(7203),
+ q(7257),
q(0),
],
q(xcb) => [
- q(7204),
+ q(7258),
q(0),
],
q(xcc) => [
- q(7205),
+ q(7259),
q(0),
],
q(xce) => [
- q(7206),
+ q(7260),
q(0),
],
q(xcg) => [
- q(7207),
+ q(7261),
q(0),
],
q(xch) => [
- q(7208),
+ q(7262),
q(0),
],
q(xcl) => [
- q(7209),
+ q(7263),
q(0),
],
q(xcm) => [
- q(7210),
+ q(7264),
q(0),
],
q(xcn) => [
- q(7211),
+ q(7265),
q(0),
],
q(xco) => [
- q(7212),
+ q(7266),
q(0),
],
q(xcr) => [
- q(7213),
+ q(7267),
q(0),
],
q(xct) => [
- q(7214),
+ q(7268),
q(0),
],
q(xcu) => [
- q(7215),
+ q(7269),
q(0),
],
q(xcv) => [
- q(7216),
+ q(7270),
q(0),
],
q(xcw) => [
- q(7217),
+ q(7271),
q(0),
],
q(xcy) => [
- q(7218),
+ q(7272),
q(0),
],
q(xdc) => [
- q(7219),
+ q(7273),
q(0),
],
q(xdm) => [
- q(7220),
+ q(7274),
q(0),
],
q(xdy) => [
- q(7221),
+ q(7275),
q(0),
],
q(xeb) => [
- q(7222),
+ q(7276),
q(0),
],
q(xed) => [
- q(7223),
+ q(7277),
q(0),
],
q(xeg) => [
- q(7224),
+ q(7278),
q(0),
],
q(xel) => [
- q(7225),
+ q(7279),
q(0),
],
q(xem) => [
- q(7226),
+ q(7280),
q(0),
],
q(xep) => [
- q(7227),
+ q(7281),
q(0),
],
q(xer) => [
- q(7228),
+ q(7282),
q(0),
],
q(xes) => [
- q(7229),
+ q(7283),
q(0),
],
q(xet) => [
- q(7230),
+ q(7284),
q(0),
],
q(xeu) => [
- q(7231),
+ q(7285),
q(0),
],
q(xfa) => [
- q(7232),
+ q(7286),
q(0),
],
q(xga) => [
- q(7233),
+ q(7287),
+ q(0),
+ ],
+ q(xgb) => [
+ q(7288),
q(0),
],
q(xgf) => [
- q(7234),
+ q(7289),
q(0),
],
q(xgl) => [
- q(7235),
+ q(7290),
q(0),
],
q(xgn) => [
- q(0530),
+ q(0531),
q(0),
],
q(xgr) => [
- q(7236),
+ q(7291),
+ q(0),
+ ],
+ q(xgu) => [
+ q(7292),
q(0),
],
q(xha) => [
- q(7237),
+ q(7293),
q(0),
],
q(xhc) => [
- q(7238),
+ q(7294),
q(0),
],
q(xhd) => [
- q(7239),
+ q(7295),
q(0),
],
q(xhe) => [
- q(7240),
+ q(7296),
q(0),
],
q(xho) => [
@@ -85763,831 +86560,851 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(xhr) => [
- q(7241),
+ q(7297),
q(0),
],
q(xht) => [
- q(7242),
+ q(7298),
q(0),
],
q(xhu) => [
- q(7243),
+ q(7299),
q(0),
],
q(xhv) => [
- q(7244),
+ q(7300),
q(0),
],
q(xia) => [
- q(7245),
+ q(7301),
q(0),
],
q(xib) => [
- q(7246),
+ q(7302),
q(0),
],
q(xii) => [
- q(7247),
+ q(7303),
q(0),
],
q(xil) => [
- q(7248),
+ q(7304),
q(0),
],
q(xin) => [
- q(7249),
+ q(7305),
q(0),
],
q(xip) => [
- q(7250),
+ q(7306),
q(0),
],
q(xir) => [
- q(7251),
+ q(7307),
q(0),
],
q(xiv) => [
- q(7252),
+ q(7308),
q(0),
],
q(xiy) => [
- q(7253),
+ q(7309),
q(0),
],
q(xka) => [
- q(7254),
+ q(7310),
q(0),
],
q(xkb) => [
- q(7255),
+ q(7311),
q(0),
],
q(xkc) => [
- q(7256),
+ q(7312),
q(0),
],
q(xkd) => [
- q(7257),
+ q(7313),
q(0),
],
q(xke) => [
- q(7258),
+ q(7314),
q(0),
],
q(xkf) => [
- q(7259),
+ q(7315),
q(0),
],
q(xkg) => [
- q(7260),
+ q(7316),
q(0),
],
q(xkh) => [
- q(7261),
+ q(7317),
q(0),
],
q(xki) => [
- q(7262),
+ q(7318),
q(0),
],
q(xkj) => [
- q(7263),
+ q(7319),
q(0),
],
q(xkk) => [
- q(7264),
+ q(7320),
q(0),
],
q(xkl) => [
- q(7265),
+ q(7321),
q(0),
],
q(xkn) => [
- q(7266),
+ q(7322),
q(0),
],
q(xko) => [
- q(7267),
+ q(7323),
q(0),
],
q(xkp) => [
- q(7268),
+ q(7324),
q(0),
],
q(xkq) => [
- q(7269),
+ q(7325),
q(0),
],
q(xkr) => [
- q(7270),
+ q(7326),
q(0),
],
q(xks) => [
- q(7271),
+ q(7327),
q(0),
],
q(xkt) => [
- q(7272),
+ q(7328),
q(0),
],
q(xku) => [
- q(7273),
+ q(7329),
q(0),
],
q(xkv) => [
- q(7274),
+ q(7330),
q(0),
],
q(xkw) => [
- q(7275),
+ q(7331),
q(0),
],
q(xkx) => [
- q(7276),
+ q(7332),
q(0),
],
q(xky) => [
- q(7277),
+ q(7333),
q(0),
],
q(xkz) => [
- q(7278),
+ q(7334),
q(0),
],
q(xla) => [
- q(7279),
+ q(7335),
q(0),
],
q(xlb) => [
- q(7280),
+ q(7336),
q(0),
],
q(xlc) => [
- q(7281),
+ q(7337),
q(0),
],
q(xld) => [
- q(7282),
+ q(7338),
q(0),
],
q(xle) => [
- q(7283),
+ q(7339),
q(0),
],
q(xlg) => [
- q(7284),
+ q(7340),
q(0),
],
q(xli) => [
- q(7285),
+ q(7341),
q(0),
],
q(xln) => [
- q(7286),
+ q(7342),
q(0),
],
q(xlo) => [
- q(7287),
+ q(7343),
q(0),
],
q(xlp) => [
- q(7288),
+ q(7344),
q(0),
],
q(xls) => [
- q(7289),
+ q(7345),
q(0),
],
q(xlu) => [
- q(7290),
+ q(7346),
q(0),
],
q(xly) => [
- q(7291),
+ q(7347),
q(0),
],
q(xma) => [
- q(7292),
+ q(7348),
q(0),
],
q(xmb) => [
- q(7293),
+ q(7349),
q(0),
],
q(xmc) => [
- q(7294),
+ q(7350),
q(0),
],
q(xmd) => [
- q(7295),
+ q(7351),
q(0),
],
q(xme) => [
- q(7296),
+ q(7352),
q(0),
],
q(xmf) => [
- q(7297),
+ q(7353),
q(0),
],
q(xmg) => [
- q(7298),
+ q(7354),
q(0),
],
q(xmh) => [
- q(7299),
+ q(7355),
q(0),
],
q(xmj) => [
- q(7300),
+ q(7356),
q(0),
],
q(xmk) => [
- q(7301),
+ q(7357),
q(0),
],
q(xml) => [
- q(7302),
+ q(7358),
q(0),
],
q(xmm) => [
- q(7303),
+ q(7359),
q(0),
],
q(xmn) => [
- q(7304),
+ q(7360),
q(0),
],
q(xmo) => [
- q(7305),
+ q(7361),
q(0),
],
q(xmp) => [
- q(7306),
+ q(7362),
q(0),
],
q(xmq) => [
- q(7307),
+ q(7363),
q(0),
],
q(xmr) => [
- q(7308),
+ q(7364),
q(0),
],
q(xms) => [
- q(7309),
+ q(7365),
q(0),
],
q(xmt) => [
- q(7310),
+ q(7366),
q(0),
],
q(xmu) => [
- q(7311),
+ q(7367),
q(0),
],
q(xmv) => [
- q(7312),
+ q(7368),
q(0),
],
q(xmw) => [
- q(7313),
+ q(7369),
q(0),
],
q(xmx) => [
- q(7314),
+ q(7370),
q(0),
],
q(xmy) => [
- q(7315),
+ q(7371),
q(0),
],
q(xmz) => [
- q(7316),
+ q(7372),
q(0),
],
q(xna) => [
- q(7317),
+ q(7373),
q(0),
],
q(xnb) => [
- q(7318),
+ q(7374),
q(0),
],
q(xnd) => [
- q(0531),
+ q(0532),
q(0),
],
q(xng) => [
- q(7319),
+ q(7375),
q(0),
],
q(xnh) => [
- q(7320),
+ q(7376),
q(0),
],
q(xnn) => [
- q(7321),
+ q(7377),
q(0),
],
q(xno) => [
- q(7322),
+ q(7378),
q(0),
],
q(xnr) => [
- q(7323),
+ q(7379),
q(0),
],
q(xns) => [
- q(7324),
+ q(7380),
q(0),
],
q(xnt) => [
- q(7325),
+ q(7381),
+ q(0),
+ ],
+ q(xnz) => [
+ q(7382),
q(0),
],
q(xoc) => [
- q(7326),
+ q(7383),
q(0),
],
q(xod) => [
- q(7327),
+ q(7384),
q(0),
],
q(xog) => [
- q(7328),
+ q(7385),
q(0),
],
q(xoi) => [
- q(7329),
+ q(7386),
q(0),
],
q(xok) => [
- q(7330),
+ q(7387),
q(0),
],
q(xom) => [
- q(7331),
+ q(7388),
q(0),
],
q(xon) => [
- q(7332),
+ q(7389),
q(0),
],
q(xoo) => [
- q(7333),
+ q(7390),
q(0),
],
q(xop) => [
- q(7334),
+ q(7391),
q(0),
],
q(xor) => [
- q(7335),
+ q(7392),
q(0),
],
q(xow) => [
- q(7336),
+ q(7393),
q(0),
],
q(xpc) => [
- q(7337),
+ q(7394),
q(0),
],
q(xpe) => [
- q(7338),
+ q(7395),
q(0),
],
q(xpg) => [
- q(7339),
+ q(7396),
q(0),
],
q(xpi) => [
- q(7340),
+ q(7397),
+ q(0),
+ ],
+ q(xpj) => [
+ q(7398),
q(0),
],
q(xpk) => [
- q(7341),
+ q(7399),
q(0),
],
q(xpm) => [
- q(7342),
+ q(7400),
q(0),
],
q(xpn) => [
- q(7343),
+ q(7401),
q(0),
],
q(xpo) => [
- q(7344),
+ q(7402),
q(0),
],
q(xpp) => [
- q(7345),
+ q(7403),
q(0),
],
q(xpq) => [
- q(7346),
+ q(7404),
q(0),
],
q(xpr) => [
- q(7347),
+ q(7405),
q(0),
],
q(xps) => [
- q(7348),
+ q(7406),
q(0),
],
q(xpu) => [
- q(7349),
+ q(7407),
q(0),
],
q(xpy) => [
- q(7350),
+ q(7408),
q(0),
],
q(xqa) => [
- q(7351),
+ q(7409),
q(0),
],
q(xqt) => [
- q(7352),
+ q(7410),
q(0),
],
q(xra) => [
- q(7353),
+ q(7411),
q(0),
],
q(xrb) => [
- q(7354),
+ q(7412),
q(0),
],
q(xre) => [
- q(7355),
+ q(7413),
q(0),
],
q(xri) => [
- q(7356),
+ q(7414),
q(0),
],
q(xrm) => [
- q(7357),
+ q(7415),
q(0),
],
q(xrn) => [
- q(7358),
+ q(7416),
q(0),
],
q(xrr) => [
- q(7359),
+ q(7417),
q(0),
],
q(xrt) => [
- q(7360),
+ q(7418),
q(0),
],
q(xru) => [
- q(7361),
+ q(7419),
q(0),
],
q(xrw) => [
- q(7362),
+ q(7420),
q(0),
],
q(xsa) => [
- q(7363),
+ q(7421),
q(0),
],
q(xsb) => [
- q(7364),
+ q(7422),
q(0),
],
q(xsc) => [
- q(7365),
+ q(7423),
q(0),
],
q(xsd) => [
- q(7366),
+ q(7424),
q(0),
],
q(xse) => [
- q(7367),
+ q(7425),
q(0),
],
q(xsh) => [
- q(7368),
+ q(7426),
q(0),
],
q(xsi) => [
- q(7369),
+ q(7427),
q(0),
],
q(xsj) => [
- q(7370),
+ q(7428),
q(0),
],
q(xsl) => [
- q(7371),
+ q(7429),
q(0),
],
q(xsm) => [
- q(7372),
+ q(7430),
q(0),
],
q(xsn) => [
- q(7373),
+ q(7431),
q(0),
],
q(xso) => [
- q(7374),
+ q(7432),
q(0),
],
q(xsp) => [
- q(7375),
+ q(7433),
q(0),
],
q(xsq) => [
- q(7376),
+ q(7434),
q(0),
],
q(xsr) => [
- q(7377),
+ q(7435),
q(0),
],
q(xss) => [
- q(7378),
+ q(7436),
q(0),
],
q(xsu) => [
- q(7379),
+ q(7437),
q(0),
],
q(xsv) => [
- q(7380),
+ q(7438),
q(0),
],
q(xsy) => [
- q(7381),
+ q(7439),
q(0),
],
q(xta) => [
- q(7382),
+ q(7440),
q(0),
],
q(xtb) => [
- q(7383),
+ q(7441),
q(0),
],
q(xtc) => [
- q(7384),
+ q(7442),
q(0),
],
q(xtd) => [
- q(7385),
+ q(7443),
q(0),
],
q(xte) => [
- q(7386),
+ q(7444),
q(0),
],
q(xtg) => [
- q(7387),
+ q(7445),
q(0),
],
q(xti) => [
- q(7388),
+ q(7446),
q(0),
],
q(xtj) => [
- q(7389),
+ q(7447),
q(0),
],
q(xtl) => [
- q(7390),
+ q(7448),
q(0),
],
q(xtm) => [
- q(7391),
+ q(7449),
q(0),
],
q(xtn) => [
- q(7392),
+ q(7450),
q(0),
],
q(xto) => [
- q(7393),
+ q(7451),
q(0),
],
q(xtp) => [
- q(7394),
+ q(7452),
q(0),
],
q(xtq) => [
- q(7395),
+ q(7453),
q(0),
],
q(xtr) => [
- q(7396),
+ q(7454),
q(0),
],
q(xts) => [
- q(7397),
+ q(7455),
q(0),
],
q(xtt) => [
- q(7398),
+ q(7456),
q(0),
],
q(xtu) => [
- q(7399),
+ q(7457),
q(0),
],
q(xtw) => [
- q(7400),
+ q(7458),
q(0),
],
q(xty) => [
- q(7401),
+ q(7459),
q(0),
],
q(xtz) => [
- q(7402),
+ q(7460),
q(0),
],
q(xua) => [
- q(7403),
+ q(7461),
q(0),
],
q(xub) => [
- q(7404),
+ q(7462),
+ q(0),
+ ],
+ q(xud) => [
+ q(7463),
q(0),
],
q(xug) => [
- q(7405),
+ q(7464),
q(0),
],
q(xuj) => [
- q(7406),
+ q(7465),
q(0),
],
q(xum) => [
- q(7407),
+ q(7466),
+ q(0),
+ ],
+ q(xun) => [
+ q(7467),
q(0),
],
q(xuo) => [
- q(7408),
+ q(7468),
q(0),
],
q(xup) => [
- q(7409),
+ q(7469),
q(0),
],
q(xur) => [
- q(7410),
+ q(7470),
q(0),
],
q(xut) => [
- q(7411),
+ q(7471),
q(0),
],
q(xuu) => [
- q(7412),
+ q(7472),
q(0),
],
q(xve) => [
- q(7413),
+ q(7473),
q(0),
],
q(xvi) => [
- q(7414),
+ q(7474),
q(0),
],
q(xvn) => [
- q(7415),
+ q(7475),
q(0),
],
q(xvo) => [
- q(7416),
+ q(7476),
q(0),
],
q(xvs) => [
- q(7417),
+ q(7477),
q(0),
],
q(xwa) => [
- q(7418),
+ q(7478),
q(0),
],
q(xwc) => [
- q(7419),
+ q(7479),
q(0),
],
q(xwe) => [
- q(7420),
+ q(7480),
q(0),
],
q(xwg) => [
- q(7421),
+ q(7481),
q(0),
],
q(xwl) => [
- q(7422),
+ q(7482),
q(0),
],
q(xwo) => [
- q(7423),
+ q(7483),
q(0),
],
q(xwr) => [
- q(7424),
+ q(7484),
q(0),
],
q(xxb) => [
- q(7425),
+ q(7485),
q(0),
],
q(xxk) => [
- q(7426),
+ q(7486),
q(0),
],
q(xxr) => [
- q(7427),
+ q(7487),
q(0),
],
q(xxt) => [
- q(7428),
+ q(7488),
q(0),
],
q(xyl) => [
- q(7429),
+ q(7489),
+ q(0),
+ ],
+ q(xyy) => [
+ q(7490),
q(0),
],
q(xzh) => [
- q(7430),
+ q(7491),
q(0),
],
q(xzm) => [
- q(7431),
+ q(7492),
q(0),
],
q(xzp) => [
- q(7432),
+ q(7493),
q(0),
],
q(yaa) => [
- q(7433),
+ q(7494),
q(0),
],
q(yab) => [
- q(7434),
+ q(7495),
q(0),
],
q(yac) => [
- q(7435),
+ q(7496),
q(0),
],
q(yad) => [
- q(7436),
+ q(7497),
q(0),
],
q(yae) => [
- q(7437),
+ q(7498),
q(0),
],
q(yaf) => [
- q(7438),
+ q(7499),
q(0),
],
q(yag) => [
- q(7439),
+ q(7500),
q(0),
],
q(yah) => [
- q(7440),
+ q(7501),
q(0),
],
q(yai) => [
- q(7441),
+ q(7502),
q(0),
],
q(yaj) => [
- q(7442),
+ q(7503),
q(0),
],
q(yak) => [
- q(7443),
+ q(7504),
q(0),
],
q(yal) => [
- q(7444),
+ q(7505),
q(0),
],
q(yam) => [
- q(7445),
+ q(7506),
q(0),
],
q(yan) => [
- q(7446),
+ q(7507),
q(0),
],
q(yao) => [
@@ -86599,223 +87416,219 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(yaq) => [
- q(7447),
+ q(7508),
q(0),
],
q(yar) => [
- q(7448),
+ q(7509),
q(0),
],
q(yas) => [
- q(7449),
+ q(7510),
q(0),
],
q(yat) => [
- q(7450),
+ q(7511),
q(0),
],
q(yau) => [
- q(7451),
+ q(7512),
q(0),
],
q(yav) => [
- q(7452),
+ q(7513),
q(0),
],
q(yaw) => [
- q(7453),
+ q(7514),
q(0),
],
q(yax) => [
- q(7454),
+ q(7515),
q(0),
],
q(yay) => [
- q(7455),
+ q(7516),
q(0),
],
q(yaz) => [
- q(7456),
+ q(7517),
q(0),
],
q(yba) => [
- q(7457),
+ q(7518),
q(0),
],
q(ybb) => [
- q(7458),
- q(0),
- ],
- q(ybd) => [
- q(7459),
+ q(7519),
q(0),
],
q(ybe) => [
- q(7460),
+ q(7520),
q(0),
],
q(ybh) => [
- q(7461),
+ q(7521),
q(0),
],
q(ybi) => [
- q(7462),
+ q(7522),
q(0),
],
q(ybj) => [
- q(7463),
+ q(7523),
q(0),
],
q(ybk) => [
- q(7464),
+ q(7524),
q(0),
],
q(ybl) => [
- q(7465),
+ q(7525),
q(0),
],
q(ybm) => [
- q(7466),
+ q(7526),
q(0),
],
q(ybn) => [
- q(7467),
+ q(7527),
q(0),
],
q(ybo) => [
- q(7468),
+ q(7528),
q(0),
],
q(ybx) => [
- q(7469),
+ q(7529),
q(0),
],
q(yby) => [
- q(7470),
+ q(7530),
q(0),
],
q(ych) => [
- q(7471),
+ q(7531),
q(0),
],
q(ycl) => [
- q(7472),
+ q(7532),
q(0),
],
q(ycn) => [
- q(7473),
+ q(7533),
q(0),
],
q(ycp) => [
- q(7474),
+ q(7534),
q(0),
],
q(ydd) => [
- q(7475),
+ q(7535),
q(0),
],
q(yde) => [
- q(7476),
+ q(7536),
q(0),
],
q(ydg) => [
- q(7477),
+ q(7537),
q(0),
],
q(ydk) => [
- q(7478),
+ q(7538),
q(0),
],
q(yds) => [
- q(7479),
+ q(7539),
q(0),
],
q(yea) => [
- q(7480),
+ q(7540),
q(0),
],
q(yec) => [
- q(7481),
+ q(7541),
q(0),
],
q(yee) => [
- q(7482),
+ q(7542),
q(0),
],
q(yei) => [
- q(7483),
+ q(7543),
q(0),
],
q(yej) => [
- q(7484),
+ q(7544),
q(0),
],
q(yel) => [
- q(7485),
- q(0),
- ],
- q(yen) => [
- q(7486),
+ q(7545),
q(0),
],
q(yer) => [
- q(7487),
+ q(7546),
q(0),
],
q(yes) => [
- q(7488),
+ q(7547),
q(0),
],
q(yet) => [
- q(7489),
+ q(7548),
q(0),
],
q(yeu) => [
- q(7490),
+ q(7549),
q(0),
],
q(yev) => [
- q(7491),
+ q(7550),
q(0),
],
q(yey) => [
- q(7492),
+ q(7551),
+ q(0),
+ ],
+ q(yga) => [
+ q(7552),
q(0),
],
q(ygl) => [
- q(7493),
+ q(7553),
q(0),
],
q(ygm) => [
- q(7494),
+ q(7554),
q(0),
],
q(ygp) => [
- q(7495),
+ q(7555),
q(0),
],
q(ygr) => [
- q(7496),
+ q(7556),
q(0),
],
q(ygw) => [
- q(7497),
+ q(7557),
q(0),
],
q(yha) => [
- q(7498),
+ q(7558),
q(0),
],
q(yhd) => [
- q(7499),
+ q(7559),
q(0),
],
q(yhl) => [
- q(7500),
+ q(7560),
q(0),
],
q(yia) => [
- q(7501),
+ q(7561),
q(0),
],
q(yid) => [
@@ -86823,319 +87636,327 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(yif) => [
- q(2618),
+ q(2642),
q(0),
],
q(yig) => [
- q(7502),
+ q(7562),
q(0),
],
q(yih) => [
- q(7503),
+ q(7563),
q(0),
],
q(yii) => [
- q(7504),
+ q(7564),
q(0),
],
q(yij) => [
- q(7505),
+ q(7565),
q(0),
],
q(yik) => [
- q(7506),
+ q(7566),
q(0),
],
q(yil) => [
- q(7507),
+ q(7567),
q(0),
],
q(yim) => [
- q(7508),
+ q(7568),
q(0),
],
q(yin) => [
- q(7509),
+ q(7569),
q(0),
],
q(yip) => [
- q(7510),
+ q(7570),
q(0),
],
q(yiq) => [
- q(7511),
+ q(7571),
q(0),
],
q(yir) => [
- q(7512),
+ q(7572),
q(0),
],
q(yis) => [
- q(7513),
+ q(7573),
q(0),
],
q(yit) => [
- q(7514),
+ q(7574),
q(0),
],
q(yiu) => [
- q(7515),
+ q(7575),
q(0),
],
q(yiv) => [
- q(7516),
+ q(7576),
q(0),
],
q(yix) => [
- q(7517),
+ q(7577),
q(0),
],
q(yiy) => [
- q(7518),
+ q(7578),
q(0),
],
q(yiz) => [
- q(7519),
+ q(7579),
q(0),
],
q(yka) => [
- q(7520),
+ q(7580),
q(0),
],
q(ykg) => [
- q(7521),
+ q(7581),
q(0),
],
q(yki) => [
- q(7522),
+ q(7582),
q(0),
],
q(ykk) => [
- q(7523),
+ q(7583),
q(0),
],
q(ykl) => [
- q(7524),
+ q(7584),
q(0),
],
q(ykm) => [
- q(7525),
+ q(7585),
+ q(0),
+ ],
+ q(ykn) => [
+ q(7586),
q(0),
],
q(yko) => [
- q(7526),
+ q(7587),
q(0),
],
q(ykr) => [
- q(7527),
+ q(7588),
q(0),
],
q(ykt) => [
- q(7528),
+ q(7589),
+ q(0),
+ ],
+ q(yku) => [
+ q(7590),
q(0),
],
q(yky) => [
- q(7529),
+ q(7591),
q(0),
],
q(yla) => [
- q(7530),
+ q(7592),
q(0),
],
q(ylb) => [
- q(7531),
+ q(7593),
q(0),
],
q(yle) => [
- q(7532),
+ q(7594),
q(0),
],
q(ylg) => [
- q(7533),
+ q(7595),
q(0),
],
q(yli) => [
- q(7534),
+ q(7596),
q(0),
],
q(yll) => [
- q(7535),
+ q(7597),
q(0),
],
q(ylm) => [
- q(7536),
+ q(7598),
q(0),
],
q(yln) => [
- q(7537),
+ q(7599),
q(0),
],
q(ylo) => [
- q(7538),
+ q(7600),
q(0),
],
q(ylr) => [
- q(7539),
+ q(7601),
q(0),
],
q(ylu) => [
- q(7540),
+ q(7602),
q(0),
],
q(yly) => [
- q(7541),
- q(0),
- ],
- q(yma) => [
- q(7542),
+ q(7603),
q(0),
],
q(ymb) => [
- q(7543),
+ q(7604),
q(0),
],
q(ymc) => [
- q(7544),
+ q(7605),
q(0),
],
q(ymd) => [
- q(7545),
+ q(7606),
q(0),
],
q(yme) => [
- q(7546),
+ q(7607),
q(0),
],
q(ymg) => [
- q(7547),
+ q(7608),
q(0),
],
q(ymh) => [
- q(7548),
+ q(7609),
q(0),
],
q(ymi) => [
- q(7549),
+ q(7610),
q(0),
],
q(ymk) => [
- q(7550),
+ q(7611),
q(0),
],
q(yml) => [
- q(7551),
+ q(7612),
q(0),
],
q(ymm) => [
- q(7552),
+ q(7613),
q(0),
],
q(ymn) => [
- q(7553),
+ q(7614),
q(0),
],
q(ymo) => [
- q(7554),
+ q(7615),
q(0),
],
q(ymp) => [
- q(7555),
+ q(7616),
q(0),
],
q(ymq) => [
- q(7556),
+ q(7617),
q(0),
],
q(ymr) => [
- q(7557),
+ q(7618),
q(0),
],
q(yms) => [
- q(7558),
+ q(7619),
q(0),
],
q(ymt) => [
- q(7559),
+ q(7620),
q(0),
],
q(ymx) => [
- q(7560),
+ q(7621),
q(0),
],
q(ymz) => [
- q(7561),
+ q(7622),
q(0),
],
q(yna) => [
- q(7562),
+ q(7623),
q(0),
],
q(ynd) => [
- q(7563),
+ q(7624),
q(0),
],
q(yne) => [
- q(7564),
+ q(7625),
q(0),
],
q(yng) => [
- q(7565),
+ q(7626),
q(0),
],
q(ynh) => [
- q(7566),
+ q(7627),
q(0),
],
q(ynk) => [
- q(7567),
+ q(7628),
q(0),
],
q(ynl) => [
- q(7568),
+ q(7629),
q(0),
],
q(ynn) => [
- q(7569),
+ q(7630),
q(0),
],
q(yno) => [
- q(7570),
+ q(7631),
+ q(0),
+ ],
+ q(ynq) => [
+ q(7632),
q(0),
],
q(yns) => [
- q(7571),
+ q(7633),
q(0),
],
q(ynu) => [
- q(7572),
+ q(7634),
q(0),
],
q(yob) => [
- q(7573),
+ q(7635),
q(0),
],
q(yog) => [
- q(7574),
+ q(7636),
q(0),
],
q(yoi) => [
- q(7575),
+ q(7637),
q(0),
],
q(yok) => [
- q(7576),
+ q(7638),
q(0),
],
q(yol) => [
- q(7577),
+ q(7639),
q(0),
],
q(yom) => [
- q(7578),
+ q(7640),
q(0),
],
q(yon) => [
- q(7579),
+ q(7641),
q(0),
],
q(yor) => [
@@ -87143,31 +87964,35 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(yos) => [
- q(7580),
+ q(7642),
+ q(0),
+ ],
+ q(yot) => [
+ q(7643),
q(0),
],
q(yox) => [
- q(7581),
+ q(7644),
q(0),
],
q(yoy) => [
- q(7582),
+ q(7645),
q(0),
],
q(ypa) => [
- q(7583),
+ q(7646),
q(0),
],
q(ypb) => [
- q(7584),
+ q(7647),
q(0),
],
q(ypg) => [
- q(7585),
+ q(7648),
q(0),
],
q(yph) => [
- q(7586),
+ q(7649),
q(0),
],
q(ypk) => [
@@ -87175,311 +88000,323 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(ypm) => [
- q(7587),
+ q(7650),
q(0),
],
q(ypn) => [
- q(7588),
+ q(7651),
q(0),
],
q(ypo) => [
- q(7589),
+ q(7652),
q(0),
],
q(ypp) => [
- q(7590),
+ q(7653),
q(0),
],
q(ypz) => [
- q(7591),
+ q(7654),
q(0),
],
q(yra) => [
- q(7592),
+ q(7655),
q(0),
],
q(yrb) => [
- q(7593),
+ q(7656),
q(0),
],
q(yre) => [
- q(7594),
+ q(7657),
q(0),
],
q(yri) => [
- q(7595),
+ q(7658),
q(0),
],
q(yrk) => [
- q(7596),
+ q(7659),
q(0),
],
q(yrl) => [
- q(7597),
+ q(7660),
q(0),
],
q(yrn) => [
- q(7598),
+ q(7661),
q(0),
],
q(yrs) => [
- q(7599),
+ q(7662),
q(0),
],
q(yrw) => [
- q(7600),
+ q(7663),
q(0),
],
q(ysc) => [
- q(7601),
+ q(7664),
q(0),
],
q(ysd) => [
- q(7602),
+ q(7665),
+ q(0),
+ ],
+ q(ysg) => [
+ q(7666),
q(0),
],
q(ysl) => [
- q(7603),
+ q(7667),
q(0),
],
q(ysn) => [
- q(7604),
+ q(7668),
q(0),
],
q(yso) => [
- q(7605),
+ q(7669),
q(0),
],
q(ysp) => [
- q(7606),
+ q(7670),
q(0),
],
q(ysr) => [
- q(7607),
+ q(7671),
q(0),
],
q(yss) => [
- q(7608),
+ q(7672),
q(0),
],
q(ysy) => [
- q(7609),
+ q(7673),
q(0),
],
q(yta) => [
- q(7610),
+ q(7674),
q(0),
],
q(ytl) => [
- q(7611),
+ q(7675),
q(0),
],
q(ytp) => [
- q(7612),
+ q(7676),
q(0),
],
q(ytw) => [
- q(7613),
+ q(7677),
q(0),
],
q(yua) => [
- q(7614),
+ q(7678),
q(0),
],
q(yub) => [
- q(7615),
+ q(7679),
q(0),
],
q(yuc) => [
- q(7616),
+ q(7680),
q(0),
],
q(yud) => [
- q(7617),
+ q(7681),
q(0),
],
q(yue) => [
- q(7618),
+ q(7682),
q(0),
],
q(yuf) => [
- q(7619),
+ q(7683),
q(0),
],
q(yug) => [
- q(7620),
+ q(7684),
q(0),
],
q(yui) => [
- q(7621),
+ q(7685),
q(0),
],
q(yuj) => [
- q(7622),
+ q(7686),
q(0),
],
q(yuk) => [
- q(7623),
+ q(7687),
q(0),
],
q(yul) => [
- q(7624),
+ q(7688),
q(0),
],
q(yum) => [
- q(7625),
+ q(7689),
q(0),
],
q(yun) => [
- q(7626),
+ q(7690),
q(0),
],
q(yup) => [
- q(7627),
+ q(7691),
q(0),
],
q(yuq) => [
- q(7628),
+ q(7692),
q(0),
],
q(yur) => [
- q(7629),
+ q(7693),
q(0),
],
q(yut) => [
- q(7630),
+ q(7694),
q(0),
],
q(yuu) => [
- q(7631),
+ q(7695),
q(0),
],
q(yuw) => [
- q(7632),
+ q(7696),
q(0),
],
q(yux) => [
- q(7633),
+ q(7697),
q(0),
],
q(yuy) => [
- q(7634),
+ q(7698),
q(0),
],
q(yuz) => [
- q(7635),
+ q(7699),
q(0),
],
q(yva) => [
- q(7636),
+ q(7700),
q(0),
],
q(yvt) => [
- q(7637),
+ q(7701),
q(0),
],
q(ywa) => [
- q(7638),
+ q(7702),
q(0),
],
q(ywl) => [
- q(7639),
+ q(7703),
q(0),
],
q(ywn) => [
- q(7640),
+ q(7704),
q(0),
],
q(ywq) => [
- q(7641),
+ q(7705),
q(0),
],
q(ywr) => [
- q(7642),
+ q(7706),
q(0),
],
q(ywt) => [
- q(7643),
+ q(7707),
q(0),
],
q(ywu) => [
- q(7644),
+ q(7708),
q(0),
],
q(yww) => [
- q(7645),
+ q(7709),
+ q(0),
+ ],
+ q(yxg) => [
+ q(7710),
+ q(0),
+ ],
+ q(yxy) => [
+ q(7711),
q(0),
],
q(yyu) => [
- q(7646),
+ q(7712),
q(0),
],
q(yyz) => [
- q(7647),
+ q(7713),
q(0),
],
q(yzg) => [
- q(7648),
+ q(7714),
q(0),
],
q(yzk) => [
- q(7649),
+ q(7715),
q(0),
],
q(zaa) => [
- q(7650),
+ q(7716),
q(0),
],
q(zab) => [
- q(7651),
+ q(7717),
q(0),
],
q(zac) => [
- q(7652),
+ q(7718),
q(0),
],
q(zad) => [
- q(7653),
+ q(7719),
q(0),
],
q(zae) => [
- q(7654),
+ q(7720),
q(0),
],
q(zaf) => [
- q(7655),
+ q(7721),
q(0),
],
q(zag) => [
- q(7656),
+ q(7722),
q(0),
],
q(zah) => [
- q(7657),
+ q(7723),
q(0),
],
q(zai) => [
- q(7658),
+ q(7724),
q(0),
],
q(zaj) => [
- q(7659),
+ q(7725),
q(0),
],
q(zak) => [
- q(7660),
+ q(7726),
q(0),
],
q(zal) => [
- q(7661),
+ q(7727),
q(0),
],
q(zam) => [
- q(7662),
+ q(7728),
q(0),
],
q(zao) => [
- q(7663),
+ q(7729),
q(0),
],
q(zap) => [
@@ -87487,51 +88324,51 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(zaq) => [
- q(7664),
+ q(7730),
q(0),
],
q(zar) => [
- q(7665),
+ q(7731),
q(0),
],
q(zas) => [
- q(7666),
+ q(7732),
q(0),
],
q(zat) => [
- q(7667),
+ q(7733),
q(0),
],
q(zau) => [
- q(7668),
+ q(7734),
q(0),
],
q(zav) => [
- q(7669),
+ q(7735),
q(0),
],
q(zaw) => [
- q(7670),
+ q(7736),
q(0),
],
q(zax) => [
- q(7671),
+ q(7737),
q(0),
],
q(zay) => [
- q(7672),
+ q(7738),
q(0),
],
q(zaz) => [
- q(7673),
+ q(7739),
q(0),
],
q(zbc) => [
- q(7674),
+ q(7740),
q(0),
],
q(zbe) => [
- q(7675),
+ q(7741),
q(0),
],
q(zbl) => [
@@ -87539,35 +88376,35 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(zbt) => [
- q(7676),
+ q(7742),
q(0),
],
q(zbw) => [
- q(7677),
+ q(7743),
q(0),
],
q(zca) => [
- q(7678),
+ q(7744),
q(0),
],
q(zch) => [
- q(7679),
+ q(7745),
q(0),
],
q(zdj) => [
- q(7680),
+ q(7746),
q(0),
],
q(zea) => [
- q(7681),
+ q(7747),
q(0),
],
q(zeg) => [
- q(7682),
+ q(7748),
q(0),
],
q(zeh) => [
- q(7683),
+ q(7749),
q(0),
],
q(zen) => [
@@ -87575,583 +88412,595 @@ $Locale::Codes::Data{'language'}{'code2id'} = {
q(0),
],
q(zga) => [
- q(7684),
+ q(7750),
q(0),
],
q(zgb) => [
- q(7685),
+ q(7751),
+ q(0),
+ ],
+ q(zgh) => [
+ q(0480),
q(0),
],
q(zgm) => [
- q(7686),
+ q(7752),
q(0),
],
q(zgn) => [
- q(7687),
+ q(7753),
q(0),
],
q(zgr) => [
- q(7688),
+ q(7754),
q(0),
],
q(zha) => [
- q(0480),
+ q(0481),
q(0),
],
q(zhb) => [
- q(7689),
+ q(7755),
q(0),
],
q(zhd) => [
- q(7690),
+ q(7756),
q(0),
],
q(zhi) => [
- q(7691),
+ q(7757),
q(0),
],
q(zhn) => [
- q(7692),
+ q(7758),
q(0),
],
q(zhw) => [
- q(7693),
+ q(7759),
q(0),
],
q(zhx) => [
- q(0532),
+ q(0533),
q(0),
],
q(zia) => [
- q(7694),
+ q(7760),
q(0),
],
q(zib) => [
- q(7695),
+ q(7761),
q(0),
],
q(zik) => [
- q(7696),
+ q(7762),
q(0),
],
q(zil) => [
- q(7697),
+ q(7763),
q(0),
],
q(zim) => [
- q(7698),
+ q(7764),
q(0),
],
q(zin) => [
- q(7699),
+ q(7765),
q(0),
],
q(zir) => [
- q(7700),
+ q(7766),
q(0),
],
q(ziw) => [
- q(7701),
+ q(7767),
q(0),
],
q(ziz) => [
- q(7702),
+ q(7768),
q(0),
],
q(zka) => [
- q(7703),
+ q(7769),
q(0),
],
q(zkb) => [
- q(7704),
+ q(7770),
+ q(0),
+ ],
+ q(zkd) => [
+ q(7771),
q(0),
],
q(zkg) => [
- q(7705),
+ q(7772),
q(0),
],
q(zkh) => [
- q(7706),
+ q(7773),
q(0),
],
q(zkk) => [
- q(7707),
+ q(7774),
+ q(0),
+ ],
+ q(zkn) => [
+ q(7775),
q(0),
],
q(zko) => [
- q(7708),
+ q(7776),
q(0),
],
q(zkp) => [
- q(7709),
+ q(7777),
q(0),
],
q(zkr) => [
- q(7710),
+ q(7778),
q(0),
],
q(zkt) => [
- q(7711),
+ q(7779),
q(0),
],
q(zku) => [
- q(7712),
+ q(7780),
q(0),
],
q(zkv) => [
- q(7713),
+ q(7781),
q(0),
],
q(zkz) => [
- q(7714),
+ q(7782),
q(0),
],
q(zle) => [
- q(0533),
+ q(0534),
q(0),
],
q(zlj) => [
- q(7715),
+ q(7783),
q(0),
],
q(zlm) => [
- q(7716),
+ q(7784),
q(0),
],
q(zln) => [
- q(7717),
+ q(7785),
q(0),
],
q(zlq) => [
- q(7718),
+ q(7786),
q(0),
],
q(zls) => [
- q(0534),
+ q(0535),
q(0),
],
q(zlw) => [
- q(0535),
+ q(0536),
q(0),
],
q(zma) => [
- q(7719),
+ q(7787),
q(0),
],
q(zmb) => [
- q(7720),
+ q(7788),
q(0),
],
q(zmc) => [
- q(7721),
+ q(7789),
q(0),
],
q(zmd) => [
- q(7722),
+ q(7790),
q(0),
],
q(zme) => [
- q(7723),
+ q(7791),
q(0),
],
q(zmf) => [
- q(7724),
+ q(7792),
q(0),
],
q(zmg) => [
- q(7725),
+ q(7793),
q(0),
],
q(zmh) => [
- q(7726),
+ q(7794),
q(0),
],
q(zmi) => [
- q(7727),
+ q(7795),
q(0),
],
q(zmj) => [
- q(7728),
+ q(7796),
q(0),
],
q(zmk) => [
- q(7729),
+ q(7797),
q(0),
],
q(zml) => [
- q(7730),
+ q(7798),
q(0),
],
q(zmm) => [
- q(7731),
+ q(7799),
q(0),
],
q(zmn) => [
- q(7732),
+ q(7800),
q(0),
],
q(zmo) => [
- q(7733),
+ q(7801),
q(0),
],
q(zmp) => [
- q(7734),
+ q(7802),
q(0),
],
q(zmq) => [
- q(7735),
+ q(7803),
q(0),
],
q(zmr) => [
- q(7736),
+ q(7804),
q(0),
],
q(zms) => [
- q(7737),
+ q(7805),
q(0),
],
q(zmt) => [
- q(7738),
+ q(7806),
q(0),
],
q(zmu) => [
- q(7739),
+ q(7807),
q(0),
],
q(zmv) => [
- q(7740),
+ q(7808),
q(0),
],
q(zmw) => [
- q(7741),
+ q(7809),
q(0),
],
q(zmx) => [
- q(7742),
+ q(7810),
q(0),
],
q(zmy) => [
- q(7743),
+ q(7811),
q(0),
],
q(zmz) => [
- q(7744),
+ q(7812),
q(0),
],
q(zna) => [
- q(7745),
+ q(7813),
q(0),
],
q(znd) => [
- q(0481),
+ q(0482),
q(0),
],
q(zne) => [
- q(7746),
+ q(7814),
q(0),
],
q(zng) => [
- q(7747),
+ q(7815),
q(0),
],
q(znk) => [
- q(7748),
+ q(7816),
q(0),
],
q(zns) => [
- q(7749),
+ q(7817),
q(0),
],
q(zoc) => [
- q(7750),
+ q(7818),
q(0),
],
q(zoh) => [
- q(7751),
+ q(7819),
q(0),
],
q(zom) => [
- q(7752),
+ q(7820),
q(0),
],
q(zoo) => [
- q(7753),
+ q(7821),
q(0),
],
q(zoq) => [
- q(7754),
+ q(7822),
q(0),
],
q(zor) => [
- q(7755),
+ q(7823),
q(0),
],
q(zos) => [
- q(7756),
+ q(7824),
q(0),
],
q(zpa) => [
- q(7757),
+ q(7825),
q(0),
],
q(zpb) => [
- q(7758),
+ q(7826),
q(0),
],
q(zpc) => [
- q(7759),
+ q(7827),
q(0),
],
q(zpd) => [
- q(7760),
+ q(7828),
q(0),
],
q(zpe) => [
- q(7761),
+ q(7829),
q(0),
],
q(zpf) => [
- q(7762),
+ q(7830),
q(0),
],
q(zpg) => [
- q(7763),
+ q(7831),
q(0),
],
q(zph) => [
- q(7764),
+ q(7832),
q(0),
],
q(zpi) => [
- q(7765),
+ q(7833),
q(0),
],
q(zpj) => [
- q(7766),
+ q(7834),
q(0),
],
q(zpk) => [
- q(7767),
+ q(7835),
q(0),
],
q(zpl) => [
- q(7768),
+ q(7836),
q(0),
],
q(zpm) => [
- q(7769),
+ q(7837),
q(0),
],
q(zpn) => [
- q(7770),
+ q(7838),
q(0),
],
q(zpo) => [
- q(7771),
+ q(7839),
q(0),
],
q(zpp) => [
- q(7772),
+ q(7840),
q(0),
],
q(zpq) => [
- q(7773),
+ q(7841),
q(0),
],
q(zpr) => [
- q(7774),
+ q(7842),
q(0),
],
q(zps) => [
- q(7775),
+ q(7843),
q(0),
],
q(zpt) => [
- q(7776),
+ q(7844),
q(0),
],
q(zpu) => [
- q(7777),
+ q(7845),
q(0),
],
q(zpv) => [
- q(7778),
+ q(7846),
q(0),
],
q(zpw) => [
- q(7779),
+ q(7847),
q(0),
],
q(zpx) => [
- q(7780),
+ q(7848),
q(0),
],
q(zpy) => [
- q(7781),
+ q(7849),
q(0),
],
q(zpz) => [
- q(7782),
+ q(7850),
q(0),
],
q(zqe) => [
- q(7783),
+ q(7851),
q(0),
],
q(zra) => [
- q(7784),
+ q(7852),
q(0),
],
q(zrg) => [
- q(7785),
+ q(7853),
q(0),
],
q(zrn) => [
- q(7786),
+ q(7854),
q(0),
],
q(zro) => [
- q(7787),
+ q(7855),
q(0),
],
q(zrp) => [
- q(7788),
+ q(7856),
q(0),
],
q(zrs) => [
- q(7789),
+ q(7857),
q(0),
],
q(zsa) => [
- q(7790),
+ q(7858),
q(0),
],
q(zsk) => [
- q(7791),
+ q(7859),
q(0),
],
q(zsl) => [
- q(7792),
+ q(7860),
q(0),
],
q(zsm) => [
- q(7793),
+ q(7861),
q(0),
],
q(zsr) => [
- q(7794),
+ q(7862),
q(0),
],
q(zsu) => [
- q(7795),
+ q(7863),
q(0),
],
q(zte) => [
- q(7796),
+ q(7864),
q(0),
],
q(ztg) => [
- q(7797),
+ q(7865),
q(0),
],
q(ztl) => [
- q(7798),
+ q(7866),
q(0),
],
q(ztm) => [
- q(7799),
+ q(7867),
q(0),
],
q(ztn) => [
- q(7800),
+ q(7868),
q(0),
],
q(ztp) => [
- q(7801),
+ q(7869),
q(0),
],
q(ztq) => [
- q(7802),
+ q(7870),
q(0),
],
q(zts) => [
- q(7803),
+ q(7871),
q(0),
],
q(ztt) => [
- q(7804),
+ q(7872),
q(0),
],
q(ztu) => [
- q(7805),
+ q(7873),
q(0),
],
q(ztx) => [
- q(7806),
+ q(7874),
q(0),
],
q(zty) => [
- q(7807),
+ q(7875),
q(0),
],
q(zua) => [
- q(7808),
+ q(7876),
q(0),
],
q(zuh) => [
- q(7809),
+ q(7877),
q(0),
],
q(zul) => [
- q(0482),
+ q(0483),
q(0),
],
q(zum) => [
- q(7810),
+ q(7878),
q(0),
],
q(zun) => [
- q(0483),
+ q(0484),
q(0),
],
q(zuy) => [
- q(7811),
+ q(7879),
q(0),
],
q(zwa) => [
- q(7812),
+ q(7880),
q(0),
],
q(zxx) => [
- q(0484),
+ q(0485),
q(0),
],
q(zyb) => [
- q(7813),
+ q(7881),
q(0),
],
q(zyg) => [
- q(7814),
+ q(7882),
q(0),
],
q(zyj) => [
- q(7815),
+ q(7883),
q(0),
],
q(zyn) => [
- q(7816),
+ q(7884),
q(0),
],
q(zyp) => [
- q(7817),
+ q(7885),
q(0),
],
q(zza) => [
- q(0485),
+ q(0486),
q(0),
],
q(zzj) => [
- q(7818),
+ q(7886),
q(0),
],
},
@@ -88423,9 +89272,9 @@ $Locale::Codes::Data{'language'}{'id2code'} = {
q(0471) => q(xh),
q(0474) => q(yi),
q(0475) => q(yo),
- q(0480) => q(za),
- q(0482) => q(zu),
- q(0536) => q(sh),
+ q(0481) => q(za),
+ q(0483) => q(zu),
+ q(0537) => q(sh),
},
q(alpha-3) => {
q(0001) => q(aar),
@@ -88907,7344 +89756,7412 @@ $Locale::Codes::Data{'language'}{'id2code'} = {
q(0477) => q(zap),
q(0478) => q(zbl),
q(0479) => q(zen),
- q(0480) => q(zha),
- q(0481) => q(znd),
- q(0482) => q(zul),
- q(0483) => q(zun),
- q(0484) => q(zxx),
- q(0485) => q(zza),
- q(0486) => q(aav),
- q(0487) => q(alv),
- q(0488) => q(aqa),
- q(0489) => q(aql),
- q(0490) => q(auf),
- q(0491) => q(awd),
- q(0492) => q(azc),
- q(0493) => q(cba),
- q(0494) => q(ccn),
- q(0495) => q(ccs),
- q(0496) => q(cdc),
- q(0497) => q(cdd),
- q(0498) => q(csu),
- q(0499) => q(dmn),
- q(0500) => q(egx),
- q(0501) => q(esx),
- q(0502) => q(euq),
- q(0503) => q(fox),
- q(0504) => q(gme),
- q(0505) => q(gmq),
- q(0506) => q(gmw),
- q(0507) => q(grk),
- q(0508) => q(hmx),
- q(0509) => q(hok),
- q(0510) => q(hyx),
- q(0511) => q(iir),
- q(0512) => q(itc),
- q(0513) => q(jpx),
- q(0514) => q(kdo),
- q(0515) => q(ngf),
- q(0516) => q(omq),
- q(0517) => q(omv),
- q(0518) => q(plf),
- q(0519) => q(poz),
- q(0520) => q(pqe),
- q(0521) => q(pqw),
- q(0522) => q(qwe),
- q(0523) => q(sdv),
- q(0524) => q(sqj),
- q(0525) => q(syd),
- q(0526) => q(tbq),
- q(0527) => q(trk),
- q(0528) => q(tuw),
- q(0529) => q(urj),
- q(0530) => q(xgn),
- q(0531) => q(xnd),
- q(0532) => q(zhx),
- q(0533) => q(zle),
- q(0534) => q(zls),
- q(0535) => q(zlw),
- q(0537) => q(aaa),
- q(0538) => q(aab),
- q(0539) => q(aac),
- q(0540) => q(aad),
- q(0541) => q(aae),
- q(0542) => q(aaf),
- q(0543) => q(aag),
- q(0544) => q(aah),
- q(0545) => q(aai),
- q(0546) => q(aak),
- q(0547) => q(aal),
- q(0548) => q(aam),
- q(0549) => q(aan),
- q(0550) => q(aao),
- q(0551) => q(aap),
- q(0552) => q(aaq),
- q(0553) => q(aas),
- q(0554) => q(aat),
- q(0555) => q(aau),
- q(0556) => q(aaw),
- q(0557) => q(aax),
- q(0558) => q(aaz),
- q(0559) => q(aba),
- q(0560) => q(abb),
- q(0561) => q(abc),
- q(0562) => q(abd),
- q(0563) => q(abe),
- q(0564) => q(abf),
- q(0565) => q(abg),
- q(0566) => q(abh),
- q(0567) => q(abi),
- q(0568) => q(abj),
- q(0569) => q(abl),
- q(0570) => q(abm),
- q(0571) => q(abn),
- q(0572) => q(abo),
- q(0573) => q(abp),
- q(0574) => q(abq),
- q(0575) => q(abr),
- q(0576) => q(abs),
- q(0577) => q(abt),
- q(0578) => q(abu),
- q(0579) => q(abv),
- q(0580) => q(abw),
- q(0581) => q(abx),
- q(0582) => q(aby),
- q(0583) => q(abz),
- q(0584) => q(aca),
- q(0585) => q(acb),
- q(0586) => q(acd),
- q(0587) => q(acf),
- q(0588) => q(aci),
- q(0589) => q(ack),
- q(0590) => q(acl),
- q(0591) => q(acm),
- q(0592) => q(acn),
- q(0593) => q(acp),
- q(0594) => q(acq),
- q(0595) => q(acr),
- q(0596) => q(acs),
- q(0597) => q(act),
- q(0598) => q(acu),
- q(0599) => q(acv),
- q(0600) => q(acw),
- q(0601) => q(acx),
- q(0602) => q(acy),
- q(0603) => q(acz),
- q(0604) => q(adb),
- q(0605) => q(add),
- q(0606) => q(ade),
- q(0607) => q(adf),
- q(0608) => q(adg),
- q(0609) => q(adh),
- q(0610) => q(adi),
- q(0611) => q(adj),
- q(0612) => q(adl),
- q(0613) => q(adn),
- q(0614) => q(ado),
- q(0615) => q(adp),
- q(0616) => q(adq),
- q(0617) => q(adr),
- q(0618) => q(ads),
- q(0619) => q(adt),
- q(0620) => q(adu),
- q(0621) => q(adw),
- q(0622) => q(adx),
- q(0623) => q(adz),
- q(0624) => q(aea),
- q(0625) => q(aeb),
- q(0626) => q(aec),
- q(0627) => q(aed),
- q(0628) => q(aee),
- q(0629) => q(aek),
- q(0630) => q(ael),
- q(0631) => q(aem),
- q(0632) => q(aen),
- q(0633) => q(aeq),
- q(0634) => q(aer),
- q(0635) => q(aes),
- q(0636) => q(aeu),
- q(0637) => q(aew),
- q(0638) => q(aey),
- q(0639) => q(aez),
- q(0640) => q(afb),
- q(0641) => q(afd),
- q(0642) => q(afe),
- q(0643) => q(afg),
- q(0644) => q(afi),
- q(0645) => q(afk),
- q(0646) => q(afn),
- q(0647) => q(afo),
- q(0648) => q(afp),
- q(0649) => q(afs),
- q(0650) => q(aft),
- q(0651) => q(afu),
- q(0652) => q(afz),
- q(0653) => q(aga),
- q(0654) => q(agb),
- q(0655) => q(agc),
- q(0656) => q(agd),
- q(0657) => q(age),
- q(0658) => q(agf),
- q(0659) => q(agg),
- q(0660) => q(agh),
- q(0661) => q(agi),
- q(0662) => q(agj),
- q(0663) => q(agk),
- q(0664) => q(agl),
- q(0665) => q(agm),
- q(0666) => q(agn),
- q(0667) => q(ago),
- q(0668) => q(agq),
- q(0669) => q(agr),
- q(0670) => q(ags),
- q(0671) => q(agt),
- q(0672) => q(agu),
- q(0673) => q(agv),
- q(0674) => q(agw),
- q(0675) => q(agx),
- q(0676) => q(agy),
- q(0677) => q(agz),
- q(0678) => q(aha),
- q(0679) => q(ahb),
- q(0680) => q(ahg),
- q(0681) => q(ahh),
- q(0682) => q(ahi),
- q(0683) => q(ahk),
- q(0684) => q(ahl),
- q(0685) => q(ahm),
- q(0686) => q(ahn),
- q(0687) => q(aho),
- q(0688) => q(ahp),
- q(0689) => q(ahr),
- q(0690) => q(ahs),
- q(0691) => q(aht),
- q(0692) => q(aia),
- q(0693) => q(aib),
- q(0694) => q(aic),
- q(0695) => q(aid),
- q(0696) => q(aie),
- q(0697) => q(aif),
- q(0698) => q(aig),
- q(0699) => q(aih),
- q(0700) => q(aii),
- q(0701) => q(aij),
- q(0702) => q(aik),
- q(0703) => q(ail),
- q(0704) => q(aim),
- q(0705) => q(aio),
- q(0706) => q(aip),
- q(0707) => q(aiq),
- q(0708) => q(air),
- q(0709) => q(ais),
- q(0710) => q(ait),
- q(0711) => q(aiw),
- q(0712) => q(aix),
- q(0713) => q(aiy),
- q(0714) => q(aja),
- q(0715) => q(ajg),
- q(0716) => q(aji),
- q(0717) => q(ajp),
- q(0718) => q(ajt),
- q(0719) => q(aju),
- q(0720) => q(ajw),
- q(0721) => q(ajz),
- q(0722) => q(akb),
- q(0723) => q(akc),
- q(0724) => q(akd),
- q(0725) => q(ake),
- q(0726) => q(akf),
- q(0727) => q(akg),
- q(0728) => q(akh),
- q(0729) => q(aki),
- q(0730) => q(akj),
- q(0731) => q(akl),
- q(0732) => q(akm),
- q(0733) => q(ako),
- q(0734) => q(akp),
- q(0735) => q(akq),
- q(0736) => q(akr),
- q(0737) => q(aks),
- q(0738) => q(akt),
- q(0739) => q(aku),
- q(0740) => q(akv),
- q(0741) => q(akw),
- q(0742) => q(akx),
- q(0743) => q(aky),
- q(0744) => q(akz),
- q(0745) => q(ala),
- q(0746) => q(alc),
- q(0747) => q(ald),
- q(0748) => q(alf),
- q(0749) => q(alh),
- q(0750) => q(ali),
- q(0751) => q(alj),
- q(0752) => q(alk),
- q(0753) => q(all),
- q(0754) => q(alm),
- q(0755) => q(aln),
- q(0756) => q(alo),
- q(0757) => q(alp),
- q(0758) => q(alq),
- q(0759) => q(alr),
- q(0760) => q(als),
- q(0761) => q(alu),
- q(0762) => q(alw),
- q(0763) => q(alx),
- q(0764) => q(aly),
- q(0765) => q(alz),
- q(0766) => q(ama),
- q(0767) => q(amb),
- q(0768) => q(amc),
- q(0769) => q(ame),
- q(0770) => q(amf),
- q(0771) => q(amg),
- q(0772) => q(ami),
- q(0773) => q(amj),
- q(0774) => q(amk),
- q(0775) => q(aml),
- q(0776) => q(amm),
- q(0777) => q(amn),
- q(0778) => q(amo),
- q(0779) => q(amp),
- q(0780) => q(amq),
- q(0781) => q(amr),
- q(0782) => q(ams),
- q(0783) => q(amt),
- q(0784) => q(amu),
- q(0785) => q(amv),
- q(0786) => q(amw),
- q(0787) => q(amx),
- q(0788) => q(amy),
- q(0789) => q(amz),
- q(0790) => q(ana),
- q(0791) => q(anb),
- q(0792) => q(anc),
- q(0793) => q(and),
- q(0794) => q(ane),
- q(0795) => q(anf),
- q(0796) => q(anh),
- q(0797) => q(ani),
- q(0798) => q(anj),
- q(0799) => q(ank),
- q(0800) => q(anl),
- q(0801) => q(anm),
- q(0802) => q(ann),
- q(0803) => q(ano),
- q(0804) => q(anq),
- q(0805) => q(anr),
- q(0806) => q(ans),
- q(0807) => q(ant),
- q(0808) => q(anu),
- q(0809) => q(anv),
- q(0810) => q(anw),
- q(0811) => q(anx),
- q(0812) => q(any),
- q(0813) => q(anz),
- q(0814) => q(aoa),
- q(0815) => q(aob),
- q(0816) => q(aoc),
- q(0817) => q(aod),
- q(0818) => q(aoe),
- q(0819) => q(aof),
- q(0820) => q(aog),
- q(0821) => q(aoh),
- q(0822) => q(aoi),
- q(0823) => q(aoj),
- q(0824) => q(aok),
- q(0825) => q(aol),
- q(0826) => q(aom),
- q(0827) => q(aon),
- q(0828) => q(aor),
- q(0829) => q(aos),
- q(0830) => q(aot),
- q(0831) => q(aox),
- q(0832) => q(aoz),
- q(0833) => q(apb),
- q(0834) => q(apc),
- q(0835) => q(apd),
- q(0836) => q(ape),
- q(0837) => q(apf),
- q(0838) => q(apg),
- q(0839) => q(aph),
- q(0840) => q(api),
- q(0841) => q(apj),
- q(0842) => q(apk),
- q(0843) => q(apl),
- q(0844) => q(apm),
- q(0845) => q(apn),
- q(0846) => q(apo),
- q(0847) => q(app),
- q(0848) => q(apq),
- q(0849) => q(apr),
- q(0850) => q(aps),
- q(0851) => q(apt),
- q(0852) => q(apu),
- q(0853) => q(apv),
- q(0854) => q(apw),
- q(0855) => q(apx),
- q(0856) => q(apy),
- q(0857) => q(apz),
- q(0858) => q(aqc),
- q(0859) => q(aqd),
- q(0860) => q(aqg),
- q(0861) => q(aqm),
- q(0862) => q(aqn),
- q(0863) => q(aqp),
- q(0864) => q(aqr),
- q(0865) => q(aqz),
- q(0866) => q(arb),
- q(0867) => q(ard),
- q(0868) => q(are),
- q(0869) => q(arh),
- q(0870) => q(ari),
- q(0871) => q(arj),
- q(0872) => q(ark),
- q(0873) => q(arl),
- q(0874) => q(aro),
- q(0875) => q(arq),
- q(0876) => q(arr),
- q(0877) => q(ars),
- q(0878) => q(aru),
- q(0879) => q(arv),
- q(0880) => q(arx),
- q(0881) => q(ary),
- q(0882) => q(arz),
- q(0883) => q(asa),
- q(0884) => q(asb),
- q(0885) => q(asc),
- q(0886) => q(asd),
- q(0887) => q(ase),
- q(0888) => q(asf),
- q(0889) => q(asg),
- q(0890) => q(ash),
- q(0891) => q(asi),
- q(0892) => q(asj),
- q(0893) => q(ask),
- q(0894) => q(asl),
- q(0895) => q(asn),
- q(0896) => q(aso),
- q(0897) => q(asp),
- q(0898) => q(asq),
- q(0899) => q(asr),
- q(0900) => q(ass),
- q(0901) => q(asu),
- q(0902) => q(asv),
- q(0903) => q(asw),
- q(0904) => q(asx),
- q(0905) => q(asy),
- q(0906) => q(asz),
- q(0907) => q(ata),
- q(0908) => q(atb),
- q(0909) => q(atc),
- q(0910) => q(atd),
- q(0911) => q(ate),
- q(0912) => q(atg),
- q(0913) => q(ati),
- q(0914) => q(atj),
- q(0915) => q(atk),
- q(0916) => q(atl),
- q(0917) => q(atm),
- q(0918) => q(atn),
- q(0919) => q(ato),
- q(0920) => q(atp),
- q(0921) => q(atq),
- q(0922) => q(atr),
- q(0923) => q(ats),
- q(0924) => q(att),
- q(0925) => q(atu),
- q(0926) => q(atv),
- q(0927) => q(atw),
- q(0928) => q(atx),
- q(0929) => q(aty),
- q(0930) => q(atz),
- q(0931) => q(aua),
- q(0932) => q(aub),
- q(0933) => q(auc),
- q(0934) => q(aud),
- q(0935) => q(aue),
- q(0936) => q(aug),
- q(0937) => q(auh),
- q(0938) => q(aui),
- q(0939) => q(auj),
- q(0940) => q(auk),
- q(0941) => q(aul),
- q(0942) => q(aum),
- q(0943) => q(aun),
- q(0944) => q(auo),
- q(0945) => q(aup),
- q(0946) => q(auq),
- q(0947) => q(aur),
- q(0948) => q(aut),
- q(0949) => q(auu),
- q(0950) => q(auw),
- q(0951) => q(aux),
- q(0952) => q(auy),
- q(0953) => q(auz),
- q(0954) => q(avb),
- q(0955) => q(avd),
- q(0956) => q(avi),
- q(0957) => q(avk),
- q(0958) => q(avl),
- q(0959) => q(avn),
- q(0960) => q(avo),
- q(0961) => q(avs),
- q(0962) => q(avt),
- q(0963) => q(avu),
- q(0964) => q(avv),
- q(0965) => q(awb),
- q(0966) => q(awc),
- q(0967) => q(awe),
- q(0968) => q(awh),
- q(0969) => q(awi),
- q(0970) => q(awk),
- q(0971) => q(awm),
- q(0972) => q(awn),
- q(0973) => q(awo),
- q(0974) => q(awr),
- q(0975) => q(aws),
- q(0976) => q(awt),
- q(0977) => q(awu),
- q(0978) => q(awv),
- q(0979) => q(aww),
- q(0980) => q(awx),
- q(0981) => q(awy),
- q(0982) => q(axb),
- q(0983) => q(axg),
- q(0984) => q(axk),
- q(0985) => q(axm),
- q(0986) => q(axx),
- q(0987) => q(aya),
- q(0988) => q(ayb),
- q(0989) => q(ayc),
- q(0990) => q(ayd),
- q(0991) => q(aye),
- q(0992) => q(ayg),
- q(0993) => q(ayh),
- q(0994) => q(ayi),
- q(0995) => q(ayk),
- q(0996) => q(ayl),
- q(0997) => q(ayn),
- q(0998) => q(ayo),
- q(0999) => q(ayp),
- q(1000) => q(ayq),
- q(1001) => q(ayr),
- q(1002) => q(ays),
- q(1003) => q(ayt),
- q(1004) => q(ayu),
- q(1005) => q(ayy),
- q(1006) => q(ayz),
- q(1007) => q(aza),
- q(1008) => q(azb),
- q(1009) => q(azg),
- q(1010) => q(azj),
- q(1011) => q(azm),
- q(1012) => q(azo),
- q(1013) => q(azt),
- q(1014) => q(azz),
- q(1015) => q(baa),
- q(1016) => q(bab),
- q(1017) => q(bac),
- q(1018) => q(bae),
- q(1019) => q(baf),
- q(1020) => q(bag),
- q(1021) => q(bah),
- q(1022) => q(baj),
- q(1023) => q(bao),
- q(1024) => q(bap),
- q(1025) => q(bar),
- q(1026) => q(bau),
- q(1027) => q(bav),
- q(1028) => q(baw),
- q(1029) => q(bax),
- q(1030) => q(bay),
- q(1031) => q(baz),
- q(1032) => q(bba),
- q(1033) => q(bbb),
- q(1034) => q(bbc),
- q(1035) => q(bbd),
- q(1036) => q(bbe),
- q(1037) => q(bbf),
- q(1038) => q(bbg),
- q(1039) => q(bbh),
- q(1040) => q(bbi),
- q(1041) => q(bbj),
- q(1042) => q(bbk),
- q(1043) => q(bbl),
- q(1044) => q(bbm),
- q(1045) => q(bbn),
- q(1046) => q(bbo),
- q(1047) => q(bbp),
- q(1048) => q(bbq),
- q(1049) => q(bbr),
- q(1050) => q(bbs),
- q(1051) => q(bbt),
- q(1052) => q(bbu),
- q(1053) => q(bbv),
- q(1054) => q(bbw),
- q(1055) => q(bbx),
- q(1056) => q(bby),
- q(1057) => q(bbz),
- q(1058) => q(bca),
- q(1059) => q(bcb),
- q(1060) => q(bcc),
- q(1061) => q(bcd),
- q(1062) => q(bce),
- q(1063) => q(bcf),
- q(1064) => q(bcg),
- q(1065) => q(bch),
- q(1066) => q(bci),
- q(1067) => q(bcj),
- q(1068) => q(bck),
- q(1069) => q(bcl),
- q(1070) => q(bcm),
- q(1071) => q(bcn),
- q(1072) => q(bco),
- q(1073) => q(bcp),
- q(1074) => q(bcq),
- q(1075) => q(bcr),
- q(1076) => q(bcs),
- q(1077) => q(bct),
- q(1078) => q(bcu),
- q(1079) => q(bcv),
- q(1080) => q(bcw),
- q(1081) => q(bcy),
- q(1082) => q(bcz),
- q(1083) => q(bda),
- q(1084) => q(bdb),
- q(1085) => q(bdc),
- q(1086) => q(bdd),
- q(1087) => q(bde),
- q(1088) => q(bdf),
- q(1089) => q(bdg),
- q(1090) => q(bdh),
- q(1091) => q(bdi),
- q(1092) => q(bdj),
- q(1093) => q(bdk),
- q(1094) => q(bdl),
- q(1095) => q(bdm),
- q(1096) => q(bdn),
- q(1097) => q(bdo),
- q(1098) => q(bdp),
- q(1099) => q(bdq),
- q(1100) => q(bdr),
- q(1101) => q(bds),
- q(1102) => q(bdt),
- q(1103) => q(bdu),
- q(1104) => q(bdv),
- q(1105) => q(bdw),
- q(1106) => q(bdx),
- q(1107) => q(bdy),
- q(1108) => q(bdz),
- q(1109) => q(bea),
- q(1110) => q(beb),
- q(1111) => q(bec),
- q(1112) => q(bed),
- q(1113) => q(bee),
- q(1114) => q(bef),
- q(1115) => q(beg),
- q(1116) => q(beh),
- q(1117) => q(bei),
- q(1118) => q(bek),
- q(1119) => q(beo),
- q(1120) => q(bep),
- q(1121) => q(beq),
- q(1122) => q(bes),
- q(1123) => q(bet),
- q(1124) => q(beu),
- q(1125) => q(bev),
- q(1126) => q(bew),
- q(1127) => q(bex),
- q(1128) => q(bey),
- q(1129) => q(bez),
- q(1130) => q(mot),
- q(1131) => q(bfb),
- q(1132) => q(bfc),
- q(1133) => q(bfd),
- q(1134) => q(bfe),
- q(1135) => q(bff),
- q(1136) => q(bfg),
- q(1137) => q(bfh),
- q(1138) => q(bfi),
- q(1139) => q(bfj),
- q(1140) => q(bfk),
- q(1141) => q(bfl),
- q(1142) => q(bfm),
- q(1143) => q(bfn),
- q(1144) => q(bfo),
- q(1145) => q(bfp),
- q(1146) => q(bfq),
- q(1147) => q(bfr),
- q(1148) => q(bfs),
- q(1149) => q(bft),
- q(1150) => q(bfu),
- q(1151) => q(bfw),
- q(1152) => q(bfx),
- q(1153) => q(bfy),
- q(1154) => q(bfz),
- q(1155) => q(bga),
- q(1156) => q(bgb),
- q(1157) => q(bgc),
- q(1158) => q(bgd),
- q(1159) => q(bge),
- q(1160) => q(bgf),
- q(1161) => q(bgg),
- q(1162) => q(bgi),
- q(1163) => q(bgj),
- q(1164) => q(bgk),
- q(1165) => q(bgl),
- q(1166) => q(bgm),
- q(1167) => q(bgn),
- q(1168) => q(bgo),
- q(1169) => q(bgp),
- q(1170) => q(bgq),
- q(1171) => q(bgr),
- q(1172) => q(bgs),
- q(1173) => q(bgt),
- q(1174) => q(bgu),
- q(1175) => q(bgv),
- q(1176) => q(bgw),
- q(1177) => q(bgx),
- q(1178) => q(bgy),
- q(1179) => q(bgz),
- q(1180) => q(bha),
- q(1181) => q(bhb),
- q(1182) => q(bhc),
- q(1183) => q(bhd),
- q(1184) => q(bhe),
- q(1185) => q(bhf),
- q(1186) => q(bhg),
- q(1187) => q(bhh),
- q(1188) => q(bhi),
- q(1189) => q(bhj),
- q(1190) => q(bhl),
- q(1191) => q(bhm),
- q(1192) => q(bhn),
- q(1193) => q(bhp),
- q(1194) => q(bhq),
- q(1195) => q(bhr),
- q(1196) => q(bhs),
- q(1197) => q(bht),
- q(1198) => q(bhu),
- q(1199) => q(bhv),
- q(1200) => q(bhw),
- q(1201) => q(bhx),
- q(1202) => q(bhy),
- q(1203) => q(bhz),
- q(1204) => q(bia),
- q(1205) => q(bib),
- q(1206) => q(bic),
- q(1207) => q(bid),
- q(1208) => q(bie),
- q(1209) => q(bif),
- q(1210) => q(big),
- q(1211) => q(bij),
- q(1212) => q(bil),
- q(1213) => q(bim),
- q(1214) => q(bio),
- q(1215) => q(bip),
- q(1216) => q(biq),
- q(1217) => q(bir),
- q(1218) => q(bit),
- q(1219) => q(biu),
- q(1220) => q(biv),
- q(1221) => q(biw),
- q(1222) => q(bix),
- q(1223) => q(biy),
- q(1224) => q(biz),
- q(1225) => q(bja),
- q(1226) => q(bjb),
- q(1227) => q(bjc),
- q(1228) => q(bjd),
- q(1229) => q(bje),
- q(1230) => q(bjf),
- q(1231) => q(bjg),
- q(1232) => q(bjh),
- q(1233) => q(bji),
- q(1234) => q(bjj),
- q(1235) => q(bjk),
- q(1236) => q(bjl),
- q(1237) => q(bjm),
- q(1238) => q(bjn),
- q(1239) => q(bjo),
- q(1240) => q(bjr),
- q(1241) => q(bjs),
- q(1242) => q(bjt),
- q(1243) => q(bju),
- q(1244) => q(bjv),
- q(1245) => q(bjw),
- q(1246) => q(bjx),
- q(1247) => q(bjy),
- q(1248) => q(bjz),
- q(1249) => q(bka),
- q(1250) => q(bkc),
- q(1251) => q(bkd),
- q(1252) => q(bkf),
- q(1253) => q(bkg),
- q(1254) => q(bkh),
- q(1255) => q(bki),
- q(1256) => q(bkj),
- q(1257) => q(bkk),
- q(1258) => q(bkl),
- q(1259) => q(bkm),
- q(1260) => q(bkn),
- q(1261) => q(bko),
- q(1262) => q(bkp),
- q(1263) => q(bkq),
- q(1264) => q(bkr),
- q(1265) => q(bks),
- q(1266) => q(bkt),
- q(1267) => q(bku),
- q(1268) => q(bkv),
- q(1269) => q(bkw),
- q(1270) => q(bkx),
- q(1271) => q(bky),
- q(1272) => q(bkz),
- q(1273) => q(blb),
- q(1274) => q(blc),
- q(1275) => q(bld),
- q(1276) => q(ble),
- q(1277) => q(blf),
- q(1278) => q(blg),
- q(1279) => q(blh),
- q(1280) => q(bli),
- q(1281) => q(blj),
- q(1282) => q(blk),
- q(1283) => q(bll),
- q(1284) => q(blm),
- q(1285) => q(bln),
- q(1286) => q(blo),
- q(1287) => q(blp),
- q(1288) => q(blq),
- q(1289) => q(blr),
- q(1290) => q(bls),
- q(1291) => q(blt),
- q(1292) => q(blv),
- q(1293) => q(blw),
- q(1294) => q(blx),
- q(1295) => q(bly),
- q(1296) => q(blz),
- q(1297) => q(bma),
- q(1298) => q(bmb),
- q(1299) => q(bmc),
- q(1300) => q(bmd),
- q(1301) => q(bme),
- q(1302) => q(bmf),
- q(1303) => q(bmg),
- q(1304) => q(bmh),
- q(1305) => q(bmi),
- q(1306) => q(bmj),
- q(1307) => q(bmk),
- q(1308) => q(bml),
- q(1309) => q(bmm),
- q(1310) => q(bmn),
- q(1311) => q(bmo),
- q(1312) => q(bmp),
- q(1313) => q(bmq),
- q(1314) => q(bmr),
- q(1315) => q(bms),
- q(1316) => q(bmt),
- q(1317) => q(bmu),
- q(1318) => q(bmv),
- q(1319) => q(bmw),
- q(1320) => q(bmx),
- q(1321) => q(bmy),
- q(1322) => q(bmz),
- q(1323) => q(bna),
- q(1324) => q(bnb),
- q(1325) => q(bnc),
- q(1326) => q(bnd),
- q(1327) => q(bne),
- q(1328) => q(bnf),
- q(1329) => q(bng),
- q(1330) => q(bni),
- q(1331) => q(bnj),
- q(1332) => q(bnk),
- q(1333) => q(bnl),
- q(1334) => q(bnm),
- q(1335) => q(bnn),
- q(1336) => q(bno),
- q(1337) => q(bnp),
- q(1338) => q(bnq),
- q(1339) => q(bnr),
- q(1340) => q(bns),
- q(1341) => q(bnu),
- q(1342) => q(bnv),
- q(1343) => q(bnw),
- q(1344) => q(bnx),
- q(1345) => q(bny),
- q(1346) => q(bnz),
- q(1347) => q(boa),
- q(1348) => q(bob),
- q(1349) => q(boe),
- q(1350) => q(bof),
- q(1351) => q(bog),
- q(1352) => q(boh),
- q(1353) => q(boi),
- q(1354) => q(boj),
- q(1355) => q(bok),
- q(1356) => q(bol),
- q(1357) => q(bom),
- q(1358) => q(bon),
- q(1359) => q(boo),
- q(1360) => q(bop),
- q(1361) => q(boq),
- q(1362) => q(bor),
- q(1363) => q(bot),
- q(1364) => q(bou),
- q(1365) => q(bov),
- q(1366) => q(bow),
- q(1367) => q(box),
- q(1368) => q(boy),
- q(1369) => q(boz),
- q(1370) => q(bpa),
- q(1371) => q(bpb),
- q(1372) => q(bpd),
- q(1373) => q(bpg),
- q(1374) => q(bph),
- q(1375) => q(bpi),
- q(1376) => q(bpj),
- q(1377) => q(bpk),
- q(1378) => q(bpl),
- q(1379) => q(bpm),
- q(1380) => q(bpn),
- q(1381) => q(bpo),
- q(1382) => q(bpp),
- q(1383) => q(bpq),
- q(1384) => q(bpr),
- q(1385) => q(bps),
- q(1386) => q(bpt),
- q(1387) => q(bpu),
- q(1388) => q(bpv),
- q(1389) => q(bpw),
- q(1390) => q(bpx),
- q(1391) => q(bpy),
- q(1392) => q(bpz),
- q(1393) => q(bqa),
- q(1394) => q(bqb),
- q(1395) => q(bqc),
- q(1396) => q(bqd),
- q(1397) => q(bqf),
- q(1398) => q(bqg),
- q(1399) => q(bqh),
- q(1400) => q(bqi),
- q(1401) => q(bqj),
- q(1402) => q(bqk),
- q(1403) => q(bql),
- q(1404) => q(bqm),
- q(1405) => q(bqn),
- q(1406) => q(bqo),
- q(1407) => q(bqp),
- q(1408) => q(bqq),
- q(1409) => q(bqr),
- q(1410) => q(bqs),
- q(1411) => q(bqt),
- q(1412) => q(bqu),
- q(1413) => q(bqv),
- q(1414) => q(bqw),
- q(1415) => q(bqx),
- q(1416) => q(bqy),
- q(1417) => q(bqz),
- q(1418) => q(brb),
- q(1419) => q(brc),
- q(1420) => q(brd),
- q(1421) => q(brf),
- q(1422) => q(brg),
- q(1423) => q(brh),
- q(1424) => q(bri),
- q(1425) => q(brj),
- q(1426) => q(brk),
- q(1427) => q(brl),
- q(1428) => q(brm),
- q(1429) => q(brn),
- q(1430) => q(bro),
- q(1431) => q(brp),
- q(1432) => q(brq),
- q(1433) => q(brr),
- q(1434) => q(brs),
- q(1435) => q(brt),
- q(1436) => q(bru),
- q(1437) => q(brv),
- q(1438) => q(brw),
- q(1439) => q(brx),
- q(1440) => q(bry),
- q(1441) => q(brz),
- q(1442) => q(bsa),
- q(1443) => q(bsb),
- q(1444) => q(bsc),
- q(1445) => q(bse),
- q(1446) => q(bsf),
- q(1447) => q(bsg),
- q(1448) => q(bsh),
- q(1449) => q(bsi),
- q(1450) => q(bsj),
- q(1451) => q(bsk),
- q(1452) => q(bsl),
- q(1453) => q(bsm),
- q(1454) => q(bsn),
- q(1455) => q(bso),
- q(1456) => q(bsp),
- q(1457) => q(bsq),
- q(1458) => q(bsr),
- q(1459) => q(bss),
- q(1460) => q(bst),
- q(1461) => q(bsu),
- q(1462) => q(bsv),
- q(1463) => q(bsw),
- q(1464) => q(bsx),
- q(1465) => q(bsy),
- q(1466) => q(bta),
- q(1467) => q(btc),
- q(1468) => q(btd),
- q(1469) => q(bte),
- q(1470) => q(btf),
- q(1471) => q(btg),
- q(1472) => q(bth),
- q(1473) => q(bti),
- q(1474) => q(btj),
- q(1475) => q(btl),
- q(1476) => q(btm),
- q(1477) => q(btn),
- q(1478) => q(bto),
- q(1479) => q(btp),
- q(1480) => q(btq),
- q(1481) => q(btr),
- q(1482) => q(bts),
- q(1483) => q(btt),
- q(1484) => q(btu),
- q(1485) => q(btv),
- q(1486) => q(btw),
- q(1487) => q(btx),
- q(1488) => q(bty),
- q(1489) => q(btz),
- q(1490) => q(bub),
- q(1491) => q(buc),
- q(1492) => q(bud),
- q(1493) => q(bue),
- q(1494) => q(buf),
- q(1495) => q(buh),
- q(1496) => q(bui),
- q(1497) => q(buj),
- q(1498) => q(buk),
- q(1499) => q(bum),
- q(1500) => q(bun),
- q(1501) => q(buo),
- q(1502) => q(bup),
- q(1503) => q(buq),
- q(1504) => q(bus),
- q(1505) => q(but),
- q(1506) => q(buu),
- q(1507) => q(buv),
- q(1508) => q(buw),
- q(1509) => q(bux),
- q(1510) => q(buy),
- q(1511) => q(buz),
- q(1512) => q(bva),
- q(1513) => q(bvb),
- q(1514) => q(bvc),
- q(1515) => q(bvd),
- q(1516) => q(bve),
- q(1517) => q(bvf),
- q(1518) => q(bvg),
- q(1519) => q(bvh),
- q(1520) => q(bvi),
- q(1521) => q(bvj),
- q(1522) => q(bvk),
- q(1523) => q(bvl),
- q(1524) => q(bvm),
- q(1525) => q(bvn),
- q(1526) => q(bvo),
- q(1527) => q(bvq),
- q(1528) => q(bvr),
- q(1529) => q(bvt),
- q(1530) => q(bvu),
- q(1531) => q(bvv),
- q(1532) => q(bvw),
- q(1533) => q(bvx),
- q(1534) => q(bvy),
- q(1535) => q(bvz),
- q(1536) => q(bwa),
- q(1537) => q(bwb),
- q(1538) => q(bwc),
- q(1539) => q(bwd),
- q(1540) => q(bwe),
- q(1541) => q(bwf),
- q(1542) => q(bwg),
- q(1543) => q(bwh),
- q(1544) => q(bwi),
- q(1545) => q(bwj),
- q(1546) => q(bwk),
- q(1547) => q(bwl),
- q(1548) => q(bwm),
- q(1549) => q(bwn),
- q(1550) => q(bwo),
- q(1551) => q(bwp),
- q(1552) => q(bwq),
- q(1553) => q(bwr),
- q(1554) => q(bws),
- q(1555) => q(bwt),
- q(1556) => q(bwu),
- q(1557) => q(bww),
- q(1558) => q(bwx),
- q(1559) => q(bwy),
- q(1560) => q(bwz),
- q(1561) => q(bxa),
- q(1562) => q(bxb),
- q(1563) => q(bxc),
- q(1564) => q(bxd),
- q(1565) => q(bxe),
- q(1566) => q(bxf),
- q(1567) => q(bxg),
- q(1568) => q(bxh),
- q(1569) => q(bxi),
- q(1570) => q(bxj),
- q(1571) => q(bxk),
- q(1572) => q(bxl),
- q(1573) => q(bxm),
- q(1574) => q(bxn),
- q(1575) => q(bxo),
- q(1576) => q(bxp),
- q(1577) => q(bxq),
- q(1578) => q(bxr),
- q(1579) => q(bxs),
- q(1580) => q(bxu),
- q(1581) => q(bxv),
- q(1582) => q(bxw),
- q(1583) => q(bxx),
- q(1584) => q(bxz),
- q(1585) => q(bya),
- q(1586) => q(byb),
- q(1587) => q(byc),
- q(1588) => q(byd),
- q(1589) => q(bye),
- q(1590) => q(byf),
- q(1591) => q(byg),
- q(1592) => q(byh),
- q(1593) => q(byi),
- q(1594) => q(byj),
- q(1595) => q(byk),
- q(1596) => q(byl),
- q(1597) => q(bym),
- q(1598) => q(byo),
- q(1599) => q(byp),
- q(1600) => q(byq),
- q(1601) => q(byr),
- q(1602) => q(bys),
- q(1603) => q(byt),
- q(1604) => q(byv),
- q(1605) => q(byw),
- q(1606) => q(byx),
- q(1607) => q(byy),
- q(1608) => q(byz),
- q(1609) => q(bza),
- q(1610) => q(bzb),
- q(1611) => q(bzc),
- q(1612) => q(bzd),
- q(1613) => q(bze),
- q(1614) => q(bzf),
- q(1615) => q(bzg),
- q(1616) => q(bzh),
- q(1617) => q(bzi),
- q(1618) => q(bzj),
- q(1619) => q(bzk),
- q(1620) => q(bzl),
- q(1621) => q(bzm),
- q(1622) => q(bzn),
- q(1623) => q(bzo),
- q(1624) => q(bzp),
- q(1625) => q(bzq),
- q(1626) => q(bzr),
- q(1627) => q(bzs),
- q(1628) => q(bzt),
- q(1629) => q(bzu),
- q(1630) => q(bzv),
- q(1631) => q(bzw),
- q(1632) => q(bzx),
- q(1633) => q(bzy),
- q(1634) => q(bzz),
- q(1635) => q(caa),
- q(1636) => q(cab),
- q(1637) => q(cac),
- q(1638) => q(cae),
- q(1639) => q(caf),
- q(1640) => q(cag),
- q(1641) => q(cah),
- q(1642) => q(caj),
- q(1643) => q(cak),
- q(1644) => q(cal),
- q(1645) => q(cam),
- q(1646) => q(can),
- q(1647) => q(cao),
- q(1648) => q(cap),
- q(1649) => q(caq),
- q(1650) => q(cas),
- q(1651) => q(cav),
- q(1652) => q(caw),
- q(1653) => q(cax),
- q(1654) => q(cay),
- q(1655) => q(caz),
- q(1656) => q(cbb),
- q(1657) => q(cbc),
- q(1658) => q(cbd),
- q(1659) => q(cbe),
- q(1660) => q(cbg),
- q(1661) => q(cbh),
- q(1662) => q(cbi),
- q(1663) => q(cbj),
- q(1664) => q(cbk),
- q(1665) => q(cbl),
- q(1666) => q(cbn),
- q(1667) => q(cbo),
- q(1668) => q(cbr),
- q(1669) => q(cbs),
- q(1670) => q(cbt),
- q(1671) => q(cbu),
- q(1672) => q(cbv),
- q(1673) => q(cbw),
- q(1674) => q(cby),
- q(1675) => q(cca),
- q(1676) => q(ccc),
- q(1677) => q(ccd),
- q(1678) => q(cce),
- q(1679) => q(ccg),
- q(1680) => q(cch),
- q(1681) => q(ccj),
- q(1682) => q(ccl),
- q(1683) => q(ccm),
- q(1684) => q(cco),
- q(1685) => q(ccp),
- q(1686) => q(ccq),
- q(1687) => q(ccr),
- q(1688) => q(cda),
- q(1689) => q(cde),
- q(1690) => q(cdf),
- q(1691) => q(cdg),
- q(1692) => q(cdh),
- q(1693) => q(cdi),
- q(1694) => q(cdj),
- q(1695) => q(cdm),
- q(1696) => q(cdn),
- q(1697) => q(cdo),
- q(1698) => q(cdr),
- q(1699) => q(cds),
- q(1700) => q(cdy),
- q(1701) => q(cdz),
- q(1702) => q(cea),
- q(1703) => q(ceg),
- q(1704) => q(cen),
- q(1705) => q(cet),
- q(1706) => q(cfa),
- q(1707) => q(cfd),
- q(1708) => q(cfg),
- q(1709) => q(cfm),
- q(1710) => q(cga),
- q(1711) => q(cgc),
- q(1712) => q(cgg),
- q(1713) => q(cgk),
- q(1714) => q(chc),
- q(1715) => q(chd),
- q(1716) => q(chf),
- q(1717) => q(chh),
- q(1718) => q(chj),
- q(1719) => q(chl),
- q(1720) => q(chq),
- q(1721) => q(cht),
- q(1722) => q(chw),
- q(1723) => q(chx),
- q(1724) => q(chz),
- q(1725) => q(cia),
- q(1726) => q(cib),
- q(1727) => q(cic),
- q(1728) => q(cid),
- q(1729) => q(cie),
- q(1730) => q(cih),
- q(1731) => q(cik),
- q(1732) => q(cim),
- q(1733) => q(cin),
- q(1734) => q(cip),
- q(1735) => q(cir),
- q(1736) => q(ciw),
- q(1737) => q(ciy),
- q(1738) => q(cja),
- q(1739) => q(cje),
- q(1740) => q(cjh),
- q(1741) => q(cji),
- q(1742) => q(cjk),
- q(1743) => q(cjm),
- q(1744) => q(cjn),
- q(1745) => q(cjo),
- q(1746) => q(cjp),
- q(1747) => q(cjs),
- q(1748) => q(cjv),
- q(1749) => q(cjy),
- q(1750) => q(cka),
- q(1751) => q(ckb),
- q(1752) => q(ckh),
- q(1753) => q(ckl),
- q(1754) => q(cko),
- q(1755) => q(ckq),
- q(1756) => q(ckr),
- q(1757) => q(cks),
- q(1758) => q(ckt),
- q(1759) => q(cku),
- q(1760) => q(ckv),
- q(1761) => q(ckx),
- q(1762) => q(cky),
- q(1763) => q(ckz),
- q(1764) => q(cla),
- q(1765) => q(clc),
- q(1766) => q(cld),
- q(1767) => q(cle),
- q(1768) => q(clh),
- q(1769) => q(cli),
- q(1770) => q(clk),
- q(1771) => q(cll),
- q(1772) => q(clm),
- q(1773) => q(clo),
- q(1774) => q(clu),
- q(1775) => q(clw),
- q(1776) => q(cly),
- q(1777) => q(cma),
- q(1778) => q(cme),
- q(1779) => q(cmg),
- q(1780) => q(cmi),
- q(1781) => q(cml),
- q(1782) => q(cmm),
- q(1783) => q(cmn),
- q(1784) => q(cmo),
- q(1785) => q(cmr),
- q(1786) => q(cms),
- q(1787) => q(cmt),
- q(1788) => q(cna),
- q(1789) => q(cnb),
- q(1790) => q(cnc),
- q(1791) => q(cng),
- q(1792) => q(cnh),
- q(1793) => q(cni),
- q(1794) => q(cnk),
- q(1795) => q(cnl),
- q(1796) => q(cno),
- q(1797) => q(cns),
- q(1798) => q(cnt),
- q(1799) => q(cnu),
- q(1800) => q(cnw),
- q(1801) => q(cnx),
- q(1802) => q(coa),
- q(1803) => q(cob),
- q(1804) => q(coc),
- q(1805) => q(cod),
- q(1806) => q(coe),
- q(1807) => q(cof),
- q(1808) => q(cog),
- q(1809) => q(coh),
- q(1810) => q(coj),
- q(1811) => q(cok),
- q(1812) => q(col),
- q(1813) => q(com),
- q(1814) => q(con),
- q(1815) => q(coo),
- q(1816) => q(coq),
- q(1817) => q(cot),
- q(1818) => q(cou),
- q(1819) => q(cov),
- q(1820) => q(cow),
- q(1821) => q(cox),
- q(1822) => q(coy),
- q(1823) => q(coz),
- q(1824) => q(cpa),
- q(1825) => q(cpb),
- q(1826) => q(cpc),
- q(1827) => q(cpg),
- q(1828) => q(cpi),
- q(1829) => q(cpn),
- q(1830) => q(cps),
- q(1831) => q(cpu),
- q(1832) => q(cpx),
- q(1833) => q(cpy),
- q(1834) => q(cqd),
- q(1835) => q(cqu),
- q(1836) => q(cra),
- q(1837) => q(crb),
- q(1838) => q(crc),
- q(1839) => q(crd),
- q(1840) => q(crf),
- q(1841) => q(crg),
- q(1842) => q(cri),
- q(1843) => q(crj),
- q(1844) => q(crk),
- q(1845) => q(crl),
- q(1846) => q(crm),
- q(1847) => q(crn),
- q(1848) => q(cro),
- q(1849) => q(crq),
- q(1850) => q(crr),
- q(1851) => q(crs),
- q(1852) => q(crt),
- q(1853) => q(crv),
- q(1854) => q(crw),
- q(1855) => q(crx),
- q(1856) => q(cry),
- q(1857) => q(crz),
- q(1858) => q(csa),
- q(1859) => q(csc),
- q(1860) => q(csd),
- q(1861) => q(cse),
- q(1862) => q(csf),
- q(1863) => q(csg),
- q(1864) => q(csh),
- q(1865) => q(csi),
- q(1866) => q(csk),
- q(1867) => q(csl),
- q(1868) => q(csm),
- q(1869) => q(csn),
- q(1870) => q(cso),
- q(1871) => q(csq),
- q(1872) => q(csr),
- q(1873) => q(css),
- q(1874) => q(cst),
- q(1875) => q(csw),
- q(1876) => q(csy),
- q(1877) => q(csz),
- q(1878) => q(cta),
- q(1879) => q(ctc),
- q(1880) => q(ctd),
- q(1881) => q(cte),
- q(1882) => q(ctg),
- q(1883) => q(ctl),
- q(1884) => q(ctm),
- q(1885) => q(ctn),
- q(1886) => q(cto),
- q(1887) => q(ctp),
- q(1888) => q(cts),
- q(1889) => q(ctt),
- q(1890) => q(ctu),
- q(1891) => q(ctz),
- q(1892) => q(cua),
- q(1893) => q(cub),
- q(1894) => q(cuc),
- q(1895) => q(cug),
- q(1896) => q(cuh),
- q(1897) => q(cui),
- q(1898) => q(cuj),
- q(1899) => q(cuk),
- q(1900) => q(cul),
- q(1901) => q(cum),
- q(1902) => q(cuo),
- q(1903) => q(cup),
- q(1904) => q(cuq),
- q(1905) => q(cur),
- q(1906) => q(cut),
- q(1907) => q(cuu),
- q(1908) => q(cuv),
- q(1909) => q(cuw),
- q(1910) => q(cux),
- q(1911) => q(cvg),
- q(1912) => q(cvn),
- q(1913) => q(cwa),
- q(1914) => q(cwb),
- q(1915) => q(cwd),
- q(1916) => q(cwe),
- q(1917) => q(cwg),
- q(1918) => q(cwt),
- q(1919) => q(cya),
- q(1920) => q(cyb),
- q(1921) => q(cyo),
- q(1922) => q(czh),
- q(1923) => q(czk),
- q(1924) => q(czn),
- q(1925) => q(czo),
- q(1926) => q(czt),
- q(1927) => q(daa),
- q(1928) => q(dac),
- q(1929) => q(dad),
- q(1930) => q(dae),
- q(1931) => q(daf),
- q(1932) => q(dag),
- q(1933) => q(dah),
- q(1934) => q(dai),
- q(1935) => q(daj),
- q(1936) => q(dal),
- q(1937) => q(dam),
- q(1938) => q(dao),
- q(1939) => q(dap),
- q(1940) => q(daq),
- q(1941) => q(das),
- q(1942) => q(dau),
- q(1943) => q(dav),
- q(1944) => q(daw),
- q(1945) => q(dax),
- q(1946) => q(daz),
- q(1947) => q(dba),
- q(1948) => q(dbb),
- q(1949) => q(dbd),
- q(1950) => q(dbe),
- q(1951) => q(dbf),
- q(1952) => q(dbg),
- q(1953) => q(dbi),
- q(1954) => q(dbj),
- q(1955) => q(dbl),
- q(1956) => q(dbm),
- q(1957) => q(dbn),
- q(1958) => q(dbo),
- q(1959) => q(dbp),
- q(1960) => q(dbq),
- q(1961) => q(dbr),
- q(1962) => q(dbu),
- q(1963) => q(dbv),
- q(1964) => q(dby),
- q(1965) => q(dcc),
- q(1966) => q(dcr),
- q(1967) => q(ddd),
- q(1968) => q(dde),
- q(1969) => q(ddg),
- q(1970) => q(ddi),
- q(1971) => q(ddj),
- q(1972) => q(ddn),
- q(1973) => q(ddo),
- q(1974) => q(dds),
- q(1975) => q(ddw),
- q(1976) => q(dec),
- q(1977) => q(ded),
- q(1978) => q(dee),
- q(1979) => q(def),
- q(1980) => q(deg),
- q(1981) => q(deh),
- q(1982) => q(dei),
- q(1983) => q(dek),
- q(1984) => q(dem),
- q(1985) => q(dep),
- q(1986) => q(deq),
- q(1987) => q(der),
- q(1988) => q(des),
- q(1989) => q(dev),
- q(1990) => q(dez),
- q(1991) => q(dga),
- q(1992) => q(dgb),
- q(1993) => q(dgc),
- q(1994) => q(dgd),
- q(1995) => q(dge),
- q(1996) => q(dgg),
- q(1997) => q(dgh),
- q(1998) => q(dgi),
- q(1999) => q(dgk),
- q(2000) => q(dgn),
- q(2001) => q(dgo),
- q(2002) => q(dgs),
- q(2003) => q(dgu),
- q(2004) => q(dgx),
- q(2005) => q(dgz),
- q(2006) => q(dhd),
- q(2007) => q(dhg),
- q(2008) => q(dhi),
- q(2009) => q(dhl),
- q(2010) => q(dhm),
- q(2011) => q(dhn),
- q(2012) => q(dho),
- q(2013) => q(dhr),
- q(2014) => q(dhs),
- q(2015) => q(dhu),
- q(2016) => q(dhv),
- q(2017) => q(dhw),
- q(2018) => q(dia),
- q(2019) => q(dib),
- q(2020) => q(dic),
- q(2021) => q(did),
- q(2022) => q(dif),
- q(2023) => q(dig),
- q(2024) => q(dih),
- q(2025) => q(dii),
- q(2026) => q(dij),
- q(2027) => q(dik),
- q(2028) => q(dil),
- q(2029) => q(dim),
- q(2030) => q(dio),
- q(2031) => q(dip),
- q(2032) => q(diq),
- q(2033) => q(dir),
- q(2034) => q(dis),
- q(2035) => q(dit),
- q(2036) => q(diu),
- q(2037) => q(diw),
- q(2038) => q(dix),
- q(2039) => q(diy),
- q(2040) => q(diz),
- q(2041) => q(djb),
- q(2042) => q(djc),
- q(2043) => q(djd),
- q(2044) => q(dje),
- q(2045) => q(djf),
- q(2046) => q(dji),
- q(2047) => q(djj),
- q(2048) => q(djk),
- q(2049) => q(djl),
- q(2050) => q(djm),
- q(2051) => q(djn),
- q(2052) => q(djo),
- q(2053) => q(djr),
- q(2054) => q(dju),
- q(2055) => q(djw),
- q(2056) => q(dka),
- q(2057) => q(dkk),
- q(2058) => q(dkr),
- q(2059) => q(dks),
- q(2060) => q(dkx),
- q(2061) => q(dlg),
- q(2062) => q(dlm),
- q(2063) => q(dln),
- q(2064) => q(dma),
- q(2065) => q(dmb),
- q(2066) => q(dmc),
- q(2067) => q(dme),
- q(2068) => q(dmg),
- q(2069) => q(dmk),
- q(2070) => q(dml),
- q(2071) => q(dmm),
- q(2072) => q(dmo),
- q(2073) => q(dmr),
- q(2074) => q(dms),
- q(2075) => q(dmu),
- q(2076) => q(dmv),
- q(2077) => q(dmx),
- q(2078) => q(dmy),
- q(2079) => q(dna),
- q(2080) => q(dnd),
- q(2081) => q(dne),
- q(2082) => q(dng),
- q(2083) => q(dni),
- q(2084) => q(dnk),
- q(2085) => q(dnn),
- q(2086) => q(dnr),
- q(2087) => q(dnt),
- q(2088) => q(dnu),
- q(2089) => q(dnw),
- q(2090) => q(dny),
- q(2091) => q(doa),
- q(2092) => q(dob),
- q(2093) => q(doc),
- q(2094) => q(doe),
- q(2095) => q(dof),
- q(2096) => q(doh),
- q(2097) => q(dok),
- q(2098) => q(dol),
- q(2099) => q(don),
- q(2100) => q(doo),
- q(2101) => q(dop),
- q(2102) => q(doq),
- q(2103) => q(dor),
- q(2104) => q(dos),
- q(2105) => q(dot),
- q(2106) => q(dov),
- q(2107) => q(dow),
- q(2108) => q(dox),
- q(2109) => q(doy),
- q(2110) => q(doz),
- q(2111) => q(dpp),
- q(2112) => q(drb),
- q(2113) => q(drc),
- q(2114) => q(drd),
- q(2115) => q(dre),
- q(2116) => q(drg),
- q(2117) => q(dri),
- q(2118) => q(drl),
- q(2119) => q(drn),
- q(2120) => q(dro),
- q(2121) => q(drq),
- q(2122) => q(drr),
- q(2123) => q(drs),
- q(2124) => q(drt),
- q(2125) => q(dru),
- q(2126) => q(dry),
- q(2127) => q(dse),
- q(2128) => q(dsh),
- q(2129) => q(dsi),
- q(2130) => q(dsl),
- q(2131) => q(dsn),
- q(2132) => q(dso),
- q(2133) => q(dsq),
- q(2134) => q(dta),
- q(2135) => q(dtb),
- q(2136) => q(dtd),
- q(2137) => q(dti),
- q(2138) => q(dtk),
- q(2139) => q(dtm),
- q(2140) => q(dtp),
- q(2141) => q(dtr),
- q(2142) => q(dts),
- q(2143) => q(dtt),
- q(2144) => q(dtu),
- q(2145) => q(dub),
- q(2146) => q(duc),
- q(2147) => q(dud),
- q(2148) => q(due),
- q(2149) => q(duf),
- q(2150) => q(dug),
- q(2151) => q(duh),
- q(2152) => q(dui),
- q(2153) => q(duj),
- q(2154) => q(duk),
- q(2155) => q(dul),
- q(2156) => q(dun),
- q(2157) => q(duo),
- q(2158) => q(dup),
- q(2159) => q(duq),
- q(2160) => q(dur),
- q(2161) => q(dus),
- q(2162) => q(duu),
- q(2163) => q(duv),
- q(2164) => q(duw),
- q(2165) => q(dux),
- q(2166) => q(duy),
- q(2167) => q(duz),
- q(2168) => q(dva),
- q(2169) => q(dwa),
- q(2170) => q(dwl),
- q(2171) => q(dwr),
- q(2172) => q(dws),
- q(2173) => q(dww),
- q(2174) => q(dya),
- q(2175) => q(dyb),
- q(2176) => q(dyd),
- q(2177) => q(dyg),
- q(2178) => q(dyi),
- q(2179) => q(dym),
- q(2180) => q(dyn),
- q(2181) => q(dyo),
- q(2182) => q(dyy),
- q(2183) => q(dza),
- q(2184) => q(dzd),
- q(2185) => q(dzg),
- q(2186) => q(dzl),
- q(2187) => q(dzn),
- q(2188) => q(ebg),
- q(2189) => q(ebk),
- q(2190) => q(ebo),
- q(2191) => q(ebr),
- q(2192) => q(ebu),
- q(2193) => q(ecr),
- q(2194) => q(ecs),
- q(2195) => q(ecy),
- q(2196) => q(eee),
- q(2197) => q(efa),
- q(2198) => q(efe),
- q(2199) => q(ega),
- q(2200) => q(egl),
- q(2201) => q(ego),
- q(2202) => q(ehu),
- q(2203) => q(eip),
- q(2204) => q(eit),
- q(2205) => q(eiv),
- q(2206) => q(eja),
- q(2207) => q(eke),
- q(2208) => q(ekg),
- q(2209) => q(eki),
- q(2210) => q(ekk),
- q(2211) => q(ekl),
- q(2212) => q(ekm),
- q(2213) => q(eko),
- q(2214) => q(ekp),
- q(2215) => q(ekr),
- q(2216) => q(eky),
- q(2217) => q(ele),
- q(2218) => q(elh),
- q(2219) => q(eli),
- q(2220) => q(elk),
- q(2221) => q(elm),
- q(2222) => q(elo),
- q(2223) => q(elp),
- q(2224) => q(elu),
- q(2225) => q(ema),
- q(2226) => q(emb),
- q(2227) => q(eme),
- q(2228) => q(emg),
- q(2229) => q(emi),
- q(2230) => q(emk),
- q(2231) => q(emm),
- q(2232) => q(emn),
- q(2233) => q(emo),
- q(2234) => q(emp),
- q(2235) => q(ems),
- q(2236) => q(emu),
- q(2237) => q(emw),
- q(2238) => q(emx),
- q(2239) => q(emy),
- q(2240) => q(ena),
- q(2241) => q(enb),
- q(2242) => q(enc),
- q(2243) => q(end),
- q(2244) => q(enf),
- q(2245) => q(enh),
- q(2246) => q(enn),
- q(2247) => q(eno),
- q(2248) => q(enq),
- q(2249) => q(enr),
- q(2250) => q(enu),
- q(2251) => q(env),
- q(2252) => q(enw),
- q(2253) => q(eot),
- q(2254) => q(epi),
- q(2255) => q(era),
- q(2256) => q(erg),
- q(2257) => q(erh),
- q(2258) => q(eri),
- q(2259) => q(erk),
- q(2260) => q(ero),
- q(2261) => q(err),
- q(2262) => q(ers),
- q(2263) => q(ert),
- q(2264) => q(erw),
- q(2265) => q(ese),
- q(2266) => q(esh),
- q(2267) => q(esi),
- q(2268) => q(esk),
- q(2269) => q(esl),
- q(2270) => q(esm),
- q(2271) => q(esn),
- q(2272) => q(eso),
- q(2273) => q(esq),
- q(2274) => q(ess),
- q(2275) => q(esu),
- q(2276) => q(etb),
- q(2277) => q(etc),
- q(2278) => q(eth),
- q(2279) => q(etn),
- q(2280) => q(eto),
- q(2281) => q(etr),
- q(2282) => q(ets),
- q(2283) => q(ett),
- q(2284) => q(etu),
- q(2285) => q(etx),
- q(2286) => q(etz),
- q(2287) => q(eve),
- q(2288) => q(evh),
- q(2289) => q(evn),
- q(2290) => q(ext),
- q(2291) => q(eya),
- q(2292) => q(eyo),
- q(2293) => q(eze),
- q(2294) => q(faa),
- q(2295) => q(fab),
- q(2296) => q(fad),
- q(2297) => q(faf),
- q(2298) => q(fag),
- q(2299) => q(fah),
- q(2300) => q(fai),
- q(2301) => q(faj),
- q(2302) => q(fak),
- q(2303) => q(fal),
- q(2304) => q(fam),
- q(2305) => q(fap),
- q(2306) => q(far),
- q(2307) => q(fau),
- q(2308) => q(fax),
- q(2309) => q(fay),
- q(2310) => q(faz),
- q(2311) => q(fbl),
- q(2312) => q(fcs),
- q(2313) => q(fer),
- q(2314) => q(ffi),
- q(2315) => q(ffm),
- q(2316) => q(fgr),
- q(2317) => q(fia),
- q(2318) => q(fie),
- q(2319) => q(fip),
- q(2320) => q(fir),
- q(2321) => q(fit),
- q(2322) => q(fiw),
- q(2323) => q(fkv),
- q(2324) => q(fla),
- q(2325) => q(flh),
- q(2326) => q(fli),
- q(2327) => q(fll),
- q(2328) => q(fln),
- q(2329) => q(flr),
- q(2330) => q(fly),
- q(2331) => q(fmp),
- q(2332) => q(fmu),
- q(2333) => q(fng),
- q(2334) => q(fni),
- q(2335) => q(fod),
- q(2336) => q(foi),
- q(2337) => q(fom),
- q(2338) => q(for),
- q(2339) => q(fos),
- q(2340) => q(fpe),
- q(2341) => q(fqs),
- q(2342) => q(frc),
- q(2343) => q(frd),
- q(2344) => q(frk),
- q(2345) => q(frp),
- q(2346) => q(frq),
- q(2347) => q(frt),
- q(2348) => q(fse),
- q(2349) => q(fsl),
- q(2350) => q(fss),
- q(2351) => q(fub),
- q(2352) => q(fuc),
- q(2353) => q(fud),
- q(2354) => q(fue),
- q(2355) => q(fuf),
- q(2356) => q(fuh),
- q(2357) => q(fui),
- q(2358) => q(fuj),
- q(2359) => q(fum),
- q(2360) => q(fun),
- q(2361) => q(fuq),
- q(2362) => q(fut),
- q(2363) => q(fuu),
- q(2364) => q(fuv),
- q(2365) => q(fuy),
- q(2366) => q(fvr),
- q(2367) => q(fwa),
- q(2368) => q(fwe),
- q(2369) => q(gab),
- q(2370) => q(gac),
- q(2371) => q(gad),
- q(2372) => q(gae),
- q(2373) => q(gaf),
- q(2374) => q(gag),
- q(2375) => q(gah),
- q(2376) => q(gai),
- q(2377) => q(gaj),
- q(2378) => q(gak),
- q(2379) => q(gal),
- q(2380) => q(gam),
- q(2381) => q(gan),
- q(2382) => q(gao),
- q(2383) => q(gap),
- q(2384) => q(gaq),
- q(2385) => q(gar),
- q(2386) => q(gas),
- q(2387) => q(gat),
- q(2388) => q(gau),
- q(2389) => q(gaw),
- q(2390) => q(gax),
- q(2391) => q(gaz),
- q(2392) => q(gbb),
- q(2393) => q(gbc),
- q(2394) => q(gbd),
- q(2395) => q(gbe),
- q(2396) => q(gbf),
- q(2397) => q(gbg),
- q(2398) => q(gbh),
- q(2399) => q(gbi),
- q(2400) => q(gbj),
- q(2401) => q(gbk),
- q(2402) => q(gbl),
- q(2403) => q(gbm),
- q(2404) => q(gbn),
- q(2405) => q(gbo),
- q(2406) => q(gbp),
- q(2407) => q(gbq),
- q(2408) => q(gbr),
- q(2409) => q(gbs),
- q(2410) => q(gbu),
- q(2411) => q(gbv),
- q(2412) => q(gbx),
- q(2413) => q(gby),
- q(2414) => q(gbz),
- q(2415) => q(gcc),
- q(2416) => q(gcd),
- q(2417) => q(gce),
- q(2418) => q(gcf),
- q(2419) => q(gcl),
- q(2420) => q(gcn),
- q(2421) => q(gcr),
- q(2422) => q(gct),
- q(2423) => q(gda),
- q(2424) => q(gdb),
- q(2425) => q(gdc),
- q(2426) => q(gdd),
- q(2427) => q(gde),
- q(2428) => q(gdf),
- q(2429) => q(gdg),
- q(2430) => q(gdh),
- q(2431) => q(gdi),
- q(2432) => q(gdj),
- q(2433) => q(gdk),
- q(2434) => q(gdl),
- q(2435) => q(gdm),
- q(2436) => q(gdn),
- q(2437) => q(gdo),
- q(2438) => q(gdq),
- q(2439) => q(gdr),
- q(2440) => q(gdu),
- q(2441) => q(gdx),
- q(2442) => q(gea),
- q(2443) => q(geb),
- q(2444) => q(gec),
- q(2445) => q(ged),
- q(2446) => q(geg),
- q(2447) => q(geh),
- q(2448) => q(gei),
- q(2449) => q(gej),
- q(2450) => q(gek),
- q(2451) => q(gel),
- q(2452) => q(geq),
- q(2453) => q(ges),
- q(2454) => q(gew),
- q(2455) => q(gex),
- q(2456) => q(gey),
- q(2457) => q(gfk),
- q(2458) => q(gft),
- q(2459) => q(gga),
- q(2460) => q(ggb),
- q(2461) => q(ggd),
- q(2462) => q(gge),
- q(2463) => q(ggg),
- q(2464) => q(ggk),
- q(2465) => q(ggl),
- q(2466) => q(ggn),
- q(2467) => q(ggo),
- q(2468) => q(ggr),
- q(2469) => q(ggt),
- q(2470) => q(ggu),
- q(2471) => q(ggw),
- q(2472) => q(gha),
- q(2473) => q(ghc),
- q(2474) => q(ghe),
- q(2475) => q(ghh),
- q(2476) => q(ghk),
- q(2477) => q(ghl),
- q(2478) => q(ghn),
- q(2479) => q(gho),
- q(2480) => q(ghr),
- q(2481) => q(ghs),
- q(2482) => q(ght),
- q(2483) => q(gia),
- q(2484) => q(gib),
- q(2485) => q(gic),
- q(2486) => q(gid),
- q(2487) => q(gig),
- q(2488) => q(gim),
- q(2489) => q(gin),
- q(2490) => q(gio),
- q(2491) => q(gip),
- q(2492) => q(giq),
- q(2493) => q(gir),
- q(2494) => q(gis),
- q(2495) => q(git),
- q(2496) => q(giw),
- q(2497) => q(gix),
- q(2498) => q(giy),
- q(2499) => q(giz),
- q(2500) => q(gji),
- q(2501) => q(gjk),
- q(2502) => q(gjn),
- q(2503) => q(gju),
- q(2504) => q(gka),
- q(2505) => q(gke),
- q(2506) => q(gkn),
- q(2507) => q(gkp),
- q(2508) => q(glc),
- q(2509) => q(gld),
- q(2510) => q(glh),
- q(2511) => q(gli),
- q(2512) => q(glj),
- q(2513) => q(glk),
- q(2514) => q(glo),
- q(2515) => q(glr),
- q(2516) => q(glu),
- q(2517) => q(glw),
- q(2518) => q(gly),
- q(2519) => q(gma),
- q(2520) => q(gmb),
- q(2521) => q(gmd),
- q(2522) => q(gml),
- q(2523) => q(gmm),
- q(2524) => q(gmn),
- q(2525) => q(gmu),
- q(2526) => q(gmv),
- q(2527) => q(gmx),
- q(2528) => q(gmy),
- q(2529) => q(gna),
- q(2530) => q(gnb),
- q(2531) => q(gnc),
- q(2532) => q(gnd),
- q(2533) => q(gne),
- q(2534) => q(gng),
- q(2535) => q(gnh),
- q(2536) => q(gni),
- q(2537) => q(gnk),
- q(2538) => q(gnl),
- q(2539) => q(gnm),
- q(2540) => q(gnn),
- q(2541) => q(gno),
- q(2542) => q(gnq),
- q(2543) => q(gnr),
- q(2544) => q(gnt),
- q(2545) => q(gnu),
- q(2546) => q(gnw),
- q(2547) => q(gnz),
- q(2548) => q(goa),
- q(2549) => q(gob),
- q(2550) => q(goc),
- q(2551) => q(god),
- q(2552) => q(goe),
- q(2553) => q(gof),
- q(2554) => q(gog),
- q(2555) => q(goi),
- q(2556) => q(goj),
- q(2557) => q(gok),
- q(2558) => q(gol),
- q(2559) => q(gom),
- q(2560) => q(goo),
- q(2561) => q(gop),
- q(2562) => q(goq),
- q(2563) => q(gos),
- q(2564) => q(gou),
- q(2565) => q(gow),
- q(2566) => q(gox),
- q(2567) => q(goy),
- q(2568) => q(goz),
- q(2569) => q(gpa),
- q(2570) => q(gpn),
- q(2571) => q(gqa),
- q(2572) => q(gqi),
- q(2573) => q(gqn),
- q(2574) => q(gqr),
- q(2575) => q(gra),
- q(2576) => q(grd),
- q(2577) => q(grg),
- q(2578) => q(grh),
- q(2579) => q(gri),
- q(2580) => q(grj),
- q(2581) => q(grm),
- q(2582) => q(gro),
- q(2583) => q(grq),
- q(2584) => q(grr),
- q(2585) => q(grs),
- q(2586) => q(grt),
- q(2587) => q(gru),
- q(2588) => q(grv),
- q(2589) => q(grw),
- q(2590) => q(grx),
- q(2591) => q(gry),
- q(2592) => q(grz),
- q(2593) => q(gse),
- q(2594) => q(gsg),
- q(2595) => q(gsl),
- q(2596) => q(gsm),
- q(2597) => q(gsn),
- q(2598) => q(gso),
- q(2599) => q(gsp),
- q(2600) => q(gss),
- q(2601) => q(gta),
- q(2602) => q(gti),
- q(2603) => q(gua),
- q(2604) => q(gub),
- q(2605) => q(guc),
- q(2606) => q(gud),
- q(2607) => q(gue),
- q(2608) => q(guf),
- q(2609) => q(gug),
- q(2610) => q(guh),
- q(2611) => q(gui),
- q(2612) => q(guk),
- q(2613) => q(gul),
- q(2614) => q(gum),
- q(2615) => q(gun),
- q(2616) => q(guo),
- q(2617) => q(gup),
- q(2618) => q(yif),
- q(2619) => q(gur),
- q(2620) => q(gus),
- q(2621) => q(gut),
- q(2622) => q(guu),
- q(2623) => q(guv),
- q(2624) => q(guw),
- q(2625) => q(gux),
- q(2626) => q(guz),
- q(2627) => q(gva),
- q(2628) => q(gvc),
- q(2629) => q(gve),
- q(2630) => q(gvf),
- q(2631) => q(gvj),
- q(2632) => q(gvl),
- q(2633) => q(gvm),
- q(2634) => q(gvn),
- q(2635) => q(gvo),
- q(2636) => q(gvp),
- q(2637) => q(gvr),
- q(2638) => q(gvs),
- q(2639) => q(gvy),
- q(2640) => q(gwa),
- q(2641) => q(gwb),
- q(2642) => q(gwc),
- q(2643) => q(gwd),
- q(2644) => q(gwe),
- q(2645) => q(gwf),
- q(2646) => q(gwg),
- q(2647) => q(gwj),
- q(2648) => q(gwn),
- q(2649) => q(gwr),
- q(2650) => q(gwt),
- q(2651) => q(gwu),
- q(2652) => q(gww),
- q(2653) => q(gwx),
- q(2654) => q(gxx),
- q(2655) => q(gya),
- q(2656) => q(gyb),
- q(2657) => q(gyd),
- q(2658) => q(gye),
- q(2659) => q(gyf),
- q(2660) => q(gyg),
- q(2661) => q(gyi),
- q(2662) => q(gyl),
- q(2663) => q(gym),
- q(2664) => q(gyn),
- q(2665) => q(gyr),
- q(2666) => q(gyy),
- q(2667) => q(gza),
- q(2668) => q(gzi),
- q(2669) => q(gzn),
- q(2670) => q(haa),
- q(2671) => q(hab),
- q(2672) => q(hac),
- q(2673) => q(had),
- q(2674) => q(hae),
- q(2675) => q(haf),
- q(2676) => q(hag),
- q(2677) => q(hah),
- q(2678) => q(haj),
- q(2679) => q(hak),
- q(2680) => q(hal),
- q(2681) => q(ham),
- q(2682) => q(han),
- q(2683) => q(hao),
- q(2684) => q(hap),
- q(2685) => q(haq),
- q(2686) => q(har),
- q(2687) => q(has),
- q(2688) => q(hav),
- q(2689) => q(hax),
- q(2690) => q(hay),
- q(2691) => q(haz),
- q(2692) => q(hba),
- q(2693) => q(hbb),
- q(2694) => q(hbn),
- q(2695) => q(hbo),
- q(2696) => q(hbu),
- q(2697) => q(hca),
- q(2698) => q(hch),
- q(2699) => q(hdn),
- q(2700) => q(hds),
- q(2701) => q(hdy),
- q(2702) => q(hea),
- q(2703) => q(hed),
- q(2704) => q(heg),
- q(2705) => q(heh),
- q(2706) => q(hei),
- q(2707) => q(hem),
- q(2708) => q(hgm),
- q(2709) => q(hgw),
- q(2710) => q(hhi),
- q(2711) => q(hhr),
- q(2712) => q(hhy),
- q(2713) => q(hia),
- q(2714) => q(hib),
- q(2715) => q(hid),
- q(2716) => q(hif),
- q(2717) => q(hig),
- q(2718) => q(hih),
- q(2719) => q(hii),
- q(2720) => q(hij),
- q(2721) => q(hik),
- q(2722) => q(hio),
- q(2723) => q(hir),
- q(2724) => q(hiw),
- q(2725) => q(hix),
- q(2726) => q(hji),
- q(2727) => q(hka),
- q(2728) => q(hke),
- q(2729) => q(hkk),
- q(2730) => q(hks),
- q(2731) => q(hla),
- q(2732) => q(hlb),
- q(2733) => q(hld),
- q(2734) => q(hle),
- q(2735) => q(hlt),
- q(2736) => q(hlu),
- q(2737) => q(hma),
- q(2738) => q(hmb),
- q(2739) => q(hmc),
- q(2740) => q(hmd),
- q(2741) => q(hme),
- q(2742) => q(hmf),
- q(2743) => q(hmg),
- q(2744) => q(hmh),
- q(2745) => q(hmi),
- q(2746) => q(hmj),
- q(2747) => q(hmk),
- q(2748) => q(hml),
- q(2749) => q(hmm),
- q(2750) => q(hmp),
- q(2751) => q(hmq),
- q(2752) => q(hmr),
- q(2753) => q(hms),
- q(2754) => q(hmt),
- q(2755) => q(hmu),
- q(2756) => q(hmv),
- q(2757) => q(hmw),
- q(2758) => q(hmy),
- q(2759) => q(hmz),
- q(2760) => q(hna),
- q(2761) => q(hnd),
- q(2762) => q(hne),
- q(2763) => q(hnh),
- q(2764) => q(hni),
- q(2765) => q(hnj),
- q(2766) => q(hnn),
- q(2767) => q(hno),
- q(2768) => q(hns),
- q(2769) => q(hnu),
- q(2770) => q(hoa),
- q(2771) => q(hob),
- q(2772) => q(hoc),
- q(2773) => q(hod),
- q(2774) => q(hoe),
- q(2775) => q(hoh),
- q(2776) => q(hoi),
- q(2777) => q(hoj),
- q(2778) => q(hol),
- q(2779) => q(hom),
- q(2780) => q(hoo),
- q(2781) => q(hop),
- q(2782) => q(hor),
- q(2783) => q(hos),
- q(2784) => q(hot),
- q(2785) => q(hov),
- q(2786) => q(how),
- q(2787) => q(hoy),
- q(2788) => q(hoz),
- q(2789) => q(hpo),
- q(2790) => q(hps),
- q(2791) => q(hra),
- q(2792) => q(hre),
- q(2793) => q(hrk),
- q(2794) => q(hrm),
- q(2795) => q(hro),
- q(2796) => q(hrr),
- q(2797) => q(hrt),
- q(2798) => q(hru),
- q(2799) => q(hrx),
- q(2800) => q(hrz),
- q(2801) => q(hsh),
- q(2802) => q(hsl),
- q(2803) => q(hsn),
- q(2804) => q(hss),
- q(2805) => q(hti),
- q(2806) => q(hto),
- q(2807) => q(hts),
- q(2808) => q(htu),
- q(2809) => q(htx),
- q(2810) => q(hub),
- q(2811) => q(huc),
- q(2812) => q(hud),
- q(2813) => q(hue),
- q(2814) => q(huf),
- q(2815) => q(hug),
- q(2816) => q(huh),
- q(2817) => q(hui),
- q(2818) => q(huj),
- q(2819) => q(huk),
- q(2820) => q(hul),
- q(2821) => q(hum),
- q(2822) => q(huo),
- q(2823) => q(huq),
- q(2824) => q(hur),
- q(2825) => q(hus),
- q(2826) => q(hut),
- q(2827) => q(huu),
- q(2828) => q(huv),
- q(2829) => q(huw),
- q(2830) => q(hux),
- q(2831) => q(huy),
- q(2832) => q(huz),
- q(2833) => q(hvc),
- q(2834) => q(hve),
- q(2835) => q(hvk),
- q(2836) => q(hvn),
- q(2837) => q(hvv),
- q(2838) => q(hwa),
- q(2839) => q(hwc),
- q(2840) => q(hwo),
- q(2841) => q(hya),
- q(2842) => q(iai),
- q(2843) => q(ian),
- q(2844) => q(iap),
- q(2845) => q(iar),
- q(2846) => q(ibb),
- q(2847) => q(ibd),
- q(2848) => q(ibe),
- q(2849) => q(ibg),
- q(2850) => q(ibi),
- q(2851) => q(ibl),
- q(2852) => q(ibm),
- q(2853) => q(ibn),
- q(2854) => q(ibr),
- q(2855) => q(ibu),
- q(2856) => q(iby),
- q(2857) => q(ica),
- q(2858) => q(ich),
- q(2859) => q(icl),
- q(2860) => q(icr),
- q(2861) => q(ida),
- q(2862) => q(idb),
- q(2863) => q(idc),
- q(2864) => q(idd),
- q(2865) => q(ide),
- q(2866) => q(idi),
- q(2867) => q(idr),
- q(2868) => q(ids),
- q(2869) => q(idt),
- q(2870) => q(idu),
- q(2871) => q(ifa),
- q(2872) => q(ifb),
- q(2873) => q(ife),
- q(2874) => q(iff),
- q(2875) => q(ifk),
- q(2876) => q(ifm),
- q(2877) => q(ifu),
- q(2878) => q(ify),
- q(2879) => q(igb),
- q(2880) => q(ige),
- q(2881) => q(igg),
- q(2882) => q(igl),
- q(2883) => q(igm),
- q(2884) => q(ign),
- q(2885) => q(igo),
- q(2886) => q(igs),
- q(2887) => q(igw),
- q(2888) => q(ihb),
- q(2889) => q(ihi),
- q(2890) => q(ihp),
- q(2891) => q(ijc),
- q(2892) => q(ije),
- q(2893) => q(ijj),
- q(2894) => q(ijn),
- q(2895) => q(ijs),
- q(2896) => q(ike),
- q(2897) => q(iki),
- q(2898) => q(ikk),
- q(2899) => q(ikl),
- q(2900) => q(iko),
- q(2901) => q(ikp),
- q(2902) => q(ikt),
- q(2903) => q(ikv),
- q(2904) => q(ikw),
- q(2905) => q(ikx),
- q(2906) => q(ikz),
- q(2907) => q(ila),
- q(2908) => q(ilb),
- q(2909) => q(ilg),
- q(2910) => q(ili),
- q(2911) => q(ilk),
- q(2912) => q(ill),
- q(2913) => q(ils),
- q(2914) => q(ilu),
- q(2915) => q(ilv),
- q(2916) => q(ilw),
- q(2917) => q(ima),
- q(2918) => q(ime),
- q(2919) => q(imi),
- q(2920) => q(iml),
- q(2921) => q(imn),
- q(2922) => q(imo),
- q(2923) => q(imr),
- q(2924) => q(ims),
- q(2925) => q(imy),
- q(2926) => q(inb),
- q(2927) => q(ing),
- q(2928) => q(inj),
- q(2929) => q(inl),
- q(2930) => q(inm),
- q(2931) => q(inn),
- q(2932) => q(ino),
- q(2933) => q(inp),
- q(2934) => q(ins),
- q(2935) => q(int),
- q(2936) => q(inz),
- q(2937) => q(ior),
- q(2938) => q(iou),
- q(2939) => q(iow),
- q(2940) => q(ipi),
- q(2941) => q(ipo),
- q(2942) => q(iqu),
- q(2943) => q(ire),
- q(2944) => q(irh),
- q(2945) => q(iri),
- q(2946) => q(irk),
- q(2947) => q(irn),
- q(2948) => q(irr),
- q(2949) => q(iru),
- q(2950) => q(irx),
- q(2951) => q(iry),
- q(2952) => q(isa),
- q(2953) => q(isc),
- q(2954) => q(isd),
- q(2955) => q(ise),
- q(2956) => q(isg),
- q(2957) => q(ish),
- q(2958) => q(isi),
- q(2959) => q(isk),
- q(2960) => q(ism),
- q(2961) => q(isn),
- q(2962) => q(iso),
- q(2963) => q(isr),
- q(2964) => q(ist),
- q(2965) => q(isu),
- q(2966) => q(itb),
- q(2967) => q(ite),
- q(2968) => q(iti),
- q(2969) => q(itk),
- q(2970) => q(itl),
- q(2971) => q(itm),
- q(2972) => q(ito),
- q(2973) => q(itr),
- q(2974) => q(its),
- q(2975) => q(itt),
- q(2976) => q(itv),
- q(2977) => q(itw),
- q(2978) => q(itx),
- q(2979) => q(ity),
- q(2980) => q(itz),
- q(2981) => q(ium),
- q(2982) => q(ivb),
- q(2983) => q(ivv),
- q(2984) => q(iwk),
- q(2985) => q(iwm),
- q(2986) => q(iwo),
- q(2987) => q(iws),
- q(2988) => q(ixc),
- q(2989) => q(ixl),
- q(2990) => q(iya),
- q(2991) => q(iyo),
- q(2992) => q(iyx),
- q(2993) => q(izh),
- q(2994) => q(izi),
- q(2995) => q(izr),
- q(2996) => q(jaa),
- q(2997) => q(jab),
- q(2998) => q(jac),
- q(2999) => q(jad),
- q(3000) => q(jae),
- q(3001) => q(jaf),
- q(3002) => q(jah),
- q(3003) => q(jaj),
- q(3004) => q(jak),
- q(3005) => q(jal),
- q(3006) => q(jam),
- q(3007) => q(jao),
- q(3008) => q(jaq),
- q(3009) => q(jar),
- q(3010) => q(jas),
- q(3011) => q(jat),
- q(3012) => q(jau),
- q(3013) => q(jax),
- q(3014) => q(jay),
- q(3015) => q(jaz),
- q(3016) => q(jbe),
- q(3017) => q(jbj),
- q(3018) => q(jbn),
- q(3019) => q(jbr),
- q(3020) => q(jbt),
- q(3021) => q(jbu),
- q(3022) => q(jcs),
- q(3023) => q(jct),
- q(3024) => q(jda),
- q(3025) => q(jdg),
- q(3026) => q(jdt),
- q(3027) => q(jeb),
- q(3028) => q(jee),
- q(3029) => q(jeg),
- q(3030) => q(jeh),
- q(3031) => q(jei),
- q(3032) => q(jek),
- q(3033) => q(jel),
- q(3034) => q(jen),
- q(3035) => q(jer),
- q(3036) => q(jet),
- q(3037) => q(jeu),
- q(3038) => q(jgb),
- q(3039) => q(jge),
- q(3040) => q(jgo),
- q(3041) => q(jhi),
- q(3042) => q(jhs),
- q(3043) => q(jia),
- q(3044) => q(jib),
- q(3045) => q(jic),
- q(3046) => q(jid),
- q(3047) => q(jie),
- q(3048) => q(jig),
- q(3049) => q(jih),
- q(3050) => q(jii),
- q(3051) => q(jil),
- q(3052) => q(jim),
- q(3053) => q(jio),
- q(3054) => q(jiq),
- q(3055) => q(jit),
- q(3056) => q(jiu),
- q(3057) => q(jiv),
- q(3058) => q(jiy),
- q(3059) => q(jko),
- q(3060) => q(jku),
- q(3061) => q(jle),
- q(3062) => q(jls),
- q(3063) => q(jma),
- q(3064) => q(jmb),
- q(3065) => q(jmc),
- q(3066) => q(jmd),
- q(3067) => q(jmi),
- q(3068) => q(jml),
- q(3069) => q(jmn),
- q(3070) => q(jmr),
- q(3071) => q(jms),
- q(3072) => q(jmx),
- q(3073) => q(jna),
- q(3074) => q(jnd),
- q(3075) => q(jng),
- q(3076) => q(jni),
- q(3077) => q(jnj),
- q(3078) => q(jnl),
- q(3079) => q(jns),
- q(3080) => q(job),
- q(3081) => q(jod),
- q(3082) => q(jor),
- q(3083) => q(jos),
- q(3084) => q(jow),
- q(3085) => q(jpa),
- q(3086) => q(jqr),
- q(3087) => q(jra),
- q(3088) => q(jrr),
- q(3089) => q(jrt),
- q(3090) => q(jru),
- q(3091) => q(jsl),
- q(3092) => q(jua),
- q(3093) => q(jub),
- q(3094) => q(juc),
- q(3095) => q(jud),
- q(3096) => q(juh),
- q(3097) => q(juk),
- q(3098) => q(jul),
- q(3099) => q(jum),
- q(3100) => q(jun),
- q(3101) => q(juo),
- q(3102) => q(jup),
- q(3103) => q(jur),
- q(3104) => q(jus),
- q(3105) => q(jut),
- q(3106) => q(juu),
- q(3107) => q(juw),
- q(3108) => q(juy),
- q(3109) => q(jvd),
- q(3110) => q(jvn),
- q(3111) => q(jwi),
- q(3112) => q(jya),
- q(3113) => q(jye),
- q(3114) => q(jyy),
- q(3115) => q(kad),
- q(3116) => q(kae),
- q(3117) => q(kaf),
- q(3118) => q(kag),
- q(3119) => q(kah),
- q(3120) => q(kai),
- q(3121) => q(kaj),
- q(3122) => q(kak),
- q(3123) => q(kao),
- q(3124) => q(kap),
- q(3125) => q(kaq),
- q(3126) => q(kav),
- q(3127) => q(kax),
- q(3128) => q(kay),
- q(3129) => q(kba),
- q(3130) => q(kbb),
- q(3131) => q(kbc),
- q(3132) => q(kbe),
- q(3133) => q(kbf),
- q(3134) => q(kbg),
- q(3135) => q(kbh),
- q(3136) => q(kbi),
- q(3137) => q(kbj),
- q(3138) => q(kbk),
- q(3139) => q(kbl),
- q(3140) => q(kbm),
- q(3141) => q(kbn),
- q(3142) => q(kbo),
- q(3143) => q(kbp),
- q(3144) => q(kbq),
- q(3145) => q(kbr),
- q(3146) => q(kbs),
- q(3147) => q(kbt),
- q(3148) => q(kbu),
- q(3149) => q(kbv),
- q(3150) => q(kbw),
- q(3151) => q(kbx),
- q(3152) => q(kby),
- q(3153) => q(kbz),
- q(3154) => q(kca),
- q(3155) => q(kcb),
- q(3156) => q(kcc),
- q(3157) => q(kcd),
- q(3158) => q(kce),
- q(3159) => q(kcf),
- q(3160) => q(kcg),
- q(3161) => q(kch),
- q(3162) => q(kci),
- q(3163) => q(kcj),
- q(3164) => q(kck),
- q(3165) => q(kcl),
- q(3166) => q(kcm),
- q(3167) => q(kcn),
- q(3168) => q(kco),
- q(3169) => q(kcp),
- q(3170) => q(kcq),
- q(3171) => q(kcr),
- q(3172) => q(kcs),
- q(3173) => q(kct),
- q(3174) => q(kcu),
- q(3175) => q(kcv),
- q(3176) => q(kcw),
- q(3177) => q(kcx),
- q(3178) => q(kcy),
- q(3179) => q(kcz),
- q(3180) => q(kda),
- q(3181) => q(kdc),
- q(3182) => q(kdd),
- q(3183) => q(kde),
- q(3184) => q(kdf),
- q(3185) => q(kdg),
- q(3186) => q(kdh),
- q(3187) => q(kdi),
- q(3188) => q(kdj),
- q(3189) => q(kdk),
- q(3190) => q(kdl),
- q(3191) => q(kdm),
- q(3192) => q(kdn),
- q(3193) => q(kdp),
- q(3194) => q(kdq),
- q(3195) => q(kdr),
- q(3196) => q(kdt),
- q(3197) => q(kdu),
- q(3198) => q(kdv),
- q(3199) => q(kdw),
- q(3200) => q(kdx),
- q(3201) => q(kdy),
- q(3202) => q(kdz),
- q(3203) => q(kea),
- q(3204) => q(keb),
- q(3205) => q(kec),
- q(3206) => q(ked),
- q(3207) => q(kee),
- q(3208) => q(kef),
- q(3209) => q(keg),
- q(3210) => q(keh),
- q(3211) => q(kei),
- q(3212) => q(kej),
- q(3213) => q(kek),
- q(3214) => q(kel),
- q(3215) => q(kem),
- q(3216) => q(ken),
- q(3217) => q(keo),
- q(3218) => q(kep),
- q(3219) => q(keq),
- q(3220) => q(ker),
- q(3221) => q(kes),
- q(3222) => q(ket),
- q(3223) => q(keu),
- q(3224) => q(kev),
- q(3225) => q(kew),
- q(3226) => q(kex),
- q(3227) => q(key),
- q(3228) => q(kez),
- q(3229) => q(kfa),
- q(3230) => q(kfb),
- q(3231) => q(kfc),
- q(3232) => q(kfd),
- q(3233) => q(kfe),
- q(3234) => q(kff),
- q(3235) => q(kfg),
- q(3236) => q(kfh),
- q(3237) => q(kfi),
- q(3238) => q(kfj),
- q(3239) => q(kfk),
- q(3240) => q(kfl),
- q(3241) => q(kfm),
- q(3242) => q(kfn),
- q(3243) => q(kfo),
- q(3244) => q(kfp),
- q(3245) => q(kfq),
- q(3246) => q(kfr),
- q(3247) => q(kfs),
- q(3248) => q(kft),
- q(3249) => q(kfu),
- q(3250) => q(kfv),
- q(3251) => q(kfw),
- q(3252) => q(kfx),
- q(3253) => q(kfy),
- q(3254) => q(kfz),
- q(3255) => q(kga),
- q(3256) => q(kgb),
- q(3257) => q(kgc),
- q(3258) => q(kgd),
- q(3259) => q(kge),
- q(3260) => q(kgf),
- q(3261) => q(kgg),
- q(3262) => q(kgh),
- q(3263) => q(kgi),
- q(3264) => q(kgj),
- q(3265) => q(kgk),
- q(3266) => q(kgl),
- q(3267) => q(kuq),
- q(3268) => q(kgn),
- q(3269) => q(kgo),
- q(3270) => q(kgp),
- q(3271) => q(kgq),
- q(3272) => q(kgr),
- q(3273) => q(kgs),
- q(3274) => q(kgt),
- q(3275) => q(kgu),
- q(3276) => q(kgv),
- q(3277) => q(kgw),
- q(3278) => q(kgx),
- q(3279) => q(kgy),
- q(3280) => q(khb),
- q(3281) => q(khc),
- q(3282) => q(khd),
- q(3283) => q(khe),
- q(3284) => q(khf),
- q(3285) => q(khg),
- q(3286) => q(khh),
- q(3287) => q(khj),
- q(3288) => q(khk),
- q(3289) => q(khl),
- q(3290) => q(khn),
- q(3291) => q(khp),
- q(3292) => q(khq),
- q(3293) => q(khr),
- q(3294) => q(khs),
- q(3295) => q(kht),
- q(3296) => q(khu),
- q(3297) => q(khv),
- q(3298) => q(khw),
- q(3299) => q(khx),
- q(3300) => q(khy),
- q(3301) => q(khz),
- q(3302) => q(kia),
- q(3303) => q(kib),
- q(3304) => q(kic),
- q(3305) => q(kid),
- q(3306) => q(kie),
- q(3307) => q(kif),
- q(3308) => q(kig),
- q(3309) => q(kih),
- q(3310) => q(kii),
- q(3311) => q(kij),
- q(3312) => q(kil),
- q(3313) => q(kim),
- q(3314) => q(kio),
- q(3315) => q(kip),
- q(3316) => q(kiq),
- q(3317) => q(kis),
- q(3318) => q(kit),
- q(3319) => q(kiu),
- q(3320) => q(kiv),
- q(3321) => q(kiw),
- q(3322) => q(kix),
- q(3323) => q(kiy),
- q(3324) => q(kiz),
- q(3325) => q(kja),
- q(3326) => q(kjb),
- q(3327) => q(kjc),
- q(3328) => q(kjd),
- q(3329) => q(kje),
- q(3330) => q(kjf),
- q(3331) => q(kjg),
- q(3332) => q(kjh),
- q(3333) => q(kji),
- q(3334) => q(kjj),
- q(3335) => q(kjk),
- q(3336) => q(kjl),
- q(3337) => q(kjm),
- q(3338) => q(kjn),
- q(3339) => q(kjo),
- q(3340) => q(kjp),
- q(3341) => q(kjq),
- q(3342) => q(kjr),
- q(3343) => q(kjs),
- q(3344) => q(kjt),
- q(3345) => q(kju),
- q(3346) => q(kjx),
- q(3347) => q(kjy),
- q(3348) => q(kjz),
- q(3349) => q(kka),
- q(3350) => q(kkb),
- q(3351) => q(kkc),
- q(3352) => q(kkd),
- q(3353) => q(kke),
- q(3354) => q(kkf),
- q(3355) => q(kkg),
- q(3356) => q(kkh),
- q(3357) => q(kki),
- q(3358) => q(kkj),
- q(3359) => q(kkk),
- q(3360) => q(kkl),
- q(3361) => q(kkm),
- q(3362) => q(kkn),
- q(3363) => q(kko),
- q(3364) => q(kkp),
- q(3365) => q(kkq),
- q(3366) => q(kkr),
- q(3367) => q(kks),
- q(3368) => q(kkt),
- q(3369) => q(kku),
- q(3370) => q(kkv),
- q(3371) => q(kkw),
- q(3372) => q(kkx),
- q(3373) => q(kky),
- q(3374) => q(kkz),
- q(3375) => q(kla),
- q(3376) => q(klb),
- q(3377) => q(klc),
- q(3378) => q(kld),
- q(3379) => q(kle),
- q(3380) => q(klf),
- q(3381) => q(klg),
- q(3382) => q(klh),
- q(3383) => q(kli),
- q(3384) => q(klj),
- q(3385) => q(klk),
- q(3386) => q(kll),
- q(3387) => q(klm),
- q(3388) => q(kln),
- q(3389) => q(klo),
- q(3390) => q(klp),
- q(3391) => q(klq),
- q(3392) => q(klr),
- q(3393) => q(kls),
- q(3394) => q(klt),
- q(3395) => q(klu),
- q(3396) => q(klv),
- q(3397) => q(klw),
- q(3398) => q(klx),
- q(3399) => q(kly),
- q(3400) => q(klz),
- q(3401) => q(kma),
- q(3402) => q(kmc),
- q(3403) => q(kmd),
- q(3404) => q(kme),
- q(3405) => q(kmf),
- q(3406) => q(kmg),
- q(3407) => q(kmh),
- q(3408) => q(kmi),
- q(3409) => q(kmj),
- q(3410) => q(kmk),
- q(3411) => q(kml),
- q(3412) => q(kmm),
- q(3413) => q(kmn),
- q(3414) => q(kmo),
- q(3415) => q(kmp),
- q(3416) => q(kmq),
- q(3417) => q(kmr),
- q(3418) => q(kms),
- q(3419) => q(kmt),
- q(3420) => q(kmu),
- q(3421) => q(kmv),
- q(3422) => q(kmw),
- q(3423) => q(kmx),
- q(3424) => q(kmy),
- q(3425) => q(kmz),
- q(3426) => q(kna),
- q(3427) => q(knb),
- q(3428) => q(knc),
- q(3429) => q(knd),
- q(3430) => q(kne),
- q(3431) => q(knf),
- q(3432) => q(kng),
- q(3433) => q(kni),
- q(3434) => q(knj),
- q(3435) => q(knk),
- q(3436) => q(knl),
- q(3437) => q(knm),
- q(3438) => q(knn),
- q(3439) => q(kno),
- q(3440) => q(knp),
- q(3441) => q(knq),
- q(3442) => q(knr),
- q(3443) => q(kns),
- q(3444) => q(knt),
- q(3445) => q(knu),
- q(3446) => q(knv),
- q(3447) => q(knw),
- q(3448) => q(knx),
- q(3449) => q(kny),
- q(3450) => q(knz),
- q(3451) => q(koa),
- q(3452) => q(koc),
- q(3453) => q(kod),
- q(3454) => q(koe),
- q(3455) => q(kof),
- q(3456) => q(kog),
- q(3457) => q(koh),
- q(3458) => q(koi),
- q(3459) => q(koj),
- q(3460) => q(kol),
- q(3461) => q(koo),
- q(3462) => q(kop),
- q(3463) => q(koq),
- q(3464) => q(kot),
- q(3465) => q(kou),
- q(3466) => q(kov),
- q(3467) => q(kow),
- q(3468) => q(kox),
- q(3469) => q(koy),
- q(3470) => q(koz),
- q(3471) => q(kpa),
- q(3472) => q(kpb),
- q(3473) => q(kpc),
- q(3474) => q(kpd),
- q(3475) => q(kpf),
- q(3476) => q(kpg),
- q(3477) => q(kph),
- q(3478) => q(kpi),
- q(3479) => q(kpj),
- q(3480) => q(kpk),
- q(3481) => q(kpl),
- q(3482) => q(kpm),
- q(3483) => q(kpn),
- q(3484) => q(kpo),
- q(3485) => q(kpp),
- q(3486) => q(kpq),
- q(3487) => q(kpr),
- q(3488) => q(kps),
- q(3489) => q(kpt),
- q(3490) => q(kpu),
- q(3491) => q(kpv),
- q(3492) => q(kpw),
- q(3493) => q(kpx),
- q(3494) => q(kpy),
- q(3495) => q(kpz),
- q(3496) => q(kqa),
- q(3497) => q(kqb),
- q(3498) => q(kqc),
- q(3499) => q(kqd),
- q(3500) => q(kqe),
- q(3501) => q(kqf),
- q(3502) => q(kqg),
- q(3503) => q(kqh),
- q(3504) => q(kqi),
- q(3505) => q(kqj),
- q(3506) => q(kqk),
- q(3507) => q(kql),
- q(3508) => q(kqm),
- q(3509) => q(kqn),
- q(3510) => q(kqo),
- q(3511) => q(kqp),
- q(3512) => q(kqq),
- q(3513) => q(kqr),
- q(3514) => q(kqs),
- q(3515) => q(kqt),
- q(3516) => q(kqu),
- q(3517) => q(kqv),
- q(3518) => q(kqw),
- q(3519) => q(kqx),
- q(3520) => q(kqy),
- q(3521) => q(kqz),
- q(3522) => q(kra),
- q(3523) => q(krb),
- q(3524) => q(krd),
- q(3525) => q(kre),
- q(3526) => q(krf),
- q(3527) => q(krh),
- q(3528) => q(kri),
- q(3529) => q(krj),
- q(3530) => q(krk),
- q(3531) => q(krm),
- q(3532) => q(krn),
- q(3533) => q(krp),
- q(3534) => q(krr),
- q(3535) => q(krs),
- q(3536) => q(krt),
- q(3537) => q(krv),
- q(3538) => q(krw),
- q(3539) => q(krx),
- q(3540) => q(kry),
- q(3541) => q(krz),
- q(3542) => q(ksa),
- q(3543) => q(ksb),
- q(3544) => q(ksc),
- q(3545) => q(ksd),
- q(3546) => q(kse),
- q(3547) => q(ksf),
- q(3548) => q(ksg),
- q(3549) => q(ksh),
- q(3550) => q(ksi),
- q(3551) => q(ksj),
- q(3552) => q(ksk),
- q(3553) => q(ksl),
- q(3554) => q(ksm),
- q(3555) => q(ksn),
- q(3556) => q(kso),
- q(3557) => q(ksp),
- q(3558) => q(ksq),
- q(3559) => q(ksr),
- q(3560) => q(kss),
- q(3561) => q(kst),
- q(3562) => q(ksu),
- q(3563) => q(ksv),
- q(3564) => q(ksw),
- q(3565) => q(ksx),
- q(3566) => q(ksy),
- q(3567) => q(ksz),
- q(3568) => q(kta),
- q(3569) => q(ktb),
- q(3570) => q(ktc),
- q(3571) => q(ktd),
- q(3572) => q(kte),
- q(3573) => q(ktf),
- q(3574) => q(ktg),
- q(3575) => q(kth),
- q(3576) => q(kti),
- q(3577) => q(ktj),
- q(3578) => q(ktk),
- q(3579) => q(ktl),
- q(3580) => q(ktm),
- q(3581) => q(ktn),
- q(3582) => q(kto),
- q(3583) => q(ktp),
- q(3584) => q(ktq),
- q(3585) => q(ktr),
- q(3586) => q(kts),
- q(3587) => q(ktt),
- q(3588) => q(ktu),
- q(3589) => q(ktv),
- q(3590) => q(ktw),
- q(3591) => q(ktx),
- q(3592) => q(kty),
- q(3593) => q(ktz),
- q(3594) => q(kub),
- q(3595) => q(kuc),
- q(3596) => q(kud),
- q(3597) => q(kue),
- q(3598) => q(kuf),
- q(3599) => q(kug),
- q(3600) => q(kuh),
- q(3601) => q(kui),
- q(3602) => q(kuj),
- q(3603) => q(kuk),
- q(3604) => q(kul),
- q(3605) => q(kun),
- q(3606) => q(kuo),
- q(3607) => q(kup),
- q(3608) => q(kus),
- q(3609) => q(kuu),
- q(3610) => q(kuv),
- q(3611) => q(kuw),
- q(3612) => q(kux),
- q(3613) => q(kuy),
- q(3614) => q(kuz),
- q(3615) => q(kva),
- q(3616) => q(kvb),
- q(3617) => q(kvc),
- q(3618) => q(kvd),
- q(3619) => q(kve),
- q(3620) => q(kvf),
- q(3621) => q(kvg),
- q(3622) => q(kvh),
- q(3623) => q(kvi),
- q(3624) => q(kvj),
- q(3625) => q(kvk),
- q(3626) => q(kvl),
- q(3627) => q(kvm),
- q(3628) => q(kvn),
- q(3629) => q(kvo),
- q(3630) => q(kvp),
- q(3631) => q(kvq),
- q(3632) => q(kvr),
- q(3633) => q(kvs),
- q(3634) => q(kvt),
- q(3635) => q(kvu),
- q(3636) => q(kvv),
- q(3637) => q(kvw),
- q(3638) => q(kvx),
- q(3639) => q(kvy),
- q(3640) => q(kvz),
- q(3641) => q(kwa),
- q(3642) => q(kwb),
- q(3643) => q(kwc),
- q(3644) => q(kwd),
- q(3645) => q(kwe),
- q(3646) => q(kwf),
- q(3647) => q(kwg),
- q(3648) => q(kwh),
- q(3649) => q(kwi),
- q(3650) => q(kwj),
- q(3651) => q(kwk),
- q(3652) => q(kwl),
- q(3653) => q(kwm),
- q(3654) => q(kwn),
- q(3655) => q(kwo),
- q(3656) => q(kwp),
- q(3657) => q(kwq),
- q(3658) => q(kwr),
- q(3659) => q(kws),
- q(3660) => q(kwt),
- q(3661) => q(kwu),
- q(3662) => q(kwv),
- q(3663) => q(kww),
- q(3664) => q(kwx),
- q(3665) => q(kwy),
- q(3666) => q(kwz),
- q(3667) => q(kxa),
- q(3668) => q(kxb),
- q(3669) => q(kxc),
- q(3670) => q(kxd),
- q(3671) => q(kxe),
- q(3672) => q(kxf),
- q(3673) => q(kxh),
- q(3674) => q(kxi),
- q(3675) => q(kxj),
- q(3676) => q(kxk),
- q(3677) => q(kxl),
- q(3678) => q(kxm),
- q(3679) => q(kxn),
- q(3680) => q(kxo),
- q(3681) => q(kxp),
- q(3682) => q(kxq),
- q(3683) => q(kxr),
- q(3684) => q(kxs),
- q(3685) => q(kxt),
- q(3686) => q(kxu),
- q(3687) => q(kxv),
- q(3688) => q(kxw),
- q(3689) => q(kxx),
- q(3690) => q(kxy),
- q(3691) => q(kxz),
- q(3692) => q(kya),
- q(3693) => q(kyb),
- q(3694) => q(kyc),
- q(3695) => q(kyd),
- q(3696) => q(kye),
- q(3697) => q(kyf),
- q(3698) => q(kyg),
- q(3699) => q(kyh),
- q(3700) => q(kyi),
- q(3701) => q(kyj),
- q(3702) => q(kyk),
- q(3703) => q(kyl),
- q(3704) => q(kym),
- q(3705) => q(kyn),
- q(3706) => q(kyo),
- q(3707) => q(kyp),
- q(3708) => q(kyq),
- q(3709) => q(kyr),
- q(3710) => q(kys),
- q(3711) => q(kyt),
- q(3712) => q(kyu),
- q(3713) => q(kyv),
- q(3714) => q(kyw),
- q(3715) => q(kyx),
- q(3716) => q(kyy),
- q(3717) => q(kyz),
- q(3718) => q(kza),
- q(3719) => q(kzb),
- q(3720) => q(kzc),
- q(3721) => q(kzd),
- q(3722) => q(kze),
- q(3723) => q(kzf),
- q(3724) => q(kzg),
- q(3725) => q(kzh),
- q(3726) => q(kzi),
- q(3727) => q(kzj),
- q(3728) => q(kzk),
- q(3729) => q(kzl),
- q(3730) => q(kzm),
- q(3731) => q(kzn),
- q(3732) => q(kzo),
- q(3733) => q(kzp),
- q(3734) => q(kzq),
- q(3735) => q(kzr),
- q(3736) => q(kzs),
- q(3737) => q(kzt),
- q(3738) => q(kzu),
- q(3739) => q(kzv),
- q(3740) => q(kzw),
- q(3741) => q(kzx),
- q(3742) => q(kzy),
- q(3743) => q(kzz),
- q(3744) => q(laa),
- q(3745) => q(lab),
- q(3746) => q(lac),
- q(3747) => q(lae),
- q(3748) => q(laf),
- q(3749) => q(lag),
- q(3750) => q(lai),
- q(3751) => q(laj),
- q(3752) => q(lak),
- q(3753) => q(lal),
- q(3754) => q(lan),
- q(3755) => q(lap),
- q(3756) => q(laq),
- q(3757) => q(lar),
- q(3758) => q(las),
- q(3759) => q(lau),
- q(3760) => q(law),
- q(3761) => q(lax),
- q(3762) => q(lay),
- q(3763) => q(laz),
- q(3764) => q(lba),
- q(3765) => q(lbb),
- q(3766) => q(lbc),
- q(3767) => q(lbe),
- q(3768) => q(lbf),
- q(3769) => q(lbg),
- q(3770) => q(lbi),
- q(3771) => q(lbj),
- q(3772) => q(lbk),
- q(3773) => q(lbl),
- q(3774) => q(lbm),
- q(3775) => q(lbn),
- q(3776) => q(lbo),
- q(3777) => q(lbq),
- q(3778) => q(lbr),
- q(3779) => q(lbs),
- q(3780) => q(lbt),
- q(3781) => q(lbu),
- q(3782) => q(lbv),
- q(3783) => q(lbw),
- q(3784) => q(lbx),
- q(3785) => q(lby),
- q(3786) => q(lbz),
- q(3787) => q(lcc),
- q(3788) => q(lcd),
- q(3789) => q(lce),
- q(3790) => q(lcf),
- q(3791) => q(lch),
- q(3792) => q(lcl),
- q(3793) => q(lcm),
- q(3794) => q(lcp),
- q(3795) => q(lcq),
- q(3796) => q(lcs),
- q(3797) => q(ldb),
- q(3798) => q(ldd),
- q(3799) => q(ldg),
- q(3800) => q(ldh),
- q(3801) => q(ldi),
- q(3802) => q(ldj),
- q(3803) => q(ldk),
- q(3804) => q(ldl),
- q(3805) => q(ldm),
- q(3806) => q(ldn),
- q(3807) => q(ldo),
- q(3808) => q(ldp),
- q(3809) => q(ldq),
- q(3810) => q(lea),
- q(3811) => q(leb),
- q(3812) => q(lec),
- q(3813) => q(led),
- q(3814) => q(lee),
- q(3815) => q(lef),
- q(3816) => q(leg),
- q(3817) => q(leh),
- q(3818) => q(lei),
- q(3819) => q(lej),
- q(3820) => q(lek),
- q(3821) => q(lel),
- q(3822) => q(lem),
- q(3823) => q(len),
- q(3824) => q(leo),
- q(3825) => q(lep),
- q(3826) => q(leq),
- q(3827) => q(ler),
- q(3828) => q(les),
- q(3829) => q(let),
- q(3830) => q(leu),
- q(3831) => q(lev),
- q(3832) => q(lew),
- q(3833) => q(lex),
- q(3834) => q(ley),
- q(3835) => q(lfa),
- q(3836) => q(lfn),
- q(3837) => q(lga),
- q(3838) => q(lgb),
- q(3839) => q(lgg),
- q(3840) => q(lgh),
- q(3841) => q(lgi),
- q(3842) => q(lgk),
- q(3843) => q(lgl),
- q(3844) => q(lgm),
- q(3845) => q(lgn),
- q(3846) => q(lgq),
- q(3847) => q(lgr),
- q(3848) => q(lgt),
- q(3849) => q(lgu),
- q(3850) => q(lgz),
- q(3851) => q(lha),
- q(3852) => q(lhh),
- q(3853) => q(lhi),
- q(3854) => q(lhl),
- q(3855) => q(lhm),
- q(3856) => q(lhn),
- q(3857) => q(lhp),
- q(3858) => q(lhs),
- q(3859) => q(lht),
- q(3860) => q(lhu),
- q(3861) => q(lia),
- q(3862) => q(lib),
- q(3863) => q(lic),
- q(3864) => q(lid),
- q(3865) => q(lie),
- q(3866) => q(lif),
- q(3867) => q(lig),
- q(3868) => q(lih),
- q(3869) => q(lii),
- q(3870) => q(lij),
- q(3871) => q(lik),
- q(3872) => q(lil),
- q(3873) => q(lio),
- q(3874) => q(lip),
- q(3875) => q(liq),
- q(3876) => q(lir),
- q(3877) => q(lis),
- q(3878) => q(liu),
- q(3879) => q(liv),
- q(3880) => q(liw),
- q(3881) => q(lix),
- q(3882) => q(liy),
- q(3883) => q(liz),
- q(3884) => q(lje),
- q(3885) => q(lji),
- q(3886) => q(ljl),
- q(3887) => q(ljp),
- q(3888) => q(lka),
- q(3889) => q(lkb),
- q(3890) => q(lkc),
- q(3891) => q(lkd),
- q(3892) => q(lke),
- q(3893) => q(lkh),
- q(3894) => q(lki),
- q(3895) => q(lkj),
- q(3896) => q(lkl),
- q(3897) => q(lkn),
- q(3898) => q(lko),
- q(3899) => q(lkr),
- q(3900) => q(lks),
- q(3901) => q(lkt),
- q(3902) => q(lky),
- q(3903) => q(lla),
- q(3904) => q(llb),
- q(3905) => q(llc),
- q(3906) => q(lld),
- q(3907) => q(lle),
- q(3908) => q(llf),
- q(3909) => q(llg),
- q(3910) => q(llh),
- q(3911) => q(lli),
- q(3912) => q(llk),
- q(3913) => q(lll),
- q(3914) => q(llm),
- q(3915) => q(lln),
- q(3916) => q(llo),
- q(3917) => q(llp),
- q(3918) => q(llq),
- q(3919) => q(lls),
- q(3920) => q(llu),
- q(3921) => q(llx),
- q(3922) => q(lma),
- q(3923) => q(lmb),
- q(3924) => q(lmc),
- q(3925) => q(lmd),
- q(3926) => q(lme),
- q(3927) => q(lmf),
- q(3928) => q(lmg),
- q(3929) => q(lmh),
- q(3930) => q(lmi),
- q(3931) => q(lmj),
- q(3932) => q(lmk),
- q(3933) => q(lml),
- q(3934) => q(lmm),
- q(3935) => q(lmn),
- q(3936) => q(lmo),
- q(3937) => q(lmp),
- q(3938) => q(lmq),
- q(3939) => q(lmr),
- q(3940) => q(lmu),
- q(3941) => q(lmv),
- q(3942) => q(lmw),
- q(3943) => q(lmx),
- q(3944) => q(lmy),
- q(3945) => q(lmz),
- q(3946) => q(lna),
- q(3947) => q(lnb),
- q(3948) => q(lnd),
- q(3949) => q(lng),
- q(3950) => q(lnh),
- q(3951) => q(lni),
- q(3952) => q(lnj),
- q(3953) => q(lnl),
- q(3954) => q(lnm),
- q(3955) => q(lnn),
- q(3956) => q(lno),
- q(3957) => q(lns),
- q(3958) => q(lnu),
- q(3959) => q(lnz),
- q(3960) => q(loa),
- q(3961) => q(lob),
- q(3962) => q(loc),
- q(3963) => q(loe),
- q(3964) => q(lof),
- q(3965) => q(log),
- q(3966) => q(loh),
- q(3967) => q(loi),
- q(3968) => q(loj),
- q(3969) => q(lok),
- q(3970) => q(lom),
- q(3971) => q(lon),
- q(3972) => q(loo),
- q(3973) => q(lop),
- q(3974) => q(loq),
- q(3975) => q(lor),
- q(3976) => q(los),
- q(3977) => q(lot),
- q(3978) => q(lou),
- q(3979) => q(lov),
- q(3980) => q(low),
- q(3981) => q(lox),
- q(3982) => q(loy),
- q(3983) => q(lpa),
- q(3984) => q(lpe),
- q(3985) => q(lpn),
- q(3986) => q(lpo),
- q(3987) => q(lpx),
- q(3988) => q(lra),
- q(3989) => q(lrc),
- q(3990) => q(lre),
- q(3991) => q(lrg),
- q(3992) => q(lri),
- q(3993) => q(lrk),
- q(3994) => q(lrl),
- q(3995) => q(lrm),
- q(3996) => q(lrn),
- q(3997) => q(lro),
- q(3998) => q(lrr),
- q(3999) => q(lrt),
- q(4000) => q(lrv),
- q(4001) => q(lrz),
- q(4002) => q(lsa),
- q(4003) => q(lsd),
- q(4004) => q(lse),
- q(4005) => q(lsg),
- q(4006) => q(lsh),
- q(4007) => q(lsi),
- q(4008) => q(lsl),
- q(4009) => q(lsm),
- q(4010) => q(lso),
- q(4011) => q(lsp),
- q(4012) => q(lsr),
- q(4013) => q(lss),
- q(4014) => q(lst),
- q(4015) => q(lsy),
- q(4016) => q(ltc),
- q(4017) => q(ltg),
- q(4018) => q(lti),
- q(4019) => q(ltn),
- q(4020) => q(lto),
- q(4021) => q(lts),
- q(4022) => q(ltu),
- q(4023) => q(luc),
- q(4024) => q(lud),
- q(4025) => q(lue),
- q(4026) => q(luf),
- q(4027) => q(luj),
- q(4028) => q(luk),
- q(4029) => q(lul),
- q(4030) => q(lum),
- q(4031) => q(lup),
- q(4032) => q(luq),
- q(4033) => q(lur),
- q(4034) => q(lut),
- q(4035) => q(luu),
- q(4036) => q(luv),
- q(4037) => q(luw),
- q(4038) => q(luy),
- q(4039) => q(luz),
- q(4040) => q(lva),
- q(4041) => q(lvk),
- q(4042) => q(lvs),
- q(4043) => q(lvu),
- q(4044) => q(lwa),
- q(4045) => q(lwe),
- q(4046) => q(lwg),
- q(4047) => q(lwh),
- q(4048) => q(lwl),
- q(4049) => q(lwm),
- q(4050) => q(lwo),
- q(4051) => q(lwt),
- q(4052) => q(lww),
- q(4053) => q(lya),
- q(4054) => q(lyg),
- q(4055) => q(lyn),
- q(4056) => q(lzh),
- q(4057) => q(lzl),
- q(4058) => q(lzn),
- q(4059) => q(lzz),
- q(4060) => q(maa),
- q(4061) => q(mab),
- q(4062) => q(mae),
- q(4063) => q(maf),
- q(4064) => q(maj),
- q(4065) => q(mam),
- q(4066) => q(maq),
- q(4067) => q(mat),
- q(4068) => q(mau),
- q(4069) => q(mav),
- q(4070) => q(maw),
- q(4071) => q(max),
- q(4072) => q(maz),
- q(4073) => q(mba),
- q(4074) => q(mbb),
- q(4075) => q(mbc),
- q(4076) => q(mbd),
- q(4077) => q(mbe),
- q(4078) => q(mbf),
- q(4079) => q(mbh),
- q(4080) => q(mbi),
- q(4081) => q(mbj),
- q(4082) => q(mbk),
- q(4083) => q(mbl),
- q(4084) => q(mbm),
- q(4085) => q(mbn),
- q(4086) => q(mbo),
- q(4087) => q(mbp),
- q(4088) => q(mbq),
- q(4089) => q(mbr),
- q(4090) => q(mbs),
- q(4091) => q(mbt),
- q(4092) => q(mbu),
- q(4093) => q(mbv),
- q(4094) => q(mbw),
- q(4095) => q(mbx),
- q(4096) => q(mby),
- q(4097) => q(mbz),
- q(4098) => q(mca),
- q(4099) => q(mcb),
- q(4100) => q(mcc),
- q(4101) => q(mcd),
- q(4102) => q(mce),
- q(4103) => q(mcf),
- q(4104) => q(mcg),
- q(4105) => q(mch),
- q(4106) => q(mci),
- q(4107) => q(mcj),
- q(4108) => q(mck),
- q(4109) => q(mcl),
- q(4110) => q(mcm),
- q(4111) => q(mcn),
- q(4112) => q(mco),
- q(4113) => q(mcp),
- q(4114) => q(mcq),
- q(4115) => q(mcr),
- q(4116) => q(mcs),
- q(4117) => q(mct),
- q(4118) => q(mcu),
- q(4119) => q(mcv),
- q(4120) => q(mcw),
- q(4121) => q(mcx),
- q(4122) => q(mcy),
- q(4123) => q(mcz),
- q(4124) => q(mda),
- q(4125) => q(mdb),
- q(4126) => q(mdc),
- q(4127) => q(mdd),
- q(4128) => q(mde),
- q(4129) => q(mdg),
- q(4130) => q(mdh),
- q(4131) => q(mdi),
- q(4132) => q(mdj),
- q(4133) => q(mdk),
- q(4134) => q(mdl),
- q(4135) => q(mdm),
- q(4136) => q(mdn),
- q(4137) => q(mdp),
- q(4138) => q(mdq),
- q(4139) => q(mds),
- q(4140) => q(mdt),
- q(4141) => q(mdu),
- q(4142) => q(mdv),
- q(4143) => q(mdw),
- q(4144) => q(mdx),
- q(4145) => q(mdy),
- q(4146) => q(mdz),
- q(4147) => q(mea),
- q(4148) => q(meb),
- q(4149) => q(mec),
- q(4150) => q(med),
- q(4151) => q(mee),
- q(4152) => q(mef),
- q(4153) => q(meg),
- q(4154) => q(meh),
- q(4155) => q(mei),
- q(4156) => q(mej),
- q(4157) => q(mek),
- q(4158) => q(mel),
- q(4159) => q(mem),
- q(4160) => q(meo),
- q(4161) => q(mep),
- q(4162) => q(meq),
- q(4163) => q(mer),
- q(4164) => q(mes),
- q(4165) => q(met),
- q(4166) => q(meu),
- q(4167) => q(mev),
- q(4168) => q(mew),
- q(4169) => q(mey),
- q(4170) => q(mez),
- q(4171) => q(mfa),
- q(4172) => q(mfb),
- q(4173) => q(mfc),
- q(4174) => q(mfd),
- q(4175) => q(mfe),
- q(4176) => q(mff),
- q(4177) => q(mfg),
- q(4178) => q(mfh),
- q(4179) => q(mfi),
- q(4180) => q(mfj),
- q(4181) => q(mfk),
- q(4182) => q(mfl),
- q(4183) => q(mfm),
- q(4184) => q(mfn),
- q(4185) => q(mfo),
- q(4186) => q(mfp),
- q(4187) => q(mfq),
- q(4188) => q(mfr),
- q(4189) => q(mfs),
- q(4190) => q(mft),
- q(4191) => q(mfu),
- q(4192) => q(mfv),
- q(4193) => q(mfw),
- q(4194) => q(mfx),
- q(4195) => q(mfy),
- q(4196) => q(mfz),
- q(4197) => q(mgb),
- q(4198) => q(mgc),
- q(4199) => q(mgd),
- q(4200) => q(mge),
- q(4201) => q(mgf),
- q(4202) => q(mgg),
- q(4203) => q(mgh),
- q(4204) => q(mgi),
- q(4205) => q(mgj),
- q(4206) => q(mgk),
- q(4207) => q(mgl),
- q(4208) => q(mgm),
- q(4209) => q(mgn),
- q(4210) => q(mgo),
- q(4211) => q(mgp),
- q(4212) => q(mgq),
- q(4213) => q(mgr),
- q(4214) => q(mgs),
- q(4215) => q(mgt),
- q(4216) => q(mgu),
- q(4217) => q(mgv),
- q(4218) => q(mgw),
- q(4219) => q(mgx),
- q(4220) => q(mgy),
- q(4221) => q(mgz),
- q(4222) => q(mha),
- q(4223) => q(mhb),
- q(4224) => q(mhc),
- q(4225) => q(mhd),
- q(4226) => q(mhe),
- q(4227) => q(mhf),
- q(4228) => q(mhg),
- q(4229) => q(mhh),
- q(4230) => q(mhi),
- q(4231) => q(mhj),
- q(4232) => q(mhk),
- q(4233) => q(mhl),
- q(4234) => q(mhm),
- q(4235) => q(mhn),
- q(4236) => q(mho),
- q(4237) => q(mhp),
- q(4238) => q(mhq),
- q(4239) => q(mhr),
- q(4240) => q(mhs),
- q(4241) => q(mht),
- q(4242) => q(mhu),
- q(4243) => q(mhw),
- q(4244) => q(mhx),
- q(4245) => q(mhy),
- q(4246) => q(mhz),
- q(4247) => q(mia),
- q(4248) => q(mib),
- q(4249) => q(mid),
- q(4250) => q(mie),
- q(4251) => q(mif),
- q(4252) => q(mig),
- q(4253) => q(mih),
- q(4254) => q(mii),
- q(4255) => q(mij),
- q(4256) => q(mik),
- q(4257) => q(mil),
- q(4258) => q(mim),
- q(4259) => q(mio),
- q(4260) => q(mip),
- q(4261) => q(miq),
- q(4262) => q(mir),
- q(4263) => q(mit),
- q(4264) => q(miu),
- q(4265) => q(miw),
- q(4266) => q(mix),
- q(4267) => q(miy),
- q(4268) => q(miz),
- q(4269) => q(mjc),
- q(4270) => q(mjd),
- q(4271) => q(mje),
- q(4272) => q(mjg),
- q(4273) => q(mjh),
- q(4274) => q(mji),
- q(4275) => q(mjj),
- q(4276) => q(mjk),
- q(4277) => q(mjl),
- q(4278) => q(mjm),
- q(4279) => q(mjn),
- q(4280) => q(mjo),
- q(4281) => q(mjp),
- q(4282) => q(mjq),
- q(4283) => q(mjr),
- q(4284) => q(mjs),
- q(4285) => q(mjt),
- q(4286) => q(mju),
- q(4287) => q(mjv),
- q(4288) => q(mjw),
- q(4289) => q(mjx),
- q(4290) => q(mjy),
- q(4291) => q(mjz),
- q(4292) => q(mka),
- q(4293) => q(mkb),
- q(4294) => q(mkc),
- q(4295) => q(mke),
- q(4296) => q(mkf),
- q(4297) => q(mkg),
- q(4298) => q(mki),
- q(4299) => q(mkj),
- q(4300) => q(mkk),
- q(4301) => q(mkl),
- q(4302) => q(mkm),
- q(4303) => q(mkn),
- q(4304) => q(mko),
- q(4305) => q(mkp),
- q(4306) => q(mkq),
- q(4307) => q(mkr),
- q(4308) => q(mks),
- q(4309) => q(mkt),
- q(4310) => q(mku),
- q(4311) => q(mkv),
- q(4312) => q(mkw),
- q(4313) => q(mkx),
- q(4314) => q(mky),
- q(4315) => q(mkz),
- q(4316) => q(mla),
- q(4317) => q(mlb),
- q(4318) => q(mlc),
- q(4319) => q(mld),
- q(4320) => q(mle),
- q(4321) => q(mlf),
- q(4322) => q(mlh),
- q(4323) => q(mli),
- q(4324) => q(mlj),
- q(4325) => q(mlk),
- q(4326) => q(mll),
- q(4327) => q(mlm),
- q(4328) => q(mln),
- q(4329) => q(mlo),
- q(4330) => q(mlp),
- q(4331) => q(mlq),
- q(4332) => q(mlr),
- q(4333) => q(mls),
- q(4334) => q(mlu),
- q(4335) => q(mlv),
- q(4336) => q(mlw),
- q(4337) => q(mlx),
- q(4338) => q(mlz),
- q(4339) => q(mma),
- q(4340) => q(mmb),
- q(4341) => q(mmc),
- q(4342) => q(mmd),
- q(4343) => q(mme),
- q(4344) => q(mmf),
- q(4345) => q(mmg),
- q(4346) => q(mmh),
- q(4347) => q(mmi),
- q(4348) => q(mmj),
- q(4349) => q(mmk),
- q(4350) => q(mml),
- q(4351) => q(mmm),
- q(4352) => q(mmn),
- q(4353) => q(mmo),
- q(4354) => q(mmp),
- q(4355) => q(mmq),
- q(4356) => q(mmr),
- q(4357) => q(mmt),
- q(4358) => q(mmu),
- q(4359) => q(mmv),
- q(4360) => q(mmw),
- q(4361) => q(mmx),
- q(4362) => q(mmy),
- q(4363) => q(mmz),
- q(4364) => q(mna),
- q(4365) => q(mnb),
- q(4366) => q(mnd),
- q(4367) => q(mne),
- q(4368) => q(mnf),
- q(4369) => q(mng),
- q(4370) => q(mnh),
- q(4371) => q(mnj),
- q(4372) => q(mnk),
- q(4373) => q(mnl),
- q(4374) => q(mnm),
- q(4375) => q(mnn),
- q(4376) => q(mnp),
- q(4377) => q(mnq),
- q(4378) => q(mnr),
- q(4379) => q(mns),
- q(4380) => q(mnt),
- q(4381) => q(mnu),
- q(4382) => q(mnv),
- q(4383) => q(mnw),
- q(4384) => q(mnx),
- q(4385) => q(mny),
- q(4386) => q(mnz),
- q(4387) => q(moa),
- q(4388) => q(moc),
- q(4389) => q(mod),
- q(4390) => q(moe),
- q(4391) => q(mog),
- q(4392) => q(moi),
- q(4393) => q(moj),
- q(4394) => q(mok),
- q(4395) => q(mom),
- q(4396) => q(moo),
- q(4397) => q(mop),
- q(4398) => q(moq),
- q(4399) => q(mor),
- q(4400) => q(mou),
- q(4401) => q(mov),
- q(4402) => q(mow),
- q(4403) => q(mox),
- q(4404) => q(moy),
- q(4405) => q(moz),
- q(4406) => q(mpa),
- q(4407) => q(mpb),
- q(4408) => q(mpc),
- q(4409) => q(mpd),
- q(4410) => q(mpe),
- q(4411) => q(mpg),
- q(4412) => q(mph),
- q(4413) => q(mpi),
- q(4414) => q(mpj),
- q(4415) => q(mpk),
- q(4416) => q(mpl),
- q(4417) => q(mpm),
- q(4418) => q(mpn),
- q(4419) => q(mpo),
- q(4420) => q(mpp),
- q(4421) => q(mpq),
- q(4422) => q(mpr),
- q(4423) => q(mps),
- q(4424) => q(mpt),
- q(4425) => q(mpu),
- q(4426) => q(mpv),
- q(4427) => q(mpw),
- q(4428) => q(mpx),
- q(4429) => q(mpy),
- q(4430) => q(mpz),
- q(4431) => q(mqa),
- q(4432) => q(mqb),
- q(4433) => q(mqc),
- q(4434) => q(mqe),
- q(4435) => q(mqf),
- q(4436) => q(mqg),
- q(4437) => q(mqh),
- q(4438) => q(mqi),
- q(4439) => q(mqj),
- q(4440) => q(mqk),
- q(4441) => q(mql),
- q(4442) => q(mqm),
- q(4443) => q(mqn),
- q(4444) => q(mqo),
- q(4445) => q(mqp),
- q(4446) => q(mqq),
- q(4447) => q(mqr),
- q(4448) => q(mqs),
- q(4449) => q(mqt),
- q(4450) => q(mqu),
- q(4451) => q(mqv),
- q(4452) => q(mqw),
- q(4453) => q(mqx),
- q(4454) => q(mqy),
- q(4455) => q(mqz),
- q(4456) => q(mra),
- q(4457) => q(mrb),
- q(4458) => q(mrc),
- q(4459) => q(mrd),
- q(4460) => q(mre),
- q(4461) => q(mrf),
- q(4462) => q(mrg),
- q(4463) => q(mrh),
- q(4464) => q(mrj),
- q(4465) => q(mrk),
- q(4466) => q(mrl),
- q(4467) => q(mrm),
- q(4468) => q(mrn),
- q(4469) => q(mro),
- q(4470) => q(mrp),
- q(4471) => q(mrq),
- q(4472) => q(mrr),
- q(4473) => q(mrs),
- q(4474) => q(mrt),
- q(4475) => q(mru),
- q(4476) => q(mrv),
- q(4477) => q(mrw),
- q(4478) => q(mrx),
- q(4479) => q(mry),
- q(4480) => q(mrz),
- q(4481) => q(msb),
- q(4482) => q(msc),
- q(4483) => q(msd),
- q(4484) => q(mse),
- q(4485) => q(msf),
- q(4486) => q(msg),
- q(4487) => q(msh),
- q(4488) => q(msi),
- q(4489) => q(msj),
- q(4490) => q(msk),
- q(4491) => q(msl),
- q(4492) => q(msm),
- q(4493) => q(msn),
- q(4494) => q(mso),
- q(4495) => q(msp),
- q(4496) => q(msq),
- q(4497) => q(msr),
- q(4498) => q(mss),
- q(4499) => q(msu),
- q(4500) => q(msv),
- q(4501) => q(msw),
- q(4502) => q(msx),
- q(4503) => q(msy),
- q(4504) => q(msz),
- q(4505) => q(mta),
- q(4506) => q(mtb),
- q(4507) => q(mtc),
- q(4508) => q(mtd),
- q(4509) => q(mte),
- q(4510) => q(mtf),
- q(4511) => q(mtg),
- q(4512) => q(mth),
- q(4513) => q(mti),
- q(4514) => q(mtj),
- q(4515) => q(mtk),
- q(4516) => q(mtl),
- q(4517) => q(mtm),
- q(4518) => q(mtn),
- q(4519) => q(mto),
- q(4520) => q(mtp),
- q(4521) => q(mtq),
- q(4522) => q(mtr),
- q(4523) => q(mts),
- q(4524) => q(mtt),
- q(4525) => q(mtu),
- q(4526) => q(mtv),
- q(4527) => q(mtw),
- q(4528) => q(mtx),
- q(4529) => q(mty),
- q(4530) => q(mua),
- q(4531) => q(mub),
- q(4532) => q(muc),
- q(4533) => q(mud),
- q(4534) => q(mue),
- q(4535) => q(mug),
- q(4536) => q(muh),
- q(4537) => q(mui),
- q(4538) => q(muj),
- q(4539) => q(muk),
- q(4540) => q(mum),
- q(4541) => q(muo),
- q(4542) => q(mup),
- q(4543) => q(muq),
- q(4544) => q(mur),
- q(4545) => q(mut),
- q(4546) => q(muu),
- q(4547) => q(muv),
- q(4548) => q(mux),
- q(4549) => q(muy),
- q(4550) => q(muz),
- q(4551) => q(mva),
- q(4552) => q(mvb),
- q(4553) => q(mvd),
- q(4554) => q(mve),
- q(4555) => q(mvf),
- q(4556) => q(mvg),
- q(4557) => q(mvh),
- q(4558) => q(mvi),
- q(4559) => q(mvk),
- q(4560) => q(mvl),
- q(4561) => q(mvm),
- q(4562) => q(mvn),
- q(4563) => q(mvo),
- q(4564) => q(mvp),
- q(4565) => q(mvq),
- q(4566) => q(mvr),
- q(4567) => q(mvs),
- q(4568) => q(mvt),
- q(4569) => q(mvu),
- q(4570) => q(mvv),
- q(4571) => q(mvw),
- q(4572) => q(mvx),
- q(4573) => q(mvy),
- q(4574) => q(mvz),
- q(4575) => q(mwa),
- q(4576) => q(mwb),
- q(4577) => q(mwc),
- q(4578) => q(mwd),
- q(4579) => q(mwe),
- q(4580) => q(mwf),
- q(4581) => q(mwg),
- q(4582) => q(mwh),
- q(4583) => q(mwi),
- q(4584) => q(mwj),
- q(4585) => q(mwk),
- q(4586) => q(mwm),
- q(4587) => q(mwn),
- q(4588) => q(mwo),
- q(4589) => q(mwp),
- q(4590) => q(mwq),
- q(4591) => q(mws),
- q(4592) => q(mwt),
- q(4593) => q(mwu),
- q(4594) => q(mwv),
- q(4595) => q(mww),
- q(4596) => q(mwx),
- q(4597) => q(mwy),
- q(4598) => q(mwz),
- q(4599) => q(mxa),
- q(4600) => q(mxb),
- q(4601) => q(mxc),
- q(4602) => q(mxd),
- q(4603) => q(mxe),
- q(4604) => q(mxf),
- q(4605) => q(mxg),
- q(4606) => q(mxh),
- q(4607) => q(mxi),
- q(4608) => q(mxj),
- q(4609) => q(mxk),
- q(4610) => q(mxl),
- q(4611) => q(mxm),
- q(4612) => q(mxn),
- q(4613) => q(mxo),
- q(4614) => q(mxp),
- q(4615) => q(mxq),
- q(4616) => q(mxr),
- q(4617) => q(mxs),
- q(4618) => q(mxt),
- q(4619) => q(mxu),
- q(4620) => q(mxv),
- q(4621) => q(mxw),
- q(4622) => q(mxx),
- q(4623) => q(mxy),
- q(4624) => q(mxz),
- q(4625) => q(myb),
- q(4626) => q(myc),
- q(4627) => q(myd),
- q(4628) => q(mye),
- q(4629) => q(myf),
- q(4630) => q(myg),
- q(4631) => q(myh),
- q(4632) => q(myi),
- q(4633) => q(myj),
- q(4634) => q(myk),
- q(4635) => q(myl),
- q(4636) => q(mym),
- q(4637) => q(myo),
- q(4638) => q(myp),
- q(4639) => q(myq),
- q(4640) => q(myr),
- q(4641) => q(mys),
- q(4642) => q(myu),
- q(4643) => q(myw),
- q(4644) => q(myx),
- q(4645) => q(myy),
- q(4646) => q(myz),
- q(4647) => q(mza),
- q(4648) => q(mzb),
- q(4649) => q(mzc),
- q(4650) => q(mzd),
- q(4651) => q(mze),
- q(4652) => q(mzg),
- q(4653) => q(mzh),
- q(4654) => q(mzi),
- q(4655) => q(mzj),
- q(4656) => q(mzk),
- q(4657) => q(mzl),
- q(4658) => q(mzm),
- q(4659) => q(mzn),
- q(4660) => q(mzo),
- q(4661) => q(mzp),
- q(4662) => q(mzq),
- q(4663) => q(mzr),
- q(4664) => q(mzs),
- q(4665) => q(mzt),
- q(4666) => q(mzu),
- q(4667) => q(mzv),
- q(4668) => q(mzw),
- q(4669) => q(mzx),
- q(4670) => q(mzy),
- q(4671) => q(mzz),
- q(4672) => q(naa),
- q(4673) => q(nab),
- q(4674) => q(nac),
- q(4675) => q(nad),
- q(4676) => q(nae),
- q(4677) => q(naf),
- q(4678) => q(nag),
- q(4679) => q(naj),
- q(4680) => q(nak),
- q(4681) => q(nal),
- q(4682) => q(nam),
- q(4683) => q(nan),
- q(4684) => q(nao),
- q(4685) => q(naq),
- q(4686) => q(nar),
- q(4687) => q(nas),
- q(4688) => q(nat),
- q(4689) => q(naw),
- q(4690) => q(nax),
- q(4691) => q(nay),
- q(4692) => q(naz),
- q(4693) => q(nba),
- q(4694) => q(nbb),
- q(4695) => q(nbc),
- q(4696) => q(nbd),
- q(4697) => q(nbe),
- q(4698) => q(nbg),
- q(4699) => q(nbh),
- q(4700) => q(nbi),
- q(4701) => q(nbj),
- q(4702) => q(nbk),
- q(4703) => q(nbm),
- q(4704) => q(nbn),
- q(4705) => q(nbo),
- q(4706) => q(nbp),
- q(4707) => q(nbq),
- q(4708) => q(nbr),
- q(4709) => q(nbs),
- q(4710) => q(nbt),
- q(4711) => q(nbu),
- q(4712) => q(nbv),
- q(4713) => q(nbw),
- q(4714) => q(nbx),
- q(4715) => q(nby),
- q(4716) => q(nca),
- q(4717) => q(ncb),
- q(4718) => q(ncc),
- q(4719) => q(ncd),
- q(4720) => q(nce),
- q(4721) => q(ncf),
- q(4722) => q(ncg),
- q(4723) => q(nch),
- q(4724) => q(nci),
- q(4725) => q(ncj),
- q(4726) => q(nck),
- q(4727) => q(ncl),
- q(4728) => q(ncm),
- q(4729) => q(ncn),
- q(4730) => q(nco),
- q(4731) => q(ncp),
- q(4732) => q(ncr),
- q(4733) => q(ncs),
- q(4734) => q(nct),
- q(4735) => q(ncu),
- q(4736) => q(ncx),
- q(4737) => q(ncz),
- q(4738) => q(nda),
- q(4739) => q(ndb),
- q(4740) => q(ndc),
- q(4741) => q(ndd),
- q(4742) => q(ndf),
- q(4743) => q(ndg),
- q(4744) => q(ndh),
- q(4745) => q(ndi),
- q(4746) => q(ndj),
- q(4747) => q(ndk),
- q(4748) => q(ndl),
- q(4749) => q(ndm),
- q(4750) => q(ndn),
- q(4751) => q(ndp),
- q(4752) => q(ndq),
- q(4753) => q(ndr),
- q(4754) => q(ndt),
- q(4755) => q(ndu),
- q(4756) => q(ndv),
- q(4757) => q(ndw),
- q(4758) => q(ndx),
- q(4759) => q(ndy),
- q(4760) => q(ndz),
- q(4761) => q(nea),
- q(4762) => q(neb),
- q(4763) => q(nec),
- q(4764) => q(ned),
- q(4765) => q(nee),
- q(4766) => q(nef),
- q(4767) => q(neg),
- q(4768) => q(neh),
- q(4769) => q(nei),
- q(4770) => q(nej),
- q(4771) => q(nek),
- q(4772) => q(nem),
- q(4773) => q(nen),
- q(4774) => q(neo),
- q(4775) => q(neq),
- q(4776) => q(ner),
- q(4777) => q(nes),
- q(4778) => q(net),
- q(4779) => q(nev),
- q(4780) => q(nex),
- q(4781) => q(ney),
- q(4782) => q(nez),
- q(4783) => q(nfa),
- q(4784) => q(nfd),
- q(4785) => q(nfl),
- q(4786) => q(nfr),
- q(4787) => q(nfu),
- q(4788) => q(nga),
- q(4789) => q(ngb),
- q(4790) => q(ngc),
- q(4791) => q(ngd),
- q(4792) => q(nge),
- q(4793) => q(ngg),
- q(4794) => q(ngh),
- q(4795) => q(ngi),
- q(4796) => q(ngj),
- q(4797) => q(ngk),
- q(4798) => q(ngl),
- q(4799) => q(ngm),
- q(4800) => q(ngn),
- q(4801) => q(ngo),
- q(4802) => q(ngp),
- q(4803) => q(ngq),
- q(4804) => q(ngr),
- q(4805) => q(ngs),
- q(4806) => q(ngt),
- q(4807) => q(ngu),
- q(4808) => q(ngv),
- q(4809) => q(ngw),
- q(4810) => q(ngx),
- q(4811) => q(ngy),
- q(4812) => q(ngz),
- q(4813) => q(nha),
- q(4814) => q(nhb),
- q(4815) => q(nhc),
- q(4816) => q(nhd),
- q(4817) => q(nhe),
- q(4818) => q(nhf),
- q(4819) => q(nhg),
- q(4820) => q(nhh),
- q(4821) => q(nhi),
- q(4822) => q(nhk),
- q(4823) => q(nhm),
- q(4824) => q(nhn),
- q(4825) => q(nho),
- q(4826) => q(nhp),
- q(4827) => q(nhq),
- q(4828) => q(nhr),
- q(4829) => q(nht),
- q(4830) => q(nhu),
- q(4831) => q(nhv),
- q(4832) => q(nhw),
- q(4833) => q(nhx),
- q(4834) => q(nhy),
- q(4835) => q(nhz),
- q(4836) => q(nib),
- q(4837) => q(nid),
- q(4838) => q(nie),
- q(4839) => q(nif),
- q(4840) => q(nig),
- q(4841) => q(nih),
- q(4842) => q(nii),
- q(4843) => q(nij),
- q(4844) => q(nik),
- q(4845) => q(nil),
- q(4846) => q(nim),
- q(4847) => q(nin),
- q(4848) => q(nio),
- q(4849) => q(niq),
- q(4850) => q(nir),
- q(4851) => q(nis),
- q(4852) => q(nit),
- q(4853) => q(niv),
- q(4854) => q(niw),
- q(4855) => q(nix),
- q(4856) => q(niy),
- q(4857) => q(niz),
- q(4858) => q(nja),
- q(4859) => q(njb),
- q(4860) => q(njd),
- q(4861) => q(njh),
- q(4862) => q(nji),
- q(4863) => q(njj),
- q(4864) => q(njl),
- q(4865) => q(njm),
- q(4866) => q(njn),
- q(4867) => q(njo),
- q(4868) => q(njr),
- q(4869) => q(njs),
- q(4870) => q(njt),
- q(4871) => q(nju),
- q(4872) => q(njx),
- q(4873) => q(njy),
- q(4874) => q(nka),
- q(4875) => q(nkb),
- q(4876) => q(nkc),
- q(4877) => q(nkd),
- q(4878) => q(nke),
- q(4879) => q(nkf),
- q(4880) => q(nkg),
- q(4881) => q(nkh),
- q(4882) => q(nki),
- q(4883) => q(nkj),
- q(4884) => q(nkk),
- q(4885) => q(nkm),
- q(4886) => q(nkn),
- q(4887) => q(nko),
- q(4888) => q(nkp),
- q(4889) => q(nkq),
- q(4890) => q(nkr),
- q(4891) => q(nks),
- q(4892) => q(nkt),
- q(4893) => q(nku),
- q(4894) => q(nkv),
- q(4895) => q(nkw),
- q(4896) => q(nkx),
- q(4897) => q(nkz),
- q(4898) => q(nla),
- q(4899) => q(nlc),
- q(4900) => q(nle),
- q(4901) => q(nlg),
- q(4902) => q(nli),
- q(4903) => q(nlj),
- q(4904) => q(nlk),
- q(4905) => q(nll),
- q(4906) => q(nln),
- q(4907) => q(nlo),
- q(4908) => q(nlr),
- q(4909) => q(nlu),
- q(4910) => q(nlv),
- q(4911) => q(nlx),
- q(4912) => q(nly),
- q(4913) => q(nlz),
- q(4914) => q(nma),
- q(4915) => q(nmb),
- q(4916) => q(nmc),
- q(4917) => q(nmd),
- q(4918) => q(nme),
- q(4919) => q(nmf),
- q(4920) => q(nmg),
- q(4921) => q(nmh),
- q(4922) => q(nmi),
- q(4923) => q(nmj),
- q(4924) => q(nmk),
- q(4925) => q(nml),
- q(4926) => q(nmm),
- q(4927) => q(nmn),
- q(4928) => q(nmo),
- q(4929) => q(nmp),
- q(4930) => q(nmq),
- q(4931) => q(nmr),
- q(4932) => q(nms),
- q(4933) => q(nmt),
- q(4934) => q(nmu),
- q(4935) => q(nmv),
- q(4936) => q(nmw),
- q(4937) => q(nmx),
- q(4938) => q(nmy),
- q(4939) => q(nmz),
- q(4940) => q(nna),
- q(4941) => q(nnb),
- q(4942) => q(nnc),
- q(4943) => q(nnd),
- q(4944) => q(nne),
- q(4945) => q(nnf),
- q(4946) => q(nng),
- q(4947) => q(nnh),
- q(4948) => q(nni),
- q(4949) => q(nnj),
- q(4950) => q(nnk),
- q(4951) => q(nnl),
- q(4952) => q(nnm),
- q(4953) => q(nnn),
- q(4954) => q(nnp),
- q(4955) => q(nnq),
- q(4956) => q(nnr),
- q(4957) => q(nns),
- q(4958) => q(nnt),
- q(4959) => q(nnu),
- q(4960) => q(nnv),
- q(4961) => q(nnw),
- q(4962) => q(nnx),
- q(4963) => q(nny),
- q(4964) => q(nnz),
- q(4965) => q(noa),
- q(4966) => q(noc),
- q(4967) => q(nod),
- q(4968) => q(noe),
- q(4969) => q(nof),
- q(4970) => q(noh),
- q(4971) => q(noi),
- q(4972) => q(noj),
- q(4973) => q(nok),
- q(4974) => q(nom),
- q(4975) => q(nop),
- q(4976) => q(noq),
- q(4977) => q(nos),
- q(4978) => q(not),
- q(4979) => q(nou),
- q(4980) => q(nov),
- q(4981) => q(now),
- q(4982) => q(noy),
- q(4983) => q(noz),
- q(4984) => q(npa),
- q(4985) => q(npb),
- q(4986) => q(nph),
- q(4987) => q(npl),
- q(4988) => q(npn),
- q(4989) => q(npo),
- q(4990) => q(nps),
- q(4991) => q(npu),
- q(4992) => q(npy),
- q(4993) => q(nqg),
- q(4994) => q(nqk),
- q(4995) => q(nqm),
- q(4996) => q(nqn),
- q(4997) => q(nra),
- q(4998) => q(nrb),
- q(4999) => q(nrc),
- q(5000) => q(nre),
- q(5001) => q(nrg),
- q(5002) => q(nri),
- q(5003) => q(nrl),
- q(5004) => q(nrm),
- q(5005) => q(nrn),
- q(5006) => q(nrp),
- q(5007) => q(nrr),
- q(5008) => q(nrt),
- q(5009) => q(nru),
- q(5010) => q(nrx),
- q(5011) => q(nrz),
- q(5012) => q(nsa),
- q(5013) => q(nsc),
- q(5014) => q(nsd),
- q(5015) => q(nse),
- q(5016) => q(nsg),
- q(5017) => q(nsh),
- q(5018) => q(nsi),
- q(5019) => q(nsk),
- q(5020) => q(nsl),
- q(5021) => q(nsm),
- q(5022) => q(nsn),
- q(5023) => q(nsp),
- q(5024) => q(nsq),
- q(5025) => q(nsr),
- q(5026) => q(nss),
- q(5027) => q(nst),
- q(5028) => q(nsu),
- q(5029) => q(nsv),
- q(5030) => q(nsw),
- q(5031) => q(nsx),
- q(5032) => q(nsy),
- q(5033) => q(nsz),
- q(5034) => q(nte),
- q(5035) => q(nti),
- q(5036) => q(ntj),
- q(5037) => q(ntk),
- q(5038) => q(ntm),
- q(5039) => q(nto),
- q(5040) => q(ntp),
- q(5041) => q(ntr),
- q(5042) => q(nts),
- q(5043) => q(ntu),
- q(5044) => q(ntw),
- q(5045) => q(nty),
- q(5046) => q(ntz),
- q(5047) => q(nua),
- q(5048) => q(nuc),
- q(5049) => q(nud),
- q(5050) => q(nue),
- q(5051) => q(nuf),
- q(5052) => q(nug),
- q(5053) => q(nuh),
- q(5054) => q(nui),
- q(5055) => q(nuj),
- q(5056) => q(nuk),
- q(5057) => q(nul),
- q(5058) => q(num),
- q(5059) => q(nun),
- q(5060) => q(nuo),
- q(5061) => q(nup),
- q(5062) => q(nuq),
- q(5063) => q(nur),
- q(5064) => q(nus),
- q(5065) => q(nut),
- q(5066) => q(nuu),
- q(5067) => q(nuv),
- q(5068) => q(nuw),
- q(5069) => q(nux),
- q(5070) => q(nuy),
- q(5071) => q(nuz),
- q(5072) => q(nvh),
- q(5073) => q(nvm),
- q(5074) => q(nwa),
- q(5075) => q(nwb),
- q(5076) => q(nwe),
- q(5077) => q(nwi),
- q(5078) => q(nwm),
- q(5079) => q(nwr),
- q(5080) => q(nwx),
- q(5081) => q(nwy),
- q(5082) => q(nxa),
- q(5083) => q(nxd),
- q(5084) => q(nxe),
- q(5085) => q(nxg),
- q(5086) => q(nxi),
- q(5087) => q(nxl),
- q(5088) => q(nxm),
- q(5089) => q(nxn),
- q(5090) => q(nxq),
- q(5091) => q(nxr),
- q(5092) => q(nxu),
- q(5093) => q(nxx),
- q(5094) => q(nyb),
- q(5095) => q(nyc),
- q(5096) => q(nyd),
- q(5097) => q(nye),
- q(5098) => q(nyf),
- q(5099) => q(nyg),
- q(5100) => q(nyh),
- q(5101) => q(nyi),
- q(5102) => q(nyj),
- q(5103) => q(nyk),
- q(5104) => q(nyl),
- q(5105) => q(nyp),
- q(5106) => q(nyq),
- q(5107) => q(nyr),
- q(5108) => q(nys),
- q(5109) => q(nyt),
- q(5110) => q(nyu),
- q(5111) => q(nyv),
- q(5112) => q(nyw),
- q(5113) => q(nyx),
- q(5114) => q(nyy),
- q(5115) => q(nza),
- q(5116) => q(nzb),
- q(5117) => q(nzk),
- q(5118) => q(nzm),
- q(5119) => q(nzs),
- q(5120) => q(nzu),
- q(5121) => q(nzy),
- q(5122) => q(nzz),
- q(5123) => q(oaa),
- q(5124) => q(oac),
- q(5125) => q(oar),
- q(5126) => q(oav),
- q(5127) => q(obi),
- q(5128) => q(obk),
- q(5129) => q(obl),
- q(5130) => q(obm),
- q(5131) => q(obo),
- q(5132) => q(obr),
- q(5133) => q(obt),
- q(5134) => q(obu),
- q(5135) => q(oca),
- q(5136) => q(och),
- q(5137) => q(oco),
- q(5138) => q(ocu),
- q(5139) => q(oda),
- q(5140) => q(odk),
- q(5141) => q(odt),
- q(5142) => q(odu),
- q(5143) => q(ofo),
- q(5144) => q(ofs),
- q(5145) => q(ofu),
- q(5146) => q(ogb),
- q(5147) => q(ogc),
- q(5148) => q(oge),
- q(5149) => q(ogg),
- q(5150) => q(ogo),
- q(5151) => q(ogu),
- q(5152) => q(oht),
- q(5153) => q(ohu),
- q(5154) => q(oia),
- q(5155) => q(oin),
- q(5156) => q(ojb),
- q(5157) => q(ojc),
- q(5158) => q(ojg),
- q(5159) => q(ojp),
- q(5160) => q(ojs),
- q(5161) => q(ojv),
- q(5162) => q(ojw),
- q(5163) => q(oka),
- q(5164) => q(okb),
- q(5165) => q(okd),
- q(5166) => q(oke),
- q(5167) => q(okh),
- q(5168) => q(oki),
- q(5169) => q(okj),
- q(5170) => q(okk),
- q(5171) => q(okl),
- q(5172) => q(okm),
- q(5173) => q(okn),
- q(5174) => q(oko),
- q(5175) => q(okr),
- q(5176) => q(oks),
- q(5177) => q(oku),
- q(5178) => q(okv),
- q(5179) => q(okx),
- q(5180) => q(ola),
- q(5181) => q(old),
- q(5182) => q(ole),
- q(5183) => q(olm),
- q(5184) => q(olo),
- q(5185) => q(olr),
- q(5186) => q(oma),
- q(5187) => q(omb),
- q(5188) => q(omc),
- q(5189) => q(ome),
- q(5190) => q(omg),
- q(5191) => q(omi),
- q(5192) => q(omk),
- q(5193) => q(oml),
- q(5194) => q(omn),
- q(5195) => q(omo),
- q(5196) => q(omp),
- q(5197) => q(omr),
- q(5198) => q(omt),
- q(5199) => q(omu),
- q(5200) => q(omw),
- q(5201) => q(omx),
- q(5202) => q(ona),
- q(5203) => q(onb),
- q(5204) => q(one),
- q(5205) => q(ong),
- q(5206) => q(oni),
- q(5207) => q(onj),
- q(5208) => q(onk),
- q(5209) => q(onn),
- q(5210) => q(ono),
- q(5211) => q(onp),
- q(5212) => q(onr),
- q(5213) => q(ons),
- q(5214) => q(ont),
- q(5215) => q(onu),
- q(5216) => q(onw),
- q(5217) => q(onx),
- q(5218) => q(ood),
- q(5219) => q(oog),
- q(5220) => q(oon),
- q(5221) => q(oor),
- q(5222) => q(oos),
- q(5223) => q(opa),
- q(5224) => q(opk),
- q(5225) => q(opm),
- q(5226) => q(opo),
- q(5227) => q(opt),
- q(5228) => q(opy),
- q(5229) => q(ora),
- q(5230) => q(orc),
- q(5231) => q(ore),
- q(5232) => q(org),
- q(5233) => q(orh),
- q(5234) => q(orn),
- q(5235) => q(oro),
- q(5236) => q(orr),
- q(5237) => q(ors),
- q(5238) => q(ort),
- q(5239) => q(oru),
- q(5240) => q(orv),
- q(5241) => q(orw),
- q(5242) => q(orx),
- q(5243) => q(orz),
- q(5244) => q(osc),
- q(5245) => q(osi),
- q(5246) => q(oso),
- q(5247) => q(osp),
- q(5248) => q(ost),
- q(5249) => q(osu),
- q(5250) => q(osx),
- q(5251) => q(otb),
- q(5252) => q(otd),
- q(5253) => q(ote),
- q(5254) => q(oti),
- q(5255) => q(otk),
- q(5256) => q(otl),
- q(5257) => q(otm),
- q(5258) => q(otn),
- q(5259) => q(otq),
- q(5260) => q(otr),
- q(5261) => q(ots),
- q(5262) => q(ott),
- q(5263) => q(otu),
- q(5264) => q(otw),
- q(5265) => q(otx),
- q(5266) => q(oty),
- q(5267) => q(otz),
- q(5268) => q(oua),
- q(5269) => q(oub),
- q(5270) => q(oue),
- q(5271) => q(oui),
- q(5272) => q(oum),
- q(5273) => q(oun),
- q(5274) => q(owi),
- q(5275) => q(owl),
- q(5276) => q(oyb),
- q(5277) => q(oyd),
- q(5278) => q(oym),
- q(5279) => q(oyy),
- q(5280) => q(ozm),
- q(5281) => q(pab),
- q(5282) => q(pac),
- q(5283) => q(pad),
- q(5284) => q(pae),
- q(5285) => q(paf),
- q(5286) => q(pah),
- q(5287) => q(pai),
- q(5288) => q(pak),
- q(5289) => q(pao),
- q(5290) => q(paq),
- q(5291) => q(par),
- q(5292) => q(pas),
- q(5293) => q(pat),
- q(5294) => q(pav),
- q(5295) => q(paw),
- q(5296) => q(pax),
- q(5297) => q(pay),
- q(5298) => q(paz),
- q(5299) => q(pbb),
- q(5300) => q(pbc),
- q(5301) => q(pbe),
- q(5302) => q(pbf),
- q(5303) => q(pbg),
- q(5304) => q(pbh),
- q(5305) => q(pbi),
- q(5306) => q(pbl),
- q(5307) => q(pbn),
- q(5308) => q(pbo),
- q(5309) => q(pbp),
- q(5310) => q(pbr),
- q(5311) => q(pbs),
- q(5312) => q(pbt),
- q(5313) => q(pbu),
- q(5314) => q(pbv),
- q(5315) => q(pby),
- q(5316) => q(pbz),
- q(5317) => q(pca),
- q(5318) => q(pcb),
- q(5319) => q(pcc),
- q(5320) => q(pcd),
- q(5321) => q(pce),
- q(5322) => q(pcf),
- q(5323) => q(pcg),
- q(5324) => q(pch),
- q(5325) => q(pci),
- q(5326) => q(pcj),
- q(5327) => q(pck),
- q(5328) => q(pcl),
- q(5329) => q(pcm),
- q(5330) => q(pcn),
- q(5331) => q(pcp),
- q(5332) => q(pcr),
- q(5333) => q(pcw),
- q(5334) => q(pda),
- q(5335) => q(pdc),
- q(5336) => q(pdi),
- q(5337) => q(pdn),
- q(5338) => q(pdo),
- q(5339) => q(pdt),
- q(5340) => q(pdu),
- q(5341) => q(pea),
- q(5342) => q(peb),
- q(5343) => q(ped),
- q(5344) => q(pee),
- q(5345) => q(pef),
- q(5346) => q(peg),
- q(5347) => q(peh),
- q(5348) => q(pei),
- q(5349) => q(pej),
- q(5350) => q(pek),
- q(5351) => q(pel),
- q(5352) => q(pem),
- q(5353) => q(pep),
- q(5354) => q(peq),
- q(5355) => q(pes),
- q(5356) => q(pev),
- q(5357) => q(pex),
- q(5358) => q(pey),
- q(5359) => q(pez),
- q(5360) => q(pfa),
- q(5361) => q(pfe),
- q(5362) => q(pfl),
- q(5363) => q(pga),
- q(5364) => q(pgg),
- q(5365) => q(pgi),
- q(5366) => q(pgk),
- q(5367) => q(pgl),
- q(5368) => q(pgn),
- q(5369) => q(pgs),
- q(5370) => q(pgu),
- q(5371) => q(pgy),
- q(5372) => q(pha),
- q(5373) => q(phd),
- q(5374) => q(phg),
- q(5375) => q(phh),
- q(5376) => q(phk),
- q(5377) => q(phl),
- q(5378) => q(phm),
- q(5379) => q(pho),
- q(5380) => q(phq),
- q(5381) => q(phr),
- q(5382) => q(pht),
- q(5383) => q(phu),
- q(5384) => q(phv),
- q(5385) => q(phw),
- q(5386) => q(pia),
- q(5387) => q(pib),
- q(5388) => q(pic),
- q(5389) => q(pid),
- q(5390) => q(pie),
- q(5391) => q(pif),
- q(5392) => q(pig),
- q(5393) => q(pih),
- q(5394) => q(pii),
- q(5395) => q(pij),
- q(5396) => q(pil),
- q(5397) => q(pim),
- q(5398) => q(pin),
- q(5399) => q(pio),
- q(5400) => q(pip),
- q(5401) => q(pir),
- q(5402) => q(pis),
- q(5403) => q(pit),
- q(5404) => q(piu),
- q(5405) => q(piv),
- q(5406) => q(piw),
- q(5407) => q(pix),
- q(5408) => q(piy),
- q(5409) => q(piz),
- q(5410) => q(pjt),
- q(5411) => q(pka),
- q(5412) => q(pkb),
- q(5413) => q(pkc),
- q(5414) => q(pkg),
- q(5415) => q(pkh),
- q(5416) => q(pkn),
- q(5417) => q(pko),
- q(5418) => q(pkp),
- q(5419) => q(pkr),
- q(5420) => q(pks),
- q(5421) => q(pkt),
- q(5422) => q(pku),
- q(5423) => q(pla),
- q(5424) => q(plb),
- q(5425) => q(plc),
- q(5426) => q(pld),
- q(5427) => q(ple),
- q(5428) => q(plg),
- q(5429) => q(plh),
- q(5430) => q(plj),
- q(5431) => q(plk),
- q(5432) => q(pll),
- q(5433) => q(pln),
- q(5434) => q(plo),
- q(5435) => q(plp),
- q(5436) => q(plq),
- q(5437) => q(plr),
- q(5438) => q(pls),
- q(5439) => q(plt),
- q(5440) => q(plu),
- q(5441) => q(plv),
- q(5442) => q(plw),
- q(5443) => q(ply),
- q(5444) => q(plz),
- q(5445) => q(pma),
- q(5446) => q(pmb),
- q(5447) => q(pmc),
- q(5448) => q(pme),
- q(5449) => q(pmf),
- q(5450) => q(pmh),
- q(5451) => q(pmi),
- q(5452) => q(pmj),
- q(5453) => q(pmk),
- q(5454) => q(pml),
- q(5455) => q(pmm),
- q(5456) => q(pmn),
- q(5457) => q(pmo),
- q(5458) => q(pmq),
- q(5459) => q(pmr),
- q(5460) => q(pms),
- q(5461) => q(pmt),
- q(5462) => q(pmu),
- q(5463) => q(pmw),
- q(5464) => q(pmx),
- q(5465) => q(pmy),
- q(5466) => q(pmz),
- q(5467) => q(pna),
- q(5468) => q(pnb),
- q(5469) => q(pnc),
- q(5470) => q(pne),
- q(5471) => q(png),
- q(5472) => q(pnh),
- q(5473) => q(pni),
- q(5474) => q(pnm),
- q(5475) => q(pnn),
- q(5476) => q(pno),
- q(5477) => q(pnp),
- q(5478) => q(pnq),
- q(5479) => q(pnr),
- q(5480) => q(pns),
- q(5481) => q(pnt),
- q(5482) => q(pnu),
- q(5483) => q(pnv),
- q(5484) => q(pnw),
- q(5485) => q(pnx),
- q(5486) => q(pny),
- q(5487) => q(pnz),
- q(5488) => q(poc),
- q(5489) => q(pod),
- q(5490) => q(poe),
- q(5491) => q(pof),
- q(5492) => q(pog),
- q(5493) => q(poh),
- q(5494) => q(poi),
- q(5495) => q(pok),
- q(5496) => q(pom),
- q(5497) => q(poo),
- q(5498) => q(pop),
- q(5499) => q(poq),
- q(5500) => q(pos),
- q(5501) => q(pot),
- q(5502) => q(pov),
- q(5503) => q(pow),
- q(5504) => q(pox),
- q(5505) => q(poy),
- q(5506) => q(ppa),
- q(5507) => q(ppe),
- q(5508) => q(ppi),
- q(5509) => q(ppk),
- q(5510) => q(ppl),
- q(5511) => q(ppm),
- q(5512) => q(ppn),
- q(5513) => q(ppo),
- q(5514) => q(ppp),
- q(5515) => q(ppq),
- q(5516) => q(ppr),
- q(5517) => q(pps),
- q(5518) => q(ppt),
- q(5519) => q(ppu),
- q(5520) => q(pqa),
- q(5521) => q(pqm),
- q(5522) => q(prb),
- q(5523) => q(prc),
- q(5524) => q(prd),
- q(5525) => q(pre),
- q(5526) => q(prf),
- q(5527) => q(prg),
- q(5528) => q(prh),
- q(5529) => q(pri),
- q(5530) => q(prk),
- q(5531) => q(prl),
- q(5532) => q(prm),
- q(5533) => q(prn),
- q(5534) => q(prp),
- q(5535) => q(prq),
- q(5536) => q(prr),
- q(5537) => q(prs),
- q(5538) => q(prt),
- q(5539) => q(pru),
- q(5540) => q(prw),
- q(5541) => q(prx),
- q(5542) => q(pry),
- q(5543) => q(prz),
- q(5544) => q(psa),
- q(5545) => q(psc),
- q(5546) => q(psd),
- q(5547) => q(pse),
- q(5548) => q(psg),
- q(5549) => q(psh),
- q(5550) => q(psi),
- q(5551) => q(psl),
- q(5552) => q(psm),
- q(5553) => q(psn),
- q(5554) => q(pso),
- q(5555) => q(psp),
- q(5556) => q(psq),
- q(5557) => q(psr),
- q(5558) => q(pss),
- q(5559) => q(pst),
- q(5560) => q(psu),
- q(5561) => q(psw),
- q(5562) => q(psy),
- q(5563) => q(pta),
- q(5564) => q(pth),
- q(5565) => q(pti),
- q(5566) => q(ptn),
- q(5567) => q(pto),
- q(5568) => q(ptp),
- q(5569) => q(ptr),
- q(5570) => q(ptt),
- q(5571) => q(ptu),
- q(5572) => q(ptv),
- q(5573) => q(ptw),
- q(5574) => q(pty),
- q(5575) => q(pua),
- q(5576) => q(pub),
- q(5577) => q(puc),
- q(5578) => q(pud),
- q(5579) => q(pue),
- q(5580) => q(puf),
- q(5581) => q(pug),
- q(5582) => q(pui),
- q(5583) => q(puj),
- q(5584) => q(puk),
- q(5585) => q(pum),
- q(5586) => q(puo),
- q(5587) => q(pup),
- q(5588) => q(puq),
- q(5589) => q(pur),
- q(5590) => q(put),
- q(5591) => q(puu),
- q(5592) => q(puw),
- q(5593) => q(pux),
- q(5594) => q(puy),
- q(5595) => q(puz),
- q(5596) => q(pwa),
- q(5597) => q(pwb),
- q(5598) => q(pwg),
- q(5599) => q(pwm),
- q(5600) => q(pwn),
- q(5601) => q(pwo),
- q(5602) => q(pwr),
- q(5603) => q(pww),
- q(5604) => q(pxm),
- q(5605) => q(pye),
- q(5606) => q(pym),
- q(5607) => q(pyn),
- q(5608) => q(pys),
- q(5609) => q(pyu),
- q(5610) => q(pyx),
- q(5611) => q(pyy),
- q(5612) => q(pzn),
- q(5613) => q(qua),
- q(5614) => q(qub),
- q(5615) => q(quc),
- q(5616) => q(qud),
- q(5617) => q(quf),
- q(5618) => q(qug),
- q(5619) => q(quh),
- q(5620) => q(qui),
- q(5621) => q(quk),
- q(5622) => q(qul),
- q(5623) => q(qum),
- q(5624) => q(qun),
- q(5625) => q(qup),
- q(5626) => q(quq),
- q(5627) => q(qur),
- q(5628) => q(qus),
- q(5629) => q(quv),
- q(5630) => q(quw),
- q(5631) => q(qux),
- q(5632) => q(quy),
- q(5633) => q(quz),
- q(5634) => q(qva),
- q(5635) => q(qvc),
- q(5636) => q(qve),
- q(5637) => q(qvh),
- q(5638) => q(qvi),
- q(5639) => q(qvj),
- q(5640) => q(qvl),
- q(5641) => q(qvm),
- q(5642) => q(qvn),
- q(5643) => q(qvo),
- q(5644) => q(qvp),
- q(5645) => q(qvs),
- q(5646) => q(qvw),
- q(5647) => q(qvy),
- q(5648) => q(qvz),
- q(5649) => q(qwa),
- q(5650) => q(qwc),
- q(5651) => q(qwh),
- q(5652) => q(qwm),
- q(5653) => q(qws),
- q(5654) => q(qwt),
- q(5655) => q(qxa),
- q(5656) => q(qxc),
- q(5657) => q(qxh),
- q(5658) => q(qxl),
- q(5659) => q(qxn),
- q(5660) => q(qxo),
- q(5661) => q(qxp),
- q(5662) => q(qxq),
- q(5663) => q(qxr),
- q(5664) => q(qxs),
- q(5665) => q(qxt),
- q(5666) => q(qxu),
- q(5667) => q(qxw),
- q(5668) => q(qya),
- q(5669) => q(qyp),
- q(5670) => q(raa),
- q(5671) => q(rab),
- q(5672) => q(rac),
- q(5673) => q(rad),
- q(5674) => q(raf),
- q(5675) => q(rag),
- q(5676) => q(rah),
- q(5677) => q(rai),
- q(5678) => q(rak),
- q(5679) => q(ral),
- q(5680) => q(ram),
- q(5681) => q(ran),
- q(5682) => q(rao),
- q(5683) => q(raq),
- q(5684) => q(ras),
- q(5685) => q(rat),
- q(5686) => q(rau),
- q(5687) => q(rav),
- q(5688) => q(raw),
- q(5689) => q(rax),
- q(5690) => q(ray),
- q(5691) => q(raz),
- q(5692) => q(rbb),
- q(5693) => q(rbk),
- q(5694) => q(rbl),
- q(5695) => q(rcf),
- q(5696) => q(rdb),
- q(5697) => q(rea),
- q(5698) => q(reb),
- q(5699) => q(ree),
- q(5700) => q(reg),
- q(5701) => q(rei),
- q(5702) => q(rej),
- q(5703) => q(rel),
- q(5704) => q(rem),
- q(5705) => q(ren),
- q(5706) => q(rer),
- q(5707) => q(res),
- q(5708) => q(ret),
- q(5709) => q(rey),
- q(5710) => q(rga),
- q(5711) => q(rge),
- q(5712) => q(rgk),
- q(5713) => q(rgn),
- q(5714) => q(rgr),
- q(5715) => q(rgs),
- q(5716) => q(rgu),
- q(5717) => q(rhg),
- q(5718) => q(rhp),
- q(5719) => q(ria),
- q(5720) => q(rie),
- q(5721) => q(rif),
- q(5722) => q(ril),
- q(5723) => q(rim),
- q(5724) => q(rin),
- q(5725) => q(rir),
- q(5726) => q(rit),
- q(5727) => q(riu),
- q(5728) => q(rjg),
- q(5729) => q(rji),
- q(5730) => q(rjs),
- q(5731) => q(rka),
- q(5732) => q(rkb),
- q(5733) => q(rkh),
- q(5734) => q(rki),
- q(5735) => q(rkm),
- q(5736) => q(rkt),
- q(5737) => q(rma),
- q(5738) => q(rmb),
- q(5739) => q(rmc),
- q(5740) => q(rmd),
- q(5741) => q(rme),
- q(5742) => q(rmf),
- q(5743) => q(rmg),
- q(5744) => q(rmh),
- q(5745) => q(rmi),
- q(5746) => q(rmk),
- q(5747) => q(rml),
- q(5748) => q(rmm),
- q(5749) => q(rmn),
- q(5750) => q(rmo),
- q(5751) => q(rmp),
- q(5752) => q(rmq),
- q(5753) => q(rms),
- q(5754) => q(rmt),
- q(5755) => q(rmu),
- q(5756) => q(rmv),
- q(5757) => q(rmw),
- q(5758) => q(rmx),
- q(5759) => q(rmy),
- q(5760) => q(rmz),
- q(5761) => q(rna),
- q(5762) => q(rnd),
- q(5763) => q(rng),
- q(5764) => q(rnl),
- q(5765) => q(rnn),
- q(5766) => q(rnp),
- q(5767) => q(rnw),
- q(5768) => q(rob),
- q(5769) => q(roc),
- q(5770) => q(rod),
- q(5771) => q(roe),
- q(5772) => q(rof),
- q(5773) => q(rog),
- q(5774) => q(rol),
- q(5775) => q(roo),
- q(5776) => q(rop),
- q(5777) => q(ror),
- q(5778) => q(rou),
- q(5779) => q(row),
- q(5780) => q(rpn),
- q(5781) => q(rpt),
- q(5782) => q(rri),
- q(5783) => q(rro),
- q(5784) => q(rsb),
- q(5785) => q(rsi),
- q(5786) => q(rsl),
- q(5787) => q(rth),
- q(5788) => q(rtm),
- q(5789) => q(rtw),
- q(5790) => q(rub),
- q(5791) => q(ruc),
- q(5792) => q(rue),
- q(5793) => q(ruf),
- q(5794) => q(rug),
- q(5795) => q(ruh),
- q(5796) => q(rui),
- q(5797) => q(ruk),
- q(5798) => q(ruo),
- q(5799) => q(ruq),
- q(5800) => q(rut),
- q(5801) => q(ruu),
- q(5802) => q(ruy),
- q(5803) => q(ruz),
- q(5804) => q(rwa),
- q(5805) => q(rwk),
- q(5806) => q(rwm),
- q(5807) => q(rwo),
- q(5808) => q(rwr),
- q(5809) => q(ryn),
- q(5810) => q(rys),
- q(5811) => q(ryu),
- q(5812) => q(saa),
- q(5813) => q(sab),
- q(5814) => q(sac),
- q(5815) => q(sae),
- q(5816) => q(saf),
- q(5817) => q(saj),
- q(5818) => q(sak),
- q(5819) => q(sao),
- q(5820) => q(sap),
- q(5821) => q(saq),
- q(5822) => q(sar),
- q(5823) => q(sau),
- q(5824) => q(sav),
- q(5825) => q(saw),
- q(5826) => q(sax),
- q(5827) => q(say),
- q(5828) => q(saz),
- q(5829) => q(sba),
- q(5830) => q(sbb),
- q(5831) => q(sbc),
- q(5832) => q(sbd),
- q(5833) => q(slc),
- q(5834) => q(sbf),
- q(5835) => q(sbg),
- q(5836) => q(sbh),
- q(5837) => q(sbi),
- q(5838) => q(sbj),
- q(5839) => q(sbk),
- q(5840) => q(sbl),
- q(5841) => q(sbm),
- q(5842) => q(sbn),
- q(5843) => q(sbo),
- q(5844) => q(sbp),
- q(5845) => q(sbq),
- q(5846) => q(sbr),
- q(5847) => q(sbs),
- q(5848) => q(sbt),
- q(5849) => q(sbu),
- q(5850) => q(sbv),
- q(5851) => q(sbw),
- q(5852) => q(sbx),
- q(5853) => q(sby),
- q(5854) => q(sbz),
- q(5855) => q(sca),
- q(5856) => q(scb),
- q(5857) => q(sce),
- q(5858) => q(scf),
- q(5859) => q(scg),
- q(5860) => q(sch),
- q(5861) => q(sci),
- q(5862) => q(sck),
- q(5863) => q(scl),
- q(5864) => q(scp),
- q(5865) => q(scq),
- q(5866) => q(scs),
- q(5867) => q(scu),
- q(5868) => q(scv),
- q(5869) => q(scw),
- q(5870) => q(scx),
- q(5871) => q(sda),
- q(5872) => q(sdb),
- q(5873) => q(sdc),
- q(5874) => q(sde),
- q(5875) => q(sdf),
- q(5876) => q(sdg),
- q(5877) => q(sdh),
- q(5878) => q(sdj),
- q(5879) => q(sdk),
- q(5880) => q(sdl),
- q(5881) => q(sdm),
- q(5882) => q(sdn),
- q(5883) => q(sdo),
- q(5884) => q(sdp),
- q(5885) => q(sdr),
- q(5886) => q(sds),
- q(5887) => q(sdt),
- q(5888) => q(sdu),
- q(5889) => q(sdx),
- q(5890) => q(sdz),
- q(5891) => q(sea),
- q(5892) => q(seb),
- q(5893) => q(sec),
- q(5894) => q(sed),
- q(5895) => q(see),
- q(5896) => q(sef),
- q(5897) => q(seg),
- q(5898) => q(seh),
- q(5899) => q(sei),
- q(5900) => q(sej),
- q(5901) => q(sek),
- q(5902) => q(sen),
- q(5903) => q(seo),
- q(5904) => q(sep),
- q(5905) => q(seq),
- q(5906) => q(ser),
- q(5907) => q(ses),
- q(5908) => q(set),
- q(5909) => q(seu),
- q(5910) => q(sev),
- q(5911) => q(sew),
- q(5912) => q(sey),
- q(5913) => q(sez),
- q(5914) => q(sfb),
- q(5915) => q(sfm),
- q(5916) => q(sfs),
- q(5917) => q(sfw),
- q(5918) => q(sgb),
- q(5919) => q(sgc),
- q(5920) => q(sgd),
- q(5921) => q(sge),
- q(5922) => q(sgg),
- q(5923) => q(sgh),
- q(5924) => q(sgi),
- q(5925) => q(sgk),
- q(5926) => q(sgm),
- q(5927) => q(sgo),
- q(5928) => q(sgp),
- q(5929) => q(sgr),
- q(5930) => q(sgs),
- q(5931) => q(sgt),
- q(5932) => q(sgu),
- q(5933) => q(sgw),
- q(5934) => q(sgx),
- q(5935) => q(sgy),
- q(5936) => q(sgz),
- q(5937) => q(sha),
- q(5938) => q(shb),
- q(5939) => q(shc),
- q(5940) => q(shd),
- q(5941) => q(she),
- q(5942) => q(shg),
- q(5943) => q(shh),
- q(5944) => q(shi),
- q(5945) => q(shj),
- q(5946) => q(shk),
- q(5947) => q(shl),
- q(5948) => q(shm),
- q(5949) => q(sho),
- q(5950) => q(shp),
- q(5951) => q(shq),
- q(5952) => q(shr),
- q(5953) => q(shs),
- q(5954) => q(sht),
- q(5955) => q(shu),
- q(5956) => q(shv),
- q(5957) => q(shw),
- q(5958) => q(shx),
- q(5959) => q(shy),
- q(5960) => q(shz),
- q(5961) => q(sia),
- q(5962) => q(sib),
- q(5963) => q(sie),
- q(5964) => q(sif),
- q(5965) => q(sig),
- q(5966) => q(sih),
- q(5967) => q(sii),
- q(5968) => q(sij),
- q(5969) => q(sik),
- q(5970) => q(sil),
- q(5971) => q(sim),
- q(5972) => q(sip),
- q(5973) => q(siq),
- q(5974) => q(sir),
- q(5975) => q(sis),
- q(5976) => q(siu),
- q(5977) => q(siv),
- q(5978) => q(siw),
- q(5979) => q(six),
- q(5980) => q(siy),
- q(5981) => q(siz),
- q(5982) => q(sja),
- q(5983) => q(sjb),
- q(5984) => q(sjd),
- q(5985) => q(sje),
- q(5986) => q(sjg),
- q(5987) => q(sjk),
- q(5988) => q(sjl),
- q(5989) => q(sjm),
- q(5990) => q(sjn),
- q(5991) => q(sjo),
- q(5992) => q(sjp),
- q(5993) => q(sjr),
- q(5994) => q(sjs),
- q(5995) => q(sjt),
- q(5996) => q(sju),
- q(5997) => q(sjw),
- q(5998) => q(ska),
- q(5999) => q(skb),
- q(6000) => q(skc),
- q(6001) => q(skd),
- q(6002) => q(ske),
- q(6003) => q(skf),
- q(6004) => q(skg),
- q(6005) => q(skh),
- q(6006) => q(ski),
- q(6007) => q(skj),
- q(6008) => q(skk),
- q(6009) => q(skm),
- q(6010) => q(skn),
- q(6011) => q(sko),
- q(6012) => q(skp),
- q(6013) => q(skq),
- q(6014) => q(skr),
- q(6015) => q(sks),
- q(6016) => q(skt),
- q(6017) => q(sku),
- q(6018) => q(skv),
- q(6019) => q(skw),
- q(6020) => q(skx),
- q(6021) => q(sky),
- q(6022) => q(skz),
- q(6023) => q(sld),
- q(6024) => q(sle),
- q(6025) => q(slf),
- q(6026) => q(slg),
- q(6027) => q(slh),
- q(6028) => q(sli),
- q(6029) => q(slj),
- q(6030) => q(sll),
- q(6031) => q(slm),
- q(6032) => q(sln),
- q(6033) => q(slp),
- q(6034) => q(slq),
- q(6035) => q(slr),
- q(6036) => q(sls),
- q(6037) => q(slt),
- q(6038) => q(slu),
- q(6039) => q(slw),
- q(6040) => q(slx),
- q(6041) => q(sly),
- q(6042) => q(slz),
- q(6043) => q(smb),
- q(6044) => q(smc),
- q(6045) => q(smd),
- q(6046) => q(smf),
- q(6047) => q(smg),
- q(6048) => q(smh),
- q(6049) => q(smk),
- q(6050) => q(sml),
- q(6051) => q(smm),
- q(6052) => q(smp),
- q(6053) => q(smq),
- q(6054) => q(smr),
- q(6055) => q(smt),
- q(6056) => q(smu),
- q(6057) => q(smv),
- q(6058) => q(smw),
- q(6059) => q(smx),
- q(6060) => q(smy),
- q(6061) => q(smz),
- q(6062) => q(snb),
- q(6063) => q(snc),
- q(6064) => q(sne),
- q(6065) => q(snf),
- q(6066) => q(sng),
- q(6067) => q(snh),
- q(6068) => q(sni),
- q(6069) => q(snj),
- q(6070) => q(snl),
- q(6071) => q(snm),
- q(6072) => q(snn),
- q(6073) => q(sno),
- q(6074) => q(snp),
- q(6075) => q(snq),
- q(6076) => q(snr),
- q(6077) => q(sns),
- q(6078) => q(snu),
- q(6079) => q(snv),
- q(6080) => q(snw),
- q(6081) => q(snx),
- q(6082) => q(sny),
- q(6083) => q(snz),
- q(6084) => q(soa),
- q(6085) => q(sob),
- q(6086) => q(soc),
- q(6087) => q(sod),
- q(6088) => q(soe),
- q(6089) => q(soh),
- q(6090) => q(soi),
- q(6091) => q(soj),
- q(6092) => q(sok),
- q(6093) => q(sol),
- q(6094) => q(soo),
- q(6095) => q(sop),
- q(6096) => q(soq),
- q(6097) => q(sor),
- q(6098) => q(sos),
- q(6099) => q(sou),
- q(6100) => q(sov),
- q(6101) => q(sow),
- q(6102) => q(sox),
- q(6103) => q(soy),
- q(6104) => q(soz),
- q(6105) => q(spb),
- q(6106) => q(spc),
- q(6107) => q(spd),
- q(6108) => q(spe),
- q(6109) => q(spg),
- q(6110) => q(spi),
- q(6111) => q(spk),
- q(6112) => q(spl),
- q(6113) => q(spm),
- q(6114) => q(spo),
- q(6115) => q(spp),
- q(6116) => q(spq),
- q(6117) => q(spr),
- q(6118) => q(sps),
- q(6119) => q(spt),
- q(6120) => q(spu),
- q(6121) => q(spx),
- q(6122) => q(spy),
- q(6123) => q(sqa),
- q(6124) => q(sqh),
- q(6125) => q(sqm),
- q(6126) => q(sqn),
- q(6127) => q(sqo),
- q(6128) => q(sqq),
- q(6129) => q(sqr),
- q(6130) => q(sqs),
- q(6131) => q(sqt),
- q(6132) => q(squ),
- q(6133) => q(sra),
- q(6134) => q(srb),
- q(6135) => q(src),
- q(6136) => q(sre),
- q(6137) => q(srf),
- q(6138) => q(srg),
- q(6139) => q(srh),
- q(6140) => q(sri),
- q(6141) => q(srk),
- q(6142) => q(srl),
- q(6143) => q(srm),
- q(6144) => q(sro),
- q(6145) => q(srq),
- q(6146) => q(srs),
- q(6147) => q(srt),
- q(6148) => q(sru),
- q(6149) => q(srv),
- q(6150) => q(srw),
- q(6151) => q(srx),
- q(6152) => q(sry),
- q(6153) => q(srz),
- q(6154) => q(ssb),
- q(6155) => q(ssc),
- q(6156) => q(ssd),
- q(6157) => q(sse),
- q(6158) => q(ssf),
- q(6159) => q(ssg),
- q(6160) => q(ssh),
- q(6161) => q(ssi),
- q(6162) => q(ssj),
- q(6163) => q(ssk),
- q(6164) => q(ssl),
- q(6165) => q(ssm),
- q(6166) => q(ssn),
- q(6167) => q(sso),
- q(6168) => q(ssp),
- q(6169) => q(ssq),
- q(6170) => q(ssr),
- q(6171) => q(sss),
- q(6172) => q(sst),
- q(6173) => q(ssu),
- q(6174) => q(ssv),
- q(6175) => q(ssx),
- q(6176) => q(ssy),
- q(6177) => q(ssz),
- q(6178) => q(sta),
- q(6179) => q(stb),
- q(6180) => q(std),
- q(6181) => q(ste),
- q(6182) => q(stf),
- q(6183) => q(stg),
- q(6184) => q(sth),
- q(6185) => q(sti),
- q(6186) => q(stj),
- q(6187) => q(stk),
- q(6188) => q(stl),
- q(6189) => q(stm),
- q(6190) => q(stn),
- q(6191) => q(sto),
- q(6192) => q(stp),
- q(6193) => q(stq),
- q(6194) => q(str),
- q(6195) => q(sts),
- q(6196) => q(stt),
- q(6197) => q(stu),
- q(6198) => q(stv),
- q(6199) => q(stw),
- q(6200) => q(sua),
- q(6201) => q(sub),
- q(6202) => q(suc),
- q(6203) => q(sue),
- q(6204) => q(sug),
- q(6205) => q(sui),
- q(6206) => q(suj),
- q(6207) => q(suq),
- q(6208) => q(sur),
- q(6209) => q(sut),
- q(6210) => q(suv),
- q(6211) => q(suw),
- q(6212) => q(suy),
- q(6213) => q(suz),
- q(6214) => q(sva),
- q(6215) => q(svb),
- q(6216) => q(svc),
- q(6217) => q(sve),
- q(6218) => q(svk),
- q(6219) => q(svr),
- q(6220) => q(svs),
- q(6221) => q(svx),
- q(6222) => q(swb),
- q(6223) => q(swc),
- q(6224) => q(swf),
- q(6225) => q(swg),
- q(6226) => q(swh),
- q(6227) => q(swi),
- q(6228) => q(swj),
- q(6229) => q(swk),
- q(6230) => q(swl),
- q(6231) => q(swm),
- q(6232) => q(swn),
- q(6233) => q(swo),
- q(6234) => q(swp),
- q(6235) => q(swq),
- q(6236) => q(swr),
- q(6237) => q(sws),
- q(6238) => q(swt),
- q(6239) => q(swu),
- q(6240) => q(swv),
- q(6241) => q(sww),
- q(6242) => q(swx),
- q(6243) => q(swy),
- q(6244) => q(sxb),
- q(6245) => q(sxc),
- q(6246) => q(sxe),
- q(6247) => q(sxg),
- q(6248) => q(sxk),
- q(6249) => q(sxl),
- q(6250) => q(sxm),
- q(6251) => q(sxn),
- q(6252) => q(sxo),
- q(6253) => q(sxr),
- q(6254) => q(sxs),
- q(6255) => q(sxu),
- q(6256) => q(sxw),
- q(6257) => q(sya),
- q(6258) => q(syb),
- q(6259) => q(syi),
- q(6260) => q(syk),
- q(6261) => q(syl),
- q(6262) => q(sym),
- q(6263) => q(syn),
- q(6264) => q(syo),
- q(6265) => q(sys),
- q(6266) => q(syw),
- q(6267) => q(syy),
- q(6268) => q(sza),
- q(6269) => q(szb),
- q(6270) => q(szc),
- q(6271) => q(szd),
- q(6272) => q(sze),
- q(6273) => q(szg),
- q(6274) => q(szl),
- q(6275) => q(szn),
- q(6276) => q(szp),
- q(6277) => q(szv),
- q(6278) => q(szw),
- q(6279) => q(taa),
- q(6280) => q(tab),
- q(6281) => q(tac),
- q(6282) => q(tad),
- q(6283) => q(tae),
- q(6284) => q(taf),
- q(6285) => q(tag),
- q(6286) => q(taj),
- q(6287) => q(tak),
- q(6288) => q(tal),
- q(6289) => q(tan),
- q(6290) => q(tao),
- q(6291) => q(tap),
- q(6292) => q(taq),
- q(6293) => q(tar),
- q(6294) => q(tas),
- q(6295) => q(tau),
- q(6296) => q(tav),
- q(6297) => q(taw),
- q(6298) => q(tax),
- q(6299) => q(tay),
- q(6300) => q(taz),
- q(6301) => q(tba),
- q(6302) => q(tbb),
- q(6303) => q(tbc),
- q(6304) => q(tbd),
- q(6305) => q(tbe),
- q(6306) => q(tbf),
- q(6307) => q(tbg),
- q(6308) => q(tbh),
- q(6309) => q(tbi),
- q(6310) => q(tbj),
- q(6311) => q(tbk),
- q(6312) => q(tbl),
- q(6313) => q(tbm),
- q(6314) => q(tbn),
- q(6315) => q(tbo),
- q(6316) => q(tbp),
- q(6317) => q(tbr),
- q(6318) => q(tbs),
- q(6319) => q(tbt),
- q(6320) => q(tbu),
- q(6321) => q(tbv),
- q(6322) => q(tbw),
- q(6323) => q(tbx),
- q(6324) => q(tby),
- q(6325) => q(tbz),
- q(6326) => q(tca),
- q(6327) => q(tcb),
- q(6328) => q(tcc),
- q(6329) => q(tcd),
- q(6330) => q(tce),
- q(6331) => q(tcf),
- q(6332) => q(tcg),
- q(6333) => q(tch),
- q(6334) => q(wbf),
- q(6335) => q(tck),
- q(6336) => q(tcl),
- q(6337) => q(tcm),
- q(6338) => q(tcn),
- q(6339) => q(tco),
- q(6340) => q(tcp),
- q(6341) => q(tcq),
- q(6342) => q(tcs),
- q(6343) => q(tct),
- q(6344) => q(tcu),
- q(6345) => q(tcw),
- q(6346) => q(tcx),
- q(6347) => q(tcy),
- q(6348) => q(tcz),
- q(6349) => q(tda),
- q(6350) => q(tdb),
- q(6351) => q(tdc),
- q(6352) => q(tdd),
- q(6353) => q(tde),
- q(6354) => q(tdf),
- q(6355) => q(tdg),
- q(6356) => q(tdh),
- q(6357) => q(tdi),
- q(6358) => q(tdj),
- q(6359) => q(tdk),
- q(6360) => q(tdl),
- q(6361) => q(tdn),
- q(6362) => q(tdo),
- q(6363) => q(tdq),
- q(6364) => q(tdr),
- q(6365) => q(tds),
- q(6366) => q(tdt),
- q(6367) => q(tdu),
- q(6368) => q(tdv),
- q(6369) => q(tdx),
- q(6370) => q(tdy),
- q(6371) => q(tea),
- q(6372) => q(teb),
- q(6373) => q(tec),
- q(6374) => q(ted),
- q(6375) => q(tee),
- q(6376) => q(tef),
- q(6377) => q(teg),
- q(6378) => q(teh),
- q(6379) => q(tei),
- q(6380) => q(tek),
- q(6381) => q(ten),
- q(6382) => q(teo),
- q(6383) => q(tep),
- q(6384) => q(teq),
- q(6385) => q(tes),
- q(6386) => q(teu),
- q(6387) => q(tev),
- q(6388) => q(tew),
- q(6389) => q(tex),
- q(6390) => q(tey),
- q(6391) => q(tfi),
- q(6392) => q(tfn),
- q(6393) => q(tfo),
- q(6394) => q(tfr),
- q(6395) => q(tft),
- q(6396) => q(tga),
- q(6397) => q(tgb),
- q(6398) => q(tgc),
- q(6399) => q(tgd),
- q(6400) => q(tge),
- q(6401) => q(tgf),
- q(6402) => q(tgg),
- q(6403) => q(tgh),
- q(6404) => q(tgi),
- q(6405) => q(tgn),
- q(6406) => q(tgo),
- q(6407) => q(tgp),
- q(6408) => q(tgq),
- q(6409) => q(tgr),
- q(6410) => q(tgs),
- q(6411) => q(tgt),
- q(6412) => q(tgu),
- q(6413) => q(tgv),
- q(6414) => q(tgw),
- q(6415) => q(tgx),
- q(6416) => q(tgy),
- q(6417) => q(thc),
- q(6418) => q(thd),
- q(6419) => q(the),
- q(6420) => q(thf),
- q(6421) => q(thh),
- q(6422) => q(thi),
- q(6423) => q(thk),
- q(6424) => q(thl),
- q(6425) => q(thm),
- q(6426) => q(thn),
- q(6427) => q(thp),
- q(6428) => q(thq),
- q(6429) => q(thr),
- q(6430) => q(ths),
- q(6431) => q(tht),
- q(6432) => q(thu),
- q(6433) => q(thv),
- q(6434) => q(thw),
- q(6435) => q(thx),
- q(6436) => q(thy),
- q(6437) => q(thz),
- q(6438) => q(tia),
- q(6439) => q(tic),
- q(6440) => q(tid),
- q(6441) => q(tif),
- q(6442) => q(tih),
- q(6443) => q(tii),
- q(6444) => q(tij),
- q(6445) => q(tik),
- q(6446) => q(til),
- q(6447) => q(tim),
- q(6448) => q(tin),
- q(6449) => q(tio),
- q(6450) => q(tip),
- q(6451) => q(tiq),
- q(6452) => q(tis),
- q(6453) => q(tit),
- q(6454) => q(tiu),
- q(6455) => q(tiw),
- q(6456) => q(tix),
- q(6457) => q(tiy),
- q(6458) => q(tiz),
- q(6459) => q(tja),
- q(6460) => q(tjg),
- q(6461) => q(tji),
- q(6462) => q(tjm),
- q(6463) => q(tjn),
- q(6464) => q(tjo),
- q(6465) => q(tjs),
- q(6466) => q(tju),
- q(6467) => q(tka),
- q(6468) => q(tkb),
- q(6469) => q(tkd),
- q(6470) => q(tke),
- q(6471) => q(tkf),
- q(6472) => q(tkg),
- q(6473) => q(tkm),
- q(6474) => q(tkn),
- q(6475) => q(tkp),
- q(6476) => q(tkq),
- q(6477) => q(tkr),
- q(6478) => q(tks),
- q(6479) => q(tkt),
- q(6480) => q(tku),
- q(6481) => q(tkw),
- q(6482) => q(tkx),
- q(6483) => q(tkz),
- q(6484) => q(tla),
- q(6485) => q(tlb),
- q(6486) => q(tlc),
- q(6487) => q(tld),
- q(6488) => q(tlf),
- q(6489) => q(tlg),
- q(6490) => q(tlj),
- q(6491) => q(tlk),
- q(6492) => q(tll),
- q(6493) => q(tlm),
- q(6494) => q(tln),
- q(6495) => q(tlo),
- q(6496) => q(tlp),
- q(6497) => q(tlq),
- q(6498) => q(tlr),
- q(6499) => q(tls),
- q(6500) => q(tlt),
- q(6501) => q(tlu),
- q(6502) => q(tlv),
- q(6503) => q(tlw),
- q(6504) => q(tlx),
- q(6505) => q(tly),
- q(6506) => q(tma),
- q(6507) => q(tmb),
- q(6508) => q(tmc),
- q(6509) => q(tmd),
- q(6510) => q(tme),
- q(6511) => q(tmf),
- q(6512) => q(tmg),
- q(6513) => q(tmi),
- q(6514) => q(tmj),
- q(6515) => q(tmk),
- q(6516) => q(tml),
- q(6517) => q(tmm),
- q(6518) => q(tmn),
- q(6519) => q(tmo),
- q(6520) => q(tmp),
- q(6521) => q(tmq),
- q(6522) => q(tmr),
- q(6523) => q(tms),
- q(6524) => q(tmt),
- q(6525) => q(tmu),
- q(6526) => q(tmv),
- q(6527) => q(tmw),
- q(6528) => q(tmy),
- q(6529) => q(tmz),
- q(6530) => q(tna),
- q(6531) => q(tnb),
- q(6532) => q(tnc),
- q(6533) => q(tnd),
- q(6534) => q(tne),
- q(6535) => q(tng),
- q(6536) => q(tnh),
- q(6537) => q(tni),
- q(6538) => q(tnk),
- q(6539) => q(tnl),
- q(6540) => q(tnm),
- q(6541) => q(tnn),
- q(6542) => q(tno),
- q(6543) => q(tnp),
- q(6544) => q(tnq),
- q(6545) => q(tnr),
- q(6546) => q(tns),
- q(6547) => q(tnt),
- q(6548) => q(tnu),
- q(6549) => q(tnv),
- q(6550) => q(tnw),
- q(6551) => q(tnx),
- q(6552) => q(tny),
- q(6553) => q(tnz),
- q(6554) => q(tob),
- q(6555) => q(toc),
- q(6556) => q(tod),
- q(6557) => q(toe),
- q(6558) => q(tof),
- q(6559) => q(toh),
- q(6560) => q(toi),
- q(6561) => q(toj),
- q(6562) => q(tol),
- q(6563) => q(tom),
- q(6564) => q(too),
- q(6565) => q(top),
- q(6566) => q(toq),
- q(6567) => q(tor),
- q(6568) => q(tos),
- q(6569) => q(tou),
- q(6570) => q(tov),
- q(6571) => q(tow),
- q(6572) => q(tox),
- q(6573) => q(toy),
- q(6574) => q(toz),
- q(6575) => q(tpa),
- q(6576) => q(tpc),
- q(6577) => q(tpe),
- q(6578) => q(tpf),
- q(6579) => q(tpg),
- q(6580) => q(tpj),
- q(6581) => q(tpk),
- q(6582) => q(tpl),
- q(6583) => q(tpm),
- q(6584) => q(tpn),
- q(6585) => q(tpo),
- q(6586) => q(tpp),
- q(6587) => q(tpq),
- q(6588) => q(tpr),
- q(6589) => q(tpt),
- q(6590) => q(tpu),
- q(6591) => q(tpv),
- q(6592) => q(tpw),
- q(6593) => q(tpx),
- q(6594) => q(tpy),
- q(6595) => q(tpz),
- q(6596) => q(tqb),
- q(6597) => q(tql),
- q(6598) => q(tqm),
- q(6599) => q(tqn),
- q(6600) => q(tqo),
- q(6601) => q(tqp),
- q(6602) => q(tqq),
- q(6603) => q(tqr),
- q(6604) => q(tqt),
- q(6605) => q(tqu),
- q(6606) => q(tqw),
- q(6607) => q(tra),
- q(6608) => q(trb),
- q(6609) => q(trc),
- q(6610) => q(trd),
- q(6611) => q(tre),
- q(6612) => q(trf),
- q(6613) => q(trg),
- q(6614) => q(trh),
- q(6615) => q(tri),
- q(6616) => q(trj),
- q(6617) => q(trl),
- q(6618) => q(trm),
- q(6619) => q(trn),
- q(6620) => q(tro),
- q(6621) => q(trp),
- q(6622) => q(trq),
- q(6623) => q(trr),
- q(6624) => q(trs),
- q(6625) => q(trt),
- q(6626) => q(tru),
- q(6627) => q(trv),
- q(6628) => q(trw),
- q(6629) => q(trx),
- q(6630) => q(try),
- q(6631) => q(trz),
- q(6632) => q(tsa),
- q(6633) => q(tsb),
- q(6634) => q(tsc),
- q(6635) => q(tsd),
- q(6636) => q(tse),
- q(6637) => q(tsf),
- q(6638) => q(tsg),
- q(6639) => q(tsh),
- q(6640) => q(tsj),
- q(6641) => q(tsk),
- q(6642) => q(tsl),
- q(6643) => q(tsm),
- q(6644) => q(tsp),
- q(6645) => q(tsq),
- q(6646) => q(tsr),
- q(6647) => q(tss),
- q(6648) => q(tst),
- q(6649) => q(tsu),
- q(6650) => q(tsv),
- q(6651) => q(tsw),
- q(6652) => q(tsx),
- q(6653) => q(tsy),
- q(6654) => q(tsz),
- q(6655) => q(tta),
- q(6656) => q(ttb),
- q(6657) => q(ttc),
- q(6658) => q(ttd),
- q(6659) => q(tte),
- q(6660) => q(ttf),
- q(6661) => q(ttg),
- q(6662) => q(tth),
- q(6663) => q(tti),
- q(6664) => q(ttj),
- q(6665) => q(ttk),
- q(6666) => q(ttl),
- q(6667) => q(ttm),
- q(6668) => q(ttn),
- q(6669) => q(tto),
- q(6670) => q(ttp),
- q(6671) => q(ttq),
- q(6672) => q(ttr),
- q(6673) => q(tts),
- q(6674) => q(ttt),
- q(6675) => q(ttu),
- q(6676) => q(ttv),
- q(6677) => q(ttw),
- q(6678) => q(tty),
- q(6679) => q(ttz),
- q(6680) => q(tua),
- q(6681) => q(tub),
- q(6682) => q(tuc),
- q(6683) => q(tud),
- q(6684) => q(tue),
- q(6685) => q(tuf),
- q(6686) => q(tug),
- q(6687) => q(tuh),
- q(6688) => q(tui),
- q(6689) => q(tuj),
- q(6690) => q(tul),
- q(6691) => q(tun),
- q(6692) => q(tuo),
- q(6693) => q(tuq),
- q(6694) => q(tus),
- q(6695) => q(tuu),
- q(6696) => q(tuv),
- q(6697) => q(tux),
- q(6698) => q(tuy),
- q(6699) => q(tuz),
- q(6700) => q(tva),
- q(6701) => q(tvd),
- q(6702) => q(tve),
- q(6703) => q(tvk),
- q(6704) => q(tvm),
- q(6705) => q(tvn),
- q(6706) => q(tvo),
- q(6707) => q(tvs),
- q(6708) => q(tvt),
- q(6709) => q(tvw),
- q(6710) => q(tvy),
- q(6711) => q(twa),
- q(6712) => q(twb),
- q(6713) => q(twc),
- q(6714) => q(twd),
- q(6715) => q(twe),
- q(6716) => q(twf),
- q(6717) => q(twg),
- q(6718) => q(twh),
- q(6719) => q(twl),
- q(6720) => q(twm),
- q(6721) => q(twn),
- q(6722) => q(two),
- q(6723) => q(twp),
- q(6724) => q(twq),
- q(6725) => q(twr),
- q(6726) => q(twt),
- q(6727) => q(twu),
- q(6728) => q(tww),
- q(6729) => q(twx),
- q(6730) => q(twy),
- q(6731) => q(txa),
- q(6732) => q(txb),
- q(6733) => q(txc),
- q(6734) => q(txe),
- q(6735) => q(txg),
- q(6736) => q(txh),
- q(6737) => q(txi),
- q(6738) => q(txm),
- q(6739) => q(txn),
- q(6740) => q(txo),
- q(6741) => q(txq),
- q(6742) => q(txr),
- q(6743) => q(txs),
- q(6744) => q(txt),
- q(6745) => q(txu),
- q(6746) => q(txx),
- q(6747) => q(txy),
- q(6748) => q(tya),
- q(6749) => q(tye),
- q(6750) => q(tyh),
- q(6751) => q(tyi),
- q(6752) => q(tyj),
- q(6753) => q(tyl),
- q(6754) => q(tyn),
- q(6755) => q(typ),
- q(6756) => q(tyr),
- q(6757) => q(tys),
- q(6758) => q(tyt),
- q(6759) => q(tyu),
- q(6760) => q(tyx),
- q(6761) => q(tyz),
- q(6762) => q(tza),
- q(6763) => q(tzh),
- q(6764) => q(tzj),
- q(6765) => q(tzm),
- q(6766) => q(tzn),
- q(6767) => q(tzo),
- q(6768) => q(tzx),
- q(6769) => q(uam),
- q(6770) => q(uan),
- q(6771) => q(uar),
- q(6772) => q(uba),
- q(6773) => q(ubi),
- q(6774) => q(ubl),
- q(6775) => q(ubr),
- q(6776) => q(ubu),
- q(6777) => q(uby),
- q(6778) => q(uda),
- q(6779) => q(ude),
- q(6780) => q(udg),
- q(6781) => q(udi),
- q(6782) => q(udj),
- q(6783) => q(udl),
- q(6784) => q(udu),
- q(6785) => q(ues),
- q(6786) => q(ufi),
- q(6787) => q(ugb),
- q(6788) => q(uge),
- q(6789) => q(ugn),
- q(6790) => q(ugo),
- q(6791) => q(ugy),
- q(6792) => q(uha),
- q(6793) => q(uhn),
- q(6794) => q(uis),
- q(6795) => q(uiv),
- q(6796) => q(uji),
- q(6797) => q(uka),
- q(6798) => q(ukg),
- q(6799) => q(ukh),
- q(6800) => q(ukl),
- q(6801) => q(ukp),
- q(6802) => q(ukq),
- q(6803) => q(uks),
- q(6804) => q(uku),
- q(6805) => q(ukw),
- q(6806) => q(ula),
- q(6807) => q(ulb),
- q(6808) => q(ulc),
- q(6809) => q(ulf),
- q(6810) => q(uli),
- q(6811) => q(ulk),
- q(6812) => q(ull),
- q(6813) => q(ulm),
- q(6814) => q(uln),
- q(6815) => q(ulu),
- q(6816) => q(ulw),
- q(6817) => q(uma),
- q(6818) => q(umc),
- q(6819) => q(umd),
- q(6820) => q(umg),
- q(6821) => q(umi),
- q(6822) => q(umm),
- q(6823) => q(umn),
- q(6824) => q(umo),
- q(6825) => q(ump),
- q(6826) => q(umr),
- q(6827) => q(ums),
- q(6828) => q(umu),
- q(6829) => q(una),
- q(6830) => q(une),
- q(6831) => q(ung),
- q(6832) => q(unk),
- q(6833) => q(unm),
- q(6834) => q(unp),
- q(6835) => q(unr),
- q(6836) => q(unx),
- q(6837) => q(unz),
- q(6838) => q(uok),
- q(6839) => q(upi),
- q(6840) => q(upv),
- q(6841) => q(ura),
- q(6842) => q(urb),
- q(6843) => q(urc),
- q(6844) => q(ure),
- q(6845) => q(urf),
- q(6846) => q(urg),
- q(6847) => q(urh),
- q(6848) => q(uri),
- q(6849) => q(urk),
- q(6850) => q(url),
- q(6851) => q(urm),
- q(6852) => q(urn),
- q(6853) => q(uro),
- q(6854) => q(urp),
- q(6855) => q(urr),
- q(6856) => q(urt),
- q(6857) => q(uru),
- q(6858) => q(urv),
- q(6859) => q(urw),
- q(6860) => q(urx),
- q(6861) => q(ury),
- q(6862) => q(urz),
- q(6863) => q(usa),
- q(6864) => q(ush),
- q(6865) => q(usi),
- q(6866) => q(usk),
- q(6867) => q(usp),
- q(6868) => q(usu),
- q(6869) => q(uta),
- q(6870) => q(ute),
- q(6871) => q(utp),
- q(6872) => q(utr),
- q(6873) => q(utu),
- q(6874) => q(uum),
- q(6875) => q(uun),
- q(6876) => q(uur),
- q(6877) => q(uuu),
- q(6878) => q(uve),
- q(6879) => q(uvh),
- q(6880) => q(uvl),
- q(6881) => q(uwa),
- q(6882) => q(uya),
- q(6883) => q(uzn),
- q(6884) => q(uzs),
- q(6885) => q(vaa),
- q(6886) => q(vae),
- q(6887) => q(vaf),
- q(6888) => q(vag),
- q(6889) => q(vah),
- q(6890) => q(vaj),
- q(6891) => q(val),
- q(6892) => q(vam),
- q(6893) => q(van),
- q(6894) => q(vao),
- q(6895) => q(vap),
- q(6896) => q(var),
- q(6897) => q(vas),
- q(6898) => q(vau),
- q(6899) => q(vav),
- q(6900) => q(vay),
- q(6901) => q(vbb),
- q(6902) => q(vbk),
- q(6903) => q(vec),
- q(6904) => q(ved),
- q(6905) => q(vel),
- q(6906) => q(vem),
- q(6907) => q(veo),
- q(6908) => q(vep),
- q(6909) => q(ver),
- q(6910) => q(vgr),
- q(6911) => q(vgt),
- q(6912) => q(vic),
- q(6913) => q(vid),
- q(6914) => q(vif),
- q(6915) => q(vig),
- q(6916) => q(vil),
- q(6917) => q(vin),
- q(6918) => q(vis),
- q(6919) => q(vit),
- q(6920) => q(viv),
- q(6921) => q(vka),
- q(6922) => q(vki),
- q(6923) => q(vkj),
- q(6924) => q(vkk),
- q(6925) => q(vkl),
- q(6926) => q(vkm),
- q(6927) => q(vko),
- q(6928) => q(vkp),
- q(6929) => q(vkt),
- q(6930) => q(vku),
- q(6931) => q(vlp),
- q(6932) => q(vls),
- q(6933) => q(vma),
- q(6934) => q(vmb),
- q(6935) => q(vmc),
- q(6936) => q(vmd),
- q(6937) => q(vme),
- q(6938) => q(vmf),
- q(6939) => q(vmg),
- q(6940) => q(vmh),
- q(6941) => q(vmi),
- q(6942) => q(vmj),
- q(6943) => q(vmk),
- q(6944) => q(vml),
- q(6945) => q(vmm),
- q(6946) => q(vmp),
- q(6947) => q(vmq),
- q(6948) => q(vmr),
- q(6949) => q(vms),
- q(6950) => q(vmu),
- q(6951) => q(vmv),
- q(6952) => q(vmw),
- q(6953) => q(vmx),
- q(6954) => q(vmy),
- q(6955) => q(vmz),
- q(6956) => q(vnk),
- q(6957) => q(vnm),
- q(6958) => q(vnp),
- q(6959) => q(vro),
- q(6960) => q(vra),
- q(6961) => q(vrs),
- q(6962) => q(vrt),
- q(6963) => q(vsi),
- q(6964) => q(vsl),
- q(6965) => q(vsv),
- q(6966) => q(vto),
- q(6967) => q(vum),
- q(6968) => q(vun),
- q(6969) => q(vut),
- q(6970) => q(vwa),
- q(6971) => q(waa),
- q(6972) => q(wab),
- q(6973) => q(wac),
- q(6974) => q(wad),
- q(6975) => q(wae),
- q(6976) => q(waf),
- q(6977) => q(wag),
- q(6978) => q(wah),
- q(6979) => q(wai),
- q(6980) => q(waj),
- q(6981) => q(wam),
- q(6982) => q(wan),
- q(6983) => q(wao),
- q(6984) => q(wap),
- q(6985) => q(waq),
- q(6986) => q(wat),
- q(6987) => q(wau),
- q(6988) => q(wav),
- q(6989) => q(waw),
- q(6990) => q(wax),
- q(6991) => q(way),
- q(6992) => q(waz),
- q(6993) => q(wba),
- q(6994) => q(wbb),
- q(6995) => q(wbe),
- q(6996) => q(wbh),
- q(6997) => q(wbi),
- q(6998) => q(wbj),
- q(6999) => q(wbk),
- q(7000) => q(wbl),
- q(7001) => q(wbm),
- q(7002) => q(wbp),
- q(7003) => q(wbq),
- q(7004) => q(wbr),
- q(7005) => q(wbt),
- q(7006) => q(wbv),
- q(7007) => q(wbw),
- q(7008) => q(wca),
- q(7009) => q(wci),
- q(7010) => q(wdd),
- q(7011) => q(wdg),
- q(7012) => q(wdj),
- q(7013) => q(wdu),
- q(7014) => q(wea),
- q(7015) => q(wec),
- q(7016) => q(wed),
- q(7017) => q(weh),
- q(7018) => q(wei),
- q(7019) => q(wem),
- q(7020) => q(weo),
- q(7021) => q(wep),
- q(7022) => q(wer),
- q(7023) => q(wes),
- q(7024) => q(wet),
- q(7025) => q(weu),
- q(7026) => q(wew),
- q(7027) => q(wfg),
- q(7028) => q(wga),
- q(7029) => q(wgb),
- q(7030) => q(wgg),
- q(7031) => q(wgi),
- q(7032) => q(wgo),
- q(7033) => q(wgy),
- q(7034) => q(wha),
- q(7035) => q(whg),
- q(7036) => q(whk),
- q(7037) => q(whu),
- q(7038) => q(wib),
- q(7039) => q(wic),
- q(7040) => q(wie),
- q(7041) => q(wif),
- q(7042) => q(wig),
- q(7043) => q(wih),
- q(7044) => q(wii),
- q(7045) => q(wij),
- q(7046) => q(wik),
- q(7047) => q(wil),
- q(7048) => q(wim),
- q(7049) => q(win),
- q(7050) => q(wir),
- q(7051) => q(wit),
- q(7052) => q(wiu),
- q(7053) => q(wiv),
- q(7054) => q(wiw),
- q(7055) => q(wiy),
- q(7056) => q(wja),
- q(7057) => q(wji),
- q(7058) => q(wka),
- q(7059) => q(wkb),
- q(7060) => q(wkd),
- q(7061) => q(wkl),
- q(7062) => q(wku),
- q(7063) => q(wkw),
- q(7064) => q(wla),
- q(7065) => q(wlc),
- q(7066) => q(wle),
- q(7067) => q(wlg),
- q(7068) => q(wli),
- q(7069) => q(wlk),
- q(7070) => q(wll),
- q(7071) => q(wlm),
- q(7072) => q(wlo),
- q(7073) => q(wlr),
- q(7074) => q(wls),
- q(7075) => q(wlu),
- q(7076) => q(wlv),
- q(7077) => q(wlw),
- q(7078) => q(wlx),
- q(7079) => q(wly),
- q(7080) => q(wma),
- q(7081) => q(wmb),
- q(7082) => q(wmc),
- q(7083) => q(wmd),
- q(7084) => q(wme),
- q(7085) => q(wmh),
- q(7086) => q(wmi),
- q(7087) => q(wmm),
- q(7088) => q(wmn),
- q(7089) => q(wmo),
- q(7090) => q(wms),
- q(7091) => q(wmt),
- q(7092) => q(wmw),
- q(7093) => q(wmx),
- q(7094) => q(wnb),
- q(7095) => q(wnc),
- q(7096) => q(wnd),
- q(7097) => q(wne),
- q(7098) => q(wng),
- q(7099) => q(wni),
- q(7100) => q(wnk),
- q(7101) => q(wnm),
- q(7102) => q(wno),
- q(7103) => q(wnp),
- q(7104) => q(wnu),
- q(7105) => q(woa),
- q(7106) => q(wob),
- q(7107) => q(woc),
- q(7108) => q(wod),
- q(7109) => q(woe),
- q(7110) => q(wof),
- q(7111) => q(wog),
- q(7112) => q(woi),
- q(7113) => q(wok),
- q(7114) => q(wom),
- q(7115) => q(won),
- q(7116) => q(woo),
- q(7117) => q(wor),
- q(7118) => q(wos),
- q(7119) => q(wow),
- q(7120) => q(woy),
- q(7121) => q(wpc),
- q(7122) => q(wra),
- q(7123) => q(wrb),
- q(7124) => q(wrd),
- q(7125) => q(wrg),
- q(7126) => q(wrh),
- q(7127) => q(wri),
- q(7128) => q(wrl),
- q(7129) => q(wrm),
- q(7130) => q(wrn),
- q(7131) => q(wrp),
- q(7132) => q(wrr),
- q(7133) => q(wrs),
- q(7134) => q(wru),
- q(7135) => q(wrv),
- q(7136) => q(wrw),
- q(7137) => q(wrx),
- q(7138) => q(wry),
- q(7139) => q(wrz),
- q(7140) => q(wsa),
- q(7141) => q(wsi),
- q(7142) => q(wsk),
- q(7143) => q(wsr),
- q(7144) => q(wss),
- q(7145) => q(wsu),
- q(7146) => q(wsv),
- q(7147) => q(wtf),
- q(7148) => q(wti),
- q(7149) => q(wtk),
- q(7150) => q(wtm),
- q(7151) => q(wtw),
- q(7152) => q(wua),
- q(7153) => q(wub),
- q(7154) => q(wud),
- q(7155) => q(wuh),
- q(7156) => q(wul),
- q(7157) => q(wum),
- q(7158) => q(wun),
- q(7159) => q(wur),
- q(7160) => q(wut),
- q(7161) => q(wuu),
- q(7162) => q(wuv),
- q(7163) => q(wux),
- q(7164) => q(wuy),
- q(7165) => q(wwa),
- q(7166) => q(wwo),
- q(7167) => q(wwr),
- q(7168) => q(www),
- q(7169) => q(wxa),
- q(7170) => q(wya),
- q(7171) => q(wyb),
- q(7172) => q(wym),
- q(7173) => q(wyr),
- q(7174) => q(wyy),
- q(7175) => q(xaa),
- q(7176) => q(xab),
- q(7177) => q(xac),
- q(7178) => q(xad),
- q(7179) => q(xae),
- q(7180) => q(xag),
- q(7181) => q(xai),
- q(7182) => q(xam),
- q(7183) => q(xan),
- q(7184) => q(xao),
- q(7185) => q(xap),
- q(7186) => q(xaq),
- q(7187) => q(xar),
- q(7188) => q(xas),
- q(7189) => q(xat),
- q(7190) => q(xau),
- q(7191) => q(xav),
- q(7192) => q(xaw),
- q(7193) => q(xay),
- q(7194) => q(xba),
- q(7195) => q(xbb),
- q(7196) => q(xbc),
- q(7197) => q(xbi),
- q(7198) => q(xbm),
- q(7199) => q(xbn),
- q(7200) => q(xbo),
- q(7201) => q(xbr),
- q(7202) => q(xbw),
- q(7203) => q(xbx),
- q(7204) => q(xcb),
- q(7205) => q(xcc),
- q(7206) => q(xce),
- q(7207) => q(xcg),
- q(7208) => q(xch),
- q(7209) => q(xcl),
- q(7210) => q(xcm),
- q(7211) => q(xcn),
- q(7212) => q(xco),
- q(7213) => q(xcr),
- q(7214) => q(xct),
- q(7215) => q(xcu),
- q(7216) => q(xcv),
- q(7217) => q(xcw),
- q(7218) => q(xcy),
- q(7219) => q(xdc),
- q(7220) => q(xdm),
- q(7221) => q(xdy),
- q(7222) => q(xeb),
- q(7223) => q(xed),
- q(7224) => q(xeg),
- q(7225) => q(xel),
- q(7226) => q(xem),
- q(7227) => q(xep),
- q(7228) => q(xer),
- q(7229) => q(xes),
- q(7230) => q(xet),
- q(7231) => q(xeu),
- q(7232) => q(xfa),
- q(7233) => q(xga),
- q(7234) => q(xgf),
- q(7235) => q(xgl),
- q(7236) => q(xgr),
- q(7237) => q(xha),
- q(7238) => q(xhc),
- q(7239) => q(xhd),
- q(7240) => q(xhe),
- q(7241) => q(xhr),
- q(7242) => q(xht),
- q(7243) => q(xhu),
- q(7244) => q(xhv),
- q(7245) => q(xia),
- q(7246) => q(xib),
- q(7247) => q(xii),
- q(7248) => q(xil),
- q(7249) => q(xin),
- q(7250) => q(xip),
- q(7251) => q(xir),
- q(7252) => q(xiv),
- q(7253) => q(xiy),
- q(7254) => q(xka),
- q(7255) => q(xkb),
- q(7256) => q(xkc),
- q(7257) => q(xkd),
- q(7258) => q(xke),
- q(7259) => q(xkf),
- q(7260) => q(xkg),
- q(7261) => q(xkh),
- q(7262) => q(xki),
- q(7263) => q(xkj),
- q(7264) => q(xkk),
- q(7265) => q(xkl),
- q(7266) => q(xkn),
- q(7267) => q(xko),
- q(7268) => q(xkp),
- q(7269) => q(xkq),
- q(7270) => q(xkr),
- q(7271) => q(xks),
- q(7272) => q(xkt),
- q(7273) => q(xku),
- q(7274) => q(xkv),
- q(7275) => q(xkw),
- q(7276) => q(xkx),
- q(7277) => q(xky),
- q(7278) => q(xkz),
- q(7279) => q(xla),
- q(7280) => q(xlb),
- q(7281) => q(xlc),
- q(7282) => q(xld),
- q(7283) => q(xle),
- q(7284) => q(xlg),
- q(7285) => q(xli),
- q(7286) => q(xln),
- q(7287) => q(xlo),
- q(7288) => q(xlp),
- q(7289) => q(xls),
- q(7290) => q(xlu),
- q(7291) => q(xly),
- q(7292) => q(xma),
- q(7293) => q(xmb),
- q(7294) => q(xmc),
- q(7295) => q(xmd),
- q(7296) => q(xme),
- q(7297) => q(xmf),
- q(7298) => q(xmg),
- q(7299) => q(xmh),
- q(7300) => q(xmj),
- q(7301) => q(xmk),
- q(7302) => q(xml),
- q(7303) => q(xmm),
- q(7304) => q(xmn),
- q(7305) => q(xmo),
- q(7306) => q(xmp),
- q(7307) => q(xmq),
- q(7308) => q(xmr),
- q(7309) => q(xms),
- q(7310) => q(xmt),
- q(7311) => q(xmu),
- q(7312) => q(xmv),
- q(7313) => q(xmw),
- q(7314) => q(xmx),
- q(7315) => q(xmy),
- q(7316) => q(xmz),
- q(7317) => q(xna),
- q(7318) => q(xnb),
- q(7319) => q(xng),
- q(7320) => q(xnh),
- q(7321) => q(xnn),
- q(7322) => q(xno),
- q(7323) => q(xnr),
- q(7324) => q(xns),
- q(7325) => q(xnt),
- q(7326) => q(xoc),
- q(7327) => q(xod),
- q(7328) => q(xog),
- q(7329) => q(xoi),
- q(7330) => q(xok),
- q(7331) => q(xom),
- q(7332) => q(xon),
- q(7333) => q(xoo),
- q(7334) => q(xop),
- q(7335) => q(xor),
- q(7336) => q(xow),
- q(7337) => q(xpc),
- q(7338) => q(xpe),
- q(7339) => q(xpg),
- q(7340) => q(xpi),
- q(7341) => q(xpk),
- q(7342) => q(xpm),
- q(7343) => q(xpn),
- q(7344) => q(xpo),
- q(7345) => q(xpp),
- q(7346) => q(xpq),
- q(7347) => q(xpr),
- q(7348) => q(xps),
- q(7349) => q(xpu),
- q(7350) => q(xpy),
- q(7351) => q(xqa),
- q(7352) => q(xqt),
- q(7353) => q(xra),
- q(7354) => q(xrb),
- q(7355) => q(xre),
- q(7356) => q(xri),
- q(7357) => q(xrm),
- q(7358) => q(xrn),
- q(7359) => q(xrr),
- q(7360) => q(xrt),
- q(7361) => q(xru),
- q(7362) => q(xrw),
- q(7363) => q(xsa),
- q(7364) => q(xsb),
- q(7365) => q(xsc),
- q(7366) => q(xsd),
- q(7367) => q(xse),
- q(7368) => q(xsh),
- q(7369) => q(xsi),
- q(7370) => q(xsj),
- q(7371) => q(xsl),
- q(7372) => q(xsm),
- q(7373) => q(xsn),
- q(7374) => q(xso),
- q(7375) => q(xsp),
- q(7376) => q(xsq),
- q(7377) => q(xsr),
- q(7378) => q(xss),
- q(7379) => q(xsu),
- q(7380) => q(xsv),
- q(7381) => q(xsy),
- q(7382) => q(xta),
- q(7383) => q(xtb),
- q(7384) => q(xtc),
- q(7385) => q(xtd),
- q(7386) => q(xte),
- q(7387) => q(xtg),
- q(7388) => q(xti),
- q(7389) => q(xtj),
- q(7390) => q(xtl),
- q(7391) => q(xtm),
- q(7392) => q(xtn),
- q(7393) => q(xto),
- q(7394) => q(xtp),
- q(7395) => q(xtq),
- q(7396) => q(xtr),
- q(7397) => q(xts),
- q(7398) => q(xtt),
- q(7399) => q(xtu),
- q(7400) => q(xtw),
- q(7401) => q(xty),
- q(7402) => q(xtz),
- q(7403) => q(xua),
- q(7404) => q(xub),
- q(7405) => q(xug),
- q(7406) => q(xuj),
- q(7407) => q(xum),
- q(7408) => q(xuo),
- q(7409) => q(xup),
- q(7410) => q(xur),
- q(7411) => q(xut),
- q(7412) => q(xuu),
- q(7413) => q(xve),
- q(7414) => q(xvi),
- q(7415) => q(xvn),
- q(7416) => q(xvo),
- q(7417) => q(xvs),
- q(7418) => q(xwa),
- q(7419) => q(xwc),
- q(7420) => q(xwe),
- q(7421) => q(xwg),
- q(7422) => q(xwl),
- q(7423) => q(xwo),
- q(7424) => q(xwr),
- q(7425) => q(xxb),
- q(7426) => q(xxk),
- q(7427) => q(xxr),
- q(7428) => q(xxt),
- q(7429) => q(xyl),
- q(7430) => q(xzh),
- q(7431) => q(xzm),
- q(7432) => q(xzp),
- q(7433) => q(yaa),
- q(7434) => q(yab),
- q(7435) => q(yac),
- q(7436) => q(yad),
- q(7437) => q(yae),
- q(7438) => q(yaf),
- q(7439) => q(yag),
- q(7440) => q(yah),
- q(7441) => q(yai),
- q(7442) => q(yaj),
- q(7443) => q(yak),
- q(7444) => q(yal),
- q(7445) => q(yam),
- q(7446) => q(yan),
- q(7447) => q(yaq),
- q(7448) => q(yar),
- q(7449) => q(yas),
- q(7450) => q(yat),
- q(7451) => q(yau),
- q(7452) => q(yav),
- q(7453) => q(yaw),
- q(7454) => q(yax),
- q(7455) => q(yay),
- q(7456) => q(yaz),
- q(7457) => q(yba),
- q(7458) => q(ybb),
- q(7459) => q(ybd),
- q(7460) => q(ybe),
- q(7461) => q(ybh),
- q(7462) => q(ybi),
- q(7463) => q(ybj),
- q(7464) => q(ybk),
- q(7465) => q(ybl),
- q(7466) => q(ybm),
- q(7467) => q(ybn),
- q(7468) => q(ybo),
- q(7469) => q(ybx),
- q(7470) => q(yby),
- q(7471) => q(ych),
- q(7472) => q(ycl),
- q(7473) => q(ycn),
- q(7474) => q(ycp),
- q(7475) => q(ydd),
- q(7476) => q(yde),
- q(7477) => q(ydg),
- q(7478) => q(ydk),
- q(7479) => q(yds),
- q(7480) => q(yea),
- q(7481) => q(yec),
- q(7482) => q(yee),
- q(7483) => q(yei),
- q(7484) => q(yej),
- q(7485) => q(yel),
- q(7486) => q(yen),
- q(7487) => q(yer),
- q(7488) => q(yes),
- q(7489) => q(yet),
- q(7490) => q(yeu),
- q(7491) => q(yev),
- q(7492) => q(yey),
- q(7493) => q(ygl),
- q(7494) => q(ygm),
- q(7495) => q(ygp),
- q(7496) => q(ygr),
- q(7497) => q(ygw),
- q(7498) => q(yha),
- q(7499) => q(yhd),
- q(7500) => q(yhl),
- q(7501) => q(yia),
- q(7502) => q(yig),
- q(7503) => q(yih),
- q(7504) => q(yii),
- q(7505) => q(yij),
- q(7506) => q(yik),
- q(7507) => q(yil),
- q(7508) => q(yim),
- q(7509) => q(yin),
- q(7510) => q(yip),
- q(7511) => q(yiq),
- q(7512) => q(yir),
- q(7513) => q(yis),
- q(7514) => q(yit),
- q(7515) => q(yiu),
- q(7516) => q(yiv),
- q(7517) => q(yix),
- q(7518) => q(yiy),
- q(7519) => q(yiz),
- q(7520) => q(yka),
- q(7521) => q(ykg),
- q(7522) => q(yki),
- q(7523) => q(ykk),
- q(7524) => q(ykl),
- q(7525) => q(ykm),
- q(7526) => q(yko),
- q(7527) => q(ykr),
- q(7528) => q(ykt),
- q(7529) => q(yky),
- q(7530) => q(yla),
- q(7531) => q(ylb),
- q(7532) => q(yle),
- q(7533) => q(ylg),
- q(7534) => q(yli),
- q(7535) => q(yll),
- q(7536) => q(ylm),
- q(7537) => q(yln),
- q(7538) => q(ylo),
- q(7539) => q(ylr),
- q(7540) => q(ylu),
- q(7541) => q(yly),
- q(7542) => q(yma),
- q(7543) => q(ymb),
- q(7544) => q(ymc),
- q(7545) => q(ymd),
- q(7546) => q(yme),
- q(7547) => q(ymg),
- q(7548) => q(ymh),
- q(7549) => q(ymi),
- q(7550) => q(ymk),
- q(7551) => q(yml),
- q(7552) => q(ymm),
- q(7553) => q(ymn),
- q(7554) => q(ymo),
- q(7555) => q(ymp),
- q(7556) => q(ymq),
- q(7557) => q(ymr),
- q(7558) => q(yms),
- q(7559) => q(ymt),
- q(7560) => q(ymx),
- q(7561) => q(ymz),
- q(7562) => q(yna),
- q(7563) => q(ynd),
- q(7564) => q(yne),
- q(7565) => q(yng),
- q(7566) => q(ynh),
- q(7567) => q(ynk),
- q(7568) => q(ynl),
- q(7569) => q(ynn),
- q(7570) => q(yno),
- q(7571) => q(yns),
- q(7572) => q(ynu),
- q(7573) => q(yob),
- q(7574) => q(yog),
- q(7575) => q(yoi),
- q(7576) => q(yok),
- q(7577) => q(yol),
- q(7578) => q(yom),
- q(7579) => q(yon),
- q(7580) => q(yos),
- q(7581) => q(yox),
- q(7582) => q(yoy),
- q(7583) => q(ypa),
- q(7584) => q(ypb),
- q(7585) => q(ypg),
- q(7586) => q(yph),
- q(7587) => q(ypm),
- q(7588) => q(ypn),
- q(7589) => q(ypo),
- q(7590) => q(ypp),
- q(7591) => q(ypz),
- q(7592) => q(yra),
- q(7593) => q(yrb),
- q(7594) => q(yre),
- q(7595) => q(yri),
- q(7596) => q(yrk),
- q(7597) => q(yrl),
- q(7598) => q(yrn),
- q(7599) => q(yrs),
- q(7600) => q(yrw),
- q(7601) => q(ysc),
- q(7602) => q(ysd),
- q(7603) => q(ysl),
- q(7604) => q(ysn),
- q(7605) => q(yso),
- q(7606) => q(ysp),
- q(7607) => q(ysr),
- q(7608) => q(yss),
- q(7609) => q(ysy),
- q(7610) => q(yta),
- q(7611) => q(ytl),
- q(7612) => q(ytp),
- q(7613) => q(ytw),
- q(7614) => q(yua),
- q(7615) => q(yub),
- q(7616) => q(yuc),
- q(7617) => q(yud),
- q(7618) => q(yue),
- q(7619) => q(yuf),
- q(7620) => q(yug),
- q(7621) => q(yui),
- q(7622) => q(yuj),
- q(7623) => q(yuk),
- q(7624) => q(yul),
- q(7625) => q(yum),
- q(7626) => q(yun),
- q(7627) => q(yup),
- q(7628) => q(yuq),
- q(7629) => q(yur),
- q(7630) => q(yut),
- q(7631) => q(yuu),
- q(7632) => q(yuw),
- q(7633) => q(yux),
- q(7634) => q(yuy),
- q(7635) => q(yuz),
- q(7636) => q(yva),
- q(7637) => q(yvt),
- q(7638) => q(ywa),
- q(7639) => q(ywl),
- q(7640) => q(ywn),
- q(7641) => q(ywq),
- q(7642) => q(ywr),
- q(7643) => q(ywt),
- q(7644) => q(ywu),
- q(7645) => q(yww),
- q(7646) => q(yyu),
- q(7647) => q(yyz),
- q(7648) => q(yzg),
- q(7649) => q(yzk),
- q(7650) => q(zaa),
- q(7651) => q(zab),
- q(7652) => q(zac),
- q(7653) => q(zad),
- q(7654) => q(zae),
- q(7655) => q(zaf),
- q(7656) => q(zag),
- q(7657) => q(zah),
- q(7658) => q(zai),
- q(7659) => q(zaj),
- q(7660) => q(zak),
- q(7661) => q(zal),
- q(7662) => q(zam),
- q(7663) => q(zao),
- q(7664) => q(zaq),
- q(7665) => q(zar),
- q(7666) => q(zas),
- q(7667) => q(zat),
- q(7668) => q(zau),
- q(7669) => q(zav),
- q(7670) => q(zaw),
- q(7671) => q(zax),
- q(7672) => q(zay),
- q(7673) => q(zaz),
- q(7674) => q(zbc),
- q(7675) => q(zbe),
- q(7676) => q(zbt),
- q(7677) => q(zbw),
- q(7678) => q(zca),
- q(7679) => q(zch),
- q(7680) => q(zdj),
- q(7681) => q(zea),
- q(7682) => q(zeg),
- q(7683) => q(zeh),
- q(7684) => q(zga),
- q(7685) => q(zgb),
- q(7686) => q(zgm),
- q(7687) => q(zgn),
- q(7688) => q(zgr),
- q(7689) => q(zhb),
- q(7690) => q(zhd),
- q(7691) => q(zhi),
- q(7692) => q(zhn),
- q(7693) => q(zhw),
- q(7694) => q(zia),
- q(7695) => q(zib),
- q(7696) => q(zik),
- q(7697) => q(zil),
- q(7698) => q(zim),
- q(7699) => q(zin),
- q(7700) => q(zir),
- q(7701) => q(ziw),
- q(7702) => q(ziz),
- q(7703) => q(zka),
- q(7704) => q(zkb),
- q(7705) => q(zkg),
- q(7706) => q(zkh),
- q(7707) => q(zkk),
- q(7708) => q(zko),
- q(7709) => q(zkp),
- q(7710) => q(zkr),
- q(7711) => q(zkt),
- q(7712) => q(zku),
- q(7713) => q(zkv),
- q(7714) => q(zkz),
- q(7715) => q(zlj),
- q(7716) => q(zlm),
- q(7717) => q(zln),
- q(7718) => q(zlq),
- q(7719) => q(zma),
- q(7720) => q(zmb),
- q(7721) => q(zmc),
- q(7722) => q(zmd),
- q(7723) => q(zme),
- q(7724) => q(zmf),
- q(7725) => q(zmg),
- q(7726) => q(zmh),
- q(7727) => q(zmi),
- q(7728) => q(zmj),
- q(7729) => q(zmk),
- q(7730) => q(zml),
- q(7731) => q(zmm),
- q(7732) => q(zmn),
- q(7733) => q(zmo),
- q(7734) => q(zmp),
- q(7735) => q(zmq),
- q(7736) => q(zmr),
- q(7737) => q(zms),
- q(7738) => q(zmt),
- q(7739) => q(zmu),
- q(7740) => q(zmv),
- q(7741) => q(zmw),
- q(7742) => q(zmx),
- q(7743) => q(zmy),
- q(7744) => q(zmz),
- q(7745) => q(zna),
- q(7746) => q(zne),
- q(7747) => q(zng),
- q(7748) => q(znk),
- q(7749) => q(zns),
- q(7750) => q(zoc),
- q(7751) => q(zoh),
- q(7752) => q(zom),
- q(7753) => q(zoo),
- q(7754) => q(zoq),
- q(7755) => q(zor),
- q(7756) => q(zos),
- q(7757) => q(zpa),
- q(7758) => q(zpb),
- q(7759) => q(zpc),
- q(7760) => q(zpd),
- q(7761) => q(zpe),
- q(7762) => q(zpf),
- q(7763) => q(zpg),
- q(7764) => q(zph),
- q(7765) => q(zpi),
- q(7766) => q(zpj),
- q(7767) => q(zpk),
- q(7768) => q(zpl),
- q(7769) => q(zpm),
- q(7770) => q(zpn),
- q(7771) => q(zpo),
- q(7772) => q(zpp),
- q(7773) => q(zpq),
- q(7774) => q(zpr),
- q(7775) => q(zps),
- q(7776) => q(zpt),
- q(7777) => q(zpu),
- q(7778) => q(zpv),
- q(7779) => q(zpw),
- q(7780) => q(zpx),
- q(7781) => q(zpy),
- q(7782) => q(zpz),
- q(7783) => q(zqe),
- q(7784) => q(zra),
- q(7785) => q(zrg),
- q(7786) => q(zrn),
- q(7787) => q(zro),
- q(7788) => q(zrp),
- q(7789) => q(zrs),
- q(7790) => q(zsa),
- q(7791) => q(zsk),
- q(7792) => q(zsl),
- q(7793) => q(zsm),
- q(7794) => q(zsr),
- q(7795) => q(zsu),
- q(7796) => q(zte),
- q(7797) => q(ztg),
- q(7798) => q(ztl),
- q(7799) => q(ztm),
- q(7800) => q(ztn),
- q(7801) => q(ztp),
- q(7802) => q(ztq),
- q(7803) => q(zts),
- q(7804) => q(ztt),
- q(7805) => q(ztu),
- q(7806) => q(ztx),
- q(7807) => q(zty),
- q(7808) => q(zua),
- q(7809) => q(zuh),
- q(7810) => q(zum),
- q(7811) => q(zuy),
- q(7812) => q(zwa),
- q(7813) => q(zyb),
- q(7814) => q(zyg),
- q(7815) => q(zyj),
- q(7816) => q(zyn),
- q(7817) => q(zyp),
- q(7818) => q(zzj),
+ q(0480) => q(zgh),
+ q(0481) => q(zha),
+ q(0482) => q(znd),
+ q(0483) => q(zul),
+ q(0484) => q(zun),
+ q(0485) => q(zxx),
+ q(0486) => q(zza),
+ q(0487) => q(aav),
+ q(0488) => q(alv),
+ q(0489) => q(aqa),
+ q(0490) => q(aql),
+ q(0491) => q(auf),
+ q(0492) => q(awd),
+ q(0493) => q(azc),
+ q(0494) => q(cba),
+ q(0495) => q(ccn),
+ q(0496) => q(ccs),
+ q(0497) => q(cdc),
+ q(0498) => q(cdd),
+ q(0499) => q(csu),
+ q(0500) => q(dmn),
+ q(0501) => q(egx),
+ q(0502) => q(esx),
+ q(0503) => q(euq),
+ q(0504) => q(fox),
+ q(0505) => q(gme),
+ q(0506) => q(gmq),
+ q(0507) => q(gmw),
+ q(0508) => q(grk),
+ q(0509) => q(hmx),
+ q(0510) => q(hok),
+ q(0511) => q(hyx),
+ q(0512) => q(iir),
+ q(0513) => q(itc),
+ q(0514) => q(jpx),
+ q(0515) => q(kdo),
+ q(0516) => q(ngf),
+ q(0517) => q(omq),
+ q(0518) => q(omv),
+ q(0519) => q(plf),
+ q(0520) => q(poz),
+ q(0521) => q(pqe),
+ q(0522) => q(pqw),
+ q(0523) => q(qwe),
+ q(0524) => q(sdv),
+ q(0525) => q(sqj),
+ q(0526) => q(syd),
+ q(0527) => q(tbq),
+ q(0528) => q(trk),
+ q(0529) => q(tuw),
+ q(0530) => q(urj),
+ q(0531) => q(xgn),
+ q(0532) => q(xnd),
+ q(0533) => q(zhx),
+ q(0534) => q(zle),
+ q(0535) => q(zls),
+ q(0536) => q(zlw),
+ q(0538) => q(aaa),
+ q(0539) => q(aab),
+ q(0540) => q(aac),
+ q(0541) => q(aad),
+ q(0542) => q(aae),
+ q(0543) => q(aaf),
+ q(0544) => q(aag),
+ q(0545) => q(aah),
+ q(0546) => q(aai),
+ q(0547) => q(aak),
+ q(0548) => q(aal),
+ q(0549) => q(aam),
+ q(0550) => q(aan),
+ q(0551) => q(aao),
+ q(0552) => q(aap),
+ q(0553) => q(aaq),
+ q(0554) => q(aas),
+ q(0555) => q(aat),
+ q(0556) => q(aau),
+ q(0557) => q(aaw),
+ q(0558) => q(aax),
+ q(0559) => q(aaz),
+ q(0560) => q(aba),
+ q(0561) => q(abb),
+ q(0562) => q(abc),
+ q(0563) => q(abd),
+ q(0564) => q(abe),
+ q(0565) => q(abf),
+ q(0566) => q(abg),
+ q(0567) => q(abh),
+ q(0568) => q(abi),
+ q(0569) => q(abj),
+ q(0570) => q(abl),
+ q(0571) => q(abm),
+ q(0572) => q(abn),
+ q(0573) => q(abo),
+ q(0574) => q(abp),
+ q(0575) => q(abq),
+ q(0576) => q(abr),
+ q(0577) => q(abs),
+ q(0578) => q(abt),
+ q(0579) => q(abu),
+ q(0580) => q(abv),
+ q(0581) => q(abw),
+ q(0582) => q(abx),
+ q(0583) => q(aby),
+ q(0584) => q(abz),
+ q(0585) => q(aca),
+ q(0586) => q(acb),
+ q(0587) => q(acd),
+ q(0588) => q(acf),
+ q(0589) => q(aci),
+ q(0590) => q(ack),
+ q(0591) => q(acl),
+ q(0592) => q(acm),
+ q(0593) => q(acn),
+ q(0594) => q(acp),
+ q(0595) => q(acq),
+ q(0596) => q(acr),
+ q(0597) => q(acs),
+ q(0598) => q(act),
+ q(0599) => q(acu),
+ q(0600) => q(acv),
+ q(0601) => q(acw),
+ q(0602) => q(acx),
+ q(0603) => q(acy),
+ q(0604) => q(acz),
+ q(0605) => q(adb),
+ q(0606) => q(add),
+ q(0607) => q(ade),
+ q(0608) => q(adf),
+ q(0609) => q(adg),
+ q(0610) => q(adh),
+ q(0611) => q(adi),
+ q(0612) => q(adj),
+ q(0613) => q(adl),
+ q(0614) => q(adn),
+ q(0615) => q(ado),
+ q(0616) => q(adp),
+ q(0617) => q(adq),
+ q(0618) => q(adr),
+ q(0619) => q(ads),
+ q(0620) => q(adt),
+ q(0621) => q(adu),
+ q(0622) => q(adw),
+ q(0623) => q(adx),
+ q(0624) => q(adz),
+ q(0625) => q(aea),
+ q(0626) => q(aeb),
+ q(0627) => q(aec),
+ q(0628) => q(aed),
+ q(0629) => q(aee),
+ q(0630) => q(aek),
+ q(0631) => q(ael),
+ q(0632) => q(aem),
+ q(0633) => q(aen),
+ q(0634) => q(aeq),
+ q(0635) => q(aer),
+ q(0636) => q(aes),
+ q(0637) => q(aeu),
+ q(0638) => q(aew),
+ q(0639) => q(aey),
+ q(0640) => q(aez),
+ q(0641) => q(afb),
+ q(0642) => q(afd),
+ q(0643) => q(afe),
+ q(0644) => q(afg),
+ q(0645) => q(afi),
+ q(0646) => q(afk),
+ q(0647) => q(afn),
+ q(0648) => q(afo),
+ q(0649) => q(afp),
+ q(0650) => q(afs),
+ q(0651) => q(aft),
+ q(0652) => q(afu),
+ q(0653) => q(afz),
+ q(0654) => q(aga),
+ q(0655) => q(agb),
+ q(0656) => q(agc),
+ q(0657) => q(agd),
+ q(0658) => q(age),
+ q(0659) => q(agf),
+ q(0660) => q(agg),
+ q(0661) => q(agh),
+ q(0662) => q(agi),
+ q(0663) => q(agj),
+ q(0664) => q(agk),
+ q(0665) => q(agl),
+ q(0666) => q(agm),
+ q(0667) => q(agn),
+ q(0668) => q(ago),
+ q(0669) => q(agq),
+ q(0670) => q(agr),
+ q(0671) => q(ags),
+ q(0672) => q(agt),
+ q(0673) => q(agu),
+ q(0674) => q(agv),
+ q(0675) => q(agw),
+ q(0676) => q(agx),
+ q(0677) => q(agy),
+ q(0678) => q(agz),
+ q(0679) => q(aha),
+ q(0680) => q(ahb),
+ q(0681) => q(ahg),
+ q(0682) => q(ahh),
+ q(0683) => q(ahi),
+ q(0684) => q(ahk),
+ q(0685) => q(ahl),
+ q(0686) => q(ahm),
+ q(0687) => q(ahn),
+ q(0688) => q(aho),
+ q(0689) => q(ahp),
+ q(0690) => q(ahr),
+ q(0691) => q(ahs),
+ q(0692) => q(aht),
+ q(0693) => q(aia),
+ q(0694) => q(aib),
+ q(0695) => q(aic),
+ q(0696) => q(aid),
+ q(0697) => q(aie),
+ q(0698) => q(aif),
+ q(0699) => q(aig),
+ q(0700) => q(aih),
+ q(0701) => q(aii),
+ q(0702) => q(aij),
+ q(0703) => q(aik),
+ q(0704) => q(ail),
+ q(0705) => q(aim),
+ q(0706) => q(aio),
+ q(0707) => q(aip),
+ q(0708) => q(aiq),
+ q(0709) => q(air),
+ q(0710) => q(ais),
+ q(0711) => q(ait),
+ q(0712) => q(aiw),
+ q(0713) => q(aix),
+ q(0714) => q(aiy),
+ q(0715) => q(aja),
+ q(0716) => q(ajg),
+ q(0717) => q(aji),
+ q(0718) => q(ajn),
+ q(0719) => q(ajp),
+ q(0720) => q(ajt),
+ q(0721) => q(aju),
+ q(0722) => q(ajw),
+ q(0723) => q(ajz),
+ q(0724) => q(akb),
+ q(0725) => q(akc),
+ q(0726) => q(akd),
+ q(0727) => q(ake),
+ q(0728) => q(akf),
+ q(0729) => q(akg),
+ q(0730) => q(akh),
+ q(0731) => q(aki),
+ q(0732) => q(akj),
+ q(0733) => q(akl),
+ q(0734) => q(akm),
+ q(0735) => q(ako),
+ q(0736) => q(akp),
+ q(0737) => q(akq),
+ q(0738) => q(akr),
+ q(0739) => q(aks),
+ q(0740) => q(akt),
+ q(0741) => q(aku),
+ q(0742) => q(akv),
+ q(0743) => q(akw),
+ q(0744) => q(akx),
+ q(0745) => q(aky),
+ q(0746) => q(akz),
+ q(0747) => q(ala),
+ q(0748) => q(alc),
+ q(0749) => q(ald),
+ q(0750) => q(alf),
+ q(0751) => q(alh),
+ q(0752) => q(ali),
+ q(0753) => q(alj),
+ q(0754) => q(alk),
+ q(0755) => q(all),
+ q(0756) => q(alm),
+ q(0757) => q(aln),
+ q(0758) => q(alo),
+ q(0759) => q(alp),
+ q(0760) => q(alq),
+ q(0761) => q(alr),
+ q(0762) => q(als),
+ q(0763) => q(alu),
+ q(0764) => q(alw),
+ q(0765) => q(alx),
+ q(0766) => q(aly),
+ q(0767) => q(alz),
+ q(0768) => q(ama),
+ q(0769) => q(amb),
+ q(0770) => q(amc),
+ q(0771) => q(ame),
+ q(0772) => q(amf),
+ q(0773) => q(amg),
+ q(0774) => q(ami),
+ q(0775) => q(amj),
+ q(0776) => q(amk),
+ q(0777) => q(aml),
+ q(0778) => q(amm),
+ q(0779) => q(amn),
+ q(0780) => q(amo),
+ q(0781) => q(amp),
+ q(0782) => q(amq),
+ q(0783) => q(amr),
+ q(0784) => q(ams),
+ q(0785) => q(amt),
+ q(0786) => q(amu),
+ q(0787) => q(amv),
+ q(0788) => q(amw),
+ q(0789) => q(amx),
+ q(0790) => q(amy),
+ q(0791) => q(amz),
+ q(0792) => q(ana),
+ q(0793) => q(anb),
+ q(0794) => q(anc),
+ q(0795) => q(and),
+ q(0796) => q(ane),
+ q(0797) => q(anf),
+ q(0798) => q(anh),
+ q(0799) => q(ani),
+ q(0800) => q(anj),
+ q(0801) => q(ank),
+ q(0802) => q(anl),
+ q(0803) => q(anm),
+ q(0804) => q(ann),
+ q(0805) => q(ano),
+ q(0806) => q(anq),
+ q(0807) => q(anr),
+ q(0808) => q(ans),
+ q(0809) => q(ant),
+ q(0810) => q(anu),
+ q(0811) => q(anv),
+ q(0812) => q(anw),
+ q(0813) => q(anx),
+ q(0814) => q(any),
+ q(0815) => q(anz),
+ q(0816) => q(aoa),
+ q(0817) => q(aob),
+ q(0818) => q(aoc),
+ q(0819) => q(aod),
+ q(0820) => q(aoe),
+ q(0821) => q(aof),
+ q(0822) => q(aog),
+ q(0823) => q(aoh),
+ q(0824) => q(aoi),
+ q(0825) => q(aoj),
+ q(0826) => q(aok),
+ q(0827) => q(aol),
+ q(0828) => q(aom),
+ q(0829) => q(aon),
+ q(0830) => q(aor),
+ q(0831) => q(aos),
+ q(0832) => q(aot),
+ q(0833) => q(aou),
+ q(0834) => q(aox),
+ q(0835) => q(aoz),
+ q(0836) => q(apb),
+ q(0837) => q(apc),
+ q(0838) => q(apd),
+ q(0839) => q(ape),
+ q(0840) => q(apf),
+ q(0841) => q(apg),
+ q(0842) => q(aph),
+ q(0843) => q(api),
+ q(0844) => q(apj),
+ q(0845) => q(apk),
+ q(0846) => q(apl),
+ q(0847) => q(apm),
+ q(0848) => q(apn),
+ q(0849) => q(apo),
+ q(0850) => q(app),
+ q(0851) => q(apq),
+ q(0852) => q(apr),
+ q(0853) => q(aps),
+ q(0854) => q(apt),
+ q(0855) => q(apu),
+ q(0856) => q(apv),
+ q(0857) => q(apw),
+ q(0858) => q(apx),
+ q(0859) => q(apy),
+ q(0860) => q(apz),
+ q(0861) => q(aqc),
+ q(0862) => q(aqd),
+ q(0863) => q(aqg),
+ q(0864) => q(aqm),
+ q(0865) => q(aqn),
+ q(0866) => q(aqp),
+ q(0867) => q(aqr),
+ q(0868) => q(aqz),
+ q(0869) => q(arb),
+ q(0870) => q(ard),
+ q(0871) => q(are),
+ q(0872) => q(arh),
+ q(0873) => q(ari),
+ q(0874) => q(arj),
+ q(0875) => q(ark),
+ q(0876) => q(arl),
+ q(0877) => q(aro),
+ q(0878) => q(arq),
+ q(0879) => q(arr),
+ q(0880) => q(ars),
+ q(0881) => q(aru),
+ q(0882) => q(arv),
+ q(0883) => q(arx),
+ q(0884) => q(ary),
+ q(0885) => q(arz),
+ q(0886) => q(asa),
+ q(0887) => q(asb),
+ q(0888) => q(asc),
+ q(0889) => q(asd),
+ q(0890) => q(ase),
+ q(0891) => q(asf),
+ q(0892) => q(asg),
+ q(0893) => q(ash),
+ q(0894) => q(asi),
+ q(0895) => q(asj),
+ q(0896) => q(ask),
+ q(0897) => q(asl),
+ q(0898) => q(asn),
+ q(0899) => q(aso),
+ q(0900) => q(asp),
+ q(0901) => q(asq),
+ q(0902) => q(asr),
+ q(0903) => q(ass),
+ q(0904) => q(asu),
+ q(0905) => q(asv),
+ q(0906) => q(asw),
+ q(0907) => q(asx),
+ q(0908) => q(asy),
+ q(0909) => q(asz),
+ q(0910) => q(ata),
+ q(0911) => q(atb),
+ q(0912) => q(atc),
+ q(0913) => q(atd),
+ q(0914) => q(ate),
+ q(0915) => q(atg),
+ q(0916) => q(ati),
+ q(0917) => q(atj),
+ q(0918) => q(atk),
+ q(0919) => q(atl),
+ q(0920) => q(atm),
+ q(0921) => q(atn),
+ q(0922) => q(ato),
+ q(0923) => q(atp),
+ q(0924) => q(atq),
+ q(0925) => q(atr),
+ q(0926) => q(ats),
+ q(0927) => q(att),
+ q(0928) => q(atu),
+ q(0929) => q(atv),
+ q(0930) => q(atw),
+ q(0931) => q(atx),
+ q(0932) => q(aty),
+ q(0933) => q(atz),
+ q(0934) => q(aua),
+ q(0935) => q(aub),
+ q(0936) => q(auc),
+ q(0937) => q(aud),
+ q(0938) => q(aue),
+ q(0939) => q(aug),
+ q(0940) => q(auh),
+ q(0941) => q(aui),
+ q(0942) => q(auj),
+ q(0943) => q(auk),
+ q(0944) => q(aul),
+ q(0945) => q(aum),
+ q(0946) => q(aun),
+ q(0947) => q(auo),
+ q(0948) => q(aup),
+ q(0949) => q(auq),
+ q(0950) => q(aur),
+ q(0951) => q(aut),
+ q(0952) => q(auu),
+ q(0953) => q(auw),
+ q(0954) => q(aux),
+ q(0955) => q(auy),
+ q(0956) => q(auz),
+ q(0957) => q(avb),
+ q(0958) => q(avd),
+ q(0959) => q(avi),
+ q(0960) => q(avk),
+ q(0961) => q(avl),
+ q(0962) => q(avm),
+ q(0963) => q(avn),
+ q(0964) => q(avo),
+ q(0965) => q(avs),
+ q(0966) => q(avt),
+ q(0967) => q(avu),
+ q(0968) => q(avv),
+ q(0969) => q(awb),
+ q(0970) => q(awc),
+ q(0971) => q(awe),
+ q(0972) => q(awg),
+ q(0973) => q(awh),
+ q(0974) => q(awi),
+ q(0975) => q(awk),
+ q(0976) => q(awm),
+ q(0977) => q(awn),
+ q(0978) => q(awo),
+ q(0979) => q(awr),
+ q(0980) => q(aws),
+ q(0981) => q(awt),
+ q(0982) => q(awu),
+ q(0983) => q(awv),
+ q(0984) => q(aww),
+ q(0985) => q(awx),
+ q(0986) => q(awy),
+ q(0987) => q(axb),
+ q(0988) => q(axe),
+ q(0989) => q(axg),
+ q(0990) => q(axk),
+ q(0991) => q(axm),
+ q(0992) => q(axx),
+ q(0993) => q(aya),
+ q(0994) => q(ayb),
+ q(0995) => q(ayc),
+ q(0996) => q(ayd),
+ q(0997) => q(aye),
+ q(0998) => q(ayg),
+ q(0999) => q(ayh),
+ q(1000) => q(ayi),
+ q(1001) => q(ayk),
+ q(1002) => q(ayl),
+ q(1003) => q(ayn),
+ q(1004) => q(ayo),
+ q(1005) => q(ayp),
+ q(1006) => q(ayq),
+ q(1007) => q(ayr),
+ q(1008) => q(ays),
+ q(1009) => q(ayt),
+ q(1010) => q(ayu),
+ q(1011) => q(ayy),
+ q(1012) => q(ayz),
+ q(1013) => q(aza),
+ q(1014) => q(azb),
+ q(1015) => q(azd),
+ q(1016) => q(azg),
+ q(1017) => q(azj),
+ q(1018) => q(azm),
+ q(1019) => q(azn),
+ q(1020) => q(azo),
+ q(1021) => q(azt),
+ q(1022) => q(azz),
+ q(1023) => q(baa),
+ q(1024) => q(bab),
+ q(1025) => q(bac),
+ q(1026) => q(bae),
+ q(1027) => q(baf),
+ q(1028) => q(bag),
+ q(1029) => q(bah),
+ q(1030) => q(baj),
+ q(1031) => q(bao),
+ q(1032) => q(bap),
+ q(1033) => q(bar),
+ q(1034) => q(bau),
+ q(1035) => q(bav),
+ q(1036) => q(baw),
+ q(1037) => q(bax),
+ q(1038) => q(bay),
+ q(1039) => q(bba),
+ q(1040) => q(bbb),
+ q(1041) => q(bbc),
+ q(1042) => q(bbd),
+ q(1043) => q(bbe),
+ q(1044) => q(bbf),
+ q(1045) => q(bbg),
+ q(1046) => q(bbh),
+ q(1047) => q(bbi),
+ q(1048) => q(bbj),
+ q(1049) => q(bbk),
+ q(1050) => q(bbl),
+ q(1051) => q(bbm),
+ q(1052) => q(bbn),
+ q(1053) => q(bbo),
+ q(1054) => q(bbp),
+ q(1055) => q(bbq),
+ q(1056) => q(bbr),
+ q(1057) => q(bbs),
+ q(1058) => q(bbt),
+ q(1059) => q(bbu),
+ q(1060) => q(bbv),
+ q(1061) => q(bbw),
+ q(1062) => q(bbx),
+ q(1063) => q(bby),
+ q(1064) => q(bbz),
+ q(1065) => q(bca),
+ q(1066) => q(bcb),
+ q(1067) => q(bcc),
+ q(1068) => q(bcd),
+ q(1069) => q(bce),
+ q(1070) => q(bcf),
+ q(1071) => q(bcg),
+ q(1072) => q(bch),
+ q(1073) => q(bci),
+ q(1074) => q(bcj),
+ q(1075) => q(bck),
+ q(1076) => q(bcl),
+ q(1077) => q(bcm),
+ q(1078) => q(bcn),
+ q(1079) => q(bco),
+ q(1080) => q(bcp),
+ q(1081) => q(bcq),
+ q(1082) => q(bcr),
+ q(1083) => q(bcs),
+ q(1084) => q(bct),
+ q(1085) => q(bcu),
+ q(1086) => q(bcv),
+ q(1087) => q(bcw),
+ q(1088) => q(bcy),
+ q(1089) => q(bcz),
+ q(1090) => q(bda),
+ q(1091) => q(bdb),
+ q(1092) => q(bdc),
+ q(1093) => q(bdd),
+ q(1094) => q(bde),
+ q(1095) => q(bdf),
+ q(1096) => q(bdg),
+ q(1097) => q(bdh),
+ q(1098) => q(bdi),
+ q(1099) => q(bdj),
+ q(1100) => q(bdk),
+ q(1101) => q(bdl),
+ q(1102) => q(bdm),
+ q(1103) => q(bdn),
+ q(1104) => q(bdo),
+ q(1105) => q(bdp),
+ q(1106) => q(bdq),
+ q(1107) => q(bdr),
+ q(1108) => q(bds),
+ q(1109) => q(bdt),
+ q(1110) => q(bdu),
+ q(1111) => q(bdv),
+ q(1112) => q(bdw),
+ q(1113) => q(bdx),
+ q(1114) => q(bdy),
+ q(1115) => q(bdz),
+ q(1116) => q(bea),
+ q(1117) => q(beb),
+ q(1118) => q(bec),
+ q(1119) => q(bed),
+ q(1120) => q(bee),
+ q(1121) => q(bef),
+ q(1122) => q(beg),
+ q(1123) => q(beh),
+ q(1124) => q(bei),
+ q(1125) => q(bek),
+ q(1126) => q(beo),
+ q(1127) => q(bep),
+ q(1128) => q(beq),
+ q(1129) => q(bes),
+ q(1130) => q(bet),
+ q(1131) => q(beu),
+ q(1132) => q(bev),
+ q(1133) => q(bew),
+ q(1134) => q(bex),
+ q(1135) => q(bey),
+ q(1136) => q(bez),
+ q(1137) => q(mot),
+ q(1138) => q(bfb),
+ q(1139) => q(bfc),
+ q(1140) => q(bfd),
+ q(1141) => q(bfe),
+ q(1142) => q(bff),
+ q(1143) => q(bfg),
+ q(1144) => q(bfh),
+ q(1145) => q(bfi),
+ q(1146) => q(bfj),
+ q(1147) => q(bfk),
+ q(1148) => q(bfl),
+ q(1149) => q(bfm),
+ q(1150) => q(bfn),
+ q(1151) => q(bfo),
+ q(1152) => q(bfp),
+ q(1153) => q(bfq),
+ q(1154) => q(bfr),
+ q(1155) => q(bfs),
+ q(1156) => q(bft),
+ q(1157) => q(bfu),
+ q(1158) => q(bfw),
+ q(1159) => q(bfx),
+ q(1160) => q(bfy),
+ q(1161) => q(bfz),
+ q(1162) => q(bga),
+ q(1163) => q(bgb),
+ q(1164) => q(bgc),
+ q(1165) => q(bgd),
+ q(1166) => q(bge),
+ q(1167) => q(bgf),
+ q(1168) => q(bgg),
+ q(1169) => q(bgi),
+ q(1170) => q(bgj),
+ q(1171) => q(bgk),
+ q(1172) => q(bgl),
+ q(1173) => q(bgm),
+ q(1174) => q(bgn),
+ q(1175) => q(bgo),
+ q(1176) => q(bgp),
+ q(1177) => q(bgq),
+ q(1178) => q(bgr),
+ q(1179) => q(bgs),
+ q(1180) => q(bgt),
+ q(1181) => q(bgu),
+ q(1182) => q(bgv),
+ q(1183) => q(bgw),
+ q(1184) => q(bgx),
+ q(1185) => q(bgy),
+ q(1186) => q(bgz),
+ q(1187) => q(bha),
+ q(1188) => q(bhb),
+ q(1189) => q(bhc),
+ q(1190) => q(bhd),
+ q(1191) => q(bhe),
+ q(1192) => q(bhf),
+ q(1193) => q(bhg),
+ q(1194) => q(bhh),
+ q(1195) => q(bhi),
+ q(1196) => q(bhj),
+ q(1197) => q(bhl),
+ q(1198) => q(bhm),
+ q(1199) => q(bhn),
+ q(1200) => q(bhp),
+ q(1201) => q(bhq),
+ q(1202) => q(bhr),
+ q(1203) => q(bhs),
+ q(1204) => q(bht),
+ q(1205) => q(bhu),
+ q(1206) => q(bhv),
+ q(1207) => q(bhw),
+ q(1208) => q(bhx),
+ q(1209) => q(bhy),
+ q(1210) => q(bhz),
+ q(1211) => q(bia),
+ q(1212) => q(bib),
+ q(1213) => q(bic),
+ q(1214) => q(bid),
+ q(1215) => q(bie),
+ q(1216) => q(bif),
+ q(1217) => q(big),
+ q(1218) => q(bij),
+ q(1219) => q(bil),
+ q(1220) => q(bim),
+ q(1221) => q(bio),
+ q(1222) => q(bip),
+ q(1223) => q(biq),
+ q(1224) => q(bir),
+ q(1225) => q(bit),
+ q(1226) => q(biu),
+ q(1227) => q(biv),
+ q(1228) => q(biw),
+ q(1229) => q(bix),
+ q(1230) => q(biy),
+ q(1231) => q(biz),
+ q(1232) => q(bja),
+ q(1233) => q(bjb),
+ q(1234) => q(bjc),
+ q(1235) => q(bje),
+ q(1236) => q(bjf),
+ q(1237) => q(bjg),
+ q(1238) => q(bjh),
+ q(1239) => q(bji),
+ q(1240) => q(bjj),
+ q(1241) => q(bjk),
+ q(1242) => q(bjl),
+ q(1243) => q(bjm),
+ q(1244) => q(bjn),
+ q(1245) => q(bjo),
+ q(1246) => q(bjr),
+ q(1247) => q(bjs),
+ q(1248) => q(bjt),
+ q(1249) => q(bju),
+ q(1250) => q(bjv),
+ q(1251) => q(bjw),
+ q(1252) => q(bjx),
+ q(1253) => q(bjy),
+ q(1254) => q(bjz),
+ q(1255) => q(bka),
+ q(1256) => q(bkc),
+ q(1257) => q(bkd),
+ q(1258) => q(bkf),
+ q(1259) => q(bkg),
+ q(1260) => q(bkh),
+ q(1261) => q(bki),
+ q(1262) => q(bkj),
+ q(1263) => q(bkk),
+ q(1264) => q(bkl),
+ q(1265) => q(bkm),
+ q(1266) => q(bkn),
+ q(1267) => q(bko),
+ q(1268) => q(bkp),
+ q(1269) => q(bkq),
+ q(1270) => q(bkr),
+ q(1271) => q(bks),
+ q(1272) => q(bkt),
+ q(1273) => q(bku),
+ q(1274) => q(bkv),
+ q(1275) => q(bkw),
+ q(1276) => q(bkx),
+ q(1277) => q(bky),
+ q(1278) => q(bkz),
+ q(1279) => q(blb),
+ q(1280) => q(blc),
+ q(1281) => q(bld),
+ q(1282) => q(ble),
+ q(1283) => q(blf),
+ q(1284) => q(blg),
+ q(1285) => q(blh),
+ q(1286) => q(bli),
+ q(1287) => q(blj),
+ q(1288) => q(blk),
+ q(1289) => q(bll),
+ q(1290) => q(blm),
+ q(1291) => q(bln),
+ q(1292) => q(blo),
+ q(1293) => q(blp),
+ q(1294) => q(blq),
+ q(1295) => q(blr),
+ q(1296) => q(bls),
+ q(1297) => q(blt),
+ q(1298) => q(blv),
+ q(1299) => q(blw),
+ q(1300) => q(blx),
+ q(1301) => q(bly),
+ q(1302) => q(blz),
+ q(1303) => q(bma),
+ q(1304) => q(bmb),
+ q(1305) => q(bmc),
+ q(1306) => q(bmd),
+ q(1307) => q(bme),
+ q(1308) => q(bmf),
+ q(1309) => q(bmg),
+ q(1310) => q(bmh),
+ q(1311) => q(bmi),
+ q(1312) => q(bmj),
+ q(1313) => q(bmk),
+ q(1314) => q(bml),
+ q(1315) => q(bmm),
+ q(1316) => q(bmn),
+ q(1317) => q(bmo),
+ q(1318) => q(bmp),
+ q(1319) => q(bmq),
+ q(1320) => q(bmr),
+ q(1321) => q(bms),
+ q(1322) => q(bmt),
+ q(1323) => q(bmu),
+ q(1324) => q(bmv),
+ q(1325) => q(bmw),
+ q(1326) => q(bmx),
+ q(1327) => q(bmy),
+ q(1328) => q(bmz),
+ q(1329) => q(bna),
+ q(1330) => q(bnb),
+ q(1331) => q(bnc),
+ q(1332) => q(bnd),
+ q(1333) => q(bne),
+ q(1334) => q(bnf),
+ q(1335) => q(bng),
+ q(1336) => q(bni),
+ q(1337) => q(bnj),
+ q(1338) => q(bnk),
+ q(1339) => q(bnl),
+ q(1340) => q(bnm),
+ q(1341) => q(bnn),
+ q(1342) => q(bno),
+ q(1343) => q(bnp),
+ q(1344) => q(bnq),
+ q(1345) => q(bnr),
+ q(1346) => q(bns),
+ q(1347) => q(bnu),
+ q(1348) => q(bnv),
+ q(1349) => q(bnw),
+ q(1350) => q(bnx),
+ q(1351) => q(bny),
+ q(1352) => q(bnz),
+ q(1353) => q(boa),
+ q(1354) => q(bob),
+ q(1355) => q(boe),
+ q(1356) => q(bof),
+ q(1357) => q(bog),
+ q(1358) => q(boh),
+ q(1359) => q(boi),
+ q(1360) => q(boj),
+ q(1361) => q(bok),
+ q(1362) => q(bol),
+ q(1363) => q(bom),
+ q(1364) => q(bon),
+ q(1365) => q(boo),
+ q(1366) => q(bop),
+ q(1367) => q(boq),
+ q(1368) => q(bor),
+ q(1369) => q(bot),
+ q(1370) => q(bou),
+ q(1371) => q(bov),
+ q(1372) => q(bow),
+ q(1373) => q(box),
+ q(1374) => q(boy),
+ q(1375) => q(boz),
+ q(1376) => q(bpa),
+ q(1377) => q(bpb),
+ q(1378) => q(bpd),
+ q(1379) => q(bpg),
+ q(1380) => q(bph),
+ q(1381) => q(bpi),
+ q(1382) => q(bpj),
+ q(1383) => q(bpk),
+ q(1384) => q(bpl),
+ q(1385) => q(bpm),
+ q(1386) => q(bpn),
+ q(1387) => q(bpo),
+ q(1388) => q(bpp),
+ q(1389) => q(bpq),
+ q(1390) => q(bpr),
+ q(1391) => q(bps),
+ q(1392) => q(bpt),
+ q(1393) => q(bpu),
+ q(1394) => q(bpv),
+ q(1395) => q(bpw),
+ q(1396) => q(bpx),
+ q(1397) => q(bpy),
+ q(1398) => q(bpz),
+ q(1399) => q(bqa),
+ q(1400) => q(bqb),
+ q(1401) => q(bqc),
+ q(1402) => q(bqd),
+ q(1403) => q(bqf),
+ q(1404) => q(bqg),
+ q(1405) => q(bqh),
+ q(1406) => q(bqi),
+ q(1407) => q(bqj),
+ q(1408) => q(bqk),
+ q(1409) => q(bql),
+ q(1410) => q(bqm),
+ q(1411) => q(bqn),
+ q(1412) => q(bqo),
+ q(1413) => q(bqp),
+ q(1414) => q(bqq),
+ q(1415) => q(bqr),
+ q(1416) => q(bqs),
+ q(1417) => q(bqt),
+ q(1418) => q(bqu),
+ q(1419) => q(bqv),
+ q(1420) => q(bqw),
+ q(1421) => q(bqx),
+ q(1422) => q(bqy),
+ q(1423) => q(bqz),
+ q(1424) => q(brb),
+ q(1425) => q(brc),
+ q(1426) => q(brd),
+ q(1427) => q(brf),
+ q(1428) => q(brg),
+ q(1429) => q(brh),
+ q(1430) => q(bri),
+ q(1431) => q(brj),
+ q(1432) => q(brk),
+ q(1433) => q(brl),
+ q(1434) => q(brm),
+ q(1435) => q(brn),
+ q(1436) => q(bro),
+ q(1437) => q(brp),
+ q(1438) => q(brq),
+ q(1439) => q(brr),
+ q(1440) => q(brs),
+ q(1441) => q(brt),
+ q(1442) => q(bru),
+ q(1443) => q(brv),
+ q(1444) => q(brw),
+ q(1445) => q(brx),
+ q(1446) => q(bry),
+ q(1447) => q(brz),
+ q(1448) => q(bsa),
+ q(1449) => q(bsb),
+ q(1450) => q(bsc),
+ q(1451) => q(bse),
+ q(1452) => q(bsf),
+ q(1453) => q(bsg),
+ q(1454) => q(bsh),
+ q(1455) => q(bsi),
+ q(1456) => q(bsj),
+ q(1457) => q(bsk),
+ q(1458) => q(bsl),
+ q(1459) => q(bsm),
+ q(1460) => q(bsn),
+ q(1461) => q(bso),
+ q(1462) => q(bsp),
+ q(1463) => q(bsq),
+ q(1464) => q(bsr),
+ q(1465) => q(bss),
+ q(1466) => q(bst),
+ q(1467) => q(bsu),
+ q(1468) => q(bsv),
+ q(1469) => q(bsw),
+ q(1470) => q(bsx),
+ q(1471) => q(bsy),
+ q(1472) => q(bta),
+ q(1473) => q(btc),
+ q(1474) => q(btd),
+ q(1475) => q(bte),
+ q(1476) => q(btf),
+ q(1477) => q(btg),
+ q(1478) => q(bth),
+ q(1479) => q(bti),
+ q(1480) => q(btj),
+ q(1481) => q(btl),
+ q(1482) => q(btm),
+ q(1483) => q(btn),
+ q(1484) => q(bto),
+ q(1485) => q(btp),
+ q(1486) => q(btq),
+ q(1487) => q(btr),
+ q(1488) => q(bts),
+ q(1489) => q(btt),
+ q(1490) => q(btu),
+ q(1491) => q(btv),
+ q(1492) => q(btw),
+ q(1493) => q(btx),
+ q(1494) => q(bty),
+ q(1495) => q(btz),
+ q(1496) => q(bub),
+ q(1497) => q(buc),
+ q(1498) => q(bud),
+ q(1499) => q(bue),
+ q(1500) => q(buf),
+ q(1501) => q(buh),
+ q(1502) => q(bui),
+ q(1503) => q(buj),
+ q(1504) => q(buk),
+ q(1505) => q(bum),
+ q(1506) => q(bun),
+ q(1507) => q(buo),
+ q(1508) => q(bup),
+ q(1509) => q(buq),
+ q(1510) => q(bus),
+ q(1511) => q(but),
+ q(1512) => q(buu),
+ q(1513) => q(buv),
+ q(1514) => q(buw),
+ q(1515) => q(bux),
+ q(1516) => q(buy),
+ q(1517) => q(buz),
+ q(1518) => q(bva),
+ q(1519) => q(bvb),
+ q(1520) => q(bvc),
+ q(1521) => q(bvd),
+ q(1522) => q(bve),
+ q(1523) => q(bvf),
+ q(1524) => q(bvg),
+ q(1525) => q(bvh),
+ q(1526) => q(bvi),
+ q(1527) => q(bvj),
+ q(1528) => q(bvk),
+ q(1529) => q(bvl),
+ q(1530) => q(bvm),
+ q(1531) => q(bvn),
+ q(1532) => q(bvo),
+ q(1533) => q(bvq),
+ q(1534) => q(bvr),
+ q(1535) => q(bvt),
+ q(1536) => q(bvu),
+ q(1537) => q(bvv),
+ q(1538) => q(bvw),
+ q(1539) => q(bvx),
+ q(1540) => q(bvy),
+ q(1541) => q(bvz),
+ q(1542) => q(bwa),
+ q(1543) => q(bwb),
+ q(1544) => q(bwc),
+ q(1545) => q(bwd),
+ q(1546) => q(bwe),
+ q(1547) => q(bwf),
+ q(1548) => q(bwg),
+ q(1549) => q(bwh),
+ q(1550) => q(bwi),
+ q(1551) => q(bwj),
+ q(1552) => q(bwk),
+ q(1553) => q(bwl),
+ q(1554) => q(bwm),
+ q(1555) => q(bwn),
+ q(1556) => q(bwo),
+ q(1557) => q(bwp),
+ q(1558) => q(bwq),
+ q(1559) => q(bwr),
+ q(1560) => q(bws),
+ q(1561) => q(bwt),
+ q(1562) => q(bwu),
+ q(1563) => q(bww),
+ q(1564) => q(bwx),
+ q(1565) => q(bwy),
+ q(1566) => q(bwz),
+ q(1567) => q(bxa),
+ q(1568) => q(bxb),
+ q(1569) => q(bxc),
+ q(1570) => q(bxd),
+ q(1571) => q(bxe),
+ q(1572) => q(bxf),
+ q(1573) => q(bxg),
+ q(1574) => q(bxh),
+ q(1575) => q(bxi),
+ q(1576) => q(bxj),
+ q(1577) => q(bxk),
+ q(1578) => q(bxl),
+ q(1579) => q(bxm),
+ q(1580) => q(bxn),
+ q(1581) => q(bxo),
+ q(1582) => q(bxp),
+ q(1583) => q(bxq),
+ q(1584) => q(bxr),
+ q(1585) => q(bxs),
+ q(1586) => q(bxu),
+ q(1587) => q(bxv),
+ q(1588) => q(bxw),
+ q(1589) => q(bxx),
+ q(1590) => q(bxz),
+ q(1591) => q(bya),
+ q(1592) => q(byb),
+ q(1593) => q(byc),
+ q(1594) => q(byd),
+ q(1595) => q(bye),
+ q(1596) => q(byf),
+ q(1597) => q(byg),
+ q(1598) => q(byh),
+ q(1599) => q(byi),
+ q(1600) => q(byj),
+ q(1601) => q(byk),
+ q(1602) => q(byl),
+ q(1603) => q(bym),
+ q(1604) => q(byo),
+ q(1605) => q(byp),
+ q(1606) => q(byq),
+ q(1607) => q(byr),
+ q(1608) => q(bys),
+ q(1609) => q(byt),
+ q(1610) => q(byv),
+ q(1611) => q(byw),
+ q(1612) => q(byx),
+ q(1613) => q(byy),
+ q(1614) => q(byz),
+ q(1615) => q(bza),
+ q(1616) => q(bzb),
+ q(1617) => q(bzc),
+ q(1618) => q(bzd),
+ q(1619) => q(bze),
+ q(1620) => q(bzf),
+ q(1621) => q(bzg),
+ q(1622) => q(bzh),
+ q(1623) => q(bzi),
+ q(1624) => q(bzj),
+ q(1625) => q(bzk),
+ q(1626) => q(bzl),
+ q(1627) => q(bzm),
+ q(1628) => q(bzn),
+ q(1629) => q(bzo),
+ q(1630) => q(bzp),
+ q(1631) => q(bzq),
+ q(1632) => q(bzr),
+ q(1633) => q(bzs),
+ q(1634) => q(bzt),
+ q(1635) => q(bzu),
+ q(1636) => q(bzv),
+ q(1637) => q(bzw),
+ q(1638) => q(bzx),
+ q(1639) => q(bzy),
+ q(1640) => q(bzz),
+ q(1641) => q(caa),
+ q(1642) => q(cab),
+ q(1643) => q(cac),
+ q(1644) => q(cae),
+ q(1645) => q(caf),
+ q(1646) => q(cag),
+ q(1647) => q(cah),
+ q(1648) => q(caj),
+ q(1649) => q(cak),
+ q(1650) => q(cal),
+ q(1651) => q(cam),
+ q(1652) => q(can),
+ q(1653) => q(cao),
+ q(1654) => q(cap),
+ q(1655) => q(caq),
+ q(1656) => q(cas),
+ q(1657) => q(cav),
+ q(1658) => q(caw),
+ q(1659) => q(cax),
+ q(1660) => q(cay),
+ q(1661) => q(caz),
+ q(1662) => q(cbb),
+ q(1663) => q(cbc),
+ q(1664) => q(cbd),
+ q(1665) => q(cbe),
+ q(1666) => q(cbg),
+ q(1667) => q(cbh),
+ q(1668) => q(cbi),
+ q(1669) => q(cbj),
+ q(1670) => q(cbk),
+ q(1671) => q(cbl),
+ q(1672) => q(cbn),
+ q(1673) => q(cbo),
+ q(1674) => q(cbr),
+ q(1675) => q(cbs),
+ q(1676) => q(cbt),
+ q(1677) => q(cbu),
+ q(1678) => q(cbv),
+ q(1679) => q(cbw),
+ q(1680) => q(cby),
+ q(1681) => q(cca),
+ q(1682) => q(ccc),
+ q(1683) => q(ccd),
+ q(1684) => q(cce),
+ q(1685) => q(ccg),
+ q(1686) => q(cch),
+ q(1687) => q(ccj),
+ q(1688) => q(ccl),
+ q(1689) => q(ccm),
+ q(1690) => q(cco),
+ q(1691) => q(ccp),
+ q(1692) => q(ccr),
+ q(1693) => q(cda),
+ q(1694) => q(cde),
+ q(1695) => q(cdf),
+ q(1696) => q(cdg),
+ q(1697) => q(cdh),
+ q(1698) => q(cdi),
+ q(1699) => q(cdj),
+ q(1700) => q(cdm),
+ q(1701) => q(cdn),
+ q(1702) => q(cdo),
+ q(1703) => q(cdr),
+ q(1704) => q(cds),
+ q(1705) => q(cdy),
+ q(1706) => q(cdz),
+ q(1707) => q(cea),
+ q(1708) => q(ceg),
+ q(1709) => q(cek),
+ q(1710) => q(cen),
+ q(1711) => q(cet),
+ q(1712) => q(cfa),
+ q(1713) => q(cfd),
+ q(1714) => q(cfg),
+ q(1715) => q(cfm),
+ q(1716) => q(cga),
+ q(1717) => q(cgc),
+ q(1718) => q(cgg),
+ q(1719) => q(cgk),
+ q(1720) => q(chc),
+ q(1721) => q(chd),
+ q(1722) => q(chf),
+ q(1723) => q(chh),
+ q(1724) => q(chj),
+ q(1725) => q(chl),
+ q(1726) => q(chq),
+ q(1727) => q(cht),
+ q(1728) => q(chw),
+ q(1729) => q(chx),
+ q(1730) => q(chz),
+ q(1731) => q(cia),
+ q(1732) => q(cib),
+ q(1733) => q(cic),
+ q(1734) => q(cid),
+ q(1735) => q(cie),
+ q(1736) => q(cih),
+ q(1737) => q(cik),
+ q(1738) => q(cim),
+ q(1739) => q(cin),
+ q(1740) => q(cip),
+ q(1741) => q(cir),
+ q(1742) => q(ciw),
+ q(1743) => q(ciy),
+ q(1744) => q(cja),
+ q(1745) => q(cje),
+ q(1746) => q(cjh),
+ q(1747) => q(cji),
+ q(1748) => q(cjk),
+ q(1749) => q(cjm),
+ q(1750) => q(cjn),
+ q(1751) => q(cjo),
+ q(1752) => q(cjp),
+ q(1753) => q(cjs),
+ q(1754) => q(cjv),
+ q(1755) => q(cjy),
+ q(1756) => q(ckb),
+ q(1757) => q(ckh),
+ q(1758) => q(ckl),
+ q(1759) => q(cko),
+ q(1760) => q(ckq),
+ q(1761) => q(ckr),
+ q(1762) => q(cks),
+ q(1763) => q(ckt),
+ q(1764) => q(cku),
+ q(1765) => q(ckv),
+ q(1766) => q(ckx),
+ q(1767) => q(cky),
+ q(1768) => q(ckz),
+ q(1769) => q(cla),
+ q(1770) => q(clc),
+ q(1771) => q(cld),
+ q(1772) => q(cle),
+ q(1773) => q(clh),
+ q(1774) => q(cli),
+ q(1775) => q(clj),
+ q(1776) => q(clk),
+ q(1777) => q(cll),
+ q(1778) => q(clm),
+ q(1779) => q(clo),
+ q(1780) => q(clt),
+ q(1781) => q(clu),
+ q(1782) => q(clw),
+ q(1783) => q(cly),
+ q(1784) => q(cma),
+ q(1785) => q(cme),
+ q(1786) => q(cmg),
+ q(1787) => q(cmi),
+ q(1788) => q(cml),
+ q(1789) => q(cmm),
+ q(1790) => q(cmn),
+ q(1791) => q(cmo),
+ q(1792) => q(cmr),
+ q(1793) => q(cms),
+ q(1794) => q(cmt),
+ q(1795) => q(cna),
+ q(1796) => q(cnb),
+ q(1797) => q(cnc),
+ q(1798) => q(cng),
+ q(1799) => q(cnh),
+ q(1800) => q(cni),
+ q(1801) => q(cnk),
+ q(1802) => q(cnl),
+ q(1803) => q(cno),
+ q(1804) => q(cns),
+ q(1805) => q(cnt),
+ q(1806) => q(cnu),
+ q(1807) => q(cnw),
+ q(1808) => q(cnx),
+ q(1809) => q(coa),
+ q(1810) => q(cob),
+ q(1811) => q(coc),
+ q(1812) => q(cod),
+ q(1813) => q(coe),
+ q(1814) => q(cof),
+ q(1815) => q(cog),
+ q(1816) => q(coh),
+ q(1817) => q(coj),
+ q(1818) => q(cok),
+ q(1819) => q(col),
+ q(1820) => q(com),
+ q(1821) => q(con),
+ q(1822) => q(coo),
+ q(1823) => q(coq),
+ q(1824) => q(cot),
+ q(1825) => q(cou),
+ q(1826) => q(cov),
+ q(1827) => q(cow),
+ q(1828) => q(cox),
+ q(1829) => q(coy),
+ q(1830) => q(coz),
+ q(1831) => q(cpa),
+ q(1832) => q(cpb),
+ q(1833) => q(cpc),
+ q(1834) => q(cpg),
+ q(1835) => q(cpi),
+ q(1836) => q(cpn),
+ q(1837) => q(cps),
+ q(1838) => q(cpu),
+ q(1839) => q(cpx),
+ q(1840) => q(cpy),
+ q(1841) => q(cqd),
+ q(1842) => q(cqu),
+ q(1843) => q(cra),
+ q(1844) => q(crb),
+ q(1845) => q(crc),
+ q(1846) => q(crd),
+ q(1847) => q(crf),
+ q(1848) => q(crg),
+ q(1849) => q(cri),
+ q(1850) => q(crj),
+ q(1851) => q(crk),
+ q(1852) => q(crl),
+ q(1853) => q(crm),
+ q(1854) => q(crn),
+ q(1855) => q(cro),
+ q(1856) => q(crq),
+ q(1857) => q(crr),
+ q(1858) => q(crs),
+ q(1859) => q(crt),
+ q(1860) => q(crv),
+ q(1861) => q(crw),
+ q(1862) => q(crx),
+ q(1863) => q(cry),
+ q(1864) => q(crz),
+ q(1865) => q(csa),
+ q(1866) => q(csc),
+ q(1867) => q(csd),
+ q(1868) => q(cse),
+ q(1869) => q(csf),
+ q(1870) => q(csg),
+ q(1871) => q(csh),
+ q(1872) => q(csi),
+ q(1873) => q(csk),
+ q(1874) => q(csl),
+ q(1875) => q(csm),
+ q(1876) => q(csn),
+ q(1877) => q(cso),
+ q(1878) => q(csq),
+ q(1879) => q(csr),
+ q(1880) => q(css),
+ q(1881) => q(cst),
+ q(1882) => q(csv),
+ q(1883) => q(csw),
+ q(1884) => q(csy),
+ q(1885) => q(csz),
+ q(1886) => q(cta),
+ q(1887) => q(ctc),
+ q(1888) => q(ctd),
+ q(1889) => q(cte),
+ q(1890) => q(ctg),
+ q(1891) => q(cth),
+ q(1892) => q(ctl),
+ q(1893) => q(ctm),
+ q(1894) => q(ctn),
+ q(1895) => q(cto),
+ q(1896) => q(ctp),
+ q(1897) => q(cts),
+ q(1898) => q(ctt),
+ q(1899) => q(ctu),
+ q(1900) => q(ctz),
+ q(1901) => q(cua),
+ q(1902) => q(cub),
+ q(1903) => q(cuc),
+ q(1904) => q(cug),
+ q(1905) => q(cuh),
+ q(1906) => q(cui),
+ q(1907) => q(cuj),
+ q(1908) => q(cuk),
+ q(1909) => q(cul),
+ q(1910) => q(cum),
+ q(1911) => q(cuo),
+ q(1912) => q(cup),
+ q(1913) => q(cuq),
+ q(1914) => q(cur),
+ q(1915) => q(cut),
+ q(1916) => q(cuu),
+ q(1917) => q(cuv),
+ q(1918) => q(cuw),
+ q(1919) => q(cux),
+ q(1920) => q(cvg),
+ q(1921) => q(cvn),
+ q(1922) => q(cwa),
+ q(1923) => q(cwb),
+ q(1924) => q(cwd),
+ q(1925) => q(cwe),
+ q(1926) => q(cwg),
+ q(1927) => q(cwt),
+ q(1928) => q(cya),
+ q(1929) => q(cyb),
+ q(1930) => q(cyo),
+ q(1931) => q(czh),
+ q(1932) => q(czk),
+ q(1933) => q(czn),
+ q(1934) => q(czo),
+ q(1935) => q(czt),
+ q(1936) => q(daa),
+ q(1937) => q(dac),
+ q(1938) => q(dad),
+ q(1939) => q(dae),
+ q(1940) => q(daf),
+ q(1941) => q(dag),
+ q(1942) => q(dah),
+ q(1943) => q(dai),
+ q(1944) => q(daj),
+ q(1945) => q(dal),
+ q(1946) => q(dam),
+ q(1947) => q(dao),
+ q(1948) => q(daq),
+ q(1949) => q(das),
+ q(1950) => q(dau),
+ q(1951) => q(dav),
+ q(1952) => q(daw),
+ q(1953) => q(dax),
+ q(1954) => q(daz),
+ q(1955) => q(dba),
+ q(1956) => q(dbb),
+ q(1957) => q(dbd),
+ q(1958) => q(dbe),
+ q(1959) => q(dbf),
+ q(1960) => q(dbg),
+ q(1961) => q(dbi),
+ q(1962) => q(dbj),
+ q(1963) => q(dbl),
+ q(1964) => q(dbm),
+ q(1965) => q(dbn),
+ q(1966) => q(dbo),
+ q(1967) => q(dbp),
+ q(1968) => q(dbq),
+ q(1969) => q(dbr),
+ q(1970) => q(dbt),
+ q(1971) => q(dbu),
+ q(1972) => q(dbv),
+ q(1973) => q(dbw),
+ q(1974) => q(dby),
+ q(1975) => q(dcc),
+ q(1976) => q(dcr),
+ q(1977) => q(dda),
+ q(1978) => q(ddd),
+ q(1979) => q(dde),
+ q(1980) => q(ddg),
+ q(1981) => q(ddi),
+ q(1982) => q(ddj),
+ q(1983) => q(ddn),
+ q(1984) => q(ddo),
+ q(1985) => q(ddr),
+ q(1986) => q(dds),
+ q(1987) => q(ddw),
+ q(1988) => q(dec),
+ q(1989) => q(ded),
+ q(1990) => q(dee),
+ q(1991) => q(def),
+ q(1992) => q(deg),
+ q(1993) => q(deh),
+ q(1994) => q(dei),
+ q(1995) => q(dek),
+ q(1996) => q(dem),
+ q(1997) => q(dep),
+ q(1998) => q(deq),
+ q(1999) => q(der),
+ q(2000) => q(des),
+ q(2001) => q(dev),
+ q(2002) => q(dez),
+ q(2003) => q(dga),
+ q(2004) => q(dgb),
+ q(2005) => q(dgc),
+ q(2006) => q(dgd),
+ q(2007) => q(dge),
+ q(2008) => q(dgg),
+ q(2009) => q(dgh),
+ q(2010) => q(dgi),
+ q(2011) => q(dgk),
+ q(2012) => q(dgl),
+ q(2013) => q(dgn),
+ q(2014) => q(dgo),
+ q(2015) => q(dgs),
+ q(2016) => q(dgt),
+ q(2017) => q(dgu),
+ q(2018) => q(dgw),
+ q(2019) => q(dgx),
+ q(2020) => q(dgz),
+ q(2021) => q(dhd),
+ q(2022) => q(dhg),
+ q(2023) => q(dhi),
+ q(2024) => q(dhl),
+ q(2025) => q(dhm),
+ q(2026) => q(dhn),
+ q(2027) => q(dho),
+ q(2028) => q(dhr),
+ q(2029) => q(dhs),
+ q(2030) => q(dhu),
+ q(2031) => q(dhv),
+ q(2032) => q(dhw),
+ q(2033) => q(dia),
+ q(2034) => q(dib),
+ q(2035) => q(dic),
+ q(2036) => q(did),
+ q(2037) => q(dif),
+ q(2038) => q(dig),
+ q(2039) => q(dih),
+ q(2040) => q(dii),
+ q(2041) => q(dij),
+ q(2042) => q(dik),
+ q(2043) => q(dil),
+ q(2044) => q(dim),
+ q(2045) => q(dio),
+ q(2046) => q(dip),
+ q(2047) => q(diq),
+ q(2048) => q(dir),
+ q(2049) => q(dis),
+ q(2050) => q(dit),
+ q(2051) => q(diu),
+ q(2052) => q(diw),
+ q(2053) => q(dix),
+ q(2054) => q(diy),
+ q(2055) => q(diz),
+ q(2056) => q(dja),
+ q(2057) => q(djb),
+ q(2058) => q(djc),
+ q(2059) => q(djd),
+ q(2060) => q(dje),
+ q(2061) => q(djf),
+ q(2062) => q(dji),
+ q(2063) => q(djj),
+ q(2064) => q(djk),
+ q(2065) => q(djl),
+ q(2066) => q(djm),
+ q(2067) => q(djn),
+ q(2068) => q(djo),
+ q(2069) => q(djr),
+ q(2070) => q(dju),
+ q(2071) => q(djw),
+ q(2072) => q(dka),
+ q(2073) => q(dkk),
+ q(2074) => q(dkr),
+ q(2075) => q(dks),
+ q(2076) => q(dkx),
+ q(2077) => q(dlg),
+ q(2078) => q(dlm),
+ q(2079) => q(dln),
+ q(2080) => q(dma),
+ q(2081) => q(dmb),
+ q(2082) => q(dmc),
+ q(2083) => q(dmd),
+ q(2084) => q(dme),
+ q(2085) => q(dmg),
+ q(2086) => q(dmk),
+ q(2087) => q(dml),
+ q(2088) => q(dmm),
+ q(2089) => q(dmo),
+ q(2090) => q(dmr),
+ q(2091) => q(dms),
+ q(2092) => q(dmu),
+ q(2093) => q(dmv),
+ q(2094) => q(dmx),
+ q(2095) => q(dmy),
+ q(2096) => q(dna),
+ q(2097) => q(dnd),
+ q(2098) => q(dne),
+ q(2099) => q(dng),
+ q(2100) => q(dni),
+ q(2101) => q(dnk),
+ q(2102) => q(dnn),
+ q(2103) => q(dnr),
+ q(2104) => q(dnt),
+ q(2105) => q(dnu),
+ q(2106) => q(dnv),
+ q(2107) => q(dnw),
+ q(2108) => q(dny),
+ q(2109) => q(doa),
+ q(2110) => q(dob),
+ q(2111) => q(doc),
+ q(2112) => q(doe),
+ q(2113) => q(dof),
+ q(2114) => q(doh),
+ q(2115) => q(dok),
+ q(2116) => q(dol),
+ q(2117) => q(don),
+ q(2118) => q(doo),
+ q(2119) => q(dop),
+ q(2120) => q(doq),
+ q(2121) => q(dor),
+ q(2122) => q(dos),
+ q(2123) => q(dot),
+ q(2124) => q(dov),
+ q(2125) => q(dow),
+ q(2126) => q(dox),
+ q(2127) => q(doy),
+ q(2128) => q(doz),
+ q(2129) => q(dpp),
+ q(2130) => q(drb),
+ q(2131) => q(drc),
+ q(2132) => q(drd),
+ q(2133) => q(dre),
+ q(2134) => q(drg),
+ q(2135) => q(dri),
+ q(2136) => q(drl),
+ q(2137) => q(drn),
+ q(2138) => q(dro),
+ q(2139) => q(drq),
+ q(2140) => q(drr),
+ q(2141) => q(drs),
+ q(2142) => q(drt),
+ q(2143) => q(dru),
+ q(2144) => q(dry),
+ q(2145) => q(dse),
+ q(2146) => q(dsh),
+ q(2147) => q(dsi),
+ q(2148) => q(dsl),
+ q(2149) => q(dsn),
+ q(2150) => q(dso),
+ q(2151) => q(dsq),
+ q(2152) => q(dta),
+ q(2153) => q(dtb),
+ q(2154) => q(dtd),
+ q(2155) => q(dth),
+ q(2156) => q(dti),
+ q(2157) => q(dtk),
+ q(2158) => q(dtm),
+ q(2159) => q(dto),
+ q(2160) => q(dtp),
+ q(2161) => q(dtr),
+ q(2162) => q(dts),
+ q(2163) => q(dtt),
+ q(2164) => q(dtu),
+ q(2165) => q(dty),
+ q(2166) => q(dub),
+ q(2167) => q(duc),
+ q(2168) => q(dud),
+ q(2169) => q(due),
+ q(2170) => q(duf),
+ q(2171) => q(dug),
+ q(2172) => q(duh),
+ q(2173) => q(dui),
+ q(2174) => q(duj),
+ q(2175) => q(duk),
+ q(2176) => q(dul),
+ q(2177) => q(dun),
+ q(2178) => q(duo),
+ q(2179) => q(dup),
+ q(2180) => q(duq),
+ q(2181) => q(dur),
+ q(2182) => q(dus),
+ q(2183) => q(duu),
+ q(2184) => q(duv),
+ q(2185) => q(duw),
+ q(2186) => q(dux),
+ q(2187) => q(duy),
+ q(2188) => q(duz),
+ q(2189) => q(dva),
+ q(2190) => q(dwa),
+ q(2191) => q(dwr),
+ q(2192) => q(dws),
+ q(2193) => q(dww),
+ q(2194) => q(dya),
+ q(2195) => q(dyb),
+ q(2196) => q(dyd),
+ q(2197) => q(dyg),
+ q(2198) => q(dyi),
+ q(2199) => q(dym),
+ q(2200) => q(dyn),
+ q(2201) => q(dyo),
+ q(2202) => q(dyy),
+ q(2203) => q(dza),
+ q(2204) => q(dzd),
+ q(2205) => q(dzg),
+ q(2206) => q(dzl),
+ q(2207) => q(dzn),
+ q(2208) => q(ebg),
+ q(2209) => q(ebk),
+ q(2210) => q(ebo),
+ q(2211) => q(ebr),
+ q(2212) => q(ebu),
+ q(2213) => q(ecr),
+ q(2214) => q(ecs),
+ q(2215) => q(ecy),
+ q(2216) => q(eee),
+ q(2217) => q(efa),
+ q(2218) => q(efe),
+ q(2219) => q(ega),
+ q(2220) => q(egl),
+ q(2221) => q(ego),
+ q(2222) => q(ehu),
+ q(2223) => q(eip),
+ q(2224) => q(eit),
+ q(2225) => q(eiv),
+ q(2226) => q(eja),
+ q(2227) => q(eke),
+ q(2228) => q(ekg),
+ q(2229) => q(eki),
+ q(2230) => q(ekk),
+ q(2231) => q(ekl),
+ q(2232) => q(ekm),
+ q(2233) => q(eko),
+ q(2234) => q(ekp),
+ q(2235) => q(ekr),
+ q(2236) => q(eky),
+ q(2237) => q(ele),
+ q(2238) => q(elh),
+ q(2239) => q(eli),
+ q(2240) => q(elk),
+ q(2241) => q(elm),
+ q(2242) => q(elo),
+ q(2243) => q(elu),
+ q(2244) => q(ema),
+ q(2245) => q(emb),
+ q(2246) => q(eme),
+ q(2247) => q(emg),
+ q(2248) => q(emi),
+ q(2249) => q(emk),
+ q(2250) => q(emm),
+ q(2251) => q(emn),
+ q(2252) => q(emo),
+ q(2253) => q(emp),
+ q(2254) => q(ems),
+ q(2255) => q(emu),
+ q(2256) => q(emw),
+ q(2257) => q(emx),
+ q(2258) => q(emy),
+ q(2259) => q(ena),
+ q(2260) => q(enb),
+ q(2261) => q(enc),
+ q(2262) => q(end),
+ q(2263) => q(enf),
+ q(2264) => q(enh),
+ q(2265) => q(enn),
+ q(2266) => q(eno),
+ q(2267) => q(enq),
+ q(2268) => q(enr),
+ q(2269) => q(enu),
+ q(2270) => q(env),
+ q(2271) => q(enw),
+ q(2272) => q(eot),
+ q(2273) => q(epi),
+ q(2274) => q(era),
+ q(2275) => q(erg),
+ q(2276) => q(erh),
+ q(2277) => q(eri),
+ q(2278) => q(erk),
+ q(2279) => q(ero),
+ q(2280) => q(err),
+ q(2281) => q(ers),
+ q(2282) => q(ert),
+ q(2283) => q(erw),
+ q(2284) => q(ese),
+ q(2285) => q(esh),
+ q(2286) => q(esi),
+ q(2287) => q(esk),
+ q(2288) => q(esl),
+ q(2289) => q(esm),
+ q(2290) => q(esn),
+ q(2291) => q(eso),
+ q(2292) => q(esq),
+ q(2293) => q(ess),
+ q(2294) => q(esu),
+ q(2295) => q(etb),
+ q(2296) => q(etc),
+ q(2297) => q(eth),
+ q(2298) => q(etn),
+ q(2299) => q(eto),
+ q(2300) => q(etr),
+ q(2301) => q(ets),
+ q(2302) => q(ett),
+ q(2303) => q(etu),
+ q(2304) => q(etx),
+ q(2305) => q(etz),
+ q(2306) => q(eve),
+ q(2307) => q(evh),
+ q(2308) => q(evn),
+ q(2309) => q(ext),
+ q(2310) => q(eya),
+ q(2311) => q(eyo),
+ q(2312) => q(eze),
+ q(2313) => q(faa),
+ q(2314) => q(fab),
+ q(2315) => q(fad),
+ q(2316) => q(faf),
+ q(2317) => q(fag),
+ q(2318) => q(fah),
+ q(2319) => q(fai),
+ q(2320) => q(faj),
+ q(2321) => q(fak),
+ q(2322) => q(fal),
+ q(2323) => q(fam),
+ q(2324) => q(fap),
+ q(2325) => q(far),
+ q(2326) => q(fau),
+ q(2327) => q(fax),
+ q(2328) => q(fay),
+ q(2329) => q(faz),
+ q(2330) => q(fbl),
+ q(2331) => q(fcs),
+ q(2332) => q(fer),
+ q(2333) => q(ffi),
+ q(2334) => q(ffm),
+ q(2335) => q(fgr),
+ q(2336) => q(fia),
+ q(2337) => q(fie),
+ q(2338) => q(fip),
+ q(2339) => q(fir),
+ q(2340) => q(fit),
+ q(2341) => q(fiw),
+ q(2342) => q(fkk),
+ q(2343) => q(fkv),
+ q(2344) => q(fla),
+ q(2345) => q(flh),
+ q(2346) => q(fli),
+ q(2347) => q(fll),
+ q(2348) => q(fln),
+ q(2349) => q(flr),
+ q(2350) => q(fly),
+ q(2351) => q(fmp),
+ q(2352) => q(fmu),
+ q(2353) => q(fng),
+ q(2354) => q(fni),
+ q(2355) => q(fod),
+ q(2356) => q(foi),
+ q(2357) => q(fom),
+ q(2358) => q(for),
+ q(2359) => q(fos),
+ q(2360) => q(fpe),
+ q(2361) => q(fqs),
+ q(2362) => q(frc),
+ q(2363) => q(frd),
+ q(2364) => q(frk),
+ q(2365) => q(frp),
+ q(2366) => q(frq),
+ q(2367) => q(frt),
+ q(2368) => q(fse),
+ q(2369) => q(fsl),
+ q(2370) => q(fss),
+ q(2371) => q(fub),
+ q(2372) => q(fuc),
+ q(2373) => q(fud),
+ q(2374) => q(fue),
+ q(2375) => q(fuf),
+ q(2376) => q(fuh),
+ q(2377) => q(fui),
+ q(2378) => q(fuj),
+ q(2379) => q(fum),
+ q(2380) => q(fun),
+ q(2381) => q(fuq),
+ q(2382) => q(fut),
+ q(2383) => q(fuu),
+ q(2384) => q(fuv),
+ q(2385) => q(fuy),
+ q(2386) => q(fvr),
+ q(2387) => q(fwa),
+ q(2388) => q(fwe),
+ q(2389) => q(gab),
+ q(2390) => q(gac),
+ q(2391) => q(gad),
+ q(2392) => q(gae),
+ q(2393) => q(gaf),
+ q(2394) => q(gag),
+ q(2395) => q(gah),
+ q(2396) => q(gai),
+ q(2397) => q(gaj),
+ q(2398) => q(gak),
+ q(2399) => q(gal),
+ q(2400) => q(gam),
+ q(2401) => q(gan),
+ q(2402) => q(gao),
+ q(2403) => q(gap),
+ q(2404) => q(gaq),
+ q(2405) => q(gar),
+ q(2406) => q(gas),
+ q(2407) => q(gat),
+ q(2408) => q(gau),
+ q(2409) => q(gaw),
+ q(2410) => q(gax),
+ q(2411) => q(gaz),
+ q(2412) => q(gbb),
+ q(2413) => q(gbd),
+ q(2414) => q(gbe),
+ q(2415) => q(gbf),
+ q(2416) => q(gbg),
+ q(2417) => q(gbh),
+ q(2418) => q(gbi),
+ q(2419) => q(gbj),
+ q(2420) => q(gbk),
+ q(2421) => q(gbl),
+ q(2422) => q(gbm),
+ q(2423) => q(gbn),
+ q(2424) => q(gbo),
+ q(2425) => q(gbp),
+ q(2426) => q(gbq),
+ q(2427) => q(gbr),
+ q(2428) => q(gbs),
+ q(2429) => q(gbu),
+ q(2430) => q(gbv),
+ q(2431) => q(gbx),
+ q(2432) => q(gby),
+ q(2433) => q(gbz),
+ q(2434) => q(gcc),
+ q(2435) => q(gcd),
+ q(2436) => q(gce),
+ q(2437) => q(gcf),
+ q(2438) => q(gcl),
+ q(2439) => q(gcn),
+ q(2440) => q(gcr),
+ q(2441) => q(gct),
+ q(2442) => q(gda),
+ q(2443) => q(gdb),
+ q(2444) => q(gdc),
+ q(2445) => q(gdd),
+ q(2446) => q(gde),
+ q(2447) => q(gdf),
+ q(2448) => q(gdg),
+ q(2449) => q(gdh),
+ q(2450) => q(gdi),
+ q(2451) => q(gdj),
+ q(2452) => q(gdk),
+ q(2453) => q(gdl),
+ q(2454) => q(gdm),
+ q(2455) => q(gdn),
+ q(2456) => q(gdo),
+ q(2457) => q(gdq),
+ q(2458) => q(gdr),
+ q(2459) => q(gds),
+ q(2460) => q(gdu),
+ q(2461) => q(gdx),
+ q(2462) => q(gea),
+ q(2463) => q(geb),
+ q(2464) => q(gec),
+ q(2465) => q(ged),
+ q(2466) => q(geg),
+ q(2467) => q(geh),
+ q(2468) => q(gei),
+ q(2469) => q(gej),
+ q(2470) => q(gek),
+ q(2471) => q(gel),
+ q(2472) => q(geq),
+ q(2473) => q(ges),
+ q(2474) => q(gew),
+ q(2475) => q(gex),
+ q(2476) => q(gey),
+ q(2477) => q(gfk),
+ q(2478) => q(gft),
+ q(2479) => q(gfx),
+ q(2480) => q(gga),
+ q(2481) => q(ggb),
+ q(2482) => q(ggd),
+ q(2483) => q(gge),
+ q(2484) => q(ggg),
+ q(2485) => q(ggk),
+ q(2486) => q(ggl),
+ q(2487) => q(ggn),
+ q(2488) => q(ggo),
+ q(2489) => q(ggr),
+ q(2490) => q(ggt),
+ q(2491) => q(ggu),
+ q(2492) => q(ggw),
+ q(2493) => q(gha),
+ q(2494) => q(ghc),
+ q(2495) => q(ghe),
+ q(2496) => q(ghh),
+ q(2497) => q(ghk),
+ q(2498) => q(ghl),
+ q(2499) => q(ghn),
+ q(2500) => q(gho),
+ q(2501) => q(ghr),
+ q(2502) => q(ghs),
+ q(2503) => q(ght),
+ q(2504) => q(gia),
+ q(2505) => q(gib),
+ q(2506) => q(gic),
+ q(2507) => q(gid),
+ q(2508) => q(gig),
+ q(2509) => q(gim),
+ q(2510) => q(gin),
+ q(2511) => q(gip),
+ q(2512) => q(giq),
+ q(2513) => q(gir),
+ q(2514) => q(gis),
+ q(2515) => q(git),
+ q(2516) => q(giu),
+ q(2517) => q(giw),
+ q(2518) => q(gix),
+ q(2519) => q(giy),
+ q(2520) => q(giz),
+ q(2521) => q(gji),
+ q(2522) => q(gjk),
+ q(2523) => q(gjn),
+ q(2524) => q(gju),
+ q(2525) => q(gka),
+ q(2526) => q(gke),
+ q(2527) => q(gkn),
+ q(2528) => q(gko),
+ q(2529) => q(gkp),
+ q(2530) => q(glc),
+ q(2531) => q(gld),
+ q(2532) => q(glh),
+ q(2533) => q(gli),
+ q(2534) => q(glj),
+ q(2535) => q(glk),
+ q(2536) => q(glo),
+ q(2537) => q(glr),
+ q(2538) => q(glu),
+ q(2539) => q(glw),
+ q(2540) => q(gly),
+ q(2541) => q(gma),
+ q(2542) => q(gmb),
+ q(2543) => q(gmd),
+ q(2544) => q(gml),
+ q(2545) => q(gmm),
+ q(2546) => q(gmn),
+ q(2547) => q(gmu),
+ q(2548) => q(gmv),
+ q(2549) => q(gmx),
+ q(2550) => q(gmy),
+ q(2551) => q(gna),
+ q(2552) => q(gnb),
+ q(2553) => q(gnc),
+ q(2554) => q(gnd),
+ q(2555) => q(gne),
+ q(2556) => q(gng),
+ q(2557) => q(gnh),
+ q(2558) => q(gni),
+ q(2559) => q(gnk),
+ q(2560) => q(gnl),
+ q(2561) => q(gnm),
+ q(2562) => q(gnn),
+ q(2563) => q(gno),
+ q(2564) => q(gnq),
+ q(2565) => q(gnr),
+ q(2566) => q(gnt),
+ q(2567) => q(gnu),
+ q(2568) => q(gnw),
+ q(2569) => q(gnz),
+ q(2570) => q(goa),
+ q(2571) => q(gob),
+ q(2572) => q(goc),
+ q(2573) => q(god),
+ q(2574) => q(goe),
+ q(2575) => q(gof),
+ q(2576) => q(gog),
+ q(2577) => q(goi),
+ q(2578) => q(goj),
+ q(2579) => q(gok),
+ q(2580) => q(gol),
+ q(2581) => q(gom),
+ q(2582) => q(goo),
+ q(2583) => q(gop),
+ q(2584) => q(goq),
+ q(2585) => q(gos),
+ q(2586) => q(gou),
+ q(2587) => q(gow),
+ q(2588) => q(gox),
+ q(2589) => q(goy),
+ q(2590) => q(goz),
+ q(2591) => q(gpa),
+ q(2592) => q(gpe),
+ q(2593) => q(gpn),
+ q(2594) => q(gqa),
+ q(2595) => q(gqi),
+ q(2596) => q(gqn),
+ q(2597) => q(gqr),
+ q(2598) => q(gqu),
+ q(2599) => q(gra),
+ q(2600) => q(grd),
+ q(2601) => q(grg),
+ q(2602) => q(grh),
+ q(2603) => q(gri),
+ q(2604) => q(grj),
+ q(2605) => q(grm),
+ q(2606) => q(gro),
+ q(2607) => q(grq),
+ q(2608) => q(grr),
+ q(2609) => q(grs),
+ q(2610) => q(grt),
+ q(2611) => q(gru),
+ q(2612) => q(grv),
+ q(2613) => q(grw),
+ q(2614) => q(grx),
+ q(2615) => q(gry),
+ q(2616) => q(grz),
+ q(2617) => q(gse),
+ q(2618) => q(gsg),
+ q(2619) => q(gsl),
+ q(2620) => q(gsm),
+ q(2621) => q(gsn),
+ q(2622) => q(gso),
+ q(2623) => q(gsp),
+ q(2624) => q(gss),
+ q(2625) => q(gta),
+ q(2626) => q(gti),
+ q(2627) => q(gua),
+ q(2628) => q(gub),
+ q(2629) => q(guc),
+ q(2630) => q(gud),
+ q(2631) => q(gue),
+ q(2632) => q(guf),
+ q(2633) => q(gug),
+ q(2634) => q(guh),
+ q(2635) => q(gui),
+ q(2636) => q(guk),
+ q(2637) => q(gul),
+ q(2638) => q(gum),
+ q(2639) => q(gun),
+ q(2640) => q(guo),
+ q(2641) => q(gup),
+ q(2642) => q(yif),
+ q(2643) => q(gur),
+ q(2644) => q(gus),
+ q(2645) => q(gut),
+ q(2646) => q(guu),
+ q(2647) => q(guv),
+ q(2648) => q(guw),
+ q(2649) => q(gux),
+ q(2650) => q(guz),
+ q(2651) => q(gva),
+ q(2652) => q(gvc),
+ q(2653) => q(gve),
+ q(2654) => q(gvf),
+ q(2655) => q(gvj),
+ q(2656) => q(gvl),
+ q(2657) => q(gvm),
+ q(2658) => q(gvn),
+ q(2659) => q(gvo),
+ q(2660) => q(gvp),
+ q(2661) => q(gvr),
+ q(2662) => q(gvs),
+ q(2663) => q(gvy),
+ q(2664) => q(gwa),
+ q(2665) => q(gwb),
+ q(2666) => q(gwc),
+ q(2667) => q(gwd),
+ q(2668) => q(gwe),
+ q(2669) => q(gwf),
+ q(2670) => q(gwg),
+ q(2671) => q(gwj),
+ q(2672) => q(gwm),
+ q(2673) => q(gwn),
+ q(2674) => q(gwr),
+ q(2675) => q(gwt),
+ q(2676) => q(gwu),
+ q(2677) => q(gww),
+ q(2678) => q(gwx),
+ q(2679) => q(gxx),
+ q(2680) => q(gya),
+ q(2681) => q(gyb),
+ q(2682) => q(gyd),
+ q(2683) => q(gye),
+ q(2684) => q(gyf),
+ q(2685) => q(gyg),
+ q(2686) => q(gyi),
+ q(2687) => q(gyl),
+ q(2688) => q(gym),
+ q(2689) => q(gyn),
+ q(2690) => q(gyr),
+ q(2691) => q(gyy),
+ q(2692) => q(gza),
+ q(2693) => q(gzi),
+ q(2694) => q(gzn),
+ q(2695) => q(haa),
+ q(2696) => q(hab),
+ q(2697) => q(hac),
+ q(2698) => q(had),
+ q(2699) => q(hae),
+ q(2700) => q(haf),
+ q(2701) => q(hag),
+ q(2702) => q(hah),
+ q(2703) => q(haj),
+ q(2704) => q(hak),
+ q(2705) => q(hal),
+ q(2706) => q(ham),
+ q(2707) => q(han),
+ q(2708) => q(hao),
+ q(2709) => q(hap),
+ q(2710) => q(haq),
+ q(2711) => q(har),
+ q(2712) => q(has),
+ q(2713) => q(hav),
+ q(2714) => q(hax),
+ q(2715) => q(hay),
+ q(2716) => q(haz),
+ q(2717) => q(hba),
+ q(2718) => q(hbb),
+ q(2719) => q(hbn),
+ q(2720) => q(hbo),
+ q(2721) => q(hbu),
+ q(2722) => q(hca),
+ q(2723) => q(hch),
+ q(2724) => q(hdn),
+ q(2725) => q(hds),
+ q(2726) => q(hdy),
+ q(2727) => q(hea),
+ q(2728) => q(hed),
+ q(2729) => q(heg),
+ q(2730) => q(heh),
+ q(2731) => q(hei),
+ q(2732) => q(hem),
+ q(2733) => q(hgm),
+ q(2734) => q(hgw),
+ q(2735) => q(hhi),
+ q(2736) => q(hhr),
+ q(2737) => q(hhy),
+ q(2738) => q(hia),
+ q(2739) => q(hib),
+ q(2740) => q(hid),
+ q(2741) => q(hif),
+ q(2742) => q(hig),
+ q(2743) => q(hih),
+ q(2744) => q(hii),
+ q(2745) => q(hij),
+ q(2746) => q(hik),
+ q(2747) => q(hio),
+ q(2748) => q(hir),
+ q(2749) => q(hiw),
+ q(2750) => q(hix),
+ q(2751) => q(hji),
+ q(2752) => q(hka),
+ q(2753) => q(hke),
+ q(2754) => q(hkk),
+ q(2755) => q(hks),
+ q(2756) => q(hla),
+ q(2757) => q(hlb),
+ q(2758) => q(hld),
+ q(2759) => q(hle),
+ q(2760) => q(hlt),
+ q(2761) => q(hlu),
+ q(2762) => q(hma),
+ q(2763) => q(hmb),
+ q(2764) => q(hmc),
+ q(2765) => q(hmd),
+ q(2766) => q(hme),
+ q(2767) => q(hmf),
+ q(2768) => q(hmg),
+ q(2769) => q(hmh),
+ q(2770) => q(hmi),
+ q(2771) => q(hmj),
+ q(2772) => q(hmk),
+ q(2773) => q(hml),
+ q(2774) => q(hmm),
+ q(2775) => q(hmp),
+ q(2776) => q(hmq),
+ q(2777) => q(hmr),
+ q(2778) => q(hms),
+ q(2779) => q(hmt),
+ q(2780) => q(hmu),
+ q(2781) => q(hmv),
+ q(2782) => q(hmw),
+ q(2783) => q(hmy),
+ q(2784) => q(hmz),
+ q(2785) => q(hna),
+ q(2786) => q(hnd),
+ q(2787) => q(hne),
+ q(2788) => q(hnh),
+ q(2789) => q(hni),
+ q(2790) => q(hnj),
+ q(2791) => q(hnn),
+ q(2792) => q(hno),
+ q(2793) => q(hns),
+ q(2794) => q(hnu),
+ q(2795) => q(hoa),
+ q(2796) => q(hob),
+ q(2797) => q(hoc),
+ q(2798) => q(hod),
+ q(2799) => q(hoe),
+ q(2800) => q(hoh),
+ q(2801) => q(hoi),
+ q(2802) => q(hoj),
+ q(2803) => q(hol),
+ q(2804) => q(hom),
+ q(2805) => q(hoo),
+ q(2806) => q(hop),
+ q(2807) => q(hor),
+ q(2808) => q(hos),
+ q(2809) => q(hot),
+ q(2810) => q(hov),
+ q(2811) => q(how),
+ q(2812) => q(hoy),
+ q(2813) => q(hoz),
+ q(2814) => q(hpo),
+ q(2815) => q(hps),
+ q(2816) => q(hra),
+ q(2817) => q(hre),
+ q(2818) => q(hrk),
+ q(2819) => q(hrm),
+ q(2820) => q(hro),
+ q(2821) => q(hrt),
+ q(2822) => q(hru),
+ q(2823) => q(hrx),
+ q(2824) => q(hrz),
+ q(2825) => q(hsh),
+ q(2826) => q(hsl),
+ q(2827) => q(hsn),
+ q(2828) => q(hss),
+ q(2829) => q(hti),
+ q(2830) => q(hto),
+ q(2831) => q(hts),
+ q(2832) => q(htu),
+ q(2833) => q(htx),
+ q(2834) => q(hub),
+ q(2835) => q(huc),
+ q(2836) => q(hud),
+ q(2837) => q(hue),
+ q(2838) => q(huf),
+ q(2839) => q(hug),
+ q(2840) => q(huh),
+ q(2841) => q(hui),
+ q(2842) => q(huj),
+ q(2843) => q(huk),
+ q(2844) => q(hul),
+ q(2845) => q(hum),
+ q(2846) => q(huo),
+ q(2847) => q(huq),
+ q(2848) => q(hur),
+ q(2849) => q(hus),
+ q(2850) => q(hut),
+ q(2851) => q(huu),
+ q(2852) => q(huv),
+ q(2853) => q(huw),
+ q(2854) => q(hux),
+ q(2855) => q(huy),
+ q(2856) => q(huz),
+ q(2857) => q(hvc),
+ q(2858) => q(hve),
+ q(2859) => q(hvk),
+ q(2860) => q(hvn),
+ q(2861) => q(hvv),
+ q(2862) => q(hwa),
+ q(2863) => q(hwc),
+ q(2864) => q(hwo),
+ q(2865) => q(hya),
+ q(2866) => q(iai),
+ q(2867) => q(ian),
+ q(2868) => q(iap),
+ q(2869) => q(iar),
+ q(2870) => q(ibb),
+ q(2871) => q(ibd),
+ q(2872) => q(ibe),
+ q(2873) => q(ibg),
+ q(2874) => q(ibl),
+ q(2875) => q(ibm),
+ q(2876) => q(ibn),
+ q(2877) => q(ibr),
+ q(2878) => q(ibu),
+ q(2879) => q(iby),
+ q(2880) => q(ica),
+ q(2881) => q(ich),
+ q(2882) => q(icl),
+ q(2883) => q(icr),
+ q(2884) => q(ida),
+ q(2885) => q(idb),
+ q(2886) => q(idc),
+ q(2887) => q(idd),
+ q(2888) => q(ide),
+ q(2889) => q(idi),
+ q(2890) => q(idr),
+ q(2891) => q(ids),
+ q(2892) => q(idt),
+ q(2893) => q(idu),
+ q(2894) => q(ifa),
+ q(2895) => q(ifb),
+ q(2896) => q(ife),
+ q(2897) => q(iff),
+ q(2898) => q(ifk),
+ q(2899) => q(ifm),
+ q(2900) => q(ifu),
+ q(2901) => q(ify),
+ q(2902) => q(igb),
+ q(2903) => q(ige),
+ q(2904) => q(igg),
+ q(2905) => q(igl),
+ q(2906) => q(igm),
+ q(2907) => q(ign),
+ q(2908) => q(igo),
+ q(2909) => q(igs),
+ q(2910) => q(igw),
+ q(2911) => q(ihb),
+ q(2912) => q(ihi),
+ q(2913) => q(ihp),
+ q(2914) => q(ihw),
+ q(2915) => q(ijc),
+ q(2916) => q(ije),
+ q(2917) => q(ijj),
+ q(2918) => q(ijn),
+ q(2919) => q(ijs),
+ q(2920) => q(ike),
+ q(2921) => q(iki),
+ q(2922) => q(ikk),
+ q(2923) => q(ikl),
+ q(2924) => q(iko),
+ q(2925) => q(ikp),
+ q(2926) => q(ikt),
+ q(2927) => q(ikv),
+ q(2928) => q(ikw),
+ q(2929) => q(ikx),
+ q(2930) => q(ikz),
+ q(2931) => q(ila),
+ q(2932) => q(ilb),
+ q(2933) => q(ilg),
+ q(2934) => q(ili),
+ q(2935) => q(ilk),
+ q(2936) => q(ill),
+ q(2937) => q(ils),
+ q(2938) => q(ilu),
+ q(2939) => q(ilv),
+ q(2940) => q(ilw),
+ q(2941) => q(ima),
+ q(2942) => q(ime),
+ q(2943) => q(imi),
+ q(2944) => q(iml),
+ q(2945) => q(imn),
+ q(2946) => q(imo),
+ q(2947) => q(imr),
+ q(2948) => q(ims),
+ q(2949) => q(imy),
+ q(2950) => q(inb),
+ q(2951) => q(ing),
+ q(2952) => q(inj),
+ q(2953) => q(inl),
+ q(2954) => q(inm),
+ q(2955) => q(inn),
+ q(2956) => q(ino),
+ q(2957) => q(inp),
+ q(2958) => q(ins),
+ q(2959) => q(int),
+ q(2960) => q(inz),
+ q(2961) => q(ior),
+ q(2962) => q(iou),
+ q(2963) => q(iow),
+ q(2964) => q(ipi),
+ q(2965) => q(ipo),
+ q(2966) => q(iqu),
+ q(2967) => q(ire),
+ q(2968) => q(irh),
+ q(2969) => q(iri),
+ q(2970) => q(irk),
+ q(2971) => q(irn),
+ q(2972) => q(irr),
+ q(2973) => q(iru),
+ q(2974) => q(irx),
+ q(2975) => q(iry),
+ q(2976) => q(isa),
+ q(2977) => q(isc),
+ q(2978) => q(isd),
+ q(2979) => q(ise),
+ q(2980) => q(isg),
+ q(2981) => q(ish),
+ q(2982) => q(isi),
+ q(2983) => q(isk),
+ q(2984) => q(ism),
+ q(2985) => q(isn),
+ q(2986) => q(iso),
+ q(2987) => q(isr),
+ q(2988) => q(ist),
+ q(2989) => q(isu),
+ q(2990) => q(itb),
+ q(2991) => q(ite),
+ q(2992) => q(iti),
+ q(2993) => q(itk),
+ q(2994) => q(itl),
+ q(2995) => q(itm),
+ q(2996) => q(ito),
+ q(2997) => q(itr),
+ q(2998) => q(its),
+ q(2999) => q(itt),
+ q(3000) => q(itv),
+ q(3001) => q(itw),
+ q(3002) => q(itx),
+ q(3003) => q(ity),
+ q(3004) => q(itz),
+ q(3005) => q(ium),
+ q(3006) => q(ivb),
+ q(3007) => q(ivv),
+ q(3008) => q(iwk),
+ q(3009) => q(iwm),
+ q(3010) => q(iwo),
+ q(3011) => q(iws),
+ q(3012) => q(ixc),
+ q(3013) => q(ixl),
+ q(3014) => q(iya),
+ q(3015) => q(iyo),
+ q(3016) => q(iyx),
+ q(3017) => q(izh),
+ q(3018) => q(izi),
+ q(3019) => q(izr),
+ q(3020) => q(jaa),
+ q(3021) => q(jab),
+ q(3022) => q(jac),
+ q(3023) => q(jad),
+ q(3024) => q(jae),
+ q(3025) => q(jaf),
+ q(3026) => q(jah),
+ q(3027) => q(jaj),
+ q(3028) => q(jak),
+ q(3029) => q(jal),
+ q(3030) => q(jam),
+ q(3031) => q(jan),
+ q(3032) => q(jao),
+ q(3033) => q(jaq),
+ q(3034) => q(jas),
+ q(3035) => q(jat),
+ q(3036) => q(jau),
+ q(3037) => q(jax),
+ q(3038) => q(jay),
+ q(3039) => q(jaz),
+ q(3040) => q(jbe),
+ q(3041) => q(jbj),
+ q(3042) => q(jbk),
+ q(3043) => q(jbn),
+ q(3044) => q(jbr),
+ q(3045) => q(jbt),
+ q(3046) => q(jbu),
+ q(3047) => q(jbw),
+ q(3048) => q(jcs),
+ q(3049) => q(jct),
+ q(3050) => q(jda),
+ q(3051) => q(jdg),
+ q(3052) => q(jdt),
+ q(3053) => q(jeb),
+ q(3054) => q(jee),
+ q(3055) => q(jeg),
+ q(3056) => q(jeh),
+ q(3057) => q(jei),
+ q(3058) => q(jek),
+ q(3059) => q(jel),
+ q(3060) => q(jen),
+ q(3061) => q(jer),
+ q(3062) => q(jet),
+ q(3063) => q(jeu),
+ q(3064) => q(jgb),
+ q(3065) => q(jge),
+ q(3066) => q(jgk),
+ q(3067) => q(jgo),
+ q(3068) => q(jhi),
+ q(3069) => q(jhs),
+ q(3070) => q(jia),
+ q(3071) => q(jib),
+ q(3072) => q(jic),
+ q(3073) => q(jid),
+ q(3074) => q(jie),
+ q(3075) => q(jig),
+ q(3076) => q(jih),
+ q(3077) => q(jii),
+ q(3078) => q(jil),
+ q(3079) => q(jim),
+ q(3080) => q(jio),
+ q(3081) => q(jiq),
+ q(3082) => q(jit),
+ q(3083) => q(jiu),
+ q(3084) => q(jiv),
+ q(3085) => q(jiy),
+ q(3086) => q(jjr),
+ q(3087) => q(jkm),
+ q(3088) => q(jko),
+ q(3089) => q(jkp),
+ q(3090) => q(jkr),
+ q(3091) => q(jku),
+ q(3092) => q(jle),
+ q(3093) => q(jls),
+ q(3094) => q(jma),
+ q(3095) => q(jmb),
+ q(3096) => q(jmc),
+ q(3097) => q(jmd),
+ q(3098) => q(jmi),
+ q(3099) => q(jml),
+ q(3100) => q(jmn),
+ q(3101) => q(jmr),
+ q(3102) => q(jms),
+ q(3103) => q(jmw),
+ q(3104) => q(jmx),
+ q(3105) => q(jna),
+ q(3106) => q(jnd),
+ q(3107) => q(jng),
+ q(3108) => q(jni),
+ q(3109) => q(jnj),
+ q(3110) => q(jnl),
+ q(3111) => q(jns),
+ q(3112) => q(job),
+ q(3113) => q(jod),
+ q(3114) => q(jor),
+ q(3115) => q(jos),
+ q(3116) => q(jow),
+ q(3117) => q(jpa),
+ q(3118) => q(jqr),
+ q(3119) => q(jra),
+ q(3120) => q(jrr),
+ q(3121) => q(jrt),
+ q(3122) => q(jru),
+ q(3123) => q(jsl),
+ q(3124) => q(jua),
+ q(3125) => q(jub),
+ q(3126) => q(juc),
+ q(3127) => q(jud),
+ q(3128) => q(juh),
+ q(3129) => q(jui),
+ q(3130) => q(juk),
+ q(3131) => q(jul),
+ q(3132) => q(jum),
+ q(3133) => q(jun),
+ q(3134) => q(juo),
+ q(3135) => q(jup),
+ q(3136) => q(jur),
+ q(3137) => q(jus),
+ q(3138) => q(jut),
+ q(3139) => q(juu),
+ q(3140) => q(juw),
+ q(3141) => q(juy),
+ q(3142) => q(jvd),
+ q(3143) => q(jvn),
+ q(3144) => q(jwi),
+ q(3145) => q(jya),
+ q(3146) => q(jye),
+ q(3147) => q(jyy),
+ q(3148) => q(kad),
+ q(3149) => q(kae),
+ q(3150) => q(kaf),
+ q(3151) => q(kag),
+ q(3152) => q(kah),
+ q(3153) => q(kai),
+ q(3154) => q(kaj),
+ q(3155) => q(kak),
+ q(3156) => q(kao),
+ q(3157) => q(kap),
+ q(3158) => q(kaq),
+ q(3159) => q(kav),
+ q(3160) => q(kax),
+ q(3161) => q(kay),
+ q(3162) => q(kba),
+ q(3163) => q(kbb),
+ q(3164) => q(kbc),
+ q(3165) => q(kbe),
+ q(3166) => q(kbf),
+ q(3167) => q(kbg),
+ q(3168) => q(kbh),
+ q(3169) => q(kbi),
+ q(3170) => q(kbj),
+ q(3171) => q(kbk),
+ q(3172) => q(kbl),
+ q(3173) => q(kbm),
+ q(3174) => q(kbn),
+ q(3175) => q(kbo),
+ q(3176) => q(kbp),
+ q(3177) => q(kbq),
+ q(3178) => q(kbr),
+ q(3179) => q(kbs),
+ q(3180) => q(kbt),
+ q(3181) => q(kbu),
+ q(3182) => q(kbv),
+ q(3183) => q(kbw),
+ q(3184) => q(kbx),
+ q(3185) => q(kby),
+ q(3186) => q(kbz),
+ q(3187) => q(kca),
+ q(3188) => q(kcb),
+ q(3189) => q(kcc),
+ q(3190) => q(kcd),
+ q(3191) => q(kce),
+ q(3192) => q(kcf),
+ q(3193) => q(kcg),
+ q(3194) => q(kch),
+ q(3195) => q(kci),
+ q(3196) => q(kcj),
+ q(3197) => q(kck),
+ q(3198) => q(kcl),
+ q(3199) => q(kcm),
+ q(3200) => q(kcn),
+ q(3201) => q(kco),
+ q(3202) => q(kcp),
+ q(3203) => q(kcq),
+ q(3204) => q(kcr),
+ q(3205) => q(kcs),
+ q(3206) => q(kct),
+ q(3207) => q(kcu),
+ q(3208) => q(kcv),
+ q(3209) => q(kcw),
+ q(3210) => q(kcx),
+ q(3211) => q(kcy),
+ q(3212) => q(kcz),
+ q(3213) => q(kda),
+ q(3214) => q(kdc),
+ q(3215) => q(kdd),
+ q(3216) => q(kde),
+ q(3217) => q(kdf),
+ q(3218) => q(kdg),
+ q(3219) => q(kdh),
+ q(3220) => q(kdi),
+ q(3221) => q(kdj),
+ q(3222) => q(kdk),
+ q(3223) => q(kdl),
+ q(3224) => q(kdm),
+ q(3225) => q(kdn),
+ q(3226) => q(kdp),
+ q(3227) => q(kdq),
+ q(3228) => q(kdr),
+ q(3229) => q(kdt),
+ q(3230) => q(kdu),
+ q(3231) => q(kdw),
+ q(3232) => q(kdx),
+ q(3233) => q(kdy),
+ q(3234) => q(kdz),
+ q(3235) => q(kea),
+ q(3236) => q(keb),
+ q(3237) => q(kec),
+ q(3238) => q(ked),
+ q(3239) => q(kee),
+ q(3240) => q(kef),
+ q(3241) => q(keg),
+ q(3242) => q(keh),
+ q(3243) => q(kei),
+ q(3244) => q(kej),
+ q(3245) => q(kek),
+ q(3246) => q(kel),
+ q(3247) => q(kem),
+ q(3248) => q(ken),
+ q(3249) => q(keo),
+ q(3250) => q(kep),
+ q(3251) => q(keq),
+ q(3252) => q(ker),
+ q(3253) => q(kes),
+ q(3254) => q(ket),
+ q(3255) => q(keu),
+ q(3256) => q(kev),
+ q(3257) => q(kew),
+ q(3258) => q(kex),
+ q(3259) => q(key),
+ q(3260) => q(kez),
+ q(3261) => q(kfa),
+ q(3262) => q(kfb),
+ q(3263) => q(kfc),
+ q(3264) => q(kfd),
+ q(3265) => q(kfe),
+ q(3266) => q(kff),
+ q(3267) => q(kfg),
+ q(3268) => q(kfh),
+ q(3269) => q(kfi),
+ q(3270) => q(kfj),
+ q(3271) => q(kfk),
+ q(3272) => q(kfl),
+ q(3273) => q(kfm),
+ q(3274) => q(kfn),
+ q(3275) => q(kfo),
+ q(3276) => q(kfp),
+ q(3277) => q(kfq),
+ q(3278) => q(kfr),
+ q(3279) => q(kfs),
+ q(3280) => q(kft),
+ q(3281) => q(kfu),
+ q(3282) => q(kfv),
+ q(3283) => q(kfw),
+ q(3284) => q(kfx),
+ q(3285) => q(kfy),
+ q(3286) => q(kfz),
+ q(3287) => q(kga),
+ q(3288) => q(kgb),
+ q(3289) => q(kgc),
+ q(3290) => q(kgd),
+ q(3291) => q(kge),
+ q(3292) => q(kgf),
+ q(3293) => q(kgg),
+ q(3294) => q(kgi),
+ q(3295) => q(kgj),
+ q(3296) => q(kgk),
+ q(3297) => q(kgl),
+ q(3298) => q(kuq),
+ q(3299) => q(kgn),
+ q(3300) => q(kgo),
+ q(3301) => q(kgp),
+ q(3302) => q(kgq),
+ q(3303) => q(kgr),
+ q(3304) => q(kgs),
+ q(3305) => q(kgt),
+ q(3306) => q(kgu),
+ q(3307) => q(kgv),
+ q(3308) => q(kgw),
+ q(3309) => q(kgx),
+ q(3310) => q(kgy),
+ q(3311) => q(khb),
+ q(3312) => q(khc),
+ q(3313) => q(khd),
+ q(3314) => q(khe),
+ q(3315) => q(khf),
+ q(3316) => q(khg),
+ q(3317) => q(khh),
+ q(3318) => q(khj),
+ q(3319) => q(khk),
+ q(3320) => q(khl),
+ q(3321) => q(khn),
+ q(3322) => q(khp),
+ q(3323) => q(khq),
+ q(3324) => q(khr),
+ q(3325) => q(khs),
+ q(3326) => q(kht),
+ q(3327) => q(khu),
+ q(3328) => q(khv),
+ q(3329) => q(khw),
+ q(3330) => q(khx),
+ q(3331) => q(khy),
+ q(3332) => q(khz),
+ q(3333) => q(kia),
+ q(3334) => q(kib),
+ q(3335) => q(kic),
+ q(3336) => q(kid),
+ q(3337) => q(kie),
+ q(3338) => q(kif),
+ q(3339) => q(kig),
+ q(3340) => q(kih),
+ q(3341) => q(kii),
+ q(3342) => q(kij),
+ q(3343) => q(kil),
+ q(3344) => q(kim),
+ q(3345) => q(kio),
+ q(3346) => q(kip),
+ q(3347) => q(kiq),
+ q(3348) => q(kis),
+ q(3349) => q(kit),
+ q(3350) => q(kiu),
+ q(3351) => q(kiv),
+ q(3352) => q(kiw),
+ q(3353) => q(kix),
+ q(3354) => q(kiy),
+ q(3355) => q(kiz),
+ q(3356) => q(kja),
+ q(3357) => q(kjb),
+ q(3358) => q(kjc),
+ q(3359) => q(kjd),
+ q(3360) => q(kje),
+ q(3361) => q(kjf),
+ q(3362) => q(kjg),
+ q(3363) => q(kjh),
+ q(3364) => q(kji),
+ q(3365) => q(kjj),
+ q(3366) => q(kjk),
+ q(3367) => q(kjl),
+ q(3368) => q(kjm),
+ q(3369) => q(kjn),
+ q(3370) => q(kjo),
+ q(3371) => q(kjp),
+ q(3372) => q(kjq),
+ q(3373) => q(kjr),
+ q(3374) => q(kjs),
+ q(3375) => q(kjt),
+ q(3376) => q(kju),
+ q(3377) => q(kjx),
+ q(3378) => q(kjy),
+ q(3379) => q(kjz),
+ q(3380) => q(kka),
+ q(3381) => q(kkb),
+ q(3382) => q(kkc),
+ q(3383) => q(kkd),
+ q(3384) => q(kke),
+ q(3385) => q(kkf),
+ q(3386) => q(kkg),
+ q(3387) => q(kkh),
+ q(3388) => q(kki),
+ q(3389) => q(kkj),
+ q(3390) => q(kkk),
+ q(3391) => q(kkl),
+ q(3392) => q(kkm),
+ q(3393) => q(kkn),
+ q(3394) => q(kko),
+ q(3395) => q(kkp),
+ q(3396) => q(kkq),
+ q(3397) => q(kkr),
+ q(3398) => q(kks),
+ q(3399) => q(kkt),
+ q(3400) => q(kku),
+ q(3401) => q(kkv),
+ q(3402) => q(kkw),
+ q(3403) => q(kkx),
+ q(3404) => q(kky),
+ q(3405) => q(kkz),
+ q(3406) => q(kla),
+ q(3407) => q(klb),
+ q(3408) => q(klc),
+ q(3409) => q(kld),
+ q(3410) => q(kle),
+ q(3411) => q(klf),
+ q(3412) => q(klg),
+ q(3413) => q(klh),
+ q(3414) => q(kli),
+ q(3415) => q(klj),
+ q(3416) => q(klk),
+ q(3417) => q(kll),
+ q(3418) => q(klm),
+ q(3419) => q(kln),
+ q(3420) => q(klo),
+ q(3421) => q(klp),
+ q(3422) => q(klq),
+ q(3423) => q(klr),
+ q(3424) => q(kls),
+ q(3425) => q(klt),
+ q(3426) => q(klu),
+ q(3427) => q(klv),
+ q(3428) => q(klw),
+ q(3429) => q(klx),
+ q(3430) => q(kly),
+ q(3431) => q(klz),
+ q(3432) => q(kma),
+ q(3433) => q(kmc),
+ q(3434) => q(kmd),
+ q(3435) => q(kme),
+ q(3436) => q(kmf),
+ q(3437) => q(kmg),
+ q(3438) => q(kmh),
+ q(3439) => q(kmi),
+ q(3440) => q(kmj),
+ q(3441) => q(kmk),
+ q(3442) => q(kml),
+ q(3443) => q(kmm),
+ q(3444) => q(kmn),
+ q(3445) => q(kmo),
+ q(3446) => q(kmp),
+ q(3447) => q(kmq),
+ q(3448) => q(kmr),
+ q(3449) => q(kms),
+ q(3450) => q(kmt),
+ q(3451) => q(kmu),
+ q(3452) => q(kmv),
+ q(3453) => q(kmw),
+ q(3454) => q(kmx),
+ q(3455) => q(kmy),
+ q(3456) => q(kmz),
+ q(3457) => q(kna),
+ q(3458) => q(knb),
+ q(3459) => q(knc),
+ q(3460) => q(knd),
+ q(3461) => q(kne),
+ q(3462) => q(knf),
+ q(3463) => q(kng),
+ q(3464) => q(kni),
+ q(3465) => q(knj),
+ q(3466) => q(knk),
+ q(3467) => q(knl),
+ q(3468) => q(knm),
+ q(3469) => q(knn),
+ q(3470) => q(kno),
+ q(3471) => q(knp),
+ q(3472) => q(knq),
+ q(3473) => q(knr),
+ q(3474) => q(kns),
+ q(3475) => q(knt),
+ q(3476) => q(knu),
+ q(3477) => q(knv),
+ q(3478) => q(knw),
+ q(3479) => q(knx),
+ q(3480) => q(kny),
+ q(3481) => q(knz),
+ q(3482) => q(koa),
+ q(3483) => q(koc),
+ q(3484) => q(kod),
+ q(3485) => q(koe),
+ q(3486) => q(kof),
+ q(3487) => q(kog),
+ q(3488) => q(koh),
+ q(3489) => q(koi),
+ q(3490) => q(koj),
+ q(3491) => q(kol),
+ q(3492) => q(koo),
+ q(3493) => q(kop),
+ q(3494) => q(koq),
+ q(3495) => q(kot),
+ q(3496) => q(kou),
+ q(3497) => q(kov),
+ q(3498) => q(kow),
+ q(3499) => q(kox),
+ q(3500) => q(koy),
+ q(3501) => q(koz),
+ q(3502) => q(kpa),
+ q(3503) => q(kpb),
+ q(3504) => q(kpc),
+ q(3505) => q(kpd),
+ q(3506) => q(kpf),
+ q(3507) => q(kpg),
+ q(3508) => q(kph),
+ q(3509) => q(kpi),
+ q(3510) => q(kpj),
+ q(3511) => q(kpk),
+ q(3512) => q(kpl),
+ q(3513) => q(kpm),
+ q(3514) => q(kpn),
+ q(3515) => q(kpo),
+ q(3516) => q(kpq),
+ q(3517) => q(kpr),
+ q(3518) => q(kps),
+ q(3519) => q(kpt),
+ q(3520) => q(kpu),
+ q(3521) => q(kpv),
+ q(3522) => q(kpw),
+ q(3523) => q(kpx),
+ q(3524) => q(kpy),
+ q(3525) => q(kpz),
+ q(3526) => q(kqa),
+ q(3527) => q(kqb),
+ q(3528) => q(kqc),
+ q(3529) => q(kqd),
+ q(3530) => q(kqe),
+ q(3531) => q(kqf),
+ q(3532) => q(kqg),
+ q(3533) => q(kqh),
+ q(3534) => q(kqi),
+ q(3535) => q(kqj),
+ q(3536) => q(kqk),
+ q(3537) => q(kql),
+ q(3538) => q(kqm),
+ q(3539) => q(kqn),
+ q(3540) => q(kqo),
+ q(3541) => q(kqp),
+ q(3542) => q(kqq),
+ q(3543) => q(kqr),
+ q(3544) => q(kqs),
+ q(3545) => q(kqt),
+ q(3546) => q(kqu),
+ q(3547) => q(kqv),
+ q(3548) => q(kqw),
+ q(3549) => q(kqx),
+ q(3550) => q(kqy),
+ q(3551) => q(kqz),
+ q(3552) => q(kra),
+ q(3553) => q(krb),
+ q(3554) => q(krd),
+ q(3555) => q(kre),
+ q(3556) => q(krf),
+ q(3557) => q(krh),
+ q(3558) => q(kri),
+ q(3559) => q(krj),
+ q(3560) => q(krk),
+ q(3561) => q(krm),
+ q(3562) => q(krn),
+ q(3563) => q(krp),
+ q(3564) => q(krr),
+ q(3565) => q(krs),
+ q(3566) => q(krt),
+ q(3567) => q(krv),
+ q(3568) => q(krw),
+ q(3569) => q(krx),
+ q(3570) => q(kry),
+ q(3571) => q(krz),
+ q(3572) => q(ksa),
+ q(3573) => q(ksb),
+ q(3574) => q(ksc),
+ q(3575) => q(ksd),
+ q(3576) => q(kse),
+ q(3577) => q(ksf),
+ q(3578) => q(ksg),
+ q(3579) => q(ksh),
+ q(3580) => q(ksi),
+ q(3581) => q(ksj),
+ q(3582) => q(ksk),
+ q(3583) => q(ksl),
+ q(3584) => q(ksm),
+ q(3585) => q(ksn),
+ q(3586) => q(kso),
+ q(3587) => q(ksp),
+ q(3588) => q(ksq),
+ q(3589) => q(ksr),
+ q(3590) => q(kss),
+ q(3591) => q(kst),
+ q(3592) => q(ksu),
+ q(3593) => q(ksv),
+ q(3594) => q(ksw),
+ q(3595) => q(ksx),
+ q(3596) => q(ksy),
+ q(3597) => q(ksz),
+ q(3598) => q(kta),
+ q(3599) => q(ktb),
+ q(3600) => q(ktc),
+ q(3601) => q(ktd),
+ q(3602) => q(kte),
+ q(3603) => q(ktf),
+ q(3604) => q(ktg),
+ q(3605) => q(kth),
+ q(3606) => q(kti),
+ q(3607) => q(ktj),
+ q(3608) => q(ktk),
+ q(3609) => q(ktl),
+ q(3610) => q(ktm),
+ q(3611) => q(ktn),
+ q(3612) => q(kto),
+ q(3613) => q(ktp),
+ q(3614) => q(ktq),
+ q(3615) => q(ktr),
+ q(3616) => q(kts),
+ q(3617) => q(ktt),
+ q(3618) => q(ktu),
+ q(3619) => q(ktv),
+ q(3620) => q(ktw),
+ q(3621) => q(ktx),
+ q(3622) => q(kty),
+ q(3623) => q(ktz),
+ q(3624) => q(kub),
+ q(3625) => q(kuc),
+ q(3626) => q(kud),
+ q(3627) => q(kue),
+ q(3628) => q(kuf),
+ q(3629) => q(kug),
+ q(3630) => q(kuh),
+ q(3631) => q(kui),
+ q(3632) => q(kuj),
+ q(3633) => q(kuk),
+ q(3634) => q(kul),
+ q(3635) => q(kun),
+ q(3636) => q(kuo),
+ q(3637) => q(kup),
+ q(3638) => q(kus),
+ q(3639) => q(kuu),
+ q(3640) => q(kuv),
+ q(3641) => q(kuw),
+ q(3642) => q(kux),
+ q(3643) => q(kuy),
+ q(3644) => q(kuz),
+ q(3645) => q(kva),
+ q(3646) => q(kvb),
+ q(3647) => q(kvc),
+ q(3648) => q(kvd),
+ q(3649) => q(kve),
+ q(3650) => q(kvf),
+ q(3651) => q(kvg),
+ q(3652) => q(kvh),
+ q(3653) => q(kvi),
+ q(3654) => q(kvj),
+ q(3655) => q(kvk),
+ q(3656) => q(kvl),
+ q(3657) => q(kvm),
+ q(3658) => q(kvn),
+ q(3659) => q(kvo),
+ q(3660) => q(kvp),
+ q(3661) => q(kvq),
+ q(3662) => q(kvr),
+ q(3663) => q(kvs),
+ q(3664) => q(kvt),
+ q(3665) => q(kvu),
+ q(3666) => q(kvv),
+ q(3667) => q(kvw),
+ q(3668) => q(kvx),
+ q(3669) => q(kvy),
+ q(3670) => q(kvz),
+ q(3671) => q(kwa),
+ q(3672) => q(kwb),
+ q(3673) => q(kwc),
+ q(3674) => q(kwd),
+ q(3675) => q(kwe),
+ q(3676) => q(kwf),
+ q(3677) => q(kwg),
+ q(3678) => q(kwh),
+ q(3679) => q(kwi),
+ q(3680) => q(kwj),
+ q(3681) => q(kwk),
+ q(3682) => q(kwl),
+ q(3683) => q(kwm),
+ q(3684) => q(kwn),
+ q(3685) => q(kwo),
+ q(3686) => q(kwp),
+ q(3687) => q(kwq),
+ q(3688) => q(kwr),
+ q(3689) => q(kws),
+ q(3690) => q(kwt),
+ q(3691) => q(kwu),
+ q(3692) => q(kwv),
+ q(3693) => q(kww),
+ q(3694) => q(kwx),
+ q(3695) => q(kwy),
+ q(3696) => q(kwz),
+ q(3697) => q(kxa),
+ q(3698) => q(kxb),
+ q(3699) => q(kxc),
+ q(3700) => q(kxd),
+ q(3701) => q(kxe),
+ q(3702) => q(kxf),
+ q(3703) => q(kxh),
+ q(3704) => q(kxi),
+ q(3705) => q(kxj),
+ q(3706) => q(kxk),
+ q(3707) => q(kxl),
+ q(3708) => q(kxm),
+ q(3709) => q(kxn),
+ q(3710) => q(kxo),
+ q(3711) => q(kxp),
+ q(3712) => q(kxq),
+ q(3713) => q(kxr),
+ q(3714) => q(kxs),
+ q(3715) => q(kxt),
+ q(3716) => q(kxu),
+ q(3717) => q(kxv),
+ q(3718) => q(kxw),
+ q(3719) => q(kxx),
+ q(3720) => q(kxy),
+ q(3721) => q(kxz),
+ q(3722) => q(kya),
+ q(3723) => q(kyb),
+ q(3724) => q(kyc),
+ q(3725) => q(kyd),
+ q(3726) => q(kye),
+ q(3727) => q(kyf),
+ q(3728) => q(kyg),
+ q(3729) => q(kyh),
+ q(3730) => q(kyi),
+ q(3731) => q(kyj),
+ q(3732) => q(kyk),
+ q(3733) => q(kyl),
+ q(3734) => q(kym),
+ q(3735) => q(kyn),
+ q(3736) => q(kyo),
+ q(3737) => q(kyp),
+ q(3738) => q(kyq),
+ q(3739) => q(kyr),
+ q(3740) => q(kys),
+ q(3741) => q(kyt),
+ q(3742) => q(kyu),
+ q(3743) => q(kyv),
+ q(3744) => q(kyw),
+ q(3745) => q(kyx),
+ q(3746) => q(kyy),
+ q(3747) => q(kyz),
+ q(3748) => q(kza),
+ q(3749) => q(kzb),
+ q(3750) => q(kzc),
+ q(3751) => q(kzd),
+ q(3752) => q(kze),
+ q(3753) => q(kzf),
+ q(3754) => q(kzg),
+ q(3755) => q(kzi),
+ q(3756) => q(kzj),
+ q(3757) => q(kzk),
+ q(3758) => q(kzl),
+ q(3759) => q(kzm),
+ q(3760) => q(kzn),
+ q(3761) => q(kzo),
+ q(3762) => q(kzp),
+ q(3763) => q(kzq),
+ q(3764) => q(kzr),
+ q(3765) => q(kzs),
+ q(3766) => q(kzt),
+ q(3767) => q(kzu),
+ q(3768) => q(kzv),
+ q(3769) => q(kzw),
+ q(3770) => q(kzx),
+ q(3771) => q(kzy),
+ q(3772) => q(kzz),
+ q(3773) => q(laa),
+ q(3774) => q(lab),
+ q(3775) => q(lac),
+ q(3776) => q(lae),
+ q(3777) => q(laf),
+ q(3778) => q(lag),
+ q(3779) => q(lai),
+ q(3780) => q(laj),
+ q(3781) => q(lak),
+ q(3782) => q(lal),
+ q(3783) => q(lan),
+ q(3784) => q(lap),
+ q(3785) => q(laq),
+ q(3786) => q(lar),
+ q(3787) => q(las),
+ q(3788) => q(lau),
+ q(3789) => q(law),
+ q(3790) => q(lax),
+ q(3791) => q(lay),
+ q(3792) => q(laz),
+ q(3793) => q(lba),
+ q(3794) => q(lbb),
+ q(3795) => q(lbc),
+ q(3796) => q(lbe),
+ q(3797) => q(lbf),
+ q(3798) => q(lbg),
+ q(3799) => q(lbi),
+ q(3800) => q(lbj),
+ q(3801) => q(lbk),
+ q(3802) => q(lbl),
+ q(3803) => q(lbm),
+ q(3804) => q(lbn),
+ q(3805) => q(lbo),
+ q(3806) => q(lbq),
+ q(3807) => q(lbr),
+ q(3808) => q(lbs),
+ q(3809) => q(lbt),
+ q(3810) => q(lbu),
+ q(3811) => q(lbv),
+ q(3812) => q(lbw),
+ q(3813) => q(lbx),
+ q(3814) => q(lby),
+ q(3815) => q(lbz),
+ q(3816) => q(lcc),
+ q(3817) => q(lcd),
+ q(3818) => q(lce),
+ q(3819) => q(lcf),
+ q(3820) => q(lch),
+ q(3821) => q(lcl),
+ q(3822) => q(lcm),
+ q(3823) => q(lcp),
+ q(3824) => q(lcs),
+ q(3825) => q(ldb),
+ q(3826) => q(ldd),
+ q(3827) => q(ldg),
+ q(3828) => q(ldh),
+ q(3829) => q(ldi),
+ q(3830) => q(ldj),
+ q(3831) => q(ldk),
+ q(3832) => q(ldl),
+ q(3833) => q(ldm),
+ q(3834) => q(ldn),
+ q(3835) => q(ldo),
+ q(3836) => q(ldp),
+ q(3837) => q(ldq),
+ q(3838) => q(lea),
+ q(3839) => q(leb),
+ q(3840) => q(lec),
+ q(3841) => q(led),
+ q(3842) => q(lee),
+ q(3843) => q(lef),
+ q(3844) => q(leg),
+ q(3845) => q(leh),
+ q(3846) => q(lei),
+ q(3847) => q(lej),
+ q(3848) => q(lek),
+ q(3849) => q(lel),
+ q(3850) => q(lem),
+ q(3851) => q(len),
+ q(3852) => q(leo),
+ q(3853) => q(lep),
+ q(3854) => q(leq),
+ q(3855) => q(ler),
+ q(3856) => q(les),
+ q(3857) => q(let),
+ q(3858) => q(leu),
+ q(3859) => q(lev),
+ q(3860) => q(lew),
+ q(3861) => q(lex),
+ q(3862) => q(ley),
+ q(3863) => q(lfa),
+ q(3864) => q(lfn),
+ q(3865) => q(lga),
+ q(3866) => q(lgb),
+ q(3867) => q(lgg),
+ q(3868) => q(lgh),
+ q(3869) => q(lgi),
+ q(3870) => q(lgk),
+ q(3871) => q(lgl),
+ q(3872) => q(lgm),
+ q(3873) => q(lgn),
+ q(3874) => q(lgq),
+ q(3875) => q(lgr),
+ q(3876) => q(lgt),
+ q(3877) => q(lgu),
+ q(3878) => q(lgz),
+ q(3879) => q(lha),
+ q(3880) => q(lhh),
+ q(3881) => q(lhi),
+ q(3882) => q(lhl),
+ q(3883) => q(lhm),
+ q(3884) => q(lhn),
+ q(3885) => q(lhp),
+ q(3886) => q(lhs),
+ q(3887) => q(lht),
+ q(3888) => q(lhu),
+ q(3889) => q(lia),
+ q(3890) => q(lib),
+ q(3891) => q(lic),
+ q(3892) => q(lid),
+ q(3893) => q(lie),
+ q(3894) => q(lif),
+ q(3895) => q(lig),
+ q(3896) => q(lih),
+ q(3897) => q(lii),
+ q(3898) => q(lij),
+ q(3899) => q(lik),
+ q(3900) => q(lil),
+ q(3901) => q(lio),
+ q(3902) => q(lip),
+ q(3903) => q(liq),
+ q(3904) => q(lir),
+ q(3905) => q(lis),
+ q(3906) => q(liu),
+ q(3907) => q(liv),
+ q(3908) => q(liw),
+ q(3909) => q(lix),
+ q(3910) => q(liy),
+ q(3911) => q(liz),
+ q(3912) => q(lje),
+ q(3913) => q(lji),
+ q(3914) => q(ljl),
+ q(3915) => q(ljp),
+ q(3916) => q(lka),
+ q(3917) => q(lkb),
+ q(3918) => q(lkc),
+ q(3919) => q(lkd),
+ q(3920) => q(lke),
+ q(3921) => q(lkh),
+ q(3922) => q(lki),
+ q(3923) => q(lkj),
+ q(3924) => q(lkl),
+ q(3925) => q(lkn),
+ q(3926) => q(lko),
+ q(3927) => q(lkr),
+ q(3928) => q(lks),
+ q(3929) => q(lkt),
+ q(3930) => q(lky),
+ q(3931) => q(lla),
+ q(3932) => q(llb),
+ q(3933) => q(llc),
+ q(3934) => q(lld),
+ q(3935) => q(lle),
+ q(3936) => q(llf),
+ q(3937) => q(llg),
+ q(3938) => q(llh),
+ q(3939) => q(lli),
+ q(3940) => q(llj),
+ q(3941) => q(llk),
+ q(3942) => q(lll),
+ q(3943) => q(llm),
+ q(3944) => q(lln),
+ q(3945) => q(llo),
+ q(3946) => q(llp),
+ q(3947) => q(llq),
+ q(3948) => q(lls),
+ q(3949) => q(llu),
+ q(3950) => q(llx),
+ q(3951) => q(lma),
+ q(3952) => q(lmb),
+ q(3953) => q(lmc),
+ q(3954) => q(lmd),
+ q(3955) => q(lme),
+ q(3956) => q(lmf),
+ q(3957) => q(lmg),
+ q(3958) => q(lmh),
+ q(3959) => q(lmi),
+ q(3960) => q(lmj),
+ q(3961) => q(lmk),
+ q(3962) => q(lml),
+ q(3963) => q(lmm),
+ q(3964) => q(lmn),
+ q(3965) => q(lmo),
+ q(3966) => q(lmp),
+ q(3967) => q(lmq),
+ q(3968) => q(lmr),
+ q(3969) => q(lmu),
+ q(3970) => q(lmv),
+ q(3971) => q(lmw),
+ q(3972) => q(lmx),
+ q(3973) => q(lmy),
+ q(3974) => q(lmz),
+ q(3975) => q(lna),
+ q(3976) => q(lnb),
+ q(3977) => q(lnd),
+ q(3978) => q(lng),
+ q(3979) => q(lnh),
+ q(3980) => q(lni),
+ q(3981) => q(lnj),
+ q(3982) => q(lnl),
+ q(3983) => q(lnm),
+ q(3984) => q(lnn),
+ q(3985) => q(lno),
+ q(3986) => q(lns),
+ q(3987) => q(lnu),
+ q(3988) => q(lnz),
+ q(3989) => q(loa),
+ q(3990) => q(lob),
+ q(3991) => q(loc),
+ q(3992) => q(loe),
+ q(3993) => q(lof),
+ q(3994) => q(log),
+ q(3995) => q(loh),
+ q(3996) => q(loi),
+ q(3997) => q(loj),
+ q(3998) => q(lok),
+ q(3999) => q(lom),
+ q(4000) => q(lon),
+ q(4001) => q(loo),
+ q(4002) => q(lop),
+ q(4003) => q(loq),
+ q(4004) => q(lor),
+ q(4005) => q(los),
+ q(4006) => q(lot),
+ q(4007) => q(lou),
+ q(4008) => q(lov),
+ q(4009) => q(low),
+ q(4010) => q(lox),
+ q(4011) => q(loy),
+ q(4012) => q(lpa),
+ q(4013) => q(lpe),
+ q(4014) => q(lpn),
+ q(4015) => q(lpo),
+ q(4016) => q(lpx),
+ q(4017) => q(lra),
+ q(4018) => q(lrc),
+ q(4019) => q(lre),
+ q(4020) => q(lrg),
+ q(4021) => q(lri),
+ q(4022) => q(lrk),
+ q(4023) => q(lrl),
+ q(4024) => q(lrm),
+ q(4025) => q(lrn),
+ q(4026) => q(lro),
+ q(4027) => q(lrr),
+ q(4028) => q(lrt),
+ q(4029) => q(lrv),
+ q(4030) => q(lrz),
+ q(4031) => q(lsa),
+ q(4032) => q(lsd),
+ q(4033) => q(lse),
+ q(4034) => q(lsg),
+ q(4035) => q(lsh),
+ q(4036) => q(lsi),
+ q(4037) => q(lsl),
+ q(4038) => q(lsm),
+ q(4039) => q(lso),
+ q(4040) => q(lsp),
+ q(4041) => q(lsr),
+ q(4042) => q(lss),
+ q(4043) => q(lst),
+ q(4044) => q(lsy),
+ q(4045) => q(ltc),
+ q(4046) => q(ltg),
+ q(4047) => q(lti),
+ q(4048) => q(ltn),
+ q(4049) => q(lto),
+ q(4050) => q(lts),
+ q(4051) => q(ltu),
+ q(4052) => q(luc),
+ q(4053) => q(lud),
+ q(4054) => q(lue),
+ q(4055) => q(luf),
+ q(4056) => q(luj),
+ q(4057) => q(luk),
+ q(4058) => q(lul),
+ q(4059) => q(lum),
+ q(4060) => q(lup),
+ q(4061) => q(luq),
+ q(4062) => q(lur),
+ q(4063) => q(lut),
+ q(4064) => q(luu),
+ q(4065) => q(luv),
+ q(4066) => q(luw),
+ q(4067) => q(luy),
+ q(4068) => q(luz),
+ q(4069) => q(lva),
+ q(4070) => q(lvk),
+ q(4071) => q(lvs),
+ q(4072) => q(lvu),
+ q(4073) => q(lwa),
+ q(4074) => q(lwe),
+ q(4075) => q(lwg),
+ q(4076) => q(lwh),
+ q(4077) => q(lwl),
+ q(4078) => q(lwm),
+ q(4079) => q(lwo),
+ q(4080) => q(lwt),
+ q(4081) => q(lww),
+ q(4082) => q(lya),
+ q(4083) => q(lyg),
+ q(4084) => q(lyn),
+ q(4085) => q(lzh),
+ q(4086) => q(lzl),
+ q(4087) => q(lzn),
+ q(4088) => q(lzz),
+ q(4089) => q(maa),
+ q(4090) => q(mab),
+ q(4091) => q(mae),
+ q(4092) => q(maf),
+ q(4093) => q(maj),
+ q(4094) => q(mam),
+ q(4095) => q(maq),
+ q(4096) => q(mat),
+ q(4097) => q(mau),
+ q(4098) => q(mav),
+ q(4099) => q(maw),
+ q(4100) => q(max),
+ q(4101) => q(maz),
+ q(4102) => q(mba),
+ q(4103) => q(mbb),
+ q(4104) => q(mbc),
+ q(4105) => q(mbd),
+ q(4106) => q(mbe),
+ q(4107) => q(mbf),
+ q(4108) => q(mbh),
+ q(4109) => q(mbi),
+ q(4110) => q(mbj),
+ q(4111) => q(mbk),
+ q(4112) => q(mbl),
+ q(4113) => q(mbm),
+ q(4114) => q(mbn),
+ q(4115) => q(mbo),
+ q(4116) => q(mbp),
+ q(4117) => q(mbq),
+ q(4118) => q(mbr),
+ q(4119) => q(mbs),
+ q(4120) => q(mbt),
+ q(4121) => q(mbu),
+ q(4122) => q(mbv),
+ q(4123) => q(mbw),
+ q(4124) => q(mbx),
+ q(4125) => q(mby),
+ q(4126) => q(mbz),
+ q(4127) => q(mca),
+ q(4128) => q(mcb),
+ q(4129) => q(mcc),
+ q(4130) => q(mcd),
+ q(4131) => q(mce),
+ q(4132) => q(mcf),
+ q(4133) => q(mcg),
+ q(4134) => q(mch),
+ q(4135) => q(mci),
+ q(4136) => q(mcj),
+ q(4137) => q(mck),
+ q(4138) => q(mcl),
+ q(4139) => q(mcm),
+ q(4140) => q(mcn),
+ q(4141) => q(mco),
+ q(4142) => q(mcp),
+ q(4143) => q(mcq),
+ q(4144) => q(mcr),
+ q(4145) => q(mcs),
+ q(4146) => q(mct),
+ q(4147) => q(mcu),
+ q(4148) => q(mcv),
+ q(4149) => q(mcw),
+ q(4150) => q(mcx),
+ q(4151) => q(mcy),
+ q(4152) => q(mcz),
+ q(4153) => q(mda),
+ q(4154) => q(mdb),
+ q(4155) => q(mdc),
+ q(4156) => q(mdd),
+ q(4157) => q(mde),
+ q(4158) => q(mdg),
+ q(4159) => q(mdh),
+ q(4160) => q(mdi),
+ q(4161) => q(mdj),
+ q(4162) => q(mdk),
+ q(4163) => q(mdl),
+ q(4164) => q(mdm),
+ q(4165) => q(mdn),
+ q(4166) => q(mdp),
+ q(4167) => q(mdq),
+ q(4168) => q(mds),
+ q(4169) => q(mdt),
+ q(4170) => q(mdu),
+ q(4171) => q(mdv),
+ q(4172) => q(mdw),
+ q(4173) => q(mdx),
+ q(4174) => q(mdy),
+ q(4175) => q(mdz),
+ q(4176) => q(mea),
+ q(4177) => q(meb),
+ q(4178) => q(mec),
+ q(4179) => q(med),
+ q(4180) => q(mee),
+ q(4181) => q(mef),
+ q(4182) => q(meg),
+ q(4183) => q(meh),
+ q(4184) => q(mei),
+ q(4185) => q(mej),
+ q(4186) => q(mek),
+ q(4187) => q(mel),
+ q(4188) => q(mem),
+ q(4189) => q(meo),
+ q(4190) => q(mep),
+ q(4191) => q(meq),
+ q(4192) => q(mer),
+ q(4193) => q(mes),
+ q(4194) => q(met),
+ q(4195) => q(meu),
+ q(4196) => q(mev),
+ q(4197) => q(mew),
+ q(4198) => q(mey),
+ q(4199) => q(mez),
+ q(4200) => q(mfa),
+ q(4201) => q(mfb),
+ q(4202) => q(mfc),
+ q(4203) => q(mfd),
+ q(4204) => q(mfe),
+ q(4205) => q(mff),
+ q(4206) => q(mfg),
+ q(4207) => q(mfh),
+ q(4208) => q(mfi),
+ q(4209) => q(mfj),
+ q(4210) => q(mfk),
+ q(4211) => q(mfl),
+ q(4212) => q(mfm),
+ q(4213) => q(mfn),
+ q(4214) => q(mfo),
+ q(4215) => q(mfp),
+ q(4216) => q(mfq),
+ q(4217) => q(mfr),
+ q(4218) => q(mfs),
+ q(4219) => q(mft),
+ q(4220) => q(mfu),
+ q(4221) => q(mfv),
+ q(4222) => q(mfw),
+ q(4223) => q(mfx),
+ q(4224) => q(mfy),
+ q(4225) => q(mfz),
+ q(4226) => q(mgb),
+ q(4227) => q(mgc),
+ q(4228) => q(mgd),
+ q(4229) => q(mge),
+ q(4230) => q(mgf),
+ q(4231) => q(mgg),
+ q(4232) => q(mgh),
+ q(4233) => q(mgi),
+ q(4234) => q(mgj),
+ q(4235) => q(mgk),
+ q(4236) => q(mgl),
+ q(4237) => q(mgm),
+ q(4238) => q(mgn),
+ q(4239) => q(mgo),
+ q(4240) => q(mgp),
+ q(4241) => q(mgq),
+ q(4242) => q(mgr),
+ q(4243) => q(mgs),
+ q(4244) => q(mgt),
+ q(4245) => q(mgu),
+ q(4246) => q(mgv),
+ q(4247) => q(mgw),
+ q(4248) => q(mgy),
+ q(4249) => q(mgz),
+ q(4250) => q(mha),
+ q(4251) => q(mhb),
+ q(4252) => q(mhc),
+ q(4253) => q(mhd),
+ q(4254) => q(mhe),
+ q(4255) => q(mhf),
+ q(4256) => q(mhg),
+ q(4257) => q(mhh),
+ q(4258) => q(mhi),
+ q(4259) => q(mhj),
+ q(4260) => q(mhk),
+ q(4261) => q(mhl),
+ q(4262) => q(mhm),
+ q(4263) => q(mhn),
+ q(4264) => q(mho),
+ q(4265) => q(mhp),
+ q(4266) => q(mhq),
+ q(4267) => q(mhr),
+ q(4268) => q(mhs),
+ q(4269) => q(mht),
+ q(4270) => q(mhu),
+ q(4271) => q(mhw),
+ q(4272) => q(mhx),
+ q(4273) => q(mhy),
+ q(4274) => q(mhz),
+ q(4275) => q(mia),
+ q(4276) => q(mib),
+ q(4277) => q(mid),
+ q(4278) => q(mie),
+ q(4279) => q(mif),
+ q(4280) => q(mig),
+ q(4281) => q(mih),
+ q(4282) => q(mii),
+ q(4283) => q(mij),
+ q(4284) => q(mik),
+ q(4285) => q(mil),
+ q(4286) => q(mim),
+ q(4287) => q(mio),
+ q(4288) => q(mip),
+ q(4289) => q(miq),
+ q(4290) => q(mir),
+ q(4291) => q(mit),
+ q(4292) => q(miu),
+ q(4293) => q(miw),
+ q(4294) => q(mix),
+ q(4295) => q(miy),
+ q(4296) => q(miz),
+ q(4297) => q(mjc),
+ q(4298) => q(mjd),
+ q(4299) => q(mje),
+ q(4300) => q(mjg),
+ q(4301) => q(mjh),
+ q(4302) => q(mji),
+ q(4303) => q(mjj),
+ q(4304) => q(mjk),
+ q(4305) => q(mjl),
+ q(4306) => q(mjm),
+ q(4307) => q(mjn),
+ q(4308) => q(mjo),
+ q(4309) => q(mjp),
+ q(4310) => q(mjq),
+ q(4311) => q(mjr),
+ q(4312) => q(mjs),
+ q(4313) => q(mjt),
+ q(4314) => q(mju),
+ q(4315) => q(mjv),
+ q(4316) => q(mjw),
+ q(4317) => q(mjx),
+ q(4318) => q(mjy),
+ q(4319) => q(mjz),
+ q(4320) => q(mka),
+ q(4321) => q(mkb),
+ q(4322) => q(mkc),
+ q(4323) => q(mke),
+ q(4324) => q(mkf),
+ q(4325) => q(mkg),
+ q(4326) => q(mki),
+ q(4327) => q(mkj),
+ q(4328) => q(mkk),
+ q(4329) => q(mkl),
+ q(4330) => q(mkm),
+ q(4331) => q(mkn),
+ q(4332) => q(mko),
+ q(4333) => q(mkp),
+ q(4334) => q(mkq),
+ q(4335) => q(mkr),
+ q(4336) => q(mks),
+ q(4337) => q(mkt),
+ q(4338) => q(mku),
+ q(4339) => q(mkv),
+ q(4340) => q(mkw),
+ q(4341) => q(mkx),
+ q(4342) => q(mky),
+ q(4343) => q(mkz),
+ q(4344) => q(mla),
+ q(4345) => q(mlb),
+ q(4346) => q(mlc),
+ q(4347) => q(mld),
+ q(4348) => q(mle),
+ q(4349) => q(mlf),
+ q(4350) => q(mlh),
+ q(4351) => q(mli),
+ q(4352) => q(mlj),
+ q(4353) => q(mlk),
+ q(4354) => q(mll),
+ q(4355) => q(mlm),
+ q(4356) => q(mln),
+ q(4357) => q(mlo),
+ q(4358) => q(mlp),
+ q(4359) => q(mlq),
+ q(4360) => q(mlr),
+ q(4361) => q(mls),
+ q(4362) => q(mlu),
+ q(4363) => q(mlv),
+ q(4364) => q(mlw),
+ q(4365) => q(mlx),
+ q(4366) => q(mlz),
+ q(4367) => q(mma),
+ q(4368) => q(mmb),
+ q(4369) => q(mmc),
+ q(4370) => q(mmd),
+ q(4371) => q(mme),
+ q(4372) => q(mmf),
+ q(4373) => q(mmg),
+ q(4374) => q(mmh),
+ q(4375) => q(mmi),
+ q(4376) => q(mmj),
+ q(4377) => q(mmk),
+ q(4378) => q(mml),
+ q(4379) => q(mmm),
+ q(4380) => q(mmn),
+ q(4381) => q(mmo),
+ q(4382) => q(mmp),
+ q(4383) => q(mmq),
+ q(4384) => q(mmr),
+ q(4385) => q(mmt),
+ q(4386) => q(mmu),
+ q(4387) => q(mmv),
+ q(4388) => q(mmw),
+ q(4389) => q(mmx),
+ q(4390) => q(mmy),
+ q(4391) => q(mmz),
+ q(4392) => q(mna),
+ q(4393) => q(mnb),
+ q(4394) => q(mnd),
+ q(4395) => q(mne),
+ q(4396) => q(mnf),
+ q(4397) => q(mng),
+ q(4398) => q(mnh),
+ q(4399) => q(mnj),
+ q(4400) => q(mnk),
+ q(4401) => q(mnl),
+ q(4402) => q(mnm),
+ q(4403) => q(mnn),
+ q(4404) => q(mnp),
+ q(4405) => q(mnq),
+ q(4406) => q(mnr),
+ q(4407) => q(mns),
+ q(4408) => q(mnt),
+ q(4409) => q(mnu),
+ q(4410) => q(mnv),
+ q(4411) => q(mnw),
+ q(4412) => q(mnx),
+ q(4413) => q(mny),
+ q(4414) => q(mnz),
+ q(4415) => q(moa),
+ q(4416) => q(moc),
+ q(4417) => q(mod),
+ q(4418) => q(moe),
+ q(4419) => q(mog),
+ q(4420) => q(moi),
+ q(4421) => q(moj),
+ q(4422) => q(mok),
+ q(4423) => q(mom),
+ q(4424) => q(moo),
+ q(4425) => q(mop),
+ q(4426) => q(moq),
+ q(4427) => q(mor),
+ q(4428) => q(mou),
+ q(4429) => q(mov),
+ q(4430) => q(mow),
+ q(4431) => q(mox),
+ q(4432) => q(moy),
+ q(4433) => q(moz),
+ q(4434) => q(mpa),
+ q(4435) => q(mpb),
+ q(4436) => q(mpc),
+ q(4437) => q(mpd),
+ q(4438) => q(mpe),
+ q(4439) => q(mpg),
+ q(4440) => q(mph),
+ q(4441) => q(mpi),
+ q(4442) => q(mpj),
+ q(4443) => q(mpk),
+ q(4444) => q(mpl),
+ q(4445) => q(mpm),
+ q(4446) => q(mpn),
+ q(4447) => q(mpo),
+ q(4448) => q(mpp),
+ q(4449) => q(mpq),
+ q(4450) => q(mpr),
+ q(4451) => q(mps),
+ q(4452) => q(mpt),
+ q(4453) => q(mpu),
+ q(4454) => q(mpv),
+ q(4455) => q(mpw),
+ q(4456) => q(mpx),
+ q(4457) => q(mpy),
+ q(4458) => q(mpz),
+ q(4459) => q(mqa),
+ q(4460) => q(mqb),
+ q(4461) => q(mqc),
+ q(4462) => q(mqe),
+ q(4463) => q(mqf),
+ q(4464) => q(mqg),
+ q(4465) => q(mqh),
+ q(4466) => q(mqi),
+ q(4467) => q(mqj),
+ q(4468) => q(mqk),
+ q(4469) => q(mql),
+ q(4470) => q(mqm),
+ q(4471) => q(mqn),
+ q(4472) => q(mqo),
+ q(4473) => q(mqp),
+ q(4474) => q(mqq),
+ q(4475) => q(mqr),
+ q(4476) => q(mqs),
+ q(4477) => q(mqt),
+ q(4478) => q(mqu),
+ q(4479) => q(mqv),
+ q(4480) => q(mqw),
+ q(4481) => q(mqx),
+ q(4482) => q(mqy),
+ q(4483) => q(mqz),
+ q(4484) => q(mra),
+ q(4485) => q(mrb),
+ q(4486) => q(mrc),
+ q(4487) => q(mrd),
+ q(4488) => q(mre),
+ q(4489) => q(mrf),
+ q(4490) => q(mrg),
+ q(4491) => q(mrh),
+ q(4492) => q(mrj),
+ q(4493) => q(mrk),
+ q(4494) => q(mrl),
+ q(4495) => q(mrm),
+ q(4496) => q(mrn),
+ q(4497) => q(mro),
+ q(4498) => q(mrp),
+ q(4499) => q(mrq),
+ q(4500) => q(mrr),
+ q(4501) => q(mrs),
+ q(4502) => q(mrt),
+ q(4503) => q(mru),
+ q(4504) => q(mrv),
+ q(4505) => q(mrw),
+ q(4506) => q(mrx),
+ q(4507) => q(mry),
+ q(4508) => q(mrz),
+ q(4509) => q(msb),
+ q(4510) => q(msc),
+ q(4511) => q(msd),
+ q(4512) => q(mse),
+ q(4513) => q(msf),
+ q(4514) => q(msg),
+ q(4515) => q(msh),
+ q(4516) => q(msi),
+ q(4517) => q(msj),
+ q(4518) => q(msk),
+ q(4519) => q(msl),
+ q(4520) => q(msm),
+ q(4521) => q(msn),
+ q(4522) => q(mso),
+ q(4523) => q(msp),
+ q(4524) => q(msq),
+ q(4525) => q(msr),
+ q(4526) => q(mss),
+ q(4527) => q(msu),
+ q(4528) => q(msv),
+ q(4529) => q(msw),
+ q(4530) => q(msx),
+ q(4531) => q(msy),
+ q(4532) => q(msz),
+ q(4533) => q(mta),
+ q(4534) => q(mtb),
+ q(4535) => q(mtc),
+ q(4536) => q(mtd),
+ q(4537) => q(mte),
+ q(4538) => q(mtf),
+ q(4539) => q(mtg),
+ q(4540) => q(mth),
+ q(4541) => q(mti),
+ q(4542) => q(mtj),
+ q(4543) => q(mtk),
+ q(4544) => q(mtl),
+ q(4545) => q(mtm),
+ q(4546) => q(mtn),
+ q(4547) => q(mto),
+ q(4548) => q(mtp),
+ q(4549) => q(mtq),
+ q(4550) => q(mtr),
+ q(4551) => q(mts),
+ q(4552) => q(mtt),
+ q(4553) => q(mtu),
+ q(4554) => q(mtv),
+ q(4555) => q(mtw),
+ q(4556) => q(mtx),
+ q(4557) => q(mty),
+ q(4558) => q(mua),
+ q(4559) => q(mub),
+ q(4560) => q(muc),
+ q(4561) => q(mud),
+ q(4562) => q(mue),
+ q(4563) => q(mug),
+ q(4564) => q(muh),
+ q(4565) => q(mui),
+ q(4566) => q(muj),
+ q(4567) => q(muk),
+ q(4568) => q(mum),
+ q(4569) => q(muo),
+ q(4570) => q(mup),
+ q(4571) => q(muq),
+ q(4572) => q(mur),
+ q(4573) => q(mut),
+ q(4574) => q(muu),
+ q(4575) => q(muv),
+ q(4576) => q(mux),
+ q(4577) => q(muy),
+ q(4578) => q(muz),
+ q(4579) => q(mva),
+ q(4580) => q(mvb),
+ q(4581) => q(mvd),
+ q(4582) => q(mve),
+ q(4583) => q(mvf),
+ q(4584) => q(mvg),
+ q(4585) => q(mvh),
+ q(4586) => q(mvi),
+ q(4587) => q(mvk),
+ q(4588) => q(mvl),
+ q(4589) => q(mvm),
+ q(4590) => q(mvn),
+ q(4591) => q(mvo),
+ q(4592) => q(mvp),
+ q(4593) => q(mvq),
+ q(4594) => q(mvr),
+ q(4595) => q(mvs),
+ q(4596) => q(mvt),
+ q(4597) => q(mvu),
+ q(4598) => q(mvv),
+ q(4599) => q(mvw),
+ q(4600) => q(mvx),
+ q(4601) => q(mvy),
+ q(4602) => q(mvz),
+ q(4603) => q(mwa),
+ q(4604) => q(mwb),
+ q(4605) => q(mwc),
+ q(4606) => q(mwd),
+ q(4607) => q(mwe),
+ q(4608) => q(mwf),
+ q(4609) => q(mwg),
+ q(4610) => q(mwh),
+ q(4611) => q(mwi),
+ q(4612) => q(mwj),
+ q(4613) => q(mwk),
+ q(4614) => q(mwm),
+ q(4615) => q(mwn),
+ q(4616) => q(mwo),
+ q(4617) => q(mwp),
+ q(4618) => q(mwq),
+ q(4619) => q(mws),
+ q(4620) => q(mwt),
+ q(4621) => q(mwu),
+ q(4622) => q(mwv),
+ q(4623) => q(mww),
+ q(4624) => q(mwx),
+ q(4625) => q(mwy),
+ q(4626) => q(mwz),
+ q(4627) => q(mxa),
+ q(4628) => q(mxb),
+ q(4629) => q(mxc),
+ q(4630) => q(mxd),
+ q(4631) => q(mxe),
+ q(4632) => q(mxf),
+ q(4633) => q(mxg),
+ q(4634) => q(mxh),
+ q(4635) => q(mxi),
+ q(4636) => q(mxj),
+ q(4637) => q(mxk),
+ q(4638) => q(mxl),
+ q(4639) => q(mxm),
+ q(4640) => q(mxn),
+ q(4641) => q(mxo),
+ q(4642) => q(mxp),
+ q(4643) => q(mxq),
+ q(4644) => q(mxr),
+ q(4645) => q(mxs),
+ q(4646) => q(mxt),
+ q(4647) => q(mxu),
+ q(4648) => q(mxv),
+ q(4649) => q(mxw),
+ q(4650) => q(mxx),
+ q(4651) => q(mxy),
+ q(4652) => q(mxz),
+ q(4653) => q(myb),
+ q(4654) => q(myc),
+ q(4655) => q(myd),
+ q(4656) => q(mye),
+ q(4657) => q(myf),
+ q(4658) => q(myg),
+ q(4659) => q(myh),
+ q(4660) => q(myi),
+ q(4661) => q(myj),
+ q(4662) => q(myk),
+ q(4663) => q(myl),
+ q(4664) => q(mym),
+ q(4665) => q(myo),
+ q(4666) => q(myp),
+ q(4667) => q(myq),
+ q(4668) => q(myr),
+ q(4669) => q(mys),
+ q(4670) => q(myu),
+ q(4671) => q(myw),
+ q(4672) => q(myx),
+ q(4673) => q(myy),
+ q(4674) => q(myz),
+ q(4675) => q(mza),
+ q(4676) => q(mzb),
+ q(4677) => q(mzc),
+ q(4678) => q(mzd),
+ q(4679) => q(mze),
+ q(4680) => q(mzg),
+ q(4681) => q(mzh),
+ q(4682) => q(mzi),
+ q(4683) => q(mzj),
+ q(4684) => q(mzk),
+ q(4685) => q(mzl),
+ q(4686) => q(mzm),
+ q(4687) => q(mzn),
+ q(4688) => q(mzo),
+ q(4689) => q(mzp),
+ q(4690) => q(mzq),
+ q(4691) => q(mzr),
+ q(4692) => q(mzs),
+ q(4693) => q(mzt),
+ q(4694) => q(mzu),
+ q(4695) => q(mzv),
+ q(4696) => q(mzw),
+ q(4697) => q(mzx),
+ q(4698) => q(mzy),
+ q(4699) => q(mzz),
+ q(4700) => q(naa),
+ q(4701) => q(nab),
+ q(4702) => q(nac),
+ q(4703) => q(nad),
+ q(4704) => q(nae),
+ q(4705) => q(naf),
+ q(4706) => q(nag),
+ q(4707) => q(naj),
+ q(4708) => q(nak),
+ q(4709) => q(nal),
+ q(4710) => q(nam),
+ q(4711) => q(nan),
+ q(4712) => q(nao),
+ q(4713) => q(naq),
+ q(4714) => q(nar),
+ q(4715) => q(nas),
+ q(4716) => q(nat),
+ q(4717) => q(naw),
+ q(4718) => q(nax),
+ q(4719) => q(nay),
+ q(4720) => q(naz),
+ q(4721) => q(nba),
+ q(4722) => q(nbb),
+ q(4723) => q(nbc),
+ q(4724) => q(nbd),
+ q(4725) => q(nbe),
+ q(4726) => q(nbg),
+ q(4727) => q(nbh),
+ q(4728) => q(nbi),
+ q(4729) => q(nbj),
+ q(4730) => q(nbk),
+ q(4731) => q(nbm),
+ q(4732) => q(nbn),
+ q(4733) => q(nbo),
+ q(4734) => q(nbp),
+ q(4735) => q(nbq),
+ q(4736) => q(nbr),
+ q(4737) => q(nbs),
+ q(4738) => q(nbt),
+ q(4739) => q(nbu),
+ q(4740) => q(nbv),
+ q(4741) => q(nbw),
+ q(4742) => q(nbx),
+ q(4743) => q(nby),
+ q(4744) => q(nca),
+ q(4745) => q(ncb),
+ q(4746) => q(ncc),
+ q(4747) => q(ncd),
+ q(4748) => q(nce),
+ q(4749) => q(ncf),
+ q(4750) => q(ncg),
+ q(4751) => q(nch),
+ q(4752) => q(nci),
+ q(4753) => q(ncj),
+ q(4754) => q(nck),
+ q(4755) => q(ncl),
+ q(4756) => q(ncm),
+ q(4757) => q(ncn),
+ q(4758) => q(nco),
+ q(4759) => q(ncp),
+ q(4760) => q(ncr),
+ q(4761) => q(ncs),
+ q(4762) => q(nct),
+ q(4763) => q(ncu),
+ q(4764) => q(ncx),
+ q(4765) => q(ncz),
+ q(4766) => q(nda),
+ q(4767) => q(ndb),
+ q(4768) => q(ndc),
+ q(4769) => q(ndd),
+ q(4770) => q(ndf),
+ q(4771) => q(ndg),
+ q(4772) => q(ndh),
+ q(4773) => q(ndi),
+ q(4774) => q(ndj),
+ q(4775) => q(ndk),
+ q(4776) => q(ndl),
+ q(4777) => q(ndm),
+ q(4778) => q(ndn),
+ q(4779) => q(ndp),
+ q(4780) => q(ndq),
+ q(4781) => q(ndr),
+ q(4782) => q(ndt),
+ q(4783) => q(ndu),
+ q(4784) => q(ndv),
+ q(4785) => q(ndw),
+ q(4786) => q(ndx),
+ q(4787) => q(ndy),
+ q(4788) => q(ndz),
+ q(4789) => q(nea),
+ q(4790) => q(neb),
+ q(4791) => q(nec),
+ q(4792) => q(ned),
+ q(4793) => q(nee),
+ q(4794) => q(nef),
+ q(4795) => q(neg),
+ q(4796) => q(neh),
+ q(4797) => q(nei),
+ q(4798) => q(nej),
+ q(4799) => q(nek),
+ q(4800) => q(nem),
+ q(4801) => q(nen),
+ q(4802) => q(neo),
+ q(4803) => q(neq),
+ q(4804) => q(ner),
+ q(4805) => q(nes),
+ q(4806) => q(net),
+ q(4807) => q(neu),
+ q(4808) => q(nev),
+ q(4809) => q(nex),
+ q(4810) => q(ney),
+ q(4811) => q(nez),
+ q(4812) => q(nfa),
+ q(4813) => q(nfd),
+ q(4814) => q(nfl),
+ q(4815) => q(nfr),
+ q(4816) => q(nfu),
+ q(4817) => q(nga),
+ q(4818) => q(ngb),
+ q(4819) => q(ngc),
+ q(4820) => q(ngd),
+ q(4821) => q(nge),
+ q(4822) => q(ngg),
+ q(4823) => q(ngh),
+ q(4824) => q(ngi),
+ q(4825) => q(ngj),
+ q(4826) => q(ngk),
+ q(4827) => q(ngl),
+ q(4828) => q(ngm),
+ q(4829) => q(ngn),
+ q(4830) => q(ngo),
+ q(4831) => q(ngp),
+ q(4832) => q(ngq),
+ q(4833) => q(ngr),
+ q(4834) => q(ngs),
+ q(4835) => q(ngt),
+ q(4836) => q(ngu),
+ q(4837) => q(ngv),
+ q(4838) => q(ngw),
+ q(4839) => q(ngx),
+ q(4840) => q(ngy),
+ q(4841) => q(ngz),
+ q(4842) => q(nha),
+ q(4843) => q(nhb),
+ q(4844) => q(nhc),
+ q(4845) => q(nhd),
+ q(4846) => q(nhe),
+ q(4847) => q(nhf),
+ q(4848) => q(nhg),
+ q(4849) => q(nhh),
+ q(4850) => q(nhi),
+ q(4851) => q(nhk),
+ q(4852) => q(nhm),
+ q(4853) => q(nhn),
+ q(4854) => q(nho),
+ q(4855) => q(nhp),
+ q(4856) => q(nhq),
+ q(4857) => q(nhr),
+ q(4858) => q(nht),
+ q(4859) => q(nhu),
+ q(4860) => q(nhv),
+ q(4861) => q(nhw),
+ q(4862) => q(nhx),
+ q(4863) => q(nhy),
+ q(4864) => q(nhz),
+ q(4865) => q(nib),
+ q(4866) => q(nid),
+ q(4867) => q(nie),
+ q(4868) => q(nif),
+ q(4869) => q(nig),
+ q(4870) => q(nih),
+ q(4871) => q(nii),
+ q(4872) => q(nij),
+ q(4873) => q(nik),
+ q(4874) => q(nil),
+ q(4875) => q(nim),
+ q(4876) => q(nin),
+ q(4877) => q(nio),
+ q(4878) => q(niq),
+ q(4879) => q(nir),
+ q(4880) => q(nis),
+ q(4881) => q(nit),
+ q(4882) => q(niv),
+ q(4883) => q(niw),
+ q(4884) => q(nix),
+ q(4885) => q(niy),
+ q(4886) => q(niz),
+ q(4887) => q(nja),
+ q(4888) => q(njb),
+ q(4889) => q(njd),
+ q(4890) => q(njh),
+ q(4891) => q(nji),
+ q(4892) => q(njj),
+ q(4893) => q(njl),
+ q(4894) => q(njm),
+ q(4895) => q(njn),
+ q(4896) => q(njo),
+ q(4897) => q(njr),
+ q(4898) => q(njs),
+ q(4899) => q(njt),
+ q(4900) => q(nju),
+ q(4901) => q(njx),
+ q(4902) => q(njy),
+ q(4903) => q(njz),
+ q(4904) => q(nka),
+ q(4905) => q(nkb),
+ q(4906) => q(nkc),
+ q(4907) => q(nkd),
+ q(4908) => q(nke),
+ q(4909) => q(nkf),
+ q(4910) => q(nkg),
+ q(4911) => q(nkh),
+ q(4912) => q(nki),
+ q(4913) => q(nkj),
+ q(4914) => q(nkk),
+ q(4915) => q(nkm),
+ q(4916) => q(nkn),
+ q(4917) => q(nko),
+ q(4918) => q(nkp),
+ q(4919) => q(nkq),
+ q(4920) => q(nkr),
+ q(4921) => q(nks),
+ q(4922) => q(nkt),
+ q(4923) => q(nku),
+ q(4924) => q(nkv),
+ q(4925) => q(nkw),
+ q(4926) => q(nkx),
+ q(4927) => q(nkz),
+ q(4928) => q(nla),
+ q(4929) => q(nlc),
+ q(4930) => q(nle),
+ q(4931) => q(nlg),
+ q(4932) => q(nli),
+ q(4933) => q(nlj),
+ q(4934) => q(nlk),
+ q(4935) => q(nll),
+ q(4936) => q(nlo),
+ q(4937) => q(nlr),
+ q(4938) => q(nlu),
+ q(4939) => q(nlv),
+ q(4940) => q(nlx),
+ q(4941) => q(nly),
+ q(4942) => q(nlz),
+ q(4943) => q(nma),
+ q(4944) => q(nmb),
+ q(4945) => q(nmc),
+ q(4946) => q(nmd),
+ q(4947) => q(nme),
+ q(4948) => q(nmf),
+ q(4949) => q(nmg),
+ q(4950) => q(nmh),
+ q(4951) => q(nmi),
+ q(4952) => q(nmj),
+ q(4953) => q(nmk),
+ q(4954) => q(nml),
+ q(4955) => q(nmm),
+ q(4956) => q(nmn),
+ q(4957) => q(nmo),
+ q(4958) => q(nmp),
+ q(4959) => q(nmq),
+ q(4960) => q(nmr),
+ q(4961) => q(nms),
+ q(4962) => q(nmt),
+ q(4963) => q(nmu),
+ q(4964) => q(nmv),
+ q(4965) => q(nmw),
+ q(4966) => q(nmx),
+ q(4967) => q(nmy),
+ q(4968) => q(nmz),
+ q(4969) => q(nna),
+ q(4970) => q(nnb),
+ q(4971) => q(nnc),
+ q(4972) => q(nnd),
+ q(4973) => q(nne),
+ q(4974) => q(nnf),
+ q(4975) => q(nng),
+ q(4976) => q(nnh),
+ q(4977) => q(nni),
+ q(4978) => q(nnj),
+ q(4979) => q(nnk),
+ q(4980) => q(nnl),
+ q(4981) => q(nnm),
+ q(4982) => q(nnn),
+ q(4983) => q(nnp),
+ q(4984) => q(nnq),
+ q(4985) => q(nnr),
+ q(4986) => q(nns),
+ q(4987) => q(nnt),
+ q(4988) => q(nnu),
+ q(4989) => q(nnv),
+ q(4990) => q(nnw),
+ q(4991) => q(nnx),
+ q(4992) => q(nny),
+ q(4993) => q(nnz),
+ q(4994) => q(noa),
+ q(4995) => q(noc),
+ q(4996) => q(nod),
+ q(4997) => q(noe),
+ q(4998) => q(nof),
+ q(4999) => q(noh),
+ q(5000) => q(noi),
+ q(5001) => q(noj),
+ q(5002) => q(nok),
+ q(5003) => q(nom),
+ q(5004) => q(nop),
+ q(5005) => q(noq),
+ q(5006) => q(nos),
+ q(5007) => q(not),
+ q(5008) => q(nou),
+ q(5009) => q(nov),
+ q(5010) => q(now),
+ q(5011) => q(noy),
+ q(5012) => q(noz),
+ q(5013) => q(npa),
+ q(5014) => q(npb),
+ q(5015) => q(npg),
+ q(5016) => q(nph),
+ q(5017) => q(npi),
+ q(5018) => q(npl),
+ q(5019) => q(npn),
+ q(5020) => q(npo),
+ q(5021) => q(nps),
+ q(5022) => q(npu),
+ q(5023) => q(npy),
+ q(5024) => q(nqg),
+ q(5025) => q(nqk),
+ q(5026) => q(nqm),
+ q(5027) => q(nqn),
+ q(5028) => q(nqy),
+ q(5029) => q(nra),
+ q(5030) => q(nrb),
+ q(5031) => q(nrc),
+ q(5032) => q(nre),
+ q(5033) => q(nrg),
+ q(5034) => q(nri),
+ q(5035) => q(nrl),
+ q(5036) => q(nrm),
+ q(5037) => q(nrn),
+ q(5038) => q(nrp),
+ q(5039) => q(nrr),
+ q(5040) => q(nrt),
+ q(5041) => q(nru),
+ q(5042) => q(nrx),
+ q(5043) => q(nrz),
+ q(5044) => q(nsa),
+ q(5045) => q(nsc),
+ q(5046) => q(nsd),
+ q(5047) => q(nse),
+ q(5048) => q(nsf),
+ q(5049) => q(nsg),
+ q(5050) => q(nsh),
+ q(5051) => q(nsi),
+ q(5052) => q(nsk),
+ q(5053) => q(nsl),
+ q(5054) => q(nsm),
+ q(5055) => q(nsn),
+ q(5056) => q(nsp),
+ q(5057) => q(nsq),
+ q(5058) => q(nsr),
+ q(5059) => q(nss),
+ q(5060) => q(nst),
+ q(5061) => q(nsu),
+ q(5062) => q(nsv),
+ q(5063) => q(nsw),
+ q(5064) => q(nsx),
+ q(5065) => q(nsy),
+ q(5066) => q(nsz),
+ q(5067) => q(nte),
+ q(5068) => q(nti),
+ q(5069) => q(ntj),
+ q(5070) => q(ntk),
+ q(5071) => q(ntm),
+ q(5072) => q(nto),
+ q(5073) => q(ntp),
+ q(5074) => q(ntr),
+ q(5075) => q(nts),
+ q(5076) => q(ntu),
+ q(5077) => q(ntw),
+ q(5078) => q(ntx),
+ q(5079) => q(nty),
+ q(5080) => q(ntz),
+ q(5081) => q(nua),
+ q(5082) => q(nuc),
+ q(5083) => q(nud),
+ q(5084) => q(nue),
+ q(5085) => q(nuf),
+ q(5086) => q(nug),
+ q(5087) => q(nuh),
+ q(5088) => q(nui),
+ q(5089) => q(nuj),
+ q(5090) => q(nuk),
+ q(5091) => q(nul),
+ q(5092) => q(num),
+ q(5093) => q(nun),
+ q(5094) => q(nuo),
+ q(5095) => q(nup),
+ q(5096) => q(nuq),
+ q(5097) => q(nur),
+ q(5098) => q(nus),
+ q(5099) => q(nut),
+ q(5100) => q(nuu),
+ q(5101) => q(nuv),
+ q(5102) => q(nuw),
+ q(5103) => q(nux),
+ q(5104) => q(nuy),
+ q(5105) => q(nuz),
+ q(5106) => q(nvh),
+ q(5107) => q(nvm),
+ q(5108) => q(nvo),
+ q(5109) => q(nwa),
+ q(5110) => q(nwb),
+ q(5111) => q(nwe),
+ q(5112) => q(nwg),
+ q(5113) => q(nwi),
+ q(5114) => q(nwm),
+ q(5115) => q(nwo),
+ q(5116) => q(nwr),
+ q(5117) => q(nwx),
+ q(5118) => q(nwy),
+ q(5119) => q(nxa),
+ q(5120) => q(nxd),
+ q(5121) => q(nxe),
+ q(5122) => q(nxg),
+ q(5123) => q(nxi),
+ q(5124) => q(nxk),
+ q(5125) => q(nxl),
+ q(5126) => q(nxm),
+ q(5127) => q(nxn),
+ q(5128) => q(nxq),
+ q(5129) => q(nxr),
+ q(5130) => q(nxu),
+ q(5131) => q(nxx),
+ q(5132) => q(nyb),
+ q(5133) => q(nyc),
+ q(5134) => q(nyd),
+ q(5135) => q(nye),
+ q(5136) => q(nyf),
+ q(5137) => q(nyg),
+ q(5138) => q(nyh),
+ q(5139) => q(nyi),
+ q(5140) => q(nyj),
+ q(5141) => q(nyk),
+ q(5142) => q(nyl),
+ q(5143) => q(nyp),
+ q(5144) => q(nyq),
+ q(5145) => q(nyr),
+ q(5146) => q(nys),
+ q(5147) => q(nyt),
+ q(5148) => q(nyu),
+ q(5149) => q(nyv),
+ q(5150) => q(nyw),
+ q(5151) => q(nyx),
+ q(5152) => q(nyy),
+ q(5153) => q(nza),
+ q(5154) => q(nzb),
+ q(5155) => q(nzk),
+ q(5156) => q(nzm),
+ q(5157) => q(nzs),
+ q(5158) => q(nzu),
+ q(5159) => q(nzy),
+ q(5160) => q(nzz),
+ q(5161) => q(oaa),
+ q(5162) => q(oac),
+ q(5163) => q(oar),
+ q(5164) => q(oav),
+ q(5165) => q(obi),
+ q(5166) => q(obk),
+ q(5167) => q(obl),
+ q(5168) => q(obm),
+ q(5169) => q(obo),
+ q(5170) => q(obr),
+ q(5171) => q(obt),
+ q(5172) => q(obu),
+ q(5173) => q(oca),
+ q(5174) => q(och),
+ q(5175) => q(oco),
+ q(5176) => q(ocu),
+ q(5177) => q(oda),
+ q(5178) => q(odk),
+ q(5179) => q(odt),
+ q(5180) => q(odu),
+ q(5181) => q(ofo),
+ q(5182) => q(ofs),
+ q(5183) => q(ofu),
+ q(5184) => q(ogb),
+ q(5185) => q(ogc),
+ q(5186) => q(oge),
+ q(5187) => q(ogg),
+ q(5188) => q(ogo),
+ q(5189) => q(ogu),
+ q(5190) => q(oht),
+ q(5191) => q(ohu),
+ q(5192) => q(oia),
+ q(5193) => q(oin),
+ q(5194) => q(ojb),
+ q(5195) => q(ojc),
+ q(5196) => q(ojg),
+ q(5197) => q(ojp),
+ q(5198) => q(ojs),
+ q(5199) => q(ojv),
+ q(5200) => q(ojw),
+ q(5201) => q(oka),
+ q(5202) => q(okb),
+ q(5203) => q(okd),
+ q(5204) => q(oke),
+ q(5205) => q(okg),
+ q(5206) => q(okh),
+ q(5207) => q(oki),
+ q(5208) => q(okj),
+ q(5209) => q(okk),
+ q(5210) => q(okl),
+ q(5211) => q(okm),
+ q(5212) => q(okn),
+ q(5213) => q(oko),
+ q(5214) => q(okr),
+ q(5215) => q(oks),
+ q(5216) => q(oku),
+ q(5217) => q(okv),
+ q(5218) => q(okx),
+ q(5219) => q(ola),
+ q(5220) => q(old),
+ q(5221) => q(ole),
+ q(5222) => q(olm),
+ q(5223) => q(olo),
+ q(5224) => q(olr),
+ q(5225) => q(oma),
+ q(5226) => q(omb),
+ q(5227) => q(omc),
+ q(5228) => q(ome),
+ q(5229) => q(omg),
+ q(5230) => q(omi),
+ q(5231) => q(omk),
+ q(5232) => q(oml),
+ q(5233) => q(omn),
+ q(5234) => q(omo),
+ q(5235) => q(omp),
+ q(5236) => q(omr),
+ q(5237) => q(omt),
+ q(5238) => q(omu),
+ q(5239) => q(omw),
+ q(5240) => q(omx),
+ q(5241) => q(ona),
+ q(5242) => q(onb),
+ q(5243) => q(one),
+ q(5244) => q(ong),
+ q(5245) => q(oni),
+ q(5246) => q(onj),
+ q(5247) => q(onk),
+ q(5248) => q(onn),
+ q(5249) => q(ono),
+ q(5250) => q(onp),
+ q(5251) => q(onr),
+ q(5252) => q(ons),
+ q(5253) => q(ont),
+ q(5254) => q(onu),
+ q(5255) => q(onw),
+ q(5256) => q(onx),
+ q(5257) => q(ood),
+ q(5258) => q(oog),
+ q(5259) => q(oon),
+ q(5260) => q(oor),
+ q(5261) => q(oos),
+ q(5262) => q(opa),
+ q(5263) => q(opk),
+ q(5264) => q(opm),
+ q(5265) => q(opo),
+ q(5266) => q(opt),
+ q(5267) => q(opy),
+ q(5268) => q(ora),
+ q(5269) => q(orc),
+ q(5270) => q(ore),
+ q(5271) => q(org),
+ q(5272) => q(orh),
+ q(5273) => q(orn),
+ q(5274) => q(oro),
+ q(5275) => q(orr),
+ q(5276) => q(ors),
+ q(5277) => q(ort),
+ q(5278) => q(oru),
+ q(5279) => q(orv),
+ q(5280) => q(orw),
+ q(5281) => q(orx),
+ q(5282) => q(ory),
+ q(5283) => q(orz),
+ q(5284) => q(osc),
+ q(5285) => q(osi),
+ q(5286) => q(oso),
+ q(5287) => q(osp),
+ q(5288) => q(ost),
+ q(5289) => q(osu),
+ q(5290) => q(osx),
+ q(5291) => q(otb),
+ q(5292) => q(otd),
+ q(5293) => q(ote),
+ q(5294) => q(oti),
+ q(5295) => q(otk),
+ q(5296) => q(otl),
+ q(5297) => q(otm),
+ q(5298) => q(otn),
+ q(5299) => q(otq),
+ q(5300) => q(otr),
+ q(5301) => q(ots),
+ q(5302) => q(ott),
+ q(5303) => q(otu),
+ q(5304) => q(otw),
+ q(5305) => q(otx),
+ q(5306) => q(oty),
+ q(5307) => q(otz),
+ q(5308) => q(oua),
+ q(5309) => q(oub),
+ q(5310) => q(oue),
+ q(5311) => q(oui),
+ q(5312) => q(oum),
+ q(5313) => q(oun),
+ q(5314) => q(owi),
+ q(5315) => q(owl),
+ q(5316) => q(oyb),
+ q(5317) => q(oyd),
+ q(5318) => q(oym),
+ q(5319) => q(oyy),
+ q(5320) => q(ozm),
+ q(5321) => q(pab),
+ q(5322) => q(pac),
+ q(5323) => q(pad),
+ q(5324) => q(pae),
+ q(5325) => q(paf),
+ q(5326) => q(pah),
+ q(5327) => q(pai),
+ q(5328) => q(pak),
+ q(5329) => q(pao),
+ q(5330) => q(paq),
+ q(5331) => q(par),
+ q(5332) => q(pas),
+ q(5333) => q(pat),
+ q(5334) => q(pav),
+ q(5335) => q(paw),
+ q(5336) => q(pax),
+ q(5337) => q(pay),
+ q(5338) => q(paz),
+ q(5339) => q(pbb),
+ q(5340) => q(pbc),
+ q(5341) => q(pbe),
+ q(5342) => q(pbf),
+ q(5343) => q(pbg),
+ q(5344) => q(pbh),
+ q(5345) => q(pbi),
+ q(5346) => q(pbl),
+ q(5347) => q(pbn),
+ q(5348) => q(pbo),
+ q(5349) => q(pbp),
+ q(5350) => q(pbr),
+ q(5351) => q(pbs),
+ q(5352) => q(pbt),
+ q(5353) => q(pbu),
+ q(5354) => q(pbv),
+ q(5355) => q(pby),
+ q(5356) => q(pca),
+ q(5357) => q(pcb),
+ q(5358) => q(pcc),
+ q(5359) => q(pcd),
+ q(5360) => q(pce),
+ q(5361) => q(pcf),
+ q(5362) => q(pcg),
+ q(5363) => q(pch),
+ q(5364) => q(pci),
+ q(5365) => q(pcj),
+ q(5366) => q(pck),
+ q(5367) => q(pcl),
+ q(5368) => q(pcm),
+ q(5369) => q(pcn),
+ q(5370) => q(pcp),
+ q(5371) => q(pcr),
+ q(5372) => q(pcw),
+ q(5373) => q(pda),
+ q(5374) => q(pdc),
+ q(5375) => q(pdi),
+ q(5376) => q(pdn),
+ q(5377) => q(pdo),
+ q(5378) => q(pdt),
+ q(5379) => q(pdu),
+ q(5380) => q(pea),
+ q(5381) => q(peb),
+ q(5382) => q(ped),
+ q(5383) => q(pee),
+ q(5384) => q(pef),
+ q(5385) => q(peg),
+ q(5386) => q(peh),
+ q(5387) => q(pei),
+ q(5388) => q(pej),
+ q(5389) => q(pek),
+ q(5390) => q(pel),
+ q(5391) => q(pem),
+ q(5392) => q(pep),
+ q(5393) => q(peq),
+ q(5394) => q(pes),
+ q(5395) => q(pev),
+ q(5396) => q(pex),
+ q(5397) => q(pey),
+ q(5398) => q(pez),
+ q(5399) => q(pfa),
+ q(5400) => q(pfe),
+ q(5401) => q(pfl),
+ q(5402) => q(pga),
+ q(5403) => q(pgg),
+ q(5404) => q(pgi),
+ q(5405) => q(pgk),
+ q(5406) => q(pgl),
+ q(5407) => q(pgn),
+ q(5408) => q(pgs),
+ q(5409) => q(pgu),
+ q(5410) => q(pha),
+ q(5411) => q(phd),
+ q(5412) => q(phg),
+ q(5413) => q(phh),
+ q(5414) => q(phk),
+ q(5415) => q(phl),
+ q(5416) => q(phm),
+ q(5417) => q(pho),
+ q(5418) => q(phq),
+ q(5419) => q(phr),
+ q(5420) => q(pht),
+ q(5421) => q(phu),
+ q(5422) => q(phv),
+ q(5423) => q(phw),
+ q(5424) => q(pia),
+ q(5425) => q(pib),
+ q(5426) => q(pic),
+ q(5427) => q(pid),
+ q(5428) => q(pie),
+ q(5429) => q(pif),
+ q(5430) => q(pig),
+ q(5431) => q(pih),
+ q(5432) => q(pii),
+ q(5433) => q(pij),
+ q(5434) => q(pil),
+ q(5435) => q(pim),
+ q(5436) => q(pin),
+ q(5437) => q(pio),
+ q(5438) => q(pip),
+ q(5439) => q(pir),
+ q(5440) => q(pis),
+ q(5441) => q(pit),
+ q(5442) => q(piu),
+ q(5443) => q(piv),
+ q(5444) => q(piw),
+ q(5445) => q(pix),
+ q(5446) => q(piy),
+ q(5447) => q(piz),
+ q(5448) => q(pjt),
+ q(5449) => q(pka),
+ q(5450) => q(pkb),
+ q(5451) => q(pkc),
+ q(5452) => q(pkg),
+ q(5453) => q(pkh),
+ q(5454) => q(pkn),
+ q(5455) => q(pko),
+ q(5456) => q(pkp),
+ q(5457) => q(pkr),
+ q(5458) => q(pks),
+ q(5459) => q(pkt),
+ q(5460) => q(pku),
+ q(5461) => q(pla),
+ q(5462) => q(plb),
+ q(5463) => q(plc),
+ q(5464) => q(pld),
+ q(5465) => q(ple),
+ q(5466) => q(plg),
+ q(5467) => q(plh),
+ q(5468) => q(plj),
+ q(5469) => q(plk),
+ q(5470) => q(pll),
+ q(5471) => q(pln),
+ q(5472) => q(plo),
+ q(5473) => q(plp),
+ q(5474) => q(plq),
+ q(5475) => q(plr),
+ q(5476) => q(pls),
+ q(5477) => q(plt),
+ q(5478) => q(plu),
+ q(5479) => q(plv),
+ q(5480) => q(plw),
+ q(5481) => q(ply),
+ q(5482) => q(plz),
+ q(5483) => q(pma),
+ q(5484) => q(pmb),
+ q(5485) => q(pmc),
+ q(5486) => q(pmd),
+ q(5487) => q(pme),
+ q(5488) => q(pmf),
+ q(5489) => q(pmh),
+ q(5490) => q(pmi),
+ q(5491) => q(pmj),
+ q(5492) => q(pmk),
+ q(5493) => q(pml),
+ q(5494) => q(pmm),
+ q(5495) => q(pmn),
+ q(5496) => q(pmo),
+ q(5497) => q(pmq),
+ q(5498) => q(pmr),
+ q(5499) => q(pms),
+ q(5500) => q(pmt),
+ q(5501) => q(pmu),
+ q(5502) => q(pmw),
+ q(5503) => q(pmx),
+ q(5504) => q(pmy),
+ q(5505) => q(pmz),
+ q(5506) => q(pna),
+ q(5507) => q(pnb),
+ q(5508) => q(pnc),
+ q(5509) => q(pne),
+ q(5510) => q(png),
+ q(5511) => q(pnh),
+ q(5512) => q(pni),
+ q(5513) => q(pnk),
+ q(5514) => q(pnm),
+ q(5515) => q(pnn),
+ q(5516) => q(pno),
+ q(5517) => q(pnp),
+ q(5518) => q(pnq),
+ q(5519) => q(pnr),
+ q(5520) => q(pns),
+ q(5521) => q(pnt),
+ q(5522) => q(pnu),
+ q(5523) => q(pnv),
+ q(5524) => q(pnw),
+ q(5525) => q(pnx),
+ q(5526) => q(pny),
+ q(5527) => q(pnz),
+ q(5528) => q(poc),
+ q(5529) => q(pod),
+ q(5530) => q(poe),
+ q(5531) => q(pof),
+ q(5532) => q(pog),
+ q(5533) => q(poh),
+ q(5534) => q(poi),
+ q(5535) => q(pok),
+ q(5536) => q(pom),
+ q(5537) => q(poo),
+ q(5538) => q(pop),
+ q(5539) => q(poq),
+ q(5540) => q(pos),
+ q(5541) => q(pot),
+ q(5542) => q(pov),
+ q(5543) => q(pow),
+ q(5544) => q(pox),
+ q(5545) => q(poy),
+ q(5546) => q(ppa),
+ q(5547) => q(ppe),
+ q(5548) => q(ppi),
+ q(5549) => q(ppk),
+ q(5550) => q(ppl),
+ q(5551) => q(ppm),
+ q(5552) => q(ppn),
+ q(5553) => q(ppo),
+ q(5554) => q(ppp),
+ q(5555) => q(ppq),
+ q(5556) => q(ppr),
+ q(5557) => q(pps),
+ q(5558) => q(ppt),
+ q(5559) => q(ppu),
+ q(5560) => q(pqa),
+ q(5561) => q(pqm),
+ q(5562) => q(prb),
+ q(5563) => q(prc),
+ q(5564) => q(prd),
+ q(5565) => q(pre),
+ q(5566) => q(prf),
+ q(5567) => q(prg),
+ q(5568) => q(prh),
+ q(5569) => q(pri),
+ q(5570) => q(prk),
+ q(5571) => q(prl),
+ q(5572) => q(prm),
+ q(5573) => q(prn),
+ q(5574) => q(prp),
+ q(5575) => q(prq),
+ q(5576) => q(prr),
+ q(5577) => q(prs),
+ q(5578) => q(prt),
+ q(5579) => q(pru),
+ q(5580) => q(prw),
+ q(5581) => q(prx),
+ q(5582) => q(pry),
+ q(5583) => q(prz),
+ q(5584) => q(psa),
+ q(5585) => q(psc),
+ q(5586) => q(psd),
+ q(5587) => q(pse),
+ q(5588) => q(psg),
+ q(5589) => q(psh),
+ q(5590) => q(psi),
+ q(5591) => q(psl),
+ q(5592) => q(psm),
+ q(5593) => q(psn),
+ q(5594) => q(pso),
+ q(5595) => q(psp),
+ q(5596) => q(psq),
+ q(5597) => q(psr),
+ q(5598) => q(pss),
+ q(5599) => q(pst),
+ q(5600) => q(psu),
+ q(5601) => q(psw),
+ q(5602) => q(psy),
+ q(5603) => q(pta),
+ q(5604) => q(pth),
+ q(5605) => q(pti),
+ q(5606) => q(ptn),
+ q(5607) => q(pto),
+ q(5608) => q(ptp),
+ q(5609) => q(ptr),
+ q(5610) => q(ptt),
+ q(5611) => q(ptu),
+ q(5612) => q(ptv),
+ q(5613) => q(ptw),
+ q(5614) => q(pty),
+ q(5615) => q(pua),
+ q(5616) => q(pub),
+ q(5617) => q(puc),
+ q(5618) => q(pud),
+ q(5619) => q(pue),
+ q(5620) => q(puf),
+ q(5621) => q(pug),
+ q(5622) => q(pui),
+ q(5623) => q(puj),
+ q(5624) => q(puk),
+ q(5625) => q(pum),
+ q(5626) => q(puo),
+ q(5627) => q(pup),
+ q(5628) => q(puq),
+ q(5629) => q(pur),
+ q(5630) => q(put),
+ q(5631) => q(puu),
+ q(5632) => q(puw),
+ q(5633) => q(pux),
+ q(5634) => q(puy),
+ q(5635) => q(puz),
+ q(5636) => q(pwa),
+ q(5637) => q(pwb),
+ q(5638) => q(pwg),
+ q(5639) => q(pwm),
+ q(5640) => q(pwn),
+ q(5641) => q(pwo),
+ q(5642) => q(pwr),
+ q(5643) => q(pww),
+ q(5644) => q(pxm),
+ q(5645) => q(pye),
+ q(5646) => q(pym),
+ q(5647) => q(pyn),
+ q(5648) => q(pys),
+ q(5649) => q(pyu),
+ q(5650) => q(pyx),
+ q(5651) => q(pyy),
+ q(5652) => q(pzn),
+ q(5653) => q(qua),
+ q(5654) => q(qub),
+ q(5655) => q(quc),
+ q(5656) => q(qud),
+ q(5657) => q(quf),
+ q(5658) => q(qug),
+ q(5659) => q(quh),
+ q(5660) => q(qui),
+ q(5661) => q(quk),
+ q(5662) => q(qul),
+ q(5663) => q(qum),
+ q(5664) => q(qun),
+ q(5665) => q(qup),
+ q(5666) => q(quq),
+ q(5667) => q(qur),
+ q(5668) => q(qus),
+ q(5669) => q(quv),
+ q(5670) => q(quw),
+ q(5671) => q(qux),
+ q(5672) => q(quy),
+ q(5673) => q(quz),
+ q(5674) => q(qva),
+ q(5675) => q(qvc),
+ q(5676) => q(qve),
+ q(5677) => q(qvh),
+ q(5678) => q(qvi),
+ q(5679) => q(qvj),
+ q(5680) => q(qvl),
+ q(5681) => q(qvm),
+ q(5682) => q(qvn),
+ q(5683) => q(qvo),
+ q(5684) => q(qvp),
+ q(5685) => q(qvs),
+ q(5686) => q(qvw),
+ q(5687) => q(qvy),
+ q(5688) => q(qvz),
+ q(5689) => q(qwa),
+ q(5690) => q(qwc),
+ q(5691) => q(qwh),
+ q(5692) => q(qwm),
+ q(5693) => q(qws),
+ q(5694) => q(qwt),
+ q(5695) => q(qxa),
+ q(5696) => q(qxc),
+ q(5697) => q(qxh),
+ q(5698) => q(qxl),
+ q(5699) => q(qxn),
+ q(5700) => q(qxo),
+ q(5701) => q(qxp),
+ q(5702) => q(qxq),
+ q(5703) => q(qxr),
+ q(5704) => q(qxs),
+ q(5705) => q(qxt),
+ q(5706) => q(qxu),
+ q(5707) => q(qxw),
+ q(5708) => q(qya),
+ q(5709) => q(qyp),
+ q(5710) => q(raa),
+ q(5711) => q(rab),
+ q(5712) => q(rac),
+ q(5713) => q(rad),
+ q(5714) => q(raf),
+ q(5715) => q(rag),
+ q(5716) => q(rah),
+ q(5717) => q(rai),
+ q(5718) => q(rak),
+ q(5719) => q(ral),
+ q(5720) => q(ram),
+ q(5721) => q(ran),
+ q(5722) => q(rao),
+ q(5723) => q(raq),
+ q(5724) => q(ras),
+ q(5725) => q(rat),
+ q(5726) => q(rau),
+ q(5727) => q(rav),
+ q(5728) => q(raw),
+ q(5729) => q(rax),
+ q(5730) => q(ray),
+ q(5731) => q(raz),
+ q(5732) => q(rbb),
+ q(5733) => q(rbk),
+ q(5734) => q(rbl),
+ q(5735) => q(rbp),
+ q(5736) => q(rcf),
+ q(5737) => q(rdb),
+ q(5738) => q(rea),
+ q(5739) => q(reb),
+ q(5740) => q(ree),
+ q(5741) => q(reg),
+ q(5742) => q(rei),
+ q(5743) => q(rej),
+ q(5744) => q(rel),
+ q(5745) => q(rem),
+ q(5746) => q(ren),
+ q(5747) => q(rer),
+ q(5748) => q(res),
+ q(5749) => q(ret),
+ q(5750) => q(rey),
+ q(5751) => q(rga),
+ q(5752) => q(rge),
+ q(5753) => q(rgk),
+ q(5754) => q(rgn),
+ q(5755) => q(rgr),
+ q(5756) => q(rgs),
+ q(5757) => q(rgu),
+ q(5758) => q(rhg),
+ q(5759) => q(rhp),
+ q(5760) => q(ria),
+ q(5761) => q(rie),
+ q(5762) => q(rif),
+ q(5763) => q(ril),
+ q(5764) => q(rim),
+ q(5765) => q(rin),
+ q(5766) => q(rir),
+ q(5767) => q(rit),
+ q(5768) => q(riu),
+ q(5769) => q(rjg),
+ q(5770) => q(rji),
+ q(5771) => q(rjs),
+ q(5772) => q(rka),
+ q(5773) => q(rkb),
+ q(5774) => q(rkh),
+ q(5775) => q(rki),
+ q(5776) => q(rkm),
+ q(5777) => q(rkt),
+ q(5778) => q(rma),
+ q(5779) => q(rmb),
+ q(5780) => q(rmc),
+ q(5781) => q(rmd),
+ q(5782) => q(rme),
+ q(5783) => q(rmf),
+ q(5784) => q(rmg),
+ q(5785) => q(rmh),
+ q(5786) => q(rmi),
+ q(5787) => q(rmk),
+ q(5788) => q(rml),
+ q(5789) => q(rmm),
+ q(5790) => q(rmn),
+ q(5791) => q(rmo),
+ q(5792) => q(rmp),
+ q(5793) => q(rmq),
+ q(5794) => q(rms),
+ q(5795) => q(rmt),
+ q(5796) => q(rmu),
+ q(5797) => q(rmv),
+ q(5798) => q(rmw),
+ q(5799) => q(rmx),
+ q(5800) => q(rmy),
+ q(5801) => q(rmz),
+ q(5802) => q(rna),
+ q(5803) => q(rnd),
+ q(5804) => q(rng),
+ q(5805) => q(rnl),
+ q(5806) => q(rnn),
+ q(5807) => q(rnp),
+ q(5808) => q(rnr),
+ q(5809) => q(rnw),
+ q(5810) => q(rob),
+ q(5811) => q(roc),
+ q(5812) => q(rod),
+ q(5813) => q(roe),
+ q(5814) => q(rof),
+ q(5815) => q(rog),
+ q(5816) => q(rol),
+ q(5817) => q(roo),
+ q(5818) => q(rop),
+ q(5819) => q(ror),
+ q(5820) => q(rou),
+ q(5821) => q(row),
+ q(5822) => q(rpn),
+ q(5823) => q(rpt),
+ q(5824) => q(rri),
+ q(5825) => q(rro),
+ q(5826) => q(rrt),
+ q(5827) => q(rsb),
+ q(5828) => q(rsi),
+ q(5829) => q(rsl),
+ q(5830) => q(rtc),
+ q(5831) => q(rth),
+ q(5832) => q(rtm),
+ q(5833) => q(rtw),
+ q(5834) => q(rub),
+ q(5835) => q(ruc),
+ q(5836) => q(rue),
+ q(5837) => q(ruf),
+ q(5838) => q(rug),
+ q(5839) => q(ruh),
+ q(5840) => q(rui),
+ q(5841) => q(ruk),
+ q(5842) => q(ruo),
+ q(5843) => q(ruq),
+ q(5844) => q(rut),
+ q(5845) => q(ruu),
+ q(5846) => q(ruy),
+ q(5847) => q(ruz),
+ q(5848) => q(rwa),
+ q(5849) => q(rwk),
+ q(5850) => q(rwm),
+ q(5851) => q(rwo),
+ q(5852) => q(rwr),
+ q(5853) => q(ryn),
+ q(5854) => q(rys),
+ q(5855) => q(ryu),
+ q(5856) => q(saa),
+ q(5857) => q(sab),
+ q(5858) => q(sac),
+ q(5859) => q(sae),
+ q(5860) => q(saf),
+ q(5861) => q(saj),
+ q(5862) => q(sak),
+ q(5863) => q(sao),
+ q(5864) => q(sap),
+ q(5865) => q(saq),
+ q(5866) => q(sar),
+ q(5867) => q(sau),
+ q(5868) => q(sav),
+ q(5869) => q(saw),
+ q(5870) => q(sax),
+ q(5871) => q(say),
+ q(5872) => q(saz),
+ q(5873) => q(sba),
+ q(5874) => q(sbb),
+ q(5875) => q(sbc),
+ q(5876) => q(sbd),
+ q(5877) => q(slc),
+ q(5878) => q(sbf),
+ q(5879) => q(sbg),
+ q(5880) => q(sbh),
+ q(5881) => q(sbi),
+ q(5882) => q(sbj),
+ q(5883) => q(sbk),
+ q(5884) => q(sbl),
+ q(5885) => q(sbm),
+ q(5886) => q(sbn),
+ q(5887) => q(sbo),
+ q(5888) => q(sbp),
+ q(5889) => q(sbq),
+ q(5890) => q(sbr),
+ q(5891) => q(sbs),
+ q(5892) => q(sbt),
+ q(5893) => q(sbu),
+ q(5894) => q(sbv),
+ q(5895) => q(sbw),
+ q(5896) => q(sbx),
+ q(5897) => q(sby),
+ q(5898) => q(sbz),
+ q(5899) => q(scb),
+ q(5900) => q(sce),
+ q(5901) => q(scf),
+ q(5902) => q(scg),
+ q(5903) => q(sch),
+ q(5904) => q(sci),
+ q(5905) => q(sck),
+ q(5906) => q(scl),
+ q(5907) => q(scp),
+ q(5908) => q(scq),
+ q(5909) => q(scs),
+ q(5910) => q(scu),
+ q(5911) => q(scv),
+ q(5912) => q(scw),
+ q(5913) => q(scx),
+ q(5914) => q(sda),
+ q(5915) => q(sdb),
+ q(5916) => q(sdc),
+ q(5917) => q(sde),
+ q(5918) => q(sdf),
+ q(5919) => q(sdg),
+ q(5920) => q(sdh),
+ q(5921) => q(sdj),
+ q(5922) => q(sdk),
+ q(5923) => q(sdl),
+ q(5924) => q(sdm),
+ q(5925) => q(sdn),
+ q(5926) => q(sdo),
+ q(5927) => q(sdp),
+ q(5928) => q(sdr),
+ q(5929) => q(sds),
+ q(5930) => q(sdt),
+ q(5931) => q(sdu),
+ q(5932) => q(sdx),
+ q(5933) => q(sdz),
+ q(5934) => q(sea),
+ q(5935) => q(seb),
+ q(5936) => q(sec),
+ q(5937) => q(sed),
+ q(5938) => q(see),
+ q(5939) => q(sef),
+ q(5940) => q(seg),
+ q(5941) => q(seh),
+ q(5942) => q(sei),
+ q(5943) => q(sej),
+ q(5944) => q(sek),
+ q(5945) => q(sen),
+ q(5946) => q(seo),
+ q(5947) => q(sep),
+ q(5948) => q(seq),
+ q(5949) => q(ser),
+ q(5950) => q(ses),
+ q(5951) => q(set),
+ q(5952) => q(seu),
+ q(5953) => q(sev),
+ q(5954) => q(sew),
+ q(5955) => q(sey),
+ q(5956) => q(sez),
+ q(5957) => q(sfb),
+ q(5958) => q(sfe),
+ q(5959) => q(sfm),
+ q(5960) => q(sfs),
+ q(5961) => q(sfw),
+ q(5962) => q(sgb),
+ q(5963) => q(sgc),
+ q(5964) => q(sgd),
+ q(5965) => q(sge),
+ q(5966) => q(sgg),
+ q(5967) => q(sgh),
+ q(5968) => q(sgi),
+ q(5969) => q(sgj),
+ q(5970) => q(sgk),
+ q(5971) => q(sgm),
+ q(5972) => q(sgo),
+ q(5973) => q(sgp),
+ q(5974) => q(sgr),
+ q(5975) => q(sgs),
+ q(5976) => q(sgt),
+ q(5977) => q(sgu),
+ q(5978) => q(sgw),
+ q(5979) => q(sgx),
+ q(5980) => q(sgy),
+ q(5981) => q(sgz),
+ q(5982) => q(sha),
+ q(5983) => q(shb),
+ q(5984) => q(shc),
+ q(5985) => q(shd),
+ q(5986) => q(she),
+ q(5987) => q(shg),
+ q(5988) => q(shh),
+ q(5989) => q(shi),
+ q(5990) => q(shj),
+ q(5991) => q(shk),
+ q(5992) => q(shl),
+ q(5993) => q(shm),
+ q(5994) => q(sho),
+ q(5995) => q(shp),
+ q(5996) => q(shq),
+ q(5997) => q(shr),
+ q(5998) => q(shs),
+ q(5999) => q(sht),
+ q(6000) => q(shu),
+ q(6001) => q(shv),
+ q(6002) => q(shw),
+ q(6003) => q(shx),
+ q(6004) => q(shy),
+ q(6005) => q(shz),
+ q(6006) => q(sia),
+ q(6007) => q(sib),
+ q(6008) => q(sie),
+ q(6009) => q(sif),
+ q(6010) => q(sig),
+ q(6011) => q(sih),
+ q(6012) => q(sii),
+ q(6013) => q(sij),
+ q(6014) => q(sik),
+ q(6015) => q(sil),
+ q(6016) => q(sim),
+ q(6017) => q(sip),
+ q(6018) => q(siq),
+ q(6019) => q(sir),
+ q(6020) => q(sis),
+ q(6021) => q(siu),
+ q(6022) => q(siv),
+ q(6023) => q(siw),
+ q(6024) => q(six),
+ q(6025) => q(siy),
+ q(6026) => q(siz),
+ q(6027) => q(sja),
+ q(6028) => q(sjb),
+ q(6029) => q(sjd),
+ q(6030) => q(sje),
+ q(6031) => q(sjg),
+ q(6032) => q(sjk),
+ q(6033) => q(sjl),
+ q(6034) => q(sjm),
+ q(6035) => q(sjn),
+ q(6036) => q(sjo),
+ q(6037) => q(sjp),
+ q(6038) => q(sjr),
+ q(6039) => q(sjs),
+ q(6040) => q(sjt),
+ q(6041) => q(sju),
+ q(6042) => q(sjw),
+ q(6043) => q(ska),
+ q(6044) => q(skb),
+ q(6045) => q(skc),
+ q(6046) => q(skd),
+ q(6047) => q(ske),
+ q(6048) => q(skf),
+ q(6049) => q(skg),
+ q(6050) => q(skh),
+ q(6051) => q(ski),
+ q(6052) => q(skj),
+ q(6053) => q(skk),
+ q(6054) => q(skm),
+ q(6055) => q(skn),
+ q(6056) => q(sko),
+ q(6057) => q(skp),
+ q(6058) => q(skq),
+ q(6059) => q(skr),
+ q(6060) => q(sks),
+ q(6061) => q(skt),
+ q(6062) => q(sku),
+ q(6063) => q(skv),
+ q(6064) => q(skw),
+ q(6065) => q(skx),
+ q(6066) => q(sky),
+ q(6067) => q(skz),
+ q(6068) => q(sld),
+ q(6069) => q(sle),
+ q(6070) => q(slf),
+ q(6071) => q(slg),
+ q(6072) => q(slh),
+ q(6073) => q(sli),
+ q(6074) => q(slj),
+ q(6075) => q(sll),
+ q(6076) => q(slm),
+ q(6077) => q(sln),
+ q(6078) => q(slp),
+ q(6079) => q(slq),
+ q(6080) => q(slr),
+ q(6081) => q(sls),
+ q(6082) => q(slt),
+ q(6083) => q(slu),
+ q(6084) => q(slw),
+ q(6085) => q(slx),
+ q(6086) => q(sly),
+ q(6087) => q(slz),
+ q(6088) => q(smb),
+ q(6089) => q(smc),
+ q(6090) => q(smd),
+ q(6091) => q(smf),
+ q(6092) => q(smg),
+ q(6093) => q(smh),
+ q(6094) => q(smk),
+ q(6095) => q(sml),
+ q(6096) => q(smm),
+ q(6097) => q(smp),
+ q(6098) => q(smq),
+ q(6099) => q(smr),
+ q(6100) => q(smt),
+ q(6101) => q(smu),
+ q(6102) => q(smv),
+ q(6103) => q(smw),
+ q(6104) => q(smx),
+ q(6105) => q(smy),
+ q(6106) => q(smz),
+ q(6107) => q(snb),
+ q(6108) => q(snc),
+ q(6109) => q(sne),
+ q(6110) => q(snf),
+ q(6111) => q(sng),
+ q(6112) => q(snh),
+ q(6113) => q(sni),
+ q(6114) => q(snj),
+ q(6115) => q(snl),
+ q(6116) => q(snm),
+ q(6117) => q(snn),
+ q(6118) => q(sno),
+ q(6119) => q(snp),
+ q(6120) => q(snq),
+ q(6121) => q(snr),
+ q(6122) => q(sns),
+ q(6123) => q(snu),
+ q(6124) => q(snv),
+ q(6125) => q(snw),
+ q(6126) => q(snx),
+ q(6127) => q(sny),
+ q(6128) => q(snz),
+ q(6129) => q(soa),
+ q(6130) => q(sob),
+ q(6131) => q(soc),
+ q(6132) => q(sod),
+ q(6133) => q(soe),
+ q(6134) => q(soh),
+ q(6135) => q(soi),
+ q(6136) => q(soj),
+ q(6137) => q(sok),
+ q(6138) => q(sol),
+ q(6139) => q(soo),
+ q(6140) => q(sop),
+ q(6141) => q(soq),
+ q(6142) => q(sor),
+ q(6143) => q(sos),
+ q(6144) => q(sou),
+ q(6145) => q(sov),
+ q(6146) => q(sow),
+ q(6147) => q(sox),
+ q(6148) => q(soy),
+ q(6149) => q(soz),
+ q(6150) => q(spb),
+ q(6151) => q(spc),
+ q(6152) => q(spd),
+ q(6153) => q(spe),
+ q(6154) => q(spg),
+ q(6155) => q(spi),
+ q(6156) => q(spk),
+ q(6157) => q(spl),
+ q(6158) => q(spm),
+ q(6159) => q(spo),
+ q(6160) => q(spp),
+ q(6161) => q(spq),
+ q(6162) => q(spr),
+ q(6163) => q(sps),
+ q(6164) => q(spt),
+ q(6165) => q(spu),
+ q(6166) => q(spv),
+ q(6167) => q(spx),
+ q(6168) => q(spy),
+ q(6169) => q(sqa),
+ q(6170) => q(sqh),
+ q(6171) => q(sqk),
+ q(6172) => q(sqm),
+ q(6173) => q(sqn),
+ q(6174) => q(sqo),
+ q(6175) => q(sqq),
+ q(6176) => q(sqr),
+ q(6177) => q(sqs),
+ q(6178) => q(sqt),
+ q(6179) => q(squ),
+ q(6180) => q(sra),
+ q(6181) => q(srb),
+ q(6182) => q(src),
+ q(6183) => q(sre),
+ q(6184) => q(srf),
+ q(6185) => q(srg),
+ q(6186) => q(srh),
+ q(6187) => q(sri),
+ q(6188) => q(srk),
+ q(6189) => q(srl),
+ q(6190) => q(srm),
+ q(6191) => q(sro),
+ q(6192) => q(srq),
+ q(6193) => q(srs),
+ q(6194) => q(srt),
+ q(6195) => q(sru),
+ q(6196) => q(srv),
+ q(6197) => q(srw),
+ q(6198) => q(srx),
+ q(6199) => q(sry),
+ q(6200) => q(srz),
+ q(6201) => q(ssb),
+ q(6202) => q(ssc),
+ q(6203) => q(ssd),
+ q(6204) => q(sse),
+ q(6205) => q(ssf),
+ q(6206) => q(ssg),
+ q(6207) => q(ssh),
+ q(6208) => q(ssi),
+ q(6209) => q(ssj),
+ q(6210) => q(ssk),
+ q(6211) => q(ssl),
+ q(6212) => q(ssm),
+ q(6213) => q(ssn),
+ q(6214) => q(sso),
+ q(6215) => q(ssp),
+ q(6216) => q(ssq),
+ q(6217) => q(ssr),
+ q(6218) => q(sss),
+ q(6219) => q(sst),
+ q(6220) => q(ssu),
+ q(6221) => q(ssv),
+ q(6222) => q(ssx),
+ q(6223) => q(ssy),
+ q(6224) => q(ssz),
+ q(6225) => q(sta),
+ q(6226) => q(stb),
+ q(6227) => q(std),
+ q(6228) => q(ste),
+ q(6229) => q(stf),
+ q(6230) => q(stg),
+ q(6231) => q(sth),
+ q(6232) => q(sti),
+ q(6233) => q(stj),
+ q(6234) => q(stk),
+ q(6235) => q(stl),
+ q(6236) => q(stm),
+ q(6237) => q(stn),
+ q(6238) => q(sto),
+ q(6239) => q(stp),
+ q(6240) => q(stq),
+ q(6241) => q(str),
+ q(6242) => q(sts),
+ q(6243) => q(stt),
+ q(6244) => q(stu),
+ q(6245) => q(stv),
+ q(6246) => q(stw),
+ q(6247) => q(sua),
+ q(6248) => q(sub),
+ q(6249) => q(suc),
+ q(6250) => q(sue),
+ q(6251) => q(sug),
+ q(6252) => q(sui),
+ q(6253) => q(suj),
+ q(6254) => q(suq),
+ q(6255) => q(sur),
+ q(6256) => q(sut),
+ q(6257) => q(suv),
+ q(6258) => q(suw),
+ q(6259) => q(suy),
+ q(6260) => q(suz),
+ q(6261) => q(sva),
+ q(6262) => q(svb),
+ q(6263) => q(svc),
+ q(6264) => q(sve),
+ q(6265) => q(svk),
+ q(6266) => q(svr),
+ q(6267) => q(svs),
+ q(6268) => q(svx),
+ q(6269) => q(swb),
+ q(6270) => q(swc),
+ q(6271) => q(swf),
+ q(6272) => q(swg),
+ q(6273) => q(swh),
+ q(6274) => q(swi),
+ q(6275) => q(swj),
+ q(6276) => q(swk),
+ q(6277) => q(swl),
+ q(6278) => q(swm),
+ q(6279) => q(swn),
+ q(6280) => q(swo),
+ q(6281) => q(swp),
+ q(6282) => q(swq),
+ q(6283) => q(swr),
+ q(6284) => q(sws),
+ q(6285) => q(swt),
+ q(6286) => q(swu),
+ q(6287) => q(swv),
+ q(6288) => q(sww),
+ q(6289) => q(swx),
+ q(6290) => q(swy),
+ q(6291) => q(sxb),
+ q(6292) => q(sxc),
+ q(6293) => q(sxe),
+ q(6294) => q(sxg),
+ q(6295) => q(sxk),
+ q(6296) => q(sxl),
+ q(6297) => q(sxm),
+ q(6298) => q(sxn),
+ q(6299) => q(sxo),
+ q(6300) => q(sxr),
+ q(6301) => q(sxs),
+ q(6302) => q(sxu),
+ q(6303) => q(sxw),
+ q(6304) => q(sya),
+ q(6305) => q(syb),
+ q(6306) => q(syi),
+ q(6307) => q(syk),
+ q(6308) => q(syl),
+ q(6309) => q(sym),
+ q(6310) => q(syn),
+ q(6311) => q(syo),
+ q(6312) => q(sys),
+ q(6313) => q(syw),
+ q(6314) => q(syy),
+ q(6315) => q(sza),
+ q(6316) => q(szb),
+ q(6317) => q(szc),
+ q(6318) => q(szd),
+ q(6319) => q(sze),
+ q(6320) => q(szg),
+ q(6321) => q(szl),
+ q(6322) => q(szn),
+ q(6323) => q(szp),
+ q(6324) => q(szv),
+ q(6325) => q(szw),
+ q(6326) => q(taa),
+ q(6327) => q(tab),
+ q(6328) => q(tac),
+ q(6329) => q(tad),
+ q(6330) => q(tae),
+ q(6331) => q(taf),
+ q(6332) => q(tag),
+ q(6333) => q(taj),
+ q(6334) => q(tak),
+ q(6335) => q(tal),
+ q(6336) => q(tan),
+ q(6337) => q(tao),
+ q(6338) => q(tap),
+ q(6339) => q(taq),
+ q(6340) => q(tar),
+ q(6341) => q(tas),
+ q(6342) => q(tau),
+ q(6343) => q(tav),
+ q(6344) => q(taw),
+ q(6345) => q(tax),
+ q(6346) => q(tay),
+ q(6347) => q(taz),
+ q(6348) => q(tba),
+ q(6349) => q(tbb),
+ q(6350) => q(tbc),
+ q(6351) => q(tbd),
+ q(6352) => q(tbe),
+ q(6353) => q(tbf),
+ q(6354) => q(tbg),
+ q(6355) => q(tbh),
+ q(6356) => q(tbi),
+ q(6357) => q(tbj),
+ q(6358) => q(tbk),
+ q(6359) => q(tbl),
+ q(6360) => q(tbm),
+ q(6361) => q(tbn),
+ q(6362) => q(tbo),
+ q(6363) => q(tbp),
+ q(6364) => q(tbr),
+ q(6365) => q(tbs),
+ q(6366) => q(tbt),
+ q(6367) => q(tbu),
+ q(6368) => q(tbv),
+ q(6369) => q(tbw),
+ q(6370) => q(tbx),
+ q(6371) => q(tby),
+ q(6372) => q(tbz),
+ q(6373) => q(tca),
+ q(6374) => q(tcb),
+ q(6375) => q(tcc),
+ q(6376) => q(tcd),
+ q(6377) => q(tce),
+ q(6378) => q(tcf),
+ q(6379) => q(tcg),
+ q(6380) => q(tch),
+ q(6381) => q(wbf),
+ q(6382) => q(tck),
+ q(6383) => q(tcl),
+ q(6384) => q(tcm),
+ q(6385) => q(tcn),
+ q(6386) => q(tco),
+ q(6387) => q(tcp),
+ q(6388) => q(tcq),
+ q(6389) => q(tcs),
+ q(6390) => q(tct),
+ q(6391) => q(tcu),
+ q(6392) => q(tcw),
+ q(6393) => q(tcx),
+ q(6394) => q(tcy),
+ q(6395) => q(tcz),
+ q(6396) => q(tda),
+ q(6397) => q(tdb),
+ q(6398) => q(tdc),
+ q(6399) => q(tdd),
+ q(6400) => q(tde),
+ q(6401) => q(tdf),
+ q(6402) => q(tdg),
+ q(6403) => q(tdh),
+ q(6404) => q(tdi),
+ q(6405) => q(tdj),
+ q(6406) => q(tdk),
+ q(6407) => q(tdl),
+ q(6408) => q(tdn),
+ q(6409) => q(tdo),
+ q(6410) => q(tdq),
+ q(6411) => q(tdr),
+ q(6412) => q(tds),
+ q(6413) => q(tdt),
+ q(6414) => q(tdu),
+ q(6415) => q(tdv),
+ q(6416) => q(tdx),
+ q(6417) => q(tdy),
+ q(6418) => q(tea),
+ q(6419) => q(teb),
+ q(6420) => q(tec),
+ q(6421) => q(ted),
+ q(6422) => q(tee),
+ q(6423) => q(tef),
+ q(6424) => q(teg),
+ q(6425) => q(teh),
+ q(6426) => q(tei),
+ q(6427) => q(tek),
+ q(6428) => q(ten),
+ q(6429) => q(teo),
+ q(6430) => q(tep),
+ q(6431) => q(teq),
+ q(6432) => q(tes),
+ q(6433) => q(teu),
+ q(6434) => q(tev),
+ q(6435) => q(tew),
+ q(6436) => q(tex),
+ q(6437) => q(tey),
+ q(6438) => q(tfi),
+ q(6439) => q(tfn),
+ q(6440) => q(tfo),
+ q(6441) => q(tfr),
+ q(6442) => q(tft),
+ q(6443) => q(tga),
+ q(6444) => q(tgb),
+ q(6445) => q(tgc),
+ q(6446) => q(tgd),
+ q(6447) => q(tge),
+ q(6448) => q(tgf),
+ q(6449) => q(tgg),
+ q(6450) => q(tgh),
+ q(6451) => q(tgi),
+ q(6452) => q(tgj),
+ q(6453) => q(tgn),
+ q(6454) => q(tgo),
+ q(6455) => q(tgp),
+ q(6456) => q(tgq),
+ q(6457) => q(tgr),
+ q(6458) => q(tgs),
+ q(6459) => q(tgt),
+ q(6460) => q(tgu),
+ q(6461) => q(tgv),
+ q(6462) => q(tgw),
+ q(6463) => q(tgx),
+ q(6464) => q(tgy),
+ q(6465) => q(tgz),
+ q(6466) => q(thc),
+ q(6467) => q(thd),
+ q(6468) => q(the),
+ q(6469) => q(thf),
+ q(6470) => q(thh),
+ q(6471) => q(thi),
+ q(6472) => q(thk),
+ q(6473) => q(thl),
+ q(6474) => q(thm),
+ q(6475) => q(thn),
+ q(6476) => q(thp),
+ q(6477) => q(thq),
+ q(6478) => q(thr),
+ q(6479) => q(ths),
+ q(6480) => q(tht),
+ q(6481) => q(thu),
+ q(6482) => q(thv),
+ q(6483) => q(thw),
+ q(6484) => q(thx),
+ q(6485) => q(thy),
+ q(6486) => q(thz),
+ q(6487) => q(tia),
+ q(6488) => q(tic),
+ q(6489) => q(tid),
+ q(6490) => q(tif),
+ q(6491) => q(tih),
+ q(6492) => q(tii),
+ q(6493) => q(tij),
+ q(6494) => q(tik),
+ q(6495) => q(til),
+ q(6496) => q(tim),
+ q(6497) => q(tin),
+ q(6498) => q(tio),
+ q(6499) => q(tip),
+ q(6500) => q(tiq),
+ q(6501) => q(tis),
+ q(6502) => q(tit),
+ q(6503) => q(tiu),
+ q(6504) => q(tiw),
+ q(6505) => q(tix),
+ q(6506) => q(tiy),
+ q(6507) => q(tiz),
+ q(6508) => q(tja),
+ q(6509) => q(tjg),
+ q(6510) => q(tji),
+ q(6511) => q(tjl),
+ q(6512) => q(tjm),
+ q(6513) => q(tjn),
+ q(6514) => q(tjo),
+ q(6515) => q(tjs),
+ q(6516) => q(tju),
+ q(6517) => q(tka),
+ q(6518) => q(tkb),
+ q(6519) => q(tkd),
+ q(6520) => q(tke),
+ q(6521) => q(tkf),
+ q(6522) => q(tkg),
+ q(6523) => q(tkm),
+ q(6524) => q(tkn),
+ q(6525) => q(tkp),
+ q(6526) => q(tkq),
+ q(6527) => q(tkr),
+ q(6528) => q(tks),
+ q(6529) => q(tkt),
+ q(6530) => q(tku),
+ q(6531) => q(tkw),
+ q(6532) => q(tkx),
+ q(6533) => q(tkz),
+ q(6534) => q(tla),
+ q(6535) => q(tlb),
+ q(6536) => q(tlc),
+ q(6537) => q(tld),
+ q(6538) => q(tlf),
+ q(6539) => q(tlg),
+ q(6540) => q(tlj),
+ q(6541) => q(tlk),
+ q(6542) => q(tll),
+ q(6543) => q(tlm),
+ q(6544) => q(tln),
+ q(6545) => q(tlo),
+ q(6546) => q(tlp),
+ q(6547) => q(tlq),
+ q(6548) => q(tlr),
+ q(6549) => q(tls),
+ q(6550) => q(tlt),
+ q(6551) => q(tlu),
+ q(6552) => q(tlv),
+ q(6553) => q(tlx),
+ q(6554) => q(tly),
+ q(6555) => q(tma),
+ q(6556) => q(tmb),
+ q(6557) => q(tmc),
+ q(6558) => q(tmd),
+ q(6559) => q(tme),
+ q(6560) => q(tmf),
+ q(6561) => q(tmg),
+ q(6562) => q(tmi),
+ q(6563) => q(tmj),
+ q(6564) => q(tmk),
+ q(6565) => q(tml),
+ q(6566) => q(tmm),
+ q(6567) => q(tmn),
+ q(6568) => q(tmo),
+ q(6569) => q(tmp),
+ q(6570) => q(tmq),
+ q(6571) => q(tmr),
+ q(6572) => q(tms),
+ q(6573) => q(tmt),
+ q(6574) => q(tmu),
+ q(6575) => q(tmv),
+ q(6576) => q(tmw),
+ q(6577) => q(tmy),
+ q(6578) => q(tmz),
+ q(6579) => q(tna),
+ q(6580) => q(tnb),
+ q(6581) => q(tnc),
+ q(6582) => q(tnd),
+ q(6583) => q(tne),
+ q(6584) => q(tng),
+ q(6585) => q(tnh),
+ q(6586) => q(tni),
+ q(6587) => q(tnk),
+ q(6588) => q(tnl),
+ q(6589) => q(tnm),
+ q(6590) => q(tnn),
+ q(6591) => q(tno),
+ q(6592) => q(tnp),
+ q(6593) => q(tnq),
+ q(6594) => q(tnr),
+ q(6595) => q(tns),
+ q(6596) => q(tnt),
+ q(6597) => q(tnu),
+ q(6598) => q(tnv),
+ q(6599) => q(tnw),
+ q(6600) => q(tnx),
+ q(6601) => q(tny),
+ q(6602) => q(tnz),
+ q(6603) => q(tob),
+ q(6604) => q(toc),
+ q(6605) => q(tod),
+ q(6606) => q(toe),
+ q(6607) => q(tof),
+ q(6608) => q(toh),
+ q(6609) => q(toi),
+ q(6610) => q(toj),
+ q(6611) => q(tol),
+ q(6612) => q(tom),
+ q(6613) => q(too),
+ q(6614) => q(top),
+ q(6615) => q(toq),
+ q(6616) => q(tor),
+ q(6617) => q(tos),
+ q(6618) => q(tou),
+ q(6619) => q(tov),
+ q(6620) => q(tow),
+ q(6621) => q(tox),
+ q(6622) => q(toy),
+ q(6623) => q(toz),
+ q(6624) => q(tpa),
+ q(6625) => q(tpc),
+ q(6626) => q(tpe),
+ q(6627) => q(tpf),
+ q(6628) => q(tpg),
+ q(6629) => q(tpj),
+ q(6630) => q(tpk),
+ q(6631) => q(tpl),
+ q(6632) => q(tpm),
+ q(6633) => q(tpn),
+ q(6634) => q(tpo),
+ q(6635) => q(tpp),
+ q(6636) => q(tpq),
+ q(6637) => q(tpr),
+ q(6638) => q(tpt),
+ q(6639) => q(tpu),
+ q(6640) => q(tpv),
+ q(6641) => q(tpw),
+ q(6642) => q(tpx),
+ q(6643) => q(tpy),
+ q(6644) => q(tpz),
+ q(6645) => q(tqb),
+ q(6646) => q(tql),
+ q(6647) => q(tqm),
+ q(6648) => q(tqn),
+ q(6649) => q(tqo),
+ q(6650) => q(tqp),
+ q(6651) => q(tqq),
+ q(6652) => q(tqr),
+ q(6653) => q(tqt),
+ q(6654) => q(tqu),
+ q(6655) => q(tqw),
+ q(6656) => q(tra),
+ q(6657) => q(trb),
+ q(6658) => q(trc),
+ q(6659) => q(trd),
+ q(6660) => q(tre),
+ q(6661) => q(trf),
+ q(6662) => q(trg),
+ q(6663) => q(trh),
+ q(6664) => q(tri),
+ q(6665) => q(trj),
+ q(6666) => q(trl),
+ q(6667) => q(trm),
+ q(6668) => q(trn),
+ q(6669) => q(tro),
+ q(6670) => q(trp),
+ q(6671) => q(trq),
+ q(6672) => q(trr),
+ q(6673) => q(trs),
+ q(6674) => q(trt),
+ q(6675) => q(tru),
+ q(6676) => q(trv),
+ q(6677) => q(trw),
+ q(6678) => q(trx),
+ q(6679) => q(try),
+ q(6680) => q(trz),
+ q(6681) => q(tsa),
+ q(6682) => q(tsb),
+ q(6683) => q(tsc),
+ q(6684) => q(tsd),
+ q(6685) => q(tse),
+ q(6686) => q(tsf),
+ q(6687) => q(tsg),
+ q(6688) => q(tsh),
+ q(6689) => q(tsj),
+ q(6690) => q(tsk),
+ q(6691) => q(tsl),
+ q(6692) => q(tsm),
+ q(6693) => q(tsp),
+ q(6694) => q(tsq),
+ q(6695) => q(tsr),
+ q(6696) => q(tss),
+ q(6697) => q(tst),
+ q(6698) => q(tsu),
+ q(6699) => q(tsv),
+ q(6700) => q(tsw),
+ q(6701) => q(tsx),
+ q(6702) => q(tsy),
+ q(6703) => q(tsz),
+ q(6704) => q(tta),
+ q(6705) => q(ttb),
+ q(6706) => q(ttc),
+ q(6707) => q(ttd),
+ q(6708) => q(tte),
+ q(6709) => q(ttf),
+ q(6710) => q(ttg),
+ q(6711) => q(tth),
+ q(6712) => q(tti),
+ q(6713) => q(ttj),
+ q(6714) => q(ttk),
+ q(6715) => q(ttl),
+ q(6716) => q(ttm),
+ q(6717) => q(ttn),
+ q(6718) => q(tto),
+ q(6719) => q(ttp),
+ q(6720) => q(ttq),
+ q(6721) => q(ttr),
+ q(6722) => q(tts),
+ q(6723) => q(ttt),
+ q(6724) => q(ttu),
+ q(6725) => q(ttv),
+ q(6726) => q(ttw),
+ q(6727) => q(tty),
+ q(6728) => q(ttz),
+ q(6729) => q(tua),
+ q(6730) => q(tub),
+ q(6731) => q(tuc),
+ q(6732) => q(tud),
+ q(6733) => q(tue),
+ q(6734) => q(tuf),
+ q(6735) => q(tug),
+ q(6736) => q(tuh),
+ q(6737) => q(tui),
+ q(6738) => q(tuj),
+ q(6739) => q(tul),
+ q(6740) => q(tun),
+ q(6741) => q(tuo),
+ q(6742) => q(tuq),
+ q(6743) => q(tus),
+ q(6744) => q(tuu),
+ q(6745) => q(tuv),
+ q(6746) => q(tux),
+ q(6747) => q(tuy),
+ q(6748) => q(tuz),
+ q(6749) => q(tva),
+ q(6750) => q(tvd),
+ q(6751) => q(tve),
+ q(6752) => q(tvk),
+ q(6753) => q(tvm),
+ q(6754) => q(tvn),
+ q(6755) => q(tvo),
+ q(6756) => q(tvs),
+ q(6757) => q(tvt),
+ q(6758) => q(tvu),
+ q(6759) => q(tvw),
+ q(6760) => q(tvy),
+ q(6761) => q(twa),
+ q(6762) => q(twb),
+ q(6763) => q(twc),
+ q(6764) => q(twd),
+ q(6765) => q(twe),
+ q(6766) => q(twf),
+ q(6767) => q(twg),
+ q(6768) => q(twh),
+ q(6769) => q(twl),
+ q(6770) => q(twm),
+ q(6771) => q(twn),
+ q(6772) => q(two),
+ q(6773) => q(twp),
+ q(6774) => q(twq),
+ q(6775) => q(twr),
+ q(6776) => q(twt),
+ q(6777) => q(twu),
+ q(6778) => q(tww),
+ q(6779) => q(twx),
+ q(6780) => q(twy),
+ q(6781) => q(txa),
+ q(6782) => q(txb),
+ q(6783) => q(txc),
+ q(6784) => q(txe),
+ q(6785) => q(txg),
+ q(6786) => q(txh),
+ q(6787) => q(txi),
+ q(6788) => q(txm),
+ q(6789) => q(txn),
+ q(6790) => q(txo),
+ q(6791) => q(txq),
+ q(6792) => q(txr),
+ q(6793) => q(txs),
+ q(6794) => q(txt),
+ q(6795) => q(txu),
+ q(6796) => q(txx),
+ q(6797) => q(txy),
+ q(6798) => q(tya),
+ q(6799) => q(tye),
+ q(6800) => q(tyh),
+ q(6801) => q(tyi),
+ q(6802) => q(tyj),
+ q(6803) => q(tyl),
+ q(6804) => q(tyn),
+ q(6805) => q(typ),
+ q(6806) => q(tyr),
+ q(6807) => q(tys),
+ q(6808) => q(tyt),
+ q(6809) => q(tyu),
+ q(6810) => q(tyx),
+ q(6811) => q(tyz),
+ q(6812) => q(tza),
+ q(6813) => q(tzh),
+ q(6814) => q(tzj),
+ q(6815) => q(tzm),
+ q(6816) => q(tzn),
+ q(6817) => q(tzo),
+ q(6818) => q(tzx),
+ q(6819) => q(uam),
+ q(6820) => q(uan),
+ q(6821) => q(uar),
+ q(6822) => q(uba),
+ q(6823) => q(ubi),
+ q(6824) => q(ubl),
+ q(6825) => q(ubr),
+ q(6826) => q(ubu),
+ q(6827) => q(uby),
+ q(6828) => q(uda),
+ q(6829) => q(ude),
+ q(6830) => q(udg),
+ q(6831) => q(udi),
+ q(6832) => q(udj),
+ q(6833) => q(udl),
+ q(6834) => q(udu),
+ q(6835) => q(ues),
+ q(6836) => q(ufi),
+ q(6837) => q(ugb),
+ q(6838) => q(uge),
+ q(6839) => q(ugn),
+ q(6840) => q(ugo),
+ q(6841) => q(ugy),
+ q(6842) => q(uha),
+ q(6843) => q(uhn),
+ q(6844) => q(uis),
+ q(6845) => q(uiv),
+ q(6846) => q(uji),
+ q(6847) => q(uka),
+ q(6848) => q(ukg),
+ q(6849) => q(ukh),
+ q(6850) => q(ukl),
+ q(6851) => q(ukp),
+ q(6852) => q(ukq),
+ q(6853) => q(uks),
+ q(6854) => q(uku),
+ q(6855) => q(ukw),
+ q(6856) => q(uky),
+ q(6857) => q(ula),
+ q(6858) => q(ulb),
+ q(6859) => q(ulc),
+ q(6860) => q(ulf),
+ q(6861) => q(uli),
+ q(6862) => q(ulk),
+ q(6863) => q(ull),
+ q(6864) => q(ulm),
+ q(6865) => q(uln),
+ q(6866) => q(ulu),
+ q(6867) => q(ulw),
+ q(6868) => q(uma),
+ q(6869) => q(umc),
+ q(6870) => q(umd),
+ q(6871) => q(umg),
+ q(6872) => q(umi),
+ q(6873) => q(umm),
+ q(6874) => q(umn),
+ q(6875) => q(umo),
+ q(6876) => q(ump),
+ q(6877) => q(umr),
+ q(6878) => q(ums),
+ q(6879) => q(umu),
+ q(6880) => q(una),
+ q(6881) => q(une),
+ q(6882) => q(ung),
+ q(6883) => q(unk),
+ q(6884) => q(unm),
+ q(6885) => q(unr),
+ q(6886) => q(unx),
+ q(6887) => q(unz),
+ q(6888) => q(uok),
+ q(6889) => q(upi),
+ q(6890) => q(upv),
+ q(6891) => q(ura),
+ q(6892) => q(urb),
+ q(6893) => q(urc),
+ q(6894) => q(ure),
+ q(6895) => q(urf),
+ q(6896) => q(urg),
+ q(6897) => q(urh),
+ q(6898) => q(uri),
+ q(6899) => q(urk),
+ q(6900) => q(url),
+ q(6901) => q(urm),
+ q(6902) => q(urn),
+ q(6903) => q(uro),
+ q(6904) => q(urp),
+ q(6905) => q(urr),
+ q(6906) => q(urt),
+ q(6907) => q(uru),
+ q(6908) => q(urv),
+ q(6909) => q(urw),
+ q(6910) => q(urx),
+ q(6911) => q(ury),
+ q(6912) => q(urz),
+ q(6913) => q(usa),
+ q(6914) => q(ush),
+ q(6915) => q(usi),
+ q(6916) => q(usk),
+ q(6917) => q(usp),
+ q(6918) => q(usu),
+ q(6919) => q(uta),
+ q(6920) => q(ute),
+ q(6921) => q(utp),
+ q(6922) => q(utr),
+ q(6923) => q(utu),
+ q(6924) => q(uum),
+ q(6925) => q(uun),
+ q(6926) => q(uur),
+ q(6927) => q(uuu),
+ q(6928) => q(uve),
+ q(6929) => q(uvh),
+ q(6930) => q(uvl),
+ q(6931) => q(uwa),
+ q(6932) => q(uya),
+ q(6933) => q(uzn),
+ q(6934) => q(uzs),
+ q(6935) => q(vaa),
+ q(6936) => q(vae),
+ q(6937) => q(vaf),
+ q(6938) => q(vag),
+ q(6939) => q(vah),
+ q(6940) => q(vaj),
+ q(6941) => q(val),
+ q(6942) => q(vam),
+ q(6943) => q(van),
+ q(6944) => q(vao),
+ q(6945) => q(vap),
+ q(6946) => q(var),
+ q(6947) => q(vas),
+ q(6948) => q(vau),
+ q(6949) => q(vav),
+ q(6950) => q(vay),
+ q(6951) => q(vbb),
+ q(6952) => q(vbk),
+ q(6953) => q(vec),
+ q(6954) => q(ved),
+ q(6955) => q(vel),
+ q(6956) => q(vem),
+ q(6957) => q(veo),
+ q(6958) => q(vep),
+ q(6959) => q(ver),
+ q(6960) => q(vgr),
+ q(6961) => q(vgt),
+ q(6962) => q(vic),
+ q(6963) => q(vid),
+ q(6964) => q(vif),
+ q(6965) => q(vig),
+ q(6966) => q(vil),
+ q(6967) => q(vin),
+ q(6968) => q(vis),
+ q(6969) => q(vit),
+ q(6970) => q(viv),
+ q(6971) => q(vka),
+ q(6972) => q(vki),
+ q(6973) => q(vkj),
+ q(6974) => q(vkk),
+ q(6975) => q(vkl),
+ q(6976) => q(vkm),
+ q(6977) => q(vko),
+ q(6978) => q(vkp),
+ q(6979) => q(vkt),
+ q(6980) => q(vku),
+ q(6981) => q(vlp),
+ q(6982) => q(vls),
+ q(6983) => q(vma),
+ q(6984) => q(vmb),
+ q(6985) => q(vmc),
+ q(6986) => q(vmd),
+ q(6987) => q(vme),
+ q(6988) => q(vmf),
+ q(6989) => q(vmg),
+ q(6990) => q(vmh),
+ q(6991) => q(vmi),
+ q(6992) => q(vmj),
+ q(6993) => q(vmk),
+ q(6994) => q(vml),
+ q(6995) => q(vmm),
+ q(6996) => q(vmp),
+ q(6997) => q(vmq),
+ q(6998) => q(vmr),
+ q(6999) => q(vms),
+ q(7000) => q(vmu),
+ q(7001) => q(vmv),
+ q(7002) => q(vmw),
+ q(7003) => q(vmx),
+ q(7004) => q(vmy),
+ q(7005) => q(vmz),
+ q(7006) => q(vnk),
+ q(7007) => q(vnm),
+ q(7008) => q(vnp),
+ q(7009) => q(vro),
+ q(7010) => q(vra),
+ q(7011) => q(vrs),
+ q(7012) => q(vrt),
+ q(7013) => q(vsi),
+ q(7014) => q(vsl),
+ q(7015) => q(vsv),
+ q(7016) => q(vto),
+ q(7017) => q(vum),
+ q(7018) => q(vun),
+ q(7019) => q(vut),
+ q(7020) => q(vwa),
+ q(7021) => q(waa),
+ q(7022) => q(wab),
+ q(7023) => q(wac),
+ q(7024) => q(wad),
+ q(7025) => q(wae),
+ q(7026) => q(waf),
+ q(7027) => q(wag),
+ q(7028) => q(wah),
+ q(7029) => q(wai),
+ q(7030) => q(waj),
+ q(7031) => q(wam),
+ q(7032) => q(wan),
+ q(7033) => q(wao),
+ q(7034) => q(wap),
+ q(7035) => q(waq),
+ q(7036) => q(wat),
+ q(7037) => q(wau),
+ q(7038) => q(wav),
+ q(7039) => q(waw),
+ q(7040) => q(wax),
+ q(7041) => q(way),
+ q(7042) => q(waz),
+ q(7043) => q(wba),
+ q(7044) => q(wbb),
+ q(7045) => q(wbe),
+ q(7046) => q(wbh),
+ q(7047) => q(wbi),
+ q(7048) => q(wbj),
+ q(7049) => q(wbk),
+ q(7050) => q(wbl),
+ q(7051) => q(wbm),
+ q(7052) => q(wbp),
+ q(7053) => q(wbq),
+ q(7054) => q(wbr),
+ q(7055) => q(wbt),
+ q(7056) => q(wbv),
+ q(7057) => q(wbw),
+ q(7058) => q(wca),
+ q(7059) => q(wci),
+ q(7060) => q(wdd),
+ q(7061) => q(wdg),
+ q(7062) => q(wdj),
+ q(7063) => q(wdu),
+ q(7064) => q(wea),
+ q(7065) => q(wec),
+ q(7066) => q(wed),
+ q(7067) => q(weh),
+ q(7068) => q(wei),
+ q(7069) => q(wem),
+ q(7070) => q(weo),
+ q(7071) => q(wep),
+ q(7072) => q(wer),
+ q(7073) => q(wes),
+ q(7074) => q(wet),
+ q(7075) => q(weu),
+ q(7076) => q(wew),
+ q(7077) => q(wfg),
+ q(7078) => q(wga),
+ q(7079) => q(wgb),
+ q(7080) => q(wgg),
+ q(7081) => q(wgi),
+ q(7082) => q(wgo),
+ q(7083) => q(wgu),
+ q(7084) => q(wgy),
+ q(7085) => q(wha),
+ q(7086) => q(whg),
+ q(7087) => q(whk),
+ q(7088) => q(whu),
+ q(7089) => q(wib),
+ q(7090) => q(wic),
+ q(7091) => q(wie),
+ q(7092) => q(wif),
+ q(7093) => q(wig),
+ q(7094) => q(wih),
+ q(7095) => q(wii),
+ q(7096) => q(wij),
+ q(7097) => q(wik),
+ q(7098) => q(wil),
+ q(7099) => q(wim),
+ q(7100) => q(win),
+ q(7101) => q(wir),
+ q(7102) => q(wit),
+ q(7103) => q(wiu),
+ q(7104) => q(wiv),
+ q(7105) => q(wiy),
+ q(7106) => q(wja),
+ q(7107) => q(wji),
+ q(7108) => q(wka),
+ q(7109) => q(wkb),
+ q(7110) => q(wkd),
+ q(7111) => q(wkl),
+ q(7112) => q(wku),
+ q(7113) => q(wkw),
+ q(7114) => q(wla),
+ q(7115) => q(wlc),
+ q(7116) => q(wle),
+ q(7117) => q(wlg),
+ q(7118) => q(wli),
+ q(7119) => q(wlk),
+ q(7120) => q(wll),
+ q(7121) => q(wlm),
+ q(7122) => q(wlo),
+ q(7123) => q(wlr),
+ q(7124) => q(wls),
+ q(7125) => q(wlu),
+ q(7126) => q(wlv),
+ q(7127) => q(wlw),
+ q(7128) => q(wlx),
+ q(7129) => q(wly),
+ q(7130) => q(wma),
+ q(7131) => q(wmb),
+ q(7132) => q(wmc),
+ q(7133) => q(wmd),
+ q(7134) => q(wme),
+ q(7135) => q(wmh),
+ q(7136) => q(wmi),
+ q(7137) => q(wmm),
+ q(7138) => q(wmn),
+ q(7139) => q(wmo),
+ q(7140) => q(wms),
+ q(7141) => q(wmt),
+ q(7142) => q(wmw),
+ q(7143) => q(wmx),
+ q(7144) => q(wnb),
+ q(7145) => q(wnc),
+ q(7146) => q(wnd),
+ q(7147) => q(wne),
+ q(7148) => q(wng),
+ q(7149) => q(wni),
+ q(7150) => q(wnk),
+ q(7151) => q(wnm),
+ q(7152) => q(wno),
+ q(7153) => q(wnp),
+ q(7154) => q(wnu),
+ q(7155) => q(wny),
+ q(7156) => q(woa),
+ q(7157) => q(wob),
+ q(7158) => q(woc),
+ q(7159) => q(wod),
+ q(7160) => q(woe),
+ q(7161) => q(wof),
+ q(7162) => q(wog),
+ q(7163) => q(woi),
+ q(7164) => q(wok),
+ q(7165) => q(wom),
+ q(7166) => q(won),
+ q(7167) => q(woo),
+ q(7168) => q(wor),
+ q(7169) => q(wos),
+ q(7170) => q(wow),
+ q(7171) => q(woy),
+ q(7172) => q(wpc),
+ q(7173) => q(wra),
+ q(7174) => q(wrb),
+ q(7175) => q(wrd),
+ q(7176) => q(wrg),
+ q(7177) => q(wrh),
+ q(7178) => q(wri),
+ q(7179) => q(wrk),
+ q(7180) => q(wrl),
+ q(7181) => q(wrm),
+ q(7182) => q(wrn),
+ q(7183) => q(wro),
+ q(7184) => q(wrp),
+ q(7185) => q(wrr),
+ q(7186) => q(wrs),
+ q(7187) => q(wru),
+ q(7188) => q(wrv),
+ q(7189) => q(wrw),
+ q(7190) => q(wrx),
+ q(7191) => q(wry),
+ q(7192) => q(wrz),
+ q(7193) => q(wsa),
+ q(7194) => q(wsi),
+ q(7195) => q(wsk),
+ q(7196) => q(wsr),
+ q(7197) => q(wss),
+ q(7198) => q(wsu),
+ q(7199) => q(wsv),
+ q(7200) => q(wtf),
+ q(7201) => q(wti),
+ q(7202) => q(wtk),
+ q(7203) => q(wtm),
+ q(7204) => q(wtw),
+ q(7205) => q(wua),
+ q(7206) => q(wub),
+ q(7207) => q(wud),
+ q(7208) => q(wuh),
+ q(7209) => q(wul),
+ q(7210) => q(wum),
+ q(7211) => q(wun),
+ q(7212) => q(wur),
+ q(7213) => q(wut),
+ q(7214) => q(wuu),
+ q(7215) => q(wuv),
+ q(7216) => q(wux),
+ q(7217) => q(wuy),
+ q(7218) => q(wwa),
+ q(7219) => q(wwb),
+ q(7220) => q(wwo),
+ q(7221) => q(wwr),
+ q(7222) => q(www),
+ q(7223) => q(wxa),
+ q(7224) => q(wya),
+ q(7225) => q(wyb),
+ q(7226) => q(wym),
+ q(7227) => q(wyr),
+ q(7228) => q(wyy),
+ q(7229) => q(xaa),
+ q(7230) => q(xab),
+ q(7231) => q(xac),
+ q(7232) => q(xad),
+ q(7233) => q(xae),
+ q(7234) => q(xag),
+ q(7235) => q(xai),
+ q(7236) => q(xam),
+ q(7237) => q(xan),
+ q(7238) => q(xao),
+ q(7239) => q(xap),
+ q(7240) => q(xaq),
+ q(7241) => q(xar),
+ q(7242) => q(xas),
+ q(7243) => q(xat),
+ q(7244) => q(xau),
+ q(7245) => q(xav),
+ q(7246) => q(xaw),
+ q(7247) => q(xay),
+ q(7248) => q(xba),
+ q(7249) => q(xbb),
+ q(7250) => q(xbc),
+ q(7251) => q(xbi),
+ q(7252) => q(xbm),
+ q(7253) => q(xbn),
+ q(7254) => q(xbo),
+ q(7255) => q(xbr),
+ q(7256) => q(xbw),
+ q(7257) => q(xbx),
+ q(7258) => q(xcb),
+ q(7259) => q(xcc),
+ q(7260) => q(xce),
+ q(7261) => q(xcg),
+ q(7262) => q(xch),
+ q(7263) => q(xcl),
+ q(7264) => q(xcm),
+ q(7265) => q(xcn),
+ q(7266) => q(xco),
+ q(7267) => q(xcr),
+ q(7268) => q(xct),
+ q(7269) => q(xcu),
+ q(7270) => q(xcv),
+ q(7271) => q(xcw),
+ q(7272) => q(xcy),
+ q(7273) => q(xdc),
+ q(7274) => q(xdm),
+ q(7275) => q(xdy),
+ q(7276) => q(xeb),
+ q(7277) => q(xed),
+ q(7278) => q(xeg),
+ q(7279) => q(xel),
+ q(7280) => q(xem),
+ q(7281) => q(xep),
+ q(7282) => q(xer),
+ q(7283) => q(xes),
+ q(7284) => q(xet),
+ q(7285) => q(xeu),
+ q(7286) => q(xfa),
+ q(7287) => q(xga),
+ q(7288) => q(xgb),
+ q(7289) => q(xgf),
+ q(7290) => q(xgl),
+ q(7291) => q(xgr),
+ q(7292) => q(xgu),
+ q(7293) => q(xha),
+ q(7294) => q(xhc),
+ q(7295) => q(xhd),
+ q(7296) => q(xhe),
+ q(7297) => q(xhr),
+ q(7298) => q(xht),
+ q(7299) => q(xhu),
+ q(7300) => q(xhv),
+ q(7301) => q(xia),
+ q(7302) => q(xib),
+ q(7303) => q(xii),
+ q(7304) => q(xil),
+ q(7305) => q(xin),
+ q(7306) => q(xip),
+ q(7307) => q(xir),
+ q(7308) => q(xiv),
+ q(7309) => q(xiy),
+ q(7310) => q(xka),
+ q(7311) => q(xkb),
+ q(7312) => q(xkc),
+ q(7313) => q(xkd),
+ q(7314) => q(xke),
+ q(7315) => q(xkf),
+ q(7316) => q(xkg),
+ q(7317) => q(xkh),
+ q(7318) => q(xki),
+ q(7319) => q(xkj),
+ q(7320) => q(xkk),
+ q(7321) => q(xkl),
+ q(7322) => q(xkn),
+ q(7323) => q(xko),
+ q(7324) => q(xkp),
+ q(7325) => q(xkq),
+ q(7326) => q(xkr),
+ q(7327) => q(xks),
+ q(7328) => q(xkt),
+ q(7329) => q(xku),
+ q(7330) => q(xkv),
+ q(7331) => q(xkw),
+ q(7332) => q(xkx),
+ q(7333) => q(xky),
+ q(7334) => q(xkz),
+ q(7335) => q(xla),
+ q(7336) => q(xlb),
+ q(7337) => q(xlc),
+ q(7338) => q(xld),
+ q(7339) => q(xle),
+ q(7340) => q(xlg),
+ q(7341) => q(xli),
+ q(7342) => q(xln),
+ q(7343) => q(xlo),
+ q(7344) => q(xlp),
+ q(7345) => q(xls),
+ q(7346) => q(xlu),
+ q(7347) => q(xly),
+ q(7348) => q(xma),
+ q(7349) => q(xmb),
+ q(7350) => q(xmc),
+ q(7351) => q(xmd),
+ q(7352) => q(xme),
+ q(7353) => q(xmf),
+ q(7354) => q(xmg),
+ q(7355) => q(xmh),
+ q(7356) => q(xmj),
+ q(7357) => q(xmk),
+ q(7358) => q(xml),
+ q(7359) => q(xmm),
+ q(7360) => q(xmn),
+ q(7361) => q(xmo),
+ q(7362) => q(xmp),
+ q(7363) => q(xmq),
+ q(7364) => q(xmr),
+ q(7365) => q(xms),
+ q(7366) => q(xmt),
+ q(7367) => q(xmu),
+ q(7368) => q(xmv),
+ q(7369) => q(xmw),
+ q(7370) => q(xmx),
+ q(7371) => q(xmy),
+ q(7372) => q(xmz),
+ q(7373) => q(xna),
+ q(7374) => q(xnb),
+ q(7375) => q(xng),
+ q(7376) => q(xnh),
+ q(7377) => q(xnn),
+ q(7378) => q(xno),
+ q(7379) => q(xnr),
+ q(7380) => q(xns),
+ q(7381) => q(xnt),
+ q(7382) => q(xnz),
+ q(7383) => q(xoc),
+ q(7384) => q(xod),
+ q(7385) => q(xog),
+ q(7386) => q(xoi),
+ q(7387) => q(xok),
+ q(7388) => q(xom),
+ q(7389) => q(xon),
+ q(7390) => q(xoo),
+ q(7391) => q(xop),
+ q(7392) => q(xor),
+ q(7393) => q(xow),
+ q(7394) => q(xpc),
+ q(7395) => q(xpe),
+ q(7396) => q(xpg),
+ q(7397) => q(xpi),
+ q(7398) => q(xpj),
+ q(7399) => q(xpk),
+ q(7400) => q(xpm),
+ q(7401) => q(xpn),
+ q(7402) => q(xpo),
+ q(7403) => q(xpp),
+ q(7404) => q(xpq),
+ q(7405) => q(xpr),
+ q(7406) => q(xps),
+ q(7407) => q(xpu),
+ q(7408) => q(xpy),
+ q(7409) => q(xqa),
+ q(7410) => q(xqt),
+ q(7411) => q(xra),
+ q(7412) => q(xrb),
+ q(7413) => q(xre),
+ q(7414) => q(xri),
+ q(7415) => q(xrm),
+ q(7416) => q(xrn),
+ q(7417) => q(xrr),
+ q(7418) => q(xrt),
+ q(7419) => q(xru),
+ q(7420) => q(xrw),
+ q(7421) => q(xsa),
+ q(7422) => q(xsb),
+ q(7423) => q(xsc),
+ q(7424) => q(xsd),
+ q(7425) => q(xse),
+ q(7426) => q(xsh),
+ q(7427) => q(xsi),
+ q(7428) => q(xsj),
+ q(7429) => q(xsl),
+ q(7430) => q(xsm),
+ q(7431) => q(xsn),
+ q(7432) => q(xso),
+ q(7433) => q(xsp),
+ q(7434) => q(xsq),
+ q(7435) => q(xsr),
+ q(7436) => q(xss),
+ q(7437) => q(xsu),
+ q(7438) => q(xsv),
+ q(7439) => q(xsy),
+ q(7440) => q(xta),
+ q(7441) => q(xtb),
+ q(7442) => q(xtc),
+ q(7443) => q(xtd),
+ q(7444) => q(xte),
+ q(7445) => q(xtg),
+ q(7446) => q(xti),
+ q(7447) => q(xtj),
+ q(7448) => q(xtl),
+ q(7449) => q(xtm),
+ q(7450) => q(xtn),
+ q(7451) => q(xto),
+ q(7452) => q(xtp),
+ q(7453) => q(xtq),
+ q(7454) => q(xtr),
+ q(7455) => q(xts),
+ q(7456) => q(xtt),
+ q(7457) => q(xtu),
+ q(7458) => q(xtw),
+ q(7459) => q(xty),
+ q(7460) => q(xtz),
+ q(7461) => q(xua),
+ q(7462) => q(xub),
+ q(7463) => q(xud),
+ q(7464) => q(xug),
+ q(7465) => q(xuj),
+ q(7466) => q(xum),
+ q(7467) => q(xun),
+ q(7468) => q(xuo),
+ q(7469) => q(xup),
+ q(7470) => q(xur),
+ q(7471) => q(xut),
+ q(7472) => q(xuu),
+ q(7473) => q(xve),
+ q(7474) => q(xvi),
+ q(7475) => q(xvn),
+ q(7476) => q(xvo),
+ q(7477) => q(xvs),
+ q(7478) => q(xwa),
+ q(7479) => q(xwc),
+ q(7480) => q(xwe),
+ q(7481) => q(xwg),
+ q(7482) => q(xwl),
+ q(7483) => q(xwo),
+ q(7484) => q(xwr),
+ q(7485) => q(xxb),
+ q(7486) => q(xxk),
+ q(7487) => q(xxr),
+ q(7488) => q(xxt),
+ q(7489) => q(xyl),
+ q(7490) => q(xyy),
+ q(7491) => q(xzh),
+ q(7492) => q(xzm),
+ q(7493) => q(xzp),
+ q(7494) => q(yaa),
+ q(7495) => q(yab),
+ q(7496) => q(yac),
+ q(7497) => q(yad),
+ q(7498) => q(yae),
+ q(7499) => q(yaf),
+ q(7500) => q(yag),
+ q(7501) => q(yah),
+ q(7502) => q(yai),
+ q(7503) => q(yaj),
+ q(7504) => q(yak),
+ q(7505) => q(yal),
+ q(7506) => q(yam),
+ q(7507) => q(yan),
+ q(7508) => q(yaq),
+ q(7509) => q(yar),
+ q(7510) => q(yas),
+ q(7511) => q(yat),
+ q(7512) => q(yau),
+ q(7513) => q(yav),
+ q(7514) => q(yaw),
+ q(7515) => q(yax),
+ q(7516) => q(yay),
+ q(7517) => q(yaz),
+ q(7518) => q(yba),
+ q(7519) => q(ybb),
+ q(7520) => q(ybe),
+ q(7521) => q(ybh),
+ q(7522) => q(ybi),
+ q(7523) => q(ybj),
+ q(7524) => q(ybk),
+ q(7525) => q(ybl),
+ q(7526) => q(ybm),
+ q(7527) => q(ybn),
+ q(7528) => q(ybo),
+ q(7529) => q(ybx),
+ q(7530) => q(yby),
+ q(7531) => q(ych),
+ q(7532) => q(ycl),
+ q(7533) => q(ycn),
+ q(7534) => q(ycp),
+ q(7535) => q(ydd),
+ q(7536) => q(yde),
+ q(7537) => q(ydg),
+ q(7538) => q(ydk),
+ q(7539) => q(yds),
+ q(7540) => q(yea),
+ q(7541) => q(yec),
+ q(7542) => q(yee),
+ q(7543) => q(yei),
+ q(7544) => q(yej),
+ q(7545) => q(yel),
+ q(7546) => q(yer),
+ q(7547) => q(yes),
+ q(7548) => q(yet),
+ q(7549) => q(yeu),
+ q(7550) => q(yev),
+ q(7551) => q(yey),
+ q(7552) => q(yga),
+ q(7553) => q(ygl),
+ q(7554) => q(ygm),
+ q(7555) => q(ygp),
+ q(7556) => q(ygr),
+ q(7557) => q(ygw),
+ q(7558) => q(yha),
+ q(7559) => q(yhd),
+ q(7560) => q(yhl),
+ q(7561) => q(yia),
+ q(7562) => q(yig),
+ q(7563) => q(yih),
+ q(7564) => q(yii),
+ q(7565) => q(yij),
+ q(7566) => q(yik),
+ q(7567) => q(yil),
+ q(7568) => q(yim),
+ q(7569) => q(yin),
+ q(7570) => q(yip),
+ q(7571) => q(yiq),
+ q(7572) => q(yir),
+ q(7573) => q(yis),
+ q(7574) => q(yit),
+ q(7575) => q(yiu),
+ q(7576) => q(yiv),
+ q(7577) => q(yix),
+ q(7578) => q(yiy),
+ q(7579) => q(yiz),
+ q(7580) => q(yka),
+ q(7581) => q(ykg),
+ q(7582) => q(yki),
+ q(7583) => q(ykk),
+ q(7584) => q(ykl),
+ q(7585) => q(ykm),
+ q(7586) => q(ykn),
+ q(7587) => q(yko),
+ q(7588) => q(ykr),
+ q(7589) => q(ykt),
+ q(7590) => q(yku),
+ q(7591) => q(yky),
+ q(7592) => q(yla),
+ q(7593) => q(ylb),
+ q(7594) => q(yle),
+ q(7595) => q(ylg),
+ q(7596) => q(yli),
+ q(7597) => q(yll),
+ q(7598) => q(ylm),
+ q(7599) => q(yln),
+ q(7600) => q(ylo),
+ q(7601) => q(ylr),
+ q(7602) => q(ylu),
+ q(7603) => q(yly),
+ q(7604) => q(ymb),
+ q(7605) => q(ymc),
+ q(7606) => q(ymd),
+ q(7607) => q(yme),
+ q(7608) => q(ymg),
+ q(7609) => q(ymh),
+ q(7610) => q(ymi),
+ q(7611) => q(ymk),
+ q(7612) => q(yml),
+ q(7613) => q(ymm),
+ q(7614) => q(ymn),
+ q(7615) => q(ymo),
+ q(7616) => q(ymp),
+ q(7617) => q(ymq),
+ q(7618) => q(ymr),
+ q(7619) => q(yms),
+ q(7620) => q(ymt),
+ q(7621) => q(ymx),
+ q(7622) => q(ymz),
+ q(7623) => q(yna),
+ q(7624) => q(ynd),
+ q(7625) => q(yne),
+ q(7626) => q(yng),
+ q(7627) => q(ynh),
+ q(7628) => q(ynk),
+ q(7629) => q(ynl),
+ q(7630) => q(ynn),
+ q(7631) => q(yno),
+ q(7632) => q(ynq),
+ q(7633) => q(yns),
+ q(7634) => q(ynu),
+ q(7635) => q(yob),
+ q(7636) => q(yog),
+ q(7637) => q(yoi),
+ q(7638) => q(yok),
+ q(7639) => q(yol),
+ q(7640) => q(yom),
+ q(7641) => q(yon),
+ q(7642) => q(yos),
+ q(7643) => q(yot),
+ q(7644) => q(yox),
+ q(7645) => q(yoy),
+ q(7646) => q(ypa),
+ q(7647) => q(ypb),
+ q(7648) => q(ypg),
+ q(7649) => q(yph),
+ q(7650) => q(ypm),
+ q(7651) => q(ypn),
+ q(7652) => q(ypo),
+ q(7653) => q(ypp),
+ q(7654) => q(ypz),
+ q(7655) => q(yra),
+ q(7656) => q(yrb),
+ q(7657) => q(yre),
+ q(7658) => q(yri),
+ q(7659) => q(yrk),
+ q(7660) => q(yrl),
+ q(7661) => q(yrn),
+ q(7662) => q(yrs),
+ q(7663) => q(yrw),
+ q(7664) => q(ysc),
+ q(7665) => q(ysd),
+ q(7666) => q(ysg),
+ q(7667) => q(ysl),
+ q(7668) => q(ysn),
+ q(7669) => q(yso),
+ q(7670) => q(ysp),
+ q(7671) => q(ysr),
+ q(7672) => q(yss),
+ q(7673) => q(ysy),
+ q(7674) => q(yta),
+ q(7675) => q(ytl),
+ q(7676) => q(ytp),
+ q(7677) => q(ytw),
+ q(7678) => q(yua),
+ q(7679) => q(yub),
+ q(7680) => q(yuc),
+ q(7681) => q(yud),
+ q(7682) => q(yue),
+ q(7683) => q(yuf),
+ q(7684) => q(yug),
+ q(7685) => q(yui),
+ q(7686) => q(yuj),
+ q(7687) => q(yuk),
+ q(7688) => q(yul),
+ q(7689) => q(yum),
+ q(7690) => q(yun),
+ q(7691) => q(yup),
+ q(7692) => q(yuq),
+ q(7693) => q(yur),
+ q(7694) => q(yut),
+ q(7695) => q(yuu),
+ q(7696) => q(yuw),
+ q(7697) => q(yux),
+ q(7698) => q(yuy),
+ q(7699) => q(yuz),
+ q(7700) => q(yva),
+ q(7701) => q(yvt),
+ q(7702) => q(ywa),
+ q(7703) => q(ywl),
+ q(7704) => q(ywn),
+ q(7705) => q(ywq),
+ q(7706) => q(ywr),
+ q(7707) => q(ywt),
+ q(7708) => q(ywu),
+ q(7709) => q(yww),
+ q(7710) => q(yxg),
+ q(7711) => q(yxy),
+ q(7712) => q(yyu),
+ q(7713) => q(yyz),
+ q(7714) => q(yzg),
+ q(7715) => q(yzk),
+ q(7716) => q(zaa),
+ q(7717) => q(zab),
+ q(7718) => q(zac),
+ q(7719) => q(zad),
+ q(7720) => q(zae),
+ q(7721) => q(zaf),
+ q(7722) => q(zag),
+ q(7723) => q(zah),
+ q(7724) => q(zai),
+ q(7725) => q(zaj),
+ q(7726) => q(zak),
+ q(7727) => q(zal),
+ q(7728) => q(zam),
+ q(7729) => q(zao),
+ q(7730) => q(zaq),
+ q(7731) => q(zar),
+ q(7732) => q(zas),
+ q(7733) => q(zat),
+ q(7734) => q(zau),
+ q(7735) => q(zav),
+ q(7736) => q(zaw),
+ q(7737) => q(zax),
+ q(7738) => q(zay),
+ q(7739) => q(zaz),
+ q(7740) => q(zbc),
+ q(7741) => q(zbe),
+ q(7742) => q(zbt),
+ q(7743) => q(zbw),
+ q(7744) => q(zca),
+ q(7745) => q(zch),
+ q(7746) => q(zdj),
+ q(7747) => q(zea),
+ q(7748) => q(zeg),
+ q(7749) => q(zeh),
+ q(7750) => q(zga),
+ q(7751) => q(zgb),
+ q(7752) => q(zgm),
+ q(7753) => q(zgn),
+ q(7754) => q(zgr),
+ q(7755) => q(zhb),
+ q(7756) => q(zhd),
+ q(7757) => q(zhi),
+ q(7758) => q(zhn),
+ q(7759) => q(zhw),
+ q(7760) => q(zia),
+ q(7761) => q(zib),
+ q(7762) => q(zik),
+ q(7763) => q(zil),
+ q(7764) => q(zim),
+ q(7765) => q(zin),
+ q(7766) => q(zir),
+ q(7767) => q(ziw),
+ q(7768) => q(ziz),
+ q(7769) => q(zka),
+ q(7770) => q(zkb),
+ q(7771) => q(zkd),
+ q(7772) => q(zkg),
+ q(7773) => q(zkh),
+ q(7774) => q(zkk),
+ q(7775) => q(zkn),
+ q(7776) => q(zko),
+ q(7777) => q(zkp),
+ q(7778) => q(zkr),
+ q(7779) => q(zkt),
+ q(7780) => q(zku),
+ q(7781) => q(zkv),
+ q(7782) => q(zkz),
+ q(7783) => q(zlj),
+ q(7784) => q(zlm),
+ q(7785) => q(zln),
+ q(7786) => q(zlq),
+ q(7787) => q(zma),
+ q(7788) => q(zmb),
+ q(7789) => q(zmc),
+ q(7790) => q(zmd),
+ q(7791) => q(zme),
+ q(7792) => q(zmf),
+ q(7793) => q(zmg),
+ q(7794) => q(zmh),
+ q(7795) => q(zmi),
+ q(7796) => q(zmj),
+ q(7797) => q(zmk),
+ q(7798) => q(zml),
+ q(7799) => q(zmm),
+ q(7800) => q(zmn),
+ q(7801) => q(zmo),
+ q(7802) => q(zmp),
+ q(7803) => q(zmq),
+ q(7804) => q(zmr),
+ q(7805) => q(zms),
+ q(7806) => q(zmt),
+ q(7807) => q(zmu),
+ q(7808) => q(zmv),
+ q(7809) => q(zmw),
+ q(7810) => q(zmx),
+ q(7811) => q(zmy),
+ q(7812) => q(zmz),
+ q(7813) => q(zna),
+ q(7814) => q(zne),
+ q(7815) => q(zng),
+ q(7816) => q(znk),
+ q(7817) => q(zns),
+ q(7818) => q(zoc),
+ q(7819) => q(zoh),
+ q(7820) => q(zom),
+ q(7821) => q(zoo),
+ q(7822) => q(zoq),
+ q(7823) => q(zor),
+ q(7824) => q(zos),
+ q(7825) => q(zpa),
+ q(7826) => q(zpb),
+ q(7827) => q(zpc),
+ q(7828) => q(zpd),
+ q(7829) => q(zpe),
+ q(7830) => q(zpf),
+ q(7831) => q(zpg),
+ q(7832) => q(zph),
+ q(7833) => q(zpi),
+ q(7834) => q(zpj),
+ q(7835) => q(zpk),
+ q(7836) => q(zpl),
+ q(7837) => q(zpm),
+ q(7838) => q(zpn),
+ q(7839) => q(zpo),
+ q(7840) => q(zpp),
+ q(7841) => q(zpq),
+ q(7842) => q(zpr),
+ q(7843) => q(zps),
+ q(7844) => q(zpt),
+ q(7845) => q(zpu),
+ q(7846) => q(zpv),
+ q(7847) => q(zpw),
+ q(7848) => q(zpx),
+ q(7849) => q(zpy),
+ q(7850) => q(zpz),
+ q(7851) => q(zqe),
+ q(7852) => q(zra),
+ q(7853) => q(zrg),
+ q(7854) => q(zrn),
+ q(7855) => q(zro),
+ q(7856) => q(zrp),
+ q(7857) => q(zrs),
+ q(7858) => q(zsa),
+ q(7859) => q(zsk),
+ q(7860) => q(zsl),
+ q(7861) => q(zsm),
+ q(7862) => q(zsr),
+ q(7863) => q(zsu),
+ q(7864) => q(zte),
+ q(7865) => q(ztg),
+ q(7866) => q(ztl),
+ q(7867) => q(ztm),
+ q(7868) => q(ztn),
+ q(7869) => q(ztp),
+ q(7870) => q(ztq),
+ q(7871) => q(zts),
+ q(7872) => q(ztt),
+ q(7873) => q(ztu),
+ q(7874) => q(ztx),
+ q(7875) => q(zty),
+ q(7876) => q(zua),
+ q(7877) => q(zuh),
+ q(7878) => q(zum),
+ q(7879) => q(zuy),
+ q(7880) => q(zwa),
+ q(7881) => q(zyb),
+ q(7882) => q(zyg),
+ q(7883) => q(zyj),
+ q(7884) => q(zyn),
+ q(7885) => q(zyp),
+ q(7886) => q(zzj),
},
q(term) => {
q(0013) => q(sqi),
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language_Retired.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language_Retired.pm
index d256d3a21a4..57bf2078e14 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language_Retired.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Language_Retired.pm
@@ -2,7 +2,7 @@ package Locale::Codes::Language_Retired;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'deprecate_codes' is run.
-# Generated on: Thu Mar 1 08:11:47 EST 2012
+# Generated on: Wed Feb 27 10:06:46 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,140 +33,233 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
+$VERSION='3.25';
$Locale::Codes::Retired{'language'}{'alpha-2'}{'code'} = {
- q(jw) => q(Javanese),
q(in) => q(Indonesian),
q(iw) => q(Hebrew),
- q(mo) => q(Moldavian),
q(ji) => q(Yiddish),
+ q(jw) => q(Javanese),
+ q(mo) => q(Moldavian),
};
$Locale::Codes::Retired{'language'}{'alpha-3'}{'code'} = {
+ q(ayx) => q(Ayi (China)),
+ q(baz) => q(Tunen),
+ q(bjd) => q(Bandjigali),
q(bjq) => q(Southern Betsimisaraka Malagasy),
+ q(ccq) => q(Chaungtha),
+ q(cka) => q(Khumi Awa Chin),
+ q(dap) => q(Nisi (India)),
q(dha) => q(Dhanwar (India)),
q(dkl) => q(Kolum So Dogon),
+ q(dwl) => q(Walo Kumbe Dogon),
+ q(elp) => q(Elpaputih),
+ q(gbc) => q(Garawa),
+ q(gio) => q(Gelao),
+ q(hrr) => q(Horuru),
+ q(ibi) => q(Ibilo),
+ q(jar) => q(Jarawa (Nigeria)),
+ q(kdv) => q(Kado),
+ q(kgh) => q(Upper Tanudan Kalinga),
+ q(kpp) => q(Paku Karen),
+ q(kzh) => q(Kenuzi-Dongola),
+ q(lcq) => q(Luhu),
+ q(mgx) => q(Omati),
+ q(mja) => q(Mahei),
q(nbf) => q(Naxi),
+ q(nln) => q(Durango Nahuatl),
+ q(noo) => q(Nootka),
+ q(pbz) => q(Palu),
+ q(pgy) => q(Pongyong),
+ q(sca) => q(Sansu),
q(tie) => q(Tingal),
- q(mja) => q(Mahei),
q(tkk) => q(Takpa),
- q(ayx) => q(Ayi (China)),
- q(noo) => q(Nootka),
+ q(tlw) => q(South Wemale),
+ q(unp) => q(Worora),
+ q(wiw) => q(Wirangu),
+ q(ybd) => q(Yangbye),
+ q(yen) => q(Yendang),
+ q(yma) => q(Yamphe),
};
$Locale::Codes::Retired{'language'}{'term'}{'code'} = {
};
$Locale::Codes::Retired{'language'}{'alpha-2'}{'name'} = {
- q(kirundi) => [ q(rn), q(Kirundi) ],
- q(latvian, lettish) => [ q(lv), q(Latvian, Lettish) ],
- q(moldavian) => [ q(mo), q(Moldavian) ],
- q(greek, modern (1453-)) => [ q(el), q(Greek, Modern (1453-)) ],
- q(volapük) => [ q(vo), q(Volapük) ],
- q(frisian) => [ q(fy), q(Frisian) ],
+ q((afan) oromo) => [ q(om), q((Afan) Oromo) ],
+ q(bengali; bangla) => [ q(bn), q(Bengali; Bangla) ],
+ q(bhutani) => [ q(dz), q(Bhutani) ],
q(bihari) => [ q(bh), q(Bihari) ],
- q(malay) => [ q(ms), q(Malay) ],
q(byelorussian) => [ q(be), q(Byelorussian) ],
- q(sotho, southern) => [ q(st), q(Sotho, Southern) ],
- q(norwegian bokmal) => [ q(nb), q(Norwegian Bokmal) ],
- q(greek) => [ q(el), q(Greek) ],
+ q(cambodian) => [ q(km), q(Cambodian) ],
+ q(chichewa; nyanja) => [ q(ny), q(Chichewa; Nyanja) ],
q(faeroese) => [ q(fo), q(Faeroese) ],
- q((afan) oromo) => [ q(om), q((Afan) Oromo) ],
- q(laothian) => [ q(lo), q(Laothian) ],
+ q(fiji) => [ q(fj), q(Fiji) ],
+ q(frisian) => [ q(fy), q(Frisian) ],
+ q(gaelic (scots)) => [ q(gd), q(Gaelic (Scots)) ],
+ q(gallegan) => [ q(gl), q(Gallegan) ],
+ q(greek) => [ q(el), q(Greek) ],
+ q(greek, modern (1453-)) => [ q(el), q(Greek, Modern (1453-)) ],
+ q(greenlandic) => [ q(kl), q(Greenlandic) ],
+ q(interlingua) => [ q(ia), q(Interlingua) ],
+ q(inupiak) => [ q(ik), q(Inupiak) ],
q(khmer) => [ q(km), q(Khmer) ],
- q(norwegian bokmål) => [ q(nb), q(Norwegian Bokmål) ],
+ q(kirundi) => [ q(rn), q(Kirundi) ],
+ q(laothian) => [ q(lo), q(Laothian) ],
+ q(latvian, lettish) => [ q(lv), q(Latvian, Lettish) ],
+ q(letzeburgesch) => [ q(lb), q(Letzeburgesch) ],
+ q(malay) => [ q(ms), q(Malay) ],
q(marshall) => [ q(mh), q(Marshall) ],
- q(scots gaelic) => [ q(gd), q(Scots Gaelic) ],
- q(bhutani) => [ q(dz), q(Bhutani) ],
- q(singhalese) => [ q(si), q(Singhalese) ],
- q(bengali; bangla) => [ q(bn), q(Bengali; Bangla) ],
- q(chichewa; nyanja) => [ q(ny), q(Chichewa; Nyanja) ],
- q(inupiak) => [ q(ik), q(Inupiak) ],
- q(greenlandic) => [ q(kl), q(Greenlandic) ],
- q(sangro) => [ q(sg), q(Sangro) ],
+ q(moldavian) => [ q(mo), q(Moldavian) ],
+ q(nepali) => [ q(ne), q(Nepali) ],
+ q(norwegian bokmal) => [ q(nb), q(Norwegian Bokmal) ],
+ q(occitan) => [ q(oc), q(Occitan) ],
+ q(oriya) => [ q(or), q(Oriya) ],
q(ossetian; ossetic) => [ q(os), q(Ossetian; Ossetic) ],
+ q(pashto, pushto) => [ q(ps), q(Pashto, Pushto) ],
+ q(punjabi) => [ q(pa), q(Punjabi) ],
+ q(rhaeto-romance) => [ q(rm), q(Rhaeto-Romance) ],
q(sami) => [ q(se), q(Sami) ],
+ q(sangro) => [ q(sg), q(Sangro) ],
+ q(scots gaelic) => [ q(gd), q(Scots Gaelic) ],
+ q(sesotho) => [ q(st), q(Sesotho) ],
q(setswana) => [ q(tn), q(Setswana) ],
- q(punjabi) => [ q(pa), q(Punjabi) ],
- q(tegulu) => [ q(te), q(Tegulu) ],
- q(sotho) => [ q(st), q(Sotho) ],
- q(cambodian) => [ q(km), q(Cambodian) ],
- q(tonga) => [ q(to), q(Tonga) ],
- q(interlingua) => [ q(ia), q(Interlingua) ],
+ q(singhalese) => [ q(si), q(Singhalese) ],
q(sinhalese) => [ q(si), q(Sinhalese) ],
- q(rhaeto-romance) => [ q(rm), q(Rhaeto-Romance) ],
- q(gallegan) => [ q(gl), q(Gallegan) ],
- q(swahili) => [ q(sw), q(Swahili) ],
- q(occitan) => [ q(oc), q(Occitan) ],
- q(gaelic (scots)) => [ q(gd), q(Gaelic (Scots)) ],
- q(letzeburgesch) => [ q(lb), q(Letzeburgesch) ],
q(siswati) => [ q(ss), q(Siswati) ],
- q(pashto, pushto) => [ q(ps), q(Pashto, Pushto) ],
- q(fiji) => [ q(fj), q(Fiji) ],
- q(sesotho) => [ q(st), q(Sesotho) ],
+ q(sotho) => [ q(st), q(Sotho) ],
+ q(sotho, southern) => [ q(st), q(Sotho, Southern) ],
+ q(swahili) => [ q(sw), q(Swahili) ],
+ q(tegulu) => [ q(te), q(Tegulu) ],
+ q(tonga) => [ q(to), q(Tonga) ],
+ q(volapuk) => [ q(vo), q(Volapuk) ],
};
$Locale::Codes::Retired{'language'}{'alpha-3'}{'name'} = {
- q(dhanwar (india)) => [ q(dha), q(Dhanwar (India)) ],
+ q(ainu) => [ q(ain), q(Ainu) ],
+ q(amarag) => [ q(amg), q(Amarag) ],
+ q(anu) => [ q(anl), q(Anu) ],
+ q(apalik) => [ q(apo), q(Apalik) ],
q(ayi (china)) => [ q(ayx), q(Ayi (China)) ],
- q(dutch, middle (ca.1050-1350)) => [ q(dum), q(Dutch, Middle (ca.1050-1350)) ],
- q(hainyaxo bozo) => [ q(bzx), q(Hainyaxo Bozo) ],
- q(dogri) => [ q(doi), q(Dogri) ],
- q(waray) => [ q(war), q(Waray) ],
- q(kumak) => [ q(nee), q(Kumak) ],
- q(kwato) => [ q(kop), q(Kwato) ],
+ q(bandjigali) => [ q(bjd), q(Bandjigali) ],
+ q(bantu (other)) => [ q(bnt), q(Bantu (Other)) ],
+ q(basa) => [ q(bas), q(Basa) ],
+ q(begbere-ejar) => [ q(bqv), q(Begbere-Ejar) ],
+ q(bekwil) => [ q(bkw), q(Bekwil) ],
+ q(bemba) => [ q(bem), q(Bemba) ],
+ q(brek karen) => [ q(kvl), q(Brek Karen) ],
+ q(burum-mindik) => [ q(bmu), q(Burum-Mindik) ],
+ q(central bicolano) => [ q(bcl), q(Central Bicolano) ],
+ q(chaungtha) => [ q(ccq), q(Chaungtha) ],
q(creoles and pidgins ) => [ q(crp), q(Creoles and pidgins ) ],
- q(nung (myanmar)) => [ q(nun), q(Nung (Myanmar)) ],
- q(mende) => [ q(men), q(Mende) ],
- q(english, middle (1100-1500)) => [ q(enm), q(English, Middle (1100-1500)) ],
- q(ounge) => [ q(oue), q(Ounge) ],
- q(dumpu) => [ q(wtf), q(Dumpu) ],
- q(turkish, ottoman (1500-1928)) => [ q(ota), q(Turkish, Ottoman (1500-1928)) ],
- q(kag-fer-jiir-koor-ror-us-zuksun) => [ q(gel), q(Kag-Fer-Jiir-Koor-Ror-Us-Zuksun) ],
+ q(creoles and pidgins, english based) => [ q(cpe), q(Creoles and pidgins, English based) ],
+ q(creoles and pidgins, french-based ) => [ q(cpf), q(Creoles and pidgins, French-based ) ],
q(creoles and pidgins, portuguese-based ) => [ q(cpp), q(Creoles and pidgins, Portuguese-based ) ],
- q(provencal, old (to 1500)) => [ q(pro), q(Provencal, Old (to 1500)) ],
+ q(darling) => [ q(drl), q(Darling) ],
+ q(dhanwar (india)) => [ q(dha), q(Dhanwar (India)) ],
+ q(dogri) => [ q(doi), q(Dogri) ],
+ q(duduela) => [ q(duk), q(Duduela) ],
+ q(dumpu) => [ q(wtf), q(Dumpu) ],
+ q(durango nahuatl) => [ q(nln), q(Durango Nahuatl) ],
+ q(dutch, middle (ca.1050-1350)) => [ q(dum), q(Dutch, Middle (ca.1050-1350)) ],
+ q(elpaputih) => [ q(elp), q(Elpaputih) ],
+ q(english, middle (1100-1500)) => [ q(enm), q(English, Middle (1100-1500)) ],
+ q(english, old (ca.450-1100)) => [ q(ang), q(English, Old (ca.450-1100)) ],
q(fang) => [ q(fan), q(Fang) ],
- q(miri) => [ q(mrg), q(Miri) ],
- q(yonggom) => [ q(yon), q(Yonggom) ],
- q(bemba) => [ q(bem), q(Bemba) ],
- q(kamba) => [ q(kam), q(Kamba) ],
- q(konkani) => [ q(kok), q(Konkani) ],
- q(south american indian (other)) => [ q(sai), q(South American Indian (Other)) ],
- q(creoles and pidgins, english based) => [ q(cpe), q(Creoles and pidgins, English based) ],
- q(basa) => [ q(bas), q(Basa) ],
- q(german, old high (ca.750-1050)) => [ q(goh), q(German, Old High (ca.750-1050)) ],
- q(nakama) => [ q(nib), q(Nakama) ],
- q(norse, old) => [ q(non), q(Norse, Old) ],
- q(gbaya) => [ q(gba), q(Gbaya) ],
- q(mahei) => [ q(mja), q(Mahei) ],
- q(german, middle high (ca.1050-1500)) => [ q(gmh), q(German, Middle High (ca.1050-1500)) ],
q(french, middle (ca.1400-1600)) => [ q(frm), q(French, Middle (ca.1400-1600)) ],
- q(duduela) => [ q(duk), q(Duduela) ],
- q(burum-mindik) => [ q(bmu), q(Burum-Mindik) ],
- q(mbedam) => [ q(xmd), q(Mbedam) ],
- q(kolum so dogon) => [ q(dkl), q(Kolum So Dogon) ],
- q(tingal) => [ q(tie), q(Tingal) ],
- q(ainu) => [ q(ain), q(Ainu) ],
q(french, old (842-ca.1400)) => [ q(fro), q(French, Old (842-ca.1400)) ],
- q(nootka) => [ q(noo), q(Nootka) ],
+ q(garawa) => [ q(gbc), q(Garawa) ],
+ q(gbaya) => [ q(gba), q(Gbaya) ],
+ q(gelao) => [ q(gio), q(Gelao) ],
+ q(german, middle high (ca.1050-1500)) => [ q(gmh), q(German, Middle High (ca.1050-1500)) ],
+ q(german, old high (ca.750-1050)) => [ q(goh), q(German, Old High (ca.750-1050)) ],
+ q(greek, ancient (to 1453)) => [ q(grc), q(Greek, Ancient (to 1453)) ],
+ q(hainyaxo bozo) => [ q(bzx), q(Hainyaxo Bozo) ],
+ q(horuru) => [ q(hrr), q(Horuru) ],
+ q(ibilo) => [ q(ibi), q(Ibilo) ],
+ q(idun) => [ q(ldb), q(Idun) ],
+ q(ikobi-mena) => [ q(meb), q(Ikobi-Mena) ],
q(irish, middle (900-1200)) => [ q(mga), q(Irish, Middle (900-1200)) ],
q(irish, old (to 900)) => [ q(sga), q(Irish, Old (to 900)) ],
+ q(jarawa (nigeria)) => [ q(jar), q(Jarawa (Nigeria)) ],
+ q(kadara) => [ q(kad), q(Kadara) ],
+ q(kado) => [ q(kdv), q(Kado) ],
+ q(kag-fer-jiir-koor-ror-us-zuksun) => [ q(gel), q(Kag-Fer-Jiir-Koor-Ror-Us-Zuksun) ],
+ q(kamba) => [ q(kam), q(Kamba) ],
+ q(kemezung) => [ q(dmo), q(Kemezung) ],
+ q(kenuzi-dongola) => [ q(kzh), q(Kenuzi-Dongola) ],
+ q(khumi awa chin) => [ q(cka), q(Khumi Awa Chin) ],
+ q(kol) => [ q(ekl), q(Kol) ],
+ q(kolum so dogon) => [ q(dkl), q(Kolum So Dogon) ],
+ q(konkani) => [ q(kok), q(Konkani) ],
+ q(kumak) => [ q(nee), q(Kumak) ],
+ q(kutang ghale) => [ q(ght), q(Kutang Ghale) ],
+ q(kwato) => [ q(kop), q(Kwato) ],
+ q(lowa) => [ q(loy), q(Lowa) ],
+ q(lower tanudan kalinga) => [ q(kml), q(Lower Tanudan Kalinga) ],
+ q(luhu) => [ q(lcq), q(Luhu) ],
+ q(mahei) => [ q(mja), q(Mahei) ],
+ q(malasanga) => [ q(mqz), q(Malasanga) ],
q(mari) => [ q(chm), q(Mari) ],
- q(bekwil) => [ q(bkw), q(Bekwil) ],
- q(walamo) => [ q(wal), q(Walamo) ],
- q(greek, ancient (to 1453)) => [ q(grc), q(Greek, Ancient (to 1453)) ],
- q(bantu (other)) => [ q(bnt), q(Bantu (Other)) ],
- q(apalik) => [ q(apo), q(Apalik) ],
- q(creoles and pidgins, french-based ) => [ q(cpf), q(Creoles and pidgins, French-based ) ],
+ q(mbedam) => [ q(xmd), q(Mbedam) ],
+ q(mende) => [ q(men), q(Mende) ],
+ q(mire) => [ q(mvh), q(Mire) ],
+ q(miri) => [ q(mrg), q(Miri) ],
+ q(misima-paneati) => [ q(mpx), q(Misima-Paneati) ],
+ q(mpongmpong) => [ q(mgg), q(Mpongmpong) ],
+ q(mro chin) => [ q(cmr), q(Mro Chin) ],
+ q(muduapa) => [ q(wiv), q(Muduapa) ],
+ q(nakama) => [ q(nib), q(Nakama) ],
+ q(nanggu) => [ q(ngr), q(Nanggu) ],
+ q(nangikurrunggurr) => [ q(nam), q(Nangikurrunggurr) ],
+ q(nga la) => [ q(hlt), q(Nga La) ],
+ q(nisi (india)) => [ q(dap), q(Nisi (India)) ],
+ q(nootka) => [ q(noo), q(Nootka) ],
+ q(norse, old) => [ q(non), q(Norse, Old) ],
+ q(north wemale) => [ q(weo), q(North Wemale) ],
+ q(northern catanduanes bicolano) => [ q(cts), q(Northern Catanduanes Bicolano) ],
+ q(northern lorung) => [ q(lbr), q(Northern Lorung) ],
+ q(nung (myanmar)) => [ q(nun), q(Nung (Myanmar)) ],
+ q(omati) => [ q(mgx), q(Omati) ],
+ q(ounge) => [ q(oue), q(Ounge) ],
+ q(palu) => [ q(pbz), q(Palu) ],
q(persian, old (ca.600-400 b.c.)) => [ q(peo), q(Persian, Old (ca.600-400 B.C.)) ],
+ q(pongyong) => [ q(pgy), q(Pongyong) ],
+ q(provencal, old (to 1500)) => [ q(pro), q(Provencal, Old (to 1500)) ],
+ q(sakam) => [ q(skm), q(Sakam) ],
+ q(sansu) => [ q(sca), q(Sansu) ],
+ q(sauk) => [ q(skc), q(Sauk) ],
+ q(sepen) => [ q(spm), q(Sepen) ],
+ q(shangzhai) => [ q(jih), q(Shangzhai) ],
+ q(so (cameroon)) => [ q(sox), q(So (Cameroon)) ],
+ q(south american indian (other)) => [ q(sai), q(South American Indian (Other)) ],
+ q(south wemale) => [ q(tlw), q(South Wemale) ],
+ q(southern catanduanes bicolano) => [ q(bln), q(Southern Catanduanes Bicolano) ],
+ q(southern lorung) => [ q(lrr), q(Southern Lorung) ],
+ q(sulung) => [ q(suv), q(Sulung) ],
q(takpa) => [ q(tkk), q(Takpa) ],
- q(english, old (ca.450-1100)) => [ q(ang), q(English, Old (ca.450-1100)) ],
+ q(tangkhul naga) => [ q(nmf), q(Tangkhul Naga) ],
+ q(tina sambal) => [ q(xsb), q(Tina Sambal) ],
+ q(tingal) => [ q(tie), q(Tingal) ],
+ q(turkish, ottoman (1500-1928)) => [ q(ota), q(Turkish, Ottoman (1500-1928)) ],
+ q(upper tanudan kalinga) => [ q(kgh), q(Upper Tanudan Kalinga) ],
+ q(walamo) => [ q(wal), q(Walamo) ],
+ q(walo kumbe dogon) => [ q(dwl), q(Walo Kumbe Dogon) ],
+ q(waray) => [ q(war), q(Waray) ],
+ q(welaung) => [ q(weu), q(Welaung) ],
q(were) => [ q(wei), q(Were) ],
+ q(western canadian inuktitut) => [ q(ikt), q(Western Canadian Inuktitut) ],
+ q(worora) => [ q(unp), q(Worora) ],
+ q(yamphe) => [ q(yma), q(Yamphe) ],
+ q(yangbye) => [ q(ybd), q(Yangbye) ],
+ q(yeskwa) => [ q(yes), q(Yeskwa) ],
+ q(yonggom) => [ q(yon), q(Yonggom) ],
};
$Locale::Codes::Retired{'language'}{'term'}{'name'} = {
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script.pm
index 0f098c5f33c..cd1f1c8d33e 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script.pm
@@ -1,13 +1,13 @@
package Locale::Codes::Script;
# Copyright (C) 2001 Canon Research Centre Europe (CRE).
# Copyright (C) 2002-2009 Neil Bowers
-# Copyright (c) 2010-2012 Sullivan Beck
+# Copyright (c) 2010-2013 Sullivan Beck
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
use strict;
+require 5.006;
use warnings;
-require 5.002;
require Exporter;
use Carp;
@@ -22,7 +22,7 @@ use Locale::Codes::Script_Retired;
our($VERSION,@ISA,@EXPORT,@EXPORT_OK);
-$VERSION='3.21';
+$VERSION='3.25';
@ISA = qw(Exporter);
@EXPORT = qw(code2script
script2code
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script.pod
index 7540c553acc..86f6dd5a332 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script.pod
@@ -123,7 +123,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm
index 24708058ea8..15a04eb0c17 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm
@@ -2,7 +2,7 @@ package Locale::Codes::Script_Codes;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'get_codes' is run.
-# Generated on: Thu Mar 1 08:07:26 EST 2012
+# Generated on: Wed Feb 27 10:04:29 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,565 +33,574 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
+$VERSION='3.25';
-$Locale::Codes::Data{'script'}{'id'} = '0159';
+$Locale::Codes::Data{'script'}{'id'} = '0161';
$Locale::Codes::Data{'script'}{'id2names'} = {
q(0001) => [
q(Afaka),
],
q(0002) => [
- q(Arabic),
+ q(Caucasian Albanian),
],
q(0003) => [
- q(Imperial Aramaic),
+ q(Arabic),
],
q(0004) => [
- q(Armenian),
+ q(Imperial Aramaic),
],
q(0005) => [
- q(Avestan),
+ q(Armenian),
],
q(0006) => [
- q(Balinese),
+ q(Avestan),
],
q(0007) => [
- q(Bamum),
+ q(Balinese),
],
q(0008) => [
- q(Bassa Vah),
+ q(Bamum),
],
q(0009) => [
- q(Batak),
+ q(Bassa Vah),
],
q(0010) => [
- q(Bengali),
+ q(Batak),
],
q(0011) => [
- q(Blissymbols),
+ q(Bengali),
],
q(0012) => [
- q(Bopomofo),
+ q(Blissymbols),
],
q(0013) => [
- q(Brahmi),
+ q(Bopomofo),
],
q(0014) => [
- q(Braille),
+ q(Brahmi),
],
q(0015) => [
- q(Buginese),
+ q(Braille),
],
q(0016) => [
- q(Buhid),
+ q(Buginese),
],
q(0017) => [
- q(Chakma),
+ q(Buhid),
],
q(0018) => [
- q(Unified Canadian Aboriginal Syllabics),
+ q(Chakma),
],
q(0019) => [
- q(Carian),
+ q(Unified Canadian Aboriginal Syllabics),
],
q(0020) => [
- q(Cham),
+ q(Carian),
],
q(0021) => [
- q(Cherokee),
+ q(Cham),
],
q(0022) => [
- q(Cirth),
+ q(Cherokee),
],
q(0023) => [
- q(Coptic),
+ q(Cirth),
],
q(0024) => [
- q(Cypriot),
+ q(Coptic),
],
q(0025) => [
- q(Cyrillic),
+ q(Cypriot),
],
q(0026) => [
- q(Cyrillic (Old Church Slavonic variant)),
+ q(Cyrillic),
],
q(0027) => [
+ q(Cyrillic (Old Church Slavonic variant)),
+ ],
+ q(0028) => [
q(Devanagari (Nagari)),
q(Devanagari),
q(Nagari),
],
- q(0028) => [
+ q(0029) => [
q(Deseret (Mormon)),
q(Deseret),
q(Mormon),
],
- q(0029) => [
+ q(0030) => [
q(Duployan shorthand, Duployan stenography),
q(Duployan shorthand),
q(Duployan stenography),
],
- q(0030) => [
+ q(0031) => [
q(Egyptian demotic),
],
- q(0031) => [
+ q(0032) => [
q(Egyptian hieratic),
],
- q(0032) => [
+ q(0033) => [
q(Egyptian hieroglyphs),
],
- q(0033) => [
+ q(0034) => [
q(Elbasan),
],
- q(0034) => [
+ q(0035) => [
q(Ethiopic (Geez)),
q(Ethiopic),
q(Ge'ez),
],
- q(0035) => [
+ q(0036) => [
q(Georgian (Mkhedruli)),
],
- q(0036) => [
+ q(0037) => [
q(Khutsuri (Asomtavruli and Nuskhuri)),
],
- q(0037) => [
+ q(0038) => [
q(Glagolitic),
],
- q(0038) => [
+ q(0039) => [
q(Gothic),
],
- q(0039) => [
+ q(0040) => [
q(Grantha),
],
- q(0040) => [
+ q(0041) => [
q(Greek),
],
- q(0041) => [
+ q(0042) => [
q(Gujarati),
],
- q(0042) => [
+ q(0043) => [
q(Gurmukhi),
],
- q(0043) => [
+ q(0044) => [
q(Hangul (Hangul, Hangeul)),
q(Hangul),
q(Hangeul),
],
- q(0044) => [
+ q(0045) => [
q(Han (Hanzi, Kanji, Hanja)),
q(Han),
q(Hanzi),
q(Kanji),
q(Hanja),
],
- q(0045) => [
+ q(0046) => [
q(Hanunoo (Hanunoo)),
q(Hanunoo),
],
- q(0046) => [
+ q(0047) => [
q(Han (Simplified variant)),
],
- q(0047) => [
+ q(0048) => [
q(Han (Traditional variant)),
],
- q(0048) => [
+ q(0049) => [
q(Hebrew),
],
- q(0049) => [
+ q(0050) => [
q(Hiragana),
],
- q(0050) => [
+ q(0051) => [
q(Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs)),
q(Anatolian Hieroglyphs),
q(Luwian Hieroglyphs),
q(Hittite Hieroglyphs),
],
- q(0051) => [
+ q(0052) => [
q(Pahawh Hmong),
],
- q(0052) => [
+ q(0053) => [
q(Japanese syllabaries (alias for Hiragana + Katakana)),
],
- q(0053) => [
+ q(0054) => [
+ q(Old Hungarian (Hungarian Runic)),
q(Old Hungarian),
+ q(Hungarian Runic),
],
- q(0054) => [
+ q(0055) => [
q(Indus (Harappan)),
q(Indus),
q(Harappan),
],
- q(0055) => [
+ q(0056) => [
q(Old Italic (Etruscan, Oscan, etc.)),
],
- q(0056) => [
+ q(0057) => [
q(Javanese),
],
- q(0057) => [
+ q(0058) => [
q(Japanese (alias for Han + Hiragana + Katakana)),
],
- q(0058) => [
+ q(0059) => [
q(Jurchen),
],
- q(0059) => [
+ q(0060) => [
q(Kayah Li),
],
- q(0060) => [
+ q(0061) => [
q(Katakana),
],
- q(0061) => [
+ q(0062) => [
q(Kharoshthi),
],
- q(0062) => [
+ q(0063) => [
q(Khmer),
],
- q(0063) => [
+ q(0064) => [
q(Khojki),
],
- q(0064) => [
+ q(0065) => [
q(Kannada),
],
- q(0065) => [
+ q(0066) => [
q(Korean (alias for Hangul + Han)),
],
- q(0066) => [
+ q(0067) => [
q(Kpelle),
],
- q(0067) => [
+ q(0068) => [
q(Kaithi),
],
- q(0068) => [
+ q(0069) => [
q(Tai Tham (Lanna)),
q(Tai Tham),
q(Lanna),
],
- q(0069) => [
+ q(0070) => [
q(Lao),
],
- q(0070) => [
+ q(0071) => [
q(Latin (Fraktur variant)),
],
- q(0071) => [
+ q(0072) => [
q(Latin (Gaelic variant)),
],
- q(0072) => [
+ q(0073) => [
q(Latin),
],
- q(0073) => [
+ q(0074) => [
q(Lepcha (Rong)),
q(Lepcha),
q(Rong),
],
- q(0074) => [
+ q(0075) => [
q(Limbu),
],
- q(0075) => [
+ q(0076) => [
q(Linear A),
],
- q(0076) => [
+ q(0077) => [
q(Linear B),
],
- q(0077) => [
+ q(0078) => [
q(Lisu (Fraser)),
q(Lisu),
q(Fraser),
],
- q(0078) => [
+ q(0079) => [
q(Loma),
],
- q(0079) => [
+ q(0080) => [
q(Lycian),
],
- q(0080) => [
+ q(0081) => [
q(Lydian),
],
- q(0081) => [
+ q(0082) => [
+ q(Mahajani),
+ ],
+ q(0083) => [
q(Mandaic, Mandaean),
q(Mandaic),
q(Mandaean),
],
- q(0082) => [
+ q(0084) => [
q(Manichaean),
],
- q(0083) => [
+ q(0085) => [
q(Mayan hieroglyphs),
],
- q(0084) => [
+ q(0086) => [
q(Mende),
],
- q(0085) => [
+ q(0087) => [
q(Meroitic Cursive),
],
- q(0086) => [
+ q(0088) => [
q(Meroitic Hieroglyphs),
],
- q(0087) => [
+ q(0089) => [
q(Malayalam),
],
- q(0088) => [
+ q(0090) => [
q(Moon (Moon code, Moon script, Moon type)),
q(Moon),
q(Moon code),
q(Moon script),
q(Moon type),
],
- q(0089) => [
+ q(0091) => [
q(Mongolian),
],
- q(0090) => [
+ q(0092) => [
q(Mro, Mru),
q(Mro),
q(Mru),
],
- q(0091) => [
+ q(0093) => [
q(Meitei Mayek (Meithei, Meetei)),
q(Meitei Mayek),
q(Meithei),
q(Meetei),
],
- q(0092) => [
+ q(0094) => [
q(Myanmar (Burmese)),
q(Myanmar),
q(Burmese),
],
- q(0093) => [
+ q(0095) => [
q(Old North Arabian (Ancient North Arabian)),
q(Old North Arabian),
q(Ancient North Arabian),
],
- q(0094) => [
+ q(0096) => [
q(Nabataean),
],
- q(0095) => [
+ q(0097) => [
q(Nakhi Geba ('Na-'Khi Ggo-baw, Naxi Geba)),
q(Nakhi Geba),
q('Na-'Khi Ggo-baw),
q(Naxi Geba),
],
- q(0096) => [
+ q(0098) => [
q(N'Ko),
],
- q(0097) => [
+ q(0099) => [
q(Nushu),
],
- q(0098) => [
+ q(0100) => [
q(Ogham),
],
- q(0099) => [
+ q(0101) => [
q(Ol Chiki (Ol Cemet, Ol, Santali)),
q(Ol Chiki),
q(Ol Cemet'),
q(Ol),
q(Santali),
],
- q(0100) => [
+ q(0102) => [
q(Old Turkic, Orkhon Runic),
q(Old Turkic),
q(Orkhon Runic),
],
- q(0101) => [
+ q(0103) => [
q(Oriya),
],
- q(0102) => [
+ q(0104) => [
q(Osmanya),
],
- q(0103) => [
+ q(0105) => [
q(Palmyrene),
],
- q(0104) => [
+ q(0106) => [
q(Old Permic),
],
- q(0105) => [
+ q(0107) => [
q(Phags-pa),
],
- q(0106) => [
+ q(0108) => [
q(Inscriptional Pahlavi),
],
- q(0107) => [
+ q(0109) => [
q(Psalter Pahlavi),
],
- q(0108) => [
+ q(0110) => [
q(Book Pahlavi),
],
- q(0109) => [
+ q(0111) => [
q(Phoenician),
],
- q(0110) => [
+ q(0112) => [
q(Miao (Pollard)),
q(Miao),
q(Pollard),
],
- q(0111) => [
+ q(0113) => [
q(Inscriptional Parthian),
],
- q(0112) => [
+ q(0114) => [
q(Reserved for private use (start)),
],
- q(0113) => [
+ q(0115) => [
q(Reserved for private use (end)),
],
- q(0114) => [
+ q(0116) => [
q(Rejang (Redjang, Kaganga)),
q(Rejang),
q(Redjang),
q(Kaganga),
],
- q(0115) => [
+ q(0117) => [
q(Rongorongo),
],
- q(0116) => [
+ q(0118) => [
q(Runic),
],
- q(0117) => [
+ q(0119) => [
q(Samaritan),
],
- q(0118) => [
+ q(0120) => [
q(Sarati),
],
- q(0119) => [
+ q(0121) => [
q(Old South Arabian),
],
- q(0120) => [
+ q(0122) => [
q(Saurashtra),
],
- q(0121) => [
+ q(0123) => [
q(SignWriting),
],
- q(0122) => [
+ q(0124) => [
q(Shavian (Shaw)),
q(Shavian),
q(Shaw),
],
- q(0123) => [
+ q(0125) => [
q(Sharada, Sarada),
q(Sharada),
q(Sarada),
],
- q(0124) => [
+ q(0126) => [
q(Khudawadi, Sindhi),
q(Khudawadi),
q(Sindhi),
],
- q(0125) => [
+ q(0127) => [
q(Sinhala),
],
- q(0126) => [
+ q(0128) => [
q(Sora Sompeng),
],
- q(0127) => [
+ q(0129) => [
q(Sundanese),
],
- q(0128) => [
+ q(0130) => [
q(Syloti Nagri),
],
- q(0129) => [
+ q(0131) => [
q(Syriac),
],
- q(0130) => [
+ q(0132) => [
q(Syriac (Estrangelo variant)),
],
- q(0131) => [
+ q(0133) => [
q(Syriac (Western variant)),
],
- q(0132) => [
+ q(0134) => [
q(Syriac (Eastern variant)),
],
- q(0133) => [
+ q(0135) => [
q(Tagbanwa),
],
- q(0134) => [
+ q(0136) => [
q(Takri, Takri, Tankri),
q(Takri),
q(Tankri),
],
- q(0135) => [
+ q(0137) => [
q(Tai Le),
],
- q(0136) => [
+ q(0138) => [
q(New Tai Lue),
],
- q(0137) => [
+ q(0139) => [
q(Tamil),
],
- q(0138) => [
+ q(0140) => [
q(Tangut),
],
- q(0139) => [
+ q(0141) => [
q(Tai Viet),
],
- q(0140) => [
+ q(0142) => [
q(Telugu),
],
- q(0141) => [
+ q(0143) => [
q(Tengwar),
],
- q(0142) => [
+ q(0144) => [
q(Tifinagh (Berber)),
q(Tifinagh),
q(Berber),
],
- q(0143) => [
+ q(0145) => [
q(Tagalog (Baybayin, Alibata)),
q(Tagalog),
q(Baybayin),
q(Alibata),
],
- q(0144) => [
+ q(0146) => [
q(Thaana),
],
- q(0145) => [
+ q(0147) => [
q(Thai),
],
- q(0146) => [
+ q(0148) => [
q(Tibetan),
],
- q(0147) => [
+ q(0149) => [
q(Tirhuta),
],
- q(0148) => [
+ q(0150) => [
q(Ugaritic),
],
- q(0149) => [
+ q(0151) => [
q(Vai),
],
- q(0150) => [
+ q(0152) => [
q(Visible Speech),
],
- q(0151) => [
+ q(0153) => [
q(Warang Citi (Varang Kshiti)),
q(Warang Citi),
q(Varang Kshiti),
],
- q(0152) => [
+ q(0154) => [
q(Woleai),
],
- q(0153) => [
+ q(0155) => [
q(Old Persian),
],
- q(0154) => [
+ q(0156) => [
q(Cuneiform, Sumero-Akkadian),
q(Sumero-Akkadian cuneiform),
],
- q(0155) => [
+ q(0157) => [
q(Yi),
],
- q(0156) => [
+ q(0158) => [
q(Code for inherited script),
],
- q(0157) => [
+ q(0159) => [
q(Mathematical notation),
],
- q(0158) => [
+ q(0160) => [
q(Symbols),
],
};
$Locale::Codes::Data{'script'}{'alias2id'} = {
q('na-'khi ggo-baw) => [
- q(0095),
+ q(0097),
q(2),
],
q(afaka) => [
@@ -599,911 +608,927 @@ $Locale::Codes::Data{'script'}{'alias2id'} = {
q(0),
],
q(alibata) => [
- q(0143),
+ q(0145),
q(3),
],
q(anatolian hieroglyphs) => [
- q(0050),
+ q(0051),
q(1),
],
q(anatolian hieroglyphs (luwian hieroglyphs, hittite hieroglyphs)) => [
- q(0050),
+ q(0051),
q(0),
],
q(ancient north arabian) => [
- q(0093),
+ q(0095),
q(2),
],
q(arabic) => [
- q(0002),
+ q(0003),
q(0),
],
q(armenian) => [
- q(0004),
+ q(0005),
q(0),
],
q(avestan) => [
- q(0005),
+ q(0006),
q(0),
],
q(balinese) => [
- q(0006),
+ q(0007),
q(0),
],
q(bamum) => [
- q(0007),
+ q(0008),
q(0),
],
q(bassa vah) => [
- q(0008),
+ q(0009),
q(0),
],
q(batak) => [
- q(0009),
+ q(0010),
q(0),
],
q(baybayin) => [
- q(0143),
+ q(0145),
q(2),
],
q(bengali) => [
- q(0010),
+ q(0011),
q(0),
],
q(berber) => [
- q(0142),
+ q(0144),
q(2),
],
q(blissymbols) => [
- q(0011),
+ q(0012),
q(0),
],
q(book pahlavi) => [
- q(0108),
+ q(0110),
q(0),
],
q(bopomofo) => [
- q(0012),
+ q(0013),
q(0),
],
q(brahmi) => [
- q(0013),
+ q(0014),
q(0),
],
q(braille) => [
- q(0014),
+ q(0015),
q(0),
],
q(buginese) => [
- q(0015),
+ q(0016),
q(0),
],
q(buhid) => [
- q(0016),
+ q(0017),
q(0),
],
q(burmese) => [
- q(0092),
+ q(0094),
q(2),
],
q(carian) => [
- q(0019),
+ q(0020),
+ q(0),
+ ],
+ q(caucasian albanian) => [
+ q(0002),
q(0),
],
q(chakma) => [
- q(0017),
+ q(0018),
q(0),
],
q(cham) => [
- q(0020),
+ q(0021),
q(0),
],
q(cherokee) => [
- q(0021),
+ q(0022),
q(0),
],
q(cirth) => [
- q(0022),
+ q(0023),
q(0),
],
q(code for inherited script) => [
- q(0156),
+ q(0158),
q(0),
],
q(coptic) => [
- q(0023),
+ q(0024),
q(0),
],
q(cuneiform, sumero-akkadian) => [
- q(0154),
+ q(0156),
q(0),
],
q(cypriot) => [
- q(0024),
+ q(0025),
q(0),
],
q(cyrillic) => [
- q(0025),
+ q(0026),
q(0),
],
q(cyrillic (old church slavonic variant)) => [
- q(0026),
+ q(0027),
q(0),
],
q(deseret) => [
- q(0028),
+ q(0029),
q(1),
],
q(deseret (mormon)) => [
- q(0028),
+ q(0029),
q(0),
],
q(devanagari) => [
- q(0027),
+ q(0028),
q(1),
],
q(devanagari (nagari)) => [
- q(0027),
+ q(0028),
q(0),
],
q(duployan shorthand) => [
- q(0029),
+ q(0030),
q(1),
],
q(duployan shorthand, duployan stenography) => [
- q(0029),
+ q(0030),
q(0),
],
q(duployan stenography) => [
- q(0029),
+ q(0030),
q(2),
],
q(egyptian demotic) => [
- q(0030),
+ q(0031),
q(0),
],
q(egyptian hieratic) => [
- q(0031),
+ q(0032),
q(0),
],
q(egyptian hieroglyphs) => [
- q(0032),
+ q(0033),
q(0),
],
q(elbasan) => [
- q(0033),
+ q(0034),
q(0),
],
q(ethiopic) => [
- q(0034),
+ q(0035),
q(1),
],
q(ethiopic (geez)) => [
- q(0034),
+ q(0035),
q(0),
],
q(fraser) => [
- q(0077),
+ q(0078),
q(2),
],
q(ge'ez) => [
- q(0034),
+ q(0035),
q(2),
],
q(georgian (mkhedruli)) => [
- q(0035),
+ q(0036),
q(0),
],
q(glagolitic) => [
- q(0037),
+ q(0038),
q(0),
],
q(gothic) => [
- q(0038),
+ q(0039),
q(0),
],
q(grantha) => [
- q(0039),
+ q(0040),
q(0),
],
q(greek) => [
- q(0040),
+ q(0041),
q(0),
],
q(gujarati) => [
- q(0041),
+ q(0042),
q(0),
],
q(gurmukhi) => [
- q(0042),
+ q(0043),
q(0),
],
q(han) => [
- q(0044),
+ q(0045),
q(1),
],
q(han (hanzi, kanji, hanja)) => [
- q(0044),
+ q(0045),
q(0),
],
q(han (simplified variant)) => [
- q(0046),
+ q(0047),
q(0),
],
q(han (traditional variant)) => [
- q(0047),
+ q(0048),
q(0),
],
q(hangeul) => [
- q(0043),
+ q(0044),
q(2),
],
q(hangul) => [
- q(0043),
+ q(0044),
q(1),
],
q(hangul (hangul, hangeul)) => [
- q(0043),
+ q(0044),
q(0),
],
q(hanja) => [
- q(0044),
+ q(0045),
q(4),
],
q(hanunoo) => [
- q(0045),
+ q(0046),
q(1),
],
q(hanunoo (hanunoo)) => [
- q(0045),
+ q(0046),
q(0),
],
q(hanzi) => [
- q(0044),
+ q(0045),
q(2),
],
q(harappan) => [
- q(0054),
+ q(0055),
q(2),
],
q(hebrew) => [
- q(0048),
+ q(0049),
q(0),
],
q(hiragana) => [
- q(0049),
+ q(0050),
q(0),
],
q(hittite hieroglyphs) => [
- q(0050),
+ q(0051),
q(3),
],
+ q(hungarian runic) => [
+ q(0054),
+ q(2),
+ ],
q(imperial aramaic) => [
- q(0003),
+ q(0004),
q(0),
],
q(indus) => [
- q(0054),
+ q(0055),
q(1),
],
q(indus (harappan)) => [
- q(0054),
+ q(0055),
q(0),
],
q(inscriptional pahlavi) => [
- q(0106),
+ q(0108),
q(0),
],
q(inscriptional parthian) => [
- q(0111),
+ q(0113),
q(0),
],
q(japanese (alias for han + hiragana + katakana)) => [
- q(0057),
+ q(0058),
q(0),
],
q(japanese syllabaries (alias for hiragana + katakana)) => [
- q(0052),
+ q(0053),
q(0),
],
q(javanese) => [
- q(0056),
+ q(0057),
q(0),
],
q(jurchen) => [
- q(0058),
+ q(0059),
q(0),
],
q(kaganga) => [
- q(0114),
+ q(0116),
q(3),
],
q(kaithi) => [
- q(0067),
+ q(0068),
q(0),
],
q(kanji) => [
- q(0044),
+ q(0045),
q(3),
],
q(kannada) => [
- q(0064),
+ q(0065),
q(0),
],
q(katakana) => [
- q(0060),
+ q(0061),
q(0),
],
q(kayah li) => [
- q(0059),
+ q(0060),
q(0),
],
q(kharoshthi) => [
- q(0061),
+ q(0062),
q(0),
],
q(khmer) => [
- q(0062),
+ q(0063),
q(0),
],
q(khojki) => [
- q(0063),
+ q(0064),
q(0),
],
q(khudawadi) => [
- q(0124),
+ q(0126),
q(1),
],
q(khudawadi, sindhi) => [
- q(0124),
+ q(0126),
q(0),
],
q(khutsuri (asomtavruli and nuskhuri)) => [
- q(0036),
+ q(0037),
q(0),
],
q(korean (alias for hangul + han)) => [
- q(0065),
+ q(0066),
q(0),
],
q(kpelle) => [
- q(0066),
+ q(0067),
q(0),
],
q(lanna) => [
- q(0068),
+ q(0069),
q(2),
],
q(lao) => [
- q(0069),
+ q(0070),
q(0),
],
q(latin) => [
- q(0072),
+ q(0073),
q(0),
],
q(latin (fraktur variant)) => [
- q(0070),
+ q(0071),
q(0),
],
q(latin (gaelic variant)) => [
- q(0071),
+ q(0072),
q(0),
],
q(lepcha) => [
- q(0073),
+ q(0074),
q(1),
],
q(lepcha (rong)) => [
- q(0073),
+ q(0074),
q(0),
],
q(limbu) => [
- q(0074),
+ q(0075),
q(0),
],
q(linear a) => [
- q(0075),
+ q(0076),
q(0),
],
q(linear b) => [
- q(0076),
+ q(0077),
q(0),
],
q(lisu) => [
- q(0077),
+ q(0078),
q(1),
],
q(lisu (fraser)) => [
- q(0077),
+ q(0078),
q(0),
],
q(loma) => [
- q(0078),
+ q(0079),
q(0),
],
q(luwian hieroglyphs) => [
- q(0050),
+ q(0051),
q(2),
],
q(lycian) => [
- q(0079),
+ q(0080),
q(0),
],
q(lydian) => [
- q(0080),
+ q(0081),
+ q(0),
+ ],
+ q(mahajani) => [
+ q(0082),
q(0),
],
q(malayalam) => [
- q(0087),
+ q(0089),
q(0),
],
q(mandaean) => [
- q(0081),
+ q(0083),
q(2),
],
q(mandaic) => [
- q(0081),
+ q(0083),
q(1),
],
q(mandaic, mandaean) => [
- q(0081),
+ q(0083),
q(0),
],
q(manichaean) => [
- q(0082),
+ q(0084),
q(0),
],
q(mathematical notation) => [
- q(0157),
+ q(0159),
q(0),
],
q(mayan hieroglyphs) => [
- q(0083),
+ q(0085),
q(0),
],
q(meetei) => [
- q(0091),
+ q(0093),
q(3),
],
q(meitei mayek) => [
- q(0091),
+ q(0093),
q(1),
],
q(meitei mayek (meithei, meetei)) => [
- q(0091),
+ q(0093),
q(0),
],
q(meithei) => [
- q(0091),
+ q(0093),
q(2),
],
q(mende) => [
- q(0084),
+ q(0086),
q(0),
],
q(meroitic cursive) => [
- q(0085),
+ q(0087),
q(0),
],
q(meroitic hieroglyphs) => [
- q(0086),
+ q(0088),
q(0),
],
q(miao) => [
- q(0110),
+ q(0112),
q(1),
],
q(miao (pollard)) => [
- q(0110),
+ q(0112),
q(0),
],
q(mongolian) => [
- q(0089),
+ q(0091),
q(0),
],
q(moon) => [
- q(0088),
+ q(0090),
q(1),
],
q(moon (moon code, moon script, moon type)) => [
- q(0088),
+ q(0090),
q(0),
],
q(moon code) => [
- q(0088),
+ q(0090),
q(2),
],
q(moon script) => [
- q(0088),
+ q(0090),
q(3),
],
q(moon type) => [
- q(0088),
+ q(0090),
q(4),
],
q(mormon) => [
- q(0028),
+ q(0029),
q(2),
],
q(mro) => [
- q(0090),
+ q(0092),
q(1),
],
q(mro, mru) => [
- q(0090),
+ q(0092),
q(0),
],
q(mru) => [
- q(0090),
+ q(0092),
q(2),
],
q(myanmar) => [
- q(0092),
+ q(0094),
q(1),
],
q(myanmar (burmese)) => [
- q(0092),
+ q(0094),
q(0),
],
q(n'ko) => [
- q(0096),
+ q(0098),
q(0),
],
q(nabataean) => [
- q(0094),
+ q(0096),
q(0),
],
q(nagari) => [
- q(0027),
+ q(0028),
q(2),
],
q(nakhi geba) => [
- q(0095),
+ q(0097),
q(1),
],
q(nakhi geba ('na-'khi ggo-baw, naxi geba)) => [
- q(0095),
+ q(0097),
q(0),
],
q(naxi geba) => [
- q(0095),
+ q(0097),
q(3),
],
q(new tai lue) => [
- q(0136),
+ q(0138),
q(0),
],
q(nushu) => [
- q(0097),
+ q(0099),
q(0),
],
q(ogham) => [
- q(0098),
+ q(0100),
q(0),
],
q(ol) => [
- q(0099),
+ q(0101),
q(3),
],
q(ol cemet') => [
- q(0099),
+ q(0101),
q(2),
],
q(ol chiki) => [
- q(0099),
+ q(0101),
q(1),
],
q(ol chiki (ol cemet, ol, santali)) => [
- q(0099),
+ q(0101),
q(0),
],
q(old hungarian) => [
- q(0053),
+ q(0054),
+ q(1),
+ ],
+ q(old hungarian (hungarian runic)) => [
+ q(0054),
q(0),
],
q(old italic (etruscan, oscan, etc.)) => [
- q(0055),
+ q(0056),
q(0),
],
q(old north arabian) => [
- q(0093),
+ q(0095),
q(1),
],
q(old north arabian (ancient north arabian)) => [
- q(0093),
+ q(0095),
q(0),
],
q(old permic) => [
- q(0104),
+ q(0106),
q(0),
],
q(old persian) => [
- q(0153),
+ q(0155),
q(0),
],
q(old south arabian) => [
- q(0119),
+ q(0121),
q(0),
],
q(old turkic) => [
- q(0100),
+ q(0102),
q(1),
],
q(old turkic, orkhon runic) => [
- q(0100),
+ q(0102),
q(0),
],
q(oriya) => [
- q(0101),
+ q(0103),
q(0),
],
q(orkhon runic) => [
- q(0100),
+ q(0102),
q(2),
],
q(osmanya) => [
- q(0102),
+ q(0104),
q(0),
],
q(pahawh hmong) => [
- q(0051),
+ q(0052),
q(0),
],
q(palmyrene) => [
- q(0103),
+ q(0105),
q(0),
],
q(phags-pa) => [
- q(0105),
+ q(0107),
q(0),
],
q(phoenician) => [
- q(0109),
+ q(0111),
q(0),
],
q(pollard) => [
- q(0110),
+ q(0112),
q(2),
],
q(psalter pahlavi) => [
- q(0107),
+ q(0109),
q(0),
],
q(redjang) => [
- q(0114),
+ q(0116),
q(2),
],
q(rejang) => [
- q(0114),
+ q(0116),
q(1),
],
q(rejang (redjang, kaganga)) => [
- q(0114),
+ q(0116),
q(0),
],
q(reserved for private use (end)) => [
- q(0113),
+ q(0115),
q(0),
],
q(reserved for private use (start)) => [
- q(0112),
+ q(0114),
q(0),
],
q(rong) => [
- q(0073),
+ q(0074),
q(2),
],
q(rongorongo) => [
- q(0115),
+ q(0117),
q(0),
],
q(runic) => [
- q(0116),
+ q(0118),
q(0),
],
q(samaritan) => [
- q(0117),
+ q(0119),
q(0),
],
q(santali) => [
- q(0099),
+ q(0101),
q(4),
],
q(sarada) => [
- q(0123),
+ q(0125),
q(2),
],
q(sarati) => [
- q(0118),
+ q(0120),
q(0),
],
q(saurashtra) => [
- q(0120),
+ q(0122),
q(0),
],
q(sharada) => [
- q(0123),
+ q(0125),
q(1),
],
q(sharada, sarada) => [
- q(0123),
+ q(0125),
q(0),
],
q(shavian) => [
- q(0122),
+ q(0124),
q(1),
],
q(shavian (shaw)) => [
- q(0122),
+ q(0124),
q(0),
],
q(shaw) => [
- q(0122),
+ q(0124),
q(2),
],
q(signwriting) => [
- q(0121),
+ q(0123),
q(0),
],
q(sindhi) => [
- q(0124),
+ q(0126),
q(2),
],
q(sinhala) => [
- q(0125),
+ q(0127),
q(0),
],
q(sora sompeng) => [
- q(0126),
+ q(0128),
q(0),
],
q(sumero-akkadian cuneiform) => [
- q(0154),
+ q(0156),
q(1),
],
q(sundanese) => [
- q(0127),
+ q(0129),
q(0),
],
q(syloti nagri) => [
- q(0128),
+ q(0130),
q(0),
],
q(symbols) => [
- q(0158),
+ q(0160),
q(0),
],
q(syriac) => [
- q(0129),
+ q(0131),
q(0),
],
q(syriac (eastern variant)) => [
- q(0132),
+ q(0134),
q(0),
],
q(syriac (estrangelo variant)) => [
- q(0130),
+ q(0132),
q(0),
],
q(syriac (western variant)) => [
- q(0131),
+ q(0133),
q(0),
],
q(tagalog) => [
- q(0143),
+ q(0145),
q(1),
],
q(tagalog (baybayin, alibata)) => [
- q(0143),
+ q(0145),
q(0),
],
q(tagbanwa) => [
- q(0133),
+ q(0135),
q(0),
],
q(tai le) => [
- q(0135),
+ q(0137),
q(0),
],
q(tai tham) => [
- q(0068),
+ q(0069),
q(1),
],
q(tai tham (lanna)) => [
- q(0068),
+ q(0069),
q(0),
],
q(tai viet) => [
- q(0139),
+ q(0141),
q(0),
],
q(takri) => [
- q(0134),
+ q(0136),
q(1),
],
q(takri, takri, tankri) => [
- q(0134),
+ q(0136),
q(0),
],
q(tamil) => [
- q(0137),
+ q(0139),
q(0),
],
q(tangut) => [
- q(0138),
+ q(0140),
q(0),
],
q(tankri) => [
- q(0134),
+ q(0136),
q(2),
],
q(telugu) => [
- q(0140),
+ q(0142),
q(0),
],
q(tengwar) => [
- q(0141),
+ q(0143),
q(0),
],
q(thaana) => [
- q(0144),
+ q(0146),
q(0),
],
q(thai) => [
- q(0145),
+ q(0147),
q(0),
],
q(tibetan) => [
- q(0146),
+ q(0148),
q(0),
],
q(tifinagh) => [
- q(0142),
+ q(0144),
q(1),
],
q(tifinagh (berber)) => [
- q(0142),
+ q(0144),
q(0),
],
q(tirhuta) => [
- q(0147),
+ q(0149),
q(0),
],
q(ugaritic) => [
- q(0148),
+ q(0150),
q(0),
],
q(unified canadian aboriginal syllabics) => [
- q(0018),
+ q(0019),
q(0),
],
q(vai) => [
- q(0149),
+ q(0151),
q(0),
],
q(varang kshiti) => [
- q(0151),
+ q(0153),
q(2),
],
q(visible speech) => [
- q(0150),
+ q(0152),
q(0),
],
q(warang citi) => [
- q(0151),
+ q(0153),
q(1),
],
q(warang citi (varang kshiti)) => [
- q(0151),
+ q(0153),
q(0),
],
q(woleai) => [
- q(0152),
+ q(0154),
q(0),
],
q(yi) => [
- q(0155),
+ q(0157),
q(0),
],
};
@@ -1514,1174 +1539,1190 @@ $Locale::Codes::Data{'script'}{'code2id'} = {
q(0001),
q(0),
],
- q(Arab) => [
+ q(Aghb) => [
q(0002),
q(0),
],
- q(Armi) => [
+ q(Arab) => [
q(0003),
q(0),
],
- q(Armn) => [
+ q(Armi) => [
q(0004),
q(0),
],
- q(Avst) => [
+ q(Armn) => [
q(0005),
q(0),
],
- q(Bali) => [
+ q(Avst) => [
q(0006),
q(0),
],
- q(Bamu) => [
+ q(Bali) => [
q(0007),
q(0),
],
- q(Bass) => [
+ q(Bamu) => [
q(0008),
q(0),
],
- q(Batk) => [
+ q(Bass) => [
q(0009),
q(0),
],
- q(Beng) => [
+ q(Batk) => [
q(0010),
q(0),
],
- q(Blis) => [
+ q(Beng) => [
q(0011),
q(0),
],
- q(Bopo) => [
+ q(Blis) => [
q(0012),
q(0),
],
- q(Brah) => [
+ q(Bopo) => [
q(0013),
q(0),
],
- q(Brai) => [
+ q(Brah) => [
q(0014),
q(0),
],
- q(Bugi) => [
+ q(Brai) => [
q(0015),
q(0),
],
- q(Buhd) => [
+ q(Bugi) => [
q(0016),
q(0),
],
- q(Cakm) => [
+ q(Buhd) => [
q(0017),
q(0),
],
- q(Cans) => [
+ q(Cakm) => [
q(0018),
q(0),
],
- q(Cari) => [
+ q(Cans) => [
q(0019),
q(0),
],
- q(Cham) => [
+ q(Cari) => [
q(0020),
q(0),
],
- q(Cher) => [
+ q(Cham) => [
q(0021),
q(0),
],
- q(Cirt) => [
+ q(Cher) => [
q(0022),
q(0),
],
- q(Copt) => [
+ q(Cirt) => [
q(0023),
q(0),
],
- q(Cprt) => [
+ q(Copt) => [
q(0024),
q(0),
],
- q(Cyrl) => [
+ q(Cprt) => [
q(0025),
q(0),
],
- q(Cyrs) => [
+ q(Cyrl) => [
q(0026),
q(0),
],
- q(Deva) => [
+ q(Cyrs) => [
q(0027),
+ q(0),
+ ],
+ q(Deva) => [
+ q(0028),
q(1),
],
q(Dsrt) => [
- q(0028),
+ q(0029),
q(1),
],
q(Dupl) => [
- q(0029),
+ q(0030),
q(1),
],
q(Egyd) => [
- q(0030),
+ q(0031),
q(0),
],
q(Egyh) => [
- q(0031),
+ q(0032),
q(0),
],
q(Egyp) => [
- q(0032),
+ q(0033),
q(0),
],
q(Elba) => [
- q(0033),
+ q(0034),
q(0),
],
q(Ethi) => [
- q(0034),
+ q(0035),
q(1),
],
q(Geok) => [
- q(0036),
+ q(0037),
q(0),
],
q(Geor) => [
- q(0035),
+ q(0036),
q(0),
],
q(Glag) => [
- q(0037),
+ q(0038),
q(0),
],
q(Goth) => [
- q(0038),
+ q(0039),
q(0),
],
q(Gran) => [
- q(0039),
+ q(0040),
q(0),
],
q(Grek) => [
- q(0040),
+ q(0041),
q(0),
],
q(Gujr) => [
- q(0041),
+ q(0042),
q(0),
],
q(Guru) => [
- q(0042),
+ q(0043),
q(0),
],
q(Hang) => [
- q(0043),
+ q(0044),
q(1),
],
q(Hani) => [
- q(0044),
+ q(0045),
q(1),
],
q(Hano) => [
- q(0045),
+ q(0046),
q(1),
],
q(Hans) => [
- q(0046),
+ q(0047),
q(0),
],
q(Hant) => [
- q(0047),
+ q(0048),
q(0),
],
q(Hebr) => [
- q(0048),
+ q(0049),
q(0),
],
q(Hira) => [
- q(0049),
+ q(0050),
q(0),
],
q(Hluw) => [
- q(0050),
+ q(0051),
q(1),
],
q(Hmng) => [
- q(0051),
+ q(0052),
q(0),
],
q(Hrkt) => [
- q(0052),
+ q(0053),
q(0),
],
q(Hung) => [
- q(0053),
- q(0),
+ q(0054),
+ q(1),
],
q(Inds) => [
- q(0054),
+ q(0055),
q(1),
],
q(Ital) => [
- q(0055),
+ q(0056),
q(0),
],
q(Java) => [
- q(0056),
+ q(0057),
q(0),
],
q(Jpan) => [
- q(0057),
+ q(0058),
q(0),
],
q(Jurc) => [
- q(0058),
+ q(0059),
q(0),
],
q(Kali) => [
- q(0059),
+ q(0060),
q(0),
],
q(Kana) => [
- q(0060),
+ q(0061),
q(0),
],
q(Khar) => [
- q(0061),
+ q(0062),
q(0),
],
q(Khmr) => [
- q(0062),
+ q(0063),
q(0),
],
q(Khoj) => [
- q(0063),
+ q(0064),
q(0),
],
q(Knda) => [
- q(0064),
+ q(0065),
q(0),
],
q(Kore) => [
- q(0065),
+ q(0066),
q(0),
],
q(Kpel) => [
- q(0066),
+ q(0067),
q(0),
],
q(Kthi) => [
- q(0067),
+ q(0068),
q(0),
],
q(Lana) => [
- q(0068),
+ q(0069),
q(1),
],
q(Laoo) => [
- q(0069),
+ q(0070),
q(0),
],
q(Latf) => [
- q(0070),
+ q(0071),
q(0),
],
q(Latg) => [
- q(0071),
+ q(0072),
q(0),
],
q(Latn) => [
- q(0072),
+ q(0073),
q(0),
],
q(Lepc) => [
- q(0073),
+ q(0074),
q(1),
],
q(Limb) => [
- q(0074),
+ q(0075),
q(0),
],
q(Lina) => [
- q(0075),
+ q(0076),
q(0),
],
q(Linb) => [
- q(0076),
+ q(0077),
q(0),
],
q(Lisu) => [
- q(0077),
+ q(0078),
q(1),
],
q(Loma) => [
- q(0078),
+ q(0079),
q(0),
],
q(Lyci) => [
- q(0079),
+ q(0080),
q(0),
],
q(Lydi) => [
- q(0080),
+ q(0081),
+ q(0),
+ ],
+ q(Mahj) => [
+ q(0082),
q(0),
],
q(Mand) => [
- q(0081),
+ q(0083),
q(1),
],
q(Mani) => [
- q(0082),
+ q(0084),
q(0),
],
q(Maya) => [
- q(0083),
+ q(0085),
q(0),
],
q(Mend) => [
- q(0084),
+ q(0086),
q(0),
],
q(Merc) => [
- q(0085),
+ q(0087),
q(0),
],
q(Mero) => [
- q(0086),
+ q(0088),
q(0),
],
q(Mlym) => [
- q(0087),
+ q(0089),
q(0),
],
q(Mong) => [
- q(0089),
+ q(0091),
q(0),
],
q(Moon) => [
- q(0088),
+ q(0090),
q(1),
],
q(Mroo) => [
- q(0090),
+ q(0092),
q(1),
],
q(Mtei) => [
- q(0091),
+ q(0093),
q(1),
],
q(Mymr) => [
- q(0092),
+ q(0094),
q(1),
],
q(Narb) => [
- q(0093),
+ q(0095),
q(1),
],
q(Nbat) => [
- q(0094),
+ q(0096),
q(0),
],
q(Nkgb) => [
- q(0095),
+ q(0097),
q(1),
],
q(Nkoo) => [
- q(0096),
+ q(0098),
q(0),
],
q(Nshu) => [
- q(0097),
+ q(0099),
q(0),
],
q(Ogam) => [
- q(0098),
+ q(0100),
q(0),
],
q(Olck) => [
- q(0099),
+ q(0101),
q(1),
],
q(Orkh) => [
- q(0100),
+ q(0102),
q(1),
],
q(Orya) => [
- q(0101),
+ q(0103),
q(0),
],
q(Osma) => [
- q(0102),
+ q(0104),
q(0),
],
q(Palm) => [
- q(0103),
+ q(0105),
q(0),
],
q(Perm) => [
- q(0104),
+ q(0106),
q(0),
],
q(Phag) => [
- q(0105),
+ q(0107),
q(0),
],
q(Phli) => [
- q(0106),
+ q(0108),
q(0),
],
q(Phlp) => [
- q(0107),
+ q(0109),
q(0),
],
q(Phlv) => [
- q(0108),
+ q(0110),
q(0),
],
q(Phnx) => [
- q(0109),
+ q(0111),
q(0),
],
q(Plrd) => [
- q(0110),
+ q(0112),
q(1),
],
q(Prti) => [
- q(0111),
+ q(0113),
q(0),
],
q(Qaaa) => [
- q(0112),
+ q(0114),
q(0),
],
q(Qabx) => [
- q(0113),
+ q(0115),
q(0),
],
q(Rjng) => [
- q(0114),
+ q(0116),
q(1),
],
q(Roro) => [
- q(0115),
+ q(0117),
q(0),
],
q(Runr) => [
- q(0116),
+ q(0118),
q(0),
],
q(Samr) => [
- q(0117),
+ q(0119),
q(0),
],
q(Sara) => [
- q(0118),
+ q(0120),
q(0),
],
q(Sarb) => [
- q(0119),
+ q(0121),
q(0),
],
q(Saur) => [
- q(0120),
+ q(0122),
q(0),
],
q(Sgnw) => [
- q(0121),
+ q(0123),
q(0),
],
q(Shaw) => [
- q(0122),
+ q(0124),
q(1),
],
q(Shrd) => [
- q(0123),
+ q(0125),
q(1),
],
q(Sind) => [
- q(0124),
+ q(0126),
q(1),
],
q(Sinh) => [
- q(0125),
+ q(0127),
q(0),
],
q(Sora) => [
- q(0126),
+ q(0128),
q(0),
],
q(Sund) => [
- q(0127),
+ q(0129),
q(0),
],
q(Sylo) => [
- q(0128),
+ q(0130),
q(0),
],
q(Syrc) => [
- q(0129),
+ q(0131),
q(0),
],
q(Syre) => [
- q(0130),
+ q(0132),
q(0),
],
q(Syrj) => [
- q(0131),
+ q(0133),
q(0),
],
q(Syrn) => [
- q(0132),
+ q(0134),
q(0),
],
q(Tagb) => [
- q(0133),
+ q(0135),
q(0),
],
q(Takr) => [
- q(0134),
+ q(0136),
q(1),
],
q(Tale) => [
- q(0135),
+ q(0137),
q(0),
],
q(Talu) => [
- q(0136),
+ q(0138),
q(0),
],
q(Taml) => [
- q(0137),
+ q(0139),
q(0),
],
q(Tang) => [
- q(0138),
+ q(0140),
q(0),
],
q(Tavt) => [
- q(0139),
+ q(0141),
q(0),
],
q(Telu) => [
- q(0140),
+ q(0142),
q(0),
],
q(Teng) => [
- q(0141),
+ q(0143),
q(0),
],
q(Tfng) => [
- q(0142),
+ q(0144),
q(1),
],
q(Tglg) => [
- q(0143),
+ q(0145),
q(1),
],
q(Thaa) => [
- q(0144),
+ q(0146),
q(0),
],
q(Thai) => [
- q(0145),
+ q(0147),
q(0),
],
q(Tibt) => [
- q(0146),
+ q(0148),
q(0),
],
q(Tirh) => [
- q(0147),
+ q(0149),
q(0),
],
q(Ugar) => [
- q(0148),
+ q(0150),
q(0),
],
q(Vaii) => [
- q(0149),
+ q(0151),
q(0),
],
q(Visp) => [
- q(0150),
+ q(0152),
q(0),
],
q(Wara) => [
- q(0151),
+ q(0153),
q(1),
],
q(Wole) => [
- q(0152),
+ q(0154),
q(0),
],
q(Xpeo) => [
- q(0153),
+ q(0155),
q(0),
],
q(Xsux) => [
- q(0154),
+ q(0156),
q(1),
],
q(Yiii) => [
- q(0155),
+ q(0157),
q(0),
],
q(Zinh) => [
- q(0156),
+ q(0158),
q(0),
],
q(Zmth) => [
- q(0157),
+ q(0159),
q(0),
],
q(Zsym) => [
- q(0158),
+ q(0160),
q(0),
],
},
q(num) => {
q(020) => [
- q(0154),
+ q(0156),
q(0),
],
q(030) => [
- q(0153),
+ q(0155),
q(0),
],
q(040) => [
- q(0148),
+ q(0150),
q(0),
],
q(050) => [
- q(0032),
+ q(0033),
q(0),
],
q(060) => [
- q(0031),
+ q(0032),
q(0),
],
q(070) => [
- q(0030),
+ q(0031),
q(0),
],
q(080) => [
- q(0050),
+ q(0051),
q(0),
],
q(090) => [
- q(0083),
+ q(0085),
q(0),
],
q(095) => [
- q(0121),
+ q(0123),
q(0),
],
q(100) => [
- q(0086),
+ q(0088),
q(0),
],
q(101) => [
- q(0085),
+ q(0087),
q(0),
],
q(105) => [
- q(0119),
+ q(0121),
q(0),
],
q(106) => [
- q(0093),
+ q(0095),
q(0),
],
q(115) => [
- q(0109),
+ q(0111),
q(0),
],
q(116) => [
- q(0080),
+ q(0081),
q(0),
],
q(120) => [
- q(0142),
+ q(0144),
q(0),
],
q(123) => [
- q(0117),
+ q(0119),
q(0),
],
q(124) => [
- q(0003),
+ q(0004),
q(0),
],
q(125) => [
- q(0048),
+ q(0049),
q(0),
],
q(126) => [
- q(0103),
+ q(0105),
q(0),
],
q(130) => [
- q(0111),
+ q(0113),
q(0),
],
q(131) => [
- q(0106),
+ q(0108),
q(0),
],
q(132) => [
- q(0107),
+ q(0109),
q(0),
],
q(133) => [
- q(0108),
+ q(0110),
q(0),
],
q(134) => [
- q(0005),
+ q(0006),
q(0),
],
q(135) => [
- q(0129),
+ q(0131),
q(0),
],
q(136) => [
- q(0132),
+ q(0134),
q(0),
],
q(137) => [
- q(0131),
+ q(0133),
q(0),
],
q(138) => [
- q(0130),
+ q(0132),
q(0),
],
q(139) => [
- q(0082),
+ q(0084),
q(0),
],
q(140) => [
- q(0081),
+ q(0083),
q(0),
],
q(145) => [
- q(0089),
+ q(0091),
q(0),
],
q(159) => [
- q(0094),
+ q(0096),
q(0),
],
q(160) => [
- q(0002),
+ q(0003),
q(0),
],
q(165) => [
- q(0096),
+ q(0098),
q(0),
],
q(170) => [
- q(0144),
+ q(0146),
q(0),
],
q(175) => [
- q(0100),
+ q(0102),
q(0),
],
q(176) => [
- q(0053),
+ q(0054),
q(0),
],
q(199) => [
- q(0090),
+ q(0092),
q(0),
],
q(200) => [
- q(0040),
+ q(0041),
q(0),
],
q(201) => [
- q(0019),
+ q(0020),
q(0),
],
q(202) => [
- q(0079),
+ q(0080),
q(0),
],
q(204) => [
- q(0023),
+ q(0024),
q(0),
],
q(206) => [
- q(0038),
+ q(0039),
q(0),
],
q(210) => [
- q(0055),
+ q(0056),
q(0),
],
q(211) => [
- q(0116),
+ q(0118),
q(0),
],
q(212) => [
- q(0098),
+ q(0100),
q(0),
],
q(215) => [
- q(0072),
+ q(0073),
q(0),
],
q(216) => [
- q(0071),
+ q(0072),
q(0),
],
q(217) => [
- q(0070),
+ q(0071),
q(0),
],
q(218) => [
- q(0088),
+ q(0090),
q(0),
],
q(220) => [
- q(0025),
+ q(0026),
q(0),
],
q(221) => [
- q(0026),
+ q(0027),
q(0),
],
q(225) => [
- q(0037),
+ q(0038),
q(0),
],
q(226) => [
- q(0033),
+ q(0034),
q(0),
],
q(227) => [
- q(0104),
+ q(0106),
q(0),
],
q(230) => [
- q(0004),
+ q(0005),
+ q(0),
+ ],
+ q(239) => [
+ q(0002),
q(0),
],
q(240) => [
- q(0035),
+ q(0036),
q(0),
],
q(241) => [
- q(0036),
+ q(0037),
q(0),
],
q(250) => [
- q(0028),
+ q(0029),
q(0),
],
q(259) => [
- q(0008),
+ q(0009),
q(0),
],
q(260) => [
- q(0102),
+ q(0104),
q(0),
],
q(261) => [
- q(0099),
+ q(0101),
q(0),
],
q(262) => [
- q(0151),
+ q(0153),
q(0),
],
q(280) => [
- q(0150),
+ q(0152),
q(0),
],
q(281) => [
- q(0122),
+ q(0124),
q(0),
],
q(282) => [
- q(0110),
+ q(0112),
q(0),
],
q(285) => [
- q(0012),
+ q(0013),
q(0),
],
q(286) => [
- q(0043),
+ q(0044),
q(0),
],
q(287) => [
- q(0065),
+ q(0066),
q(0),
],
q(290) => [
- q(0141),
+ q(0143),
q(0),
],
q(291) => [
- q(0022),
+ q(0023),
q(0),
],
q(292) => [
- q(0118),
+ q(0120),
q(0),
],
q(300) => [
- q(0013),
+ q(0014),
q(0),
],
q(305) => [
- q(0061),
+ q(0062),
q(0),
],
q(310) => [
- q(0042),
+ q(0043),
+ q(0),
+ ],
+ q(314) => [
+ q(0082),
q(0),
],
q(315) => [
- q(0027),
+ q(0028),
q(0),
],
q(316) => [
- q(0128),
+ q(0130),
q(0),
],
q(317) => [
- q(0067),
+ q(0068),
q(0),
],
q(318) => [
- q(0124),
+ q(0126),
q(0),
],
q(319) => [
- q(0123),
+ q(0125),
q(0),
],
q(320) => [
- q(0041),
+ q(0042),
q(0),
],
q(321) => [
- q(0134),
+ q(0136),
q(0),
],
q(322) => [
- q(0063),
+ q(0064),
q(0),
],
q(325) => [
- q(0010),
+ q(0011),
q(0),
],
q(326) => [
- q(0147),
+ q(0149),
q(0),
],
q(327) => [
- q(0101),
+ q(0103),
q(0),
],
q(330) => [
- q(0146),
+ q(0148),
q(0),
],
q(331) => [
- q(0105),
+ q(0107),
q(0),
],
q(335) => [
- q(0073),
+ q(0074),
q(0),
],
q(336) => [
- q(0074),
+ q(0075),
q(0),
],
q(337) => [
- q(0091),
+ q(0093),
q(0),
],
q(340) => [
- q(0140),
+ q(0142),
q(0),
],
q(343) => [
- q(0039),
+ q(0040),
q(0),
],
q(344) => [
- q(0120),
+ q(0122),
q(0),
],
q(345) => [
- q(0064),
+ q(0065),
q(0),
],
q(346) => [
- q(0137),
+ q(0139),
q(0),
],
q(347) => [
- q(0087),
+ q(0089),
q(0),
],
q(348) => [
- q(0125),
+ q(0127),
q(0),
],
q(349) => [
- q(0017),
+ q(0018),
q(0),
],
q(350) => [
- q(0092),
+ q(0094),
q(0),
],
q(351) => [
- q(0068),
+ q(0069),
q(0),
],
q(352) => [
- q(0145),
+ q(0147),
q(0),
],
q(353) => [
- q(0135),
+ q(0137),
q(0),
],
q(354) => [
- q(0136),
+ q(0138),
q(0),
],
q(355) => [
- q(0062),
+ q(0063),
q(0),
],
q(356) => [
- q(0069),
+ q(0070),
q(0),
],
q(357) => [
- q(0059),
+ q(0060),
q(0),
],
q(358) => [
- q(0020),
+ q(0021),
q(0),
],
q(359) => [
- q(0139),
+ q(0141),
q(0),
],
q(360) => [
- q(0006),
+ q(0007),
q(0),
],
q(361) => [
- q(0056),
+ q(0057),
q(0),
],
q(362) => [
- q(0127),
+ q(0129),
q(0),
],
q(363) => [
- q(0114),
+ q(0116),
q(0),
],
q(365) => [
- q(0009),
+ q(0010),
q(0),
],
q(367) => [
- q(0015),
+ q(0016),
q(0),
],
q(370) => [
- q(0143),
+ q(0145),
q(0),
],
q(371) => [
- q(0045),
+ q(0046),
q(0),
],
q(372) => [
- q(0016),
+ q(0017),
q(0),
],
q(373) => [
- q(0133),
+ q(0135),
q(0),
],
q(398) => [
- q(0126),
+ q(0128),
q(0),
],
q(399) => [
- q(0077),
+ q(0078),
q(0),
],
q(400) => [
- q(0075),
+ q(0076),
q(0),
],
q(401) => [
- q(0076),
+ q(0077),
q(0),
],
q(403) => [
- q(0024),
+ q(0025),
q(0),
],
q(410) => [
- q(0049),
+ q(0050),
q(0),
],
q(411) => [
- q(0060),
+ q(0061),
q(0),
],
q(412) => [
- q(0052),
+ q(0053),
q(0),
],
q(413) => [
- q(0057),
+ q(0058),
q(0),
],
q(420) => [
- q(0095),
+ q(0097),
q(0),
],
q(430) => [
- q(0034),
+ q(0035),
q(0),
],
q(435) => [
- q(0007),
+ q(0008),
q(0),
],
q(436) => [
- q(0066),
+ q(0067),
q(0),
],
q(437) => [
- q(0078),
+ q(0079),
q(0),
],
q(438) => [
- q(0084),
+ q(0086),
q(0),
],
q(439) => [
@@ -2689,91 +2730,91 @@ $Locale::Codes::Data{'script'}{'code2id'} = {
q(0),
],
q(440) => [
- q(0018),
+ q(0019),
q(0),
],
q(445) => [
- q(0021),
+ q(0022),
q(0),
],
q(450) => [
- q(0051),
+ q(0052),
q(0),
],
q(460) => [
- q(0155),
+ q(0157),
q(0),
],
q(470) => [
- q(0149),
+ q(0151),
q(0),
],
q(480) => [
- q(0152),
+ q(0154),
q(0),
],
q(499) => [
- q(0097),
+ q(0099),
q(0),
],
q(500) => [
- q(0044),
+ q(0045),
q(0),
],
q(501) => [
- q(0046),
+ q(0047),
q(0),
],
q(502) => [
- q(0047),
+ q(0048),
q(0),
],
q(510) => [
- q(0058),
+ q(0059),
q(0),
],
q(520) => [
- q(0138),
+ q(0140),
q(0),
],
q(550) => [
- q(0011),
+ q(0012),
q(0),
],
q(570) => [
- q(0014),
+ q(0015),
q(0),
],
q(610) => [
- q(0054),
+ q(0055),
q(0),
],
q(620) => [
- q(0115),
+ q(0117),
q(0),
],
q(755) => [
- q(0029),
+ q(0030),
q(0),
],
q(900) => [
- q(0112),
+ q(0114),
q(0),
],
q(949) => [
- q(0113),
+ q(0115),
q(0),
],
q(994) => [
- q(0156),
+ q(0158),
q(0),
],
q(995) => [
- q(0157),
+ q(0159),
q(0),
],
q(996) => [
- q(0158),
+ q(0160),
q(0),
],
},
@@ -2782,323 +2823,327 @@ $Locale::Codes::Data{'script'}{'code2id'} = {
$Locale::Codes::Data{'script'}{'id2code'} = {
q(alpha) => {
q(0001) => q(Afak),
- q(0002) => q(Arab),
- q(0003) => q(Armi),
- q(0004) => q(Armn),
- q(0005) => q(Avst),
- q(0006) => q(Bali),
- q(0007) => q(Bamu),
- q(0008) => q(Bass),
- q(0009) => q(Batk),
- q(0010) => q(Beng),
- q(0011) => q(Blis),
- q(0012) => q(Bopo),
- q(0013) => q(Brah),
- q(0014) => q(Brai),
- q(0015) => q(Bugi),
- q(0016) => q(Buhd),
- q(0017) => q(Cakm),
- q(0018) => q(Cans),
- q(0019) => q(Cari),
- q(0020) => q(Cham),
- q(0021) => q(Cher),
- q(0022) => q(Cirt),
- q(0023) => q(Copt),
- q(0024) => q(Cprt),
- q(0025) => q(Cyrl),
- q(0026) => q(Cyrs),
- q(0027) => q(Deva),
- q(0028) => q(Dsrt),
- q(0029) => q(Dupl),
- q(0030) => q(Egyd),
- q(0031) => q(Egyh),
- q(0032) => q(Egyp),
- q(0033) => q(Elba),
- q(0034) => q(Ethi),
- q(0035) => q(Geor),
- q(0036) => q(Geok),
- q(0037) => q(Glag),
- q(0038) => q(Goth),
- q(0039) => q(Gran),
- q(0040) => q(Grek),
- q(0041) => q(Gujr),
- q(0042) => q(Guru),
- q(0043) => q(Hang),
- q(0044) => q(Hani),
- q(0045) => q(Hano),
- q(0046) => q(Hans),
- q(0047) => q(Hant),
- q(0048) => q(Hebr),
- q(0049) => q(Hira),
- q(0050) => q(Hluw),
- q(0051) => q(Hmng),
- q(0052) => q(Hrkt),
- q(0053) => q(Hung),
- q(0054) => q(Inds),
- q(0055) => q(Ital),
- q(0056) => q(Java),
- q(0057) => q(Jpan),
- q(0058) => q(Jurc),
- q(0059) => q(Kali),
- q(0060) => q(Kana),
- q(0061) => q(Khar),
- q(0062) => q(Khmr),
- q(0063) => q(Khoj),
- q(0064) => q(Knda),
- q(0065) => q(Kore),
- q(0066) => q(Kpel),
- q(0067) => q(Kthi),
- q(0068) => q(Lana),
- q(0069) => q(Laoo),
- q(0070) => q(Latf),
- q(0071) => q(Latg),
- q(0072) => q(Latn),
- q(0073) => q(Lepc),
- q(0074) => q(Limb),
- q(0075) => q(Lina),
- q(0076) => q(Linb),
- q(0077) => q(Lisu),
- q(0078) => q(Loma),
- q(0079) => q(Lyci),
- q(0080) => q(Lydi),
- q(0081) => q(Mand),
- q(0082) => q(Mani),
- q(0083) => q(Maya),
- q(0084) => q(Mend),
- q(0085) => q(Merc),
- q(0086) => q(Mero),
- q(0087) => q(Mlym),
- q(0088) => q(Moon),
- q(0089) => q(Mong),
- q(0090) => q(Mroo),
- q(0091) => q(Mtei),
- q(0092) => q(Mymr),
- q(0093) => q(Narb),
- q(0094) => q(Nbat),
- q(0095) => q(Nkgb),
- q(0096) => q(Nkoo),
- q(0097) => q(Nshu),
- q(0098) => q(Ogam),
- q(0099) => q(Olck),
- q(0100) => q(Orkh),
- q(0101) => q(Orya),
- q(0102) => q(Osma),
- q(0103) => q(Palm),
- q(0104) => q(Perm),
- q(0105) => q(Phag),
- q(0106) => q(Phli),
- q(0107) => q(Phlp),
- q(0108) => q(Phlv),
- q(0109) => q(Phnx),
- q(0110) => q(Plrd),
- q(0111) => q(Prti),
- q(0112) => q(Qaaa),
- q(0113) => q(Qabx),
- q(0114) => q(Rjng),
- q(0115) => q(Roro),
- q(0116) => q(Runr),
- q(0117) => q(Samr),
- q(0118) => q(Sara),
- q(0119) => q(Sarb),
- q(0120) => q(Saur),
- q(0121) => q(Sgnw),
- q(0122) => q(Shaw),
- q(0123) => q(Shrd),
- q(0124) => q(Sind),
- q(0125) => q(Sinh),
- q(0126) => q(Sora),
- q(0127) => q(Sund),
- q(0128) => q(Sylo),
- q(0129) => q(Syrc),
- q(0130) => q(Syre),
- q(0131) => q(Syrj),
- q(0132) => q(Syrn),
- q(0133) => q(Tagb),
- q(0134) => q(Takr),
- q(0135) => q(Tale),
- q(0136) => q(Talu),
- q(0137) => q(Taml),
- q(0138) => q(Tang),
- q(0139) => q(Tavt),
- q(0140) => q(Telu),
- q(0141) => q(Teng),
- q(0142) => q(Tfng),
- q(0143) => q(Tglg),
- q(0144) => q(Thaa),
- q(0145) => q(Thai),
- q(0146) => q(Tibt),
- q(0147) => q(Tirh),
- q(0148) => q(Ugar),
- q(0149) => q(Vaii),
- q(0150) => q(Visp),
- q(0151) => q(Wara),
- q(0152) => q(Wole),
- q(0153) => q(Xpeo),
- q(0154) => q(Xsux),
- q(0155) => q(Yiii),
- q(0156) => q(Zinh),
- q(0157) => q(Zmth),
- q(0158) => q(Zsym),
+ q(0002) => q(Aghb),
+ q(0003) => q(Arab),
+ q(0004) => q(Armi),
+ q(0005) => q(Armn),
+ q(0006) => q(Avst),
+ q(0007) => q(Bali),
+ q(0008) => q(Bamu),
+ q(0009) => q(Bass),
+ q(0010) => q(Batk),
+ q(0011) => q(Beng),
+ q(0012) => q(Blis),
+ q(0013) => q(Bopo),
+ q(0014) => q(Brah),
+ q(0015) => q(Brai),
+ q(0016) => q(Bugi),
+ q(0017) => q(Buhd),
+ q(0018) => q(Cakm),
+ q(0019) => q(Cans),
+ q(0020) => q(Cari),
+ q(0021) => q(Cham),
+ q(0022) => q(Cher),
+ q(0023) => q(Cirt),
+ q(0024) => q(Copt),
+ q(0025) => q(Cprt),
+ q(0026) => q(Cyrl),
+ q(0027) => q(Cyrs),
+ q(0028) => q(Deva),
+ q(0029) => q(Dsrt),
+ q(0030) => q(Dupl),
+ q(0031) => q(Egyd),
+ q(0032) => q(Egyh),
+ q(0033) => q(Egyp),
+ q(0034) => q(Elba),
+ q(0035) => q(Ethi),
+ q(0036) => q(Geor),
+ q(0037) => q(Geok),
+ q(0038) => q(Glag),
+ q(0039) => q(Goth),
+ q(0040) => q(Gran),
+ q(0041) => q(Grek),
+ q(0042) => q(Gujr),
+ q(0043) => q(Guru),
+ q(0044) => q(Hang),
+ q(0045) => q(Hani),
+ q(0046) => q(Hano),
+ q(0047) => q(Hans),
+ q(0048) => q(Hant),
+ q(0049) => q(Hebr),
+ q(0050) => q(Hira),
+ q(0051) => q(Hluw),
+ q(0052) => q(Hmng),
+ q(0053) => q(Hrkt),
+ q(0054) => q(Hung),
+ q(0055) => q(Inds),
+ q(0056) => q(Ital),
+ q(0057) => q(Java),
+ q(0058) => q(Jpan),
+ q(0059) => q(Jurc),
+ q(0060) => q(Kali),
+ q(0061) => q(Kana),
+ q(0062) => q(Khar),
+ q(0063) => q(Khmr),
+ q(0064) => q(Khoj),
+ q(0065) => q(Knda),
+ q(0066) => q(Kore),
+ q(0067) => q(Kpel),
+ q(0068) => q(Kthi),
+ q(0069) => q(Lana),
+ q(0070) => q(Laoo),
+ q(0071) => q(Latf),
+ q(0072) => q(Latg),
+ q(0073) => q(Latn),
+ q(0074) => q(Lepc),
+ q(0075) => q(Limb),
+ q(0076) => q(Lina),
+ q(0077) => q(Linb),
+ q(0078) => q(Lisu),
+ q(0079) => q(Loma),
+ q(0080) => q(Lyci),
+ q(0081) => q(Lydi),
+ q(0082) => q(Mahj),
+ q(0083) => q(Mand),
+ q(0084) => q(Mani),
+ q(0085) => q(Maya),
+ q(0086) => q(Mend),
+ q(0087) => q(Merc),
+ q(0088) => q(Mero),
+ q(0089) => q(Mlym),
+ q(0090) => q(Moon),
+ q(0091) => q(Mong),
+ q(0092) => q(Mroo),
+ q(0093) => q(Mtei),
+ q(0094) => q(Mymr),
+ q(0095) => q(Narb),
+ q(0096) => q(Nbat),
+ q(0097) => q(Nkgb),
+ q(0098) => q(Nkoo),
+ q(0099) => q(Nshu),
+ q(0100) => q(Ogam),
+ q(0101) => q(Olck),
+ q(0102) => q(Orkh),
+ q(0103) => q(Orya),
+ q(0104) => q(Osma),
+ q(0105) => q(Palm),
+ q(0106) => q(Perm),
+ q(0107) => q(Phag),
+ q(0108) => q(Phli),
+ q(0109) => q(Phlp),
+ q(0110) => q(Phlv),
+ q(0111) => q(Phnx),
+ q(0112) => q(Plrd),
+ q(0113) => q(Prti),
+ q(0114) => q(Qaaa),
+ q(0115) => q(Qabx),
+ q(0116) => q(Rjng),
+ q(0117) => q(Roro),
+ q(0118) => q(Runr),
+ q(0119) => q(Samr),
+ q(0120) => q(Sara),
+ q(0121) => q(Sarb),
+ q(0122) => q(Saur),
+ q(0123) => q(Sgnw),
+ q(0124) => q(Shaw),
+ q(0125) => q(Shrd),
+ q(0126) => q(Sind),
+ q(0127) => q(Sinh),
+ q(0128) => q(Sora),
+ q(0129) => q(Sund),
+ q(0130) => q(Sylo),
+ q(0131) => q(Syrc),
+ q(0132) => q(Syre),
+ q(0133) => q(Syrj),
+ q(0134) => q(Syrn),
+ q(0135) => q(Tagb),
+ q(0136) => q(Takr),
+ q(0137) => q(Tale),
+ q(0138) => q(Talu),
+ q(0139) => q(Taml),
+ q(0140) => q(Tang),
+ q(0141) => q(Tavt),
+ q(0142) => q(Telu),
+ q(0143) => q(Teng),
+ q(0144) => q(Tfng),
+ q(0145) => q(Tglg),
+ q(0146) => q(Thaa),
+ q(0147) => q(Thai),
+ q(0148) => q(Tibt),
+ q(0149) => q(Tirh),
+ q(0150) => q(Ugar),
+ q(0151) => q(Vaii),
+ q(0152) => q(Visp),
+ q(0153) => q(Wara),
+ q(0154) => q(Wole),
+ q(0155) => q(Xpeo),
+ q(0156) => q(Xsux),
+ q(0157) => q(Yiii),
+ q(0158) => q(Zinh),
+ q(0159) => q(Zmth),
+ q(0160) => q(Zsym),
},
q(num) => {
q(0001) => q(439),
- q(0002) => q(160),
- q(0003) => q(124),
- q(0004) => q(230),
- q(0005) => q(134),
- q(0006) => q(360),
- q(0007) => q(435),
- q(0008) => q(259),
- q(0009) => q(365),
- q(0010) => q(325),
- q(0011) => q(550),
- q(0012) => q(285),
- q(0013) => q(300),
- q(0014) => q(570),
- q(0015) => q(367),
- q(0016) => q(372),
- q(0017) => q(349),
- q(0018) => q(440),
- q(0019) => q(201),
- q(0020) => q(358),
- q(0021) => q(445),
- q(0022) => q(291),
- q(0023) => q(204),
- q(0024) => q(403),
- q(0025) => q(220),
- q(0026) => q(221),
- q(0027) => q(315),
- q(0028) => q(250),
- q(0029) => q(755),
- q(0030) => q(070),
- q(0031) => q(060),
- q(0032) => q(050),
- q(0033) => q(226),
- q(0034) => q(430),
- q(0035) => q(240),
- q(0036) => q(241),
- q(0037) => q(225),
- q(0038) => q(206),
- q(0039) => q(343),
- q(0040) => q(200),
- q(0041) => q(320),
- q(0042) => q(310),
- q(0043) => q(286),
- q(0044) => q(500),
- q(0045) => q(371),
- q(0046) => q(501),
- q(0047) => q(502),
- q(0048) => q(125),
- q(0049) => q(410),
- q(0050) => q(080),
- q(0051) => q(450),
- q(0052) => q(412),
- q(0053) => q(176),
- q(0054) => q(610),
- q(0055) => q(210),
- q(0056) => q(361),
- q(0057) => q(413),
- q(0058) => q(510),
- q(0059) => q(357),
- q(0060) => q(411),
- q(0061) => q(305),
- q(0062) => q(355),
- q(0063) => q(322),
- q(0064) => q(345),
- q(0065) => q(287),
- q(0066) => q(436),
- q(0067) => q(317),
- q(0068) => q(351),
- q(0069) => q(356),
- q(0070) => q(217),
- q(0071) => q(216),
- q(0072) => q(215),
- q(0073) => q(335),
- q(0074) => q(336),
- q(0075) => q(400),
- q(0076) => q(401),
- q(0077) => q(399),
- q(0078) => q(437),
- q(0079) => q(202),
- q(0080) => q(116),
- q(0081) => q(140),
- q(0082) => q(139),
- q(0083) => q(090),
- q(0084) => q(438),
- q(0085) => q(101),
- q(0086) => q(100),
- q(0087) => q(347),
- q(0088) => q(218),
- q(0089) => q(145),
- q(0090) => q(199),
- q(0091) => q(337),
- q(0092) => q(350),
- q(0093) => q(106),
- q(0094) => q(159),
- q(0095) => q(420),
- q(0096) => q(165),
- q(0097) => q(499),
- q(0098) => q(212),
- q(0099) => q(261),
- q(0100) => q(175),
- q(0101) => q(327),
- q(0102) => q(260),
- q(0103) => q(126),
- q(0104) => q(227),
- q(0105) => q(331),
- q(0106) => q(131),
- q(0107) => q(132),
- q(0108) => q(133),
- q(0109) => q(115),
- q(0110) => q(282),
- q(0111) => q(130),
- q(0112) => q(900),
- q(0113) => q(949),
- q(0114) => q(363),
- q(0115) => q(620),
- q(0116) => q(211),
- q(0117) => q(123),
- q(0118) => q(292),
- q(0119) => q(105),
- q(0120) => q(344),
- q(0121) => q(095),
- q(0122) => q(281),
- q(0123) => q(319),
- q(0124) => q(318),
- q(0125) => q(348),
- q(0126) => q(398),
- q(0127) => q(362),
- q(0128) => q(316),
- q(0129) => q(135),
- q(0130) => q(138),
- q(0131) => q(137),
- q(0132) => q(136),
- q(0133) => q(373),
- q(0134) => q(321),
- q(0135) => q(353),
- q(0136) => q(354),
- q(0137) => q(346),
- q(0138) => q(520),
- q(0139) => q(359),
- q(0140) => q(340),
- q(0141) => q(290),
- q(0142) => q(120),
- q(0143) => q(370),
- q(0144) => q(170),
- q(0145) => q(352),
- q(0146) => q(330),
- q(0147) => q(326),
- q(0148) => q(040),
- q(0149) => q(470),
- q(0150) => q(280),
- q(0151) => q(262),
- q(0152) => q(480),
- q(0153) => q(030),
- q(0154) => q(020),
- q(0155) => q(460),
- q(0156) => q(994),
- q(0157) => q(995),
- q(0158) => q(996),
+ q(0002) => q(239),
+ q(0003) => q(160),
+ q(0004) => q(124),
+ q(0005) => q(230),
+ q(0006) => q(134),
+ q(0007) => q(360),
+ q(0008) => q(435),
+ q(0009) => q(259),
+ q(0010) => q(365),
+ q(0011) => q(325),
+ q(0012) => q(550),
+ q(0013) => q(285),
+ q(0014) => q(300),
+ q(0015) => q(570),
+ q(0016) => q(367),
+ q(0017) => q(372),
+ q(0018) => q(349),
+ q(0019) => q(440),
+ q(0020) => q(201),
+ q(0021) => q(358),
+ q(0022) => q(445),
+ q(0023) => q(291),
+ q(0024) => q(204),
+ q(0025) => q(403),
+ q(0026) => q(220),
+ q(0027) => q(221),
+ q(0028) => q(315),
+ q(0029) => q(250),
+ q(0030) => q(755),
+ q(0031) => q(070),
+ q(0032) => q(060),
+ q(0033) => q(050),
+ q(0034) => q(226),
+ q(0035) => q(430),
+ q(0036) => q(240),
+ q(0037) => q(241),
+ q(0038) => q(225),
+ q(0039) => q(206),
+ q(0040) => q(343),
+ q(0041) => q(200),
+ q(0042) => q(320),
+ q(0043) => q(310),
+ q(0044) => q(286),
+ q(0045) => q(500),
+ q(0046) => q(371),
+ q(0047) => q(501),
+ q(0048) => q(502),
+ q(0049) => q(125),
+ q(0050) => q(410),
+ q(0051) => q(080),
+ q(0052) => q(450),
+ q(0053) => q(412),
+ q(0054) => q(176),
+ q(0055) => q(610),
+ q(0056) => q(210),
+ q(0057) => q(361),
+ q(0058) => q(413),
+ q(0059) => q(510),
+ q(0060) => q(357),
+ q(0061) => q(411),
+ q(0062) => q(305),
+ q(0063) => q(355),
+ q(0064) => q(322),
+ q(0065) => q(345),
+ q(0066) => q(287),
+ q(0067) => q(436),
+ q(0068) => q(317),
+ q(0069) => q(351),
+ q(0070) => q(356),
+ q(0071) => q(217),
+ q(0072) => q(216),
+ q(0073) => q(215),
+ q(0074) => q(335),
+ q(0075) => q(336),
+ q(0076) => q(400),
+ q(0077) => q(401),
+ q(0078) => q(399),
+ q(0079) => q(437),
+ q(0080) => q(202),
+ q(0081) => q(116),
+ q(0082) => q(314),
+ q(0083) => q(140),
+ q(0084) => q(139),
+ q(0085) => q(090),
+ q(0086) => q(438),
+ q(0087) => q(101),
+ q(0088) => q(100),
+ q(0089) => q(347),
+ q(0090) => q(218),
+ q(0091) => q(145),
+ q(0092) => q(199),
+ q(0093) => q(337),
+ q(0094) => q(350),
+ q(0095) => q(106),
+ q(0096) => q(159),
+ q(0097) => q(420),
+ q(0098) => q(165),
+ q(0099) => q(499),
+ q(0100) => q(212),
+ q(0101) => q(261),
+ q(0102) => q(175),
+ q(0103) => q(327),
+ q(0104) => q(260),
+ q(0105) => q(126),
+ q(0106) => q(227),
+ q(0107) => q(331),
+ q(0108) => q(131),
+ q(0109) => q(132),
+ q(0110) => q(133),
+ q(0111) => q(115),
+ q(0112) => q(282),
+ q(0113) => q(130),
+ q(0114) => q(900),
+ q(0115) => q(949),
+ q(0116) => q(363),
+ q(0117) => q(620),
+ q(0118) => q(211),
+ q(0119) => q(123),
+ q(0120) => q(292),
+ q(0121) => q(105),
+ q(0122) => q(344),
+ q(0123) => q(095),
+ q(0124) => q(281),
+ q(0125) => q(319),
+ q(0126) => q(318),
+ q(0127) => q(348),
+ q(0128) => q(398),
+ q(0129) => q(362),
+ q(0130) => q(316),
+ q(0131) => q(135),
+ q(0132) => q(138),
+ q(0133) => q(137),
+ q(0134) => q(136),
+ q(0135) => q(373),
+ q(0136) => q(321),
+ q(0137) => q(353),
+ q(0138) => q(354),
+ q(0139) => q(346),
+ q(0140) => q(520),
+ q(0141) => q(359),
+ q(0142) => q(340),
+ q(0143) => q(290),
+ q(0144) => q(120),
+ q(0145) => q(370),
+ q(0146) => q(170),
+ q(0147) => q(352),
+ q(0148) => q(330),
+ q(0149) => q(326),
+ q(0150) => q(040),
+ q(0151) => q(470),
+ q(0152) => q(280),
+ q(0153) => q(262),
+ q(0154) => q(480),
+ q(0155) => q(030),
+ q(0156) => q(020),
+ q(0157) => q(460),
+ q(0158) => q(994),
+ q(0159) => q(995),
+ q(0160) => q(996),
},
};
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script_Retired.pm b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script_Retired.pm
index 5a0fc775294..ad468488f63 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script_Retired.pm
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Codes/Script_Retired.pm
@@ -2,7 +2,7 @@ package Locale::Codes::Script_Retired;
# This file was automatically generated. Any changes to this file will
# be lost the next time 'deprecate_codes' is run.
-# Generated on: Thu Mar 1 08:11:47 EST 2012
+# Generated on: Wed Feb 27 10:06:46 EST 2013
=pod
@@ -25,7 +25,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
@@ -33,56 +33,58 @@ modify it under the same terms as Perl itself.
=cut
use strict;
+require 5.006;
use warnings;
-require 5.002;
+use utf8;
our($VERSION);
-$VERSION='3.21';
-
-$Locale::Codes::Retired{'script'}{'num'}{'code'} = {
-};
+$VERSION='3.25';
$Locale::Codes::Retired{'script'}{'alpha'}{'code'} = {
};
-$Locale::Codes::Retired{'script'}{'num'}{'name'} = {
- q(tiruta) => [ q(326), q(Tiruta) ],
+$Locale::Codes::Retired{'script'}{'num'}{'code'} = {
};
$Locale::Codes::Retired{'script'}{'alpha'}{'name'} = {
- q(sindhi) => [ q(Sind), q(Sindhi) ],
- q(miao (pollard)) => [ q(Plrd), q(Miao (Pollard)) ],
- q(ol chiki (ol cemet, ol, santali)) => [ q(Olck), q(Ol Chiki (Ol Cemet, Ol, Santali)) ],
- q(hangul (hangul, hangeul)) => [ q(Hang), q(Hangul (Hangul, Hangeul)) ],
- q(sharada, sarada) => [ q(Shrd), q(Sharada, Sarada) ],
- q(khudawadi, sindhi) => [ q(Sind), q(Khudawadi, Sindhi) ],
- q(myanmar (burmese)) => [ q(Mymr), q(Myanmar (Burmese)) ],
- q(tifinagh (berber)) => [ q(Tfng), q(Tifinagh (Berber)) ],
- q(moon (moon code, moon script, moon type)) => [ q(Moon), q(Moon (Moon code, Moon script, Moon type)) ],
+ q((alias for hiragana + katakana)) => [ q(Hrkt), q((alias for Hiragana + Katakana)) ],
q(cuneiform, sumero-akkadian) => [ q(Xsux), q(Cuneiform, Sumero-Akkadian) ],
- q(warang citi (varang kshiti)) => [ q(Wara), q(Warang Citi (Varang Kshiti)) ],
- q(ethiopic (geez)) => [ q(Ethi), q(Ethiopic (Geez)) ],
- q(tagalog (baybayin, alibata)) => [ q(Tglg), q(Tagalog (Baybayin, Alibata)) ],
q(deseret (mormon)) => [ q(Dsrt), q(Deseret (Mormon)) ],
- q((alias for hiragana + katakana)) => [ q(Hrkt), q((alias for Hiragana + Katakana)) ],
- q(mandaic, mandaean) => [ q(Mand), q(Mandaic, Mandaean) ],
q(devanagari (nagari)) => [ q(Deva), q(Devanagari (Nagari)) ],
- q(tai tham (lanna)) => [ q(Lana), q(Tai Tham (Lanna)) ],
- q(shavian (shaw)) => [ q(Shaw), q(Shavian (Shaw)) ],
+ q(duployan shorthand, duployan stenography) => [ q(Dupl), q(Duployan shorthand, Duployan stenography) ],
+ q(ethiopic (geez)) => [ q(Ethi), q(Ethiopic (Geez)) ],
+ q(han (hanzi, kanji, hanja)) => [ q(Hani), q(Han (Hanzi, Kanji, Hanja)) ],
+ q(hangul (hangul, hangeul)) => [ q(Hang), q(Hangul (Hangul, Hangeul)) ],
+ q(hanunoo (hanunoo)) => [ q(Hano), q(Hanunoo (Hanunoo)) ],
q(indus (harappan)) => [ q(Inds), q(Indus (Harappan)) ],
- q(lisu (fraser)) => [ q(Lisu), q(Lisu (Fraser)) ],
+ q(khudawadi, sindhi) => [ q(Sind), q(Khudawadi, Sindhi) ],
q(lepcha (rong)) => [ q(Lepc), q(Lepcha (Rong)) ],
- q(mro, mru) => [ q(Mroo), q(Mro, Mru) ],
+ q(lisu (fraser)) => [ q(Lisu), q(Lisu (Fraser)) ],
+ q(mandaic, mandaean) => [ q(Mand), q(Mandaic, Mandaean) ],
q(meitei mayek (meithei, meetei)) => [ q(Mtei), q(Meitei Mayek (Meithei, Meetei)) ],
- q(tiruta) => [ q(Tirh), q(Tiruta) ],
+ q(miao (pollard)) => [ q(Plrd), q(Miao (Pollard)) ],
+ q(moon (moon code, moon script, moon type)) => [ q(Moon), q(Moon (Moon code, Moon script, Moon type)) ],
+ q(mro, mru) => [ q(Mroo), q(Mro, Mru) ],
+ q(myanmar (burmese)) => [ q(Mymr), q(Myanmar (Burmese)) ],
q(nakhi geba ('na-'khi ggo-baw, naxi geba)) => [ q(Nkgb), q(Nakhi Geba ('Na-'Khi Ggo-baw, Naxi Geba)) ],
+ q(ol chiki (ol cemet, ol, santali)) => [ q(Olck), q(Ol Chiki (Ol Cemet, Ol, Santali)) ],
q(old north arabian (ancient north arabian)) => [ q(Narb), q(Old North Arabian (Ancient North Arabian)) ],
- q(takri, takri, tankri) => [ q(Takr), q(Takri, Takri, Tankri) ],
- q(rejang (redjang, kaganga)) => [ q(Rjng), q(Rejang (Redjang, Kaganga)) ],
- q(han (hanzi, kanji, hanja)) => [ q(Hani), q(Han (Hanzi, Kanji, Hanja)) ],
q(old turkic, orkhon runic) => [ q(Orkh), q(Old Turkic, Orkhon Runic) ],
- q(hanunoo (hanunoo)) => [ q(Hano), q(Hanunoo (Hanunoo)) ],
- q(duployan shorthand, duployan stenography) => [ q(Dupl), q(Duployan shorthand, Duployan stenography) ],
+ q(rejang (redjang, kaganga)) => [ q(Rjng), q(Rejang (Redjang, Kaganga)) ],
+ q(sharada, sarada) => [ q(Shrd), q(Sharada, Sarada) ],
+ q(shavian (shaw)) => [ q(Shaw), q(Shavian (Shaw)) ],
+ q(sindhi) => [ q(Sind), q(Sindhi) ],
+ q(tagalog (baybayin, alibata)) => [ q(Tglg), q(Tagalog (Baybayin, Alibata)) ],
+ q(tai tham (lanna)) => [ q(Lana), q(Tai Tham (Lanna)) ],
+ q(takri, takri, tankri) => [ q(Takr), q(Takri, Takri, Tankri) ],
+ q(tifinagh (berber)) => [ q(Tfng), q(Tifinagh (Berber)) ],
+ q(tiruta) => [ q(Tirh), q(Tiruta) ],
+ q(warang citi (varang kshiti)) => [ q(Wara), q(Warang Citi (Varang Kshiti)) ],
+};
+
+$Locale::Codes::Retired{'script'}{'num'}{'name'} = {
+ q(old hungarian) => [ q(176), q(Old Hungarian) ],
+ q(tiruta) => [ q(326), q(Tiruta) ],
};
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Country.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Country.pod
index b9ceff31476..df7cdc2d1b2 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Country.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Country.pod
@@ -72,8 +72,9 @@ National Geospatial-Intelligence Agency.
=item B<dom, LOCALE_CODE_DOM>
-The IANA is responsible for assigning two-letter (uppercase) top-level
-domain names to each country.
+The IANA is responsible for delegating management of the top level country
+domains. The country domains are the two-letter (lowercase) codes from ISO 3166
+with a few other additions.
=back
@@ -162,6 +163,8 @@ so I cannot check the alpha-3 and numerical codes here.
=item B<http://www.iso.org/iso/list-en1-semic-3.txt>
+=item B<http://www.iso.org/iso/home/standards/country_codes/iso-3166-1_decoding_table.htm>
+
The source of ISO 3166-1 two-letter codes used by this
module.
@@ -206,7 +209,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Currency.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Currency.pod
index a4156eef4c3..7ae54174635 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Currency.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Currency.pod
@@ -119,7 +119,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001 Michael Hennecke
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Language.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Language.pod
index c6a25032735..1aba870f80a 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Language.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Language.pod
@@ -129,7 +129,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Script.pod b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Script.pod
index 0afb533601e..bcbf850373a 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Script.pod
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/lib/Locale/Script.pod
@@ -123,7 +123,7 @@ Currently maintained by Sullivan Beck (sbeck@cpan.org).
Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
Copyright (c) 2001-2010 Neil Bowers
- Copyright (c) 2010-2012 Sullivan Beck
+ Copyright (c) 2010-2013 Sullivan Beck
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/t/code2currency.t b/gnu/usr.bin/perl/cpan/Locale-Codes/t/code2currency.t
index 633674c43be..cab22db1bb4 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/t/code2currency.t
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/t/code2currency.t
@@ -99,7 +99,7 @@ rub
~
Russian Ruble
-zmk
+zmw
~
Zambian Kwacha
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/t/country2code.t b/gnu/usr.bin/perl/cpan/Locale-Codes/t/country2code.t
index efbffd1952d..6f70ff38eb5 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/t/country2code.t
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/t/country2code.t
@@ -21,6 +21,8 @@ use Locale::Codes::Country;
%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
"LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
"LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+ "LOCALE_CODE_FIPS" => LOCALE_CODE_FIPS,
+ "LOCALE_CODE_DOM" => LOCALE_CODE_DOM,
);
sub test {
@@ -98,7 +100,7 @@ Libya
~
ly
-Syria
+Syrian Arab Republic
~
sy
@@ -169,6 +171,38 @@ LOCALE_CODE_NUMERIC
~
180
+Syria
+ ~
+ sy
+
+# Last codes in each set (we'll assume that if we got these, there's a good
+# possiblity that we got all the others).
+
+Zimbabwe
+LOCALE_CODE_ALPHA_2
+ ~
+ zw
+
+Zimbabwe
+LOCALE_CODE_ALPHA_3
+ ~
+ zwe
+
+Zimbabwe
+LOCALE_CODE_NUMERIC
+ ~
+ 716
+
+Zimbabwe
+LOCALE_CODE_FIPS
+ ~
+ ZI
+
+Zimbabwe
+LOCALE_CODE_DOM
+ ~
+ zw
+
";
print "country2code...\n";
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/t/country2code_old.t b/gnu/usr.bin/perl/cpan/Locale-Codes/t/country2code_old.t
index 1b3065f3c62..1f5fd5ebb87 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/t/country2code_old.t
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/t/country2code_old.t
@@ -98,7 +98,7 @@ Libya
~
ly
-Syria
+Syrian Arab Republic
~
sy
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/t/language2code.t b/gnu/usr.bin/perl/cpan/Locale-Codes/t/language2code.t
index f446fff5438..111b81219c3 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/t/language2code.t
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/t/language2code.t
@@ -70,6 +70,33 @@ japanese
~
ja
+# Last ones in the list
+
+Zulu
+LOCALE_LANG_ALPHA_2
+ ~
+ zu
+
+Zaza
+LOCALE_LANG_ALPHA_3
+ ~
+ zza
+
+Welsh
+LOCALE_LANG_TERM
+ ~
+ cym
+
+Zande languages
+LOCALE_LANG_ALPHA_3
+ ~
+ znd
+
+Zuojiang Zhuang
+LOCALE_LANG_ALPHA_3
+ ~
+ zzj
+
";
print "language2code...\n";
diff --git a/gnu/usr.bin/perl/cpan/Locale-Codes/t/testfunc.pl b/gnu/usr.bin/perl/cpan/Locale-Codes/t/testfunc.pl
index 596823e3e75..f851635a8ec 100644
--- a/gnu/usr.bin/perl/cpan/Locale-Codes/t/testfunc.pl
+++ b/gnu/usr.bin/perl/cpan/Locale-Codes/t/testfunc.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# Copyright (c) 1996-2012 Sullivan Beck. All rights reserved.
+# Copyright (c) 1996-2013 Sullivan Beck. All rights reserved.
# This program is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Log-Message-Simple/lib/Log/Message/Simple.pm b/gnu/usr.bin/perl/cpan/Log-Message-Simple/lib/Log/Message/Simple.pm
index efceae5b676..f9db4ffc1aa 100644
--- a/gnu/usr.bin/perl/cpan/Log-Message-Simple/lib/Log/Message/Simple.pm
+++ b/gnu/usr.bin/perl/cpan/Log-Message-Simple/lib/Log/Message/Simple.pm
@@ -1,13 +1,14 @@
package Log::Message::Simple;
+use if $] > 5.017, 'deprecate';
use strict;
use Log::Message private => 0;;
-BEGIN {
- use vars qw[$VERSION];
- $VERSION = 0.08;
+BEGIN {
+ use vars qw[$VERSION];
+ $VERSION = '0.10';
}
-
+
=pod
@@ -45,7 +46,7 @@ Log::Message::Simple - Simplified interface to Log::Message
local $Log::Message::Simple::MSG_FH = \*STDERR;
local $Log::Message::Simple::ERROR_FH = \*STDERR;
local $Log::Message::Simple::DEBUG_FH = \*STDERR;
-
+
### force a stacktrace on error
local $Log::Message::Simple::STACKTRACE_ON_ERROR = 1
@@ -68,7 +69,7 @@ Exported by default, or using the C<:STD> tag.
=head2 debug("message string" [,VERBOSE])
Records a debug message on the stack, and prints it to C<STDOUT> (or
-actually C<$DEBUG_FH>, see the C<GLOBAL VARIABLES> section below),
+actually C<$DEBUG_FH>, see the C<GLOBAL VARIABLES> section below),
if the C<VERBOSE> option is true.
The C<VERBOSE> option defaults to false.
@@ -83,10 +84,10 @@ The C<VERBOSE> options defaults to true.
Exported by default, or using the C<:STD> tag.
-=cut
+=cut
{ package Log::Message::Handlers;
-
+
sub msg {
my $self = shift;
my $verbose = shift || 0;
@@ -127,8 +128,8 @@ Exported by default, or using the C<:STD> tag.
my $msg = '['. $self->tag . '] ' . $self->message;
- print $Log::Message::Simple::STACKTRACE_ON_ERROR
- ? Carp::shortmess($msg)
+ print $Log::Message::Simple::STACKTRACE_ON_ERROR
+ ? Carp::shortmess($msg)
: $msg . "\n";
select $old_fh;
@@ -197,23 +198,23 @@ BEGIN {
@ISA = 'Exporter';
@EXPORT = qw[error msg debug];
@EXPORT_OK = qw[carp cluck croak confess];
-
+
%EXPORT_TAGS = (
STD => \@EXPORT,
CARP => \@EXPORT_OK,
ALL => [ @EXPORT, @EXPORT_OK ],
- );
+ );
my $log = new Log::Message;
for my $func ( @EXPORT, @EXPORT_OK ) {
no strict 'refs';
-
+
### up the carplevel for the carp emulation
### functions
*$func = sub { local $Carp::CarpLevel += 2
if grep { $_ eq $func } @EXPORT_OK;
-
+
my $msg = shift;
$log->store(
message => $msg,
@@ -265,7 +266,7 @@ printed. This default to C<*STDOUT>.
=item $STACKTRACE_ON_ERROR
-If this option is set to C<true>, every call to C<error()> will
+If this option is set to C<true>, every call to C<error()> will
generate a stacktrace using C<Carp::shortmess()>.
Defaults to C<false>
@@ -280,7 +281,7 @@ BEGIN {
$ERROR_FH = \*STDERR;
$MSG_FH = \*STDOUT;
$DEBUG_FH = \*STDOUT;
-
+
$STACKTRACE_ON_ERROR = 0;
}
diff --git a/gnu/usr.bin/perl/cpan/Log-Message-Simple/t/02_imports.t b/gnu/usr.bin/perl/cpan/Log-Message-Simple/t/02_imports.t
index 4910b971c90..4fc22ba4ecf 100755
--- a/gnu/usr.bin/perl/cpan/Log-Message-Simple/t/02_imports.t
+++ b/gnu/usr.bin/perl/cpan/Log-Message-Simple/t/02_imports.t
@@ -9,50 +9,50 @@ my @Msg = qw[msg debug error];
### test empty import
{ package Test::A;
-
+
eval "use $Class ()";
Test::More::ok( !$@, "using $Class with no import" );
-
+
for my $func ( @Carp, @Msg ) {
Test::More::ok( !__PACKAGE__->can( $func ),
" $func not imported" );
}
-}
+}
### test :STD import
{ package Test::B;
eval "use $Class ':STD'";
Test::More::ok( !$@, "using $Class with :STD import" );
-
+
for my $func ( @Carp ) {
Test::More::ok( !__PACKAGE__->can( $func ),
" $func not imported" );
}
-
+
for my $func ( @Msg ) {
Test::More::ok( __PACKAGE__->can( $func ),
" $func imported" );
- }
-}
+ }
+}
### test :CARP import
{ package Test::C;
eval "use $Class ':CARP'";
Test::More::ok( !$@, "using $Class with :CARP import" );
-
+
for my $func ( @Msg ) {
Test::More::ok( !__PACKAGE__->can( $func ),
" $func not imported" );
}
-
+
for my $func ( @Carp ) {
Test::More::ok( __PACKAGE__->can( $func ),
" $func imported" );
- }
-}
+ }
+}
### test all import
@@ -60,9 +60,9 @@ my @Msg = qw[msg debug error];
eval "use $Class ':ALL'";
Test::More::ok( !$@, "using $Class with :ALL import" );
-
+
for my $func ( @Carp, @Msg ) {
Test::More::ok( __PACKAGE__->can( $func ),
" $func imported" );
- }
-}
+ }
+}
diff --git a/gnu/usr.bin/perl/cpan/Log-Message-Simple/t/03_functions.t b/gnu/usr.bin/perl/cpan/Log-Message-Simple/t/03_functions.t
index 7d8a0d89949..952efb9aae8 100755
--- a/gnu/usr.bin/perl/cpan/Log-Message-Simple/t/03_functions.t
+++ b/gnu/usr.bin/perl/cpan/Log-Message-Simple/t/03_functions.t
@@ -18,7 +18,7 @@ use_ok( $Class );
### & friends will print there
for my $name (@Carp, @Msg) {
no strict 'refs';
- *$name = sub {
+ *$name = sub {
local $^W;
### do the block twice to avoid 'used only once'
@@ -36,41 +36,41 @@ use_ok( $Class );
local *STDERR;
local $SIG{__WARN__} = sub { };
-
+
my $ref = $Class->can( $name );
$ref->( @_ );
};
- }
+ }
}
for my $name (@Carp, @Msg) {
-
+
my $ref = $Pkg->can( $name );
ok( $ref, "Found function for '$name'" );
### start with an empty stack?
cmp_ok( scalar @{[$Class->stack]}, '==', 0,
" Starting with empty stack" );
- ok(!$Class->stack_as_string," Stringified stack empty" );
-
+ ok(!$Class->stack_as_string," Stringified stack empty" );
+
### call the func... no output should appear
### eval this -- the croak/confess functions die
eval { $ref->( $Text ); };
-
+
my @stack = $Class->stack;
cmp_ok( scalar(@stack), '==', 1,
" Text logged to stack" );
-
- for my $re ( $Text, quotemeta '['.uc($name).']' ) {
+
+ for my $re ( $Text, quotemeta '['.uc($name).']' ) {
like( $Class->stack_as_string, qr/$re/,
" Text as expected" );
}
- ### empty stack again ###
+ ### empty stack again ###
ok( $Class->flush, " Stack flushed" );
cmp_ok( scalar @{[$Class->stack]}, '==', 0,
" Starting with empty stack" );
- ok(!$Class->stack_as_string," Stringified stack empty" );
+ ok(!$Class->stack_as_string," Stringified stack empty" );
}
diff --git a/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message.pm b/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message.pm
index 96ab34a2645..effcd133b9e 100644
--- a/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message.pm
+++ b/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message.pm
@@ -1,4 +1,5 @@
package Log::Message;
+use if $] > 5.017, 'deprecate';
use strict;
@@ -11,9 +12,7 @@ local $Params::Check::VERBOSE = 1;
BEGIN {
use vars qw[$VERSION @ISA $STACK $CONFIG];
-
- $VERSION = 0.04;
-
+ $VERSION = '0.06';
$STACK = [];
}
@@ -89,7 +88,7 @@ More on this below.
These are individual message items, which are objects that contain
the user message as well as the meta-data described above.
-See the L<Log::Message::Item> manpage to see how to extract this
+See the L<Log::Message::Item> manpage to see how to extract this
meta-data and how to work with the Item objects.
You should never need to create your own Item objects, but knowing
about their methods and accessors is important if you want to write
@@ -179,8 +178,8 @@ provided.
=item verbose
Log::Message makes use of another module to validate its arguments,
-which is called L<Params::Check>, which is a lightweight, yet
-powerful input checker and parser. (See the L<Params::Check>
+which is called L<Params::Check>, which is a lightweight, yet
+powerful input checker and parser. (See the L<Params::Check>
manpage for details).
The verbose setting will control whether this module will
@@ -314,7 +313,7 @@ sub _new_stack {
};
my $args = check( $tmpl, \%hash, $CONFIG->verbose ) or (
- warn(loc(q[Could not create a new stack object: %1],
+ warn(loc(q[Could not create a new stack object: %1],
Params::Check->last_error)
),
return
@@ -399,9 +398,9 @@ sub store {
%hash = @_;
}
- my $args = check( $tmpl, \%hash ) or (
- warn( loc(q[Could not store error: %1], Params::Check->last_error) ),
- return
+ my $args = check( $tmpl, \%hash ) or (
+ warn( loc(q[Could not store error: %1], Params::Check->last_error) ),
+ return
);
my $extra = delete $args->{extra};
@@ -488,10 +487,10 @@ sub retrieve {
}
my $args = check( $tmpl, \%hash ) or (
- warn( loc(q[Could not parse input: %1], Params::Check->last_error) ),
- return
+ warn( loc(q[Could not parse input: %1], Params::Check->last_error) ),
+ return
);
-
+
my @list =
grep { $_->tag =~ /$args->{tag}/ ? 1 : 0 }
grep { $_->level =~ /$args->{level}/ ? 1 : 0 }
@@ -561,7 +560,7 @@ This removes all items from the stack and returns them to the caller
sub flush {
my $self = shift;
-
+
return splice @{$self->{STACK}};
}
diff --git a/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Config.pm b/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Config.pm
index fff771bbb8a..e326e40c94c 100644
--- a/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Config.pm
+++ b/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Config.pm
@@ -1,4 +1,5 @@
package Log::Message::Config;
+use if $] > 5.017, 'deprecate';
use strict;
use Params::Check qw[check];
@@ -8,7 +9,7 @@ use Locale::Maketext::Simple Style => 'gettext';
BEGIN {
use vars qw[$VERSION $AUTOLOAD];
- $VERSION = 0.04;
+ $VERSION = '0.06';
}
sub new {
diff --git a/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Handlers.pm b/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Handlers.pm
index 366c03ad018..956b0661be5 100644
--- a/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Handlers.pm
+++ b/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Handlers.pm
@@ -1,8 +1,9 @@
package Log::Message::Handlers;
+use if $] > 5.017, 'deprecate';
use strict;
use vars qw[$VERSION];
-$VERSION = '0.04';
+$VERSION = '0.06';
=pod
diff --git a/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Item.pm b/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Item.pm
index 918a366e8c6..13e1e459cc3 100644
--- a/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Item.pm
+++ b/gnu/usr.bin/perl/cpan/Log-Message/lib/Log/Message/Item.pm
@@ -1,4 +1,5 @@
package Log::Message::Item;
+use if $] > 5.017, 'deprecate';
use strict;
use vars qw[$VERSION];
@@ -11,7 +12,7 @@ use Carp ();
BEGIN {
use vars qw[$AUTOLOAD $VERSION];
- $VERSION = '0.04';
+ $VERSION = '0.06';
}
### create a new item.
diff --git a/gnu/usr.bin/perl/cpan/Log-Message/t/01_Log-Message-Config.t b/gnu/usr.bin/perl/cpan/Log-Message/t/01_Log-Message-Config.t
index 2f8a021d7e1..0c7e08902b8 100755
--- a/gnu/usr.bin/perl/cpan/Log-Message/t/01_Log-Message-Config.t
+++ b/gnu/usr.bin/perl/cpan/Log-Message/t/01_Log-Message-Config.t
@@ -1,10 +1,10 @@
### Log::Message::Config test suite ###
-BEGIN {
+BEGIN {
if( $ENV{PERL_CORE} ) {
chdir '../lib/Log/Message' if -d '../lib/Log/Message';
unshift @INC, '../../..';
}
-}
+}
BEGIN { chdir 't' if -d 't' }
@@ -81,4 +81,4 @@ use_ok( 'Log::Message' ) or diag "Module.pm not found. Dying", die;
);
is_deeply( $mixed, $log->{CONFIG}, q[Config creation from file & options] );
}
-
+
diff --git a/gnu/usr.bin/perl/cpan/Log-Message/t/02_Log-Message.t b/gnu/usr.bin/perl/cpan/Log-Message/t/02_Log-Message.t
index 83944585edc..592c93be79b 100755
--- a/gnu/usr.bin/perl/cpan/Log-Message/t/02_Log-Message.t
+++ b/gnu/usr.bin/perl/cpan/Log-Message/t/02_Log-Message.t
@@ -1,10 +1,10 @@
### Log::Message test suite ###
-BEGIN {
+BEGIN {
if( $ENV{PERL_CORE} ) {
chdir '../lib/Log/Message' if -d '../lib/Log/Message';
unshift @INC, '../../..';
}
-}
+}
BEGIN { chdir 't' if -d 't' }
@@ -18,7 +18,7 @@ for my $pkg ( qw[ Log::Message Log::Message::Config
Log::Message::Item Log::Message::Handlers]
) {
use_ok( $pkg ) or diag "'$pkg' not found. Dying";
-}
+}
### test global stack
{
@@ -69,11 +69,11 @@ for my $pkg ( qw[ Log::Message Log::Message::Config
);
{
- ok( $log->retrieve( message => qr/baz/ ),
+ ok( $log->retrieve( message => qr/baz/ ),
q[ Retrieving based on message] );
- ok( $log->retrieve( tag => qr/TAG/ ),
+ ok( $log->retrieve( tag => qr/TAG/ ),
q[ Retrieving based on tag] );
- ok( $log->retrieve( level => qr/test/ ),
+ ok( $log->retrieve( level => qr/test/ ),
q[ Retrieving based on level] );
}
@@ -95,7 +95,7 @@ for my $pkg ( qw[ Log::Message Log::Message::Config
like( $item->shortmess, qr/\w+/,
q[ Item shortmess stored properly]
);
-
+
ok( $item->longmess, q[Item longmess stored] );
like( $item->longmess, qr/Log::Message::store/s,
q[ Item longmess stored properly]
@@ -118,7 +118,7 @@ for my $pkg ( qw[ Log::Message Log::Message::Config
{
ok( $item->remove, q[Removing item from stack] );
- ok( (!grep{ $item eq $_ } $log->retrieve),
+ ok( (!grep{ $item eq $_ } $log->retrieve),
q[ Item removed from stack] );
}
@@ -127,36 +127,36 @@ for my $pkg ( qw[ Log::Message Log::Message::Config
ok( @{$log->{STACK}} == 0, q[Flushing stack] );
}
}
-
-### test errors
+
+### test errors
{ my $log = Log::Message->new( private => 1 );
-
+
### store errors
{ ### dont make it print
my $warnings;
local $SIG{__WARN__} = sub { $warnings .= "@_" };
-
+
my $rv = $log->store();
ok( !$rv, q[Logging empty message failed] );
like( $warnings, qr/message/, q[ Spotted the error] );
}
-
+
### retrieve errors
{ ### dont make it print
my $warnings;
local $SIG{__WARN__} = sub { $warnings .= "@_" };
-
+
### XXX whitebox test!
local $Params::Check::VERBOSE = 1; # so the warnings are emitted
local $Params::Check::VERBOSE = 1; # so the warnings are emitted
-
+
my $rv = $log->retrieve( frobnitz => $$ );
ok( !$rv, q[Retrieval with bogus args] );
- like( $warnings, qr/not a valid key/,
+ like( $warnings, qr/not a valid key/,
qq[ Spotted the error] );
}
-}
+}
diff --git a/gnu/usr.bin/perl/cpan/Log-Message/t/conf/config_file b/gnu/usr.bin/perl/cpan/Log-Message/t/conf/config_file
index 834529ad9d5..0c471319feb 100644
--- a/gnu/usr.bin/perl/cpan/Log-Message/t/conf/config_file
+++ b/gnu/usr.bin/perl/cpan/Log-Message/t/conf/config_file
@@ -27,4 +27,4 @@
# retrieve errors in chronological order, or not?
# if none provided, set to '1'
- chrono = 0
+ chrono = 0 \ No newline at end of file
diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/AnyDBM_File.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/AnyDBM_File.pm
index 078f69e011d..cf5f7f5bc21 100644
--- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/AnyDBM_File.pm
+++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/AnyDBM_File.pm
@@ -11,7 +11,7 @@ See L<Memoize>.
=cut
use vars qw(@ISA $VERSION);
-$VERSION = '1.02';
+$VERSION = '1.03';
@ISA = qw(DB_File GDBM_File Memoize::NDBM_File Memoize::SDBM_File ODBM_File) unless @ISA;
my $verbose = 1;
diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/Expire.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/Expire.pm
index 3d6d3e439ca..9b3b94444c1 100644
--- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/Expire.pm
+++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/Expire.pm
@@ -3,7 +3,7 @@ package Memoize::Expire;
# require 5.00556;
use Carp;
$DEBUG = 0;
-$VERSION = '1.02';
+$VERSION = '1.03';
# This package will implement expiration by prepending a fixed-length header
# to the font of the cached data. The format of the header will be:
diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireFile.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireFile.pm
index e3123b83408..06b72f8ef2a 100644
--- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireFile.pm
+++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireFile.pm
@@ -10,7 +10,7 @@ See L<Memoize::Expire>.
=cut
-$VERSION = '1.02';
+$VERSION = '1.03';
use Carp;
my $Zero = pack("N", 0);
diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireTest.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireTest.pm
index 3c69e56c9f9..7f7dd28af6f 100644
--- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireTest.pm
+++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireTest.pm
@@ -18,7 +18,7 @@ to mjd-perl-memoize+@plover.com.
=cut
-$VERSION = '1.02';
+$VERSION = '1.03';
my %cache;
sub TIEHASH {
diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/NDBM_File.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/NDBM_File.pm
index 07b8950a60b..ff934c656bc 100644
--- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/NDBM_File.pm
+++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/NDBM_File.pm
@@ -12,7 +12,7 @@ See L<Memoize>.
use NDBM_File;
@ISA = qw(NDBM_File);
-$VERSION = '1.02';
+$VERSION = '1.03';
$Verbose = 0;
diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/SDBM_File.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/SDBM_File.pm
index 6cb11af7329..7cfaa4afb98 100644
--- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/SDBM_File.pm
+++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/SDBM_File.pm
@@ -12,7 +12,7 @@ See L<Memoize>.
use SDBM_File;
@ISA = qw(SDBM_File);
-$VERSION = '1.02';
+$VERSION = '1.03';
$Verbose = 0;
diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/Storable.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/Storable.pm
index 33e35b485e1..13147972972 100644
--- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/Storable.pm
+++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/Storable.pm
@@ -11,7 +11,7 @@ See L<Memoize>.
=cut
use Storable ();
-$VERSION = '1.02';
+$VERSION = '1.03';
$Verbose = 0;
sub TIEHASH {
diff --git a/gnu/usr.bin/perl/cpan/Memoize/t/array_confusion.t b/gnu/usr.bin/perl/cpan/Memoize/t/array_confusion.t
index 44847c36b77..4ad6c960ef7 100755
--- a/gnu/usr.bin/perl/cpan/Memoize/t/array_confusion.t
+++ b/gnu/usr.bin/perl/cpan/Memoize/t/array_confusion.t
@@ -2,6 +2,7 @@
use lib '..';
use Memoize 'memoize', 'unmemoize';
+use Test::More;
sub reff {
return [1,2,3];
@@ -12,20 +13,20 @@ sub listf {
return (1,2,3);
}
-print "1..6\n";
+sub f17 { return 17 }
+
+plan tests => 7;
memoize 'reff', LIST_CACHE => 'MERGE';
-print "ok 1\n";
memoize 'listf';
-print "ok 2\n";
$s = reff();
@a = reff();
-print @a == 1 ? "ok 3\n" : "not ok 3\n";
+is(scalar(@a), 1, "reff list context");
$s = listf();
@a = listf();
-print @a == 3 ? "ok 4\n" : "not ok 4\n";
+is(scalar(@a), 3, "listf list context");
unmemoize 'reff';
memoize 'reff', LIST_CACHE => 'MERGE';
@@ -34,10 +35,13 @@ memoize 'listf';
@a = reff();
$s = reff();
-print @a == 1 ? "ok 5\n" : "not ok 5\n";
+is(scalar @a, 1, "reff list context");
@a = listf();
$s = listf();
-print @a == 3 ? "ok 6\n" : "not ok 6\n";
-
+is(scalar @a, 3, "listf list context");
+memoize 'f17', SCALAR_CACHE => 'MERGE';
+is(f17(), 17, "f17 first call");
+is(f17(), 17, "f17 second call");
+is(scalar(f17()), 17, "f17 scalar context call");
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/Changes b/gnu/usr.bin/perl/cpan/Module-Build/Changes
index 02f73b079fd..5d7996861aa 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/Changes
+++ b/gnu/usr.bin/perl/cpan/Module-Build/Changes
@@ -1,5 +1,72 @@
Revision history for Perl extension Module::Build.
+0.4003 - Sat Aug 18 11:17:49 CEST 2012
+
+ [BUG FIXES]
+
+ - Get rid of outdated metadata tests [Steve Hay]
+
+0.4002 - Fri Jul 27 20:04:09 EEST 2012
+
+ [BUG FIXES]
+
+ - Test for TAP::Harness version properly [Leon Timmermans]
+
+ - Install to 'site' on 5.12+ [Leon Timmermans]
+
+ [DOCUMENTATION]
+
+ - Document extra_{compiler|linker}_flags accessors [Nick Wellnhofer]
+
+0.4001 - Tue Jun 26 20:54:15 CEST 2012
+ [BUG FIXES]
+
+ - Parse Pod name a litte more leniently [Paul Evans]
+
+ [DOCUMENTATION]
+
+ - Various spelling fixes [Leon Timmermans, Jonathan Yu]
+
+ - Fixes configuration keys used for script location [Leon Timmermans, reported by Samuel Ferencik]
+
+ [OTHER]
+
+ - use warnings
+
+0.40 - Fri Feb 24 18:47:48 CET 2012
+
+ - Released 0.39_02 as 0.40 without any code changes
+
+0.39_02 - Thu Feb 17 00:33:18 MET 2012
+
+ [BUG FIXES]
+
+ - Fixed bug where modules without $VERSION might have a version of '0'
+ listed in 'provides' metadata, which will be rejected by PAUSE
+ [David Golden, reported by Christopher Fields]
+
+ - Fixed bug in PodParser to allow numerals in module names
+ [Tokuhirom]
+
+ - Fixed bug where giving arguments twice led to them becoming arrays,
+ resulting in install paths like "ARRAY(0xdeadbeef)/lib/Foo.pm"
+ [Leon Timmermans]
+
+ [DOCUMENTATION]
+
+ - Fixed deviance from alphabetical order in documentation of
+ constructor parameters. [Eric Brine]
+
+ - Add documentation for configure_requires constructor parameter.
+ [Eric Brine]
+
+ - Change some of the docs' language describing relationship to
+ MakeMaker. [Ken Williams]
+
+ [OTHER]
+
+ - List Perl-Toolchain-Gang repo as official repo
+
0.39_01 - Thu Jul 21 16:48:48 EDT 2011
[BUG FIXES]
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/bin/config_data b/gnu/usr.bin/perl/cpan/Module-Build/bin/config_data
index 40c8ea48f60..fcd5c4d4bd8 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/bin/config_data
+++ b/gnu/usr.bin/perl/cpan/Module-Build/bin/config_data
@@ -162,13 +162,13 @@ Koenig (C<CPAN::Config>), Jon Swartz (C<HTML::Mason::Config>), Andy
Wardley (C<Template::Config>), and Larry Wall (perl's own Config.pm)
have developed independently.
-The configuration system emplyed here was developed in the context of
+The configuration system employed here was developed in the context of
C<Module::Build>. Under this system, configuration information for a
module C<Foo>, for example, is stored in a module called
C<Foo::ConfigData>) (I would have called it C<Foo::Config>, but that
was taken by all those other systems mentioned in the previous
paragraph...). These C<...::ConfigData> modules contain the
-configuration data, as well as publically accessible methods for
+configuration data, as well as publicly accessible methods for
querying and setting (yes, actually re-writing) the configuration
data. The C<config_data> script (whose docs you are currently
reading) is merely a front-end for those methods. If you wish, you
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build.pm
index e1fc6cabb6f..fd835fc0659 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build.pm
@@ -16,7 +16,7 @@ use Module::Build::Base;
use vars qw($VERSION @ISA);
@ISA = qw(Module::Build::Base);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
@@ -878,7 +878,7 @@ parameter as follows:
lib => installprivlib installsitelib installvendorlib
arch => installarchlib installsitearch installvendorarch
- script => installscript installsitebin installvendorbin
+ script => installscript installsitescript installvendorscript
bin => installbin installsitebin installvendorbin
bindoc => installman1dir installsiteman1dir installvendorman1dir
libdoc => installman3dir installsiteman3dir installvendorman3dir
@@ -967,24 +967,28 @@ platform you're installing on.
=item prefix
Provided for compatibility with C<ExtUtils::MakeMaker>'s PREFIX argument.
-C<prefix> should be used when you wish Module::Build to install your
-modules, documentation and scripts in the same place
-C<ExtUtils::MakeMaker> does.
+C<prefix> should be used when you want Module::Build to install your
+modules, documentation, and scripts in the same place as
+C<ExtUtils::MakeMaker>'s PREFIX mechanism.
The following are equivalent.
perl Build.PL --prefix /tmp/foo
perl Makefile.PL PREFIX=/tmp/foo
-Because of the very complex nature of the prefixification logic, the
+Because of the complex nature of the prefixification logic, the
behavior of PREFIX in C<MakeMaker> has changed subtly over time.
Module::Build's --prefix logic is equivalent to the PREFIX logic found
in C<ExtUtils::MakeMaker> 6.30.
-If you do not need to retain compatibility with C<ExtUtils::MakeMaker> or
+The maintainers of C<MakeMaker> do understand the troubles with the
+PREFIX mechanism, and added INSTALL_BASE support in version 6.31 of
+C<MakeMaker>, which was released in 2006.
+
+If you don't need to retain compatibility with old versions (pre-6.31) of C<ExtUtils::MakeMaker> or
are starting a fresh Perl installation we recommend you use
C<install_base> instead (and C<INSTALL_BASE> in C<ExtUtils::MakeMaker>).
-See L<Module::Build::Cookbook/Instaling in the same location as
+See L<Module::Build::Cookbook/Installing in the same location as
ExtUtils::MakeMaker> for further information.
@@ -1046,14 +1050,14 @@ perl.
It is risky to make major changes to C<MakeMaker>, since it does so many
things, is so important, and generally works. C<Module::Build> is an
entirely separate package so that I can work on it all I want, without
-worrying about backward compatibility.
+worrying about backward compatibility with C<MakeMaker>.
=item *
Finally, Perl is said to be a language for system administration.
Could it really be the case that Perl isn't up to the task of building
-and installing software? Even if that software is a bunch of stupid
-little C<.pm> files that just need to be copied from one place to
+and installing software? Even if that software is a bunch of
+C<.pm> files that just need to be copied from one place to
another? My sense was that we could design a system to accomplish
this in a flexible, extensible, and friendly manner. Or die trying.
@@ -1083,7 +1087,7 @@ Bug reports are also welcome at
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Module-Build>.
The latest development version is available from the Git
-repository at <https://github.com/dagolden/module-build/>
+repository at <https://github.com/Perl-Toolchain-Gang/Module-Build>
=head1 COPYRIGHT
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/API.pod b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/API.pod
index 29d2f359c8e..4980218dac7 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/API.pod
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/API.pod
@@ -157,6 +157,24 @@ checking on binary/packaged distributions of the module.
See the documentation for L<Module::Build::Authoring/"PREREQUISITES">
for the details of how requirements can be specified.
+=item configure_requires
+
+[version 0.30]
+
+Modules listed in this section must be installed I<before> configuring
+this distribution (i.e. before running the F<Build.PL> script).
+This might be a specific minimum version of C<Module::Build> or any
+other module the F<Build.PL> needs in order to do its stuff. Clients
+like C<CPAN.pm> or C<CPANPLUS> will be expected to pick
+C<configure_requires> out of the F<META.yml> file and install these
+items before running the C<Build.PL>.
+
+Module::Build may automatically add itself to configure_requires.
+See L</auto_configure_requires> for details.
+
+See the documentation for L<Module::Build::Authoring/"PREREQUISITES">
+for the details of how requirements can be specified.
+
=item create_packlist
[version 0.28]
@@ -612,7 +630,7 @@ specify explicitly.
[version 0.36]
The C<needs_compiler> parameter indicates whether a compiler is required to
-build the distsribution. The default is false, unless XS files are found or
+build the distribution. The default is false, unless XS files are found or
the C<c_source> parameter is set, in which case it is true. If true,
L<ExtUtils::CBuilder> is automatically added to C<build_requires> if needed.
@@ -834,6 +852,17 @@ SIGNATURE file to the MANIFEST (therefore, don't add it yourself).
The default value is false. In the future, the default may change to
true if you have C<Module::Signature> installed on your system.
+=item tap_harness_args
+
+[version 0.2808_03]
+
+An optional parameter specifying parameters to be passed to TAP::Harness when
+running tests. Must be given as a hash reference of parameters; see the
+L<TAP::Harness|TAP::Harness> documentation for details. Note that specifying
+this parameter will implicitly set C<use_tap_harness> to a true value. You
+must therefore be sure to add TAP::Harness as a requirement for your module in
+L</build_requires>.
+
=item test_files
[version 0.23]
@@ -862,17 +891,6 @@ therefore be sure to add TAP::Harness as a requirement for your module in
L</build_requires>. Implicitly set to a true value if C<tap_harness_args> is
specified.
-=item tap_harness_args
-
-[version 0.2808_03]
-
-An optional parameter specifying parameters to be passed to TAP::Harness when
-running tests. Must be given as a hash reference of parameters; see the
-L<TAP::Harness|TAP::Harness> documentation for details. Note that specifying
-this parameter will implicitly set C<use_tap_harness> to a true value. You
-must therefore be sure to add TAP::Harness as a requirement for your module in
-L</build_requires>.
-
=item xs_files
[version 0.19]
@@ -1382,6 +1400,22 @@ characters will do their special things. If you supply multiple
arguments, no shell will get involved and the command will be executed
directly.
+=item extra_compiler_flags()
+
+=item extra_compiler_flags(@flags)
+
+[version 0.25]
+
+Set or retrieve the extra compiler flags. Returns an arrayref of flags.
+
+=item extra_linker_flags()
+
+=item extra_linker_flags(@flags)
+
+[version 0.25]
+
+Set or retrieve the extra linker flags. Returns an arrayref of flags.
+
=item feature($name)
=item feature($name => $value)
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Authoring.pod b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Authoring.pod
index 92164df9211..b1dc5843bfb 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Authoring.pod
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Authoring.pod
@@ -304,7 +304,7 @@ Bug reports are also welcome at
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Module-Build>.
The latest development version is available from the Git
-repository at <https://github.com/dagolden/module-build/>
+repository at <https://github.com/Perl-Toolchain-Gang/Module-Build>
=head1 SEE ALSO
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Base.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Base.pm
index a29f500062c..cf42cc0b230 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Base.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Base.pm
@@ -4,9 +4,11 @@ package Module::Build::Base;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+use warnings;
+
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
-BEGIN { require 5.00503 }
+BEGIN { require 5.006001 }
use Carp;
use Cwd ();
@@ -38,7 +40,9 @@ sub new {
$self->check_manifest;
$self->auto_require;
- if ( $self->check_prereq + $self->check_autofeatures != 2) {
+
+ # All checks must run regardless if one fails, so no short circuiting!
+ if( grep { !$_ } $self->check_prereq, $self->check_autofeatures ) {
$self->log_warn(<<EOF);
ERRORS/WARNINGS FOUND IN PREREQUISITES. You may wish to install the versions
@@ -142,16 +146,16 @@ sub _construct {
my $config = delete $input{config} || {};
my $self = bless {
- args => {%$args},
- config => Module::Build::Config->new(values => $config),
- properties => {
- base_dir => $package->cwd,
- mb_version => $Module::Build::VERSION,
- %input,
- },
- phash => {},
- stash => {}, # temporary caching, not stored in _build
- }, $package;
+ args => {%$args},
+ config => Module::Build::Config->new(values => $config),
+ properties => {
+ base_dir => $package->cwd,
+ mb_version => $Module::Build::VERSION,
+ %input,
+ },
+ phash => {},
+ stash => {}, # temporary caching, not stored in _build
+ }, $package;
$self->_set_defaults;
my ($p, $ph) = ($self->{properties}, $self->{phash});
@@ -163,7 +167,7 @@ sub _construct {
if (exists $p->{$_}) {
my $vals = delete $p->{$_};
while (my ($k, $v) = each %$vals) {
- $self->$_($k, $v);
+ $self->$_($k, $v);
}
}
}
@@ -250,37 +254,37 @@ sub _default_install_paths {
$p->{install_sets} =
{
core => {
- lib => $c->get('installprivlib'),
- arch => $c->get('installarchlib'),
- bin => $c->get('installbin'),
- script => $c->get('installscript'),
- bindoc => $bindoc,
- libdoc => $libdoc,
- binhtml => $binhtml,
- libhtml => $libhtml,
- },
+ lib => $c->get('installprivlib'),
+ arch => $c->get('installarchlib'),
+ bin => $c->get('installbin'),
+ script => $c->get('installscript'),
+ bindoc => $bindoc,
+ libdoc => $libdoc,
+ binhtml => $binhtml,
+ libhtml => $libhtml,
+ },
site => {
- lib => $c->get('installsitelib'),
- arch => $c->get('installsitearch'),
- bin => $c->get('installsitebin') || $c->get('installbin'),
- script => $c->get('installsitescript') ||
- $c->get('installsitebin') || $c->get('installscript'),
- bindoc => $c->get('installsiteman1dir') || $bindoc,
- libdoc => $c->get('installsiteman3dir') || $libdoc,
- binhtml => $c->get('installsitehtml1dir') || $binhtml,
- libhtml => $c->get('installsitehtml3dir') || $libhtml,
- },
+ lib => $c->get('installsitelib'),
+ arch => $c->get('installsitearch'),
+ bin => $c->get('installsitebin') || $c->get('installbin'),
+ script => $c->get('installsitescript') ||
+ $c->get('installsitebin') || $c->get('installscript'),
+ bindoc => $c->get('installsiteman1dir') || $bindoc,
+ libdoc => $c->get('installsiteman3dir') || $libdoc,
+ binhtml => $c->get('installsitehtml1dir') || $binhtml,
+ libhtml => $c->get('installsitehtml3dir') || $libhtml,
+ },
vendor => {
- lib => $c->get('installvendorlib'),
- arch => $c->get('installvendorarch'),
- bin => $c->get('installvendorbin') || $c->get('installbin'),
- script => $c->get('installvendorscript') ||
- $c->get('installvendorbin') || $c->get('installscript'),
- bindoc => $c->get('installvendorman1dir') || $bindoc,
- libdoc => $c->get('installvendorman3dir') || $libdoc,
- binhtml => $c->get('installvendorhtml1dir') || $binhtml,
- libhtml => $c->get('installvendorhtml3dir') || $libhtml,
- },
+ lib => $c->get('installvendorlib'),
+ arch => $c->get('installvendorarch'),
+ bin => $c->get('installvendorbin') || $c->get('installbin'),
+ script => $c->get('installvendorscript') ||
+ $c->get('installvendorbin') || $c->get('installscript'),
+ bindoc => $c->get('installvendorman1dir') || $bindoc,
+ libdoc => $c->get('installvendorman3dir') || $libdoc,
+ binhtml => $c->get('installvendorhtml1dir') || $binhtml,
+ libhtml => $c->get('installvendorhtml3dir') || $libhtml,
+ },
};
$p->{original_prefix} =
@@ -311,35 +315,35 @@ sub _default_install_paths {
$p->{prefix_relpaths} =
{
core => {
- lib => [@libstyle],
- arch => [@libstyle, $version, $arch],
- bin => ['bin'],
- script => ['bin'],
- bindoc => ['man', 'man1'],
- libdoc => ['man', 'man3'],
- binhtml => ['html'],
- libhtml => ['html'],
- },
+ lib => [@libstyle],
+ arch => [@libstyle, $version, $arch],
+ bin => ['bin'],
+ script => ['bin'],
+ bindoc => ['man', 'man1'],
+ libdoc => ['man', 'man3'],
+ binhtml => ['html'],
+ libhtml => ['html'],
+ },
vendor => {
- lib => [@libstyle],
- arch => [@libstyle, $version, $arch],
- bin => ['bin'],
- script => ['bin'],
- bindoc => ['man', 'man1'],
- libdoc => ['man', 'man3'],
- binhtml => ['html'],
- libhtml => ['html'],
- },
+ lib => [@libstyle],
+ arch => [@libstyle, $version, $arch],
+ bin => ['bin'],
+ script => ['bin'],
+ bindoc => ['man', 'man1'],
+ libdoc => ['man', 'man3'],
+ binhtml => ['html'],
+ libhtml => ['html'],
+ },
site => {
- lib => [@libstyle, 'site_perl'],
- arch => [@libstyle, 'site_perl', $version, $arch],
- bin => ['bin'],
- script => ['bin'],
- bindoc => ['man', 'man1'],
- libdoc => ['man', 'man3'],
- binhtml => ['html'],
- libhtml => ['html'],
- },
+ lib => [@libstyle, 'site_perl'],
+ arch => [@libstyle, 'site_perl', $version, $arch],
+ bin => ['bin'],
+ script => ['bin'],
+ bindoc => ['man', 'man1'],
+ libdoc => ['man', 'man3'],
+ binhtml => ['html'],
+ libhtml => ['html'],
+ },
};
return $p
}
@@ -523,24 +527,24 @@ sub _discover_perl_interpreter {
# Adapted from IPC::Cmd::can_run()
sub find_command {
- my ($self, $command) = @_;
+ my ($self, $command) = @_;
- if( File::Spec->file_name_is_absolute($command) ) {
- return $self->_maybe_command($command);
+ if( File::Spec->file_name_is_absolute($command) ) {
+ return $self->_maybe_command($command);
- } else {
- for my $dir ( File::Spec->path ) {
- my $abs = File::Spec->catfile($dir, $command);
- return $abs if $abs = $self->_maybe_command($abs);
- }
+ } else {
+ for my $dir ( File::Spec->path ) {
+ my $abs = File::Spec->catfile($dir, $command);
+ return $abs if $abs = $self->_maybe_command($abs);
}
+ }
}
# Copied from ExtUtils::MM_Unix::maybe_command
sub _maybe_command {
- my($self,$file) = @_;
- return $file if -x $file && ! -d $file;
- return;
+ my($self,$file) = @_;
+ return $file if -x $file && ! -d $file;
+ return;
}
sub _is_interactive {
@@ -657,7 +661,7 @@ sub features {
while (my ($name, $info) = each %auto_features) {
my $failures = $self->prereq_failures($info);
my $disabled = grep( /^(?:\w+_)?(?:requires|conflicts)$/,
- keys %$failures ) ? 1 : 0;
+ keys %$failures ) ? 1 : 0;
$features{$name} = $disabled ? 0 : 1;
}
%features = (%features, $ph->{features}->access());
@@ -705,22 +709,22 @@ sub ACTION_config_data {
my $notes_pm = File::Spec->catfile($self->blib, 'lib', split /::/, "$notes_name.pm");
return if $self->up_to_date(['Build.PL',
- $self->config_file('config_data'),
- $self->config_file('features')
- ], $notes_pm);
+ $self->config_file('config_data'),
+ $self->config_file('features')
+ ], $notes_pm);
$self->log_verbose("Writing config notes to $notes_pm\n");
File::Path::mkpath(File::Basename::dirname($notes_pm));
Module::Build::Notes->write_config_data
- (
- file => $notes_pm,
- module => $module_name,
- config_module => $notes_name,
- config_data => scalar $self->config_data,
- feature => scalar $self->{phash}{features}->access(),
- auto_features => scalar $self->auto_features,
- );
+ (
+ file => $notes_pm,
+ module => $module_name,
+ config_module => $notes_name,
+ config_data => scalar $self->config_data,
+ feature => scalar $self->{phash}{features}->access(),
+ auto_features => scalar $self->auto_features,
+ );
}
########################################################################
@@ -1173,7 +1177,7 @@ sub dist_version_from {
my $p = $self->{properties};
if ($self->module_name) {
$p->{dist_version_from} ||=
- join( '/', 'lib', split(/::/, $self->module_name) ) . '.pm';
+ join( '/', 'lib', split(/::/, $self->module_name) ) . '.pm';
}
return $p->{dist_version_from} || undef;
}
@@ -1557,17 +1561,17 @@ sub prereq_failures {
my $status = $self->check_installed_status($modname, $spec);
if ($type =~ /^(?:\w+_)?conflicts$/) {
- next if !$status->{ok};
- $status->{conflicts} = delete $status->{need};
- $status->{message} = "$modname ($status->{have}) conflicts with this distribution";
+ next if !$status->{ok};
+ $status->{conflicts} = delete $status->{need};
+ $status->{message} = "$modname ($status->{have}) conflicts with this distribution";
} elsif ($type =~ /^(?:\w+_)?recommends$/) {
- next if $status->{ok};
- $status->{message} = (!ref($status->{have}) && $status->{have} eq '<none>'
- ? "$modname is not installed"
- : "$modname ($status->{have}) is installed, but we prefer to have $spec");
+ next if $status->{ok};
+ $status->{message} = (!ref($status->{have}) && $status->{have} eq '<none>'
+ ? "$modname is not installed"
+ : "$modname ($status->{have}) is installed, but we prefer to have $spec");
} else {
- next if $status->{ok};
+ next if $status->{ok};
}
$out->{$type}{$modname} = $status;
@@ -1638,6 +1642,7 @@ sub perl_version_to_float {
sub _parse_conditions {
my ($self, $spec) = @_;
+ return ">= 0" if not defined $spec;
if ($spec =~ /^\s*([\w.]+)\s*$/) { # A plain number, maybe with dots, letters, and underscores
return (">= $spec");
} else {
@@ -1986,8 +1991,8 @@ sub check_manifest {
$self->log_verbose("Checking whether your kit is complete...\n");
if (my @missed = ExtUtils::Manifest::manicheck()) {
$self->log_warn("WARNING: the following files are missing in your kit:\n",
- "\t", join("\n\t", @missed), "\n",
- "Please inform the author.\n\n");
+ "\t", join("\n\t", @missed), "\n",
+ "Please inform the author.\n\n");
} else {
$self->log_verbose("Looks good\n\n");
}
@@ -2077,8 +2082,8 @@ sub unparse_args {
my @out;
while (my ($k, $v) = each %$args) {
push @out, (UNIVERSAL::isa($v, 'HASH') ? map {+"--$k", "$_=$v->{$_}"} keys %$v :
- UNIVERSAL::isa($v, 'ARRAY') ? map {+"--$k", $_} @$v :
- ("--$k", $v));
+ UNIVERSAL::isa($v, 'ARRAY') ? map {+"--$k", $_} @$v :
+ ("--$k", $v));
}
return @out;
}
@@ -2119,12 +2124,14 @@ sub _translate_option {
return $opt;
}
+my %singular_argument = map { ($_ => 1) } qw/install_base prefix destdir installdir verbose quiet uninst debug sign/;
+
sub _read_arg {
my ($self, $args, $key, $val) = @_;
$key = $self->_translate_option($key);
- if ( exists $args->{$key} ) {
+ if ( exists $args->{$key} and not $singular_argument{$key} ) {
$args->{$key} = [ $args->{$key} ] unless ref $args->{$key};
push @{$args->{$key}}, $val;
} else {
@@ -2215,7 +2222,7 @@ sub read_args {
$args{$_} = [ $args{$_} ] unless ref $args{$_};
foreach my $arg ( @{$args{$_}} ) {
$arg =~ /($opt_re)=(.*)/
- or die "Malformed '$_' argument: '$arg' should be something like 'foo=bar'";
+ or die "Malformed '$_' argument: '$arg' should be something like 'foo=bar'";
$hash{$1} = $2;
}
$args{$_} = \%hash;
@@ -2234,10 +2241,10 @@ sub read_args {
next if !defined $args{$key}{$subkey};
my $subkey_ext = $self->_detildefy($args{$key}{$subkey});
if ( $subkey eq 'html' ) { # translate for compatibility
- $args{$key}{binhtml} = $subkey_ext;
- $args{$key}{libhtml} = $subkey_ext;
+ $args{$key}{binhtml} = $subkey_ext;
+ $args{$key}{libhtml} = $subkey_ext;
} else {
- $args{$key}{$subkey} = $subkey_ext;
+ $args{$key}{$subkey} = $subkey_ext;
}
}
}
@@ -2267,8 +2274,8 @@ sub _merge_arglist {
if ( exists( $opts1->{$key} ) ) {
if ( ref( $val ) eq 'HASH' ) {
while (my ($k, $v) = each %$val) {
- $new_opts{$key}{$k} = $v unless exists( $opts1->{$key}{$k} );
- }
+ $new_opts{$key}{$k} = $v unless exists( $opts1->{$key}{$k} );
+ }
}
} else {
$new_opts{$key} = $val
@@ -2318,8 +2325,8 @@ sub read_modulebuildrc {
$modulebuildrc = $ENV{MODULEBUILDRC};
} elsif ( exists($ENV{MODULEBUILDRC}) ) {
$self->log_warn("WARNING: Can't find resource file " .
- "'$ENV{MODULEBUILDRC}' defined in environment.\n" .
- "No options loaded\n");
+ "'$ENV{MODULEBUILDRC}' defined in environment.\n" .
+ "No options loaded\n");
return ();
} else {
$modulebuildrc = $self->_find_user_config( '.modulebuildrc' );
@@ -2337,9 +2344,9 @@ sub read_modulebuildrc {
if ( $line =~ /^\S/ ) {
if ( $buffer ) {
- my( $action, $options ) = split( /\s+/, $buffer, 2 );
- $options{$action} .= $options . ' ';
- $buffer = '';
+ my( $action, $options ) = split( /\s+/, $buffer, 2 );
+ $options{$action} .= $options . ' ';
+ $buffer = '';
}
$buffer = $line;
} else {
@@ -2394,9 +2401,9 @@ sub merge_args {
$self->{args} ;
if ($additive{$key}) {
- $add_to->{$_} = $val->{$_} foreach keys %$val;
+ $add_to->{$_} = $val->{$_} foreach keys %$val;
} else {
- $add_to->{$key} = $val;
+ $add_to->{$key} = $val;
}
}
}
@@ -2687,7 +2694,7 @@ sub generic_test {
# Make sure we test the module in blib/
unshift @INC, (File::Spec->catdir($p->{base_dir}, $self->blib, 'lib'),
- File::Spec->catdir($p->{base_dir}, $self->blib, 'arch'));
+ File::Spec->catdir($p->{base_dir}, $self->blib, 'arch'));
# Filter out nonsensical @INC entries - some versions of
# Test::Harness will really explode the number of entries here
@@ -2825,7 +2832,7 @@ sub ACTION_testcover {
$self->do_system(qw(cover -delete))
unless $self->up_to_date($pm_files, $cover_files)
- && $self->up_to_date($self->test_files, $cover_files);
+ && $self->up_to_date($self->test_files, $cover_files);
}
local $Test::Harness::switches =
@@ -2996,14 +3003,14 @@ sub find_PL_files {
if (UNIVERSAL::isa($files, 'ARRAY')) {
return { map {$_, [/^(.*)\.PL$/]}
- map $self->localize_file_path($_),
- @$files };
+ map $self->localize_file_path($_),
+ @$files };
} elsif (UNIVERSAL::isa($files, 'HASH')) {
my %out;
while (my ($file, $to) = each %$files) {
- $out{ $self->localize_file_path($file) } = [ map $self->localize_file_path($_),
- ref $to ? @$to : ($to) ];
+ $out{ $self->localize_file_path($file) } = [ map $self->localize_file_path($_),
+ ref $to ? @$to : ($to) ];
}
return \%out;
@@ -3042,8 +3049,8 @@ sub find_test_files {
if (my $files = $p->{test_files}) {
$files = [keys %$files] if UNIVERSAL::isa($files, 'HASH');
$files = [map { -d $_ ? $self->expand_test_dir($_) : $_ }
- map glob,
- $self->split_like_shell($files)];
+ map glob,
+ $self->split_like_shell($files)];
# Always given as a Unix file spec.
return [ map $self->localize_file_path($_), @$files ];
@@ -3067,9 +3074,9 @@ sub _find_file_by_type {
return {} unless -d $dir;
return { map {$_, $_}
- map $self->localize_file_path($_),
- grep !/\.\#/,
- @{ $self->rscan_dir($dir, $self->file_qr("\\.$type\$")) } };
+ map $self->localize_file_path($_),
+ grep !/\.\#/,
+ @{ $self->rscan_dir($dir, $self->file_qr("\\.$type\$")) } };
}
sub localize_file_path {
@@ -3192,8 +3199,8 @@ sub _is_default_installable {
my $type = shift;
return ( $self->install_destination($type) &&
( $self->install_path($type) ||
- $self->install_sets($self->installdirs)->{$type} )
- ) ? 1 : 0;
+ $self->install_sets($self->installdirs)->{$type} )
+ ) ? 1 : 0;
}
sub _is_ActivePerl {
@@ -3248,7 +3255,7 @@ sub manify_bin_pods {
# This is expected to change in a future version (Pod::Simple > 3.03).
my $parser = Pod::Man->new( section => 1 ); # binaries go in section 1
my $manpage = $self->man1page_name( $file ) . '.' .
- $self->config( 'man1ext' );
+ $self->config( 'man1ext' );
my $outfile = File::Spec->catfile($mandir, $manpage);
next if $self->up_to_date( $file, $outfile );
$self->log_verbose("Manifying $file -> $outfile\n");
@@ -3273,7 +3280,7 @@ sub manify_lib_pods {
# This is expected to change in a future version (Pod::Simple > 3.03).
my $parser = Pod::Man->new( section => 3 ); # libraries go in section 3
my $manpage = $self->man3page_name( $relfile ) . '.' .
- $self->config( 'man3ext' );
+ $self->config( 'man3ext' );
my $outfile = File::Spec->catfile( $mandir, $manpage);
next if $self->up_to_date( $file, $outfile );
$self->log_verbose("Manifying $file -> $outfile\n");
@@ -3292,7 +3299,7 @@ sub _find_pods {
FILE: foreach my $file ( @{ $self->rscan_dir( $dir ) } ) {
foreach my $regexp ( @{ $args{exclude} } ) {
- next FILE if $file =~ $regexp;
+ next FILE if $file =~ $regexp;
}
$files{$file} = File::Spec->abs2rel($file, $dir) if $self->contains_pod( $file )
}
@@ -3542,8 +3549,8 @@ sub ACTION_diff {
my $installed = Module::Build::ModuleInfo->find_module_by_name(
join('::', @parts), \@myINC );
if (not $installed) {
- print "Only in lib: $file\n";
- next;
+ print "Only in lib: $file\n";
+ next;
}
my $status = File::Compare::compare($installed, $file);
@@ -3551,9 +3558,9 @@ sub ACTION_diff {
die "Can't compare $installed and $file: $!" if $status == -1;
if ($file =~ $text_suffix) {
- $self->do_system('diff', @flags, $installed, $file);
+ $self->do_system('diff', @flags, $installed, $file);
} else {
- print "Binary files $file and $installed differ\n";
+ print "Binary files $file and $installed differ\n";
}
}
}
@@ -3742,12 +3749,12 @@ sub ACTION_ppmdist {
foreach my $file ( @$files ) {
next unless -f $file;
my $rel_file =
- File::Spec->abs2rel( File::Spec->rel2abs( $file ),
- File::Spec->rel2abs( $dir ) );
+ File::Spec->abs2rel( File::Spec->rel2abs( $file ),
+ File::Spec->rel2abs( $dir ) );
my $to_file =
- File::Spec->catfile( $ppm, 'blib',
- exists( $types{$type} ) ? $types{$type} : $type,
- $rel_file );
+ File::Spec->catfile( $ppm, 'blib',
+ exists( $types{$type} ) ? $types{$type} : $type,
+ $rel_file );
$self->copy_if_modified( from => $file, to => $to_file );
}
}
@@ -3996,14 +4003,14 @@ EOF
my $old_parse_file;
$old_parse_file = \&{"Pod::Simple::parse_file"}
- and
+ and
local *{"Pod::Simple::parse_file"} = sub {
- my $self = shift;
- $self->output_fh($_[1]) if $_[1];
- $self->$old_parse_file($_[0]);
+ my $self = shift;
+ $self->output_fh($_[1]) if $_[1];
+ $self->$old_parse_file($_[0]);
}
if $Pod::Text::VERSION
- == 3.01; # Split line to avoid evil version-finder
+ == 3.01; # Split line to avoid evil version-finder
Pod::Text::pod2text( $docfile, $fh );
@@ -4083,14 +4090,14 @@ sub ACTION_disttest {
$self->_do_in_dir
( $self->dist_dir,
sub {
- # XXX could be different names for scripts
-
- $self->run_perl_script('Build.PL') # XXX Should this be run w/ --nouse-rcfile
- or die "Error executing 'Build.PL' in dist directory: $!";
- $self->run_perl_script('Build')
- or die "Error executing 'Build' in dist directory: $!";
- $self->run_perl_script('Build', [], ['test'])
- or die "Error executing 'Build test' in dist directory";
+ # XXX could be different names for scripts
+
+ $self->run_perl_script('Build.PL') # XXX Should this be run w/ --nouse-rcfile
+ or die "Error executing 'Build.PL' in dist directory: $!";
+ $self->run_perl_script('Build')
+ or die "Error executing 'Build' in dist directory: $!";
+ $self->run_perl_script('Build', [], ['test'])
+ or die "Error executing 'Build test' in dist directory";
});
}
@@ -4729,7 +4736,7 @@ sub prepare_metadata {
my $pkgs = eval { $self->find_dist_packages };
if ($@) {
$self->log_warn("$@\nWARNING: Possible missing or corrupt 'MANIFEST' file.\n" .
- "Nothing to enter for 'provides' field in metafile.\n");
+ "Nothing to enter for 'provides' field in metafile.\n");
} else {
$node->{provides} = $pkgs if %$pkgs;
}
@@ -4741,9 +4748,9 @@ sub prepare_metadata {
$add_node->('generated_by', "Module::Build version $Module::Build::VERSION");
$add_node->('meta-spec',
- {version => '1.4',
- url => 'http://module-build.sourceforge.net/META-spec-v1.4.html',
- });
+ {version => '1.4',
+ url => 'http://module-build.sourceforge.net/META-spec-v1.4.html',
+ });
while (my($k, $v) = each %{$self->meta_add}) {
$add_node->($k, $v);
@@ -4834,42 +4841,42 @@ sub find_packages_in_files {
if ( exists( $prime{$package} ) ) { # primary package selected
if ( $result->{err} ) {
- # Use the selected primary package, but there are conflicting
- # errors among multiple alternative packages that need to be
- # reported
+ # Use the selected primary package, but there are conflicting
+ # errors among multiple alternative packages that need to be
+ # reported
$self->log_warn(
- "Found conflicting versions for package '$package'\n" .
- " $prime{$package}{file} ($prime{$package}{version})\n" .
- $result->{err}
+ "Found conflicting versions for package '$package'\n" .
+ " $prime{$package}{file} ($prime{$package}{version})\n" .
+ $result->{err}
);
} elsif ( defined( $result->{version} ) ) {
- # There is a primary package selected, and exactly one
- # alternative package
-
- if ( exists( $prime{$package}{version} ) &&
- defined( $prime{$package}{version} ) ) {
- # Unless the version of the primary package agrees with the
- # version of the alternative package, report a conflict
- if ( $self->compare_versions( $prime{$package}{version}, '!=',
- $result->{version} ) ) {
+ # There is a primary package selected, and exactly one
+ # alternative package
+
+ if ( exists( $prime{$package}{version} ) &&
+ defined( $prime{$package}{version} ) ) {
+ # Unless the version of the primary package agrees with the
+ # version of the alternative package, report a conflict
+ if ( $self->compare_versions( $prime{$package}{version}, '!=',
+ $result->{version} ) ) {
$self->log_warn(
"Found conflicting versions for package '$package'\n" .
- " $prime{$package}{file} ($prime{$package}{version})\n" .
- " $result->{file} ($result->{version})\n"
+ " $prime{$package}{file} ($prime{$package}{version})\n" .
+ " $result->{file} ($result->{version})\n"
);
- }
+ }
- } else {
- # The prime package selected has no version so, we choose to
- # use any alternative package that does have a version
- $prime{$package}{file} = $result->{file};
- $prime{$package}{version} = $result->{version};
- }
+ } else {
+ # The prime package selected has no version so, we choose to
+ # use any alternative package that does have a version
+ $prime{$package}{file} = $result->{file};
+ $prime{$package}{version} = $result->{version};
+ }
} else {
- # no alt package found with a version, but we have a prime
- # package so we use it whether it has a version or not
+ # no alt package found with a version, but we have a prime
+ # package so we use it whether it has a version or not
}
} else { # No primary package was selected, use the best alternative
@@ -4877,7 +4884,7 @@ sub find_packages_in_files {
if ( $result->{err} ) {
$self->log_warn(
"Found conflicting versions for package '$package'\n" .
- $result->{err}
+ $result->{err}
);
}
@@ -4885,14 +4892,18 @@ sub find_packages_in_files {
# something rather than nothing
$prime{$package}{file} = $result->{file};
$prime{$package}{version} = $result->{version}
- if defined( $result->{version} );
+ if defined( $result->{version} );
}
}
- # Normalize versions. Can't use exists() here because of bug in YAML::Node.
- # XXX "bug in YAML::Node" comment seems irrelvant -- dagolden, 2009-05-18
- for (grep defined $_->{version}, values %prime) {
- $_->{version} = $self->normalize_version( $_->{version} );
+ # Normalize versions or delete them if undef/0
+ for my $provides ( values %prime ) {
+ if ( $provides->{version} ) {
+ $provides->{version} = $self->normalize_version( $provides->{version} )
+ }
+ else {
+ delete $provides->{version};
+ }
}
return \%prime;
@@ -4910,16 +4921,16 @@ sub _resolve_module_versions {
my $err = '';
foreach my $p ( @$packages ) {
if ( defined( $p->{version} ) ) {
- if ( defined( $version ) ) {
- if ( $self->compare_versions( $version, '!=', $p->{version} ) ) {
- $err .= " $p->{file} ($p->{version})\n";
- } else {
- # same version declared multiple times, ignore
- }
- } else {
- $file = $p->{file};
- $version = $p->{version};
- }
+ if ( defined( $version ) ) {
+ if ( $self->compare_versions( $version, '!=', $p->{version} ) ) {
+ $err .= " $p->{file} ($p->{version})\n";
+ } else {
+ # same version declared multiple times, ignore
+ }
+ } else {
+ $file = $p->{file};
+ $version = $p->{version};
+ }
}
$file ||= $p->{file} if defined( $p->{file} );
}
@@ -5106,9 +5117,9 @@ sub prefix_relative {
my $relpath = $self->install_sets($installdirs)->{$type};
return $self->_prefixify($relpath,
- $self->original_prefix($installdirs),
- $type,
- );
+ $self->original_prefix($installdirs),
+ $type,
+ );
}
# Translated from ExtUtils::MM_Unix::prefixify()
@@ -5262,8 +5273,8 @@ sub rscan_dir {
local $_; # find() can overwrite $_, so protect ourselves
my $subr = !$pattern ? sub {push @result, $File::Find::name} :
!ref($pattern) || (ref $pattern eq 'Regexp') ? sub {push @result, $File::Find::name if /$pattern/} :
- ref($pattern) eq 'CODE' ? sub {push @result, $File::Find::name if $pattern->()} :
- die "Unknown pattern type";
+ ref($pattern) eq 'CODE' ? sub {push @result, $File::Find::name if $pattern->()} :
+ die "Unknown pattern type";
File::Find::find({wanted => $subr, no_chdir => 1}, $dir);
return \@result;
@@ -5329,11 +5340,11 @@ sub compile_c {
return $obj_file if $self->up_to_date($file, $obj_file);
$b->compile(source => $file,
- defines => $args{defines},
- object_file => $obj_file,
- include_dirs => $self->include_dirs,
- extra_compiler_flags => $self->extra_compiler_flags,
- );
+ defines => $args{defines},
+ object_file => $obj_file,
+ include_dirs => $self->include_dirs,
+ extra_compiler_flags => $self->extra_compiler_flags,
+ );
return $obj_file;
}
@@ -5348,7 +5359,7 @@ sub link_c {
return $spec->{lib_file}
if $self->up_to_date([$spec->{obj_file}, @$objects],
- $spec->{lib_file});
+ $spec->{lib_file});
my $module_name = $spec->{module_name} || $self->module_name;
@@ -5369,10 +5380,10 @@ sub compile_xs {
if (eval {require ExtUtils::ParseXS; 1}) {
ExtUtils::ParseXS::process_file(
- filename => $file,
- prototypes => 0,
- output => $args{outfile},
- );
+ filename => $file,
+ prototypes => 0,
+ output => $args{outfile},
+ );
} else {
# Ok, I give up. Just use backticks.
@@ -5393,7 +5404,7 @@ sub compile_xs {
my $perl = $self->{properties}{perl};
my @command = ($perl, "-I".$cf->get('installarchlib'), "-I".$cf->get('installprivlib'), $xsubpp, '-noprototypes',
- @typemaps, $file);
+ @typemaps, $file);
$self->log_info("@command\n");
my $fh = IO::File->new("> $args{outfile}") or die "Couldn't write $args{outfile}: $!";
@@ -5480,18 +5491,18 @@ sub _infer_xs_spec {
$spec{module_name} = join( '::', (@d, $file_base) );
$spec{archdir} = File::Spec->catdir($self->blib, 'arch', 'auto',
- @d, $file_base);
+ @d, $file_base);
$spec{bs_file} = File::Spec->catfile($spec{archdir}, "${file_base}.bs");
$spec{lib_file} = File::Spec->catfile($spec{archdir},
- "${file_base}.".$cf->get('dlext'));
+ "${file_base}.".$cf->get('dlext'));
$spec{c_file} = File::Spec->catfile( $spec{src_dir},
- "${file_base}.c" );
+ "${file_base}.c" );
$spec{obj_file} = File::Spec->catfile( $spec{src_dir},
- "${file_base}".$cf->get('obj_ext') );
+ "${file_base}".$cf->get('obj_ext') );
return \%spec;
}
@@ -5514,7 +5525,7 @@ sub process_xs {
# .c -> .o
my $v = $self->dist_version;
$self->compile_c($spec->{c_file},
- defines => {VERSION => qq{"$v"}, XS_VERSION => qq{"$v"}});
+ defines => {VERSION => qq{"$v"}, XS_VERSION => qq{"$v"}});
# archdir
File::Path::mkpath($spec->{archdir}, 0, oct(777)) unless -d $spec->{archdir};
@@ -5559,9 +5570,9 @@ sub do_system {
sub copy_if_modified {
my $self = shift;
my %args = (@_ > 3
- ? ( @_ )
- : ( from => shift, to_dir => shift, flatten => shift )
- );
+ ? ( @_ )
+ : ( from => shift, to_dir => shift, flatten => shift )
+ );
$args{verbose} = !$self->quiet
unless exists $args{verbose};
@@ -5578,8 +5589,8 @@ sub copy_if_modified {
$to_path = $args{to};
} elsif (defined $args{to_dir} and length $args{to_dir}) {
$to_path = File::Spec->catfile( $args{to_dir}, $args{flatten}
- ? File::Basename::basename($file)
- : $file );
+ ? File::Basename::basename($file)
+ : $file );
} else {
die "No 'to' or 'to_dir' parameter given to copy_if_modified";
}
@@ -5645,8 +5656,8 @@ sub dir_contains {
return 0 if @second_dirs < @first_dirs;
my $is_same = ( $self->_case_tolerant
- ? sub {lc(shift()) eq lc(shift())}
- : sub {shift() eq shift()} );
+ ? sub {lc(shift()) eq lc(shift())}
+ : sub {shift() eq shift()} );
while (@first_dirs) {
return 0 unless $is_same->(shift @first_dirs, shift @second_dirs);
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Compat.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Compat.pm
index 452dfb96ad5..79499a6efd9 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Compat.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Compat.pm
@@ -2,7 +2,7 @@ package Module::Build::Compat;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
use File::Basename ();
use File::Spec;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Config.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Config.pm
index 9f3dc6779e5..88a3ff31579 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Config.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Config.pm
@@ -2,7 +2,7 @@ package Module::Build::Config;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Config;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Cookbook.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Cookbook.pm
index 80af7c4c0d9..e66020cf826 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Cookbook.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Cookbook.pm
@@ -1,7 +1,7 @@
package Module::Build::Cookbook;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
=head1 NAME
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Dumper.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Dumper.pm
index 8191410460f..73839c79e4d 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Dumper.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Dumper.pm
@@ -1,7 +1,7 @@
package Module::Build::Dumper;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
# This is just a split-out of a wrapper function to do Data::Dumper
# stuff "the right way". See:
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Notes.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Notes.pm
index 9a80a594304..04773229932 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Notes.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Notes.pm
@@ -4,7 +4,7 @@ package Module::Build::Notes;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Data::Dumper;
use IO::File;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/PPMMaker.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/PPMMaker.pm
index 62e8b0408c5..34f549576af 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/PPMMaker.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/PPMMaker.pm
@@ -5,7 +5,7 @@ use Config;
use vars qw($VERSION);
use IO::File;
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
# This code is mostly borrowed from ExtUtils::MM_Unix 6.10_03, with a
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Amiga.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Amiga.pm
index e088c84833d..0be3dde62ec 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Amiga.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Amiga.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::Amiga;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Base;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Default.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Default.pm
index 8669036ab3d..53bffc05940 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Default.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Default.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::Default;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Base;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/EBCDIC.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/EBCDIC.pm
index 0cd526448b1..8c4349b5f6c 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/EBCDIC.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/EBCDIC.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::EBCDIC;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Base;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/MPEiX.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/MPEiX.pm
index 21c757b3172..5688a99329d 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/MPEiX.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/MPEiX.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::MPEiX;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Base;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/MacOS.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/MacOS.pm
index 3f49c8288a5..8b567668529 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/MacOS.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/MacOS.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::MacOS;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Base;
use vars qw(@ISA);
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/RiscOS.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/RiscOS.pm
index 4717481fb86..6ed9d3d1c37 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/RiscOS.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/RiscOS.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::RiscOS;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Base;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Unix.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Unix.pm
index 611c2cf8d3d..e3d7ff5b224 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Unix.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Unix.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::Unix;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Base;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/VMS.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/VMS.pm
index 4842e6cbde9..7ff7e056bdc 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/VMS.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/VMS.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::VMS;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Base;
use Config;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/VOS.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/VOS.pm
index bec44da6af9..2578e31b3be 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/VOS.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/VOS.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::VOS;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Base;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Windows.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Windows.pm
index 5094c41629e..e35e28f707f 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Windows.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/Windows.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::Windows;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Config;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/aix.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/aix.pm
index cd4cf24ceb4..3833ceb9761 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/aix.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/aix.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::aix;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/cygwin.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/cygwin.pm
index 2ecd9ae5561..15d3e818412 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/cygwin.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/cygwin.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::cygwin;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/darwin.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/darwin.pm
index e7d256a839e..45d68fdcd0a 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/darwin.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/darwin.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::darwin;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/os2.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/os2.pm
index d9436713ba8..52d6e173d87 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/os2.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/Platform/os2.pm
@@ -2,7 +2,7 @@ package Module::Build::Platform::os2;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Module::Build::Platform::Unix;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/PodParser.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/PodParser.pm
index 8230192056f..6605fd47272 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/PodParser.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/Module/Build/PodParser.pm
@@ -2,7 +2,7 @@ package Module::Build::PodParser;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use vars qw(@ISA);
@@ -28,7 +28,8 @@ sub parse_from_filehandle {
local $_;
while (<$fh>) {
next unless /^=(?!cut)/ .. /^=cut/; # in POD
- last if ($self->{abstract}) = /^ (?: [a-z:]+ \s+ - \s+ ) (.*\S) /ix;
+ # Accept Name - abstract or C<Name> - abstract
+ last if ($self->{abstract}) = /^ (?: [a-z0-9:]+ | [BCIF] < [a-z0-9:]+ > ) \s+ - \s+ (.*\S) /ix;
}
my @author;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/inc/latest.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/inc/latest.pm
index c83167197b7..b794c4a72ac 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/inc/latest.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/inc/latest.pm
@@ -1,7 +1,7 @@
package inc::latest;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use Carp;
@@ -132,7 +132,7 @@ a distribution and are used by Build.PL (or Makefile.PL).
Arguments to C<inc::latest> are module names that are checked against both the
current C<@INC> array and against specially-named directories in C<inc>. If
-the bundled verison is newer than the installed one (or the module isn't
+the bundled version is newer than the installed one (or the module isn't
installed, then, the bundled directory is added to the start of <@INC> and the
module is loaded from there.
@@ -192,7 +192,7 @@ available. For example:
my @list = inc::latest->loaded_modules;
This takes no arguments and always returns a list of module names requested for
-loading via "use inc::latest 'MODULE'", regardless of wether the load was
+loading via "use inc::latest 'MODULE'", regardless of whether the load was
successful or not.
=item write()
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/lib/inc/latest/private.pm b/gnu/usr.bin/perl/cpan/Module-Build/lib/inc/latest/private.pm
index 9e4d5d7b567..2a62c57d088 100644
--- a/gnu/usr.bin/perl/cpan/Module-Build/lib/inc/latest/private.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Build/lib/inc/latest/private.pm
@@ -1,7 +1,7 @@
package inc::latest::private;
use strict;
use vars qw($VERSION);
-$VERSION = '0.39_01';
+$VERSION = '0.4003';
$VERSION = eval $VERSION;
use File::Spec;
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/t/install.t b/gnu/usr.bin/perl/cpan/Module-Build/t/install.t
index ffe8afca017..2d487f679be 100755
--- a/gnu/usr.bin/perl/cpan/Module-Build/t/install.t
+++ b/gnu/usr.bin/perl/cpan/Module-Build/t/install.t
@@ -2,7 +2,7 @@
use strict;
use lib 't/lib';
-use MBTest tests => 34;
+use MBTest tests => 35;
blib_load('Module::Build');
@@ -166,6 +166,10 @@ is $@, '';
'--install_base', $basedir])};
is $@, '';
+ eval {$mb->run_perl_script($cmd, [], ['install', '--destdir', $destdir,
+ '--install_base', $basedir, '--install_base', $basedir])};
+ is $@, '';
+
$install_to = File::Spec->catfile($destdir, $libdir, $dist->name ) . '.pm';
is -e $install_to, 1, "Look for file at $install_to";
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/t/pod_parser.t b/gnu/usr.bin/perl/cpan/Module-Build/t/pod_parser.t
index c47d7381661..8c75e7d7fac 100755
--- a/gnu/usr.bin/perl/cpan/Module-Build/t/pod_parser.t
+++ b/gnu/usr.bin/perl/cpan/Module-Build/t/pod_parser.t
@@ -2,7 +2,7 @@
use strict;
use lib 't/lib';
-use MBTest tests => 9;
+use MBTest tests => 12;
blib_load('Module::Build::PodParser');
@@ -88,3 +88,28 @@ EOF
is $pp->get_author->[0], 'C<Foo::Bar> was written by Engelbert Humperdinck I<E<lt>eh@example.comE<gt>> in 2004.', 'author';
is $pp->get_abstract, 'Perl extension for blah blah blah', 'abstract';
}
+
+
+{
+ # Now with C<Module::Name>
+ untie *FH;
+ tie *FH, 'IO::StringBased', <<'EOF';
+=head1 Name
+
+C<Foo::Bar> - Perl extension for blah blah blah
+
+=head1 Author
+
+C<Foo::Bar> was written by Engelbert Humperdinck I<E<lt>eh@example.comE<gt>> in 2004.
+
+Home page: http://example.com/~eh/
+
+=cut
+EOF
+
+ my $pp = Module::Build::PodParser->new(fh => \*FH);
+ ok $pp, 'object created';
+
+ is $pp->get_author->[0], 'C<Foo::Bar> was written by Engelbert Humperdinck I<E<lt>eh@example.comE<gt>> in 2004.', 'author';
+ is $pp->get_abstract, 'Perl extension for blah blah blah', 'abstract';
+}
diff --git a/gnu/usr.bin/perl/cpan/Module-Build/t/use_tap_harness.t b/gnu/usr.bin/perl/cpan/Module-Build/t/use_tap_harness.t
index f6e7e5073a0..bfce5069aa7 100755
--- a/gnu/usr.bin/perl/cpan/Module-Build/t/use_tap_harness.t
+++ b/gnu/usr.bin/perl/cpan/Module-Build/t/use_tap_harness.t
@@ -3,7 +3,7 @@
use strict;
use Test::More;
use lib 't/lib';
-if (eval { require TAP::Harness } && TAP::Harness->VERSION >= 3) {
+if (eval { require TAP::Harness && TAP::Harness->VERSION(3) }) {
plan tests => 9;
} else {
plan skip_all => 'TAP::Harness 3+ not installed'
diff --git a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm
index 39dccf1ce2b..342371f8794 100644
--- a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm
@@ -11,6 +11,8 @@ use File::Spec ();
use FileHandle ();
use version;
+use Module::Metadata ();
+
use constant ON_VMS => $^O eq 'VMS';
BEGIN {
@@ -18,7 +20,7 @@ BEGIN {
$FIND_VERSION $ERROR $CHECK_INC_HASH];
use Exporter;
@ISA = qw[Exporter];
- $VERSION = '0.46';
+ $VERSION = '0.54';
$VERBOSE = 0;
$DEPRECATED = 0;
$FIND_VERSION = 1;
@@ -137,7 +139,7 @@ uptodate will always be true if the module was found.
If no parsable version was found in the module, uptodate will also be
true, since C<check_install> had no way to verify clearly.
-See also C<$Module::Load::Conditional::DEPRECATED>, which affects
+See also C<$Module::Load::Conditional::DEPRECATED>, which affects
the outcome of this value.
=back
@@ -168,8 +170,8 @@ sub check_install {
}
my $file = File::Spec->catfile( split /::/, $args->{module} ) . '.pm';
- my $file_inc = File::Spec::Unix->catfile(
- split /::/, $args->{module}
+ my $file_inc = File::Spec::Unix->catfile(
+ split /::/, $args->{module}
) . '.pm';
### where we store the return value ###
@@ -178,59 +180,59 @@ sub check_install {
version => undef,
uptodate => undef,
};
-
+
my $filename;
### check the inc hash if we're allowed to
if( $CHECK_INC_HASH ) {
- $filename = $href->{'file'} =
+ $filename = $href->{'file'} =
$INC{ $file_inc } if defined $INC{ $file_inc };
### find the version by inspecting the package
if( defined $filename && $FIND_VERSION ) {
no strict 'refs';
- $href->{version} = ${ "$args->{module}"."::VERSION" };
+ $href->{version} = ${ "$args->{module}"."::VERSION" };
}
- }
+ }
### we didnt find the filename yet by looking in %INC,
### so scan the dirs
unless( $filename ) {
DIR: for my $dir ( @INC ) {
-
+
my $fh;
-
+
if ( ref $dir ) {
### @INC hook -- we invoke it and get the filehandle back
### this is actually documented behaviour as of 5.8 ;)
my $existed_in_inc = $INC{$file_inc};
-
+
if (UNIVERSAL::isa($dir, 'CODE')) {
($fh) = $dir->($dir, $file);
-
+
} elsif (UNIVERSAL::isa($dir, 'ARRAY')) {
($fh) = $dir->[0]->($dir, $file, @{$dir}{1..$#{$dir}})
-
+
} elsif (UNIVERSAL::can($dir, 'INC')) {
($fh) = $dir->INC($file);
}
-
+
if (!UNIVERSAL::isa($fh, 'GLOB')) {
warn loc(q[Cannot open file '%1': %2], $file, $!)
if $args->{verbose};
next;
}
-
+
$filename = $INC{$file_inc} || $file;
delete $INC{$file_inc} if not $existed_in_inc;
-
+
} else {
$filename = File::Spec->catfile($dir, $file);
next unless -e $filename;
-
+
$fh = new FileHandle;
if (!$fh->open($filename)) {
warn loc(q[Cannot open file '%1': %2], $file, $!)
@@ -238,45 +240,31 @@ sub check_install {
next;
}
}
-
+
### store the directory we found the file in
$href->{dir} = $dir;
-
+
### files need to be in unix format under vms,
### or they might be loaded twice
$href->{file} = ON_VMS
? VMS::Filespec::unixify( $filename )
: $filename;
-
- ### user wants us to find the version from files
- if( $FIND_VERSION ) {
-
- my $in_pod = 0;
- while ( my $line = <$fh> ) {
-
- ### stolen from EU::MM_Unix->parse_version to address
- ### #24062: "Problem with CPANPLUS 0.076 misidentifying
- ### versions after installing Text::NSP 1.03" where a
- ### VERSION mentioned in the POD was found before
- ### the real $VERSION declaration.
- $in_pod = $line =~ /^=(?!cut)/ ? 1 :
- $line =~ /^=cut/ ? 0 :
- $in_pod;
- next if $in_pod;
-
- ### try to find a version declaration in this string.
- my $ver = __PACKAGE__->_parse_version( $line );
-
- if( defined $ver ) {
- $href->{version} = $ver;
-
- last DIR;
- }
- }
+
+ ### if we don't need the version, we're done
+ last DIR unless $FIND_VERSION;
+
+ ### otherwise, the user wants us to find the version from files
+ my $mod_info = Module::Metadata->new_from_handle( $fh, $filename );
+ my $ver = $mod_info->version( $args->{module} );
+
+ if( defined $ver ) {
+ $href->{version} = $ver;
+
+ last DIR;
}
}
}
-
+
### if we couldn't find the file, return undef ###
return unless defined $href->{file};
@@ -294,7 +282,7 @@ sub check_install {
} else {
### don't warn about the 'not numeric' stuff ###
local $^W;
-
+
### use qv(), as it will deal with developer release number
### ie ones containing _ as well. This addresses bug report
### #29348: Version compare logic doesn't handle alphas?
@@ -308,19 +296,19 @@ sub check_install {
eval {
- $href->{uptodate} =
+ $href->{uptodate} =
version->new( $args->{version} ) <= version->new( $href->{version} )
- ? 1
+ ? 1
: 0;
};
}
- if ( $DEPRECATED and version->new($]) >= version->new('5.011') ) {
+ if ( $DEPRECATED and "$]" >= 5.011 ) {
require Module::CoreList;
require Config;
- $href->{uptodate} = 0 if
+ $href->{uptodate} = 0 if
exists $Module::CoreList::version{ 0+$] }{ $args->{module} } and
Module::CoreList::is_deprecated( $args->{module} ) and
$Config::Config{privlibexp} eq $href->{dir};
@@ -329,67 +317,6 @@ sub check_install {
return $href;
}
-sub _parse_version {
- my $self = shift;
- my $str = shift or return;
- my $verbose = shift || 0;
-
- ### skip lines which doesn't contain VERSION
- return unless $str =~ /VERSION/;
-
- ### skip commented out lines, they won't eval to anything.
- return if $str =~ /^\s*#/;
-
- ### the following regexp & eval statement comes from the
- ### ExtUtils::MakeMaker source (EU::MM_Unix->parse_version)
- ### Following #18892, which tells us the original
- ### regex breaks under -T, we must modify it so
- ### it captures the entire expression, and eval /that/
- ### rather than $_, which is insecure.
- my $taint_safe_str = do { $str =~ /(^.*$)/sm; $1 };
-
- if( $str =~ /(?<!\\)([\$*])(([\w\:\']*)\bVERSION)\b.*\=/ ) {
-
- print "Evaluating: $str\n" if $verbose;
-
- ### this creates a string to be eval'd, like:
- # package Module::Load::Conditional::_version;
- # no strict;
- #
- # local $VERSION;
- # $VERSION=undef; do {
- # use version; $VERSION = qv('0.0.3');
- # }; $VERSION
-
- my $eval = qq{
- package Module::Load::Conditional::_version;
- no strict;
-
- local $1$2;
- \$$2=undef; do {
- $taint_safe_str
- }; \$$2
- };
-
- print "Evaltext: $eval\n" if $verbose;
-
- my $result = do {
- local $^W = 0;
- eval($eval);
- };
-
-
- my $rv = defined $result ? $result : '0.0';
-
- print( $@ ? "Error: $@\n" : "Result: $rv\n" ) if $verbose;
-
- return $rv;
- }
-
- ### unable to find a version in this string
- return;
-}
-
=head2 $bool = can_load( modules => { NAME => VERSION [,NAME => VERSION] }, [verbose => BOOL, nocache => BOOL] )
C<can_load> will take a list of modules, optionally with version
@@ -475,10 +402,10 @@ sub can_load {
###
### Update from JPeacock: apparently qv() and version->new
### are different things, and we *must* use version->new
- ### here, or things like #30056 might start happening
+ ### here, or things like #30056 might start happening
if ( !$args->{nocache}
&& defined $CACHE->{$mod}->{usable}
- && (version->new( $CACHE->{$mod}->{version}||0 )
+ && (version->new( $CACHE->{$mod}->{version}||0 )
>= version->new( $href->{$mod} ) )
) {
$error = loc( q[Already tried to use '%1', which was unsuccessful], $mod);
@@ -568,7 +495,7 @@ sub requires {
}
my $lib = join " ", map { qq["-I$_"] } @INC;
- my $cmd = qq[$^X $lib -M$who -e"print(join(qq[\\n],keys(%INC)))"];
+ my $cmd = qq["$^X" $lib -M$who -e"print(join(qq[\\n],keys(%INC)))"];
return sort
grep { !/^$who$/ }
@@ -596,12 +523,12 @@ The default is 0;
=head2 $Module::Load::Conditional::FIND_VERSION
This controls whether Module::Load::Conditional will try to parse
-(and eval) the version from the module you're trying to load.
+(and eval) the version from the module you're trying to load.
If you don't wish to do this, set this variable to C<false>. Understand
then that version comparisons are not possible, and Module::Load::Conditional
can not tell you what module version you have installed.
-This may be desirable from a security or performance point of view.
+This may be desirable from a security or performance point of view.
Note that C<$FIND_VERSION> code runs safely under C<taint mode>.
The default is 1;
@@ -631,9 +558,9 @@ C<undef>.
=head2 $Module::Load::Conditional::DEPRECATED
-This controls whether C<Module::Load::Conditional> checks if
+This controls whether C<Module::Load::Conditional> checks if
a dual-life core module has been deprecated. If this is set to
-true C<check_install> will return false to C<uptodate>, if
+true C<check_install> will return false to C<uptodate>, if
a dual-life module is found to be loaded from C<$Config{privlibexp}>
The default is 0;
@@ -652,7 +579,7 @@ This module by Jos Boumans E<lt>kane@cpan.orgE<gt>.
=head1 COPYRIGHT
-This library is free software; you may redistribute and/or modify it
+This library is free software; you may redistribute and/or modify it
under the same terms as Perl itself.
=cut
diff --git a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/01_Module_Load_Conditional.t b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/01_Module_Load_Conditional.t
index 7a51266e6bb..99fa1fe72db 100755
--- a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/01_Module_Load_Conditional.t
+++ b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/01_Module_Load_Conditional.t
@@ -1,15 +1,15 @@
### Module::Load::Conditional test suite ###
### this should no longer be needed
-# BEGIN {
+# BEGIN {
# if( $ENV{PERL_CORE} ) {
-# chdir '../lib/Module/Load/Conditional'
+# chdir '../lib/Module/Load/Conditional'
# if -d '../lib/Module/Load/Conditional';
# unshift @INC, '../../../..';
-#
+#
# ### fix perl location too
# $^X = '../../../../../t/' . $^X;
# }
-# }
+# }
BEGIN { use FindBin; }
BEGIN { chdir 't' if -d 't' }
@@ -26,7 +26,7 @@ use lib File::Spec->catdir($FindBin::Bin, q[to_load] );
use_ok( 'Module::Load::Conditional' );
### stupid stupid warnings ###
-{ $Module::Load::Conditional::VERBOSE =
+{ $Module::Load::Conditional::VERBOSE =
$Module::Load::Conditional::VERBOSE = 0;
*can_load = *Module::Load::Conditional::can_load
@@ -44,10 +44,10 @@ use_ok( 'Module::Load::Conditional' );
);
ok( $rv->{uptodate}, q[Verify self] );
- is( $rv->{version}, $Module::Load::Conditional::VERSION,
+ is( $rv->{version}, $Module::Load::Conditional::VERSION,
q[ Found proper version] );
ok( $rv->{dir}, q[ Found directory information] );
-
+
{ my $dir = File::Spec->canonpath( $rv->{dir} );
### special rules apply on VMS, as always...
@@ -56,8 +56,8 @@ use_ok( 'Module::Load::Conditional' );
$dir = VMS::Filespec::pathify($dir);
### Remove the trailing VMS specific directory delimiter
$dir =~ s/\]//;
- }
-
+ }
+
### quote for Win32 paths, use | to avoid slash confusion
my $dir_re = qr|^\Q$dir\E|i;
like( File::Spec->canonpath( $rv->{file} ), $dir_re,
@@ -70,7 +70,7 @@ use_ok( 'Module::Load::Conditional' );
### Use the UNIX specific method, as the VMS one currently
### converts the file spec back to VMS format.
my $class = ON_VMS ? 'File::Spec::Unix' : 'File::Spec';
-
+
my($vol, $path, $file) = $class->splitpath( $rv->{'file'} );
my @path = ($vol, $class->splitdir( $path ), $file );
@@ -78,7 +78,7 @@ use_ok( 'Module::Load::Conditional' );
### First element could be blank for some system types like VMS
shift @path if $vol eq '';
- ### and return it
+ ### and return it
@path;
};
my $inc_path = $INC{'Module/Load/Conditional.pm'};
@@ -90,8 +90,8 @@ use_ok( 'Module::Load::Conditional' );
File::Spec::Unix->catfile(@rv_path),
q[ Found proper file]
);
-
-
+
+
}
@@ -132,33 +132,72 @@ use_ok( 'Module::Load::Conditional' );
is( $rv->{version}, 2, " Version is correct" );
}
+### test that no package statement means $VERSION is $main::VERSION
+{
+ my $rv = check_install( module => 'NotMain' );
+ ok( $rv, 'Testing $VERSION without package' );
+ is( $rv->{version}, undef, " No version info returned" );
+}
+
+### test that the right $VERSION is picked when there are several packages
+{
+ my $rv = check_install( module => 'NotX' );
+ ok( $rv, 'Testing $VERSION with many packages' );
+ ok( $rv->{version}, " Version found" );
+ is( $rv->{version}, 3, " Version is correct" );
+}
+
### test beta/developer release versions
{ my $test_ver = $Module::Load::Conditional::VERSION;
-
+
### strip beta tags
$test_ver =~ s/_\d+//g;
$test_ver .= '_99';
-
- my $rv = check_install(
- module => 'Module::Load::Conditional',
+
+ my $rv = check_install(
+ module => 'Module::Load::Conditional',
version => $test_ver,
);
ok( $rv, "Checking beta versions" );
ok( !$rv->{'uptodate'}, " Beta version is higher" );
-
-}
+
+}
### test $FIND_VERSION
-{ local $Module::Load::Conditional::FIND_VERSION = 0;
+{
local $Module::Load::Conditional::FIND_VERSION = 0;
-
+
my $rv = check_install( module => 'Module::Load::Conditional' );
ok( $rv, 'Testing $FIND_VERSION' );
is( $rv->{version}, undef, " No version info returned" );
ok( $rv->{uptodate}, " Module marked as uptodate" );
-}
+}
+
+### test that check_install() picks up the first match
+{
+ my ($dir_a, $dir_b) = map File::Spec->catdir($FindBin::Bin, 'test_lib', $_),
+ qw[a b];
+ my $x_pm = File::Spec->catfile($dir_a, 'X.pm');
+ $x_pm = VMS::Filespec::unixify($x_pm) if ON_VMS;
+
+ local @INC = ($dir_a, $dir_b);
+
+ my $rv = check_install( module => 'X' );
+
+ ok( $rv, 'Testing the file picked by check_install ($FIND_VERSION == 1)' );
+ is( $rv->{file}, $x_pm, " First file was picked" );
+ is( $rv->{version}, '0.01', " Correct version for first file" );
+
+ local $Module::Load::Conditional::FIND_VERSION = 0;
+
+ $rv = check_install( module => 'X' );
+
+ ok( $rv, 'Testing the file picked by check_install ($FIND_VERSION == 0)' );
+ is( $rv->{file}, $x_pm, " First file was also picked" );
+ is( $rv->{version}, undef, " But its VERSION was not required" );
+}
### test 'can_load' ###
@@ -198,11 +237,11 @@ use_ok( 'Module::Load::Conditional' );
### test 'requires' ###
SKIP:{
- skip "Depends on \$^X, which doesn't work well when testing the Perl core",
+ skip "Depends on \$^X, which doesn't work well when testing the Perl core",
1 if $ENV{PERL_CORE};
my %list = map { $_ => 1 } requires('Carp');
-
+
my $flag;
$flag++ unless delete $list{'Exporter'};
@@ -212,15 +251,15 @@ SKIP:{
### test using the %INC lookup for check_install
{ local $Module::Load::Conditional::CHECK_INC_HASH = 1;
local $Module::Load::Conditional::CHECK_INC_HASH = 1;
-
- { package A::B::C::D;
- $A::B::C::D::VERSION = $$;
+
+ { package A::B::C::D;
+ $A::B::C::D::VERSION = $$;
$INC{'A/B/C/D.pm'} = $$.$$;
-
+
### XXX this is no longer needed with M::Load 0.11_01
#$INC{'[.A.B.C]D.pm'} = $$.$$ if $^O eq 'VMS';
}
-
+
my $href = check_install( module => 'A::B::C::D', version => 0 );
ok( $href, 'Found package in %INC' );
diff --git a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/test_lib/a/X.pm b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/test_lib/a/X.pm
new file mode 100644
index 00000000000..df7eacc0e86
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/test_lib/a/X.pm
@@ -0,0 +1,5 @@
+package X;
+
+our $VERSION = '0.01';
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/test_lib/b/X.pm b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/test_lib/b/X.pm
new file mode 100644
index 00000000000..9591f980299
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/test_lib/b/X.pm
@@ -0,0 +1,5 @@
+package X;
+
+our $VERSION = '0.02';
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/Commented.pm b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/Commented.pm
index 2ee302e96c3..e3f516e5ecc 100644
--- a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/Commented.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/Commented.pm
@@ -1,3 +1,5 @@
+package Commented;
+
# $VERSION = 1;
$VERSION = 2;
diff --git a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/LoadIt.pm b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/LoadIt.pm
index 87025e8a512..64517ecf476 100644
--- a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/LoadIt.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/LoadIt.pm
@@ -1,3 +1,5 @@
+package LoadIt;
+
$VERSION = 1;
1;
diff --git a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/MustBe/Loaded.pm b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/MustBe/Loaded.pm
index e6423f3263f..ee857ddf873 100644
--- a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/MustBe/Loaded.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/MustBe/Loaded.pm
@@ -1,3 +1,5 @@
+package MustBe::Loaded;
+
$VERSION = 0.01;
1;
diff --git a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/NotMain.pm b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/NotMain.pm
new file mode 100644
index 00000000000..a88376194ae
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/NotMain.pm
@@ -0,0 +1,3 @@
+$VERSION = 1.23;
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/NotX.pm b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/NotX.pm
new file mode 100644
index 00000000000..ff54409dac7
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Load-Conditional/t/to_load/NotX.pm
@@ -0,0 +1,15 @@
+$VERSION = 1;
+
+package Y;
+
+$VERSION = 2;
+
+package NotX;
+
+$VERSION = 3;
+
+package X;
+
+$VERSION = 4;
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Module-Load/lib/Module/Load.pm b/gnu/usr.bin/perl/cpan/Module-Load/lib/Module/Load.pm
index 3a83c386a27..60464847449 100644
--- a/gnu/usr.bin/perl/cpan/Module-Load/lib/Module/Load.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Load/lib/Module/Load.pm
@@ -1,6 +1,6 @@
package Module::Load;
-$VERSION = '0.22';
+$VERSION = '0.24';
use strict;
use File::Spec ();
@@ -48,7 +48,7 @@ sub _to_file{
my $pm = shift || '';
## trailing blanks ignored by default. [rt #69886]
- my @parts = split /::/, $_, -1;
+ my @parts = split /::|'/, $_, -1;
## make sure that we can't hop out of @INC
shift @parts if @parts && !$parts[0];
diff --git a/gnu/usr.bin/perl/cpan/Module-Metadata/lib/Module/Metadata.pm b/gnu/usr.bin/perl/cpan/Module-Metadata/lib/Module/Metadata.pm
index e52a0e24968..e3c25049460 100644
--- a/gnu/usr.bin/perl/cpan/Module-Metadata/lib/Module/Metadata.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Metadata/lib/Module/Metadata.pm
@@ -11,7 +11,7 @@ package Module::Metadata;
use strict;
use vars qw($VERSION);
-$VERSION = '1.000009';
+$VERSION = '1.000011';
$VERSION = eval $VERSION;
use Carp qw/croak/;
@@ -61,7 +61,6 @@ my $VERS_REGEXP = qr{ # match a VERSION definition
=[^=~] # = but not ==, nor =~
}x;
-
sub new_from_file {
my $class = shift;
my $filename = File::Spec->rel2abs( shift );
@@ -219,7 +218,7 @@ sub new_from_module {
# separating into primary & alternative candidates
my( %prime, %alt );
foreach my $file (@files) {
- my $mapped_filename = File::Spec->abs2rel( $file, $dir );
+ my $mapped_filename = File::Spec::Unix->abs2rel( $file, $dir );
my @path = split( /\//, $mapped_filename );
(my $prime_package = join( '::', @path )) =~ s/\.pm$//;
@@ -232,10 +231,12 @@ sub new_from_module {
my $version = $pm_info->version( $package );
+ $prime_package = $package if lc($prime_package) eq lc($package);
if ( $package eq $prime_package ) {
if ( exists( $prime{$package} ) ) {
croak "Unexpected conflict in '$package'; multiple versions found.\n";
} else {
+ $mapped_filename = "$package.pm" if lc("$package.pm") eq lc($mapped_filename);
$prime{$package}{file} = $mapped_filename;
$prime{$package}{version} = $version if defined( $version );
}
@@ -420,7 +421,7 @@ sub _parse_version_expression {
my $line = shift;
my( $sig, $var, $pkg );
- if ( $line =~ $VERS_REGEXP ) {
+ if ( $line =~ /$VERS_REGEXP/o ) {
( $sig, $var, $pkg ) = $2 ? ( $1, $2, $3 ) : ( $4, $5, $6 );
if ( $pkg ) {
$pkg = ($pkg eq '::') ? 'main' : $pkg;
@@ -438,9 +439,49 @@ sub _parse_file {
my $fh = IO::File->new( $filename )
or croak( "Can't open '$filename': $!" );
+ $self->_handle_bom($fh, $filename);
+
$self->_parse_fh($fh);
}
+# Look for a UTF-8/UTF-16BE/UTF-16LE BOM at the beginning of the stream.
+# If there's one, then skip it and set the :encoding layer appropriately.
+sub _handle_bom {
+ my ($self, $fh, $filename) = @_;
+
+ my $pos = $fh->getpos;
+ return unless defined $pos;
+
+ my $buf = ' ' x 2;
+ my $count = $fh->read( $buf, length $buf );
+ return unless defined $count and $count >= 2;
+
+ my $encoding;
+ if ( $buf eq "\x{FE}\x{FF}" ) {
+ $encoding = 'UTF-16BE';
+ } elsif ( $buf eq "\x{FF}\x{FE}" ) {
+ $encoding = 'UTF-16LE';
+ } elsif ( $buf eq "\x{EF}\x{BB}" ) {
+ $buf = ' ';
+ $count = $fh->read( $buf, length $buf );
+ if ( defined $count and $count >= 1 and $buf eq "\x{BF}" ) {
+ $encoding = 'UTF-8';
+ }
+ }
+
+ if ( defined $encoding ) {
+ if ( "$]" >= 5.008 ) {
+ # $fh->binmode requires perl 5.10
+ binmode( $fh, ":encoding($encoding)" );
+ }
+ } else {
+ $fh->setpos($pos)
+ or croak( sprintf "Can't reset position to the top of '$filename'" );
+ }
+
+ return $encoding;
+}
+
sub _parse_fh {
my ($self, $fh) = @_;
@@ -454,16 +495,21 @@ sub _parse_fh {
my $line_num = $.;
chomp( $line );
- next if $line =~ /^\s*#/;
- $in_pod = ($line =~ /^=(?!cut)/) ? 1 : ($line =~ /^=cut/) ? 0 : $in_pod;
-
- # Would be nice if we could also check $in_string or something too
- last if !$in_pod && $line =~ /^__(?:DATA|END)__$/;
+ # From toke.c : any line that begins by "=X", where X is an alphabetic
+ # character, introduces a POD segment.
+ my $is_cut;
+ if ( $line =~ /^=([a-zA-Z].*)/ ) {
+ my $cmd = $1;
+ # Then it goes back to Perl code for "=cutX" where X is a non-alphabetic
+ # character (which includes the newline, but here we chomped it away).
+ $is_cut = $cmd =~ /^cut(?:[^a-zA-Z]|$)/;
+ $in_pod = !$is_cut;
+ }
- if ( $in_pod || $line =~ /^=cut/ ) {
+ if ( $in_pod ) {
- if ( $line =~ /^=head\d\s+(.+)\s*$/ ) {
+ if ( $line =~ /^=head[1-4]\s+(.+)\s*$/ ) {
push( @pod, $1 );
if ( $self->{collect_pod} && length( $pod_data ) ) {
$pod{$pod_sect} = $pod_data;
@@ -471,25 +517,37 @@ sub _parse_fh {
}
$pod_sect = $1;
-
} elsif ( $self->{collect_pod} ) {
$pod_data .= "$line\n";
}
- } else {
+ } elsif ( $is_cut ) {
+ if ( $self->{collect_pod} && length( $pod_data ) ) {
+ $pod{$pod_sect} = $pod_data;
+ $pod_data = '';
+ }
$pod_sect = '';
- $pod_data = '';
+
+ } else {
+
+ # Skip comments in code
+ next if $line =~ /^\s*#/;
+
+ # Would be nice if we could also check $in_string or something too
+ last if $line =~ /^__(?:DATA|END)__$/;
# parse $line to see if it's a $VERSION declaration
my( $vers_sig, $vers_fullname, $vers_pkg ) =
- $self->_parse_version_expression( $line );
+ ($line =~ /VERSION/)
+ ? $self->_parse_version_expression( $line )
+ : ();
- if ( $line =~ $PKG_REGEXP ) {
+ if ( $line =~ /$PKG_REGEXP/o ) {
$pkg = $1;
push( @pkgs, $pkg ) unless grep( $pkg eq $_, @pkgs );
- $vers{$pkg} = (defined $2 ? $2 : undef) unless exists( $vers{$pkg} );
+ $vers{$pkg} = $2 unless exists( $vers{$pkg} );
$need_vers = defined $2 ? 0 : 1;
# VERSION defined with full package spec, i.e. $Module::VERSION
@@ -500,14 +558,6 @@ sub _parse_fh {
unless ( defined $vers{$vers_pkg} && length $vers{$vers_pkg} ) {
$vers{$vers_pkg} =
$self->_evaluate_version_line( $vers_sig, $vers_fullname, $line );
- } else {
- # Warn unless the user is using the "$VERSION = eval
- # $VERSION" idiom (though there are probably other idioms
- # that we should watch out for...)
- warn <<"EOM" unless $line =~ /=\s*eval/;
-Package '$vers_pkg' already declared with version '$vers{$vers_pkg}',
-ignoring subsequent declaration on line $line_num.
-EOM
}
# first non-comment line in undeclared package main is VERSION
@@ -533,12 +583,7 @@ EOM
unless ( defined $vers{$pkg} && length $vers{$pkg} ) {
$vers{$pkg} = $v;
- } else {
- warn <<"EOM";
-Package '$pkg' already declared with version '$vers{$pkg}'
-ignoring new version '$v' on line $line_num.
-EOM
- }
+ }
}
@@ -730,27 +775,43 @@ without executing unsafe code.
=item C<< new_from_file($filename, collect_pod => 1) >>
-Construct a C<Module::Metadata> object given the path to a file. Takes an
-optional argument C<collect_pod> which is a boolean that determines whether POD
-data is collected and stored for reference. POD data is not collected by
-default. POD headings are always collected. Returns undef if the filename
-does not exist.
+Constructs a C<Module::Metadata> object given the path to a file. Returns
+undef if the filename does not exist.
+
+C<collect_pod> is a optional boolean argument that determines whether POD
+data is collected and stored for reference. POD data is not collected by
+default. POD headings are always collected.
+
+If the file begins by an UTF-8, UTF-16BE or UTF-16LE byte-order mark, then
+it is skipped before processing, and the content of the file is also decoded
+appropriately starting from perl 5.8.
=item C<< new_from_handle($handle, $filename, collect_pod => 1) >>
This works just like C<new_from_file>, except that a handle can be provided
-as the first argument. Note that there is no validation to confirm that the
-handle is a handle or something that can act like one. Passing something that
-isn't a handle will cause a exception when trying to read from it. The
-C<filename> argument is mandatory or undef will be returned.
+as the first argument.
+
+Note that there is no validation to confirm that the handle is a handle or
+something that can act like one. Passing something that isn't a handle will
+cause a exception when trying to read from it. The C<filename> argument is
+mandatory or undef will be returned.
+
+You are responsible for setting the decoding layers on C<$handle> if
+required.
=item C<< new_from_module($module, collect_pod => 1, inc => \@dirs) >>
-Construct a C<Module::Metadata> object given a module or package name. In addition
-to accepting the C<collect_pod> argument as described above, this
-method accepts a C<inc> argument which is a reference to an array of
-of directories to search for the module. If none are given, the
-default is @INC. Returns undef if the module cannot be found.
+Constructs a C<Module::Metadata> object given a module or package name.
+Returns undef if the module cannot be found.
+
+In addition to accepting the C<collect_pod> argument as described above,
+this method accepts a C<inc> argument which is a reference to an array of
+directories to search for the module. If none are given, the default is
+@INC.
+
+If the file that contains the module begins by an UTF-8, UTF-16BE or
+UTF-16LE byte-order mark, then it is skipped before processing, and the
+content of the file is also decoded appropriately starting from perl 5.8.
=item C<< find_module_by_name($module, \@dirs) >>
@@ -897,7 +958,7 @@ Original code from Module::Build::ModuleInfo by Ken Williams
Released as Module::Metadata by Matt S Trout (mst) <mst@shadowcat.co.uk> with
assistance from David Golden (xdg) <dagolden@cpan.org>.
-=head1 COPYRIGHT
+=head1 COPYRIGHT & LICENSE
Original code Copyright (c) 2001-2011 Ken Williams.
Additional code Copyright (c) 2010-2011 Matt Trout and David Golden.
diff --git a/gnu/usr.bin/perl/cpan/Module-Metadata/t/encoding.t b/gnu/usr.bin/perl/cpan/Module-Metadata/t/encoding.t
new file mode 100644
index 00000000000..a0970e051ce
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Metadata/t/encoding.t
@@ -0,0 +1,30 @@
+#!perl
+
+use strict;
+use File::Spec;
+use Test::More;
+
+use Module::Metadata;
+
+if ("$]" < 5.008_003) {
+ plan skip_all => 'Encoding test needs at least perl 5.8.3';
+}
+
+my %versions = (
+ UTF8 => 3,
+ UTF16BE => 4,
+ UTF16LE => 5,
+);
+
+plan tests => 4 * scalar(keys %versions);
+
+for my $enc (sort keys %versions) {
+ my $pkg = "BOMTest::$enc";
+ my $vers = $versions{$enc};
+ my $pm = File::Spec->catfile(qw<t lib BOMTest> => "$enc.pm");
+ my $info = Module::Metadata->new_from_file($pm);
+ is( $info->name, $pkg, "$enc: default package was found" );
+ is( $info->version, $vers, "$enc: version for default package" );
+ is( $info->version('Heart'), '1', 'version for ASCII package' );
+ is( $info->version("C\x{153}ur"), '2', 'version for Unicode package' );
+}
diff --git a/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF16BE.pm b/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF16BE.pm
new file mode 100644
index 00000000000..17c6a4ad655
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF16BE.pm
Binary files differ
diff --git a/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF16LE.pm b/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF16LE.pm
new file mode 100644
index 00000000000..a46de6de4e8
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF16LE.pm
Binary files differ
diff --git a/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF8.pm b/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF8.pm
new file mode 100644
index 00000000000..9062ac60753
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/BOMTest/UTF8.pm
@@ -0,0 +1,13 @@
+package Heart;
+
+our $VERSION = 1;
+
+package BOMTest::UTF8;
+
+our $VERSION = 3;
+
+package Cœur;
+
+our $VERSION = 2;
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Module-Metadata/t/metadata.t b/gnu/usr.bin/perl/cpan/Module-Metadata/t/metadata.t
index ab9c8c4127e..b7adb1ec4bd 100644
--- a/gnu/usr.bin/perl/cpan/Module-Metadata/t/metadata.t
+++ b/gnu/usr.bin/perl/cpan/Module-Metadata/t/metadata.t
@@ -28,6 +28,15 @@ package Simple;
our $VERSION;
$VERSION = '1.23';
---
+ '1.23' => <<'---', # commented & defined on same line
+package Simple;
+our $VERSION = '1.23'; # our $VERSION = '4.56';
+---
+ '1.23' => <<'---', # commented & defined on separate lines
+package Simple;
+# our $VERSION = '4.56';
+our $VERSION = '1.23';
+---
'1.23' => <<'---', # use vars
package Simple;
use vars qw( $VERSION );
@@ -203,7 +212,7 @@ package Simple v1.2.3_4 {
);
my %modules = reverse @modules;
-plan tests => 42 + 2 * keys( %modules );
+plan tests => 54 + 2 * keys( %modules );
require_ok('Module::Metadata');
@@ -246,7 +255,7 @@ $pm_info = Module::Metadata->new_from_handle( $handle, $file );
ok( defined( $pm_info ), 'new_from_handle() succeeds' );
$pm_info = Module::Metadata->new_from_handle( $handle );
is( $pm_info, undef, "new_from_handle() without filename returns undef" );
-
+close($handle);
# construct from module name, using custom include path
$pm_info = Module::Metadata->new_from_module(
@@ -420,6 +429,9 @@ Simple - It's easy.
Simple Simon
+You can find me on the IRC channel
+#simon on irc.perl.org.
+
=cut
---
$dist->regen;
@@ -459,13 +471,59 @@ is( $pm_info->pod('NAME'), undef,
$pm_info = Module::Metadata->new_from_module(
$dist->name, inc => [ 'lib', @INC ], collect_pod => 1 );
-my $name = $pm_info->pod('NAME');
-if ( $name ) {
- $name =~ s/^\s+//;
- $name =~ s/\s+$//;
+{
+ my %pod;
+ for my $section (qw(NAME AUTHOR)) {
+ my $content = $pm_info->pod( $section );
+ if ( $content ) {
+ $content =~ s/^\s+//;
+ $content =~ s/\s+$//;
+ }
+ $pod{$section} = $content;
+ }
+ my %expected = (
+ NAME => q|Simple - It's easy.|,
+ AUTHOR => <<'EXPECTED'
+Simple Simon
+
+You can find me on the IRC channel
+#simon on irc.perl.org.
+EXPECTED
+ );
+ for my $text (values %expected) {
+ $text =~ s/^\s+//;
+ $text =~ s/\s+$//;
+ }
+ is( $pod{NAME}, $expected{NAME}, 'collected NAME pod section' );
+ is( $pod{AUTHOR}, $expected{AUTHOR}, 'collected AUTHOR pod section' );
}
-is( $name, q|Simple - It's easy.|, 'collected pod section' );
+{
+ # test things that look like POD, but aren't
+$dist->change_file( 'lib/Simple.pm', <<'---' );
+package Simple;
+
+=YES THIS STARTS POD
+
+our $VERSION = '999';
+
+=cute
+
+our $VERSION = '666';
+
+=cut
+
+*foo
+=*no_this_does_not_start_pod;
+
+our $VERSION = '1.23';
+
+---
+ $dist->regen;
+ $pm_info = Module::Metadata->new_from_file('lib/Simple.pm');
+ is( $pm_info->name, 'Simple', 'found default package' );
+ is( $pm_info->version, '1.23', 'version for default package' );
+}
{
# Make sure processing stops after __DATA__
@@ -582,3 +640,35 @@ is_deeply( $got_pvfd, $exp_pvfd, "package_version_from_directory()" )
is_deeply( $got_provides, $exp_provides, "provides()" )
or diag explain $got_provides;
}
+
+# Check package_versions_from_directory with regard to case-sensitivity
+{
+ $dist->change_file( 'lib/Simple.pm', <<'---' );
+package simple;
+$VERSION = '0.01';
+---
+ $dist->regen;
+
+ $pm_info = Module::Metadata->new_from_file('lib/Simple.pm');
+ is( $pm_info->name, undef, 'no default package' );
+ is( $pm_info->version, undef, 'version for default package' );
+ is( $pm_info->version('simple'), '0.01', 'version for lower-case package' );
+ is( $pm_info->version('Simple'), undef, 'version for capitalized package' );
+
+ $dist->change_file( 'lib/Simple.pm', <<'---' );
+package simple;
+$VERSION = '0.01';
+package Simple;
+$VERSION = '0.02';
+package SiMpLe;
+$VERSION = '0.03';
+---
+ $dist->regen;
+
+ $pm_info = Module::Metadata->new_from_file('lib/Simple.pm');
+ is( $pm_info->name, 'Simple', 'found default package' );
+ is( $pm_info->version, '0.02', 'version for default package' );
+ is( $pm_info->version('simple'), '0.01', 'version for lower-case package' );
+ is( $pm_info->version('Simple'), '0.02', 'version for capitalized package' );
+ is( $pm_info->version('SiMpLe'), '0.03', 'version for mixed-case package' );
+}
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Devel/InnerPackage.pm b/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Devel/InnerPackage.pm
index 69f8dcaa447..cf285693e2f 100644
--- a/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Devel/InnerPackage.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Devel/InnerPackage.pm
@@ -4,6 +4,8 @@ use strict;
use base qw(Exporter);
use vars qw($VERSION @EXPORT_OK);
+use if $] > 5.017, 'deprecate';
+
$VERSION = '0.4';
@EXPORT_OK = qw(list_packages);
@@ -11,7 +13,6 @@ $VERSION = '0.4';
=head1 NAME
-
Devel::InnerPackage - find all the inner packages of a package
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Module/Pluggable.pm b/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Module/Pluggable.pm
index 55cf7269e70..9e7962efab7 100644
--- a/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Module/Pluggable.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Module/Pluggable.pm
@@ -1,15 +1,18 @@
package Module::Pluggable;
use strict;
-use vars qw($VERSION);
+use vars qw($VERSION $FORCE_SEARCH_ALL_PATHS);
use Module::Pluggable::Object;
+use if $] > 5.017, 'deprecate';
+
# ObQuote:
# Bob Porter: Looks like you've been missing a lot of work lately.
# Peter Gibbons: I wouldn't say I've been missing it, Bob!
-$VERSION = '4.0';
+$VERSION = '4.7';
+$FORCE_SEARCH_ALL_PATHS = 0;
sub import {
my $class = shift;
@@ -22,6 +25,7 @@ sub import {
my ($package) = $opts{'package'} || $pkg;
$opts{filename} = $file;
$opts{package} = $package;
+ $opts{force_search_all_paths} = $FORCE_SEARCH_ALL_PATHS unless exists $opts{force_search_all_paths};
my $finder = Module::Pluggable::Object->new(%opts);
@@ -152,9 +156,8 @@ Optionally it instantiates those classes for you.
=head1 ADVANCED USAGE
-
Alternatively, if you don't want to use 'plugins' as the method ...
-
+
package MyClass;
use Module::Pluggable sub_name => 'foo';
@@ -227,6 +230,21 @@ and then later ...
my @filters = $self->filters;
my @plugins = $self->plugins;
+
+=head1 PLUGIN SEARCHING
+
+Every time you call 'plugins' the whole search path is walked again. This allows
+for dynamically loading plugins even at run time. However this can get expensive
+and so if you don't expect to want to add new plugins at run time you could do
+
+
+ package Foo;
+ use strict;
+ use Module::Pluggable sub_name => '_plugins';
+
+ our @PLUGINS;
+ sub plugins { @PLUGINS ||= shift->_plugins }
+ 1;
=head1 INNER PACKAGES
@@ -307,6 +325,62 @@ the extensions F<.swp> or F<.swo>, or files beginning with F<.#>.
Setting C<include_editor_junk> changes C<Module::Pluggable> so it does
not ignore any files it finds.
+=head2 follow_symlinks
+
+Whether, when searching directories, to follow symlinks.
+
+Defaults to 1 i.e do follow symlinks.
+
+=head2 min_depth, max_depth
+
+This will allow you to set what 'depth' of plugin will be allowed.
+
+So, for example, C<MyClass::Plugin::Foo> will have a depth of 3 and
+C<MyClass::Plugin::Foo::Bar> will have a depth of 4 so to only get the former
+(i.e C<MyClass::Plugin::Foo>) do
+
+ package MyClass;
+ use Module::Pluggable max_depth => 3;
+
+and to only get the latter (i.e C<MyClass::Plugin::Foo::Bar>)
+
+ package MyClass;
+ use Module::Pluggable min_depth => 4;
+
+
+=head1 TRIGGERS
+
+Various triggers can also be passed in to the options.
+
+If any of these triggers return 0 then the plugin will not be returned.
+
+=head2 before_require <plugin>
+
+Gets passed the plugin name.
+
+If 0 is returned then this plugin will not be required either.
+
+=head2 on_require_error <plugin> <err>
+
+Gets called when there's an error on requiring the plugin.
+
+Gets passed the plugin name and the error.
+
+The default on_require_error handler is to C<carp> the error and return 0.
+
+=head2 on_instantiate_error <plugin> <err>
+
+Gets called when there's an error on instantiating the plugin.
+
+Gets passed the plugin name and the error.
+
+The default on_instantiate_error handler is to C<carp> the error and return 0.
+
+=head2 after_require <plugin>
+
+Gets passed the plugin name.
+
+If 0 is returned then this plugin will be required but not returned as a plugin.
=head1 METHODs
@@ -319,7 +393,29 @@ search_path.
$self->search_path( add => "New::Path" ); # add
$self->search_path( new => "New::Path" ); # replace
+=head1 BEHAVIOUR UNDER TEST ENVIRONMENT
+In order to make testing reliable we exclude anything not from blib if blib.pm is
+in %INC.
+
+However if the module being tested used another module that itself used C<Module::Pluggable>
+then the second module would fail. This was fixed by checking to see if the caller
+had (^|/)blib/ in their filename.
+
+There's an argument that this is the wrong behaviour and that modules should explicitly
+trigger this behaviour but that particular code has been around for 7 years now and I'm
+reluctant to change the default behaviour.
+
+You can now (as of version 4.1) force Module::Pluggable to look outside blib in a test environment by doing either
+
+ require Module::Pluggable;
+ $Module::Pluggable::FORCE_SEARCH_ALL_PATHS = 1;
+ import Module::Pluggable;
+
+or
+
+ use Module::Pluggable force_search_all_paths => 1;
+
=head1 FUTURE PLANS
@@ -332,6 +428,12 @@ Recently tried fixed to find inner packages and to make it
However suggestions (and patches) are welcome.
+=head1 DEVELOPMENT
+
+The master repo for this module is at
+
+https://github.com/simonwistow/Module-Pluggable
+
=head1 AUTHOR
Simon Wistow <simon@thegestalt.org>
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Module/Pluggable/Object.pm b/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Module/Pluggable/Object.pm
index e0ee993075d..6b1d265456c 100644
--- a/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Module/Pluggable/Object.pm
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/lib/Module/Pluggable/Object.pm
@@ -4,11 +4,13 @@ use strict;
use File::Find ();
use File::Basename;
use File::Spec::Functions qw(splitdir catdir curdir catfile abs2rel);
-use Carp qw(croak carp);
+use Carp qw(croak carp confess);
use Devel::InnerPackage;
use vars qw($VERSION);
-$VERSION = '3.9';
+use if $] > 5.017, 'deprecate';
+
+$VERSION = '4.6';
sub new {
@@ -25,64 +27,74 @@ sub new {
sub plugins {
- my $self = shift;
-
- # override 'require'
- $self->{'require'} = 1 if $self->{'inner'};
-
- my $filename = $self->{'filename'};
- my $pkg = $self->{'package'};
-
- # Get the exception params instantiated
- $self->_setup_exceptions;
-
- # automatically turn a scalar search path or namespace into a arrayref
- for (qw(search_path search_dirs)) {
- $self->{$_} = [ $self->{$_} ] if exists $self->{$_} && !ref($self->{$_});
- }
-
- # default search path is '<Module>::<Name>::Plugin'
- $self->{'search_path'} = ["${pkg}::Plugin"] unless $self->{'search_path'};
+ my $self = shift;
+ my @args = @_;
+ # override 'require'
+ $self->{'require'} = 1 if $self->{'inner'};
- #my %opts = %$self;
+ my $filename = $self->{'filename'};
+ my $pkg = $self->{'package'};
+ # Get the exception params instantiated
+ $self->_setup_exceptions;
- # check to see if we're running under test
- my @SEARCHDIR = exists $INC{"blib.pm"} && defined $filename && $filename =~ m!(^|/)blib/! ? grep {/blib/} @INC : @INC;
+ # automatically turn a scalar search path or namespace into a arrayref
+ for (qw(search_path search_dirs)) {
+ $self->{$_} = [ $self->{$_} ] if exists $self->{$_} && !ref($self->{$_});
+ }
- # add any search_dir params
- unshift @SEARCHDIR, @{$self->{'search_dirs'}} if defined $self->{'search_dirs'};
+ # default search path is '<Module>::<Name>::Plugin'
+ $self->{'search_path'} ||= ["${pkg}::Plugin"];
+ # default error handler
+ $self->{'on_require_error'} ||= sub { my ($plugin, $err) = @_; carp "Couldn't require $plugin : $err"; return 0 };
+ $self->{'on_instantiate_error'} ||= sub { my ($plugin, $err) = @_; carp "Couldn't instantiate $plugin: $err"; return 0 };
- my @plugins = $self->search_directories(@SEARCHDIR);
- push(@plugins, $self->handle_innerpackages($_)) for @{$self->{'search_path'}};
+ # default whether to follow symlinks
+ $self->{'follow_symlinks'} = 1 unless exists $self->{'follow_symlinks'};
- # push @plugins, map { print STDERR "$_\n"; $_->require } list_packages($_) for (@{$self->{'search_path'}});
-
- # return blank unless we've found anything
- return () unless @plugins;
+ # check to see if we're running under test
+ my @SEARCHDIR = exists $INC{"blib.pm"} && defined $filename && $filename =~ m!(^|/)blib/! && !$self->{'force_search_all_paths'} ? grep {/blib/} @INC : @INC;
+ # add any search_dir params
+ unshift @SEARCHDIR, @{$self->{'search_dirs'}} if defined $self->{'search_dirs'};
+ # set our @INC up to include and prefer our search_dirs if necessary
+ my @tmp = @INC;
+ unshift @tmp, @{$self->{'search_dirs'} || []};
+ local @INC = @tmp if defined $self->{'search_dirs'};
- # remove duplicates
- # probably not necessary but hey ho
- my %plugins;
- for(@plugins) {
- next unless $self->_is_legit($_);
- $plugins{$_} = 1;
- }
+ my @plugins = $self->search_directories(@SEARCHDIR);
+ push(@plugins, $self->handle_innerpackages($_)) for @{$self->{'search_path'}};
+
+ # return blank unless we've found anything
+ return () unless @plugins;
+
+ # remove duplicates
+ # probably not necessary but hey ho
+ my %plugins;
+ for(@plugins) {
+ next unless $self->_is_legit($_);
+ $plugins{$_} = 1;
+ }
- # are we instantiating or requring?
- if (defined $self->{'instantiate'}) {
- my $method = $self->{'instantiate'};
- return map { ($_->can($method)) ? $_->$method(@_) : () } keys %plugins;
- } else {
- # no? just return the names
- return keys %plugins;
+ # are we instantiating or requring?
+ if (defined $self->{'instantiate'}) {
+ my $method = $self->{'instantiate'};
+ my @objs = ();
+ foreach my $package (sort keys %plugins) {
+ next unless $package->can($method);
+ my $obj = eval { $package->$method(@_) };
+ $self->{'on_instantiate_error'}->($package, $@) if $@;
+ push @objs, $obj if $obj;
}
-
-
+ return @objs;
+ } else {
+ # no? just return the names
+ my @objs= sort keys %plugins;
+ return @objs;
+ }
}
sub _setup_exceptions {
@@ -127,12 +139,16 @@ sub _is_legit {
my %except = %{$self->{_exceptions}->{except_hash}||{}};
my $only = $self->{_exceptions}->{only};
my $except = $self->{_exceptions}->{except};
+ my $depth = () = split '::', $plugin, -1;
return 0 if (keys %only && !$only{$plugin} );
return 0 unless (!defined $only || $plugin =~ m!$only! );
return 0 if (keys %except && $except{$plugin} );
return 0 if (defined $except && $plugin =~ m!$except! );
+
+ return 0 if defined $self->{max_depth} && $depth>$self->{max_depth};
+ return 0 if defined $self->{min_depth} && $depth<$self->{min_depth};
return 1;
}
@@ -193,7 +209,7 @@ sub search_paths {
next if ($in_pod || $line =~ /^=cut/); # skip pod text
next if $line =~ /^\s*#/; # and comments
if ( $line =~ m/^\s*package\s+(.*::)?($name)\s*;/i ) {
- @pkg_dirs = split /::/, $1;
+ @pkg_dirs = split /::/, $1 if defined $1;;
$name = $2;
last;
}
@@ -220,10 +236,7 @@ sub search_paths {
next unless $plugin =~ m!(?:[a-z\d]+)[a-z\d]!i;
- my $err = $self->handle_finding_plugin($plugin);
- carp "Couldn't require $plugin : $err" if $err;
-
- push @plugins, $plugin;
+ $self->handle_finding_plugin($plugin, \@plugins)
}
# now add stuff that may have been in package
@@ -252,12 +265,33 @@ sub _is_editor_junk {
}
sub handle_finding_plugin {
- my $self = shift;
- my $plugin = shift;
-
- return unless (defined $self->{'instantiate'} || $self->{'require'});
+ my $self = shift;
+ my $plugin = shift;
+ my $plugins = shift;
+ my $no_req = shift || 0;
+
return unless $self->_is_legit($plugin);
- $self->_require($plugin);
+ unless (defined $self->{'instantiate'} || $self->{'require'}) {
+ push @$plugins, $plugin;
+ return;
+ }
+
+ $self->{before_require}->($plugin) || return if defined $self->{before_require};
+ unless ($no_req) {
+ my $tmp = $@;
+ my $res = eval { $self->_require($plugin) };
+ my $err = $@;
+ $@ = $tmp;
+ if ($err) {
+ if (defined $self->{on_require_error}) {
+ $self->{on_require_error}->($plugin, $err) || return;
+ } else {
+ return;
+ }
+ }
+ }
+ $self->{after_require}->($plugin) || return if defined $self->{after_require};
+ push @$plugins, $plugin;
}
sub find_files {
@@ -273,7 +307,8 @@ sub find_files {
{ # for the benefit of perl 5.6.1's Find, localize topic
local $_;
File::Find::find( { no_chdir => 1,
- wanted => sub {
+ follow => $self->{'follow_symlinks'},
+ wanted => sub {
# Inlined from File::Find::Rule C< name => '*.pm' >
return unless $File::Find::name =~ /$file_regex/;
(my $path = $File::Find::name) =~ s#^\\./##;
@@ -294,10 +329,7 @@ sub handle_innerpackages {
my @plugins;
foreach my $plugin (Devel::InnerPackage::list_packages($path)) {
- my $err = $self->handle_finding_plugin($plugin);
- #next if $err;
- #next unless $INC{$plugin};
- push @plugins, $plugin;
+ $self->handle_finding_plugin($plugin, \@plugins, 1);
}
return @plugins;
@@ -305,11 +337,11 @@ sub handle_innerpackages {
sub _require {
- my $self = shift;
- my $pack = shift;
- local $@;
+ my $self = shift;
+ my $pack = shift;
eval "CORE::require $pack";
- return $@;
+ die ($@) if $@;
+ return 1;
}
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/19can_ok_clobber.t b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/19can_ok_clobber.t
index 07c598b4ba1..60616f6a300 100755
--- a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/19can_ok_clobber.t
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/19can_ok_clobber.t
@@ -10,7 +10,7 @@ use Test::More tests=>5;
#use_ok( 'MyTest' );
#diag "Module::Pluggable::VERSION $Module::Pluggable::VERSION";
-my @plugins = MyTest->plugins;
+my @plugins = sort MyTest->plugins;
my @plugins_after;
use_ok( 'MyTest::Plugin::Foo' );
@@ -21,16 +21,16 @@ is_deeply(
\@plugins_after,
\@plugins,
"plugins haven't been clobbered",
-);
+) or diag Dumper(\@plugins_after,\@plugins);
can_ok ($foo, 'frobnitz');
-@plugins_after = MyTest->plugins;
+@plugins_after = sort MyTest->plugins;
is_deeply(
\@plugins_after,
\@plugins,
"plugins haven't been clobbered",
-) or diag Dumper ;
+) or diag Dumper(\@plugins_after,\@plugins);
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/22trigger.t b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/22trigger.t
new file mode 100644
index 00000000000..819e9ef20f0
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/22trigger.t
@@ -0,0 +1,54 @@
+#!perl -w
+
+use strict;
+use FindBin;
+use lib (($FindBin::Bin."/lib")=~/^(.*)$/);
+use Test::More tests => 7;
+
+my $foo;
+my @plugins;
+my @errors;
+ok($foo = TriggerTest->new(), "Created new TriggerTest");
+ok(@plugins = $foo->plugins, "Ran plugins");
+ok(@errors = $foo->errors, "Got errors");
+is_deeply([sort @plugins], ['TriggerTest::Plugin::After', 'TriggerTest::Plugin::CallbackAllow'], "Got the correct plugins");
+is_deeply([@errors], ['TriggerTest::Plugin::Error'], "Got the correct errors");
+ok(_is_loaded('TriggerTest::Plugin::CallbackDeny'), "CallbackDeny has been required");
+ok(!_is_loaded('TriggerTest::Plugin::Deny'), "Deny has not been required");
+
+
+# Stolen from Module::Loaded by Chris Williams (bingOs)
+sub _is_loaded {
+ my $pm = shift;
+ my $file = __PACKAGE__->_pm_to_file( $pm ) or return;
+ return $INC{$file} if exists $INC{$file};
+ return;
+}
+
+sub _pm_to_file {
+ my $pkg = shift;
+ my $pm = shift or return;
+ my $file = join '/', split '::', $pm;
+ $file .= '.pm';
+ return $file;
+}
+
+package TriggerTest;
+
+our @ERRORS;
+use strict;
+use Module::Pluggable require => 1,
+ on_require_error => sub { my $p = shift; push @ERRORS, $p; return 0 },
+ before_require => sub { my $p = shift; return !($p eq "TriggerTest::Plugin::Deny") },
+ after_require => sub { my $p = shift; return !($p->can('exclude') && $p->exclude) };
+
+sub new {
+ my $class = shift;
+ return bless {}, $class;
+}
+
+sub errors {
+ @ERRORS;
+}
+1;
+
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/23depth.t b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/23depth.t
new file mode 100644
index 00000000000..ef3fb31f49a
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/23depth.t
@@ -0,0 +1,38 @@
+#!perl -w
+
+use strict;
+use FindBin;
+use lib (($FindBin::Bin."/lib")=~/^(.*)$/);
+use Test::More tests => 2;
+
+
+my $min = MinTest->new();
+my $max = MaxTest->new();
+is_deeply([sort qw(MyOtherTest::Plugin::Bar MyOtherTest::Plugin::Foo MyOtherTest::Plugin::Quux)], [sort $max->plugins], "min depth");
+is_deeply([qw(MyOtherTest::Plugin::Quux::Foo)], [sort $min->plugins], "max depth");
+
+
+package MinTest;
+use File::Spec::Functions qw(catdir);
+use strict;
+use File::Spec::Functions qw(catdir);
+use Module::Pluggable search_path => "MyOtherTest::Plugin", min_depth => 4;
+
+
+sub new {
+ my $class = shift;
+ return bless {}, $class;
+}
+
+package MaxTest;
+use File::Spec::Functions qw(catdir);
+use strict;
+use File::Spec::Functions qw(catdir);
+use Module::Pluggable search_path => "MyOtherTest::Plugin", max_depth => 3;
+
+
+sub new {
+ my $class = shift;
+ return bless {}, $class;
+}
+1; \ No newline at end of file
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/24local_inc_object.t b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/24local_inc_object.t
new file mode 100644
index 00000000000..c8e00facfce
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/24local_inc_object.t
@@ -0,0 +1,23 @@
+#!perl -w
+
+use strict;
+use FindBin;
+use Test::More tests => 2;
+
+my $inc = IncTest->new();
+my ($ta) = grep { ref($_) eq 'Text::Abbrev'} eval { local ($^W) = 0; $inc->plugins };
+ok($ta);
+is($ta->MPCHECK, "HELLO");
+
+package IncTest;
+use Module::Pluggable search_path => "Text",
+ search_dirs => "t/lib",
+ instantiate => 'module_pluggable',
+ on_require_error => sub { },
+ on_instantiate_error => sub { };
+
+sub new {
+ my $class = shift;
+ return bless {}, $class;
+}
+1;
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/24local_inc_package.t b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/24local_inc_package.t
new file mode 100644
index 00000000000..ef0f330f1d2
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/24local_inc_package.t
@@ -0,0 +1,17 @@
+#!perl -w
+
+use strict;
+use FindBin;
+use Test::More tests => 1;
+
+IncTest->new()->plugins;
+is(Text::Abbrev->MPCHECK, "HELLO");
+
+package IncTest;
+use Module::Pluggable search_path => "Text", search_dirs => "t/lib", require => 1;
+
+sub new {
+ my $class = shift;
+ return bless {}, $class;
+}
+1; \ No newline at end of file
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/Text/Abbrev.pm b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/Text/Abbrev.pm
new file mode 100644
index 00000000000..8417072f3ec
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/Text/Abbrev.pm
@@ -0,0 +1,10 @@
+package Text::Abbrev;
+use strict;
+
+sub module_pluggable {
+ return bless {}, shift;
+}
+
+sub MPCHECK { "HELLO" }
+
+1; \ No newline at end of file
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/After.pm b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/After.pm
new file mode 100644
index 00000000000..b5f69015575
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/After.pm
@@ -0,0 +1,3 @@
+package TriggerTest::Plugin::After;
+
+1; \ No newline at end of file
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackAllow.pm b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackAllow.pm
new file mode 100644
index 00000000000..589b154ca4d
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackAllow.pm
@@ -0,0 +1,6 @@
+package TriggerTest::Plugin::CallbackAllow;
+
+sub exclude {
+ return 0;
+}
+1; \ No newline at end of file
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackDeny.pm b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackDeny.pm
new file mode 100644
index 00000000000..e63227f59c1
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackDeny.pm
@@ -0,0 +1,6 @@
+package TriggerTest::Plugin::CallbackDeny;
+
+sub exclude {
+ return 1;
+}
+1; \ No newline at end of file
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Deny.pm b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Deny.pm
new file mode 100644
index 00000000000..311e2a07a04
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Deny.pm
@@ -0,0 +1,3 @@
+package TriggerTest::Plugin::Deny;
+
+1; \ No newline at end of file
diff --git a/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Error.pm b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Error.pm
new file mode 100644
index 00000000000..620465a942c
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Error.pm
@@ -0,0 +1,2 @@
+package TriggerTest::Plugin::Error;
+
diff --git a/gnu/usr.bin/perl/cpan/Object-Accessor/lib/Object/Accessor.pm b/gnu/usr.bin/perl/cpan/Object-Accessor/lib/Object/Accessor.pm
index edee181d072..9a930905c2e 100644
--- a/gnu/usr.bin/perl/cpan/Object-Accessor/lib/Object/Accessor.pm
+++ b/gnu/usr.bin/perl/cpan/Object-Accessor/lib/Object/Accessor.pm
@@ -1,16 +1,16 @@
package Object::Accessor;
+use if $] > 5.017, 'deprecate';
use strict;
use Carp qw[carp croak];
use vars qw[$FATAL $DEBUG $AUTOLOAD $VERSION];
use Params::Check qw[allow];
-use Data::Dumper;
### some objects might have overload enabled, we'll need to
### disable string overloading for callbacks
require overload;
-$VERSION = '0.42';
+$VERSION = '0.46';
$FATAL = 0;
$DEBUG = 0;
@@ -430,19 +430,20 @@ sub can {
my($self, $method) = @_;
### it's one of our regular methods
- if( $self->UNIVERSAL::can($method) ) {
- __PACKAGE__->___debug( "Can '$method' -- provided by package" );
- return $self->UNIVERSAL::can($method);
+ my $code = $self->UNIVERSAL::can($method);
+ if( $code ) {
+ carp( "Can '$method' -- provided by package" ) if $DEBUG;
+ return $code;
}
### it's an accessor we provide;
if( UNIVERSAL::isa( $self, 'HASH' ) and exists $self->{$method} ) {
- __PACKAGE__->___debug( "Can '$method' -- provided by object" );
+ carp( "Can '$method' -- provided by object" ) if $DEBUG;
return sub { $self->$method(@_); }
}
### we don't support it
- __PACKAGE__->___debug( "Cannot '$method'" );
+ carp( "Cannot '$method'" ) if $DEBUG;
return;
}
@@ -611,7 +612,6 @@ sub ___debug {
my $self = shift;
my $msg = shift;
- my $lvl = shift || 0;
local $Carp::CarpLevel += 1;
@@ -741,7 +741,6 @@ See C<perldoc perlsub> for details.
### standard tie class for bound attributes
{ package Object::Accessor::TIE;
use Tie::Scalar;
- use Data::Dumper;
use base 'Tie::StdScalar';
my %local = ();
diff --git a/gnu/usr.bin/perl/cpan/Params-Check/lib/Params/Check.pm b/gnu/usr.bin/perl/cpan/Params-Check/lib/Params/Check.pm
index c1365a9abe1..536a7c08a8d 100644
--- a/gnu/usr.bin/perl/cpan/Params-Check/lib/Params/Check.pm
+++ b/gnu/usr.bin/perl/cpan/Params-Check/lib/Params/Check.pm
@@ -16,7 +16,7 @@ BEGIN {
@ISA = qw[ Exporter ];
@EXPORT_OK = qw[check allow last_error];
- $VERSION = '0.32';
+ $VERSION = '0.36';
$VERBOSE = $^W ? 1 : 0;
$NO_DUPLICATES = 0;
$STRIP_LEADING_DASHES = 0;
@@ -265,16 +265,73 @@ sub check {
#}
### clean up the template ###
- my $args = _clean_up_args( $href ) or return;
+ my $args;
+
+ ### don't even bother to loop, if there's nothing to clean up ###
+ if( $PRESERVE_CASE and !$STRIP_LEADING_DASHES ) {
+ $args = $href;
+ } else {
+ ### keys are not aliased ###
+ for my $key (keys %$href) {
+ my $org = $key;
+ $key = lc $key unless $PRESERVE_CASE;
+ $key =~ s/^-// if $STRIP_LEADING_DASHES;
+ $args->{$key} = $href->{$org};
+ }
+ }
+
+ my %defs;
+
+ ### which template entries have a 'store' member
+ my @want_store;
### sanity check + defaults + required keys set? ###
- my $defs = _sanity_check_and_defaults( $utmpl, $args, $verbose )
- or return;
+ my $fail;
+ for my $key (keys %$utmpl) {
+ my $tmpl = $utmpl->{$key};
+
+ ### check if required keys are provided
+ ### keys are now lower cased, unless preserve case was enabled
+ ### at which point, the utmpl keys must match, but that's the users
+ ### problem.
+ if( $tmpl->{'required'} and not exists $args->{$key} ) {
+ _store_error(
+ loc(q|Required option '%1' is not provided for %2 by %3|,
+ $key, _who_was_it(), _who_was_it(1)), $verbose );
+
+ ### mark the error ###
+ $fail++;
+ next;
+ }
+
+ ### next, set the default, make sure the key exists in %defs ###
+ $defs{$key} = $tmpl->{'default'}
+ if exists $tmpl->{'default'};
+
+ if( $SANITY_CHECK_TEMPLATE ) {
+ ### last, check if they provided any weird template keys
+ ### -- do this last so we don't always execute this code.
+ ### just a small optimization.
+ map { _store_error(
+ loc(q|Template type '%1' not supported [at key '%2']|,
+ $_, $key), 1, 0 );
+ } grep {
+ not $known_keys{$_}
+ } keys %$tmpl;
- ### deref only once ###
- my %utmpl = %$utmpl;
- my %args = %$args;
- my %defs = %$defs;
+ ### make sure you passed a ref, otherwise, complain about it!
+ if ( exists $tmpl->{'store'} ) {
+ _store_error( loc(
+ q|Store variable for '%1' is not a reference!|, $key
+ ), 1, 0 ) unless ref $tmpl->{'store'};
+ }
+ }
+
+ push @want_store, $key if $tmpl->{'store'};
+ }
+
+ ### errors found ###
+ return if $fail;
### flag to see if anything went wrong ###
my $wrong;
@@ -282,14 +339,15 @@ sub check {
### flag to see if we warned for anything, needed for warnings_fatal
my $warned;
- for my $key (keys %args) {
+ for my $key (keys %$args) {
+ my $arg = $args->{$key};
### you gave us this key, but it's not in the template ###
- unless( $utmpl{$key} ) {
+ unless( $utmpl->{$key} ) {
### but we'll allow it anyway ###
if( $ALLOW_UNKNOWN ) {
- $defs{$key} = $args{$key};
+ $defs{$key} = $arg;
### warn about the error ###
} else {
@@ -301,8 +359,11 @@ sub check {
next;
}
+ ### copy of this keys template instructions, to save derefs ###
+ my %tmpl = %{$utmpl->{$key}};
+
### check if you're even allowed to override this key ###
- if( $utmpl{$key}->{'no_override'} ) {
+ if( $tmpl{'no_override'} ) {
_store_error(
loc(q[You are not allowed to override key '%1'].
q[for %2 from %3], $key, _who_was_it(), _who_was_it(1)),
@@ -312,13 +373,8 @@ sub check {
next;
}
- ### copy of this keys template instructions, to save derefs ###
- my %tmpl = %{$utmpl{$key}};
-
### check if you were supposed to provide defined() values ###
- if( ($tmpl{'defined'} || $ONLY_ALLOW_DEFINED) and
- not defined $args{$key}
- ) {
+ if( ($tmpl{'defined'} || $ONLY_ALLOW_DEFINED) and not defined $arg ) {
_store_error(loc(q|Key '%1' must be defined when passed|, $key),
$verbose );
$wrong ||= 1;
@@ -327,7 +383,7 @@ sub check {
### check if they should be of a strict type, and if it is ###
if( ($tmpl{'strict_type'} || $STRICT_TYPE) and
- (ref $args{$key} ne ref $tmpl{'default'})
+ (ref $arg ne ref $tmpl{'default'})
) {
_store_error(loc(q|Key '%1' needs to be of type '%2'|,
$key, ref $tmpl{'default'} || 'SCALAR'), $verbose );
@@ -339,21 +395,21 @@ sub check {
### allow() will report its own errors ###
if( exists $tmpl{'allow'} and not do {
local $_ERROR_STRING;
- allow( $args{$key}, $tmpl{'allow'} )
+ allow( $arg, $tmpl{'allow'} )
}
) {
### stringify the value in the error report -- we don't want dumps
### of objects, but we do want to see *roughly* what we passed
_store_error(loc(q|Key '%1' (%2) is of invalid type for '%3' |.
q|provided by %4|,
- $key, "$args{$key}", _who_was_it(),
+ $key, "$arg", _who_was_it(),
_who_was_it(1)), $verbose);
$wrong ||= 1;
next;
}
### we got here, then all must be OK ###
- $defs{$key} = $args{$key};
+ $defs{$key} = $arg;
}
@@ -368,10 +424,10 @@ sub check {
### check if we need to store any of the keys ###
### can't do it before, because something may go wrong later,
### leaving the user with a few set variables
- for my $key (keys %defs) {
- if( my $ref = $utmpl{$key}->{'store'} ) {
- $$ref = $NO_DUPLICATES ? delete $defs{$key} : $defs{$key};
- }
+ for my $key (@want_store) {
+ next unless exists $defs{$key};
+ my $ref = $utmpl->{$key}{'store'};
+ $$ref = $NO_DUPLICATES ? delete $defs{$key} : $defs{$key};
}
return \%defs;
@@ -455,80 +511,6 @@ sub allow {
### helper functions ###
-### clean up the template ###
-sub _clean_up_args {
- ### don't even bother to loop, if there's nothing to clean up ###
- return $_[0] if $PRESERVE_CASE and !$STRIP_LEADING_DASHES;
-
- my %args = %{$_[0]};
-
- ### keys are note aliased ###
- for my $key (keys %args) {
- my $org = $key;
- $key = lc $key unless $PRESERVE_CASE;
- $key =~ s/^-// if $STRIP_LEADING_DASHES;
- $args{$key} = delete $args{$org} if $key ne $org;
- }
-
- ### return references so we always return 'true', even on empty
- ### arguments
- return \%args;
-}
-
-sub _sanity_check_and_defaults {
- my %utmpl = %{$_[0]};
- my %args = %{$_[1]};
- my $verbose = $_[2];
-
- my %defs; my $fail;
- for my $key (keys %utmpl) {
-
- ### check if required keys are provided
- ### keys are now lower cased, unless preserve case was enabled
- ### at which point, the utmpl keys must match, but that's the users
- ### problem.
- if( $utmpl{$key}->{'required'} and not exists $args{$key} ) {
- _store_error(
- loc(q|Required option '%1' is not provided for %2 by %3|,
- $key, _who_was_it(1), _who_was_it(2)), $verbose );
-
- ### mark the error ###
- $fail++;
- next;
- }
-
- ### next, set the default, make sure the key exists in %defs ###
- $defs{$key} = $utmpl{$key}->{'default'}
- if exists $utmpl{$key}->{'default'};
-
- if( $SANITY_CHECK_TEMPLATE ) {
- ### last, check if they provided any weird template keys
- ### -- do this last so we don't always execute this code.
- ### just a small optimization.
- map { _store_error(
- loc(q|Template type '%1' not supported [at key '%2']|,
- $_, $key), 1, 1 );
- } grep {
- not $known_keys{$_}
- } keys %{$utmpl{$key}};
-
- ### make sure you passed a ref, otherwise, complain about it!
- if ( exists $utmpl{$key}->{'store'} ) {
- _store_error( loc(
- q|Store variable for '%1' is not a reference!|, $key
- ), 1, 1 ) unless ref $utmpl{$key}->{'store'};
- }
- }
- }
-
- ### errors found ###
- return if $fail;
-
- ### return references so we always return 'true', even on empty
- ### defaults
- return \%defs;
-}
-
sub _safe_eq {
### only do a straight 'eq' if they're both defined ###
return defined($_[0]) && defined($_[1])
diff --git a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/Changes b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/Changes
index d9e3df948c4..90f11dbfe29 100644
--- a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/Changes
+++ b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/Changes
@@ -1,5 +1,11 @@
Changes for Perl programming language extension Parse-CPAN-Meta
+1.4404 Sun Apr 05 2012
+ - Protected tests from user PERL_YAML/JSON_BACKEND
+
+1.4403 Sun Apr 01 2012
+ - Bumped prereqs: JSON::PP to 2.27200 and CPAN::Meta::YAML to 0.008
+
1.4402 Tue Feb 07 2012
- Minor maintenance: standardized newlines to Unix style
diff --git a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
index 04ac3e16a1d..4a7d097757b 100644
--- a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
+++ b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
@@ -17,7 +17,7 @@ BEGIN {
# Class structure
require 5.004;
require Exporter;
- $Parse::CPAN::Meta::VERSION = '1.4402';
+ $Parse::CPAN::Meta::VERSION = '1.4404';
@Parse::CPAN::Meta::ISA = qw{ Exporter };
@Parse::CPAN::Meta::EXPORT_OK = qw{ Load LoadFile };
}
diff --git a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/01_compile.t b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/01_compile.t
index 6bfc2c9628b..43563054879 100755
--- a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/01_compile.t
+++ b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/01_compile.t
@@ -1,5 +1,8 @@
#!/usr/bin/perl
+delete $ENV{PERL_YAML_BACKEND};
+delete $ENV{PERL_JSON_BACKEND};
+
BEGIN {
if( $ENV{PERL_CORE} ) {
chdir 't';
diff --git a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/02_api.t b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/02_api.t
index f81239426de..4ffb3d1f8bd 100644
--- a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/02_api.t
+++ b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/02_api.t
@@ -1,5 +1,8 @@
#!/usr/bin/perl
+delete $ENV{PERL_YAML_BACKEND};
+delete $ENV{PERL_JSON_BACKEND};
+
# Testing of a known-bad file from an editor
BEGIN {
diff --git a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/03_functions.t b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/03_functions.t
index 7a637c9383c..a5deff9585a 100644
--- a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/03_functions.t
+++ b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/03_functions.t
@@ -1,5 +1,8 @@
#!/usr/bin/perl
+delete $ENV{PERL_YAML_BACKEND};
+delete $ENV{PERL_JSON_BACKEND};
+
# Testing of basic document structures
BEGIN {
diff --git a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/04_export.t b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/04_export.t
index f82cc91cf69..1a85d4e9aae 100644
--- a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/04_export.t
+++ b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/04_export.t
@@ -1,5 +1,8 @@
#!/usr/bin/perl
+delete $ENV{PERL_YAML_BACKEND};
+delete $ENV{PERL_JSON_BACKEND};
+
# Testing of basic document structures
BEGIN {
diff --git a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/05_errors.t b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/05_errors.t
index 4882d290eb8..9217500d697 100644
--- a/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/05_errors.t
+++ b/gnu/usr.bin/perl/cpan/Parse-CPAN-Meta/t/05_errors.t
@@ -1,5 +1,8 @@
#!/usr/bin/perl
+delete $ENV{PERL_YAML_BACKEND};
+delete $ENV{PERL_JSON_BACKEND};
+
# Testing of basic document structures
BEGIN {
diff --git a/gnu/usr.bin/perl/cpan/Perl-OSType/lib/Perl/OSType.pm b/gnu/usr.bin/perl/cpan/Perl-OSType/lib/Perl/OSType.pm
index 6c2cf127e99..a79426d56c2 100644
--- a/gnu/usr.bin/perl/cpan/Perl-OSType/lib/Perl/OSType.pm
+++ b/gnu/usr.bin/perl/cpan/Perl-OSType/lib/Perl/OSType.pm
@@ -1,18 +1,8 @@
-#
-# This file is part of Perl-OSType
-#
-# This software is copyright (c) 2010 by David Golden.
-#
-# This is free software; you can redistribute it and/or modify it under
-# the same terms as the Perl 5 programming language system itself.
-#
use strict;
use warnings;
package Perl::OSType;
-BEGIN {
- $Perl::OSType::VERSION = '1.002';
-}
# ABSTRACT: Map Perl operating system names to generic types
+our $VERSION = '1.003'; # VERSION
require Exporter;
our @ISA = qw(Exporter);
@@ -71,7 +61,7 @@ my %OSTYPES = qw(
MacOS MacOS
VMS VMS
- VOS VOS
+ vos VOS
riscos RiscOS
amigaos Amiga
mpeix MPEiX
@@ -92,6 +82,7 @@ sub is_os_type {
1;
+__END__
=pod
@@ -101,7 +92,7 @@ Perl::OSType - Map Perl operating system names to generic types
=head1 VERSION
-version 1.002
+version 1.003
=head1 SYNOPSIS
@@ -155,20 +146,48 @@ L<Devel::CheckOS>
=back
+=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+
+=head1 SUPPORT
+
+=head2 Bugs / Feature Requests
+
+Please report any bugs or feature requests through the issue tracker
+at L<https://github.com/dagolden/perl-ostype/issues>.
+You will be notified automatically of any progress on your issue.
+
+=head2 Source Code
+
+This is open source software. The code repository is available for
+public review and contribution under the terms of the license.
+
+L<https://github.com/dagolden/perl-ostype>
+
+ git clone git://github.com/dagolden/perl-ostype.git
+
=head1 AUTHOR
David Golden <dagolden@cpan.org>
-=head1 COPYRIGHT AND LICENSE
+=head1 CONTRIBUTORS
-This software is copyright (c) 2010 by David Golden.
+=over 4
-This is free software; you can redistribute it and/or modify it under
-the same terms as the Perl 5 programming language system itself.
+=item *
-=cut
+Jonas B. Nielsen <jonasbn@hoarfrost.local>
+=item *
-__END__
+Paul Green <Paul.Green@stratus.com>
+=back
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2013 by David Golden.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Perl-OSType/t/OSType.t b/gnu/usr.bin/perl/cpan/Perl-OSType/t/OSType.t
index d471f9c5fe1..46cca768541 100644
--- a/gnu/usr.bin/perl/cpan/Perl-OSType/t/OSType.t
+++ b/gnu/usr.bin/perl/cpan/Perl-OSType/t/OSType.t
@@ -61,7 +61,7 @@ can_ok( $test_pkg, @functions );
is(is_os_type('Unix', NON_EXISTENT_OS), '', "$fcn: non-existent OS is false");
- local $^O = 'VOS';
+ local $^O = 'vos';
ok( ! is_os_type( 'Unix' ), "$fcn: false" );
ok( is_os_type( 'VOS' ), "$fcn: true" );
ok( ! is_os_type(), "$fcn: false if no type provided" );
diff --git a/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm b/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm
index 2434191f091..11ba2e7b4f3 100644
--- a/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm
+++ b/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm
@@ -1,20 +1,21 @@
package PerlIO::via::QuotedPrint;
-# Set the version info
-# Make sure we do things by the book from now on
+$VERSION= '0.07';
-$VERSION = '0.06';
+# be as strict as possible
use strict;
-# Make sure the encoding/decoding stuff is available
-
+# modules that we need
use MIME::QuotedPrint (); # no need to pollute this namespace
-# Satisfy -require-
-
+# satisfy -require-
1;
-#-----------------------------------------------------------------------
+#-------------------------------------------------------------------------------
+#
+# Standard Perl features
+#
+#-------------------------------------------------------------------------------
# IN: 1 class to bless with
# 2 mode string (ignored)
# 3 file handle of PerlIO layer below (ignored)
@@ -22,21 +23,21 @@ use MIME::QuotedPrint (); # no need to pollute this namespace
sub PUSHED { bless \*PUSHED,$_[0] } #PUSHED
-#-----------------------------------------------------------------------
+#-------------------------------------------------------------------------------
# IN: 1 instantiated object (ignored)
# 2 handle to read from
# OUT: 1 decoded string
sub FILL {
-# Read the line from the handle
-# Decode if there is something decode and return result or signal eof
-
- my $line = readline( $_[1] );
- (defined $line) ? MIME::QuotedPrint::decode_qp( $line ) : undef;
+ # decode and return
+ my $line= readline( $_[1] );
+ return ( defined $line )
+ ? MIME::QuotedPrint::decode_qp($line)
+ : undef;
} #FILL
-#-----------------------------------------------------------------------
+#-------------------------------------------------------------------------------
# IN: 1 instantiated object (ignored)
# 2 buffer to be written
# 3 handle to write to
@@ -44,11 +45,14 @@ sub FILL {
sub WRITE {
-# Encode whatever needs to be encoded and write to handle: indicate result
-
- (print {$_[2]} MIME::QuotedPrint::encode_qp($_[1])) ? length($_[1]) : -1;
+ # encode and write to handle: indicate result
+ return ( print { $_[2] } MIME::QuotedPrint::encode_qp( $_[1] ) )
+ ? length( $_[1] )
+ : -1;
} #WRITE
+#-------------------------------------------------------------------------------
+
__END__
=head1 NAME
@@ -59,11 +63,15 @@ PerlIO::via::QuotedPrint - PerlIO layer for quoted-printable strings
use PerlIO::via::QuotedPrint;
- open( my $in,'<:via(QuotedPrint)','file.qp' )
- or die "Can't open file.qp for reading: $!\n";
+ open( my $in, '<:via(QuotedPrint)', 'file.qp' )
+ or die "Can't open file.qp for reading: $!\n";
- open( my $out,'>:via(QuotedPrint)','file.qp' )
- or die "Can't open file.qp for writing: $!\n";
+ open( my $out, '>:via(QuotedPrint)', 'file.qp' )
+ or die "Can't open file.qp for writing: $!\n";
+
+=head1 VERSION
+
+This documentation describes version 0.07.
=head1 DESCRIPTION
@@ -87,8 +95,8 @@ Based on example that was initially added to MIME::QuotedPrint.pm for the
=head1 COPYRIGHT
-Copyright (c) 2002-2003 Elizabeth Mattijsen. All rights reserved. This
-library is free software; you can redistribute it and/or modify it under
+Copyright (c) 2002, 2003, 2004, 2012 Elizabeth Mattijsen. All rights reserved.
+This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
=cut
diff --git a/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t b/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t
index 69eb625f170..33366bd5657 100755
--- a/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t
+++ b/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t
@@ -3,11 +3,6 @@ BEGIN { # Magic Perl CORE pragma
print "1..0 # Skip: PerlIO not used\n";
exit 0;
}
- require Config;
- if (($Config::Config{'extensions'} !~ m!\bPerlIO/via\b!) ){
- print "1..0 # Skip -- Perl configured without PerlIO::via module\n";
- exit 0;
- }
if (ord("A") == 193) {
print "1..0 # Skip: EBCDIC\n";
}
@@ -26,21 +21,11 @@ This is a tést for quoted-printable text that has hàrdly any speçial characters
in it.
EOD
-my $encoded;
-
-if (ord('A') == 193) { # EBCDIC.
- $encoded = <<EOD;
-This is a t=51st for quoted-printable text that has h=44rdly any spe=48ial =
-characters
-in it.
-EOD
-} else {
- $encoded = <<EOD;
+my $encoded = <<EOD;
This is a t=E9st for quoted-printable text that has h=E0rdly any spe=E7ial =
characters
in it.
EOD
-}
# Create the encoded test-file
@@ -73,3 +58,4 @@ ok( close( $in ), 'close decoding handle' );
# Remove whatever we created now
ok( unlink( $file ), "remove test file '$file'" );
+1 while unlink $file; # multiversioned filesystems
diff --git a/gnu/usr.bin/perl/cpan/Pod-Checker/lib/Pod/Checker.pm b/gnu/usr.bin/perl/cpan/Pod-Checker/lib/Pod/Checker.pm
new file mode 100644
index 00000000000..ba47e6fa718
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Checker/lib/Pod/Checker.pm
@@ -0,0 +1,1330 @@
+#############################################################################
+# Pod/Checker.pm -- check pod documents for syntax errors
+#
+# Copyright (C) 1994-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::Checker;
+use strict;
+
+use vars qw($VERSION @ISA @EXPORT %VALID_COMMANDS %VALID_SEQUENCES);
+$VERSION = '1.60'; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+use Pod::ParseUtils; ## for hyperlinks and lists
+
+=head1 NAME
+
+Pod::Checker, podchecker() - check pod documents for syntax errors
+
+=head1 SYNOPSIS
+
+ use Pod::Checker;
+
+ $num_errors = podchecker($filepath, $outputpath, %options);
+
+ my $checker = new Pod::Checker %options;
+ $checker->parse_from_file($filepath, \*STDERR);
+
+=head1 OPTIONS/ARGUMENTS
+
+C<$filepath> is the input POD to read and C<$outputpath> is
+where to write POD syntax error messages. Either argument may be a scalar
+indicating a file-path, or else a reference to an open filehandle.
+If unspecified, the input-file it defaults to C<\*STDIN>, and
+the output-file defaults to C<\*STDERR>.
+
+=head2 podchecker()
+
+This function can take a hash of options:
+
+=over 4
+
+=item B<-warnings> =E<gt> I<val>
+
+Turn warnings on/off. I<val> is usually 1 for on, but higher values
+trigger additional warnings. See L<"Warnings">.
+
+=back
+
+=head1 DESCRIPTION
+
+B<podchecker> will perform syntax checking of Perl5 POD format documentation.
+
+Curious/ambitious users are welcome to propose additional features they wish
+to see in B<Pod::Checker> and B<podchecker> and verify that the checks are
+consistent with L<perlpod>.
+
+The following checks are currently performed:
+
+=over 4
+
+=item *
+
+Unknown '=xxxx' commands, unknown 'XE<lt>...E<gt>' interior-sequences,
+and unterminated interior sequences.
+
+=item *
+
+Check for proper balancing of C<=begin> and C<=end>. The contents of such
+a block are generally ignored, i.e. no syntax checks are performed.
+
+=item *
+
+Check for proper nesting and balancing of C<=over>, C<=item> and C<=back>.
+
+=item *
+
+Check for same nested interior-sequences (e.g.
+C<LE<lt>...LE<lt>...E<gt>...E<gt>>).
+
+=item *
+
+Check for malformed or non-existing entities C<EE<lt>...E<gt>>.
+
+=item *
+
+Check for correct syntax of hyperlinks C<LE<lt>...E<gt>>. See L<perlpod>
+for details.
+
+=item *
+
+Check for unresolved document-internal links. This check may also reveal
+misspelled links that seem to be internal links but should be links
+to something else.
+
+=back
+
+=head1 DIAGNOSTICS
+
+=head2 Errors
+
+=over 4
+
+=item * empty =headn
+
+A heading (C<=head1> or C<=head2>) without any text? That ain't no
+heading!
+
+=item * =over on line I<N> without closing =back
+
+The C<=over> command does not have a corresponding C<=back> before the
+next heading (C<=head1> or C<=head2>) or the end of the file.
+
+=item * =item without previous =over
+
+=item * =back without previous =over
+
+An C<=item> or C<=back> command has been found outside a
+C<=over>/C<=back> block.
+
+=item * No argument for =begin
+
+A C<=begin> command was found that is not followed by the formatter
+specification.
+
+=item * =end without =begin
+
+A standalone C<=end> command was found.
+
+=item * Nested =begin's
+
+There were at least two consecutive C<=begin> commands without
+the corresponding C<=end>. Only one C<=begin> may be active at
+a time.
+
+=item * =for without formatter specification
+
+There is no specification of the formatter after the C<=for> command.
+
+=item * Apparent command =foo not preceded by blank line
+
+A command which has ended up in the middle of a paragraph or other command,
+such as
+
+ =item one
+ =item two <-- bad
+
+=item * unresolved internal link I<NAME>
+
+The given link to I<NAME> does not have a matching node in the current
+POD. This also happened when a single word node name is not enclosed in
+C<"">.
+
+=item * Unknown command "I<CMD>"
+
+An invalid POD command has been found. Valid are C<=head1>, C<=head2>,
+C<=head3>, C<=head4>, C<=over>, C<=item>, C<=back>, C<=begin>, C<=end>,
+C<=for>, C<=pod>, C<=cut>
+
+=item * Unknown interior-sequence "I<SEQ>"
+
+An invalid markup command has been encountered. Valid are:
+C<BE<lt>E<gt>>, C<CE<lt>E<gt>>, C<EE<lt>E<gt>>, C<FE<lt>E<gt>>,
+C<IE<lt>E<gt>>, C<LE<lt>E<gt>>, C<SE<lt>E<gt>>, C<XE<lt>E<gt>>,
+C<ZE<lt>E<gt>>
+
+=item * nested commands I<CMD>E<lt>...I<CMD>E<lt>...E<gt>...E<gt>
+
+Two nested identical markup commands have been found. Generally this
+does not make sense.
+
+=item * garbled entity I<STRING>
+
+The I<STRING> found cannot be interpreted as a character entity.
+
+=item * Entity number out of range
+
+An entity specified by number (dec, hex, oct) is out of range (1-255).
+
+=item * malformed link LE<lt>E<gt>
+
+The link found cannot be parsed because it does not conform to the
+syntax described in L<perlpod>.
+
+=item * nonempty ZE<lt>E<gt>
+
+The C<ZE<lt>E<gt>> sequence is supposed to be empty.
+
+=item * empty XE<lt>E<gt>
+
+The index entry specified contains nothing but whitespace.
+
+=item * Spurious text after =pod / =cut
+
+The commands C<=pod> and C<=cut> do not take any arguments.
+
+=item * Spurious =cut command
+
+A C<=cut> command was found without a preceding POD paragraph.
+
+=item * Spurious =pod command
+
+A C<=pod> command was found after a preceding POD paragraph.
+
+=item * Spurious character(s) after =back
+
+The C<=back> command does not take any arguments.
+
+=back
+
+=head2 Warnings
+
+These may not necessarily cause trouble, but indicate mediocre style.
+
+=over 4
+
+=item * multiple occurrence of link target I<name>
+
+The POD file has some C<=item> and/or C<=head> commands that have
+the same text. Potential hyperlinks to such a text cannot be unique then.
+This warning is printed only with warning level greater than one.
+
+=item * line containing nothing but whitespace in paragraph
+
+There is some whitespace on a seemingly empty line. POD is very sensitive
+to such things, so this is flagged. B<vi> users switch on the B<list>
+option to avoid this problem.
+
+=begin _disabled_
+
+=item * file does not start with =head
+
+The file starts with a different POD directive than head.
+This is most probably something you do not want.
+
+=end _disabled_
+
+=item * previous =item has no contents
+
+There is a list C<=item> right above the flagged line that has no
+text contents. You probably want to delete empty items.
+
+=item * preceding non-item paragraph(s)
+
+A list introduced by C<=over> starts with a text or verbatim paragraph,
+but continues with C<=item>s. Move the non-item paragraph out of the
+C<=over>/C<=back> block.
+
+=item * =item type mismatch (I<one> vs. I<two>)
+
+A list started with e.g. a bullet-like C<=item> and continued with a
+numbered one. This is obviously inconsistent. For most translators the
+type of the I<first> C<=item> determines the type of the list.
+
+=item * I<N> unescaped C<E<lt>E<gt>> in paragraph
+
+Angle brackets not written as C<E<lt>ltE<gt>> and C<E<lt>gtE<gt>>
+can potentially cause errors as they could be misinterpreted as
+markup commands. This is only printed when the -warnings level is
+greater than 1.
+
+=item * Unknown entity
+
+A character entity was found that does not belong to the standard
+ISO set or the POD specials C<verbar> and C<sol>.
+
+=item * No items in =over
+
+The list opened with C<=over> does not contain any items.
+
+=item * No argument for =item
+
+C<=item> without any parameters is deprecated. It should either be followed
+by C<*> to indicate an unordered list, by a number (optionally followed
+by a dot) to indicate an ordered (numbered) list or simple text for a
+definition list.
+
+=item * empty section in previous paragraph
+
+The previous section (introduced by a C<=head> command) does not contain
+any text. This usually indicates that something is missing. Note: A
+C<=head1> followed immediately by C<=head2> does not trigger this warning.
+
+=item * Verbatim paragraph in NAME section
+
+The NAME section (C<=head1 NAME>) should consist of a single paragraph
+with the script/module name, followed by a dash `-' and a very short
+description of what the thing is good for.
+
+=item * =headI<n> without preceding higher level
+
+For example if there is a C<=head2> in the POD file prior to a
+C<=head1>.
+
+=back
+
+=head2 Hyperlinks
+
+There are some warnings with respect to malformed hyperlinks:
+
+=over 4
+
+=item * ignoring leading/trailing whitespace in link
+
+There is whitespace at the beginning or the end of the contents of
+LE<lt>...E<gt>.
+
+=item * (section) in '$page' deprecated
+
+There is a section detected in the page name of LE<lt>...E<gt>, e.g.
+C<LE<lt>passwd(2)E<gt>>. POD hyperlinks may point to POD documents only.
+Please write C<CE<lt>passwd(2)E<gt>> instead. Some formatters are able
+to expand this to appropriate code. For links to (builtin) functions,
+please say C<LE<lt>perlfunc/mkdirE<gt>>, without ().
+
+=item * alternative text/node '%s' contains non-escaped | or /
+
+The characters C<|> and C</> are special in the LE<lt>...E<gt> context.
+Although the hyperlink parser does its best to determine which "/" is
+text and which is a delimiter in case of doubt, one ought to escape
+these literal characters like this:
+
+ / E<sol>
+ | E<verbar>
+
+=back
+
+=head1 RETURN VALUE
+
+B<podchecker> returns the number of POD syntax errors found or -1 if
+there were no POD commands at all found in the file.
+
+=head1 EXAMPLES
+
+See L</SYNOPSIS>
+
+=head1 INTERFACE
+
+While checking, this module collects document properties, e.g. the nodes
+for hyperlinks (C<=headX>, C<=item>) and index entries (C<XE<lt>E<gt>>).
+POD translators can use this feature to syntax-check and get the nodes in
+a first pass before actually starting to convert. This is expensive in terms
+of execution time, but allows for very robust conversions.
+
+Since PodParser-1.24 the B<Pod::Checker> module uses only the B<poderror>
+method to print errors and warnings. The summary output (e.g.
+"Pod syntax OK") has been dropped from the module and has been included in
+B<podchecker> (the script). This allows users of B<Pod::Checker> to
+control completely the output behavior. Users of B<podchecker> (the script)
+get the well-known behavior.
+
+=cut
+
+#############################################################################
+
+#use diagnostics;
+use Carp qw(croak);
+use Exporter;
+use Pod::Parser;
+
+@ISA = qw(Pod::Parser);
+@EXPORT = qw(&podchecker);
+
+my %VALID_COMMANDS = (
+ 'pod' => 1,
+ 'cut' => 1,
+ 'head1' => 1,
+ 'head2' => 1,
+ 'head3' => 1,
+ 'head4' => 1,
+ 'over' => 1,
+ 'back' => 1,
+ 'item' => 1,
+ 'for' => 1,
+ 'begin' => 1,
+ 'end' => 1,
+ 'encoding' => 1,
+);
+
+my %VALID_SEQUENCES = (
+ 'I' => 1,
+ 'B' => 1,
+ 'S' => 1,
+ 'C' => 1,
+ 'L' => 1,
+ 'F' => 1,
+ 'X' => 1,
+ 'Z' => 1,
+ 'E' => 1,
+);
+
+# stolen from HTML::Entities
+my %ENTITIES = (
+ # Some normal chars that have special meaning in SGML context
+ amp => '&', # ampersand
+'gt' => '>', # greater than
+'lt' => '<', # less than
+ quot => '"', # double quote
+
+ # PUBLIC ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML
+ AElig => 'Æ', # capital AE diphthong (ligature)
+ Aacute => 'Á', # capital A, acute accent
+ Acirc => 'Â', # capital A, circumflex accent
+ Agrave => 'À', # capital A, grave accent
+ Aring => 'Å', # capital A, ring
+ Atilde => 'Ã', # capital A, tilde
+ Auml => 'Ä', # capital A, dieresis or umlaut mark
+ Ccedil => 'Ç', # capital C, cedilla
+ ETH => 'Ð', # capital Eth, Icelandic
+ Eacute => 'É', # capital E, acute accent
+ Ecirc => 'Ê', # capital E, circumflex accent
+ Egrave => 'È', # capital E, grave accent
+ Euml => 'Ë', # capital E, dieresis or umlaut mark
+ Iacute => 'Í', # capital I, acute accent
+ Icirc => 'Î', # capital I, circumflex accent
+ Igrave => 'Ì', # capital I, grave accent
+ Iuml => 'Ï', # capital I, dieresis or umlaut mark
+ Ntilde => 'Ñ', # capital N, tilde
+ Oacute => 'Ó', # capital O, acute accent
+ Ocirc => 'Ô', # capital O, circumflex accent
+ Ograve => 'Ò', # capital O, grave accent
+ Oslash => 'Ø', # capital O, slash
+ Otilde => 'Õ', # capital O, tilde
+ Ouml => 'Ö', # capital O, dieresis or umlaut mark
+ THORN => 'Þ', # capital THORN, Icelandic
+ Uacute => 'Ú', # capital U, acute accent
+ Ucirc => 'Û', # capital U, circumflex accent
+ Ugrave => 'Ù', # capital U, grave accent
+ Uuml => 'Ü', # capital U, dieresis or umlaut mark
+ Yacute => 'Ý', # capital Y, acute accent
+ aacute => 'á', # small a, acute accent
+ acirc => 'â', # small a, circumflex accent
+ aelig => 'æ', # small ae diphthong (ligature)
+ agrave => 'à', # small a, grave accent
+ aring => 'å', # small a, ring
+ atilde => 'ã', # small a, tilde
+ auml => 'ä', # small a, dieresis or umlaut mark
+ ccedil => 'ç', # small c, cedilla
+ eacute => 'é', # small e, acute accent
+ ecirc => 'ê', # small e, circumflex accent
+ egrave => 'è', # small e, grave accent
+ eth => 'ð', # small eth, Icelandic
+ euml => 'ë', # small e, dieresis or umlaut mark
+ iacute => 'í', # small i, acute accent
+ icirc => 'î', # small i, circumflex accent
+ igrave => 'ì', # small i, grave accent
+ iuml => 'ï', # small i, dieresis or umlaut mark
+ ntilde => 'ñ', # small n, tilde
+ oacute => 'ó', # small o, acute accent
+ ocirc => 'ô', # small o, circumflex accent
+ ograve => 'ò', # small o, grave accent
+ oslash => 'ø', # small o, slash
+ otilde => 'õ', # small o, tilde
+ ouml => 'ö', # small o, dieresis or umlaut mark
+ szlig => 'ß', # small sharp s, German (sz ligature)
+ thorn => 'þ', # small thorn, Icelandic
+ uacute => 'ú', # small u, acute accent
+ ucirc => 'û', # small u, circumflex accent
+ ugrave => 'ù', # small u, grave accent
+ uuml => 'ü', # small u, dieresis or umlaut mark
+ yacute => 'ý', # small y, acute accent
+ yuml => 'ÿ', # small y, dieresis or umlaut mark
+
+ # Some extra Latin 1 chars that are listed in the HTML3.2 draft (21-May-96)
+ copy => '©', # copyright sign
+ reg => '®', # registered sign
+ nbsp => "\240", # non breaking space
+
+ # Additional ISO-8859/1 entities listed in rfc1866 (section 14)
+ iexcl => '¡',
+ cent => '¢',
+ pound => '£',
+ curren => '¤',
+ yen => '¥',
+ brvbar => '¦',
+ sect => '§',
+ uml => '¨',
+ ordf => 'ª',
+ laquo => '«',
+'not' => '¬', # not is a keyword in perl
+ shy => '­',
+ macr => '¯',
+ deg => '°',
+ plusmn => '±',
+ sup1 => '¹',
+ sup2 => '²',
+ sup3 => '³',
+ acute => '´',
+ micro => 'µ',
+ para => '¶',
+ middot => '·',
+ cedil => '¸',
+ ordm => 'º',
+ raquo => '»',
+ frac14 => '¼',
+ frac12 => '½',
+ frac34 => '¾',
+ iquest => '¿',
+'times' => '×', # times is a keyword in perl
+ divide => '÷',
+
+# some POD special entities
+ verbar => '|',
+ sol => '/'
+);
+
+##---------------------------------------------------------------------------
+
+##---------------------------------
+## Function definitions begin here
+##---------------------------------
+
+sub podchecker {
+ my ($infile, $outfile, %options) = @_;
+ local $_;
+
+ ## Set defaults
+ $infile ||= \*STDIN;
+ $outfile ||= \*STDERR;
+
+ ## Now create a pod checker
+ my $checker = new Pod::Checker(%options);
+
+ ## Now check the pod document for errors
+ $checker->parse_from_file($infile, $outfile);
+
+ ## Return the number of errors found
+ return $checker->num_errors();
+}
+
+##---------------------------------------------------------------------------
+
+##-------------------------------
+## Method definitions begin here
+##-------------------------------
+
+##################################
+
+=over 4
+
+=item C<Pod::Checker-E<gt>new( %options )>
+
+Return a reference to a new Pod::Checker object that inherits from
+Pod::Parser and is used for calling the required methods later. The
+following options are recognized:
+
+C<-warnings =E<gt> num>
+ Print warnings if C<num> is true. The higher the value of C<num>,
+the more warnings are printed. Currently there are only levels 1 and 2.
+
+C<-quiet =E<gt> num>
+ If C<num> is true, do not print any errors/warnings. This is useful
+when Pod::Checker is used to munge POD code into plain text from within
+POD formatters.
+
+=cut
+
+## sub new {
+## my $this = shift;
+## my $class = ref($this) || $this;
+## my %params = @_;
+## my $self = {%params};
+## bless $self, $class;
+## $self->initialize();
+## return $self;
+## }
+
+sub initialize {
+ my $self = shift;
+ ## Initialize number of errors, and setup an error function to
+ ## increment this number and then print to the designated output.
+ $self->{_NUM_ERRORS} = 0;
+ $self->{_NUM_WARNINGS} = 0;
+ $self->{-quiet} ||= 0;
+ # set the error handling subroutine
+ $self->errorsub($self->{-quiet} ? sub { 1; } : 'poderror');
+ $self->{_commands} = 0; # total number of POD commands encountered
+ $self->{_list_stack} = []; # stack for nested lists
+ $self->{_have_begin} = ''; # stores =begin
+ $self->{_links} = []; # stack for internal hyperlinks
+ $self->{_nodes} = []; # stack for =head/=item nodes
+ $self->{_index} = []; # text in X<>
+ # print warnings?
+ $self->{-warnings} = 1 unless(defined $self->{-warnings});
+ $self->{_current_head1} = ''; # the current =head1 block
+ $self->parseopts(-process_cut_cmd => 1, -warnings => $self->{-warnings});
+}
+
+##################################
+
+=item C<$checker-E<gt>poderror( @args )>
+
+=item C<$checker-E<gt>poderror( {%opts}, @args )>
+
+Internal method for printing errors and warnings. If no options are
+given, simply prints "@_". The following options are recognized and used
+to form the output:
+
+ -msg
+
+A message to print prior to C<@args>.
+
+ -line
+
+The line number the error occurred in.
+
+ -file
+
+The file (name) the error occurred in.
+
+ -severity
+
+The error level, should be 'WARNING' or 'ERROR'.
+
+=cut
+
+# Invoked as $self->poderror( @args ), or $self->poderror( {%opts}, @args )
+sub poderror {
+ my $self = shift;
+ my %opts = (ref $_[0]) ? %{shift()} : ();
+
+ ## Retrieve options
+ chomp( my $msg = ($opts{-msg} || '')."@_" );
+ my $line = (exists $opts{-line}) ? " at line $opts{-line}" : '';
+ my $file = (exists $opts{-file}) ? " in file $opts{-file}" : '';
+ unless (exists $opts{-severity}) {
+ ## See if can find severity in message prefix
+ $opts{-severity} = $1 if ( $msg =~ s/^\**\s*([A-Z]{3,}):\s+// );
+ }
+ my $severity = (exists $opts{-severity}) ? "*** $opts{-severity}: " : '';
+
+ ## Increment error count and print message "
+ ++($self->{_NUM_ERRORS})
+ if(!%opts || ($opts{-severity} && $opts{-severity} eq 'ERROR'));
+ ++($self->{_NUM_WARNINGS})
+ if(!%opts || ($opts{-severity} && $opts{-severity} eq 'WARNING'));
+ unless($self->{-quiet}) {
+ my $out_fh = $self->output_handle() || \*STDERR;
+ print $out_fh ($severity, $msg, $line, $file, "\n")
+ if($self->{-warnings} || !%opts || $opts{-severity} ne 'WARNING');
+ }
+}
+
+##################################
+
+=item C<$checker-E<gt>num_errors()>
+
+Set (if argument specified) and retrieve the number of errors found.
+
+=cut
+
+sub num_errors {
+ return (@_ > 1) ? ($_[0]->{_NUM_ERRORS} = $_[1]) : $_[0]->{_NUM_ERRORS};
+}
+
+##################################
+
+=item C<$checker-E<gt>num_warnings()>
+
+Set (if argument specified) and retrieve the number of warnings found.
+
+=cut
+
+sub num_warnings {
+ return (@_ > 1) ? ($_[0]->{_NUM_WARNINGS} = $_[1]) : $_[0]->{_NUM_WARNINGS};
+}
+
+##################################
+
+=item C<$checker-E<gt>name()>
+
+Set (if argument specified) and retrieve the canonical name of POD as
+found in the C<=head1 NAME> section.
+
+=cut
+
+sub name {
+ return (@_ > 1 && $_[1]) ?
+ ($_[0]->{-name} = $_[1]) : $_[0]->{-name};
+}
+
+##################################
+
+=item C<$checker-E<gt>node()>
+
+Add (if argument specified) and retrieve the nodes (as defined by C<=headX>
+and C<=item>) of the current POD. The nodes are returned in the order of
+their occurrence. They consist of plain text, each piece of whitespace is
+collapsed to a single blank.
+
+=cut
+
+sub node {
+ my ($self,$text) = @_;
+ if(defined $text) {
+ $text =~ s/\s+$//s; # strip trailing whitespace
+ $text =~ s/\s+/ /gs; # collapse whitespace
+ # add node, order important!
+ push(@{$self->{_nodes}}, $text);
+ # keep also a uniqueness counter
+ $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s);
+ return $text;
+ }
+ @{$self->{_nodes}};
+}
+
+##################################
+
+=item C<$checker-E<gt>idx()>
+
+Add (if argument specified) and retrieve the index entries (as defined by
+C<XE<lt>E<gt>>) of the current POD. They consist of plain text, each piece
+of whitespace is collapsed to a single blank.
+
+=cut
+
+# set/return index entries of current POD
+sub idx {
+ my ($self,$text) = @_;
+ if(defined $text) {
+ $text =~ s/\s+$//s; # strip trailing whitespace
+ $text =~ s/\s+/ /gs; # collapse whitespace
+ # add node, order important!
+ push(@{$self->{_index}}, $text);
+ # keep also a uniqueness counter
+ $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s);
+ return $text;
+ }
+ @{$self->{_index}};
+}
+
+##################################
+
+=item C<$checker-E<gt>hyperlink()>
+
+Add (if argument specified) and retrieve the hyperlinks (as defined by
+C<LE<lt>E<gt>>) of the current POD. They consist of a 2-item array: line
+number and C<Pod::Hyperlink> object.
+
+=back
+
+=cut
+
+# set/return hyperlinks of the current POD
+sub hyperlink {
+ my $self = shift;
+ if($_[0]) {
+ push(@{$self->{_links}}, $_[0]);
+ return $_[0];
+ }
+ @{$self->{_links}};
+}
+
+## overrides for Pod::Parser
+
+sub end_pod {
+ ## Do some final checks and
+ ## print the number of errors found
+ my $self = shift;
+ my $infile = $self->input_file();
+
+ if(@{$self->{_list_stack}}) {
+ my $list;
+ while(($list = $self->_close_list('EOF',$infile)) &&
+ $list->indent() ne 'auto') {
+ $self->poderror({ -line => 'EOF', -file => $infile,
+ -severity => 'ERROR', -msg => '=over on line ' .
+ $list->start() . ' without closing =back' });
+ }
+ }
+
+ # check validity of document internal hyperlinks
+ # first build the node names from the paragraph text
+ my %nodes;
+ foreach($self->node()) {
+ $nodes{$_} = 1;
+ if(/^(\S+)\s+\S/) {
+ # we have more than one word. Use the first as a node, too.
+ # This is used heavily in perlfunc.pod
+ $nodes{$1} ||= 2; # derived node
+ }
+ }
+ foreach($self->idx()) {
+ $nodes{$_} = 3; # index node
+ }
+ foreach($self->hyperlink()) {
+ my ($line,$link) = @$_;
+ # _TODO_ what if there is a link to the page itself by the name,
+ # e.g. in Tk::Pod : L<Tk::Pod/"DESCRIPTION">
+ if($link->node() && !$link->page() && $link->type() ne 'hyperlink') {
+ my $node = $self->_check_ptree($self->parse_text($link->node(),
+ $line), $line, $infile, 'L');
+ if($node && !$nodes{$node}) {
+ $self->poderror({ -line => $line || '', -file => $infile,
+ -severity => 'ERROR',
+ -msg => "unresolved internal link '$node'"});
+ }
+ }
+ }
+
+ # check the internal nodes for uniqueness. This pertains to
+ # =headX, =item and X<...>
+ if($self->{-warnings} && $self->{-warnings}>1) {
+ foreach(grep($self->{_unique_nodes}->{$_} > 1,
+ keys %{$self->{_unique_nodes}})) {
+ $self->poderror({ -line => '-', -file => $infile,
+ -severity => 'WARNING',
+ -msg => "multiple occurrence of link target '$_'"});
+ }
+ }
+
+ # no POD found here
+ $self->num_errors(-1) if($self->{_commands} == 0);
+}
+
+# check a POD command directive
+sub command {
+ my ($self, $cmd, $paragraph, $line_num, $pod_para) = @_;
+ my ($file, $line) = $pod_para->file_line;
+ ## Check the command syntax
+ my $arg; # this will hold the command argument
+ if (! $VALID_COMMANDS{$cmd}) {
+ $self->poderror({ -line => $line, -file => $file, -severity => 'ERROR',
+ -msg => "Unknown command '$cmd'" });
+ }
+ else { # found a valid command
+ $self->{_commands}++; # delete this line if below is enabled again
+
+ $self->_commands_in_paragraphs($paragraph, $pod_para);
+
+ ##### following check disabled due to strong request
+ #if(!$self->{_commands}++ && $cmd !~ /^head/) {
+ # $self->poderror({ -line => $line, -file => $file,
+ # -severity => 'WARNING',
+ # -msg => "file does not start with =head" });
+ #}
+
+ # check syntax of particular command
+ if($cmd eq 'over') {
+ # check for argument
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ my $indent = 4; # default
+ if($arg && $arg =~ /^\s*(\d+)\s*$/) {
+ $indent = $1;
+ }
+ # start a new list
+ $self->_open_list($indent,$line,$file);
+ }
+ elsif($cmd eq 'item') {
+ # are we in a list?
+ unless(@{$self->{_list_stack}}) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => '=item without previous =over' });
+ # auto-open in case we encounter many more
+ $self->_open_list('auto',$line,$file);
+ }
+ my $list = $self->{_list_stack}->[0];
+ # check whether the previous item had some contents
+ if(defined $self->{_list_item_contents} &&
+ $self->{_list_item_contents} == 0) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => 'previous =item has no contents' });
+ }
+ if($list->{_has_par}) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => 'preceding non-item paragraph(s)' });
+ delete $list->{_has_par};
+ }
+ # check for argument
+ $arg = $self->interpolate_and_check($paragraph, $line, $file);
+ if($arg && $arg =~ /(\S+)/) {
+ $arg =~ s/[\s\n]+$//;
+ my $type;
+ if($arg =~ /^[*]\s*(\S*.*)/) {
+ $type = 'bullet';
+ $self->{_list_item_contents} = $1 ? 1 : 0;
+ $arg = $1;
+ }
+ elsif($arg =~ /^\d+\.?\s+(\S*)/) {
+ $type = 'number';
+ $self->{_list_item_contents} = $1 ? 1 : 0;
+ $arg = $1;
+ }
+ else {
+ $type = 'definition';
+ $self->{_list_item_contents} = 1;
+ }
+ my $first = $list->type();
+ if($first && $first ne $type) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "=item type mismatch ('$first' vs. '$type')"});
+ }
+ else { # first item
+ $list->type($type);
+ }
+ }
+ else {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => 'No argument for =item' });
+ $arg = ' '; # empty
+ $self->{_list_item_contents} = 0;
+ }
+ # add this item
+ $list->item($arg);
+ # remember this node
+ $self->node($arg);
+ }
+ elsif($cmd eq 'back') {
+ # check if we have an open list
+ unless(@{$self->{_list_stack}}) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => '=back without previous =over' });
+ }
+ else {
+ # check for spurious characters
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ if($arg && $arg =~ /\S/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => 'Spurious character(s) after =back' });
+ }
+ # close list
+ my $list = $self->_close_list($line,$file);
+ # check for empty lists
+ if(!$list->item() && $self->{-warnings}) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => 'No items in =over (at line ' .
+ $list->start() . ') / =back list'});
+ }
+ }
+ }
+ elsif($cmd =~ /^head(\d+)/) {
+ my $hnum = $1;
+ $self->{"_have_head_$hnum"}++; # count head types
+ if($hnum > 1 && !$self->{'_have_head_'.($hnum -1)}) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "=head$hnum without preceding higher level"});
+ }
+ # check whether the previous =head section had some contents
+ if(defined $self->{_commands_in_head} &&
+ $self->{_commands_in_head} == 0 &&
+ defined $self->{_last_head} &&
+ $self->{_last_head} >= $hnum) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => 'empty section in previous paragraph'});
+ }
+ $self->{_commands_in_head} = -1;
+ $self->{_last_head} = $hnum;
+ # check if there is an open list
+ if(@{$self->{_list_stack}}) {
+ my $list;
+ while(($list = $self->_close_list($line,$file)) &&
+ $list->indent() ne 'auto') {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => '=over on line '. $list->start() .
+ " without closing =back (at $cmd)" });
+ }
+ }
+ # remember this node
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ $arg =~ s/[\s\n]+$//s;
+ $self->node($arg);
+ unless(length($arg)) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "empty =$cmd"});
+ }
+ if($cmd eq 'head1') {
+ $self->{_current_head1} = $arg;
+ } else {
+ $self->{_current_head1} = '';
+ }
+ }
+ elsif($cmd eq 'begin') {
+ if($self->{_have_begin}) {
+ # already have a begin
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => q{Nested =begin's (first at line } .
+ $self->{_have_begin} . ')'});
+ }
+ else {
+ # check for argument
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ unless($arg && $arg =~ /(\S+)/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => 'No argument for =begin'});
+ }
+ # remember the =begin
+ $self->{_have_begin} = "$line:$1";
+ }
+ }
+ elsif($cmd eq 'end') {
+ if($self->{_have_begin}) {
+ # close the existing =begin
+ $self->{_have_begin} = '';
+ # check for spurious characters
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ # the closing argument is optional
+ #if($arg && $arg =~ /\S/) {
+ # $self->poderror({ -line => $line, -file => $file,
+ # -severity => 'WARNING',
+ # -msg => "Spurious character(s) after =end" });
+ #}
+ }
+ else {
+ # don't have a matching =begin
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => '=end without =begin' });
+ }
+ }
+ elsif($cmd eq 'for') {
+ unless($paragraph =~ /\s*(\S+)\s*/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => '=for without formatter specification' });
+ }
+ $arg = ''; # do not expand paragraph below
+ }
+ elsif($cmd =~ /^(pod|cut)$/) {
+ # check for argument
+ $arg = $self->interpolate_and_check($paragraph, $line,$file);
+ if($arg && $arg =~ /(\S+)/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "Spurious text after =$cmd"});
+ }
+ if($cmd eq 'cut' && (!$self->{_PREVIOUS} || $self->{_PREVIOUS} eq 'cut')) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "Spurious =cut command"});
+ }
+ if($cmd eq 'pod' && $self->{_PREVIOUS} && $self->{_PREVIOUS} ne 'cut') {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "Spurious =pod command"});
+ }
+ }
+ $self->{_commands_in_head}++;
+ ## Check the interior sequences in the command-text
+ $self->interpolate_and_check($paragraph, $line,$file)
+ unless(defined $arg);
+ }
+}
+
+sub _open_list
+{
+ my ($self,$indent,$line,$file) = @_;
+ my $list = Pod::List->new(
+ -indent => $indent,
+ -start => $line,
+ -file => $file);
+ unshift(@{$self->{_list_stack}}, $list);
+ undef $self->{_list_item_contents};
+ $list;
+}
+
+sub _close_list
+{
+ my ($self,$line,$file) = @_;
+ my $list = shift(@{$self->{_list_stack}});
+ if(defined $self->{_list_item_contents} &&
+ $self->{_list_item_contents} == 0) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => 'previous =item has no contents' });
+ }
+ undef $self->{_list_item_contents};
+ $list;
+}
+
+# process a block of some text
+sub interpolate_and_check {
+ my ($self, $paragraph, $line, $file) = @_;
+ ## Check the interior sequences in the command-text
+ # and return the text
+ $self->_check_ptree(
+ $self->parse_text($paragraph,$line), $line, $file, '');
+}
+
+sub _check_ptree {
+ my ($self,$ptree,$line,$file,$nestlist) = @_;
+ local($_);
+ my $text = '';
+ # process each node in the parse tree
+ foreach(@$ptree) {
+ # regular text chunk
+ unless(ref) {
+ # count the unescaped angle brackets
+ # complain only when warning level is greater than 1
+ if($self->{-warnings} && $self->{-warnings}>1) {
+ my $count;
+ if($count = tr/<>/<>/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "$count unescaped <> in paragraph" });
+ }
+ }
+ $text .= $_;
+ next;
+ }
+ # have an interior sequence
+ my $cmd = $_->cmd_name();
+ my $contents = $_->parse_tree();
+ ($file,$line) = $_->file_line();
+ # check for valid tag
+ if (! $VALID_SEQUENCES{$cmd}) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => qq(Unknown interior-sequence '$cmd')});
+ # expand it anyway
+ $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
+ next;
+ }
+ if(index($nestlist, $cmd) != -1) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => "nested commands $cmd<...$cmd<...>...>"});
+ # _TODO_ should we add the contents anyway?
+ # expand it anyway, see below
+ }
+ if($cmd eq 'E') {
+ # preserve entities
+ if(@$contents > 1 || ref $$contents[0] || $$contents[0] !~ /^\w+$/) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => 'garbled entity ' . $_->raw_text()});
+ next;
+ }
+ my $ent = $$contents[0];
+ my $val;
+ if($ent =~ /^0x[0-9a-f]+$/i) {
+ # hexadec entity
+ $val = hex($ent);
+ }
+ elsif($ent =~ /^0\d+$/) {
+ # octal
+ $val = oct($ent);
+ }
+ elsif($ent =~ /^\d+$/) {
+ # numeric entity
+ $val = $ent;
+ }
+ if(defined $val) {
+ if($val>0 && $val<256) {
+ $text .= chr($val);
+ }
+ else {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => 'Entity number out of range ' . $_->raw_text()});
+ }
+ }
+ elsif($ENTITIES{$ent}) {
+ # known ISO entity
+ $text .= $ENTITIES{$ent};
+ }
+ else {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => 'Unknown entity ' . $_->raw_text()});
+ $text .= "E<$ent>";
+ }
+ }
+ elsif($cmd eq 'L') {
+ # try to parse the hyperlink
+ my $link = Pod::Hyperlink->new($contents->raw_text());
+ unless(defined $link) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => 'malformed link ' . $_->raw_text() ." : $@"});
+ next;
+ }
+ $link->line($line); # remember line
+ if($self->{-warnings}) {
+ foreach my $w ($link->warning()) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => $w });
+ }
+ }
+ # check the link text
+ $text .= $self->_check_ptree($self->parse_text($link->text(),
+ $line), $line, $file, "$nestlist$cmd");
+ # remember link
+ $self->hyperlink([$line,$link]);
+ }
+ elsif($cmd =~ /[BCFIS]/) {
+ # add the guts
+ $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
+ }
+ elsif($cmd eq 'Z') {
+ if(length($contents->raw_text())) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => 'Nonempty Z<>'});
+ }
+ }
+ elsif($cmd eq 'X') {
+ my $idx = $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
+ if($idx =~ /^\s*$/s) {
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => 'Empty X<>'});
+ }
+ else {
+ # remember this node
+ $self->idx($idx);
+ }
+ }
+ else {
+ # not reached
+ croak 'internal error';
+ }
+ }
+ $text;
+}
+
+# process a block of verbatim text
+sub verbatim {
+ ## Nothing particular to check
+ my ($self, $paragraph, $line_num, $pod_para) = @_;
+
+ $self->_preproc_par($paragraph);
+ $self->_commands_in_paragraphs($paragraph, $pod_para);
+
+ if($self->{_current_head1} eq 'NAME') {
+ my ($file, $line) = $pod_para->file_line;
+ $self->poderror({ -line => $line, -file => $file,
+ -severity => 'WARNING',
+ -msg => 'Verbatim paragraph in NAME section' });
+ }
+}
+
+# process a block of regular text
+sub textblock {
+ my ($self, $paragraph, $line_num, $pod_para) = @_;
+ my ($file, $line) = $pod_para->file_line;
+
+ $self->_preproc_par($paragraph);
+ $self->_commands_in_paragraphs($paragraph, $pod_para);
+
+ # skip this paragraph if in a =begin block
+ unless($self->{_have_begin}) {
+ my $block = $self->interpolate_and_check($paragraph, $line,$file);
+ if($self->{_current_head1} eq 'NAME') {
+ if($block =~ /^\s*(\S+?)\s*[,-]/) {
+ # this is the canonical name
+ $self->{-name} = $1 unless(defined $self->{-name});
+ }
+ }
+ }
+}
+
+sub _preproc_par
+{
+ my $self = shift;
+ $_[0] =~ s/[\s\n]+$//;
+ if($_[0]) {
+ $self->{_commands_in_head}++;
+ $self->{_list_item_contents}++ if(defined $self->{_list_item_contents});
+ if(@{$self->{_list_stack}} && !$self->{_list_stack}->[0]->item()) {
+ $self->{_list_stack}->[0]->{_has_par} = 1;
+ }
+ }
+}
+
+# look for =foo commands at the start of a line within a paragraph, as for
+# instance the following which prints as "* one =item two".
+#
+# =item one
+# =item two
+#
+# Examples of =foo written in docs are expected to be indented in a verbatim
+# or marked up C<=foo> so won't be caught. A double-angle C<< =foo >> could
+# have the =foo at the start of a line, but that should be unlikely and is
+# easily enough dealt with by not putting a newline after the C<<.
+#
+sub _commands_in_paragraphs {
+ my ($self, $str, $pod_para) = @_;
+ while ($str =~ /[^\n]\n=([a-z][a-z0-9]+)/sg) {
+ my $cmd = $1;
+ my $pos = pos($str);
+ if ($VALID_COMMANDS{$cmd}) {
+ my ($file, $line) = $pod_para->file_line;
+ my $part = substr($str, 0, $pos);
+ $line += ($part =~ tr/\n//); # count of newlines
+
+ $self->poderror
+ ({ -line => $line, -file => $file,
+ -severity => 'ERROR',
+ -msg => "Apparent command =$cmd not preceded by blank line"});
+ }
+ }
+}
+
+1;
+
+__END__
+
+=head1 AUTHOR
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt> (initial version),
+Marek Rouchal E<lt>marekr@cpan.orgE<gt>
+
+Based on code for B<Pod::Text::pod2text()> written by
+Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
+
+B<Pod::Checker> is part of the Pod-Checker distribution, and is based on
+L<Pod::Parser>.
+
+=cut
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Checker/scripts/podchecker.PL b/gnu/usr.bin/perl/cpan/Pod-Checker/scripts/podchecker.PL
new file mode 100644
index 00000000000..2c33e8caadb
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Checker/scripts/podchecker.PL
@@ -0,0 +1,186 @@
+#!/usr/local/bin/perl
+
+use Config;
+use File::Basename qw(&basename &dirname);
+use Cwd;
+
+# List explicitly here the variables you want Configure to
+# generate. Metaconfig only looks for shell variables, so you
+# have to mention them as if they were shell variables, not
+# %Config entries. Thus you write
+# $startperl
+# to ensure Configure will look for $Config{startperl}.
+
+# This forces PL files to create target in same directory as PL file.
+# This is so that make depend always knows where to find PL derivatives.
+$origdir = cwd;
+chdir(dirname($0));
+($file = basename($0)) =~ s/\.PL$//;
+$file =~ s/\.pl$//
+ if ($^O eq 'VMS' or $^O eq 'os2' or $^O eq 'dos'); # "case-forgiving"
+$file .= '.com' if $^O eq 'VMS';
+
+open OUT,">$file" or die "Can't create $file: $!";
+
+print "Extracting $file (with variable substitutions)\n";
+
+# In this section, perl variables will be expanded during extraction.
+# You can use $Config{...} to use Configure variables.
+
+print OUT <<"!GROK!THIS!";
+$Config{'startperl'}
+ eval 'exec perl -S \$0 "\$@"'
+ if 0;
+!GROK!THIS!
+
+# In the following, perl variables are not expanded during extraction.
+
+print OUT <<'!NO!SUBS!';
+#############################################################################
+# podchecker -- command to invoke the podchecker function in Pod::Checker
+#
+# Copyright (c) 1998-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+use strict;
+#use diagnostics;
+
+=head1 NAME
+
+podchecker - check the syntax of POD format documentation files
+
+=head1 SYNOPSIS
+
+B<podchecker> [B<-help>] [B<-man>] [B<-(no)warnings>] [I<file>S< >...]
+
+=head1 OPTIONS AND ARGUMENTS
+
+=over 8
+
+=item B<-help>
+
+Print a brief help message and exit.
+
+=item B<-man>
+
+Print the manual page and exit.
+
+=item B<-warnings> B<-nowarnings>
+
+Turn on/off printing of warnings. Repeating B<-warnings> increases the
+warning level, i.e. more warnings are printed. Currently increasing to
+level two causes flagging of unescaped "E<lt>,E<gt>" characters.
+
+=item I<file>
+
+The pathname of a POD file to syntax-check (defaults to standard input).
+
+=back
+
+=head1 DESCRIPTION
+
+B<podchecker> will read the given input files looking for POD
+syntax errors in the POD documentation and will print any errors
+it find to STDERR. At the end, it will print a status message
+indicating the number of errors found.
+
+Directories are ignored, an appropriate warning message is printed.
+
+B<podchecker> invokes the B<podchecker()> function exported by B<Pod::Checker>
+Please see L<Pod::Checker/podchecker()> for more details.
+
+=head1 RETURN VALUE
+
+B<podchecker> returns a 0 (zero) exit status if all specified
+POD files are ok.
+
+=head1 ERRORS
+
+B<podchecker> returns the exit status 1 if at least one of
+the given POD files has syntax errors.
+
+The status 2 indicates that at least one of the specified
+files does not contain I<any> POD commands.
+
+Status 1 overrides status 2. If you want unambiguous
+results, call B<podchecker> with one single argument only.
+
+=head1 SEE ALSO
+
+L<Pod::Parser> and L<Pod::Checker>
+
+=head1 AUTHORS
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt>,
+Marek Rouchal E<lt>marekr@cpan.orgE<gt>
+
+Based on code for B<Pod::Text::pod2text(1)> written by
+Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
+
+=cut
+
+
+use Pod::Checker;
+use Pod::Usage;
+use Getopt::Long;
+
+## Define options
+my %options;
+
+## Parse options
+GetOptions(\%options, qw(help man warnings+ nowarnings)) || pod2usage(2);
+pod2usage(1) if ($options{help});
+pod2usage(-verbose => 2) if ($options{man});
+
+if($options{nowarnings}) {
+ $options{warnings} = 0;
+}
+elsif(!defined $options{warnings}) {
+ $options{warnings} = 1; # default is warnings on
+}
+
+## Dont default to STDIN if connected to a terminal
+pod2usage(2) if ((@ARGV == 0) && (-t STDIN));
+
+## Invoke podchecker()
+my $status = 0;
+@ARGV = qw(-) unless(@ARGV);
+for my $podfile (@ARGV) {
+ if($podfile eq '-') {
+ $podfile = '<&STDIN';
+ }
+ elsif(-d $podfile) {
+ warn "podchecker: Warning: Ignoring directory '$podfile'\n";
+ next;
+ }
+ my $errors =
+ podchecker($podfile, undef, '-warnings' => $options{warnings});
+ if($errors > 0) {
+ # errors occurred
+ $status = 1;
+ printf STDERR ("%s has %d pod syntax %s.\n",
+ $podfile, $errors,
+ ($errors == 1) ? 'error' : 'errors');
+ }
+ elsif($errors < 0) {
+ # no pod found
+ $status = 2 unless($status);
+ print STDERR "$podfile does not contain any pod commands.\n";
+ }
+ else {
+ print STDERR "$podfile pod syntax OK.\n";
+ }
+}
+exit $status;
+
+!NO!SUBS!
+
+close OUT or die "Can't close $file: $!";
+chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
+exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
+chdir $origdir;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/contains_bad_pod.xr b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/contains_bad_pod.xr
new file mode 100644
index 00000000000..c7907963d95
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/contains_bad_pod.xr
@@ -0,0 +1,5 @@
+=head foo
+
+bar baz.
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/empty.xr b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/empty.xr
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/empty.xr
diff --git a/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/podchkenc.t b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/podchkenc.t
new file mode 100644
index 00000000000..e7a5d7a14fd
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/podchkenc.t
@@ -0,0 +1,29 @@
+#!/usr/bin/perl
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testpchk.pl";
+ import TestPodChecker;
+}
+
+# this tests Pod::Checker accepts =encoding directive
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodchecker \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+__END__
+
+=encoding utf8
+
+=encode utf8
+
+dummy error
+
+=head1 An example.
+
+'Twas brillig, and the slithy toves did gyre and gimble in the wabe.
+
+=cut
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/podchkenc.xr b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/podchkenc.xr
new file mode 100644
index 00000000000..8a21a1272a4
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/podchkenc.xr
@@ -0,0 +1 @@
+*** ERROR: Unknown command 'encode' at line 20 in file t/pod/podchkenc.t
diff --git a/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/poderrs.t b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/poderrs.t
new file mode 100644
index 00000000000..362cbb6575e
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/poderrs.t
@@ -0,0 +1,241 @@
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testpchk.pl";
+ import TestPodChecker;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodchecker \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+### Deliberately throw in some blank but non-empty lines
+
+### The above line should contain spaces
+
+
+__END__
+
+=head2 This should cause a warning
+
+=head1 NAME
+
+poderrors.t - test Pod::Checker on some pod syntax errors
+
+=unknown1 this is an unknown command with two N<unknownA>
+and D<unknownB> interior sequences.
+
+This is some paragraph text with some unknown interior sequences,
+such as Q<unknown2>,
+A<unknown3>,
+and Y<unknown4 V<unknown5>>.
+
+Now try some unterminated sequences like
+I<hello mudda!
+B<hello fadda!
+
+Here I am at C<camp granada!
+
+Camps is very,
+entertaining.
+And they say we'll have some fun if it stops raining!
+
+Okay, now use a non-empty blank line to terminate a paragraph and make
+sure we get a warning.
+
+The above blank line contains tabs and spaces only
+
+=head1 Additional tests
+
+=head2 item without over
+
+=item oops
+
+=head2 back without over
+
+=back
+
+=head2 over without back
+
+=over 4
+
+=item aaps
+
+=head2 end without begin
+
+=end
+
+=head2 begin and begin
+
+=begin html
+
+=begin text
+
+=end
+
+=end
+
+second one results in end w/o begin
+
+=head2 begin w/o formatter
+
+=begin
+
+=end
+
+=head2 for w/o formatter
+
+=for
+
+something...
+
+=head2 Nested sequences of the same type
+
+C<code I<italic C<code again!>>>
+
+=head2 Garbled entities
+
+E<alea iacta est>
+E<C<auml>>
+E<abcI<bla>>
+E<0x100>
+E<07777>
+E<300>
+
+=head2 Unresolved internal links
+
+L</"begin or begin">
+L<"end with begin">
+L</OoPs>
+
+=head2 Some links with problems
+
+L<abc
+def>
+L<>
+L< aha>
+L<oho >
+L<"Warnings"> this one is ok
+L</unescaped> ok too, this POD has an X of the same name
+L<http://www.perl.org> this is OK
+L<The Perl Home Page|http://www.perl.org> this is also OK
+
+=head2 Warnings
+
+L<passwd(5)>
+L<some text with / in it|perlvar/$|> should give warnings as hell
+
+=over 4
+
+=item bla
+
+=back 200
+
+the 200 is evil
+
+=begin html
+
+What?
+
+=end xml
+
+X<unescaped>see these unescaped < and > in the text?
+
+=head2 Misc
+
+Z<ddd> should be empty
+
+X<> should not be empty
+
+=over four
+
+This paragrapgh is misplaced - it ought to be an item.
+
+=item four should be numeric!
+
+=item
+
+=item blah
+
+=item previous is all empty!!!
+
+=back
+
+All empty over/back:
+
+=over 4
+
+=back
+
+item w/o name
+
+=cut
+
+=pod bla
+
+bla is evil
+
+=cut blub
+
+blub is evil
+
+=head2 reoccurence
+
+=over 4
+
+=item Misc
+
+we already have a head Misc
+
+=back
+
+=head2 some heading
+
+=head2 another one
+
+=head2 the next line should be empty
+=head2 ... but there is a command instead
+
+And here is some text
+=head2 again followed by a command
+
+ verbatim
+=item line missing
+
+previous section is empty!
+
+=head1 LINK TESTS
+
+Due to bug reported by Rafael Garcia-Suarez "rgarciasuarez@free.fr":
+
+The following hyperlinks :
+L<"I/O Operators">
+L<perlop/"I/O Operators">
+trigger a podchecker warning (using bleadperl) :
+ node 'I/O Operators' contains non-escaped | or /
+
+=cut
+
+=pod
+
+=head1 ON-OFF tests
+
+The above =pod is OK. The following =cut is ok, the one after not.
+
+=cut
+
+# some comment or code here, not POD
+
+=cut
+
+# more code
+
+=head2 This opens POD
+
+=pod
+
+And the =pod above is too much.
+
+=cut
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/poderrs.xr b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/poderrs.xr
new file mode 100644
index 00000000000..c1a80c64787
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/poderrs.xr
@@ -0,0 +1,53 @@
+*** WARNING: =head2 without preceding higher level at line 20 in file t/pod/poderrs.t
+*** WARNING: empty section in previous paragraph at line 22 in file t/pod/poderrs.t
+*** ERROR: Unknown command 'unknown1' at line 26 in file t/pod/poderrs.t
+*** ERROR: Unknown interior-sequence 'Q' at line 30 in file t/pod/poderrs.t
+*** ERROR: Unknown interior-sequence 'A' at line 31 in file t/pod/poderrs.t
+*** ERROR: Unknown interior-sequence 'Y' at line 32 in file t/pod/poderrs.t
+*** ERROR: Unknown interior-sequence 'V' at line 32 in file t/pod/poderrs.t
+*** ERROR: unterminated B<...> at line 36 in file t/pod/poderrs.t
+*** ERROR: unterminated I<...> at line 35 in file t/pod/poderrs.t
+*** ERROR: unterminated C<...> at line 38 in file t/pod/poderrs.t
+*** WARNING: line containing nothing but whitespace in paragraph at line 46 in file t/pod/poderrs.t
+*** ERROR: =item without previous =over at line 53 in file t/pod/poderrs.t
+*** ERROR: =back without previous =over at line 57 in file t/pod/poderrs.t
+*** ERROR: =over on line 61 without closing =back (at head2) at line 65 in file t/pod/poderrs.t
+*** ERROR: =end without =begin at line 67 in file t/pod/poderrs.t
+*** ERROR: Nested =begin's (first at line 71:html) at line 73 in file t/pod/poderrs.t
+*** ERROR: =end without =begin at line 77 in file t/pod/poderrs.t
+*** ERROR: No argument for =begin at line 83 in file t/pod/poderrs.t
+*** ERROR: =for without formatter specification at line 89 in file t/pod/poderrs.t
+*** WARNING: nested commands C<...C<...>...> at line 95 in file t/pod/poderrs.t
+*** ERROR: garbled entity E<alea iacta est> at line 99 in file t/pod/poderrs.t
+*** ERROR: garbled entity E<C<auml>> at line 100 in file t/pod/poderrs.t
+*** ERROR: garbled entity E<abcI<bla>> at line 101 in file t/pod/poderrs.t
+*** ERROR: Entity number out of range E<0x100> at line 102 in file t/pod/poderrs.t
+*** ERROR: Entity number out of range E<07777> at line 103 in file t/pod/poderrs.t
+*** ERROR: Entity number out of range E<300> at line 104 in file t/pod/poderrs.t
+*** ERROR: malformed link L<> : empty link at line 116 in file t/pod/poderrs.t
+*** WARNING: ignoring leading whitespace in link at line 117 in file t/pod/poderrs.t
+*** WARNING: ignoring trailing whitespace in link at line 118 in file t/pod/poderrs.t
+*** WARNING: (section) in 'passwd(5)' deprecated at line 126 in file t/pod/poderrs.t
+*** WARNING: node '$|' contains non-escaped | or / at line 127 in file t/pod/poderrs.t
+*** WARNING: alternative text '$|' contains non-escaped | or / at line 127 in file t/pod/poderrs.t
+*** ERROR: Spurious character(s) after =back at line 133 in file t/pod/poderrs.t
+*** ERROR: Nonempty Z<> at line 147 in file t/pod/poderrs.t
+*** ERROR: Empty X<> at line 149 in file t/pod/poderrs.t
+*** WARNING: preceding non-item paragraph(s) at line 155 in file t/pod/poderrs.t
+*** WARNING: No argument for =item at line 157 in file t/pod/poderrs.t
+*** WARNING: previous =item has no contents at line 159 in file t/pod/poderrs.t
+*** WARNING: No items in =over (at line 167) / =back list at line 169 in file t/pod/poderrs.t
+*** ERROR: Spurious text after =pod at line 175 in file t/pod/poderrs.t
+*** ERROR: Spurious text after =cut at line 179 in file t/pod/poderrs.t
+*** WARNING: empty section in previous paragraph at line 195 in file t/pod/poderrs.t
+*** ERROR: Apparent command =head2 not preceded by blank line at line 198 in file t/pod/poderrs.t
+*** WARNING: empty section in previous paragraph at line 197 in file t/pod/poderrs.t
+*** ERROR: Apparent command =head2 not preceded by blank line at line 201 in file t/pod/poderrs.t
+*** ERROR: Apparent command =item not preceded by blank line at line 204 in file t/pod/poderrs.t
+*** ERROR: Spurious =cut command at line 230 in file t/pod/poderrs.t
+*** ERROR: Spurious =pod command at line 236 in file t/pod/poderrs.t
+*** ERROR: unresolved internal link 'begin or begin' at line 108 in file t/pod/poderrs.t
+*** ERROR: unresolved internal link 'end with begin' at line 109 in file t/pod/poderrs.t
+*** ERROR: unresolved internal link 'OoPs' at line 110 in file t/pod/poderrs.t
+*** ERROR: unresolved internal link 'abc def' at line 114 in file t/pod/poderrs.t
+*** ERROR: unresolved internal link 'I/O Operators' at line 213 in file t/pod/poderrs.t
diff --git a/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/selfcheck.t b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/selfcheck.t
new file mode 100644
index 00000000000..3b6e352d3a6
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/selfcheck.t
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+use File::Basename;
+use File::Spec;
+use strict;
+my $THISDIR;
+BEGIN {
+ $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testpchk.pl";
+ import TestPodChecker qw(testpodcheck);
+}
+
+# test that our POD is correct!
+my $path = File::Spec->catfile($THISDIR,(File::Spec->updir()) x 2, 'lib', 'Pod', '*.pm');
+print "THISDIR=$THISDIR PATH=$path\n";
+my @pods = glob($path);
+print "PODS=@pods\n";
+
+print "1..",scalar(@pods),"\n";
+
+my $errs = 0;
+my $testnum = 1;
+foreach my $pod (@pods) {
+ my $out = File::Spec->catfile($THISDIR, basename($pod));
+ $out =~ s{\.pm}{.OUT};
+ my %options = ( -Out => $out );
+ my $failmsg = testpodcheck(-In => $pod, -Out => $out, -Cmp => "$THISDIR/empty.xr");
+ if($failmsg) {
+ if(open(IN, "<$out")) {
+ while(<IN>) {
+ warn "podchecker: $_";
+ }
+ close(IN);
+ } else {
+ warn "Error: Cannot read output file $out: $!\n";
+ }
+ print "not ok $testnum\n";
+ $errs++;
+ } else {
+ print "ok $testnum\n";
+ }
+ $testnum++;
+}
+exit( ($errs == 0) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/testcmp.pl b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/testcmp.pl
new file mode 100644
index 00000000000..b8592fcc2a8
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/testcmp.pl
@@ -0,0 +1,94 @@
+package TestCompare;
+
+use vars qw(@ISA @EXPORT $MYPKG);
+#use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+use File::Basename;
+use File::Spec;
+use FileHandle;
+
+@ISA = qw(Exporter);
+@EXPORT = qw(&testcmp);
+$MYPKG = eval { (caller)[0] };
+
+##--------------------------------------------------------------------------
+
+=head1 NAME
+
+testcmp -- compare two files line-by-line
+
+=head1 SYNOPSIS
+
+ $is_diff = testcmp($file1, $file2);
+
+or
+
+ $is_diff = testcmp({-cmplines => \&mycmp}, $file1, $file2);
+
+=head2 DESCRIPTION
+
+Compare two text files line-by-line and return 0 if they are the
+same, 1 if they differ. Each of $file1 and $file2 may be a filenames,
+or a filehandles (in which case it must already be open for reading).
+
+If the first argument is a hashref, then the B<-cmplines> key in the
+hash may have a subroutine reference as its corresponding value.
+The referenced user-defined subroutine should be a line-comparator
+function that takes two pre-chomped text-lines as its arguments
+(the first is from $file1 and the second is from $file2). It should
+return 0 if it considers the two lines equivalent, and non-zero
+otherwise.
+
+=cut
+
+##--------------------------------------------------------------------------
+
+sub testcmp( $ $ ; $) {
+ my %opts = ref($_[0]) eq 'HASH' ? %{shift()} : ();
+ my ($file1, $file2) = @_;
+ my ($fh1, $fh2) = ($file1, $file2);
+ unless (ref $fh1) {
+ $fh1 = FileHandle->new($file1, "r") or die "Can't open $file1: $!";
+ }
+ unless (ref $fh2) {
+ $fh2 = FileHandle->new($file2, "r") or die "Can't open $file2: $!";
+ }
+
+ my $cmplines = $opts{'-cmplines'} || undef;
+ my ($f1text, $f2text) = ("", "");
+ my ($line, $diffs) = (0, 0);
+
+ while ( defined($f1text) and defined($f2text) ) {
+ defined($f1text = <$fh1>) and chomp($f1text);
+ defined($f2text = <$fh2>) and chomp($f2text);
+ ++$line;
+ last unless ( defined($f1text) and defined($f2text) );
+ # kill any extra line endings
+ $f1text =~ s/[\r\n]+$//s;
+ $f2text =~ s/[\r\n]+$//s;
+ $diffs = (ref $cmplines) ? &$cmplines($f1text, $f2text)
+ : ($f1text ne $f2text);
+ last if $diffs;
+ }
+ close($fh1) unless (ref $file1);
+ close($fh2) unless (ref $file2);
+
+ $diffs = 1 if (defined($f1text) or defined($f2text));
+ if ( defined($f1text) and defined($f2text) ) {
+ ## these two lines must be different
+ warn "$file1 and $file2 differ at line $line\n";
+ }
+ elsif (defined($f1text) and (! defined($f1text))) {
+ ## file1 must be shorter
+ warn "$file1 is shorter than $file2\n";
+ }
+ elsif (defined $f2text) {
+ ## file2 must be longer
+ warn "$file1 is shorter than $file2\n";
+ }
+ return $diffs;
+}
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/testpchk.pl b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/testpchk.pl
new file mode 100644
index 00000000000..0464a9a0fcf
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Checker/t/pod/testpchk.pl
@@ -0,0 +1,130 @@
+package TestPodChecker;
+
+BEGIN {
+ use File::Basename;
+ use File::Spec;
+ push @INC, '..';
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testcmp.pl";
+ import TestCompare;
+ my $PARENTDIR = dirname $THISDIR;
+ push @INC, map { File::Spec->catfile($_, 'lib') } ($PARENTDIR, $THISDIR);
+ require VMS::Filespec if $^O eq 'VMS';
+}
+
+use Pod::Checker;
+use vars qw(@ISA @EXPORT $MYPKG);
+#use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+#use File::Compare;
+
+@ISA = qw(Exporter);
+@EXPORT = qw(&testpodchecker);
+@EXPORT_OK = qw(&testpodcheck);
+$MYPKG = eval { (caller)[0] };
+
+sub stripname( $ ) {
+ local $_ = shift;
+ return /(\w[.\w]*)\s*$/ ? $1 : $_;
+}
+
+sub msgcmp( $ $ ) {
+ ## filter out platform-dependent aspects of error messages
+ my ($line1, $line2) = @_;
+ for ($line1, $line2) {
+ ## remove filenames from error messages to avoid any
+ ## filepath naming differences between OS platforms
+ s/(at line \S+ in file) .*\W(\w+\.[tT])\s*$/$1 \L$2\E/;
+ s/.*\W(\w+\.[tT]) (has \d+ pod syntax error)/\L$1\E $2/;
+ }
+ return ($line1 ne $line2);
+}
+
+sub testpodcheck( @ ) {
+ my %args = @_;
+ my $infile = $args{'-In'} || croak "No input file given!";
+ my $outfile = $args{'-Out'} || croak "No output file given!";
+ my $cmpfile = $args{'-Cmp'} || croak "No compare-result file given!";
+
+ my $different = '';
+ my $testname = basename $infile, '.t', '.xr';
+
+ unless (-e $cmpfile) {
+ my $msg = "*** Can't find comparison file $cmpfile for testing $infile";
+ warn "$msg\n";
+ return $msg;
+ }
+
+ print "# Running podchecker for '$testname'...\n";
+ ## Compare the output against the expected result
+ if ($^O eq 'VMS') {
+ for ($infile, $outfile, $cmpfile) {
+ $_ = VMS::Filespec::unixify($_) unless ref;
+ }
+ }
+ podchecker($infile, $outfile);
+ if ( testcmp({'-cmplines' => \&msgcmp}, $outfile, $cmpfile) ) {
+ $different = "$outfile is different from $cmpfile";
+ }
+ else {
+ unlink($outfile);
+ }
+ return $different;
+}
+
+sub testpodchecker( @ ) {
+ my %opts = (ref $_[0] eq 'HASH') ? %{shift()} : ();
+ my @testpods = @_;
+ my ($testname, $testdir) = ("", "");
+ my ($podfile, $cmpfile) = ("", "");
+ my ($outfile, $errfile) = ("", "");
+ my $passes = 0;
+ my $failed = 0;
+ local $_;
+
+ print "1..", scalar @testpods, "\n" unless ($opts{'-xrgen'});
+
+ for $podfile (@testpods) {
+ ($testname, $_) = fileparse($podfile);
+ $testdir ||= $_;
+ $testname =~ s/\.t$//;
+ $cmpfile = $testdir . $testname . '.xr';
+ $outfile = $testdir . $testname . '.OUT';
+
+ if ($opts{'-xrgen'}) {
+ if ($opts{'-force'} or ! -e $cmpfile) {
+ ## Create the comparison file
+ print "# Creating expected result for \"$testname\"" .
+ " podchecker test ...\n";
+ podchecker($podfile, $cmpfile);
+ }
+ else {
+ print "# File $cmpfile already exists" .
+ " (use '-force' to regenerate it).\n";
+ }
+ next;
+ }
+
+ my $failmsg = testpodcheck
+ -In => $podfile,
+ -Out => $outfile,
+ -Cmp => $cmpfile;
+ if ($failmsg) {
+ ++$failed;
+ print "#\tFAILED. ($failmsg)\n";
+ print "not ok ", $failed+$passes, "\n";
+ }
+ else {
+ ++$passes;
+ unlink($outfile);
+ print "#\tPASSED.\n";
+ print "ok ", $failed+$passes, "\n";
+ }
+ }
+ return $passes;
+}
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Pod-LaTeX/lib/Pod/LaTeX.pm b/gnu/usr.bin/perl/cpan/Pod-LaTeX/lib/Pod/LaTeX.pm
index f4b1aaf97b9..fc6d99dd979 100644
--- a/gnu/usr.bin/perl/cpan/Pod-LaTeX/lib/Pod/LaTeX.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-LaTeX/lib/Pod/LaTeX.pm
@@ -28,12 +28,14 @@ use strict;
require Pod::ParseUtils;
use base qw/ Pod::Select /;
+use if $] > 5.017, 'deprecate';
+
# use Data::Dumper; # for debugging
use Carp;
use vars qw/ $VERSION %HTML_Escapes @LatexSections /;
-$VERSION = '0.60';
+$VERSION = '0.61';
# Definitions of =headN -> latex mapping
@LatexSections = (qw/
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/Find.pm b/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/Find.pm
index 028a405c79e..884062ff3a5 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/Find.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/Find.pm
@@ -1,549 +1,549 @@
-#############################################################################
-# Pod/Find.pm -- finds files containing POD documentation
-#
-# Author: Marek Rouchal <marekr@cpan.org>
-#
-# Copyright (C) 1999-2000 by Marek Rouchal (and borrowing code
-# from Nick Ing-Simmon's PodToHtml). All rights reserved.
-# This file is part of "PodParser". Pod::Find is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::Find;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '1.51'; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-use Carp;
-
-BEGIN {
- if ($] < 5.006) {
- require Symbol;
- import Symbol;
- }
-}
-
-#############################################################################
-
-=head1 NAME
-
-Pod::Find - find POD documents in directory trees
-
-=head1 SYNOPSIS
-
- use Pod::Find qw(pod_find simplify_name);
- my %pods = pod_find({ -verbose => 1, -inc => 1 });
- foreach(keys %pods) {
- print "found library POD `$pods{$_}' in $_\n";
- }
-
- print "podname=",simplify_name('a/b/c/mymodule.pod'),"\n";
-
- $location = pod_where( { -inc => 1 }, "Pod::Find" );
-
-=head1 DESCRIPTION
-
-B<Pod::Find> provides a set of functions to locate POD files. Note that
-no function is exported by default to avoid pollution of your namespace,
-so be sure to specify them in the B<use> statement if you need them:
-
- use Pod::Find qw(pod_find);
-
-From this version on the typical SCM (software configuration management)
-files/directories like RCS, CVS, SCCS, .svn are ignored.
-
-=cut
-
-#use diagnostics;
-use Exporter;
-use File::Spec;
-use File::Find;
-use Cwd qw(abs_path cwd);
-
-use vars qw(@ISA @EXPORT_OK $VERSION);
-@ISA = qw(Exporter);
-@EXPORT_OK = qw(&pod_find &simplify_name &pod_where &contains_pod);
-
-# package global variables
-my $SIMPLIFY_RX;
-
-=head2 C<pod_find( { %opts } , @directories )>
-
-The function B<pod_find> searches for POD documents in a given set of
-files and/or directories. It returns a hash with the file names as keys
-and the POD name as value. The POD name is derived from the file name
-and its position in the directory tree.
-
-E.g. when searching in F<$HOME/perl5lib>, the file
-F<$HOME/perl5lib/MyModule.pm> would get the POD name I<MyModule>,
-whereas F<$HOME/perl5lib/Myclass/Subclass.pm> would be
-I<Myclass::Subclass>. The name information can be used for POD
-translators.
-
-Only text files containing at least one valid POD command are found.
-
-A warning is printed if more than one POD file with the same POD name
-is found, e.g. F<CPAN.pm> in different directories. This usually
-indicates duplicate occurrences of modules in the I<@INC> search path.
-
-B<OPTIONS> The first argument for B<pod_find> may be a hash reference
-with options. The rest are either directories that are searched
-recursively or files. The POD names of files are the plain basenames
-with any Perl-like extension (.pm, .pl, .pod) stripped.
-
-=over 4
-
-=item C<-verbose =E<gt> 1>
-
-Print progress information while scanning.
-
-=item C<-perl =E<gt> 1>
-
-Apply Perl-specific heuristics to find the correct PODs. This includes
-stripping Perl-like extensions, omitting subdirectories that are numeric
-but do I<not> match the current Perl interpreter's version id, suppressing
-F<site_perl> as a module hierarchy name etc.
-
-=item C<-script =E<gt> 1>
-
-Search for PODs in the current Perl interpreter's installation
-B<scriptdir>. This is taken from the local L<Config|Config> module.
-
-=item C<-inc =E<gt> 1>
-
-Search for PODs in the current Perl interpreter's I<@INC> paths. This
-automatically considers paths specified in the C<PERL5LIB> environment
-as this is included in I<@INC> by the Perl interpreter itself.
-
-=back
-
-=cut
-
-# return a hash of the POD files found
-# first argument may be a hashref (options),
-# rest is a list of directories to search recursively
-sub pod_find
-{
- my %opts;
- if(ref $_[0]) {
- %opts = %{shift()};
- }
-
- $opts{-verbose} ||= 0;
- $opts{-perl} ||= 0;
-
- my (@search) = @_;
-
- if($opts{-script}) {
- require Config;
- push(@search, $Config::Config{scriptdir})
- if -d $Config::Config{scriptdir};
- $opts{-perl} = 1;
- }
-
- if($opts{-inc}) {
- if ($^O eq 'MacOS') {
- # tolerate '.', './some_dir' and '(../)+some_dir' on Mac OS
- my @new_INC = @INC;
- for (@new_INC) {
- if ( $_ eq '.' ) {
- $_ = ':';
- } elsif ( $_ =~ s{^((?:\.\./)+)}{':' x (length($1)/3)}e ) {
- $_ = ':'. $_;
- } else {
- $_ =~ s{^\./}{:};
- }
- }
- push(@search, grep($_ ne File::Spec->curdir, @new_INC));
- } else {
- my %seen;
- my $curdir = File::Spec->curdir;
- foreach(@INC) {
- next if $_ eq $curdir;
- my $path = abs_path($_);
- push(@search, $path) unless $seen{$path}++;
- }
- }
-
- $opts{-perl} = 1;
- }
-
- if($opts{-perl}) {
- require Config;
- # this code simplifies the POD name for Perl modules:
- # * remove "site_perl"
- # * remove e.g. "i586-linux" (from 'archname')
- # * remove e.g. 5.00503
- # * remove pod/ if followed by *.pod (e.g. in pod/perlfunc.pod)
-
- # Mac OS:
- # * remove ":?site_perl:"
- # * remove :?pod: if followed by *.pod (e.g. in :pod:perlfunc.pod)
-
- if ($^O eq 'MacOS') {
- $SIMPLIFY_RX =
- qq!^(?i:\:?site_perl\:|\:?pod\:(?=.*?\\.pod\\z))*!;
- } else {
- $SIMPLIFY_RX =
- qq!^(?i:site(_perl)?/|\Q$Config::Config{archname}\E/|\\d+\\.\\d+([_.]?\\d+)?/|pod/(?=.*?\\.pod\\z))*!;
- }
- }
-
- my %dirs_visited;
- my %pods;
- my %names;
- my $pwd = cwd();
-
- foreach my $try (@search) {
- unless(File::Spec->file_name_is_absolute($try)) {
- # make path absolute
- $try = File::Spec->catfile($pwd,$try);
- }
- # simplify path
- # on VMS canonpath will vmsify:[the.path], but File::Find::find
- # wants /unixy/paths
- if ($^O eq 'VMS') {
- $try = VMS::Filespec::unixify($try);
- }
- else {
- $try = File::Spec->canonpath($try);
- }
- my $name;
- if(-f $try) {
- if($name = _check_and_extract_name($try, $opts{-verbose})) {
- _check_for_duplicates($try, $name, \%names, \%pods);
- }
- next;
- }
- my $root_rx = $^O eq 'MacOS' ? qq!^\Q$try\E! : qq!^\Q$try\E/!;
- $root_rx=~ s|//$|/|; # remove trailing double slash
- File::Find::find( sub {
- my $item = $File::Find::name;
- if(-d) {
- if($item =~ m{/(?:RCS|CVS|SCCS|\.svn)$}) {
- $File::Find::prune = 1;
- return;
- }
- elsif($dirs_visited{$item}) {
- warn "Directory '$item' already seen, skipping.\n"
- if($opts{-verbose});
- $File::Find::prune = 1;
- return;
- }
- else {
- $dirs_visited{$item} = 1;
- }
- if($opts{-perl} && /^(\d+\.[\d_]+)\z/s && eval "$1" != $]) {
- $File::Find::prune = 1;
- warn "Perl $] version mismatch on $_, skipping.\n"
- if($opts{-verbose});
- }
- return;
- }
- if($name = _check_and_extract_name($item, $opts{-verbose}, $root_rx)) {
- _check_for_duplicates($item, $name, \%names, \%pods);
- }
- }, $try); # end of File::Find::find
- }
- chdir $pwd;
- return %pods;
-}
-
-sub _check_for_duplicates {
- my ($file, $name, $names_ref, $pods_ref) = @_;
- if($$names_ref{$name}) {
- warn "Duplicate POD found (shadowing?): $name ($file)\n";
- warn ' Already seen in ',
- join(' ', grep($$pods_ref{$_} eq $name, keys %$pods_ref)),"\n";
- }
- else {
- $$names_ref{$name} = 1;
- }
- return $$pods_ref{$file} = $name;
-}
-
-sub _check_and_extract_name {
- my ($file, $verbose, $root_rx) = @_;
-
- # check extension or executable flag
- # this involves testing the .bat extension on Win32!
- unless(-f $file && -T $file && ($file =~ /\.(pod|pm|plx?)\z/i || -x $file )) {
- return;
- }
-
- return unless contains_pod($file,$verbose);
-
- # strip non-significant path components
- # TODO what happens on e.g. Win32?
- my $name = $file;
- if(defined $root_rx) {
- $name =~ s/$root_rx//is;
- $name =~ s/$SIMPLIFY_RX//is if(defined $SIMPLIFY_RX);
- }
- else {
- if ($^O eq 'MacOS') {
- $name =~ s/^.*://s;
- } else {
- $name =~ s{^.*/}{}s;
- }
- }
- _simplify($name);
- $name =~ s{/+}{::}g;
- if ($^O eq 'MacOS') {
- $name =~ s{:+}{::}g; # : -> ::
- } else {
- $name =~ s{/+}{::}g; # / -> ::
- }
- return $name;
-}
-
-=head2 C<simplify_name( $str )>
-
-The function B<simplify_name> is equivalent to B<basename>, but also
-strips Perl-like extensions (.pm, .pl, .pod) and extensions like
-F<.bat>, F<.cmd> on Win32 and OS/2, or F<.com> on VMS, respectively.
-
-=cut
-
-# basic simplification of the POD name:
-# basename & strip extension
-sub simplify_name {
- my ($str) = @_;
- # remove all path components
- if ($^O eq 'MacOS') {
- $str =~ s/^.*://s;
- } else {
- $str =~ s{^.*/}{}s;
- }
- _simplify($str);
- return $str;
-}
-
-# internal sub only
-sub _simplify {
- # strip Perl's own extensions
- $_[0] =~ s/\.(pod|pm|plx?)\z//i;
- # strip meaningless extensions on Win32 and OS/2
- $_[0] =~ s/\.(bat|exe|cmd)\z//i if($^O =~ /mswin|os2/i);
- # strip meaningless extensions on VMS
- $_[0] =~ s/\.(com)\z//i if($^O eq 'VMS');
-}
-
-# contribution from Tim Jenness <t.jenness@jach.hawaii.edu>
-
-=head2 C<pod_where( { %opts }, $pod )>
-
-Returns the location of a pod document given a search directory
-and a module (e.g. C<File::Find>) or script (e.g. C<perldoc>) name.
-
-Options:
-
-=over 4
-
-=item C<-inc =E<gt> 1>
-
-Search @INC for the pod and also the C<scriptdir> defined in the
-L<Config|Config> module.
-
-=item C<-dirs =E<gt> [ $dir1, $dir2, ... ]>
-
-Reference to an array of search directories. These are searched in order
-before looking in C<@INC> (if B<-inc>). Current directory is used if
-none are specified.
-
-=item C<-verbose =E<gt> 1>
-
-List directories as they are searched
-
-=back
-
-Returns the full path of the first occurrence to the file.
-Package names (eg 'A::B') are automatically converted to directory
-names in the selected directory. (eg on unix 'A::B' is converted to
-'A/B'). Additionally, '.pm', '.pl' and '.pod' are appended to the
-search automatically if required.
-
-A subdirectory F<pod/> is also checked if it exists in any of the given
-search directories. This ensures that e.g. L<perlfunc|perlfunc> is
-found.
-
-It is assumed that if a module name is supplied, that that name
-matches the file name. Pods are not opened to check for the 'NAME'
-entry.
-
-A check is made to make sure that the file that is found does
-contain some pod documentation.
-
-=cut
-
-sub pod_where {
-
- # default options
- my %options = (
- '-inc' => 0,
- '-verbose' => 0,
- '-dirs' => [ File::Spec->curdir ],
- );
-
- # Check for an options hash as first argument
- if (defined $_[0] && ref($_[0]) eq 'HASH') {
- my $opt = shift;
-
- # Merge default options with supplied options
- %options = (%options, %$opt);
- }
-
- # Check usage
- carp 'Usage: pod_where({options}, $pod)' unless (scalar(@_));
-
- # Read argument
- my $pod = shift;
-
- # Split on :: and then join the name together using File::Spec
- my @parts = split (/::/, $pod);
-
- # Get full directory list
- my @search_dirs = @{ $options{'-dirs'} };
-
- if ($options{'-inc'}) {
-
- require Config;
-
- # Add @INC
- if ($^O eq 'MacOS' && $options{'-inc'}) {
- # tolerate '.', './some_dir' and '(../)+some_dir' on Mac OS
- my @new_INC = @INC;
- for (@new_INC) {
- if ( $_ eq '.' ) {
- $_ = ':';
- } elsif ( $_ =~ s{^((?:\.\./)+)}{':' x (length($1)/3)}e ) {
- $_ = ':'. $_;
- } else {
- $_ =~ s{^\./}{:};
- }
- }
- push (@search_dirs, @new_INC);
- } elsif ($options{'-inc'}) {
- push (@search_dirs, @INC);
- }
-
- # Add location of pod documentation for perl man pages (eg perlfunc)
- # This is a pod directory in the private install tree
- #my $perlpoddir = File::Spec->catdir($Config::Config{'installprivlib'},
- # 'pod');
- #push (@search_dirs, $perlpoddir)
- # if -d $perlpoddir;
-
- # Add location of binaries such as pod2text
- push (@search_dirs, $Config::Config{'scriptdir'})
- if -d $Config::Config{'scriptdir'};
- }
-
- warn 'Search path is: '.join(' ', @search_dirs)."\n"
- if $options{'-verbose'};
-
- # Loop over directories
- Dir: foreach my $dir ( @search_dirs ) {
-
- # Don't bother if can't find the directory
- if (-d $dir) {
- warn "Looking in directory $dir\n"
- if $options{'-verbose'};
-
- # Now concatenate this directory with the pod we are searching for
- my $fullname = File::Spec->catfile($dir, @parts);
- $fullname = VMS::Filespec::unixify($fullname) if $^O eq 'VMS';
- warn "Filename is now $fullname\n"
- if $options{'-verbose'};
-
- # Loop over possible extensions
- foreach my $ext ('', '.pod', '.pm', '.pl') {
- my $fullext = $fullname . $ext;
- if (-f $fullext &&
- contains_pod($fullext, $options{'-verbose'}) ) {
- warn "FOUND: $fullext\n" if $options{'-verbose'};
- return $fullext;
- }
- }
- } else {
- warn "Directory $dir does not exist\n"
- if $options{'-verbose'};
- next Dir;
- }
- # for some strange reason the path on MacOS/darwin/cygwin is
- # 'pods' not 'pod'
- # this could be the case also for other systems that
- # have a case-tolerant file system, but File::Spec
- # does not recognize 'darwin' yet. And cygwin also has "pods",
- # but is not case tolerant. Oh well...
- if((File::Spec->case_tolerant || $^O =~ /macos|darwin|cygwin/i)
- && -d File::Spec->catdir($dir,'pods')) {
- $dir = File::Spec->catdir($dir,'pods');
- redo Dir;
- }
- if(-d File::Spec->catdir($dir,'pod')) {
- $dir = File::Spec->catdir($dir,'pod');
- redo Dir;
- }
- }
- # No match;
- return;
-}
-
-=head2 C<contains_pod( $file , $verbose )>
-
-Returns true if the supplied filename (not POD module) contains some pod
-information.
-
-=cut
-
-sub contains_pod {
- my $file = shift;
- my $verbose = 0;
- $verbose = shift if @_;
-
- # check for one line of POD
- my $podfh;
- if ($] < 5.006) {
- $podfh = gensym();
- }
-
- unless(open($podfh,"<$file")) {
- warn "Error: $file is unreadable: $!\n";
- return;
- }
-
- local $/ = undef;
- my $pod = <$podfh>;
- close($podfh) || die "Error closing $file: $!\n";
- unless($pod =~ /^=(head\d|pod|over|item|cut)\b/m) {
- warn "No POD in $file, skipping.\n"
- if($verbose);
- return 0;
- }
-
- return 1;
-}
-
-=head1 AUTHOR
-
-Please report bugs using L<http://rt.cpan.org>.
-
-Marek Rouchal E<lt>marekr@cpan.orgE<gt>,
-heavily borrowing code from Nick Ing-Simmons' PodToHtml.
-
-Tim Jenness E<lt>t.jenness@jach.hawaii.eduE<gt> provided
-C<pod_where> and C<contains_pod>.
-
-B<Pod::Find> is part of the L<Pod::Parser> distribution.
-
-=head1 SEE ALSO
-
-L<Pod::Parser>, L<Pod::Checker>, L<perldoc>
-
-=cut
-
-1;
-
+#############################################################################
+# Pod/Find.pm -- finds files containing POD documentation
+#
+# Author: Marek Rouchal <marekr@cpan.org>
+#
+# Copyright (C) 1999-2000 by Marek Rouchal (and borrowing code
+# from Nick Ing-Simmon's PodToHtml). All rights reserved.
+# This file is part of "PodParser". Pod::Find is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::Find;
+use strict;
+
+use vars qw($VERSION);
+$VERSION = '1.60'; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+use Carp;
+
+BEGIN {
+ if ($] < 5.006) {
+ require Symbol;
+ import Symbol;
+ }
+}
+
+#############################################################################
+
+=head1 NAME
+
+Pod::Find - find POD documents in directory trees
+
+=head1 SYNOPSIS
+
+ use Pod::Find qw(pod_find simplify_name);
+ my %pods = pod_find({ -verbose => 1, -inc => 1 });
+ foreach(keys %pods) {
+ print "found library POD `$pods{$_}' in $_\n";
+ }
+
+ print "podname=",simplify_name('a/b/c/mymodule.pod'),"\n";
+
+ $location = pod_where( { -inc => 1 }, "Pod::Find" );
+
+=head1 DESCRIPTION
+
+B<Pod::Find> provides a set of functions to locate POD files. Note that
+no function is exported by default to avoid pollution of your namespace,
+so be sure to specify them in the B<use> statement if you need them:
+
+ use Pod::Find qw(pod_find);
+
+From this version on the typical SCM (software configuration management)
+files/directories like RCS, CVS, SCCS, .svn are ignored.
+
+=cut
+
+#use diagnostics;
+use Exporter;
+use File::Spec;
+use File::Find;
+use Cwd qw(abs_path cwd);
+
+use vars qw(@ISA @EXPORT_OK $VERSION);
+@ISA = qw(Exporter);
+@EXPORT_OK = qw(&pod_find &simplify_name &pod_where &contains_pod);
+
+# package global variables
+my $SIMPLIFY_RX;
+
+=head2 C<pod_find( { %opts } , @directories )>
+
+The function B<pod_find> searches for POD documents in a given set of
+files and/or directories. It returns a hash with the file names as keys
+and the POD name as value. The POD name is derived from the file name
+and its position in the directory tree.
+
+E.g. when searching in F<$HOME/perl5lib>, the file
+F<$HOME/perl5lib/MyModule.pm> would get the POD name I<MyModule>,
+whereas F<$HOME/perl5lib/Myclass/Subclass.pm> would be
+I<Myclass::Subclass>. The name information can be used for POD
+translators.
+
+Only text files containing at least one valid POD command are found.
+
+A warning is printed if more than one POD file with the same POD name
+is found, e.g. F<CPAN.pm> in different directories. This usually
+indicates duplicate occurrences of modules in the I<@INC> search path.
+
+B<OPTIONS> The first argument for B<pod_find> may be a hash reference
+with options. The rest are either directories that are searched
+recursively or files. The POD names of files are the plain basenames
+with any Perl-like extension (.pm, .pl, .pod) stripped.
+
+=over 4
+
+=item C<-verbose =E<gt> 1>
+
+Print progress information while scanning.
+
+=item C<-perl =E<gt> 1>
+
+Apply Perl-specific heuristics to find the correct PODs. This includes
+stripping Perl-like extensions, omitting subdirectories that are numeric
+but do I<not> match the current Perl interpreter's version id, suppressing
+F<site_perl> as a module hierarchy name etc.
+
+=item C<-script =E<gt> 1>
+
+Search for PODs in the current Perl interpreter's installation
+B<scriptdir>. This is taken from the local L<Config|Config> module.
+
+=item C<-inc =E<gt> 1>
+
+Search for PODs in the current Perl interpreter's I<@INC> paths. This
+automatically considers paths specified in the C<PERL5LIB> environment
+as this is included in I<@INC> by the Perl interpreter itself.
+
+=back
+
+=cut
+
+# return a hash of the POD files found
+# first argument may be a hashref (options),
+# rest is a list of directories to search recursively
+sub pod_find
+{
+ my %opts;
+ if(ref $_[0]) {
+ %opts = %{shift()};
+ }
+
+ $opts{-verbose} ||= 0;
+ $opts{-perl} ||= 0;
+
+ my (@search) = @_;
+
+ if($opts{-script}) {
+ require Config;
+ push(@search, $Config::Config{scriptdir})
+ if -d $Config::Config{scriptdir};
+ $opts{-perl} = 1;
+ }
+
+ if($opts{-inc}) {
+ if ($^O eq 'MacOS') {
+ # tolerate '.', './some_dir' and '(../)+some_dir' on Mac OS
+ my @new_INC = @INC;
+ for (@new_INC) {
+ if ( $_ eq '.' ) {
+ $_ = ':';
+ } elsif ( $_ =~ s{^((?:\.\./)+)}{':' x (length($1)/3)}e ) {
+ $_ = ':'. $_;
+ } else {
+ $_ =~ s{^\./}{:};
+ }
+ }
+ push(@search, grep($_ ne File::Spec->curdir, @new_INC));
+ } else {
+ my %seen;
+ my $curdir = File::Spec->curdir;
+ foreach(@INC) {
+ next if $_ eq $curdir;
+ my $path = abs_path($_);
+ push(@search, $path) unless $seen{$path}++;
+ }
+ }
+
+ $opts{-perl} = 1;
+ }
+
+ if($opts{-perl}) {
+ require Config;
+ # this code simplifies the POD name for Perl modules:
+ # * remove "site_perl"
+ # * remove e.g. "i586-linux" (from 'archname')
+ # * remove e.g. 5.00503
+ # * remove pod/ if followed by *.pod (e.g. in pod/perlfunc.pod)
+
+ # Mac OS:
+ # * remove ":?site_perl:"
+ # * remove :?pod: if followed by *.pod (e.g. in :pod:perlfunc.pod)
+
+ if ($^O eq 'MacOS') {
+ $SIMPLIFY_RX =
+ qq!^(?i:\:?site_perl\:|\:?pod\:(?=.*?\\.pod\\z))*!;
+ } else {
+ $SIMPLIFY_RX =
+ qq!^(?i:site(_perl)?/|\Q$Config::Config{archname}\E/|\\d+\\.\\d+([_.]?\\d+)?/|pod/(?=.*?\\.pod\\z))*!;
+ }
+ }
+
+ my %dirs_visited;
+ my %pods;
+ my %names;
+ my $pwd = cwd();
+
+ foreach my $try (@search) {
+ unless(File::Spec->file_name_is_absolute($try)) {
+ # make path absolute
+ $try = File::Spec->catfile($pwd,$try);
+ }
+ # simplify path
+ # on VMS canonpath will vmsify:[the.path], but File::Find::find
+ # wants /unixy/paths
+ if ($^O eq 'VMS') {
+ $try = VMS::Filespec::unixify($try);
+ }
+ else {
+ $try = File::Spec->canonpath($try);
+ }
+ my $name;
+ if(-f $try) {
+ if($name = _check_and_extract_name($try, $opts{-verbose})) {
+ _check_for_duplicates($try, $name, \%names, \%pods);
+ }
+ next;
+ }
+ my $root_rx = $^O eq 'MacOS' ? qq!^\Q$try\E! : qq!^\Q$try\E/!;
+ $root_rx=~ s|//$|/|; # remove trailing double slash
+ File::Find::find( sub {
+ my $item = $File::Find::name;
+ if(-d) {
+ if($item =~ m{/(?:RCS|CVS|SCCS|\.svn)$}) {
+ $File::Find::prune = 1;
+ return;
+ }
+ elsif($dirs_visited{$item}) {
+ warn "Directory '$item' already seen, skipping.\n"
+ if($opts{-verbose});
+ $File::Find::prune = 1;
+ return;
+ }
+ else {
+ $dirs_visited{$item} = 1;
+ }
+ if($opts{-perl} && /^(\d+\.[\d_]+)\z/s && eval "$1" != $]) {
+ $File::Find::prune = 1;
+ warn "Perl $] version mismatch on $_, skipping.\n"
+ if($opts{-verbose});
+ }
+ return;
+ }
+ if($name = _check_and_extract_name($item, $opts{-verbose}, $root_rx)) {
+ _check_for_duplicates($item, $name, \%names, \%pods);
+ }
+ }, $try); # end of File::Find::find
+ }
+ chdir $pwd;
+ return %pods;
+}
+
+sub _check_for_duplicates {
+ my ($file, $name, $names_ref, $pods_ref) = @_;
+ if($$names_ref{$name}) {
+ warn "Duplicate POD found (shadowing?): $name ($file)\n";
+ warn ' Already seen in ',
+ join(' ', grep($$pods_ref{$_} eq $name, keys %$pods_ref)),"\n";
+ }
+ else {
+ $$names_ref{$name} = 1;
+ }
+ return $$pods_ref{$file} = $name;
+}
+
+sub _check_and_extract_name {
+ my ($file, $verbose, $root_rx) = @_;
+
+ # check extension or executable flag
+ # this involves testing the .bat extension on Win32!
+ unless(-f $file && -T $file && ($file =~ /\.(pod|pm|plx?)\z/i || -x $file )) {
+ return;
+ }
+
+ return unless contains_pod($file,$verbose);
+
+ # strip non-significant path components
+ # TODO what happens on e.g. Win32?
+ my $name = $file;
+ if(defined $root_rx) {
+ $name =~ s/$root_rx//is;
+ $name =~ s/$SIMPLIFY_RX//is if(defined $SIMPLIFY_RX);
+ }
+ else {
+ if ($^O eq 'MacOS') {
+ $name =~ s/^.*://s;
+ } else {
+ $name =~ s{^.*/}{}s;
+ }
+ }
+ _simplify($name);
+ $name =~ s{/+}{::}g;
+ if ($^O eq 'MacOS') {
+ $name =~ s{:+}{::}g; # : -> ::
+ } else {
+ $name =~ s{/+}{::}g; # / -> ::
+ }
+ return $name;
+}
+
+=head2 C<simplify_name( $str )>
+
+The function B<simplify_name> is equivalent to B<basename>, but also
+strips Perl-like extensions (.pm, .pl, .pod) and extensions like
+F<.bat>, F<.cmd> on Win32 and OS/2, or F<.com> on VMS, respectively.
+
+=cut
+
+# basic simplification of the POD name:
+# basename & strip extension
+sub simplify_name {
+ my ($str) = @_;
+ # remove all path components
+ if ($^O eq 'MacOS') {
+ $str =~ s/^.*://s;
+ } else {
+ $str =~ s{^.*/}{}s;
+ }
+ _simplify($str);
+ return $str;
+}
+
+# internal sub only
+sub _simplify {
+ # strip Perl's own extensions
+ $_[0] =~ s/\.(pod|pm|plx?)\z//i;
+ # strip meaningless extensions on Win32 and OS/2
+ $_[0] =~ s/\.(bat|exe|cmd)\z//i if($^O =~ /mswin|os2/i);
+ # strip meaningless extensions on VMS
+ $_[0] =~ s/\.(com)\z//i if($^O eq 'VMS');
+}
+
+# contribution from Tim Jenness <t.jenness@jach.hawaii.edu>
+
+=head2 C<pod_where( { %opts }, $pod )>
+
+Returns the location of a pod document given a search directory
+and a module (e.g. C<File::Find>) or script (e.g. C<perldoc>) name.
+
+Options:
+
+=over 4
+
+=item C<-inc =E<gt> 1>
+
+Search @INC for the pod and also the C<scriptdir> defined in the
+L<Config|Config> module.
+
+=item C<-dirs =E<gt> [ $dir1, $dir2, ... ]>
+
+Reference to an array of search directories. These are searched in order
+before looking in C<@INC> (if B<-inc>). Current directory is used if
+none are specified.
+
+=item C<-verbose =E<gt> 1>
+
+List directories as they are searched
+
+=back
+
+Returns the full path of the first occurrence to the file.
+Package names (eg 'A::B') are automatically converted to directory
+names in the selected directory. (eg on unix 'A::B' is converted to
+'A/B'). Additionally, '.pm', '.pl' and '.pod' are appended to the
+search automatically if required.
+
+A subdirectory F<pod/> is also checked if it exists in any of the given
+search directories. This ensures that e.g. L<perlfunc|perlfunc> is
+found.
+
+It is assumed that if a module name is supplied, that that name
+matches the file name. Pods are not opened to check for the 'NAME'
+entry.
+
+A check is made to make sure that the file that is found does
+contain some pod documentation.
+
+=cut
+
+sub pod_where {
+
+ # default options
+ my %options = (
+ '-inc' => 0,
+ '-verbose' => 0,
+ '-dirs' => [ File::Spec->curdir ],
+ );
+
+ # Check for an options hash as first argument
+ if (defined $_[0] && ref($_[0]) eq 'HASH') {
+ my $opt = shift;
+
+ # Merge default options with supplied options
+ %options = (%options, %$opt);
+ }
+
+ # Check usage
+ carp 'Usage: pod_where({options}, $pod)' unless (scalar(@_));
+
+ # Read argument
+ my $pod = shift;
+
+ # Split on :: and then join the name together using File::Spec
+ my @parts = split (/::/, $pod);
+
+ # Get full directory list
+ my @search_dirs = @{ $options{'-dirs'} };
+
+ if ($options{'-inc'}) {
+
+ require Config;
+
+ # Add @INC
+ if ($^O eq 'MacOS' && $options{'-inc'}) {
+ # tolerate '.', './some_dir' and '(../)+some_dir' on Mac OS
+ my @new_INC = @INC;
+ for (@new_INC) {
+ if ( $_ eq '.' ) {
+ $_ = ':';
+ } elsif ( $_ =~ s{^((?:\.\./)+)}{':' x (length($1)/3)}e ) {
+ $_ = ':'. $_;
+ } else {
+ $_ =~ s{^\./}{:};
+ }
+ }
+ push (@search_dirs, @new_INC);
+ } elsif ($options{'-inc'}) {
+ push (@search_dirs, @INC);
+ }
+
+ # Add location of pod documentation for perl man pages (eg perlfunc)
+ # This is a pod directory in the private install tree
+ #my $perlpoddir = File::Spec->catdir($Config::Config{'installprivlib'},
+ # 'pod');
+ #push (@search_dirs, $perlpoddir)
+ # if -d $perlpoddir;
+
+ # Add location of binaries such as pod2text
+ push (@search_dirs, $Config::Config{'scriptdir'})
+ if -d $Config::Config{'scriptdir'};
+ }
+
+ warn 'Search path is: '.join(' ', @search_dirs)."\n"
+ if $options{'-verbose'};
+
+ # Loop over directories
+ Dir: foreach my $dir ( @search_dirs ) {
+
+ # Don't bother if can't find the directory
+ if (-d $dir) {
+ warn "Looking in directory $dir\n"
+ if $options{'-verbose'};
+
+ # Now concatenate this directory with the pod we are searching for
+ my $fullname = File::Spec->catfile($dir, @parts);
+ $fullname = VMS::Filespec::unixify($fullname) if $^O eq 'VMS';
+ warn "Filename is now $fullname\n"
+ if $options{'-verbose'};
+
+ # Loop over possible extensions
+ foreach my $ext ('', '.pod', '.pm', '.pl') {
+ my $fullext = $fullname . $ext;
+ if (-f $fullext &&
+ contains_pod($fullext, $options{'-verbose'}) ) {
+ warn "FOUND: $fullext\n" if $options{'-verbose'};
+ return $fullext;
+ }
+ }
+ } else {
+ warn "Directory $dir does not exist\n"
+ if $options{'-verbose'};
+ next Dir;
+ }
+ # for some strange reason the path on MacOS/darwin/cygwin is
+ # 'pods' not 'pod'
+ # this could be the case also for other systems that
+ # have a case-tolerant file system, but File::Spec
+ # does not recognize 'darwin' yet. And cygwin also has "pods",
+ # but is not case tolerant. Oh well...
+ if((File::Spec->case_tolerant || $^O =~ /macos|darwin|cygwin/i)
+ && -d File::Spec->catdir($dir,'pods')) {
+ $dir = File::Spec->catdir($dir,'pods');
+ redo Dir;
+ }
+ if(-d File::Spec->catdir($dir,'pod')) {
+ $dir = File::Spec->catdir($dir,'pod');
+ redo Dir;
+ }
+ }
+ # No match;
+ return;
+}
+
+=head2 C<contains_pod( $file , $verbose )>
+
+Returns true if the supplied filename (not POD module) contains some pod
+information.
+
+=cut
+
+sub contains_pod {
+ my $file = shift;
+ my $verbose = 0;
+ $verbose = shift if @_;
+
+ # check for one line of POD
+ my $podfh;
+ if ($] < 5.006) {
+ $podfh = gensym();
+ }
+
+ unless(open($podfh,"<$file")) {
+ warn "Error: $file is unreadable: $!\n";
+ return;
+ }
+
+ local $/ = undef;
+ my $pod = <$podfh>;
+ close($podfh) || die "Error closing $file: $!\n";
+ unless($pod =~ /^=(head\d|pod|over|item|cut)\b/m) {
+ warn "No POD in $file, skipping.\n"
+ if($verbose);
+ return 0;
+ }
+
+ return 1;
+}
+
+=head1 AUTHOR
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Marek Rouchal E<lt>marekr@cpan.orgE<gt>,
+heavily borrowing code from Nick Ing-Simmons' PodToHtml.
+
+Tim Jenness E<lt>t.jenness@jach.hawaii.eduE<gt> provided
+C<pod_where> and C<contains_pod>.
+
+B<Pod::Find> is part of the L<Pod::Parser> distribution.
+
+=head1 SEE ALSO
+
+L<Pod::Parser>, L<Pod::Checker>, L<perldoc>
+
+=cut
+
+1;
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/InputObjects.pm b/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/InputObjects.pm
index 2ed71fa2551..c19d4c550bd 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/InputObjects.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/InputObjects.pm
@@ -1,942 +1,942 @@
-#############################################################################
-# Pod/InputObjects.pm -- package which defines objects for input streams
-# and paragraphs and commands when parsing POD docs.
-#
-# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
-# This file is part of "PodParser". PodParser is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::InputObjects;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '1.51'; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-
-#############################################################################
-
-=head1 NAME
-
-Pod::InputObjects - objects representing POD input paragraphs, commands, etc.
-
-=head1 SYNOPSIS
-
- use Pod::InputObjects;
-
-=head1 REQUIRES
-
-perl5.004, Carp
-
-=head1 EXPORTS
-
-Nothing.
-
-=head1 DESCRIPTION
-
-This module defines some basic input objects used by B<Pod::Parser> when
-reading and parsing POD text from an input source. The following objects
-are defined:
-
-=begin __PRIVATE__
-
-=over 4
-
-=item package B<Pod::InputSource>
-
-An object corresponding to a source of POD input text. It is mostly a
-wrapper around a filehandle or C<IO::Handle>-type object (or anything
-that implements the C<getline()> method) which keeps track of some
-additional information relevant to the parsing of PODs.
-
-=back
-
-=end __PRIVATE__
-
-=over 4
-
-=item package B<Pod::Paragraph>
-
-An object corresponding to a paragraph of POD input text. It may be a
-plain paragraph, a verbatim paragraph, or a command paragraph (see
-L<perlpod>).
-
-=item package B<Pod::InteriorSequence>
-
-An object corresponding to an interior sequence command from the POD
-input text (see L<perlpod>).
-
-=item package B<Pod::ParseTree>
-
-An object corresponding to a tree of parsed POD text. Each "node" in
-a parse-tree (or I<ptree>) is either a text-string or a reference to
-a B<Pod::InteriorSequence> object. The nodes appear in the parse-tree
-in the order in which they were parsed from left-to-right.
-
-=back
-
-Each of these input objects are described in further detail in the
-sections which follow.
-
-=cut
-
-#############################################################################
-
-package Pod::InputSource;
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head1 B<Pod::InputSource>
-
-This object corresponds to an input source or stream of POD
-documentation. When parsing PODs, it is necessary to associate and store
-certain context information with each input source. All of this
-information is kept together with the stream itself in one of these
-C<Pod::InputSource> objects. Each such object is merely a wrapper around
-an C<IO::Handle> object of some kind (or at least something that
-implements the C<getline()> method). They have the following
-methods/attributes:
-
-=end __PRIVATE__
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head2 B<new()>
-
- my $pod_input1 = Pod::InputSource->new(-handle => $filehandle);
- my $pod_input2 = new Pod::InputSource(-handle => $filehandle,
- -name => $name);
- my $pod_input3 = new Pod::InputSource(-handle => \*STDIN);
- my $pod_input4 = Pod::InputSource->new(-handle => \*STDIN,
- -name => "(STDIN)");
-
-This is a class method that constructs a C<Pod::InputSource> object and
-returns a reference to the new input source object. It takes one or more
-keyword arguments in the form of a hash. The keyword C<-handle> is
-required and designates the corresponding input handle. The keyword
-C<-name> is optional and specifies the name associated with the input
-handle (typically a file name).
-
-=end __PRIVATE__
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
-
- ## Any remaining arguments are treated as initial values for the
- ## hash that is used to represent this object. Note that we default
- ## certain values by specifying them *before* the arguments passed.
- ## If they are in the argument list, they will override the defaults.
- my $self = { -name => '(unknown)',
- -handle => undef,
- -was_cutting => 0,
- @_ };
-
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head2 B<name()>
-
- my $filename = $pod_input->name();
- $pod_input->name($new_filename_to_use);
-
-This method gets/sets the name of the input source (usually a filename).
-If no argument is given, it returns a string containing the name of
-the input source; otherwise it sets the name of the input source to the
-contents of the given argument.
-
-=end __PRIVATE__
-
-=cut
-
-sub name {
- (@_ > 1) and $_[0]->{'-name'} = $_[1];
- return $_[0]->{'-name'};
-}
-
-## allow 'filename' as an alias for 'name'
-*filename = \&name;
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head2 B<handle()>
-
- my $handle = $pod_input->handle();
-
-Returns a reference to the handle object from which input is read (the
-one used to contructed this input source object).
-
-=end __PRIVATE__
-
-=cut
-
-sub handle {
- return $_[0]->{'-handle'};
-}
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head2 B<was_cutting()>
-
- print "Yes.\n" if ($pod_input->was_cutting());
-
-The value of the C<cutting> state (that the B<cutting()> method would
-have returned) immediately before any input was read from this input
-stream. After all input from this stream has been read, the C<cutting>
-state is restored to this value.
-
-=end __PRIVATE__
-
-=cut
-
-sub was_cutting {
- (@_ > 1) and $_[0]->{-was_cutting} = $_[1];
- return $_[0]->{-was_cutting};
-}
-
-##---------------------------------------------------------------------------
-
-#############################################################################
-
-package Pod::Paragraph;
-
-##---------------------------------------------------------------------------
-
-=head1 B<Pod::Paragraph>
-
-An object representing a paragraph of POD input text.
-It has the following methods/attributes:
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head2 Pod::Paragraph-E<gt>B<new()>
-
- my $pod_para1 = Pod::Paragraph->new(-text => $text);
- my $pod_para2 = Pod::Paragraph->new(-name => $cmd,
- -text => $text);
- my $pod_para3 = new Pod::Paragraph(-text => $text);
- my $pod_para4 = new Pod::Paragraph(-name => $cmd,
- -text => $text);
- my $pod_para5 = Pod::Paragraph->new(-name => $cmd,
- -text => $text,
- -file => $filename,
- -line => $line_number);
-
-This is a class method that constructs a C<Pod::Paragraph> object and
-returns a reference to the new paragraph object. It may be given one or
-two keyword arguments. The C<-text> keyword indicates the corresponding
-text of the POD paragraph. The C<-name> keyword indicates the name of
-the corresponding POD command, such as C<head1> or C<item> (it should
-I<not> contain the C<=> prefix); this is needed only if the POD
-paragraph corresponds to a command paragraph. The C<-file> and C<-line>
-keywords indicate the filename and line number corresponding to the
-beginning of the paragraph
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
-
- ## Any remaining arguments are treated as initial values for the
- ## hash that is used to represent this object. Note that we default
- ## certain values by specifying them *before* the arguments passed.
- ## If they are in the argument list, they will override the defaults.
- my $self = {
- -name => undef,
- -text => (@_ == 1) ? shift : undef,
- -file => '<unknown-file>',
- -line => 0,
- -prefix => '=',
- -separator => ' ',
- -ptree => [],
- @_
- };
-
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<cmd_name()>
-
- my $para_cmd = $pod_para->cmd_name();
-
-If this paragraph is a command paragraph, then this method will return
-the name of the command (I<without> any leading C<=> prefix).
-
-=cut
-
-sub cmd_name {
- (@_ > 1) and $_[0]->{'-name'} = $_[1];
- return $_[0]->{'-name'};
-}
-
-## let name() be an alias for cmd_name()
-*name = \&cmd_name;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<text()>
-
- my $para_text = $pod_para->text();
-
-This method will return the corresponding text of the paragraph.
-
-=cut
-
-sub text {
- (@_ > 1) and $_[0]->{'-text'} = $_[1];
- return $_[0]->{'-text'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<raw_text()>
-
- my $raw_pod_para = $pod_para->raw_text();
-
-This method will return the I<raw> text of the POD paragraph, exactly
-as it appeared in the input.
-
-=cut
-
-sub raw_text {
- return $_[0]->{'-text'} unless (defined $_[0]->{'-name'});
- return $_[0]->{'-prefix'} . $_[0]->{'-name'} .
- $_[0]->{'-separator'} . $_[0]->{'-text'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<cmd_prefix()>
-
- my $prefix = $pod_para->cmd_prefix();
-
-If this paragraph is a command paragraph, then this method will return
-the prefix used to denote the command (which should be the string "="
-or "==").
-
-=cut
-
-sub cmd_prefix {
- return $_[0]->{'-prefix'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<cmd_separator()>
-
- my $separator = $pod_para->cmd_separator();
-
-If this paragraph is a command paragraph, then this method will return
-the text used to separate the command name from the rest of the
-paragraph (if any).
-
-=cut
-
-sub cmd_separator {
- return $_[0]->{'-separator'};
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<parse_tree()>
-
- my $ptree = $pod_parser->parse_text( $pod_para->text() );
- $pod_para->parse_tree( $ptree );
- $ptree = $pod_para->parse_tree();
-
-This method will get/set the corresponding parse-tree of the paragraph's text.
-
-=cut
-
-sub parse_tree {
- (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
- return $_[0]->{'-ptree'};
-}
-
-## let ptree() be an alias for parse_tree()
-*ptree = \&parse_tree;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_para-E<gt>B<file_line()>
-
- my ($filename, $line_number) = $pod_para->file_line();
- my $position = $pod_para->file_line();
-
-Returns the current filename and line number for the paragraph
-object. If called in a list context, it returns a list of two
-elements: first the filename, then the line number. If called in
-a scalar context, it returns a string containing the filename, followed
-by a colon (':'), followed by the line number.
-
-=cut
-
-sub file_line {
- my @loc = ($_[0]->{'-file'} || '<unknown-file>',
- $_[0]->{'-line'} || 0);
- return (wantarray) ? @loc : join(':', @loc);
-}
-
-##---------------------------------------------------------------------------
-
-#############################################################################
-
-package Pod::InteriorSequence;
-
-##---------------------------------------------------------------------------
-
-=head1 B<Pod::InteriorSequence>
-
-An object representing a POD interior sequence command.
-It has the following methods/attributes:
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head2 Pod::InteriorSequence-E<gt>B<new()>
-
- my $pod_seq1 = Pod::InteriorSequence->new(-name => $cmd
- -ldelim => $delimiter);
- my $pod_seq2 = new Pod::InteriorSequence(-name => $cmd,
- -ldelim => $delimiter);
- my $pod_seq3 = new Pod::InteriorSequence(-name => $cmd,
- -ldelim => $delimiter,
- -file => $filename,
- -line => $line_number);
-
- my $pod_seq4 = new Pod::InteriorSequence(-name => $cmd, $ptree);
- my $pod_seq5 = new Pod::InteriorSequence($cmd, $ptree);
-
-This is a class method that constructs a C<Pod::InteriorSequence> object
-and returns a reference to the new interior sequence object. It should
-be given two keyword arguments. The C<-ldelim> keyword indicates the
-corresponding left-delimiter of the interior sequence (e.g. 'E<lt>').
-The C<-name> keyword indicates the name of the corresponding interior
-sequence command, such as C<I> or C<B> or C<C>. The C<-file> and
-C<-line> keywords indicate the filename and line number corresponding
-to the beginning of the interior sequence. If the C<$ptree> argument is
-given, it must be the last argument, and it must be either string, or
-else an array-ref suitable for passing to B<Pod::ParseTree::new> (or
-it may be a reference to a Pod::ParseTree object).
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
-
- ## See if first argument has no keyword
- if (((@_ <= 2) or (@_ % 2)) and $_[0] !~ /^-\w/) {
- ## Yup - need an implicit '-name' before first parameter
- unshift @_, '-name';
- }
-
- ## See if odd number of args
- if ((@_ % 2) != 0) {
- ## Yup - need an implicit '-ptree' before the last parameter
- splice @_, $#_, 0, '-ptree';
- }
-
- ## Any remaining arguments are treated as initial values for the
- ## hash that is used to represent this object. Note that we default
- ## certain values by specifying them *before* the arguments passed.
- ## If they are in the argument list, they will override the defaults.
- my $self = {
- -name => (@_ == 1) ? $_[0] : undef,
- -file => '<unknown-file>',
- -line => 0,
- -ldelim => '<',
- -rdelim => '>',
- @_
- };
-
- ## Initialize contents if they havent been already
- my $ptree = $self->{'-ptree'} || new Pod::ParseTree();
- if ( ref $ptree =~ /^(ARRAY)?$/ ) {
- ## We have an array-ref, or a normal scalar. Pass it as an
- ## an argument to the ptree-constructor
- $ptree = new Pod::ParseTree($1 ? [$ptree] : $ptree);
- }
- $self->{'-ptree'} = $ptree;
-
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<cmd_name()>
-
- my $seq_cmd = $pod_seq->cmd_name();
-
-The name of the interior sequence command.
-
-=cut
-
-sub cmd_name {
- (@_ > 1) and $_[0]->{'-name'} = $_[1];
- return $_[0]->{'-name'};
-}
-
-## let name() be an alias for cmd_name()
-*name = \&cmd_name;
-
-##---------------------------------------------------------------------------
-
-## Private subroutine to set the parent pointer of all the given
-## children that are interior-sequences to be $self
-
-sub _set_child2parent_links {
- my ($self, @children) = @_;
- ## Make sure any sequences know who their parent is
- for (@children) {
- next unless (length and ref and ref ne 'SCALAR');
- if (UNIVERSAL::isa($_, 'Pod::InteriorSequence') or
- UNIVERSAL::can($_, 'nested'))
- {
- $_->nested($self);
- }
- }
-}
-
-## Private subroutine to unset child->parent links
-
-sub _unset_child2parent_links {
- my $self = shift;
- $self->{'-parent_sequence'} = undef;
- my $ptree = $self->{'-ptree'};
- for (@$ptree) {
- next unless (length and ref and ref ne 'SCALAR');
- $_->_unset_child2parent_links()
- if UNIVERSAL::isa($_, 'Pod::InteriorSequence');
- }
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<prepend()>
-
- $pod_seq->prepend($text);
- $pod_seq1->prepend($pod_seq2);
-
-Prepends the given string or parse-tree or sequence object to the parse-tree
-of this interior sequence.
-
-=cut
-
-sub prepend {
- my $self = shift;
- $self->{'-ptree'}->prepend(@_);
- _set_child2parent_links($self, @_);
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<append()>
-
- $pod_seq->append($text);
- $pod_seq1->append($pod_seq2);
-
-Appends the given string or parse-tree or sequence object to the parse-tree
-of this interior sequence.
-
-=cut
-
-sub append {
- my $self = shift;
- $self->{'-ptree'}->append(@_);
- _set_child2parent_links($self, @_);
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<nested()>
-
- $outer_seq = $pod_seq->nested || print "not nested";
-
-If this interior sequence is nested inside of another interior
-sequence, then the outer/parent sequence that contains it is
-returned. Otherwise C<undef> is returned.
-
-=cut
-
-sub nested {
- my $self = shift;
- (@_ == 1) and $self->{'-parent_sequence'} = shift;
- return $self->{'-parent_sequence'} || undef;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<raw_text()>
-
- my $seq_raw_text = $pod_seq->raw_text();
-
-This method will return the I<raw> text of the POD interior sequence,
-exactly as it appeared in the input.
-
-=cut
-
-sub raw_text {
- my $self = shift;
- my $text = $self->{'-name'} . $self->{'-ldelim'};
- for ( $self->{'-ptree'}->children ) {
- $text .= (ref $_) ? $_->raw_text : $_;
- }
- $text .= $self->{'-rdelim'};
- return $text;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<left_delimiter()>
-
- my $ldelim = $pod_seq->left_delimiter();
-
-The leftmost delimiter beginning the argument text to the interior
-sequence (should be "<").
-
-=cut
-
-sub left_delimiter {
- (@_ > 1) and $_[0]->{'-ldelim'} = $_[1];
- return $_[0]->{'-ldelim'};
-}
-
-## let ldelim() be an alias for left_delimiter()
-*ldelim = \&left_delimiter;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<right_delimiter()>
-
-The rightmost delimiter beginning the argument text to the interior
-sequence (should be ">").
-
-=cut
-
-sub right_delimiter {
- (@_ > 1) and $_[0]->{'-rdelim'} = $_[1];
- return $_[0]->{'-rdelim'};
-}
-
-## let rdelim() be an alias for right_delimiter()
-*rdelim = \&right_delimiter;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<parse_tree()>
-
- my $ptree = $pod_parser->parse_text($paragraph_text);
- $pod_seq->parse_tree( $ptree );
- $ptree = $pod_seq->parse_tree();
-
-This method will get/set the corresponding parse-tree of the interior
-sequence's text.
-
-=cut
-
-sub parse_tree {
- (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
- return $_[0]->{'-ptree'};
-}
-
-## let ptree() be an alias for parse_tree()
-*ptree = \&parse_tree;
-
-##---------------------------------------------------------------------------
-
-=head2 $pod_seq-E<gt>B<file_line()>
-
- my ($filename, $line_number) = $pod_seq->file_line();
- my $position = $pod_seq->file_line();
-
-Returns the current filename and line number for the interior sequence
-object. If called in a list context, it returns a list of two
-elements: first the filename, then the line number. If called in
-a scalar context, it returns a string containing the filename, followed
-by a colon (':'), followed by the line number.
-
-=cut
-
-sub file_line {
- my @loc = ($_[0]->{'-file'} || '<unknown-file>',
- $_[0]->{'-line'} || 0);
- return (wantarray) ? @loc : join(':', @loc);
-}
-
-##---------------------------------------------------------------------------
-
-=head2 Pod::InteriorSequence::B<DESTROY()>
-
-This method performs any necessary cleanup for the interior-sequence.
-If you override this method then it is B<imperative> that you invoke
-the parent method from within your own method, otherwise
-I<interior-sequence storage will not be reclaimed upon destruction!>
-
-=cut
-
-sub DESTROY {
- ## We need to get rid of all child->parent pointers throughout the
- ## tree so their reference counts will go to zero and they can be
- ## garbage-collected
- _unset_child2parent_links(@_);
-}
-
-##---------------------------------------------------------------------------
-
-#############################################################################
-
-package Pod::ParseTree;
-
-##---------------------------------------------------------------------------
-
-=head1 B<Pod::ParseTree>
-
-This object corresponds to a tree of parsed POD text. As POD text is
-scanned from left to right, it is parsed into an ordered list of
-text-strings and B<Pod::InteriorSequence> objects (in order of
-appearance). A B<Pod::ParseTree> object corresponds to this list of
-strings and sequences. Each interior sequence in the parse-tree may
-itself contain a parse-tree (since interior sequences may be nested).
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head2 Pod::ParseTree-E<gt>B<new()>
-
- my $ptree1 = Pod::ParseTree->new;
- my $ptree2 = new Pod::ParseTree;
- my $ptree4 = Pod::ParseTree->new($array_ref);
- my $ptree3 = new Pod::ParseTree($array_ref);
-
-This is a class method that constructs a C<Pod::Parse_tree> object and
-returns a reference to the new parse-tree. If a single-argument is given,
-it must be a reference to an array, and is used to initialize the root
-(top) of the parse tree.
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my $this = shift;
- my $class = ref($this) || $this;
-
- my $self = (@_ == 1 and ref $_[0]) ? $_[0] : [];
-
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<top()>
-
- my $top_node = $ptree->top();
- $ptree->top( $top_node );
- $ptree->top( @children );
-
-This method gets/sets the top node of the parse-tree. If no arguments are
-given, it returns the topmost node in the tree (the root), which is also
-a B<Pod::ParseTree>. If it is given a single argument that is a reference,
-then the reference is assumed to a parse-tree and becomes the new top node.
-Otherwise, if arguments are given, they are treated as the new list of
-children for the top node.
-
-=cut
-
-sub top {
- my $self = shift;
- if (@_ > 0) {
- @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_;
- }
- return $self;
-}
-
-## let parse_tree() & ptree() be aliases for the 'top' method
-*parse_tree = *ptree = \&top;
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<children()>
-
-This method gets/sets the children of the top node in the parse-tree.
-If no arguments are given, it returns the list (array) of children
-(each of which should be either a string or a B<Pod::InteriorSequence>.
-Otherwise, if arguments are given, they are treated as the new list of
-children for the top node.
-
-=cut
-
-sub children {
- my $self = shift;
- if (@_ > 0) {
- @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_;
- }
- return @{ $self };
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<prepend()>
-
-This method prepends the given text or parse-tree to the current parse-tree.
-If the first item on the parse-tree is text and the argument is also text,
-then the text is prepended to the first item (not added as a separate string).
-Otherwise the argument is added as a new string or parse-tree I<before>
-the current one.
-
-=cut
-
-use vars qw(@ptree); ## an alias used for performance reasons
-
-sub prepend {
- my $self = shift;
- local *ptree = $self;
- for (@_) {
- next unless length;
- if (@ptree && !(ref $ptree[0]) && !(ref $_)) {
- $ptree[0] = $_ . $ptree[0];
- }
- else {
- unshift @ptree, $_;
- }
- }
-}
-
-##---------------------------------------------------------------------------
-
-=head2 $ptree-E<gt>B<append()>
-
-This method appends the given text or parse-tree to the current parse-tree.
-If the last item on the parse-tree is text and the argument is also text,
-then the text is appended to the last item (not added as a separate string).
-Otherwise the argument is added as a new string or parse-tree I<after>
-the current one.
-
-=cut
-
-sub append {
- my $self = shift;
- local *ptree = $self;
- my $can_append = @ptree && !(ref $ptree[-1]);
- for (@_) {
- if (ref) {
- push @ptree, $_;
- }
- elsif(!length) {
- next;
- }
- elsif ($can_append) {
- $ptree[-1] .= $_;
- }
- else {
- push @ptree, $_;
- }
- }
-}
-
-=head2 $ptree-E<gt>B<raw_text()>
-
- my $ptree_raw_text = $ptree->raw_text();
-
-This method will return the I<raw> text of the POD parse-tree
-exactly as it appeared in the input.
-
-=cut
-
-sub raw_text {
- my $self = shift;
- my $text = '';
- for ( @$self ) {
- $text .= (ref $_) ? $_->raw_text : $_;
- }
- return $text;
-}
-
-##---------------------------------------------------------------------------
-
-## Private routines to set/unset child->parent links
-
-sub _unset_child2parent_links {
- my $self = shift;
- local *ptree = $self;
- for (@ptree) {
- next unless (defined and length and ref and ref ne 'SCALAR');
- $_->_unset_child2parent_links()
- if UNIVERSAL::isa($_, 'Pod::InteriorSequence');
- }
-}
-
-sub _set_child2parent_links {
- ## nothing to do, Pod::ParseTrees cant have parent pointers
-}
-
-=head2 Pod::ParseTree::B<DESTROY()>
-
-This method performs any necessary cleanup for the parse-tree.
-If you override this method then it is B<imperative>
-that you invoke the parent method from within your own method,
-otherwise I<parse-tree storage will not be reclaimed upon destruction!>
-
-=cut
-
-sub DESTROY {
- ## We need to get rid of all child->parent pointers throughout the
- ## tree so their reference counts will go to zero and they can be
- ## garbage-collected
- _unset_child2parent_links(@_);
-}
-
-#############################################################################
-
-=head1 SEE ALSO
-
-B<Pod::InputObjects> is part of the L<Pod::Parser> distribution.
-
-See L<Pod::Parser>, L<Pod::Select>
-
-=head1 AUTHOR
-
-Please report bugs using L<http://rt.cpan.org>.
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt>
-
-=cut
-
-1;
+#############################################################################
+# Pod/InputObjects.pm -- package which defines objects for input streams
+# and paragraphs and commands when parsing POD docs.
+#
+# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::InputObjects;
+use strict;
+
+use vars qw($VERSION);
+$VERSION = '1.60'; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+#############################################################################
+
+=head1 NAME
+
+Pod::InputObjects - objects representing POD input paragraphs, commands, etc.
+
+=head1 SYNOPSIS
+
+ use Pod::InputObjects;
+
+=head1 REQUIRES
+
+perl5.004, Carp
+
+=head1 EXPORTS
+
+Nothing.
+
+=head1 DESCRIPTION
+
+This module defines some basic input objects used by B<Pod::Parser> when
+reading and parsing POD text from an input source. The following objects
+are defined:
+
+=begin __PRIVATE__
+
+=over 4
+
+=item package B<Pod::InputSource>
+
+An object corresponding to a source of POD input text. It is mostly a
+wrapper around a filehandle or C<IO::Handle>-type object (or anything
+that implements the C<getline()> method) which keeps track of some
+additional information relevant to the parsing of PODs.
+
+=back
+
+=end __PRIVATE__
+
+=over 4
+
+=item package B<Pod::Paragraph>
+
+An object corresponding to a paragraph of POD input text. It may be a
+plain paragraph, a verbatim paragraph, or a command paragraph (see
+L<perlpod>).
+
+=item package B<Pod::InteriorSequence>
+
+An object corresponding to an interior sequence command from the POD
+input text (see L<perlpod>).
+
+=item package B<Pod::ParseTree>
+
+An object corresponding to a tree of parsed POD text. Each "node" in
+a parse-tree (or I<ptree>) is either a text-string or a reference to
+a B<Pod::InteriorSequence> object. The nodes appear in the parse-tree
+in the order in which they were parsed from left-to-right.
+
+=back
+
+Each of these input objects are described in further detail in the
+sections which follow.
+
+=cut
+
+#############################################################################
+
+package Pod::InputSource;
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head1 B<Pod::InputSource>
+
+This object corresponds to an input source or stream of POD
+documentation. When parsing PODs, it is necessary to associate and store
+certain context information with each input source. All of this
+information is kept together with the stream itself in one of these
+C<Pod::InputSource> objects. Each such object is merely a wrapper around
+an C<IO::Handle> object of some kind (or at least something that
+implements the C<getline()> method). They have the following
+methods/attributes:
+
+=end __PRIVATE__
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head2 B<new()>
+
+ my $pod_input1 = Pod::InputSource->new(-handle => $filehandle);
+ my $pod_input2 = new Pod::InputSource(-handle => $filehandle,
+ -name => $name);
+ my $pod_input3 = new Pod::InputSource(-handle => \*STDIN);
+ my $pod_input4 = Pod::InputSource->new(-handle => \*STDIN,
+ -name => "(STDIN)");
+
+This is a class method that constructs a C<Pod::InputSource> object and
+returns a reference to the new input source object. It takes one or more
+keyword arguments in the form of a hash. The keyword C<-handle> is
+required and designates the corresponding input handle. The keyword
+C<-name> is optional and specifies the name associated with the input
+handle (typically a file name).
+
+=end __PRIVATE__
+
+=cut
+
+sub new {
+ ## Determine if we were called via an object-ref or a classname
+ my $this = shift;
+ my $class = ref($this) || $this;
+
+ ## Any remaining arguments are treated as initial values for the
+ ## hash that is used to represent this object. Note that we default
+ ## certain values by specifying them *before* the arguments passed.
+ ## If they are in the argument list, they will override the defaults.
+ my $self = { -name => '(unknown)',
+ -handle => undef,
+ -was_cutting => 0,
+ @_ };
+
+ ## Bless ourselves into the desired class and perform any initialization
+ bless $self, $class;
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head2 B<name()>
+
+ my $filename = $pod_input->name();
+ $pod_input->name($new_filename_to_use);
+
+This method gets/sets the name of the input source (usually a filename).
+If no argument is given, it returns a string containing the name of
+the input source; otherwise it sets the name of the input source to the
+contents of the given argument.
+
+=end __PRIVATE__
+
+=cut
+
+sub name {
+ (@_ > 1) and $_[0]->{'-name'} = $_[1];
+ return $_[0]->{'-name'};
+}
+
+## allow 'filename' as an alias for 'name'
+*filename = \&name;
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head2 B<handle()>
+
+ my $handle = $pod_input->handle();
+
+Returns a reference to the handle object from which input is read (the
+one used to contructed this input source object).
+
+=end __PRIVATE__
+
+=cut
+
+sub handle {
+ return $_[0]->{'-handle'};
+}
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head2 B<was_cutting()>
+
+ print "Yes.\n" if ($pod_input->was_cutting());
+
+The value of the C<cutting> state (that the B<cutting()> method would
+have returned) immediately before any input was read from this input
+stream. After all input from this stream has been read, the C<cutting>
+state is restored to this value.
+
+=end __PRIVATE__
+
+=cut
+
+sub was_cutting {
+ (@_ > 1) and $_[0]->{-was_cutting} = $_[1];
+ return $_[0]->{-was_cutting};
+}
+
+##---------------------------------------------------------------------------
+
+#############################################################################
+
+package Pod::Paragraph;
+
+##---------------------------------------------------------------------------
+
+=head1 B<Pod::Paragraph>
+
+An object representing a paragraph of POD input text.
+It has the following methods/attributes:
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head2 Pod::Paragraph-E<gt>B<new()>
+
+ my $pod_para1 = Pod::Paragraph->new(-text => $text);
+ my $pod_para2 = Pod::Paragraph->new(-name => $cmd,
+ -text => $text);
+ my $pod_para3 = new Pod::Paragraph(-text => $text);
+ my $pod_para4 = new Pod::Paragraph(-name => $cmd,
+ -text => $text);
+ my $pod_para5 = Pod::Paragraph->new(-name => $cmd,
+ -text => $text,
+ -file => $filename,
+ -line => $line_number);
+
+This is a class method that constructs a C<Pod::Paragraph> object and
+returns a reference to the new paragraph object. It may be given one or
+two keyword arguments. The C<-text> keyword indicates the corresponding
+text of the POD paragraph. The C<-name> keyword indicates the name of
+the corresponding POD command, such as C<head1> or C<item> (it should
+I<not> contain the C<=> prefix); this is needed only if the POD
+paragraph corresponds to a command paragraph. The C<-file> and C<-line>
+keywords indicate the filename and line number corresponding to the
+beginning of the paragraph
+
+=cut
+
+sub new {
+ ## Determine if we were called via an object-ref or a classname
+ my $this = shift;
+ my $class = ref($this) || $this;
+
+ ## Any remaining arguments are treated as initial values for the
+ ## hash that is used to represent this object. Note that we default
+ ## certain values by specifying them *before* the arguments passed.
+ ## If they are in the argument list, they will override the defaults.
+ my $self = {
+ -name => undef,
+ -text => (@_ == 1) ? shift : undef,
+ -file => '<unknown-file>',
+ -line => 0,
+ -prefix => '=',
+ -separator => ' ',
+ -ptree => [],
+ @_
+ };
+
+ ## Bless ourselves into the desired class and perform any initialization
+ bless $self, $class;
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_para-E<gt>B<cmd_name()>
+
+ my $para_cmd = $pod_para->cmd_name();
+
+If this paragraph is a command paragraph, then this method will return
+the name of the command (I<without> any leading C<=> prefix).
+
+=cut
+
+sub cmd_name {
+ (@_ > 1) and $_[0]->{'-name'} = $_[1];
+ return $_[0]->{'-name'};
+}
+
+## let name() be an alias for cmd_name()
+*name = \&cmd_name;
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_para-E<gt>B<text()>
+
+ my $para_text = $pod_para->text();
+
+This method will return the corresponding text of the paragraph.
+
+=cut
+
+sub text {
+ (@_ > 1) and $_[0]->{'-text'} = $_[1];
+ return $_[0]->{'-text'};
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_para-E<gt>B<raw_text()>
+
+ my $raw_pod_para = $pod_para->raw_text();
+
+This method will return the I<raw> text of the POD paragraph, exactly
+as it appeared in the input.
+
+=cut
+
+sub raw_text {
+ return $_[0]->{'-text'} unless (defined $_[0]->{'-name'});
+ return $_[0]->{'-prefix'} . $_[0]->{'-name'} .
+ $_[0]->{'-separator'} . $_[0]->{'-text'};
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_para-E<gt>B<cmd_prefix()>
+
+ my $prefix = $pod_para->cmd_prefix();
+
+If this paragraph is a command paragraph, then this method will return
+the prefix used to denote the command (which should be the string "="
+or "==").
+
+=cut
+
+sub cmd_prefix {
+ return $_[0]->{'-prefix'};
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_para-E<gt>B<cmd_separator()>
+
+ my $separator = $pod_para->cmd_separator();
+
+If this paragraph is a command paragraph, then this method will return
+the text used to separate the command name from the rest of the
+paragraph (if any).
+
+=cut
+
+sub cmd_separator {
+ return $_[0]->{'-separator'};
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_para-E<gt>B<parse_tree()>
+
+ my $ptree = $pod_parser->parse_text( $pod_para->text() );
+ $pod_para->parse_tree( $ptree );
+ $ptree = $pod_para->parse_tree();
+
+This method will get/set the corresponding parse-tree of the paragraph's text.
+
+=cut
+
+sub parse_tree {
+ (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
+ return $_[0]->{'-ptree'};
+}
+
+## let ptree() be an alias for parse_tree()
+*ptree = \&parse_tree;
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_para-E<gt>B<file_line()>
+
+ my ($filename, $line_number) = $pod_para->file_line();
+ my $position = $pod_para->file_line();
+
+Returns the current filename and line number for the paragraph
+object. If called in a list context, it returns a list of two
+elements: first the filename, then the line number. If called in
+a scalar context, it returns a string containing the filename, followed
+by a colon (':'), followed by the line number.
+
+=cut
+
+sub file_line {
+ my @loc = ($_[0]->{'-file'} || '<unknown-file>',
+ $_[0]->{'-line'} || 0);
+ return (wantarray) ? @loc : join(':', @loc);
+}
+
+##---------------------------------------------------------------------------
+
+#############################################################################
+
+package Pod::InteriorSequence;
+
+##---------------------------------------------------------------------------
+
+=head1 B<Pod::InteriorSequence>
+
+An object representing a POD interior sequence command.
+It has the following methods/attributes:
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head2 Pod::InteriorSequence-E<gt>B<new()>
+
+ my $pod_seq1 = Pod::InteriorSequence->new(-name => $cmd
+ -ldelim => $delimiter);
+ my $pod_seq2 = new Pod::InteriorSequence(-name => $cmd,
+ -ldelim => $delimiter);
+ my $pod_seq3 = new Pod::InteriorSequence(-name => $cmd,
+ -ldelim => $delimiter,
+ -file => $filename,
+ -line => $line_number);
+
+ my $pod_seq4 = new Pod::InteriorSequence(-name => $cmd, $ptree);
+ my $pod_seq5 = new Pod::InteriorSequence($cmd, $ptree);
+
+This is a class method that constructs a C<Pod::InteriorSequence> object
+and returns a reference to the new interior sequence object. It should
+be given two keyword arguments. The C<-ldelim> keyword indicates the
+corresponding left-delimiter of the interior sequence (e.g. 'E<lt>').
+The C<-name> keyword indicates the name of the corresponding interior
+sequence command, such as C<I> or C<B> or C<C>. The C<-file> and
+C<-line> keywords indicate the filename and line number corresponding
+to the beginning of the interior sequence. If the C<$ptree> argument is
+given, it must be the last argument, and it must be either string, or
+else an array-ref suitable for passing to B<Pod::ParseTree::new> (or
+it may be a reference to a Pod::ParseTree object).
+
+=cut
+
+sub new {
+ ## Determine if we were called via an object-ref or a classname
+ my $this = shift;
+ my $class = ref($this) || $this;
+
+ ## See if first argument has no keyword
+ if (((@_ <= 2) or (@_ % 2)) and $_[0] !~ /^-\w/) {
+ ## Yup - need an implicit '-name' before first parameter
+ unshift @_, '-name';
+ }
+
+ ## See if odd number of args
+ if ((@_ % 2) != 0) {
+ ## Yup - need an implicit '-ptree' before the last parameter
+ splice @_, $#_, 0, '-ptree';
+ }
+
+ ## Any remaining arguments are treated as initial values for the
+ ## hash that is used to represent this object. Note that we default
+ ## certain values by specifying them *before* the arguments passed.
+ ## If they are in the argument list, they will override the defaults.
+ my $self = {
+ -name => (@_ == 1) ? $_[0] : undef,
+ -file => '<unknown-file>',
+ -line => 0,
+ -ldelim => '<',
+ -rdelim => '>',
+ @_
+ };
+
+ ## Initialize contents if they havent been already
+ my $ptree = $self->{'-ptree'} || new Pod::ParseTree();
+ if ( ref $ptree =~ /^(ARRAY)?$/ ) {
+ ## We have an array-ref, or a normal scalar. Pass it as an
+ ## an argument to the ptree-constructor
+ $ptree = new Pod::ParseTree($1 ? [$ptree] : $ptree);
+ }
+ $self->{'-ptree'} = $ptree;
+
+ ## Bless ourselves into the desired class and perform any initialization
+ bless $self, $class;
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_seq-E<gt>B<cmd_name()>
+
+ my $seq_cmd = $pod_seq->cmd_name();
+
+The name of the interior sequence command.
+
+=cut
+
+sub cmd_name {
+ (@_ > 1) and $_[0]->{'-name'} = $_[1];
+ return $_[0]->{'-name'};
+}
+
+## let name() be an alias for cmd_name()
+*name = \&cmd_name;
+
+##---------------------------------------------------------------------------
+
+## Private subroutine to set the parent pointer of all the given
+## children that are interior-sequences to be $self
+
+sub _set_child2parent_links {
+ my ($self, @children) = @_;
+ ## Make sure any sequences know who their parent is
+ for (@children) {
+ next unless (length and ref and ref ne 'SCALAR');
+ if (UNIVERSAL::isa($_, 'Pod::InteriorSequence') or
+ UNIVERSAL::can($_, 'nested'))
+ {
+ $_->nested($self);
+ }
+ }
+}
+
+## Private subroutine to unset child->parent links
+
+sub _unset_child2parent_links {
+ my $self = shift;
+ $self->{'-parent_sequence'} = undef;
+ my $ptree = $self->{'-ptree'};
+ for (@$ptree) {
+ next unless (length and ref and ref ne 'SCALAR');
+ $_->_unset_child2parent_links()
+ if UNIVERSAL::isa($_, 'Pod::InteriorSequence');
+ }
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_seq-E<gt>B<prepend()>
+
+ $pod_seq->prepend($text);
+ $pod_seq1->prepend($pod_seq2);
+
+Prepends the given string or parse-tree or sequence object to the parse-tree
+of this interior sequence.
+
+=cut
+
+sub prepend {
+ my $self = shift;
+ $self->{'-ptree'}->prepend(@_);
+ _set_child2parent_links($self, @_);
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_seq-E<gt>B<append()>
+
+ $pod_seq->append($text);
+ $pod_seq1->append($pod_seq2);
+
+Appends the given string or parse-tree or sequence object to the parse-tree
+of this interior sequence.
+
+=cut
+
+sub append {
+ my $self = shift;
+ $self->{'-ptree'}->append(@_);
+ _set_child2parent_links($self, @_);
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_seq-E<gt>B<nested()>
+
+ $outer_seq = $pod_seq->nested || print "not nested";
+
+If this interior sequence is nested inside of another interior
+sequence, then the outer/parent sequence that contains it is
+returned. Otherwise C<undef> is returned.
+
+=cut
+
+sub nested {
+ my $self = shift;
+ (@_ == 1) and $self->{'-parent_sequence'} = shift;
+ return $self->{'-parent_sequence'} || undef;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_seq-E<gt>B<raw_text()>
+
+ my $seq_raw_text = $pod_seq->raw_text();
+
+This method will return the I<raw> text of the POD interior sequence,
+exactly as it appeared in the input.
+
+=cut
+
+sub raw_text {
+ my $self = shift;
+ my $text = $self->{'-name'} . $self->{'-ldelim'};
+ for ( $self->{'-ptree'}->children ) {
+ $text .= (ref $_) ? $_->raw_text : $_;
+ }
+ $text .= $self->{'-rdelim'};
+ return $text;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_seq-E<gt>B<left_delimiter()>
+
+ my $ldelim = $pod_seq->left_delimiter();
+
+The leftmost delimiter beginning the argument text to the interior
+sequence (should be "<").
+
+=cut
+
+sub left_delimiter {
+ (@_ > 1) and $_[0]->{'-ldelim'} = $_[1];
+ return $_[0]->{'-ldelim'};
+}
+
+## let ldelim() be an alias for left_delimiter()
+*ldelim = \&left_delimiter;
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_seq-E<gt>B<right_delimiter()>
+
+The rightmost delimiter beginning the argument text to the interior
+sequence (should be ">").
+
+=cut
+
+sub right_delimiter {
+ (@_ > 1) and $_[0]->{'-rdelim'} = $_[1];
+ return $_[0]->{'-rdelim'};
+}
+
+## let rdelim() be an alias for right_delimiter()
+*rdelim = \&right_delimiter;
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_seq-E<gt>B<parse_tree()>
+
+ my $ptree = $pod_parser->parse_text($paragraph_text);
+ $pod_seq->parse_tree( $ptree );
+ $ptree = $pod_seq->parse_tree();
+
+This method will get/set the corresponding parse-tree of the interior
+sequence's text.
+
+=cut
+
+sub parse_tree {
+ (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
+ return $_[0]->{'-ptree'};
+}
+
+## let ptree() be an alias for parse_tree()
+*ptree = \&parse_tree;
+
+##---------------------------------------------------------------------------
+
+=head2 $pod_seq-E<gt>B<file_line()>
+
+ my ($filename, $line_number) = $pod_seq->file_line();
+ my $position = $pod_seq->file_line();
+
+Returns the current filename and line number for the interior sequence
+object. If called in a list context, it returns a list of two
+elements: first the filename, then the line number. If called in
+a scalar context, it returns a string containing the filename, followed
+by a colon (':'), followed by the line number.
+
+=cut
+
+sub file_line {
+ my @loc = ($_[0]->{'-file'} || '<unknown-file>',
+ $_[0]->{'-line'} || 0);
+ return (wantarray) ? @loc : join(':', @loc);
+}
+
+##---------------------------------------------------------------------------
+
+=head2 Pod::InteriorSequence::B<DESTROY()>
+
+This method performs any necessary cleanup for the interior-sequence.
+If you override this method then it is B<imperative> that you invoke
+the parent method from within your own method, otherwise
+I<interior-sequence storage will not be reclaimed upon destruction!>
+
+=cut
+
+sub DESTROY {
+ ## We need to get rid of all child->parent pointers throughout the
+ ## tree so their reference counts will go to zero and they can be
+ ## garbage-collected
+ _unset_child2parent_links(@_);
+}
+
+##---------------------------------------------------------------------------
+
+#############################################################################
+
+package Pod::ParseTree;
+
+##---------------------------------------------------------------------------
+
+=head1 B<Pod::ParseTree>
+
+This object corresponds to a tree of parsed POD text. As POD text is
+scanned from left to right, it is parsed into an ordered list of
+text-strings and B<Pod::InteriorSequence> objects (in order of
+appearance). A B<Pod::ParseTree> object corresponds to this list of
+strings and sequences. Each interior sequence in the parse-tree may
+itself contain a parse-tree (since interior sequences may be nested).
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head2 Pod::ParseTree-E<gt>B<new()>
+
+ my $ptree1 = Pod::ParseTree->new;
+ my $ptree2 = new Pod::ParseTree;
+ my $ptree4 = Pod::ParseTree->new($array_ref);
+ my $ptree3 = new Pod::ParseTree($array_ref);
+
+This is a class method that constructs a C<Pod::Parse_tree> object and
+returns a reference to the new parse-tree. If a single-argument is given,
+it must be a reference to an array, and is used to initialize the root
+(top) of the parse tree.
+
+=cut
+
+sub new {
+ ## Determine if we were called via an object-ref or a classname
+ my $this = shift;
+ my $class = ref($this) || $this;
+
+ my $self = (@_ == 1 and ref $_[0]) ? $_[0] : [];
+
+ ## Bless ourselves into the desired class and perform any initialization
+ bless $self, $class;
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $ptree-E<gt>B<top()>
+
+ my $top_node = $ptree->top();
+ $ptree->top( $top_node );
+ $ptree->top( @children );
+
+This method gets/sets the top node of the parse-tree. If no arguments are
+given, it returns the topmost node in the tree (the root), which is also
+a B<Pod::ParseTree>. If it is given a single argument that is a reference,
+then the reference is assumed to a parse-tree and becomes the new top node.
+Otherwise, if arguments are given, they are treated as the new list of
+children for the top node.
+
+=cut
+
+sub top {
+ my $self = shift;
+ if (@_ > 0) {
+ @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_;
+ }
+ return $self;
+}
+
+## let parse_tree() & ptree() be aliases for the 'top' method
+*parse_tree = *ptree = \&top;
+
+##---------------------------------------------------------------------------
+
+=head2 $ptree-E<gt>B<children()>
+
+This method gets/sets the children of the top node in the parse-tree.
+If no arguments are given, it returns the list (array) of children
+(each of which should be either a string or a B<Pod::InteriorSequence>.
+Otherwise, if arguments are given, they are treated as the new list of
+children for the top node.
+
+=cut
+
+sub children {
+ my $self = shift;
+ if (@_ > 0) {
+ @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_;
+ }
+ return @{ $self };
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $ptree-E<gt>B<prepend()>
+
+This method prepends the given text or parse-tree to the current parse-tree.
+If the first item on the parse-tree is text and the argument is also text,
+then the text is prepended to the first item (not added as a separate string).
+Otherwise the argument is added as a new string or parse-tree I<before>
+the current one.
+
+=cut
+
+use vars qw(@ptree); ## an alias used for performance reasons
+
+sub prepend {
+ my $self = shift;
+ local *ptree = $self;
+ for (@_) {
+ next unless length;
+ if (@ptree && !(ref $ptree[0]) && !(ref $_)) {
+ $ptree[0] = $_ . $ptree[0];
+ }
+ else {
+ unshift @ptree, $_;
+ }
+ }
+}
+
+##---------------------------------------------------------------------------
+
+=head2 $ptree-E<gt>B<append()>
+
+This method appends the given text or parse-tree to the current parse-tree.
+If the last item on the parse-tree is text and the argument is also text,
+then the text is appended to the last item (not added as a separate string).
+Otherwise the argument is added as a new string or parse-tree I<after>
+the current one.
+
+=cut
+
+sub append {
+ my $self = shift;
+ local *ptree = $self;
+ my $can_append = @ptree && !(ref $ptree[-1]);
+ for (@_) {
+ if (ref) {
+ push @ptree, $_;
+ }
+ elsif(!length) {
+ next;
+ }
+ elsif ($can_append) {
+ $ptree[-1] .= $_;
+ }
+ else {
+ push @ptree, $_;
+ }
+ }
+}
+
+=head2 $ptree-E<gt>B<raw_text()>
+
+ my $ptree_raw_text = $ptree->raw_text();
+
+This method will return the I<raw> text of the POD parse-tree
+exactly as it appeared in the input.
+
+=cut
+
+sub raw_text {
+ my $self = shift;
+ my $text = '';
+ for ( @$self ) {
+ $text .= (ref $_) ? $_->raw_text : $_;
+ }
+ return $text;
+}
+
+##---------------------------------------------------------------------------
+
+## Private routines to set/unset child->parent links
+
+sub _unset_child2parent_links {
+ my $self = shift;
+ local *ptree = $self;
+ for (@ptree) {
+ next unless (defined and length and ref and ref ne 'SCALAR');
+ $_->_unset_child2parent_links()
+ if UNIVERSAL::isa($_, 'Pod::InteriorSequence');
+ }
+}
+
+sub _set_child2parent_links {
+ ## nothing to do, Pod::ParseTrees cant have parent pointers
+}
+
+=head2 Pod::ParseTree::B<DESTROY()>
+
+This method performs any necessary cleanup for the parse-tree.
+If you override this method then it is B<imperative>
+that you invoke the parent method from within your own method,
+otherwise I<parse-tree storage will not be reclaimed upon destruction!>
+
+=cut
+
+sub DESTROY {
+ ## We need to get rid of all child->parent pointers throughout the
+ ## tree so their reference counts will go to zero and they can be
+ ## garbage-collected
+ _unset_child2parent_links(@_);
+}
+
+#############################################################################
+
+=head1 SEE ALSO
+
+B<Pod::InputObjects> is part of the L<Pod::Parser> distribution.
+
+See L<Pod::Parser>, L<Pod::Select>
+
+=head1 AUTHOR
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt>
+
+=cut
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/ParseUtils.pm b/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/ParseUtils.pm
index 3c74d786801..fc9f3a73f21 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/ParseUtils.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/ParseUtils.pm
@@ -1,857 +1,857 @@
-#############################################################################
-# Pod/ParseUtils.pm -- helpers for POD parsing and conversion
-#
-# Copyright (C) 1999-2000 by Marek Rouchal. All rights reserved.
-# This file is part of "PodParser". PodParser is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::ParseUtils;
-use strict;
-
-use vars qw($VERSION);
-$VERSION = '1.51'; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-
-=head1 NAME
-
-Pod::ParseUtils - helpers for POD parsing and conversion
-
-=head1 SYNOPSIS
-
- use Pod::ParseUtils;
-
- my $list = new Pod::List;
- my $link = Pod::Hyperlink->new('Pod::Parser');
-
-=head1 DESCRIPTION
-
-B<Pod::ParseUtils> contains a few object-oriented helper packages for
-POD parsing and processing (i.e. in POD formatters and translators).
-
-=cut
-
-#-----------------------------------------------------------------------------
-# Pod::List
-#
-# class to hold POD list info (=over, =item, =back)
-#-----------------------------------------------------------------------------
-
-package Pod::List;
-
-use Carp;
-
-=head2 Pod::List
-
-B<Pod::List> can be used to hold information about POD lists
-(written as =over ... =item ... =back) for further processing.
-The following methods are available:
-
-=over 4
-
-=item Pod::List-E<gt>new()
-
-Create a new list object. Properties may be specified through a hash
-reference like this:
-
- my $list = Pod::List->new({ -start => $., -indent => 4 });
-
-See the individual methods/properties for details.
-
-=cut
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my %params = @_;
- my $self = {%params};
- bless $self, $class;
- $self->initialize();
- return $self;
-}
-
-sub initialize {
- my $self = shift;
- $self->{-file} ||= 'unknown';
- $self->{-start} ||= 'unknown';
- $self->{-indent} ||= 4; # perlpod: "should be the default"
- $self->{_items} = [];
- $self->{-type} ||= '';
-}
-
-=item $list-E<gt>file()
-
-Without argument, retrieves the file name the list is in. This must
-have been set before by either specifying B<-file> in the B<new()>
-method or by calling the B<file()> method with a scalar argument.
-
-=cut
-
-# The POD file name the list appears in
-sub file {
- return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
-}
-
-=item $list-E<gt>start()
-
-Without argument, retrieves the line number where the list started.
-This must have been set before by either specifying B<-start> in the
-B<new()> method or by calling the B<start()> method with a scalar
-argument.
-
-=cut
-
-# The line in the file the node appears
-sub start {
- return (@_ > 1) ? ($_[0]->{-start} = $_[1]) : $_[0]->{-start};
-}
-
-=item $list-E<gt>indent()
-
-Without argument, retrieves the indent level of the list as specified
-in C<=over n>. This must have been set before by either specifying
-B<-indent> in the B<new()> method or by calling the B<indent()> method
-with a scalar argument.
-
-=cut
-
-# indent level
-sub indent {
- return (@_ > 1) ? ($_[0]->{-indent} = $_[1]) : $_[0]->{-indent};
-}
-
-=item $list-E<gt>type()
-
-Without argument, retrieves the list type, which can be an arbitrary value,
-e.g. C<OL>, C<UL>, ... when thinking the HTML way.
-This must have been set before by either specifying
-B<-type> in the B<new()> method or by calling the B<type()> method
-with a scalar argument.
-
-=cut
-
-# The type of the list (UL, OL, ...)
-sub type {
- return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type};
-}
-
-=item $list-E<gt>rx()
-
-Without argument, retrieves a regular expression for simplifying the
-individual item strings once the list type has been determined. Usage:
-E.g. when converting to HTML, one might strip the leading number in
-an ordered list as C<E<lt>OLE<gt>> already prints numbers itself.
-This must have been set before by either specifying
-B<-rx> in the B<new()> method or by calling the B<rx()> method
-with a scalar argument.
-
-=cut
-
-# The regular expression to simplify the items
-sub rx {
- return (@_ > 1) ? ($_[0]->{-rx} = $_[1]) : $_[0]->{-rx};
-}
-
-=item $list-E<gt>item()
-
-Without argument, retrieves the array of the items in this list.
-The items may be represented by any scalar.
-If an argument has been given, it is pushed on the list of items.
-
-=cut
-
-# The individual =items of this list
-sub item {
- my ($self,$item) = @_;
- if(defined $item) {
- push(@{$self->{_items}}, $item);
- return $item;
- }
- else {
- return @{$self->{_items}};
- }
-}
-
-=item $list-E<gt>parent()
-
-Without argument, retrieves information about the parent holding this
-list, which is represented as an arbitrary scalar.
-This must have been set before by either specifying
-B<-parent> in the B<new()> method or by calling the B<parent()> method
-with a scalar argument.
-
-=cut
-
-# possibility for parsers/translators to store information about the
-# lists's parent object
-sub parent {
- return (@_ > 1) ? ($_[0]->{-parent} = $_[1]) : $_[0]->{-parent};
-}
-
-=item $list-E<gt>tag()
-
-Without argument, retrieves information about the list tag, which can be
-any scalar.
-This must have been set before by either specifying
-B<-tag> in the B<new()> method or by calling the B<tag()> method
-with a scalar argument.
-
-=back
-
-=cut
-
-# possibility for parsers/translators to store information about the
-# list's object
-sub tag {
- return (@_ > 1) ? ($_[0]->{-tag} = $_[1]) : $_[0]->{-tag};
-}
-
-#-----------------------------------------------------------------------------
-# Pod::Hyperlink
-#
-# class to manipulate POD hyperlinks (L<>)
-#-----------------------------------------------------------------------------
-
-package Pod::Hyperlink;
-
-=head2 Pod::Hyperlink
-
-B<Pod::Hyperlink> is a class for manipulation of POD hyperlinks. Usage:
-
- my $link = Pod::Hyperlink->new('alternative text|page/"section in page"');
-
-The B<Pod::Hyperlink> class is mainly designed to parse the contents of the
-C<LE<lt>...E<gt>> sequence, providing a simple interface for accessing the
-different parts of a POD hyperlink for further processing. It can also be
-used to construct hyperlinks.
-
-=over 4
-
-=item Pod::Hyperlink-E<gt>new()
-
-The B<new()> method can either be passed a set of key/value pairs or a single
-scalar value, namely the contents of a C<LE<lt>...E<gt>> sequence. An object
-of the class C<Pod::Hyperlink> is returned. The value C<undef> indicates a
-failure, the error message is stored in C<$@>.
-
-=cut
-
-use Carp;
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my $self = +{};
- bless $self, $class;
- $self->initialize();
- if(defined $_[0]) {
- if(ref($_[0])) {
- # called with a list of parameters
- %$self = %{$_[0]};
- $self->_construct_text();
- }
- else {
- # called with L<> contents
- return unless($self->parse($_[0]));
- }
- }
- return $self;
-}
-
-sub initialize {
- my $self = shift;
- $self->{-line} ||= 'undef';
- $self->{-file} ||= 'undef';
- $self->{-page} ||= '';
- $self->{-node} ||= '';
- $self->{-alttext} ||= '';
- $self->{-type} ||= 'undef';
- $self->{_warnings} = [];
-}
-
-=item $link-E<gt>parse($string)
-
-This method can be used to (re)parse a (new) hyperlink, i.e. the contents
-of a C<LE<lt>...E<gt>> sequence. The result is stored in the current object.
-Warnings are stored in the B<warnings> property.
-E.g. sections like C<LE<lt>open(2)E<gt>> are deprecated, as they do not point
-to Perl documents. C<LE<lt>DBI::foo(3p)E<gt>> is wrong as well, the manpage
-section can simply be dropped.
-
-=cut
-
-sub parse {
- my $self = shift;
- local($_) = $_[0];
- # syntax check the link and extract destination
- my ($alttext,$page,$node,$type,$quoted) = (undef,'','','',0);
-
- $self->{_warnings} = [];
-
- # collapse newlines with whitespace
- s/\s*\n+\s*/ /g;
-
- # strip leading/trailing whitespace
- if(s/^[\s\n]+//) {
- $self->warning('ignoring leading whitespace in link');
- }
- if(s/[\s\n]+$//) {
- $self->warning('ignoring trailing whitespace in link');
- }
- unless(length($_)) {
- _invalid_link('empty link');
- return;
- }
-
- ## Check for different possibilities. This is tedious and error-prone
- # we match all possibilities (alttext, page, section/item)
- #warn "DEBUG: link=$_\n";
-
- # only page
- # problem: a lot of people use (), or (1) or the like to indicate
- # man page sections. But this collides with L<func()> that is supposed
- # to point to an internal funtion...
- my $page_rx = '[\w.-]+(?:::[\w.-]+)*(?:[(](?:\d\w*|)[)]|)';
- # page name only
- if(/^($page_rx)$/o) {
- $page = $1;
- $type = 'page';
- }
- # alttext, page and "section"
- elsif(m{^(.*?)\s*[|]\s*($page_rx)\s*/\s*"(.+)"$}o) {
- ($alttext, $page, $node) = ($1, $2, $3);
- $type = 'section';
- $quoted = 1; #... therefore | and / are allowed
- }
- # alttext and page
- elsif(/^(.*?)\s*[|]\s*($page_rx)$/o) {
- ($alttext, $page) = ($1, $2);
- $type = 'page';
- }
- # alttext and "section"
- elsif(m{^(.*?)\s*[|]\s*(?:/\s*|)"(.+)"$}) {
- ($alttext, $node) = ($1,$2);
- $type = 'section';
- $quoted = 1;
- }
- # page and "section"
- elsif(m{^($page_rx)\s*/\s*"(.+)"$}o) {
- ($page, $node) = ($1, $2);
- $type = 'section';
- $quoted = 1;
- }
- # page and item
- elsif(m{^($page_rx)\s*/\s*(.+)$}o) {
- ($page, $node) = ($1, $2);
- $type = 'item';
- }
- # only "section"
- elsif(m{^/?"(.+)"$}) {
- $node = $1;
- $type = 'section';
- $quoted = 1;
- }
- # only item
- elsif(m{^\s*/(.+)$}) {
- $node = $1;
- $type = 'item';
- }
-
- # non-standard: Hyperlink with alt-text - doesn't remove protocol prefix, maybe it should?
- elsif(/^ \s* (.*?) \s* [|] \s* (\w+:[^:\s] [^\s|]*?) \s* $/ix) {
- ($alttext,$node) = ($1,$2);
- $type = 'hyperlink';
- }
-
- # non-standard: Hyperlink
- elsif(/^(\w+:[^:\s]\S*)$/i) {
- $node = $1;
- $type = 'hyperlink';
- }
- # alttext, page and item
- elsif(m{^(.*?)\s*[|]\s*($page_rx)\s*/\s*(.+)$}o) {
- ($alttext, $page, $node) = ($1, $2, $3);
- $type = 'item';
- }
- # alttext and item
- elsif(m{^(.*?)\s*[|]\s*/(.+)$}) {
- ($alttext, $node) = ($1,$2);
- }
- # must be an item or a "malformed" section (without "")
- else {
- $node = $_;
- $type = 'item';
- }
- # collapse whitespace in nodes
- $node =~ s/\s+/ /gs;
-
- # empty alternative text expands to node name
- if(defined $alttext) {
- if(!length($alttext)) {
- $alttext = $node || $page;
- }
- }
- else {
- $alttext = '';
- }
-
- if($page =~ /[(]\w*[)]$/) {
- $self->warning("(section) in '$page' deprecated");
- }
- if(!$quoted && $node =~ m{[|/]} && $type ne 'hyperlink') {
- $self->warning("node '$node' contains non-escaped | or /");
- }
- if($alttext =~ m{[|/]}) {
- $self->warning("alternative text '$node' contains non-escaped | or /");
- }
- $self->{-page} = $page;
- $self->{-node} = $node;
- $self->{-alttext} = $alttext;
- #warn "DEBUG: page=$page section=$section item=$item alttext=$alttext\n";
- $self->{-type} = $type;
- $self->_construct_text();
- 1;
-}
-
-sub _construct_text {
- my $self = shift;
- my $alttext = $self->alttext();
- my $type = $self->type();
- my $section = $self->node();
- my $page = $self->page();
- my $page_ext = '';
- $page =~ s/([(]\w*[)])$// && ($page_ext = $1);
- if($alttext) {
- $self->{_text} = $alttext;
- }
- elsif($type eq 'hyperlink') {
- $self->{_text} = $section;
- }
- else {
- $self->{_text} = ($section || '') .
- (($page && $section) ? ' in ' : '') .
- "$page$page_ext";
- }
- # for being marked up later
- # use the non-standard markers P<> and Q<>, so that the resulting
- # text can be parsed by the translators. It's their job to put
- # the correct hypertext around the linktext
- if($alttext) {
- $self->{_markup} = "Q<$alttext>";
- }
- elsif($type eq 'hyperlink') {
- $self->{_markup} = "Q<$section>";
- }
- else {
- $self->{_markup} = (!$section ? '' : "Q<$section>") .
- ($page ? ($section ? ' in ':'') . "P<$page>$page_ext" : '');
- }
-}
-
-=item $link-E<gt>markup($string)
-
-Set/retrieve the textual value of the link. This string contains special
-markers C<PE<lt>E<gt>> and C<QE<lt>E<gt>> that should be expanded by the
-translator's interior sequence expansion engine to the
-formatter-specific code to highlight/activate the hyperlink. The details
-have to be implemented in the translator.
-
-=cut
-
-#' retrieve/set markuped text
-sub markup {
- return (@_ > 1) ? ($_[0]->{_markup} = $_[1]) : $_[0]->{_markup};
-}
-
-=item $link-E<gt>text()
-
-This method returns the textual representation of the hyperlink as above,
-but without markers (read only). Depending on the link type this is one of
-the following alternatives (the + and * denote the portions of the text
-that are marked up):
-
- +perl+ L<perl>
- *$|* in +perlvar+ L<perlvar/$|>
- *OPTIONS* in +perldoc+ L<perldoc/"OPTIONS">
- *DESCRIPTION* L<"DESCRIPTION">
-
-=cut
-
-# The complete link's text
-sub text {
- return $_[0]->{_text};
-}
-
-=item $link-E<gt>warning()
-
-After parsing, this method returns any warnings encountered during the
-parsing process.
-
-=cut
-
-# Set/retrieve warnings
-sub warning {
- my $self = shift;
- if(@_) {
- push(@{$self->{_warnings}}, @_);
- return @_;
- }
- return @{$self->{_warnings}};
-}
-
-=item $link-E<gt>file()
-
-=item $link-E<gt>line()
-
-Just simple slots for storing information about the line and the file
-the link was encountered in. Has to be filled in manually.
-
-=cut
-
-# The line in the file the link appears
-sub line {
- return (@_ > 1) ? ($_[0]->{-line} = $_[1]) : $_[0]->{-line};
-}
-
-# The POD file name the link appears in
-sub file {
- return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
-}
-
-=item $link-E<gt>page()
-
-This method sets or returns the POD page this link points to.
-
-=cut
-
-# The POD page the link appears on
-sub page {
- if (@_ > 1) {
- $_[0]->{-page} = $_[1];
- $_[0]->_construct_text();
- }
- return $_[0]->{-page};
-}
-
-=item $link-E<gt>node()
-
-As above, but the destination node text of the link.
-
-=cut
-
-# The link destination
-sub node {
- if (@_ > 1) {
- $_[0]->{-node} = $_[1];
- $_[0]->_construct_text();
- }
- return $_[0]->{-node};
-}
-
-=item $link-E<gt>alttext()
-
-Sets or returns an alternative text specified in the link.
-
-=cut
-
-# Potential alternative text
-sub alttext {
- if (@_ > 1) {
- $_[0]->{-alttext} = $_[1];
- $_[0]->_construct_text();
- }
- return $_[0]->{-alttext};
-}
-
-=item $link-E<gt>type()
-
-The node type, either C<section> or C<item>. As an unofficial type,
-there is also C<hyperlink>, derived from e.g. C<LE<lt>http://perl.comE<gt>>
-
-=cut
-
-# The type: item or headn
-sub type {
- return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type};
-}
-
-=item $link-E<gt>link()
-
-Returns the link as contents of C<LE<lt>E<gt>>. Reciprocal to B<parse()>.
-
-=back
-
-=cut
-
-# The link itself
-sub link {
- my $self = shift;
- my $link = $self->page() || '';
- if($self->node()) {
- my $node = $self->node();
- $node =~ s/\|/E<verbar>/g;
- $node =~ s{/}{E<sol>}g;
- if($self->type() eq 'section') {
- $link .= ($link ? '/' : '') . '"' . $node . '"';
- }
- elsif($self->type() eq 'hyperlink') {
- $link = $self->node();
- }
- else { # item
- $link .= '/' . $node;
- }
- }
- if($self->alttext()) {
- my $text = $self->alttext();
- $text =~ s/\|/E<verbar>/g;
- $text =~ s{/}{E<sol>}g;
- $link = "$text|$link";
- }
- return $link;
-}
-
-sub _invalid_link {
- my ($msg) = @_;
- # this sets @_
- #eval { die "$msg\n" };
- #chomp $@;
- $@ = $msg; # this seems to work, too!
- return;
-}
-
-#-----------------------------------------------------------------------------
-# Pod::Cache
-#
-# class to hold POD page details
-#-----------------------------------------------------------------------------
-
-package Pod::Cache;
-
-=head2 Pod::Cache
-
-B<Pod::Cache> holds information about a set of POD documents,
-especially the nodes for hyperlinks.
-The following methods are available:
-
-=over 4
-
-=item Pod::Cache-E<gt>new()
-
-Create a new cache object. This object can hold an arbitrary number of
-POD documents of class Pod::Cache::Item.
-
-=cut
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my $self = [];
- bless $self, $class;
- return $self;
-}
-
-=item $cache-E<gt>item()
-
-Add a new item to the cache. Without arguments, this method returns a
-list of all cache elements.
-
-=cut
-
-sub item {
- my ($self,%param) = @_;
- if(%param) {
- my $item = Pod::Cache::Item->new(%param);
- push(@$self, $item);
- return $item;
- }
- else {
- return @{$self};
- }
-}
-
-=item $cache-E<gt>find_page($name)
-
-Look for a POD document named C<$name> in the cache. Returns the
-reference to the corresponding Pod::Cache::Item object or undef if
-not found.
-
-=back
-
-=cut
-
-sub find_page {
- my ($self,$page) = @_;
- foreach(@$self) {
- if($_->page() eq $page) {
- return $_;
- }
- }
- return;
-}
-
-package Pod::Cache::Item;
-
-=head2 Pod::Cache::Item
-
-B<Pod::Cache::Item> holds information about individual POD documents,
-that can be grouped in a Pod::Cache object.
-It is intended to hold information about the hyperlink nodes of POD
-documents.
-The following methods are available:
-
-=over 4
-
-=item Pod::Cache::Item-E<gt>new()
-
-Create a new object.
-
-=cut
-
-sub new {
- my $this = shift;
- my $class = ref($this) || $this;
- my %params = @_;
- my $self = {%params};
- bless $self, $class;
- $self->initialize();
- return $self;
-}
-
-sub initialize {
- my $self = shift;
- $self->{-nodes} = [] unless(defined $self->{-nodes});
-}
-
-=item $cacheitem-E<gt>page()
-
-Set/retrieve the POD document name (e.g. "Pod::Parser").
-
-=cut
-
-# The POD page
-sub page {
- return (@_ > 1) ? ($_[0]->{-page} = $_[1]) : $_[0]->{-page};
-}
-
-=item $cacheitem-E<gt>description()
-
-Set/retrieve the POD short description as found in the C<=head1 NAME>
-section.
-
-=cut
-
-# The POD description, taken out of NAME if present
-sub description {
- return (@_ > 1) ? ($_[0]->{-description} = $_[1]) : $_[0]->{-description};
-}
-
-=item $cacheitem-E<gt>path()
-
-Set/retrieve the POD file storage path.
-
-=cut
-
-# The file path
-sub path {
- return (@_ > 1) ? ($_[0]->{-path} = $_[1]) : $_[0]->{-path};
-}
-
-=item $cacheitem-E<gt>file()
-
-Set/retrieve the POD file name.
-
-=cut
-
-# The POD file name
-sub file {
- return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
-}
-
-=item $cacheitem-E<gt>nodes()
-
-Add a node (or a list of nodes) to the document's node list. Note that
-the order is kept, i.e. start with the first node and end with the last.
-If no argument is given, the current list of nodes is returned in the
-same order the nodes have been added.
-A node can be any scalar, but usually is a pair of node string and
-unique id for the C<find_node> method to work correctly.
-
-=cut
-
-# The POD nodes
-sub nodes {
- my ($self,@nodes) = @_;
- if(@nodes) {
- push(@{$self->{-nodes}}, @nodes);
- return @nodes;
- }
- else {
- return @{$self->{-nodes}};
- }
-}
-
-=item $cacheitem-E<gt>find_node($name)
-
-Look for a node or index entry named C<$name> in the object.
-Returns the unique id of the node (i.e. the second element of the array
-stored in the node array) or undef if not found.
-
-=cut
-
-sub find_node {
- my ($self,$node) = @_;
- my @search;
- push(@search, @{$self->{-nodes}}) if($self->{-nodes});
- push(@search, @{$self->{-idx}}) if($self->{-idx});
- foreach(@search) {
- if($_->[0] eq $node) {
- return $_->[1]; # id
- }
- }
- return;
-}
-
-=item $cacheitem-E<gt>idx()
-
-Add an index entry (or a list of them) to the document's index list. Note that
-the order is kept, i.e. start with the first node and end with the last.
-If no argument is given, the current list of index entries is returned in the
-same order the entries have been added.
-An index entry can be any scalar, but usually is a pair of string and
-unique id.
-
-=back
-
-=cut
-
-# The POD index entries
-sub idx {
- my ($self,@idx) = @_;
- if(@idx) {
- push(@{$self->{-idx}}, @idx);
- return @idx;
- }
- else {
- return @{$self->{-idx}};
- }
-}
-
-=head1 AUTHOR
-
-Please report bugs using L<http://rt.cpan.org>.
-
-Marek Rouchal E<lt>marekr@cpan.orgE<gt>, borrowing
-a lot of things from L<pod2man> and L<pod2roff> as well as other POD
-processing tools by Tom Christiansen, Brad Appleton and Russ Allbery.
-
-B<Pod::ParseUtils> is part of the L<Pod::Parser> distribution.
-
-=head1 SEE ALSO
-
-L<pod2man>, L<pod2roff>, L<Pod::Parser>, L<Pod::Checker>,
-L<pod2html>
-
-=cut
-
-1;
+#############################################################################
+# Pod/ParseUtils.pm -- helpers for POD parsing and conversion
+#
+# Copyright (C) 1999-2000 by Marek Rouchal. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::ParseUtils;
+use strict;
+
+use vars qw($VERSION);
+$VERSION = '1.60'; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+=head1 NAME
+
+Pod::ParseUtils - helpers for POD parsing and conversion
+
+=head1 SYNOPSIS
+
+ use Pod::ParseUtils;
+
+ my $list = new Pod::List;
+ my $link = Pod::Hyperlink->new('Pod::Parser');
+
+=head1 DESCRIPTION
+
+B<Pod::ParseUtils> contains a few object-oriented helper packages for
+POD parsing and processing (i.e. in POD formatters and translators).
+
+=cut
+
+#-----------------------------------------------------------------------------
+# Pod::List
+#
+# class to hold POD list info (=over, =item, =back)
+#-----------------------------------------------------------------------------
+
+package Pod::List;
+
+use Carp;
+
+=head2 Pod::List
+
+B<Pod::List> can be used to hold information about POD lists
+(written as =over ... =item ... =back) for further processing.
+The following methods are available:
+
+=over 4
+
+=item Pod::List-E<gt>new()
+
+Create a new list object. Properties may be specified through a hash
+reference like this:
+
+ my $list = Pod::List->new({ -start => $., -indent => 4 });
+
+See the individual methods/properties for details.
+
+=cut
+
+sub new {
+ my $this = shift;
+ my $class = ref($this) || $this;
+ my %params = @_;
+ my $self = {%params};
+ bless $self, $class;
+ $self->initialize();
+ return $self;
+}
+
+sub initialize {
+ my $self = shift;
+ $self->{-file} ||= 'unknown';
+ $self->{-start} ||= 'unknown';
+ $self->{-indent} ||= 4; # perlpod: "should be the default"
+ $self->{_items} = [];
+ $self->{-type} ||= '';
+}
+
+=item $list-E<gt>file()
+
+Without argument, retrieves the file name the list is in. This must
+have been set before by either specifying B<-file> in the B<new()>
+method or by calling the B<file()> method with a scalar argument.
+
+=cut
+
+# The POD file name the list appears in
+sub file {
+ return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
+}
+
+=item $list-E<gt>start()
+
+Without argument, retrieves the line number where the list started.
+This must have been set before by either specifying B<-start> in the
+B<new()> method or by calling the B<start()> method with a scalar
+argument.
+
+=cut
+
+# The line in the file the node appears
+sub start {
+ return (@_ > 1) ? ($_[0]->{-start} = $_[1]) : $_[0]->{-start};
+}
+
+=item $list-E<gt>indent()
+
+Without argument, retrieves the indent level of the list as specified
+in C<=over n>. This must have been set before by either specifying
+B<-indent> in the B<new()> method or by calling the B<indent()> method
+with a scalar argument.
+
+=cut
+
+# indent level
+sub indent {
+ return (@_ > 1) ? ($_[0]->{-indent} = $_[1]) : $_[0]->{-indent};
+}
+
+=item $list-E<gt>type()
+
+Without argument, retrieves the list type, which can be an arbitrary value,
+e.g. C<OL>, C<UL>, ... when thinking the HTML way.
+This must have been set before by either specifying
+B<-type> in the B<new()> method or by calling the B<type()> method
+with a scalar argument.
+
+=cut
+
+# The type of the list (UL, OL, ...)
+sub type {
+ return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type};
+}
+
+=item $list-E<gt>rx()
+
+Without argument, retrieves a regular expression for simplifying the
+individual item strings once the list type has been determined. Usage:
+E.g. when converting to HTML, one might strip the leading number in
+an ordered list as C<E<lt>OLE<gt>> already prints numbers itself.
+This must have been set before by either specifying
+B<-rx> in the B<new()> method or by calling the B<rx()> method
+with a scalar argument.
+
+=cut
+
+# The regular expression to simplify the items
+sub rx {
+ return (@_ > 1) ? ($_[0]->{-rx} = $_[1]) : $_[0]->{-rx};
+}
+
+=item $list-E<gt>item()
+
+Without argument, retrieves the array of the items in this list.
+The items may be represented by any scalar.
+If an argument has been given, it is pushed on the list of items.
+
+=cut
+
+# The individual =items of this list
+sub item {
+ my ($self,$item) = @_;
+ if(defined $item) {
+ push(@{$self->{_items}}, $item);
+ return $item;
+ }
+ else {
+ return @{$self->{_items}};
+ }
+}
+
+=item $list-E<gt>parent()
+
+Without argument, retrieves information about the parent holding this
+list, which is represented as an arbitrary scalar.
+This must have been set before by either specifying
+B<-parent> in the B<new()> method or by calling the B<parent()> method
+with a scalar argument.
+
+=cut
+
+# possibility for parsers/translators to store information about the
+# lists's parent object
+sub parent {
+ return (@_ > 1) ? ($_[0]->{-parent} = $_[1]) : $_[0]->{-parent};
+}
+
+=item $list-E<gt>tag()
+
+Without argument, retrieves information about the list tag, which can be
+any scalar.
+This must have been set before by either specifying
+B<-tag> in the B<new()> method or by calling the B<tag()> method
+with a scalar argument.
+
+=back
+
+=cut
+
+# possibility for parsers/translators to store information about the
+# list's object
+sub tag {
+ return (@_ > 1) ? ($_[0]->{-tag} = $_[1]) : $_[0]->{-tag};
+}
+
+#-----------------------------------------------------------------------------
+# Pod::Hyperlink
+#
+# class to manipulate POD hyperlinks (L<>)
+#-----------------------------------------------------------------------------
+
+package Pod::Hyperlink;
+
+=head2 Pod::Hyperlink
+
+B<Pod::Hyperlink> is a class for manipulation of POD hyperlinks. Usage:
+
+ my $link = Pod::Hyperlink->new('alternative text|page/"section in page"');
+
+The B<Pod::Hyperlink> class is mainly designed to parse the contents of the
+C<LE<lt>...E<gt>> sequence, providing a simple interface for accessing the
+different parts of a POD hyperlink for further processing. It can also be
+used to construct hyperlinks.
+
+=over 4
+
+=item Pod::Hyperlink-E<gt>new()
+
+The B<new()> method can either be passed a set of key/value pairs or a single
+scalar value, namely the contents of a C<LE<lt>...E<gt>> sequence. An object
+of the class C<Pod::Hyperlink> is returned. The value C<undef> indicates a
+failure, the error message is stored in C<$@>.
+
+=cut
+
+use Carp;
+
+sub new {
+ my $this = shift;
+ my $class = ref($this) || $this;
+ my $self = +{};
+ bless $self, $class;
+ $self->initialize();
+ if(defined $_[0]) {
+ if(ref($_[0])) {
+ # called with a list of parameters
+ %$self = %{$_[0]};
+ $self->_construct_text();
+ }
+ else {
+ # called with L<> contents
+ return unless($self->parse($_[0]));
+ }
+ }
+ return $self;
+}
+
+sub initialize {
+ my $self = shift;
+ $self->{-line} ||= 'undef';
+ $self->{-file} ||= 'undef';
+ $self->{-page} ||= '';
+ $self->{-node} ||= '';
+ $self->{-alttext} ||= '';
+ $self->{-type} ||= 'undef';
+ $self->{_warnings} = [];
+}
+
+=item $link-E<gt>parse($string)
+
+This method can be used to (re)parse a (new) hyperlink, i.e. the contents
+of a C<LE<lt>...E<gt>> sequence. The result is stored in the current object.
+Warnings are stored in the B<warnings> property.
+E.g. sections like C<LE<lt>open(2)E<gt>> are deprecated, as they do not point
+to Perl documents. C<LE<lt>DBI::foo(3p)E<gt>> is wrong as well, the manpage
+section can simply be dropped.
+
+=cut
+
+sub parse {
+ my $self = shift;
+ local($_) = $_[0];
+ # syntax check the link and extract destination
+ my ($alttext,$page,$node,$type,$quoted) = (undef,'','','',0);
+
+ $self->{_warnings} = [];
+
+ # collapse newlines with whitespace
+ s/\s*\n+\s*/ /g;
+
+ # strip leading/trailing whitespace
+ if(s/^[\s\n]+//) {
+ $self->warning('ignoring leading whitespace in link');
+ }
+ if(s/[\s\n]+$//) {
+ $self->warning('ignoring trailing whitespace in link');
+ }
+ unless(length($_)) {
+ _invalid_link('empty link');
+ return;
+ }
+
+ ## Check for different possibilities. This is tedious and error-prone
+ # we match all possibilities (alttext, page, section/item)
+ #warn "DEBUG: link=$_\n";
+
+ # only page
+ # problem: a lot of people use (), or (1) or the like to indicate
+ # man page sections. But this collides with L<func()> that is supposed
+ # to point to an internal funtion...
+ my $page_rx = '[\w.-]+(?:::[\w.-]+)*(?:[(](?:\d\w*|)[)]|)';
+ # page name only
+ if(/^($page_rx)$/o) {
+ $page = $1;
+ $type = 'page';
+ }
+ # alttext, page and "section"
+ elsif(m{^(.*?)\s*[|]\s*($page_rx)\s*/\s*"(.+)"$}o) {
+ ($alttext, $page, $node) = ($1, $2, $3);
+ $type = 'section';
+ $quoted = 1; #... therefore | and / are allowed
+ }
+ # alttext and page
+ elsif(/^(.*?)\s*[|]\s*($page_rx)$/o) {
+ ($alttext, $page) = ($1, $2);
+ $type = 'page';
+ }
+ # alttext and "section"
+ elsif(m{^(.*?)\s*[|]\s*(?:/\s*|)"(.+)"$}) {
+ ($alttext, $node) = ($1,$2);
+ $type = 'section';
+ $quoted = 1;
+ }
+ # page and "section"
+ elsif(m{^($page_rx)\s*/\s*"(.+)"$}o) {
+ ($page, $node) = ($1, $2);
+ $type = 'section';
+ $quoted = 1;
+ }
+ # page and item
+ elsif(m{^($page_rx)\s*/\s*(.+)$}o) {
+ ($page, $node) = ($1, $2);
+ $type = 'item';
+ }
+ # only "section"
+ elsif(m{^/?"(.+)"$}) {
+ $node = $1;
+ $type = 'section';
+ $quoted = 1;
+ }
+ # only item
+ elsif(m{^\s*/(.+)$}) {
+ $node = $1;
+ $type = 'item';
+ }
+
+ # non-standard: Hyperlink with alt-text - doesn't remove protocol prefix, maybe it should?
+ elsif(/^ \s* (.*?) \s* [|] \s* (\w+:[^:\s] [^\s|]*?) \s* $/ix) {
+ ($alttext,$node) = ($1,$2);
+ $type = 'hyperlink';
+ }
+
+ # non-standard: Hyperlink
+ elsif(/^(\w+:[^:\s]\S*)$/i) {
+ $node = $1;
+ $type = 'hyperlink';
+ }
+ # alttext, page and item
+ elsif(m{^(.*?)\s*[|]\s*($page_rx)\s*/\s*(.+)$}o) {
+ ($alttext, $page, $node) = ($1, $2, $3);
+ $type = 'item';
+ }
+ # alttext and item
+ elsif(m{^(.*?)\s*[|]\s*/(.+)$}) {
+ ($alttext, $node) = ($1,$2);
+ }
+ # must be an item or a "malformed" section (without "")
+ else {
+ $node = $_;
+ $type = 'item';
+ }
+ # collapse whitespace in nodes
+ $node =~ s/\s+/ /gs;
+
+ # empty alternative text expands to node name
+ if(defined $alttext) {
+ if(!length($alttext)) {
+ $alttext = $node || $page;
+ }
+ }
+ else {
+ $alttext = '';
+ }
+
+ if($page =~ /[(]\w*[)]$/) {
+ $self->warning("(section) in '$page' deprecated");
+ }
+ if(!$quoted && $node =~ m{[|/]} && $type ne 'hyperlink') {
+ $self->warning("node '$node' contains non-escaped | or /");
+ }
+ if($alttext =~ m{[|/]}) {
+ $self->warning("alternative text '$node' contains non-escaped | or /");
+ }
+ $self->{-page} = $page;
+ $self->{-node} = $node;
+ $self->{-alttext} = $alttext;
+ #warn "DEBUG: page=$page section=$section item=$item alttext=$alttext\n";
+ $self->{-type} = $type;
+ $self->_construct_text();
+ 1;
+}
+
+sub _construct_text {
+ my $self = shift;
+ my $alttext = $self->alttext();
+ my $type = $self->type();
+ my $section = $self->node();
+ my $page = $self->page();
+ my $page_ext = '';
+ $page =~ s/([(]\w*[)])$// && ($page_ext = $1);
+ if($alttext) {
+ $self->{_text} = $alttext;
+ }
+ elsif($type eq 'hyperlink') {
+ $self->{_text} = $section;
+ }
+ else {
+ $self->{_text} = ($section || '') .
+ (($page && $section) ? ' in ' : '') .
+ "$page$page_ext";
+ }
+ # for being marked up later
+ # use the non-standard markers P<> and Q<>, so that the resulting
+ # text can be parsed by the translators. It's their job to put
+ # the correct hypertext around the linktext
+ if($alttext) {
+ $self->{_markup} = "Q<$alttext>";
+ }
+ elsif($type eq 'hyperlink') {
+ $self->{_markup} = "Q<$section>";
+ }
+ else {
+ $self->{_markup} = (!$section ? '' : "Q<$section>") .
+ ($page ? ($section ? ' in ':'') . "P<$page>$page_ext" : '');
+ }
+}
+
+=item $link-E<gt>markup($string)
+
+Set/retrieve the textual value of the link. This string contains special
+markers C<PE<lt>E<gt>> and C<QE<lt>E<gt>> that should be expanded by the
+translator's interior sequence expansion engine to the
+formatter-specific code to highlight/activate the hyperlink. The details
+have to be implemented in the translator.
+
+=cut
+
+#' retrieve/set markuped text
+sub markup {
+ return (@_ > 1) ? ($_[0]->{_markup} = $_[1]) : $_[0]->{_markup};
+}
+
+=item $link-E<gt>text()
+
+This method returns the textual representation of the hyperlink as above,
+but without markers (read only). Depending on the link type this is one of
+the following alternatives (the + and * denote the portions of the text
+that are marked up):
+
+ +perl+ L<perl>
+ *$|* in +perlvar+ L<perlvar/$|>
+ *OPTIONS* in +perldoc+ L<perldoc/"OPTIONS">
+ *DESCRIPTION* L<"DESCRIPTION">
+
+=cut
+
+# The complete link's text
+sub text {
+ return $_[0]->{_text};
+}
+
+=item $link-E<gt>warning()
+
+After parsing, this method returns any warnings encountered during the
+parsing process.
+
+=cut
+
+# Set/retrieve warnings
+sub warning {
+ my $self = shift;
+ if(@_) {
+ push(@{$self->{_warnings}}, @_);
+ return @_;
+ }
+ return @{$self->{_warnings}};
+}
+
+=item $link-E<gt>file()
+
+=item $link-E<gt>line()
+
+Just simple slots for storing information about the line and the file
+the link was encountered in. Has to be filled in manually.
+
+=cut
+
+# The line in the file the link appears
+sub line {
+ return (@_ > 1) ? ($_[0]->{-line} = $_[1]) : $_[0]->{-line};
+}
+
+# The POD file name the link appears in
+sub file {
+ return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
+}
+
+=item $link-E<gt>page()
+
+This method sets or returns the POD page this link points to.
+
+=cut
+
+# The POD page the link appears on
+sub page {
+ if (@_ > 1) {
+ $_[0]->{-page} = $_[1];
+ $_[0]->_construct_text();
+ }
+ return $_[0]->{-page};
+}
+
+=item $link-E<gt>node()
+
+As above, but the destination node text of the link.
+
+=cut
+
+# The link destination
+sub node {
+ if (@_ > 1) {
+ $_[0]->{-node} = $_[1];
+ $_[0]->_construct_text();
+ }
+ return $_[0]->{-node};
+}
+
+=item $link-E<gt>alttext()
+
+Sets or returns an alternative text specified in the link.
+
+=cut
+
+# Potential alternative text
+sub alttext {
+ if (@_ > 1) {
+ $_[0]->{-alttext} = $_[1];
+ $_[0]->_construct_text();
+ }
+ return $_[0]->{-alttext};
+}
+
+=item $link-E<gt>type()
+
+The node type, either C<section> or C<item>. As an unofficial type,
+there is also C<hyperlink>, derived from e.g. C<LE<lt>http://perl.comE<gt>>
+
+=cut
+
+# The type: item or headn
+sub type {
+ return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type};
+}
+
+=item $link-E<gt>link()
+
+Returns the link as contents of C<LE<lt>E<gt>>. Reciprocal to B<parse()>.
+
+=back
+
+=cut
+
+# The link itself
+sub link {
+ my $self = shift;
+ my $link = $self->page() || '';
+ if($self->node()) {
+ my $node = $self->node();
+ $node =~ s/\|/E<verbar>/g;
+ $node =~ s{/}{E<sol>}g;
+ if($self->type() eq 'section') {
+ $link .= ($link ? '/' : '') . '"' . $node . '"';
+ }
+ elsif($self->type() eq 'hyperlink') {
+ $link = $self->node();
+ }
+ else { # item
+ $link .= '/' . $node;
+ }
+ }
+ if($self->alttext()) {
+ my $text = $self->alttext();
+ $text =~ s/\|/E<verbar>/g;
+ $text =~ s{/}{E<sol>}g;
+ $link = "$text|$link";
+ }
+ return $link;
+}
+
+sub _invalid_link {
+ my ($msg) = @_;
+ # this sets @_
+ #eval { die "$msg\n" };
+ #chomp $@;
+ $@ = $msg; # this seems to work, too!
+ return;
+}
+
+#-----------------------------------------------------------------------------
+# Pod::Cache
+#
+# class to hold POD page details
+#-----------------------------------------------------------------------------
+
+package Pod::Cache;
+
+=head2 Pod::Cache
+
+B<Pod::Cache> holds information about a set of POD documents,
+especially the nodes for hyperlinks.
+The following methods are available:
+
+=over 4
+
+=item Pod::Cache-E<gt>new()
+
+Create a new cache object. This object can hold an arbitrary number of
+POD documents of class Pod::Cache::Item.
+
+=cut
+
+sub new {
+ my $this = shift;
+ my $class = ref($this) || $this;
+ my $self = [];
+ bless $self, $class;
+ return $self;
+}
+
+=item $cache-E<gt>item()
+
+Add a new item to the cache. Without arguments, this method returns a
+list of all cache elements.
+
+=cut
+
+sub item {
+ my ($self,%param) = @_;
+ if(%param) {
+ my $item = Pod::Cache::Item->new(%param);
+ push(@$self, $item);
+ return $item;
+ }
+ else {
+ return @{$self};
+ }
+}
+
+=item $cache-E<gt>find_page($name)
+
+Look for a POD document named C<$name> in the cache. Returns the
+reference to the corresponding Pod::Cache::Item object or undef if
+not found.
+
+=back
+
+=cut
+
+sub find_page {
+ my ($self,$page) = @_;
+ foreach(@$self) {
+ if($_->page() eq $page) {
+ return $_;
+ }
+ }
+ return;
+}
+
+package Pod::Cache::Item;
+
+=head2 Pod::Cache::Item
+
+B<Pod::Cache::Item> holds information about individual POD documents,
+that can be grouped in a Pod::Cache object.
+It is intended to hold information about the hyperlink nodes of POD
+documents.
+The following methods are available:
+
+=over 4
+
+=item Pod::Cache::Item-E<gt>new()
+
+Create a new object.
+
+=cut
+
+sub new {
+ my $this = shift;
+ my $class = ref($this) || $this;
+ my %params = @_;
+ my $self = {%params};
+ bless $self, $class;
+ $self->initialize();
+ return $self;
+}
+
+sub initialize {
+ my $self = shift;
+ $self->{-nodes} = [] unless(defined $self->{-nodes});
+}
+
+=item $cacheitem-E<gt>page()
+
+Set/retrieve the POD document name (e.g. "Pod::Parser").
+
+=cut
+
+# The POD page
+sub page {
+ return (@_ > 1) ? ($_[0]->{-page} = $_[1]) : $_[0]->{-page};
+}
+
+=item $cacheitem-E<gt>description()
+
+Set/retrieve the POD short description as found in the C<=head1 NAME>
+section.
+
+=cut
+
+# The POD description, taken out of NAME if present
+sub description {
+ return (@_ > 1) ? ($_[0]->{-description} = $_[1]) : $_[0]->{-description};
+}
+
+=item $cacheitem-E<gt>path()
+
+Set/retrieve the POD file storage path.
+
+=cut
+
+# The file path
+sub path {
+ return (@_ > 1) ? ($_[0]->{-path} = $_[1]) : $_[0]->{-path};
+}
+
+=item $cacheitem-E<gt>file()
+
+Set/retrieve the POD file name.
+
+=cut
+
+# The POD file name
+sub file {
+ return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file};
+}
+
+=item $cacheitem-E<gt>nodes()
+
+Add a node (or a list of nodes) to the document's node list. Note that
+the order is kept, i.e. start with the first node and end with the last.
+If no argument is given, the current list of nodes is returned in the
+same order the nodes have been added.
+A node can be any scalar, but usually is a pair of node string and
+unique id for the C<find_node> method to work correctly.
+
+=cut
+
+# The POD nodes
+sub nodes {
+ my ($self,@nodes) = @_;
+ if(@nodes) {
+ push(@{$self->{-nodes}}, @nodes);
+ return @nodes;
+ }
+ else {
+ return @{$self->{-nodes}};
+ }
+}
+
+=item $cacheitem-E<gt>find_node($name)
+
+Look for a node or index entry named C<$name> in the object.
+Returns the unique id of the node (i.e. the second element of the array
+stored in the node array) or undef if not found.
+
+=cut
+
+sub find_node {
+ my ($self,$node) = @_;
+ my @search;
+ push(@search, @{$self->{-nodes}}) if($self->{-nodes});
+ push(@search, @{$self->{-idx}}) if($self->{-idx});
+ foreach(@search) {
+ if($_->[0] eq $node) {
+ return $_->[1]; # id
+ }
+ }
+ return;
+}
+
+=item $cacheitem-E<gt>idx()
+
+Add an index entry (or a list of them) to the document's index list. Note that
+the order is kept, i.e. start with the first node and end with the last.
+If no argument is given, the current list of index entries is returned in the
+same order the entries have been added.
+An index entry can be any scalar, but usually is a pair of string and
+unique id.
+
+=back
+
+=cut
+
+# The POD index entries
+sub idx {
+ my ($self,@idx) = @_;
+ if(@idx) {
+ push(@{$self->{-idx}}, @idx);
+ return @idx;
+ }
+ else {
+ return @{$self->{-idx}};
+ }
+}
+
+=head1 AUTHOR
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Marek Rouchal E<lt>marekr@cpan.orgE<gt>, borrowing
+a lot of things from L<pod2man> and L<pod2roff> as well as other POD
+processing tools by Tom Christiansen, Brad Appleton and Russ Allbery.
+
+B<Pod::ParseUtils> is part of the L<Pod::Parser> distribution.
+
+=head1 SEE ALSO
+
+L<pod2man>, L<pod2roff>, L<Pod::Parser>, L<Pod::Checker>,
+L<pod2html>
+
+=cut
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/Parser.pm b/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/Parser.pm
index 9a6acd62f18..4b4fecfbdd0 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/Parser.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/Parser.pm
@@ -1,1832 +1,1836 @@
-#############################################################################
-# Pod/Parser.pm -- package which defines a base class for parsing POD docs.
-#
-# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
-# This file is part of "PodParser". PodParser is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-package Pod::Parser;
-use strict;
-
-## These "variables" are used as local "glob aliases" for performance
-use vars qw($VERSION @ISA %myData %myOpts @input_stack);
-$VERSION = '1.51'; ## Current version of this package
-require 5.005; ## requires this Perl version or later
-
-#############################################################################
-
-=head1 NAME
-
-Pod::Parser - base class for creating POD filters and translators
-
-=head1 SYNOPSIS
-
- use Pod::Parser;
-
- package MyParser;
- @ISA = qw(Pod::Parser);
-
- sub command {
- my ($parser, $command, $paragraph, $line_num) = @_;
- ## Interpret the command and its text; sample actions might be:
- if ($command eq 'head1') { ... }
- elsif ($command eq 'head2') { ... }
- ## ... other commands and their actions
- my $out_fh = $parser->output_handle();
- my $expansion = $parser->interpolate($paragraph, $line_num);
- print $out_fh $expansion;
- }
-
- sub verbatim {
- my ($parser, $paragraph, $line_num) = @_;
- ## Format verbatim paragraph; sample actions might be:
- my $out_fh = $parser->output_handle();
- print $out_fh $paragraph;
- }
-
- sub textblock {
- my ($parser, $paragraph, $line_num) = @_;
- ## Translate/Format this block of text; sample actions might be:
- my $out_fh = $parser->output_handle();
- my $expansion = $parser->interpolate($paragraph, $line_num);
- print $out_fh $expansion;
- }
-
- sub interior_sequence {
- my ($parser, $seq_command, $seq_argument) = @_;
- ## Expand an interior sequence; sample actions might be:
- return "*$seq_argument*" if ($seq_command eq 'B');
- return "`$seq_argument'" if ($seq_command eq 'C');
- return "_${seq_argument}_'" if ($seq_command eq 'I');
- ## ... other sequence commands and their resulting text
- }
-
- package main;
-
- ## Create a parser object and have it parse file whose name was
- ## given on the command-line (use STDIN if no files were given).
- $parser = new MyParser();
- $parser->parse_from_filehandle(\*STDIN) if (@ARGV == 0);
- for (@ARGV) { $parser->parse_from_file($_); }
-
-=head1 REQUIRES
-
-perl5.005, Pod::InputObjects, Exporter, Symbol, Carp
-
-=head1 EXPORTS
-
-Nothing.
-
-=head1 DESCRIPTION
-
-B<Pod::Parser> is a base class for creating POD filters and translators.
-It handles most of the effort involved with parsing the POD sections
-from an input stream, leaving subclasses free to be concerned only with
-performing the actual translation of text.
-
-B<Pod::Parser> parses PODs, and makes method calls to handle the various
-components of the POD. Subclasses of B<Pod::Parser> override these methods
-to translate the POD into whatever output format they desire.
-
-=head1 QUICK OVERVIEW
-
-To create a POD filter for translating POD documentation into some other
-format, you create a subclass of B<Pod::Parser> which typically overrides
-just the base class implementation for the following methods:
-
-=over 2
-
-=item *
-
-B<command()>
-
-=item *
-
-B<verbatim()>
-
-=item *
-
-B<textblock()>
-
-=item *
-
-B<interior_sequence()>
-
-=back
-
-You may also want to override the B<begin_input()> and B<end_input()>
-methods for your subclass (to perform any needed per-file and/or
-per-document initialization or cleanup).
-
-If you need to perform any preprocessing of input before it is parsed
-you may want to override one or more of B<preprocess_line()> and/or
-B<preprocess_paragraph()>.
-
-Sometimes it may be necessary to make more than one pass over the input
-files. If this is the case you have several options. You can make the
-first pass using B<Pod::Parser> and override your methods to store the
-intermediate results in memory somewhere for the B<end_pod()> method to
-process. You could use B<Pod::Parser> for several passes with an
-appropriate state variable to control the operation for each pass. If
-your input source can't be reset to start at the beginning, you can
-store it in some other structure as a string or an array and have that
-structure implement a B<getline()> method (which is all that
-B<parse_from_filehandle()> uses to read input).
-
-Feel free to add any member data fields you need to keep track of things
-like current font, indentation, horizontal or vertical position, or
-whatever else you like. Be sure to read L<"PRIVATE METHODS AND DATA">
-to avoid name collisions.
-
-For the most part, the B<Pod::Parser> base class should be able to
-do most of the input parsing for you and leave you free to worry about
-how to interpret the commands and translate the result.
-
-Note that all we have described here in this quick overview is the
-simplest most straightforward use of B<Pod::Parser> to do stream-based
-parsing. It is also possible to use the B<Pod::Parser::parse_text> function
-to do more sophisticated tree-based parsing. See L<"TREE-BASED PARSING">.
-
-=head1 PARSING OPTIONS
-
-A I<parse-option> is simply a named option of B<Pod::Parser> with a
-value that corresponds to a certain specified behavior. These various
-behaviors of B<Pod::Parser> may be enabled/disabled by setting
-or unsetting one or more I<parse-options> using the B<parseopts()> method.
-The set of currently accepted parse-options is as follows:
-
-=over 3
-
-=item B<-want_nonPODs> (default: unset)
-
-Normally (by default) B<Pod::Parser> will only provide access to
-the POD sections of the input. Input paragraphs that are not part
-of the POD-format documentation are not made available to the caller
-(not even using B<preprocess_paragraph()>). Setting this option to a
-non-empty, non-zero value will allow B<preprocess_paragraph()> to see
-non-POD sections of the input as well as POD sections. The B<cutting()>
-method can be used to determine if the corresponding paragraph is a POD
-paragraph, or some other input paragraph.
-
-=item B<-process_cut_cmd> (default: unset)
-
-Normally (by default) B<Pod::Parser> handles the C<=cut> POD directive
-by itself and does not pass it on to the caller for processing. Setting
-this option to a non-empty, non-zero value will cause B<Pod::Parser> to
-pass the C<=cut> directive to the caller just like any other POD command
-(and hence it may be processed by the B<command()> method).
-
-B<Pod::Parser> will still interpret the C<=cut> directive to mean that
-"cutting mode" has been (re)entered, but the caller will get a chance
-to capture the actual C<=cut> paragraph itself for whatever purpose
-it desires.
-
-=item B<-warnings> (default: unset)
-
-Normally (by default) B<Pod::Parser> recognizes a bare minimum of
-pod syntax errors and warnings and issues diagnostic messages
-for errors, but not for warnings. (Use B<Pod::Checker> to do more
-thorough checking of POD syntax.) Setting this option to a non-empty,
-non-zero value will cause B<Pod::Parser> to issue diagnostics for
-the few warnings it recognizes as well as the errors.
-
-=back
-
-Please see L<"parseopts()"> for a complete description of the interface
-for the setting and unsetting of parse-options.
-
-=cut
-
-#############################################################################
-
-#use diagnostics;
-use Pod::InputObjects;
-use Carp;
-use Exporter;
-BEGIN {
- if ($] < 5.006) {
- require Symbol;
- import Symbol;
- }
-}
-@ISA = qw(Exporter);
-
-#############################################################################
-
-=head1 RECOMMENDED SUBROUTINE/METHOD OVERRIDES
-
-B<Pod::Parser> provides several methods which most subclasses will probably
-want to override. These methods are as follows:
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head1 B<command()>
-
- $parser->command($cmd,$text,$line_num,$pod_para);
-
-This method should be overridden by subclasses to take the appropriate
-action when a POD command paragraph (denoted by a line beginning with
-"=") is encountered. When such a POD directive is seen in the input,
-this method is called and is passed:
-
-=over 3
-
-=item C<$cmd>
-
-the name of the command for this POD paragraph
-
-=item C<$text>
-
-the paragraph text for the given POD paragraph command.
-
-=item C<$line_num>
-
-the line-number of the beginning of the paragraph
-
-=item C<$pod_para>
-
-a reference to a C<Pod::Paragraph> object which contains further
-information about the paragraph command (see L<Pod::InputObjects>
-for details).
-
-=back
-
-B<Note> that this method I<is> called for C<=pod> paragraphs.
-
-The base class implementation of this method simply treats the raw POD
-command as normal block of paragraph text (invoking the B<textblock()>
-method with the command paragraph).
-
-=cut
-
-sub command {
- my ($self, $cmd, $text, $line_num, $pod_para) = @_;
- ## Just treat this like a textblock
- $self->textblock($pod_para->raw_text(), $line_num, $pod_para);
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<verbatim()>
-
- $parser->verbatim($text,$line_num,$pod_para);
-
-This method may be overridden by subclasses to take the appropriate
-action when a block of verbatim text is encountered. It is passed the
-following parameters:
-
-=over 3
-
-=item C<$text>
-
-the block of text for the verbatim paragraph
-
-=item C<$line_num>
-
-the line-number of the beginning of the paragraph
-
-=item C<$pod_para>
-
-a reference to a C<Pod::Paragraph> object which contains further
-information about the paragraph (see L<Pod::InputObjects>
-for details).
-
-=back
-
-The base class implementation of this method simply prints the textblock
-(unmodified) to the output filehandle.
-
-=cut
-
-sub verbatim {
- my ($self, $text, $line_num, $pod_para) = @_;
- my $out_fh = $self->{_OUTPUT};
- print $out_fh $text;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<textblock()>
-
- $parser->textblock($text,$line_num,$pod_para);
-
-This method may be overridden by subclasses to take the appropriate
-action when a normal block of POD text is encountered (although the base
-class method will usually do what you want). It is passed the following
-parameters:
-
-=over 3
-
-=item C<$text>
-
-the block of text for the a POD paragraph
-
-=item C<$line_num>
-
-the line-number of the beginning of the paragraph
-
-=item C<$pod_para>
-
-a reference to a C<Pod::Paragraph> object which contains further
-information about the paragraph (see L<Pod::InputObjects>
-for details).
-
-=back
-
-In order to process interior sequences, subclasses implementations of
-this method will probably want to invoke either B<interpolate()> or
-B<parse_text()>, passing it the text block C<$text>, and the corresponding
-line number in C<$line_num>, and then perform any desired processing upon
-the returned result.
-
-The base class implementation of this method simply prints the text block
-as it occurred in the input stream).
-
-=cut
-
-sub textblock {
- my ($self, $text, $line_num, $pod_para) = @_;
- my $out_fh = $self->{_OUTPUT};
- print $out_fh $self->interpolate($text, $line_num);
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<interior_sequence()>
-
- $parser->interior_sequence($seq_cmd,$seq_arg,$pod_seq);
-
-This method should be overridden by subclasses to take the appropriate
-action when an interior sequence is encountered. An interior sequence is
-an embedded command within a block of text which appears as a command
-name (usually a single uppercase character) followed immediately by a
-string of text which is enclosed in angle brackets. This method is
-passed the sequence command C<$seq_cmd> and the corresponding text
-C<$seq_arg>. It is invoked by the B<interpolate()> method for each interior
-sequence that occurs in the string that it is passed. It should return
-the desired text string to be used in place of the interior sequence.
-The C<$pod_seq> argument is a reference to a C<Pod::InteriorSequence>
-object which contains further information about the interior sequence.
-Please see L<Pod::InputObjects> for details if you need to access this
-additional information.
-
-Subclass implementations of this method may wish to invoke the
-B<nested()> method of C<$pod_seq> to see if it is nested inside
-some other interior-sequence (and if so, which kind).
-
-The base class implementation of the B<interior_sequence()> method
-simply returns the raw text of the interior sequence (as it occurred
-in the input) to the caller.
-
-=cut
-
-sub interior_sequence {
- my ($self, $seq_cmd, $seq_arg, $pod_seq) = @_;
- ## Just return the raw text of the interior sequence
- return $pod_seq->raw_text();
-}
-
-#############################################################################
-
-=head1 OPTIONAL SUBROUTINE/METHOD OVERRIDES
-
-B<Pod::Parser> provides several methods which subclasses may want to override
-to perform any special pre/post-processing. These methods do I<not> have to
-be overridden, but it may be useful for subclasses to take advantage of them.
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head1 B<new()>
-
- my $parser = Pod::Parser->new();
-
-This is the constructor for B<Pod::Parser> and its subclasses. You
-I<do not> need to override this method! It is capable of constructing
-subclass objects as well as base class objects, provided you use
-any of the following constructor invocation styles:
-
- my $parser1 = MyParser->new();
- my $parser2 = new MyParser();
- my $parser3 = $parser2->new();
-
-where C<MyParser> is some subclass of B<Pod::Parser>.
-
-Using the syntax C<MyParser::new()> to invoke the constructor is I<not>
-recommended, but if you insist on being able to do this, then the
-subclass I<will> need to override the B<new()> constructor method. If
-you do override the constructor, you I<must> be sure to invoke the
-B<initialize()> method of the newly blessed object.
-
-Using any of the above invocations, the first argument to the
-constructor is always the corresponding package name (or object
-reference). No other arguments are required, but if desired, an
-associative array (or hash-table) my be passed to the B<new()>
-constructor, as in:
-
- my $parser1 = MyParser->new( MYDATA => $value1, MOREDATA => $value2 );
- my $parser2 = new MyParser( -myflag => 1 );
-
-All arguments passed to the B<new()> constructor will be treated as
-key/value pairs in a hash-table. The newly constructed object will be
-initialized by copying the contents of the given hash-table (which may
-have been empty). The B<new()> constructor for this class and all of its
-subclasses returns a blessed reference to the initialized object (hash-table).
-
-=cut
-
-sub new {
- ## Determine if we were called via an object-ref or a classname
- my ($this,%params) = @_;
- my $class = ref($this) || $this;
- ## Any remaining arguments are treated as initial values for the
- ## hash that is used to represent this object.
- my $self = { %params };
- ## Bless ourselves into the desired class and perform any initialization
- bless $self, $class;
- $self->initialize();
- return $self;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<initialize()>
-
- $parser->initialize();
-
-This method performs any necessary object initialization. It takes no
-arguments (other than the object instance of course, which is typically
-copied to a local variable named C<$self>). If subclasses override this
-method then they I<must> be sure to invoke C<$self-E<gt>SUPER::initialize()>.
-
-=cut
-
-sub initialize {
- #my $self = shift;
- #return;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<begin_pod()>
-
- $parser->begin_pod();
-
-This method is invoked at the beginning of processing for each POD
-document that is encountered in the input. Subclasses should override
-this method to perform any per-document initialization.
-
-=cut
-
-sub begin_pod {
- #my $self = shift;
- #return;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<begin_input()>
-
- $parser->begin_input();
-
-This method is invoked by B<parse_from_filehandle()> immediately I<before>
-processing input from a filehandle. The base class implementation does
-nothing, however, subclasses may override it to perform any per-file
-initializations.
-
-Note that if multiple files are parsed for a single POD document
-(perhaps the result of some future C<=include> directive) this method
-is invoked for every file that is parsed. If you wish to perform certain
-initializations once per document, then you should use B<begin_pod()>.
-
-=cut
-
-sub begin_input {
- #my $self = shift;
- #return;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<end_input()>
-
- $parser->end_input();
-
-This method is invoked by B<parse_from_filehandle()> immediately I<after>
-processing input from a filehandle. The base class implementation does
-nothing, however, subclasses may override it to perform any per-file
-cleanup actions.
-
-Please note that if multiple files are parsed for a single POD document
-(perhaps the result of some kind of C<=include> directive) this method
-is invoked for every file that is parsed. If you wish to perform certain
-cleanup actions once per document, then you should use B<end_pod()>.
-
-=cut
-
-sub end_input {
- #my $self = shift;
- #return;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<end_pod()>
-
- $parser->end_pod();
-
-This method is invoked at the end of processing for each POD document
-that is encountered in the input. Subclasses should override this method
-to perform any per-document finalization.
-
-=cut
-
-sub end_pod {
- #my $self = shift;
- #return;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<preprocess_line()>
-
- $textline = $parser->preprocess_line($text, $line_num);
-
-This method should be overridden by subclasses that wish to perform
-any kind of preprocessing for each I<line> of input (I<before> it has
-been determined whether or not it is part of a POD paragraph). The
-parameter C<$text> is the input line; and the parameter C<$line_num> is
-the line number of the corresponding text line.
-
-The value returned should correspond to the new text to use in its
-place. If the empty string or an undefined value is returned then no
-further processing will be performed for this line.
-
-Please note that the B<preprocess_line()> method is invoked I<before>
-the B<preprocess_paragraph()> method. After all (possibly preprocessed)
-lines in a paragraph have been assembled together and it has been
-determined that the paragraph is part of the POD documentation from one
-of the selected sections, then B<preprocess_paragraph()> is invoked.
-
-The base class implementation of this method returns the given text.
-
-=cut
-
-sub preprocess_line {
- my ($self, $text, $line_num) = @_;
- return $text;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<preprocess_paragraph()>
-
- $textblock = $parser->preprocess_paragraph($text, $line_num);
-
-This method should be overridden by subclasses that wish to perform any
-kind of preprocessing for each block (paragraph) of POD documentation
-that appears in the input stream. The parameter C<$text> is the POD
-paragraph from the input file; and the parameter C<$line_num> is the
-line number for the beginning of the corresponding paragraph.
-
-The value returned should correspond to the new text to use in its
-place If the empty string is returned or an undefined value is
-returned, then the given C<$text> is ignored (not processed).
-
-This method is invoked after gathering up all the lines in a paragraph
-and after determining the cutting state of the paragraph,
-but before trying to further parse or interpret them. After
-B<preprocess_paragraph()> returns, the current cutting state (which
-is returned by C<$self-E<gt>cutting()>) is examined. If it evaluates
-to true then input text (including the given C<$text>) is cut (not
-processed) until the next POD directive is encountered.
-
-Please note that the B<preprocess_line()> method is invoked I<before>
-the B<preprocess_paragraph()> method. After all (possibly preprocessed)
-lines in a paragraph have been assembled together and either it has been
-determined that the paragraph is part of the POD documentation from one
-of the selected sections or the C<-want_nonPODs> option is true,
-then B<preprocess_paragraph()> is invoked.
-
-The base class implementation of this method returns the given text.
-
-=cut
-
-sub preprocess_paragraph {
- my ($self, $text, $line_num) = @_;
- return $text;
-}
-
-#############################################################################
-
-=head1 METHODS FOR PARSING AND PROCESSING
-
-B<Pod::Parser> provides several methods to process input text. These
-methods typically won't need to be overridden (and in some cases they
-can't be overridden), but subclasses may want to invoke them to exploit
-their functionality.
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head1 B<parse_text()>
-
- $ptree1 = $parser->parse_text($text, $line_num);
- $ptree2 = $parser->parse_text({%opts}, $text, $line_num);
- $ptree3 = $parser->parse_text(\%opts, $text, $line_num);
-
-This method is useful if you need to perform your own interpolation
-of interior sequences and can't rely upon B<interpolate> to expand
-them in simple bottom-up order.
-
-The parameter C<$text> is a string or block of text to be parsed
-for interior sequences; and the parameter C<$line_num> is the
-line number corresponding to the beginning of C<$text>.
-
-B<parse_text()> will parse the given text into a parse-tree of "nodes."
-and interior-sequences. Each "node" in the parse tree is either a
-text-string, or a B<Pod::InteriorSequence>. The result returned is a
-parse-tree of type B<Pod::ParseTree>. Please see L<Pod::InputObjects>
-for more information about B<Pod::InteriorSequence> and B<Pod::ParseTree>.
-
-If desired, an optional hash-ref may be specified as the first argument
-to customize certain aspects of the parse-tree that is created and
-returned. The set of recognized option keywords are:
-
-=over 3
-
-=item B<-expand_seq> =E<gt> I<code-ref>|I<method-name>
-
-Normally, the parse-tree returned by B<parse_text()> will contain an
-unexpanded C<Pod::InteriorSequence> object for each interior-sequence
-encountered. Specifying B<-expand_seq> tells B<parse_text()> to "expand"
-every interior-sequence it sees by invoking the referenced function
-(or named method of the parser object) and using the return value as the
-expanded result.
-
-If a subroutine reference was given, it is invoked as:
-
- &$code_ref( $parser, $sequence )
-
-and if a method-name was given, it is invoked as:
-
- $parser->method_name( $sequence )
-
-where C<$parser> is a reference to the parser object, and C<$sequence>
-is a reference to the interior-sequence object.
-[I<NOTE>: If the B<interior_sequence()> method is specified, then it is
-invoked according to the interface specified in L<"interior_sequence()">].
-
-=item B<-expand_text> =E<gt> I<code-ref>|I<method-name>
-
-Normally, the parse-tree returned by B<parse_text()> will contain a
-text-string for each contiguous sequence of characters outside of an
-interior-sequence. Specifying B<-expand_text> tells B<parse_text()> to
-"preprocess" every such text-string it sees by invoking the referenced
-function (or named method of the parser object) and using the return value
-as the preprocessed (or "expanded") result. [Note that if the result is
-an interior-sequence, then it will I<not> be expanded as specified by the
-B<-expand_seq> option; Any such recursive expansion needs to be handled by
-the specified callback routine.]
-
-If a subroutine reference was given, it is invoked as:
-
- &$code_ref( $parser, $text, $ptree_node )
-
-and if a method-name was given, it is invoked as:
-
- $parser->method_name( $text, $ptree_node )
-
-where C<$parser> is a reference to the parser object, C<$text> is the
-text-string encountered, and C<$ptree_node> is a reference to the current
-node in the parse-tree (usually an interior-sequence object or else the
-top-level node of the parse-tree).
-
-=item B<-expand_ptree> =E<gt> I<code-ref>|I<method-name>
-
-Rather than returning a C<Pod::ParseTree>, pass the parse-tree as an
-argument to the referenced subroutine (or named method of the parser
-object) and return the result instead of the parse-tree object.
-
-If a subroutine reference was given, it is invoked as:
-
- &$code_ref( $parser, $ptree )
-
-and if a method-name was given, it is invoked as:
-
- $parser->method_name( $ptree )
-
-where C<$parser> is a reference to the parser object, and C<$ptree>
-is a reference to the parse-tree object.
-
-=back
-
-=cut
-
-sub parse_text {
- my $self = shift;
- local $_ = '';
-
- ## Get options and set any defaults
- my %opts = (ref $_[0]) ? %{ shift() } : ();
- my $expand_seq = $opts{'-expand_seq'} || undef;
- my $expand_text = $opts{'-expand_text'} || undef;
- my $expand_ptree = $opts{'-expand_ptree'} || undef;
-
- my $text = shift;
- my $line = shift;
- my $file = $self->input_file();
- my $cmd = "";
-
- ## Convert method calls into closures, for our convenience
- my $xseq_sub = $expand_seq;
- my $xtext_sub = $expand_text;
- my $xptree_sub = $expand_ptree;
- if (defined $expand_seq and $expand_seq eq 'interior_sequence') {
- ## If 'interior_sequence' is the method to use, we have to pass
- ## more than just the sequence object, we also need to pass the
- ## sequence name and text.
- $xseq_sub = sub {
- my ($sself, $iseq) = @_;
- my $args = join('', $iseq->parse_tree->children);
- return $sself->interior_sequence($iseq->name, $args, $iseq);
- };
- }
- ref $xseq_sub or $xseq_sub = sub { shift()->$expand_seq(@_) };
- ref $xtext_sub or $xtext_sub = sub { shift()->$expand_text(@_) };
- ref $xptree_sub or $xptree_sub = sub { shift()->$expand_ptree(@_) };
-
- ## Keep track of the "current" interior sequence, and maintain a stack
- ## of "in progress" sequences.
- ##
- ## NOTE that we push our own "accumulator" at the very beginning of the
- ## stack. It's really a parse-tree, not a sequence; but it implements
- ## the methods we need so we can use it to gather-up all the sequences
- ## and strings we parse. Thus, by the end of our parsing, it should be
- ## the only thing left on our stack and all we have to do is return it!
- ##
- my $seq = Pod::ParseTree->new();
- my @seq_stack = ($seq);
- my ($ldelim, $rdelim) = ('', '');
-
- ## Iterate over all sequence starts text (NOTE: split with
- ## capturing parens keeps the delimiters)
- $_ = $text;
- my @tokens = split /([A-Z]<(?:<+(?:\r?\n|[ \t]))?)/;
- while ( @tokens ) {
- $_ = shift @tokens;
- ## Look for the beginning of a sequence
- if ( /^([A-Z])(<(?:<+(?:\r?\n|[ \t]))?)$/ ) {
- ## Push a new sequence onto the stack of those "in-progress"
- my $ldelim_orig;
- ($cmd, $ldelim_orig) = ($1, $2);
- ($ldelim = $ldelim_orig) =~ s/\s+$//;
- ($rdelim = $ldelim) =~ tr/</>/;
- $seq = Pod::InteriorSequence->new(
- -name => $cmd,
- -ldelim => $ldelim_orig, -rdelim => $rdelim,
- -file => $file, -line => $line
- );
- (@seq_stack > 1) and $seq->nested($seq_stack[-1]);
- push @seq_stack, $seq;
- }
- ## Look for sequence ending
- elsif ( @seq_stack > 1 ) {
- ## Make sure we match the right kind of closing delimiter
- my ($seq_end, $post_seq) = ('', '');
- if ( ($ldelim eq '<' and /\A(.*?)(>)/s)
- or /\A(.*?)(\s+$rdelim)/s )
- {
- ## Found end-of-sequence, capture the interior and the
- ## closing the delimiter, and put the rest back on the
- ## token-list
- $post_seq = substr($_, length($1) + length($2));
- ($_, $seq_end) = ($1, $2);
- (length $post_seq) and unshift @tokens, $post_seq;
- }
- if (length) {
- ## In the middle of a sequence, append this text to it, and
- ## dont forget to "expand" it if that's what the caller wanted
- $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_);
- $_ .= $seq_end;
- }
- if (length $seq_end) {
- ## End of current sequence, record terminating delimiter
- $seq->rdelim($seq_end);
- ## Pop it off the stack of "in progress" sequences
- pop @seq_stack;
- ## Append result to its parent in current parse tree
- $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq)
- : $seq);
- ## Remember the current cmd-name and left-delimiter
- if(@seq_stack > 1) {
- $cmd = $seq_stack[-1]->name;
- $ldelim = $seq_stack[-1]->ldelim;
- $rdelim = $seq_stack[-1]->rdelim;
- } else {
- $cmd = $ldelim = $rdelim = '';
- }
- }
- }
- elsif (length) {
- ## In the middle of a sequence, append this text to it, and
- ## dont forget to "expand" it if that's what the caller wanted
- $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_);
- }
- ## Keep track of line count
- $line += /\n/;
- ## Remember the "current" sequence
- $seq = $seq_stack[-1];
- }
-
- ## Handle unterminated sequences
- my $errorsub = (@seq_stack > 1) ? $self->errorsub() : undef;
- while (@seq_stack > 1) {
- ($cmd, $file, $line) = ($seq->name, $seq->file_line);
- $ldelim = $seq->ldelim;
- ($rdelim = $ldelim) =~ tr/</>/;
- $rdelim =~ s/^(\S+)(\s*)$/$2$1/;
- pop @seq_stack;
- my $errmsg = "*** ERROR: unterminated ${cmd}${ldelim}...${rdelim}".
- " at line $line in file $file\n";
- (ref $errorsub) and &{$errorsub}($errmsg)
- or (defined $errorsub) and $self->$errorsub($errmsg)
- or carp($errmsg);
- $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq) : $seq);
- $seq = $seq_stack[-1];
- }
-
- ## Return the resulting parse-tree
- my $ptree = (pop @seq_stack)->parse_tree;
- return $expand_ptree ? &$xptree_sub($self, $ptree) : $ptree;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<interpolate()>
-
- $textblock = $parser->interpolate($text, $line_num);
-
-This method translates all text (including any embedded interior sequences)
-in the given text string C<$text> and returns the interpolated result. The
-parameter C<$line_num> is the line number corresponding to the beginning
-of C<$text>.
-
-B<interpolate()> merely invokes a private method to recursively expand
-nested interior sequences in bottom-up order (innermost sequences are
-expanded first). If there is a need to expand nested sequences in
-some alternate order, use B<parse_text> instead.
-
-=cut
-
-sub interpolate {
- my($self, $text, $line_num) = @_;
- my %parse_opts = ( -expand_seq => 'interior_sequence' );
- my $ptree = $self->parse_text( \%parse_opts, $text, $line_num );
- return join '', $ptree->children();
-}
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head1 B<parse_paragraph()>
-
- $parser->parse_paragraph($text, $line_num);
-
-This method takes the text of a POD paragraph to be processed, along
-with its corresponding line number, and invokes the appropriate method
-(one of B<command()>, B<verbatim()>, or B<textblock()>).
-
-For performance reasons, this method is invoked directly without any
-dynamic lookup; Hence subclasses may I<not> override it!
-
-=end __PRIVATE__
-
-=cut
-
-sub parse_paragraph {
- my ($self, $text, $line_num) = @_;
- local *myData = $self; ## alias to avoid deref-ing overhead
- local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options
- local $_;
-
- ## See if we want to preprocess nonPOD paragraphs as well as POD ones.
- my $wantNonPods = $myOpts{'-want_nonPODs'};
-
- ## Update cutting status
- $myData{_CUTTING} = 0 if $text =~ /^={1,2}\S/;
-
- ## Perform any desired preprocessing if we wanted it this early
- $wantNonPods and $text = $self->preprocess_paragraph($text, $line_num);
-
- ## Ignore up until next POD directive if we are cutting
- return if $myData{_CUTTING};
-
- ## Now we know this is block of text in a POD section!
-
- ##-----------------------------------------------------------------
- ## This is a hook (hack ;-) for Pod::Select to do its thing without
- ## having to override methods, but also without Pod::Parser assuming
- ## $self is an instance of Pod::Select (if the _SELECTED_SECTIONS
- ## field exists then we assume there is an is_selected() method for
- ## us to invoke (calling $self->can('is_selected') could verify this
- ## but that is more overhead than I want to incur)
- ##-----------------------------------------------------------------
-
- ## Ignore this block if it isnt in one of the selected sections
- if (exists $myData{_SELECTED_SECTIONS}) {
- $self->is_selected($text) or return ($myData{_CUTTING} = 1);
- }
-
- ## If we havent already, perform any desired preprocessing and
- ## then re-check the "cutting" state
- unless ($wantNonPods) {
- $text = $self->preprocess_paragraph($text, $line_num);
- return 1 unless ((defined $text) and (length $text));
- return 1 if ($myData{_CUTTING});
- }
-
- ## Look for one of the three types of paragraphs
- my ($pfx, $cmd, $arg, $sep) = ('', '', '', '');
- my $pod_para = undef;
- if ($text =~ /^(={1,2})(?=\S)/) {
- ## Looks like a command paragraph. Capture the command prefix used
- ## ("=" or "=="), as well as the command-name, its paragraph text,
- ## and whatever sequence of characters was used to separate them
- $pfx = $1;
- $_ = substr($text, length $pfx);
- ($cmd, $sep, $text) = split /(\s+)/, $_, 2;
- $sep = '' unless defined $sep;
- $text = '' unless defined $text;
- ## If this is a "cut" directive then we dont need to do anything
- ## except return to "cutting" mode.
- if ($cmd eq 'cut') {
- $myData{_CUTTING} = 1;
- return unless $myOpts{'-process_cut_cmd'};
- }
- }
- ## Save the attributes indicating how the command was specified.
- $pod_para = new Pod::Paragraph(
- -name => $cmd,
- -text => $text,
- -prefix => $pfx,
- -separator => $sep,
- -file => $myData{_INFILE},
- -line => $line_num
- );
- # ## Invoke appropriate callbacks
- # if (exists $myData{_CALLBACKS}) {
- # ## Look through the callback list, invoke callbacks,
- # ## then see if we need to do the default actions
- # ## (invoke_callbacks will return true if we do).
- # return 1 unless $self->invoke_callbacks($cmd, $text, $line_num, $pod_para);
- # }
-
- # If the last paragraph ended in whitespace, and we're not between verbatim blocks, carp
- if ($myData{_WHITESPACE} and $myOpts{'-warnings'}
- and not ($text =~ /^\s+/ and ($myData{_PREVIOUS}||"") eq "verbatim")) {
- my $errorsub = $self->errorsub();
- my $line = $line_num - 1;
- my $errmsg = "*** WARNING: line containing nothing but whitespace".
- " in paragraph at line $line in file $myData{_INFILE}\n";
- (ref $errorsub) and &{$errorsub}($errmsg)
- or (defined $errorsub) and $self->$errorsub($errmsg)
- or carp($errmsg);
- }
-
- if (length $cmd) {
- ## A command paragraph
- $self->command($cmd, $text, $line_num, $pod_para);
- $myData{_PREVIOUS} = $cmd;
- }
- elsif ($text =~ /^\s+/) {
- ## Indented text - must be a verbatim paragraph
- $self->verbatim($text, $line_num, $pod_para);
- $myData{_PREVIOUS} = "verbatim";
- }
- else {
- ## Looks like an ordinary block of text
- $self->textblock($text, $line_num, $pod_para);
- $myData{_PREVIOUS} = "textblock";
- }
-
- # Update the whitespace for the next time around
- #$myData{_WHITESPACE} = $text =~ /^[^\S\r\n]+\Z/m ? 1 : 0;
- $myData{_WHITESPACE} = $text =~ /^[^\S\r\n]+\r*\Z/m ? 1 : 0;
-
- return 1;
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<parse_from_filehandle()>
-
- $parser->parse_from_filehandle($in_fh,$out_fh);
-
-This method takes an input filehandle (which is assumed to already be
-opened for reading) and reads the entire input stream looking for blocks
-(paragraphs) of POD documentation to be processed. If no first argument
-is given the default input filehandle C<STDIN> is used.
-
-The C<$in_fh> parameter may be any object that provides a B<getline()>
-method to retrieve a single line of input text (hence, an appropriate
-wrapper object could be used to parse PODs from a single string or an
-array of strings).
-
-Using C<$in_fh-E<gt>getline()>, input is read line-by-line and assembled
-into paragraphs or "blocks" (which are separated by lines containing
-nothing but whitespace). For each block of POD documentation
-encountered it will invoke a method to parse the given paragraph.
-
-If a second argument is given then it should correspond to a filehandle where
-output should be sent (otherwise the default output filehandle is
-C<STDOUT> if no output filehandle is currently in use).
-
-B<NOTE:> For performance reasons, this method caches the input stream at
-the top of the stack in a local variable. Any attempts by clients to
-change the stack contents during processing when in the midst executing
-of this method I<will not affect> the input stream used by the current
-invocation of this method.
-
-This method does I<not> usually need to be overridden by subclasses.
-
-=cut
-
-sub parse_from_filehandle {
- my $self = shift;
- my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : ();
- my ($in_fh, $out_fh) = @_;
- $in_fh = \*STDIN unless ($in_fh);
- local *myData = $self; ## alias to avoid deref-ing overhead
- local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options
- local $_;
-
- ## Put this stream at the top of the stack and do beginning-of-input
- ## processing. NOTE that $in_fh might be reset during this process.
- my $topstream = $self->_push_input_stream($in_fh, $out_fh);
- (exists $opts{-cutting}) and $self->cutting( $opts{-cutting} );
-
- ## Initialize line/paragraph
- my ($textline, $paragraph) = ('', '');
- my ($nlines, $plines) = (0, 0);
-
- ## Use <$fh> instead of $fh->getline where possible (for speed)
- $_ = ref $in_fh;
- my $tied_fh = (/^(?:GLOB|FileHandle|IO::\w+)$/ or tied $in_fh);
-
- ## Read paragraphs line-by-line
- while (defined ($textline = $tied_fh ? <$in_fh> : $in_fh->getline)) {
- $textline = $self->preprocess_line($textline, ++$nlines);
- next unless ((defined $textline) && (length $textline));
-
- if ((! length $paragraph) && ($textline =~ /^==/)) {
- ## '==' denotes a one-line command paragraph
- $paragraph = $textline;
- $plines = 1;
- $textline = '';
- } else {
- ## Append this line to the current paragraph
- $paragraph .= $textline;
- ++$plines;
- }
-
- ## See if this line is blank and ends the current paragraph.
- ## If it isnt, then keep iterating until it is.
- next unless (($textline =~ /^[^\S\r\n]*[\r\n]*$/)
- && (length $paragraph));
-
- ## Now process the paragraph
- parse_paragraph($self, $paragraph, ($nlines - $plines) + 1);
- $paragraph = '';
- $plines = 0;
- }
- ## Dont forget about the last paragraph in the file
- if (length $paragraph) {
- parse_paragraph($self, $paragraph, ($nlines - $plines) + 1)
- }
-
- ## Now pop the input stream off the top of the input stack.
- $self->_pop_input_stream();
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<parse_from_file()>
-
- $parser->parse_from_file($filename,$outfile);
-
-This method takes a filename and does the following:
-
-=over 2
-
-=item *
-
-opens the input and output files for reading
-(creating the appropriate filehandles)
-
-=item *
-
-invokes the B<parse_from_filehandle()> method passing it the
-corresponding input and output filehandles.
-
-=item *
-
-closes the input and output files.
-
-=back
-
-If the special input filename "-" or "<&STDIN" is given then the STDIN
-filehandle is used for input (and no open or close is performed). If no
-input filename is specified then "-" is implied. Filehandle references,
-or objects that support the regular IO operations (like C<E<lt>$fhE<gt>>
-or C<$fh-<Egt>getline>) are also accepted; the handles must already be
-opened.
-
-If a second argument is given then it should be the name of the desired
-output file. If the special output filename "-" or ">&STDOUT" is given
-then the STDOUT filehandle is used for output (and no open or close is
-performed). If the special output filename ">&STDERR" is given then the
-STDERR filehandle is used for output (and no open or close is
-performed). If no output filehandle is currently in use and no output
-filename is specified, then "-" is implied.
-Alternatively, filehandle references or objects that support the regular
-IO operations (like C<print>, e.g. L<IO::String>) are also accepted;
-the object must already be opened.
-
-This method does I<not> usually need to be overridden by subclasses.
-
-=cut
-
-sub parse_from_file {
- my $self = shift;
- my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : ();
- my ($infile, $outfile) = @_;
- my ($in_fh, $out_fh);
- if ($] < 5.006) {
- ($in_fh, $out_fh) = (gensym(), gensym());
- }
- my ($close_input, $close_output) = (0, 0);
- local *myData = $self;
- local *_;
-
- ## Is $infile a filename or a (possibly implied) filehandle
- if (defined $infile && ref $infile) {
- if (ref($infile) =~ /^(SCALAR|ARRAY|HASH|CODE|REF)$/) {
- croak "Input from $1 reference not supported!\n";
- }
- ## Must be a filehandle-ref (or else assume its a ref to an object
- ## that supports the common IO read operations).
- $myData{_INFILE} = ${$infile};
- $in_fh = $infile;
- }
- elsif (!defined($infile) || !length($infile) || ($infile eq '-')
- || ($infile =~ /^<&(?:STDIN|0)$/i))
- {
- ## Not a filename, just a string implying STDIN
- $infile ||= '-';
- $myData{_INFILE} = '<standard input>';
- $in_fh = \*STDIN;
- }
- else {
- ## We have a filename, open it for reading
- $myData{_INFILE} = $infile;
- open($in_fh, "< $infile") or
- croak "Can't open $infile for reading: $!\n";
- $close_input = 1;
- }
-
- ## NOTE: we need to be *very* careful when "defaulting" the output
- ## file. We only want to use a default if this is the beginning of
- ## the entire document (but *not* if this is an included file). We
- ## determine this by seeing if the input stream stack has been set-up
- ## already
-
- ## Is $outfile a filename, a (possibly implied) filehandle, maybe a ref?
- if (ref $outfile) {
- ## we need to check for ref() first, as other checks involve reading
- if (ref($outfile) =~ /^(ARRAY|HASH|CODE)$/) {
- croak "Output to $1 reference not supported!\n";
- }
- elsif (ref($outfile) eq 'SCALAR') {
-# # NOTE: IO::String isn't a part of the perl distribution,
-# # so probably we shouldn't support this case...
-# require IO::String;
-# $myData{_OUTFILE} = "$outfile";
-# $out_fh = IO::String->new($outfile);
- croak "Output to SCALAR reference not supported!\n";
- }
- else {
- ## Must be a filehandle-ref (or else assume its a ref to an
- ## object that supports the common IO write operations).
- $myData{_OUTFILE} = ${$outfile};
- $out_fh = $outfile;
- }
- }
- elsif (!defined($outfile) || !length($outfile) || ($outfile eq '-')
- || ($outfile =~ /^>&?(?:STDOUT|1)$/i))
- {
- if (defined $myData{_TOP_STREAM}) {
- $out_fh = $myData{_OUTPUT};
- }
- else {
- ## Not a filename, just a string implying STDOUT
- $outfile ||= '-';
- $myData{_OUTFILE} = '<standard output>';
- $out_fh = \*STDOUT;
- }
- }
- elsif ($outfile =~ /^>&(STDERR|2)$/i) {
- ## Not a filename, just a string implying STDERR
- $myData{_OUTFILE} = '<standard error>';
- $out_fh = \*STDERR;
- }
- else {
- ## We have a filename, open it for writing
- $myData{_OUTFILE} = $outfile;
- (-d $outfile) and croak "$outfile is a directory, not POD input!\n";
- open($out_fh, "> $outfile") or
- croak "Can't open $outfile for writing: $!\n";
- $close_output = 1;
- }
-
- ## Whew! That was a lot of work to set up reasonably/robust behavior
- ## in the case of a non-filename for reading and writing. Now we just
- ## have to parse the input and close the handles when we're finished.
- $self->parse_from_filehandle(\%opts, $in_fh, $out_fh);
-
- $close_input and
- close($in_fh) || croak "Can't close $infile after reading: $!\n";
- $close_output and
- close($out_fh) || croak "Can't close $outfile after writing: $!\n";
-}
-
-#############################################################################
-
-=head1 ACCESSOR METHODS
-
-Clients of B<Pod::Parser> should use the following methods to access
-instance data fields:
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=head1 B<errorsub()>
-
- $parser->errorsub("method_name");
- $parser->errorsub(\&warn_user);
- $parser->errorsub(sub { print STDERR, @_ });
-
-Specifies the method or subroutine to use when printing error messages
-about POD syntax. The supplied method/subroutine I<must> return TRUE upon
-successful printing of the message. If C<undef> is given, then the B<carp>
-builtin is used to issue error messages (this is the default behavior).
-
- my $errorsub = $parser->errorsub()
- my $errmsg = "This is an error message!\n"
- (ref $errorsub) and &{$errorsub}($errmsg)
- or (defined $errorsub) and $parser->$errorsub($errmsg)
- or carp($errmsg);
-
-Returns a method name, or else a reference to the user-supplied subroutine
-used to print error messages. Returns C<undef> if the B<carp> builtin
-is used to issue error messages (this is the default behavior).
-
-=cut
-
-sub errorsub {
- return (@_ > 1) ? ($_[0]->{_ERRORSUB} = $_[1]) : $_[0]->{_ERRORSUB};
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<cutting()>
-
- $boolean = $parser->cutting();
-
-Returns the current C<cutting> state: a boolean-valued scalar which
-evaluates to true if text from the input file is currently being "cut"
-(meaning it is I<not> considered part of the POD document).
-
- $parser->cutting($boolean);
-
-Sets the current C<cutting> state to the given value and returns the
-result.
-
-=cut
-
-sub cutting {
- return (@_ > 1) ? ($_[0]->{_CUTTING} = $_[1]) : $_[0]->{_CUTTING};
-}
-
-##---------------------------------------------------------------------------
-
-##---------------------------------------------------------------------------
-
-=head1 B<parseopts()>
-
-When invoked with no additional arguments, B<parseopts> returns a hashtable
-of all the current parsing options.
-
- ## See if we are parsing non-POD sections as well as POD ones
- my %opts = $parser->parseopts();
- $opts{'-want_nonPODs}' and print "-want_nonPODs\n";
-
-When invoked using a single string, B<parseopts> treats the string as the
-name of a parse-option and returns its corresponding value if it exists
-(returns C<undef> if it doesn't).
-
- ## Did we ask to see '=cut' paragraphs?
- my $want_cut = $parser->parseopts('-process_cut_cmd');
- $want_cut and print "-process_cut_cmd\n";
-
-When invoked with multiple arguments, B<parseopts> treats them as
-key/value pairs and the specified parse-option names are set to the
-given values. Any unspecified parse-options are unaffected.
-
- ## Set them back to the default
- $parser->parseopts(-warnings => 0);
-
-When passed a single hash-ref, B<parseopts> uses that hash to completely
-reset the existing parse-options, all previous parse-option values
-are lost.
-
- ## Reset all options to default
- $parser->parseopts( { } );
-
-See L<"PARSING OPTIONS"> for more information on the name and meaning of each
-parse-option currently recognized.
-
-=cut
-
-sub parseopts {
- local *myData = shift;
- local *myOpts = ($myData{_PARSEOPTS} ||= {});
- return %myOpts if (@_ == 0);
- if (@_ == 1) {
- local $_ = shift;
- return ref($_) ? $myData{_PARSEOPTS} = $_ : $myOpts{$_};
- }
- my @newOpts = (%myOpts, @_);
- $myData{_PARSEOPTS} = { @newOpts };
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<output_file()>
-
- $fname = $parser->output_file();
-
-Returns the name of the output file being written.
-
-=cut
-
-sub output_file {
- return $_[0]->{_OUTFILE};
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<output_handle()>
-
- $fhandle = $parser->output_handle();
-
-Returns the output filehandle object.
-
-=cut
-
-sub output_handle {
- return $_[0]->{_OUTPUT};
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<input_file()>
-
- $fname = $parser->input_file();
-
-Returns the name of the input file being read.
-
-=cut
-
-sub input_file {
- return $_[0]->{_INFILE};
-}
-
-##---------------------------------------------------------------------------
-
-=head1 B<input_handle()>
-
- $fhandle = $parser->input_handle();
-
-Returns the current input filehandle object.
-
-=cut
-
-sub input_handle {
- return $_[0]->{_INPUT};
-}
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head1 B<input_streams()>
-
- $listref = $parser->input_streams();
-
-Returns a reference to an array which corresponds to the stack of all
-the input streams that are currently in the middle of being parsed.
-
-While parsing an input stream, it is possible to invoke
-B<parse_from_file()> or B<parse_from_filehandle()> to parse a new input
-stream and then return to parsing the previous input stream. Each input
-stream to be parsed is pushed onto the end of this input stack
-before any of its input is read. The input stream that is currently
-being parsed is always at the end (or top) of the input stack. When an
-input stream has been exhausted, it is popped off the end of the
-input stack.
-
-Each element on this input stack is a reference to C<Pod::InputSource>
-object. Please see L<Pod::InputObjects> for more details.
-
-This method might be invoked when printing diagnostic messages, for example,
-to obtain the name and line number of the all input files that are currently
-being processed.
-
-=end __PRIVATE__
-
-=cut
-
-sub input_streams {
- return $_[0]->{_INPUT_STREAMS};
-}
-
-##---------------------------------------------------------------------------
-
-=begin __PRIVATE__
-
-=head1 B<top_stream()>
-
- $hashref = $parser->top_stream();
-
-Returns a reference to the hash-table that represents the element
-that is currently at the top (end) of the input stream stack
-(see L<"input_streams()">). The return value will be the C<undef>
-if the input stack is empty.
-
-This method might be used when printing diagnostic messages, for example,
-to obtain the name and line number of the current input file.
-
-=end __PRIVATE__
-
-=cut
-
-sub top_stream {
- return $_[0]->{_TOP_STREAM} || undef;
-}
-
-#############################################################################
-
-=head1 PRIVATE METHODS AND DATA
-
-B<Pod::Parser> makes use of several internal methods and data fields
-which clients should not need to see or use. For the sake of avoiding
-name collisions for client data and methods, these methods and fields
-are briefly discussed here. Determined hackers may obtain further
-information about them by reading the B<Pod::Parser> source code.
-
-Private data fields are stored in the hash-object whose reference is
-returned by the B<new()> constructor for this class. The names of all
-private methods and data-fields used by B<Pod::Parser> begin with a
-prefix of "_" and match the regular expression C</^_\w+$/>.
-
-=cut
-
-##---------------------------------------------------------------------------
-
-=begin _PRIVATE_
-
-=head1 B<_push_input_stream()>
-
- $hashref = $parser->_push_input_stream($in_fh,$out_fh);
-
-This method will push the given input stream on the input stack and
-perform any necessary beginning-of-document or beginning-of-file
-processing. The argument C<$in_fh> is the input stream filehandle to
-push, and C<$out_fh> is the corresponding output filehandle to use (if
-it is not given or is undefined, then the current output stream is used,
-which defaults to standard output if it doesnt exist yet).
-
-The value returned will be reference to the hash-table that represents
-the new top of the input stream stack. I<Please Note> that it is
-possible for this method to use default values for the input and output
-file handles. If this happens, you will need to look at the C<INPUT>
-and C<OUTPUT> instance data members to determine their new values.
-
-=end _PRIVATE_
-
-=cut
-
-sub _push_input_stream {
- my ($self, $in_fh, $out_fh) = @_;
- local *myData = $self;
-
- ## Initialize stuff for the entire document if this is *not*
- ## an included file.
- ##
- ## NOTE: we need to be *very* careful when "defaulting" the output
- ## filehandle. We only want to use a default value if this is the
- ## beginning of the entire document (but *not* if this is an included
- ## file).
- unless (defined $myData{_TOP_STREAM}) {
- $out_fh = \*STDOUT unless (defined $out_fh);
- $myData{_CUTTING} = 1; ## current "cutting" state
- $myData{_INPUT_STREAMS} = []; ## stack of all input streams
- }
-
- ## Initialize input indicators
- $myData{_OUTFILE} = '(unknown)' unless (defined $myData{_OUTFILE});
- $myData{_OUTPUT} = $out_fh if (defined $out_fh);
- $in_fh = \*STDIN unless (defined $in_fh);
- $myData{_INFILE} = '(unknown)' unless (defined $myData{_INFILE});
- $myData{_INPUT} = $in_fh;
- my $input_top = $myData{_TOP_STREAM}
- = new Pod::InputSource(
- -name => $myData{_INFILE},
- -handle => $in_fh,
- -was_cutting => $myData{_CUTTING}
- );
- local *input_stack = $myData{_INPUT_STREAMS};
- push(@input_stack, $input_top);
-
- ## Perform beginning-of-document and/or beginning-of-input processing
- $self->begin_pod() if (@input_stack == 1);
- $self->begin_input();
-
- return $input_top;
-}
-
-##---------------------------------------------------------------------------
-
-=begin _PRIVATE_
-
-=head1 B<_pop_input_stream()>
-
- $hashref = $parser->_pop_input_stream();
-
-This takes no arguments. It will perform any necessary end-of-file or
-end-of-document processing and then pop the current input stream from
-the top of the input stack.
-
-The value returned will be reference to the hash-table that represents
-the new top of the input stream stack.
-
-=end _PRIVATE_
-
-=cut
-
-sub _pop_input_stream {
- my ($self) = @_;
- local *myData = $self;
- local *input_stack = $myData{_INPUT_STREAMS};
-
- ## Perform end-of-input and/or end-of-document processing
- $self->end_input() if (@input_stack > 0);
- $self->end_pod() if (@input_stack == 1);
-
- ## Restore cutting state to whatever it was before we started
- ## parsing this file.
- my $old_top = pop(@input_stack);
- $myData{_CUTTING} = $old_top->was_cutting();
-
- ## Dont forget to reset the input indicators
- my $input_top = undef;
- if (@input_stack > 0) {
- $input_top = $myData{_TOP_STREAM} = $input_stack[-1];
- $myData{_INFILE} = $input_top->name();
- $myData{_INPUT} = $input_top->handle();
- } else {
- delete $myData{_TOP_STREAM};
- delete $myData{_INPUT_STREAMS};
- }
-
- return $input_top;
-}
-
-#############################################################################
-
-=head1 TREE-BASED PARSING
-
-If straightforward stream-based parsing wont meet your needs (as is
-likely the case for tasks such as translating PODs into structured
-markup languages like HTML and XML) then you may need to take the
-tree-based approach. Rather than doing everything in one pass and
-calling the B<interpolate()> method to expand sequences into text, it
-may be desirable to instead create a parse-tree using the B<parse_text()>
-method to return a tree-like structure which may contain an ordered
-list of children (each of which may be a text-string, or a similar
-tree-like structure).
-
-Pay special attention to L<"METHODS FOR PARSING AND PROCESSING"> and
-to the objects described in L<Pod::InputObjects>. The former describes
-the gory details and parameters for how to customize and extend the
-parsing behavior of B<Pod::Parser>. B<Pod::InputObjects> provides
-several objects that may all be used interchangeably as parse-trees. The
-most obvious one is the B<Pod::ParseTree> object. It defines the basic
-interface and functionality that all things trying to be a POD parse-tree
-should do. A B<Pod::ParseTree> is defined such that each "node" may be a
-text-string, or a reference to another parse-tree. Each B<Pod::Paragraph>
-object and each B<Pod::InteriorSequence> object also supports the basic
-parse-tree interface.
-
-The B<parse_text()> method takes a given paragraph of text, and
-returns a parse-tree that contains one or more children, each of which
-may be a text-string, or an InteriorSequence object. There are also
-callback-options that may be passed to B<parse_text()> to customize
-the way it expands or transforms interior-sequences, as well as the
-returned result. These callbacks can be used to create a parse-tree
-with custom-made objects (which may or may not support the parse-tree
-interface, depending on how you choose to do it).
-
-If you wish to turn an entire POD document into a parse-tree, that process
-is fairly straightforward. The B<parse_text()> method is the key to doing
-this successfully. Every paragraph-callback (i.e. the polymorphic methods
-for B<command()>, B<verbatim()>, and B<textblock()> paragraphs) takes
-a B<Pod::Paragraph> object as an argument. Each paragraph object has a
-B<parse_tree()> method that can be used to get or set a corresponding
-parse-tree. So for each of those paragraph-callback methods, simply call
-B<parse_text()> with the options you desire, and then use the returned
-parse-tree to assign to the given paragraph object.
-
-That gives you a parse-tree for each paragraph - so now all you need is
-an ordered list of paragraphs. You can maintain that yourself as a data
-element in the object/hash. The most straightforward way would be simply
-to use an array-ref, with the desired set of custom "options" for each
-invocation of B<parse_text>. Let's assume the desired option-set is
-given by the hash C<%options>. Then we might do something like the
-following:
-
- package MyPodParserTree;
-
- @ISA = qw( Pod::Parser );
-
- ...
-
- sub begin_pod {
- my $self = shift;
- $self->{'-paragraphs'} = []; ## initialize paragraph list
- }
-
- sub command {
- my ($parser, $command, $paragraph, $line_num, $pod_para) = @_;
- my $ptree = $parser->parse_text({%options}, $paragraph, ...);
- $pod_para->parse_tree( $ptree );
- push @{ $self->{'-paragraphs'} }, $pod_para;
- }
-
- sub verbatim {
- my ($parser, $paragraph, $line_num, $pod_para) = @_;
- push @{ $self->{'-paragraphs'} }, $pod_para;
- }
-
- sub textblock {
- my ($parser, $paragraph, $line_num, $pod_para) = @_;
- my $ptree = $parser->parse_text({%options}, $paragraph, ...);
- $pod_para->parse_tree( $ptree );
- push @{ $self->{'-paragraphs'} }, $pod_para;
- }
-
- ...
-
- package main;
- ...
- my $parser = new MyPodParserTree(...);
- $parser->parse_from_file(...);
- my $paragraphs_ref = $parser->{'-paragraphs'};
-
-Of course, in this module-author's humble opinion, I'd be more inclined to
-use the existing B<Pod::ParseTree> object than a simple array. That way
-everything in it, paragraphs and sequences, all respond to the same core
-interface for all parse-tree nodes. The result would look something like:
-
- package MyPodParserTree2;
-
- ...
-
- sub begin_pod {
- my $self = shift;
- $self->{'-ptree'} = new Pod::ParseTree; ## initialize parse-tree
- }
-
- sub parse_tree {
- ## convenience method to get/set the parse-tree for the entire POD
- (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
- return $_[0]->{'-ptree'};
- }
-
- sub command {
- my ($parser, $command, $paragraph, $line_num, $pod_para) = @_;
- my $ptree = $parser->parse_text({<<options>>}, $paragraph, ...);
- $pod_para->parse_tree( $ptree );
- $parser->parse_tree()->append( $pod_para );
- }
-
- sub verbatim {
- my ($parser, $paragraph, $line_num, $pod_para) = @_;
- $parser->parse_tree()->append( $pod_para );
- }
-
- sub textblock {
- my ($parser, $paragraph, $line_num, $pod_para) = @_;
- my $ptree = $parser->parse_text({<<options>>}, $paragraph, ...);
- $pod_para->parse_tree( $ptree );
- $parser->parse_tree()->append( $pod_para );
- }
-
- ...
-
- package main;
- ...
- my $parser = new MyPodParserTree2(...);
- $parser->parse_from_file(...);
- my $ptree = $parser->parse_tree;
- ...
-
-Now you have the entire POD document as one great big parse-tree. You
-can even use the B<-expand_seq> option to B<parse_text> to insert
-whole different kinds of objects. Just don't expect B<Pod::Parser>
-to know what to do with them after that. That will need to be in your
-code. Or, alternatively, you can insert any object you like so long as
-it conforms to the B<Pod::ParseTree> interface.
-
-One could use this to create subclasses of B<Pod::Paragraphs> and
-B<Pod::InteriorSequences> for specific commands (or to create your own
-custom node-types in the parse-tree) and add some kind of B<emit()>
-method to each custom node/subclass object in the tree. Then all you'd
-need to do is recursively walk the tree in the desired order, processing
-the children (most likely from left to right) by formatting them if
-they are text-strings, or by calling their B<emit()> method if they
-are objects/references.
-
-=head1 CAVEATS
-
-Please note that POD has the notion of "paragraphs": this is something
-starting I<after> a blank (read: empty) line, with the single exception
-of the file start, which is also starting a paragraph. That means that
-especially a command (e.g. C<=head1>) I<must> be preceded with a blank
-line; C<__END__> is I<not> a blank line.
-
-=head1 SEE ALSO
-
-L<Pod::InputObjects>, L<Pod::Select>
-
-B<Pod::InputObjects> defines POD input objects corresponding to
-command paragraphs, parse-trees, and interior-sequences.
-
-B<Pod::Select> is a subclass of B<Pod::Parser> which provides the ability
-to selectively include and/or exclude sections of a POD document from being
-translated based upon the current heading, subheading, subsubheading, etc.
-
-=for __PRIVATE__
-B<Pod::Callbacks> is a subclass of B<Pod::Parser> which gives its users
-the ability the employ I<callback functions> instead of, or in addition
-to, overriding methods of the base class.
-
-=for __PRIVATE__
-B<Pod::Select> and B<Pod::Callbacks> do not override any
-methods nor do they define any new methods with the same name. Because
-of this, they may I<both> be used (in combination) as a base class of
-the same subclass in order to combine their functionality without
-causing any namespace clashes due to multiple inheritance.
-
-=head1 AUTHOR
-
-Please report bugs using L<http://rt.cpan.org>.
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt>
-
-Based on code for B<Pod::Text> written by
-Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
-
-=head1 LICENSE
-
-Pod-Parser is free software; you can redistribute it and/or modify it
-under the terms of the Artistic License distributed with Perl version
-5.000 or (at your option) any later version. Please refer to the
-Artistic License that came with your Perl distribution for more
-details. If your version of Perl was not distributed under the
-terms of the Artistic License, than you may distribute PodParser
-under the same terms as Perl itself.
-
-=cut
-
-1;
-# vim: ts=4 sw=4 et
+#############################################################################
+# Pod/Parser.pm -- package which defines a base class for parsing POD docs.
+#
+# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::Parser;
+use strict;
+
+## These "variables" are used as local "glob aliases" for performance
+use vars qw($VERSION @ISA %myData %myOpts @input_stack);
+$VERSION = '1.60'; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+#############################################################################
+
+=head1 NAME
+
+Pod::Parser - base class for creating POD filters and translators
+
+=head1 SYNOPSIS
+
+ use Pod::Parser;
+
+ package MyParser;
+ @ISA = qw(Pod::Parser);
+
+ sub command {
+ my ($parser, $command, $paragraph, $line_num) = @_;
+ ## Interpret the command and its text; sample actions might be:
+ if ($command eq 'head1') { ... }
+ elsif ($command eq 'head2') { ... }
+ ## ... other commands and their actions
+ my $out_fh = $parser->output_handle();
+ my $expansion = $parser->interpolate($paragraph, $line_num);
+ print $out_fh $expansion;
+ }
+
+ sub verbatim {
+ my ($parser, $paragraph, $line_num) = @_;
+ ## Format verbatim paragraph; sample actions might be:
+ my $out_fh = $parser->output_handle();
+ print $out_fh $paragraph;
+ }
+
+ sub textblock {
+ my ($parser, $paragraph, $line_num) = @_;
+ ## Translate/Format this block of text; sample actions might be:
+ my $out_fh = $parser->output_handle();
+ my $expansion = $parser->interpolate($paragraph, $line_num);
+ print $out_fh $expansion;
+ }
+
+ sub interior_sequence {
+ my ($parser, $seq_command, $seq_argument) = @_;
+ ## Expand an interior sequence; sample actions might be:
+ return "*$seq_argument*" if ($seq_command eq 'B');
+ return "`$seq_argument'" if ($seq_command eq 'C');
+ return "_${seq_argument}_'" if ($seq_command eq 'I');
+ ## ... other sequence commands and their resulting text
+ }
+
+ package main;
+
+ ## Create a parser object and have it parse file whose name was
+ ## given on the command-line (use STDIN if no files were given).
+ $parser = new MyParser();
+ $parser->parse_from_filehandle(\*STDIN) if (@ARGV == 0);
+ for (@ARGV) { $parser->parse_from_file($_); }
+
+=head1 REQUIRES
+
+perl5.005, Pod::InputObjects, Exporter, Symbol, Carp
+
+=head1 EXPORTS
+
+Nothing.
+
+=head1 DESCRIPTION
+
+B<Pod::Parser> is a base class for creating POD filters and translators.
+It handles most of the effort involved with parsing the POD sections
+from an input stream, leaving subclasses free to be concerned only with
+performing the actual translation of text.
+
+B<Pod::Parser> parses PODs, and makes method calls to handle the various
+components of the POD. Subclasses of B<Pod::Parser> override these methods
+to translate the POD into whatever output format they desire.
+
+Note: This module is considered as legacy; modern Perl releases (5.18 and
+higher) are going to remove Pod::Parser from core and use L<Pod::Simple>
+for all things POD.
+
+=head1 QUICK OVERVIEW
+
+To create a POD filter for translating POD documentation into some other
+format, you create a subclass of B<Pod::Parser> which typically overrides
+just the base class implementation for the following methods:
+
+=over 2
+
+=item *
+
+B<command()>
+
+=item *
+
+B<verbatim()>
+
+=item *
+
+B<textblock()>
+
+=item *
+
+B<interior_sequence()>
+
+=back
+
+You may also want to override the B<begin_input()> and B<end_input()>
+methods for your subclass (to perform any needed per-file and/or
+per-document initialization or cleanup).
+
+If you need to perform any preprocessing of input before it is parsed
+you may want to override one or more of B<preprocess_line()> and/or
+B<preprocess_paragraph()>.
+
+Sometimes it may be necessary to make more than one pass over the input
+files. If this is the case you have several options. You can make the
+first pass using B<Pod::Parser> and override your methods to store the
+intermediate results in memory somewhere for the B<end_pod()> method to
+process. You could use B<Pod::Parser> for several passes with an
+appropriate state variable to control the operation for each pass. If
+your input source can't be reset to start at the beginning, you can
+store it in some other structure as a string or an array and have that
+structure implement a B<getline()> method (which is all that
+B<parse_from_filehandle()> uses to read input).
+
+Feel free to add any member data fields you need to keep track of things
+like current font, indentation, horizontal or vertical position, or
+whatever else you like. Be sure to read L<"PRIVATE METHODS AND DATA">
+to avoid name collisions.
+
+For the most part, the B<Pod::Parser> base class should be able to
+do most of the input parsing for you and leave you free to worry about
+how to interpret the commands and translate the result.
+
+Note that all we have described here in this quick overview is the
+simplest most straightforward use of B<Pod::Parser> to do stream-based
+parsing. It is also possible to use the B<Pod::Parser::parse_text> function
+to do more sophisticated tree-based parsing. See L<"TREE-BASED PARSING">.
+
+=head1 PARSING OPTIONS
+
+A I<parse-option> is simply a named option of B<Pod::Parser> with a
+value that corresponds to a certain specified behavior. These various
+behaviors of B<Pod::Parser> may be enabled/disabled by setting
+or unsetting one or more I<parse-options> using the B<parseopts()> method.
+The set of currently accepted parse-options is as follows:
+
+=over 3
+
+=item B<-want_nonPODs> (default: unset)
+
+Normally (by default) B<Pod::Parser> will only provide access to
+the POD sections of the input. Input paragraphs that are not part
+of the POD-format documentation are not made available to the caller
+(not even using B<preprocess_paragraph()>). Setting this option to a
+non-empty, non-zero value will allow B<preprocess_paragraph()> to see
+non-POD sections of the input as well as POD sections. The B<cutting()>
+method can be used to determine if the corresponding paragraph is a POD
+paragraph, or some other input paragraph.
+
+=item B<-process_cut_cmd> (default: unset)
+
+Normally (by default) B<Pod::Parser> handles the C<=cut> POD directive
+by itself and does not pass it on to the caller for processing. Setting
+this option to a non-empty, non-zero value will cause B<Pod::Parser> to
+pass the C<=cut> directive to the caller just like any other POD command
+(and hence it may be processed by the B<command()> method).
+
+B<Pod::Parser> will still interpret the C<=cut> directive to mean that
+"cutting mode" has been (re)entered, but the caller will get a chance
+to capture the actual C<=cut> paragraph itself for whatever purpose
+it desires.
+
+=item B<-warnings> (default: unset)
+
+Normally (by default) B<Pod::Parser> recognizes a bare minimum of
+pod syntax errors and warnings and issues diagnostic messages
+for errors, but not for warnings. (Use B<Pod::Checker> to do more
+thorough checking of POD syntax.) Setting this option to a non-empty,
+non-zero value will cause B<Pod::Parser> to issue diagnostics for
+the few warnings it recognizes as well as the errors.
+
+=back
+
+Please see L<"parseopts()"> for a complete description of the interface
+for the setting and unsetting of parse-options.
+
+=cut
+
+#############################################################################
+
+#use diagnostics;
+use Pod::InputObjects;
+use Carp;
+use Exporter;
+BEGIN {
+ if ($] < 5.006) {
+ require Symbol;
+ import Symbol;
+ }
+}
+@ISA = qw(Exporter);
+
+#############################################################################
+
+=head1 RECOMMENDED SUBROUTINE/METHOD OVERRIDES
+
+B<Pod::Parser> provides several methods which most subclasses will probably
+want to override. These methods are as follows:
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head1 B<command()>
+
+ $parser->command($cmd,$text,$line_num,$pod_para);
+
+This method should be overridden by subclasses to take the appropriate
+action when a POD command paragraph (denoted by a line beginning with
+"=") is encountered. When such a POD directive is seen in the input,
+this method is called and is passed:
+
+=over 3
+
+=item C<$cmd>
+
+the name of the command for this POD paragraph
+
+=item C<$text>
+
+the paragraph text for the given POD paragraph command.
+
+=item C<$line_num>
+
+the line-number of the beginning of the paragraph
+
+=item C<$pod_para>
+
+a reference to a C<Pod::Paragraph> object which contains further
+information about the paragraph command (see L<Pod::InputObjects>
+for details).
+
+=back
+
+B<Note> that this method I<is> called for C<=pod> paragraphs.
+
+The base class implementation of this method simply treats the raw POD
+command as normal block of paragraph text (invoking the B<textblock()>
+method with the command paragraph).
+
+=cut
+
+sub command {
+ my ($self, $cmd, $text, $line_num, $pod_para) = @_;
+ ## Just treat this like a textblock
+ $self->textblock($pod_para->raw_text(), $line_num, $pod_para);
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<verbatim()>
+
+ $parser->verbatim($text,$line_num,$pod_para);
+
+This method may be overridden by subclasses to take the appropriate
+action when a block of verbatim text is encountered. It is passed the
+following parameters:
+
+=over 3
+
+=item C<$text>
+
+the block of text for the verbatim paragraph
+
+=item C<$line_num>
+
+the line-number of the beginning of the paragraph
+
+=item C<$pod_para>
+
+a reference to a C<Pod::Paragraph> object which contains further
+information about the paragraph (see L<Pod::InputObjects>
+for details).
+
+=back
+
+The base class implementation of this method simply prints the textblock
+(unmodified) to the output filehandle.
+
+=cut
+
+sub verbatim {
+ my ($self, $text, $line_num, $pod_para) = @_;
+ my $out_fh = $self->{_OUTPUT};
+ print $out_fh $text;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<textblock()>
+
+ $parser->textblock($text,$line_num,$pod_para);
+
+This method may be overridden by subclasses to take the appropriate
+action when a normal block of POD text is encountered (although the base
+class method will usually do what you want). It is passed the following
+parameters:
+
+=over 3
+
+=item C<$text>
+
+the block of text for the a POD paragraph
+
+=item C<$line_num>
+
+the line-number of the beginning of the paragraph
+
+=item C<$pod_para>
+
+a reference to a C<Pod::Paragraph> object which contains further
+information about the paragraph (see L<Pod::InputObjects>
+for details).
+
+=back
+
+In order to process interior sequences, subclasses implementations of
+this method will probably want to invoke either B<interpolate()> or
+B<parse_text()>, passing it the text block C<$text>, and the corresponding
+line number in C<$line_num>, and then perform any desired processing upon
+the returned result.
+
+The base class implementation of this method simply prints the text block
+as it occurred in the input stream).
+
+=cut
+
+sub textblock {
+ my ($self, $text, $line_num, $pod_para) = @_;
+ my $out_fh = $self->{_OUTPUT};
+ print $out_fh $self->interpolate($text, $line_num);
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<interior_sequence()>
+
+ $parser->interior_sequence($seq_cmd,$seq_arg,$pod_seq);
+
+This method should be overridden by subclasses to take the appropriate
+action when an interior sequence is encountered. An interior sequence is
+an embedded command within a block of text which appears as a command
+name (usually a single uppercase character) followed immediately by a
+string of text which is enclosed in angle brackets. This method is
+passed the sequence command C<$seq_cmd> and the corresponding text
+C<$seq_arg>. It is invoked by the B<interpolate()> method for each interior
+sequence that occurs in the string that it is passed. It should return
+the desired text string to be used in place of the interior sequence.
+The C<$pod_seq> argument is a reference to a C<Pod::InteriorSequence>
+object which contains further information about the interior sequence.
+Please see L<Pod::InputObjects> for details if you need to access this
+additional information.
+
+Subclass implementations of this method may wish to invoke the
+B<nested()> method of C<$pod_seq> to see if it is nested inside
+some other interior-sequence (and if so, which kind).
+
+The base class implementation of the B<interior_sequence()> method
+simply returns the raw text of the interior sequence (as it occurred
+in the input) to the caller.
+
+=cut
+
+sub interior_sequence {
+ my ($self, $seq_cmd, $seq_arg, $pod_seq) = @_;
+ ## Just return the raw text of the interior sequence
+ return $pod_seq->raw_text();
+}
+
+#############################################################################
+
+=head1 OPTIONAL SUBROUTINE/METHOD OVERRIDES
+
+B<Pod::Parser> provides several methods which subclasses may want to override
+to perform any special pre/post-processing. These methods do I<not> have to
+be overridden, but it may be useful for subclasses to take advantage of them.
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head1 B<new()>
+
+ my $parser = Pod::Parser->new();
+
+This is the constructor for B<Pod::Parser> and its subclasses. You
+I<do not> need to override this method! It is capable of constructing
+subclass objects as well as base class objects, provided you use
+any of the following constructor invocation styles:
+
+ my $parser1 = MyParser->new();
+ my $parser2 = new MyParser();
+ my $parser3 = $parser2->new();
+
+where C<MyParser> is some subclass of B<Pod::Parser>.
+
+Using the syntax C<MyParser::new()> to invoke the constructor is I<not>
+recommended, but if you insist on being able to do this, then the
+subclass I<will> need to override the B<new()> constructor method. If
+you do override the constructor, you I<must> be sure to invoke the
+B<initialize()> method of the newly blessed object.
+
+Using any of the above invocations, the first argument to the
+constructor is always the corresponding package name (or object
+reference). No other arguments are required, but if desired, an
+associative array (or hash-table) my be passed to the B<new()>
+constructor, as in:
+
+ my $parser1 = MyParser->new( MYDATA => $value1, MOREDATA => $value2 );
+ my $parser2 = new MyParser( -myflag => 1 );
+
+All arguments passed to the B<new()> constructor will be treated as
+key/value pairs in a hash-table. The newly constructed object will be
+initialized by copying the contents of the given hash-table (which may
+have been empty). The B<new()> constructor for this class and all of its
+subclasses returns a blessed reference to the initialized object (hash-table).
+
+=cut
+
+sub new {
+ ## Determine if we were called via an object-ref or a classname
+ my ($this,%params) = @_;
+ my $class = ref($this) || $this;
+ ## Any remaining arguments are treated as initial values for the
+ ## hash that is used to represent this object.
+ my $self = { %params };
+ ## Bless ourselves into the desired class and perform any initialization
+ bless $self, $class;
+ $self->initialize();
+ return $self;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<initialize()>
+
+ $parser->initialize();
+
+This method performs any necessary object initialization. It takes no
+arguments (other than the object instance of course, which is typically
+copied to a local variable named C<$self>). If subclasses override this
+method then they I<must> be sure to invoke C<$self-E<gt>SUPER::initialize()>.
+
+=cut
+
+sub initialize {
+ #my $self = shift;
+ #return;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<begin_pod()>
+
+ $parser->begin_pod();
+
+This method is invoked at the beginning of processing for each POD
+document that is encountered in the input. Subclasses should override
+this method to perform any per-document initialization.
+
+=cut
+
+sub begin_pod {
+ #my $self = shift;
+ #return;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<begin_input()>
+
+ $parser->begin_input();
+
+This method is invoked by B<parse_from_filehandle()> immediately I<before>
+processing input from a filehandle. The base class implementation does
+nothing, however, subclasses may override it to perform any per-file
+initializations.
+
+Note that if multiple files are parsed for a single POD document
+(perhaps the result of some future C<=include> directive) this method
+is invoked for every file that is parsed. If you wish to perform certain
+initializations once per document, then you should use B<begin_pod()>.
+
+=cut
+
+sub begin_input {
+ #my $self = shift;
+ #return;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<end_input()>
+
+ $parser->end_input();
+
+This method is invoked by B<parse_from_filehandle()> immediately I<after>
+processing input from a filehandle. The base class implementation does
+nothing, however, subclasses may override it to perform any per-file
+cleanup actions.
+
+Please note that if multiple files are parsed for a single POD document
+(perhaps the result of some kind of C<=include> directive) this method
+is invoked for every file that is parsed. If you wish to perform certain
+cleanup actions once per document, then you should use B<end_pod()>.
+
+=cut
+
+sub end_input {
+ #my $self = shift;
+ #return;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<end_pod()>
+
+ $parser->end_pod();
+
+This method is invoked at the end of processing for each POD document
+that is encountered in the input. Subclasses should override this method
+to perform any per-document finalization.
+
+=cut
+
+sub end_pod {
+ #my $self = shift;
+ #return;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<preprocess_line()>
+
+ $textline = $parser->preprocess_line($text, $line_num);
+
+This method should be overridden by subclasses that wish to perform
+any kind of preprocessing for each I<line> of input (I<before> it has
+been determined whether or not it is part of a POD paragraph). The
+parameter C<$text> is the input line; and the parameter C<$line_num> is
+the line number of the corresponding text line.
+
+The value returned should correspond to the new text to use in its
+place. If the empty string or an undefined value is returned then no
+further processing will be performed for this line.
+
+Please note that the B<preprocess_line()> method is invoked I<before>
+the B<preprocess_paragraph()> method. After all (possibly preprocessed)
+lines in a paragraph have been assembled together and it has been
+determined that the paragraph is part of the POD documentation from one
+of the selected sections, then B<preprocess_paragraph()> is invoked.
+
+The base class implementation of this method returns the given text.
+
+=cut
+
+sub preprocess_line {
+ my ($self, $text, $line_num) = @_;
+ return $text;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<preprocess_paragraph()>
+
+ $textblock = $parser->preprocess_paragraph($text, $line_num);
+
+This method should be overridden by subclasses that wish to perform any
+kind of preprocessing for each block (paragraph) of POD documentation
+that appears in the input stream. The parameter C<$text> is the POD
+paragraph from the input file; and the parameter C<$line_num> is the
+line number for the beginning of the corresponding paragraph.
+
+The value returned should correspond to the new text to use in its
+place If the empty string is returned or an undefined value is
+returned, then the given C<$text> is ignored (not processed).
+
+This method is invoked after gathering up all the lines in a paragraph
+and after determining the cutting state of the paragraph,
+but before trying to further parse or interpret them. After
+B<preprocess_paragraph()> returns, the current cutting state (which
+is returned by C<$self-E<gt>cutting()>) is examined. If it evaluates
+to true then input text (including the given C<$text>) is cut (not
+processed) until the next POD directive is encountered.
+
+Please note that the B<preprocess_line()> method is invoked I<before>
+the B<preprocess_paragraph()> method. After all (possibly preprocessed)
+lines in a paragraph have been assembled together and either it has been
+determined that the paragraph is part of the POD documentation from one
+of the selected sections or the C<-want_nonPODs> option is true,
+then B<preprocess_paragraph()> is invoked.
+
+The base class implementation of this method returns the given text.
+
+=cut
+
+sub preprocess_paragraph {
+ my ($self, $text, $line_num) = @_;
+ return $text;
+}
+
+#############################################################################
+
+=head1 METHODS FOR PARSING AND PROCESSING
+
+B<Pod::Parser> provides several methods to process input text. These
+methods typically won't need to be overridden (and in some cases they
+can't be overridden), but subclasses may want to invoke them to exploit
+their functionality.
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head1 B<parse_text()>
+
+ $ptree1 = $parser->parse_text($text, $line_num);
+ $ptree2 = $parser->parse_text({%opts}, $text, $line_num);
+ $ptree3 = $parser->parse_text(\%opts, $text, $line_num);
+
+This method is useful if you need to perform your own interpolation
+of interior sequences and can't rely upon B<interpolate> to expand
+them in simple bottom-up order.
+
+The parameter C<$text> is a string or block of text to be parsed
+for interior sequences; and the parameter C<$line_num> is the
+line number corresponding to the beginning of C<$text>.
+
+B<parse_text()> will parse the given text into a parse-tree of "nodes."
+and interior-sequences. Each "node" in the parse tree is either a
+text-string, or a B<Pod::InteriorSequence>. The result returned is a
+parse-tree of type B<Pod::ParseTree>. Please see L<Pod::InputObjects>
+for more information about B<Pod::InteriorSequence> and B<Pod::ParseTree>.
+
+If desired, an optional hash-ref may be specified as the first argument
+to customize certain aspects of the parse-tree that is created and
+returned. The set of recognized option keywords are:
+
+=over 3
+
+=item B<-expand_seq> =E<gt> I<code-ref>|I<method-name>
+
+Normally, the parse-tree returned by B<parse_text()> will contain an
+unexpanded C<Pod::InteriorSequence> object for each interior-sequence
+encountered. Specifying B<-expand_seq> tells B<parse_text()> to "expand"
+every interior-sequence it sees by invoking the referenced function
+(or named method of the parser object) and using the return value as the
+expanded result.
+
+If a subroutine reference was given, it is invoked as:
+
+ &$code_ref( $parser, $sequence )
+
+and if a method-name was given, it is invoked as:
+
+ $parser->method_name( $sequence )
+
+where C<$parser> is a reference to the parser object, and C<$sequence>
+is a reference to the interior-sequence object.
+[I<NOTE>: If the B<interior_sequence()> method is specified, then it is
+invoked according to the interface specified in L<"interior_sequence()">].
+
+=item B<-expand_text> =E<gt> I<code-ref>|I<method-name>
+
+Normally, the parse-tree returned by B<parse_text()> will contain a
+text-string for each contiguous sequence of characters outside of an
+interior-sequence. Specifying B<-expand_text> tells B<parse_text()> to
+"preprocess" every such text-string it sees by invoking the referenced
+function (or named method of the parser object) and using the return value
+as the preprocessed (or "expanded") result. [Note that if the result is
+an interior-sequence, then it will I<not> be expanded as specified by the
+B<-expand_seq> option; Any such recursive expansion needs to be handled by
+the specified callback routine.]
+
+If a subroutine reference was given, it is invoked as:
+
+ &$code_ref( $parser, $text, $ptree_node )
+
+and if a method-name was given, it is invoked as:
+
+ $parser->method_name( $text, $ptree_node )
+
+where C<$parser> is a reference to the parser object, C<$text> is the
+text-string encountered, and C<$ptree_node> is a reference to the current
+node in the parse-tree (usually an interior-sequence object or else the
+top-level node of the parse-tree).
+
+=item B<-expand_ptree> =E<gt> I<code-ref>|I<method-name>
+
+Rather than returning a C<Pod::ParseTree>, pass the parse-tree as an
+argument to the referenced subroutine (or named method of the parser
+object) and return the result instead of the parse-tree object.
+
+If a subroutine reference was given, it is invoked as:
+
+ &$code_ref( $parser, $ptree )
+
+and if a method-name was given, it is invoked as:
+
+ $parser->method_name( $ptree )
+
+where C<$parser> is a reference to the parser object, and C<$ptree>
+is a reference to the parse-tree object.
+
+=back
+
+=cut
+
+sub parse_text {
+ my $self = shift;
+ local $_ = '';
+
+ ## Get options and set any defaults
+ my %opts = (ref $_[0]) ? %{ shift() } : ();
+ my $expand_seq = $opts{'-expand_seq'} || undef;
+ my $expand_text = $opts{'-expand_text'} || undef;
+ my $expand_ptree = $opts{'-expand_ptree'} || undef;
+
+ my $text = shift;
+ my $line = shift;
+ my $file = $self->input_file();
+ my $cmd = "";
+
+ ## Convert method calls into closures, for our convenience
+ my $xseq_sub = $expand_seq;
+ my $xtext_sub = $expand_text;
+ my $xptree_sub = $expand_ptree;
+ if (defined $expand_seq and $expand_seq eq 'interior_sequence') {
+ ## If 'interior_sequence' is the method to use, we have to pass
+ ## more than just the sequence object, we also need to pass the
+ ## sequence name and text.
+ $xseq_sub = sub {
+ my ($sself, $iseq) = @_;
+ my $args = join('', $iseq->parse_tree->children);
+ return $sself->interior_sequence($iseq->name, $args, $iseq);
+ };
+ }
+ ref $xseq_sub or $xseq_sub = sub { shift()->$expand_seq(@_) };
+ ref $xtext_sub or $xtext_sub = sub { shift()->$expand_text(@_) };
+ ref $xptree_sub or $xptree_sub = sub { shift()->$expand_ptree(@_) };
+
+ ## Keep track of the "current" interior sequence, and maintain a stack
+ ## of "in progress" sequences.
+ ##
+ ## NOTE that we push our own "accumulator" at the very beginning of the
+ ## stack. It's really a parse-tree, not a sequence; but it implements
+ ## the methods we need so we can use it to gather-up all the sequences
+ ## and strings we parse. Thus, by the end of our parsing, it should be
+ ## the only thing left on our stack and all we have to do is return it!
+ ##
+ my $seq = Pod::ParseTree->new();
+ my @seq_stack = ($seq);
+ my ($ldelim, $rdelim) = ('', '');
+
+ ## Iterate over all sequence starts text (NOTE: split with
+ ## capturing parens keeps the delimiters)
+ $_ = $text;
+ my @tokens = split /([A-Z]<(?:<+(?:\r?\n|[ \t]))?)/;
+ while ( @tokens ) {
+ $_ = shift @tokens;
+ ## Look for the beginning of a sequence
+ if ( /^([A-Z])(<(?:<+(?:\r?\n|[ \t]))?)$/ ) {
+ ## Push a new sequence onto the stack of those "in-progress"
+ my $ldelim_orig;
+ ($cmd, $ldelim_orig) = ($1, $2);
+ ($ldelim = $ldelim_orig) =~ s/\s+$//;
+ ($rdelim = $ldelim) =~ tr/</>/;
+ $seq = Pod::InteriorSequence->new(
+ -name => $cmd,
+ -ldelim => $ldelim_orig, -rdelim => $rdelim,
+ -file => $file, -line => $line
+ );
+ (@seq_stack > 1) and $seq->nested($seq_stack[-1]);
+ push @seq_stack, $seq;
+ }
+ ## Look for sequence ending
+ elsif ( @seq_stack > 1 ) {
+ ## Make sure we match the right kind of closing delimiter
+ my ($seq_end, $post_seq) = ('', '');
+ if ( ($ldelim eq '<' and /\A(.*?)(>)/s)
+ or /\A(.*?)(\s+$rdelim)/s )
+ {
+ ## Found end-of-sequence, capture the interior and the
+ ## closing the delimiter, and put the rest back on the
+ ## token-list
+ $post_seq = substr($_, length($1) + length($2));
+ ($_, $seq_end) = ($1, $2);
+ (length $post_seq) and unshift @tokens, $post_seq;
+ }
+ if (length) {
+ ## In the middle of a sequence, append this text to it, and
+ ## dont forget to "expand" it if that's what the caller wanted
+ $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_);
+ $_ .= $seq_end;
+ }
+ if (length $seq_end) {
+ ## End of current sequence, record terminating delimiter
+ $seq->rdelim($seq_end);
+ ## Pop it off the stack of "in progress" sequences
+ pop @seq_stack;
+ ## Append result to its parent in current parse tree
+ $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq)
+ : $seq);
+ ## Remember the current cmd-name and left-delimiter
+ if(@seq_stack > 1) {
+ $cmd = $seq_stack[-1]->name;
+ $ldelim = $seq_stack[-1]->ldelim;
+ $rdelim = $seq_stack[-1]->rdelim;
+ } else {
+ $cmd = $ldelim = $rdelim = '';
+ }
+ }
+ }
+ elsif (length) {
+ ## In the middle of a sequence, append this text to it, and
+ ## dont forget to "expand" it if that's what the caller wanted
+ $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_);
+ }
+ ## Keep track of line count
+ $line += /\n/;
+ ## Remember the "current" sequence
+ $seq = $seq_stack[-1];
+ }
+
+ ## Handle unterminated sequences
+ my $errorsub = (@seq_stack > 1) ? $self->errorsub() : undef;
+ while (@seq_stack > 1) {
+ ($cmd, $file, $line) = ($seq->name, $seq->file_line);
+ $ldelim = $seq->ldelim;
+ ($rdelim = $ldelim) =~ tr/</>/;
+ $rdelim =~ s/^(\S+)(\s*)$/$2$1/;
+ pop @seq_stack;
+ my $errmsg = "*** ERROR: unterminated ${cmd}${ldelim}...${rdelim}".
+ " at line $line in file $file\n";
+ (ref $errorsub) and &{$errorsub}($errmsg)
+ or (defined $errorsub) and $self->$errorsub($errmsg)
+ or carp($errmsg);
+ $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq) : $seq);
+ $seq = $seq_stack[-1];
+ }
+
+ ## Return the resulting parse-tree
+ my $ptree = (pop @seq_stack)->parse_tree;
+ return $expand_ptree ? &$xptree_sub($self, $ptree) : $ptree;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<interpolate()>
+
+ $textblock = $parser->interpolate($text, $line_num);
+
+This method translates all text (including any embedded interior sequences)
+in the given text string C<$text> and returns the interpolated result. The
+parameter C<$line_num> is the line number corresponding to the beginning
+of C<$text>.
+
+B<interpolate()> merely invokes a private method to recursively expand
+nested interior sequences in bottom-up order (innermost sequences are
+expanded first). If there is a need to expand nested sequences in
+some alternate order, use B<parse_text> instead.
+
+=cut
+
+sub interpolate {
+ my($self, $text, $line_num) = @_;
+ my %parse_opts = ( -expand_seq => 'interior_sequence' );
+ my $ptree = $self->parse_text( \%parse_opts, $text, $line_num );
+ return join '', $ptree->children();
+}
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head1 B<parse_paragraph()>
+
+ $parser->parse_paragraph($text, $line_num);
+
+This method takes the text of a POD paragraph to be processed, along
+with its corresponding line number, and invokes the appropriate method
+(one of B<command()>, B<verbatim()>, or B<textblock()>).
+
+For performance reasons, this method is invoked directly without any
+dynamic lookup; Hence subclasses may I<not> override it!
+
+=end __PRIVATE__
+
+=cut
+
+sub parse_paragraph {
+ my ($self, $text, $line_num) = @_;
+ local *myData = $self; ## alias to avoid deref-ing overhead
+ local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options
+ local $_;
+
+ ## See if we want to preprocess nonPOD paragraphs as well as POD ones.
+ my $wantNonPods = $myOpts{'-want_nonPODs'};
+
+ ## Update cutting status
+ $myData{_CUTTING} = 0 if $text =~ /^={1,2}\S/;
+
+ ## Perform any desired preprocessing if we wanted it this early
+ $wantNonPods and $text = $self->preprocess_paragraph($text, $line_num);
+
+ ## Ignore up until next POD directive if we are cutting
+ return if $myData{_CUTTING};
+
+ ## Now we know this is block of text in a POD section!
+
+ ##-----------------------------------------------------------------
+ ## This is a hook (hack ;-) for Pod::Select to do its thing without
+ ## having to override methods, but also without Pod::Parser assuming
+ ## $self is an instance of Pod::Select (if the _SELECTED_SECTIONS
+ ## field exists then we assume there is an is_selected() method for
+ ## us to invoke (calling $self->can('is_selected') could verify this
+ ## but that is more overhead than I want to incur)
+ ##-----------------------------------------------------------------
+
+ ## Ignore this block if it isnt in one of the selected sections
+ if (exists $myData{_SELECTED_SECTIONS}) {
+ $self->is_selected($text) or return ($myData{_CUTTING} = 1);
+ }
+
+ ## If we havent already, perform any desired preprocessing and
+ ## then re-check the "cutting" state
+ unless ($wantNonPods) {
+ $text = $self->preprocess_paragraph($text, $line_num);
+ return 1 unless ((defined $text) and (length $text));
+ return 1 if ($myData{_CUTTING});
+ }
+
+ ## Look for one of the three types of paragraphs
+ my ($pfx, $cmd, $arg, $sep) = ('', '', '', '');
+ my $pod_para = undef;
+ if ($text =~ /^(={1,2})(?=\S)/) {
+ ## Looks like a command paragraph. Capture the command prefix used
+ ## ("=" or "=="), as well as the command-name, its paragraph text,
+ ## and whatever sequence of characters was used to separate them
+ $pfx = $1;
+ $_ = substr($text, length $pfx);
+ ($cmd, $sep, $text) = split /(\s+)/, $_, 2;
+ $sep = '' unless defined $sep;
+ $text = '' unless defined $text;
+ ## If this is a "cut" directive then we dont need to do anything
+ ## except return to "cutting" mode.
+ if ($cmd eq 'cut') {
+ $myData{_CUTTING} = 1;
+ return unless $myOpts{'-process_cut_cmd'};
+ }
+ }
+ ## Save the attributes indicating how the command was specified.
+ $pod_para = new Pod::Paragraph(
+ -name => $cmd,
+ -text => $text,
+ -prefix => $pfx,
+ -separator => $sep,
+ -file => $myData{_INFILE},
+ -line => $line_num
+ );
+ # ## Invoke appropriate callbacks
+ # if (exists $myData{_CALLBACKS}) {
+ # ## Look through the callback list, invoke callbacks,
+ # ## then see if we need to do the default actions
+ # ## (invoke_callbacks will return true if we do).
+ # return 1 unless $self->invoke_callbacks($cmd, $text, $line_num, $pod_para);
+ # }
+
+ # If the last paragraph ended in whitespace, and we're not between verbatim blocks, carp
+ if ($myData{_WHITESPACE} and $myOpts{'-warnings'}
+ and not ($text =~ /^\s+/ and ($myData{_PREVIOUS}||"") eq "verbatim")) {
+ my $errorsub = $self->errorsub();
+ my $line = $line_num - 1;
+ my $errmsg = "*** WARNING: line containing nothing but whitespace".
+ " in paragraph at line $line in file $myData{_INFILE}\n";
+ (ref $errorsub) and &{$errorsub}($errmsg)
+ or (defined $errorsub) and $self->$errorsub($errmsg)
+ or carp($errmsg);
+ }
+
+ if (length $cmd) {
+ ## A command paragraph
+ $self->command($cmd, $text, $line_num, $pod_para);
+ $myData{_PREVIOUS} = $cmd;
+ }
+ elsif ($text =~ /^\s+/) {
+ ## Indented text - must be a verbatim paragraph
+ $self->verbatim($text, $line_num, $pod_para);
+ $myData{_PREVIOUS} = "verbatim";
+ }
+ else {
+ ## Looks like an ordinary block of text
+ $self->textblock($text, $line_num, $pod_para);
+ $myData{_PREVIOUS} = "textblock";
+ }
+
+ # Update the whitespace for the next time around
+ #$myData{_WHITESPACE} = $text =~ /^[^\S\r\n]+\Z/m ? 1 : 0;
+ $myData{_WHITESPACE} = $text =~ /^[^\S\r\n]+\r*\Z/m ? 1 : 0;
+
+ return 1;
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<parse_from_filehandle()>
+
+ $parser->parse_from_filehandle($in_fh,$out_fh);
+
+This method takes an input filehandle (which is assumed to already be
+opened for reading) and reads the entire input stream looking for blocks
+(paragraphs) of POD documentation to be processed. If no first argument
+is given the default input filehandle C<STDIN> is used.
+
+The C<$in_fh> parameter may be any object that provides a B<getline()>
+method to retrieve a single line of input text (hence, an appropriate
+wrapper object could be used to parse PODs from a single string or an
+array of strings).
+
+Using C<$in_fh-E<gt>getline()>, input is read line-by-line and assembled
+into paragraphs or "blocks" (which are separated by lines containing
+nothing but whitespace). For each block of POD documentation
+encountered it will invoke a method to parse the given paragraph.
+
+If a second argument is given then it should correspond to a filehandle where
+output should be sent (otherwise the default output filehandle is
+C<STDOUT> if no output filehandle is currently in use).
+
+B<NOTE:> For performance reasons, this method caches the input stream at
+the top of the stack in a local variable. Any attempts by clients to
+change the stack contents during processing when in the midst executing
+of this method I<will not affect> the input stream used by the current
+invocation of this method.
+
+This method does I<not> usually need to be overridden by subclasses.
+
+=cut
+
+sub parse_from_filehandle {
+ my $self = shift;
+ my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : ();
+ my ($in_fh, $out_fh) = @_;
+ $in_fh = \*STDIN unless ($in_fh);
+ local *myData = $self; ## alias to avoid deref-ing overhead
+ local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options
+ local $_;
+
+ ## Put this stream at the top of the stack and do beginning-of-input
+ ## processing. NOTE that $in_fh might be reset during this process.
+ my $topstream = $self->_push_input_stream($in_fh, $out_fh);
+ (exists $opts{-cutting}) and $self->cutting( $opts{-cutting} );
+
+ ## Initialize line/paragraph
+ my ($textline, $paragraph) = ('', '');
+ my ($nlines, $plines) = (0, 0);
+
+ ## Use <$fh> instead of $fh->getline where possible (for speed)
+ $_ = ref $in_fh;
+ my $tied_fh = (/^(?:GLOB|FileHandle|IO::\w+)$/ or tied $in_fh);
+
+ ## Read paragraphs line-by-line
+ while (defined ($textline = $tied_fh ? <$in_fh> : $in_fh->getline)) {
+ $textline = $self->preprocess_line($textline, ++$nlines);
+ next unless ((defined $textline) && (length $textline));
+
+ if ((! length $paragraph) && ($textline =~ /^==/)) {
+ ## '==' denotes a one-line command paragraph
+ $paragraph = $textline;
+ $plines = 1;
+ $textline = '';
+ } else {
+ ## Append this line to the current paragraph
+ $paragraph .= $textline;
+ ++$plines;
+ }
+
+ ## See if this line is blank and ends the current paragraph.
+ ## If it isnt, then keep iterating until it is.
+ next unless (($textline =~ /^[^\S\r\n]*[\r\n]*$/)
+ && (length $paragraph));
+
+ ## Now process the paragraph
+ parse_paragraph($self, $paragraph, ($nlines - $plines) + 1);
+ $paragraph = '';
+ $plines = 0;
+ }
+ ## Dont forget about the last paragraph in the file
+ if (length $paragraph) {
+ parse_paragraph($self, $paragraph, ($nlines - $plines) + 1)
+ }
+
+ ## Now pop the input stream off the top of the input stack.
+ $self->_pop_input_stream();
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<parse_from_file()>
+
+ $parser->parse_from_file($filename,$outfile);
+
+This method takes a filename and does the following:
+
+=over 2
+
+=item *
+
+opens the input and output files for reading
+(creating the appropriate filehandles)
+
+=item *
+
+invokes the B<parse_from_filehandle()> method passing it the
+corresponding input and output filehandles.
+
+=item *
+
+closes the input and output files.
+
+=back
+
+If the special input filename "-" or "<&STDIN" is given then the STDIN
+filehandle is used for input (and no open or close is performed). If no
+input filename is specified then "-" is implied. Filehandle references,
+or objects that support the regular IO operations (like C<E<lt>$fhE<gt>>
+or C<$fh-<Egt>getline>) are also accepted; the handles must already be
+opened.
+
+If a second argument is given then it should be the name of the desired
+output file. If the special output filename "-" or ">&STDOUT" is given
+then the STDOUT filehandle is used for output (and no open or close is
+performed). If the special output filename ">&STDERR" is given then the
+STDERR filehandle is used for output (and no open or close is
+performed). If no output filehandle is currently in use and no output
+filename is specified, then "-" is implied.
+Alternatively, filehandle references or objects that support the regular
+IO operations (like C<print>, e.g. L<IO::String>) are also accepted;
+the object must already be opened.
+
+This method does I<not> usually need to be overridden by subclasses.
+
+=cut
+
+sub parse_from_file {
+ my $self = shift;
+ my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : ();
+ my ($infile, $outfile) = @_;
+ my ($in_fh, $out_fh);
+ if ($] < 5.006) {
+ ($in_fh, $out_fh) = (gensym(), gensym());
+ }
+ my ($close_input, $close_output) = (0, 0);
+ local *myData = $self;
+ local *_;
+
+ ## Is $infile a filename or a (possibly implied) filehandle
+ if (defined $infile && ref $infile) {
+ if (ref($infile) =~ /^(SCALAR|ARRAY|HASH|CODE|REF)$/) {
+ croak "Input from $1 reference not supported!\n";
+ }
+ ## Must be a filehandle-ref (or else assume its a ref to an object
+ ## that supports the common IO read operations).
+ $myData{_INFILE} = ${$infile};
+ $in_fh = $infile;
+ }
+ elsif (!defined($infile) || !length($infile) || ($infile eq '-')
+ || ($infile =~ /^<&(?:STDIN|0)$/i))
+ {
+ ## Not a filename, just a string implying STDIN
+ $infile ||= '-';
+ $myData{_INFILE} = '<standard input>';
+ $in_fh = \*STDIN;
+ }
+ else {
+ ## We have a filename, open it for reading
+ $myData{_INFILE} = $infile;
+ open($in_fh, "< $infile") or
+ croak "Can't open $infile for reading: $!\n";
+ $close_input = 1;
+ }
+
+ ## NOTE: we need to be *very* careful when "defaulting" the output
+ ## file. We only want to use a default if this is the beginning of
+ ## the entire document (but *not* if this is an included file). We
+ ## determine this by seeing if the input stream stack has been set-up
+ ## already
+
+ ## Is $outfile a filename, a (possibly implied) filehandle, maybe a ref?
+ if (ref $outfile) {
+ ## we need to check for ref() first, as other checks involve reading
+ if (ref($outfile) =~ /^(ARRAY|HASH|CODE)$/) {
+ croak "Output to $1 reference not supported!\n";
+ }
+ elsif (ref($outfile) eq 'SCALAR') {
+# # NOTE: IO::String isn't a part of the perl distribution,
+# # so probably we shouldn't support this case...
+# require IO::String;
+# $myData{_OUTFILE} = "$outfile";
+# $out_fh = IO::String->new($outfile);
+ croak "Output to SCALAR reference not supported!\n";
+ }
+ else {
+ ## Must be a filehandle-ref (or else assume its a ref to an
+ ## object that supports the common IO write operations).
+ $myData{_OUTFILE} = ${$outfile};
+ $out_fh = $outfile;
+ }
+ }
+ elsif (!defined($outfile) || !length($outfile) || ($outfile eq '-')
+ || ($outfile =~ /^>&?(?:STDOUT|1)$/i))
+ {
+ if (defined $myData{_TOP_STREAM}) {
+ $out_fh = $myData{_OUTPUT};
+ }
+ else {
+ ## Not a filename, just a string implying STDOUT
+ $outfile ||= '-';
+ $myData{_OUTFILE} = '<standard output>';
+ $out_fh = \*STDOUT;
+ }
+ }
+ elsif ($outfile =~ /^>&(STDERR|2)$/i) {
+ ## Not a filename, just a string implying STDERR
+ $myData{_OUTFILE} = '<standard error>';
+ $out_fh = \*STDERR;
+ }
+ else {
+ ## We have a filename, open it for writing
+ $myData{_OUTFILE} = $outfile;
+ (-d $outfile) and croak "$outfile is a directory, not POD input!\n";
+ open($out_fh, "> $outfile") or
+ croak "Can't open $outfile for writing: $!\n";
+ $close_output = 1;
+ }
+
+ ## Whew! That was a lot of work to set up reasonably/robust behavior
+ ## in the case of a non-filename for reading and writing. Now we just
+ ## have to parse the input and close the handles when we're finished.
+ $self->parse_from_filehandle(\%opts, $in_fh, $out_fh);
+
+ $close_input and
+ close($in_fh) || croak "Can't close $infile after reading: $!\n";
+ $close_output and
+ close($out_fh) || croak "Can't close $outfile after writing: $!\n";
+}
+
+#############################################################################
+
+=head1 ACCESSOR METHODS
+
+Clients of B<Pod::Parser> should use the following methods to access
+instance data fields:
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=head1 B<errorsub()>
+
+ $parser->errorsub("method_name");
+ $parser->errorsub(\&warn_user);
+ $parser->errorsub(sub { print STDERR, @_ });
+
+Specifies the method or subroutine to use when printing error messages
+about POD syntax. The supplied method/subroutine I<must> return TRUE upon
+successful printing of the message. If C<undef> is given, then the B<carp>
+builtin is used to issue error messages (this is the default behavior).
+
+ my $errorsub = $parser->errorsub()
+ my $errmsg = "This is an error message!\n"
+ (ref $errorsub) and &{$errorsub}($errmsg)
+ or (defined $errorsub) and $parser->$errorsub($errmsg)
+ or carp($errmsg);
+
+Returns a method name, or else a reference to the user-supplied subroutine
+used to print error messages. Returns C<undef> if the B<carp> builtin
+is used to issue error messages (this is the default behavior).
+
+=cut
+
+sub errorsub {
+ return (@_ > 1) ? ($_[0]->{_ERRORSUB} = $_[1]) : $_[0]->{_ERRORSUB};
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<cutting()>
+
+ $boolean = $parser->cutting();
+
+Returns the current C<cutting> state: a boolean-valued scalar which
+evaluates to true if text from the input file is currently being "cut"
+(meaning it is I<not> considered part of the POD document).
+
+ $parser->cutting($boolean);
+
+Sets the current C<cutting> state to the given value and returns the
+result.
+
+=cut
+
+sub cutting {
+ return (@_ > 1) ? ($_[0]->{_CUTTING} = $_[1]) : $_[0]->{_CUTTING};
+}
+
+##---------------------------------------------------------------------------
+
+##---------------------------------------------------------------------------
+
+=head1 B<parseopts()>
+
+When invoked with no additional arguments, B<parseopts> returns a hashtable
+of all the current parsing options.
+
+ ## See if we are parsing non-POD sections as well as POD ones
+ my %opts = $parser->parseopts();
+ $opts{'-want_nonPODs}' and print "-want_nonPODs\n";
+
+When invoked using a single string, B<parseopts> treats the string as the
+name of a parse-option and returns its corresponding value if it exists
+(returns C<undef> if it doesn't).
+
+ ## Did we ask to see '=cut' paragraphs?
+ my $want_cut = $parser->parseopts('-process_cut_cmd');
+ $want_cut and print "-process_cut_cmd\n";
+
+When invoked with multiple arguments, B<parseopts> treats them as
+key/value pairs and the specified parse-option names are set to the
+given values. Any unspecified parse-options are unaffected.
+
+ ## Set them back to the default
+ $parser->parseopts(-warnings => 0);
+
+When passed a single hash-ref, B<parseopts> uses that hash to completely
+reset the existing parse-options, all previous parse-option values
+are lost.
+
+ ## Reset all options to default
+ $parser->parseopts( { } );
+
+See L<"PARSING OPTIONS"> for more information on the name and meaning of each
+parse-option currently recognized.
+
+=cut
+
+sub parseopts {
+ local *myData = shift;
+ local *myOpts = ($myData{_PARSEOPTS} ||= {});
+ return %myOpts if (@_ == 0);
+ if (@_ == 1) {
+ local $_ = shift;
+ return ref($_) ? $myData{_PARSEOPTS} = $_ : $myOpts{$_};
+ }
+ my @newOpts = (%myOpts, @_);
+ $myData{_PARSEOPTS} = { @newOpts };
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<output_file()>
+
+ $fname = $parser->output_file();
+
+Returns the name of the output file being written.
+
+=cut
+
+sub output_file {
+ return $_[0]->{_OUTFILE};
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<output_handle()>
+
+ $fhandle = $parser->output_handle();
+
+Returns the output filehandle object.
+
+=cut
+
+sub output_handle {
+ return $_[0]->{_OUTPUT};
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<input_file()>
+
+ $fname = $parser->input_file();
+
+Returns the name of the input file being read.
+
+=cut
+
+sub input_file {
+ return $_[0]->{_INFILE};
+}
+
+##---------------------------------------------------------------------------
+
+=head1 B<input_handle()>
+
+ $fhandle = $parser->input_handle();
+
+Returns the current input filehandle object.
+
+=cut
+
+sub input_handle {
+ return $_[0]->{_INPUT};
+}
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head1 B<input_streams()>
+
+ $listref = $parser->input_streams();
+
+Returns a reference to an array which corresponds to the stack of all
+the input streams that are currently in the middle of being parsed.
+
+While parsing an input stream, it is possible to invoke
+B<parse_from_file()> or B<parse_from_filehandle()> to parse a new input
+stream and then return to parsing the previous input stream. Each input
+stream to be parsed is pushed onto the end of this input stack
+before any of its input is read. The input stream that is currently
+being parsed is always at the end (or top) of the input stack. When an
+input stream has been exhausted, it is popped off the end of the
+input stack.
+
+Each element on this input stack is a reference to C<Pod::InputSource>
+object. Please see L<Pod::InputObjects> for more details.
+
+This method might be invoked when printing diagnostic messages, for example,
+to obtain the name and line number of the all input files that are currently
+being processed.
+
+=end __PRIVATE__
+
+=cut
+
+sub input_streams {
+ return $_[0]->{_INPUT_STREAMS};
+}
+
+##---------------------------------------------------------------------------
+
+=begin __PRIVATE__
+
+=head1 B<top_stream()>
+
+ $hashref = $parser->top_stream();
+
+Returns a reference to the hash-table that represents the element
+that is currently at the top (end) of the input stream stack
+(see L<"input_streams()">). The return value will be the C<undef>
+if the input stack is empty.
+
+This method might be used when printing diagnostic messages, for example,
+to obtain the name and line number of the current input file.
+
+=end __PRIVATE__
+
+=cut
+
+sub top_stream {
+ return $_[0]->{_TOP_STREAM} || undef;
+}
+
+#############################################################################
+
+=head1 PRIVATE METHODS AND DATA
+
+B<Pod::Parser> makes use of several internal methods and data fields
+which clients should not need to see or use. For the sake of avoiding
+name collisions for client data and methods, these methods and fields
+are briefly discussed here. Determined hackers may obtain further
+information about them by reading the B<Pod::Parser> source code.
+
+Private data fields are stored in the hash-object whose reference is
+returned by the B<new()> constructor for this class. The names of all
+private methods and data-fields used by B<Pod::Parser> begin with a
+prefix of "_" and match the regular expression C</^_\w+$/>.
+
+=cut
+
+##---------------------------------------------------------------------------
+
+=begin _PRIVATE_
+
+=head1 B<_push_input_stream()>
+
+ $hashref = $parser->_push_input_stream($in_fh,$out_fh);
+
+This method will push the given input stream on the input stack and
+perform any necessary beginning-of-document or beginning-of-file
+processing. The argument C<$in_fh> is the input stream filehandle to
+push, and C<$out_fh> is the corresponding output filehandle to use (if
+it is not given or is undefined, then the current output stream is used,
+which defaults to standard output if it doesnt exist yet).
+
+The value returned will be reference to the hash-table that represents
+the new top of the input stream stack. I<Please Note> that it is
+possible for this method to use default values for the input and output
+file handles. If this happens, you will need to look at the C<INPUT>
+and C<OUTPUT> instance data members to determine their new values.
+
+=end _PRIVATE_
+
+=cut
+
+sub _push_input_stream {
+ my ($self, $in_fh, $out_fh) = @_;
+ local *myData = $self;
+
+ ## Initialize stuff for the entire document if this is *not*
+ ## an included file.
+ ##
+ ## NOTE: we need to be *very* careful when "defaulting" the output
+ ## filehandle. We only want to use a default value if this is the
+ ## beginning of the entire document (but *not* if this is an included
+ ## file).
+ unless (defined $myData{_TOP_STREAM}) {
+ $out_fh = \*STDOUT unless (defined $out_fh);
+ $myData{_CUTTING} = 1; ## current "cutting" state
+ $myData{_INPUT_STREAMS} = []; ## stack of all input streams
+ }
+
+ ## Initialize input indicators
+ $myData{_OUTFILE} = '(unknown)' unless (defined $myData{_OUTFILE});
+ $myData{_OUTPUT} = $out_fh if (defined $out_fh);
+ $in_fh = \*STDIN unless (defined $in_fh);
+ $myData{_INFILE} = '(unknown)' unless (defined $myData{_INFILE});
+ $myData{_INPUT} = $in_fh;
+ my $input_top = $myData{_TOP_STREAM}
+ = new Pod::InputSource(
+ -name => $myData{_INFILE},
+ -handle => $in_fh,
+ -was_cutting => $myData{_CUTTING}
+ );
+ local *input_stack = $myData{_INPUT_STREAMS};
+ push(@input_stack, $input_top);
+
+ ## Perform beginning-of-document and/or beginning-of-input processing
+ $self->begin_pod() if (@input_stack == 1);
+ $self->begin_input();
+
+ return $input_top;
+}
+
+##---------------------------------------------------------------------------
+
+=begin _PRIVATE_
+
+=head1 B<_pop_input_stream()>
+
+ $hashref = $parser->_pop_input_stream();
+
+This takes no arguments. It will perform any necessary end-of-file or
+end-of-document processing and then pop the current input stream from
+the top of the input stack.
+
+The value returned will be reference to the hash-table that represents
+the new top of the input stream stack.
+
+=end _PRIVATE_
+
+=cut
+
+sub _pop_input_stream {
+ my ($self) = @_;
+ local *myData = $self;
+ local *input_stack = $myData{_INPUT_STREAMS};
+
+ ## Perform end-of-input and/or end-of-document processing
+ $self->end_input() if (@input_stack > 0);
+ $self->end_pod() if (@input_stack == 1);
+
+ ## Restore cutting state to whatever it was before we started
+ ## parsing this file.
+ my $old_top = pop(@input_stack);
+ $myData{_CUTTING} = $old_top->was_cutting();
+
+ ## Dont forget to reset the input indicators
+ my $input_top = undef;
+ if (@input_stack > 0) {
+ $input_top = $myData{_TOP_STREAM} = $input_stack[-1];
+ $myData{_INFILE} = $input_top->name();
+ $myData{_INPUT} = $input_top->handle();
+ } else {
+ delete $myData{_TOP_STREAM};
+ delete $myData{_INPUT_STREAMS};
+ }
+
+ return $input_top;
+}
+
+#############################################################################
+
+=head1 TREE-BASED PARSING
+
+If straightforward stream-based parsing wont meet your needs (as is
+likely the case for tasks such as translating PODs into structured
+markup languages like HTML and XML) then you may need to take the
+tree-based approach. Rather than doing everything in one pass and
+calling the B<interpolate()> method to expand sequences into text, it
+may be desirable to instead create a parse-tree using the B<parse_text()>
+method to return a tree-like structure which may contain an ordered
+list of children (each of which may be a text-string, or a similar
+tree-like structure).
+
+Pay special attention to L<"METHODS FOR PARSING AND PROCESSING"> and
+to the objects described in L<Pod::InputObjects>. The former describes
+the gory details and parameters for how to customize and extend the
+parsing behavior of B<Pod::Parser>. B<Pod::InputObjects> provides
+several objects that may all be used interchangeably as parse-trees. The
+most obvious one is the B<Pod::ParseTree> object. It defines the basic
+interface and functionality that all things trying to be a POD parse-tree
+should do. A B<Pod::ParseTree> is defined such that each "node" may be a
+text-string, or a reference to another parse-tree. Each B<Pod::Paragraph>
+object and each B<Pod::InteriorSequence> object also supports the basic
+parse-tree interface.
+
+The B<parse_text()> method takes a given paragraph of text, and
+returns a parse-tree that contains one or more children, each of which
+may be a text-string, or an InteriorSequence object. There are also
+callback-options that may be passed to B<parse_text()> to customize
+the way it expands or transforms interior-sequences, as well as the
+returned result. These callbacks can be used to create a parse-tree
+with custom-made objects (which may or may not support the parse-tree
+interface, depending on how you choose to do it).
+
+If you wish to turn an entire POD document into a parse-tree, that process
+is fairly straightforward. The B<parse_text()> method is the key to doing
+this successfully. Every paragraph-callback (i.e. the polymorphic methods
+for B<command()>, B<verbatim()>, and B<textblock()> paragraphs) takes
+a B<Pod::Paragraph> object as an argument. Each paragraph object has a
+B<parse_tree()> method that can be used to get or set a corresponding
+parse-tree. So for each of those paragraph-callback methods, simply call
+B<parse_text()> with the options you desire, and then use the returned
+parse-tree to assign to the given paragraph object.
+
+That gives you a parse-tree for each paragraph - so now all you need is
+an ordered list of paragraphs. You can maintain that yourself as a data
+element in the object/hash. The most straightforward way would be simply
+to use an array-ref, with the desired set of custom "options" for each
+invocation of B<parse_text>. Let's assume the desired option-set is
+given by the hash C<%options>. Then we might do something like the
+following:
+
+ package MyPodParserTree;
+
+ @ISA = qw( Pod::Parser );
+
+ ...
+
+ sub begin_pod {
+ my $self = shift;
+ $self->{'-paragraphs'} = []; ## initialize paragraph list
+ }
+
+ sub command {
+ my ($parser, $command, $paragraph, $line_num, $pod_para) = @_;
+ my $ptree = $parser->parse_text({%options}, $paragraph, ...);
+ $pod_para->parse_tree( $ptree );
+ push @{ $self->{'-paragraphs'} }, $pod_para;
+ }
+
+ sub verbatim {
+ my ($parser, $paragraph, $line_num, $pod_para) = @_;
+ push @{ $self->{'-paragraphs'} }, $pod_para;
+ }
+
+ sub textblock {
+ my ($parser, $paragraph, $line_num, $pod_para) = @_;
+ my $ptree = $parser->parse_text({%options}, $paragraph, ...);
+ $pod_para->parse_tree( $ptree );
+ push @{ $self->{'-paragraphs'} }, $pod_para;
+ }
+
+ ...
+
+ package main;
+ ...
+ my $parser = new MyPodParserTree(...);
+ $parser->parse_from_file(...);
+ my $paragraphs_ref = $parser->{'-paragraphs'};
+
+Of course, in this module-author's humble opinion, I'd be more inclined to
+use the existing B<Pod::ParseTree> object than a simple array. That way
+everything in it, paragraphs and sequences, all respond to the same core
+interface for all parse-tree nodes. The result would look something like:
+
+ package MyPodParserTree2;
+
+ ...
+
+ sub begin_pod {
+ my $self = shift;
+ $self->{'-ptree'} = new Pod::ParseTree; ## initialize parse-tree
+ }
+
+ sub parse_tree {
+ ## convenience method to get/set the parse-tree for the entire POD
+ (@_ > 1) and $_[0]->{'-ptree'} = $_[1];
+ return $_[0]->{'-ptree'};
+ }
+
+ sub command {
+ my ($parser, $command, $paragraph, $line_num, $pod_para) = @_;
+ my $ptree = $parser->parse_text({<<options>>}, $paragraph, ...);
+ $pod_para->parse_tree( $ptree );
+ $parser->parse_tree()->append( $pod_para );
+ }
+
+ sub verbatim {
+ my ($parser, $paragraph, $line_num, $pod_para) = @_;
+ $parser->parse_tree()->append( $pod_para );
+ }
+
+ sub textblock {
+ my ($parser, $paragraph, $line_num, $pod_para) = @_;
+ my $ptree = $parser->parse_text({<<options>>}, $paragraph, ...);
+ $pod_para->parse_tree( $ptree );
+ $parser->parse_tree()->append( $pod_para );
+ }
+
+ ...
+
+ package main;
+ ...
+ my $parser = new MyPodParserTree2(...);
+ $parser->parse_from_file(...);
+ my $ptree = $parser->parse_tree;
+ ...
+
+Now you have the entire POD document as one great big parse-tree. You
+can even use the B<-expand_seq> option to B<parse_text> to insert
+whole different kinds of objects. Just don't expect B<Pod::Parser>
+to know what to do with them after that. That will need to be in your
+code. Or, alternatively, you can insert any object you like so long as
+it conforms to the B<Pod::ParseTree> interface.
+
+One could use this to create subclasses of B<Pod::Paragraphs> and
+B<Pod::InteriorSequences> for specific commands (or to create your own
+custom node-types in the parse-tree) and add some kind of B<emit()>
+method to each custom node/subclass object in the tree. Then all you'd
+need to do is recursively walk the tree in the desired order, processing
+the children (most likely from left to right) by formatting them if
+they are text-strings, or by calling their B<emit()> method if they
+are objects/references.
+
+=head1 CAVEATS
+
+Please note that POD has the notion of "paragraphs": this is something
+starting I<after> a blank (read: empty) line, with the single exception
+of the file start, which is also starting a paragraph. That means that
+especially a command (e.g. C<=head1>) I<must> be preceded with a blank
+line; C<__END__> is I<not> a blank line.
+
+=head1 SEE ALSO
+
+L<Pod::InputObjects>, L<Pod::Select>
+
+B<Pod::InputObjects> defines POD input objects corresponding to
+command paragraphs, parse-trees, and interior-sequences.
+
+B<Pod::Select> is a subclass of B<Pod::Parser> which provides the ability
+to selectively include and/or exclude sections of a POD document from being
+translated based upon the current heading, subheading, subsubheading, etc.
+
+=for __PRIVATE__
+B<Pod::Callbacks> is a subclass of B<Pod::Parser> which gives its users
+the ability the employ I<callback functions> instead of, or in addition
+to, overriding methods of the base class.
+
+=for __PRIVATE__
+B<Pod::Select> and B<Pod::Callbacks> do not override any
+methods nor do they define any new methods with the same name. Because
+of this, they may I<both> be used (in combination) as a base class of
+the same subclass in order to combine their functionality without
+causing any namespace clashes due to multiple inheritance.
+
+=head1 AUTHOR
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt>
+
+Based on code for B<Pod::Text> written by
+Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
+
+=head1 LICENSE
+
+Pod-Parser is free software; you can redistribute it and/or modify it
+under the terms of the Artistic License distributed with Perl version
+5.000 or (at your option) any later version. Please refer to the
+Artistic License that came with your Perl distribution for more
+details. If your version of Perl was not distributed under the
+terms of the Artistic License, than you may distribute PodParser
+under the same terms as Perl itself.
+
+=cut
+
+1;
+# vim: ts=4 sw=4 et
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/scripts/podselect.PL b/gnu/usr.bin/perl/cpan/Pod-Parser/scripts/podselect.PL
index 7fadd7366cb..16e2d985be6 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/scripts/podselect.PL
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/scripts/podselect.PL
@@ -1,143 +1,143 @@
-#!/usr/local/bin/perl
-
-use Config;
-use File::Basename qw(&basename &dirname);
-use Cwd;
-
-# List explicitly here the variables you want Configure to
-# generate. Metaconfig only looks for shell variables, so you
-# have to mention them as if they were shell variables, not
-# %Config entries. Thus you write
-# $startperl
-# to ensure Configure will look for $Config{startperl}.
-
-# This forces PL files to create target in same directory as PL file.
-# This is so that make depend always knows where to find PL derivatives.
-$origdir = cwd;
-chdir(dirname($0));
-$file = basename($0, '.PL');
-$file .= '.com' if $^O eq 'VMS';
-
-open OUT,">$file" or die "Can't create $file: $!";
-
-print "Extracting $file (with variable substitutions)\n";
-
-# In this section, perl variables will be expanded during extraction.
-# You can use $Config{...} to use Configure variables.
-
-print OUT <<"!GROK!THIS!";
-$Config{'startperl'}
- eval 'exec perl -S \$0 "\$@"'
- if 0;
-!GROK!THIS!
-
-# In the following, perl variables are not expanded during extraction.
-
-print OUT <<'!NO!SUBS!';
-
-#############################################################################
-# podselect -- command to invoke the podselect function in Pod::Select
-#
-# Copyright (c) 1996-2000 by Bradford Appleton. All rights reserved.
-# This file is part of "PodParser". PodParser is free software;
-# you can redistribute it and/or modify it under the same terms
-# as Perl itself.
-#############################################################################
-
-use strict;
-#use diagnostics;
-
-=head1 NAME
-
-podselect - print selected sections of pod documentation on standard output
-
-=head1 SYNOPSIS
-
-B<podselect> [B<-help>] [B<-man>] [B<-section>S< >I<section-spec>]
-[I<file>S< >...]
-
-=head1 OPTIONS AND ARGUMENTS
-
-=over 8
-
-=item B<-help>
-
-Print a brief help message and exit.
-
-=item B<-man>
-
-Print the manual page and exit.
-
-=item B<-section>S< >I<section-spec>
-
-Specify a section to include in the output.
-See L<Pod::Parser/"SECTION SPECIFICATIONS">
-for the format to use for I<section-spec>.
-This option may be given multiple times on the command line.
-
-=item I<file>
-
-The pathname of a file from which to select sections of pod
-documentation (defaults to standard input).
-
-=back
-
-=head1 DESCRIPTION
-
-B<podselect> will read the given input files looking for pod
-documentation and will print out (in raw pod format) all sections that
-match one ore more of the given section specifications. If no section
-specifications are given than all pod sections encountered are output.
-
-B<podselect> invokes the B<podselect()> function exported by B<Pod::Select>
-Please see L<Pod::Select/podselect()> for more details.
-
-=head1 SEE ALSO
-
-L<Pod::Parser> and L<Pod::Select>
-
-=head1 AUTHOR
-
-Please report bugs using L<http://rt.cpan.org>.
-
-Brad Appleton E<lt>bradapp@enteract.comE<gt>
-
-Based on code for B<Pod::Text::pod2text(1)> written by
-Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
-
-=cut
-
-use Pod::Select;
-use Pod::Usage;
-use Getopt::Long;
-
-## Define options
-my %options = (
- 'help' => 0,
- 'man' => 0,
- 'sections' => [],
-);
-
-## Parse options
-GetOptions(\%options, 'help', 'man', 'sections|select=s@') || pod2usage(2);
-pod2usage(1) if ($options{help});
-pod2usage(-verbose => 2) if ($options{man});
-
-## Dont default to STDIN if connected to a terminal
-pod2usage(2) if ((@ARGV == 0) && (-t STDIN));
-
-## Invoke podselect().
-if (@{ $options{'sections'} } > 0) {
- podselect({ -sections => $options{'sections'} }, @ARGV);
-}
-else {
- podselect(@ARGV);
-}
-
-
-!NO!SUBS!
-
-close OUT or die "Can't close $file: $!";
-chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
-exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
-chdir $origdir;
+#!/usr/local/bin/perl
+
+use Config;
+use File::Basename qw(&basename &dirname);
+use Cwd;
+
+# List explicitly here the variables you want Configure to
+# generate. Metaconfig only looks for shell variables, so you
+# have to mention them as if they were shell variables, not
+# %Config entries. Thus you write
+# $startperl
+# to ensure Configure will look for $Config{startperl}.
+
+# This forces PL files to create target in same directory as PL file.
+# This is so that make depend always knows where to find PL derivatives.
+$origdir = cwd;
+chdir(dirname($0));
+$file = basename($0, '.PL');
+$file .= '.com' if $^O eq 'VMS';
+
+open OUT,">$file" or die "Can't create $file: $!";
+
+print "Extracting $file (with variable substitutions)\n";
+
+# In this section, perl variables will be expanded during extraction.
+# You can use $Config{...} to use Configure variables.
+
+print OUT <<"!GROK!THIS!";
+$Config{'startperl'}
+ eval 'exec perl -S \$0 "\$@"'
+ if 0;
+!GROK!THIS!
+
+# In the following, perl variables are not expanded during extraction.
+
+print OUT <<'!NO!SUBS!';
+
+#############################################################################
+# podselect -- command to invoke the podselect function in Pod::Select
+#
+# Copyright (c) 1996-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+use strict;
+#use diagnostics;
+
+=head1 NAME
+
+podselect - print selected sections of pod documentation on standard output
+
+=head1 SYNOPSIS
+
+B<podselect> [B<-help>] [B<-man>] [B<-section>S< >I<section-spec>]
+[I<file>S< >...]
+
+=head1 OPTIONS AND ARGUMENTS
+
+=over 8
+
+=item B<-help>
+
+Print a brief help message and exit.
+
+=item B<-man>
+
+Print the manual page and exit.
+
+=item B<-section>S< >I<section-spec>
+
+Specify a section to include in the output.
+See L<Pod::Parser/"SECTION SPECIFICATIONS">
+for the format to use for I<section-spec>.
+This option may be given multiple times on the command line.
+
+=item I<file>
+
+The pathname of a file from which to select sections of pod
+documentation (defaults to standard input).
+
+=back
+
+=head1 DESCRIPTION
+
+B<podselect> will read the given input files looking for pod
+documentation and will print out (in raw pod format) all sections that
+match one ore more of the given section specifications. If no section
+specifications are given than all pod sections encountered are output.
+
+B<podselect> invokes the B<podselect()> function exported by B<Pod::Select>
+Please see L<Pod::Select/podselect()> for more details.
+
+=head1 SEE ALSO
+
+L<Pod::Parser> and L<Pod::Select>
+
+=head1 AUTHOR
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt>
+
+Based on code for B<Pod::Text::pod2text(1)> written by
+Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
+
+=cut
+
+use Pod::Select;
+use Pod::Usage;
+use Getopt::Long;
+
+## Define options
+my %options = (
+ 'help' => 0,
+ 'man' => 0,
+ 'sections' => [],
+);
+
+## Parse options
+GetOptions(\%options, 'help', 'man', 'sections|select=s@') || pod2usage(2);
+pod2usage(1) if ($options{help});
+pod2usage(-verbose => 2) if ($options{man});
+
+## Dont default to STDIN if connected to a terminal
+pod2usage(2) if ((@ARGV == 0) && (-t STDIN));
+
+## Invoke podselect().
+if (@{ $options{'sections'} } > 0) {
+ podselect({ -sections => $options{'sections'} }, @ARGV);
+}
+else {
+ podselect(@ARGV);
+}
+
+
+!NO!SUBS!
+
+close OUT or die "Can't close $file: $!";
+chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
+exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
+chdir $origdir;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/contains_bad_pod.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/contains_bad_pod.xr
index ad65663e221..c7907963d95 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/contains_bad_pod.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/contains_bad_pod.xr
@@ -1,5 +1,5 @@
-=head foo
-
-bar baz.
-
-=cut
+=head foo
+
+bar baz.
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/contains_pod.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/contains_pod.xr
index 7ea408de46a..b79591a95c4 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/contains_pod.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/contains_pod.xr
@@ -1,5 +1,5 @@
-=head1 foo
-
-bar baz.
-
-=cut
+=head1 foo
+
+bar baz.
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/emptycmd.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/emptycmd.t
index 59e395ea04d..53d1046345b 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/emptycmd.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/emptycmd.t
@@ -1,21 +1,21 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-__END__
-
-=pod
-
-= this is a test
-of the emergency
-broadcast system
-
-=cut
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+__END__
+
+=pod
+
+= this is a test
+of the emergency
+broadcast system
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/emptycmd.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/emptycmd.xr
index f06d2dbb097..dd474a1a447 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/emptycmd.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/emptycmd.xr
@@ -1,2 +1,2 @@
- = this is a test of the emergency broadcast system
-
+ = this is a test of the emergency broadcast system
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/find.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/find.t
index 27d48953dcb..7cfd7ae613e 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/find.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/find.t
@@ -1,103 +1,101 @@
-# Testing of Pod::Find
-# Author: Marek Rouchal <marek@saftsack.fs.uni-bayreuth.de>
-
-$| = 1;
-
-BEGIN {
- if ($^O eq 'VMS') {
- print "1..0 # needs upstream patch from https://rt.cpan.org/Ticket/Display.html?id=55121";
- exit 0;
- }
-}
-
-use strict;
-use Test::More tests => 4;
-
-BEGIN {
- # 1. load successful
- use_ok('Pod::Find', qw(pod_find pod_where));
-}
-
-use File::Spec;
-
-require Cwd;
-my $THISDIR = Cwd::cwd();
-my $VERBOSE = $ENV{PERL_CORE} ? 0 : ($ENV{TEST_VERBOSE} || 0);
-my $lib_dir = File::Spec->catdir($THISDIR,'lib');
-
-if ($^O eq 'VMS') {
- $lib_dir = VMS::Filespec::unixify($lib_dir);
-}
-
-print "### 2. searching $lib_dir\n";
-my %pods = pod_find($lib_dir);
-my @results = values %pods;
-print "### found @results\n";
-my @compare = qw(
- Pod::Checker
- Pod::Find
- Pod::InputObjects
- Pod::ParseUtils
- Pod::Parser
- Pod::PlainText
- Pod::Select
- Pod::Usage
-);
-if (File::Spec->case_tolerant || $^O eq 'dos') {
- # must downcase before sorting
- map {$_ = lc $_} @compare;
- map {$_ = lc $_} @results;
-}
-my $compare = join(',', sort @compare);
-my $result = join(',', sort @results);
-is($result, $compare);
-
-print "### 3. searching for File::Find\n";
-$result = pod_where({ -inc => 1, -verbose => $VERBOSE }, 'File::Find')
- || 'undef - pod not found!';
-print "### found $result\n";
-
-require Config;
-$compare = $ENV{PERL_CORE} ?
- File::Spec->catfile(File::Spec->updir, File::Spec->updir, 'lib','File','Find.pm')
- : File::Spec->catfile($Config::Config{privlibexp},"File","Find.pm");
-my $resfile = _canon($result);
-my $cmpfile = _canon($compare);
-if($^O =~ /dos|win32/i && $resfile =~ /~\d(?=\\|$)/) {
- # we have ~1 short filenames
- $resfile = quotemeta($resfile);
- $resfile =~ s/\\~\d(?=\\|$)/[^\\\\]+/g;
- ok($cmpfile =~ /^$resfile$/, "pod_where found File::Find (with long filename matching)") ||
- diag("'$cmpfile' does not match /^$resfile\$/");
-} else {
- is($resfile,$cmpfile,"pod_where found File::Find");
-}
-
-# Search for a documentation pod rather than a module
-my $searchpod = 'Stuff';
-print "### 4. searching for $searchpod.pod\n";
-$result = pod_where(
- { -dirs => [ File::Spec->catdir( qw(t), 'pod', 'testpods', 'lib', 'Pod') ],
- -verbose => $VERBOSE }, $searchpod)
- || "undef - $searchpod.pod not found!";
-print "### found $result\n";
-
-$compare = File::Spec->catfile(
- qw(t), 'pod', 'testpods', 'lib', 'Pod' ,'Stuff.pm');
-is(_canon($result),_canon($compare));
-
-
-# make the path as generic as possible
-sub _canon
-{
- my ($path) = @_;
- $path = File::Spec->canonpath($path);
- my @comp = File::Spec->splitpath($path);
- my @dir = File::Spec->splitdir($comp[1]);
- $comp[1] = File::Spec->catdir(@dir);
- $path = File::Spec->catpath(@comp);
- $path = uc($path) if File::Spec->case_tolerant;
- print "### general path: $path\n" if $VERBOSE;
- $path;
-}
-
+# Testing of Pod::Find
+# Author: Marek Rouchal <marek@saftsack.fs.uni-bayreuth.de>
+
+$| = 1;
+
+BEGIN {
+ if ($^O eq 'VMS') {
+ print "1..0 # needs upstream patch from https://rt.cpan.org/Ticket/Display.html?id=55121";
+ exit 0;
+ }
+}
+
+use strict;
+use Test::More tests => 4;
+
+BEGIN {
+ # 1. load successful
+ use_ok('Pod::Find', qw(pod_find pod_where));
+}
+
+use File::Spec;
+
+require Cwd;
+my $THISDIR = Cwd::cwd();
+my $VERBOSE = $ENV{PERL_CORE} ? 0 : ($ENV{TEST_VERBOSE} || 0);
+my $lib_dir = File::Spec->catdir($THISDIR,'lib');
+
+if ($^O eq 'VMS') {
+ $lib_dir = VMS::Filespec::unixify($lib_dir);
+}
+
+print "### 2. searching $lib_dir\n";
+my %pods = pod_find($lib_dir);
+my @results = values %pods;
+print "### found @results\n";
+my @compare = qw(
+ Pod::Find
+ Pod::InputObjects
+ Pod::ParseUtils
+ Pod::Parser
+ Pod::PlainText
+ Pod::Select
+);
+if (File::Spec->case_tolerant || $^O eq 'dos') {
+ # must downcase before sorting
+ map {$_ = lc $_} @compare;
+ map {$_ = lc $_} @results;
+}
+my $compare = join(',', sort @compare);
+my $result = join(',', sort @results);
+is($result, $compare);
+
+print "### 3. searching for File::Find\n";
+$result = pod_where({ -inc => 1, -verbose => $VERBOSE }, 'File::Find')
+ || 'undef - pod not found!';
+print "### found $result\n";
+
+require Config;
+$compare = $ENV{PERL_CORE} ?
+ File::Spec->catfile(File::Spec->updir, File::Spec->updir, 'lib','File','Find.pm')
+ : File::Spec->catfile($Config::Config{privlibexp},"File","Find.pm");
+my $resfile = _canon($result);
+my $cmpfile = _canon($compare);
+if($^O =~ /dos|win32/i && $resfile =~ /~\d(?=\\|$)/) {
+ # we have ~1 short filenames
+ $resfile = quotemeta($resfile);
+ $resfile =~ s/\\~\d(?=\\|$)/[^\\\\]+/g;
+ ok($cmpfile =~ /^$resfile$/, "pod_where found File::Find (with long filename matching)") ||
+ diag("'$cmpfile' does not match /^$resfile\$/");
+} else {
+ is($resfile,$cmpfile,"pod_where found File::Find");
+}
+
+# Search for a documentation pod rather than a module
+my $searchpod = 'Stuff';
+print "### 4. searching for $searchpod.pod\n";
+$result = pod_where(
+ { -dirs => [ File::Spec->catdir( qw(t), 'pod', 'testpods', 'lib', 'Pod') ],
+ -verbose => $VERBOSE }, $searchpod)
+ || "undef - $searchpod.pod not found!";
+print "### found $result\n";
+
+$compare = File::Spec->catfile(
+ qw(t), 'pod', 'testpods', 'lib', 'Pod' ,'Stuff.pm');
+is(_canon($result),_canon($compare));
+
+
+# make the path as generic as possible
+sub _canon
+{
+ my ($path) = @_;
+ $path = File::Spec->canonpath($path);
+ my @comp = File::Spec->splitpath($path);
+ my @dir = File::Spec->splitdir($comp[1]);
+ $comp[1] = File::Spec->catdir(@dir);
+ $path = File::Spec->catpath(@comp);
+ $path = uc($path) if File::Spec->case_tolerant;
+ print "### general path: $path\n" if $VERBOSE;
+ $path;
+}
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/for.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/for.t
index 44af44f17de..12ba3392c08 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/for.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/for.t
@@ -1,59 +1,59 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-
-__END__
-
-
-=pod
-
-This is a test
-
-=for theloveofpete
-You shouldn't see this
-or this
-or this
-
-=for text
-pod2text should see this
-and this
-and this
-
-and everything should see this!
-
-=begin text
-
-Similarly, this line ...
-
-and this one ...
-
-as well this one,
-
-should all be in pod2text output
-
-=end text
-
-Tweedley-deedley-dee, Im as happy as can be!
-Tweedley-deedley-dum, cuz youre my honey sugar plum!
-
-=begin atthebeginning
-
-But I expect to see neither hide ...
-
-nor tail ...
-
-of this text
-
-=end atthebeginning
-
-The rest of this should show up in everything.
-
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+
+=pod
+
+This is a test
+
+=for theloveofpete
+You shouldn't see this
+or this
+or this
+
+=for text
+pod2text should see this
+and this
+and this
+
+and everything should see this!
+
+=begin text
+
+Similarly, this line ...
+
+and this one ...
+
+as well this one,
+
+should all be in pod2text output
+
+=end text
+
+Tweedley-deedley-dee, Im as happy as can be!
+Tweedley-deedley-dum, cuz youre my honey sugar plum!
+
+=begin atthebeginning
+
+But I expect to see neither hide ...
+
+nor tail ...
+
+of this text
+
+=end atthebeginning
+
+The rest of this should show up in everything.
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/for.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/for.xr
index 5f6b8b2ce8c..b616bf2cb2b 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/for.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/for.xr
@@ -1,21 +1,21 @@
- This is a test
-
- pod2text should see this
- and this
- and this
-
- and everything should see this!
-
-Similarly, this line ...
-
-and this one ...
-
-as well this one,
-
-should all be in pod2text output
-
- Tweedley-deedley-dee, Im as happy as can be! Tweedley-deedley-dum, cuz
- youre my honey sugar plum!
-
- The rest of this should show up in everything.
-
+ This is a test
+
+ pod2text should see this
+ and this
+ and this
+
+ and everything should see this!
+
+Similarly, this line ...
+
+and this one ...
+
+as well this one,
+
+should all be in pod2text output
+
+ Tweedley-deedley-dee, Im as happy as can be! Tweedley-deedley-dum, cuz
+ youre my honey sugar plum!
+
+ The rest of this should show up in everything.
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/headings.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/headings.t
index 78608d0fd9f..4688272231a 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/headings.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/headings.t
@@ -1,140 +1,140 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-
-__END__
-
-
-#################################################################
- use Pod::Usage;
- pod2usage( VERBOSE => 2, EXIT => 1 );
-
-=pod
-
-=head1 NAME
-
-B<rdb2pg> - insert an rdb table into a PostgreSQL database
-
-=head1 SYNOPSIS
-
-B<rdb2pg> [I<param>=I<value> ...]
-
-=head1 PARAMETERS
-
-B<rdb2pg> uses an IRAF-compatible parameter interface.
-A template parameter file is in F</proj/axaf/simul/lib/uparm/rdb2pg.par>.
-
-=over 4
-
-=item B<input> I<file>
-
-The B<RDB> file to insert into the database. If the given name
-is the string C<stdin>, it reads from the UNIX standard input stream.
-
-
-=back
-
-=head1 DESCRIPTION
-
-B<rdb2pg> will enter the data from an B<RDB> database into a
-PostgreSQL database table, optionally creating the database and the
-table if they do not exist. It automatically determines the
-PostgreSQL data type from the column definition in the B<RDB> file,
-but may be overriden via a series of definition files or directly
-via one of its parameters.
-
-The target database and table are specified by the C<db> and C<table>
-parameters. If they do not exist, and the C<createdb> parameter is
-set, they will be created. Table field definitions are determined
-in the following order:
-
-=cut
-
-#################################################################
-
-results in:
-
-
-#################################################################
-
- rdb2pg - insert an rdb table into a PostgreSQL database
-
- rdb2pg [*param*=*value* ...]
-
- rdb2pg uses an IRAF-compatible parameter interface. A template
- parameter file is in /proj/axaf/simul/lib/uparm/rdb2pg.par.
-
- The RDB file to insert into the database. If the given name is
- the string `stdin', it reads from the UNIX standard input
- stream.
-
- rdb2pg will enter the data from an RDB database into a
- PostgreSQL database table, optionally creating the database and
- the table if they do not exist. It automatically determines the
- PostgreSQL data type from the column definition in the RDB file,
- but may be overriden via a series of definition files or
- directly via one of its parameters.
-
- The target database and table are specified by the `db' and
- `table' parameters. If they do not exist, and the `createdb'
- parameter is set, they will be created. Table field definitions
- are determined in the following order:
-
-
-#################################################################
-
-while the original version of Text (using pod2text) gives
-
-#################################################################
-
-NAME
- rdb2pg - insert an rdb table into a PostgreSQL database
-
-SYNOPSIS
- rdb2pg [*param*=*value* ...]
-
-PARAMETERS
- rdb2pg uses an IRAF-compatible parameter interface. A template
- parameter file is in /proj/axaf/simul/lib/uparm/rdb2pg.par.
-
- input *file*
- The RDB file to insert into the database. If the given name
- is the string `stdin', it reads from the UNIX standard input
- stream.
-
-DESCRIPTION
- rdb2pg will enter the data from an RDB database into a
- PostgreSQL database table, optionally creating the database and
- the table if they do not exist. It automatically determines the
- PostgreSQL data type from the column definition in the RDB file,
- but may be overriden via a series of definition files or
- directly via one of its parameters.
-
- The target database and table are specified by the `db' and
- `table' parameters. If they do not exist, and the `createdb'
- parameter is set, they will be created. Table field definitions
- are determined in the following order:
-
-
-#################################################################
-
-
-Thanks for any help. If, as your email indicates, you've not much
-time to look at this, I can work around things by calling pod2text()
-directly using the official Text.pm.
-
-Diab
-
--------------
-Diab Jerius
-djerius@cfa.harvard.edu
-
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+
+#################################################################
+ use Pod::Usage;
+ pod2usage( VERBOSE => 2, EXIT => 1 );
+
+=pod
+
+=head1 NAME
+
+B<rdb2pg> - insert an rdb table into a PostgreSQL database
+
+=head1 SYNOPSIS
+
+B<rdb2pg> [I<param>=I<value> ...]
+
+=head1 PARAMETERS
+
+B<rdb2pg> uses an IRAF-compatible parameter interface.
+A template parameter file is in F</proj/axaf/simul/lib/uparm/rdb2pg.par>.
+
+=over 4
+
+=item B<input> I<file>
+
+The B<RDB> file to insert into the database. If the given name
+is the string C<stdin>, it reads from the UNIX standard input stream.
+
+
+=back
+
+=head1 DESCRIPTION
+
+B<rdb2pg> will enter the data from an B<RDB> database into a
+PostgreSQL database table, optionally creating the database and the
+table if they do not exist. It automatically determines the
+PostgreSQL data type from the column definition in the B<RDB> file,
+but may be overriden via a series of definition files or directly
+via one of its parameters.
+
+The target database and table are specified by the C<db> and C<table>
+parameters. If they do not exist, and the C<createdb> parameter is
+set, they will be created. Table field definitions are determined
+in the following order:
+
+=cut
+
+#################################################################
+
+results in:
+
+
+#################################################################
+
+ rdb2pg - insert an rdb table into a PostgreSQL database
+
+ rdb2pg [*param*=*value* ...]
+
+ rdb2pg uses an IRAF-compatible parameter interface. A template
+ parameter file is in /proj/axaf/simul/lib/uparm/rdb2pg.par.
+
+ The RDB file to insert into the database. If the given name is
+ the string `stdin', it reads from the UNIX standard input
+ stream.
+
+ rdb2pg will enter the data from an RDB database into a
+ PostgreSQL database table, optionally creating the database and
+ the table if they do not exist. It automatically determines the
+ PostgreSQL data type from the column definition in the RDB file,
+ but may be overriden via a series of definition files or
+ directly via one of its parameters.
+
+ The target database and table are specified by the `db' and
+ `table' parameters. If they do not exist, and the `createdb'
+ parameter is set, they will be created. Table field definitions
+ are determined in the following order:
+
+
+#################################################################
+
+while the original version of Text (using pod2text) gives
+
+#################################################################
+
+NAME
+ rdb2pg - insert an rdb table into a PostgreSQL database
+
+SYNOPSIS
+ rdb2pg [*param*=*value* ...]
+
+PARAMETERS
+ rdb2pg uses an IRAF-compatible parameter interface. A template
+ parameter file is in /proj/axaf/simul/lib/uparm/rdb2pg.par.
+
+ input *file*
+ The RDB file to insert into the database. If the given name
+ is the string `stdin', it reads from the UNIX standard input
+ stream.
+
+DESCRIPTION
+ rdb2pg will enter the data from an RDB database into a
+ PostgreSQL database table, optionally creating the database and
+ the table if they do not exist. It automatically determines the
+ PostgreSQL data type from the column definition in the RDB file,
+ but may be overriden via a series of definition files or
+ directly via one of its parameters.
+
+ The target database and table are specified by the `db' and
+ `table' parameters. If they do not exist, and the `createdb'
+ parameter is set, they will be created. Table field definitions
+ are determined in the following order:
+
+
+#################################################################
+
+
+Thanks for any help. If, as your email indicates, you've not much
+time to look at this, I can work around things by calling pod2text()
+directly using the official Text.pm.
+
+Diab
+
+-------------
+Diab Jerius
+djerius@cfa.harvard.edu
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/headings.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/headings.xr
index fb37a2b0cf6..f92efb5ecf5 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/headings.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/headings.xr
@@ -1,26 +1,26 @@
-NAME
- rdb2pg - insert an rdb table into a PostgreSQL database
-
-SYNOPSIS
- rdb2pg [*param*=*value* ...]
-
-PARAMETERS
- rdb2pg uses an IRAF-compatible parameter interface. A template parameter
- file is in /proj/axaf/simul/lib/uparm/rdb2pg.par.
-
- input *file*
- The RDB file to insert into the database. If the given name is the
- string `stdin', it reads from the UNIX standard input stream.
-
-DESCRIPTION
- rdb2pg will enter the data from an RDB database into a PostgreSQL
- database table, optionally creating the database and the table if they
- do not exist. It automatically determines the PostgreSQL data type from
- the column definition in the RDB file, but may be overriden via a series
- of definition files or directly via one of its parameters.
-
- The target database and table are specified by the `db' and `table'
- parameters. If they do not exist, and the `createdb' parameter is set,
- they will be created. Table field definitions are determined in the
- following order:
-
+NAME
+ rdb2pg - insert an rdb table into a PostgreSQL database
+
+SYNOPSIS
+ rdb2pg [*param*=*value* ...]
+
+PARAMETERS
+ rdb2pg uses an IRAF-compatible parameter interface. A template parameter
+ file is in /proj/axaf/simul/lib/uparm/rdb2pg.par.
+
+ input *file*
+ The RDB file to insert into the database. If the given name is the
+ string `stdin', it reads from the UNIX standard input stream.
+
+DESCRIPTION
+ rdb2pg will enter the data from an RDB database into a PostgreSQL
+ database table, optionally creating the database and the table if they
+ do not exist. It automatically determines the PostgreSQL data type from
+ the column definition in the RDB file, but may be overriden via a series
+ of definition files or directly via one of its parameters.
+
+ The target database and table are specified by the `db' and `table'
+ parameters. If they do not exist, and the `createdb' parameter is set,
+ they will be created. Table field definitions are determined in the
+ following order:
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/include.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/include.t
index 4e73b783563..9edb47864ce 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/include.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/include.t
@@ -1,36 +1,36 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-
-__END__
-
-
-=pod
-
-This file tries to demonstrate a simple =include directive
-for pods. It is used as follows:
-
- =include filename
-
-where "filename" is expected to be an absolute pathname, or else
-reside be relative to the directory in which the current processed
-podfile resides, or be relative to the current directory.
-
-Lets try it out with the file "included.t" shall we.
-
-***THIS TEXT IS IMMEDIATELY BEFORE THE INCLUDE***
-
-=include included.t
-
-***THIS TEXT IS IMMEDIATELY AFTER THE INCLUDE***
-
-So how did we do???
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+
+=pod
+
+This file tries to demonstrate a simple =include directive
+for pods. It is used as follows:
+
+ =include filename
+
+where "filename" is expected to be an absolute pathname, or else
+reside be relative to the directory in which the current processed
+podfile resides, or be relative to the current directory.
+
+Lets try it out with the file "included.t" shall we.
+
+***THIS TEXT IS IMMEDIATELY BEFORE THE INCLUDE***
+
+=include included.t
+
+***THIS TEXT IS IMMEDIATELY AFTER THE INCLUDE***
+
+So how did we do???
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/include.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/include.xr
index 624ee444474..187653b741a 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/include.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/include.xr
@@ -1,22 +1,22 @@
- This file tries to demonstrate a simple =include directive for pods. It
- is used as follows:
-
- =include filename
-
- where "filename" is expected to be an absolute pathname, or else reside
- be relative to the directory in which the current processed podfile
- resides, or be relative to the current directory.
-
- Lets try it out with the file "included.t" shall we.
-
- ***THIS TEXT IS IMMEDIATELY BEFORE THE INCLUDE***
-
-###### begin =include included.t #####
- This is the text of the included file named "included.t". It should
- appear in the final pod document from pod2xxx
-
-###### end =include included.t #####
- ***THIS TEXT IS IMMEDIATELY AFTER THE INCLUDE***
-
- So how did we do???
-
+ This file tries to demonstrate a simple =include directive for pods. It
+ is used as follows:
+
+ =include filename
+
+ where "filename" is expected to be an absolute pathname, or else reside
+ be relative to the directory in which the current processed podfile
+ resides, or be relative to the current directory.
+
+ Lets try it out with the file "included.t" shall we.
+
+ ***THIS TEXT IS IMMEDIATELY BEFORE THE INCLUDE***
+
+###### begin =include included.t #####
+ This is the text of the included file named "included.t". It should
+ appear in the final pod document from pod2xxx
+
+###### end =include included.t #####
+ ***THIS TEXT IS IMMEDIATELY AFTER THE INCLUDE***
+
+ So how did we do???
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/included.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/included.t
index 4f171c454bf..d6e4a504311 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/included.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/included.t
@@ -1,35 +1,35 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-
-__END__
-
-
-##------------------------------------------------------------
-# This file is =included by "include.t"
-#
-# This text should NOT be in the resultant pod document
-# because we havent seen an =xxx pod directive in this file!
-##------------------------------------------------------------
-
-=pod
-
-This is the text of the included file named "included.t".
-It should appear in the final pod document from pod2xxx
-
-=cut
-
-##------------------------------------------------------------
-# This text should NOT be in the resultant pod document
-# because it is *after* an =cut an no other pod directives
-# proceed it!
-##------------------------------------------------------------
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+
+##------------------------------------------------------------
+# This file is =included by "include.t"
+#
+# This text should NOT be in the resultant pod document
+# because we havent seen an =xxx pod directive in this file!
+##------------------------------------------------------------
+
+=pod
+
+This is the text of the included file named "included.t".
+It should appear in the final pod document from pod2xxx
+
+=cut
+
+##------------------------------------------------------------
+# This text should NOT be in the resultant pod document
+# because it is *after* an =cut an no other pod directives
+# proceed it!
+##------------------------------------------------------------
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/included.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/included.xr
index 54142fa0d32..16a65cd3586 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/included.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/included.xr
@@ -1,3 +1,3 @@
- This is the text of the included file named "included.t". It should
- appear in the final pod document from pod2xxx
-
+ This is the text of the included file named "included.t". It should
+ appear in the final pod document from pod2xxx
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/lref.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/lref.t
index 02e2c9e3071..33a0a7ca9f3 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/lref.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/lref.t
@@ -1,66 +1,66 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-
-__END__
-
-
-=pod
-
-Try out I<LOTS> of different ways of specifying references:
-
-Reference the L<manpage/section>
-
-Reference the L<manpage / section>
-
-Reference the L<manpage/ section>
-
-Reference the L<manpage /section>
-
-Reference the L<"manpage/section">
-
-Reference the L<"manpage"/section>
-
-Reference the L<manpage/"section">
-
-Reference the L<manpage/
-section>
-
-Reference the L<manpage
-/section>
-
-Now try it using the new "|" stuff ...
-
-Reference the L<thistext|manpage/section>
-
-Reference the L<thistext | manpage / section>
-
-Reference the L<thistext| manpage/ section>
-
-Reference the L<thistext |manpage /section>
-
-Reference the L<thistext|
-"manpage/section">
-
-Reference the L<thistext
-|"manpage"/section>
-
-Reference the L<thistext|manpage/"section">
-
-Reference the L<thistext|
-manpage/
-section>
-
-Reference the L<thistext
-|manpage
-/section>
-
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+
+=pod
+
+Try out I<LOTS> of different ways of specifying references:
+
+Reference the L<manpage/section>
+
+Reference the L<manpage / section>
+
+Reference the L<manpage/ section>
+
+Reference the L<manpage /section>
+
+Reference the L<"manpage/section">
+
+Reference the L<"manpage"/section>
+
+Reference the L<manpage/"section">
+
+Reference the L<manpage/
+section>
+
+Reference the L<manpage
+/section>
+
+Now try it using the new "|" stuff ...
+
+Reference the L<thistext|manpage/section>
+
+Reference the L<thistext | manpage / section>
+
+Reference the L<thistext| manpage/ section>
+
+Reference the L<thistext |manpage /section>
+
+Reference the L<thistext|
+"manpage/section">
+
+Reference the L<thistext
+|"manpage"/section>
+
+Reference the L<thistext|manpage/"section">
+
+Reference the L<thistext|
+manpage/
+section>
+
+Reference the L<thistext
+|manpage
+/section>
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/lref.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/lref.xr
index 297053b1ace..c287cf5a6d9 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/lref.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/lref.xr
@@ -1,40 +1,40 @@
- Try out *LOTS* of different ways of specifying references:
-
- Reference the the section entry in the manpage manpage
-
- Reference the the section entry in the manpage manpage
-
- Reference the the section entry in the manpage manpage
-
- Reference the the section entry in the manpage manpage
-
- Reference the the section on "manpage/section"
-
- Reference the the section entry in the "manpage" manpage
-
- Reference the the section on "section" in the manpage manpage
-
- Reference the the section entry in the manpage manpage
-
- Reference the the section entry in the manpage manpage
-
- Now try it using the new "|" stuff ...
-
- Reference the thistext
-
- Reference the thistext
-
- Reference the thistext
-
- Reference the thistext
-
- Reference the thistext
-
- Reference the thistext
-
- Reference the thistext
-
- Reference the thistext
-
- Reference the thistext
-
+ Try out *LOTS* of different ways of specifying references:
+
+ Reference the the section entry in the manpage manpage
+
+ Reference the the section entry in the manpage manpage
+
+ Reference the the section entry in the manpage manpage
+
+ Reference the the section entry in the manpage manpage
+
+ Reference the the section on "manpage/section"
+
+ Reference the the section entry in the "manpage" manpage
+
+ Reference the the section on "section" in the manpage manpage
+
+ Reference the the section entry in the manpage manpage
+
+ Reference the the section entry in the manpage manpage
+
+ Now try it using the new "|" stuff ...
+
+ Reference the thistext
+
+ Reference the thistext
+
+ Reference the thistext
+
+ Reference the thistext
+
+ Reference the thistext
+
+ Reference the thistext
+
+ Reference the thistext
+
+ Reference the thistext
+
+ Reference the thistext
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/multiline_items.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/multiline_items.t
index 0fe410a4e6d..98ad34222eb 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/multiline_items.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/multiline_items.t
@@ -1,31 +1,31 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-
-__END__
-
-
-=head1 Test multiline item lists
-
-This is a test to ensure that multiline =item paragraphs
-get indented appropriately.
-
-=over 4
-
-=item This
-is
-a
-test.
-
-=back
-
-=cut
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+
+=head1 Test multiline item lists
+
+This is a test to ensure that multiline =item paragraphs
+get indented appropriately.
+
+=over 4
+
+=item This
+is
+a
+test.
+
+=back
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/multiline_items.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/multiline_items.xr
index 9eea63a8f09..cda163b7f5b 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/multiline_items.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/multiline_items.xr
@@ -1,6 +1,6 @@
-Test multiline item lists
- This is a test to ensure that multiline =item paragraphs get indented
- appropriately.
-
- This is a test.
-
+Test multiline item lists
+ This is a test to ensure that multiline =item paragraphs get indented
+ appropriately.
+
+ This is a test.
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_items.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_items.t
index c8e9b224272..f60a67f1abb 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_items.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_items.t
@@ -1,64 +1,64 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-
-__END__
-
-
-=head1 Test nested item lists
-
-This is a test to ensure the nested =item paragraphs
-get indented appropriately.
-
-=over 2
-
-=item 1
-
-First section.
-
-=over 2
-
-=item a
-
-this is item a
-
-=item b
-
-this is item b
-
-=back
-
-=item 2
-
-Second section.
-
-=over 2
-
-=item a
-
-this is item a
-
-=item b
-
-this is item b
-
-=item c
-
-=item d
-
-This is item c & d.
-
-=back
-
-=back
-
-=cut
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+
+=head1 Test nested item lists
+
+This is a test to ensure the nested =item paragraphs
+get indented appropriately.
+
+=over 2
+
+=item 1
+
+First section.
+
+=over 2
+
+=item a
+
+this is item a
+
+=item b
+
+this is item b
+
+=back
+
+=item 2
+
+Second section.
+
+=over 2
+
+=item a
+
+this is item a
+
+=item b
+
+this is item b
+
+=item c
+
+=item d
+
+This is item c & d.
+
+=back
+
+=back
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_items.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_items.xr
index dd1adac1272..30834e9ca62 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_items.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_items.xr
@@ -1,19 +1,19 @@
-Test nested item lists
- This is a test to ensure the nested =item paragraphs get indented
- appropriately.
-
- 1 First section.
-
- a this is item a
-
- b this is item b
-
- 2 Second section.
-
- a this is item a
-
- b this is item b
-
- c
- d This is item c & d.
-
+Test nested item lists
+ This is a test to ensure the nested =item paragraphs get indented
+ appropriately.
+
+ 1 First section.
+
+ a this is item a
+
+ b this is item b
+
+ 2 Second section.
+
+ a this is item a
+
+ b this is item b
+
+ c
+ d This is item c & d.
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_seqs.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_seqs.t
index 8559f1f25f6..6f7ae67e997 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_seqs.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_seqs.t
@@ -1,23 +1,23 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-
-__END__
-
-
-=pod
-
-The statement: C<This is dog kind's I<finest> hour!> is a parody of a
-quotation from Winston Churchill.
-
-=cut
-
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+
+=pod
+
+The statement: C<This is dog kind's I<finest> hour!> is a parody of a
+quotation from Winston Churchill.
+
+=cut
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_seqs.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_seqs.xr
index f981061f949..4d2e09e499c 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_seqs.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/nested_seqs.xr
@@ -1,3 +1,3 @@
- The statement: `This is dog kind's *finest* hour!' is a parody of a
- quotation from Winston Churchill.
-
+ The statement: `This is dog kind's *finest* hour!' is a parody of a
+ quotation from Winston Churchill.
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/oneline_cmds.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/oneline_cmds.t
index 28bd1d09e5f..65df35271be 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/oneline_cmds.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/oneline_cmds.t
@@ -1,46 +1,46 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-
-__END__
-
-
-==head1 NAME
-B<rdb2pg> - insert an rdb table into a PostgreSQL database
-
-==head1 SYNOPSIS
-B<rdb2pg> [I<param>=I<value> ...]
-
-==head1 PARAMETERS
-B<rdb2pg> uses an IRAF-compatible parameter interface.
-A template parameter file is in F</proj/axaf/simul/lib/uparm/rdb2pg.par>.
-
-==over 4
-==item B<input> I<file>
-The B<RDB> file to insert into the database. If the given name
-is the string C<stdin>, it reads from the UNIX standard input stream.
-
-==back
-
-==head1 DESCRIPTION
-B<rdb2pg> will enter the data from an B<RDB> database into a
-PostgreSQL database table, optionally creating the database and the
-table if they do not exist. It automatically determines the
-PostgreSQL data type from the column definition in the B<RDB> file,
-but may be overriden via a series of definition files or directly
-via one of its parameters.
-
-The target database and table are specified by the C<db> and C<table>
-parameters. If they do not exist, and the C<createdb> parameter is
-set, they will be created. Table field definitions are determined
-in the following order:
-
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+
+==head1 NAME
+B<rdb2pg> - insert an rdb table into a PostgreSQL database
+
+==head1 SYNOPSIS
+B<rdb2pg> [I<param>=I<value> ...]
+
+==head1 PARAMETERS
+B<rdb2pg> uses an IRAF-compatible parameter interface.
+A template parameter file is in F</proj/axaf/simul/lib/uparm/rdb2pg.par>.
+
+==over 4
+==item B<input> I<file>
+The B<RDB> file to insert into the database. If the given name
+is the string C<stdin>, it reads from the UNIX standard input stream.
+
+==back
+
+==head1 DESCRIPTION
+B<rdb2pg> will enter the data from an B<RDB> database into a
+PostgreSQL database table, optionally creating the database and the
+table if they do not exist. It automatically determines the
+PostgreSQL data type from the column definition in the B<RDB> file,
+but may be overriden via a series of definition files or directly
+via one of its parameters.
+
+The target database and table are specified by the C<db> and C<table>
+parameters. If they do not exist, and the C<createdb> parameter is
+set, they will be created. Table field definitions are determined
+in the following order:
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/oneline_cmds.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/oneline_cmds.xr
index fb37a2b0cf6..f92efb5ecf5 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/oneline_cmds.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/oneline_cmds.xr
@@ -1,26 +1,26 @@
-NAME
- rdb2pg - insert an rdb table into a PostgreSQL database
-
-SYNOPSIS
- rdb2pg [*param*=*value* ...]
-
-PARAMETERS
- rdb2pg uses an IRAF-compatible parameter interface. A template parameter
- file is in /proj/axaf/simul/lib/uparm/rdb2pg.par.
-
- input *file*
- The RDB file to insert into the database. If the given name is the
- string `stdin', it reads from the UNIX standard input stream.
-
-DESCRIPTION
- rdb2pg will enter the data from an RDB database into a PostgreSQL
- database table, optionally creating the database and the table if they
- do not exist. It automatically determines the PostgreSQL data type from
- the column definition in the RDB file, but may be overriden via a series
- of definition files or directly via one of its parameters.
-
- The target database and table are specified by the `db' and `table'
- parameters. If they do not exist, and the `createdb' parameter is set,
- they will be created. Table field definitions are determined in the
- following order:
-
+NAME
+ rdb2pg - insert an rdb table into a PostgreSQL database
+
+SYNOPSIS
+ rdb2pg [*param*=*value* ...]
+
+PARAMETERS
+ rdb2pg uses an IRAF-compatible parameter interface. A template parameter
+ file is in /proj/axaf/simul/lib/uparm/rdb2pg.par.
+
+ input *file*
+ The RDB file to insert into the database. If the given name is the
+ string `stdin', it reads from the UNIX standard input stream.
+
+DESCRIPTION
+ rdb2pg will enter the data from an RDB database into a PostgreSQL
+ database table, optionally creating the database and the table if they
+ do not exist. It automatically determines the PostgreSQL data type from
+ the column definition in the RDB file, but may be overriden via a series
+ of definition files or directly via one of its parameters.
+
+ The target database and table are specified by the `db' and `table'
+ parameters. If they do not exist, and the `createdb' parameter is set,
+ they will be created. Table field definitions are determined in the
+ following order:
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/podselect.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/podselect.t
index 0004548cb7a..2d8e6b4f585 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/podselect.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/podselect.t
@@ -1,18 +1,18 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-
-__END__
-
-=include podselect.PL
-
-
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+=include podselect.PL
+
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/podselect.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/podselect.xr
index c288e91280c..00b977491cd 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/podselect.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/podselect.xr
@@ -1,44 +1,44 @@
-###### begin =include podselect.PL #####
-NAME
- podselect - print selected sections of pod documentation on standard
- output
-
-SYNOPSIS
- podselect [-help] [-man] [-section *section-spec*] [*file* ...]
-
-OPTIONS AND ARGUMENTS
- -help Print a brief help message and exit.
-
- -man Print the manual page and exit.
-
- -section *section-spec*
- Specify a section to include in the output. See the section on
- "SECTION SPECIFICATIONS" in the Pod::Parser manpage for the
- format to use for *section-spec*. This option may be given
- multiple times on the command line.
-
- *file* The pathname of a file from which to select sections of pod
- documentation (defaults to standard input).
-
-DESCRIPTION
- podselect will read the given input files looking for pod documentation
- and will print out (in raw pod format) all sections that match one ore
- more of the given section specifications. If no section specifications
- are given than all pod sections encountered are output.
-
- podselect invokes the podselect() function exported by Pod::Select
- Please see the podselect() entry in the Pod::Select manpage for more
- details.
-
-SEE ALSO
- the Pod::Parser manpage and the Pod::Select manpage
-
-AUTHOR
- Please report bugs using http://rt.cpan.org.
-
- Brad Appleton <bradapp@enteract.com>
-
- Based on code for Pod::Text::pod2text(1) written by Tom Christiansen
- <tchrist@mox.perl.com>
-
-###### end =include podselect.PL #####
+###### begin =include podselect.PL #####
+NAME
+ podselect - print selected sections of pod documentation on standard
+ output
+
+SYNOPSIS
+ podselect [-help] [-man] [-section *section-spec*] [*file* ...]
+
+OPTIONS AND ARGUMENTS
+ -help Print a brief help message and exit.
+
+ -man Print the manual page and exit.
+
+ -section *section-spec*
+ Specify a section to include in the output. See the section on
+ "SECTION SPECIFICATIONS" in the Pod::Parser manpage for the
+ format to use for *section-spec*. This option may be given
+ multiple times on the command line.
+
+ *file* The pathname of a file from which to select sections of pod
+ documentation (defaults to standard input).
+
+DESCRIPTION
+ podselect will read the given input files looking for pod documentation
+ and will print out (in raw pod format) all sections that match one ore
+ more of the given section specifications. If no section specifications
+ are given than all pod sections encountered are output.
+
+ podselect invokes the podselect() function exported by Pod::Select
+ Please see the podselect() entry in the Pod::Select manpage for more
+ details.
+
+SEE ALSO
+ the Pod::Parser manpage and the Pod::Select manpage
+
+AUTHOR
+ Please report bugs using http://rt.cpan.org.
+
+ Brad Appleton <bradapp@enteract.com>
+
+ Based on code for Pod::Text::pod2text(1) written by Tom Christiansen
+ <tchrist@mox.perl.com>
+
+###### end =include podselect.PL #####
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/selfcheck.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/selfcheck.t
index d170570c6cb..17df68e301a 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/selfcheck.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/selfcheck.t
@@ -1,45 +1,53 @@
-#!/usr/bin/perl
-use File::Basename;
-use File::Spec;
-use strict;
-my $THISDIR;
-BEGIN {
- $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testpchk.pl";
- import TestPodChecker qw(testpodcheck);
-}
-
-# test that our POD is correct!
-my $path = File::Spec->catfile($THISDIR,(File::Spec->updir()) x 2, 'lib', 'Pod', '*.pm');
-print "THISDIR=$THISDIR PATH=$path\n";
-my @pods = glob($path);
-print "PODS=@pods\n";
-
-print "1..",scalar(@pods),"\n";
-
-my $errs = 0;
-my $testnum = 1;
-foreach my $pod (@pods) {
- my $out = File::Spec->catfile($THISDIR, basename($pod));
- $out =~ s{\.pm}{.OUT};
- my %options = ( -Out => $out );
- my $failmsg = testpodcheck(-In => $pod, -Out => $out, -Cmp => "$THISDIR/empty.xr");
- if($failmsg) {
- if(open(IN, "<$out")) {
- while(<IN>) {
- warn "podchecker: $_";
- }
- close(IN);
- } else {
- warn "Error: Cannot read output file $out: $!\n";
- }
- print "not ok $testnum\n";
- $errs++;
- } else {
- print "ok $testnum\n";
- }
- $testnum++;
-}
-exit( ($errs == 0) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
+#!/usr/bin/perl
+use Test::More;
+use File::Basename;
+use File::Spec;
+use strict;
+my $THISDIR;
+BEGIN {
+ $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ eval {
+ require "testpchk.pl";
+ import TestPodChecker qw(testpodcheck);
+ };
+ warn $@ if $@;
+};
+
+my @pods;
+unless($Pod::Checker::VERSION && $Pod::Checker::VERSION > 1.40) {
+ plan skip_all => "we do not have a good Pod::Checker around";
+} else {
+ my $path = File::Spec->catfile($THISDIR,(File::Spec->updir()) x 2, 'lib', 'Pod', '*.pm');
+ print "THISDIR=$THISDIR PATH=$path\n";
+ @pods = glob($path);
+ print "PODS=@pods\n";
+ plan tests => scalar(@pods);
+}
+
+# test that our POD is correct!
+my $errs = 0;
+
+foreach my $pod (@pods) {
+ my $out = File::Spec->catfile($THISDIR, basename($pod));
+ $out =~ s{\.pm}{.OUT};
+ my %options = ( -Out => $out );
+ my $failmsg = testpodcheck(-In => $pod, -Out => $out, -Cmp => "$THISDIR/empty.xr");
+ if($failmsg) {
+ if(open(IN, "<$out")) {
+ while(<IN>) {
+ warn "podchecker: $_";
+ }
+ close(IN);
+ } else {
+ warn "Error: Cannot read output file $out: $!\n";
+ }
+ ok(0, $pod);
+ $errs++;
+ } else {
+ ok(1, $pod);
+ }
+}
+
+exit( ($errs == 0) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/special_seqs.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/special_seqs.t
index ecd99ecde81..f1399ccf771 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/special_seqs.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/special_seqs.t
@@ -1,46 +1,46 @@
-BEGIN {
- use File::Basename;
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testp2pt.pl";
- import TestPodIncPlainText;
-}
-
-my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
-my $passed = testpodplaintext \%options, $0;
-exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
-
-
-__END__
-
-
-=pod
-
-This is a test to see if I can do not only C<$self> and C<method()>, but
-also C<< $self->method() >> and C<< $self->{FIELDNAME} >> and
-C<< $Foo <=> $Bar >> without resorting to escape sequences. If
-I want to refer to the right-shift operator I can do something
-like C<<< $x >> 3 >>> or even C<<<< $y >> 5 >>>>.
-
-Now for the grand finale of C<< $self->method()->{FIELDNAME} = {FOO=>BAR} >>.
-And I also want to make sure that newlines work like this
-C<<<
-$self->{FOOBAR} >> 3 and [$b => $a]->[$a <=> $b]
->>>
-
-Of course I should still be able to do all this I<with> escape sequences
-too: C<$self-E<gt>method()> and C<$self-E<gt>{FIELDNAME}> and C<{FOO=E<gt>BAR}>.
-
-Dont forget C<$self-E<gt>method()-E<gt>{FIELDNAME} = {FOO=E<gt>BAR}>.
-
-And make sure that C<0> works too!
-
-Now, if I use << or >> as my delimiters, then I have to use whitespace.
-So things like C<<$self->method()>> and C<<$self->{FIELDNAME}>> wont end
-up doing what you might expect since the first > will still terminate
-the first < seen.
-
-Lets make sure these work for empty ones too, like C<< >> and C<< >> >>
-(just to be obnoxious)
-
-=cut
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+
+=pod
+
+This is a test to see if I can do not only C<$self> and C<method()>, but
+also C<< $self->method() >> and C<< $self->{FIELDNAME} >> and
+C<< $Foo <=> $Bar >> without resorting to escape sequences. If
+I want to refer to the right-shift operator I can do something
+like C<<< $x >> 3 >>> or even C<<<< $y >> 5 >>>>.
+
+Now for the grand finale of C<< $self->method()->{FIELDNAME} = {FOO=>BAR} >>.
+And I also want to make sure that newlines work like this
+C<<<
+$self->{FOOBAR} >> 3 and [$b => $a]->[$a <=> $b]
+>>>
+
+Of course I should still be able to do all this I<with> escape sequences
+too: C<$self-E<gt>method()> and C<$self-E<gt>{FIELDNAME}> and C<{FOO=E<gt>BAR}>.
+
+Dont forget C<$self-E<gt>method()-E<gt>{FIELDNAME} = {FOO=E<gt>BAR}>.
+
+And make sure that C<0> works too!
+
+Now, if I use << or >> as my delimiters, then I have to use whitespace.
+So things like C<<$self->method()>> and C<<$self->{FIELDNAME}>> wont end
+up doing what you might expect since the first > will still terminate
+the first < seen.
+
+Lets make sure these work for empty ones too, like C<< >> and C<< >> >>
+(just to be obnoxious)
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/special_seqs.xr b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/special_seqs.xr
index a8c715ae0ac..4d6c55e5a18 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/special_seqs.xr
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/special_seqs.xr
@@ -1,25 +1,25 @@
- This is a test to see if I can do not only `$self' and `method()', but
- also `$self->method()' and `$self->{FIELDNAME}' and `$Foo <=> $Bar'
- without resorting to escape sequences. If I want to refer to the
- right-shift operator I can do something like `$x >> 3' or even `$y >>
- 5'.
-
- Now for the grand finale of `$self->method()->{FIELDNAME} = {FOO=>BAR}'.
- And I also want to make sure that newlines work like this
- `$self->{FOOBAR} >> 3 and [$b => $a]->[$a <=> $b]'
-
- Of course I should still be able to do all this *with* escape sequences
- too: `$self->method()' and `$self->{FIELDNAME}' and `{FOO=>BAR}'.
-
- Dont forget `$self->method()->{FIELDNAME} = {FOO=>BAR}'.
-
- And make sure that `0' works too!
-
- Now, if I use << or >> as my delimiters, then I have to use whitespace.
- So things like `<$self-'method()>> and `<$self-'{FIELDNAME}>> wont end
- up doing what you might expect since the first > will still terminate
- the first < seen.
-
- Lets make sure these work for empty ones too, like and `>>' (just to be
- obnoxious)
-
+ This is a test to see if I can do not only `$self' and `method()', but
+ also `$self->method()' and `$self->{FIELDNAME}' and `$Foo <=> $Bar'
+ without resorting to escape sequences. If I want to refer to the
+ right-shift operator I can do something like `$x >> 3' or even `$y >>
+ 5'.
+
+ Now for the grand finale of `$self->method()->{FIELDNAME} = {FOO=>BAR}'.
+ And I also want to make sure that newlines work like this
+ `$self->{FOOBAR} >> 3 and [$b => $a]->[$a <=> $b]'
+
+ Of course I should still be able to do all this *with* escape sequences
+ too: `$self->method()' and `$self->{FIELDNAME}' and `{FOO=>BAR}'.
+
+ Dont forget `$self->method()->{FIELDNAME} = {FOO=>BAR}'.
+
+ And make sure that `0' works too!
+
+ Now, if I use << or >> as my delimiters, then I have to use whitespace.
+ So things like `<$self-'method()>> and `<$self-'{FIELDNAME}>> wont end
+ up doing what you might expect since the first > will still terminate
+ the first < seen.
+
+ Lets make sure these work for empty ones too, like and `>>' (just to be
+ obnoxious)
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testcmp.pl b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testcmp.pl
index 17f0b0b4c2c..b8592fcc2a8 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testcmp.pl
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testcmp.pl
@@ -1,94 +1,94 @@
-package TestCompare;
-
-use vars qw(@ISA @EXPORT $MYPKG);
-#use strict;
-#use diagnostics;
-use Carp;
-use Exporter;
-use File::Basename;
-use File::Spec;
-use FileHandle;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(&testcmp);
-$MYPKG = eval { (caller)[0] };
-
-##--------------------------------------------------------------------------
-
-=head1 NAME
-
-testcmp -- compare two files line-by-line
-
-=head1 SYNOPSIS
-
- $is_diff = testcmp($file1, $file2);
-
-or
-
- $is_diff = testcmp({-cmplines => \&mycmp}, $file1, $file2);
-
-=head2 DESCRIPTION
-
-Compare two text files line-by-line and return 0 if they are the
-same, 1 if they differ. Each of $file1 and $file2 may be a filenames,
-or a filehandles (in which case it must already be open for reading).
-
-If the first argument is a hashref, then the B<-cmplines> key in the
-hash may have a subroutine reference as its corresponding value.
-The referenced user-defined subroutine should be a line-comparator
-function that takes two pre-chomped text-lines as its arguments
-(the first is from $file1 and the second is from $file2). It should
-return 0 if it considers the two lines equivalent, and non-zero
-otherwise.
-
-=cut
-
-##--------------------------------------------------------------------------
-
-sub testcmp( $ $ ; $) {
- my %opts = ref($_[0]) eq 'HASH' ? %{shift()} : ();
- my ($file1, $file2) = @_;
- my ($fh1, $fh2) = ($file1, $file2);
- unless (ref $fh1) {
- $fh1 = FileHandle->new($file1, "r") or die "Can't open $file1: $!";
- }
- unless (ref $fh2) {
- $fh2 = FileHandle->new($file2, "r") or die "Can't open $file2: $!";
- }
-
- my $cmplines = $opts{'-cmplines'} || undef;
- my ($f1text, $f2text) = ("", "");
- my ($line, $diffs) = (0, 0);
-
- while ( defined($f1text) and defined($f2text) ) {
- defined($f1text = <$fh1>) and chomp($f1text);
- defined($f2text = <$fh2>) and chomp($f2text);
- ++$line;
- last unless ( defined($f1text) and defined($f2text) );
- # kill any extra line endings
- $f1text =~ s/[\r\n]+$//s;
- $f2text =~ s/[\r\n]+$//s;
- $diffs = (ref $cmplines) ? &$cmplines($f1text, $f2text)
- : ($f1text ne $f2text);
- last if $diffs;
- }
- close($fh1) unless (ref $file1);
- close($fh2) unless (ref $file2);
-
- $diffs = 1 if (defined($f1text) or defined($f2text));
- if ( defined($f1text) and defined($f2text) ) {
- ## these two lines must be different
- warn "$file1 and $file2 differ at line $line\n";
- }
- elsif (defined($f1text) and (! defined($f1text))) {
- ## file1 must be shorter
- warn "$file1 is shorter than $file2\n";
- }
- elsif (defined $f2text) {
- ## file2 must be longer
- warn "$file1 is shorter than $file2\n";
- }
- return $diffs;
-}
-
-1;
+package TestCompare;
+
+use vars qw(@ISA @EXPORT $MYPKG);
+#use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+use File::Basename;
+use File::Spec;
+use FileHandle;
+
+@ISA = qw(Exporter);
+@EXPORT = qw(&testcmp);
+$MYPKG = eval { (caller)[0] };
+
+##--------------------------------------------------------------------------
+
+=head1 NAME
+
+testcmp -- compare two files line-by-line
+
+=head1 SYNOPSIS
+
+ $is_diff = testcmp($file1, $file2);
+
+or
+
+ $is_diff = testcmp({-cmplines => \&mycmp}, $file1, $file2);
+
+=head2 DESCRIPTION
+
+Compare two text files line-by-line and return 0 if they are the
+same, 1 if they differ. Each of $file1 and $file2 may be a filenames,
+or a filehandles (in which case it must already be open for reading).
+
+If the first argument is a hashref, then the B<-cmplines> key in the
+hash may have a subroutine reference as its corresponding value.
+The referenced user-defined subroutine should be a line-comparator
+function that takes two pre-chomped text-lines as its arguments
+(the first is from $file1 and the second is from $file2). It should
+return 0 if it considers the two lines equivalent, and non-zero
+otherwise.
+
+=cut
+
+##--------------------------------------------------------------------------
+
+sub testcmp( $ $ ; $) {
+ my %opts = ref($_[0]) eq 'HASH' ? %{shift()} : ();
+ my ($file1, $file2) = @_;
+ my ($fh1, $fh2) = ($file1, $file2);
+ unless (ref $fh1) {
+ $fh1 = FileHandle->new($file1, "r") or die "Can't open $file1: $!";
+ }
+ unless (ref $fh2) {
+ $fh2 = FileHandle->new($file2, "r") or die "Can't open $file2: $!";
+ }
+
+ my $cmplines = $opts{'-cmplines'} || undef;
+ my ($f1text, $f2text) = ("", "");
+ my ($line, $diffs) = (0, 0);
+
+ while ( defined($f1text) and defined($f2text) ) {
+ defined($f1text = <$fh1>) and chomp($f1text);
+ defined($f2text = <$fh2>) and chomp($f2text);
+ ++$line;
+ last unless ( defined($f1text) and defined($f2text) );
+ # kill any extra line endings
+ $f1text =~ s/[\r\n]+$//s;
+ $f2text =~ s/[\r\n]+$//s;
+ $diffs = (ref $cmplines) ? &$cmplines($f1text, $f2text)
+ : ($f1text ne $f2text);
+ last if $diffs;
+ }
+ close($fh1) unless (ref $file1);
+ close($fh2) unless (ref $file2);
+
+ $diffs = 1 if (defined($f1text) or defined($f2text));
+ if ( defined($f1text) and defined($f2text) ) {
+ ## these two lines must be different
+ warn "$file1 and $file2 differ at line $line\n";
+ }
+ elsif (defined($f1text) and (! defined($f1text))) {
+ ## file1 must be shorter
+ warn "$file1 is shorter than $file2\n";
+ }
+ elsif (defined $f2text) {
+ ## file2 must be longer
+ warn "$file1 is shorter than $file2\n";
+ }
+ return $diffs;
+}
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testp2pt.pl b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testp2pt.pl
index 308cd1ccd6b..5c17300b508 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testp2pt.pl
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testp2pt.pl
@@ -1,192 +1,192 @@
-package TestPodIncPlainText;
-
-BEGIN {
- use File::Basename;
- use File::Spec;
- use Cwd qw(abs_path);
- push @INC, '..';
- my $THISDIR = abs_path(dirname $0);
- unshift @INC, $THISDIR;
- require "testcmp.pl";
- import TestCompare;
- my $PARENTDIR = dirname $THISDIR;
- push @INC, map { File::Spec->catfile($_, 'lib') } ($PARENTDIR, $THISDIR);
-}
-
-#use strict;
-#use diagnostics;
-use Carp;
-use Exporter;
-#use File::Compare;
-#use Cwd qw(abs_path);
-
-use vars qw($MYPKG @EXPORT @ISA);
-$MYPKG = eval { (caller)[0] };
-@EXPORT = qw(&testpodplaintext);
-BEGIN {
- require Pod::PlainText;
- @ISA = qw( Pod::PlainText );
- require VMS::Filespec if $^O eq 'VMS';
-}
-
-## Hardcode settings for TERMCAP and COLUMNS so we can try to get
-## reproducible results between environments
-@ENV{qw(TERMCAP COLUMNS)} = ('co=76:do=^J', 76);
-
-sub catfile(@) { File::Spec->catfile(@_); }
-
-my $INSTDIR = abs_path(dirname $0);
-$INSTDIR = VMS::Filespec::unixpath($INSTDIR) if $^O eq 'VMS';
-$INSTDIR =~ s#/$## if $^O eq 'VMS';
-$INSTDIR =~ s#:$## if $^O eq 'MacOS';
-$INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 'pod');
-$INSTDIR =~ s#:$## if $^O eq 'MacOS';
-$INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 't');
-my @PODINCDIRS = ( catfile($INSTDIR, 'lib', 'Pod'),
- catfile($INSTDIR, 'scripts'),
- catfile($INSTDIR, 'pod'),
- catfile($INSTDIR, 't', 'pod')
- );
-
-# FIXME - we should make the core capable of finding utilities built in
-# locations in ext.
-push @PODINCDIRS, catfile((File::Spec->updir()) x 2, 'pod') if $ENV{PERL_CORE};
-
-## Find the path to the file to =include
-sub findinclude {
- my $self = shift;
- my $incname = shift;
-
- ## See if its already found w/out any "searching;
- return $incname if (-r $incname);
-
- ## Need to search for it. Look in the following directories ...
- ## 1. the directory containing this pod file
- my $thispoddir = dirname $self->input_file;
- ## 2. the parent directory of the above
- my $parentdir = dirname $thispoddir;
- my @podincdirs = ($thispoddir, $parentdir, @PODINCDIRS);
-
- for (@podincdirs) {
- my $incfile = catfile($_, $incname);
- return $incfile if (-r $incfile);
- }
- warn("*** Can't find =include file $incname in @podincdirs\n");
- return "";
-}
-
-sub command {
- my $self = shift;
- my ($cmd, $text, $line_num, $pod_para) = @_;
- $cmd = '' unless (defined $cmd);
- local $_ = $text || '';
- my $out_fh = $self->output_handle;
-
- ## Defer to the superclass for everything except '=include'
- return $self->SUPER::command(@_) unless ($cmd eq "include");
-
- ## We have an '=include' command
- my $incdebug = 1; ## debugging
- my @incargs = split;
- if (@incargs == 0) {
- warn("*** No filename given for '=include'\n");
- return;
- }
- my $incfile = $self->findinclude(shift @incargs) or return;
- my $incbase = basename $incfile;
- print $out_fh "###### begin =include $incbase #####\n" if ($incdebug);
- $self->parse_from_file( {-cutting => 1}, $incfile );
- print $out_fh "###### end =include $incbase #####\n" if ($incdebug);
-}
-
-sub begin_input {
- $_[0]->{_INFILE} = VMS::Filespec::unixify($_[0]->{_INFILE}) if $^O eq 'VMS';
-}
-
-sub podinc2plaintext( $ $ ) {
- my ($infile, $outfile) = @_;
- local $_;
- my $text_parser = $MYPKG->new;
- $text_parser->parse_from_file($infile, $outfile);
-}
-
-sub testpodinc2plaintext( @ ) {
- my %args = @_;
- my $infile = $args{'-In'} || croak "No input file given!";
- my $outfile = $args{'-Out'} || croak "No output file given!";
- my $cmpfile = $args{'-Cmp'} || croak "No compare-result file given!";
-
- my $different = '';
- my $testname = basename $cmpfile, '.t', '.xr';
-
- unless (-e $cmpfile) {
- my $msg = "*** Can't find comparison file $cmpfile for testing $infile";
- warn "$msg\n";
- return $msg;
- }
-
- print "# Running testpodinc2plaintext for '$testname'...\n";
- ## Compare the output against the expected result
- podinc2plaintext($infile, $outfile);
- if ( testcmp($outfile, $cmpfile) ) {
- $different = "$outfile is different from $cmpfile";
- }
- else {
- unlink($outfile);
- }
- return $different;
-}
-
-sub testpodplaintext( @ ) {
- my %opts = (ref $_[0] eq 'HASH') ? %{shift()} : ();
- my @testpods = @_;
- my ($testname, $testdir) = ("", "");
- my ($podfile, $cmpfile) = ("", "");
- my ($outfile, $errfile) = ("", "");
- my $passes = 0;
- my $failed = 0;
- local $_;
-
- print "1..", scalar @testpods, "\n" unless ($opts{'-xrgen'});
-
- for $podfile (@testpods) {
- ($testname, $_) = fileparse($podfile);
- $testdir ||= $_;
- $testname =~ s/\.t$//;
- $cmpfile = $testdir . $testname . '.xr';
- $outfile = $testdir . $testname . '.OUT';
-
- if ($opts{'-xrgen'}) {
- if ($opts{'-force'} or ! -e $cmpfile) {
- ## Create the comparison file
- print "# Creating expected result for \"$testname\"" .
- " pod2plaintext test ...\n";
- podinc2plaintext($podfile, $cmpfile);
- }
- else {
- print "# File $cmpfile already exists" .
- " (use '-force' to regenerate it).\n";
- }
- next;
- }
-
- my $failmsg = testpodinc2plaintext
- -In => $podfile,
- -Out => $outfile,
- -Cmp => $cmpfile;
- if ($failmsg) {
- ++$failed;
- print "#\tFAILED. ($failmsg)\n";
- print "not ok ", $failed+$passes, "\n";
- }
- else {
- ++$passes;
- unlink($outfile);
- print "#\tPASSED.\n";
- print "ok ", $failed+$passes, "\n";
- }
- }
- return $passes;
-}
-
-1;
+package TestPodIncPlainText;
+
+BEGIN {
+ use File::Basename;
+ use File::Spec;
+ use Cwd qw(abs_path);
+ push @INC, '..';
+ my $THISDIR = abs_path(dirname $0);
+ unshift @INC, $THISDIR;
+ require "testcmp.pl";
+ import TestCompare;
+ my $PARENTDIR = dirname $THISDIR;
+ push @INC, map { File::Spec->catfile($_, 'lib') } ($PARENTDIR, $THISDIR);
+}
+
+#use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+#use File::Compare;
+#use Cwd qw(abs_path);
+
+use vars qw($MYPKG @EXPORT @ISA);
+$MYPKG = eval { (caller)[0] };
+@EXPORT = qw(&testpodplaintext);
+BEGIN {
+ require Pod::PlainText;
+ @ISA = qw( Pod::PlainText );
+ require VMS::Filespec if $^O eq 'VMS';
+}
+
+## Hardcode settings for TERMCAP and COLUMNS so we can try to get
+## reproducible results between environments
+@ENV{qw(TERMCAP COLUMNS)} = ('co=76:do=^J', 76);
+
+sub catfile(@) { File::Spec->catfile(@_); }
+
+my $INSTDIR = abs_path(dirname $0);
+$INSTDIR = VMS::Filespec::unixpath($INSTDIR) if $^O eq 'VMS';
+$INSTDIR =~ s#/$## if $^O eq 'VMS';
+$INSTDIR =~ s#:$## if $^O eq 'MacOS';
+$INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 'pod');
+$INSTDIR =~ s#:$## if $^O eq 'MacOS';
+$INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 't');
+my @PODINCDIRS = ( catfile($INSTDIR, 'lib', 'Pod'),
+ catfile($INSTDIR, 'scripts'),
+ catfile($INSTDIR, 'pod'),
+ catfile($INSTDIR, 't', 'pod')
+ );
+
+# FIXME - we should make the core capable of finding utilities built in
+# locations in ext.
+push @PODINCDIRS, catfile((File::Spec->updir()) x 2, 'pod') if $ENV{PERL_CORE};
+
+## Find the path to the file to =include
+sub findinclude {
+ my $self = shift;
+ my $incname = shift;
+
+ ## See if its already found w/out any "searching;
+ return $incname if (-r $incname);
+
+ ## Need to search for it. Look in the following directories ...
+ ## 1. the directory containing this pod file
+ my $thispoddir = dirname $self->input_file;
+ ## 2. the parent directory of the above
+ my $parentdir = dirname $thispoddir;
+ my @podincdirs = ($thispoddir, $parentdir, @PODINCDIRS);
+
+ for (@podincdirs) {
+ my $incfile = catfile($_, $incname);
+ return $incfile if (-r $incfile);
+ }
+ warn("*** Can't find =include file $incname in @podincdirs\n");
+ return "";
+}
+
+sub command {
+ my $self = shift;
+ my ($cmd, $text, $line_num, $pod_para) = @_;
+ $cmd = '' unless (defined $cmd);
+ local $_ = $text || '';
+ my $out_fh = $self->output_handle;
+
+ ## Defer to the superclass for everything except '=include'
+ return $self->SUPER::command(@_) unless ($cmd eq "include");
+
+ ## We have an '=include' command
+ my $incdebug = 1; ## debugging
+ my @incargs = split;
+ if (@incargs == 0) {
+ warn("*** No filename given for '=include'\n");
+ return;
+ }
+ my $incfile = $self->findinclude(shift @incargs) or return;
+ my $incbase = basename $incfile;
+ print $out_fh "###### begin =include $incbase #####\n" if ($incdebug);
+ $self->parse_from_file( {-cutting => 1}, $incfile );
+ print $out_fh "###### end =include $incbase #####\n" if ($incdebug);
+}
+
+sub begin_input {
+ $_[0]->{_INFILE} = VMS::Filespec::unixify($_[0]->{_INFILE}) if $^O eq 'VMS';
+}
+
+sub podinc2plaintext( $ $ ) {
+ my ($infile, $outfile) = @_;
+ local $_;
+ my $text_parser = $MYPKG->new;
+ $text_parser->parse_from_file($infile, $outfile);
+}
+
+sub testpodinc2plaintext( @ ) {
+ my %args = @_;
+ my $infile = $args{'-In'} || croak "No input file given!";
+ my $outfile = $args{'-Out'} || croak "No output file given!";
+ my $cmpfile = $args{'-Cmp'} || croak "No compare-result file given!";
+
+ my $different = '';
+ my $testname = basename $cmpfile, '.t', '.xr';
+
+ unless (-e $cmpfile) {
+ my $msg = "*** Can't find comparison file $cmpfile for testing $infile";
+ warn "$msg\n";
+ return $msg;
+ }
+
+ print "# Running testpodinc2plaintext for '$testname'...\n";
+ ## Compare the output against the expected result
+ podinc2plaintext($infile, $outfile);
+ if ( testcmp($outfile, $cmpfile) ) {
+ $different = "$outfile is different from $cmpfile";
+ }
+ else {
+ unlink($outfile);
+ }
+ return $different;
+}
+
+sub testpodplaintext( @ ) {
+ my %opts = (ref $_[0] eq 'HASH') ? %{shift()} : ();
+ my @testpods = @_;
+ my ($testname, $testdir) = ("", "");
+ my ($podfile, $cmpfile) = ("", "");
+ my ($outfile, $errfile) = ("", "");
+ my $passes = 0;
+ my $failed = 0;
+ local $_;
+
+ print "1..", scalar @testpods, "\n" unless ($opts{'-xrgen'});
+
+ for $podfile (@testpods) {
+ ($testname, $_) = fileparse($podfile);
+ $testdir ||= $_;
+ $testname =~ s/\.t$//;
+ $cmpfile = $testdir . $testname . '.xr';
+ $outfile = $testdir . $testname . '.OUT';
+
+ if ($opts{'-xrgen'}) {
+ if ($opts{'-force'} or ! -e $cmpfile) {
+ ## Create the comparison file
+ print "# Creating expected result for \"$testname\"" .
+ " pod2plaintext test ...\n";
+ podinc2plaintext($podfile, $cmpfile);
+ }
+ else {
+ print "# File $cmpfile already exists" .
+ " (use '-force' to regenerate it).\n";
+ }
+ next;
+ }
+
+ my $failmsg = testpodinc2plaintext
+ -In => $podfile,
+ -Out => $outfile,
+ -Cmp => $cmpfile;
+ if ($failmsg) {
+ ++$failed;
+ print "#\tFAILED. ($failmsg)\n";
+ print "not ok ", $failed+$passes, "\n";
+ }
+ else {
+ ++$passes;
+ unlink($outfile);
+ print "#\tPASSED.\n";
+ print "ok ", $failed+$passes, "\n";
+ }
+ }
+ return $passes;
+}
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testpchk.pl b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testpchk.pl
index aeb0be333d3..0464a9a0fcf 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testpchk.pl
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testpchk.pl
@@ -1,130 +1,130 @@
-package TestPodChecker;
-
-BEGIN {
- use File::Basename;
- use File::Spec;
- push @INC, '..';
- my $THISDIR = dirname $0;
- unshift @INC, $THISDIR;
- require "testcmp.pl";
- import TestCompare;
- my $PARENTDIR = dirname $THISDIR;
- push @INC, map { File::Spec->catfile($_, 'lib') } ($PARENTDIR, $THISDIR);
- require VMS::Filespec if $^O eq 'VMS';
-}
-
-use Pod::Checker;
-use vars qw(@ISA @EXPORT $MYPKG);
-#use strict;
-#use diagnostics;
-use Carp;
-use Exporter;
-#use File::Compare;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(&testpodchecker);
-@EXPORT_OK = qw(&testpodcheck);
-$MYPKG = eval { (caller)[0] };
-
-sub stripname( $ ) {
- local $_ = shift;
- return /(\w[.\w]*)\s*$/ ? $1 : $_;
-}
-
-sub msgcmp( $ $ ) {
- ## filter out platform-dependent aspects of error messages
- my ($line1, $line2) = @_;
- for ($line1, $line2) {
- ## remove filenames from error messages to avoid any
- ## filepath naming differences between OS platforms
- s/(at line \S+ in file) .*\W(\w+\.[tT])\s*$/$1 \L$2\E/;
- s/.*\W(\w+\.[tT]) (has \d+ pod syntax error)/\L$1\E $2/;
- }
- return ($line1 ne $line2);
-}
-
-sub testpodcheck( @ ) {
- my %args = @_;
- my $infile = $args{'-In'} || croak "No input file given!";
- my $outfile = $args{'-Out'} || croak "No output file given!";
- my $cmpfile = $args{'-Cmp'} || croak "No compare-result file given!";
-
- my $different = '';
- my $testname = basename $infile, '.t', '.xr';
-
- unless (-e $cmpfile) {
- my $msg = "*** Can't find comparison file $cmpfile for testing $infile";
- warn "$msg\n";
- return $msg;
- }
-
- print "# Running podchecker for '$testname'...\n";
- ## Compare the output against the expected result
- if ($^O eq 'VMS') {
- for ($infile, $outfile, $cmpfile) {
- $_ = VMS::Filespec::unixify($_) unless ref;
- }
- }
- podchecker($infile, $outfile);
- if ( testcmp({'-cmplines' => \&msgcmp}, $outfile, $cmpfile) ) {
- $different = "$outfile is different from $cmpfile";
- }
- else {
- unlink($outfile);
- }
- return $different;
-}
-
-sub testpodchecker( @ ) {
- my %opts = (ref $_[0] eq 'HASH') ? %{shift()} : ();
- my @testpods = @_;
- my ($testname, $testdir) = ("", "");
- my ($podfile, $cmpfile) = ("", "");
- my ($outfile, $errfile) = ("", "");
- my $passes = 0;
- my $failed = 0;
- local $_;
-
- print "1..", scalar @testpods, "\n" unless ($opts{'-xrgen'});
-
- for $podfile (@testpods) {
- ($testname, $_) = fileparse($podfile);
- $testdir ||= $_;
- $testname =~ s/\.t$//;
- $cmpfile = $testdir . $testname . '.xr';
- $outfile = $testdir . $testname . '.OUT';
-
- if ($opts{'-xrgen'}) {
- if ($opts{'-force'} or ! -e $cmpfile) {
- ## Create the comparison file
- print "# Creating expected result for \"$testname\"" .
- " podchecker test ...\n";
- podchecker($podfile, $cmpfile);
- }
- else {
- print "# File $cmpfile already exists" .
- " (use '-force' to regenerate it).\n";
- }
- next;
- }
-
- my $failmsg = testpodcheck
- -In => $podfile,
- -Out => $outfile,
- -Cmp => $cmpfile;
- if ($failmsg) {
- ++$failed;
- print "#\tFAILED. ($failmsg)\n";
- print "not ok ", $failed+$passes, "\n";
- }
- else {
- ++$passes;
- unlink($outfile);
- print "#\tPASSED.\n";
- print "ok ", $failed+$passes, "\n";
- }
- }
- return $passes;
-}
-
-1;
+package TestPodChecker;
+
+BEGIN {
+ use File::Basename;
+ use File::Spec;
+ push @INC, '..';
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testcmp.pl";
+ import TestCompare;
+ my $PARENTDIR = dirname $THISDIR;
+ push @INC, map { File::Spec->catfile($_, 'lib') } ($PARENTDIR, $THISDIR);
+ require VMS::Filespec if $^O eq 'VMS';
+}
+
+use Pod::Checker;
+use vars qw(@ISA @EXPORT $MYPKG);
+#use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+#use File::Compare;
+
+@ISA = qw(Exporter);
+@EXPORT = qw(&testpodchecker);
+@EXPORT_OK = qw(&testpodcheck);
+$MYPKG = eval { (caller)[0] };
+
+sub stripname( $ ) {
+ local $_ = shift;
+ return /(\w[.\w]*)\s*$/ ? $1 : $_;
+}
+
+sub msgcmp( $ $ ) {
+ ## filter out platform-dependent aspects of error messages
+ my ($line1, $line2) = @_;
+ for ($line1, $line2) {
+ ## remove filenames from error messages to avoid any
+ ## filepath naming differences between OS platforms
+ s/(at line \S+ in file) .*\W(\w+\.[tT])\s*$/$1 \L$2\E/;
+ s/.*\W(\w+\.[tT]) (has \d+ pod syntax error)/\L$1\E $2/;
+ }
+ return ($line1 ne $line2);
+}
+
+sub testpodcheck( @ ) {
+ my %args = @_;
+ my $infile = $args{'-In'} || croak "No input file given!";
+ my $outfile = $args{'-Out'} || croak "No output file given!";
+ my $cmpfile = $args{'-Cmp'} || croak "No compare-result file given!";
+
+ my $different = '';
+ my $testname = basename $infile, '.t', '.xr';
+
+ unless (-e $cmpfile) {
+ my $msg = "*** Can't find comparison file $cmpfile for testing $infile";
+ warn "$msg\n";
+ return $msg;
+ }
+
+ print "# Running podchecker for '$testname'...\n";
+ ## Compare the output against the expected result
+ if ($^O eq 'VMS') {
+ for ($infile, $outfile, $cmpfile) {
+ $_ = VMS::Filespec::unixify($_) unless ref;
+ }
+ }
+ podchecker($infile, $outfile);
+ if ( testcmp({'-cmplines' => \&msgcmp}, $outfile, $cmpfile) ) {
+ $different = "$outfile is different from $cmpfile";
+ }
+ else {
+ unlink($outfile);
+ }
+ return $different;
+}
+
+sub testpodchecker( @ ) {
+ my %opts = (ref $_[0] eq 'HASH') ? %{shift()} : ();
+ my @testpods = @_;
+ my ($testname, $testdir) = ("", "");
+ my ($podfile, $cmpfile) = ("", "");
+ my ($outfile, $errfile) = ("", "");
+ my $passes = 0;
+ my $failed = 0;
+ local $_;
+
+ print "1..", scalar @testpods, "\n" unless ($opts{'-xrgen'});
+
+ for $podfile (@testpods) {
+ ($testname, $_) = fileparse($podfile);
+ $testdir ||= $_;
+ $testname =~ s/\.t$//;
+ $cmpfile = $testdir . $testname . '.xr';
+ $outfile = $testdir . $testname . '.OUT';
+
+ if ($opts{'-xrgen'}) {
+ if ($opts{'-force'} or ! -e $cmpfile) {
+ ## Create the comparison file
+ print "# Creating expected result for \"$testname\"" .
+ " podchecker test ...\n";
+ podchecker($podfile, $cmpfile);
+ }
+ else {
+ print "# File $cmpfile already exists" .
+ " (use '-force' to regenerate it).\n";
+ }
+ next;
+ }
+
+ my $failmsg = testpodcheck
+ -In => $podfile,
+ -Out => $outfile,
+ -Cmp => $cmpfile;
+ if ($failmsg) {
+ ++$failed;
+ print "#\tFAILED. ($failmsg)\n";
+ print "not ok ", $failed+$passes, "\n";
+ }
+ else {
+ ++$passes;
+ unlink($outfile);
+ print "#\tPASSED.\n";
+ print "ok ", $failed+$passes, "\n";
+ }
+ }
+ return $passes;
+}
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testpods/lib/Pod/Stuff.pm b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testpods/lib/Pod/Stuff.pm
index d5c11203037..00a719c6560 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testpods/lib/Pod/Stuff.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/testpods/lib/Pod/Stuff.pm
@@ -1,20 +1,20 @@
-=head1 NAME
-
-Pod::Stuff - dummy testing pod
-
-=head1 DESCRIPTION
-
-This isn't really anything, its just some dummy pod code.
-And stuff.
-
-Lots of stuff.
-
-=head2 STUFF
-
-For all your stuff [tm]
-
-Stuffit
-
-Mmmm, stuffed pizza bread.
-
-=cut
+=head1 NAME
+
+Pod::Stuff - dummy testing pod
+
+=head1 DESCRIPTION
+
+This isn't really anything, its just some dummy pod code.
+And stuff.
+
+Lots of stuff.
+
+=head2 STUFF
+
+For all your stuff [tm]
+
+Stuffit
+
+Mmmm, stuffed pizza bread.
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/twice.t b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/twice.t
index 098bc3c628d..ffb957dadda 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/twice.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/t/pod/twice.t
@@ -1,36 +1,36 @@
-use strict;
-use Test;
-use File::Spec;
-
-BEGIN { plan tests => 1 }
-
-use Pod::Parser;
-use Carp;
-$SIG{__DIE__} = \&Carp::confess;
-
-eval {require IO::String;};
-skip($@ ? 'no IO::String' : '', sub {
- {
- my $pod_string = 'some I<silly> text';
- my $handle = IO::String->new( \$pod_string );
- my $parser = Pod::Parser->new();
- $parser->parse_from_file( $0, $handle );
- }
- # free the reference
- {
- my $parser = Pod::Parser->new();
- $parser->parse_from_file( $0, File::Spec->devnull );
- }
- 1;
-});
-
-exit 0;
-
-__END__
-
-=head1 EXAMPLE
-
-This test makes sure the parse_from_file is re-entrant
-
-=cut
-
+use strict;
+use Test;
+use File::Spec;
+
+BEGIN { plan tests => 1 }
+
+use Pod::Parser;
+use Carp;
+$SIG{__DIE__} = \&Carp::confess;
+
+eval {require IO::String;};
+skip($@ ? 'no IO::String' : '', sub {
+ {
+ my $pod_string = 'some I<silly> text';
+ my $handle = IO::String->new( \$pod_string );
+ my $parser = Pod::Parser->new();
+ $parser->parse_from_file( $0, $handle );
+ }
+ # free the reference
+ {
+ my $parser = Pod::Parser->new();
+ $parser->parse_from_file( $0, File::Spec->devnull );
+ }
+ 1;
+});
+
+exit 0;
+
+__END__
+
+=head1 EXAMPLE
+
+This test makes sure the parse_from_file is re-entrant
+
+=cut
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm
index a0dd24addc2..8c841e833e8 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm
@@ -12,7 +12,7 @@ use File::Spec::Functions qw(catfile catdir splitdir);
use vars qw($VERSION @Pagers $Bindir $Pod2man
$Temp_Files_Created $Temp_File_Lifetime
);
-$VERSION = '3.17';
+$VERSION = '3.19';
#..........................................................................
@@ -798,7 +798,7 @@ sub options_sanity {
if( $self->opt_f or $self->opt_q ) {
$self->usage("Only one of -f -or -q") if $self->opt_f and $self->opt_q;
$self->warn(
- "Perldoc is only really meant for reading one word at a time.\n",
+ "Perldoc is meant for reading one file at a time.\n",
"So these parameters are being ignored: ",
join(' ', @{$self->{'args'}}),
"\n" )
@@ -1423,7 +1423,7 @@ sub minus_f_nocase { # i.e., do like -f, but without regard to case
if(!$self->opt_i
or $self->is_vms or $self->is_mswin32
- or $self->Is_dos or $self->is_os2
+ or $self->is_dos or $self->is_os2
) {
# On a case-forgiving file system, or if case is important,
# that is it, all we can do.
@@ -1514,7 +1514,7 @@ sub pagers_guessing {
}
}
- unshift @pagers, $ENV{PERLDOC_PAGER} if $ENV{PERLDOC_PAGER};
+ unshift @pagers, "$ENV{PERLDOC_PAGER} <" if $ENV{PERLDOC_PAGER};
return;
}
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm
index aa8d84493ff..5bf8a936a78 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm
@@ -3,7 +3,7 @@ use strict;
use warnings;
use vars qw($VERSION);
-$VERSION = '3.17';
+$VERSION = '3.19';
use Carp qw(croak carp);
use Config qw(%Config);
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm
index c77d5460483..0355f8f3ca2 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm
@@ -2,7 +2,7 @@ package Pod::Perldoc::GetOptsOO;
use strict;
use vars qw($VERSION);
-$VERSION = '3.17';
+$VERSION = '3.19';
BEGIN { # Make a DEBUG constant ASAP
*DEBUG = defined( &Pod::Perldoc::DEBUG )
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToANSI.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToANSI.pm
index 7be62e23589..c6534bd4cf6 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToANSI.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToANSI.pm
@@ -4,7 +4,7 @@ use warnings;
use parent qw(Pod::Perldoc::BaseTo);
use vars qw($VERSION);
-$VERSION = '3.17';
+$VERSION = '3.19';
sub is_pageable { 1 }
sub write_with_binmode { 0 }
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm
index 32c309bd445..6f8d12c1120 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm
@@ -4,7 +4,7 @@ use warnings;
use vars qw(@ISA);
use vars qw($VERSION);
-$VERSION = '3.17';
+$VERSION = '3.19';
# Pick our superclass...
#
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm
index 2e92f2a134e..4f720e7f0e6 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm
@@ -4,7 +4,7 @@ use warnings;
use parent qw(Pod::Perldoc::BaseTo);
use vars qw($VERSION);
-$VERSION = '3.17';
+$VERSION = '3.19';
# This is unlike ToMan.pm in that it emits the raw nroff source!
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm
index 6c15c02a781..7083ae67b36 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm
@@ -4,7 +4,7 @@ use warnings;
use parent qw(Pod::Perldoc::BaseTo);
use vars qw($VERSION);
-$VERSION = '3.17';
+$VERSION = '3.19';
sub is_pageable { 1 }
sub write_with_binmode { 0 }
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm
index a7d4739a6f0..6e190f73a27 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm
@@ -4,7 +4,7 @@ use warnings;
use parent qw( Pod::Simple::RTF );
use vars qw($VERSION);
-$VERSION = '3.17';
+$VERSION = '3.19';
sub is_pageable { 0 }
sub write_with_binmode { 0 }
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTerm.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTerm.pm
index dddc4c8fce7..f8d9349d10a 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTerm.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTerm.pm
@@ -3,7 +3,7 @@ use strict;
use warnings;
use vars qw($VERSION);
-$VERSION = '3.17';
+$VERSION = '3.19';
use parent qw(Pod::Perldoc::BaseTo);
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm
index 0e4e2dacf4d..530bdee7ad0 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm
@@ -3,7 +3,7 @@ use strict;
use warnings;
use vars qw($VERSION);
-$VERSION = '3.17';
+$VERSION = '3.19';
use parent qw(Pod::Perldoc::BaseTo);
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm
index fb8da15c245..deed6b3ff15 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm
@@ -3,7 +3,7 @@ use strict;
use warnings;
use vars qw($VERSION);
-$VERSION = '3.17';
+$VERSION = '3.19';
use parent qw(Pod::Perldoc::BaseTo);
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm
index 96f35c4f4b7..f85f01eb7bd 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm
@@ -6,7 +6,7 @@ use vars qw($VERSION);
use parent qw( Pod::Simple::XMLOutStream );
use vars qw($VERSION);
-$VERSION = '3.17';
+$VERSION = '3.19';
sub is_pageable { 0 }
sub write_with_binmode { 0 }
diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/perldoc.pod b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/perldoc.pod
index 42a9eab4cdb..55febc4bf94 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/perldoc.pod
+++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/perldoc.pod
@@ -5,28 +5,28 @@ perldoc - Look up Perl documentation in Pod format.
=head1 SYNOPSIS
- B<perldoc> [B<-h>] [B<-D>] [B<-t>] [B<-u>] [B<-m>] [B<-l>] [B<-F>]
- [B<-i>] [B<-V>] [B<-T>] [B<-r>]
- [B<-dI<destination_file>>]
- [B<-oI<formatname>>]
- [B<-MI<FormatterClassName>>]
- [B<-wI<formatteroption:value>>]
- [B<-n>I<nroff-replacement>]
- [B<-X>]
- [B<-L> I<language_code>]
+ perldoc [-h] [-D] [-t] [-u] [-m] [-l] [-F]
+ [-i] [-V] [-T] [-r]
+ [-d destination_file]
+ [-o formatname]
+ [-M FormatterClassName]
+ [-w formatteroption:value]
+ [-n nroff-replacement]
+ [-X]
+ [-L language_code]
PageName|ModuleName|ProgramName|URL
Examples:
- B<perldoc> B<-f> BuiltinFunction
+ perldoc -f BuiltinFunction
- B<perldoc> B<-L> it B<-f> BuiltinFunction
+ perldoc -L it -f BuiltinFunction
- B<perldoc> B<-q> FAQ Keyword
+ perldoc -q FAQ Keyword
- B<perldoc> B<-L> fr B<-q> FAQ Keyword
+ perldoc -L fr -q FAQ Keyword
- B<perldoc> B<-v> PerlVariable
+ perldoc -v PerlVariable
See below for more description of the switches.
@@ -116,7 +116,7 @@ Examples:
=item B<-T>
This specifies that the output is not to be sent to a pager, but is to
-be sent right to STDOUT.
+be sent directly to STDOUT.
=item B<-d> I<destination-filename>
@@ -219,15 +219,14 @@ drop privileges by setting the effective and real IDs to nobody's
or nouser's account, or -2 if unavailable. If it cannot relinquish
its privileges, it will not run.
-
=head1 ENVIRONMENT
Any switches in the C<PERLDOC> environment variable will be used before the
command line arguments.
-Useful values for C<PERLDOC> include C<-oman>, C<-otext>, C<-otk>, C<-ortf>,
+Useful values for C<PERLDOC> include C<-oterm>, C<-otext>, C<-ortf>,
C<-oxml>, and so on, depending on what modules you have on hand; or
-the formatter class may be specified exactly with C<-MPod::Perldoc::ToMan>
+the formatter class may be specified exactly with C<-MPod::Perldoc::ToTerm>
or the like.
C<perldoc> also searches directories
@@ -236,6 +235,12 @@ defined) and C<PATH> environment variables.
(The latter is so that embedded pods for executables, such as
C<perldoc> itself, are available.)
+In directories where either C<Makefile.PL> or C<Build.PL> exist, C<perldoc>
+will add C<.> and C<lib> first to its search path, and as long as you're not
+the superuser will add C<blib> too. This is really helpful if you're working
+inside of a build directory and want to read through the docs even if you
+have a version of a module previously installed.
+
C<perldoc> will use, in order of preference, the pager defined in
C<PERLDOC_PAGER>, C<MANPAGER>, or C<PAGER> before trying to find a pager
on its own. (C<MANPAGER> is not used if C<perldoc> was told to display
@@ -244,7 +249,7 @@ plain text or unformatted pod.)
One useful value for C<PERLDOC_PAGER> is C<less -+C -E>.
Having PERLDOCDEBUG set to a positive integer will make perldoc emit
-even more descriptive output than the C<-v> switch does; the higher the
+even more descriptive output than the C<-D> switch does; the higher the
number, the more it emits.
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/ChangeLog b/gnu/usr.bin/perl/cpan/Pod-Simple/ChangeLog
index 2f00dc7301a..73583f63e15 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/ChangeLog
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/ChangeLog
@@ -1,6 +1,162 @@
# ChangeLog for Pod::Simple dist
#---------------------------------------------------------------------------
+2013-05-04 David E. Wheeler <david@justatheory.org>
+ * Release 3.28
+
+ Removed use of 'done_testing' in t/white.t, which was added in
+ v3.27. Thanks to Paul Howarth for the catch.
+
+ Fixed inproperly calculated number of skipped tests in t/xhtml01.t
+ when HTML::Entities is not intalled.
+
+2013-05-03 David E. Wheeler <david@justatheory.org>
+ * Release 3.27
+
+ Added new warnings as defined by Pod::Checker, thanks to RJBS:
+ + "=over" without "=back"
+ + "L<>" starts or ends with whitespace
+ + raw "|" or "/" in "L<text|link>" text
+
+ Added ->keep_encoding_directive, which is false by default, to
+ prevent formatters from emitting a document's '=encoding'
+ directive in most cases. That they emitted the encoding was a bug
+ introduced in v3.26 (RT #84093). Now, only the DumpAsText and
+ DumpAsXML formats set it to true. Patch from Patrice Dumas.
+
+2013-02-27 David E. Wheeler <david@justatheory.org>
+ * Release 3.26
+
+ Fixed another test script to skip all tests when Encode is not
+ installed.
+
+ Added 'encoding()' and 'detected_encoding()' to return the current
+ encoding and the encoding actually to decode the input file. The
+ value from "=encoding" is also now kept in the output tree. Patch
+ from Patrice Dumas (RT #74390).
+
+2013-02-16 David E. Wheeler <david@justatheory.org>
+ * Release 3.25
+
+ Improved the warning when "=item" types mismatch within one
+ "=over"/"=back" block.
+
+2013-02-14 David E. Wheeler <david@justatheory.org>
+ * Release 3.24
+
+ Fixed corner case bug for unlikely scenario in which non-UTF-8
+ text could be parsed as UTF-8. Grant McLean.
+
+ XHTML IDs can no longer end with punctuation. Thanks to Smylers
+ for the patch.
+
+ Fixed test failure on Perl 5.6.2.
+
+ Changed the default installation location from "perl" to "site" on
+ 5.12 and higher, since as of that version of Perl, dual-life
+ modules no longer need to be installed in "perl" to replace
+ in-core versions. Patch from tzccinct.
+
+ Fixed hash order dependency test failures on Perl 5.17. Thanks to
+ Yves Orton for the patch.
+
+ Inlined the code that tries to guess a Pod file's encoding. This
+ reduces the time Pod::Simple takes to build the core Perl
+ documentation by 15-20%. Thanks to Dagfinn Ilmari Mannsåker for
+ the patch!
+
+ Added a warning when "=item" types mismatch within one
+ "=over"/"=back" block. Marc Green/Google Summer of Code, with
+ assist from RJBS.
+
+ Fixed regression introduced in 3.22 in which "C< >" tags were
+ incorrectly treated as verbatim text in table of contents items
+ emitted by Pod::Simple::XHTML. Thanks to Randy Stauner for the
+ report and to Thomas Sibley for the fix!
+
+ Loosened up the matching of "L< >" tags for man pages so that they
+ allow names with dots, underscores, and any other chararacters
+ other than "/", just so long as they end in '[(][-a-zA-Z0-9]+[)]'.
+ Thanks to Dave Rolsky and Kevin Ryde for the reports (RT #82975 &
+ RT #82972).
+
+ Fixed inverted mapping of "keyboard" to "kbd" in
+ Pod::Simple::HTML. Thanks to Robert Boisvert for the bug report
+ (RT #79201).
+
+ Added two new Tagmap entries to Pod::Simple::HTML: "preformat"
+ maps to "pre", and "teletype" maps to "tt". Suggested by Robert
+ Boisvert (RT #79201).
+
+ "X< >" tags are now ignored by the pull parser when it searches
+ for titles, as is any trailing whitespace. Thanks to Patrice Dumas
+ for the report (RT #74389).
+
+2012-08-14 David E. Wheeler <david@justatheory.org>
+ * Release 3.23
+
+ Eliminated nested elements in table of contents (index) items
+ output of Pod::Simple::XHTML. This was especially problematic for
+ headers that included links, as the TOC then got nested anchor
+ elements, which simply would not work. Thanks to Ben Bullock for
+ the report and test case (RT #77686).
+
+ Fixed semantically invalid nested XHTML generated by
+ Pod::Simple::XHTML since v3.21. Gisle Aas.
+
+ Improved support for nested "C< >" tags in Pod::Simple::XHTML.
+ Gisle Aas.
+
+ No longer tries to decode a string with the "utf8" flag set, as
+ the double-decoding only triggered an error. Grant McLean.
+
+ Added documentation note that the API expects encoded text
+ (octets). Grant McLean.
+
+ Added "parse_characters()" option to specify that strings to are
+ already decoded from octets into characters. Grant McLean.
+
+2012-05-27 David E. Wheeler <david@justatheory.org>
+ * Release 3.22
+
+ Fix but where Pod::Simple would whine about non-ASCII bytes in
+ code or comments. Now only does so for Pod (in the absence of an
+ "=encoding" tag. Broken in 3.21. Grant McLean.
+
+2012-05-23 David E. Wheeler <david@justatheory.org>
+ * Release 3.21
+
+ NOTE: COMPATABILITY CHANGE: The 'codes_in_verbatim' option in
+ Pod::Simple::XHTML is no longer enabled by default. This brings it
+ agreement with the other formatting classes, and eliminates
+ unexpected behavior in XHTML-formatted Pod. Users who depended on
+ this functionality can still get it by enabling
+ 'codes_in_verbatim' in their code.
+
+ Fixed some typos in the documentation. Thanks to Jonathan Yu via
+ the Debian packagers via Florian Ragwitz (RT #75532).
+
+ Now emit a warning the first time a non-ASCII byte is encountered
+ when no "=encoding" has been seen. Grant McLean.
+
+ When a non-ASCII byte is encounted before an "=encoding" line has
+ been seen, a heuristic (as described in perlpodspec) is applied to
+ select UTF-8 encoding if the non-ASCII bytes form a valid UTF-8
+ byte sequence, or Latin-1 otherwise. Grant McLean.
+
+ Added 'handle_code' method to Pod::Simple::XHTML. This allows
+ subclasses to override the handling of verbatim blocks, and makes
+ for a more cohesive interface, to boot. Gisle Aas.
+
+ Subsequent text segments are now joined together and passed as a
+ single unit to text handling code. This makes it easier for custom
+ handlers to process complete blocks of text in a single call to
+ 'handle_text', rather than in dribs and drabs. Gisle Aas.
+
+ Replaced naive text wrapping code in Pod::Simple::DumpAsXML with
+ Text::Wrap, which was already used for similar purposes elsewhere
+ in Pod::Simple. Gisle Aas.
+
2012-03-01 David E. Wheeler <david@justatheory.org>
* Release 3.20
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/README b/gnu/usr.bin/perl/cpan/Pod-Simple/README
index 4608038f26c..1ff257fd613 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/README
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/README
@@ -1,4 +1,4 @@
-=head1 Pod::Simple version 3.20
+=head1 Pod::Simple version 3.28
Pod::Simple is a Perl library for parsing text in the Pod ("plain old
documentation") markup language that is typically used for writing
@@ -24,7 +24,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple.pm
index ad7a19b8eff..fb5438f7f71 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple.pm
@@ -18,7 +18,7 @@ use vars qw(
);
@ISA = ('Pod::Simple::BlackBox');
-$VERSION = '3.20';
+$VERSION = '3.28';
@Known_formatting_codes = qw(I B C L E F S X Z);
%Known_formatting_codes = map(($_=>1), @Known_formatting_codes);
@@ -80,6 +80,7 @@ __PACKAGE__->_accessorize(
'bare_output', # For some subclasses: whether to prepend
# header-code and postpend footer-code
+ 'keep_encoding_directive', # whether to emit =encoding
'nix_X_codes', # whether to ignore X<...> codes
'merge_text', # whether to avoid breaking a single piece of
# text up into several events
@@ -87,6 +88,8 @@ __PACKAGE__->_accessorize(
'preserve_whitespace', # whether to try to keep whitespace as-is
'strip_verbatim_indent', # What indent to strip from verbatim
+ 'parse_characters', # Whether parser should expect chars rather than octets
+
'content_seen', # whether we've seen any real Pod content
'errors_seen', # TODO: document. whether we've seen any errors (fatal or not)
@@ -111,6 +114,35 @@ sub any_errata_seen { # good for using as an exit() value...
return shift->{'errors_seen'} || 0;
}
+# Returns the encoding only if it was recognized as being handled and set
+sub detected_encoding {
+ return shift->{'detected_encoding'};
+}
+
+sub encoding {
+ my $this = shift;
+ return $this->{'encoding'} unless @_; # GET.
+
+ $this->_handle_encoding_line("=encoding $_[0]");
+ if ($this->{'_processed_encoding'}) {
+ delete $this->{'_processed_encoding'};
+ if(! $this->{'encoding_command_statuses'} ) {
+ DEBUG > 2 and print " CRAZY ERROR: encoding wasn't really handled?!\n";
+ } elsif( $this->{'encoding_command_statuses'}[-1] ) {
+ $this->scream( "=encoding $_[0]",
+ sprintf "Couldn't do %s: %s",
+ $this->{'encoding_command_reqs' }[-1],
+ $this->{'encoding_command_statuses'}[-1],
+ );
+ } else {
+ DEBUG > 2 and print " (encoding successfully handled.)\n";
+ }
+ return $this->{'encoding'};
+ } else {
+ return undef;
+ }
+}
+
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# Pull in some functions that, for some reason, I expect to see here too:
BEGIN {
@@ -1033,6 +1065,12 @@ sub _treat_Ls { # Process our dear dear friends, the L<...> sequences
$treelet->[$i] = 'L<>'; # just make it a text node
next; # and move on
}
+
+ if( (! ref $ell->[2] && $ell->[2] =~ /\A\s/)
+ ||(! ref $ell->[-1] && $ell->[-1] =~ /\s\z/)
+ ) {
+ $self->whine( $start_line, "L<> starts or ends with whitespace" );
+ }
# Catch URLs:
@@ -1092,7 +1130,7 @@ sub _treat_Ls { # Process our dear dear friends, the L<...> sequences
# Catch some very simple and/or common cases
if(@{$ell} == 3 and ! ref $ell->[2]) {
my $it = $ell->[2];
- if($it =~ m/^[-a-zA-Z0-9]+\([-a-zA-Z0-9]+\)$/s) { # man sections
+ if($it =~ m{^[^/|]+[(][-a-zA-Z0-9]+[)]$}s) { # man sections
# Hopefully neither too broad nor too restrictive a RE
DEBUG > 1 and print "Catching \"$it\" as manpage link.\n";
$ell->[1]{'type'} = 'man';
@@ -1148,6 +1186,13 @@ sub _treat_Ls { # Process our dear dear friends, the L<...> sequences
DEBUG > 3 and
print " FOUND a '|' in it. Splitting into [$1] + [$2]\n";
+ if ($link_text[0] =~ m{[|/]}) {
+ $self->whine(
+ $start_line,
+ "alternative text '$link_text[0]' contains non-escaped | or /"
+ );
+ }
+
unshift @link_text, splice @ell_content, 0, $j;
# leaving only things at J and after
@ell_content = grep ref($_)||length($_), @ell_content ;
@@ -1251,7 +1296,7 @@ sub _treat_Ls { # Process our dear dear friends, the L<...> sequences
# And the E resolver will have to deal with all our treeletty things:
if(@ell_content == 1 and !ref($ell_content[0])
- and $ell_content[0] =~ m/^[-a-zA-Z0-9]+\([-a-zA-Z0-9]+\)$/s
+ and $ell_content[0] =~ m{^[^/]+[(][-a-zA-Z0-9]+[)]$}s
) {
$ell->[1]{'type'} = 'man';
DEBUG > 3 and print "Considering this ($ell_content[0]) a man link.\n";
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple.pod b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple.pod
index a8ad211d3b6..4edc08ed677 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple.pod
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple.pod
@@ -14,6 +14,8 @@ documentation") markup language that is typically used for writing
documentation for Perl and for Perl modules. The Pod format is explained
L<perlpod>; the most common formatter is called C<perldoc>.
+Be sure to read L</ENCODING> if your Pod contains non-ASCII characters.
+
Pod formatters can use Pod::Simple to parse Pod documents and render them into
plain text, HTML, or any number of other formats. Typically, such formatters
will be subclasses of Pod::Simple, and so they will inherit its methods, like
@@ -121,6 +123,14 @@ most likely to use.
=over
+=item C<< $parser->parse_characters( I<SOMEVALUE> ) >>
+
+The Pod parser normally expects to read octets and to convert those octets
+to characters based on the C<=encoding> declaration in the Pod source. Set
+this option to a true value to indicate that the Pod source is already a Perl
+character stream. This tells the parser to ignore any C<=encoding> command
+and to skip all the code paths involving decoding octets.
+
=item C<< $parser->no_whining( I<SOMEVALUE> ) >>
If you set this attribute to a true value, you will suppress the
@@ -279,6 +289,16 @@ I<Example:>
die "too many errors\n" if $parser->any_errata_seen();
+=item C<< $parser->detected_encoding() >>X<detected_encoding>
+
+Return the encoding corresponding to C<< =encoding >>, but only if the
+encoding was recognized and handled.
+
+=item C<< $parser->encoding() >>X<encoding>
+
+Return encoding of the document, even if the encoding is not correctly
+handled.
+
=item C<< $parser->parse_from_file( $source, $to ) >>X<parse_from_file>
Parses from C<$source> file to C<$to> file. Similar to L<<
@@ -322,6 +342,21 @@ Log an error unless C<< $parser->no_whining( TRUE ); >>.
=back
+=head1 ENCODING
+
+The Pod::Simple parser expects to read B<octets>. The parser will decode the
+octets into Perl's internal character string representation using the value of
+the C<=encoding> declaration in the POD source.
+
+If the POD source does not include an C<=encoding> declaration, the parser will
+attempt to guess the encoding (selecting one of UTF-8 or Latin-1) by examining
+the first non-ASCII bytes and applying the heuristic described in
+L<perlpodspec>.
+
+If you set the C<parse_characters> option to a true value the parser will
+expect characters rather than octets; will ignore any C<=encoding>; and will
+make no attempt to decode the input.
+
=head1 CAVEATS
This is just a beta release -- there are a good number of things still
@@ -348,7 +383,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm
index c17cfd0ad51..a1b570810d0 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm
@@ -23,7 +23,7 @@ use integer; # vroom!
use strict;
use Carp ();
use vars qw($VERSION );
-$VERSION = '3.20';
+$VERSION = '3.28';
#use constant DEBUG => 7;
BEGIN {
require Pod::Simple;
@@ -91,6 +91,7 @@ sub parse_lines { # Usage: $parser->parse_lines(@lines)
if( ($line = $source_line) =~ s/^\xEF\xBB\xBF//s ) {
DEBUG and print "UTF-8 BOM seen. Faking a '=encoding utf8'.\n";
$self->_handle_encoding_line( "=encoding utf8" );
+ delete $self->{'_processed_encoding'};
$line =~ tr/\n\r//d;
} elsif( $line =~ s/^\xFE\xFF//s ) {
@@ -123,6 +124,22 @@ sub parse_lines { # Usage: $parser->parse_lines(@lines)
}
}
+ # Try to guess encoding. Inlined for performance reasons.
+ if(!$self->{'parse_characters'} && !$self->{'encoding'}
+ && ($self->{'in_pod'} || $line =~ /^=/s)
+ && $line =~ /[^\x00-\x7f]/
+ ) {
+ my $encoding = $line =~ /^[\x00-\x7f]*[\xC0-\xFD][\x80-\xBF]/ ? 'UTF-8' : 'ISO8859-1';
+ $self->_handle_encoding_line( "=encoding $encoding" );
+ $self->{'_transcoder'} && $self->{'_transcoder'}->($line);
+
+ my ($word) = $line =~ /(\S*[^\x00-\x7f]\S*)/;
+
+ $self->whine(
+ $self->{'line_count'},
+ "Non-ASCII character seen before =encoding in '$word'. Assuming $encoding"
+ );
+ }
DEBUG > 5 and print "# Parsing line: [$line]\n";
@@ -176,6 +193,7 @@ sub parse_lines { # Usage: $parser->parse_lines(@lines)
# HERE WE CATCH =encoding EARLY!
if( $line =~ m/^=encoding\s+\S+\s*$/s ) {
+ next if $self->parse_characters; # Ignore this line
$line = $self->_handle_encoding_line( $line );
}
@@ -269,6 +287,8 @@ sub parse_lines { # Usage: $parser->parse_lines(@lines)
sub _handle_encoding_line {
my($self, $line) = @_;
+ return if $self->parse_characters;
+
# The point of this routine is to set $self->{'_transcoder'} as indicated.
return $line unless $line =~ m/^=encoding\s+(\S+)\s*$/s;
@@ -324,6 +344,7 @@ sub _handle_encoding_line {
$@ && die( $enc_error =
"Really unexpected error setting up encoding $e: $@\nAborting"
);
+ $self->{'detected_encoding'} = $e;
} else {
my @supported = Pod::Simple::Transcode::->all_encodings;
@@ -354,8 +375,13 @@ sub _handle_encoding_line {
$self->scream( $self->{'line_count'}, $enc_error );
}
push @{ $self->{'encoding_command_statuses'} }, $enc_error;
+ if (defined($self->{'_processed_encoding'})) {
+ # Should never happen
+ die "Nested processed encoding.";
+ }
+ $self->{'_processed_encoding'} = $orig;
- return '=encoding ALREADYDONE';
+ return $line;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -371,7 +397,11 @@ sub _handle_encoding_second_level {
DEBUG > 2 and print "Ogling encoding directive: =encoding $content\n";
- if($content eq 'ALREADYDONE') {
+ if (defined($self->{'_processed_encoding'})) {
+ #if($content ne $self->{'_processed_encoding'}) {
+ # Could it happen?
+ #}
+ delete $self->{'_processed_encoding'};
# It's already been handled. Check for errors.
if(! $self->{'encoding_command_statuses'} ) {
DEBUG > 2 and print " CRAZY ERROR: It wasn't really handled?!\n";
@@ -642,8 +672,10 @@ sub _ponder_paragraph_buffer {
if($item_type eq 'text') {
# Nothing special needs doing for 'text'
} elsif($item_type eq 'number' or $item_type eq 'bullet') {
- die "Unknown item type $item_type"
- unless $item_type eq 'number' or $item_type eq 'bullet';
+ $self->whine(
+ $para->[1]{'start_line'},
+ "Expected text after =item, not a $item_type"
+ );
# Undo our clobbering:
push @$para, $para->[1]{'~orig_content'};
delete $para->[1]{'number'};
@@ -772,8 +804,8 @@ sub _ponder_paragraph_buffer {
} elsif($para_type eq '=encoding') {
# Not actually acted on here, but we catch errors here.
$self->_handle_encoding_second_level($para);
-
- next; # and skip
+ next unless $self->keep_encoding_directive;
+ $para_type = 'Plain';
} elsif($para_type eq '~Verbatim') {
$para->[0] = 'Verbatim';
$para_type = '?Verbatim';
@@ -1250,8 +1282,10 @@ sub _ponder_item {
if($item_type eq 'text') {
# Nothing special needs doing for 'text'
} elsif($item_type eq 'number' or $item_type eq 'bullet') {
- die "Unknown item type $item_type"
- unless $item_type eq 'number' or $item_type eq 'bullet';
+ $self->whine(
+ $para->[1]{'start_line'},
+ "Expected text after =item, not a $item_type"
+ );
# Undo our clobbering:
push @$para, $para->[1]{'~orig_content'};
delete $para->[1]{'number'};
@@ -1459,10 +1493,12 @@ sub _traverse_treelet_bit { # for use only by the routine above
my $scratch;
$self->_handle_element_start(($scratch=$name), shift @_);
- foreach my $x (@_) {
- if(ref($x)) {
+ while (@_) {
+ my $x = shift;
+ if (ref($x)) {
&_traverse_treelet_bit($self, @$x);
} else {
+ $x .= shift while @_ && !ref($_[0]);
$self->_handle_text($x);
}
}
@@ -1483,6 +1519,11 @@ sub _closers_for_all_curr_open {
if($copy[0] eq '=for') {
$copy[0] = '=end';
} elsif($copy[0] eq '=over') {
+ $self->whine(
+ $still_open->[1]{start_line} ,
+ "=over without closing =back"
+ );
+
$copy[0] = '=back';
} else {
die "I don't know how to auto-close an open $copy[0] region";
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm
index c97267a86ba..92e1bee238a 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm
@@ -9,7 +9,7 @@ use Carp ();
use Pod::Simple::Methody ();
use Pod::Simple ();
use vars qw( @ISA $VERSION );
-$VERSION = '3.20';
+$VERSION = '3.28';
@ISA = ('Pod::Simple::Methody');
BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG)
? \&Pod::Simple::DEBUG
@@ -159,7 +159,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm
index 57733028427..b170bb780ab 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm
@@ -3,7 +3,7 @@ require 5;
package Pod::Simple::Debug;
use strict;
use vars qw($VERSION );
-$VERSION = '3.20';
+$VERSION = '3.28';
sub import {
my($value,$variable);
@@ -141,7 +141,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm
index 5e2d7ebf5ff..019dfd57fbd 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm
@@ -1,7 +1,7 @@
require 5;
package Pod::Simple::DumpAsText;
-$VERSION = '3.20';
+$VERSION = '3.28';
use Pod::Simple ();
BEGIN {@ISA = ('Pod::Simple')}
@@ -16,6 +16,7 @@ sub new {
my $new = $self->SUPER::new(@_);
$new->{'output_fh'} ||= *STDOUT{IO};
$new->accept_codes('VerbatimFormatted');
+ $new->keep_encoding_directive(1);
return $new;
}
@@ -118,7 +119,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm
index e43422bbd7c..ac925c08eff 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm
@@ -1,13 +1,14 @@
require 5;
package Pod::Simple::DumpAsXML;
-$VERSION = '3.20';
+$VERSION = '3.28';
use Pod::Simple ();
BEGIN {@ISA = ('Pod::Simple')}
use strict;
use Carp ();
+use Text::Wrap qw(wrap);
BEGIN { *DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG }
@@ -16,6 +17,7 @@ sub new {
my $new = $self->SUPER::new(@_);
$new->{'output_fh'} ||= *STDOUT{IO};
$new->accept_codes('VerbatimFormatted');
+ $new->keep_encoding_directive(1);
return $new;
}
@@ -49,15 +51,8 @@ sub _handle_text {
my $indent = ' ' x $_[0]{'indent'};
my $text = $_[1];
_xml_escape($text);
- $text =~ # A not-totally-brilliant wrapping algorithm:
- s/(
- [^\n]{55} # Snare some characters from a line
- [^\n\ ]{0,50} # and finish any current word
- )
- \x20{1,10}(?!\n) # capture some spaces not at line-end
- /$1\n$indent/gx # => line-break here
- ;
-
+ local $Text::Wrap::huge = 'overflow';
+ $text = wrap('', $indent, $text);
print {$_[0]{'output_fh'}} $indent, $text, "\n";
}
return;
@@ -133,7 +128,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm
index 12fad403589..8a2f81569c1 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm
@@ -10,7 +10,7 @@ use vars qw(
$Doctype_decl $Content_decl
);
@ISA = ('Pod::Simple::PullParser');
-$VERSION = '3.20';
+$VERSION = '3.28';
BEGIN {
if(defined &DEBUG) { } # no-op
@@ -134,7 +134,7 @@ my @_to_accept;
qw[
sample=samp
definition=dfn
- kbd=keyboard
+ keyboard=kbd
variable=var
citation=cite
abbreviation=abbr
@@ -145,6 +145,8 @@ my @_to_accept;
small=small
underline=u
strikethrough=s
+ preformat=pre
+ teletype=tt
] # no point in providing a way to get <q>...</q>, I think
),
@@ -1089,7 +1091,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm
index 52e77bcc1b8..e41b11e2c50 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm
@@ -5,7 +5,7 @@ use strict;
use vars qw( $VERSION $HTML_RENDER_CLASS $HTML_EXTENSION
$CSS $JAVASCRIPT $SLEEPY $SEARCH_CLASS @ISA
);
-$VERSION = '3.20';
+$VERSION = '3.28';
@ISA = (); # Yup, we're NOT a subclass of Pod::Simple::HTML!
# TODO: nocontents stylesheets. Strike some of the color variations?
@@ -1093,7 +1093,7 @@ Example:
% mkdir ../seekrut
% chmod og-rx ../seekrut
- % perl -MPod::Simple::HTMLBatch -e Pod::Simple::HTMLBatch::go . ../htmlversion
+ % perl -MPod::Simple::HTMLBatch -e Pod::Simple::HTMLBatch::go . ../seekrut
(to convert the pod under the current dir into HTML
files under the directory ./seekrut)
@@ -1333,7 +1333,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm
index 5aa5bc19897..be1f5345d08 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm
@@ -3,12 +3,12 @@ require 5;
package Pod::Simple::LinkSection;
# Based somewhat dimly on Array::Autojoin
use vars qw($VERSION );
-$VERSION = '3.20';
+$VERSION = '3.28';
use strict;
use Pod::Simple::BlackBox;
use vars qw($VERSION );
-$VERSION = '3.20';
+$VERSION = '3.28';
use overload( # So it'll stringify nice
'""' => \&Pod::Simple::BlackBox::stringify_lol,
@@ -137,7 +137,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm
index 4113daf2351..38acaa20d0b 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm
@@ -4,7 +4,7 @@ package Pod::Simple::Methody;
use strict;
use Pod::Simple ();
use vars qw(@ISA $VERSION);
-$VERSION = '3.20';
+$VERSION = '3.28';
@ISA = ('Pod::Simple');
# Yes, we could use named variables, but I want this to be impose
@@ -115,7 +115,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm
index e85084a1c26..f9cd6816722 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm
@@ -1,7 +1,7 @@
require 5;
package Pod::Simple::Progress;
-$VERSION = '3.20';
+$VERSION = '3.28';
use strict;
# Objects of this class are used for noting progress of an
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm
index c9726fd564a..5c13724dc11 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm
@@ -1,7 +1,7 @@
require 5;
package Pod::Simple::PullParser;
-$VERSION = '3.20';
+$VERSION = '3.28';
use Pod::Simple ();
BEGIN {@ISA = ('Pod::Simple')}
@@ -347,6 +347,7 @@ sub _get_titled_section {
my $head1_text_content;
my $para_text_content;
+ my $skipX;
while(
++$token_count <= ($max_token || 1_000_000)
@@ -364,8 +365,14 @@ sub _get_titled_section {
elsif($state == 1) { # accumulating text until end of head1
if( $token->is_text ) {
- DEBUG and print " Adding \"", $token->text, "\" to head1-content.\n";
- $head1_text_content .= $token->text;
+ unless ($skipX) {
+ DEBUG and print " Adding \"", $token->text, "\" to head1-content.\n";
+ $head1_text_content .= $token->text;
+ }
+ } elsif( $token->is_tagname('X') ) {
+ # We're going to want to ignore X<> stuff.
+ $skipX = $token->is_start;
+ DEBUG and print +($skipX ? 'Start' : 'End'), 'ing ignoring of X<> tag';
} elsif( $token->is_end and $token->tagname eq 'head1' ) {
DEBUG and print " Found end of head1. Considering content...\n";
$head1_text_content = uc $head1_text_content if $nocase;
@@ -392,9 +399,9 @@ sub _get_titled_section {
? (length($head1_text_content) <= $max_content_length) # sanity
: 1)
) {
- DEBUG and print " It looks titular: \"$head1_text_content\".\n",
- "\n Using that.\n";
- $title = $head1_text_content;
+ # Looks good; trim it
+ ($title = $head1_text_content) =~ s/\s+$//;
+ DEBUG and print " It looks titular: \"$title\".\n\n Using that.\n";
last;
} else {
--$state;
@@ -736,7 +743,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm
index a45aba18bae..5fa402318eb 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
use strict;
use vars qw(@ISA $VERSION);
@ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.20';
+$VERSION = '3.28';
sub new { # Class->new(tagname);
my $class = shift;
@@ -83,7 +83,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm
index e9fbaa2b5ec..3edb0ad5695 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
use strict;
use vars qw(@ISA $VERSION);
@ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.20';
+$VERSION = '3.28';
sub new { # Class->new(tagname, optional_attrhash);
my $class = shift;
@@ -124,7 +124,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm
index 34985fdfb03..a75fd7a706e 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
use strict;
use vars qw(@ISA $VERSION);
@ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.20';
+$VERSION = '3.28';
sub new { # Class->new(text);
my $class = shift;
@@ -91,7 +91,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm
index b323ece2a32..bbae51ba69e 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm
@@ -3,7 +3,7 @@ require 5;
package Pod::Simple::PullParserToken;
# Base class for tokens gotten from Pod::Simple::PullParser's $parser->get_token
@ISA = ();
-$VERSION = '3.20';
+$VERSION = '3.28';
use strict;
sub new { # Class->new('type', stuff...); ## Overridden in derived classes anyway
@@ -126,7 +126,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm
index 0d184e3a66b..067e6b9dd35 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm
@@ -8,7 +8,7 @@ package Pod::Simple::RTF;
use strict;
use vars qw($VERSION @ISA %Escape $WRAP %Tagmap);
-$VERSION = '3.20';
+$VERSION = '3.28';
use Pod::Simple::PullParser ();
BEGIN {@ISA = ('Pod::Simple::PullParser')}
@@ -662,7 +662,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm
index 3671af121f0..0b42a22b273 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm
@@ -6,7 +6,7 @@ use strict;
use Carp ();
use Pod::Simple ();
use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS);
-$VERSION = '3.20';
+$VERSION = '3.28';
BEGIN {
@ISA = ('Pod::Simple');
*DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG;
@@ -143,7 +143,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod
index 792d1be5a24..7a7976bdc47 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod
@@ -12,22 +12,22 @@ Pod::Simple::Subclassing -- write a formatter as a Pod::Simple subclass
use strict;
sub _handle_element_start {
- my($parser, $element_name, $attr_hash_r) = @_;
- ...
+ my($parser, $element_name, $attr_hash_r) = @_;
+ ...
}
sub _handle_element_end {
- my($parser, $element_name, $attr_hash_r) = @_;
- # NOTE: $attr_hash_r is only present when $element_name is "over" or "begin"
- # The remaining code excerpts will mostly ignore this $attr_hash_r, as it is
- # mostly useless. It is documented where "over-*" and "begin" events are
- # documented.
- ...
+ my($parser, $element_name, $attr_hash_r) = @_;
+ # NOTE: $attr_hash_r is only present when $element_name is "over" or "begin"
+ # The remaining code excerpts will mostly ignore this $attr_hash_r, as it is
+ # mostly useless. It is documented where "over-*" and "begin" events are
+ # documented.
+ ...
}
sub _handle_text {
- my($parser, $text) = @_;
- ...
+ my($parser, $text) = @_;
+ ...
}
1;
@@ -105,13 +105,13 @@ TODO describe
Parsing a document produces this event structure:
<Document start_line="543">
- ...all events...
+ ...all events...
</Document>
The value of the I<start_line> attribute will be the line number of the first
Pod directive in the document.
-If there is no Pod in the given document, then the
+If there is no Pod in the given document, then the
event structure will be this:
<Document contentless="1" start_line="543">
@@ -126,9 +126,9 @@ last line in the file.
Parsing a plain (non-verbatim, non-directive, non-data) paragraph in
a Pod document produces this event structure:
- <Para start_line="543">
- ...all events in this paragraph...
- </Para>
+ <Para start_line="543">
+ ...all events in this paragraph...
+ </Para>
The value of the I<start_line> attribute will be the line number of the start
of the paragraph.
@@ -140,14 +140,14 @@ For example, parsing this paragraph of Pod:
produces this event structure:
- <Para start_line="129">
- The value of the
- <I>
- start_line
- </I>
- attribute will be the line number of the first Pod directive
- in the document.
- </Para>
+ <Para start_line="129">
+ The value of the
+ <I>
+ start_line
+ </I>
+ attribute will be the line number of the first Pod directive
+ in the document.
+ </Para>
=item events with an element_name of B, C, F, or I.
@@ -157,9 +157,9 @@ S<BE<lt>E<lt> ... E<gt>E<gt>>,
or S<BE<lt>E<lt>E<lt>E<lt> ... E<gt>E<gt>E<gt>E<gt>>, etc.)
produces this event structure:
- <B>
- ...stuff...
- </B>
+ <B>
+ ...stuff...
+ </B>
Currently, there are no attributes conveyed.
@@ -175,9 +175,9 @@ any attributes.
Normally, parsing an SE<lt>...E<gt> sequence produces this event
structure, just as if it were a B/C/F/I code:
- <S>
- ...stuff...
- </S>
+ <S>
+ ...stuff...
+ </S>
However, Pod::Simple (and presumably all derived parsers) offers the
C<nbsp_for_S> option which, if enabled, will suppress all S events, and
@@ -191,9 +191,9 @@ means non-breaking space.
Normally, parsing an XE<lt>...E<gt> sequence produces this event
structure, just as if it were a B/C/F/I code:
- <X>
- ...stuff...
- </X>
+ <X>
+ ...stuff...
+ </X>
However, Pod::Simple (and presumably all derived parsers) offers the
C<nix_X_codes> option which, if enabled, will suppress all X events
@@ -219,7 +219,7 @@ When a LE<lt>I<some_url>E<gt> code is parsed, it produces this event
structure:
<L content-implicit="yes" raw="that_url" to="that_url" type="url">
- that_url
+ that_url
</L>
The C<type="url"> attribute is always specified for this type of
@@ -232,14 +232,14 @@ For example, this Pod source:
produces this event structure:
<L content-implicit="yes" raw="http://www.perl.com/CPAN/authors/" to="http://www.perl.com/CPAN/authors/" type="url">
- http://www.perl.com/CPAN/authors/
+ http://www.perl.com/CPAN/authors/
</L>
When a LE<lt>I<manpage(section)>E<gt> code is parsed (and these are
fairly rare and not terribly useful), it produces this event structure:
<L content-implicit="yes" raw="manpage(section)" to="manpage(section)" type="man">
- manpage(section)
+ manpage(section)
</L>
The C<type="man"> attribute is always specified for this type of
@@ -252,7 +252,7 @@ For example, this Pod source:
produces this event structure:
<L content-implicit="yes" raw="crontab(5)" to="crontab(5)" type="man">
- crontab(5)
+ crontab(5)
</L>
In the rare cases where a man page link has a specified, that text appears
@@ -263,7 +263,7 @@ in a I<section> attribute. For example, this Pod source:
will produce this event structure:
<L content-implicit="yes" raw="crontab(5)/&quot;ENVIRONMENT&quot;" section="ENVIRONMENT" to="crontab(5)" type="man">
- "ENVIRONMENT" in crontab(5)
+ "ENVIRONMENT" in crontab(5)
</L>
In the rare case where the Pod document has code like
@@ -283,7 +283,7 @@ For example, this Pod source:
will produce this event structure:
<L raw="hell itself!|crontab(5)" to="crontab(5)" type="man">
- hell itself!
+ hell itself!
</L>
The last type of L structure is for links to/within Pod documents. It is
@@ -295,7 +295,7 @@ In the most common case, the simple case of a LE<lt>podpageE<gt> code
produces this event structure:
<L content-implicit="yes" raw="podpage" to="podpage" type="pod">
- podpage
+ podpage
</L>
For example, this Pod source:
@@ -305,7 +305,7 @@ For example, this Pod source:
produces this event structure:
<L content-implicit="yes" raw="Net::Ping" to="Net::Ping" type="pod">
- Net::Ping
+ Net::Ping
</L>
In cases where there is link-text explicitly specified, it
@@ -318,7 +318,7 @@ case discussed above. For example, this Pod source:
produces this event structure:
<L raw="Perl Error Messages|perldiag" to="perldiag" type="pod">
- Perl Error Messages
+ Perl Error Messages
</L>
In cases of links to a section in the current Pod document,
@@ -330,7 +330,7 @@ For example, this Pod source:
produces this event structure:
<L content-implicit="yes" raw="/&quot;Member Data&quot;" section="Member Data" type="pod">
- "Member Data"
+ "Member Data"
</L>
As another example, this Pod source:
@@ -340,7 +340,7 @@ As another example, this Pod source:
produces this event structure:
<L raw="the various attributes|/&quot;Member Data&quot;" section="Member Data" type="pod">
- the various attributes
+ the various attributes
</L>
In cases of links to a section in a different Pod document,
@@ -352,7 +352,7 @@ For example, this Pod source:
produces this event structure:
<L content-implicit="yes" raw="perlsyn/&quot;Basic BLOCKs and Switch Statements&quot;" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">
- "Basic BLOCKs and Switch Statements" in perlsyn
+ "Basic BLOCKs and Switch Statements" in perlsyn
</L>
As another example, this Pod source:
@@ -362,7 +362,7 @@ As another example, this Pod source:
produces this event structure:
<L raw="SWITCH statements|perlsyn/&quot;Basic BLOCKs and Switch Statements&quot;" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">
- SWITCH statements
+ SWITCH statements
</L>
Incidentally, note that we do not distinguish between these syntaxes:
@@ -375,21 +375,21 @@ Incidentally, note that we do not distinguish between these syntaxes:
That is, they all produce the same event structure (for the most part), namely:
<L content-implicit="yes" raw="$depends_on_syntax" section="Member Data" type="pod">
- &#34;Member Data&#34;
+ &#34;Member Data&#34;
</L>
-The I<raw> attribute depends on what the raw content of the L<> is, so that is
-why the event structure is the same "for the most part".
+The I<raw> attribute depends on what the raw content of the C<LE<lt>E<gt>> is,
+so that is why the event structure is the same "for the most part".
If you have not guessed it yet, the I<raw> attribute contains the raw,
-original, unescaped content of the L<> formatting code. In addition to the
-examples above, take notice of the following event structure produced by
-the following L<> formatting code.
+original, unescaped content of the C<LE<lt>E<gt>> formatting code. In addition
+to the examples above, take notice of the following event structure produced
+by the following C<LE<lt>E<gt>> formatting code.
L<click B<here>|page/About the C<-M> switch>
<L raw="click B<here>|page/About the C<-M> switch" section="About the -M switch" to="page" type="pod">
- click B<here>
+ click B<here>
</L>
Specifically, notice that the formatting codes are present and unescaped
@@ -411,7 +411,7 @@ When a Pod verbatim paragraph (AKA "codeblock") is parsed, it
produces this event structure:
<Verbatim start_line="543" xml:space="preserve">
- ...text...
+ ...text...
</Verbatim>
The value of the I<start_line> attribute will be the line number of the
@@ -427,7 +427,7 @@ When a "=head1 ..." directive is parsed, it produces this event
structure:
<head1>
- ...stuff...
+ ...stuff...
</head1>
For example, a directive consisting of this:
@@ -437,26 +437,33 @@ For example, a directive consisting of this:
will produce this event structure:
<head1 start_line="543">
- Options to
- <C>
- new
- </C>
- et al.
+ Options to
+ <C>
+ new
+ </C>
+ et al.
</head1>
"=head2" thru "=head4" directives are the same, except for the element
names in the event structure.
+=item events with an element_name of encoding
+
+In the default case, the events corresponding to C<=encoding> directives
+are not emitted. They are emitted if C<keep_encoding_directive> is true.
+In that case they produce event structures like
+L</"events with an element_name of head1 .. head4"> above.
+
=item events with an element_name of over-bullet
When an "=over ... Z<>=back" block is parsed where the items are
a bulleted list, it will produce this event structure:
<over-bullet indent="4" start_line="543">
- <item-bullet start_line="545">
- ...Stuff...
- </item-bullet>
- ...more item-bullets...
+ <item-bullet start_line="545">
+ ...Stuff...
+ </item-bullet>
+ ...more item-bullets...
</over-bullet fake-closer="1">
The attribute I<fake-closer> is only present if it is a true value; it is not
@@ -509,12 +516,12 @@ For example, this Pod source:
produces this event structure:
<over-bullet indent="4" start_line="10">
- <item-bullet start_line="12">
- Stuff
- </item-bullet>
- <item-bullet start_line="14">
- Bar <I>baz</I>!
- </item-bullet>
+ <item-bullet start_line="12">
+ Stuff
+ </item-bullet>
+ <item-bullet start_line="14">
+ Bar <I>baz</I>!
+ </item-bullet>
</over-bullet>
=item events with an element_name of over-number
@@ -523,10 +530,10 @@ When an "=over ... Z<>=back" block is parsed where the items are
a numbered list, it will produce this event structure:
<over-number indent="4" start_line="543">
- <item-number number="1" start_line="545">
- ...Stuff...
- </item-number>
- ...more item-number...
+ <item-number number="1" start_line="545">
+ ...Stuff...
+ </item-number>
+ ...more item-number...
</over-bullet>
This is like the "over-bullet" event structure; but note that the contents
@@ -550,12 +557,12 @@ an "=over ... Z<>=back" block is parsed where the items are
a list of text "subheadings", it will produce this event structure:
<over-text indent="4" start_line="543">
- <item-text>
- ...stuff...
- </item-text>
- ...stuff (generally Para or Verbatim elements)...
- <item-text>
- ...more item-text and/or stuff...
+ <item-text>
+ ...stuff...
+ </item-text>
+ ...stuff (generally Para or Verbatim elements)...
+ <item-text>
+ ...more item-text and/or stuff...
</over-text>
The I<indent> and I<fake-closer> attributes are as with the other over-* events.
@@ -577,22 +584,22 @@ For example, this Pod source:
produces this event structure:
<over-text indent="4" start_line="20">
- <item-text start_line="22">
- Foo
- </item-text>
- <Para start_line="24">
- Stuff
- </Para>
- <item-text start_line="26">
- Bar
- <I>
- baz
- </I>
- !
- </item-text>
- <Para start_line="28">
- Quux
- </Para>
+ <item-text start_line="22">
+ Foo
+ </item-text>
+ <Para start_line="24">
+ Stuff
+ </Para>
+ <item-text start_line="26">
+ Bar
+ <I>
+ baz
+ </I>
+ !
+ </item-text>
+ <Para start_line="28">
+ Quux
+ </Para>
</over-text>
@@ -605,7 +612,7 @@ an "=over ... Z<>=back" block is parsed where there are no items,
it will produce this event structure:
<over-block indent="4" start_line="543">
- ...stuff (generally Para or Verbatim elements)...
+ ...stuff (generally Para or Verbatim elements)...
</over-block>
The I<indent> and I<fake-closer> attributes are as with the other over-* events.
@@ -628,15 +635,15 @@ For example, this Pod source:
will produce this event structure:
<over-block indent="4" start_line="2">
- <Para start_line="4">
- For cutting off our trade with all parts of the world
- </Para>
- <Para start_line="6">
- For transporting us beyond seas to be tried for pretended offenses
- </Para>
- <Para start_line="8">
- He is at this time transporting large armies of [...more text...]
- </Para>
+ <Para start_line="4">
+ For cutting off our trade with all parts of the world
+ </Para>
+ <Para start_line="6">
+ For transporting us beyond seas to be tried for pretended offenses
+ </Para>
+ <Para start_line="8">
+ He is at this time transporting large armies of [...more text...]
+ </Para>
</over-block>
=item events with an element_name of over-empty
@@ -666,12 +673,12 @@ For example, this Pod source:
will produce this event structure:
<over-block indent="4" start_line="1">
- <over-empty indent="4" start_line="3">
- </over-empty>
+ <over-empty indent="4" start_line="3">
+ </over-empty>
</over-block>
Note that the outer C<=over> is a block because it has no C<=item>s but still
-has content: the inner C<=over>. The inner C<=over>, in turn, is completely
+has content: the inner C<=over>. The inner C<=over>, in turn, is completely
empty, and is treated as such.
=item events with an element_name of item-bullet
@@ -714,21 +721,21 @@ the ones described in the I<perlpod>.
As the parser sees sections like:
- =for html <img src="fig1.jpg">
+ =for html <img src="fig1.jpg">
or
- =begin html
+ =begin html
- <img src="fig1.jpg">
+ <img src="fig1.jpg">
- =end html
+ =end html
...the parser will ignore these sections unless your subclass has
-specified that it wants to see sections targetted to "html" (or whatever
+specified that it wants to see sections targeted to "html" (or whatever
the formatter name is).
-If you want to process all sections, even if they're not targetted for you,
+If you want to process all sections, even if they're not targeted for you,
call this before you start parsing:
$parser->accept_targets('*');
@@ -749,7 +756,7 @@ beyond just the standard ones (I B C L F S X, plus the two weird ones
you don't actually see in the parse tree, Z and E). For example, to also
accept codes "N", "R", and "W":
- $parser->accept_codes( qw( N R W ) );
+ $parser->accept_codes( qw( N R W ) );
B<TODO: document how this interacts with =extend, and long element names>
@@ -769,11 +776,11 @@ all), or as verbatim (mostly just expanding tabs), or as processed text
For example, to accept a new directive "=method", you'd presumably
use:
- $parser->accept_directive_as_processed("method");
+ $parser->accept_directive_as_processed("method");
so that you could have Pod lines like:
- =method I<$whatever> thing B<um>
+ =method I<$whatever> thing B<um>
Making up your own directives breaks compatibility with other Pod
formatters, in a way that using "=for I<target> ..." lines doesn't;
@@ -787,11 +794,11 @@ Setting this attribute to a true value (and by default it is false) will
turn "SE<lt>...E<gt>" sequences into sequences of words separated by
C<\xA0> (non-breaking space) characters. For example, it will take this:
- I like S<Dutch apple pie>, don't you?
+ I like S<Dutch apple pie>, don't you?
and treat it as if it were:
- I like DutchE<nbsp>appleE<nbsp>pie, don't you?
+ I like DutchE<nbsp>appleE<nbsp>pie, don't you?
This is handy for output formats that don't have anything quite like an
"SE<lt>...E<gt>" code, but which do have a code for non-breaking space.
@@ -808,7 +815,7 @@ L<perlpodspec> requires output formats (wherever possible) to note
this detail in a comment in the output format. For example, for
some kind of SGML output format:
- print OUT "<!-- \n", $parser->version_report, "\n -->";
+ print OUT "<!-- \n", $parser->version_report, "\n -->";
=item C<< $parser->pod_para_count() >>
@@ -829,6 +836,15 @@ ignores any "XE<lt>...E<gt>" sequences in the document being parsed.
Many formats don't actually use the content of these codes, so have
no reason to process them.
+=item C<< $parser->keep_encoding_directive( I<SOMEVALUE> ) >>
+
+This attribute, when set to a true value (it is false by default)
+will keep C<=encoding> and its content in the event structure. Most
+formats don't actually need to process the content of an C<=encoding>
+directive, even when this directive sets the encoding and the
+processor makes use of the encoding information. Indeed, it is
+possible to know the encoding without processing the directive
+content.
=item C<< $parser->merge_text( I<SOMEVALUE> ) >>
@@ -837,7 +853,7 @@ makes sure that only one event (or token, or node) will be created
for any single contiguous sequence of text. For example, consider
this somewhat contrived example:
- I just LOVE Z<>hotE<32>apple pie!
+ I just LOVE Z<>hotE<32>apple pie!
When that is parsed and events are about to be called on it, it may
actually seem to be four different text events, one right after another:
@@ -853,10 +869,10 @@ This specifies code that should be called when a code line is seen
that no code should be called. If you provide a routine, it should
start out like this:
- sub get_code_line { # or whatever you'll call it
- my($line, $line_number, $parser) = @_;
- ...
- }
+ sub get_code_line { # or whatever you'll call it
+ my($line, $line_number, $parser) = @_;
+ ...
+ }
Note, however, that sometimes the Pod events aren't processed in exactly
the same order as the code lines are -- i.e., if you have a file with
@@ -1011,7 +1027,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
@@ -1053,5 +1069,3 @@ Yes, L<...> is hard.
=cut
-
-
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Text.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Text.pm
index 3032d0fcd57..bd1a5416df8 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Text.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Text.pm
@@ -6,7 +6,7 @@ use Carp ();
use Pod::Simple::Methody ();
use Pod::Simple ();
use vars qw( @ISA $VERSION $FREAKYMODE);
-$VERSION = '3.20';
+$VERSION = '3.28';
@ISA = ('Pod::Simple::Methody');
BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG)
? \&Pod::Simple::DEBUG
@@ -148,7 +148,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm
index dea1cde7ccf..6788df6d762 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm
@@ -6,7 +6,7 @@ use strict;
use Carp ();
use Pod::Simple ();
use vars qw( @ISA $VERSION );
-$VERSION = '3.20';
+$VERSION = '3.28';
@ISA = ('Pod::Simple');
sub new {
@@ -75,7 +75,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm
index 9f2a224a278..0b2fb2f8c49 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm
@@ -4,7 +4,7 @@ package Pod::Simple::TiedOutFH;
use Symbol ('gensym');
use Carp ();
use vars qw($VERSION );
-$VERSION = '3.20';
+$VERSION = '3.28';
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm
index 892436db7f0..9e835048a0e 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm
@@ -2,7 +2,7 @@
require 5;
package Pod::Simple::Transcode;
use vars qw($VERSION );
-$VERSION = '3.20';
+$VERSION = '3.28';
BEGIN {
if(defined &DEBUG) {;} # Okay
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm
index 33030903430..4749e9af198 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm
@@ -5,7 +5,7 @@ require 5;
package Pod::Simple::TranscodeDumb;
use strict;
use vars qw($VERSION %Supported);
-$VERSION = '3.20';
+$VERSION = '3.28';
# This module basically pretends it knows how to transcode, except
# only for null-transcodings! We use this when Encode isn't
# available.
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm
index a66dedd03bc..06fdb9f2750 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm
@@ -9,7 +9,7 @@ use strict;
use Pod::Simple;
require Encode;
use vars qw($VERSION );
-$VERSION = '3.20';
+$VERSION = '3.28';
sub is_dumb {0}
sub is_smart {1}
@@ -27,12 +27,12 @@ sub encmodver {
}
sub make_transcoder {
- my($e) = $_[1];
+ my $e = Encode::find_encoding($_[1]);
die "WHAT ENCODING!?!?" unless $e;
my $x;
return sub {
foreach $x (@_) {
- $x = Encode::decode($e, $x);
+ $x = $e->decode($x) unless Encode::is_utf8($x);
}
return;
};
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm
index 9d31db0badd..df896e64a7c 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm
@@ -45,7 +45,7 @@ declare the output character set as UTF-8 before parsing, like so:
package Pod::Simple::XHTML;
use strict;
use vars qw( $VERSION @ISA $HAS_HTML_ENTITIES );
-$VERSION = '3.20';
+$VERSION = '3.28';
use Pod::Simple::Methody ();
@ISA = ('Pod::Simple::Methody');
@@ -151,7 +151,7 @@ Add additional meta tags here, or blocks of inline CSS or JavaScript
A string containing all characters that should be encoded as HTML entities,
specified using the regular expression character class syntax (what you find
within brackets in regular expressions). This value will be passed as the
-second argument to the C<encode_entities> fuction of L<HTML::Entities>. IF
+second argument to the C<encode_entities> function of L<HTML::Entities>. If
L<HTML::Entities> is not installed, then any characters other than C<&<>"'>
will be encoded numerically.
@@ -251,7 +251,6 @@ sub new {
$new->man_url_prefix('http://man.he.net/man');
$new->html_charset('ISO-8859-1');
$new->nix_X_codes(1);
- $new->codes_in_verbatim(1);
$new->{'scratch'} = '';
$new->{'to_index'} = [];
$new->{'output'} = [];
@@ -301,11 +300,27 @@ something like:
my ($self, $text) = @_;
if ($self->{'in_foo'}) {
$self->{'scratch'} .= build_foo_html($text);
- } else {
- $self->{'scratch'} .= $text;
+ return;
}
+ $self->SUPER::handle_text($text);
}
+=head2 handle_code
+
+This method handles the body of text that is marked up to be code.
+You might for instance override this to plug in a syntax highlighter.
+The base implementation just escapes the text.
+
+The callback methods C<start_code> and C<end_code> emits the C<code> tags
+before and after C<handle_code> is invoked, so you might want to override these
+together with C<handle_code> if this wrapping isn't suiteable.
+
+Note that the code might be broken into mulitple segments if there are
+nested formatting codes inside a C<< CE<lt>...> >> sequence. In between the
+calls to C<handle_code> other markup tags might have been emitted in that
+case. The same is true for verbatim sections if the C<codes_in_verbatim>
+option is turned on.
+
=head2 accept_targets_as_html
This method behaves like C<accept_targets_as_text>, but also marks the region
@@ -328,18 +343,47 @@ sub accept_targets_as_html {
sub handle_text {
# escape special characters in HTML (<, >, &, etc)
- $_[0]{'scratch'} .= $_[0]->__in_literal_xhtml_region
- ? $_[1]
- : $_[0]->encode_entities( $_[1] );
+ my $text = $_[0]->__in_literal_xhtml_region
+ ? $_[1]
+ : $_[0]->encode_entities( $_[1] );
+
+ if ($_[0]{'in_code'} && @{$_[0]{'in_code'}}) {
+ # Intentionally use the raw text in $_[1], even if we're not in a
+ # literal xhtml region, since handle_code calls encode_entities.
+ $_[0]->handle_code( $_[1], $_[0]{'in_code'}[-1] );
+ } else {
+ $_[0]{'scratch'} .= $text;
+ }
+
+ $_[0]{htext} .= $text if $_[0]{'in_head'};
}
-sub start_Para { $_[0]{'scratch'} = '<p>' }
-sub start_Verbatim { $_[0]{'scratch'} = '<pre><code>' }
+sub start_code {
+ $_[0]{'scratch'} .= '<code>';
+}
-sub start_head1 { $_[0]{'in_head'} = 1 }
-sub start_head2 { $_[0]{'in_head'} = 2 }
-sub start_head3 { $_[0]{'in_head'} = 3 }
-sub start_head4 { $_[0]{'in_head'} = 4 }
+sub end_code {
+ $_[0]{'scratch'} .= '</code>';
+}
+
+sub handle_code {
+ $_[0]{'scratch'} .= $_[0]->encode_entities( $_[1] );
+}
+
+sub start_Para {
+ $_[0]{'scratch'} = '<p>';
+}
+
+sub start_Verbatim {
+ $_[0]{'scratch'} = '<pre>';
+ push(@{$_[0]{'in_code'}}, 'Verbatim');
+ $_[0]->start_code($_[0]{'in_code'}[-1]);
+}
+
+sub start_head1 { $_[0]{'in_head'} = 1; $_[0]{htext} = ''; }
+sub start_head2 { $_[0]{'in_head'} = 2; $_[0]{htext} = ''; }
+sub start_head3 { $_[0]{'in_head'} = 3; $_[0]{htext} = ''; }
+sub start_head4 { $_[0]{'in_head'} = 4; $_[0]{htext} = ''; }
sub start_item_number {
$_[0]{'scratch'} = "</li>\n" if ($_[0]{'in_li'}->[-1] && pop @{$_[0]{'in_li'}});
@@ -397,7 +441,8 @@ sub end_over_text {
sub end_Para { $_[0]{'scratch'} .= '</p>'; $_[0]->emit }
sub end_Verbatim {
- $_[0]{'scratch'} .= '</code></pre>';
+ $_[0]->end_code(pop(@{$_[0]->{'in_code'}}));
+ $_[0]{'scratch'} .= '</pre>';
$_[0]->emit;
}
@@ -408,14 +453,14 @@ sub _end_head {
$add = 1 unless defined $add;
$h += $add - 1;
- my $id = $_[0]->idify($_[0]{scratch});
+ my $id = $_[0]->idify($_[0]{htext});
my $text = $_[0]{scratch};
- $_[0]{'scratch'} = $_[0]->backlink && ($h - $add == 0)
+ $_[0]{'scratch'} = $_[0]->backlink && ($h - $add == 0)
# backlinks enabled && =head1
? qq{<a href="#_podtop_"><h$h id="$id">$text</h$h></a>}
: qq{<h$h id="$id">$text</h$h>};
$_[0]->emit;
- push @{ $_[0]{'to_index'} }, [$h, $id, $text];
+ push @{ $_[0]{'to_index'} }, [$h, $id, delete $_[0]{'htext'}];
}
sub end_head1 { shift->_end_head(@_); }
@@ -568,8 +613,8 @@ sub end_Document {
sub start_B { $_[0]{'scratch'} .= '<b>' }
sub end_B { $_[0]{'scratch'} .= '</b>' }
-sub start_C { $_[0]{'scratch'} .= '<code>' }
-sub end_C { $_[0]{'scratch'} .= '</code>' }
+sub start_C { push(@{$_[0]{'in_code'}}, 'C'); $_[0]->start_code($_[0]{'in_code'}[-1]); }
+sub end_C { $_[0]->end_code(pop(@{$_[0]{'in_code'}})); }
sub start_F { $_[0]{'scratch'} .= '<i>' }
sub end_F { $_[0]{'scratch'} .= '</i>' }
@@ -692,6 +737,11 @@ underscores (_), colons (:), and periods (.).
=item *
+The final character can't be a hyphen, colon, or period. URLs ending with these
+characters, while allowed by XHTML, can be awkward to extract from plain text.
+
+=item *
+
Each id must be unique within the document.
=back
@@ -713,6 +763,7 @@ sub idify {
s/^([^a-zA-Z]+)$/pod$1/; # Prepend "pod" if no valid chars.
s/^[^a-zA-Z]+//; # First char must be a letter.
s/[^-a-zA-Z0-9_:.]+/-/g; # All other chars must be valid.
+ s/[-:.]+$//; # Strip trailing punctuation.
}
return $t if $not_unique;
my $i = '';
@@ -757,7 +808,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm
index bbb815a5527..47496e2577f 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm
@@ -5,7 +5,7 @@ use strict;
use Carp ();
use Pod::Simple ();
use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS);
-$VERSION = '3.20';
+$VERSION = '3.28';
BEGIN {
@ISA = ('Pod::Simple');
*DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG;
@@ -20,6 +20,7 @@ sub new {
my $self = shift;
my $new = $self->SUPER::new(@_);
$new->{'output_fh'} ||= *STDOUT{IO};
+ $new->keep_encoding_directive(1);
#$new->accept_codes('VerbatimFormatted');
return $new;
}
@@ -148,7 +149,7 @@ pod-people@perl.org mail list. Send an empty email to
pod-people-subscribe@perl.org to subscribe.
This module is managed in an open GitHub repository,
-L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+L<https://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
to clone L<git://github.com/theory/pod-simple.git> and send patches!
Patches against Pod::Simple are welcome. Please send bug reports to
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/closeys.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/closeys.t
index 683ce13ff38..7e2b3f85e9e 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/closeys.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/closeys.t
@@ -25,6 +25,7 @@ sub nowhine {
$_[0]->accept_targets("*");
}
+local $Pod::Simple::XMLOutStream::SORT_ATTRS = 1;
&ok(e(
"=begin :foo\n\n=begin :bar\n\nZaz\n\n",
"=begin :foo\n\n=begin :bar\n\nZaz\n\n=end :bar\n\n=end :foo\n\n",
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus.t
index 3427b915e12..2f59302cfbd 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus.t
@@ -168,6 +168,7 @@ foreach my $f (@testfiles) {
skip $skippy, 0;
} else {
print "# $outfilename and $xml don't match!\n";
+ print STDERR `diff -u $xml $outfilename`;
ok 0;
}
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jp.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jp.xml
index e0304954d4b..b020db0c5d3 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jp.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jp.xml
@@ -8,13 +8,15 @@
<head1 start_line="7">
DESCRIPTION
</head1>
+ <encoding start_line="9">
+ iso-2022-jp
+ </encoding>
<Para start_line="11">
- This is a test Pod document in ISO-2202-JP. Its content
- is some Japanese haiku by famous poets.
+ This is a test Pod document in ISO-2202-JP. Its content is some Japanese
+ haiku by famous poets.
</Para>
<head2 start_line="15">
- MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694)
- :
+ MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694) :
</head2>
<Para start_line="17">
&#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
@@ -26,7 +28,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="23" xml:space="preserve">
- &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
+
+ &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
</VerbatimFormatted>
<head2 start_line="27">
YOSA BUSON (&#19982;&#35613;&#34154;&#26449;1716 - 1783)
@@ -41,7 +44,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="35" xml:space="preserve">
- &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
+
+ &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
</VerbatimFormatted>
<head2 start_line="37">
MASAOKA SHIKI (&#27491;&#23713;&#23376;&#35215; 1867 - 1902)
@@ -56,7 +60,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="45" xml:space="preserve">
- &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
+
+ &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
</VerbatimFormatted>
<Para start_line="47">
&#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
@@ -65,15 +70,15 @@
(yomei / ikubakuka aru / yo mijikashi)
</Para>
<VerbatimFormatted start_line="51" xml:space="preserve">
- &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
+
+ &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
</VerbatimFormatted>
<head1 start_line="53">
AS A LIST
</head1>
<over-text indent="4" start_line="55">
<item-text start_line="57">
- MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694)
- :
+ MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694) :
</item-text>
<Para start_line="59">
&#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
@@ -85,7 +90,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="65" xml:space="preserve">
- &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
+
+ &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
</VerbatimFormatted>
<item-text start_line="69">
YOSA BUSON (&#19982;&#35613;&#34154;&#26449;1716 - 1783)
@@ -100,7 +106,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="77" xml:space="preserve">
- &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
+
+ &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
</VerbatimFormatted>
<item-text start_line="79">
MASAOKA SHIKI (&#27491;&#23713;&#23376;&#35215; 1867 - 1902)
@@ -115,7 +122,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="87" xml:space="preserve">
- &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
+
+ &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
</VerbatimFormatted>
<Para start_line="89">
&#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
@@ -124,7 +132,8 @@
(yomei / ikubakuka aru / yo mijikashi)
</Para>
<VerbatimFormatted start_line="93" xml:space="preserve">
- &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
+
+ &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
</VerbatimFormatted>
</over-text>
<Para start_line="97">
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpx.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpx.xml
index 57cb4ceadca..69e45f0f64a 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpx.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpx.xml
@@ -8,13 +8,15 @@
<head1 start_line="7">
DESCRIPTION
</head1>
+ <encoding start_line="9">
+ iso-2022-jp
+ </encoding>
<Para start_line="11">
- This is a test Pod document in ISO-2202-JP. Its content
- is some Japanese haiku by famous poets.
+ This is a test Pod document in ISO-2202-JP. Its content is some Japanese
+ haiku by famous poets.
</Para>
<head2 start_line="15">
- MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694)
- :
+ MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694) :
</head2>
<Para start_line="17">
&#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
@@ -26,7 +28,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="23" xml:space="preserve">
- &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
+
+ &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
</VerbatimFormatted>
<head2 start_line="27">
YOSA BUSON (&#19982;&#35613;&#34154;&#26449;1716 - 1783)
@@ -41,7 +44,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="35" xml:space="preserve">
- &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
+
+ &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
</VerbatimFormatted>
<head2 start_line="37">
MASAOKA SHIKI (&#27491;&#23713;&#23376;&#35215; 1867 - 1902)
@@ -56,7 +60,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="45" xml:space="preserve">
- &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
+
+ &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
</VerbatimFormatted>
<Para start_line="47">
&#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
@@ -65,15 +70,15 @@
(yomei / ikubakuka aru / yo mijikashi)
</Para>
<VerbatimFormatted start_line="51" xml:space="preserve">
- &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
+
+ &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
</VerbatimFormatted>
<head1 start_line="53">
AS A LIST
</head1>
<over-text indent="4" start_line="55">
<item-text start_line="57">
- MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694)
- :
+ MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694) :
</item-text>
<Para start_line="59">
&#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
@@ -85,7 +90,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="65" xml:space="preserve">
- &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
+
+ &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
</VerbatimFormatted>
<item-text start_line="69">
YOSA BUSON (&#19982;&#35613;&#34154;&#26449;1716 - 1783)
@@ -100,7 +106,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="77" xml:space="preserve">
- &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
+
+ &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
</VerbatimFormatted>
<item-text start_line="79">
MASAOKA SHIKI (&#27491;&#23713;&#23376;&#35215; 1867 - 1902)
@@ -115,7 +122,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="87" xml:space="preserve">
- &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
+
+ &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
</VerbatimFormatted>
<Para start_line="89">
&#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
@@ -124,7 +132,8 @@
(yomei / ikubakuka aru / yo mijikashi)
</Para>
<VerbatimFormatted start_line="93" xml:space="preserve">
- &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
+
+ &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
</VerbatimFormatted>
</over-text>
<Para start_line="97">
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpy.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpy.xml
index 23d51e1ebbc..a8e322dbd58 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpy.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpy.xml
@@ -8,13 +8,15 @@
<head1 start_line="6">
DESCRIPTION
</head1>
+ <encoding start_line="8">
+ iso-2022-jp
+ </encoding>
<Para start_line="10">
- This is a test Pod document in ISO-2202-JP. Its content
- is some Japanese haiku by famous poets.
+ This is a test Pod document in ISO-2202-JP. Its content is some Japanese
+ haiku by famous poets.
</Para>
<head2 start_line="14">
- MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694)
- :
+ MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694) :
</head2>
<Para start_line="16">
&#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
@@ -26,7 +28,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="22" xml:space="preserve">
- &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
+
+ &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
</VerbatimFormatted>
<head2 start_line="26">
YOSA BUSON (&#19982;&#35613;&#34154;&#26449;1716 - 1783)
@@ -41,7 +44,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="34" xml:space="preserve">
- &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
+
+ &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
</VerbatimFormatted>
<head2 start_line="36">
MASAOKA SHIKI (&#27491;&#23713;&#23376;&#35215; 1867 - 1902)
@@ -56,7 +60,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="44" xml:space="preserve">
- &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
+
+ &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
</VerbatimFormatted>
<Para start_line="46">
&#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
@@ -65,15 +70,15 @@
(yomei / ikubakuka aru / yo mijikashi)
</Para>
<VerbatimFormatted start_line="50" xml:space="preserve">
- &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
+
+ &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
</VerbatimFormatted>
<head1 start_line="52">
AS A LIST
</head1>
<over-text indent="4" start_line="54">
<item-text start_line="56">
- MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694)
- :
+ MATSUO BASHO (&#26494;&#23614;&#33453;&#34121; 1644 - 1694) :
</item-text>
<Para start_line="58">
&#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
@@ -85,7 +90,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="64" xml:space="preserve">
- &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
+
+ &#21476;&#27744;&#12420;&#34521;&#12392;&#12403;&#36796;&#12416;&#27700;&#12398;&#38899;
</VerbatimFormatted>
<item-text start_line="68">
YOSA BUSON (&#19982;&#35613;&#34154;&#26449;1716 - 1783)
@@ -100,7 +106,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="76" xml:space="preserve">
- &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
+
+ &#26041;&#20843;&#37324;&#38632;&#38642;&#12424;&#12379;&#12396;&#29281;&#20025;&#12363;&#12394;
</VerbatimFormatted>
<item-text start_line="78">
MASAOKA SHIKI (&#27491;&#23713;&#23376;&#35215; 1867 - 1902)
@@ -115,7 +122,8 @@
As verbatim:
</Para>
<VerbatimFormatted start_line="86" xml:space="preserve">
- &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
+
+ &#12356;&#12385;&#12399;&#12388;&#12398;&#19968;&#36650;&#30333;&#12375;&#26149;&#12398;&#26286;
</VerbatimFormatted>
<Para start_line="88">
&#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
@@ -124,7 +132,8 @@
(yomei / ikubakuka aru / yo mijikashi)
</Para>
<VerbatimFormatted start_line="92" xml:space="preserve">
- &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
+
+ &#20313;&#21629;&#12356;&#12367;&#12400;&#12367;&#12363;&#12354;&#12427;&#22812;&#30701;&#12375;
</VerbatimFormatted>
</over-text>
<Para start_line="96">
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpz.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpz.xml
index 734ed6f5d81..8fe1bb00dfc 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpz.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/2202jpz.xml
@@ -8,6 +8,9 @@
<head1 start_line="6">
DESCRIPTION
</head1>
+ <encoding start_line="8">
+ iso-2022-jp
+ </encoding>
<Para start_line="10">
This is a test Pod document in ISO-2202-JP.
</Para>
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/8859_7.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/8859_7.xml
index ffbf0d08556..3760803bcf5 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/8859_7.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/8859_7.xml
@@ -1,4 +1,7 @@
<Document start_line="2">
+ <encoding start_line="2">
+ iso-8859-7
+ </encoding>
<head1 start_line="4">
NAME
</head1>
@@ -12,31 +15,37 @@
</head1>
<Para start_line="10">
&#913;&#961;&#967;&#945;&#943;&#959; &#928;&#957;&#949;&#973;&#956;&#39;
- &#945;&#952;&#940;&#957;&#945;&#964;&#959;&#957;, &#945;&#947;&#957;&#941;
- &#960;&#945;&#964;&#941;&#961;&#945; &#964;&#959;&#965;
- &#969;&#961;&#945;&#943;&#959;&#965;, &#964;&#959;&#965;
- &#956;&#949;&#947;&#940;&#955;&#959;&#965; &#954;&#945;&#953;
- &#964;&#39; &#945;&#955;&#951;&#952;&#953;&#957;&#959;&#973;,
+ &#945;&#952;&#940;&#957;&#945;&#964;&#959;&#957;,
+ &#945;&#947;&#957;&#941; &#960;&#945;&#964;&#941;&#961;&#945;
+ &#964;&#959;&#965; &#969;&#961;&#945;&#943;&#959;&#965;,
+ &#964;&#959;&#965; &#956;&#949;&#947;&#940;&#955;&#959;&#965;
+ &#954;&#945;&#953; &#964;&#39;
+ &#945;&#955;&#951;&#952;&#953;&#957;&#959;&#973;,
</Para>
<Para start_line="13">
- &#954;&#945;&#964;&#941;&#946;&#945;, &#966;&#945;&#957;&#949;&#961;&#974;&#963;&#959;&#965;
- &#954;&#953; &#940;&#963;&#964;&#961;&#945;&#968;&#39; &#949;&#948;&#974;
+ &#954;&#945;&#964;&#941;&#946;&#945;,
+ &#966;&#945;&#957;&#949;&#961;&#974;&#963;&#959;&#965; &#954;&#953;
+ &#940;&#963;&#964;&#961;&#945;&#968;&#39; &#949;&#948;&#974;
&#960;&#941;&#961;&#945; &#963;&#964;&#951; &#948;&#972;&#958;&#945;
&#964;&#951;&#962; &#948;&#953;&#954;&#942;&#962; &#963;&#959;&#965;
- &#947;&#951;&#962; &#954;&#945;&#953; &#964;&#39; &#959;&#965;&#961;&#945;&#957;&#959;&#973;.
+ &#947;&#951;&#962; &#954;&#945;&#953; &#964;&#39;
+ &#959;&#965;&#961;&#945;&#957;&#959;&#973;.
</Para>
<Para start_line="16">
&#931;&#964;&#959; &#948;&#961;&#972;&#956;&#959; &#954;&#945;&#953;
&#963;&#964;&#959; &#960;&#940;&#955;&#949;&#956;&#945;
- &#954;&#945;&#953; &#963;&#964;&#959; &#955;&#953;&#952;&#940;&#961;&#953;,
- &#963;&#964;&#969;&#957; &#949;&#965;&#947;&#949;&#957;&#974;&#957;
+ &#954;&#945;&#953; &#963;&#964;&#959;
+ &#955;&#953;&#952;&#940;&#961;&#953;, &#963;&#964;&#969;&#957;
+ &#949;&#965;&#947;&#949;&#957;&#974;&#957;
&#913;&#947;&#974;&#957;&#969;&#957; &#955;&#940;&#956;&#968;&#949;
&#964;&#951;&#957; &#959;&#961;&#956;&#942;,
</Para>
<Para start_line="19">
- &#954;&#945;&#953; &#956;&#949; &#964;&#39; &#945;&#956;&#940;&#961;&#945;&#957;&#964;&#959;
- &#963;&#964;&#949;&#966;&#940;&#957;&#969;&#963;&#949; &#954;&#955;&#969;&#957;&#940;&#961;&#953;
- &#954;&#945;&#953; &#963;&#953;&#948;&#949;&#961;&#941;&#957;&#953;&#959;
+ &#954;&#945;&#953; &#956;&#949; &#964;&#39;
+ &#945;&#956;&#940;&#961;&#945;&#957;&#964;&#959;
+ &#963;&#964;&#949;&#966;&#940;&#957;&#969;&#963;&#949;
+ &#954;&#955;&#969;&#957;&#940;&#961;&#953; &#954;&#945;&#953;
+ &#963;&#953;&#948;&#949;&#961;&#941;&#957;&#953;&#959;
&#960;&#955;&#940;&#963;&#949; &#954;&#953; &#940;&#958;&#953;&#959;
&#964;&#959; &#954;&#959;&#961;&#956;&#943;.
</Para>
@@ -49,11 +58,12 @@
&#956;&#941;&#947;&#945;&#962; &#957;&#945;&#972;&#962;,
</Para>
<Para start_line="25">
- &#954;&#945;&#953; &#964;&#961;&#941;&#967;&#949;&#953;
- &#963;&#964;&#959; &#957;&#945;&#972; &#949;&#948;&#974;
+ &#954;&#945;&#953; &#964;&#961;&#941;&#967;&#949;&#953; &#963;&#964;&#959;
+ &#957;&#945;&#972; &#949;&#948;&#974;
&#960;&#961;&#959;&#963;&#954;&#965;&#957;&#951;&#964;&#942;&#962;
&#963;&#959;&#965;. &#913;&#961;&#967;&#945;&#943;&#959;
- &#928;&#957;&#949;&#973;&#956;&#39; &#945;&#952;&#940;&#957;&#945;&#964;&#959;,
- &#954;&#940;&#952;&#949; &#955;&#945;&#972;&#962;.
+ &#928;&#957;&#949;&#973;&#956;&#39;
+ &#945;&#952;&#940;&#957;&#945;&#964;&#959;, &#954;&#940;&#952;&#949;
+ &#955;&#945;&#972;&#962;.
</Para>
</Document>
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/cp1256.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/cp1256.xml
index deacfd6c85b..b0960114380 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/cp1256.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/cp1256.xml
@@ -9,33 +9,40 @@
DESCRIPTION
</head1>
<Para start_line="8">
- This Pod document is a paragraph in Arabic from &#34;The
- Five Pillars of Islam&#34; as CP-1256.
+ This Pod document is a paragraph in Arabic from &#34;The Five Pillars of
+ Islam&#34; as CP-1256.
</Para>
+ <encoding start_line="11">
+ cp1256
+ </encoding>
<Para start_line="13">
- &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577;
- &#1576;&#1606; &#1581;&#1586;&#1605; &#1602;&#1575;&#1604;
- &#1602;&#1575;&#1604; &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
- &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607; &#1593;&#1604;&#1610;&#1607;
- &#1608;&#1587;&#1604;&#1605;:
+ &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577; &#1576;&#1606;
+ &#1581;&#1586;&#1605; &#1602;&#1575;&#1604; &#1602;&#1575;&#1604;
+ &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
+ &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607;
+ &#1593;&#1604;&#1610;&#1607; &#1608;&#1587;&#1604;&#1605;:
</Para>
<Para start_line="15">
&#1575;&#1585;&#1576;&#1593; &#1601;&#1585;&#1590;&#1607;&#1606;
&#1575;&#1604;&#1604;&#1607; &#1593;&#1586; &#1608;&#1580;&#1604;
&#1601;&#1610; &#1575;&#1604;&#1575;&#1587;&#1604;&#1575;&#1605;
- &#1601;&#1605;&#1606; &#1580;&#1575;&#1569; &#1576;&#1579;&#1604;&#1575;&#1579;
- &#1604;&#1605; &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
+ &#1601;&#1605;&#1606; &#1580;&#1575;&#1569;
+ &#1576;&#1579;&#1604;&#1575;&#1579; &#1604;&#1605;
+ &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
</Para>
<Para start_line="17">
- &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609; &#1610;&#1571;&#1578;&#1610;
- &#1576;&#1607;&#1606; &#1580;&#1605;&#1610;&#1593;&#1575;
- &#1575;&#1604;&#1589;&#1604;&#1575;&#1577; &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
+ &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609;
+ &#1610;&#1571;&#1578;&#1610; &#1576;&#1607;&#1606;
+ &#1580;&#1605;&#1610;&#1593;&#1575;
+ &#1575;&#1604;&#1589;&#1604;&#1575;&#1577;
+ &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
&#1608;&#1589;&#1610;&#1575;&#1605; &#1585;&#1605;&#1590;&#1575;&#1606;
&#1608;&#1581;&#1580;
</Para>
<Para start_line="19">
&#1575;&#1604;&#1576;&#1610;&#1578;. &#1585;&#1608;&#1575;&#1607;
- &#1575;&#1581;&#1605;&#1583; &#1608;&#1575;&#1604;&#1591;&#1576;&#1585;&#1575;&#1606;&#1610;
+ &#1575;&#1581;&#1605;&#1583;
+ &#1608;&#1575;&#1604;&#1591;&#1576;&#1585;&#1575;&#1606;&#1610;
&#1601;&#1610; &#1575;&#1604;&#1603;&#1576;&#1610;&#1585;
&#1608;&#1601;&#1610; &#1575;&#1587;&#1606;&#1575;&#1583;&#1607;
&#1575;&#1576;&#1606; &#1604;&#1607;&#1610;&#1593;&#1577;.
@@ -44,18 +51,22 @@
And now as a real single paragraph:
</Para>
<Para start_line="23">
- &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577;
- &#1576;&#1606; &#1581;&#1586;&#1605; &#1602;&#1575;&#1604;
- &#1602;&#1575;&#1604; &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
- &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607; &#1593;&#1604;&#1610;&#1607;
- &#1608;&#1587;&#1604;&#1605;: &#1575;&#1585;&#1576;&#1593;
- &#1601;&#1585;&#1590;&#1607;&#1606; &#1575;&#1604;&#1604;&#1607;
- &#1593;&#1586; &#1608;&#1580;&#1604; &#1601;&#1610; &#1575;&#1604;&#1575;&#1587;&#1604;&#1575;&#1605;
- &#1601;&#1605;&#1606; &#1580;&#1575;&#1569; &#1576;&#1579;&#1604;&#1575;&#1579;
- &#1604;&#1605; &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
- &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609; &#1610;&#1571;&#1578;&#1610;
- &#1576;&#1607;&#1606; &#1580;&#1605;&#1610;&#1593;&#1575;
- &#1575;&#1604;&#1589;&#1604;&#1575;&#1577; &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
+ &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577; &#1576;&#1606;
+ &#1581;&#1586;&#1605; &#1602;&#1575;&#1604; &#1602;&#1575;&#1604;
+ &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
+ &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607;
+ &#1593;&#1604;&#1610;&#1607; &#1608;&#1587;&#1604;&#1605;:
+ &#1575;&#1585;&#1576;&#1593; &#1601;&#1585;&#1590;&#1607;&#1606;
+ &#1575;&#1604;&#1604;&#1607; &#1593;&#1586; &#1608;&#1580;&#1604;
+ &#1601;&#1610; &#1575;&#1604;&#1575;&#1587;&#1604;&#1575;&#1605;
+ &#1601;&#1605;&#1606; &#1580;&#1575;&#1569;
+ &#1576;&#1579;&#1604;&#1575;&#1579; &#1604;&#1605;
+ &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
+ &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609;
+ &#1610;&#1571;&#1578;&#1610; &#1576;&#1607;&#1606;
+ &#1580;&#1605;&#1610;&#1593;&#1575;
+ &#1575;&#1604;&#1589;&#1604;&#1575;&#1577;
+ &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
&#1608;&#1589;&#1610;&#1575;&#1605; &#1585;&#1605;&#1590;&#1575;&#1606;
&#1608;&#1581;&#1580; &#1575;&#1604;&#1576;&#1610;&#1578;.
&#1585;&#1608;&#1575;&#1607; &#1575;&#1581;&#1605;&#1583;
@@ -68,26 +79,27 @@
And now as a verbatim paragraph:
</Para>
<VerbatimFormatted start_line="30" xml:space="preserve">
- &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577;
- &#1576;&#1606; &#1581;&#1586;&#1605; &#1602;&#1575;&#1604;
- &#1602;&#1575;&#1604; &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
- &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607; &#1593;&#1604;&#1610;&#1607;
- &#1608;&#1587;&#1604;&#1605;:
-
+ &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577; &#1576;&#1606;
+ &#1581;&#1586;&#1605; &#1602;&#1575;&#1604; &#1602;&#1575;&#1604;
+ &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
+ &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607;
+ &#1593;&#1604;&#1610;&#1607; &#1608;&#1587;&#1604;&#1605;:
&#1575;&#1585;&#1576;&#1593; &#1601;&#1585;&#1590;&#1607;&#1606;
&#1575;&#1604;&#1604;&#1607; &#1593;&#1586; &#1608;&#1580;&#1604;
&#1601;&#1610; &#1575;&#1604;&#1575;&#1587;&#1604;&#1575;&#1605;
- &#1601;&#1605;&#1606; &#1580;&#1575;&#1569; &#1576;&#1579;&#1604;&#1575;&#1579;
- &#1604;&#1605; &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
-
- &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609; &#1610;&#1571;&#1578;&#1610;
- &#1576;&#1607;&#1606; &#1580;&#1605;&#1610;&#1593;&#1575;
- &#1575;&#1604;&#1589;&#1604;&#1575;&#1577; &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
+ &#1601;&#1605;&#1606; &#1580;&#1575;&#1569;
+ &#1576;&#1579;&#1604;&#1575;&#1579; &#1604;&#1605;
+ &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
+ &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609;
+ &#1610;&#1571;&#1578;&#1610; &#1576;&#1607;&#1606;
+ &#1580;&#1605;&#1610;&#1593;&#1575;
+ &#1575;&#1604;&#1589;&#1604;&#1575;&#1577;
+ &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
&#1608;&#1589;&#1610;&#1575;&#1605; &#1585;&#1605;&#1590;&#1575;&#1606;
&#1608;&#1581;&#1580;
-
&#1575;&#1604;&#1576;&#1610;&#1578;. &#1585;&#1608;&#1575;&#1607;
- &#1575;&#1581;&#1605;&#1583; &#1608;&#1575;&#1604;&#1591;&#1576;&#1585;&#1575;&#1606;&#1610;
+ &#1575;&#1581;&#1605;&#1583;
+ &#1608;&#1575;&#1604;&#1591;&#1576;&#1585;&#1575;&#1606;&#1610;
&#1601;&#1610; &#1575;&#1604;&#1603;&#1576;&#1610;&#1585;
&#1608;&#1601;&#1610; &#1575;&#1587;&#1606;&#1575;&#1583;&#1607;
&#1575;&#1576;&#1606; &#1604;&#1607;&#1610;&#1593;&#1577;.
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn01.txt b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn01.txt
new file mode 100644
index 00000000000..550b9c23d89
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn01.txt
@@ -0,0 +1,11 @@
+
+=head1 NAME
+
+Encoding Warning 1 - implicitly Latin-1
+
+=head2 DESCRIPTION
+
+This line should warn that the word café contains a non-ASCII character.
+
+But château should not generate a warning - once is enough.
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn01.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn01.xml
new file mode 100644
index 00000000000..d64d56f55b0
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn01.xml
@@ -0,0 +1,36 @@
+<Document start_line="2">
+ <head1 start_line="2">
+ NAME
+ </head1>
+ <Para start_line="4">
+ Encoding Warning 1 - implicitly Latin-1
+ </Para>
+ <head2 start_line="6">
+ DESCRIPTION
+ </head2>
+ <Para start_line="8">
+ This line should warn that the word caf&#233; contains a non-ASCII
+ character.
+ </Para>
+ <Para start_line="10">
+ But ch&#226;teau should not generate a warning - once is enough.
+ </Para>
+ <head1 errata="1" start_line="-321">
+ POD ERRORS
+ </head1>
+ <Para errata="1" start_line="-321">
+ Hey!
+ <B>
+ The above document had some coding errors, which are explained below:
+ </B>
+ </Para>
+ <over-text errata="1" indent="4" start_line="-321">
+ <item-text start_line="-321">
+ Around line 8:
+ </item-text>
+ <Para start_line="-321">
+ Non-ASCII character seen before =encoding in &#39;caf&#233;&#39;. Assuming
+ ISO8859-1
+ </Para>
+ </over-text>
+</Document>
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn02.txt b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn02.txt
new file mode 100644
index 00000000000..fb1052b6c81
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn02.txt
@@ -0,0 +1,11 @@
+
+=head1 NAME
+
+Encoding Warning 1 - implicitly UTF-8
+
+=head2 DESCRIPTION
+
+This line should warn that the price €9.99 contains a non-ASCII character.
+
+But château should not generate a warning - once is enough.
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn02.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn02.xml
new file mode 100644
index 00000000000..02eeba37c9b
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn02.xml
@@ -0,0 +1,36 @@
+<Document start_line="2">
+ <head1 start_line="2">
+ NAME
+ </head1>
+ <Para start_line="4">
+ Encoding Warning 1 - implicitly UTF-8
+ </Para>
+ <head2 start_line="6">
+ DESCRIPTION
+ </head2>
+ <Para start_line="8">
+ This line should warn that the price &#8364;9.99 contains a non-ASCII
+ character.
+ </Para>
+ <Para start_line="10">
+ But ch&#226;teau should not generate a warning - once is enough.
+ </Para>
+ <head1 errata="1" start_line="-321">
+ POD ERRORS
+ </head1>
+ <Para errata="1" start_line="-321">
+ Hey!
+ <B>
+ The above document had some coding errors, which are explained below:
+ </B>
+ </Para>
+ <over-text errata="1" indent="4" start_line="-321">
+ <item-text start_line="-321">
+ Around line 8:
+ </item-text>
+ <Para start_line="-321">
+ Non-ASCII character seen before =encoding in &#39;&#8364;9.99&#39;.
+ Assuming UTF-8
+ </Para>
+ </over-text>
+</Document>
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn03.txt b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn03.txt
new file mode 100644
index 00000000000..e3e8b94734f
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn03.txt
@@ -0,0 +1,12 @@
+package MyPackage;
+
+use strict;
+
+# Comment here contains Äccénted characters but should not generate any
+# parse warning since they do not occur in a POD section
+
+sub main {
+ print "This file contains no POD\n";
+}
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn03.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn03.xml
new file mode 100644
index 00000000000..7b4e3ed547c
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn03.xml
@@ -0,0 +1,2 @@
+<Document contentless="1" start_line="12">
+</Document>
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn04.txt b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn04.txt
new file mode 100644
index 00000000000..8b0ff5dc308
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn04.txt
@@ -0,0 +1,17 @@
+package MyPackage;
+
+use strict;
+
+# Checking encoding warning is generated even on first line of POD
+
+sub main {
+ print "This file contains no POD\n";
+}
+
+1;
+
+=head1 TŨTORIAL
+
+The encoding warning should only fire when the parser is 'in_pod' but that
+should also be true on the first line of POD (above).
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn04.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn04.xml
new file mode 100644
index 00000000000..9e849c1b8ab
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/encwarn04.xml
@@ -0,0 +1,27 @@
+<Document start_line="13">
+ <head1 start_line="13">
+ T&#360;TORIAL
+ </head1>
+ <Para start_line="15">
+ The encoding warning should only fire when the parser is &#39;in_pod&#39;
+ but that should also be true on the first line of POD (above).
+ </Para>
+ <head1 errata="1" start_line="-321">
+ POD ERRORS
+ </head1>
+ <Para errata="1" start_line="-321">
+ Hey!
+ <B>
+ The above document had some coding errors, which are explained below:
+ </B>
+ </Para>
+ <over-text errata="1" indent="4" start_line="-321">
+ <item-text start_line="-321">
+ Around line 13:
+ </item-text>
+ <Para start_line="-321">
+ Non-ASCII character seen before =encoding in &#39;T&#360;TORIAL&#39;.
+ Assuming UTF-8
+ </Para>
+ </over-text>
+</Document>
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/fet_cont.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/fet_cont.xml
index 4f4995f925c..a5842696530 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/fet_cont.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/fet_cont.xml
@@ -1,16 +1,23 @@
<Document start_line="5">
+ <encoding start_line="5">
+ koi8-r
+ </encoding>
<head1 start_line="7">
NAME
</head1>
<Para start_line="9">
- &#1050;&#1086;&#1075;&#1076;&#1072; &#1095;&#1080;&#1090;&#1072;&#1083;&#1072;
- &#1090;&#1099; &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
- &#1089;&#1090;&#1088;&#1086;&#1082;&#1080; -- Fet&#39;s
- &#34;When you were reading&#34;
+ &#1050;&#1086;&#1075;&#1076;&#1072;
+ &#1095;&#1080;&#1090;&#1072;&#1083;&#1072; &#1090;&#1099;
+ &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
+ &#1089;&#1090;&#1088;&#1086;&#1082;&#1080; -- Fet&#39;s &#34;When you
+ were reading&#34;
</Para>
<head1 start_line="11">
TEXT
</head1>
+ <encoding start_line="13">
+ Shift-JIS
+ </encoding>
<Para start_line="15">
(This is a test Pod pocument in KOI8-R.)
</Para>
@@ -26,8 +33,7 @@
<Para errata="1" start_line="-321">
Hey!
<B>
- The above document had some coding errors, which are explained
- below:
+ The above document had some coding errors, which are explained below:
</B>
</Para>
<over-text errata="1" indent="4" start_line="-321">
@@ -35,8 +41,7 @@
Around line 13:
</item-text>
<Para start_line="-321">
- Couldn&#39;t do =encoding Shift-JIS: Encoding is already
- set to koi8-r
+ Couldn&#39;t do =encoding Shift-JIS: Encoding is already set to koi8-r
</Para>
</over-text>
</Document>
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/fet_dup.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/fet_dup.xml
index c33277deb04..11e8a9af180 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/fet_dup.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/fet_dup.xml
@@ -1,12 +1,16 @@
<Document start_line="5">
+ <encoding start_line="5">
+ koi8-r
+ </encoding>
<head1 start_line="7">
NAME
</head1>
<Para start_line="9">
- &#1050;&#1086;&#1075;&#1076;&#1072; &#1095;&#1080;&#1090;&#1072;&#1083;&#1072;
- &#1090;&#1099; &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
- &#1089;&#1090;&#1088;&#1086;&#1082;&#1080; -- Fet&#39;s
- &#34;When you were reading&#34;
+ &#1050;&#1086;&#1075;&#1076;&#1072;
+ &#1095;&#1080;&#1090;&#1072;&#1083;&#1072; &#1090;&#1099;
+ &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
+ &#1089;&#1090;&#1088;&#1086;&#1082;&#1080; -- Fet&#39;s &#34;When you
+ were reading&#34;
</Para>
<head1 start_line="11">
TEXT
@@ -15,14 +19,17 @@
(This is a test Pod pocument in KOI8-R.)
</Para>
<Para start_line="15">
- &#1050;&#1086;&#1075;&#1076;&#1072; &#1095;&#1080;&#1090;&#1072;&#1083;&#1072;
- &#1090;&#1099; &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
+ &#1050;&#1086;&#1075;&#1076;&#1072;
+ &#1095;&#1080;&#1090;&#1072;&#1083;&#1072; &#1090;&#1099;
+ &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
&#1089;&#1090;&#1088;&#1086;&#1082;&#1080;, / &#1043;&#1076;&#1077;
- &#1089;&#1077;&#1088;&#1076;&#1094;&#1072; &#1079;&#1074;&#1091;&#1095;&#1085;&#1099;&#1081;
- &#1087;&#1099;&#1083; &#1089;&#1080;&#1103;&#1085;&#1100;&#1077;
- &#1083;&#1100;&#1077;&#1090; &#1082;&#1088;&#1091;&#1075;&#1086;&#1084;
- / &#1048; &#1089;&#1090;&#1088;&#1072;&#1089;&#1090;&#1080;
- &#1088;&#1086;&#1082;&#1086;&#1074;&#1086;&#1081; &#1074;&#1079;&#1076;&#1099;&#1084;&#1072;&#1102;&#1090;&#1089;&#1103;
+ &#1089;&#1077;&#1088;&#1076;&#1094;&#1072;
+ &#1079;&#1074;&#1091;&#1095;&#1085;&#1099;&#1081; &#1087;&#1099;&#1083;
+ &#1089;&#1080;&#1103;&#1085;&#1100;&#1077; &#1083;&#1100;&#1077;&#1090;
+ &#1082;&#1088;&#1091;&#1075;&#1086;&#1084; / &#1048;
+ &#1089;&#1090;&#1088;&#1072;&#1089;&#1090;&#1080;
+ &#1088;&#1086;&#1082;&#1086;&#1074;&#1086;&#1081;
+ &#1074;&#1079;&#1076;&#1099;&#1084;&#1072;&#1102;&#1090;&#1089;&#1103;
&#1087;&#1086;&#1090;&#1086;&#1082;&#1080;,- / &#1053;&#1077;
&#1074;&#1089;&#1087;&#1086;&#1084;&#1085;&#1080;&#1083;&#1072;
&#1083;&#1100; &#1086; &#1095;&#1077;&#1084;?
@@ -31,26 +38,33 @@
&#1071; &#1074;&#1077;&#1088;&#1080;&#1090;&#1100; &#1085;&#1077;
&#1093;&#1086;&#1095;&#1091;! &#1050;&#1086;&#1075;&#1076;&#1072;
&#1074; &#1089;&#1090;&#1077;&#1087;&#1080;, &#1082;&#1072;&#1082;
- &#1076;&#1080;&#1074;&#1086;, / &#1042; &#1087;&#1086;&#1083;&#1085;&#1086;&#1095;&#1085;&#1086;&#1081;
- &#1090;&#1077;&#1084;&#1085;&#1086;&#1090;&#1077; &#1073;&#1077;&#1079;&#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;
+ &#1076;&#1080;&#1074;&#1086;, / &#1042;
+ &#1087;&#1086;&#1083;&#1085;&#1086;&#1095;&#1085;&#1086;&#1081;
+ &#1090;&#1077;&#1084;&#1085;&#1086;&#1090;&#1077;
+ &#1073;&#1077;&#1079;&#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;
&#1075;&#1086;&#1088;&#1103;, / &#1042;&#1076;&#1072;&#1083;&#1080;
&#1087;&#1077;&#1088;&#1077;&#1076; &#1090;&#1086;&#1073;&#1086;&#1081;
- &#1087;&#1088;&#1086;&#1079;&#1088;&#1072;&#1095;&#1085;&#1086;
- &#1080; &#1082;&#1088;&#1072;&#1089;&#1080;&#1074;&#1086;
- / &#1042;&#1089;&#1090;&#1072;&#1074;&#1072;&#1083;&#1072;
+ &#1087;&#1088;&#1086;&#1079;&#1088;&#1072;&#1095;&#1085;&#1086; &#1080;
+ &#1082;&#1088;&#1072;&#1089;&#1080;&#1074;&#1086; /
+ &#1042;&#1089;&#1090;&#1072;&#1074;&#1072;&#1083;&#1072;
&#1074;&#1076;&#1088;&#1091;&#1075;&#1079;&#1072;&#1088;&#1103;.
</Para>
<Para start_line="25">
- &#1048; &#1074; &#1101;&#1090;&#1091; &#1082;&#1088;&#1072;&#1089;&#1086;&#1090;&#1091;
+ &#1048; &#1074; &#1101;&#1090;&#1091;
+ &#1082;&#1088;&#1072;&#1089;&#1086;&#1090;&#1091;
&#1085;&#1077;&#1074;&#1086;&#1083;&#1100;&#1085;&#1086;
- &#1074;&#1079;&#1086;&#1088; &#1090;&#1103;&#1085;&#1091;&#1083;&#1086;,
- / &#1042; &#1090;&#1086;&#1090; &#1074;&#1077;&#1083;&#1080;&#1095;&#1072;&#1074;&#1099;&#1081;
- &#1073;&#1083;&#1077;&#1089;&#1082; &#1079;&#1072; &#1090;&#1077;&#1084;&#1085;&#1099;&#1081;
- &#1074;&#1077;&#1089;&#1100; &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;,-
- / &#1059;&#1078;&#1077;&#1083;&#1100; &#1085;&#1080;&#1095;&#1090;&#1086;
- &#1090;&#1077;&#1073;&#1077; &#1074; &#1090;&#1086; &#1074;&#1088;&#1077;&#1084;&#1103;
- &#1085;&#1077; &#1096;&#1077;&#1087;&#1085;&#1091;&#1083;&#1086;:
- / &#1058;&#1072;&#1084; &#1095;&#1077;&#1083;&#1086;&#1074;&#1077;&#1082;
+ &#1074;&#1079;&#1086;&#1088;
+ &#1090;&#1103;&#1085;&#1091;&#1083;&#1086;, / &#1042;
+ &#1090;&#1086;&#1090;
+ &#1074;&#1077;&#1083;&#1080;&#1095;&#1072;&#1074;&#1099;&#1081;
+ &#1073;&#1083;&#1077;&#1089;&#1082; &#1079;&#1072;
+ &#1090;&#1077;&#1084;&#1085;&#1099;&#1081; &#1074;&#1077;&#1089;&#1100;
+ &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;,- /
+ &#1059;&#1078;&#1077;&#1083;&#1100; &#1085;&#1080;&#1095;&#1090;&#1086;
+ &#1090;&#1077;&#1073;&#1077; &#1074; &#1090;&#1086;
+ &#1074;&#1088;&#1077;&#1084;&#1103; &#1085;&#1077;
+ &#1096;&#1077;&#1087;&#1085;&#1091;&#1083;&#1086;: /
+ &#1058;&#1072;&#1084; &#1095;&#1077;&#1083;&#1086;&#1074;&#1077;&#1082;
&#1089;&#1075;&#1086;&#1088;&#1077;&#1083;!
</Para>
<Para start_line="30">
@@ -60,60 +74,61 @@
And now, as a verbatim section:
</Para>
<VerbatimFormatted start_line="34" xml:space="preserve">
- &#1050;&#1086;&#1075;&#1076;&#1072; &#1095;&#1080;&#1090;&#1072;&#1083;&#1072;
- &#1090;&#1099; &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
+ &#1050;&#1086;&#1075;&#1076;&#1072;
+ &#1095;&#1080;&#1090;&#1072;&#1083;&#1072; &#1090;&#1099;
+ &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
&#1089;&#1090;&#1088;&#1086;&#1082;&#1080;,
-
&#1043;&#1076;&#1077; &#1089;&#1077;&#1088;&#1076;&#1094;&#1072;
&#1079;&#1074;&#1091;&#1095;&#1085;&#1099;&#1081; &#1087;&#1099;&#1083;
&#1089;&#1080;&#1103;&#1085;&#1100;&#1077; &#1083;&#1100;&#1077;&#1090;
&#1082;&#1088;&#1091;&#1075;&#1086;&#1084;
-
&#1048; &#1089;&#1090;&#1088;&#1072;&#1089;&#1090;&#1080;
- &#1088;&#1086;&#1082;&#1086;&#1074;&#1086;&#1081; &#1074;&#1079;&#1076;&#1099;&#1084;&#1072;&#1102;&#1090;&#1089;&#1103;
+ &#1088;&#1086;&#1082;&#1086;&#1074;&#1086;&#1081;
+ &#1074;&#1079;&#1076;&#1099;&#1084;&#1072;&#1102;&#1090;&#1089;&#1103;
&#1087;&#1086;&#1090;&#1086;&#1082;&#1080;,-
-
- &#1053;&#1077; &#1074;&#1089;&#1087;&#1086;&#1084;&#1085;&#1080;&#1083;&#1072;
+ &#1053;&#1077;
+ &#1074;&#1089;&#1087;&#1086;&#1084;&#1085;&#1080;&#1083;&#1072;
&#1083;&#1100; &#1086; &#1095;&#1077;&#1084;?
-
-
-
+
&#1071; &#1074;&#1077;&#1088;&#1080;&#1090;&#1100; &#1085;&#1077;
&#1093;&#1086;&#1095;&#1091;! &#1050;&#1086;&#1075;&#1076;&#1072;
&#1074; &#1089;&#1090;&#1077;&#1087;&#1080;, &#1082;&#1072;&#1082;
&#1076;&#1080;&#1074;&#1086;,
-
- &#1042; &#1087;&#1086;&#1083;&#1085;&#1086;&#1095;&#1085;&#1086;&#1081;
- &#1090;&#1077;&#1084;&#1085;&#1086;&#1090;&#1077; &#1073;&#1077;&#1079;&#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;
+ &#1042;
+ &#1087;&#1086;&#1083;&#1085;&#1086;&#1095;&#1085;&#1086;&#1081;
+ &#1090;&#1077;&#1084;&#1085;&#1086;&#1090;&#1077;
+ &#1073;&#1077;&#1079;&#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;
&#1075;&#1086;&#1088;&#1103;,
-
- &#1042;&#1076;&#1072;&#1083;&#1080; &#1087;&#1077;&#1088;&#1077;&#1076;
- &#1090;&#1086;&#1073;&#1086;&#1081; &#1087;&#1088;&#1086;&#1079;&#1088;&#1072;&#1095;&#1085;&#1086;
- &#1080; &#1082;&#1088;&#1072;&#1089;&#1080;&#1074;&#1086;
-
- &#1042;&#1089;&#1090;&#1072;&#1074;&#1072;&#1083;&#1072;
+ &#1042;&#1076;&#1072;&#1083;&#1080;
+ &#1087;&#1077;&#1088;&#1077;&#1076; &#1090;&#1086;&#1073;&#1086;&#1081;
+ &#1087;&#1088;&#1086;&#1079;&#1088;&#1072;&#1095;&#1085;&#1086; &#1080;
+ &#1082;&#1088;&#1072;&#1089;&#1080;&#1074;&#1086;
+ &#1042;&#1089;&#1090;&#1072;&#1074;&#1072;&#1083;&#1072;
&#1074;&#1076;&#1088;&#1091;&#1075;&#1079;&#1072;&#1088;&#1103;.
</VerbatimFormatted>
+ <encoding start_line="44">
+ koi8-r
+ </encoding>
<VerbatimFormatted start_line="46" xml:space="preserve">
- &#1048; &#1074; &#1101;&#1090;&#1091; &#1082;&#1088;&#1072;&#1089;&#1086;&#1090;&#1091;
+ &#1048; &#1074; &#1101;&#1090;&#1091;
+ &#1082;&#1088;&#1072;&#1089;&#1086;&#1090;&#1091;
&#1085;&#1077;&#1074;&#1086;&#1083;&#1100;&#1085;&#1086;
- &#1074;&#1079;&#1086;&#1088; &#1090;&#1103;&#1085;&#1091;&#1083;&#1086;,
-
- &#1042; &#1090;&#1086;&#1090; &#1074;&#1077;&#1083;&#1080;&#1095;&#1072;&#1074;&#1099;&#1081;
- &#1073;&#1083;&#1077;&#1089;&#1082; &#1079;&#1072; &#1090;&#1077;&#1084;&#1085;&#1099;&#1081;
- &#1074;&#1077;&#1089;&#1100; &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;,-
-
- &#1059;&#1078;&#1077;&#1083;&#1100; &#1085;&#1080;&#1095;&#1090;&#1086;
- &#1090;&#1077;&#1073;&#1077; &#1074; &#1090;&#1086; &#1074;&#1088;&#1077;&#1084;&#1103;
+ &#1074;&#1079;&#1086;&#1088;
+ &#1090;&#1103;&#1085;&#1091;&#1083;&#1086;,
+ &#1042; &#1090;&#1086;&#1090;
+ &#1074;&#1077;&#1083;&#1080;&#1095;&#1072;&#1074;&#1099;&#1081;
+ &#1073;&#1083;&#1077;&#1089;&#1082; &#1079;&#1072;
+ &#1090;&#1077;&#1084;&#1085;&#1099;&#1081; &#1074;&#1077;&#1089;&#1100;
+ &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;,-
+ &#1059;&#1078;&#1077;&#1083;&#1100;
+ &#1085;&#1080;&#1095;&#1090;&#1086; &#1090;&#1077;&#1073;&#1077;
+ &#1074; &#1090;&#1086; &#1074;&#1088;&#1077;&#1084;&#1103;
&#1085;&#1077; &#1096;&#1077;&#1087;&#1085;&#1091;&#1083;&#1086;:
-
- &#1058;&#1072;&#1084; &#1095;&#1077;&#1083;&#1086;&#1074;&#1077;&#1082;
+ &#1058;&#1072;&#1084;
+ &#1095;&#1077;&#1083;&#1086;&#1074;&#1077;&#1082;
&#1089;&#1075;&#1086;&#1088;&#1077;&#1083;!
-
-
- 15 &#1092;&#1077;&#1074;&#1088;&#1072;&#1083;&#1103;
- 1887
+ 15 &#1092;&#1077;&#1074;&#1088;&#1072;&#1083;&#1103; 1887
</VerbatimFormatted>
<Para start_line="53">
[end]
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/iso6.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/iso6.xml
index b597324087a..0619c067644 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/iso6.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/iso6.xml
@@ -3,40 +3,46 @@
NAME
</head1>
<Para start_line="4">
- buniya-iso-6 -- test document: a paragraph in Arabic as
- ISO-8859-6
+ buniya-iso-6 -- test document: a paragraph in Arabic as ISO-8859-6
</Para>
<head1 start_line="6">
DESCRIPTION
</head1>
<Para start_line="8">
- This document is a paragraph in Arabic from &#34;The Five
- Pillars of Islam&#34; as ISO-8859-6.
+ This document is a paragraph in Arabic from &#34;The Five Pillars of
+ Islam&#34; as ISO-8859-6.
</Para>
+ <encoding start_line="11">
+ iso-8859-6
+ </encoding>
<Para start_line="13">
- &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577;
- &#1576;&#1606; &#1581;&#1586;&#1605; &#1602;&#1575;&#1604;
- &#1602;&#1575;&#1604; &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
- &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607; &#1593;&#1604;&#1610;&#1607;
- &#1608;&#1587;&#1604;&#1605;:
+ &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577; &#1576;&#1606;
+ &#1581;&#1586;&#1605; &#1602;&#1575;&#1604; &#1602;&#1575;&#1604;
+ &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
+ &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607;
+ &#1593;&#1604;&#1610;&#1607; &#1608;&#1587;&#1604;&#1605;:
</Para>
<Para start_line="15">
&#1575;&#1585;&#1576;&#1593; &#1601;&#1585;&#1590;&#1607;&#1606;
&#1575;&#1604;&#1604;&#1607; &#1593;&#1586; &#1608;&#1580;&#1604;
&#1601;&#1610; &#1575;&#1604;&#1575;&#1587;&#1604;&#1575;&#1605;
- &#1601;&#1605;&#1606; &#1580;&#1575;&#1569; &#1576;&#1579;&#1604;&#1575;&#1579;
- &#1604;&#1605; &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
+ &#1601;&#1605;&#1606; &#1580;&#1575;&#1569;
+ &#1576;&#1579;&#1604;&#1575;&#1579; &#1604;&#1605;
+ &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
</Para>
<Para start_line="17">
- &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609; &#1610;&#1571;&#1578;&#1610;
- &#1576;&#1607;&#1606; &#1580;&#1605;&#1610;&#1593;&#1575;
- &#1575;&#1604;&#1589;&#1604;&#1575;&#1577; &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
+ &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609;
+ &#1610;&#1571;&#1578;&#1610; &#1576;&#1607;&#1606;
+ &#1580;&#1605;&#1610;&#1593;&#1575;
+ &#1575;&#1604;&#1589;&#1604;&#1575;&#1577;
+ &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
&#1608;&#1589;&#1610;&#1575;&#1605; &#1585;&#1605;&#1590;&#1575;&#1606;
&#1608;&#1581;&#1580;
</Para>
<Para start_line="19">
&#1575;&#1604;&#1576;&#1610;&#1578;. &#1585;&#1608;&#1575;&#1607;
- &#1575;&#1581;&#1605;&#1583; &#1608;&#1575;&#1604;&#1591;&#1576;&#1585;&#1575;&#1606;&#1610;
+ &#1575;&#1581;&#1605;&#1583;
+ &#1608;&#1575;&#1604;&#1591;&#1576;&#1585;&#1575;&#1606;&#1610;
&#1601;&#1610; &#1575;&#1604;&#1603;&#1576;&#1610;&#1585;
&#1608;&#1601;&#1610; &#1575;&#1587;&#1606;&#1575;&#1583;&#1607;
&#1575;&#1576;&#1606; &#1604;&#1607;&#1610;&#1593;&#1577;.
@@ -45,18 +51,22 @@
And now as a real single paragraph:
</Para>
<Para start_line="23">
- &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577;
- &#1576;&#1606; &#1581;&#1586;&#1605; &#1602;&#1575;&#1604;
- &#1602;&#1575;&#1604; &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
- &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607; &#1593;&#1604;&#1610;&#1607;
- &#1608;&#1587;&#1604;&#1605;: &#1575;&#1585;&#1576;&#1593;
- &#1601;&#1585;&#1590;&#1607;&#1606; &#1575;&#1604;&#1604;&#1607;
- &#1593;&#1586; &#1608;&#1580;&#1604; &#1601;&#1610; &#1575;&#1604;&#1575;&#1587;&#1604;&#1575;&#1605;
- &#1601;&#1605;&#1606; &#1580;&#1575;&#1569; &#1576;&#1579;&#1604;&#1575;&#1579;
- &#1604;&#1605; &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
- &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609; &#1610;&#1571;&#1578;&#1610;
- &#1576;&#1607;&#1606; &#1580;&#1605;&#1610;&#1593;&#1575;
- &#1575;&#1604;&#1589;&#1604;&#1575;&#1577; &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
+ &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577; &#1576;&#1606;
+ &#1581;&#1586;&#1605; &#1602;&#1575;&#1604; &#1602;&#1575;&#1604;
+ &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
+ &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607;
+ &#1593;&#1604;&#1610;&#1607; &#1608;&#1587;&#1604;&#1605;:
+ &#1575;&#1585;&#1576;&#1593; &#1601;&#1585;&#1590;&#1607;&#1606;
+ &#1575;&#1604;&#1604;&#1607; &#1593;&#1586; &#1608;&#1580;&#1604;
+ &#1601;&#1610; &#1575;&#1604;&#1575;&#1587;&#1604;&#1575;&#1605;
+ &#1601;&#1605;&#1606; &#1580;&#1575;&#1569;
+ &#1576;&#1579;&#1604;&#1575;&#1579; &#1604;&#1605;
+ &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
+ &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609;
+ &#1610;&#1571;&#1578;&#1610; &#1576;&#1607;&#1606;
+ &#1580;&#1605;&#1610;&#1593;&#1575;
+ &#1575;&#1604;&#1589;&#1604;&#1575;&#1577;
+ &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
&#1608;&#1589;&#1610;&#1575;&#1605; &#1585;&#1605;&#1590;&#1575;&#1606;
&#1608;&#1581;&#1580; &#1575;&#1604;&#1576;&#1610;&#1578;.
&#1585;&#1608;&#1575;&#1607; &#1575;&#1581;&#1605;&#1583;
@@ -69,30 +79,30 @@
And now as a verbatim paragraph:
</Para>
<VerbatimFormatted start_line="30" xml:space="preserve">
- &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577;
- &#1576;&#1606; &#1581;&#1586;&#1605; &#1602;&#1575;&#1604;
- &#1602;&#1575;&#1604; &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
- &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607; &#1593;&#1604;&#1610;&#1607;
- &#1608;&#1587;&#1604;&#1605;:
-
+ &#1608;&#1593;&#1606; &#1593;&#1605;&#1575;&#1585;&#1577; &#1576;&#1606;
+ &#1581;&#1586;&#1605; &#1602;&#1575;&#1604; &#1602;&#1575;&#1604;
+ &#1585;&#1587;&#1608;&#1604; &#1575;&#1604;&#1604;&#1607;
+ &#1589;&#1604;&#1609; &#1575;&#1604;&#1604;&#1607;
+ &#1593;&#1604;&#1610;&#1607; &#1608;&#1587;&#1604;&#1605;:
&#1575;&#1585;&#1576;&#1593; &#1601;&#1585;&#1590;&#1607;&#1606;
&#1575;&#1604;&#1604;&#1607; &#1593;&#1586; &#1608;&#1580;&#1604;
&#1601;&#1610; &#1575;&#1604;&#1575;&#1587;&#1604;&#1575;&#1605;
- &#1601;&#1605;&#1606; &#1580;&#1575;&#1569; &#1576;&#1579;&#1604;&#1575;&#1579;
- &#1604;&#1605; &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
-
- &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609; &#1610;&#1571;&#1578;&#1610;
- &#1576;&#1607;&#1606; &#1580;&#1605;&#1610;&#1593;&#1575;
- &#1575;&#1604;&#1589;&#1604;&#1575;&#1577; &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
+ &#1601;&#1605;&#1606; &#1580;&#1575;&#1569;
+ &#1576;&#1579;&#1604;&#1575;&#1579; &#1604;&#1605;
+ &#1610;&#1594;&#1606;&#1610;&#1606; &#1593;&#1606;&#1607;
+ &#1588;&#1610;&#1574;&#1575; &#1581;&#1578;&#1609;
+ &#1610;&#1571;&#1578;&#1610; &#1576;&#1607;&#1606;
+ &#1580;&#1605;&#1610;&#1593;&#1575;
+ &#1575;&#1604;&#1589;&#1604;&#1575;&#1577;
+ &#1608;&#1575;&#1604;&#1586;&#1603;&#1575;&#1577;
&#1608;&#1589;&#1610;&#1575;&#1605; &#1585;&#1605;&#1590;&#1575;&#1606;
&#1608;&#1581;&#1580;
-
&#1575;&#1604;&#1576;&#1610;&#1578;. &#1585;&#1608;&#1575;&#1607;
- &#1575;&#1581;&#1605;&#1583; &#1608;&#1575;&#1604;&#1591;&#1576;&#1585;&#1575;&#1606;&#1610;
+ &#1575;&#1581;&#1605;&#1583;
+ &#1608;&#1575;&#1604;&#1591;&#1576;&#1585;&#1575;&#1606;&#1610;
&#1601;&#1610; &#1575;&#1604;&#1603;&#1576;&#1610;&#1585;
&#1608;&#1601;&#1610; &#1575;&#1587;&#1606;&#1575;&#1583;&#1607;
- &#1575;&#1576;&#1606; &#1604;&#1607;&#1610;&#1593;&#1577;.
-
+ &#1575;&#1576;&#1606; &#1604;&#1607;&#1610;&#1593;&#1577;.
</VerbatimFormatted>
<Para start_line="35">
[end]
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/koi8r.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/koi8r.xml
index 94331d7e4d7..4fe0b5c823b 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/koi8r.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/koi8r.xml
@@ -1,12 +1,16 @@
<Document start_line="2">
+ <encoding start_line="2">
+ koi8-r
+ </encoding>
<head1 start_line="4">
NAME
</head1>
<Para start_line="6">
- &#1050;&#1086;&#1075;&#1076;&#1072; &#1095;&#1080;&#1090;&#1072;&#1083;&#1072;
- &#1090;&#1099; &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
- &#1089;&#1090;&#1088;&#1086;&#1082;&#1080; -- Fet&#39;s
- &#34;When you were reading&#34;
+ &#1050;&#1086;&#1075;&#1076;&#1072;
+ &#1095;&#1080;&#1090;&#1072;&#1083;&#1072; &#1090;&#1099;
+ &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
+ &#1089;&#1090;&#1088;&#1086;&#1082;&#1080; -- Fet&#39;s &#34;When you
+ were reading&#34;
</Para>
<head1 start_line="8">
TEXT
@@ -15,14 +19,17 @@
(This is a test Pod pocument in KOI8-R.)
</Para>
<Para start_line="12">
- &#1050;&#1086;&#1075;&#1076;&#1072; &#1095;&#1080;&#1090;&#1072;&#1083;&#1072;
- &#1090;&#1099; &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
+ &#1050;&#1086;&#1075;&#1076;&#1072;
+ &#1095;&#1080;&#1090;&#1072;&#1083;&#1072; &#1090;&#1099;
+ &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
&#1089;&#1090;&#1088;&#1086;&#1082;&#1080;, / &#1043;&#1076;&#1077;
- &#1089;&#1077;&#1088;&#1076;&#1094;&#1072; &#1079;&#1074;&#1091;&#1095;&#1085;&#1099;&#1081;
- &#1087;&#1099;&#1083; &#1089;&#1080;&#1103;&#1085;&#1100;&#1077;
- &#1083;&#1100;&#1077;&#1090; &#1082;&#1088;&#1091;&#1075;&#1086;&#1084;
- / &#1048; &#1089;&#1090;&#1088;&#1072;&#1089;&#1090;&#1080;
- &#1088;&#1086;&#1082;&#1086;&#1074;&#1086;&#1081; &#1074;&#1079;&#1076;&#1099;&#1084;&#1072;&#1102;&#1090;&#1089;&#1103;
+ &#1089;&#1077;&#1088;&#1076;&#1094;&#1072;
+ &#1079;&#1074;&#1091;&#1095;&#1085;&#1099;&#1081; &#1087;&#1099;&#1083;
+ &#1089;&#1080;&#1103;&#1085;&#1100;&#1077; &#1083;&#1100;&#1077;&#1090;
+ &#1082;&#1088;&#1091;&#1075;&#1086;&#1084; / &#1048;
+ &#1089;&#1090;&#1088;&#1072;&#1089;&#1090;&#1080;
+ &#1088;&#1086;&#1082;&#1086;&#1074;&#1086;&#1081;
+ &#1074;&#1079;&#1076;&#1099;&#1084;&#1072;&#1102;&#1090;&#1089;&#1103;
&#1087;&#1086;&#1090;&#1086;&#1082;&#1080;,- / &#1053;&#1077;
&#1074;&#1089;&#1087;&#1086;&#1084;&#1085;&#1080;&#1083;&#1072;
&#1083;&#1100; &#1086; &#1095;&#1077;&#1084;?
@@ -31,26 +38,33 @@
&#1071; &#1074;&#1077;&#1088;&#1080;&#1090;&#1100; &#1085;&#1077;
&#1093;&#1086;&#1095;&#1091;! &#1050;&#1086;&#1075;&#1076;&#1072;
&#1074; &#1089;&#1090;&#1077;&#1087;&#1080;, &#1082;&#1072;&#1082;
- &#1076;&#1080;&#1074;&#1086;, / &#1042; &#1087;&#1086;&#1083;&#1085;&#1086;&#1095;&#1085;&#1086;&#1081;
- &#1090;&#1077;&#1084;&#1085;&#1086;&#1090;&#1077; &#1073;&#1077;&#1079;&#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;
+ &#1076;&#1080;&#1074;&#1086;, / &#1042;
+ &#1087;&#1086;&#1083;&#1085;&#1086;&#1095;&#1085;&#1086;&#1081;
+ &#1090;&#1077;&#1084;&#1085;&#1086;&#1090;&#1077;
+ &#1073;&#1077;&#1079;&#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;
&#1075;&#1086;&#1088;&#1103;, / &#1042;&#1076;&#1072;&#1083;&#1080;
&#1087;&#1077;&#1088;&#1077;&#1076; &#1090;&#1086;&#1073;&#1086;&#1081;
- &#1087;&#1088;&#1086;&#1079;&#1088;&#1072;&#1095;&#1085;&#1086;
- &#1080; &#1082;&#1088;&#1072;&#1089;&#1080;&#1074;&#1086;
- / &#1042;&#1089;&#1090;&#1072;&#1074;&#1072;&#1083;&#1072;
+ &#1087;&#1088;&#1086;&#1079;&#1088;&#1072;&#1095;&#1085;&#1086; &#1080;
+ &#1082;&#1088;&#1072;&#1089;&#1080;&#1074;&#1086; /
+ &#1042;&#1089;&#1090;&#1072;&#1074;&#1072;&#1083;&#1072;
&#1074;&#1076;&#1088;&#1091;&#1075;&#1079;&#1072;&#1088;&#1103;.
</Para>
<Para start_line="22">
- &#1048; &#1074; &#1101;&#1090;&#1091; &#1082;&#1088;&#1072;&#1089;&#1086;&#1090;&#1091;
+ &#1048; &#1074; &#1101;&#1090;&#1091;
+ &#1082;&#1088;&#1072;&#1089;&#1086;&#1090;&#1091;
&#1085;&#1077;&#1074;&#1086;&#1083;&#1100;&#1085;&#1086;
- &#1074;&#1079;&#1086;&#1088; &#1090;&#1103;&#1085;&#1091;&#1083;&#1086;,
- / &#1042; &#1090;&#1086;&#1090; &#1074;&#1077;&#1083;&#1080;&#1095;&#1072;&#1074;&#1099;&#1081;
- &#1073;&#1083;&#1077;&#1089;&#1082; &#1079;&#1072; &#1090;&#1077;&#1084;&#1085;&#1099;&#1081;
- &#1074;&#1077;&#1089;&#1100; &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;,-
- / &#1059;&#1078;&#1077;&#1083;&#1100; &#1085;&#1080;&#1095;&#1090;&#1086;
- &#1090;&#1077;&#1073;&#1077; &#1074; &#1090;&#1086; &#1074;&#1088;&#1077;&#1084;&#1103;
- &#1085;&#1077; &#1096;&#1077;&#1087;&#1085;&#1091;&#1083;&#1086;:
- / &#1058;&#1072;&#1084; &#1095;&#1077;&#1083;&#1086;&#1074;&#1077;&#1082;
+ &#1074;&#1079;&#1086;&#1088;
+ &#1090;&#1103;&#1085;&#1091;&#1083;&#1086;, / &#1042;
+ &#1090;&#1086;&#1090;
+ &#1074;&#1077;&#1083;&#1080;&#1095;&#1072;&#1074;&#1099;&#1081;
+ &#1073;&#1083;&#1077;&#1089;&#1082; &#1079;&#1072;
+ &#1090;&#1077;&#1084;&#1085;&#1099;&#1081; &#1074;&#1077;&#1089;&#1100;
+ &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;,- /
+ &#1059;&#1078;&#1077;&#1083;&#1100; &#1085;&#1080;&#1095;&#1090;&#1086;
+ &#1090;&#1077;&#1073;&#1077; &#1074; &#1090;&#1086;
+ &#1074;&#1088;&#1077;&#1084;&#1103; &#1085;&#1077;
+ &#1096;&#1077;&#1087;&#1085;&#1091;&#1083;&#1086;: /
+ &#1058;&#1072;&#1084; &#1095;&#1077;&#1083;&#1086;&#1074;&#1077;&#1082;
&#1089;&#1075;&#1086;&#1088;&#1077;&#1083;!
</Para>
<Para start_line="27">
@@ -60,61 +74,57 @@
And now, as a verbatim section:
</Para>
<VerbatimFormatted start_line="31" xml:space="preserve">
- &#1050;&#1086;&#1075;&#1076;&#1072; &#1095;&#1080;&#1090;&#1072;&#1083;&#1072;
- &#1090;&#1099; &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
+ &#1050;&#1086;&#1075;&#1076;&#1072;
+ &#1095;&#1080;&#1090;&#1072;&#1083;&#1072; &#1090;&#1099;
+ &#1084;&#1091;&#1095;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077;
&#1089;&#1090;&#1088;&#1086;&#1082;&#1080;,
-
&#1043;&#1076;&#1077; &#1089;&#1077;&#1088;&#1076;&#1094;&#1072;
&#1079;&#1074;&#1091;&#1095;&#1085;&#1099;&#1081; &#1087;&#1099;&#1083;
&#1089;&#1080;&#1103;&#1085;&#1100;&#1077; &#1083;&#1100;&#1077;&#1090;
&#1082;&#1088;&#1091;&#1075;&#1086;&#1084;
-
&#1048; &#1089;&#1090;&#1088;&#1072;&#1089;&#1090;&#1080;
- &#1088;&#1086;&#1082;&#1086;&#1074;&#1086;&#1081; &#1074;&#1079;&#1076;&#1099;&#1084;&#1072;&#1102;&#1090;&#1089;&#1103;
+ &#1088;&#1086;&#1082;&#1086;&#1074;&#1086;&#1081;
+ &#1074;&#1079;&#1076;&#1099;&#1084;&#1072;&#1102;&#1090;&#1089;&#1103;
&#1087;&#1086;&#1090;&#1086;&#1082;&#1080;,-
-
- &#1053;&#1077; &#1074;&#1089;&#1087;&#1086;&#1084;&#1085;&#1080;&#1083;&#1072;
+ &#1053;&#1077;
+ &#1074;&#1089;&#1087;&#1086;&#1084;&#1085;&#1080;&#1083;&#1072;
&#1083;&#1100; &#1086; &#1095;&#1077;&#1084;?
-
-
-
+
&#1071; &#1074;&#1077;&#1088;&#1080;&#1090;&#1100; &#1085;&#1077;
&#1093;&#1086;&#1095;&#1091;! &#1050;&#1086;&#1075;&#1076;&#1072;
&#1074; &#1089;&#1090;&#1077;&#1087;&#1080;, &#1082;&#1072;&#1082;
&#1076;&#1080;&#1074;&#1086;,
-
- &#1042; &#1087;&#1086;&#1083;&#1085;&#1086;&#1095;&#1085;&#1086;&#1081;
- &#1090;&#1077;&#1084;&#1085;&#1086;&#1090;&#1077; &#1073;&#1077;&#1079;&#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;
+ &#1042;
+ &#1087;&#1086;&#1083;&#1085;&#1086;&#1095;&#1085;&#1086;&#1081;
+ &#1090;&#1077;&#1084;&#1085;&#1086;&#1090;&#1077;
+ &#1073;&#1077;&#1079;&#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1086;
&#1075;&#1086;&#1088;&#1103;,
-
- &#1042;&#1076;&#1072;&#1083;&#1080; &#1087;&#1077;&#1088;&#1077;&#1076;
- &#1090;&#1086;&#1073;&#1086;&#1081; &#1087;&#1088;&#1086;&#1079;&#1088;&#1072;&#1095;&#1085;&#1086;
- &#1080; &#1082;&#1088;&#1072;&#1089;&#1080;&#1074;&#1086;
-
- &#1042;&#1089;&#1090;&#1072;&#1074;&#1072;&#1083;&#1072;
+ &#1042;&#1076;&#1072;&#1083;&#1080;
+ &#1087;&#1077;&#1088;&#1077;&#1076; &#1090;&#1086;&#1073;&#1086;&#1081;
+ &#1087;&#1088;&#1086;&#1079;&#1088;&#1072;&#1095;&#1085;&#1086; &#1080;
+ &#1082;&#1088;&#1072;&#1089;&#1080;&#1074;&#1086;
+ &#1042;&#1089;&#1090;&#1072;&#1074;&#1072;&#1083;&#1072;
&#1074;&#1076;&#1088;&#1091;&#1075;&#1079;&#1072;&#1088;&#1103;.
-
-
-
- &#1048; &#1074; &#1101;&#1090;&#1091; &#1082;&#1088;&#1072;&#1089;&#1086;&#1090;&#1091;
+
+ &#1048; &#1074; &#1101;&#1090;&#1091;
+ &#1082;&#1088;&#1072;&#1089;&#1086;&#1090;&#1091;
&#1085;&#1077;&#1074;&#1086;&#1083;&#1100;&#1085;&#1086;
- &#1074;&#1079;&#1086;&#1088; &#1090;&#1103;&#1085;&#1091;&#1083;&#1086;,
-
- &#1042; &#1090;&#1086;&#1090; &#1074;&#1077;&#1083;&#1080;&#1095;&#1072;&#1074;&#1099;&#1081;
- &#1073;&#1083;&#1077;&#1089;&#1082; &#1079;&#1072; &#1090;&#1077;&#1084;&#1085;&#1099;&#1081;
- &#1074;&#1077;&#1089;&#1100; &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;,-
-
- &#1059;&#1078;&#1077;&#1083;&#1100; &#1085;&#1080;&#1095;&#1090;&#1086;
- &#1090;&#1077;&#1073;&#1077; &#1074; &#1090;&#1086; &#1074;&#1088;&#1077;&#1084;&#1103;
+ &#1074;&#1079;&#1086;&#1088;
+ &#1090;&#1103;&#1085;&#1091;&#1083;&#1086;,
+ &#1042; &#1090;&#1086;&#1090;
+ &#1074;&#1077;&#1083;&#1080;&#1095;&#1072;&#1074;&#1099;&#1081;
+ &#1073;&#1083;&#1077;&#1089;&#1082; &#1079;&#1072;
+ &#1090;&#1077;&#1084;&#1085;&#1099;&#1081; &#1074;&#1077;&#1089;&#1100;
+ &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;,-
+ &#1059;&#1078;&#1077;&#1083;&#1100;
+ &#1085;&#1080;&#1095;&#1090;&#1086; &#1090;&#1077;&#1073;&#1077;
+ &#1074; &#1090;&#1086; &#1074;&#1088;&#1077;&#1084;&#1103;
&#1085;&#1077; &#1096;&#1077;&#1087;&#1085;&#1091;&#1083;&#1086;:
-
- &#1058;&#1072;&#1084; &#1095;&#1077;&#1083;&#1086;&#1074;&#1077;&#1082;
+ &#1058;&#1072;&#1084;
+ &#1095;&#1077;&#1083;&#1086;&#1074;&#1077;&#1082;
&#1089;&#1075;&#1086;&#1088;&#1077;&#1083;!
-
-
- 15 &#1092;&#1077;&#1074;&#1088;&#1072;&#1083;&#1103;
- 1887
+ 15 &#1092;&#1077;&#1074;&#1088;&#1072;&#1083;&#1103; 1887
</VerbatimFormatted>
<Para start_line="48">
[end]
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38.xml
index 5ff72513abf..a3b1748ef06 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38.xml
@@ -1,4 +1,7 @@
<Document start_line="1">
+ <encoding start_line="1">
+ big5
+ </encoding>
<head1 start_line="3">
&#32769;&#23376;&#36947;&#24503;&#32147; &#19977;&#21313;&#20843;&#31456;
-- Big5 (Chinese) encoding test
@@ -22,28 +25,27 @@
And as a verbatim section:
</Para>
<VerbatimFormatted start_line="20" xml:space="preserve">
- &#19978;&#24503;&#19981;&#24503;&#65292;&#26159;&#20197;&#26377;&#24503;&#65108;
-
- &#19979;&#24503;&#19981;&#22833;&#24503;&#65292;&#26159;&#20197;&#28961;&#24503;&#12290;
-
- &#19978;&#24503;&#28961;&#28858;&#32780;&#28961;&#20197;&#28858;&#65108;
-
- &#19979;&#24503;&#28961;&#28858;&#32780;&#26377;&#20197;&#28858;&#12290;
-
- &#19978;&#20161;&#28858;&#20043;&#32780;&#28961;&#20197;&#28858;&#65108;
-
- &#19978;&#32681;&#28858;&#20043;&#32780;&#26377;&#20197;&#28858;&#12290;
-
- &#19978;&#31150;&#28858;&#20043;&#32780;&#33707;&#20043;&#25033;&#65292;&#21063;&#25880;&#33218;&#32780;&#25172;&#20043;&#12290;
-
+
+ &#19978;&#24503;&#19981;&#24503;&#65292;&#26159;&#20197;&#26377;&#24503;&#65108;
+
+ &#19979;&#24503;&#19981;&#22833;&#24503;&#65292;&#26159;&#20197;&#28961;&#24503;&#12290;
+
+ &#19978;&#24503;&#28961;&#28858;&#32780;&#28961;&#20197;&#28858;&#65108;
+
+ &#19979;&#24503;&#28961;&#28858;&#32780;&#26377;&#20197;&#28858;&#12290;
+
+ &#19978;&#20161;&#28858;&#20043;&#32780;&#28961;&#20197;&#28858;&#65108;
+
+ &#19978;&#32681;&#28858;&#20043;&#32780;&#26377;&#20197;&#28858;&#12290;
+
+ &#19978;&#31150;&#28858;&#20043;&#32780;&#33707;&#20043;&#25033;&#65292;&#21063;&#25880;&#33218;&#32780;&#25172;&#20043;&#12290;
-
- &#25925;&#22833;&#36947;&#32780;&#21518;&#24503;&#65292;&#22833;&#24503;&#32780;&#21518;&#20161;&#65292;&#22833;&#20161;&#32780;&#21518;&#32681;&#65292;&#22833;&#32681;&#32780;&#21518;&#31150;&#12290;&#22827;&#31150;&#32773;&#65292;&#24544;&#20449;&#20043;&#34180;&#65292;&#32780;&#20098;&#20043;&#39318;&#12290;
-
- &#21069;&#35672;&#32773;&#65292;&#36947;&#20043;&#33775;&#65292;&#32780;&#24858;&#20043;&#22987;&#12290;
-
- &#26159;&#20197;&#22823;&#19976;&#22827;&#23621;&#20854;&#21402;&#65292;&#19981;&#23621;&#20854;&#34180;&#65108;&#23621;&#20854;&#23526;&#65292;&#19981;&#23621;&#20854;&#33775;&#12290;
-
+
+ &#25925;&#22833;&#36947;&#32780;&#21518;&#24503;&#65292;&#22833;&#24503;&#32780;&#21518;&#20161;&#65292;&#22833;&#20161;&#32780;&#21518;&#32681;&#65292;&#22833;&#32681;&#32780;&#21518;&#31150;&#12290;&#22827;&#31150;&#32773;&#65292;&#24544;&#20449;&#20043;&#34180;&#65292;&#32780;&#20098;&#20043;&#39318;&#12290;
+
+ &#21069;&#35672;&#32773;&#65292;&#36947;&#20043;&#33775;&#65292;&#32780;&#24858;&#20043;&#22987;&#12290;
+
+ &#26159;&#20197;&#22823;&#19976;&#22827;&#23621;&#20854;&#21402;&#65292;&#19981;&#23621;&#20854;&#34180;&#65108;&#23621;&#20854;&#23526;&#65292;&#19981;&#23621;&#20854;&#33775;&#12290;
&#25925;&#21435;&#24444;&#21462;&#27492;&#12290;
</VerbatimFormatted>
<Para start_line="33">
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38b.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38b.xml
index 5ff72513abf..92db1bb17e5 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38b.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38b.xml
@@ -1,4 +1,7 @@
<Document start_line="1">
+ <encoding start_line="1">
+ big5-eten
+ </encoding>
<head1 start_line="3">
&#32769;&#23376;&#36947;&#24503;&#32147; &#19977;&#21313;&#20843;&#31456;
-- Big5 (Chinese) encoding test
@@ -22,28 +25,27 @@
And as a verbatim section:
</Para>
<VerbatimFormatted start_line="20" xml:space="preserve">
- &#19978;&#24503;&#19981;&#24503;&#65292;&#26159;&#20197;&#26377;&#24503;&#65108;
-
- &#19979;&#24503;&#19981;&#22833;&#24503;&#65292;&#26159;&#20197;&#28961;&#24503;&#12290;
-
- &#19978;&#24503;&#28961;&#28858;&#32780;&#28961;&#20197;&#28858;&#65108;
-
- &#19979;&#24503;&#28961;&#28858;&#32780;&#26377;&#20197;&#28858;&#12290;
-
- &#19978;&#20161;&#28858;&#20043;&#32780;&#28961;&#20197;&#28858;&#65108;
-
- &#19978;&#32681;&#28858;&#20043;&#32780;&#26377;&#20197;&#28858;&#12290;
-
- &#19978;&#31150;&#28858;&#20043;&#32780;&#33707;&#20043;&#25033;&#65292;&#21063;&#25880;&#33218;&#32780;&#25172;&#20043;&#12290;
-
+
+ &#19978;&#24503;&#19981;&#24503;&#65292;&#26159;&#20197;&#26377;&#24503;&#65108;
+
+ &#19979;&#24503;&#19981;&#22833;&#24503;&#65292;&#26159;&#20197;&#28961;&#24503;&#12290;
+
+ &#19978;&#24503;&#28961;&#28858;&#32780;&#28961;&#20197;&#28858;&#65108;
+
+ &#19979;&#24503;&#28961;&#28858;&#32780;&#26377;&#20197;&#28858;&#12290;
+
+ &#19978;&#20161;&#28858;&#20043;&#32780;&#28961;&#20197;&#28858;&#65108;
+
+ &#19978;&#32681;&#28858;&#20043;&#32780;&#26377;&#20197;&#28858;&#12290;
+
+ &#19978;&#31150;&#28858;&#20043;&#32780;&#33707;&#20043;&#25033;&#65292;&#21063;&#25880;&#33218;&#32780;&#25172;&#20043;&#12290;
-
- &#25925;&#22833;&#36947;&#32780;&#21518;&#24503;&#65292;&#22833;&#24503;&#32780;&#21518;&#20161;&#65292;&#22833;&#20161;&#32780;&#21518;&#32681;&#65292;&#22833;&#32681;&#32780;&#21518;&#31150;&#12290;&#22827;&#31150;&#32773;&#65292;&#24544;&#20449;&#20043;&#34180;&#65292;&#32780;&#20098;&#20043;&#39318;&#12290;
-
- &#21069;&#35672;&#32773;&#65292;&#36947;&#20043;&#33775;&#65292;&#32780;&#24858;&#20043;&#22987;&#12290;
-
- &#26159;&#20197;&#22823;&#19976;&#22827;&#23621;&#20854;&#21402;&#65292;&#19981;&#23621;&#20854;&#34180;&#65108;&#23621;&#20854;&#23526;&#65292;&#19981;&#23621;&#20854;&#33775;&#12290;
-
+
+ &#25925;&#22833;&#36947;&#32780;&#21518;&#24503;&#65292;&#22833;&#24503;&#32780;&#21518;&#20161;&#65292;&#22833;&#20161;&#32780;&#21518;&#32681;&#65292;&#22833;&#32681;&#32780;&#21518;&#31150;&#12290;&#22827;&#31150;&#32773;&#65292;&#24544;&#20449;&#20043;&#34180;&#65292;&#32780;&#20098;&#20043;&#39318;&#12290;
+
+ &#21069;&#35672;&#32773;&#65292;&#36947;&#20043;&#33775;&#65292;&#32780;&#24858;&#20043;&#22987;&#12290;
+
+ &#26159;&#20197;&#22823;&#19976;&#22827;&#23621;&#20854;&#21402;&#65292;&#19981;&#23621;&#20854;&#34180;&#65108;&#23621;&#20854;&#23526;&#65292;&#19981;&#23621;&#20854;&#33775;&#12290;
&#25925;&#21435;&#24444;&#21462;&#27492;&#12290;
</VerbatimFormatted>
<Para start_line="33">
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38p.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38p.xml
index bae00f25d48..e1694d46e15 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38p.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/laozi38p.xml
@@ -1,4 +1,7 @@
<Document start_line="2">
+ <encoding start_line="2">
+ big5
+ </encoding>
<head1 start_line="4">
NAME
</head1>
@@ -10,8 +13,8 @@
DESCRIPTION
</head1>
<Para start_line="10">
- This is a test Pod document in the Big5 encoding. Its content
- is the 38th canto from the
+ This is a test Pod document in the Big5 encoding. Its content is the 38th
+ canto from the
<I>
Dao De Jing
</I>
@@ -39,28 +42,27 @@
And as a verbatim section:
</Para>
<VerbatimFormatted start_line="30" xml:space="preserve">
- &#19978;&#24503;&#19981;&#24503;&#65292;&#26159;&#20197;&#26377;&#24503;&#65108;
-
- &#19979;&#24503;&#19981;&#22833;&#24503;&#65292;&#26159;&#20197;&#28961;&#24503;&#12290;
-
- &#19978;&#24503;&#28961;&#28858;&#32780;&#28961;&#20197;&#28858;&#65108;
-
- &#19979;&#24503;&#28961;&#28858;&#32780;&#26377;&#20197;&#28858;&#12290;
-
- &#19978;&#20161;&#28858;&#20043;&#32780;&#28961;&#20197;&#28858;&#65108;
-
- &#19978;&#32681;&#28858;&#20043;&#32780;&#26377;&#20197;&#28858;&#12290;
-
- &#19978;&#31150;&#28858;&#20043;&#32780;&#33707;&#20043;&#25033;&#65292;&#21063;&#25880;&#33218;&#32780;&#25172;&#20043;&#12290;
-
+
+ &#19978;&#24503;&#19981;&#24503;&#65292;&#26159;&#20197;&#26377;&#24503;&#65108;
+
+ &#19979;&#24503;&#19981;&#22833;&#24503;&#65292;&#26159;&#20197;&#28961;&#24503;&#12290;
+
+ &#19978;&#24503;&#28961;&#28858;&#32780;&#28961;&#20197;&#28858;&#65108;
+
+ &#19979;&#24503;&#28961;&#28858;&#32780;&#26377;&#20197;&#28858;&#12290;
+
+ &#19978;&#20161;&#28858;&#20043;&#32780;&#28961;&#20197;&#28858;&#65108;
-
- &#25925;&#22833;&#36947;&#32780;&#21518;&#24503;&#65292;&#22833;&#24503;&#32780;&#21518;&#20161;&#65292;&#22833;&#20161;&#32780;&#21518;&#32681;&#65292;&#22833;&#32681;&#32780;&#21518;&#31150;&#12290;&#22827;&#31150;&#32773;&#65292;&#24544;&#20449;&#20043;&#34180;&#65292;&#32780;&#20098;&#20043;&#39318;&#12290;
-
- &#21069;&#35672;&#32773;&#65292;&#36947;&#20043;&#33775;&#65292;&#32780;&#24858;&#20043;&#22987;&#12290;
-
- &#26159;&#20197;&#22823;&#19976;&#22827;&#23621;&#20854;&#21402;&#65292;&#19981;&#23621;&#20854;&#34180;&#65108;&#23621;&#20854;&#23526;&#65292;&#19981;&#23621;&#20854;&#33775;&#12290;
-
+ &#19978;&#32681;&#28858;&#20043;&#32780;&#26377;&#20197;&#28858;&#12290;
+
+ &#19978;&#31150;&#28858;&#20043;&#32780;&#33707;&#20043;&#25033;&#65292;&#21063;&#25880;&#33218;&#32780;&#25172;&#20043;&#12290;
+
+
+ &#25925;&#22833;&#36947;&#32780;&#21518;&#24503;&#65292;&#22833;&#24503;&#32780;&#21518;&#20161;&#65292;&#22833;&#20161;&#32780;&#21518;&#32681;&#65292;&#22833;&#32681;&#32780;&#21518;&#31150;&#12290;&#22827;&#31150;&#32773;&#65292;&#24544;&#20449;&#20043;&#34180;&#65292;&#32780;&#20098;&#20043;&#39318;&#12290;
+
+ &#21069;&#35672;&#32773;&#65292;&#36947;&#20043;&#33775;&#65292;&#32780;&#24858;&#20043;&#22987;&#12290;
+
+ &#26159;&#20197;&#22823;&#19976;&#22827;&#23621;&#20854;&#21402;&#65292;&#19981;&#23621;&#20854;&#34180;&#65108;&#23621;&#20854;&#23526;&#65292;&#19981;&#23621;&#20854;&#33775;&#12290;
&#25925;&#21435;&#24444;&#21462;&#27492;&#12290;
</VerbatimFormatted>
<Para start_line="43">
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/lat1fr.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/lat1fr.xml
index 017ae6abf77..d16d3a306f6 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/lat1fr.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/lat1fr.xml
@@ -1,4 +1,7 @@
<Document start_line="2">
+ <encoding start_line="2">
+ iso-8859-1
+ </encoding>
<head1 start_line="4">
NAME
</head1>
@@ -9,28 +12,25 @@
DESCRIPTION
</head1>
<Para start_line="10">
- This is a test Pod document in Latin-1. Its content is the
- last two paragraphs of Baudelaire&#39;s
+ This is a test Pod document in Latin-1. Its content is the last two
+ paragraphs of Baudelaire&#39;s
<I>
Le Joujou du pauvre
</I>
.
</Para>
<Para start_line="13">
- A travers ces barreaux symboliques s&#233;parant deux mondes,
- la grande route et le ch&#226;teau, l&#39;enfant pauvre
- montrait &#224; l&#39;enfant riche son propre joujou, que
- celui-ci examinait avidement comme un objet rare et inconnu.
- Or, ce joujou, que le petit souillon aga&#231;ait, agitait
- et secouait dans une bo&#238;te grill&#233;e, c&#39;&#233;tait
- un rat vivant
- &#160;
- ! Les parents, par &#233;conomie sans doute, avaient tir&#233;
- le joujou de la vie elle-m&#234;me.
+ A travers ces barreaux symboliques s&#233;parant deux mondes, la grande
+ route et le ch&#226;teau, l&#39;enfant pauvre montrait &#224;
+ l&#39;enfant riche son propre joujou, que celui-ci examinait avidement
+ comme un objet rare et inconnu. Or, ce joujou, que le petit souillon
+ aga&#231;ait, agitait et secouait dans une bo&#238;te grill&#233;e,
+ c&#39;&#233;tait un rat vivant&#160;! Les parents, par &#233;conomie
+ sans doute, avaient tir&#233; le joujou de la vie elle-m&#234;me.
</Para>
<Para start_line="20">
- Et les deux enfants se riaient l&#39;un &#224; l&#39;autre
- fraternellement, avec des dents d&#39;une
+ Et les deux enfants se riaient l&#39;un &#224; l&#39;autre fraternellement,
+ avec des dents d&#39;une
<I>
&#233;gale
</I>
@@ -40,28 +40,20 @@
As Verbatim
</head2>
<VerbatimFormatted start_line="25" xml:space="preserve">
- A travers ces barreaux symboliques s&#233;parant deux mondes,
- la grande route
-
- et le ch&#226;teau, l&#39;enfant pauvre montrait &#224;
- l&#39;enfant riche son propre
-
- joujou, que celui-ci examinait avidement comme un objet
- rare et inconnu.
-
- Or, ce joujou, que le petit souillon aga&#231;ait, agitait
- et secouait dans
-
- une bo&#238;te grill&#233;e, c&#39;&#233;tait un rat vivant&#160;!
+ A travers ces barreaux symboliques s&#233;parant deux mondes, la grande
+ route
+ et le ch&#226;teau, l&#39;enfant pauvre montrait &#224; l&#39;enfant
+ riche son propre
+ joujou, que celui-ci examinait avidement comme un objet rare et
+ inconnu.
+ Or, ce joujou, que le petit souillon aga&#231;ait, agitait et secouait
+ dans
+ une bo&#238;te grill&#233;e, c&#39;&#233;tait un rat vivant&#160;!
Les parents, par &#233;conomie
-
sans doute, avaient tir&#233; le joujou de la vie elle-m&#234;me.
-
-
Et les deux enfants se riaient l&#39;un &#224; l&#39;autre
fraternellement, avec des
-
dents d&#39;une &#233;gale blancheur.
</VerbatimFormatted>
<Para start_line="35">
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/lat1frim.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/lat1frim.xml
index ffbbdb05ac6..8b9191c7e1d 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/lat1frim.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/lat1frim.xml
@@ -9,28 +9,25 @@
DESCRIPTION
</head1>
<Para start_line="8">
- This is a test Pod document in Latin-1. Its content is the
- last two paragraphs of Baudelaire&#39;s
+ This is a test Pod document in Latin-1. Its content is the last two
+ paragraphs of Baudelaire&#39;s
<I>
Le Joujou du pauvre
</I>
.
</Para>
<Para start_line="11">
- A travers ces barreaux symboliques s&#233;parant deux mondes,
- la grande route et le ch&#226;teau, l&#39;enfant pauvre
- montrait &#224; l&#39;enfant riche son propre joujou, que
- celui-ci examinait avidement comme un objet rare et inconnu.
- Or, ce joujou, que le petit souillon aga&#231;ait, agitait
- et secouait dans une bo&#238;te grill&#233;e, c&#39;&#233;tait
- un rat vivant
- &#160;
- ! Les parents, par &#233;conomie sans doute, avaient tir&#233;
- le joujou de la vie elle-m&#234;me.
+ A travers ces barreaux symboliques s&#233;parant deux mondes, la grande
+ route et le ch&#226;teau, l&#39;enfant pauvre montrait &#224;
+ l&#39;enfant riche son propre joujou, que celui-ci examinait avidement
+ comme un objet rare et inconnu. Or, ce joujou, que le petit souillon
+ aga&#231;ait, agitait et secouait dans une bo&#238;te grill&#233;e,
+ c&#39;&#233;tait un rat vivant&#160;! Les parents, par &#233;conomie
+ sans doute, avaient tir&#233; le joujou de la vie elle-m&#234;me.
</Para>
<Para start_line="18">
- Et les deux enfants se riaient l&#39;un &#224; l&#39;autre
- fraternellement, avec des dents d&#39;une
+ Et les deux enfants se riaient l&#39;un &#224; l&#39;autre fraternellement,
+ avec des dents d&#39;une
<I>
&#233;gale
</I>
@@ -40,31 +37,41 @@
As Verbatim
</head2>
<VerbatimFormatted start_line="23" xml:space="preserve">
- A travers ces barreaux symboliques s&#233;parant deux mondes,
- la grande route
-
- et le ch&#226;teau, l&#39;enfant pauvre montrait &#224;
- l&#39;enfant riche son propre
-
- joujou, que celui-ci examinait avidement comme un objet
- rare et inconnu.
-
- Or, ce joujou, que le petit souillon aga&#231;ait, agitait
- et secouait dans
-
- une bo&#238;te grill&#233;e, c&#39;&#233;tait un rat vivant&#160;!
+ A travers ces barreaux symboliques s&#233;parant deux mondes, la grande
+ route
+ et le ch&#226;teau, l&#39;enfant pauvre montrait &#224; l&#39;enfant
+ riche son propre
+ joujou, que celui-ci examinait avidement comme un objet rare et
+ inconnu.
+ Or, ce joujou, que le petit souillon aga&#231;ait, agitait et secouait
+ dans
+ une bo&#238;te grill&#233;e, c&#39;&#233;tait un rat vivant&#160;!
Les parents, par &#233;conomie
-
sans doute, avaient tir&#233; le joujou de la vie elle-m&#234;me.
-
-
Et les deux enfants se riaient l&#39;un &#224; l&#39;autre
fraternellement, avec des
-
dents d&#39;une &#233;gale blancheur.
</VerbatimFormatted>
<Para start_line="33">
[end]
</Para>
+ <head1 errata="1" start_line="-321">
+ POD ERRORS
+ </head1>
+ <Para errata="1" start_line="-321">
+ Hey!
+ <B>
+ The above document had some coding errors, which are explained below:
+ </B>
+ </Para>
+ <over-text errata="1" indent="4" start_line="-321">
+ <item-text start_line="-321">
+ Around line 11:
+ </item-text>
+ <Para start_line="-321">
+ Non-ASCII character seen before =encoding in &#39;s&#233;parant&#39;.
+ Assuming ISO8859-1
+ </Para>
+ </over-text>
</Document>
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/pasternak_cp1251.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/pasternak_cp1251.xml
index 2276551b31c..ddc76c3f065 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/pasternak_cp1251.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/pasternak_cp1251.xml
@@ -1,10 +1,13 @@
<Document start_line="2">
+ <encoding start_line="2">
+ cp1251
+ </encoding>
<head1 start_line="4">
NAME
</head1>
<Para start_line="6">
- &#1047;&#1080;&#1084;&#1085;&#1103;&#1103; &#1085;&#1086;&#1095;&#1100;
- -- Pasternak Russian test file (cp1251)
+ &#1047;&#1080;&#1084;&#1085;&#1103;&#1103; &#1085;&#1086;&#1095;&#1100; --
+ Pasternak Russian test file (cp1251)
</Para>
<head1 start_line="8">
TEXT
@@ -16,76 +19,100 @@
&#1047;&#1080;&#1084;&#1085;&#1103;&#1103; &#1085;&#1086;&#1095;&#1100;.
</Para>
<Para start_line="14">
- &#1052;&#1077;&#1083;&#1086;, &#1084;&#1077;&#1083;&#1086;
- &#1087;&#1086; &#1074;&#1089;&#1077;&#1081; &#1079;&#1077;&#1084;&#1083;&#1077;
- / &#1042;&#1086; &#1074;&#1089;&#1077; &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1099;.
- / &#1057;&#1074;&#1077;&#1095;&#1072; &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;
- &#1085;&#1072; &#1089;&#1090;&#1086;&#1083;&#1077;, / &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1052;&#1077;&#1083;&#1086;, &#1084;&#1077;&#1083;&#1086; &#1087;&#1086;
+ &#1074;&#1089;&#1077;&#1081; &#1079;&#1077;&#1084;&#1083;&#1077; /
+ &#1042;&#1086; &#1074;&#1089;&#1077;
+ &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1099;. /
+ &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1075;&#1086;&#1088;&#1077;&#1083;&#1072; &#1085;&#1072;
+ &#1089;&#1090;&#1086;&#1083;&#1077;, /
+ &#1057;&#1074;&#1077;&#1095;&#1072;
&#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
</Para>
<Para start_line="19">
&#1050;&#1072;&#1082; &#1083;&#1077;&#1090;&#1086;&#1084;
- &#1088;&#1086;&#1077;&#1084; &#1084;&#1086;&#1096;&#1082;&#1086;&#1088;&#1072;
- / &#1051;&#1077;&#1090;&#1080;&#1090; &#1085;&#1072; &#1087;&#1083;&#1072;&#1084;&#1103;,
- / &#1057;&#1083;&#1077;&#1090;&#1072;&#1083;&#1080;&#1089;&#1100;
+ &#1088;&#1086;&#1077;&#1084;
+ &#1084;&#1086;&#1096;&#1082;&#1086;&#1088;&#1072; /
+ &#1051;&#1077;&#1090;&#1080;&#1090; &#1085;&#1072;
+ &#1087;&#1083;&#1072;&#1084;&#1103;, /
+ &#1057;&#1083;&#1077;&#1090;&#1072;&#1083;&#1080;&#1089;&#1100;
&#1093;&#1083;&#1086;&#1087;&#1100;&#1103; &#1089;&#1086;
- &#1076;&#1074;&#1086;&#1088;&#1072; / &#1050; &#1086;&#1082;&#1086;&#1085;&#1085;&#1086;&#1081;
+ &#1076;&#1074;&#1086;&#1088;&#1072; / &#1050;
+ &#1086;&#1082;&#1086;&#1085;&#1085;&#1086;&#1081;
&#1088;&#1072;&#1084;&#1077;.
</Para>
<Para start_line="24">
- &#1052;&#1077;&#1090;&#1077;&#1083;&#1100; &#1083;&#1077;&#1087;&#1080;&#1083;&#1072;
- &#1085;&#1072; &#1089;&#1090;&#1086;&#1083;&#1077; / &#1050;&#1088;&#1091;&#1078;&#1082;&#1080;
- &#1080; &#1089;&#1090;&#1088;&#1077;&#1083;&#1099;. / &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1052;&#1077;&#1090;&#1077;&#1083;&#1100;
+ &#1083;&#1077;&#1087;&#1080;&#1083;&#1072; &#1085;&#1072;
+ &#1089;&#1090;&#1086;&#1083;&#1077; /
+ &#1050;&#1088;&#1091;&#1078;&#1082;&#1080; &#1080;
+ &#1089;&#1090;&#1088;&#1077;&#1083;&#1099;. /
+ &#1057;&#1074;&#1077;&#1095;&#1072;
&#1075;&#1086;&#1088;&#1077;&#1083;&#1072; &#1085;&#1072;
- &#1089;&#1090;&#1086;&#1083;&#1077;, / &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1089;&#1090;&#1086;&#1083;&#1077;, /
+ &#1057;&#1074;&#1077;&#1095;&#1072;
&#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
</Para>
<Para start_line="29">
- &#1053;&#1072; &#1086;&#1079;&#1072;&#1088;&#1077;&#1085;&#1085;&#1099;&#1081;
- &#1087;&#1086;&#1090;&#1086;&#1083;&#1086;&#1082; / &#1051;&#1086;&#1078;&#1080;&#1083;&#1080;&#1089;&#1100;
- &#1090;&#1077;&#1085;&#1080;, / &#1057;&#1082;&#1088;&#1077;&#1097;&#1077;&#1085;&#1100;&#1103;
- &#1088;&#1091;&#1082;, &#1089;&#1082;&#1088;&#1082;&#1097;&#1077;&#1085;&#1100;&#1103;
+ &#1053;&#1072;
+ &#1086;&#1079;&#1072;&#1088;&#1077;&#1085;&#1085;&#1099;&#1081;
+ &#1087;&#1086;&#1090;&#1086;&#1083;&#1086;&#1082; /
+ &#1051;&#1086;&#1078;&#1080;&#1083;&#1080;&#1089;&#1100;
+ &#1090;&#1077;&#1085;&#1080;, /
+ &#1057;&#1082;&#1088;&#1077;&#1097;&#1077;&#1085;&#1100;&#1103;
+ &#1088;&#1091;&#1082;,
+ &#1089;&#1082;&#1088;&#1082;&#1097;&#1077;&#1085;&#1100;&#1103;
&#1085;&#1086;&#1075;, / &#1057;&#1091;&#1076;&#1100;&#1073;&#1099;
&#1089;&#1082;&#1088;&#1077;&#1097;&#1077;&#1085;&#1100;&#1103;.
</Para>
<Para start_line="34">
&#1048; &#1087;&#1072;&#1076;&#1072;&#1083;&#1080; &#1076;&#1074;&#1072;
- &#1073;&#1072;&#1096;&#1084;&#1072;&#1095;&#1082;&#1072;
- / &#1057;&#1086; &#1089;&#1090;&#1091;&#1082;&#1086;&#1084;
- &#1085;&#1072; &#1087;&#1086;&#1083;, / &#1048; &#1074;&#1086;&#1089;&#1082;
+ &#1073;&#1072;&#1096;&#1084;&#1072;&#1095;&#1082;&#1072; /
+ &#1057;&#1086; &#1089;&#1090;&#1091;&#1082;&#1086;&#1084;
+ &#1085;&#1072; &#1087;&#1086;&#1083;, / &#1048;
+ &#1074;&#1086;&#1089;&#1082;
&#1089;&#1083;&#1077;&#1079;&#1072;&#1084;&#1080; &#1089;
&#1085;&#1086;&#1095;&#1085;&#1080;&#1082;&#1072; / &#1053;&#1072;
- &#1087;&#1083;&#1072;&#1090;&#1100;&#1077; &#1082;&#1072;&#1087;&#1072;&#1083;.
+ &#1087;&#1083;&#1072;&#1090;&#1100;&#1077;
+ &#1082;&#1072;&#1087;&#1072;&#1083;.
</Para>
<Para start_line="39">
- &#1048; &#1074;&#1089;&#1077; &#1090;&#1077;&#1088;&#1103;&#1083;&#1086;&#1089;&#1100;
- &#1074; &#1089;&#1085;&#1077;&#1078;&#1085;&#1086;&#1081;
+ &#1048; &#1074;&#1089;&#1077;
+ &#1090;&#1077;&#1088;&#1103;&#1083;&#1086;&#1089;&#1100; &#1074;
+ &#1089;&#1085;&#1077;&#1078;&#1085;&#1086;&#1081;
&#1084;&#1075;&#1083;&#1077; / &#1057;&#1077;&#1076;&#1086;&#1081;
- &#1080; &#1073;&#1077;&#1083;&#1086;&#1081;. / &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1080; &#1073;&#1077;&#1083;&#1086;&#1081;. /
+ &#1057;&#1074;&#1077;&#1095;&#1072;
&#1075;&#1086;&#1088;&#1077;&#1083;&#1072; &#1085;&#1072;
- &#1089;&#1090;&#1086;&#1083;&#1077;, / &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1089;&#1090;&#1086;&#1083;&#1077;, /
+ &#1057;&#1074;&#1077;&#1095;&#1072;
&#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
</Para>
<Para start_line="44">
&#1053;&#1072; &#1089;&#1074;&#1077;&#1095;&#1082;&#1091;
- &#1076;&#1091;&#1083;&#1086; &#1080;&#1079; &#1091;&#1075;&#1083;&#1072;,
- / &#1048; &#1078;&#1072;&#1088; &#1089;&#1086;&#1073;&#1083;&#1072;&#1079;&#1085;&#1072;
- / &#1042;&#1079;&#1076;&#1099;&#1084;&#1072;&#1083;, &#1082;&#1072;&#1082;
- &#1072;&#1085;&#1075;&#1077;&#1083;, &#1076;&#1074;&#1072;
- &#1082;&#1088;&#1099;&#1083;&#1072; / &#1050;&#1088;&#1077;&#1089;&#1090;&#1086;&#1086;&#1073;&#1088;&#1072;&#1079;&#1085;&#1086;.
+ &#1076;&#1091;&#1083;&#1086; &#1080;&#1079;
+ &#1091;&#1075;&#1083;&#1072;, / &#1048; &#1078;&#1072;&#1088;
+ &#1089;&#1086;&#1073;&#1083;&#1072;&#1079;&#1085;&#1072; /
+ &#1042;&#1079;&#1076;&#1099;&#1084;&#1072;&#1083;,
+ &#1082;&#1072;&#1082; &#1072;&#1085;&#1075;&#1077;&#1083;,
+ &#1076;&#1074;&#1072; &#1082;&#1088;&#1099;&#1083;&#1072; /
+ &#1050;&#1088;&#1077;&#1089;&#1090;&#1086;&#1086;&#1073;&#1088;&#1072;&#1079;&#1085;&#1086;.
/
</Para>
<Para start_line="49">
&#1052;&#1077;&#1083;&#1086; &#1074;&#1077;&#1089;&#1100;
- &#1084;&#1077;&#1089;&#1103;&#1094; &#1074; &#1092;&#1077;&#1074;&#1088;&#1072;&#1083;&#1077;,
- / &#1048; &#1090;&#1086; &#1080; &#1076;&#1077;&#1083;&#1086;
- / &#1057;&#1074;&#1077;&#1095;&#1072; &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;
- &#1085;&#1072; &#1089;&#1090;&#1086;&#1083;&#1077;, / &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1084;&#1077;&#1089;&#1103;&#1094; &#1074;
+ &#1092;&#1077;&#1074;&#1088;&#1072;&#1083;&#1077;, / &#1048;
+ &#1090;&#1086; &#1080; &#1076;&#1077;&#1083;&#1086; /
+ &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1075;&#1086;&#1088;&#1077;&#1083;&#1072; &#1085;&#1072;
+ &#1089;&#1090;&#1086;&#1083;&#1077;, /
+ &#1057;&#1074;&#1077;&#1095;&#1072;
&#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
</Para>
<Para start_line="54">
- -- &#1041;&#1086;&#1088;&#1080;&#1089; &#1055;&#1072;&#1089;&#1090;&#1077;&#1088;&#1085;&#1072;&#1082;,
- 1946
+ -- &#1041;&#1086;&#1088;&#1080;&#1089;
+ &#1055;&#1072;&#1089;&#1090;&#1077;&#1088;&#1085;&#1072;&#1082;, 1946
</Para>
<head2 start_line="57">
As Preformatted
@@ -95,115 +122,98 @@
</Para>
<VerbatimFormatted start_line="61" xml:space="preserve">
&#1047;&#1080;&#1084;&#1085;&#1103;&#1103; &#1085;&#1086;&#1095;&#1100;.
-
-
&#1052;&#1077;&#1083;&#1086;, &#1084;&#1077;&#1083;&#1086;
- &#1087;&#1086; &#1074;&#1089;&#1077;&#1081; &#1079;&#1077;&#1084;&#1083;&#1077;
-
- &#1042;&#1086; &#1074;&#1089;&#1077; &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1099;.
-
- &#1057;&#1074;&#1077;&#1095;&#1072; &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;
- &#1085;&#1072; &#1089;&#1090;&#1086;&#1083;&#1077;,
-
- &#1057;&#1074;&#1077;&#1095;&#1072; &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
-
+ &#1087;&#1086; &#1074;&#1089;&#1077;&#1081;
+ &#1079;&#1077;&#1084;&#1083;&#1077;
+ &#1042;&#1086; &#1074;&#1089;&#1077;
+ &#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1099;.
+ &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1075;&#1086;&#1088;&#1077;&#1083;&#1072; &#1085;&#1072;
+ &#1089;&#1090;&#1086;&#1083;&#1077;,
+ &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
-
&#1050;&#1072;&#1082; &#1083;&#1077;&#1090;&#1086;&#1084;
- &#1088;&#1086;&#1077;&#1084; &#1084;&#1086;&#1096;&#1082;&#1086;&#1088;&#1072;
-
- &#1051;&#1077;&#1090;&#1080;&#1090; &#1085;&#1072; &#1087;&#1083;&#1072;&#1084;&#1103;,
-
+ &#1088;&#1086;&#1077;&#1084;
+ &#1084;&#1086;&#1096;&#1082;&#1086;&#1088;&#1072;
+ &#1051;&#1077;&#1090;&#1080;&#1090; &#1085;&#1072;
+ &#1087;&#1083;&#1072;&#1084;&#1103;,
&#1057;&#1083;&#1077;&#1090;&#1072;&#1083;&#1080;&#1089;&#1100;
&#1093;&#1083;&#1086;&#1087;&#1100;&#1103; &#1089;&#1086;
&#1076;&#1074;&#1086;&#1088;&#1072;
-
&#1050; &#1086;&#1082;&#1086;&#1085;&#1085;&#1086;&#1081;
&#1088;&#1072;&#1084;&#1077;.
-
-
- &#1052;&#1077;&#1090;&#1077;&#1083;&#1100; &#1083;&#1077;&#1087;&#1080;&#1083;&#1072;
- &#1085;&#1072; &#1089;&#1090;&#1086;&#1083;&#1077;
-
- &#1050;&#1088;&#1091;&#1078;&#1082;&#1080; &#1080; &#1089;&#1090;&#1088;&#1077;&#1083;&#1099;.
-
- &#1057;&#1074;&#1077;&#1095;&#1072; &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;
- &#1085;&#1072; &#1089;&#1090;&#1086;&#1083;&#1077;,
-
- &#1057;&#1074;&#1077;&#1095;&#1072; &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
-
+ &#1052;&#1077;&#1090;&#1077;&#1083;&#1100;
+ &#1083;&#1077;&#1087;&#1080;&#1083;&#1072; &#1085;&#1072;
+ &#1089;&#1090;&#1086;&#1083;&#1077;
+ &#1050;&#1088;&#1091;&#1078;&#1082;&#1080; &#1080;
+ &#1089;&#1090;&#1088;&#1077;&#1083;&#1099;.
+ &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1075;&#1086;&#1088;&#1077;&#1083;&#1072; &#1085;&#1072;
+ &#1089;&#1090;&#1086;&#1083;&#1077;,
+ &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
-
- &#1053;&#1072; &#1086;&#1079;&#1072;&#1088;&#1077;&#1085;&#1085;&#1099;&#1081;
+ &#1053;&#1072;
+ &#1086;&#1079;&#1072;&#1088;&#1077;&#1085;&#1085;&#1099;&#1081;
&#1087;&#1086;&#1090;&#1086;&#1083;&#1086;&#1082;
-
&#1051;&#1086;&#1078;&#1080;&#1083;&#1080;&#1089;&#1100;
&#1090;&#1077;&#1085;&#1080;,
-
&#1057;&#1082;&#1088;&#1077;&#1097;&#1077;&#1085;&#1100;&#1103;
- &#1088;&#1091;&#1082;, &#1089;&#1082;&#1088;&#1082;&#1097;&#1077;&#1085;&#1100;&#1103;
+ &#1088;&#1091;&#1082;,
+ &#1089;&#1082;&#1088;&#1082;&#1097;&#1077;&#1085;&#1100;&#1103;
&#1085;&#1086;&#1075;,
-
- &#1057;&#1091;&#1076;&#1100;&#1073;&#1099; &#1089;&#1082;&#1088;&#1077;&#1097;&#1077;&#1085;&#1100;&#1103;.
-
+ &#1057;&#1091;&#1076;&#1100;&#1073;&#1099;
+ &#1089;&#1082;&#1088;&#1077;&#1097;&#1077;&#1085;&#1100;&#1103;.
-
- &#1048; &#1087;&#1072;&#1076;&#1072;&#1083;&#1080; &#1076;&#1074;&#1072;
+ &#1048; &#1087;&#1072;&#1076;&#1072;&#1083;&#1080;
+ &#1076;&#1074;&#1072;
&#1073;&#1072;&#1096;&#1084;&#1072;&#1095;&#1082;&#1072;
-
&#1057;&#1086; &#1089;&#1090;&#1091;&#1082;&#1086;&#1084;
&#1085;&#1072; &#1087;&#1086;&#1083;,
-
- &#1048; &#1074;&#1086;&#1089;&#1082; &#1089;&#1083;&#1077;&#1079;&#1072;&#1084;&#1080;
- &#1089; &#1085;&#1086;&#1095;&#1085;&#1080;&#1082;&#1072;
-
+ &#1048; &#1074;&#1086;&#1089;&#1082;
+ &#1089;&#1083;&#1077;&#1079;&#1072;&#1084;&#1080; &#1089;
+ &#1085;&#1086;&#1095;&#1085;&#1080;&#1082;&#1072;
&#1053;&#1072; &#1087;&#1083;&#1072;&#1090;&#1100;&#1077;
&#1082;&#1072;&#1087;&#1072;&#1083;.
-
-
- &#1048; &#1074;&#1089;&#1077; &#1090;&#1077;&#1088;&#1103;&#1083;&#1086;&#1089;&#1100;
- &#1074; &#1089;&#1085;&#1077;&#1078;&#1085;&#1086;&#1081;
+ &#1048; &#1074;&#1089;&#1077;
+ &#1090;&#1077;&#1088;&#1103;&#1083;&#1086;&#1089;&#1100; &#1074;
+ &#1089;&#1085;&#1077;&#1078;&#1085;&#1086;&#1081;
&#1084;&#1075;&#1083;&#1077;
-
- &#1057;&#1077;&#1076;&#1086;&#1081; &#1080; &#1073;&#1077;&#1083;&#1086;&#1081;.
-
- &#1057;&#1074;&#1077;&#1095;&#1072; &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;
- &#1085;&#1072; &#1089;&#1090;&#1086;&#1083;&#1077;,
-
- &#1057;&#1074;&#1077;&#1095;&#1072; &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
-
+ &#1057;&#1077;&#1076;&#1086;&#1081; &#1080;
+ &#1073;&#1077;&#1083;&#1086;&#1081;.
+ &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1075;&#1086;&#1088;&#1077;&#1083;&#1072; &#1085;&#1072;
+ &#1089;&#1090;&#1086;&#1083;&#1077;,
+ &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
-
&#1053;&#1072; &#1089;&#1074;&#1077;&#1095;&#1082;&#1091;
- &#1076;&#1091;&#1083;&#1086; &#1080;&#1079; &#1091;&#1075;&#1083;&#1072;,
-
- &#1048; &#1078;&#1072;&#1088; &#1089;&#1086;&#1073;&#1083;&#1072;&#1079;&#1085;&#1072;
-
- &#1042;&#1079;&#1076;&#1099;&#1084;&#1072;&#1083;, &#1082;&#1072;&#1082;
- &#1072;&#1085;&#1075;&#1077;&#1083;, &#1076;&#1074;&#1072;
- &#1082;&#1088;&#1099;&#1083;&#1072;
-
- &#1050;&#1088;&#1077;&#1089;&#1090;&#1086;&#1086;&#1073;&#1088;&#1072;&#1079;&#1085;&#1086;.
-
+ &#1076;&#1091;&#1083;&#1086; &#1080;&#1079;
+ &#1091;&#1075;&#1083;&#1072;,
+ &#1048; &#1078;&#1072;&#1088;
+ &#1089;&#1086;&#1073;&#1083;&#1072;&#1079;&#1085;&#1072;
+ &#1042;&#1079;&#1076;&#1099;&#1084;&#1072;&#1083;,
+ &#1082;&#1072;&#1082; &#1072;&#1085;&#1075;&#1077;&#1083;,
+ &#1076;&#1074;&#1072; &#1082;&#1088;&#1099;&#1083;&#1072;
+
+ &#1050;&#1088;&#1077;&#1089;&#1090;&#1086;&#1086;&#1073;&#1088;&#1072;&#1079;&#1085;&#1086;.
-
&#1052;&#1077;&#1083;&#1086; &#1074;&#1077;&#1089;&#1100;
- &#1084;&#1077;&#1089;&#1103;&#1094; &#1074; &#1092;&#1077;&#1074;&#1088;&#1072;&#1083;&#1077;,
-
+ &#1084;&#1077;&#1089;&#1103;&#1094; &#1074;
+ &#1092;&#1077;&#1074;&#1088;&#1072;&#1083;&#1077;,
&#1048; &#1090;&#1086; &#1080; &#1076;&#1077;&#1083;&#1086;
-
- &#1057;&#1074;&#1077;&#1095;&#1072; &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;
- &#1085;&#1072; &#1089;&#1090;&#1086;&#1083;&#1077;,
-
- &#1057;&#1074;&#1077;&#1095;&#1072; &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
-
+ &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1075;&#1086;&#1088;&#1077;&#1083;&#1072; &#1085;&#1072;
+ &#1089;&#1090;&#1086;&#1083;&#1077;,
+ &#1057;&#1074;&#1077;&#1095;&#1072;
+ &#1075;&#1086;&#1088;&#1077;&#1083;&#1072;.
-
- -- &#1041;&#1086;&#1088;&#1080;&#1089; &#1055;&#1072;&#1089;&#1090;&#1077;&#1088;&#1085;&#1072;&#1082;,
- 1946
+ -- &#1041;&#1086;&#1088;&#1080;&#1089;
+ &#1055;&#1072;&#1089;&#1090;&#1077;&#1088;&#1085;&#1072;&#1082;, 1946
</VerbatimFormatted>
<Para start_line="105">
[end]
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain.xml
index 05dc732ee5a..9358a5f2023 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain.xml
@@ -12,13 +12,12 @@
The quick brown fox jumps over the lazy dog.
</Para>
<Para start_line="10">
- Military Intelligence Yukon rhosts penrep Weekly World News
- DSD Time Cohiba finks rail gun DF ~ Corporate Security NATOA
- CCS DEVGRP
+ Military Intelligence Yukon rhosts penrep Weekly World News DSD Time Cohiba
+ finks rail gun DF ~ Corporate Security NATOA CCS DEVGRP
</Para>
<Para start_line="13">
- CONUS Khaddafi NATIA data havens Spetznaz afsatcom BOP Semtex
- garbage KGB ^? 737 1080H 1080H Satellite imagery smuggle
+ CONUS Khaddafi NATIA data havens Spetznaz afsatcom BOP Semtex garbage KGB
+ ^? 737 1080H 1080H Satellite imagery smuggle
</Para>
<Para start_line="16">
[end]
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_explicit.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_explicit.xml
index 1db06b81f8d..c126fdda9c5 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_explicit.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_explicit.xml
@@ -1,4 +1,7 @@
<Document start_line="2">
+ <encoding start_line="2">
+ ascii
+ </encoding>
<head1 start_line="4">
NAME
</head1>
@@ -12,13 +15,12 @@
The quick brown fox jumps over the lazy dog.
</Para>
<Para start_line="12">
- Military Intelligence Yukon rhosts penrep Weekly World News
- DSD Time Cohiba finks rail gun DF ~ Corporate Security NATOA
- CCS DEVGRP
+ Military Intelligence Yukon rhosts penrep Weekly World News DSD Time Cohiba
+ finks rail gun DF ~ Corporate Security NATOA CCS DEVGRP
</Para>
<Para start_line="15">
- CONUS Khaddafi NATIA data havens Spetznaz afsatcom BOP Semtex
- garbage KGB ^? 737 1080H 1080H Satellite imagery smuggle
+ CONUS Khaddafi NATIA data havens Spetznaz afsatcom BOP Semtex garbage KGB
+ ^? 737 1080H 1080H Satellite imagery smuggle
</Para>
<Para start_line="18">
[end]
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_latin1.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_latin1.xml
index 74f9baeb739..fc157636538 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_latin1.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_latin1.xml
@@ -1,10 +1,12 @@
<Document start_line="4">
+ <encoding start_line="4">
+ iso-8859-1
+ </encoding>
<head1 start_line="6">
NAME
</head1>
<Para start_line="8">
- simple_text_document -- an explicitly Latin-1 (ASCII subset)
- test document
+ simple_text_document -- an explicitly Latin-1 (ASCII subset) test document
</Para>
<head1 start_line="10">
TEXT
@@ -13,13 +15,12 @@
The quick brown fox jumps over the lazy dog.
</Para>
<Para start_line="14">
- Military Intelligence Yukon rhosts penrep Weekly World News
- DSD Time Cohiba finks rail gun DF ~ Corporate Security NATOA
- CCS DEVGRP
+ Military Intelligence Yukon rhosts penrep Weekly World News DSD Time Cohiba
+ finks rail gun DF ~ Corporate Security NATOA CCS DEVGRP
</Para>
<Para start_line="17">
- CONUS Khaddafi NATIA data havens Spetznaz afsatcom BOP Semtex
- garbage KGB ^? 737 1080H 1080H Satellite imagery smuggle
+ CONUS Khaddafi NATIA data havens Spetznaz afsatcom BOP Semtex garbage KGB
+ ^? 737 1080H 1080H Satellite imagery smuggle
</Para>
<Para start_line="20">
[end]
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_utf8.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_utf8.xml
index f78846b54ac..71da6be0e16 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_utf8.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/plain_utf8.xml
@@ -1,10 +1,12 @@
<Document start_line="4">
+ <encoding start_line="4">
+ utf8
+ </encoding>
<head1 start_line="6">
NAME
</head1>
<Para start_line="8">
- simple_text_document -- an explicitly UTF8 (ASCII subset)
- test document
+ simple_text_document -- an explicitly UTF8 (ASCII subset) test document
</Para>
<head1 start_line="10">
TEXT
@@ -13,13 +15,12 @@
The quick brown fox jumps over the lazy dog.
</Para>
<Para start_line="14">
- Military Intelligence Yukon rhosts penrep Weekly World News
- DSD Time Cohiba finks rail gun DF ~ Corporate Security NATOA
- CCS DEVGRP
+ Military Intelligence Yukon rhosts penrep Weekly World News DSD Time Cohiba
+ finks rail gun DF ~ Corporate Security NATOA CCS DEVGRP
</Para>
<Para start_line="17">
- CONUS Khaddafi NATIA data havens Spetznaz afsatcom BOP Semtex
- garbage KGB ^? 737 1080H 1080H Satellite imagery smuggle
+ CONUS Khaddafi NATIA data havens Spetznaz afsatcom BOP Semtex garbage KGB
+ ^? 737 1080H 1080H Satellite imagery smuggle
</Para>
<Para start_line="20">
[end]
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/polish_utf8.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/polish_utf8.xml
index 1aa77ec0295..2778571c956 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/polish_utf8.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/polish_utf8.xml
@@ -1,34 +1,34 @@
<Document start_line="2">
+ <encoding start_line="2">
+ utf8
+ </encoding>
<head1 start_line="4">
NAME
</head1>
<Para start_line="6">
- W&#346;R&#211;D NOCNEJ CISZY -- explicitly utf8 test document
- in Polish
+ W&#346;R&#211;D NOCNEJ CISZY -- explicitly utf8 test document in Polish
</Para>
<head1 start_line="8">
DESCRIPTION
</head1>
<Para start_line="10">
- This is a test Pod document in UTF8. Its content is the
- lyrics to the Polish Christmas carol &#34;W&#347;r&#243;d
- nocnej ciszy&#34;.
+ This is a test Pod document in UTF8. Its content is the lyrics to the
+ Polish Christmas carol &#34;W&#347;r&#243;d nocnej ciszy&#34;.
</Para>
<Para start_line="13">
- W&#347;r&#243;d nocnej ciszy g&#322;os si&#281; rozchodzi:
- / Wsta&#324;cie, pasterze, B&#243;g si&#281; nam rodzi!
- / Czym pr&#281;dzej si&#281; wybierajcie, / Do Betlejem
- pospieszajcie / Przywita&#263; Pana.
+ W&#347;r&#243;d nocnej ciszy g&#322;os si&#281; rozchodzi: / Wsta&#324;cie,
+ pasterze, B&#243;g si&#281; nam rodzi! / Czym pr&#281;dzej si&#281;
+ wybierajcie, / Do Betlejem pospieszajcie / Przywita&#263; Pana.
</Para>
<Para start_line="19">
- Poszli, znale&#378;li Dzieci&#261;tko w &#380;&#322;obie
- / Z wszystkimi znaki danymi sobie. / Jako Bogu cze&#347;&#263;
- Mu dali, / A witaj&#261;c zawo&#322;ali / Z wielkiej rado&#347;ci:
+ Poszli, znale&#378;li Dzieci&#261;tko w &#380;&#322;obie / Z wszystkimi
+ znaki danymi sobie. / Jako Bogu cze&#347;&#263; Mu dali, / A
+ witaj&#261;c zawo&#322;ali / Z wielkiej rado&#347;ci:
</Para>
<Para start_line="25">
- Ach, witaj Zbawco z dawno &#380;&#261;dany, / Wiele tysi&#281;cy
- lat wygl&#261;dany / Na Ciebie kr&#243;le, prorocy / Czekali,
- a Ty&#347; tej nocy / Nam si&#281; objawi&#322;.
+ Ach, witaj Zbawco z dawno &#380;&#261;dany, / Wiele tysi&#281;cy lat
+ wygl&#261;dany / Na Ciebie kr&#243;le, prorocy / Czekali, a Ty&#347;
+ tej nocy / Nam si&#281; objawi&#322;.
</Para>
<Para start_line="31">
I my czekamy na Ciebie, Pana, / A skoro przyjdziesz na g&#322;os
@@ -43,49 +43,27 @@
</Para>
<VerbatimFormatted start_line="41" xml:space="preserve">
W&#347;r&#243;d nocnej ciszy g&#322;os si&#281; rozchodzi:
-
Wsta&#324;cie, pasterze, B&#243;g si&#281; nam rodzi!
-
Czym pr&#281;dzej si&#281; wybierajcie,
-
Do Betlejem pospieszajcie
-
Przywita&#263; Pana.
-
-
Poszli, znale&#378;li Dzieci&#261;tko w &#380;&#322;obie
-
Z wszystkimi znaki danymi sobie.
-
Jako Bogu cze&#347;&#263; Mu dali,
-
A witaj&#261;c zawo&#322;ali
-
Z wielkiej rado&#347;ci:
-
-
Ach, witaj Zbawco z dawno &#380;&#261;dany,
-
Wiele tysi&#281;cy lat wygl&#261;dany
-
Na Ciebie kr&#243;le, prorocy
-
Czekali, a Ty&#347; tej nocy
-
Nam si&#281; objawi&#322;.
-
-
I my czekamy na Ciebie, Pana,
-
A skoro przyjdziesz na g&#322;os kap&#322;ana,
-
Padniemy na twarz przed Tob&#261;,
-
Wierz&#261;c, &#380;e&#347; jest pod os&#322;on&#261;
-
Chleba i wina.
</VerbatimFormatted>
<Para start_line="65">
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/s2763_sjis.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/s2763_sjis.xml
index 55a4fd00274..fd1ac19082f 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/s2763_sjis.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/s2763_sjis.xml
@@ -1,4 +1,7 @@
<Document start_line="2">
+ <encoding start_line="2">
+ shiftjis
+ </encoding>
<head1 start_line="4">
NAME
</head1>
@@ -9,8 +12,8 @@
DESCRIPTION
</head1>
<Para start_line="10">
- This is a test Pod document in Shift-JIS. Its content is
- some uninteresting product specs I found on the Net.
+ This is a test Pod document in Shift-JIS. Its content is some uninteresting
+ product specs I found on the Net.
</Para>
<Para start_line="13">
It&#39;s an textitem list:
@@ -26,7 +29,8 @@
&#20809;&#28304;
</item-text>
<Para start_line="23">
- GZ4 &#12480;&#12452;&#12463;&#12525;&#12452;&#12483;&#12463;&#12511;&#12521;&#12540;&#12521;&#12531;&#12503;
+ GZ4
+ &#12480;&#12452;&#12463;&#12525;&#12452;&#12483;&#12463;&#12511;&#12521;&#12540;&#12521;&#12531;&#12503;
12V 10W&#215;1
</Para>
<item-text start_line="25">
@@ -45,7 +49,8 @@
&#26448;&#36074;
</item-text>
<Para start_line="35">
- &#27193;&#33026; &#12450;&#12523;&#12511;&#12289;&#12450;&#12523;&#12510;&#12452;&#12488;&#20181;&#19978;
+ &#27193;&#33026;
+ &#12450;&#12523;&#12511;&#12289;&#12450;&#12523;&#12510;&#12452;&#12488;&#20181;&#19978;
&#12460;&#12521;&#12473;
</Para>
<item-text start_line="37">
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/thai_iso11.xml b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/thai_iso11.xml
index a9f4bb7a6eb..8d0f8dbc7ec 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/thai_iso11.xml
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/corpus/thai_iso11.xml
@@ -8,38 +8,58 @@
<head1 start_line="6">
DESCRIPTION
</head1>
+ <encoding start_line="8">
+ iso-8859-11
+ </encoding>
<Para start_line="10">
- This is a test Pod document in ISO-8859-11. Its content
- is a poem to (by?) Khun Thong Dang (&#3616;&#3634;&#3614;&#3617;&#3636;&#3656;&#3591;&#3617;&#3591;&#3588;&#3621;),
+ This is a test Pod document in ISO-8859-11. Its content is a poem to (by?)
+ Khun Thong Dang
+ (&#3616;&#3634;&#3614;&#3617;&#3636;&#3656;&#3591;&#3617;&#3591;&#3588;&#3621;),
the pet of Bhumibol, the King of Thailand.
</Para>
<Para start_line="14">
As four flowed paragraphs:
</Para>
<Para start_line="16">
- &#3663; &#3614;&#3619;&#3632;&#3648;&#3617;&#3605;&#3605;&#3634;&#3649;&#3592;&#3656;&#3617;&#3592;&#3633;&#3610;&#3651;&#3592;&#3652;&#3612;&#3607;&#3626;&#3618;&#3634;&#3617;
- / &#3614;&#3619;&#3632;&#3607;&#3633;&#3618;&#3591;&#3634;&#3617;...&#3617;&#3629;&#3591;&#3616;&#3634;&#3614;&#3606;&#3656;&#3634;&#3618;&#3617;&#3636;&#3606;&#3656;&#3634;&#3618;&#3606;&#3629;&#3609;
- / &#3648;&#3585;&#3621;&#3657;&#3634;&#3631; &#3609;&#3657;&#3629;&#3617;&#3648;&#3585;&#3621;&#3657;&#3634;&#3631;
+ &#3663;
+ &#3614;&#3619;&#3632;&#3648;&#3617;&#3605;&#3605;&#3634;&#3649;&#3592;&#3656;&#3617;&#3592;&#3633;&#3610;&#3651;&#3592;&#3652;&#3612;&#3607;&#3626;&#3618;&#3634;&#3617;
+ /
+ &#3614;&#3619;&#3632;&#3607;&#3633;&#3618;&#3591;&#3634;&#3617;...&#3617;&#3629;&#3591;&#3616;&#3634;&#3614;&#3606;&#3656;&#3634;&#3618;&#3617;&#3636;&#3606;&#3656;&#3634;&#3618;&#3606;&#3629;&#3609;
+ / &#3648;&#3585;&#3621;&#3657;&#3634;&#3631;
+ &#3609;&#3657;&#3629;&#3617;&#3648;&#3585;&#3621;&#3657;&#3634;&#3631;
&#3614;&#3592;&#3609;&#3660;&#3648;&#3619;&#3637;&#3618;&#3591;&#3648;&#3612;&#3604;&#3637;&#3618;&#3591;&#3585;&#3621;&#3629;&#3609;
- / &#3626;&#3639;&#3656;&#3629;&#3626;&#3632;&#3607;&#3657;&#3629;&#3609;&#3614;&#3619;&#3632;&#3585;&#3634;&#3619;&#3640;&#3603;&#3618;&#3660;&#3629;&#3640;&#3656;&#3609;&#3604;&#3623;&#3591;&#3617;&#3634;&#3609;&#3674;
+ /
+ &#3626;&#3639;&#3656;&#3629;&#3626;&#3632;&#3607;&#3657;&#3629;&#3609;&#3614;&#3619;&#3632;&#3585;&#3634;&#3619;&#3640;&#3603;&#3618;&#3660;&#3629;&#3640;&#3656;&#3609;&#3604;&#3623;&#3591;&#3617;&#3634;&#3609;&#3674;
</Para>
<Para start_line="21">
- &#3663; &#3607;&#3640;&#3585;&#3616;&#3634;&#3614;&#3617;&#3636;&#3656;&#3591;&#3617;&#3591;&#3588;&#3621;&#3618;&#3621;&#3649;&#3621;&#3657;&#3623;&#3618;&#3636;&#3657;&#3617;
- / &#3648;&#3629;&#3639;&#3657;&#3629;&#3629;&#3585;&#3629;&#3636;&#3656;&#3617;&#3621;&#3657;&#3635;&#3588;&#3656;&#3634;&#3617;&#3627;&#3634;&#3624;&#3634;&#3621;
- / &#3629;&#3618;&#3634;&#3585;&#3648;&#3611;&#3655;&#3609;&#3588;&#3640;&#3603;&#3607;&#3629;&#3591;&#3649;&#3604;&#3591;&#3609;&#3633;&#3585;&#3592;&#3633;&#3585;&#3629;&#3618;&#3641;&#3656;&#3591;&#3634;&#3609;
- / &#3648;&#3613;&#3657;&#3634;&#3588;&#3621;&#3629;&#3648;&#3588;&#3621;&#3637;&#3618;&#3610;&#3607;&#3617;&#3634;&#3621;&#3618;&#3660;&#3614;&#3619;&#3632;&#3616;&#3641;&#3617;&#3636;&#3614;&#3621;&#3674;
+ &#3663;
+ &#3607;&#3640;&#3585;&#3616;&#3634;&#3614;&#3617;&#3636;&#3656;&#3591;&#3617;&#3591;&#3588;&#3621;&#3618;&#3621;&#3649;&#3621;&#3657;&#3623;&#3618;&#3636;&#3657;&#3617;
+ /
+ &#3648;&#3629;&#3639;&#3657;&#3629;&#3629;&#3585;&#3629;&#3636;&#3656;&#3617;&#3621;&#3657;&#3635;&#3588;&#3656;&#3634;&#3617;&#3627;&#3634;&#3624;&#3634;&#3621;
+ /
+ &#3629;&#3618;&#3634;&#3585;&#3648;&#3611;&#3655;&#3609;&#3588;&#3640;&#3603;&#3607;&#3629;&#3591;&#3649;&#3604;&#3591;&#3609;&#3633;&#3585;&#3592;&#3633;&#3585;&#3629;&#3618;&#3641;&#3656;&#3591;&#3634;&#3609;
+ /
+ &#3648;&#3613;&#3657;&#3634;&#3588;&#3621;&#3629;&#3648;&#3588;&#3621;&#3637;&#3618;&#3610;&#3607;&#3617;&#3634;&#3621;&#3618;&#3660;&#3614;&#3619;&#3632;&#3616;&#3641;&#3617;&#3636;&#3614;&#3621;&#3674;
</Para>
<Para start_line="26">
- &#3663; &#3614;&#3619;&#3632;&#3627;&#3633;&#3605;&#3606;&#3660;&#3610;&#3640;&#3597;&#3607;&#3619;&#3591;&#3648;&#3610;&#3636;&#3585;&#3627;&#3621;&#3657;&#3634;&#3614;&#3621;&#3636;&#3585;&#3627;&#3621;&#3657;&#3634;&#3648;&#3586;&#3637;&#3618;&#3623;
- / &#3614;&#3619;&#3632;&#3650;&#3629;&#3625;&#3600;&#3660;&#3648;&#3619;&#3637;&#3618;&#3623;&#3605;&#3619;&#3633;&#3626;&#3627;&#3657;&#3634;&#3617;&#3626;&#3591;&#3588;&#3619;&#3634;&#3617;&#3593;&#3621;
- / &#3614;&#3619;&#3632;&#3607;&#3633;&#3618; &#3608; &#3650;&#3629;&#3616;&#3634;&#3626;&#3612;&#3656;&#3629;&#3591;&#3606;&#3656;&#3629;&#3591;&#3626;&#3585;&#3621;
- / &#3614;&#3619;&#3632;&#3618;&#3640;&#3588;&#3621;&#3610;&#3634;&#3607;&#3618;&#3656;&#3634;&#3591;&#3626;&#3639;&#3610;&#3626;&#3619;&#3657;&#3634;&#3591;&#3652;&#3607;&#3618;&#3674;
+ &#3663;
+ &#3614;&#3619;&#3632;&#3627;&#3633;&#3605;&#3606;&#3660;&#3610;&#3640;&#3597;&#3607;&#3619;&#3591;&#3648;&#3610;&#3636;&#3585;&#3627;&#3621;&#3657;&#3634;&#3614;&#3621;&#3636;&#3585;&#3627;&#3621;&#3657;&#3634;&#3648;&#3586;&#3637;&#3618;&#3623;
+ /
+ &#3614;&#3619;&#3632;&#3650;&#3629;&#3625;&#3600;&#3660;&#3648;&#3619;&#3637;&#3618;&#3623;&#3605;&#3619;&#3633;&#3626;&#3627;&#3657;&#3634;&#3617;&#3626;&#3591;&#3588;&#3619;&#3634;&#3617;&#3593;&#3621;
+ / &#3614;&#3619;&#3632;&#3607;&#3633;&#3618; &#3608;
+ &#3650;&#3629;&#3616;&#3634;&#3626;&#3612;&#3656;&#3629;&#3591;&#3606;&#3656;&#3629;&#3591;&#3626;&#3585;&#3621;
+ /
+ &#3614;&#3619;&#3632;&#3618;&#3640;&#3588;&#3621;&#3610;&#3634;&#3607;&#3618;&#3656;&#3634;&#3591;&#3626;&#3639;&#3610;&#3626;&#3619;&#3657;&#3634;&#3591;&#3652;&#3607;&#3618;&#3674;
</Para>
<Para start_line="31">
- &#3663; &#3609;&#3657;&#3629;&#3617;&#3648;&#3585;&#3621;&#3657;&#3634;&#3648;&#3607;&#3636;&#3604;&#3629;&#3591;&#3588;&#3660;&#3619;&#3634;&#3594;&#3633;&#3609;&#3624;&#3619;&#3633;&#3609;&#3618;&#3660;&#3624;&#3619;&#3637;
- / &#3610;&#3634;&#3619;&#3617;&#3637;&#3627;&#3617;&#3639;&#3656;&#3609;&#3588;&#3641;&#3656;&#3588;&#3591;&#3629;&#3626;&#3591;&#3652;&#3586;&#3618;
- / &#3585;&#3619;&#3619;&#3604;&#3636;&#3619;&#3634;&#3594;&#3585;&#3620;&#3625;&#3598;&#3634;&#3585;&#3657;&#3629;&#3591;&#3627;&#3621;&#3657;&#3634;&#3652;&#3585;&#3621;
- / &#3611;&#3621;&#3639;&#3657;&#3617;&#3611;&#3619;&#3632;&#3607;&#3633;&#3610;&#3606;&#3657;&#3623;&#3609;&#3607;&#3640;&#3585;&#3651;&#3592;&#3649;&#3627;&#3656;&#3591;&#3652;&#3607;&#3657;&#3648;&#3629;&#3618;&#3674;&#3632;&#3675;
+ &#3663;
+ &#3609;&#3657;&#3629;&#3617;&#3648;&#3585;&#3621;&#3657;&#3634;&#3648;&#3607;&#3636;&#3604;&#3629;&#3591;&#3588;&#3660;&#3619;&#3634;&#3594;&#3633;&#3609;&#3624;&#3619;&#3633;&#3609;&#3618;&#3660;&#3624;&#3619;&#3637;
+ /
+ &#3610;&#3634;&#3619;&#3617;&#3637;&#3627;&#3617;&#3639;&#3656;&#3609;&#3588;&#3641;&#3656;&#3588;&#3591;&#3629;&#3626;&#3591;&#3652;&#3586;&#3618;
+ /
+ &#3585;&#3619;&#3619;&#3604;&#3636;&#3619;&#3634;&#3594;&#3585;&#3620;&#3625;&#3598;&#3634;&#3585;&#3657;&#3629;&#3591;&#3627;&#3621;&#3657;&#3634;&#3652;&#3585;&#3621;
+ /
+ &#3611;&#3621;&#3639;&#3657;&#3617;&#3611;&#3619;&#3632;&#3607;&#3633;&#3610;&#3606;&#3657;&#3623;&#3609;&#3607;&#3640;&#3585;&#3651;&#3592;&#3649;&#3627;&#3656;&#3591;&#3652;&#3607;&#3657;&#3648;&#3629;&#3618;&#3674;&#3632;&#3675;
</Para>
<head2 start_line="36">
Verbatim Section
@@ -48,44 +68,42 @@
And as a verbatim section:
</Para>
<VerbatimFormatted start_line="40" xml:space="preserve">
- &#3663; &#3614;&#3619;&#3632;&#3648;&#3617;&#3605;&#3605;&#3634;&#3649;&#3592;&#3656;&#3617;&#3592;&#3633;&#3610;&#3651;&#3592;&#3652;&#3612;&#3607;&#3626;&#3618;&#3634;&#3617;
-
- &#3614;&#3619;&#3632;&#3607;&#3633;&#3618;&#3591;&#3634;&#3617;...&#3617;&#3629;&#3591;&#3616;&#3634;&#3614;&#3606;&#3656;&#3634;&#3618;&#3617;&#3636;&#3606;&#3656;&#3634;&#3618;&#3606;&#3629;&#3609;
-
- &#3648;&#3585;&#3621;&#3657;&#3634;&#3631; &#3609;&#3657;&#3629;&#3617;&#3648;&#3585;&#3621;&#3657;&#3634;&#3631;
+ &#3663;
+ &#3614;&#3619;&#3632;&#3648;&#3617;&#3605;&#3605;&#3634;&#3649;&#3592;&#3656;&#3617;&#3592;&#3633;&#3610;&#3651;&#3592;&#3652;&#3612;&#3607;&#3626;&#3618;&#3634;&#3617;
+
+ &#3614;&#3619;&#3632;&#3607;&#3633;&#3618;&#3591;&#3634;&#3617;...&#3617;&#3629;&#3591;&#3616;&#3634;&#3614;&#3606;&#3656;&#3634;&#3618;&#3617;&#3636;&#3606;&#3656;&#3634;&#3618;&#3606;&#3629;&#3609;
+ &#3648;&#3585;&#3621;&#3657;&#3634;&#3631;
+ &#3609;&#3657;&#3629;&#3617;&#3648;&#3585;&#3621;&#3657;&#3634;&#3631;
&#3614;&#3592;&#3609;&#3660;&#3648;&#3619;&#3637;&#3618;&#3591;&#3648;&#3612;&#3604;&#3637;&#3618;&#3591;&#3585;&#3621;&#3629;&#3609;
-
- &#3626;&#3639;&#3656;&#3629;&#3626;&#3632;&#3607;&#3657;&#3629;&#3609;&#3614;&#3619;&#3632;&#3585;&#3634;&#3619;&#3640;&#3603;&#3618;&#3660;&#3629;&#3640;&#3656;&#3609;&#3604;&#3623;&#3591;&#3617;&#3634;&#3609;&#3674;
-
+
+ &#3626;&#3639;&#3656;&#3629;&#3626;&#3632;&#3607;&#3657;&#3629;&#3609;&#3614;&#3619;&#3632;&#3585;&#3634;&#3619;&#3640;&#3603;&#3618;&#3660;&#3629;&#3640;&#3656;&#3609;&#3604;&#3623;&#3591;&#3617;&#3634;&#3609;&#3674;
-
- &#3663; &#3607;&#3640;&#3585;&#3616;&#3634;&#3614;&#3617;&#3636;&#3656;&#3591;&#3617;&#3591;&#3588;&#3621;&#3618;&#3621;&#3649;&#3621;&#3657;&#3623;&#3618;&#3636;&#3657;&#3617;
-
- &#3648;&#3629;&#3639;&#3657;&#3629;&#3629;&#3585;&#3629;&#3636;&#3656;&#3617;&#3621;&#3657;&#3635;&#3588;&#3656;&#3634;&#3617;&#3627;&#3634;&#3624;&#3634;&#3621;
-
- &#3629;&#3618;&#3634;&#3585;&#3648;&#3611;&#3655;&#3609;&#3588;&#3640;&#3603;&#3607;&#3629;&#3591;&#3649;&#3604;&#3591;&#3609;&#3633;&#3585;&#3592;&#3633;&#3585;&#3629;&#3618;&#3641;&#3656;&#3591;&#3634;&#3609;
-
- &#3648;&#3613;&#3657;&#3634;&#3588;&#3621;&#3629;&#3648;&#3588;&#3621;&#3637;&#3618;&#3610;&#3607;&#3617;&#3634;&#3621;&#3618;&#3660;&#3614;&#3619;&#3632;&#3616;&#3641;&#3617;&#3636;&#3614;&#3621;&#3674;
-
+ &#3663;
+ &#3607;&#3640;&#3585;&#3616;&#3634;&#3614;&#3617;&#3636;&#3656;&#3591;&#3617;&#3591;&#3588;&#3621;&#3618;&#3621;&#3649;&#3621;&#3657;&#3623;&#3618;&#3636;&#3657;&#3617;
+
+ &#3648;&#3629;&#3639;&#3657;&#3629;&#3629;&#3585;&#3629;&#3636;&#3656;&#3617;&#3621;&#3657;&#3635;&#3588;&#3656;&#3634;&#3617;&#3627;&#3634;&#3624;&#3634;&#3621;
+
+ &#3629;&#3618;&#3634;&#3585;&#3648;&#3611;&#3655;&#3609;&#3588;&#3640;&#3603;&#3607;&#3629;&#3591;&#3649;&#3604;&#3591;&#3609;&#3633;&#3585;&#3592;&#3633;&#3585;&#3629;&#3618;&#3641;&#3656;&#3591;&#3634;&#3609;
+
+ &#3648;&#3613;&#3657;&#3634;&#3588;&#3621;&#3629;&#3648;&#3588;&#3621;&#3637;&#3618;&#3610;&#3607;&#3617;&#3634;&#3621;&#3618;&#3660;&#3614;&#3619;&#3632;&#3616;&#3641;&#3617;&#3636;&#3614;&#3621;&#3674;
-
- &#3663; &#3614;&#3619;&#3632;&#3627;&#3633;&#3605;&#3606;&#3660;&#3610;&#3640;&#3597;&#3607;&#3619;&#3591;&#3648;&#3610;&#3636;&#3585;&#3627;&#3621;&#3657;&#3634;&#3614;&#3621;&#3636;&#3585;&#3627;&#3621;&#3657;&#3634;&#3648;&#3586;&#3637;&#3618;&#3623;
-
- &#3614;&#3619;&#3632;&#3650;&#3629;&#3625;&#3600;&#3660;&#3648;&#3619;&#3637;&#3618;&#3623;&#3605;&#3619;&#3633;&#3626;&#3627;&#3657;&#3634;&#3617;&#3626;&#3591;&#3588;&#3619;&#3634;&#3617;&#3593;&#3621;
-
- &#3614;&#3619;&#3632;&#3607;&#3633;&#3618; &#3608; &#3650;&#3629;&#3616;&#3634;&#3626;&#3612;&#3656;&#3629;&#3591;&#3606;&#3656;&#3629;&#3591;&#3626;&#3585;&#3621;
-
- &#3614;&#3619;&#3632;&#3618;&#3640;&#3588;&#3621;&#3610;&#3634;&#3607;&#3618;&#3656;&#3634;&#3591;&#3626;&#3639;&#3610;&#3626;&#3619;&#3657;&#3634;&#3591;&#3652;&#3607;&#3618;&#3674;
-
+ &#3663;
+ &#3614;&#3619;&#3632;&#3627;&#3633;&#3605;&#3606;&#3660;&#3610;&#3640;&#3597;&#3607;&#3619;&#3591;&#3648;&#3610;&#3636;&#3585;&#3627;&#3621;&#3657;&#3634;&#3614;&#3621;&#3636;&#3585;&#3627;&#3621;&#3657;&#3634;&#3648;&#3586;&#3637;&#3618;&#3623;
+
+ &#3614;&#3619;&#3632;&#3650;&#3629;&#3625;&#3600;&#3660;&#3648;&#3619;&#3637;&#3618;&#3623;&#3605;&#3619;&#3633;&#3626;&#3627;&#3657;&#3634;&#3617;&#3626;&#3591;&#3588;&#3619;&#3634;&#3617;&#3593;&#3621;
+ &#3614;&#3619;&#3632;&#3607;&#3633;&#3618; &#3608;
+ &#3650;&#3629;&#3616;&#3634;&#3626;&#3612;&#3656;&#3629;&#3591;&#3606;&#3656;&#3629;&#3591;&#3626;&#3585;&#3621;
+
+ &#3614;&#3619;&#3632;&#3618;&#3640;&#3588;&#3621;&#3610;&#3634;&#3607;&#3618;&#3656;&#3634;&#3591;&#3626;&#3639;&#3610;&#3626;&#3619;&#3657;&#3634;&#3591;&#3652;&#3607;&#3618;&#3674;
-
- &#3663; &#3609;&#3657;&#3629;&#3617;&#3648;&#3585;&#3621;&#3657;&#3634;&#3648;&#3607;&#3636;&#3604;&#3629;&#3591;&#3588;&#3660;&#3619;&#3634;&#3594;&#3633;&#3609;&#3624;&#3619;&#3633;&#3609;&#3618;&#3660;&#3624;&#3619;&#3637;
-
- &#3610;&#3634;&#3619;&#3617;&#3637;&#3627;&#3617;&#3639;&#3656;&#3609;&#3588;&#3641;&#3656;&#3588;&#3591;&#3629;&#3626;&#3591;&#3652;&#3586;&#3618;
-
- &#3585;&#3619;&#3619;&#3604;&#3636;&#3619;&#3634;&#3594;&#3585;&#3620;&#3625;&#3598;&#3634;&#3585;&#3657;&#3629;&#3591;&#3627;&#3621;&#3657;&#3634;&#3652;&#3585;&#3621;
-
- &#3611;&#3621;&#3639;&#3657;&#3617;&#3611;&#3619;&#3632;&#3607;&#3633;&#3610;&#3606;&#3657;&#3623;&#3609;&#3607;&#3640;&#3585;&#3651;&#3592;&#3649;&#3627;&#3656;&#3591;&#3652;&#3607;&#3657;&#3648;&#3629;&#3618;&#3674;&#3632;&#3675;
+ &#3663;
+ &#3609;&#3657;&#3629;&#3617;&#3648;&#3585;&#3621;&#3657;&#3634;&#3648;&#3607;&#3636;&#3604;&#3629;&#3591;&#3588;&#3660;&#3619;&#3634;&#3594;&#3633;&#3609;&#3624;&#3619;&#3633;&#3609;&#3618;&#3660;&#3624;&#3619;&#3637;
+
+ &#3610;&#3634;&#3619;&#3617;&#3637;&#3627;&#3617;&#3639;&#3656;&#3609;&#3588;&#3641;&#3656;&#3588;&#3591;&#3629;&#3626;&#3591;&#3652;&#3586;&#3618;
+
+ &#3585;&#3619;&#3619;&#3604;&#3636;&#3619;&#3634;&#3594;&#3585;&#3620;&#3625;&#3598;&#3634;&#3585;&#3657;&#3629;&#3591;&#3627;&#3621;&#3657;&#3634;&#3652;&#3585;&#3621;
+
+ &#3611;&#3621;&#3639;&#3657;&#3617;&#3611;&#3619;&#3632;&#3607;&#3633;&#3610;&#3606;&#3657;&#3623;&#3609;&#3607;&#3640;&#3585;&#3651;&#3592;&#3649;&#3627;&#3656;&#3591;&#3652;&#3607;&#3657;&#3648;&#3629;&#3618;&#3674;&#3632;&#3675;
</VerbatimFormatted>
<Para start_line="60">
[end]
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/enc-chars.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/enc-chars.t
new file mode 100644
index 00000000000..65b4259df20
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/enc-chars.t
@@ -0,0 +1,61 @@
+# tell parser the source POD has already been decoded from bytes to chars
+# =encoding line should be ignored
+# utf8 characters should come through unscathed
+
+BEGIN {
+ if($ENV{PERL_CORE}) {
+ chdir 't';
+ @INC = '../lib';
+ }
+
+ use Config;
+ if ($Config::Config{'extensions'} !~ /\bEncode\b/) {
+ print "1..0 # Skip: Encode was not built\n";
+ exit 0;
+ }
+}
+
+use strict;
+use Test;
+BEGIN { plan tests => 3 };
+
+use Pod::Simple::DumpAsXML;
+use Pod::Simple::XMLOutStream;
+
+
+my $parser = Pod::Simple::XMLOutStream->new;
+$parser->parse_characters(1);
+my $output = '';
+$parser->output_string( \$output );
+$parser->parse_string_document(qq{
+
+=encoding bogocode
+
+=head1 DESCRIPTION
+
+Confirm that if we tell the parser to expect character data, it avoids all
+the code paths that might attempt to decode the source from bytes to chars.
+
+The r\x{101}in in \x{15E}pain \x{FB02}oods the plain
+
+});
+
+ok(1); # parsed without exception
+
+if($output =~ /POD ERRORS/) {
+ ok(0);
+}
+else {
+ ok(1); # no errors
+}
+
+$output =~ s{&#(\d+);}{chr($1)}eg;
+
+if($output =~ /The r\x{101}in in \x{15E}pain \x{FB02}oods the plain/) {
+ ok(1); # data was not messed up
+}
+else {
+ ok(0);
+}
+
+exit;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/encod04.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/encod04.t
new file mode 100644
index 00000000000..fe2c314c39b
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/encod04.t
@@ -0,0 +1,143 @@
+# The encoding detection heuristic will choose UTF8 or Latin-1. The current
+# implementation will usually treat CP1252 (aka "Win-Latin-1") as Latin-1 but
+# can be fooled into seeing it as UTF8.
+#
+# Note 1: Neither guess is 'correct' since even if we choose Latin-1, all the
+# smart quote symbols will be rendered as control characters
+#
+# Note 2: the guess is only applied if the source POD omits =encoding, so
+# CP1252 source will render correctly if properly declared
+#
+
+BEGIN {
+ if($ENV{PERL_CORE}) {
+ chdir 't';
+ @INC = '../lib';
+ }
+}
+
+use strict;
+use Test;
+BEGIN { plan tests => 5 };
+
+ok 1;
+
+use Pod::Simple::DumpAsXML;
+use Pod::Simple::XMLOutStream;
+
+
+# Initial, isolated, non-ASCII byte triggers Latin-1 guess and later
+# multi-byte sequence is not considered by heuristic.
+
+my @output_lines = split m/[\cm\cj]+/, Pod::Simple::XMLOutStream->_out( qq{
+
+=head1 NAME
+
+Em::Dash \x97 \x91CAF\xC9\x92
+
+=cut
+
+} );
+
+my($guess) = "@output_lines" =~ m{Non-ASCII.*?Assuming ([\w-]+)};
+if( $guess ) {
+ if( $guess eq 'ISO8859-1' ) {
+ if( grep m{Dash (\x97|&#x97;|&#151;)}, @output_lines ) {
+ ok 1;
+ } else {
+ ok 0;
+ print "# failed to find expected control character in output\n"
+ }
+ } else {
+ ok 0;
+ print "# parser guessed wrong encoding expected 'ISO8859-1' got '$guess'\n";
+ }
+} else {
+ ok 0;
+ print "# parser failed to detect non-ASCII bytes in input\n";
+}
+
+
+# Initial smart-quote character triggers Latin-1 guess as expected
+
+@output_lines = split m/[\cm\cj]+/, Pod::Simple::XMLOutStream->_out( qq{
+
+=head1 NAME
+
+Smart::Quote - \x91FUT\xC9\x92
+
+=cut
+
+} );
+
+($guess) = "@output_lines" =~ m{Non-ASCII.*?Assuming ([\w-]+)};
+if( $guess ) {
+ if( $guess eq 'ISO8859-1' ) {
+ ok 1;
+ } else {
+ ok 0;
+ print "# parser guessed wrong encoding expected 'ISO8859-1' got '$guess'\n";
+ }
+} else {
+ ok 0;
+ print "# parser failed to detect non-ASCII bytes in input\n";
+}
+
+
+# Initial accented character followed by 'smart' apostrophe causes heuristic
+# to choose UTF8 (a rather contrived example)
+
+@output_lines = split m/[\cm\cj]+/, Pod::Simple::XMLOutStream->_out( qq{
+
+=head1 NAME
+
+Smart::Apostrophe::Fail - L\xC9\x92STRANGE
+
+=cut
+
+} );
+
+($guess) = "@output_lines" =~ m{Non-ASCII.*?Assuming ([\w-]+)};
+if( $guess ) {
+ if( $guess eq 'UTF-8' ) {
+ ok 1;
+ } else {
+ ok 0;
+ print "# parser guessed wrong encoding expected 'UTF-8' got '$guess'\n";
+ }
+} else {
+ ok 0;
+ print "# parser failed to detect non-ASCII bytes in input\n";
+}
+
+
+# The previous example used a CP1252 byte sequence that also happened to be a
+# valid UTF8 byte sequence. In this example the heuristic also guesses 'wrong'
+# despite the byte sequence not being valid UTF8 (it's too short). This could
+# arguably be 'fixed' by using a less naive regex.
+
+@output_lines = split m/[\cm\cj]+/, Pod::Simple::XMLOutStream->_out( qq{
+
+=head1 NAME
+
+Smart::Apostrophe::Fail - L\xE9\x92Strange
+
+=cut
+
+} );
+
+($guess) = "@output_lines" =~ m{Non-ASCII.*?Assuming ([\w-]+)};
+if( $guess ) {
+ if( $guess eq 'UTF-8' ) {
+ ok 1;
+ } else {
+ ok 0;
+ print "# parser guessed wrong encoding expected 'UTF-8' got '$guess'\n";
+ }
+} else {
+ ok 0;
+ print "# parser failed to detect non-ASCII bytes in input\n";
+}
+
+
+exit;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/fcodes_l.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/fcodes_l.t
index 62970201d5b..3433d244251 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/fcodes_l.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/fcodes_l.t
@@ -8,7 +8,7 @@ BEGIN {
use strict;
use Test;
-BEGIN { plan tests => 99 };
+BEGIN { plan tests => 101 };
#use Pod::Simple::Debug (10);
@@ -35,6 +35,14 @@ ok($x->_out(qq{=pod\n\nL<crontab(5)>\n}),
'<Document><Para><L content-implicit="yes" raw="crontab(5)" to="crontab(5)" type="man">crontab(5)</L></Para></Document>'
);
+ok($x->_out(qq{=pod\n\nL<login.conf(5)>\n}),
+ '<Document><Para><L content-implicit="yes" raw="login.conf(5)" to="login.conf(5)" type="man">login.conf(5)</L></Para></Document>'
+);
+
+ok($x->_out(qq{=pod\n\nL<foo_bar(5)>\n}),
+ '<Document><Para><L content-implicit="yes" raw="foo_bar(5)" to="foo_bar(5)" type="man">foo_bar(5)</L></Para></Document>'
+);
+
ok( $x->_out(qq{=pod\n\nL<Net::Ping/Ping-pong>\n}),
'<Document><Para><L content-implicit="yes" raw="Net::Ping/Ping-pong" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/html01.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/html01.t
index 5ad848ebfa9..16e6c5dad3c 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/html01.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/html01.t
@@ -115,7 +115,7 @@ SUBCLASS: {
ok(
My::Pod::HTML->_out(
sub{ $_[0]->bare_output(1) },
- "=pod\n\n=over\n\n=item Foo\n\n",
+ "=pod\n\n=over\n\n=item Foo\n\n=back\n",
),
"\n<dl>\n<dt><a name=\"howdy\"\n>Foo</a></dt>\n</dl>\n",
);
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/items.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/items.t
index dcb695f3dd7..f76cf59fa54 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/items.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/items.t
@@ -91,7 +91,9 @@ ok( $x->_out("\n=over\n\n=item Foo\n\n Stuff\n\tSnork\n=cut\n\nCrunk\nZorp\n\n=i
print "#\n# Test for mixed =item blocks...\n";
-ok( $x->_out("\n=over\n\n=item Foo\n\nStuff\n\n=item 2.\n\nBar I<baz>!\n\nQuux\n\n=item *\n\nThwoong\n\n=back\n\n"),
+ok( $x->_out(
+ sub { $_[0]->no_errata_section(1) }, # We know this will complain
+ "\n=over\n\n=item Foo\n\nStuff\n\n=item 2.\n\nBar I<baz>!\n\nQuux\n\n=item *\n\nThwoong\n\n=back\n\n"),
qq{<Document><over-text indent="4"><item-text>Foo</item-text><Para>Stuff</Para>}
. qq{<item-text>2.</item-text><Para>Bar <I>baz</I>!</Para><Para>Quux</Para>}
. qq{<item-text>*</item-text><Para>Thwoong</Para></over-text></Document>}
@@ -187,18 +189,22 @@ ok( $x->_out( join "\n\n", '', '',
$d = 11;
print "# Now checking that document-end closes things right...\n";
-ok( $x->_out( join "\n\n", '', '',
- '=over',
- '=item *',
- 'Stuff',
- '=cut',
- 'Stuff',
+ok( $x->_out(
+ # We know there'd be a warning about implicit =back; disable it!
+ sub { $_[0]->no_whining(1); },
+ join( "\n\n", '', '',
'=over',
- '=item 1.',
- '=over 19',
- 'Gleiven',
- 'Squim F<.thingrc>!',
- '', ''
+ '=item *',
+ 'Stuff',
+ '=cut',
+ 'Stuff',
+ '=over',
+ '=item 1.',
+ '=over 19',
+ 'Gleiven',
+ 'Squim F<.thingrc>!',
+ '', '',
+ ),
), join '',
'<Document>',
'<over-bullet indent="4">',
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/items02.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/items02.t
index d604baab5af..daab8efe6c0 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/items02.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/items02.t
@@ -1,44 +1,46 @@
-# Testing the =item directive
-BEGIN {
- if($ENV{PERL_CORE}) {
- chdir 't';
- @INC = '../lib';
- }
-}
-
-use strict;
-use Test;
-BEGIN { plan tests => 4 };
-
-my $d;
-#use Pod::Simple::Debug (\$d,0);
-
-ok 1;
-
-use Pod::Simple::DumpAsXML;
-use Pod::Simple::XMLOutStream;
-print "# Pod::Simple version $Pod::Simple::VERSION\n";
-sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) }
-
-my $x = 'Pod::Simple::XMLOutStream';
-
-print "##### Tests for =item directives via class $x\n";
-
-$Pod::Simple::XMLOutStream::ATTR_PAD = ' ';
-$Pod::Simple::XMLOutStream::SORT_ATTRS = 1; # for predictably testable output
-
-
-print "#\n# Tests for =item [number] that are icky...\n";
-ok( $x->_out("\n=over\n\n=item 5\n\nStuff\n\n=cut\n\nCrunk\nZorp\n\n=item 4\n\nQuux\n\n=back\n\n"),
- '<Document><over-text indent="4"><item-text>5</item-text><Para>Stuff</Para><item-text>4</item-text><Para>Quux</Para></over-text></Document>'
-);
-
-ok( $x->_out("\n=over\n\n=item 5.\n\nStuff\n\n=cut\n\nCrunk\nZorp\n\n=item 4.\n\nQuux\n\n=back\n\n"),
- '<Document><over-text indent="4"><item-text>5.</item-text><Para>Stuff</Para><item-text>4.</item-text><Para>Quux</Para></over-text></Document>'
-);
-
-
-print "# Wrapping up... one for the road...\n";
-ok 1;
-print "# --- Done with ", __FILE__, " --- \n";
-
+# Testing the =item directive
+BEGIN {
+ if($ENV{PERL_CORE}) {
+ chdir 't';
+ @INC = '../lib';
+ }
+}
+
+use strict;
+use Test;
+BEGIN { plan tests => 4 };
+
+my $d;
+#use Pod::Simple::Debug (\$d,0);
+
+ok 1;
+
+use Pod::Simple::DumpAsXML;
+use Pod::Simple::XMLOutStream;
+print "# Pod::Simple version $Pod::Simple::VERSION\n";
+sub e ($$) { Pod::Simple::DumpAsXML->_duo(@_) }
+
+my $x = 'Pod::Simple::XMLOutStream';
+
+print "##### Tests for =item directives via class $x\n";
+
+$Pod::Simple::XMLOutStream::ATTR_PAD = ' ';
+$Pod::Simple::XMLOutStream::SORT_ATTRS = 1; # for predictably testable output
+
+
+print "#\n# Tests for =item [number] that are icky...\n";
+ok( $x->_out(sub { $_[0]->no_errata_section(1) },
+ "\n=over\n\n=item 5\n\nStuff\n\n=cut\n\nCrunk\nZorp\n\n=item 4\n\nQuux\n\n=back\n\n"),
+ '<Document><over-text indent="4"><item-text>5</item-text><Para>Stuff</Para><item-text>4</item-text><Para>Quux</Para></over-text></Document>'
+);
+
+ok( $x->_out(sub { $_[0]->no_errata_section(1) },
+ "\n=over\n\n=item 5.\n\nStuff\n\n=cut\n\nCrunk\nZorp\n\n=item 4.\n\nQuux\n\n=back\n\n"),
+ '<Document><over-text indent="4"><item-text>5.</item-text><Para>Stuff</Para><item-text>4.</item-text><Para>Quux</Para></over-text></Document>'
+);
+
+
+print "# Wrapping up... one for the road...\n";
+ok 1;
+print "# --- Done with ", __FILE__, " --- \n";
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/pulltitl.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/pulltitl.t
index 22934f530ee..6fbb6244ab0 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/pulltitl.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/pulltitl.t
@@ -7,7 +7,7 @@ BEGIN {
use strict;
use Test;
-BEGIN { plan tests => 116 };
+BEGIN { plan tests => 117 };
#use Pod::Simple::Debug (5);
@@ -408,6 +408,14 @@ ok( $t && $t->type eq 'start' && $t->tagname, 'Document' );
}
###########################################################################
+{
+print "# Testing a title with an X<>, at line ", __LINE__, "\n";
+my $p = Pod::Simple::PullParser->new;
+$p->set_source( \qq{\n=head1 NAME Foo Bar\nX<Some entry>\n} );
+
+ok $p->get_title(), 'NAME Foo Bar';
+}
+
###########################################################################
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/whine.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/whine.t
new file mode 100644
index 00000000000..668c9099f23
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/whine.t
@@ -0,0 +1,69 @@
+use strict;
+use warnings;
+use Test::More tests => 4;
+
+{
+ package Pod::Simple::ErrorFinder;
+ use base 'Pod::Simple::DumpAsXML'; # arbitrary choice -- rjbs, 2013-04-16
+
+ my @errors;
+ sub whine {
+ my ($self, @rest) = @_;
+ push @errors, [ @rest ];
+ $self->SUPER::whine(@rest);
+ }
+
+ sub scream {
+ my ($self, @rest) = @_;
+ push @errors, [ @rest ];
+ $self->SUPER::scream(@rest);
+ }
+
+ sub errors_for_input {
+ my ($class, $input, $mutor) = @_;
+ @errors = ();
+
+ my $parser = $class->new;
+ my $output = '';
+ $parser->output_string( \$output );
+ $parser->parse_string_document( $input );
+
+ @errors = sort { $a->[0] <=> $b->[0]
+ || $a->[1] cmp $b->[1] } @errors;
+
+ return @errors;
+ }
+}
+
+sub errors { Pod::Simple::ErrorFinder->errors_for_input(@_) }
+
+{
+ my @errors = errors("=over 4\n\n=item 1\n\nHey\n\n");
+ is_deeply(
+ \@errors,
+ [ [ 1, "=over without closing =back" ] ],
+ "no closing =back",
+ );
+}
+
+{
+ for my $l_code ('L< foo>', 'L< bar>') {
+ my $input = "=pod\n\nAmbiguous space: $l_code\n";
+ my @errors = errors("$input");
+ is_deeply(
+ \@errors,
+ [ [ 3, "L<> starts or ends with whitespace" ] ],
+ "warning for space in $l_code",
+ );
+ }
+}
+
+{
+ my $input = "=pod\n\nAmbiguous slash: L<I/O Operators|op/io>\n";
+ my @errors = errors("$input");
+ is_deeply(
+ \@errors,
+ [ [ 3, "alternative text 'I/O Operators' contains non-escaped | or /" ] ],
+ "warning for / in text part of L<>",
+ );
+}
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/x_nixer.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/x_nixer.t
index f43518706a8..34018109c57 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/x_nixer.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/x_nixer.t
@@ -44,16 +44,14 @@ ok( Pod::Simple::DumpAsXML->_out( "=pod\n\nZ<>F<C<Z<>fE<111>o> I<bar>> B<stuff X
' <Para>',
' <F>',
' <C>',
- ' f',
- ' o',
- ' o',
+ ' foo',
' </C>',
- ' ',
+ ' ',
' <I>',
' bar',
' </I>',
' </F>',
- ' ',
+ ' ',
' <B>',
' stuff ',
' <X>',
@@ -77,19 +75,16 @@ ok( Pod::Simple::DumpAsXML->_out( \&nixy, "=pod\n\nZ<>F<C<Z<>fE<111>o> I<bar>> B
' <Para>',
' <F>',
' <C>',
- ' f',
- ' o',
- ' o',
+ ' foo',
' </C>',
- ' ',
+ ' ',
' <I>',
' bar',
' </I>',
' </F>',
- ' ',
+ ' ',
' <B>',
- ' stuff ',
- ' baz',
+ ' stuff baz',
' </B>',
' </Para>',
'</Document>',
@@ -109,12 +104,12 @@ ok( Pod::Simple::DumpAsXML->_out( \&mergy, "=pod\n\nZ<>F<C<Z<>fE<111>o> I<bar>>
' <C>',
' foo',
' </C>',
- ' ',
+ ' ',
' <I>',
' bar',
' </I>',
' </F>',
- ' ',
+ ' ',
' <B>',
' stuff ',
' <X>',
@@ -140,12 +135,12 @@ ok( Pod::Simple::DumpAsXML->_out( \&nixy_mergy, "=pod\n\nZ<>F<C<Z<>fE<111>o> I<b
' <C>',
' foo',
' </C>',
- ' ',
+ ' ',
' <I>',
' bar',
' </I>',
' </F>',
- ' ',
+ ' ',
' <B>',
' stuff baz',
' </B>',
@@ -194,12 +189,12 @@ ok( Pod::Simple::DumpAsXML->_out( \&nixy_mergy, "=pod\n\nZ<>F<C<Z<>fE<111>L<E<78
' </L>',
' o',
' </C>',
- ' ',
+ ' ',
' <I>',
' bar',
' </I>',
' </F>',
- ' ',
+ ' ',
' <B>',
' stuff baz',
' </B>',
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml-bkb.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml-bkb.t
new file mode 100644
index 00000000000..c49cef46c09
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml-bkb.t
@@ -0,0 +1,21 @@
+#!/usr/bin/perl -w
+
+# t/xhtml-bkb.t - https://rt.cpan.org/Public/Bug/Display.html?id=77686
+
+use strict;
+use warnings;
+use Test::More tests => 1;
+use Pod::Simple::XHTML;
+my $c = <<EOF;
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perldata>
+EOF
+my $d = Pod::Simple::XHTML->new ();
+$d->index (1);
+my $e;
+$d->output_string (\$e);
+$d->parse_string_document ($c);
+unlike ($e, qr!<a[^>]+><a[^>]+>!);
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml01.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml01.t
index 32e875ef128..fd177edf422 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml01.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml01.t
@@ -8,8 +8,8 @@ BEGIN {
use strict;
use lib '../lib';
-#use Test::More tests => 56;
-use Test::More 'no_plan';
+use Test::More tests => 61;
+#use Test::More 'no_plan';
use_ok('Pod::Simple::XHTML') or exit;
@@ -23,7 +23,7 @@ my $MANURL = "http://man.he.net/man";
initialize($parser, $results);
$parser->parse_string_document( "=head1 Poit!" );
-is($results, qq{<h1 id="Poit-">Poit!</h1>\n\n}, "head1 level output");
+is($results, qq{<h1 id="Poit">Poit!</h1>\n\n}, "head1 level output");
initialize($parser, $results);
$parser->parse_string_document( "=head2 Yada Yada Operator
@@ -31,21 +31,25 @@ X<...> X<... operator> X<yada yada operator>" );
is($results, qq{<h2 id="Yada-Yada-Operator">Yada Yada Operator </h2>\n\n}, "head ID with X<>");
initialize($parser, $results);
+$parser->parse_string_document( "=head2 Platforms with no supporting programmers:");
+is($results, qq{<h2 id="Platforms-with-no-supporting-programmers">Platforms with no supporting programmers:</h2>\n\n}, "head ID ending in colon");
+
+initialize($parser, $results);
$parser->html_h_level(2);
$parser->parse_string_document( "=head1 Poit!" );
-is($results, qq{<h2 id="Poit-">Poit!</h2>\n\n}, "head1 level output h_level 2");
+is($results, qq{<h2 id="Poit">Poit!</h2>\n\n}, "head1 level output h_level 2");
initialize($parser, $results);
$parser->parse_string_document( "=head2 I think so Brain." );
-is($results, qq{<h2 id="I-think-so-Brain.">I think so Brain.</h2>\n\n}, "head2 level output");
+is($results, qq{<h2 id="I-think-so-Brain">I think so Brain.</h2>\n\n}, "head2 level output");
initialize($parser, $results);
$parser->parse_string_document( "=head3 I say, Brain..." );
-is($results, qq{<h3 id="I-say-Brain...">I say, Brain...</h3>\n\n}, "head3 level output");
+is($results, qq{<h3 id="I-say-Brain">I say, Brain...</h3>\n\n}, "head3 level output");
initialize($parser, $results);
$parser->parse_string_document( "=head4 Zort & Zog!" );
-is($results, qq{<h4 id="Zort-Zog-">Zort &amp; Zog!</h4>\n\n}, "head4 level output");
+is($results, qq{<h4 id="Zort-Zog">Zort &amp; Zog!</h4>\n\n}, "head4 level output");
sub x ($;&) {
my $code = $_[1];
@@ -474,10 +478,15 @@ $parser->parse_string_document(<<'EOPOD');
=pod
A plain paragraph with a C<functionname>.
+
+C<< This code is B<important> to E<lt>me>! >>
+
EOPOD
is($results, <<"EOHTML", "code entity in a paragraph");
<p>A plain paragraph with a <code>functionname</code>.</p>
+<p><code>This code is <b>important</b> to &lt;me&gt;!</code></p>
+
EOHTML
@@ -653,10 +662,11 @@ EOHTML
SKIP: for my $use_html_entities (0, 1) {
if ($use_html_entities and not $Pod::Simple::XHTML::HAS_HTML_ENTITIES) {
- skip("HTML::Entities not installed", 1);
+ skip("HTML::Entities not installed", 3);
}
local $Pod::Simple::XHTML::HAS_HTML_ENTITIES = $use_html_entities;
initialize($parser, $results);
+ $parser->codes_in_verbatim(1);
$parser->parse_string_document(<<'EOPOD');
=pod
@@ -688,6 +698,14 @@ is($results, <<"EOHTML", 'HTML Entities should be only for specified characters'
EOHTML
+ # Keep =encoding out of content.
+ initialize($parser, $results);
+ $parser->parse_string_document("=encoding utf-8\n\n=head1 NAME\n");
+ is($results, <<"EOHTML", 'Encoding should not be in content')
+<h1 id="NAME">NAME</h1>
+
+EOHTML
+
}
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml10.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml10.t
index 56ef68c5676..353a50f6cb8 100755
--- a/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml10.t
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml10.t
@@ -8,7 +8,7 @@ BEGIN {
use strict;
use lib '../lib';
-use Test::More tests => 58;
+use Test::More tests => 60;
#use Test::More 'no_plan';
use_ok('Pod::Simple::XHTML') or exit;
@@ -23,7 +23,7 @@ for my $spec (
[ 'fo$bar' => 'fo-bar', 'fo-bar' ],
[ 'f12' => 'f12', 'f12' ],
[ '13' => 'pod13', 'pod13' ],
- [ '**.:' => 'pod-.:', 'pod-.:' ],
+ [ '**.:' => 'pod', 'pod' ],
) {
is $parser->idify( $spec->[0] ), $spec->[1],
qq{ID for "$spec->[0]" should be "$spec->[1]"};
@@ -74,8 +74,8 @@ ok $parser->parse_string_document( "=head1 Foo B<Bar>\n\n=head1 Foo B<Baz>" ),
'Parse two multiword headers';
is $results, <<'EOF', 'Should have the index';
<ul id="index">
- <li><a href="#Foo-Bar">Foo <b>Bar</b></a></li>
- <li><a href="#Foo-Baz">Foo <b>Baz</b></a></li>
+ <li><a href="#Foo-Bar">Foo Bar</a></li>
+ <li><a href="#Foo-Baz">Foo Baz</a></li>
</ul>
<h1 id="Foo-Bar">Foo <b>Bar</b></h1>
@@ -97,6 +97,22 @@ is $results, <<'EOF', 'Should have both and the index';
<h1 id="Bar">Bar</h1>
EOF
+
+initialize($parser, $results);
+ok $parser->parse_string_document( "=head1 Foo C<Bar>\n\n=head1 C<Baz>" ),
+ 'Parse two headers with C<> formatting';
+is $results, <<'EOF', 'Should have the index';
+<ul id="index">
+ <li><a href="#Foo-Bar">Foo Bar</a></li>
+ <li><a href="#Baz">Baz</a></li>
+</ul>
+
+<h1 id="Foo-Bar">Foo <code>Bar</code></h1>
+
+<h1 id="Baz"><code>Baz</code></h1>
+
+EOF
+
initialize($parser, $results);
ok $parser->parse_string_document( "=head1 Foo\n\n=head1 Bar\n\n=head1 Baz" ),
'Parse three headers';
diff --git a/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml20.t b/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml20.t
new file mode 100644
index 00000000000..c9295c16254
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Simple/t/xhtml20.t
@@ -0,0 +1,63 @@
+#!/usr/bin/perl -w
+
+# t/xhtml20.t - test subclassing of Pod::Simple::XHTML
+
+use strict;
+use warnings;
+use Test::More tests => 1;
+
+BEGIN {
+ package MyXHTML;
+ use base 'Pod::Simple::XHTML';
+
+ sub handle_code {
+ my($self, $code, $kind) = @_;
+ $code = $kind . "[$code]";
+ $self->SUPER::handle_code($code);
+ }
+
+ sub start_code {
+ my($self, $kind) = @_;
+ $self->{scratch} .= "<code class=\"$kind\">";
+ }
+
+ sub end_code {
+ my($self, $kind) = @_;
+ $self->{scratch} .= "</code><!-- $kind -->";
+ }
+}
+
+
+
+my ($parser, $results);
+
+initialize();
+$parser->parse_string_document(<<'EOT');
+=head1 Foo
+
+This is C<$code> and so is:
+
+ my $foo = 1;
+
+Code might even be C<<< nested( B<< C<1> >> ) >>>.
+EOT
+
+is($results, <<'EOT');
+<h1 id="Foo">Foo</h1>
+
+<p>This is <code class="C">C[$code]</code><!-- C --> and so is:</p>
+
+<pre><code class="Verbatim">Verbatim[ my $foo = 1;]</code><!-- Verbatim --></pre>
+
+<p>Code might even be <code class="C">C[nested( ]<b><code class="C">C[1]</code><!-- C --></b>C[ )]</code><!-- C -->.</p>
+
+EOT
+
+
+sub initialize {
+ $parser = MyXHTML->new;
+ $parser->html_header('');
+ $parser->html_footer('');
+ $parser->output_string( \$results );
+ $results = '';
+}
diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/lib/Pod/Usage.pm b/gnu/usr.bin/perl/cpan/Pod-Usage/lib/Pod/Usage.pm
new file mode 100644
index 00000000000..e09d69e89b7
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Usage/lib/Pod/Usage.pm
@@ -0,0 +1,767 @@
+#############################################################################
+# Pod/Usage.pm -- print usage messages for the running script.
+#
+# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::Usage;
+use strict;
+
+use vars qw($VERSION @ISA @EXPORT);
+$VERSION = '1.61'; ## Current version of this package
+require 5.005; ## requires this Perl version or later
+
+#use diagnostics;
+use Carp;
+use Config;
+use Exporter;
+use File::Spec;
+
+@EXPORT = qw(&pod2usage);
+BEGIN {
+ $Pod::Usage::Formatter ||=
+ ( $] >= 5.005_58 ? 'Pod::Text' : 'Pod::PlainText');
+ eval "require $Pod::Usage::Formatter";
+ die $@ if $@;
+ @ISA = ( $Pod::Usage::Formatter );
+}
+
+require Pod::Select;
+
+##---------------------------------------------------------------------------
+
+##---------------------------------
+## Function definitions begin here
+##---------------------------------
+
+sub pod2usage {
+ local($_) = shift;
+ my %opts;
+ ## Collect arguments
+ if (@_ > 0) {
+ ## Too many arguments - assume that this is a hash and
+ ## the user forgot to pass a reference to it.
+ %opts = ($_, @_);
+ }
+ elsif (!defined $_) {
+ $_ = '';
+ }
+ elsif (ref $_) {
+ ## User passed a ref to a hash
+ %opts = %{$_} if (ref($_) eq 'HASH');
+ }
+ elsif (/^[-+]?\d+$/) {
+ ## User passed in the exit value to use
+ $opts{'-exitval'} = $_;
+ }
+ else {
+ ## User passed in a message to print before issuing usage.
+ $_ and $opts{'-message'} = $_;
+ }
+
+ ## Need this for backward compatibility since we formerly used
+ ## options that were all uppercase words rather than ones that
+ ## looked like Unix command-line options.
+ ## to be uppercase keywords)
+ %opts = map {
+ my ($key, $val) = ($_, $opts{$_});
+ $key =~ s/^(?=\w)/-/;
+ $key =~ /^-msg/i and $key = '-message';
+ $key =~ /^-exit/i and $key = '-exitval';
+ lc($key) => $val;
+ } (keys %opts);
+
+ ## Now determine default -exitval and -verbose values to use
+ if ((! defined $opts{'-exitval'}) && (! defined $opts{'-verbose'})) {
+ $opts{'-exitval'} = 2;
+ $opts{'-verbose'} = 0;
+ }
+ elsif (! defined $opts{'-exitval'}) {
+ $opts{'-exitval'} = ($opts{'-verbose'} > 0) ? 1 : 2;
+ }
+ elsif (! defined $opts{'-verbose'}) {
+ $opts{'-verbose'} = (lc($opts{'-exitval'}) eq 'noexit' ||
+ $opts{'-exitval'} < 2);
+ }
+
+ ## Default the output file
+ $opts{'-output'} = (lc($opts{'-exitval'}) eq 'noexit' ||
+ $opts{'-exitval'} < 2) ? \*STDOUT : \*STDERR
+ unless (defined $opts{'-output'});
+ ## Default the input file
+ $opts{'-input'} = $0 unless (defined $opts{'-input'});
+
+ ## Look up input file in path if it doesnt exist.
+ unless ((ref $opts{'-input'}) || (-e $opts{'-input'})) {
+ my $basename = $opts{'-input'};
+ my $pathsep = ($^O =~ /^(?:dos|os2|MSWin32)$/i) ? ';'
+ : (($^O eq 'MacOS' || $^O eq 'VMS') ? ',' : ':');
+ my $pathspec = $opts{'-pathlist'} || $ENV{PATH} || $ENV{PERL5LIB};
+
+ my @paths = (ref $pathspec) ? @$pathspec : split($pathsep, $pathspec);
+ for my $dirname (@paths) {
+ $_ = File::Spec->catfile($dirname, $basename) if length;
+ last if (-e $_) && ($opts{'-input'} = $_);
+ }
+ }
+
+ ## Now create a pod reader and constrain it to the desired sections.
+ my $parser = new Pod::Usage(USAGE_OPTIONS => \%opts);
+ if ($opts{'-verbose'} == 0) {
+ $parser->select('(?:SYNOPSIS|USAGE)\s*');
+ }
+ elsif ($opts{'-verbose'} == 1) {
+ my $opt_re = '(?i)' .
+ '(?:OPTIONS|ARGUMENTS)' .
+ '(?:\s*(?:AND|\/)\s*(?:OPTIONS|ARGUMENTS))?';
+ $parser->select( '(?:SYNOPSIS|USAGE)\s*', $opt_re, "DESCRIPTION/$opt_re" );
+ }
+ elsif ($opts{'-verbose'} >= 2 && $opts{'-verbose'} != 99) {
+ $parser->select('.*');
+ }
+ elsif ($opts{'-verbose'} == 99) {
+ my $sections = $opts{'-sections'};
+ $parser->select( (ref $sections) ? @$sections : $sections );
+ $opts{'-verbose'} = 1;
+ }
+
+ ## Check for perldoc
+ my $progpath = File::Spec->catfile($Config{scriptdirexp}
+ || $Config{scriptdir}, 'perldoc');
+
+ my $version = sprintf("%vd",$^V);
+ if ($Config{versiononly} and $Config{startperl} =~ /\Q$version\E$/ ) {
+ $progpath .= $version;
+ }
+ $opts{'-noperldoc'} = 1 unless -e $progpath;
+
+ ## Now translate the pod document and then exit with the desired status
+ if ( !$opts{'-noperldoc'}
+ and $opts{'-verbose'} >= 2
+ and !ref($opts{'-input'})
+ and $opts{'-output'} == \*STDOUT )
+ {
+ ## spit out the entire PODs. Might as well invoke perldoc
+ print { $opts{'-output'} } ($opts{'-message'}, "\n") if($opts{'-message'});
+ if(defined $opts{-input} && $opts{-input} =~ /^\s*(\S.*?)\s*$/) {
+ # the perldocs back to 5.005 should all have -F
+ # without -F there are warnings in -T scripts
+ system($progpath, '-F', $1);
+ if($?) {
+ # RT16091: fall back to more if perldoc failed
+ system(($Config{pager} || $ENV{PAGER} || '/bin/more'), $1);
+ }
+ } else {
+ croak "Unspecified input file or insecure argument.\n";
+ }
+ }
+ else {
+ $parser->parse_from_file($opts{'-input'}, $opts{'-output'});
+ }
+
+ exit($opts{'-exitval'}) unless (lc($opts{'-exitval'}) eq 'noexit');
+}
+
+##---------------------------------------------------------------------------
+
+##-------------------------------
+## Method definitions begin here
+##-------------------------------
+
+sub new {
+ my $this = shift;
+ my $class = ref($this) || $this;
+ my %params = @_;
+ my $self = {%params};
+ bless $self, $class;
+ if ($self->can('initialize')) {
+ $self->initialize();
+ } else {
+ # pass through options to Pod::Text
+ my %opts;
+ for (qw(alt code indent loose margin quotes sentence stderr utf8 width)) {
+ my $val = $params{USAGE_OPTIONS}{"-$_"};
+ $opts{$_} = $val if defined $val;
+ }
+ $self = $self->SUPER::new(%opts);
+ %$self = (%$self, %params);
+ }
+ return $self;
+}
+
+sub select {
+ my ($self, @sections) = @_;
+ if ($ISA[0]->can('select')) {
+ $self->SUPER::select(@sections);
+ } else {
+ # we're using Pod::Simple - need to mimic the behavior of Pod::Select
+ my $add = ($sections[0] eq '+') ? shift(@sections) : '';
+ ## Reset the set of sections to use
+ unless (@sections) {
+ delete $self->{USAGE_SELECT} unless ($add);
+ return;
+ }
+ $self->{USAGE_SELECT} = []
+ unless ($add && $self->{USAGE_SELECT});
+ my $sref = $self->{USAGE_SELECT};
+ ## Compile each spec
+ for my $spec (@sections) {
+ my $cs = Pod::Select::_compile_section_spec($spec);
+ if ( defined $cs ) {
+ ## Store them in our sections array
+ push(@$sref, $cs);
+ } else {
+ carp qq{Ignoring section spec "$spec"!\n};
+ }
+ }
+ }
+}
+
+# Override Pod::Text->seq_i to return just "arg", not "*arg*".
+sub seq_i { return $_[1] }
+
+# This overrides the Pod::Text method to do something very akin to what
+# Pod::Select did as well as the work done below by preprocess_paragraph.
+# Note that the below is very, very specific to Pod::Text.
+sub _handle_element_end {
+ my ($self, $element) = @_;
+ if ($element eq 'head1') {
+ $self->{USAGE_HEADINGS} = [ $$self{PENDING}[-1][1] ];
+ if ($self->{USAGE_OPTIONS}->{-verbose} < 2) {
+ $$self{PENDING}[-1][1] =~ s/^\s*SYNOPSIS\s*$/USAGE/;
+ }
+ } elsif ($element =~ /^head(\d+)$/ && $1) { # avoid 0
+ my $idx = $1 - 1;
+ $self->{USAGE_HEADINGS} = [] unless($self->{USAGE_HEADINGS});
+ $self->{USAGE_HEADINGS}->[$idx] = $$self{PENDING}[-1][1];
+ }
+ if ($element =~ /^head\d+$/) {
+ $$self{USAGE_SKIPPING} = 1;
+ if (!$$self{USAGE_SELECT} || !@{ $$self{USAGE_SELECT} }) {
+ $$self{USAGE_SKIPPING} = 0;
+ } else {
+ my @headings = @{$$self{USAGE_HEADINGS}};
+ for my $section_spec ( @{$$self{USAGE_SELECT}} ) {
+ my $match = 1;
+ for (my $i = 0; $i < $Pod::Select::MAX_HEADING_LEVEL; ++$i) {
+ $headings[$i] = '' unless defined $headings[$i];
+ my $regex = $section_spec->[$i];
+ my $negated = ($regex =~ s/^\!//);
+ $match &= ($negated ? ($headings[$i] !~ /${regex}/)
+ : ($headings[$i] =~ /${regex}/));
+ last unless ($match);
+ } # end heading levels
+ if ($match) {
+ $$self{USAGE_SKIPPING} = 0;
+ last;
+ }
+ } # end sections
+ }
+
+ # Try to do some lowercasing instead of all-caps in headings, and use
+ # a colon to end all headings.
+ if($self->{USAGE_OPTIONS}->{-verbose} < 2) {
+ local $_ = $$self{PENDING}[-1][1];
+ s{([A-Z])([A-Z]+)}{((length($2) > 2) ? $1 : lc($1)) . lc($2)}ge;
+ s/\s*$/:/ unless (/:\s*$/);
+ $_ .= "\n";
+ $$self{PENDING}[-1][1] = $_;
+ }
+ }
+ if ($$self{USAGE_SKIPPING} && $element !~ m/^over-/) {
+ pop @{ $$self{PENDING} };
+ } else {
+ $self->SUPER::_handle_element_end($element);
+ }
+}
+
+# required for Pod::Simple API
+sub start_document {
+ my $self = shift;
+ $self->SUPER::start_document();
+ my $msg = $self->{USAGE_OPTIONS}->{-message} or return 1;
+ my $out_fh = $self->output_fh();
+ print $out_fh "$msg\n";
+}
+
+# required for old Pod::Parser API
+sub begin_pod {
+ my $self = shift;
+ $self->SUPER::begin_pod(); ## Have to call superclass
+ my $msg = $self->{USAGE_OPTIONS}->{-message} or return 1;
+ my $out_fh = $self->output_handle();
+ print $out_fh "$msg\n";
+}
+
+sub preprocess_paragraph {
+ my $self = shift;
+ local $_ = shift;
+ my $line = shift;
+ ## See if this is a heading and we arent printing the entire manpage.
+ if (($self->{USAGE_OPTIONS}->{-verbose} < 2) && /^=head/) {
+ ## Change the title of the SYNOPSIS section to USAGE
+ s/^=head1\s+SYNOPSIS\s*$/=head1 USAGE/;
+ ## Try to do some lowercasing instead of all-caps in headings
+ s{([A-Z])([A-Z]+)}{((length($2) > 2) ? $1 : lc($1)) . lc($2)}ge;
+ ## Use a colon to end all headings
+ s/\s*$/:/ unless (/:\s*$/);
+ $_ .= "\n";
+ }
+ return $self->SUPER::preprocess_paragraph($_);
+}
+
+1; # keep require happy
+
+__END__
+
+=head1 NAME
+
+Pod::Usage, pod2usage() - print a usage message from embedded pod documentation
+
+=head1 SYNOPSIS
+
+ use Pod::Usage
+
+ my $message_text = "This text precedes the usage message.";
+ my $exit_status = 2; ## The exit status to use
+ my $verbose_level = 0; ## The verbose level to use
+ my $filehandle = \*STDERR; ## The filehandle to write to
+
+ pod2usage($message_text);
+
+ pod2usage($exit_status);
+
+ pod2usage( { -message => $message_text ,
+ -exitval => $exit_status ,
+ -verbose => $verbose_level,
+ -output => $filehandle } );
+
+ pod2usage( -msg => $message_text ,
+ -exitval => $exit_status ,
+ -verbose => $verbose_level,
+ -output => $filehandle );
+
+ pod2usage( -verbose => 2,
+ -noperldoc => 1 )
+
+=head1 ARGUMENTS
+
+B<pod2usage> should be given either a single argument, or a list of
+arguments corresponding to an associative array (a "hash"). When a single
+argument is given, it should correspond to exactly one of the following:
+
+=over 4
+
+=item *
+
+A string containing the text of a message to print I<before> printing
+the usage message
+
+=item *
+
+A numeric value corresponding to the desired exit status
+
+=item *
+
+A reference to a hash
+
+=back
+
+If more than one argument is given then the entire argument list is
+assumed to be a hash. If a hash is supplied (either as a reference or
+as a list) it should contain one or more elements with the following
+keys:
+
+=over 4
+
+=item C<-message>
+
+=item C<-msg>
+
+The text of a message to print immediately prior to printing the
+program's usage message.
+
+=item C<-exitval>
+
+The desired exit status to pass to the B<exit()> function.
+This should be an integer, or else the string "NOEXIT" to
+indicate that control should simply be returned without
+terminating the invoking process.
+
+=item C<-verbose>
+
+The desired level of "verboseness" to use when printing the usage
+message. If the corresponding value is 0, then only the "SYNOPSIS"
+section of the pod documentation is printed. If the corresponding value
+is 1, then the "SYNOPSIS" section, along with any section entitled
+"OPTIONS", "ARGUMENTS", or "OPTIONS AND ARGUMENTS" is printed. If the
+corresponding value is 2 or more then the entire manpage is printed.
+
+The special verbosity level 99 requires to also specify the -sections
+parameter; then these sections are extracted (see L<Pod::Select>)
+and printed.
+
+=item C<-sections>
+
+A string representing a selection list for sections to be printed
+when -verbose is set to 99, e.g. C<"NAME|SYNOPSIS|DESCRIPTION|VERSION">.
+
+Alternatively, an array reference of section specifications can be used:
+
+ pod2usage(-verbose => 99,
+ -sections => [ qw(fred fred/subsection) ] );
+
+=item C<-output>
+
+A reference to a filehandle, or the pathname of a file to which the
+usage message should be written. The default is C<\*STDERR> unless the
+exit value is less than 2 (in which case the default is C<\*STDOUT>).
+
+=item C<-input>
+
+A reference to a filehandle, or the pathname of a file from which the
+invoking script's pod documentation should be read. It defaults to the
+file indicated by C<$0> (C<$PROGRAM_NAME> for users of F<English.pm>).
+
+If you are calling B<pod2usage()> from a module and want to display
+that module's POD, you can use this:
+
+ use Pod::Find qw(pod_where);
+ pod2usage( -input => pod_where({-inc => 1}, __PACKAGE__) );
+
+=item C<-pathlist>
+
+A list of directory paths. If the input file does not exist, then it
+will be searched for in the given directory list (in the order the
+directories appear in the list). It defaults to the list of directories
+implied by C<$ENV{PATH}>. The list may be specified either by a reference
+to an array, or by a string of directory paths which use the same path
+separator as C<$ENV{PATH}> on your system (e.g., C<:> for Unix, C<;> for
+MSWin32 and DOS).
+
+=item C<-noperldoc>
+
+By default, Pod::Usage will call L<perldoc> when -verbose >= 2 is
+specified. This does not work well e.g. if the script was packed
+with L<PAR>. The -noperldoc option suppresses the external call to
+L<perldoc> and uses the simple text formatter (L<Pod::Text>) to
+output the POD.
+
+=back
+
+=head2 Formatting base class
+
+The default text formatter depends on the Perl version (L<Pod::Text> or
+L<Pod::PlainText> for Perl versions E<lt> 5.005_58). The base class for
+Pod::Usage can be defined by pre-setting C<$Pod::Usage::Formatter> I<before>
+loading Pod::Usage, e.g.:
+
+ BEGIN { $Pod::Usage::Formatter = 'Pod::Text::Termcap'; }
+ use Pod::Usage qw(pod2usage);
+
+=head2 Pass-through options
+
+The following options are passed through to the underlying text formatter.
+See the manual pages of these modules for more information.
+
+ alt code indent loose margin quotes sentence stderr utf8 width
+
+=head1 DESCRIPTION
+
+B<pod2usage> will print a usage message for the invoking script (using
+its embedded pod documentation) and then exit the script with the
+desired exit status. The usage message printed may have any one of three
+levels of "verboseness": If the verbose level is 0, then only a synopsis
+is printed. If the verbose level is 1, then the synopsis is printed
+along with a description (if present) of the command line options and
+arguments. If the verbose level is 2, then the entire manual page is
+printed.
+
+Unless they are explicitly specified, the default values for the exit
+status, verbose level, and output stream to use are determined as
+follows:
+
+=over 4
+
+=item *
+
+If neither the exit status nor the verbose level is specified, then the
+default is to use an exit status of 2 with a verbose level of 0.
+
+=item *
+
+If an exit status I<is> specified but the verbose level is I<not>, then the
+verbose level will default to 1 if the exit status is less than 2 and
+will default to 0 otherwise.
+
+=item *
+
+If an exit status is I<not> specified but verbose level I<is> given, then
+the exit status will default to 2 if the verbose level is 0 and will
+default to 1 otherwise.
+
+=item *
+
+If the exit status used is less than 2, then output is printed on
+C<STDOUT>. Otherwise output is printed on C<STDERR>.
+
+=back
+
+Although the above may seem a bit confusing at first, it generally does
+"the right thing" in most situations. This determination of the default
+values to use is based upon the following typical Unix conventions:
+
+=over 4
+
+=item *
+
+An exit status of 0 implies "success". For example, B<diff(1)> exits
+with a status of 0 if the two files have the same contents.
+
+=item *
+
+An exit status of 1 implies possibly abnormal, but non-defective, program
+termination. For example, B<grep(1)> exits with a status of 1 if
+it did I<not> find a matching line for the given regular expression.
+
+=item *
+
+An exit status of 2 or more implies a fatal error. For example, B<ls(1)>
+exits with a status of 2 if you specify an illegal (unknown) option on
+the command line.
+
+=item *
+
+Usage messages issued as a result of bad command-line syntax should go
+to C<STDERR>. However, usage messages issued due to an explicit request
+to print usage (like specifying B<-help> on the command line) should go
+to C<STDOUT>, just in case the user wants to pipe the output to a pager
+(such as B<more(1)>).
+
+=item *
+
+If program usage has been explicitly requested by the user, it is often
+desirable to exit with a status of 1 (as opposed to 0) after issuing
+the user-requested usage message. It is also desirable to give a
+more verbose description of program usage in this case.
+
+=back
+
+B<pod2usage> doesn't force the above conventions upon you, but it will
+use them by default if you don't expressly tell it to do otherwise. The
+ability of B<pod2usage()> to accept a single number or a string makes it
+convenient to use as an innocent looking error message handling function:
+
+ use Pod::Usage;
+ use Getopt::Long;
+
+ ## Parse options
+ GetOptions("help", "man", "flag1") || pod2usage(2);
+ pod2usage(1) if ($opt_help);
+ pod2usage(-verbose => 2) if ($opt_man);
+
+ ## Check for too many filenames
+ pod2usage("$0: Too many files given.\n") if (@ARGV > 1);
+
+Some user's however may feel that the above "economy of expression" is
+not particularly readable nor consistent and may instead choose to do
+something more like the following:
+
+ use Pod::Usage;
+ use Getopt::Long;
+
+ ## Parse options
+ GetOptions("help", "man", "flag1") || pod2usage(-verbose => 0);
+ pod2usage(-verbose => 1) if ($opt_help);
+ pod2usage(-verbose => 2) if ($opt_man);
+
+ ## Check for too many filenames
+ pod2usage(-verbose => 2, -message => "$0: Too many files given.\n")
+ if (@ARGV > 1);
+
+As with all things in Perl, I<there's more than one way to do it>, and
+B<pod2usage()> adheres to this philosophy. If you are interested in
+seeing a number of different ways to invoke B<pod2usage> (although by no
+means exhaustive), please refer to L<"EXAMPLES">.
+
+=head1 EXAMPLES
+
+Each of the following invocations of C<pod2usage()> will print just the
+"SYNOPSIS" section to C<STDERR> and will exit with a status of 2:
+
+ pod2usage();
+
+ pod2usage(2);
+
+ pod2usage(-verbose => 0);
+
+ pod2usage(-exitval => 2);
+
+ pod2usage({-exitval => 2, -output => \*STDERR});
+
+ pod2usage({-verbose => 0, -output => \*STDERR});
+
+ pod2usage(-exitval => 2, -verbose => 0);
+
+ pod2usage(-exitval => 2, -verbose => 0, -output => \*STDERR);
+
+Each of the following invocations of C<pod2usage()> will print a message
+of "Syntax error." (followed by a newline) to C<STDERR>, immediately
+followed by just the "SYNOPSIS" section (also printed to C<STDERR>) and
+will exit with a status of 2:
+
+ pod2usage("Syntax error.");
+
+ pod2usage(-message => "Syntax error.", -verbose => 0);
+
+ pod2usage(-msg => "Syntax error.", -exitval => 2);
+
+ pod2usage({-msg => "Syntax error.", -exitval => 2, -output => \*STDERR});
+
+ pod2usage({-msg => "Syntax error.", -verbose => 0, -output => \*STDERR});
+
+ pod2usage(-msg => "Syntax error.", -exitval => 2, -verbose => 0);
+
+ pod2usage(-message => "Syntax error.",
+ -exitval => 2,
+ -verbose => 0,
+ -output => \*STDERR);
+
+Each of the following invocations of C<pod2usage()> will print the
+"SYNOPSIS" section and any "OPTIONS" and/or "ARGUMENTS" sections to
+C<STDOUT> and will exit with a status of 1:
+
+ pod2usage(1);
+
+ pod2usage(-verbose => 1);
+
+ pod2usage(-exitval => 1);
+
+ pod2usage({-exitval => 1, -output => \*STDOUT});
+
+ pod2usage({-verbose => 1, -output => \*STDOUT});
+
+ pod2usage(-exitval => 1, -verbose => 1);
+
+ pod2usage(-exitval => 1, -verbose => 1, -output => \*STDOUT});
+
+Each of the following invocations of C<pod2usage()> will print the
+entire manual page to C<STDOUT> and will exit with a status of 1:
+
+ pod2usage(-verbose => 2);
+
+ pod2usage({-verbose => 2, -output => \*STDOUT});
+
+ pod2usage(-exitval => 1, -verbose => 2);
+
+ pod2usage({-exitval => 1, -verbose => 2, -output => \*STDOUT});
+
+=head2 Recommended Use
+
+Most scripts should print some type of usage message to C<STDERR> when a
+command line syntax error is detected. They should also provide an
+option (usually C<-H> or C<-help>) to print a (possibly more verbose)
+usage message to C<STDOUT>. Some scripts may even wish to go so far as to
+provide a means of printing their complete documentation to C<STDOUT>
+(perhaps by allowing a C<-man> option). The following complete example
+uses B<Pod::Usage> in combination with B<Getopt::Long> to do all of these
+things:
+
+ use Getopt::Long;
+ use Pod::Usage;
+
+ my $man = 0;
+ my $help = 0;
+ ## Parse options and print usage if there is a syntax error,
+ ## or if usage was explicitly requested.
+ GetOptions('help|?' => \$help, man => \$man) or pod2usage(2);
+ pod2usage(1) if $help;
+ pod2usage(-verbose => 2) if $man;
+
+ ## If no arguments were given, then allow STDIN to be used only
+ ## if it's not connected to a terminal (otherwise print usage)
+ pod2usage("$0: No files given.") if ((@ARGV == 0) && (-t STDIN));
+ __END__
+
+ =head1 NAME
+
+ sample - Using GetOpt::Long and Pod::Usage
+
+ =head1 SYNOPSIS
+
+ sample [options] [file ...]
+
+ Options:
+ -help brief help message
+ -man full documentation
+
+ =head1 OPTIONS
+
+ =over 8
+
+ =item B<-help>
+
+ Print a brief help message and exits.
+
+ =item B<-man>
+
+ Prints the manual page and exits.
+
+ =back
+
+ =head1 DESCRIPTION
+
+ B<This program> will read the given input file(s) and do something
+ useful with the contents thereof.
+
+ =cut
+
+=head1 CAVEATS
+
+By default, B<pod2usage()> will use C<$0> as the path to the pod input
+file. Unfortunately, not all systems on which Perl runs will set C<$0>
+properly (although if C<$0> isn't found, B<pod2usage()> will search
+C<$ENV{PATH}> or else the list specified by the C<-pathlist> option).
+If this is the case for your system, you may need to explicitly specify
+the path to the pod docs for the invoking script using something
+similar to the following:
+
+ pod2usage(-exitval => 2, -input => "/path/to/your/pod/docs");
+
+In the pathological case that a script is called via a relative path
+I<and> the script itself changes the current working directory
+(see L<perlfunc/chdir>) I<before> calling pod2usage, Pod::Usage will
+fail even on robust platforms. Don't do that. Or use L<FindBin> to locate
+the script:
+
+ use FindBin;
+ pod2usage(-input => $FindBin::Bin . "/" . $FindBin::Script);
+
+=head1 AUTHOR
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Marek Rouchal E<lt>marekr@cpan.orgE<gt>
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt>
+
+Based on code for B<Pod::Text::pod2text()> written by
+Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
+
+=head1 ACKNOWLEDGMENTS
+
+Steven McDougall E<lt>swmcd@world.std.comE<gt> for his help and patience
+with re-writing this manpage.
+
+=head1 SEE ALSO
+
+B<Pod::Usage> is now a standalone distribution.
+
+L<Pod::Parser>, L<Pod::Perldoc>, L<Getopt::Long>, L<Pod::Find>, L<FindBin>,
+L<Pod::Text>, L<Pod::PlainText>, L<Pod::Text::Termcap>
+
+=cut
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/scripts/pod2usage.PL b/gnu/usr.bin/perl/cpan/Pod-Usage/scripts/pod2usage.PL
new file mode 100644
index 00000000000..0d8459072fb
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Usage/scripts/pod2usage.PL
@@ -0,0 +1,190 @@
+#!/usr/local/bin/perl
+
+use Config;
+use File::Basename qw(&basename &dirname);
+use Cwd;
+
+# List explicitly here the variables you want Configure to
+# generate. Metaconfig only looks for shell variables, so you
+# have to mention them as if they were shell variables, not
+# %Config entries. Thus you write
+# $startperl
+# to ensure Configure will look for $Config{startperl}.
+
+# This forces PL files to create target in same directory as PL file.
+# This is so that make depend always knows where to find PL derivatives.
+$origdir = cwd;
+chdir(dirname($0));
+$file = basename($0, '.PL');
+$file .= '.com' if $^O eq 'VMS';
+
+open OUT,">$file" or die "Can't create $file: $!";
+
+print "Extracting $file (with variable substitutions)\n";
+
+# In this section, perl variables will be expanded during extraction.
+# You can use $Config{...} to use Configure variables.
+
+print OUT <<"!GROK!THIS!";
+$Config{'startperl'}
+ eval 'exec perl -S \$0 "\$@"'
+ if 0;
+!GROK!THIS!
+
+# In the following, perl variables are not expanded during extraction.
+
+print OUT <<'!NO!SUBS!';
+
+#############################################################################
+# pod2usage -- command to print usage messages from embedded pod docs
+#
+# Copyright (c) 1996-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+use strict;
+#use diagnostics;
+
+=head1 NAME
+
+pod2usage - print usage messages from embedded pod docs in files
+
+=head1 SYNOPSIS
+
+=over 12
+
+=item B<pod2usage>
+
+[B<-help>]
+[B<-man>]
+[B<-exit>S< >I<exitval>]
+[B<-output>S< >I<outfile>]
+[B<-verbose> I<level>]
+[B<-pathlist> I<dirlist>]
+[B<-formatter> I<module>]
+I<file>
+
+=back
+
+=head1 OPTIONS AND ARGUMENTS
+
+=over 8
+
+=item B<-help>
+
+Print a brief help message and exit.
+
+=item B<-man>
+
+Print this command's manual page and exit.
+
+=item B<-exit> I<exitval>
+
+The exit status value to return.
+
+=item B<-output> I<outfile>
+
+The output file to print to. If the special names "-" or ">&1" or ">&STDOUT"
+are used then standard output is used. If ">&2" or ">&STDERR" is used then
+standard error is used.
+
+=item B<-verbose> I<level>
+
+The desired level of verbosity to use:
+
+ 1 : print SYNOPSIS only
+ 2 : print SYNOPSIS sections and any OPTIONS/ARGUMENTS sections
+ 3 : print the entire manpage (similar to running pod2text)
+
+=item B<-pathlist> I<dirlist>
+
+Specifies one or more directories to search for the input file if it
+was not supplied with an absolute path. Each directory path in the given
+list should be separated by a ':' on Unix (';' on MSWin32 and DOS).
+
+=item B<-formatter> I<module>
+
+Which text formatter to use. Default is L<Pod::Text>, or for very old
+Perl versions L<Pod::PlainText>. An alternative would be e.g.
+L<Pod::Text::Termcap>.
+
+=item I<file>
+
+The pathname of a file containing pod documentation to be output in
+usage message format (defaults to standard input).
+
+=back
+
+=head1 DESCRIPTION
+
+B<pod2usage> will read the given input file looking for pod
+documentation and will print the corresponding usage message.
+If no input file is specified then standard input is read.
+
+B<pod2usage> invokes the B<pod2usage()> function in the B<Pod::Usage>
+module. Please see L<Pod::Usage/pod2usage()>.
+
+=head1 SEE ALSO
+
+L<Pod::Usage>, L<pod2text(1)>
+
+=head1 AUTHOR
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Brad Appleton E<lt>bradapp@enteract.comE<gt>
+
+Based on code for B<pod2text(1)> written by
+Tom Christiansen E<lt>tchrist@mox.perl.comE<gt>
+
+=cut
+
+use Getopt::Long;
+
+## Define options
+my %options = ();
+my @opt_specs = (
+ 'help',
+ 'man',
+ 'exit=i',
+ 'output=s',
+ 'pathlist=s',
+ 'formatter=s',
+ 'verbose=i',
+);
+
+## Parse options
+GetOptions(\%options, @opt_specs) || pod2usage(2);
+$Pod::Usage::Formatter = $options{formatter} if $options{formatter};
+require Pod::Usage;
+Pod::Usage->import();
+pod2usage(1) if ($options{help});
+pod2usage(VERBOSE => 2) if ($options{man});
+
+## Dont default to STDIN if connected to a terminal
+pod2usage(2) if ((@ARGV == 0) && (-t STDIN));
+
+@ARGV = ('-') unless (@ARGV);
+if (@ARGV > 1) {
+ print STDERR "pod2usage: Too many filenames given\n\n";
+ pod2usage(2);
+}
+
+my %usage = ();
+$usage{-input} = shift(@ARGV);
+$usage{-exitval} = $options{'exit'} if (defined $options{'exit'});
+$usage{-output} = $options{'output'} if (defined $options{'output'});
+$usage{-verbose} = $options{'verbose'} if (defined $options{'verbose'});
+$usage{-pathlist} = $options{'pathlist'} if (defined $options{'pathlist'});
+
+pod2usage(\%usage);
+
+
+!NO!SUBS!
+
+close OUT or die "Can't close $file: $!";
+chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
+exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
+chdir $origdir;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/p2u_data.pl b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/p2u_data.pl
new file mode 100644
index 00000000000..858cc56cb24
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/p2u_data.pl
@@ -0,0 +1,18 @@
+use Pod::Usage;
+pod2usage(-verbose => 2, -exit => 17, -input => \*DATA);
+
+__DATA__
+=head1 NAME
+
+Test
+
+=head1 SYNOPSIS
+
+perl podusagetest.pl
+
+=head1 DESCRIPTION
+
+This is a test.
+
+=cut
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage.t b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage.t
new file mode 100644
index 00000000000..98788fc399c
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage.t
@@ -0,0 +1,18 @@
+BEGIN {
+ use File::Basename;
+ my $THISDIR = dirname $0;
+ unshift @INC, $THISDIR;
+ require "testp2pt.pl";
+ import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV; ## convert cmdline to options-hash
+my $passed = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 ) unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+=include pod2usage.PL
+
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage.xr b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage.xr
new file mode 100644
index 00000000000..ceac4f1f825
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage.xr
@@ -0,0 +1,63 @@
+###### begin =include pod2usage.PL #####
+NAME
+ pod2usage - print usage messages from embedded pod docs in files
+
+SYNOPSIS
+ pod2usage [-help] [-man] [-exit *exitval*] [-output *outfile*]
+ [-verbose *level*] [-pathlist *dirlist*] [-formatter
+ *module*] *file*
+
+OPTIONS AND ARGUMENTS
+ -help Print a brief help message and exit.
+
+ -man Print this command's manual page and exit.
+
+ -exit *exitval*
+ The exit status value to return.
+
+ -output *outfile*
+ The output file to print to. If the special names "-" or ">&1"
+ or ">&STDOUT" are used then standard output is used. If ">&2" or
+ ">&STDERR" is used then standard error is used.
+
+ -verbose *level*
+ The desired level of verbosity to use:
+
+ 1 : print SYNOPSIS only
+ 2 : print SYNOPSIS sections and any OPTIONS/ARGUMENTS sections
+ 3 : print the entire manpage (similar to running pod2text)
+
+ -pathlist *dirlist*
+ Specifies one or more directories to search for the input file
+ if it was not supplied with an absolute path. Each directory
+ path in the given list should be separated by a ':' on Unix (';'
+ on MSWin32 and DOS).
+
+ -formatter *module*
+ Which text formatter to use. Default is the Pod::Text manpage,
+ or for very old Perl versions the Pod::PlainText manpage. An
+ alternative would be e.g. the Pod::Text::Termcap manpage.
+
+ *file* The pathname of a file containing pod documentation to be output
+ in usage message format (defaults to standard input).
+
+DESCRIPTION
+ pod2usage will read the given input file looking for pod documentation
+ and will print the corresponding usage message. If no input file is
+ specified then standard input is read.
+
+ pod2usage invokes the pod2usage() function in the Pod::Usage module.
+ Please see the pod2usage() entry in the Pod::Usage manpage.
+
+SEE ALSO
+ the Pod::Usage manpage, the pod2text(1) manpage
+
+AUTHOR
+ Please report bugs using http://rt.cpan.org.
+
+ Brad Appleton <bradapp@enteract.com>
+
+ Based on code for pod2text(1) written by Tom Christiansen
+ <tchrist@mox.perl.com>
+
+###### end =include pod2usage.PL #####
diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage2.t b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage2.t
new file mode 100644
index 00000000000..a2b0a32f974
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage2.t
@@ -0,0 +1,357 @@
+#!/usr/bin/perl -w
+
+use Test::More;
+use strict;
+
+BEGIN {
+ if ($^O eq 'MSWin32' || $^O eq 'VMS') {
+ plan skip_all => "Not portable on Win32 or VMS\n";
+ }
+ else {
+ plan tests => 34;
+ }
+ use_ok ("Pod::Usage");
+}
+
+sub getoutput
+{
+ my ($code) = @_;
+ my $pid = open(TEST_IN, "-|");
+ unless(defined $pid) {
+ die "Cannot fork: $!";
+ }
+ if($pid) {
+ # parent
+ my @out = <TEST_IN>;
+ close(TEST_IN);
+ my $exit = $?>>8;
+ s/^/#/ for @out;
+ local $" = "";
+ print "#EXIT=$exit OUTPUT=+++#@out#+++\n";
+ return($exit, join("",@out));
+ }
+ # child
+ open(STDERR, ">&STDOUT");
+ Test::More->builder->no_ending(1);
+ &$code;
+ print "--NORMAL-RETURN--\n";
+ exit 0;
+}
+
+sub compare
+{
+ my ($left,$right) = @_;
+ $left =~ s/^#\s+/#/gm;
+ $right =~ s/^#\s+/#/gm;
+ $left =~ s/\s+/ /gm;
+ $right =~ s/\s+/ /gm;
+ $left eq $right;
+}
+
+SKIP: {
+if('Pod::Usage'->isa('Pod::Text') && $Pod::Text::VERSION < 2.18) {
+ skip("Formatting with Pod::Text $Pod::Text::VERSION not reliable", 33);
+}
+
+my ($exit, $text) = getoutput( sub { pod2usage() } );
+is ($exit, 2, "Exit status pod2usage ()");
+ok (compare ($text, <<'EOT'), "Output test pod2usage ()");
+#Usage:
+# frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+#
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(
+ -message => 'You naughty person, what did you say?',
+ -verbose => 1 ) });
+is ($exit, 1, "Exit status pod2usage (-message => '...', -verbose => 1)");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (-message => '...', -verbose => 1)") or diag("Got:\n$text\n");
+#You naughty person, what did you say?
+# Usage:
+# frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+#
+# Options:
+# -r | --recursive
+# Run recursively.
+#
+# -f | --force
+# Just do it!
+#
+# -n number
+# Specify number of frobs, default is 42.
+#
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(
+ -verbose => 2, -exit => 42 ) } );
+is ($exit, 42, "Exit status pod2usage (-verbose => 2, -exit => 42)");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (-verbose => 2, -exit => 42)");
+#NAME
+# frobnicate - do what I mean
+#
+# SYNOPSIS
+# frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+#
+# DESCRIPTION
+# frobnicate does foo and bar and what not.
+#
+# OPTIONS
+# -r | --recursive
+# Run recursively.
+#
+# -f | --force
+# Just do it!
+#
+# -n number
+# Specify number of frobs, default is 42.
+#
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(0) } );
+is ($exit, 0, "Exit status pod2usage (0)");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (0)");
+#Usage:
+# frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+#
+# Options:
+# -r | --recursive
+# Run recursively.
+#
+# -f | --force
+# Just do it!
+#
+# -n number
+# Specify number of frobs, default is 42.
+#
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(42) } );
+is ($exit, 42, "Exit status pod2usage (42)");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (42)");
+#Usage:
+# frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+#
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(-verbose => 0, -exit => 'NOEXIT') } );
+is ($exit, 0, "Exit status pod2usage (-verbose => 0, -exit => 'NOEXIT')");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (-verbose => 0, -exit => 'NOEXIT')");
+#Usage:
+# frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+#
+# --NORMAL-RETURN--
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(-verbose => 99, -sections => 'DESCRIPTION') } );
+is ($exit, 1, "Exit status pod2usage (-verbose => 99, -sections => 'DESCRIPTION')");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (-verbose => 99, -sections => 'DESCRIPTION')");
+#Description:
+# frobnicate does foo and bar and what not.
+#
+EOT
+
+# does the __DATA__ work ok as input
+my (@blib, $test_script, $pod_file1, , $pod_file2);
+if (!$ENV{PERL_CORE}) {
+ @blib = '-Mblib';
+}
+$test_script = File::Spec->catfile(qw(t pod p2u_data.pl));
+$pod_file1 = File::Spec->catfile(qw(t pod usage.pod));
+$pod_file2 = File::Spec->catfile(qw(t pod usage2.pod));
+
+
+($exit, $text) = getoutput( sub { system($^X, @blib, $test_script); exit($? >> 8); } );
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 17, "Exit status pod2usage (-verbose => 2, -input => \*DATA)");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (-verbose => 2, -input => \*DATA)") or diag "Got:\n$text\n";
+#NAME
+# Test
+#
+#SYNOPSIS
+# perl podusagetest.pl
+#
+#DESCRIPTION
+# This is a test.
+#
+EOT
+
+# test that SYNOPSIS and USAGE are printed
+($exit, $text) = getoutput( sub { pod2usage(-input => $pod_file1,
+ -exitval => 0, -verbose => 0); });
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0, "Exit status pod2usage with USAGE");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with USAGE") or diag "Got:\n$text\n";
+#Usage:
+# This is a test for CPAN#33020
+#
+#Usage:
+# And this will be also printed.
+#
+EOT
+
+# test that SYNOPSIS and USAGE are printed with options
+($exit, $text) = getoutput( sub { pod2usage(-input => $pod_file1,
+ -exitval => 0, -verbose => 1); });
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0, "Exit status pod2usage with USAGE and verbose=1");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with USAGE and verbose=1") or diag "Got:\n$text\n";
+#Usage:
+# This is a test for CPAN#33020
+#
+#Usage:
+# And this will be also printed.
+#
+#Options:
+# And this with verbose == 1
+#
+EOT
+
+# test that only USAGE is printed when requested
+($exit, $text) = getoutput( sub { pod2usage(-input => $pod_file1,
+ -exitval => 0, -verbose => 99, -sections => 'USAGE'); });
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0, "Exit status pod2usage with USAGE and verbose=99");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with USAGE and verbose=99") or diag "Got:\n$text\n";
+#Usage:
+# This is a test for CPAN#33020
+#
+EOT
+
+# test with pod_where
+use_ok('Pod::Find', qw(pod_where));
+
+($exit, $text) = getoutput( sub { pod2usage( -input => pod_where({-inc => 1}, 'Pod::Usage'),
+ -exitval => 0, -verbose => 0) } );
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0, "Exit status pod2usage with Pod::Find");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with Pod::Find") or diag "Got:\n$text\n";
+#Usage:
+# use Pod::Usage
+#
+# my $message_text = "This text precedes the usage message.";
+# my $exit_status = 2; ## The exit status to use
+# my $verbose_level = 0; ## The verbose level to use
+# my $filehandle = \*STDERR; ## The filehandle to write to
+#
+# pod2usage($message_text);
+#
+# pod2usage($exit_status);
+#
+# pod2usage( { -message => $message_text ,
+# -exitval => $exit_status ,
+# -verbose => $verbose_level,
+# -output => $filehandle } );
+#
+# pod2usage( -msg => $message_text ,
+# -exitval => $exit_status ,
+# -verbose => $verbose_level,
+# -output => $filehandle );
+#
+# pod2usage( -verbose => 2,
+# -noperldoc => 1 )
+#
+EOT
+
+# verify that sections are correctly found after nested headings
+($exit, $text) = getoutput( sub { pod2usage(-input => $pod_file2,
+ -exitval => 0, -verbose => 99,
+ -sections => [qw(BugHeader BugHeader/.*')]) });
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0, "Exit status pod2usage with nested headings");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with nested headings") or diag "Got:\n$text\n";
+#BugHeader:
+# Some text
+#
+# BugHeader2:
+# More
+# Still More
+#
+EOT
+
+# Verify that =over =back work OK
+($exit, $text) = getoutput( sub {
+ pod2usage(-input => $pod_file2,
+ -exitval => 0, -verbose => 99, -sections => 'BugHeader/BugHeader2') } );
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0, "Exit status pod2usage with over/back");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with over/back") or diag "Got:\n$text\n";
+# BugHeader2:
+# More
+# Still More
+#
+EOT
+
+# new array API for -sections
+($exit, $text) = getoutput( sub {
+ pod2usage(-input => $pod_file2,
+ -exitval => 0, -verbose => 99, -sections => [qw(Heading-1/!.+ Heading-2/.+)]) } );
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0, "Exit status pod2usage with -sections => []");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with -sections => []") or diag "Got:\n$text\n";
+#Heading-1:
+# One
+# Two
+#
+# Heading-2.2:
+# More text.
+#
+EOT
+
+# allow subheadings in OPTIONS and ARGUMENTS
+($exit, $text) = getoutput( sub {
+ pod2usage(-input => $pod_file2,
+ -exitval => 0, -verbose => 1) } );
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+$text =~ s{[*](destination|files)[*]}{$1}g; # strip * chars
+is ($exit, 0, "Exit status pod2usage with subheadings in OPTIONS");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with subheadings in OPTIONS") or diag "Got:\n$text\n";
+#Options and Arguments:
+# Arguments:
+# The required arguments (which typically follow any options on the
+# command line) are:
+#
+# destination
+# files
+#
+# Options:
+# Options may be abbreviated. Options which take values may be separated
+# from the values by whitespace or the "=" character.
+#
+EOT
+} # end SKIP
+
+__END__
+
+=head1 NAME
+
+frobnicate - do what I mean
+
+=head1 SYNOPSIS
+
+B<frobnicate> S<[ B<-r> | B<--recursive> ]> S<[ B<-f> | B<--force> ]>
+ file ...
+
+=head1 DESCRIPTION
+
+B<frobnicate> does foo and bar and what not.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-r> | B<--recursive>
+
+Run recursively.
+
+=item B<-f> | B<--force>
+
+Just do it!
+
+=item B<-n> number
+
+Specify number of frobs, default is 42.
+
+=back
+
+=cut
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/testcmp.pl b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/testcmp.pl
new file mode 100644
index 00000000000..b8592fcc2a8
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/testcmp.pl
@@ -0,0 +1,94 @@
+package TestCompare;
+
+use vars qw(@ISA @EXPORT $MYPKG);
+#use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+use File::Basename;
+use File::Spec;
+use FileHandle;
+
+@ISA = qw(Exporter);
+@EXPORT = qw(&testcmp);
+$MYPKG = eval { (caller)[0] };
+
+##--------------------------------------------------------------------------
+
+=head1 NAME
+
+testcmp -- compare two files line-by-line
+
+=head1 SYNOPSIS
+
+ $is_diff = testcmp($file1, $file2);
+
+or
+
+ $is_diff = testcmp({-cmplines => \&mycmp}, $file1, $file2);
+
+=head2 DESCRIPTION
+
+Compare two text files line-by-line and return 0 if they are the
+same, 1 if they differ. Each of $file1 and $file2 may be a filenames,
+or a filehandles (in which case it must already be open for reading).
+
+If the first argument is a hashref, then the B<-cmplines> key in the
+hash may have a subroutine reference as its corresponding value.
+The referenced user-defined subroutine should be a line-comparator
+function that takes two pre-chomped text-lines as its arguments
+(the first is from $file1 and the second is from $file2). It should
+return 0 if it considers the two lines equivalent, and non-zero
+otherwise.
+
+=cut
+
+##--------------------------------------------------------------------------
+
+sub testcmp( $ $ ; $) {
+ my %opts = ref($_[0]) eq 'HASH' ? %{shift()} : ();
+ my ($file1, $file2) = @_;
+ my ($fh1, $fh2) = ($file1, $file2);
+ unless (ref $fh1) {
+ $fh1 = FileHandle->new($file1, "r") or die "Can't open $file1: $!";
+ }
+ unless (ref $fh2) {
+ $fh2 = FileHandle->new($file2, "r") or die "Can't open $file2: $!";
+ }
+
+ my $cmplines = $opts{'-cmplines'} || undef;
+ my ($f1text, $f2text) = ("", "");
+ my ($line, $diffs) = (0, 0);
+
+ while ( defined($f1text) and defined($f2text) ) {
+ defined($f1text = <$fh1>) and chomp($f1text);
+ defined($f2text = <$fh2>) and chomp($f2text);
+ ++$line;
+ last unless ( defined($f1text) and defined($f2text) );
+ # kill any extra line endings
+ $f1text =~ s/[\r\n]+$//s;
+ $f2text =~ s/[\r\n]+$//s;
+ $diffs = (ref $cmplines) ? &$cmplines($f1text, $f2text)
+ : ($f1text ne $f2text);
+ last if $diffs;
+ }
+ close($fh1) unless (ref $file1);
+ close($fh2) unless (ref $file2);
+
+ $diffs = 1 if (defined($f1text) or defined($f2text));
+ if ( defined($f1text) and defined($f2text) ) {
+ ## these two lines must be different
+ warn "$file1 and $file2 differ at line $line\n";
+ }
+ elsif (defined($f1text) and (! defined($f1text))) {
+ ## file1 must be shorter
+ warn "$file1 is shorter than $file2\n";
+ }
+ elsif (defined $f2text) {
+ ## file2 must be longer
+ warn "$file1 is shorter than $file2\n";
+ }
+ return $diffs;
+}
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/testp2pt.pl b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/testp2pt.pl
new file mode 100644
index 00000000000..5c17300b508
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/testp2pt.pl
@@ -0,0 +1,192 @@
+package TestPodIncPlainText;
+
+BEGIN {
+ use File::Basename;
+ use File::Spec;
+ use Cwd qw(abs_path);
+ push @INC, '..';
+ my $THISDIR = abs_path(dirname $0);
+ unshift @INC, $THISDIR;
+ require "testcmp.pl";
+ import TestCompare;
+ my $PARENTDIR = dirname $THISDIR;
+ push @INC, map { File::Spec->catfile($_, 'lib') } ($PARENTDIR, $THISDIR);
+}
+
+#use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+#use File::Compare;
+#use Cwd qw(abs_path);
+
+use vars qw($MYPKG @EXPORT @ISA);
+$MYPKG = eval { (caller)[0] };
+@EXPORT = qw(&testpodplaintext);
+BEGIN {
+ require Pod::PlainText;
+ @ISA = qw( Pod::PlainText );
+ require VMS::Filespec if $^O eq 'VMS';
+}
+
+## Hardcode settings for TERMCAP and COLUMNS so we can try to get
+## reproducible results between environments
+@ENV{qw(TERMCAP COLUMNS)} = ('co=76:do=^J', 76);
+
+sub catfile(@) { File::Spec->catfile(@_); }
+
+my $INSTDIR = abs_path(dirname $0);
+$INSTDIR = VMS::Filespec::unixpath($INSTDIR) if $^O eq 'VMS';
+$INSTDIR =~ s#/$## if $^O eq 'VMS';
+$INSTDIR =~ s#:$## if $^O eq 'MacOS';
+$INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 'pod');
+$INSTDIR =~ s#:$## if $^O eq 'MacOS';
+$INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 't');
+my @PODINCDIRS = ( catfile($INSTDIR, 'lib', 'Pod'),
+ catfile($INSTDIR, 'scripts'),
+ catfile($INSTDIR, 'pod'),
+ catfile($INSTDIR, 't', 'pod')
+ );
+
+# FIXME - we should make the core capable of finding utilities built in
+# locations in ext.
+push @PODINCDIRS, catfile((File::Spec->updir()) x 2, 'pod') if $ENV{PERL_CORE};
+
+## Find the path to the file to =include
+sub findinclude {
+ my $self = shift;
+ my $incname = shift;
+
+ ## See if its already found w/out any "searching;
+ return $incname if (-r $incname);
+
+ ## Need to search for it. Look in the following directories ...
+ ## 1. the directory containing this pod file
+ my $thispoddir = dirname $self->input_file;
+ ## 2. the parent directory of the above
+ my $parentdir = dirname $thispoddir;
+ my @podincdirs = ($thispoddir, $parentdir, @PODINCDIRS);
+
+ for (@podincdirs) {
+ my $incfile = catfile($_, $incname);
+ return $incfile if (-r $incfile);
+ }
+ warn("*** Can't find =include file $incname in @podincdirs\n");
+ return "";
+}
+
+sub command {
+ my $self = shift;
+ my ($cmd, $text, $line_num, $pod_para) = @_;
+ $cmd = '' unless (defined $cmd);
+ local $_ = $text || '';
+ my $out_fh = $self->output_handle;
+
+ ## Defer to the superclass for everything except '=include'
+ return $self->SUPER::command(@_) unless ($cmd eq "include");
+
+ ## We have an '=include' command
+ my $incdebug = 1; ## debugging
+ my @incargs = split;
+ if (@incargs == 0) {
+ warn("*** No filename given for '=include'\n");
+ return;
+ }
+ my $incfile = $self->findinclude(shift @incargs) or return;
+ my $incbase = basename $incfile;
+ print $out_fh "###### begin =include $incbase #####\n" if ($incdebug);
+ $self->parse_from_file( {-cutting => 1}, $incfile );
+ print $out_fh "###### end =include $incbase #####\n" if ($incdebug);
+}
+
+sub begin_input {
+ $_[0]->{_INFILE} = VMS::Filespec::unixify($_[0]->{_INFILE}) if $^O eq 'VMS';
+}
+
+sub podinc2plaintext( $ $ ) {
+ my ($infile, $outfile) = @_;
+ local $_;
+ my $text_parser = $MYPKG->new;
+ $text_parser->parse_from_file($infile, $outfile);
+}
+
+sub testpodinc2plaintext( @ ) {
+ my %args = @_;
+ my $infile = $args{'-In'} || croak "No input file given!";
+ my $outfile = $args{'-Out'} || croak "No output file given!";
+ my $cmpfile = $args{'-Cmp'} || croak "No compare-result file given!";
+
+ my $different = '';
+ my $testname = basename $cmpfile, '.t', '.xr';
+
+ unless (-e $cmpfile) {
+ my $msg = "*** Can't find comparison file $cmpfile for testing $infile";
+ warn "$msg\n";
+ return $msg;
+ }
+
+ print "# Running testpodinc2plaintext for '$testname'...\n";
+ ## Compare the output against the expected result
+ podinc2plaintext($infile, $outfile);
+ if ( testcmp($outfile, $cmpfile) ) {
+ $different = "$outfile is different from $cmpfile";
+ }
+ else {
+ unlink($outfile);
+ }
+ return $different;
+}
+
+sub testpodplaintext( @ ) {
+ my %opts = (ref $_[0] eq 'HASH') ? %{shift()} : ();
+ my @testpods = @_;
+ my ($testname, $testdir) = ("", "");
+ my ($podfile, $cmpfile) = ("", "");
+ my ($outfile, $errfile) = ("", "");
+ my $passes = 0;
+ my $failed = 0;
+ local $_;
+
+ print "1..", scalar @testpods, "\n" unless ($opts{'-xrgen'});
+
+ for $podfile (@testpods) {
+ ($testname, $_) = fileparse($podfile);
+ $testdir ||= $_;
+ $testname =~ s/\.t$//;
+ $cmpfile = $testdir . $testname . '.xr';
+ $outfile = $testdir . $testname . '.OUT';
+
+ if ($opts{'-xrgen'}) {
+ if ($opts{'-force'} or ! -e $cmpfile) {
+ ## Create the comparison file
+ print "# Creating expected result for \"$testname\"" .
+ " pod2plaintext test ...\n";
+ podinc2plaintext($podfile, $cmpfile);
+ }
+ else {
+ print "# File $cmpfile already exists" .
+ " (use '-force' to regenerate it).\n";
+ }
+ next;
+ }
+
+ my $failmsg = testpodinc2plaintext
+ -In => $podfile,
+ -Out => $outfile,
+ -Cmp => $cmpfile;
+ if ($failmsg) {
+ ++$failed;
+ print "#\tFAILED. ($failmsg)\n";
+ print "not ok ", $failed+$passes, "\n";
+ }
+ else {
+ ++$passes;
+ unlink($outfile);
+ print "#\tPASSED.\n";
+ print "ok ", $failed+$passes, "\n";
+ }
+ }
+ return $passes;
+}
+
+1;
diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/usage.pod b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/usage.pod
new file mode 100644
index 00000000000..c0fbbc528e1
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/usage.pod
@@ -0,0 +1,18 @@
+=head1 NAME
+
+usage.pod - example for testing USAGE and SYNOPSIS
+
+=head1 USAGE
+
+This is a test for CPAN#33020
+
+=head1 SYNOPSIS
+
+And this will be also printed.
+
+=head1 OPTIONS
+
+And this with verbose == 1
+
+=cut
+
diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/usage2.pod b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/usage2.pod
new file mode 100644
index 00000000000..1e03b7dfc68
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/usage2.pod
@@ -0,0 +1,56 @@
+=head1 Heading-1
+
+=over 100
+
+=item One
+
+=item Two
+
+=back
+
+=head2 Heading 2
+
+Some text
+
+=head1 BugHeader
+
+Some text
+
+=head2 BugHeader2
+
+=over 4
+
+=item More
+
+=item Still More
+
+=back
+
+=head1 Heading-2
+
+=head2 Heading-2.2
+
+More text.
+
+=head1 OPTIONS AND ARGUMENTS
+
+=head2 Arguments
+
+The required arguments (which typically follow any options on the
+command line) are:
+
+=over
+
+=item I<destination>
+
+=item I<files>
+
+=back
+
+=head2 Options
+
+Options may be abbreviated. Options which take values may be separated
+from the values by whitespace or the "=" character.
+
+=cut
+
diff --git a/gnu/usr.bin/perl/cpan/Socket/Makefile.PL b/gnu/usr.bin/perl/cpan/Socket/Makefile.PL
index 9a8f65d274d..117d7782b4e 100644
--- a/gnu/usr.bin/perl/cpan/Socket/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Socket/Makefile.PL
@@ -13,7 +13,8 @@ my $seq = 0;
sub check_for
{
my %args = @_;
- return if exists $Config{$args{confkey}};
+ return if $ENV{PERL_CORE};
+ return if defined $Config{$args{confkey}};
require ExtUtils::CBuilder;
$cb ||= ExtUtils::CBuilder->new( quiet => 1 );
@@ -30,10 +31,15 @@ sub check_for
open( my $file_source_fh, ">", $file_source ) or die "Cannot write $file_source - $!";
print $file_source_fh <<"EOF";
#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
+#ifdef WIN32
+# include <ws2tcpip.h>
+# include <winsock.h>
+#else
+# include <sys/socket.h>
+# include <netdb.h>
+# include <netinet/in.h>
+# include <arpa/inet.h>
+#endif
int main(int argc, char *argv[])
{
(void)argc;
@@ -104,6 +110,19 @@ check_for(
);
check_for(
+ confkey => "d_ip_mreq",
+ define => "HAS_IP_MREQ",
+ main => "struct ip_mreq mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;"
+);
+
+# TODO: Needs adding to perl5 core before importing dual-life again
+check_for(
+ confkey => "d_ip_mreq_source",
+ define => "HAS_IP_MREQ_SOURCE",
+ main => "struct ip_mreq_source mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;"
+);
+
+check_for(
confkey => "d_ipv6_mreq",
define => "HAS_IPV6_MREQ",
main => "struct ipv6_mreq mreq; mreq.ipv6mr_interface = 0;"
@@ -149,12 +168,14 @@ my @names = (
IOV_MAX
- IP_OPTIONS IP_HDRINCL IP_TOS IP_TTL IP_RECVOPTS IP_RECVRETOPTS
- IP_RETOPTS
+ IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP
+ IP_DROP_SOURCE_MEMBERSHIP IP_HDRINCL IP_MULTICAST_IF IP_MULTICAST_LOOP
+ IP_MULTICAST_TTL IP_OPTIONS IP_RECVOPTS IP_RECVRETOPTS IP_RETOPTS IP_TOS
+ IP_TTL
- IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER
- IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP
- IPV6_UNICAST_HOPS IPV6_V6ONLY
+ IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP
+ IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS
+ IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY
MSG_BCAST MSG_BTAG MSG_CTLFLAGS MSG_CTLIGNORE MSG_DONTWAIT MSG_EOF
MSG_EOR MSG_ERRQUEUE MSG_ETAG MSG_FIN MSG_MAXIOVLEN MSG_MCAST
@@ -172,6 +193,7 @@ my @names = (
SCM_CONNECT SCM_CREDENTIALS SCM_CREDS SCM_TIMESTAMP
SOCK_DGRAM SOCK_RAW SOCK_RDM SOCK_SEQPACKET SOCK_STREAM
+ SOCK_NONBLOCK SOCK_CLOEXEC
SOL_SOCKET
@@ -186,10 +208,11 @@ my @names = (
SO_SECURITY_ENCRYPTION_TRANSPORT SO_SNDBUF SO_SNDLOWAT SO_SNDTIMEO
SO_STATE SO_TYPE SO_USELOOPBACK SO_XOPEN SO_XSE
- TCP_KEEPALIVE TCP_MAXRT TCP_MAXSEG TCP_NODELAY TCP_STDURG TCP_CORK
- TCP_KEEPIDLE TCP_KEEPINTVL TCP_KEEPCNT TCP_SYNCNT TCP_LINGER2
- TCP_DEFER_ACCEPT TCP_WINDOW_CLAMP TCP_INFO TCP_QUICKACK TCP_CONGESTION
- TCP_MD5SIG
+ TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO
+ TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL
+ TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT
+ TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT
+ TCP_WINDOW_CLAMP
UIO_MAXIOV
),
diff --git a/gnu/usr.bin/perl/cpan/Socket/Socket.pm b/gnu/usr.bin/perl/cpan/Socket/Socket.pm
index e12d8517deb..270e4ed14d6 100644
--- a/gnu/usr.bin/perl/cpan/Socket/Socket.pm
+++ b/gnu/usr.bin/perl/cpan/Socket/Socket.pm
@@ -3,7 +3,7 @@ package Socket;
use strict;
{ use 5.006001; }
-our $VERSION = '2.001';
+our $VERSION = '2.009';
=head1 NAME
@@ -87,6 +87,13 @@ functions as sockaddr_family().
Socket type constants to use as the second argument to socket(), or the value
of the C<SO_TYPE> socket option.
+=head2 SOCK_NONBLOCK. SOCK_CLOEXEC
+
+Linux-specific shortcuts to specify the C<O_NONBLOCK> and C<FD_CLOEXEC> flags
+during a C<socket(2)> call.
+
+ socket( my $sockh, PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, 0 )
+
=head2 SOL_SOCKET
Socket option level constant for setsockopt() and getsockopt().
@@ -177,6 +184,8 @@ opaque string representing the IP address (you can use inet_ntoa() to convert
the address to the four-dotted numeric format). Will croak if the structure
does not represent an C<AF_INET> address.
+In scalar context will return just the IP address.
+
=head2 $sockaddr = sockaddr_in $port, $ip_address
=head2 ($port, $ip_address) = sockaddr_in $sockaddr
@@ -204,6 +213,8 @@ flow label. (You can use inet_ntop() to convert the address to the usual
string format). Will croak if the structure does not represent an C<AF_INET6>
address.
+In scalar context will return just the IP address.
+
=head2 $sockaddr = sockaddr_in6 $port, $ip6_address, [$scope_id, [$flowinfo]]
=head2 ($port, $ip6_address, $scope_id, $flowinfo) = sockaddr_in6 $sockaddr
@@ -241,13 +252,37 @@ pack_sockaddr_un() or unpack_sockaddr_un() explicitly.
These are only supported if your system has E<lt>F<sys/un.h>E<gt>.
-=head2 $ipv6_mreq = pack_ipv6_mreq $ip6_address, $ifindex
+=head2 $ip_mreq = pack_ip_mreq $multiaddr, $interface
+
+Takes an IPv4 multicast address and optionally an interface address (or
+C<INADDR_ANY>). Returns the C<ip_mreq> structure with those arguments packed
+in. Suitable for use with the C<IP_ADD_MEMBERSHIP> and C<IP_DROP_MEMBERSHIP>
+sockopts.
+
+=head2 ($multiaddr, $interface) = unpack_ip_mreq $ip_mreq
+
+Takes an C<ip_mreq> structure. Returns a list of two elements; the IPv4
+multicast address and interface address.
-Takes an IPv6 address and an interface number. Returns the C<ipv6_mreq>
-structure with those arguments packed in. Suitable for use with the
-C<IPV6_ADD_MEMBERSHIP> and C<IPV6_DROP_MEMBERSHIP> sockopts.
+=head2 $ip_mreq_source = pack_ip_mreq_source $multiaddr, $source, $interface
-=head2 ($ip6_address, $ifindex) = unpack_ipv6_mreq $ipv6_mreq
+Takes an IPv4 multicast address, source address, and optionally an interface
+address (or C<INADDR_ANY>). Returns the C<ip_mreq_source> structure with those
+arguments packed in. Suitable for use with the C<IP_ADD_SOURCE_MEMBERSHIP>
+and C<IP_DROP_SOURCE_MEMBERSHIP> sockopts.
+
+=head2 ($multiaddr, $source, $interface) = unpack_ip_mreq_source $ip_mreq
+
+Takes an C<ip_mreq_source> structure. Returns a list of three elements; the
+IPv4 multicast address, source address and interface address.
+
+=head2 $ipv6_mreq = pack_ipv6_mreq $multiaddr6, $ifindex
+
+Takes an IPv6 multicast address and an interface number. Returns the
+C<ipv6_mreq> structure with those arguments packed in. Suitable for use with
+the C<IPV6_ADD_MEMBERSHIP> and C<IPV6_DROP_MEMBERSHIP> sockopts.
+
+=head2 ($multiaddr6, $ifindex) = unpack_ipv6_mreq $ipv6_mreq
Takes an C<ipv6_mreq> structure. Returns a list of two elements; the IPv6
address and an interface number.
@@ -715,19 +750,28 @@ our @EXPORT = qw(
our @EXPORT_OK = qw(
CR LF CRLF $CR $LF $CRLF
+ SOCK_NONBLOCK SOCK_CLOEXEC
+
+ IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP
+ IP_DROP_SOURCE_MEMBERSHIP IP_MULTICAST_IF IP_MULTICAST_LOOP
+ IP_MULTICAST_TTL
+
IPPROTO_IP IPPROTO_IPV6 IPPROTO_RAW IPPROTO_ICMP IPPROTO_TCP
IPPROTO_UDP
- TCP_CONGESTION TCP_CORK TCP_DEFER_ACCEPT TCP_INFO TCP_KEEPALIVE
- TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL TCP_LINGER2 TCP_MAXRT TCP_MAXSEG
- TCP_MD5SIG TCP_NODELAY TCP_QUICKACK TCP_STDURG TCP_SYNCNT
- TCP_WINDOW_CLAMP
+ TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO
+ TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL
+ TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT
+ TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT
+ TCP_WINDOW_CLAMP
IN6ADDR_ANY IN6ADDR_LOOPBACK
- IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER
- IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP
- IPV6_UNICAST_HOPS IPV6_V6ONLY
+ IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP
+ IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS
+ IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY
+
+ pack_ip_mreq unpack_ip_mreq pack_ip_mreq_source unpack_ip_mreq_source
pack_ipv6_mreq unpack_ipv6_mreq
diff --git a/gnu/usr.bin/perl/cpan/Socket/Socket.xs b/gnu/usr.bin/perl/cpan/Socket/Socket.xs
index 5ddd0e9d8ee..069043531f0 100644
--- a/gnu/usr.bin/perl/cpan/Socket/Socket.xs
+++ b/gnu/usr.bin/perl/cpan/Socket/Socket.xs
@@ -44,6 +44,10 @@
# include <netinet/tcp.h>
#endif
+#ifdef WIN32
+# include <ws2tcpip.h>
+#endif
+
#ifdef NETWARE
NETDB_DEFINE_CONTEXT
NETINET_DEFINE_CONTEXT
@@ -175,6 +179,9 @@ static void *my_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 kl,
#ifndef mPUSHp
# define mPUSHp(p,l) sv_setpvn_mg(PUSHs(sv_newmortal()), (p), (l))
#endif /* !mPUSHp */
+#ifndef mPUSHs
+# define mPUSHs(s) PUSHs(sv_2mortal(s))
+#endif /* !mPUSHs */
#ifndef CvCONST_on
# undef newCONSTSUB
@@ -782,8 +789,7 @@ unpack_sockaddr_in(sin_sv)
{
STRLEN sockaddrlen;
struct sockaddr_in addr;
- unsigned short port;
- struct in_addr ip_address;
+ SV *ip_address_sv;
char * sin = SvPVbyte(sin_sv,sockaddrlen);
if (sockaddrlen != sizeof(addr)) {
croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
@@ -794,12 +800,16 @@ unpack_sockaddr_in(sin_sv)
croak("Bad address family for %s, got %d, should be %d",
"Socket::unpack_sockaddr_in", addr.sin_family, AF_INET);
}
- port = ntohs(addr.sin_port);
- ip_address = addr.sin_addr;
+ ip_address_sv = newSVpvn((char *)&addr.sin_addr, sizeof(addr.sin_addr));
- EXTEND(SP, 2);
- PUSHs(sv_2mortal(newSViv((IV) port)));
- PUSHs(sv_2mortal(newSVpvn((char *)&ip_address, sizeof(ip_address))));
+ if(GIMME_V == G_ARRAY) {
+ EXTEND(SP, 2);
+ mPUSHi(ntohs(addr.sin_port));
+ mPUSHs(ip_address_sv);
+ }
+ else {
+ mPUSHs(ip_address_sv);
+ }
}
void
@@ -850,6 +860,7 @@ unpack_sockaddr_in6(sin6_sv)
STRLEN addrlen;
struct sockaddr_in6 sin6;
char * addrbytes = SvPVbyte(sin6_sv, addrlen);
+ SV *ip_address_sv;
if (addrlen != sizeof(sin6))
croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
"Socket::unpack_sockaddr_in6", (UV)addrlen, (UV)sizeof(sin6));
@@ -857,15 +868,22 @@ unpack_sockaddr_in6(sin6_sv)
if (sin6.sin6_family != AF_INET6)
croak("Bad address family for %s, got %d, should be %d",
"Socket::unpack_sockaddr_in6", sin6.sin6_family, AF_INET6);
- EXTEND(SP, 4);
- mPUSHi(ntohs(sin6.sin6_port));
- mPUSHp((char *)&sin6.sin6_addr, sizeof(sin6.sin6_addr));
+ ip_address_sv = newSVpvn((char *)&sin6.sin6_addr, sizeof(sin6.sin6_addr));
+
+ if(GIMME_V == G_ARRAY) {
+ EXTEND(SP, 4);
+ mPUSHi(ntohs(sin6.sin6_port));
+ mPUSHs(ip_address_sv);
# ifdef HAS_SIN6_SCOPE_ID
- mPUSHi(sin6.sin6_scope_id);
+ mPUSHi(sin6.sin6_scope_id);
# else
- mPUSHi(0);
+ mPUSHi(0);
# endif
- mPUSHi(ntohl(sin6.sin6_flowinfo));
+ mPUSHi(ntohl(sin6.sin6_flowinfo));
+ }
+ else {
+ mPUSHs(ip_address_sv);
+ }
#else
ST(0) = (SV*)not_here("pack_sockaddr_in6");
#endif
@@ -877,7 +895,7 @@ inet_ntop(af, ip_address_sv)
SV * ip_address_sv
CODE:
#ifdef HAS_INETNTOP
- STRLEN addrlen, struct_size;
+ STRLEN addrlen;
#ifdef AF_INET6
struct in6_addr addr;
char str[INET6_ADDRSTRLEN];
@@ -892,13 +910,20 @@ inet_ntop(af, ip_address_sv)
ip_address = SvPV(ip_address_sv, addrlen);
- struct_size = sizeof(addr);
-
- if (af != AF_INET
+ switch(af) {
+ case AF_INET:
+ if(addrlen != 4)
+ croak("Bad address length for Socket::inet_ntop on AF_INET;"
+ " got %"UVuf", should be 4", (UV)addrlen);
+ break;
#ifdef AF_INET6
- && af != AF_INET6
+ case AF_INET6:
+ if(addrlen != 16)
+ croak("Bad address length for Socket::inet_ntop on AF_INET6;"
+ " got %"UVuf", should be 16", (UV)addrlen);
+ break;
#endif
- ) {
+ default:
croak("Bad address family for %s, got %d, should be"
#ifdef AF_INET6
" either AF_INET or AF_INET6",
@@ -908,7 +933,13 @@ inet_ntop(af, ip_address_sv)
"Socket::inet_ntop", af);
}
- Copy(ip_address, &addr, sizeof addr, char);
+ if(addrlen < sizeof(addr)) {
+ Copy(ip_address, &addr, addrlen, char);
+ Zero(((char*)&addr) + addrlen, sizeof(addr) - addrlen, char);
+ }
+ else {
+ Copy(ip_address, &addr, sizeof addr, char);
+ }
inet_ntop(af, &addr, str, sizeof str);
ST(0) = sv_2mortal(newSVpvn(str, strlen(str)));
@@ -959,27 +990,151 @@ inet_pton(af, host)
#endif
void
-pack_ipv6_mreq(addr, interface)
- SV * addr
+pack_ip_mreq(multiaddr, interface=&PL_sv_undef)
+ SV * multiaddr
+ SV * interface
+ CODE:
+ {
+#ifdef HAS_IP_MREQ
+ struct ip_mreq mreq;
+ char * multiaddrbytes;
+ char * interfacebytes;
+ STRLEN len;
+ if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
+ croak("Wide character in %s", "Socket::pack_ip_mreq");
+ multiaddrbytes = SvPVbyte(multiaddr, len);
+ if (len != sizeof(mreq.imr_multiaddr))
+ croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+ "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr));
+ Zero(&mreq, sizeof(mreq), char);
+ Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char);
+ if(SvOK(interface)) {
+ if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1))
+ croak("Wide character in %s", "Socket::pack_ip_mreq");
+ interfacebytes = SvPVbyte(interface, len);
+ if (len != sizeof(mreq.imr_interface))
+ croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+ "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_interface));
+ Copy(interfacebytes, &mreq.imr_interface, sizeof(mreq.imr_interface), char);
+ }
+ else
+ mreq.imr_interface.s_addr = INADDR_ANY;
+ ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
+#else
+ not_here("pack_ip_mreq");
+#endif
+ }
+
+void
+unpack_ip_mreq(mreq_sv)
+ SV * mreq_sv
+ PPCODE:
+ {
+#ifdef HAS_IP_MREQ
+ struct ip_mreq mreq;
+ STRLEN mreqlen;
+ char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
+ if (mreqlen != sizeof(mreq))
+ croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
+ "Socket::unpack_ip_mreq", (UV)mreqlen, (UV)sizeof(mreq));
+ Copy(mreqbytes, &mreq, sizeof(mreq), char);
+ EXTEND(SP, 2);
+ mPUSHp((char *)&mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr));
+ mPUSHp((char *)&mreq.imr_interface, sizeof(mreq.imr_interface));
+#else
+ not_here("unpack_ip_mreq");
+#endif
+ }
+
+void
+pack_ip_mreq_source(multiaddr, source, interface=&PL_sv_undef)
+ SV * multiaddr
+ SV * source
+ SV * interface
+ CODE:
+ {
+#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
+ struct ip_mreq_source mreq;
+ char * multiaddrbytes;
+ char * sourcebytes;
+ char * interfacebytes;
+ STRLEN len;
+ if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
+ croak("Wide character in %s", "Socket::pack_ip_mreq_source");
+ multiaddrbytes = SvPVbyte(multiaddr, len);
+ if (len != sizeof(mreq.imr_multiaddr))
+ croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+ "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr));
+ if (DO_UTF8(source) && !sv_utf8_downgrade(source, 1))
+ croak("Wide character in %s", "Socket::pack_ip_mreq_source");
+ if (len != sizeof(mreq.imr_sourceaddr))
+ croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+ "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_sourceaddr));
+ sourcebytes = SvPVbyte(source, len);
+ Zero(&mreq, sizeof(mreq), char);
+ Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char);
+ Copy(sourcebytes, &mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr), char);
+ if(SvOK(interface)) {
+ if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1))
+ croak("Wide character in %s", "Socket::pack_ip_mreq");
+ interfacebytes = SvPVbyte(interface, len);
+ if (len != sizeof(mreq.imr_interface))
+ croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+ "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_interface));
+ Copy(interfacebytes, &mreq.imr_interface, sizeof(mreq.imr_interface), char);
+ }
+ else
+ mreq.imr_interface.s_addr = INADDR_ANY;
+ ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
+#else
+ not_here("pack_ip_mreq_source");
+#endif
+ }
+
+void
+unpack_ip_mreq_source(mreq_sv)
+ SV * mreq_sv
+ PPCODE:
+ {
+#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
+ struct ip_mreq_source mreq;
+ STRLEN mreqlen;
+ char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
+ if (mreqlen != sizeof(mreq))
+ croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
+ "Socket::unpack_ip_mreq_source", (UV)mreqlen, (UV)sizeof(mreq));
+ Copy(mreqbytes, &mreq, sizeof(mreq), char);
+ EXTEND(SP, 3);
+ mPUSHp((char *)&mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr));
+ mPUSHp((char *)&mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr));
+ mPUSHp((char *)&mreq.imr_interface, sizeof(mreq.imr_interface));
+#else
+ not_here("unpack_ip_mreq_source");
+#endif
+ }
+
+void
+pack_ipv6_mreq(multiaddr, interface)
+ SV * multiaddr
unsigned int interface
CODE:
{
#ifdef HAS_IPV6_MREQ
struct ipv6_mreq mreq;
- char * addrbytes;
- STRLEN addrlen;
- if (DO_UTF8(addr) && !sv_utf8_downgrade(addr, 1))
+ char * multiaddrbytes;
+ STRLEN len;
+ if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
croak("Wide character in %s", "Socket::pack_ipv6_mreq");
- addrbytes = SvPVbyte(addr, addrlen);
- if (addrlen != sizeof(mreq.ipv6mr_multiaddr))
+ multiaddrbytes = SvPVbyte(multiaddr, len);
+ if (len != sizeof(mreq.ipv6mr_multiaddr))
croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
- "Socket::pack_ipv6_mreq", (UV)addrlen, (UV)sizeof(mreq.ipv6mr_multiaddr));
+ "Socket::pack_ipv6_mreq", (UV)len, (UV)sizeof(mreq.ipv6mr_multiaddr));
Zero(&mreq, sizeof(mreq), char);
- Copy(addrbytes, &mreq.ipv6mr_multiaddr, sizeof(mreq.ipv6mr_multiaddr), char);
+ Copy(multiaddrbytes, &mreq.ipv6mr_multiaddr, sizeof(mreq.ipv6mr_multiaddr), char);
mreq.ipv6mr_interface = interface;
ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
#else
- ST(0) = (SV*)not_here("pack_ipv6_mreq");
+ not_here("pack_ipv6_mreq");
#endif
}
diff --git a/gnu/usr.bin/perl/cpan/Socket/t/ip_mreq.t b/gnu/usr.bin/perl/cpan/Socket/t/ip_mreq.t
new file mode 100644
index 00000000000..2ed76062c15
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Socket/t/ip_mreq.t
@@ -0,0 +1,41 @@
+use strict;
+use warnings;
+use Test::More;
+
+use Socket qw(
+ INADDR_ANY
+ pack_ip_mreq unpack_ip_mreq
+ pack_ip_mreq_source unpack_ip_mreq_source
+);
+
+# Check that pack/unpack_ip_mreq either croak with "Not implemented", or
+# roundtrip as identity
+
+my $packed;
+eval {
+ $packed = pack_ip_mreq "\xe0\0\0\1", INADDR_ANY;
+};
+if( !defined $packed ) {
+ plan skip_all => "No pack_ip_mreq" if $@ =~ m/ not implemented /;
+ die $@;
+}
+
+plan tests => 6;
+
+my @unpacked = unpack_ip_mreq $packed;
+
+is( $unpacked[0], "\xe0\0\0\1", 'unpack_ip_mreq multiaddr' );
+is( $unpacked[1], INADDR_ANY, 'unpack_ip_mreq interface' );
+
+is( (unpack_ip_mreq pack_ip_mreq "\xe0\0\0\1")[1], INADDR_ANY, 'pack_ip_mreq interface defaults to INADDR_ANY' );
+
+SKIP: {
+ my $mreq;
+ skip "No pack_ip_mreq_source", 3 unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY };
+
+ @unpacked = unpack_ip_mreq_source $mreq;
+
+ is( $unpacked[0], "\xe0\0\0\2", 'unpack_ip_mreq_source multiaddr' );
+ is( $unpacked[1], "\x0a\0\0\1", 'unpack_ip_mreq_source source' );
+ is( $unpacked[2], INADDR_ANY, 'unpack_ip_mreq_source interface' );
+}
diff --git a/gnu/usr.bin/perl/cpan/Socket/t/sockaddr.t b/gnu/usr.bin/perl/cpan/Socket/t/sockaddr.t
index 63cce243091..1ae24a0bbac 100644
--- a/gnu/usr.bin/perl/cpan/Socket/t/sockaddr.t
+++ b/gnu/usr.bin/perl/cpan/Socket/t/sockaddr.t
@@ -10,7 +10,7 @@ use Socket qw(
sockaddr_family
sockaddr_un
);
-use Test::More tests => 31;
+use Test::More tests => 33;
# inet_aton, inet_ntoa
{
@@ -73,6 +73,8 @@ SKIP: {
is( (unpack_sockaddr_in($sin))[0] , 100, 'pack_sockaddr_in->unpack_sockaddr_in port');
is(inet_ntoa((unpack_sockaddr_in($sin))[1]), "10.20.30.40", 'pack_sockaddr_in->unpack_sockaddr_in addr');
+ is(inet_ntoa(scalar unpack_sockaddr_in($sin)), "10.20.30.40", 'unpack_sockaddr_in in scalar context yields addr');
+
is_deeply( [ sockaddr_in($sin) ], [ unpack_sockaddr_in($sin) ],
'sockaddr_in in list context unpacks' );
@@ -83,8 +85,8 @@ SKIP: {
# pack_sockaddr_in6, unpack_sockaddr_in6
# sockaddr_in6
SKIP: {
- skip "No AF_INET6", 8 unless my $AF_INET6 = eval { Socket::AF_INET6() };
- skip "Cannot pack_sockaddr_in6()", 8 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) };
+ skip "No AF_INET6", 9 unless my $AF_INET6 = eval { Socket::AF_INET6() };
+ skip "Cannot pack_sockaddr_in6()", 9 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) };
ok(defined $sin6, 'pack_sockaddr_in6 defined');
@@ -95,6 +97,8 @@ SKIP: {
is((Socket::unpack_sockaddr_in6($sin6))[2], 0, 'pack_sockaddr_in6->unpack_sockaddr_in6 scope_id');
is((Socket::unpack_sockaddr_in6($sin6))[3], 89, 'pack_sockaddr_in6->unpack_sockaddr_in6 flowinfo');
+ is(scalar Socket::unpack_sockaddr_in6($sin6), "0123456789abcdef", 'unpack_sockaddr_in6 in scalar context yields addr');
+
is_deeply( [ Socket::sockaddr_in6($sin6) ], [ Socket::unpack_sockaddr_in6($sin6) ],
'sockaddr_in6 in list context unpacks' );
diff --git a/gnu/usr.bin/perl/cpan/Sys-Syslog/Changes b/gnu/usr.bin/perl/cpan/Sys-Syslog/Changes
index 81f8bb18924..a30b4908bdf 100644
--- a/gnu/usr.bin/perl/cpan/Sys-Syslog/Changes
+++ b/gnu/usr.bin/perl/cpan/Sys-Syslog/Changes
@@ -1,5 +1,35 @@
Revision history for Sys-Syslog
+0.32 -- 2012.09.14 -- Sebastien Aperghis-Tramoni (SAPER)
+ [BUGFIX] CPAN-RT#69040: Don't modify @_ in syslog().
+ [BUGFIX] Restore compatibility with Perl 5.6.0.
+ [DOC] Perl-RT#81858: Fix some spelling errors (Peter J. Acklam).
+
+0.31 -- 2012.08.18 -- Sebastien Aperghis-Tramoni (SAPER)
+ [BUGFIX] Level 'emerg' could not be used since v0.29.
+ [BUGFIX] Setting a message facility with syslog() was broken since v0.29
+ (Noel Butler).
+ [BUGFIX] CPAN-RT#69992: Make setlogsock() only use the requested mechanism,
+ restoring way it worked in v0.27 and before (Niko Tyni).
+ [BUGFIX] CPAN-RT#69986: setlogsock() doesn't return undef on failure
+ (Niko Tyni).
+ [BUGFIX] CPAN-RT#69997: Use the default UDP socket timeout on GNU/kFreeBSD
+ as well, and lower it to a more sensible value (Niko Tyni).
+ [BUGFIX] CPAN-RT#75827: syslog() logging everything regardless of log
+ mask when using using numeric LOG_* macros (Bryan Thale).
+ [TESTS] Added t/facilities-routing.t
+ [DOC] Don't highlight "the Rules of Sys::Syslog" from the Description.
+ [DIST] Add meta-information in Makefile.PL
+
+0.30 -- 2012.08.15 -- Sebastien Aperghis-Tramoni (SAPER)
+ [BUGFIX] CPAN-RT#69310: Avoid a POSIX::strftime issue on Windows
+ (Michael Ludwig).
+ [BUGFIX] CPAN-RT#77577: Build on Haiku-OS (Tony Cook).
+ [BUGFIX] CPAN-RT#77578: Silence a compilation warning (Tony Cook).
+ [BUGFIX] CPAN-RT#78044: Don't call getservbyname() when the port is
+ specified (Chan Wilson).
+ [TESTS] t/syslog.t no longer needs to chdir under PERL_CORE.
+
0.29 -- 2011.04.18 -- Sebastien Aperghis-Tramoni (SAPER) #PerlQA2011
[BUGFIX] CPAN-RT#55215: Sys::Syslog might call exit which triggers
DESTROY (Alexander Berger).
@@ -112,7 +142,7 @@ Revision history for Sys-Syslog
[FEATURE] Each non-standard macro now fall backs to a standard macro.
[CODE] Merged changes from Jerry D. Hedden to use ppport.h only when not
built from core distribution (blead@30657).
- [TESTS] t/syslog.t now generates a more detailled TAP output.
+ [TESTS] t/syslog.t now generates a more detailed TAP output.
[TESTS] Merged change blead@29176: suppress taint mode from t/constants.t
[TESTS] Added regression tests for CPAN-RT#21866 and #25488.
[EG] Added example script eg/syslog.pl
@@ -145,7 +175,7 @@ Revision history for Sys-Syslog
0.15 -- 2006.06.10 -- Sebastien Aperghis-Tramoni (SAPER)
[FEATURE] CPAN-RT#17316: Added a "nofatal" option to openlog().
- [FEATURE] Sys::Syslog warnings can now be controled by the warnings
+ [FEATURE] Sys::Syslog warnings can now be controlled by the warnings
category of the same name.
[FEATURE] Added support for using the native C syslog(3) functions.
[CODE] Removed most "our" variables.
@@ -207,7 +237,7 @@ Revision history for Sys-Syslog
(Ronald J. Kimball).
[CODE] Now setlogsock() really croak(), as documented.
[DIST] CPANized from blead@26281.
- [DIST] Modified Makefile.PL so that ExtUtils::Constant is conditionaly
+ [DIST] Modified Makefile.PL so that ExtUtils::Constant is conditionally
used, with a fallback in the case it's not available.
[DIST] Bumped version to 0.09
[DOC] Added support and license information.
diff --git a/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL b/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL
index a402896a3df..347197ab440 100644
--- a/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL
@@ -89,6 +89,11 @@ WriteMakefile(
# build/test prereqs
'Test::More' => 0,
},
+ META_MERGE => {
+ resources => {
+ repository => "https://github.com/maddingue/Sys-Syslog.git",
+ },
+ },
PL_FILES => {},
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
clean => { FILES => 'Sys-Syslog-*' },
diff --git a/gnu/usr.bin/perl/cpan/Sys-Syslog/README b/gnu/usr.bin/perl/cpan/Sys-Syslog/README
index d68a12aa43f..203535b8266 100644
--- a/gnu/usr.bin/perl/cpan/Sys-Syslog/README
+++ b/gnu/usr.bin/perl/cpan/Sys-Syslog/README
@@ -21,16 +21,9 @@ INSTALLATION
An ANSI-compliant compiler is required to compile the extension.
- Sys::Syslog should work on any Perl since 5.6.0. This module has
- been tested by the author on the following Perl and system versions
- but is likely to run on many more:
-
- Perl Architecture GCC
- -----------------------------------------------------
- 5.6.2 i686-linux 3.4.1
- 5.8.5 i386-linux-thread-multi 3.4.1
- 5.8.8 i386-freebsd-64int 3.4.4
- 5.8.6 darwin-thread-multi-2level (PowerPC) 4.0.1
+ Sys::Syslog should work on any Perl since 5.6.0. This module is
+ regularly compiled and tested by the CPAN Testers on various
+ combinations of Perl and operating systems.
See also the corresponding CPAN Testers page:
http://testers.cpan.org/show/Sys-Syslog.html
@@ -48,8 +41,8 @@ SUPPORT AND DOCUMENTATION
Search CPAN
http://search.cpan.org/dist/Sys-Syslog/
- Kobes' CPAN Search
- http://cpan.uwinnipeg.ca/dist/Sys-Syslog
+ MetaCPAN
+ https://metacpan.org/module/Sys::Syslog
CPAN Request Tracker:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Sys-Syslog
@@ -63,7 +56,7 @@ SUPPORT AND DOCUMENTATION
COPYRIGHT AND LICENCE
- Copyright (C) 1990-2009 by Larry Wall and others.
+ Copyright (C) 1990-2012 by Larry Wall and others.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/Sys-Syslog/README.win32 b/gnu/usr.bin/perl/cpan/Sys-Syslog/README.win32
index adf253ab961..cecb8dc4812 100644
--- a/gnu/usr.bin/perl/cpan/Sys-Syslog/README.win32
+++ b/gnu/usr.bin/perl/cpan/Sys-Syslog/README.win32
@@ -11,7 +11,7 @@ DESCRIPTION
by Sys::Syslog is PerlLog.mc, located in the win32/ subdirectory.
If the message file is updated then you need to go in the win32/
- subdirectory and run the "compile.pl" command to update the relevent
+ subdirectory and run the "compile.pl" command to update the relevant
files. Note that Sys::Syslog::Win32 is built by this process.
The following files are in the win32 directory:
diff --git a/gnu/usr.bin/perl/cpan/Sys-Syslog/Syslog.pm b/gnu/usr.bin/perl/cpan/Sys-Syslog/Syslog.pm
index a68f817a81f..deae4f3d6a0 100644
--- a/gnu/usr.bin/perl/cpan/Sys-Syslog/Syslog.pm
+++ b/gnu/usr.bin/perl/cpan/Sys-Syslog/Syslog.pm
@@ -12,7 +12,7 @@ require 5.005;
{ no strict 'vars';
- $VERSION = '0.29';
+ $VERSION = '0.32';
@ISA = qw< Exporter >;
%EXPORT_TAGS = (
@@ -91,7 +91,7 @@ my $connected = 0; # flag to indicate if we're connected or not
my $syslog_send; # coderef of the function used to send messages
my $syslog_path = undef; # syslog path for "stream" and "unix" mechanisms
my $syslog_xobj = undef; # if defined, holds the external object used to send messages
-my $transmit_ok = 0; # flag to indicate if the last message was transmited
+my $transmit_ok = 0; # flag to indicate if the last message was transmitted
my $sock_port = undef; # socket port
my $sock_timeout = 0; # socket timeout, see below
my $current_proto = undef; # current mechanism used to transmit messages
@@ -139,7 +139,21 @@ my @fallbackMethods = ();
# happy, the timeout is now zero by default on all systems
# except on OSX where it is set to 250 msec, and can be set
# with the infamous setlogsock() function.
-$sock_timeout = 0.25 if $^O =~ /darwin/;
+#
+# Update 2011-08: this issue is also been seen on multiprocessor
+# Debian GNU/kFreeBSD systems. See http://bugs.debian.org/627821
+# and https://rt.cpan.org/Ticket/Display.html?id=69997
+# Also, lowering the delay to 1 ms, which should be enough.
+
+$sock_timeout = 0.001 if $^O =~ /darwin|gnukfreebsd/;
+
+
+# Perl 5.6.0's warnings.pm doesn't have warnings::warnif()
+if (not defined &warnings::warnif) {
+ *warnings::warnif = sub {
+ goto &warnings::warn if warnings::enabled(__PACKAGE__)
+ }
+}
# coderef for a nicer handling of errors
my $err_sub = $options{nofatal} ? \&warnings::warnif : \&croak;
@@ -227,6 +241,8 @@ my %mechanism = (
},
tcp => {
check => sub {
+ return 1 if defined $sock_port;
+
if (getservbyname('syslog', 'tcp') || getservbyname('syslogng', 'tcp')) {
$host = $syslog_path;
return 1
@@ -239,6 +255,8 @@ my %mechanism = (
},
udp => {
check => sub {
+ return 1 if defined $sock_port;
+
if (getservbyname('syslog', 'udp')) {
$host = $syslog_path;
return 1
@@ -284,7 +302,7 @@ sub setlogsock {
@opt{qw< type path timeout >} = @_;
}
- # check socket type, remove
+ # check socket type, remove invalid ones
my $diag_invalid_type = "setlogsock(): Invalid type%s; must be one of "
. join ", ", map { "'$_'" } sort keys %mechanism;
croak sprintf $diag_invalid_type, "" unless defined $opt{type};
@@ -309,24 +327,29 @@ sub setlogsock {
disconnect_log() if $connected;
$transmit_ok = 0;
@fallbackMethods = ();
- @connectMethods = @defaultMethods;
+ @connectMethods = ();
+ my $found = 0;
+ # check each given mechanism and test if it can be used on the current system
for my $sock_type (@sock_types) {
if ( $mechanism{$sock_type}{check}->() ) {
- unshift @connectMethods, $sock_type;
+ push @connectMethods, $sock_type;
+ $found = 1;
}
else {
- warnings::warnif "setlogsock(): type='$sock_type': "
- . $mechanism{$sock_type}{err_msg};
+ warnings::warnif("setlogsock(): type='$sock_type': "
+ . $mechanism{$sock_type}{err_msg});
}
}
- return 1;
+ # if no mechanism worked from the given ones, use the default ones
+ @connectMethods = @defaultMethods unless @connectMethods;
+
+ return $found;
}
sub syslog {
- my $priority = shift;
- my $mask = shift;
+ my ($priority, $mask, @args) = @_;
my ($message, $buf);
my (@words, $num, $numpri, $numfac, $sum);
my $failed = undef;
@@ -344,7 +367,7 @@ sub syslog {
if ($priority =~ /^\d+$/) {
$numpri = LOG_PRI($priority);
- $numfac = LOG_FAC($priority);
+ $numfac = LOG_FAC($priority) << 3;
}
elsif ($priority =~ /^\w+/) {
# Allow "level" or "level|facility".
@@ -362,17 +385,16 @@ sub syslog {
if ($num < 0) {
croak "syslog: invalid level/facility: $word"
}
- elsif (my $pri = LOG_PRI($num)) {
+ elsif ($num <= LOG_PRIMASK() and $word ne "kern") {
croak "syslog: too many levels given: $word"
if defined $numpri;
$numpri = $num;
- return 0 unless LOG_MASK($numpri) & $maskpri;
}
else {
croak "syslog: too many facilities given: $word"
if defined $numfac;
$facility = $word if $word =~ /^[A-Za-z]/;
- $numfac = LOG_FAC($num);
+ $numfac = $num;
}
}
}
@@ -382,6 +404,9 @@ sub syslog {
croak "syslog: level must be given" unless defined $numpri;
+ # don't log if priority is below mask level
+ return 0 unless LOG_MASK($numpri) & $maskpri;
+
if (not defined $numfac) { # Facility not specified in this call.
$facility = 'user' unless $facility;
$numfac = xlate($facility);
@@ -391,13 +416,13 @@ sub syslog {
if ($mask =~ /%m/) {
# escape percent signs for sprintf()
- $error =~ s/%/%%/g if @_;
+ $error =~ s/%/%%/g if @args;
# replace %m with $error, if preceded by an even number of percent signs
$mask =~ s/(?<!%)((?:%%)*)%m/$1$error/g;
}
$mask .= "\n" unless $mask =~ /\n$/;
- $message = @_ ? sprintf($mask, @_) : $mask;
+ $message = @args ? sprintf($mask, @args) : $mask;
if ($current_proto eq 'native') {
$buf = $message;
@@ -412,7 +437,7 @@ sub syslog {
$sum = $numpri + $numfac;
my $oldlocale = setlocale(LC_TIME);
setlocale(LC_TIME, 'C');
- my $timestamp = strftime "%b %e %H:%M:%S", localtime;
+ my $timestamp = strftime "%b %d %H:%M:%S", localtime;
setlocale(LC_TIME, $oldlocale);
# construct the stream that will be transmitted
@@ -875,7 +900,7 @@ Sys::Syslog - Perl interface to the UNIX syslog(3) calls
=head1 VERSION
-This is the documentation of version 0.29
+This is the documentation of version 0.32
=head1 SYNOPSIS
@@ -894,9 +919,6 @@ C<Sys::Syslog> is an interface to the UNIX C<syslog(3)> program.
Call C<syslog()> with a string priority and a list of C<printf()> args
just like C<syslog(3)>.
-You can find a kind of FAQ in L<"THE RULES OF SYS::SYSLOG">. Please read
-it before coding, and again before asking questions.
-
=head1 EXPORTS
@@ -1521,15 +1543,16 @@ Perl and C<Sys::Syslog> versions.
Sys::Syslog Perl
----------- ----
- undef 5.0.x -- 5.5.x
- 0.01 5.6.0, 5.6.1, 5.6.2
+ undef 5.0.0 ~ 5.5.4
+ 0.01 5.6.*
0.03 5.8.0
0.04 5.8.1, 5.8.2, 5.8.3
0.05 5.8.4, 5.8.5, 5.8.6
0.06 5.8.7
0.13 5.8.8
0.22 5.10.0
- 0.27 5.8.9
+ 0.27 5.8.9, 5.10.1 ~ 5.14.2
+ 0.29 5.16.0, 5.16.1
=head1 SEE ALSO
@@ -1648,9 +1671,9 @@ L<http://rt.cpan.org/Dist/Display.html?Queue=Sys-Syslog>
L<http://search.cpan.org/dist/Sys-Syslog/>
-=item * Kobes' CPAN Search
+=item * MetaCPAN
-L<http://cpan.uwinnipeg.ca/dist/Sys-Syslog>
+L<https://metacpan.org/module/Sys::Syslog>
=item * Perl Documentation
@@ -1661,7 +1684,7 @@ L<http://perldoc.perl.org/Sys/Syslog.html>
=head1 COPYRIGHT
-Copyright (C) 1990-2009 by Larry Wall and others.
+Copyright (C) 1990-2012 by Larry Wall and others.
=head1 LICENSE
diff --git a/gnu/usr.bin/perl/cpan/Sys-Syslog/Syslog.xs b/gnu/usr.bin/perl/cpan/Sys-Syslog/Syslog.xs
index e1ba675a7dd..d715b45c753 100644
--- a/gnu/usr.bin/perl/cpan/Sys-Syslog/Syslog.xs
+++ b/gnu/usr.bin/perl/cpan/Sys-Syslog/Syslog.xs
@@ -31,14 +31,16 @@
static SV *ident_svptr;
-#include "const-c.inc"
-
#ifndef LOG_FAC
#define LOG_FACMASK 0x03f8
#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
#endif
+#ifndef LOG_PRIMASK
+#define LOG_PRIMASK 0x07
+#endif
+
#ifndef LOG_PRI
#define LOG_PRI(p) ((p) & LOG_PRIMASK)
#endif
@@ -55,6 +57,8 @@ static SV *ident_svptr;
#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1)
#endif
+#include "const-c.inc"
+
MODULE = Sys::Syslog PACKAGE = Sys::Syslog
diff --git a/gnu/usr.bin/perl/cpan/Sys-Syslog/t/facilities-routing.t b/gnu/usr.bin/perl/cpan/Sys-Syslog/t/facilities-routing.t
new file mode 100644
index 00000000000..ce0a5b1b902
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Sys-Syslog/t/facilities-routing.t
@@ -0,0 +1,143 @@
+#!perl -w
+# --------------------------------------------------------------------
+# Try to send messages with all combinations of facilities and levels
+# to a POE syslog server.
+# --------------------------------------------------------------------
+use strict;
+use warnings;
+
+use Test::More;
+use Socket;
+use Sys::Syslog 0.30 qw< :standard :extended :macros >;
+
+
+# check than POE is available
+plan skip_all => "POE is not available" unless eval "use POE; 1";
+
+# check than POE::Component::Server::Syslog is available and recent enough
+plan skip_all => "POE::Component::Server::Syslog is not available"
+ unless eval "use POE::Component::Server::Syslog; 1";
+plan skip_all => "POE::Component::Server::Syslog is too old"
+ if POE::Component::Server::Syslog->VERSION < 1.14;
+
+
+my $host = "127.0.0.1";
+my $port = 5140;
+my $proto = "udp";
+my $ident = "pocosyslog";
+
+my @levels = qw< emerg alert crit err warning notice info debug >;
+my @facilities = qw<
+ auth cron daemon ftp kern lpr mail news syslog user uucp
+ local0 local1 local2 local3 local4 local5 local6 local7
+>;
+
+my %received;
+my $parent_pid = $$;
+my $child_pid = fork();
+
+if ($child_pid) {
+ # parent: setup a syslog server
+ POE::Component::Server::Syslog->spawn(
+ Alias => 'syslog',
+ Type => $proto,
+ BindAddress => $host,
+ BindPort => $port,
+
+ InputState => \&client_input,
+ ErrorState => \&client_error,
+ );
+
+ # signal handlers
+ POE::Kernel->sig_child($child_pid, sub { wait() });
+ $SIG{TERM} = sub {
+ POE::Kernel->post(syslog => "shutdown");
+ POE::Kernel->stop;
+ };
+
+ # run everything
+ plan tests => @facilities * @levels * 2;
+ POE::Kernel->run;
+
+ # check if some messages are missing
+ my @miss = grep { $received{$_} < 2 } keys %received;
+ diag "@miss" if @miss;
+}
+else {
+ # child: send messages to the syslog server
+ sleep 2;
+ setlogsock({ host => $host, type => $proto, port => $port });
+
+ # first way, set the facility each time with openlog()
+ for my $facility (@facilities) {
+ openlog($ident, "ndelay,pid", $facility);
+
+ for my $level (@levels) {
+ eval { syslog($level => "<$facility\:$level>") }
+ or warn "error: syslog($level => '<$facility\:$level>'): $@";
+ }
+ }
+
+ # second way, set the facility once with openlog(), then set
+ # the message facility with syslog()
+ openlog($ident, "ndelay,pid", "user");
+
+ for my $facility (@facilities) {
+ for my $level (@levels) {
+ eval { syslog("$facility.$level" => "<$facility\:$level>") }
+ or warn "error: syslog('$facility.$level' => '<$facility\:$level>'): $@";
+ }
+ }
+
+ sleep 2;
+
+ # send SIGTERM to the parent
+ kill 15 => $parent_pid;
+}
+
+
+sub client_input {
+ my $message = $_[&ARG0];
+
+ # extract the sent facility and level from the message text
+ my ($sent_facility, $sent_level) = $message->{msg} =~ /<(\w+):(\w+)>/;
+ $received{"$sent_facility\:$sent_level"}++;
+
+ # resolve their numeric values
+ my ($sent_fac_num, $sent_lev_num);
+ {
+ no strict "refs";
+ $sent_fac_num = eval { my $n = uc "LOG_$sent_facility"; &$n } >> 3;
+ $sent_lev_num = eval { my $n = uc "LOG_$sent_level"; &$n };
+ }
+
+ is_deeply(
+ { # received message
+ facility => $message->{facility},
+ severity => $message->{severity},
+ },
+ { # sent message
+ facility => $sent_fac_num,
+ severity => $sent_lev_num,
+ },
+ "sent<facility=$sent_facility($sent_fac_num), level=$sent_level" .
+ "($sent_lev_num)> - rcvd<facility=$message->{facility}, " .
+ "level=$message->{severity}>"
+ );
+}
+
+
+sub client_error {
+ my $message = $_[&ARG0];
+
+ require Data::Dumper;
+ $Data::Dumper::Indent = 0; $Data::Dumper::Indent = 0;
+ $Data::Dumper::Sortkeys = 1; $Data::Dumper::Sortkeys = 1;
+ fail "checking syslog message";
+ diag "[client_error] message = ", Data::Dumper::Dumper($message);
+
+ kill 15 => $child_pid;
+ POE::Kernel->post(syslog => "shutdown");
+ POE::Kernel->stop;
+}
+
diff --git a/gnu/usr.bin/perl/cpan/Sys-Syslog/t/syslog.t b/gnu/usr.bin/perl/cpan/Sys-Syslog/t/syslog.t
index ee136d56a27..8774677cf73 100755
--- a/gnu/usr.bin/perl/cpan/Sys-Syslog/t/syslog.t
+++ b/gnu/usr.bin/perl/cpan/Sys-Syslog/t/syslog.t
@@ -96,7 +96,9 @@ SKIP: {
is( $@, '', "setlogsock() called with '$sock_type'" );
TODO: {
local $TODO = "minor bug";
+ SKIP: { skip "TODO $TODO", 1 if $] < 5.006002;
ok( $r, "setlogsock() should return true: '$r'" );
+ }
}
# open syslog with a "local0" facility
@@ -276,3 +278,44 @@ BEGIN { $tests += 3 + 4 * 3 }
setlogmask($oldmask);
}
}
+
+BEGIN { $tests += 4 }
+SKIP: {
+ # case: test the return value of setlogsock()
+
+ # setlogsock("stream") on a non-existent file must fail
+ eval { $r = setlogsock("stream", "plonk/log") };
+ is( $@, '', "setlogsock() didn't croak");
+ ok( !$r, "setlogsock() correctly failed with a non-existent stream path");
+
+ # setlogsock("tcp") must fail if the service is not declared
+ my $service = getservbyname("syslog", "tcp") || getservbyname("syslogng", "tcp");
+ skip "can't test setlogsock() tcp failure", 2 if $service;
+ eval { $r = setlogsock("tcp") };
+ is( $@, '', "setlogsock() didn't croak");
+ ok( !$r, "setlogsock() correctly failed when tcp services can't be resolved");
+}
+
+BEGIN { $tests += 3 }
+SKIP: {
+ # case: configure Sys::Syslog to use the stream mechanism on a
+ # given file, but remove the file before openlog() is called,
+ # so it fails.
+
+ # create the log file
+ my $log = "t/stream";
+ open my $fh, ">$log" or skip "can't write file '$log': $!", 3;
+ close $fh;
+
+ # configure Sys::Syslog to use it
+ $r = eval { setlogsock("stream", $log) };
+ is( $@, "", "setlogsock('stream', '$log') -> $r" );
+ skip "can't test openlog() failure with a missing stream", 2 if !$r;
+
+ # remove the log and check that openlog() fails
+ unlink $log;
+ $r = eval { openlog('perl', 'ndelay', 'local0') };
+ ok( !$r, "openlog() correctly failed with a non-existent stream" );
+ like( $@, '/not writable/', "openlog() correctly croaked with a non-existent stream" );
+}
+
diff --git a/gnu/usr.bin/perl/cpan/Sys-Syslog/win32/compile.pl b/gnu/usr.bin/perl/cpan/Sys-Syslog/win32/compile.pl
index 8502309bc79..3c38691039e 100644
--- a/gnu/usr.bin/perl/cpan/Sys-Syslog/win32/compile.pl
+++ b/gnu/usr.bin/perl/cpan/Sys-Syslog/win32/compile.pl
@@ -83,7 +83,7 @@ $template =~ s/__MAX__/'$max'/g;
$template =~ s/__TIME__/localtime()/ge;
print $out $template;
close $out;
-print "Updated Win32.pm and relevent message files\n";
+print "Updated Win32.pm and relevant message files\n";
__END__
package Sys::Syslog::Win32;
diff --git a/gnu/usr.bin/perl/cpan/Term-ANSIColor/ANSIColor.pm b/gnu/usr.bin/perl/cpan/Term-ANSIColor/ANSIColor.pm
index bc2fc7e483e..17183666607 100644
--- a/gnu/usr.bin/perl/cpan/Term-ANSIColor/ANSIColor.pm
+++ b/gnu/usr.bin/perl/cpan/Term-ANSIColor/ANSIColor.pm
@@ -1,12 +1,15 @@
# Term::ANSIColor -- Color screen output using ANSI escape sequences.
#
# Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2008, 2009, 2010,
-# 2011 Russ Allbery <rra@stanford.edu> and Zenin
-# PUSH/POP support submitted 2007 by openmethods.com voice solutions
+# 2011, 2012, 2013 Russ Allbery <rra@stanford.edu>
+# Copyright 1996 Zenin
+# Copyright 2012 Kurt Starsinic <kstarsinic@gmail.com>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
#
+# PUSH/POP support submitted 2007 by openmethods.com voice solutions
+#
# Ah, September, when the sysadmins turn colors and fall off the trees....
# -- Dave Van Domelen
@@ -15,80 +18,198 @@
##############################################################################
package Term::ANSIColor;
-require 5.001;
-
-$VERSION = '3.01';
+use 5.006;
use strict;
-use vars qw($AUTOLOAD $AUTOLOCAL $AUTORESET @COLORLIST @COLORSTACK $EACHLINE
- @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION %ATTRIBUTES
- %ATTRIBUTES_R);
+use warnings;
+use Carp qw(croak);
use Exporter ();
+
+# use Exporter plus @ISA instead of use base for 5.6 compatibility.
+## no critic (ClassHierarchies::ProhibitExplicitISA)
+
+# Declare variables that should be set in BEGIN for robustness.
+## no critic (Modules::ProhibitAutomaticExportation)
+our (@EXPORT, @EXPORT_OK, %EXPORT_TAGS, @ISA, $VERSION);
+
+# We use autoloading, which sets this variable to the name of the called sub.
+our $AUTOLOAD;
+
+# Set $VERSION and everything export-related in a BEGIN block for robustness
+# against circular module loading (not that we load any modules, but
+# consistency is good).
BEGIN {
- @COLORLIST = qw(
- CLEAR RESET BOLD DARK
- FAINT UNDERLINE UNDERSCORE BLINK
- REVERSE CONCEALED
-
- BLACK RED GREEN YELLOW
- BLUE MAGENTA CYAN WHITE
- ON_BLACK ON_RED ON_GREEN ON_YELLOW
- ON_BLUE ON_MAGENTA ON_CYAN ON_WHITE
-
- BRIGHT_BLACK BRIGHT_RED BRIGHT_GREEN BRIGHT_YELLOW
- BRIGHT_BLUE BRIGHT_MAGENTA BRIGHT_CYAN BRIGHT_WHITE
- ON_BRIGHT_BLACK ON_BRIGHT_RED ON_BRIGHT_GREEN ON_BRIGHT_YELLOW
- ON_BRIGHT_BLUE ON_BRIGHT_MAGENTA ON_BRIGHT_CYAN ON_BRIGHT_WHITE
+ $VERSION = '4.02';
+
+ # All of the basic supported constants, used in %EXPORT_TAGS.
+ my @colorlist = qw(
+ CLEAR RESET BOLD DARK
+ FAINT ITALIC UNDERLINE UNDERSCORE
+ BLINK REVERSE CONCEALED
+
+ BLACK RED GREEN YELLOW
+ BLUE MAGENTA CYAN WHITE
+ ON_BLACK ON_RED ON_GREEN ON_YELLOW
+ ON_BLUE ON_MAGENTA ON_CYAN ON_WHITE
+
+ BRIGHT_BLACK BRIGHT_RED BRIGHT_GREEN BRIGHT_YELLOW
+ BRIGHT_BLUE BRIGHT_MAGENTA BRIGHT_CYAN BRIGHT_WHITE
+ ON_BRIGHT_BLACK ON_BRIGHT_RED ON_BRIGHT_GREEN ON_BRIGHT_YELLOW
+ ON_BRIGHT_BLUE ON_BRIGHT_MAGENTA ON_BRIGHT_CYAN ON_BRIGHT_WHITE
);
+
+ # 256-color constants, used in %EXPORT_TAGS.
+ ## no critic (ValuesAndExpressions::ProhibitMagicNumbers)
+ my @colorlist256 = (
+ (map { ("ANSI$_", "ON_ANSI$_") } 0 .. 15),
+ (map { ("GREY$_", "ON_GREY$_") } 0 .. 23),
+ );
+ for my $r (0 .. 5) {
+ for my $g (0 .. 5) {
+ push @colorlist256, map { ("RGB$r$g$_", "ON_RGB$r$g$_") } 0 .. 5;
+ }
+ }
+
+ # Exported symbol configuration.
@ISA = qw(Exporter);
@EXPORT = qw(color colored);
- @EXPORT_OK = qw(uncolor colorstrip colorvalid);
- %EXPORT_TAGS = (constants => \@COLORLIST,
- pushpop => [ @COLORLIST,
- qw(PUSHCOLOR POPCOLOR LOCALCOLOR) ]);
- Exporter::export_ok_tags ('pushpop');
+ @EXPORT_OK = qw(uncolor colorstrip colorvalid coloralias);
+ %EXPORT_TAGS = (
+ constants => \@colorlist,
+ constants256 => \@colorlist256,
+ pushpop => [@colorlist, qw(PUSHCOLOR POPCOLOR LOCALCOLOR)],
+ );
+ Exporter::export_ok_tags('pushpop', 'constants256');
}
##############################################################################
+# Package variables
+##############################################################################
+
+# If this is set, any color changes will implicitly push the current color
+# onto the stack and then pop it at the end of the constant sequence, just as
+# if LOCALCOLOR were used.
+our $AUTOLOCAL;
+
+# Caller sets this to force a reset at the end of each constant sequence.
+our $AUTORESET;
+
+# Caller sets this to force colors to be reset at the end of each line.
+our $EACHLINE;
+
+##############################################################################
# Internal data structures
##############################################################################
-%ATTRIBUTES = ('clear' => 0,
- 'reset' => 0,
- 'bold' => 1,
- 'dark' => 2,
- 'faint' => 2,
- 'underline' => 4,
- 'underscore' => 4,
- 'blink' => 5,
- 'reverse' => 7,
- 'concealed' => 8,
-
- 'black' => 30, 'on_black' => 40,
- 'red' => 31, 'on_red' => 41,
- 'green' => 32, 'on_green' => 42,
- 'yellow' => 33, 'on_yellow' => 43,
- 'blue' => 34, 'on_blue' => 44,
- 'magenta' => 35, 'on_magenta' => 45,
- 'cyan' => 36, 'on_cyan' => 46,
- 'white' => 37, 'on_white' => 47,
-
- 'bright_black' => 90, 'on_bright_black' => 100,
- 'bright_red' => 91, 'on_bright_red' => 101,
- 'bright_green' => 92, 'on_bright_green' => 102,
- 'bright_yellow' => 93, 'on_bright_yellow' => 103,
- 'bright_blue' => 94, 'on_bright_blue' => 104,
- 'bright_magenta' => 95, 'on_bright_magenta' => 105,
- 'bright_cyan' => 96, 'on_bright_cyan' => 106,
- 'bright_white' => 97, 'on_bright_white' => 107,
- );
+# This module does quite a bit of initialization at the time it is first
+# loaded, primarily to set up the package-global %ATTRIBUTES hash. The
+# entries for 256-color names are easier to handle programmatically, and
+# custom colors are also imported from the environment if any are set.
+
+# All basic supported attributes, including aliases.
+#<<<
+our %ATTRIBUTES = (
+ 'clear' => 0,
+ 'reset' => 0,
+ 'bold' => 1,
+ 'dark' => 2,
+ 'faint' => 2,
+ 'italic' => 3,
+ 'underline' => 4,
+ 'underscore' => 4,
+ 'blink' => 5,
+ 'reverse' => 7,
+ 'concealed' => 8,
+
+ 'black' => 30, 'on_black' => 40,
+ 'red' => 31, 'on_red' => 41,
+ 'green' => 32, 'on_green' => 42,
+ 'yellow' => 33, 'on_yellow' => 43,
+ 'blue' => 34, 'on_blue' => 44,
+ 'magenta' => 35, 'on_magenta' => 45,
+ 'cyan' => 36, 'on_cyan' => 46,
+ 'white' => 37, 'on_white' => 47,
+
+ 'bright_black' => 90, 'on_bright_black' => 100,
+ 'bright_red' => 91, 'on_bright_red' => 101,
+ 'bright_green' => 92, 'on_bright_green' => 102,
+ 'bright_yellow' => 93, 'on_bright_yellow' => 103,
+ 'bright_blue' => 94, 'on_bright_blue' => 104,
+ 'bright_magenta' => 95, 'on_bright_magenta' => 105,
+ 'bright_cyan' => 96, 'on_bright_cyan' => 106,
+ 'bright_white' => 97, 'on_bright_white' => 107,
+);
+#>>>
+
+# Generating the 256-color codes involves a lot of codes and offsets that are
+# not helped by turning them into constants.
+## no critic (ValuesAndExpressions::ProhibitMagicNumbers)
+
+# The first 16 256-color codes are duplicates of the 16 ANSI colors,
+# included for completeness.
+for my $code (0 .. 15) {
+ $ATTRIBUTES{"ansi$code"} = "38;5;$code";
+ $ATTRIBUTES{"on_ansi$code"} = "48;5;$code";
+}
+
+# 256-color RGB colors. Red, green, and blue can each be values 0 through 5,
+# and the resulting 216 colors start with color 16.
+for my $r (0 .. 5) {
+ for my $g (0 .. 5) {
+ for my $b (0 .. 5) {
+ my $code = 16 + (6 * 6 * $r) + (6 * $g) + $b;
+ $ATTRIBUTES{"rgb$r$g$b"} = "38;5;$code";
+ $ATTRIBUTES{"on_rgb$r$g$b"} = "48;5;$code";
+ }
+ }
+}
+
+# The last 256-color codes are 24 shades of grey.
+for my $n (0 .. 23) {
+ my $code = $n + 232;
+ $ATTRIBUTES{"grey$n"} = "38;5;$code";
+ $ATTRIBUTES{"on_grey$n"} = "48;5;$code";
+}
+
+## use critic (ValuesAndExpressions::ProhibitMagicNumbers)
# Reverse lookup. Alphabetically first name for a sequence is preferred.
-for (reverse sort keys %ATTRIBUTES) {
- $ATTRIBUTES_R{$ATTRIBUTES{$_}} = $_;
+our %ATTRIBUTES_R;
+for my $attr (reverse sort keys %ATTRIBUTES) {
+ $ATTRIBUTES_R{ $ATTRIBUTES{$attr} } = $attr;
+}
+
+# Import any custom colors set in the environment.
+our %ALIASES;
+if (exists $ENV{ANSI_COLORS_ALIASES}) {
+ my $spec = $ENV{ANSI_COLORS_ALIASES};
+ $spec =~ s{\s+}{}xmsg;
+
+ # Error reporting here is an interesting question. Use warn rather than
+ # carp because carp would report the line of the use or require, which
+ # doesn't help anyone understand what's going on, whereas seeing this code
+ # will be more helpful.
+ ## no critic (ErrorHandling::RequireCarping)
+ for my $definition (split m{,}xms, $spec) {
+ my ($new, $old) = split m{=}xms, $definition, 2;
+ if (!$new || !$old) {
+ warn qq{Bad color mapping "$definition"};
+ } else {
+ my $result = eval { coloralias($new, $old) };
+ if (!$result) {
+ my $error = $@;
+ $error =~ s{ [ ] at [ ] .* }{}xms;
+ warn qq{$error in "$definition"};
+ }
+ }
+ }
}
+# Stores the current color stack maintained by PUSHCOLOR and POPCOLOR. This
+# is global and therefore not threadsafe.
+our @COLORSTACK;
+
##############################################################################
# Implementation (constant form)
##############################################################################
@@ -111,61 +232,128 @@ for (reverse sort keys %ATTRIBUTES) {
# called sub against the list of attributes, and if it's an all-caps version
# of one of them, we define the sub on the fly and then run it.
#
-# If the environment variable ANSI_COLORS_DISABLED is set, just return the
-# arguments without adding any escape sequences. This is to make it easier to
-# write scripts that also work on systems without any ANSI support, like
-# Windows consoles.
+# If the environment variable ANSI_COLORS_DISABLED is set to a true value,
+# just return the arguments without adding any escape sequences. This is to
+# make it easier to write scripts that also work on systems without any ANSI
+# support, like Windows consoles.
+#
+## no critic (ClassHierarchies::ProhibitAutoloading)
+## no critic (Subroutines::RequireArgUnpacking)
sub AUTOLOAD {
- if (defined $ENV{ANSI_COLORS_DISABLED}) {
- return join ('', @_);
+ my ($sub, $attr) = $AUTOLOAD =~ m{ \A ([\w:]*::([[:upper:]\d_]+)) \z }xms;
+
+ # Check if we were called with something that doesn't look like an
+ # attribute.
+ if (!$attr || !defined $ATTRIBUTES{ lc $attr }) {
+ croak("undefined subroutine &$AUTOLOAD called");
}
- if ($AUTOLOAD =~ /^([\w:]*::([A-Z_]+))$/ and defined $ATTRIBUTES{lc $2}) {
- $AUTOLOAD = $1;
- my $attr = "\e[" . $ATTRIBUTES{lc $2} . 'm';
- eval qq {
- sub $AUTOLOAD {
- if (\$AUTORESET && \@_) {
- return '$attr' . join ('', \@_) . "\e[0m";
- } elsif (\$AUTOLOCAL && \@_) {
- return PUSHCOLOR ('$attr') . join ('', \@_) . POPCOLOR;
- } else {
- return '$attr' . join ('', \@_);
- }
+
+ # If colors are disabled, just return the input. Do this without
+ # installing a sub for (marginal, unbenchmarked) speed.
+ if ($ENV{ANSI_COLORS_DISABLED}) {
+ return join q{}, @_;
+ }
+
+ # We've untainted the name of the sub.
+ $AUTOLOAD = $sub;
+
+ # Figure out the ANSI string to set the desired attribute.
+ my $escape = "\e[" . $ATTRIBUTES{ lc $attr } . 'm';
+
+ # Save the current value of $@. We can't just use local since we want to
+ # restore it before dispatching to the newly-created sub. (The caller may
+ # be colorizing output that includes $@.)
+ my $eval_err = $@;
+
+ # Generate the constant sub, which should still recognize some of our
+ # package variables. Use string eval to avoid a dependency on
+ # Sub::Install, even though it makes it somewhat less readable.
+ ## no critic (BuiltinFunctions::ProhibitStringyEval)
+ ## no critic (ValuesAndExpressions::ProhibitImplicitNewlines)
+ my $eval_result = eval qq{
+ sub $AUTOLOAD {
+ if (\$ENV{ANSI_COLORS_DISABLED}) {
+ return join q{}, \@_;
+ } elsif (\$AUTOLOCAL && \@_) {
+ return PUSHCOLOR('$escape') . join(q{}, \@_) . POPCOLOR;
+ } elsif (\$AUTORESET && \@_) {
+ return '$escape' . join(q{}, \@_) . "\e[0m";
+ } else {
+ return '$escape' . join q{}, \@_;
}
- };
- goto &$AUTOLOAD;
- } else {
- require Carp;
- Carp::croak ("undefined subroutine &$AUTOLOAD called");
+ }
+ 1;
+ };
+
+ # Failure is an internal error, not a problem with the caller.
+ ## no critic (ErrorHandling::RequireCarping)
+ if (!$eval_result) {
+ die "failed to generate constant $attr: $@";
}
+
+ # Restore $@.
+ ## no critic (Variables::RequireLocalizedPunctuationVars)
+ $@ = $eval_err;
+
+ # Dispatch to the newly-created sub.
+ ## no critic (References::ProhibitDoubleSigils)
+ goto &$AUTOLOAD;
}
+## use critic (Subroutines::RequireArgUnpacking)
# Append a new color to the top of the color stack and return the top of
# the stack.
+#
+# $text - Any text we're applying colors to, with color escapes prepended
+#
+# Returns: The text passed in
sub PUSHCOLOR {
- my ($text) = @_;
- my ($color) = ($text =~ m/^((?:\e\[[\d;]+m)+)/);
+ my (@text) = @_;
+ my $text = join q{}, @text;
+
+ # Extract any number of color-setting escape sequences from the start of
+ # the string.
+ my ($color) = $text =~ m{ \A ( (?:\e\[ [\d;]+ m)+ ) }xms;
+
+ # If we already have a stack, append these escapes to the set from the top
+ # of the stack. This way, each position in the stack stores the complete
+ # enabled colors for that stage, at the cost of some potential
+ # inefficiency.
if (@COLORSTACK) {
$color = $COLORSTACK[-1] . $color;
}
- push (@COLORSTACK, $color);
+
+ # Push the color onto the stack.
+ push @COLORSTACK, $color;
return $text;
}
# Pop the color stack and return the new top of the stack (or reset, if
# the stack is empty).
+#
+# @text - Any text we're applying colors to
+#
+# Returns: The concatenation of @text prepended with the new stack color
sub POPCOLOR {
+ my (@text) = @_;
pop @COLORSTACK;
if (@COLORSTACK) {
- return $COLORSTACK[-1] . join ('', @_);
+ return $COLORSTACK[-1] . join q{}, @text;
} else {
- return RESET (@_);
+ return RESET(@text);
}
}
-# Surround arguments with a push and a pop.
+# Surround arguments with a push and a pop. The effect will be to reset the
+# colors to whatever was on the color stack before this sequence of colors was
+# applied.
+#
+# @text - Any text we're applying colors to
+#
+# Returns: The concatenation of the text and the proper color reset sequence.
sub LOCALCOLOR {
- return PUSHCOLOR (join ('', @_)) . POPCOLOR ();
+ my (@text) = @_;
+ return PUSHCOLOR(join q{}, @text) . POPCOLOR();
}
##############################################################################
@@ -173,95 +361,188 @@ sub LOCALCOLOR {
##############################################################################
# Return the escape code for a given set of color attributes.
+#
+# @codes - A list of possibly space-separated color attributes
+#
+# Returns: The escape sequence setting those color attributes
+# undef if no escape sequences were given
+# Throws: Text exception for any invalid attribute
sub color {
- return '' if defined $ENV{ANSI_COLORS_DISABLED};
- my @codes = map { split } @_;
- my $attribute = '';
- foreach (@codes) {
- $_ = lc $_;
- unless (defined $ATTRIBUTES{$_}) {
- require Carp;
- Carp::croak ("Invalid attribute name $_");
+ my (@codes) = @_;
+ @codes = map { split } @codes;
+
+ # Return the empty string if colors are disabled.
+ if ($ENV{ANSI_COLORS_DISABLED}) {
+ return q{};
+ }
+
+ # Build the attribute string from semicolon-separated numbers.
+ my $attribute = q{};
+ for my $code (@codes) {
+ $code = lc $code;
+ if (defined $ATTRIBUTES{$code}) {
+ $attribute .= $ATTRIBUTES{$code} . q{;};
+ } elsif (defined $ALIASES{$code}) {
+ $attribute .= $ALIASES{$code} . q{;};
+ } else {
+ croak("Invalid attribute name $code");
}
- $attribute .= $ATTRIBUTES{$_} . ';';
}
+
+ # We added one too many semicolons for simplicity. Remove the last one.
chop $attribute;
- return ($attribute ne '') ? "\e[${attribute}m" : undef;
+
+ # Return undef if there were no attributes.
+ return ($attribute ne q{}) ? "\e[${attribute}m" : undef;
}
# Return a list of named color attributes for a given set of escape codes.
# Escape sequences can be given with or without enclosing "\e[" and "m". The
# empty escape sequence '' or "\e[m" gives an empty list of attrs.
+#
+# There is one special case. 256-color codes start with 38 or 48, followed by
+# a 5 and then the 256-color code.
+#
+# @escapes - A list of escape sequences or escape sequence numbers
+#
+# Returns: An array of attribute names corresponding to those sequences
+# Throws: Text exceptions on invalid escape sequences or unknown colors
sub uncolor {
+ my (@escapes) = @_;
my (@nums, @result);
- for (@_) {
- my $escape = $_;
- $escape =~ s/^\e\[//;
- $escape =~ s/m$//;
- unless ($escape =~ /^((?:\d+;)*\d*)$/) {
- require Carp;
- Carp::croak ("Bad escape sequence $escape");
+
+ # Walk the list of escapes and build a list of attribute numbers.
+ for my $escape (@escapes) {
+ $escape =~ s{ \A \e\[ }{}xms;
+ $escape =~ s{ m \z } {}xms;
+ my ($attrs) = $escape =~ m{ \A ((?:\d+;)* \d*) \z }xms;
+ if (!defined $attrs) {
+ croak("Bad escape sequence $escape");
}
- push (@nums, split (/;/, $1));
+
+ # Pull off 256-color codes (38;5;n or 48;5;n) as a unit.
+ push @nums, $attrs =~ m{ ( 0*[34]8;0*5;\d+ | \d+ ) (?: ; | \z ) }xmsg;
}
- for (@nums) {
- $_ += 0; # Strip leading zeroes
- my $name = $ATTRIBUTES_R{$_};
+
+ # Now, walk the list of numbers and convert them to attribute names.
+ # Strip leading zeroes from any of the numbers. (xterm, at least, allows
+ # leading zeroes to be added to any number in an escape sequence.)
+ for my $num (@nums) {
+ $num =~ s{ ( \A | ; ) 0+ (\d) }{$1$2}xmsg;
+ my $name = $ATTRIBUTES_R{$num};
if (!defined $name) {
- require Carp;
- Carp::croak ("No name for escape sequence $_" );
+ croak("No name for escape sequence $num");
}
- push (@result, $name);
+ push @result, $name;
}
+
+ # Return the attribute names.
return @result;
}
# Given a string and a set of attributes, returns the string surrounded by
# escape codes to set those attributes and then clear them at the end of the
# string. The attributes can be given either as an array ref as the first
-# argument or as a list as the second and subsequent arguments. If $EACHLINE
-# is set, insert a reset before each occurrence of the string $EACHLINE and
-# the starting attribute code after the string $EACHLINE, so that no attribute
-# crosses line delimiters (this is often desirable if the output is to be
-# piped to a pager or some other program).
+# argument or as a list as the second and subsequent arguments.
+#
+# If $EACHLINE is set, insert a reset before each occurrence of the string
+# $EACHLINE and the starting attribute code after the string $EACHLINE, so
+# that no attribute crosses line delimiters (this is often desirable if the
+# output is to be piped to a pager or some other program).
+#
+# $first - An anonymous array of attributes or the text to color
+# @rest - The text to color or the list of attributes
+#
+# Returns: The text, concatenated if necessary, surrounded by escapes to set
+# the desired colors and reset them afterwards
+# Throws: Text exception on invalid attributes
sub colored {
+ my ($first, @rest) = @_;
my ($string, @codes);
- if (ref ($_[0]) && ref ($_[0]) eq 'ARRAY') {
- @codes = @{+shift};
- $string = join ('', @_);
+ if (ref($first) && ref($first) eq 'ARRAY') {
+ @codes = @{$first};
+ $string = join q{}, @rest;
} else {
- $string = shift;
- @codes = @_;
+ $string = $first;
+ @codes = @rest;
+ }
+
+ # Return the string unmolested if colors are disabled.
+ if ($ENV{ANSI_COLORS_DISABLED}) {
+ return $string;
}
- return $string if defined $ENV{ANSI_COLORS_DISABLED};
+
+ # Find the attribute string for our colors.
+ my $attr = color(@codes);
+
+ # If $EACHLINE is defined, split the string on line boundaries, suppress
+ # empty segments, and then colorize each of the line sections.
if (defined $EACHLINE) {
- my $attr = color (@codes);
- return join '',
- map { ($_ ne $EACHLINE) ? $attr . $_ . "\e[0m" : $_ }
- grep { length ($_) > 0 }
- split (/(\Q$EACHLINE\E)/, $string);
+ my @text = map { ($_ ne $EACHLINE) ? $attr . $_ . "\e[0m" : $_ }
+ grep { length($_) > 0 }
+ split m{ (\Q$EACHLINE\E) }xms, $string;
+ return join q{}, @text;
} else {
- return color (@codes) . $string . "\e[0m";
+ return $attr . $string . "\e[0m";
}
}
+# Define a new color alias, or return the value of an existing alias.
+#
+# $alias - The color alias to define
+# $color - The standard color the alias will correspond to (optional)
+#
+# Returns: The standard color value of the alias
+# undef if one argument was given and the alias was not recognized
+# Throws: Text exceptions for invalid alias names, attempts to use a
+# standard color name as an alias, or an unknown standard color name
+sub coloralias {
+ my ($alias, $color) = @_;
+ if (!defined $color) {
+ if (!exists $ALIASES{$alias}) {
+ return;
+ } else {
+ return $ATTRIBUTES_R{ $ALIASES{$alias} };
+ }
+ }
+ if ($alias !~ m{ \A [\w._-]+ \z }xms) {
+ croak(qq{Invalid alias name "$alias"});
+ } elsif ($ATTRIBUTES{$alias}) {
+ croak(qq{Cannot alias standard color "$alias"});
+ } elsif (!exists $ATTRIBUTES{$color}) {
+ croak(qq{Invalid attribute name "$color"});
+ }
+ $ALIASES{$alias} = $ATTRIBUTES{$color};
+ return $color;
+}
+
# Given a string, strip the ANSI color codes out of that string and return the
# result. This removes only ANSI color codes, not movement codes and other
# escape sequences.
+#
+# @string - The list of strings to sanitize
+#
+# Returns: (array) The strings stripped of ANSI color escape sequences
+# (scalar) The same, concatenated
sub colorstrip {
my (@string) = @_;
for my $string (@string) {
- $string =~ s/\e\[[\d;]*m//g;
+ $string =~ s{ \e\[ [\d;]* m }{}xmsg;
}
- return wantarray ? @string : join ('', @string);
+ return wantarray ? @string : join q{}, @string;
}
# Given a list of color attributes (arguments for color, for instance), return
# true if they're all valid or false if any of them are invalid.
+#
+# @codes - A list of color attributes, possibly space-separated
+#
+# Returns: True if all the attributes are valid, false otherwise.
sub colorvalid {
- my @codes = map { split } @_;
- for (@codes) {
- unless (defined $ATTRIBUTES{lc $_}) {
+ my (@codes) = @_;
+ @codes = map { split q{ }, lc $_ } @codes;
+ for my $code (@codes) {
+ if (!defined $ATTRIBUTES{$code} && !defined $ALIASES{$code}) {
return;
}
}
@@ -284,7 +565,8 @@ Term::ANSIColor - Color screen output using ANSI escape sequences
cyan colorize namespace runtime TMTOWTDI cmd.exe 4nt.exe command.com NT
ESC Delvare SSH OpenSSH aixterm ECMA-048 Fraktur overlining Zenin
reimplemented Allbery PUSHCOLOR POPCOLOR LOCALCOLOR openmethods.com
-grey ATTR
+grey ATTR urxvt mistyped prepending Bareword filehandle Cygwin Starsinic
+aterm rxvt CPAN RGB Solarized Whitespace alphanumerics undef
=head1 SYNOPSIS
@@ -293,23 +575,33 @@ grey ATTR
print "This text is bold blue.\n";
print color 'reset';
print "This text is normal.\n";
- print colored ("Yellow on magenta.", 'yellow on_magenta'), "\n";
+ print colored("Yellow on magenta.", 'yellow on_magenta'), "\n";
print "This text is normal.\n";
print colored ['yellow on_magenta'], 'Yellow on magenta.', "\n";
print colored ['red on_bright_yellow'], 'Red on bright yellow.', "\n";
print colored ['bright_red on_black'], 'Bright red on black.', "\n";
print "\n";
- use Term::ANSIColor qw(uncolor);
- print uncolor ('01;31'), "\n";
+ # Map escape sequences back to color names.
+ use Term::ANSIColor 1.04 qw(uncolor);
+ my $names = uncolor('01;31');
+ print join(q{ }, @{$names}), "\n";
- use Term::ANSIColor qw(colorstrip);
+ # Strip all color escape sequences.
+ use Term::ANSIColor 2.01 qw(colorstrip);
print colorstrip '\e[1mThis is bold\e[0m', "\n";
- use Term::ANSIColor qw(colorvalid);
- my $valid = colorvalid ('blue bold', 'on_magenta');
+ # Determine whether a color is valid.
+ use Term::ANSIColor 2.02 qw(colorvalid);
+ my $valid = colorvalid('blue bold', 'on_magenta');
print "Color string is ", $valid ? "valid\n" : "invalid\n";
+ # Create new aliases for colors.
+ use Term::ANSIColor 4.00 qw(coloralias);
+ coloralias('alert', 'red');
+ print "Alert is ", coloralias('alert'), "\n";
+ print colored("This is in red.", 'alert'), "\n";
+
use Term::ANSIColor qw(:constants);
print BOLD, BLUE, "This text is in bold blue.\n", RESET;
@@ -320,7 +612,7 @@ grey ATTR
print "This text is normal.\n";
}
- use Term::ANSIColor qw(:pushpop);
+ use Term::ANSIColor 2.00 qw(:pushpop);
print PUSHCOLOR RED ON_GREEN "This text is red on green.\n";
print PUSHCOLOR BRIGHT_BLUE "This text is bright blue on green.\n";
print RESET BRIGHT_BLUE "This text is just bright blue.\n";
@@ -338,17 +630,19 @@ grey ATTR
This module has two interfaces, one through color() and colored() and the
other through constants. It also offers the utility functions uncolor(),
-colorstrip(), and colorvalid(), which have to be explicitly imported to be
-used (see L</SYNOPSIS>).
+colorstrip(), colorvalid(), and coloralias(), which have to be explicitly
+imported to be used (see L</SYNOPSIS>).
+
+See L</COMPATIBILITY> for the versions of Term::ANSIColor that introduced
+particular features and the versions of Perl that included them.
=head2 Supported Colors
Terminal emulators that support color divide into two types: ones that
-support only eight colors, and ones that support sixteen. This module
-provides both the ANSI escape codes for the "normal" colors, supported by
-both types, as well as the additional colors supported by sixteen-color
-emulators. These colors are referred to as ANSI colors 0 through 7
-(normal) and 8 through 15.
+support only eight colors, ones that support sixteen, and ones that
+support 256. This module provides the ANSI escape codes all of them.
+These colors are referred to as ANSI colors 0 through 7 (normal), 8
+through 15 (16-color), and 16 through 255 (256-color).
Unfortunately, interpretation of colors 0 through 7 often depends on
whether the emulator supports eight colors or sixteen colors. Emulators
@@ -371,8 +665,19 @@ C<red> is color 1 and C<bright_red> is color 9. The same applies for
background colors: C<on_red> is the normal color and C<on_bright_red> is
the bright color. Capitalize these strings for the constant interface.
+For 256-color emulators, this module additionally provides C<ansi0>
+through C<ansi15>, which are the same as colors 0 through 15 in
+sixteen-color emulators but use the 256-color escape syntax, C<grey0>
+through C<grey23> ranging from nearly black to nearly white, and a set of
+RGB colors. The RGB colors are of the form C<rgbI<RGB>> where I<R>, I<G>,
+and I<B> are numbers from 0 to 5 giving the intensity of red, green, and
+blue. C<on_> variants of all of these colors are also provided. These
+colors may be ignored completely on non-256-color terminals or may be
+misinterpreted and produce random behavior. Additional attributes such as
+blink, italic, or bold may not work with the 256-color palette.
+
There is unfortunately no way to know whether the current emulator
-supports sixteen colors or not, which makes the choice of colors
+supports more than eight colors, which makes the choice of colors
difficult. The most conservative choice is to use only the regular
colors, which are at least displayed on all emulators. However, they will
appear dark in sixteen-color terminal emulators, including most common
@@ -381,21 +686,18 @@ emulators, you may wish to use the bright variants instead. Even better,
offer the user a way to configure the colors for a given application to
fit their terminal emulator.
-Support for colors 8 through 15 (the C<bright_> variants) was added in
-Term::ANSIColor 3.0.
-
=head2 Function Interface
The function interface uses attribute strings to describe the colors and
text attributes to assign to text. The recognized non-color attributes
-are clear, reset, bold, dark, faint, underline, underscore, blink,
+are clear, reset, bold, dark, faint, italic, underline, underscore, blink,
reverse, and concealed. Clear and reset (reset to default attributes),
dark and faint (dim and saturated), and underline and underscore are
equivalent, so use whichever is the most intuitive to you.
Note that not all attributes are supported by all terminal types, and some
-terminals may not support any of these sequences. Dark and faint, blink,
-and concealed in particular are frequently not implemented.
+terminals may not support any of these sequences. Dark and faint, italic,
+blink, and concealed in particular are frequently not implemented.
The recognized normal foreground color attributes (colors 0 to 7) are:
@@ -416,6 +718,19 @@ The recognized bright background color attributes (colors 8 to 15) are:
on_bright_black on_bright_red on_bright_green on_bright_yellow
on_bright_blue on_bright_magenta on_bright_cyan on_bright_white
+For 256-color terminals, the recognized foreground colors are:
+
+ ansi0 .. ansi15
+ grey0 .. grey23
+
+plus C<rgbI<RGB>> for I<R>, I<G>, and I<B> values from 0 to 5, such as
+C<rgb000> or C<rgb515>. Similarly, the recognized background colors are:
+
+ on_ansi0 .. on_ansi15
+ on_grey0 .. on_grey23
+
+plus C<on_rgbI<RGB>> for for I<R>, I<G>, and I<B> values from 0 to 5.
+
For any of the above listed attributes, case is not significant.
Attributes, once set, last until they are unset (by printing the attribute
@@ -435,7 +750,7 @@ you can save it as a string, pass it to something else, send it to a file
handle, or do anything else with it that you might care to. color()
throws an exception if given an invalid attribute.
-=item colored(STRING, ATTRIBUTES)
+=item colored(STRING, ATTR[, ATTR ...])
=item colored(ATTR-REF, STRING[, STRING...])
@@ -475,6 +790,31 @@ together in scalar context. Its arguments are not modified.
colorvalid() takes attribute strings the same as color() and returns true
if all attributes are known and false otherwise.
+=item coloralias(ALIAS[, ATTR])
+
+If ATTR is specified, coloralias() sets up an alias of ALIAS for the
+standard color ATTR. From that point forward, ALIAS can be passed into
+color(), colored(), and colorvalid() and will have the same meaning as
+ATTR. One possible use of this facility is to give more meaningful names
+to the 256-color RGB colors. Only alphanumerics, C<.>, C<_>, and C<-> are
+allowed in alias names.
+
+If ATTR is not specified, coloralias() returns the standard color name to
+which ALIAS is aliased, if any, or undef if ALIAS does not exist.
+
+This is the same facility used by the ANSI_COLORS_ALIASES environment
+variable (see L</ENVIRONMENT> below) but can be used at runtime, not just
+when the module is loaded.
+
+Later invocations of coloralias() with the same ALIAS will override
+earlier aliases. There is no way to remove an alias.
+
+Aliases have no effect on the return value of uncolor().
+
+B<WARNING>: Aliases are global and affect all callers in the same process.
+There is no way to set an alias limited to a particular block of code or a
+particular object.
+
=back
=head2 Constant Interface
@@ -483,8 +823,8 @@ Alternately, if you import C<:constants>, you can use the following
constants directly:
CLEAR RESET BOLD DARK
- FAINT UNDERLINE UNDERSCORE BLINK
- REVERSE CONCEALED
+ FAINT ITALIC UNDERLINE UNDERSCORE
+ BLINK REVERSE CONCEALED
BLACK RED GREEN YELLOW
BLUE MAGENTA CYAN WHITE
@@ -508,6 +848,25 @@ to
(Note that the newline is kept separate to avoid confusing the terminal as
described above since a background color is being used.)
+If you import C<:constants256>, you can use the following constants
+directly:
+
+ ANSI0 .. ANSI15
+ GREY0 .. GREY23
+
+ RGBXYZ (for X, Y, and Z values from 0 to 5, like RGB000 or RGB515)
+
+ ON_ANSI0 .. ON_ANSI15
+ ON_GREY0 .. ON_GREY23
+
+ ON_RGBXYZ (for X, Y, and Z values from 0 to 5)
+
+Note that C<:constants256> does not include the other constants, so if you
+want to mix both, you need to include C<:constants> as well. You may want
+to explicitly import at least C<RESET>, as in:
+
+ use Term::ANSIColor 4.00 qw(RESET :constants256);
+
When using the constants, if you don't want to have to remember to add the
C<, RESET> at the end of each print line, you can set
$Term::ANSIColor::AUTORESET to a true value. Then, the display mode will
@@ -521,8 +880,11 @@ will reset the display mode afterward, whereas:
print BOLD, BLUE, "Text\n";
will not. If you are using background colors, you will probably want to
-print the newline with a separate print statement to avoid confusing the
-terminal.
+either use say() (in newer versions of Perl) or print the newline with a
+separate print statement to avoid confusing the terminal.
+
+If $Term::ANSIColor::AUTOLOCAL is set (see below), it takes precedence
+over $Term::ANSIColor::AUTORESET, and the latter is ignored.
The subroutine interface has the advantage over the constants interface in
that only two subroutines are exported into your namespace, versus
@@ -536,13 +898,27 @@ bug by mistyping an attribute. Your choice, TMTOWTDI after all.
=head2 The Color Stack
-As of Term::ANSIColor 2.0, you can import C<:pushpop> and maintain a stack
-of colors using PUSHCOLOR, POPCOLOR, and LOCALCOLOR. PUSHCOLOR takes the
-attribute string that starts its argument and pushes it onto a stack of
-attributes. POPCOLOR removes the top of the stack and restores the
-previous attributes set by the argument of a prior PUSHCOLOR. LOCALCOLOR
-surrounds its argument in a PUSHCOLOR and POPCOLOR so that the color
-resets afterward.
+You can import C<:pushpop> and maintain a stack of colors using PUSHCOLOR,
+POPCOLOR, and LOCALCOLOR. PUSHCOLOR takes the attribute string that
+starts its argument and pushes it onto a stack of attributes. POPCOLOR
+removes the top of the stack and restores the previous attributes set by
+the argument of a prior PUSHCOLOR. LOCALCOLOR surrounds its argument in a
+PUSHCOLOR and POPCOLOR so that the color resets afterward.
+
+If $Term::ANSIColor::AUTOLOCAL is set, each sequence of color constants
+will be implicitly preceded by LOCALCOLOR. In other words, the following:
+
+ {
+ local $Term::ANSIColor::AUTOLOCAL = 1;
+ print BLUE "Text\n";
+ }
+
+is equivalent to:
+
+ print LOCALCOLOR BLUE "Text\n";
+
+If $Term::ANSIColor::AUTOLOCAL is set, it takes precedence over
+$Term::ANSIColor::AUTORESET, and the latter is ignored.
When using PUSHCOLOR, POPCOLOR, and LOCALCOLOR, it's particularly
important to not put commas between the constants.
@@ -562,6 +938,11 @@ attributes are.
=over 4
+=item Bad color mapping %s
+
+(W) The specified color mapping from ANSI_COLORS_ALIASES is not valid and
+could not be parsed. It was ignored.
+
=item Bad escape sequence %s
(F) You passed an invalid ANSI escape sequence to uncolor().
@@ -579,9 +960,35 @@ or:
This will only show up under use strict (another good reason to run under
use strict).
+=item Cannot alias standard color %s
+
+(F) The alias name passed to coloralias() matches a standard color name.
+Standard color names cannot be aliased.
+
+=item Cannot alias standard color %s in %s
+
+(W) The same, but in ANSI_COLORS_ALIASES. The color mapping was ignored.
+
+=item Invalid alias name %s
+
+(F) You passed an invalid alias name to coloralias(). Alias names must
+consist only of alphanumerics, C<.>, C<->, and C<_>.
+
+=item Invalid alias name %s in %s
+
+(W) You specified an invalid alias name on the left hand of the equal sign
+in a color mapping in ANSI_COLORS_ALIASES. The color mapping was ignored.
+
=item Invalid attribute name %s
-(F) You passed an invalid attribute name to either color() or colored().
+(F) You passed an invalid attribute name to color(), colored(), or
+coloralias().
+
+=item Invalid attribute name %s in %s
+
+(W) You specified an invalid attribute name on the right hand of the equal
+sign in a color mapping in ANSI_COLORS_ALIASES. The color mapping was
+ignored.
=item Name "%s" used only once: possible typo
@@ -613,20 +1020,84 @@ aren't recognized and can't be translated to names.
=over 4
-=item ANSI_COLORS_DISABLED
+=item ANSI_COLORS_ALIASES
+
+This environment variable allows the user to specify custom color aliases
+that will be understood by color(), colored(), and colorvalid(). None of
+the other functions will be affected, and no new color constants will be
+created. The custom colors are aliases for existing color names; no new
+escape sequences can be introduced. Only alphanumerics, C<.>, C<_>, and
+C<-> are allowed in alias names.
+
+The format is:
+
+ ANSI_COLORS_ALIASES='newcolor1=oldcolor1,newcolor2=oldcolor2'
+
+Whitespace is ignored.
-If this environment variable is set, all of the functions defined by this
-module (color(), colored(), and all of the constants not previously used
-in the program) will not output any escape sequences and instead will just
-return the empty string or pass through the original text as appropriate.
-This is intended to support easy use of scripts using this module on
-platforms that don't support ANSI escape sequences.
+For example the L<Solarized|http://ethanschoonover.com/solarized> colors
+can be mapped with:
-For it to have its proper effect, this environment variable must be set
-before any color constants are used in the program.
+ ANSI_COLORS_ALIASES='\
+ base00=bright_yellow, on_base00=on_bright_yellow,\
+ base01=bright_green, on_base01=on_bright_green, \
+ base02=black, on_base02=on_black, \
+ base03=bright_black, on_base03=on_bright_black, \
+ base0=bright_blue, on_base0=on_bright_blue, \
+ base1=bright_cyan, on_base1=on_bright_cyan, \
+ base2=white, on_base2=on_white, \
+ base3=bright_white, on_base3=on_bright_white, \
+ orange=bright_red, on_orange=on_bright_red, \
+ violet=bright_magenta,on_violet=on_bright_magenta'
+
+This environment variable is read and applied when the Term::ANSIColor
+module is loaded and is then subsequently ignored. Changes to
+ANSI_COLORS_ALIASES after the module is loaded will have no effect. See
+coloralias() for an equivalent facility that can be used at runtime.
+
+=item ANSI_COLORS_DISABLED
+
+If this environment variable is set to a true value, all of the functions
+defined by this module (color(), colored(), and all of the constants not
+previously used in the program) will not output any escape sequences and
+instead will just return the empty string or pass through the original
+text as appropriate. This is intended to support easy use of scripts
+using this module on platforms that don't support ANSI escape sequences.
=back
+=head1 COMPATIBILITY
+
+Term::ANSIColor was first included with Perl in Perl 5.6.0.
+
+The uncolor() function and support for ANSI_COLORS_DISABLED were added in
+Term::ANSIColor 1.04, included in Perl 5.8.0.
+
+Support for dark was added in Term::ANSIColor 1.08, included in Perl
+5.8.4.
+
+The color stack, including the C<:pushpop> import tag, PUSHCOLOR,
+POPCOLOR, LOCALCOLOR, and the $Term::ANSIColor::AUTOLOCAL variable, was
+added in Term::ANSIColor 2.00, included in Perl 5.10.1.
+
+colorstrip() was added in Term::ANSIColor 2.01 and colorvalid() was added
+in Term::ANSIColor 2.02, both included in Perl 5.11.0.
+
+Support for colors 8 through 15 (the C<bright_> variants) was added in
+Term::ANSIColor 3.00, included in Perl 5.13.3.
+
+Support for italic was added in Term::ANSIColor 3.02, included in Perl
+5.17.1.
+
+Support for colors 16 through 256 (the C<ansi>, C<rgb>, and C<grey>
+colors), the C<:constants256> import tag, the coloralias() function, and
+support for the ANSI_COLORS_ALIASES environment variable were added in
+Term::ANSIColor 4.00.
+
+$Term::ANSIColor::AUTOLOCAL was changed to take precedence over
+$Term::ANSIColor::AUTORESET, rather than the other way around, in
+Term::ANSIColor 4.00.
+
=head1 RESTRICTIONS
It would be nice if one could leave off the commas around the constants
@@ -684,7 +1155,7 @@ helped me flesh it out:
PuTTY yes color no yes no yes no
Windows yes no no no no yes no
Cygwin SSH yes yes no color color color yes
- Mac Terminal yes yes no yes yes yes yes
+ Terminal.app yes yes no yes yes yes yes
Windows is Windows telnet, Cygwin SSH is the OpenSSH implementation under
Cygwin on Windows NT, and Mac Terminal is the Terminal application in Mac
@@ -693,14 +1164,22 @@ given attribute as something else instead. Note that on an aixterm, clear
doesn't reset colors; you have to explicitly set the colors back to what
you want. More entries in this table are welcome.
-Note that codes 3 (italic), 6 (rapid blink), and 9 (strike-through) are
-specified in ANSI X3.64 and ECMA-048 but are not commonly supported by
-most displays and emulators and therefore aren't supported by this module
-at the present time. ECMA-048 also specifies a large number of other
-attributes, including a sequence of attributes for font changes, Fraktur
-characters, double-underlining, framing, circling, and overlining. As
-none of these attributes are widely supported or useful, they also aren't
-currently supported by this module.
+Support for code 3 (italic) is rare and therefore not mentioned in that
+table. It is not believed to be fully supported by any of the terminals
+listed, although it's displayed as green in the Linux console, but it is
+reportedly supported by urxvt.
+
+Note that codes 6 (rapid blink) and 9 (strike-through) are specified in
+ANSI X3.64 and ECMA-048 but are not commonly supported by most displays
+and emulators and therefore aren't supported by this module at the present
+time. ECMA-048 also specifies a large number of other attributes,
+including a sequence of attributes for font changes, Fraktur characters,
+double-underlining, framing, circling, and overlining. As none of these
+attributes are widely supported or useful, they also aren't currently
+supported by this module.
+
+Most modern X terminal emulators support 256 colors. Known to not support
+those colors are aterm, rxvt, Terminal.app, and TTY/VC.
=head1 SEE ALSO
@@ -712,6 +1191,13 @@ does not own a copy of it. Since the source material for ISO 6429 was
ECMA-048 and the latter is available for free, there seems little reason
to obtain the ISO standard.
+The 256-color control sequences are documented at
+L<http://www.xfree86.org/current/ctlseqs.html> (search for 256-color).
+
+The CPAN module Term::ExtendedColor provides a different and more
+comprehensive interface for 256-color emulators that may be more
+convenient.
+
The current version of this module is always available from its web site
at L<http://www.eyrie.org/~eagle/software/ansicolor/>. It is also part of
the Perl core distribution as of 5.6.0.
@@ -720,16 +1206,18 @@ the Perl core distribution as of 5.6.0.
Original idea (using constants) by Zenin, reimplemented using subs by Russ
Allbery <rra@stanford.edu>, and then combined with the original idea by
-Russ with input from Zenin. Russ Allbery now maintains this module.
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2008, 2009, 2010,
-2011 Russ Allbery <rra@stanford.edu> and Zenin. This program is free
-software; you may redistribute it and/or modify it under the same terms as
-Perl itself.
+Russ with input from Zenin. 256-color support is based on work by Kurt
+Starsinic. Russ Allbery now maintains this module.
PUSHCOLOR, POPCOLOR, and LOCALCOLOR were contributed by openmethods.com
voice solutions.
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 1996 Zenin. Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005,
+2006, 2008, 2009, 2010, 2011, 2012 Russ Allbery <rra@stanford.edu>.
+Copyright 2012 Kurt Starsinic <kstarsinic@gmail.com>. This program is
+free software; you may redistribute it and/or modify it under the same
+terms as Perl itself.
+
=cut
diff --git a/gnu/usr.bin/perl/cpan/Term-ANSIColor/ChangeLog b/gnu/usr.bin/perl/cpan/Term-ANSIColor/ChangeLog
index 77de255cd27..aec8803b4ea 100644
--- a/gnu/usr.bin/perl/cpan/Term-ANSIColor/ChangeLog
+++ b/gnu/usr.bin/perl/cpan/Term-ANSIColor/ChangeLog
@@ -1,3 +1,179 @@
+2013-01-07 Russ Allbery <rra@stanford.edu>
+
+ * ANSIColor.pm: Version 4.02 released.
+
+ * Makefile.PL: Add the minimum Perl version to the package
+ metadata.
+
+ * t/basic256.t: List the tag first in the import list for
+ compatibility with the Exporter from Perl 5.6.2. Thanks to David
+ Cantrell for the testing and debugging.
+
+2012-12-31 Russ Allbery <rra@stanford.edu>
+
+ * ANSIColor.pm: Version 4.01 released.
+
+ * t/strict.t: During coverage checking, skip generic tests that
+ don't run module code for a significant speed-up.
+
+ * examples/generate-colors: Add POD documentation.
+ * t/critic.t: Also check the examples directory.
+ * t/pod.t: Likewise.
+ * t/pod-spelling.t: Likewise.
+
+ * t/aliases-env.t: Fix logic for skipping tests when Test::Warn is
+ not installed.
+
+2012-12-30 Russ Allbery <rra@stanford.edu>
+
+ * ANSIColor.pm: Version 4.00 released.
+
+ * LICENSE: New file summarizing copyright and license information.
+
+ * examples/generate-colors: Add support for "basic" and "bright"
+ test file types that test all the other supported attributes.
+ * tests/README: Remove VT100 test files. The license was unclear,
+ and the new generate-colors example script does everything they do
+ of significance for this package plus more.
+ * tests/ansicolor: Likewise.
+ * tests/vt100-torture: Likewise.
+
+ * ANSIColor.pm (PUSHCOLOR): Take an array like all the other
+ constant functions and join all arguments together before
+ manipulating it.
+ * t/basic.t: Multiple new tests for various weird edge cases.
+
+ * ANSIColor.pm (AUTOLOAD): Only honor ANSI_COLORS_DISABLED if it
+ is set to a true value.
+ (color): Likewise.
+ (colored): Likewise.
+ * t/basic.t: Test that ANSI_COLORS_DISABLED must be true.
+
+ * t/synopsis.t: New test for SYNOPSIS syntax.
+
+ * ANSIColor.pm: Add COMPATIBILITY section to the documentation,
+ collecting all information about when features were introduced and
+ adding the version of Perl that they shipped with. Add
+ appropriate version numbers to the use statements in the SYNOPSIS.
+
+ * ANSIColor.pm: Use coloralias to load aliases from the
+ environment. Improve commenting in the SYNOPSIS. Document the
+ new alias name restrictions.
+ (coloralias): New function to set a color alias. Enforce
+ restrictions on the acceptable alias name.
+
+ * t/aliases-env.t: Adjust warning test for new error message.
+ * t/aliases-func.t: New test of coloralias.
+
+2012-12-29 Stephen Thirlwall <stephen.thirlwall@strategicdata.com.au>
+ Russ Allbery <rra@stanford.edu>
+
+ * ANSIColor.pm: Add support for custom color names configured with
+ the ANSI_COLORS_ALIASES environment variable as set during module
+ load.
+ (color): Support custom colors.
+ (colorvalid): Likewise.
+ * t/aliases-env.t: New test of custom colors from the environment.
+ * t/basic.t: Delete ANSI_COLORS_ALIASES from the environment before
+ module load to avoid any effects from the test runner's settings.
+ * t/basic256.t: Likewise.
+ * t/eval.t: Likewise.
+ * t/stringify.t: Likewise.
+ * t/taint.t: Likewise.
+
+2012-12-28 Kurt Starsinic <kstarsinic@gmail.com>
+ Russ Allbery <rra@stanford.edu>
+
+ * ANSIColor.pm: Add constants (with tag :constants256) and
+ attributes for 256-color emulators.
+ (uncolor): Support the three-part 256-color codes.
+ * t/basic256.t: New test for 256-color support.
+ * examples/generate-colors: New script to generate 256-color test
+ or demonstration files.
+
+2012-12-28 Russ Allbery <rra@stanford.edu>
+
+ * t/basic.t: Test uncolor with \e[m and '' as only arguments.
+
+ * ANSIColor.pm: $AUTOLOCAL takes precedence over $AUTORESET,
+ reversing the previous behvior. Document the precedence.
+ * t/basic.t: Test for $AUTOLOCAL vs. $AUTORESET precedence.
+
+ * t/taint.t: New check for proper untainting in AUTOLOAD.
+ * ANSIColor.pm: Comment the untainting of $AUTOLOAD so that it
+ isn't accidentally removed as apparently unnecessary.
+
+ * t/strict.t: Ignore t/taint.t for coverage checking, since
+ Test::Strict doesn't know how to invoke tests that require
+ tainting.
+
+ * t/strict.t: Add test suite coverage checking if running the test
+ in maintainer mode.
+ * ANSIColor.pm (AUTOLOAD): Drop a redundant check on the result of
+ eval so that 100% test coverage can be achieved.
+ * t/basic.t: Remove taint checking, which is incompatible with
+ coverage testing. Add tests to achieve 100% coverage.
+ * t/eval.t: Remove taint checking.
+ * t/stringify.t: Likewise.
+
+ * ANSIColor.pm: Document $Term::ANSIColor::AUTOLOCAL.
+
+ * ANSIColor.pm (AUTOLOAD): Support ANSI_COLORS_DISABLED in the
+ generated constant subs. Fixes a bug where the environment
+ variable would be ignored if the constant were used before it was
+ set.
+ * t/basic.t: Test for proper ANSI_COLORS_DISABLED support in
+ generated constant subs.
+
+ * t/critic.t: New test that runs perlcritic (and perltidy) on all
+ source files and checks for violations.
+ * t/data/perlcriticrc: New file.
+ * t/data/perltidyrc: New file.
+ * ANSIColor.pm: Substantial reworking to improve coding style and
+ layout. Update to Perl 5.6 syntax. Unconditionally load Carp for
+ simplicity.
+ * Makefile.PL: Require Perl 5.6. Remove conditionals for
+ configuration that was not supported prior to Perl 5.6.
+ * t/basic.t: Update coding style.
+ * t/eval.t: Likewise.
+ * t/stringify.t: Likewise.
+
+ * t/minimum-version.t: New test for the minimum required version
+ of Perl.
+
+ * t/pod-coverage.t: New test for POD coverage.
+
+ * ANSIColor.pm: Add use warnings.
+ * Makefile.PL: Add use strict and use warnings.
+ * t/strict.t: New test for strict and warnings in all code.
+
+ * t/pod.t: Update coding style.
+ * t/pod-spelling.t: Use Test::Spelling instead of including a
+ less-tested version of the same code. Update coding style.
+
+2012-03-18 Russ Allbery <rra@stanford.edu>
+
+ * ANSIColor.pm: Version 3.02 released.
+
+ * ANSIColor.pm (AUTOLOAD): Only return pass-through behavior if
+ the function that was called was one of our constants, rather than
+ turning every unknown function in the Term::ANSIColor namespace
+ into a passthrough join function when colors are disabled.
+ * t/basic.t: Test proper error reporting with colors disabled.
+
+ * ANSIColor.pm (AUTOLOAD): Preserve an existing value of $@ when
+ generating a constant sub and restore it afterwards. Diagnose
+ errors in creating the constant sub and die instead of ignoring
+ them.
+ * t/eval.t: New test for $@ preservation.
+
+ * ANSIColor.pm: Add italic and the ITALIC constant. Document that
+ the support for it is rare.
+ * t/basic.t: Test italic and ITALIC support.
+
+ * ANSIColor.pm: Add "mistyped" as a stopword, required by the
+ latest aspell on Debian.
+
2011-07-20 Russ Allbery <rra@stanford.edu>
* ANSIColor.pm: Version 3.01 released.
diff --git a/gnu/usr.bin/perl/cpan/Term-ANSIColor/README b/gnu/usr.bin/perl/cpan/Term-ANSIColor/README
index 051c7c37e43..597b54a72c2 100644
--- a/gnu/usr.bin/perl/cpan/Term-ANSIColor/README
+++ b/gnu/usr.bin/perl/cpan/Term-ANSIColor/README
@@ -1,74 +1,98 @@
- Term::ANSIColor version 3.01
+ Term::ANSIColor version 4.02
(A simple ANSI text attribute control module)
- Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2007, 2009,
- 2010, 2011 Russ Allbery <rra@stanford.edu> and Zenin. This program is
- free software; you may redistribute it and/or modify it under the same
- terms as Perl itself.
-
- I welcome bug reports and patches for this package at rra@stanford.edu.
- However, please be aware that I tend to be extremely busy and to get a
- lot of mail. I'll save your mail and get to it as soon as I can, but
- depending on how busy I am it may take me a couple of months.
+ This program is free software; you may redistribute it and/or modify it
+ under the same terms as Perl itself. Please see the section LICENSE
+ below for more information.
BLURB
- Term::ANSIColor provides constants and simple functions for sending ANSI
+ Term::ANSIColor provides constants and simple functions for setting ANSI
text attributes, most notably colors. It can be used to set the current
text attributes or to apply a set of attributes to a string and reset
- the current text attributes at the end of that string.
+ the current text attributes at the end of that string. Eight-color,
+ sixteen-color, and 256-color escape sequences are all supported.
DESCRIPTION
- This module grew out of a thread on comp.lang.perl.misc where several of
- us were throwing around different ways to print colored text from Perl
- scripts and Zenin posted his old library to do that. I (Russ) disagreed
- with the implementation and offered my own (the color() and colored()
- functions implemented in this package), Zenin convinced me that the
- constants had their place as well, and we started figuring out the best
- ways of implementing both.
-
- While ANSI color escape codes are fairly simple, it can be hard to
- remember the codes for all of the attributes and the code resulting from
- hard-coding them into your script is definitely difficult to read. This
- module is designed to fix those problems, as well as provide a
- convenient interface to do a few things for you automatically (like
- resetting attributes after the text you print out so that you don't
- accidentally leave attributes set).
-
- Despite its name, this module can also handle non-color ANSI text
- attributes (bold, underline, reverse video, and blink). It uses either
- of two interfaces, one of which uses "constants" for each different
- attribute and the other of which uses two subs which take strings of
- attributes as arguments.
+ This Perl module is a simple and convenient interface to the ANSI
+ terminal escape sequences for color (from ECMA-48, also included in ISO
+ 6429). The color sequences are provided in two forms, either as
+ constants for each color or via a function that takes the names of
+ colors and returns the appropriate escape codes or wraps them around the
+ provided text. The non-color text style codes from ANSI X3.64 (bold,
+ dark, underline, and reverse, for example), which were also included in
+ ECMA-48 and ISO 6429, are also supported. Also supported are the
+ extended colors used for sixteen-color and 256-color emulators.
+
+ This module is very stable, and I've used it in a wide variety of
+ applications. It has been included in the core Perl distribution
+ starting with version 5.6.0, so you don't need to download and install
+ it yourself unless you have an old version of Perl or need a newer
+ version of the module than comes with your version of Perl. I continue
+ to maintain it as a separate module, and the version included in Perl is
+ resynced with mine before each release.
+
+ The original module came out of a discussion in comp.lang.perl.misc and
+ is a combination of two approaches, one with constants by Zenin and one
+ with functions that I wrote. I offered to maintain a combined module
+ that included both approaches.
See the POD documentation for complete details, features, and usage.
- This module is distributed as part of the Perl core distribution as of
- Perl 5.6.0. You only need to install this module if you want a newer
- version than came with Perl or if you have an old version of Perl.
-
REQUIREMENTS
Term::ANSIColor is written in pure Perl and has no module dependencies
that aren't found in Perl core. It should work with any version of Perl
- after 5.001, although it hasn't been tested with old versions in some
+ after 5.6, although it hasn't been tested with old versions in some
time.
- The test suite requires the Test::More module. To check the POD
- documentation, Test::Pod is also required. To check spelling,
- Pod::Spell and either aspell or ispell with the american dictionary are
- also required. The user's path is searched for aspell or ispell and
- aspell is preferred. Spelling tests are disabled by default since
- spelling dictionaries differ too much between systems. To enable those
- tests, set RRA_MAINTAINER_TESTS to a true value.
+ In order to actually see color, you will need to use a terminal window
+ that supports the ANSI escape sequences for color. Any recent version
+ of xterm, most xterm derivatives and replacements, and most telnet and
+ ssh clients for Windows and Macintosh should work, as will the MacOS X
+ Terminal application (although Terminal.app reportedly doesn't support
+ 256 colors). The console windows for Windows NT and Windows 2000 will
+ not work, as they do not even attempt to support ANSI X3.64.
+
+ For a complete (to my current knowledge) compatibility list, see the
+ Term::ANSIColor module documentation. If you have any additions to the
+ table in the documentation, please send them to me.
+
+ The test suite requires Perl and Test::More (part of Perl since 5.6.2).
+ It also makes use of additional Perl modules for some tests. These
+ tests will be skipped automatically if the modules aren't available. To
+ run the full set of default tests, you will need the Perl modules:
+
+ Perl::Critic
+ Test::MinimumVersion
+ Test::Pod
+ Test::Pod::Coverage
+ Test::Strict
+ Test::Synopsis
+ Test::Warn
+
+ and their dependencies. These modules are all available from CPAN.
+
+ Some parts of the test suite are suppressed by default because those
+ tests are normally only useful for the maintainer. This includes tests
+ of POD spelling and Perl coding style. To enable those tests, set the
+ environment variable RRA_MAINTAINER_TESTS to a true value. For these
+ tests, the additional Perl modules:
+
+ Devel::Cover
+ Test::Perl::Critic
+ Test::Spelling
+
+ and their dependencies as well as a spell-checking program (several are
+ supported by Test::Spelling) are required. These modules are all
+ available from CPAN.
INSTALLATION
WARNING: Installation of this package will replace the Term::ANSIColor
- that came with Perl for Perl 5.6.0 or later. Term::ANSIColor that came
- with Perl. You may want to save a backup copy of the standard version
- first.
+ that came with Perl. You may want to save a backup copy of the standard
+ version first.
Follow the standard installation procedure for Perl modules, which is to
type the following commands:
@@ -82,7 +106,7 @@ INSTALLATION
install the module by hand, simply copy it into a directory named Term
in your Perl library directory.
-HOMEPAGE AND SOURCE REPOSITORY
+SUPPORT
The Term::ANSIColor web page at:
@@ -91,6 +115,18 @@ HOMEPAGE AND SOURCE REPOSITORY
will always have the current version of this package, the current
documentation, and pointers to any additional resources.
+ For bug tracking, this package uses the CPAN bug tracker at:
+
+ https://rt.cpan.org/Public/Dist/Display.html?Name=Term-ANSIColor
+
+ I welcome bug reports and patches for this package at rra@stanford.edu
+ or via the CPAN bug tracker. However, please be aware that I tend to be
+ extremely busy and work projects often take priority. I'll save your
+ mail and get to it as soon as I can, but it may take me a couple of
+ months.
+
+SOURCE REPOSITORY
+
Term::ANSIColor is maintained using Git. You can access the current
source by cloning the repository at:
@@ -100,6 +136,9 @@ HOMEPAGE AND SOURCE REPOSITORY
http://git.eyrie.org/?p=perl/ansicolor.git
+ When contributing modifications, patches (possibly generated by
+ git-format-patch) are preferred to Git pull requests.
+
THANKS
To Jon Lennox for looking at early versions of this module, providing
@@ -130,8 +169,9 @@ THANKS
To Daniel Lindsley for the information about what Mac OS X Terminal
supports.
- To Joe Smith for the test files that exercise a wide variety of VT100
- escape sequences including the ECMA-48 color control codes.
+ To Joe Smith for the original test files that exercise a wide variety of
+ VT100 escape sequences including the ECMA-48 color control codes. These
+ have been replaced by an example script, but they were very useful.
To James Bowlin for catching a bug in colored when $EACHLINE is set that
caused it to not color lines consisting solely of 0.
@@ -159,4 +199,52 @@ THANKS
non-array references with stringification defined, and providing a test
case.
+ To Kent Fredric for the request for italic and the report of a terminal
+ emulator that supports it.
+
+ To Simon Wistow for reporting that Term::ANSIColor was inadvertantly
+ clobbering $@ when generating constant subs.
+
+ To Kurt Starsinic for the initial implementation of 256-color support.
+
+ To Magnus Woldrich for Term::ExtendedColor and for research on which
+ emulators support 256 colors.
+
+ To Stephen Thirlwall for the initial implementation of custom color
+ support.
+
+ To BlueT - Matthew Lien - 練喆明 for quick testing of 4.00 and reporting
+ a problem with skipping one of the tests.
+
+ To David Cantrell for testing with Perl 5.6.2 and debugging why a test
+ case didn't work with its version of Exporter.
+
To Larry Wall, as always, for Perl.
+
+LICENSE
+
+ The Term-ANSIColor distribution as a whole is covered by the following
+ copyright statement and license:
+
+ Copyright 1996 Zenin
+ Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2008, 2009,
+ 2010, 2011, 2012, 2013 Russ Allbery <rra@stanford.edu>
+ Copyright 2012 Kurt Starsinic <kstarsinic@gmail.com>
+
+ This program is free software; you may redistribute it and/or modify
+ it under the same terms as Perl itself. This means that you may
+ choose between the two licenses that Perl is released under: the GNU
+ GPL and the Artistic License. Please see your Perl distribution for
+ the details and copies of the licenses.
+
+ PUSH/POP support submitted 2007 by openmethods.com voice solutions
+
+ All individual files without an explicit exception below are released
+ under this license. Some files may have additional copyright holders as
+ noted in those files. There is detailed information about the licensing
+ of each file in the LICENSE file in this distribution.
+
+ Some files in this distribution are individually released under
+ different licenses, all of which are compatible with the above general
+ package license but which may require preservation of additional
+ notices. All required notices are preserved in the LICENSE file.
diff --git a/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/aliases-func.t b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/aliases-func.t
new file mode 100644
index 00000000000..75a6031f642
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/aliases-func.t
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+#
+# Test setting color aliases via the function interface.
+#
+# Copyright 2012 Russ Allbery <rra@stanford.edu>
+#
+# This program is free software; you may redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+
+use Test::More tests => 23;
+
+# Load the module.
+BEGIN {
+ delete $ENV{ANSI_COLORS_ALIASES};
+ delete $ENV{ANSI_COLORS_DISABLED};
+ use_ok('Term::ANSIColor', qw(color colored colorvalid uncolor coloralias));
+}
+
+# Confirm our test alias doesn't exist.
+my $output = eval { color('alert') };
+ok(!$output, 'alert color not recognized');
+like(
+ $@,
+ qr{ \A Invalid [ ] attribute [ ] name [ ] alert [ ] at [ ] }xms,
+ '...with the right error'
+);
+
+# Basic alias functionality.
+is(coloralias('alert', 'red'), 'red', 'coloralias works and returns color');
+is(color('alert'), color('red'), 'alert now works as a color');
+is(colored('test', 'alert'), "\e[31mtest\e[0m", '..and colored works');
+ok(colorvalid('alert'), '...and alert is now a valid color');
+is(coloralias('alert'), 'red', 'coloralias with one arg returns value');
+
+# The alias can be changed.
+is(coloralias('alert', 'green'), 'green', 'changing the alias works');
+is(coloralias('alert'), 'green', '...and changed the mapping');
+is(color('alert'), color('green'), '...and now returns its new value');
+
+# uncolor ignores aliases.
+is_deeply([uncolor("\e[32m")], ['green'], 'uncolor ignores aliases');
+
+# Asking for the value of an unknown alias returns undef.
+is(coloralias('warning'), undef, 'coloralias on unknown alias returns undef');
+
+# Invalid alias names.
+$output = eval { coloralias('foo;bar', 'green') };
+ok(!$output, 'invalid alias name rejected');
+like(
+ $@,
+ qr{ \A Invalid [ ] alias [ ] name [ ] "foo;bar" [ ] at [ ] }xms,
+ '...with the right error'
+);
+$output = eval { coloralias(q{}, 'green') };
+ok(!$output, 'empty alias name rejected');
+like(
+ $@,
+ qr{ \A Invalid [ ] alias [ ] name [ ] "" [ ] at [ ] }xms,
+ '...with the right error'
+);
+
+# Aliasing an existing color.
+$output = eval { coloralias('red', 'green') };
+ok(!$output, 'aliasing an existing color rejected');
+like(
+ $@,
+ qr{ \A Cannot [ ] alias [ ] standard [ ] color [ ] "red" [ ] at [ ] }xms,
+ '...with the right error'
+);
+
+# Aliasing to a color that doesn't exist, or to another alias.
+$output = eval { coloralias('warning', 'chartreuse') };
+ok(!$output, 'aliasing to an unknown color rejected');
+like(
+ $@,
+ qr{ \A Invalid [ ] attribute [ ] name [ ] "chartreuse" [ ] at [ ] }xms,
+ '...with the right error'
+);
+$output = eval { coloralias('warning', 'alert') };
+ok(!$output, 'aliasing to an alias rejected');
+like(
+ $@,
+ qr{ \A Invalid [ ] attribute [ ] name [ ] "alert" [ ] at [ ] }xms,
+ '...with the right error'
+);
diff --git a/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/basic.t b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/basic.t
index c6fed3e54c4..10ae7431da9 100755
--- a/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/basic.t
+++ b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/basic.t
@@ -1,139 +1,370 @@
-#!/usr/bin/perl -Tw
+#!/usr/bin/perl
#
-# t/basic.t -- Test suite for the Term::ANSIColor Perl module.
+# Basic test suite for the Term::ANSIColor Perl module.
#
-# Copyright 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2009, 2010
+# Copyright 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2009, 2010, 2012
# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
use strict;
-use Test::More tests => 51;
+use warnings;
+use Test::More tests => 152;
+
+# Load the module.
BEGIN {
+ delete $ENV{ANSI_COLORS_ALIASES};
delete $ENV{ANSI_COLORS_DISABLED};
- use_ok ('Term::ANSIColor',
- qw/:pushpop color colored uncolor colorstrip colorvalid/);
+ use_ok('Term::ANSIColor',
+ qw(:pushpop color colored uncolor colorstrip colorvalid));
}
# Various basic tests.
-is (color ('blue on_green', 'bold'), "\e[34;42;1m", 'Simple attributes');
-is (colored ('testing', 'blue', 'bold'), "\e[34;1mtesting\e[0m", 'colored');
-is ((BLUE BOLD "testing"), "\e[34m\e[1mtesting", 'Constants');
+is(color('blue on_green', 'bold'), "\e[34;42;1m", 'Simple attributes');
+is(colored('testing', 'blue', 'bold'), "\e[34;1mtesting\e[0m", 'colored');
+is((BLUE BOLD 'testing'), "\e[34m\e[1mtesting", 'Constants');
+is(join(q{}, BLUE, BOLD, 'testing'),
+ "\e[34m\e[1mtesting", 'Constants with commas');
+is((BLUE 'test', 'ing'), "\e[34mtesting", 'Constants with multiple strings');
+
+# Test case variations on attributes.
+is(color('Blue BOLD', 'on_GReeN'), "\e[34;1;42m", 'Attribute case');
+
+# color should return undef if there were no attributes.
+is(color(), undef, 'color returns undef with no attributes');
+
+# Autoreset after the end of a command string.
$Term::ANSIColor::AUTORESET = 1;
-is ((BLUE BOLD "testing"), "\e[34m\e[1mtesting\e[0m\e[0m", 'AUTORESET');
+is((BLUE BOLD 'testing'), "\e[34m\e[1mtesting\e[0m\e[0m", 'AUTORESET');
+is((BLUE BOLD, 'te', 'st'), "\e[34m\e[1mtest\e[0m", 'AUTORESET with commas');
+$Term::ANSIColor::AUTORESET = 0;
+
+# Reset after each line terminator.
$Term::ANSIColor::EACHLINE = "\n";
-is (colored ("test\n\ntest", 'bold'), "\e[1mtest\e[0m\n\n\e[1mtest\e[0m",
- 'EACHLINE');
+is(colored("test\n\ntest", 'bold'),
+ "\e[1mtest\e[0m\n\n\e[1mtest\e[0m", 'EACHLINE');
$Term::ANSIColor::EACHLINE = "\r\n";
-is (colored ("test\ntest\r\r\n\r\n", 'bold'),
+is(
+ colored("test\ntest\r\r\n\r\n", 'bold'),
"\e[1mtest\ntest\r\e[0m\r\n\r\n",
- 'EACHLINE with multiple delimiters');
+ 'EACHLINE with multiple delimiters'
+);
$Term::ANSIColor::EACHLINE = "\n";
-is (colored (['bold', 'on_green'], "test\n", "\n", "test"),
+is(
+ colored(['bold', 'on_green'], "test\n", "\n", 'test'),
"\e[1;42mtest\e[0m\n\n\e[1;42mtest\e[0m",
- 'colored with reference to array');
-is_deeply ([ uncolor ('1;42', "\e[m", '', "\e[0m") ],
- [ qw/bold on_green clear/ ], 'uncolor');
+ 'colored with reference to array'
+);
+
+# Basic tests for uncolor.
+is_deeply([uncolor('1;42', "\e[m", q{}, "\e[0m")],
+ [qw(bold on_green clear)], 'uncolor');
+is_deeply([uncolor("\e[01m")], ['bold'], 'uncolor("\\e[01m")');
+is_deeply([uncolor("\e[m")], [], 'uncolor("\\e[m")');
+is_deeply([uncolor(q{})], [], 'uncolor("")');
# Several tests for ANSI_COLORS_DISABLED.
-$ENV{ANSI_COLORS_DISABLED} = 1;
-is (color ('blue'), '', 'color support for ANSI_COLORS_DISABLED');
-is (colored ('testing', 'blue', 'on_red'), 'testing',
- 'colored support for ANSI_COLORS_DISABLED');
-is ((GREEN 'testing'), 'testing', 'Constant support for ANSI_COLORS_DISABLED');
+local $ENV{ANSI_COLORS_DISABLED} = 1;
+is(color('blue'), q{}, 'color support for ANSI_COLORS_DISABLED');
+is(colored('testing', 'blue', 'on_red'),
+ 'testing', 'colored support for ANSI_COLORS_DISABLED');
+is((GREEN 'testing'), 'testing', 'Constant support for ANSI_COLORS_DISABLED');
+delete $ENV{ANSI_COLORS_DISABLED};
+
+# Earlier versions of Term::ANSIColor didn't support ANSI_COLORS_DISABLED if
+# the constant had been created before the environment variable was set. Test
+# all the ones we're going to use to get full test coverage.
+local $ENV{ANSI_COLORS_DISABLED} = 1;
+is((BLUE 'testing'), 'testing', 'ANSI_COLORS_DISABLED with existing constant');
+delete $ENV{ANSI_COLORS_DISABLED};
+
+# If ANSI_COLORS_DISABLED is set to a false value or the empty string, it
+# should not take effect.
+local $ENV{ANSI_COLORS_DISABLED} = 0;
+is(color('bold'), "\e[1m", 'ANSI_COLORS_DISABLED must be true');
+is((BOLD), "\e[1m", '...likewise for constants');
+local $ENV{ANSI_COLORS_DISABLED} = q{};
+is(color('bold'), "\e[1m", '...likewise when set to an empty string');
+is((BOLD), "\e[1m", '...likewise for constants');
delete $ENV{ANSI_COLORS_DISABLED};
# Make sure DARK is exported. This was omitted in versions prior to 1.07.
-is ((DARK "testing"), "\e[2mtesting\e[0m", 'DARK');
+is((DARK 'testing'), "\e[2mtesting", 'DARK');
# Check faint as a synonym for dark.
-is (colored ('test', 'faint'), "\e[2mtest\e[0m", 'colored supports faint');
-is ((FAINT "test"), "\e[2mtest\e[0m", '...and the FAINT constant works');
+is(colored('test', 'faint'), "\e[2mtest\e[0m", 'colored supports faint');
+is((FAINT 'test'), "\e[2mtest", '...and the FAINT constant works');
# Test bright color support.
-is (color ('bright_red'), "\e[91m", 'Bright red is supported');
-is ((BRIGHT_RED "test"), "\e[91mtest\e[0m", '...and as a constant');
-is (color ('on_bright_red'), "\e[101m", '...as is on bright red');
-is ((ON_BRIGHT_RED "test"), "\e[101mtest\e[0m", '...and as a constant');
+is(color('bright_red'), "\e[91m", 'Bright red is supported');
+is((BRIGHT_RED 'test'), "\e[91mtest", '...and as a constant');
+is(color('on_bright_red'), "\e[101m", '...as is on bright red');
+is((ON_BRIGHT_RED 'test'), "\e[101mtest", '...and as a constant');
-# Test colored with 0 and EACHLINE.
+# Test italic, which was added in 3.02.
+is(color('italic'), "\e[3m", 'Italic is supported');
+is((ITALIC 'test'), "\e[3mtest", '...and as a constant');
+
+# Test colored with 0 and EACHLINE. Regression test for an incorrect use of a
+# truth check.
$Term::ANSIColor::EACHLINE = "\n";
-is (colored ('0', 'blue', 'bold'), "\e[34;1m0\e[0m",
- 'colored with 0 and EACHLINE');
-is (colored ("0\n0\n\n", 'blue', 'bold'), "\e[34;1m0\e[0m\n\e[34;1m0\e[0m\n\n",
- 'colored with 0, EACHLINE, and multiple lines');
+is(colored('0', 'blue', 'bold'),
+ "\e[34;1m0\e[0m", 'colored with 0 and EACHLINE');
+is(
+ colored("0\n0\n\n", 'blue', 'bold'),
+ "\e[34;1m0\e[0m\n\e[34;1m0\e[0m\n\n",
+ 'colored with 0, EACHLINE, and multiple lines'
+);
# Test colored with the empty string and EACHLINE.
-is (colored ('', 'blue', 'bold'), '',
- 'colored with an empty string and EACHLINE');
+is(colored(q{}, 'blue', 'bold'), q{}, 'colored w/empty string and EACHLINE');
# Test push and pop support.
-$Term::ANSIColor::AUTORESET = 0;
-is ((PUSHCOLOR RED ON_GREEN "text"), "\e[31m\e[42mtext",
- 'PUSHCOLOR does not break constants');
-is ((PUSHCOLOR BLUE "text"), "\e[34mtext", '...and adding another level');
-is ((RESET BLUE "text"), "\e[0m\e[34mtext", '...and using reset');
-is ((POPCOLOR "text"), "\e[31m\e[42mtext", '...and POPCOLOR works');
-is ((LOCALCOLOR GREEN ON_BLUE "text"), "\e[32m\e[44mtext\e[31m\e[42m",
- 'LOCALCOLOR');
+is((PUSHCOLOR RED ON_GREEN 'text'),
+ "\e[31m\e[42mtext", 'PUSHCOLOR does not break constants');
+is((PUSHCOLOR BLUE 'text'), "\e[34mtext", '...and adding another level');
+is((RESET BLUE 'text'), "\e[0m\e[34mtext", '...and using reset');
+is((POPCOLOR 'text'), "\e[31m\e[42mtext", '...and POPCOLOR works');
+is((LOCALCOLOR GREEN ON_BLUE 'text'),
+ "\e[32m\e[44mtext\e[31m\e[42m", 'LOCALCOLOR');
$Term::ANSIColor::AUTOLOCAL = 1;
-is ((ON_BLUE "text"), "\e[44mtext\e[31m\e[42m", 'AUTOLOCAL');
+is((BLUE 'text'), "\e[34mtext\e[31m\e[42m", 'AUTOLOCAL');
+is((BLUE 'te', 'xt'), "\e[34mtext\e[31m\e[42m", 'AUTOLOCAL with commas');
+$Term::ANSIColor::AUTOLOCAL = 0;
+is((POPCOLOR 'text'), "\e[0mtext", 'POPCOLOR with empty stack');
+
+# If AUTOLOCAL and AUTORESET are both set, the former takes precedence.
+is((PUSHCOLOR RED ON_GREEN 'text'),
+ "\e[31m\e[42mtext", 'Push some colors onto the stack');
+$Term::ANSIColor::AUTOLOCAL = 1;
+$Term::ANSIColor::AUTORESET = 1;
+is((BLUE 'text'), "\e[34mtext\e[31m\e[42m", 'AUTOLOCAL overrides AUTORESET');
$Term::ANSIColor::AUTOLOCAL = 0;
-is ((POPCOLOR "text"), "\e[0mtext", 'POPCOLOR with empty stack');
+is((BLUE 'text'), "\e[34mtext\e[0m", 'AUTORESET works with stacked colors');
+is((POPCOLOR 'text'), "\e[0mtext\e[0m", 'POPCOLOR with empty stack');
+$Term::ANSIColor::AUTORESET = 0;
# Test push and pop support with the syntax from the original openmethods.com
# submission, which uses a different coding style.
-is (PUSHCOLOR (RED ON_GREEN), "\e[31m\e[42m",
- 'PUSHCOLOR with explict argument');
-is (PUSHCOLOR (BLUE), "\e[34m", '...and another explicit argument');
-is (RESET . BLUE . "text", "\e[0m\e[34mtext",
- '...and constants with concatenation');
-is (POPCOLOR . "text", "\e[31m\e[42mtext",
- '...and POPCOLOR works without an argument');
-is (LOCALCOLOR(GREEN . ON_BLUE . "text"), "\e[32m\e[44mtext\e[31m\e[42m",
- 'LOCALCOLOR with two arguments');
-is (POPCOLOR . "text", "\e[0mtext", 'POPCOLOR with no arguments');
+is(PUSHCOLOR(RED ON_GREEN), "\e[31m\e[42m", 'PUSHCOLOR with explict argument');
+is(PUSHCOLOR(BLUE), "\e[34m", '...and another explicit argument');
+is(
+ RESET . BLUE . 'text',
+ "\e[0m\e[34mtext",
+ '...and constants with concatenation'
+);
+is(
+ POPCOLOR . 'text',
+ "\e[31m\e[42mtext",
+ '...and POPCOLOR works without an argument'
+);
+is(
+ LOCALCOLOR(GREEN . ON_BLUE . 'text'),
+ "\e[32m\e[44mtext\e[31m\e[42m",
+ 'LOCALCOLOR with two arguments'
+);
+is(POPCOLOR . 'text', "\e[0mtext", 'POPCOLOR with no arguments');
+
+# Prior to Term::ANSIColor, PUSHCOLOR, unlike all other constants, didn't take
+# an array, so it could lose colors in some syntax.
+is(PUSHCOLOR(RED, ON_GREEN), "\e[31m\e[42m", 'PUSHCOLOR with two arguments');
+is(
+ LOCALCOLOR(GREEN, 'text'),
+ "\e[32mtext\e[31m\e[42m",
+ 'LOCALCOLOR with two arguments'
+);
+is(POPCOLOR(BOLD, 'text'), "\e[0m\e[1mtext", 'POPCOLOR with two arguments');
# Test colorstrip.
-is (colorstrip ("\e[1mBold \e[31;42mon green\e[0m\e[m"), 'Bold on green',
- 'Basic color stripping');
-is (colorstrip ("\e[1m", 'bold', "\e[0m"), 'bold',
- 'Color stripping across multiple strings');
-is_deeply ([ colorstrip ("\e[1m", 'bold', "\e[0m") ],
- [ '', 'bold', '' ], '...and in an array context');
-is (colorstrip ("\e[2cSome other code\e and stray [0m stuff"),
+is(
+ colorstrip("\e[1mBold \e[31;42mon green\e[0m\e[m"),
+ 'Bold on green',
+ 'Basic color stripping'
+);
+is(colorstrip("\e[1m", 'bold', "\e[0m"),
+ 'bold', 'Color stripping across multiple strings');
+is_deeply(
+ [colorstrip("\e[1m", 'bold', "\e[0m")],
+ [q{}, 'bold', q{}],
+ '...and in an array context'
+);
+is(colorstrip("foo\e[1m", 'bar', "baz\e[0m"),
+ 'foobarbaz', '...and proper joining in scalar context');
+is(
+ colorstrip("\e[2cSome other code\e and stray [0m stuff"),
"\e[2cSome other code\e and stray [0m stuff",
- 'colorstrip does not remove non-color stuff');
+ 'colorstrip does not remove non-color stuff'
+);
# Test colorvalid.
-is (colorvalid ("blue bold dark", "blink on_green"), 1,
- 'colorvalid returns true for valid attributes');
-is (colorvalid ("green orange"), undef,
- '...and false for invalid attributes');
-
-# Test error handling.
-my $output = eval { color 'chartreuse' };
-is ($output, undef, 'color on unknown color name fails');
-like ($@, qr/^Invalid attribute name chartreuse at /,
- '...with the right error');
-$output = eval { colored "Stuff", 'chartreuse' };
-is ($output, undef, 'colored on unknown color name fails');
-like ($@, qr/^Invalid attribute name chartreuse at /,
- '...with the right error');
+ok(
+ colorvalid('blue bold dark', 'blink on_green'),
+ 'colorvalid returns true for valid attributes'
+);
+ok(!colorvalid('green orange'), '...and false for invalid attributes');
+
+# Test error handling in color.
+my $output = eval { color('chartreuse') };
+is($output, undef, 'color on unknown color name fails');
+like(
+ $@,
+ qr{ \A Invalid [ ] attribute [ ] name [ ] chartreuse [ ] at [ ] }xms,
+ '...with the right error'
+);
+
+# Test error handling in colored.
+$output = eval { colored('Stuff', 'chartreuse') };
+is($output, undef, 'colored on unknown color name fails');
+like(
+ $@,
+ qr{ \A Invalid [ ] attribute [ ] name [ ] chartreuse [ ] at [ ] }xms,
+ '...with the right error'
+);
+
+# Test error handling in uncolor.
$output = eval { uncolor "\e[28m" };
-is ($output, undef, 'uncolor on unknown color code fails');
-like ($@, qr/^No name for escape sequence 28 at /, '...with the right error');
+is($output, undef, 'uncolor on unknown color code fails');
+like(
+ $@,
+ qr{ \A No [ ] name [ ] for [ ] escape [ ] sequence [ ] 28 [ ] at [ ] }xms,
+ '...with the right error'
+);
$output = eval { uncolor "\e[foom" };
-is ($output, undef, 'uncolor on bad escape sequence fails');
-like ($@, qr/^Bad escape sequence foo at /, '...with the right error');
+is($output, undef, 'uncolor on bad escape sequence fails');
+like(
+ $@,
+ qr{ \A Bad [ ] escape [ ] sequence [ ] foo [ ] at [ ] }xms,
+ '...with the right error'
+);
# Test error reporting when calling unrecognized Term::ANSIColor subs that go
# through AUTOLOAD.
-eval { Term::ANSIColor::RSET () };
-like ($@, qr/^undefined subroutine \&Term::ANSIColor::RSET called at /,
- 'Correct error from an attribute that is not defined');
-eval { Term::ANSIColor::reset () };
-like ($@, qr/^undefined subroutine \&Term::ANSIColor::reset called at /,
- 'Correct error from a lowercase attribute');
+## no critic (ErrorHandling::RequireCheckingReturnValueOfEval)
+ok(!eval { Term::ANSIColor::RSET() }, 'Running invalid constant');
+like(
+ $@,
+ qr{ \A undefined [ ] subroutine [ ] \&Term::ANSIColor::RSET [ ] called
+ [ ] at [ ] }xms,
+ 'Correct error from an attribute that is not defined'
+);
+ok(!eval { Term::ANSIColor::reset() }, 'Running invalid sub');
+like(
+ $@,
+ qr{ \A undefined [ ] subroutine [ ] \&Term::ANSIColor::reset [ ] called
+ [ ] at [ ] }xms,
+ 'Correct error from a lowercase attribute'
+);
+
+# Ensure that we still get proper error reporting for unknown constants when
+# when colors are disabled.
+local $ENV{ANSI_COLORS_DISABLED} = 1;
+eval { Term::ANSIColor::RSET() };
+like(
+ $@,
+ qr{ \A undefined [ ] subroutine [ ] \&Term::ANSIColor::RSET [ ] called
+ [ ] at [ ] }xms,
+ 'Correct error from undefined attribute with disabled colors'
+);
+delete $ENV{ANSI_COLORS_DISABLED};
+
+# These are somewhat redundant, but they ensure we test all the branches in
+# our generated constant subs so that we can use Test::Strict to check test
+# suite coverage.
+is((BOLD 't'), "\e[1mt", 'Basic constant works for BOLD');
+is((BLUE 't'), "\e[34mt", '...and for BLUE');
+is((GREEN 't'), "\e[32mt", '...and for GREEN');
+is((DARK 't'), "\e[2mt", '...and for DARK');
+is((FAINT 't'), "\e[2mt", '...and for FAINT');
+is((BRIGHT_RED 't'), "\e[91mt", '...and for BRIGHT_RED');
+is((ON_BRIGHT_RED 't'), "\e[101mt", '...and for ON_BRIGHT_RED');
+is((ITALIC 't'), "\e[3mt", '...and for ITALIC');
+is((RED 't'), "\e[31mt", '...and for RED');
+is((ON_GREEN 't'), "\e[42mt", '...and for ON_GREEN');
+is((ON_BLUE 't'), "\e[44mt", '...and for ON_BLUE');
+is((RESET 't'), "\e[0mt", '...and for RESET');
+
+# Do the same for disabled colors.
+local $ENV{ANSI_COLORS_DISABLED} = 1;
+is(BOLD, q{}, 'ANSI_COLORS_DISABLED works for BOLD');
+is(BLUE, q{}, '...and for BLUE');
+is(GREEN, q{}, '...and for GREEN');
+is(DARK, q{}, '...and for DARK');
+is(FAINT, q{}, '...and for FAINT');
+is(BRIGHT_RED, q{}, '...and for BRIGHT_RED');
+is(ON_BRIGHT_RED, q{}, '...and for ON_BRIGHT_RED');
+is(ITALIC, q{}, '...and for ITALIC');
+is(RED, q{}, '...and for RED');
+is(ON_GREEN, q{}, '...and for ON_GREEN');
+is(ON_BLUE, q{}, '...and for ON_BLUE');
+is(RESET, q{}, '...and for RESET');
+delete $ENV{ANSI_COLORS_DISABLED};
+
+# Do the same for AUTORESET.
+$Term::ANSIColor::AUTORESET = 1;
+is((BOLD 't'), "\e[1mt\e[0m", 'AUTORESET works for BOLD');
+is((BLUE 't'), "\e[34mt\e[0m", '...and for BLUE');
+is((GREEN 't'), "\e[32mt\e[0m", '...and for GREEN');
+is((DARK 't'), "\e[2mt\e[0m", '...and for DARK');
+is((FAINT 't'), "\e[2mt\e[0m", '...and for FAINT');
+is((BRIGHT_RED 't'), "\e[91mt\e[0m", '...and for BRIGHT_RED');
+is((ON_BRIGHT_RED 't'), "\e[101mt\e[0m", '...and for ON_BRIGHT_RED');
+is((ITALIC 't'), "\e[3mt\e[0m", '...and for ITALIC');
+is((RED 't'), "\e[31mt\e[0m", '...and for RED');
+is((ON_GREEN 't'), "\e[42mt\e[0m", '...and for ON_GREEN');
+is((ON_BLUE 't'), "\e[44mt\e[0m", '...and for ON_BLUE');
+is((RESET 't'), "\e[0mt\e[0m", '...and for RESET');
+is((BOLD), "\e[1m", 'AUTORESET without text for BOLD');
+is((BLUE), "\e[34m", '...and for BLUE');
+is((GREEN), "\e[32m", '...and for GREEN');
+is((DARK), "\e[2m", '...and for DARK');
+is((FAINT), "\e[2m", '...and for FAINT');
+is((BRIGHT_RED), "\e[91m", '...and for BRIGHT_RED');
+is((ON_BRIGHT_RED), "\e[101m", '...and for ON_BRIGHT_RED');
+is((ITALIC), "\e[3m", '...and for ITALIC');
+is((RED), "\e[31m", '...and for RED');
+is((ON_GREEN), "\e[42m", '...and for ON_GREEN');
+is((ON_BLUE), "\e[44m", '...and for ON_BLUE');
+is((RESET), "\e[0m", '...and for RESET');
+$Term::ANSIColor::AUTORESET = 0;
+
+# Do the same for AUTOLOCAL.
+$Term::ANSIColor::AUTOLOCAL = 1;
+is((BOLD 't'), "\e[1mt\e[0m", 'AUTOLOCAL works for BOLD');
+is((BLUE 't'), "\e[34mt\e[0m", '...and for BLUE');
+is((GREEN 't'), "\e[32mt\e[0m", '...and for GREEN');
+is((DARK 't'), "\e[2mt\e[0m", '...and for DARK');
+is((FAINT 't'), "\e[2mt\e[0m", '...and for FAINT');
+is((BRIGHT_RED 't'), "\e[91mt\e[0m", '...and for BRIGHT_RED');
+is((ON_BRIGHT_RED 't'), "\e[101mt\e[0m", '...and for ON_BRIGHT_RED');
+is((ITALIC 't'), "\e[3mt\e[0m", '...and for ITALIC');
+is((RED 't'), "\e[31mt\e[0m", '...and for RED');
+is((ON_GREEN 't'), "\e[42mt\e[0m", '...and for ON_GREEN');
+is((ON_BLUE 't'), "\e[44mt\e[0m", '...and for ON_BLUE');
+is((RESET 't'), "\e[0mt\e[0m", '...and for RESET');
+is((BOLD), "\e[1m", 'AUTOLOCAL without text for BOLD');
+is((BLUE), "\e[34m", '...and for BLUE');
+is((GREEN), "\e[32m", '...and for GREEN');
+is((DARK), "\e[2m", '...and for DARK');
+is((FAINT), "\e[2m", '...and for FAINT');
+is((BRIGHT_RED), "\e[91m", '...and for BRIGHT_RED');
+is((ON_BRIGHT_RED), "\e[101m", '...and for ON_BRIGHT_RED');
+is((ITALIC), "\e[3m", '...and for ITALIC');
+is((RED), "\e[31m", '...and for RED');
+is((ON_GREEN), "\e[42m", '...and for ON_GREEN');
+is((ON_BLUE), "\e[44m", '...and for ON_BLUE');
+is((RESET), "\e[0m", '...and for RESET');
+$Term::ANSIColor::AUTOLOCAL = 0;
+
+# Force an internal error inside the AUTOLOAD stub by creating an attribute
+# that will generate a syntax error. This is just for coverage purposes.
+# Disable warnings since our syntax error will spew otherwise.
+local $SIG{__WARN__} = sub { };
+$Term::ANSIColor::ATTRIBUTES{yellow} = q{'ERROR'};
+ok(!eval { YELLOW 't' }, 'Caught internal AUTOLOAD error');
+like(
+ $@,
+ qr{ \A failed [ ] to [ ] generate [ ] constant [ ] YELLOW: [ ] }xms,
+ '...with correct error message'
+);
diff --git a/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/basic256.t b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/basic256.t
new file mode 100644
index 00000000000..266db8747be
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/basic256.t
@@ -0,0 +1,129 @@
+#!/usr/bin/perl
+#
+# Tests for 256-color support.
+#
+# Copyright 2012 Kurt Starsinic <kstarsinic@gmail.com>
+# Copyright 2012, 2013 Russ Allbery <rra@stanford.edu>
+#
+# This program is free software; you may redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+
+use Test::More tests => 92;
+
+# Load the module.
+BEGIN {
+ delete $ENV{ANSI_COLORS_ALIASES};
+ delete $ENV{ANSI_COLORS_DISABLED};
+ use_ok('Term::ANSIColor', qw(:constants256 color uncolor colorvalid));
+}
+
+# Test basic 256-color codes.
+is(color('ansi0'), "\e[38;5;0m", 'ANSI 0');
+is(color('ansi15'), "\e[38;5;15m", 'ANSI 15');
+is(color('rgb000'), "\e[38;5;16m", 'RGB 000');
+is(color('rgb555'), "\e[38;5;231m", 'RGB 555');
+is(color('grey0'), "\e[38;5;232m", 'Grey 0');
+is(color('grey23'), "\e[38;5;255m", 'Grey 23');
+
+# Errors at boundary cases.
+for my $color (qw(ansi16 rgb600 rgb060 rgb006 rgb666 rgb999 rgb0000 grey24)) {
+ my $output = eval { color($color) };
+ is($output, undef, 'color on unknown color name fails');
+ like(
+ $@,
+ qr{ \A Invalid [ ] attribute [ ] name [ ] \Q$color\E [ ] at [ ] }xms,
+ '...with the right error'
+ );
+ ok(!colorvalid($color), '...and colorvalid says it is invalid');
+}
+
+# Check that various 256-color codes are valid.
+for my $color (qw(ansi0 ansi15 rgb000 rgb555 grey0 grey23)) {
+ ok(colorvalid($color), "Color $color is valid");
+}
+
+# Check uncolor with 256-color codes.
+is_deeply([uncolor('38;5;0')], ['ansi0'], 'uncolor of ansi0');
+is_deeply([uncolor("\e[38;5;231m")], ['rgb555'], 'uncolor of rgb555');
+is_deeply([uncolor("\e[48;05;001m")], ['on_ansi1'], 'uncolor with leading 0s');
+
+# An invalid 256-color code should report an error on the part that makes it
+# invalid. Check truncated codes (should report on the 38 or 48), codes with
+# an invalid second part (likewise), and codes with an invalid third part
+# (should report the complete code).
+#
+# This is a hash of test escape sequences to the invalid sequence that should
+# be reported.
+my %uncolor_tests = (
+ "\e[38m" => 38,
+ "\e[38;5m" => 38,
+ "\e[38;5;256m" => '38;5;256',
+ "\e[38;5;777m" => '38;5;777',
+ "\e[48m" => 48,
+ "\e[48;5m" => 48,
+ "\e[48;5;256m" => '48;5;256',
+ "\e[48;5;777m" => '48;5;777',
+);
+while (my ($escape, $invalid) = each %uncolor_tests) {
+ my $output = eval { uncolor($escape) };
+ is($output, undef, "uncolor on unknown color code \Q$escape\E fails");
+ like(
+ $@,
+ qr{ \A No [ ] name [ ] for [ ] escape [ ] sequence [ ] \Q$invalid\E
+ [ ] at [ ] }xms,
+ '...with the right error'
+ );
+}
+
+# Test all the variations of a few different constants.
+is((ANSI0 't'), "\e[38;5;0mt", 'Basic constant works for ANSI0');
+is((ANSI15 't'), "\e[38;5;15mt", '...and for ANSI15');
+is((RGB000 't'), "\e[38;5;16mt", '...and for RGB000');
+is((RGB555 't'), "\e[38;5;231mt", '...and for RGB555');
+is((GREY0 't'), "\e[38;5;232mt", '...and for GREY0');
+is((GREY23 't'), "\e[38;5;255mt", '...and for GREY23');
+
+# Do the same for disabled colors.
+local $ENV{ANSI_COLORS_DISABLED} = 1;
+is(ANSI0, q{}, 'ANSI_COLORS_DISABLED works for ANSI0');
+is(ANSI15, q{}, '...and for ANSI15');
+is(RGB000, q{}, '...and for RGB000');
+is(RGB555, q{}, '...and for RGB555');
+is(GREY0, q{}, '...and for GREY0');
+is(GREY23, q{}, '...and for GREY23');
+delete $ENV{ANSI_COLORS_DISABLED};
+
+# Do the same for AUTORESET.
+$Term::ANSIColor::AUTORESET = 1;
+is((ANSI0 't'), "\e[38;5;0mt\e[0m", 'AUTORESET works for ANSI0');
+is((ANSI15 't'), "\e[38;5;15mt\e[0m", '...and for ANSI15');
+is((RGB000 't'), "\e[38;5;16mt\e[0m", '...and for RGB000');
+is((RGB555 't'), "\e[38;5;231mt\e[0m", '...and for RGB555');
+is((GREY0 't'), "\e[38;5;232mt\e[0m", '...and for GREY0');
+is((GREY23 't'), "\e[38;5;255mt\e[0m", '...and for GREY23');
+is((ANSI0), "\e[38;5;0m", 'AUTORESET without text for ANSI0');
+is((ANSI15), "\e[38;5;15m", '...and for ANSI15');
+is((RGB000), "\e[38;5;16m", '...and for RGB000');
+is((RGB555), "\e[38;5;231m", '...and for RGB555');
+is((GREY0), "\e[38;5;232m", '...and for GREY0');
+is((GREY23), "\e[38;5;255m", '...and for GREY23');
+$Term::ANSIColor::AUTORESET = 0;
+
+# Do the same for AUTOLOCAL.
+$Term::ANSIColor::AUTOLOCAL = 1;
+is((ANSI0 't'), "\e[38;5;0mt\e[0m", 'AUTOLOCAL works for ANSI0');
+is((ANSI15 't'), "\e[38;5;15mt\e[0m", '...and for ANSI15');
+is((RGB000 't'), "\e[38;5;16mt\e[0m", '...and for RGB000');
+is((RGB555 't'), "\e[38;5;231mt\e[0m", '...and for RGB555');
+is((GREY0 't'), "\e[38;5;232mt\e[0m", '...and for GREY0');
+is((GREY23 't'), "\e[38;5;255mt\e[0m", '...and for GREY23');
+is((ANSI0), "\e[38;5;0m", 'AUTOLOCAL without text for ANSI0');
+is((ANSI15), "\e[38;5;15m", '...and for ANSI15');
+is((RGB000), "\e[38;5;16m", '...and for RGB000');
+is((RGB555), "\e[38;5;231m", '...and for RGB555');
+is((GREY0), "\e[38;5;232m", '...and for GREY0');
+is((GREY23), "\e[38;5;255m", '...and for GREY23');
+$Term::ANSIColor::AUTOLOCAL = 0;
diff --git a/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/eval.t b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/eval.t
new file mode 100644
index 00000000000..60e1aa7d18f
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/eval.t
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+#
+# Test suite for $@ preservation with constants.
+#
+# Earlier versions of Term::ANSIColor would clobber $@ during AUTOLOAD
+# processing and lose its value or leak $@ values to the calling program.
+# This is a regression test to ensure that this problem doesn't return.
+#
+# Copyright 2012 Russ Allbery <rra@stanford.edu>
+#
+# This program is free software; you may redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+
+use Test::More tests => 5;
+
+# We refer to $@ in the test descriptions.
+## no critic (ValuesAndExpressions::RequireInterpolationOfMetachars)
+
+# Load the module.
+BEGIN {
+ delete $ENV{ANSI_COLORS_ALIASES};
+ delete $ENV{ANSI_COLORS_DISABLED};
+ use_ok('Term::ANSIColor', qw(:constants));
+}
+
+# Ensure that using a constant doesn't leak anything in $@.
+is((BOLD 'test'), "\e[1mtest", 'BOLD works');
+is($@, q{}, '... and $@ is empty');
+
+# Store something in $@ and ensure it doesn't get clobbered.
+## no critic (BuiltinFunctions::ProhibitStringyEval)
+## no critic (ErrorHandling::RequireCheckingReturnValueOfEval)
+eval 'sub { syntax';
+is((BLINK 'test'), "\e[5mtest", 'BLINK works after eval failure');
+isnt($@, q{}, '... and $@ still contains something useful');
diff --git a/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/stringify.t b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/stringify.t
index a8eb44876f3..4833593048a 100644
--- a/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/stringify.t
+++ b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/stringify.t
@@ -1,6 +1,6 @@
-#!/usr/bin/perl -Tw
+#!/usr/bin/perl
#
-# t/stringify.t -- Test suite for stringify interaction.
+# Test suite for stringify interaction.
#
# Copyright 2011 Revilo Reegiles
# Copyright 2011 Russ Allbery <rra@stanford.edu>
@@ -8,31 +8,46 @@
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
+use strict;
+use warnings;
+
+use Test::More tests => 6;
+
# Create a dummy class that implements stringification.
+## no critic (Modules::ProhibitMultiplePackages)
package Test::Stringify;
use overload '""' => 'stringify';
-sub new { return bless {} }
+sub new { return bless {}, 'Test::Stringify' }
sub stringify { return "Foo Bar\n" }
-package main;
-use strict;
-use Test::More tests => 6;
+# Back to the main package.
+package main;
+# Load the module.
BEGIN {
+ delete $ENV{ANSI_COLORS_ALIASES};
delete $ENV{ANSI_COLORS_DISABLED};
- use_ok ('Term::ANSIColor',
- qw/:pushpop color colored uncolor colorstrip colorvalid/);
+ use_ok('Term::ANSIColor', qw(colored));
}
-is (colored ([ 'blue', 'bold' ], 'testing'), "\e[34;1mtesting\e[0m",
- 'colored with an array reference');
-is (colored ("ok\n", 'bold blue'), "\e[1;34mok\n\e[0m",
- 'colored with a following string');
+# Some basic tests of colored without stringification.
+my $result = colored(['blue', 'bold'], 'testing');
+is($result, "\e[34;1mtesting\e[0m", 'colored with an array reference');
+$result = colored("ok\n", 'bold blue');
+is($result, "\e[1;34mok\n\e[0m", 'colored with a following string');
+
+# Create a stringifiable object and repeat the tests.
my $test = Test::Stringify->new;
-is (colored ($test . "", 'bold blue'), "\e[1;34mFoo Bar\n\e[0m",
- 'colored with forced stringification');
-is (colored ($test, 'bold blue'), "\e[1;34mFoo Bar\n\e[0m",
- 'colored with a non-array reference');
+$result = colored($test . q{}, 'bold blue');
+is($result, "\e[1;34mFoo Bar\n\e[0m", 'colored with forced stringification');
+$result = colored($test, 'bold blue');
+is($result, "\e[1;34mFoo Bar\n\e[0m", 'colored with a non-array reference');
+
+# Create a hash reference and try stringifying it.
my %foo = (foo => 'bar');
-like (colored (\%foo, 'bold blue'), qr/\e\[1;34mHASH\(.*\)\e\[0m/,
- 'colored with a hash reference');
+$result = colored(\%foo, 'bold blue');
+like(
+ $result,
+ qr{ \e\[1;34m HASH\(.*\) \e\[0m }xms,
+ 'colored with a hash reference'
+);
diff --git a/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/taint.t b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/taint.t
new file mode 100644
index 00000000000..458e27f2e78
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Term-ANSIColor/t/taint.t
@@ -0,0 +1,39 @@
+#!/usr/bin/perl -T
+#
+# Check that Term::ANSIColor untaints generated constants.
+#
+# It's possible that the name of the constant function that we're calling
+# could be tained (such as by loading the name of the constant function from
+# an environment variable). Term::ANSIColor does the work to untaint it; be
+# sure that the taint flag is properly cleared.
+#
+# Copyright 2012 Russ Allbery <rra@stanford.edu>
+#
+# This program is free software; you may redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+
+use Test::More tests => 4;
+
+# Load the module.
+BEGIN {
+ delete $ENV{ANSI_COLORS_ALIASES};
+ delete $ENV{ANSI_COLORS_DISABLED};
+ use_ok('Term::ANSIColor', qw(:pushpop));
+}
+
+# Generate a tainted constant name. PATH is always tainted, and tainting is
+# sticky, so we can prepend the name to whatever PATH holds and then chop it
+# off again.
+my $constant = substr 'BOLD' . $ENV{PATH}, 0, length 'BOLD';
+
+# Using that as a constant should now work without any tainting problems.
+## no critic (TestingAndDebugging::ProhibitNoStrict)
+{
+ no strict 'refs';
+ is(&{$constant}(), "\e[1m", 'Constant subs are not tainted');
+ is(BOLD(), "\e[1m", '...and we can call the sub again');
+ ok(defined(&Term::ANSIColor::BOLD), '...and it is now defined');
+}
diff --git a/gnu/usr.bin/perl/cpan/Term-UI/lib/Term/UI.pm b/gnu/usr.bin/perl/cpan/Term-UI/lib/Term/UI.pm
index 34f13f8d513..fb335272c07 100644
--- a/gnu/usr.bin/perl/cpan/Term-UI/lib/Term/UI.pm
+++ b/gnu/usr.bin/perl/cpan/Term-UI/lib/Term/UI.pm
@@ -1,5 +1,7 @@
package Term::UI;
+use if $] > 5.017, 'deprecate';
+
use Carp;
use Params::Check qw[check allow];
use Term::ReadLine;
@@ -11,7 +13,7 @@ use strict;
BEGIN {
use vars qw[$VERSION $AUTOREPLY $VERBOSE $INVALID];
$VERBOSE = 1;
- $VERSION = '0.30';
+ $VERSION = '0.34';
$INVALID = loc('Invalid selection, please try again: ');
}
@@ -266,9 +268,14 @@ sub _tt_readline {
history( $print_me ) if $print_me;
- ### we might have to add a default value to the prompt, to
- ### show the user what will be picked by default:
- $prompt .= " [$prompt_add]: " if $prompt_add;
+ if ($prompt_add) {
+ ### we might have to add a default value to the prompt, to
+ ### show the user what will be picked by default:
+ $prompt .= " [$prompt_add]: " ;
+ }
+ else {
+ $prompt .= " : ";
+ }
### are we in autoreply mode?
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/Changes b/gnu/usr.bin/perl/cpan/Test-Harness/Changes
index c926bbe178f..88039e59698 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/Changes
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/Changes
@@ -1,5 +1,37 @@
Revision history for Test-Harness
+3.26 2013-01-16
+ - Renamed env.opts.t to env_opts.t (for VMS)
+ - Skipped some TAP::Formatter::HTML tests due to this bug: #82738
+
+3.26 2012-06-05
+ - Rereleased to fix CPAN permission problem. No functional change.
+
+3.24 2012-06-03
+ - RT #74393: corrected typo in M::B integration docs.
+ - RT #63473: fix typo.
+ - RT #49732: Attempt to load File::Glob::Windows to get correct
+ glob semantics on Win32.
+ - RT #47890: Don't use Win32::GetShortPathName.
+ - RT #64404: Ignore textness ('-T') of script when reading shebang.
+ - Handle the case where we don't know the wait status of the
+ test more gracefully.
+ - Make the test summary 'ok' line overrideable so that it can be
+ changed to a plugin to make the output of prove idempotent.
+ - Apply upstream patch:
+
+ http://perl5.git.perl.org/perl.git/commit \
+ /6359c64336d99060952232e7e300bd3c31afead8
+
+ In testargs.t in Test::Harness, don't run a world-writable file.
+
+ The test writes a file, then changes the mode, then executes it. The file needs
+ to be +x to be executable (on many platforms). The file will need to be +w to
+ be deletable on some platforms. But setting the file world writable just before
+ running it feels like a bad idea, given that the file's name is as predictable
+ as process IDs, as there's a race condition to break into the account running
+ perl's tests.
+
3.23 2011-02-20
- Merge in changes from core. Thanks BinGOs.
- Made SourceHandler understand that an executable binary file
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/MANIFEST b/gnu/usr.bin/perl/cpan/Test-Harness/MANIFEST
index ee35512034d..93e9ac84180 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/MANIFEST
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/MANIFEST
@@ -76,6 +76,7 @@ t/aggregator.t
t/bailout.t
t/base.t
t/callbacks.t
+t/compat/env_opts.t
t/compat/env.t
t/compat/failure.t
t/compat/inc-propagation.t
@@ -125,6 +126,7 @@ t/multiplexer.t
t/nested.t
t/nofork-mux.t
t/nofork.t
+t/nowarn.t
t/object.t
t/parse.t
t/parser-config.t
@@ -232,3 +234,4 @@ xt/author/pod.t
xt/author/stdin.t
xt/perls/harness_perl.t
xt/perls/sample-tests/perl_version
+META.json
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/MANIFEST.CUMMULATIVE b/gnu/usr.bin/perl/cpan/Test-Harness/MANIFEST.CUMMULATIVE
index c0e58b04361..bd2b6f03141 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/MANIFEST.CUMMULATIVE
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/MANIFEST.CUMMULATIVE
@@ -156,6 +156,7 @@ t/compat/040-test-harness-compat.t
t/compat/060-version.t
t/compat/base.t
t/compat/callback.t
+t/compat/env.opts.t
t/compat/env.t
t/compat/failure.t
t/compat/from_line.t
@@ -220,6 +221,7 @@ t/multiplexer.t
t/nested.t
t/nofork-mux.t
t/nofork.t
+t/nowarn.t
t/object.t
t/parse.t
t/parser-config.t
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/bin/prove b/gnu/usr.bin/perl/cpan/Test-Harness/bin/prove
index 7c2d5e6b1bf..e14ceba177f 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/bin/prove
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/bin/prove
@@ -144,7 +144,7 @@ If you need to make sure your diagnostics are displayed in the correct
order relative to test results you can use the C<--merge> option to
merge the test scripts' STDERR into their STDOUT.
-This guarantees that STDOUT (where the test results appear) and STDOUT
+This guarantees that STDOUT (where the test results appear) and STDERR
(where the diagnostics appear) will stay in sync. The harness will
display any diagnostics your tests emit on STDERR.
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove.pm
index 0e74fb4cacb..67c691bf93e 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove.pm
@@ -17,11 +17,11 @@ App::Prove - Implements the C<prove> command.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
@@ -218,6 +218,7 @@ sub process_args {
'D|dry' => \$self->{dry},
'ext=s@' => sub {
my ( $opt, $val ) = @_;
+
# Workaround for Getopt::Long 2.25 handling of
# multivalue options
push @{ $self->{extensions} ||= [] }, $val;
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State.pm
index 91275b0cddd..a9c38de63e9 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State.pm
@@ -26,11 +26,11 @@ App::Prove::State - State storage for the C<prove> command.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
@@ -77,11 +77,12 @@ sub new {
my %args = %{ shift || {} };
my $self = bless {
- select => [],
- seq => 1,
- store => delete $args{store},
- extensions => ( delete $args{extensions} || ['.t'] ),
- result_class => ( delete $args{result_class} || 'App::Prove::State::Result' ),
+ select => [],
+ seq => 1,
+ store => delete $args{store},
+ extensions => ( delete $args{extensions} || ['.t'] ),
+ result_class =>
+ ( delete $args{result_class} || 'App::Prove::State::Result' ),
}, $class;
$self->{_} = $self->result_class->new(
@@ -216,48 +217,70 @@ sub apply_switch {
my %handler = (
last => sub {
$self->_select(
+ limit => shift,
where => sub { $_->generation >= $last_gen },
order => sub { $_->sequence }
);
},
failed => sub {
$self->_select(
+ limit => shift,
where => sub { $_->result != 0 },
order => sub { -$_->result }
);
},
passed => sub {
- $self->_select( where => sub { $_->result == 0 } );
+ $self->_select(
+ limit => shift,
+ where => sub { $_->result == 0 }
+ );
},
all => sub {
- $self->_select();
+ $self->_select( limit => shift );
},
todo => sub {
$self->_select(
+ limit => shift,
where => sub { $_->num_todo != 0 },
order => sub { -$_->num_todo; }
);
},
hot => sub {
$self->_select(
+ limit => shift,
where => sub { defined $_->last_fail_time },
order => sub { $now - $_->last_fail_time }
);
},
slow => sub {
- $self->_select( order => sub { -$_->elapsed } );
+ $self->_select(
+ limit => shift,
+ order => sub { -$_->elapsed }
+ );
},
fast => sub {
- $self->_select( order => sub { $_->elapsed } );
+ $self->_select(
+ limit => shift,
+ order => sub { $_->elapsed }
+ );
},
new => sub {
- $self->_select( order => sub { -$_->mtime } );
+ $self->_select(
+ limit => shift,
+ order => sub { -$_->mtime }
+ );
},
old => sub {
- $self->_select( order => sub { $_->mtime } );
+ $self->_select(
+ limit => shift,
+ order => sub { $_->mtime }
+ );
},
fresh => sub {
- $self->_select( where => sub { $_->mtime >= $last_run_time } );
+ $self->_select(
+ limit => shift,
+ where => sub { $_->mtime >= $last_run_time }
+ );
},
save => sub {
$self->{should_save}++;
@@ -344,6 +367,10 @@ sub _query_clause {
} @got;
}
+ if ( my $limit = $clause->{limit} ) {
+ @got = splice @got, 0, $limit if @got > $limit;
+ }
+
return @got;
}
@@ -354,7 +381,10 @@ sub _get_raw_tests {
my @tests;
# Do globbing on Win32.
- @argv = map { glob "$_" } @argv if NEED_GLOB;
+ if (NEED_GLOB) {
+ eval "use File::Glob::Windows"; # [49732]
+ @argv = map { glob "$_" } @argv;
+ }
my $extensions = $self->{extensions};
for my $arg (@argv) {
@@ -368,7 +398,8 @@ sub _get_raw_tests {
sort -d $arg
? $recurse
? $self->_expand_dir_recursive( $arg, $extensions )
- : map { glob( File::Spec->catfile( $arg, "*$_" ) ) } @{$extensions}
+ : map { glob( File::Spec->catfile( $arg, "*$_" ) ) }
+ @{$extensions}
: $arg;
}
return @tests;
@@ -378,13 +409,13 @@ sub _expand_dir_recursive {
my ( $self, $dir, $extensions ) = @_;
my @tests;
- my $ext_string = join( '|', map { quotemeta } @{$extensions} );
+ my $ext_string = join( '|', map {quotemeta} @{$extensions} );
find(
{ follow => 1, #21938
follow_skip => 2,
wanted => sub {
- -f
+ -f
&& /(?:$ext_string)$/
&& push @tests => $File::Find::name;
}
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State/Result.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State/Result.pm
index 6fb3aa8a094..7bb4457efb8 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State/Result.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State/Result.pm
@@ -14,11 +14,11 @@ App::Prove::State::Result - Individual test suite results.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm
index 9aa3153a360..f626f1da774 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm
@@ -10,11 +10,11 @@ App::Prove::State::Result::Test - Individual test results.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Base.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Base.pm
index 9f91cad0663..ff8da427c8b 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Base.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Base.pm
@@ -14,11 +14,11 @@ and L<TAP::Harness>
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
use constant GOT_TIME_HIRES => do {
eval 'use Time::HiRes qw(time);';
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Base.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Base.pm
index 678ea2f0e3d..af7b3fca304 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Base.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Base.pm
@@ -25,13 +25,27 @@ BEGIN {
show_count => sub { shift; shift },
stdout => sub {
my ( $self, $ref ) = @_;
+
$self->_croak("option 'stdout' needs a filehandle")
- unless ( ref $ref || '' ) eq 'GLOB'
- or eval { $ref->can('print') };
+ unless $self->_is_filehandle($ref);
+
return $ref;
},
);
+ sub _is_filehandle {
+ my ( $self, $ref ) = @_;
+
+ return 0 if !defined $ref;
+
+ return 1 if ref $ref eq 'GLOB'; # lexical filehandle
+ return 1 if !ref $ref && ref \$ref eq 'GLOB'; # bare glob like *STDOUT
+
+ return 1 if eval { $ref->can('print') };
+
+ return 0;
+ }
+
my @getter_setters = qw(
_longest
_printed_summary_header
@@ -47,11 +61,11 @@ TAP::Formatter::Base - Base class for harness output delegates
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
@@ -375,9 +389,11 @@ sub _summary_test_header {
my $spaces = ' ' x ( $self->_longest - length $test );
$spaces = ' ' unless $spaces;
my $output = $self->_get_output_method($parser);
+ my $wait = $parser->wait;
+ defined $wait or $wait = '(none)';
$self->$output(
- sprintf "$test$spaces(Wstat: %d Tests: %d Failed: %d)\n",
- $parser->wait, $parser->tests_run, scalar $parser->failed
+ sprintf "$test$spaces(Wstat: %s Tests: %d Failed: %d)\n",
+ $wait, $parser->tests_run, scalar $parser->failed
);
$self->_printed_summary_header(1);
}
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Color.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Color.pm
index abf885b0f93..16d6f79d45f 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Color.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Color.pm
@@ -71,11 +71,11 @@ TAP::Formatter::Color - Run Perl test scripts with color
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Console.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Console.pm
index 8925e864736..0a9115f9e48 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Console.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Console.pm
@@ -14,11 +14,11 @@ TAP::Formatter::Console - Harness output delegate for default console output
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm
index b9cdc08eb00..f5b3dc12295 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm
@@ -28,11 +28,11 @@ TAP::Formatter::Console::Session - Harness output delegate for default console o
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
@@ -200,7 +200,7 @@ sub _closures {
}
}
- $formatter->_output("ok$time_report\n");
+ $formatter->_output( $self->_make_ok_line($time_report) );
}
},
};
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/File.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/File.pm
index aaad61b06b3..8d94a2cff7a 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/File.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/File.pm
@@ -15,11 +15,11 @@ TAP::Formatter::File - Harness output delegate for file output
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm
index e7d576ef904..9b61cab3670 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm
@@ -13,11 +13,11 @@ TAP::Formatter::File::Session - Harness output delegate for file output
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
@@ -103,7 +103,7 @@ sub close_test {
$formatter->_output( $pretty
. ( $self->{results} ? "\n" . $self->{results} : "" )
- . "ok$time_report\n" );
+ . $self->_make_ok_line($time_report) );
}
}
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Session.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Session.pm
index 5c0f57cca21..081ca9aec95 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Session.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Formatter/Session.pm
@@ -25,11 +25,11 @@ TAP::Formatter::Session - Abstract base class for harness output delegate
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 METHODS
@@ -180,4 +180,9 @@ sub _output_test_failure {
$formatter->_output("\n");
}
+sub _make_ok_line {
+ my ( $self, $suffix ) = @_;
+ return "ok$suffix\n";
+}
+
1;
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Harness.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Harness.pm
index 2c663ae0204..c60d1d98014 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Harness.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Harness.pm
@@ -19,11 +19,11 @@ TAP::Harness - Run test scripts with statistics
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
$ENV{HARNESS_ACTIVE} = 1;
$ENV{HARNESS_VERSION} = $VERSION;
@@ -888,7 +888,7 @@ parameter to C<new>, typically from your C<Build.PL>. For example:
extensions => ['.tap', '.txt'],
},
},
- formatter => 'TAP::Formatter::HTML',
+ formatter_class => 'TAP::Formatter::HTML',
},
build_requires => {
'Module::Build' => '0.30',
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Object.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Object.pm
index e933179c916..6d0bc308217 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Object.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Object.pm
@@ -9,11 +9,11 @@ TAP::Object - Base class that provides common functionality to all C<TAP::*> mod
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser.pm
index 55edb0dbd87..95909032418 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser.pm
@@ -24,11 +24,11 @@ TAP::Parser - Parse L<TAP|Test::Harness::TAP> output
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
my $DEFAULT_TAP_VERSION = 12;
my $MAX_TAP_VERSION = 13;
@@ -1884,7 +1884,7 @@ progress on your bug as we make changes.
Obviously, bugs which include patches are best. If you prefer, you can
patch against bleed by via anonymous checkout of the latest version:
- git clone git://github.com/AndyA/Test-Harness.git
+ git clone git://github.com/Perl-Toolchain-Gang/Test-Harness.git
=head1 COPYRIGHT & LICENSE
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm
index 822b0d7109e..d2836e552cb 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm
@@ -14,11 +14,11 @@ TAP::Parser::Aggregator - Aggregate TAP::Parser results
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm
index 0646d15d292..aba4c66086b 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Grammar.pm
@@ -15,11 +15,11 @@ TAP::Parser::Grammar - A grammar for the Test Anything Protocol.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm
index dd831995dcc..aebcb94a5f4 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator.pm
@@ -13,11 +13,11 @@ TAP::Parser::Iterator - Base class for TAP source iterators
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm
index 4a195849bc9..a3bb6621e7a 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm
@@ -13,11 +13,11 @@ TAP::Parser::Iterator::Array - Iterator for array-based TAP sources
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm
index f4332c94503..8f43f0a45bc 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm
@@ -17,11 +17,11 @@ TAP::Parser::Iterator::Process - Iterator for process-based TAP sources
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm
index 27d87fb9961..1d045744103 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm
@@ -13,11 +13,11 @@ TAP::Parser::Iterator::Stream - Iterator for filehandle-based TAP sources
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm
index a45f08550cb..cda251e8d72 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm
@@ -18,11 +18,11 @@ TAP::Parser::IteratorFactory - Figures out which SourceHandler objects to use fo
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm
index 934933cae39..a3a23dae757 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm
@@ -18,11 +18,11 @@ TAP::Parser::Multiplexer - Multiplex multiple TAP::Parsers
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result.pm
index c8120302f34..a0caebe24ca 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result.pm
@@ -26,11 +26,11 @@ TAP::Parser::Result - Base class for TAP::Parser output objects
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm
index e85d2a9a951..14bef6c9ade 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm
@@ -12,11 +12,11 @@ TAP::Parser::Result::Bailout - Bailout result token.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm
index 239a3eb22be..8a2cb934de5 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm
@@ -12,11 +12,11 @@ TAP::Parser::Result::Comment - Comment result token.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm
index 56ac06ac4ec..b515e61c99a 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm
@@ -12,11 +12,11 @@ TAP::Parser::Result::Plan - Plan result token.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm
index b2a9709c337..0416e3a81f1 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm
@@ -12,11 +12,11 @@ TAP::Parser::Result::Pragma - TAP pragma token.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm
index dd1ecd2edfa..b977f71d9ba 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm
@@ -14,11 +14,11 @@ TAP::Parser::Result::Test - Test result token.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm
index 861de5e29fa..0d0e58304b6 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm
@@ -14,11 +14,11 @@ TAP::Parser::Result::Unknown - Unknown result token.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm
index f20c7a1d0a8..2380c43349e 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm
@@ -12,11 +12,11 @@ TAP::Parser::Result::Version - TAP syntax version token.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm
index 28aae77a10e..f92b43a78c7 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm
@@ -12,11 +12,11 @@ TAP::Parser::Result::YAML - YAML result token.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm
index 37ec96b201b..729bf4fa6f4 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm
@@ -30,11 +30,11 @@ TAP::Parser::ResultFactory - Factory for creating TAP::Parser output objects
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head2 DESCRIPTION
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm
index 522194182b8..f7a3e46c67b 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm
@@ -12,11 +12,11 @@ TAP::Parser::Scheduler - Schedule tests during parallel testing
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm
index 18c1026a9dd..bac5883f48f 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm
@@ -10,11 +10,11 @@ TAP::Parser::Scheduler::Job - A single testing job.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm
index eb88b444011..21d4d67647a 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm
@@ -10,11 +10,11 @@ TAP::Parser::Scheduler::Spinner - A no-op job.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Source.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Source.pm
index a33fe6fdb62..6eda5db839d 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Source.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Source.pm
@@ -6,6 +6,8 @@ use vars qw($VERSION @ISA);
use TAP::Object ();
use File::Basename qw( fileparse );
+use constant BLK_SIZE => 512;
+
@ISA = qw(TAP::Object);
=head1 NAME
@@ -14,11 +16,11 @@ TAP::Parser::Source - a TAP source & meta data about it
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
@@ -288,8 +290,8 @@ sub assemble_meta {
$file->{lc_ext} = lc( $file->{ext} );
$file->{basename} .= $file->{ext} if $file->{ext};
- if ( $file->{text} and $file->{read} ) {
- eval { $file->{shebang} = $self->_read_shebang($$raw); };
+ if ( !$file->{is_dir} && $file->{read} ) {
+ eval { $file->{shebang} = $self->shebang($$raw); };
if ( my $e = $@ ) {
warn $e;
}
@@ -323,18 +325,14 @@ May be called as a class method
my %shebang_for;
sub _read_shebang {
- my ( $self, $file ) = @_;
- my $shebang;
- local *TEST;
- if ( open( TEST, $file ) ) {
- $shebang = <TEST>;
- chomp $shebang;
- close(TEST) or die "Can't close $file. $!\n";
- }
- else {
- die "Can't open $file. $!\n";
- }
- return $shebang;
+ my ( $class, $file ) = @_;
+ open my $fh, '<', $file or die "Can't read $file: $!\n";
+
+ # Might be a binary file - so read a fixed number of bytes.
+ my $got = read $fh, my $buf, BLK_SIZE;
+ defined $got or die "I/O error: $!\n";
+ return $1 if $buf =~ /(.*)/;
+ return;
}
sub shebang {
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm
index acacb0b417e..e8412ab309b 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm
@@ -14,11 +14,11 @@ TAP::Parser::SourceHandler - Base class for different TAP source handlers
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm
index 8537ba18bf5..f20e6514ab0 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm
@@ -17,11 +17,11 @@ TAP::Parser::SourceHandler::Executable - Stream output from an executable TAP so
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm
index ab08eb2922f..1faacebe513 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm
@@ -17,11 +17,11 @@ TAP::Parser::SourceHandler::File - Stream TAP from a text file.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm
index fc2e65461ca..f0043471250 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm
@@ -17,11 +17,11 @@ TAP::Parser::SourceHandler::Handle - Stream TAP from an IO::Handle or a GLOB.
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm
index 9721acf9f11..97eba8ebc17 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm
@@ -22,11 +22,11 @@ TAP::Parser::SourceHandler::Perl - Stream TAP from a Perl executable
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
@@ -80,6 +80,7 @@ sub can_handle {
if ( my $shebang = $file->{shebang} ) {
return 0.9 if $shebang =~ /^#!.*\bperl/;
+
# We favour Perl as the interpreter for any shebang to preserve
# previous semantics: we used to execute everything via Perl and
# relied on it to pass the shebang off to the appropriate
@@ -315,7 +316,7 @@ Gets the version of Perl currently running the test suite.
sub get_perl {
my $class = shift;
return $ENV{HARNESS_PERL} if defined $ENV{HARNESS_PERL};
- return Win32::GetShortPathName($^X) if IS_WIN32;
+ return qq["$^X"] if IS_WIN32 && ( $^X =~ /[^\w\.\/\\]/ );
return $^X;
}
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm
index 0d7a4851ee8..04b4b9c2da1 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm
@@ -17,11 +17,11 @@ TAP::Parser::SourceHandler::RawTAP - Stream output from raw TAP in a scalar/arra
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Utils.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Utils.pm
index 49a457a3783..2096b0ec4f1 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Utils.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/Utils.pm
@@ -13,11 +13,11 @@ TAP::Parser::Utils - Internal TAP::Parser utilities
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm
index 82968b42b1d..ac2c455ef3e 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm
@@ -6,7 +6,7 @@ use vars qw($VERSION @ISA);
use TAP::Object ();
@ISA = 'TAP::Object';
-$VERSION = '3.23';
+$VERSION = '3.26';
# TODO:
# Handle blessed object syntax
@@ -270,7 +270,7 @@ TAP::Parser::YAMLish::Reader - Read YAMLish data from iterator
=head1 VERSION
-Version 3.23
+Version 3.26
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm
index dda5f1873eb..9f20fb2c31b 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm
@@ -6,7 +6,7 @@ use vars qw($VERSION @ISA);
use TAP::Object ();
@ISA = 'TAP::Object';
-$VERSION = '3.23';
+$VERSION = '3.26';
my $ESCAPE_CHAR = qr{ [ \x00-\x1f \" ] }x;
my $ESCAPE_KEY = qr{ (?: ^\W ) | $ESCAPE_CHAR }x;
@@ -147,7 +147,7 @@ TAP::Parser::YAMLish::Writer - Write YAMLish data
=head1 VERSION
-Version 3.23
+Version 3.26
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/lib/Test/Harness.pm b/gnu/usr.bin/perl/cpan/Test-Harness/lib/Test/Harness.pm
index 53bc92a741c..fe11d1432ad 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/lib/Test/Harness.pm
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/lib/Test/Harness.pm
@@ -46,11 +46,11 @@ Test::Harness - Run Perl standard test scripts with statistics
=head1 VERSION
-Version 3.23
+Version 3.26
=cut
-$VERSION = '3.23';
+$VERSION = '3.26';
# Backwards compatibility for exportable variable names.
*verbose = *Verbose;
@@ -73,7 +73,7 @@ END {
$Verbose = $ENV{HARNESS_VERBOSE} || 0;
$Debug = $ENV{HARNESS_DEBUG} || 0;
-$Switches = '-w';
+$Switches = '';
$Columns = $ENV{HARNESS_COLUMNS} || $ENV{COLUMNS} || 80;
$Columns--; # Some shells have trouble with a full line of text.
$Timer = $ENV{HARNESS_TIMER} || 0;
@@ -238,6 +238,7 @@ sub _new_harness {
$args->{stdout} = $sub_args->{out}
if exists $sub_args->{out};
+ my $class = $ENV{HARNESS_SUBCLASS} || 'TAP::Harness';
if ( defined( my $env_opt = $ENV{HARNESS_OPTIONS} ) ) {
for my $opt ( split /:/, $env_opt ) {
if ( $opt =~ /^j(\d*)$/ ) {
@@ -246,13 +247,22 @@ sub _new_harness {
elsif ( $opt eq 'c' ) {
$args->{color} = 1;
}
+ elsif ( $opt =~ m/^f(.*)$/ ) {
+ my $fmt = $1;
+ $fmt =~ s/-/::/g;
+ $args->{formatter_class} = $fmt;
+ }
+ elsif ( $opt =~ m/^a(.*)$/ ) {
+ my $archive = $1;
+ $class = "TAP::Harness::Archive";
+ $args->{archive} = $archive;
+ }
else {
die "Unknown HARNESS_OPTIONS item: $opt\n";
}
}
}
- my $class = $ENV{HARNESS_SUBCLASS} || 'TAP::Harness';
return TAP::Harness->_construct( $class, $args );
}
@@ -535,6 +545,16 @@ Run <n> (default 9) parallel jobs.
Try to color output. See L<TAP::Formatter::Base/"new">.
+=item C<< a<file.tgz> >>
+
+Will use L<TAP::Harness::Archive> as the harness class, and save the TAP to
+C<file.tgz>
+
+=item C<< fPackage-With-Dashes >>
+
+Set the formatter_class of the harness being run. Since the C<HARNESS_OPTIONS>
+is seperated by C<:>, we use C<-> instead.
+
=back
Multiple options may be separated by colons:
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/t/compat/env_opts.t b/gnu/usr.bin/perl/cpan/Test-Harness/t/compat/env_opts.t
new file mode 100644
index 00000000000..62770dbb777
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/t/compat/env_opts.t
@@ -0,0 +1,53 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Test::More tests => 12;
+
+use Test::Harness;
+
+sub _has_module {
+ my $module = shift;
+ eval "use $module";
+ return $@ ? 0 : 1;
+}
+
+{
+
+ # Should add a fake home dir? to test the rc stuff..
+ local $ENV{HARNESS_OPTIONS} = 'j4:c';
+
+ ok my $harness = Test::Harness::_new_harness, 'made harness';
+ is( $harness->color, 1, "set color correctly" );
+ is( $harness->jobs, 4, "set jobs correctly" );
+}
+SKIP: {
+ skip 'Can\'t locate object method "color" via package "TAP::Formatter::HTML" (RT 82738)',4;
+ skip "requires TAP::Formatter::HTML", 4
+ unless _has_module('TAP::Formatter::HTML');
+
+ local $ENV{HARNESS_OPTIONS} = 'j4:c:fTAP-Formatter-HTML';
+
+ ok my $harness = Test::Harness::_new_harness, 'made harness';
+ is( $harness->color, 1, "set color correctly" );
+ is( $harness->jobs, 4, "set jobs correctly" );
+ is( $harness->formatter_class, "TAP::Formatter::HTML",
+ "correct formatter" );
+
+}
+SKIP: {
+ skip "requires TAP::Harness::Archive", 5
+ unless _has_module('TAP::Harness::Archive');
+
+ # Test archive
+ local $ENV{HARNESS_OPTIONS} = 'j4:c:a/archive.tgz';
+
+ ok my $harness = Test::Harness::_new_harness, 'made harness';
+ is( $harness->color, 1, "set color correctly" );
+ is( $harness->jobs, 4, "set jobs correctly" );
+ isa_ok( $harness, "TAP::Harness::Archive", "correct harness subclass" );
+
+ # XXX: this is nasty :(
+ is( $harness->{__archive_file}, "/archive.tgz", "correct archive found" );
+
+}
+
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/t/harness.t b/gnu/usr.bin/perl/cpan/Test-Harness/t/harness.t
index a5f0c47cac7..774f49b51bf 100755
--- a/gnu/usr.bin/perl/cpan/Test-Harness/t/harness.t
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/t/harness.t
@@ -16,7 +16,7 @@ my $HARNESS = 'TAP::Harness';
my $source_tests = 't/source_tests';
my $sample_tests = 't/sample-tests';
-plan tests => 128;
+plan tests => 132;
# note that this test will always pass when run through 'prove'
ok $ENV{HARNESS_ACTIVE}, 'HARNESS_ACTIVE env variable should be set';
@@ -876,57 +876,86 @@ sub _runtests {
# coverage tests for the stdout key of VALIDATON_FOR, used by _initialize() in the ctor
- # the coverage tests are
- # 1. ref $ref => false
- # 2. ref => ! GLOB and ref->can(print)
- # 3. ref $ref => GLOB
+ {
- # case 1
+ # ref $ref => false
+ my @die;
- my @die;
+ eval {
+ local $SIG{__DIE__} = sub { push @die, @_ };
- eval {
- local $SIG{__DIE__} = sub { push @die, @_ };
+ my $harness = TAP::Harness->new(
+ { stdout => bless {}, '0', # how evil is THAT !!!
+ }
+ );
+ };
+
+ is @die, 1, 'bad filehandle to stdout';
+ like pop @die, qr/option 'stdout' needs a filehandle/,
+ '... and we died as expected';
+ }
+
+ {
+
+ # ref => ! GLOB and ref->can(print)
+
+ package Printable;
+
+ sub new { return bless {}, shift }
+
+ sub print {return}
+
+ package main;
my $harness = TAP::Harness->new(
- { stdout => bless {}, '0', # how evil is THAT !!!
+ { stdout => Printable->new(),
}
);
- };
- is @die, 1, 'bad filehandle to stdout';
- like pop @die, qr/option 'stdout' needs a filehandle/,
- '... and we died as expected';
+ isa_ok $harness, 'TAP::Harness';
+ }
+
+ {
- # case 2
+ # ref $ref => GLOB
- @die = ();
+ my $harness = TAP::Harness->new(
+ { stdout => bless {}, 'GLOB', # again with the evil
+ }
+ );
- package Printable;
+ isa_ok $harness, 'TAP::Harness';
+ }
- sub new { return bless {}, shift }
+ {
- sub print {return}
+ # bare glob
- package main;
+ my $harness = TAP::Harness->new( { stdout => *STDOUT } );
- my $harness = TAP::Harness->new(
- { stdout => Printable->new(),
- }
- );
+ isa_ok $harness, 'TAP::Harness';
+ }
- isa_ok $harness, 'TAP::Harness';
+ {
- # case 3
+ # string filehandle
- @die = ();
+ my $string = '';
+ open my $fh, ">", \$string or die $!;
+ my $harness = TAP::Harness->new( { stdout => $fh } );
- $harness = TAP::Harness->new(
- { stdout => bless {}, 'GLOB', # again with the evil
- }
- );
+ isa_ok $harness, 'TAP::Harness';
+ }
- isa_ok $harness, 'TAP::Harness';
+ {
+
+ # lexical filehandle reference
+
+ my $string = '';
+ open my $fh, ">", \$string or die $!;
+ ok !eval { TAP::Harness->new( { stdout => \$fh } ); };
+ like $@, qr/^option 'stdout' needs a filehandle /;
+ }
}
{
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/t/nowarn.t b/gnu/usr.bin/perl/cpan/Test-Harness/t/nowarn.t
new file mode 100644
index 00000000000..5b6809f334c
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/t/nowarn.t
@@ -0,0 +1,10 @@
+#!perl
+
+use Test::More tests => 1;
+
+# Make sure that warnings are only enabled if we enable them
+# specifically.
+ok !$^W, 'warnings disabled';
+
+# vim:ts=2:sw=2:et:ft=perl
+
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/t/prove.t b/gnu/usr.bin/perl/cpan/Test-Harness/t/prove.t
index 16a36da3569..429aabc3188 100755
--- a/gnu/usr.bin/perl/cpan/Test-Harness/t/prove.t
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/t/prove.t
@@ -1086,10 +1086,10 @@ BEGIN { # START PLAN
},
# Specify an oddball extension
- { name => 'Switch --ext=.wango',
- switches => [ '--ext=.wango' ],
- expect => { extensions => ['.wango'] },
- runlog => [
+ { name => 'Switch --ext=.wango',
+ switches => ['--ext=.wango'],
+ expect => { extensions => ['.wango'] },
+ runlog => [
[ '_runtests',
{ verbosity => 0,
show_count => 1,
@@ -1100,10 +1100,10 @@ BEGIN { # START PLAN
},
# Handle multiple extensions
- { name => 'Switch --ext=.foo --ext=.bar',
+ { name => 'Switch --ext=.foo --ext=.bar',
switches => [ '--ext=.foo', '--ext=.bar', ],
- expect => { extensions => ['.foo','.bar'] },
- runlog => [
+ expect => { extensions => [ '.foo', '.bar' ] },
+ runlog => [
[ '_runtests',
{ verbosity => 0,
show_count => 1,
@@ -1157,10 +1157,10 @@ BEGIN { # START PLAN
sources => {
Perl => { foo => 'bar baz', avg => 0.278 },
MyCustom => {},
- File => {
+ File => {
extensions => [ '.txt', '.tmp' ],
- hash => { this => 'that', foo => 'bar'},
- sep => 'foo=bar',
+ hash => { this => 'that', foo => 'bar' },
+ sep => 'foo=bar',
},
},
},
@@ -1169,10 +1169,10 @@ BEGIN { # START PLAN
{ sources => {
Perl => { foo => 'bar baz', avg => 0.278 },
MyCustom => {},
- File => {
+ File => {
extensions => [ '.txt', '.tmp' ],
- hash => { this => 'that', foo => 'bar'},
- sep => 'foo=bar',
+ hash => { this => 'that', foo => 'bar' },
+ sep => 'foo=bar',
},
},
verbosity => 0,
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/t/source.t b/gnu/usr.bin/perl/cpan/Test-Harness/t/source.t
index 92bf4a1a06e..cdfd9e578f1 100755
--- a/gnu/usr.bin/perl/cpan/Test-Harness/t/source.t
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/t/source.t
@@ -170,10 +170,11 @@ sub ct($) {
is_dir => 0,
is_file => 1,
is_symlink => 0,
+
# Fix for bizarre -k bug in Strawberry Perl
- sticky => ( -k $test )[-1] ? 1 : 0,
- setgid => -g $test ? 1 : 0,
- setuid => -u $test ? 1 : 0,
+ sticky => ( -k $test )[-1] ? 1 : 0,
+ setgid => -g $test ? 1 : 0,
+ setuid => -u $test ? 1 : 0,
},
'... file->* set'
);
diff --git a/gnu/usr.bin/perl/cpan/Test-Harness/t/source_handler.t b/gnu/usr.bin/perl/cpan/Test-Harness/t/source_handler.t
index 77f675b0e17..4c9e70d7ce9 100644
--- a/gnu/usr.bin/perl/cpan/Test-Harness/t/source_handler.t
+++ b/gnu/usr.bin/perl/cpan/Test-Harness/t/source_handler.t
@@ -28,7 +28,7 @@ my $perl = $^X;
my %file = map { $_ => File::Spec->catfile( $dir, $_ ) }
qw( source source.1 source.bat source.pl source.sh source_args.sh source.t
- source.tap );
+ source.tap );
# Abstract base class tests
{
@@ -110,7 +110,7 @@ my %file = map { $_ => File::Spec->catfile( $dir, $_ ) }
},
{ name => $file{'source_args.sh'},
raw => { exec => [ $file{'source_args.sh'} ] },
- test_args => [ 'foo' ],
+ test_args => ['foo'],
skip => $HAS_SH && $HAS_ECHO ? 0 : 1,
skip_reason => 'no /bin/sh, /bin/echo',
iclass => 'TAP::Parser::Iterator::Process',
@@ -357,11 +357,11 @@ sub test_handler {
skip $test->{skip_reason}, $planned if $test->{skip};
my $source = TAP::Parser::Source->new;
- $source->raw( $test->{raw} ) if $test->{raw};
+ $source->raw( $test->{raw} ) if $test->{raw};
$source->test_args( $test->{test_args} ) if $test->{test_args};
- $source->meta( $test->{meta} ) if $test->{meta};
- $source->config( $test->{config} ) if $test->{config};
- $source->assemble_meta if $test->{assemble_meta};
+ $source->meta( $test->{meta} ) if $test->{meta};
+ $source->config( $test->{config} ) if $test->{config};
+ $source->assemble_meta if $test->{assemble_meta};
my $iterator = eval { $class->make_iterator($source) };
my $e = $@;
diff --git a/gnu/usr.bin/perl/cpan/Test/lib/Test.pm b/gnu/usr.bin/perl/cpan/Test/lib/Test.pm
index 6ab54ab5601..108bc10a167 100644
--- a/gnu/usr.bin/perl/cpan/Test/lib/Test.pm
+++ b/gnu/usr.bin/perl/cpan/Test/lib/Test.pm
@@ -20,7 +20,7 @@ sub _reset_globals {
$planned = 0;
}
-$VERSION = '1.25_02';
+$VERSION = '1.26';
require Exporter;
@ISA=('Exporter');
diff --git a/gnu/usr.bin/perl/cpan/Text-ParseWords/lib/Text/ParseWords.pm b/gnu/usr.bin/perl/cpan/Text-ParseWords/lib/Text/ParseWords.pm
index f1b5937904e..e8de4b6ab3f 100644
--- a/gnu/usr.bin/perl/cpan/Text-ParseWords/lib/Text/ParseWords.pm
+++ b/gnu/usr.bin/perl/cpan/Text-ParseWords/lib/Text/ParseWords.pm
@@ -2,7 +2,7 @@ package Text::ParseWords;
use strict;
require 5.006;
-our $VERSION = "3.27";
+our $VERSION = "3.28";
use Exporter;
@@ -274,6 +274,10 @@ Replacing C<quotewords('\s+', 0, q{this is...})>
with C<shellwords(q{this is...})>
is a simpler way to accomplish the same thing.
+=head1 SEE ALSO
+
+L<Text::CSV> - for parsing CSV files
+
=head1 AUTHORS
Maintainer: Alexandr Ciornii <alexchornyATgmail.com>.
diff --git a/gnu/usr.bin/perl/cpan/Text-Soundex/Changes b/gnu/usr.bin/perl/cpan/Text-Soundex/Changes
index 41c78b15fe1..364962b1920 100644
--- a/gnu/usr.bin/perl/cpan/Text-Soundex/Changes
+++ b/gnu/usr.bin/perl/cpan/Text-Soundex/Changes
@@ -1,5 +1,10 @@
Revision history for Perl extension Text::Soundex.
+3.04 Thu Feb 7 15:53:09 EST 2013 <rjbs@cpan.org>
+
+The module is going to be removed from the core distribution of perl, and will
+now warn (under warnings) if loaded from its installed-to-core location.
+
3.02 Sun Feb 02 02:54:00 EST 2003 <mark@mielke.cc>
The U8 type was over-used in 3.00 and 3.01. Now, "U8 *" is used only as a
diff --git a/gnu/usr.bin/perl/cpan/Text-Soundex/Soundex.pm b/gnu/usr.bin/perl/cpan/Text-Soundex/Soundex.pm
index 598b8a8fe94..83a55af43ec 100644
--- a/gnu/usr.bin/perl/cpan/Text-Soundex/Soundex.pm
+++ b/gnu/usr.bin/perl/cpan/Text-Soundex/Soundex.pm
@@ -19,7 +19,9 @@ use XSLoader ();
use strict;
-our $VERSION = '3.03_01';
+use if $] > 5.016, 'deprecate';
+
+our $VERSION = '3.04';
our @EXPORT_OK = qw(soundex soundex_unicode soundex_nara soundex_nara_unicode
$soundex_nocode);
our @EXPORT = qw(soundex soundex_nara $soundex_nocode);
diff --git a/gnu/usr.bin/perl/cpan/Text-Soundex/Soundex.xs b/gnu/usr.bin/perl/cpan/Text-Soundex/Soundex.xs
index 1496338452d..d14247132b1 100644
--- a/gnu/usr.bin/perl/cpan/Text-Soundex/Soundex.xs
+++ b/gnu/usr.bin/perl/cpan/Text-Soundex/Soundex.xs
@@ -79,7 +79,7 @@ static void sv_soundex_initialize (void)
sv_soundex_table['r'] = '6';
}
-static SV *sv_soundex (SV *source)
+static SV *sv_soundex (SV* source)
{
char *source_p;
char *source_end;
diff --git a/gnu/usr.bin/perl/cpan/Text-Tabs/CHANGELOG b/gnu/usr.bin/perl/cpan/Text-Tabs/CHANGELOG
index df839794c5e..e72f6db29ea 100644
--- a/gnu/usr.bin/perl/cpan/Text-Tabs/CHANGELOG
+++ b/gnu/usr.bin/perl/cpan/Text-Tabs/CHANGELOG
@@ -1,4 +1,22 @@
+= 2012/08/18
+
+Packaging fix.
+
+Minor documentation fixes.
+
+= 2012/08/15
+
+Minor fixes to test suites.
+
+Added back versions to support old versions of perl.
+
+= 2009/04/17
+
+Added support for Unicode combining characters to both
+Text::Tabs and Text::Wrap, plus a new test suite for each
+of these new functionalities. --tchrist
+
= 2009/03/05
Test improvements from Dave Mitchel sent back in 2005...
diff --git a/gnu/usr.bin/perl/cpan/Text-Tabs/lib/Text/Tabs.pm b/gnu/usr.bin/perl/cpan/Text-Tabs/lib/Text/Tabs.pm
index d3c06a08c10..34d81ab8b7f 100644
--- a/gnu/usr.bin/perl/cpan/Text-Tabs/lib/Text/Tabs.pm
+++ b/gnu/usr.bin/perl/cpan/Text-Tabs/lib/Text/Tabs.pm
@@ -6,16 +6,24 @@ require Exporter;
@ISA = (Exporter);
@EXPORT = qw(expand unexpand $tabstop);
-use vars qw($VERSION $tabstop $debug);
-$VERSION = 2009.0305;
+use vars qw($VERSION $SUBVERSION $tabstop $debug);
+$VERSION = 2012.0818;
+$SUBVERSION = 'modern';
use strict;
+use 5.010_000;
+
BEGIN {
$tabstop = 8;
$debug = 0;
}
+my $CHUNK = qr/\X/;
+
+sub _xlen (_) { scalar(() = $_[0] =~ /$CHUNK/g) }
+sub _xpos (_) { _xlen( substr( $_[0], 0, pos($_[0]) ) ) }
+
sub expand {
my @l;
my $pad;
@@ -24,10 +32,13 @@ sub expand {
for (split(/^/m, $_, -1)) {
my $offs = 0;
s{\t}{
- $pad = $tabstop - (pos() + $offs) % $tabstop;
+ # this works on both 5.10 and 5.11
+ $pad = $tabstop - (_xlen(${^PREMATCH}) + $offs) % $tabstop;
+ # this works on 5.11, but fails on 5.10
+ #XXX# $pad = $tabstop - (_xpos() + $offs) % $tabstop;
$offs += $pad - 1;
" " x $pad;
- }eg;
+ }peg;
$s .= $_;
}
push(@l, $s);
@@ -44,12 +55,12 @@ sub unexpand
my $line;
my @lines;
my $lastbit;
- my $ts_as_space = " "x$tabstop;
+ my $ts_as_space = " " x $tabstop;
for $x (@l) {
@lines = split("\n", $x, -1);
for $line (@lines) {
$line = expand($line);
- @e = split(/(.{$tabstop})/,$line,-1);
+ @e = split(/(${CHUNK}{$tabstop})/,$line,-1);
$lastbit = pop(@e);
$lastbit = ''
unless defined $lastbit;
@@ -91,7 +102,7 @@ sub expand
=head1 NAME
-Text::Tabs -- expand and unexpand tabs per the unix expand(1) and unexpand(1)
+Text::Tabs - expand and unexpand tabs like unix expand(1) and unexpand(1)
=head1 SYNOPSIS
@@ -103,11 +114,38 @@ Text::Tabs -- expand and unexpand tabs per the unix expand(1) and unexpand(1)
=head1 DESCRIPTION
-Text::Tabs does about what the unix utilities expand(1) and unexpand(1)
-do. Given a line with tabs in it, expand will replace the tabs with
+Text::Tabs does most of what the unix utilities expand(1) and unexpand(1)
+do. Given a line with tabs in it, C<expand> replaces those tabs with
the appropriate number of spaces. Given a line with or without tabs in
-it, unexpand will add tabs when it can save bytes by doing so (just
-like C<unexpand -a>). Invisible compression with plain ASCII!
+it, C<unexpand> adds tabs when it can save bytes by doing so,
+like the C<unexpand -a> command.
+
+Unlike the old unix utilities, this module correctly accounts for
+any Unicode combining characters (such as diacriticals) that may occur
+in each line for both expansion and unexpansion. These are overstrike
+characters that do not increment the logical position. Make sure
+you have the appropriate Unicode settings enabled.
+
+=head1 EXPORTS
+
+The following are exported:
+
+=over 4
+
+=item expand
+
+=item unexpand
+
+=item $tabstop
+
+The C<$tabstop> variable controls how many column positions apart each
+tabstop is. The default is 8.
+
+Please note that C<local($tabstop)> doesn't do the right thing and if you want
+to use C<local> to override C<$tabstop>, you need to use
+C<local($Text::Tabs::tabstop)>.
+
+=back
=head1 EXAMPLE
@@ -119,18 +157,36 @@ like C<unexpand -a>). Invisible compression with plain ASCII!
print unexpand $_;
}
-Instead of the C<expand> comand, use:
+Instead of the shell's C<expand> comand, use:
perl -MText::Tabs -n -e 'print expand $_'
-Instead of the C<unexpand -a> command, use:
+Instead of the shell's C<unexpand -a> command, use:
perl -MText::Tabs -n -e 'print unexpand $_'
+=head1 SUBVERSION
+
+This module comes in two flavors: one for modern perls (5.10 and above)
+and one for ancient obsolete perls. The version for modern perls has
+support for Unicode. The version for old perls does not. You can tell
+which version you have installed by looking at C<$Text::Tabs::SUBVERSION>:
+it is C<old> for obsolete perls and C<modern> for current perls.
+
+This man page is for the version for modern perls and so that's probably
+what you've got.
+
+=head1 BUGS
+
+Text::Tabs handles only tabs (C<"\t">) and combining characters (C</\pM/>). It doesn't
+count backwards for backspaces (C<"\t">), omit other non-printing control characters (C</\pC/>),
+or otherwise deal with any other zero-, half-, and full-width characters.
+
=head1 LICENSE
Copyright (C) 1996-2002,2005,2006 David Muir Sharnoff.
Copyright (C) 2005 Aristotle Pagaltzis
+Copyright (C) 2012 Google, Inc.
This module may be modified, used, copied, and redistributed at your own risk.
Publicly redistributed modified versions must use a different name.
diff --git a/gnu/usr.bin/perl/cpan/Text-Tabs/lib/Text/Wrap.pm b/gnu/usr.bin/perl/cpan/Text-Tabs/lib/Text/Wrap.pm
index de8620247f2..1b40ab4f2bd 100644
--- a/gnu/usr.bin/perl/cpan/Text-Tabs/lib/Text/Wrap.pm
+++ b/gnu/usr.bin/perl/cpan/Text-Tabs/lib/Text/Wrap.pm
@@ -7,16 +7,18 @@ require Exporter;
@EXPORT = qw(wrap fill);
@EXPORT_OK = qw($columns $break $huge);
-$VERSION = 2009.0305;
+$VERSION = 2012.0818;
+$SUBVERSION = 'modern';
-use vars qw($VERSION $columns $debug $break $huge $unexpand $tabstop
- $separator $separator2);
+use 5.010_000;
+
+use vars qw($VERSION $SUBVERSION $columns $debug $break $huge $unexpand $tabstop $separator $separator2);
use strict;
BEGIN {
$columns = 76; # <= screen width
$debug = 0;
- $break = '\s';
+ $break = '(?=\s)\X';
$huge = 'wrap'; # alternatively: 'die' or 'overflow'
$unexpand = 1;
$tabstop = 8;
@@ -24,6 +26,12 @@ BEGIN {
$separator2 = undef;
}
+my $CHUNK = qr/\X/;
+
+sub _xlen(_) { scalar(() = $_[0] =~ /$CHUNK/g) }
+
+sub _xpos(_) { _xlen( substr( $_[0], 0, pos($_[0]) ) ) }
+
use Text::Tabs qw(expand unexpand);
sub wrap
@@ -35,14 +43,14 @@ sub wrap
my $tail = pop(@t);
my $t = expand(join("", (map { /\s+\z/ ? ( $_ ) : ($_, ' ') } @t), $tail));
my $lead = $ip;
- my $nll = $columns - length(expand($xp)) - 1;
+ my $nll = $columns - _xlen(expand($xp)) - 1;
if ($nll <= 0 && $xp ne '') {
- my $nc = length(expand($xp)) + 2;
+ my $nc = _xlen(expand($xp)) + 2;
warnings::warnif "Increasing \$Text::Wrap::columns from $columns to $nc to accommodate length of subsequent tab";
$columns = $nc;
$nll = 1;
}
- my $ll = $columns - length(expand($ip)) - 1;
+ my $ll = $columns - _xlen(expand($ip)) - 1;
$ll = 0 if $ll < 0;
my $nl = "";
my $remainder = "";
@@ -51,17 +59,17 @@ sub wrap
pos($t) = 0;
while ($t !~ /\G(?:$break)*\Z/gc) {
- if ($t =~ /\G([^\n]{0,$ll})($break|\n+|\z)/xmgc) {
+ if ($t =~ /\G((?:(?=[^\n])\X){0,$ll})($break|\n+|\z)/xmgc) {
$r .= $unexpand
? unexpand($nl . $lead . $1)
: $nl . $lead . $1;
$remainder = $2;
- } elsif ($huge eq 'wrap' && $t =~ /\G([^\n]{$ll})/gc) {
+ } elsif ($huge eq 'wrap' && $t =~ /\G((?:(?!=[^\n])\X){$ll})/gc) {
$r .= $unexpand
? unexpand($nl . $lead . $1)
: $nl . $lead . $1;
$remainder = defined($separator2) ? $separator2 : $separator;
- } elsif ($huge eq 'overflow' && $t =~ /\G([^\n]*?)($break|\n+|\z)/xmgc) {
+ } elsif ($huge eq 'overflow' && $t =~ /\G((?:(?=[^\n])\X)*?)($break|\n+|\z)/xmgc) {
$r .= $unexpand
? unexpand($nl . $lead . $1)
: $nl . $lead . $1;
@@ -90,7 +98,9 @@ sub wrap
print "Finish up with '$lead'\n" if $debug;
- $r .= $lead . substr($t, pos($t), length($t)-pos($t))
+ my($opos) = pos($t);
+
+ $r .= $lead . substr($t, pos($t), length($t) - pos($t))
if pos($t) ne length($t);
print "-----------$r---------\n" if $debug;;
@@ -150,7 +160,7 @@ B<Example 2>
$huge = 'overflow';
B<Example 3>
-
+
use Text::Wrap;
$Text::Wrap::columns = 72;
@@ -165,14 +175,23 @@ all subsequent lines (C<$subsequent_tab>) independently. Please note:
C<$initial_tab> and C<$subsequent_tab> are the literal strings that will
be used: it is unlikely you would want to pass in a number.
-Text::Wrap::fill() is a simple multi-paragraph formatter. It formats
+C<Text::Wrap::fill()> is a simple multi-paragraph formatter. It formats
each paragraph separately and then joins them together when it's done. It
will destroy any whitespace in the original text. It breaks text into
-paragraphs by looking for whitespace after a newline. In other respects
+paragraphs by looking for whitespace after a newline. In other respects,
it acts like wrap().
+C<wrap()> compresses trailing whitespace into one newline, and C<fill()>
+deletes all trailing whitespace.
+
Both C<wrap()> and C<fill()> return a single string.
+Unlike the old Unix fmt(1) utility, this module correctly accounts for
+any Unicode combining characters (such as diacriticals) that may occur
+in each line for both expansion and unexpansion. These are overstrike
+characters that do not increment the logical position. Make sure
+you have the appropriate Unicode settings enabled.
+
=head1 OVERRIDES
C<Text::Wrap::wrap()> has a number of variables that control its behavior.
@@ -250,16 +269,31 @@ Result:
"This is a bit of|text that forms a|normal book-style|paragraph"
+=head1 SUBVERSION
+
+This module comes in two flavors: one for modern perls (5.10 and above)
+and one for ancient obsolete perls. The version for modern perls has
+support for Unicode. The version for old perls does not. You can tell
+which version you have installed by looking at C<$Text::Wrap::SUBVERSION>:
+it is C<old> for obsolete perls and C<modern> for current perls.
+
+This man page is for the version for modern perls and so that's probably
+what you've got.
+
=head1 SEE ALSO
-For wrapping multi-byte characters: L<Text::WrapI18N>.
-For more detailed controls: L<Text::Format>.
+For correct handling of East Asian half- and full-width characters,
+see L<Text::WrapI18N>. For more detailed controls: L<Text::Format>.
+
+=head1 AUTHOR
+
+David Muir Sharnoff <cpan@dave.sharnoff.org> with help from Tim Pierce and
+many many others.
=head1 LICENSE
-David Muir Sharnoff <muir@idiom.org> with help from Tim Pierce and
-many many others. Copyright (C) 1996-2009 David Muir Sharnoff.
-This module may be modified, used, copied, and redistributed at
-your own risk. Publicly redistributed versions that are modified
-must use a different name.
+Copyright (C) 1996-2009 David Muir Sharnoff.
+Copyright (C) 2012 Google, Inc.
+This module may be modified, used, copied, and redistributed at your own risk.
+Publicly redistributed modified versions must use a different name.
diff --git a/gnu/usr.bin/perl/cpan/Text-Tabs/t/Jacobson.t b/gnu/usr.bin/perl/cpan/Text-Tabs/t/Jacobson.t
index d2727e46294..b3465f6cac8 100755
--- a/gnu/usr.bin/perl/cpan/Text-Tabs/t/Jacobson.t
+++ b/gnu/usr.bin/perl/cpan/Text-Tabs/t/Jacobson.t
@@ -8,7 +8,7 @@ print "1..1\n";
$huge='overflow';
$Text::Wrap::columns=9;
-$break="(?<=[,.])";
+$break=".(?<=[,.])";
eval {
$a=$a=wrap('','',
"mmmm,n,ooo,ppp.qqqq.rrrrr,sssssssssssss,ttttttttt,uu,vvv wwwwwwwww####\n");
diff --git a/gnu/usr.bin/perl/cpan/Text-Tabs/t/Jacobson2.t b/gnu/usr.bin/perl/cpan/Text-Tabs/t/Jacobson2.t
index b7b06faf828..1bce9ed9e87 100755
--- a/gnu/usr.bin/perl/cpan/Text-Tabs/t/Jacobson2.t
+++ b/gnu/usr.bin/perl/cpan/Text-Tabs/t/Jacobson2.t
@@ -6,7 +6,7 @@ print "1..1\n";
$huge='overflow';
$Text::Wrap::columns=9;
-$break="(?<=[,.])";
+$break=".(?<=[,.])";
eval {
$a=$a=wrap('','',
"mmmm,n,ooo,ppp.qqqq.rrrrr.adsljasdf\nlasjdflajsdflajsdfljasdfl\nlasjdflasjdflasf,sssssssssssss,ttttttttt,uu,vvv wwwwwwwww####\n");
diff --git a/gnu/usr.bin/perl/cpan/Text-Tabs/t/Tabs-ElCid.t b/gnu/usr.bin/perl/cpan/Text-Tabs/t/Tabs-ElCid.t
new file mode 100644
index 00000000000..32572e76610
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Text-Tabs/t/Tabs-ElCid.t
@@ -0,0 +1,177 @@
+#!perl
+
+BEGIN {
+ if ($] <= 5.010) {
+ print "1..0 # skip this test requires perl 5.010 or greater\n";
+ exit 0;
+ }
+}
+
+use strict;
+use warnings "FATAL" => "all";
+use Text::Tabs;
+
+require bytes;
+
+our $Errors = 0;
+
+our @DATA = (
+ [ # DATALINE #0
+ sub { die "there is no line 0" }
+ ],
+ { # DATALINE #1
+ OLD => { BYTES => 71, CHARS => 59, CHUNKS => 47, WORDS => 7, TABS => 3 },
+ NEW => { BYTES => 92, CHARS => 80, CHUNKS => 68, WORDS => 7, TABS => 0 },
+ },
+ { # DATALINE #2
+ OLD => { BYTES => 45, CHARS => 43, CHUNKS => 41, WORDS => 6, TABS => 3 },
+ NEW => { BYTES => 65, CHARS => 63, CHUNKS => 61, WORDS => 6, TABS => 0 },
+ },
+ { # DATALINE #3
+ OLD => { BYTES => 47, CHARS => 45, CHUNKS => 43, WORDS => 7, TABS => 3 },
+ NEW => { BYTES => 64, CHARS => 62, CHUNKS => 60, WORDS => 7, TABS => 0 },
+ },
+ { # DATALINE #4
+ OLD => { BYTES => 49, CHARS => 47, CHUNKS => 45, WORDS => 7, TABS => 3 },
+ NEW => { BYTES => 69, CHARS => 67, CHUNKS => 65, WORDS => 7, TABS => 0 },
+ },
+ { # DATALINE #5
+ OLD => { BYTES => 83, CHARS => 62, CHUNKS => 41, WORDS => 7, TABS => 4 },
+ NEW => { BYTES => 105, CHARS => 84, CHUNKS => 63, WORDS => 7, TABS => 0 },
+ },
+ { # DATALINE #6
+ OLD => { BYTES => 55, CHARS => 53, CHUNKS => 51, WORDS => 8, TABS => 3 },
+ NEW => { BYTES => 76, CHARS => 74, CHUNKS => 72, WORDS => 8, TABS => 0 },
+ },
+ { # DATALINE #7
+ OLD => { BYTES => 42, CHARS => 40, CHUNKS => 38, WORDS => 7, TABS => 4 },
+ NEW => { BYTES => 65, CHARS => 63, CHUNKS => 61, WORDS => 7, TABS => 0 },
+ },
+ { # DATALINE #8
+ OLD => { BYTES => 80, CHARS => 65, CHUNKS => 52, WORDS => 9, TABS => 1 },
+ NEW => { BYTES => 87, CHARS => 72, CHUNKS => 59, WORDS => 9, TABS => 0 },
+ },
+ { # DATALINE #9
+ OLD => { BYTES => 43, CHARS => 41, CHUNKS => 41, WORDS => 7, TABS => 3 },
+ NEW => { BYTES => 63, CHARS => 61, CHUNKS => 61, WORDS => 7, TABS => 0 },
+ },
+);
+
+$| = 1;
+my $numtests = @DATA;
+print "1..$numtests\n";
+
+$Errors += table_ok();
+check_data();
+
+if ($Errors) {
+ die "Error count: $Errors";
+} else {
+ exit(0);
+}
+
+
+# first some sanity checks
+sub table_ok {
+ my $bad = 0;
+ for my $i ( 1 .. $#DATA ) {
+
+ if ( $DATA[$i]{NEW}{TABS} ) {
+ warn "new data should have no tabs in it at table line $i";
+ $bad++;
+ }
+
+ if ( $DATA[$i]{NEW}{WORDS} != $DATA[$i]{OLD}{WORDS} ) {
+ warn "word count shouldn't change upon tab expansion at table line $i";
+ $bad++;
+ }
+ }
+ print $bad ? "not " : "", "ok 1\n";
+ return $bad;
+}
+
+sub check($$$$) {
+ die "expected 4 arguments" unless @_ == 4;
+ my ($found, $index, $version, $item) = @_;
+ my $expected = $DATA[$index]{$version}{$item};
+ return 1 if $found == $expected;
+ warn sprintf("%s line %d expected %d %s, found %d instead",
+ ucfirst(lc($version)),
+ $index, $expected,
+ lc($item),
+ $found);
+ return 0;
+}
+
+sub check_data {
+
+ local $_;
+ binmode(DATA, ":utf8") || die "can't binmode DATA to utf8: $!";
+ while ( <DATA> ) {
+
+ my $bad = 0;
+
+ if ($. > $#DATA) {
+ die "too many lines of data";
+ }
+
+ $DATA[$.]{OLD}{DATA} = $_;
+
+ my($char_count, $byte_count, $chunk_count, $word_count, $tab_count);
+
+ $byte_count = bytes::length($_);
+ $char_count = length();
+ $chunk_count = () = /\X/g;
+ $word_count = () = /(?:(?=\pL)\X)+/g;
+ $tab_count = y/\t//;
+
+ $bad++ unless check($byte_count, $., "OLD", "BYTES");
+ $bad++ unless check($char_count, $., "OLD", "CHARS");
+ $bad++ unless check($chunk_count, $., "OLD", "CHUNKS");
+ $bad++ unless check($word_count, $., "OLD", "WORDS");
+ $bad++ unless check($tab_count, $., "OLD", "TABS");
+
+ $_ = expand($_);
+
+ $DATA[$.]{NEW}{DATA} = $_;
+
+ $byte_count = bytes::length($_);
+ $char_count = length();
+ $chunk_count = () = /\X/g;
+ $word_count = () = /(?:(?=\pL)\X)+/g;
+ $tab_count = y/\t//;
+
+ $bad++ unless check($byte_count, $., "NEW", "BYTES");
+ $bad++ unless check($char_count, $., "NEW", "CHARS");
+ $bad++ unless check($chunk_count, $., "NEW", "CHUNKS");
+ $bad++ unless check($word_count, $., "NEW", "WORDS");
+ $bad++ unless check($tab_count, $., "NEW", "TABS");
+
+ $_ = unexpand($_);
+
+ if ($_ ne $DATA[$.]{OLD}{DATA}) {
+ warn "expand/unexpand round-trip equivalency failed at line $.";
+ warn sprintf(" Expected:\n%s\n%v02x\n But got:\n%s\n%v02x\n",
+ ( $DATA[$.]{OLD}{DATA} ) x 2, ($_) x 2 );
+ $bad++;
+ }
+
+ my $num = $. + 1;
+ print $bad ? "not " : "", "ok $num\n";
+ $Errors += $bad;
+
+ }
+
+}
+
+
+__DATA__
+ De los sos o̲j̲o̲s̲ tan fuertemientre l̲l̲o̲r̲a̲n̲d̲o̲,
+ tornava la cabeça i estaÌvalos catando.
+ Vio puertas abiertas e uços sin cañados,
+ alcaÌndaras vaÌzias sin pielles e sin mantos
+ e s̲i̲n̲ f̲a̲l̲c̲o̲n̲e̲s̲ e s̲i̲n̲ a̲d̲t̲o̲r̲e̲s̲ mudados.
+ SospiroÌ mio Çid, ca mucho avie grandes cuidados.
+ FabloÌ mio Çid bien e tan mesurado:
+ “grado a tiÌ, s̳e̳ñ̳o̳r̳ p̳a̳d̳r̳e̳, que estaÌs en alto!
+ Esto me an buelto mis enemigos malos.â€
diff --git a/gnu/usr.bin/perl/cpan/Text-Tabs/t/Wrap-JLB.t b/gnu/usr.bin/perl/cpan/Text-Tabs/t/Wrap-JLB.t
new file mode 100644
index 00000000000..67163e2a701
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Text-Tabs/t/Wrap-JLB.t
@@ -0,0 +1,152 @@
+#!perl
+
+BEGIN {
+ if ($] <= 5.010) {
+ print "1..0 # skip this test requires perl 5.010 or greater\n";
+ exit 0;
+ }
+}
+
+use strict;
+use warnings "FATAL" => "all";
+use Text::Wrap;
+
+$Text::Wrap::columns = 72;
+
+require bytes;
+
+our $Errors = 0;
+
+$/ = q();
+binmode(DATA, ":utf8") || die "can't binmode DATA to utf8: $!";
+
+our @DATA = (
+ [ # paragraph 0
+ sub { die "there is no paragraph 0" }
+ ],
+ { # paragraph 1
+ OLD => { BYTES => 44, CHARS => 44, CHUNKS => 44, WORDS => 7, TABS => 3, LINES => 4 },
+ NEW => { BYTES => 44, CHARS => 44, CHUNKS => 44, WORDS => 7, TABS => 3, LINES => 4 },
+ },
+ { # paragraph 2
+ OLD => { BYTES => 1766, CHARS => 1635, CHUNKS => 1507, WORDS => 275, TABS => 0, LINES => 2 },
+ NEW => { BYTES => 1766, CHARS => 1635, CHUNKS => 1507, WORDS => 275, TABS => 0, LINES => 24 },
+ },
+ { # paragraph 3
+ OLD => { BYTES => 157, CHARS => 148, CHUNKS => 139, WORDS => 27, TABS => 0, LINES => 2 },
+ NEW => { BYTES => 157, CHARS => 148, CHUNKS => 139, WORDS => 27, TABS => 0, LINES => 3 },
+ },
+ { # paragraph 4
+ OLD => { BYTES => 30, CHARS => 25, CHUNKS => 24, WORDS => 3, TABS => 4, LINES => 1 },
+ NEW => { BYTES => 30, CHARS => 25, CHUNKS => 24, WORDS => 3, TABS => 4, LINES => 1 },
+ },
+);
+
+$| = 1;
+my $numtests = @DATA;
+print "1..$numtests\n";
+
+$Errors += table_ok();
+check_data();
+
+if ($Errors) {
+ die "Error count: $Errors";
+} else {
+ exit(0);
+}
+
+
+# first some sanity checks
+sub table_ok {
+ my $bad = 0;
+ for my $i ( 1 .. $#DATA ) {
+ for my $item (qw[ bytes chars chunks words tabs ]) {
+ if ( $DATA[$i]{NEW}{uc $item} != $DATA[$i]{OLD}{uc $item} ) {
+ warn "\u$item count shouldn't change upon wrapping at table paragraph $i";
+ $bad++;
+ }
+ }
+ }
+ print $bad ? "not " : "", "ok 1\n";
+ return $bad;
+}
+
+sub check($$$$) {
+ die "expected 4 arguments" unless @_ == 4;
+ my ($found, $index, $version, $item) = @_;
+ my $expected = $DATA[$index]{$version}{$item};
+ return 1 if $found == $expected;
+ warn sprintf("%s paragraph %d expected %d %s, found %d instead",
+ ucfirst(lc($version)),
+ $index, $expected,
+ lc($item),
+ $found);
+ return 0;
+}
+
+sub check_data {
+
+ binmode(DATA, ":utf8") || die "can't binmode DATA to utf8: $!";
+ local $_;
+ while ( <DATA> ) {
+
+ my $bad = 0;
+
+ if ($. > $#DATA) {
+ die "too many paragraphs of data";
+ }
+
+ $DATA[$.]{OLD}{DATA} = $_;
+
+ my($char_count, $byte_count, $chunk_count, $word_count, $tab_count, $line_count);
+
+ $byte_count = bytes::length($_);
+ $char_count = length();
+ $chunk_count = () = /\X/g;
+ $word_count = () = /(?:(?=\pL)\X)+/g;
+ $tab_count = y/\t//;
+ $line_count = y/\n//;
+
+ $bad++ unless check($byte_count, $., "OLD", "BYTES");
+ $bad++ unless check($char_count, $., "OLD", "CHARS");
+ $bad++ unless check($chunk_count, $., "OLD", "CHUNKS");
+ $bad++ unless check($word_count, $., "OLD", "WORDS");
+ $bad++ unless check($tab_count, $., "OLD", "TABS");
+ $bad++ unless check($line_count, $., "OLD", "LINES");
+
+ my $nl = "\n" x chomp;
+
+ $_ = wrap("", "", $_) . $nl;
+
+ $byte_count = bytes::length($_);
+ $char_count = length();
+ $chunk_count = () = /\X/g;
+ $word_count = () = /(?:(?=\pL)\X)+/g;
+ $tab_count = y/\t//;
+ $line_count = y/\n//;
+
+ $bad++ unless check($byte_count, $., "NEW", "BYTES");
+ $bad++ unless check($char_count, $., "NEW", "CHARS");
+ $bad++ unless check($chunk_count, $., "NEW", "CHUNKS");
+ $bad++ unless check($word_count, $., "NEW", "WORDS");
+ $bad++ unless check($tab_count, $., "NEW", "TABS");
+ $bad++ unless check($line_count, $., "NEW", "LINES");
+
+ my $num = $. + 1;
+ print $bad ? "not " : "", "ok $num\n";
+ $Errors += $bad;
+
+ }
+
+}
+
+__DATA__
+ Los dos reyes
+ y
+ Los dos laberintos
+
+Cuentan los hombres dignos de fe (pero A̳l̳aÌ̳ sabe maÌs) que en los primeros diÌas hubo un rey de l̲a̲s̲ i̲s̲l̲a̲s̲ d̲e̲ B̲a̲b̲i̲l̲o̲n̲i̲a̲ que congregoÌ a sus arquitectos y magos y les mandoÌ construir un laberinto tan perplejo y sutil que los varones maÌs prudentes no se aventuraban a entrar, y los que entraban se perdiÌan. Esa obra era un escaÌndalo, porque la confusioÌn y la maravilla son operaciones propias de D̳i̳o̳s̳ y no de los hombres. Con el andar del tiempo vino a su corte un rey de los aÌrabes, y el rey de B̲a̲b̲i̲l̲o̲n̲i̲a̲ (para hacer burla de la simplicidad de su hueÌsped) lo hizo penetrar en el laberinto, donde vagoÌ afrentado y confundido hasta la declinacioÌn de la tarde. Entonces imploroÌ socorro divino y dio con la puerta. Sus labios no profirieron queja ninguna, pero le dijo al rey de B̲a̲b̲i̲l̲o̲n̲i̲a̲ que eÌl en A̲r̲a̲b̲i̲a̲ teniÌa otro laberinto y que, si D̳i̳o̳s̳ era servido, se lo dariÌa a conocer alguÌn diÌa. Luego regresoÌ a A̲r̲a̲b̲i̲a̲, juntoÌ sus capitanes y sus alcaides y estragoÌ l̲o̲s̲ r̲e̲i̲n̲o̲s̲ d̲e̲ B̲a̲b̲i̲l̲o̲n̲i̲a̲ con tan venturosa fortuna que derriboÌ sus castillos, rompioÌ sus gentes e hizo cautivo al mismo rey. Lo amarroÌ encima de un camello veloz y lo llevoÌ al desierto. Cabalgaron tres diÌas, y le dijo: «¡Oh, rey del tiempo y substancia y cifra del siglo!, en B̲a̲b̲i̲l̲o̲n̲i̲a̲ me quisiste perder en un laberinto de bronce con muchas escaleras, puertas y muros; ahora e̳l̳ P̳o̳d̳e̳r̳o̳s̳o̳ ha tenido a bien que te muestre el miÌo, donde no hay escaleras que subir, ni puertas que forzar, ni fatigosas galeriÌas que recorrer, ni muros que te veden el paso.»
+
+Luego le desatoÌ las ligaduras y lo abandonoÌ en mitad del desierto, donde murioÌ de hambre y de sed. La gloria sea con A̳q̳u̳eÌ̳l̳ que no muere.
+
+ ——Jorge LuiÌs Borges
diff --git a/gnu/usr.bin/perl/cpan/Time-HiRes/Makefile.PL b/gnu/usr.bin/perl/cpan/Time-HiRes/Makefile.PL
index 6f6a7900775..f27439e8000 100644
--- a/gnu/usr.bin/perl/cpan/Time-HiRes/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Time-HiRes/Makefile.PL
@@ -115,7 +115,8 @@ __EOD__
}
}
- my $ccflags = $Config{'ccflags'} . ' ' . "-I$COREincdir";
+ my $ccflags = $Config{'ccflags'} . ' ' . "-I$COREincdir"
+ . ' -DPERL_NO_INLINE_FUNCTIONS';
if ($^O eq 'VMS') {
$cccmd = "$Config{'cc'} /include=($COREincdir) $tmp.c";
diff --git a/gnu/usr.bin/perl/cpan/Time-Local/lib/Time/Local.pm b/gnu/usr.bin/perl/cpan/Time-Local/lib/Time/Local.pm
index 0e9c4ac467c..ecdedef3dd8 100644
--- a/gnu/usr.bin/perl/cpan/Time-Local/lib/Time/Local.pm
+++ b/gnu/usr.bin/perl/cpan/Time-Local/lib/Time/Local.pm
@@ -6,7 +6,7 @@ use Config;
use strict;
use vars qw( $VERSION @ISA @EXPORT @EXPORT_OK );
-$VERSION = '1.2000';
+$VERSION = '1.2300';
@ISA = qw( Exporter );
@EXPORT = qw( timegm timelocal );
@@ -109,14 +109,14 @@ sub timegm {
if $month > 11
or $month < 0;
- my $md = $MonthDays[$month];
+ my $md = $MonthDays[$month];
++$md
if $month == 1 && _is_leap_year( $year + 1900 );
croak "Day '$mday' out of range 1..$md" if $mday > $md or $mday < 1;
croak "Hour '$hour' out of range 0..23" if $hour > 23 or $hour < 0;
croak "Minute '$min' out of range 0..59" if $min > 59 or $min < 0;
- croak "Second '$sec' out of range 0..59" if $sec > 59 or $sec < 0;
+ croak "Second '$sec' out of range 0..59" if $sec >= 60 or $sec < 0;
}
my $days = _daygm( undef, undef, undef, $mday, $month, $year );
@@ -125,10 +125,10 @@ sub timegm {
my $msg = '';
$msg .= "Day too big - $days > $MaxDay\n" if $days > $MaxDay;
- $year += 1900;
+ $year += 1900;
$msg .= "Cannot handle date ($sec, $min, $hour, $mday, $month, $year)";
- croak $msg;
+ croak $msg;
}
return $sec
@@ -201,8 +201,8 @@ Time::Local - efficiently compute time from local and GMT time
=head1 SYNOPSIS
- $time = timelocal($sec,$min,$hour,$mday,$mon,$year);
- $time = timegm($sec,$min,$hour,$mday,$mon,$year);
+ $time = timelocal( $sec, $min, $hour, $mday, $mon, $year );
+ $time = timegm( $sec, $min, $hour, $mday, $mon, $year );
=head1 DESCRIPTION
@@ -239,7 +239,7 @@ C<timegm_nocheck()>. These variants must be explicitly imported.
use Time::Local 'timelocal_nocheck';
# The 365th day of 1999
- print scalar localtime timelocal_nocheck 0,0,0,365,0,99;
+ print scalar localtime timelocal_nocheck( 0, 0, 0, 365, 0, 99 );
If you supply data which is not valid (month 27, second 1,000) the
results will be unpredictable (so don't do that).
diff --git a/gnu/usr.bin/perl/cpan/Time-Local/t/Local.t b/gnu/usr.bin/perl/cpan/Time-Local/t/Local.t
index 521cac0bb33..472e71a2df9 100644
--- a/gnu/usr.bin/perl/cpan/Time-Local/t/Local.t
+++ b/gnu/usr.bin/perl/cpan/Time-Local/t/Local.t
@@ -1,9 +1,10 @@
#!./perl
use strict;
+use warnings;
use Config;
-use Test::More;
+use Test::More 0.88;
use Time::Local;
# Set up time values to test
@@ -24,6 +25,9 @@ my @time =
# so it is commented out. The end of the Epoch for a 32-bit signed
# implementation of time_t should be Jan 19, 2038 03:14:07 UTC.
# [2038, 1, 17, 23, 59, 59], # last full day in any tz
+
+ [2010, 10, 12, 14, 13, 12.1],
+ [2010, 10, 12, 14, 13, 59.1],
);
# more than 2**31 time_t - requires a 64bit safe localtime/gmtime
@@ -74,14 +78,6 @@ if ($^O eq 'VMS') {
my $epoch_is_64 = eval { $Config{ivsize} == 8 && ( gmtime 2**40 )[5] == 34912 };
-my $tests = (@time * 12);
-$tests += @neg_time * 12;
-$tests += @bad_time;
-$tests += @years;
-$tests += 21;
-
-plan tests => $tests;
-
for (@time, @neg_time) {
my($year, $mon, $mday, $hour, $min, $sec) = @$_;
$year -= 1900;
@@ -100,7 +96,7 @@ for (@time, @neg_time) {
my($s,$m,$h,$D,$M,$Y) = localtime($time);
- is($s, $sec, "timelocal second for @$_");
+ is($s, int($sec), "timelocal second for @$_");
is($m, $min, "timelocal minute for @$_");
is($h, $hour, "timelocal hour for @$_");
is($D, $mday, "timelocal day for @$_");
@@ -116,7 +112,7 @@ for (@time, @neg_time) {
my($s,$m,$h,$D,$M,$Y) = gmtime($time);
- is($s, $sec, "timegm second for @$_");
+ is($s, int($sec), "timegm second for @$_");
is($m, $min, "timegm minute for @$_");
is($h, $hour, "timegm hour for @$_");
is($D, $mday, "timegm day for @$_");
@@ -265,3 +261,5 @@ SKIP:
is( ( localtime( timelocal( 0, 0, 2, 27, 2, 2005 ) ) )[2], 2,
'hour is 2 when given 2:00 AM on Europe/London date change' );
}
+
+done_testing();
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Changes b/gnu/usr.bin/perl/cpan/Unicode-Collate/Changes
index 9d0534e6c94..9fc2dc26c4c 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Changes
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Changes
@@ -1,5 +1,63 @@
Revision history for Perl module Unicode::Collate.
+0.97 Sat Dec 22 14:25:50 2012
+ - bug fix: XS of 0.96 (if UCA_Version is 9 to 11) wrongly referred to
+ DUCET for completely ignorable characters, even though the collator
+ don't use DUCET.
+ - separated t/notable.t from t/test.t.
+
+0.96 Sat Dec 15 19:43:10 2012
+ - special noncharancter tailorings ('highestFFFF' and 'minimalFFFE')
+ * some locales are modified for 'highestFFFF': as, bn, fa, gu, hi, hy,
+ kn, kok, mr, or, sa, si, si_dict, ta, te, th, ur.
+ - U::C::Locale now allows 'entry' to add or override mappings.
+ - bug fix: using DUCET through XS wrongly prevented completely ignorable
+ characters from tailoring.
+ - modified tests: default.t, loc_as.t, loc_bn.t, loc_fa.t, loc_gu.t,
+ loc_hi.t, loc_hy.t, loc_kn.t, loc_kok.t, loc_mr.t, loc_or.t, loc_sa.t,
+ loc_si.t, loc_sidt.t, loc_ta.t, loc_te.t, loc_test.t, loc_th.t,
+ loc_ur.t, nonchar.t in t.
+
+0.95 Sat Dec 8 15:11:09 2012
+ - U::C::Locale newly supports locales: bs_Cyrl, ee.
+ - updated to CLDR 21: uk.
+ - updated to CLDR 22: th, to.
+ - added loc_bscy.t, loc_ee.t in t.
+ - modified tests: loc_th.t, loc_to.t, loc_uk.t in t.
+
+0.94 Fri Nov 23 18:45:53 2012
+ - U::C::Locale newly supports locale: zh__zhuyin.
+ - added Unicode::Collate::CJK::Zhuyin for zh__zhuyin.
+ - doc: added CAVEAT to CJK/Stroke.pm
+ - modified tests: loc_cjk.t, loc_cjkc.t in t.
+ - added cjk_zy.t, loc_zhzy.t in t.
+
+0.93 Sun Nov 18 18:13:42 2012
+ - DUCET is updated (for Unicode 6.2.0) as Collate/allkeys.txt.
+ ! Please notice that allkeys.txt will be overwritten if you have had
+ other allkeys.txt already.
+ - The default UCA_Version is 26.
+ - Locale/*.pl (except fr.pl) and CJK/Korean.pm are updated.
+ - modified tests: loc_es.t, loc_estr.t, version.t in t.
+
+0.92 Wed Nov 14 20:58:19 2012
+ - fix: index() etc. with preprocess/normalization should be always croaked.
+ - doc: referred to the latest UTS #10 and updated its section numbers.
+ - supported the identical level (see 'identical' in POD).
+ - Now UCA_Version 26 (for Unicode 6.2.0) is supported.
+ * But the default UCA_Version is still 24.
+ - added ident.t in t.
+ - modified tests: cjkrange.t, compatui.t, hangtype.t, index.t,
+ overcjk0.t, overcjk1.t, test.t, view.t in t.
+
+0.91 Sun Nov 4 17:00:20 2012
+ - XSUB: use PERL_NO_GET_CONTEXT (see perlguts)
+ (see [rt.cpan.org #80313])
+
+0.90 Sun Sep 23 10:42:26 2012
+ - perl 5.11.0 or later: Install to 'site' instead of 'perl'
+ (see [rt.cpan.org #79800])
+
0.89 Sat Mar 10 20:19:11 2012
- avoid "use Test".
@@ -302,7 +360,7 @@ Revision history for Perl module Unicode::Collate.
0.29 Mon Oct 13 12:18:23 2003
- now UCA Version 11 (but no functionality is different from Version 9).
- - supported hangul_terminator.
+ - supported 'hangul_terminator'.
- fix: Base_Unicode_Version falsely returns Perl's Unicode version.
C4 in UTS #10 requires UTS's Unicode version.
- For variable weighting, 'variable' is recommended
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate.pm b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate.pm
index da362c15b43..4a1c837ab6e 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate.pm
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate.pm
@@ -14,7 +14,7 @@ use File::Spec;
no warnings 'utf8';
-our $VERSION = '0.89';
+our $VERSION = '0.97';
our $PACKAGE = __PACKAGE__;
### begin XS only ###
@@ -48,16 +48,14 @@ use constant Min3Wt => 0x02;
use constant Shift4Wt => 0xFFFF;
# A boolean for Variable and 16-bit weights at 4 levels of Collation Element
-# PROBLEM: The Default Unicode Collation Element Table
-# has weights over 0xFFFF at the 4th level.
-# The tie-breaking in the variable weights
-# other than "shift" (as well as "shift-trimmed") is unreliable.
use constant VCE_TEMPLATE => 'Cn4';
# A sort key: 16-bit weights
-# See also the PROBLEM on VCE_TEMPLATE above.
use constant KEY_TEMPLATE => 'n*';
+# The tie-breaking: 32-bit weights
+use constant TIE_TEMPLATE => 'N*';
+
# Level separator in a sort key:
# i.e. pack(KEY_TEMPLATE, 0)
use constant LEVEL_SEP => "\0\0";
@@ -84,9 +82,13 @@ use constant Hangul_SFin => 0xD7A3;
# Logical_Order_Exception in PropList.txt
my $DefaultRearrange = [ 0x0E40..0x0E44, 0x0EC0..0x0EC4 ];
-sub UCA_Version { "24" }
+# for highestFFFF and minimalFFFE
+my $HighestVCE = pack(VCE_TEMPLATE, 0, 0xFFFE, 0x20, 0x5, 0xFFFF);
+my $minimalVCE = pack(VCE_TEMPLATE, 0, 1, 0x20, 0x5, 0xFFFE);
+
+sub UCA_Version { "26" }
-sub Base_Unicode_Version { "6.1.0" }
+sub Base_Unicode_Version { "6.2.0" }
######
@@ -105,7 +107,7 @@ our @ChangeOK = qw/
alternate backwards level normalization rearrange
katakana_before_hiragana upper_before_lower ignore_level2
overrideHangul overrideCJK preprocess UCA_Version
- hangul_terminator variable
+ hangul_terminator variable identical highestFFFF minimalFFFE
/;
our @ChangeNG = qw/
@@ -135,18 +137,18 @@ sub change {
my $self = shift;
my %hash = @_;
my %old;
- if (exists $hash{variable} && exists $hash{alternate}) {
- delete $hash{alternate};
- }
- elsif (!exists $hash{variable} && exists $hash{alternate}) {
- $hash{variable} = $hash{alternate};
+ if (exists $hash{alternate}) {
+ if (exists $hash{variable}) {
+ delete $hash{alternate};
+ } else {
+ $hash{variable} = $hash{alternate};
+ }
}
foreach my $k (keys %hash) {
if (exists $ChangeOK{$k}) {
$old{$k} = $self->{$k};
$self->{$k} = $hash{$k};
- }
- elsif (exists $ChangeNG{$k}) {
+ } elsif (exists $ChangeNG{$k}) {
croak "change of $k via change() is not allowed!";
}
# else => ignored
@@ -176,6 +178,7 @@ my %DerivCode = (
20 => \&_derivCE_20,
22 => \&_derivCE_22,
24 => \&_derivCE_24,
+ 26 => \&_derivCE_24, # 26 == 24
);
sub checkCollator {
@@ -193,12 +196,10 @@ sub checkCollator {
if (! defined $self->{backwards}) {
$self->{backwardsFlag} = 0;
- }
- elsif (! ref $self->{backwards}) {
+ } elsif (! ref $self->{backwards}) {
_checkLevel($self->{backwards}, "backwards");
$self->{backwardsFlag} = 1 << $self->{backwards};
- }
- else {
+ } else {
my %level;
$self->{backwardsFlag} = 0;
for my $b (@{ $self->{backwards} }) {
@@ -443,21 +444,33 @@ sub parseEntry
sub viewSortKey
{
my $self = shift;
- $self->visualizeSortKey($self->getSortKey(@_));
+ my $str = shift;
+ $self->visualizeSortKey($self->getSortKey($str));
}
+sub process
+{
+ my $self = shift;
+ my $str = shift;
+ my $prep = $self->{preprocess};
+ my $norm = $self->{normCode};
+
+ $str = &$prep($str) if ref $prep;
+ $str = &$norm($str) if ref $norm;
+ return $str;
+}
+
##
## arrayref of JCPS = splitEnt(string to be collated)
-## arrayref of arrayref[JCPS, ini_pos, fin_pos] = splitEnt(string, true)
+## arrayref of arrayref[JCPS, ini_pos, fin_pos] = splitEnt(string, TRUE)
##
sub splitEnt
{
my $self = shift;
- my $wLen = $_[1];
+ my $str = shift;
+ my $wLen = shift; # with Length
- my $code = $self->{preprocess};
- my $norm = $self->{normCode};
my $map = $self->{mapping};
my $max = $self->{maxlength};
my $reH = $self->{rearrangeHash};
@@ -465,20 +478,7 @@ sub splitEnt
my $ver9 = $vers >= 9 && $vers <= 11;
my $uXS = $self->{__useXS}; ### XS only
- my ($str, @buf);
-
- if ($wLen) {
- $code and croak "Preprocess breaks character positions. "
- . "Don't use with index(), match(), etc.";
- $norm and croak "Normalization breaks character positions. "
- . "Don't use with index(), match(), etc.";
- $str = $_[0];
- }
- else {
- $str = $_[0];
- $str = &$code($str) if ref $code;
- $str = &$norm($str) if ref $norm;
- }
+ my @buf;
# get array of Unicode code point of string.
my @src = unpack_U($str);
@@ -500,13 +500,9 @@ sub splitEnt
if (_isIllegal($src[$i]) || $vers <= 20 && _isNonchar($src[$i])) {
$src[$i] = undef;
} elsif ($ver9) {
- $src[$i] = undef if $map->{ $src[$i] } &&
- @{ $map->{ $src[$i] } } == 0;
-### begin XS only ###
- if ($uXS) {
- $src[$i] = undef if _ignorable_simple($src[$i]);
- }
-### end XS only ###
+ $src[$i] = undef if $map->{ $src[$i] }
+ ? @{ $map->{ $src[$i] } } == 0
+ : $uXS && _ignorable_simple($src[$i]); ### XS only
}
}
@@ -586,8 +582,8 @@ sub splitEnt
}
# skip completely ignorable
- if ($uXS && $jcps !~ /;/ && _ignorable_simple($jcps) || ### XS only
- $map->{$jcps} && @{ $map->{$jcps} } == 0) {
+ if ($map->{$jcps} ? @{ $map->{$jcps} } == 0 :
+ $uXS && $jcps !~ /;/ && _ignorable_simple($jcps)) { ### XS only
if ($wLen && @buf) {
$buf[-1][2] = $i + 1;
}
@@ -628,8 +624,9 @@ sub getWt
my $uXS = $self->{__useXS}; ### XS only
return if !defined $u;
- return map($self->varCE($_), @{ $map->{$u} })
- if $map->{$u};
+ return $self->varCE($HighestVCE) if $u eq 0xFFFF && $self->{highestFFFF};
+ return $self->varCE($minimalVCE) if $u eq 0xFFFE && $self->{minimalFFFE};
+ return map($self->varCE($_), @{ $map->{$u} }) if $map->{$u};
### begin XS only ###
return map($self->varCE($_), _fetch_simple($u))
if $uXS && _exists_simple($u);
@@ -696,9 +693,13 @@ sub getWt
sub getSortKey
{
my $self = shift;
- my $rEnt = $self->splitEnt(shift); # get an arrayref of JCPS
+ my $orig = shift;
+ my $str = $self->process($orig);
+ my $rEnt = $self->splitEnt($str); # get an arrayref of JCPS
my $vers = $self->{UCA_Version};
my $term = $self->{hangul_terminator};
+ my $lev = $self->{level};
+ my $iden = $self->{identical};
my @buf; # weight arrays
if ($term) {
@@ -723,7 +724,13 @@ sub getSortKey
}
}
- return $self->mk_SortKey(\@buf); ### XS only
+ my $rkey = $self->mk_SortKey(\@buf); ### XS only
+
+ if ($iden || $vers >= 26 && $lev == MaxLevel) {
+ $rkey .= LEVEL_SEP;
+ $rkey .= pack(TIE_TEMPLATE, unpack_U($str)) if $iden;
+ }
+ return $rkey;
}
@@ -798,9 +805,15 @@ sub _eqArray($$$)
sub index
{
my $self = shift;
+ $self->{preprocess} and
+ croak "Don't use Preprocess with index(), match(), etc.";
+ $self->{normCode} and
+ croak "Don't use Normalization with index(), match(), etc.";
+
my $str = shift;
my $len = length($str);
- my $subE = $self->splitEnt(shift);
+ my $sub = shift;
+ my $subE = $self->splitEnt($sub);
my $pos = @_ ? shift : 0;
$pos = 0 if $pos < 0;
my $glob = shift;
@@ -1034,11 +1047,14 @@ with no parameters, the collator should do the default collation.
backwards => $levelNumber, # or \@levelNumbers
entry => $element,
hangul_terminator => $term_primary_weight,
+ highestFFFF => $bool,
+ identical => $bool,
ignoreName => qr/$ignoreName/,
ignoreChar => qr/$ignoreChar/,
ignore_level2 => $bool,
katakana_before_hiragana => $bool,
level => $collationLevel,
+ minimalFFFE => $bool,
normalization => $normalization_form,
overrideCJK => \&overrideCJK,
overrideHangul => \&overrideHangul,
@@ -1061,7 +1077,7 @@ If the revision (previously "tracking version") number of UCA is given,
behavior of that revision is emulated on collating.
If omitted, the return value of C<UCA_Version()> is used.
-The following revisions are supported. The default is 24.
+The following revisions are supported. The default is 26.
UCA Unicode Standard DUCET (@version)
-------------------------------------------------------
@@ -1074,6 +1090,7 @@ The following revisions are supported. The default is 24.
20 5.2.0 5.2.0 (5.2.0)
22 6.0.0 6.0.0 (6.0.0)
24 6.1.0 6.1.0 (6.1.0)
+ 26 6.2.0 6.2.0 (6.2.0)
* Noncharacters (e.g. U+FFFF) are not ignored, and can be overridden
since C<UCA_Version> 22.
@@ -1099,7 +1116,7 @@ as an alias for C<variable>.
=item backwards
--- see 3.1.2 French Accents, UTS #10.
+-- see 3.4 Backward Accents, UTS #10.
backwards => $levelNumber or \@levelNumbers
@@ -1109,7 +1126,7 @@ forwards at all the levels.
=item entry
--- see 3.1 Linguistic Features; 3.2.1 File Format, UTS #10.
+-- see 5 Tailoring; 3.6.1 File Format, UTS #10.
If the same character (or a sequence of characters) exists
in the collation element table through C<table>,
@@ -1183,11 +1200,49 @@ automatically terminated with a terminator primary weight.
These characters may need terminator included in a collation element
table beforehand.
+=item highestFFFF
+
+-- see 5.14 Collation Elements, UTS #35.
+
+If the parameter is made true, C<U+FFFF> has a highest primary weight.
+When a boolean of C<$coll-E<gt>ge($str, "abc")> and
+C<$coll-E<gt>le($str, "abc\x{FFFF}")> is true, it is expected that C<$str>
+begins with C<"abc">, or another primary equivalent.
+C<$str> may be C<"abcd">, C<"abc012">, but should not include C<U+FFFF>
+such as C<"abc\x{FFFF}xyz">.
+
+C<$coll-E<gt>le($str, "abc\x{FFFF}")> works like C<$coll-E<gt>lt($str, "abd")>
+almostly, but the latter has a problem that you should know which letter is
+next to C<c>. For a certain language where C<ch> as the next letter,
+C<"abch"> is greater than C<"abc\x{FFFF}">, but lesser than C<"abd">.
+
+Note: This is equivalent to C<entry =E<gt> 'FFFF ; [.FFFE.0020.0005.FFFF]'>.
+Any other character than C<U+FFFF> can be tailored by C<entry>.
+
+=item identical
+
+-- see A.3 Deterministic Comparison, UTS #10.
+
+By default, strings whose weights are equal should be equal,
+even though their code points are not equal.
+Completely ignorable characters are ignored.
+
+If the parameter is made true, a final, tie-breaking level is used.
+If no difference of weights is found after the comparison through
+all the level specified by C<level>, the comparison with code points
+will be performed.
+For the tie-breaking comparision, the sort key has code points
+of the original string appended.
+Completely ignorable characters are not ignored.
+
+If C<preprocess> and/or C<normalization> is applied, the code points
+of the string after them (in NFD by default) are used.
+
=item ignoreChar
=item ignoreName
--- see 3.2.2 Variable Weighting, UTS #10.
+-- see 3.6.2 Variable Weighting, UTS #10.
Makes the entry in the table completely ignorable;
i.e. as if the weights were zero at all level.
@@ -1214,7 +1269,7 @@ B<NOTE>: C<level> should be 3 or greater.
=item katakana_before_hiragana
--- see 7.3.1 Tertiary Weight Table, UTS #10.
+-- see 7.2 Tertiary Weight Table, UTS #10.
By default, hiragana is before katakana.
If the parameter is made true, this is reversed.
@@ -1241,6 +1296,38 @@ Any higher levels than the specified one are ignored.
If omitted, the maximum is the 4th.
+B<NOTE:> The DUCET includes weights over 0xFFFF at the 4th level.
+But this module only uses weights within 0xFFFF.
+When C<variable> is 'blanked' or 'non-ignorable' (other than 'shifted'
+and 'shift-trimmed'), the level 4 may be unreliable.
+
+See also C<identical>.
+
+=item minimalFFFE
+
+-- see 5.14 Collation Elements, UTS #35.
+
+If the parameter is made true, C<U+FFFE> has a minimal primary weight.
+The comparison between C<"$a1\x{FFFE}$a2"> and C<"$b1\x{FFFE}$b2">
+first compares C<$a1> and C<$b1> at level 1, and
+then C<$a2> and C<$b2> at level 1, as followed.
+
+ "ab\x{FFFE}a"
+ "Ab\x{FFFE}a"
+ "ab\x{FFFE}c"
+ "Ab\x{FFFE}c"
+ "ab\x{FFFE}xyz"
+ "abc\x{FFFE}def"
+ "abc\x{FFFE}xYz"
+ "aBc\x{FFFE}xyz"
+ "abcX\x{FFFE}def"
+ "abcx\x{FFFE}xyz"
+ "b\x{FFFE}aaa"
+ "bbb\x{FFFE}a"
+
+Note: This is equivalent to C<entry =E<gt> 'FFFE ; [.0001.0020.0005.FFFE]'>.
+Any other character than C<U+FFFE> can be tailored by C<entry>.
+
=item normalization
-- see 4.1 Normalize, UTS #10.
@@ -1295,7 +1382,7 @@ those in the CJK Unified Ideographs Extension A etc.
U+4E00..U+9FBB if UCA_Version is 14 or 16.
U+4E00..U+9FC3 if UCA_Version is 18.
U+4E00..U+9FCB if UCA_Version is 20 or 22.
- U+4E00..U+9FCC if UCA_Version is 24.
+ U+4E00..U+9FCC if UCA_Version is 24 or 26.
In the CJK Unified Ideographs Extension blocks:
Ext.A (U+3400..U+4DB5) and Ext.B (U+20000..U+2A6D6) in any UCA_Version.
@@ -1373,7 +1460,7 @@ in C<table> or C<entry> is still valid.
=item preprocess
--- see 5.1 Preprocessing, UTS #10.
+-- see 5.4 Preprocessing, UTS #10.
If specified, the coderef is used to preprocess each string
before the formation of sort keys.
@@ -1402,7 +1489,7 @@ L<perluniintro>, L<perlunitut>, L<perlunifaq>, L<utf8>.
=item rearrange
--- see 3.1.3 Rearrangement, UTS #10.
+-- see 3.5 Rearrangement, UTS #10.
Characters that are not coded in logical order and to be rearranged.
If C<UCA_Version> is equal to or lesser than 11, default is:
@@ -1458,7 +1545,7 @@ B<NOTE>: Contractions via C<entry> are not be suppressed.
=item table
--- see 3.2 Default Unicode Collation Element Table, UTS #10.
+-- see 3.6 Default Unicode Collation Element Table, UTS #10.
You can use another collation element table if desired.
@@ -1537,7 +1624,7 @@ this parameter doesn't work validly.
=item variable
--- see 3.2.2 Variable Weighting, UTS #10.
+-- see 3.6.2 Variable Weighting, UTS #10.
This key allows for variable weighting of variable collation elements,
which are marked with an ASTERISK in the table
@@ -1861,6 +1948,11 @@ a collator via C<Unicode::Collate-E<gt>new( )> should be used;
for F<CollationTest_NON_IGNORABLE.txt>, a collator via
C<Unicode::Collate-E<gt>new(variable =E<gt> "non-ignorable", level =E<gt> 3)>.
+If C<UCA_Version> is 26 or later, the C<identical> level is preferred;
+C<Unicode::Collate-E<gt>new(identical =E<gt> 1)> and
+C<Unicode::Collate-E<gt>new(identical =E<gt> 1,>
+C<variable =E<gt> "non-ignorable", level =E<gt> 3)> should be used.
+
B<Unicode::Normalize is required to try The Conformance Test.>
=back
@@ -1875,8 +1967,8 @@ This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
The file Unicode/Collate/allkeys.txt was copied verbatim
-from L<http://www.unicode.org/Public/UCA/6.1.0/allkeys.txt>.
-For this file, Copyright (c) 2001-2011 Unicode, Inc.
+from L<http://www.unicode.org/Public/UCA/6.2.0/allkeys.txt>.
+For this file, Copyright (c) 2001-2012 Unicode, Inc.
Distributed under the Terms of Use in L<http://www.unicode.org/copyright.html>.
=head1 SEE ALSO
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate.xs b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate.xs
index e35d724a5bb..27920ed0ead 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate.xs
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate.xs
@@ -1,3 +1,8 @@
+
+#define PERL_NO_GET_CONTEXT /* we want efficiency */
+
+/* I guese no private function needs pTHX_ and aTHX_ */
+
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
@@ -612,10 +617,14 @@ varCE (self, vce)
else if (*a == 's') { /* shifted or shift-trimmed */
totwt = d[1] + d[2] + d[3] + d[4] + d[5] + d[6];
if (alen == 7 && totwt != 0) { /* shifted */
- d[7] = (U8)(Shift4Wt >> 8);
- d[8] = (U8)(Shift4Wt & 0xFF);
- }
- else { /* shift-trimmed */
+ if (d[1] == 0 && d[2] == 1) { /* XXX: CollationAuxiliary-6.2.0 */
+ d[7] = d[1]; /* wt level 1 to 4 */
+ d[8] = d[2];
+ } else {
+ d[7] = (U8)(Shift4Wt >> 8);
+ d[8] = (U8)(Shift4Wt & 0xFF);
+ }
+ } else { /* shift-trimmed or completely ignorable */
d[7] = d[8] = '\0';
}
}
@@ -637,7 +646,7 @@ visualizeSortKey (self, key)
U8 *s, *e, *d;
STRLEN klen, dlen;
UV uv;
- IV uca_vers;
+ IV uca_vers, sep = 0;
static const char *upperhex = "0123456789ABCDEF";
CODE:
if (SvROK(self) && SvTYPE(SvRV(self)) == SVt_PVHV)
@@ -653,10 +662,13 @@ visualizeSortKey (self, key)
s = (U8*)SvPV(key, klen);
/* slightly *longer* than the need, but I'm afraid of miscounting;
- exactly: (klen / 2) * 5 + MaxLevel * 2 - 1 (excluding '\0')
- = (klen / 2) * 5 - 1 # FFFF (16bit) and ' ' between 16bit units
- + (MaxLevel - 1) * 2 # ' ' and '|' for level boundaries
- + 2 # '[' and ']'
+ = (klen / 2) * 5 - 1
+ # FFFF and ' ' for each 16bit units but ' ' is less by 1;
+ # ' ' and '|' for level boundaries including the identical level
+ + 2 # '[' and ']'
+ + 1 # '\0'
+ (a) if klen is odd (not expected), maybe more 5 bytes.
+ (b) there is not always the identical level.
*/
dlen = (klen / 2) * 5 + MaxLevel * 2 + 2;
dst = newSV(dlen);
@@ -666,18 +678,18 @@ visualizeSortKey (self, key)
*d++ = '[';
for (e = s + klen; s < e; s += 2) {
uv = (U16)(*s << 8 | s[1]);
- if (uv) {
+ if (uv || sep >= MaxLevel) {
if ((d[-1] != '[') && ((9 <= uca_vers) || (d[-1] != '|')))
*d++ = ' ';
*d++ = upperhex[ (s[0] >> 4) & 0xF ];
*d++ = upperhex[ s[0] & 0xF ];
*d++ = upperhex[ (s[1] >> 4) & 0xF ];
*d++ = upperhex[ s[1] & 0xF ];
- }
- else {
+ } else {
if ((9 <= uca_vers) && (d[-1] != '['))
*d++ = ' ';
*d++ = '|';
+ ++sep;
}
}
*d++ = ']';
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Korean.pm b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Korean.pm
index 7d19eac9488..1d67f1392b4 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Korean.pm
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Korean.pm
@@ -4,21 +4,21 @@ use 5.006;
use strict;
use Unicode::Collate;
-our $VERSION = '0.88';
+our $VERSION = '0.93';
my %jamo2prim = (
- 0x1100, 0x313B, 0x1101, 0x313C, 0x1102, 0x313D, 0x1103, 0x313E,
- 0x1105, 0x3140, 0x1106, 0x3141, 0x1107, 0x3142, 0x1109, 0x3144,
- 0x110A, 0x3145, 0x110B, 0x3146, 0x110C, 0x3147, 0x110E, 0x3149,
- 0x110F, 0x314A, 0x1110, 0x314B, 0x1111, 0x314C, 0x1112, 0x314D,
- 0x1161, 0x31B9, 0x1162, 0x31BA, 0x1163, 0x31BB, 0x1165, 0x31BD,
- 0x1166, 0x31BE, 0x1167, 0x31BF, 0x1168, 0x31C0, 0x1169, 0x31C1,
- 0x116A, 0x31C2, 0x116B, 0x31C3, 0x116C, 0x31C4, 0x116D, 0x31C5,
- 0x116E, 0x31C6, 0x116F, 0x31C7, 0x1170, 0x31C8, 0x1171, 0x31C9,
- 0x1172, 0x31CA, 0x1173, 0x31CB, 0x1174, 0x31CC, 0x1175, 0x31CD,
- 0x11A8, 0x3217, 0x11AB, 0x321A, 0x11AF, 0x321E, 0x11B7, 0x3226,
- 0x11B8, 0x3227, 0x11BC, 0x322B, 0x11BD, 0x322C,
-); # for DUCET v6.1.0
+ 0x1100, 0x3156, 0x1101, 0x3157, 0x1102, 0x3158, 0x1103, 0x3159,
+ 0x1105, 0x315B, 0x1106, 0x315C, 0x1107, 0x315D, 0x1109, 0x315F,
+ 0x110A, 0x3160, 0x110B, 0x3161, 0x110C, 0x3162, 0x110E, 0x3164,
+ 0x110F, 0x3165, 0x1110, 0x3166, 0x1111, 0x3167, 0x1112, 0x3168,
+ 0x1161, 0x31D4, 0x1162, 0x31D5, 0x1163, 0x31D6, 0x1165, 0x31D8,
+ 0x1166, 0x31D9, 0x1167, 0x31DA, 0x1168, 0x31DB, 0x1169, 0x31DC,
+ 0x116A, 0x31DD, 0x116B, 0x31DE, 0x116C, 0x31DF, 0x116D, 0x31E0,
+ 0x116E, 0x31E1, 0x116F, 0x31E2, 0x1170, 0x31E3, 0x1171, 0x31E4,
+ 0x1172, 0x31E5, 0x1173, 0x31E6, 0x1174, 0x31E7, 0x1175, 0x31E8,
+ 0x11A8, 0x3232, 0x11AB, 0x3235, 0x11AF, 0x3239, 0x11B7, 0x3241,
+ 0x11B8, 0x3242, 0x11BC, 0x3246, 0x11BD, 0x3247,
+); # for DUCET v6.2.0
my(%u2e, $prim, $wt);
while (<DATA>) {
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Stroke.pm b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Stroke.pm
index eeb4c07bd0c..7d02623dc7f 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Stroke.pm
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Stroke.pm
@@ -3,7 +3,7 @@ package Unicode::Collate::CJK::Stroke;
use 5.006;
use strict;
-our $VERSION = '0.85';
+our $VERSION = '0.94';
my %u2p;
my $wt = 0x8000;
@@ -2503,6 +2503,12 @@ that is adequate for C<overrideCJK> of C<Unicode::Collate>
and makes tailoring of CJK Unified Ideographs in the order
of CLDR's stroke ordering.
+=head1 CAVEAT
+
+The stroke ordering includes some characters that are not
+CJK Unified Ideographs and can't utilize C<weightStroke()>
+for collation. For them, use C<entry> instead.
+
=head1 SEE ALSO
=over 4
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm
new file mode 100644
index 00000000000..f7f288e9935
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm
@@ -0,0 +1,3176 @@
+package Unicode::Collate::CJK::Zhuyin;
+
+use 5.006;
+use strict;
+
+our $VERSION = '0.94';
+
+my %u2p;
+my $wt = 0x8000;
+
+while (<DATA>) {
+ last if /^__END__/;
+ my @c = split;
+ for my $c (@c) {
+ next if !$c;
+ $u2p{hex($c)} = $wt if $c !~ /-/;
+ $wt++;
+ }
+}
+
+sub weightZhuyin {
+ my $u = shift;
+ return exists $u2p{$u} ? $u2p{$u} : undef;
+}
+
+1;
+__DATA__
+FDD0-3105
+516B 4EC8 6252 6733 7390 593F 5C9C 82AD 5CC7 67ED
+75A4 54F5 5DFC 634C 7C91 7F93 8686 91DB 91DF 3B6D
+8C5D 9C83 4C3E
+53D0 72AE 629C 577A 59AD 62D4 70A6 7679 80C8 8307
+83DD 8A59 8DCB 8EF7 98B0 58A2 9B43 9F25
+628A 94AF 9200 9776
+575D 5F1D 7238 57BB 8019 8DC1 9C85 9C8C 43AC 9B8A
+8987 77F2 9738 58E9 705E 6B1B
+5DF4 53ED 5427 7B06 7D26 7F62 9B5E 7F77
+7676 5E17 62E8 6CE2 7677 73BB 525D 5265 54F1 76CB
+7835 94B5 997D 7D34 7F3D 889A 88B0 83E0 7886 9262
+50E0 5D93 64A5 64AD 9911 9B81 8E73 9A4B 9C4D
+4EE2 4F2F 72BB 8091 9A73 5E1B 72DB 74DD 4FBC 52C3
+80C9 82E9 4EB3 632C 6D61 74DF 79E1 90E3 94B9 94C2
+3A8D 3DBF 3E40 3F0E 8116 8236 88AF 535A 6E24 88B9
+9E41 613D 640F 733C 8467 9238 9251 998E 50F0 3B0D
+717F 7254 7B94 824A 4B6F 999B 99C1 8514 8E23 92CD
+9548 464F 294D0 999E 99EE 8C70 2836D 5697 61EA 3A67
+3B27 7C19 894F 939B 993A 9D53 72A6 7921 9AC6 9AC9
+6B02 7934 896E 946E
+8DDB 7BA5 7C38
+5B79 6A97 7CEA 8B52 8617
+2E8A 535C 5575 8421 818A
+6300 63B0 64D8
+767D
+767E 4F70 67CF 6822 636D 74F8 7CA8 7D54 6446 64FA
+896C
+5E8D 62DD 8D25 62DC 6557 7308 7A17 86FD 7CBA 3525
+8D01 97DB
+7AE1 85AD
+5351 676F 9642 76C3 686E 60B2 63F9 6911 7891 7986
+9E4E 9303 85E3 9D6F
+5317 3933 9273
+8D1D 5B5B 72C8 8C9D 5907 6601 726C 90B6 80CC 82DD
+94A1 4FFB 500D 36DD 6096 72FD 90E5 505D 5079 3AF2
+6896 73FC 88AB 5099 60EB 7119 7432 8EF0 8F88 9101
+50C3 6102 3ED7 789A 3E22 7295 84D3 8A96 9781 8919
+8F29 92C7 9AB3 618A 7CD2 97B4 943E
+5457 5504 7999
+52F9 5305 5B62 67B9 80DE 82DE 7B23 7172 9F85 8912
+8554 95C1 8943 9F59
+7A87 5AD1 96F9 420F 8584 2688A 3FFA
+5B9D 6009 9971 4FDD 9E28 5BB2 73E4 5821 5822 5AAC
+5BDA 8446 98FD 99C2 9CF5 7DE5 8913 9D07 8CF2 4B4B
+5BF3 5BF6 28C26 974C 4D10 28C3B
+52FD 62A5 62B1 8C79 8DB5 94C7 86AB 888C 5831 83E2
+924B 9C8D 9764 66B4 9AB2 9AF1 8663 9B91 5124 66D3
+7206 5FC1 9464 9E14
+4F68 85F5
+6273 653D 73ED 822C 9881 6591 642C 6592 9812 7622
+9CFB 4232 878C 8929 764D 8FAC
+5742 5C85 962A 6604 677F 7248 74EA 94A3 7C84 8228
+9211 8742 9B6C 95C6
+529E 534A 4F34 5762 59C5 6011 62CC 7ECA 67C8 79DA
+6E74 7D46 9261 977D 8FA6 74E3
+626E 8781
+5954 6CCD 8D32 681F 7287 951B 931B
+672C 82EF 5959 755A 7FC9 694D
+574B 574C 5034 6379 6873 6E00 7B28 26BC0 9029 64AA
+7356 8F3D
+90A6 57B9 5E2E 6360 6D5C 6886 90AB 5E47 5E5A 7E0D
+5E6B 97A4
+7ED1 7D81 699C 7253 8180 9AC8
+3B4B 73A4 868C 508D 68D2 68D3 8C24 585D 6412 7A16
+84A1 872F 78C5 9551 8255 8B17 938A
+4F3B 794A 595F 5D29 7D63 958D 50B0 5D6D 75ED 5623
+7DB3
+752D
+57C4 57F2 7EF7 7423 742B 83F6 7E43 979B
+6CF5 8FF8 902C 5874 955A 750F 295F4 4B70 8E66 93F0
+882F
+63FC
+5C44 506A 6BF4 6945 903C 8C4D 8795 9CBE 939E 9D56
+9C0F
+8378 9F3B
+5315 6BD4 3832 5936 673C 4F4A 5421 59A3 6C98 7595
+5F7C 67C0 79D5 4FFE 7B14 7C83 822D 555A 3A8F 7B46
+7B84 805B 9119 8C8F
+5E01 5FC5 6BD5 95ED 4F56 3629 5752 5E87 8BD0 3620
+59BC 602D 6036 39D9 6788 7540 90B2 54D4 67F2 6BD6
+73CC 75AA 82FE 6BD9 72F4 7B13 7C8A 835C 94CB 965B
+5A62 5EB3 655D 6890 7562 8890 9587 9589 581B 5F3B
+5F3C 610A 610E 6E62 7695 7B5A 8406 8A56 8CB1 8CC1
+8D51 6ED7 714F 75F9 75FA 7764 8177 870C 8DF8 924D
+959F 98F6 55F6 5E63 5F0A 5F43 6EED 78A7 7B85 7B86
+7DBC 84D6 88E8 999D 6F77 719A 7358 7359 3EEB 84FD
+853D 480B 912A 99DC 9AF2 58C1 5B16 5EE6 3D65 7BE6
+7F7C 89F1 9B85 6583 6FDE 7BF3 7E2A 81C2 859C 907F
+9946 5970 74A7 8E55 9128 9AC0 7E74 895E 93CE 4557
+8963 8E83 8E84 97B8 97E0 8D14 9434 9A46 9B53 9DDD
+9DE9 9F0A
+5302 841E 5E64 5B36 8945
+618B 87DE 9CD6 9C49 9F08 864C 9F9E
+5225 522B 5487 43DF 8382 86C2 5FB6 8952 8E69
+762A 765F 3FDC
+5F46 4318
+706C 6753 6807 98D1 9A89 9ADF 6DF2 5F6A 730B 813F
+98A9 5882 5E56 647D 6EEE 98AE 9AA0 6A19 719B 8198
+8508 762D 78E6 9556 98D9 98DA 5126 98B7 700C 8B24
+7202 81D5 85E8 8D06 93E2 7A6E 9573 98C6 98C7 98C8
+9A43 9463 4BBD 9A6B
+8868 5A4A 88F1 8AD8 9336 6AA6 893E
+4FF5 9CD4 9C3E
+98CA
+8FB9 8FBA 782D 7B3E 63D9 7335 7F16 7178 7251 7502
+7BAF 7DE8 8759 9089 937D 9CCA 97AD 908A 9BFE 9BFF
+7C69
+8D2C 6241 7A86 533E 60FC 8CB6 8439 78A5 7A28 7CC4
+890A 9D18 85CA
+535E 5F01 5325 5FED 6283 6C73 6C74 91C6 53D8 73A3
+82C4 4FBF 5909 662A 3B53 898D 5FA7 7F0F 904D 959E
+8FA1 7DF6 8251 8FA7 8FA8 8FA9 8FAB 8FAE 8FAF 8B8A
+5CC5 709E
+6C43 90A0 73A2 780F 5BBE 5F6C 68B9 50A7 658C 6915
+6EE8 3EDE 7F24 69DF 7478 8C69 8CD3 8CD4 9554 5110
+6FD2 6FF1 8668 8C73 6AB3 74B8 7015 9726 7E7D 944C
+986E
+6448 6BA1 8191 9AE9 64EF 9B02 6BAF 81CF 9ACC 9B13
+9AD5 9B22
+6C1E 6FF5
+51AB 4ECC 4ED2 6C37 51B0 5175 63A4
+4E19 6032 62A6 79C9 90B4 9643 661E 663A 67C4 70B3
+82EA 997C 772A 7A89 3A00 86C3 6452 7980 7A1F 9235
+927C 9905 9920 979E
+5E76 34C8 4E26 4F75 5E77 5EB0 5002 6824 75C5 7ADD
+504B 50A1 5BCE 68C5 8A81 9BA9 9750
+57AA 9786 92F2
+5CEC 5EAF 6661 900B 923D 8AA7
+9CEA 8F50 91AD
+535F 248F0 8865 54FA 6355 55B8 88DC 9D4F
+4E0D 5E03 4F48 5425 6B65 5498 3635 6016 62AA 6B68
+6B69 3CCD 67E8 949A 52CF 57D4 57D7 6091 6357 94B8
+57E0 8379 90E8 74FF 8E04 8500 90F6 9914 9922 7BF0
+7C3F
+FDD0-3106
+5991 25419 241B5 7685 8DB4 8225 556A 8469
+6777 722C 63B1 7436 7B62 6F56
+5E0A 5E15 6015 8899
+948B 5761 5CA5 6CCA 9887 6E8C 9255 9817 93FA
+5A46 5619 8522 9131 76A4 8B08 6AC7
+53F5 5C00 94B7 7B38 99CA
+5CB6 7087 6540 6622 6D26 73C0 8FEB 70DE 7834 7836
+91D9 7C95 84AA 9B44 9197 4A96
+6CFC 6872 6F51
+62CD
+4FF3 5F98 6392 7305 68D1 724C 8F2B 7C30 7C32 72A4
+5EF9
+54CC 6D3E 3B5B 6E43 848E 9383
+5478 36B0 600C 80A7 67F8 80DA 8843 9185
+962B 57F9 966A 6BF0 8D54 952B 88F4 88F5 8CE0 99CD
+4FD6
+4F02 6C9B 4F69 5E14 59F5 65BE 65C6 6D7F 73EE 914D
+7B29 4283 8F94 99B7 5D8F 9708 8F61
+84DC
+629B 62CB 812C
+5228 5486 5789 5E96 72CD 70B0 722E 530F 888D 8EF3
+9784 9E83 9E85
+8DD1
+5945 6CE1 70AE 75B1 76B0 7832 9EAD 791F 792E
+8422 891C
+5256 5A1D
+6294 6299 634A 638A 88D2 7B81 9307
+5485 54E3 5A44 7283 5ECD
+3434 7705 7819 7568 6F58 6500
+723F 6D00 76D8 8DD8 5ABB 5E4B 642B 69C3 84B0 76E4
+78D0 7E0F 78FB 8E52 23066 700A 87E0 8E63 939C 97B6
+51B8 5224 6C9C 62DA 6CEE 708D 53DB 7249 76FC 7554
+8041 88A2 8A4A 6EBF 9816 92EC 897B 947B
+9D65
+55B7 5674 6B55
+74EB 76C6 6E53 8450
+5460 7FF8
+55AF
+4E53 6C97 80EE 96F1 6EC2 8196 4A26 9736
+5390 5E9E 5396 65C1 9004 823D 5ACE 5FAC 249ED 8783
+9CD1 9F8E 9F90
+55D9 802A 89AB
+7090 80A8 80D6
+5309 36C1 6026 62A8 6072 39F8 7830 6888 70F9 7851
+8EEF 959B 6F30 562D 6F8E 78DE
+8283 670B 7AFC 5017 6337 580B 5F38 8391 5F6D 68DA
+6916 787C 7A1D 9E4F 5873 6189 69F0 6A25 71A2 84EC
+28083 8F23 7BE3 81A8 930B 97F8 9AFC 87DA 87DB 9B05
+4D36 97FC 9D6C 9A2F 7E84 9B14 945D
+6367 6DCE 768F 527B
+63BD 692A 78B0 8E2B
+7BF7
+4E15 4F13 4F3E 6279 7EB0 576F 62AB 62B7 708B 72C9
+90B3 7812 20731 6082 79DB 79E0 7D15 94CD 65C7 7FCD
+801A 8C7E 9208 921A 9239 925F 9294 5288 78C7 99D3
+9AEC 567C 930D 9B7E 9B8D 61B5 7914 7915 9739
+76AE 34DF 9630 5CAF 6787 6BDE 72D3 80B6 8298 6BD7
+6BD8 75B2 868D 5564 57E4 5D25 26A2D 86BD 86BE 8C7C
+2821A 90EB 9674 7137 7435 813E 8157 9C8F 7F74 818D
+8731 9B6E 58C0 7BFA 87B7 8C94 9D67 7F86 6707 9F19
+5339 5E80 758B 4EF3 572E 82C9 8134 75DE 92A2 8AC0
+9D04 64D7 567D 7656 4C26 56AD
+5C41 6DE0 6E12 63CA 91FD 5AB2 5AD3 7765 8F9F 6F4E
+7A2B 50FB 6FBC 568A 7513 4444 7588 8B6C 95E2 9DFF
+9E0A
+698C
+6C15 6487 22CC2 6486 66BC 77A5
+4E3F 82E4 9405
+5AF3
+527D 6153 7F25 98D8 65DA 7FF2 87B5 72A5 98C3 98C4
+9B52
+5AD6 74E2 7AC2 85B8 95DD
+6B8D 5F6F 779F 7BFB 7E39 91A5 76AB 9860
+7968 50C4 52E1 560C 5FB1 6F02 3B13
+56E8 504F 5AA5 728F 7BC7 7FE9 9342 9DA3
+9A88 80FC 8141 6944 6969 8CC6 8DF0 8ADA 8E41 99E2
+9ABF 9A08
+8991 8C1D 8CB5 8ADE
+7247 9A97 9A17 9A19
+9B78
+59D8 62FC 3866 7917 7A66 99AA 9A5E
+73AD 8D2B 5A26 8CA7 7415 5AD4 9891 983B 5B2A 7371
+85B2 56AC 77C9 8819 98A6 9870
+54C1 6980
+725D 6C56 8058
+4E52 7539 4FDC 5A09 6D84 782F 8060 8275 7AEE 9829
+29A4D
+5E73 8BC4 51ED 546F 576A 6CD9 5C4F 5E21 67B0 6D34
+73B6 80D3 82F9 90F1 3EB8 3EC2 8353 5C5B 5E32 6DDC
+74F6 86B2 5E48 7129 7F3E 840D 86E2 8A55 7501 84F1
+8EFF 9C86 51F4 4202 617F 7BB3 8F27 6191 9B83 6A98
+7C08 860B
+5CBC 5840
+4EC6 6534 6251 9660 5657 64B2 6F7D 64C8 9BC6
+3EAA 530D 812F 8386 83D0 83E9 8461 50D5 84B1 84B2
+917A 58A3 735B 749E 6FEE 77A8 7A59 423B 9564 258C8
+7E80 8965 93F7
+5724 6734 5703 6D66 70F3 666E 6EA5 8C31 8AE9 6A38
+6C06 6A8F 9568 8B5C 8E7C 9420
+94FA 8216 8217 92EA 3B25 7011 66DD
+5DEC 5DED 99C7 8D0C
+FDD0-3107
+5463
+5988 5B56 5ABD 5B24 5B37
+9EBB 75F2 7298 8534 87C7
+9A6C 3437 739B 7801 8682 99AC 6EA4 746A 78BC 879E
+93B7 9C22 9DCC
+72B8 6769 7943 9581 9A82 551B 508C 7341 561C 3A38
+69AA 7770 79A1 7F75 372B 99E1 7923 9B15
+4E87 5417 55CE 561B 5AF2 9064 87C6
+6478
+8C1F 998D 5AEB 9EBD 6469 6479 6A21 819C 6A45 78E8
+7CE2 56A4 64F5 8B28 56A9 56B0 9943 8611 5298 9ACD
+9B54 40FA 995D
+62B9 61E1 4A4B
+672B 52B0 573D 59BA 5E13 6B7E 6B7F 6B81 6CAB 248FB
+5E1E 6629 67BA 8309 964C 551C 768C 771C 773F 781E
+79E3 773D 7C96 7D48 8388 83AB 6E50 86E8 8C83 8C8A
+55FC 587B 5BDE 6F20 734F 84E6 9286 977A 5AFC 66AF
+3C73 9ED9 7790 9546 9B69 58A8 763C 7799 9ED8 700E
+87D4 8B29 8C98 7205 85E6 93CC 7933 7E86 9A40 8031
+5E85 603D 5C1B 9B79 9EBF
+4E48 9EBC 5692 569C 6FF9 7666
+57CB 3725 85B6 973E
+4E70 836C 8CB7 562A 8552 9DF6
+52A2 4F45 58F2 8FC8 9EA6 5356 8109 8108 9EA5 8847
+52F1 8CE3 9081 9721 9722 2A133
+5445 5746 6C92 6CA1 679A 73AB 6802 7709 82FA 5A12
+8104 6885 73FB 8122 8393 5833 5A92 5D4B 6E44 6E48
+7338 7742 90FF 6963 6973 7164 7442 847F 587A 69D1
+7996 9176 9545 9E5B 92C2 9709 7A48 5FBE 9387 77C0
+6517 9DA5 862A 9EF4
+6BCE 6BCF 51C2 7F8E 6334 6D7C 5A84 5D44 6E3C 5ABA
+815C 9541 5B0D 71D8 9382 9EE3
+59B9 62BA 6CAC 65C0 6627 3B51 771B 7959 8882 5A9A
+5BD0 75D7 8DCA 715D 9B3D 7778 97CE 7BC3 875E 9B45
+8EBE
+732B 8C93
+6BDB 77DB 6786 7266 8305 8306 65C4 7F5E 515E 8EDE
+9155 5825 6E35 28968 951A 9AE6 5AF9 6C02 729B 8765
+9AF3 87CA 9328 9D9C
+5187 536F 5918 4E6E 623C 36B9 5CC1 6CD6 6634 94C6
+7B37 84E9
+5183 7683 5190 82BC 5192 67D5 770A 8302 8D38 8004
+88A4 8992 5AA2 5E3D 8CBF 6117 6693 6959 6BF7 7441
+843A 7780 8C8C 911A 8750 912E 61CB
+54DE
+725F 4F94 52BA 3B4C 6048 6D20 7738 8C0B 86D1 7F2A
+8E0E 927E 8B00 77B4 7E46 936A 9D3E 9EB0
+67D0 26CD1
+5ADA 989F
+59CF 6097 34BC 86EE 50C8 8C29 6172 9992 6A20 7792
+779E 9794 25C91 8B3E 9945 9CD7 9862 9B17 9B18 9C3B
+883B
+5C58 6E80 774C 6EE1 6EFF 87A8 87CE 8954 93CB 77D5
+66FC 3B05 5881 5E54 6162 6471 6F2B 734C 7F26 9124
+69FE 71B3 8504 8513 3862 6FB7 9558 7E35 93DD 2914D
+4555 2414E
+8630
+95E8 626A 73A7 9494 9580 9585 636B 83DB 748A 9346
+4EB9 864B
+95F7 7116 60B6 66AA 71DC 61D1 61E3
+4EEC 5011 691A
+7264
+5402 5FD9 6C52 9099 5C28 6757 6767 8292 6C13 76F2
+7B00 54E4 5A0F 5EAC 3936 607E 6D5D 72F5 832B 727B
+3ECA 91EF 94D3 75DD 786D 86D6 420D 23677 92E9 99F9
+29DF6
+83BD 7865 833B 83BE 58FE 6F2D 3B12 87D2 880E
+753F 867B 51A1 8394 840C 8420 4004 76DF 8499 8771
+511A 6A57 750D 77A2 8544 9133 5E6A 61DE 66DA 6FDB
+9138 6726 6AAC 6C0B 4443 4445 9BCD 77C7 791E 9E72
+8268 8609 77D2 973F 9740 995B 986D 9F06 9E0F
+52D0 731B 74FE 4045 9530 824B 8722 9333 61DC 7374
+61F5 9BED 8813
+5B5F 20D7C 68A6 6E95 5922 5923 44DD 9725 3734
+63B9 64DD
+54AA 772F 7787
+519E 5F25 7F59 7962 8FF7 7315 8C1C 8A78 84BE 5F4C
+64DF 7CDC 7E3B 8B0E 919A 9E8A 9E8B 79B0 9761 3737
+7030 737C 9E9B 6202 6520 74D5 957E 7222 4577 863C
+91BE 91BF 9E0D 91C4
+7C73 8288 4F8E 6CB5 7F8B 5F2D 6D23 6549 772B 8112
+6E33 845E 92A4 851D 6FD4 5B4A 7056
+5196 7CF8 6C68 6C95 5B93 6CCC 89C5 5CDA 5BBB 7955
+79D8 5BC6 6DE7 6DFF 8993 8994 5E42 8C27 5853 5E4E
+3A20 899B 5627 6993 6EF5 6F1E 7190 871C 6A12 8524
+9F0F 51AA 5E66 6FD7 8B10 6AC1 7C1A 85CC 7F83
+4E5C 5400 54A9 54F6 5B6D
+706D 70D5 8995 6423 6EC5 8511 9D13 7BFE 858E 5E6D
+61F1 6AD7 881B 884A 9456 9C74
+55B5
+82D7 3464 5A8C 63CF 9E4B 7784 7DE2 9D93 9C59
+676A 7707 79D2 6DFC 6E3A 7F08 7BCE 7DF2 85D0 9088
+5999 5E99 7385 7AD7 5EBF 5EDF
+8C2C 8B2C
+5B80 8287 7720 5A42 7EF5 5A94 68C9 7DBF 7DDC 81F1
+8752 5B35 6AB0 6ACB 77C8 77CA 77CF
+4E0F 6C45 514D 6C94 9EFE 52C9 7704 5A29 3743 506D
+5195 52D4 6E11 5595 6110 6E4E 7F05 7D7B 817C 8442
+9EFD 3EF0 7DEC 9EAB 6FA0 9BB8
+9763 9762 7CC6 9EAA 9EBA 9EB5
+6C11 59C4 5CB7 5FDE 600B 65FB 65FC 73C9 76FF 7807
+82E0 7F60 5D0F 636A 7418 7F17 656F 7449 75FB 7888
+9231 7DCD 4AB8 7DE1 9309 9D16 9372
+76BF 51BA 5221 95F5 62BF 6CEF 52C4 6543 95FD 60AF
+654F 7B22 60FD 6E63 9594 610D 3B06 668B 95A9 50F6
+615C 61AB 6F63 7C22 2704B 9CD8 8820 9C35 2A134
+578A 7B3D
+540D 660E 9E23 6D3A 7700 51A5 8317 6719 7733 94ED
+5AC7 6E9F 733D 910D 669D 69A0 84C2 9298 9CF4 7791
+879F 89AD 4AE4
+4F72 59F3 51D5 614F 9169
+547D 6927 8A7A
+63B5
+6BEA 58B2 6C01
+6BCD 4EA9 7261 5776 59C6 5CD4 7273 7546 7552 80DF
+755D 755E 782A 756E 27FF9 20E96 9267 8E07
+6728 4EEB 6730 76EE 6C90 72C7 7091 7267 82DC 6BE3
+869E 94BC 83AF 96EE 52DF 3708 6958 7766 926C 5893
+5E55 5E59 6154 6155 66AE 8252 9702 7A46 7E38 97AA
+51E9 62C7
+FDD0-3108
+53D1 6CB7 767A 50A0 767C 5F42 9166 91B1
+4E4F 4F10 59C2 57A1 6D4C 75BA 7F5A 9600 6830 781D
+8337 7B4F 7782 7F70 95A5 7F78 6A43 85C5
+4F71 6CD5 704B
+73D0 743A 9AEA 9AEE 855F 27B0B
+9345
+4ECF 5772
+68BB
+98DE 5983 975E 98DB 5561 5A53 6E04 7EEF 291EB 6249
+7306 83F2 975F 7DCB 871A 88F6 970F 9CB1 9925 99A1
+9A11 9A1B 98DD
+80A5 6DDD 8153 4208 8730 87E6
+670F 532A 8BFD 595C 60B1 6590 68D0 69A7 7FE1 8AB9
+7BDA 855C 2913C
+5420 5E9F 676E 6CB8 72D2 80BA 82BE 6632 80C7 8D39
+4FF7 5255 539E 75BF 5C5D 966B 5EC3 3E43 8409 8CBB
+75F1 9544 5EE2 66CA 4935 7648 9F23 6FF7 4C01 6AE0
+9BE1 9428 9745
+5A54 6683
+7D11 88E6
+7F36 5426 599A 7F39 7F3B 6B95 96EC 9D00
+5E06 8A09 756A 52EB 5643 5B0F 5E61 61A3 65D9 8543
+65DB 7E59 7FFB 85E9 8F53 98BF 7C53 98DC 9C55
+51E1 51E2 51E3 3836 5FDB 674B 77FE 7C75 9492 67C9
+70E6 8227 7B32 68E5 6E22 7169 7DD0 58A6 6A0A 6A4E
+71D4 74A0 81B0 7E41 85A0 7FB3 894E 8E6F 702A 703F
+792C 9407 9422 8629 881C 9DED
+53CD 6255 8FD4 484A 91E9
+201A9 6C3E 72AF 597F 6C4E 996D 6CDB 8D29 7548 8303
+4000 8ED3 5A4F 68B5 3D00 76D5 7B35 8CA9 8EEC 98EF
+98F0 6EFC 5B0E 7BC4
+8224
+5206 5429 5E09 7EB7 6610 6C1B 82AC 54DB 517A 7D1B
+7FC2 886F 515D 8A1C 915A 68FB 9216 96F0 3B1F 6706
+71D3 9934 9959
+575F 59A2 5C8E 6C7E 670C 678C 7083 80A6 7F92 86A0
+86A1 68A4 68FC 711A 999A 84B6 58B3 5E69 6FC6 9B75
+6A68 71CC 8561 8C6E 96AB 9F22 7FB5 9F16 8C76 8F52
+943C 99A9 9EC2
+7C89 9EFA
+4EFD 5F05 594B 5FFF 79CE 507E 6124 7CAA 50E8 61A4
+596E 81B9 7CDE 9CBC 7035 9C5D
+7AD5 8EAE
+531A 65B9 6C78 90A1 678B 7265 82B3 94AB 8684 6DD3
+9201 9D0B
+59A8 9632 623F 80AA 57C5 9C82 9B74 9C1F
+4EFF 8BBF 5F77 7EBA 6609 6618 74EC 7706 5023 65CA
+7D21 822B 8A2A 9AE3 9DAD
+653E 8DBD
+574A 580F 933A
+4E30 98CE 4EF9 51E8 51EC 59A6 6CA3 6CA8 51EE 67AB
+5C01 75AF 76FD 781C 98A8 36D4 5CEF 5CF0 44A0 5051
+687B 70FD 5D36 7326 950B 6953 728E 8451 8702 760B
+78B8 50FC 7BC8 92D2 9137 6A92 95CF 8C50 93E0 34A5
+5BF7 3826 7043 9146 973B 8634 882D 974A 98CC 9EB7
+51AF 5906 6340 6D72 9022 5838 99AE 7D98 8242 3980
+6453 6F28 3D6F
+8BBD 552A 8982 8AF7
+51E4 5949 752E 4FF8 6E57 7128 7148 7F1D 8D57 9CEF
+9CF3 9D0C 8CF5 7E2B
+7412 6E84 93BD 8615
+8985
+4F15 544B 598B 909E 59C7 739E 80A4 6024 67CE 7806
+57BA 5A10 5C03 8342 886D 65C9 3B6A 7D28 8374 8DBA
+9EB8 75E1 7A03 8DD7 9207 7B5F 7D92 5B75 8C67 911C
+6577 819A 9CFA 9EA9 7CD0 9EAC 9EB1 61EF
+4E40 5DFF 5F17 4F0F 51EB 7536 4F5B 51B9 521C 5B5A
+6276 5488 5CAA 5F7F 602B 62C2 670D 678E 6CED 7EC2
+7ECB 8299 82A3 4FD8 5798 3A84 67EB 6C1F 6D11 70A5
+73B8 7549 7550 7F58 82FB 8300 97E8 54F9 683F 6D6E
+7829 7953 832F 86A8 90DB 5310 6874 6DAA 70F0 7408
+7B26 7B30 7D31 7D3C 7FC7 8274 83A9 8659 5E45 68F4
+7D65 7F66 83D4 7CB0 7D8D 8240 844D 8709 8F90 9258
+925C 98AB 9CE7 6991 798F 7A2A 7B99 97CD 5E5E 6F93
+8760 9AF4 8AE8 8E3E 8F3B 9B84 9D14 7641 29732 9EFB
+8946 9D69 9D9D
+5452 629A 4E76 5E9C 5F23 62CA 65A7 4FCC 4FDB 80D5
+9CEC 4FEF 90D9 91DC 91E1 636C 8F85 7124 76D9 8151
+6ECF 8705 42E8 8150 8F14 5638 64A8 64AB 982B 9B34
+7C20 9EFC
+2ECF 2ED6 961D 7236 8BA3 4ED8 5987 8D1F 577F 3914
+7ACE 961C 9644 9A78 590D 5CCA 8A03 8CA0 8D74 3931
+7954 86A5 965A 5069 51A8 526F 5A66 86B9 889D 5A8D
+5BCC 5FA9 3DC6 79FF 86D7 8A42 8D4B 5711 6931 7F1A
+8179 842F 9C8B 8D59 4B7B 3B3C 7DEE 875C 876E 8907
+8914 8CE6 99D9 5B14 7E1B 8567 8F39 9B92 8CFB 9351
+9362 9CC6 8986 99A5 4600 9C12 204D7
+592B 752B 5490 915C 5085 6928 88B1 8984 79A3 9BB2
+FDD0-3109
+5491 54D2 8037 8345 7B1A 55D2 642D 2143F 6498 5660
+265BF 8921 939D
+8FBE 547E 59B2 601B 6C93 8FD6 709F 7F8D 7557 7563
+7B2A 8359 5273 5312 7B54 8A5A 9039 9054 9618 977C
+9791 8598 9389 87FD 8E82 943D 97C3 9F96 9F98
+6253
+5927 6C4F 7714
+57AF 58B6 7629 71F5 7E68
+561A
+392B 6074 6DC2 60EA 68CF 951D 5FB3 5FB7 9340
+5730 7684 5F97 8126
+5446 5454 7343 61DB
+6B79 50A3 902E
+3432 4EE3 8F6A 20C3A 5788 5CB1 5E12 7519 7ED0 9A80
+5E26 5F85 6020 67CB 6B86 73B3 8D37 8FE8 5E2F 8ED1
+57ED 5E36 7D3F 888B 8EDA 3ED6 8CB8 8EE9 7447 5ED7
+4206 53C7 3BC2 7DFF 66C3 9D0F 6234 26102 825C 9EDB
+7C24 8E5B 703B 9734 9EF1 8976 9746
+9B98
+2E88 5200 5202 53E8 5FC9 6737 6C18 8220 91D6 9C7D
+9B5B
+636F
+5BFC 5C9B 5CF6 6363 7977 6417 7982 3800 5D8B 5D8C
+3A36 969D 5C0E 58D4 5DB9 64E3 8E48 96AF 79B1
+5230 5012 60BC 7118 76D7 76DC 83FF 9053 7A32 7B8C
+7FE2 7A3B 885C 5675 885F 6AA4 71FE 4326 7FFF 8EC7
+74D9 7E9B
+5C76 9666 6921 69DD
+543A 5517 515C 90FD 5160 8538 6A77 7BFC
+6296 9627 6793 67A1 551E 86AA 9661 9204
+6597 8C46 6D62 90D6 997E 9B25 68AA 6BED 8130 8373
+9017 9158 75D8 9597 7AA6 4B26 9B26 9916 65A3 2109D
+95D8 4546 7AC7 9B2A 9B2C 9B2D
+4E67 8254
+4E39 5989 5355 62C5 5358 7708 7803 803C 803D 449F
+8043 8EAD 90F8 55AE 5A85 6B9A 7605 5330 7BAA 9815
+510B 52EF 891D 9132 64D4 6BAB 7649 7514 7C1E 894C
+8078
+4F14 5210 628C 73AC 74ED 80C6 75B8 7D1E 8874 63B8
+8D55 4EB6 64A2 64A3 6FB8 9ED5 81BD 9EEE
+65E6 4F46 5E0E 6C8A 72DA 8BDE 67E6 758D 5556 5557
+5F39 60EE 6DE1 86CB 557F 5F3E 6C2E 8145 840F 89DB
+35D6 7A9E 50E4 8711 99BE 9AE7 563E 5649 5F48 619A
+8A95 61BA 66BA 6FB9 84DE 9D20 79AB 99F3 765A 56AA
+7E75 8D09 972E 994F 4A35
+6CF9
+6265 627D
+5F53 73F0 7B5C 88C6 7576 5679 6FA2 74AB 7C39 8261
+87F7 8960
+6321 515A 8C20 64CB 8B61 9EE8 6529 7059 6B13 8B9C
+6C39 51FC 5735 5B95 7800 57B1 6863 8361 5A78 6113
+83EA 5D63 74FD 903F 96FC 78AD 5105 6F52 778A 8DA4
+58CB 8569 6A94 7497 76EA 7911 7C1C 862F 95E3
+94DB 943A
+706F 767B 8C4B 5654 5B01 71C8 7492 7AF3 7C26 89B4
+8E6C
+6729 7B49 6225
+9093 51F3 58B1 5D9D 9127 96A5 77AA 78F4 956B 6AC8
+9419
+8260
+6C10 4EFE 4F4E 5943 5F7D 7F9D 889B 5824 8D86 9684
+6EF4 6A00 955D 78FE 9349 97AE
+72C4 5EF8 7C74 82D6 8FEA 5519 654C 6DA4 6891 7B1B
+837B 89CC 976E 99B0 9AE2 5600 5AE1 6ECC 7FDF 9814
+6575 850B 8510 4A00 5681 7BF4 4A24 8C74 8E62 9B04
+85E1 93D1 42AE 7CF4 89BF 9E10
+538E 5758 8BCB 5467 5E95 5F24 62B5 62DE 90B8 963A
+67E2 7274 830B 7825 57DE 638B 3B7D 83E7 89DD 8A46
+8EE7 805C 9AB6
+5754 5F1F 65F3 6755 7393 601F 4FE4 5E1D 57CA 5A23
+5059 5547 5572 688A 710D 73F6 7731 7B2C 8C1B 9012
+9013 91F1 5A82 68E3 6E27 7747 7976 7F14 83C2 50C0
+8163 8482 926A 5891 6455 78B2 7998 8743 905E 58AC
+6178 7DE0 8515 9070 5DB3 750B 8AE6 8E36 87AE
+9BF3
+55F2
+7239 8DCC 893A
+57A4 5CCC 604E 6315 6633 7ED6 80C5 82F5 8FED 74DE
+7723 621C 43F2 8C0D 558B 581E 60F5 63F2 7573 7D70
+800B 81F7 8A44 8D83 957B 53E0 6B9C 7243 7252 5D7D
+789F 8728 8253 8776 890B 22DA3 8ADC 8E40 9CBD 3B2A
+66E1 7589 9C08 758A 6C0E
+54CB 800A 7730
+5E49 7582
+5201 53FC 6C48 866D 51CB 595D 5F34 5F6B 86C1 7431
+8C82 7889 9CED 6BA6 7797 96D5 9B89 9CB7 9F26 9BDB
+9D70
+625A 5C4C
+5F14 4F04 540A 9493 7A8E 8A0B 8C03 6389 91E3 94DE
+94EB 7AE8 92B1 96FF 9B61 84E7 8ABF 7639 7AB5 92FD
+85CB 9443
+7C13
+4E1F 4E22 20C8D 94E5 92A9
+7538 6541 20DA7 6382 508E 53A7 5D6E 6EC7 69C7 69D9
+7628 98A0 8E4E 5DC5 985A 985B 766B 5DD3 5DD4 6527
+7672 9F7B
+5178 594C 70B9 5A70 7320 4344 655F 8DD5 7898 84A7
+8E2E 8547 9EDE 56B8
+7535 4F43 576B 5E97 963D 57AB 6242 73B7 94BF 5A5D
+60E6 6DC0 5960 7414 6BBF 8714 96FB 588A 58C2 6A42
+6A5D 6FB1 975B 24A71 765C 7C1F 9A54
+6923
+4E01 4EC3 53EE 5E04 738E 7594 76EF 9489 8035 8670
+914A 91D8 976A
+5975 9876 9802 3AC0 9F0E 5D7F 9F11 6FCE 85A1 9424
+8BA2 5FCA 9964 77F4 5B9A 8A02 98E3 5576 94E4 6917
+815A 7887 952D 78A0 874A 92CC 9320 78F8 9841
+8423 8062
+53BE 21C2A 5262 9607 7763 561F 918F 95CD
+6BD2 72EC 6D9C 8BFB 6E0E 691F 3C69 724D 728A 78A1
+88FB 8AAD 8773 7368 9316 51DF 5335 5B3B 7006 6ADD
+6BB0 7258 72A2 74C4 76BE 9A33 9EE9 8B80 8C44 8D15
+97E3 945F 9AD1 97C7 97E5 9EF7 8B9F
+7B03 5835 5E3E 8D4C 743D 7779 89A9 8CED 7BE4
+5992 675C 809A 828F 59AC 5EA6 79FA 8370 6E21 976F
+9540 29D5A 8799 6BAC 934D 7C35 8827 8839
+591A 591B 5484 54C6 7553 525F 5D1C 6387 6560 6BF2
+88F0 5689
+593A 94CE 526B 6553 655A 55A5 60B3 656A 75E5 922C
+596A 51D9 8E31 9BB5 9438
+6736 54DA 579B 579C 6305 6306 57F5 7F0D 692F 8D93
+8EB1 8EB2 7D9E 492A 619C 4EB8 937A 8EC3 56B2 5972
+5234 5241 9973 5C2E 67C1 67EE 70A8 964A 964F 6857
+5815 8235 60F0 8DE2 8DE5 8DFA 98FF 3EE7 58AE 58AF
+5D9E 9D7D
+6735 67A4
+5796 5806 5860 5D5F 75FD 78D3 9D2D 941C
+3A03 9827
+5BF9 961F 514A 514C 5151 5BFE 603C 794B 966E 968A
+7893 41CF 7D90 5C0D 619E 619D 6FE7 9566 61DF 3B23
+85B1 7029 8B48 8968 9413
+8011 5073 526C 5A8F 7AEF 890D 9374
+22B43 77ED
+6BB5 65AD 5845 7F0E 6934 7145 7456 8176 846E 78AB
+953B 7DDE 6BC8 7C16 935B 65B7 8E96 7C6A
+5428 60C7 6566 8733 58A9 58AA 64B4 7364 5678 6489
+6A54 729C 7905 453B 8E72 8E7E 9A50
+233B4 76F9 8DB8 8E89
+4F05 56E4 5E89 6C8C 7096 76FE 7818 949D 9007 987F
+920D 696F 9041 9813 6F61 906F 71C9 8E32
+78B7
+4E1C 51AC 549A 36B5 5CBD 6771 6638 6C21 82F3 5032
+9E2B 57EC 5A3B 5D20 5D2C 6DB7 7B17 5F9A 6C2D 83C4
+29093 8740 9D24 9F15 9BDF 9D87
+3A02 8463 58A5 7BBD 8ACC 5B1E 23FC5 856B 61C2
+52A8 51BB 4F97 578C 59DB 5CD2 606B 630F 680B 6D1E
+80E8 51CD 6219 80F4 8FF5 52D5 7850 68DF 6E69 7D67
+8156 50CD 99E7 9718
+9B97 9DAB
+FDD0-310A
+4ED6 5B83 5979 7260 7942 94CA 8DBF 584C 6EBB 6999
+891F 5683 95E7
+8E79
+5854 6E9A 5896 35F3 736D 9CCE 737A 9C28
+4EA3 62D3 631E 72E7 95FC 20D32 36E5 5D09 6DBE 3B7C
+6428 40BF 8DF6 69BB 6BFE 420B 905D 9062 3493 79A2
+8ABB 8E0F 64BB 6FBE 9314 6A7D 6FCC 8E4B 979C 9B99
+3FF9 95D2 97B3 56BA 8B76 95E5 2A601 8EA2
+4FA4 549C
+5FD1 5FD2 7279 8CA3 86AE 94FD 615D 92F1 87A3 87D8
+56FC 5B61 80CE
+51AD 53F0 65F2 576E 62AC 90B0 67B1 70B1 70B2 82D4
+83ED 8DC6 3B03 9C90 7B88 81FA 98B1 421A 99D8 5113
+9B90 5B2F 64E1 3E00 6AAF 85B9 7C49
+592A 5933 5FF2 6C70 6001 80BD 949B 6CF0 8226 48ED
+915E 9226 6E99 614B 71E4
+7C8F
+5932 5F22 6D9B 7EE6 638F 8A5C 5ACD 5E4D 6146 642F
+6ED4 7D5B 69C4 746B 97EC 98F8 4231 7E1A 7E27 6FE4
+8B1F 8F41 493E 97B1 97DC 9955
+530B 54B7 6D2E 8FEF 6843 9003 5555 68BC 6DD8 413B
+7EF9 9676 8404 7979 7DAF 872A 88EA 9780 9184 9789
+92FE 932D 99E3 6AAE 9940 9A0A 9F17
+8BA8 8A0E
+5957
+5077 5078 5A7E 5AAE 92C0 936E
+4EA0 5934 6295 9AB0 7DF0 982D
+59B5 94AD 7D0F 3A97 6568 98F3 9EC8 8623
+900F 7D89
+574D 3631 62A9 8D2A 6039 75D1 8211 8CAA 644A 6EE9
+762B 64F9 6524 7058 7671
+575B 212A8 6619 5013 8C08 5A52 60D4 90EF 8983 6983
+75F0 952C 8C2D 58B0 58B5 619B 6F6D 8AC7 9188 58C7
+66C7 71C2 931F 9924 6A80 78F9 9843 7F48 58DC 85EB
+8B5A 8C9A 91B0 8B60 7F4E
+5FD0 5766 43D9 94BD 8892 6BEF 83FC 47A1 926D 55FF
+61B3 61BB 9193 74AE 8962
+53F9 70AD 57EE 63A2 509D 6E60 50CB 5606 78B3 8215
+6B4E 8CE7
+6C64 5763 94F4 6E6F 5621 8025 528F 7FB0 876A 47B6
+4800 9557 859A 8E5A 93DC 940B 97BA 9F1E
+9967 5510 5802 508F 557A 3B7B 68E0 347D 5858 370D
+642A 6E8F 910C 69B6 6F1F 717B 746D 8185 84CE 969A
+6A18 2365F 78C4 799F 7CC3 819B 6A56 7BD6 7CD6 8797
+8E3C 7CDB 87B3 8D6F 91A3 9933 424E 9395 9939 95DB
+9944 28189 9DB6
+4F16 5E11 5018 5052 6DCC 50A5 8EBA 954B 93B2 513B
+6203 66ED 7223 77D8 9482
+70EB 6465 8D9F 71D9
+71A5 81AF 9F1F
+75BC 75CB 5E50 817E 8A8A 6F1B 6ED5 7E22 9086 99E6
+8B04 512F 85E4 9A30 7C50 9C27 7C58 9A63
+972F
+8645
+5254 68AF 3538 9511 8E22 64FF 9DC8 9DC9
+5397 82D0 7EE8 8351 504D 557C 5D39 60FF 63D0 7A0A
+7F07 7F64 9E48 55C1 7445 7D88 9046 78AE 5FB2 6F3D
+7DF9 876D 8906 92BB 9898 855B 8DA7 8E44 918D 8B15
+8E4F 9357 9CC0 9D3A 984C 9BB7 9D5C 9A20 9BF7 9D97
+9D99 79B5 9DE4
+4F53 632E 8EB0 9AB5 9BA7 8EC6 9AD4
+623B 239C2 8FCF 5243 6711 6D1F 501C 608C 6D95 6090
+60D5 63A6 9016 60D6 63E5 66FF 9037 6974 88FC 6B52
+6BA2 8905 9AF0 3B31 568F 8599 9B00 5694 74CB 7C4A
+8DAF 4D91
+5C49 5C5C 7B39 5D5C
+5E16 6017 8D34 8051 841C 8CBC
+94C1 86C8 50E3 9295 92E8 9D29 9421 9435 9A56
+546B 98FB 4D34 992E
+65EB 4F7B 5EA3 604C 6311 7967 3B38 804E
+8280 6761 5CA7 5CB9 8FE2 7952 689D 7B24 8414 47ED
+8D92 9F86 84DA 8729 6A24 84E8 92DA 9AEB 9CA6 9797
+93A5 9BC8 9F60 9C37
+5BA8 6640 6713 3E20 8101 7A95 8A82 4837 7AB1 65A2
+5B25
+773A 7C9C 7D69 899C 8DF3 7CF6
+87A9
+5929 5172 5A56 6DFB 915F 9754 42EC 3B32 9EC7 975D
+7530 5C47 6CBA 606C 754B 7551 76F7 80CB 7560 751B
+751C 6E49 83FE 4852 5861 586B 6437 923F 9617 7DC2
+78CC 7AB4 74B3 95D0 9DC6 9DCF
+5FDD 6B84 500E 35AD 553A 3649 60BF 6DDF 666A 7420
+8146 89CD 75F6 7753 8214 9902 89A5 8CDF 932A 9766
+9369
+3401 63AD 777C 821A
+78B5 9D2B
+5385 5E81 6C40 827C 542C 753A 8013 539B 70C3 686F
+70F4 7D8E 42FC 9793 8074 5EF0 807C 807D 5EF3
+9092 5EF7 4EAD 5EAD 505C 839B 5A77 5D49 6E1F 695F
+7B73 8476 8713 69B3 8064 874F 95AE 9706 8AEA 9F2E
+2123C 5722 753C 4FB9 5A17 633A 6D8F 6883 70F6 73FD
+8121 988B 8247 8A94 9832 2A2B6
+51F8 5B8A 79BF 79C3 6022 7A81 550B 6D8B 6378 5817
+6E65 75DC 8456 5D80 92F5 9D5A 9F35
+56F3 56FE 51C3 5CF9 5EA9 5F92 6087 6348 5C60 688C
+3ECC 837C 9014 63EC 3B78 7A0C 83DF 5715 5857 5D5E
+23225 760F 7B61 816F 922F 5716 5717 5EDC 6F73 84A4
+8DFF 9174 48DD 999F 934E 99FC 9D4C 9D9F 9DCB 9DF5
+571F 5721 5410 948D 91F7
+514E 5154 8FCC 580D 9D75
+6C62 6D82 83B5
+4E47 4EDB 8BAC 6258 6261 6C51 9966 6754 4F82 5483
+62D5 62D6 6CB0 6329 635D 8A17 6DB6 812B 8131 838C
+88A5 98E5 9B60 9A5D
+9A6E 4F57 5768 5CAE 6CB1 6CB2 72CF 9640 9641 8FF1
+7823 7824 9E35 7D3D 8889 5836 8DCE 9161 99B1 69D6
+78A2 4B7E 99C4 99DE 6A50 9B80 9D15 9F27 9A28 9F0D
+9A52 9F09
+5F75 59A5 5EB9 5AA0 692D 6955 5AF7 6A62 9D4E 9B0C
+9C16
+67DD 6BE4 553E 841A 8DC5 6BFB 7BA8 8600 7C5C
+9A7C 99DD
+63A8 84F7 85EC
+5F1A 4003 9893 5C35 96A4 9839 983A 983D 9B4B 7A68
+8E6A 8608 3FD7
+4FC0 50D3 817F 8E46 9ABD
+4FBB 5A27 9000 717A 86FB 8715 892A 99FE
+6E4D 732F 7153 474E 8C92 4D4E
+56E2 56E3 629F 5278 5718 6171 6476 6F19 69EB 7BFF
+6AB2 93C4 7CF0 9DD2 9DFB
+7583
+5F56 6E6A 8916
+541E 5451 6D92 554D 671C 711E 564B 66BE 3B3F 9ED7
+5C6F 5749 5FF3 9968 829A 8C58 8C5A 8ED8 98E9 9C80
+9B68 3A54 9715 81C0 81CB
+6C3D 757D
+65FD
+56F2 70B5 75CC 901A 55F5 84EA
+4EDD 540C 4F5F 5F64 5CC2 5E9D 54C3 5CDD 72EA 664D
+6850 6D75 70D4 783C 833C 8692 772E 79F1 94DC 7AE5
+7CA1 26A34 7B69 8A77 8D68 916E 9256 50EE 52ED 9275
+9285 9907 9C96 6F7C 735E 66C8 6723 6A66 6C03 71D1
+729D 81A7 3F3F 77B3 9BA6 2648D 4D00
+7EDF 6345 3A8C 6876 7B52 7D71 7D82 6A0B
+6078 75DB 8855 615F 6185
+FDD0-310B
+55EF
+62CF 62FF 6310 55F1 954E 93BF
+4E78 54EA 96EB
+59A0 7EB3 90A3 80AD 94A0 5A1C 7D0D 8872 637A 7B1D
+25E49 88A6 8C7D 8EDC 8C80 9209 9779 84B3 24E3B 9B76
+422B
+7592 8BB7 6290 7732 8A25
+5436 5450 5462
+8149 718B 6468 5B7B
+4E43 5976 6C16 827F 7593 59B3 5EFC 5037 8FFA 91E2
+5B2D
+5948 67F0 800F 8010 217AB 6E3F 8418 9F10 879A 8926
+933C
+5A1E 9981 812E 8147 9912 9BBE 9BD8
+5167 5185 343B 6C1D 9317
+5B6C
+5476 6013 6320 5CF1 7847 94D9 7331 86F2 8A49 7899
+6493 5DA9 61B9 87EF 5912 8B4A 9403 5DCE
+57B4 607C 60A9 8111 5318 5816 60F1 5AD0 7459 8166
+78AF 4700 7376 737F
+95F9 5A65 6DD6 9599 9B27 81D1
+8133
+7FBA
+5542
+69C8 8028 7373 6ABD 9392 941E 8B73
+56E1
+7537 678F 67AC 4FBD 5357 67DF 5A1A 7558 96BE 83AE
+5583 6694 6960 8AF5 96E3 27574
+8D67 63C7 6E73 8169 8433 4212 877B 6201
+266DA 5A7B 3B2E
+9056
+6041 5AE9 5AF0
+56D4
+4E6A 56A2 8B68 56CA 8830 9B1E 9995 6B1C 9962
+64C3 66E9 652E 7062
+513E 9F49
+80FD
+20E4C 28D99
+59AE
+5C3C 576D 37BE 6029 6CE5 7C7E 502A 5C54 79DC 94CC
+57FF 5A57 6DE3 730A 86AD 4626 90F3 68FF 249A4 46CF
+8DDC 815D 8063 873A 89EC 8C8E 8F17 9713 9CB5 9BD3
+9BE2 9E91 9F6F 81E1
+4F31 4F60 62B3 62DF 72D4 67C5 82E8 65CE 6672 5B74
+922E 999C 5117 511E 64EC 96AC 6AB7 85BF 807B
+5C70 6C3C 4F32 23CB7 6635 80D2 8FE1 7724 9006 533F
+5804 60C4 6135 6EBA 7768 817B 5ADF 66B1 8ABD 4065
+7E0C 81A9 5B3A 2A65B
+88AE
+634F 63D1
+82F6
+5E07 26612 573C 67BF 6D85 75C6 8042 81EC 9667 556E
+60D7 55A6 655C 6E7C 83CD 9689 55EB 5D72 8E02 565B
+6470 69F7 8E17 954A 954D 5DAD 7BDE 81F2 931C 989E
+8E51 5699 8076 93B3 95D1 5B7C 3738 5B7D 6AF1 7C4B
+56C1 8616 9F67 23033 7CF1 8825 9448 7CF5 56D3 8B98
+8EA1 9477 9873 9480 4BC0
+5DD5
+9E1F 8311 3B64 8885 9CE5 5ACB 88CA 6A22 8526 5B1D
+892D 5B32 3735
+5C3F 8132
+599E
+2EA7 725B 6C7C
+5FF8 626D 72C3 7EBD 7084 94AE 7D10 83A5 9215 9775
+8842 42F4
+725C
+62C8 852B
+5E74 79CA 79E5 9C87 9B8E 9CB6 9ECF 9BF0
+6D8A 637B 6DF0 713E 8DC8 8F87 8F97 649A 64B5 78BE
+8F26 7C10 8E4D 6506 8E68 8E8E
+5344 5EFF 5FF5 59E9 5538 57DD 824C 9F30
+54D6 9D47
+56DC 60A8 42FB
+62F0
+810C
+5B22 5B43
+917F 91B8 91C0
+5A18
+5B81 549B 62E7 72DE 67E0 82E7 804D 5BCD 5BD5 752F
+5BD7 5BDC 5BE7 511C 51DD 5680 5B23 64F0 7370 6AB8
+85B4 8079 27B48 944F 9B21 9E0B
+6A63 77C3
+4F5E 4FAB 6CDE 6FD8
+6F9D
+5974 5B65 9A7D 7B2F 99D1
+4F2E 52AA 5F29 782E 80EC
+6012 5089 6419
+90CD 632A 689B 50A9 513A
+6A60
+8BFA 558F 611E 2272A 63BF 6426 903D 9518 643B 6992
+7A2C 7CD1 8AFE 8E43 61E6 61E7 7CE5 7A64 7CEF
+597B
+6E1C 3B09 6696 7156 7157 992A
+9EC1
+519C 4FAC 54DD 6D53 8113 79FE 8FB2 5102 8FB3 5665
+6FC3 6A82 71F6 81BF 857D 79AF 7A60 895B 91B2 6B01
+7E77
+5F04 630A 7651 9F48
+5973 9495 7C79 91F9
+6C91 6067 6712 8844 46BC
+759F 8650 7878 7627
+FDD0-310C
+5783 62C9 67C6 7FCB 83C8 641A 908B
+65EF 524C 782C 63E6 78D6
+5587 85DE
+814A 63E7 694B 760C 8721 874B 8FA2 8FA3 8772 81C8
+650B 7209 81D8 9B0E 74CE 9574 9BFB 881F 945E
+5566 6E82 97A1 56B9
+56D6
+808B
+4EC2 3539 4E50 53FB 5FC7 6250 6C3B 961E 738F 827B
+6CD0 7AFB 7833 697D 97F7 6A02 7C15 39A1 9CD3 9C33
+4E86 9979 990E
+6765 4F86 4FEB 5008 5D03 5F95 6D9E 5A61 5D0D 5EB2
+5FA0 68BE 6DF6 730D 83B1 90F2 68F6 741C 7B59 840A
+9028 94FC 7B82 42F1 28090 9338 9A0B 9BE0 9D86 9EB3
+553B 8D49 7750 775E 8D56 8CDA 6FD1 8CF4 983C 9842
+21096 765E 9D63 7028 702C 7C41 6AF4 3E0A 85FE 7669
+7C5F 8970
+52D2
+96F7 5AD8 7F27 757E 8502 64C2 3D62 6A91 7E32 790C
+956D 6AD1 74C3 7FB8 7927 7E8D 7F4D 881D 9433 8632
+8F60 513D 58E8 9458 9741 6B19 8646 7E9D 9F3A
+53BD 8012 8BD4 5792 7D6B 8142 50AB 8A84 6A0F 78CA
+78E5 854C 5121 4242 857E 58D8 3D7D 7657 6AD0 85DF
+7928 7045 8B84 863D 9478 9E13
+6CEA 6D21 7C7B 6D99 6DDA 7D2F 28024 9179 9287 981B
+982A 9311 48AE 6502 98A3 985E 426A 7E87 8631 79B7
+5841 561E 9C69
+635E 6488
+52B3 52B4 7262 7A82 54F0 5520 5D02 6D76 52DE 75E8
+94F9 50D7 562E 37A0 5D97 61A5 24A42 7646 78F1 7C29
+87E7 91AA 9412 985F 9ADD
+8002 8001 4F6C 54BE 59E5 6045 72EB 6833 8356 94D1
+41ED 92A0 6F66 6A51 8F51
+6D9D 70D9 8022 916A 5AEA 61A6 6F87 8EBC 6A6F 802E
+8EC2
+73EF 7853 266E8 7CA9 86EF 6725 9BB1
+779C
+5245 5A04 507B 5A41 6E87 50C2 697C 848C 5ED4 617A
+6F0A 6A13 71A1 8027 851E 877C 9071 802C 825B 87BB
+8B31 8EC1 9AC5 97BB 9ACF
+5D5D 6402 587F 5D81 645F 7BD3 750A 7C0D
+3537 964B 5C5A 6F0F 7618 9542 763A 763B 93E4
+55BD 560D
+5170 5C9A 62E6 680F 5A6A 60CF 5D50 9611 847B 84DD
+8C30 53B1 6F9C 5116 6593 7BEE 8934 61E2 71E3 71F7
+9567 95CC 74BC 85CD 8955 8B4B 2814F 5E71 6514 703E
+7C43 7E7F 8964 6595 6B04 7046 862D 7937 7C63 8974
+56D2 7061 8B95 8E9D 6B17 9484 97CA
+89C8 6D68 36E6 63FD 7F06 6984 6F24 7F71 9182 58C8
+61D2 89A7 3A5C 64E5 5B3E 61F6 5B44 89BD 432B 5B4F
+652C 7060 56D5 6B16 9872 7E9C
+70C2 6EE5 71D7 5682 6FEB 7201 721B 74D3 7224 946D
+7CF7
+7226 897D
+5577
+52C6 90CE 6B34 72FC 90DE 9606 658F 6879 3C62 7405
+5ACF 5ECA 7860 7A02 9512 6994 746F 7B64 8246 84C8
+870B 8EB4 8782 92C3 93AF 99FA
+6717 6716 70FA 365F 5871 6A03 84E2 8A8F 3BBE 6724
+57CC 5D00 6D6A 3AF0 83A8 20E98 8497 95AC
+5525 90D2
+3604
+5D1A 5844 68F1 695E 7890 7A1C 8F18 4244 8590
+51B7
+5030 580E 6123 7756 8E1C
+5215 675D 5398 5253 9A8A 60A1 68A8 68A9 68B8 7281
+740D 79BB 7C9A 8372 55B1 68C3 3D1D 7282 83DE 9E42
+527A 6F13 3E48 775D 7B63 7F21 8243 870A 20ED7 20F1D
+5AE0 5B77 76E0 8C8D 3992 6A06 7483 7CCE 84E0 92EB
+9CA1 9ECE 7F79 853E 26E99 9305 7BF1 7E2D 4527 87CD
+8935 569F 8B27 91A8 91D0 96E2 6584 3C00 74C8 85DC
+908C 93EB 9BEC 9D79 9EE7 56C4 8821 9A39 5B4B 5EF2
+6521 7055 5299 863A 9457 7A72 7C6C 7E9A 9A6A 9C7A
+9E1D
+793C 91CC 4FDA 5CDB 5CE2 5A0C 5CF2 6D6C 7406 9026
+9502 7CB4 88CF 8C4A 92F0 9CA4 5163 6FA7 79AE 9BC9
+87F8 91B4 9CE2 9090 9C67 6B1A
+529B 5386 5389 5C74 7ACB 540F 6738 4E3D 5229 52B1
+5456 575C 6CA5 4F8B 3578 5CA6 623E 67A5 6CB4 75A0
+82C8 96B6 4FD0 4FEA 3926 680E 75AC 7805 82D9 8D72
+8F79 3466 550E 60A7 6817 681B 6D96 7301 73D5 783A
+783E 79DD 8318 8354 90E6 5533 5A6F 7B20 7C92 7C9D
+8137 8385 8389 86B8 86CE 5088 51D3 53A4 68D9 75E2
+86E0 8A48 8DDE 96F3 53AF 585B 6144 642E 6EA7 925D
+9CE8 3B0F 66A6 6B74 746E 7D9F 849A 849E 8727 53B2
+8777 66C6 6B77 7BE5 4509 96B7 29D98 9D17 52F5 3EFA
+78FF 96B8 9B01 512E 5DC1 6FFF 7658 9398 56A6 58E2
+650A 66DE 6AD4 6ADF 701D 7204 72A1 74C5 8807 9E97
+6AEA 720F 74D1 76AA 76ED 77CB 792A 792B 79B2 85F6
+34A7 5137 7667 7930 7CF2 8823 882B 9DC5 9E9C 56C7
+6526 2789D 89FB 8E92 8F62 9148 6B10 8B88 2829B 8F63
+652D 74E5 9742 299C3 9C71 9C73 974B
+674E 6803 54E9 5A33 72F8 88E1 6AAA 9BCF
+4FE9 5006
+5217 52A3 51BD 52BD 39DC 59F4 6312 6D0C 54F7 57D2
+57D3 3920 3B5E 6835 6D56 70C8 8322 8FFE 6369 3B69
+730E 811F 86DA 88C2 716D 7759 8057 8D94 5DE4 98B2
+5120 9BA4 9D37 64F8 7375 72A3 8E90 9B1B 3B2F 9B23
+9C72
+6BDF 54A7 6318 70EE 731F
+64A9 8E7D
+8FBD 7597 804A 50DA 5BE5 5D7A 6180 6F3B 818B 5639
+5AFD 5BEE 5D9A 5D9B 6579 7360 7F2D 66B8 71CE 7499
+81AB 907C 3D73 7642 9E69 5C6A 5EEB 7C1D 7E5A 87DF
+8C42 8CFF 8E58 9410 85D4 98C9 9ACE 9DEF
+53FE 4126 948C 91D5 911D 61AD 84FC 77AD 66E2 957D
+7212
+5C25 5C26 7093 6599 5C1E 5ED6 6482 7AB7 9563
+720E
+6E9C 7198 8E53
+5218 6CA0 7544 6D41 6D4F 7409 7559 65C8 7571 786B
+88D7 28EE7 5AB9 5D67 65D2 84C5 998F 9A9D 69B4 7460
+84A5 905B 98D7 5289 746C 7624 78C2 954F 99E0 9E60
+6A4A 74A2 7581 9560 7645 87C9 295E9 99F5 56A0 61F0
+700F 938F 93A6 9E8D 85F0 93D0 98C0 9A2E 98C5 9C21
+9DB9 9A51
+39D5 67F3 6801 73CB 687A 7EFA 950D 925A 98F9 7DB9
+71AE 7F76 92F6 6A6E 5B3C 7F80
+516D 7542 7FCF 586F 5EC7 6F91 78DF 9E68 9724 993E
+96E1 9402 98C2 9B38 9DDA
+685E
+5941 5E18 601C 8FDE 6D9F 68BF 83B2 467A 9023 8054
+4EB7 5EC9 6E93 5332 55F9 5969 6169 6F23 7191 88E2
+899D 5286 5333 5652 5AFE 6190 69E4 78CF 806B 84EE
+9CA2 6FC2 6FD3 806E 878A 71EB 7E3A 7FF4 806F 81C1
+8595 8933 8B30 8E65 938C 9570 6AE3 7C3E 880A 9B11
+4965 942E 9C31 7C62 7C68
+655B 740F 8138 88E3 6459 7489 8539 5B1A 6582 3BEC
+81C9 913B 7FB7 895D 861E
+7EC3 70BC 604B 6D70 6B93 581C 3703 5AA1 3C68 6E45
+94FE 50C6 695D 7149 7453 8430 6F4B 7DF4 6FB0 932C
+6BAE 934A 93C8 3D91 7032 9C0A 861D 6200 373B 7E9E
+8068
+62CE
+53B8 6797 90BB 4E34 51A7 77DD 5549 5D0A 6DCB 667D
+7433 7CA6 75F3 7884 7B96 7CBC 5D99 6F7E 735C 9130
+96A3 65B4 66BD 71D0 7498 8F9A 9074 9716 77B5 78F7
+81E8 7E57 7FF7 9E90 8F54 58E3 7036 93FB 9CDE 9A4E
+9C57 9E9F
+342D 3A06 83FB 4E83 51DB 51DC 649B 5EE9 5EEA 61CD
+61D4 6F9F 6A81 6AA9 765B 765D
+541D 6061 608B 8D41 711B 8CC3 50EF 853A 6A49 81A6
+95B5 7510 7584 8E78 85FA 8E8F 8E99 8EAA 8F65
+826F 4FCD 51C9 6881 6DBC 690B 8F8C 7CAE 7CB1 589A
+7DA1 8E09 6A11 8F2C 7CE7
+4E21 4E24 34B3 5169 5521 5562 639A 813C 7DC9 873D
+88F2 9B49 9B4E
+4EAE 54F4 60A2 8C05 8F86 55A8 667E 6E78 91CF 8F0C
+8AD2 8F1B 9344
+7177 7C17
+3007 5222 7075 56F9 577D 590C 59C8 5CBA 5F7E 6CE0
+72D1 6624 670E 67C3 73B2 82D3 51CC 74F4 768A 7831
+79E2 7ADB 94C3 9E30 5A48 6395 68C2 6DE9 740C 7B2D
+7D37 7EEB 4345 7F9A 7FCE 8046 8232 86C9 8851 9675
+83F1 8A45 8DC9 8EE8 797E 9234 959D 96F6 9F84 420A
+7DBE 88EC 8506 970A 99D6 6FAA 9302 9B7F 9CAE 9D12
+9E77 3B21 71EF 4241 4516 8576 971B 971D 9F62 9BEA
+5B41 9143 9F61 6AFA 8626 91BD 9748 2331F 6B1E 7227
+24AE9 9EA2 4585 9F97
+5CAD 963E 888A 9886 9818 5DBA
+4EE4 53E6 5464 70A9
+4F36 84E4 9717 702E
+565C 64B8
+5362 5E90 5786 6CF8 7089 82A6 3B54 680C 80EA 8F73
+9E2C 7388 823B 9885 9C88 9B72 76E7 56A7 58DA 3820
+5EEC 650E 6ADA 7018 7379 74B7 66E5 6AE8 7210 74D0
+81DA 8606 77D1 7C5A 7E91 7F4F 826B 8826 8F64 946A
+9871 9AD7 9C78 9E15 9EF8
+5364 864F 63B3 9E75 7875 9C81 865C 5877 6EF7 6A10
+84FE 9B6F 64C4 6A79 78E0 9565 5695 64FC 7002 6AD3
+6C0C 8263 93C0 826A 942A 9465
+5725 752A 4F93 5774 5F54 5F55 9646 5CCD 52CE 8D42
+8F82 5A3D 6DD5 6DE5 6E0C 7849 9678 9E7F 3A90 6902
+742D 7984 4402 83C9 902F 50C7 5279 52E0 76DD 7769
+788C 797F 7A11 8CC2 8DEF 5876 5ED8 645D 6F09 7B93
+7CB6 21014 622E 6A1A 719D 8194 850D 89EE 8DA2 8E1B
+8F98 9181 3BDD 6F5E 7A4B 9304 9332 9334 7490 7C0F
+8557 87B0 8E57 8F46 9A04 298F1 9E6D 7C2C 7C36 93D5
+9BE5 9D66 9D71 9E93 93F4 9732 9A3C 7C59 9DFA 8642
+67A6 822E 9229 6F9B 6C07
+7F57 5570 9831 56C9
+7F56 7321 8136 6924 841D 8999 903B 8161 9523 7BA9
+9AA1 9559 87BA 7F85 89B6 93CD 5138 89BC 9A3E 21922
+651E 7380 6B0F 268C7 863F 908F 9A58 9E01 7C6E 947C
+9960
+5246 502E 84CF 88F8 8EB6 7630 3A61 3C01 8803 81DD
+66EA 7673
+6CFA 5CC8 6D1B 7EDC 9A86 6D1C 73DE 8366 7866 7B3F
+7D61 55E0 843D 645E 6F2F 7296 927B 96D2 99F1 9BA5
+9D3C 9D45 6FFC 277CC 7E99
+5A08 5B6A 5CE6 631B 683E 9E3E 8114 6EE6 92AE 9D49
+571D 5971 5B4C 5B7F 5DD2 6523 66EB 6B12 7053 7F89
+81E0 571E 7064 864A 947E 7674 7675 9E1E
+5375
+4E71 91E0 4E82
+62A1 6384
+4ED1 4F26 56F5 6CA6 7EB6 4F96 8F6E 502B 5707 5A68
+5D18 5D19 60C0 6DEA 966F 68C6 3DCD 8140 83D5 4201
+7DB8 8726 8E1A 8F2A 9300 9BE9
+57E8 7896 7A10 8023
+8BBA 6EA3 8AD6
+78EE
+9F99 5C78 5499 6CF7 663D 680A 73D1 80E7 830F 772C
+783B 7ADC 7B3C 804B 6E70 9686 6EDD 20F90 5D90 6F0B
+3863 7BED 856F 9F8D 7643 56A8 5DC3 5DC4 7027 7C3C
+93E7 66E8 6727 3C0D 6AF3 7216 74CF 8622 9733 77D3
+7931 7932 9F92 7C60 807E 882A 882C 8971 8C45 8E98
+9468 9747 4BBE 9A61 9E17
+5784 5785 62E2 9647 3D33 7BE2 5131 58DF 58E0 650F
+96B4 7AC9 9F93
+54E2 6335 6887 5FBF 8D1A
+69DE 7ABF
+9A74 95FE 90D8 6988 99BF 6C00 81A2 95AD 85D8 9DDC
+9A62
+5415 5442 4FA3 4FB6 6314 36CE 634B 635B 65C5 3B5A
+68A0 7963 7A06 94DD 5C61 7F15 7D7D 5C62 8182 5C65
+891B 92C1 8190 5122 7A5E 7E37 8938 7A6D
+5BFD 578F 5F8B 8651 7387 7EFF 20DC8 5D42 6C2F 6EE4
+844E 7DA0 7DD1 616E 7BBB 819F 52F4 7E42 6FFE 6AD6
+7208 9462
+7112
+7567 950A 7A24 3500 5719 3A3C 92DD 92E2 64FD
+FDD0-310D
+65EE 5477 560E 5620
+9486 5C1C 5676 9337
+5C15 738D
+5C2C 9B40
+6208 4EE1 572A 72B5 7EA5 20BEB 6213 8090 726B 7599
+54AF 7271 54E5 80F3 9E3D 5272 6401 88BC 20E9D 6ED2
+6228 6B4C 29FB7 9D10 9D1A 64F1 8B0C 9D3F 93B6
+5444 3837 4F6E 530C 630C 9601 9769 654B 3B58 683C
+8316 9B32 6105 81F5 86D2 55DD 5865 6EC6 845B 88D3
+89E1 9694 643F 69C5 8188 95A3 95A4 4213 9549 9788
+97D0 7366 8AFD 8F35 9ABC 9BAF 97DA 97B7 9A14 4601
+8F55
+54FF 8238
+4E2A 5404 867C 500B 784C 94EC 55F0 7B87
+5F41 6ACA
+4F85 8BE5 5793 59DF 5CD0 90C2 9654 6650 8344 8D45
+7561 7974 7D6F 8A72 8C65 8CC5
+5FCB 6539 7D60
+4E10 4E62 5303 5304 9623 675A 9499 76D6 6461 6E89
+9223 6224 6982 8462 8CCC 9691 6F11 84CB 3562 69E9
+69EA 74C2
+7ED9 7D66
+768B 7F94 7F99 9AD8 7690 2690E 9AD9 81EF 6EDC 69D4
+777E 818F 69F9 6A70 7BD9 7CD5 993B 6ADC 9DCE 9F1B
+9DF1
+5930 6772 83D2 641E 7F1F 66A0 69C0 69C1 3D46 7A3E
+7A3F 9550 7E1E 6ABA 85C1 85F3
+543F 544A 52C2 53DD 8BF0 90DC 796E 7970 9506 7170
+7B76 8AA5 799E 92EF
+97DF
+52FE 4F5D 6C9F 94A9 88A7 7F11 920E 6E9D 9264 7DF1
+7BDD 8920 97B2 97DD
+5CA3 72D7 82B6 67B8 73BD 8007 82DF 7B31 8008 8009
+86BC 8C7F
+5778 6784 8BDF 8D2D 57A2 59E4 5193 8329 591F 5920
+8A3D 5ABE 5F40 6406 8A6C 96CA 69CB 7179 89CF 9058
+6480 89AF 8CFC
+7518 5FD3 653C 6746 3DA5 7395 809D 8289 8FC0 5769
+6CD4 77F8 4E79 67D1 7AFF 82F7 75B3 9150 4E7E 7C93
+4E81 51F2 5C32 5C34 7B78 6F27 9CF1 5C36 5C37 9B50
+4EE0 625E 76AF 79C6 8866 8D76 687F 7B34 6562 7A08
+611F 8D95 6F89 64C0 6A44 7C33 9C14 9CE1 9C64
+5E72 65F0 6C75 76F0 7EC0 501D 51CE 6DE6 7D3A 8A4C
+5E79 9AAD 69A6 6A8A 8D11 8D63 8D1B 7068
+6839 8DDF
+54CF
+826E
+4E98 4E99 831B 63EF
+5188 7F53 51AE 521A 6760 7EB2 809B 5CA1 3B4E 7268
+7598 77FC 7F38 94A2 525B 7F61 5808 6386 91ED 68E1
+7285 583D 7DB1 7F41 92FC 93A0
+5C97 3F58 5D17 6E2F
+7135 7B7B 69D3 6205 6206
+522F 5E9A 754A 6D6D 3E74 8015 6404 713F 7D5A 83EE
+8D53 9E52 7DEA 7E06 7FAE 8CE1 7FB9 9D8A
+54FD 57C2 5CFA 632D 7EE0 803F 90E0 231B3 6897 8384
+3F98 7D86 4304 9CA0 9ABE 9BC1
+66F4 5829 6685 4C4D 4C6D
+63B6 6929
+4F30 5471 59D1 5B64 6CBD 6CD2 67E7 82FD 8F71 5502
+7F5B 9E2A 7B1F 86C4 83F0 89DA 8EF1 8EF2 8F9C 9164
+9232 7B8D 7B9B 5AF4 6A6D 443B 9B95 9D23
+9DBB
+5903 53E4 6262 6C69 8BC2 8C37 80A1 726F 2EE3 5503
+4026 7F5F 7F96 94B4 9AA8 5552 6DC8 8135 86CA 86CC
+8A41 9E44 5C33 6132 6BC2 9237 9989 9F13 9F14 560F
+6996 69BE 76B7 84C7 7A40 9E58 7CD3 7E0E 6FF2 76BC
+81CC 85A3 8F42 7014 76EC 77BD 9936 4D9C 8831
+56FA 6545 51C5 987E 580C 5D13 5D2E 688F 727F 68DD
+96C7 75FC 797B 7A12 9522 50F1 932E 9CB4 9BDD 9867
+5495 5CE0 9027 50A6 83C7 7BD0
+74DC 522E 80CD 681D 20D6F 9E39 8052 44B7 6B44 7171
+8D8F 5280 7DFA 92BD 98B3 8E3B 9D30 9A27
+53E7 518E 5250 526E 5BE1 4211
+5366 576C 8BD6 6302 5569 639B 7F63 7D53 7F6B 8A7F
+8902
+98AA
+5459 54BC 57DA 5D1E 90ED 581D 921B 9505 5613 588E
+7611 8748 5F49 35FB 6FC4 87C8 934B 5F4D
+56EF 56F6 56FB 56FD 5700 570B 5E3C 8158 5E57 6156
+6F0D 805D 8195 852E 8662 9998 27C12 4190
+679C 60C8 6DC9 7313 9983 6901 83D3 7CBF 7DB6 873E
+88F9 69E8 8F20 9301 991C 9439
+8FC7 904E
+556F
+4E56 63B4 6451
+62D0 67B4 67FA 27285 7B89
+592C 53CF 602A 39D4 6060
+5F52 572D 59AB 9F9F 89C4 7688 90BD 95FA 5E30 73EA
+80FF 8325 4E80 7845 4145 7A90 898F 5080 5AAF 691D
+88BF 5EC6 90CC 5AE2 646B 7470 95A8 9C91 5B00 69FB
+69FC 749D 81AD 879D 9F9C 9BAD 5DC2 6B78 9B36 74CC
+9A29 9B39 6AF7
+5B84 6C3F 6739 8F68 5E8B 4F79 5326 8BE1 20C53 579D
+59FD 6051 6531 7678 8ECC 9652 5EAA 9B3C 532D 796A
+6677 6E40 436F 86EB 3533 89E4 8A6D 53AC 3A33 4925
+87E1 77A1 7C0B
+6530 523D 523F 660B 7094 67DC 8D35 3A88 6842 6867
+7324 7B40 8CB4 8DEA 5331 84D5 528A 528C 5DA1 648C
+69F6 4210 4434 6A9C 77B6 7C02 6AC3 7650 79AC 8958
+9CDC 97BC 9C56 9C65
+6922
+5173 89C2 5B98 51A0 898C 500C 20D28 68FA 7AA4 8484
+95A2 761D 764F 89B3 95D7 9CCF 95DC 9C25 9C5E 89C0
+839E 9986 742F 75EF 7B66 7BA1 8F28 8218 9327 9928
+9CE4
+6BCC 4E31 8D2F 6CF4 60BA 60EF 63BC 6DAB 8CAB 60B9
+3D26 3BA1 797C 6163 645C 6F45 6A0C 9066 76E5 7F46
+465B 96DA 93C6 704C 721F 74D8 9E73 77D4 7936 7F50
+9475 9C79 9E1B
+4E28 200CC 886E 60C3 7EF2 889E 88AC 8F8A 6EDA 6EFE
+7DC4 84D8 78D9 8509 8F25 9CA7 25566 9B8C 9BC0
+68CD 7754 3665 7774 74AD 8B34
+5149 706E 4F8A 7097 709B 54A3 5799 59EF 6D38 6844
+70E1 80F1 832A 8F04 50D9 92A7 9EC6 299C9
+5E7F 5E83 72B7 5EE3 81E9 7377 2A1F5
+4FC7 73D6 901B 81E6 6497 29448
+709A 6B1F
+5DE5 5F13 516C 53B7 529F 653B 675B 4F9B 739C 7CFC
+80B1 5BAB 5BAE 606D 8EAC 9F9A 5311 5868 5E4A 6129
+89E5 7195 8EB3 78BD 9AF8 4CCD 89F5 9F8F 9F94
+5EFE 5DE9 6C5E 62F1 39EC 62F2 3B5F 6831 73D9 3F26
+8F01 92DB 978F 4C4B
+5171 8D21 7FBE 551D 8CA2 83BB 3536
+86A3 6150
+FDD0-310E
+5494 5496 5580 8849 64D6
+5361 4F67 80E9 9272
+57B0 88C3
+533C 3E2F 22208 67EF 7241 73C2 79D1 80E2 82DB 8F72
+75B4 7822 8DB7 68F5 8EFB 988F 55D1 6415 7290 7A1E
+7AA0 842A 9233 69BC 4426 9897 6A16 778C 78D5 4300
+874C 9312 8596 9198 9846 9AC1 791A
+58F3 63E2 6BBC 7FD7
+53EF 5777 37B9 5CA2 3ABC 70A3 6E07 5D51 6564 6E34
+5DB1 790D
+514B 523B 524B 52C0 52CA 5BA2 606A 20CED 5A14 5C05
+8BFE 20DB2 5801 6C2A 9A92 7F02 6119 6E98 951E 78A6
+7DD9 8250 8AB2 790A 9A0D 2A0ED
+5D59
+5F00 5952 63E9 950E 958B 4924 9426
+51EF 5240 57B2 607A 95FF 94E0 51F1 5274 6168 584F
+5D66 6137 6977 8488 8F06 5605 669F 9534 4057 9347
+93A7 95D3 98BD
+5FFE 708C 708F 6B2C 70D7 52D3 6112 613E 938E
+5C3B 9ADB
+4E02 6537 8003 62F7 6D18 6832 70E4 7A01 9C93 71FA
+94D0 7292 92AC 9760 9BB3 9BCC
+62A0 26B05 82A4 770D 527E 5F44 6473 7798 4071
+53E3 24618 52B6
+53E9 6263 6542 51A6 5BBC 5BC7 3C2F 91E6 7A9B 7B58
+6EF1 7789 8532 853B 7C06 9DC7
+520A 681E 52D8 9F9B 582A 5D41 6221 9F95
+519A 574E 4F83 780D 5058 57F3 60C2 83B0 6B3F 586A
+6B41 69DB 8F21 6ABB 9851 7AF7 8F57
+770B 884E 5D01 5888 78E1 77B0 95DE 77D9
+808E 80AF 80BB 57A6 6073 5543 8C64 9F88 58BE 9339
+61C7 9F66
+63AF 88C9 8903
+5FFC 95F6 780A 7C87 5EB7 21413 5ADD 5D7B 6177 6F2E
+69FA 7A45 41B2 7CE0 8EBF 93EE 9C47
+625B 6443
+4849
+4EA2 4F09 531F 56E5 6297 72BA 909F 7095 94AA 9227
+958C
+52A5 542D 5751 5994 962C 6333 7841 727C 785C 94FF
+787B 647C 8A99 92B5 40D8 935E 93D7
+625D 5233 77FB 67AF 80D0 90C0 54ED 684D 5800 5D2B
+35C4 5710 8DCD 7A9F 9AB7 26846 9BAC
+72DC 82E6
+3838 5E93 4FC8 7ED4 5EAB 79D9 8DB6 7105 55BE 7D5D
+88B4 88E4 7614 9177 5EE4 8932 56B3
+5938 59F1 8A87
+4F89 54B5 57AE 9299
+3404 630E 80EF 8DE8 9ABB
+823F
+6269 62E1 62EC 6304 6870 7B48 86DE 9614 843F 8440
+5ED3 9822 9AFA 6FF6 95CA 979F 61D6 64F4 9729 97B9
+9B20
+97D5
+39DF 84AF 64D3
+5DDC 51F7 5757 5FEB 4FA9 54D9 72EF 90D0 810D 584A
+3C6E 7B77 9C99 5108 58A4 5672 5EE5 736A 9136 81BE
+65DD 7CE9 9C60
+5726
+4E8F 5232 5CBF 609D 76D4 7AA5 8067 7ABA 8667 95DA
+985D 5DCB 862C
+594E 6646 9804 9997 55B9 63C6 45AF 9035 9108 9A99
+6223 668C 694F 6951 8475 9697 777D 9B41 8770 4906
+982F 367A 9368 9377 6AC6 85C8 9A24 5914 8637 8641
+5DD9 2A1B4 72AA 8EA8
+7143 8DEC 980D 8E5E
+5C2F 532E 6B33 559F 6126 6E83 8143 9988 5ABF 6127
+8489 7786 5633 5B07 6192 6F70 7BD1 8069 4646 6A3B
+806D 8562 8B09 7C23 8075 993D 7C44 9400 994B 944E
+4C0E
+5BBD 5BDB 5BEC 81D7 9ACB 9AD6
+6B35 6B3E 6B40 7ABE 4540
+7ABD 9467
+5764 6606 5803 5A6B 5D10 5D11 665C 7311 711C 7428
+83CE 88C8 9AE0 8C87 951F 9AE1 9E4D 872B 88E9 9AE8
+747B 890C 918C 9315 9CB2 9A09 9BE4 9D7E 9DA4
+6083 6346 9603 58F8 68B1 7871 7975 7A07 58FC 7A1B
+7D91 88CD 95AB 95B8 9F6B
+56F0 6D83 3AFB 774F
+5812 5C21 6F49 71B4
+5321 344C 52BB 8BD3 5329 54D0 6047 6D2D 90BC 6846
+7844 7B50 44B0 8A86 8EED
+5FF9 6282 72C2 8BF3 8ED6 8A91 9D5F
+593C 5123 61ED
+535D 5739 7EA9 909D 51B5 65F7 5CB2 6CC1 77FF 663F
+8D36 7716 7736 7D56 8CBA 8EE6 9271 58D9 8E80 913A
+9ECB 61EC 66E0 720C 77CC 7926 7A6C 7E8A 945B
+783F 7D4B 7B7A
+7A7A 369A 5025 57EA 5D06 60BE 6DB3 787F 7B9C 9313
+9D7C
+5B54 233FA 6050
+63A7 26048 979A
+8EBB
+FDD0-310F
+5677
+54C8 94EA
+86E4
+5964
+4E37
+8BC3 62B2 6B31 559D 8A36 55EC 881A
+79BE 5408 4F55 52BE 5392 548A 548C 59C0 6CB3 5CC6
+3A83 66F7 67C7 72E2 76C7 7C7A 7D07 90C3 9602 9978
+54EC 3A89 6546 6838 76C9 76CD 555D 3B71 6DB8 76D2
+79F4 8377 86B5 9F81 60D2 6E2E 83CF 8402 8A38 988C
+6941 6BFC 8A65 8C88 47A6 8F05 924C 9616 9C84 3561
+7186 9E56 9EA7 6F95 3FE5 981C 7BD5 7FEE 879B 9B7A
+7909 95D4 97A8 9F55 8988 9DA1 76AC 9449 9FA2
+4F6B 578E 8D3A 7103 8894 8CC0 55C3 7142 788B 7187
+8D6B 3D51 8910 9E64 3B1E 7A52 7FEF 58D1 764B 8B1E
+7200 9DAE 9DB4 974E 9E16 974F
+7CAD 974D
+548D 54B3 55E8
+8FD8 5B69 9826 9AB8 9084
+6D77 80F2 70F8 917C 91A2
+4EA5 598E 39E1 9A87 5BB3 6C26 55D0 9900 99ED 26926
+995A
+5870 56A1
+9ED2 9ED1 563F 6F76 28B46
+8320 84BF 5686 8585 85A7
+6BDC 869D 6BEB 6903 55E5 7346 8C89 5651 7354 8C6A
+295B8 5637 3B14 734B 8AD5 512B 568E 58D5 3819 6FE0
+7C47 8814 8B79
+597D 90DD
+53F7 36AA 3740 660A 6626 79CF 54E0 5CFC 604F 608E
+6D69 8017 6667 3B36 6DCF 5090 7693 6EC8 8055 865F
+9117 66A4 66AD 6F94 769C 769E 66CD 76A1 76A5 8583
+93AC 98A2 704F 9865 9C1D 705D
+7AD3
+9F41
+4FAF 3927 77E6 5589 5E3F 7334 9107 3B0B 8454 760A
+777A 7BCC 7CC7 7FED 9ABA 7FF5 936D 9931 9BF8
+543C 72BC
+540E 539A 5795 5F8C 6D09 90C8 9005 5820 8C5E 9C8E
+9C98 9B9C 9C5F
+5019
+4F44 70B6 9878 3937 86B6 9163 9807 5AE8 8C3D 61A8
+99A0 6B5B 9F3E
+9097 542B 51FD 5481 80A3 90AF 51FE 8677 5505 5705
+5A22 6D5B 5D21 6657 6892 6DB5 7113 7400 5BD2 5D45
+3B80 97E9 751D 7B68 4204 872C 6F8F 92E1 9B7D 97D3
+4E06 5388 7F55 6D6B 558A 961A 850A 3E01 8C43 9B2B
+361A
+6C49 5C7D 6C57 95EC 65F1 5CBE 54FB 57BE 608D 634D
+6D86 7302 3A8B 6658 6665 710A 839F 91EC 9588 7694
+7745 83E1 50BC 86FF 9894 99AF 6F22 872D 8C8B 6496
+66B5 71AF 92B2 92CE 61BE 64BC 24CC9 7FF0 8792 9837
+9844 99FB 96D7 701A 8B40 862B 9DBE
+516F 7233
+62EB 75D5 978E
+4F77 5F88 72E0 8A6A
+6068
+592F 3C20
+65BB 676D 82C0 8FD2 7ED7 73E9 7B10 822A 86A2 4615
+9883 8CA5 7B55 7D4E 980F 28048 9B67
+6C86
+57B3
+4EA8 54FC 6099 5548 811D
+3530 59EE 6046 6052 6841 70C6 80FB 9E3B 6A2A 6A6B
+8861 9D34 8605 9445
+583C
+6DA5 9D46
+4E6F 5322 864D 547C 5780 5FFD 6612 66F6 6CD8 6057
+70C0 82F8 8F77 532B 553F 60DA 39FE 6DF4 8656 8EE4
+5611 5BE3 6EF9 44E4 96D0 5E60 622F 6B51 27A53 81B4
+8B3C
+56EB 6287 5F27 72D0 80E1 58F6 74F3 96BA 20D31 58F7
+659B 7100 35C5 5596 58FA 5AA9 6E56 7322 7D57 6430
+695C 7173 745A 846B 561D 2430D 9E55 69F2 7BB6 851B
+8774 885A 9B71 7E20 879C 9190 9836 89F3 9378 992C
+4B4C 9D60 702B 9B0D 9C17 9D98 9DA6
+4E55 6C7B 864E 6D52 4FFF 7425 8400 865D 6EF8
+4E65 4E92 5F16 6236 6237 6238 3E26 51B1 51B4 5E0D
+62A4 6C8D 6CAA 8290 5CB5 6019 623D 6608 6791 6018
+795C 7B0F 5A5F 6248 74E0 55C0 695B 7D94 96FD 5AED
+5AEE 6462 6EEC 9120 69F4 71A9 8530 9CF8 7C04 9359
+569B 9E71 8B77 9CE0 97C4 9800 9C6F 9E0C
+4E4E 7C90 552C 7CCA 933F 9BF1
+82B1 82B2 54D7 5629 848A 9335
+534E 3572 3B49 59E1 9A85 91EA 91EB 94E7 83EF 6433
+6ED1 733E 380F 398A 64B6 78C6 92D8 8550 8796 8B41
+93F5 9A4A 9DE8
+5316 5212 3566 593B 3577 6779 753B 8BDD 6866 5A73
+5D0B 756B 7575 89DF 8A71 5283 6466 5AFF 5B05 69EC
+6F85 6A3A 8AE3 7E63 8219 9ECA 8B6E
+57D6 5A72 691B 7874 7CC0 8AAE 748D
+5419 5268 8020 952A 5290 9343 5684 8C41 6509 9A1E
+4F78 6D3B 79EE 79F3
+706B 4F19 90A9 94AC 9225 5925 6F37
+6C8E 6216 8D27 549F 7809 4100 4FF0 6347 7713 9584
+20D7E 639D 83B7 8CA8 60D1 6E71 7978 65E4 6947 3A2F
+798D 84A6 35F2 596F 970D 6FE9 7372 8B0B 6AB4 956C
+56AF 7016 77C6 7A6B 4C5B 66E4 802F 81DB 8267 85FF
+8816 56BF 7668 77D0 944A 9743
+6000 5F8A 6DEE 69D0 8E1D 61D0 8922 8931 3733 3822
+61F7 7024 6AF0 8032 8639
+574F 54B6 8AD9 58CA 58DE 863E
+7070 39D1 8BD9 54B4 6062 62FB 6325 6D03 867A 6656
+70E3 73F2 8886 8C57 5A4E 5645 5A88 63EE 3DC7 7FDA
+8F89 6689 694E 7147 8A7C 9693 5E51 7773 7988 649D
+5655 7FEC 8918 8F1D 9EBE 5FBD 7008 96B3 8633 9C34
+56D8 56DE 56EC 4F6A 5EFB 605B 6D04 5EFD 70E0 8334
+8698 8FF4 75D0 9025 86D4 86D5 8716 9BB0
+6094 6BC0 6BC1 26799 6BC7 6A93 71EC 8B6D
+5349 6C47 4F1A 8BB3 6CCB 54D5 21726 6D4D 7ED8 8294
+8BF2 605A 6075 70E9 835F 8D3F 5F57 6666 79FD 5599
+60E0 6E4F 7D75 7F0B 7FD9 9613 532F 5F59 5F5A 3963
+6703 6ED9 8A6F 8CC4 9892 50E1 5612 3A39 8AA8 571A
+5BED 6167 6193 66B3 69E5 6F53 7623 8527 49E5 5666
+5B12 5FBB 6A5E 6BA8 6FAE 6FCA 7369 8559 8AF1 982E
+71F4 74AF 7BF2 8588 8589 992F 5696 77BA 7A62 7E62
+87EA 3B29 6AD8 7E6A 7FFD 85F1 8B53 5136 93F8 95E0
+5B48 942C 9767 8B7F 986A
+5C77 7073 74A4 61F3
+72BF 6B53 9D05 3E55 9D4D 56BE 61FD 737E 9144 8B99
+8C9B 9A69
+73AF 5CD8 6D39 72DF 90C7 6853 8341 5BCF 7D59 8408
+8411 96C8 7D84 7FA6 8C86 926E 953E 571C 5B1B 5BF0
+6FB4 7F33 49A1 961B 74B0 8C72 9370 956E 9E6E 7CEB
+7E6F 8F58 9436 95E4 9B1F 74DB 4D09
+7F13 4220 7DE9 650C
+5E7B 5942 8092 5950 5BA6 5524 6362 6D63 6DA3 70C9
+60A3 6899 7115 559A 559B 5D48 610C 63DB 6E19 75EA
+7746 902D 3B07 3B0A 7165 744D 8C62 6F36 7613 69F5
+9CA9 64D0 6FA3 9BC7 85E7 9C00
+6B22 77A3 6B61
+660F 662C 8364 5A5A 60DB 6DBD 960D 68D4 6B99 7767
+8477 776F 95BD
+5FF6 6D51 68A1 9984 581A 6E3E 743F 9B42 991B 7E49
+8F4B 4B9D 9F32
+9BF6
+8BE8 4FD2 5031 5702 638D 6DF7 711D 6EB7 6141 89E8
+8AE2
+5DDF 3835 8093 8841 8352 671A 5843 614C 3B3B
+7687 505F 51F0 55A4 582D 5A93 5D32 5FA8 60F6 6E5F
+968D 9EC3 9EC4 697B 714C 745D 845F 9051 953D 58B4
+6F62 735A 7BC1 7BCA 824E 8757 71BF 749C 8AFB 7640
+78FA 417F 7A54 9360 992D 9CC7 7C27 87E5 97F9 8DAA
+9A1C 9404 9C09 5164 9C51 9DEC
+6033 604D 70BE 5BBA 6644 595B 8C0E 5E4C 8A64 7180
+4420 8B0A 6ACE
+6130 3A2A 6EC9 69A5 769D 66C2 93A4 76A9
+6643 7E28
+53FF 543D 544D 7074 8F70 54C4 8A07 70D8 8EE3 63C8
+6E39 7122 7861 8C3E 29420 8F37 85A8 9367 569D 8F5F
+4EDC 5F18 5985 7EA2 5430 5B8F 6C6F 7392 7EAE 95F3
+5B96 6CD3 57AC 5A02 6D2A 7AD1 427A 7D05 82F0 8679
+5CF5 6D64 7D18 7FC3 803E 836D 7854 7D2D 8C39 9E3F
+6E31 7AE4 7CA0 921C 958E 7D8B 7FDD 8452 8453 8C3C
+6F42 28306 9277 9783 9B5F 92D0 5F4B 9710 857B 971F
+9D3B 9EC9 2410F 9ECC
+664E 3B34 55CA
+8BA7 8A0C 95A7 6494 6F8B 6F92 92BE 95C2 9B28
+FDD0-3110
+4E0C 22A66 8BA5 51FB 5209 53FD 9965 4E69 520F 673A
+7391 808C 573E 77F6 9E21 6785 82A8 54AD 59EB 525E
+5527 59EC 5C50 79EF 7B04 8FF9 98E2 57FA 7EE9 559E
+5D46 5D47 6567 671E 7284 7B53 7F09 8D4D 52E3 55D8
+7578 7A18 8DE1 8DFB 9CEE 50DF 20F3B 6BC4 7B95 9288
+5630 69E3 757F 7A3D 7DDD 89ED 8CEB 8EB8 9F51 58BC
+6A5F 6FC0 74A3 7A4D 9324 64CA 78EF 79A8 7C0A 7E3E
+7F81 8940 8CF7 96AE 6AC5 802D 8E5F 96DE 8B4F 913F
+97F2 9D8F 8B64 9416 9951 8E8B 97BF 9DC4 9F4E 7F87
+9447 8640 8989 9459 9F4F 7F88 9E04 898A
+4EBC 53CA 4F0B 5409 7EA7 5373 5C8C 5F76 5FE3 6781
+6C72 7680 4E9F 4F76 8BD8 9491 537D 59DE 6025 72E4
+90C6 63E4 75BE 768D 7B08 7D1A 810A 4798 506E 5359
+5EB4 3B72 710F 89D9 8C3B 35CA 68D8 6E52 96C6 5849
+5AC9 6131 6222 696B 6975 6B9B 8D8C 69C9 8024 818C
+84BA 92A1 35F1 6483 6F57 7620 799D 7BBF 8E16 9E61
+5DAF 6A76 6FC8 8540 878F 64EE 6A9D 857A 8E50 9353
+85C9 894B 8265 7C4D 8F5A 93F6 4CED 9735 9DBA 9DD1
+96E6 96E7
+51E0 5DF1 4E2E 5980 72B1 6CF2 866E 6324 638E 9C7E
+5E7E 39B8 621F 9218 5D74 9E82 9B62 64A0 64E0 7A56
+87E3 9B55
+2E95 5F50 5F51 65E1 8BA1 8BB0 4F0E 7EAA 5756 5993
+5FCC 6280 5242 5B63 82B0 9645 54DC 578D 5CDC 65E2
+6D0E 6D4E 7D00 830D 8A08 5264 7D12 7EE7 8324 8360
+89CA 8A18 5048 5BC2 5BC4 3831 5F9B 394D 60B8 65E3
+689E 6E08 796D 5848 60CE 3ED1 4400 81EE 517E 75F5
+7D99 846A 8507 88DA 66A8 6F03 6F08 7A29 7A4A 84DF
+8900 8A8B 8DFD 969B 9701 9B3E 9C9A 66A9 7A37 8AC5
+9CAB 5180 5291 66C1 7A44 9AFB 568C 6A95 6FDF 7F7D
+858A 89AC 6AB5 3E04 85BA 9D4B 9F4C 61FB 7660 7A67
+7E4B 9AA5 9BDA 7031 7E7C 860E 29949 9C40 862E 973D
+9C36 9C3F 863B 9C6D 9A65
+4EBD 8F91 6A2D 8F2F 5EED 766A
+52A0 4E6B 5939 4F3D 593E 4F73 62B8 62C1 6CC7 3E62
+67B7 6BE0 6D43 73C8 8304 8FE6 57C9 5BB6 6D79 75C2
+689C 7B33 801E 8888 50A2 7333 8DCF 20EA2 728C 8175
+846D 926B 5609 927F 9553 8C6D 8C91 29D9B 93B5 4552
+9E9A
+573F 5FE6 6274 90CF 550A 605D 835A 90DF 621B 83A2
+94D7 621E 86F1 88B7 988A 3B96 86FA 88CC 8DF2 9782
+9904 92CF 982C 9830 9D36 9D4A
+7532 4EEE 5CAC 53DA 73BE 80DB 659A 8D3E 94BE 5047
+5A7D 5FA6 659D 6935 8CC8 9240 698E 69DA 7615 6A9F
+4EF7 9A7E 67B6 22C4C 5AC1 5E4F 69A2 50F9 99D5
+7A3C 7CD8
+7596 9636 7686 63A5 63B2 23D8F 75CE 79F8 5588 5826
+5A98 63ED 6904 6E5D 813B 83E8 8857 968E 55DF 5AC5
+716F 40C8 7A2D 8754 64D1 7664 8B2F 9D9B
+5369 536A 5B51 5C10 8BA6 8282 5226 5227 52AB 5C8A
+523C 351A 52BC 6605 6770 758C 3636 36C3 62EE 6D01
+7ED3 5022 6840 8871 8A10 8FFC 507C 5A55 5D28 6377
+83AD 5091 55BC 3A17 4039 7D50 7D5C 88BA 9889 5D65
+3A29 696C 6976 6ED0 776B 7BC0 8710 874D 8A70 9263
+9B5D 622A 69A4 78A3 7AED 26D74 9C92 6F54 7FAF 84F5
+8AB1 8E15 978A 5E6F 937B 9B9A 5DC0 6AED 881E 8818
+883D
+6BD1 5A8E 89E3 89E7 98F7 6A9E
+4E2F 4ECB 5424 5C95 3839 5E8E 6212 5C46 5C4A 73A0
+82A5 754C 754D 75A5 780E 8BEB 501F 6088 86A7 8878
+5FA3 583A 6950 743E 86F6 7297 8AA1 9AB1 9B6A 892F
+9385 8EA4
+59D0 685D
+4EA4 827D 8281 59E3 5A07 5CE7 6D47 90CA 9A84 80F6
+832D 832E 6912 7126 86DF 8DE4 50EC 5604 213ED 8660
+9C9B 5B0C 5D95 5DA3 618D 6F86 81A0 71CB 81B2 8549
+7901 7A5A 9BAB 9D41 9E6A 7C25 87ED 8F47 940E 9DCD
+9A55 9DE6 9DEE
+3B42 81EB 89D2 4F7C 4FA5 6054 6322 72E1 7EDE 997A
+6341 6648 70C4 768E 77EB 811A 94F0 6405 6E6B 7D5E
+527F 656B 6E6C 714D 8173 8CCB 50E5 6477 669E 8E0B
+9278 9903 510C 528B 5FBA 649F 64B9 5FBC 61BF 657D
+657F 71DE 7F34 96A6 66D2 74AC 77EF 76A6 87DC 7E73
+8B51 5B42 3A70 27088 652A 705A 9C4E
+53EB 544C 5CE4 630D 8A06 73D3 7A8C 8F7F 8F83 654E
+6559 7A96 3C3E 6ED8 8F03 5602 5626 65A0 6F16 9175
+564D 5DA0 6F50 566D 5B13 7365 85E0 8DAD 8F4E 91AE
+8B65 3B2D 76AD 91C2
+9D64 6AF5 7E90
+4E29 52FC 7EA0 673B 725E 7A76 7CFA 9E20 7CFE 8D73
+28CCA 9604 557E 63C2 63EA 841B 63EB 9CE9 644E 6A1B
+9B0F 9B2E
+4E5D 4E45 4E46 4E63 597A 7078 7396 820F 97ED 7D24
+9152 9579 97EE
+531B 65E7 3EA9 81FC 548E 759A 4192 67E9 67FE 5003
+6344 6855 5313 53A9 6551 5AA8 5C31 5EC4 8205 50E6
+5ECF 5ED0 6166 6BA7 9E6B 820A 5336 9BE6 9E94 9F68
+9DF2
+6C63 6766 6B0D
+620B 5978 5C16 5E75 575A 6B7C 95F4 51BF 6214 73AA
+80A9 8270 59E6 59E7 517C 76D1 5042 5805 60E4 3B74
+730F 7B3A 8C5C 6E54 724B 7F04 83C5 83FA 9593 641B
+6937 693E 714E 728D 744A 788A 7F23 844C 8C63 76E3
+7777 7B8B 84B9 6A2B 719E 7DD8 9CA3 9CFD 9E63 71B8
+2585D 7BEF 7E11 8551 8573 8271 9930 99A2 9E89 7010
+97AC 97AF 9CD2 791B 4320 89B8 9D73 7038 9427 6AFC
+6BB2 9DBC 97C0 9C39 56CF 8643 946F 97C9
+56DD 62E3 67A7 4FED 67EC 5039 6338 6361 7B15 8327
+51CF 526A 6898 68C0 583F 63C0 63C3 691C 6E1B 6E55
+7751 7877 8A43 950F 5F3F 6695 7450 7B67 7B80 7D78
+88E5 8C2B 8DBC 6229 622C 3A35 78B1 5109 7FE6 64BF
+6AA2 2372D 8B07 8E47 77BC 7906 7C21 85C6 8947 8949
+8B2D 7E6D 9B0B 9E78 703D 8812 9417 9C0E 5297 9E7B
+7C5B 8B7E 9E7C 897A
+89C1 4EF6 898B 996F 5251 5EFA 6D0A 726E 8D31 4FF4
+5263 682B 6DA7 73D4 8230 8350 5065 5271 5FA4 6E10
+8C0F 91FC 5BCB 6E85 81F6 88B8 8DF5 65D4 6957 6BFD
+249E3 8171 8465 8CCE 9274 952E 50ED 3A34 6997 6F38
+528D 528E 3D4E 6F97 7BAD 7CCB 852A 8AD3 8CE4 8D9D
+8E10 8E3A 5292 5294 8AEB 92FB 991E 77B7 78F5 85A6
+87B9 9373 9375 64F6 6FFA 7E5D 3C04 89B5 93E9 7033
+8266 8B7C 8F5E 9431 9451 9452 946C 9473
+5F45 58B9 6A7A 7900 6BB1
+5DFE 4ECA 65A4 9485 5153 91D1 6D25 77DC 89D4 57D0
+73D2 7D1F 8355 887F 60CD 583B 7B4B 91FF 5D9C 9E76
+9EC5 895F
+4EC5 5C3D 4FAD 537A 5DF9 7D27 5807 83EB 50C5 53AA
+8C28 9526 5AE4 5ED1 6F0C 76E1 7DCA 9991 69FF 747E
+84F3 5118 9326 8B39 9949
+4F12 52A4 52B2 5997 6783 8FD1 8FDB 52C1 6D55 6649
+664B 6D78 70EC 8369 8D46 552B 740E 7972 9032 5BD6
+6422 6E8D 7981 7F19 9773 5890 3A37 3B10 669C 7468
+50F8 51DA 6B4F 6BA3 89D0 5664 3B1C 6FC5 74A1 7E09
+8CEE 568D 5B27 3BF2 6FDC 71FC 74B6 85CE 89B2 8D10
+9F7D
+91D2 781B 743B 58D7
+6C5F 59DC 5C06 6D46 7555 8333 8C47 5C07 757A 8441
+646A 7FDE 50F5 6F3F 8780 58C3 7F30 6A7F 6BAD 8591
+87BF 9CC9 7585 7913 7586 7E6E 97C1 9C42
+8BB2 5956 6868 508B 5968 848B 596C 69F3 734E 8199
+8523 8029 4243 8B1B 985C
+531E 5905 5F1C 6D1A 7EDB 964D 5F36 7D73 88B6 52E5
+9171 5D79 647E 6EF0 5F4A 236A6 729F 7CE1 7CE8 91A4
+8B3D 91AC
+5320 6762 6AE4
+5755 5759 5DE0 4EAC 6CFE 7ECF 4EB0 79D4 830E 6D87
+834A 5A5B 60CA 65CC 65CD 7304 7D4C 8396 6676 7A09
+8148 8346 83C1 7CB3 7D93 844F 5162 7CBE 8059 9CB8
+9D5B 9BE8 9D81 9D84 9E96 9F31 9A5A 9EA0
+4E95 4E3C 522D 362B 5753 5B91 6C6B 9631 6C6C 80BC
+5244 7A7D 9888 666F 981A 5106 5E5C 61AC 66BB 71DB
+749F 9838 61BC 74A5 87FC 4718 8B66
+598C 51C0 5F2A 5F84 4FD3 205CA 6D44 80EB 8FF3 501E
+51C8 5F33 5F91 75C9 7ADE 5A59 5A67 6871 68B7 6DE8
+811B 9015 291D5 7ADF 75D9 7AE7 9753 50B9 656C 3B0C
+7AEB 9756 5883 734D 8AA9 8E01 9759 477C 975A 955C
+975C 66D4 6FEA 701E 93E1 7AF6 7AF8
+775B 6A78 71DD
+51E5 521F 6285 530A 5C45 62D8 6CC3 72D9 9A79 82F4
+6336 75BD 75C0 7717 7820 7F5D 5A35 5A6E 5D0C 63AC
+68AE 6DBA 9671 6910 741A 8152 83F9 8D84 8DD4 9514
+96CE 824D 871B 88FE 8E18 8E19 92E6 99D2 9B88 9D21
+97A0 97AB 9D8B
+26951 5C40 3632 6CE6 4FB7 72CA 6854 6BE9 5579 5A45
+6DD7 7117 6908 6BF1 6E68 83CA 90F9 7291 8F02 50EA
+7CB7 8DFC 8ACA 8D9C 8EB9 95B0 6A58 6A8B 99F6 4CD4
+9D59 8E6B 9D74 5DC8 9DAA 861C 9F33 9A67
+5480 5F06 6CAE 4E3E 6319 8392 6907 6989 6998 7B65
+9F83 849F 8065 8209 8E3D 64E7 9F5F 6AF8 6B05
+53E5 5DE8 4E6C 5DEA 8BB5 5177 59D6 5CA0 6007 6010
+601A 62D2 62E0 6D30 90AD 661B 6B6B 70AC 82E3 949C
+4FF1 5028 5036 51A3 5267 79EC 57E7 57FE 60E7 636E
+7C94 801F 86B7 8893 728B 8A4E 8DD9 8DDD 98D3 8C66
+9245 952F 5BE0 6133 7AAD 805A 8661 5287 52EE 5C66
+8E1E 99CF 58C9 61C5 64DA 6FBD 7AB6 422E 92F8 9B94
+5C68 907D 98B6 8C97 7C34 8E86 91B5 61FC 943B 3B2C
+77E9 7220 8977
+5658 6485 64A7 5C69 8E7B
+4E85 2010C 5B52 5B53 51B3 5214 6C12 8BC0 6289 6C7A
+5F21 3B48 6CEC 73A6 73A8 82B5 6317 73CF 75A6 7804
+7EDD 8673 89C9 5014 6354 6B2E 8697 5D1B 6398 658D
+6877 6B8C 8990 89D6 8A23 8D7D 8DB9 4848 5095 53A5
+3B7E 7133 7D55 7D76 899A 8D89 902B 920C 37F2 5282
+3522 52EA 7474 8C32 99C3 5DA5 61B0 71A6 7234 7357
+761A 9D02 9D03 5671 61A0 6A5B 6A5C 855D 8568 7235
+81C4 9562 87E8 87E9 5C6B 8B4E 8E76 8E77 9D8C 5337
+56BC 7211 77CD 89BA 940D 941D 721D 89FC 5F4F 6204
+652B 7383 9DE2 6B14 77E1 9FA3 28C1C 8C9C 8EA9 9481
+59E2 5A1F 6350 6D93 7106 8127 74F9 9E43 88D0 52EC
+48FA 954C 93B8 9D51 942B 8832
+5377 545F 5E23 57CD 6372 83E4 9529 3DF7 9308 81C7
+52B5 5946 5DFB 5026 52CC 684A 72F7 7EE2 96BD 6DC3
+7737 774A 7D6D 7F65 45AD 9104 7760 7D79 96CB 98EC
+21840 617B 8528 990B 7367 7E33 7F82
+519B 208D5 541B 5747 36AC 6C6E 59F0 8ECD 94A7 8690
+8880 687E 76B2 8399 83CC 921E 7885 76B8 76B9 89A0
+9281 929E 9CAA 9E87 9355 9BB6 9E8F 9E95
+5441 4FCA 3F59 57C8 5CFB 6343 6D5A 90E1 9656 9982
+9A8F 35A5 6659 710C 73FA 2797A 347A 68DE 756F 7AE3
+3766 41F9 7B98 7B9F 8720 28318 5101 3559 9915 5BEF
+61CF 71C7 6FEC 99FF 9D54 9D58 6508 4551 651F
+2E86 5182 518B 5770 6243 57DB 7D45 99C9 99EB 860F
+8614
+518F 56E7 38A0 6CC2 7085 4FB0 70AF 8FE5 6D7B 9008
+70F1 489B 7A98 988E 715A 7D97 50D2 715B 71B2 6F83
+8927
+FDD0-3111
+4E03 6C8F 8FC9 59BB 67D2 501B 51C4 6816 6864 5A38
+60BD 687C 6DD2 90EA 6532 671F 68F2 6B3A 3C66 840B
+86E3 50DB 5601 617D 69BF 6F06 7DC0 617C 69ED 25250
+8AC6 8AFF 970B 45E9 8E4A 3B24 9B4C 4953 93DA 9D88
+4E93 9F50 573B 5C90 5C93 5FEF 4E9D 5176 5947 6589
+6B67 7541 7941 80B5 82AA 4FDF 75A7 7947 7948 7AD2
+5258 658A 65C2 8006 8110 8691 8694 869A 9880 57FC
+5D0E 5E3A 6391 6DC7 7309 7566 8DC2 8EDD 91EE 9A90
+9A91 68CA 68CB 7426 742A 8401 8415 86F4 612D 7881
+7895 797A 44C5 951C 980E 65D7 7CB8 7DA5 7DA6 7DA8
+44EB 871D 871E 9B3F 9F4A 7482 8E11 79A5 8572 9321
+9CAF 61E0 6FDD 2A5C6 6AB1 6AC0 24A8C 81CD 85C4 9A0E
+9A0F 9CCD 4C07 9BD5 9D78 9D80 9E92 7E83 8269 8604
+8810 9B10 9C2D 7382 9EA1
+4E5E 4F01 5C7A 5C82 9094 542F 5447 675E 7398 76C0
+8291 5518 8C48 8D77 5553 5554 5A4D 555F 7EEE 6675
+68E8 410E 7DAE 7DBA 8AEC 95D9
+6C14 8BAB 5FD4 6C17 6C54 5F03 6C7D 77F5 8FC4 546E
+6CE3 7081 76F5 829E 54A0 5951 780C 6814 6B2B 6C23
+8A16 552D 5921 68C4 6E46 6E47 789B 847A 6456 66A3
+78B6 5650 6187 7508 27858 5668 61A9 78DC 78E7 78E9
+468D 7F4A 87FF 9F1C
+7F3C 621A 6E0F 7DD5 8904 87A7 7C2F 7C31 7C4F
+6390 845C
+62E4
+8DD2 9160
+5736 51BE 34E4 5E22 6070 6D3D 6B8E 7848 6118 9AC2
+9790
+767F 21D90 49A7 807A
+4E14
+5207 59BE 602F 5327 7A83 90C4 20CB5 608F 6308 6D2F
+3932 60EC 6DC1 7B21 611C 86EA 3966 6705 7BA7 7DC1
+9532 21424 7BCB 8E25 7A55 9365 85D2 9BDC 9411 7ACA
+2383A
+82C6 503F 5AAB 7C61
+6084 7857 90FB 5D6A 8DF7 5281 6572 6BC3 8E0D 9121
+9125 9539 589D 981D 58BD 5E67 22FE3 6A47 71C6 7F32
+9AB9 78FD 936B 936C 7E51 8DAC 8E7A 9430
+4E54 4FA8 6865 834D 835E 785A 55AC 83EC 50D1 8C2F
+563A 5AF6 376F 6194 9792 6A35 6A4B 854E 7644 4009
+77A7 7904 4397 8DAB 85EE 9408 97BD 9866 2710D
+5DE7 91E5 6100 9ADC
+4FCF 8BEE 5CED 5E29 7A8D 9657 6BBB 7FD8 8A9A 9ADA
+50FA 64AC 64BD 9798 97D2 7AC5 7FF9 8B59 8E88 3681
+69D7 729E
+3400 4E18 4E20 20C0B 5775 36B1 3CCB 90B1 6058 79CB
+79CC 86AF 5A9D 6978 8429 9E59 7BCD 7DE7 84F2 8775
+7A50 8DA5 4A02 9CC5 87D7 97A6 97A7 9C0C 9C0D 9D96
+8824 9F9D
+53F4 56DA 624F 72B0 738C 6C53 808D 6C42 866C 6CC5
+42B5 866F 4FC5 89D3 8A04 8A05 914B 91D3 5512 3797
+3939 3B5D 6D57 7D0C 91DA 6882 6B8F 6BEC 7403 838D
+8D47 900E 9011 5D37 5DEF 3962 6E1E 6E6D 76B3 76DA
+5DF0 716A 7D7F 86F7 88D8 9052 89E9 8CD5 7486 8764
+92B6 9194 9B82 9F3D 9BC4 9C3D
+641D 7CD7
+91FB 8612
+5343 4EDF 5731 5732 5977 6266 6C58 9621 4F65 5C8D
+6744 6C67 828A 8FC1 6B26 74E9 81E4 833E 948E 62EA
+7275 7C81 515B 60AD 8C38 94C5 5A5C 5B6F 727D 91FA
+6394 8688 8C26 9206 96C3 50C9 6106 7B7E 925B 9A9E
+9E50 6173 6434 6481 7B9E 8AD0 9077 8930 8B19 9845
+6AB6 6510 6ACF 7C3D 9D6E 5B45 6513 9A2B 6511 9B1D
+9B1C 3A77 7C64 97C6
+4EF1 5C92 5FF4 6272 62D1 524D 94A4 6B6C 8654 94B1
+94B3 63AE 8EE1 5A8A 63F5 9210 976C 9257 5898 69A9
+7B9D 92AD 6F5B 6F5C 7FAC 6A6C 8541 9322 9ED4 9EDA
+6FF3 9A1A 9A1D 704A 9C2C
+51F5 80B7 6D45 6DFA 8125 55DB 5D70 69CF 8181 8738
+9063 8C34 7F31 7E7E 8B74
+6B20 520B 3438 82A1 4FD4 5029 6093 831C 5811 5094
+5D4C 68C8 6920 614A 7698 5879 371E 37FB 6B49 7DAA
+84A8 69E7 7BCF 8533 8F24 5119 7BDF 58CD 7E34 4945
+9C1C
+7ACF 9386 93F2 7C56 9453
+4EB2 4FB5 94A6 887E 9A8E 5A87 5D5A 6B3D 7D85 8A9B
+5D94 89AA 9849 99F8 9BBC 5BF4
+3626 5E88 3A81 82A9 82B9 57C1 73E1 79E6 8039 8699
+6366 7434 7439 83E6 83F3 9219 96C2 52E4 55EA 5AC0
+6EB1 79BD 9772 616C 5659 65B3 9CF9 61C4 3A52 64D2
+6FBF 763D 8793 61C3 6A8E 9B35 8804 9D6D
+5745 6611 7B09 68AB 8D7E 5BD1 9513 5BDD 5BE2 92DF
+87BC
+5422 5423 3908 628B 6C81 551A 63FF 83E3 29088 6407
+64B3 421C 7019 85FD
+545B 6215 6217 65A8 67AA 73B1 7F8C 7F97 7310 8DC4
+690C 8154 55C6 6EAC 9516 5D88 6227 69CD 7244 7472
+7FAB 8723 9535 7BEC 9306 8B12 8E4C 956A 8E61 9397
+93D8
+4E2C 5F37 5F3A 5899 5AF1 6F12 6A2F 8503 8537 58BB
+5B19 5EE7 6AA3 7246 8594 8262 8620
+62A2 7F9F 6436 7FA5 588F 7E48 8941 7E66 93F9
+709D 5534 7197 7FBB
+55F4 7347
+72C5 9751 9752 6C22 8F7B 503E 537F 570A 57E5 5BC8
+6C2B 6DF8 6E05 90EC 50BE 873B 8F15 4A1D 9CAD 944B
+591D 7520 5260 52CD 60C5 6B91 6674 68FE 6C30 6692
+845D 6A08 64CF 64CE 3BF3 6AA0 9EE5
+9877 82D8 8BF7 5EBC 9803 5ECE 6F00 3DEB 8ACB 6ABE
+5E86 51CA 6385 6BB8 7883 7B90 9758 6176 78D8 78EC
+7F44 8B26
+7858 6AE6
+533A 66F2 4F39 4F49 5324 5C96 8BCE 9A71 5765 5C48
+5CA8 5CB4 62BE 9639 3B55 6D40 80E0 795B 5340 7D36
+86C6 88AA 8EAF 7B41 7CAC 86D0 8A58 8D8B 5D87 6188
+420C 99C6 657A 8AB3 957C 99C8 9EB9 9AF7 9B7C 8DA8
+9EAF 89B0 8EC0 9EB4 9EE2 89BB 9A45 9C38 9C4B
+4F62 52AC 65AA 6710 80CA 9E32 6DED 7D47 7FD1 6E20
+83C3 8EE5 844B 24A0E 7496 8556 9D1D 74A9 78F2 87B6
+77BF 87DD 9F29 3739 5FC2 7048 8627 6235 6B0B 6C0D
+81DE 766F 7C67 8837 8862 8EA3 883C 947A 9E1C
+53D6 7AD8 5A36 8A53 7AEC 877A 9F8B 9F72
+53BA 53BB 521E 547F 3C26 551F 801D 9612 89D1 8DA3
+95B4 9EAE 95C3 9F01 89B7
+8FF2 8850
+7F3A 9619 849B
+7638
+5374 537B 57C6 5D05 5BC9 60AB 96C0 7437 785E 786E
+9615 5859 6409 76B5 788F 6128 69B7 58A7 6164 78BA
+78BB 8D9E 71E9 95CB 7910 95D5 704D 792D
+9E4A 9D72
+5CD1 5F2E 606E 609B 5708 570F 68EC 99E9 9409
+34B0 5168 6743 4F7A 8BE0 59FE 6CC9 6D24 62F3 7277
+8343 8F81 5573 57E2 5A58 60D3 75CA 7842 94E8 6E76
+7288 7B4C 7D5F 643C 7454 8472 89E0 8A6E 8DE7 8F07
+8737 9293 6A29 8E21 7E13 919B 9CC8 9B08 9A21 9C01
+5B49 5DCF 9F64 6B0A 98A7 8838 9874
+21FE8 72AC 6C71 754E 70C7 7EFB 7DA3 8647
+529D 5238 7276 52E7 97CF 52F8
+72AD 6926 697E 95CE
+590B 56F7 5CEE 9021
+5BAD 5E2C 3A8A 7FA3 7FA4 88D9 88E0
+828E 5314
+536D 5B86 909B 7A77 7A79 8315 684F 4143 7B3B 8D79
+60F8 712A 712D 743C 7B47 823C 86E9 86EC 21983 7162
+7758 8DEB 928E 778F 7AAE 511D 618C 6A69 749A 74CA
+7AC6 85D1 85ED 74D7
+718D
+FDD0-3112
+5915 516E 5FDA 6C50 8980 5438 5E0C 6271 6278 5365
+6614 6790 7A78 80B8 80B9 4FD9 5F86 6038 6053 997B
+550F 595A 36D3 5C56 6095 6C25 6D60 727A 72F6 90D7
+553D 6089 60DC 637F 665E 6878 6B37 6DC5 70EF 7101
+7108 740B 7852 8383 8D65 91F8 5092 60C1 6670 6673
+3C64 711F 712C 7280 774E 7A00 7C9E 7FD5 823E 83E5
+5380 5D60 5FAF 6EAA 7699 910E 9521 50D6 69BD 7155
+7184 7188 7199 7DC6 84A0 8725 8C68 990F 563B 564F
+5B06 5B09 6F5D 3FB7 761C 78CE 819D 51DE 20615 5DB2
+6199 3B1B 6A28 6A40 71B9 71BA 71BB 7AB8 7E18 7FB2
+8785 8787 932B 3C46 71E8 406F 77A6 87CB 8C3F 8C40
+8C6F 8C95 7CE6 7E65 96DF 9D57 8B46 91AF 93ED 5DC7
+66E6 7214 72A7 89F9 96B5 9145 89FD 9F37 8835 9E02
+89FF 9474
+4E60 90CB 5E2D 7FD2 88AD 89CB 5AB3 693A 3804 5D8D
+6F1D 84B5 84C6 89A1 8D98 69E2 3A57 6A84 8582 96B0
+8B35 93B4 972B 9CDB 98C1 9A31 9A3D 8972 9C3C 9A68
+67B2 6D17 73BA 5F99 94E3 559C 9222 8448 8478 9268
+9269 5C63 6F07 6198 84F0 66BF 6B56 8AF0 58D0 79A7
+7E30 8B11 87E2 8E5D 74BD 56CD 9C5A 77D6 8EA7
+5338 534C 620F 5C43 7CFB 9969 546C 5FE5 602C 77FD
+7EC6 4FC2 54A5 6044 76FB 3938 3B61 6B2F 7EE4 90E4
+7D30 91F3 960B 55BA 691E 7FD6 8203 8204 8D87 6140
+6ECA 7D8C 8D69 588D 7182 7294 798A 7A27 9699 969F
+6F5F 89A4 6231 6F99 422A 856E 9ED6 6232 78F6 4B8E
+8669 993C 9B29 7E6B 56B1 95DF 3E0D 973C 5C6D 884B
+897F 606F 6E13 6A72 72A0 7902 9BD1
+8672 75A8 867E 3520 8C3A 5084 9595 7146 7175 98AC
+271CD 778E 8766 9C15
+5323 4FA0 72CE 4FE0 5CE1 67D9 70A0 72ED 5CFD 70DA
+72F9 73E8 965C 7856 796B 7FC8 823A 35C7 7864 967F
+656E 6687 7455 7B6A 821D 9050 78AC 8F96 78CD 7E00
+7E16 8D6E 9B7B 8578 8F44 935C 971E 938B 9EE0 9A22
+9DB7
+959C
+4E05 4E0B 4E64 5413 759C 590F 3648 7771 5687 61D7
+7F45 5913 93BC 93EC
+5737 68BA 6E8A
+4E9B 3C54 63F3 7332 6954 6B47 874E 880D
+52A6 534F 65EA 90AA 5354 80C1 57A5 604A 62F9 631F
+594A 5CEB 633E 8105 8107 887A 5055 659C 3B68 8C10
+35BF 7FD3 55CB 6136 643A 744E 7D8A 26CC3 3666 7181
+818E 52F0 64B7 7DF3 7F2C 8762 978B 9821 64D5 8AE7
+71F2 3A66 64F7 97B5 651C 7E88 896D 8B97 9FA4
+5199 51A9 5BEB 85DB
+4F33 707A 5378 6CC4 6CFB 7EC1 7F37 6D29 70A7 7944
+5A0E 5C51 5C53 22B3F 505E 5070 5368 5FA2 68B0 70F2
+710E 7D32 4EB5 5A9F 5C5F 6E2B 245C8 79BC 7D4F 7D6C
+8C22 50C1 586E 698D 69AD 3D3D 5C67 66AC 7DE4 8909
+5667 5DB0 5EE8 61C8 6FA5 736C 7CCF 27735 97F0 71EE
+85A2 85A4 893B 8B1D 9082 99F4 7009 97A2 7023 7215
+424F 7E72 87F9 880F 9F58 9F5B 9F65 9F42 8E9E
+810B 5911
+7071 7072 547A 67AD 4FBE 54D3 67B5 9A81 54EE 5BAF
+5BB5 5EA8 6D88 7EE1 8653 9E2E 5A4B 689F 7107 7307
+900D 75DA 75DF 785D 7863 7A99 8427 9500 63F1 7D83
+7FDB 8437 560B 5610 6B4A 6F47 7BAB 8E03 5635 5F47
+61A2 3A4B 7362 92B7 9704 81AE 856D 9D1E 7A58 7C18
+87C2 87CF 9B48 9D35 56A3 7C2B 85C3 87F0 701F 6AF9
+24473 9AC7 56BB 56C2 8828 9A4D 9AD0 6BCA 8648
+6D28 3B35 7B05 5D24 6DC6 8A24 90E9 6BBD 7B4A 8AB5
+2E8C 2E8D 5C0F 6653 6681 7B71 7B7F 769B 66C9 7BE0
+76A2 8B0F
+5B5D 8096 52B9 54B2 4FF2 6548 6821 6D8D 7B11 5578
+509A 6569 35DB 8A68 5628 8A9F 562F 6B57 71BD 97A9
+6585 6586 4567
+6077 6EE7
+4F11 4FE2 54BB 5EA5 3CDC 4FEE 70CB 70CC 7F9E 8119
+8129 9E3A 81F9 8C85 9990 929D 9AE4 6A07 9AF9 9380
+9D42 93C5 9948 9C43 98CD
+82EC
+673D 7D87 6EEB 7CD4
+79C0 5CAB 5CC0 73DB 7EE3 7407 8896 9508 55C5 6EB4
+7493 890E 890F 92B9 8791 7E4D 7E61 93E5 93FD 9F45
+9BB4
+353E 4EDA 5C73 5148 597E 7EA4 4F61 5FFA 6C19 6774
+79C8 67AE 7946 7C7C 82EE 73D7 6380 83B6 8A2E 94E6
+23519 50CA 8DF9 9170 9528 5615 929B 9C9C 97EF 5B10
+61B8 66B9 9341 859F 893C 97F1 9BAE 8E6E 99A6 4D4C
+5EEF 6515 7E8E 9DB1 8E9A 7E96 8973 9C7B
+4F2D 95F2 59B6 5F26 8D24 54B8 6326 80D8 5A34 550C
+5563 5A39 5A71 6D8E 7D43 8237 86BF 8854 3B79 75EB
+86DD 9591 9592 9E47 5ACC 8858 929C 5AFA 5AFB 61AA
+648F 6F96 7509 7A34 8AB8 8CE2 3BD7 3D6A 71C5 8AF4
+8F31 918E 7647 764E 77AF 85D6 3C0A 7925 4554 9E79
+9E99 8D12 9DF3 9DF4 9DFC
+51BC 72DD 39E5 663E 5D04 3B60 6BE8 70CD 7303 86AC
+9669 8D7B 967A 7B45 5C1F 5C20 641F 8DE3 3B0E 7992
+9291 7BB2 5DAE 736B 96AA 736E 934C 71F9 85D3 9855
+5E70 6507 6AF6 8B63 861A 4606 496A 7381 97C5 986F
+7066
+4F23 53BF 5C98 2070E 73B0 7EBF 81FD 82CB 549E 59ED
+5BAA 770C 9650 54EF 57B7 5A0A 5A28 5CF4 3A87 6D80
+9665 665B 73FE 784D 83A7 9677 9985 774D 7D64 7F10
+7FA1 732E 7CAF 7FA8 817A 8706 49DF 50E9 50F4 21416
+7DAB 8AA2 648A 7DDA 92E7 61B2 3B17 6A4C 7E23 930E
+9921 58CF 8C4F 493C 9EB2 7017 81D4 737B 7CEE 9F38
+4ED9 50F2 7E4A 9466
+5FC3 59A1 5FFB 8F9B 90A4 6615 677A 6B23 7098 82AF
+76FA 4FFD 3B62 60DE 8A22 920A 950C 65B0 6B46 5EDE
+92C5 5B1C 85AA 99A8 946B 99AB
+6794 3726 8951 9414
+4F08
+3430 4F29 56DF 9620 5B5E 3B44 248F2 4FE1 8ED0 812A
+8845 8A2B 712E 7161 99B8 820B 9856 91C1
+5FC4 567A
+4E61 8297 76F8 9999 53A2 554C 90F7 5EC2 6E58 7F03
+9109 910A 7A25 8459 9115 7BB1 7DD7 81B7 858C 8944
+5FC0 9AA7 9E98 6B00 74D6 9576 9472 9A64
+4F6D 74E8 8BE6 5EA0 6819 7965 7D74 7FD4 8A73 8DED
+4EAB 4EAF 54CD 9977 6651 98E8 60F3 9284 9909 9C9E
+66CF 9B9D 8801 9BD7 97FF 9957 995F 9C76
+5411 59E0 5DF7 8683 9879 73E6 5842 7F3F 8856 8C61
+9805 842B 50CF 52E8 9297 5D91 6A61 95C0 56AE 87D3
+8950 940C 9C4C
+697F 9C5C
+661F 57B6 9A8D 60FA 7329 714B 7446 8165 86F5 89EA
+7BB5 7BC2 9B8F 66D0 89F2 935F 9A02 76A8 9BF9
+5211 884C 5F62 90A2 4F80 9649 578B 6D10 90C9 9498
+5A19 8365 9658 784E 94CF 9203 6ECE 9276 9292 92DE
+3A18 7772 9192 64E4
+5174 674F 59D3 5E78 6027 5016 8347 5A5E 60BB 6DAC
+8395 7DC8 8208 5B39 81D6
+54D8 88C4 8B03
+5401 620C 65F4 759E 76F1 6B28 80E5 987B 6647 8A0F
+987C 8657 865A 8C1E 5AAD 5E41 63DF 6E51 247E0 865B
+88C7 9808 6948 7AA2 980A 5618 9700 5653 589F 5B03
+7E03 8751 9B46 6B54 8566 8ADD 8B43 7E7B 9450 9A49
+9B1A 9B56
+4FC6 5F90 84A3
+8BB8 5474 59C1 8BE9 5194 6829 73DD 5066 8A31 668A
+8A61 7A30 7CC8 9126 9191 76E8
+65ED 4F35 5E8F 6C7F 4F90 5379 6034 6C80 82A7 53D9
+6064 662B 6D2B 460F 57BF 6B30 6B88 70C5 73EC 52D6
+654D 6558 52D7 70FC 7EEA 7EED 9157 55A3 58FB 5A7F
+6702 6E86 7D6E 8A39 6149 7166 8CC9 69D2 6F35 6F4A
+76E2 7781 7DD2 805F 84C4 928A 735D 7A38 7DD6 9B63
+77B2 85C7 85DA 7E8C 9C6E
+8053 7D9A 84FF
+524A 75B6 3EE1 8486 9774 35FE 8FA5 8FAA 859B 97BE
+7A74 6588 4E74 5B66 5CA4 5CC3 6CF6 8313 9E34 8895
+8E05 58C6 5B78 5DA8 6FA9 71E2 3D85 89F7 96E4 9DFD
+96EA 9CD5 9C48
+8840 3570 5437 5779 72D8 6856 8C11 8D90 8B14 7025
+81A4 6A30 825D 8F4C
+5405 8F69 660D 5BA3 5F32 8ED2 688B 8C16 55A7 5847
+5A97 6103 610B 63CE 6684 714A 7444 8431 8432 777B
+84D2 5107 7BAE 7E07 7FE7 8756 92D7 61C1 79A4 8AE0
+8AFC 857F 9379 99FD 7FFE 8809 77CE 85FC 8610 8B5E
+7384 73B9 3623 75C3 60AC 65CB 7401 8701 5AD9 6F29
+66B6 7487 4062 6A88 74BF 61F8
+54BA 6645 70DC 9009 3535 9078 9848 7663 766C
+6030 6CEB 39E6 6621 70AB 7EDA 7729 94C9 7404 7734
+8852 88A8 6E32 7D62 6965 6966 9249 78B9 8519 955F
+9799 98B4 7E3C 7E4F 93C7 8B82 8D19
+9C1A
+5743 52CB 57D9 7104 52DB 5864 718F 7AA8 52F2 8512
+52F3 99E8 58CE 736F 85AB 66DB 71FB 81D0 85B0 77C4
+7E81 860D 58E6 91BA
+5BFB 5EF5 65EC 9A6F 674A 5DE1 7543 8BE2 5CCB 6042
+6D35 6D54 7D03 6812 686A 6BE5 73E3 8340 8368 5071
+3704 5C0B 5FAA 63D7 295B0 8A62 99B4 69C6 6F43 9C9F
+565A 3D4C 6F6F 9129 6533 6A33 71D6 7495 87F3 9C4F
+9C58 7065
+5342 8BAF 4F28 6C5B 8FC5 4F9A 5DFA 5F87 72E5 6B89
+8A0A 8A19 8FFF 900A 595E 5DFD 6BBE 7A04 613B 8CD0
+905C 5640 6F60 8548 9D55 720B 9868 9442
+8BAD 8A13 5691
+51F6 5144 342B 5147 5308 8BBB 5FF7 6C79 54C5 605F
+6D36 80F7 80F8 8A29 8A7E 8CEF
+96C4 718A
+713D
+8BC7 7138 8A57 5910 657B 22FCC
+FDD0-3113
+4E4B 652F 536E 6C41 5431 5DF5 6C65 5767 679D 6CDC
+77E5 7EC7 80A2 829D 6800 79D3 79D6 80D1 80DD 5001
+75B7 7957 79EA 8102 887C 96BB 6894 796C 6925 81F8
+6220 6418 7A19 7D95 69B0 7994 8718 99B6 3BC4 9CF7
+9D32 9D44 7E54 9F05 8635
+6267 4F84 59B7 76F4 59EA 5024 503C 8040 91DE 57F4
+57F7 21E1C 6DD4 804C 8CAD 690D 6B96 7286 7D77 8901
+8DD6 55ED 74E1 7983 9244 588C 646D 99BD 5B02 6179
+6F10 8E2F 6A34 81B1 5128 7E36 8077 87D9 8E60 8EC4
+8E91
+5902 6B62 53EA 52A7 65E8 5740 5741 5E0B 627A 6C66
+6C9A 7EB8 962F 603E 62A7 23CB5 82B7 54AB 6049 6307
+67B3 6D14 780B 7949 8F75 75BB 41DB 7D19 8879 6DFD
+8A28 8DBE 8EF9 4920 9EF9 916F 85E2 8967
+81F3 9624 5FD7 5FEE 627B 8296 8C78 28468 5236 5394
+5781 5E19 5E1C 6CBB 7099 8D28 5CD9 5EA2 5EA4 6303
+67E3 6809 6D37 81F4 8FE3 90C5 5A21 5F8F 2267A 631A
+664A 684E 72FE 7951 79E9 8D3D 8F7E 965F 4E7F 506B
+202B7 5F9D 3A01 63B7 68BD 6956 7318 7564 75D4 79F2
+79F7 7A92 7D29 7FD0 889F 88A0 89D7 94DA 9E37 5082
+21376 5D3B 5F58 667A 6EDE 75E3 86ED 8EFD 9A98 5BD8
+5ECC 6431 6ECD 7A1A 7B6B 7F6E 8DF1 8F0A 9527 96C9
+5886 21839 6EEF 6F4C 7590 43BA 88FD 899F 8A8C 928D
+5E5F 6184 646F 71AB 7A3A 7DFB 442D 81A3 89EF 8CEA
+8E2C 92D5 64F3 65D8 7004 99E4 9D19 5295 61E5 6ADB
+7A49 4245 87B2 3609 3731 61EB 64F2 8D04 6ACD 74C6
+89F6 9BEF 7929 8C51 9A2D 9A3A 9A47 8E93 9DD9 9455
+8C52
+51EA 4FE7 5F94 8B22
+624E 5412 62AF 5953 6313 67E4 67FB 54F3 5067 55B3
+63F8 6E23 6942 5284 6463 76B6 6A1D 89F0 76BB 8B47
+9F44 9F47
+672D 7534 95F8 86BB 94E1 7160 7250 9598 7B9A 802B
+9358 8B57
+538F 62C3 82F2 7728 781F 6429 9C8A 9C9D 8E37 9B93
+9BBA 4562
+4E4D 7079 8BC8 54A4 67DE 6805 70B8 5BB1 75C4 86B1
+8A50 643E 6EA0 69A8 27A0A 9705 91A1
+8707 55FB 5AEC 906E
+5387 6298 6B7D 77FA 7813 7C77 8674 54F2 57D1 3B59
+7C8D 5560 608A 6662 6663 3B6F 88A9 8F84 5586 86F0
+8A5F 41FD 8C2A 99B2 647A 8F12 78D4 8F19 92B8 8F99
+87C4 569E 8B2B 8B3A 9BBF 8F4D 8B81 8B8B
+8005 4E7D 556B 9517 7987 8D6D 8936 8975
+8FD9 67D8 6D59 6DDB 9019 6A1C 6F6A 9E67 87C5 4826
+9DD3
+7740 8457 8517
+635A 658B 658E 6458 69B8 451D 9F4B 29C73
+5B85 6AA1
+7A84 9259
+503A 7826 50B5 5BE8 7635
+5908 7C82
+4F4B 948A 59B1 5DF6 62DB 662D 76C4 91D7 5541 924A
+99CB 7ABC 9363 76BD
+722A 627E 6CBC 7475 4203
+53EC 5146 8BCF 679B 5797 70A4 72E3 8D75 7B0A 8081
+65D0 68F9 436E 8A54 7167 7F69 4207 8087 8088 8D99
+66CC 71F3 9BA1 6AC2 77BE 7F84
+2EA5 722B 7F40
+5DDE 821F 8BCC 4F9C 5468 6D32 8BEA 70D0 73D8 8F80
+5F9F 3A04 63AB 6DCD 77EA 90EE 9E3C 558C 7CA5 8D52
+9031 8F08 44DF 9282 8CD9 8F16 970C 76E9 8B05 9D43
+9A06 8B78
+59AF 8F74 8EF8
+8098 759B 666D 83F7 776D 7B92 9BDE
+7EA3 4F37 546A 5492 5B99 7EC9 5191 54AE 663C 7D02
+80C4 76B1 836E 914E 665D 7C99 3473 8A4B 8464 8A76
+7503 50FD 76BA 99CE 5663 243F2 7E10 9AA4 7C40 7C55
+7C52 9A5F
+5E1A 70BF 99F2
+6CBE 6BE1 65C3 6834 7C98 86C5 98E6 60C9 8A40 8D88
+8A79 959A 8C35 5661 5DA6 9711 6C08 6C0A 859D 9085
+77BB 9E6F 65DC 8B6B 9958 9CE3 9A59 9B59 9C63 9E07
+8B9D
+65A9 98D0 5C55 76CF 5D2D 65AC 382D 692B 7416 370A
+640C 76DE 5D83 5D84 6990 98AD 5AF8 9186 6A4F 406A
+8F3E 28AC0 27B06 2217A 9EF5
+5360 4F54 6218 6808 685F 7AD9 5061 7EFD 68E7 6E5B
+83DA 6226 7DBB 5D98 8F1A 6230 8665 8666 89B1 8F4F
+8B67 29947 9A4F 8638
+8D1E 3630 9488 4FA6 6D48 73CD 73CE 80D7 8C9E 3598
+5E2A 6815 6862 771E 771F 7827 91DD 5075 686D 796F
+9159 5BCA 5AC3 21EC8 6438 659F 6968 7349 8474 9049
+9241 9755 699B 6B9D 7467 7504 78AA 798E 8496 84C1
+6F67 799B 7BB4 6A3C 6FB5 81FB 9331 8F43 937C 85BD
+7C48 9C75
+3431 8BCA 62AE 6795 5F2B 6623 8F78 5C52 755B 75B9
+7715 7D3E 8044 8897 8A3A 8EEB 7D7C 7F1C 88D6 4AB4
+7A39 99D7 7E25 9B12 9EF0
+5733 7EBC 9635 753D 4FB2 630B 42B6 9E29 632F 6715
+681A 7D16 9663 7739 8D48 9156 63D5 5866 7471 8AAB
+8CD1 47F4 6576 9547 9707 9D06 93AD 93AE
+8419 92F4
+5F20 5F35 7AE0 50BD 5887 5ADC 5F70 22554 615E 6F33
+7350 7CBB 9123 66B2 6A1F 24364 748B 8501 9067 9926
+87D1 9A3F 9C46 9E9E
+4EC9 957F 9577 6DA8 638C 6F32 7903
+4E08 4ED7 6259 5E10 6756 80C0 8D26 5E33 6DB1 8139
+75EE 5D82 5E5B 969C 8CEC 762C 7634 7795
+7C80 5E65 93F1 9423
+4E89 4F42 59C3 5F81 6014 722D 8BE4 20C9C 5CE5 6323
+70A1 72F0 70DD 7710 94B2 57E9 5D1D 5D22 6399 7319
+7741 8047 28713 94EE 5A9C 63C1 7B5D 3B39 5FB0 775C
+9266 5FB4 84B8 7B8F 5FB5 8E2D 7BDC 931A 9B07 9BD6
+7665
+6C36 628D 7CFD 62EF 639F 6678 6138 649C 6574
+6B63 8BC1 5E27 653F 90D1 75C7 5E40 8A3C 5863 40BB
+27D84 4223 8ACD 912D 9D0A 8B49 496D
+51E7
+6731 52AF 4F8F 8BDB 6D19 90BE 682A 73E0 8331 8BF8
+732A 7843 79FC 94E2 7D51 86DB 88BE 8A85 8DE6 69E0
+876B 9296 6A65 6F74 8AF8 8C6C 99EF 9BA2 9D38 7026
+6AEB 6AE7 9BFA 9F04 8829
+7AF9 6CCF 7AFA 70A2 7B01 70DB 7A8B 833F 7B1C 8233
+9010 7603 7BC9 71ED 880B 8E85 9C41 5B4E 705F 66EF
+6B18 7225 883E
+4E36 4E3B 20C0D 5B94 62C4 7F5C 6E1A 967C 716E 8A5D
+7151 5631 6FD0 9E88 77A9 529A 56D1 65B8 77DA
+4F2B 4F47 4F4F 52A9 7EBB 577E 677C 6CE8 82CE 8D2E
+8FEC 9A7B 58F4 67F1 6BB6 70B7 75B0 771D 782B 795D
+7ADA 7969 7D35 7D38 7F9C 8387 86C0 5D40 7B51 8A3B
+8CAF 8DD3 8EF4 94F8 7B6F 9252 99B5 7BB8 7FE5 6A26
+92F3 99D0 7BEB 9714 9E86 9444
+58B8
+6293 6A9B 81BC 9AFD 7C3B
+5353 62D9 70AA 502C 6349 684C 68C1 6DBF 68F3 7A5B
+25F1A 4B93 7A71 883F
+5734 5F74 6C4B 72B3 707C 53D5 59B0 65AB 6D4A 8301
+4E35 6D5E 8BFC 914C 5544 5545 5A3A 39FB 3B6C 68B2
+70F5 65B1 666B 6913 7438 4401 251CD 787A 7AA1 7F6C
+65B2 69D5 64AF 64C6 799A 4175 8AC1 8AD1 92DC 6FC1
+7BE7 289E7 64E2 6580 65B5 6FEF 243F8 6AE1 8B36 956F
+9D6B 7042 8817 942F 9432 7C57 9DDF 7C71
+5285
+7AA7
+62FD
+8DE9
+96B9 8FFD 9A93 9525 9310 9A05 9D7B
+6C9D
+5760 6858 7B0D 5A37 60F4 7F12 7577 7500 787E 8187
+8D58 589C 8AC8 918A 7E0B 9323 991F 7908 8D05 8B75
+8F5B 9446
+7F00 7DB4
+4E13 53C0 5C02 7816 5C08 587C 5AE5 911F 747C 78D7
+819E 989B 750E 78DA 8AEF 87E4 9853 9C44
+8F6C 5B68 8EE2 7AF1 4871 8F49
+7077 556D 581F 7451 815E 8483 50CE 8D5A 64B0 7BC6
+9994 7BF9 8CFA 8948 8B54 994C 56C0 7C51
+5B92 80AB 8FCD 7A80 8C06 8AC4 8860
+51C6 57FB 6E96 7DA7
+8A30 7A15
+51D6
+5986 5E84 599D 5A24 6869 8358 6889 838A 6E77 7CA7
+88C5 88DD 6A01 7CDA
+58EE 58EF 72B6 72C0 58F5 710B 6F34 649E 6207
+5E92
+4E2D 4F00 6C77 5223 5990 5F78 5FE0 6CC8 7082 7EC8
+26B15 67CA 76C5 949F 41D7 822F 8873 8877 7D42 9221
+5E52 953A 8520 92BF 87A4 87BD 937E 9F28 8E71 9418
+2915E 7C66
+80BF 79CD 51A2 55A0 5C30 585A 585C 6B71 7144 816B
+7607 7A2E 8E35 7A5C
+4EF2 4F17 5995 72C6 794C 91CD 833D 869B 8876 5045
+773E 5839 5A91 7B57 8846 8AE5
+8FDA
+FDD0-3114
+5403 4F99 54E7 5F68 80F5 86A9 9E31 7735 7B1E 55AB
+74FB 8A35 55E4 5AB8 75F4 7D7A 645B 5644 8ABA 779D
+9D1F 87AD 7661 9F5D 9B51 5F72 9ED0
+5F1B 6C60 9A70 577B 5CBB 8FDF 6301 7AFE 830C 6B6D
+834E 86B3 8D7F 7B42 8CBE 8D8D 9045 99B3 7B8E 905F
+5880 6F26 8E1F 7BEA 9072 8B18 28A32
+5C3A 53FA 544E 4F88 5376 9F7F 5791 80E3 6065 3DB4
+7C8E 42BC 803B 8687 6B3C 6B6F 88B2 88B3 88ED 9279
+9F52 892B
+5F73 53F1 65A5 6758 707B 8D64 996C 62B6 52C5 605C
+70BD 52D1 7FC4 7FC5 6555 70FE 75D3 557B 3961 6E41
+7873 98ED 50BA 75F8 815F 8DEE 9253 96F4 7608 7FE4
+9290 6157 618F 761B 7FE8 906B 71BE 61D8 8DA9 4820
+994E 9D92 9DD8
+599B 9EB6
+53C9 6260 6748 2472F 809E 81FF 633F 505B 63D2 63F7
+9987 55CF 929F 9538 7580 8256 9364 9937
+79C5 579E 67E5 832C 8336 5D56 7339 976B 643D 8A67
+5BDF 69CE 78B4 25ED7 6AAB 297D4
+8869 8E45 9572 9454
+597C 6C4A 5C94 4F98 8BE7 59F9 7D01 5DEE 47D5 8A6B
+8F66 4F21 8ECA 4FE5 7817 5513 8397 7868 86FC
+626F 5056 47A3 64A6
+5C6E 5F7B 577C 8FE0 3934 70E2 3FED 352D 8045 63A3
+7869 9819 5FB9 64A4 6F88 3B1A 52F6 77AE 4720 7221
+8286 62C6 9497 91F5
+4FAA 67F4 8C7A 7961 558D 5115 9F5C
+831D
+867F 8883 8A0D 7625 8806 56C6
+6284 2207E 5F28 600A 6B29 949E 8A2C 712F 24674 8D85
+9214 52E6 4AFF
+724A 6641 5DE2 5DE3 671D 9F0C 6F05 911B 5632 6A14
+6F6E 7AB2 7F7A 8F48 9F02 8B3F
+5435 7092 7727 7123 717C 9EA8 5DD0
+4EE6 4EEF 8016 89D8
+62BD 5A64 640A 7633 7BD8 72A8 72AB
+4EC7 601E 4FE6 5E31 6826 60C6 7D2C 7EF8 6906 7574
+7D52 83D7 6101 7697 7A20 7B79 9167 7DA2 88EF 8E0C
+5114 96D4 568B 5B26 5E6C 61E4 71FD 85B5 96E0 7587
+7C4C 8E8A 91BB 8B8E 8B90
+4E11 4E12 541C 677B 677D 4FB4 5062 7785 919C 77C1
+9B57
+81ED 81F0 6BA0 905A
+916C
+8FBF 89C7 6400 68B4 8998 9246 88E7 92D3 5E68 895C
+6519
+5A75 8C17 68CE 6E79 998B 7158 7985 7F20 50DD 7351
+8749 8A97 5103 5B0B 5EDB 6F79 6F7A 7DFE 6FB6 78DB
+92CB 6BDA 79AA 9561 700D 87EC 913D 5133 5296 87FE
+56B5 5DC9 703A 9141 6B03 7E8F 7E92 8E94 9575 826C
+8B92 9471 995E
+4EA7 522C 65F5 4E33 65BA 6D50 5257 8C04 5574 7522
+7523 94F2 9610 5277 8487 5D7C 644C 6EFB 563D 5E5D
+8AC2 95B3 9AA3 71C0 8546 7C05 5181 7E5F 8B42 8FB4
+93DF 95E1 56C5 705B 8B87
+5FCF 785F 3B04 6472 61F4 98A4 61FA 7FBC 97C2 986B
+58E5
+62BB 6375 90F4 741B 55D4 7D9D 778B 8AC3 8CDD 7E1D
+8B13
+5C18 81E3 5FF1 6C88 6C89 8FB0 9648 8FE7 5BB8 831E
+6550 8380 8390 8A26 8C0C 8ED9 9673 6116 63E8 9202
+7141 5875 760E 6A04 852F 9703 8AF6 87B4 85BC 9E8E
+66DF 9DD0
+8DBB 7876 789C 588B 5926 78E3 8E38 9356 8D02 91A6
+75A2 886C 9F80 8D81 8D82 6987 9F53 512C 9F54 512D
+56AB 8C36 6AEC 896F 8B96
+70E5 6668
+4F25 660C 5000 5A3C 6DD0 7316 960A 667F 7429 83D6
+9520 88EE 9329 95B6 9CB3 4B96 9BE7 2A087 9F1A
+4EE7 514F 80A0 82CC 9578 5C1D 507F 5E38 5F9C 74FA
+8407 751E 8178 5617 5872 5AE6 747A 8193 92FF 511F
+5690 9CBF 93DB 9C68
+5382 573A 6636 60DD 5834 50D8 53B0 5EE0 6C05 92F9
+6005 739A 7545 5021 9B2F 5531 60B5 713B 7452 66A2
+757C 8AAF 97D4
+655E 6919 87D0
+6CDF 9637 67FD 722F 6D7E 79F0 5041 86CF 36F5 68E6
+6E5E 725A 7424 8D6A 50DC 6186 645A 7A31 9757 6490
+6491 7DFD 6A55 77A0 8D6C 9833 6A89 7AC0 7A6A 87F6
+93F3 93FF 9953
+4E1E 6210 673E 5448 627F 67A8 8BDA 4E57 57CE 5A0D
+5CF8 6D06 90D5 4E58 57D5 5BAC 6330 665F 73F9 8100
+6381 73F5 7A9A 812D 837F 94D6 5818 60E9 68D6 6909
+7A0B 7B6C 7D7E 584D 5856 6E97 7880 41F8 88CE 8AA0
+757B 9172 92EE 6195 6F82 6F84 6A59 6A99 7013 61F2
+2815D 9A2C
+4FB1 5F8E 609C 9A8B 5EB1 901E 7748 9A01
+79E4
+9BCE
+51FA 5C80 521D 6474 6A17 8C99 9F63
+520D 82BB 9664 53A8 8C60 9504 5AB0 6EC1 8021 870D
+8D8E 924F 96CF 3551 7293 84A2 84AD 3861 5EDA 854F
+92E4 6A71 7BE8 5E6E 6AC9 96DB 6AE5 85F8 8E70 8E87
+9DB5 8E95
+51E6 6775 7840 50A8 6918 696E 891A 6FCB 5132 6A9A
+790E 9F6D 9E00 9F7C
+4E8D 5904 7ACC 6035 62C0 7ECC 8C56 67F7 6B2A 7AD0
+4FF6 654A 755C 3647 57F1 73FF 7D40 8655 5097 7421
+6410 6EC0 89E6 9110 8E00 95A6 510A 563C 84EB 8AD4
+61B7 65B6 6B5C 81C5 9EDC 89F8 77D7
+695A 698B 6A7B 74B4 87F5
+6B3B 6B58
+9034 8E14 6233
+2ECC 2ECD 8FB6 8FB5 3C8B 5A15 5A16 60D9 6DB0 7EF0
+5A7C 814F 8F8D 44CE 916B 7DBD 8DA0 8F1F 9F8A 64C9
+78ED 7E5B 6B60 56BD 9F6A 9461
+63E3 640B
+8197
+555C 562C 81AA 8E39
+5439 708A
+5782 5015 57C0 6376 68F0 690E 8144 9672 6425 83D9
+9524 69CC 7BA0 9318 9840 939A
+9FA1
+5DDB 5DDD 6C1A 7A7F 5276 732D 744F
+4F1D 4F20 8221 8229 8239 570C 50B3 693D 9044 66B7
+7BC5 8F32
+821B 8348 5598 6B42 50E2 8E33
+6C4C 4E32 7394 948F 91E7 8CD7 9DA8
+65FE 6776 6625 583E 5A8B 8405 6699 693F 7443 7BBA
+877D 6A41 8F34 81A5 6AC4 9C06 9D9E 2A0B9
+7EAF 5507 6D71 7D14 9659 6DF3 8123 83BC 6E7B 7289
+6EE3 6F18 8493 84F4 9187 9195 931E 9BD9
+5046 60F7 8436 7776 8CF0 8822
+9E51 9D89
+5205 75AE 7A93 7A97 724E 6450 7255 7621 7ABB
+5E8A 7240 5647 5E62
+95EF 50B8 6464 78E2 95D6
+521B 6006 5231 524F 5259 51D4 5275 6134
+5145 51B2 5FE1 6C96 833A 6D7A 73EB 7FC0 8202 5603
+644F 5FB8 6183 61A7 885D 41B9 7F7F 825F 8E56
+866B 5D07 5D08 9680 7DDF 8769 8908 87F2 721E
+5BA0 57EB 205A5 5BF5
+94F3 63F0 9283
+FDD0-3115
+5C38 5931 5E08 545E 8671 8BD7 9E24 5C4D 65BD 6D49
+72EE 90BF 5E2B 7D41 91F6 6E64 6E7F 921F 6EAE 6EBC
+7345 8479 8A69 9247 9248 7461 8492 84CD 9CF2 8768
+9CFE 27A79 9CBA 6FD5 26488 8937 9366 2A014 9BF4 9C24
+9DB3 8979
+5341 9963 77F3 4E6D 8FBB 65F6 20C34 5B9E 5B9F 65F9
+59FC 5CD5 70BB 8680 98DF 98E0 57D8 6642 794F 83B3
+5BD4 6E5C 5852 6EA1 9048 9250 5BE6 69AF 8494 8755
+4215 9CA5 9F2B 9F2D 9C23
+53F2 77E2 4E68 8C55 4F7F 59CB 9A76 5158 5BA9 5C4E
+7B36 9242 99DB
+58EB 6C0F 793B 4E17 4E16 4ED5 5E02 2EAC 793A 534B
+5F0F 5FD5 2EAE 4E8A 4F3C 53D3 623A 4E8B 4F8D 52BF
+5469 67F9 8BD5 9970 519F 5BA4 6040 6043 62ED 662F
+6630 67BE 67FF 7702 89C6 8D33 683B 70D2 770E 7721
+8210 8F7C 9002 94C8 8996 8C49 901D 91C8 5A9E 5D3C
+5F11 5FA5 63D3 8C25 8CB0 91CA 52E2 55DC 5F12 7757
+7B6E 89E2 8A66 8EFE 9230 9243 98FE 8213 8A93 927D
+596D 9069 492D 92B4 9919 566C 5B15 6FA8 8ADF 8AE1
+991D 87AB 8B1A 907E 7C2D 91CB 896B
+4F66 7ACD 8BC6 62FE 5319 5D75 6981 7176 7BD2 9B96
+7C42 8B58 9C18
+6740 6C99 7EB1 4E77 5239 524E 7802 5526 7300 7C86
+7D17 686C 6BBA 6BEE 3E3A 838E 94E9 75E7 7870 715E
+88DF 699D 6A27 8531 9B66 9CA8 9BCA 9BCB 93A9
+50BB 510D
+503D 553C 5551 5565 5E39 53A6 55A2 8410 5EC8 3C3C
+6B43 7FDC 4209 7B91 7FE3 95AF 970E
+7E4C
+5962 731E 8D4A 756C 7572 8F0B 8CD2 8CD6 6AA8
+820C 4F58 8675 86C7 86E5 27D73
+820D 6368 4B37
+538D 8BBE 793E 5399 5C04 6D89 6DBB 6E09 8A2D 8D66
+5F3D 6151 6442 6444 6EE0 6174 6475 850E 6B59 97D8
+9A07 8802 4713 61FE 651D 7044 9E9D 6B07
+820E
+3D13 7B5B 917E 7BE9 7C01 7C1B 91C3
+7E7A
+6652 3B20 95B7 66EC
+5F30 634E 70E7 68A2 83A6 713C 7A0D 65D3 7B72 8244
+86F8 8F0E 71D2 4230 98B5 9AFE 9BB9
+52FA 828D 67D6 73BF 82D5 7AF0 97F6
+5C11 28218 4520
+52AD 5372 7ECD 90B5 54E8 5A0B 7D39 8891 7744 7DA4
+6F72
+8571
+53CE 6536
+624B 5B88 57A8 9996 824F
+5BFF 53D7 72E9 517D 552E 6388 6DAD 7EF6 75E9 58FD
+7DAC 5900 7626 46F5 7378 93C9
+624C 7363
+5C71 5F61 9096 5220 522A 6749 59CD 59D7 829F 9490
+67F5 72E6 73CA 8222 82EB 886B 57CF 75C1 8ED5 633B
+7B18 8120 8DDA 527C 6427 5607 5E53 717D 6F78 6F98
+6A86 7E3F 81BB 7FB4 7FB6 9BC5 3C11
+27A3E
+95EA 9655 9583 965D 3A8E 6671 7154 7752 718C 89A2
+8BAA 6C55 38CC 759D 5261 6247 8A15 8D78 639E 91E4
+5093 5584 928F 9A9F 50D0 58A0 58A1 6F6C 25531 7F2E
+912F 5B17 64C5 6A3F 6B5A 81B3 4C49 78F0 8B06 8D61
+4120 7E55 87EE 4947 87FA 8B71 8D0D 9425 994D 9A38
+9CDD 7057 9C53 9C54
+5738 6763 958A 657E
+7533 5C7E 625F 4F38 8EAB 4F81 547B 59BD 7C76 7EC5
+8BDC 59FA 67DB 6C20 73C5 7A7C 7C78 5A20 5CF7 7521
+7712 7837 6552 6DF1 7D33 8398 515F 68FD 8A37 8460
+88D1 8A75 20EDD 7527 84E1 8518 71CA 99EA 9CB9 66D1
+8593 9D62 9BF5 9C3A
+4EC0 751A 795E 4C20
+5F1E 90A5 5BA1 77E4 54C2 77E7 5BB7 8C02 8C09 5A76
+6E16 8A20 5BE9 8AD7 9823 9B6B 66CB 9825 77AB 5B38
+700B 3C02 89BE 8B85
+80BE 4FBA 661A 80C2 6D81 7718 6E17 8124 7973 814E
+613C 614E 6939 7606 7F67 8703 8704 6EF2 92E0 762E
+5814 698A 9C30
+4F24 6B87 5546 89DE 50B7 5892 616F 6EF3 6F21 6BA4
+71B5 850F 87AA 89F4 8B2A 9B3A
+57A7 6244 664C 8D4F 8CDE 8D18 945C
+4E04 4E0A 5C19 5C1A 6066 7EF1 7DD4 979D
+4EE9 88F3
+5347 751F 544F 58F0 6598 9629 6607 6CE9 72CC 680D
+6B85 7272 73C4 82FC 3C61 965E 7B19 9679 6E66 713A
+7525 924E 8072 9F2A 9D7F
+7EF3 61B4 7E69 8B5D
+7701 771A 5057 6E3B
+5723 80DC 6660 5270 76DB 5269 52DD 8CB9 5D4A 741E
+8056 58AD 69BA 8542 8CF8
+7AD4 66FB 6A73
+4E66 6BB3 5C17 6292 7EBE 3450 53D4 6778 67A2 59DD
+964E 500F 5010 66F8 6B8A 7D13 6393 68B3 6DD1 7102
+8ED7 758E 758F 8212 83FD 9103 6445 6BF9 7D80 8F93
+8DFE 8E08 6A1E 7479 852C 8F38 6A7E 9B9B 6504 5135
+9D68
+79EB 5A4C 5B70 8D4E 587E 719F 74B9 8D16
+9F21 5C5E 6691 9ECD 668F 7F72 8700 9F20 6F7B 66D9
+3EFF 85A5 85AF 7659 85F7 8961 5C6C 8969 9483
+672E 672F 620D 675F 6CAD 4FB8 51C1 54B0 6037 6811
+7AD6 8FF0 6055 6352 8357 5EB6 5EBB 7D49 8853 5C0C
+9683 6570 7AEA 8167 8481 88CB 9265 5885 6F31 6F44
+6578 6F8D 8C4E 6A39 6FD6 9330 4240 93E3 9D90 866A
+702D 7CEC 8834 9C6A 9C70
+5237 5530
+800D
+8A9C
+8BF4 54FE 8AAA 8AAC
+5981 70C1 6714 94C4 6B36 7855 77DF 6420 69CA 78A9
+84B4 7361 7BBE 26097 9399 720D 9460
+8870 6454 2812E
+7529
+5E05 5E25 2361A 87C0 535B
+8C01 813D 8AB0
+6C34
+5E28 6D97 6D9A 7971 7A05 7A0E 7761 88DE 7793
+6C35 6C3A 9596
+95E9 62F4 9582 6813
+6DAE 8168
+542E
+987A 821C 9806 6A53 779A 8563 77AC 9B0A
+53CC 971C 96D9 5B40 9AA6 5B47 9A3B 6B06 7935 9DDE
+9E74 4276 826D 9A66 9E18
+723D 587D 6161 6F3A 6A09 7E14 45EE
+7040
+93EF
+FDD0-3116
+2E9C 65E5 9A72 56F8 91F0 9224 99B9
+60F9
+70ED 71B1
+5A06 9976 6861 835B 5B08 6A48 8558 8953 9952
+6270 96A2 64FE
+7ED5 9076 7E5E
+53B9 79B8 67D4 5A83 63C9 6E18 7163 7448 4413 8447
+7CC5 875A 8E42 8F2E 9352 97A3 74C7 9A25 9C07 9D94
+7C88 697A 97D6
+2EBC 8089 5B8D 816C
+5465 80B0 86A6 887B 8887 86BA 88A1 7136 9AE5 562B
+3723 9AEF 71C3 7E4E 4533
+5184 5189 59CC 67D3 73C3 82D2 5AA3 6A6A
+8485
+4EBA 4EBB 4EC1 58EC 5FC8 6732 5FCE 79C2 82A2 9213
+9B5C 928B 433E 9D40
+5FCD 6820 6823 834F 79F9 8375 68EF 7A14
+5203 5204 8BA4 4EDE 4EED 8BB1 4EFB 5C7B 5C83 3834
+6268 7EAB 2EB6 2634C 598A 6752 7263 7EB4 8095 8F6B
+97E7 996A 59D9 794D 7D09 7D1D 887D 8A12 8ED4 6895
+3E3E 8EE0 41EE 7D4D 814D 88B5 976D 9771 97CC 98EA
+845A 8A8D 9901
+7D9B 8EB5
+7A63 5134 52F7 703C 737D 8618 74E4 79B3 7A70 4274
+8E9F 9B24
+58CC 56B7 58E4 6518 7219 7E95
+8BA9 61F9 8B72 8B93
+6254
+4ECD 20BA8 3B41 8FB8 793D 3EB1 967E
+82BF
+633C
+5982 909A 4F9E 5E24 6847 8339 94F7 6E2A 7B4E 88BD
+8498 92A3 8761 5112 8560 9D11 5685 5B2C 5B7A 6FE1
+9D3D 66D8 71F8 85B7 8815 8966 98A5 91B9 986C 9C6C
+6C5D 8097 4E73 8FB1 910F 64E9
+5165 6D33 55D5 5AB7 6EBD 7F1B 84D0 7E1F 8925
+6256 6741 8FBC 9CF0 5DBF
+637C
+53D2 82E5 5F31 504C 6E03 712B 9100 6949 84BB 7BAC
+7BDB 7207 9C19 9C2F 9DB8
+5D76
+5A51 6875 7524 7DCC 8564 4B10
+6A64 854A 854B 7E60 8602 8603
+6C6D 6798 82AE 4132 868B 9510 745E 777F 8739 92B3
+92ED 53E1 289E8 3AAB 58E1
+5827 648B 58D6
+962E 670A 8F6F 800E 5044 8EDF 5A86 744C 789D 7DDB
+44F4 8F2D 74C0 791D
+77A4
+95F0 6DA6 958F 95A0 6F64 6A4D 81B6
+8338
+620E 809C 6804 72E8 7ED2 5BB9 3B5C 6BE7 8319 8363
+70FF 4846 5D58 41EF 7D68 7FA2 5AB6 5AC6 5D64 6408
+6411 6EB6 38D1 6995 69AE 69B5 7194 7462 84C9 7A41
+877E 9555 7E19 878D 878E 8923 99E5 9AF6 5B2B 5DB8
+7203 9394 701C 5DC6 66E7 8811 2A0FE
+5197 5B82 5748 22AE8 5087 8EF5 6C04
+9D27
+7A43
+FDD0-3117
+4E72 5B5C 5179 54A8 59D5 59FF 830A 6825 7386 7D0E
+8332 8D40 8D44 6DC4 79F6 7F01 8C18 55DE 5B73 5D6B
+6914 6E7D 6ECB 7CA2 8F8E 5B76 8458 89DC 8A3E 8CB2
+8CC7 8D91 9111 9531 798C 7A35 7DC7 922D 9543 9F87
+8F1C 6FAC 8AEE 8DA6 8F3A 9319 9AED 9CBB 9F12 937F
+93A1 74BE 983F 983E 9BD4 9D85 9F4D 2A5CB 9C26
+84FB
+20094 4ED4 5407 674D 3EAD 59C9 59CA 77F7 79C4 5470
+7C7D 8014 80CF 8678 79ED 6893 7B2B 91E8 5559 7D2B
+6ED3 8A3F 699F
+5B57 81EA 8293 39D8 5033 525A 6063 7278 8321 6E0D
+7725 7726 80D4 80FE 6F2C 3C74
+5B50 5D30 6A74
+5E00 531D 6C9E 5482 8FCA 62F6 7D25 7D2E 9254 9B73
+81DC 81E2
+6742 7838 507A 5592 97F4 96D1 22D8D 5DBB 78FC 894D
+96DC 56CB 56D0 96E5
+548B
+5219 629E 6CA2 62E9 6CCE 6CFD 8D23 5247 8FEE 835D
+5536 5567 5E3B 7B2E 8234 8CAC 6EAD 77E0 5616 5AE7
+5E58 7BA6 6A0D 8ACE 8D5C 64C7 6FA4 769F 7794 7C00
+790B 8B2E 8CFE 880C 8957 9F5A 456A 9F70 9E05
+5928 4EC4 5E82 6C44 6603 6617 6351 5D31
+4F2C 8536
+707D 707E 753E 54C9 683D 70D6 6E3D 83D1 7775 8CF3
+5BB0 5D3D 43C1
+518D 5728 6257 4FA2 6D05 8F7D 50A4 8F09 9168 510E
+7E21
+8D3C 621D 8CCA 9C97 9BFD 8808 9C02 9C61
+50AE 906D 7CDF 8E67 91A9
+51FF 947F
+65E9 67A3 86A4 68D7 6FA1 74AA 85BB 7E70 85FB
+7076 7681 7682 5515 5523 688D 9020 55BF 8241 6165
+566A 71E5 7C09 8B5F 8DAE 8E81 7AC3 7AC8
+6806
+90B9 9A7A 8BF9 90F0 966C 68F7 68F8 83C6 9112 7B83
+7DC5 8ACF 9CB0 9139 9BEB 9EC0 9A36 9F71 9F7A
+8D71 8D70
+594F 63CD 6971 3D75
+9BD0
+5142 7CCC 7C2A 7C2E 9415 941F
+54B1
+661D 6CAF 685A 5BC1 3CEB 63DD 5646 648D 5127 6505
+6512 5139 6522 8DB1 7938 8DB2
+6682 3506 66AB 8CDB 8D5E 933E 6FFD 8E54 913C 74C9
+8D0A 93E8 74D2 373A 7052 8B83 9147 74DA 79B6 8978
+8B9A 9961
+600E
+8C2E 8B56 8B5B
+56CE
+5328 7242 7F98 8D43 8CCD 81E7 8CD8 8535 8D13 9AD2
+8D1C
+9A75 99D4
+3638 5958 5F09 810F 585F 846C 92BA 81D3 81DF
+5897 589E 618E 7F2F 912B 6A67 71B7 7494 77F0 78F3
+7F7E 7E52 8B44
+9503 92E5 8D60 7511 8D08
+9C5B
+79DF 8445 84A9
+5346 8DB3 5352 54EB 5D12 5D2A 65CF 50B6 7BA4 8E24
+8E3F 955E 93C3
+8BC5 7EC4 963B 4FCE 723C 73C7 7956 7D44 8A5B 977B
+4503
+93BA
+6628 79E8 637D 838B 690A 7422 7A13 7B70 923C
+20087 5DE6 4F50 5528 7E53
+4F5C 5750 3634 5C9D 5C9E 600D 963C 4FB3 80D9 5511
+5EA7 795A 505A 3930 3B6E 888F 8443 8444 98F5 3600
+7CF3
+5497 84D9
+539C 6718 3B70 55FA 6A36 87D5 7E97
+5D8A 5634 5DB5 567F 74BB
+682C 7D4A 9154 6700 666C 797D 7A21 7F6A 8FA0 69DC
+917B 9189 855E 92F7 930A 6A87 6A8C
+67A0 7A5D
+94BB 28256 8E9C 947D
+7E64 7F35 7E82 7E89 7C6B 7E98
+6525 945A
+5C0A 58AB 58FF 5D9F 6A3D 9075 7E5C 7F47 940F 9CDF
+9C52 9DF7
+50D4 5642 6499 453F 8B50
+6358 928C
+9D8E
+5B97 5027 7EFC 9A94 582B 5D4F 5D55 60FE 68D5 7323
+8159 6721 6936 847C 5D78 4053 7A2F 7D9C 7DC3 71A7
+4226 7DF5 7FEA 876C 8E28 8E2A 78EB 9350 8C75 8E64
+9A0C 9B03 9A23 9B09 9B37 9BEE 9BFC 9441
+603B 506C 6374 60E3 6121 63D4 6403 50AF 3DD3 6460
+7DCF 84D7 7E02 7E3D 93D3
+7EB5 662E 75AD 500A 7314 7882 7CBD 7CC9 7632 7E26
+931D 7E31 7CED
+6F48
+FDD0-3118
+5472 75B5 8D7C 5068 8D80 8DD0 29A28 9AB4 7E12 8800
+9ACA 9F79
+8BCD 3639 5790 67CC 73C1 5832 7960 8308 8328 3935
+74F7 46D0 8A5E 8F9D 8F9E 6148 7506 78C1 96CC 4A0F
+9E5A 7CCD 8FA4 98FA 9908 3602 5B28 6FE8 858B 9D1C
+7920 8FAD 9DBF 9DC0
+6B64 4F4C 6CDA 73BC 7689 7D2A 9B86
+673F 6B21 4F3A 4F7D 523A 523E 5E9B 6828 8326 7D58
+83BF 86D3 8D50 8CDC 8786 3A5E
+5693 64E6 6503
+7924
+906A 56C3
+518A 518C 4FA7 5395 607B 62FA 6D4B 6547 755F 5074
+53A0 7B27 7CA3 5EC1 60FB 6E2C 7B56 8417 7B5E 7B74
+8434 5884 3A32 7BA3 84DB 61A1 25C21 7C0E
+5072 5A47 731C
+624D 72B2 6750 8D22 8CA1 88C1 6EA8 7E94
+6BDD 91C7 5038 554B 5BC0 5F69 63A1 776C 8DF4 7DB5
+8E29
+57F0 68CC 83DC 8521 7E29
+64A1 64CD 7CD9
+66FA 66F9 5608 5D86 6F15 69FD 84F8 25562 825A 87AC
+893F 93EA
+8278 8349 613A 61C6 9A32
+808F 9135 8959
+2EBE 8279
+51D1 6E4A 8160 8F8F 8F33
+53C2 53C3 53C4 98E1 9A96 53C5 55B0 6E4C 50AA 5B20
+9910 9A42
+6B8B 8695 60ED 6B98 615A 8745 6159 45DD 5B31 8836
+883A
+60E8 6701 6158 61AF 7A47 7BF8 9EEA 9EF2
+707F 36D1 63BA 5B71 7CB2 647B 6FAF 71E6 74A8 8592
+8B32
+510F 7218
+5D7E
+5C91 6D94 7B12 68A3
+4ED3 4EFA 4F27 6CA7 82CD 9E27 5009 8231 5096 5D62
+6EC4 734A 84BC 8259 87A5 9DAC
+85CF 9476
+416E 8CF6
+6FF8 7F49 6B0C
+66FD 564C
+5C42 66FE 5C64 5D92 3B1D 7AF2 4255 9A53
+8E6D
+7C97 89D5 9E81 9E84 9EA4
+5F82 6B82
+4FC3 731D 8128 9162 7604 8A8E 8D97 5648 61B1 851F
+8E27 918B 762F 7C07 7E2C 8E59 4944 9F00 8E74 8E75
+9863
+6413 7473 64AE 78CB 9073 8E49 919D
+3B6B 8658 75E4 7749 77EC 5D6F 5D73 84AB 8516 9E7E
+9142 9E7A 8EA6
+811E
+5249 5252 539D 590E 632B 63AA 839D 83A1 65AE 68E4
+902A 9509 9519 84CC 6B75 92BC 932F
+5D14 50AC 51D7 7F1E 5894 3720 5D89 615B 6467 69B1
+7355 69EF 78EA 7E17 93D9
+6F3C 7480 8DA1 76A0
+4F1C 5FF0 75A9 5005 7C8B 7D23 7FC6 8103 8106 5550
+555B 60B4 6DEC 6BF3 7120 813A 8403 7601 7CB9 7DB7
+7FE0 81AC 81B5 6FE2 7AC1 9847 81CE 894A
+4E7C
+6C46 64BA 92D1 9569 8E7F 651B 8EA5 9479
+6AD5 5DD1 6B11 7A73
+7A9C 6BA9 71B6 7BE1 7C12 7AC4 7228
+6751 90A8 76B4 8E06 6F8A 7AF4
+5B58 4F9F 62F5
+520C 5FD6
+5BF8 540B 7C7F
+5306 56EA 56F1 5FE9 679E 82C1 6031 60A4 217DF 68C7
+7127 249DA 8471 6F17 8061 9AA2 66B0 6A05 6A2C 719C
+747D 7481 7DEB 8066 806A 84EF 8525 779B 71EA 7BF5
+8070 87CC 936F 7E71 93E6 9A18 9A44
+4ECE 4E1B 5F93 5A43 5B6E 5F96 5F9E 60B0 6DD9 742E
+6152 6F0E 6F40 6F68 8AB4 8CE8 8CE9 6A37 53E2 85C2
+7047 6B09 721C
+6181 8B25
+8310
+FDD0-3119
+53B6 7E9F 4E1D 53F8 3EA8 7CF9 79C1 549D 6CC0 601D
+8652 9E36 5AA4 65AF 7D72 7F0C 86F3 6952 3D32 9270
+98D4 51D8 53AE 69B9 7997 7F73 8724 9536 5636 565D
+21852 5EDD 6495 6F8C 78C3 79A0 25BE8 7DE6 92D6 71CD
+856C 8784 452E 87D6 87F4 98B8 9A26 9401 29170 9DE5
+9F36 7C6D
+6B7B
+5DF3 4E96 56DB 5BFA 6C5C 4F40 4FA1 5155 59D2 5B60
+676B 6CD7 6CE4 7940 9972 9A77 3B52 67F6 726D 5A30
+6D0D 6D98 8082 98E4 7B25 801C 91F2 7AE2 8997 55E3
+8086 8C84 9236 923B 98FC 99DF 79A9 5129 857C 7003
+4FEC 6056 92AF
+4EE8 6331 6332 6492
+6D12 8A2F 9778 6F75 7051 8EA0
+5345 6CE7 98D2 810E 9212 8428 644B 98AF 99BA 85A9
+6AD2 8644
+20BBF 96A1
+95AA
+8272 6D13 681C 6DA9 556C 94EF 6B6E 7417 96ED 55C7
+745F 6B70 92AB 6F81 61CE 64CC 6FC7 7637 7A51 6F80
+74B1 7012 7A61 7E6C 8F56 93FC 8B45 98CB
+6E0B 6FCF 7A6F
+6BE2 6122 63CC 585E 6BF8 816E 567B 9CC3 984B 4C04
+9C13
+4222
+55EE 8D5B 50FF 8CFD 7C3A
+5625
+63BB 9A9A 6145 6414 6E9E 7F2B 7E45 81CA 9CCB 9A12
+9A37 9C20 9C62
+626B 6383 5AC2 4545
+57FD 7619 6C09 77C2 9ADE
+87A6
+635C 5EC0 998A 55D6 5ECB 641C 6449 6EB2 7340 910B
+6457 22CB7 8490 84C3 953C 98D5 422D 8258 878B 9199
+93AA 993F 98BC 98BE 9A2A
+53DC 53DF 5081 55FE 778D 64DE 85AE 64FB 6AE2 85EA
+7C54
+8184 7636
+55FD
+4E09 5F0E 53C1 6BF5 4200 6BFF 7299 9B16
+4ED0 4F1E 5098 7CC1 7CC2 9993 7CDD 7CE3 7CE4 7E56
+93D2 93FE 9730 994A
+4FD5 5E34 60B7 6563 9590
+58ED 6BF6 5381 6A75
+68EE 692E 69EE 8942
+6852 6851
+55D3 6421 78C9 892C 98A1 939F 9859
+4E27 55AA
+69E1
+50E7 448F 9B19
+82CF 7526 9165 7A23 7AA3 7A4C 6AEF 8607 8613 56CC
+4FD7
+738A 5919 6CDD 8083 6D2C 6D91 73DF 7D20 5BBF 6880
+6B90 7C9B 83A4 901F 9A95 5083 7C9F 8C21 55C9 5850
+5851 5ACA 612B 6EAF 6EB8 8085 9E54 50F3 3504 612C
+69A1 8186 89EB 8D9A 9061 619F 6A0E 6A15 6F5A 6F65
+24882 78BF 850C 906C 92C9 9917 3B18 6A5A 749B 7E24
+7C0C 8B16 8E5C 85D7 9A4C 9C50 9DEB
+8BC9 8A34 9BC2
+5506 36D6 5A11 686B 68AD 838F 509E 7743 55CD 7FA7
+644D 7F29 84D1 8D96 7C11 450B 7C14 7E2E 9AFF 9BBB
+6240 4E7A 3ABD 5522 7D22 7410 60E2 9501 55E9 22C62
+6E91 669B 7463 7485 8928 459B 9388 938D 9396 93BB
+93C1
+9024 6EB9 8736
+7411 55E6
+590A 6535 8295 867D 5020 54F8 6D7D 772D 837D 837E
+6ED6 7762 7D8F 8470 71A3 6FC9 9796 96D6
+7EE5 968B 9040 968F 96A8 74CD
+81B8 4B49 7021 9AC4 9AD3
+4E97 5C81 7815 795F 8C07 57E3 5D57 21ED5 6B72 6B73
+716B 775F 788E 9042 7A42 8AB6 8CE5 5B18 6FBB 96A7
+6A85 6A96 71E7 74B2 7A57 7E40 9083 79AD 7A5F 7E50
+65DE 7E78 895A 8B62 9406 9429 97E2
+72FB 75E0 9178
+5334
+7958 7B07 7B6D 7B97 849C
+5B59 72F2 5B6B 836A 98E7 640E 733B 98F1 69C2 84C0
+8575 859E
+635F 7B0B 96BC 7B4D 640D 69AB 7BB0 7C28 93A8 9DBD
+5FEA 677E 6780 5A00 67D7 502F 51C7 5D27 5EBA 68A5
+6DDE 83D8 5D69 7879 8719 61BD 6FCD 290ED 6AA7 9376
+9B06
+6002 609A 8038 7AE6 50B1 612F 3A26 6964 5D77 616B
+8073 99F7
+8BBC 5B8B 8BF5 9001 9882 8A1F 980C 8AA6 9938
+67A9 93B9
+FDD0-311A
+5475 963F 9515
+55C4
+554A
+FDD0-311B
+5594 5662
+54E6
+7B7D
+FDD0-311C
+59B8 59BF 94B6 5A3F 5A40 5C59 75FE
+8BB9 542A 56EE 8FD7 4FC4 5A25 5CE8 5CE9 6D90 73F4
+83AA 8A1B 7692 774B 4109 920B 9507 9E45 86FE 8A90
+78C0 981F 989D 9B64 96B2 984D 9D5D 9D5E 8B4C 21145
+9C2A
+6799 7808 980B 5641 9A00
+5384 5C75 6239 6B7A 5443 5C8B 627C 9628 545D 82CA
+8F6D 9638 54A2 54B9 20C65 57A9 59F6 5CC9 7810 530E
+6076 7828 4465 8685 997F 5054 537E 580A 60AA 63A0
+7565 7846 8C14 8EDB 960F 35C1 582E 5D3F 60E1 6115
+6E42 4748 8C5F 8EF6 9102 922A 5EC5 6424 6439 3B99
+7427 816D 843C 8A7B 904C 904F 50EB 8741 9537 9E57
+981E 989A 9913 9B65 5669 855A 89A8 8AE4 95BC 9929
+8C96 9354 9CC4 6B5E 984E 7918 6AEE 9C10 9D9A 8B8D
+9F43 9469 9F76 9C77
+64DC 9D48
+FDD0-311E
+54C0 54CE 5509 57C3 5A2D 6328 6B38 55F3 6EBE 92B0
+953F 566F 9384
+5540 6371 7691 6EB0 560A 6571 6573 769A 764C 9A03
+6BD0 6639 5A3E 77EE 853C 8EB7 6FED 972D 85F9 9744
+4F0C 827E 3637 7231 7839 784B 35D2 55CC 5867 5AD2
+611B 788D 9698 53C6 66A7 7477 95A1 50FE 416C 5B21
+61D3 58D2 61DD 66D6 74A6 8586 9932 9D31 76A7 77B9
+453D 99A4 7919 8B6A 8B7A 9440 9749
+9C6B
+FDD0-311F
+8BF6 8A92
+FDD0-3120
+51F9 356D 67EA 688E 8EEA 720A
+6556 53AB 55F7 55F8 5D85 5ED2 6EF6 7353 7352 969E
+646E 23281 71AC 7488 851C 9068 78DD 7FF1 8071 87AF
+7FFA 8B37 8B38 9CCC 93D6 9C32 9DD4 9F07
+629D 62D7 82BA 8884 957A 5AAA 5ABC 8956
+362D 5C99 6277 5773 5787 5CB0 5961 5965 50B2 5967
+9A9C 371C 5AEF 6160 22CC6 58BA 5DB4 61CA 64D9 6FB3
+96A9 93CA 9A41
+7FF6
+FDD0-3121
+8BB4 6CA4 6B27 6BB4 74EF 9E25 5878 6F1A 6B50 6BC6
+71B0 9D0E 750C 210BF 8B33 6AD9 93C2 9DD7 4972
+8192 9F75
+20676 5418 5455 5076 8162 5614 3496 8026 8545 85D5
+6004 616A
+85F2
+FDD0-3122
+5B89 4F92 5CD6 6849 6C28 5EB5 4002 8C19 5A95 83F4
+75F7 8164 843B 844A 9E4C 8A9D 84ED 978C 978D 76E6
+8AF3 99A3 76EB 9D6A 97FD 9D95
+73B5 557D 96F8 5111
+57B5 4FFA 5535 57EF 94F5 63DE 968C 7F6F 92A8
+72B4 5CB8 6309 6D1D 6848 80FA 834C 8C7B 5813 5A69
+4141 667B 6697 930C 95C7 9B9F 4B97 9EEF
+FDD0-3123
+5940 6069 217EF 717E 84BD
+5CCE
+6441 4B53
+FDD0-3124
+80AE 9AAF
+536C 5C87 6602 663B 44A2 3B7F
+678A 76CE 91A0
+FDD0-3125
+97A5
+FDD0-3126
+513F 800C 5150 4F95 5152 5CCF 6D0F 9651 682D 80F9
+834B 5532 9E38 7CAB 804F 88BB 8F00 42E9 9C95 9AF5
+96AD 9B9E 9D2F 8F5C
+53BC 5C12 5C13 5C14 8033 6D31 8FE9 9975 682E 6BE6
+73E5 94D2 723E 990C 99EC 85BE 9087 8DB0
+4E8C 5F0D 5F10 4F74 5235 54A1 36C5 8D30 8CAE 8848
+8CB3 8A80 927A 6A32
+FDD0-3127
+4E00 4E4A 5F0C 4F0A 8863 533B 541A 58F1 4F9D 54BF
+20C96 36C4 3CD6 6D22 794E 2343F 6098 7317 94F1 58F9
+63D6 6B39 86DC 90FC 5ADB 6F2A 7995 7A26 92A5 5B04
+566B 5901 747F 9E65 7E44 4AD1 6AB9 6BC9 91AB 9EDF
+8B69 9DD6 9EF3
+4E41 4EEA 531C 572F 5937 519D 5B90 6C82 8BD2 8FC6
+4F87 6021 6CB6 72CB 9974 54A6 59E8 5CD3 5DF8 5F2C
+605E 62F8 67C2 73C6 886A 8D3B 8FE4 5BA7 6245 6818
+684B 3EBF 74F5 7719 80F0 8A11 8CA4 8FFB 75CD 79FB
+801B 8898 51D2 7FA0 8413 86E6 8A51 8A52 8CBD 5A90
+6686 6938 8A83 8DE0 9057 9809 9890 98F4 7591 5100
+71AA 7BB7 5DAC 5F5B 5F5C 8794 907A 9824 5BF2 5DB7
+7C03 984A 294E7 4C4C 5F5D 5F5E 8B3B 93D4 89FA 3C18
+8B89 9E03
+4E59 5DF2 4EE5 9487 4F41 20BCB 653A 77E3 8094 5EA1
+8223 82E1 82E2 8681 91D4 501A 6246 914F 506F 7B16
+9018 5D3A 65D1 6905 9CE6 926F 65D6 88FF 8E26 8F22
+657C 8798 49E7 6AA5 4B72 7912 8264 87FB 9857 8F59
+9F6E
+4E42 20086 4E49 4EBF 5F0B 5208 5FC6 808A 827A 8BAE
+4EA6 3439 4F07 5C79 5F02 4F3F 4F5A 52AE 5453 5744
+5F79 6291 6759 8034 8285 8BD1 9091 4F7E 546D 5479
+5CC4 6008 603F 6613 678D 6B25 3CD1 6CC6 7088 79C7
+7ECE 82C5 8BE3 9A7F 4FCB 5955 5E1F 5E20 5F08 223D7
+67BB 6D02 6D42 73B4 75AB 7FBF 263F8 8F76 3465 5508
+57BC 6092 6339 6359 6827 683A 6B2D 6D65 6D73 76CA
+8875 8C0A 52DA 57F6 57F8 60A5 639C 6BB9 7570 785B
+7F9B 7FCA 7FCC 88A3 8A32 8A33 8C59 8C5B 91F4 966D
+96BF 5E46 6561 6679 68ED 6B94 6E59 7132 2497F 433B
+86E1 8A4D 8DC7 8EFC 9038 9220 4E84 517F 3534 610F
+6EA2 7348 75EC 776A 7AE9 41FC 7F22 7FA9 8084 88D4
+88DB 8A63 9AAE 52E9 5AD5 5ED9 698F 7617 8189 8734
+977E 99C5 5104 3989 648E 69F8 6BC5 6F69 71A0 71A4
+761E 84FA 8ABC 9552 9E5D 9E62 9ED3 5293 3601 571B
+58BF 5B11 5B1F 5DA7 61B6 61CC 66C0 6BAA 3D69 6FBA
+71BC 71DA 7631 7796 7A53 7E0A 8257 87A0 5BF1 6581
+66CE 6A8D 6B5D 71E1 71F1 7FF3 7FFC 81C6 858F 8939
+8CF9 9BA8 7654 8D00 93B0 9571 7E76 7E79 85D9 85DD
+8C77 972C 9BE3 9D82 9D83 39A4 7037 8B6F 8B70 91B3
+91B7 9950 2113B 25725 8619 943F 9DC1 9DCA 56C8 61FF
+9A5B 9DE7 9DFE 8649 897C 9F78 8B9B
+5307 8864 8FB7 5B9C 7569 692C 841F 9D8D 7C4E
+4E2B 5727 538B 5416 5E98 62BC 6792 57AD 9E26 6860
+9E2D 57E1 5B72 690F 9D09 930F 9D28 58D3 9D76 941A
+7259 4F22 5391 5C88 5393 73A1 82BD 7B0C 869C 5810
+5D15 5D16 6DAF 731A 740A 7458 775A 8859 6F04 9F56
+2A632
+24D13 538A 5E8C 54D1 5516 555E 75D6 96C5 7602 279DD
+8565
+529C 5720 8F67 4E9A 897E 8BB6 4E9C 72BD 4E9E 8ECB
+8FD3 5A05 631C 7811 4FF9 6C29 5A6D 6397 8A1D 94D4
+63E0 6C2C 7330 8050 26716 5714 7A0F 7AAB 9F7E
+2E84 4E5B 5440
+54DF 5537 55B2
+503B 6396 668D 6930 564E 6F71 882E
+8036 6353 94D8 63F6 91FE 92E3 64E8 9381
+4E5F 5414 51B6 57DC 91CE 5622 6F1C 58C4
+4E1A 53F6 66F3 9875 66F5 591C 62B4 90BA 4EB1 67BC
+9801 6654 67BD 70E8 35A1 5558 6DB2 8C12 5828 6B97
+814B 696A 696D 8449 9113 998C 50F7 6B4B 58B7 420E
+9765 5DAA 5DAB 64DB 66C4 66C5 6FB2 71C1 2681C 8B01
+9134 9923 5688 64EB 66D7 76A3 77B1 9371 64EA 77B8
+790F 42A6 9391 9941 9D7A 7217 9437 9768 9A5C 9E08
+7237 4EAA 723A
+5E7A 592D 5406 5996 6796 6B80 7945 8A1E 5593 6946
+8170 847D 4301 4645 9D01 9080
+723B 5C27 5C2D 80B4 579A 59DA 5CE3 409A 8F7A 5004
+70D1 73E7 7A91 509C 582F 63FA 8C23 8EFA 347E 55C2
+5AB1 5FAD 612E 6416 6447 733A 3A31 669A 69A3 7464
+7476 9059 9065 929A 98D6 9906 5DA2 5DA4 7AAF 7AB0
+4504 991A 7E47 8B20 8B21 26FBE 9390 9CD0 4B19 98BB
+8628 908E 9864 9C29
+4EF8 5B8E 5C86 62AD 6773 72D5 54AC 67FC 82ED 7711
+7A85 7A88 8200 5060 5A79 5D3E 6E94 699A 84D4 9D22
+9F3C 95C4 9A15 9F69 9DD5
+7A7E 8981 94A5 25052 836F 7A94 888E 7B44 8A4F 846F
+718E 899E 977F 735F 9E5E 25AAF 85AC 66DC 71FF 825E
+77C5 85E5 8000 7E85 9DC2 8B91 9470
+4F18 5FE7 6538 5466 602E 6CD1 5E7D 60A0 900C 9E80
+6EFA 6182 512A 5698 7000 913E 6ACC 7E8B 8030
+5C22 5C24 7531 6C8B 72B9 3F55 233DE 6CB9 80AC 90AE
+6023 65BF 75A3 5CF3 6D5F 79DE 4343 94C0 5064 839C
+83B8 86B0 8A27 6E38 7336 9030 90F5 9C7F 6962 7337
+904A 923E 9C89 8F0F 99C0 8763 9B77 8555 8F36 9B8B
+6AFE
+6709 4E23 5363 9149 82C3 3DAD 7F91 5EAE 682F 7F90
+6884 8048 811C 83A0 94D5 6E75 870F 7989 92AA 4B00
+69F1 7256 9EDD 61EE
+2E80 53C8 53F3 5E7C 4F51 4F91 72D6 7CFF 54CA 56FF
+59F7 5BA5 5CDF 67DA 7270 8BF1 5500 7950 8FF6 4001
+86B4 4EB4 8C81 91C9 916D 8A98 9F2C
+53CB 5B67 848F 7257
+6079 5266 70DF 73DA 80ED 5063 5571 5D26 393F 6DCA
+6DF9 7109 7111 479B 9609 6E6E 7312 814C 83F8 7159
+787D 5AE3 6F39 4167 9122 9183 95B9 5B2E 61E8 7BF6
+61D5 81D9 9EEB
+8BA0 4E25 8A00 5CA9 5EF6 6616 6CBF 708E 82AB 598D
+59F8 7814 5A2E 76D0 5A2B 72FF 7402 784F 90D4 9586
+960E 5D52 5D53 6E7A 839A 5869 63C5 694C 41FE 8A7D
+789E 7B75 7D96 8712 8505 989C 8664 95BB 53B3 6A90
+984F 9854 58DB 7C37 56B4 5DCC 6AE9 9EEC 5DD7 58E7
+5B4D 5DD6 9E7D 7939 9EA3
+5935 6281 6C87 4E75 5156 5944 4FE8 5157 533D 5F07
+884D 5043 53A3 63A9 773C 9153 5D43 611D 624A 63DC
+3B7A 68EA 6E30 6E37 7430 8412 90FE 693C 7F68 9043
+9692 6F14 88FA 5D96 622D 8758 8917 565E 8EBD 9B47
+7E2F 6ABF 9A13 9EE1 53B4 2502C 9C0B 9DA0 9EE4 9F5E
+9F91 7517 9EED 513C 9869 9F34 5DD8 5DDA 9F39 66EE
+9B58 9F74 9EF6
+538C 95EB 599F 89C3 726A 54BD 59F2 5F65 5F66 781A
+5501 5BB4 664F 8273 898E 9A8C 5050 7114 8C1A 55AD
+5830 6565 70FB 7130 7131 786F 9681 96C1 50BF 693B
+6E8E 6EDF 8455 9CEB 53AD 5895 66A5 917D 5B0A 8C33
+290C0 990D 9D08 3DF3 3DFC 71C4 71D5 8AFA 8D5D 48AD
+9B33 66D5 9D33 9A10 56A5 5B3F 8276 8D0B 9140 4A04
+4CE1 3B2B 66E3 7213 91B6 9A34 9DC3 7054 8D17 89FE
+8B8C 91BC 995C 9A57 9DF0 8277 2A64A 704E 9A60 7067
+8B9E 8C53 91C5 8C54 7069
+8A01 6A2E 7196 8EC5 6B15
+56D9 56E0 9625 9634 4F8C 5794 59FB 39E2 6D07 97F3
+9A83 6836 6BB7 6C24 8335 51D0 5A63 4104 79F5 836B
+94DF 9670 5591 5819 6114 7B43 7D6A 88C0 967B 9682
+6B45 6EB5 6147 647F 7616 798B 92A6 7DF8 852D 9787
+8AF2 9712 290EC 99F0 567E 95C9 9720 3D8F 97FE
+5198 4E51 3542 541F 72BE 65A6 82C2 57A0 6CFF 3597
+5701 5CFE 70CE 72FA 73E2 8A14 8A1A 5A6C 5BC5 5D1F
+5D2F 6DEB 8376 8A21 94F6 921D 9F82 6EDB 7892 5924
+911E 9280 5656 6BA5 748C 8529 8ABE 569A 6AAD 87EB
+4D26 972A 9F57 9DE3
+4E5A 200CA 5EF4 5C39 5F15 5432 996E 8693 8D7A 6DFE
+920F 9690 98F2 9777 98EE 6704 8F11 96A0 78E4 8D9B
+763E 5DBE 6A83 6FE5 6FE6 87BE 96B1 6AFD 861F 766E
+8B94
+5370 6D15 80E4 57BD 831A 5837 6E5A 730C 5ED5 8491
+9173 616D 6196 6197 764A 9BA3 3865 61DA 6ABC 4543
+7C8C
+592E 5489 59CE 62B0 6CF1 6B83 80E6 770F 79E7 9E2F
+9260 96F5 9785 9D26
+626C 7F8A 65F8 6768 7080 9626 9633 98CF 4F6F 52B7
+6C1C 75A1 9496 579F 5F89 661C 6D0B 7F8F 70CA 73DC
+26B75 773B 5D35 5D38 63DA 86D8 967D 656D 6698 694A
+716C 760D 7993 3B15 8AF9 8F30 935A 9D39 98BA 940A
+9C11 9737 9E09
+4EF0 4F52 5771 5C9F 517B 67CD 70B4 6C27 75D2 7D3B
+509F 8EEE 6143 6967 6C31 8746 990A 99DA 3526 61E9
+6501 4446 7662
+600F 6059 6837 7F95 8A47 69D8 6F3E 6A23 7001
+594D 7FAA 7922
+5E94 5FDC 82F1 685C 5040 5568 5A74 7EEC 83BA 20E04
+21398 5A96 6E36 48D0 5AC8 6720 7150 745B 5624 6484
+78A4 7F28 7F42 8CCF 9533 6A31 748E 7507 7DD3 8767
+7F43 892E 9348 9D2C 9E66 5B30 61C9 81BA 9719 97FA
+9E70 7516 9D91 56B6 5B46 5B7E 6516 7F4C 8B4D 9DA7
+6AFB 74D4 792F 8621 8B7B 9DAF 944D 7E93 8833 9DEA
+9DF9 9E0E 9E1A
+76C1 8FCE 76C8 8314 8367 55B6 83B9 86CD 2870F 6E81
+6E8B 8424 8426 50CC 584B 6979 6EE2 8425 843E 6F46
+7192 84E5 7469 4294 877F 5B34 7E08 87A2 6FD9 6FDA
+6FF4 71DF 89AE 8B0D 8D62 7005 85C0 93A3 650D 701B
+7020 2294F 702F 7034 8D0F 6AFF 7C5D 7C6F
+77E8 6D67 90E2 68AC 988D 9895 9896 646C 4B2C 5F71
+6F41 7484 763F 7A4E 9834 5DCA 5EEE 766D
+6620 786C 5AB5 668E 81A1 565F 9795 941B 9C66
+73F1 6125 8747 7E04 8805 651A 7050 705C 8EC8
+FDD0-3128
+4E4C 572C 5F19 6C59 6C5A 6C61 545C 5DEB 6747 90AC
+5C4B 6D3F 8BEC 94A8 70CF 526D 7A8F 55DA 9114 6B4D
+8AA3 7BBC 8790 9D2E 93A2 9C1E
+65E0 6BCB 5433 5434 543E 5449 829C 5514 5A2A 6D16
+6D6F 90DA 68A7 73F8 8323 8381 7121 7966 94FB 9E40
+8708 8A88 7991 7491 856A 87F1 9BC3 9D50 8B55 9F2F
+9DE1
+4E94 5348 4EF5 59A9 5E91 5FE4 6003 65FF 3B33 6B66
+739D 4FAE 4FC9 5035 6342 554E 5A2C 727E 73F7 6440
+7894 9E49 7193 7466 821E 5AF5 5EE1 61AE 6F55 511B
+6A46 7512 9D61 8E8C
+5140 52FF 3433 620A 4F06 5C7C 6264 9622 575E 5C89
+674C 5FE2 7269 77F9 82B4 8FD5 537C 6544 8BEF 609E
+609F 60AE 7C85 6664 7110 901C 5A7A 5D4D 75E6 9770
+9A9B 5862 5966 5D68 6EA9 9696 96FA 96FE 5BE4 7183
+8AA4 9E5C 92C8 7AB9 907B 4A01 971A 9F3F 9727 9A16
+9F40 8601 9DA9
+4E44 52A1 4F0D 52D9 933B
+7A75 52B8 6316 6D3C 5A32 7556 7A8A 5AA7 86D9 55D7
+6432 6E9B 6F25 7AAA 9F03 6528
+5A03
+74E6 4F64 5493 39DA 90B7
+8049 889C 55E2 817D 8183 896A 97C8 97E4
+5C72 54C7 74F2
+631D 502D 6DA1 5529 6DB9 83B4 6E26 7327 7A9D 8435
+8717 7AA9 8778 8E12 64BE
+6211 5A50 6370 4C00
+4EF4 6C83 809F 5367 6782 81E5 5053 637E 6DB4 5A89
+5E44 63E1 6E25 7125 786A 6943 815B 65A1 7783 20FDF
+64ED 6FE3 9F8C 74C1 81D2 96D8 9F77
+6B6A 558E 7AF5
+5D34
+5916 20C3B 591E 9861
+5371 5A01 20CFF 70D3 504E 55B4 364E 5A99 6104 63CB
+63FB 6E28 840E 9036 9687 9688 5FAE 6933 6972 6EA6
+7168 8468 8473 8A74 8732 875B 89A3 71F0 8587 9CC2
+9C03 9C04 5DCD
+56D7 97E6 5729 56F4 5E0F 6CA9 95F1 8FDD 5CD7 5CDE
+6D08 97CB 6845 6DA0 552F 5E37 60DF 7859 7EF4 55A1
+570D 5A81 5E43 6E4B 6E88 741F 912C 5D6C 9055 6F4D
+7DAD 6F59 6F7F 78D1 84F6 9180 6FF0 934F 95C8 9BA0
+7653 4260 89B9 973A 6B08 72A9
+5383 4F1F 4F2A 5C3E 7EAC 59D4 3B4F 709C 73AE 829B
+82C7 6D27 5A13 5C57 6D58 8BFF 5049 507D 5D23 68B6
+75CF 784A 8371 5BEA 5D54 5FAB 6107 7325 9AA9 6690
+6932 7152 744B 75FF 41FB 8172 8249 8466 848D 97EA
+9AAA 9AAB 50DE 9C94 5130 64B1 78C8 25BE4 7DEF 8AC9
+8E13 97D1 9820 3B19 853F 285E8 9361 9BAA 6FFB 85B3
+97D9 98B9 58DD 7022 8624 97E1 6596
+536B 4E3A 672A 4F4D 5473 70BA 754F 80C3 82FF 53DE
+8ECE 5C09 8C13 5582 5AA6 6E2D 3DC9 7232 83CB 715F
+78A8 873C 6170 71AD 729A 7DED 851A 885B 61C0 748F
+7F7B 885E 8B02 9927 9B87 87B1 893D 9935 8F4A 9B4F
+85EF 93CF 9728 9CDA 9956 8636 8B86 8E97 4C81 8B8F
+8E9B
+6364 7140 732C 589B 7E05 875F 5DB6
+5F2F 525C 5A60 5E35 5846 6E7E 873F 6F6B 8C4C 5F4E
+58EA 7063
+4E38 5213 6C4D 7EA8 5B8C 5C8F 628F 8284 73A9 7D08
+6356 987D 70F7 7413 9811 4BC8 7FEB
+5B9B 5007 550D 633D 76CC 57E6 5A49 60CB 665A 6669
+689A 7EFE 8118 667C 6900 742C 7696 83C0 8416 7579
+7755 7897 7DA9 7DB0 8F13 8E20 92C4 92D4 4A4A 3736
+4E07 534D 5350 59A7 5FE8 6365 8115 8CA6 8155 842C
+8F10 6FAB 933D 858D 87C3 8D03 93AB 4951 8D0E
+909C 6764 7B02
+6637 6E29 586D 3B08 6985 6EAB 8F92 6B9F 7465 761F
+8570 8F3C 8C71 8F40 9CC1 97B0 29948 9C1B 9C2E
+5301 6587 5F63 7EB9 7086 739F 82A0 95FB 7D0B 8689
+868A 73F3 960C 741D 96EF 7612 805E 99BC 9B70 9CFC
+9D0D 87A1 95BA 95BF 87C1 95C5 9F24 95E6
+520E 543B 5FDF 6286 5461 80B3 7D0A 687D 8117 7A33
+7A4F 7A69
+95EE 598F 6C76 554F 6E02 83AC 63FE 6435 9850 74BA
+545A 922B 93BE
+21BC1 5C23 5C29 5C2A 5C2B 6C6A
+4EA1 4EBE 5166 738B 4EFC 5F7A 869F 83A3
+34C1 7F52 7F51 5F80 5F83 7F54 5F8D 60D8 6680 68E2
+83F5 86E7 8F8B 7DB2 8744 8AB7 8F1E 7007 9B4D
+5984 5FD8 65FA 76F3 8FCB 671B 6722 4911
+6789 7139
+7FC1 55E1 6EC3 9E5F 8789 9393 9DB2
+3622 52DC 5963 5855 5D61 66A1 4425 84CA 7788 806C
+3732
+74EE 8579 7515 7F4B 9F46
+FDD0-3129
+625C 7EA1 8FC2 8FC3 7A7B 7D06 8676 9653 5539 6DE4
+76D3 6BFA 7600 7B8A
+4E90 4E8E 4F03 36A5 3B30 9098 4F59 59A4 6275 6745
+6B24 7397 7399 65BC 76C2 81FE 9C7C 4E7B 4FDE 516A
+79BA 7AFD 4342 8867 5A1B 5A2F 5A31 6859 72F3 8201
+8330 8C00 9151 9980 6E14 96E9 9B5A 5823 582C 5D33
+5D4E 5D5B 3965 6109 63C4 6970 6E1D 6E61 756D 7862
+8174 8438 9685 611A 65D5 3B02 6961 6986 6B48 724F
+745C 8245 842E 865E 89CE 903E 9AAC 6F01 776E 7AAC
+6B76 7FAD 4433 8753 8915 8ADB 96D3 9918 4C3B 6F9E
+8206 854D 89A6 8E30 5B29 87B8 8F3F 935D 28A36 6B5F
+74B5 8B23 9BBD 9A1F 9AC3 65DF 7C45 861B 9C05 4CA3
+9DE0 9E06
+4E0E 4E88 4F1B 5B87 5C7F 7FBD 2ED7 96E8 4FC1 4FE3
+79B9 8BED 5704 5CFF 504A 3531 532C 5709 5EBE 6554
+7964 3762 659E 9105 50B4 5BD9 6940 7440 7610 842D
+38C3 8207 8A9E 7AB3 92D9 9828 9F89 5673 8C90 5DBC
+61D9 399B 6594 9E8C 860C 9F6C
+8080 7389 9A6D 572B 807F 59AA 5FEC 828B 828C 996B
+80B2 3922 6631 72F1 79D7 90C1 4FFC 5CEA 5F67 6D74
+7821 831F 94B0 9884 57DF 5809 5FA1 6086 60D0 6B32
+6DE2 6DEF 8C15 9608 5585 5590 55A9 55BB 5A80 5BD3
+5EBD 68DB 68DC 68EB 7134 7419 77DE 7872 26C40 9033
+98EB 99AD 9E46 6108 6BD3 6EEA 715C 3F63 7A22 7F6D
+8248 88D5 8A89 9047 923A 9810 5AD7 5D8E 622B 7344
+7609 4205 42ED 7DCE 84AE 84E3 871F 872E 463B 8F0D
+9289 564A 617E 6F4F 7A36 84F9 92CA 9CFF 224B0 6FA6
+71CF 79A6 8AED 8C6B 9079 9325 95BE 9D25 9D2A 5125
+2148A 71E0 7BFD 8577 8581 9E6C 7652 7907 7916 7E58
+27450 91A7 9B4A 9D52 791C 7A65 9947 6AF2 9731 8B7D
+8F5D 942D 6B0E 9A48 9B3B 7C5E 9C4A 9DF8 6B1D 9E12
+9FA5 8EC9 9B30 9B31 706A 7C72 7229
+6327 8362 6F9A 9BF2
+66F0 66F1 7EA6 7D04 7BB9 5F5F 77F1 5F60
+2E9D 6708 6209 5216 599C 5C84 6288 216DF 5CB3 73A5
+793F 6071 4195 6085 60A6 868E 868F 8ECF 94BA 9605
+6373 8DC0 8DC3 4847 7CA4 8D8A 9205 7CB5 925E 4926
+95B1 95B2 6A3E 7BD7 5B33 5DBD 294E5 9FA0 3730 3B26
+7039 7C46 9EE6 721A 8625 8E8D 79B4 7C65 9E11 7C70
+9E19
+56E6 9E22 5248 51A4 6081 7722 9E33 5BC3 6DF5 6E01
+6E06 6E0A 6E15 60CC 68E9 3F93 847E 870E 9E53 7BA2
+84AC 8735 88F7 9CF6 485D 99CC 9D1B 5B3D 4949 9D77
+7041 9F18 9F1D
+5143 5186 8D20 5458 56ED 6C85 90A7 676C 57A3 7230
+8C9F 539F 54E1 5706 7B0E 8696 8881 53A1 570E 63F4
+6E72 7328 7F18 8312 9F0B 5712 5713 586C 5AB4 5AC4
+6E90 6E92 733F 7342 699E 69AC 849D 8F95 7DE3 7E01
+875D 876F 9B6D 4CAE 6A7C 7FB1 8788 8597 8B1C 8F45
+9EFF 93B1 6ADE 908D 9A35 9DA2 9DB0 53B5
+8FDC 76F6 903A 9060 92FA
+5917 8099 59B4 3B47 6028 82D1 57B8 884F 9662 5086
+5A9B 63BE 7457 613F 7990 88EB 8911 566E 8924 9858
+915B 9228
+6655 7F0A 6688 7174 8480 596B 6C32 6C33 8495 7E15
+8779 8D5F 9835 8D07 99A7
+4E91 52FB 5300 56E9 5998 6C84 7EAD 6600 82B8 7547
+7703 79D0 6DA2 7D1C 8018 803A 90E7 96F2 612A 6EB3
+7B60 7B7C 9116 69B2 7189 84B7 6F90 92C6 6A52 7BD4
+7E1C 8553 9942
+5141 593D 628E 72C1 962D 9668 6B92 837A 5597 491E
+9217 9695 6B9E 99BB 78D2 891E 8CF1 9723 9F73
+5B55 679F 8FD0 607D 90D3 915D 508A 60F2 6120 9106
+614D 816A 904B 97EB 97F5 7185 71A8 7DF7 7DFC 4CB0
+8574 9196 8580 919E 992B 97D7 85F4 97DE 97FB 860A
+62A3 7E67
+4F63 62E5 75C8 9095 5EB8 50AD 55C8 96CD 5889 5ADE
+6175 6EFD 9118 69E6 5670 58C5 64C1 6FAD 90FA 955B
+81C3 7655 96DD 93DE 9CD9 5EF1 7049 9954 9C45 9DDB
+7670
+5581 63D8 7245 9899 9852 9C2B
+6C38 752C 548F 6CF3 4FD1 52C7 52C8 6810 57C7 6080
+67E1 6D8C 607F 3D04 509B 60E5 6111 6E67 7867 8A60
+584E 5D71 5F6E 6139 86F9 6142 8E0A 799C 9CAC 8E34
+9BD2
+7528 82DA 919F
+603A 783D
+__END__
+
+=head1 NAME
+
+Unicode::Collate::CJK::Zhuyin - weighting CJK Unified Ideographs
+for Unicode::Collate
+
+=head1 SYNOPSIS
+
+ use Unicode::Collate;
+ use Unicode::Collate::CJK::Zhuyin;
+
+ my $collator = Unicode::Collate->new(
+ overrideCJK => \&Unicode::Collate::CJK::Zhuyin::weightZhuyin
+ );
+
+=head1 DESCRIPTION
+
+C<Unicode::Collate::CJK::Zhuyin> provides C<weightZhuyin()>,
+that is adequate for C<overrideCJK> of C<Unicode::Collate>
+and makes tailoring of CJK Unified Ideographs in the order
+of CLDR's zhuyin (bopomofo) ordering.
+
+=head1 CAVEAT
+
+The zhuyin ordering includes some characters that are not
+CJK Unified Ideographs and can't utilize C<weightZhuyin()>
+for collation. For them, use C<entry> instead.
+
+=head1 SEE ALSO
+
+=over 4
+
+=item CLDR - Unicode Common Locale Data Repository
+
+L<http://cldr.unicode.org/>
+
+=item Unicode Locale Data Markup Language (LDML) - UTS #35
+
+L<http://www.unicode.org/reports/tr35/>
+
+=item L<Unicode::Collate>
+
+=item L<Unicode::Collate::Locale>
+
+=back
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale.pm b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale.pm
index 1fbd5ab5959..fcabc9e2fa1 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale.pm
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale.pm
@@ -4,12 +4,12 @@ use strict;
use Carp;
use base qw(Unicode::Collate);
-our $VERSION = '0.89';
+our $VERSION = '0.96';
my $PL_EXT = '.pl';
my %LocaleFile = map { ($_, $_) } qw(
- af ar as az be bg bn ca cs cy da eo es et fa fi fil fo fr
+ af ar as az be bg bn ca cs cy da ee eo es et fa fi fil fo fr
gu ha haw hi hr hu hy ig is ja kk kl kn ko kok ln lt lv
mk ml mr mt nb nn nso om or pa pl ro ru sa se si sk sl sq
sr sv ta te th tn to tr uk ur vi wae wo yo zh
@@ -17,6 +17,7 @@ my %LocaleFile = map { ($_, $_) } qw(
$LocaleFile{'default'} = '';
# aliases
$LocaleFile{'bs'} = 'hr';
+ $LocaleFile{'bs_Cyrl'} = 'sr';
$LocaleFile{'sr_Latn'} = 'hr';
# short file names
$LocaleFile{'de__phonebook'} = 'de_phone';
@@ -28,6 +29,7 @@ my %LocaleFile = map { ($_, $_) } qw(
$LocaleFile{'zh__gb2312han'} = 'zh_gb';
$LocaleFile{'zh__pinyin'} = 'zh_pin';
$LocaleFile{'zh__stroke'} = 'zh_strk';
+ $LocaleFile{'zh__zhuyin'} = 'zh_zhu';
my %TypeAlias = qw(
phone phonebook
@@ -108,10 +110,13 @@ sub new {
my $href = _fetchpl($hash{accepted_locale});
while (my($k,$v) = each %$href) {
- if (exists $hash{$k}) {
+ if (!exists $hash{$k}) {
+ $hash{$k} = $v;
+ } elsif ($k eq 'entry') {
+ $hash{$k} = $v.$hash{$k};
+ } else {
croak "$k is reserved by $hash{locale}, can't be overwritten";
}
- $hash{$k} = $v;
}
return $class->SUPER::new(%hash);
}
@@ -121,90 +126,93 @@ __END__
MEMORANDA for developing
-locale based CLDR
+locale based CLDR
----------------------------------------------------------------------------
-af 2.0 = 1.8.1
-ar 2.0
-as 2.0 = 1.8.1
-az 2.0 = 1.8.1 (type="standard")
-be 2.0
-bg 2.0
-bn 2.0.1 (type="standard")
-bs 2.0 (alias source="hr")
-ca 2.0 = 1.8.1 (alt="proposed" type="standard")
-cs 2.0 = 1.8.1 (type="standard")
-cy 2.0 = 1.8.1
-da 2.0 = 1.8.1 (type="standard") [modify aA to pass CLDR tests]
-de__phonebook 2.0 (type="phonebook")
-eo 2.0 = 1.8.1
-es 2.0 (type="standard")
-es__traditional 2.0 = 1.8.1 (type="traditional")
-et 2.0 = 1.8.1
-fa 2.0 = 1.8.1
-fi 2.0 = 1.8.1 (type="standard" alt="proposed")
-fi__phonebook 2.0 = 1.8.1 (type="phonebook")
-fil 2.0 (type="standard") = 1.8.1
-fo 2.0 = 1.8.1 (alt="proposed" type="standard")
-fr 2.0 (fr_CA, backwards="on")
-gu 2.0 (type="standard")
-ha 2.0
-haw 2.0 = 1.8.1
-hi 2.0 (type="standard")
-hr 2.0 (type="standard")
-hu 2.0 = 1.8.1 (alt="proposed" type="standard")
-hy 2.0 = 1.8.1
-ig 2.0 = 1.8.1
-is 2.0 = 1.8.1 (type="standard")
-ja 2.0 = 1.8.1 (type="standard")
-kk 2.0
-kl 2.0 = 1.8.1 (type="standard")
-kn 2.0 (type="standard")
-ko 2.0 = 1.8.1 (type="standard")
-kok 2.0 = 1.8.1
-ln 2.0 (type="standard") = 1.8.1
-lt 2.0
-lv 2.0 (type="standard") = 1.8.1
-mk 2.0
-ml 2.0
-mr 2.0 = 1.8.1
-mt 2.0
-nb 2.0 (type="standard")
-nn 2.0 (type="standard")
-nso 2.0 = 1.8.1
-om 2.0 = 1.8.1
-or 2.0
-pa 2.0 = 1.8.1
-pl 2.0 = 1.8.1
-ro 2.0 (type="standard")
-ru 2.0
-sa 1.8.1 (type="standard" alt="proposed") [currently in /seed]
-se 2.0 = 1.8.1 (type="standard")
-si 2.0 (type="standard")
-si__dictionary 2.0 (type="dictionary")
-sk 2.0 (type="standard")
-sl 2.0 = 1.8.1 (type="standard" alt="proposed")
-sq 2.0 = 1.8.1 (alt="proposed" type="standard")
-sr 2.0 (type="standard")
-sr_Latn 2.0 = 1.8.1 (alias source="hr")
-sv 2.0 (type="standard")
-sv__reformed 2.0 = 1.8.1 (type="reformed")
-ta 2.0
-te 2.0
-th 2.0 (type="standard")
-tn 2.0 = 1.8.1
-to 2.0 = 1.8.1 (type="standard" alt="proposed")
-tr 2.0 = 1.8.1 (type="standard")
-uk 2.0
-ur 2.0
-vi 2.0 = 1.8.1
-wae 2.0
-wo 1.8.1 [currently in /seed]
-yo 2.0 = 1.8.1
-zh 2.0 = 1.8.1 (type="standard")
-zh__big5han 2.0 = 1.8.1 (type="big5han")
-zh__gb2312han 2.0 = 1.8.1 (type="gb2312han")
-zh__pinyin 2.0 (type='pinyin' alt='short')
-zh__stroke 2.0 = 1.9.1 (type='stroke' alt='short')
+af 22.1 = 1.8.1
+ar 22.1 = 1.9.0
+as 22.1 = 1.8.1
+az 22.1 = 1.8.1 (type="standard")
+be 22.1 = 1.9.0
+bg 22.1 = 1.9.0
+bn 22.1 = 2.0.1 (type="standard")
+bs 22.1 = 1.9.0 (alias source="hr")
+bs_Cyrl 22.1 = 22 (alias source="sr")
+ca 22.1 = 1.8.1 (alt="proposed" type="standard")
+cs 22.1 = 1.8.1 (type="standard")
+cy 22.1 = 1.8.1
+da 22.1 = 1.8.1 (type="standard") [mod aA to pass CLDR test]
+de__phonebook 22.1 = 2.0 (type="phonebook")
+ee 22.1 = 22
+eo 22.1 = 1.8.1
+es 22.1 = 1.9.0 (type="standard")
+es__traditional 22.1 = 1.8.1 (type="traditional")
+et 22.1 = 1.8.1
+fa 22.1 = 1.8.1
+fi 22.1 = 1.8.1 (type="standard" alt="proposed")
+fi__phonebook 22.1 = 1.8.1 (type="phonebook")
+fil 22.1 = 1.9.0 (type="standard") = 1.8.1
+fo 22.1 = 1.8.1 (alt="proposed" type="standard")
+fr 22.1 = 1.9.0 (fr_CA, backwards="on")
+gu 22.1 = 1.9.0 (type="standard")
+ha 22.1 = 1.9.0
+haw 22.1 = 1.8.1
+hi 22.1 = 1.9.0 (type="standard")
+hr 22.1 = 1.9.0 (type="standard")
+hu 22.1 = 1.8.1 (alt="proposed" type="standard")
+hy 22.1 = 1.8.1
+ig 22.1 = 1.8.1
+is 22.1 = 1.8.1 (type="standard")
+ja 22.1 = 1.8.1 (type="standard")
+kk 22.1 = 1.9.0
+kl 22.1 = 1.8.1 (type="standard")
+kn 22.1 = 1.9.0 (type="standard")
+ko 22.1 = 1.8.1 (type="standard")
+kok 22.1 = 1.8.1
+ln 22.1 = 2.0 (type="standard") = 1.8.1
+lt 22.1 = 1.9.0
+lv 22.1 = 1.9.0 (type="standard") = 1.8.1
+mk 22.1 = 1.9.0
+ml 22.1 = 1.9.0
+mr 22.1 = 1.8.1
+mt 22.1 = 1.9.0
+nb 22.1 = 2.0 (type="standard")
+nn 22.1 = 2.0 (type="standard")
+nso 22.1 = 1.8.1
+om 22.1 = 1.8.1
+or 22.1 = 1.9.0
+pa 22.1 = 1.8.1
+pl 22.1 = 1.8.1
+ro 22.1 = 1.9.0 (type="standard")
+ru 22.1 = 1.9.0
+sa 1.9.1 = 1.8.1 (type="standard" alt="proposed") [now /seed]
+se 22.1 = 1.8.1 (type="standard")
+si 22.1 = 1.9.0 (type="standard")
+si__dictionary 22.1 = 1.9.0 (type="dictionary")
+sk 22.1 = 1.9.0 (type="standard")
+sl 22.1 = 1.8.1 (type="standard" alt="proposed")
+sq 22.1 = 1.8.1 (alt="proposed" type="standard")
+sr 22.1 = 1.9.0 (type="standard")
+sr_Latn 22.1 = 1.8.1 (alias source="hr")
+sv 22.1 = 1.9.0 (type="standard")
+sv__reformed 22.1 = 1.8.1 (type="reformed")
+ta 22.1 = 1.9.0
+te 22.1 = 1.9.0
+th 22.1 = 22
+tn 22.1 = 1.8.1
+to 22.1 = 22
+tr 22.1 = 1.8.1 (type="standard")
+uk 22.1 = 21
+ur 22.1 = 1.9.0
+vi 22.1 = 1.8.1
+wae 22.1 = 2.0
+wo 1.9.1 = 1.8.1 [now /seed]
+yo 22.1 = 1.8.1
+zh 22.1 = 1.8.1 (type="standard")
+zh__big5han 22.1 = 1.8.1 (type="big5han")
+zh__gb2312han 22.1 = 1.8.1 (type="gb2312han")
+zh__pinyin 22.1 = 2.0 (type='pinyin' alt='short')
+zh__stroke 22.1 = 1.9.1 (type='stroke' alt='short')
+zh__zhuyin 22.1 = 22 (type='zhuyin' alt='short')
----------------------------------------------------------------------------
=head1 NAME
@@ -266,6 +274,9 @@ Tailoring tags provided by C<Unicode::Collate> are allowed as long as
they are not used for C<locale> support. Esp. the C<table> tag
is always untailorable, since it is reserved for DUCET.
+However C<entry> is allowed, even if it is used for C<locale> support,
+to add or override mappings.
+
E.g. a collator for French, which ignores diacritics and case difference
(i.e. level 1), with reversed case ordering and no normalization.
@@ -330,11 +341,13 @@ a combination of return values from C<getlocale> and C<locale_version>.
bg Bulgarian
bn Bengali
bs Bosnian
+ bs_Cyrl Bosnian in Cyrillic (tailored as Serbian)
ca Catalan
cs Czech
cy Welsh
da Danish
de__phonebook German (umlaut as 'ae', 'oe', 'ue')
+ ee Ewe
eo Esperanto
es Spanish
es__traditional Spanish ('ch' and 'll' as a grapheme)
@@ -404,6 +417,7 @@ a combination of return values from C<getlocale> and C<locale_version>.
zh__gb2312han Chinese (ideographs: GB-2312 order)
zh__pinyin Chinese (ideographs: pinyin order) [3]
zh__stroke Chinese (ideographs: stroke order) [3]
+ zh__zhuyin Chinese (ideographs: zhuyin order) [3]
--------------------------------------------------------------
Locales according to the default UCA rules include
@@ -425,7 +439,7 @@ zu (Zulu).
B<Note>
[1] ja: Ideographs are sorted in JIS X 0208 order.
-Fullwidth and halfwidth forms are identical to their normal form.
+Fullwidth and halfwidth forms are identical to their regular form.
The difference between hiragana and katakana is at the 4th level,
the comparison also requires C<(variable =E<gt> 'Non-ignorable')>,
and then C<katakana_before_hiragana> has no effect.
@@ -434,8 +448,10 @@ and then C<katakana_before_hiragana> has no effect.
an ideograph is primary (level 1) equal to, and secondary (level 2)
greater than, the corresponding hangul syllable.
-[3] zh__pinyin and zh__stroke: implemented alt='short', where
-a smaller number of ideographs are tailored.
+[3] zh__pinyin, zh__stroke and zh__zhuyin: implemented alt='short',
+where a smaller number of ideographs are tailored.
+
+Note: 'pinyin' is in latin, 'zhuyin' is in bopomofo.
=head1 INSTALL
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/af.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/af.pl
index d6ea8a9fe3d..875ef54765e 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/af.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/af.pl
@@ -1,6 +1,6 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0149 ; [.1734.0020.0009.0149] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0149 ; [.174F.0020.0009.0149] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ar.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ar.pl
index 77cab004309..da20dffb8ea 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ar.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ar.pl
@@ -1,15 +1,15 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0629 ; [.1C90.0021.0002.0629] # ARABIC LETTER TEH MARBUTA
-FE94 ; [.1C90.0021.0019.FE94] # ARABIC LETTER TEH MARBUTA FINAL FORM
-FE93 ; [.1C90.0021.001A.FE93] # ARABIC LETTER TEH MARBUTA ISOLATED FORM
-0649 ; [.1D2D.0021.0002.0649] # ARABIC LETTER ALEF MAKSURA
-FBE8 ; [.1D2D.0021.0017.FBE8] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
-FBE9 ; [.1D2D.0021.0018.FBE9] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
-FEF0 ; [.1D2D.0021.0019.FEF0] # ARABIC LETTER ALEF MAKSURA FINAL FORM
-FEEF ; [.1D2D.0021.001A.FEEF] # ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-FC90 ; [.1D2D.0021.001B.FC90] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
-FC5D ; [.1D2D.0021.001C.FC5D] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0629 ; [.1CAB.0021.0002.0629] # ARABIC LETTER TEH MARBUTA
+FE94 ; [.1CAB.0021.0019.FE94] # ARABIC LETTER TEH MARBUTA FINAL FORM
+FE93 ; [.1CAB.0021.001A.FE93] # ARABIC LETTER TEH MARBUTA ISOLATED FORM
+0649 ; [.1D48.0021.0002.0649] # ARABIC LETTER ALEF MAKSURA
+FBE8 ; [.1D48.0021.0017.FBE8] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+FBE9 ; [.1D48.0021.0018.FBE9] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+FEF0 ; [.1D48.0021.0019.FEF0] # ARABIC LETTER ALEF MAKSURA FINAL FORM
+FEEF ; [.1D48.0021.001A.FEEF] # ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+FC90 ; [.1D48.0021.001B.FC90] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+FC5D ; [.1D48.0021.001C.FC5D] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/as.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/as.pl
index a4729f3d241..1aeca849fda 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/as.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/as.pl
@@ -1,10 +1,13 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0982 ; [.2030.0020.0002.0982][.FFF1.0000.0000.0000] # BENGALI SIGN ANUSVARA
-0981 ; [.2030.0020.0002.0981][.FFF2.0000.0000.0000] # BENGALI SIGN CANDRABINDU
-0983 ; [.2030.0020.0002.0983][.FFF3.0000.0000.0000] # BENGALI SIGN VISARGA
-09A4 09CD 200D ; [.203F.0020.0002.09A4][.FFF1.0000.0000.0000] # <BENGALI LETTER TA, BENGALI SIGN VIRAMA, ZERO WIDTH JOINER>
-0995 09CD 09B7 ; [.2052.0020.0002.0995][.FFF1.0000.0000.0000] # <BENGALI LETTER KA, BENGALI SIGN VIRAMA, BENGALI LETTER SSA>
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0982 ; [.204B.0020.0002.0982][.FFF1.0000.0000.0000] # BENGALI SIGN ANUSVARA
+0981 ; [.204B.0020.0002.0981][.FFF2.0000.0000.0000] # BENGALI SIGN CANDRABINDU
+0983 ; [.204B.0020.0002.0983][.FFF3.0000.0000.0000] # BENGALI SIGN VISARGA
+0994 ; [.204B.0020.0002.0994][.FFF0.0000.0000.0000] # BENGALI LETTER AU
+09A4 09CD 200D ; [.205A.0020.0002.09A4][.FFF1.0000.0000.0000] # <BENGALI LETTER TA, BENGALI SIGN VIRAMA, ZERO WIDTH JOINER>
+09A3 ; [.205A.0020.0002.09A3][.FFF0.0000.0000.0000] # BENGALI LETTER NNA
+0995 09CD 09B7 ; [.206D.0020.0002.0995][.FFF1.0000.0000.0000] # <BENGALI LETTER KA, BENGALI SIGN VIRAMA, BENGALI LETTER SSA>
+09B9 ; [.206D.0020.0002.09B9][.FFF0.0000.0000.0000] # BENGALI LETTER HA
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/az.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/az.pl
index 384b725e105..478b5810f73 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/az.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/az.pl
@@ -1,51 +1,51 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
# schwa doesn't require tailoring
- entry => <<'ENTRY', # for DUCET v6.1.0
-00E7 ; [.1603.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
-0063 0327 ; [.1603.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
-00C7 ; [.1603.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
-0043 0327 ; [.1603.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
-011F ; [.1677.0020.0002.011F] # LATIN SMALL LETTER G WITH BREVE
-0067 0306 ; [.1677.0020.0002.011F] # LATIN SMALL LETTER G WITH BREVE
-011E ; [.1677.0020.0008.011E] # LATIN CAPITAL LETTER G WITH BREVE
-0047 0306 ; [.1677.0020.0008.011E] # LATIN CAPITAL LETTER G WITH BREVE
-0131 ; [.16B1.0020.0002.0131] # LATIN SMALL LETTER DOTLESS I
-0049 ; [.16B1.0020.0008.0049] # LATIN CAPITAL LETTER I
-00CC ; [.16B1.0020.0008.0049][.0000.0035.0002.0300] # LATIN CAPITAL LETTER I WITH GRAVE
-00CD ; [.16B1.0020.0008.0049][.0000.0032.0002.0301] # LATIN CAPITAL LETTER I WITH ACUTE
-00CE ; [.16B1.0020.0008.0049][.0000.003C.0002.0302] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-00CF ; [.16B1.0020.0008.0049][.0000.0047.0002.0308] # LATIN CAPITAL LETTER I WITH DIAERESIS
-012A ; [.16B1.0020.0008.0049][.0000.005B.0002.0304] # LATIN CAPITAL LETTER I WITH MACRON
-012C ; [.16B1.0020.0008.0049][.0000.0037.0002.0306] # LATIN CAPITAL LETTER I WITH BREVE
-012E ; [.16B1.0020.0008.0049][.0000.0059.0002.0328] # LATIN CAPITAL LETTER I WITH OGONEK
-0130 ; [.16B2.0020.0008.0130] # LATIN CAPITAL LETTER I WITH DOT ABOVE
-0049 0307 ; [.16B2.0020.0008.0130] # LATIN CAPITAL LETTER I WITH DOT ABOVE
-00F6 ; [.1757.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.1757.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.1757.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.1757.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.1757.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.1757.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-015F ; [.17D9.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
-0073 0327 ; [.17D9.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
-015E ; [.17D9.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
-0053 0327 ; [.17D9.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
-00FC ; [.181C.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.181C.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.181C.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.181C.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.181C.0020.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.181C.0020.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.181C.0020.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.181C.0020.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.181C.0020.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.181C.0020.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.181C.0020.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.181C.0020.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0071 ; [.16E5.0020.0002.0071] # LATIN SMALL LETTER Q
-0051 ; [.16E5.0020.0008.0051] # LATIN CAPITAL LETTER Q
-0078 ; [.169A.0020.0002.0078] # LATIN SMALL LETTER X
-0058 ; [.169A.0020.0008.0058] # LATIN CAPITAL LETTER X
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00E7 ; [.161E.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
+0063 0327 ; [.161E.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
+00C7 ; [.161E.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
+0043 0327 ; [.161E.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
+011F ; [.1692.0020.0002.011F] # LATIN SMALL LETTER G WITH BREVE
+0067 0306 ; [.1692.0020.0002.011F] # LATIN SMALL LETTER G WITH BREVE
+011E ; [.1692.0020.0008.011E] # LATIN CAPITAL LETTER G WITH BREVE
+0047 0306 ; [.1692.0020.0008.011E] # LATIN CAPITAL LETTER G WITH BREVE
+0131 ; [.16CC.0020.0002.0131] # LATIN SMALL LETTER DOTLESS I
+0049 ; [.16CC.0020.0008.0049] # LATIN CAPITAL LETTER I
+00CC ; [.16CC.0020.0008.0049][.0000.0035.0002.0300] # LATIN CAPITAL LETTER I WITH GRAVE
+00CD ; [.16CC.0020.0008.0049][.0000.0032.0002.0301] # LATIN CAPITAL LETTER I WITH ACUTE
+00CE ; [.16CC.0020.0008.0049][.0000.003C.0002.0302] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF ; [.16CC.0020.0008.0049][.0000.0047.0002.0308] # LATIN CAPITAL LETTER I WITH DIAERESIS
+012A ; [.16CC.0020.0008.0049][.0000.005B.0002.0304] # LATIN CAPITAL LETTER I WITH MACRON
+012C ; [.16CC.0020.0008.0049][.0000.0037.0002.0306] # LATIN CAPITAL LETTER I WITH BREVE
+012E ; [.16CC.0020.0008.0049][.0000.0059.0002.0328] # LATIN CAPITAL LETTER I WITH OGONEK
+0130 ; [.16CD.0020.0008.0130] # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0049 0307 ; [.16CD.0020.0008.0130] # LATIN CAPITAL LETTER I WITH DOT ABOVE
+00F6 ; [.1772.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1772.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1772.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1772.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1772.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1772.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+015F ; [.17F4.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
+0073 0327 ; [.17F4.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
+015E ; [.17F4.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
+0053 0327 ; [.17F4.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
+00FC ; [.1837.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1837.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1837.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1837.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1837.0020.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1837.0020.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1837.0020.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1837.0020.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1837.0020.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1837.0020.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1837.0020.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1837.0020.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0071 ; [.1700.0020.0002.0071] # LATIN SMALL LETTER Q
+0051 ; [.1700.0020.0008.0051] # LATIN CAPITAL LETTER Q
+0078 ; [.16B5.0020.0002.0078] # LATIN SMALL LETTER X
+0058 ; [.16B5.0020.0008.0058] # LATIN CAPITAL LETTER X
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/be.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/be.pl
index 331aee81062..00100758535 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/be.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/be.pl
@@ -1,43 +1,43 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
0x0416, 0x0436, 0x0417, 0x0437, 0x0406, 0x0456, 0x041E, 0x043E,
0x04E8, 0x04E9, 0x041A, 0x043A, 0x0427, 0x0447, 0x042B, 0x044B,
0x042D, 0x044D, 0x0474, 0x0475],
- entry => <<'ENTRY', # for DUCET v6.1.0
-0451 ; [.19BF.0020.0002.0451] # CYRILLIC SMALL LETTER IO
-0435 0308 ; [.19BF.0020.0002.0451] # CYRILLIC SMALL LETTER IO
-0401 ; [.19BF.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
-0415 0308 ; [.19BF.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
-04D1 ; [.1976.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
-04D0 ; [.1976.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D3 ; [.1976.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D2 ; [.1976.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04DB ; [.1982.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DA ; [.1982.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-0453 ; [.1996.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
-0403 ; [.1996.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
-04D7 ; [.19BE.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
-04D6 ; [.19BE.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
-04DD ; [.19CA.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DC ; [.19CA.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DF ; [.19D7.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04DE ; [.19D7.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-0457 ; [.19FB.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
-0407 ; [.19FB.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
-04E7 ; [.1A5C.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E6 ; [.1A5C.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04EB ; [.1A64.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EA ; [.1A64.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-045C ; [.1A0D.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
-040C ; [.1A0D.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
-04F5 ; [.1AF1.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F4 ; [.1AF1.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F9 ; [.1B24.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-04F8 ; [.1B24.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04ED ; [.1B39.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EC ; [.1B39.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-0477 ; [.1B6F.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0476 ; [.1B6F.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0451 ; [.19DA.0020.0002.0451] # CYRILLIC SMALL LETTER IO
+0435 0308 ; [.19DA.0020.0002.0451] # CYRILLIC SMALL LETTER IO
+0401 ; [.19DA.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
+0415 0308 ; [.19DA.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
+04D1 ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453 ; [.19B1.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.19B1.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+0457 ; [.1A16.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407 ; [.1A16.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+04E7 ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C ; [.1A28.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.1A28.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+04F5 ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/bg.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/bg.pl
index e7296dafa96..79d3cb100e5 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/bg.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/bg.pl
@@ -1,45 +1,45 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
0x0416, 0x0436, 0x0417, 0x0437, 0x0406, 0x0456, 0x041E, 0x043E,
0x04E8, 0x04E9, 0x041A, 0x043A, 0x0423, 0x0443, 0x0427, 0x0447,
0x042B, 0x044B, 0x042D, 0x044D, 0x0474, 0x0475],
- entry => <<'ENTRY', # for DUCET v6.1.0
-04D1 ; [.1976.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
-04D0 ; [.1976.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D3 ; [.1976.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D2 ; [.1976.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04DB ; [.1982.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DA ; [.1982.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-0453 ; [.1996.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
-0403 ; [.1996.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
-04D7 ; [.19BE.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
-04D6 ; [.19BE.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
-04DD ; [.19CA.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DC ; [.19CA.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DF ; [.19D7.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04DE ; [.19D7.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-0457 ; [.19FB.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
-0407 ; [.19FB.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
-04E7 ; [.1A5C.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E6 ; [.1A5C.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04EB ; [.1A64.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EA ; [.1A64.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-045C ; [.1A0D.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
-040C ; [.1A0D.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
-045E ; [.1A9E.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
-040E ; [.1A9E.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
-04F1 ; [.1A9E.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F0 ; [.1A9E.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F3 ; [.1A9E.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F2 ; [.1A9E.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F5 ; [.1AF1.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F4 ; [.1AF1.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F9 ; [.1B24.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-04F8 ; [.1B24.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04ED ; [.1B39.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EC ; [.1B39.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-0477 ; [.1B6F.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0476 ; [.1B6F.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ entry => <<'ENTRY', # for DUCET v6.2.0
+04D1 ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453 ; [.19B1.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.19B1.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+0457 ; [.1A16.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407 ; [.1A16.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+04E7 ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C ; [.1A28.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.1A28.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E ; [.1AB9.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.1AB9.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.1AB9.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.1AB9.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.1AB9.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.1AB9.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5 ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/bn.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/bn.pl
index 0c02d25b53a..b64452ab73a 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/bn.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/bn.pl
@@ -1,8 +1,9 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0982 ; [.2030.0020.0002.0982][.FFF1.0000.0000.0000] # BENGALI SIGN ANUSVARA
-0983 ; [.2030.0020.0002.0983][.FFF2.0000.0000.0000] # BENGALI SIGN VISARGA
-0981 ; [.2030.0020.0002.0981][.FFF3.0000.0000.0000] # BENGALI SIGN CANDRABINDU
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0982 ; [.204B.0020.0002.0982][.FFF1.0000.0000.0000] # BENGALI SIGN ANUSVARA
+0983 ; [.204B.0020.0002.0983][.FFF2.0000.0000.0000] # BENGALI SIGN VISARGA
+0981 ; [.204B.0020.0002.0981][.FFF3.0000.0000.0000] # BENGALI SIGN CANDRABINDU
+0994 ; [.204B.0020.0002.0994][.FFF0.0000.0000.0000] # BENGALI LETTER AU
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ca.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ca.pl
index 440afbbd76f..5bb9b87230e 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ca.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ca.pl
@@ -1,18 +1,18 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
backwards => 2,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0063 0068 ; [.1603.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
-0063 0048 ; [.1603.0020.0007.0063][.0000.0000.0002.0000] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER H>
-0043 0068 ; [.1603.0020.0007.0043][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
-0043 0048 ; [.1603.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
-006C 006C ; [.16F7.0020.0002.006C][.0000.0000.0001.0000] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L>
-006C 00B7 006C ; [.16F7.0020.0002.006C][.0000.0000.0007.0000] # <LATIN SMALL LETTER L, MIDDLE DOT, LATIN SMALL LETTER L>
-006C 004C ; [.16F7.0020.0007.006C][.0000.0000.0002.0000][.0000.0000.0001.0000] # <LATIN SMALL LETTER L, LATIN CAPITAL LETTER L>
-006C 00B7 004C ; [.16F7.0020.0007.006C][.0000.0000.0002.0000][.0000.0000.0007.0000] # <LATIN SMALL LETTER L, MIDDLE DOT, LATIN CAPITAL LETTER L>
-004C 006C ; [.16F7.0020.0007.004C][.0000.0000.0008.0000][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L>
-004C 00B7 006C ; [.16F7.0020.0007.004C][.0000.0000.0008.0000][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER L, MIDDLE DOT, LATIN SMALL LETTER L>
-004C 004C ; [.16F7.0020.0008.004C][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L>
-004C 00B7 004C ; [.16F7.0020.0008.004C][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER L, MIDDLE DOT, LATIN CAPITAL LETTER L>
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0063 0068 ; [.161E.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0063 0048 ; [.161E.0020.0007.0063][.0000.0000.0002.0000] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER H>
+0043 0068 ; [.161E.0020.0007.0043][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
+0043 0048 ; [.161E.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
+006C 006C ; [.1712.0020.0002.006C][.0000.0000.0001.0000] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L>
+006C 00B7 006C ; [.1712.0020.0002.006C][.0000.0000.0007.0000] # <LATIN SMALL LETTER L, MIDDLE DOT, LATIN SMALL LETTER L>
+006C 004C ; [.1712.0020.0007.006C][.0000.0000.0002.0000][.0000.0000.0001.0000] # <LATIN SMALL LETTER L, LATIN CAPITAL LETTER L>
+006C 00B7 004C ; [.1712.0020.0007.006C][.0000.0000.0002.0000][.0000.0000.0007.0000] # <LATIN SMALL LETTER L, MIDDLE DOT, LATIN CAPITAL LETTER L>
+004C 006C ; [.1712.0020.0007.004C][.0000.0000.0008.0000][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L>
+004C 00B7 006C ; [.1712.0020.0007.004C][.0000.0000.0008.0000][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER L, MIDDLE DOT, LATIN SMALL LETTER L>
+004C 004C ; [.1712.0020.0008.004C][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L>
+004C 00B7 004C ; [.1712.0020.0008.004C][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER L, MIDDLE DOT, LATIN CAPITAL LETTER L>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cs.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cs.pl
index 84257bf96b0..12eb7589668 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cs.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cs.pl
@@ -1,25 +1,25 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-010D ; [.1603.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-0063 030C ; [.1603.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-010C ; [.1603.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0043 030C ; [.1603.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0063 0068 ; [.169A.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
-0063 0048 ; [.169A.0020.0007.0063][.0000.0000.0002.0000] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER H>
-0043 0068 ; [.169A.0020.0007.0043][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
-0043 0048 ; [.169A.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
-0159 ; [.17A3.0020.0002.0159] # LATIN SMALL LETTER R WITH CARON
-0072 030C ; [.17A3.0020.0002.0159] # LATIN SMALL LETTER R WITH CARON
-0158 ; [.17A3.0020.0008.0158] # LATIN CAPITAL LETTER R WITH CARON
-0052 030C ; [.17A3.0020.0008.0158] # LATIN CAPITAL LETTER R WITH CARON
-0161 ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0073 030C ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0053 030C ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-017E ; [.187B.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-007A 030C ; [.187B.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-017D ; [.187B.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-005A 030C ; [.187B.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+010D ; [.161E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+0063 030C ; [.161E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+010C ; [.161E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0043 030C ; [.161E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0063 0068 ; [.16B5.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0063 0048 ; [.16B5.0020.0007.0063][.0000.0000.0002.0000] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER H>
+0043 0068 ; [.16B5.0020.0007.0043][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
+0043 0048 ; [.16B5.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
+0159 ; [.17BE.0020.0002.0159] # LATIN SMALL LETTER R WITH CARON
+0072 030C ; [.17BE.0020.0002.0159] # LATIN SMALL LETTER R WITH CARON
+0158 ; [.17BE.0020.0008.0158] # LATIN CAPITAL LETTER R WITH CARON
+0052 030C ; [.17BE.0020.0008.0158] # LATIN CAPITAL LETTER R WITH CARON
+0161 ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+017E ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+007A 030C ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+017D ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+005A 030C ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cy.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cy.pl
index ba6e7fc8f5c..dfb20c9c51a 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cy.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/cy.pl
@@ -1,29 +1,29 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0063 0068 ; [.1603.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
-0043 0068 ; [.1603.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
-0043 0048 ; [.1603.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
-0064 0064 ; [.1617.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D>
-0044 0064 ; [.1617.0020.0007.0044] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D>
-0044 0044 ; [.1617.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D>
-0066 0066 ; [.166A.0020.0002.0066] # <LATIN SMALL LETTER F, LATIN SMALL LETTER F>
-0046 0066 ; [.166A.0020.0007.0046] # <LATIN CAPITAL LETTER F, LATIN SMALL LETTER F>
-0046 0046 ; [.166A.0020.0008.0046] # <LATIN CAPITAL LETTER F, LATIN CAPITAL LETTER F>
-006E 0067 ; [.1677.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER G>
-004E 0067 ; [.1677.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER G>
-004E 0047 ; [.1677.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER G>
-006C 006C ; [.16F7.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L>
-004C 006C ; [.16F7.0020.0007.004C] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L>
-004C 004C ; [.16F7.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L>
-0070 0068 ; [.177C.0020.0002.0070] # <LATIN SMALL LETTER P, LATIN SMALL LETTER H>
-0050 0068 ; [.177C.0020.0007.0050] # <LATIN CAPITAL LETTER P, LATIN SMALL LETTER H>
-0050 0048 ; [.177C.0020.0008.0050] # <LATIN CAPITAL LETTER P, LATIN CAPITAL LETTER H>
-0072 0068 ; [.17A3.0020.0002.0072] # <LATIN SMALL LETTER R, LATIN SMALL LETTER H>
-0052 0068 ; [.17A3.0020.0007.0052] # <LATIN CAPITAL LETTER R, LATIN SMALL LETTER H>
-0052 0048 ; [.17A3.0020.0008.0052] # <LATIN CAPITAL LETTER R, LATIN CAPITAL LETTER H>
-0074 0068 ; [.17FC.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER H>
-0054 0068 ; [.17FC.0020.0007.0054] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER H>
-0054 0048 ; [.17FC.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER H>
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0063 0068 ; [.161E.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0043 0068 ; [.161E.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
+0043 0048 ; [.161E.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
+0064 0064 ; [.1632.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D>
+0044 0064 ; [.1632.0020.0007.0044] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D>
+0044 0044 ; [.1632.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D>
+0066 0066 ; [.1685.0020.0002.0066] # <LATIN SMALL LETTER F, LATIN SMALL LETTER F>
+0046 0066 ; [.1685.0020.0007.0046] # <LATIN CAPITAL LETTER F, LATIN SMALL LETTER F>
+0046 0046 ; [.1685.0020.0008.0046] # <LATIN CAPITAL LETTER F, LATIN CAPITAL LETTER F>
+006E 0067 ; [.1692.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER G>
+004E 0067 ; [.1692.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER G>
+004E 0047 ; [.1692.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER G>
+006C 006C ; [.1712.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L>
+004C 006C ; [.1712.0020.0007.004C] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L>
+004C 004C ; [.1712.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L>
+0070 0068 ; [.1797.0020.0002.0070] # <LATIN SMALL LETTER P, LATIN SMALL LETTER H>
+0050 0068 ; [.1797.0020.0007.0050] # <LATIN CAPITAL LETTER P, LATIN SMALL LETTER H>
+0050 0048 ; [.1797.0020.0008.0050] # <LATIN CAPITAL LETTER P, LATIN CAPITAL LETTER H>
+0072 0068 ; [.17BE.0020.0002.0072] # <LATIN SMALL LETTER R, LATIN SMALL LETTER H>
+0052 0068 ; [.17BE.0020.0007.0052] # <LATIN CAPITAL LETTER R, LATIN SMALL LETTER H>
+0052 0048 ; [.17BE.0020.0008.0052] # <LATIN CAPITAL LETTER R, LATIN CAPITAL LETTER H>
+0074 0068 ; [.1817.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER H>
+0054 0068 ; [.1817.0020.0007.0054] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER H>
+0054 0048 ; [.1817.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER H>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/da.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/da.pl
index 7569b2c07f9..d814036a9de 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/da.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/da.pl
@@ -1,76 +1,76 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
upper_before_lower => 1,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0111 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0064 0335 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-0044 0335 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-00F0 ; [.1616.0022.0002.00F0] # LATIN SMALL LETTER ETH
-00D0 ; [.1616.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
-00FE ; [.17FB.0020.0003.00FE][.1699.0020.0003.00FE] # LATIN SMALL LETTER THORN
-00DE ; [.17FB.0020.0009.00DE][.1699.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
-00FC ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.1865.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.1865.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.1865.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.1865.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.1865.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.1865.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.1865.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.1865.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0171 ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0075 030B ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0170 ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0055 030B ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-00E6 ; [.18EB.0020.0002.00E6] # LATIN SMALL LETTER AE
-00C6 ; [.18EB.0020.0008.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.18EB.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.18EB.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.18EB.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.18EB.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.18EB.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
-00E4 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.18EB.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.18EB.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-0119 ; [.18EB.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0065 0328 ; [.18EB.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0118 ; [.18EB.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-0045 0328 ; [.18EB.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-00F8 ; [.18EC.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-006F 0338 ; [.18EC.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.18EC.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-004F 0338 ; [.18EC.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.18EC.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.18EC.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-00F6 ; [.18EC.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.18EC.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.18EC.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.18EC.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.18EC.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.18EC.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-0151 ; [.18EC.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-006F 030B ; [.18EC.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0150 ; [.18EC.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-004F 030B ; [.18EC.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0153 ; [.18EC.0023.0002.0153] # LATIN SMALL LIGATURE OE
-0152 ; [.18EC.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
-00E5 ; [.18ED.0020.0002.00E5][.0000.0000.0001.0000] # LATIN SMALL LETTER A WITH RING ABOVE
-0061 030A ; [.18ED.0020.0002.00E5][.0000.0000.0001.0000] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.18ED.0020.0008.00C5][.0000.0000.0001.0000] # LATIN CAPITAL LETTER A WITH RING ABOVE
-0041 030A ; [.18ED.0020.0008.00C5][.0000.0000.0001.0000] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.18ED.0020.0008.00C5][.0000.0000.0001.0000] # ANGSTROM SIGN
-01FB ; [.18ED.0020.0002.00E5][.0000.0000.0001.0000][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.18ED.0020.0008.00C5][.0000.0000.0001.0000][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-0061 0061 ; [.18ED.0020.0002.0061][.0000.0000.0007.0000] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
-0041 0061 ; [.18ED.0020.0007.0041][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER A, LATIN SMALL LETTER A>
-0061 0041 ; [.18ED.0020.0007.0061][.0000.0000.0008.0000] # <LATIN SMALL LETTER A, LATIN CAPITAL LETTER A>
-0041 0041 ; [.18ED.0020.0008.0041][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A>
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0111 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1631.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1631.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+00FE ; [.1816.0020.0003.00FE][.16B4.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.1816.0020.0009.00DE][.16B4.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+00FC ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0171 ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E6 ; [.1906.0020.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1906.0020.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1906.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1906.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1906.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1906.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1906.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00E4 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1906.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1906.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+0119 ; [.1906.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.1906.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.1906.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.1906.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F8 ; [.1907.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1907.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1907.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1907.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1907.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1907.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00F6 ; [.1907.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1907.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1907.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1907.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1907.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1907.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+0151 ; [.1907.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.1907.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.1907.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.1907.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153 ; [.1907.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.1907.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00E5 ; [.1908.0020.0002.00E5][.0000.0000.0001.0000] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1908.0020.0002.00E5][.0000.0000.0001.0000] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1908.0020.0008.00C5][.0000.0000.0001.0000] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1908.0020.0008.00C5][.0000.0000.0001.0000] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1908.0020.0008.00C5][.0000.0000.0001.0000] # ANGSTROM SIGN
+01FB ; [.1908.0020.0002.00E5][.0000.0000.0001.0000][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1908.0020.0008.00C5][.0000.0000.0001.0000][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+0061 0061 ; [.1908.0020.0002.0061][.0000.0000.0007.0000] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
+0041 0061 ; [.1908.0020.0007.0041][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER A, LATIN SMALL LETTER A>
+0061 0041 ; [.1908.0020.0007.0061][.0000.0000.0008.0000] # <LATIN SMALL LETTER A, LATIN CAPITAL LETTER A>
+0041 0041 ; [.1908.0020.0008.0041][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/de_phone.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/de_phone.pl
index bd4b84d91fc..247ec4163c5 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/de_phone.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/de_phone.pl
@@ -1,29 +1,29 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-00E4 ; [.15D4.0021.0002.00E4][.1631.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.15D4.0021.0002.00E4][.1631.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.15D4.0021.0008.00C4][.1631.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.15D4.0021.0008.00C4][.1631.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.15D4.0021.0002.00E4][.1631.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.15D4.0021.0008.00C4][.1631.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-00F6 ; [.1756.0021.0002.00F6][.1631.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.1756.0021.0002.00F6][.1631.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.1756.0021.0008.00D6][.1631.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.1756.0021.0008.00D6][.1631.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.1756.0021.0002.00F6][.1631.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.1756.0021.0008.00D6][.1631.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-00FC ; [.181B.0021.0002.00FC][.1631.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.181B.0021.0002.00FC][.1631.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.181B.0021.0008.00DC][.1631.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.181B.0021.0008.00DC][.1631.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.181B.0021.0002.00FC][.1631.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.181B.0021.0008.00DC][.1631.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.181B.0021.0002.00FC][.1631.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.181B.0021.0008.00DC][.1631.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.181B.0021.0002.00FC][.1631.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.181B.0021.0008.00DC][.1631.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.181B.0021.0002.00FC][.1631.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.181B.0021.0008.00DC][.1631.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00E4 ; [.15EF.0021.0002.00E4][.164C.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.15EF.0021.0002.00E4][.164C.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.15EF.0021.0008.00C4][.164C.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.15EF.0021.0008.00C4][.164C.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.15EF.0021.0002.00E4][.164C.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.15EF.0021.0008.00C4][.164C.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00F6 ; [.1771.0021.0002.00F6][.164C.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1771.0021.0002.00F6][.164C.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1771.0021.0008.00D6][.164C.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1771.0021.0008.00D6][.164C.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1771.0021.0002.00F6][.164C.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1771.0021.0008.00D6][.164C.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00FC ; [.1836.0021.0002.00FC][.164C.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1836.0021.0002.00FC][.164C.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1836.0021.0008.00DC][.164C.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1836.0021.0008.00DC][.164C.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1836.0021.0002.00FC][.164C.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1836.0021.0008.00DC][.164C.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1836.0021.0002.00FC][.164C.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1836.0021.0008.00DC][.164C.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1836.0021.0002.00FC][.164C.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1836.0021.0008.00DC][.164C.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1836.0021.0002.00FC][.164C.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1836.0021.0008.00DC][.164C.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ee.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ee.pl
new file mode 100644
index 00000000000..c593a2679e5
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ee.pl
@@ -0,0 +1,36 @@
++{
+ locale_version => 0.95,
+# d-tail, open-e, f-hook, gamma, eng, open-o, v-hook don't require tailoring
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0302 ; [.0000.0042.0002.0302] # COMBINING CIRCUMFLEX ACCENT
+00E2 ; [.15EF.0020.0002.0061][.0000.0042.0002.0302] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+00C2 ; [.15EF.0020.0008.0041][.0000.0042.0002.0302] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00EA ; [.164C.0020.0002.0065][.0000.0042.0002.0302] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.164C.0020.0008.0045][.0000.0042.0002.0302] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00EE ; [.16CD.0020.0002.0069][.0000.0042.0002.0302] # LATIN SMALL LETTER I WITH CIRCUMFLEX
+00CE ; [.16CD.0020.0008.0049][.0000.0042.0002.0302] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00F4 ; [.1771.0020.0002.006F][.0000.0042.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.1771.0020.0008.004F][.0000.0042.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00FB ; [.1836.0020.0002.0075][.0000.0042.0002.0302] # LATIN SMALL LETTER U WITH CIRCUMFLEX
+00DB ; [.1836.0020.0008.0055][.0000.0042.0002.0302] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0177 ; [.1880.0020.0002.0079][.0000.0042.0002.0302] # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0176 ; [.1880.0020.0008.0059][.0000.0042.0002.0302] # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0064 007A ; [.1632.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z>
+0044 007A ; [.1632.0020.0007.0044] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z>
+0044 005A ; [.1632.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z>
+0067 0062 ; [.1692.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER B>
+0047 0062 ; [.1692.0020.0007.0047] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER B>
+0047 0042 ; [.1692.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER B>
+0078 ; [.16B5.0020.0002.0078] # LATIN SMALL LETTER X
+0058 ; [.16B5.0020.0008.0058] # LATIN CAPITAL LETTER X
+006B 0070 ; [.1700.0020.0002.006B] # <LATIN SMALL LETTER K, LATIN SMALL LETTER P>
+004B 0070 ; [.1700.0020.0007.004B] # <LATIN CAPITAL LETTER K, LATIN SMALL LETTER P>
+004B 0050 ; [.1700.0020.0008.004B] # <LATIN CAPITAL LETTER K, LATIN CAPITAL LETTER P>
+006E 0079 ; [.1750.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
+004E 0079 ; [.1750.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
+004E 0059 ; [.1750.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
+0074 0073 ; [.1817.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER S>
+0054 0073 ; [.1817.0020.0007.0054] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER S>
+0054 0053 ; [.1817.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER S>
+ENTRY
+};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/eo.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/eo.pl
index 9c9b95c41e9..f8feeb3c644 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/eo.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/eo.pl
@@ -1,29 +1,29 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0109 ; [.1603.0020.0002.0109] # LATIN SMALL LETTER C WITH CIRCUMFLEX
-0063 0302 ; [.1603.0020.0002.0109] # LATIN SMALL LETTER C WITH CIRCUMFLEX
-0108 ; [.1603.0020.0008.0108] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-0043 0302 ; [.1603.0020.0008.0108] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-011D ; [.1677.0020.0002.011D] # LATIN SMALL LETTER G WITH CIRCUMFLEX
-0067 0302 ; [.1677.0020.0002.011D] # LATIN SMALL LETTER G WITH CIRCUMFLEX
-011C ; [.1677.0020.0008.011C] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-0047 0302 ; [.1677.0020.0008.011C] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-0125 ; [.169A.0020.0002.0125] # LATIN SMALL LETTER H WITH CIRCUMFLEX
-0068 0302 ; [.169A.0020.0002.0125] # LATIN SMALL LETTER H WITH CIRCUMFLEX
-0124 ; [.169A.0020.0008.0124] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-0048 0302 ; [.169A.0020.0008.0124] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-0135 ; [.16CC.0020.0002.0135] # LATIN SMALL LETTER J WITH CIRCUMFLEX
-006A 0302 ; [.16CC.0020.0002.0135] # LATIN SMALL LETTER J WITH CIRCUMFLEX
-0134 ; [.16CC.0020.0008.0134] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-004A 0302 ; [.16CC.0020.0008.0134] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-015D ; [.17D9.0020.0002.015D] # LATIN SMALL LETTER S WITH CIRCUMFLEX
-0073 0302 ; [.17D9.0020.0002.015D] # LATIN SMALL LETTER S WITH CIRCUMFLEX
-015C ; [.17D9.0020.0008.015C] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-0053 0302 ; [.17D9.0020.0008.015C] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-016D ; [.181C.0020.0002.016D] # LATIN SMALL LETTER U WITH BREVE
-0075 0306 ; [.181C.0020.0002.016D] # LATIN SMALL LETTER U WITH BREVE
-016C ; [.181C.0020.0008.016C] # LATIN CAPITAL LETTER U WITH BREVE
-0055 0306 ; [.181C.0020.0008.016C] # LATIN CAPITAL LETTER U WITH BREVE
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0109 ; [.161E.0020.0002.0109] # LATIN SMALL LETTER C WITH CIRCUMFLEX
+0063 0302 ; [.161E.0020.0002.0109] # LATIN SMALL LETTER C WITH CIRCUMFLEX
+0108 ; [.161E.0020.0008.0108] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0043 0302 ; [.161E.0020.0008.0108] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+011D ; [.1692.0020.0002.011D] # LATIN SMALL LETTER G WITH CIRCUMFLEX
+0067 0302 ; [.1692.0020.0002.011D] # LATIN SMALL LETTER G WITH CIRCUMFLEX
+011C ; [.1692.0020.0008.011C] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+0047 0302 ; [.1692.0020.0008.011C] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+0125 ; [.16B5.0020.0002.0125] # LATIN SMALL LETTER H WITH CIRCUMFLEX
+0068 0302 ; [.16B5.0020.0002.0125] # LATIN SMALL LETTER H WITH CIRCUMFLEX
+0124 ; [.16B5.0020.0008.0124] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0048 0302 ; [.16B5.0020.0008.0124] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0135 ; [.16E7.0020.0002.0135] # LATIN SMALL LETTER J WITH CIRCUMFLEX
+006A 0302 ; [.16E7.0020.0002.0135] # LATIN SMALL LETTER J WITH CIRCUMFLEX
+0134 ; [.16E7.0020.0008.0134] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+004A 0302 ; [.16E7.0020.0008.0134] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+015D ; [.17F4.0020.0002.015D] # LATIN SMALL LETTER S WITH CIRCUMFLEX
+0073 0302 ; [.17F4.0020.0002.015D] # LATIN SMALL LETTER S WITH CIRCUMFLEX
+015C ; [.17F4.0020.0008.015C] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+0053 0302 ; [.17F4.0020.0008.015C] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+016D ; [.1837.0020.0002.016D] # LATIN SMALL LETTER U WITH BREVE
+0075 0306 ; [.1837.0020.0002.016D] # LATIN SMALL LETTER U WITH BREVE
+016C ; [.1837.0020.0008.016C] # LATIN CAPITAL LETTER U WITH BREVE
+0055 0306 ; [.1837.0020.0008.016C] # LATIN CAPITAL LETTER U WITH BREVE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/es.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/es.pl
index 7a37242ef4c..7368111be31 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/es.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/es.pl
@@ -1,9 +1,9 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-00F1 ; [.1735.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
-006E 0303 ; [.1735.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
-00D1 ; [.1735.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
-004E 0303 ; [.1735.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00F1 ; [.1750.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+006E 0303 ; [.1750.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+00D1 ; [.1750.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
+004E 0303 ; [.1750.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/es_trad.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/es_trad.pl
index 42837ec667c..5bbc740490b 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/es_trad.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/es_trad.pl
@@ -1,15 +1,15 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0063 0068 ; [.1603.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
-0043 0068 ; [.1603.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
-0043 0048 ; [.1603.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
-006C 006C ; [.16F7.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L>
-004C 006C ; [.16F7.0020.0007.004C] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L>
-004C 004C ; [.16F7.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L>
-00F1 ; [.1735.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
-006E 0303 ; [.1735.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
-00D1 ; [.1735.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
-004E 0303 ; [.1735.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0063 0068 ; [.161E.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0043 0068 ; [.161E.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
+0043 0048 ; [.161E.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
+006C 006C ; [.1712.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L>
+004C 006C ; [.1712.0020.0007.004C] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L>
+004C 004C ; [.1712.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L>
+00F1 ; [.1750.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+006E 0303 ; [.1750.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+00D1 ; [.1750.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
+004E 0303 ; [.1750.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/et.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/et.pl
index 68847b2f5a7..02d26bea005 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/et.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/et.pl
@@ -1,53 +1,53 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0161 ; [.17F8.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0073 030C ; [.17F8.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17F8.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0053 030C ; [.17F8.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-007A ; [.17F9.0020.0002.007A] # LATIN SMALL LETTER Z
-005A ; [.17F9.0020.0008.005A] # LATIN CAPITAL LETTER Z
-017E ; [.17FA.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-007A 030C ; [.17FA.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-017D ; [.17FA.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-005A 030C ; [.17FA.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-0077 ; [.1844.0021.0002.0077] # LATIN SMALL LETTER W
-0057 ; [.1844.0021.0008.0057] # LATIN CAPITAL LETTER W
-00F5 ; [.185C.0020.0002.00F5] # LATIN SMALL LETTER O WITH TILDE
-006F 0303 ; [.185C.0020.0002.00F5] # LATIN SMALL LETTER O WITH TILDE
-00D5 ; [.185C.0020.0008.00D5] # LATIN CAPITAL LETTER O WITH TILDE
-004F 0303 ; [.185C.0020.0008.00D5] # LATIN CAPITAL LETTER O WITH TILDE
-1E4D ; [.185C.0020.0002.00F5][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH TILDE AND ACUTE
-1E4C ; [.185C.0020.0008.00D5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-022D ; [.185C.0020.0002.00F5][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH TILDE AND MACRON
-022C ; [.185C.0020.0008.00D5][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
-1E4F ; [.185C.0020.0002.00F5][.0000.0047.0002.0308] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
-1E4E ; [.185C.0020.0008.00D5][.0000.0047.0002.0308] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-1EE1 ; [.185C.0020.0002.00F5][.0000.0068.0002.031B] # LATIN SMALL LETTER O WITH HORN AND TILDE
-1EE0 ; [.185C.0020.0008.00D5][.0000.0068.0002.031B] # LATIN CAPITAL LETTER O WITH HORN AND TILDE
-00E4 ; [.185D.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.185D.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.185D.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.185D.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.185D.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.185D.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-00F6 ; [.185E.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.185E.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.185E.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.185E.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.185E.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.185E.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-00FC ; [.185F.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.185F.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.185F.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.185F.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.185F.0020.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.185F.0020.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.185F.0020.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.185F.0020.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.185F.0020.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.185F.0020.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.185F.0020.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.185F.0020.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0161 ; [.1813.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.1813.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.1813.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.1813.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+007A ; [.1814.0020.0002.007A] # LATIN SMALL LETTER Z
+005A ; [.1814.0020.0008.005A] # LATIN CAPITAL LETTER Z
+017E ; [.1815.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+007A 030C ; [.1815.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+017D ; [.1815.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+005A 030C ; [.1815.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+0077 ; [.185F.0021.0002.0077] # LATIN SMALL LETTER W
+0057 ; [.185F.0021.0008.0057] # LATIN CAPITAL LETTER W
+00F5 ; [.1877.0020.0002.00F5] # LATIN SMALL LETTER O WITH TILDE
+006F 0303 ; [.1877.0020.0002.00F5] # LATIN SMALL LETTER O WITH TILDE
+00D5 ; [.1877.0020.0008.00D5] # LATIN CAPITAL LETTER O WITH TILDE
+004F 0303 ; [.1877.0020.0008.00D5] # LATIN CAPITAL LETTER O WITH TILDE
+1E4D ; [.1877.0020.0002.00F5][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4C ; [.1877.0020.0008.00D5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+022D ; [.1877.0020.0002.00F5][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH TILDE AND MACRON
+022C ; [.1877.0020.0008.00D5][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+1E4F ; [.1877.0020.0002.00F5][.0000.0047.0002.0308] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E4E ; [.1877.0020.0008.00D5][.0000.0047.0002.0308] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1EE1 ; [.1877.0020.0002.00F5][.0000.0068.0002.031B] # LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE0 ; [.1877.0020.0008.00D5][.0000.0068.0002.031B] # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+00E4 ; [.1878.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1878.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1878.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1878.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1878.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1878.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00F6 ; [.1879.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1879.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1879.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1879.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1879.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1879.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00FC ; [.187A.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.187A.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.187A.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.187A.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.187A.0020.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.187A.0020.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.187A.0020.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.187A.0020.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.187A.0020.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.187A.0020.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.187A.0020.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.187A.0020.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fa.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fa.pl
index 35aec8089fb..415d3e540ad 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fa.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fa.pl
@@ -1,50 +1,51 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-064E ; [.0000.00A8.0002.064E] # ARABIC FATHA
-0650 ; [.0000.00A9.0002.0650] # ARABIC KASRA
-064F ; [.0000.00AA.0002.064F] # ARABIC DAMMA
-064B ; [.0000.00AB.0002.064B] # ARABIC FATHATAN
-064D ; [.0000.00AC.0002.064D] # ARABIC KASRATAN
-064C ; [.0000.00AD.0002.064C] # ARABIC DAMMATAN
-0622 ; [.1C80.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
-0627 0653 ; [.1C80.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
-0671 ; [.1C81.0021.0002.0671] # ARABIC LETTER ALEF WASLA
-0621 ; [.1C81.0020.0002.0621][.FFF1.0000.0000.0000] # ARABIC LETTER HAMZA
-0623 ; [.1C81.0021.0002.0623][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE
-0627 0654 ; [.1C81.0021.0002.0623][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE
-0672 ; [.1C81.0022.0002.0672][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
-0625 ; [.1C81.0023.0002.0625][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW
-0627 0655 ; [.1C81.0023.0002.0625][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW
-0673 ; [.1C81.0024.0002.0673][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
-0624 ; [.1C81.0025.0002.0624][.FFF1.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
-0648 0654 ; [.1C81.0025.0002.0624][.FFF1.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
-06CC 0654 ; [.1C81.0026.0002.06CC][.FFF1.0000.0000.0000] # <ARABIC LETTER FARSI YEH, ARABIC HAMZA ABOVE>
-0649 0654 ; [.1C81.0026.0003.0649][.FFF1.0000.0000.0000] # <ARABIC LETTER ALEF MAKSURA, ARABIC HAMZA ABOVE>
-0626 ; [.1C81.0026.0004.0626][.FFF1.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
-064A 0654 ; [.1C81.0026.0004.0626][.FFF1.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
-06AA ; [.1CF3.0021.0002.06AA] # ARABIC LETTER SWASH KAF
-06AB ; [.1CF3.0022.0002.06AB] # ARABIC LETTER KAF WITH RING
-0643 ; [.1CF3.0023.0002.0643] # ARABIC LETTER KAF
-06AC ; [.1CF3.0024.0002.06AC] # ARABIC LETTER KAF WITH DOT ABOVE
-06AD ; [.1CF3.0025.0002.06AD] # ARABIC LETTER NG
-06AE ; [.1CF3.0026.0002.06AE] # ARABIC LETTER KAF WITH THREE DOTS BELOW
-0647 ; [.1D28.0020.0002.0647][.FFF1.0000.0000.0000] # ARABIC LETTER HEH
-06D5 ; [.1D28.0021.0002.06D5][.FFF1.0000.0000.0000] # ARABIC LETTER AE
-06C1 ; [.1D28.0022.0002.06C1][.FFF1.0000.0000.0000] # ARABIC LETTER HEH GOAL
-06C2 ; [.1D28.0022.0002.06C1][.FFF1.0000.0000.0000][.0000.00BE.0002.0654] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
-0629 ; [.1D28.0023.0002.0629][.FFF1.0000.0000.0000] # ARABIC LETTER TEH MARBUTA
-06C3 ; [.1D28.0024.0002.06C3][.FFF1.0000.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL
-06C0 ; [.1D28.0025.0002.06C0][.FFF1.0000.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE
-06D5 0654 ; [.1D28.0025.0002.06C0][.FFF1.0000.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE
-06BE ; [.1D28.0026.0002.06BE][.FFF1.0000.0000.0000] # ARABIC LETTER HEH DOACHASHMEE
-0649 ; [.1D2E.0021.0002.0649] # ARABIC LETTER ALEF MAKSURA
-06D2 ; [.1D2E.0022.0002.06D2] # ARABIC LETTER YEH BARREE
-06D3 ; [.1D2E.0022.0002.06D2][.0000.00BE.0002.0654] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
-064A ; [.1D2E.0023.0002.064A] # ARABIC LETTER YEH
-06D0 ; [.1D2E.0024.0002.06D0] # ARABIC LETTER E
-06D1 ; [.1D2E.0025.0002.06D1] # ARABIC LETTER YEH WITH THREE DOTS BELOW
-06CD ; [.1D2E.0026.0002.06CD] # ARABIC LETTER YEH WITH TAIL
-06CE ; [.1D2E.0027.0002.06CE] # ARABIC LETTER YEH WITH SMALL V
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0650 ; [.0000.00AE.0002.0650] # ARABIC KASRA
+064B ; [.0000.00B3.0002.064B] # ARABIC FATHATAN
+064D ; [.0000.00B4.0002.064D] # ARABIC KASRATAN
+064C ; [.0000.00B5.0002.064C] # ARABIC DAMMATAN
+0622 ; [.1C9B.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0627 0653 ; [.1C9B.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+08AC ; [.1C9B.0020.0002.08AC][.FFF0.0000.0000.0000] # ARABIC LETTER ROHINGYA YEH
+0671 ; [.1C9C.0021.0002.0671] # ARABIC LETTER ALEF WASLA
+0621 ; [.1C9D.0020.0002.0621][.FFF0.0000.0000.0000] # ARABIC LETTER HAMZA
+0623 ; [.1C9D.0021.0002.0623][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0627 0654 ; [.1C9D.0021.0002.0623][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0672 ; [.1C9D.0022.0002.0672][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+0625 ; [.1C9D.0023.0002.0625][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW
+0627 0655 ; [.1C9D.0023.0002.0625][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW
+0673 ; [.1C9D.0024.0002.0673][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+0624 ; [.1C9D.0025.0002.0624][.FFF0.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+0648 0654 ; [.1C9D.0025.0002.0624][.FFF0.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+06CC 0654 ; [.1C9D.0026.0002.06CC][.FFF0.0000.0000.0000] # <ARABIC LETTER FARSI YEH, ARABIC HAMZA ABOVE>
+0649 0654 ; [.1C9D.0026.0003.0649][.FFF0.0000.0000.0000] # <ARABIC LETTER ALEF MAKSURA, ARABIC HAMZA ABOVE>
+0626 ; [.1C9D.0026.0004.0626][.FFF0.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+064A 0654 ; [.1C9D.0026.0004.0626][.FFF0.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+066E ; [.1C9D.0020.0002.066E][.FFF1.0000.0000.0000] # ARABIC LETTER DOTLESS BEH
+06AA ; [.1D0E.0021.0002.06AA] # ARABIC LETTER SWASH KAF
+06AB ; [.1D0E.0022.0002.06AB] # ARABIC LETTER KAF WITH RING
+0643 ; [.1D0E.0023.0002.0643] # ARABIC LETTER KAF
+06AC ; [.1D0E.0024.0002.06AC] # ARABIC LETTER KAF WITH DOT ABOVE
+06AD ; [.1D0E.0025.0002.06AD] # ARABIC LETTER NG
+06AE ; [.1D0E.0026.0002.06AE] # ARABIC LETTER KAF WITH THREE DOTS BELOW
+0647 ; [.1D43.0020.0002.0647][.FFF1.0000.0000.0000] # ARABIC LETTER HEH
+06D5 ; [.1D43.0021.0002.06D5][.FFF1.0000.0000.0000] # ARABIC LETTER AE
+06C1 ; [.1D43.0022.0002.06C1][.FFF1.0000.0000.0000] # ARABIC LETTER HEH GOAL
+06C2 ; [.1D43.0022.0002.06C1][.FFF1.0000.0000.0000][.0000.00BE.0002.0654] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+0629 ; [.1D43.0023.0002.0629][.FFF1.0000.0000.0000] # ARABIC LETTER TEH MARBUTA
+06C3 ; [.1D43.0024.0002.06C3][.FFF1.0000.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL
+06C0 ; [.1D43.0025.0002.06C0][.FFF1.0000.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE
+06D5 0654 ; [.1D43.0025.0002.06C0][.FFF1.0000.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE
+06BE ; [.1D43.0026.0002.06BE][.FFF1.0000.0000.0000] # ARABIC LETTER HEH DOACHASHMEE
+06CF ; [.1D43.0020.0002.06CF][.FFF0.0000.0000.0000] # ARABIC LETTER WAW WITH DOT ABOVE
+0649 ; [.1D49.0021.0002.0649] # ARABIC LETTER ALEF MAKSURA
+06D2 ; [.1D49.0022.0002.06D2] # ARABIC LETTER YEH BARREE
+06D3 ; [.1D49.0022.0002.06D2][.0000.00BE.0002.0654] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+064A ; [.1D49.0023.0002.064A] # ARABIC LETTER YEH
+06D0 ; [.1D49.0024.0002.06D0] # ARABIC LETTER E
+06D1 ; [.1D49.0025.0002.06D1] # ARABIC LETTER YEH WITH THREE DOTS BELOW
+06CD ; [.1D49.0026.0002.06CD] # ARABIC LETTER YEH WITH TAIL
+06CE ; [.1D49.0027.0002.06CE] # ARABIC LETTER YEH WITH SMALL V
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fi.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fi.pl
index d8dc6d380db..111bea49bf2 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fi.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fi.pl
@@ -1,64 +1,64 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
# in cldr test/fi.xml why x{110}x < xdx though xd < x{110} ?
- entry => <<'ENTRY', # for DUCET v6.1.0
-0111 ; [.1616.0021.0002.0111][.0000.007D.0002.0335] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1616.0021.0008.0110][.0000.007D.0002.0335] # LATIN CAPITAL LETTER D WITH STROKE
-01E5 ; [.1676.0021.0002.01E5][.0000.007D.0002.0335] # LATIN SMALL LETTER G WITH STROKE
-01E4 ; [.1676.0021.0008.01E4][.0000.007D.0002.0335] # LATIN CAPITAL LETTER G WITH STROKE
-014B ; [.1734.0021.0002.014B][.0000.007D.0002.0335] # LATIN SMALL LETTER ENG
-014A ; [.1734.0021.0008.014A][.0000.007D.0002.0335] # LATIN CAPITAL LETTER ENG
-0167 ; [.17FB.0021.0002.0167][.0000.007D.0002.0335] # LATIN SMALL LETTER T WITH STROKE
-0166 ; [.17FB.0021.0008.0166][.0000.007D.0002.0335] # LATIN CAPITAL LETTER T WITH STROKE
-0077 ; [.1844.0021.0002.0077] # LATIN SMALL LETTER W
-0057 ; [.1844.0021.0008.0057] # LATIN CAPITAL LETTER W
-00FC ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.1865.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.1865.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.1865.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.1865.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.1865.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.1865.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.1865.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.1865.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0292 ; [.187A.0021.0002.0292][.0000.007D.0002.0335] # LATIN SMALL LETTER EZH
-01B7 ; [.187A.0021.0008.01B7][.0000.007D.0002.0335] # LATIN CAPITAL LETTER EZH
-01EF ; [.187A.0021.0002.0292][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN SMALL LETTER EZH WITH CARON
-01EE ; [.187A.0021.0008.01B7][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN CAPITAL LETTER EZH WITH CARON
-00E5 ; [.18EB.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-0061 030A ; [.18EB.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.18EB.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-0041 030A ; [.18EB.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.18EB.0020.0008.00C5] # ANGSTROM SIGN
-01FB ; [.18EB.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.18EB.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-00E4 ; [.18EC.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.18EC.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.18EC.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.18EC.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.18EC.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.18EC.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-00E6 ; [.18EC.0021.0002.00E6] # LATIN SMALL LETTER AE
-00C6 ; [.18EC.0021.0008.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.18EC.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.18EC.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.18EC.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.18EC.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.18EC.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
-00F6 ; [.18ED.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.18ED.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.18ED.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.18ED.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.18ED.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.18ED.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-00F8 ; [.18ED.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-006F 0338 ; [.18ED.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.18ED.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-004F 0338 ; [.18ED.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.18ED.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.18ED.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0111 ; [.1631.0021.0002.0111][.0000.007D.0002.0335] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1631.0021.0008.0110][.0000.007D.0002.0335] # LATIN CAPITAL LETTER D WITH STROKE
+01E5 ; [.1691.0021.0002.01E5][.0000.007D.0002.0335] # LATIN SMALL LETTER G WITH STROKE
+01E4 ; [.1691.0021.0008.01E4][.0000.007D.0002.0335] # LATIN CAPITAL LETTER G WITH STROKE
+014B ; [.174F.0021.0002.014B][.0000.007D.0002.0335] # LATIN SMALL LETTER ENG
+014A ; [.174F.0021.0008.014A][.0000.007D.0002.0335] # LATIN CAPITAL LETTER ENG
+0167 ; [.1816.0021.0002.0167][.0000.007D.0002.0335] # LATIN SMALL LETTER T WITH STROKE
+0166 ; [.1816.0021.0008.0166][.0000.007D.0002.0335] # LATIN CAPITAL LETTER T WITH STROKE
+0077 ; [.185F.0021.0002.0077] # LATIN SMALL LETTER W
+0057 ; [.185F.0021.0008.0057] # LATIN CAPITAL LETTER W
+00FC ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0292 ; [.1895.0021.0002.0292][.0000.007D.0002.0335] # LATIN SMALL LETTER EZH
+01B7 ; [.1895.0021.0008.01B7][.0000.007D.0002.0335] # LATIN CAPITAL LETTER EZH
+01EF ; [.1895.0021.0002.0292][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN SMALL LETTER EZH WITH CARON
+01EE ; [.1895.0021.0008.01B7][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN CAPITAL LETTER EZH WITH CARON
+00E5 ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1906.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.1906.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1906.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00E4 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1907.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1907.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00E6 ; [.1907.0021.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1907.0021.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1907.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1907.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1907.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1907.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1907.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00F6 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1908.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1908.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00F8 ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1908.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1908.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl
index f8b5120a32d..fd33cf71b95 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl
@@ -1,62 +1,62 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
# in cldr test/fi.xml why x{110}x < xdx though xd < x{110} ?
- entry => <<'ENTRY', # for DUCET v6.1.0
-0111 ; [.1616.0021.0002.0111][.0000.007D.0002.0335] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1616.0021.0008.0110][.0000.007D.0002.0335] # LATIN CAPITAL LETTER D WITH STROKE
-01E5 ; [.1676.0021.0002.01E5][.0000.007D.0002.0335] # LATIN SMALL LETTER G WITH STROKE
-01E4 ; [.1676.0021.0008.01E4][.0000.007D.0002.0335] # LATIN CAPITAL LETTER G WITH STROKE
-014B ; [.1734.0021.0002.014B][.0000.007D.0002.0335] # LATIN SMALL LETTER ENG
-014A ; [.1734.0021.0008.014A][.0000.007D.0002.0335] # LATIN CAPITAL LETTER ENG
-0167 ; [.17FB.0021.0002.0167][.0000.007D.0002.0335] # LATIN SMALL LETTER T WITH STROKE
-0166 ; [.17FB.0021.0008.0166][.0000.007D.0002.0335] # LATIN CAPITAL LETTER T WITH STROKE
-00FC ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.1865.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.1865.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.1865.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.1865.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.1865.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.1865.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.1865.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.1865.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0292 ; [.187A.0021.0002.0292][.0000.007D.0002.0335] # LATIN SMALL LETTER EZH
-01B7 ; [.187A.0021.0008.01B7][.0000.007D.0002.0335] # LATIN CAPITAL LETTER EZH
-01EF ; [.187A.0021.0002.0292][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN SMALL LETTER EZH WITH CARON
-01EE ; [.187A.0021.0008.01B7][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN CAPITAL LETTER EZH WITH CARON
-00E5 ; [.18EB.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-0061 030A ; [.18EB.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.18EB.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-0041 030A ; [.18EB.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.18EB.0020.0008.00C5] # ANGSTROM SIGN
-01FB ; [.18EB.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.18EB.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-00E4 ; [.18EC.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.18EC.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.18EC.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.18EC.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.18EC.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.18EC.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-00E6 ; [.18EC.0021.0002.00E6] # LATIN SMALL LETTER AE
-00C6 ; [.18EC.0021.0008.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.18EC.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.18EC.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.18EC.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.18EC.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.18EC.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
-00F6 ; [.18ED.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.18ED.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.18ED.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.18ED.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.18ED.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.18ED.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-00F8 ; [.18ED.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-006F 0338 ; [.18ED.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.18ED.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-004F 0338 ; [.18ED.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.18ED.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.18ED.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0111 ; [.1631.0021.0002.0111][.0000.007D.0002.0335] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1631.0021.0008.0110][.0000.007D.0002.0335] # LATIN CAPITAL LETTER D WITH STROKE
+01E5 ; [.1691.0021.0002.01E5][.0000.007D.0002.0335] # LATIN SMALL LETTER G WITH STROKE
+01E4 ; [.1691.0021.0008.01E4][.0000.007D.0002.0335] # LATIN CAPITAL LETTER G WITH STROKE
+014B ; [.174F.0021.0002.014B][.0000.007D.0002.0335] # LATIN SMALL LETTER ENG
+014A ; [.174F.0021.0008.014A][.0000.007D.0002.0335] # LATIN CAPITAL LETTER ENG
+0167 ; [.1816.0021.0002.0167][.0000.007D.0002.0335] # LATIN SMALL LETTER T WITH STROKE
+0166 ; [.1816.0021.0008.0166][.0000.007D.0002.0335] # LATIN CAPITAL LETTER T WITH STROKE
+00FC ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0292 ; [.1895.0021.0002.0292][.0000.007D.0002.0335] # LATIN SMALL LETTER EZH
+01B7 ; [.1895.0021.0008.01B7][.0000.007D.0002.0335] # LATIN CAPITAL LETTER EZH
+01EF ; [.1895.0021.0002.0292][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN SMALL LETTER EZH WITH CARON
+01EE ; [.1895.0021.0008.01B7][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN CAPITAL LETTER EZH WITH CARON
+00E5 ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1906.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.1906.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1906.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00E4 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1907.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1907.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00E6 ; [.1907.0021.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1907.0021.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1907.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1907.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1907.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1907.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1907.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00F6 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1908.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1908.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00F8 ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1908.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1908.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fil.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fil.pl
index dd27b7236af..2d62538c962 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fil.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fil.pl
@@ -1,12 +1,12 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-00F1 ; [.1735.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
-006E 0303 ; [.1735.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
-00D1 ; [.1735.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
-004E 0303 ; [.1735.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
-006E 0067 ; [.1736.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER G>
-004E 0067 ; [.1736.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER G>
-004E 0047 ; [.1736.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER G>
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00F1 ; [.1750.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+006E 0303 ; [.1750.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+00D1 ; [.1750.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
+004E 0303 ; [.1750.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
+006E 0067 ; [.1751.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER G>
+004E 0067 ; [.1751.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER G>
+004E 0047 ; [.1751.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER G>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fo.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fo.pl
index a0b27ee2b1c..efc5fbb8158 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fo.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/fo.pl
@@ -1,75 +1,75 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0111 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0064 0335 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-0044 0335 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-00F0 ; [.1616.0022.0002.00F0] # LATIN SMALL LETTER ETH
-00D0 ; [.1616.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
-00FE ; [.17FB.0020.0003.00FE][.1699.0020.0003.00FE] # LATIN SMALL LETTER THORN
-00DE ; [.17FB.0020.0009.00DE][.1699.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
-00FC ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.1865.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.1865.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.1865.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.1865.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.1865.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.1865.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.1865.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.1865.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0171 ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0075 030B ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0170 ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0055 030B ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-00E6 ; [.18EB.0020.0002.00E6] # LATIN SMALL LETTER AE
-00C6 ; [.18EB.0020.0008.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.18EB.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.18EB.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.18EB.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.18EB.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.18EB.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
-00E4 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.18EB.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.18EB.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-0119 ; [.18EB.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0065 0328 ; [.18EB.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0118 ; [.18EB.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-0045 0328 ; [.18EB.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-00F8 ; [.18EC.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-006F 0338 ; [.18EC.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.18EC.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-004F 0338 ; [.18EC.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.18EC.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.18EC.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-00F6 ; [.18EC.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.18EC.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.18EC.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.18EC.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.18EC.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.18EC.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-0151 ; [.18EC.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-006F 030B ; [.18EC.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0150 ; [.18EC.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-004F 030B ; [.18EC.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0153 ; [.18EC.0023.0002.0153] # LATIN SMALL LIGATURE OE
-0152 ; [.18EC.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
-00E5 ; [.18ED.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-0061 030A ; [.18ED.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.18ED.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-0041 030A ; [.18ED.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.18ED.0020.0008.00C5] # ANGSTROM SIGN
-01FB ; [.18ED.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.18ED.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-0061 0061 ; [.18ED.0020.001C.0061][.0000.0000.0002.0000] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
-0061 0041 ; [.18ED.0020.001C.0061][.0000.0000.0008.0000] # <LATIN SMALL LETTER A, LATIN CAPITAL LETTER A>
-0041 0061 ; [.18ED.0020.001D.0041][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER A, LATIN SMALL LETTER A>
-0041 0041 ; [.18ED.0020.001D.0041][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A>
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0111 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1631.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1631.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+00FE ; [.1816.0020.0003.00FE][.16B4.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.1816.0020.0009.00DE][.16B4.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+00FC ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0171 ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E6 ; [.1906.0020.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1906.0020.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1906.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1906.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1906.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1906.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1906.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00E4 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1906.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1906.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+0119 ; [.1906.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.1906.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.1906.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.1906.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F8 ; [.1907.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1907.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1907.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1907.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1907.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1907.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00F6 ; [.1907.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1907.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1907.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1907.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1907.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1907.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+0151 ; [.1907.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.1907.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.1907.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.1907.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153 ; [.1907.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.1907.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00E5 ; [.1908.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1908.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1908.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1908.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1908.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.1908.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1908.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+0061 0061 ; [.1908.0020.001C.0061][.0000.0000.0002.0000] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
+0061 0041 ; [.1908.0020.001C.0061][.0000.0000.0008.0000] # <LATIN SMALL LETTER A, LATIN CAPITAL LETTER A>
+0041 0061 ; [.1908.0020.001D.0041][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER A, LATIN SMALL LETTER A>
+0041 0041 ; [.1908.0020.001D.0041][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/gu.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/gu.pl
index 456a28fcd15..b009f638f99 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/gu.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/gu.pl
@@ -1,8 +1,9 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0A82 ; [.209C.0020.0002.0A82][.FFF1.0000.0000.0000] # GUJARATI SIGN ANUSVARA
-0A81 ; [.209C.0021.0002.0A81][.FFF1.0000.0000.0A81] # GUJARATI SIGN CANDRABINDU
-0A83 ; [.209C.0020.0002.0A83][.FFF2.0000.0000.0000] # GUJARATI SIGN VISARGA
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0A82 ; [.20B7.0020.0002.0A82][.FFF1.0000.0000.0000] # GUJARATI SIGN ANUSVARA
+0A81 ; [.20B7.0021.0002.0A81][.FFF1.0000.0000.0A81] # GUJARATI SIGN CANDRABINDU
+0A83 ; [.20B7.0020.0002.0A83][.FFF2.0000.0000.0000] # GUJARATI SIGN VISARGA
+0AD0 ; [.20B7.0020.0002.0AD0][.FFF0.0000.0000.0000] # GUJARATI OM
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ha.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ha.pl
index 486d3782c63..10edfd69f2b 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ha.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ha.pl
@@ -1,16 +1,16 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
# b-hook, d-hook, k-hook, y-hook don't require tailoring
- entry => <<'ENTRY', # for DUCET v6.1.0
-0073 0068 ; [.17D9.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
-0053 0068 ; [.17D9.0020.0007.0053] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER H>
-0053 0048 ; [.17D9.0020.0008.0053] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER H>
-0074 0073 ; [.17FC.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER S>
-0054 0073 ; [.17FC.0020.0007.0054] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER S>
-0054 0053 ; [.17FC.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER S>
-02BC 0079 ; [.1871.0020.0003.02BC] # <MODIFIER LETTER APOSTROPHE, LATIN SMALL LETTER Y>
-02BC 0059 ; [.1871.0020.0009.02BC] # <MODIFIER LETTER APOSTROPHE, LATIN CAPITAL LETTER Y>
-0027 0079 ; [.1871.0020.0004.0027] # <APOSTROPHE, LATIN SMALL LETTER Y>
-0027 0059 ; [.1871.0020.000A.0027] # <APOSTROPHE, LATIN CAPITAL LETTER Y>
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0073 0068 ; [.17F4.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
+0053 0068 ; [.17F4.0020.0007.0053] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER H>
+0053 0048 ; [.17F4.0020.0008.0053] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER H>
+0074 0073 ; [.1817.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER S>
+0054 0073 ; [.1817.0020.0007.0054] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER S>
+0054 0053 ; [.1817.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER S>
+02BC 0079 ; [.188C.0020.0003.02BC] # <MODIFIER LETTER APOSTROPHE, LATIN SMALL LETTER Y>
+02BC 0059 ; [.188C.0020.0009.02BC] # <MODIFIER LETTER APOSTROPHE, LATIN CAPITAL LETTER Y>
+0027 0079 ; [.188C.0020.0004.0027] # <APOSTROPHE, LATIN SMALL LETTER Y>
+0027 0059 ; [.188C.0020.000A.0027] # <APOSTROPHE, LATIN CAPITAL LETTER Y>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/haw.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/haw.pl
index b436c8364ba..12e9bc688f0 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/haw.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/haw.pl
@@ -1,36 +1,36 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0065 ; [.15D5.0020.0002.0065] # LATIN SMALL LETTER E
-0045 ; [.15D5.0020.0008.0045] # LATIN CAPITAL LETTER E
-0069 ; [.15D6.0020.0002.0069] # LATIN SMALL LETTER I
-0049 ; [.15D6.0020.0008.0049] # LATIN CAPITAL LETTER I
-006F ; [.15D7.0020.0002.006F] # LATIN SMALL LETTER O
-004F ; [.15D7.0020.0008.004F] # LATIN CAPITAL LETTER O
-0075 ; [.15D8.0020.0002.0075] # LATIN SMALL LETTER U
-0055 ; [.15D8.0020.0008.0055] # LATIN CAPITAL LETTER U
-0068 ; [.15D9.0020.0002.0068] # LATIN SMALL LETTER H
-0048 ; [.15D9.0020.0008.0048] # LATIN CAPITAL LETTER H
-006B ; [.15DA.0020.0002.006B] # LATIN SMALL LETTER K
-004B ; [.15DA.0020.0008.004B] # LATIN CAPITAL LETTER K
-006C ; [.15DB.0020.0002.006C] # LATIN SMALL LETTER L
-004C ; [.15DB.0020.0008.004C] # LATIN CAPITAL LETTER L
-006D ; [.15DC.0020.0002.006D] # LATIN SMALL LETTER M
-004D ; [.15DC.0020.0008.004D] # LATIN CAPITAL LETTER M
-006E ; [.15DD.0020.0002.006E] # LATIN SMALL LETTER N
-004E ; [.15DD.0020.0008.004E] # LATIN CAPITAL LETTER N
-0070 ; [.15DE.0020.0002.0070] # LATIN SMALL LETTER P
-0050 ; [.15DE.0020.0008.0050] # LATIN CAPITAL LETTER P
-0077 ; [.15DF.0020.0002.0077] # LATIN SMALL LETTER W
-0057 ; [.15DF.0020.0008.0057] # LATIN CAPITAL LETTER W
-02BB ; [.15E0.0020.0002.02BB] # MODIFIER LETTER TURNED COMMA
-0113 ; [.15D5.0020.0002.0065][.0000.005B.0002.0304] # LATIN SMALL LETTER E WITH MACRON
-0112 ; [.15D5.0020.0008.0045][.0000.005B.0002.0304] # LATIN CAPITAL LETTER E WITH MACRON
-012B ; [.15D6.0020.0002.0069][.0000.005B.0002.0304] # LATIN SMALL LETTER I WITH MACRON
-012A ; [.15D6.0020.0008.0049][.0000.005B.0002.0304] # LATIN CAPITAL LETTER I WITH MACRON
-014D ; [.15D7.0020.0002.006F][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH MACRON
-014C ; [.15D7.0020.0008.004F][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH MACRON
-016B ; [.15D8.0020.0002.0075][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH MACRON
-016A ; [.15D8.0020.0008.0055][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH MACRON
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0065 ; [.15F0.0020.0002.0065] # LATIN SMALL LETTER E
+0045 ; [.15F0.0020.0008.0045] # LATIN CAPITAL LETTER E
+0069 ; [.15F1.0020.0002.0069] # LATIN SMALL LETTER I
+0049 ; [.15F1.0020.0008.0049] # LATIN CAPITAL LETTER I
+006F ; [.15F2.0020.0002.006F] # LATIN SMALL LETTER O
+004F ; [.15F2.0020.0008.004F] # LATIN CAPITAL LETTER O
+0075 ; [.15F3.0020.0002.0075] # LATIN SMALL LETTER U
+0055 ; [.15F3.0020.0008.0055] # LATIN CAPITAL LETTER U
+0068 ; [.15F4.0020.0002.0068] # LATIN SMALL LETTER H
+0048 ; [.15F4.0020.0008.0048] # LATIN CAPITAL LETTER H
+006B ; [.15F5.0020.0002.006B] # LATIN SMALL LETTER K
+004B ; [.15F5.0020.0008.004B] # LATIN CAPITAL LETTER K
+006C ; [.15F6.0020.0002.006C] # LATIN SMALL LETTER L
+004C ; [.15F6.0020.0008.004C] # LATIN CAPITAL LETTER L
+006D ; [.15F7.0020.0002.006D] # LATIN SMALL LETTER M
+004D ; [.15F7.0020.0008.004D] # LATIN CAPITAL LETTER M
+006E ; [.15F8.0020.0002.006E] # LATIN SMALL LETTER N
+004E ; [.15F8.0020.0008.004E] # LATIN CAPITAL LETTER N
+0070 ; [.15F9.0020.0002.0070] # LATIN SMALL LETTER P
+0050 ; [.15F9.0020.0008.0050] # LATIN CAPITAL LETTER P
+0077 ; [.15FA.0020.0002.0077] # LATIN SMALL LETTER W
+0057 ; [.15FA.0020.0008.0057] # LATIN CAPITAL LETTER W
+02BB ; [.15FB.0020.0002.02BB] # MODIFIER LETTER TURNED COMMA
+0113 ; [.15F0.0020.0002.0065][.0000.005B.0002.0304] # LATIN SMALL LETTER E WITH MACRON
+0112 ; [.15F0.0020.0008.0045][.0000.005B.0002.0304] # LATIN CAPITAL LETTER E WITH MACRON
+012B ; [.15F1.0020.0002.0069][.0000.005B.0002.0304] # LATIN SMALL LETTER I WITH MACRON
+012A ; [.15F1.0020.0008.0049][.0000.005B.0002.0304] # LATIN CAPITAL LETTER I WITH MACRON
+014D ; [.15F2.0020.0002.006F][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH MACRON
+014C ; [.15F2.0020.0008.004F][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH MACRON
+016B ; [.15F3.0020.0002.0075][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.15F3.0020.0008.0055][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH MACRON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hi.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hi.pl
index 4d4336d893d..c58fdfb7703 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hi.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hi.pl
@@ -1,8 +1,9 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0902 ; [.1FC1.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
-0901 ; [.1FC1.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
-0903 ; [.1FC1.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0902 ; [.1FDC.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
+0901 ; [.1FDC.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
+0903 ; [.1FDC.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
+0950 ; [.1FDC.0020.0002.0950][.FFF0.0000.0000.0000] # DEVANAGARI OM
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hr.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hr.pl
index 486c8cf4aa6..3bf3bc639b8 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hr.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hr.pl
@@ -1,48 +1,48 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-010D ; [.1603.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-0063 030C ; [.1603.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-010C ; [.1603.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0043 030C ; [.1603.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0107 ; [.1604.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
-0063 0301 ; [.1604.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
-0063 0341 ; [.1604.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
-0106 ; [.1604.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
-0043 0301 ; [.1604.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
-0043 0341 ; [.1604.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
-0064 017E ; [.1617.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CARON>
-01C6 ; [.1617.0020.0003.01C6] # LATIN SMALL LETTER DZ WITH CARON
-0044 017E ; [.1617.0020.0007.0044][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z WITH CARON>
-01C5 ; [.1617.0020.0007.01C5][.0000.0000.0007.0000] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
-0044 017D ; [.1617.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z WITH CARON>
-01C4 ; [.1617.0020.0009.01C4] # LATIN CAPITAL LETTER DZ WITH CARON
-0064 007A 030C ; [.1617.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z, COMBINING CARON>
-0044 007A 030C ; [.1617.0020.0007.0044][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, COMBINING CARON>
-0044 005A 030C ; [.1617.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, COMBINING CARON>
-0111 ; [.1618.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0064 0335 ; [.1618.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1618.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-0044 0335 ; [.1618.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-006C 006A ; [.16F7.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER J>
-01C9 ; [.16F7.0020.0003.01C9] # LATIN SMALL LETTER LJ
-004C 006A ; [.16F7.0020.0007.004C][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER J>
-01C8 ; [.16F7.0020.0007.01C8][.0000.0000.0007.0000] # LATIN CAPITAL LETTER L WITH SMALL LETTER J
-004C 004A ; [.16F7.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER J>
-01C7 ; [.16F7.0020.0009.01C7] # LATIN CAPITAL LETTER LJ
-006E 006A ; [.1735.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER J>
-01CC ; [.1735.0020.0003.01CC] # LATIN SMALL LETTER NJ
-004E 006A ; [.1735.0020.0007.004E][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER J>
-01CB ; [.1735.0020.0007.01CB][.0000.0000.0007.0000] # LATIN CAPITAL LETTER N WITH SMALL LETTER J
-004E 004A ; [.1735.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER J>
-01CA ; [.1735.0020.0009.01CA] # LATIN CAPITAL LETTER NJ
-0161 ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0073 030C ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0053 030C ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-017E ; [.187B.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-007A 030C ; [.187B.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-017D ; [.187B.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-005A 030C ; [.187B.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+010D ; [.161E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+0063 030C ; [.161E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+010C ; [.161E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0043 030C ; [.161E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0107 ; [.161F.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
+0063 0301 ; [.161F.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
+0063 0341 ; [.161F.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
+0106 ; [.161F.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
+0043 0301 ; [.161F.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
+0043 0341 ; [.161F.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
+0064 017E ; [.1632.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CARON>
+01C6 ; [.1632.0020.0003.01C6] # LATIN SMALL LETTER DZ WITH CARON
+0044 017E ; [.1632.0020.0007.0044][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z WITH CARON>
+01C5 ; [.1632.0020.0007.01C5][.0000.0000.0007.0000] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+0044 017D ; [.1632.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z WITH CARON>
+01C4 ; [.1632.0020.0009.01C4] # LATIN CAPITAL LETTER DZ WITH CARON
+0064 007A 030C ; [.1632.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z, COMBINING CARON>
+0044 007A 030C ; [.1632.0020.0007.0044][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, COMBINING CARON>
+0044 005A 030C ; [.1632.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, COMBINING CARON>
+0111 ; [.1633.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1633.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1633.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1633.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+006C 006A ; [.1712.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER J>
+01C9 ; [.1712.0020.0003.01C9] # LATIN SMALL LETTER LJ
+004C 006A ; [.1712.0020.0007.004C][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER J>
+01C8 ; [.1712.0020.0007.01C8][.0000.0000.0007.0000] # LATIN CAPITAL LETTER L WITH SMALL LETTER J
+004C 004A ; [.1712.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER J>
+01C7 ; [.1712.0020.0009.01C7] # LATIN CAPITAL LETTER LJ
+006E 006A ; [.1750.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER J>
+01CC ; [.1750.0020.0003.01CC] # LATIN SMALL LETTER NJ
+004E 006A ; [.1750.0020.0007.004E][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER J>
+01CB ; [.1750.0020.0007.01CB][.0000.0000.0007.0000] # LATIN CAPITAL LETTER N WITH SMALL LETTER J
+004E 004A ; [.1750.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER J>
+01CA ; [.1750.0020.0009.01CA] # LATIN CAPITAL LETTER NJ
+0161 ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+017E ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+007A 030C ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+017D ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+005A 030C ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hu.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hu.pl
index b5faea3949f..1146a7626c3 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hu.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hu.pl
@@ -1,151 +1,151 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0063 0073 ; [.1603.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER S>
-0063 0053 ; [.1603.0020.0007.0063][.0000.0000.0002.0000] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER S>
-0043 0073 ; [.1603.0020.0007.0043][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER S>
-0043 0053 ; [.1603.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER S>
-0064 007A ; [.1617.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z>
-0064 005A ; [.1617.0020.0007.0064][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z>
-0044 007A ; [.1617.0020.0007.0044][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z>
-0044 005A ; [.1617.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z>
-0064 007A 0073 ; [.1618.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
-0064 007A 0053 ; [.1618.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
-0064 005A 0073 ; [.1618.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0007.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
-0064 005A 0053 ; [.1618.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0008.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
-0044 007A 0073 ; [.1618.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
-0044 007A 0053 ; [.1618.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
-0044 005A 0073 ; [.1618.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
-0044 005A 0053 ; [.1618.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
-0067 0079 ; [.1677.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER Y>
-0067 0059 ; [.1677.0020.0007.0067][.0000.0000.0002.0000] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER Y>
-0047 0079 ; [.1677.0020.0007.0047][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER Y>
-0047 0059 ; [.1677.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER Y>
-006C 0079 ; [.16F7.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER Y>
-006C 0059 ; [.16F7.0020.0007.006C][.0000.0000.0002.0000] # <LATIN SMALL LETTER L, LATIN CAPITAL LETTER Y>
-004C 0079 ; [.16F7.0020.0007.004C][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER Y>
-004C 0059 ; [.16F7.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER Y>
-006E 0079 ; [.1735.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
-006E 0059 ; [.1735.0020.0007.006E][.0000.0000.0002.0000] # <LATIN SMALL LETTER N, LATIN CAPITAL LETTER Y>
-004E 0079 ; [.1735.0020.0007.004E][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
-004E 0059 ; [.1735.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
-0073 007A ; [.17D9.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER Z>
-0073 005A ; [.17D9.0020.0007.0073][.0000.0000.0002.0000] # <LATIN SMALL LETTER S, LATIN CAPITAL LETTER Z>
-0053 007A ; [.17D9.0020.0007.0053][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER Z>
-0053 005A ; [.17D9.0020.0008.0053] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER Z>
-0074 0079 ; [.17FC.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER Y>
-0074 0059 ; [.17FC.0020.0007.0074][.0000.0000.0002.0000] # <LATIN SMALL LETTER T, LATIN CAPITAL LETTER Y>
-0054 0079 ; [.17FC.0020.0007.0054][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER Y>
-0054 0059 ; [.17FC.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER Y>
-007A 0073 ; [.187B.0020.0002.007A] # <LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
-007A 0053 ; [.187B.0020.0007.007A][.0000.0000.0002.0000] # <LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
-005A 0073 ; [.187B.0020.0007.005A][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
-005A 0053 ; [.187B.0020.0008.005A] # <LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
-00F6 ; [.1757.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.1757.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.1757.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.1757.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.1757.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.1757.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-0151 ; [.1757.0021.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-006F 030B ; [.1757.0021.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0150 ; [.1757.0021.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-004F 030B ; [.1757.0021.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-00FC ; [.181C.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.181C.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.181C.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.181C.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.181C.0020.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.181C.0020.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.181C.0020.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.181C.0020.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.181C.0020.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.181C.0020.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.181C.0020.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.181C.0020.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0171 ; [.181C.0021.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0075 030B ; [.181C.0021.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0170 ; [.181C.0021.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0055 030B ; [.181C.0021.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0063 0063 0073 ; [.1603.0020.0002.0063][.1603.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER C, LATIN SMALL LETTER S>
-0063 0063 0053 ; [.1603.0020.0002.0063][.1603.0020.0007.0063][.0000.0000.0002.0000] # <LATIN SMALL LETTER C, LATIN SMALL LETTER C, LATIN CAPITAL LETTER S>
-0063 0043 0073 ; [.1603.0020.0002.0063][.1603.0020.0007.0043][.0000.0000.0008.0000] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, LATIN SMALL LETTER S>
-0063 0043 0053 ; [.1603.0020.0002.0063][.1603.0020.0008.0043] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER S>
-0043 0063 0073 ; [.1603.0020.0008.0043][.1603.0020.0002.0063] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER C, LATIN SMALL LETTER S>
-0043 0063 0053 ; [.1603.0020.0008.0043][.1603.0020.0007.0063][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER C, LATIN CAPITAL LETTER S>
-0043 0043 0073 ; [.1603.0020.0008.0043][.1603.0020.0007.0043][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER C, LATIN SMALL LETTER S>
-0043 0043 0053 ; [.1603.0020.0008.0043][.1603.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER S>
-0064 0064 007A ; [.1617.0020.0002.0064][.1617.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z>
-0064 0064 005A ; [.1617.0020.0002.0064][.1617.0020.0007.0064][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z>
-0064 0044 007A ; [.1617.0020.0002.0064][.1617.0020.0007.0044][.0000.0000.0008.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z>
-0064 0044 005A ; [.1617.0020.0002.0064][.1617.0020.0008.0044] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z>
-0044 0064 007A ; [.1617.0020.0008.0044][.1617.0020.0002.0064] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z>
-0044 0064 005A ; [.1617.0020.0008.0044][.1617.0020.0007.0064][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z>
-0044 0044 007A ; [.1617.0020.0008.0044][.1617.0020.0007.0044][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z>
-0044 0044 005A ; [.1617.0020.0008.0044][.1617.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z>
-0064 0064 007A 0073 ; [.1618.0020.0002.0064][.1618.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
-0064 0064 007A 0053 ; [.1618.0020.0002.0064][.1618.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
-0064 0064 005A 0073 ; [.1618.0020.0002.0064][.1618.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0007.0000] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
-0064 0064 005A 0053 ; [.1618.0020.0002.0064][.1618.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0008.0000] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
-0064 0044 007A 0073 ; [.1618.0020.0002.0064][.1618.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
-0064 0044 007A 0053 ; [.1618.0020.0002.0064][.1618.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0007.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
-0064 0044 005A 0073 ; [.1618.0020.0002.0064][.1618.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0008.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
-0064 0044 005A 0053 ; [.1618.0020.0002.0064][.1618.0020.0008.0044] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
-0044 0064 007A 0073 ; [.1618.0020.0008.0044][.1618.0020.0002.0064] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
-0044 0064 007A 0053 ; [.1618.0020.0008.0044][.1618.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
-0044 0064 005A 0073 ; [.1618.0020.0008.0044][.1618.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
-0044 0064 005A 0053 ; [.1618.0020.0008.0044][.1618.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
-0044 0044 007A 0073 ; [.1618.0020.0008.0044][.1618.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
-0044 0044 007A 0053 ; [.1618.0020.0008.0044][.1618.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
-0044 0044 005A 0073 ; [.1618.0020.0008.0044][.1618.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
-0044 0044 005A 0053 ; [.1618.0020.0008.0044][.1618.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
-0067 0067 0079 ; [.1677.0020.0002.0067][.1677.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER G, LATIN SMALL LETTER Y>
-0067 0067 0059 ; [.1677.0020.0002.0067][.1677.0020.0007.0067][.0000.0000.0002.0000] # <LATIN SMALL LETTER G, LATIN SMALL LETTER G, LATIN CAPITAL LETTER Y>
-0067 0047 0079 ; [.1677.0020.0002.0067][.1677.0020.0007.0047][.0000.0000.0008.0000] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, LATIN SMALL LETTER Y>
-0067 0047 0059 ; [.1677.0020.0002.0067][.1677.0020.0008.0047] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER Y>
-0047 0067 0079 ; [.1677.0020.0008.0047][.1677.0020.0002.0067] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER G, LATIN SMALL LETTER Y>
-0047 0067 0059 ; [.1677.0020.0008.0047][.1677.0020.0007.0067][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER G, LATIN CAPITAL LETTER Y>
-0047 0047 0079 ; [.1677.0020.0008.0047][.1677.0020.0007.0047][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER G, LATIN SMALL LETTER Y>
-0047 0047 0059 ; [.1677.0020.0008.0047][.1677.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER Y>
-006C 006C 0079 ; [.16F7.0020.0002.006C][.16F7.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L, LATIN SMALL LETTER Y>
-006C 006C 0059 ; [.16F7.0020.0002.006C][.16F7.0020.0007.006C][.0000.0000.0002.0000] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L, LATIN CAPITAL LETTER Y>
-006C 004C 0079 ; [.16F7.0020.0002.006C][.16F7.0020.0007.004C][.0000.0000.0008.0000] # <LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, LATIN SMALL LETTER Y>
-006C 004C 0059 ; [.16F7.0020.0002.006C][.16F7.0020.0008.004C] # <LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER Y>
-004C 006C 0079 ; [.16F7.0020.0008.004C][.16F7.0020.0002.006C] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L, LATIN SMALL LETTER Y>
-004C 006C 0059 ; [.16F7.0020.0008.004C][.16F7.0020.0007.006C][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L, LATIN CAPITAL LETTER Y>
-004C 004C 0079 ; [.16F7.0020.0008.004C][.16F7.0020.0007.004C][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L, LATIN SMALL LETTER Y>
-004C 004C 0059 ; [.16F7.0020.0008.004C][.16F7.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER Y>
-006E 006E 0079 ; [.1735.0020.0002.006E][.1735.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
-006E 006E 0059 ; [.1735.0020.0002.006E][.1735.0020.0007.006E][.0000.0000.0002.0000] # <LATIN SMALL LETTER N, LATIN SMALL LETTER N, LATIN CAPITAL LETTER Y>
-006E 004E 0079 ; [.1735.0020.0002.006E][.1735.0020.0007.004E][.0000.0000.0008.0000] # <LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
-006E 004E 0059 ; [.1735.0020.0002.006E][.1735.0020.0008.004E] # <LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
-004E 006E 0079 ; [.1735.0020.0008.004E][.1735.0020.0002.006E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
-004E 006E 0059 ; [.1735.0020.0008.004E][.1735.0020.0007.006E][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER N, LATIN CAPITAL LETTER Y>
-004E 004E 0079 ; [.1735.0020.0008.004E][.1735.0020.0007.004E][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
-004E 004E 0059 ; [.1735.0020.0008.004E][.1735.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
-0073 0073 007A ; [.17D9.0020.0002.0073][.17D9.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER S, LATIN SMALL LETTER Z>
-0073 0073 005A ; [.17D9.0020.0002.0073][.17D9.0020.0007.0073][.0000.0000.0002.0000] # <LATIN SMALL LETTER S, LATIN SMALL LETTER S, LATIN CAPITAL LETTER Z>
-0073 0053 007A ; [.17D9.0020.0002.0073][.17D9.0020.0007.0053][.0000.0000.0008.0000] # <LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, LATIN SMALL LETTER Z>
-0073 0053 005A ; [.17D9.0020.0002.0073][.17D9.0020.0008.0053] # <LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER Z>
-0053 0073 007A ; [.17D9.0020.0008.0053][.17D9.0020.0002.0073] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER S, LATIN SMALL LETTER Z>
-0053 0073 005A ; [.17D9.0020.0008.0053][.17D9.0020.0007.0073][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER S, LATIN CAPITAL LETTER Z>
-0053 0053 007A ; [.17D9.0020.0008.0053][.17D9.0020.0007.0053][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER S, LATIN SMALL LETTER Z>
-0053 0053 005A ; [.17D9.0020.0008.0053][.17D9.0020.0008.0053] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER Z>
-0074 0074 0079 ; [.17FC.0020.0002.0074][.17FC.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER T, LATIN SMALL LETTER Y>
-0074 0074 0059 ; [.17FC.0020.0002.0074][.17FC.0020.0007.0074][.0000.0000.0002.0000] # <LATIN SMALL LETTER T, LATIN SMALL LETTER T, LATIN CAPITAL LETTER Y>
-0074 0054 0079 ; [.17FC.0020.0002.0074][.17FC.0020.0007.0054][.0000.0000.0008.0000] # <LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, LATIN SMALL LETTER Y>
-0074 0054 0059 ; [.17FC.0020.0002.0074][.17FC.0020.0008.0054] # <LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER Y>
-0054 0074 0079 ; [.17FC.0020.0008.0054][.17FC.0020.0002.0074] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER T, LATIN SMALL LETTER Y>
-0054 0074 0059 ; [.17FC.0020.0008.0054][.17FC.0020.0007.0074][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER T, LATIN CAPITAL LETTER Y>
-0054 0054 0079 ; [.17FC.0020.0008.0054][.17FC.0020.0007.0054][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER T, LATIN SMALL LETTER Y>
-0054 0054 0059 ; [.17FC.0020.0008.0054][.17FC.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER Y>
-007A 007A 0073 ; [.187B.0020.0002.007A][.187B.0020.0002.007A] # <LATIN SMALL LETTER Z, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
-007A 007A 0053 ; [.187B.0020.0002.007A][.187B.0020.0007.007A][.0000.0000.0002.0000] # <LATIN SMALL LETTER Z, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
-007A 005A 0073 ; [.187B.0020.0002.007A][.187B.0020.0007.005A][.0000.0000.0008.0000] # <LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
-007A 005A 0053 ; [.187B.0020.0002.007A][.187B.0020.0008.005A] # <LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
-005A 007A 0073 ; [.187B.0020.0008.005A][.187B.0020.0002.007A] # <LATIN CAPITAL LETTER Z, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
-005A 007A 0053 ; [.187B.0020.0008.005A][.187B.0020.0007.007A][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER Z, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
-005A 005A 0073 ; [.187B.0020.0008.005A][.187B.0020.0007.005A][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
-005A 005A 0053 ; [.187B.0020.0008.005A][.187B.0020.0008.005A] # <LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0063 0073 ; [.161E.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER S>
+0063 0053 ; [.161E.0020.0007.0063][.0000.0000.0002.0000] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER S>
+0043 0073 ; [.161E.0020.0007.0043][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER S>
+0043 0053 ; [.161E.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER S>
+0064 007A ; [.1632.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z>
+0064 005A ; [.1632.0020.0007.0064][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z>
+0044 007A ; [.1632.0020.0007.0044][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z>
+0044 005A ; [.1632.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z>
+0064 007A 0073 ; [.1633.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
+0064 007A 0053 ; [.1633.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
+0064 005A 0073 ; [.1633.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0007.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
+0064 005A 0053 ; [.1633.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0008.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
+0044 007A 0073 ; [.1633.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
+0044 007A 0053 ; [.1633.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
+0044 005A 0073 ; [.1633.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
+0044 005A 0053 ; [.1633.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
+0067 0079 ; [.1692.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER Y>
+0067 0059 ; [.1692.0020.0007.0067][.0000.0000.0002.0000] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER Y>
+0047 0079 ; [.1692.0020.0007.0047][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER Y>
+0047 0059 ; [.1692.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER Y>
+006C 0079 ; [.1712.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER Y>
+006C 0059 ; [.1712.0020.0007.006C][.0000.0000.0002.0000] # <LATIN SMALL LETTER L, LATIN CAPITAL LETTER Y>
+004C 0079 ; [.1712.0020.0007.004C][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER Y>
+004C 0059 ; [.1712.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER Y>
+006E 0079 ; [.1750.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
+006E 0059 ; [.1750.0020.0007.006E][.0000.0000.0002.0000] # <LATIN SMALL LETTER N, LATIN CAPITAL LETTER Y>
+004E 0079 ; [.1750.0020.0007.004E][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
+004E 0059 ; [.1750.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
+0073 007A ; [.17F4.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER Z>
+0073 005A ; [.17F4.0020.0007.0073][.0000.0000.0002.0000] # <LATIN SMALL LETTER S, LATIN CAPITAL LETTER Z>
+0053 007A ; [.17F4.0020.0007.0053][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER Z>
+0053 005A ; [.17F4.0020.0008.0053] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER Z>
+0074 0079 ; [.1817.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER Y>
+0074 0059 ; [.1817.0020.0007.0074][.0000.0000.0002.0000] # <LATIN SMALL LETTER T, LATIN CAPITAL LETTER Y>
+0054 0079 ; [.1817.0020.0007.0054][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER Y>
+0054 0059 ; [.1817.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER Y>
+007A 0073 ; [.1896.0020.0002.007A] # <LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
+007A 0053 ; [.1896.0020.0007.007A][.0000.0000.0002.0000] # <LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
+005A 0073 ; [.1896.0020.0007.005A][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
+005A 0053 ; [.1896.0020.0008.005A] # <LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
+00F6 ; [.1772.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1772.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1772.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1772.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1772.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1772.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+0151 ; [.1772.0021.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.1772.0021.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.1772.0021.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.1772.0021.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+00FC ; [.1837.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1837.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1837.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1837.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1837.0020.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1837.0020.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1837.0020.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1837.0020.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1837.0020.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1837.0020.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1837.0020.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1837.0020.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0171 ; [.1837.0021.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.1837.0021.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.1837.0021.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.1837.0021.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0063 0063 0073 ; [.161E.0020.0002.0063][.161E.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER C, LATIN SMALL LETTER S>
+0063 0063 0053 ; [.161E.0020.0002.0063][.161E.0020.0007.0063][.0000.0000.0002.0000] # <LATIN SMALL LETTER C, LATIN SMALL LETTER C, LATIN CAPITAL LETTER S>
+0063 0043 0073 ; [.161E.0020.0002.0063][.161E.0020.0007.0043][.0000.0000.0008.0000] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, LATIN SMALL LETTER S>
+0063 0043 0053 ; [.161E.0020.0002.0063][.161E.0020.0008.0043] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER S>
+0043 0063 0073 ; [.161E.0020.0008.0043][.161E.0020.0002.0063] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER C, LATIN SMALL LETTER S>
+0043 0063 0053 ; [.161E.0020.0008.0043][.161E.0020.0007.0063][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER C, LATIN CAPITAL LETTER S>
+0043 0043 0073 ; [.161E.0020.0008.0043][.161E.0020.0007.0043][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER C, LATIN SMALL LETTER S>
+0043 0043 0053 ; [.161E.0020.0008.0043][.161E.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER S>
+0064 0064 007A ; [.1632.0020.0002.0064][.1632.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z>
+0064 0064 005A ; [.1632.0020.0002.0064][.1632.0020.0007.0064][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z>
+0064 0044 007A ; [.1632.0020.0002.0064][.1632.0020.0007.0044][.0000.0000.0008.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z>
+0064 0044 005A ; [.1632.0020.0002.0064][.1632.0020.0008.0044] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z>
+0044 0064 007A ; [.1632.0020.0008.0044][.1632.0020.0002.0064] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z>
+0044 0064 005A ; [.1632.0020.0008.0044][.1632.0020.0007.0064][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z>
+0044 0044 007A ; [.1632.0020.0008.0044][.1632.0020.0007.0044][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z>
+0044 0044 005A ; [.1632.0020.0008.0044][.1632.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z>
+0064 0064 007A 0073 ; [.1633.0020.0002.0064][.1633.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
+0064 0064 007A 0053 ; [.1633.0020.0002.0064][.1633.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
+0064 0064 005A 0073 ; [.1633.0020.0002.0064][.1633.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0007.0000] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
+0064 0064 005A 0053 ; [.1633.0020.0002.0064][.1633.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0008.0000] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
+0064 0044 007A 0073 ; [.1633.0020.0002.0064][.1633.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
+0064 0044 007A 0053 ; [.1633.0020.0002.0064][.1633.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0007.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
+0064 0044 005A 0073 ; [.1633.0020.0002.0064][.1633.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0008.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
+0064 0044 005A 0053 ; [.1633.0020.0002.0064][.1633.0020.0008.0044] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
+0044 0064 007A 0073 ; [.1633.0020.0008.0044][.1633.0020.0002.0064] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
+0044 0064 007A 0053 ; [.1633.0020.0008.0044][.1633.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
+0044 0064 005A 0073 ; [.1633.0020.0008.0044][.1633.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
+0044 0064 005A 0053 ; [.1633.0020.0008.0044][.1633.0020.0007.0064][.0000.0000.0002.0000][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
+0044 0044 007A 0073 ; [.1633.0020.0008.0044][.1633.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
+0044 0044 007A 0053 ; [.1633.0020.0008.0044][.1633.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0007.0000] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
+0044 0044 005A 0073 ; [.1633.0020.0008.0044][.1633.0020.0007.0044][.0000.0000.0008.0000][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
+0044 0044 005A 0053 ; [.1633.0020.0008.0044][.1633.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
+0067 0067 0079 ; [.1692.0020.0002.0067][.1692.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER G, LATIN SMALL LETTER Y>
+0067 0067 0059 ; [.1692.0020.0002.0067][.1692.0020.0007.0067][.0000.0000.0002.0000] # <LATIN SMALL LETTER G, LATIN SMALL LETTER G, LATIN CAPITAL LETTER Y>
+0067 0047 0079 ; [.1692.0020.0002.0067][.1692.0020.0007.0047][.0000.0000.0008.0000] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, LATIN SMALL LETTER Y>
+0067 0047 0059 ; [.1692.0020.0002.0067][.1692.0020.0008.0047] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER Y>
+0047 0067 0079 ; [.1692.0020.0008.0047][.1692.0020.0002.0067] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER G, LATIN SMALL LETTER Y>
+0047 0067 0059 ; [.1692.0020.0008.0047][.1692.0020.0007.0067][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER G, LATIN CAPITAL LETTER Y>
+0047 0047 0079 ; [.1692.0020.0008.0047][.1692.0020.0007.0047][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER G, LATIN SMALL LETTER Y>
+0047 0047 0059 ; [.1692.0020.0008.0047][.1692.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER Y>
+006C 006C 0079 ; [.1712.0020.0002.006C][.1712.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L, LATIN SMALL LETTER Y>
+006C 006C 0059 ; [.1712.0020.0002.006C][.1712.0020.0007.006C][.0000.0000.0002.0000] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L, LATIN CAPITAL LETTER Y>
+006C 004C 0079 ; [.1712.0020.0002.006C][.1712.0020.0007.004C][.0000.0000.0008.0000] # <LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, LATIN SMALL LETTER Y>
+006C 004C 0059 ; [.1712.0020.0002.006C][.1712.0020.0008.004C] # <LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER Y>
+004C 006C 0079 ; [.1712.0020.0008.004C][.1712.0020.0002.006C] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L, LATIN SMALL LETTER Y>
+004C 006C 0059 ; [.1712.0020.0008.004C][.1712.0020.0007.006C][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L, LATIN CAPITAL LETTER Y>
+004C 004C 0079 ; [.1712.0020.0008.004C][.1712.0020.0007.004C][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L, LATIN SMALL LETTER Y>
+004C 004C 0059 ; [.1712.0020.0008.004C][.1712.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER Y>
+006E 006E 0079 ; [.1750.0020.0002.006E][.1750.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
+006E 006E 0059 ; [.1750.0020.0002.006E][.1750.0020.0007.006E][.0000.0000.0002.0000] # <LATIN SMALL LETTER N, LATIN SMALL LETTER N, LATIN CAPITAL LETTER Y>
+006E 004E 0079 ; [.1750.0020.0002.006E][.1750.0020.0007.004E][.0000.0000.0008.0000] # <LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
+006E 004E 0059 ; [.1750.0020.0002.006E][.1750.0020.0008.004E] # <LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
+004E 006E 0079 ; [.1750.0020.0008.004E][.1750.0020.0002.006E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
+004E 006E 0059 ; [.1750.0020.0008.004E][.1750.0020.0007.006E][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER N, LATIN CAPITAL LETTER Y>
+004E 004E 0079 ; [.1750.0020.0008.004E][.1750.0020.0007.004E][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
+004E 004E 0059 ; [.1750.0020.0008.004E][.1750.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
+0073 0073 007A ; [.17F4.0020.0002.0073][.17F4.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER S, LATIN SMALL LETTER Z>
+0073 0073 005A ; [.17F4.0020.0002.0073][.17F4.0020.0007.0073][.0000.0000.0002.0000] # <LATIN SMALL LETTER S, LATIN SMALL LETTER S, LATIN CAPITAL LETTER Z>
+0073 0053 007A ; [.17F4.0020.0002.0073][.17F4.0020.0007.0053][.0000.0000.0008.0000] # <LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, LATIN SMALL LETTER Z>
+0073 0053 005A ; [.17F4.0020.0002.0073][.17F4.0020.0008.0053] # <LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER Z>
+0053 0073 007A ; [.17F4.0020.0008.0053][.17F4.0020.0002.0073] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER S, LATIN SMALL LETTER Z>
+0053 0073 005A ; [.17F4.0020.0008.0053][.17F4.0020.0007.0073][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER S, LATIN CAPITAL LETTER Z>
+0053 0053 007A ; [.17F4.0020.0008.0053][.17F4.0020.0007.0053][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER S, LATIN SMALL LETTER Z>
+0053 0053 005A ; [.17F4.0020.0008.0053][.17F4.0020.0008.0053] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER Z>
+0074 0074 0079 ; [.1817.0020.0002.0074][.1817.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER T, LATIN SMALL LETTER Y>
+0074 0074 0059 ; [.1817.0020.0002.0074][.1817.0020.0007.0074][.0000.0000.0002.0000] # <LATIN SMALL LETTER T, LATIN SMALL LETTER T, LATIN CAPITAL LETTER Y>
+0074 0054 0079 ; [.1817.0020.0002.0074][.1817.0020.0007.0054][.0000.0000.0008.0000] # <LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, LATIN SMALL LETTER Y>
+0074 0054 0059 ; [.1817.0020.0002.0074][.1817.0020.0008.0054] # <LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER Y>
+0054 0074 0079 ; [.1817.0020.0008.0054][.1817.0020.0002.0074] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER T, LATIN SMALL LETTER Y>
+0054 0074 0059 ; [.1817.0020.0008.0054][.1817.0020.0007.0074][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER T, LATIN CAPITAL LETTER Y>
+0054 0054 0079 ; [.1817.0020.0008.0054][.1817.0020.0007.0054][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER T, LATIN SMALL LETTER Y>
+0054 0054 0059 ; [.1817.0020.0008.0054][.1817.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER Y>
+007A 007A 0073 ; [.1896.0020.0002.007A][.1896.0020.0002.007A] # <LATIN SMALL LETTER Z, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
+007A 007A 0053 ; [.1896.0020.0002.007A][.1896.0020.0007.007A][.0000.0000.0002.0000] # <LATIN SMALL LETTER Z, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
+007A 005A 0073 ; [.1896.0020.0002.007A][.1896.0020.0007.005A][.0000.0000.0008.0000] # <LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
+007A 005A 0053 ; [.1896.0020.0002.007A][.1896.0020.0008.005A] # <LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
+005A 007A 0073 ; [.1896.0020.0008.005A][.1896.0020.0002.007A] # <LATIN CAPITAL LETTER Z, LATIN SMALL LETTER Z, LATIN SMALL LETTER S>
+005A 007A 0053 ; [.1896.0020.0008.005A][.1896.0020.0007.007A][.0000.0000.0002.0000] # <LATIN CAPITAL LETTER Z, LATIN SMALL LETTER Z, LATIN CAPITAL LETTER S>
+005A 005A 0073 ; [.1896.0020.0008.005A][.1896.0020.0007.005A][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER Z, LATIN SMALL LETTER S>
+005A 005A 0053 ; [.1896.0020.0008.005A][.1896.0020.0008.005A] # <LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER S>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hy.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hy.pl
index 4da170550d0..31255769115 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hy.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/hy.pl
@@ -1,7 +1,9 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0587 ; [.1C29.0020.0002.0587][.FFF1.0000.0000.0000] # ARMENIAN SMALL LIGATURE ECH YIWN
-0535 0582 ; [.1C29.0020.0008.0535][.FFF1.0000.0000.0000] # <ARMENIAN CAPITAL LETTER ECH, ARMENIAN SMALL LETTER YIWN>
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0587 ; [.1C44.0020.0002.0587][.FFF1.0000.0000.0000] # ARMENIAN SMALL LIGATURE ECH YIWN
+0584 ; [.1C44.0020.0002.0584][.FFF0.0000.0000.0000] # ARMENIAN SMALL LETTER KEH
+0535 0582 ; [.1C44.0020.0008.0535][.FFF1.0000.0000.0000] # <ARMENIAN CAPITAL LETTER ECH, ARMENIAN SMALL LETTER YIWN>
+0554 ; [.1C44.0020.0008.0554][.FFF0.0000.0000.0000] # ARMENIAN CAPITAL LETTER KEH
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ig.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ig.pl
index e7410ca3674..f0697241cec 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ig.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ig.pl
@@ -1,54 +1,54 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0063 0068 ; [.15EB.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
-0043 0068 ; [.15EB.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
-0043 0048 ; [.15EB.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
-0067 0062 ; [.1677.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER B>
-0047 0062 ; [.1677.0020.0007.0047] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER B>
-0047 0042 ; [.1677.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER B>
-0067 0068 ; [.1678.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER H>
-0047 0068 ; [.1678.0020.0007.0047] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER H>
-0047 0048 ; [.1678.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER H>
-0067 0077 ; [.1679.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER W>
-0047 0077 ; [.1679.0020.0007.0047] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER W>
-0047 0057 ; [.1679.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER W>
-1ECB ; [.16B3.0020.0002.1ECB] # LATIN SMALL LETTER I WITH DOT BELOW
-0069 0323 ; [.16B3.0020.0002.1ECB] # LATIN SMALL LETTER I WITH DOT BELOW
-1ECA ; [.16B3.0020.0008.1ECA] # LATIN CAPITAL LETTER I WITH DOT BELOW
-0049 0323 ; [.16B3.0020.0008.1ECA] # LATIN CAPITAL LETTER I WITH DOT BELOW
-006B 0070 ; [.16E5.0020.0002.006B] # <LATIN SMALL LETTER K, LATIN SMALL LETTER P>
-004B 0070 ; [.16E5.0020.0007.004B] # <LATIN CAPITAL LETTER K, LATIN SMALL LETTER P>
-004B 0050 ; [.16E5.0020.0008.004B] # <LATIN CAPITAL LETTER K, LATIN CAPITAL LETTER P>
-006B 0077 ; [.16E6.0020.0002.006B] # <LATIN SMALL LETTER K, LATIN SMALL LETTER W>
-004B 0077 ; [.16E6.0020.0007.004B] # <LATIN CAPITAL LETTER K, LATIN SMALL LETTER W>
-004B 0057 ; [.16E6.0020.0008.004B] # <LATIN CAPITAL LETTER K, LATIN CAPITAL LETTER W>
-1E45 ; [.1735.0020.0002.1E45] # LATIN SMALL LETTER N WITH DOT ABOVE
-006E 0307 ; [.1735.0020.0002.1E45] # LATIN SMALL LETTER N WITH DOT ABOVE
-1E44 ; [.1735.0020.0008.1E44] # LATIN CAPITAL LETTER N WITH DOT ABOVE
-004E 0307 ; [.1735.0020.0008.1E44] # LATIN CAPITAL LETTER N WITH DOT ABOVE
-006E 0077 ; [.1736.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER W>
-004E 0077 ; [.1736.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER W>
-004E 0057 ; [.1736.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER W>
-006E 0079 ; [.1737.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
-004E 0079 ; [.1737.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
-004E 0059 ; [.1737.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
-1ECD ; [.1757.0020.0002.1ECD] # LATIN SMALL LETTER O WITH DOT BELOW
-006F 0323 ; [.1757.0020.0002.1ECD] # LATIN SMALL LETTER O WITH DOT BELOW
-1ECC ; [.1757.0020.0008.1ECC] # LATIN CAPITAL LETTER O WITH DOT BELOW
-004F 0323 ; [.1757.0020.0008.1ECC] # LATIN CAPITAL LETTER O WITH DOT BELOW
-1ED9 ; [.1757.0020.0002.1ECD][.0000.003C.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED8 ; [.1757.0020.0008.1ECC][.0000.003C.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1EE3 ; [.1757.0020.0002.1ECD][.0000.0068.0002.031B] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
-1EE2 ; [.1757.0020.0008.1ECC][.0000.0068.0002.031B] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-0073 0068 ; [.17D9.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
-0053 0068 ; [.17D9.0020.0007.0053] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER H>
-0053 0048 ; [.17D9.0020.0008.0053] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER H>
-1EE5 ; [.181C.0020.0002.1EE5] # LATIN SMALL LETTER U WITH DOT BELOW
-0075 0323 ; [.181C.0020.0002.1EE5] # LATIN SMALL LETTER U WITH DOT BELOW
-1EE4 ; [.181C.0020.0008.1EE4] # LATIN CAPITAL LETTER U WITH DOT BELOW
-0055 0323 ; [.181C.0020.0008.1EE4] # LATIN CAPITAL LETTER U WITH DOT BELOW
-1EF1 ; [.181C.0020.0002.1EE5][.0000.0068.0002.031B] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
-1EF0 ; [.181C.0020.0008.1EE4][.0000.0068.0002.031B] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0063 0068 ; [.1606.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0043 0068 ; [.1606.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
+0043 0048 ; [.1606.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
+0067 0062 ; [.1692.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER B>
+0047 0062 ; [.1692.0020.0007.0047] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER B>
+0047 0042 ; [.1692.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER B>
+0067 0068 ; [.1693.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER H>
+0047 0068 ; [.1693.0020.0007.0047] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER H>
+0047 0048 ; [.1693.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER H>
+0067 0077 ; [.1694.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER W>
+0047 0077 ; [.1694.0020.0007.0047] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER W>
+0047 0057 ; [.1694.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER W>
+1ECB ; [.16CE.0020.0002.1ECB] # LATIN SMALL LETTER I WITH DOT BELOW
+0069 0323 ; [.16CE.0020.0002.1ECB] # LATIN SMALL LETTER I WITH DOT BELOW
+1ECA ; [.16CE.0020.0008.1ECA] # LATIN CAPITAL LETTER I WITH DOT BELOW
+0049 0323 ; [.16CE.0020.0008.1ECA] # LATIN CAPITAL LETTER I WITH DOT BELOW
+006B 0070 ; [.1700.0020.0002.006B] # <LATIN SMALL LETTER K, LATIN SMALL LETTER P>
+004B 0070 ; [.1700.0020.0007.004B] # <LATIN CAPITAL LETTER K, LATIN SMALL LETTER P>
+004B 0050 ; [.1700.0020.0008.004B] # <LATIN CAPITAL LETTER K, LATIN CAPITAL LETTER P>
+006B 0077 ; [.1701.0020.0002.006B] # <LATIN SMALL LETTER K, LATIN SMALL LETTER W>
+004B 0077 ; [.1701.0020.0007.004B] # <LATIN CAPITAL LETTER K, LATIN SMALL LETTER W>
+004B 0057 ; [.1701.0020.0008.004B] # <LATIN CAPITAL LETTER K, LATIN CAPITAL LETTER W>
+1E45 ; [.1750.0020.0002.1E45] # LATIN SMALL LETTER N WITH DOT ABOVE
+006E 0307 ; [.1750.0020.0002.1E45] # LATIN SMALL LETTER N WITH DOT ABOVE
+1E44 ; [.1750.0020.0008.1E44] # LATIN CAPITAL LETTER N WITH DOT ABOVE
+004E 0307 ; [.1750.0020.0008.1E44] # LATIN CAPITAL LETTER N WITH DOT ABOVE
+006E 0077 ; [.1751.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER W>
+004E 0077 ; [.1751.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER W>
+004E 0057 ; [.1751.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER W>
+006E 0079 ; [.1752.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
+004E 0079 ; [.1752.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
+004E 0059 ; [.1752.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
+1ECD ; [.1772.0020.0002.1ECD] # LATIN SMALL LETTER O WITH DOT BELOW
+006F 0323 ; [.1772.0020.0002.1ECD] # LATIN SMALL LETTER O WITH DOT BELOW
+1ECC ; [.1772.0020.0008.1ECC] # LATIN CAPITAL LETTER O WITH DOT BELOW
+004F 0323 ; [.1772.0020.0008.1ECC] # LATIN CAPITAL LETTER O WITH DOT BELOW
+1ED9 ; [.1772.0020.0002.1ECD][.0000.003C.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.1772.0020.0008.1ECC][.0000.003C.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EE3 ; [.1772.0020.0002.1ECD][.0000.0068.0002.031B] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE2 ; [.1772.0020.0008.1ECC][.0000.0068.0002.031B] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+0073 0068 ; [.17F4.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
+0053 0068 ; [.17F4.0020.0007.0053] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER H>
+0053 0048 ; [.17F4.0020.0008.0053] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER H>
+1EE5 ; [.1837.0020.0002.1EE5] # LATIN SMALL LETTER U WITH DOT BELOW
+0075 0323 ; [.1837.0020.0002.1EE5] # LATIN SMALL LETTER U WITH DOT BELOW
+1EE4 ; [.1837.0020.0008.1EE4] # LATIN CAPITAL LETTER U WITH DOT BELOW
+0055 0323 ; [.1837.0020.0008.1EE4] # LATIN CAPITAL LETTER U WITH DOT BELOW
+1EF1 ; [.1837.0020.0002.1EE5][.0000.0068.0002.031B] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF0 ; [.1837.0020.0008.1EE4][.0000.0068.0002.031B] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/is.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/is.pl
index dd183965d1d..e315806e36a 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/is.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/is.pl
@@ -1,79 +1,79 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-00E1 ; [.15E9.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0301 ; [.15E9.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0341 ; [.15E9.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-00C1 ; [.15E9.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0301 ; [.15E9.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0341 ; [.15E9.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0111 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0064 0335 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-0044 0335 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-00F0 ; [.1617.0020.0002.00F0] # LATIN SMALL LETTER ETH
-00D0 ; [.1617.0020.0008.00D0] # LATIN CAPITAL LETTER ETH
-00E9 ; [.1668.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0301 ; [.1668.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0341 ; [.1668.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-00C9 ; [.1668.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0301 ; [.1668.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0341 ; [.1668.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-00ED ; [.16CA.0020.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0301 ; [.16CA.0020.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0341 ; [.16CA.0020.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-00CD ; [.16CA.0020.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0301 ; [.16CA.0020.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0341 ; [.16CA.0020.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-00F3 ; [.177A.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0301 ; [.177A.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0341 ; [.177A.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-00D3 ; [.177A.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0301 ; [.177A.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0341 ; [.177A.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-00FA ; [.1843.0020.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0301 ; [.1843.0020.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0341 ; [.1843.0020.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-00DA ; [.1843.0020.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0301 ; [.1843.0020.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0341 ; [.1843.0020.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-00FD ; [.1879.0020.0002.00FD] # LATIN SMALL LETTER Y WITH ACUTE
-0079 0301 ; [.1879.0020.0002.00FD] # LATIN SMALL LETTER Y WITH ACUTE
-0079 0341 ; [.1879.0020.0002.00FD] # LATIN SMALL LETTER Y WITH ACUTE
-00DD ; [.1879.0020.0008.00DD] # LATIN CAPITAL LETTER Y WITH ACUTE
-0059 0301 ; [.1879.0020.0008.00DD] # LATIN CAPITAL LETTER Y WITH ACUTE
-0059 0341 ; [.1879.0020.0008.00DD] # LATIN CAPITAL LETTER Y WITH ACUTE
-00E6 ; [.18EB.0020.0002.00E6] # LATIN SMALL LETTER AE
-00C6 ; [.18EB.0020.0008.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.18EB.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.18EB.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.18EB.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.18EB.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.18EB.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
-00E4 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.18EB.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.18EB.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-00F6 ; [.18EC.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.18EC.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.18EC.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.18EC.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.18EC.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.18EC.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-00F8 ; [.18EC.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-006F 0338 ; [.18EC.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.18EC.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-004F 0338 ; [.18EC.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.18EC.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.18EC.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-00E5 ; [.18ED.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-0061 030A ; [.18ED.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.18ED.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-0041 030A ; [.18ED.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.18ED.0020.0008.00C5] # ANGSTROM SIGN
-01FB ; [.18ED.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.18ED.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00E1 ; [.1604.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0301 ; [.1604.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.1604.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.1604.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0301 ; [.1604.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.1604.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0111 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1632.0020.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1632.0020.0008.00D0] # LATIN CAPITAL LETTER ETH
+00E9 ; [.1683.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0301 ; [.1683.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.1683.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.1683.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0301 ; [.1683.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.1683.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+00ED ; [.16E5.0020.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0301 ; [.16E5.0020.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0341 ; [.16E5.0020.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.16E5.0020.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0301 ; [.16E5.0020.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0341 ; [.16E5.0020.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+00F3 ; [.1795.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.1795.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.1795.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1795.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.1795.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.1795.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+00FA ; [.185E.0020.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0301 ; [.185E.0020.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0341 ; [.185E.0020.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.185E.0020.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0301 ; [.185E.0020.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0341 ; [.185E.0020.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+00FD ; [.1894.0020.0002.00FD] # LATIN SMALL LETTER Y WITH ACUTE
+0079 0301 ; [.1894.0020.0002.00FD] # LATIN SMALL LETTER Y WITH ACUTE
+0079 0341 ; [.1894.0020.0002.00FD] # LATIN SMALL LETTER Y WITH ACUTE
+00DD ; [.1894.0020.0008.00DD] # LATIN CAPITAL LETTER Y WITH ACUTE
+0059 0301 ; [.1894.0020.0008.00DD] # LATIN CAPITAL LETTER Y WITH ACUTE
+0059 0341 ; [.1894.0020.0008.00DD] # LATIN CAPITAL LETTER Y WITH ACUTE
+00E6 ; [.1906.0020.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1906.0020.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1906.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1906.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1906.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1906.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1906.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00E4 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1906.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1906.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00F6 ; [.1907.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1907.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1907.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1907.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1907.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1907.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00F8 ; [.1907.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1907.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1907.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1907.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1907.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1907.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00E5 ; [.1908.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1908.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1908.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1908.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1908.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.1908.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1908.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ja.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ja.pl
index 670814d3738..a327ebde706 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ja.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ja.pl
@@ -1,101 +1,101 @@
use Unicode::Collate::CJK::JISX0208;
+{
- locale_version => 0.88,
+ locale_version => 0.93,
overrideCJK => \&Unicode::Collate::CJK::JISX0208::weightJISX0208,
- entry => <<'ENTRY', # for DUCET v6.1.0
-3041 ; [.32A0.0020.000F.3041] # HIRAGANA LETTER SMALL A
-3042 ; [.32A0.0020.0011.3042] # HIRAGANA LETTER A
-3043 ; [.32A1.0020.000F.3043] # HIRAGANA LETTER SMALL I
-3044 ; [.32A1.0020.0011.3044] # HIRAGANA LETTER I
-3045 ; [.32A2.0020.000F.3045] # HIRAGANA LETTER SMALL U
-3046 ; [.32A2.0020.0011.3046] # HIRAGANA LETTER U
-3047 ; [.32A4.0020.000F.3047] # HIRAGANA LETTER SMALL E
-3048 ; [.32A4.0020.0011.3048] # HIRAGANA LETTER E
-3049 ; [.32A5.0020.000F.3049] # HIRAGANA LETTER SMALL O
-304A ; [.32A5.0020.0011.304A] # HIRAGANA LETTER O
-304B ; [.32A6.0020.0011.304B] # HIRAGANA LETTER KA
-304C ; [.32A6.0020.0011.304B][.0000.0128.0002.3099] # HIRAGANA LETTER GA
-304D ; [.32A7.0020.0011.304D] # HIRAGANA LETTER KI
-304E ; [.32A7.0020.0011.304D][.0000.0128.0002.3099] # HIRAGANA LETTER GI
-304F ; [.32A8.0020.0011.304F] # HIRAGANA LETTER KU
-3050 ; [.32A8.0020.0011.304F][.0000.0128.0002.3099] # HIRAGANA LETTER GU
-3051 ; [.32A9.0020.0011.3051] # HIRAGANA LETTER KE
-3052 ; [.32A9.0020.0011.3051][.0000.0128.0002.3099] # HIRAGANA LETTER GE
-3053 ; [.32AA.0020.0011.3053] # HIRAGANA LETTER KO
-3054 ; [.32AA.0020.0011.3053][.0000.0128.0002.3099] # HIRAGANA LETTER GO
-3055 ; [.32AB.0020.0011.3055] # HIRAGANA LETTER SA
-3056 ; [.32AB.0020.0011.3055][.0000.0128.0002.3099] # HIRAGANA LETTER ZA
-3057 ; [.32AC.0020.0011.3057] # HIRAGANA LETTER SI
-3058 ; [.32AC.0020.0011.3057][.0000.0128.0002.3099] # HIRAGANA LETTER ZI
-3059 ; [.32AD.0020.0011.3059] # HIRAGANA LETTER SU
-305A ; [.32AD.0020.0011.3059][.0000.0128.0002.3099] # HIRAGANA LETTER ZU
-305B ; [.32AE.0020.0011.305B] # HIRAGANA LETTER SE
-305C ; [.32AE.0020.0011.305B][.0000.0128.0002.3099] # HIRAGANA LETTER ZE
-305D ; [.32AF.0020.0011.305D] # HIRAGANA LETTER SO
-305E ; [.32AF.0020.0011.305D][.0000.0128.0002.3099] # HIRAGANA LETTER ZO
-305F ; [.32B0.0020.0011.305F] # HIRAGANA LETTER TA
-3060 ; [.32B0.0020.0011.305F][.0000.0128.0002.3099] # HIRAGANA LETTER DA
-3061 ; [.32B1.0020.0011.3061] # HIRAGANA LETTER TI
-3062 ; [.32B1.0020.0011.3061][.0000.0128.0002.3099] # HIRAGANA LETTER DI
-3063 ; [.32B2.0020.000F.3063] # HIRAGANA LETTER SMALL TU
-3064 ; [.32B2.0020.0011.3064] # HIRAGANA LETTER TU
-3065 ; [.32B2.0020.0011.3064][.0000.0128.0002.3099] # HIRAGANA LETTER DU
-3066 ; [.32B3.0020.0011.3066] # HIRAGANA LETTER TE
-3067 ; [.32B3.0020.0011.3066][.0000.0128.0002.3099] # HIRAGANA LETTER DE
-3068 ; [.32B4.0020.0011.3068] # HIRAGANA LETTER TO
-3069 ; [.32B4.0020.0011.3068][.0000.0128.0002.3099] # HIRAGANA LETTER DO
-306A ; [.32B5.0020.0011.306A] # HIRAGANA LETTER NA
-306B ; [.32B6.0020.0011.306B] # HIRAGANA LETTER NI
-306C ; [.32B7.0020.0011.306C] # HIRAGANA LETTER NU
-306D ; [.32B8.0020.0011.306D] # HIRAGANA LETTER NE
-306E ; [.32B9.0020.0011.306E] # HIRAGANA LETTER NO
-306F ; [.32BA.0020.0011.306F] # HIRAGANA LETTER HA
-3070 ; [.32BA.0020.0011.306F][.0000.0128.0002.3099] # HIRAGANA LETTER BA
-3071 ; [.32BA.0020.0011.306F][.0000.0129.0002.309A] # HIRAGANA LETTER PA
-3072 ; [.32BB.0020.0011.3072] # HIRAGANA LETTER HI
-3073 ; [.32BB.0020.0011.3072][.0000.0128.0002.3099] # HIRAGANA LETTER BI
-3074 ; [.32BB.0020.0011.3072][.0000.0129.0002.309A] # HIRAGANA LETTER PI
-3075 ; [.32BC.0020.0011.3075] # HIRAGANA LETTER HU
-3076 ; [.32BC.0020.0011.3075][.0000.0128.0002.3099] # HIRAGANA LETTER BU
-3077 ; [.32BC.0020.0011.3075][.0000.0129.0002.309A] # HIRAGANA LETTER PU
-3078 ; [.32BD.0020.0011.3078] # HIRAGANA LETTER HE
-3079 ; [.32BD.0020.0011.3078][.0000.0128.0002.3099] # HIRAGANA LETTER BE
-307A ; [.32BD.0020.0011.3078][.0000.0129.0002.309A] # HIRAGANA LETTER PE
-307B ; [.32BE.0020.0011.307B] # HIRAGANA LETTER HO
-307C ; [.32BE.0020.0011.307B][.0000.0128.0002.3099] # HIRAGANA LETTER BO
-307D ; [.32BE.0020.0011.307B][.0000.0129.0002.309A] # HIRAGANA LETTER PO
-307E ; [.32BF.0020.0011.307E] # HIRAGANA LETTER MA
-307F ; [.32C0.0020.0011.307F] # HIRAGANA LETTER MI
-3080 ; [.32C1.0020.0011.3080] # HIRAGANA LETTER MU
-3081 ; [.32C2.0020.0011.3081] # HIRAGANA LETTER ME
-3082 ; [.32C3.0020.0011.3082] # HIRAGANA LETTER MO
-3083 ; [.32C4.0020.000F.3083] # HIRAGANA LETTER SMALL YA
-3084 ; [.32C4.0020.0011.3084] # HIRAGANA LETTER YA
-3085 ; [.32C5.0020.000F.3085] # HIRAGANA LETTER SMALL YU
-3086 ; [.32C5.0020.0011.3086] # HIRAGANA LETTER YU
-3087 ; [.32C7.0020.000F.3087] # HIRAGANA LETTER SMALL YO
-3088 ; [.32C7.0020.0011.3088] # HIRAGANA LETTER YO
-3089 ; [.32C8.0020.0011.3089] # HIRAGANA LETTER RA
-308A ; [.32C9.0020.0011.308A] # HIRAGANA LETTER RI
-308B ; [.32CA.0020.0011.308B] # HIRAGANA LETTER RU
-308C ; [.32CB.0020.0011.308C] # HIRAGANA LETTER RE
-308D ; [.32CC.0020.0011.308D] # HIRAGANA LETTER RO
-308E ; [.32CD.0020.000F.308E] # HIRAGANA LETTER SMALL WA
-308F ; [.32CD.0020.0011.308F] # HIRAGANA LETTER WA
-3090 ; [.32CE.0020.0011.3090] # HIRAGANA LETTER WI
-3091 ; [.32CF.0020.0011.3091] # HIRAGANA LETTER WE
-3092 ; [.32D0.0020.0011.3092] # HIRAGANA LETTER WO
-3093 ; [.32D1.0020.0011.3093] # HIRAGANA LETTER N
-3094 ; [.32A2.0020.0011.3046][.0000.0128.0002.3099] # HIRAGANA LETTER VU
-3095 ; [.32A6.0020.000F.3095] # HIRAGANA LETTER SMALL KA
-3096 ; [.32A9.0020.000F.3096] # HIRAGANA LETTER SMALL KE
-309D ; [.15A1.0020.0002.309D] # HIRAGANA ITERATION MARK
-309E ; [.15A1.0020.0002.309D][.0000.0128.0002.3099] # HIRAGANA VOICED ITERATION MARK
+ entry => <<'ENTRY', # for DUCET v6.2.0
+3041 ; [.32BB.0020.000F.3041] # HIRAGANA LETTER SMALL A
+3042 ; [.32BB.0020.0011.3042] # HIRAGANA LETTER A
+3043 ; [.32BC.0020.000F.3043] # HIRAGANA LETTER SMALL I
+3044 ; [.32BC.0020.0011.3044] # HIRAGANA LETTER I
+3045 ; [.32BD.0020.000F.3045] # HIRAGANA LETTER SMALL U
+3046 ; [.32BD.0020.0011.3046] # HIRAGANA LETTER U
+3047 ; [.32BF.0020.000F.3047] # HIRAGANA LETTER SMALL E
+3048 ; [.32BF.0020.0011.3048] # HIRAGANA LETTER E
+3049 ; [.32C0.0020.000F.3049] # HIRAGANA LETTER SMALL O
+304A ; [.32C0.0020.0011.304A] # HIRAGANA LETTER O
+304B ; [.32C1.0020.0011.304B] # HIRAGANA LETTER KA
+304C ; [.32C1.0020.0011.304B][.0000.0128.0002.3099] # HIRAGANA LETTER GA
+304D ; [.32C2.0020.0011.304D] # HIRAGANA LETTER KI
+304E ; [.32C2.0020.0011.304D][.0000.0128.0002.3099] # HIRAGANA LETTER GI
+304F ; [.32C3.0020.0011.304F] # HIRAGANA LETTER KU
+3050 ; [.32C3.0020.0011.304F][.0000.0128.0002.3099] # HIRAGANA LETTER GU
+3051 ; [.32C4.0020.0011.3051] # HIRAGANA LETTER KE
+3052 ; [.32C4.0020.0011.3051][.0000.0128.0002.3099] # HIRAGANA LETTER GE
+3053 ; [.32C5.0020.0011.3053] # HIRAGANA LETTER KO
+3054 ; [.32C5.0020.0011.3053][.0000.0128.0002.3099] # HIRAGANA LETTER GO
+3055 ; [.32C6.0020.0011.3055] # HIRAGANA LETTER SA
+3056 ; [.32C6.0020.0011.3055][.0000.0128.0002.3099] # HIRAGANA LETTER ZA
+3057 ; [.32C7.0020.0011.3057] # HIRAGANA LETTER SI
+3058 ; [.32C7.0020.0011.3057][.0000.0128.0002.3099] # HIRAGANA LETTER ZI
+3059 ; [.32C8.0020.0011.3059] # HIRAGANA LETTER SU
+305A ; [.32C8.0020.0011.3059][.0000.0128.0002.3099] # HIRAGANA LETTER ZU
+305B ; [.32C9.0020.0011.305B] # HIRAGANA LETTER SE
+305C ; [.32C9.0020.0011.305B][.0000.0128.0002.3099] # HIRAGANA LETTER ZE
+305D ; [.32CA.0020.0011.305D] # HIRAGANA LETTER SO
+305E ; [.32CA.0020.0011.305D][.0000.0128.0002.3099] # HIRAGANA LETTER ZO
+305F ; [.32CB.0020.0011.305F] # HIRAGANA LETTER TA
+3060 ; [.32CB.0020.0011.305F][.0000.0128.0002.3099] # HIRAGANA LETTER DA
+3061 ; [.32CC.0020.0011.3061] # HIRAGANA LETTER TI
+3062 ; [.32CC.0020.0011.3061][.0000.0128.0002.3099] # HIRAGANA LETTER DI
+3063 ; [.32CD.0020.000F.3063] # HIRAGANA LETTER SMALL TU
+3064 ; [.32CD.0020.0011.3064] # HIRAGANA LETTER TU
+3065 ; [.32CD.0020.0011.3064][.0000.0128.0002.3099] # HIRAGANA LETTER DU
+3066 ; [.32CE.0020.0011.3066] # HIRAGANA LETTER TE
+3067 ; [.32CE.0020.0011.3066][.0000.0128.0002.3099] # HIRAGANA LETTER DE
+3068 ; [.32CF.0020.0011.3068] # HIRAGANA LETTER TO
+3069 ; [.32CF.0020.0011.3068][.0000.0128.0002.3099] # HIRAGANA LETTER DO
+306A ; [.32D0.0020.0011.306A] # HIRAGANA LETTER NA
+306B ; [.32D1.0020.0011.306B] # HIRAGANA LETTER NI
+306C ; [.32D2.0020.0011.306C] # HIRAGANA LETTER NU
+306D ; [.32D3.0020.0011.306D] # HIRAGANA LETTER NE
+306E ; [.32D4.0020.0011.306E] # HIRAGANA LETTER NO
+306F ; [.32D5.0020.0011.306F] # HIRAGANA LETTER HA
+3070 ; [.32D5.0020.0011.306F][.0000.0128.0002.3099] # HIRAGANA LETTER BA
+3071 ; [.32D5.0020.0011.306F][.0000.0129.0002.309A] # HIRAGANA LETTER PA
+3072 ; [.32D6.0020.0011.3072] # HIRAGANA LETTER HI
+3073 ; [.32D6.0020.0011.3072][.0000.0128.0002.3099] # HIRAGANA LETTER BI
+3074 ; [.32D6.0020.0011.3072][.0000.0129.0002.309A] # HIRAGANA LETTER PI
+3075 ; [.32D7.0020.0011.3075] # HIRAGANA LETTER HU
+3076 ; [.32D7.0020.0011.3075][.0000.0128.0002.3099] # HIRAGANA LETTER BU
+3077 ; [.32D7.0020.0011.3075][.0000.0129.0002.309A] # HIRAGANA LETTER PU
+3078 ; [.32D8.0020.0011.3078] # HIRAGANA LETTER HE
+3079 ; [.32D8.0020.0011.3078][.0000.0128.0002.3099] # HIRAGANA LETTER BE
+307A ; [.32D8.0020.0011.3078][.0000.0129.0002.309A] # HIRAGANA LETTER PE
+307B ; [.32D9.0020.0011.307B] # HIRAGANA LETTER HO
+307C ; [.32D9.0020.0011.307B][.0000.0128.0002.3099] # HIRAGANA LETTER BO
+307D ; [.32D9.0020.0011.307B][.0000.0129.0002.309A] # HIRAGANA LETTER PO
+307E ; [.32DA.0020.0011.307E] # HIRAGANA LETTER MA
+307F ; [.32DB.0020.0011.307F] # HIRAGANA LETTER MI
+3080 ; [.32DC.0020.0011.3080] # HIRAGANA LETTER MU
+3081 ; [.32DD.0020.0011.3081] # HIRAGANA LETTER ME
+3082 ; [.32DE.0020.0011.3082] # HIRAGANA LETTER MO
+3083 ; [.32DF.0020.000F.3083] # HIRAGANA LETTER SMALL YA
+3084 ; [.32DF.0020.0011.3084] # HIRAGANA LETTER YA
+3085 ; [.32E0.0020.000F.3085] # HIRAGANA LETTER SMALL YU
+3086 ; [.32E0.0020.0011.3086] # HIRAGANA LETTER YU
+3087 ; [.32E2.0020.000F.3087] # HIRAGANA LETTER SMALL YO
+3088 ; [.32E2.0020.0011.3088] # HIRAGANA LETTER YO
+3089 ; [.32E3.0020.0011.3089] # HIRAGANA LETTER RA
+308A ; [.32E4.0020.0011.308A] # HIRAGANA LETTER RI
+308B ; [.32E5.0020.0011.308B] # HIRAGANA LETTER RU
+308C ; [.32E6.0020.0011.308C] # HIRAGANA LETTER RE
+308D ; [.32E7.0020.0011.308D] # HIRAGANA LETTER RO
+308E ; [.32E8.0020.000F.308E] # HIRAGANA LETTER SMALL WA
+308F ; [.32E8.0020.0011.308F] # HIRAGANA LETTER WA
+3090 ; [.32E9.0020.0011.3090] # HIRAGANA LETTER WI
+3091 ; [.32EA.0020.0011.3091] # HIRAGANA LETTER WE
+3092 ; [.32EB.0020.0011.3092] # HIRAGANA LETTER WO
+3093 ; [.32EC.0020.0011.3093] # HIRAGANA LETTER N
+3094 ; [.32BD.0020.0011.3046][.0000.0128.0002.3099] # HIRAGANA LETTER VU
+3095 ; [.32C1.0020.000F.3095] # HIRAGANA LETTER SMALL KA
+3096 ; [.32C4.0020.000F.3096] # HIRAGANA LETTER SMALL KE
+309D ; [.15BB.0020.0002.309D] # HIRAGANA ITERATION MARK
+309E ; [.15BB.0020.0002.309D][.0000.0128.0002.3099] # HIRAGANA VOICED ITERATION MARK
3000 ; [*020A.0020.0002.0020] # IDEOGRAPHIC SPACE
FF01 ; [*025E.0020.0002.0021] # FULLWIDTH EXCLAMATION MARK
FF02 ; [*02F1.0020.0002.0022] # FULLWIDTH QUOTATION MARK
FF03 ; [*0376.0020.0002.0023] # FULLWIDTH NUMBER SIGN
-FF04 ; [.15A4.0020.0002.0024] # FULLWIDTH DOLLAR SIGN
+FF04 ; [.15BE.0020.0002.0024] # FULLWIDTH DOLLAR SIGN
FF05 ; [*0377.0020.0002.0025] # FULLWIDTH PERCENT SIGN
FF06 ; [*0374.0020.0002.0026] # FULLWIDTH AMPERSAND
FF07 ; [*02EA.0020.0002.0027] # FULLWIDTH APOSTROPHE
@@ -107,16 +107,16 @@ FF0C ; [*0221.0020.0002.002C] # FULLWIDTH COMMA
FF0D ; [*020E.0020.0002.002D] # FULLWIDTH HYPHEN-MINUS
FF0E ; [*0273.0020.0002.002E] # FULLWIDTH FULL STOP
FF0F ; [*0372.0020.0002.002F] # FULLWIDTH SOLIDUS
-FF10 ; [.15CA.0020.0002.0030] # FULLWIDTH DIGIT ZERO
-FF11 ; [.15CB.0020.0002.0031] # FULLWIDTH DIGIT ONE
-FF12 ; [.15CC.0020.0002.0032] # FULLWIDTH DIGIT TWO
-FF13 ; [.15CD.0020.0002.0033] # FULLWIDTH DIGIT THREE
-FF14 ; [.15CE.0020.0002.0034] # FULLWIDTH DIGIT FOUR
-FF15 ; [.15CF.0020.0002.0035] # FULLWIDTH DIGIT FIVE
-FF16 ; [.15D0.0020.0002.0036] # FULLWIDTH DIGIT SIX
-FF17 ; [.15D1.0020.0002.0037] # FULLWIDTH DIGIT SEVEN
-FF18 ; [.15D2.0020.0002.0038] # FULLWIDTH DIGIT EIGHT
-FF19 ; [.15D3.0020.0002.0039] # FULLWIDTH DIGIT NINE
+FF10 ; [.15E5.0020.0002.0030] # FULLWIDTH DIGIT ZERO
+FF11 ; [.15E6.0020.0002.0031] # FULLWIDTH DIGIT ONE
+FF12 ; [.15E7.0020.0002.0032] # FULLWIDTH DIGIT TWO
+FF13 ; [.15E8.0020.0002.0033] # FULLWIDTH DIGIT THREE
+FF14 ; [.15E9.0020.0002.0034] # FULLWIDTH DIGIT FOUR
+FF15 ; [.15EA.0020.0002.0035] # FULLWIDTH DIGIT FIVE
+FF16 ; [.15EB.0020.0002.0036] # FULLWIDTH DIGIT SIX
+FF17 ; [.15EC.0020.0002.0037] # FULLWIDTH DIGIT SEVEN
+FF18 ; [.15ED.0020.0002.0038] # FULLWIDTH DIGIT EIGHT
+FF19 ; [.15EE.0020.0002.0039] # FULLWIDTH DIGIT NINE
FF1A ; [*0237.0020.0002.003A] # FULLWIDTH COLON
FF1B ; [*0232.0020.0002.003B] # FULLWIDTH SEMICOLON
FF1C ; [*05A0.0020.0002.003C] # FULLWIDTH LESS-THAN SIGN
@@ -124,64 +124,64 @@ FF1D ; [*05A1.0020.0002.003D] # FULLWIDTH EQUALS SIGN
FF1E ; [*05A2.0020.0002.003E] # FULLWIDTH GREATER-THAN SIGN
FF1F ; [*0263.0020.0002.003F] # FULLWIDTH QUESTION MARK
FF20 ; [*036C.0020.0002.0040] # FULLWIDTH COMMERCIAL AT
-FF21 ; [.15D4.0020.0008.0041] # FULLWIDTH LATIN CAPITAL LETTER A
-FF22 ; [.15EA.0020.0008.0042] # FULLWIDTH LATIN CAPITAL LETTER B
-FF23 ; [.1602.0020.0008.0043] # FULLWIDTH LATIN CAPITAL LETTER C
-FF24 ; [.1616.0020.0008.0044] # FULLWIDTH LATIN CAPITAL LETTER D
-FF25 ; [.1631.0020.0008.0045] # FULLWIDTH LATIN CAPITAL LETTER E
-FF26 ; [.1669.0020.0008.0046] # FULLWIDTH LATIN CAPITAL LETTER F
-FF27 ; [.1676.0020.0008.0047] # FULLWIDTH LATIN CAPITAL LETTER G
-FF28 ; [.1699.0020.0008.0048] # FULLWIDTH LATIN CAPITAL LETTER H
-FF29 ; [.16B2.0020.0008.0049] # FULLWIDTH LATIN CAPITAL LETTER I
-FF2A ; [.16CB.0020.0008.004A] # FULLWIDTH LATIN CAPITAL LETTER J
-FF2B ; [.16E4.0020.0008.004B] # FULLWIDTH LATIN CAPITAL LETTER K
-FF2C ; [.16F6.0020.0008.004C] # FULLWIDTH LATIN CAPITAL LETTER L
-FF2D ; [.1726.0020.0008.004D] # FULLWIDTH LATIN CAPITAL LETTER M
-FF2E ; [.1734.0020.0008.004E] # FULLWIDTH LATIN CAPITAL LETTER N
-FF2F ; [.1756.0020.0008.004F] # FULLWIDTH LATIN CAPITAL LETTER O
-FF30 ; [.177B.0020.0008.0050] # FULLWIDTH LATIN CAPITAL LETTER P
-FF31 ; [.1790.0020.0008.0051] # FULLWIDTH LATIN CAPITAL LETTER Q
-FF32 ; [.17A2.0020.0008.0052] # FULLWIDTH LATIN CAPITAL LETTER R
-FF33 ; [.17D8.0020.0008.0053] # FULLWIDTH LATIN CAPITAL LETTER S
-FF34 ; [.17FB.0020.0008.0054] # FULLWIDTH LATIN CAPITAL LETTER T
-FF35 ; [.181B.0020.0008.0055] # FULLWIDTH LATIN CAPITAL LETTER U
-FF36 ; [.1844.0020.0008.0056] # FULLWIDTH LATIN CAPITAL LETTER V
-FF37 ; [.1856.0020.0008.0057] # FULLWIDTH LATIN CAPITAL LETTER W
-FF38 ; [.1860.0020.0008.0058] # FULLWIDTH LATIN CAPITAL LETTER X
-FF39 ; [.1865.0020.0008.0059] # FULLWIDTH LATIN CAPITAL LETTER Y
-FF3A ; [.187A.0020.0008.005A] # FULLWIDTH LATIN CAPITAL LETTER Z
+FF21 ; [.15EF.0020.0008.0041] # FULLWIDTH LATIN CAPITAL LETTER A
+FF22 ; [.1605.0020.0008.0042] # FULLWIDTH LATIN CAPITAL LETTER B
+FF23 ; [.161D.0020.0008.0043] # FULLWIDTH LATIN CAPITAL LETTER C
+FF24 ; [.1631.0020.0008.0044] # FULLWIDTH LATIN CAPITAL LETTER D
+FF25 ; [.164C.0020.0008.0045] # FULLWIDTH LATIN CAPITAL LETTER E
+FF26 ; [.1684.0020.0008.0046] # FULLWIDTH LATIN CAPITAL LETTER F
+FF27 ; [.1691.0020.0008.0047] # FULLWIDTH LATIN CAPITAL LETTER G
+FF28 ; [.16B4.0020.0008.0048] # FULLWIDTH LATIN CAPITAL LETTER H
+FF29 ; [.16CD.0020.0008.0049] # FULLWIDTH LATIN CAPITAL LETTER I
+FF2A ; [.16E6.0020.0008.004A] # FULLWIDTH LATIN CAPITAL LETTER J
+FF2B ; [.16FF.0020.0008.004B] # FULLWIDTH LATIN CAPITAL LETTER K
+FF2C ; [.1711.0020.0008.004C] # FULLWIDTH LATIN CAPITAL LETTER L
+FF2D ; [.1741.0020.0008.004D] # FULLWIDTH LATIN CAPITAL LETTER M
+FF2E ; [.174F.0020.0008.004E] # FULLWIDTH LATIN CAPITAL LETTER N
+FF2F ; [.1771.0020.0008.004F] # FULLWIDTH LATIN CAPITAL LETTER O
+FF30 ; [.1796.0020.0008.0050] # FULLWIDTH LATIN CAPITAL LETTER P
+FF31 ; [.17AB.0020.0008.0051] # FULLWIDTH LATIN CAPITAL LETTER Q
+FF32 ; [.17BD.0020.0008.0052] # FULLWIDTH LATIN CAPITAL LETTER R
+FF33 ; [.17F3.0020.0008.0053] # FULLWIDTH LATIN CAPITAL LETTER S
+FF34 ; [.1816.0020.0008.0054] # FULLWIDTH LATIN CAPITAL LETTER T
+FF35 ; [.1836.0020.0008.0055] # FULLWIDTH LATIN CAPITAL LETTER U
+FF36 ; [.185F.0020.0008.0056] # FULLWIDTH LATIN CAPITAL LETTER V
+FF37 ; [.1871.0020.0008.0057] # FULLWIDTH LATIN CAPITAL LETTER W
+FF38 ; [.187B.0020.0008.0058] # FULLWIDTH LATIN CAPITAL LETTER X
+FF39 ; [.1880.0020.0008.0059] # FULLWIDTH LATIN CAPITAL LETTER Y
+FF3A ; [.1895.0020.0008.005A] # FULLWIDTH LATIN CAPITAL LETTER Z
FF3B ; [*02FD.0020.0002.005B] # FULLWIDTH LEFT SQUARE BRACKET
FF3C ; [*02EA.0020.0002.0027] # FULLWIDTH REVERSE SOLIDUS
FF3D ; [*02FE.0020.0002.005D] # FULLWIDTH RIGHT SQUARE BRACKET
FF3E ; [*0412.0020.0002.005E] # FULLWIDTH CIRCUMFLEX ACCENT
FF3F ; [*020C.0020.0002.005F] # FULLWIDTH LOW LINE
FF40 ; [*040F.0020.0002.0060] # FULLWIDTH GRAVE ACCENT
-FF41 ; [.15D4.0020.0002.0061] # FULLWIDTH LATIN SMALL LETTER A
-FF42 ; [.15EA.0020.0002.0062] # FULLWIDTH LATIN SMALL LETTER B
-FF43 ; [.1602.0020.0002.0063] # FULLWIDTH LATIN SMALL LETTER C
-FF44 ; [.1616.0020.0002.0064] # FULLWIDTH LATIN SMALL LETTER D
-FF45 ; [.1631.0020.0002.0065] # FULLWIDTH LATIN SMALL LETTER E
-FF46 ; [.1669.0020.0002.0066] # FULLWIDTH LATIN SMALL LETTER F
-FF47 ; [.1676.0020.0002.0067] # FULLWIDTH LATIN SMALL LETTER G
-FF48 ; [.1699.0020.0002.0068] # FULLWIDTH LATIN SMALL LETTER H
-FF49 ; [.16B2.0020.0002.0069] # FULLWIDTH LATIN SMALL LETTER I
-FF4A ; [.16CB.0020.0002.006A] # FULLWIDTH LATIN SMALL LETTER J
-FF4B ; [.16E4.0020.0002.006B] # FULLWIDTH LATIN SMALL LETTER K
-FF4C ; [.16F6.0020.0002.006C] # FULLWIDTH LATIN SMALL LETTER L
-FF4D ; [.1726.0020.0002.006D] # FULLWIDTH LATIN SMALL LETTER M
-FF4E ; [.1734.0020.0002.006E] # FULLWIDTH LATIN SMALL LETTER N
-FF4F ; [.1756.0020.0002.006F] # FULLWIDTH LATIN SMALL LETTER O
-FF50 ; [.177B.0020.0002.0070] # FULLWIDTH LATIN SMALL LETTER P
-FF51 ; [.1790.0020.0002.0071] # FULLWIDTH LATIN SMALL LETTER Q
-FF52 ; [.17A2.0020.0002.0072] # FULLWIDTH LATIN SMALL LETTER R
-FF53 ; [.17D8.0020.0002.0073] # FULLWIDTH LATIN SMALL LETTER S
-FF54 ; [.17FB.0020.0002.0074] # FULLWIDTH LATIN SMALL LETTER T
-FF55 ; [.181B.0020.0002.0075] # FULLWIDTH LATIN SMALL LETTER U
-FF56 ; [.1844.0020.0002.0076] # FULLWIDTH LATIN SMALL LETTER V
-FF57 ; [.1856.0020.0002.0077] # FULLWIDTH LATIN SMALL LETTER W
-FF58 ; [.1860.0020.0002.0078] # FULLWIDTH LATIN SMALL LETTER X
-FF59 ; [.1865.0020.0002.0079] # FULLWIDTH LATIN SMALL LETTER Y
-FF5A ; [.187A.0020.0002.007A] # FULLWIDTH LATIN SMALL LETTER Z
+FF41 ; [.15EF.0020.0002.0061] # FULLWIDTH LATIN SMALL LETTER A
+FF42 ; [.1605.0020.0002.0062] # FULLWIDTH LATIN SMALL LETTER B
+FF43 ; [.161D.0020.0002.0063] # FULLWIDTH LATIN SMALL LETTER C
+FF44 ; [.1631.0020.0002.0064] # FULLWIDTH LATIN SMALL LETTER D
+FF45 ; [.164C.0020.0002.0065] # FULLWIDTH LATIN SMALL LETTER E
+FF46 ; [.1684.0020.0002.0066] # FULLWIDTH LATIN SMALL LETTER F
+FF47 ; [.1691.0020.0002.0067] # FULLWIDTH LATIN SMALL LETTER G
+FF48 ; [.16B4.0020.0002.0068] # FULLWIDTH LATIN SMALL LETTER H
+FF49 ; [.16CD.0020.0002.0069] # FULLWIDTH LATIN SMALL LETTER I
+FF4A ; [.16E6.0020.0002.006A] # FULLWIDTH LATIN SMALL LETTER J
+FF4B ; [.16FF.0020.0002.006B] # FULLWIDTH LATIN SMALL LETTER K
+FF4C ; [.1711.0020.0002.006C] # FULLWIDTH LATIN SMALL LETTER L
+FF4D ; [.1741.0020.0002.006D] # FULLWIDTH LATIN SMALL LETTER M
+FF4E ; [.174F.0020.0002.006E] # FULLWIDTH LATIN SMALL LETTER N
+FF4F ; [.1771.0020.0002.006F] # FULLWIDTH LATIN SMALL LETTER O
+FF50 ; [.1796.0020.0002.0070] # FULLWIDTH LATIN SMALL LETTER P
+FF51 ; [.17AB.0020.0002.0071] # FULLWIDTH LATIN SMALL LETTER Q
+FF52 ; [.17BD.0020.0002.0072] # FULLWIDTH LATIN SMALL LETTER R
+FF53 ; [.17F3.0020.0002.0073] # FULLWIDTH LATIN SMALL LETTER S
+FF54 ; [.1816.0020.0002.0074] # FULLWIDTH LATIN SMALL LETTER T
+FF55 ; [.1836.0020.0002.0075] # FULLWIDTH LATIN SMALL LETTER U
+FF56 ; [.185F.0020.0002.0076] # FULLWIDTH LATIN SMALL LETTER V
+FF57 ; [.1871.0020.0002.0077] # FULLWIDTH LATIN SMALL LETTER W
+FF58 ; [.187B.0020.0002.0078] # FULLWIDTH LATIN SMALL LETTER X
+FF59 ; [.1880.0020.0002.0079] # FULLWIDTH LATIN SMALL LETTER Y
+FF5A ; [.1895.0020.0002.007A] # FULLWIDTH LATIN SMALL LETTER Z
FF5B ; [*02FF.0020.0002.007B] # FULLWIDTH LEFT CURLY BRACKET
FF5C ; [*05A4.0020.0002.007C] # FULLWIDTH VERTICAL LINE
FF5D ; [*0300.0020.0002.007D] # FULLWIDTH RIGHT CURLY BRACKET
@@ -193,71 +193,71 @@ FF62 ; [*0353.0020.0002.300C] # HALFWIDTH LEFT CORNER BRACKET
FF63 ; [*0354.0020.0002.300D] # HALFWIDTH RIGHT CORNER BRACKET
FF64 ; [*022F.0020.0002.3001] # HALFWIDTH IDEOGRAPHIC COMMA
FF65 ; [*0220.0020.0002.30FB] # HALFWIDTH KATAKANA MIDDLE DOT
-FF66 ; [.32D0.0020.0011.30F2] # HALFWIDTH KATAKANA LETTER WO
-FF67 ; [.32A0.0020.000F.30A1] # HALFWIDTH KATAKANA LETTER SMALL A
-FF68 ; [.32A1.0020.000F.30A3] # HALFWIDTH KATAKANA LETTER SMALL I
-FF69 ; [.32A2.0020.000F.30A5] # HALFWIDTH KATAKANA LETTER SMALL U
-FF6A ; [.32A4.0020.000F.30A7] # HALFWIDTH KATAKANA LETTER SMALL E
-FF6B ; [.32A5.0020.000F.30A9] # HALFWIDTH KATAKANA LETTER SMALL O
-FF6C ; [.32C4.0020.000F.30E3] # HALFWIDTH KATAKANA LETTER SMALL YA
-FF6D ; [.32C5.0020.000F.30E5] # HALFWIDTH KATAKANA LETTER SMALL YU
-FF6E ; [.32C7.0020.000F.30E7] # HALFWIDTH KATAKANA LETTER SMALL YO
-FF6F ; [.32B2.0020.000F.30C3] # HALFWIDTH KATAKANA LETTER SMALL TU
-FF70 ; [.15A0.0020.0002.30FC] # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF71 ; [.32A0.0020.0011.30A2] # HALFWIDTH KATAKANA LETTER A
-FF72 ; [.32A1.0020.0011.30A4] # HALFWIDTH KATAKANA LETTER I
-FF73 ; [.32A2.0020.0011.30A6] # HALFWIDTH KATAKANA LETTER U
-FF74 ; [.32A4.0020.0011.30A8] # HALFWIDTH KATAKANA LETTER E
-FF75 ; [.32A5.0020.0011.30AA] # HALFWIDTH KATAKANA LETTER O
-FF76 ; [.32A6.0020.0011.30AB] # HALFWIDTH KATAKANA LETTER KA
-FF77 ; [.32A7.0020.0011.30AD] # HALFWIDTH KATAKANA LETTER KI
-FF78 ; [.32A8.0020.0011.30AF] # HALFWIDTH KATAKANA LETTER KU
-FF79 ; [.32A9.0020.0011.30B1] # HALFWIDTH KATAKANA LETTER KE
-FF7A ; [.32AA.0020.0011.30B3] # HALFWIDTH KATAKANA LETTER KO
-FF7B ; [.32AB.0020.0011.30B5] # HALFWIDTH KATAKANA LETTER SA
-FF7C ; [.32AC.0020.0011.30B7] # HALFWIDTH KATAKANA LETTER SI
-FF7D ; [.32AD.0020.0011.30B9] # HALFWIDTH KATAKANA LETTER SU
-FF7E ; [.32AE.0020.0011.30BB] # HALFWIDTH KATAKANA LETTER SE
-FF7F ; [.32AF.0020.0011.30BD] # HALFWIDTH KATAKANA LETTER SO
-FF80 ; [.32B0.0020.0011.30BF] # HALFWIDTH KATAKANA LETTER TA
-FF81 ; [.32B1.0020.0011.30C1] # HALFWIDTH KATAKANA LETTER TI
-FF82 ; [.32B2.0020.0011.30C4] # HALFWIDTH KATAKANA LETTER TU
-FF83 ; [.32B3.0020.0011.30C6] # HALFWIDTH KATAKANA LETTER TE
-FF84 ; [.32B4.0020.0011.30C8] # HALFWIDTH KATAKANA LETTER TO
-FF85 ; [.32B5.0020.0011.30CA] # HALFWIDTH KATAKANA LETTER NA
-FF86 ; [.32B6.0020.0011.30CB] # HALFWIDTH KATAKANA LETTER NI
-FF87 ; [.32B7.0020.0011.30CC] # HALFWIDTH KATAKANA LETTER NU
-FF88 ; [.32B8.0020.0011.30CD] # HALFWIDTH KATAKANA LETTER NE
-FF89 ; [.32B9.0020.0011.30CE] # HALFWIDTH KATAKANA LETTER NO
-FF8A ; [.32BA.0020.0011.30CF] # HALFWIDTH KATAKANA LETTER HA
-FF8B ; [.32BB.0020.0011.30D2] # HALFWIDTH KATAKANA LETTER HI
-FF8C ; [.32BC.0020.0011.30D5] # HALFWIDTH KATAKANA LETTER HU
-FF8D ; [.32BD.0020.0011.30D8] # HALFWIDTH KATAKANA LETTER HE
-FF8E ; [.32BE.0020.0011.30DB] # HALFWIDTH KATAKANA LETTER HO
-FF8F ; [.32BF.0020.0011.30DE] # HALFWIDTH KATAKANA LETTER MA
-FF90 ; [.32C0.0020.0011.30DF] # HALFWIDTH KATAKANA LETTER MI
-FF91 ; [.32C1.0020.0011.30E0] # HALFWIDTH KATAKANA LETTER MU
-FF92 ; [.32C2.0020.0011.30E1] # HALFWIDTH KATAKANA LETTER ME
-FF93 ; [.32C3.0020.0011.30E2] # HALFWIDTH KATAKANA LETTER MO
-FF94 ; [.32C4.0020.0011.30E4] # HALFWIDTH KATAKANA LETTER YA
-FF95 ; [.32C5.0020.0011.30E6] # HALFWIDTH KATAKANA LETTER YU
-FF96 ; [.32C7.0020.0011.30E8] # HALFWIDTH KATAKANA LETTER YO
-FF97 ; [.32C8.0020.0011.30E9] # HALFWIDTH KATAKANA LETTER RA
-FF98 ; [.32C9.0020.0011.30EA] # HALFWIDTH KATAKANA LETTER RI
-FF99 ; [.32CA.0020.0011.30EB] # HALFWIDTH KATAKANA LETTER RU
-FF9A ; [.32CB.0020.0011.30EC] # HALFWIDTH KATAKANA LETTER RE
-FF9B ; [.32CC.0020.0011.30ED] # HALFWIDTH KATAKANA LETTER RO
-FF9C ; [.32CD.0020.0011.30EF] # HALFWIDTH KATAKANA LETTER WA
-FF9D ; [.32D1.0020.0011.30F3] # HALFWIDTH KATAKANA LETTER N
+FF66 ; [.32EB.0020.0011.30F2] # HALFWIDTH KATAKANA LETTER WO
+FF67 ; [.32BB.0020.000F.30A1] # HALFWIDTH KATAKANA LETTER SMALL A
+FF68 ; [.32BC.0020.000F.30A3] # HALFWIDTH KATAKANA LETTER SMALL I
+FF69 ; [.32BD.0020.000F.30A5] # HALFWIDTH KATAKANA LETTER SMALL U
+FF6A ; [.32BF.0020.000F.30A7] # HALFWIDTH KATAKANA LETTER SMALL E
+FF6B ; [.32C0.0020.000F.30A9] # HALFWIDTH KATAKANA LETTER SMALL O
+FF6C ; [.32DF.0020.000F.30E3] # HALFWIDTH KATAKANA LETTER SMALL YA
+FF6D ; [.32E0.0020.000F.30E5] # HALFWIDTH KATAKANA LETTER SMALL YU
+FF6E ; [.32E2.0020.000F.30E7] # HALFWIDTH KATAKANA LETTER SMALL YO
+FF6F ; [.32CD.0020.000F.30C3] # HALFWIDTH KATAKANA LETTER SMALL TU
+FF70 ; [.15BA.0020.0002.30FC] # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71 ; [.32BB.0020.0011.30A2] # HALFWIDTH KATAKANA LETTER A
+FF72 ; [.32BC.0020.0011.30A4] # HALFWIDTH KATAKANA LETTER I
+FF73 ; [.32BD.0020.0011.30A6] # HALFWIDTH KATAKANA LETTER U
+FF74 ; [.32BF.0020.0011.30A8] # HALFWIDTH KATAKANA LETTER E
+FF75 ; [.32C0.0020.0011.30AA] # HALFWIDTH KATAKANA LETTER O
+FF76 ; [.32C1.0020.0011.30AB] # HALFWIDTH KATAKANA LETTER KA
+FF77 ; [.32C2.0020.0011.30AD] # HALFWIDTH KATAKANA LETTER KI
+FF78 ; [.32C3.0020.0011.30AF] # HALFWIDTH KATAKANA LETTER KU
+FF79 ; [.32C4.0020.0011.30B1] # HALFWIDTH KATAKANA LETTER KE
+FF7A ; [.32C5.0020.0011.30B3] # HALFWIDTH KATAKANA LETTER KO
+FF7B ; [.32C6.0020.0011.30B5] # HALFWIDTH KATAKANA LETTER SA
+FF7C ; [.32C7.0020.0011.30B7] # HALFWIDTH KATAKANA LETTER SI
+FF7D ; [.32C8.0020.0011.30B9] # HALFWIDTH KATAKANA LETTER SU
+FF7E ; [.32C9.0020.0011.30BB] # HALFWIDTH KATAKANA LETTER SE
+FF7F ; [.32CA.0020.0011.30BD] # HALFWIDTH KATAKANA LETTER SO
+FF80 ; [.32CB.0020.0011.30BF] # HALFWIDTH KATAKANA LETTER TA
+FF81 ; [.32CC.0020.0011.30C1] # HALFWIDTH KATAKANA LETTER TI
+FF82 ; [.32CD.0020.0011.30C4] # HALFWIDTH KATAKANA LETTER TU
+FF83 ; [.32CE.0020.0011.30C6] # HALFWIDTH KATAKANA LETTER TE
+FF84 ; [.32CF.0020.0011.30C8] # HALFWIDTH KATAKANA LETTER TO
+FF85 ; [.32D0.0020.0011.30CA] # HALFWIDTH KATAKANA LETTER NA
+FF86 ; [.32D1.0020.0011.30CB] # HALFWIDTH KATAKANA LETTER NI
+FF87 ; [.32D2.0020.0011.30CC] # HALFWIDTH KATAKANA LETTER NU
+FF88 ; [.32D3.0020.0011.30CD] # HALFWIDTH KATAKANA LETTER NE
+FF89 ; [.32D4.0020.0011.30CE] # HALFWIDTH KATAKANA LETTER NO
+FF8A ; [.32D5.0020.0011.30CF] # HALFWIDTH KATAKANA LETTER HA
+FF8B ; [.32D6.0020.0011.30D2] # HALFWIDTH KATAKANA LETTER HI
+FF8C ; [.32D7.0020.0011.30D5] # HALFWIDTH KATAKANA LETTER HU
+FF8D ; [.32D8.0020.0011.30D8] # HALFWIDTH KATAKANA LETTER HE
+FF8E ; [.32D9.0020.0011.30DB] # HALFWIDTH KATAKANA LETTER HO
+FF8F ; [.32DA.0020.0011.30DE] # HALFWIDTH KATAKANA LETTER MA
+FF90 ; [.32DB.0020.0011.30DF] # HALFWIDTH KATAKANA LETTER MI
+FF91 ; [.32DC.0020.0011.30E0] # HALFWIDTH KATAKANA LETTER MU
+FF92 ; [.32DD.0020.0011.30E1] # HALFWIDTH KATAKANA LETTER ME
+FF93 ; [.32DE.0020.0011.30E2] # HALFWIDTH KATAKANA LETTER MO
+FF94 ; [.32DF.0020.0011.30E4] # HALFWIDTH KATAKANA LETTER YA
+FF95 ; [.32E0.0020.0011.30E6] # HALFWIDTH KATAKANA LETTER YU
+FF96 ; [.32E2.0020.0011.30E8] # HALFWIDTH KATAKANA LETTER YO
+FF97 ; [.32E3.0020.0011.30E9] # HALFWIDTH KATAKANA LETTER RA
+FF98 ; [.32E4.0020.0011.30EA] # HALFWIDTH KATAKANA LETTER RI
+FF99 ; [.32E5.0020.0011.30EB] # HALFWIDTH KATAKANA LETTER RU
+FF9A ; [.32E6.0020.0011.30EC] # HALFWIDTH KATAKANA LETTER RE
+FF9B ; [.32E7.0020.0011.30ED] # HALFWIDTH KATAKANA LETTER RO
+FF9C ; [.32E8.0020.0011.30EF] # HALFWIDTH KATAKANA LETTER WA
+FF9D ; [.32EC.0020.0011.30F3] # HALFWIDTH KATAKANA LETTER N
FF9E ; [.0000.0128.0002.3099] # HALFWIDTH KATAKANA VOICED SOUND MARK
FF9F ; [.0000.0129.0002.309A] # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-FFE0 ; [.15A3.0020.0002.00A2] # FULLWIDTH CENT SIGN
-FFE1 ; [.15A5.0020.0002.00A3] # FULLWIDTH POUND SIGN
+FFE0 ; [.15BD.0020.0002.00A2] # FULLWIDTH CENT SIGN
+FFE1 ; [.15BF.0020.0002.00A3] # FULLWIDTH POUND SIGN
FFE2 ; [*05A3.0020.0002.00AC] # FULLWIDTH NOT SIGN
FFE3 ; [*020A.0020.0002.0020] # FULLWIDTH MACRON
FFE4 ; [*05A5.0020.0002.00A6] # FULLWIDTH BROKEN BAR
-FFE5 ; [.15A6.0020.0002.00A5] # FULLWIDTH YEN SIGN
-FFE6 ; [.15B9.0020.0002.20A9] # FULLWIDTH WON SIGN
+FFE5 ; [.15C0.0020.0002.00A5] # FULLWIDTH YEN SIGN
+FFE6 ; [.15D3.0020.0002.20A9] # FULLWIDTH WON SIGN
FFE8 ; [*0799.0020.0002.2502] # HALFWIDTH FORMS LIGHT VERTICAL
FFE9 ; [*0522.0020.0002.2190] # HALFWIDTH LEFTWARDS ARROW
FFEA ; [*0524.0020.0002.2191] # HALFWIDTH UPWARDS ARROW
@@ -265,981 +265,981 @@ FFEB ; [*0523.0020.0002.2192] # HALFWIDTH RIGHTWARDS ARROW
FFEC ; [*0525.0020.0002.2193] # HALFWIDTH DOWNWARDS ARROW
FFED ; [*0837.0020.0002.25A0] # HALFWIDTH BLACK SQUARE
FFEE ; [*0862.0020.0002.25CB] # HALFWIDTH WHITE CIRCLE
-30A1 30FC ; [.32A0.0020.000F.30A1][.32A0.0020.0007.30A1] # <KATAKANA LETTER SMALL A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF67 30FC ; [.32A0.0020.000F.30A1][.32A0.0020.0007.30A1] # <HALFWIDTH KATAKANA LETTER SMALL A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF67 FF70 ; [.32A0.0020.000F.30A1][.32A0.0020.0007.30A1] # <HALFWIDTH KATAKANA LETTER SMALL A, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3041 30FC ; [.32A0.0020.000F.3041][.32A0.0020.0007.3041] # <HIRAGANA LETTER SMALL A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30A2 30FC ; [.32A0.0020.0011.30A2][.32A0.0020.0007.30A2] # <KATAKANA LETTER A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF71 30FC ; [.32A0.0020.0011.30A2][.32A0.0020.0007.30A2] # <HALFWIDTH KATAKANA LETTER A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF71 FF70 ; [.32A0.0020.0011.30A2][.32A0.0020.0007.30A2] # <HALFWIDTH KATAKANA LETTER A, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3042 30FC ; [.32A0.0020.0011.3042][.32A0.0020.0007.3042] # <HIRAGANA LETTER A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30AB 30FC ; [.32A6.0020.0011.30AB][.32A0.0020.0007.30AB] # <KATAKANA LETTER KA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF76 30FC ; [.32A6.0020.0011.30AB][.32A0.0020.0007.30AB] # <HALFWIDTH KATAKANA LETTER KA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF76 FF70 ; [.32A6.0020.0011.30AB][.32A0.0020.0007.30AB] # <HALFWIDTH KATAKANA LETTER KA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-304B 30FC ; [.32A6.0020.0011.304B][.32A0.0020.0007.304B] # <HIRAGANA LETTER KA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30AC 30FC ; [.32A6.0020.0011.30AB][.0000.0128.0002.3099][.32A0.0020.0007.30AC] # <KATAKANA LETTER GA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30AB 3099 30FC ; [.32A6.0020.0011.30AB][.0000.0128.0002.3099][.32A0.0020.0007.30AC] # <KATAKANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF76 FF9E 30FC ; [.32A6.0020.0011.30AB][.0000.0128.0002.3099][.32A0.0020.0007.30AC] # <HALFWIDTH KATAKANA LETTER KA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF76 FF9E FF70 ; [.32A6.0020.0011.30AB][.0000.0128.0002.3099][.32A0.0020.0007.30AC] # <HALFWIDTH KATAKANA LETTER KA, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-304C 30FC ; [.32A6.0020.0011.304B][.0000.0128.0002.3099][.32A0.0020.0007.304C] # <HIRAGANA LETTER GA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-304B 3099 30FC ; [.32A6.0020.0011.304B][.0000.0128.0002.3099][.32A0.0020.0007.304C] # <HIRAGANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B5 30FC ; [.32AB.0020.0011.30B5][.32A0.0020.0007.30B5] # <KATAKANA LETTER SA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7B 30FC ; [.32AB.0020.0011.30B5][.32A0.0020.0007.30B5] # <HALFWIDTH KATAKANA LETTER SA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7B FF70 ; [.32AB.0020.0011.30B5][.32A0.0020.0007.30B5] # <HALFWIDTH KATAKANA LETTER SA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3055 30FC ; [.32AB.0020.0011.3055][.32A0.0020.0007.3055] # <HIRAGANA LETTER SA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B6 30FC ; [.32AB.0020.0011.30B5][.0000.0128.0002.3099][.32A0.0020.0007.30B6] # <KATAKANA LETTER ZA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B5 3099 30FC ; [.32AB.0020.0011.30B5][.0000.0128.0002.3099][.32A0.0020.0007.30B6] # <KATAKANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7B FF9E 30FC ; [.32AB.0020.0011.30B5][.0000.0128.0002.3099][.32A0.0020.0007.30B6] # <HALFWIDTH KATAKANA LETTER SA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7B FF9E FF70 ; [.32AB.0020.0011.30B5][.0000.0128.0002.3099][.32A0.0020.0007.30B6] # <HALFWIDTH KATAKANA LETTER SA, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3056 30FC ; [.32AB.0020.0011.3055][.0000.0128.0002.3099][.32A0.0020.0007.3056] # <HIRAGANA LETTER ZA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3055 3099 30FC ; [.32AB.0020.0011.3055][.0000.0128.0002.3099][.32A0.0020.0007.3056] # <HIRAGANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30BF 30FC ; [.32B0.0020.0011.30BF][.32A0.0020.0007.30BF] # <KATAKANA LETTER TA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF80 30FC ; [.32B0.0020.0011.30BF][.32A0.0020.0007.30BF] # <HALFWIDTH KATAKANA LETTER TA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF80 FF70 ; [.32B0.0020.0011.30BF][.32A0.0020.0007.30BF] # <HALFWIDTH KATAKANA LETTER TA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-305F 30FC ; [.32B0.0020.0011.305F][.32A0.0020.0007.305F] # <HIRAGANA LETTER TA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C0 30FC ; [.32B0.0020.0011.30BF][.0000.0128.0002.3099][.32A0.0020.0007.30C0] # <KATAKANA LETTER DA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30BF 3099 30FC ; [.32B0.0020.0011.30BF][.0000.0128.0002.3099][.32A0.0020.0007.30C0] # <KATAKANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF80 FF9E 30FC ; [.32B0.0020.0011.30BF][.0000.0128.0002.3099][.32A0.0020.0007.30C0] # <HALFWIDTH KATAKANA LETTER TA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF80 FF9E FF70 ; [.32B0.0020.0011.30BF][.0000.0128.0002.3099][.32A0.0020.0007.30C0] # <HALFWIDTH KATAKANA LETTER TA, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3060 30FC ; [.32B0.0020.0011.305F][.0000.0128.0002.3099][.32A0.0020.0007.3060] # <HIRAGANA LETTER DA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-305F 3099 30FC ; [.32B0.0020.0011.305F][.0000.0128.0002.3099][.32A0.0020.0007.3060] # <HIRAGANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30CA 30FC ; [.32B5.0020.0011.30CA][.32A0.0020.0007.30CA] # <KATAKANA LETTER NA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF85 30FC ; [.32B5.0020.0011.30CA][.32A0.0020.0007.30CA] # <HALFWIDTH KATAKANA LETTER NA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF85 FF70 ; [.32B5.0020.0011.30CA][.32A0.0020.0007.30CA] # <HALFWIDTH KATAKANA LETTER NA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-306A 30FC ; [.32B5.0020.0011.306A][.32A0.0020.0007.306A] # <HIRAGANA LETTER NA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30CF 30FC ; [.32BA.0020.0011.30CF][.32A0.0020.0007.30CF] # <KATAKANA LETTER HA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8A 30FC ; [.32BA.0020.0011.30CF][.32A0.0020.0007.30CF] # <HALFWIDTH KATAKANA LETTER HA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8A FF70 ; [.32BA.0020.0011.30CF][.32A0.0020.0007.30CF] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-306F 30FC ; [.32BA.0020.0011.306F][.32A0.0020.0007.306F] # <HIRAGANA LETTER HA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D0 30FC ; [.32BA.0020.0011.30CF][.0000.0128.0002.3099][.32A0.0020.0007.30D0] # <KATAKANA LETTER BA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30CF 3099 30FC ; [.32BA.0020.0011.30CF][.0000.0128.0002.3099][.32A0.0020.0007.30D0] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8A FF9E 30FC ; [.32BA.0020.0011.30CF][.0000.0128.0002.3099][.32A0.0020.0007.30D0] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8A FF9E FF70 ; [.32BA.0020.0011.30CF][.0000.0128.0002.3099][.32A0.0020.0007.30D0] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3070 30FC ; [.32BA.0020.0011.306F][.0000.0128.0002.3099][.32A0.0020.0007.3070] # <HIRAGANA LETTER BA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-306F 3099 30FC ; [.32BA.0020.0011.306F][.0000.0128.0002.3099][.32A0.0020.0007.3070] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D1 30FC ; [.32BA.0020.0011.30CF][.0000.0129.0002.309A][.32A0.0020.0007.30D1] # <KATAKANA LETTER PA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30CF 309A 30FC ; [.32BA.0020.0011.30CF][.0000.0129.0002.309A][.32A0.0020.0007.30D1] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8A FF9F 30FC ; [.32BA.0020.0011.30CF][.0000.0129.0002.309A][.32A0.0020.0007.30D1] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8A FF9F FF70 ; [.32BA.0020.0011.30CF][.0000.0129.0002.309A][.32A0.0020.0007.30D1] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3071 30FC ; [.32BA.0020.0011.306F][.0000.0129.0002.309A][.32A0.0020.0007.3071] # <HIRAGANA LETTER PA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-306F 309A 30FC ; [.32BA.0020.0011.306F][.0000.0129.0002.309A][.32A0.0020.0007.3071] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30DE 30FC ; [.32BF.0020.0011.30DE][.32A0.0020.0007.30DE] # <KATAKANA LETTER MA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8F 30FC ; [.32BF.0020.0011.30DE][.32A0.0020.0007.30DE] # <HALFWIDTH KATAKANA LETTER MA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8F FF70 ; [.32BF.0020.0011.30DE][.32A0.0020.0007.30DE] # <HALFWIDTH KATAKANA LETTER MA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-307E 30FC ; [.32BF.0020.0011.307E][.32A0.0020.0007.307E] # <HIRAGANA LETTER MA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30E3 30FC ; [.32C4.0020.000F.30E3][.32A0.0020.0007.30E3] # <KATAKANA LETTER SMALL YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6C 30FC ; [.32C4.0020.000F.30E3][.32A0.0020.0007.30E3] # <HALFWIDTH KATAKANA LETTER SMALL YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6C FF70 ; [.32C4.0020.000F.30E3][.32A0.0020.0007.30E3] # <HALFWIDTH KATAKANA LETTER SMALL YA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3083 30FC ; [.32C4.0020.000F.3083][.32A0.0020.0007.3083] # <HIRAGANA LETTER SMALL YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30E4 30FC ; [.32C4.0020.0011.30E4][.32A0.0020.0007.30E4] # <KATAKANA LETTER YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF94 30FC ; [.32C4.0020.0011.30E4][.32A0.0020.0007.30E4] # <HALFWIDTH KATAKANA LETTER YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF94 FF70 ; [.32C4.0020.0011.30E4][.32A0.0020.0007.30E4] # <HALFWIDTH KATAKANA LETTER YA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3084 30FC ; [.32C4.0020.0011.3084][.32A0.0020.0007.3084] # <HIRAGANA LETTER YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30E9 30FC ; [.32C8.0020.0011.30E9][.32A0.0020.0007.30E9] # <KATAKANA LETTER RA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF97 30FC ; [.32C8.0020.0011.30E9][.32A0.0020.0007.30E9] # <HALFWIDTH KATAKANA LETTER RA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF97 FF70 ; [.32C8.0020.0011.30E9][.32A0.0020.0007.30E9] # <HALFWIDTH KATAKANA LETTER RA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3089 30FC ; [.32C8.0020.0011.3089][.32A0.0020.0007.3089] # <HIRAGANA LETTER RA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30EE 30FC ; [.32CD.0020.000F.30EE][.32A0.0020.0007.30EE] # <KATAKANA LETTER SMALL WA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-308E 30FC ; [.32CD.0020.000F.308E][.32A0.0020.0007.308E] # <HIRAGANA LETTER SMALL WA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30EF 30FC ; [.32CD.0020.0011.30EF][.32A0.0020.0007.30EF] # <KATAKANA LETTER WA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF9C 30FC ; [.32CD.0020.0011.30EF][.32A0.0020.0007.30EF] # <HALFWIDTH KATAKANA LETTER WA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF9C FF70 ; [.32CD.0020.0011.30EF][.32A0.0020.0007.30EF] # <HALFWIDTH KATAKANA LETTER WA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-308F 30FC ; [.32CD.0020.0011.308F][.32A0.0020.0007.308F] # <HIRAGANA LETTER WA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F7 30FC ; [.32CD.0020.0011.30EF][.0000.0128.0002.3099][.32A0.0020.0007.30F7] # <KATAKANA LETTER VA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30EF 3099 30FC ; [.32CD.0020.0011.30EF][.0000.0128.0002.3099][.32A0.0020.0007.30F7] # <KATAKANA LETTER WA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF9C FF9E 30FC ; [.32CD.0020.0011.30EF][.0000.0128.0002.3099][.32A0.0020.0007.30F7] # <HALFWIDTH KATAKANA LETTER WA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF9C FF9E FF70 ; [.32CD.0020.0011.30EF][.0000.0128.0002.3099][.32A0.0020.0007.30F7] # <HALFWIDTH KATAKANA LETTER WA, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F5 30FC ; [.32A6.0020.000F.30F5][.32A0.0020.0007.30F5] # <KATAKANA LETTER SMALL KA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3095 30FC ; [.32A6.0020.000F.3095][.32A0.0020.0007.3095] # <HIRAGANA LETTER SMALL KA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31F5 30FC ; [.32BA.0020.000F.31F5][.32A0.0020.0007.31F5] # <KATAKANA LETTER SMALL HA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31FB 30FC ; [.32C8.0020.000F.31FB][.32A0.0020.0007.31FB] # <KATAKANA LETTER SMALL RA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30A3 30FC ; [.32A1.0020.000F.30A3][.32A1.0020.0007.30A3] # <KATAKANA LETTER SMALL I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF68 30FC ; [.32A1.0020.000F.30A3][.32A1.0020.0007.30A3] # <HALFWIDTH KATAKANA LETTER SMALL I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF68 FF70 ; [.32A1.0020.000F.30A3][.32A1.0020.0007.30A3] # <HALFWIDTH KATAKANA LETTER SMALL I, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3043 30FC ; [.32A1.0020.000F.3043][.32A1.0020.0007.3043] # <HIRAGANA LETTER SMALL I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30A4 30FC ; [.32A1.0020.0011.30A4][.32A1.0020.0007.30A4] # <KATAKANA LETTER I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF72 30FC ; [.32A1.0020.0011.30A4][.32A1.0020.0007.30A4] # <HALFWIDTH KATAKANA LETTER I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF72 FF70 ; [.32A1.0020.0011.30A4][.32A1.0020.0007.30A4] # <HALFWIDTH KATAKANA LETTER I, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3044 30FC ; [.32A1.0020.0011.3044][.32A1.0020.0007.3044] # <HIRAGANA LETTER I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30AD 30FC ; [.32A7.0020.0011.30AD][.32A1.0020.0007.30AD] # <KATAKANA LETTER KI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF77 30FC ; [.32A7.0020.0011.30AD][.32A1.0020.0007.30AD] # <HALFWIDTH KATAKANA LETTER KI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF77 FF70 ; [.32A7.0020.0011.30AD][.32A1.0020.0007.30AD] # <HALFWIDTH KATAKANA LETTER KI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-304D 30FC ; [.32A7.0020.0011.304D][.32A1.0020.0007.304D] # <HIRAGANA LETTER KI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30AE 30FC ; [.32A7.0020.0011.30AD][.0000.0128.0002.3099][.32A1.0020.0007.30AE] # <KATAKANA LETTER GI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30AD 3099 30FC ; [.32A7.0020.0011.30AD][.0000.0128.0002.3099][.32A1.0020.0007.30AE] # <KATAKANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF77 FF9E 30FC ; [.32A7.0020.0011.30AD][.0000.0128.0002.3099][.32A1.0020.0007.30AE] # <HALFWIDTH KATAKANA LETTER KI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF77 FF9E FF70 ; [.32A7.0020.0011.30AD][.0000.0128.0002.3099][.32A1.0020.0007.30AE] # <HALFWIDTH KATAKANA LETTER KI, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-304E 30FC ; [.32A7.0020.0011.304D][.0000.0128.0002.3099][.32A1.0020.0007.304E] # <HIRAGANA LETTER GI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-304D 3099 30FC ; [.32A7.0020.0011.304D][.0000.0128.0002.3099][.32A1.0020.0007.304E] # <HIRAGANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B7 30FC ; [.32AC.0020.0011.30B7][.32A1.0020.0007.30B7] # <KATAKANA LETTER SI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7C 30FC ; [.32AC.0020.0011.30B7][.32A1.0020.0007.30B7] # <HALFWIDTH KATAKANA LETTER SI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7C FF70 ; [.32AC.0020.0011.30B7][.32A1.0020.0007.30B7] # <HALFWIDTH KATAKANA LETTER SI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3057 30FC ; [.32AC.0020.0011.3057][.32A1.0020.0007.3057] # <HIRAGANA LETTER SI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B8 30FC ; [.32AC.0020.0011.30B7][.0000.0128.0002.3099][.32A1.0020.0007.30B8] # <KATAKANA LETTER ZI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B7 3099 30FC ; [.32AC.0020.0011.30B7][.0000.0128.0002.3099][.32A1.0020.0007.30B8] # <KATAKANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7C FF9E 30FC ; [.32AC.0020.0011.30B7][.0000.0128.0002.3099][.32A1.0020.0007.30B8] # <HALFWIDTH KATAKANA LETTER SI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7C FF9E FF70 ; [.32AC.0020.0011.30B7][.0000.0128.0002.3099][.32A1.0020.0007.30B8] # <HALFWIDTH KATAKANA LETTER SI, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3058 30FC ; [.32AC.0020.0011.3057][.0000.0128.0002.3099][.32A1.0020.0007.3058] # <HIRAGANA LETTER ZI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3057 3099 30FC ; [.32AC.0020.0011.3057][.0000.0128.0002.3099][.32A1.0020.0007.3058] # <HIRAGANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C1 30FC ; [.32B1.0020.0011.30C1][.32A1.0020.0007.30C1] # <KATAKANA LETTER TI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF81 30FC ; [.32B1.0020.0011.30C1][.32A1.0020.0007.30C1] # <HALFWIDTH KATAKANA LETTER TI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF81 FF70 ; [.32B1.0020.0011.30C1][.32A1.0020.0007.30C1] # <HALFWIDTH KATAKANA LETTER TI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3061 30FC ; [.32B1.0020.0011.3061][.32A1.0020.0007.3061] # <HIRAGANA LETTER TI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C2 30FC ; [.32B1.0020.0011.30C1][.0000.0128.0002.3099][.32A1.0020.0007.30C2] # <KATAKANA LETTER DI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C1 3099 30FC ; [.32B1.0020.0011.30C1][.0000.0128.0002.3099][.32A1.0020.0007.30C2] # <KATAKANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF81 FF9E 30FC ; [.32B1.0020.0011.30C1][.0000.0128.0002.3099][.32A1.0020.0007.30C2] # <HALFWIDTH KATAKANA LETTER TI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF81 FF9E FF70 ; [.32B1.0020.0011.30C1][.0000.0128.0002.3099][.32A1.0020.0007.30C2] # <HALFWIDTH KATAKANA LETTER TI, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3062 30FC ; [.32B1.0020.0011.3061][.0000.0128.0002.3099][.32A1.0020.0007.3062] # <HIRAGANA LETTER DI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3061 3099 30FC ; [.32B1.0020.0011.3061][.0000.0128.0002.3099][.32A1.0020.0007.3062] # <HIRAGANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30CB 30FC ; [.32B6.0020.0011.30CB][.32A1.0020.0007.30CB] # <KATAKANA LETTER NI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF86 30FC ; [.32B6.0020.0011.30CB][.32A1.0020.0007.30CB] # <HALFWIDTH KATAKANA LETTER NI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF86 FF70 ; [.32B6.0020.0011.30CB][.32A1.0020.0007.30CB] # <HALFWIDTH KATAKANA LETTER NI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-306B 30FC ; [.32B6.0020.0011.306B][.32A1.0020.0007.306B] # <HIRAGANA LETTER NI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D2 30FC ; [.32BB.0020.0011.30D2][.32A1.0020.0007.30D2] # <KATAKANA LETTER HI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8B 30FC ; [.32BB.0020.0011.30D2][.32A1.0020.0007.30D2] # <HALFWIDTH KATAKANA LETTER HI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8B FF70 ; [.32BB.0020.0011.30D2][.32A1.0020.0007.30D2] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3072 30FC ; [.32BB.0020.0011.3072][.32A1.0020.0007.3072] # <HIRAGANA LETTER HI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D3 30FC ; [.32BB.0020.0011.30D2][.0000.0128.0002.3099][.32A1.0020.0007.30D3] # <KATAKANA LETTER BI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D2 3099 30FC ; [.32BB.0020.0011.30D2][.0000.0128.0002.3099][.32A1.0020.0007.30D3] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8B FF9E 30FC ; [.32BB.0020.0011.30D2][.0000.0128.0002.3099][.32A1.0020.0007.30D3] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8B FF9E FF70 ; [.32BB.0020.0011.30D2][.0000.0128.0002.3099][.32A1.0020.0007.30D3] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3073 30FC ; [.32BB.0020.0011.3072][.0000.0128.0002.3099][.32A1.0020.0007.3073] # <HIRAGANA LETTER BI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3072 3099 30FC ; [.32BB.0020.0011.3072][.0000.0128.0002.3099][.32A1.0020.0007.3073] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D4 30FC ; [.32BB.0020.0011.30D2][.0000.0129.0002.309A][.32A1.0020.0007.30D4] # <KATAKANA LETTER PI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D2 309A 30FC ; [.32BB.0020.0011.30D2][.0000.0129.0002.309A][.32A1.0020.0007.30D4] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8B FF9F 30FC ; [.32BB.0020.0011.30D2][.0000.0129.0002.309A][.32A1.0020.0007.30D4] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8B FF9F FF70 ; [.32BB.0020.0011.30D2][.0000.0129.0002.309A][.32A1.0020.0007.30D4] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3074 30FC ; [.32BB.0020.0011.3072][.0000.0129.0002.309A][.32A1.0020.0007.3074] # <HIRAGANA LETTER PI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3072 309A 30FC ; [.32BB.0020.0011.3072][.0000.0129.0002.309A][.32A1.0020.0007.3074] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30DF 30FC ; [.32C0.0020.0011.30DF][.32A1.0020.0007.30DF] # <KATAKANA LETTER MI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF90 30FC ; [.32C0.0020.0011.30DF][.32A1.0020.0007.30DF] # <HALFWIDTH KATAKANA LETTER MI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF90 FF70 ; [.32C0.0020.0011.30DF][.32A1.0020.0007.30DF] # <HALFWIDTH KATAKANA LETTER MI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-307F 30FC ; [.32C0.0020.0011.307F][.32A1.0020.0007.307F] # <HIRAGANA LETTER MI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30EA 30FC ; [.32C9.0020.0011.30EA][.32A1.0020.0007.30EA] # <KATAKANA LETTER RI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF98 30FC ; [.32C9.0020.0011.30EA][.32A1.0020.0007.30EA] # <HALFWIDTH KATAKANA LETTER RI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF98 FF70 ; [.32C9.0020.0011.30EA][.32A1.0020.0007.30EA] # <HALFWIDTH KATAKANA LETTER RI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-308A 30FC ; [.32C9.0020.0011.308A][.32A1.0020.0007.308A] # <HIRAGANA LETTER RI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F0 30FC ; [.32CE.0020.0011.30F0][.32A1.0020.0007.30F0] # <KATAKANA LETTER WI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3090 30FC ; [.32CE.0020.0011.3090][.32A1.0020.0007.3090] # <HIRAGANA LETTER WI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F8 30FC ; [.32CE.0020.0011.30F0][.0000.0128.0002.3099][.32A1.0020.0007.30F8] # <KATAKANA LETTER VI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F0 3099 30FC ; [.32CE.0020.0011.30F0][.0000.0128.0002.3099][.32A1.0020.0007.30F8] # <KATAKANA LETTER WI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31F1 30FC ; [.32AC.0020.000F.31F1][.32A1.0020.0007.31F1] # <KATAKANA LETTER SMALL SI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31F6 30FC ; [.32BB.0020.000F.31F6][.32A1.0020.0007.31F6] # <KATAKANA LETTER SMALL HI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31FC 30FC ; [.32C9.0020.000F.31FC][.32A1.0020.0007.31FC] # <KATAKANA LETTER SMALL RI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30A5 30FC ; [.32A2.0020.000F.30A5][.32A2.0020.0007.30A5] # <KATAKANA LETTER SMALL U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF69 30FC ; [.32A2.0020.000F.30A5][.32A2.0020.0007.30A5] # <HALFWIDTH KATAKANA LETTER SMALL U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF69 FF70 ; [.32A2.0020.000F.30A5][.32A2.0020.0007.30A5] # <HALFWIDTH KATAKANA LETTER SMALL U, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3045 30FC ; [.32A2.0020.000F.3045][.32A2.0020.0007.3045] # <HIRAGANA LETTER SMALL U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30A6 30FC ; [.32A2.0020.0011.30A6][.32A2.0020.0007.30A6] # <KATAKANA LETTER U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF73 30FC ; [.32A2.0020.0011.30A6][.32A2.0020.0007.30A6] # <HALFWIDTH KATAKANA LETTER U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF73 FF70 ; [.32A2.0020.0011.30A6][.32A2.0020.0007.30A6] # <HALFWIDTH KATAKANA LETTER U, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3046 30FC ; [.32A2.0020.0011.3046][.32A2.0020.0007.3046] # <HIRAGANA LETTER U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30AF 30FC ; [.32A8.0020.0011.30AF][.32A2.0020.0007.30AF] # <KATAKANA LETTER KU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF78 30FC ; [.32A8.0020.0011.30AF][.32A2.0020.0007.30AF] # <HALFWIDTH KATAKANA LETTER KU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF78 FF70 ; [.32A8.0020.0011.30AF][.32A2.0020.0007.30AF] # <HALFWIDTH KATAKANA LETTER KU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-304F 30FC ; [.32A8.0020.0011.304F][.32A2.0020.0007.304F] # <HIRAGANA LETTER KU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B0 30FC ; [.32A8.0020.0011.30AF][.0000.0128.0002.3099][.32A2.0020.0007.30B0] # <KATAKANA LETTER GU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30AF 3099 30FC ; [.32A8.0020.0011.30AF][.0000.0128.0002.3099][.32A2.0020.0007.30B0] # <KATAKANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF78 FF9E 30FC ; [.32A8.0020.0011.30AF][.0000.0128.0002.3099][.32A2.0020.0007.30B0] # <HALFWIDTH KATAKANA LETTER KU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF78 FF9E FF70 ; [.32A8.0020.0011.30AF][.0000.0128.0002.3099][.32A2.0020.0007.30B0] # <HALFWIDTH KATAKANA LETTER KU, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3050 30FC ; [.32A8.0020.0011.304F][.0000.0128.0002.3099][.32A2.0020.0007.3050] # <HIRAGANA LETTER GU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-304F 3099 30FC ; [.32A8.0020.0011.304F][.0000.0128.0002.3099][.32A2.0020.0007.3050] # <HIRAGANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B9 30FC ; [.32AD.0020.0011.30B9][.32A2.0020.0007.30B9] # <KATAKANA LETTER SU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7D 30FC ; [.32AD.0020.0011.30B9][.32A2.0020.0007.30B9] # <HALFWIDTH KATAKANA LETTER SU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7D FF70 ; [.32AD.0020.0011.30B9][.32A2.0020.0007.30B9] # <HALFWIDTH KATAKANA LETTER SU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3059 30FC ; [.32AD.0020.0011.3059][.32A2.0020.0007.3059] # <HIRAGANA LETTER SU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30BA 30FC ; [.32AD.0020.0011.30B9][.0000.0128.0002.3099][.32A2.0020.0007.30BA] # <KATAKANA LETTER ZU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B9 3099 30FC ; [.32AD.0020.0011.30B9][.0000.0128.0002.3099][.32A2.0020.0007.30BA] # <KATAKANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7D FF9E 30FC ; [.32AD.0020.0011.30B9][.0000.0128.0002.3099][.32A2.0020.0007.30BA] # <HALFWIDTH KATAKANA LETTER SU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7D FF9E FF70 ; [.32AD.0020.0011.30B9][.0000.0128.0002.3099][.32A2.0020.0007.30BA] # <HALFWIDTH KATAKANA LETTER SU, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-305A 30FC ; [.32AD.0020.0011.3059][.0000.0128.0002.3099][.32A2.0020.0007.305A] # <HIRAGANA LETTER ZU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3059 3099 30FC ; [.32AD.0020.0011.3059][.0000.0128.0002.3099][.32A2.0020.0007.305A] # <HIRAGANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C3 30FC ; [.32B2.0020.000F.30C3][.32A2.0020.0007.30C3] # <KATAKANA LETTER SMALL TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6F 30FC ; [.32B2.0020.000F.30C3][.32A2.0020.0007.30C3] # <HALFWIDTH KATAKANA LETTER SMALL TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6F FF70 ; [.32B2.0020.000F.30C3][.32A2.0020.0007.30C3] # <HALFWIDTH KATAKANA LETTER SMALL TU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3063 30FC ; [.32B2.0020.000F.3063][.32A2.0020.0007.3063] # <HIRAGANA LETTER SMALL TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C4 30FC ; [.32B2.0020.0011.30C4][.32A2.0020.0007.30C4] # <KATAKANA LETTER TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF82 30FC ; [.32B2.0020.0011.30C4][.32A2.0020.0007.30C4] # <HALFWIDTH KATAKANA LETTER TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF82 FF70 ; [.32B2.0020.0011.30C4][.32A2.0020.0007.30C4] # <HALFWIDTH KATAKANA LETTER TU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3064 30FC ; [.32B2.0020.0011.3064][.32A2.0020.0007.3064] # <HIRAGANA LETTER TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C5 30FC ; [.32B2.0020.0011.30C4][.0000.0128.0002.3099][.32A2.0020.0007.30C5] # <KATAKANA LETTER DU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C4 3099 30FC ; [.32B2.0020.0011.30C4][.0000.0128.0002.3099][.32A2.0020.0007.30C5] # <KATAKANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF82 FF9E 30FC ; [.32B2.0020.0011.30C4][.0000.0128.0002.3099][.32A2.0020.0007.30C5] # <HALFWIDTH KATAKANA LETTER TU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF82 FF9E FF70 ; [.32B2.0020.0011.30C4][.0000.0128.0002.3099][.32A2.0020.0007.30C5] # <HALFWIDTH KATAKANA LETTER TU, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3065 30FC ; [.32B2.0020.0011.3064][.0000.0128.0002.3099][.32A2.0020.0007.3065] # <HIRAGANA LETTER DU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3064 3099 30FC ; [.32B2.0020.0011.3064][.0000.0128.0002.3099][.32A2.0020.0007.3065] # <HIRAGANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30CC 30FC ; [.32B7.0020.0011.30CC][.32A2.0020.0007.30CC] # <KATAKANA LETTER NU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF87 30FC ; [.32B7.0020.0011.30CC][.32A2.0020.0007.30CC] # <HALFWIDTH KATAKANA LETTER NU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF87 FF70 ; [.32B7.0020.0011.30CC][.32A2.0020.0007.30CC] # <HALFWIDTH KATAKANA LETTER NU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-306C 30FC ; [.32B7.0020.0011.306C][.32A2.0020.0007.306C] # <HIRAGANA LETTER NU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D5 30FC ; [.32BC.0020.0011.30D5][.32A2.0020.0007.30D5] # <KATAKANA LETTER HU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8C 30FC ; [.32BC.0020.0011.30D5][.32A2.0020.0007.30D5] # <HALFWIDTH KATAKANA LETTER HU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8C FF70 ; [.32BC.0020.0011.30D5][.32A2.0020.0007.30D5] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3075 30FC ; [.32BC.0020.0011.3075][.32A2.0020.0007.3075] # <HIRAGANA LETTER HU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D6 30FC ; [.32BC.0020.0011.30D5][.0000.0128.0002.3099][.32A2.0020.0007.30D6] # <KATAKANA LETTER BU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D5 3099 30FC ; [.32BC.0020.0011.30D5][.0000.0128.0002.3099][.32A2.0020.0007.30D6] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8C FF9E 30FC ; [.32BC.0020.0011.30D5][.0000.0128.0002.3099][.32A2.0020.0007.30D6] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8C FF9E FF70 ; [.32BC.0020.0011.30D5][.0000.0128.0002.3099][.32A2.0020.0007.30D6] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3076 30FC ; [.32BC.0020.0011.3075][.0000.0128.0002.3099][.32A2.0020.0007.3076] # <HIRAGANA LETTER BU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3075 3099 30FC ; [.32BC.0020.0011.3075][.0000.0128.0002.3099][.32A2.0020.0007.3076] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D7 30FC ; [.32BC.0020.0011.30D5][.0000.0129.0002.309A][.32A2.0020.0007.30D7] # <KATAKANA LETTER PU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D5 309A 30FC ; [.32BC.0020.0011.30D5][.0000.0129.0002.309A][.32A2.0020.0007.30D7] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8C FF9F 30FC ; [.32BC.0020.0011.30D5][.0000.0129.0002.309A][.32A2.0020.0007.30D7] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8C FF9F FF70 ; [.32BC.0020.0011.30D5][.0000.0129.0002.309A][.32A2.0020.0007.30D7] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3077 30FC ; [.32BC.0020.0011.3075][.0000.0129.0002.309A][.32A2.0020.0007.3077] # <HIRAGANA LETTER PU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3075 309A 30FC ; [.32BC.0020.0011.3075][.0000.0129.0002.309A][.32A2.0020.0007.3077] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30E0 30FC ; [.32C1.0020.0011.30E0][.32A2.0020.0007.30E0] # <KATAKANA LETTER MU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF91 30FC ; [.32C1.0020.0011.30E0][.32A2.0020.0007.30E0] # <HALFWIDTH KATAKANA LETTER MU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF91 FF70 ; [.32C1.0020.0011.30E0][.32A2.0020.0007.30E0] # <HALFWIDTH KATAKANA LETTER MU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3080 30FC ; [.32C1.0020.0011.3080][.32A2.0020.0007.3080] # <HIRAGANA LETTER MU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30E5 30FC ; [.32C5.0020.000F.30E5][.32A2.0020.0007.30E5] # <KATAKANA LETTER SMALL YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6D 30FC ; [.32C5.0020.000F.30E5][.32A2.0020.0007.30E5] # <HALFWIDTH KATAKANA LETTER SMALL YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6D FF70 ; [.32C5.0020.000F.30E5][.32A2.0020.0007.30E5] # <HALFWIDTH KATAKANA LETTER SMALL YU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3085 30FC ; [.32C5.0020.000F.3085][.32A2.0020.0007.3085] # <HIRAGANA LETTER SMALL YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30E6 30FC ; [.32C5.0020.0011.30E6][.32A2.0020.0007.30E6] # <KATAKANA LETTER YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF95 30FC ; [.32C5.0020.0011.30E6][.32A2.0020.0007.30E6] # <HALFWIDTH KATAKANA LETTER YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF95 FF70 ; [.32C5.0020.0011.30E6][.32A2.0020.0007.30E6] # <HALFWIDTH KATAKANA LETTER YU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3086 30FC ; [.32C5.0020.0011.3086][.32A2.0020.0007.3086] # <HIRAGANA LETTER YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30EB 30FC ; [.32CA.0020.0011.30EB][.32A2.0020.0007.30EB] # <KATAKANA LETTER RU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF99 30FC ; [.32CA.0020.0011.30EB][.32A2.0020.0007.30EB] # <HALFWIDTH KATAKANA LETTER RU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF99 FF70 ; [.32CA.0020.0011.30EB][.32A2.0020.0007.30EB] # <HALFWIDTH KATAKANA LETTER RU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-308B 30FC ; [.32CA.0020.0011.308B][.32A2.0020.0007.308B] # <HIRAGANA LETTER RU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F4 30FC ; [.32A2.0020.0011.30A6][.0000.0128.0002.3099][.32A2.0020.0007.30F4] # <KATAKANA LETTER VU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30A6 3099 30FC ; [.32A2.0020.0011.30A6][.0000.0128.0002.3099][.32A2.0020.0007.30F4] # <KATAKANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF73 FF9E 30FC ; [.32A2.0020.0011.30A6][.0000.0128.0002.3099][.32A2.0020.0007.30F4] # <HALFWIDTH KATAKANA LETTER U, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF73 FF9E FF70 ; [.32A2.0020.0011.30A6][.0000.0128.0002.3099][.32A2.0020.0007.30F4] # <HALFWIDTH KATAKANA LETTER U, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3094 30FC ; [.32A2.0020.0011.3046][.0000.0128.0002.3099][.32A2.0020.0007.3094] # <HIRAGANA LETTER VU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3046 3099 30FC ; [.32A2.0020.0011.3046][.0000.0128.0002.3099][.32A2.0020.0007.3094] # <HIRAGANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31F0 30FC ; [.32A8.0020.000F.31F0][.32A2.0020.0007.31F0] # <KATAKANA LETTER SMALL KU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31F2 30FC ; [.32AD.0020.000F.31F2][.32A2.0020.0007.31F2] # <KATAKANA LETTER SMALL SU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31F4 30FC ; [.32B7.0020.000F.31F4][.32A2.0020.0007.31F4] # <KATAKANA LETTER SMALL NU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31F7 30FC ; [.32BC.0020.000F.31F7][.32A2.0020.0007.31F7] # <KATAKANA LETTER SMALL HU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31FA 30FC ; [.32C1.0020.000F.31FA][.32A2.0020.0007.31FA] # <KATAKANA LETTER SMALL MU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31FD 30FC ; [.32CA.0020.000F.31FD][.32A2.0020.0007.31FD] # <KATAKANA LETTER SMALL RU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30A7 30FC ; [.32A4.0020.000F.30A7][.32A4.0020.0007.30A7] # <KATAKANA LETTER SMALL E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6A 30FC ; [.32A4.0020.000F.30A7][.32A4.0020.0007.30A7] # <HALFWIDTH KATAKANA LETTER SMALL E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6A FF70 ; [.32A4.0020.000F.30A7][.32A4.0020.0007.30A7] # <HALFWIDTH KATAKANA LETTER SMALL E, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3047 30FC ; [.32A4.0020.000F.3047][.32A4.0020.0007.3047] # <HIRAGANA LETTER SMALL E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30A8 30FC ; [.32A4.0020.0011.30A8][.32A4.0020.0007.30A8] # <KATAKANA LETTER E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF74 30FC ; [.32A4.0020.0011.30A8][.32A4.0020.0007.30A8] # <HALFWIDTH KATAKANA LETTER E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF74 FF70 ; [.32A4.0020.0011.30A8][.32A4.0020.0007.30A8] # <HALFWIDTH KATAKANA LETTER E, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3048 30FC ; [.32A4.0020.0011.3048][.32A4.0020.0007.3048] # <HIRAGANA LETTER E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B1 30FC ; [.32A9.0020.0011.30B1][.32A4.0020.0007.30B1] # <KATAKANA LETTER KE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF79 30FC ; [.32A9.0020.0011.30B1][.32A4.0020.0007.30B1] # <HALFWIDTH KATAKANA LETTER KE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF79 FF70 ; [.32A9.0020.0011.30B1][.32A4.0020.0007.30B1] # <HALFWIDTH KATAKANA LETTER KE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3051 30FC ; [.32A9.0020.0011.3051][.32A4.0020.0007.3051] # <HIRAGANA LETTER KE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B2 30FC ; [.32A9.0020.0011.30B1][.0000.0128.0002.3099][.32A4.0020.0007.30B2] # <KATAKANA LETTER GE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B1 3099 30FC ; [.32A9.0020.0011.30B1][.0000.0128.0002.3099][.32A4.0020.0007.30B2] # <KATAKANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF79 FF9E 30FC ; [.32A9.0020.0011.30B1][.0000.0128.0002.3099][.32A4.0020.0007.30B2] # <HALFWIDTH KATAKANA LETTER KE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF79 FF9E FF70 ; [.32A9.0020.0011.30B1][.0000.0128.0002.3099][.32A4.0020.0007.30B2] # <HALFWIDTH KATAKANA LETTER KE, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3052 30FC ; [.32A9.0020.0011.3051][.0000.0128.0002.3099][.32A4.0020.0007.3052] # <HIRAGANA LETTER GE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3051 3099 30FC ; [.32A9.0020.0011.3051][.0000.0128.0002.3099][.32A4.0020.0007.3052] # <HIRAGANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30BB 30FC ; [.32AE.0020.0011.30BB][.32A4.0020.0007.30BB] # <KATAKANA LETTER SE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7E 30FC ; [.32AE.0020.0011.30BB][.32A4.0020.0007.30BB] # <HALFWIDTH KATAKANA LETTER SE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7E FF70 ; [.32AE.0020.0011.30BB][.32A4.0020.0007.30BB] # <HALFWIDTH KATAKANA LETTER SE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-305B 30FC ; [.32AE.0020.0011.305B][.32A4.0020.0007.305B] # <HIRAGANA LETTER SE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30BC 30FC ; [.32AE.0020.0011.30BB][.0000.0128.0002.3099][.32A4.0020.0007.30BC] # <KATAKANA LETTER ZE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30BB 3099 30FC ; [.32AE.0020.0011.30BB][.0000.0128.0002.3099][.32A4.0020.0007.30BC] # <KATAKANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7E FF9E 30FC ; [.32AE.0020.0011.30BB][.0000.0128.0002.3099][.32A4.0020.0007.30BC] # <HALFWIDTH KATAKANA LETTER SE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7E FF9E FF70 ; [.32AE.0020.0011.30BB][.0000.0128.0002.3099][.32A4.0020.0007.30BC] # <HALFWIDTH KATAKANA LETTER SE, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-305C 30FC ; [.32AE.0020.0011.305B][.0000.0128.0002.3099][.32A4.0020.0007.305C] # <HIRAGANA LETTER ZE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-305B 3099 30FC ; [.32AE.0020.0011.305B][.0000.0128.0002.3099][.32A4.0020.0007.305C] # <HIRAGANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C6 30FC ; [.32B3.0020.0011.30C6][.32A4.0020.0007.30C6] # <KATAKANA LETTER TE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF83 30FC ; [.32B3.0020.0011.30C6][.32A4.0020.0007.30C6] # <HALFWIDTH KATAKANA LETTER TE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF83 FF70 ; [.32B3.0020.0011.30C6][.32A4.0020.0007.30C6] # <HALFWIDTH KATAKANA LETTER TE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3066 30FC ; [.32B3.0020.0011.3066][.32A4.0020.0007.3066] # <HIRAGANA LETTER TE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C7 30FC ; [.32B3.0020.0011.30C6][.0000.0128.0002.3099][.32A4.0020.0007.30C7] # <KATAKANA LETTER DE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C6 3099 30FC ; [.32B3.0020.0011.30C6][.0000.0128.0002.3099][.32A4.0020.0007.30C7] # <KATAKANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF83 FF9E 30FC ; [.32B3.0020.0011.30C6][.0000.0128.0002.3099][.32A4.0020.0007.30C7] # <HALFWIDTH KATAKANA LETTER TE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF83 FF9E FF70 ; [.32B3.0020.0011.30C6][.0000.0128.0002.3099][.32A4.0020.0007.30C7] # <HALFWIDTH KATAKANA LETTER TE, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3067 30FC ; [.32B3.0020.0011.3066][.0000.0128.0002.3099][.32A4.0020.0007.3067] # <HIRAGANA LETTER DE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3066 3099 30FC ; [.32B3.0020.0011.3066][.0000.0128.0002.3099][.32A4.0020.0007.3067] # <HIRAGANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30CD 30FC ; [.32B8.0020.0011.30CD][.32A4.0020.0007.30CD] # <KATAKANA LETTER NE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF88 30FC ; [.32B8.0020.0011.30CD][.32A4.0020.0007.30CD] # <HALFWIDTH KATAKANA LETTER NE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF88 FF70 ; [.32B8.0020.0011.30CD][.32A4.0020.0007.30CD] # <HALFWIDTH KATAKANA LETTER NE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-306D 30FC ; [.32B8.0020.0011.306D][.32A4.0020.0007.306D] # <HIRAGANA LETTER NE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D8 30FC ; [.32BD.0020.0011.30D8][.32A4.0020.0007.30D8] # <KATAKANA LETTER HE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8D 30FC ; [.32BD.0020.0011.30D8][.32A4.0020.0007.30D8] # <HALFWIDTH KATAKANA LETTER HE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8D FF70 ; [.32BD.0020.0011.30D8][.32A4.0020.0007.30D8] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3078 30FC ; [.32BD.0020.0011.3078][.32A4.0020.0007.3078] # <HIRAGANA LETTER HE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D9 30FC ; [.32BD.0020.0011.30D8][.0000.0128.0002.3099][.32A4.0020.0007.30D9] # <KATAKANA LETTER BE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D8 3099 30FC ; [.32BD.0020.0011.30D8][.0000.0128.0002.3099][.32A4.0020.0007.30D9] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8D FF9E 30FC ; [.32BD.0020.0011.30D8][.0000.0128.0002.3099][.32A4.0020.0007.30D9] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8D FF9E FF70 ; [.32BD.0020.0011.30D8][.0000.0128.0002.3099][.32A4.0020.0007.30D9] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3079 30FC ; [.32BD.0020.0011.3078][.0000.0128.0002.3099][.32A4.0020.0007.3079] # <HIRAGANA LETTER BE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3078 3099 30FC ; [.32BD.0020.0011.3078][.0000.0128.0002.3099][.32A4.0020.0007.3079] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30DA 30FC ; [.32BD.0020.0011.30D8][.0000.0129.0002.309A][.32A4.0020.0007.30DA] # <KATAKANA LETTER PE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30D8 309A 30FC ; [.32BD.0020.0011.30D8][.0000.0129.0002.309A][.32A4.0020.0007.30DA] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8D FF9F 30FC ; [.32BD.0020.0011.30D8][.0000.0129.0002.309A][.32A4.0020.0007.30DA] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8D FF9F FF70 ; [.32BD.0020.0011.30D8][.0000.0129.0002.309A][.32A4.0020.0007.30DA] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-307A 30FC ; [.32BD.0020.0011.3078][.0000.0129.0002.309A][.32A4.0020.0007.307A] # <HIRAGANA LETTER PE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3078 309A 30FC ; [.32BD.0020.0011.3078][.0000.0129.0002.309A][.32A4.0020.0007.307A] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30E1 30FC ; [.32C2.0020.0011.30E1][.32A4.0020.0007.30E1] # <KATAKANA LETTER ME, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF92 30FC ; [.32C2.0020.0011.30E1][.32A4.0020.0007.30E1] # <HALFWIDTH KATAKANA LETTER ME, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF92 FF70 ; [.32C2.0020.0011.30E1][.32A4.0020.0007.30E1] # <HALFWIDTH KATAKANA LETTER ME, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3081 30FC ; [.32C2.0020.0011.3081][.32A4.0020.0007.3081] # <HIRAGANA LETTER ME, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30EC 30FC ; [.32CB.0020.0011.30EC][.32A4.0020.0007.30EC] # <KATAKANA LETTER RE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF9A 30FC ; [.32CB.0020.0011.30EC][.32A4.0020.0007.30EC] # <HALFWIDTH KATAKANA LETTER RE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF9A FF70 ; [.32CB.0020.0011.30EC][.32A4.0020.0007.30EC] # <HALFWIDTH KATAKANA LETTER RE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-308C 30FC ; [.32CB.0020.0011.308C][.32A4.0020.0007.308C] # <HIRAGANA LETTER RE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F1 30FC ; [.32CF.0020.0011.30F1][.32A4.0020.0007.30F1] # <KATAKANA LETTER WE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3091 30FC ; [.32CF.0020.0011.3091][.32A4.0020.0007.3091] # <HIRAGANA LETTER WE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F9 30FC ; [.32CF.0020.0011.30F1][.0000.0128.0002.3099][.32A4.0020.0007.30F9] # <KATAKANA LETTER VE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F1 3099 30FC ; [.32CF.0020.0011.30F1][.0000.0128.0002.3099][.32A4.0020.0007.30F9] # <KATAKANA LETTER WE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F6 30FC ; [.32A9.0020.000F.30F6][.32A4.0020.0007.30F6] # <KATAKANA LETTER SMALL KE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3096 30FC ; [.32A9.0020.000F.3096][.32A4.0020.0007.3096] # <HIRAGANA LETTER SMALL KE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31F8 30FC ; [.32BD.0020.000F.31F8][.32A4.0020.0007.31F8] # <KATAKANA LETTER SMALL HE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31FE 30FC ; [.32CB.0020.000F.31FE][.32A4.0020.0007.31FE] # <KATAKANA LETTER SMALL RE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30A9 30FC ; [.32A5.0020.000F.30A9][.32A5.0020.0007.30A9] # <KATAKANA LETTER SMALL O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6B 30FC ; [.32A5.0020.000F.30A9][.32A5.0020.0007.30A9] # <HALFWIDTH KATAKANA LETTER SMALL O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6B FF70 ; [.32A5.0020.000F.30A9][.32A5.0020.0007.30A9] # <HALFWIDTH KATAKANA LETTER SMALL O, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3049 30FC ; [.32A5.0020.000F.3049][.32A5.0020.0007.3049] # <HIRAGANA LETTER SMALL O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30AA 30FC ; [.32A5.0020.0011.30AA][.32A5.0020.0007.30AA] # <KATAKANA LETTER O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF75 30FC ; [.32A5.0020.0011.30AA][.32A5.0020.0007.30AA] # <HALFWIDTH KATAKANA LETTER O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF75 FF70 ; [.32A5.0020.0011.30AA][.32A5.0020.0007.30AA] # <HALFWIDTH KATAKANA LETTER O, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-304A 30FC ; [.32A5.0020.0011.304A][.32A5.0020.0007.304A] # <HIRAGANA LETTER O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B3 30FC ; [.32AA.0020.0011.30B3][.32A5.0020.0007.30B3] # <KATAKANA LETTER KO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7A 30FC ; [.32AA.0020.0011.30B3][.32A5.0020.0007.30B3] # <HALFWIDTH KATAKANA LETTER KO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7A FF70 ; [.32AA.0020.0011.30B3][.32A5.0020.0007.30B3] # <HALFWIDTH KATAKANA LETTER KO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3053 30FC ; [.32AA.0020.0011.3053][.32A5.0020.0007.3053] # <HIRAGANA LETTER KO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B4 30FC ; [.32AA.0020.0011.30B3][.0000.0128.0002.3099][.32A5.0020.0007.30B4] # <KATAKANA LETTER GO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30B3 3099 30FC ; [.32AA.0020.0011.30B3][.0000.0128.0002.3099][.32A5.0020.0007.30B4] # <KATAKANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7A FF9E 30FC ; [.32AA.0020.0011.30B3][.0000.0128.0002.3099][.32A5.0020.0007.30B4] # <HALFWIDTH KATAKANA LETTER KO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7A FF9E FF70 ; [.32AA.0020.0011.30B3][.0000.0128.0002.3099][.32A5.0020.0007.30B4] # <HALFWIDTH KATAKANA LETTER KO, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3054 30FC ; [.32AA.0020.0011.3053][.0000.0128.0002.3099][.32A5.0020.0007.3054] # <HIRAGANA LETTER GO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3053 3099 30FC ; [.32AA.0020.0011.3053][.0000.0128.0002.3099][.32A5.0020.0007.3054] # <HIRAGANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30BD 30FC ; [.32AF.0020.0011.30BD][.32A5.0020.0007.30BD] # <KATAKANA LETTER SO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7F 30FC ; [.32AF.0020.0011.30BD][.32A5.0020.0007.30BD] # <HALFWIDTH KATAKANA LETTER SO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7F FF70 ; [.32AF.0020.0011.30BD][.32A5.0020.0007.30BD] # <HALFWIDTH KATAKANA LETTER SO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-305D 30FC ; [.32AF.0020.0011.305D][.32A5.0020.0007.305D] # <HIRAGANA LETTER SO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30BE 30FC ; [.32AF.0020.0011.30BD][.0000.0128.0002.3099][.32A5.0020.0007.30BE] # <KATAKANA LETTER ZO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30BD 3099 30FC ; [.32AF.0020.0011.30BD][.0000.0128.0002.3099][.32A5.0020.0007.30BE] # <KATAKANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7F FF9E 30FC ; [.32AF.0020.0011.30BD][.0000.0128.0002.3099][.32A5.0020.0007.30BE] # <HALFWIDTH KATAKANA LETTER SO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF7F FF9E FF70 ; [.32AF.0020.0011.30BD][.0000.0128.0002.3099][.32A5.0020.0007.30BE] # <HALFWIDTH KATAKANA LETTER SO, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-305E 30FC ; [.32AF.0020.0011.305D][.0000.0128.0002.3099][.32A5.0020.0007.305E] # <HIRAGANA LETTER ZO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-305D 3099 30FC ; [.32AF.0020.0011.305D][.0000.0128.0002.3099][.32A5.0020.0007.305E] # <HIRAGANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C8 30FC ; [.32B4.0020.0011.30C8][.32A5.0020.0007.30C8] # <KATAKANA LETTER TO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF84 30FC ; [.32B4.0020.0011.30C8][.32A5.0020.0007.30C8] # <HALFWIDTH KATAKANA LETTER TO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF84 FF70 ; [.32B4.0020.0011.30C8][.32A5.0020.0007.30C8] # <HALFWIDTH KATAKANA LETTER TO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3068 30FC ; [.32B4.0020.0011.3068][.32A5.0020.0007.3068] # <HIRAGANA LETTER TO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C9 30FC ; [.32B4.0020.0011.30C8][.0000.0128.0002.3099][.32A5.0020.0007.30C9] # <KATAKANA LETTER DO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30C8 3099 30FC ; [.32B4.0020.0011.30C8][.0000.0128.0002.3099][.32A5.0020.0007.30C9] # <KATAKANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF84 FF9E 30FC ; [.32B4.0020.0011.30C8][.0000.0128.0002.3099][.32A5.0020.0007.30C9] # <HALFWIDTH KATAKANA LETTER TO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF84 FF9E FF70 ; [.32B4.0020.0011.30C8][.0000.0128.0002.3099][.32A5.0020.0007.30C9] # <HALFWIDTH KATAKANA LETTER TO, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3069 30FC ; [.32B4.0020.0011.3068][.0000.0128.0002.3099][.32A5.0020.0007.3069] # <HIRAGANA LETTER DO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3068 3099 30FC ; [.32B4.0020.0011.3068][.0000.0128.0002.3099][.32A5.0020.0007.3069] # <HIRAGANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30CE 30FC ; [.32B9.0020.0011.30CE][.32A5.0020.0007.30CE] # <KATAKANA LETTER NO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF89 30FC ; [.32B9.0020.0011.30CE][.32A5.0020.0007.30CE] # <HALFWIDTH KATAKANA LETTER NO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF89 FF70 ; [.32B9.0020.0011.30CE][.32A5.0020.0007.30CE] # <HALFWIDTH KATAKANA LETTER NO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-306E 30FC ; [.32B9.0020.0011.306E][.32A5.0020.0007.306E] # <HIRAGANA LETTER NO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30DB 30FC ; [.32BE.0020.0011.30DB][.32A5.0020.0007.30DB] # <KATAKANA LETTER HO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8E 30FC ; [.32BE.0020.0011.30DB][.32A5.0020.0007.30DB] # <HALFWIDTH KATAKANA LETTER HO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8E FF70 ; [.32BE.0020.0011.30DB][.32A5.0020.0007.30DB] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-307B 30FC ; [.32BE.0020.0011.307B][.32A5.0020.0007.307B] # <HIRAGANA LETTER HO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30DC 30FC ; [.32BE.0020.0011.30DB][.0000.0128.0002.3099][.32A5.0020.0007.30DC] # <KATAKANA LETTER BO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30DB 3099 30FC ; [.32BE.0020.0011.30DB][.0000.0128.0002.3099][.32A5.0020.0007.30DC] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8E FF9E 30FC ; [.32BE.0020.0011.30DB][.0000.0128.0002.3099][.32A5.0020.0007.30DC] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8E FF9E FF70 ; [.32BE.0020.0011.30DB][.0000.0128.0002.3099][.32A5.0020.0007.30DC] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-307C 30FC ; [.32BE.0020.0011.307B][.0000.0128.0002.3099][.32A5.0020.0007.307C] # <HIRAGANA LETTER BO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-307B 3099 30FC ; [.32BE.0020.0011.307B][.0000.0128.0002.3099][.32A5.0020.0007.307C] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30DD 30FC ; [.32BE.0020.0011.30DB][.0000.0129.0002.309A][.32A5.0020.0007.30DD] # <KATAKANA LETTER PO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30DB 309A 30FC ; [.32BE.0020.0011.30DB][.0000.0129.0002.309A][.32A5.0020.0007.30DD] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8E FF9F 30FC ; [.32BE.0020.0011.30DB][.0000.0129.0002.309A][.32A5.0020.0007.30DD] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF8E FF9F FF70 ; [.32BE.0020.0011.30DB][.0000.0129.0002.309A][.32A5.0020.0007.30DD] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-307D 30FC ; [.32BE.0020.0011.307B][.0000.0129.0002.309A][.32A5.0020.0007.307D] # <HIRAGANA LETTER PO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-307B 309A 30FC ; [.32BE.0020.0011.307B][.0000.0129.0002.309A][.32A5.0020.0007.307D] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30E2 30FC ; [.32C3.0020.0011.30E2][.32A5.0020.0007.30E2] # <KATAKANA LETTER MO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF93 30FC ; [.32C3.0020.0011.30E2][.32A5.0020.0007.30E2] # <HALFWIDTH KATAKANA LETTER MO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF93 FF70 ; [.32C3.0020.0011.30E2][.32A5.0020.0007.30E2] # <HALFWIDTH KATAKANA LETTER MO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3082 30FC ; [.32C3.0020.0011.3082][.32A5.0020.0007.3082] # <HIRAGANA LETTER MO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30E7 30FC ; [.32C7.0020.000F.30E7][.32A5.0020.0007.30E7] # <KATAKANA LETTER SMALL YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6E 30FC ; [.32C7.0020.000F.30E7][.32A5.0020.0007.30E7] # <HALFWIDTH KATAKANA LETTER SMALL YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF6E FF70 ; [.32C7.0020.000F.30E7][.32A5.0020.0007.30E7] # <HALFWIDTH KATAKANA LETTER SMALL YO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3087 30FC ; [.32C7.0020.000F.3087][.32A5.0020.0007.3087] # <HIRAGANA LETTER SMALL YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30E8 30FC ; [.32C7.0020.0011.30E8][.32A5.0020.0007.30E8] # <KATAKANA LETTER YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF96 30FC ; [.32C7.0020.0011.30E8][.32A5.0020.0007.30E8] # <HALFWIDTH KATAKANA LETTER YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF96 FF70 ; [.32C7.0020.0011.30E8][.32A5.0020.0007.30E8] # <HALFWIDTH KATAKANA LETTER YO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3088 30FC ; [.32C7.0020.0011.3088][.32A5.0020.0007.3088] # <HIRAGANA LETTER YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30ED 30FC ; [.32CC.0020.0011.30ED][.32A5.0020.0007.30ED] # <KATAKANA LETTER RO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF9B 30FC ; [.32CC.0020.0011.30ED][.32A5.0020.0007.30ED] # <HALFWIDTH KATAKANA LETTER RO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF9B FF70 ; [.32CC.0020.0011.30ED][.32A5.0020.0007.30ED] # <HALFWIDTH KATAKANA LETTER RO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-308D 30FC ; [.32CC.0020.0011.308D][.32A5.0020.0007.308D] # <HIRAGANA LETTER RO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F2 30FC ; [.32D0.0020.0011.30F2][.32A5.0020.0007.30F2] # <KATAKANA LETTER WO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF66 30FC ; [.32D0.0020.0011.30F2][.32A5.0020.0007.30F2] # <HALFWIDTH KATAKANA LETTER WO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF66 FF70 ; [.32D0.0020.0011.30F2][.32A5.0020.0007.30F2] # <HALFWIDTH KATAKANA LETTER WO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-3092 30FC ; [.32D0.0020.0011.3092][.32A5.0020.0007.3092] # <HIRAGANA LETTER WO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30FA 30FC ; [.32D0.0020.0011.30F2][.0000.0128.0002.3099][.32A5.0020.0007.30FA] # <KATAKANA LETTER VO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30F2 3099 30FC ; [.32D0.0020.0011.30F2][.0000.0128.0002.3099][.32A5.0020.0007.30FA] # <KATAKANA LETTER WO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF66 FF9E 30FC ; [.32D0.0020.0011.30F2][.0000.0128.0002.3099][.32A5.0020.0007.30FA] # <HALFWIDTH KATAKANA LETTER WO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-FF66 FF9E FF70 ; [.32D0.0020.0011.30F2][.0000.0128.0002.3099][.32A5.0020.0007.30FA] # <HALFWIDTH KATAKANA LETTER WO, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31F3 30FC ; [.32B4.0020.000F.31F3][.32A5.0020.0007.31F3] # <KATAKANA LETTER SMALL TO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31F9 30FC ; [.32BE.0020.000F.31F9][.32A5.0020.0007.31F9] # <KATAKANA LETTER SMALL HO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-31FF 30FC ; [.32CC.0020.000F.31FF][.32A5.0020.0007.31FF] # <KATAKANA LETTER SMALL RO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
-30A1 30FD ; [.32A0.0020.000F.30A1][.32A0.0020.0010.30A1] # <KATAKANA LETTER SMALL A, KATAKANA ITERATION MARK>
-FF67 30FD ; [.32A0.0020.000F.30A1][.32A0.0020.0010.30A1] # <HALFWIDTH KATAKANA LETTER SMALL A, KATAKANA ITERATION MARK>
-3041 309D ; [.32A0.0020.000F.3041][.32A0.0020.0010.3041] # <HIRAGANA LETTER SMALL A, HIRAGANA ITERATION MARK>
-30A2 30FD ; [.32A0.0020.0011.30A2][.32A0.0020.0010.30A2] # <KATAKANA LETTER A, KATAKANA ITERATION MARK>
-FF71 30FD ; [.32A0.0020.0011.30A2][.32A0.0020.0010.30A2] # <HALFWIDTH KATAKANA LETTER A, KATAKANA ITERATION MARK>
-3042 309D ; [.32A0.0020.0011.3042][.32A0.0020.0010.3042] # <HIRAGANA LETTER A, HIRAGANA ITERATION MARK>
-30A3 30FD ; [.32A1.0020.000F.30A3][.32A1.0020.0010.30A3] # <KATAKANA LETTER SMALL I, KATAKANA ITERATION MARK>
-FF68 30FD ; [.32A1.0020.000F.30A3][.32A1.0020.0010.30A3] # <HALFWIDTH KATAKANA LETTER SMALL I, KATAKANA ITERATION MARK>
-3043 309D ; [.32A1.0020.000F.3043][.32A1.0020.0010.3043] # <HIRAGANA LETTER SMALL I, HIRAGANA ITERATION MARK>
-30A4 30FD ; [.32A1.0020.0011.30A4][.32A1.0020.0010.30A4] # <KATAKANA LETTER I, KATAKANA ITERATION MARK>
-FF72 30FD ; [.32A1.0020.0011.30A4][.32A1.0020.0010.30A4] # <HALFWIDTH KATAKANA LETTER I, KATAKANA ITERATION MARK>
-3044 309D ; [.32A1.0020.0011.3044][.32A1.0020.0010.3044] # <HIRAGANA LETTER I, HIRAGANA ITERATION MARK>
-30A5 30FD ; [.32A2.0020.000F.30A5][.32A2.0020.0010.30A5] # <KATAKANA LETTER SMALL U, KATAKANA ITERATION MARK>
-FF69 30FD ; [.32A2.0020.000F.30A5][.32A2.0020.0010.30A5] # <HALFWIDTH KATAKANA LETTER SMALL U, KATAKANA ITERATION MARK>
-3045 309D ; [.32A2.0020.000F.3045][.32A2.0020.0010.3045] # <HIRAGANA LETTER SMALL U, HIRAGANA ITERATION MARK>
-30A5 30FE ; [.32A2.0020.000F.30A5][.32A2.0020.0010.30A5][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL U, KATAKANA VOICED ITERATION MARK>
-FF69 30FE ; [.32A2.0020.000F.30A5][.32A2.0020.0010.30A5][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SMALL U, KATAKANA VOICED ITERATION MARK>
-3045 309E ; [.32A2.0020.000F.3045][.32A2.0020.0010.3045][.0000.0128.0002.3099] # <HIRAGANA LETTER SMALL U, HIRAGANA VOICED ITERATION MARK>
-30A6 30FD ; [.32A2.0020.0011.30A6][.32A2.0020.0010.30A6] # <KATAKANA LETTER U, KATAKANA ITERATION MARK>
-FF73 30FD ; [.32A2.0020.0011.30A6][.32A2.0020.0010.30A6] # <HALFWIDTH KATAKANA LETTER U, KATAKANA ITERATION MARK>
-3046 309D ; [.32A2.0020.0011.3046][.32A2.0020.0010.3046] # <HIRAGANA LETTER U, HIRAGANA ITERATION MARK>
-30A6 30FE ; [.32A2.0020.0011.30A6][.32A2.0020.0010.30A6][.0000.0128.0002.3099] # <KATAKANA LETTER U, KATAKANA VOICED ITERATION MARK>
-FF73 30FE ; [.32A2.0020.0011.30A6][.32A2.0020.0010.30A6][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER U, KATAKANA VOICED ITERATION MARK>
-3046 309E ; [.32A2.0020.0011.3046][.32A2.0020.0010.3046][.0000.0128.0002.3099] # <HIRAGANA LETTER U, HIRAGANA VOICED ITERATION MARK>
-30A7 30FD ; [.32A4.0020.000F.30A7][.32A4.0020.0010.30A7] # <KATAKANA LETTER SMALL E, KATAKANA ITERATION MARK>
-FF6A 30FD ; [.32A4.0020.000F.30A7][.32A4.0020.0010.30A7] # <HALFWIDTH KATAKANA LETTER SMALL E, KATAKANA ITERATION MARK>
-3047 309D ; [.32A4.0020.000F.3047][.32A4.0020.0010.3047] # <HIRAGANA LETTER SMALL E, HIRAGANA ITERATION MARK>
-30A8 30FD ; [.32A4.0020.0011.30A8][.32A4.0020.0010.30A8] # <KATAKANA LETTER E, KATAKANA ITERATION MARK>
-FF74 30FD ; [.32A4.0020.0011.30A8][.32A4.0020.0010.30A8] # <HALFWIDTH KATAKANA LETTER E, KATAKANA ITERATION MARK>
-3048 309D ; [.32A4.0020.0011.3048][.32A4.0020.0010.3048] # <HIRAGANA LETTER E, HIRAGANA ITERATION MARK>
-30A9 30FD ; [.32A5.0020.000F.30A9][.32A5.0020.0010.30A9] # <KATAKANA LETTER SMALL O, KATAKANA ITERATION MARK>
-FF6B 30FD ; [.32A5.0020.000F.30A9][.32A5.0020.0010.30A9] # <HALFWIDTH KATAKANA LETTER SMALL O, KATAKANA ITERATION MARK>
-3049 309D ; [.32A5.0020.000F.3049][.32A5.0020.0010.3049] # <HIRAGANA LETTER SMALL O, HIRAGANA ITERATION MARK>
-30AA 30FD ; [.32A5.0020.0011.30AA][.32A5.0020.0010.30AA] # <KATAKANA LETTER O, KATAKANA ITERATION MARK>
-FF75 30FD ; [.32A5.0020.0011.30AA][.32A5.0020.0010.30AA] # <HALFWIDTH KATAKANA LETTER O, KATAKANA ITERATION MARK>
-304A 309D ; [.32A5.0020.0011.304A][.32A5.0020.0010.304A] # <HIRAGANA LETTER O, HIRAGANA ITERATION MARK>
-30AB 30FD ; [.32A6.0020.0011.30AB][.32A6.0020.0010.30AB] # <KATAKANA LETTER KA, KATAKANA ITERATION MARK>
-FF76 30FD ; [.32A6.0020.0011.30AB][.32A6.0020.0010.30AB] # <HALFWIDTH KATAKANA LETTER KA, KATAKANA ITERATION MARK>
-304B 309D ; [.32A6.0020.0011.304B][.32A6.0020.0010.304B] # <HIRAGANA LETTER KA, HIRAGANA ITERATION MARK>
-30AB 30FE ; [.32A6.0020.0011.30AB][.32A6.0020.0010.30AB][.0000.0128.0002.3099] # <KATAKANA LETTER KA, KATAKANA VOICED ITERATION MARK>
-FF76 30FE ; [.32A6.0020.0011.30AB][.32A6.0020.0010.30AB][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KA, KATAKANA VOICED ITERATION MARK>
-304B 309E ; [.32A6.0020.0011.304B][.32A6.0020.0010.304B][.0000.0128.0002.3099] # <HIRAGANA LETTER KA, HIRAGANA VOICED ITERATION MARK>
-30AC 30FD ; [.32A6.0020.0011.30AB][.0000.0128.0002.3099][.32A6.0020.0010.30AC] # <KATAKANA LETTER GA, KATAKANA ITERATION MARK>
-30AB 3099 30FD ; [.32A6.0020.0011.30AB][.0000.0128.0002.3099][.32A6.0020.0010.30AC] # <KATAKANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF76 FF9E 30FD ; [.32A6.0020.0011.30AB][.0000.0128.0002.3099][.32A6.0020.0010.30AC] # <HALFWIDTH KATAKANA LETTER KA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-304C 309D ; [.32A6.0020.0011.304B][.0000.0128.0002.3099][.32A6.0020.0010.304C] # <HIRAGANA LETTER GA, HIRAGANA ITERATION MARK>
-304B 3099 309D ; [.32A6.0020.0011.304B][.0000.0128.0002.3099][.32A6.0020.0010.304C] # <HIRAGANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30AC 30FE ; [.32A6.0020.0011.30AB][.0000.0128.0002.3099][.32A6.0020.0010.30AC][.0000.0128.0002.3099] # <KATAKANA LETTER GA, KATAKANA VOICED ITERATION MARK>
-30AB 3099 30FE ; [.32A6.0020.0011.30AB][.0000.0128.0002.3099][.32A6.0020.0010.30AC][.0000.0128.0002.3099] # <KATAKANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF76 FF9E 30FE ; [.32A6.0020.0011.30AB][.0000.0128.0002.3099][.32A6.0020.0010.30AC][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-304C 309E ; [.32A6.0020.0011.304B][.0000.0128.0002.3099][.32A6.0020.0010.304C][.0000.0128.0002.3099] # <HIRAGANA LETTER GA, HIRAGANA VOICED ITERATION MARK>
-304B 3099 309E ; [.32A6.0020.0011.304B][.0000.0128.0002.3099][.32A6.0020.0010.304C][.0000.0128.0002.3099] # <HIRAGANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30AD 30FD ; [.32A7.0020.0011.30AD][.32A7.0020.0010.30AD] # <KATAKANA LETTER KI, KATAKANA ITERATION MARK>
-FF77 30FD ; [.32A7.0020.0011.30AD][.32A7.0020.0010.30AD] # <HALFWIDTH KATAKANA LETTER KI, KATAKANA ITERATION MARK>
-304D 309D ; [.32A7.0020.0011.304D][.32A7.0020.0010.304D] # <HIRAGANA LETTER KI, HIRAGANA ITERATION MARK>
-30AD 30FE ; [.32A7.0020.0011.30AD][.32A7.0020.0010.30AD][.0000.0128.0002.3099] # <KATAKANA LETTER KI, KATAKANA VOICED ITERATION MARK>
-FF77 30FE ; [.32A7.0020.0011.30AD][.32A7.0020.0010.30AD][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KI, KATAKANA VOICED ITERATION MARK>
-304D 309E ; [.32A7.0020.0011.304D][.32A7.0020.0010.304D][.0000.0128.0002.3099] # <HIRAGANA LETTER KI, HIRAGANA VOICED ITERATION MARK>
-30AE 30FD ; [.32A7.0020.0011.30AD][.0000.0128.0002.3099][.32A7.0020.0010.30AE] # <KATAKANA LETTER GI, KATAKANA ITERATION MARK>
-30AD 3099 30FD ; [.32A7.0020.0011.30AD][.0000.0128.0002.3099][.32A7.0020.0010.30AE] # <KATAKANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF77 FF9E 30FD ; [.32A7.0020.0011.30AD][.0000.0128.0002.3099][.32A7.0020.0010.30AE] # <HALFWIDTH KATAKANA LETTER KI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-304E 309D ; [.32A7.0020.0011.304D][.0000.0128.0002.3099][.32A7.0020.0010.304E] # <HIRAGANA LETTER GI, HIRAGANA ITERATION MARK>
-304D 3099 309D ; [.32A7.0020.0011.304D][.0000.0128.0002.3099][.32A7.0020.0010.304E] # <HIRAGANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30AE 30FE ; [.32A7.0020.0011.30AD][.0000.0128.0002.3099][.32A7.0020.0010.30AE][.0000.0128.0002.3099] # <KATAKANA LETTER GI, KATAKANA VOICED ITERATION MARK>
-30AD 3099 30FE ; [.32A7.0020.0011.30AD][.0000.0128.0002.3099][.32A7.0020.0010.30AE][.0000.0128.0002.3099] # <KATAKANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF77 FF9E 30FE ; [.32A7.0020.0011.30AD][.0000.0128.0002.3099][.32A7.0020.0010.30AE][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-304E 309E ; [.32A7.0020.0011.304D][.0000.0128.0002.3099][.32A7.0020.0010.304E][.0000.0128.0002.3099] # <HIRAGANA LETTER GI, HIRAGANA VOICED ITERATION MARK>
-304D 3099 309E ; [.32A7.0020.0011.304D][.0000.0128.0002.3099][.32A7.0020.0010.304E][.0000.0128.0002.3099] # <HIRAGANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30AF 30FD ; [.32A8.0020.0011.30AF][.32A8.0020.0010.30AF] # <KATAKANA LETTER KU, KATAKANA ITERATION MARK>
-FF78 30FD ; [.32A8.0020.0011.30AF][.32A8.0020.0010.30AF] # <HALFWIDTH KATAKANA LETTER KU, KATAKANA ITERATION MARK>
-304F 309D ; [.32A8.0020.0011.304F][.32A8.0020.0010.304F] # <HIRAGANA LETTER KU, HIRAGANA ITERATION MARK>
-30AF 30FE ; [.32A8.0020.0011.30AF][.32A8.0020.0010.30AF][.0000.0128.0002.3099] # <KATAKANA LETTER KU, KATAKANA VOICED ITERATION MARK>
-FF78 30FE ; [.32A8.0020.0011.30AF][.32A8.0020.0010.30AF][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KU, KATAKANA VOICED ITERATION MARK>
-304F 309E ; [.32A8.0020.0011.304F][.32A8.0020.0010.304F][.0000.0128.0002.3099] # <HIRAGANA LETTER KU, HIRAGANA VOICED ITERATION MARK>
-30B0 30FD ; [.32A8.0020.0011.30AF][.0000.0128.0002.3099][.32A8.0020.0010.30B0] # <KATAKANA LETTER GU, KATAKANA ITERATION MARK>
-30AF 3099 30FD ; [.32A8.0020.0011.30AF][.0000.0128.0002.3099][.32A8.0020.0010.30B0] # <KATAKANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF78 FF9E 30FD ; [.32A8.0020.0011.30AF][.0000.0128.0002.3099][.32A8.0020.0010.30B0] # <HALFWIDTH KATAKANA LETTER KU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3050 309D ; [.32A8.0020.0011.304F][.0000.0128.0002.3099][.32A8.0020.0010.3050] # <HIRAGANA LETTER GU, HIRAGANA ITERATION MARK>
-304F 3099 309D ; [.32A8.0020.0011.304F][.0000.0128.0002.3099][.32A8.0020.0010.3050] # <HIRAGANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30B0 30FE ; [.32A8.0020.0011.30AF][.0000.0128.0002.3099][.32A8.0020.0010.30B0][.0000.0128.0002.3099] # <KATAKANA LETTER GU, KATAKANA VOICED ITERATION MARK>
-30AF 3099 30FE ; [.32A8.0020.0011.30AF][.0000.0128.0002.3099][.32A8.0020.0010.30B0][.0000.0128.0002.3099] # <KATAKANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF78 FF9E 30FE ; [.32A8.0020.0011.30AF][.0000.0128.0002.3099][.32A8.0020.0010.30B0][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3050 309E ; [.32A8.0020.0011.304F][.0000.0128.0002.3099][.32A8.0020.0010.3050][.0000.0128.0002.3099] # <HIRAGANA LETTER GU, HIRAGANA VOICED ITERATION MARK>
-304F 3099 309E ; [.32A8.0020.0011.304F][.0000.0128.0002.3099][.32A8.0020.0010.3050][.0000.0128.0002.3099] # <HIRAGANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30B1 30FD ; [.32A9.0020.0011.30B1][.32A9.0020.0010.30B1] # <KATAKANA LETTER KE, KATAKANA ITERATION MARK>
-FF79 30FD ; [.32A9.0020.0011.30B1][.32A9.0020.0010.30B1] # <HALFWIDTH KATAKANA LETTER KE, KATAKANA ITERATION MARK>
-3051 309D ; [.32A9.0020.0011.3051][.32A9.0020.0010.3051] # <HIRAGANA LETTER KE, HIRAGANA ITERATION MARK>
-30B1 30FE ; [.32A9.0020.0011.30B1][.32A9.0020.0010.30B1][.0000.0128.0002.3099] # <KATAKANA LETTER KE, KATAKANA VOICED ITERATION MARK>
-FF79 30FE ; [.32A9.0020.0011.30B1][.32A9.0020.0010.30B1][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KE, KATAKANA VOICED ITERATION MARK>
-3051 309E ; [.32A9.0020.0011.3051][.32A9.0020.0010.3051][.0000.0128.0002.3099] # <HIRAGANA LETTER KE, HIRAGANA VOICED ITERATION MARK>
-30B2 30FD ; [.32A9.0020.0011.30B1][.0000.0128.0002.3099][.32A9.0020.0010.30B2] # <KATAKANA LETTER GE, KATAKANA ITERATION MARK>
-30B1 3099 30FD ; [.32A9.0020.0011.30B1][.0000.0128.0002.3099][.32A9.0020.0010.30B2] # <KATAKANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF79 FF9E 30FD ; [.32A9.0020.0011.30B1][.0000.0128.0002.3099][.32A9.0020.0010.30B2] # <HALFWIDTH KATAKANA LETTER KE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3052 309D ; [.32A9.0020.0011.3051][.0000.0128.0002.3099][.32A9.0020.0010.3052] # <HIRAGANA LETTER GE, HIRAGANA ITERATION MARK>
-3051 3099 309D ; [.32A9.0020.0011.3051][.0000.0128.0002.3099][.32A9.0020.0010.3052] # <HIRAGANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30B2 30FE ; [.32A9.0020.0011.30B1][.0000.0128.0002.3099][.32A9.0020.0010.30B2][.0000.0128.0002.3099] # <KATAKANA LETTER GE, KATAKANA VOICED ITERATION MARK>
-30B1 3099 30FE ; [.32A9.0020.0011.30B1][.0000.0128.0002.3099][.32A9.0020.0010.30B2][.0000.0128.0002.3099] # <KATAKANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF79 FF9E 30FE ; [.32A9.0020.0011.30B1][.0000.0128.0002.3099][.32A9.0020.0010.30B2][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3052 309E ; [.32A9.0020.0011.3051][.0000.0128.0002.3099][.32A9.0020.0010.3052][.0000.0128.0002.3099] # <HIRAGANA LETTER GE, HIRAGANA VOICED ITERATION MARK>
-3051 3099 309E ; [.32A9.0020.0011.3051][.0000.0128.0002.3099][.32A9.0020.0010.3052][.0000.0128.0002.3099] # <HIRAGANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30B3 30FD ; [.32AA.0020.0011.30B3][.32AA.0020.0010.30B3] # <KATAKANA LETTER KO, KATAKANA ITERATION MARK>
-FF7A 30FD ; [.32AA.0020.0011.30B3][.32AA.0020.0010.30B3] # <HALFWIDTH KATAKANA LETTER KO, KATAKANA ITERATION MARK>
-3053 309D ; [.32AA.0020.0011.3053][.32AA.0020.0010.3053] # <HIRAGANA LETTER KO, HIRAGANA ITERATION MARK>
-30B3 30FE ; [.32AA.0020.0011.30B3][.32AA.0020.0010.30B3][.0000.0128.0002.3099] # <KATAKANA LETTER KO, KATAKANA VOICED ITERATION MARK>
-FF7A 30FE ; [.32AA.0020.0011.30B3][.32AA.0020.0010.30B3][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KO, KATAKANA VOICED ITERATION MARK>
-3053 309E ; [.32AA.0020.0011.3053][.32AA.0020.0010.3053][.0000.0128.0002.3099] # <HIRAGANA LETTER KO, HIRAGANA VOICED ITERATION MARK>
-30B4 30FD ; [.32AA.0020.0011.30B3][.0000.0128.0002.3099][.32AA.0020.0010.30B4] # <KATAKANA LETTER GO, KATAKANA ITERATION MARK>
-30B3 3099 30FD ; [.32AA.0020.0011.30B3][.0000.0128.0002.3099][.32AA.0020.0010.30B4] # <KATAKANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF7A FF9E 30FD ; [.32AA.0020.0011.30B3][.0000.0128.0002.3099][.32AA.0020.0010.30B4] # <HALFWIDTH KATAKANA LETTER KO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3054 309D ; [.32AA.0020.0011.3053][.0000.0128.0002.3099][.32AA.0020.0010.3054] # <HIRAGANA LETTER GO, HIRAGANA ITERATION MARK>
-3053 3099 309D ; [.32AA.0020.0011.3053][.0000.0128.0002.3099][.32AA.0020.0010.3054] # <HIRAGANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30B4 30FE ; [.32AA.0020.0011.30B3][.0000.0128.0002.3099][.32AA.0020.0010.30B4][.0000.0128.0002.3099] # <KATAKANA LETTER GO, KATAKANA VOICED ITERATION MARK>
-30B3 3099 30FE ; [.32AA.0020.0011.30B3][.0000.0128.0002.3099][.32AA.0020.0010.30B4][.0000.0128.0002.3099] # <KATAKANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF7A FF9E 30FE ; [.32AA.0020.0011.30B3][.0000.0128.0002.3099][.32AA.0020.0010.30B4][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3054 309E ; [.32AA.0020.0011.3053][.0000.0128.0002.3099][.32AA.0020.0010.3054][.0000.0128.0002.3099] # <HIRAGANA LETTER GO, HIRAGANA VOICED ITERATION MARK>
-3053 3099 309E ; [.32AA.0020.0011.3053][.0000.0128.0002.3099][.32AA.0020.0010.3054][.0000.0128.0002.3099] # <HIRAGANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30B5 30FD ; [.32AB.0020.0011.30B5][.32AB.0020.0010.30B5] # <KATAKANA LETTER SA, KATAKANA ITERATION MARK>
-FF7B 30FD ; [.32AB.0020.0011.30B5][.32AB.0020.0010.30B5] # <HALFWIDTH KATAKANA LETTER SA, KATAKANA ITERATION MARK>
-3055 309D ; [.32AB.0020.0011.3055][.32AB.0020.0010.3055] # <HIRAGANA LETTER SA, HIRAGANA ITERATION MARK>
-30B5 30FE ; [.32AB.0020.0011.30B5][.32AB.0020.0010.30B5][.0000.0128.0002.3099] # <KATAKANA LETTER SA, KATAKANA VOICED ITERATION MARK>
-FF7B 30FE ; [.32AB.0020.0011.30B5][.32AB.0020.0010.30B5][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SA, KATAKANA VOICED ITERATION MARK>
-3055 309E ; [.32AB.0020.0011.3055][.32AB.0020.0010.3055][.0000.0128.0002.3099] # <HIRAGANA LETTER SA, HIRAGANA VOICED ITERATION MARK>
-30B6 30FD ; [.32AB.0020.0011.30B5][.0000.0128.0002.3099][.32AB.0020.0010.30B6] # <KATAKANA LETTER ZA, KATAKANA ITERATION MARK>
-30B5 3099 30FD ; [.32AB.0020.0011.30B5][.0000.0128.0002.3099][.32AB.0020.0010.30B6] # <KATAKANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF7B FF9E 30FD ; [.32AB.0020.0011.30B5][.0000.0128.0002.3099][.32AB.0020.0010.30B6] # <HALFWIDTH KATAKANA LETTER SA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3056 309D ; [.32AB.0020.0011.3055][.0000.0128.0002.3099][.32AB.0020.0010.3056] # <HIRAGANA LETTER ZA, HIRAGANA ITERATION MARK>
-3055 3099 309D ; [.32AB.0020.0011.3055][.0000.0128.0002.3099][.32AB.0020.0010.3056] # <HIRAGANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30B6 30FE ; [.32AB.0020.0011.30B5][.0000.0128.0002.3099][.32AB.0020.0010.30B6][.0000.0128.0002.3099] # <KATAKANA LETTER ZA, KATAKANA VOICED ITERATION MARK>
-30B5 3099 30FE ; [.32AB.0020.0011.30B5][.0000.0128.0002.3099][.32AB.0020.0010.30B6][.0000.0128.0002.3099] # <KATAKANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF7B FF9E 30FE ; [.32AB.0020.0011.30B5][.0000.0128.0002.3099][.32AB.0020.0010.30B6][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3056 309E ; [.32AB.0020.0011.3055][.0000.0128.0002.3099][.32AB.0020.0010.3056][.0000.0128.0002.3099] # <HIRAGANA LETTER ZA, HIRAGANA VOICED ITERATION MARK>
-3055 3099 309E ; [.32AB.0020.0011.3055][.0000.0128.0002.3099][.32AB.0020.0010.3056][.0000.0128.0002.3099] # <HIRAGANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30B7 30FD ; [.32AC.0020.0011.30B7][.32AC.0020.0010.30B7] # <KATAKANA LETTER SI, KATAKANA ITERATION MARK>
-FF7C 30FD ; [.32AC.0020.0011.30B7][.32AC.0020.0010.30B7] # <HALFWIDTH KATAKANA LETTER SI, KATAKANA ITERATION MARK>
-3057 309D ; [.32AC.0020.0011.3057][.32AC.0020.0010.3057] # <HIRAGANA LETTER SI, HIRAGANA ITERATION MARK>
-30B7 30FE ; [.32AC.0020.0011.30B7][.32AC.0020.0010.30B7][.0000.0128.0002.3099] # <KATAKANA LETTER SI, KATAKANA VOICED ITERATION MARK>
-FF7C 30FE ; [.32AC.0020.0011.30B7][.32AC.0020.0010.30B7][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SI, KATAKANA VOICED ITERATION MARK>
-3057 309E ; [.32AC.0020.0011.3057][.32AC.0020.0010.3057][.0000.0128.0002.3099] # <HIRAGANA LETTER SI, HIRAGANA VOICED ITERATION MARK>
-30B8 30FD ; [.32AC.0020.0011.30B7][.0000.0128.0002.3099][.32AC.0020.0010.30B8] # <KATAKANA LETTER ZI, KATAKANA ITERATION MARK>
-30B7 3099 30FD ; [.32AC.0020.0011.30B7][.0000.0128.0002.3099][.32AC.0020.0010.30B8] # <KATAKANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF7C FF9E 30FD ; [.32AC.0020.0011.30B7][.0000.0128.0002.3099][.32AC.0020.0010.30B8] # <HALFWIDTH KATAKANA LETTER SI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3058 309D ; [.32AC.0020.0011.3057][.0000.0128.0002.3099][.32AC.0020.0010.3058] # <HIRAGANA LETTER ZI, HIRAGANA ITERATION MARK>
-3057 3099 309D ; [.32AC.0020.0011.3057][.0000.0128.0002.3099][.32AC.0020.0010.3058] # <HIRAGANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30B8 30FE ; [.32AC.0020.0011.30B7][.0000.0128.0002.3099][.32AC.0020.0010.30B8][.0000.0128.0002.3099] # <KATAKANA LETTER ZI, KATAKANA VOICED ITERATION MARK>
-30B7 3099 30FE ; [.32AC.0020.0011.30B7][.0000.0128.0002.3099][.32AC.0020.0010.30B8][.0000.0128.0002.3099] # <KATAKANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF7C FF9E 30FE ; [.32AC.0020.0011.30B7][.0000.0128.0002.3099][.32AC.0020.0010.30B8][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3058 309E ; [.32AC.0020.0011.3057][.0000.0128.0002.3099][.32AC.0020.0010.3058][.0000.0128.0002.3099] # <HIRAGANA LETTER ZI, HIRAGANA VOICED ITERATION MARK>
-3057 3099 309E ; [.32AC.0020.0011.3057][.0000.0128.0002.3099][.32AC.0020.0010.3058][.0000.0128.0002.3099] # <HIRAGANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30B9 30FD ; [.32AD.0020.0011.30B9][.32AD.0020.0010.30B9] # <KATAKANA LETTER SU, KATAKANA ITERATION MARK>
-FF7D 30FD ; [.32AD.0020.0011.30B9][.32AD.0020.0010.30B9] # <HALFWIDTH KATAKANA LETTER SU, KATAKANA ITERATION MARK>
-3059 309D ; [.32AD.0020.0011.3059][.32AD.0020.0010.3059] # <HIRAGANA LETTER SU, HIRAGANA ITERATION MARK>
-30B9 30FE ; [.32AD.0020.0011.30B9][.32AD.0020.0010.30B9][.0000.0128.0002.3099] # <KATAKANA LETTER SU, KATAKANA VOICED ITERATION MARK>
-FF7D 30FE ; [.32AD.0020.0011.30B9][.32AD.0020.0010.30B9][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SU, KATAKANA VOICED ITERATION MARK>
-3059 309E ; [.32AD.0020.0011.3059][.32AD.0020.0010.3059][.0000.0128.0002.3099] # <HIRAGANA LETTER SU, HIRAGANA VOICED ITERATION MARK>
-30BA 30FD ; [.32AD.0020.0011.30B9][.0000.0128.0002.3099][.32AD.0020.0010.30BA] # <KATAKANA LETTER ZU, KATAKANA ITERATION MARK>
-30B9 3099 30FD ; [.32AD.0020.0011.30B9][.0000.0128.0002.3099][.32AD.0020.0010.30BA] # <KATAKANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF7D FF9E 30FD ; [.32AD.0020.0011.30B9][.0000.0128.0002.3099][.32AD.0020.0010.30BA] # <HALFWIDTH KATAKANA LETTER SU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-305A 309D ; [.32AD.0020.0011.3059][.0000.0128.0002.3099][.32AD.0020.0010.305A] # <HIRAGANA LETTER ZU, HIRAGANA ITERATION MARK>
-3059 3099 309D ; [.32AD.0020.0011.3059][.0000.0128.0002.3099][.32AD.0020.0010.305A] # <HIRAGANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30BA 30FE ; [.32AD.0020.0011.30B9][.0000.0128.0002.3099][.32AD.0020.0010.30BA][.0000.0128.0002.3099] # <KATAKANA LETTER ZU, KATAKANA VOICED ITERATION MARK>
-30B9 3099 30FE ; [.32AD.0020.0011.30B9][.0000.0128.0002.3099][.32AD.0020.0010.30BA][.0000.0128.0002.3099] # <KATAKANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF7D FF9E 30FE ; [.32AD.0020.0011.30B9][.0000.0128.0002.3099][.32AD.0020.0010.30BA][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-305A 309E ; [.32AD.0020.0011.3059][.0000.0128.0002.3099][.32AD.0020.0010.305A][.0000.0128.0002.3099] # <HIRAGANA LETTER ZU, HIRAGANA VOICED ITERATION MARK>
-3059 3099 309E ; [.32AD.0020.0011.3059][.0000.0128.0002.3099][.32AD.0020.0010.305A][.0000.0128.0002.3099] # <HIRAGANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30BB 30FD ; [.32AE.0020.0011.30BB][.32AE.0020.0010.30BB] # <KATAKANA LETTER SE, KATAKANA ITERATION MARK>
-FF7E 30FD ; [.32AE.0020.0011.30BB][.32AE.0020.0010.30BB] # <HALFWIDTH KATAKANA LETTER SE, KATAKANA ITERATION MARK>
-305B 309D ; [.32AE.0020.0011.305B][.32AE.0020.0010.305B] # <HIRAGANA LETTER SE, HIRAGANA ITERATION MARK>
-30BB 30FE ; [.32AE.0020.0011.30BB][.32AE.0020.0010.30BB][.0000.0128.0002.3099] # <KATAKANA LETTER SE, KATAKANA VOICED ITERATION MARK>
-FF7E 30FE ; [.32AE.0020.0011.30BB][.32AE.0020.0010.30BB][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SE, KATAKANA VOICED ITERATION MARK>
-305B 309E ; [.32AE.0020.0011.305B][.32AE.0020.0010.305B][.0000.0128.0002.3099] # <HIRAGANA LETTER SE, HIRAGANA VOICED ITERATION MARK>
-30BC 30FD ; [.32AE.0020.0011.30BB][.0000.0128.0002.3099][.32AE.0020.0010.30BC] # <KATAKANA LETTER ZE, KATAKANA ITERATION MARK>
-30BB 3099 30FD ; [.32AE.0020.0011.30BB][.0000.0128.0002.3099][.32AE.0020.0010.30BC] # <KATAKANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF7E FF9E 30FD ; [.32AE.0020.0011.30BB][.0000.0128.0002.3099][.32AE.0020.0010.30BC] # <HALFWIDTH KATAKANA LETTER SE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-305C 309D ; [.32AE.0020.0011.305B][.0000.0128.0002.3099][.32AE.0020.0010.305C] # <HIRAGANA LETTER ZE, HIRAGANA ITERATION MARK>
-305B 3099 309D ; [.32AE.0020.0011.305B][.0000.0128.0002.3099][.32AE.0020.0010.305C] # <HIRAGANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30BC 30FE ; [.32AE.0020.0011.30BB][.0000.0128.0002.3099][.32AE.0020.0010.30BC][.0000.0128.0002.3099] # <KATAKANA LETTER ZE, KATAKANA VOICED ITERATION MARK>
-30BB 3099 30FE ; [.32AE.0020.0011.30BB][.0000.0128.0002.3099][.32AE.0020.0010.30BC][.0000.0128.0002.3099] # <KATAKANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF7E FF9E 30FE ; [.32AE.0020.0011.30BB][.0000.0128.0002.3099][.32AE.0020.0010.30BC][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-305C 309E ; [.32AE.0020.0011.305B][.0000.0128.0002.3099][.32AE.0020.0010.305C][.0000.0128.0002.3099] # <HIRAGANA LETTER ZE, HIRAGANA VOICED ITERATION MARK>
-305B 3099 309E ; [.32AE.0020.0011.305B][.0000.0128.0002.3099][.32AE.0020.0010.305C][.0000.0128.0002.3099] # <HIRAGANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30BD 30FD ; [.32AF.0020.0011.30BD][.32AF.0020.0010.30BD] # <KATAKANA LETTER SO, KATAKANA ITERATION MARK>
-FF7F 30FD ; [.32AF.0020.0011.30BD][.32AF.0020.0010.30BD] # <HALFWIDTH KATAKANA LETTER SO, KATAKANA ITERATION MARK>
-305D 309D ; [.32AF.0020.0011.305D][.32AF.0020.0010.305D] # <HIRAGANA LETTER SO, HIRAGANA ITERATION MARK>
-30BD 30FE ; [.32AF.0020.0011.30BD][.32AF.0020.0010.30BD][.0000.0128.0002.3099] # <KATAKANA LETTER SO, KATAKANA VOICED ITERATION MARK>
-FF7F 30FE ; [.32AF.0020.0011.30BD][.32AF.0020.0010.30BD][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SO, KATAKANA VOICED ITERATION MARK>
-305D 309E ; [.32AF.0020.0011.305D][.32AF.0020.0010.305D][.0000.0128.0002.3099] # <HIRAGANA LETTER SO, HIRAGANA VOICED ITERATION MARK>
-30BE 30FD ; [.32AF.0020.0011.30BD][.0000.0128.0002.3099][.32AF.0020.0010.30BE] # <KATAKANA LETTER ZO, KATAKANA ITERATION MARK>
-30BD 3099 30FD ; [.32AF.0020.0011.30BD][.0000.0128.0002.3099][.32AF.0020.0010.30BE] # <KATAKANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF7F FF9E 30FD ; [.32AF.0020.0011.30BD][.0000.0128.0002.3099][.32AF.0020.0010.30BE] # <HALFWIDTH KATAKANA LETTER SO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-305E 309D ; [.32AF.0020.0011.305D][.0000.0128.0002.3099][.32AF.0020.0010.305E] # <HIRAGANA LETTER ZO, HIRAGANA ITERATION MARK>
-305D 3099 309D ; [.32AF.0020.0011.305D][.0000.0128.0002.3099][.32AF.0020.0010.305E] # <HIRAGANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30BE 30FE ; [.32AF.0020.0011.30BD][.0000.0128.0002.3099][.32AF.0020.0010.30BE][.0000.0128.0002.3099] # <KATAKANA LETTER ZO, KATAKANA VOICED ITERATION MARK>
-30BD 3099 30FE ; [.32AF.0020.0011.30BD][.0000.0128.0002.3099][.32AF.0020.0010.30BE][.0000.0128.0002.3099] # <KATAKANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF7F FF9E 30FE ; [.32AF.0020.0011.30BD][.0000.0128.0002.3099][.32AF.0020.0010.30BE][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-305E 309E ; [.32AF.0020.0011.305D][.0000.0128.0002.3099][.32AF.0020.0010.305E][.0000.0128.0002.3099] # <HIRAGANA LETTER ZO, HIRAGANA VOICED ITERATION MARK>
-305D 3099 309E ; [.32AF.0020.0011.305D][.0000.0128.0002.3099][.32AF.0020.0010.305E][.0000.0128.0002.3099] # <HIRAGANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30BF 30FD ; [.32B0.0020.0011.30BF][.32B0.0020.0010.30BF] # <KATAKANA LETTER TA, KATAKANA ITERATION MARK>
-FF80 30FD ; [.32B0.0020.0011.30BF][.32B0.0020.0010.30BF] # <HALFWIDTH KATAKANA LETTER TA, KATAKANA ITERATION MARK>
-305F 309D ; [.32B0.0020.0011.305F][.32B0.0020.0010.305F] # <HIRAGANA LETTER TA, HIRAGANA ITERATION MARK>
-30BF 30FE ; [.32B0.0020.0011.30BF][.32B0.0020.0010.30BF][.0000.0128.0002.3099] # <KATAKANA LETTER TA, KATAKANA VOICED ITERATION MARK>
-FF80 30FE ; [.32B0.0020.0011.30BF][.32B0.0020.0010.30BF][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TA, KATAKANA VOICED ITERATION MARK>
-305F 309E ; [.32B0.0020.0011.305F][.32B0.0020.0010.305F][.0000.0128.0002.3099] # <HIRAGANA LETTER TA, HIRAGANA VOICED ITERATION MARK>
-30C0 30FD ; [.32B0.0020.0011.30BF][.0000.0128.0002.3099][.32B0.0020.0010.30C0] # <KATAKANA LETTER DA, KATAKANA ITERATION MARK>
-30BF 3099 30FD ; [.32B0.0020.0011.30BF][.0000.0128.0002.3099][.32B0.0020.0010.30C0] # <KATAKANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF80 FF9E 30FD ; [.32B0.0020.0011.30BF][.0000.0128.0002.3099][.32B0.0020.0010.30C0] # <HALFWIDTH KATAKANA LETTER TA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3060 309D ; [.32B0.0020.0011.305F][.0000.0128.0002.3099][.32B0.0020.0010.3060] # <HIRAGANA LETTER DA, HIRAGANA ITERATION MARK>
-305F 3099 309D ; [.32B0.0020.0011.305F][.0000.0128.0002.3099][.32B0.0020.0010.3060] # <HIRAGANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30C0 30FE ; [.32B0.0020.0011.30BF][.0000.0128.0002.3099][.32B0.0020.0010.30C0][.0000.0128.0002.3099] # <KATAKANA LETTER DA, KATAKANA VOICED ITERATION MARK>
-30BF 3099 30FE ; [.32B0.0020.0011.30BF][.0000.0128.0002.3099][.32B0.0020.0010.30C0][.0000.0128.0002.3099] # <KATAKANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF80 FF9E 30FE ; [.32B0.0020.0011.30BF][.0000.0128.0002.3099][.32B0.0020.0010.30C0][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3060 309E ; [.32B0.0020.0011.305F][.0000.0128.0002.3099][.32B0.0020.0010.3060][.0000.0128.0002.3099] # <HIRAGANA LETTER DA, HIRAGANA VOICED ITERATION MARK>
-305F 3099 309E ; [.32B0.0020.0011.305F][.0000.0128.0002.3099][.32B0.0020.0010.3060][.0000.0128.0002.3099] # <HIRAGANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30C1 30FD ; [.32B1.0020.0011.30C1][.32B1.0020.0010.30C1] # <KATAKANA LETTER TI, KATAKANA ITERATION MARK>
-FF81 30FD ; [.32B1.0020.0011.30C1][.32B1.0020.0010.30C1] # <HALFWIDTH KATAKANA LETTER TI, KATAKANA ITERATION MARK>
-3061 309D ; [.32B1.0020.0011.3061][.32B1.0020.0010.3061] # <HIRAGANA LETTER TI, HIRAGANA ITERATION MARK>
-30C1 30FE ; [.32B1.0020.0011.30C1][.32B1.0020.0010.30C1][.0000.0128.0002.3099] # <KATAKANA LETTER TI, KATAKANA VOICED ITERATION MARK>
-FF81 30FE ; [.32B1.0020.0011.30C1][.32B1.0020.0010.30C1][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TI, KATAKANA VOICED ITERATION MARK>
-3061 309E ; [.32B1.0020.0011.3061][.32B1.0020.0010.3061][.0000.0128.0002.3099] # <HIRAGANA LETTER TI, HIRAGANA VOICED ITERATION MARK>
-30C2 30FD ; [.32B1.0020.0011.30C1][.0000.0128.0002.3099][.32B1.0020.0010.30C2] # <KATAKANA LETTER DI, KATAKANA ITERATION MARK>
-30C1 3099 30FD ; [.32B1.0020.0011.30C1][.0000.0128.0002.3099][.32B1.0020.0010.30C2] # <KATAKANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF81 FF9E 30FD ; [.32B1.0020.0011.30C1][.0000.0128.0002.3099][.32B1.0020.0010.30C2] # <HALFWIDTH KATAKANA LETTER TI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3062 309D ; [.32B1.0020.0011.3061][.0000.0128.0002.3099][.32B1.0020.0010.3062] # <HIRAGANA LETTER DI, HIRAGANA ITERATION MARK>
-3061 3099 309D ; [.32B1.0020.0011.3061][.0000.0128.0002.3099][.32B1.0020.0010.3062] # <HIRAGANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30C2 30FE ; [.32B1.0020.0011.30C1][.0000.0128.0002.3099][.32B1.0020.0010.30C2][.0000.0128.0002.3099] # <KATAKANA LETTER DI, KATAKANA VOICED ITERATION MARK>
-30C1 3099 30FE ; [.32B1.0020.0011.30C1][.0000.0128.0002.3099][.32B1.0020.0010.30C2][.0000.0128.0002.3099] # <KATAKANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF81 FF9E 30FE ; [.32B1.0020.0011.30C1][.0000.0128.0002.3099][.32B1.0020.0010.30C2][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3062 309E ; [.32B1.0020.0011.3061][.0000.0128.0002.3099][.32B1.0020.0010.3062][.0000.0128.0002.3099] # <HIRAGANA LETTER DI, HIRAGANA VOICED ITERATION MARK>
-3061 3099 309E ; [.32B1.0020.0011.3061][.0000.0128.0002.3099][.32B1.0020.0010.3062][.0000.0128.0002.3099] # <HIRAGANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30C3 30FD ; [.32B2.0020.000F.30C3][.32B2.0020.0010.30C3] # <KATAKANA LETTER SMALL TU, KATAKANA ITERATION MARK>
-FF6F 30FD ; [.32B2.0020.000F.30C3][.32B2.0020.0010.30C3] # <HALFWIDTH KATAKANA LETTER SMALL TU, KATAKANA ITERATION MARK>
-3063 309D ; [.32B2.0020.000F.3063][.32B2.0020.0010.3063] # <HIRAGANA LETTER SMALL TU, HIRAGANA ITERATION MARK>
-30C3 30FE ; [.32B2.0020.000F.30C3][.32B2.0020.0010.30C3][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL TU, KATAKANA VOICED ITERATION MARK>
-FF6F 30FE ; [.32B2.0020.000F.30C3][.32B2.0020.0010.30C3][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SMALL TU, KATAKANA VOICED ITERATION MARK>
-3063 309E ; [.32B2.0020.000F.3063][.32B2.0020.0010.3063][.0000.0128.0002.3099] # <HIRAGANA LETTER SMALL TU, HIRAGANA VOICED ITERATION MARK>
-30C4 30FD ; [.32B2.0020.0011.30C4][.32B2.0020.0010.30C4] # <KATAKANA LETTER TU, KATAKANA ITERATION MARK>
-FF82 30FD ; [.32B2.0020.0011.30C4][.32B2.0020.0010.30C4] # <HALFWIDTH KATAKANA LETTER TU, KATAKANA ITERATION MARK>
-3064 309D ; [.32B2.0020.0011.3064][.32B2.0020.0010.3064] # <HIRAGANA LETTER TU, HIRAGANA ITERATION MARK>
-30C4 30FE ; [.32B2.0020.0011.30C4][.32B2.0020.0010.30C4][.0000.0128.0002.3099] # <KATAKANA LETTER TU, KATAKANA VOICED ITERATION MARK>
-FF82 30FE ; [.32B2.0020.0011.30C4][.32B2.0020.0010.30C4][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TU, KATAKANA VOICED ITERATION MARK>
-3064 309E ; [.32B2.0020.0011.3064][.32B2.0020.0010.3064][.0000.0128.0002.3099] # <HIRAGANA LETTER TU, HIRAGANA VOICED ITERATION MARK>
-30C5 30FD ; [.32B2.0020.0011.30C4][.0000.0128.0002.3099][.32B2.0020.0010.30C5] # <KATAKANA LETTER DU, KATAKANA ITERATION MARK>
-30C4 3099 30FD ; [.32B2.0020.0011.30C4][.0000.0128.0002.3099][.32B2.0020.0010.30C5] # <KATAKANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF82 FF9E 30FD ; [.32B2.0020.0011.30C4][.0000.0128.0002.3099][.32B2.0020.0010.30C5] # <HALFWIDTH KATAKANA LETTER TU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3065 309D ; [.32B2.0020.0011.3064][.0000.0128.0002.3099][.32B2.0020.0010.3065] # <HIRAGANA LETTER DU, HIRAGANA ITERATION MARK>
-3064 3099 309D ; [.32B2.0020.0011.3064][.0000.0128.0002.3099][.32B2.0020.0010.3065] # <HIRAGANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30C5 30FE ; [.32B2.0020.0011.30C4][.0000.0128.0002.3099][.32B2.0020.0010.30C5][.0000.0128.0002.3099] # <KATAKANA LETTER DU, KATAKANA VOICED ITERATION MARK>
-30C4 3099 30FE ; [.32B2.0020.0011.30C4][.0000.0128.0002.3099][.32B2.0020.0010.30C5][.0000.0128.0002.3099] # <KATAKANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF82 FF9E 30FE ; [.32B2.0020.0011.30C4][.0000.0128.0002.3099][.32B2.0020.0010.30C5][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3065 309E ; [.32B2.0020.0011.3064][.0000.0128.0002.3099][.32B2.0020.0010.3065][.0000.0128.0002.3099] # <HIRAGANA LETTER DU, HIRAGANA VOICED ITERATION MARK>
-3064 3099 309E ; [.32B2.0020.0011.3064][.0000.0128.0002.3099][.32B2.0020.0010.3065][.0000.0128.0002.3099] # <HIRAGANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30C6 30FD ; [.32B3.0020.0011.30C6][.32B3.0020.0010.30C6] # <KATAKANA LETTER TE, KATAKANA ITERATION MARK>
-FF83 30FD ; [.32B3.0020.0011.30C6][.32B3.0020.0010.30C6] # <HALFWIDTH KATAKANA LETTER TE, KATAKANA ITERATION MARK>
-3066 309D ; [.32B3.0020.0011.3066][.32B3.0020.0010.3066] # <HIRAGANA LETTER TE, HIRAGANA ITERATION MARK>
-30C6 30FE ; [.32B3.0020.0011.30C6][.32B3.0020.0010.30C6][.0000.0128.0002.3099] # <KATAKANA LETTER TE, KATAKANA VOICED ITERATION MARK>
-FF83 30FE ; [.32B3.0020.0011.30C6][.32B3.0020.0010.30C6][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TE, KATAKANA VOICED ITERATION MARK>
-3066 309E ; [.32B3.0020.0011.3066][.32B3.0020.0010.3066][.0000.0128.0002.3099] # <HIRAGANA LETTER TE, HIRAGANA VOICED ITERATION MARK>
-30C7 30FD ; [.32B3.0020.0011.30C6][.0000.0128.0002.3099][.32B3.0020.0010.30C7] # <KATAKANA LETTER DE, KATAKANA ITERATION MARK>
-30C6 3099 30FD ; [.32B3.0020.0011.30C6][.0000.0128.0002.3099][.32B3.0020.0010.30C7] # <KATAKANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF83 FF9E 30FD ; [.32B3.0020.0011.30C6][.0000.0128.0002.3099][.32B3.0020.0010.30C7] # <HALFWIDTH KATAKANA LETTER TE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3067 309D ; [.32B3.0020.0011.3066][.0000.0128.0002.3099][.32B3.0020.0010.3067] # <HIRAGANA LETTER DE, HIRAGANA ITERATION MARK>
-3066 3099 309D ; [.32B3.0020.0011.3066][.0000.0128.0002.3099][.32B3.0020.0010.3067] # <HIRAGANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30C7 30FE ; [.32B3.0020.0011.30C6][.0000.0128.0002.3099][.32B3.0020.0010.30C7][.0000.0128.0002.3099] # <KATAKANA LETTER DE, KATAKANA VOICED ITERATION MARK>
-30C6 3099 30FE ; [.32B3.0020.0011.30C6][.0000.0128.0002.3099][.32B3.0020.0010.30C7][.0000.0128.0002.3099] # <KATAKANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF83 FF9E 30FE ; [.32B3.0020.0011.30C6][.0000.0128.0002.3099][.32B3.0020.0010.30C7][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3067 309E ; [.32B3.0020.0011.3066][.0000.0128.0002.3099][.32B3.0020.0010.3067][.0000.0128.0002.3099] # <HIRAGANA LETTER DE, HIRAGANA VOICED ITERATION MARK>
-3066 3099 309E ; [.32B3.0020.0011.3066][.0000.0128.0002.3099][.32B3.0020.0010.3067][.0000.0128.0002.3099] # <HIRAGANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30C8 30FD ; [.32B4.0020.0011.30C8][.32B4.0020.0010.30C8] # <KATAKANA LETTER TO, KATAKANA ITERATION MARK>
-FF84 30FD ; [.32B4.0020.0011.30C8][.32B4.0020.0010.30C8] # <HALFWIDTH KATAKANA LETTER TO, KATAKANA ITERATION MARK>
-3068 309D ; [.32B4.0020.0011.3068][.32B4.0020.0010.3068] # <HIRAGANA LETTER TO, HIRAGANA ITERATION MARK>
-30C8 30FE ; [.32B4.0020.0011.30C8][.32B4.0020.0010.30C8][.0000.0128.0002.3099] # <KATAKANA LETTER TO, KATAKANA VOICED ITERATION MARK>
-FF84 30FE ; [.32B4.0020.0011.30C8][.32B4.0020.0010.30C8][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TO, KATAKANA VOICED ITERATION MARK>
-3068 309E ; [.32B4.0020.0011.3068][.32B4.0020.0010.3068][.0000.0128.0002.3099] # <HIRAGANA LETTER TO, HIRAGANA VOICED ITERATION MARK>
-30C9 30FD ; [.32B4.0020.0011.30C8][.0000.0128.0002.3099][.32B4.0020.0010.30C9] # <KATAKANA LETTER DO, KATAKANA ITERATION MARK>
-30C8 3099 30FD ; [.32B4.0020.0011.30C8][.0000.0128.0002.3099][.32B4.0020.0010.30C9] # <KATAKANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF84 FF9E 30FD ; [.32B4.0020.0011.30C8][.0000.0128.0002.3099][.32B4.0020.0010.30C9] # <HALFWIDTH KATAKANA LETTER TO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3069 309D ; [.32B4.0020.0011.3068][.0000.0128.0002.3099][.32B4.0020.0010.3069] # <HIRAGANA LETTER DO, HIRAGANA ITERATION MARK>
-3068 3099 309D ; [.32B4.0020.0011.3068][.0000.0128.0002.3099][.32B4.0020.0010.3069] # <HIRAGANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30C9 30FE ; [.32B4.0020.0011.30C8][.0000.0128.0002.3099][.32B4.0020.0010.30C9][.0000.0128.0002.3099] # <KATAKANA LETTER DO, KATAKANA VOICED ITERATION MARK>
-30C8 3099 30FE ; [.32B4.0020.0011.30C8][.0000.0128.0002.3099][.32B4.0020.0010.30C9][.0000.0128.0002.3099] # <KATAKANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF84 FF9E 30FE ; [.32B4.0020.0011.30C8][.0000.0128.0002.3099][.32B4.0020.0010.30C9][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3069 309E ; [.32B4.0020.0011.3068][.0000.0128.0002.3099][.32B4.0020.0010.3069][.0000.0128.0002.3099] # <HIRAGANA LETTER DO, HIRAGANA VOICED ITERATION MARK>
-3068 3099 309E ; [.32B4.0020.0011.3068][.0000.0128.0002.3099][.32B4.0020.0010.3069][.0000.0128.0002.3099] # <HIRAGANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30CA 30FD ; [.32B5.0020.0011.30CA][.32B5.0020.0010.30CA] # <KATAKANA LETTER NA, KATAKANA ITERATION MARK>
-FF85 30FD ; [.32B5.0020.0011.30CA][.32B5.0020.0010.30CA] # <HALFWIDTH KATAKANA LETTER NA, KATAKANA ITERATION MARK>
-306A 309D ; [.32B5.0020.0011.306A][.32B5.0020.0010.306A] # <HIRAGANA LETTER NA, HIRAGANA ITERATION MARK>
-30CB 30FD ; [.32B6.0020.0011.30CB][.32B6.0020.0010.30CB] # <KATAKANA LETTER NI, KATAKANA ITERATION MARK>
-FF86 30FD ; [.32B6.0020.0011.30CB][.32B6.0020.0010.30CB] # <HALFWIDTH KATAKANA LETTER NI, KATAKANA ITERATION MARK>
-306B 309D ; [.32B6.0020.0011.306B][.32B6.0020.0010.306B] # <HIRAGANA LETTER NI, HIRAGANA ITERATION MARK>
-30CC 30FD ; [.32B7.0020.0011.30CC][.32B7.0020.0010.30CC] # <KATAKANA LETTER NU, KATAKANA ITERATION MARK>
-FF87 30FD ; [.32B7.0020.0011.30CC][.32B7.0020.0010.30CC] # <HALFWIDTH KATAKANA LETTER NU, KATAKANA ITERATION MARK>
-306C 309D ; [.32B7.0020.0011.306C][.32B7.0020.0010.306C] # <HIRAGANA LETTER NU, HIRAGANA ITERATION MARK>
-30CD 30FD ; [.32B8.0020.0011.30CD][.32B8.0020.0010.30CD] # <KATAKANA LETTER NE, KATAKANA ITERATION MARK>
-FF88 30FD ; [.32B8.0020.0011.30CD][.32B8.0020.0010.30CD] # <HALFWIDTH KATAKANA LETTER NE, KATAKANA ITERATION MARK>
-306D 309D ; [.32B8.0020.0011.306D][.32B8.0020.0010.306D] # <HIRAGANA LETTER NE, HIRAGANA ITERATION MARK>
-30CE 30FD ; [.32B9.0020.0011.30CE][.32B9.0020.0010.30CE] # <KATAKANA LETTER NO, KATAKANA ITERATION MARK>
-FF89 30FD ; [.32B9.0020.0011.30CE][.32B9.0020.0010.30CE] # <HALFWIDTH KATAKANA LETTER NO, KATAKANA ITERATION MARK>
-306E 309D ; [.32B9.0020.0011.306E][.32B9.0020.0010.306E] # <HIRAGANA LETTER NO, HIRAGANA ITERATION MARK>
-30CF 30FD ; [.32BA.0020.0011.30CF][.32BA.0020.0010.30CF] # <KATAKANA LETTER HA, KATAKANA ITERATION MARK>
-FF8A 30FD ; [.32BA.0020.0011.30CF][.32BA.0020.0010.30CF] # <HALFWIDTH KATAKANA LETTER HA, KATAKANA ITERATION MARK>
-306F 309D ; [.32BA.0020.0011.306F][.32BA.0020.0010.306F] # <HIRAGANA LETTER HA, HIRAGANA ITERATION MARK>
-30CF 30FE ; [.32BA.0020.0011.30CF][.32BA.0020.0010.30CF][.0000.0128.0002.3099] # <KATAKANA LETTER HA, KATAKANA VOICED ITERATION MARK>
-FF8A 30FE ; [.32BA.0020.0011.30CF][.32BA.0020.0010.30CF][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HA, KATAKANA VOICED ITERATION MARK>
-306F 309E ; [.32BA.0020.0011.306F][.32BA.0020.0010.306F][.0000.0128.0002.3099] # <HIRAGANA LETTER HA, HIRAGANA VOICED ITERATION MARK>
-30D0 30FD ; [.32BA.0020.0011.30CF][.0000.0128.0002.3099][.32BA.0020.0010.30D0] # <KATAKANA LETTER BA, KATAKANA ITERATION MARK>
-30CF 3099 30FD ; [.32BA.0020.0011.30CF][.0000.0128.0002.3099][.32BA.0020.0010.30D0] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF8A FF9E 30FD ; [.32BA.0020.0011.30CF][.0000.0128.0002.3099][.32BA.0020.0010.30D0] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3070 309D ; [.32BA.0020.0011.306F][.0000.0128.0002.3099][.32BA.0020.0010.3070] # <HIRAGANA LETTER BA, HIRAGANA ITERATION MARK>
-306F 3099 309D ; [.32BA.0020.0011.306F][.0000.0128.0002.3099][.32BA.0020.0010.3070] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30D0 30FE ; [.32BA.0020.0011.30CF][.0000.0128.0002.3099][.32BA.0020.0010.30D0][.0000.0128.0002.3099] # <KATAKANA LETTER BA, KATAKANA VOICED ITERATION MARK>
-30CF 3099 30FE ; [.32BA.0020.0011.30CF][.0000.0128.0002.3099][.32BA.0020.0010.30D0][.0000.0128.0002.3099] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF8A FF9E 30FE ; [.32BA.0020.0011.30CF][.0000.0128.0002.3099][.32BA.0020.0010.30D0][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3070 309E ; [.32BA.0020.0011.306F][.0000.0128.0002.3099][.32BA.0020.0010.3070][.0000.0128.0002.3099] # <HIRAGANA LETTER BA, HIRAGANA VOICED ITERATION MARK>
-306F 3099 309E ; [.32BA.0020.0011.306F][.0000.0128.0002.3099][.32BA.0020.0010.3070][.0000.0128.0002.3099] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30D1 30FD ; [.32BA.0020.0011.30CF][.0000.0129.0002.309A][.32BA.0020.0010.30D1] # <KATAKANA LETTER PA, KATAKANA ITERATION MARK>
-30CF 309A 30FD ; [.32BA.0020.0011.30CF][.0000.0129.0002.309A][.32BA.0020.0010.30D1] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF8A FF9F 30FD ; [.32BA.0020.0011.30CF][.0000.0129.0002.309A][.32BA.0020.0010.30D1] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3071 309D ; [.32BA.0020.0011.306F][.0000.0129.0002.309A][.32BA.0020.0010.3071] # <HIRAGANA LETTER PA, HIRAGANA ITERATION MARK>
-306F 309A 309D ; [.32BA.0020.0011.306F][.0000.0129.0002.309A][.32BA.0020.0010.3071] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30D1 30FE ; [.32BA.0020.0011.30CF][.0000.0129.0002.309A][.32BA.0020.0010.30D1][.0000.0128.0002.3099] # <KATAKANA LETTER PA, KATAKANA VOICED ITERATION MARK>
-30CF 309A 30FE ; [.32BA.0020.0011.30CF][.0000.0129.0002.309A][.32BA.0020.0010.30D1][.0000.0128.0002.3099] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF8A FF9F 30FE ; [.32BA.0020.0011.30CF][.0000.0129.0002.309A][.32BA.0020.0010.30D1][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3071 309E ; [.32BA.0020.0011.306F][.0000.0129.0002.309A][.32BA.0020.0010.3071][.0000.0128.0002.3099] # <HIRAGANA LETTER PA, HIRAGANA VOICED ITERATION MARK>
-306F 309A 309E ; [.32BA.0020.0011.306F][.0000.0129.0002.309A][.32BA.0020.0010.3071][.0000.0128.0002.3099] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30D2 30FD ; [.32BB.0020.0011.30D2][.32BB.0020.0010.30D2] # <KATAKANA LETTER HI, KATAKANA ITERATION MARK>
-FF8B 30FD ; [.32BB.0020.0011.30D2][.32BB.0020.0010.30D2] # <HALFWIDTH KATAKANA LETTER HI, KATAKANA ITERATION MARK>
-3072 309D ; [.32BB.0020.0011.3072][.32BB.0020.0010.3072] # <HIRAGANA LETTER HI, HIRAGANA ITERATION MARK>
-30D2 30FE ; [.32BB.0020.0011.30D2][.32BB.0020.0010.30D2][.0000.0128.0002.3099] # <KATAKANA LETTER HI, KATAKANA VOICED ITERATION MARK>
-FF8B 30FE ; [.32BB.0020.0011.30D2][.32BB.0020.0010.30D2][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HI, KATAKANA VOICED ITERATION MARK>
-3072 309E ; [.32BB.0020.0011.3072][.32BB.0020.0010.3072][.0000.0128.0002.3099] # <HIRAGANA LETTER HI, HIRAGANA VOICED ITERATION MARK>
-30D3 30FD ; [.32BB.0020.0011.30D2][.0000.0128.0002.3099][.32BB.0020.0010.30D3] # <KATAKANA LETTER BI, KATAKANA ITERATION MARK>
-30D2 3099 30FD ; [.32BB.0020.0011.30D2][.0000.0128.0002.3099][.32BB.0020.0010.30D3] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF8B FF9E 30FD ; [.32BB.0020.0011.30D2][.0000.0128.0002.3099][.32BB.0020.0010.30D3] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3073 309D ; [.32BB.0020.0011.3072][.0000.0128.0002.3099][.32BB.0020.0010.3073] # <HIRAGANA LETTER BI, HIRAGANA ITERATION MARK>
-3072 3099 309D ; [.32BB.0020.0011.3072][.0000.0128.0002.3099][.32BB.0020.0010.3073] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30D3 30FE ; [.32BB.0020.0011.30D2][.0000.0128.0002.3099][.32BB.0020.0010.30D3][.0000.0128.0002.3099] # <KATAKANA LETTER BI, KATAKANA VOICED ITERATION MARK>
-30D2 3099 30FE ; [.32BB.0020.0011.30D2][.0000.0128.0002.3099][.32BB.0020.0010.30D3][.0000.0128.0002.3099] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF8B FF9E 30FE ; [.32BB.0020.0011.30D2][.0000.0128.0002.3099][.32BB.0020.0010.30D3][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3073 309E ; [.32BB.0020.0011.3072][.0000.0128.0002.3099][.32BB.0020.0010.3073][.0000.0128.0002.3099] # <HIRAGANA LETTER BI, HIRAGANA VOICED ITERATION MARK>
-3072 3099 309E ; [.32BB.0020.0011.3072][.0000.0128.0002.3099][.32BB.0020.0010.3073][.0000.0128.0002.3099] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30D4 30FD ; [.32BB.0020.0011.30D2][.0000.0129.0002.309A][.32BB.0020.0010.30D4] # <KATAKANA LETTER PI, KATAKANA ITERATION MARK>
-30D2 309A 30FD ; [.32BB.0020.0011.30D2][.0000.0129.0002.309A][.32BB.0020.0010.30D4] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF8B FF9F 30FD ; [.32BB.0020.0011.30D2][.0000.0129.0002.309A][.32BB.0020.0010.30D4] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3074 309D ; [.32BB.0020.0011.3072][.0000.0129.0002.309A][.32BB.0020.0010.3074] # <HIRAGANA LETTER PI, HIRAGANA ITERATION MARK>
-3072 309A 309D ; [.32BB.0020.0011.3072][.0000.0129.0002.309A][.32BB.0020.0010.3074] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30D4 30FE ; [.32BB.0020.0011.30D2][.0000.0129.0002.309A][.32BB.0020.0010.30D4][.0000.0128.0002.3099] # <KATAKANA LETTER PI, KATAKANA VOICED ITERATION MARK>
-30D2 309A 30FE ; [.32BB.0020.0011.30D2][.0000.0129.0002.309A][.32BB.0020.0010.30D4][.0000.0128.0002.3099] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF8B FF9F 30FE ; [.32BB.0020.0011.30D2][.0000.0129.0002.309A][.32BB.0020.0010.30D4][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3074 309E ; [.32BB.0020.0011.3072][.0000.0129.0002.309A][.32BB.0020.0010.3074][.0000.0128.0002.3099] # <HIRAGANA LETTER PI, HIRAGANA VOICED ITERATION MARK>
-3072 309A 309E ; [.32BB.0020.0011.3072][.0000.0129.0002.309A][.32BB.0020.0010.3074][.0000.0128.0002.3099] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30D5 30FD ; [.32BC.0020.0011.30D5][.32BC.0020.0010.30D5] # <KATAKANA LETTER HU, KATAKANA ITERATION MARK>
-FF8C 30FD ; [.32BC.0020.0011.30D5][.32BC.0020.0010.30D5] # <HALFWIDTH KATAKANA LETTER HU, KATAKANA ITERATION MARK>
-3075 309D ; [.32BC.0020.0011.3075][.32BC.0020.0010.3075] # <HIRAGANA LETTER HU, HIRAGANA ITERATION MARK>
-30D5 30FE ; [.32BC.0020.0011.30D5][.32BC.0020.0010.30D5][.0000.0128.0002.3099] # <KATAKANA LETTER HU, KATAKANA VOICED ITERATION MARK>
-FF8C 30FE ; [.32BC.0020.0011.30D5][.32BC.0020.0010.30D5][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HU, KATAKANA VOICED ITERATION MARK>
-3075 309E ; [.32BC.0020.0011.3075][.32BC.0020.0010.3075][.0000.0128.0002.3099] # <HIRAGANA LETTER HU, HIRAGANA VOICED ITERATION MARK>
-30D6 30FD ; [.32BC.0020.0011.30D5][.0000.0128.0002.3099][.32BC.0020.0010.30D6] # <KATAKANA LETTER BU, KATAKANA ITERATION MARK>
-30D5 3099 30FD ; [.32BC.0020.0011.30D5][.0000.0128.0002.3099][.32BC.0020.0010.30D6] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF8C FF9E 30FD ; [.32BC.0020.0011.30D5][.0000.0128.0002.3099][.32BC.0020.0010.30D6] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3076 309D ; [.32BC.0020.0011.3075][.0000.0128.0002.3099][.32BC.0020.0010.3076] # <HIRAGANA LETTER BU, HIRAGANA ITERATION MARK>
-3075 3099 309D ; [.32BC.0020.0011.3075][.0000.0128.0002.3099][.32BC.0020.0010.3076] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30D6 30FE ; [.32BC.0020.0011.30D5][.0000.0128.0002.3099][.32BC.0020.0010.30D6][.0000.0128.0002.3099] # <KATAKANA LETTER BU, KATAKANA VOICED ITERATION MARK>
-30D5 3099 30FE ; [.32BC.0020.0011.30D5][.0000.0128.0002.3099][.32BC.0020.0010.30D6][.0000.0128.0002.3099] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF8C FF9E 30FE ; [.32BC.0020.0011.30D5][.0000.0128.0002.3099][.32BC.0020.0010.30D6][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3076 309E ; [.32BC.0020.0011.3075][.0000.0128.0002.3099][.32BC.0020.0010.3076][.0000.0128.0002.3099] # <HIRAGANA LETTER BU, HIRAGANA VOICED ITERATION MARK>
-3075 3099 309E ; [.32BC.0020.0011.3075][.0000.0128.0002.3099][.32BC.0020.0010.3076][.0000.0128.0002.3099] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30D7 30FD ; [.32BC.0020.0011.30D5][.0000.0129.0002.309A][.32BC.0020.0010.30D7] # <KATAKANA LETTER PU, KATAKANA ITERATION MARK>
-30D5 309A 30FD ; [.32BC.0020.0011.30D5][.0000.0129.0002.309A][.32BC.0020.0010.30D7] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF8C FF9F 30FD ; [.32BC.0020.0011.30D5][.0000.0129.0002.309A][.32BC.0020.0010.30D7] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3077 309D ; [.32BC.0020.0011.3075][.0000.0129.0002.309A][.32BC.0020.0010.3077] # <HIRAGANA LETTER PU, HIRAGANA ITERATION MARK>
-3075 309A 309D ; [.32BC.0020.0011.3075][.0000.0129.0002.309A][.32BC.0020.0010.3077] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30D7 30FE ; [.32BC.0020.0011.30D5][.0000.0129.0002.309A][.32BC.0020.0010.30D7][.0000.0128.0002.3099] # <KATAKANA LETTER PU, KATAKANA VOICED ITERATION MARK>
-30D5 309A 30FE ; [.32BC.0020.0011.30D5][.0000.0129.0002.309A][.32BC.0020.0010.30D7][.0000.0128.0002.3099] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF8C FF9F 30FE ; [.32BC.0020.0011.30D5][.0000.0129.0002.309A][.32BC.0020.0010.30D7][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3077 309E ; [.32BC.0020.0011.3075][.0000.0129.0002.309A][.32BC.0020.0010.3077][.0000.0128.0002.3099] # <HIRAGANA LETTER PU, HIRAGANA VOICED ITERATION MARK>
-3075 309A 309E ; [.32BC.0020.0011.3075][.0000.0129.0002.309A][.32BC.0020.0010.3077][.0000.0128.0002.3099] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30D8 30FD ; [.32BD.0020.0011.30D8][.32BD.0020.0010.30D8] # <KATAKANA LETTER HE, KATAKANA ITERATION MARK>
-FF8D 30FD ; [.32BD.0020.0011.30D8][.32BD.0020.0010.30D8] # <HALFWIDTH KATAKANA LETTER HE, KATAKANA ITERATION MARK>
-3078 309D ; [.32BD.0020.0011.3078][.32BD.0020.0010.3078] # <HIRAGANA LETTER HE, HIRAGANA ITERATION MARK>
-30D8 30FE ; [.32BD.0020.0011.30D8][.32BD.0020.0010.30D8][.0000.0128.0002.3099] # <KATAKANA LETTER HE, KATAKANA VOICED ITERATION MARK>
-FF8D 30FE ; [.32BD.0020.0011.30D8][.32BD.0020.0010.30D8][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HE, KATAKANA VOICED ITERATION MARK>
-3078 309E ; [.32BD.0020.0011.3078][.32BD.0020.0010.3078][.0000.0128.0002.3099] # <HIRAGANA LETTER HE, HIRAGANA VOICED ITERATION MARK>
-30D9 30FD ; [.32BD.0020.0011.30D8][.0000.0128.0002.3099][.32BD.0020.0010.30D9] # <KATAKANA LETTER BE, KATAKANA ITERATION MARK>
-30D8 3099 30FD ; [.32BD.0020.0011.30D8][.0000.0128.0002.3099][.32BD.0020.0010.30D9] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF8D FF9E 30FD ; [.32BD.0020.0011.30D8][.0000.0128.0002.3099][.32BD.0020.0010.30D9] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3079 309D ; [.32BD.0020.0011.3078][.0000.0128.0002.3099][.32BD.0020.0010.3079] # <HIRAGANA LETTER BE, HIRAGANA ITERATION MARK>
-3078 3099 309D ; [.32BD.0020.0011.3078][.0000.0128.0002.3099][.32BD.0020.0010.3079] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30D9 30FE ; [.32BD.0020.0011.30D8][.0000.0128.0002.3099][.32BD.0020.0010.30D9][.0000.0128.0002.3099] # <KATAKANA LETTER BE, KATAKANA VOICED ITERATION MARK>
-30D8 3099 30FE ; [.32BD.0020.0011.30D8][.0000.0128.0002.3099][.32BD.0020.0010.30D9][.0000.0128.0002.3099] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF8D FF9E 30FE ; [.32BD.0020.0011.30D8][.0000.0128.0002.3099][.32BD.0020.0010.30D9][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3079 309E ; [.32BD.0020.0011.3078][.0000.0128.0002.3099][.32BD.0020.0010.3079][.0000.0128.0002.3099] # <HIRAGANA LETTER BE, HIRAGANA VOICED ITERATION MARK>
-3078 3099 309E ; [.32BD.0020.0011.3078][.0000.0128.0002.3099][.32BD.0020.0010.3079][.0000.0128.0002.3099] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30DA 30FD ; [.32BD.0020.0011.30D8][.0000.0129.0002.309A][.32BD.0020.0010.30DA] # <KATAKANA LETTER PE, KATAKANA ITERATION MARK>
-30D8 309A 30FD ; [.32BD.0020.0011.30D8][.0000.0129.0002.309A][.32BD.0020.0010.30DA] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF8D FF9F 30FD ; [.32BD.0020.0011.30D8][.0000.0129.0002.309A][.32BD.0020.0010.30DA] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
-307A 309D ; [.32BD.0020.0011.3078][.0000.0129.0002.309A][.32BD.0020.0010.307A] # <HIRAGANA LETTER PE, HIRAGANA ITERATION MARK>
-3078 309A 309D ; [.32BD.0020.0011.3078][.0000.0129.0002.309A][.32BD.0020.0010.307A] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30DA 30FE ; [.32BD.0020.0011.30D8][.0000.0129.0002.309A][.32BD.0020.0010.30DA][.0000.0128.0002.3099] # <KATAKANA LETTER PE, KATAKANA VOICED ITERATION MARK>
-30D8 309A 30FE ; [.32BD.0020.0011.30D8][.0000.0129.0002.309A][.32BD.0020.0010.30DA][.0000.0128.0002.3099] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF8D FF9F 30FE ; [.32BD.0020.0011.30D8][.0000.0129.0002.309A][.32BD.0020.0010.30DA][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-307A 309E ; [.32BD.0020.0011.3078][.0000.0129.0002.309A][.32BD.0020.0010.307A][.0000.0128.0002.3099] # <HIRAGANA LETTER PE, HIRAGANA VOICED ITERATION MARK>
-3078 309A 309E ; [.32BD.0020.0011.3078][.0000.0129.0002.309A][.32BD.0020.0010.307A][.0000.0128.0002.3099] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30DB 30FD ; [.32BE.0020.0011.30DB][.32BE.0020.0010.30DB] # <KATAKANA LETTER HO, KATAKANA ITERATION MARK>
-FF8E 30FD ; [.32BE.0020.0011.30DB][.32BE.0020.0010.30DB] # <HALFWIDTH KATAKANA LETTER HO, KATAKANA ITERATION MARK>
-307B 309D ; [.32BE.0020.0011.307B][.32BE.0020.0010.307B] # <HIRAGANA LETTER HO, HIRAGANA ITERATION MARK>
-30DB 30FE ; [.32BE.0020.0011.30DB][.32BE.0020.0010.30DB][.0000.0128.0002.3099] # <KATAKANA LETTER HO, KATAKANA VOICED ITERATION MARK>
-FF8E 30FE ; [.32BE.0020.0011.30DB][.32BE.0020.0010.30DB][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HO, KATAKANA VOICED ITERATION MARK>
-307B 309E ; [.32BE.0020.0011.307B][.32BE.0020.0010.307B][.0000.0128.0002.3099] # <HIRAGANA LETTER HO, HIRAGANA VOICED ITERATION MARK>
-30DC 30FD ; [.32BE.0020.0011.30DB][.0000.0128.0002.3099][.32BE.0020.0010.30DC] # <KATAKANA LETTER BO, KATAKANA ITERATION MARK>
-30DB 3099 30FD ; [.32BE.0020.0011.30DB][.0000.0128.0002.3099][.32BE.0020.0010.30DC] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF8E FF9E 30FD ; [.32BE.0020.0011.30DB][.0000.0128.0002.3099][.32BE.0020.0010.30DC] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-307C 309D ; [.32BE.0020.0011.307B][.0000.0128.0002.3099][.32BE.0020.0010.307C] # <HIRAGANA LETTER BO, HIRAGANA ITERATION MARK>
-307B 3099 309D ; [.32BE.0020.0011.307B][.0000.0128.0002.3099][.32BE.0020.0010.307C] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30DC 30FE ; [.32BE.0020.0011.30DB][.0000.0128.0002.3099][.32BE.0020.0010.30DC][.0000.0128.0002.3099] # <KATAKANA LETTER BO, KATAKANA VOICED ITERATION MARK>
-30DB 3099 30FE ; [.32BE.0020.0011.30DB][.0000.0128.0002.3099][.32BE.0020.0010.30DC][.0000.0128.0002.3099] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF8E FF9E 30FE ; [.32BE.0020.0011.30DB][.0000.0128.0002.3099][.32BE.0020.0010.30DC][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-307C 309E ; [.32BE.0020.0011.307B][.0000.0128.0002.3099][.32BE.0020.0010.307C][.0000.0128.0002.3099] # <HIRAGANA LETTER BO, HIRAGANA VOICED ITERATION MARK>
-307B 3099 309E ; [.32BE.0020.0011.307B][.0000.0128.0002.3099][.32BE.0020.0010.307C][.0000.0128.0002.3099] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30DD 30FD ; [.32BE.0020.0011.30DB][.0000.0129.0002.309A][.32BE.0020.0010.30DD] # <KATAKANA LETTER PO, KATAKANA ITERATION MARK>
-30DB 309A 30FD ; [.32BE.0020.0011.30DB][.0000.0129.0002.309A][.32BE.0020.0010.30DD] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF8E FF9F 30FD ; [.32BE.0020.0011.30DB][.0000.0129.0002.309A][.32BE.0020.0010.30DD] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
-307D 309D ; [.32BE.0020.0011.307B][.0000.0129.0002.309A][.32BE.0020.0010.307D] # <HIRAGANA LETTER PO, HIRAGANA ITERATION MARK>
-307B 309A 309D ; [.32BE.0020.0011.307B][.0000.0129.0002.309A][.32BE.0020.0010.307D] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30DD 30FE ; [.32BE.0020.0011.30DB][.0000.0129.0002.309A][.32BE.0020.0010.30DD][.0000.0128.0002.3099] # <KATAKANA LETTER PO, KATAKANA VOICED ITERATION MARK>
-30DB 309A 30FE ; [.32BE.0020.0011.30DB][.0000.0129.0002.309A][.32BE.0020.0010.30DD][.0000.0128.0002.3099] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF8E FF9F 30FE ; [.32BE.0020.0011.30DB][.0000.0129.0002.309A][.32BE.0020.0010.30DD][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-307D 309E ; [.32BE.0020.0011.307B][.0000.0129.0002.309A][.32BE.0020.0010.307D][.0000.0128.0002.3099] # <HIRAGANA LETTER PO, HIRAGANA VOICED ITERATION MARK>
-307B 309A 309E ; [.32BE.0020.0011.307B][.0000.0129.0002.309A][.32BE.0020.0010.307D][.0000.0128.0002.3099] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30DE 30FD ; [.32BF.0020.0011.30DE][.32BF.0020.0010.30DE] # <KATAKANA LETTER MA, KATAKANA ITERATION MARK>
-FF8F 30FD ; [.32BF.0020.0011.30DE][.32BF.0020.0010.30DE] # <HALFWIDTH KATAKANA LETTER MA, KATAKANA ITERATION MARK>
-307E 309D ; [.32BF.0020.0011.307E][.32BF.0020.0010.307E] # <HIRAGANA LETTER MA, HIRAGANA ITERATION MARK>
-30DF 30FD ; [.32C0.0020.0011.30DF][.32C0.0020.0010.30DF] # <KATAKANA LETTER MI, KATAKANA ITERATION MARK>
-FF90 30FD ; [.32C0.0020.0011.30DF][.32C0.0020.0010.30DF] # <HALFWIDTH KATAKANA LETTER MI, KATAKANA ITERATION MARK>
-307F 309D ; [.32C0.0020.0011.307F][.32C0.0020.0010.307F] # <HIRAGANA LETTER MI, HIRAGANA ITERATION MARK>
-30E0 30FD ; [.32C1.0020.0011.30E0][.32C1.0020.0010.30E0] # <KATAKANA LETTER MU, KATAKANA ITERATION MARK>
-FF91 30FD ; [.32C1.0020.0011.30E0][.32C1.0020.0010.30E0] # <HALFWIDTH KATAKANA LETTER MU, KATAKANA ITERATION MARK>
-3080 309D ; [.32C1.0020.0011.3080][.32C1.0020.0010.3080] # <HIRAGANA LETTER MU, HIRAGANA ITERATION MARK>
-30E1 30FD ; [.32C2.0020.0011.30E1][.32C2.0020.0010.30E1] # <KATAKANA LETTER ME, KATAKANA ITERATION MARK>
-FF92 30FD ; [.32C2.0020.0011.30E1][.32C2.0020.0010.30E1] # <HALFWIDTH KATAKANA LETTER ME, KATAKANA ITERATION MARK>
-3081 309D ; [.32C2.0020.0011.3081][.32C2.0020.0010.3081] # <HIRAGANA LETTER ME, HIRAGANA ITERATION MARK>
-30E2 30FD ; [.32C3.0020.0011.30E2][.32C3.0020.0010.30E2] # <KATAKANA LETTER MO, KATAKANA ITERATION MARK>
-FF93 30FD ; [.32C3.0020.0011.30E2][.32C3.0020.0010.30E2] # <HALFWIDTH KATAKANA LETTER MO, KATAKANA ITERATION MARK>
-3082 309D ; [.32C3.0020.0011.3082][.32C3.0020.0010.3082] # <HIRAGANA LETTER MO, HIRAGANA ITERATION MARK>
-30E3 30FD ; [.32C4.0020.000F.30E3][.32C4.0020.0010.30E3] # <KATAKANA LETTER SMALL YA, KATAKANA ITERATION MARK>
-FF6C 30FD ; [.32C4.0020.000F.30E3][.32C4.0020.0010.30E3] # <HALFWIDTH KATAKANA LETTER SMALL YA, KATAKANA ITERATION MARK>
-3083 309D ; [.32C4.0020.000F.3083][.32C4.0020.0010.3083] # <HIRAGANA LETTER SMALL YA, HIRAGANA ITERATION MARK>
-30E4 30FD ; [.32C4.0020.0011.30E4][.32C4.0020.0010.30E4] # <KATAKANA LETTER YA, KATAKANA ITERATION MARK>
-FF94 30FD ; [.32C4.0020.0011.30E4][.32C4.0020.0010.30E4] # <HALFWIDTH KATAKANA LETTER YA, KATAKANA ITERATION MARK>
-3084 309D ; [.32C4.0020.0011.3084][.32C4.0020.0010.3084] # <HIRAGANA LETTER YA, HIRAGANA ITERATION MARK>
-30E5 30FD ; [.32C5.0020.000F.30E5][.32C5.0020.0010.30E5] # <KATAKANA LETTER SMALL YU, KATAKANA ITERATION MARK>
-FF6D 30FD ; [.32C5.0020.000F.30E5][.32C5.0020.0010.30E5] # <HALFWIDTH KATAKANA LETTER SMALL YU, KATAKANA ITERATION MARK>
-3085 309D ; [.32C5.0020.000F.3085][.32C5.0020.0010.3085] # <HIRAGANA LETTER SMALL YU, HIRAGANA ITERATION MARK>
-30E6 30FD ; [.32C5.0020.0011.30E6][.32C5.0020.0010.30E6] # <KATAKANA LETTER YU, KATAKANA ITERATION MARK>
-FF95 30FD ; [.32C5.0020.0011.30E6][.32C5.0020.0010.30E6] # <HALFWIDTH KATAKANA LETTER YU, KATAKANA ITERATION MARK>
-3086 309D ; [.32C5.0020.0011.3086][.32C5.0020.0010.3086] # <HIRAGANA LETTER YU, HIRAGANA ITERATION MARK>
-30E7 30FD ; [.32C7.0020.000F.30E7][.32C7.0020.0010.30E7] # <KATAKANA LETTER SMALL YO, KATAKANA ITERATION MARK>
-FF6E 30FD ; [.32C7.0020.000F.30E7][.32C7.0020.0010.30E7] # <HALFWIDTH KATAKANA LETTER SMALL YO, KATAKANA ITERATION MARK>
-3087 309D ; [.32C7.0020.000F.3087][.32C7.0020.0010.3087] # <HIRAGANA LETTER SMALL YO, HIRAGANA ITERATION MARK>
-30E8 30FD ; [.32C7.0020.0011.30E8][.32C7.0020.0010.30E8] # <KATAKANA LETTER YO, KATAKANA ITERATION MARK>
-FF96 30FD ; [.32C7.0020.0011.30E8][.32C7.0020.0010.30E8] # <HALFWIDTH KATAKANA LETTER YO, KATAKANA ITERATION MARK>
-3088 309D ; [.32C7.0020.0011.3088][.32C7.0020.0010.3088] # <HIRAGANA LETTER YO, HIRAGANA ITERATION MARK>
-30E9 30FD ; [.32C8.0020.0011.30E9][.32C8.0020.0010.30E9] # <KATAKANA LETTER RA, KATAKANA ITERATION MARK>
-FF97 30FD ; [.32C8.0020.0011.30E9][.32C8.0020.0010.30E9] # <HALFWIDTH KATAKANA LETTER RA, KATAKANA ITERATION MARK>
-3089 309D ; [.32C8.0020.0011.3089][.32C8.0020.0010.3089] # <HIRAGANA LETTER RA, HIRAGANA ITERATION MARK>
-30EA 30FD ; [.32C9.0020.0011.30EA][.32C9.0020.0010.30EA] # <KATAKANA LETTER RI, KATAKANA ITERATION MARK>
-FF98 30FD ; [.32C9.0020.0011.30EA][.32C9.0020.0010.30EA] # <HALFWIDTH KATAKANA LETTER RI, KATAKANA ITERATION MARK>
-308A 309D ; [.32C9.0020.0011.308A][.32C9.0020.0010.308A] # <HIRAGANA LETTER RI, HIRAGANA ITERATION MARK>
-30EB 30FD ; [.32CA.0020.0011.30EB][.32CA.0020.0010.30EB] # <KATAKANA LETTER RU, KATAKANA ITERATION MARK>
-FF99 30FD ; [.32CA.0020.0011.30EB][.32CA.0020.0010.30EB] # <HALFWIDTH KATAKANA LETTER RU, KATAKANA ITERATION MARK>
-308B 309D ; [.32CA.0020.0011.308B][.32CA.0020.0010.308B] # <HIRAGANA LETTER RU, HIRAGANA ITERATION MARK>
-30EC 30FD ; [.32CB.0020.0011.30EC][.32CB.0020.0010.30EC] # <KATAKANA LETTER RE, KATAKANA ITERATION MARK>
-FF9A 30FD ; [.32CB.0020.0011.30EC][.32CB.0020.0010.30EC] # <HALFWIDTH KATAKANA LETTER RE, KATAKANA ITERATION MARK>
-308C 309D ; [.32CB.0020.0011.308C][.32CB.0020.0010.308C] # <HIRAGANA LETTER RE, HIRAGANA ITERATION MARK>
-30ED 30FD ; [.32CC.0020.0011.30ED][.32CC.0020.0010.30ED] # <KATAKANA LETTER RO, KATAKANA ITERATION MARK>
-FF9B 30FD ; [.32CC.0020.0011.30ED][.32CC.0020.0010.30ED] # <HALFWIDTH KATAKANA LETTER RO, KATAKANA ITERATION MARK>
-308D 309D ; [.32CC.0020.0011.308D][.32CC.0020.0010.308D] # <HIRAGANA LETTER RO, HIRAGANA ITERATION MARK>
-30EE 30FD ; [.32CD.0020.000F.30EE][.32CD.0020.0010.30EE] # <KATAKANA LETTER SMALL WA, KATAKANA ITERATION MARK>
-308E 309D ; [.32CD.0020.000F.308E][.32CD.0020.0010.308E] # <HIRAGANA LETTER SMALL WA, HIRAGANA ITERATION MARK>
-30EE 30FE ; [.32CD.0020.000F.30EE][.32CD.0020.0010.30EE][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL WA, KATAKANA VOICED ITERATION MARK>
-308E 309E ; [.32CD.0020.000F.308E][.32CD.0020.0010.308E][.0000.0128.0002.3099] # <HIRAGANA LETTER SMALL WA, HIRAGANA VOICED ITERATION MARK>
-30EF 30FD ; [.32CD.0020.0011.30EF][.32CD.0020.0010.30EF] # <KATAKANA LETTER WA, KATAKANA ITERATION MARK>
-FF9C 30FD ; [.32CD.0020.0011.30EF][.32CD.0020.0010.30EF] # <HALFWIDTH KATAKANA LETTER WA, KATAKANA ITERATION MARK>
-308F 309D ; [.32CD.0020.0011.308F][.32CD.0020.0010.308F] # <HIRAGANA LETTER WA, HIRAGANA ITERATION MARK>
-30EF 30FE ; [.32CD.0020.0011.30EF][.32CD.0020.0010.30EF][.0000.0128.0002.3099] # <KATAKANA LETTER WA, KATAKANA VOICED ITERATION MARK>
-FF9C 30FE ; [.32CD.0020.0011.30EF][.32CD.0020.0010.30EF][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER WA, KATAKANA VOICED ITERATION MARK>
-308F 309E ; [.32CD.0020.0011.308F][.32CD.0020.0010.308F][.0000.0128.0002.3099] # <HIRAGANA LETTER WA, HIRAGANA VOICED ITERATION MARK>
-30F0 30FD ; [.32CE.0020.0011.30F0][.32CE.0020.0010.30F0] # <KATAKANA LETTER WI, KATAKANA ITERATION MARK>
-3090 309D ; [.32CE.0020.0011.3090][.32CE.0020.0010.3090] # <HIRAGANA LETTER WI, HIRAGANA ITERATION MARK>
-30F0 30FE ; [.32CE.0020.0011.30F0][.32CE.0020.0010.30F0][.0000.0128.0002.3099] # <KATAKANA LETTER WI, KATAKANA VOICED ITERATION MARK>
-3090 309E ; [.32CE.0020.0011.3090][.32CE.0020.0010.3090][.0000.0128.0002.3099] # <HIRAGANA LETTER WI, HIRAGANA VOICED ITERATION MARK>
-30F1 30FD ; [.32CF.0020.0011.30F1][.32CF.0020.0010.30F1] # <KATAKANA LETTER WE, KATAKANA ITERATION MARK>
-3091 309D ; [.32CF.0020.0011.3091][.32CF.0020.0010.3091] # <HIRAGANA LETTER WE, HIRAGANA ITERATION MARK>
-30F1 30FE ; [.32CF.0020.0011.30F1][.32CF.0020.0010.30F1][.0000.0128.0002.3099] # <KATAKANA LETTER WE, KATAKANA VOICED ITERATION MARK>
-3091 309E ; [.32CF.0020.0011.3091][.32CF.0020.0010.3091][.0000.0128.0002.3099] # <HIRAGANA LETTER WE, HIRAGANA VOICED ITERATION MARK>
-30F2 30FD ; [.32D0.0020.0011.30F2][.32D0.0020.0010.30F2] # <KATAKANA LETTER WO, KATAKANA ITERATION MARK>
-FF66 30FD ; [.32D0.0020.0011.30F2][.32D0.0020.0010.30F2] # <HALFWIDTH KATAKANA LETTER WO, KATAKANA ITERATION MARK>
-3092 309D ; [.32D0.0020.0011.3092][.32D0.0020.0010.3092] # <HIRAGANA LETTER WO, HIRAGANA ITERATION MARK>
-30F2 30FE ; [.32D0.0020.0011.30F2][.32D0.0020.0010.30F2][.0000.0128.0002.3099] # <KATAKANA LETTER WO, KATAKANA VOICED ITERATION MARK>
-FF66 30FE ; [.32D0.0020.0011.30F2][.32D0.0020.0010.30F2][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER WO, KATAKANA VOICED ITERATION MARK>
-3092 309E ; [.32D0.0020.0011.3092][.32D0.0020.0010.3092][.0000.0128.0002.3099] # <HIRAGANA LETTER WO, HIRAGANA VOICED ITERATION MARK>
-30F3 30FD ; [.32D1.0020.0011.30F3][.32D1.0020.0010.30F3] # <KATAKANA LETTER N, KATAKANA ITERATION MARK>
-FF9D 30FD ; [.32D1.0020.0011.30F3][.32D1.0020.0010.30F3] # <HALFWIDTH KATAKANA LETTER N, KATAKANA ITERATION MARK>
-3093 309D ; [.32D1.0020.0011.3093][.32D1.0020.0010.3093] # <HIRAGANA LETTER N, HIRAGANA ITERATION MARK>
-30F4 30FD ; [.32A2.0020.0011.30A6][.0000.0128.0002.3099][.32A2.0020.0010.30F4] # <KATAKANA LETTER VU, KATAKANA ITERATION MARK>
-30A6 3099 30FD ; [.32A2.0020.0011.30A6][.0000.0128.0002.3099][.32A2.0020.0010.30F4] # <KATAKANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF73 FF9E 30FD ; [.32A2.0020.0011.30A6][.0000.0128.0002.3099][.32A2.0020.0010.30F4] # <HALFWIDTH KATAKANA LETTER U, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-3094 309D ; [.32A2.0020.0011.3046][.0000.0128.0002.3099][.32A2.0020.0010.3094] # <HIRAGANA LETTER VU, HIRAGANA ITERATION MARK>
-3046 3099 309D ; [.32A2.0020.0011.3046][.0000.0128.0002.3099][.32A2.0020.0010.3094] # <HIRAGANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
-30F4 30FE ; [.32A2.0020.0011.30A6][.0000.0128.0002.3099][.32A2.0020.0010.30F4][.0000.0128.0002.3099] # <KATAKANA LETTER VU, KATAKANA VOICED ITERATION MARK>
-30A6 3099 30FE ; [.32A2.0020.0011.30A6][.0000.0128.0002.3099][.32A2.0020.0010.30F4][.0000.0128.0002.3099] # <KATAKANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF73 FF9E 30FE ; [.32A2.0020.0011.30A6][.0000.0128.0002.3099][.32A2.0020.0010.30F4][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER U, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-3094 309E ; [.32A2.0020.0011.3046][.0000.0128.0002.3099][.32A2.0020.0010.3094][.0000.0128.0002.3099] # <HIRAGANA LETTER VU, HIRAGANA VOICED ITERATION MARK>
-3046 3099 309E ; [.32A2.0020.0011.3046][.0000.0128.0002.3099][.32A2.0020.0010.3094][.0000.0128.0002.3099] # <HIRAGANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
-30F5 30FD ; [.32A6.0020.000F.30F5][.32A6.0020.0010.30F5] # <KATAKANA LETTER SMALL KA, KATAKANA ITERATION MARK>
-3095 309D ; [.32A6.0020.000F.3095][.32A6.0020.0010.3095] # <HIRAGANA LETTER SMALL KA, HIRAGANA ITERATION MARK>
-30F5 30FE ; [.32A6.0020.000F.30F5][.32A6.0020.0010.30F5][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL KA, KATAKANA VOICED ITERATION MARK>
-3095 309E ; [.32A6.0020.000F.3095][.32A6.0020.0010.3095][.0000.0128.0002.3099] # <HIRAGANA LETTER SMALL KA, HIRAGANA VOICED ITERATION MARK>
-30F6 30FD ; [.32A9.0020.000F.30F6][.32A9.0020.0010.30F6] # <KATAKANA LETTER SMALL KE, KATAKANA ITERATION MARK>
-3096 309D ; [.32A9.0020.000F.3096][.32A9.0020.0010.3096] # <HIRAGANA LETTER SMALL KE, HIRAGANA ITERATION MARK>
-30F6 30FE ; [.32A9.0020.000F.30F6][.32A9.0020.0010.30F6][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL KE, KATAKANA VOICED ITERATION MARK>
-3096 309E ; [.32A9.0020.000F.3096][.32A9.0020.0010.3096][.0000.0128.0002.3099] # <HIRAGANA LETTER SMALL KE, HIRAGANA VOICED ITERATION MARK>
-30F7 30FD ; [.32CD.0020.0011.30EF][.0000.0128.0002.3099][.32CD.0020.0010.30F7] # <KATAKANA LETTER VA, KATAKANA ITERATION MARK>
-30EF 3099 30FD ; [.32CD.0020.0011.30EF][.0000.0128.0002.3099][.32CD.0020.0010.30F7] # <KATAKANA LETTER WA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF9C FF9E 30FD ; [.32CD.0020.0011.30EF][.0000.0128.0002.3099][.32CD.0020.0010.30F7] # <HALFWIDTH KATAKANA LETTER WA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-30F7 30FE ; [.32CD.0020.0011.30EF][.0000.0128.0002.3099][.32CD.0020.0010.30F7][.0000.0128.0002.3099] # <KATAKANA LETTER VA, KATAKANA VOICED ITERATION MARK>
-30EF 3099 30FE ; [.32CD.0020.0011.30EF][.0000.0128.0002.3099][.32CD.0020.0010.30F7][.0000.0128.0002.3099] # <KATAKANA LETTER WA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF9C FF9E 30FE ; [.32CD.0020.0011.30EF][.0000.0128.0002.3099][.32CD.0020.0010.30F7][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER WA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-30F8 30FD ; [.32CE.0020.0011.30F0][.0000.0128.0002.3099][.32CE.0020.0010.30F8] # <KATAKANA LETTER VI, KATAKANA ITERATION MARK>
-30F0 3099 30FD ; [.32CE.0020.0011.30F0][.0000.0128.0002.3099][.32CE.0020.0010.30F8] # <KATAKANA LETTER WI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-30F8 30FE ; [.32CE.0020.0011.30F0][.0000.0128.0002.3099][.32CE.0020.0010.30F8][.0000.0128.0002.3099] # <KATAKANA LETTER VI, KATAKANA VOICED ITERATION MARK>
-30F0 3099 30FE ; [.32CE.0020.0011.30F0][.0000.0128.0002.3099][.32CE.0020.0010.30F8][.0000.0128.0002.3099] # <KATAKANA LETTER WI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-30F9 30FD ; [.32CF.0020.0011.30F1][.0000.0128.0002.3099][.32CF.0020.0010.30F9] # <KATAKANA LETTER VE, KATAKANA ITERATION MARK>
-30F1 3099 30FD ; [.32CF.0020.0011.30F1][.0000.0128.0002.3099][.32CF.0020.0010.30F9] # <KATAKANA LETTER WE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-30F9 30FE ; [.32CF.0020.0011.30F1][.0000.0128.0002.3099][.32CF.0020.0010.30F9][.0000.0128.0002.3099] # <KATAKANA LETTER VE, KATAKANA VOICED ITERATION MARK>
-30F1 3099 30FE ; [.32CF.0020.0011.30F1][.0000.0128.0002.3099][.32CF.0020.0010.30F9][.0000.0128.0002.3099] # <KATAKANA LETTER WE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-30FA 30FD ; [.32D0.0020.0011.30F2][.0000.0128.0002.3099][.32D0.0020.0010.30FA] # <KATAKANA LETTER VO, KATAKANA ITERATION MARK>
-30F2 3099 30FD ; [.32D0.0020.0011.30F2][.0000.0128.0002.3099][.32D0.0020.0010.30FA] # <KATAKANA LETTER WO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-FF66 FF9E 30FD ; [.32D0.0020.0011.30F2][.0000.0128.0002.3099][.32D0.0020.0010.30FA] # <HALFWIDTH KATAKANA LETTER WO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
-30FA 30FE ; [.32D0.0020.0011.30F2][.0000.0128.0002.3099][.32D0.0020.0010.30FA][.0000.0128.0002.3099] # <KATAKANA LETTER VO, KATAKANA VOICED ITERATION MARK>
-30F2 3099 30FE ; [.32D0.0020.0011.30F2][.0000.0128.0002.3099][.32D0.0020.0010.30FA][.0000.0128.0002.3099] # <KATAKANA LETTER WO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-FF66 FF9E 30FE ; [.32D0.0020.0011.30F2][.0000.0128.0002.3099][.32D0.0020.0010.30FA][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER WO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
-31F0 30FD ; [.32A8.0020.000F.31F0][.32A8.0020.0010.31F0] # <KATAKANA LETTER SMALL KU, KATAKANA ITERATION MARK>
-31F0 30FE ; [.32A8.0020.000F.31F0][.32A8.0020.0010.31F0][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL KU, KATAKANA VOICED ITERATION MARK>
-31F1 30FD ; [.32AC.0020.000F.31F1][.32AC.0020.0010.31F1] # <KATAKANA LETTER SMALL SI, KATAKANA ITERATION MARK>
-31F1 30FE ; [.32AC.0020.000F.31F1][.32AC.0020.0010.31F1][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL SI, KATAKANA VOICED ITERATION MARK>
-31F2 30FD ; [.32AD.0020.000F.31F2][.32AD.0020.0010.31F2] # <KATAKANA LETTER SMALL SU, KATAKANA ITERATION MARK>
-31F2 30FE ; [.32AD.0020.000F.31F2][.32AD.0020.0010.31F2][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL SU, KATAKANA VOICED ITERATION MARK>
-31F3 30FD ; [.32B4.0020.000F.31F3][.32B4.0020.0010.31F3] # <KATAKANA LETTER SMALL TO, KATAKANA ITERATION MARK>
-31F3 30FE ; [.32B4.0020.000F.31F3][.32B4.0020.0010.31F3][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL TO, KATAKANA VOICED ITERATION MARK>
-31F4 30FD ; [.32B7.0020.000F.31F4][.32B7.0020.0010.31F4] # <KATAKANA LETTER SMALL NU, KATAKANA ITERATION MARK>
-31F5 30FD ; [.32BA.0020.000F.31F5][.32BA.0020.0010.31F5] # <KATAKANA LETTER SMALL HA, KATAKANA ITERATION MARK>
-31F5 30FE ; [.32BA.0020.000F.31F5][.32BA.0020.0010.31F5][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL HA, KATAKANA VOICED ITERATION MARK>
-31F6 30FD ; [.32BB.0020.000F.31F6][.32BB.0020.0010.31F6] # <KATAKANA LETTER SMALL HI, KATAKANA ITERATION MARK>
-31F6 30FE ; [.32BB.0020.000F.31F6][.32BB.0020.0010.31F6][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL HI, KATAKANA VOICED ITERATION MARK>
-31F7 30FD ; [.32BC.0020.000F.31F7][.32BC.0020.0010.31F7] # <KATAKANA LETTER SMALL HU, KATAKANA ITERATION MARK>
-31F7 30FE ; [.32BC.0020.000F.31F7][.32BC.0020.0010.31F7][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL HU, KATAKANA VOICED ITERATION MARK>
-31F8 30FD ; [.32BD.0020.000F.31F8][.32BD.0020.0010.31F8] # <KATAKANA LETTER SMALL HE, KATAKANA ITERATION MARK>
-31F8 30FE ; [.32BD.0020.000F.31F8][.32BD.0020.0010.31F8][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL HE, KATAKANA VOICED ITERATION MARK>
-31F9 30FD ; [.32BE.0020.000F.31F9][.32BE.0020.0010.31F9] # <KATAKANA LETTER SMALL HO, KATAKANA ITERATION MARK>
-31F9 30FE ; [.32BE.0020.000F.31F9][.32BE.0020.0010.31F9][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL HO, KATAKANA VOICED ITERATION MARK>
-31FA 30FD ; [.32C1.0020.000F.31FA][.32C1.0020.0010.31FA] # <KATAKANA LETTER SMALL MU, KATAKANA ITERATION MARK>
-31FB 30FD ; [.32C8.0020.000F.31FB][.32C8.0020.0010.31FB] # <KATAKANA LETTER SMALL RA, KATAKANA ITERATION MARK>
-31FC 30FD ; [.32C9.0020.000F.31FC][.32C9.0020.0010.31FC] # <KATAKANA LETTER SMALL RI, KATAKANA ITERATION MARK>
-31FD 30FD ; [.32CA.0020.000F.31FD][.32CA.0020.0010.31FD] # <KATAKANA LETTER SMALL RU, KATAKANA ITERATION MARK>
-31FE 30FD ; [.32CB.0020.000F.31FE][.32CB.0020.0010.31FE] # <KATAKANA LETTER SMALL RE, KATAKANA ITERATION MARK>
-31FF 30FD ; [.32CC.0020.000F.31FF][.32CC.0020.0010.31FF] # <KATAKANA LETTER SMALL RO, KATAKANA ITERATION MARK>
+30A1 30FC ; [.32BB.0020.000F.30A1][.32BB.0020.0007.30A1] # <KATAKANA LETTER SMALL A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF67 30FC ; [.32BB.0020.000F.30A1][.32BB.0020.0007.30A1] # <HALFWIDTH KATAKANA LETTER SMALL A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF67 FF70 ; [.32BB.0020.000F.30A1][.32BB.0020.0007.30A1] # <HALFWIDTH KATAKANA LETTER SMALL A, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3041 30FC ; [.32BB.0020.000F.3041][.32BB.0020.0007.3041] # <HIRAGANA LETTER SMALL A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30A2 30FC ; [.32BB.0020.0011.30A2][.32BB.0020.0007.30A2] # <KATAKANA LETTER A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF71 30FC ; [.32BB.0020.0011.30A2][.32BB.0020.0007.30A2] # <HALFWIDTH KATAKANA LETTER A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF71 FF70 ; [.32BB.0020.0011.30A2][.32BB.0020.0007.30A2] # <HALFWIDTH KATAKANA LETTER A, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3042 30FC ; [.32BB.0020.0011.3042][.32BB.0020.0007.3042] # <HIRAGANA LETTER A, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30AB 30FC ; [.32C1.0020.0011.30AB][.32BB.0020.0007.30AB] # <KATAKANA LETTER KA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF76 30FC ; [.32C1.0020.0011.30AB][.32BB.0020.0007.30AB] # <HALFWIDTH KATAKANA LETTER KA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF76 FF70 ; [.32C1.0020.0011.30AB][.32BB.0020.0007.30AB] # <HALFWIDTH KATAKANA LETTER KA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+304B 30FC ; [.32C1.0020.0011.304B][.32BB.0020.0007.304B] # <HIRAGANA LETTER KA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30AC 30FC ; [.32C1.0020.0011.30AB][.0000.0128.0002.3099][.32BB.0020.0007.30AC] # <KATAKANA LETTER GA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30AB 3099 30FC ; [.32C1.0020.0011.30AB][.0000.0128.0002.3099][.32BB.0020.0007.30AC] # <KATAKANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF76 FF9E 30FC ; [.32C1.0020.0011.30AB][.0000.0128.0002.3099][.32BB.0020.0007.30AC] # <HALFWIDTH KATAKANA LETTER KA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF76 FF9E FF70 ; [.32C1.0020.0011.30AB][.0000.0128.0002.3099][.32BB.0020.0007.30AC] # <HALFWIDTH KATAKANA LETTER KA, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+304C 30FC ; [.32C1.0020.0011.304B][.0000.0128.0002.3099][.32BB.0020.0007.304C] # <HIRAGANA LETTER GA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+304B 3099 30FC ; [.32C1.0020.0011.304B][.0000.0128.0002.3099][.32BB.0020.0007.304C] # <HIRAGANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B5 30FC ; [.32C6.0020.0011.30B5][.32BB.0020.0007.30B5] # <KATAKANA LETTER SA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7B 30FC ; [.32C6.0020.0011.30B5][.32BB.0020.0007.30B5] # <HALFWIDTH KATAKANA LETTER SA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7B FF70 ; [.32C6.0020.0011.30B5][.32BB.0020.0007.30B5] # <HALFWIDTH KATAKANA LETTER SA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3055 30FC ; [.32C6.0020.0011.3055][.32BB.0020.0007.3055] # <HIRAGANA LETTER SA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B6 30FC ; [.32C6.0020.0011.30B5][.0000.0128.0002.3099][.32BB.0020.0007.30B6] # <KATAKANA LETTER ZA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B5 3099 30FC ; [.32C6.0020.0011.30B5][.0000.0128.0002.3099][.32BB.0020.0007.30B6] # <KATAKANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7B FF9E 30FC ; [.32C6.0020.0011.30B5][.0000.0128.0002.3099][.32BB.0020.0007.30B6] # <HALFWIDTH KATAKANA LETTER SA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7B FF9E FF70 ; [.32C6.0020.0011.30B5][.0000.0128.0002.3099][.32BB.0020.0007.30B6] # <HALFWIDTH KATAKANA LETTER SA, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3056 30FC ; [.32C6.0020.0011.3055][.0000.0128.0002.3099][.32BB.0020.0007.3056] # <HIRAGANA LETTER ZA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3055 3099 30FC ; [.32C6.0020.0011.3055][.0000.0128.0002.3099][.32BB.0020.0007.3056] # <HIRAGANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30BF 30FC ; [.32CB.0020.0011.30BF][.32BB.0020.0007.30BF] # <KATAKANA LETTER TA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF80 30FC ; [.32CB.0020.0011.30BF][.32BB.0020.0007.30BF] # <HALFWIDTH KATAKANA LETTER TA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF80 FF70 ; [.32CB.0020.0011.30BF][.32BB.0020.0007.30BF] # <HALFWIDTH KATAKANA LETTER TA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+305F 30FC ; [.32CB.0020.0011.305F][.32BB.0020.0007.305F] # <HIRAGANA LETTER TA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C0 30FC ; [.32CB.0020.0011.30BF][.0000.0128.0002.3099][.32BB.0020.0007.30C0] # <KATAKANA LETTER DA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30BF 3099 30FC ; [.32CB.0020.0011.30BF][.0000.0128.0002.3099][.32BB.0020.0007.30C0] # <KATAKANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF80 FF9E 30FC ; [.32CB.0020.0011.30BF][.0000.0128.0002.3099][.32BB.0020.0007.30C0] # <HALFWIDTH KATAKANA LETTER TA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF80 FF9E FF70 ; [.32CB.0020.0011.30BF][.0000.0128.0002.3099][.32BB.0020.0007.30C0] # <HALFWIDTH KATAKANA LETTER TA, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3060 30FC ; [.32CB.0020.0011.305F][.0000.0128.0002.3099][.32BB.0020.0007.3060] # <HIRAGANA LETTER DA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+305F 3099 30FC ; [.32CB.0020.0011.305F][.0000.0128.0002.3099][.32BB.0020.0007.3060] # <HIRAGANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30CA 30FC ; [.32D0.0020.0011.30CA][.32BB.0020.0007.30CA] # <KATAKANA LETTER NA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF85 30FC ; [.32D0.0020.0011.30CA][.32BB.0020.0007.30CA] # <HALFWIDTH KATAKANA LETTER NA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF85 FF70 ; [.32D0.0020.0011.30CA][.32BB.0020.0007.30CA] # <HALFWIDTH KATAKANA LETTER NA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+306A 30FC ; [.32D0.0020.0011.306A][.32BB.0020.0007.306A] # <HIRAGANA LETTER NA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30CF 30FC ; [.32D5.0020.0011.30CF][.32BB.0020.0007.30CF] # <KATAKANA LETTER HA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8A 30FC ; [.32D5.0020.0011.30CF][.32BB.0020.0007.30CF] # <HALFWIDTH KATAKANA LETTER HA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8A FF70 ; [.32D5.0020.0011.30CF][.32BB.0020.0007.30CF] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+306F 30FC ; [.32D5.0020.0011.306F][.32BB.0020.0007.306F] # <HIRAGANA LETTER HA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D0 30FC ; [.32D5.0020.0011.30CF][.0000.0128.0002.3099][.32BB.0020.0007.30D0] # <KATAKANA LETTER BA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30CF 3099 30FC ; [.32D5.0020.0011.30CF][.0000.0128.0002.3099][.32BB.0020.0007.30D0] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8A FF9E 30FC ; [.32D5.0020.0011.30CF][.0000.0128.0002.3099][.32BB.0020.0007.30D0] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8A FF9E FF70 ; [.32D5.0020.0011.30CF][.0000.0128.0002.3099][.32BB.0020.0007.30D0] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3070 30FC ; [.32D5.0020.0011.306F][.0000.0128.0002.3099][.32BB.0020.0007.3070] # <HIRAGANA LETTER BA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+306F 3099 30FC ; [.32D5.0020.0011.306F][.0000.0128.0002.3099][.32BB.0020.0007.3070] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D1 30FC ; [.32D5.0020.0011.30CF][.0000.0129.0002.309A][.32BB.0020.0007.30D1] # <KATAKANA LETTER PA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30CF 309A 30FC ; [.32D5.0020.0011.30CF][.0000.0129.0002.309A][.32BB.0020.0007.30D1] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8A FF9F 30FC ; [.32D5.0020.0011.30CF][.0000.0129.0002.309A][.32BB.0020.0007.30D1] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8A FF9F FF70 ; [.32D5.0020.0011.30CF][.0000.0129.0002.309A][.32BB.0020.0007.30D1] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3071 30FC ; [.32D5.0020.0011.306F][.0000.0129.0002.309A][.32BB.0020.0007.3071] # <HIRAGANA LETTER PA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+306F 309A 30FC ; [.32D5.0020.0011.306F][.0000.0129.0002.309A][.32BB.0020.0007.3071] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30DE 30FC ; [.32DA.0020.0011.30DE][.32BB.0020.0007.30DE] # <KATAKANA LETTER MA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8F 30FC ; [.32DA.0020.0011.30DE][.32BB.0020.0007.30DE] # <HALFWIDTH KATAKANA LETTER MA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8F FF70 ; [.32DA.0020.0011.30DE][.32BB.0020.0007.30DE] # <HALFWIDTH KATAKANA LETTER MA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+307E 30FC ; [.32DA.0020.0011.307E][.32BB.0020.0007.307E] # <HIRAGANA LETTER MA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30E3 30FC ; [.32DF.0020.000F.30E3][.32BB.0020.0007.30E3] # <KATAKANA LETTER SMALL YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6C 30FC ; [.32DF.0020.000F.30E3][.32BB.0020.0007.30E3] # <HALFWIDTH KATAKANA LETTER SMALL YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6C FF70 ; [.32DF.0020.000F.30E3][.32BB.0020.0007.30E3] # <HALFWIDTH KATAKANA LETTER SMALL YA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3083 30FC ; [.32DF.0020.000F.3083][.32BB.0020.0007.3083] # <HIRAGANA LETTER SMALL YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30E4 30FC ; [.32DF.0020.0011.30E4][.32BB.0020.0007.30E4] # <KATAKANA LETTER YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF94 30FC ; [.32DF.0020.0011.30E4][.32BB.0020.0007.30E4] # <HALFWIDTH KATAKANA LETTER YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF94 FF70 ; [.32DF.0020.0011.30E4][.32BB.0020.0007.30E4] # <HALFWIDTH KATAKANA LETTER YA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3084 30FC ; [.32DF.0020.0011.3084][.32BB.0020.0007.3084] # <HIRAGANA LETTER YA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30E9 30FC ; [.32E3.0020.0011.30E9][.32BB.0020.0007.30E9] # <KATAKANA LETTER RA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF97 30FC ; [.32E3.0020.0011.30E9][.32BB.0020.0007.30E9] # <HALFWIDTH KATAKANA LETTER RA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF97 FF70 ; [.32E3.0020.0011.30E9][.32BB.0020.0007.30E9] # <HALFWIDTH KATAKANA LETTER RA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3089 30FC ; [.32E3.0020.0011.3089][.32BB.0020.0007.3089] # <HIRAGANA LETTER RA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30EE 30FC ; [.32E8.0020.000F.30EE][.32BB.0020.0007.30EE] # <KATAKANA LETTER SMALL WA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+308E 30FC ; [.32E8.0020.000F.308E][.32BB.0020.0007.308E] # <HIRAGANA LETTER SMALL WA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30EF 30FC ; [.32E8.0020.0011.30EF][.32BB.0020.0007.30EF] # <KATAKANA LETTER WA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF9C 30FC ; [.32E8.0020.0011.30EF][.32BB.0020.0007.30EF] # <HALFWIDTH KATAKANA LETTER WA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF9C FF70 ; [.32E8.0020.0011.30EF][.32BB.0020.0007.30EF] # <HALFWIDTH KATAKANA LETTER WA, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+308F 30FC ; [.32E8.0020.0011.308F][.32BB.0020.0007.308F] # <HIRAGANA LETTER WA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F7 30FC ; [.32E8.0020.0011.30EF][.0000.0128.0002.3099][.32BB.0020.0007.30F7] # <KATAKANA LETTER VA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30EF 3099 30FC ; [.32E8.0020.0011.30EF][.0000.0128.0002.3099][.32BB.0020.0007.30F7] # <KATAKANA LETTER WA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF9C FF9E 30FC ; [.32E8.0020.0011.30EF][.0000.0128.0002.3099][.32BB.0020.0007.30F7] # <HALFWIDTH KATAKANA LETTER WA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF9C FF9E FF70 ; [.32E8.0020.0011.30EF][.0000.0128.0002.3099][.32BB.0020.0007.30F7] # <HALFWIDTH KATAKANA LETTER WA, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F5 30FC ; [.32C1.0020.000F.30F5][.32BB.0020.0007.30F5] # <KATAKANA LETTER SMALL KA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3095 30FC ; [.32C1.0020.000F.3095][.32BB.0020.0007.3095] # <HIRAGANA LETTER SMALL KA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31F5 30FC ; [.32D5.0020.000F.31F5][.32BB.0020.0007.31F5] # <KATAKANA LETTER SMALL HA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31FB 30FC ; [.32E3.0020.000F.31FB][.32BB.0020.0007.31FB] # <KATAKANA LETTER SMALL RA, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30A3 30FC ; [.32BC.0020.000F.30A3][.32BC.0020.0007.30A3] # <KATAKANA LETTER SMALL I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF68 30FC ; [.32BC.0020.000F.30A3][.32BC.0020.0007.30A3] # <HALFWIDTH KATAKANA LETTER SMALL I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF68 FF70 ; [.32BC.0020.000F.30A3][.32BC.0020.0007.30A3] # <HALFWIDTH KATAKANA LETTER SMALL I, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3043 30FC ; [.32BC.0020.000F.3043][.32BC.0020.0007.3043] # <HIRAGANA LETTER SMALL I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30A4 30FC ; [.32BC.0020.0011.30A4][.32BC.0020.0007.30A4] # <KATAKANA LETTER I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF72 30FC ; [.32BC.0020.0011.30A4][.32BC.0020.0007.30A4] # <HALFWIDTH KATAKANA LETTER I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF72 FF70 ; [.32BC.0020.0011.30A4][.32BC.0020.0007.30A4] # <HALFWIDTH KATAKANA LETTER I, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3044 30FC ; [.32BC.0020.0011.3044][.32BC.0020.0007.3044] # <HIRAGANA LETTER I, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30AD 30FC ; [.32C2.0020.0011.30AD][.32BC.0020.0007.30AD] # <KATAKANA LETTER KI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF77 30FC ; [.32C2.0020.0011.30AD][.32BC.0020.0007.30AD] # <HALFWIDTH KATAKANA LETTER KI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF77 FF70 ; [.32C2.0020.0011.30AD][.32BC.0020.0007.30AD] # <HALFWIDTH KATAKANA LETTER KI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+304D 30FC ; [.32C2.0020.0011.304D][.32BC.0020.0007.304D] # <HIRAGANA LETTER KI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30AE 30FC ; [.32C2.0020.0011.30AD][.0000.0128.0002.3099][.32BC.0020.0007.30AE] # <KATAKANA LETTER GI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30AD 3099 30FC ; [.32C2.0020.0011.30AD][.0000.0128.0002.3099][.32BC.0020.0007.30AE] # <KATAKANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF77 FF9E 30FC ; [.32C2.0020.0011.30AD][.0000.0128.0002.3099][.32BC.0020.0007.30AE] # <HALFWIDTH KATAKANA LETTER KI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF77 FF9E FF70 ; [.32C2.0020.0011.30AD][.0000.0128.0002.3099][.32BC.0020.0007.30AE] # <HALFWIDTH KATAKANA LETTER KI, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+304E 30FC ; [.32C2.0020.0011.304D][.0000.0128.0002.3099][.32BC.0020.0007.304E] # <HIRAGANA LETTER GI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+304D 3099 30FC ; [.32C2.0020.0011.304D][.0000.0128.0002.3099][.32BC.0020.0007.304E] # <HIRAGANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B7 30FC ; [.32C7.0020.0011.30B7][.32BC.0020.0007.30B7] # <KATAKANA LETTER SI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7C 30FC ; [.32C7.0020.0011.30B7][.32BC.0020.0007.30B7] # <HALFWIDTH KATAKANA LETTER SI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7C FF70 ; [.32C7.0020.0011.30B7][.32BC.0020.0007.30B7] # <HALFWIDTH KATAKANA LETTER SI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3057 30FC ; [.32C7.0020.0011.3057][.32BC.0020.0007.3057] # <HIRAGANA LETTER SI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B8 30FC ; [.32C7.0020.0011.30B7][.0000.0128.0002.3099][.32BC.0020.0007.30B8] # <KATAKANA LETTER ZI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B7 3099 30FC ; [.32C7.0020.0011.30B7][.0000.0128.0002.3099][.32BC.0020.0007.30B8] # <KATAKANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7C FF9E 30FC ; [.32C7.0020.0011.30B7][.0000.0128.0002.3099][.32BC.0020.0007.30B8] # <HALFWIDTH KATAKANA LETTER SI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7C FF9E FF70 ; [.32C7.0020.0011.30B7][.0000.0128.0002.3099][.32BC.0020.0007.30B8] # <HALFWIDTH KATAKANA LETTER SI, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3058 30FC ; [.32C7.0020.0011.3057][.0000.0128.0002.3099][.32BC.0020.0007.3058] # <HIRAGANA LETTER ZI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3057 3099 30FC ; [.32C7.0020.0011.3057][.0000.0128.0002.3099][.32BC.0020.0007.3058] # <HIRAGANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C1 30FC ; [.32CC.0020.0011.30C1][.32BC.0020.0007.30C1] # <KATAKANA LETTER TI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF81 30FC ; [.32CC.0020.0011.30C1][.32BC.0020.0007.30C1] # <HALFWIDTH KATAKANA LETTER TI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF81 FF70 ; [.32CC.0020.0011.30C1][.32BC.0020.0007.30C1] # <HALFWIDTH KATAKANA LETTER TI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3061 30FC ; [.32CC.0020.0011.3061][.32BC.0020.0007.3061] # <HIRAGANA LETTER TI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C2 30FC ; [.32CC.0020.0011.30C1][.0000.0128.0002.3099][.32BC.0020.0007.30C2] # <KATAKANA LETTER DI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C1 3099 30FC ; [.32CC.0020.0011.30C1][.0000.0128.0002.3099][.32BC.0020.0007.30C2] # <KATAKANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF81 FF9E 30FC ; [.32CC.0020.0011.30C1][.0000.0128.0002.3099][.32BC.0020.0007.30C2] # <HALFWIDTH KATAKANA LETTER TI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF81 FF9E FF70 ; [.32CC.0020.0011.30C1][.0000.0128.0002.3099][.32BC.0020.0007.30C2] # <HALFWIDTH KATAKANA LETTER TI, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3062 30FC ; [.32CC.0020.0011.3061][.0000.0128.0002.3099][.32BC.0020.0007.3062] # <HIRAGANA LETTER DI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3061 3099 30FC ; [.32CC.0020.0011.3061][.0000.0128.0002.3099][.32BC.0020.0007.3062] # <HIRAGANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30CB 30FC ; [.32D1.0020.0011.30CB][.32BC.0020.0007.30CB] # <KATAKANA LETTER NI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF86 30FC ; [.32D1.0020.0011.30CB][.32BC.0020.0007.30CB] # <HALFWIDTH KATAKANA LETTER NI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF86 FF70 ; [.32D1.0020.0011.30CB][.32BC.0020.0007.30CB] # <HALFWIDTH KATAKANA LETTER NI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+306B 30FC ; [.32D1.0020.0011.306B][.32BC.0020.0007.306B] # <HIRAGANA LETTER NI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D2 30FC ; [.32D6.0020.0011.30D2][.32BC.0020.0007.30D2] # <KATAKANA LETTER HI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8B 30FC ; [.32D6.0020.0011.30D2][.32BC.0020.0007.30D2] # <HALFWIDTH KATAKANA LETTER HI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8B FF70 ; [.32D6.0020.0011.30D2][.32BC.0020.0007.30D2] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3072 30FC ; [.32D6.0020.0011.3072][.32BC.0020.0007.3072] # <HIRAGANA LETTER HI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D3 30FC ; [.32D6.0020.0011.30D2][.0000.0128.0002.3099][.32BC.0020.0007.30D3] # <KATAKANA LETTER BI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D2 3099 30FC ; [.32D6.0020.0011.30D2][.0000.0128.0002.3099][.32BC.0020.0007.30D3] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8B FF9E 30FC ; [.32D6.0020.0011.30D2][.0000.0128.0002.3099][.32BC.0020.0007.30D3] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8B FF9E FF70 ; [.32D6.0020.0011.30D2][.0000.0128.0002.3099][.32BC.0020.0007.30D3] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3073 30FC ; [.32D6.0020.0011.3072][.0000.0128.0002.3099][.32BC.0020.0007.3073] # <HIRAGANA LETTER BI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3072 3099 30FC ; [.32D6.0020.0011.3072][.0000.0128.0002.3099][.32BC.0020.0007.3073] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D4 30FC ; [.32D6.0020.0011.30D2][.0000.0129.0002.309A][.32BC.0020.0007.30D4] # <KATAKANA LETTER PI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D2 309A 30FC ; [.32D6.0020.0011.30D2][.0000.0129.0002.309A][.32BC.0020.0007.30D4] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8B FF9F 30FC ; [.32D6.0020.0011.30D2][.0000.0129.0002.309A][.32BC.0020.0007.30D4] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8B FF9F FF70 ; [.32D6.0020.0011.30D2][.0000.0129.0002.309A][.32BC.0020.0007.30D4] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3074 30FC ; [.32D6.0020.0011.3072][.0000.0129.0002.309A][.32BC.0020.0007.3074] # <HIRAGANA LETTER PI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3072 309A 30FC ; [.32D6.0020.0011.3072][.0000.0129.0002.309A][.32BC.0020.0007.3074] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30DF 30FC ; [.32DB.0020.0011.30DF][.32BC.0020.0007.30DF] # <KATAKANA LETTER MI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF90 30FC ; [.32DB.0020.0011.30DF][.32BC.0020.0007.30DF] # <HALFWIDTH KATAKANA LETTER MI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF90 FF70 ; [.32DB.0020.0011.30DF][.32BC.0020.0007.30DF] # <HALFWIDTH KATAKANA LETTER MI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+307F 30FC ; [.32DB.0020.0011.307F][.32BC.0020.0007.307F] # <HIRAGANA LETTER MI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30EA 30FC ; [.32E4.0020.0011.30EA][.32BC.0020.0007.30EA] # <KATAKANA LETTER RI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF98 30FC ; [.32E4.0020.0011.30EA][.32BC.0020.0007.30EA] # <HALFWIDTH KATAKANA LETTER RI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF98 FF70 ; [.32E4.0020.0011.30EA][.32BC.0020.0007.30EA] # <HALFWIDTH KATAKANA LETTER RI, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+308A 30FC ; [.32E4.0020.0011.308A][.32BC.0020.0007.308A] # <HIRAGANA LETTER RI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F0 30FC ; [.32E9.0020.0011.30F0][.32BC.0020.0007.30F0] # <KATAKANA LETTER WI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3090 30FC ; [.32E9.0020.0011.3090][.32BC.0020.0007.3090] # <HIRAGANA LETTER WI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F8 30FC ; [.32E9.0020.0011.30F0][.0000.0128.0002.3099][.32BC.0020.0007.30F8] # <KATAKANA LETTER VI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F0 3099 30FC ; [.32E9.0020.0011.30F0][.0000.0128.0002.3099][.32BC.0020.0007.30F8] # <KATAKANA LETTER WI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31F1 30FC ; [.32C7.0020.000F.31F1][.32BC.0020.0007.31F1] # <KATAKANA LETTER SMALL SI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31F6 30FC ; [.32D6.0020.000F.31F6][.32BC.0020.0007.31F6] # <KATAKANA LETTER SMALL HI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31FC 30FC ; [.32E4.0020.000F.31FC][.32BC.0020.0007.31FC] # <KATAKANA LETTER SMALL RI, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30A5 30FC ; [.32BD.0020.000F.30A5][.32BD.0020.0007.30A5] # <KATAKANA LETTER SMALL U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF69 30FC ; [.32BD.0020.000F.30A5][.32BD.0020.0007.30A5] # <HALFWIDTH KATAKANA LETTER SMALL U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF69 FF70 ; [.32BD.0020.000F.30A5][.32BD.0020.0007.30A5] # <HALFWIDTH KATAKANA LETTER SMALL U, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3045 30FC ; [.32BD.0020.000F.3045][.32BD.0020.0007.3045] # <HIRAGANA LETTER SMALL U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30A6 30FC ; [.32BD.0020.0011.30A6][.32BD.0020.0007.30A6] # <KATAKANA LETTER U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF73 30FC ; [.32BD.0020.0011.30A6][.32BD.0020.0007.30A6] # <HALFWIDTH KATAKANA LETTER U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF73 FF70 ; [.32BD.0020.0011.30A6][.32BD.0020.0007.30A6] # <HALFWIDTH KATAKANA LETTER U, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3046 30FC ; [.32BD.0020.0011.3046][.32BD.0020.0007.3046] # <HIRAGANA LETTER U, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30AF 30FC ; [.32C3.0020.0011.30AF][.32BD.0020.0007.30AF] # <KATAKANA LETTER KU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF78 30FC ; [.32C3.0020.0011.30AF][.32BD.0020.0007.30AF] # <HALFWIDTH KATAKANA LETTER KU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF78 FF70 ; [.32C3.0020.0011.30AF][.32BD.0020.0007.30AF] # <HALFWIDTH KATAKANA LETTER KU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+304F 30FC ; [.32C3.0020.0011.304F][.32BD.0020.0007.304F] # <HIRAGANA LETTER KU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B0 30FC ; [.32C3.0020.0011.30AF][.0000.0128.0002.3099][.32BD.0020.0007.30B0] # <KATAKANA LETTER GU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30AF 3099 30FC ; [.32C3.0020.0011.30AF][.0000.0128.0002.3099][.32BD.0020.0007.30B0] # <KATAKANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF78 FF9E 30FC ; [.32C3.0020.0011.30AF][.0000.0128.0002.3099][.32BD.0020.0007.30B0] # <HALFWIDTH KATAKANA LETTER KU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF78 FF9E FF70 ; [.32C3.0020.0011.30AF][.0000.0128.0002.3099][.32BD.0020.0007.30B0] # <HALFWIDTH KATAKANA LETTER KU, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3050 30FC ; [.32C3.0020.0011.304F][.0000.0128.0002.3099][.32BD.0020.0007.3050] # <HIRAGANA LETTER GU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+304F 3099 30FC ; [.32C3.0020.0011.304F][.0000.0128.0002.3099][.32BD.0020.0007.3050] # <HIRAGANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B9 30FC ; [.32C8.0020.0011.30B9][.32BD.0020.0007.30B9] # <KATAKANA LETTER SU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7D 30FC ; [.32C8.0020.0011.30B9][.32BD.0020.0007.30B9] # <HALFWIDTH KATAKANA LETTER SU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7D FF70 ; [.32C8.0020.0011.30B9][.32BD.0020.0007.30B9] # <HALFWIDTH KATAKANA LETTER SU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3059 30FC ; [.32C8.0020.0011.3059][.32BD.0020.0007.3059] # <HIRAGANA LETTER SU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30BA 30FC ; [.32C8.0020.0011.30B9][.0000.0128.0002.3099][.32BD.0020.0007.30BA] # <KATAKANA LETTER ZU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B9 3099 30FC ; [.32C8.0020.0011.30B9][.0000.0128.0002.3099][.32BD.0020.0007.30BA] # <KATAKANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7D FF9E 30FC ; [.32C8.0020.0011.30B9][.0000.0128.0002.3099][.32BD.0020.0007.30BA] # <HALFWIDTH KATAKANA LETTER SU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7D FF9E FF70 ; [.32C8.0020.0011.30B9][.0000.0128.0002.3099][.32BD.0020.0007.30BA] # <HALFWIDTH KATAKANA LETTER SU, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+305A 30FC ; [.32C8.0020.0011.3059][.0000.0128.0002.3099][.32BD.0020.0007.305A] # <HIRAGANA LETTER ZU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3059 3099 30FC ; [.32C8.0020.0011.3059][.0000.0128.0002.3099][.32BD.0020.0007.305A] # <HIRAGANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C3 30FC ; [.32CD.0020.000F.30C3][.32BD.0020.0007.30C3] # <KATAKANA LETTER SMALL TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6F 30FC ; [.32CD.0020.000F.30C3][.32BD.0020.0007.30C3] # <HALFWIDTH KATAKANA LETTER SMALL TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6F FF70 ; [.32CD.0020.000F.30C3][.32BD.0020.0007.30C3] # <HALFWIDTH KATAKANA LETTER SMALL TU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3063 30FC ; [.32CD.0020.000F.3063][.32BD.0020.0007.3063] # <HIRAGANA LETTER SMALL TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C4 30FC ; [.32CD.0020.0011.30C4][.32BD.0020.0007.30C4] # <KATAKANA LETTER TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF82 30FC ; [.32CD.0020.0011.30C4][.32BD.0020.0007.30C4] # <HALFWIDTH KATAKANA LETTER TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF82 FF70 ; [.32CD.0020.0011.30C4][.32BD.0020.0007.30C4] # <HALFWIDTH KATAKANA LETTER TU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3064 30FC ; [.32CD.0020.0011.3064][.32BD.0020.0007.3064] # <HIRAGANA LETTER TU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C5 30FC ; [.32CD.0020.0011.30C4][.0000.0128.0002.3099][.32BD.0020.0007.30C5] # <KATAKANA LETTER DU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C4 3099 30FC ; [.32CD.0020.0011.30C4][.0000.0128.0002.3099][.32BD.0020.0007.30C5] # <KATAKANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF82 FF9E 30FC ; [.32CD.0020.0011.30C4][.0000.0128.0002.3099][.32BD.0020.0007.30C5] # <HALFWIDTH KATAKANA LETTER TU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF82 FF9E FF70 ; [.32CD.0020.0011.30C4][.0000.0128.0002.3099][.32BD.0020.0007.30C5] # <HALFWIDTH KATAKANA LETTER TU, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3065 30FC ; [.32CD.0020.0011.3064][.0000.0128.0002.3099][.32BD.0020.0007.3065] # <HIRAGANA LETTER DU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3064 3099 30FC ; [.32CD.0020.0011.3064][.0000.0128.0002.3099][.32BD.0020.0007.3065] # <HIRAGANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30CC 30FC ; [.32D2.0020.0011.30CC][.32BD.0020.0007.30CC] # <KATAKANA LETTER NU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF87 30FC ; [.32D2.0020.0011.30CC][.32BD.0020.0007.30CC] # <HALFWIDTH KATAKANA LETTER NU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF87 FF70 ; [.32D2.0020.0011.30CC][.32BD.0020.0007.30CC] # <HALFWIDTH KATAKANA LETTER NU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+306C 30FC ; [.32D2.0020.0011.306C][.32BD.0020.0007.306C] # <HIRAGANA LETTER NU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D5 30FC ; [.32D7.0020.0011.30D5][.32BD.0020.0007.30D5] # <KATAKANA LETTER HU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8C 30FC ; [.32D7.0020.0011.30D5][.32BD.0020.0007.30D5] # <HALFWIDTH KATAKANA LETTER HU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8C FF70 ; [.32D7.0020.0011.30D5][.32BD.0020.0007.30D5] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3075 30FC ; [.32D7.0020.0011.3075][.32BD.0020.0007.3075] # <HIRAGANA LETTER HU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D6 30FC ; [.32D7.0020.0011.30D5][.0000.0128.0002.3099][.32BD.0020.0007.30D6] # <KATAKANA LETTER BU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D5 3099 30FC ; [.32D7.0020.0011.30D5][.0000.0128.0002.3099][.32BD.0020.0007.30D6] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8C FF9E 30FC ; [.32D7.0020.0011.30D5][.0000.0128.0002.3099][.32BD.0020.0007.30D6] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8C FF9E FF70 ; [.32D7.0020.0011.30D5][.0000.0128.0002.3099][.32BD.0020.0007.30D6] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3076 30FC ; [.32D7.0020.0011.3075][.0000.0128.0002.3099][.32BD.0020.0007.3076] # <HIRAGANA LETTER BU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3075 3099 30FC ; [.32D7.0020.0011.3075][.0000.0128.0002.3099][.32BD.0020.0007.3076] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D7 30FC ; [.32D7.0020.0011.30D5][.0000.0129.0002.309A][.32BD.0020.0007.30D7] # <KATAKANA LETTER PU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D5 309A 30FC ; [.32D7.0020.0011.30D5][.0000.0129.0002.309A][.32BD.0020.0007.30D7] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8C FF9F 30FC ; [.32D7.0020.0011.30D5][.0000.0129.0002.309A][.32BD.0020.0007.30D7] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8C FF9F FF70 ; [.32D7.0020.0011.30D5][.0000.0129.0002.309A][.32BD.0020.0007.30D7] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3077 30FC ; [.32D7.0020.0011.3075][.0000.0129.0002.309A][.32BD.0020.0007.3077] # <HIRAGANA LETTER PU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3075 309A 30FC ; [.32D7.0020.0011.3075][.0000.0129.0002.309A][.32BD.0020.0007.3077] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30E0 30FC ; [.32DC.0020.0011.30E0][.32BD.0020.0007.30E0] # <KATAKANA LETTER MU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF91 30FC ; [.32DC.0020.0011.30E0][.32BD.0020.0007.30E0] # <HALFWIDTH KATAKANA LETTER MU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF91 FF70 ; [.32DC.0020.0011.30E0][.32BD.0020.0007.30E0] # <HALFWIDTH KATAKANA LETTER MU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3080 30FC ; [.32DC.0020.0011.3080][.32BD.0020.0007.3080] # <HIRAGANA LETTER MU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30E5 30FC ; [.32E0.0020.000F.30E5][.32BD.0020.0007.30E5] # <KATAKANA LETTER SMALL YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6D 30FC ; [.32E0.0020.000F.30E5][.32BD.0020.0007.30E5] # <HALFWIDTH KATAKANA LETTER SMALL YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6D FF70 ; [.32E0.0020.000F.30E5][.32BD.0020.0007.30E5] # <HALFWIDTH KATAKANA LETTER SMALL YU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3085 30FC ; [.32E0.0020.000F.3085][.32BD.0020.0007.3085] # <HIRAGANA LETTER SMALL YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30E6 30FC ; [.32E0.0020.0011.30E6][.32BD.0020.0007.30E6] # <KATAKANA LETTER YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF95 30FC ; [.32E0.0020.0011.30E6][.32BD.0020.0007.30E6] # <HALFWIDTH KATAKANA LETTER YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF95 FF70 ; [.32E0.0020.0011.30E6][.32BD.0020.0007.30E6] # <HALFWIDTH KATAKANA LETTER YU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3086 30FC ; [.32E0.0020.0011.3086][.32BD.0020.0007.3086] # <HIRAGANA LETTER YU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30EB 30FC ; [.32E5.0020.0011.30EB][.32BD.0020.0007.30EB] # <KATAKANA LETTER RU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF99 30FC ; [.32E5.0020.0011.30EB][.32BD.0020.0007.30EB] # <HALFWIDTH KATAKANA LETTER RU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF99 FF70 ; [.32E5.0020.0011.30EB][.32BD.0020.0007.30EB] # <HALFWIDTH KATAKANA LETTER RU, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+308B 30FC ; [.32E5.0020.0011.308B][.32BD.0020.0007.308B] # <HIRAGANA LETTER RU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F4 30FC ; [.32BD.0020.0011.30A6][.0000.0128.0002.3099][.32BD.0020.0007.30F4] # <KATAKANA LETTER VU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30A6 3099 30FC ; [.32BD.0020.0011.30A6][.0000.0128.0002.3099][.32BD.0020.0007.30F4] # <KATAKANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF73 FF9E 30FC ; [.32BD.0020.0011.30A6][.0000.0128.0002.3099][.32BD.0020.0007.30F4] # <HALFWIDTH KATAKANA LETTER U, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF73 FF9E FF70 ; [.32BD.0020.0011.30A6][.0000.0128.0002.3099][.32BD.0020.0007.30F4] # <HALFWIDTH KATAKANA LETTER U, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3094 30FC ; [.32BD.0020.0011.3046][.0000.0128.0002.3099][.32BD.0020.0007.3094] # <HIRAGANA LETTER VU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3046 3099 30FC ; [.32BD.0020.0011.3046][.0000.0128.0002.3099][.32BD.0020.0007.3094] # <HIRAGANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31F0 30FC ; [.32C3.0020.000F.31F0][.32BD.0020.0007.31F0] # <KATAKANA LETTER SMALL KU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31F2 30FC ; [.32C8.0020.000F.31F2][.32BD.0020.0007.31F2] # <KATAKANA LETTER SMALL SU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31F4 30FC ; [.32D2.0020.000F.31F4][.32BD.0020.0007.31F4] # <KATAKANA LETTER SMALL NU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31F7 30FC ; [.32D7.0020.000F.31F7][.32BD.0020.0007.31F7] # <KATAKANA LETTER SMALL HU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31FA 30FC ; [.32DC.0020.000F.31FA][.32BD.0020.0007.31FA] # <KATAKANA LETTER SMALL MU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31FD 30FC ; [.32E5.0020.000F.31FD][.32BD.0020.0007.31FD] # <KATAKANA LETTER SMALL RU, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30A7 30FC ; [.32BF.0020.000F.30A7][.32BF.0020.0007.30A7] # <KATAKANA LETTER SMALL E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6A 30FC ; [.32BF.0020.000F.30A7][.32BF.0020.0007.30A7] # <HALFWIDTH KATAKANA LETTER SMALL E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6A FF70 ; [.32BF.0020.000F.30A7][.32BF.0020.0007.30A7] # <HALFWIDTH KATAKANA LETTER SMALL E, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3047 30FC ; [.32BF.0020.000F.3047][.32BF.0020.0007.3047] # <HIRAGANA LETTER SMALL E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30A8 30FC ; [.32BF.0020.0011.30A8][.32BF.0020.0007.30A8] # <KATAKANA LETTER E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF74 30FC ; [.32BF.0020.0011.30A8][.32BF.0020.0007.30A8] # <HALFWIDTH KATAKANA LETTER E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF74 FF70 ; [.32BF.0020.0011.30A8][.32BF.0020.0007.30A8] # <HALFWIDTH KATAKANA LETTER E, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3048 30FC ; [.32BF.0020.0011.3048][.32BF.0020.0007.3048] # <HIRAGANA LETTER E, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B1 30FC ; [.32C4.0020.0011.30B1][.32BF.0020.0007.30B1] # <KATAKANA LETTER KE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF79 30FC ; [.32C4.0020.0011.30B1][.32BF.0020.0007.30B1] # <HALFWIDTH KATAKANA LETTER KE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF79 FF70 ; [.32C4.0020.0011.30B1][.32BF.0020.0007.30B1] # <HALFWIDTH KATAKANA LETTER KE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3051 30FC ; [.32C4.0020.0011.3051][.32BF.0020.0007.3051] # <HIRAGANA LETTER KE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B2 30FC ; [.32C4.0020.0011.30B1][.0000.0128.0002.3099][.32BF.0020.0007.30B2] # <KATAKANA LETTER GE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B1 3099 30FC ; [.32C4.0020.0011.30B1][.0000.0128.0002.3099][.32BF.0020.0007.30B2] # <KATAKANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF79 FF9E 30FC ; [.32C4.0020.0011.30B1][.0000.0128.0002.3099][.32BF.0020.0007.30B2] # <HALFWIDTH KATAKANA LETTER KE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF79 FF9E FF70 ; [.32C4.0020.0011.30B1][.0000.0128.0002.3099][.32BF.0020.0007.30B2] # <HALFWIDTH KATAKANA LETTER KE, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3052 30FC ; [.32C4.0020.0011.3051][.0000.0128.0002.3099][.32BF.0020.0007.3052] # <HIRAGANA LETTER GE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3051 3099 30FC ; [.32C4.0020.0011.3051][.0000.0128.0002.3099][.32BF.0020.0007.3052] # <HIRAGANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30BB 30FC ; [.32C9.0020.0011.30BB][.32BF.0020.0007.30BB] # <KATAKANA LETTER SE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7E 30FC ; [.32C9.0020.0011.30BB][.32BF.0020.0007.30BB] # <HALFWIDTH KATAKANA LETTER SE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7E FF70 ; [.32C9.0020.0011.30BB][.32BF.0020.0007.30BB] # <HALFWIDTH KATAKANA LETTER SE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+305B 30FC ; [.32C9.0020.0011.305B][.32BF.0020.0007.305B] # <HIRAGANA LETTER SE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30BC 30FC ; [.32C9.0020.0011.30BB][.0000.0128.0002.3099][.32BF.0020.0007.30BC] # <KATAKANA LETTER ZE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30BB 3099 30FC ; [.32C9.0020.0011.30BB][.0000.0128.0002.3099][.32BF.0020.0007.30BC] # <KATAKANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7E FF9E 30FC ; [.32C9.0020.0011.30BB][.0000.0128.0002.3099][.32BF.0020.0007.30BC] # <HALFWIDTH KATAKANA LETTER SE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7E FF9E FF70 ; [.32C9.0020.0011.30BB][.0000.0128.0002.3099][.32BF.0020.0007.30BC] # <HALFWIDTH KATAKANA LETTER SE, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+305C 30FC ; [.32C9.0020.0011.305B][.0000.0128.0002.3099][.32BF.0020.0007.305C] # <HIRAGANA LETTER ZE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+305B 3099 30FC ; [.32C9.0020.0011.305B][.0000.0128.0002.3099][.32BF.0020.0007.305C] # <HIRAGANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C6 30FC ; [.32CE.0020.0011.30C6][.32BF.0020.0007.30C6] # <KATAKANA LETTER TE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF83 30FC ; [.32CE.0020.0011.30C6][.32BF.0020.0007.30C6] # <HALFWIDTH KATAKANA LETTER TE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF83 FF70 ; [.32CE.0020.0011.30C6][.32BF.0020.0007.30C6] # <HALFWIDTH KATAKANA LETTER TE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3066 30FC ; [.32CE.0020.0011.3066][.32BF.0020.0007.3066] # <HIRAGANA LETTER TE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C7 30FC ; [.32CE.0020.0011.30C6][.0000.0128.0002.3099][.32BF.0020.0007.30C7] # <KATAKANA LETTER DE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C6 3099 30FC ; [.32CE.0020.0011.30C6][.0000.0128.0002.3099][.32BF.0020.0007.30C7] # <KATAKANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF83 FF9E 30FC ; [.32CE.0020.0011.30C6][.0000.0128.0002.3099][.32BF.0020.0007.30C7] # <HALFWIDTH KATAKANA LETTER TE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF83 FF9E FF70 ; [.32CE.0020.0011.30C6][.0000.0128.0002.3099][.32BF.0020.0007.30C7] # <HALFWIDTH KATAKANA LETTER TE, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3067 30FC ; [.32CE.0020.0011.3066][.0000.0128.0002.3099][.32BF.0020.0007.3067] # <HIRAGANA LETTER DE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3066 3099 30FC ; [.32CE.0020.0011.3066][.0000.0128.0002.3099][.32BF.0020.0007.3067] # <HIRAGANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30CD 30FC ; [.32D3.0020.0011.30CD][.32BF.0020.0007.30CD] # <KATAKANA LETTER NE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF88 30FC ; [.32D3.0020.0011.30CD][.32BF.0020.0007.30CD] # <HALFWIDTH KATAKANA LETTER NE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF88 FF70 ; [.32D3.0020.0011.30CD][.32BF.0020.0007.30CD] # <HALFWIDTH KATAKANA LETTER NE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+306D 30FC ; [.32D3.0020.0011.306D][.32BF.0020.0007.306D] # <HIRAGANA LETTER NE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D8 30FC ; [.32D8.0020.0011.30D8][.32BF.0020.0007.30D8] # <KATAKANA LETTER HE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8D 30FC ; [.32D8.0020.0011.30D8][.32BF.0020.0007.30D8] # <HALFWIDTH KATAKANA LETTER HE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8D FF70 ; [.32D8.0020.0011.30D8][.32BF.0020.0007.30D8] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3078 30FC ; [.32D8.0020.0011.3078][.32BF.0020.0007.3078] # <HIRAGANA LETTER HE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D9 30FC ; [.32D8.0020.0011.30D8][.0000.0128.0002.3099][.32BF.0020.0007.30D9] # <KATAKANA LETTER BE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D8 3099 30FC ; [.32D8.0020.0011.30D8][.0000.0128.0002.3099][.32BF.0020.0007.30D9] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8D FF9E 30FC ; [.32D8.0020.0011.30D8][.0000.0128.0002.3099][.32BF.0020.0007.30D9] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8D FF9E FF70 ; [.32D8.0020.0011.30D8][.0000.0128.0002.3099][.32BF.0020.0007.30D9] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3079 30FC ; [.32D8.0020.0011.3078][.0000.0128.0002.3099][.32BF.0020.0007.3079] # <HIRAGANA LETTER BE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3078 3099 30FC ; [.32D8.0020.0011.3078][.0000.0128.0002.3099][.32BF.0020.0007.3079] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30DA 30FC ; [.32D8.0020.0011.30D8][.0000.0129.0002.309A][.32BF.0020.0007.30DA] # <KATAKANA LETTER PE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30D8 309A 30FC ; [.32D8.0020.0011.30D8][.0000.0129.0002.309A][.32BF.0020.0007.30DA] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8D FF9F 30FC ; [.32D8.0020.0011.30D8][.0000.0129.0002.309A][.32BF.0020.0007.30DA] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8D FF9F FF70 ; [.32D8.0020.0011.30D8][.0000.0129.0002.309A][.32BF.0020.0007.30DA] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+307A 30FC ; [.32D8.0020.0011.3078][.0000.0129.0002.309A][.32BF.0020.0007.307A] # <HIRAGANA LETTER PE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3078 309A 30FC ; [.32D8.0020.0011.3078][.0000.0129.0002.309A][.32BF.0020.0007.307A] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30E1 30FC ; [.32DD.0020.0011.30E1][.32BF.0020.0007.30E1] # <KATAKANA LETTER ME, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF92 30FC ; [.32DD.0020.0011.30E1][.32BF.0020.0007.30E1] # <HALFWIDTH KATAKANA LETTER ME, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF92 FF70 ; [.32DD.0020.0011.30E1][.32BF.0020.0007.30E1] # <HALFWIDTH KATAKANA LETTER ME, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3081 30FC ; [.32DD.0020.0011.3081][.32BF.0020.0007.3081] # <HIRAGANA LETTER ME, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30EC 30FC ; [.32E6.0020.0011.30EC][.32BF.0020.0007.30EC] # <KATAKANA LETTER RE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF9A 30FC ; [.32E6.0020.0011.30EC][.32BF.0020.0007.30EC] # <HALFWIDTH KATAKANA LETTER RE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF9A FF70 ; [.32E6.0020.0011.30EC][.32BF.0020.0007.30EC] # <HALFWIDTH KATAKANA LETTER RE, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+308C 30FC ; [.32E6.0020.0011.308C][.32BF.0020.0007.308C] # <HIRAGANA LETTER RE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F1 30FC ; [.32EA.0020.0011.30F1][.32BF.0020.0007.30F1] # <KATAKANA LETTER WE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3091 30FC ; [.32EA.0020.0011.3091][.32BF.0020.0007.3091] # <HIRAGANA LETTER WE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F9 30FC ; [.32EA.0020.0011.30F1][.0000.0128.0002.3099][.32BF.0020.0007.30F9] # <KATAKANA LETTER VE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F1 3099 30FC ; [.32EA.0020.0011.30F1][.0000.0128.0002.3099][.32BF.0020.0007.30F9] # <KATAKANA LETTER WE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F6 30FC ; [.32C4.0020.000F.30F6][.32BF.0020.0007.30F6] # <KATAKANA LETTER SMALL KE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3096 30FC ; [.32C4.0020.000F.3096][.32BF.0020.0007.3096] # <HIRAGANA LETTER SMALL KE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31F8 30FC ; [.32D8.0020.000F.31F8][.32BF.0020.0007.31F8] # <KATAKANA LETTER SMALL HE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31FE 30FC ; [.32E6.0020.000F.31FE][.32BF.0020.0007.31FE] # <KATAKANA LETTER SMALL RE, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30A9 30FC ; [.32C0.0020.000F.30A9][.32C0.0020.0007.30A9] # <KATAKANA LETTER SMALL O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6B 30FC ; [.32C0.0020.000F.30A9][.32C0.0020.0007.30A9] # <HALFWIDTH KATAKANA LETTER SMALL O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6B FF70 ; [.32C0.0020.000F.30A9][.32C0.0020.0007.30A9] # <HALFWIDTH KATAKANA LETTER SMALL O, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3049 30FC ; [.32C0.0020.000F.3049][.32C0.0020.0007.3049] # <HIRAGANA LETTER SMALL O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30AA 30FC ; [.32C0.0020.0011.30AA][.32C0.0020.0007.30AA] # <KATAKANA LETTER O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF75 30FC ; [.32C0.0020.0011.30AA][.32C0.0020.0007.30AA] # <HALFWIDTH KATAKANA LETTER O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF75 FF70 ; [.32C0.0020.0011.30AA][.32C0.0020.0007.30AA] # <HALFWIDTH KATAKANA LETTER O, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+304A 30FC ; [.32C0.0020.0011.304A][.32C0.0020.0007.304A] # <HIRAGANA LETTER O, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B3 30FC ; [.32C5.0020.0011.30B3][.32C0.0020.0007.30B3] # <KATAKANA LETTER KO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7A 30FC ; [.32C5.0020.0011.30B3][.32C0.0020.0007.30B3] # <HALFWIDTH KATAKANA LETTER KO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7A FF70 ; [.32C5.0020.0011.30B3][.32C0.0020.0007.30B3] # <HALFWIDTH KATAKANA LETTER KO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3053 30FC ; [.32C5.0020.0011.3053][.32C0.0020.0007.3053] # <HIRAGANA LETTER KO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B4 30FC ; [.32C5.0020.0011.30B3][.0000.0128.0002.3099][.32C0.0020.0007.30B4] # <KATAKANA LETTER GO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30B3 3099 30FC ; [.32C5.0020.0011.30B3][.0000.0128.0002.3099][.32C0.0020.0007.30B4] # <KATAKANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7A FF9E 30FC ; [.32C5.0020.0011.30B3][.0000.0128.0002.3099][.32C0.0020.0007.30B4] # <HALFWIDTH KATAKANA LETTER KO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7A FF9E FF70 ; [.32C5.0020.0011.30B3][.0000.0128.0002.3099][.32C0.0020.0007.30B4] # <HALFWIDTH KATAKANA LETTER KO, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3054 30FC ; [.32C5.0020.0011.3053][.0000.0128.0002.3099][.32C0.0020.0007.3054] # <HIRAGANA LETTER GO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3053 3099 30FC ; [.32C5.0020.0011.3053][.0000.0128.0002.3099][.32C0.0020.0007.3054] # <HIRAGANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30BD 30FC ; [.32CA.0020.0011.30BD][.32C0.0020.0007.30BD] # <KATAKANA LETTER SO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7F 30FC ; [.32CA.0020.0011.30BD][.32C0.0020.0007.30BD] # <HALFWIDTH KATAKANA LETTER SO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7F FF70 ; [.32CA.0020.0011.30BD][.32C0.0020.0007.30BD] # <HALFWIDTH KATAKANA LETTER SO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+305D 30FC ; [.32CA.0020.0011.305D][.32C0.0020.0007.305D] # <HIRAGANA LETTER SO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30BE 30FC ; [.32CA.0020.0011.30BD][.0000.0128.0002.3099][.32C0.0020.0007.30BE] # <KATAKANA LETTER ZO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30BD 3099 30FC ; [.32CA.0020.0011.30BD][.0000.0128.0002.3099][.32C0.0020.0007.30BE] # <KATAKANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7F FF9E 30FC ; [.32CA.0020.0011.30BD][.0000.0128.0002.3099][.32C0.0020.0007.30BE] # <HALFWIDTH KATAKANA LETTER SO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF7F FF9E FF70 ; [.32CA.0020.0011.30BD][.0000.0128.0002.3099][.32C0.0020.0007.30BE] # <HALFWIDTH KATAKANA LETTER SO, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+305E 30FC ; [.32CA.0020.0011.305D][.0000.0128.0002.3099][.32C0.0020.0007.305E] # <HIRAGANA LETTER ZO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+305D 3099 30FC ; [.32CA.0020.0011.305D][.0000.0128.0002.3099][.32C0.0020.0007.305E] # <HIRAGANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C8 30FC ; [.32CF.0020.0011.30C8][.32C0.0020.0007.30C8] # <KATAKANA LETTER TO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF84 30FC ; [.32CF.0020.0011.30C8][.32C0.0020.0007.30C8] # <HALFWIDTH KATAKANA LETTER TO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF84 FF70 ; [.32CF.0020.0011.30C8][.32C0.0020.0007.30C8] # <HALFWIDTH KATAKANA LETTER TO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3068 30FC ; [.32CF.0020.0011.3068][.32C0.0020.0007.3068] # <HIRAGANA LETTER TO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C9 30FC ; [.32CF.0020.0011.30C8][.0000.0128.0002.3099][.32C0.0020.0007.30C9] # <KATAKANA LETTER DO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30C8 3099 30FC ; [.32CF.0020.0011.30C8][.0000.0128.0002.3099][.32C0.0020.0007.30C9] # <KATAKANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF84 FF9E 30FC ; [.32CF.0020.0011.30C8][.0000.0128.0002.3099][.32C0.0020.0007.30C9] # <HALFWIDTH KATAKANA LETTER TO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF84 FF9E FF70 ; [.32CF.0020.0011.30C8][.0000.0128.0002.3099][.32C0.0020.0007.30C9] # <HALFWIDTH KATAKANA LETTER TO, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3069 30FC ; [.32CF.0020.0011.3068][.0000.0128.0002.3099][.32C0.0020.0007.3069] # <HIRAGANA LETTER DO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3068 3099 30FC ; [.32CF.0020.0011.3068][.0000.0128.0002.3099][.32C0.0020.0007.3069] # <HIRAGANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30CE 30FC ; [.32D4.0020.0011.30CE][.32C0.0020.0007.30CE] # <KATAKANA LETTER NO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF89 30FC ; [.32D4.0020.0011.30CE][.32C0.0020.0007.30CE] # <HALFWIDTH KATAKANA LETTER NO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF89 FF70 ; [.32D4.0020.0011.30CE][.32C0.0020.0007.30CE] # <HALFWIDTH KATAKANA LETTER NO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+306E 30FC ; [.32D4.0020.0011.306E][.32C0.0020.0007.306E] # <HIRAGANA LETTER NO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30DB 30FC ; [.32D9.0020.0011.30DB][.32C0.0020.0007.30DB] # <KATAKANA LETTER HO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8E 30FC ; [.32D9.0020.0011.30DB][.32C0.0020.0007.30DB] # <HALFWIDTH KATAKANA LETTER HO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8E FF70 ; [.32D9.0020.0011.30DB][.32C0.0020.0007.30DB] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+307B 30FC ; [.32D9.0020.0011.307B][.32C0.0020.0007.307B] # <HIRAGANA LETTER HO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30DC 30FC ; [.32D9.0020.0011.30DB][.0000.0128.0002.3099][.32C0.0020.0007.30DC] # <KATAKANA LETTER BO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30DB 3099 30FC ; [.32D9.0020.0011.30DB][.0000.0128.0002.3099][.32C0.0020.0007.30DC] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8E FF9E 30FC ; [.32D9.0020.0011.30DB][.0000.0128.0002.3099][.32C0.0020.0007.30DC] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8E FF9E FF70 ; [.32D9.0020.0011.30DB][.0000.0128.0002.3099][.32C0.0020.0007.30DC] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+307C 30FC ; [.32D9.0020.0011.307B][.0000.0128.0002.3099][.32C0.0020.0007.307C] # <HIRAGANA LETTER BO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+307B 3099 30FC ; [.32D9.0020.0011.307B][.0000.0128.0002.3099][.32C0.0020.0007.307C] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30DD 30FC ; [.32D9.0020.0011.30DB][.0000.0129.0002.309A][.32C0.0020.0007.30DD] # <KATAKANA LETTER PO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30DB 309A 30FC ; [.32D9.0020.0011.30DB][.0000.0129.0002.309A][.32C0.0020.0007.30DD] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8E FF9F 30FC ; [.32D9.0020.0011.30DB][.0000.0129.0002.309A][.32C0.0020.0007.30DD] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF8E FF9F FF70 ; [.32D9.0020.0011.30DB][.0000.0129.0002.309A][.32C0.0020.0007.30DD] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+307D 30FC ; [.32D9.0020.0011.307B][.0000.0129.0002.309A][.32C0.0020.0007.307D] # <HIRAGANA LETTER PO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+307B 309A 30FC ; [.32D9.0020.0011.307B][.0000.0129.0002.309A][.32C0.0020.0007.307D] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30E2 30FC ; [.32DE.0020.0011.30E2][.32C0.0020.0007.30E2] # <KATAKANA LETTER MO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF93 30FC ; [.32DE.0020.0011.30E2][.32C0.0020.0007.30E2] # <HALFWIDTH KATAKANA LETTER MO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF93 FF70 ; [.32DE.0020.0011.30E2][.32C0.0020.0007.30E2] # <HALFWIDTH KATAKANA LETTER MO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3082 30FC ; [.32DE.0020.0011.3082][.32C0.0020.0007.3082] # <HIRAGANA LETTER MO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30E7 30FC ; [.32E2.0020.000F.30E7][.32C0.0020.0007.30E7] # <KATAKANA LETTER SMALL YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6E 30FC ; [.32E2.0020.000F.30E7][.32C0.0020.0007.30E7] # <HALFWIDTH KATAKANA LETTER SMALL YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF6E FF70 ; [.32E2.0020.000F.30E7][.32C0.0020.0007.30E7] # <HALFWIDTH KATAKANA LETTER SMALL YO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3087 30FC ; [.32E2.0020.000F.3087][.32C0.0020.0007.3087] # <HIRAGANA LETTER SMALL YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30E8 30FC ; [.32E2.0020.0011.30E8][.32C0.0020.0007.30E8] # <KATAKANA LETTER YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF96 30FC ; [.32E2.0020.0011.30E8][.32C0.0020.0007.30E8] # <HALFWIDTH KATAKANA LETTER YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF96 FF70 ; [.32E2.0020.0011.30E8][.32C0.0020.0007.30E8] # <HALFWIDTH KATAKANA LETTER YO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3088 30FC ; [.32E2.0020.0011.3088][.32C0.0020.0007.3088] # <HIRAGANA LETTER YO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30ED 30FC ; [.32E7.0020.0011.30ED][.32C0.0020.0007.30ED] # <KATAKANA LETTER RO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF9B 30FC ; [.32E7.0020.0011.30ED][.32C0.0020.0007.30ED] # <HALFWIDTH KATAKANA LETTER RO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF9B FF70 ; [.32E7.0020.0011.30ED][.32C0.0020.0007.30ED] # <HALFWIDTH KATAKANA LETTER RO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+308D 30FC ; [.32E7.0020.0011.308D][.32C0.0020.0007.308D] # <HIRAGANA LETTER RO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F2 30FC ; [.32EB.0020.0011.30F2][.32C0.0020.0007.30F2] # <KATAKANA LETTER WO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF66 30FC ; [.32EB.0020.0011.30F2][.32C0.0020.0007.30F2] # <HALFWIDTH KATAKANA LETTER WO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF66 FF70 ; [.32EB.0020.0011.30F2][.32C0.0020.0007.30F2] # <HALFWIDTH KATAKANA LETTER WO, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+3092 30FC ; [.32EB.0020.0011.3092][.32C0.0020.0007.3092] # <HIRAGANA LETTER WO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30FA 30FC ; [.32EB.0020.0011.30F2][.0000.0128.0002.3099][.32C0.0020.0007.30FA] # <KATAKANA LETTER VO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30F2 3099 30FC ; [.32EB.0020.0011.30F2][.0000.0128.0002.3099][.32C0.0020.0007.30FA] # <KATAKANA LETTER WO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF66 FF9E 30FC ; [.32EB.0020.0011.30F2][.0000.0128.0002.3099][.32C0.0020.0007.30FA] # <HALFWIDTH KATAKANA LETTER WO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+FF66 FF9E FF70 ; [.32EB.0020.0011.30F2][.0000.0128.0002.3099][.32C0.0020.0007.30FA] # <HALFWIDTH KATAKANA LETTER WO, HALFWIDTH KATAKANA VOICED SOUND MARK, HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31F3 30FC ; [.32CF.0020.000F.31F3][.32C0.0020.0007.31F3] # <KATAKANA LETTER SMALL TO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31F9 30FC ; [.32D9.0020.000F.31F9][.32C0.0020.0007.31F9] # <KATAKANA LETTER SMALL HO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+31FF 30FC ; [.32E7.0020.000F.31FF][.32C0.0020.0007.31FF] # <KATAKANA LETTER SMALL RO, KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+30A1 30FD ; [.32BB.0020.000F.30A1][.32BB.0020.0010.30A1] # <KATAKANA LETTER SMALL A, KATAKANA ITERATION MARK>
+FF67 30FD ; [.32BB.0020.000F.30A1][.32BB.0020.0010.30A1] # <HALFWIDTH KATAKANA LETTER SMALL A, KATAKANA ITERATION MARK>
+3041 309D ; [.32BB.0020.000F.3041][.32BB.0020.0010.3041] # <HIRAGANA LETTER SMALL A, HIRAGANA ITERATION MARK>
+30A2 30FD ; [.32BB.0020.0011.30A2][.32BB.0020.0010.30A2] # <KATAKANA LETTER A, KATAKANA ITERATION MARK>
+FF71 30FD ; [.32BB.0020.0011.30A2][.32BB.0020.0010.30A2] # <HALFWIDTH KATAKANA LETTER A, KATAKANA ITERATION MARK>
+3042 309D ; [.32BB.0020.0011.3042][.32BB.0020.0010.3042] # <HIRAGANA LETTER A, HIRAGANA ITERATION MARK>
+30A3 30FD ; [.32BC.0020.000F.30A3][.32BC.0020.0010.30A3] # <KATAKANA LETTER SMALL I, KATAKANA ITERATION MARK>
+FF68 30FD ; [.32BC.0020.000F.30A3][.32BC.0020.0010.30A3] # <HALFWIDTH KATAKANA LETTER SMALL I, KATAKANA ITERATION MARK>
+3043 309D ; [.32BC.0020.000F.3043][.32BC.0020.0010.3043] # <HIRAGANA LETTER SMALL I, HIRAGANA ITERATION MARK>
+30A4 30FD ; [.32BC.0020.0011.30A4][.32BC.0020.0010.30A4] # <KATAKANA LETTER I, KATAKANA ITERATION MARK>
+FF72 30FD ; [.32BC.0020.0011.30A4][.32BC.0020.0010.30A4] # <HALFWIDTH KATAKANA LETTER I, KATAKANA ITERATION MARK>
+3044 309D ; [.32BC.0020.0011.3044][.32BC.0020.0010.3044] # <HIRAGANA LETTER I, HIRAGANA ITERATION MARK>
+30A5 30FD ; [.32BD.0020.000F.30A5][.32BD.0020.0010.30A5] # <KATAKANA LETTER SMALL U, KATAKANA ITERATION MARK>
+FF69 30FD ; [.32BD.0020.000F.30A5][.32BD.0020.0010.30A5] # <HALFWIDTH KATAKANA LETTER SMALL U, KATAKANA ITERATION MARK>
+3045 309D ; [.32BD.0020.000F.3045][.32BD.0020.0010.3045] # <HIRAGANA LETTER SMALL U, HIRAGANA ITERATION MARK>
+30A5 30FE ; [.32BD.0020.000F.30A5][.32BD.0020.0010.30A5][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL U, KATAKANA VOICED ITERATION MARK>
+FF69 30FE ; [.32BD.0020.000F.30A5][.32BD.0020.0010.30A5][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SMALL U, KATAKANA VOICED ITERATION MARK>
+3045 309E ; [.32BD.0020.000F.3045][.32BD.0020.0010.3045][.0000.0128.0002.3099] # <HIRAGANA LETTER SMALL U, HIRAGANA VOICED ITERATION MARK>
+30A6 30FD ; [.32BD.0020.0011.30A6][.32BD.0020.0010.30A6] # <KATAKANA LETTER U, KATAKANA ITERATION MARK>
+FF73 30FD ; [.32BD.0020.0011.30A6][.32BD.0020.0010.30A6] # <HALFWIDTH KATAKANA LETTER U, KATAKANA ITERATION MARK>
+3046 309D ; [.32BD.0020.0011.3046][.32BD.0020.0010.3046] # <HIRAGANA LETTER U, HIRAGANA ITERATION MARK>
+30A6 30FE ; [.32BD.0020.0011.30A6][.32BD.0020.0010.30A6][.0000.0128.0002.3099] # <KATAKANA LETTER U, KATAKANA VOICED ITERATION MARK>
+FF73 30FE ; [.32BD.0020.0011.30A6][.32BD.0020.0010.30A6][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER U, KATAKANA VOICED ITERATION MARK>
+3046 309E ; [.32BD.0020.0011.3046][.32BD.0020.0010.3046][.0000.0128.0002.3099] # <HIRAGANA LETTER U, HIRAGANA VOICED ITERATION MARK>
+30A7 30FD ; [.32BF.0020.000F.30A7][.32BF.0020.0010.30A7] # <KATAKANA LETTER SMALL E, KATAKANA ITERATION MARK>
+FF6A 30FD ; [.32BF.0020.000F.30A7][.32BF.0020.0010.30A7] # <HALFWIDTH KATAKANA LETTER SMALL E, KATAKANA ITERATION MARK>
+3047 309D ; [.32BF.0020.000F.3047][.32BF.0020.0010.3047] # <HIRAGANA LETTER SMALL E, HIRAGANA ITERATION MARK>
+30A8 30FD ; [.32BF.0020.0011.30A8][.32BF.0020.0010.30A8] # <KATAKANA LETTER E, KATAKANA ITERATION MARK>
+FF74 30FD ; [.32BF.0020.0011.30A8][.32BF.0020.0010.30A8] # <HALFWIDTH KATAKANA LETTER E, KATAKANA ITERATION MARK>
+3048 309D ; [.32BF.0020.0011.3048][.32BF.0020.0010.3048] # <HIRAGANA LETTER E, HIRAGANA ITERATION MARK>
+30A9 30FD ; [.32C0.0020.000F.30A9][.32C0.0020.0010.30A9] # <KATAKANA LETTER SMALL O, KATAKANA ITERATION MARK>
+FF6B 30FD ; [.32C0.0020.000F.30A9][.32C0.0020.0010.30A9] # <HALFWIDTH KATAKANA LETTER SMALL O, KATAKANA ITERATION MARK>
+3049 309D ; [.32C0.0020.000F.3049][.32C0.0020.0010.3049] # <HIRAGANA LETTER SMALL O, HIRAGANA ITERATION MARK>
+30AA 30FD ; [.32C0.0020.0011.30AA][.32C0.0020.0010.30AA] # <KATAKANA LETTER O, KATAKANA ITERATION MARK>
+FF75 30FD ; [.32C0.0020.0011.30AA][.32C0.0020.0010.30AA] # <HALFWIDTH KATAKANA LETTER O, KATAKANA ITERATION MARK>
+304A 309D ; [.32C0.0020.0011.304A][.32C0.0020.0010.304A] # <HIRAGANA LETTER O, HIRAGANA ITERATION MARK>
+30AB 30FD ; [.32C1.0020.0011.30AB][.32C1.0020.0010.30AB] # <KATAKANA LETTER KA, KATAKANA ITERATION MARK>
+FF76 30FD ; [.32C1.0020.0011.30AB][.32C1.0020.0010.30AB] # <HALFWIDTH KATAKANA LETTER KA, KATAKANA ITERATION MARK>
+304B 309D ; [.32C1.0020.0011.304B][.32C1.0020.0010.304B] # <HIRAGANA LETTER KA, HIRAGANA ITERATION MARK>
+30AB 30FE ; [.32C1.0020.0011.30AB][.32C1.0020.0010.30AB][.0000.0128.0002.3099] # <KATAKANA LETTER KA, KATAKANA VOICED ITERATION MARK>
+FF76 30FE ; [.32C1.0020.0011.30AB][.32C1.0020.0010.30AB][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KA, KATAKANA VOICED ITERATION MARK>
+304B 309E ; [.32C1.0020.0011.304B][.32C1.0020.0010.304B][.0000.0128.0002.3099] # <HIRAGANA LETTER KA, HIRAGANA VOICED ITERATION MARK>
+30AC 30FD ; [.32C1.0020.0011.30AB][.0000.0128.0002.3099][.32C1.0020.0010.30AC] # <KATAKANA LETTER GA, KATAKANA ITERATION MARK>
+30AB 3099 30FD ; [.32C1.0020.0011.30AB][.0000.0128.0002.3099][.32C1.0020.0010.30AC] # <KATAKANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF76 FF9E 30FD ; [.32C1.0020.0011.30AB][.0000.0128.0002.3099][.32C1.0020.0010.30AC] # <HALFWIDTH KATAKANA LETTER KA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+304C 309D ; [.32C1.0020.0011.304B][.0000.0128.0002.3099][.32C1.0020.0010.304C] # <HIRAGANA LETTER GA, HIRAGANA ITERATION MARK>
+304B 3099 309D ; [.32C1.0020.0011.304B][.0000.0128.0002.3099][.32C1.0020.0010.304C] # <HIRAGANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30AC 30FE ; [.32C1.0020.0011.30AB][.0000.0128.0002.3099][.32C1.0020.0010.30AC][.0000.0128.0002.3099] # <KATAKANA LETTER GA, KATAKANA VOICED ITERATION MARK>
+30AB 3099 30FE ; [.32C1.0020.0011.30AB][.0000.0128.0002.3099][.32C1.0020.0010.30AC][.0000.0128.0002.3099] # <KATAKANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF76 FF9E 30FE ; [.32C1.0020.0011.30AB][.0000.0128.0002.3099][.32C1.0020.0010.30AC][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+304C 309E ; [.32C1.0020.0011.304B][.0000.0128.0002.3099][.32C1.0020.0010.304C][.0000.0128.0002.3099] # <HIRAGANA LETTER GA, HIRAGANA VOICED ITERATION MARK>
+304B 3099 309E ; [.32C1.0020.0011.304B][.0000.0128.0002.3099][.32C1.0020.0010.304C][.0000.0128.0002.3099] # <HIRAGANA LETTER KA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30AD 30FD ; [.32C2.0020.0011.30AD][.32C2.0020.0010.30AD] # <KATAKANA LETTER KI, KATAKANA ITERATION MARK>
+FF77 30FD ; [.32C2.0020.0011.30AD][.32C2.0020.0010.30AD] # <HALFWIDTH KATAKANA LETTER KI, KATAKANA ITERATION MARK>
+304D 309D ; [.32C2.0020.0011.304D][.32C2.0020.0010.304D] # <HIRAGANA LETTER KI, HIRAGANA ITERATION MARK>
+30AD 30FE ; [.32C2.0020.0011.30AD][.32C2.0020.0010.30AD][.0000.0128.0002.3099] # <KATAKANA LETTER KI, KATAKANA VOICED ITERATION MARK>
+FF77 30FE ; [.32C2.0020.0011.30AD][.32C2.0020.0010.30AD][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KI, KATAKANA VOICED ITERATION MARK>
+304D 309E ; [.32C2.0020.0011.304D][.32C2.0020.0010.304D][.0000.0128.0002.3099] # <HIRAGANA LETTER KI, HIRAGANA VOICED ITERATION MARK>
+30AE 30FD ; [.32C2.0020.0011.30AD][.0000.0128.0002.3099][.32C2.0020.0010.30AE] # <KATAKANA LETTER GI, KATAKANA ITERATION MARK>
+30AD 3099 30FD ; [.32C2.0020.0011.30AD][.0000.0128.0002.3099][.32C2.0020.0010.30AE] # <KATAKANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF77 FF9E 30FD ; [.32C2.0020.0011.30AD][.0000.0128.0002.3099][.32C2.0020.0010.30AE] # <HALFWIDTH KATAKANA LETTER KI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+304E 309D ; [.32C2.0020.0011.304D][.0000.0128.0002.3099][.32C2.0020.0010.304E] # <HIRAGANA LETTER GI, HIRAGANA ITERATION MARK>
+304D 3099 309D ; [.32C2.0020.0011.304D][.0000.0128.0002.3099][.32C2.0020.0010.304E] # <HIRAGANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30AE 30FE ; [.32C2.0020.0011.30AD][.0000.0128.0002.3099][.32C2.0020.0010.30AE][.0000.0128.0002.3099] # <KATAKANA LETTER GI, KATAKANA VOICED ITERATION MARK>
+30AD 3099 30FE ; [.32C2.0020.0011.30AD][.0000.0128.0002.3099][.32C2.0020.0010.30AE][.0000.0128.0002.3099] # <KATAKANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF77 FF9E 30FE ; [.32C2.0020.0011.30AD][.0000.0128.0002.3099][.32C2.0020.0010.30AE][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+304E 309E ; [.32C2.0020.0011.304D][.0000.0128.0002.3099][.32C2.0020.0010.304E][.0000.0128.0002.3099] # <HIRAGANA LETTER GI, HIRAGANA VOICED ITERATION MARK>
+304D 3099 309E ; [.32C2.0020.0011.304D][.0000.0128.0002.3099][.32C2.0020.0010.304E][.0000.0128.0002.3099] # <HIRAGANA LETTER KI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30AF 30FD ; [.32C3.0020.0011.30AF][.32C3.0020.0010.30AF] # <KATAKANA LETTER KU, KATAKANA ITERATION MARK>
+FF78 30FD ; [.32C3.0020.0011.30AF][.32C3.0020.0010.30AF] # <HALFWIDTH KATAKANA LETTER KU, KATAKANA ITERATION MARK>
+304F 309D ; [.32C3.0020.0011.304F][.32C3.0020.0010.304F] # <HIRAGANA LETTER KU, HIRAGANA ITERATION MARK>
+30AF 30FE ; [.32C3.0020.0011.30AF][.32C3.0020.0010.30AF][.0000.0128.0002.3099] # <KATAKANA LETTER KU, KATAKANA VOICED ITERATION MARK>
+FF78 30FE ; [.32C3.0020.0011.30AF][.32C3.0020.0010.30AF][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KU, KATAKANA VOICED ITERATION MARK>
+304F 309E ; [.32C3.0020.0011.304F][.32C3.0020.0010.304F][.0000.0128.0002.3099] # <HIRAGANA LETTER KU, HIRAGANA VOICED ITERATION MARK>
+30B0 30FD ; [.32C3.0020.0011.30AF][.0000.0128.0002.3099][.32C3.0020.0010.30B0] # <KATAKANA LETTER GU, KATAKANA ITERATION MARK>
+30AF 3099 30FD ; [.32C3.0020.0011.30AF][.0000.0128.0002.3099][.32C3.0020.0010.30B0] # <KATAKANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF78 FF9E 30FD ; [.32C3.0020.0011.30AF][.0000.0128.0002.3099][.32C3.0020.0010.30B0] # <HALFWIDTH KATAKANA LETTER KU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3050 309D ; [.32C3.0020.0011.304F][.0000.0128.0002.3099][.32C3.0020.0010.3050] # <HIRAGANA LETTER GU, HIRAGANA ITERATION MARK>
+304F 3099 309D ; [.32C3.0020.0011.304F][.0000.0128.0002.3099][.32C3.0020.0010.3050] # <HIRAGANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30B0 30FE ; [.32C3.0020.0011.30AF][.0000.0128.0002.3099][.32C3.0020.0010.30B0][.0000.0128.0002.3099] # <KATAKANA LETTER GU, KATAKANA VOICED ITERATION MARK>
+30AF 3099 30FE ; [.32C3.0020.0011.30AF][.0000.0128.0002.3099][.32C3.0020.0010.30B0][.0000.0128.0002.3099] # <KATAKANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF78 FF9E 30FE ; [.32C3.0020.0011.30AF][.0000.0128.0002.3099][.32C3.0020.0010.30B0][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3050 309E ; [.32C3.0020.0011.304F][.0000.0128.0002.3099][.32C3.0020.0010.3050][.0000.0128.0002.3099] # <HIRAGANA LETTER GU, HIRAGANA VOICED ITERATION MARK>
+304F 3099 309E ; [.32C3.0020.0011.304F][.0000.0128.0002.3099][.32C3.0020.0010.3050][.0000.0128.0002.3099] # <HIRAGANA LETTER KU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30B1 30FD ; [.32C4.0020.0011.30B1][.32C4.0020.0010.30B1] # <KATAKANA LETTER KE, KATAKANA ITERATION MARK>
+FF79 30FD ; [.32C4.0020.0011.30B1][.32C4.0020.0010.30B1] # <HALFWIDTH KATAKANA LETTER KE, KATAKANA ITERATION MARK>
+3051 309D ; [.32C4.0020.0011.3051][.32C4.0020.0010.3051] # <HIRAGANA LETTER KE, HIRAGANA ITERATION MARK>
+30B1 30FE ; [.32C4.0020.0011.30B1][.32C4.0020.0010.30B1][.0000.0128.0002.3099] # <KATAKANA LETTER KE, KATAKANA VOICED ITERATION MARK>
+FF79 30FE ; [.32C4.0020.0011.30B1][.32C4.0020.0010.30B1][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KE, KATAKANA VOICED ITERATION MARK>
+3051 309E ; [.32C4.0020.0011.3051][.32C4.0020.0010.3051][.0000.0128.0002.3099] # <HIRAGANA LETTER KE, HIRAGANA VOICED ITERATION MARK>
+30B2 30FD ; [.32C4.0020.0011.30B1][.0000.0128.0002.3099][.32C4.0020.0010.30B2] # <KATAKANA LETTER GE, KATAKANA ITERATION MARK>
+30B1 3099 30FD ; [.32C4.0020.0011.30B1][.0000.0128.0002.3099][.32C4.0020.0010.30B2] # <KATAKANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF79 FF9E 30FD ; [.32C4.0020.0011.30B1][.0000.0128.0002.3099][.32C4.0020.0010.30B2] # <HALFWIDTH KATAKANA LETTER KE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3052 309D ; [.32C4.0020.0011.3051][.0000.0128.0002.3099][.32C4.0020.0010.3052] # <HIRAGANA LETTER GE, HIRAGANA ITERATION MARK>
+3051 3099 309D ; [.32C4.0020.0011.3051][.0000.0128.0002.3099][.32C4.0020.0010.3052] # <HIRAGANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30B2 30FE ; [.32C4.0020.0011.30B1][.0000.0128.0002.3099][.32C4.0020.0010.30B2][.0000.0128.0002.3099] # <KATAKANA LETTER GE, KATAKANA VOICED ITERATION MARK>
+30B1 3099 30FE ; [.32C4.0020.0011.30B1][.0000.0128.0002.3099][.32C4.0020.0010.30B2][.0000.0128.0002.3099] # <KATAKANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF79 FF9E 30FE ; [.32C4.0020.0011.30B1][.0000.0128.0002.3099][.32C4.0020.0010.30B2][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3052 309E ; [.32C4.0020.0011.3051][.0000.0128.0002.3099][.32C4.0020.0010.3052][.0000.0128.0002.3099] # <HIRAGANA LETTER GE, HIRAGANA VOICED ITERATION MARK>
+3051 3099 309E ; [.32C4.0020.0011.3051][.0000.0128.0002.3099][.32C4.0020.0010.3052][.0000.0128.0002.3099] # <HIRAGANA LETTER KE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30B3 30FD ; [.32C5.0020.0011.30B3][.32C5.0020.0010.30B3] # <KATAKANA LETTER KO, KATAKANA ITERATION MARK>
+FF7A 30FD ; [.32C5.0020.0011.30B3][.32C5.0020.0010.30B3] # <HALFWIDTH KATAKANA LETTER KO, KATAKANA ITERATION MARK>
+3053 309D ; [.32C5.0020.0011.3053][.32C5.0020.0010.3053] # <HIRAGANA LETTER KO, HIRAGANA ITERATION MARK>
+30B3 30FE ; [.32C5.0020.0011.30B3][.32C5.0020.0010.30B3][.0000.0128.0002.3099] # <KATAKANA LETTER KO, KATAKANA VOICED ITERATION MARK>
+FF7A 30FE ; [.32C5.0020.0011.30B3][.32C5.0020.0010.30B3][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KO, KATAKANA VOICED ITERATION MARK>
+3053 309E ; [.32C5.0020.0011.3053][.32C5.0020.0010.3053][.0000.0128.0002.3099] # <HIRAGANA LETTER KO, HIRAGANA VOICED ITERATION MARK>
+30B4 30FD ; [.32C5.0020.0011.30B3][.0000.0128.0002.3099][.32C5.0020.0010.30B4] # <KATAKANA LETTER GO, KATAKANA ITERATION MARK>
+30B3 3099 30FD ; [.32C5.0020.0011.30B3][.0000.0128.0002.3099][.32C5.0020.0010.30B4] # <KATAKANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF7A FF9E 30FD ; [.32C5.0020.0011.30B3][.0000.0128.0002.3099][.32C5.0020.0010.30B4] # <HALFWIDTH KATAKANA LETTER KO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3054 309D ; [.32C5.0020.0011.3053][.0000.0128.0002.3099][.32C5.0020.0010.3054] # <HIRAGANA LETTER GO, HIRAGANA ITERATION MARK>
+3053 3099 309D ; [.32C5.0020.0011.3053][.0000.0128.0002.3099][.32C5.0020.0010.3054] # <HIRAGANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30B4 30FE ; [.32C5.0020.0011.30B3][.0000.0128.0002.3099][.32C5.0020.0010.30B4][.0000.0128.0002.3099] # <KATAKANA LETTER GO, KATAKANA VOICED ITERATION MARK>
+30B3 3099 30FE ; [.32C5.0020.0011.30B3][.0000.0128.0002.3099][.32C5.0020.0010.30B4][.0000.0128.0002.3099] # <KATAKANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF7A FF9E 30FE ; [.32C5.0020.0011.30B3][.0000.0128.0002.3099][.32C5.0020.0010.30B4][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER KO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3054 309E ; [.32C5.0020.0011.3053][.0000.0128.0002.3099][.32C5.0020.0010.3054][.0000.0128.0002.3099] # <HIRAGANA LETTER GO, HIRAGANA VOICED ITERATION MARK>
+3053 3099 309E ; [.32C5.0020.0011.3053][.0000.0128.0002.3099][.32C5.0020.0010.3054][.0000.0128.0002.3099] # <HIRAGANA LETTER KO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30B5 30FD ; [.32C6.0020.0011.30B5][.32C6.0020.0010.30B5] # <KATAKANA LETTER SA, KATAKANA ITERATION MARK>
+FF7B 30FD ; [.32C6.0020.0011.30B5][.32C6.0020.0010.30B5] # <HALFWIDTH KATAKANA LETTER SA, KATAKANA ITERATION MARK>
+3055 309D ; [.32C6.0020.0011.3055][.32C6.0020.0010.3055] # <HIRAGANA LETTER SA, HIRAGANA ITERATION MARK>
+30B5 30FE ; [.32C6.0020.0011.30B5][.32C6.0020.0010.30B5][.0000.0128.0002.3099] # <KATAKANA LETTER SA, KATAKANA VOICED ITERATION MARK>
+FF7B 30FE ; [.32C6.0020.0011.30B5][.32C6.0020.0010.30B5][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SA, KATAKANA VOICED ITERATION MARK>
+3055 309E ; [.32C6.0020.0011.3055][.32C6.0020.0010.3055][.0000.0128.0002.3099] # <HIRAGANA LETTER SA, HIRAGANA VOICED ITERATION MARK>
+30B6 30FD ; [.32C6.0020.0011.30B5][.0000.0128.0002.3099][.32C6.0020.0010.30B6] # <KATAKANA LETTER ZA, KATAKANA ITERATION MARK>
+30B5 3099 30FD ; [.32C6.0020.0011.30B5][.0000.0128.0002.3099][.32C6.0020.0010.30B6] # <KATAKANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF7B FF9E 30FD ; [.32C6.0020.0011.30B5][.0000.0128.0002.3099][.32C6.0020.0010.30B6] # <HALFWIDTH KATAKANA LETTER SA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3056 309D ; [.32C6.0020.0011.3055][.0000.0128.0002.3099][.32C6.0020.0010.3056] # <HIRAGANA LETTER ZA, HIRAGANA ITERATION MARK>
+3055 3099 309D ; [.32C6.0020.0011.3055][.0000.0128.0002.3099][.32C6.0020.0010.3056] # <HIRAGANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30B6 30FE ; [.32C6.0020.0011.30B5][.0000.0128.0002.3099][.32C6.0020.0010.30B6][.0000.0128.0002.3099] # <KATAKANA LETTER ZA, KATAKANA VOICED ITERATION MARK>
+30B5 3099 30FE ; [.32C6.0020.0011.30B5][.0000.0128.0002.3099][.32C6.0020.0010.30B6][.0000.0128.0002.3099] # <KATAKANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF7B FF9E 30FE ; [.32C6.0020.0011.30B5][.0000.0128.0002.3099][.32C6.0020.0010.30B6][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3056 309E ; [.32C6.0020.0011.3055][.0000.0128.0002.3099][.32C6.0020.0010.3056][.0000.0128.0002.3099] # <HIRAGANA LETTER ZA, HIRAGANA VOICED ITERATION MARK>
+3055 3099 309E ; [.32C6.0020.0011.3055][.0000.0128.0002.3099][.32C6.0020.0010.3056][.0000.0128.0002.3099] # <HIRAGANA LETTER SA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30B7 30FD ; [.32C7.0020.0011.30B7][.32C7.0020.0010.30B7] # <KATAKANA LETTER SI, KATAKANA ITERATION MARK>
+FF7C 30FD ; [.32C7.0020.0011.30B7][.32C7.0020.0010.30B7] # <HALFWIDTH KATAKANA LETTER SI, KATAKANA ITERATION MARK>
+3057 309D ; [.32C7.0020.0011.3057][.32C7.0020.0010.3057] # <HIRAGANA LETTER SI, HIRAGANA ITERATION MARK>
+30B7 30FE ; [.32C7.0020.0011.30B7][.32C7.0020.0010.30B7][.0000.0128.0002.3099] # <KATAKANA LETTER SI, KATAKANA VOICED ITERATION MARK>
+FF7C 30FE ; [.32C7.0020.0011.30B7][.32C7.0020.0010.30B7][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SI, KATAKANA VOICED ITERATION MARK>
+3057 309E ; [.32C7.0020.0011.3057][.32C7.0020.0010.3057][.0000.0128.0002.3099] # <HIRAGANA LETTER SI, HIRAGANA VOICED ITERATION MARK>
+30B8 30FD ; [.32C7.0020.0011.30B7][.0000.0128.0002.3099][.32C7.0020.0010.30B8] # <KATAKANA LETTER ZI, KATAKANA ITERATION MARK>
+30B7 3099 30FD ; [.32C7.0020.0011.30B7][.0000.0128.0002.3099][.32C7.0020.0010.30B8] # <KATAKANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF7C FF9E 30FD ; [.32C7.0020.0011.30B7][.0000.0128.0002.3099][.32C7.0020.0010.30B8] # <HALFWIDTH KATAKANA LETTER SI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3058 309D ; [.32C7.0020.0011.3057][.0000.0128.0002.3099][.32C7.0020.0010.3058] # <HIRAGANA LETTER ZI, HIRAGANA ITERATION MARK>
+3057 3099 309D ; [.32C7.0020.0011.3057][.0000.0128.0002.3099][.32C7.0020.0010.3058] # <HIRAGANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30B8 30FE ; [.32C7.0020.0011.30B7][.0000.0128.0002.3099][.32C7.0020.0010.30B8][.0000.0128.0002.3099] # <KATAKANA LETTER ZI, KATAKANA VOICED ITERATION MARK>
+30B7 3099 30FE ; [.32C7.0020.0011.30B7][.0000.0128.0002.3099][.32C7.0020.0010.30B8][.0000.0128.0002.3099] # <KATAKANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF7C FF9E 30FE ; [.32C7.0020.0011.30B7][.0000.0128.0002.3099][.32C7.0020.0010.30B8][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3058 309E ; [.32C7.0020.0011.3057][.0000.0128.0002.3099][.32C7.0020.0010.3058][.0000.0128.0002.3099] # <HIRAGANA LETTER ZI, HIRAGANA VOICED ITERATION MARK>
+3057 3099 309E ; [.32C7.0020.0011.3057][.0000.0128.0002.3099][.32C7.0020.0010.3058][.0000.0128.0002.3099] # <HIRAGANA LETTER SI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30B9 30FD ; [.32C8.0020.0011.30B9][.32C8.0020.0010.30B9] # <KATAKANA LETTER SU, KATAKANA ITERATION MARK>
+FF7D 30FD ; [.32C8.0020.0011.30B9][.32C8.0020.0010.30B9] # <HALFWIDTH KATAKANA LETTER SU, KATAKANA ITERATION MARK>
+3059 309D ; [.32C8.0020.0011.3059][.32C8.0020.0010.3059] # <HIRAGANA LETTER SU, HIRAGANA ITERATION MARK>
+30B9 30FE ; [.32C8.0020.0011.30B9][.32C8.0020.0010.30B9][.0000.0128.0002.3099] # <KATAKANA LETTER SU, KATAKANA VOICED ITERATION MARK>
+FF7D 30FE ; [.32C8.0020.0011.30B9][.32C8.0020.0010.30B9][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SU, KATAKANA VOICED ITERATION MARK>
+3059 309E ; [.32C8.0020.0011.3059][.32C8.0020.0010.3059][.0000.0128.0002.3099] # <HIRAGANA LETTER SU, HIRAGANA VOICED ITERATION MARK>
+30BA 30FD ; [.32C8.0020.0011.30B9][.0000.0128.0002.3099][.32C8.0020.0010.30BA] # <KATAKANA LETTER ZU, KATAKANA ITERATION MARK>
+30B9 3099 30FD ; [.32C8.0020.0011.30B9][.0000.0128.0002.3099][.32C8.0020.0010.30BA] # <KATAKANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF7D FF9E 30FD ; [.32C8.0020.0011.30B9][.0000.0128.0002.3099][.32C8.0020.0010.30BA] # <HALFWIDTH KATAKANA LETTER SU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+305A 309D ; [.32C8.0020.0011.3059][.0000.0128.0002.3099][.32C8.0020.0010.305A] # <HIRAGANA LETTER ZU, HIRAGANA ITERATION MARK>
+3059 3099 309D ; [.32C8.0020.0011.3059][.0000.0128.0002.3099][.32C8.0020.0010.305A] # <HIRAGANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30BA 30FE ; [.32C8.0020.0011.30B9][.0000.0128.0002.3099][.32C8.0020.0010.30BA][.0000.0128.0002.3099] # <KATAKANA LETTER ZU, KATAKANA VOICED ITERATION MARK>
+30B9 3099 30FE ; [.32C8.0020.0011.30B9][.0000.0128.0002.3099][.32C8.0020.0010.30BA][.0000.0128.0002.3099] # <KATAKANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF7D FF9E 30FE ; [.32C8.0020.0011.30B9][.0000.0128.0002.3099][.32C8.0020.0010.30BA][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+305A 309E ; [.32C8.0020.0011.3059][.0000.0128.0002.3099][.32C8.0020.0010.305A][.0000.0128.0002.3099] # <HIRAGANA LETTER ZU, HIRAGANA VOICED ITERATION MARK>
+3059 3099 309E ; [.32C8.0020.0011.3059][.0000.0128.0002.3099][.32C8.0020.0010.305A][.0000.0128.0002.3099] # <HIRAGANA LETTER SU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30BB 30FD ; [.32C9.0020.0011.30BB][.32C9.0020.0010.30BB] # <KATAKANA LETTER SE, KATAKANA ITERATION MARK>
+FF7E 30FD ; [.32C9.0020.0011.30BB][.32C9.0020.0010.30BB] # <HALFWIDTH KATAKANA LETTER SE, KATAKANA ITERATION MARK>
+305B 309D ; [.32C9.0020.0011.305B][.32C9.0020.0010.305B] # <HIRAGANA LETTER SE, HIRAGANA ITERATION MARK>
+30BB 30FE ; [.32C9.0020.0011.30BB][.32C9.0020.0010.30BB][.0000.0128.0002.3099] # <KATAKANA LETTER SE, KATAKANA VOICED ITERATION MARK>
+FF7E 30FE ; [.32C9.0020.0011.30BB][.32C9.0020.0010.30BB][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SE, KATAKANA VOICED ITERATION MARK>
+305B 309E ; [.32C9.0020.0011.305B][.32C9.0020.0010.305B][.0000.0128.0002.3099] # <HIRAGANA LETTER SE, HIRAGANA VOICED ITERATION MARK>
+30BC 30FD ; [.32C9.0020.0011.30BB][.0000.0128.0002.3099][.32C9.0020.0010.30BC] # <KATAKANA LETTER ZE, KATAKANA ITERATION MARK>
+30BB 3099 30FD ; [.32C9.0020.0011.30BB][.0000.0128.0002.3099][.32C9.0020.0010.30BC] # <KATAKANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF7E FF9E 30FD ; [.32C9.0020.0011.30BB][.0000.0128.0002.3099][.32C9.0020.0010.30BC] # <HALFWIDTH KATAKANA LETTER SE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+305C 309D ; [.32C9.0020.0011.305B][.0000.0128.0002.3099][.32C9.0020.0010.305C] # <HIRAGANA LETTER ZE, HIRAGANA ITERATION MARK>
+305B 3099 309D ; [.32C9.0020.0011.305B][.0000.0128.0002.3099][.32C9.0020.0010.305C] # <HIRAGANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30BC 30FE ; [.32C9.0020.0011.30BB][.0000.0128.0002.3099][.32C9.0020.0010.30BC][.0000.0128.0002.3099] # <KATAKANA LETTER ZE, KATAKANA VOICED ITERATION MARK>
+30BB 3099 30FE ; [.32C9.0020.0011.30BB][.0000.0128.0002.3099][.32C9.0020.0010.30BC][.0000.0128.0002.3099] # <KATAKANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF7E FF9E 30FE ; [.32C9.0020.0011.30BB][.0000.0128.0002.3099][.32C9.0020.0010.30BC][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+305C 309E ; [.32C9.0020.0011.305B][.0000.0128.0002.3099][.32C9.0020.0010.305C][.0000.0128.0002.3099] # <HIRAGANA LETTER ZE, HIRAGANA VOICED ITERATION MARK>
+305B 3099 309E ; [.32C9.0020.0011.305B][.0000.0128.0002.3099][.32C9.0020.0010.305C][.0000.0128.0002.3099] # <HIRAGANA LETTER SE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30BD 30FD ; [.32CA.0020.0011.30BD][.32CA.0020.0010.30BD] # <KATAKANA LETTER SO, KATAKANA ITERATION MARK>
+FF7F 30FD ; [.32CA.0020.0011.30BD][.32CA.0020.0010.30BD] # <HALFWIDTH KATAKANA LETTER SO, KATAKANA ITERATION MARK>
+305D 309D ; [.32CA.0020.0011.305D][.32CA.0020.0010.305D] # <HIRAGANA LETTER SO, HIRAGANA ITERATION MARK>
+30BD 30FE ; [.32CA.0020.0011.30BD][.32CA.0020.0010.30BD][.0000.0128.0002.3099] # <KATAKANA LETTER SO, KATAKANA VOICED ITERATION MARK>
+FF7F 30FE ; [.32CA.0020.0011.30BD][.32CA.0020.0010.30BD][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SO, KATAKANA VOICED ITERATION MARK>
+305D 309E ; [.32CA.0020.0011.305D][.32CA.0020.0010.305D][.0000.0128.0002.3099] # <HIRAGANA LETTER SO, HIRAGANA VOICED ITERATION MARK>
+30BE 30FD ; [.32CA.0020.0011.30BD][.0000.0128.0002.3099][.32CA.0020.0010.30BE] # <KATAKANA LETTER ZO, KATAKANA ITERATION MARK>
+30BD 3099 30FD ; [.32CA.0020.0011.30BD][.0000.0128.0002.3099][.32CA.0020.0010.30BE] # <KATAKANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF7F FF9E 30FD ; [.32CA.0020.0011.30BD][.0000.0128.0002.3099][.32CA.0020.0010.30BE] # <HALFWIDTH KATAKANA LETTER SO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+305E 309D ; [.32CA.0020.0011.305D][.0000.0128.0002.3099][.32CA.0020.0010.305E] # <HIRAGANA LETTER ZO, HIRAGANA ITERATION MARK>
+305D 3099 309D ; [.32CA.0020.0011.305D][.0000.0128.0002.3099][.32CA.0020.0010.305E] # <HIRAGANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30BE 30FE ; [.32CA.0020.0011.30BD][.0000.0128.0002.3099][.32CA.0020.0010.30BE][.0000.0128.0002.3099] # <KATAKANA LETTER ZO, KATAKANA VOICED ITERATION MARK>
+30BD 3099 30FE ; [.32CA.0020.0011.30BD][.0000.0128.0002.3099][.32CA.0020.0010.30BE][.0000.0128.0002.3099] # <KATAKANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF7F FF9E 30FE ; [.32CA.0020.0011.30BD][.0000.0128.0002.3099][.32CA.0020.0010.30BE][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+305E 309E ; [.32CA.0020.0011.305D][.0000.0128.0002.3099][.32CA.0020.0010.305E][.0000.0128.0002.3099] # <HIRAGANA LETTER ZO, HIRAGANA VOICED ITERATION MARK>
+305D 3099 309E ; [.32CA.0020.0011.305D][.0000.0128.0002.3099][.32CA.0020.0010.305E][.0000.0128.0002.3099] # <HIRAGANA LETTER SO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30BF 30FD ; [.32CB.0020.0011.30BF][.32CB.0020.0010.30BF] # <KATAKANA LETTER TA, KATAKANA ITERATION MARK>
+FF80 30FD ; [.32CB.0020.0011.30BF][.32CB.0020.0010.30BF] # <HALFWIDTH KATAKANA LETTER TA, KATAKANA ITERATION MARK>
+305F 309D ; [.32CB.0020.0011.305F][.32CB.0020.0010.305F] # <HIRAGANA LETTER TA, HIRAGANA ITERATION MARK>
+30BF 30FE ; [.32CB.0020.0011.30BF][.32CB.0020.0010.30BF][.0000.0128.0002.3099] # <KATAKANA LETTER TA, KATAKANA VOICED ITERATION MARK>
+FF80 30FE ; [.32CB.0020.0011.30BF][.32CB.0020.0010.30BF][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TA, KATAKANA VOICED ITERATION MARK>
+305F 309E ; [.32CB.0020.0011.305F][.32CB.0020.0010.305F][.0000.0128.0002.3099] # <HIRAGANA LETTER TA, HIRAGANA VOICED ITERATION MARK>
+30C0 30FD ; [.32CB.0020.0011.30BF][.0000.0128.0002.3099][.32CB.0020.0010.30C0] # <KATAKANA LETTER DA, KATAKANA ITERATION MARK>
+30BF 3099 30FD ; [.32CB.0020.0011.30BF][.0000.0128.0002.3099][.32CB.0020.0010.30C0] # <KATAKANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF80 FF9E 30FD ; [.32CB.0020.0011.30BF][.0000.0128.0002.3099][.32CB.0020.0010.30C0] # <HALFWIDTH KATAKANA LETTER TA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3060 309D ; [.32CB.0020.0011.305F][.0000.0128.0002.3099][.32CB.0020.0010.3060] # <HIRAGANA LETTER DA, HIRAGANA ITERATION MARK>
+305F 3099 309D ; [.32CB.0020.0011.305F][.0000.0128.0002.3099][.32CB.0020.0010.3060] # <HIRAGANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30C0 30FE ; [.32CB.0020.0011.30BF][.0000.0128.0002.3099][.32CB.0020.0010.30C0][.0000.0128.0002.3099] # <KATAKANA LETTER DA, KATAKANA VOICED ITERATION MARK>
+30BF 3099 30FE ; [.32CB.0020.0011.30BF][.0000.0128.0002.3099][.32CB.0020.0010.30C0][.0000.0128.0002.3099] # <KATAKANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF80 FF9E 30FE ; [.32CB.0020.0011.30BF][.0000.0128.0002.3099][.32CB.0020.0010.30C0][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3060 309E ; [.32CB.0020.0011.305F][.0000.0128.0002.3099][.32CB.0020.0010.3060][.0000.0128.0002.3099] # <HIRAGANA LETTER DA, HIRAGANA VOICED ITERATION MARK>
+305F 3099 309E ; [.32CB.0020.0011.305F][.0000.0128.0002.3099][.32CB.0020.0010.3060][.0000.0128.0002.3099] # <HIRAGANA LETTER TA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30C1 30FD ; [.32CC.0020.0011.30C1][.32CC.0020.0010.30C1] # <KATAKANA LETTER TI, KATAKANA ITERATION MARK>
+FF81 30FD ; [.32CC.0020.0011.30C1][.32CC.0020.0010.30C1] # <HALFWIDTH KATAKANA LETTER TI, KATAKANA ITERATION MARK>
+3061 309D ; [.32CC.0020.0011.3061][.32CC.0020.0010.3061] # <HIRAGANA LETTER TI, HIRAGANA ITERATION MARK>
+30C1 30FE ; [.32CC.0020.0011.30C1][.32CC.0020.0010.30C1][.0000.0128.0002.3099] # <KATAKANA LETTER TI, KATAKANA VOICED ITERATION MARK>
+FF81 30FE ; [.32CC.0020.0011.30C1][.32CC.0020.0010.30C1][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TI, KATAKANA VOICED ITERATION MARK>
+3061 309E ; [.32CC.0020.0011.3061][.32CC.0020.0010.3061][.0000.0128.0002.3099] # <HIRAGANA LETTER TI, HIRAGANA VOICED ITERATION MARK>
+30C2 30FD ; [.32CC.0020.0011.30C1][.0000.0128.0002.3099][.32CC.0020.0010.30C2] # <KATAKANA LETTER DI, KATAKANA ITERATION MARK>
+30C1 3099 30FD ; [.32CC.0020.0011.30C1][.0000.0128.0002.3099][.32CC.0020.0010.30C2] # <KATAKANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF81 FF9E 30FD ; [.32CC.0020.0011.30C1][.0000.0128.0002.3099][.32CC.0020.0010.30C2] # <HALFWIDTH KATAKANA LETTER TI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3062 309D ; [.32CC.0020.0011.3061][.0000.0128.0002.3099][.32CC.0020.0010.3062] # <HIRAGANA LETTER DI, HIRAGANA ITERATION MARK>
+3061 3099 309D ; [.32CC.0020.0011.3061][.0000.0128.0002.3099][.32CC.0020.0010.3062] # <HIRAGANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30C2 30FE ; [.32CC.0020.0011.30C1][.0000.0128.0002.3099][.32CC.0020.0010.30C2][.0000.0128.0002.3099] # <KATAKANA LETTER DI, KATAKANA VOICED ITERATION MARK>
+30C1 3099 30FE ; [.32CC.0020.0011.30C1][.0000.0128.0002.3099][.32CC.0020.0010.30C2][.0000.0128.0002.3099] # <KATAKANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF81 FF9E 30FE ; [.32CC.0020.0011.30C1][.0000.0128.0002.3099][.32CC.0020.0010.30C2][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3062 309E ; [.32CC.0020.0011.3061][.0000.0128.0002.3099][.32CC.0020.0010.3062][.0000.0128.0002.3099] # <HIRAGANA LETTER DI, HIRAGANA VOICED ITERATION MARK>
+3061 3099 309E ; [.32CC.0020.0011.3061][.0000.0128.0002.3099][.32CC.0020.0010.3062][.0000.0128.0002.3099] # <HIRAGANA LETTER TI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30C3 30FD ; [.32CD.0020.000F.30C3][.32CD.0020.0010.30C3] # <KATAKANA LETTER SMALL TU, KATAKANA ITERATION MARK>
+FF6F 30FD ; [.32CD.0020.000F.30C3][.32CD.0020.0010.30C3] # <HALFWIDTH KATAKANA LETTER SMALL TU, KATAKANA ITERATION MARK>
+3063 309D ; [.32CD.0020.000F.3063][.32CD.0020.0010.3063] # <HIRAGANA LETTER SMALL TU, HIRAGANA ITERATION MARK>
+30C3 30FE ; [.32CD.0020.000F.30C3][.32CD.0020.0010.30C3][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL TU, KATAKANA VOICED ITERATION MARK>
+FF6F 30FE ; [.32CD.0020.000F.30C3][.32CD.0020.0010.30C3][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER SMALL TU, KATAKANA VOICED ITERATION MARK>
+3063 309E ; [.32CD.0020.000F.3063][.32CD.0020.0010.3063][.0000.0128.0002.3099] # <HIRAGANA LETTER SMALL TU, HIRAGANA VOICED ITERATION MARK>
+30C4 30FD ; [.32CD.0020.0011.30C4][.32CD.0020.0010.30C4] # <KATAKANA LETTER TU, KATAKANA ITERATION MARK>
+FF82 30FD ; [.32CD.0020.0011.30C4][.32CD.0020.0010.30C4] # <HALFWIDTH KATAKANA LETTER TU, KATAKANA ITERATION MARK>
+3064 309D ; [.32CD.0020.0011.3064][.32CD.0020.0010.3064] # <HIRAGANA LETTER TU, HIRAGANA ITERATION MARK>
+30C4 30FE ; [.32CD.0020.0011.30C4][.32CD.0020.0010.30C4][.0000.0128.0002.3099] # <KATAKANA LETTER TU, KATAKANA VOICED ITERATION MARK>
+FF82 30FE ; [.32CD.0020.0011.30C4][.32CD.0020.0010.30C4][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TU, KATAKANA VOICED ITERATION MARK>
+3064 309E ; [.32CD.0020.0011.3064][.32CD.0020.0010.3064][.0000.0128.0002.3099] # <HIRAGANA LETTER TU, HIRAGANA VOICED ITERATION MARK>
+30C5 30FD ; [.32CD.0020.0011.30C4][.0000.0128.0002.3099][.32CD.0020.0010.30C5] # <KATAKANA LETTER DU, KATAKANA ITERATION MARK>
+30C4 3099 30FD ; [.32CD.0020.0011.30C4][.0000.0128.0002.3099][.32CD.0020.0010.30C5] # <KATAKANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF82 FF9E 30FD ; [.32CD.0020.0011.30C4][.0000.0128.0002.3099][.32CD.0020.0010.30C5] # <HALFWIDTH KATAKANA LETTER TU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3065 309D ; [.32CD.0020.0011.3064][.0000.0128.0002.3099][.32CD.0020.0010.3065] # <HIRAGANA LETTER DU, HIRAGANA ITERATION MARK>
+3064 3099 309D ; [.32CD.0020.0011.3064][.0000.0128.0002.3099][.32CD.0020.0010.3065] # <HIRAGANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30C5 30FE ; [.32CD.0020.0011.30C4][.0000.0128.0002.3099][.32CD.0020.0010.30C5][.0000.0128.0002.3099] # <KATAKANA LETTER DU, KATAKANA VOICED ITERATION MARK>
+30C4 3099 30FE ; [.32CD.0020.0011.30C4][.0000.0128.0002.3099][.32CD.0020.0010.30C5][.0000.0128.0002.3099] # <KATAKANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF82 FF9E 30FE ; [.32CD.0020.0011.30C4][.0000.0128.0002.3099][.32CD.0020.0010.30C5][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3065 309E ; [.32CD.0020.0011.3064][.0000.0128.0002.3099][.32CD.0020.0010.3065][.0000.0128.0002.3099] # <HIRAGANA LETTER DU, HIRAGANA VOICED ITERATION MARK>
+3064 3099 309E ; [.32CD.0020.0011.3064][.0000.0128.0002.3099][.32CD.0020.0010.3065][.0000.0128.0002.3099] # <HIRAGANA LETTER TU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30C6 30FD ; [.32CE.0020.0011.30C6][.32CE.0020.0010.30C6] # <KATAKANA LETTER TE, KATAKANA ITERATION MARK>
+FF83 30FD ; [.32CE.0020.0011.30C6][.32CE.0020.0010.30C6] # <HALFWIDTH KATAKANA LETTER TE, KATAKANA ITERATION MARK>
+3066 309D ; [.32CE.0020.0011.3066][.32CE.0020.0010.3066] # <HIRAGANA LETTER TE, HIRAGANA ITERATION MARK>
+30C6 30FE ; [.32CE.0020.0011.30C6][.32CE.0020.0010.30C6][.0000.0128.0002.3099] # <KATAKANA LETTER TE, KATAKANA VOICED ITERATION MARK>
+FF83 30FE ; [.32CE.0020.0011.30C6][.32CE.0020.0010.30C6][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TE, KATAKANA VOICED ITERATION MARK>
+3066 309E ; [.32CE.0020.0011.3066][.32CE.0020.0010.3066][.0000.0128.0002.3099] # <HIRAGANA LETTER TE, HIRAGANA VOICED ITERATION MARK>
+30C7 30FD ; [.32CE.0020.0011.30C6][.0000.0128.0002.3099][.32CE.0020.0010.30C7] # <KATAKANA LETTER DE, KATAKANA ITERATION MARK>
+30C6 3099 30FD ; [.32CE.0020.0011.30C6][.0000.0128.0002.3099][.32CE.0020.0010.30C7] # <KATAKANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF83 FF9E 30FD ; [.32CE.0020.0011.30C6][.0000.0128.0002.3099][.32CE.0020.0010.30C7] # <HALFWIDTH KATAKANA LETTER TE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3067 309D ; [.32CE.0020.0011.3066][.0000.0128.0002.3099][.32CE.0020.0010.3067] # <HIRAGANA LETTER DE, HIRAGANA ITERATION MARK>
+3066 3099 309D ; [.32CE.0020.0011.3066][.0000.0128.0002.3099][.32CE.0020.0010.3067] # <HIRAGANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30C7 30FE ; [.32CE.0020.0011.30C6][.0000.0128.0002.3099][.32CE.0020.0010.30C7][.0000.0128.0002.3099] # <KATAKANA LETTER DE, KATAKANA VOICED ITERATION MARK>
+30C6 3099 30FE ; [.32CE.0020.0011.30C6][.0000.0128.0002.3099][.32CE.0020.0010.30C7][.0000.0128.0002.3099] # <KATAKANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF83 FF9E 30FE ; [.32CE.0020.0011.30C6][.0000.0128.0002.3099][.32CE.0020.0010.30C7][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3067 309E ; [.32CE.0020.0011.3066][.0000.0128.0002.3099][.32CE.0020.0010.3067][.0000.0128.0002.3099] # <HIRAGANA LETTER DE, HIRAGANA VOICED ITERATION MARK>
+3066 3099 309E ; [.32CE.0020.0011.3066][.0000.0128.0002.3099][.32CE.0020.0010.3067][.0000.0128.0002.3099] # <HIRAGANA LETTER TE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30C8 30FD ; [.32CF.0020.0011.30C8][.32CF.0020.0010.30C8] # <KATAKANA LETTER TO, KATAKANA ITERATION MARK>
+FF84 30FD ; [.32CF.0020.0011.30C8][.32CF.0020.0010.30C8] # <HALFWIDTH KATAKANA LETTER TO, KATAKANA ITERATION MARK>
+3068 309D ; [.32CF.0020.0011.3068][.32CF.0020.0010.3068] # <HIRAGANA LETTER TO, HIRAGANA ITERATION MARK>
+30C8 30FE ; [.32CF.0020.0011.30C8][.32CF.0020.0010.30C8][.0000.0128.0002.3099] # <KATAKANA LETTER TO, KATAKANA VOICED ITERATION MARK>
+FF84 30FE ; [.32CF.0020.0011.30C8][.32CF.0020.0010.30C8][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TO, KATAKANA VOICED ITERATION MARK>
+3068 309E ; [.32CF.0020.0011.3068][.32CF.0020.0010.3068][.0000.0128.0002.3099] # <HIRAGANA LETTER TO, HIRAGANA VOICED ITERATION MARK>
+30C9 30FD ; [.32CF.0020.0011.30C8][.0000.0128.0002.3099][.32CF.0020.0010.30C9] # <KATAKANA LETTER DO, KATAKANA ITERATION MARK>
+30C8 3099 30FD ; [.32CF.0020.0011.30C8][.0000.0128.0002.3099][.32CF.0020.0010.30C9] # <KATAKANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF84 FF9E 30FD ; [.32CF.0020.0011.30C8][.0000.0128.0002.3099][.32CF.0020.0010.30C9] # <HALFWIDTH KATAKANA LETTER TO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3069 309D ; [.32CF.0020.0011.3068][.0000.0128.0002.3099][.32CF.0020.0010.3069] # <HIRAGANA LETTER DO, HIRAGANA ITERATION MARK>
+3068 3099 309D ; [.32CF.0020.0011.3068][.0000.0128.0002.3099][.32CF.0020.0010.3069] # <HIRAGANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30C9 30FE ; [.32CF.0020.0011.30C8][.0000.0128.0002.3099][.32CF.0020.0010.30C9][.0000.0128.0002.3099] # <KATAKANA LETTER DO, KATAKANA VOICED ITERATION MARK>
+30C8 3099 30FE ; [.32CF.0020.0011.30C8][.0000.0128.0002.3099][.32CF.0020.0010.30C9][.0000.0128.0002.3099] # <KATAKANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF84 FF9E 30FE ; [.32CF.0020.0011.30C8][.0000.0128.0002.3099][.32CF.0020.0010.30C9][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER TO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3069 309E ; [.32CF.0020.0011.3068][.0000.0128.0002.3099][.32CF.0020.0010.3069][.0000.0128.0002.3099] # <HIRAGANA LETTER DO, HIRAGANA VOICED ITERATION MARK>
+3068 3099 309E ; [.32CF.0020.0011.3068][.0000.0128.0002.3099][.32CF.0020.0010.3069][.0000.0128.0002.3099] # <HIRAGANA LETTER TO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30CA 30FD ; [.32D0.0020.0011.30CA][.32D0.0020.0010.30CA] # <KATAKANA LETTER NA, KATAKANA ITERATION MARK>
+FF85 30FD ; [.32D0.0020.0011.30CA][.32D0.0020.0010.30CA] # <HALFWIDTH KATAKANA LETTER NA, KATAKANA ITERATION MARK>
+306A 309D ; [.32D0.0020.0011.306A][.32D0.0020.0010.306A] # <HIRAGANA LETTER NA, HIRAGANA ITERATION MARK>
+30CB 30FD ; [.32D1.0020.0011.30CB][.32D1.0020.0010.30CB] # <KATAKANA LETTER NI, KATAKANA ITERATION MARK>
+FF86 30FD ; [.32D1.0020.0011.30CB][.32D1.0020.0010.30CB] # <HALFWIDTH KATAKANA LETTER NI, KATAKANA ITERATION MARK>
+306B 309D ; [.32D1.0020.0011.306B][.32D1.0020.0010.306B] # <HIRAGANA LETTER NI, HIRAGANA ITERATION MARK>
+30CC 30FD ; [.32D2.0020.0011.30CC][.32D2.0020.0010.30CC] # <KATAKANA LETTER NU, KATAKANA ITERATION MARK>
+FF87 30FD ; [.32D2.0020.0011.30CC][.32D2.0020.0010.30CC] # <HALFWIDTH KATAKANA LETTER NU, KATAKANA ITERATION MARK>
+306C 309D ; [.32D2.0020.0011.306C][.32D2.0020.0010.306C] # <HIRAGANA LETTER NU, HIRAGANA ITERATION MARK>
+30CD 30FD ; [.32D3.0020.0011.30CD][.32D3.0020.0010.30CD] # <KATAKANA LETTER NE, KATAKANA ITERATION MARK>
+FF88 30FD ; [.32D3.0020.0011.30CD][.32D3.0020.0010.30CD] # <HALFWIDTH KATAKANA LETTER NE, KATAKANA ITERATION MARK>
+306D 309D ; [.32D3.0020.0011.306D][.32D3.0020.0010.306D] # <HIRAGANA LETTER NE, HIRAGANA ITERATION MARK>
+30CE 30FD ; [.32D4.0020.0011.30CE][.32D4.0020.0010.30CE] # <KATAKANA LETTER NO, KATAKANA ITERATION MARK>
+FF89 30FD ; [.32D4.0020.0011.30CE][.32D4.0020.0010.30CE] # <HALFWIDTH KATAKANA LETTER NO, KATAKANA ITERATION MARK>
+306E 309D ; [.32D4.0020.0011.306E][.32D4.0020.0010.306E] # <HIRAGANA LETTER NO, HIRAGANA ITERATION MARK>
+30CF 30FD ; [.32D5.0020.0011.30CF][.32D5.0020.0010.30CF] # <KATAKANA LETTER HA, KATAKANA ITERATION MARK>
+FF8A 30FD ; [.32D5.0020.0011.30CF][.32D5.0020.0010.30CF] # <HALFWIDTH KATAKANA LETTER HA, KATAKANA ITERATION MARK>
+306F 309D ; [.32D5.0020.0011.306F][.32D5.0020.0010.306F] # <HIRAGANA LETTER HA, HIRAGANA ITERATION MARK>
+30CF 30FE ; [.32D5.0020.0011.30CF][.32D5.0020.0010.30CF][.0000.0128.0002.3099] # <KATAKANA LETTER HA, KATAKANA VOICED ITERATION MARK>
+FF8A 30FE ; [.32D5.0020.0011.30CF][.32D5.0020.0010.30CF][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HA, KATAKANA VOICED ITERATION MARK>
+306F 309E ; [.32D5.0020.0011.306F][.32D5.0020.0010.306F][.0000.0128.0002.3099] # <HIRAGANA LETTER HA, HIRAGANA VOICED ITERATION MARK>
+30D0 30FD ; [.32D5.0020.0011.30CF][.0000.0128.0002.3099][.32D5.0020.0010.30D0] # <KATAKANA LETTER BA, KATAKANA ITERATION MARK>
+30CF 3099 30FD ; [.32D5.0020.0011.30CF][.0000.0128.0002.3099][.32D5.0020.0010.30D0] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF8A FF9E 30FD ; [.32D5.0020.0011.30CF][.0000.0128.0002.3099][.32D5.0020.0010.30D0] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3070 309D ; [.32D5.0020.0011.306F][.0000.0128.0002.3099][.32D5.0020.0010.3070] # <HIRAGANA LETTER BA, HIRAGANA ITERATION MARK>
+306F 3099 309D ; [.32D5.0020.0011.306F][.0000.0128.0002.3099][.32D5.0020.0010.3070] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30D0 30FE ; [.32D5.0020.0011.30CF][.0000.0128.0002.3099][.32D5.0020.0010.30D0][.0000.0128.0002.3099] # <KATAKANA LETTER BA, KATAKANA VOICED ITERATION MARK>
+30CF 3099 30FE ; [.32D5.0020.0011.30CF][.0000.0128.0002.3099][.32D5.0020.0010.30D0][.0000.0128.0002.3099] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF8A FF9E 30FE ; [.32D5.0020.0011.30CF][.0000.0128.0002.3099][.32D5.0020.0010.30D0][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3070 309E ; [.32D5.0020.0011.306F][.0000.0128.0002.3099][.32D5.0020.0010.3070][.0000.0128.0002.3099] # <HIRAGANA LETTER BA, HIRAGANA VOICED ITERATION MARK>
+306F 3099 309E ; [.32D5.0020.0011.306F][.0000.0128.0002.3099][.32D5.0020.0010.3070][.0000.0128.0002.3099] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30D1 30FD ; [.32D5.0020.0011.30CF][.0000.0129.0002.309A][.32D5.0020.0010.30D1] # <KATAKANA LETTER PA, KATAKANA ITERATION MARK>
+30CF 309A 30FD ; [.32D5.0020.0011.30CF][.0000.0129.0002.309A][.32D5.0020.0010.30D1] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF8A FF9F 30FD ; [.32D5.0020.0011.30CF][.0000.0129.0002.309A][.32D5.0020.0010.30D1] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3071 309D ; [.32D5.0020.0011.306F][.0000.0129.0002.309A][.32D5.0020.0010.3071] # <HIRAGANA LETTER PA, HIRAGANA ITERATION MARK>
+306F 309A 309D ; [.32D5.0020.0011.306F][.0000.0129.0002.309A][.32D5.0020.0010.3071] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30D1 30FE ; [.32D5.0020.0011.30CF][.0000.0129.0002.309A][.32D5.0020.0010.30D1][.0000.0128.0002.3099] # <KATAKANA LETTER PA, KATAKANA VOICED ITERATION MARK>
+30CF 309A 30FE ; [.32D5.0020.0011.30CF][.0000.0129.0002.309A][.32D5.0020.0010.30D1][.0000.0128.0002.3099] # <KATAKANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF8A FF9F 30FE ; [.32D5.0020.0011.30CF][.0000.0129.0002.309A][.32D5.0020.0010.30D1][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HA, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3071 309E ; [.32D5.0020.0011.306F][.0000.0129.0002.309A][.32D5.0020.0010.3071][.0000.0128.0002.3099] # <HIRAGANA LETTER PA, HIRAGANA VOICED ITERATION MARK>
+306F 309A 309E ; [.32D5.0020.0011.306F][.0000.0129.0002.309A][.32D5.0020.0010.3071][.0000.0128.0002.3099] # <HIRAGANA LETTER HA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30D2 30FD ; [.32D6.0020.0011.30D2][.32D6.0020.0010.30D2] # <KATAKANA LETTER HI, KATAKANA ITERATION MARK>
+FF8B 30FD ; [.32D6.0020.0011.30D2][.32D6.0020.0010.30D2] # <HALFWIDTH KATAKANA LETTER HI, KATAKANA ITERATION MARK>
+3072 309D ; [.32D6.0020.0011.3072][.32D6.0020.0010.3072] # <HIRAGANA LETTER HI, HIRAGANA ITERATION MARK>
+30D2 30FE ; [.32D6.0020.0011.30D2][.32D6.0020.0010.30D2][.0000.0128.0002.3099] # <KATAKANA LETTER HI, KATAKANA VOICED ITERATION MARK>
+FF8B 30FE ; [.32D6.0020.0011.30D2][.32D6.0020.0010.30D2][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HI, KATAKANA VOICED ITERATION MARK>
+3072 309E ; [.32D6.0020.0011.3072][.32D6.0020.0010.3072][.0000.0128.0002.3099] # <HIRAGANA LETTER HI, HIRAGANA VOICED ITERATION MARK>
+30D3 30FD ; [.32D6.0020.0011.30D2][.0000.0128.0002.3099][.32D6.0020.0010.30D3] # <KATAKANA LETTER BI, KATAKANA ITERATION MARK>
+30D2 3099 30FD ; [.32D6.0020.0011.30D2][.0000.0128.0002.3099][.32D6.0020.0010.30D3] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF8B FF9E 30FD ; [.32D6.0020.0011.30D2][.0000.0128.0002.3099][.32D6.0020.0010.30D3] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3073 309D ; [.32D6.0020.0011.3072][.0000.0128.0002.3099][.32D6.0020.0010.3073] # <HIRAGANA LETTER BI, HIRAGANA ITERATION MARK>
+3072 3099 309D ; [.32D6.0020.0011.3072][.0000.0128.0002.3099][.32D6.0020.0010.3073] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30D3 30FE ; [.32D6.0020.0011.30D2][.0000.0128.0002.3099][.32D6.0020.0010.30D3][.0000.0128.0002.3099] # <KATAKANA LETTER BI, KATAKANA VOICED ITERATION MARK>
+30D2 3099 30FE ; [.32D6.0020.0011.30D2][.0000.0128.0002.3099][.32D6.0020.0010.30D3][.0000.0128.0002.3099] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF8B FF9E 30FE ; [.32D6.0020.0011.30D2][.0000.0128.0002.3099][.32D6.0020.0010.30D3][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3073 309E ; [.32D6.0020.0011.3072][.0000.0128.0002.3099][.32D6.0020.0010.3073][.0000.0128.0002.3099] # <HIRAGANA LETTER BI, HIRAGANA VOICED ITERATION MARK>
+3072 3099 309E ; [.32D6.0020.0011.3072][.0000.0128.0002.3099][.32D6.0020.0010.3073][.0000.0128.0002.3099] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30D4 30FD ; [.32D6.0020.0011.30D2][.0000.0129.0002.309A][.32D6.0020.0010.30D4] # <KATAKANA LETTER PI, KATAKANA ITERATION MARK>
+30D2 309A 30FD ; [.32D6.0020.0011.30D2][.0000.0129.0002.309A][.32D6.0020.0010.30D4] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF8B FF9F 30FD ; [.32D6.0020.0011.30D2][.0000.0129.0002.309A][.32D6.0020.0010.30D4] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3074 309D ; [.32D6.0020.0011.3072][.0000.0129.0002.309A][.32D6.0020.0010.3074] # <HIRAGANA LETTER PI, HIRAGANA ITERATION MARK>
+3072 309A 309D ; [.32D6.0020.0011.3072][.0000.0129.0002.309A][.32D6.0020.0010.3074] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30D4 30FE ; [.32D6.0020.0011.30D2][.0000.0129.0002.309A][.32D6.0020.0010.30D4][.0000.0128.0002.3099] # <KATAKANA LETTER PI, KATAKANA VOICED ITERATION MARK>
+30D2 309A 30FE ; [.32D6.0020.0011.30D2][.0000.0129.0002.309A][.32D6.0020.0010.30D4][.0000.0128.0002.3099] # <KATAKANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF8B FF9F 30FE ; [.32D6.0020.0011.30D2][.0000.0129.0002.309A][.32D6.0020.0010.30D4][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HI, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3074 309E ; [.32D6.0020.0011.3072][.0000.0129.0002.309A][.32D6.0020.0010.3074][.0000.0128.0002.3099] # <HIRAGANA LETTER PI, HIRAGANA VOICED ITERATION MARK>
+3072 309A 309E ; [.32D6.0020.0011.3072][.0000.0129.0002.309A][.32D6.0020.0010.3074][.0000.0128.0002.3099] # <HIRAGANA LETTER HI, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30D5 30FD ; [.32D7.0020.0011.30D5][.32D7.0020.0010.30D5] # <KATAKANA LETTER HU, KATAKANA ITERATION MARK>
+FF8C 30FD ; [.32D7.0020.0011.30D5][.32D7.0020.0010.30D5] # <HALFWIDTH KATAKANA LETTER HU, KATAKANA ITERATION MARK>
+3075 309D ; [.32D7.0020.0011.3075][.32D7.0020.0010.3075] # <HIRAGANA LETTER HU, HIRAGANA ITERATION MARK>
+30D5 30FE ; [.32D7.0020.0011.30D5][.32D7.0020.0010.30D5][.0000.0128.0002.3099] # <KATAKANA LETTER HU, KATAKANA VOICED ITERATION MARK>
+FF8C 30FE ; [.32D7.0020.0011.30D5][.32D7.0020.0010.30D5][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HU, KATAKANA VOICED ITERATION MARK>
+3075 309E ; [.32D7.0020.0011.3075][.32D7.0020.0010.3075][.0000.0128.0002.3099] # <HIRAGANA LETTER HU, HIRAGANA VOICED ITERATION MARK>
+30D6 30FD ; [.32D7.0020.0011.30D5][.0000.0128.0002.3099][.32D7.0020.0010.30D6] # <KATAKANA LETTER BU, KATAKANA ITERATION MARK>
+30D5 3099 30FD ; [.32D7.0020.0011.30D5][.0000.0128.0002.3099][.32D7.0020.0010.30D6] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF8C FF9E 30FD ; [.32D7.0020.0011.30D5][.0000.0128.0002.3099][.32D7.0020.0010.30D6] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3076 309D ; [.32D7.0020.0011.3075][.0000.0128.0002.3099][.32D7.0020.0010.3076] # <HIRAGANA LETTER BU, HIRAGANA ITERATION MARK>
+3075 3099 309D ; [.32D7.0020.0011.3075][.0000.0128.0002.3099][.32D7.0020.0010.3076] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30D6 30FE ; [.32D7.0020.0011.30D5][.0000.0128.0002.3099][.32D7.0020.0010.30D6][.0000.0128.0002.3099] # <KATAKANA LETTER BU, KATAKANA VOICED ITERATION MARK>
+30D5 3099 30FE ; [.32D7.0020.0011.30D5][.0000.0128.0002.3099][.32D7.0020.0010.30D6][.0000.0128.0002.3099] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF8C FF9E 30FE ; [.32D7.0020.0011.30D5][.0000.0128.0002.3099][.32D7.0020.0010.30D6][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3076 309E ; [.32D7.0020.0011.3075][.0000.0128.0002.3099][.32D7.0020.0010.3076][.0000.0128.0002.3099] # <HIRAGANA LETTER BU, HIRAGANA VOICED ITERATION MARK>
+3075 3099 309E ; [.32D7.0020.0011.3075][.0000.0128.0002.3099][.32D7.0020.0010.3076][.0000.0128.0002.3099] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30D7 30FD ; [.32D7.0020.0011.30D5][.0000.0129.0002.309A][.32D7.0020.0010.30D7] # <KATAKANA LETTER PU, KATAKANA ITERATION MARK>
+30D5 309A 30FD ; [.32D7.0020.0011.30D5][.0000.0129.0002.309A][.32D7.0020.0010.30D7] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF8C FF9F 30FD ; [.32D7.0020.0011.30D5][.0000.0129.0002.309A][.32D7.0020.0010.30D7] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3077 309D ; [.32D7.0020.0011.3075][.0000.0129.0002.309A][.32D7.0020.0010.3077] # <HIRAGANA LETTER PU, HIRAGANA ITERATION MARK>
+3075 309A 309D ; [.32D7.0020.0011.3075][.0000.0129.0002.309A][.32D7.0020.0010.3077] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30D7 30FE ; [.32D7.0020.0011.30D5][.0000.0129.0002.309A][.32D7.0020.0010.30D7][.0000.0128.0002.3099] # <KATAKANA LETTER PU, KATAKANA VOICED ITERATION MARK>
+30D5 309A 30FE ; [.32D7.0020.0011.30D5][.0000.0129.0002.309A][.32D7.0020.0010.30D7][.0000.0128.0002.3099] # <KATAKANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF8C FF9F 30FE ; [.32D7.0020.0011.30D5][.0000.0129.0002.309A][.32D7.0020.0010.30D7][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HU, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3077 309E ; [.32D7.0020.0011.3075][.0000.0129.0002.309A][.32D7.0020.0010.3077][.0000.0128.0002.3099] # <HIRAGANA LETTER PU, HIRAGANA VOICED ITERATION MARK>
+3075 309A 309E ; [.32D7.0020.0011.3075][.0000.0129.0002.309A][.32D7.0020.0010.3077][.0000.0128.0002.3099] # <HIRAGANA LETTER HU, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30D8 30FD ; [.32D8.0020.0011.30D8][.32D8.0020.0010.30D8] # <KATAKANA LETTER HE, KATAKANA ITERATION MARK>
+FF8D 30FD ; [.32D8.0020.0011.30D8][.32D8.0020.0010.30D8] # <HALFWIDTH KATAKANA LETTER HE, KATAKANA ITERATION MARK>
+3078 309D ; [.32D8.0020.0011.3078][.32D8.0020.0010.3078] # <HIRAGANA LETTER HE, HIRAGANA ITERATION MARK>
+30D8 30FE ; [.32D8.0020.0011.30D8][.32D8.0020.0010.30D8][.0000.0128.0002.3099] # <KATAKANA LETTER HE, KATAKANA VOICED ITERATION MARK>
+FF8D 30FE ; [.32D8.0020.0011.30D8][.32D8.0020.0010.30D8][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HE, KATAKANA VOICED ITERATION MARK>
+3078 309E ; [.32D8.0020.0011.3078][.32D8.0020.0010.3078][.0000.0128.0002.3099] # <HIRAGANA LETTER HE, HIRAGANA VOICED ITERATION MARK>
+30D9 30FD ; [.32D8.0020.0011.30D8][.0000.0128.0002.3099][.32D8.0020.0010.30D9] # <KATAKANA LETTER BE, KATAKANA ITERATION MARK>
+30D8 3099 30FD ; [.32D8.0020.0011.30D8][.0000.0128.0002.3099][.32D8.0020.0010.30D9] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF8D FF9E 30FD ; [.32D8.0020.0011.30D8][.0000.0128.0002.3099][.32D8.0020.0010.30D9] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3079 309D ; [.32D8.0020.0011.3078][.0000.0128.0002.3099][.32D8.0020.0010.3079] # <HIRAGANA LETTER BE, HIRAGANA ITERATION MARK>
+3078 3099 309D ; [.32D8.0020.0011.3078][.0000.0128.0002.3099][.32D8.0020.0010.3079] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30D9 30FE ; [.32D8.0020.0011.30D8][.0000.0128.0002.3099][.32D8.0020.0010.30D9][.0000.0128.0002.3099] # <KATAKANA LETTER BE, KATAKANA VOICED ITERATION MARK>
+30D8 3099 30FE ; [.32D8.0020.0011.30D8][.0000.0128.0002.3099][.32D8.0020.0010.30D9][.0000.0128.0002.3099] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF8D FF9E 30FE ; [.32D8.0020.0011.30D8][.0000.0128.0002.3099][.32D8.0020.0010.30D9][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3079 309E ; [.32D8.0020.0011.3078][.0000.0128.0002.3099][.32D8.0020.0010.3079][.0000.0128.0002.3099] # <HIRAGANA LETTER BE, HIRAGANA VOICED ITERATION MARK>
+3078 3099 309E ; [.32D8.0020.0011.3078][.0000.0128.0002.3099][.32D8.0020.0010.3079][.0000.0128.0002.3099] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30DA 30FD ; [.32D8.0020.0011.30D8][.0000.0129.0002.309A][.32D8.0020.0010.30DA] # <KATAKANA LETTER PE, KATAKANA ITERATION MARK>
+30D8 309A 30FD ; [.32D8.0020.0011.30D8][.0000.0129.0002.309A][.32D8.0020.0010.30DA] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF8D FF9F 30FD ; [.32D8.0020.0011.30D8][.0000.0129.0002.309A][.32D8.0020.0010.30DA] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
+307A 309D ; [.32D8.0020.0011.3078][.0000.0129.0002.309A][.32D8.0020.0010.307A] # <HIRAGANA LETTER PE, HIRAGANA ITERATION MARK>
+3078 309A 309D ; [.32D8.0020.0011.3078][.0000.0129.0002.309A][.32D8.0020.0010.307A] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30DA 30FE ; [.32D8.0020.0011.30D8][.0000.0129.0002.309A][.32D8.0020.0010.30DA][.0000.0128.0002.3099] # <KATAKANA LETTER PE, KATAKANA VOICED ITERATION MARK>
+30D8 309A 30FE ; [.32D8.0020.0011.30D8][.0000.0129.0002.309A][.32D8.0020.0010.30DA][.0000.0128.0002.3099] # <KATAKANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF8D FF9F 30FE ; [.32D8.0020.0011.30D8][.0000.0129.0002.309A][.32D8.0020.0010.30DA][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HE, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+307A 309E ; [.32D8.0020.0011.3078][.0000.0129.0002.309A][.32D8.0020.0010.307A][.0000.0128.0002.3099] # <HIRAGANA LETTER PE, HIRAGANA VOICED ITERATION MARK>
+3078 309A 309E ; [.32D8.0020.0011.3078][.0000.0129.0002.309A][.32D8.0020.0010.307A][.0000.0128.0002.3099] # <HIRAGANA LETTER HE, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30DB 30FD ; [.32D9.0020.0011.30DB][.32D9.0020.0010.30DB] # <KATAKANA LETTER HO, KATAKANA ITERATION MARK>
+FF8E 30FD ; [.32D9.0020.0011.30DB][.32D9.0020.0010.30DB] # <HALFWIDTH KATAKANA LETTER HO, KATAKANA ITERATION MARK>
+307B 309D ; [.32D9.0020.0011.307B][.32D9.0020.0010.307B] # <HIRAGANA LETTER HO, HIRAGANA ITERATION MARK>
+30DB 30FE ; [.32D9.0020.0011.30DB][.32D9.0020.0010.30DB][.0000.0128.0002.3099] # <KATAKANA LETTER HO, KATAKANA VOICED ITERATION MARK>
+FF8E 30FE ; [.32D9.0020.0011.30DB][.32D9.0020.0010.30DB][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HO, KATAKANA VOICED ITERATION MARK>
+307B 309E ; [.32D9.0020.0011.307B][.32D9.0020.0010.307B][.0000.0128.0002.3099] # <HIRAGANA LETTER HO, HIRAGANA VOICED ITERATION MARK>
+30DC 30FD ; [.32D9.0020.0011.30DB][.0000.0128.0002.3099][.32D9.0020.0010.30DC] # <KATAKANA LETTER BO, KATAKANA ITERATION MARK>
+30DB 3099 30FD ; [.32D9.0020.0011.30DB][.0000.0128.0002.3099][.32D9.0020.0010.30DC] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF8E FF9E 30FD ; [.32D9.0020.0011.30DB][.0000.0128.0002.3099][.32D9.0020.0010.30DC] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+307C 309D ; [.32D9.0020.0011.307B][.0000.0128.0002.3099][.32D9.0020.0010.307C] # <HIRAGANA LETTER BO, HIRAGANA ITERATION MARK>
+307B 3099 309D ; [.32D9.0020.0011.307B][.0000.0128.0002.3099][.32D9.0020.0010.307C] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30DC 30FE ; [.32D9.0020.0011.30DB][.0000.0128.0002.3099][.32D9.0020.0010.30DC][.0000.0128.0002.3099] # <KATAKANA LETTER BO, KATAKANA VOICED ITERATION MARK>
+30DB 3099 30FE ; [.32D9.0020.0011.30DB][.0000.0128.0002.3099][.32D9.0020.0010.30DC][.0000.0128.0002.3099] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF8E FF9E 30FE ; [.32D9.0020.0011.30DB][.0000.0128.0002.3099][.32D9.0020.0010.30DC][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+307C 309E ; [.32D9.0020.0011.307B][.0000.0128.0002.3099][.32D9.0020.0010.307C][.0000.0128.0002.3099] # <HIRAGANA LETTER BO, HIRAGANA VOICED ITERATION MARK>
+307B 3099 309E ; [.32D9.0020.0011.307B][.0000.0128.0002.3099][.32D9.0020.0010.307C][.0000.0128.0002.3099] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30DD 30FD ; [.32D9.0020.0011.30DB][.0000.0129.0002.309A][.32D9.0020.0010.30DD] # <KATAKANA LETTER PO, KATAKANA ITERATION MARK>
+30DB 309A 30FD ; [.32D9.0020.0011.30DB][.0000.0129.0002.309A][.32D9.0020.0010.30DD] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF8E FF9F 30FD ; [.32D9.0020.0011.30DB][.0000.0129.0002.309A][.32D9.0020.0010.30DD] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA ITERATION MARK>
+307D 309D ; [.32D9.0020.0011.307B][.0000.0129.0002.309A][.32D9.0020.0010.307D] # <HIRAGANA LETTER PO, HIRAGANA ITERATION MARK>
+307B 309A 309D ; [.32D9.0020.0011.307B][.0000.0129.0002.309A][.32D9.0020.0010.307D] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30DD 30FE ; [.32D9.0020.0011.30DB][.0000.0129.0002.309A][.32D9.0020.0010.30DD][.0000.0128.0002.3099] # <KATAKANA LETTER PO, KATAKANA VOICED ITERATION MARK>
+30DB 309A 30FE ; [.32D9.0020.0011.30DB][.0000.0129.0002.309A][.32D9.0020.0010.30DD][.0000.0128.0002.3099] # <KATAKANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF8E FF9F 30FE ; [.32D9.0020.0011.30DB][.0000.0129.0002.309A][.32D9.0020.0010.30DD][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER HO, HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+307D 309E ; [.32D9.0020.0011.307B][.0000.0129.0002.309A][.32D9.0020.0010.307D][.0000.0128.0002.3099] # <HIRAGANA LETTER PO, HIRAGANA VOICED ITERATION MARK>
+307B 309A 309E ; [.32D9.0020.0011.307B][.0000.0129.0002.309A][.32D9.0020.0010.307D][.0000.0128.0002.3099] # <HIRAGANA LETTER HO, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30DE 30FD ; [.32DA.0020.0011.30DE][.32DA.0020.0010.30DE] # <KATAKANA LETTER MA, KATAKANA ITERATION MARK>
+FF8F 30FD ; [.32DA.0020.0011.30DE][.32DA.0020.0010.30DE] # <HALFWIDTH KATAKANA LETTER MA, KATAKANA ITERATION MARK>
+307E 309D ; [.32DA.0020.0011.307E][.32DA.0020.0010.307E] # <HIRAGANA LETTER MA, HIRAGANA ITERATION MARK>
+30DF 30FD ; [.32DB.0020.0011.30DF][.32DB.0020.0010.30DF] # <KATAKANA LETTER MI, KATAKANA ITERATION MARK>
+FF90 30FD ; [.32DB.0020.0011.30DF][.32DB.0020.0010.30DF] # <HALFWIDTH KATAKANA LETTER MI, KATAKANA ITERATION MARK>
+307F 309D ; [.32DB.0020.0011.307F][.32DB.0020.0010.307F] # <HIRAGANA LETTER MI, HIRAGANA ITERATION MARK>
+30E0 30FD ; [.32DC.0020.0011.30E0][.32DC.0020.0010.30E0] # <KATAKANA LETTER MU, KATAKANA ITERATION MARK>
+FF91 30FD ; [.32DC.0020.0011.30E0][.32DC.0020.0010.30E0] # <HALFWIDTH KATAKANA LETTER MU, KATAKANA ITERATION MARK>
+3080 309D ; [.32DC.0020.0011.3080][.32DC.0020.0010.3080] # <HIRAGANA LETTER MU, HIRAGANA ITERATION MARK>
+30E1 30FD ; [.32DD.0020.0011.30E1][.32DD.0020.0010.30E1] # <KATAKANA LETTER ME, KATAKANA ITERATION MARK>
+FF92 30FD ; [.32DD.0020.0011.30E1][.32DD.0020.0010.30E1] # <HALFWIDTH KATAKANA LETTER ME, KATAKANA ITERATION MARK>
+3081 309D ; [.32DD.0020.0011.3081][.32DD.0020.0010.3081] # <HIRAGANA LETTER ME, HIRAGANA ITERATION MARK>
+30E2 30FD ; [.32DE.0020.0011.30E2][.32DE.0020.0010.30E2] # <KATAKANA LETTER MO, KATAKANA ITERATION MARK>
+FF93 30FD ; [.32DE.0020.0011.30E2][.32DE.0020.0010.30E2] # <HALFWIDTH KATAKANA LETTER MO, KATAKANA ITERATION MARK>
+3082 309D ; [.32DE.0020.0011.3082][.32DE.0020.0010.3082] # <HIRAGANA LETTER MO, HIRAGANA ITERATION MARK>
+30E3 30FD ; [.32DF.0020.000F.30E3][.32DF.0020.0010.30E3] # <KATAKANA LETTER SMALL YA, KATAKANA ITERATION MARK>
+FF6C 30FD ; [.32DF.0020.000F.30E3][.32DF.0020.0010.30E3] # <HALFWIDTH KATAKANA LETTER SMALL YA, KATAKANA ITERATION MARK>
+3083 309D ; [.32DF.0020.000F.3083][.32DF.0020.0010.3083] # <HIRAGANA LETTER SMALL YA, HIRAGANA ITERATION MARK>
+30E4 30FD ; [.32DF.0020.0011.30E4][.32DF.0020.0010.30E4] # <KATAKANA LETTER YA, KATAKANA ITERATION MARK>
+FF94 30FD ; [.32DF.0020.0011.30E4][.32DF.0020.0010.30E4] # <HALFWIDTH KATAKANA LETTER YA, KATAKANA ITERATION MARK>
+3084 309D ; [.32DF.0020.0011.3084][.32DF.0020.0010.3084] # <HIRAGANA LETTER YA, HIRAGANA ITERATION MARK>
+30E5 30FD ; [.32E0.0020.000F.30E5][.32E0.0020.0010.30E5] # <KATAKANA LETTER SMALL YU, KATAKANA ITERATION MARK>
+FF6D 30FD ; [.32E0.0020.000F.30E5][.32E0.0020.0010.30E5] # <HALFWIDTH KATAKANA LETTER SMALL YU, KATAKANA ITERATION MARK>
+3085 309D ; [.32E0.0020.000F.3085][.32E0.0020.0010.3085] # <HIRAGANA LETTER SMALL YU, HIRAGANA ITERATION MARK>
+30E6 30FD ; [.32E0.0020.0011.30E6][.32E0.0020.0010.30E6] # <KATAKANA LETTER YU, KATAKANA ITERATION MARK>
+FF95 30FD ; [.32E0.0020.0011.30E6][.32E0.0020.0010.30E6] # <HALFWIDTH KATAKANA LETTER YU, KATAKANA ITERATION MARK>
+3086 309D ; [.32E0.0020.0011.3086][.32E0.0020.0010.3086] # <HIRAGANA LETTER YU, HIRAGANA ITERATION MARK>
+30E7 30FD ; [.32E2.0020.000F.30E7][.32E2.0020.0010.30E7] # <KATAKANA LETTER SMALL YO, KATAKANA ITERATION MARK>
+FF6E 30FD ; [.32E2.0020.000F.30E7][.32E2.0020.0010.30E7] # <HALFWIDTH KATAKANA LETTER SMALL YO, KATAKANA ITERATION MARK>
+3087 309D ; [.32E2.0020.000F.3087][.32E2.0020.0010.3087] # <HIRAGANA LETTER SMALL YO, HIRAGANA ITERATION MARK>
+30E8 30FD ; [.32E2.0020.0011.30E8][.32E2.0020.0010.30E8] # <KATAKANA LETTER YO, KATAKANA ITERATION MARK>
+FF96 30FD ; [.32E2.0020.0011.30E8][.32E2.0020.0010.30E8] # <HALFWIDTH KATAKANA LETTER YO, KATAKANA ITERATION MARK>
+3088 309D ; [.32E2.0020.0011.3088][.32E2.0020.0010.3088] # <HIRAGANA LETTER YO, HIRAGANA ITERATION MARK>
+30E9 30FD ; [.32E3.0020.0011.30E9][.32E3.0020.0010.30E9] # <KATAKANA LETTER RA, KATAKANA ITERATION MARK>
+FF97 30FD ; [.32E3.0020.0011.30E9][.32E3.0020.0010.30E9] # <HALFWIDTH KATAKANA LETTER RA, KATAKANA ITERATION MARK>
+3089 309D ; [.32E3.0020.0011.3089][.32E3.0020.0010.3089] # <HIRAGANA LETTER RA, HIRAGANA ITERATION MARK>
+30EA 30FD ; [.32E4.0020.0011.30EA][.32E4.0020.0010.30EA] # <KATAKANA LETTER RI, KATAKANA ITERATION MARK>
+FF98 30FD ; [.32E4.0020.0011.30EA][.32E4.0020.0010.30EA] # <HALFWIDTH KATAKANA LETTER RI, KATAKANA ITERATION MARK>
+308A 309D ; [.32E4.0020.0011.308A][.32E4.0020.0010.308A] # <HIRAGANA LETTER RI, HIRAGANA ITERATION MARK>
+30EB 30FD ; [.32E5.0020.0011.30EB][.32E5.0020.0010.30EB] # <KATAKANA LETTER RU, KATAKANA ITERATION MARK>
+FF99 30FD ; [.32E5.0020.0011.30EB][.32E5.0020.0010.30EB] # <HALFWIDTH KATAKANA LETTER RU, KATAKANA ITERATION MARK>
+308B 309D ; [.32E5.0020.0011.308B][.32E5.0020.0010.308B] # <HIRAGANA LETTER RU, HIRAGANA ITERATION MARK>
+30EC 30FD ; [.32E6.0020.0011.30EC][.32E6.0020.0010.30EC] # <KATAKANA LETTER RE, KATAKANA ITERATION MARK>
+FF9A 30FD ; [.32E6.0020.0011.30EC][.32E6.0020.0010.30EC] # <HALFWIDTH KATAKANA LETTER RE, KATAKANA ITERATION MARK>
+308C 309D ; [.32E6.0020.0011.308C][.32E6.0020.0010.308C] # <HIRAGANA LETTER RE, HIRAGANA ITERATION MARK>
+30ED 30FD ; [.32E7.0020.0011.30ED][.32E7.0020.0010.30ED] # <KATAKANA LETTER RO, KATAKANA ITERATION MARK>
+FF9B 30FD ; [.32E7.0020.0011.30ED][.32E7.0020.0010.30ED] # <HALFWIDTH KATAKANA LETTER RO, KATAKANA ITERATION MARK>
+308D 309D ; [.32E7.0020.0011.308D][.32E7.0020.0010.308D] # <HIRAGANA LETTER RO, HIRAGANA ITERATION MARK>
+30EE 30FD ; [.32E8.0020.000F.30EE][.32E8.0020.0010.30EE] # <KATAKANA LETTER SMALL WA, KATAKANA ITERATION MARK>
+308E 309D ; [.32E8.0020.000F.308E][.32E8.0020.0010.308E] # <HIRAGANA LETTER SMALL WA, HIRAGANA ITERATION MARK>
+30EE 30FE ; [.32E8.0020.000F.30EE][.32E8.0020.0010.30EE][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL WA, KATAKANA VOICED ITERATION MARK>
+308E 309E ; [.32E8.0020.000F.308E][.32E8.0020.0010.308E][.0000.0128.0002.3099] # <HIRAGANA LETTER SMALL WA, HIRAGANA VOICED ITERATION MARK>
+30EF 30FD ; [.32E8.0020.0011.30EF][.32E8.0020.0010.30EF] # <KATAKANA LETTER WA, KATAKANA ITERATION MARK>
+FF9C 30FD ; [.32E8.0020.0011.30EF][.32E8.0020.0010.30EF] # <HALFWIDTH KATAKANA LETTER WA, KATAKANA ITERATION MARK>
+308F 309D ; [.32E8.0020.0011.308F][.32E8.0020.0010.308F] # <HIRAGANA LETTER WA, HIRAGANA ITERATION MARK>
+30EF 30FE ; [.32E8.0020.0011.30EF][.32E8.0020.0010.30EF][.0000.0128.0002.3099] # <KATAKANA LETTER WA, KATAKANA VOICED ITERATION MARK>
+FF9C 30FE ; [.32E8.0020.0011.30EF][.32E8.0020.0010.30EF][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER WA, KATAKANA VOICED ITERATION MARK>
+308F 309E ; [.32E8.0020.0011.308F][.32E8.0020.0010.308F][.0000.0128.0002.3099] # <HIRAGANA LETTER WA, HIRAGANA VOICED ITERATION MARK>
+30F0 30FD ; [.32E9.0020.0011.30F0][.32E9.0020.0010.30F0] # <KATAKANA LETTER WI, KATAKANA ITERATION MARK>
+3090 309D ; [.32E9.0020.0011.3090][.32E9.0020.0010.3090] # <HIRAGANA LETTER WI, HIRAGANA ITERATION MARK>
+30F0 30FE ; [.32E9.0020.0011.30F0][.32E9.0020.0010.30F0][.0000.0128.0002.3099] # <KATAKANA LETTER WI, KATAKANA VOICED ITERATION MARK>
+3090 309E ; [.32E9.0020.0011.3090][.32E9.0020.0010.3090][.0000.0128.0002.3099] # <HIRAGANA LETTER WI, HIRAGANA VOICED ITERATION MARK>
+30F1 30FD ; [.32EA.0020.0011.30F1][.32EA.0020.0010.30F1] # <KATAKANA LETTER WE, KATAKANA ITERATION MARK>
+3091 309D ; [.32EA.0020.0011.3091][.32EA.0020.0010.3091] # <HIRAGANA LETTER WE, HIRAGANA ITERATION MARK>
+30F1 30FE ; [.32EA.0020.0011.30F1][.32EA.0020.0010.30F1][.0000.0128.0002.3099] # <KATAKANA LETTER WE, KATAKANA VOICED ITERATION MARK>
+3091 309E ; [.32EA.0020.0011.3091][.32EA.0020.0010.3091][.0000.0128.0002.3099] # <HIRAGANA LETTER WE, HIRAGANA VOICED ITERATION MARK>
+30F2 30FD ; [.32EB.0020.0011.30F2][.32EB.0020.0010.30F2] # <KATAKANA LETTER WO, KATAKANA ITERATION MARK>
+FF66 30FD ; [.32EB.0020.0011.30F2][.32EB.0020.0010.30F2] # <HALFWIDTH KATAKANA LETTER WO, KATAKANA ITERATION MARK>
+3092 309D ; [.32EB.0020.0011.3092][.32EB.0020.0010.3092] # <HIRAGANA LETTER WO, HIRAGANA ITERATION MARK>
+30F2 30FE ; [.32EB.0020.0011.30F2][.32EB.0020.0010.30F2][.0000.0128.0002.3099] # <KATAKANA LETTER WO, KATAKANA VOICED ITERATION MARK>
+FF66 30FE ; [.32EB.0020.0011.30F2][.32EB.0020.0010.30F2][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER WO, KATAKANA VOICED ITERATION MARK>
+3092 309E ; [.32EB.0020.0011.3092][.32EB.0020.0010.3092][.0000.0128.0002.3099] # <HIRAGANA LETTER WO, HIRAGANA VOICED ITERATION MARK>
+30F3 30FD ; [.32EC.0020.0011.30F3][.32EC.0020.0010.30F3] # <KATAKANA LETTER N, KATAKANA ITERATION MARK>
+FF9D 30FD ; [.32EC.0020.0011.30F3][.32EC.0020.0010.30F3] # <HALFWIDTH KATAKANA LETTER N, KATAKANA ITERATION MARK>
+3093 309D ; [.32EC.0020.0011.3093][.32EC.0020.0010.3093] # <HIRAGANA LETTER N, HIRAGANA ITERATION MARK>
+30F4 30FD ; [.32BD.0020.0011.30A6][.0000.0128.0002.3099][.32BD.0020.0010.30F4] # <KATAKANA LETTER VU, KATAKANA ITERATION MARK>
+30A6 3099 30FD ; [.32BD.0020.0011.30A6][.0000.0128.0002.3099][.32BD.0020.0010.30F4] # <KATAKANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF73 FF9E 30FD ; [.32BD.0020.0011.30A6][.0000.0128.0002.3099][.32BD.0020.0010.30F4] # <HALFWIDTH KATAKANA LETTER U, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+3094 309D ; [.32BD.0020.0011.3046][.0000.0128.0002.3099][.32BD.0020.0010.3094] # <HIRAGANA LETTER VU, HIRAGANA ITERATION MARK>
+3046 3099 309D ; [.32BD.0020.0011.3046][.0000.0128.0002.3099][.32BD.0020.0010.3094] # <HIRAGANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA ITERATION MARK>
+30F4 30FE ; [.32BD.0020.0011.30A6][.0000.0128.0002.3099][.32BD.0020.0010.30F4][.0000.0128.0002.3099] # <KATAKANA LETTER VU, KATAKANA VOICED ITERATION MARK>
+30A6 3099 30FE ; [.32BD.0020.0011.30A6][.0000.0128.0002.3099][.32BD.0020.0010.30F4][.0000.0128.0002.3099] # <KATAKANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF73 FF9E 30FE ; [.32BD.0020.0011.30A6][.0000.0128.0002.3099][.32BD.0020.0010.30F4][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER U, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+3094 309E ; [.32BD.0020.0011.3046][.0000.0128.0002.3099][.32BD.0020.0010.3094][.0000.0128.0002.3099] # <HIRAGANA LETTER VU, HIRAGANA VOICED ITERATION MARK>
+3046 3099 309E ; [.32BD.0020.0011.3046][.0000.0128.0002.3099][.32BD.0020.0010.3094][.0000.0128.0002.3099] # <HIRAGANA LETTER U, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HIRAGANA VOICED ITERATION MARK>
+30F5 30FD ; [.32C1.0020.000F.30F5][.32C1.0020.0010.30F5] # <KATAKANA LETTER SMALL KA, KATAKANA ITERATION MARK>
+3095 309D ; [.32C1.0020.000F.3095][.32C1.0020.0010.3095] # <HIRAGANA LETTER SMALL KA, HIRAGANA ITERATION MARK>
+30F5 30FE ; [.32C1.0020.000F.30F5][.32C1.0020.0010.30F5][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL KA, KATAKANA VOICED ITERATION MARK>
+3095 309E ; [.32C1.0020.000F.3095][.32C1.0020.0010.3095][.0000.0128.0002.3099] # <HIRAGANA LETTER SMALL KA, HIRAGANA VOICED ITERATION MARK>
+30F6 30FD ; [.32C4.0020.000F.30F6][.32C4.0020.0010.30F6] # <KATAKANA LETTER SMALL KE, KATAKANA ITERATION MARK>
+3096 309D ; [.32C4.0020.000F.3096][.32C4.0020.0010.3096] # <HIRAGANA LETTER SMALL KE, HIRAGANA ITERATION MARK>
+30F6 30FE ; [.32C4.0020.000F.30F6][.32C4.0020.0010.30F6][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL KE, KATAKANA VOICED ITERATION MARK>
+3096 309E ; [.32C4.0020.000F.3096][.32C4.0020.0010.3096][.0000.0128.0002.3099] # <HIRAGANA LETTER SMALL KE, HIRAGANA VOICED ITERATION MARK>
+30F7 30FD ; [.32E8.0020.0011.30EF][.0000.0128.0002.3099][.32E8.0020.0010.30F7] # <KATAKANA LETTER VA, KATAKANA ITERATION MARK>
+30EF 3099 30FD ; [.32E8.0020.0011.30EF][.0000.0128.0002.3099][.32E8.0020.0010.30F7] # <KATAKANA LETTER WA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF9C FF9E 30FD ; [.32E8.0020.0011.30EF][.0000.0128.0002.3099][.32E8.0020.0010.30F7] # <HALFWIDTH KATAKANA LETTER WA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+30F7 30FE ; [.32E8.0020.0011.30EF][.0000.0128.0002.3099][.32E8.0020.0010.30F7][.0000.0128.0002.3099] # <KATAKANA LETTER VA, KATAKANA VOICED ITERATION MARK>
+30EF 3099 30FE ; [.32E8.0020.0011.30EF][.0000.0128.0002.3099][.32E8.0020.0010.30F7][.0000.0128.0002.3099] # <KATAKANA LETTER WA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF9C FF9E 30FE ; [.32E8.0020.0011.30EF][.0000.0128.0002.3099][.32E8.0020.0010.30F7][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER WA, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+30F8 30FD ; [.32E9.0020.0011.30F0][.0000.0128.0002.3099][.32E9.0020.0010.30F8] # <KATAKANA LETTER VI, KATAKANA ITERATION MARK>
+30F0 3099 30FD ; [.32E9.0020.0011.30F0][.0000.0128.0002.3099][.32E9.0020.0010.30F8] # <KATAKANA LETTER WI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+30F8 30FE ; [.32E9.0020.0011.30F0][.0000.0128.0002.3099][.32E9.0020.0010.30F8][.0000.0128.0002.3099] # <KATAKANA LETTER VI, KATAKANA VOICED ITERATION MARK>
+30F0 3099 30FE ; [.32E9.0020.0011.30F0][.0000.0128.0002.3099][.32E9.0020.0010.30F8][.0000.0128.0002.3099] # <KATAKANA LETTER WI, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+30F9 30FD ; [.32EA.0020.0011.30F1][.0000.0128.0002.3099][.32EA.0020.0010.30F9] # <KATAKANA LETTER VE, KATAKANA ITERATION MARK>
+30F1 3099 30FD ; [.32EA.0020.0011.30F1][.0000.0128.0002.3099][.32EA.0020.0010.30F9] # <KATAKANA LETTER WE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+30F9 30FE ; [.32EA.0020.0011.30F1][.0000.0128.0002.3099][.32EA.0020.0010.30F9][.0000.0128.0002.3099] # <KATAKANA LETTER VE, KATAKANA VOICED ITERATION MARK>
+30F1 3099 30FE ; [.32EA.0020.0011.30F1][.0000.0128.0002.3099][.32EA.0020.0010.30F9][.0000.0128.0002.3099] # <KATAKANA LETTER WE, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+30FA 30FD ; [.32EB.0020.0011.30F2][.0000.0128.0002.3099][.32EB.0020.0010.30FA] # <KATAKANA LETTER VO, KATAKANA ITERATION MARK>
+30F2 3099 30FD ; [.32EB.0020.0011.30F2][.0000.0128.0002.3099][.32EB.0020.0010.30FA] # <KATAKANA LETTER WO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+FF66 FF9E 30FD ; [.32EB.0020.0011.30F2][.0000.0128.0002.3099][.32EB.0020.0010.30FA] # <HALFWIDTH KATAKANA LETTER WO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA ITERATION MARK>
+30FA 30FE ; [.32EB.0020.0011.30F2][.0000.0128.0002.3099][.32EB.0020.0010.30FA][.0000.0128.0002.3099] # <KATAKANA LETTER VO, KATAKANA VOICED ITERATION MARK>
+30F2 3099 30FE ; [.32EB.0020.0011.30F2][.0000.0128.0002.3099][.32EB.0020.0010.30FA][.0000.0128.0002.3099] # <KATAKANA LETTER WO, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+FF66 FF9E 30FE ; [.32EB.0020.0011.30F2][.0000.0128.0002.3099][.32EB.0020.0010.30FA][.0000.0128.0002.3099] # <HALFWIDTH KATAKANA LETTER WO, HALFWIDTH KATAKANA VOICED SOUND MARK, KATAKANA VOICED ITERATION MARK>
+31F0 30FD ; [.32C3.0020.000F.31F0][.32C3.0020.0010.31F0] # <KATAKANA LETTER SMALL KU, KATAKANA ITERATION MARK>
+31F0 30FE ; [.32C3.0020.000F.31F0][.32C3.0020.0010.31F0][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL KU, KATAKANA VOICED ITERATION MARK>
+31F1 30FD ; [.32C7.0020.000F.31F1][.32C7.0020.0010.31F1] # <KATAKANA LETTER SMALL SI, KATAKANA ITERATION MARK>
+31F1 30FE ; [.32C7.0020.000F.31F1][.32C7.0020.0010.31F1][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL SI, KATAKANA VOICED ITERATION MARK>
+31F2 30FD ; [.32C8.0020.000F.31F2][.32C8.0020.0010.31F2] # <KATAKANA LETTER SMALL SU, KATAKANA ITERATION MARK>
+31F2 30FE ; [.32C8.0020.000F.31F2][.32C8.0020.0010.31F2][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL SU, KATAKANA VOICED ITERATION MARK>
+31F3 30FD ; [.32CF.0020.000F.31F3][.32CF.0020.0010.31F3] # <KATAKANA LETTER SMALL TO, KATAKANA ITERATION MARK>
+31F3 30FE ; [.32CF.0020.000F.31F3][.32CF.0020.0010.31F3][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL TO, KATAKANA VOICED ITERATION MARK>
+31F4 30FD ; [.32D2.0020.000F.31F4][.32D2.0020.0010.31F4] # <KATAKANA LETTER SMALL NU, KATAKANA ITERATION MARK>
+31F5 30FD ; [.32D5.0020.000F.31F5][.32D5.0020.0010.31F5] # <KATAKANA LETTER SMALL HA, KATAKANA ITERATION MARK>
+31F5 30FE ; [.32D5.0020.000F.31F5][.32D5.0020.0010.31F5][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL HA, KATAKANA VOICED ITERATION MARK>
+31F6 30FD ; [.32D6.0020.000F.31F6][.32D6.0020.0010.31F6] # <KATAKANA LETTER SMALL HI, KATAKANA ITERATION MARK>
+31F6 30FE ; [.32D6.0020.000F.31F6][.32D6.0020.0010.31F6][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL HI, KATAKANA VOICED ITERATION MARK>
+31F7 30FD ; [.32D7.0020.000F.31F7][.32D7.0020.0010.31F7] # <KATAKANA LETTER SMALL HU, KATAKANA ITERATION MARK>
+31F7 30FE ; [.32D7.0020.000F.31F7][.32D7.0020.0010.31F7][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL HU, KATAKANA VOICED ITERATION MARK>
+31F8 30FD ; [.32D8.0020.000F.31F8][.32D8.0020.0010.31F8] # <KATAKANA LETTER SMALL HE, KATAKANA ITERATION MARK>
+31F8 30FE ; [.32D8.0020.000F.31F8][.32D8.0020.0010.31F8][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL HE, KATAKANA VOICED ITERATION MARK>
+31F9 30FD ; [.32D9.0020.000F.31F9][.32D9.0020.0010.31F9] # <KATAKANA LETTER SMALL HO, KATAKANA ITERATION MARK>
+31F9 30FE ; [.32D9.0020.000F.31F9][.32D9.0020.0010.31F9][.0000.0128.0002.3099] # <KATAKANA LETTER SMALL HO, KATAKANA VOICED ITERATION MARK>
+31FA 30FD ; [.32DC.0020.000F.31FA][.32DC.0020.0010.31FA] # <KATAKANA LETTER SMALL MU, KATAKANA ITERATION MARK>
+31FB 30FD ; [.32E3.0020.000F.31FB][.32E3.0020.0010.31FB] # <KATAKANA LETTER SMALL RA, KATAKANA ITERATION MARK>
+31FC 30FD ; [.32E4.0020.000F.31FC][.32E4.0020.0010.31FC] # <KATAKANA LETTER SMALL RI, KATAKANA ITERATION MARK>
+31FD 30FD ; [.32E5.0020.000F.31FD][.32E5.0020.0010.31FD] # <KATAKANA LETTER SMALL RU, KATAKANA ITERATION MARK>
+31FE 30FD ; [.32E6.0020.000F.31FE][.32E6.0020.0010.31FE] # <KATAKANA LETTER SMALL RE, KATAKANA ITERATION MARK>
+31FF 30FD ; [.32E7.0020.000F.31FF][.32E7.0020.0010.31FF] # <KATAKANA LETTER SMALL RO, KATAKANA ITERATION MARK>
F967 ; [.8961.0020.0002.4E0D] # CJK COMPATIBILITY IDEOGRAPH-F967
FA70 ; [.89AD.0020.0002.4E26] # CJK COMPATIBILITY IDEOGRAPH-FA70
F905 ; [.828D.0020.0002.4E32] # CJK COMPATIBILITY IDEOGRAPH-F905
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kk.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kk.pl
index d2f48fc38d1..234b9cde667 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kk.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kk.pl
@@ -1,53 +1,53 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
0x0416, 0x0436, 0x0417, 0x0437, 0x0406, 0x0456, 0x041E, 0x043E,
0x04E8, 0x04E9, 0x041A, 0x043A, 0x0423, 0x0443, 0x0427, 0x0447,
0x042B, 0x044B, 0x042D, 0x044D, 0x0474, 0x0475],
- entry => <<'ENTRY', # for DUCET v6.1.0
-0451 ; [.19BF.0020.0002.0451] # CYRILLIC SMALL LETTER IO
-0435 0308 ; [.19BF.0020.0002.0451] # CYRILLIC SMALL LETTER IO
-0401 ; [.19BF.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
-0415 0308 ; [.19BF.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
-04AF ; [.1AB3.0020.0002.04AF] # CYRILLIC SMALL LETTER STRAIGHT U
-04AE ; [.1AB3.0020.0008.04AE] # CYRILLIC CAPITAL LETTER STRAIGHT U
-0456 ; [.1B2B.0020.0002.0456] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0406 ; [.1B2B.0020.0008.0406] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-04D1 ; [.1976.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
-04D0 ; [.1976.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D3 ; [.1976.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D2 ; [.1976.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04DB ; [.1982.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DA ; [.1982.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-0453 ; [.1996.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
-0403 ; [.1996.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
-04D7 ; [.19BE.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
-04D6 ; [.19BE.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
-04DD ; [.19CA.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DC ; [.19CA.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DF ; [.19D7.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04DE ; [.19D7.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-0457 ; [.1B2B.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
-0407 ; [.1B2B.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
-04E7 ; [.1A5C.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E6 ; [.1A5C.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04EB ; [.1A64.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EA ; [.1A64.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-045C ; [.1A0D.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
-040C ; [.1A0D.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
-045E ; [.1A9E.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
-040E ; [.1A9E.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
-04F1 ; [.1A9E.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F0 ; [.1A9E.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F3 ; [.1A9E.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F2 ; [.1A9E.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F5 ; [.1AF1.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F4 ; [.1AF1.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F9 ; [.1B24.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-04F8 ; [.1B24.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04ED ; [.1B39.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EC ; [.1B39.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-0477 ; [.1B6F.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0476 ; [.1B6F.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0451 ; [.19DA.0020.0002.0451] # CYRILLIC SMALL LETTER IO
+0435 0308 ; [.19DA.0020.0002.0451] # CYRILLIC SMALL LETTER IO
+0401 ; [.19DA.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
+0415 0308 ; [.19DA.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
+04AF ; [.1ACE.0020.0002.04AF] # CYRILLIC SMALL LETTER STRAIGHT U
+04AE ; [.1ACE.0020.0008.04AE] # CYRILLIC CAPITAL LETTER STRAIGHT U
+0456 ; [.1B46.0020.0002.0456] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0406 ; [.1B46.0020.0008.0406] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+04D1 ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453 ; [.19B1.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.19B1.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+0457 ; [.1B46.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407 ; [.1B46.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+04E7 ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C ; [.1A28.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.1A28.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E ; [.1AB9.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.1AB9.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.1AB9.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.1AB9.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.1AB9.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.1AB9.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5 ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kl.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kl.pl
index 18e0c74f7fa..bf0f293c089 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kl.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kl.pl
@@ -1,73 +1,73 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0111 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0064 0335 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-0044 0335 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-00F0 ; [.1616.0022.0002.00F0] # LATIN SMALL LETTER ETH
-00D0 ; [.1616.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
-0138 ; [.1790.0021.0002.0138] # LATIN SMALL LETTER KRA
-004B 0027 ; [.1790.0021.0008.004B] # <LATIN CAPITAL LETTER K, APOSTROPHE>
-00FE ; [.17FB.0020.0003.00FE][.1699.0020.0003.00FE] # LATIN SMALL LETTER THORN
-00DE ; [.17FB.0020.0009.00DE][.1699.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
-00FC ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.1865.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.1865.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.1865.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.1865.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.1865.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.1865.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.1865.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.1865.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0171 ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0075 030B ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0170 ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0055 030B ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-00E6 ; [.18EB.0020.0002.00E6] # LATIN SMALL LETTER AE
-00C6 ; [.18EB.0020.0008.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.18EB.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.18EB.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.18EB.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.18EB.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.18EB.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
-00E4 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.18EB.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.18EB.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-0119 ; [.18EB.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0065 0328 ; [.18EB.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0118 ; [.18EB.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-0045 0328 ; [.18EB.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-00F8 ; [.18EC.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-006F 0338 ; [.18EC.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.18EC.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-004F 0338 ; [.18EC.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.18EC.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.18EC.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-00F6 ; [.18EC.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.18EC.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.18EC.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.18EC.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.18EC.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.18EC.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-0151 ; [.18EC.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-006F 030B ; [.18EC.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0150 ; [.18EC.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-004F 030B ; [.18EC.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0153 ; [.18EC.0023.0002.0153] # LATIN SMALL LIGATURE OE
-0152 ; [.18EC.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
-00E5 ; [.18ED.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-0061 030A ; [.18ED.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.18ED.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-0041 030A ; [.18ED.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.18ED.0020.0008.00C5] # ANGSTROM SIGN
-01FB ; [.18ED.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.18ED.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0111 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1631.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1631.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+0138 ; [.17AB.0021.0002.0138] # LATIN SMALL LETTER KRA
+004B 0027 ; [.17AB.0021.0008.004B] # <LATIN CAPITAL LETTER K, APOSTROPHE>
+00FE ; [.1816.0020.0003.00FE][.16B4.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.1816.0020.0009.00DE][.16B4.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+00FC ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0171 ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E6 ; [.1906.0020.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1906.0020.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1906.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1906.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1906.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1906.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1906.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00E4 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1906.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1906.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+0119 ; [.1906.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.1906.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.1906.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.1906.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F8 ; [.1907.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1907.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1907.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1907.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1907.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1907.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00F6 ; [.1907.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1907.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1907.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1907.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1907.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1907.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+0151 ; [.1907.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.1907.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.1907.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.1907.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153 ; [.1907.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.1907.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00E5 ; [.1908.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1908.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1908.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1908.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1908.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.1908.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1908.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kn.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kn.pl
index 24e78320475..3527fb2e7d1 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kn.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kn.pl
@@ -1,9 +1,10 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0C82 ; [.21AC.0020.0002.0C82][.FFF1.0000.0000.0000] # KANNADA SIGN ANUSVARA
-0C83 ; [.21AC.0020.0002.0C83][.FFF2.0000.0000.0000] # KANNADA SIGN VISARGA
-0CF1 ; [.21AC.0020.0002.0CF1][.FFF3.0000.0000.0000] # KANNADA SIGN JIHVAMULIYA
-0CF2 ; [.21AC.0020.0002.0CF2][.FFF4.0000.0000.0000] # KANNADA SIGN UPADHMANIYA
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0C82 ; [.21C7.0020.0002.0C82][.FFF1.0000.0000.0000] # KANNADA SIGN ANUSVARA
+0C83 ; [.21C7.0020.0002.0C83][.FFF2.0000.0000.0000] # KANNADA SIGN VISARGA
+0CF1 ; [.21C7.0020.0002.0CF1][.FFF3.0000.0000.0000] # KANNADA SIGN JIHVAMULIYA
+0CF2 ; [.21C7.0020.0002.0CF2][.FFF4.0000.0000.0000] # KANNADA SIGN UPADHMANIYA
+0C94 ; [.21C7.0020.0002.0C94][.FFF0.0000.0000.0000] # KANNADA LETTER AU
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ko.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ko.pl
index fd4610027f9..5fd467f806f 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ko.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ko.pl
@@ -1,647 +1,647 @@
use Unicode::Collate::CJK::Korean;
+{
- locale_version => 0.88,
+ locale_version => 0.93,
overrideCJK => \&Unicode::Collate::CJK::Korean::weightKorean,
- entry => <<'ENTRY', # for DUCET v6.1.0
-F967 ; [.3142.0021.0002.4E0D][.31C6.0020.0002.4E0D] # CJK COMPATIBILITY IDEOGRAPH-F967
-FA70 ; [.3142.0032.0002.4E26][.31BF.0020.0002.4E26][.322B.0020.0002.4E26] # CJK COMPATIBILITY IDEOGRAPH-FA70
-F905 ; [.313B.0021.0002.4E32][.31C1.0020.0002.4E32][.322C.0020.0002.4E32] # CJK COMPATIBILITY IDEOGRAPH-F905
-2F801 ; [.314D.0021.0002.4E38][.31C2.0020.0002.4E38][.321A.0020.0002.4E38] # CJK COMPATIBILITY IDEOGRAPH-2F801
-F95E ; [.313E.0021.0002.4E39][.31B9.0020.0002.4E39][.321A.0020.0002.4E39] # CJK COMPATIBILITY IDEOGRAPH-F95E
-F91B ; [.3140.0021.0002.4E82][.31B9.0020.0002.4E82][.321A.0020.0002.4E82] # CJK COMPATIBILITY IDEOGRAPH-F91B
-F9BA ; [.3140.0021.0002.4E86][.31C5.0020.0002.4E86] # CJK COMPATIBILITY IDEOGRAPH-F9BA
-F977 ; [.3140.0021.0002.4EAE][.31BB.0020.0002.4EAE][.322B.0020.0002.4EAE] # CJK COMPATIBILITY IDEOGRAPH-F977
-F9FD ; [.3144.0021.0002.4EC0][.31CD.0020.0002.4EC0][.3227.0020.0002.4EC0] # CJK COMPATIBILITY IDEOGRAPH-F9FD
-F9A8 ; [.3140.0021.0002.4EE4][.31BF.0020.0002.4EE4][.322B.0020.0002.4EE4] # CJK COMPATIBILITY IDEOGRAPH-F9A8
-F92D ; [.3140.0021.0002.4F86][.31BA.0020.0002.4F86] # CJK COMPATIBILITY IDEOGRAPH-F92D
-F9B5 ; [.3140.0021.0002.4F8B][.31C0.0020.0002.4F8B] # CJK COMPATIBILITY IDEOGRAPH-F9B5
-FA30 ; [.3141.0021.0002.4FAE][.31C1.0020.0002.4FAE] # CJK COMPATIBILITY IDEOGRAPH-FA30
-2F805 ; [.3141.0021.0002.4FAE][.31C1.0020.0002.4FAE] # CJK COMPATIBILITY IDEOGRAPH-2F805
-2F806 ; [.314B.0023.0002.4FBB][.31B9.0020.0002.4FBB][.321E.0020.0002.4FBB] # CJK COMPATIBILITY IDEOGRAPH-2F806
-F965 ; [.314C.0021.0002.4FBF][.31BF.0020.0002.4FBF][.321A.0020.0002.4FBF] # CJK COMPATIBILITY IDEOGRAPH-F965
-2F807 ; [.3142.0022.0002.5002][.31BF.0020.0002.5002][.322B.0020.0002.5002] # CJK COMPATIBILITY IDEOGRAPH-2F807
-F9D4 ; [.3140.0022.0002.502B][.31CA.0020.0002.502B][.321A.0020.0002.502B] # CJK COMPATIBILITY IDEOGRAPH-F9D4
-2F809 ; [.3142.0022.0002.5099][.31CD.0020.0002.5099] # CJK COMPATIBILITY IDEOGRAPH-2F809
-2F80B ; [.3144.0023.0002.50CF][.31B9.0020.0002.50CF][.322B.0020.0002.50CF] # CJK COMPATIBILITY IDEOGRAPH-2F80B
-F9BB ; [.3140.0022.0002.50DA][.31C5.0020.0002.50DA] # CJK COMPATIBILITY IDEOGRAPH-F9BB
-FA31 ; [.3144.0023.0002.50E7][.31CB.0020.0002.50E7][.322B.0020.0002.50E7] # CJK COMPATIBILITY IDEOGRAPH-FA31
-2F80A ; [.3144.0023.0002.50E7][.31CB.0020.0002.50E7][.322B.0020.0002.50E7] # CJK COMPATIBILITY IDEOGRAPH-2F80A
-FA0C ; [.3146.0021.0002.5140][.31C1.0020.0002.5140][.321E.0020.0002.5140] # CJK COMPATIBILITY IDEOGRAPH-FA0C
-FA74 ; [.3149.0021.0002.5145][.31C6.0020.0002.5145][.322B.0020.0002.5145] # CJK COMPATIBILITY IDEOGRAPH-FA74
-FA32 ; [.3141.0021.0002.514D][.31BF.0020.0002.514D][.321A.0020.0002.514D] # CJK COMPATIBILITY IDEOGRAPH-FA32
-2F80E ; [.3141.0021.0002.514D][.31BF.0020.0002.514D][.321A.0020.0002.514D] # CJK COMPATIBILITY IDEOGRAPH-2F80E
-2F814 ; [.313D.0022.0002.5167][.31BA.0020.0002.5167] # CJK COMPATIBILITY IDEOGRAPH-2F814
-FA72 ; [.3147.0024.0002.5168][.31BD.0020.0002.5168][.321A.0020.0002.5168] # CJK COMPATIBILITY IDEOGRAPH-FA72
-F978 ; [.3140.0023.0002.5169][.31BB.0020.0002.5169][.322B.0020.0002.5169] # CJK COMPATIBILITY IDEOGRAPH-F978
-F9D1 ; [.3140.0021.0002.516D][.31CA.0020.0002.516D][.3217.0020.0002.516D] # CJK COMPATIBILITY IDEOGRAPH-F9D1
-2F811 ; [.313B.0026.0002.5177][.31C6.0020.0002.5177] # CJK COMPATIBILITY IDEOGRAPH-2F811
-FA75 ; [.313B.0024.0002.5180][.31CD.0020.0002.5180] # CJK COMPATIBILITY IDEOGRAPH-FA75
-2F815 ; [.3147.0021.0002.518D][.31BA.0020.0002.518D] # CJK COMPATIBILITY IDEOGRAPH-2F815
-2F8D2 ; [.3141.0022.0002.5192][.31C1.0020.0002.5192] # CJK COMPATIBILITY IDEOGRAPH-2F8D2
-2F8D3 ; [.3141.0022.0002.5195][.31BF.0020.0002.5195][.321A.0020.0002.5195] # CJK COMPATIBILITY IDEOGRAPH-2F8D3
-2F817 ; [.3146.0023.0002.5197][.31C5.0020.0002.5197][.322B.0020.0002.5197] # CJK COMPATIBILITY IDEOGRAPH-2F817
-2F818 ; [.3146.003B.0002.51A4][.31C7.0020.0002.51A4][.321A.0020.0002.51A4] # CJK COMPATIBILITY IDEOGRAPH-2F818
-2F81A ; [.313E.0022.0002.51AC][.31C1.0020.0002.51AC][.322B.0020.0002.51AC] # CJK COMPATIBILITY IDEOGRAPH-2F81A
-F92E ; [.3140.0021.0002.51B7][.31BA.0020.0002.51B7][.322B.0020.0002.51B7] # CJK COMPATIBILITY IDEOGRAPH-F92E
-F979 ; [.3140.0024.0002.51C9][.31BB.0020.0002.51C9][.322B.0020.0002.51C9] # CJK COMPATIBILITY IDEOGRAPH-F979
-F955 ; [.3140.0021.0002.51CC][.31CB.0020.0002.51CC][.322B.0020.0002.51CC] # CJK COMPATIBILITY IDEOGRAPH-F955
-F954 ; [.3140.0021.0002.51DC][.31CB.0020.0002.51DC][.3226.0020.0002.51DC] # CJK COMPATIBILITY IDEOGRAPH-F954
-FA15 ; [.314D.0022.0002.51DE][.31CC.0020.0002.51DE] # CJK COMPATIBILITY IDEOGRAPH-FA15
-2F81E ; [.3146.0023.0002.5203][.31CD.0020.0002.5203][.321A.0020.0002.5203] # CJK COMPATIBILITY IDEOGRAPH-2F81E
-FA00 ; [.3147.0021.0002.5207][.31BD.0020.0002.5207][.321E.0020.0002.5207] # CJK COMPATIBILITY IDEOGRAPH-FA00
-2F850 ; [.3147.0021.0002.5207][.31BD.0020.0002.5207][.321E.0020.0002.5207] # CJK COMPATIBILITY IDEOGRAPH-2F850
-F99C ; [.3140.0022.0002.5217][.31BF.0020.0002.5217][.321E.0020.0002.5217] # CJK COMPATIBILITY IDEOGRAPH-F99C
-F9DD ; [.3140.0022.0002.5229][.31CD.0020.0002.5229] # CJK COMPATIBILITY IDEOGRAPH-F9DD
-F9FF ; [.3147.0022.0002.523A][.31B9.0020.0002.523A] # CJK COMPATIBILITY IDEOGRAPH-F9FF
-2F820 ; [.313B.0021.0002.523B][.31B9.0020.0002.523B][.3217.0020.0002.523B] # CJK COMPATIBILITY IDEOGRAPH-2F820
-2F822 ; [.314D.0021.0002.5272][.31B9.0020.0002.5272][.321E.0020.0002.5272] # CJK COMPATIBILITY IDEOGRAPH-2F822
-2F823 ; [.3144.002D.0002.5277][.31B9.0020.0002.5277][.321A.0020.0002.5277] # CJK COMPATIBILITY IDEOGRAPH-2F823
-F9C7 ; [.3140.0021.0002.5289][.31CA.0020.0002.5289] # CJK COMPATIBILITY IDEOGRAPH-F9C7
-F98A ; [.3140.0021.0002.529B][.31BF.0020.0002.529B][.3217.0020.0002.529B] # CJK COMPATIBILITY IDEOGRAPH-F98A
-F99D ; [.3140.0023.0002.52A3][.31BF.0020.0002.52A3][.321E.0020.0002.52A3] # CJK COMPATIBILITY IDEOGRAPH-F99D
-FA76 ; [.3146.0024.0002.52C7][.31C5.0020.0002.52C7][.322B.0020.0002.52C7] # CJK COMPATIBILITY IDEOGRAPH-FA76
-2F825 ; [.3146.0024.0002.52C7][.31C5.0020.0002.52C7][.322B.0020.0002.52C7] # CJK COMPATIBILITY IDEOGRAPH-2F825
-FA33 ; [.3141.0023.0002.52C9][.31BF.0020.0002.52C9][.321A.0020.0002.52C9] # CJK COMPATIBILITY IDEOGRAPH-FA33
-2F826 ; [.3141.0023.0002.52C9][.31BF.0020.0002.52C9][.321A.0020.0002.52C9] # CJK COMPATIBILITY IDEOGRAPH-2F826
-F952 ; [.3140.0021.0002.52D2][.31CB.0020.0002.52D2][.3217.0020.0002.52D2] # CJK COMPATIBILITY IDEOGRAPH-F952
-F92F ; [.3140.0021.0002.52DE][.31C1.0020.0002.52DE] # CJK COMPATIBILITY IDEOGRAPH-F92F
-FA34 ; [.313B.0023.0002.52E4][.31CB.0020.0002.52E4][.321A.0020.0002.52E4] # CJK COMPATIBILITY IDEOGRAPH-FA34
-2F827 ; [.313B.0023.0002.52E4][.31CB.0020.0002.52E4][.321A.0020.0002.52E4] # CJK COMPATIBILITY IDEOGRAPH-2F827
-F97F ; [.3140.0023.0002.52F5][.31BF.0020.0002.52F5] # CJK COMPATIBILITY IDEOGRAPH-F97F
-FA77 ; [.3147.0022.0002.52FA][.31B9.0020.0002.52FA][.3217.0020.0002.52FA] # CJK COMPATIBILITY IDEOGRAPH-FA77
-2F828 ; [.3147.0022.0002.52FA][.31B9.0020.0002.52FA][.3217.0020.0002.52FA] # CJK COMPATIBILITY IDEOGRAPH-2F828
-2F829 ; [.314C.0022.0002.5305][.31C1.0020.0002.5305] # CJK COMPATIBILITY IDEOGRAPH-2F829
-F963 ; [.3142.0021.0002.5317][.31C6.0020.0002.5317][.3217.0020.0002.5317] # CJK COMPATIBILITY IDEOGRAPH-F963
-2F82B ; [.3142.0021.0002.5317][.31C6.0020.0002.5317][.3217.0020.0002.5317] # CJK COMPATIBILITY IDEOGRAPH-2F82B
-F9EB ; [.313D.0021.0002.533F][.31CD.0020.0002.533F][.3217.0020.0002.533F] # CJK COMPATIBILITY IDEOGRAPH-F9EB
-2F82C ; [.314D.0021.0002.5349][.31C8.0020.0002.5349] # CJK COMPATIBILITY IDEOGRAPH-2F82C
-FA35 ; [.3142.0025.0002.5351][.31CD.0020.0002.5351] # CJK COMPATIBILITY IDEOGRAPH-FA35
-2F82D ; [.3142.0025.0002.5351][.31CD.0020.0002.5351] # CJK COMPATIBILITY IDEOGRAPH-2F82D
-2F82E ; [.3142.0022.0002.535A][.31B9.0020.0002.535A][.3217.0020.0002.535A] # CJK COMPATIBILITY IDEOGRAPH-2F82E
-2F82F ; [.3147.0022.0002.5373][.31CB.0020.0002.5373][.3217.0020.0002.5373] # CJK COMPATIBILITY IDEOGRAPH-2F82F
-F91C ; [.3140.0022.0002.5375][.31B9.0020.0002.5375][.321A.0020.0002.5375] # CJK COMPATIBILITY IDEOGRAPH-F91C
-2F830 ; [.3147.0021.0002.537D][.31CB.0020.0002.537D][.3217.0020.0002.537D] # CJK COMPATIBILITY IDEOGRAPH-2F830
-2F831 ; [.313B.0028.0002.537F][.31BF.0020.0002.537F][.322B.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F831
-2F832 ; [.313B.0028.0002.537F][.31BF.0020.0002.537F][.322B.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F832
-2F833 ; [.313B.0028.0002.537F][.31BF.0020.0002.537F][.322B.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F833
-F96B ; [.3149.0022.0002.53C3][.31B9.0020.0002.53C3][.3226.0020.0002.53C3] # CJK COMPATIBILITY IDEOGRAPH-F96B
-2F836 ; [.313B.0022.0002.53CA][.31CB.0020.0002.53CA][.3227.0020.0002.53CA] # CJK COMPATIBILITY IDEOGRAPH-2F836
-2F837 ; [.3144.005E.0002.53DF][.31C6.0020.0002.53DF] # CJK COMPATIBILITY IDEOGRAPH-2F837
-F906 ; [.313B.002A.0002.53E5][.31C6.0020.0002.53E5] # CJK COMPATIBILITY IDEOGRAPH-F906
-2F839 ; [.313B.0021.0002.53EB][.31CA.0020.0002.53EB] # CJK COMPATIBILITY IDEOGRAPH-2F839
-2F83A ; [.3147.0022.0002.53F1][.31CD.0020.0002.53F1][.321E.0020.0002.53F1] # CJK COMPATIBILITY IDEOGRAPH-2F83A
-F9DE ; [.3140.0024.0002.540F][.31CD.0020.0002.540F] # CJK COMPATIBILITY IDEOGRAPH-F9DE
-F9ED ; [.3140.0021.0002.541D][.31CD.0020.0002.541D][.321A.0020.0002.541D] # CJK COMPATIBILITY IDEOGRAPH-F9ED
-2F83D ; [.314D.0021.0002.5438][.31CB.0020.0002.5438][.3227.0020.0002.5438] # CJK COMPATIBILITY IDEOGRAPH-2F83D
-F980 ; [.3140.0024.0002.5442][.31BF.0020.0002.5442] # CJK COMPATIBILITY IDEOGRAPH-F980
-2F83E ; [.3147.0026.0002.5448][.31BD.0020.0002.5448][.322B.0020.0002.5448] # CJK COMPATIBILITY IDEOGRAPH-2F83E
-2F83F ; [.3147.0028.0002.5468][.31C6.0020.0002.5468] # CJK COMPATIBILITY IDEOGRAPH-2F83F
-2F840 ; [.3146.0031.0002.54A2][.31B9.0020.0002.54A2][.3217.0020.0002.54A2] # CJK COMPATIBILITY IDEOGRAPH-2F840
-F99E ; [.3146.0025.0002.54BD][.31CD.0020.0002.54BD][.321A.0020.0002.54BD] # CJK COMPATIBILITY IDEOGRAPH-F99E
-2F842 ; [.313E.0021.0002.5510][.31B9.0020.0002.5510][.322B.0020.0002.5510] # CJK COMPATIBILITY IDEOGRAPH-2F842
-2F843 ; [.313B.0022.0002.5553][.31C0.0020.0002.5553] # CJK COMPATIBILITY IDEOGRAPH-2F843
-2F844 ; [.314D.0024.0002.5563][.31B9.0020.0002.5563][.3226.0020.0002.5563] # CJK COMPATIBILITY IDEOGRAPH-2F844
-2F845 ; [.3144.0024.0002.5584][.31BD.0020.0002.5584][.321A.0020.0002.5584] # CJK COMPATIBILITY IDEOGRAPH-2F845
-2F846 ; [.3144.0024.0002.5584][.31BD.0020.0002.5584][.321A.0020.0002.5584] # CJK COMPATIBILITY IDEOGRAPH-2F846
-F90B ; [.3140.0021.0002.5587][.31B9.0020.0002.5587] # CJK COMPATIBILITY IDEOGRAPH-F90B
-FA7A ; [.314D.0022.0002.5599][.31C8.0020.0002.5599] # CJK COMPATIBILITY IDEOGRAPH-FA7A
-2F847 ; [.314D.0022.0002.5599][.31C8.0020.0002.5599] # CJK COMPATIBILITY IDEOGRAPH-2F847
-FA36 ; [.313B.0022.0002.559D][.31B9.0020.0002.559D][.321E.0020.0002.559D] # CJK COMPATIBILITY IDEOGRAPH-FA36
-FA78 ; [.313B.0022.0002.559D][.31B9.0020.0002.559D][.321E.0020.0002.559D] # CJK COMPATIBILITY IDEOGRAPH-FA78
-2F848 ; [.313C.0021.0002.55AB][.31CD.0020.0002.55AB][.3217.0020.0002.55AB] # CJK COMPATIBILITY IDEOGRAPH-2F848
-FA7B ; [.3146.0022.0002.55E2][.31C1.0020.0002.55E2][.321E.0020.0002.55E2] # CJK COMPATIBILITY IDEOGRAPH-FA7B
-FA37 ; [.314B.0022.0002.5606][.31B9.0020.0002.5606][.321A.0020.0002.5606] # CJK COMPATIBILITY IDEOGRAPH-FA37
-2F84C ; [.314B.0022.0002.5606][.31B9.0020.0002.5606][.321A.0020.0002.5606] # CJK COMPATIBILITY IDEOGRAPH-2F84C
-FA38 ; [.313B.0026.0002.5668][.31CD.0020.0002.5668] # CJK COMPATIBILITY IDEOGRAPH-FA38
-2F84F ; [.3142.0023.0002.5674][.31C6.0020.0002.5674][.321A.0020.0002.5674] # CJK COMPATIBILITY IDEOGRAPH-2F84F
-F9A9 ; [.3140.0023.0002.56F9][.31BF.0020.0002.56F9][.322B.0020.0002.56F9] # CJK COMPATIBILITY IDEOGRAPH-F9A9
-2F84B ; [.313E.0024.0002.5716][.31C1.0020.0002.5716] # CJK COMPATIBILITY IDEOGRAPH-2F84B
-2F855 ; [.314D.0024.0002.578B][.31BF.0020.0002.578B][.322B.0020.0002.578B] # CJK COMPATIBILITY IDEOGRAPH-2F855
-2F852 ; [.3144.0021.0002.57CE][.31BD.0020.0002.57CE][.322B.0020.0002.57CE] # CJK COMPATIBILITY IDEOGRAPH-2F852
-2F853 ; [.3144.0021.0002.57F4][.31CD.0020.0002.57F4][.3217.0020.0002.57F4] # CJK COMPATIBILITY IDEOGRAPH-2F853
-2F857 ; [.3142.0023.0002.5831][.31C1.0020.0002.5831] # CJK COMPATIBILITY IDEOGRAPH-2F857
-FA39 ; [.3142.0033.0002.5840][.31BF.0020.0002.5840][.322B.0020.0002.5840] # CJK COMPATIBILITY IDEOGRAPH-FA39
-FA10 ; [.3149.0022.0002.585A][.31C1.0020.0002.585A][.322B.0020.0002.585A] # CJK COMPATIBILITY IDEOGRAPH-FA10
-FA7C ; [.3149.0022.0002.585A][.31C1.0020.0002.585A][.322B.0020.0002.585A] # CJK COMPATIBILITY IDEOGRAPH-FA7C
-F96C ; [.3144.0021.0002.585E][.31BA.0020.0002.585E] # CJK COMPATIBILITY IDEOGRAPH-F96C
-FA3A ; [.3141.0021.0002.58A8][.31C6.0020.0002.58A8][.3217.0020.0002.58A8] # CJK COMPATIBILITY IDEOGRAPH-FA3A
-FA7D ; [.3142.0024.0002.58B3][.31C6.0020.0002.58B3][.321A.0020.0002.58B3] # CJK COMPATIBILITY IDEOGRAPH-FA7D
-F94A ; [.3140.0021.0002.58D8][.31C6.0020.0002.58D8] # CJK COMPATIBILITY IDEOGRAPH-F94A
-F942 ; [.3140.0021.0002.58DF][.31C1.0020.0002.58DF][.322B.0020.0002.58DF] # CJK COMPATIBILITY IDEOGRAPH-F942
-2F85C ; [.3142.0032.0002.5906][.31C1.0020.0002.5906][.322B.0020.0002.5906] # CJK COMPATIBILITY IDEOGRAPH-2F85C
-2F85D ; [.313E.0021.0002.591A][.31B9.0020.0002.591A] # CJK COMPATIBILITY IDEOGRAPH-2F85D
-2F85E ; [.3141.0021.0002.5922][.31C1.0020.0002.5922][.322B.0020.0002.5922] # CJK COMPATIBILITY IDEOGRAPH-2F85E
-FA7E ; [.3146.0024.0002.5944][.31BD.0020.0002.5944][.3226.0020.0002.5944] # CJK COMPATIBILITY IDEOGRAPH-FA7E
-F90C ; [.313D.0023.0002.5948][.31BA.0020.0002.5948] # CJK COMPATIBILITY IDEOGRAPH-F90C
-F909 ; [.313B.0024.0002.5951][.31C0.0020.0002.5951] # CJK COMPATIBILITY IDEOGRAPH-F909
-FA7F ; [.3142.0025.0002.5954][.31C6.0020.0002.5954][.321A.0020.0002.5954] # CJK COMPATIBILITY IDEOGRAPH-FA7F
-2F85F ; [.3144.0030.0002.5962][.31B9.0020.0002.5962] # CJK COMPATIBILITY IDEOGRAPH-2F85F
-F981 ; [.313D.0021.0002.5973][.31BF.0020.0002.5973] # CJK COMPATIBILITY IDEOGRAPH-F981
-2F862 ; [.314D.0026.0002.59EC][.31CC.0020.0002.59EC] # CJK COMPATIBILITY IDEOGRAPH-2F862
-2F863 ; [.3146.002C.0002.5A1B][.31C1.0020.0002.5A1B] # CJK COMPATIBILITY IDEOGRAPH-2F863
-2F864 ; [.314B.0030.0002.5A27][.31BA.0020.0002.5A27] # CJK COMPATIBILITY IDEOGRAPH-2F864
-FA80 ; [.3142.0027.0002.5A62][.31CD.0020.0002.5A62] # CJK COMPATIBILITY IDEOGRAPH-FA80
-2F866 ; [.3142.002B.0002.5A66][.31C6.0020.0002.5A66] # CJK COMPATIBILITY IDEOGRAPH-2F866
-2F986 ; [.3146.0025.0002.5AB5][.31CD.0020.0002.5AB5][.322B.0020.0002.5AB5] # CJK COMPATIBILITY IDEOGRAPH-2F986
-2F869 ; [.3146.0041.0002.5B08][.31C5.0020.0002.5B08] # CJK COMPATIBILITY IDEOGRAPH-2F869
-FA81 ; [.3147.003C.0002.5B28][.31B9.0020.0002.5B28] # CJK COMPATIBILITY IDEOGRAPH-FA81
-2F86A ; [.3140.0029.0002.5B3E][.31B9.0020.0002.5B3E][.321A.0020.0002.5B3E] # CJK COMPATIBILITY IDEOGRAPH-2F86A
-2F86B ; [.3140.0029.0002.5B3E][.31B9.0020.0002.5B3E][.321A.0020.0002.5B3E] # CJK COMPATIBILITY IDEOGRAPH-2F86B
-FA04 ; [.313E.0021.0002.5B85][.31BA.0020.0002.5B85][.3217.0020.0002.5B85] # CJK COMPATIBILITY IDEOGRAPH-FA04
-2F86D ; [.3146.0029.0002.5BC3][.31C7.0020.0002.5BC3][.321A.0020.0002.5BC3] # CJK COMPATIBILITY IDEOGRAPH-2F86D
-2F86E ; [.3149.003B.0002.5BD8][.31CD.0020.0002.5BD8] # CJK COMPATIBILITY IDEOGRAPH-2F86E
-F95F ; [.313D.0021.0002.5BE7][.31BF.0020.0002.5BE7][.322B.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-F95F
-F9AA ; [.313D.0021.0002.5BE7][.31BF.0020.0002.5BE7][.322B.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-F9AA
-2F86F ; [.313D.0021.0002.5BE7][.31BF.0020.0002.5BE7][.322B.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-2F86F
-F9BC ; [.3140.0023.0002.5BEE][.31C5.0020.0002.5BEE] # CJK COMPATIBILITY IDEOGRAPH-F9BC
-F9BD ; [.313D.0021.0002.5C3F][.31C5.0020.0002.5C3F] # CJK COMPATIBILITY IDEOGRAPH-F9BD
-2F877 ; [.313E.0028.0002.5C60][.31C1.0020.0002.5C60] # CJK COMPATIBILITY IDEOGRAPH-2F877
-F94B ; [.3140.0023.0002.5C62][.31C6.0020.0002.5C62] # CJK COMPATIBILITY IDEOGRAPH-F94B
-FA3B ; [.3149.0021.0002.5C64][.31CB.0020.0002.5C64][.322B.0020.0002.5C64] # CJK COMPATIBILITY IDEOGRAPH-FA3B
-F9DF ; [.3140.0026.0002.5C65][.31CD.0020.0002.5C65] # CJK COMPATIBILITY IDEOGRAPH-F9DF
-2F879 ; [.3144.002A.0002.5CC0][.31C6.0020.0002.5CC0] # CJK COMPATIBILITY IDEOGRAPH-2F879
-F9D5 ; [.3140.0023.0002.5D19][.31CA.0020.0002.5D19][.321A.0020.0002.5D19] # CJK COMPATIBILITY IDEOGRAPH-F9D5
-F921 ; [.3140.0021.0002.5D50][.31B9.0020.0002.5D50][.3226.0020.0002.5D50] # CJK COMPATIBILITY IDEOGRAPH-F921
-F9AB ; [.3140.0025.0002.5DBA][.31BF.0020.0002.5DBA][.322B.0020.0002.5DBA] # CJK COMPATIBILITY IDEOGRAPH-F9AB
-2F881 ; [.3144.0021.0002.5DE1][.31C6.0020.0002.5DE1][.321A.0020.0002.5DE1] # CJK COMPATIBILITY IDEOGRAPH-2F881
-2F882 ; [.3144.0027.0002.5DE2][.31C1.0020.0002.5DE2] # CJK COMPATIBILITY IDEOGRAPH-2F882
-2F884 ; [.3144.0022.0002.5DFD][.31C1.0020.0002.5DFD][.321A.0020.0002.5DFD] # CJK COMPATIBILITY IDEOGRAPH-2F884
-2F885 ; [.3144.0029.0002.5E28][.31BE.0020.0002.5E28] # CJK COMPATIBILITY IDEOGRAPH-2F885
-2F886 ; [.3141.0025.0002.5E3D][.31C1.0020.0002.5E3D] # CJK COMPATIBILITY IDEOGRAPH-2F886
-F98E ; [.313D.0021.0002.5E74][.31BF.0020.0002.5E74][.321A.0020.0002.5E74] # CJK COMPATIBILITY IDEOGRAPH-F98E
-FA01 ; [.313E.002B.0002.5EA6][.31C1.0020.0002.5EA6] # CJK COMPATIBILITY IDEOGRAPH-FA01
-2F88C ; [.3142.0052.0002.5EB3][.31CD.0020.0002.5EB3] # CJK COMPATIBILITY IDEOGRAPH-2F88C
-2F88D ; [.3144.0025.0002.5EB6][.31BD.0020.0002.5EB6] # CJK COMPATIBILITY IDEOGRAPH-2F88D
-F9A2 ; [.3140.0021.0002.5EC9][.31BF.0020.0002.5EC9][.3226.0020.0002.5EC9] # CJK COMPATIBILITY IDEOGRAPH-F9A2
-F928 ; [.3140.0021.0002.5ECA][.31B9.0020.0002.5ECA][.322B.0020.0002.5ECA] # CJK COMPATIBILITY IDEOGRAPH-F928
-2F88E ; [.3140.0021.0002.5ECA][.31B9.0020.0002.5ECA][.322B.0020.0002.5ECA] # CJK COMPATIBILITY IDEOGRAPH-2F88E
-FA0B ; [.313B.0021.0002.5ED3][.31C2.0020.0002.5ED3][.3217.0020.0002.5ED3] # CJK COMPATIBILITY IDEOGRAPH-FA0B
-F982 ; [.3140.0025.0002.5EEC][.31BF.0020.0002.5EEC] # CJK COMPATIBILITY IDEOGRAPH-F982
-F943 ; [.3140.0022.0002.5F04][.31C1.0020.0002.5F04][.322B.0020.0002.5F04] # CJK COMPATIBILITY IDEOGRAPH-F943
-2F894 ; [.313E.004B.0002.5F22][.31C1.0020.0002.5F22] # CJK COMPATIBILITY IDEOGRAPH-2F894
-2F895 ; [.313E.004B.0002.5F22][.31C1.0020.0002.5F22] # CJK COMPATIBILITY IDEOGRAPH-2F895
-2F899 ; [.314D.0025.0002.5F62][.31BF.0020.0002.5F62][.322B.0020.0002.5F62] # CJK COMPATIBILITY IDEOGRAPH-2F899
-FA84 ; [.3149.0025.0002.5F69][.31BA.0020.0002.5F69] # CJK COMPATIBILITY IDEOGRAPH-FA84
-2F89A ; [.3147.0027.0002.5F6B][.31C1.0020.0002.5F6B] # CJK COMPATIBILITY IDEOGRAPH-2F89A
-F9D8 ; [.3140.0021.0002.5F8B][.31CA.0020.0002.5F8B][.321E.0020.0002.5F8B] # CJK COMPATIBILITY IDEOGRAPH-F9D8
-F966 ; [.3142.0026.0002.5FA9][.31C1.0020.0002.5FA9][.3217.0020.0002.5FA9] # CJK COMPATIBILITY IDEOGRAPH-F966
-FA85 ; [.3146.0043.0002.5FAD][.31C5.0020.0002.5FAD] # CJK COMPATIBILITY IDEOGRAPH-FA85
-2F89D ; [.3146.002A.0002.5FCD][.31CD.0020.0002.5FCD][.321A.0020.0002.5FCD] # CJK COMPATIBILITY IDEOGRAPH-2F89D
-2F89E ; [.3147.0026.0002.5FD7][.31CD.0020.0002.5FD7] # CJK COMPATIBILITY IDEOGRAPH-2F89E
-F9A3 ; [.313D.0021.0002.5FF5][.31BF.0020.0002.5FF5][.3226.0020.0002.5FF5] # CJK COMPATIBILITY IDEOGRAPH-F9A3
-F960 ; [.313D.0024.0002.6012][.31C1.0020.0002.6012] # CJK COMPATIBILITY IDEOGRAPH-F960
-F9AC ; [.3140.0026.0002.601C][.31BF.0020.0002.601C][.322B.0020.0002.601C] # CJK COMPATIBILITY IDEOGRAPH-F9AC
-2F8A0 ; [.3146.0042.0002.6081][.31BF.0020.0002.6081][.321A.0020.0002.6081] # CJK COMPATIBILITY IDEOGRAPH-2F8A0
-FA3D ; [.314D.0026.0002.6094][.31C4.0020.0002.6094] # CJK COMPATIBILITY IDEOGRAPH-FA3D
-2F8A3 ; [.314D.0026.0002.6094][.31C4.0020.0002.6094] # CJK COMPATIBILITY IDEOGRAPH-2F8A3
-2F8A5 ; [.313E.0022.0002.60C7][.31C1.0020.0002.60C7][.321A.0020.0002.60C7] # CJK COMPATIBILITY IDEOGRAPH-2F8A5
-FA86 ; [.3141.002D.0002.60D8][.31B9.0020.0002.60D8][.322B.0020.0002.60D8] # CJK COMPATIBILITY IDEOGRAPH-FA86
-F9B9 ; [.3146.0025.0002.60E1][.31B9.0020.0002.60E1][.3217.0020.0002.60E1] # CJK COMPATIBILITY IDEOGRAPH-F9B9
-FA88 ; [.3146.002E.0002.6108][.31CA.0020.0002.6108] # CJK COMPATIBILITY IDEOGRAPH-FA88
-F9D9 ; [.3140.0022.0002.6144][.31CA.0020.0002.6144][.321E.0020.0002.6144] # CJK COMPATIBILITY IDEOGRAPH-F9D9
-2F8A6 ; [.3147.002A.0002.6148][.31B9.0020.0002.6148] # CJK COMPATIBILITY IDEOGRAPH-2F8A6
-2F8A7 ; [.314D.0027.0002.614C][.31C2.0020.0002.614C][.322B.0020.0002.614C] # CJK COMPATIBILITY IDEOGRAPH-2F8A7
-2F8A9 ; [.314D.0027.0002.614C][.31C2.0020.0002.614C][.322B.0020.0002.614C] # CJK COMPATIBILITY IDEOGRAPH-2F8A9
-FA8A ; [.3146.0047.0002.6160][.31C1.0020.0002.6160] # CJK COMPATIBILITY IDEOGRAPH-FA8A
-FA3E ; [.313B.0028.0002.6168][.31BA.0020.0002.6168] # CJK COMPATIBILITY IDEOGRAPH-FA3E
-2F8AA ; [.3140.0031.0002.617A][.31C6.0020.0002.617A] # CJK COMPATIBILITY IDEOGRAPH-2F8AA
-FA3F ; [.3147.0022.0002.618E][.31CB.0020.0002.618E][.322B.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-FA3F
-FA89 ; [.3147.0022.0002.618E][.31CB.0020.0002.618E][.322B.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-FA89
-2F8AB ; [.3147.0022.0002.618E][.31CB.0020.0002.618E][.322B.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-2F8AB
-F98F ; [.3140.0021.0002.6190][.31BF.0020.0002.6190][.321A.0020.0002.6190] # CJK COMPATIBILITY IDEOGRAPH-F98F
-2F8AD ; [.3142.0028.0002.61A4][.31C6.0020.0002.61A4][.321A.0020.0002.61A4] # CJK COMPATIBILITY IDEOGRAPH-2F8AD
-2F8AE ; [.3149.0030.0002.61AF][.31B9.0020.0002.61AF][.3226.0020.0002.61AF] # CJK COMPATIBILITY IDEOGRAPH-2F8AE
-2F8AC ; [.314D.0021.0002.61B2][.31BD.0020.0002.61B2][.321A.0020.0002.61B2] # CJK COMPATIBILITY IDEOGRAPH-2F8AC
-2F8AF ; [.3141.0025.0002.61DE][.31C1.0020.0002.61DE][.322B.0020.0002.61DE] # CJK COMPATIBILITY IDEOGRAPH-2F8AF
-FA40 ; [.3147.0022.0002.61F2][.31CD.0020.0002.61F2][.322B.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-FA40
-FA8B ; [.3147.0022.0002.61F2][.31CD.0020.0002.61F2][.322B.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-FA8B
-2F8B0 ; [.3147.0022.0002.61F2][.31CD.0020.0002.61F2][.322B.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-2F8B0
-F90D ; [.3140.0022.0002.61F6][.31B9.0020.0002.61F6] # CJK COMPATIBILITY IDEOGRAPH-F90D
-2F8B1 ; [.3140.0022.0002.61F6][.31B9.0020.0002.61F6] # CJK COMPATIBILITY IDEOGRAPH-2F8B1
-F990 ; [.3140.0022.0002.6200][.31BF.0020.0002.6200][.321A.0020.0002.6200] # CJK COMPATIBILITY IDEOGRAPH-F990
-2F8B2 ; [.3144.0026.0002.6210][.31BD.0020.0002.6210][.322B.0020.0002.6210] # CJK COMPATIBILITY IDEOGRAPH-2F8B2
-F9D2 ; [.3140.0022.0002.622E][.31CA.0020.0002.622E][.3217.0020.0002.622E] # CJK COMPATIBILITY IDEOGRAPH-F9D2
-FA8C ; [.313E.0029.0002.6234][.31BA.0020.0002.6234] # CJK COMPATIBILITY IDEOGRAPH-FA8C
-2F8B5 ; [.314C.002B.0002.62B1][.31C1.0020.0002.62B1] # CJK COMPATIBILITY IDEOGRAPH-2F8B5
-F925 ; [.3140.0021.0002.62C9][.31B9.0020.0002.62C9][.3227.0020.0002.62C9] # CJK COMPATIBILITY IDEOGRAPH-F925
-F95B ; [.313D.0024.0002.62CF][.31B9.0020.0002.62CF] # CJK COMPATIBILITY IDEOGRAPH-F95B
-FA02 ; [.3149.0026.0002.62D3][.31BD.0020.0002.62D3][.3217.0020.0002.62D3] # CJK COMPATIBILITY IDEOGRAPH-FA02
-2F8B6 ; [.3142.0022.0002.62D4][.31B9.0020.0002.62D4][.321E.0020.0002.62D4] # CJK COMPATIBILITY IDEOGRAPH-2F8B6
-F973 ; [.3144.0022.0002.62FE][.31CB.0020.0002.62FE][.3227.0020.0002.62FE] # CJK COMPATIBILITY IDEOGRAPH-F973
-2F8B9 ; [.3141.0027.0002.633D][.31B9.0020.0002.633D][.321A.0020.0002.633D] # CJK COMPATIBILITY IDEOGRAPH-2F8B9
-2F8B7 ; [.3146.0027.0002.6350][.31BF.0020.0002.6350][.321A.0020.0002.6350] # CJK COMPATIBILITY IDEOGRAPH-2F8B7
-2F8BB ; [.3144.0039.0002.6368][.31B9.0020.0002.6368] # CJK COMPATIBILITY IDEOGRAPH-2F8BB
-F9A4 ; [.313D.0024.0002.637B][.31BF.0020.0002.637B][.3226.0020.0002.637B] # CJK COMPATIBILITY IDEOGRAPH-F9A4
-2F8BC ; [.3144.0029.0002.6383][.31C1.0020.0002.6383] # CJK COMPATIBILITY IDEOGRAPH-2F8BC
-F975 ; [.3140.0021.0002.63A0][.31BB.0020.0002.63A0][.3217.0020.0002.63A0] # CJK COMPATIBILITY IDEOGRAPH-F975
-2F8C1 ; [.3146.0025.0002.63A9][.31BD.0020.0002.63A9][.3226.0020.0002.63A9] # CJK COMPATIBILITY IDEOGRAPH-2F8C1
-FA8D ; [.3146.0030.0002.63C4][.31CA.0020.0002.63C4] # CJK COMPATIBILITY IDEOGRAPH-FA8D
-FA8E ; [.3144.0030.0002.641C][.31C6.0020.0002.641C] # CJK COMPATIBILITY IDEOGRAPH-FA8E
-2F8BF ; [.3147.0025.0002.6422][.31CD.0020.0002.6422][.321A.0020.0002.6422] # CJK COMPATIBILITY IDEOGRAPH-2F8BF
-2F8C3 ; [.3141.0021.0002.6469][.31B9.0020.0002.6469] # CJK COMPATIBILITY IDEOGRAPH-2F8C3
-F991 ; [.313D.0022.0002.649A][.31BF.0020.0002.649A][.321A.0020.0002.649A] # CJK COMPATIBILITY IDEOGRAPH-F991
-2F8C5 ; [.314D.0029.0002.649D][.31C9.0020.0002.649D] # CJK COMPATIBILITY IDEOGRAPH-2F8C5
-F930 ; [.3140.0023.0002.64C4][.31C1.0020.0002.64C4] # CJK COMPATIBILITY IDEOGRAPH-F930
-FA41 ; [.3141.0025.0002.654F][.31CD.0020.0002.654F][.321A.0020.0002.654F] # CJK COMPATIBILITY IDEOGRAPH-FA41
-2F8C8 ; [.3141.0025.0002.654F][.31CD.0020.0002.654F][.321A.0020.0002.654F] # CJK COMPATIBILITY IDEOGRAPH-2F8C8
-FA90 ; [.3146.0030.0002.6556][.31C1.0020.0002.6556] # CJK COMPATIBILITY IDEOGRAPH-FA90
-2F8C9 ; [.313B.0030.0002.656C][.31BF.0020.0002.656C][.322B.0020.0002.656C] # CJK COMPATIBILITY IDEOGRAPH-2F8C9
-F969 ; [.3144.0032.0002.6578][.31C6.0020.0002.6578] # CJK COMPATIBILITY IDEOGRAPH-F969
-F9BE ; [.3140.0025.0002.6599][.31C5.0020.0002.6599] # CJK COMPATIBILITY IDEOGRAPH-F9BE
-F983 ; [.3140.0028.0002.65C5][.31BF.0020.0002.65C5] # CJK COMPATIBILITY IDEOGRAPH-F983
-2F8CB ; [.313B.0035.0002.65E3][.31CD.0020.0002.65E3] # CJK COMPATIBILITY IDEOGRAPH-2F8CB
-F9E0 ; [.3146.0024.0002.6613][.31BF.0020.0002.6613][.3217.0020.0002.6613] # CJK COMPATIBILITY IDEOGRAPH-F9E0
-2F8CD ; [.3147.0026.0002.6649][.31CD.0020.0002.6649][.321A.0020.0002.6649] # CJK COMPATIBILITY IDEOGRAPH-2F8CD
-FA12 ; [.3149.0022.0002.6674][.31BD.0020.0002.6674][.322B.0020.0002.6674] # CJK COMPATIBILITY IDEOGRAPH-FA12
-FA91 ; [.3149.0022.0002.6674][.31BD.0020.0002.6674][.322B.0020.0002.6674] # CJK COMPATIBILITY IDEOGRAPH-FA91
-F9C5 ; [.314D.002A.0002.6688][.31C6.0020.0002.6688][.321A.0020.0002.6688] # CJK COMPATIBILITY IDEOGRAPH-F9C5
-FA43 ; [.3144.002B.0002.6691][.31BD.0020.0002.6691] # CJK COMPATIBILITY IDEOGRAPH-FA43
-2F8CF ; [.3144.002B.0002.6691][.31BD.0020.0002.6691] # CJK COMPATIBILITY IDEOGRAPH-2F8CF
-FA06 ; [.314C.0022.0002.66B4][.31C1.0020.0002.66B4][.3217.0020.0002.66B4] # CJK COMPATIBILITY IDEOGRAPH-FA06
-F98B ; [.3140.0022.0002.66C6][.31BF.0020.0002.66C6][.3217.0020.0002.66C6] # CJK COMPATIBILITY IDEOGRAPH-F98B
-F901 ; [.313B.0033.0002.66F4][.31BF.0020.0002.66F4][.322B.0020.0002.66F4] # CJK COMPATIBILITY IDEOGRAPH-F901
-2F8CC ; [.3144.002D.0002.66F8][.31BD.0020.0002.66F8] # CJK COMPATIBILITY IDEOGRAPH-2F8CC
-2F8D4 ; [.3149.0023.0002.6700][.31C4.0020.0002.6700] # CJK COMPATIBILITY IDEOGRAPH-2F8D4
-F929 ; [.3140.0022.0002.6717][.31B9.0020.0002.6717][.322B.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-F929
-FA92 ; [.3140.0022.0002.6717][.31B9.0020.0002.6717][.322B.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-FA92
-2F8D8 ; [.3140.0022.0002.6717][.31B9.0020.0002.6717][.322B.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-2F8D8
-FA93 ; [.3141.0025.0002.671B][.31B9.0020.0002.671B][.322B.0020.0002.671B] # CJK COMPATIBILITY IDEOGRAPH-FA93
-2F8D9 ; [.3141.0025.0002.671B][.31B9.0020.0002.671B][.322B.0020.0002.671B] # CJK COMPATIBILITY IDEOGRAPH-2F8D9
-F9E1 ; [.3140.0028.0002.674E][.31CD.0020.0002.674E] # CJK COMPATIBILITY IDEOGRAPH-F9E1
-2F8DC ; [.314C.0025.0002.6753][.31C5.0020.0002.6753] # CJK COMPATIBILITY IDEOGRAPH-2F8DC
-FA94 ; [.3147.002E.0002.6756][.31B9.0020.0002.6756][.322B.0020.0002.6756] # CJK COMPATIBILITY IDEOGRAPH-FA94
-2F8DB ; [.313B.0038.0002.675E][.31CD.0020.0002.675E] # CJK COMPATIBILITY IDEOGRAPH-2F8DB
-F9C8 ; [.313D.0021.0002.677B][.31CA.0020.0002.677B] # CJK COMPATIBILITY IDEOGRAPH-F9C8
-F9F4 ; [.3140.0021.0002.6797][.31CD.0020.0002.6797][.3226.0020.0002.6797] # CJK COMPATIBILITY IDEOGRAPH-F9F4
-F9C9 ; [.3140.0023.0002.67F3][.31CA.0020.0002.67F3] # CJK COMPATIBILITY IDEOGRAPH-F9C9
-F9DA ; [.3140.0023.0002.6817][.31CA.0020.0002.6817][.321E.0020.0002.6817] # CJK COMPATIBILITY IDEOGRAPH-F9DA
-F97A ; [.3140.0025.0002.6881][.31BB.0020.0002.6881][.322B.0020.0002.6881] # CJK COMPATIBILITY IDEOGRAPH-F97A
-FA44 ; [.3141.0027.0002.6885][.31BA.0020.0002.6885] # CJK COMPATIBILITY IDEOGRAPH-FA44
-2F8E2 ; [.3141.0027.0002.6885][.31BA.0020.0002.6885] # CJK COMPATIBILITY IDEOGRAPH-2F8E2
-F9E2 ; [.3140.0029.0002.68A8][.31CD.0020.0002.68A8] # CJK COMPATIBILITY IDEOGRAPH-F9E2
-2F8E8 ; [.3144.0062.0002.6942][.31B9.0020.0002.6942] # CJK COMPATIBILITY IDEOGRAPH-2F8E8
-2F8EA ; [.313B.002A.0002.69EA][.31BA.0020.0002.69EA] # CJK COMPATIBILITY IDEOGRAPH-2F8EA
-F914 ; [.3146.0028.0002.6A02][.31B9.0020.0002.6A02][.3217.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F914
-F95C ; [.3146.0028.0002.6A02][.31B9.0020.0002.6A02][.3217.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F95C
-F9BF ; [.3146.0028.0002.6A02][.31B9.0020.0002.6A02][.3217.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F9BF
-F94C ; [.3140.0024.0002.6A13][.31C6.0020.0002.6A13] # CJK COMPATIBILITY IDEOGRAPH-F94C
-F931 ; [.3140.0024.0002.6AD3][.31C1.0020.0002.6AD3] # CJK COMPATIBILITY IDEOGRAPH-F931
-2F8ED ; [.3147.0021.0002.6ADB][.31CB.0020.0002.6ADB][.321E.0020.0002.6ADB] # CJK COMPATIBILITY IDEOGRAPH-2F8ED
-F91D ; [.3140.0023.0002.6B04][.31B9.0020.0002.6B04][.321A.0020.0002.6B04] # CJK COMPATIBILITY IDEOGRAPH-F91D
-2F8EF ; [.3149.0028.0002.6B21][.31B9.0020.0002.6B21] # CJK COMPATIBILITY IDEOGRAPH-2F8EF
-2F8F1 ; [.314D.0025.0002.6B54][.31BD.0020.0002.6B54] # CJK COMPATIBILITY IDEOGRAPH-2F8F1
-2F8F3 ; [.3144.0023.0002.6B72][.31BE.0020.0002.6B72] # CJK COMPATIBILITY IDEOGRAPH-2F8F3
-F98C ; [.3140.0023.0002.6B77][.31BF.0020.0002.6B77][.3217.0020.0002.6B77] # CJK COMPATIBILITY IDEOGRAPH-F98C
-F9A5 ; [.3140.0023.0002.6BAE][.31BF.0020.0002.6BAE][.3226.0020.0002.6BAE] # CJK COMPATIBILITY IDEOGRAPH-F9A5
-F970 ; [.3144.0023.0002.6BBA][.31B9.0020.0002.6BBA][.321E.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-F970
-FA96 ; [.3144.0023.0002.6BBA][.31B9.0020.0002.6BBA][.321E.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-FA96
-2F8F5 ; [.3144.0023.0002.6BBA][.31B9.0020.0002.6BBA][.321E.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-2F8F5
-2F8FA ; [.3142.0025.0002.6C4E][.31BD.0020.0002.6C4E][.3226.0020.0002.6C4E] # CJK COMPATIBILITY IDEOGRAPH-2F8FA
-F972 ; [.3149.0024.0002.6C88][.31CD.0020.0002.6C88][.3226.0020.0002.6C88] # CJK COMPATIBILITY IDEOGRAPH-F972
-2F8FC ; [.3146.002B.0002.6CBF][.31BF.0020.0002.6CBF][.321A.0020.0002.6CBF] # CJK COMPATIBILITY IDEOGRAPH-2F8FC
-F968 ; [.314C.0024.0002.6CCC][.31CD.0020.0002.6CCC][.321E.0020.0002.6CCC] # CJK COMPATIBILITY IDEOGRAPH-F968
-F9E3 ; [.313D.0022.0002.6CE5][.31CD.0020.0002.6CE5] # CJK COMPATIBILITY IDEOGRAPH-F9E3
-F915 ; [.3140.0021.0002.6D1B][.31B9.0020.0002.6D1B][.3217.0020.0002.6D1B] # CJK COMPATIBILITY IDEOGRAPH-F915
-FA05 ; [.313E.002A.0002.6D1E][.31C1.0020.0002.6D1E][.322B.0020.0002.6D1E] # CJK COMPATIBILITY IDEOGRAPH-FA05
-2F900 ; [.314C.0029.0002.6D3E][.31B9.0020.0002.6D3E] # CJK COMPATIBILITY IDEOGRAPH-2F900
-F9CA ; [.3140.0025.0002.6D41][.31CA.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-F9CA
-FA97 ; [.3140.0025.0002.6D41][.31CA.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-FA97
-2F902 ; [.3140.0025.0002.6D41][.31CA.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-2F902
-2F903 ; [.314D.002E.0002.6D69][.31C1.0020.0002.6D69] # CJK COMPATIBILITY IDEOGRAPH-2F903
-F92A ; [.3140.0023.0002.6D6A][.31B9.0020.0002.6D6A][.322B.0020.0002.6D6A] # CJK COMPATIBILITY IDEOGRAPH-F92A
-FA45 ; [.314D.002A.0002.6D77][.31BA.0020.0002.6D77] # CJK COMPATIBILITY IDEOGRAPH-FA45
-2F901 ; [.314D.002A.0002.6D77][.31BA.0020.0002.6D77] # CJK COMPATIBILITY IDEOGRAPH-2F901
-2F904 ; [.3149.0025.0002.6D78][.31CD.0020.0002.6D78][.3226.0020.0002.6D78] # CJK COMPATIBILITY IDEOGRAPH-2F904
-2F905 ; [.3146.0022.0002.6D85][.31BF.0020.0002.6D85][.321E.0020.0002.6D85] # CJK COMPATIBILITY IDEOGRAPH-2F905
-F9F5 ; [.3140.0022.0002.6DCB][.31CD.0020.0002.6DCB][.3226.0020.0002.6DCB] # CJK COMPATIBILITY IDEOGRAPH-F9F5
-F94D ; [.3140.0025.0002.6DDA][.31C6.0020.0002.6DDA] # CJK COMPATIBILITY IDEOGRAPH-F94D
-F9D6 ; [.3140.0024.0002.6DEA][.31CA.0020.0002.6DEA][.321A.0020.0002.6DEA] # CJK COMPATIBILITY IDEOGRAPH-F9D6
-2F90E ; [.3146.0026.0002.6DF9][.31BD.0020.0002.6DF9][.3226.0020.0002.6DF9] # CJK COMPATIBILITY IDEOGRAPH-2F90E
-FA46 ; [.3147.002C.0002.6E1A][.31BD.0020.0002.6E1A] # CJK COMPATIBILITY IDEOGRAPH-FA46
-2F908 ; [.314D.002B.0002.6E2F][.31B9.0020.0002.6E2F][.322B.0020.0002.6E2F] # CJK COMPATIBILITY IDEOGRAPH-2F908
-2F909 ; [.3146.002B.0002.6E6E][.31CD.0020.0002.6E6E][.321A.0020.0002.6E6E] # CJK COMPATIBILITY IDEOGRAPH-2F909
-F9CB ; [.3140.0026.0002.6E9C][.31CA.0020.0002.6E9C] # CJK COMPATIBILITY IDEOGRAPH-F9CB
-F9EC ; [.313D.0022.0002.6EBA][.31CD.0020.0002.6EBA][.3217.0020.0002.6EBA] # CJK COMPATIBILITY IDEOGRAPH-F9EC
-FA99 ; [.3147.002B.0002.6ECB][.31B9.0020.0002.6ECB] # CJK COMPATIBILITY IDEOGRAPH-FA99
-2F90B ; [.3147.002B.0002.6ECB][.31B9.0020.0002.6ECB] # CJK COMPATIBILITY IDEOGRAPH-2F90B
-F904 ; [.314D.0022.0002.6ED1][.31C2.0020.0002.6ED1][.321E.0020.0002.6ED1] # CJK COMPATIBILITY IDEOGRAPH-F904
-F94E ; [.3140.0026.0002.6F0F][.31C6.0020.0002.6F0F] # CJK COMPATIBILITY IDEOGRAPH-F94E
-FA47 ; [.314D.0026.0002.6F22][.31B9.0020.0002.6F22][.321A.0020.0002.6F22] # CJK COMPATIBILITY IDEOGRAPH-FA47
-FA9A ; [.314D.0026.0002.6F22][.31B9.0020.0002.6F22][.321A.0020.0002.6F22] # CJK COMPATIBILITY IDEOGRAPH-FA9A
-F992 ; [.3140.0024.0002.6F23][.31BF.0020.0002.6F23][.321A.0020.0002.6F23] # CJK COMPATIBILITY IDEOGRAPH-F992
-2F90F ; [.3147.0033.0002.6F6E][.31C1.0020.0002.6F6E] # CJK COMPATIBILITY IDEOGRAPH-2F90F
-2F912 ; [.3142.003C.0002.6FC6][.31C6.0020.0002.6FC6][.321A.0020.0002.6FC6] # CJK COMPATIBILITY IDEOGRAPH-2F912
-F922 ; [.3140.0025.0002.6FEB][.31B9.0020.0002.6FEB][.3226.0020.0002.6FEB] # CJK COMPATIBILITY IDEOGRAPH-F922
-F984 ; [.3140.002A.0002.6FFE][.31BF.0020.0002.6FFE] # CJK COMPATIBILITY IDEOGRAPH-F984
-2F915 ; [.3146.002D.0002.701B][.31BF.0020.0002.701B][.322B.0020.0002.701B] # CJK COMPATIBILITY IDEOGRAPH-2F915
-FA9B ; [.3147.003D.0002.701E][.31BD.0020.0002.701E][.322B.0020.0002.701E] # CJK COMPATIBILITY IDEOGRAPH-FA9B
-2F914 ; [.3147.003D.0002.701E][.31BD.0020.0002.701E][.322B.0020.0002.701E] # CJK COMPATIBILITY IDEOGRAPH-2F914
-2F835 ; [.314D.002D.0002.7070][.31C4.0020.0002.7070] # CJK COMPATIBILITY IDEOGRAPH-2F835
-2F918 ; [.3147.002B.0002.707D][.31BA.0020.0002.707D] # CJK COMPATIBILITY IDEOGRAPH-2F918
-F9FB ; [.3147.002C.0002.7099][.31B9.0020.0002.7099] # CJK COMPATIBILITY IDEOGRAPH-F9FB
-2F91A ; [.314B.0028.0002.70AD][.31B9.0020.0002.70AD][.321A.0020.0002.70AD] # CJK COMPATIBILITY IDEOGRAPH-2F91A
-F99F ; [.3140.0025.0002.70C8][.31BF.0020.0002.70C8][.321E.0020.0002.70C8] # CJK COMPATIBILITY IDEOGRAPH-F99F
-F916 ; [.3140.0022.0002.70D9][.31B9.0020.0002.70D9][.3217.0020.0002.70D9] # CJK COMPATIBILITY IDEOGRAPH-F916
-F993 ; [.3140.0025.0002.7149][.31BF.0020.0002.7149][.321A.0020.0002.7149] # CJK COMPATIBILITY IDEOGRAPH-F993
-FA48 ; [.3147.002D.0002.716E][.31B9.0020.0002.716E] # CJK COMPATIBILITY IDEOGRAPH-FA48
-FA9C ; [.3147.002D.0002.716E][.31B9.0020.0002.716E] # CJK COMPATIBILITY IDEOGRAPH-FA9C
-F9C0 ; [.3140.0026.0002.71CE][.31C5.0020.0002.71CE] # CJK COMPATIBILITY IDEOGRAPH-F9C0
-F9EE ; [.3140.0023.0002.71D0][.31CD.0020.0002.71D0][.321A.0020.0002.71D0] # CJK COMPATIBILITY IDEOGRAPH-F9EE
-F932 ; [.3140.0027.0002.7210][.31C1.0020.0002.7210] # CJK COMPATIBILITY IDEOGRAPH-F932
-F91E ; [.3140.0026.0002.721B][.31B9.0020.0002.721B][.321A.0020.0002.721B] # CJK COMPATIBILITY IDEOGRAPH-F91E
-2F920 ; [.3149.0036.0002.7228][.31B9.0020.0002.7228][.321A.0020.0002.7228] # CJK COMPATIBILITY IDEOGRAPH-2F920
-FA9E ; [.3147.0028.0002.7235][.31B9.0020.0002.7235][.3217.0020.0002.7235] # CJK COMPATIBILITY IDEOGRAPH-FA9E
-2F921 ; [.3147.0028.0002.7235][.31B9.0020.0002.7235][.3217.0020.0002.7235] # CJK COMPATIBILITY IDEOGRAPH-2F921
-F946 ; [.3140.0023.0002.7262][.31C4.0020.0002.7262] # CJK COMPATIBILITY IDEOGRAPH-F946
-2F924 ; [.3144.0030.0002.7280][.31BD.0020.0002.7280] # CJK COMPATIBILITY IDEOGRAPH-2F924
-FA9F ; [.3142.0027.0002.72AF][.31BD.0020.0002.72AF][.3226.0020.0002.72AF] # CJK COMPATIBILITY IDEOGRAPH-FA9F
-F9FA ; [.3144.0035.0002.72C0][.31B9.0020.0002.72C0][.322B.0020.0002.72C0] # CJK COMPATIBILITY IDEOGRAPH-F9FA
-F92B ; [.3140.0024.0002.72FC][.31B9.0020.0002.72FC][.322B.0020.0002.72FC] # CJK COMPATIBILITY IDEOGRAPH-F92B
-FA16 ; [.3147.002E.0002.732A][.31BD.0020.0002.732A] # CJK COMPATIBILITY IDEOGRAPH-FA16
-FAA0 ; [.3147.002E.0002.732A][.31BD.0020.0002.732A] # CJK COMPATIBILITY IDEOGRAPH-FAA0
-F9A7 ; [.3140.0021.0002.7375][.31BF.0020.0002.7375][.3227.0020.0002.7375] # CJK COMPATIBILITY IDEOGRAPH-F9A7
-2F928 ; [.313E.0023.0002.737A][.31B9.0020.0002.737A][.321E.0020.0002.737A] # CJK COMPATIBILITY IDEOGRAPH-2F928
-F961 ; [.3144.0021.0002.7387][.31C1.0020.0002.7387][.321E.0020.0002.7387] # CJK COMPATIBILITY IDEOGRAPH-F961
-F9DB ; [.3144.0021.0002.7387][.31C1.0020.0002.7387][.321E.0020.0002.7387] # CJK COMPATIBILITY IDEOGRAPH-F9DB
-2F929 ; [.3146.0025.0002.738B][.31C2.0020.0002.738B][.322B.0020.0002.738B] # CJK COMPATIBILITY IDEOGRAPH-2F929
-F9AD ; [.3140.0027.0002.73B2][.31BF.0020.0002.73B2][.322B.0020.0002.73B2] # CJK COMPATIBILITY IDEOGRAPH-F9AD
-F917 ; [.3140.0023.0002.73DE][.31B9.0020.0002.73DE][.3217.0020.0002.73DE] # CJK COMPATIBILITY IDEOGRAPH-F917
-F9E4 ; [.3140.002D.0002.7406][.31CD.0020.0002.7406] # CJK COMPATIBILITY IDEOGRAPH-F9E4
-F9CC ; [.3140.0028.0002.7409][.31CA.0020.0002.7409] # CJK COMPATIBILITY IDEOGRAPH-F9CC
-FA4A ; [.314B.002B.0002.7422][.31B9.0020.0002.7422][.3217.0020.0002.7422] # CJK COMPATIBILITY IDEOGRAPH-FA4A
-2F92F ; [.3146.003D.0002.745C][.31CA.0020.0002.745C] # CJK COMPATIBILITY IDEOGRAPH-2F92F
-F9AE ; [.314D.002D.0002.7469][.31BF.0020.0002.7469][.322B.0020.0002.7469] # CJK COMPATIBILITY IDEOGRAPH-F9AE
-FAA1 ; [.3147.0057.0002.7471][.31BD.0020.0002.7471][.321A.0020.0002.7471] # CJK COMPATIBILITY IDEOGRAPH-FAA1
-2F930 ; [.3147.0057.0002.7471][.31BD.0020.0002.7471][.321A.0020.0002.7471] # CJK COMPATIBILITY IDEOGRAPH-2F930
-F994 ; [.3140.0026.0002.7489][.31BF.0020.0002.7489][.321A.0020.0002.7489] # CJK COMPATIBILITY IDEOGRAPH-F994
-F9EF ; [.3140.0024.0002.7498][.31CD.0020.0002.7498][.321A.0020.0002.7498] # CJK COMPATIBILITY IDEOGRAPH-F9EF
-2F932 ; [.313B.003A.0002.74CA][.31BF.0020.0002.74CA][.322B.0020.0002.74CA] # CJK COMPATIBILITY IDEOGRAPH-2F932
-F9CD ; [.3140.002A.0002.7559][.31CA.0020.0002.7559] # CJK COMPATIBILITY IDEOGRAPH-F9CD
-F976 ; [.3140.0022.0002.7565][.31BB.0020.0002.7565][.3217.0020.0002.7565] # CJK COMPATIBILITY IDEOGRAPH-F976
-F962 ; [.3146.002C.0002.7570][.31CD.0020.0002.7570] # CJK COMPATIBILITY IDEOGRAPH-F962
-2F938 ; [.3146.002C.0002.7570][.31CD.0020.0002.7570] # CJK COMPATIBILITY IDEOGRAPH-2F938
-F9E5 ; [.3140.002F.0002.75E2][.31CD.0020.0002.75E2] # CJK COMPATIBILITY IDEOGRAPH-F9E5
-2F93A ; [.3146.0059.0002.7610][.31CA.0020.0002.7610] # CJK COMPATIBILITY IDEOGRAPH-2F93A
-FAA5 ; [.3146.0023.0002.761F][.31C1.0020.0002.761F][.321A.0020.0002.761F] # CJK COMPATIBILITY IDEOGRAPH-FAA5
-F9C1 ; [.3140.0027.0002.7642][.31C5.0020.0002.7642] # CJK COMPATIBILITY IDEOGRAPH-F9C1
-F90E ; [.3140.0023.0002.7669][.31B9.0020.0002.7669] # CJK COMPATIBILITY IDEOGRAPH-F90E
-FA17 ; [.3146.0022.0002.76CA][.31CD.0020.0002.76CA][.3217.0020.0002.76CA] # CJK COMPATIBILITY IDEOGRAPH-FA17
-FAA6 ; [.3146.0022.0002.76CA][.31CD.0020.0002.76CA][.3217.0020.0002.76CA] # CJK COMPATIBILITY IDEOGRAPH-FAA6
-FAA7 ; [.3144.002B.0002.76DB][.31BD.0020.0002.76DB][.322B.0020.0002.76DB] # CJK COMPATIBILITY IDEOGRAPH-FAA7
-F933 ; [.3140.0028.0002.76E7][.31C1.0020.0002.76E7] # CJK COMPATIBILITY IDEOGRAPH-F933
-FAA8 ; [.3147.0021.0002.76F4][.31CD.0020.0002.76F4][.3217.0020.0002.76F4] # CJK COMPATIBILITY IDEOGRAPH-FAA8
-2F940 ; [.3147.0021.0002.76F4][.31CD.0020.0002.76F4][.3217.0020.0002.76F4] # CJK COMPATIBILITY IDEOGRAPH-2F940
-F96D ; [.3144.002C.0002.7701][.31BD.0020.0002.7701][.322B.0020.0002.7701] # CJK COMPATIBILITY IDEOGRAPH-F96D
-2F945 ; [.3147.0033.0002.771E][.31CD.0020.0002.771E][.321A.0020.0002.771E] # CJK COMPATIBILITY IDEOGRAPH-2F945
-FAAA ; [.3149.0023.0002.7740][.31B9.0020.0002.7740][.3217.0020.0002.7740] # CJK COMPATIBILITY IDEOGRAPH-FAAA
-2F94A ; [.3147.0034.0002.778B][.31CD.0020.0002.778B][.321A.0020.0002.778B] # CJK COMPATIBILITY IDEOGRAPH-2F94A
-F9CE ; [.3140.002C.0002.786B][.31CA.0020.0002.786B] # CJK COMPATIBILITY IDEOGRAPH-F9CE
-F93B ; [.3140.0021.0002.788C][.31C1.0020.0002.788C][.3217.0020.0002.788C] # CJK COMPATIBILITY IDEOGRAPH-F93B
-2F94F ; [.3140.0021.0002.788C][.31C1.0020.0002.788C][.3217.0020.0002.788C] # CJK COMPATIBILITY IDEOGRAPH-2F94F
-FA4B ; [.3142.0038.0002.7891][.31CD.0020.0002.7891] # CJK COMPATIBILITY IDEOGRAPH-FA4B
-F947 ; [.3140.0024.0002.78CA][.31C4.0020.0002.78CA] # CJK COMPATIBILITY IDEOGRAPH-F947
-F964 ; [.3142.0032.0002.78FB][.31B9.0020.0002.78FB][.321A.0020.0002.78FB] # CJK COMPATIBILITY IDEOGRAPH-F964
-F985 ; [.3140.002B.0002.792A][.31BF.0020.0002.792A] # CJK COMPATIBILITY IDEOGRAPH-F985
-FA4C ; [.3144.0046.0002.793E][.31B9.0020.0002.793E] # CJK COMPATIBILITY IDEOGRAPH-FA4C
-FA4E ; [.313B.004C.0002.7948][.31CD.0020.0002.7948] # CJK COMPATIBILITY IDEOGRAPH-FA4E
-FA4D ; [.3147.0035.0002.7949][.31CD.0020.0002.7949] # CJK COMPATIBILITY IDEOGRAPH-FA4D
-FA4F ; [.3146.0032.0002.7950][.31C6.0020.0002.7950] # CJK COMPATIBILITY IDEOGRAPH-FA4F
-FA50 ; [.3147.0039.0002.7956][.31C1.0020.0002.7956] # CJK COMPATIBILITY IDEOGRAPH-FA50
-2F953 ; [.3147.0039.0002.7956][.31C1.0020.0002.7956] # CJK COMPATIBILITY IDEOGRAPH-2F953
-FA51 ; [.3149.0023.0002.795D][.31C6.0020.0002.795D][.3217.0020.0002.795D] # CJK COMPATIBILITY IDEOGRAPH-FA51
-FA19 ; [.3144.002C.0002.795E][.31CD.0020.0002.795E][.321A.0020.0002.795E] # CJK COMPATIBILITY IDEOGRAPH-FA19
-FA1A ; [.3144.0037.0002.7965][.31B9.0020.0002.7965][.322B.0020.0002.7965] # CJK COMPATIBILITY IDEOGRAPH-FA1A
-F93C ; [.3140.0022.0002.797F][.31C1.0020.0002.797F][.3217.0020.0002.797F] # CJK COMPATIBILITY IDEOGRAPH-F93C
-FA52 ; [.314D.0027.0002.798D][.31C2.0020.0002.798D] # CJK COMPATIBILITY IDEOGRAPH-FA52
-FA53 ; [.3147.0044.0002.798E][.31BD.0020.0002.798E][.322B.0020.0002.798E] # CJK COMPATIBILITY IDEOGRAPH-FA53
-FA1B ; [.3142.0028.0002.798F][.31C1.0020.0002.798F][.3217.0020.0002.798F] # CJK COMPATIBILITY IDEOGRAPH-FA1B
-2F956 ; [.3142.0028.0002.798F][.31C1.0020.0002.798F][.3217.0020.0002.798F] # CJK COMPATIBILITY IDEOGRAPH-2F956
-F9B6 ; [.3140.0023.0002.79AE][.31C0.0020.0002.79AE] # CJK COMPATIBILITY IDEOGRAPH-F9B6
-F995 ; [.313D.0023.0002.79CA][.31BF.0020.0002.79CA][.321A.0020.0002.79CA] # CJK COMPATIBILITY IDEOGRAPH-F995
-2F957 ; [.3149.0024.0002.79EB][.31C6.0020.0002.79EB][.321E.0020.0002.79EB] # CJK COMPATIBILITY IDEOGRAPH-2F957
-F956 ; [.3140.0023.0002.7A1C][.31CB.0020.0002.7A1C][.322B.0020.0002.7A1C] # CJK COMPATIBILITY IDEOGRAPH-F956
-FA54 ; [.313B.0025.0002.7A40][.31C1.0020.0002.7A40][.3217.0020.0002.7A40] # CJK COMPATIBILITY IDEOGRAPH-FA54
-2F959 ; [.313B.0025.0002.7A40][.31C1.0020.0002.7A40][.3217.0020.0002.7A40] # CJK COMPATIBILITY IDEOGRAPH-2F959
-FA55 ; [.313E.0022.0002.7A81][.31C1.0020.0002.7A81][.321E.0020.0002.7A81] # CJK COMPATIBILITY IDEOGRAPH-FA55
-F9F7 ; [.3140.0022.0002.7ACB][.31CD.0020.0002.7ACB][.3227.0020.0002.7ACB] # CJK COMPATIBILITY IDEOGRAPH-F9F7
-F9F8 ; [.3140.0023.0002.7B20][.31CD.0020.0002.7B20][.3227.0020.0002.7B20] # CJK COMPATIBILITY IDEOGRAPH-F9F8
-FA56 ; [.3147.0027.0002.7BC0][.31BD.0020.0002.7BC0][.321E.0020.0002.7BC0] # CJK COMPATIBILITY IDEOGRAPH-FA56
-FAAD ; [.3147.0027.0002.7BC0][.31BD.0020.0002.7BC0][.321E.0020.0002.7BC0] # CJK COMPATIBILITY IDEOGRAPH-FAAD
-2F962 ; [.3147.003D.0002.7BC6][.31BD.0020.0002.7BC6][.321A.0020.0002.7BC6] # CJK COMPATIBILITY IDEOGRAPH-2F962
-2F963 ; [.3149.0026.0002.7BC9][.31C6.0020.0002.7BC9][.3217.0020.0002.7BC9] # CJK COMPATIBILITY IDEOGRAPH-2F963
-F9A6 ; [.3140.0025.0002.7C3E][.31BF.0020.0002.7C3E][.3226.0020.0002.7C3E] # CJK COMPATIBILITY IDEOGRAPH-F9A6
-F944 ; [.3140.0026.0002.7C60][.31C1.0020.0002.7C60][.322B.0020.0002.7C60] # CJK COMPATIBILITY IDEOGRAPH-F944
-F9F9 ; [.3140.0024.0002.7C92][.31CD.0020.0002.7C92][.3227.0020.0002.7C92] # CJK COMPATIBILITY IDEOGRAPH-F9F9
-FA1D ; [.3147.0047.0002.7CBE][.31BD.0020.0002.7CBE][.322B.0020.0002.7CBE] # CJK COMPATIBILITY IDEOGRAPH-FA1D
-FA03 ; [.313E.0029.0002.7CD6][.31B9.0020.0002.7CD6][.322B.0020.0002.7CD6] # CJK COMPATIBILITY IDEOGRAPH-FA03
-F97B ; [.3140.0029.0002.7CE7][.31BB.0020.0002.7CE7][.322B.0020.0002.7CE7] # CJK COMPATIBILITY IDEOGRAPH-F97B
-2F96A ; [.313B.004F.0002.7D00][.31CD.0020.0002.7D00] # CJK COMPATIBILITY IDEOGRAPH-2F96A
-F9CF ; [.313D.0022.0002.7D10][.31CA.0020.0002.7D10] # CJK COMPATIBILITY IDEOGRAPH-F9CF
-F96A ; [.3144.0023.0002.7D22][.31BA.0020.0002.7D22][.3217.0020.0002.7D22] # CJK COMPATIBILITY IDEOGRAPH-F96A
-F94F ; [.3140.0028.0002.7D2F][.31C6.0020.0002.7D2F] # CJK COMPATIBILITY IDEOGRAPH-F94F
-FAAF ; [.3147.0063.0002.7D5B][.31C1.0020.0002.7D5B] # CJK COMPATIBILITY IDEOGRAPH-FAAF
-2F96C ; [.3142.0034.0002.7D63][.31BF.0020.0002.7D63][.322B.0020.0002.7D63] # CJK COMPATIBILITY IDEOGRAPH-2F96C
-F93D ; [.3140.0023.0002.7DA0][.31C1.0020.0002.7DA0][.3217.0020.0002.7DA0] # CJK COMPATIBILITY IDEOGRAPH-F93D
-F957 ; [.3140.0024.0002.7DBE][.31CB.0020.0002.7DBE][.322B.0020.0002.7DBE] # CJK COMPATIBILITY IDEOGRAPH-F957
-2F96E ; [.3149.0030.0002.7DC7][.31CD.0020.0002.7DC7] # CJK COMPATIBILITY IDEOGRAPH-2F96E
-F996 ; [.3140.0027.0002.7DF4][.31BF.0020.0002.7DF4][.321A.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-F996
-FA57 ; [.3140.0027.0002.7DF4][.31BF.0020.0002.7DF4][.321A.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-FA57
-FAB0 ; [.3140.0027.0002.7DF4][.31BF.0020.0002.7DF4][.321A.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-FAB0
-FA58 ; [.3147.0036.0002.7E09][.31CD.0020.0002.7E09][.321A.0020.0002.7E09] # CJK COMPATIBILITY IDEOGRAPH-FA58
-F950 ; [.3140.0029.0002.7E37][.31C6.0020.0002.7E37] # CJK COMPATIBILITY IDEOGRAPH-F950
-FA59 ; [.3142.0026.0002.7E41][.31BD.0020.0002.7E41][.321A.0020.0002.7E41] # CJK COMPATIBILITY IDEOGRAPH-FA59
-2F970 ; [.3144.0052.0002.7E45][.31C1.0020.0002.7E45] # CJK COMPATIBILITY IDEOGRAPH-2F970
-FAB1 ; [.3142.0035.0002.7F3E][.31BF.0020.0002.7F3E][.322B.0020.0002.7F3E] # CJK COMPATIBILITY IDEOGRAPH-FAB1
-FA5A ; [.3144.0035.0002.7F72][.31BD.0020.0002.7F72] # CJK COMPATIBILITY IDEOGRAPH-FA5A
-F9E6 ; [.3140.0031.0002.7F79][.31CD.0020.0002.7F79] # CJK COMPATIBILITY IDEOGRAPH-F9E6
-F90F ; [.3140.0024.0002.7F85][.31B9.0020.0002.7F85] # CJK COMPATIBILITY IDEOGRAPH-F90F
-F9AF ; [.3140.0029.0002.7F9A][.31BF.0020.0002.7F9A][.322B.0020.0002.7F9A] # CJK COMPATIBILITY IDEOGRAPH-F9AF
-FA1E ; [.3146.0036.0002.7FBD][.31C6.0020.0002.7FBD] # CJK COMPATIBILITY IDEOGRAPH-FA1E
-2F979 ; [.313B.005A.0002.7FFA][.31C1.0020.0002.7FFA] # CJK COMPATIBILITY IDEOGRAPH-2F979
-F934 ; [.3140.0029.0002.8001][.31C1.0020.0002.8001] # CJK COMPATIBILITY IDEOGRAPH-F934
-FA5B ; [.3147.0033.0002.8005][.31B9.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-FA5B
-FAB2 ; [.3147.0033.0002.8005][.31B9.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-FAB2
-2F97A ; [.3147.0033.0002.8005][.31B9.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-2F97A
-F9B0 ; [.3140.002B.0002.8046][.31BF.0020.0002.8046][.322B.0020.0002.8046] # CJK COMPATIBILITY IDEOGRAPH-F9B0
-F997 ; [.3140.0028.0002.806F][.31BF.0020.0002.806F][.321A.0020.0002.806F] # CJK COMPATIBILITY IDEOGRAPH-F997
-2F97F ; [.3149.0028.0002.8070][.31C1.0020.0002.8070][.322B.0020.0002.8070] # CJK COMPATIBILITY IDEOGRAPH-2F97F
-F945 ; [.3140.0027.0002.807E][.31C1.0020.0002.807E][.322B.0020.0002.807E] # CJK COMPATIBILITY IDEOGRAPH-F945
-F953 ; [.3140.0022.0002.808B][.31CB.0020.0002.808B][.3217.0020.0002.808B] # CJK COMPATIBILITY IDEOGRAPH-F953
-2F8D6 ; [.313D.0023.0002.80AD][.31C6.0020.0002.80AD][.321E.0020.0002.80AD] # CJK COMPATIBILITY IDEOGRAPH-2F8D6
-2F982 ; [.3146.0024.0002.80B2][.31CA.0020.0002.80B2][.3217.0020.0002.80B2] # CJK COMPATIBILITY IDEOGRAPH-2F982
-2F985 ; [.3142.003F.0002.813E][.31CD.0020.0002.813E] # CJK COMPATIBILITY IDEOGRAPH-2F985
-F926 ; [.3140.0022.0002.81D8][.31B9.0020.0002.81D8][.3227.0020.0002.81D8] # CJK COMPATIBILITY IDEOGRAPH-F926
-F9F6 ; [.3140.0024.0002.81E8][.31CD.0020.0002.81E8][.3226.0020.0002.81E8] # CJK COMPATIBILITY IDEOGRAPH-F9F6
-FA5C ; [.3149.002A.0002.81ED][.31C9.0020.0002.81ED] # CJK COMPATIBILITY IDEOGRAPH-FA5C
-2F893 ; [.3146.002E.0002.8201][.31BF.0020.0002.8201] # CJK COMPATIBILITY IDEOGRAPH-2F893
-2F98B ; [.3146.002E.0002.8201][.31BF.0020.0002.8201] # CJK COMPATIBILITY IDEOGRAPH-2F98B
-F97C ; [.3140.002A.0002.826F][.31BB.0020.0002.826F][.322B.0020.0002.826F] # CJK COMPATIBILITY IDEOGRAPH-F97C
-2F990 ; [.3146.0037.0002.828B][.31C6.0020.0002.828B] # CJK COMPATIBILITY IDEOGRAPH-2F990
-2F991 ; [.3147.003B.0002.829D][.31CD.0020.0002.829D] # CJK COMPATIBILITY IDEOGRAPH-2F991
-2F993 ; [.314D.0029.0002.82B1][.31C2.0020.0002.82B1] # CJK COMPATIBILITY IDEOGRAPH-2F993
-2F994 ; [.3142.0035.0002.82B3][.31B9.0020.0002.82B3][.322B.0020.0002.82B3] # CJK COMPATIBILITY IDEOGRAPH-2F994
-2F995 ; [.3146.0029.0002.82BD][.31B9.0020.0002.82BD] # CJK COMPATIBILITY IDEOGRAPH-2F995
-F974 ; [.3146.0023.0002.82E5][.31BB.0020.0002.82E5][.3217.0020.0002.82E5] # CJK COMPATIBILITY IDEOGRAPH-F974
-2F998 ; [.3146.0023.0002.82E5][.31BB.0020.0002.82E5][.3217.0020.0002.82E5] # CJK COMPATIBILITY IDEOGRAPH-2F998
-2F996 ; [.313B.003A.0002.82E6][.31C1.0020.0002.82E6] # CJK COMPATIBILITY IDEOGRAPH-2F996
-2F999 ; [.3149.002E.0002.831D][.31BA.0020.0002.831D] # CJK COMPATIBILITY IDEOGRAPH-2F999
-2F99C ; [.3146.004C.0002.8323][.31C1.0020.0002.8323] # CJK COMPATIBILITY IDEOGRAPH-2F99C
-F9FE ; [.313E.0022.0002.8336][.31B9.0020.0002.8336] # CJK COMPATIBILITY IDEOGRAPH-F9FE
-FAB3 ; [.314D.0034.0002.8352][.31C2.0020.0002.8352][.322B.0020.0002.8352] # CJK COMPATIBILITY IDEOGRAPH-FAB3
-2F99D ; [.3141.002A.0002.83BD][.31B9.0020.0002.83BD][.322B.0020.0002.83BD] # CJK COMPATIBILITY IDEOGRAPH-2F99D
-F93E ; [.3140.0024.0002.83C9][.31C1.0020.0002.83C9][.3217.0020.0002.83C9] # CJK COMPATIBILITY IDEOGRAPH-F93E
-2F9A1 ; [.313B.0023.0002.83CA][.31C6.0020.0002.83CA][.3217.0020.0002.83CA] # CJK COMPATIBILITY IDEOGRAPH-2F9A1
-2F9A2 ; [.313B.0025.0002.83CC][.31CA.0020.0002.83CC][.321A.0020.0002.83CC] # CJK COMPATIBILITY IDEOGRAPH-2F9A2
-2F9A3 ; [.3149.0029.0002.83DC][.31BA.0020.0002.83DC] # CJK COMPATIBILITY IDEOGRAPH-2F9A3
-FAB4 ; [.314D.002A.0002.83EF][.31C2.0020.0002.83EF] # CJK COMPATIBILITY IDEOGRAPH-FAB4
-F958 ; [.3140.0025.0002.83F1][.31CB.0020.0002.83F1][.322B.0020.0002.83F1] # CJK COMPATIBILITY IDEOGRAPH-F958
-F918 ; [.3140.0025.0002.843D][.31B9.0020.0002.843D][.3217.0020.0002.843D] # CJK COMPATIBILITY IDEOGRAPH-F918
-F96E ; [.3146.0023.0002.8449][.31BF.0020.0002.8449][.3227.0020.0002.8449] # CJK COMPATIBILITY IDEOGRAPH-F96E
-FA5F ; [.3147.0034.0002.8457][.31BD.0020.0002.8457] # CJK COMPATIBILITY IDEOGRAPH-FA5F
-2F99F ; [.3147.0034.0002.8457][.31BD.0020.0002.8457] # CJK COMPATIBILITY IDEOGRAPH-2F99F
-F999 ; [.3140.0029.0002.84EE][.31BF.0020.0002.84EE][.321A.0020.0002.84EE] # CJK COMPATIBILITY IDEOGRAPH-F999
-2F9A8 ; [.314C.002A.0002.84F1][.31BF.0020.0002.84F1][.322B.0020.0002.84F1] # CJK COMPATIBILITY IDEOGRAPH-2F9A8
-F9C2 ; [.3140.002A.0002.84FC][.31C5.0020.0002.84FC] # CJK COMPATIBILITY IDEOGRAPH-F9C2
-2F9AC ; [.3146.0062.0002.8564][.31CA.0020.0002.8564] # CJK COMPATIBILITY IDEOGRAPH-2F9AC
-F923 ; [.3140.0028.0002.85CD][.31B9.0020.0002.85CD][.3226.0020.0002.85CD] # CJK COMPATIBILITY IDEOGRAPH-F923
-F9F0 ; [.3140.0025.0002.85FA][.31CD.0020.0002.85FA][.321A.0020.0002.85FA] # CJK COMPATIBILITY IDEOGRAPH-F9F0
-F935 ; [.3140.002A.0002.8606][.31C1.0020.0002.8606] # CJK COMPATIBILITY IDEOGRAPH-F935
-F91F ; [.3140.0027.0002.862D][.31B9.0020.0002.862D][.321A.0020.0002.862D] # CJK COMPATIBILITY IDEOGRAPH-F91F
-F910 ; [.3140.0025.0002.863F][.31B9.0020.0002.863F] # CJK COMPATIBILITY IDEOGRAPH-F910
-2F9B3 ; [.314D.0023.0002.8650][.31B9.0020.0002.8650][.3217.0020.0002.8650] # CJK COMPATIBILITY IDEOGRAPH-2F9B3
-F936 ; [.3140.002B.0002.865C][.31C1.0020.0002.865C] # CJK COMPATIBILITY IDEOGRAPH-F936
-2F9B4 ; [.3140.002B.0002.865C][.31C1.0020.0002.865C] # CJK COMPATIBILITY IDEOGRAPH-2F9B4
-2F9B5 ; [.314D.0025.0002.8667][.31CA.0020.0002.8667] # CJK COMPATIBILITY IDEOGRAPH-2F9B5
-2F9B7 ; [.3149.0034.0002.86A9][.31CD.0020.0002.86A9] # CJK COMPATIBILITY IDEOGRAPH-2F9B7
-2F9BC ; [.3147.0026.0002.8728][.31BD.0020.0002.8728][.3227.0020.0002.8728] # CJK COMPATIBILITY IDEOGRAPH-2F9BC
-F911 ; [.3140.0026.0002.87BA][.31B9.0020.0002.87BA] # CJK COMPATIBILITY IDEOGRAPH-F911
-F927 ; [.3140.0023.0002.881F][.31B9.0020.0002.881F][.3227.0020.0002.881F] # CJK COMPATIBILITY IDEOGRAPH-F927
-FA08 ; [.314D.0025.0002.884C][.31BA.0020.0002.884C][.322B.0020.0002.884C] # CJK COMPATIBILITY IDEOGRAPH-FA08
-2F9C4 ; [.3146.0030.0002.8863][.31CC.0020.0002.8863] # CJK COMPATIBILITY IDEOGRAPH-2F9C4
-F9A0 ; [.3140.0026.0002.88C2][.31BF.0020.0002.88C2][.321E.0020.0002.88C2] # CJK COMPATIBILITY IDEOGRAPH-F9A0
-F9E7 ; [.3140.0034.0002.88CF][.31CD.0020.0002.88CF] # CJK COMPATIBILITY IDEOGRAPH-F9E7
-F9E8 ; [.3140.0035.0002.88E1][.31CD.0020.0002.88E1] # CJK COMPATIBILITY IDEOGRAPH-F9E8
-F912 ; [.3140.0027.0002.88F8][.31B9.0020.0002.88F8] # CJK COMPATIBILITY IDEOGRAPH-F912
-FA60 ; [.313B.0028.0002.8910][.31B9.0020.0002.8910][.321E.0020.0002.8910] # CJK COMPATIBILITY IDEOGRAPH-FA60
-FAB6 ; [.313B.0034.0002.8941][.31B9.0020.0002.8941][.322B.0020.0002.8941] # CJK COMPATIBILITY IDEOGRAPH-FAB6
-F924 ; [.3140.0029.0002.8964][.31B9.0020.0002.8964][.3226.0020.0002.8964] # CJK COMPATIBILITY IDEOGRAPH-F924
-FAB7 ; [.3142.002D.0002.8986][.31C1.0020.0002.8986][.3217.0020.0002.8986] # CJK COMPATIBILITY IDEOGRAPH-FAB7
-FA0A ; [.313B.0028.0002.898B][.31BF.0020.0002.898B][.321A.0020.0002.898B] # CJK COMPATIBILITY IDEOGRAPH-FA0A
-FA61 ; [.3144.0037.0002.8996][.31CD.0020.0002.8996] # CJK COMPATIBILITY IDEOGRAPH-FA61
-FAB8 ; [.3144.0037.0002.8996][.31CD.0020.0002.8996] # CJK COMPATIBILITY IDEOGRAPH-FAB8
-2F9CF ; [.3144.0031.0002.8AA0][.31BD.0020.0002.8AA0][.322B.0020.0002.8AA0] # CJK COMPATIBILITY IDEOGRAPH-2F9CF
-F96F ; [.3144.002B.0002.8AAA][.31BD.0020.0002.8AAA][.321E.0020.0002.8AAA] # CJK COMPATIBILITY IDEOGRAPH-F96F
-F9A1 ; [.3144.002B.0002.8AAA][.31BD.0020.0002.8AAA][.321E.0020.0002.8AAA] # CJK COMPATIBILITY IDEOGRAPH-F9A1
-FAB9 ; [.3147.0046.0002.8ABF][.31C1.0020.0002.8ABF] # CJK COMPATIBILITY IDEOGRAPH-FAB9
-FABB ; [.3149.0026.0002.8ACB][.31BD.0020.0002.8ACB][.322B.0020.0002.8ACB] # CJK COMPATIBILITY IDEOGRAPH-FABB
-F97D ; [.3140.002B.0002.8AD2][.31BB.0020.0002.8AD2][.322B.0020.0002.8AD2] # CJK COMPATIBILITY IDEOGRAPH-F97D
-F941 ; [.3140.0021.0002.8AD6][.31C1.0020.0002.8AD6][.321A.0020.0002.8AD6] # CJK COMPATIBILITY IDEOGRAPH-F941
-FABE ; [.3146.0046.0002.8AED][.31CA.0020.0002.8AED] # CJK COMPATIBILITY IDEOGRAPH-FABE
-2F9D0 ; [.3146.0046.0002.8AED][.31CA.0020.0002.8AED] # CJK COMPATIBILITY IDEOGRAPH-2F9D0
-FA22 ; [.3147.0030.0002.8AF8][.31BE.0020.0002.8AF8] # CJK COMPATIBILITY IDEOGRAPH-FA22
-FABA ; [.3147.0030.0002.8AF8][.31BE.0020.0002.8AF8] # CJK COMPATIBILITY IDEOGRAPH-FABA
-F95D ; [.313D.0021.0002.8AFE][.31B9.0020.0002.8AFE][.3217.0020.0002.8AFE] # CJK COMPATIBILITY IDEOGRAPH-F95D
-FABD ; [.313D.0021.0002.8AFE][.31B9.0020.0002.8AFE][.3217.0020.0002.8AFE] # CJK COMPATIBILITY IDEOGRAPH-FABD
-FA62 ; [.3146.0022.0002.8B01][.31B9.0020.0002.8B01][.321E.0020.0002.8B01] # CJK COMPATIBILITY IDEOGRAPH-FA62
-FABC ; [.3146.0022.0002.8B01][.31B9.0020.0002.8B01][.321E.0020.0002.8B01] # CJK COMPATIBILITY IDEOGRAPH-FABC
-FA63 ; [.313B.002D.0002.8B39][.31CB.0020.0002.8B39][.321A.0020.0002.8B39] # CJK COMPATIBILITY IDEOGRAPH-FA63
-FABF ; [.313B.002D.0002.8B39][.31CB.0020.0002.8B39][.321A.0020.0002.8B39] # CJK COMPATIBILITY IDEOGRAPH-FABF
-F9FC ; [.3144.002C.0002.8B58][.31CD.0020.0002.8B58][.3217.0020.0002.8B58] # CJK COMPATIBILITY IDEOGRAPH-F9FC
-F95A ; [.313E.002A.0002.8B80][.31C1.0020.0002.8B80][.3217.0020.0002.8B80] # CJK COMPATIBILITY IDEOGRAPH-F95A
-FAC0 ; [.3142.0023.0002.8B8A][.31BF.0020.0002.8B8A][.321A.0020.0002.8B8A] # CJK COMPATIBILITY IDEOGRAPH-FAC0
-2F9D1 ; [.3142.0023.0002.8B8A][.31BF.0020.0002.8B8A][.321A.0020.0002.8B8A] # CJK COMPATIBILITY IDEOGRAPH-2F9D1
-F900 ; [.313B.0057.0002.8C48][.31CD.0020.0002.8C48] # CJK COMPATIBILITY IDEOGRAPH-F900
-2F9D2 ; [.3144.003B.0002.8C55][.31CD.0020.0002.8C55] # CJK COMPATIBILITY IDEOGRAPH-2F9D2
-2F9D4 ; [.313B.002E.0002.8CAB][.31C2.0020.0002.8CAB][.321A.0020.0002.8CAB] # CJK COMPATIBILITY IDEOGRAPH-2F9D4
-2F9D5 ; [.3142.0032.0002.8CC1][.31C6.0020.0002.8CC1][.321A.0020.0002.8CC1] # CJK COMPATIBILITY IDEOGRAPH-2F9D5
-F948 ; [.3140.0025.0002.8CC2][.31C4.0020.0002.8CC2] # CJK COMPATIBILITY IDEOGRAPH-F948
-F903 ; [.313B.0039.0002.8CC8][.31B9.0020.0002.8CC8] # CJK COMPATIBILITY IDEOGRAPH-F903
-FA64 ; [.3142.002D.0002.8CD3][.31CD.0020.0002.8CD3][.321A.0020.0002.8CD3] # CJK COMPATIBILITY IDEOGRAPH-FA64
-FA65 ; [.3147.002B.0002.8D08][.31CB.0020.0002.8D08][.322B.0020.0002.8D08] # CJK COMPATIBILITY IDEOGRAPH-FA65
-FAC1 ; [.3147.002B.0002.8D08][.31CB.0020.0002.8D08][.322B.0020.0002.8D08] # CJK COMPATIBILITY IDEOGRAPH-FAC1
-2F9D6 ; [.313B.0039.0002.8D1B][.31C1.0020.0002.8D1B][.322B.0020.0002.8D1B] # CJK COMPATIBILITY IDEOGRAPH-2F9D6
-2F9D7 ; [.313B.0058.0002.8D77][.31CD.0020.0002.8D77] # CJK COMPATIBILITY IDEOGRAPH-2F9D7
-2F9DA ; [.3142.0027.0002.8DCB][.31B9.0020.0002.8DCB][.321E.0020.0002.8DCB] # CJK COMPATIBILITY IDEOGRAPH-2F9DA
-F937 ; [.3140.002C.0002.8DEF][.31C1.0020.0002.8DEF] # CJK COMPATIBILITY IDEOGRAPH-F937
-F902 ; [.3149.002D.0002.8ECA][.31B9.0020.0002.8ECA] # CJK COMPATIBILITY IDEOGRAPH-F902
-F998 ; [.3140.002A.0002.8F26][.31BF.0020.0002.8F26][.321A.0020.0002.8F26] # CJK COMPATIBILITY IDEOGRAPH-F998
-F9D7 ; [.3140.0026.0002.8F2A][.31CA.0020.0002.8F2A][.321A.0020.0002.8F2A] # CJK COMPATIBILITY IDEOGRAPH-F9D7
-FAC2 ; [.3144.004F.0002.8F38][.31C6.0020.0002.8F38] # CJK COMPATIBILITY IDEOGRAPH-FAC2
-2F9DF ; [.3144.004F.0002.8F38][.31C6.0020.0002.8F38] # CJK COMPATIBILITY IDEOGRAPH-2F9DF
-FA07 ; [.3142.002F.0002.8F3B][.31C1.0020.0002.8F3B][.3217.0020.0002.8F3B] # CJK COMPATIBILITY IDEOGRAPH-FA07
-F98D ; [.3140.0026.0002.8F62][.31BF.0020.0002.8F62][.3217.0020.0002.8F62] # CJK COMPATIBILITY IDEOGRAPH-F98D
-F971 ; [.3147.003E.0002.8FB0][.31CD.0020.0002.8FB0][.321A.0020.0002.8FB0] # CJK COMPATIBILITY IDEOGRAPH-F971
-F99A ; [.3140.002B.0002.9023][.31BF.0020.0002.9023][.321A.0020.0002.9023] # CJK COMPATIBILITY IDEOGRAPH-F99A
-FA25 ; [.3146.0027.0002.9038][.31CD.0020.0002.9038][.321E.0020.0002.9038] # CJK COMPATIBILITY IDEOGRAPH-FA25
-FA67 ; [.3146.0027.0002.9038][.31CD.0020.0002.9038][.321E.0020.0002.9038] # CJK COMPATIBILITY IDEOGRAPH-FA67
-FAC3 ; [.3147.0041.0002.9072][.31CD.0020.0002.9072] # CJK COMPATIBILITY IDEOGRAPH-FAC3
-F9C3 ; [.3140.002B.0002.907C][.31C5.0020.0002.907C] # CJK COMPATIBILITY IDEOGRAPH-F9C3
-F913 ; [.3140.0028.0002.908F][.31B9.0020.0002.908F] # CJK COMPATIBILITY IDEOGRAPH-F913
-FA2E ; [.3140.0028.0002.90DE][.31B9.0020.0002.90DE][.322B.0020.0002.90DE] # CJK COMPATIBILITY IDEOGRAPH-FA2E
-FA26 ; [.313E.0045.0002.90FD][.31C1.0020.0002.90FD] # CJK COMPATIBILITY IDEOGRAPH-FA26
-F919 ; [.3140.0026.0002.916A][.31B9.0020.0002.916A][.3217.0020.0002.916A] # CJK COMPATIBILITY IDEOGRAPH-F919
-F9B7 ; [.3140.0024.0002.91B4][.31C0.0020.0002.91B4] # CJK COMPATIBILITY IDEOGRAPH-F9B7
-F9E9 ; [.3140.0036.0002.91CC][.31CD.0020.0002.91CC] # CJK COMPATIBILITY IDEOGRAPH-F9E9
-F97E ; [.3140.002D.0002.91CF][.31BB.0020.0002.91CF][.322B.0020.0002.91CF] # CJK COMPATIBILITY IDEOGRAPH-F97E
-F90A ; [.313B.0021.0002.91D1][.31CD.0020.0002.91D1][.3226.0020.0002.91D1] # CJK COMPATIBILITY IDEOGRAPH-F90A
-F9B1 ; [.3140.002D.0002.9234][.31BF.0020.0002.9234][.322B.0020.0002.9234] # CJK COMPATIBILITY IDEOGRAPH-F9B1
-2F9E7 ; [.3142.002F.0002.9238][.31B9.0020.0002.9238][.321E.0020.0002.9238] # CJK COMPATIBILITY IDEOGRAPH-2F9E7
-2F9EA ; [.3142.0039.0002.927C][.31BF.0020.0002.927C][.322B.0020.0002.927C] # CJK COMPATIBILITY IDEOGRAPH-2F9EA
-2F9E8 ; [.314D.003F.0002.92D7][.31BF.0020.0002.92D7][.321A.0020.0002.92D7] # CJK COMPATIBILITY IDEOGRAPH-2F9E8
-F93F ; [.3140.0025.0002.9304][.31C1.0020.0002.9304][.3217.0020.0002.9304] # CJK COMPATIBILITY IDEOGRAPH-F93F
-F99B ; [.3140.002C.0002.934A][.31BF.0020.0002.934A][.321A.0020.0002.934A] # CJK COMPATIBILITY IDEOGRAPH-F99B
-2F9EE ; [.313B.0033.0002.958B][.31BA.0020.0002.958B] # CJK COMPATIBILITY IDEOGRAPH-2F9EE
-F986 ; [.3140.002E.0002.95AD][.31BF.0020.0002.95AD] # CJK COMPATIBILITY IDEOGRAPH-F986
-F9C6 ; [.3146.0031.0002.962E][.31C2.0020.0002.962E][.321A.0020.0002.962E] # CJK COMPATIBILITY IDEOGRAPH-F9C6
-F951 ; [.3140.002D.0002.964B][.31C6.0020.0002.964B] # CJK COMPATIBILITY IDEOGRAPH-F951
-FA09 ; [.313B.0037.0002.964D][.31B9.0020.0002.964D][.322B.0020.0002.964D] # CJK COMPATIBILITY IDEOGRAPH-FA09
-F959 ; [.3140.0026.0002.9675][.31CB.0020.0002.9675][.322B.0020.0002.9675] # CJK COMPATIBILITY IDEOGRAPH-F959
-F9D3 ; [.3140.0023.0002.9678][.31CA.0020.0002.9678][.3217.0020.0002.9678] # CJK COMPATIBILITY IDEOGRAPH-F9D3
-FAC6 ; [.3147.004E.0002.967C][.31BD.0020.0002.967C] # CJK COMPATIBILITY IDEOGRAPH-FAC6
-F9DC ; [.3140.0021.0002.9686][.31CA.0020.0002.9686][.322B.0020.0002.9686] # CJK COMPATIBILITY IDEOGRAPH-F9DC
-F9F1 ; [.3140.0027.0002.96A3][.31CD.0020.0002.96A3][.321A.0020.0002.96A3] # CJK COMPATIBILITY IDEOGRAPH-F9F1
-FA2F ; [.3140.0025.0002.96B7][.31C0.0020.0002.96B7] # CJK COMPATIBILITY IDEOGRAPH-FA2F
-F9B8 ; [.3140.0026.0002.96B8][.31C0.0020.0002.96B8] # CJK COMPATIBILITY IDEOGRAPH-F9B8
-F9EA ; [.3140.0038.0002.96E2][.31CD.0020.0002.96E2] # CJK COMPATIBILITY IDEOGRAPH-F9EA
-FA68 ; [.313D.0023.0002.96E3][.31B9.0020.0002.96E3][.321A.0020.0002.96E3] # CJK COMPATIBILITY IDEOGRAPH-FA68
-FAC7 ; [.313D.0023.0002.96E3][.31B9.0020.0002.96E3][.321A.0020.0002.96E3] # CJK COMPATIBILITY IDEOGRAPH-FAC7
-F9B2 ; [.3140.002E.0002.96F6][.31BF.0020.0002.96F6][.322B.0020.0002.96F6] # CJK COMPATIBILITY IDEOGRAPH-F9B2
-F949 ; [.3140.0028.0002.96F7][.31C4.0020.0002.96F7] # CJK COMPATIBILITY IDEOGRAPH-F949
-2F9F5 ; [.3146.0031.0002.9723][.31C6.0020.0002.9723][.321A.0020.0002.9723] # CJK COMPATIBILITY IDEOGRAPH-2F9F5
-F938 ; [.3140.002E.0002.9732][.31C1.0020.0002.9732] # CJK COMPATIBILITY IDEOGRAPH-F938
-F9B3 ; [.3140.002F.0002.9748][.31BF.0020.0002.9748][.322B.0020.0002.9748] # CJK COMPATIBILITY IDEOGRAPH-F9B3
-FA1C ; [.3147.0054.0002.9756][.31BD.0020.0002.9756][.322B.0020.0002.9756] # CJK COMPATIBILITY IDEOGRAPH-FA1C
-FAC8 ; [.3147.0054.0002.9756][.31BD.0020.0002.9756][.322B.0020.0002.9756] # CJK COMPATIBILITY IDEOGRAPH-FAC8
-2F9FA ; [.314C.0034.0002.97E0][.31CD.0020.0002.97E0][.321E.0020.0002.97E0] # CJK COMPATIBILITY IDEOGRAPH-2F9FA
-FA69 ; [.314D.0026.0002.97FF][.31BB.0020.0002.97FF][.322B.0020.0002.97FF] # CJK COMPATIBILITY IDEOGRAPH-FA69
-FACA ; [.314D.0026.0002.97FF][.31BB.0020.0002.97FF][.322B.0020.0002.97FF] # CJK COMPATIBILITY IDEOGRAPH-FACA
-F9B4 ; [.3140.0030.0002.9818][.31BF.0020.0002.9818][.322B.0020.0002.9818] # CJK COMPATIBILITY IDEOGRAPH-F9B4
-FA6A ; [.3142.002E.0002.983B][.31CD.0020.0002.983B][.321A.0020.0002.983B] # CJK COMPATIBILITY IDEOGRAPH-FA6A
-FACC ; [.3142.002E.0002.983B][.31CD.0020.0002.983B][.321A.0020.0002.983B] # CJK COMPATIBILITY IDEOGRAPH-FACC
-F9D0 ; [.3140.002E.0002.985E][.31CA.0020.0002.985E] # CJK COMPATIBILITY IDEOGRAPH-F9D0
-2FA02 ; [.313B.005B.0002.98E2][.31CD.0020.0002.98E2] # CJK COMPATIBILITY IDEOGRAPH-2FA02
-FA2A ; [.3142.0039.0002.98EF][.31B9.0020.0002.98EF][.321A.0020.0002.98EF] # CJK COMPATIBILITY IDEOGRAPH-FA2A
-FA2B ; [.3144.005A.0002.98FC][.31B9.0020.0002.98FC] # CJK COMPATIBILITY IDEOGRAPH-FA2B
-FA2C ; [.313B.0030.0002.9928][.31C2.0020.0002.9928][.321A.0020.0002.9928] # CJK COMPATIBILITY IDEOGRAPH-FA2C
-F91A ; [.3140.0027.0002.99F1][.31B9.0020.0002.99F1][.3217.0020.0002.99F1] # CJK COMPATIBILITY IDEOGRAPH-F91A
-F987 ; [.3140.0030.0002.9A6A][.31BF.0020.0002.9A6A] # CJK COMPATIBILITY IDEOGRAPH-F987
-FACD ; [.3147.004C.0002.9B12][.31CD.0020.0002.9B12][.321A.0020.0002.9B12] # CJK COMPATIBILITY IDEOGRAPH-FACD
-2FA0A ; [.3147.004C.0002.9B12][.31CD.0020.0002.9B12][.321A.0020.0002.9B12] # CJK COMPATIBILITY IDEOGRAPH-2FA0A
-F939 ; [.3140.002F.0002.9B6F][.31C1.0020.0002.9B6F] # CJK COMPATIBILITY IDEOGRAPH-F939
-F9F2 ; [.3140.0028.0002.9C57][.31CD.0020.0002.9C57][.321A.0020.0002.9C57] # CJK COMPATIBILITY IDEOGRAPH-F9F2
-FA2D ; [.314D.0025.0002.9DB4][.31B9.0020.0002.9DB4][.3217.0020.0002.9DB4] # CJK COMPATIBILITY IDEOGRAPH-FA2D
-F93A ; [.3140.0030.0002.9DFA][.31C1.0020.0002.9DFA] # CJK COMPATIBILITY IDEOGRAPH-F93A
-F920 ; [.3140.0028.0002.9E1E][.31B9.0020.0002.9E1E][.321A.0020.0002.9E1E] # CJK COMPATIBILITY IDEOGRAPH-F920
-F940 ; [.3140.0026.0002.9E7F][.31C1.0020.0002.9E7F][.3217.0020.0002.9E7F] # CJK COMPATIBILITY IDEOGRAPH-F940
-F988 ; [.3140.0031.0002.9E97][.31BF.0020.0002.9E97] # CJK COMPATIBILITY IDEOGRAPH-F988
-F9F3 ; [.3140.0029.0002.9E9F][.31CD.0020.0002.9E9F][.321A.0020.0002.9E9F] # CJK COMPATIBILITY IDEOGRAPH-F9F3
-2FA15 ; [.3141.0028.0002.9EBB][.31B9.0020.0002.9EBB] # CJK COMPATIBILITY IDEOGRAPH-2FA15
-F989 ; [.3140.0032.0002.9ECE][.31BF.0020.0002.9ECE] # CJK COMPATIBILITY IDEOGRAPH-F989
-2FA1C ; [.3142.004A.0002.9F3B][.31CD.0020.0002.9F3B] # CJK COMPATIBILITY IDEOGRAPH-2FA1C
-F9C4 ; [.3140.0021.0002.9F8D][.31C5.0020.0002.9F8D][.322B.0020.0002.9F8D] # CJK COMPATIBILITY IDEOGRAPH-F9C4
-FAD9 ; [.3140.002E.0002.9F8E][.31C1.0020.0002.9F8E][.322B.0020.0002.9F8E] # CJK COMPATIBILITY IDEOGRAPH-FAD9
-F907 ; [.313B.0056.0002.9F9C][.31C6.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-F907
-F908 ; [.313B.0056.0002.9F9C][.31C6.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-F908
-FACE ; [.313B.0056.0002.9F9C][.31C6.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-FACE
+ entry => <<'ENTRY', # for DUCET v6.2.0
+F967 ; [.315D.0021.0002.4E0D][.31E1.0020.0002.4E0D] # CJK COMPATIBILITY IDEOGRAPH-F967
+FA70 ; [.315D.0032.0002.4E26][.31DA.0020.0002.4E26][.3246.0020.0002.4E26] # CJK COMPATIBILITY IDEOGRAPH-FA70
+F905 ; [.3156.0021.0002.4E32][.31DC.0020.0002.4E32][.3247.0020.0002.4E32] # CJK COMPATIBILITY IDEOGRAPH-F905
+2F801 ; [.3168.0021.0002.4E38][.31DD.0020.0002.4E38][.3235.0020.0002.4E38] # CJK COMPATIBILITY IDEOGRAPH-2F801
+F95E ; [.3159.0021.0002.4E39][.31D4.0020.0002.4E39][.3235.0020.0002.4E39] # CJK COMPATIBILITY IDEOGRAPH-F95E
+F91B ; [.315B.0021.0002.4E82][.31D4.0020.0002.4E82][.3235.0020.0002.4E82] # CJK COMPATIBILITY IDEOGRAPH-F91B
+F9BA ; [.315B.0021.0002.4E86][.31E0.0020.0002.4E86] # CJK COMPATIBILITY IDEOGRAPH-F9BA
+F977 ; [.315B.0021.0002.4EAE][.31D6.0020.0002.4EAE][.3246.0020.0002.4EAE] # CJK COMPATIBILITY IDEOGRAPH-F977
+F9FD ; [.315F.0021.0002.4EC0][.31E8.0020.0002.4EC0][.3242.0020.0002.4EC0] # CJK COMPATIBILITY IDEOGRAPH-F9FD
+F9A8 ; [.315B.0021.0002.4EE4][.31DA.0020.0002.4EE4][.3246.0020.0002.4EE4] # CJK COMPATIBILITY IDEOGRAPH-F9A8
+F92D ; [.315B.0021.0002.4F86][.31D5.0020.0002.4F86] # CJK COMPATIBILITY IDEOGRAPH-F92D
+F9B5 ; [.315B.0021.0002.4F8B][.31DB.0020.0002.4F8B] # CJK COMPATIBILITY IDEOGRAPH-F9B5
+FA30 ; [.315C.0021.0002.4FAE][.31DC.0020.0002.4FAE] # CJK COMPATIBILITY IDEOGRAPH-FA30
+2F805 ; [.315C.0021.0002.4FAE][.31DC.0020.0002.4FAE] # CJK COMPATIBILITY IDEOGRAPH-2F805
+2F806 ; [.3166.0023.0002.4FBB][.31D4.0020.0002.4FBB][.3239.0020.0002.4FBB] # CJK COMPATIBILITY IDEOGRAPH-2F806
+F965 ; [.3167.0021.0002.4FBF][.31DA.0020.0002.4FBF][.3235.0020.0002.4FBF] # CJK COMPATIBILITY IDEOGRAPH-F965
+2F807 ; [.315D.0022.0002.5002][.31DA.0020.0002.5002][.3246.0020.0002.5002] # CJK COMPATIBILITY IDEOGRAPH-2F807
+F9D4 ; [.315B.0022.0002.502B][.31E5.0020.0002.502B][.3235.0020.0002.502B] # CJK COMPATIBILITY IDEOGRAPH-F9D4
+2F809 ; [.315D.0022.0002.5099][.31E8.0020.0002.5099] # CJK COMPATIBILITY IDEOGRAPH-2F809
+2F80B ; [.315F.0023.0002.50CF][.31D4.0020.0002.50CF][.3246.0020.0002.50CF] # CJK COMPATIBILITY IDEOGRAPH-2F80B
+F9BB ; [.315B.0022.0002.50DA][.31E0.0020.0002.50DA] # CJK COMPATIBILITY IDEOGRAPH-F9BB
+FA31 ; [.315F.0023.0002.50E7][.31E6.0020.0002.50E7][.3246.0020.0002.50E7] # CJK COMPATIBILITY IDEOGRAPH-FA31
+2F80A ; [.315F.0023.0002.50E7][.31E6.0020.0002.50E7][.3246.0020.0002.50E7] # CJK COMPATIBILITY IDEOGRAPH-2F80A
+FA0C ; [.3161.0021.0002.5140][.31DC.0020.0002.5140][.3239.0020.0002.5140] # CJK COMPATIBILITY IDEOGRAPH-FA0C
+FA74 ; [.3164.0021.0002.5145][.31E1.0020.0002.5145][.3246.0020.0002.5145] # CJK COMPATIBILITY IDEOGRAPH-FA74
+FA32 ; [.315C.0021.0002.514D][.31DA.0020.0002.514D][.3235.0020.0002.514D] # CJK COMPATIBILITY IDEOGRAPH-FA32
+2F80E ; [.315C.0021.0002.514D][.31DA.0020.0002.514D][.3235.0020.0002.514D] # CJK COMPATIBILITY IDEOGRAPH-2F80E
+2F814 ; [.3158.0022.0002.5167][.31D5.0020.0002.5167] # CJK COMPATIBILITY IDEOGRAPH-2F814
+FA72 ; [.3162.0024.0002.5168][.31D8.0020.0002.5168][.3235.0020.0002.5168] # CJK COMPATIBILITY IDEOGRAPH-FA72
+F978 ; [.315B.0023.0002.5169][.31D6.0020.0002.5169][.3246.0020.0002.5169] # CJK COMPATIBILITY IDEOGRAPH-F978
+F9D1 ; [.315B.0021.0002.516D][.31E5.0020.0002.516D][.3232.0020.0002.516D] # CJK COMPATIBILITY IDEOGRAPH-F9D1
+2F811 ; [.3156.0026.0002.5177][.31E1.0020.0002.5177] # CJK COMPATIBILITY IDEOGRAPH-2F811
+FA75 ; [.3156.0024.0002.5180][.31E8.0020.0002.5180] # CJK COMPATIBILITY IDEOGRAPH-FA75
+2F815 ; [.3162.0021.0002.518D][.31D5.0020.0002.518D] # CJK COMPATIBILITY IDEOGRAPH-2F815
+2F8D2 ; [.315C.0022.0002.5192][.31DC.0020.0002.5192] # CJK COMPATIBILITY IDEOGRAPH-2F8D2
+2F8D3 ; [.315C.0022.0002.5195][.31DA.0020.0002.5195][.3235.0020.0002.5195] # CJK COMPATIBILITY IDEOGRAPH-2F8D3
+2F817 ; [.3161.0023.0002.5197][.31E0.0020.0002.5197][.3246.0020.0002.5197] # CJK COMPATIBILITY IDEOGRAPH-2F817
+2F818 ; [.3161.003B.0002.51A4][.31E2.0020.0002.51A4][.3235.0020.0002.51A4] # CJK COMPATIBILITY IDEOGRAPH-2F818
+2F81A ; [.3159.0022.0002.51AC][.31DC.0020.0002.51AC][.3246.0020.0002.51AC] # CJK COMPATIBILITY IDEOGRAPH-2F81A
+F92E ; [.315B.0021.0002.51B7][.31D5.0020.0002.51B7][.3246.0020.0002.51B7] # CJK COMPATIBILITY IDEOGRAPH-F92E
+F979 ; [.315B.0024.0002.51C9][.31D6.0020.0002.51C9][.3246.0020.0002.51C9] # CJK COMPATIBILITY IDEOGRAPH-F979
+F955 ; [.315B.0021.0002.51CC][.31E6.0020.0002.51CC][.3246.0020.0002.51CC] # CJK COMPATIBILITY IDEOGRAPH-F955
+F954 ; [.315B.0021.0002.51DC][.31E6.0020.0002.51DC][.3241.0020.0002.51DC] # CJK COMPATIBILITY IDEOGRAPH-F954
+FA15 ; [.3168.0022.0002.51DE][.31E7.0020.0002.51DE] # CJK COMPATIBILITY IDEOGRAPH-FA15
+2F81E ; [.3161.0023.0002.5203][.31E8.0020.0002.5203][.3235.0020.0002.5203] # CJK COMPATIBILITY IDEOGRAPH-2F81E
+FA00 ; [.3162.0021.0002.5207][.31D8.0020.0002.5207][.3239.0020.0002.5207] # CJK COMPATIBILITY IDEOGRAPH-FA00
+2F850 ; [.3162.0021.0002.5207][.31D8.0020.0002.5207][.3239.0020.0002.5207] # CJK COMPATIBILITY IDEOGRAPH-2F850
+F99C ; [.315B.0022.0002.5217][.31DA.0020.0002.5217][.3239.0020.0002.5217] # CJK COMPATIBILITY IDEOGRAPH-F99C
+F9DD ; [.315B.0022.0002.5229][.31E8.0020.0002.5229] # CJK COMPATIBILITY IDEOGRAPH-F9DD
+F9FF ; [.3162.0022.0002.523A][.31D4.0020.0002.523A] # CJK COMPATIBILITY IDEOGRAPH-F9FF
+2F820 ; [.3156.0021.0002.523B][.31D4.0020.0002.523B][.3232.0020.0002.523B] # CJK COMPATIBILITY IDEOGRAPH-2F820
+2F822 ; [.3168.0021.0002.5272][.31D4.0020.0002.5272][.3239.0020.0002.5272] # CJK COMPATIBILITY IDEOGRAPH-2F822
+2F823 ; [.315F.002D.0002.5277][.31D4.0020.0002.5277][.3235.0020.0002.5277] # CJK COMPATIBILITY IDEOGRAPH-2F823
+F9C7 ; [.315B.0021.0002.5289][.31E5.0020.0002.5289] # CJK COMPATIBILITY IDEOGRAPH-F9C7
+F98A ; [.315B.0021.0002.529B][.31DA.0020.0002.529B][.3232.0020.0002.529B] # CJK COMPATIBILITY IDEOGRAPH-F98A
+F99D ; [.315B.0023.0002.52A3][.31DA.0020.0002.52A3][.3239.0020.0002.52A3] # CJK COMPATIBILITY IDEOGRAPH-F99D
+FA76 ; [.3161.0024.0002.52C7][.31E0.0020.0002.52C7][.3246.0020.0002.52C7] # CJK COMPATIBILITY IDEOGRAPH-FA76
+2F825 ; [.3161.0024.0002.52C7][.31E0.0020.0002.52C7][.3246.0020.0002.52C7] # CJK COMPATIBILITY IDEOGRAPH-2F825
+FA33 ; [.315C.0023.0002.52C9][.31DA.0020.0002.52C9][.3235.0020.0002.52C9] # CJK COMPATIBILITY IDEOGRAPH-FA33
+2F826 ; [.315C.0023.0002.52C9][.31DA.0020.0002.52C9][.3235.0020.0002.52C9] # CJK COMPATIBILITY IDEOGRAPH-2F826
+F952 ; [.315B.0021.0002.52D2][.31E6.0020.0002.52D2][.3232.0020.0002.52D2] # CJK COMPATIBILITY IDEOGRAPH-F952
+F92F ; [.315B.0021.0002.52DE][.31DC.0020.0002.52DE] # CJK COMPATIBILITY IDEOGRAPH-F92F
+FA34 ; [.3156.0023.0002.52E4][.31E6.0020.0002.52E4][.3235.0020.0002.52E4] # CJK COMPATIBILITY IDEOGRAPH-FA34
+2F827 ; [.3156.0023.0002.52E4][.31E6.0020.0002.52E4][.3235.0020.0002.52E4] # CJK COMPATIBILITY IDEOGRAPH-2F827
+F97F ; [.315B.0023.0002.52F5][.31DA.0020.0002.52F5] # CJK COMPATIBILITY IDEOGRAPH-F97F
+FA77 ; [.3162.0022.0002.52FA][.31D4.0020.0002.52FA][.3232.0020.0002.52FA] # CJK COMPATIBILITY IDEOGRAPH-FA77
+2F828 ; [.3162.0022.0002.52FA][.31D4.0020.0002.52FA][.3232.0020.0002.52FA] # CJK COMPATIBILITY IDEOGRAPH-2F828
+2F829 ; [.3167.0022.0002.5305][.31DC.0020.0002.5305] # CJK COMPATIBILITY IDEOGRAPH-2F829
+F963 ; [.315D.0021.0002.5317][.31E1.0020.0002.5317][.3232.0020.0002.5317] # CJK COMPATIBILITY IDEOGRAPH-F963
+2F82B ; [.315D.0021.0002.5317][.31E1.0020.0002.5317][.3232.0020.0002.5317] # CJK COMPATIBILITY IDEOGRAPH-2F82B
+F9EB ; [.3158.0021.0002.533F][.31E8.0020.0002.533F][.3232.0020.0002.533F] # CJK COMPATIBILITY IDEOGRAPH-F9EB
+2F82C ; [.3168.0021.0002.5349][.31E3.0020.0002.5349] # CJK COMPATIBILITY IDEOGRAPH-2F82C
+FA35 ; [.315D.0025.0002.5351][.31E8.0020.0002.5351] # CJK COMPATIBILITY IDEOGRAPH-FA35
+2F82D ; [.315D.0025.0002.5351][.31E8.0020.0002.5351] # CJK COMPATIBILITY IDEOGRAPH-2F82D
+2F82E ; [.315D.0022.0002.535A][.31D4.0020.0002.535A][.3232.0020.0002.535A] # CJK COMPATIBILITY IDEOGRAPH-2F82E
+2F82F ; [.3162.0022.0002.5373][.31E6.0020.0002.5373][.3232.0020.0002.5373] # CJK COMPATIBILITY IDEOGRAPH-2F82F
+F91C ; [.315B.0022.0002.5375][.31D4.0020.0002.5375][.3235.0020.0002.5375] # CJK COMPATIBILITY IDEOGRAPH-F91C
+2F830 ; [.3162.0021.0002.537D][.31E6.0020.0002.537D][.3232.0020.0002.537D] # CJK COMPATIBILITY IDEOGRAPH-2F830
+2F831 ; [.3156.0028.0002.537F][.31DA.0020.0002.537F][.3246.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F831
+2F832 ; [.3156.0028.0002.537F][.31DA.0020.0002.537F][.3246.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F832
+2F833 ; [.3156.0028.0002.537F][.31DA.0020.0002.537F][.3246.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F833
+F96B ; [.3164.0022.0002.53C3][.31D4.0020.0002.53C3][.3241.0020.0002.53C3] # CJK COMPATIBILITY IDEOGRAPH-F96B
+2F836 ; [.3156.0022.0002.53CA][.31E6.0020.0002.53CA][.3242.0020.0002.53CA] # CJK COMPATIBILITY IDEOGRAPH-2F836
+2F837 ; [.315F.005E.0002.53DF][.31E1.0020.0002.53DF] # CJK COMPATIBILITY IDEOGRAPH-2F837
+F906 ; [.3156.002A.0002.53E5][.31E1.0020.0002.53E5] # CJK COMPATIBILITY IDEOGRAPH-F906
+2F839 ; [.3156.0021.0002.53EB][.31E5.0020.0002.53EB] # CJK COMPATIBILITY IDEOGRAPH-2F839
+2F83A ; [.3162.0022.0002.53F1][.31E8.0020.0002.53F1][.3239.0020.0002.53F1] # CJK COMPATIBILITY IDEOGRAPH-2F83A
+F9DE ; [.315B.0024.0002.540F][.31E8.0020.0002.540F] # CJK COMPATIBILITY IDEOGRAPH-F9DE
+F9ED ; [.315B.0021.0002.541D][.31E8.0020.0002.541D][.3235.0020.0002.541D] # CJK COMPATIBILITY IDEOGRAPH-F9ED
+2F83D ; [.3168.0021.0002.5438][.31E6.0020.0002.5438][.3242.0020.0002.5438] # CJK COMPATIBILITY IDEOGRAPH-2F83D
+F980 ; [.315B.0024.0002.5442][.31DA.0020.0002.5442] # CJK COMPATIBILITY IDEOGRAPH-F980
+2F83E ; [.3162.0026.0002.5448][.31D8.0020.0002.5448][.3246.0020.0002.5448] # CJK COMPATIBILITY IDEOGRAPH-2F83E
+2F83F ; [.3162.0028.0002.5468][.31E1.0020.0002.5468] # CJK COMPATIBILITY IDEOGRAPH-2F83F
+2F840 ; [.3161.0031.0002.54A2][.31D4.0020.0002.54A2][.3232.0020.0002.54A2] # CJK COMPATIBILITY IDEOGRAPH-2F840
+F99E ; [.3161.0025.0002.54BD][.31E8.0020.0002.54BD][.3235.0020.0002.54BD] # CJK COMPATIBILITY IDEOGRAPH-F99E
+2F842 ; [.3159.0021.0002.5510][.31D4.0020.0002.5510][.3246.0020.0002.5510] # CJK COMPATIBILITY IDEOGRAPH-2F842
+2F843 ; [.3156.0022.0002.5553][.31DB.0020.0002.5553] # CJK COMPATIBILITY IDEOGRAPH-2F843
+2F844 ; [.3168.0024.0002.5563][.31D4.0020.0002.5563][.3241.0020.0002.5563] # CJK COMPATIBILITY IDEOGRAPH-2F844
+2F845 ; [.315F.0024.0002.5584][.31D8.0020.0002.5584][.3235.0020.0002.5584] # CJK COMPATIBILITY IDEOGRAPH-2F845
+2F846 ; [.315F.0024.0002.5584][.31D8.0020.0002.5584][.3235.0020.0002.5584] # CJK COMPATIBILITY IDEOGRAPH-2F846
+F90B ; [.315B.0021.0002.5587][.31D4.0020.0002.5587] # CJK COMPATIBILITY IDEOGRAPH-F90B
+FA7A ; [.3168.0022.0002.5599][.31E3.0020.0002.5599] # CJK COMPATIBILITY IDEOGRAPH-FA7A
+2F847 ; [.3168.0022.0002.5599][.31E3.0020.0002.5599] # CJK COMPATIBILITY IDEOGRAPH-2F847
+FA36 ; [.3156.0022.0002.559D][.31D4.0020.0002.559D][.3239.0020.0002.559D] # CJK COMPATIBILITY IDEOGRAPH-FA36
+FA78 ; [.3156.0022.0002.559D][.31D4.0020.0002.559D][.3239.0020.0002.559D] # CJK COMPATIBILITY IDEOGRAPH-FA78
+2F848 ; [.3157.0021.0002.55AB][.31E8.0020.0002.55AB][.3232.0020.0002.55AB] # CJK COMPATIBILITY IDEOGRAPH-2F848
+FA7B ; [.3161.0022.0002.55E2][.31DC.0020.0002.55E2][.3239.0020.0002.55E2] # CJK COMPATIBILITY IDEOGRAPH-FA7B
+FA37 ; [.3166.0022.0002.5606][.31D4.0020.0002.5606][.3235.0020.0002.5606] # CJK COMPATIBILITY IDEOGRAPH-FA37
+2F84C ; [.3166.0022.0002.5606][.31D4.0020.0002.5606][.3235.0020.0002.5606] # CJK COMPATIBILITY IDEOGRAPH-2F84C
+FA38 ; [.3156.0026.0002.5668][.31E8.0020.0002.5668] # CJK COMPATIBILITY IDEOGRAPH-FA38
+2F84F ; [.315D.0023.0002.5674][.31E1.0020.0002.5674][.3235.0020.0002.5674] # CJK COMPATIBILITY IDEOGRAPH-2F84F
+F9A9 ; [.315B.0023.0002.56F9][.31DA.0020.0002.56F9][.3246.0020.0002.56F9] # CJK COMPATIBILITY IDEOGRAPH-F9A9
+2F84B ; [.3159.0024.0002.5716][.31DC.0020.0002.5716] # CJK COMPATIBILITY IDEOGRAPH-2F84B
+2F855 ; [.3168.0024.0002.578B][.31DA.0020.0002.578B][.3246.0020.0002.578B] # CJK COMPATIBILITY IDEOGRAPH-2F855
+2F852 ; [.315F.0021.0002.57CE][.31D8.0020.0002.57CE][.3246.0020.0002.57CE] # CJK COMPATIBILITY IDEOGRAPH-2F852
+2F853 ; [.315F.0021.0002.57F4][.31E8.0020.0002.57F4][.3232.0020.0002.57F4] # CJK COMPATIBILITY IDEOGRAPH-2F853
+2F857 ; [.315D.0023.0002.5831][.31DC.0020.0002.5831] # CJK COMPATIBILITY IDEOGRAPH-2F857
+FA39 ; [.315D.0033.0002.5840][.31DA.0020.0002.5840][.3246.0020.0002.5840] # CJK COMPATIBILITY IDEOGRAPH-FA39
+FA10 ; [.3164.0022.0002.585A][.31DC.0020.0002.585A][.3246.0020.0002.585A] # CJK COMPATIBILITY IDEOGRAPH-FA10
+FA7C ; [.3164.0022.0002.585A][.31DC.0020.0002.585A][.3246.0020.0002.585A] # CJK COMPATIBILITY IDEOGRAPH-FA7C
+F96C ; [.315F.0021.0002.585E][.31D5.0020.0002.585E] # CJK COMPATIBILITY IDEOGRAPH-F96C
+FA3A ; [.315C.0021.0002.58A8][.31E1.0020.0002.58A8][.3232.0020.0002.58A8] # CJK COMPATIBILITY IDEOGRAPH-FA3A
+FA7D ; [.315D.0024.0002.58B3][.31E1.0020.0002.58B3][.3235.0020.0002.58B3] # CJK COMPATIBILITY IDEOGRAPH-FA7D
+F94A ; [.315B.0021.0002.58D8][.31E1.0020.0002.58D8] # CJK COMPATIBILITY IDEOGRAPH-F94A
+F942 ; [.315B.0021.0002.58DF][.31DC.0020.0002.58DF][.3246.0020.0002.58DF] # CJK COMPATIBILITY IDEOGRAPH-F942
+2F85C ; [.315D.0032.0002.5906][.31DC.0020.0002.5906][.3246.0020.0002.5906] # CJK COMPATIBILITY IDEOGRAPH-2F85C
+2F85D ; [.3159.0021.0002.591A][.31D4.0020.0002.591A] # CJK COMPATIBILITY IDEOGRAPH-2F85D
+2F85E ; [.315C.0021.0002.5922][.31DC.0020.0002.5922][.3246.0020.0002.5922] # CJK COMPATIBILITY IDEOGRAPH-2F85E
+FA7E ; [.3161.0024.0002.5944][.31D8.0020.0002.5944][.3241.0020.0002.5944] # CJK COMPATIBILITY IDEOGRAPH-FA7E
+F90C ; [.3158.0023.0002.5948][.31D5.0020.0002.5948] # CJK COMPATIBILITY IDEOGRAPH-F90C
+F909 ; [.3156.0024.0002.5951][.31DB.0020.0002.5951] # CJK COMPATIBILITY IDEOGRAPH-F909
+FA7F ; [.315D.0025.0002.5954][.31E1.0020.0002.5954][.3235.0020.0002.5954] # CJK COMPATIBILITY IDEOGRAPH-FA7F
+2F85F ; [.315F.0030.0002.5962][.31D4.0020.0002.5962] # CJK COMPATIBILITY IDEOGRAPH-2F85F
+F981 ; [.3158.0021.0002.5973][.31DA.0020.0002.5973] # CJK COMPATIBILITY IDEOGRAPH-F981
+2F862 ; [.3168.0026.0002.59EC][.31E7.0020.0002.59EC] # CJK COMPATIBILITY IDEOGRAPH-2F862
+2F863 ; [.3161.002C.0002.5A1B][.31DC.0020.0002.5A1B] # CJK COMPATIBILITY IDEOGRAPH-2F863
+2F864 ; [.3166.0030.0002.5A27][.31D5.0020.0002.5A27] # CJK COMPATIBILITY IDEOGRAPH-2F864
+FA80 ; [.315D.0027.0002.5A62][.31E8.0020.0002.5A62] # CJK COMPATIBILITY IDEOGRAPH-FA80
+2F866 ; [.315D.002B.0002.5A66][.31E1.0020.0002.5A66] # CJK COMPATIBILITY IDEOGRAPH-2F866
+2F986 ; [.3161.0025.0002.5AB5][.31E8.0020.0002.5AB5][.3246.0020.0002.5AB5] # CJK COMPATIBILITY IDEOGRAPH-2F986
+2F869 ; [.3161.0041.0002.5B08][.31E0.0020.0002.5B08] # CJK COMPATIBILITY IDEOGRAPH-2F869
+FA81 ; [.3162.003C.0002.5B28][.31D4.0020.0002.5B28] # CJK COMPATIBILITY IDEOGRAPH-FA81
+2F86A ; [.315B.0029.0002.5B3E][.31D4.0020.0002.5B3E][.3235.0020.0002.5B3E] # CJK COMPATIBILITY IDEOGRAPH-2F86A
+2F86B ; [.315B.0029.0002.5B3E][.31D4.0020.0002.5B3E][.3235.0020.0002.5B3E] # CJK COMPATIBILITY IDEOGRAPH-2F86B
+FA04 ; [.3159.0021.0002.5B85][.31D5.0020.0002.5B85][.3232.0020.0002.5B85] # CJK COMPATIBILITY IDEOGRAPH-FA04
+2F86D ; [.3161.0029.0002.5BC3][.31E2.0020.0002.5BC3][.3235.0020.0002.5BC3] # CJK COMPATIBILITY IDEOGRAPH-2F86D
+2F86E ; [.3164.003B.0002.5BD8][.31E8.0020.0002.5BD8] # CJK COMPATIBILITY IDEOGRAPH-2F86E
+F95F ; [.3158.0021.0002.5BE7][.31DA.0020.0002.5BE7][.3246.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-F95F
+F9AA ; [.3158.0021.0002.5BE7][.31DA.0020.0002.5BE7][.3246.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-F9AA
+2F86F ; [.3158.0021.0002.5BE7][.31DA.0020.0002.5BE7][.3246.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-2F86F
+F9BC ; [.315B.0023.0002.5BEE][.31E0.0020.0002.5BEE] # CJK COMPATIBILITY IDEOGRAPH-F9BC
+F9BD ; [.3158.0021.0002.5C3F][.31E0.0020.0002.5C3F] # CJK COMPATIBILITY IDEOGRAPH-F9BD
+2F877 ; [.3159.0028.0002.5C60][.31DC.0020.0002.5C60] # CJK COMPATIBILITY IDEOGRAPH-2F877
+F94B ; [.315B.0023.0002.5C62][.31E1.0020.0002.5C62] # CJK COMPATIBILITY IDEOGRAPH-F94B
+FA3B ; [.3164.0021.0002.5C64][.31E6.0020.0002.5C64][.3246.0020.0002.5C64] # CJK COMPATIBILITY IDEOGRAPH-FA3B
+F9DF ; [.315B.0026.0002.5C65][.31E8.0020.0002.5C65] # CJK COMPATIBILITY IDEOGRAPH-F9DF
+2F879 ; [.315F.002A.0002.5CC0][.31E1.0020.0002.5CC0] # CJK COMPATIBILITY IDEOGRAPH-2F879
+F9D5 ; [.315B.0023.0002.5D19][.31E5.0020.0002.5D19][.3235.0020.0002.5D19] # CJK COMPATIBILITY IDEOGRAPH-F9D5
+F921 ; [.315B.0021.0002.5D50][.31D4.0020.0002.5D50][.3241.0020.0002.5D50] # CJK COMPATIBILITY IDEOGRAPH-F921
+F9AB ; [.315B.0025.0002.5DBA][.31DA.0020.0002.5DBA][.3246.0020.0002.5DBA] # CJK COMPATIBILITY IDEOGRAPH-F9AB
+2F881 ; [.315F.0021.0002.5DE1][.31E1.0020.0002.5DE1][.3235.0020.0002.5DE1] # CJK COMPATIBILITY IDEOGRAPH-2F881
+2F882 ; [.315F.0027.0002.5DE2][.31DC.0020.0002.5DE2] # CJK COMPATIBILITY IDEOGRAPH-2F882
+2F884 ; [.315F.0022.0002.5DFD][.31DC.0020.0002.5DFD][.3235.0020.0002.5DFD] # CJK COMPATIBILITY IDEOGRAPH-2F884
+2F885 ; [.315F.0029.0002.5E28][.31D9.0020.0002.5E28] # CJK COMPATIBILITY IDEOGRAPH-2F885
+2F886 ; [.315C.0025.0002.5E3D][.31DC.0020.0002.5E3D] # CJK COMPATIBILITY IDEOGRAPH-2F886
+F98E ; [.3158.0021.0002.5E74][.31DA.0020.0002.5E74][.3235.0020.0002.5E74] # CJK COMPATIBILITY IDEOGRAPH-F98E
+FA01 ; [.3159.002B.0002.5EA6][.31DC.0020.0002.5EA6] # CJK COMPATIBILITY IDEOGRAPH-FA01
+2F88C ; [.315D.0052.0002.5EB3][.31E8.0020.0002.5EB3] # CJK COMPATIBILITY IDEOGRAPH-2F88C
+2F88D ; [.315F.0025.0002.5EB6][.31D8.0020.0002.5EB6] # CJK COMPATIBILITY IDEOGRAPH-2F88D
+F9A2 ; [.315B.0021.0002.5EC9][.31DA.0020.0002.5EC9][.3241.0020.0002.5EC9] # CJK COMPATIBILITY IDEOGRAPH-F9A2
+F928 ; [.315B.0021.0002.5ECA][.31D4.0020.0002.5ECA][.3246.0020.0002.5ECA] # CJK COMPATIBILITY IDEOGRAPH-F928
+2F88E ; [.315B.0021.0002.5ECA][.31D4.0020.0002.5ECA][.3246.0020.0002.5ECA] # CJK COMPATIBILITY IDEOGRAPH-2F88E
+FA0B ; [.3156.0021.0002.5ED3][.31DD.0020.0002.5ED3][.3232.0020.0002.5ED3] # CJK COMPATIBILITY IDEOGRAPH-FA0B
+F982 ; [.315B.0025.0002.5EEC][.31DA.0020.0002.5EEC] # CJK COMPATIBILITY IDEOGRAPH-F982
+F943 ; [.315B.0022.0002.5F04][.31DC.0020.0002.5F04][.3246.0020.0002.5F04] # CJK COMPATIBILITY IDEOGRAPH-F943
+2F894 ; [.3159.004B.0002.5F22][.31DC.0020.0002.5F22] # CJK COMPATIBILITY IDEOGRAPH-2F894
+2F895 ; [.3159.004B.0002.5F22][.31DC.0020.0002.5F22] # CJK COMPATIBILITY IDEOGRAPH-2F895
+2F899 ; [.3168.0025.0002.5F62][.31DA.0020.0002.5F62][.3246.0020.0002.5F62] # CJK COMPATIBILITY IDEOGRAPH-2F899
+FA84 ; [.3164.0025.0002.5F69][.31D5.0020.0002.5F69] # CJK COMPATIBILITY IDEOGRAPH-FA84
+2F89A ; [.3162.0027.0002.5F6B][.31DC.0020.0002.5F6B] # CJK COMPATIBILITY IDEOGRAPH-2F89A
+F9D8 ; [.315B.0021.0002.5F8B][.31E5.0020.0002.5F8B][.3239.0020.0002.5F8B] # CJK COMPATIBILITY IDEOGRAPH-F9D8
+F966 ; [.315D.0026.0002.5FA9][.31DC.0020.0002.5FA9][.3232.0020.0002.5FA9] # CJK COMPATIBILITY IDEOGRAPH-F966
+FA85 ; [.3161.0043.0002.5FAD][.31E0.0020.0002.5FAD] # CJK COMPATIBILITY IDEOGRAPH-FA85
+2F89D ; [.3161.002A.0002.5FCD][.31E8.0020.0002.5FCD][.3235.0020.0002.5FCD] # CJK COMPATIBILITY IDEOGRAPH-2F89D
+2F89E ; [.3162.0026.0002.5FD7][.31E8.0020.0002.5FD7] # CJK COMPATIBILITY IDEOGRAPH-2F89E
+F9A3 ; [.3158.0021.0002.5FF5][.31DA.0020.0002.5FF5][.3241.0020.0002.5FF5] # CJK COMPATIBILITY IDEOGRAPH-F9A3
+F960 ; [.3158.0024.0002.6012][.31DC.0020.0002.6012] # CJK COMPATIBILITY IDEOGRAPH-F960
+F9AC ; [.315B.0026.0002.601C][.31DA.0020.0002.601C][.3246.0020.0002.601C] # CJK COMPATIBILITY IDEOGRAPH-F9AC
+2F8A0 ; [.3161.0042.0002.6081][.31DA.0020.0002.6081][.3235.0020.0002.6081] # CJK COMPATIBILITY IDEOGRAPH-2F8A0
+FA3D ; [.3168.0026.0002.6094][.31DF.0020.0002.6094] # CJK COMPATIBILITY IDEOGRAPH-FA3D
+2F8A3 ; [.3168.0026.0002.6094][.31DF.0020.0002.6094] # CJK COMPATIBILITY IDEOGRAPH-2F8A3
+2F8A5 ; [.3159.0022.0002.60C7][.31DC.0020.0002.60C7][.3235.0020.0002.60C7] # CJK COMPATIBILITY IDEOGRAPH-2F8A5
+FA86 ; [.315C.002D.0002.60D8][.31D4.0020.0002.60D8][.3246.0020.0002.60D8] # CJK COMPATIBILITY IDEOGRAPH-FA86
+F9B9 ; [.3161.0025.0002.60E1][.31D4.0020.0002.60E1][.3232.0020.0002.60E1] # CJK COMPATIBILITY IDEOGRAPH-F9B9
+FA88 ; [.3161.002E.0002.6108][.31E5.0020.0002.6108] # CJK COMPATIBILITY IDEOGRAPH-FA88
+F9D9 ; [.315B.0022.0002.6144][.31E5.0020.0002.6144][.3239.0020.0002.6144] # CJK COMPATIBILITY IDEOGRAPH-F9D9
+2F8A6 ; [.3162.002A.0002.6148][.31D4.0020.0002.6148] # CJK COMPATIBILITY IDEOGRAPH-2F8A6
+2F8A7 ; [.3168.0027.0002.614C][.31DD.0020.0002.614C][.3246.0020.0002.614C] # CJK COMPATIBILITY IDEOGRAPH-2F8A7
+2F8A9 ; [.3168.0027.0002.614C][.31DD.0020.0002.614C][.3246.0020.0002.614C] # CJK COMPATIBILITY IDEOGRAPH-2F8A9
+FA8A ; [.3161.0047.0002.6160][.31DC.0020.0002.6160] # CJK COMPATIBILITY IDEOGRAPH-FA8A
+FA3E ; [.3156.0028.0002.6168][.31D5.0020.0002.6168] # CJK COMPATIBILITY IDEOGRAPH-FA3E
+2F8AA ; [.315B.0031.0002.617A][.31E1.0020.0002.617A] # CJK COMPATIBILITY IDEOGRAPH-2F8AA
+FA3F ; [.3162.0022.0002.618E][.31E6.0020.0002.618E][.3246.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-FA3F
+FA89 ; [.3162.0022.0002.618E][.31E6.0020.0002.618E][.3246.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-FA89
+2F8AB ; [.3162.0022.0002.618E][.31E6.0020.0002.618E][.3246.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-2F8AB
+F98F ; [.315B.0021.0002.6190][.31DA.0020.0002.6190][.3235.0020.0002.6190] # CJK COMPATIBILITY IDEOGRAPH-F98F
+2F8AD ; [.315D.0028.0002.61A4][.31E1.0020.0002.61A4][.3235.0020.0002.61A4] # CJK COMPATIBILITY IDEOGRAPH-2F8AD
+2F8AE ; [.3164.0030.0002.61AF][.31D4.0020.0002.61AF][.3241.0020.0002.61AF] # CJK COMPATIBILITY IDEOGRAPH-2F8AE
+2F8AC ; [.3168.0021.0002.61B2][.31D8.0020.0002.61B2][.3235.0020.0002.61B2] # CJK COMPATIBILITY IDEOGRAPH-2F8AC
+2F8AF ; [.315C.0025.0002.61DE][.31DC.0020.0002.61DE][.3246.0020.0002.61DE] # CJK COMPATIBILITY IDEOGRAPH-2F8AF
+FA40 ; [.3162.0022.0002.61F2][.31E8.0020.0002.61F2][.3246.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-FA40
+FA8B ; [.3162.0022.0002.61F2][.31E8.0020.0002.61F2][.3246.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-FA8B
+2F8B0 ; [.3162.0022.0002.61F2][.31E8.0020.0002.61F2][.3246.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-2F8B0
+F90D ; [.315B.0022.0002.61F6][.31D4.0020.0002.61F6] # CJK COMPATIBILITY IDEOGRAPH-F90D
+2F8B1 ; [.315B.0022.0002.61F6][.31D4.0020.0002.61F6] # CJK COMPATIBILITY IDEOGRAPH-2F8B1
+F990 ; [.315B.0022.0002.6200][.31DA.0020.0002.6200][.3235.0020.0002.6200] # CJK COMPATIBILITY IDEOGRAPH-F990
+2F8B2 ; [.315F.0026.0002.6210][.31D8.0020.0002.6210][.3246.0020.0002.6210] # CJK COMPATIBILITY IDEOGRAPH-2F8B2
+F9D2 ; [.315B.0022.0002.622E][.31E5.0020.0002.622E][.3232.0020.0002.622E] # CJK COMPATIBILITY IDEOGRAPH-F9D2
+FA8C ; [.3159.0029.0002.6234][.31D5.0020.0002.6234] # CJK COMPATIBILITY IDEOGRAPH-FA8C
+2F8B5 ; [.3167.002B.0002.62B1][.31DC.0020.0002.62B1] # CJK COMPATIBILITY IDEOGRAPH-2F8B5
+F925 ; [.315B.0021.0002.62C9][.31D4.0020.0002.62C9][.3242.0020.0002.62C9] # CJK COMPATIBILITY IDEOGRAPH-F925
+F95B ; [.3158.0024.0002.62CF][.31D4.0020.0002.62CF] # CJK COMPATIBILITY IDEOGRAPH-F95B
+FA02 ; [.3164.0026.0002.62D3][.31D8.0020.0002.62D3][.3232.0020.0002.62D3] # CJK COMPATIBILITY IDEOGRAPH-FA02
+2F8B6 ; [.315D.0022.0002.62D4][.31D4.0020.0002.62D4][.3239.0020.0002.62D4] # CJK COMPATIBILITY IDEOGRAPH-2F8B6
+F973 ; [.315F.0022.0002.62FE][.31E6.0020.0002.62FE][.3242.0020.0002.62FE] # CJK COMPATIBILITY IDEOGRAPH-F973
+2F8B9 ; [.315C.0027.0002.633D][.31D4.0020.0002.633D][.3235.0020.0002.633D] # CJK COMPATIBILITY IDEOGRAPH-2F8B9
+2F8B7 ; [.3161.0027.0002.6350][.31DA.0020.0002.6350][.3235.0020.0002.6350] # CJK COMPATIBILITY IDEOGRAPH-2F8B7
+2F8BB ; [.315F.0039.0002.6368][.31D4.0020.0002.6368] # CJK COMPATIBILITY IDEOGRAPH-2F8BB
+F9A4 ; [.3158.0024.0002.637B][.31DA.0020.0002.637B][.3241.0020.0002.637B] # CJK COMPATIBILITY IDEOGRAPH-F9A4
+2F8BC ; [.315F.0029.0002.6383][.31DC.0020.0002.6383] # CJK COMPATIBILITY IDEOGRAPH-2F8BC
+F975 ; [.315B.0021.0002.63A0][.31D6.0020.0002.63A0][.3232.0020.0002.63A0] # CJK COMPATIBILITY IDEOGRAPH-F975
+2F8C1 ; [.3161.0025.0002.63A9][.31D8.0020.0002.63A9][.3241.0020.0002.63A9] # CJK COMPATIBILITY IDEOGRAPH-2F8C1
+FA8D ; [.3161.0030.0002.63C4][.31E5.0020.0002.63C4] # CJK COMPATIBILITY IDEOGRAPH-FA8D
+FA8E ; [.315F.0030.0002.641C][.31E1.0020.0002.641C] # CJK COMPATIBILITY IDEOGRAPH-FA8E
+2F8BF ; [.3162.0025.0002.6422][.31E8.0020.0002.6422][.3235.0020.0002.6422] # CJK COMPATIBILITY IDEOGRAPH-2F8BF
+2F8C3 ; [.315C.0021.0002.6469][.31D4.0020.0002.6469] # CJK COMPATIBILITY IDEOGRAPH-2F8C3
+F991 ; [.3158.0022.0002.649A][.31DA.0020.0002.649A][.3235.0020.0002.649A] # CJK COMPATIBILITY IDEOGRAPH-F991
+2F8C5 ; [.3168.0029.0002.649D][.31E4.0020.0002.649D] # CJK COMPATIBILITY IDEOGRAPH-2F8C5
+F930 ; [.315B.0023.0002.64C4][.31DC.0020.0002.64C4] # CJK COMPATIBILITY IDEOGRAPH-F930
+FA41 ; [.315C.0025.0002.654F][.31E8.0020.0002.654F][.3235.0020.0002.654F] # CJK COMPATIBILITY IDEOGRAPH-FA41
+2F8C8 ; [.315C.0025.0002.654F][.31E8.0020.0002.654F][.3235.0020.0002.654F] # CJK COMPATIBILITY IDEOGRAPH-2F8C8
+FA90 ; [.3161.0030.0002.6556][.31DC.0020.0002.6556] # CJK COMPATIBILITY IDEOGRAPH-FA90
+2F8C9 ; [.3156.0030.0002.656C][.31DA.0020.0002.656C][.3246.0020.0002.656C] # CJK COMPATIBILITY IDEOGRAPH-2F8C9
+F969 ; [.315F.0032.0002.6578][.31E1.0020.0002.6578] # CJK COMPATIBILITY IDEOGRAPH-F969
+F9BE ; [.315B.0025.0002.6599][.31E0.0020.0002.6599] # CJK COMPATIBILITY IDEOGRAPH-F9BE
+F983 ; [.315B.0028.0002.65C5][.31DA.0020.0002.65C5] # CJK COMPATIBILITY IDEOGRAPH-F983
+2F8CB ; [.3156.0035.0002.65E3][.31E8.0020.0002.65E3] # CJK COMPATIBILITY IDEOGRAPH-2F8CB
+F9E0 ; [.3161.0024.0002.6613][.31DA.0020.0002.6613][.3232.0020.0002.6613] # CJK COMPATIBILITY IDEOGRAPH-F9E0
+2F8CD ; [.3162.0026.0002.6649][.31E8.0020.0002.6649][.3235.0020.0002.6649] # CJK COMPATIBILITY IDEOGRAPH-2F8CD
+FA12 ; [.3164.0022.0002.6674][.31D8.0020.0002.6674][.3246.0020.0002.6674] # CJK COMPATIBILITY IDEOGRAPH-FA12
+FA91 ; [.3164.0022.0002.6674][.31D8.0020.0002.6674][.3246.0020.0002.6674] # CJK COMPATIBILITY IDEOGRAPH-FA91
+F9C5 ; [.3168.002A.0002.6688][.31E1.0020.0002.6688][.3235.0020.0002.6688] # CJK COMPATIBILITY IDEOGRAPH-F9C5
+FA43 ; [.315F.002B.0002.6691][.31D8.0020.0002.6691] # CJK COMPATIBILITY IDEOGRAPH-FA43
+2F8CF ; [.315F.002B.0002.6691][.31D8.0020.0002.6691] # CJK COMPATIBILITY IDEOGRAPH-2F8CF
+FA06 ; [.3167.0022.0002.66B4][.31DC.0020.0002.66B4][.3232.0020.0002.66B4] # CJK COMPATIBILITY IDEOGRAPH-FA06
+F98B ; [.315B.0022.0002.66C6][.31DA.0020.0002.66C6][.3232.0020.0002.66C6] # CJK COMPATIBILITY IDEOGRAPH-F98B
+F901 ; [.3156.0033.0002.66F4][.31DA.0020.0002.66F4][.3246.0020.0002.66F4] # CJK COMPATIBILITY IDEOGRAPH-F901
+2F8CC ; [.315F.002D.0002.66F8][.31D8.0020.0002.66F8] # CJK COMPATIBILITY IDEOGRAPH-2F8CC
+2F8D4 ; [.3164.0023.0002.6700][.31DF.0020.0002.6700] # CJK COMPATIBILITY IDEOGRAPH-2F8D4
+F929 ; [.315B.0022.0002.6717][.31D4.0020.0002.6717][.3246.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-F929
+FA92 ; [.315B.0022.0002.6717][.31D4.0020.0002.6717][.3246.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-FA92
+2F8D8 ; [.315B.0022.0002.6717][.31D4.0020.0002.6717][.3246.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-2F8D8
+FA93 ; [.315C.0025.0002.671B][.31D4.0020.0002.671B][.3246.0020.0002.671B] # CJK COMPATIBILITY IDEOGRAPH-FA93
+2F8D9 ; [.315C.0025.0002.671B][.31D4.0020.0002.671B][.3246.0020.0002.671B] # CJK COMPATIBILITY IDEOGRAPH-2F8D9
+F9E1 ; [.315B.0028.0002.674E][.31E8.0020.0002.674E] # CJK COMPATIBILITY IDEOGRAPH-F9E1
+2F8DC ; [.3167.0025.0002.6753][.31E0.0020.0002.6753] # CJK COMPATIBILITY IDEOGRAPH-2F8DC
+FA94 ; [.3162.002E.0002.6756][.31D4.0020.0002.6756][.3246.0020.0002.6756] # CJK COMPATIBILITY IDEOGRAPH-FA94
+2F8DB ; [.3156.0038.0002.675E][.31E8.0020.0002.675E] # CJK COMPATIBILITY IDEOGRAPH-2F8DB
+F9C8 ; [.3158.0021.0002.677B][.31E5.0020.0002.677B] # CJK COMPATIBILITY IDEOGRAPH-F9C8
+F9F4 ; [.315B.0021.0002.6797][.31E8.0020.0002.6797][.3241.0020.0002.6797] # CJK COMPATIBILITY IDEOGRAPH-F9F4
+F9C9 ; [.315B.0023.0002.67F3][.31E5.0020.0002.67F3] # CJK COMPATIBILITY IDEOGRAPH-F9C9
+F9DA ; [.315B.0023.0002.6817][.31E5.0020.0002.6817][.3239.0020.0002.6817] # CJK COMPATIBILITY IDEOGRAPH-F9DA
+F97A ; [.315B.0025.0002.6881][.31D6.0020.0002.6881][.3246.0020.0002.6881] # CJK COMPATIBILITY IDEOGRAPH-F97A
+FA44 ; [.315C.0027.0002.6885][.31D5.0020.0002.6885] # CJK COMPATIBILITY IDEOGRAPH-FA44
+2F8E2 ; [.315C.0027.0002.6885][.31D5.0020.0002.6885] # CJK COMPATIBILITY IDEOGRAPH-2F8E2
+F9E2 ; [.315B.0029.0002.68A8][.31E8.0020.0002.68A8] # CJK COMPATIBILITY IDEOGRAPH-F9E2
+2F8E8 ; [.315F.0062.0002.6942][.31D4.0020.0002.6942] # CJK COMPATIBILITY IDEOGRAPH-2F8E8
+2F8EA ; [.3156.002A.0002.69EA][.31D5.0020.0002.69EA] # CJK COMPATIBILITY IDEOGRAPH-2F8EA
+F914 ; [.3161.0028.0002.6A02][.31D4.0020.0002.6A02][.3232.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F914
+F95C ; [.3161.0028.0002.6A02][.31D4.0020.0002.6A02][.3232.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F95C
+F9BF ; [.3161.0028.0002.6A02][.31D4.0020.0002.6A02][.3232.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F9BF
+F94C ; [.315B.0024.0002.6A13][.31E1.0020.0002.6A13] # CJK COMPATIBILITY IDEOGRAPH-F94C
+F931 ; [.315B.0024.0002.6AD3][.31DC.0020.0002.6AD3] # CJK COMPATIBILITY IDEOGRAPH-F931
+2F8ED ; [.3162.0021.0002.6ADB][.31E6.0020.0002.6ADB][.3239.0020.0002.6ADB] # CJK COMPATIBILITY IDEOGRAPH-2F8ED
+F91D ; [.315B.0023.0002.6B04][.31D4.0020.0002.6B04][.3235.0020.0002.6B04] # CJK COMPATIBILITY IDEOGRAPH-F91D
+2F8EF ; [.3164.0028.0002.6B21][.31D4.0020.0002.6B21] # CJK COMPATIBILITY IDEOGRAPH-2F8EF
+2F8F1 ; [.3168.0025.0002.6B54][.31D8.0020.0002.6B54] # CJK COMPATIBILITY IDEOGRAPH-2F8F1
+2F8F3 ; [.315F.0023.0002.6B72][.31D9.0020.0002.6B72] # CJK COMPATIBILITY IDEOGRAPH-2F8F3
+F98C ; [.315B.0023.0002.6B77][.31DA.0020.0002.6B77][.3232.0020.0002.6B77] # CJK COMPATIBILITY IDEOGRAPH-F98C
+F9A5 ; [.315B.0023.0002.6BAE][.31DA.0020.0002.6BAE][.3241.0020.0002.6BAE] # CJK COMPATIBILITY IDEOGRAPH-F9A5
+F970 ; [.315F.0023.0002.6BBA][.31D4.0020.0002.6BBA][.3239.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-F970
+FA96 ; [.315F.0023.0002.6BBA][.31D4.0020.0002.6BBA][.3239.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-FA96
+2F8F5 ; [.315F.0023.0002.6BBA][.31D4.0020.0002.6BBA][.3239.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-2F8F5
+2F8FA ; [.315D.0025.0002.6C4E][.31D8.0020.0002.6C4E][.3241.0020.0002.6C4E] # CJK COMPATIBILITY IDEOGRAPH-2F8FA
+F972 ; [.3164.0024.0002.6C88][.31E8.0020.0002.6C88][.3241.0020.0002.6C88] # CJK COMPATIBILITY IDEOGRAPH-F972
+2F8FC ; [.3161.002B.0002.6CBF][.31DA.0020.0002.6CBF][.3235.0020.0002.6CBF] # CJK COMPATIBILITY IDEOGRAPH-2F8FC
+F968 ; [.3167.0024.0002.6CCC][.31E8.0020.0002.6CCC][.3239.0020.0002.6CCC] # CJK COMPATIBILITY IDEOGRAPH-F968
+F9E3 ; [.3158.0022.0002.6CE5][.31E8.0020.0002.6CE5] # CJK COMPATIBILITY IDEOGRAPH-F9E3
+F915 ; [.315B.0021.0002.6D1B][.31D4.0020.0002.6D1B][.3232.0020.0002.6D1B] # CJK COMPATIBILITY IDEOGRAPH-F915
+FA05 ; [.3159.002A.0002.6D1E][.31DC.0020.0002.6D1E][.3246.0020.0002.6D1E] # CJK COMPATIBILITY IDEOGRAPH-FA05
+2F900 ; [.3167.0029.0002.6D3E][.31D4.0020.0002.6D3E] # CJK COMPATIBILITY IDEOGRAPH-2F900
+F9CA ; [.315B.0025.0002.6D41][.31E5.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-F9CA
+FA97 ; [.315B.0025.0002.6D41][.31E5.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-FA97
+2F902 ; [.315B.0025.0002.6D41][.31E5.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-2F902
+2F903 ; [.3168.002E.0002.6D69][.31DC.0020.0002.6D69] # CJK COMPATIBILITY IDEOGRAPH-2F903
+F92A ; [.315B.0023.0002.6D6A][.31D4.0020.0002.6D6A][.3246.0020.0002.6D6A] # CJK COMPATIBILITY IDEOGRAPH-F92A
+FA45 ; [.3168.002A.0002.6D77][.31D5.0020.0002.6D77] # CJK COMPATIBILITY IDEOGRAPH-FA45
+2F901 ; [.3168.002A.0002.6D77][.31D5.0020.0002.6D77] # CJK COMPATIBILITY IDEOGRAPH-2F901
+2F904 ; [.3164.0025.0002.6D78][.31E8.0020.0002.6D78][.3241.0020.0002.6D78] # CJK COMPATIBILITY IDEOGRAPH-2F904
+2F905 ; [.3161.0022.0002.6D85][.31DA.0020.0002.6D85][.3239.0020.0002.6D85] # CJK COMPATIBILITY IDEOGRAPH-2F905
+F9F5 ; [.315B.0022.0002.6DCB][.31E8.0020.0002.6DCB][.3241.0020.0002.6DCB] # CJK COMPATIBILITY IDEOGRAPH-F9F5
+F94D ; [.315B.0025.0002.6DDA][.31E1.0020.0002.6DDA] # CJK COMPATIBILITY IDEOGRAPH-F94D
+F9D6 ; [.315B.0024.0002.6DEA][.31E5.0020.0002.6DEA][.3235.0020.0002.6DEA] # CJK COMPATIBILITY IDEOGRAPH-F9D6
+2F90E ; [.3161.0026.0002.6DF9][.31D8.0020.0002.6DF9][.3241.0020.0002.6DF9] # CJK COMPATIBILITY IDEOGRAPH-2F90E
+FA46 ; [.3162.002C.0002.6E1A][.31D8.0020.0002.6E1A] # CJK COMPATIBILITY IDEOGRAPH-FA46
+2F908 ; [.3168.002B.0002.6E2F][.31D4.0020.0002.6E2F][.3246.0020.0002.6E2F] # CJK COMPATIBILITY IDEOGRAPH-2F908
+2F909 ; [.3161.002B.0002.6E6E][.31E8.0020.0002.6E6E][.3235.0020.0002.6E6E] # CJK COMPATIBILITY IDEOGRAPH-2F909
+F9CB ; [.315B.0026.0002.6E9C][.31E5.0020.0002.6E9C] # CJK COMPATIBILITY IDEOGRAPH-F9CB
+F9EC ; [.3158.0022.0002.6EBA][.31E8.0020.0002.6EBA][.3232.0020.0002.6EBA] # CJK COMPATIBILITY IDEOGRAPH-F9EC
+FA99 ; [.3162.002B.0002.6ECB][.31D4.0020.0002.6ECB] # CJK COMPATIBILITY IDEOGRAPH-FA99
+2F90B ; [.3162.002B.0002.6ECB][.31D4.0020.0002.6ECB] # CJK COMPATIBILITY IDEOGRAPH-2F90B
+F904 ; [.3168.0022.0002.6ED1][.31DD.0020.0002.6ED1][.3239.0020.0002.6ED1] # CJK COMPATIBILITY IDEOGRAPH-F904
+F94E ; [.315B.0026.0002.6F0F][.31E1.0020.0002.6F0F] # CJK COMPATIBILITY IDEOGRAPH-F94E
+FA47 ; [.3168.0026.0002.6F22][.31D4.0020.0002.6F22][.3235.0020.0002.6F22] # CJK COMPATIBILITY IDEOGRAPH-FA47
+FA9A ; [.3168.0026.0002.6F22][.31D4.0020.0002.6F22][.3235.0020.0002.6F22] # CJK COMPATIBILITY IDEOGRAPH-FA9A
+F992 ; [.315B.0024.0002.6F23][.31DA.0020.0002.6F23][.3235.0020.0002.6F23] # CJK COMPATIBILITY IDEOGRAPH-F992
+2F90F ; [.3162.0033.0002.6F6E][.31DC.0020.0002.6F6E] # CJK COMPATIBILITY IDEOGRAPH-2F90F
+2F912 ; [.315D.003C.0002.6FC6][.31E1.0020.0002.6FC6][.3235.0020.0002.6FC6] # CJK COMPATIBILITY IDEOGRAPH-2F912
+F922 ; [.315B.0025.0002.6FEB][.31D4.0020.0002.6FEB][.3241.0020.0002.6FEB] # CJK COMPATIBILITY IDEOGRAPH-F922
+F984 ; [.315B.002A.0002.6FFE][.31DA.0020.0002.6FFE] # CJK COMPATIBILITY IDEOGRAPH-F984
+2F915 ; [.3161.002D.0002.701B][.31DA.0020.0002.701B][.3246.0020.0002.701B] # CJK COMPATIBILITY IDEOGRAPH-2F915
+FA9B ; [.3162.003D.0002.701E][.31D8.0020.0002.701E][.3246.0020.0002.701E] # CJK COMPATIBILITY IDEOGRAPH-FA9B
+2F914 ; [.3162.003D.0002.701E][.31D8.0020.0002.701E][.3246.0020.0002.701E] # CJK COMPATIBILITY IDEOGRAPH-2F914
+2F835 ; [.3168.002D.0002.7070][.31DF.0020.0002.7070] # CJK COMPATIBILITY IDEOGRAPH-2F835
+2F918 ; [.3162.002B.0002.707D][.31D5.0020.0002.707D] # CJK COMPATIBILITY IDEOGRAPH-2F918
+F9FB ; [.3162.002C.0002.7099][.31D4.0020.0002.7099] # CJK COMPATIBILITY IDEOGRAPH-F9FB
+2F91A ; [.3166.0028.0002.70AD][.31D4.0020.0002.70AD][.3235.0020.0002.70AD] # CJK COMPATIBILITY IDEOGRAPH-2F91A
+F99F ; [.315B.0025.0002.70C8][.31DA.0020.0002.70C8][.3239.0020.0002.70C8] # CJK COMPATIBILITY IDEOGRAPH-F99F
+F916 ; [.315B.0022.0002.70D9][.31D4.0020.0002.70D9][.3232.0020.0002.70D9] # CJK COMPATIBILITY IDEOGRAPH-F916
+F993 ; [.315B.0025.0002.7149][.31DA.0020.0002.7149][.3235.0020.0002.7149] # CJK COMPATIBILITY IDEOGRAPH-F993
+FA48 ; [.3162.002D.0002.716E][.31D4.0020.0002.716E] # CJK COMPATIBILITY IDEOGRAPH-FA48
+FA9C ; [.3162.002D.0002.716E][.31D4.0020.0002.716E] # CJK COMPATIBILITY IDEOGRAPH-FA9C
+F9C0 ; [.315B.0026.0002.71CE][.31E0.0020.0002.71CE] # CJK COMPATIBILITY IDEOGRAPH-F9C0
+F9EE ; [.315B.0023.0002.71D0][.31E8.0020.0002.71D0][.3235.0020.0002.71D0] # CJK COMPATIBILITY IDEOGRAPH-F9EE
+F932 ; [.315B.0027.0002.7210][.31DC.0020.0002.7210] # CJK COMPATIBILITY IDEOGRAPH-F932
+F91E ; [.315B.0026.0002.721B][.31D4.0020.0002.721B][.3235.0020.0002.721B] # CJK COMPATIBILITY IDEOGRAPH-F91E
+2F920 ; [.3164.0036.0002.7228][.31D4.0020.0002.7228][.3235.0020.0002.7228] # CJK COMPATIBILITY IDEOGRAPH-2F920
+FA9E ; [.3162.0028.0002.7235][.31D4.0020.0002.7235][.3232.0020.0002.7235] # CJK COMPATIBILITY IDEOGRAPH-FA9E
+2F921 ; [.3162.0028.0002.7235][.31D4.0020.0002.7235][.3232.0020.0002.7235] # CJK COMPATIBILITY IDEOGRAPH-2F921
+F946 ; [.315B.0023.0002.7262][.31DF.0020.0002.7262] # CJK COMPATIBILITY IDEOGRAPH-F946
+2F924 ; [.315F.0030.0002.7280][.31D8.0020.0002.7280] # CJK COMPATIBILITY IDEOGRAPH-2F924
+FA9F ; [.315D.0027.0002.72AF][.31D8.0020.0002.72AF][.3241.0020.0002.72AF] # CJK COMPATIBILITY IDEOGRAPH-FA9F
+F9FA ; [.315F.0035.0002.72C0][.31D4.0020.0002.72C0][.3246.0020.0002.72C0] # CJK COMPATIBILITY IDEOGRAPH-F9FA
+F92B ; [.315B.0024.0002.72FC][.31D4.0020.0002.72FC][.3246.0020.0002.72FC] # CJK COMPATIBILITY IDEOGRAPH-F92B
+FA16 ; [.3162.002E.0002.732A][.31D8.0020.0002.732A] # CJK COMPATIBILITY IDEOGRAPH-FA16
+FAA0 ; [.3162.002E.0002.732A][.31D8.0020.0002.732A] # CJK COMPATIBILITY IDEOGRAPH-FAA0
+F9A7 ; [.315B.0021.0002.7375][.31DA.0020.0002.7375][.3242.0020.0002.7375] # CJK COMPATIBILITY IDEOGRAPH-F9A7
+2F928 ; [.3159.0023.0002.737A][.31D4.0020.0002.737A][.3239.0020.0002.737A] # CJK COMPATIBILITY IDEOGRAPH-2F928
+F961 ; [.315F.0021.0002.7387][.31DC.0020.0002.7387][.3239.0020.0002.7387] # CJK COMPATIBILITY IDEOGRAPH-F961
+F9DB ; [.315F.0021.0002.7387][.31DC.0020.0002.7387][.3239.0020.0002.7387] # CJK COMPATIBILITY IDEOGRAPH-F9DB
+2F929 ; [.3161.0025.0002.738B][.31DD.0020.0002.738B][.3246.0020.0002.738B] # CJK COMPATIBILITY IDEOGRAPH-2F929
+F9AD ; [.315B.0027.0002.73B2][.31DA.0020.0002.73B2][.3246.0020.0002.73B2] # CJK COMPATIBILITY IDEOGRAPH-F9AD
+F917 ; [.315B.0023.0002.73DE][.31D4.0020.0002.73DE][.3232.0020.0002.73DE] # CJK COMPATIBILITY IDEOGRAPH-F917
+F9E4 ; [.315B.002D.0002.7406][.31E8.0020.0002.7406] # CJK COMPATIBILITY IDEOGRAPH-F9E4
+F9CC ; [.315B.0028.0002.7409][.31E5.0020.0002.7409] # CJK COMPATIBILITY IDEOGRAPH-F9CC
+FA4A ; [.3166.002B.0002.7422][.31D4.0020.0002.7422][.3232.0020.0002.7422] # CJK COMPATIBILITY IDEOGRAPH-FA4A
+2F92F ; [.3161.003D.0002.745C][.31E5.0020.0002.745C] # CJK COMPATIBILITY IDEOGRAPH-2F92F
+F9AE ; [.3168.002D.0002.7469][.31DA.0020.0002.7469][.3246.0020.0002.7469] # CJK COMPATIBILITY IDEOGRAPH-F9AE
+FAA1 ; [.3162.0057.0002.7471][.31D8.0020.0002.7471][.3235.0020.0002.7471] # CJK COMPATIBILITY IDEOGRAPH-FAA1
+2F930 ; [.3162.0057.0002.7471][.31D8.0020.0002.7471][.3235.0020.0002.7471] # CJK COMPATIBILITY IDEOGRAPH-2F930
+F994 ; [.315B.0026.0002.7489][.31DA.0020.0002.7489][.3235.0020.0002.7489] # CJK COMPATIBILITY IDEOGRAPH-F994
+F9EF ; [.315B.0024.0002.7498][.31E8.0020.0002.7498][.3235.0020.0002.7498] # CJK COMPATIBILITY IDEOGRAPH-F9EF
+2F932 ; [.3156.003A.0002.74CA][.31DA.0020.0002.74CA][.3246.0020.0002.74CA] # CJK COMPATIBILITY IDEOGRAPH-2F932
+F9CD ; [.315B.002A.0002.7559][.31E5.0020.0002.7559] # CJK COMPATIBILITY IDEOGRAPH-F9CD
+F976 ; [.315B.0022.0002.7565][.31D6.0020.0002.7565][.3232.0020.0002.7565] # CJK COMPATIBILITY IDEOGRAPH-F976
+F962 ; [.3161.002C.0002.7570][.31E8.0020.0002.7570] # CJK COMPATIBILITY IDEOGRAPH-F962
+2F938 ; [.3161.002C.0002.7570][.31E8.0020.0002.7570] # CJK COMPATIBILITY IDEOGRAPH-2F938
+F9E5 ; [.315B.002F.0002.75E2][.31E8.0020.0002.75E2] # CJK COMPATIBILITY IDEOGRAPH-F9E5
+2F93A ; [.3161.0059.0002.7610][.31E5.0020.0002.7610] # CJK COMPATIBILITY IDEOGRAPH-2F93A
+FAA5 ; [.3161.0023.0002.761F][.31DC.0020.0002.761F][.3235.0020.0002.761F] # CJK COMPATIBILITY IDEOGRAPH-FAA5
+F9C1 ; [.315B.0027.0002.7642][.31E0.0020.0002.7642] # CJK COMPATIBILITY IDEOGRAPH-F9C1
+F90E ; [.315B.0023.0002.7669][.31D4.0020.0002.7669] # CJK COMPATIBILITY IDEOGRAPH-F90E
+FA17 ; [.3161.0022.0002.76CA][.31E8.0020.0002.76CA][.3232.0020.0002.76CA] # CJK COMPATIBILITY IDEOGRAPH-FA17
+FAA6 ; [.3161.0022.0002.76CA][.31E8.0020.0002.76CA][.3232.0020.0002.76CA] # CJK COMPATIBILITY IDEOGRAPH-FAA6
+FAA7 ; [.315F.002B.0002.76DB][.31D8.0020.0002.76DB][.3246.0020.0002.76DB] # CJK COMPATIBILITY IDEOGRAPH-FAA7
+F933 ; [.315B.0028.0002.76E7][.31DC.0020.0002.76E7] # CJK COMPATIBILITY IDEOGRAPH-F933
+FAA8 ; [.3162.0021.0002.76F4][.31E8.0020.0002.76F4][.3232.0020.0002.76F4] # CJK COMPATIBILITY IDEOGRAPH-FAA8
+2F940 ; [.3162.0021.0002.76F4][.31E8.0020.0002.76F4][.3232.0020.0002.76F4] # CJK COMPATIBILITY IDEOGRAPH-2F940
+F96D ; [.315F.002C.0002.7701][.31D8.0020.0002.7701][.3246.0020.0002.7701] # CJK COMPATIBILITY IDEOGRAPH-F96D
+2F945 ; [.3162.0033.0002.771E][.31E8.0020.0002.771E][.3235.0020.0002.771E] # CJK COMPATIBILITY IDEOGRAPH-2F945
+FAAA ; [.3164.0023.0002.7740][.31D4.0020.0002.7740][.3232.0020.0002.7740] # CJK COMPATIBILITY IDEOGRAPH-FAAA
+2F94A ; [.3162.0034.0002.778B][.31E8.0020.0002.778B][.3235.0020.0002.778B] # CJK COMPATIBILITY IDEOGRAPH-2F94A
+F9CE ; [.315B.002C.0002.786B][.31E5.0020.0002.786B] # CJK COMPATIBILITY IDEOGRAPH-F9CE
+F93B ; [.315B.0021.0002.788C][.31DC.0020.0002.788C][.3232.0020.0002.788C] # CJK COMPATIBILITY IDEOGRAPH-F93B
+2F94F ; [.315B.0021.0002.788C][.31DC.0020.0002.788C][.3232.0020.0002.788C] # CJK COMPATIBILITY IDEOGRAPH-2F94F
+FA4B ; [.315D.0038.0002.7891][.31E8.0020.0002.7891] # CJK COMPATIBILITY IDEOGRAPH-FA4B
+F947 ; [.315B.0024.0002.78CA][.31DF.0020.0002.78CA] # CJK COMPATIBILITY IDEOGRAPH-F947
+F964 ; [.315D.0032.0002.78FB][.31D4.0020.0002.78FB][.3235.0020.0002.78FB] # CJK COMPATIBILITY IDEOGRAPH-F964
+F985 ; [.315B.002B.0002.792A][.31DA.0020.0002.792A] # CJK COMPATIBILITY IDEOGRAPH-F985
+FA4C ; [.315F.0046.0002.793E][.31D4.0020.0002.793E] # CJK COMPATIBILITY IDEOGRAPH-FA4C
+FA4E ; [.3156.004C.0002.7948][.31E8.0020.0002.7948] # CJK COMPATIBILITY IDEOGRAPH-FA4E
+FA4D ; [.3162.0035.0002.7949][.31E8.0020.0002.7949] # CJK COMPATIBILITY IDEOGRAPH-FA4D
+FA4F ; [.3161.0032.0002.7950][.31E1.0020.0002.7950] # CJK COMPATIBILITY IDEOGRAPH-FA4F
+FA50 ; [.3162.0039.0002.7956][.31DC.0020.0002.7956] # CJK COMPATIBILITY IDEOGRAPH-FA50
+2F953 ; [.3162.0039.0002.7956][.31DC.0020.0002.7956] # CJK COMPATIBILITY IDEOGRAPH-2F953
+FA51 ; [.3164.0023.0002.795D][.31E1.0020.0002.795D][.3232.0020.0002.795D] # CJK COMPATIBILITY IDEOGRAPH-FA51
+FA19 ; [.315F.002C.0002.795E][.31E8.0020.0002.795E][.3235.0020.0002.795E] # CJK COMPATIBILITY IDEOGRAPH-FA19
+FA1A ; [.315F.0037.0002.7965][.31D4.0020.0002.7965][.3246.0020.0002.7965] # CJK COMPATIBILITY IDEOGRAPH-FA1A
+F93C ; [.315B.0022.0002.797F][.31DC.0020.0002.797F][.3232.0020.0002.797F] # CJK COMPATIBILITY IDEOGRAPH-F93C
+FA52 ; [.3168.0027.0002.798D][.31DD.0020.0002.798D] # CJK COMPATIBILITY IDEOGRAPH-FA52
+FA53 ; [.3162.0044.0002.798E][.31D8.0020.0002.798E][.3246.0020.0002.798E] # CJK COMPATIBILITY IDEOGRAPH-FA53
+FA1B ; [.315D.0028.0002.798F][.31DC.0020.0002.798F][.3232.0020.0002.798F] # CJK COMPATIBILITY IDEOGRAPH-FA1B
+2F956 ; [.315D.0028.0002.798F][.31DC.0020.0002.798F][.3232.0020.0002.798F] # CJK COMPATIBILITY IDEOGRAPH-2F956
+F9B6 ; [.315B.0023.0002.79AE][.31DB.0020.0002.79AE] # CJK COMPATIBILITY IDEOGRAPH-F9B6
+F995 ; [.3158.0023.0002.79CA][.31DA.0020.0002.79CA][.3235.0020.0002.79CA] # CJK COMPATIBILITY IDEOGRAPH-F995
+2F957 ; [.3164.0024.0002.79EB][.31E1.0020.0002.79EB][.3239.0020.0002.79EB] # CJK COMPATIBILITY IDEOGRAPH-2F957
+F956 ; [.315B.0023.0002.7A1C][.31E6.0020.0002.7A1C][.3246.0020.0002.7A1C] # CJK COMPATIBILITY IDEOGRAPH-F956
+FA54 ; [.3156.0025.0002.7A40][.31DC.0020.0002.7A40][.3232.0020.0002.7A40] # CJK COMPATIBILITY IDEOGRAPH-FA54
+2F959 ; [.3156.0025.0002.7A40][.31DC.0020.0002.7A40][.3232.0020.0002.7A40] # CJK COMPATIBILITY IDEOGRAPH-2F959
+FA55 ; [.3159.0022.0002.7A81][.31DC.0020.0002.7A81][.3239.0020.0002.7A81] # CJK COMPATIBILITY IDEOGRAPH-FA55
+F9F7 ; [.315B.0022.0002.7ACB][.31E8.0020.0002.7ACB][.3242.0020.0002.7ACB] # CJK COMPATIBILITY IDEOGRAPH-F9F7
+F9F8 ; [.315B.0023.0002.7B20][.31E8.0020.0002.7B20][.3242.0020.0002.7B20] # CJK COMPATIBILITY IDEOGRAPH-F9F8
+FA56 ; [.3162.0027.0002.7BC0][.31D8.0020.0002.7BC0][.3239.0020.0002.7BC0] # CJK COMPATIBILITY IDEOGRAPH-FA56
+FAAD ; [.3162.0027.0002.7BC0][.31D8.0020.0002.7BC0][.3239.0020.0002.7BC0] # CJK COMPATIBILITY IDEOGRAPH-FAAD
+2F962 ; [.3162.003D.0002.7BC6][.31D8.0020.0002.7BC6][.3235.0020.0002.7BC6] # CJK COMPATIBILITY IDEOGRAPH-2F962
+2F963 ; [.3164.0026.0002.7BC9][.31E1.0020.0002.7BC9][.3232.0020.0002.7BC9] # CJK COMPATIBILITY IDEOGRAPH-2F963
+F9A6 ; [.315B.0025.0002.7C3E][.31DA.0020.0002.7C3E][.3241.0020.0002.7C3E] # CJK COMPATIBILITY IDEOGRAPH-F9A6
+F944 ; [.315B.0026.0002.7C60][.31DC.0020.0002.7C60][.3246.0020.0002.7C60] # CJK COMPATIBILITY IDEOGRAPH-F944
+F9F9 ; [.315B.0024.0002.7C92][.31E8.0020.0002.7C92][.3242.0020.0002.7C92] # CJK COMPATIBILITY IDEOGRAPH-F9F9
+FA1D ; [.3162.0047.0002.7CBE][.31D8.0020.0002.7CBE][.3246.0020.0002.7CBE] # CJK COMPATIBILITY IDEOGRAPH-FA1D
+FA03 ; [.3159.0029.0002.7CD6][.31D4.0020.0002.7CD6][.3246.0020.0002.7CD6] # CJK COMPATIBILITY IDEOGRAPH-FA03
+F97B ; [.315B.0029.0002.7CE7][.31D6.0020.0002.7CE7][.3246.0020.0002.7CE7] # CJK COMPATIBILITY IDEOGRAPH-F97B
+2F96A ; [.3156.004F.0002.7D00][.31E8.0020.0002.7D00] # CJK COMPATIBILITY IDEOGRAPH-2F96A
+F9CF ; [.3158.0022.0002.7D10][.31E5.0020.0002.7D10] # CJK COMPATIBILITY IDEOGRAPH-F9CF
+F96A ; [.315F.0023.0002.7D22][.31D5.0020.0002.7D22][.3232.0020.0002.7D22] # CJK COMPATIBILITY IDEOGRAPH-F96A
+F94F ; [.315B.0028.0002.7D2F][.31E1.0020.0002.7D2F] # CJK COMPATIBILITY IDEOGRAPH-F94F
+FAAF ; [.3162.0063.0002.7D5B][.31DC.0020.0002.7D5B] # CJK COMPATIBILITY IDEOGRAPH-FAAF
+2F96C ; [.315D.0034.0002.7D63][.31DA.0020.0002.7D63][.3246.0020.0002.7D63] # CJK COMPATIBILITY IDEOGRAPH-2F96C
+F93D ; [.315B.0023.0002.7DA0][.31DC.0020.0002.7DA0][.3232.0020.0002.7DA0] # CJK COMPATIBILITY IDEOGRAPH-F93D
+F957 ; [.315B.0024.0002.7DBE][.31E6.0020.0002.7DBE][.3246.0020.0002.7DBE] # CJK COMPATIBILITY IDEOGRAPH-F957
+2F96E ; [.3164.0030.0002.7DC7][.31E8.0020.0002.7DC7] # CJK COMPATIBILITY IDEOGRAPH-2F96E
+F996 ; [.315B.0027.0002.7DF4][.31DA.0020.0002.7DF4][.3235.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-F996
+FA57 ; [.315B.0027.0002.7DF4][.31DA.0020.0002.7DF4][.3235.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-FA57
+FAB0 ; [.315B.0027.0002.7DF4][.31DA.0020.0002.7DF4][.3235.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-FAB0
+FA58 ; [.3162.0036.0002.7E09][.31E8.0020.0002.7E09][.3235.0020.0002.7E09] # CJK COMPATIBILITY IDEOGRAPH-FA58
+F950 ; [.315B.0029.0002.7E37][.31E1.0020.0002.7E37] # CJK COMPATIBILITY IDEOGRAPH-F950
+FA59 ; [.315D.0026.0002.7E41][.31D8.0020.0002.7E41][.3235.0020.0002.7E41] # CJK COMPATIBILITY IDEOGRAPH-FA59
+2F970 ; [.315F.0052.0002.7E45][.31DC.0020.0002.7E45] # CJK COMPATIBILITY IDEOGRAPH-2F970
+FAB1 ; [.315D.0035.0002.7F3E][.31DA.0020.0002.7F3E][.3246.0020.0002.7F3E] # CJK COMPATIBILITY IDEOGRAPH-FAB1
+FA5A ; [.315F.0035.0002.7F72][.31D8.0020.0002.7F72] # CJK COMPATIBILITY IDEOGRAPH-FA5A
+F9E6 ; [.315B.0031.0002.7F79][.31E8.0020.0002.7F79] # CJK COMPATIBILITY IDEOGRAPH-F9E6
+F90F ; [.315B.0024.0002.7F85][.31D4.0020.0002.7F85] # CJK COMPATIBILITY IDEOGRAPH-F90F
+F9AF ; [.315B.0029.0002.7F9A][.31DA.0020.0002.7F9A][.3246.0020.0002.7F9A] # CJK COMPATIBILITY IDEOGRAPH-F9AF
+FA1E ; [.3161.0036.0002.7FBD][.31E1.0020.0002.7FBD] # CJK COMPATIBILITY IDEOGRAPH-FA1E
+2F979 ; [.3156.005A.0002.7FFA][.31DC.0020.0002.7FFA] # CJK COMPATIBILITY IDEOGRAPH-2F979
+F934 ; [.315B.0029.0002.8001][.31DC.0020.0002.8001] # CJK COMPATIBILITY IDEOGRAPH-F934
+FA5B ; [.3162.0033.0002.8005][.31D4.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-FA5B
+FAB2 ; [.3162.0033.0002.8005][.31D4.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-FAB2
+2F97A ; [.3162.0033.0002.8005][.31D4.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-2F97A
+F9B0 ; [.315B.002B.0002.8046][.31DA.0020.0002.8046][.3246.0020.0002.8046] # CJK COMPATIBILITY IDEOGRAPH-F9B0
+F997 ; [.315B.0028.0002.806F][.31DA.0020.0002.806F][.3235.0020.0002.806F] # CJK COMPATIBILITY IDEOGRAPH-F997
+2F97F ; [.3164.0028.0002.8070][.31DC.0020.0002.8070][.3246.0020.0002.8070] # CJK COMPATIBILITY IDEOGRAPH-2F97F
+F945 ; [.315B.0027.0002.807E][.31DC.0020.0002.807E][.3246.0020.0002.807E] # CJK COMPATIBILITY IDEOGRAPH-F945
+F953 ; [.315B.0022.0002.808B][.31E6.0020.0002.808B][.3232.0020.0002.808B] # CJK COMPATIBILITY IDEOGRAPH-F953
+2F8D6 ; [.3158.0023.0002.80AD][.31E1.0020.0002.80AD][.3239.0020.0002.80AD] # CJK COMPATIBILITY IDEOGRAPH-2F8D6
+2F982 ; [.3161.0024.0002.80B2][.31E5.0020.0002.80B2][.3232.0020.0002.80B2] # CJK COMPATIBILITY IDEOGRAPH-2F982
+2F985 ; [.315D.003F.0002.813E][.31E8.0020.0002.813E] # CJK COMPATIBILITY IDEOGRAPH-2F985
+F926 ; [.315B.0022.0002.81D8][.31D4.0020.0002.81D8][.3242.0020.0002.81D8] # CJK COMPATIBILITY IDEOGRAPH-F926
+F9F6 ; [.315B.0024.0002.81E8][.31E8.0020.0002.81E8][.3241.0020.0002.81E8] # CJK COMPATIBILITY IDEOGRAPH-F9F6
+FA5C ; [.3164.002A.0002.81ED][.31E4.0020.0002.81ED] # CJK COMPATIBILITY IDEOGRAPH-FA5C
+2F893 ; [.3161.002E.0002.8201][.31DA.0020.0002.8201] # CJK COMPATIBILITY IDEOGRAPH-2F893
+2F98B ; [.3161.002E.0002.8201][.31DA.0020.0002.8201] # CJK COMPATIBILITY IDEOGRAPH-2F98B
+F97C ; [.315B.002A.0002.826F][.31D6.0020.0002.826F][.3246.0020.0002.826F] # CJK COMPATIBILITY IDEOGRAPH-F97C
+2F990 ; [.3161.0037.0002.828B][.31E1.0020.0002.828B] # CJK COMPATIBILITY IDEOGRAPH-2F990
+2F991 ; [.3162.003B.0002.829D][.31E8.0020.0002.829D] # CJK COMPATIBILITY IDEOGRAPH-2F991
+2F993 ; [.3168.0029.0002.82B1][.31DD.0020.0002.82B1] # CJK COMPATIBILITY IDEOGRAPH-2F993
+2F994 ; [.315D.0035.0002.82B3][.31D4.0020.0002.82B3][.3246.0020.0002.82B3] # CJK COMPATIBILITY IDEOGRAPH-2F994
+2F995 ; [.3161.0029.0002.82BD][.31D4.0020.0002.82BD] # CJK COMPATIBILITY IDEOGRAPH-2F995
+F974 ; [.3161.0023.0002.82E5][.31D6.0020.0002.82E5][.3232.0020.0002.82E5] # CJK COMPATIBILITY IDEOGRAPH-F974
+2F998 ; [.3161.0023.0002.82E5][.31D6.0020.0002.82E5][.3232.0020.0002.82E5] # CJK COMPATIBILITY IDEOGRAPH-2F998
+2F996 ; [.3156.003A.0002.82E6][.31DC.0020.0002.82E6] # CJK COMPATIBILITY IDEOGRAPH-2F996
+2F999 ; [.3164.002E.0002.831D][.31D5.0020.0002.831D] # CJK COMPATIBILITY IDEOGRAPH-2F999
+2F99C ; [.3161.004C.0002.8323][.31DC.0020.0002.8323] # CJK COMPATIBILITY IDEOGRAPH-2F99C
+F9FE ; [.3159.0022.0002.8336][.31D4.0020.0002.8336] # CJK COMPATIBILITY IDEOGRAPH-F9FE
+FAB3 ; [.3168.0034.0002.8352][.31DD.0020.0002.8352][.3246.0020.0002.8352] # CJK COMPATIBILITY IDEOGRAPH-FAB3
+2F99D ; [.315C.002A.0002.83BD][.31D4.0020.0002.83BD][.3246.0020.0002.83BD] # CJK COMPATIBILITY IDEOGRAPH-2F99D
+F93E ; [.315B.0024.0002.83C9][.31DC.0020.0002.83C9][.3232.0020.0002.83C9] # CJK COMPATIBILITY IDEOGRAPH-F93E
+2F9A1 ; [.3156.0023.0002.83CA][.31E1.0020.0002.83CA][.3232.0020.0002.83CA] # CJK COMPATIBILITY IDEOGRAPH-2F9A1
+2F9A2 ; [.3156.0025.0002.83CC][.31E5.0020.0002.83CC][.3235.0020.0002.83CC] # CJK COMPATIBILITY IDEOGRAPH-2F9A2
+2F9A3 ; [.3164.0029.0002.83DC][.31D5.0020.0002.83DC] # CJK COMPATIBILITY IDEOGRAPH-2F9A3
+FAB4 ; [.3168.002A.0002.83EF][.31DD.0020.0002.83EF] # CJK COMPATIBILITY IDEOGRAPH-FAB4
+F958 ; [.315B.0025.0002.83F1][.31E6.0020.0002.83F1][.3246.0020.0002.83F1] # CJK COMPATIBILITY IDEOGRAPH-F958
+F918 ; [.315B.0025.0002.843D][.31D4.0020.0002.843D][.3232.0020.0002.843D] # CJK COMPATIBILITY IDEOGRAPH-F918
+F96E ; [.3161.0023.0002.8449][.31DA.0020.0002.8449][.3242.0020.0002.8449] # CJK COMPATIBILITY IDEOGRAPH-F96E
+FA5F ; [.3162.0034.0002.8457][.31D8.0020.0002.8457] # CJK COMPATIBILITY IDEOGRAPH-FA5F
+2F99F ; [.3162.0034.0002.8457][.31D8.0020.0002.8457] # CJK COMPATIBILITY IDEOGRAPH-2F99F
+F999 ; [.315B.0029.0002.84EE][.31DA.0020.0002.84EE][.3235.0020.0002.84EE] # CJK COMPATIBILITY IDEOGRAPH-F999
+2F9A8 ; [.3167.002A.0002.84F1][.31DA.0020.0002.84F1][.3246.0020.0002.84F1] # CJK COMPATIBILITY IDEOGRAPH-2F9A8
+F9C2 ; [.315B.002A.0002.84FC][.31E0.0020.0002.84FC] # CJK COMPATIBILITY IDEOGRAPH-F9C2
+2F9AC ; [.3161.0062.0002.8564][.31E5.0020.0002.8564] # CJK COMPATIBILITY IDEOGRAPH-2F9AC
+F923 ; [.315B.0028.0002.85CD][.31D4.0020.0002.85CD][.3241.0020.0002.85CD] # CJK COMPATIBILITY IDEOGRAPH-F923
+F9F0 ; [.315B.0025.0002.85FA][.31E8.0020.0002.85FA][.3235.0020.0002.85FA] # CJK COMPATIBILITY IDEOGRAPH-F9F0
+F935 ; [.315B.002A.0002.8606][.31DC.0020.0002.8606] # CJK COMPATIBILITY IDEOGRAPH-F935
+F91F ; [.315B.0027.0002.862D][.31D4.0020.0002.862D][.3235.0020.0002.862D] # CJK COMPATIBILITY IDEOGRAPH-F91F
+F910 ; [.315B.0025.0002.863F][.31D4.0020.0002.863F] # CJK COMPATIBILITY IDEOGRAPH-F910
+2F9B3 ; [.3168.0023.0002.8650][.31D4.0020.0002.8650][.3232.0020.0002.8650] # CJK COMPATIBILITY IDEOGRAPH-2F9B3
+F936 ; [.315B.002B.0002.865C][.31DC.0020.0002.865C] # CJK COMPATIBILITY IDEOGRAPH-F936
+2F9B4 ; [.315B.002B.0002.865C][.31DC.0020.0002.865C] # CJK COMPATIBILITY IDEOGRAPH-2F9B4
+2F9B5 ; [.3168.0025.0002.8667][.31E5.0020.0002.8667] # CJK COMPATIBILITY IDEOGRAPH-2F9B5
+2F9B7 ; [.3164.0034.0002.86A9][.31E8.0020.0002.86A9] # CJK COMPATIBILITY IDEOGRAPH-2F9B7
+2F9BC ; [.3162.0026.0002.8728][.31D8.0020.0002.8728][.3242.0020.0002.8728] # CJK COMPATIBILITY IDEOGRAPH-2F9BC
+F911 ; [.315B.0026.0002.87BA][.31D4.0020.0002.87BA] # CJK COMPATIBILITY IDEOGRAPH-F911
+F927 ; [.315B.0023.0002.881F][.31D4.0020.0002.881F][.3242.0020.0002.881F] # CJK COMPATIBILITY IDEOGRAPH-F927
+FA08 ; [.3168.0025.0002.884C][.31D5.0020.0002.884C][.3246.0020.0002.884C] # CJK COMPATIBILITY IDEOGRAPH-FA08
+2F9C4 ; [.3161.0030.0002.8863][.31E7.0020.0002.8863] # CJK COMPATIBILITY IDEOGRAPH-2F9C4
+F9A0 ; [.315B.0026.0002.88C2][.31DA.0020.0002.88C2][.3239.0020.0002.88C2] # CJK COMPATIBILITY IDEOGRAPH-F9A0
+F9E7 ; [.315B.0034.0002.88CF][.31E8.0020.0002.88CF] # CJK COMPATIBILITY IDEOGRAPH-F9E7
+F9E8 ; [.315B.0035.0002.88E1][.31E8.0020.0002.88E1] # CJK COMPATIBILITY IDEOGRAPH-F9E8
+F912 ; [.315B.0027.0002.88F8][.31D4.0020.0002.88F8] # CJK COMPATIBILITY IDEOGRAPH-F912
+FA60 ; [.3156.0028.0002.8910][.31D4.0020.0002.8910][.3239.0020.0002.8910] # CJK COMPATIBILITY IDEOGRAPH-FA60
+FAB6 ; [.3156.0034.0002.8941][.31D4.0020.0002.8941][.3246.0020.0002.8941] # CJK COMPATIBILITY IDEOGRAPH-FAB6
+F924 ; [.315B.0029.0002.8964][.31D4.0020.0002.8964][.3241.0020.0002.8964] # CJK COMPATIBILITY IDEOGRAPH-F924
+FAB7 ; [.315D.002D.0002.8986][.31DC.0020.0002.8986][.3232.0020.0002.8986] # CJK COMPATIBILITY IDEOGRAPH-FAB7
+FA0A ; [.3156.0028.0002.898B][.31DA.0020.0002.898B][.3235.0020.0002.898B] # CJK COMPATIBILITY IDEOGRAPH-FA0A
+FA61 ; [.315F.0037.0002.8996][.31E8.0020.0002.8996] # CJK COMPATIBILITY IDEOGRAPH-FA61
+FAB8 ; [.315F.0037.0002.8996][.31E8.0020.0002.8996] # CJK COMPATIBILITY IDEOGRAPH-FAB8
+2F9CF ; [.315F.0031.0002.8AA0][.31D8.0020.0002.8AA0][.3246.0020.0002.8AA0] # CJK COMPATIBILITY IDEOGRAPH-2F9CF
+F96F ; [.315F.002B.0002.8AAA][.31D8.0020.0002.8AAA][.3239.0020.0002.8AAA] # CJK COMPATIBILITY IDEOGRAPH-F96F
+F9A1 ; [.315F.002B.0002.8AAA][.31D8.0020.0002.8AAA][.3239.0020.0002.8AAA] # CJK COMPATIBILITY IDEOGRAPH-F9A1
+FAB9 ; [.3162.0046.0002.8ABF][.31DC.0020.0002.8ABF] # CJK COMPATIBILITY IDEOGRAPH-FAB9
+FABB ; [.3164.0026.0002.8ACB][.31D8.0020.0002.8ACB][.3246.0020.0002.8ACB] # CJK COMPATIBILITY IDEOGRAPH-FABB
+F97D ; [.315B.002B.0002.8AD2][.31D6.0020.0002.8AD2][.3246.0020.0002.8AD2] # CJK COMPATIBILITY IDEOGRAPH-F97D
+F941 ; [.315B.0021.0002.8AD6][.31DC.0020.0002.8AD6][.3235.0020.0002.8AD6] # CJK COMPATIBILITY IDEOGRAPH-F941
+FABE ; [.3161.0046.0002.8AED][.31E5.0020.0002.8AED] # CJK COMPATIBILITY IDEOGRAPH-FABE
+2F9D0 ; [.3161.0046.0002.8AED][.31E5.0020.0002.8AED] # CJK COMPATIBILITY IDEOGRAPH-2F9D0
+FA22 ; [.3162.0030.0002.8AF8][.31D9.0020.0002.8AF8] # CJK COMPATIBILITY IDEOGRAPH-FA22
+FABA ; [.3162.0030.0002.8AF8][.31D9.0020.0002.8AF8] # CJK COMPATIBILITY IDEOGRAPH-FABA
+F95D ; [.3158.0021.0002.8AFE][.31D4.0020.0002.8AFE][.3232.0020.0002.8AFE] # CJK COMPATIBILITY IDEOGRAPH-F95D
+FABD ; [.3158.0021.0002.8AFE][.31D4.0020.0002.8AFE][.3232.0020.0002.8AFE] # CJK COMPATIBILITY IDEOGRAPH-FABD
+FA62 ; [.3161.0022.0002.8B01][.31D4.0020.0002.8B01][.3239.0020.0002.8B01] # CJK COMPATIBILITY IDEOGRAPH-FA62
+FABC ; [.3161.0022.0002.8B01][.31D4.0020.0002.8B01][.3239.0020.0002.8B01] # CJK COMPATIBILITY IDEOGRAPH-FABC
+FA63 ; [.3156.002D.0002.8B39][.31E6.0020.0002.8B39][.3235.0020.0002.8B39] # CJK COMPATIBILITY IDEOGRAPH-FA63
+FABF ; [.3156.002D.0002.8B39][.31E6.0020.0002.8B39][.3235.0020.0002.8B39] # CJK COMPATIBILITY IDEOGRAPH-FABF
+F9FC ; [.315F.002C.0002.8B58][.31E8.0020.0002.8B58][.3232.0020.0002.8B58] # CJK COMPATIBILITY IDEOGRAPH-F9FC
+F95A ; [.3159.002A.0002.8B80][.31DC.0020.0002.8B80][.3232.0020.0002.8B80] # CJK COMPATIBILITY IDEOGRAPH-F95A
+FAC0 ; [.315D.0023.0002.8B8A][.31DA.0020.0002.8B8A][.3235.0020.0002.8B8A] # CJK COMPATIBILITY IDEOGRAPH-FAC0
+2F9D1 ; [.315D.0023.0002.8B8A][.31DA.0020.0002.8B8A][.3235.0020.0002.8B8A] # CJK COMPATIBILITY IDEOGRAPH-2F9D1
+F900 ; [.3156.0057.0002.8C48][.31E8.0020.0002.8C48] # CJK COMPATIBILITY IDEOGRAPH-F900
+2F9D2 ; [.315F.003B.0002.8C55][.31E8.0020.0002.8C55] # CJK COMPATIBILITY IDEOGRAPH-2F9D2
+2F9D4 ; [.3156.002E.0002.8CAB][.31DD.0020.0002.8CAB][.3235.0020.0002.8CAB] # CJK COMPATIBILITY IDEOGRAPH-2F9D4
+2F9D5 ; [.315D.0032.0002.8CC1][.31E1.0020.0002.8CC1][.3235.0020.0002.8CC1] # CJK COMPATIBILITY IDEOGRAPH-2F9D5
+F948 ; [.315B.0025.0002.8CC2][.31DF.0020.0002.8CC2] # CJK COMPATIBILITY IDEOGRAPH-F948
+F903 ; [.3156.0039.0002.8CC8][.31D4.0020.0002.8CC8] # CJK COMPATIBILITY IDEOGRAPH-F903
+FA64 ; [.315D.002D.0002.8CD3][.31E8.0020.0002.8CD3][.3235.0020.0002.8CD3] # CJK COMPATIBILITY IDEOGRAPH-FA64
+FA65 ; [.3162.002B.0002.8D08][.31E6.0020.0002.8D08][.3246.0020.0002.8D08] # CJK COMPATIBILITY IDEOGRAPH-FA65
+FAC1 ; [.3162.002B.0002.8D08][.31E6.0020.0002.8D08][.3246.0020.0002.8D08] # CJK COMPATIBILITY IDEOGRAPH-FAC1
+2F9D6 ; [.3156.0039.0002.8D1B][.31DC.0020.0002.8D1B][.3246.0020.0002.8D1B] # CJK COMPATIBILITY IDEOGRAPH-2F9D6
+2F9D7 ; [.3156.0058.0002.8D77][.31E8.0020.0002.8D77] # CJK COMPATIBILITY IDEOGRAPH-2F9D7
+2F9DA ; [.315D.0027.0002.8DCB][.31D4.0020.0002.8DCB][.3239.0020.0002.8DCB] # CJK COMPATIBILITY IDEOGRAPH-2F9DA
+F937 ; [.315B.002C.0002.8DEF][.31DC.0020.0002.8DEF] # CJK COMPATIBILITY IDEOGRAPH-F937
+F902 ; [.3164.002D.0002.8ECA][.31D4.0020.0002.8ECA] # CJK COMPATIBILITY IDEOGRAPH-F902
+F998 ; [.315B.002A.0002.8F26][.31DA.0020.0002.8F26][.3235.0020.0002.8F26] # CJK COMPATIBILITY IDEOGRAPH-F998
+F9D7 ; [.315B.0026.0002.8F2A][.31E5.0020.0002.8F2A][.3235.0020.0002.8F2A] # CJK COMPATIBILITY IDEOGRAPH-F9D7
+FAC2 ; [.315F.004F.0002.8F38][.31E1.0020.0002.8F38] # CJK COMPATIBILITY IDEOGRAPH-FAC2
+2F9DF ; [.315F.004F.0002.8F38][.31E1.0020.0002.8F38] # CJK COMPATIBILITY IDEOGRAPH-2F9DF
+FA07 ; [.315D.002F.0002.8F3B][.31DC.0020.0002.8F3B][.3232.0020.0002.8F3B] # CJK COMPATIBILITY IDEOGRAPH-FA07
+F98D ; [.315B.0026.0002.8F62][.31DA.0020.0002.8F62][.3232.0020.0002.8F62] # CJK COMPATIBILITY IDEOGRAPH-F98D
+F971 ; [.3162.003E.0002.8FB0][.31E8.0020.0002.8FB0][.3235.0020.0002.8FB0] # CJK COMPATIBILITY IDEOGRAPH-F971
+F99A ; [.315B.002B.0002.9023][.31DA.0020.0002.9023][.3235.0020.0002.9023] # CJK COMPATIBILITY IDEOGRAPH-F99A
+FA25 ; [.3161.0027.0002.9038][.31E8.0020.0002.9038][.3239.0020.0002.9038] # CJK COMPATIBILITY IDEOGRAPH-FA25
+FA67 ; [.3161.0027.0002.9038][.31E8.0020.0002.9038][.3239.0020.0002.9038] # CJK COMPATIBILITY IDEOGRAPH-FA67
+FAC3 ; [.3162.0041.0002.9072][.31E8.0020.0002.9072] # CJK COMPATIBILITY IDEOGRAPH-FAC3
+F9C3 ; [.315B.002B.0002.907C][.31E0.0020.0002.907C] # CJK COMPATIBILITY IDEOGRAPH-F9C3
+F913 ; [.315B.0028.0002.908F][.31D4.0020.0002.908F] # CJK COMPATIBILITY IDEOGRAPH-F913
+FA2E ; [.315B.0028.0002.90DE][.31D4.0020.0002.90DE][.3246.0020.0002.90DE] # CJK COMPATIBILITY IDEOGRAPH-FA2E
+FA26 ; [.3159.0045.0002.90FD][.31DC.0020.0002.90FD] # CJK COMPATIBILITY IDEOGRAPH-FA26
+F919 ; [.315B.0026.0002.916A][.31D4.0020.0002.916A][.3232.0020.0002.916A] # CJK COMPATIBILITY IDEOGRAPH-F919
+F9B7 ; [.315B.0024.0002.91B4][.31DB.0020.0002.91B4] # CJK COMPATIBILITY IDEOGRAPH-F9B7
+F9E9 ; [.315B.0036.0002.91CC][.31E8.0020.0002.91CC] # CJK COMPATIBILITY IDEOGRAPH-F9E9
+F97E ; [.315B.002D.0002.91CF][.31D6.0020.0002.91CF][.3246.0020.0002.91CF] # CJK COMPATIBILITY IDEOGRAPH-F97E
+F90A ; [.3156.0021.0002.91D1][.31E8.0020.0002.91D1][.3241.0020.0002.91D1] # CJK COMPATIBILITY IDEOGRAPH-F90A
+F9B1 ; [.315B.002D.0002.9234][.31DA.0020.0002.9234][.3246.0020.0002.9234] # CJK COMPATIBILITY IDEOGRAPH-F9B1
+2F9E7 ; [.315D.002F.0002.9238][.31D4.0020.0002.9238][.3239.0020.0002.9238] # CJK COMPATIBILITY IDEOGRAPH-2F9E7
+2F9EA ; [.315D.0039.0002.927C][.31DA.0020.0002.927C][.3246.0020.0002.927C] # CJK COMPATIBILITY IDEOGRAPH-2F9EA
+2F9E8 ; [.3168.003F.0002.92D7][.31DA.0020.0002.92D7][.3235.0020.0002.92D7] # CJK COMPATIBILITY IDEOGRAPH-2F9E8
+F93F ; [.315B.0025.0002.9304][.31DC.0020.0002.9304][.3232.0020.0002.9304] # CJK COMPATIBILITY IDEOGRAPH-F93F
+F99B ; [.315B.002C.0002.934A][.31DA.0020.0002.934A][.3235.0020.0002.934A] # CJK COMPATIBILITY IDEOGRAPH-F99B
+2F9EE ; [.3156.0033.0002.958B][.31D5.0020.0002.958B] # CJK COMPATIBILITY IDEOGRAPH-2F9EE
+F986 ; [.315B.002E.0002.95AD][.31DA.0020.0002.95AD] # CJK COMPATIBILITY IDEOGRAPH-F986
+F9C6 ; [.3161.0031.0002.962E][.31DD.0020.0002.962E][.3235.0020.0002.962E] # CJK COMPATIBILITY IDEOGRAPH-F9C6
+F951 ; [.315B.002D.0002.964B][.31E1.0020.0002.964B] # CJK COMPATIBILITY IDEOGRAPH-F951
+FA09 ; [.3156.0037.0002.964D][.31D4.0020.0002.964D][.3246.0020.0002.964D] # CJK COMPATIBILITY IDEOGRAPH-FA09
+F959 ; [.315B.0026.0002.9675][.31E6.0020.0002.9675][.3246.0020.0002.9675] # CJK COMPATIBILITY IDEOGRAPH-F959
+F9D3 ; [.315B.0023.0002.9678][.31E5.0020.0002.9678][.3232.0020.0002.9678] # CJK COMPATIBILITY IDEOGRAPH-F9D3
+FAC6 ; [.3162.004E.0002.967C][.31D8.0020.0002.967C] # CJK COMPATIBILITY IDEOGRAPH-FAC6
+F9DC ; [.315B.0021.0002.9686][.31E5.0020.0002.9686][.3246.0020.0002.9686] # CJK COMPATIBILITY IDEOGRAPH-F9DC
+F9F1 ; [.315B.0027.0002.96A3][.31E8.0020.0002.96A3][.3235.0020.0002.96A3] # CJK COMPATIBILITY IDEOGRAPH-F9F1
+FA2F ; [.315B.0025.0002.96B7][.31DB.0020.0002.96B7] # CJK COMPATIBILITY IDEOGRAPH-FA2F
+F9B8 ; [.315B.0026.0002.96B8][.31DB.0020.0002.96B8] # CJK COMPATIBILITY IDEOGRAPH-F9B8
+F9EA ; [.315B.0038.0002.96E2][.31E8.0020.0002.96E2] # CJK COMPATIBILITY IDEOGRAPH-F9EA
+FA68 ; [.3158.0023.0002.96E3][.31D4.0020.0002.96E3][.3235.0020.0002.96E3] # CJK COMPATIBILITY IDEOGRAPH-FA68
+FAC7 ; [.3158.0023.0002.96E3][.31D4.0020.0002.96E3][.3235.0020.0002.96E3] # CJK COMPATIBILITY IDEOGRAPH-FAC7
+F9B2 ; [.315B.002E.0002.96F6][.31DA.0020.0002.96F6][.3246.0020.0002.96F6] # CJK COMPATIBILITY IDEOGRAPH-F9B2
+F949 ; [.315B.0028.0002.96F7][.31DF.0020.0002.96F7] # CJK COMPATIBILITY IDEOGRAPH-F949
+2F9F5 ; [.3161.0031.0002.9723][.31E1.0020.0002.9723][.3235.0020.0002.9723] # CJK COMPATIBILITY IDEOGRAPH-2F9F5
+F938 ; [.315B.002E.0002.9732][.31DC.0020.0002.9732] # CJK COMPATIBILITY IDEOGRAPH-F938
+F9B3 ; [.315B.002F.0002.9748][.31DA.0020.0002.9748][.3246.0020.0002.9748] # CJK COMPATIBILITY IDEOGRAPH-F9B3
+FA1C ; [.3162.0054.0002.9756][.31D8.0020.0002.9756][.3246.0020.0002.9756] # CJK COMPATIBILITY IDEOGRAPH-FA1C
+FAC8 ; [.3162.0054.0002.9756][.31D8.0020.0002.9756][.3246.0020.0002.9756] # CJK COMPATIBILITY IDEOGRAPH-FAC8
+2F9FA ; [.3167.0034.0002.97E0][.31E8.0020.0002.97E0][.3239.0020.0002.97E0] # CJK COMPATIBILITY IDEOGRAPH-2F9FA
+FA69 ; [.3168.0026.0002.97FF][.31D6.0020.0002.97FF][.3246.0020.0002.97FF] # CJK COMPATIBILITY IDEOGRAPH-FA69
+FACA ; [.3168.0026.0002.97FF][.31D6.0020.0002.97FF][.3246.0020.0002.97FF] # CJK COMPATIBILITY IDEOGRAPH-FACA
+F9B4 ; [.315B.0030.0002.9818][.31DA.0020.0002.9818][.3246.0020.0002.9818] # CJK COMPATIBILITY IDEOGRAPH-F9B4
+FA6A ; [.315D.002E.0002.983B][.31E8.0020.0002.983B][.3235.0020.0002.983B] # CJK COMPATIBILITY IDEOGRAPH-FA6A
+FACC ; [.315D.002E.0002.983B][.31E8.0020.0002.983B][.3235.0020.0002.983B] # CJK COMPATIBILITY IDEOGRAPH-FACC
+F9D0 ; [.315B.002E.0002.985E][.31E5.0020.0002.985E] # CJK COMPATIBILITY IDEOGRAPH-F9D0
+2FA02 ; [.3156.005B.0002.98E2][.31E8.0020.0002.98E2] # CJK COMPATIBILITY IDEOGRAPH-2FA02
+FA2A ; [.315D.0039.0002.98EF][.31D4.0020.0002.98EF][.3235.0020.0002.98EF] # CJK COMPATIBILITY IDEOGRAPH-FA2A
+FA2B ; [.315F.005A.0002.98FC][.31D4.0020.0002.98FC] # CJK COMPATIBILITY IDEOGRAPH-FA2B
+FA2C ; [.3156.0030.0002.9928][.31DD.0020.0002.9928][.3235.0020.0002.9928] # CJK COMPATIBILITY IDEOGRAPH-FA2C
+F91A ; [.315B.0027.0002.99F1][.31D4.0020.0002.99F1][.3232.0020.0002.99F1] # CJK COMPATIBILITY IDEOGRAPH-F91A
+F987 ; [.315B.0030.0002.9A6A][.31DA.0020.0002.9A6A] # CJK COMPATIBILITY IDEOGRAPH-F987
+FACD ; [.3162.004C.0002.9B12][.31E8.0020.0002.9B12][.3235.0020.0002.9B12] # CJK COMPATIBILITY IDEOGRAPH-FACD
+2FA0A ; [.3162.004C.0002.9B12][.31E8.0020.0002.9B12][.3235.0020.0002.9B12] # CJK COMPATIBILITY IDEOGRAPH-2FA0A
+F939 ; [.315B.002F.0002.9B6F][.31DC.0020.0002.9B6F] # CJK COMPATIBILITY IDEOGRAPH-F939
+F9F2 ; [.315B.0028.0002.9C57][.31E8.0020.0002.9C57][.3235.0020.0002.9C57] # CJK COMPATIBILITY IDEOGRAPH-F9F2
+FA2D ; [.3168.0025.0002.9DB4][.31D4.0020.0002.9DB4][.3232.0020.0002.9DB4] # CJK COMPATIBILITY IDEOGRAPH-FA2D
+F93A ; [.315B.0030.0002.9DFA][.31DC.0020.0002.9DFA] # CJK COMPATIBILITY IDEOGRAPH-F93A
+F920 ; [.315B.0028.0002.9E1E][.31D4.0020.0002.9E1E][.3235.0020.0002.9E1E] # CJK COMPATIBILITY IDEOGRAPH-F920
+F940 ; [.315B.0026.0002.9E7F][.31DC.0020.0002.9E7F][.3232.0020.0002.9E7F] # CJK COMPATIBILITY IDEOGRAPH-F940
+F988 ; [.315B.0031.0002.9E97][.31DA.0020.0002.9E97] # CJK COMPATIBILITY IDEOGRAPH-F988
+F9F3 ; [.315B.0029.0002.9E9F][.31E8.0020.0002.9E9F][.3235.0020.0002.9E9F] # CJK COMPATIBILITY IDEOGRAPH-F9F3
+2FA15 ; [.315C.0028.0002.9EBB][.31D4.0020.0002.9EBB] # CJK COMPATIBILITY IDEOGRAPH-2FA15
+F989 ; [.315B.0032.0002.9ECE][.31DA.0020.0002.9ECE] # CJK COMPATIBILITY IDEOGRAPH-F989
+2FA1C ; [.315D.004A.0002.9F3B][.31E8.0020.0002.9F3B] # CJK COMPATIBILITY IDEOGRAPH-2FA1C
+F9C4 ; [.315B.0021.0002.9F8D][.31E0.0020.0002.9F8D][.3246.0020.0002.9F8D] # CJK COMPATIBILITY IDEOGRAPH-F9C4
+FAD9 ; [.315B.002E.0002.9F8E][.31DC.0020.0002.9F8E][.3246.0020.0002.9F8E] # CJK COMPATIBILITY IDEOGRAPH-FAD9
+F907 ; [.3156.0056.0002.9F9C][.31E1.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-F907
+F908 ; [.3156.0056.0002.9F9C][.31E1.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-F908
+FACE ; [.3156.0056.0002.9F9C][.31E1.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-FACE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kok.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kok.pl
index d6c4a4c3d33..e9218a427a8 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kok.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/kok.pl
@@ -1,11 +1,13 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0902 ; [.1FC1.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
-0901 ; [.1FC1.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
-0903 ; [.1FC1.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
-0933 ; [.2002.0020.0002.0933][.FFF1.0000.0000.0000] # DEVANAGARI LETTER LLA
-0934 ; [.2002.0020.0002.0933][.FFF1.0000.0000.0000][.0000.00F1.0002.093C] # DEVANAGARI LETTER LLLA
-0915 094D 0937 ; [.2002.0020.0002.0915][.FFF2.0000.0000.0000] # <DEVANAGARI LETTER KA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER SSA>
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0902 ; [.1FDC.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
+0901 ; [.1FDC.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
+0903 ; [.1FDC.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
+0950 ; [.1FDC.0020.0002.0950][.FFF0.0000.0000.0000] # DEVANAGARI OM
+0933 ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000] # DEVANAGARI LETTER LLA
+0934 ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000][.0000.00F1.0002.093C] # DEVANAGARI LETTER LLLA
+0915 094D 0937 ; [.201D.0020.0002.0915][.FFF2.0000.0000.0000] # <DEVANAGARI LETTER KA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER SSA>
+0939 ; [.201D.0020.0002.0939][.FFF0.0000.0000.0000] # DEVANAGARI LETTER HA
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ln.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ln.pl
index 7b2df5cda3b..ede03b8cf71 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ln.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ln.pl
@@ -1,12 +1,12 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-025B ; [.1632.0020.0002.025B] # LATIN SMALL LETTER OPEN E
-0190 ; [.1632.0020.0008.0190] # LATIN CAPITAL LETTER OPEN E
-2107 ; [.1632.0020.000A.2107] # EULER CONSTANT
-1D4B ; [.1632.0020.0014.1D4B] # MODIFIER LETTER SMALL OPEN E
-0254 ; [.1756.0021.0002.0254] # LATIN SMALL LETTER OPEN O
-0186 ; [.1756.0021.0008.0186] # LATIN CAPITAL LETTER OPEN O
-1D53 ; [.1756.0021.0014.1D53] # MODIFIER LETTER SMALL OPEN O
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+025B ; [.164D.0020.0002.025B] # LATIN SMALL LETTER OPEN E
+0190 ; [.164D.0020.0008.0190] # LATIN CAPITAL LETTER OPEN E
+2107 ; [.164D.0020.000A.2107] # EULER CONSTANT
+1D4B ; [.164D.0020.0014.1D4B] # MODIFIER LETTER SMALL OPEN E
+0254 ; [.1771.0021.0002.0254] # LATIN SMALL LETTER OPEN O
+0186 ; [.1771.0021.0008.0186] # LATIN CAPITAL LETTER OPEN O
+1D53 ; [.1771.0021.0014.1D53] # MODIFIER LETTER SMALL OPEN O
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lt.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lt.pl
index fe159333ceb..ee488695c23 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lt.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lt.pl
@@ -1,48 +1,48 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
# in cldr test/lt.xml why I-dot-acute > I-dot though i-dot-acute < i-dot ?
- entry => <<'ENTRY', # for DUCET v6.1.0
-0049 0307 ; [.16B2.0020.0008.0049][.0000.0052.0002.0307] # <LATIN CAPITAL LETTER I, COMBINING DOT ABOVE>
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0049 0307 ; [.16CD.0020.0008.0049][.0000.0052.0002.0307] # <LATIN CAPITAL LETTER I, COMBINING DOT ABOVE>
0307 0300 ; [.0000.0035.0002.0300] # <COMBINING DOT ABOVE, COMBINING GRAVE ACCENT>
0307 0301 ; [.0000.0032.0002.0301] # <COMBINING DOT ABOVE, COMBINING ACUTE ACCENT>
0307 0303 ; [.0000.004E.0002.0303] # <COMBINING DOT ABOVE, COMBINING TILDE>
-0105 ; [.15D4.0021.0002.0105] # LATIN SMALL LETTER A WITH OGONEK
-0061 0328 ; [.15D4.0021.0002.0105] # LATIN SMALL LETTER A WITH OGONEK
-0104 ; [.15D4.0021.0008.0104] # LATIN CAPITAL LETTER A WITH OGONEK
-0041 0328 ; [.15D4.0021.0008.0104] # LATIN CAPITAL LETTER A WITH OGONEK
-010D ; [.1603.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-0063 030C ; [.1603.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-010C ; [.1603.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0043 030C ; [.1603.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0119 ; [.1631.0021.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0065 0328 ; [.1631.0021.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0118 ; [.1631.0021.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-0045 0328 ; [.1631.0021.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-0117 ; [.1631.0022.0002.0117] # LATIN SMALL LETTER E WITH DOT ABOVE
-0065 0307 ; [.1631.0022.0002.0117] # LATIN SMALL LETTER E WITH DOT ABOVE
-0116 ; [.1631.0022.0008.0116] # LATIN CAPITAL LETTER E WITH DOT ABOVE
-0045 0307 ; [.1631.0022.0008.0116] # LATIN CAPITAL LETTER E WITH DOT ABOVE
-012F ; [.16B2.0021.0002.012F] # LATIN SMALL LETTER I WITH OGONEK
-0069 0328 ; [.16B2.0021.0002.012F] # LATIN SMALL LETTER I WITH OGONEK
-012E ; [.16B2.0021.0008.012E] # LATIN CAPITAL LETTER I WITH OGONEK
-0049 0328 ; [.16B2.0021.0008.012E] # LATIN CAPITAL LETTER I WITH OGONEK
-0079 ; [.16B2.0022.0002.0079] # LATIN SMALL LETTER Y
-0059 ; [.16B2.0022.0008.0059] # LATIN CAPITAL LETTER Y
-0161 ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0073 030C ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0053 030C ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0173 ; [.181B.0021.0002.0173] # LATIN SMALL LETTER U WITH OGONEK
-0075 0328 ; [.181B.0021.0002.0173] # LATIN SMALL LETTER U WITH OGONEK
-0172 ; [.181B.0021.0008.0172] # LATIN CAPITAL LETTER U WITH OGONEK
-0055 0328 ; [.181B.0021.0008.0172] # LATIN CAPITAL LETTER U WITH OGONEK
-016B ; [.181B.0022.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-0075 0304 ; [.181B.0022.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-016A ; [.181B.0022.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-0055 0304 ; [.181B.0022.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-017E ; [.187B.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-007A 030C ; [.187B.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-017D ; [.187B.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-005A 030C ; [.187B.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+0105 ; [.15EF.0021.0002.0105] # LATIN SMALL LETTER A WITH OGONEK
+0061 0328 ; [.15EF.0021.0002.0105] # LATIN SMALL LETTER A WITH OGONEK
+0104 ; [.15EF.0021.0008.0104] # LATIN CAPITAL LETTER A WITH OGONEK
+0041 0328 ; [.15EF.0021.0008.0104] # LATIN CAPITAL LETTER A WITH OGONEK
+010D ; [.161E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+0063 030C ; [.161E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+010C ; [.161E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0043 030C ; [.161E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0119 ; [.164C.0021.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.164C.0021.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.164C.0021.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.164C.0021.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0117 ; [.164C.0022.0002.0117] # LATIN SMALL LETTER E WITH DOT ABOVE
+0065 0307 ; [.164C.0022.0002.0117] # LATIN SMALL LETTER E WITH DOT ABOVE
+0116 ; [.164C.0022.0008.0116] # LATIN CAPITAL LETTER E WITH DOT ABOVE
+0045 0307 ; [.164C.0022.0008.0116] # LATIN CAPITAL LETTER E WITH DOT ABOVE
+012F ; [.16CD.0021.0002.012F] # LATIN SMALL LETTER I WITH OGONEK
+0069 0328 ; [.16CD.0021.0002.012F] # LATIN SMALL LETTER I WITH OGONEK
+012E ; [.16CD.0021.0008.012E] # LATIN CAPITAL LETTER I WITH OGONEK
+0049 0328 ; [.16CD.0021.0008.012E] # LATIN CAPITAL LETTER I WITH OGONEK
+0079 ; [.16CD.0022.0002.0079] # LATIN SMALL LETTER Y
+0059 ; [.16CD.0022.0008.0059] # LATIN CAPITAL LETTER Y
+0161 ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0173 ; [.1836.0021.0002.0173] # LATIN SMALL LETTER U WITH OGONEK
+0075 0328 ; [.1836.0021.0002.0173] # LATIN SMALL LETTER U WITH OGONEK
+0172 ; [.1836.0021.0008.0172] # LATIN CAPITAL LETTER U WITH OGONEK
+0055 0328 ; [.1836.0021.0008.0172] # LATIN CAPITAL LETTER U WITH OGONEK
+016B ; [.1836.0022.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+0075 0304 ; [.1836.0022.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.1836.0022.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+0055 0304 ; [.1836.0022.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+017E ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+007A 030C ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+017D ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+005A 030C ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lv.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lv.pl
index 880856fc0f4..80d858625df 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lv.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/lv.pl
@@ -1,37 +1,37 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-010D ; [.1615.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-0063 030C ; [.1615.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-010C ; [.1615.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0043 030C ; [.1615.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0123 ; [.1698.0020.0002.0123] # LATIN SMALL LETTER G WITH CEDILLA
-0067 0327 ; [.1698.0020.0002.0123] # LATIN SMALL LETTER G WITH CEDILLA
-0122 ; [.1698.0020.0008.0122] # LATIN CAPITAL LETTER G WITH CEDILLA
-0047 0327 ; [.1698.0020.0008.0122] # LATIN CAPITAL LETTER G WITH CEDILLA
-0137 ; [.16F5.0020.0002.0137] # LATIN SMALL LETTER K WITH CEDILLA
-006B 0327 ; [.16F5.0020.0002.0137] # LATIN SMALL LETTER K WITH CEDILLA
-0136 ; [.16F5.0020.0008.0136] # LATIN CAPITAL LETTER K WITH CEDILLA
-004B 0327 ; [.16F5.0020.0008.0136] # LATIN CAPITAL LETTER K WITH CEDILLA
-013C ; [.1725.0020.0002.013C] # LATIN SMALL LETTER L WITH CEDILLA
-006C 0327 ; [.1725.0020.0002.013C] # LATIN SMALL LETTER L WITH CEDILLA
-013B ; [.1725.0020.0008.013B] # LATIN CAPITAL LETTER L WITH CEDILLA
-004C 0327 ; [.1725.0020.0008.013B] # LATIN CAPITAL LETTER L WITH CEDILLA
-0146 ; [.1755.0020.0002.0146] # LATIN SMALL LETTER N WITH CEDILLA
-006E 0327 ; [.1755.0020.0002.0146] # LATIN SMALL LETTER N WITH CEDILLA
-0145 ; [.1755.0020.0008.0145] # LATIN CAPITAL LETTER N WITH CEDILLA
-004E 0327 ; [.1755.0020.0008.0145] # LATIN CAPITAL LETTER N WITH CEDILLA
-0157 ; [.17D7.0020.0002.0157] # LATIN SMALL LETTER R WITH CEDILLA
-0072 0327 ; [.17D7.0020.0002.0157] # LATIN SMALL LETTER R WITH CEDILLA
-0156 ; [.17D7.0020.0008.0156] # LATIN CAPITAL LETTER R WITH CEDILLA
-0052 0327 ; [.17D7.0020.0008.0156] # LATIN CAPITAL LETTER R WITH CEDILLA
-0161 ; [.17FA.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0073 030C ; [.17FA.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17FA.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0053 030C ; [.17FA.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-017E ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-007A 030C ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-017D ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-005A 030C ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+010D ; [.1630.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+0063 030C ; [.1630.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+010C ; [.1630.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0043 030C ; [.1630.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0123 ; [.16B3.0020.0002.0123] # LATIN SMALL LETTER G WITH CEDILLA
+0067 0327 ; [.16B3.0020.0002.0123] # LATIN SMALL LETTER G WITH CEDILLA
+0122 ; [.16B3.0020.0008.0122] # LATIN CAPITAL LETTER G WITH CEDILLA
+0047 0327 ; [.16B3.0020.0008.0122] # LATIN CAPITAL LETTER G WITH CEDILLA
+0137 ; [.1710.0020.0002.0137] # LATIN SMALL LETTER K WITH CEDILLA
+006B 0327 ; [.1710.0020.0002.0137] # LATIN SMALL LETTER K WITH CEDILLA
+0136 ; [.1710.0020.0008.0136] # LATIN CAPITAL LETTER K WITH CEDILLA
+004B 0327 ; [.1710.0020.0008.0136] # LATIN CAPITAL LETTER K WITH CEDILLA
+013C ; [.1740.0020.0002.013C] # LATIN SMALL LETTER L WITH CEDILLA
+006C 0327 ; [.1740.0020.0002.013C] # LATIN SMALL LETTER L WITH CEDILLA
+013B ; [.1740.0020.0008.013B] # LATIN CAPITAL LETTER L WITH CEDILLA
+004C 0327 ; [.1740.0020.0008.013B] # LATIN CAPITAL LETTER L WITH CEDILLA
+0146 ; [.1770.0020.0002.0146] # LATIN SMALL LETTER N WITH CEDILLA
+006E 0327 ; [.1770.0020.0002.0146] # LATIN SMALL LETTER N WITH CEDILLA
+0145 ; [.1770.0020.0008.0145] # LATIN CAPITAL LETTER N WITH CEDILLA
+004E 0327 ; [.1770.0020.0008.0145] # LATIN CAPITAL LETTER N WITH CEDILLA
+0157 ; [.17F2.0020.0002.0157] # LATIN SMALL LETTER R WITH CEDILLA
+0072 0327 ; [.17F2.0020.0002.0157] # LATIN SMALL LETTER R WITH CEDILLA
+0156 ; [.17F2.0020.0008.0156] # LATIN CAPITAL LETTER R WITH CEDILLA
+0052 0327 ; [.17F2.0020.0008.0156] # LATIN CAPITAL LETTER R WITH CEDILLA
+0161 ; [.1815.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.1815.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.1815.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.1815.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+017E ; [.18B1.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+007A 030C ; [.18B1.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+017D ; [.18B1.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+005A 030C ; [.18B1.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mk.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mk.pl
index 1e267cbe90f..a5a1de149b8 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mk.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mk.pl
@@ -1,45 +1,45 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0415, 0x0435, 0x0416, 0x0436,
0x0417, 0x0437, 0x0418, 0x0438, 0x0406, 0x0456, 0x041E, 0x043E,
0x04E8, 0x04E9, 0x0423, 0x0443, 0x0427, 0x0447, 0x042B, 0x044B,
0x042D, 0x044D, 0x0474, 0x0475],
- entry => <<'ENTRY', # for DUCET v6.1.0
-04D1 ; [.1976.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
-04D0 ; [.1976.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D3 ; [.1976.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D2 ; [.1976.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04DB ; [.1982.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DA ; [.1982.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-04D7 ; [.19BE.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
-04D6 ; [.19BE.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
-04DD ; [.19CA.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DC ; [.19CA.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DF ; [.19D7.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04DE ; [.19D7.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04E5 ; [.19EF.0020.0002.0438][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER I WITH DIAERESIS
-04E4 ; [.19EF.0020.0008.0418][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-0457 ; [.19FB.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
-0407 ; [.19FB.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
-0439 ; [.19EF.0020.0002.0438][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT I
-0419 ; [.19EF.0020.0008.0418][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT I
-04E7 ; [.1A5C.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E6 ; [.1A5C.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04EB ; [.1A64.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EA ; [.1A64.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-045E ; [.1A9E.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
-040E ; [.1A9E.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
-04F1 ; [.1A9E.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F0 ; [.1A9E.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F3 ; [.1A9E.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F2 ; [.1A9E.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F5 ; [.1AF1.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F4 ; [.1AF1.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F9 ; [.1B24.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-04F8 ; [.1B24.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04ED ; [.1B39.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EC ; [.1B39.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-0477 ; [.1B6F.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0476 ; [.1B6F.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ entry => <<'ENTRY', # for DUCET v6.2.0
+04D1 ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04D7 ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E5 ; [.1A0A.0020.0002.0438][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E4 ; [.1A0A.0020.0008.0418][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+0457 ; [.1A16.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407 ; [.1A16.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+0439 ; [.1A0A.0020.0002.0438][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT I
+0419 ; [.1A0A.0020.0008.0418][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT I
+04E7 ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045E ; [.1AB9.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.1AB9.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.1AB9.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.1AB9.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.1AB9.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.1AB9.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5 ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ml.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ml.pl
index 524e5deb31f..415f3ed2ba4 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ml.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ml.pl
@@ -1,23 +1,23 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
0D3D ; [.0000.00F5.0002.0D3D] # MALAYALAM SIGN AVAGRAHA
-0D57 ; [.222B.0020.0002.0D57] # MALAYALAM AU LENGTH MARK
-0D4C ; [.222B.0020.0003.0D4C] # MALAYALAM VOWEL SIGN AU
-0D46 0D57 ; [.222B.0020.0003.0D4C] # MALAYALAM VOWEL SIGN AU
-0D15 0D4D 200D ; [.21F6.0020.0002.0D15][.222D.0021.0002.0D15] # <MALAYALAM LETTER KA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
-0D7F ; [.21F6.0020.0003.0D7F][.222D.0021.0002.0D7F] # MALAYALAM LETTER CHILLU K
-0D23 0D4D 200D ; [.2204.0020.0002.0D23][.222D.0021.0002.0D23] # <MALAYALAM LETTER NNA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
-0D7A ; [.2204.0020.0003.0D7A][.222D.0021.0002.0D7A] # MALAYALAM LETTER CHILLU NN
-0D28 0D4D 200D ; [.2209.0020.0002.0D28][.222D.0021.0002.0D28] # <MALAYALAM LETTER NA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
-0D7B ; [.2209.0020.0003.0D7B][.222D.0021.0002.0D7B] # MALAYALAM LETTER CHILLU N
-0D30 0D4D 200D ; [.2211.0020.0002.0D30][.222D.0021.0002.0D30] # <MALAYALAM LETTER RA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
-0D7C ; [.2211.0020.0003.0D7C][.222D.0021.0002.0D7C] # MALAYALAM LETTER CHILLU RR
-0D32 0D4D 200D ; [.2212.0020.0002.0D32][.222D.0021.0002.0D32] # <MALAYALAM LETTER LA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
-0D7D ; [.2212.0020.0003.0D7D][.222D.0021.0002.0D7D] # MALAYALAM LETTER CHILLU L
-0D33 0D4D 200D ; [.2218.0020.0002.0D33][.222D.0021.0002.0D33] # <MALAYALAM LETTER LLA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
-0D7E ; [.2218.0020.0003.0D7E][.222D.0021.0002.0D7E] # MALAYALAM LETTER CHILLU LL
-0D02 ; [.220F.0020.0002.0D2E][.222D.0021.0002.0D02] # MALAYALAM SIGN ANUSVARA
-0D7B 0D4D ; [.2209.0020.0002.0D28][.222D.0020.0003.0D7B] # <MALAYALAM LETTER CHILLU N, MALAYALAM SIGN VIRAMA>
+0D57 ; [.2246.0020.0002.0D57] # MALAYALAM AU LENGTH MARK
+0D4C ; [.2246.0020.0003.0D4C] # MALAYALAM VOWEL SIGN AU
+0D46 0D57 ; [.2246.0020.0003.0D4C] # MALAYALAM VOWEL SIGN AU
+0D15 0D4D 200D ; [.2211.0020.0002.0D15][.2248.0021.0002.0D15] # <MALAYALAM LETTER KA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7F ; [.2211.0020.0003.0D7F][.2248.0021.0002.0D7F] # MALAYALAM LETTER CHILLU K
+0D23 0D4D 200D ; [.221F.0020.0002.0D23][.2248.0021.0002.0D23] # <MALAYALAM LETTER NNA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7A ; [.221F.0020.0003.0D7A][.2248.0021.0002.0D7A] # MALAYALAM LETTER CHILLU NN
+0D28 0D4D 200D ; [.2224.0020.0002.0D28][.2248.0021.0002.0D28] # <MALAYALAM LETTER NA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7B ; [.2224.0020.0003.0D7B][.2248.0021.0002.0D7B] # MALAYALAM LETTER CHILLU N
+0D30 0D4D 200D ; [.222C.0020.0002.0D30][.2248.0021.0002.0D30] # <MALAYALAM LETTER RA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7C ; [.222C.0020.0003.0D7C][.2248.0021.0002.0D7C] # MALAYALAM LETTER CHILLU RR
+0D32 0D4D 200D ; [.222D.0020.0002.0D32][.2248.0021.0002.0D32] # <MALAYALAM LETTER LA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7D ; [.222D.0020.0003.0D7D][.2248.0021.0002.0D7D] # MALAYALAM LETTER CHILLU L
+0D33 0D4D 200D ; [.2233.0020.0002.0D33][.2248.0021.0002.0D33] # <MALAYALAM LETTER LLA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7E ; [.2233.0020.0003.0D7E][.2248.0021.0002.0D7E] # MALAYALAM LETTER CHILLU LL
+0D02 ; [.222A.0020.0002.0D2E][.2248.0021.0002.0D02] # MALAYALAM SIGN ANUSVARA
+0D7B 0D4D ; [.2224.0020.0002.0D28][.2248.0020.0003.0D7B] # <MALAYALAM LETTER CHILLU N, MALAYALAM SIGN VIRAMA>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mr.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mr.pl
index da9b0c89e9b..7e72266bd2d 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mr.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mr.pl
@@ -1,12 +1,14 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0902 ; [.1FC1.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
-0901 ; [.1FC1.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
-0903 ; [.1FC1.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
-0933 ; [.2002.0020.0002.0933][.FFF1.0000.0000.0000] # DEVANAGARI LETTER LLA
-0934 ; [.2002.0020.0002.0933][.FFF1.0000.0000.0000][.0000.00F1.0002.093C] # DEVANAGARI LETTER LLLA
-0915 094D 0937 ; [.2002.0020.0002.0915][.FFF2.0000.0000.0000] # <DEVANAGARI LETTER KA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER SSA>
-091C 094D 091E ; [.2002.0020.0002.091C][.FFF3.0000.0000.0000] # <DEVANAGARI LETTER JA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER NYA>
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0902 ; [.1FDC.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
+0901 ; [.1FDC.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
+0903 ; [.1FDC.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
+0950 ; [.1FDC.0020.0002.0950][.FFF0.0000.0000.0000] # DEVANAGARI OM
+0933 ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000] # DEVANAGARI LETTER LLA
+0934 ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000][.0000.00F1.0002.093C] # DEVANAGARI LETTER LLLA
+0915 094D 0937 ; [.201D.0020.0002.0915][.FFF2.0000.0000.0000] # <DEVANAGARI LETTER KA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER SSA>
+091C 094D 091E ; [.201D.0020.0002.091C][.FFF3.0000.0000.0000] # <DEVANAGARI LETTER JA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER NYA>
+0939 ; [.201D.0020.0002.0939][.FFF0.0000.0000.0000] # DEVANAGARI LETTER HA
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mt.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mt.pl
index 83afd2a9625..ccc6225fcd8 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mt.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/mt.pl
@@ -1,30 +1,30 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
upper_before_lower => 1,
- entry => <<'ENTRY', # for DUCET v6.1.0
-010B ; [.1601.0020.0002.010B] # LATIN SMALL LETTER C WITH DOT ABOVE
-0063 0307 ; [.1601.0020.0002.010B] # LATIN SMALL LETTER C WITH DOT ABOVE
-010A ; [.1601.0020.0008.010A] # LATIN CAPITAL LETTER C WITH DOT ABOVE
-0043 0307 ; [.1601.0020.0008.010A] # LATIN CAPITAL LETTER C WITH DOT ABOVE
-0121 ; [.1675.0020.0002.0121] # LATIN SMALL LETTER G WITH DOT ABOVE
-0067 0307 ; [.1675.0020.0002.0121] # LATIN SMALL LETTER G WITH DOT ABOVE
-0120 ; [.1675.0020.0008.0120] # LATIN CAPITAL LETTER G WITH DOT ABOVE
-0047 0307 ; [.1675.0020.0008.0120] # LATIN CAPITAL LETTER G WITH DOT ABOVE
-0067 0127 ; [.1698.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER H WITH STROKE>
-0067 0126 ; [.1698.0020.0007.0067][.0000.0000.0002.0000] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER H WITH STROKE>
-0047 0127 ; [.1698.0020.0007.0047][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER H WITH STROKE>
-0047 0126 ; [.1698.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER H WITH STROKE>
-0067 0068 0335 ; [.1698.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY>
-0067 0048 0335 ; [.1698.0020.0007.0067][.0000.0000.0002.0000] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER H, COMBINING SHORT STROKE OVERLAY>
-0047 0068 0335 ; [.1698.0020.0007.0047][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY>
-0047 0048 0335 ; [.1698.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER H, COMBINING SHORT STROKE OVERLAY>
-0127 ; [.16B1.0020.0002.0127] # LATIN SMALL LETTER H WITH STROKE
-0068 0335 ; [.16B1.0020.0002.0127] # LATIN SMALL LETTER H WITH STROKE
-0126 ; [.16B1.0020.0008.0126] # LATIN CAPITAL LETTER H WITH STROKE
-0048 0335 ; [.16B1.0020.0008.0126] # LATIN CAPITAL LETTER H WITH STROKE
-017C ; [.1879.0020.0002.017C] # LATIN SMALL LETTER Z WITH DOT ABOVE
-007A 0307 ; [.1879.0020.0002.017C] # LATIN SMALL LETTER Z WITH DOT ABOVE
-017B ; [.1879.0020.0008.017B] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
-005A 0307 ; [.1879.0020.0008.017B] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ entry => <<'ENTRY', # for DUCET v6.2.0
+010B ; [.161C.0020.0002.010B] # LATIN SMALL LETTER C WITH DOT ABOVE
+0063 0307 ; [.161C.0020.0002.010B] # LATIN SMALL LETTER C WITH DOT ABOVE
+010A ; [.161C.0020.0008.010A] # LATIN CAPITAL LETTER C WITH DOT ABOVE
+0043 0307 ; [.161C.0020.0008.010A] # LATIN CAPITAL LETTER C WITH DOT ABOVE
+0121 ; [.1690.0020.0002.0121] # LATIN SMALL LETTER G WITH DOT ABOVE
+0067 0307 ; [.1690.0020.0002.0121] # LATIN SMALL LETTER G WITH DOT ABOVE
+0120 ; [.1690.0020.0008.0120] # LATIN CAPITAL LETTER G WITH DOT ABOVE
+0047 0307 ; [.1690.0020.0008.0120] # LATIN CAPITAL LETTER G WITH DOT ABOVE
+0067 0127 ; [.16B3.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER H WITH STROKE>
+0067 0126 ; [.16B3.0020.0007.0067][.0000.0000.0002.0000] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER H WITH STROKE>
+0047 0127 ; [.16B3.0020.0007.0047][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER H WITH STROKE>
+0047 0126 ; [.16B3.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER H WITH STROKE>
+0067 0068 0335 ; [.16B3.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY>
+0067 0048 0335 ; [.16B3.0020.0007.0067][.0000.0000.0002.0000] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER H, COMBINING SHORT STROKE OVERLAY>
+0047 0068 0335 ; [.16B3.0020.0007.0047][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY>
+0047 0048 0335 ; [.16B3.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER H, COMBINING SHORT STROKE OVERLAY>
+0127 ; [.16CC.0020.0002.0127] # LATIN SMALL LETTER H WITH STROKE
+0068 0335 ; [.16CC.0020.0002.0127] # LATIN SMALL LETTER H WITH STROKE
+0126 ; [.16CC.0020.0008.0126] # LATIN CAPITAL LETTER H WITH STROKE
+0048 0335 ; [.16CC.0020.0008.0126] # LATIN CAPITAL LETTER H WITH STROKE
+017C ; [.1894.0020.0002.017C] # LATIN SMALL LETTER Z WITH DOT ABOVE
+007A 0307 ; [.1894.0020.0002.017C] # LATIN SMALL LETTER Z WITH DOT ABOVE
+017B ; [.1894.0020.0008.017B] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+005A 0307 ; [.1894.0020.0008.017B] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nb.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nb.pl
index dd5baddcf40..9fa11d5519d 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nb.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nb.pl
@@ -1,74 +1,74 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0111 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0064 0335 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-0044 0335 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-00F0 ; [.1616.0022.0002.00F0] # LATIN SMALL LETTER ETH
-00D0 ; [.1616.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
-00FE ; [.17FB.0020.0003.00FE][.1699.0020.0003.00FE] # LATIN SMALL LETTER THORN
-00DE ; [.17FB.0020.0009.00DE][.1699.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
-00FC ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.1865.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.1865.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.1865.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.1865.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.1865.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.1865.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.1865.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.1865.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0171 ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0075 030B ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0170 ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0055 030B ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-00E6 ; [.18EB.0020.0002.00E6] # LATIN SMALL LETTER AE
-00C6 ; [.18EB.0020.0008.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.18EB.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.18EB.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.18EB.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.18EB.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.18EB.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
-00E4 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.18EB.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.18EB.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-0119 ; [.18EB.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0065 0328 ; [.18EB.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0118 ; [.18EB.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-0045 0328 ; [.18EB.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-00F8 ; [.18EC.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-006F 0338 ; [.18EC.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.18EC.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-004F 0338 ; [.18EC.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.18EC.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.18EC.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-00F6 ; [.18EC.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.18EC.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.18EC.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.18EC.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.18EC.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.18EC.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-0151 ; [.18EC.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-006F 030B ; [.18EC.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0150 ; [.18EC.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-004F 030B ; [.18EC.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0153 ; [.18EC.0023.0002.0153] # LATIN SMALL LIGATURE OE
-0152 ; [.18EC.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
-00E5 ; [.18ED.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-0061 030A ; [.18ED.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.18ED.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-0041 030A ; [.18ED.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.18ED.0020.0008.00C5] # ANGSTROM SIGN
-01FB ; [.18ED.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.18ED.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-0061 0061 ; [.18ED.0021.0002.0061] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
-0041 0061 ; [.18ED.0021.0007.0041] # <LATIN CAPITAL LETTER A, LATIN SMALL LETTER A>
-0041 0041 ; [.18ED.0021.0008.0041] # <LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A>
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0111 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1631.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1631.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+00FE ; [.1816.0020.0003.00FE][.16B4.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.1816.0020.0009.00DE][.16B4.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+00FC ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0171 ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E6 ; [.1906.0020.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1906.0020.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1906.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1906.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1906.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1906.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1906.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00E4 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1906.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1906.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+0119 ; [.1906.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.1906.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.1906.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.1906.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F8 ; [.1907.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1907.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1907.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1907.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1907.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1907.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00F6 ; [.1907.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1907.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1907.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1907.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1907.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1907.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+0151 ; [.1907.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.1907.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.1907.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.1907.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153 ; [.1907.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.1907.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00E5 ; [.1908.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1908.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1908.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1908.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1908.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.1908.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1908.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+0061 0061 ; [.1908.0021.0002.0061] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
+0041 0061 ; [.1908.0021.0007.0041] # <LATIN CAPITAL LETTER A, LATIN SMALL LETTER A>
+0041 0041 ; [.1908.0021.0008.0041] # <LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nn.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nn.pl
index dd5baddcf40..9fa11d5519d 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nn.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nn.pl
@@ -1,74 +1,74 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0111 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0064 0335 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-0044 0335 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-00F0 ; [.1616.0022.0002.00F0] # LATIN SMALL LETTER ETH
-00D0 ; [.1616.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
-00FE ; [.17FB.0020.0003.00FE][.1699.0020.0003.00FE] # LATIN SMALL LETTER THORN
-00DE ; [.17FB.0020.0009.00DE][.1699.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
-00FC ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.1865.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.1865.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.1865.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.1865.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.1865.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.1865.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.1865.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.1865.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0171 ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0075 030B ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0170 ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0055 030B ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-00E6 ; [.18EB.0020.0002.00E6] # LATIN SMALL LETTER AE
-00C6 ; [.18EB.0020.0008.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.18EB.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.18EB.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.18EB.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.18EB.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.18EB.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
-00E4 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.18EB.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.18EB.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.18EB.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.18EB.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-0119 ; [.18EB.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0065 0328 ; [.18EB.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0118 ; [.18EB.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-0045 0328 ; [.18EB.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-00F8 ; [.18EC.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-006F 0338 ; [.18EC.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.18EC.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-004F 0338 ; [.18EC.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.18EC.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.18EC.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-00F6 ; [.18EC.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.18EC.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.18EC.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.18EC.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.18EC.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.18EC.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-0151 ; [.18EC.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-006F 030B ; [.18EC.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0150 ; [.18EC.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-004F 030B ; [.18EC.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0153 ; [.18EC.0023.0002.0153] # LATIN SMALL LIGATURE OE
-0152 ; [.18EC.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
-00E5 ; [.18ED.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-0061 030A ; [.18ED.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.18ED.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-0041 030A ; [.18ED.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.18ED.0020.0008.00C5] # ANGSTROM SIGN
-01FB ; [.18ED.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.18ED.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-0061 0061 ; [.18ED.0021.0002.0061] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
-0041 0061 ; [.18ED.0021.0007.0041] # <LATIN CAPITAL LETTER A, LATIN SMALL LETTER A>
-0041 0041 ; [.18ED.0021.0008.0041] # <LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A>
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0111 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1631.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1631.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+00FE ; [.1816.0020.0003.00FE][.16B4.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.1816.0020.0009.00DE][.16B4.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+00FC ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0171 ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E6 ; [.1906.0020.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1906.0020.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1906.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1906.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1906.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1906.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1906.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00E4 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1906.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1906.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1906.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1906.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+0119 ; [.1906.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.1906.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.1906.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.1906.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F8 ; [.1907.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1907.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1907.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1907.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1907.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1907.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00F6 ; [.1907.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1907.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1907.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1907.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1907.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1907.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+0151 ; [.1907.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.1907.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.1907.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.1907.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153 ; [.1907.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.1907.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00E5 ; [.1908.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1908.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1908.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1908.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1908.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.1908.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1908.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+0061 0061 ; [.1908.0021.0002.0061] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
+0041 0061 ; [.1908.0021.0007.0041] # <LATIN CAPITAL LETTER A, LATIN SMALL LETTER A>
+0041 0041 ; [.1908.0021.0008.0041] # <LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nso.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nso.pl
index f6c4673aa2e..8b0d74fc274 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nso.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/nso.pl
@@ -1,37 +1,37 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-00EA ; [.1632.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0065 0302 ; [.1632.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-00CA ; [.1632.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0045 0302 ; [.1632.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-1EC1 ; [.1632.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC0 ; [.1632.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EBF ; [.1632.0020.0002.00EA][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBE ; [.1632.0020.0008.00CA][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC5 ; [.1632.0020.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC4 ; [.1632.0020.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC3 ; [.1632.0020.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC2 ; [.1632.0020.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC7 ; [.1632.0020.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC6 ; [.1632.0020.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-00F4 ; [.1757.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-006F 0302 ; [.1757.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-00D4 ; [.1757.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-004F 0302 ; [.1757.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-1ED3 ; [.1757.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED2 ; [.1757.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED1 ; [.1757.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED0 ; [.1757.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED7 ; [.1757.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED6 ; [.1757.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED5 ; [.1757.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED4 ; [.1757.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED9 ; [.1757.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED8 ; [.1757.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-0161 ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0073 030C ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0053 030C ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00EA ; [.164D.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.164D.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.164D.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.164D.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC1 ; [.164D.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.164D.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EBF ; [.164D.0020.0002.00EA][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.164D.0020.0008.00CA][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC5 ; [.164D.0020.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.164D.0020.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.164D.0020.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.164D.0020.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.164D.0020.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.164D.0020.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+00F4 ; [.1772.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.1772.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.1772.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.1772.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.1772.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.1772.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.1772.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.1772.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.1772.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.1772.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.1772.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.1772.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.1772.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.1772.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+0161 ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/om.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/om.pl
index a56ad1b707e..20506924fae 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/om.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/om.pl
@@ -1,22 +1,22 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0063 0068 ; [.187B.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
-0043 0068 ; [.187B.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
-0043 0048 ; [.187B.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
-0064 0068 ; [.187C.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER H>
-0044 0068 ; [.187C.0020.0007.0044] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER H>
-0044 0048 ; [.187C.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER H>
-006B 0068 ; [.187D.0020.0002.006B] # <LATIN SMALL LETTER K, LATIN SMALL LETTER H>
-004B 0068 ; [.187D.0020.0007.004B] # <LATIN CAPITAL LETTER K, LATIN SMALL LETTER H>
-004B 0048 ; [.187D.0020.0008.004B] # <LATIN CAPITAL LETTER K, LATIN CAPITAL LETTER H>
-006E 0079 ; [.187E.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
-004E 0079 ; [.187E.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
-004E 0059 ; [.187E.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
-0070 0068 ; [.187F.0020.0002.0070] # <LATIN SMALL LETTER P, LATIN SMALL LETTER H>
-0050 0068 ; [.187F.0020.0007.0050] # <LATIN CAPITAL LETTER P, LATIN SMALL LETTER H>
-0050 0048 ; [.187F.0020.0008.0050] # <LATIN CAPITAL LETTER P, LATIN CAPITAL LETTER H>
-0073 0068 ; [.1880.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
-0053 0068 ; [.1880.0020.0007.0053] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER H>
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0063 0068 ; [.1896.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0043 0068 ; [.1896.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
+0043 0048 ; [.1896.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
+0064 0068 ; [.1897.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER H>
+0044 0068 ; [.1897.0020.0007.0044] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER H>
+0044 0048 ; [.1897.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER H>
+006B 0068 ; [.1898.0020.0002.006B] # <LATIN SMALL LETTER K, LATIN SMALL LETTER H>
+004B 0068 ; [.1898.0020.0007.004B] # <LATIN CAPITAL LETTER K, LATIN SMALL LETTER H>
+004B 0048 ; [.1898.0020.0008.004B] # <LATIN CAPITAL LETTER K, LATIN CAPITAL LETTER H>
+006E 0079 ; [.1899.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
+004E 0079 ; [.1899.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
+004E 0059 ; [.1899.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
+0070 0068 ; [.189A.0020.0002.0070] # <LATIN SMALL LETTER P, LATIN SMALL LETTER H>
+0050 0068 ; [.189A.0020.0007.0050] # <LATIN CAPITAL LETTER P, LATIN SMALL LETTER H>
+0050 0048 ; [.189A.0020.0008.0050] # <LATIN CAPITAL LETTER P, LATIN CAPITAL LETTER H>
+0073 0068 ; [.189B.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
+0053 0068 ; [.189B.0020.0007.0053] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER H>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/or.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/or.pl
index fd9a43bf218..774613e1653 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/or.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/or.pl
@@ -1,10 +1,12 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0B01 ; [.20ED.0020.0002.0B01][.FFF1.0000.0000.0000] # ORIYA SIGN CANDRABINDU
-0B02 ; [.20ED.0020.0002.0B02][.FFF2.0000.0000.0000] # ORIYA SIGN ANUSVARA
-0B03 ; [.20ED.0020.0002.0B03][.FFF3.0000.0000.0000] # ORIYA SIGN VISARGA
-0B15 0B4D 0B37 ; [.2111.0020.0002.0B15][.FFF1.0000.0000.0000] # <ORIYA LETTER KA, ORIYA SIGN VIRAMA, ORIYA LETTER SSA>
-0B5F ; [.2107.0021.0002.0B5F] # ORIYA LETTER YYA
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0B01 ; [.2108.0020.0002.0B01][.FFF1.0000.0000.0000] # ORIYA SIGN CANDRABINDU
+0B02 ; [.2108.0020.0002.0B02][.FFF2.0000.0000.0000] # ORIYA SIGN ANUSVARA
+0B03 ; [.2108.0020.0002.0B03][.FFF3.0000.0000.0000] # ORIYA SIGN VISARGA
+0B14 ; [.2108.0020.0002.0B14][.FFF0.0000.0000.0000] # ORIYA LETTER AU
+0B15 0B4D 0B37 ; [.212C.0020.0002.0B15][.FFF1.0000.0000.0000] # <ORIYA LETTER KA, ORIYA SIGN VIRAMA, ORIYA LETTER SSA>
+0B39 ; [.212C.0020.0002.0B39][.FFF0.0000.0000.0000] # ORIYA LETTER HA
+0B5F ; [.2122.0021.0002.0B5F] # ORIYA LETTER YYA
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/pa.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/pa.pl
index 60552f14f95..9b14e18f11d 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/pa.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/pa.pl
@@ -1,27 +1,27 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
0A71 ; [.0000.00F2.0002.0A71] # GURMUKHI ADDAK
0A03 ; [.0000.00F1.0002.0A03] # GURMUKHI SIGN VISARGA
0A70 ; [.0000.00F3.0002.0A70] # GURMUKHI TIPPI
0A02 ; [.0000.00F4.0002.0A02] # GURMUKHI SIGN BINDI
0A01 ; [.0000.00F5.0002.0A01] # GURMUKHI SIGN ADAK BINDI
0A3C ; [.0000.00F6.0002.0A3C] # GURMUKHI SIGN NUKTA
-0A33 ; [.208F.0020.0002.0A32][.0000.00F6.0002.0A3C] # GURMUKHI LETTER LLA
-0A36 ; [.2070.0020.0002.0A38][.0000.00F6.0002.0A3C] # GURMUKHI LETTER SHA
-0A59 ; [.2074.0020.0002.0A16][.0000.00F6.0002.0A3C] # GURMUKHI LETTER KHHA
-0A5A ; [.2075.0020.0002.0A17][.0000.00F6.0002.0A3C] # GURMUKHI LETTER GHHA
-0A5B ; [.207A.0020.0002.0A1C][.0000.00F6.0002.0A3C] # GURMUKHI LETTER ZA
-0A5E ; [.2088.0020.0002.0A2B][.0000.00F6.0002.0A3C] # GURMUKHI LETTER FA
-0A4D ; [.2092.0020.0002.0A4D] # GURMUKHI SIGN VIRAMA
-0A3E ; [.2093.0020.0002.0A3E] # GURMUKHI VOWEL SIGN AA
-0A3F ; [.2094.0020.0002.0A3F] # GURMUKHI VOWEL SIGN I
-0A40 ; [.2095.0020.0002.0A40] # GURMUKHI VOWEL SIGN II
-0A41 ; [.2096.0020.0002.0A41] # GURMUKHI VOWEL SIGN U
-0A42 ; [.2097.0020.0002.0A42] # GURMUKHI VOWEL SIGN UU
-0A47 ; [.2098.0020.0002.0A47] # GURMUKHI VOWEL SIGN EE
-0A48 ; [.2099.0020.0002.0A48] # GURMUKHI VOWEL SIGN AI
-0A4B ; [.209A.0020.0002.0A4B] # GURMUKHI VOWEL SIGN OO
-0A4C ; [.209B.0020.0002.0A4C] # GURMUKHI VOWEL SIGN AU
+0A33 ; [.20AA.0020.0002.0A32][.0000.00F6.0002.0A3C] # GURMUKHI LETTER LLA
+0A36 ; [.208B.0020.0002.0A38][.0000.00F6.0002.0A3C] # GURMUKHI LETTER SHA
+0A59 ; [.208F.0020.0002.0A16][.0000.00F6.0002.0A3C] # GURMUKHI LETTER KHHA
+0A5A ; [.2090.0020.0002.0A17][.0000.00F6.0002.0A3C] # GURMUKHI LETTER GHHA
+0A5B ; [.2095.0020.0002.0A1C][.0000.00F6.0002.0A3C] # GURMUKHI LETTER ZA
+0A5E ; [.20A3.0020.0002.0A2B][.0000.00F6.0002.0A3C] # GURMUKHI LETTER FA
+0A4D ; [.20AD.0020.0002.0A4D] # GURMUKHI SIGN VIRAMA
+0A3E ; [.20AE.0020.0002.0A3E] # GURMUKHI VOWEL SIGN AA
+0A3F ; [.20AF.0020.0002.0A3F] # GURMUKHI VOWEL SIGN I
+0A40 ; [.20B0.0020.0002.0A40] # GURMUKHI VOWEL SIGN II
+0A41 ; [.20B1.0020.0002.0A41] # GURMUKHI VOWEL SIGN U
+0A42 ; [.20B2.0020.0002.0A42] # GURMUKHI VOWEL SIGN UU
+0A47 ; [.20B3.0020.0002.0A47] # GURMUKHI VOWEL SIGN EE
+0A48 ; [.20B4.0020.0002.0A48] # GURMUKHI VOWEL SIGN AI
+0A4B ; [.20B5.0020.0002.0A4B] # GURMUKHI VOWEL SIGN OO
+0A4C ; [.20B6.0020.0002.0A4C] # GURMUKHI VOWEL SIGN AU
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/pl.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/pl.pl
index 53aa618eefb..9f5397e4298 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/pl.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/pl.pl
@@ -1,51 +1,51 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0105 ; [.15D5.0020.0002.0105] # LATIN SMALL LETTER A WITH OGONEK
-0061 0328 ; [.15D5.0020.0002.0105] # LATIN SMALL LETTER A WITH OGONEK
-0104 ; [.15D5.0020.0008.0104] # LATIN CAPITAL LETTER A WITH OGONEK
-0041 0328 ; [.15D5.0020.0008.0104] # LATIN CAPITAL LETTER A WITH OGONEK
-0107 ; [.1603.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
-0063 0301 ; [.1603.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
-0063 0341 ; [.1603.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
-0106 ; [.1603.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
-0043 0301 ; [.1603.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
-0043 0341 ; [.1603.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
-0119 ; [.1632.0020.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0065 0328 ; [.1632.0020.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0118 ; [.1632.0020.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-0045 0328 ; [.1632.0020.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-0142 ; [.16F7.0020.0002.0142] # LATIN SMALL LETTER L WITH STROKE
-006C 0335 ; [.16F7.0020.0002.0142] # LATIN SMALL LETTER L WITH STROKE
-0141 ; [.16F7.0020.0008.0141] # LATIN CAPITAL LETTER L WITH STROKE
-004C 0335 ; [.16F7.0020.0008.0141] # LATIN CAPITAL LETTER L WITH STROKE
-0144 ; [.1735.0020.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0301 ; [.1735.0020.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0341 ; [.1735.0020.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-0143 ; [.1735.0020.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0301 ; [.1735.0020.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0341 ; [.1735.0020.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-00F3 ; [.1757.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0301 ; [.1757.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0341 ; [.1757.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-00D3 ; [.1757.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0301 ; [.1757.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0341 ; [.1757.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-015B ; [.17D9.0020.0002.015B] # LATIN SMALL LETTER S WITH ACUTE
-0073 0301 ; [.17D9.0020.0002.015B] # LATIN SMALL LETTER S WITH ACUTE
-0073 0341 ; [.17D9.0020.0002.015B] # LATIN SMALL LETTER S WITH ACUTE
-015A ; [.17D9.0020.0008.015A] # LATIN CAPITAL LETTER S WITH ACUTE
-0053 0301 ; [.17D9.0020.0008.015A] # LATIN CAPITAL LETTER S WITH ACUTE
-0053 0341 ; [.17D9.0020.0008.015A] # LATIN CAPITAL LETTER S WITH ACUTE
-017A ; [.187B.0020.0002.017A] # LATIN SMALL LETTER Z WITH ACUTE
-007A 0301 ; [.187B.0020.0002.017A] # LATIN SMALL LETTER Z WITH ACUTE
-007A 0341 ; [.187B.0020.0002.017A] # LATIN SMALL LETTER Z WITH ACUTE
-0179 ; [.187B.0020.0008.0179] # LATIN CAPITAL LETTER Z WITH ACUTE
-005A 0301 ; [.187B.0020.0008.0179] # LATIN CAPITAL LETTER Z WITH ACUTE
-005A 0341 ; [.187B.0020.0008.0179] # LATIN CAPITAL LETTER Z WITH ACUTE
-017C ; [.187C.0020.0002.017C] # LATIN SMALL LETTER Z WITH DOT ABOVE
-007A 0307 ; [.187C.0020.0002.017C] # LATIN SMALL LETTER Z WITH DOT ABOVE
-017B ; [.187C.0020.0008.017B] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
-005A 0307 ; [.187C.0020.0008.017B] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0105 ; [.15F0.0020.0002.0105] # LATIN SMALL LETTER A WITH OGONEK
+0061 0328 ; [.15F0.0020.0002.0105] # LATIN SMALL LETTER A WITH OGONEK
+0104 ; [.15F0.0020.0008.0104] # LATIN CAPITAL LETTER A WITH OGONEK
+0041 0328 ; [.15F0.0020.0008.0104] # LATIN CAPITAL LETTER A WITH OGONEK
+0107 ; [.161E.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
+0063 0301 ; [.161E.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
+0063 0341 ; [.161E.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
+0106 ; [.161E.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
+0043 0301 ; [.161E.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
+0043 0341 ; [.161E.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
+0119 ; [.164D.0020.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.164D.0020.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.164D.0020.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.164D.0020.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0142 ; [.1712.0020.0002.0142] # LATIN SMALL LETTER L WITH STROKE
+006C 0335 ; [.1712.0020.0002.0142] # LATIN SMALL LETTER L WITH STROKE
+0141 ; [.1712.0020.0008.0141] # LATIN CAPITAL LETTER L WITH STROKE
+004C 0335 ; [.1712.0020.0008.0141] # LATIN CAPITAL LETTER L WITH STROKE
+0144 ; [.1750.0020.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0301 ; [.1750.0020.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0341 ; [.1750.0020.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+0143 ; [.1750.0020.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0301 ; [.1750.0020.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0341 ; [.1750.0020.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+00F3 ; [.1772.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.1772.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.1772.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1772.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.1772.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.1772.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+015B ; [.17F4.0020.0002.015B] # LATIN SMALL LETTER S WITH ACUTE
+0073 0301 ; [.17F4.0020.0002.015B] # LATIN SMALL LETTER S WITH ACUTE
+0073 0341 ; [.17F4.0020.0002.015B] # LATIN SMALL LETTER S WITH ACUTE
+015A ; [.17F4.0020.0008.015A] # LATIN CAPITAL LETTER S WITH ACUTE
+0053 0301 ; [.17F4.0020.0008.015A] # LATIN CAPITAL LETTER S WITH ACUTE
+0053 0341 ; [.17F4.0020.0008.015A] # LATIN CAPITAL LETTER S WITH ACUTE
+017A ; [.1896.0020.0002.017A] # LATIN SMALL LETTER Z WITH ACUTE
+007A 0301 ; [.1896.0020.0002.017A] # LATIN SMALL LETTER Z WITH ACUTE
+007A 0341 ; [.1896.0020.0002.017A] # LATIN SMALL LETTER Z WITH ACUTE
+0179 ; [.1896.0020.0008.0179] # LATIN CAPITAL LETTER Z WITH ACUTE
+005A 0301 ; [.1896.0020.0008.0179] # LATIN CAPITAL LETTER Z WITH ACUTE
+005A 0341 ; [.1896.0020.0008.0179] # LATIN CAPITAL LETTER Z WITH ACUTE
+017C ; [.1897.0020.0002.017C] # LATIN SMALL LETTER Z WITH DOT ABOVE
+007A 0307 ; [.1897.0020.0002.017C] # LATIN SMALL LETTER Z WITH DOT ABOVE
+017B ; [.1897.0020.0008.017B] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+005A 0307 ; [.1897.0020.0008.017B] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ro.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ro.pl
index 61a6a856b00..f903102d3d0 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ro.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ro.pl
@@ -1,53 +1,53 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0103 ; [.15D5.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
-0061 0306 ; [.15D5.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
-0102 ; [.15D5.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
-0041 0306 ; [.15D5.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
-1EB1 ; [.15D5.0020.0002.0103][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH BREVE AND GRAVE
-1EB0 ; [.15D5.0020.0008.0102][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-1EAF ; [.15D5.0020.0002.0103][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH BREVE AND ACUTE
-1EAE ; [.15D5.0020.0008.0102][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-1EB5 ; [.15D5.0020.0002.0103][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH BREVE AND TILDE
-1EB4 ; [.15D5.0020.0008.0102][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-1EB3 ; [.15D5.0020.0002.0103][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
-1EB2 ; [.15D5.0020.0008.0102][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-1EB7 ; [.15D5.0020.0002.0103][.0000.0070.0002.0323] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
-1EB6 ; [.15D5.0020.0008.0102][.0000.0070.0002.0323] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-00E2 ; [.15D6.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
-0061 0302 ; [.15D6.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
-00C2 ; [.15D6.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0041 0302 ; [.15D6.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-1EA7 ; [.15D6.0020.0002.00E2][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA6 ; [.15D6.0020.0008.00C2][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA5 ; [.15D6.0020.0002.00E2][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA4 ; [.15D6.0020.0008.00C2][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EAB ; [.15D6.0020.0002.00E2][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAA ; [.15D6.0020.0008.00C2][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-1EA9 ; [.15D6.0020.0002.00E2][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EA8 ; [.15D6.0020.0008.00C2][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EAD ; [.15D6.0020.0002.00E2][.0000.0070.0002.0323] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAC ; [.15D6.0020.0008.00C2][.0000.0070.0002.0323] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-00EE ; [.16B3.0020.0002.00EE] # LATIN SMALL LETTER I WITH CIRCUMFLEX
-0069 0302 ; [.16B3.0020.0002.00EE] # LATIN SMALL LETTER I WITH CIRCUMFLEX
-00CE ; [.16B3.0020.0008.00CE] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0049 0302 ; [.16B3.0020.0008.00CE] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-015F ; [.17D9.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
-0073 0327 ; [.17D9.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
-0219 ; [.17D9.0020.0002.0219] # LATIN SMALL LETTER S WITH COMMA BELOW
-0073 0326 ; [.17D9.0020.0002.0219] # LATIN SMALL LETTER S WITH COMMA BELOW
-015E ; [.17D9.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
-0053 0327 ; [.17D9.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
-0218 ; [.17D9.0020.0008.0218] # LATIN CAPITAL LETTER S WITH COMMA BELOW
-0053 0326 ; [.17D9.0020.0008.0218] # LATIN CAPITAL LETTER S WITH COMMA BELOW
-0163 ; [.17FC.0020.0002.0163] # LATIN SMALL LETTER T WITH CEDILLA
-0074 0327 ; [.17FC.0020.0002.0163] # LATIN SMALL LETTER T WITH CEDILLA
-021B ; [.17FC.0020.0002.021B] # LATIN SMALL LETTER T WITH COMMA BELOW
-0074 0326 ; [.17FC.0020.0002.021B] # LATIN SMALL LETTER T WITH COMMA BELOW
-0162 ; [.17FC.0020.0008.0162] # LATIN CAPITAL LETTER T WITH CEDILLA
-0054 0327 ; [.17FC.0020.0008.0162] # LATIN CAPITAL LETTER T WITH CEDILLA
-021A ; [.17FC.0020.0008.021A] # LATIN CAPITAL LETTER T WITH COMMA BELOW
-0054 0326 ; [.17FC.0020.0008.021A] # LATIN CAPITAL LETTER T WITH COMMA BELOW
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0103 ; [.15F0.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
+0061 0306 ; [.15F0.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
+0102 ; [.15F0.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
+0041 0306 ; [.15F0.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
+1EB1 ; [.15F0.0020.0002.0103][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB0 ; [.15F0.0020.0008.0102][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EAF ; [.15F0.0020.0002.0103][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EAE ; [.15F0.0020.0008.0102][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB5 ; [.15F0.0020.0002.0103][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB4 ; [.15F0.0020.0008.0102][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB3 ; [.15F0.0020.0002.0103][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB2 ; [.15F0.0020.0008.0102][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB7 ; [.15F0.0020.0002.0103][.0000.0070.0002.0323] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB6 ; [.15F0.0020.0008.0102][.0000.0070.0002.0323] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+00E2 ; [.15F1.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0061 0302 ; [.15F1.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+00C2 ; [.15F1.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0041 0302 ; [.15F1.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+1EA7 ; [.15F1.0020.0002.00E2][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA6 ; [.15F1.0020.0008.00C2][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA5 ; [.15F1.0020.0002.00E2][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA4 ; [.15F1.0020.0008.00C2][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EAB ; [.15F1.0020.0002.00E2][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAA ; [.15F1.0020.0008.00C2][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EA9 ; [.15F1.0020.0002.00E2][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA8 ; [.15F1.0020.0008.00C2][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAD ; [.15F1.0020.0002.00E2][.0000.0070.0002.0323] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAC ; [.15F1.0020.0008.00C2][.0000.0070.0002.0323] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+00EE ; [.16CE.0020.0002.00EE] # LATIN SMALL LETTER I WITH CIRCUMFLEX
+0069 0302 ; [.16CE.0020.0002.00EE] # LATIN SMALL LETTER I WITH CIRCUMFLEX
+00CE ; [.16CE.0020.0008.00CE] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+0049 0302 ; [.16CE.0020.0008.00CE] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+015F ; [.17F4.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
+0073 0327 ; [.17F4.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
+0219 ; [.17F4.0020.0002.0219] # LATIN SMALL LETTER S WITH COMMA BELOW
+0073 0326 ; [.17F4.0020.0002.0219] # LATIN SMALL LETTER S WITH COMMA BELOW
+015E ; [.17F4.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
+0053 0327 ; [.17F4.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
+0218 ; [.17F4.0020.0008.0218] # LATIN CAPITAL LETTER S WITH COMMA BELOW
+0053 0326 ; [.17F4.0020.0008.0218] # LATIN CAPITAL LETTER S WITH COMMA BELOW
+0163 ; [.1817.0020.0002.0163] # LATIN SMALL LETTER T WITH CEDILLA
+0074 0327 ; [.1817.0020.0002.0163] # LATIN SMALL LETTER T WITH CEDILLA
+021B ; [.1817.0020.0002.021B] # LATIN SMALL LETTER T WITH COMMA BELOW
+0074 0326 ; [.1817.0020.0002.021B] # LATIN SMALL LETTER T WITH COMMA BELOW
+0162 ; [.1817.0020.0008.0162] # LATIN CAPITAL LETTER T WITH CEDILLA
+0054 0327 ; [.1817.0020.0008.0162] # LATIN CAPITAL LETTER T WITH CEDILLA
+021A ; [.1817.0020.0008.021A] # LATIN CAPITAL LETTER T WITH COMMA BELOW
+0054 0326 ; [.1817.0020.0008.021A] # LATIN CAPITAL LETTER T WITH COMMA BELOW
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ru.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ru.pl
index e7296dafa96..79d3cb100e5 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ru.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ru.pl
@@ -1,45 +1,45 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
0x0416, 0x0436, 0x0417, 0x0437, 0x0406, 0x0456, 0x041E, 0x043E,
0x04E8, 0x04E9, 0x041A, 0x043A, 0x0423, 0x0443, 0x0427, 0x0447,
0x042B, 0x044B, 0x042D, 0x044D, 0x0474, 0x0475],
- entry => <<'ENTRY', # for DUCET v6.1.0
-04D1 ; [.1976.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
-04D0 ; [.1976.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D3 ; [.1976.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D2 ; [.1976.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04DB ; [.1982.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DA ; [.1982.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-0453 ; [.1996.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
-0403 ; [.1996.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
-04D7 ; [.19BE.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
-04D6 ; [.19BE.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
-04DD ; [.19CA.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DC ; [.19CA.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DF ; [.19D7.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04DE ; [.19D7.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-0457 ; [.19FB.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
-0407 ; [.19FB.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
-04E7 ; [.1A5C.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E6 ; [.1A5C.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04EB ; [.1A64.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EA ; [.1A64.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-045C ; [.1A0D.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
-040C ; [.1A0D.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
-045E ; [.1A9E.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
-040E ; [.1A9E.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
-04F1 ; [.1A9E.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F0 ; [.1A9E.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F3 ; [.1A9E.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F2 ; [.1A9E.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F5 ; [.1AF1.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F4 ; [.1AF1.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F9 ; [.1B24.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-04F8 ; [.1B24.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04ED ; [.1B39.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EC ; [.1B39.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-0477 ; [.1B6F.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0476 ; [.1B6F.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ entry => <<'ENTRY', # for DUCET v6.2.0
+04D1 ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453 ; [.19B1.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.19B1.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+0457 ; [.1A16.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407 ; [.1A16.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+04E7 ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C ; [.1A28.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.1A28.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E ; [.1AB9.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.1AB9.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.1AB9.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.1AB9.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.1AB9.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.1AB9.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5 ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sa.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sa.pl
index da9b0c89e9b..7e72266bd2d 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sa.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sa.pl
@@ -1,12 +1,14 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0902 ; [.1FC1.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
-0901 ; [.1FC1.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
-0903 ; [.1FC1.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
-0933 ; [.2002.0020.0002.0933][.FFF1.0000.0000.0000] # DEVANAGARI LETTER LLA
-0934 ; [.2002.0020.0002.0933][.FFF1.0000.0000.0000][.0000.00F1.0002.093C] # DEVANAGARI LETTER LLLA
-0915 094D 0937 ; [.2002.0020.0002.0915][.FFF2.0000.0000.0000] # <DEVANAGARI LETTER KA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER SSA>
-091C 094D 091E ; [.2002.0020.0002.091C][.FFF3.0000.0000.0000] # <DEVANAGARI LETTER JA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER NYA>
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0902 ; [.1FDC.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
+0901 ; [.1FDC.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
+0903 ; [.1FDC.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
+0950 ; [.1FDC.0020.0002.0950][.FFF0.0000.0000.0000] # DEVANAGARI OM
+0933 ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000] # DEVANAGARI LETTER LLA
+0934 ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000][.0000.00F1.0002.093C] # DEVANAGARI LETTER LLLA
+0915 094D 0937 ; [.201D.0020.0002.0915][.FFF2.0000.0000.0000] # <DEVANAGARI LETTER KA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER SSA>
+091C 094D 091E ; [.201D.0020.0002.091C][.FFF3.0000.0000.0000] # <DEVANAGARI LETTER JA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER NYA>
+0939 ; [.201D.0020.0002.0939][.FFF0.0000.0000.0000] # DEVANAGARI LETTER HA
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/se.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/se.pl
index 3c851555aec..12dfd8414f8 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/se.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/se.pl
@@ -1,148 +1,148 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
# eng, g-stroke, t-stroke don't require tailoring
- entry => <<'ENTRY', # for DUCET v6.1.0
-00E1 ; [.15E9.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0301 ; [.15E9.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0341 ; [.15E9.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-00C1 ; [.15E9.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0301 ; [.15E9.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0341 ; [.15E9.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-010D ; [.1613.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-0063 030C ; [.1613.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-010C ; [.1613.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0043 030C ; [.1613.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0292 ; [.1614.0020.0002.0292] # LATIN SMALL LETTER EZH
-01B7 ; [.1614.0020.0008.01B7] # LATIN CAPITAL LETTER EZH
-01EF ; [.1615.0020.0002.01EF] # LATIN SMALL LETTER EZH WITH CARON
-0292 030C ; [.1615.0020.0002.01EF] # LATIN SMALL LETTER EZH WITH CARON
-01EE ; [.1615.0020.0008.01EE] # LATIN CAPITAL LETTER EZH WITH CARON
-01B7 030C ; [.1615.0020.0008.01EE] # LATIN CAPITAL LETTER EZH WITH CARON
-0111 ; [.1630.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0064 0335 ; [.1630.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1630.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-0044 0335 ; [.1630.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-00F0 ; [.1630.0021.0002.00F0] # LATIN SMALL LETTER ETH
-00D0 ; [.1630.0021.0008.00D0] # LATIN CAPITAL LETTER ETH
-01E7 ; [.1681.0020.0002.01E7] # LATIN SMALL LETTER G WITH CARON
-0067 030C ; [.1681.0020.0002.01E7] # LATIN SMALL LETTER G WITH CARON
-01E6 ; [.1681.0020.0008.01E6] # LATIN CAPITAL LETTER G WITH CARON
-0047 030C ; [.1681.0020.0008.01E6] # LATIN CAPITAL LETTER G WITH CARON
-01E9 ; [.16F5.0020.0002.01E9] # LATIN SMALL LETTER K WITH CARON
-006B 030C ; [.16F5.0020.0002.01E9] # LATIN SMALL LETTER K WITH CARON
-01E8 ; [.16F5.0020.0008.01E8] # LATIN CAPITAL LETTER K WITH CARON
-004B 030C ; [.16F5.0020.0008.01E8] # LATIN CAPITAL LETTER K WITH CARON
-0144 ; [.1752.0021.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0301 ; [.1752.0021.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0341 ; [.1752.0021.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-0143 ; [.1752.0021.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0301 ; [.1752.0021.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0341 ; [.1752.0021.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-00F1 ; [.1752.0022.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
-006E 0303 ; [.1752.0022.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
-00D1 ; [.1752.0022.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
-004E 0303 ; [.1752.0022.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
-0161 ; [.17FA.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0073 030C ; [.17FA.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17FA.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0053 030C ; [.17FA.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-00FE ; [.1800.0021.0002.00FE] # LATIN SMALL LETTER THORN
-00DE ; [.1800.0021.0008.00DE] # LATIN CAPITAL LETTER THORN
-00FC ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.1865.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.1865.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.1865.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.1865.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.1865.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.1865.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.1865.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.1865.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0171 ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0075 030B ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0170 ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0055 030B ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-017E ; [.18E7.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-007A 030C ; [.18E7.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-017D ; [.18E7.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-005A 030C ; [.18E7.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-00F8 ; [.18E8.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-006F 0338 ; [.18E8.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.18E8.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-004F 0338 ; [.18E8.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.18E8.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.18E8.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-0153 ; [.18E8.0021.0002.0153] # LATIN SMALL LIGATURE OE
-0152 ; [.18E8.0021.0008.0152] # LATIN CAPITAL LIGATURE OE
-00E6 ; [.18E9.0020.0002.00E6] # LATIN SMALL LETTER AE
-00C6 ; [.18E9.0020.0008.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.18E9.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.18E9.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.18E9.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.18E9.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.18E9.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
-00E5 ; [.18EB.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-0061 030A ; [.18EB.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.18EB.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-0041 030A ; [.18EB.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.18EB.0020.0008.00C5] # ANGSTROM SIGN
-01FB ; [.18EB.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.18EB.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-0227 ; [.18EB.0021.0002.0227] # LATIN SMALL LETTER A WITH DOT ABOVE
-0061 0307 ; [.18EB.0021.0002.0227] # LATIN SMALL LETTER A WITH DOT ABOVE
-0226 ; [.18EB.0021.0008.0226] # LATIN CAPITAL LETTER A WITH DOT ABOVE
-0041 0307 ; [.18EB.0021.0008.0226] # LATIN CAPITAL LETTER A WITH DOT ABOVE
-00E4 ; [.18EC.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.18EC.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.18EC.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.18EC.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.18EC.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.18EC.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-00E3 ; [.18EC.0021.0002.00E3] # LATIN SMALL LETTER A WITH TILDE
-0061 0303 ; [.18EC.0021.0002.00E3] # LATIN SMALL LETTER A WITH TILDE
-00C3 ; [.18EC.0021.0008.00C3] # LATIN CAPITAL LETTER A WITH TILDE
-0041 0303 ; [.18EC.0021.0008.00C3] # LATIN CAPITAL LETTER A WITH TILDE
-00F6 ; [.18ED.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.18ED.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.18ED.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.18ED.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.18ED.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.18ED.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-0151 ; [.18ED.0021.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-006F 030B ; [.18ED.0021.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0150 ; [.18ED.0021.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-004F 030B ; [.18ED.0021.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-00F5 ; [.18ED.0022.0002.00F5] # LATIN SMALL LETTER O WITH TILDE
-006F 0303 ; [.18ED.0022.0002.00F5] # LATIN SMALL LETTER O WITH TILDE
-00D5 ; [.18ED.0022.0008.00D5] # LATIN CAPITAL LETTER O WITH TILDE
-004F 0303 ; [.18ED.0022.0008.00D5] # LATIN CAPITAL LETTER O WITH TILDE
-1E4D ; [.18ED.0022.0002.00F5][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH TILDE AND ACUTE
-1E4C ; [.18ED.0022.0008.00D5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-022D ; [.18ED.0022.0002.00F5][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH TILDE AND MACRON
-022C ; [.18ED.0022.0008.00D5][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
-1E4F ; [.18ED.0022.0002.00F5][.0000.0047.0002.0308] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
-1E4E ; [.18ED.0022.0008.00D5][.0000.0047.0002.0308] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-1EE1 ; [.18ED.0022.0002.00F5][.0000.0068.0002.031B] # LATIN SMALL LETTER O WITH HORN AND TILDE
-1EE0 ; [.18ED.0022.0008.00D5][.0000.0068.0002.031B] # LATIN CAPITAL LETTER O WITH HORN AND TILDE
-00F4 ; [.18ED.0023.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-006F 0302 ; [.18ED.0023.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-00D4 ; [.18ED.0023.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-004F 0302 ; [.18ED.0023.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-1ED3 ; [.18ED.0023.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED2 ; [.18ED.0023.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED1 ; [.18ED.0023.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED0 ; [.18ED.0023.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED7 ; [.18ED.0023.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED6 ; [.18ED.0023.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED5 ; [.18ED.0023.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED4 ; [.18ED.0023.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED9 ; [.18ED.0023.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED8 ; [.18ED.0023.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-01EB ; [.18ED.0024.0002.01EB] # LATIN SMALL LETTER O WITH OGONEK
-006F 0328 ; [.18ED.0024.0002.01EB] # LATIN SMALL LETTER O WITH OGONEK
-01EA ; [.18ED.0024.0008.01EA] # LATIN CAPITAL LETTER O WITH OGONEK
-004F 0328 ; [.18ED.0024.0008.01EA] # LATIN CAPITAL LETTER O WITH OGONEK
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00E1 ; [.1604.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0301 ; [.1604.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.1604.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.1604.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0301 ; [.1604.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.1604.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+010D ; [.162E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+0063 030C ; [.162E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+010C ; [.162E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0043 030C ; [.162E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0292 ; [.162F.0020.0002.0292] # LATIN SMALL LETTER EZH
+01B7 ; [.162F.0020.0008.01B7] # LATIN CAPITAL LETTER EZH
+01EF ; [.1630.0020.0002.01EF] # LATIN SMALL LETTER EZH WITH CARON
+0292 030C ; [.1630.0020.0002.01EF] # LATIN SMALL LETTER EZH WITH CARON
+01EE ; [.1630.0020.0008.01EE] # LATIN CAPITAL LETTER EZH WITH CARON
+01B7 030C ; [.1630.0020.0008.01EE] # LATIN CAPITAL LETTER EZH WITH CARON
+0111 ; [.164B.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.164B.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.164B.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.164B.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.164B.0021.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.164B.0021.0008.00D0] # LATIN CAPITAL LETTER ETH
+01E7 ; [.169C.0020.0002.01E7] # LATIN SMALL LETTER G WITH CARON
+0067 030C ; [.169C.0020.0002.01E7] # LATIN SMALL LETTER G WITH CARON
+01E6 ; [.169C.0020.0008.01E6] # LATIN CAPITAL LETTER G WITH CARON
+0047 030C ; [.169C.0020.0008.01E6] # LATIN CAPITAL LETTER G WITH CARON
+01E9 ; [.1710.0020.0002.01E9] # LATIN SMALL LETTER K WITH CARON
+006B 030C ; [.1710.0020.0002.01E9] # LATIN SMALL LETTER K WITH CARON
+01E8 ; [.1710.0020.0008.01E8] # LATIN CAPITAL LETTER K WITH CARON
+004B 030C ; [.1710.0020.0008.01E8] # LATIN CAPITAL LETTER K WITH CARON
+0144 ; [.176D.0021.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0301 ; [.176D.0021.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0341 ; [.176D.0021.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+0143 ; [.176D.0021.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0301 ; [.176D.0021.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0341 ; [.176D.0021.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+00F1 ; [.176D.0022.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+006E 0303 ; [.176D.0022.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+00D1 ; [.176D.0022.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
+004E 0303 ; [.176D.0022.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
+0161 ; [.1815.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.1815.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.1815.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.1815.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+00FE ; [.181B.0021.0002.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.181B.0021.0008.00DE] # LATIN CAPITAL LETTER THORN
+00FC ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0171 ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+017E ; [.1902.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+007A 030C ; [.1902.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+017D ; [.1902.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+005A 030C ; [.1902.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+00F8 ; [.1903.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1903.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1903.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1903.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1903.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1903.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+0153 ; [.1903.0021.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.1903.0021.0008.0152] # LATIN CAPITAL LIGATURE OE
+00E6 ; [.1904.0020.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1904.0020.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1904.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1904.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1904.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1904.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1904.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00E5 ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1906.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.1906.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1906.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+0227 ; [.1906.0021.0002.0227] # LATIN SMALL LETTER A WITH DOT ABOVE
+0061 0307 ; [.1906.0021.0002.0227] # LATIN SMALL LETTER A WITH DOT ABOVE
+0226 ; [.1906.0021.0008.0226] # LATIN CAPITAL LETTER A WITH DOT ABOVE
+0041 0307 ; [.1906.0021.0008.0226] # LATIN CAPITAL LETTER A WITH DOT ABOVE
+00E4 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1907.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1907.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00E3 ; [.1907.0021.0002.00E3] # LATIN SMALL LETTER A WITH TILDE
+0061 0303 ; [.1907.0021.0002.00E3] # LATIN SMALL LETTER A WITH TILDE
+00C3 ; [.1907.0021.0008.00C3] # LATIN CAPITAL LETTER A WITH TILDE
+0041 0303 ; [.1907.0021.0008.00C3] # LATIN CAPITAL LETTER A WITH TILDE
+00F6 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1908.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1908.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+0151 ; [.1908.0021.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.1908.0021.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.1908.0021.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.1908.0021.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+00F5 ; [.1908.0022.0002.00F5] # LATIN SMALL LETTER O WITH TILDE
+006F 0303 ; [.1908.0022.0002.00F5] # LATIN SMALL LETTER O WITH TILDE
+00D5 ; [.1908.0022.0008.00D5] # LATIN CAPITAL LETTER O WITH TILDE
+004F 0303 ; [.1908.0022.0008.00D5] # LATIN CAPITAL LETTER O WITH TILDE
+1E4D ; [.1908.0022.0002.00F5][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4C ; [.1908.0022.0008.00D5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+022D ; [.1908.0022.0002.00F5][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH TILDE AND MACRON
+022C ; [.1908.0022.0008.00D5][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+1E4F ; [.1908.0022.0002.00F5][.0000.0047.0002.0308] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E4E ; [.1908.0022.0008.00D5][.0000.0047.0002.0308] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1EE1 ; [.1908.0022.0002.00F5][.0000.0068.0002.031B] # LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE0 ; [.1908.0022.0008.00D5][.0000.0068.0002.031B] # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+00F4 ; [.1908.0023.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.1908.0023.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.1908.0023.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.1908.0023.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.1908.0023.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.1908.0023.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.1908.0023.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.1908.0023.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.1908.0023.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.1908.0023.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.1908.0023.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.1908.0023.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.1908.0023.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.1908.0023.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+01EB ; [.1908.0024.0002.01EB] # LATIN SMALL LETTER O WITH OGONEK
+006F 0328 ; [.1908.0024.0002.01EB] # LATIN SMALL LETTER O WITH OGONEK
+01EA ; [.1908.0024.0008.01EA] # LATIN CAPITAL LETTER O WITH OGONEK
+004F 0328 ; [.1908.0024.0008.01EA] # LATIN CAPITAL LETTER O WITH OGONEK
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/si.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/si.pl
index 8508cc944b1..80f06273f48 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/si.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/si.pl
@@ -1,9 +1,10 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0D82 ; [.223F.0020.0002.0D82][.FFF1.0000.0000.0000] # SINHALA SIGN ANUSVARAYA
-0D83 ; [.223F.0020.0002.0D83][.FFF2.0000.0000.0000] # SINHALA SIGN VISARGAYA
-0DA5 ; [.224A.0020.0002.0DA5] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
-0DA4 ; [.224B.0020.0002.0DA4] # SINHALA LETTER TAALUJA NAASIKYAYA
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0D82 ; [.225A.0020.0002.0D82][.FFF1.0000.0000.0000] # SINHALA SIGN ANUSVARAYA
+0D83 ; [.225A.0020.0002.0D83][.FFF2.0000.0000.0000] # SINHALA SIGN VISARGAYA
+0D96 ; [.225A.0020.0002.0D96][.FFF0.0000.0000.0000] # SINHALA LETTER AUYANNA
+0DA5 ; [.2265.0020.0002.0DA5] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+0DA4 ; [.2266.0020.0002.0DA4] # SINHALA LETTER TAALUJA NAASIKYAYA
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/si_dict.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/si_dict.pl
index 36d4f3013d1..a76d0b2bef2 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/si_dict.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/si_dict.pl
@@ -1,8 +1,9 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0D82 ; [.223F.0020.0002.0D82][.FFF1.0000.0000.0000] # SINHALA SIGN ANUSVARAYA
-0D83 ; [.223F.0020.0002.0D83][.FFF2.0000.0000.0000] # SINHALA SIGN VISARGAYA
-0DA5 ; [.2248.0020.0002.0DA2][.227A.0020.0002.0DCA][.224A.0021.0002.0DA5] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0D82 ; [.225A.0020.0002.0D82][.FFF1.0000.0000.0000] # SINHALA SIGN ANUSVARAYA
+0D83 ; [.225A.0020.0002.0D83][.FFF2.0000.0000.0000] # SINHALA SIGN VISARGAYA
+0D96 ; [.225A.0020.0002.0D96][.FFF0.0000.0000.0000] # SINHALA LETTER AUYANNA
+0DA5 ; [.2263.0020.0002.0DA2][.2295.0020.0002.0DCA][.2265.0021.0002.0DA5] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sk.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sk.pl
index 26494c44846..ef9ba9fd0a1 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sk.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sk.pl
@@ -1,45 +1,45 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-00E4 ; [.15D5.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.15D5.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.15D5.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.15D5.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.15D5.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.15D5.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-010D ; [.1603.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-0063 030C ; [.1603.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-010C ; [.1603.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0043 030C ; [.1603.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0063 0068 ; [.169A.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
-0063 0048 ; [.169A.0020.0007.0063][.0000.0000.0002.0000] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER H>
-0043 0068 ; [.169A.0020.0007.0043][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
-0043 0048 ; [.169A.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
-00F4 ; [.1757.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-006F 0302 ; [.1757.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-00D4 ; [.1757.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-004F 0302 ; [.1757.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-1ED3 ; [.1757.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED2 ; [.1757.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED1 ; [.1757.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED0 ; [.1757.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED7 ; [.1757.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED6 ; [.1757.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED5 ; [.1757.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED4 ; [.1757.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED9 ; [.1757.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED8 ; [.1757.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-0159 ; [.17A3.0020.0002.0159] # LATIN SMALL LETTER R WITH CARON
-0072 030C ; [.17A3.0020.0002.0159] # LATIN SMALL LETTER R WITH CARON
-0158 ; [.17A3.0020.0008.0158] # LATIN CAPITAL LETTER R WITH CARON
-0052 030C ; [.17A3.0020.0008.0158] # LATIN CAPITAL LETTER R WITH CARON
-0161 ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0073 030C ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0053 030C ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-017E ; [.187B.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-007A 030C ; [.187B.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-017D ; [.187B.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-005A 030C ; [.187B.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00E4 ; [.15F0.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.15F0.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.15F0.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.15F0.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.15F0.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.15F0.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+010D ; [.161E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+0063 030C ; [.161E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+010C ; [.161E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0043 030C ; [.161E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0063 0068 ; [.16B5.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0063 0048 ; [.16B5.0020.0007.0063][.0000.0000.0002.0000] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER H>
+0043 0068 ; [.16B5.0020.0007.0043][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
+0043 0048 ; [.16B5.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
+00F4 ; [.1772.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.1772.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.1772.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.1772.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.1772.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.1772.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.1772.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.1772.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.1772.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.1772.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.1772.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.1772.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.1772.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.1772.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+0159 ; [.17BE.0020.0002.0159] # LATIN SMALL LETTER R WITH CARON
+0072 030C ; [.17BE.0020.0002.0159] # LATIN SMALL LETTER R WITH CARON
+0158 ; [.17BE.0020.0008.0158] # LATIN CAPITAL LETTER R WITH CARON
+0052 030C ; [.17BE.0020.0008.0158] # LATIN CAPITAL LETTER R WITH CARON
+0161 ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+017E ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+007A 030C ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+017D ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+005A 030C ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sl.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sl.pl
index 80cb12b64c7..6fdf3cf69eb 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sl.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sl.pl
@@ -1,17 +1,17 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-010D ; [.1603.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-0063 030C ; [.1603.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-010C ; [.1603.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0043 030C ; [.1603.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0161 ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0073 030C ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0053 030C ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-017E ; [.187B.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-007A 030C ; [.187B.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-017D ; [.187B.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-005A 030C ; [.187B.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+010D ; [.161E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+0063 030C ; [.161E.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+010C ; [.161E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0043 030C ; [.161E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0161 ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+017E ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+007A 030C ; [.1896.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+017D ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+005A 030C ; [.1896.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sq.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sq.pl
index 2679af9402d..ccc6af55203 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sq.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sq.pl
@@ -1,49 +1,49 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-00E7 ; [.1615.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
-0063 0327 ; [.1615.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
-00C7 ; [.1615.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
-0043 0327 ; [.1615.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
-0064 0068 ; [.1630.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER H>
-0064 0048 ; [.1630.0020.0007.0064][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER H>
-0044 0068 ; [.1630.0020.0007.0044][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER H>
-0044 0048 ; [.1630.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER H>
-00EB ; [.1668.0020.0002.00EB] # LATIN SMALL LETTER E WITH DIAERESIS
-0065 0308 ; [.1668.0020.0002.00EB] # LATIN SMALL LETTER E WITH DIAERESIS
-00CB ; [.1668.0020.0008.00CB] # LATIN CAPITAL LETTER E WITH DIAERESIS
-0045 0308 ; [.1668.0020.0008.00CB] # LATIN CAPITAL LETTER E WITH DIAERESIS
-0067 006A ; [.1698.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER J>
-0067 004A ; [.1698.0020.0007.0067][.0000.0000.0002.0000] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER J>
-0047 006A ; [.1698.0020.0007.0047][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER J>
-0047 004A ; [.1698.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER J>
-006C 006C ; [.1725.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L>
-006C 004C ; [.1725.0020.0007.006C][.0000.0000.0002.0000] # <LATIN SMALL LETTER L, LATIN CAPITAL LETTER L>
-004C 006C ; [.1725.0020.0007.004C][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L>
-004C 004C ; [.1725.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L>
-006E 006A ; [.1755.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER J>
-006E 004A ; [.1755.0020.0007.006E][.0000.0000.0002.0000] # <LATIN SMALL LETTER N, LATIN CAPITAL LETTER J>
-004E 006A ; [.1755.0020.0007.004E][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER J>
-004E 004A ; [.1755.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER J>
-0072 0072 ; [.17D7.0020.0002.0072] # <LATIN SMALL LETTER R, LATIN SMALL LETTER R>
-0072 0052 ; [.17D7.0020.0007.0072][.0000.0000.0002.0000] # <LATIN SMALL LETTER R, LATIN CAPITAL LETTER R>
-0052 0072 ; [.17D7.0020.0007.0052][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER R, LATIN SMALL LETTER R>
-0052 0052 ; [.17D7.0020.0008.0052] # <LATIN CAPITAL LETTER R, LATIN CAPITAL LETTER R>
-0073 0068 ; [.17FA.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
-0073 0048 ; [.17FA.0020.0007.0073][.0000.0000.0002.0000] # <LATIN SMALL LETTER S, LATIN CAPITAL LETTER H>
-0053 0068 ; [.17FA.0020.0007.0053][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER H>
-0053 0048 ; [.17FA.0020.0008.0053] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER H>
-0074 0068 ; [.181A.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER H>
-0074 0048 ; [.181A.0020.0007.0074][.0000.0000.0002.0000] # <LATIN SMALL LETTER T, LATIN CAPITAL LETTER H>
-0054 0068 ; [.181A.0020.0007.0054][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER H>
-0054 0048 ; [.181A.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER H>
-0078 0068 ; [.1864.0020.0002.0078] # <LATIN SMALL LETTER X, LATIN SMALL LETTER H>
-0078 0048 ; [.1864.0020.0007.0078][.0000.0000.0002.0000] # <LATIN SMALL LETTER X, LATIN CAPITAL LETTER H>
-0058 0068 ; [.1864.0020.0007.0058][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER X, LATIN SMALL LETTER H>
-0058 0048 ; [.1864.0020.0008.0058] # <LATIN CAPITAL LETTER X, LATIN CAPITAL LETTER H>
-007A 0068 ; [.1896.0020.0002.007A] # <LATIN SMALL LETTER Z, LATIN SMALL LETTER H>
-007A 0048 ; [.1896.0020.0007.007A][.0000.0000.0002.0000] # <LATIN SMALL LETTER Z, LATIN CAPITAL LETTER H>
-005A 0068 ; [.1896.0020.0007.005A][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER Z, LATIN SMALL LETTER H>
-005A 0048 ; [.1896.0020.0008.005A] # <LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER H>
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00E7 ; [.1630.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
+0063 0327 ; [.1630.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
+00C7 ; [.1630.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
+0043 0327 ; [.1630.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
+0064 0068 ; [.164B.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER H>
+0064 0048 ; [.164B.0020.0007.0064][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER H>
+0044 0068 ; [.164B.0020.0007.0044][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER H>
+0044 0048 ; [.164B.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER H>
+00EB ; [.1683.0020.0002.00EB] # LATIN SMALL LETTER E WITH DIAERESIS
+0065 0308 ; [.1683.0020.0002.00EB] # LATIN SMALL LETTER E WITH DIAERESIS
+00CB ; [.1683.0020.0008.00CB] # LATIN CAPITAL LETTER E WITH DIAERESIS
+0045 0308 ; [.1683.0020.0008.00CB] # LATIN CAPITAL LETTER E WITH DIAERESIS
+0067 006A ; [.16B3.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER J>
+0067 004A ; [.16B3.0020.0007.0067][.0000.0000.0002.0000] # <LATIN SMALL LETTER G, LATIN CAPITAL LETTER J>
+0047 006A ; [.16B3.0020.0007.0047][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER J>
+0047 004A ; [.16B3.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER J>
+006C 006C ; [.1740.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L>
+006C 004C ; [.1740.0020.0007.006C][.0000.0000.0002.0000] # <LATIN SMALL LETTER L, LATIN CAPITAL LETTER L>
+004C 006C ; [.1740.0020.0007.004C][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L>
+004C 004C ; [.1740.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L>
+006E 006A ; [.1770.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER J>
+006E 004A ; [.1770.0020.0007.006E][.0000.0000.0002.0000] # <LATIN SMALL LETTER N, LATIN CAPITAL LETTER J>
+004E 006A ; [.1770.0020.0007.004E][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER J>
+004E 004A ; [.1770.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER J>
+0072 0072 ; [.17F2.0020.0002.0072] # <LATIN SMALL LETTER R, LATIN SMALL LETTER R>
+0072 0052 ; [.17F2.0020.0007.0072][.0000.0000.0002.0000] # <LATIN SMALL LETTER R, LATIN CAPITAL LETTER R>
+0052 0072 ; [.17F2.0020.0007.0052][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER R, LATIN SMALL LETTER R>
+0052 0052 ; [.17F2.0020.0008.0052] # <LATIN CAPITAL LETTER R, LATIN CAPITAL LETTER R>
+0073 0068 ; [.1815.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
+0073 0048 ; [.1815.0020.0007.0073][.0000.0000.0002.0000] # <LATIN SMALL LETTER S, LATIN CAPITAL LETTER H>
+0053 0068 ; [.1815.0020.0007.0053][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER H>
+0053 0048 ; [.1815.0020.0008.0053] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER H>
+0074 0068 ; [.1835.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER H>
+0074 0048 ; [.1835.0020.0007.0074][.0000.0000.0002.0000] # <LATIN SMALL LETTER T, LATIN CAPITAL LETTER H>
+0054 0068 ; [.1835.0020.0007.0054][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER H>
+0054 0048 ; [.1835.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER H>
+0078 0068 ; [.187F.0020.0002.0078] # <LATIN SMALL LETTER X, LATIN SMALL LETTER H>
+0078 0048 ; [.187F.0020.0007.0078][.0000.0000.0002.0000] # <LATIN SMALL LETTER X, LATIN CAPITAL LETTER H>
+0058 0068 ; [.187F.0020.0007.0058][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER X, LATIN SMALL LETTER H>
+0058 0048 ; [.187F.0020.0008.0058] # <LATIN CAPITAL LETTER X, LATIN CAPITAL LETTER H>
+007A 0068 ; [.18B1.0020.0002.007A] # <LATIN SMALL LETTER Z, LATIN SMALL LETTER H>
+007A 0048 ; [.18B1.0020.0007.007A][.0000.0000.0002.0000] # <LATIN SMALL LETTER Z, LATIN CAPITAL LETTER H>
+005A 0068 ; [.18B1.0020.0007.005A][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER Z, LATIN SMALL LETTER H>
+005A 0048 ; [.18B1.0020.0008.005A] # <LATIN CAPITAL LETTER Z, LATIN CAPITAL LETTER H>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sr.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sr.pl
index 4c4cfa1c211..d0bb83d1ed3 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sr.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sr.pl
@@ -1,49 +1,49 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
0x0416, 0x0436, 0x0417, 0x0437, 0x0418, 0x0438, 0x0406, 0x0456,
0x041E, 0x043E, 0x04E8, 0x04E9, 0x041A, 0x043A, 0x0423, 0x0443,
0x0427, 0x0447, 0x042B, 0x044B, 0x042D, 0x044D, 0x0474, 0x0475],
- entry => <<'ENTRY', # for DUCET v6.1.0
-04D1 ; [.1976.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
-04D0 ; [.1976.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D3 ; [.1976.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D2 ; [.1976.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04DB ; [.1982.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DA ; [.1982.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-0453 ; [.1996.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
-0403 ; [.1996.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
-04D7 ; [.19BE.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
-04D6 ; [.19BE.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
-04DD ; [.19CA.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DC ; [.19CA.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DF ; [.19D7.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04DE ; [.19D7.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04E5 ; [.19EF.0020.0002.0438][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER I WITH DIAERESIS
-04E4 ; [.19EF.0020.0008.0418][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-0457 ; [.19FB.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
-0407 ; [.19FB.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
-0439 ; [.19EF.0020.0002.0438][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT I
-0419 ; [.19EF.0020.0008.0418][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT I
-04E7 ; [.1A5C.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E6 ; [.1A5C.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04EB ; [.1A64.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EA ; [.1A64.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-045C ; [.1A0D.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
-040C ; [.1A0D.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
-045E ; [.1A9E.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
-040E ; [.1A9E.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
-04F1 ; [.1A9E.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F0 ; [.1A9E.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F3 ; [.1A9E.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F2 ; [.1A9E.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F5 ; [.1AF1.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F4 ; [.1AF1.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F9 ; [.1B24.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-04F8 ; [.1B24.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04ED ; [.1B39.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EC ; [.1B39.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-0477 ; [.1B6F.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0476 ; [.1B6F.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ entry => <<'ENTRY', # for DUCET v6.2.0
+04D1 ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453 ; [.19B1.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.19B1.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E5 ; [.1A0A.0020.0002.0438][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E4 ; [.1A0A.0020.0008.0418][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+0457 ; [.1A16.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407 ; [.1A16.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+0439 ; [.1A0A.0020.0002.0438][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT I
+0419 ; [.1A0A.0020.0008.0418][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT I
+04E7 ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C ; [.1A28.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.1A28.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E ; [.1AB9.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.1AB9.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.1AB9.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.1AB9.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.1AB9.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.1AB9.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5 ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sv.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sv.pl
index 8f22bb00314..4cb3a4cd357 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sv.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sv.pl
@@ -1,87 +1,87 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0111 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0064 0335 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-0044 0335 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-00F0 ; [.1616.0022.0002.00F0] # LATIN SMALL LETTER ETH
-00D0 ; [.1616.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
-00FE ; [.17FB.0020.0003.00FE][.1699.0020.0003.00FE] # LATIN SMALL LETTER THORN
-00DE ; [.17FB.0020.0009.00DE][.1699.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
-0077 ; [.1844.0021.0002.0077] # LATIN SMALL LETTER W
-0057 ; [.1844.0021.0008.0057] # LATIN CAPITAL LETTER W
-00FC ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.1865.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.1865.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.1865.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.1865.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.1865.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.1865.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.1865.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.1865.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0171 ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0075 030B ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0170 ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0055 030B ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-00E5 ; [.18EB.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-0061 030A ; [.18EB.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.18EB.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-0041 030A ; [.18EB.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.18EB.0020.0008.00C5] # ANGSTROM SIGN
-01FB ; [.18EB.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.18EB.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-00E4 ; [.18EC.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.18EC.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.18EC.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.18EC.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.18EC.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.18EC.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-00E6 ; [.18EC.0021.0002.00E6] # LATIN SMALL LETTER AE
-00C6 ; [.18EC.0021.0008.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.18EC.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.18EC.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.18EC.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.18EC.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.18EC.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
-0119 ; [.18EC.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0065 0328 ; [.18EC.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0118 ; [.18EC.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-0045 0328 ; [.18EC.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-00F6 ; [.18ED.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.18ED.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.18ED.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.18ED.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.18ED.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.18ED.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-00F8 ; [.18ED.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-006F 0338 ; [.18ED.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.18ED.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-004F 0338 ; [.18ED.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.18ED.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.18ED.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-0151 ; [.18ED.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-006F 030B ; [.18ED.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0150 ; [.18ED.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-004F 030B ; [.18ED.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0153 ; [.18ED.0023.0002.0153] # LATIN SMALL LIGATURE OE
-0152 ; [.18ED.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
-00F4 ; [.18ED.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-006F 0302 ; [.18ED.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-00D4 ; [.18ED.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-004F 0302 ; [.18ED.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-1ED3 ; [.18ED.0024.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED2 ; [.18ED.0024.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED1 ; [.18ED.0024.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED0 ; [.18ED.0024.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED7 ; [.18ED.0024.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED6 ; [.18ED.0024.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED5 ; [.18ED.0024.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED4 ; [.18ED.0024.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED9 ; [.18ED.0024.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED8 ; [.18ED.0024.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0111 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1631.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1631.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+00FE ; [.1816.0020.0003.00FE][.16B4.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.1816.0020.0009.00DE][.16B4.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+0077 ; [.185F.0021.0002.0077] # LATIN SMALL LETTER W
+0057 ; [.185F.0021.0008.0057] # LATIN CAPITAL LETTER W
+00FC ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0171 ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E5 ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1906.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.1906.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1906.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00E4 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1907.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1907.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00E6 ; [.1907.0021.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1907.0021.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1907.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1907.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1907.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1907.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1907.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+0119 ; [.1907.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.1907.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.1907.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.1907.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F6 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1908.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1908.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00F8 ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1908.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1908.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+0151 ; [.1908.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.1908.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.1908.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.1908.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153 ; [.1908.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.1908.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00F4 ; [.1908.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.1908.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.1908.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.1908.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.1908.0024.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.1908.0024.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.1908.0024.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.1908.0024.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.1908.0024.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.1908.0024.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.1908.0024.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.1908.0024.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.1908.0024.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.1908.0024.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl
index 2d4b583b9d7..6e6564bb569 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl
@@ -1,85 +1,85 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0111 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0064 0335 ; [.1616.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-0044 0335 ; [.1616.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-00F0 ; [.1616.0022.0002.00F0] # LATIN SMALL LETTER ETH
-00D0 ; [.1616.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
-00FE ; [.17FB.0020.0003.00FE][.1699.0020.0003.00FE] # LATIN SMALL LETTER THORN
-00DE ; [.17FB.0020.0009.00DE][.1699.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
-00FC ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.1865.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.1865.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.1865.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.1865.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.1865.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.1865.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.1865.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.1865.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.1865.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.1865.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0171 ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0075 030B ; [.1865.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0170 ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0055 030B ; [.1865.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-00E5 ; [.18EB.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-0061 030A ; [.18EB.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.18EB.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-0041 030A ; [.18EB.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.18EB.0020.0008.00C5] # ANGSTROM SIGN
-01FB ; [.18EB.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.18EB.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-00E4 ; [.18EC.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-0061 0308 ; [.18EC.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.18EC.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-0041 0308 ; [.18EC.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.18EC.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.18EC.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-00E6 ; [.18EC.0021.0002.00E6] # LATIN SMALL LETTER AE
-00C6 ; [.18EC.0021.0008.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.18EC.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.18EC.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.18EC.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.18EC.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.18EC.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
-0119 ; [.18EC.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0065 0328 ; [.18EC.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
-0118 ; [.18EC.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-0045 0328 ; [.18EC.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
-00F6 ; [.18ED.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.18ED.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.18ED.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.18ED.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.18ED.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.18ED.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-00F8 ; [.18ED.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-006F 0338 ; [.18ED.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.18ED.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-004F 0338 ; [.18ED.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.18ED.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.18ED.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-0151 ; [.18ED.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-006F 030B ; [.18ED.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0150 ; [.18ED.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-004F 030B ; [.18ED.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0153 ; [.18ED.0023.0002.0153] # LATIN SMALL LIGATURE OE
-0152 ; [.18ED.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
-00F4 ; [.18ED.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-006F 0302 ; [.18ED.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-00D4 ; [.18ED.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-004F 0302 ; [.18ED.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-1ED3 ; [.18ED.0024.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED2 ; [.18ED.0024.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED1 ; [.18ED.0024.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED0 ; [.18ED.0024.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED7 ; [.18ED.0024.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED6 ; [.18ED.0024.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED5 ; [.18ED.0024.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED4 ; [.18ED.0024.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED9 ; [.18ED.0024.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED8 ; [.18ED.0024.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0111 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1631.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1631.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+00FE ; [.1816.0020.0003.00FE][.16B4.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.1816.0020.0009.00DE][.16B4.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+00FC ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0171 ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E5 ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1906.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.1906.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1906.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00E4 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.1907.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.1907.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00E6 ; [.1907.0021.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1907.0021.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1907.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1907.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1907.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1907.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1907.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+0119 ; [.1907.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.1907.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.1907.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.1907.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F6 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1908.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1908.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00F8 ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1908.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1908.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+0151 ; [.1908.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.1908.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.1908.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.1908.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153 ; [.1908.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.1908.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00F4 ; [.1908.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.1908.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.1908.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.1908.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.1908.0024.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.1908.0024.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.1908.0024.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.1908.0024.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.1908.0024.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.1908.0024.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.1908.0024.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.1908.0024.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.1908.0024.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.1908.0024.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ta.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ta.pl
index bf017292ba2..4dae5f1d328 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ta.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ta.pl
@@ -1,31 +1,55 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0B82 ; [.212F.0020.0002.0B82][.FFF1.0000.0000.0000] # TAMIL SIGN ANUSVARA
-0B95 0BCD ; [.2130.0020.0002.0B95][.FFF1.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA>
-0B99 0BCD ; [.2131.0020.0002.0B99][.FFF1.0000.0000.0000] # <TAMIL LETTER NGA, TAMIL SIGN VIRAMA>
-0B9A 0BCD ; [.2132.0020.0002.0B9A][.FFF1.0000.0000.0000] # <TAMIL LETTER CA, TAMIL SIGN VIRAMA>
-0B9E 0BCD ; [.2133.0020.0002.0B9E][.FFF1.0000.0000.0000] # <TAMIL LETTER NYA, TAMIL SIGN VIRAMA>
-0B9F 0BCD ; [.2134.0020.0002.0B9F][.FFF1.0000.0000.0000] # <TAMIL LETTER TTA, TAMIL SIGN VIRAMA>
-0BA3 0BCD ; [.2135.0020.0002.0BA3][.FFF1.0000.0000.0000] # <TAMIL LETTER NNA, TAMIL SIGN VIRAMA>
-0BA4 0BCD ; [.2136.0020.0002.0BA4][.FFF1.0000.0000.0000] # <TAMIL LETTER TA, TAMIL SIGN VIRAMA>
-0BA8 0BCD ; [.2137.0020.0002.0BA8][.FFF1.0000.0000.0000] # <TAMIL LETTER NA, TAMIL SIGN VIRAMA>
-0BAA 0BCD ; [.2138.0020.0002.0BAA][.FFF1.0000.0000.0000] # <TAMIL LETTER PA, TAMIL SIGN VIRAMA>
-0BAE 0BCD ; [.2139.0020.0002.0BAE][.FFF1.0000.0000.0000] # <TAMIL LETTER MA, TAMIL SIGN VIRAMA>
-0BAF 0BCD ; [.213A.0020.0002.0BAF][.FFF1.0000.0000.0000] # <TAMIL LETTER YA, TAMIL SIGN VIRAMA>
-0BB0 0BCD ; [.213B.0020.0002.0BB0][.FFF1.0000.0000.0000] # <TAMIL LETTER RA, TAMIL SIGN VIRAMA>
-0BB2 0BCD ; [.213C.0020.0002.0BB2][.FFF1.0000.0000.0000] # <TAMIL LETTER LA, TAMIL SIGN VIRAMA>
-0BB5 0BCD ; [.213D.0020.0002.0BB5][.FFF1.0000.0000.0000] # <TAMIL LETTER VA, TAMIL SIGN VIRAMA>
-0BB4 0BCD ; [.213E.0020.0002.0BB4][.FFF1.0000.0000.0000] # <TAMIL LETTER LLLA, TAMIL SIGN VIRAMA>
-0BB3 0BCD ; [.213F.0020.0002.0BB3][.FFF1.0000.0000.0000] # <TAMIL LETTER LLA, TAMIL SIGN VIRAMA>
-0BB1 0BCD ; [.2140.0020.0002.0BB1][.FFF1.0000.0000.0000] # <TAMIL LETTER RRA, TAMIL SIGN VIRAMA>
-0BA9 0BCD ; [.2141.0020.0002.0BA9][.FFF1.0000.0000.0000] # <TAMIL LETTER NNNA, TAMIL SIGN VIRAMA>
-0B9C 0BCD ; [.2142.0020.0002.0B9C][.FFF1.0000.0000.0000] # <TAMIL LETTER JA, TAMIL SIGN VIRAMA>
-0BB6 0BCD ; [.2143.0020.0002.0BB6][.FFF1.0000.0000.0000] # <TAMIL LETTER SHA, TAMIL SIGN VIRAMA>
-0BB7 0BCD ; [.2144.0020.0002.0BB7][.FFF1.0000.0000.0000] # <TAMIL LETTER SSA, TAMIL SIGN VIRAMA>
-0BB8 0BCD ; [.2145.0020.0002.0BB8][.FFF1.0000.0000.0000] # <TAMIL LETTER SA, TAMIL SIGN VIRAMA>
-0BB9 0BCD ; [.2146.0020.0002.0BB9][.FFF1.0000.0000.0000] # <TAMIL LETTER HA, TAMIL SIGN VIRAMA>
-0B95 0BCD 0BB7 0BCD ; [.2147.0020.0002.0B95][.FFF1.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA, TAMIL LETTER SSA, TAMIL SIGN VIRAMA>
-0B95 0BCD 0BB7 ; [.2147.0020.0002.0B95][.FFF2.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA, TAMIL LETTER SSA>
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0B82 ; [.214B.0020.0002.0B82][.FFF0.0000.0000.0000] # TAMIL SIGN ANUSVARA
+0B83 ; [.214B.0020.0002.0B83][.FFF1.0000.0000.0000] # TAMIL SIGN VISARGA
+0B95 0BCD 0BB7 0BCD ; [.2162.0020.0002.0B95][.FFF2.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA, TAMIL LETTER SSA, TAMIL SIGN VIRAMA>
+0B95 0BCD 0BB7 ; [.2162.0020.0002.0B95][.FFF3.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA, TAMIL LETTER SSA>
+0B95 0BCD ; [.214C.0020.0002.0B95][.FFF0.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA>
+0B95 ; [.214C.0020.0002.0B95][.FFF1.0000.0000.0000] # TAMIL LETTER KA
+0B99 0BCD ; [.214D.0020.0002.0B99][.FFF0.0000.0000.0000] # <TAMIL LETTER NGA, TAMIL SIGN VIRAMA>
+0B99 ; [.214D.0020.0002.0B99][.FFF1.0000.0000.0000] # TAMIL LETTER NGA
+0B9A 0BCD ; [.214E.0020.0002.0B9A][.FFF0.0000.0000.0000] # <TAMIL LETTER CA, TAMIL SIGN VIRAMA>
+0B9A ; [.214E.0020.0002.0B9A][.FFF1.0000.0000.0000] # TAMIL LETTER CA
+0B9E 0BCD ; [.214F.0020.0002.0B9E][.FFF0.0000.0000.0000] # <TAMIL LETTER NYA, TAMIL SIGN VIRAMA>
+0B9E ; [.214F.0020.0002.0B9E][.FFF1.0000.0000.0000] # TAMIL LETTER NYA
+0B9F 0BCD ; [.2150.0020.0002.0B9F][.FFF0.0000.0000.0000] # <TAMIL LETTER TTA, TAMIL SIGN VIRAMA>
+0B9F ; [.2150.0020.0002.0B9F][.FFF1.0000.0000.0000] # TAMIL LETTER TTA
+0BA3 0BCD ; [.2151.0020.0002.0BA3][.FFF0.0000.0000.0000] # <TAMIL LETTER NNA, TAMIL SIGN VIRAMA>
+0BA3 ; [.2151.0020.0002.0BA3][.FFF1.0000.0000.0000] # TAMIL LETTER NNA
+0BA4 0BCD ; [.2152.0020.0002.0BA4][.FFF0.0000.0000.0000] # <TAMIL LETTER TA, TAMIL SIGN VIRAMA>
+0BA4 ; [.2152.0020.0002.0BA4][.FFF1.0000.0000.0000] # TAMIL LETTER TA
+0BA8 0BCD ; [.2153.0020.0002.0BA8][.FFF0.0000.0000.0000] # <TAMIL LETTER NA, TAMIL SIGN VIRAMA>
+0BA8 ; [.2153.0020.0002.0BA8][.FFF1.0000.0000.0000] # TAMIL LETTER NA
+0BAA 0BCD ; [.2154.0020.0002.0BAA][.FFF0.0000.0000.0000] # <TAMIL LETTER PA, TAMIL SIGN VIRAMA>
+0BAA ; [.2154.0020.0002.0BAA][.FFF1.0000.0000.0000] # TAMIL LETTER PA
+0BAE 0BCD ; [.2155.0020.0002.0BAE][.FFF0.0000.0000.0000] # <TAMIL LETTER MA, TAMIL SIGN VIRAMA>
+0BAE ; [.2155.0020.0002.0BAE][.FFF1.0000.0000.0000] # TAMIL LETTER MA
+0BAF 0BCD ; [.2156.0020.0002.0BAF][.FFF0.0000.0000.0000] # <TAMIL LETTER YA, TAMIL SIGN VIRAMA>
+0BAF ; [.2156.0020.0002.0BAF][.FFF1.0000.0000.0000] # TAMIL LETTER YA
+0BB0 0BCD ; [.2157.0020.0002.0BB0][.FFF0.0000.0000.0000] # <TAMIL LETTER RA, TAMIL SIGN VIRAMA>
+0BB0 ; [.2157.0020.0002.0BB0][.FFF1.0000.0000.0000] # TAMIL LETTER RA
+0BB2 0BCD ; [.2158.0020.0002.0BB2][.FFF0.0000.0000.0000] # <TAMIL LETTER LA, TAMIL SIGN VIRAMA>
+0BB2 ; [.2158.0020.0002.0BB2][.FFF1.0000.0000.0000] # TAMIL LETTER LA
+0BB5 0BCD ; [.2159.0020.0002.0BB5][.FFF0.0000.0000.0000] # <TAMIL LETTER VA, TAMIL SIGN VIRAMA>
+0BB5 ; [.2159.0020.0002.0BB5][.FFF1.0000.0000.0000] # TAMIL LETTER VA
+0BB4 0BCD ; [.215A.0020.0002.0BB4][.FFF0.0000.0000.0000] # <TAMIL LETTER LLLA, TAMIL SIGN VIRAMA>
+0BB4 ; [.215A.0020.0002.0BB4][.FFF1.0000.0000.0000] # TAMIL LETTER LLLA
+0BB3 0BCD ; [.215B.0020.0002.0BB3][.FFF0.0000.0000.0000] # <TAMIL LETTER LLA, TAMIL SIGN VIRAMA>
+0BB3 ; [.215B.0020.0002.0BB3][.FFF1.0000.0000.0000] # TAMIL LETTER LLA
+0BB1 0BCD ; [.215C.0020.0002.0BB1][.FFF0.0000.0000.0000] # <TAMIL LETTER RRA, TAMIL SIGN VIRAMA>
+0BB1 ; [.215C.0020.0002.0BB1][.FFF1.0000.0000.0000] # TAMIL LETTER RRA
+0BA9 0BCD ; [.215D.0020.0002.0BA9][.FFF0.0000.0000.0000] # <TAMIL LETTER NNNA, TAMIL SIGN VIRAMA>
+0BA9 ; [.215D.0020.0002.0BA9][.FFF1.0000.0000.0000] # TAMIL LETTER NNNA
+0B9C 0BCD ; [.215E.0020.0002.0B9C][.FFF0.0000.0000.0000] # <TAMIL LETTER JA, TAMIL SIGN VIRAMA>
+0B9C ; [.215E.0020.0002.0B9C][.FFF1.0000.0000.0000] # TAMIL LETTER JA
+0BB6 0BCD ; [.215F.0020.0002.0BB6][.FFF0.0000.0000.0000] # <TAMIL LETTER SHA, TAMIL SIGN VIRAMA>
+0BB6 ; [.215F.0020.0002.0BB6][.FFF1.0000.0000.0000] # TAMIL LETTER SHA
+0BB7 0BCD ; [.2160.0020.0002.0BB7][.FFF0.0000.0000.0000] # <TAMIL LETTER SSA, TAMIL SIGN VIRAMA>
+0BB7 ; [.2160.0020.0002.0BB7][.FFF1.0000.0000.0000] # TAMIL LETTER SSA
+0BB8 0BCD ; [.2161.0020.0002.0BB8][.FFF0.0000.0000.0000] # <TAMIL LETTER SA, TAMIL SIGN VIRAMA>
+0BB8 ; [.2161.0020.0002.0BB8][.FFF1.0000.0000.0000] # TAMIL LETTER SA
+0BB9 0BCD ; [.2162.0020.0002.0BB9][.FFF0.0000.0000.0000] # <TAMIL LETTER HA, TAMIL SIGN VIRAMA>
+0BB9 ; [.2162.0020.0002.0BB9][.FFF1.0000.0000.0000] # TAMIL LETTER HA
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/te.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/te.pl
index 1e27b67e765..eb63a7ffbcd 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/te.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/te.pl
@@ -1,8 +1,9 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0C01 ; [.2164.0020.0002.0C01][.FFF1.0000.0000.0000] # TELUGU SIGN CANDRABINDU
-0C02 ; [.2164.0020.0002.0C02][.FFF2.0000.0000.0000] # TELUGU SIGN ANUSVARA
-0C03 ; [.2164.0020.0002.0C03][.FFF3.0000.0000.0000] # TELUGU SIGN VISARGA
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0C01 ; [.217F.0020.0002.0C01][.FFF1.0000.0000.0000] # TELUGU SIGN CANDRABINDU
+0C02 ; [.217F.0020.0002.0C02][.FFF2.0000.0000.0000] # TELUGU SIGN ANUSVARA
+0C03 ; [.217F.0020.0002.0C03][.FFF3.0000.0000.0000] # TELUGU SIGN VISARGA
+0C14 ; [.217F.0020.0002.0C14][.FFF0.0000.0000.0000] # TELUGU LETTER AU
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/th.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/th.pl
index a1794cb87bb..27f266fc5db 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/th.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/th.pl
@@ -1,16 +1,23 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0E2F ; [*03BC.0020.0002.0E2F][*FFF1.0000.0000.0000] # THAI CHARACTER PAIYANNOI
-0E46 ; [*03BC.0020.0002.0E46][*FFF2.0000.0000.0000] # THAI CHARACTER MAIYAMOK
+ locale_version => 0.96,
+ variable => 'shifted',
+ alternate => 'shifted',
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0E2F ; [*03BE.0020.0002.0E2F][*FFF0.0000.0000.0000] # THAI CHARACTER PAIYANNOI
+0E5A ; [*03BE.0020.0002.0E5A][*FFF1.0000.0000.0000] # THAI CHARACTER ANGKHANKHU
+0E46 ; [*03BF.0020.0002.0E46][*FFF1.0000.0000.0000] # THAI CHARACTER MAIYAMOK
+0E5B ; [*03BF.0020.0002.0E5B][*FFF0.0000.0000.0000] # THAI CHARACTER KHOMUT
0E4C ; [.0000.00FF.0002.0E4C] # THAI CHARACTER THANTHAKHAT
0E47 ; [.0000.0100.0002.0E47] # THAI CHARACTER MAITAIKHU
0E48 ; [.0000.0101.0002.0E48] # THAI CHARACTER MAI EK
0E49 ; [.0000.0102.0002.0E49] # THAI CHARACTER MAI THO
0E4A ; [.0000.0103.0002.0E4A] # THAI CHARACTER MAI TRI
0E4B ; [.0000.0104.0002.0E4B] # THAI CHARACTER MAI CHATTAWA
-0E4D ; [.249B.0020.0002.0E4D] # THAI CHARACTER NIKHAHIT
-0E45 ; [.249E.0020.0003.0E45] # THAI CHARACTER LAKKHANGYAO
-0E3A ; [.24AC.0020.0002.0E3A] # THAI CHARACTER PHINTHU
+0E4D ; [.24B6.0020.0002.0E4D] # THAI CHARACTER NIKHAHIT
+0E45 ; [.24B9.0020.0003.0E45] # THAI CHARACTER LAKKHANGYAO
+0E4D 0E32 ; [.24B9.0020.0002.0E32][.24B6.0020.0003.0E4D] # THAI CHARACTER SARA AM
+0E33 ; [.24B9.0020.0002.0E32][.24B6.0020.0004.0E33] # THAI CHARACTER SARA AM
+0E45 0E4D ; [.24B6.0020.0002.0E4D][.24B9.0020.0004.0E45] # <THAI CHARACTER LAKKHANGYAO, THAI CHARACTER NIKHAHIT>
+0E3A ; [.24C7.0020.0002.0E3A] # THAI CHARACTER PHINTHU
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/tn.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/tn.pl
index f6c4673aa2e..8b0d74fc274 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/tn.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/tn.pl
@@ -1,37 +1,37 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-00EA ; [.1632.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0065 0302 ; [.1632.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-00CA ; [.1632.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0045 0302 ; [.1632.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-1EC1 ; [.1632.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC0 ; [.1632.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EBF ; [.1632.0020.0002.00EA][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBE ; [.1632.0020.0008.00CA][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC5 ; [.1632.0020.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC4 ; [.1632.0020.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC3 ; [.1632.0020.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC2 ; [.1632.0020.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC7 ; [.1632.0020.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC6 ; [.1632.0020.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-00F4 ; [.1757.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-006F 0302 ; [.1757.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-00D4 ; [.1757.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-004F 0302 ; [.1757.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-1ED3 ; [.1757.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED2 ; [.1757.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED1 ; [.1757.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED0 ; [.1757.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED7 ; [.1757.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED6 ; [.1757.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED5 ; [.1757.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED4 ; [.1757.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED9 ; [.1757.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED8 ; [.1757.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-0161 ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0073 030C ; [.17D9.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0053 030C ; [.17D9.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00EA ; [.164D.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.164D.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.164D.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.164D.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC1 ; [.164D.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.164D.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EBF ; [.164D.0020.0002.00EA][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.164D.0020.0008.00CA][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC5 ; [.164D.0020.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.164D.0020.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.164D.0020.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.164D.0020.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.164D.0020.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.164D.0020.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+00F4 ; [.1772.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.1772.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.1772.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.1772.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.1772.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.1772.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.1772.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.1772.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.1772.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.1772.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.1772.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.1772.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.1772.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.1772.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+0161 ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.17F4.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.17F4.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/to.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/to.pl
index f4ecb843419..df42141f035 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/to.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/to.pl
@@ -1,62 +1,62 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-006E 0067 ; [.1735.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER G>
-004E 0067 ; [.1735.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER G>
-004E 0047 ; [.1735.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER G>
-014B ; [.1735.0020.001C.014B] # LATIN SMALL LETTER ENG
-014A ; [.1735.0020.001D.014A] # LATIN CAPITAL LETTER ENG
-02BB ; [.187B.0020.0002.02BB] # MODIFIER LETTER TURNED COMMA
-02BD ; [.187B.0020.0003.02BD] # MODIFIER LETTER REVERSED COMMA
-0101 ; [.15D4.0021.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-0061 0304 ; [.15D4.0021.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-00E1 ; [.15D4.0021.0003.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0301 ; [.15D4.0021.0003.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0341 ; [.15D4.0021.0003.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0100 ; [.15D4.0021.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-0041 0304 ; [.15D4.0021.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-00C1 ; [.15D4.0021.0009.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0301 ; [.15D4.0021.0009.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0341 ; [.15D4.0021.0009.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0113 ; [.1631.0021.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-0065 0304 ; [.1631.0021.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-00E9 ; [.1631.0021.0003.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0301 ; [.1631.0021.0003.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0341 ; [.1631.0021.0003.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0112 ; [.1631.0021.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-0045 0304 ; [.1631.0021.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-00C9 ; [.1631.0021.0009.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0301 ; [.1631.0021.0009.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0341 ; [.1631.0021.0009.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-012B ; [.16B2.0021.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-0069 0304 ; [.16B2.0021.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-00ED ; [.16B2.0021.0003.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0301 ; [.16B2.0021.0003.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0341 ; [.16B2.0021.0003.00ED] # LATIN SMALL LETTER I WITH ACUTE
-012A ; [.16B2.0021.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-0049 0304 ; [.16B2.0021.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-00CD ; [.16B2.0021.0009.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0301 ; [.16B2.0021.0009.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0341 ; [.16B2.0021.0009.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-014D ; [.1756.0021.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-006F 0304 ; [.1756.0021.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-00F3 ; [.1756.0021.0003.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0301 ; [.1756.0021.0003.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0341 ; [.1756.0021.0003.00F3] # LATIN SMALL LETTER O WITH ACUTE
-014C ; [.1756.0021.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-004F 0304 ; [.1756.0021.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-00D3 ; [.1756.0021.0009.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0301 ; [.1756.0021.0009.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0341 ; [.1756.0021.0009.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-016B ; [.181B.0021.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-0075 0304 ; [.181B.0021.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-00FA ; [.181B.0021.0003.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0301 ; [.181B.0021.0003.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0341 ; [.181B.0021.0003.00FA] # LATIN SMALL LETTER U WITH ACUTE
-016A ; [.181B.0021.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-0055 0304 ; [.181B.0021.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-00DA ; [.181B.0021.0009.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0301 ; [.181B.0021.0009.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0341 ; [.181B.0021.0009.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+ locale_version => 0.95,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+006E 0067 ; [.1750.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER G>
+004E 0067 ; [.1750.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER G>
+004E 0047 ; [.1750.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER G>
+014B ; [.1750.0020.001C.014B] # LATIN SMALL LETTER ENG
+014A ; [.1750.0020.001D.014A] # LATIN CAPITAL LETTER ENG
+02BB ; [.1896.0020.0002.02BB] # MODIFIER LETTER TURNED COMMA
+02BD ; [.1896.0020.0003.02BD] # MODIFIER LETTER REVERSED COMMA
+00E1 ; [.15EF.0021.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0301 ; [.15EF.0021.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.15EF.0021.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.15EF.0021.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0301 ; [.15EF.0021.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.15EF.0021.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0101 ; [.15EF.0022.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0061 0304 ; [.15EF.0022.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0100 ; [.15EF.0022.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+0041 0304 ; [.15EF.0022.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+00E9 ; [.164C.0021.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0301 ; [.164C.0021.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.164C.0021.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.164C.0021.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0301 ; [.164C.0021.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.164C.0021.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0113 ; [.164C.0022.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0065 0304 ; [.164C.0022.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0112 ; [.164C.0022.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+0045 0304 ; [.164C.0022.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+00ED ; [.16CD.0021.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0301 ; [.16CD.0021.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0341 ; [.16CD.0021.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.16CD.0021.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0301 ; [.16CD.0021.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0341 ; [.16CD.0021.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+012B ; [.16CD.0022.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+0069 0304 ; [.16CD.0022.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+012A ; [.16CD.0022.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+0049 0304 ; [.16CD.0022.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+00F3 ; [.1771.0021.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.1771.0021.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.1771.0021.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1771.0021.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.1771.0021.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.1771.0021.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+014D ; [.1771.0022.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+006F 0304 ; [.1771.0022.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+014C ; [.1771.0022.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+004F 0304 ; [.1771.0022.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+00FA ; [.1836.0021.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0301 ; [.1836.0021.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0341 ; [.1836.0021.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.1836.0021.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0301 ; [.1836.0021.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0341 ; [.1836.0021.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+016B ; [.1836.0022.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+0075 0304 ; [.1836.0022.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.1836.0022.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+0055 0304 ; [.1836.0022.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/tr.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/tr.pl
index 270dee58b0f..bbaaccc9d10 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/tr.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/tr.pl
@@ -1,46 +1,46 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-00E7 ; [.1603.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
-0063 0327 ; [.1603.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
-00C7 ; [.1603.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
-0043 0327 ; [.1603.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
-011F ; [.1677.0020.0002.011F] # LATIN SMALL LETTER G WITH BREVE
-0067 0306 ; [.1677.0020.0002.011F] # LATIN SMALL LETTER G WITH BREVE
-011E ; [.1677.0020.0008.011E] # LATIN CAPITAL LETTER G WITH BREVE
-0047 0306 ; [.1677.0020.0008.011E] # LATIN CAPITAL LETTER G WITH BREVE
-0131 ; [.16B1.0020.0002.0131] # LATIN SMALL LETTER DOTLESS I
-0049 ; [.16B1.0020.0008.0049] # LATIN CAPITAL LETTER I
-00CC ; [.16B1.0020.0008.0049][.0000.0035.0002.0300] # LATIN CAPITAL LETTER I WITH GRAVE
-00CD ; [.16B1.0020.0008.0049][.0000.0032.0002.0301] # LATIN CAPITAL LETTER I WITH ACUTE
-00CE ; [.16B1.0020.0008.0049][.0000.003C.0002.0302] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-00CF ; [.16B1.0020.0008.0049][.0000.0047.0002.0308] # LATIN CAPITAL LETTER I WITH DIAERESIS
-012A ; [.16B1.0020.0008.0049][.0000.005B.0002.0304] # LATIN CAPITAL LETTER I WITH MACRON
-012C ; [.16B1.0020.0008.0049][.0000.0037.0002.0306] # LATIN CAPITAL LETTER I WITH BREVE
-012E ; [.16B1.0020.0008.0049][.0000.0059.0002.0328] # LATIN CAPITAL LETTER I WITH OGONEK
-0130 ; [.16B2.0020.0008.0130] # LATIN CAPITAL LETTER I WITH DOT ABOVE
-0049 0307 ; [.16B2.0020.0008.0130] # LATIN CAPITAL LETTER I WITH DOT ABOVE
-00F6 ; [.1757.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-006F 0308 ; [.1757.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.1757.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-004F 0308 ; [.1757.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.1757.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.1757.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-015F ; [.17D9.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
-0073 0327 ; [.17D9.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
-015E ; [.17D9.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
-0053 0327 ; [.17D9.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
-00FC ; [.181C.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.181C.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.181C.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.181C.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01DC ; [.181C.0020.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.181C.0020.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01D8 ; [.181C.0020.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.181C.0020.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D6 ; [.181C.0020.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.181C.0020.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01DA ; [.181C.0020.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.181C.0020.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00E7 ; [.161E.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
+0063 0327 ; [.161E.0020.0002.00E7] # LATIN SMALL LETTER C WITH CEDILLA
+00C7 ; [.161E.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
+0043 0327 ; [.161E.0020.0008.00C7] # LATIN CAPITAL LETTER C WITH CEDILLA
+011F ; [.1692.0020.0002.011F] # LATIN SMALL LETTER G WITH BREVE
+0067 0306 ; [.1692.0020.0002.011F] # LATIN SMALL LETTER G WITH BREVE
+011E ; [.1692.0020.0008.011E] # LATIN CAPITAL LETTER G WITH BREVE
+0047 0306 ; [.1692.0020.0008.011E] # LATIN CAPITAL LETTER G WITH BREVE
+0131 ; [.16CC.0020.0002.0131] # LATIN SMALL LETTER DOTLESS I
+0049 ; [.16CC.0020.0008.0049] # LATIN CAPITAL LETTER I
+00CC ; [.16CC.0020.0008.0049][.0000.0035.0002.0300] # LATIN CAPITAL LETTER I WITH GRAVE
+00CD ; [.16CC.0020.0008.0049][.0000.0032.0002.0301] # LATIN CAPITAL LETTER I WITH ACUTE
+00CE ; [.16CC.0020.0008.0049][.0000.003C.0002.0302] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF ; [.16CC.0020.0008.0049][.0000.0047.0002.0308] # LATIN CAPITAL LETTER I WITH DIAERESIS
+012A ; [.16CC.0020.0008.0049][.0000.005B.0002.0304] # LATIN CAPITAL LETTER I WITH MACRON
+012C ; [.16CC.0020.0008.0049][.0000.0037.0002.0306] # LATIN CAPITAL LETTER I WITH BREVE
+012E ; [.16CC.0020.0008.0049][.0000.0059.0002.0328] # LATIN CAPITAL LETTER I WITH OGONEK
+0130 ; [.16CD.0020.0008.0130] # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0049 0307 ; [.16CD.0020.0008.0130] # LATIN CAPITAL LETTER I WITH DOT ABOVE
+00F6 ; [.1772.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1772.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1772.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1772.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1772.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1772.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+015F ; [.17F4.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
+0073 0327 ; [.17F4.0020.0002.015F] # LATIN SMALL LETTER S WITH CEDILLA
+015E ; [.17F4.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
+0053 0327 ; [.17F4.0020.0008.015E] # LATIN CAPITAL LETTER S WITH CEDILLA
+00FC ; [.1837.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1837.0020.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1837.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1837.0020.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1837.0020.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1837.0020.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1837.0020.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1837.0020.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1837.0020.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1837.0020.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1837.0020.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1837.0020.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/uk.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/uk.pl
index d50bd752778..e3bd16f365d 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/uk.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/uk.pl
@@ -1,47 +1,45 @@
+{
- locale_version => 0.88,
+ locale_version => 0.95,
suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
0x0416, 0x0436, 0x0417, 0x0437, 0x041E, 0x043E, 0x04E8, 0x04E9,
0x041A, 0x043A, 0x0423, 0x0443, 0x0427, 0x0447, 0x042B, 0x044B,
0x042D, 0x044D, 0x0474, 0x0475],
- entry => <<'ENTRY', # for DUCET v6.1.0
-0491 ; [.1997.0020.0002.0491] # CYRILLIC SMALL LETTER GHE WITH UPTURN
-0490 ; [.1997.0020.0008.0490] # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-044C ; [.1B48.0020.0002.044C] # CYRILLIC SMALL LETTER SOFT SIGN
-042C ; [.1B48.0020.0008.042C] # CYRILLIC CAPITAL LETTER SOFT SIGN
-04D1 ; [.1976.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
-04D0 ; [.1976.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D3 ; [.1976.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D2 ; [.1976.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04DB ; [.1982.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DA ; [.1982.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-0453 ; [.1996.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
-0403 ; [.1996.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
-04D7 ; [.19BE.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
-04D6 ; [.19BE.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
-04DD ; [.19CA.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DC ; [.19CA.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DF ; [.19D7.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04DE ; [.19D7.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04E7 ; [.1A5C.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E6 ; [.1A5C.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04EB ; [.1A64.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EA ; [.1A64.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-045C ; [.1A0D.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
-040C ; [.1A0D.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
-045E ; [.1A9E.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
-040E ; [.1A9E.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
-04F1 ; [.1A9E.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F0 ; [.1A9E.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F3 ; [.1A9E.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F2 ; [.1A9E.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F5 ; [.1AF1.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F4 ; [.1AF1.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F9 ; [.1B24.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-04F8 ; [.1B24.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04ED ; [.1B39.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EC ; [.1B39.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-0477 ; [.1B6F.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0476 ; [.1B6F.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0491 ; [.19B2.0020.0002.0491] # CYRILLIC SMALL LETTER GHE WITH UPTURN
+0490 ; [.19B2.0020.0008.0490] # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+04D1 ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453 ; [.19B1.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.19B1.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E7 ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C ; [.1A28.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.1A28.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E ; [.1AB9.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.1AB9.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.1AB9.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.1AB9.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.1AB9.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.1AB9.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5 ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ur.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ur.pl
index c57712050e1..560df6bc7e8 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ur.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/ur.pl
@@ -1,76 +1,76 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0627 ; [.1C7E.0020.0002.0627] # ARABIC LETTER ALEF
-0623 ; [.1C7E.0021.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
-0627 0654 ; [.1C7E.0021.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
-0622 ; [.1C7E.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
-0627 0653 ; [.1C7E.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
-0628 ; [.1C7E.0020.0002.0628][.FFF2.0000.0000.0000] # ARABIC LETTER BEH
-0628 06BE ; [.1C7E.0020.0002.0628][.FFF3.0000.0000.0000] # <ARABIC LETTER BEH, ARABIC LETTER HEH DOACHASHMEE>
-067E ; [.1C7E.0020.0002.067E][.FFF4.0000.0000.0000] # ARABIC LETTER PEH
-067E 06BE ; [.1C7E.0020.0002.067E][.FFF5.0000.0000.0000] # <ARABIC LETTER PEH, ARABIC LETTER HEH DOACHASHMEE>
-062A ; [.1C7E.0020.0002.062A][.FFF6.0000.0000.0000] # ARABIC LETTER TEH
-062A 06BE ; [.1C7E.0020.0002.062A][.FFF7.0000.0000.0000] # <ARABIC LETTER TEH, ARABIC LETTER HEH DOACHASHMEE>
-0679 ; [.1C7E.0020.0002.0679][.FFF8.0000.0000.0000] # ARABIC LETTER TTEH
-0679 06BE ; [.1C7E.0020.0002.0679][.FFF9.0000.0000.0000] # <ARABIC LETTER TTEH, ARABIC LETTER HEH DOACHASHMEE>
-062B ; [.1C7E.0020.0002.062B][.FFFA.0000.0000.0000] # ARABIC LETTER THEH
-062C ; [.1C7E.0020.0002.062C][.FFFB.0000.0000.0000] # ARABIC LETTER JEEM
-062C 06BE ; [.1C7F.0020.0002.062C][.FFF1.0000.0000.0000] # <ARABIC LETTER JEEM, ARABIC LETTER HEH DOACHASHMEE>
-0686 ; [.1C7F.0020.0002.0686][.FFF2.0000.0000.0000] # ARABIC LETTER TCHEH
-0686 06BE ; [.1C7F.0020.0002.0686][.FFF3.0000.0000.0000] # <ARABIC LETTER TCHEH, ARABIC LETTER HEH DOACHASHMEE>
-062D ; [.1C7F.0020.0002.062D][.FFF4.0000.0000.0000] # ARABIC LETTER HAH
-062E ; [.1C7F.0020.0002.062E][.FFF5.0000.0000.0000] # ARABIC LETTER KHAH
-062F ; [.1C7F.0020.0002.062F][.FFF6.0000.0000.0000] # ARABIC LETTER DAL
-062F 06BE ; [.1C7F.0020.0002.062F][.FFF7.0000.0000.0000] # <ARABIC LETTER DAL, ARABIC LETTER HEH DOACHASHMEE>
-0688 ; [.1C7F.0020.0002.0688][.FFF8.0000.0000.0000] # ARABIC LETTER DDAL
-0688 06BE ; [.1C7F.0020.0002.0688][.FFF9.0000.0000.0000] # <ARABIC LETTER DDAL, ARABIC LETTER HEH DOACHASHMEE>
-0630 ; [.1C7F.0020.0002.0630][.FFFA.0000.0000.0000] # ARABIC LETTER THAL
-0631 ; [.1C7F.0020.0002.0631][.FFFB.0000.0000.0000] # ARABIC LETTER REH
-0631 06BE ; [.1C80.0020.0002.0631][.FFF1.0000.0000.0000] # <ARABIC LETTER REH, ARABIC LETTER HEH DOACHASHMEE>
-0691 ; [.1C80.0020.0002.0691][.FFF2.0000.0000.0000] # ARABIC LETTER RREH
-0691 06BE ; [.1C80.0020.0002.0691][.FFF3.0000.0000.0000] # <ARABIC LETTER RREH, ARABIC LETTER HEH DOACHASHMEE>
-0632 ; [.1C80.0020.0002.0632][.FFF4.0000.0000.0000] # ARABIC LETTER ZAIN
-0698 ; [.1C80.0020.0002.0698][.FFF5.0000.0000.0000] # ARABIC LETTER JEH
-0633 ; [.1C80.0020.0002.0633][.FFF6.0000.0000.0000] # ARABIC LETTER SEEN
-0634 ; [.1C80.0020.0002.0634][.FFF7.0000.0000.0000] # ARABIC LETTER SHEEN
-0635 ; [.1C80.0020.0002.0635][.FFF8.0000.0000.0000] # ARABIC LETTER SAD
-0636 ; [.1C80.0020.0002.0636][.FFF9.0000.0000.0000] # ARABIC LETTER DAD
-0637 ; [.1C80.0020.0002.0637][.FFFA.0000.0000.0000] # ARABIC LETTER TAH
-0638 ; [.1C80.0020.0002.0638][.FFFB.0000.0000.0000] # ARABIC LETTER ZAH
-0639 ; [.1C81.0020.0002.0639][.FFF1.0000.0000.0000] # ARABIC LETTER AIN
-063A ; [.1C81.0020.0002.063A][.FFF2.0000.0000.0000] # ARABIC LETTER GHAIN
-0641 ; [.1C81.0020.0002.0641][.FFF3.0000.0000.0000] # ARABIC LETTER FEH
-0642 ; [.1C81.0020.0002.0642][.FFF4.0000.0000.0000] # ARABIC LETTER QAF
-06A9 ; [.1C81.0020.0002.06A9][.FFF5.0000.0000.0000] # ARABIC LETTER KEHEH
-06A9 06BE ; [.1C81.0020.0002.06A9][.FFF6.0000.0000.0000] # <ARABIC LETTER KEHEH, ARABIC LETTER HEH DOACHASHMEE>
-06AF ; [.1C81.0020.0002.06AF][.FFF7.0000.0000.0000] # ARABIC LETTER GAF
-06AF 06BE ; [.1C81.0020.0002.06AF][.FFF8.0000.0000.0000] # <ARABIC LETTER GAF, ARABIC LETTER HEH DOACHASHMEE>
-0644 ; [.1C81.0020.0002.0644][.FFF9.0000.0000.0000] # ARABIC LETTER LAM
-0644 06BE ; [.1C81.0020.0002.0644][.FFFA.0000.0000.0000] # <ARABIC LETTER LAM, ARABIC LETTER HEH DOACHASHMEE>
-0645 ; [.1C81.0020.0002.0645][.FFFB.0000.0000.0000] # ARABIC LETTER MEEM
-0645 06BE ; [.1C82.0020.0002.0645][.FFF1.0000.0000.0000] # <ARABIC LETTER MEEM, ARABIC LETTER HEH DOACHASHMEE>
-0646 ; [.1C82.0020.0002.0646][.FFF2.0000.0000.0000] # ARABIC LETTER NOON
-0646 06BE ; [.1C82.0020.0002.0646][.FFF3.0000.0000.0000] # <ARABIC LETTER NOON, ARABIC LETTER HEH DOACHASHMEE>
-06BA ; [.1C82.0020.0002.06BA][.FFF4.0000.0000.0000] # ARABIC LETTER NOON GHUNNA
-06BA 06BE ; [.1C82.0020.0002.06BA][.FFF5.0000.0000.0000] # <ARABIC LETTER NOON GHUNNA, ARABIC LETTER HEH DOACHASHMEE>
-0648 ; [.1C82.0020.0002.0648][.FFF6.0000.0000.0000] # ARABIC LETTER WAW
-0624 ; [.1C82.0021.0002.0624][.FFF6.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
-0648 0654 ; [.1C82.0021.0002.0624][.FFF6.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
-0648 06BE ; [.1C82.0020.0002.0648][.FFF7.0000.0000.0000] # <ARABIC LETTER WAW, ARABIC LETTER HEH DOACHASHMEE>
-06C1 ; [.1C82.0020.0002.06C1][.FFF8.0000.0000.0000] # ARABIC LETTER HEH GOAL
-06C2 ; [.1C82.0021.0002.06C2][.FFF8.0000.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
-06C1 0654 ; [.1C82.0021.0002.06C2][.FFF8.0000.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
-06BE ; [.1C82.0020.0002.06BE][.FFF9.0000.0000.0000] # ARABIC LETTER HEH DOACHASHMEE
-06C3 ; [.1C82.0020.0002.06C3][.FFFA.0000.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL
-0621 ; [.1C82.0020.0002.0621][.FFFB.0000.0000.0000] # ARABIC LETTER HAMZA
-06CC ; [.1C83.0020.0002.06CC][.FFF1.0000.0000.0000] # ARABIC LETTER FARSI YEH
-0626 ; [.1C83.0021.0002.0626][.FFF1.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
-064A 0654 ; [.1C83.0021.0002.0626][.FFF1.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
-06CC 06BE ; [.1C83.0020.0002.06CC][.FFF2.0000.0000.0000] # <ARABIC LETTER FARSI YEH, ARABIC LETTER HEH DOACHASHMEE>
-06D2 ; [.1C83.0020.0002.06D2][.FFF3.0000.0000.0000] # ARABIC LETTER YEH BARREE
-06D3 ; [.1C83.0021.0002.06D3][.FFF3.0000.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
-06D2 0654 ; [.1C83.0021.0002.06D3][.FFF3.0000.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ locale_version => 0.96,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0623 ; [.1C9C.0021.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0627 0654 ; [.1C9C.0021.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0622 ; [.1C9D.0020.0002.0622][.FFC0.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0627 0653 ; [.1C9D.0020.0002.0622][.FFC0.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0628 ; [.1C9D.0020.0002.0628][.FFC1.0000.0000.0000] # ARABIC LETTER BEH
+0628 06BE ; [.1C9D.0020.0002.0628][.FFC2.0000.0000.0000] # <ARABIC LETTER BEH, ARABIC LETTER HEH DOACHASHMEE>
+067E ; [.1C9D.0020.0002.067E][.FFC3.0000.0000.0000] # ARABIC LETTER PEH
+067E 06BE ; [.1C9D.0020.0002.067E][.FFC4.0000.0000.0000] # <ARABIC LETTER PEH, ARABIC LETTER HEH DOACHASHMEE>
+062A ; [.1C9D.0020.0002.062A][.FFC5.0000.0000.0000] # ARABIC LETTER TEH
+062A 06BE ; [.1C9D.0020.0002.062A][.FFC6.0000.0000.0000] # <ARABIC LETTER TEH, ARABIC LETTER HEH DOACHASHMEE>
+0679 ; [.1C9D.0020.0002.0679][.FFC7.0000.0000.0000] # ARABIC LETTER TTEH
+0679 06BE ; [.1C9D.0020.0002.0679][.FFC8.0000.0000.0000] # <ARABIC LETTER TTEH, ARABIC LETTER HEH DOACHASHMEE>
+062B ; [.1C9D.0020.0002.062B][.FFC9.0000.0000.0000] # ARABIC LETTER THEH
+062C ; [.1C9D.0020.0002.062C][.FFCA.0000.0000.0000] # ARABIC LETTER JEEM
+062C 06BE ; [.1C9D.0020.0002.062C][.FFCB.0000.0000.0000] # <ARABIC LETTER JEEM, ARABIC LETTER HEH DOACHASHMEE>
+0686 ; [.1C9D.0020.0002.0686][.FFCC.0000.0000.0000] # ARABIC LETTER TCHEH
+0686 06BE ; [.1C9D.0020.0002.0686][.FFCD.0000.0000.0000] # <ARABIC LETTER TCHEH, ARABIC LETTER HEH DOACHASHMEE>
+062D ; [.1C9D.0020.0002.062D][.FFCE.0000.0000.0000] # ARABIC LETTER HAH
+062E ; [.1C9D.0020.0002.062E][.FFCF.0000.0000.0000] # ARABIC LETTER KHAH
+062F ; [.1C9D.0020.0002.062F][.FFD0.0000.0000.0000] # ARABIC LETTER DAL
+062F 06BE ; [.1C9D.0020.0002.062F][.FFD1.0000.0000.0000] # <ARABIC LETTER DAL, ARABIC LETTER HEH DOACHASHMEE>
+0688 ; [.1C9D.0020.0002.0688][.FFD2.0000.0000.0000] # ARABIC LETTER DDAL
+0688 06BE ; [.1C9D.0020.0002.0688][.FFD3.0000.0000.0000] # <ARABIC LETTER DDAL, ARABIC LETTER HEH DOACHASHMEE>
+0630 ; [.1C9D.0020.0002.0630][.FFD4.0000.0000.0000] # ARABIC LETTER THAL
+0631 ; [.1C9D.0020.0002.0631][.FFD5.0000.0000.0000] # ARABIC LETTER REH
+0631 06BE ; [.1C9D.0020.0002.0631][.FFD6.0000.0000.0000] # <ARABIC LETTER REH, ARABIC LETTER HEH DOACHASHMEE>
+0691 ; [.1C9D.0020.0002.0691][.FFD7.0000.0000.0000] # ARABIC LETTER RREH
+0691 06BE ; [.1C9D.0020.0002.0691][.FFD8.0000.0000.0000] # <ARABIC LETTER RREH, ARABIC LETTER HEH DOACHASHMEE>
+0632 ; [.1C9D.0020.0002.0632][.FFD9.0000.0000.0000] # ARABIC LETTER ZAIN
+0698 ; [.1C9D.0020.0002.0698][.FFDA.0000.0000.0000] # ARABIC LETTER JEH
+0633 ; [.1C9D.0020.0002.0633][.FFDB.0000.0000.0000] # ARABIC LETTER SEEN
+0634 ; [.1C9D.0020.0002.0634][.FFDC.0000.0000.0000] # ARABIC LETTER SHEEN
+0635 ; [.1C9D.0020.0002.0635][.FFDD.0000.0000.0000] # ARABIC LETTER SAD
+0636 ; [.1C9D.0020.0002.0636][.FFDE.0000.0000.0000] # ARABIC LETTER DAD
+0637 ; [.1C9D.0020.0002.0637][.FFDF.0000.0000.0000] # ARABIC LETTER TAH
+0638 ; [.1C9D.0020.0002.0638][.FFE0.0000.0000.0000] # ARABIC LETTER ZAH
+0639 ; [.1C9D.0020.0002.0639][.FFE1.0000.0000.0000] # ARABIC LETTER AIN
+063A ; [.1C9D.0020.0002.063A][.FFE2.0000.0000.0000] # ARABIC LETTER GHAIN
+0641 ; [.1C9D.0020.0002.0641][.FFE3.0000.0000.0000] # ARABIC LETTER FEH
+0642 ; [.1C9D.0020.0002.0642][.FFE4.0000.0000.0000] # ARABIC LETTER QAF
+06A9 ; [.1C9D.0020.0002.06A9][.FFE5.0000.0000.0000] # ARABIC LETTER KEHEH
+06A9 06BE ; [.1C9D.0020.0002.06A9][.FFE6.0000.0000.0000] # <ARABIC LETTER KEHEH, ARABIC LETTER HEH DOACHASHMEE>
+06AF ; [.1C9D.0020.0002.06AF][.FFE7.0000.0000.0000] # ARABIC LETTER GAF
+06AF 06BE ; [.1C9D.0020.0002.06AF][.FFE8.0000.0000.0000] # <ARABIC LETTER GAF, ARABIC LETTER HEH DOACHASHMEE>
+0644 ; [.1C9D.0020.0002.0644][.FFE9.0000.0000.0000] # ARABIC LETTER LAM
+0644 06BE ; [.1C9D.0020.0002.0644][.FFEA.0000.0000.0000] # <ARABIC LETTER LAM, ARABIC LETTER HEH DOACHASHMEE>
+0645 ; [.1C9D.0020.0002.0645][.FFEB.0000.0000.0000] # ARABIC LETTER MEEM
+0645 06BE ; [.1C9D.0020.0002.0645][.FFEC.0000.0000.0000] # <ARABIC LETTER MEEM, ARABIC LETTER HEH DOACHASHMEE>
+0646 ; [.1C9D.0020.0002.0646][.FFED.0000.0000.0000] # ARABIC LETTER NOON
+0646 06BE ; [.1C9D.0020.0002.0646][.FFEE.0000.0000.0000] # <ARABIC LETTER NOON, ARABIC LETTER HEH DOACHASHMEE>
+06BA ; [.1C9D.0020.0002.06BA][.FFEF.0000.0000.0000] # ARABIC LETTER NOON GHUNNA
+06BA 06BE ; [.1C9D.0020.0002.06BA][.FFF0.0000.0000.0000] # <ARABIC LETTER NOON GHUNNA, ARABIC LETTER HEH DOACHASHMEE>
+0648 ; [.1C9D.0020.0002.0648][.FFF1.0000.0000.0000] # ARABIC LETTER WAW
+0624 ; [.1C9D.0021.0002.0624][.FFF1.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+0648 0654 ; [.1C9D.0021.0002.0624][.FFF1.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+0648 06BE ; [.1C9D.0020.0002.0648][.FFF2.0000.0000.0000] # <ARABIC LETTER WAW, ARABIC LETTER HEH DOACHASHMEE>
+06C1 ; [.1C9D.0020.0002.06C1][.FFF3.0000.0000.0000] # ARABIC LETTER HEH GOAL
+06C2 ; [.1C9D.0021.0002.06C2][.FFF3.0000.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06C1 0654 ; [.1C9D.0021.0002.06C2][.FFF3.0000.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06BE ; [.1C9D.0020.0002.06BE][.FFF4.0000.0000.0000] # ARABIC LETTER HEH DOACHASHMEE
+06C3 ; [.1C9D.0020.0002.06C3][.FFF5.0000.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL
+0621 ; [.1C9D.0020.0002.0621][.FFF6.0000.0000.0000] # ARABIC LETTER HAMZA
+06CC ; [.1C9D.0020.0002.06CC][.FFF7.0000.0000.0000] # ARABIC LETTER FARSI YEH
+0626 ; [.1C9D.0021.0002.0626][.FFF7.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+064A 0654 ; [.1C9D.0021.0002.0626][.FFF7.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+06CC 06BE ; [.1C9D.0020.0002.06CC][.FFF8.0000.0000.0000] # <ARABIC LETTER FARSI YEH, ARABIC LETTER HEH DOACHASHMEE>
+06D2 ; [.1C9D.0020.0002.06D2][.FFF9.0000.0000.0000] # ARABIC LETTER YEH BARREE
+06D3 ; [.1C9D.0021.0002.06D3][.FFF9.0000.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D2 0654 ; [.1C9D.0021.0002.06D3][.FFF9.0000.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+066E ; [.1C9D.0020.0002.066E][.FFFA.0000.0000.0000] # ARABIC LETTER DOTLESS BEH
0652 ; [.0000.00AF.0002.0652] # ARABIC SUKUN
064E ; [.0000.00B0.0002.064E] # ARABIC FATHA
0650 ; [.0000.00B1.0002.0650] # ARABIC KASRA
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/vi.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/vi.pl
index 6a5508b6edc..23baeedde9f 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/vi.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/vi.pl
@@ -1,220 +1,220 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
# 0306 is not a Vietnamese tone, just to avoid \x{303} eq \x{306}.
- entry => <<'ENTRY', # for DUCET v6.1.0
+ entry => <<'ENTRY', # for DUCET v6.2.0
0309 ; [.0000.0036.0002.0309] # COMBINING HOOK ABOVE
-1EA3 ; [.15D4.0020.0002.0061][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH HOOK ABOVE
-1EA2 ; [.15D4.0020.0008.0041][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH HOOK ABOVE
-1EBB ; [.1631.0020.0002.0065][.0000.0036.0002.0309] # LATIN SMALL LETTER E WITH HOOK ABOVE
-1EBA ; [.1631.0020.0008.0045][.0000.0036.0002.0309] # LATIN CAPITAL LETTER E WITH HOOK ABOVE
-1EC9 ; [.16B2.0020.0002.0069][.0000.0036.0002.0309] # LATIN SMALL LETTER I WITH HOOK ABOVE
-1EC8 ; [.16B2.0020.0008.0049][.0000.0036.0002.0309] # LATIN CAPITAL LETTER I WITH HOOK ABOVE
-1ECF ; [.1756.0020.0002.006F][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH HOOK ABOVE
-1ECE ; [.1756.0020.0008.004F][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH HOOK ABOVE
-1EE7 ; [.181B.0020.0002.0075][.0000.0036.0002.0309] # LATIN SMALL LETTER U WITH HOOK ABOVE
-1EE6 ; [.181B.0020.0008.0055][.0000.0036.0002.0309] # LATIN CAPITAL LETTER U WITH HOOK ABOVE
-1EF7 ; [.1865.0020.0002.0079][.0000.0036.0002.0309] # LATIN SMALL LETTER Y WITH HOOK ABOVE
-1EF6 ; [.1865.0020.0008.0059][.0000.0036.0002.0309] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EA3 ; [.15EF.0020.0002.0061][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA2 ; [.15EF.0020.0008.0041][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EBB ; [.164C.0020.0002.0065][.0000.0036.0002.0309] # LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBA ; [.164C.0020.0008.0045][.0000.0036.0002.0309] # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EC9 ; [.16CD.0020.0002.0069][.0000.0036.0002.0309] # LATIN SMALL LETTER I WITH HOOK ABOVE
+1EC8 ; [.16CD.0020.0008.0049][.0000.0036.0002.0309] # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1ECF ; [.1771.0020.0002.006F][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH HOOK ABOVE
+1ECE ; [.1771.0020.0008.004F][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1EE7 ; [.1836.0020.0002.0075][.0000.0036.0002.0309] # LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE6 ; [.1836.0020.0008.0055][.0000.0036.0002.0309] # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EF7 ; [.1880.0020.0002.0079][.0000.0036.0002.0309] # LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF6 ; [.1880.0020.0008.0059][.0000.0036.0002.0309] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
0303 ; [.0000.0037.0002.0303] # COMBINING TILDE
-00E3 ; [.15D4.0020.0002.0061][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH TILDE
-00C3 ; [.15D4.0020.0008.0041][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH TILDE
-1EBD ; [.1631.0020.0002.0065][.0000.0037.0002.0303] # LATIN SMALL LETTER E WITH TILDE
-1EBC ; [.1631.0020.0008.0045][.0000.0037.0002.0303] # LATIN CAPITAL LETTER E WITH TILDE
-0129 ; [.16B2.0020.0002.0069][.0000.0037.0002.0303] # LATIN SMALL LETTER I WITH TILDE
-0128 ; [.16B2.0020.0008.0049][.0000.0037.0002.0303] # LATIN CAPITAL LETTER I WITH TILDE
-00F5 ; [.1756.0020.0002.006F][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH TILDE
-00D5 ; [.1756.0020.0008.004F][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH TILDE
-0169 ; [.181B.0020.0002.0075][.0000.0037.0002.0303] # LATIN SMALL LETTER U WITH TILDE
-0168 ; [.181B.0020.0008.0055][.0000.0037.0002.0303] # LATIN CAPITAL LETTER U WITH TILDE
-1EF9 ; [.1865.0020.0002.0079][.0000.0037.0002.0303] # LATIN SMALL LETTER Y WITH TILDE
-1EF8 ; [.1865.0020.0008.0059][.0000.0037.0002.0303] # LATIN CAPITAL LETTER Y WITH TILDE
+00E3 ; [.15EF.0020.0002.0061][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH TILDE
+00C3 ; [.15EF.0020.0008.0041][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH TILDE
+1EBD ; [.164C.0020.0002.0065][.0000.0037.0002.0303] # LATIN SMALL LETTER E WITH TILDE
+1EBC ; [.164C.0020.0008.0045][.0000.0037.0002.0303] # LATIN CAPITAL LETTER E WITH TILDE
+0129 ; [.16CD.0020.0002.0069][.0000.0037.0002.0303] # LATIN SMALL LETTER I WITH TILDE
+0128 ; [.16CD.0020.0008.0049][.0000.0037.0002.0303] # LATIN CAPITAL LETTER I WITH TILDE
+00F5 ; [.1771.0020.0002.006F][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH TILDE
+00D5 ; [.1771.0020.0008.004F][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH TILDE
+0169 ; [.1836.0020.0002.0075][.0000.0037.0002.0303] # LATIN SMALL LETTER U WITH TILDE
+0168 ; [.1836.0020.0008.0055][.0000.0037.0002.0303] # LATIN CAPITAL LETTER U WITH TILDE
+1EF9 ; [.1880.0020.0002.0079][.0000.0037.0002.0303] # LATIN SMALL LETTER Y WITH TILDE
+1EF8 ; [.1880.0020.0008.0059][.0000.0037.0002.0303] # LATIN CAPITAL LETTER Y WITH TILDE
0301 ; [.0000.0038.0002.0301] # COMBINING ACUTE ACCENT
-00E1 ; [.15D4.0020.0002.0061][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH ACUTE
-00C1 ; [.15D4.0020.0008.0041][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH ACUTE
-00E9 ; [.1631.0020.0002.0065][.0000.0038.0002.0301] # LATIN SMALL LETTER E WITH ACUTE
-00C9 ; [.1631.0020.0008.0045][.0000.0038.0002.0301] # LATIN CAPITAL LETTER E WITH ACUTE
-00ED ; [.16B2.0020.0002.0069][.0000.0038.0002.0301] # LATIN SMALL LETTER I WITH ACUTE
-00CD ; [.16B2.0020.0008.0049][.0000.0038.0002.0301] # LATIN CAPITAL LETTER I WITH ACUTE
-00F3 ; [.1756.0020.0002.006F][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH ACUTE
-00D3 ; [.1756.0020.0008.004F][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH ACUTE
-00FA ; [.181B.0020.0002.0075][.0000.0038.0002.0301] # LATIN SMALL LETTER U WITH ACUTE
-00DA ; [.181B.0020.0008.0055][.0000.0038.0002.0301] # LATIN CAPITAL LETTER U WITH ACUTE
-00FD ; [.1865.0020.0002.0079][.0000.0038.0002.0301] # LATIN SMALL LETTER Y WITH ACUTE
-00DD ; [.1865.0020.0008.0059][.0000.0038.0002.0301] # LATIN CAPITAL LETTER Y WITH ACUTE
+00E1 ; [.15EF.0020.0002.0061][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.15EF.0020.0008.0041][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH ACUTE
+00E9 ; [.164C.0020.0002.0065][.0000.0038.0002.0301] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.164C.0020.0008.0045][.0000.0038.0002.0301] # LATIN CAPITAL LETTER E WITH ACUTE
+00ED ; [.16CD.0020.0002.0069][.0000.0038.0002.0301] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.16CD.0020.0008.0049][.0000.0038.0002.0301] # LATIN CAPITAL LETTER I WITH ACUTE
+00F3 ; [.1771.0020.0002.006F][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1771.0020.0008.004F][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH ACUTE
+00FA ; [.1836.0020.0002.0075][.0000.0038.0002.0301] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.1836.0020.0008.0055][.0000.0038.0002.0301] # LATIN CAPITAL LETTER U WITH ACUTE
+00FD ; [.1880.0020.0002.0079][.0000.0038.0002.0301] # LATIN SMALL LETTER Y WITH ACUTE
+00DD ; [.1880.0020.0008.0059][.0000.0038.0002.0301] # LATIN CAPITAL LETTER Y WITH ACUTE
0341 ; [.0000.0038.0002.0341] # COMBINING ACUTE TONE MARK
0323 ; [.0000.0039.0002.0323] # COMBINING DOT BELOW
-1EA1 ; [.15D4.0020.0002.0061][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH DOT BELOW
-1EA0 ; [.15D4.0020.0008.0041][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH DOT BELOW
-1EB9 ; [.1631.0020.0002.0065][.0000.0039.0002.0323] # LATIN SMALL LETTER E WITH DOT BELOW
-1EB8 ; [.1631.0020.0008.0045][.0000.0039.0002.0323] # LATIN CAPITAL LETTER E WITH DOT BELOW
-1ECB ; [.16B2.0020.0002.0069][.0000.0039.0002.0323] # LATIN SMALL LETTER I WITH DOT BELOW
-1ECA ; [.16B2.0020.0008.0049][.0000.0039.0002.0323] # LATIN CAPITAL LETTER I WITH DOT BELOW
-1ECD ; [.1756.0020.0002.006F][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH DOT BELOW
-1ECC ; [.1756.0020.0008.004F][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH DOT BELOW
-1EE5 ; [.181B.0020.0002.0075][.0000.0039.0002.0323] # LATIN SMALL LETTER U WITH DOT BELOW
-1EE4 ; [.181B.0020.0008.0055][.0000.0039.0002.0323] # LATIN CAPITAL LETTER U WITH DOT BELOW
-1EF5 ; [.1865.0020.0002.0079][.0000.0039.0002.0323] # LATIN SMALL LETTER Y WITH DOT BELOW
-1EF4 ; [.1865.0020.0008.0059][.0000.0039.0002.0323] # LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EA1 ; [.15EF.0020.0002.0061][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH DOT BELOW
+1EA0 ; [.15EF.0020.0008.0041][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH DOT BELOW
+1EB9 ; [.164C.0020.0002.0065][.0000.0039.0002.0323] # LATIN SMALL LETTER E WITH DOT BELOW
+1EB8 ; [.164C.0020.0008.0045][.0000.0039.0002.0323] # LATIN CAPITAL LETTER E WITH DOT BELOW
+1ECB ; [.16CD.0020.0002.0069][.0000.0039.0002.0323] # LATIN SMALL LETTER I WITH DOT BELOW
+1ECA ; [.16CD.0020.0008.0049][.0000.0039.0002.0323] # LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECD ; [.1771.0020.0002.006F][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH DOT BELOW
+1ECC ; [.1771.0020.0008.004F][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH DOT BELOW
+1EE5 ; [.1836.0020.0002.0075][.0000.0039.0002.0323] # LATIN SMALL LETTER U WITH DOT BELOW
+1EE4 ; [.1836.0020.0008.0055][.0000.0039.0002.0323] # LATIN CAPITAL LETTER U WITH DOT BELOW
+1EF5 ; [.1880.0020.0002.0079][.0000.0039.0002.0323] # LATIN SMALL LETTER Y WITH DOT BELOW
+1EF4 ; [.1880.0020.0008.0059][.0000.0039.0002.0323] # LATIN CAPITAL LETTER Y WITH DOT BELOW
0306 ; [.0000.003A.0002.0306] # COMBINING BREVE
-0115 ; [.1631.0020.0002.0065][.0000.003A.0002.0306] # LATIN SMALL LETTER E WITH BREVE
-0114 ; [.1631.0020.0008.0045][.0000.003A.0002.0306] # LATIN CAPITAL LETTER E WITH BREVE
-012D ; [.16B2.0020.0002.0069][.0000.003A.0002.0306] # LATIN SMALL LETTER I WITH BREVE
-012C ; [.16B2.0020.0008.0049][.0000.003A.0002.0306] # LATIN CAPITAL LETTER I WITH BREVE
-014F ; [.1756.0020.0002.006F][.0000.003A.0002.0306] # LATIN SMALL LETTER O WITH BREVE
-014E ; [.1756.0020.0008.004F][.0000.003A.0002.0306] # LATIN CAPITAL LETTER O WITH BREVE
-016D ; [.181B.0020.0002.0075][.0000.003A.0002.0306] # LATIN SMALL LETTER U WITH BREVE
-016C ; [.181B.0020.0008.0055][.0000.003A.0002.0306] # LATIN CAPITAL LETTER U WITH BREVE
-0103 ; [.15D5.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
-0061 0306 ; [.15D5.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
-0102 ; [.15D5.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
-0041 0306 ; [.15D5.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
-1EB1 ; [.15D5.0020.0002.0103][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH BREVE AND GRAVE
-1EB0 ; [.15D5.0020.0008.0102][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-1EAF ; [.15D5.0020.0002.0103][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH BREVE AND ACUTE
-1EAE ; [.15D5.0020.0008.0102][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-1EB5 ; [.15D5.0020.0002.0103][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH BREVE AND TILDE
-1EB4 ; [.15D5.0020.0008.0102][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-1EB3 ; [.15D5.0020.0002.0103][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
-1EB2 ; [.15D5.0020.0008.0102][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-1EB7 ; [.15D5.0020.0002.0103][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
-1EB6 ; [.15D5.0020.0008.0102][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-00E2 ; [.15D6.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
-0061 0302 ; [.15D6.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
-00C2 ; [.15D6.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0041 0302 ; [.15D6.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-1EA7 ; [.15D6.0020.0002.00E2][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA6 ; [.15D6.0020.0008.00C2][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA5 ; [.15D6.0020.0002.00E2][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA4 ; [.15D6.0020.0008.00C2][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EAB ; [.15D6.0020.0002.00E2][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAA ; [.15D6.0020.0008.00C2][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-1EA9 ; [.15D6.0020.0002.00E2][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EA8 ; [.15D6.0020.0008.00C2][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EAD ; [.15D6.0020.0002.00E2][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAC ; [.15D6.0020.0008.00C2][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-0111 ; [.1617.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0064 0335 ; [.1617.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1617.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-0044 0335 ; [.1617.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-00EA ; [.1632.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0065 0302 ; [.1632.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-00CA ; [.1632.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0045 0302 ; [.1632.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-1EC1 ; [.1632.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC0 ; [.1632.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EBF ; [.1632.0020.0002.00EA][.0000.0038.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBE ; [.1632.0020.0008.00CA][.0000.0038.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC5 ; [.1632.0020.0002.00EA][.0000.0037.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC4 ; [.1632.0020.0008.00CA][.0000.0037.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC3 ; [.1632.0020.0002.00EA][.0000.0036.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC2 ; [.1632.0020.0008.00CA][.0000.0036.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC7 ; [.1632.0020.0002.00EA][.0000.0039.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC6 ; [.1632.0020.0008.00CA][.0000.0039.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-00F4 ; [.1757.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-006F 0302 ; [.1757.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-00D4 ; [.1757.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-004F 0302 ; [.1757.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-1ED3 ; [.1757.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED2 ; [.1757.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED1 ; [.1757.0020.0002.00F4][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED0 ; [.1757.0020.0008.00D4][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED7 ; [.1757.0020.0002.00F4][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED6 ; [.1757.0020.0008.00D4][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED5 ; [.1757.0020.0002.00F4][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED4 ; [.1757.0020.0008.00D4][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED9 ; [.1757.0020.0002.00F4][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED8 ; [.1757.0020.0008.00D4][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-01A1 ; [.1758.0020.0002.01A1] # LATIN SMALL LETTER O WITH HORN
-006F 031B ; [.1758.0020.0002.01A1] # LATIN SMALL LETTER O WITH HORN
-01A0 ; [.1758.0020.0008.01A0] # LATIN CAPITAL LETTER O WITH HORN
-004F 031B ; [.1758.0020.0008.01A0] # LATIN CAPITAL LETTER O WITH HORN
-1EDD ; [.1758.0020.0002.01A1][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH HORN AND GRAVE
-1EDC ; [.1758.0020.0008.01A0][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
-1EDB ; [.1758.0020.0002.01A1][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH HORN AND ACUTE
-1EDA ; [.1758.0020.0008.01A0][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
-1EE1 ; [.1758.0020.0002.01A1][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH HORN AND TILDE
-1EE0 ; [.1758.0020.0008.01A0][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH HORN AND TILDE
-1EDF ; [.1758.0020.0002.01A1][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
-1EDE ; [.1758.0020.0008.01A0][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
-1EE3 ; [.1758.0020.0002.01A1][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
-1EE2 ; [.1758.0020.0008.01A0][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-01B0 ; [.181C.0020.0002.01B0] # LATIN SMALL LETTER U WITH HORN
-0075 031B ; [.181C.0020.0002.01B0] # LATIN SMALL LETTER U WITH HORN
-01AF ; [.181C.0020.0008.01AF] # LATIN CAPITAL LETTER U WITH HORN
-0055 031B ; [.181C.0020.0008.01AF] # LATIN CAPITAL LETTER U WITH HORN
-1EEB ; [.181C.0020.0002.01B0][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH HORN AND GRAVE
-1EEA ; [.181C.0020.0008.01AF][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
-1EE9 ; [.181C.0020.0002.01B0][.0000.0038.0002.0301] # LATIN SMALL LETTER U WITH HORN AND ACUTE
-1EE8 ; [.181C.0020.0008.01AF][.0000.0038.0002.0301] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
-1EEF ; [.181C.0020.0002.01B0][.0000.0037.0002.0303] # LATIN SMALL LETTER U WITH HORN AND TILDE
-1EEE ; [.181C.0020.0008.01AF][.0000.0037.0002.0303] # LATIN CAPITAL LETTER U WITH HORN AND TILDE
-1EED ; [.181C.0020.0002.01B0][.0000.0036.0002.0309] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
-1EEC ; [.181C.0020.0008.01AF][.0000.0036.0002.0309] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
-1EF1 ; [.181C.0020.0002.01B0][.0000.0039.0002.0323] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
-1EF0 ; [.181C.0020.0008.01AF][.0000.0039.0002.0323] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
-1EA1 0306 ; [.15D5.0020.0002.0103][.0000.0039.0002.0323] # <LATIN SMALL LETTER A WITH DOT BELOW, COMBINING BREVE>
-1EA0 0306 ; [.15D5.0020.0008.0102][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER A WITH DOT BELOW, COMBINING BREVE>
-1EA1 0302 ; [.15D6.0020.0002.00E2][.0000.0039.0002.0323] # <LATIN SMALL LETTER A WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-1EA0 0302 ; [.15D6.0020.0008.00C2][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER A WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-1EB9 0302 ; [.1632.0020.0002.00EA][.0000.0039.0002.0323] # <LATIN SMALL LETTER E WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-1EB8 0302 ; [.1632.0020.0008.00CA][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER E WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-1ECD 0302 ; [.1757.0020.0002.00F4][.0000.0039.0002.0323] # <LATIN SMALL LETTER O WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-1ECC 0302 ; [.1757.0020.0008.00D4][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER O WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-00F2 031B ; [.1758.0020.0002.01A1][.0000.0035.0002.0300] # <LATIN SMALL LETTER O WITH GRAVE, COMBINING HORN>
-1ECF 031B ; [.1758.0020.0002.01A1][.0000.0036.0002.0309] # <LATIN SMALL LETTER O WITH HOOK ABOVE, COMBINING HORN>
-00F5 031B ; [.1758.0020.0002.01A1][.0000.0037.0002.0303] # <LATIN SMALL LETTER O WITH TILDE, COMBINING HORN>
-00F3 031B ; [.1758.0020.0002.01A1][.0000.0038.0002.0301] # <LATIN SMALL LETTER O WITH ACUTE, COMBINING HORN>
-1ECD 031B ; [.1758.0020.0002.01A1][.0000.0039.0002.0323] # <LATIN SMALL LETTER O WITH DOT BELOW, COMBINING HORN>
-00D2 031B ; [.1758.0020.0008.01A0][.0000.0035.0002.0300] # <LATIN CAPITAL LETTER O WITH GRAVE, COMBINING HORN>
-1ECE 031B ; [.1758.0020.0008.01A0][.0000.0036.0002.0309] # <LATIN CAPITAL LETTER O WITH HOOK ABOVE, COMBINING HORN>
-00D5 031B ; [.1758.0020.0008.01A0][.0000.0037.0002.0303] # <LATIN CAPITAL LETTER O WITH TILDE, COMBINING HORN>
-00D3 031B ; [.1758.0020.0008.01A0][.0000.0038.0002.0301] # <LATIN CAPITAL LETTER O WITH ACUTE, COMBINING HORN>
-1ECC 031B ; [.1758.0020.0008.01A0][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER O WITH DOT BELOW, COMBINING HORN>
-00F9 031B ; [.181C.0020.0002.01B0][.0000.0035.0002.0300] # <LATIN SMALL LETTER U WITH GRAVE, COMBINING HORN>
-1EE7 031B ; [.181C.0020.0002.01B0][.0000.0036.0002.0309] # <LATIN SMALL LETTER U WITH HOOK ABOVE, COMBINING HORN>
-0169 031B ; [.181C.0020.0002.01B0][.0000.0037.0002.0303] # <LATIN SMALL LETTER U WITH TILDE, COMBINING HORN>
-00FA 031B ; [.181C.0020.0002.01B0][.0000.0038.0002.0301] # <LATIN SMALL LETTER U WITH ACUTE, COMBINING HORN>
-1EE5 031B ; [.181C.0020.0002.01B0][.0000.0039.0002.0323] # <LATIN SMALL LETTER U WITH DOT BELOW, COMBINING HORN>
-00D9 031B ; [.181C.0020.0008.01AF][.0000.0035.0002.0300] # <LATIN CAPITAL LETTER U WITH GRAVE, COMBINING HORN>
-1EE6 031B ; [.181C.0020.0008.01AF][.0000.0036.0002.0309] # <LATIN CAPITAL LETTER U WITH HOOK ABOVE, COMBINING HORN>
-0168 031B ; [.181C.0020.0008.01AF][.0000.0037.0002.0303] # <LATIN CAPITAL LETTER U WITH TILDE, COMBINING HORN>
-00DA 031B ; [.181C.0020.0008.01AF][.0000.0038.0002.0301] # <LATIN CAPITAL LETTER U WITH ACUTE, COMBINING HORN>
-1EE4 031B ; [.181C.0020.0008.01AF][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER U WITH DOT BELOW, COMBINING HORN>
-0061 0323 0306 ; [.15D5.0020.0002.0103][.0000.0039.0002.0323] # <LATIN SMALL LETTER A, COMBINING DOT BELOW, COMBINING BREVE>
-0041 0323 0306 ; [.15D5.0020.0008.0102][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER A, COMBINING DOT BELOW, COMBINING BREVE>
-0061 0323 0302 ; [.15D6.0020.0002.00E2][.0000.0039.0002.0323] # <LATIN SMALL LETTER A, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-0041 0323 0302 ; [.15D6.0020.0008.00C2][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER A, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-0065 0323 0302 ; [.1632.0020.0002.00EA][.0000.0039.0002.0323] # <LATIN SMALL LETTER E, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-0045 0323 0302 ; [.1632.0020.0008.00CA][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER E, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-006F 0323 0302 ; [.1757.0020.0002.00F4][.0000.0039.0002.0323] # <LATIN SMALL LETTER O, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-004F 0323 0302 ; [.1757.0020.0008.00D4][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER O, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
-006F 0300 031B ; [.1758.0020.0002.01A1][.0000.0035.0002.0300] # <LATIN SMALL LETTER O, COMBINING GRAVE ACCENT, COMBINING HORN>
-006F 0340 031B ; [.1758.0020.0002.01A1][.0000.0035.0002.0340] # <LATIN SMALL LETTER O, COMBINING GRAVE TONE MARK, COMBINING HORN>
-006F 0309 031B ; [.1758.0020.0002.01A1][.0000.0036.0002.0309] # <LATIN SMALL LETTER O, COMBINING HOOK ABOVE, COMBINING HORN>
-006F 0303 031B ; [.1758.0020.0002.01A1][.0000.0037.0002.0303] # <LATIN SMALL LETTER O, COMBINING TILDE, COMBINING HORN>
-006F 0301 031B ; [.1758.0020.0002.01A1][.0000.0038.0002.0301] # <LATIN SMALL LETTER O, COMBINING ACUTE ACCENT, COMBINING HORN>
-006F 0341 031B ; [.1758.0020.0002.01A1][.0000.0038.0002.0341] # <LATIN SMALL LETTER O, COMBINING ACUTE TONE MARK, COMBINING HORN>
-006F 0323 031B ; [.1758.0020.0002.01A1][.0000.0039.0002.0323] # <LATIN SMALL LETTER O, COMBINING DOT BELOW, COMBINING HORN>
-004F 0300 031B ; [.1758.0020.0008.01A0][.0000.0035.0002.0300] # <LATIN CAPITAL LETTER O, COMBINING GRAVE ACCENT, COMBINING HORN>
-004F 0340 031B ; [.1758.0020.0008.01A0][.0000.0035.0002.0340] # <LATIN CAPITAL LETTER O, COMBINING GRAVE TONE MARK, COMBINING HORN>
-004F 0309 031B ; [.1758.0020.0008.01A0][.0000.0036.0002.0309] # <LATIN CAPITAL LETTER O, COMBINING HOOK ABOVE, COMBINING HORN>
-004F 0303 031B ; [.1758.0020.0008.01A0][.0000.0037.0002.0303] # <LATIN CAPITAL LETTER O, COMBINING TILDE, COMBINING HORN>
-004F 0301 031B ; [.1758.0020.0008.01A0][.0000.0038.0002.0301] # <LATIN CAPITAL LETTER O, COMBINING ACUTE ACCENT, COMBINING HORN>
-004F 0341 031B ; [.1758.0020.0008.01A0][.0000.0038.0002.0341] # <LATIN CAPITAL LETTER O, COMBINING ACUTE TONE MARK, COMBINING HORN>
-004F 0323 031B ; [.1758.0020.0008.01A0][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER O, COMBINING DOT BELOW, COMBINING HORN>
-0075 0300 031B ; [.181C.0020.0002.01B0][.0000.0035.0002.0300] # <LATIN SMALL LETTER U, COMBINING GRAVE ACCENT, COMBINING HORN>
-0075 0340 031B ; [.181C.0020.0002.01B0][.0000.0035.0002.0340] # <LATIN SMALL LETTER U, COMBINING GRAVE TONE MARK, COMBINING HORN>
-0075 0309 031B ; [.181C.0020.0002.01B0][.0000.0036.0002.0309] # <LATIN SMALL LETTER U, COMBINING HOOK ABOVE, COMBINING HORN>
-0075 0303 031B ; [.181C.0020.0002.01B0][.0000.0037.0002.0303] # <LATIN SMALL LETTER U, COMBINING TILDE, COMBINING HORN>
-0075 0301 031B ; [.181C.0020.0002.01B0][.0000.0038.0002.0301] # <LATIN SMALL LETTER U, COMBINING ACUTE ACCENT, COMBINING HORN>
-0075 0341 031B ; [.181C.0020.0002.01B0][.0000.0038.0002.0341] # <LATIN SMALL LETTER U, COMBINING ACUTE TONE MARK, COMBINING HORN>
-0075 0323 031B ; [.181C.0020.0002.01B0][.0000.0039.0002.0323] # <LATIN SMALL LETTER U, COMBINING DOT BELOW, COMBINING HORN>
-0055 0300 031B ; [.181C.0020.0008.01AF][.0000.0035.0002.0300] # <LATIN CAPITAL LETTER U, COMBINING GRAVE ACCENT, COMBINING HORN>
-0055 0340 031B ; [.181C.0020.0008.01AF][.0000.0035.0002.0340] # <LATIN CAPITAL LETTER U, COMBINING GRAVE TONE MARK, COMBINING HORN>
-0055 0309 031B ; [.181C.0020.0008.01AF][.0000.0036.0002.0309] # <LATIN CAPITAL LETTER U, COMBINING HOOK ABOVE, COMBINING HORN>
-0055 0303 031B ; [.181C.0020.0008.01AF][.0000.0037.0002.0303] # <LATIN CAPITAL LETTER U, COMBINING TILDE, COMBINING HORN>
-0055 0301 031B ; [.181C.0020.0008.01AF][.0000.0038.0002.0301] # <LATIN CAPITAL LETTER U, COMBINING ACUTE ACCENT, COMBINING HORN>
-0055 0341 031B ; [.181C.0020.0008.01AF][.0000.0038.0002.0341] # <LATIN CAPITAL LETTER U, COMBINING ACUTE TONE MARK, COMBINING HORN>
-0055 0323 031B ; [.181C.0020.0008.01AF][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER U, COMBINING DOT BELOW, COMBINING HORN>
+0115 ; [.164C.0020.0002.0065][.0000.003A.0002.0306] # LATIN SMALL LETTER E WITH BREVE
+0114 ; [.164C.0020.0008.0045][.0000.003A.0002.0306] # LATIN CAPITAL LETTER E WITH BREVE
+012D ; [.16CD.0020.0002.0069][.0000.003A.0002.0306] # LATIN SMALL LETTER I WITH BREVE
+012C ; [.16CD.0020.0008.0049][.0000.003A.0002.0306] # LATIN CAPITAL LETTER I WITH BREVE
+014F ; [.1771.0020.0002.006F][.0000.003A.0002.0306] # LATIN SMALL LETTER O WITH BREVE
+014E ; [.1771.0020.0008.004F][.0000.003A.0002.0306] # LATIN CAPITAL LETTER O WITH BREVE
+016D ; [.1836.0020.0002.0075][.0000.003A.0002.0306] # LATIN SMALL LETTER U WITH BREVE
+016C ; [.1836.0020.0008.0055][.0000.003A.0002.0306] # LATIN CAPITAL LETTER U WITH BREVE
+0103 ; [.15F0.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
+0061 0306 ; [.15F0.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
+0102 ; [.15F0.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
+0041 0306 ; [.15F0.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
+1EB1 ; [.15F0.0020.0002.0103][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB0 ; [.15F0.0020.0008.0102][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EAF ; [.15F0.0020.0002.0103][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EAE ; [.15F0.0020.0008.0102][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB5 ; [.15F0.0020.0002.0103][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB4 ; [.15F0.0020.0008.0102][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB3 ; [.15F0.0020.0002.0103][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB2 ; [.15F0.0020.0008.0102][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB7 ; [.15F0.0020.0002.0103][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB6 ; [.15F0.0020.0008.0102][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+00E2 ; [.15F1.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0061 0302 ; [.15F1.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+00C2 ; [.15F1.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0041 0302 ; [.15F1.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+1EA7 ; [.15F1.0020.0002.00E2][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA6 ; [.15F1.0020.0008.00C2][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA5 ; [.15F1.0020.0002.00E2][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA4 ; [.15F1.0020.0008.00C2][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EAB ; [.15F1.0020.0002.00E2][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAA ; [.15F1.0020.0008.00C2][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EA9 ; [.15F1.0020.0002.00E2][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA8 ; [.15F1.0020.0008.00C2][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAD ; [.15F1.0020.0002.00E2][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAC ; [.15F1.0020.0008.00C2][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+0111 ; [.1632.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1632.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1632.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1632.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00EA ; [.164D.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.164D.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.164D.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.164D.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC1 ; [.164D.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.164D.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EBF ; [.164D.0020.0002.00EA][.0000.0038.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.164D.0020.0008.00CA][.0000.0038.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC5 ; [.164D.0020.0002.00EA][.0000.0037.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.164D.0020.0008.00CA][.0000.0037.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.164D.0020.0002.00EA][.0000.0036.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.164D.0020.0008.00CA][.0000.0036.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.164D.0020.0002.00EA][.0000.0039.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.164D.0020.0008.00CA][.0000.0039.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+00F4 ; [.1772.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.1772.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.1772.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.1772.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.1772.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.1772.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.1772.0020.0002.00F4][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.1772.0020.0008.00D4][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.1772.0020.0002.00F4][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.1772.0020.0008.00D4][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.1772.0020.0002.00F4][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.1772.0020.0008.00D4][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.1772.0020.0002.00F4][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.1772.0020.0008.00D4][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+01A1 ; [.1773.0020.0002.01A1] # LATIN SMALL LETTER O WITH HORN
+006F 031B ; [.1773.0020.0002.01A1] # LATIN SMALL LETTER O WITH HORN
+01A0 ; [.1773.0020.0008.01A0] # LATIN CAPITAL LETTER O WITH HORN
+004F 031B ; [.1773.0020.0008.01A0] # LATIN CAPITAL LETTER O WITH HORN
+1EDD ; [.1773.0020.0002.01A1][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDC ; [.1773.0020.0008.01A0][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDB ; [.1773.0020.0002.01A1][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDA ; [.1773.0020.0008.01A0][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EE1 ; [.1773.0020.0002.01A1][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE0 ; [.1773.0020.0008.01A0][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EDF ; [.1773.0020.0002.01A1][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EDE ; [.1773.0020.0008.01A0][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EE3 ; [.1773.0020.0002.01A1][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE2 ; [.1773.0020.0008.01A0][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+01B0 ; [.1837.0020.0002.01B0] # LATIN SMALL LETTER U WITH HORN
+0075 031B ; [.1837.0020.0002.01B0] # LATIN SMALL LETTER U WITH HORN
+01AF ; [.1837.0020.0008.01AF] # LATIN CAPITAL LETTER U WITH HORN
+0055 031B ; [.1837.0020.0008.01AF] # LATIN CAPITAL LETTER U WITH HORN
+1EEB ; [.1837.0020.0002.01B0][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEA ; [.1837.0020.0008.01AF][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EE9 ; [.1837.0020.0002.01B0][.0000.0038.0002.0301] # LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EE8 ; [.1837.0020.0008.01AF][.0000.0038.0002.0301] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EEF ; [.1837.0020.0002.01B0][.0000.0037.0002.0303] # LATIN SMALL LETTER U WITH HORN AND TILDE
+1EEE ; [.1837.0020.0008.01AF][.0000.0037.0002.0303] # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EED ; [.1837.0020.0002.01B0][.0000.0036.0002.0309] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEC ; [.1837.0020.0008.01AF][.0000.0036.0002.0309] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EF1 ; [.1837.0020.0002.01B0][.0000.0039.0002.0323] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF0 ; [.1837.0020.0008.01AF][.0000.0039.0002.0323] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EA1 0306 ; [.15F0.0020.0002.0103][.0000.0039.0002.0323] # <LATIN SMALL LETTER A WITH DOT BELOW, COMBINING BREVE>
+1EA0 0306 ; [.15F0.0020.0008.0102][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER A WITH DOT BELOW, COMBINING BREVE>
+1EA1 0302 ; [.15F1.0020.0002.00E2][.0000.0039.0002.0323] # <LATIN SMALL LETTER A WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+1EA0 0302 ; [.15F1.0020.0008.00C2][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER A WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+1EB9 0302 ; [.164D.0020.0002.00EA][.0000.0039.0002.0323] # <LATIN SMALL LETTER E WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+1EB8 0302 ; [.164D.0020.0008.00CA][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER E WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+1ECD 0302 ; [.1772.0020.0002.00F4][.0000.0039.0002.0323] # <LATIN SMALL LETTER O WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+1ECC 0302 ; [.1772.0020.0008.00D4][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER O WITH DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+00F2 031B ; [.1773.0020.0002.01A1][.0000.0035.0002.0300] # <LATIN SMALL LETTER O WITH GRAVE, COMBINING HORN>
+1ECF 031B ; [.1773.0020.0002.01A1][.0000.0036.0002.0309] # <LATIN SMALL LETTER O WITH HOOK ABOVE, COMBINING HORN>
+00F5 031B ; [.1773.0020.0002.01A1][.0000.0037.0002.0303] # <LATIN SMALL LETTER O WITH TILDE, COMBINING HORN>
+00F3 031B ; [.1773.0020.0002.01A1][.0000.0038.0002.0301] # <LATIN SMALL LETTER O WITH ACUTE, COMBINING HORN>
+1ECD 031B ; [.1773.0020.0002.01A1][.0000.0039.0002.0323] # <LATIN SMALL LETTER O WITH DOT BELOW, COMBINING HORN>
+00D2 031B ; [.1773.0020.0008.01A0][.0000.0035.0002.0300] # <LATIN CAPITAL LETTER O WITH GRAVE, COMBINING HORN>
+1ECE 031B ; [.1773.0020.0008.01A0][.0000.0036.0002.0309] # <LATIN CAPITAL LETTER O WITH HOOK ABOVE, COMBINING HORN>
+00D5 031B ; [.1773.0020.0008.01A0][.0000.0037.0002.0303] # <LATIN CAPITAL LETTER O WITH TILDE, COMBINING HORN>
+00D3 031B ; [.1773.0020.0008.01A0][.0000.0038.0002.0301] # <LATIN CAPITAL LETTER O WITH ACUTE, COMBINING HORN>
+1ECC 031B ; [.1773.0020.0008.01A0][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER O WITH DOT BELOW, COMBINING HORN>
+00F9 031B ; [.1837.0020.0002.01B0][.0000.0035.0002.0300] # <LATIN SMALL LETTER U WITH GRAVE, COMBINING HORN>
+1EE7 031B ; [.1837.0020.0002.01B0][.0000.0036.0002.0309] # <LATIN SMALL LETTER U WITH HOOK ABOVE, COMBINING HORN>
+0169 031B ; [.1837.0020.0002.01B0][.0000.0037.0002.0303] # <LATIN SMALL LETTER U WITH TILDE, COMBINING HORN>
+00FA 031B ; [.1837.0020.0002.01B0][.0000.0038.0002.0301] # <LATIN SMALL LETTER U WITH ACUTE, COMBINING HORN>
+1EE5 031B ; [.1837.0020.0002.01B0][.0000.0039.0002.0323] # <LATIN SMALL LETTER U WITH DOT BELOW, COMBINING HORN>
+00D9 031B ; [.1837.0020.0008.01AF][.0000.0035.0002.0300] # <LATIN CAPITAL LETTER U WITH GRAVE, COMBINING HORN>
+1EE6 031B ; [.1837.0020.0008.01AF][.0000.0036.0002.0309] # <LATIN CAPITAL LETTER U WITH HOOK ABOVE, COMBINING HORN>
+0168 031B ; [.1837.0020.0008.01AF][.0000.0037.0002.0303] # <LATIN CAPITAL LETTER U WITH TILDE, COMBINING HORN>
+00DA 031B ; [.1837.0020.0008.01AF][.0000.0038.0002.0301] # <LATIN CAPITAL LETTER U WITH ACUTE, COMBINING HORN>
+1EE4 031B ; [.1837.0020.0008.01AF][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER U WITH DOT BELOW, COMBINING HORN>
+0061 0323 0306 ; [.15F0.0020.0002.0103][.0000.0039.0002.0323] # <LATIN SMALL LETTER A, COMBINING DOT BELOW, COMBINING BREVE>
+0041 0323 0306 ; [.15F0.0020.0008.0102][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER A, COMBINING DOT BELOW, COMBINING BREVE>
+0061 0323 0302 ; [.15F1.0020.0002.00E2][.0000.0039.0002.0323] # <LATIN SMALL LETTER A, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+0041 0323 0302 ; [.15F1.0020.0008.00C2][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER A, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+0065 0323 0302 ; [.164D.0020.0002.00EA][.0000.0039.0002.0323] # <LATIN SMALL LETTER E, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+0045 0323 0302 ; [.164D.0020.0008.00CA][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER E, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+006F 0323 0302 ; [.1772.0020.0002.00F4][.0000.0039.0002.0323] # <LATIN SMALL LETTER O, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+004F 0323 0302 ; [.1772.0020.0008.00D4][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER O, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT>
+006F 0300 031B ; [.1773.0020.0002.01A1][.0000.0035.0002.0300] # <LATIN SMALL LETTER O, COMBINING GRAVE ACCENT, COMBINING HORN>
+006F 0340 031B ; [.1773.0020.0002.01A1][.0000.0035.0002.0340] # <LATIN SMALL LETTER O, COMBINING GRAVE TONE MARK, COMBINING HORN>
+006F 0309 031B ; [.1773.0020.0002.01A1][.0000.0036.0002.0309] # <LATIN SMALL LETTER O, COMBINING HOOK ABOVE, COMBINING HORN>
+006F 0303 031B ; [.1773.0020.0002.01A1][.0000.0037.0002.0303] # <LATIN SMALL LETTER O, COMBINING TILDE, COMBINING HORN>
+006F 0301 031B ; [.1773.0020.0002.01A1][.0000.0038.0002.0301] # <LATIN SMALL LETTER O, COMBINING ACUTE ACCENT, COMBINING HORN>
+006F 0341 031B ; [.1773.0020.0002.01A1][.0000.0038.0002.0341] # <LATIN SMALL LETTER O, COMBINING ACUTE TONE MARK, COMBINING HORN>
+006F 0323 031B ; [.1773.0020.0002.01A1][.0000.0039.0002.0323] # <LATIN SMALL LETTER O, COMBINING DOT BELOW, COMBINING HORN>
+004F 0300 031B ; [.1773.0020.0008.01A0][.0000.0035.0002.0300] # <LATIN CAPITAL LETTER O, COMBINING GRAVE ACCENT, COMBINING HORN>
+004F 0340 031B ; [.1773.0020.0008.01A0][.0000.0035.0002.0340] # <LATIN CAPITAL LETTER O, COMBINING GRAVE TONE MARK, COMBINING HORN>
+004F 0309 031B ; [.1773.0020.0008.01A0][.0000.0036.0002.0309] # <LATIN CAPITAL LETTER O, COMBINING HOOK ABOVE, COMBINING HORN>
+004F 0303 031B ; [.1773.0020.0008.01A0][.0000.0037.0002.0303] # <LATIN CAPITAL LETTER O, COMBINING TILDE, COMBINING HORN>
+004F 0301 031B ; [.1773.0020.0008.01A0][.0000.0038.0002.0301] # <LATIN CAPITAL LETTER O, COMBINING ACUTE ACCENT, COMBINING HORN>
+004F 0341 031B ; [.1773.0020.0008.01A0][.0000.0038.0002.0341] # <LATIN CAPITAL LETTER O, COMBINING ACUTE TONE MARK, COMBINING HORN>
+004F 0323 031B ; [.1773.0020.0008.01A0][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER O, COMBINING DOT BELOW, COMBINING HORN>
+0075 0300 031B ; [.1837.0020.0002.01B0][.0000.0035.0002.0300] # <LATIN SMALL LETTER U, COMBINING GRAVE ACCENT, COMBINING HORN>
+0075 0340 031B ; [.1837.0020.0002.01B0][.0000.0035.0002.0340] # <LATIN SMALL LETTER U, COMBINING GRAVE TONE MARK, COMBINING HORN>
+0075 0309 031B ; [.1837.0020.0002.01B0][.0000.0036.0002.0309] # <LATIN SMALL LETTER U, COMBINING HOOK ABOVE, COMBINING HORN>
+0075 0303 031B ; [.1837.0020.0002.01B0][.0000.0037.0002.0303] # <LATIN SMALL LETTER U, COMBINING TILDE, COMBINING HORN>
+0075 0301 031B ; [.1837.0020.0002.01B0][.0000.0038.0002.0301] # <LATIN SMALL LETTER U, COMBINING ACUTE ACCENT, COMBINING HORN>
+0075 0341 031B ; [.1837.0020.0002.01B0][.0000.0038.0002.0341] # <LATIN SMALL LETTER U, COMBINING ACUTE TONE MARK, COMBINING HORN>
+0075 0323 031B ; [.1837.0020.0002.01B0][.0000.0039.0002.0323] # <LATIN SMALL LETTER U, COMBINING DOT BELOW, COMBINING HORN>
+0055 0300 031B ; [.1837.0020.0008.01AF][.0000.0035.0002.0300] # <LATIN CAPITAL LETTER U, COMBINING GRAVE ACCENT, COMBINING HORN>
+0055 0340 031B ; [.1837.0020.0008.01AF][.0000.0035.0002.0340] # <LATIN CAPITAL LETTER U, COMBINING GRAVE TONE MARK, COMBINING HORN>
+0055 0309 031B ; [.1837.0020.0008.01AF][.0000.0036.0002.0309] # <LATIN CAPITAL LETTER U, COMBINING HOOK ABOVE, COMBINING HORN>
+0055 0303 031B ; [.1837.0020.0008.01AF][.0000.0037.0002.0303] # <LATIN CAPITAL LETTER U, COMBINING TILDE, COMBINING HORN>
+0055 0301 031B ; [.1837.0020.0008.01AF][.0000.0038.0002.0301] # <LATIN CAPITAL LETTER U, COMBINING ACUTE ACCENT, COMBINING HORN>
+0055 0341 031B ; [.1837.0020.0008.01AF][.0000.0038.0002.0341] # <LATIN CAPITAL LETTER U, COMBINING ACUTE TONE MARK, COMBINING HORN>
+0055 0323 031B ; [.1837.0020.0008.01AF][.0000.0039.0002.0323] # <LATIN CAPITAL LETTER U, COMBINING DOT BELOW, COMBINING HORN>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/wae.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/wae.pl
index 069cde07c6a..fa0b5e6ad5a 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/wae.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/wae.pl
@@ -1,24 +1,24 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0061 0061 ; [.15D4.0020.0002.0061][.0000.0032.0002.0301] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
-00E4 00E4 ; [.15D4.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A WITH DIAERESIS, LATIN SMALL LETTER A WITH DIAERESIS>
-00E4 0061 0308 ; [.15D4.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A WITH DIAERESIS, LATIN SMALL LETTER A, COMBINING DIAERESIS>
-0061 0308 00E4 ; [.15D4.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A, COMBINING DIAERESIS, LATIN SMALL LETTER A WITH DIAERESIS>
-0061 0308 0061 0308 ; [.15D4.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A, COMBINING DIAERESIS, LATIN SMALL LETTER A, COMBINING DIAERESIS>
-0065 0065 ; [.1631.0020.0002.0065][.0000.0032.0002.0301] # <LATIN SMALL LETTER E, LATIN SMALL LETTER E>
-0069 0069 ; [.16B2.0020.0002.0069][.0000.0032.0002.0301] # <LATIN SMALL LETTER I, LATIN SMALL LETTER I>
-006F 006F ; [.1756.0020.0002.006F][.0000.0032.0002.0301] # <LATIN SMALL LETTER O, LATIN SMALL LETTER O>
-00F6 00F6 ; [.1756.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O WITH DIAERESIS, LATIN SMALL LETTER O WITH DIAERESIS>
-00F6 006F 0308 ; [.1756.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O WITH DIAERESIS, LATIN SMALL LETTER O, COMBINING DIAERESIS>
-006F 0308 00F6 ; [.1756.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O, COMBINING DIAERESIS, LATIN SMALL LETTER O WITH DIAERESIS>
-006F 0308 006F 0308 ; [.1756.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O, COMBINING DIAERESIS, LATIN SMALL LETTER O, COMBINING DIAERESIS>
-0063 0068 ; [.1602.0020.0002.0063][.0000.0041.0002.030C] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
-0073 0063 0068 ; [.17D8.0020.0002.0073][.0000.0041.0002.030C] # <LATIN SMALL LETTER S, LATIN SMALL LETTER C, LATIN SMALL LETTER H>
-0075 0075 ; [.181B.0020.0002.0075][.0000.0032.0002.0301] # <LATIN SMALL LETTER U, LATIN SMALL LETTER U>
-00FC 00FC ; [.181B.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U WITH DIAERESIS, LATIN SMALL LETTER U WITH DIAERESIS>
-00FC 0075 0308 ; [.181B.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U WITH DIAERESIS, LATIN SMALL LETTER U, COMBINING DIAERESIS>
-0075 0308 00FC ; [.181B.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U, COMBINING DIAERESIS, LATIN SMALL LETTER U WITH DIAERESIS>
-0075 0308 0075 0308 ; [.181B.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U, COMBINING DIAERESIS, LATIN SMALL LETTER U, COMBINING DIAERESIS>
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0061 0061 ; [.15EF.0020.0002.0061][.0000.0032.0002.0301] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
+00E4 00E4 ; [.15EF.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A WITH DIAERESIS, LATIN SMALL LETTER A WITH DIAERESIS>
+00E4 0061 0308 ; [.15EF.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A WITH DIAERESIS, LATIN SMALL LETTER A, COMBINING DIAERESIS>
+0061 0308 00E4 ; [.15EF.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A, COMBINING DIAERESIS, LATIN SMALL LETTER A WITH DIAERESIS>
+0061 0308 0061 0308 ; [.15EF.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A, COMBINING DIAERESIS, LATIN SMALL LETTER A, COMBINING DIAERESIS>
+0065 0065 ; [.164C.0020.0002.0065][.0000.0032.0002.0301] # <LATIN SMALL LETTER E, LATIN SMALL LETTER E>
+0069 0069 ; [.16CD.0020.0002.0069][.0000.0032.0002.0301] # <LATIN SMALL LETTER I, LATIN SMALL LETTER I>
+006F 006F ; [.1771.0020.0002.006F][.0000.0032.0002.0301] # <LATIN SMALL LETTER O, LATIN SMALL LETTER O>
+00F6 00F6 ; [.1771.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O WITH DIAERESIS, LATIN SMALL LETTER O WITH DIAERESIS>
+00F6 006F 0308 ; [.1771.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O WITH DIAERESIS, LATIN SMALL LETTER O, COMBINING DIAERESIS>
+006F 0308 00F6 ; [.1771.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O, COMBINING DIAERESIS, LATIN SMALL LETTER O WITH DIAERESIS>
+006F 0308 006F 0308 ; [.1771.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O, COMBINING DIAERESIS, LATIN SMALL LETTER O, COMBINING DIAERESIS>
+0063 0068 ; [.161D.0020.0002.0063][.0000.0041.0002.030C] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0073 0063 0068 ; [.17F3.0020.0002.0073][.0000.0041.0002.030C] # <LATIN SMALL LETTER S, LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0075 0075 ; [.1836.0020.0002.0075][.0000.0032.0002.0301] # <LATIN SMALL LETTER U, LATIN SMALL LETTER U>
+00FC 00FC ; [.1836.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U WITH DIAERESIS, LATIN SMALL LETTER U WITH DIAERESIS>
+00FC 0075 0308 ; [.1836.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U WITH DIAERESIS, LATIN SMALL LETTER U, COMBINING DIAERESIS>
+0075 0308 00FC ; [.1836.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U, COMBINING DIAERESIS, LATIN SMALL LETTER U WITH DIAERESIS>
+0075 0308 0075 0308 ; [.1836.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U, COMBINING DIAERESIS, LATIN SMALL LETTER U, COMBINING DIAERESIS>
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/wo.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/wo.pl
index a15f97ae2e0..9c768fc5413 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/wo.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/wo.pl
@@ -1,32 +1,32 @@
+{
- locale_version => 0.88,
+ locale_version => 0.93,
# eng doesn't require tailoring
- entry => <<'ENTRY', # for DUCET v6.1.0
-00E0 ; [.15D5.0020.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0300 ; [.15D5.0020.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0340 ; [.15D5.0020.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-00C0 ; [.15D5.0020.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0300 ; [.15D5.0020.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0340 ; [.15D5.0020.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-00E9 ; [.1632.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0301 ; [.1632.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0341 ; [.1632.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-00C9 ; [.1632.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0301 ; [.1632.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0341 ; [.1632.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-00EB ; [.1633.0020.0002.00EB] # LATIN SMALL LETTER E WITH DIAERESIS
-0065 0308 ; [.1633.0020.0002.00EB] # LATIN SMALL LETTER E WITH DIAERESIS
-00CB ; [.1633.0020.0008.00CB] # LATIN CAPITAL LETTER E WITH DIAERESIS
-0045 0308 ; [.1633.0020.0008.00CB] # LATIN CAPITAL LETTER E WITH DIAERESIS
-00F1 ; [.1735.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
-006E 0303 ; [.1735.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
-00D1 ; [.1735.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
-004E 0303 ; [.1735.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
-00F3 ; [.1757.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0301 ; [.1757.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0341 ; [.1757.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-00D3 ; [.1757.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0301 ; [.1757.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0341 ; [.1757.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+ entry => <<'ENTRY', # for DUCET v6.2.0
+00E0 ; [.15F0.0020.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0300 ; [.15F0.0020.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0340 ; [.15F0.0020.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+00C0 ; [.15F0.0020.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0300 ; [.15F0.0020.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0340 ; [.15F0.0020.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+00E9 ; [.164D.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0301 ; [.164D.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.164D.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.164D.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0301 ; [.164D.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.164D.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+00EB ; [.164E.0020.0002.00EB] # LATIN SMALL LETTER E WITH DIAERESIS
+0065 0308 ; [.164E.0020.0002.00EB] # LATIN SMALL LETTER E WITH DIAERESIS
+00CB ; [.164E.0020.0008.00CB] # LATIN CAPITAL LETTER E WITH DIAERESIS
+0045 0308 ; [.164E.0020.0008.00CB] # LATIN CAPITAL LETTER E WITH DIAERESIS
+00F1 ; [.1750.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+006E 0303 ; [.1750.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+00D1 ; [.1750.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
+004E 0303 ; [.1750.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
+00F3 ; [.1772.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.1772.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.1772.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1772.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.1772.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.1772.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/yo.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/yo.pl
index 243130f1363..b629005f918 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/yo.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/yo.pl
@@ -1,26 +1,26 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-1EB9 ; [.1632.0020.0002.1EB9] # LATIN SMALL LETTER E WITH DOT BELOW
-0065 0323 ; [.1632.0020.0002.1EB9] # LATIN SMALL LETTER E WITH DOT BELOW
-1EB8 ; [.1632.0020.0008.1EB8] # LATIN CAPITAL LETTER E WITH DOT BELOW
-0045 0323 ; [.1632.0020.0008.1EB8] # LATIN CAPITAL LETTER E WITH DOT BELOW
-1EC7 ; [.1632.0020.0002.1EB9][.0000.003C.0002.0302] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC6 ; [.1632.0020.0008.1EB8][.0000.003C.0002.0302] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-0067 0062 ; [.1677.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER B>
-0047 0062 ; [.1677.0020.0007.0047] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER B>
-0047 0042 ; [.1677.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER B>
-1ECD ; [.1757.0020.0002.1ECD] # LATIN SMALL LETTER O WITH DOT BELOW
-006F 0323 ; [.1757.0020.0002.1ECD] # LATIN SMALL LETTER O WITH DOT BELOW
-1ECC ; [.1757.0020.0008.1ECC] # LATIN CAPITAL LETTER O WITH DOT BELOW
-004F 0323 ; [.1757.0020.0008.1ECC] # LATIN CAPITAL LETTER O WITH DOT BELOW
-1ED9 ; [.1757.0020.0002.1ECD][.0000.003C.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED8 ; [.1757.0020.0008.1ECC][.0000.003C.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1EE3 ; [.1757.0020.0002.1ECD][.0000.0068.0002.031B] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
-1EE2 ; [.1757.0020.0008.1ECC][.0000.0068.0002.031B] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-1E63 ; [.17D9.0020.0002.1E63] # LATIN SMALL LETTER S WITH DOT BELOW
-0073 0323 ; [.17D9.0020.0002.1E63] # LATIN SMALL LETTER S WITH DOT BELOW
-1E62 ; [.17D9.0020.0008.1E62] # LATIN CAPITAL LETTER S WITH DOT BELOW
-0053 0323 ; [.17D9.0020.0008.1E62] # LATIN CAPITAL LETTER S WITH DOT BELOW
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+1EB9 ; [.164D.0020.0002.1EB9] # LATIN SMALL LETTER E WITH DOT BELOW
+0065 0323 ; [.164D.0020.0002.1EB9] # LATIN SMALL LETTER E WITH DOT BELOW
+1EB8 ; [.164D.0020.0008.1EB8] # LATIN CAPITAL LETTER E WITH DOT BELOW
+0045 0323 ; [.164D.0020.0008.1EB8] # LATIN CAPITAL LETTER E WITH DOT BELOW
+1EC7 ; [.164D.0020.0002.1EB9][.0000.003C.0002.0302] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.164D.0020.0008.1EB8][.0000.003C.0002.0302] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+0067 0062 ; [.1692.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER B>
+0047 0062 ; [.1692.0020.0007.0047] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER B>
+0047 0042 ; [.1692.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER B>
+1ECD ; [.1772.0020.0002.1ECD] # LATIN SMALL LETTER O WITH DOT BELOW
+006F 0323 ; [.1772.0020.0002.1ECD] # LATIN SMALL LETTER O WITH DOT BELOW
+1ECC ; [.1772.0020.0008.1ECC] # LATIN CAPITAL LETTER O WITH DOT BELOW
+004F 0323 ; [.1772.0020.0008.1ECC] # LATIN CAPITAL LETTER O WITH DOT BELOW
+1ED9 ; [.1772.0020.0002.1ECD][.0000.003C.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.1772.0020.0008.1ECC][.0000.003C.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EE3 ; [.1772.0020.0002.1ECD][.0000.0068.0002.031B] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE2 ; [.1772.0020.0008.1ECC][.0000.0068.0002.031B] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1E63 ; [.17F4.0020.0002.1E63] # LATIN SMALL LETTER S WITH DOT BELOW
+0073 0323 ; [.17F4.0020.0002.1E63] # LATIN SMALL LETTER S WITH DOT BELOW
+1E62 ; [.17F4.0020.0008.1E62] # LATIN CAPITAL LETTER S WITH DOT BELOW
+0053 0323 ; [.17F4.0020.0008.1E62] # LATIN CAPITAL LETTER S WITH DOT BELOW
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh.pl
index 7756222adbd..96ec342cd04 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh.pl
@@ -1,211 +1,211 @@
+{
- locale_version => 0.88,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0101 ; [.15D4.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-0061 0304 ; [.15D4.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-0100 ; [.15D4.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-0041 0304 ; [.15D4.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-00E1 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0301 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0341 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-00C1 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0301 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0341 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-01CE ; [.15D4.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
-0061 030C ; [.15D4.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
-01CD ; [.15D4.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
-0041 030C ; [.15D4.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
-00E0 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0300 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0340 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-00C0 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0300 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0340 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0113 ; [.1631.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-0065 0304 ; [.1631.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-0112 ; [.1631.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-0045 0304 ; [.1631.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-00E9 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0301 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0341 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-00C9 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0301 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0341 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-011B ; [.1631.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
-0065 030C ; [.1631.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
-011A ; [.1631.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
-0045 030C ; [.1631.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
-00E8 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-0065 0300 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-0065 0340 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-00C8 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-0045 0300 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-0045 0340 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-00EA 0304 ; [.1631.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
-00CA 0304 ; [.1631.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
-0065 0302 0304 ; [.1631.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
-0045 0302 0304 ; [.1631.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
-1EBF ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-0065 0302 0301 ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-0065 0302 0341 ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBE ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-0045 0302 0301 ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-0045 0302 0341 ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-00EA 0301 ; [.1631.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
-00EA 0341 ; [.1631.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
-00CA 0301 ; [.1631.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
-00CA 0341 ; [.1631.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
-00EA 030C ; [.1631.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
-00CA 030C ; [.1631.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
-0065 0302 030C ; [.1631.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
-0045 0302 030C ; [.1631.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
-1EC1 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-0065 0302 0300 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-0065 0302 0340 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC0 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-0045 0302 0300 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-0045 0302 0340 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-00EA 0300 ; [.1631.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
-00EA 0340 ; [.1631.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
-00CA 0300 ; [.1631.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
-00CA 0340 ; [.1631.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
-00EA ; [.1631.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0065 0302 ; [.1631.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-00CA ; [.1631.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0045 0302 ; [.1631.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-1EC5 ; [.1631.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC4 ; [.1631.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC3 ; [.1631.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC2 ; [.1631.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC7 ; [.1631.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC6 ; [.1631.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-012B ; [.16B2.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-0069 0304 ; [.16B2.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-012A ; [.16B2.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-0049 0304 ; [.16B2.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-00ED ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0301 ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0341 ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-00CD ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0301 ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0341 ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-01D0 ; [.16B2.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
-0069 030C ; [.16B2.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
-01CF ; [.16B2.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
-0049 030C ; [.16B2.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
-00EC ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-0069 0300 ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-0069 0340 ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-00CC ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-0049 0300 ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-0049 0340 ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-006D 0304 ; [.1726.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
-004D 0304 ; [.1726.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
-1E3F ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-006D 0301 ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-006D 0341 ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-1E3E ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-004D 0301 ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-004D 0341 ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-006D 030C ; [.1726.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
-004D 030C ; [.1726.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
-006D 0300 ; [.1726.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
-006D 0340 ; [.1726.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
-004D 0300 ; [.1726.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
-004D 0340 ; [.1726.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
-006E 0304 ; [.1734.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
-004E 0304 ; [.1734.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
-0144 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0301 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0341 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-0143 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0301 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0341 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-0148 ; [.1734.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
-006E 030C ; [.1734.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
-0147 ; [.1734.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
-004E 030C ; [.1734.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
-01F9 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-006E 0300 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-006E 0340 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-01F8 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-004E 0300 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-004E 0340 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-014D ; [.1756.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-006F 0304 ; [.1756.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-014C ; [.1756.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-004F 0304 ; [.1756.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-00F3 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0301 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0341 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-00D3 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0301 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0341 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-01D2 ; [.1756.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
-006F 030C ; [.1756.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
-01D1 ; [.1756.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
-004F 030C ; [.1756.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
-00F2 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-006F 0300 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-006F 0340 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-00D2 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-004F 0300 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-004F 0340 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-016B ; [.181B.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-0075 0304 ; [.181B.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-016A ; [.181B.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-0055 0304 ; [.181B.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-00FA ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0301 ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0341 ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-00DA ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0301 ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0341 ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-01D4 ; [.181B.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
-0075 030C ; [.181B.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
-01D3 ; [.181B.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
-0055 030C ; [.181B.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
-00F9 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-0075 0300 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-0075 0340 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-00D9 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-0055 0300 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-0055 0340 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-01D6 ; [.181B.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-0075 0308 0304 ; [.181B.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.181B.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-0055 0308 0304 ; [.181B.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-00FC 0304 ; [.181B.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
-00DC 0304 ; [.181B.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
-01D8 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-0075 0308 0301 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-0075 0308 0341 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-0055 0308 0301 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-0055 0308 0341 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-00FC 0301 ; [.181B.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
-00FC 0341 ; [.181B.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
-00DC 0301 ; [.181B.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
-00DC 0341 ; [.181B.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
-01DA ; [.181B.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-0075 0308 030C ; [.181B.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.181B.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0055 0308 030C ; [.181B.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-00FC 030C ; [.181B.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
-00DC 030C ; [.181B.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
-01DC ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-0075 0308 0300 ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-0075 0308 0340 ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-0055 0308 0300 ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-0055 0308 0340 ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-00FC 0300 ; [.181B.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
-00FC 0340 ; [.181B.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
-00DC 0300 ; [.181B.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
-00DC 0340 ; [.181B.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
-00FC ; [.181B.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.181B.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.181B.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.181B.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+ locale_version => 0.93,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0101 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0061 0304 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0100 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+0041 0304 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+00E1 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0301 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0301 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+01CE ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+0061 030C ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+01CD ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+0041 030C ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+00E0 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0300 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0340 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+00C0 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0300 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0340 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0113 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0065 0304 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0112 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+0045 0304 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+00E9 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0301 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0301 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+011B ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+0065 030C ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+011A ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+0045 030C ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+00E8 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0300 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0340 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+00C8 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0300 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0340 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+00EA 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+00CA 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+0065 0302 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+0045 0302 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+1EBF ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0301 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0341 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0301 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0341 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+00EA 0301 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00EA 0341 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00CA 0301 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00CA 0341 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00EA 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+00CA 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+0065 0302 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+0045 0302 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+1EC1 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0300 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0340 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0300 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0340 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+00EA 0300 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00EA 0340 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00CA 0300 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00CA 0340 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00EA ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC5 ; [.164C.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.164C.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.164C.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.164C.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.164C.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.164C.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+012B ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+0069 0304 ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+012A ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+0049 0304 ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+00ED ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0301 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0341 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0301 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0341 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+01D0 ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+0069 030C ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+01CF ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+0049 030C ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+00EC ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0300 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0340 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+00CC ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0300 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0340 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+006D 0304 ; [.1741.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
+004D 0304 ; [.1741.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
+1E3F ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0301 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0341 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+1E3E ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0301 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0341 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+006D 030C ; [.1741.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
+004D 030C ; [.1741.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
+006D 0300 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
+006D 0340 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
+004D 0300 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
+004D 0340 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
+006E 0304 ; [.174F.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
+004E 0304 ; [.174F.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
+0144 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0301 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0341 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+0143 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0301 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0341 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+0148 ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+006E 030C ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+0147 ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+004E 030C ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+01F9 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0300 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0340 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+01F8 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0300 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0340 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+014D ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+006F 0304 ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+014C ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+004F 0304 ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+00F3 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+01D2 ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+006F 030C ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+01D1 ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+004F 030C ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+00F2 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0300 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0340 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+00D2 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0300 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0340 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+016B ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+0075 0304 ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+0055 0304 ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+00FA ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0301 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0341 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0301 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0341 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+01D4 ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+0075 030C ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+01D3 ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+0055 030C ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+00F9 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0300 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0340 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+00D9 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0300 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0340 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+01D6 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+0075 0308 0304 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+0055 0308 0304 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+00FC 0304 ; [.1836.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
+00DC 0304 ; [.1836.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
+01D8 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0301 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0341 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0301 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0341 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+00FC 0301 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00FC 0341 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+00DC 0301 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00DC 0341 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+01DA ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+0075 0308 030C ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0055 0308 030C ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+00FC 030C ; [.1836.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
+00DC 030C ; [.1836.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
+01DC ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0300 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0340 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0300 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0340 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+00FC 0300 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00FC 0340 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00DC 0300 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00DC 0340 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00FC ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
ENTRY
};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_big5.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_big5.pl
index 43735e888fc..f443e8f87d8 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_big5.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_big5.pl
@@ -1,214 +1,214 @@
use Unicode::Collate::CJK::Big5;
+{
- locale_version => 0.88,
+ locale_version => 0.93,
overrideCJK => \&Unicode::Collate::CJK::Big5::weightBig5,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0101 ; [.15D4.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-0061 0304 ; [.15D4.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-0100 ; [.15D4.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-0041 0304 ; [.15D4.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-00E1 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0301 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0341 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-00C1 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0301 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0341 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-01CE ; [.15D4.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
-0061 030C ; [.15D4.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
-01CD ; [.15D4.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
-0041 030C ; [.15D4.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
-00E0 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0300 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0340 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-00C0 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0300 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0340 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0113 ; [.1631.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-0065 0304 ; [.1631.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-0112 ; [.1631.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-0045 0304 ; [.1631.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-00E9 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0301 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0341 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-00C9 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0301 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0341 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-011B ; [.1631.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
-0065 030C ; [.1631.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
-011A ; [.1631.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
-0045 030C ; [.1631.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
-00E8 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-0065 0300 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-0065 0340 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-00C8 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-0045 0300 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-0045 0340 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-00EA 0304 ; [.1631.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
-00CA 0304 ; [.1631.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
-0065 0302 0304 ; [.1631.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
-0045 0302 0304 ; [.1631.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
-1EBF ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-0065 0302 0301 ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-0065 0302 0341 ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBE ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-0045 0302 0301 ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-0045 0302 0341 ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-00EA 0301 ; [.1631.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
-00EA 0341 ; [.1631.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
-00CA 0301 ; [.1631.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
-00CA 0341 ; [.1631.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
-00EA 030C ; [.1631.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
-00CA 030C ; [.1631.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
-0065 0302 030C ; [.1631.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
-0045 0302 030C ; [.1631.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
-1EC1 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-0065 0302 0300 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-0065 0302 0340 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC0 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-0045 0302 0300 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-0045 0302 0340 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-00EA 0300 ; [.1631.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
-00EA 0340 ; [.1631.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
-00CA 0300 ; [.1631.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
-00CA 0340 ; [.1631.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
-00EA ; [.1631.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0065 0302 ; [.1631.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-00CA ; [.1631.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0045 0302 ; [.1631.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-1EC5 ; [.1631.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC4 ; [.1631.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC3 ; [.1631.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC2 ; [.1631.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC7 ; [.1631.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC6 ; [.1631.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-012B ; [.16B2.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-0069 0304 ; [.16B2.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-012A ; [.16B2.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-0049 0304 ; [.16B2.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-00ED ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0301 ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0341 ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-00CD ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0301 ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0341 ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-01D0 ; [.16B2.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
-0069 030C ; [.16B2.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
-01CF ; [.16B2.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
-0049 030C ; [.16B2.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
-00EC ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-0069 0300 ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-0069 0340 ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-00CC ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-0049 0300 ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-0049 0340 ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-006D 0304 ; [.1726.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
-004D 0304 ; [.1726.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
-1E3F ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-006D 0301 ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-006D 0341 ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-1E3E ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-004D 0301 ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-004D 0341 ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-006D 030C ; [.1726.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
-004D 030C ; [.1726.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
-006D 0300 ; [.1726.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
-006D 0340 ; [.1726.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
-004D 0300 ; [.1726.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
-004D 0340 ; [.1726.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
-006E 0304 ; [.1734.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
-004E 0304 ; [.1734.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
-0144 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0301 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0341 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-0143 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0301 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0341 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-0148 ; [.1734.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
-006E 030C ; [.1734.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
-0147 ; [.1734.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
-004E 030C ; [.1734.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
-01F9 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-006E 0300 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-006E 0340 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-01F8 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-004E 0300 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-004E 0340 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-014D ; [.1756.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-006F 0304 ; [.1756.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-014C ; [.1756.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-004F 0304 ; [.1756.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-00F3 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0301 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0341 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-00D3 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0301 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0341 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-01D2 ; [.1756.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
-006F 030C ; [.1756.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
-01D1 ; [.1756.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
-004F 030C ; [.1756.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
-00F2 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-006F 0300 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-006F 0340 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-00D2 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-004F 0300 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-004F 0340 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-016B ; [.181B.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-0075 0304 ; [.181B.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-016A ; [.181B.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-0055 0304 ; [.181B.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-00FA ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0301 ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0341 ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-00DA ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0301 ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0341 ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-01D4 ; [.181B.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
-0075 030C ; [.181B.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
-01D3 ; [.181B.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
-0055 030C ; [.181B.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
-00F9 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-0075 0300 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-0075 0340 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-00D9 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-0055 0300 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-0055 0340 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-01D6 ; [.181B.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-0075 0308 0304 ; [.181B.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.181B.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-0055 0308 0304 ; [.181B.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-00FC 0304 ; [.181B.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
-00DC 0304 ; [.181B.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
-01D8 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-0075 0308 0301 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-0075 0308 0341 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-0055 0308 0301 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-0055 0308 0341 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-00FC 0301 ; [.181B.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
-00FC 0341 ; [.181B.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
-00DC 0301 ; [.181B.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
-00DC 0341 ; [.181B.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
-01DA ; [.181B.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-0075 0308 030C ; [.181B.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.181B.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0055 0308 030C ; [.181B.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-00FC 030C ; [.181B.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
-00DC 030C ; [.181B.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
-01DC ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-0075 0308 0300 ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-0075 0308 0340 ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-0055 0308 0300 ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-0055 0308 0340 ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-00FC 0300 ; [.181B.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
-00FC 0340 ; [.181B.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
-00DC 0300 ; [.181B.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
-00DC 0340 ; [.181B.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
-00FC ; [.181B.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.181B.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.181B.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.181B.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0101 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0061 0304 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0100 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+0041 0304 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+00E1 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0301 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0301 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+01CE ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+0061 030C ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+01CD ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+0041 030C ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+00E0 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0300 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0340 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+00C0 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0300 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0340 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0113 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0065 0304 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0112 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+0045 0304 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+00E9 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0301 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0301 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+011B ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+0065 030C ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+011A ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+0045 030C ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+00E8 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0300 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0340 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+00C8 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0300 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0340 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+00EA 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+00CA 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+0065 0302 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+0045 0302 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+1EBF ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0301 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0341 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0301 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0341 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+00EA 0301 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00EA 0341 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00CA 0301 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00CA 0341 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00EA 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+00CA 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+0065 0302 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+0045 0302 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+1EC1 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0300 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0340 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0300 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0340 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+00EA 0300 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00EA 0340 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00CA 0300 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00CA 0340 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00EA ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC5 ; [.164C.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.164C.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.164C.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.164C.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.164C.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.164C.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+012B ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+0069 0304 ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+012A ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+0049 0304 ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+00ED ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0301 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0341 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0301 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0341 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+01D0 ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+0069 030C ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+01CF ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+0049 030C ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+00EC ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0300 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0340 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+00CC ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0300 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0340 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+006D 0304 ; [.1741.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
+004D 0304 ; [.1741.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
+1E3F ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0301 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0341 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+1E3E ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0301 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0341 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+006D 030C ; [.1741.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
+004D 030C ; [.1741.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
+006D 0300 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
+006D 0340 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
+004D 0300 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
+004D 0340 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
+006E 0304 ; [.174F.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
+004E 0304 ; [.174F.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
+0144 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0301 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0341 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+0143 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0301 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0341 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+0148 ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+006E 030C ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+0147 ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+004E 030C ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+01F9 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0300 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0340 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+01F8 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0300 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0340 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+014D ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+006F 0304 ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+014C ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+004F 0304 ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+00F3 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+01D2 ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+006F 030C ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+01D1 ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+004F 030C ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+00F2 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0300 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0340 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+00D2 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0300 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0340 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+016B ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+0075 0304 ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+0055 0304 ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+00FA ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0301 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0341 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0301 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0341 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+01D4 ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+0075 030C ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+01D3 ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+0055 030C ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+00F9 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0300 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0340 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+00D9 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0300 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0340 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+01D6 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+0075 0308 0304 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+0055 0308 0304 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+00FC 0304 ; [.1836.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
+00DC 0304 ; [.1836.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
+01D8 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0301 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0341 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0301 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0341 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+00FC 0301 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00FC 0341 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+00DC 0301 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00DC 0341 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+01DA ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+0075 0308 030C ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0055 0308 030C ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+00FC 030C ; [.1836.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
+00DC 030C ; [.1836.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
+01DC ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0300 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0340 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0300 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0340 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+00FC 0300 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00FC 0340 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00DC 0300 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00DC 0340 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00FC ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
F967 ; [.804A.0020.0002.4E0D] # CJK COMPATIBILITY IDEOGRAPH-F967
FA70 ; [.82DE.0020.0002.4E26] # CJK COMPATIBILITY IDEOGRAPH-FA70
F905 ; [.81CB.0020.0002.4E32] # CJK COMPATIBILITY IDEOGRAPH-F905
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_gb.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_gb.pl
index 1d4bef79f87..57c120d6f00 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_gb.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_gb.pl
@@ -1,214 +1,214 @@
use Unicode::Collate::CJK::GB2312;
+{
- locale_version => 0.88,
+ locale_version => 0.93,
overrideCJK => \&Unicode::Collate::CJK::GB2312::weightGB2312,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0101 ; [.15D4.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-0061 0304 ; [.15D4.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-0100 ; [.15D4.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-0041 0304 ; [.15D4.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-00E1 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0301 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0341 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-00C1 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0301 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0341 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-01CE ; [.15D4.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
-0061 030C ; [.15D4.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
-01CD ; [.15D4.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
-0041 030C ; [.15D4.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
-00E0 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0300 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0340 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-00C0 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0300 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0340 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0113 ; [.1631.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-0065 0304 ; [.1631.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-0112 ; [.1631.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-0045 0304 ; [.1631.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-00E9 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0301 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0341 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-00C9 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0301 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0341 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-011B ; [.1631.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
-0065 030C ; [.1631.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
-011A ; [.1631.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
-0045 030C ; [.1631.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
-00E8 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-0065 0300 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-0065 0340 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-00C8 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-0045 0300 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-0045 0340 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-00EA 0304 ; [.1631.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
-00CA 0304 ; [.1631.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
-0065 0302 0304 ; [.1631.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
-0045 0302 0304 ; [.1631.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
-1EBF ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-0065 0302 0301 ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-0065 0302 0341 ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBE ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-0045 0302 0301 ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-0045 0302 0341 ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-00EA 0301 ; [.1631.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
-00EA 0341 ; [.1631.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
-00CA 0301 ; [.1631.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
-00CA 0341 ; [.1631.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
-00EA 030C ; [.1631.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
-00CA 030C ; [.1631.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
-0065 0302 030C ; [.1631.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
-0045 0302 030C ; [.1631.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
-1EC1 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-0065 0302 0300 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-0065 0302 0340 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC0 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-0045 0302 0300 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-0045 0302 0340 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-00EA 0300 ; [.1631.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
-00EA 0340 ; [.1631.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
-00CA 0300 ; [.1631.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
-00CA 0340 ; [.1631.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
-00EA ; [.1631.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0065 0302 ; [.1631.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-00CA ; [.1631.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0045 0302 ; [.1631.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-1EC5 ; [.1631.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC4 ; [.1631.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC3 ; [.1631.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC2 ; [.1631.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC7 ; [.1631.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC6 ; [.1631.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-012B ; [.16B2.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-0069 0304 ; [.16B2.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-012A ; [.16B2.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-0049 0304 ; [.16B2.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-00ED ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0301 ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0341 ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-00CD ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0301 ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0341 ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-01D0 ; [.16B2.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
-0069 030C ; [.16B2.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
-01CF ; [.16B2.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
-0049 030C ; [.16B2.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
-00EC ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-0069 0300 ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-0069 0340 ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-00CC ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-0049 0300 ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-0049 0340 ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-006D 0304 ; [.1726.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
-004D 0304 ; [.1726.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
-1E3F ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-006D 0301 ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-006D 0341 ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-1E3E ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-004D 0301 ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-004D 0341 ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-006D 030C ; [.1726.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
-004D 030C ; [.1726.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
-006D 0300 ; [.1726.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
-006D 0340 ; [.1726.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
-004D 0300 ; [.1726.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
-004D 0340 ; [.1726.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
-006E 0304 ; [.1734.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
-004E 0304 ; [.1734.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
-0144 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0301 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0341 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-0143 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0301 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0341 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-0148 ; [.1734.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
-006E 030C ; [.1734.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
-0147 ; [.1734.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
-004E 030C ; [.1734.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
-01F9 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-006E 0300 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-006E 0340 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-01F8 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-004E 0300 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-004E 0340 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-014D ; [.1756.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-006F 0304 ; [.1756.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-014C ; [.1756.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-004F 0304 ; [.1756.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-00F3 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0301 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0341 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-00D3 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0301 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0341 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-01D2 ; [.1756.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
-006F 030C ; [.1756.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
-01D1 ; [.1756.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
-004F 030C ; [.1756.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
-00F2 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-006F 0300 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-006F 0340 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-00D2 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-004F 0300 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-004F 0340 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-016B ; [.181B.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-0075 0304 ; [.181B.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-016A ; [.181B.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-0055 0304 ; [.181B.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-00FA ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0301 ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0341 ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-00DA ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0301 ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0341 ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-01D4 ; [.181B.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
-0075 030C ; [.181B.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
-01D3 ; [.181B.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
-0055 030C ; [.181B.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
-00F9 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-0075 0300 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-0075 0340 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-00D9 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-0055 0300 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-0055 0340 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-01D6 ; [.181B.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-0075 0308 0304 ; [.181B.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.181B.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-0055 0308 0304 ; [.181B.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-00FC 0304 ; [.181B.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
-00DC 0304 ; [.181B.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
-01D8 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-0075 0308 0301 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-0075 0308 0341 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-0055 0308 0301 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-0055 0308 0341 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-00FC 0301 ; [.181B.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
-00FC 0341 ; [.181B.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
-00DC 0301 ; [.181B.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
-00DC 0341 ; [.181B.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
-01DA ; [.181B.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-0075 0308 030C ; [.181B.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.181B.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0055 0308 030C ; [.181B.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-00FC 030C ; [.181B.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
-00DC 030C ; [.181B.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
-01DC ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-0075 0308 0300 ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-0075 0308 0340 ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-0055 0308 0300 ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-0055 0308 0340 ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-00FC 0300 ; [.181B.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
-00FC 0340 ; [.181B.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
-00DC 0300 ; [.181B.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
-00DC 0340 ; [.181B.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
-00FC ; [.181B.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.181B.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.181B.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.181B.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0101 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0061 0304 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0100 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+0041 0304 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+00E1 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0301 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0301 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+01CE ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+0061 030C ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+01CD ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+0041 030C ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+00E0 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0300 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0340 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+00C0 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0300 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0340 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0113 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0065 0304 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0112 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+0045 0304 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+00E9 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0301 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0301 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+011B ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+0065 030C ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+011A ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+0045 030C ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+00E8 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0300 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0340 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+00C8 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0300 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0340 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+00EA 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+00CA 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+0065 0302 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+0045 0302 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+1EBF ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0301 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0341 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0301 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0341 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+00EA 0301 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00EA 0341 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00CA 0301 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00CA 0341 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00EA 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+00CA 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+0065 0302 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+0045 0302 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+1EC1 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0300 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0340 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0300 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0340 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+00EA 0300 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00EA 0340 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00CA 0300 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00CA 0340 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00EA ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC5 ; [.164C.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.164C.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.164C.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.164C.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.164C.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.164C.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+012B ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+0069 0304 ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+012A ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+0049 0304 ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+00ED ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0301 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0341 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0301 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0341 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+01D0 ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+0069 030C ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+01CF ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+0049 030C ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+00EC ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0300 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0340 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+00CC ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0300 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0340 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+006D 0304 ; [.1741.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
+004D 0304 ; [.1741.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
+1E3F ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0301 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0341 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+1E3E ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0301 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0341 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+006D 030C ; [.1741.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
+004D 030C ; [.1741.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
+006D 0300 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
+006D 0340 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
+004D 0300 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
+004D 0340 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
+006E 0304 ; [.174F.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
+004E 0304 ; [.174F.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
+0144 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0301 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0341 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+0143 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0301 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0341 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+0148 ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+006E 030C ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+0147 ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+004E 030C ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+01F9 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0300 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0340 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+01F8 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0300 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0340 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+014D ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+006F 0304 ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+014C ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+004F 0304 ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+00F3 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+01D2 ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+006F 030C ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+01D1 ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+004F 030C ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+00F2 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0300 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0340 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+00D2 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0300 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0340 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+016B ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+0075 0304 ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+0055 0304 ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+00FA ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0301 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0341 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0301 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0341 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+01D4 ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+0075 030C ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+01D3 ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+0055 030C ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+00F9 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0300 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0340 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+00D9 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0300 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0340 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+01D6 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+0075 0308 0304 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+0055 0308 0304 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+00FC 0304 ; [.1836.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
+00DC 0304 ; [.1836.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
+01D8 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0301 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0341 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0301 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0341 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+00FC 0301 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00FC 0341 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+00DC 0301 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00DC 0341 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+01DA ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+0075 0308 030C ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0055 0308 030C ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+00FC 030C ; [.1836.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
+00DC 030C ; [.1836.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
+01DC ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0300 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0340 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0300 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0340 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+00FC 0300 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00FC 0340 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00DC 0300 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00DC 0340 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00FC ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
E2D8 ; [.8EAB.0020.0002.E2D8] # <unknown>
E2D9 ; [.8EAC.0020.0002.E2D9] # <unknown>
E2DA ; [.8EAD.0020.0002.E2DA] # <unknown>
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl
index c9fb780b834..db98e9f99ff 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl
@@ -1,214 +1,214 @@
use Unicode::Collate::CJK::Pinyin;
+{
- locale_version => 0.88,
+ locale_version => 0.93,
overrideCJK => \&Unicode::Collate::CJK::Pinyin::weightPinyin,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0101 ; [.15D4.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-0061 0304 ; [.15D4.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-0100 ; [.15D4.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-0041 0304 ; [.15D4.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-00E1 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0301 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0341 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-00C1 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0301 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0341 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-01CE ; [.15D4.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
-0061 030C ; [.15D4.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
-01CD ; [.15D4.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
-0041 030C ; [.15D4.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
-00E0 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0300 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0340 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-00C0 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0300 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0340 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0113 ; [.1631.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-0065 0304 ; [.1631.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-0112 ; [.1631.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-0045 0304 ; [.1631.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-00E9 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0301 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0341 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-00C9 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0301 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0341 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-011B ; [.1631.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
-0065 030C ; [.1631.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
-011A ; [.1631.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
-0045 030C ; [.1631.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
-00E8 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-0065 0300 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-0065 0340 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-00C8 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-0045 0300 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-0045 0340 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-00EA 0304 ; [.1631.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
-00CA 0304 ; [.1631.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
-0065 0302 0304 ; [.1631.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
-0045 0302 0304 ; [.1631.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
-1EBF ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-0065 0302 0301 ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-0065 0302 0341 ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBE ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-0045 0302 0301 ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-0045 0302 0341 ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-00EA 0301 ; [.1631.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
-00EA 0341 ; [.1631.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
-00CA 0301 ; [.1631.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
-00CA 0341 ; [.1631.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
-00EA 030C ; [.1631.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
-00CA 030C ; [.1631.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
-0065 0302 030C ; [.1631.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
-0045 0302 030C ; [.1631.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
-1EC1 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-0065 0302 0300 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-0065 0302 0340 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC0 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-0045 0302 0300 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-0045 0302 0340 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-00EA 0300 ; [.1631.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
-00EA 0340 ; [.1631.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
-00CA 0300 ; [.1631.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
-00CA 0340 ; [.1631.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
-00EA ; [.1631.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0065 0302 ; [.1631.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-00CA ; [.1631.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0045 0302 ; [.1631.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-1EC5 ; [.1631.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC4 ; [.1631.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC3 ; [.1631.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC2 ; [.1631.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC7 ; [.1631.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC6 ; [.1631.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-012B ; [.16B2.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-0069 0304 ; [.16B2.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-012A ; [.16B2.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-0049 0304 ; [.16B2.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-00ED ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0301 ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0341 ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-00CD ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0301 ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0341 ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-01D0 ; [.16B2.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
-0069 030C ; [.16B2.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
-01CF ; [.16B2.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
-0049 030C ; [.16B2.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
-00EC ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-0069 0300 ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-0069 0340 ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-00CC ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-0049 0300 ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-0049 0340 ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-006D 0304 ; [.1726.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
-004D 0304 ; [.1726.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
-1E3F ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-006D 0301 ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-006D 0341 ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-1E3E ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-004D 0301 ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-004D 0341 ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-006D 030C ; [.1726.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
-004D 030C ; [.1726.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
-006D 0300 ; [.1726.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
-006D 0340 ; [.1726.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
-004D 0300 ; [.1726.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
-004D 0340 ; [.1726.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
-006E 0304 ; [.1734.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
-004E 0304 ; [.1734.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
-0144 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0301 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0341 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-0143 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0301 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0341 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-0148 ; [.1734.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
-006E 030C ; [.1734.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
-0147 ; [.1734.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
-004E 030C ; [.1734.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
-01F9 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-006E 0300 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-006E 0340 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-01F8 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-004E 0300 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-004E 0340 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-014D ; [.1756.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-006F 0304 ; [.1756.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-014C ; [.1756.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-004F 0304 ; [.1756.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-00F3 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0301 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0341 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-00D3 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0301 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0341 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-01D2 ; [.1756.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
-006F 030C ; [.1756.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
-01D1 ; [.1756.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
-004F 030C ; [.1756.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
-00F2 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-006F 0300 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-006F 0340 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-00D2 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-004F 0300 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-004F 0340 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-016B ; [.181B.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-0075 0304 ; [.181B.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-016A ; [.181B.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-0055 0304 ; [.181B.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-00FA ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0301 ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0341 ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-00DA ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0301 ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0341 ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-01D4 ; [.181B.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
-0075 030C ; [.181B.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
-01D3 ; [.181B.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
-0055 030C ; [.181B.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
-00F9 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-0075 0300 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-0075 0340 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-00D9 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-0055 0300 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-0055 0340 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-01D6 ; [.181B.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-0075 0308 0304 ; [.181B.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.181B.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-0055 0308 0304 ; [.181B.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-00FC 0304 ; [.181B.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
-00DC 0304 ; [.181B.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
-01D8 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-0075 0308 0301 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-0075 0308 0341 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-0055 0308 0301 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-0055 0308 0341 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-00FC 0301 ; [.181B.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
-00FC 0341 ; [.181B.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
-00DC 0301 ; [.181B.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
-00DC 0341 ; [.181B.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
-01DA ; [.181B.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-0075 0308 030C ; [.181B.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.181B.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0055 0308 030C ; [.181B.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-00FC 030C ; [.181B.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
-00DC 030C ; [.181B.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
-01DC ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-0075 0308 0300 ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-0075 0308 0340 ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-0055 0308 0300 ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-0055 0308 0340 ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-00FC 0300 ; [.181B.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
-00FC 0340 ; [.181B.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
-00DC 0300 ; [.181B.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
-00DC 0340 ; [.181B.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
-00FC ; [.181B.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.181B.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.181B.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.181B.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0101 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0061 0304 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0100 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+0041 0304 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+00E1 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0301 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0301 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+01CE ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+0061 030C ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+01CD ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+0041 030C ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+00E0 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0300 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0340 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+00C0 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0300 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0340 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0113 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0065 0304 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0112 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+0045 0304 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+00E9 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0301 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0301 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+011B ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+0065 030C ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+011A ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+0045 030C ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+00E8 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0300 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0340 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+00C8 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0300 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0340 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+00EA 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+00CA 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+0065 0302 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+0045 0302 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+1EBF ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0301 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0341 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0301 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0341 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+00EA 0301 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00EA 0341 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00CA 0301 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00CA 0341 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00EA 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+00CA 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+0065 0302 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+0045 0302 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+1EC1 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0300 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0340 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0300 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0340 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+00EA 0300 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00EA 0340 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00CA 0300 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00CA 0340 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00EA ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC5 ; [.164C.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.164C.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.164C.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.164C.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.164C.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.164C.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+012B ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+0069 0304 ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+012A ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+0049 0304 ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+00ED ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0301 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0341 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0301 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0341 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+01D0 ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+0069 030C ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+01CF ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+0049 030C ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+00EC ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0300 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0340 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+00CC ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0300 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0340 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+006D 0304 ; [.1741.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
+004D 0304 ; [.1741.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
+1E3F ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0301 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0341 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+1E3E ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0301 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0341 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+006D 030C ; [.1741.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
+004D 030C ; [.1741.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
+006D 0300 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
+006D 0340 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
+004D 0300 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
+004D 0340 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
+006E 0304 ; [.174F.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
+004E 0304 ; [.174F.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
+0144 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0301 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0341 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+0143 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0301 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0341 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+0148 ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+006E 030C ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+0147 ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+004E 030C ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+01F9 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0300 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0340 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+01F8 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0300 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0340 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+014D ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+006F 0304 ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+014C ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+004F 0304 ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+00F3 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+01D2 ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+006F 030C ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+01D1 ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+004F 030C ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+00F2 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0300 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0340 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+00D2 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0300 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0340 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+016B ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+0075 0304 ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+0055 0304 ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+00FA ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0301 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0341 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0301 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0341 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+01D4 ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+0075 030C ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+01D3 ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+0055 030C ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+00F9 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0300 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0340 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+00D9 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0300 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0340 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+01D6 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+0075 0308 0304 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+0055 0308 0304 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+00FC 0304 ; [.1836.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
+00DC 0304 ; [.1836.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
+01D8 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0301 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0341 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0301 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0341 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+00FC 0301 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00FC 0341 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+00DC 0301 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00DC 0341 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+01DA ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+0075 0308 030C ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0055 0308 030C ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+00FC 030C ; [.1836.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
+00DC 030C ; [.1836.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
+01DC ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0300 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0340 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0300 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0340 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+00FC 0300 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00FC 0340 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00DC 0300 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00DC 0340 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00FC ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
FDD0 0041 ; [.8000.0020.0002.FDD0] # <noncharacter-FDD0, LATIN CAPITAL LETTER A>
FDD0 0042 ; [.80C5.0020.0002.FDD0] # <noncharacter-FDD0, LATIN CAPITAL LETTER B>
FDD0 0043 ; [.8441.0020.0002.FDD0] # <noncharacter-FDD0, LATIN CAPITAL LETTER C>
@@ -269,74 +269,74 @@ FDD0 005A ; [.CB22.0020.0002.FDD0] # <noncharacter-FDD0, LATIN CAPITAL LETTER Z>
3236 ; [*02FB.0020.0004.3236][.844F.0020.0004.3236][*02FC.0020.001F.3236] # PARENTHESIZED IDEOGRAPH FINANCIAL
323E ; [*02FB.0020.0004.323E][.D0A3.0020.0004.323E][*02FC.0020.001F.323E] # PARENTHESIZED IDEOGRAPH RESOURCE
322E ; [*02FB.0020.0004.322E][.9B96.0020.0004.322E][*02FC.0020.001F.322E] # PARENTHESIZED IDEOGRAPH METAL
-3358 ; [.15CA.0020.0004.3358][.8B60.0020.0004.3358] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
-33E9 ; [.15CB.0020.0004.33E9][.15CA.0020.0004.33E9][.B272.0020.001F.33E9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
-32C9 ; [.15CB.0020.0004.32C9][.15CA.0020.0004.32C9][.CA96.0020.001F.32C9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
-3362 ; [.15CB.0020.0004.3362][.15CA.0020.0004.3362][.8B60.0020.001F.3362] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
-33EA ; [.15CB.0020.0004.33EA][.15CB.0020.0004.33EA][.B272.0020.001F.33EA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
-32CA ; [.15CB.0020.0004.32CA][.15CB.0020.0004.32CA][.CA96.0020.001F.32CA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
-3363 ; [.15CB.0020.0004.3363][.15CB.0020.0004.3363][.8B60.0020.001F.3363] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
-33EB ; [.15CB.0020.0004.33EB][.15CC.0020.0004.33EB][.B272.0020.001F.33EB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
-32CB ; [.15CB.0020.0004.32CB][.15CC.0020.0004.32CB][.CA96.0020.001F.32CB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
-3364 ; [.15CB.0020.0004.3364][.15CC.0020.0004.3364][.8B60.0020.001F.3364] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
-33EC ; [.15CB.0020.0004.33EC][.15CD.0020.0004.33EC][.B272.0020.001F.33EC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
-3365 ; [.15CB.0020.0004.3365][.15CD.0020.0004.3365][.8B60.0020.001F.3365] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
-33ED ; [.15CB.0020.0004.33ED][.15CE.0020.0004.33ED][.B272.0020.001F.33ED] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
-3366 ; [.15CB.0020.0004.3366][.15CE.0020.0004.3366][.8B60.0020.001F.3366] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
-33EE ; [.15CB.0020.0004.33EE][.15CF.0020.0004.33EE][.B272.0020.001F.33EE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
-3367 ; [.15CB.0020.0004.3367][.15CF.0020.0004.3367][.8B60.0020.001F.3367] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
-33EF ; [.15CB.0020.0004.33EF][.15D0.0020.0004.33EF][.B272.0020.001F.33EF] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
-3368 ; [.15CB.0020.0004.3368][.15D0.0020.0004.3368][.8B60.0020.001F.3368] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
-33F0 ; [.15CB.0020.0004.33F0][.15D1.0020.0004.33F0][.B272.0020.001F.33F0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
-3369 ; [.15CB.0020.0004.3369][.15D1.0020.0004.3369][.8B60.0020.001F.3369] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
-33F1 ; [.15CB.0020.0004.33F1][.15D2.0020.0004.33F1][.B272.0020.001F.33F1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
-336A ; [.15CB.0020.0004.336A][.15D2.0020.0004.336A][.8B60.0020.001F.336A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
-33F2 ; [.15CB.0020.0004.33F2][.15D3.0020.0004.33F2][.B272.0020.001F.33F2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
-336B ; [.15CB.0020.0004.336B][.15D3.0020.0004.336B][.8B60.0020.001F.336B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
-33E0 ; [.15CB.0020.0004.33E0][.B272.0020.0004.33E0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
-32C0 ; [.15CB.0020.0004.32C0][.CA96.0020.0004.32C0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
-3359 ; [.15CB.0020.0004.3359][.8B60.0020.0004.3359] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
-33F3 ; [.15CC.0020.0004.33F3][.15CA.0020.0004.33F3][.B272.0020.001F.33F3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
-336C ; [.15CC.0020.0004.336C][.15CA.0020.0004.336C][.8B60.0020.001F.336C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
-33F4 ; [.15CC.0020.0004.33F4][.15CB.0020.0004.33F4][.B272.0020.001F.33F4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
-336D ; [.15CC.0020.0004.336D][.15CB.0020.0004.336D][.8B60.0020.001F.336D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
-33F5 ; [.15CC.0020.0004.33F5][.15CC.0020.0004.33F5][.B272.0020.001F.33F5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
-336E ; [.15CC.0020.0004.336E][.15CC.0020.0004.336E][.8B60.0020.001F.336E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
-33F6 ; [.15CC.0020.0004.33F6][.15CD.0020.0004.33F6][.B272.0020.001F.33F6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
-336F ; [.15CC.0020.0004.336F][.15CD.0020.0004.336F][.8B60.0020.001F.336F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
-33F7 ; [.15CC.0020.0004.33F7][.15CE.0020.0004.33F7][.B272.0020.001F.33F7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
-3370 ; [.15CC.0020.0004.3370][.15CE.0020.0004.3370][.8B60.0020.001F.3370] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
-33F8 ; [.15CC.0020.0004.33F8][.15CF.0020.0004.33F8][.B272.0020.001F.33F8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
-33F9 ; [.15CC.0020.0004.33F9][.15D0.0020.0004.33F9][.B272.0020.001F.33F9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
-33FA ; [.15CC.0020.0004.33FA][.15D1.0020.0004.33FA][.B272.0020.001F.33FA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
-33FB ; [.15CC.0020.0004.33FB][.15D2.0020.0004.33FB][.B272.0020.001F.33FB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
-33FC ; [.15CC.0020.0004.33FC][.15D3.0020.0004.33FC][.B272.0020.001F.33FC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
-33E1 ; [.15CC.0020.0004.33E1][.B272.0020.0004.33E1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
-32C1 ; [.15CC.0020.0004.32C1][.CA96.0020.0004.32C1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
-335A ; [.15CC.0020.0004.335A][.8B60.0020.0004.335A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
-33FD ; [.15CD.0020.0004.33FD][.15CA.0020.0004.33FD][.B272.0020.001F.33FD] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
-33FE ; [.15CD.0020.0004.33FE][.15CB.0020.0004.33FE][.B272.0020.001F.33FE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
-33E2 ; [.15CD.0020.0004.33E2][.B272.0020.0004.33E2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
-32C2 ; [.15CD.0020.0004.32C2][.CA96.0020.0004.32C2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
-335B ; [.15CD.0020.0004.335B][.8B60.0020.0004.335B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
-33E3 ; [.15CE.0020.0004.33E3][.B272.0020.0004.33E3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
-32C3 ; [.15CE.0020.0004.32C3][.CA96.0020.0004.32C3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
-335C ; [.15CE.0020.0004.335C][.8B60.0020.0004.335C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
-33E4 ; [.15CF.0020.0004.33E4][.B272.0020.0004.33E4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
-32C4 ; [.15CF.0020.0004.32C4][.CA96.0020.0004.32C4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
-335D ; [.15CF.0020.0004.335D][.8B60.0020.0004.335D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
-33E5 ; [.15D0.0020.0004.33E5][.B272.0020.0004.33E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
-32C5 ; [.15D0.0020.0004.32C5][.CA96.0020.0004.32C5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
-335E ; [.15D0.0020.0004.335E][.8B60.0020.0004.335E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
-33E6 ; [.15D1.0020.0004.33E6][.B272.0020.0004.33E6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
-32C6 ; [.15D1.0020.0004.32C6][.CA96.0020.0004.32C6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
-335F ; [.15D1.0020.0004.335F][.8B60.0020.0004.335F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
-33E7 ; [.15D2.0020.0004.33E7][.B272.0020.0004.33E7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
-32C7 ; [.15D2.0020.0004.32C7][.CA96.0020.0004.32C7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
-3360 ; [.15D2.0020.0004.3360][.8B60.0020.0004.3360] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
-33E8 ; [.15D3.0020.0004.33E8][.B272.0020.0004.33E8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
-32C8 ; [.15D3.0020.0004.32C8][.CA96.0020.0004.32C8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
-3361 ; [.15D3.0020.0004.3361][.8B60.0020.0004.3361] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+3358 ; [.15E5.0020.0004.3358][.8B60.0020.001F.3358] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+33E9 ; [.15E6.0020.0004.33E9][.15E5.0020.0004.33E9][.B272.0020.001F.33E9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+32C9 ; [.15E6.0020.0004.32C9][.15E5.0020.0004.32C9][.CA96.0020.001F.32C9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+3362 ; [.15E6.0020.0004.3362][.15E5.0020.0004.3362][.8B60.0020.001F.3362] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+33EA ; [.15E6.0020.0004.33EA][.15E6.0020.0004.33EA][.B272.0020.001F.33EA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+32CA ; [.15E6.0020.0004.32CA][.15E6.0020.0004.32CA][.CA96.0020.001F.32CA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+3363 ; [.15E6.0020.0004.3363][.15E6.0020.0004.3363][.8B60.0020.001F.3363] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+33EB ; [.15E6.0020.0004.33EB][.15E7.0020.0004.33EB][.B272.0020.001F.33EB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+32CB ; [.15E6.0020.0004.32CB][.15E7.0020.0004.32CB][.CA96.0020.001F.32CB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+3364 ; [.15E6.0020.0004.3364][.15E7.0020.0004.3364][.8B60.0020.001F.3364] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+33EC ; [.15E6.0020.0004.33EC][.15E8.0020.0004.33EC][.B272.0020.001F.33EC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+3365 ; [.15E6.0020.0004.3365][.15E8.0020.0004.3365][.8B60.0020.001F.3365] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+33ED ; [.15E6.0020.0004.33ED][.15E9.0020.0004.33ED][.B272.0020.001F.33ED] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+3366 ; [.15E6.0020.0004.3366][.15E9.0020.0004.3366][.8B60.0020.001F.3366] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+33EE ; [.15E6.0020.0004.33EE][.15EA.0020.0004.33EE][.B272.0020.001F.33EE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+3367 ; [.15E6.0020.0004.3367][.15EA.0020.0004.3367][.8B60.0020.001F.3367] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+33EF ; [.15E6.0020.0004.33EF][.15EB.0020.0004.33EF][.B272.0020.001F.33EF] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+3368 ; [.15E6.0020.0004.3368][.15EB.0020.0004.3368][.8B60.0020.001F.3368] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+33F0 ; [.15E6.0020.0004.33F0][.15EC.0020.0004.33F0][.B272.0020.001F.33F0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+3369 ; [.15E6.0020.0004.3369][.15EC.0020.0004.3369][.8B60.0020.001F.3369] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+33F1 ; [.15E6.0020.0004.33F1][.15ED.0020.0004.33F1][.B272.0020.001F.33F1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+336A ; [.15E6.0020.0004.336A][.15ED.0020.0004.336A][.8B60.0020.001F.336A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+33F2 ; [.15E6.0020.0004.33F2][.15EE.0020.0004.33F2][.B272.0020.001F.33F2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+336B ; [.15E6.0020.0004.336B][.15EE.0020.0004.336B][.8B60.0020.001F.336B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+33E0 ; [.15E6.0020.0004.33E0][.B272.0020.001F.33E0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+32C0 ; [.15E6.0020.0004.32C0][.CA96.0020.001F.32C0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+3359 ; [.15E6.0020.0004.3359][.8B60.0020.001F.3359] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+33F3 ; [.15E7.0020.0004.33F3][.15E5.0020.0004.33F3][.B272.0020.001F.33F3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+336C ; [.15E7.0020.0004.336C][.15E5.0020.0004.336C][.8B60.0020.001F.336C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+33F4 ; [.15E7.0020.0004.33F4][.15E6.0020.0004.33F4][.B272.0020.001F.33F4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+336D ; [.15E7.0020.0004.336D][.15E6.0020.0004.336D][.8B60.0020.001F.336D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+33F5 ; [.15E7.0020.0004.33F5][.15E7.0020.0004.33F5][.B272.0020.001F.33F5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+336E ; [.15E7.0020.0004.336E][.15E7.0020.0004.336E][.8B60.0020.001F.336E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+33F6 ; [.15E7.0020.0004.33F6][.15E8.0020.0004.33F6][.B272.0020.001F.33F6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+336F ; [.15E7.0020.0004.336F][.15E8.0020.0004.336F][.8B60.0020.001F.336F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+33F7 ; [.15E7.0020.0004.33F7][.15E9.0020.0004.33F7][.B272.0020.001F.33F7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+3370 ; [.15E7.0020.0004.3370][.15E9.0020.0004.3370][.8B60.0020.001F.3370] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+33F8 ; [.15E7.0020.0004.33F8][.15EA.0020.0004.33F8][.B272.0020.001F.33F8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+33F9 ; [.15E7.0020.0004.33F9][.15EB.0020.0004.33F9][.B272.0020.001F.33F9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+33FA ; [.15E7.0020.0004.33FA][.15EC.0020.0004.33FA][.B272.0020.001F.33FA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+33FB ; [.15E7.0020.0004.33FB][.15ED.0020.0004.33FB][.B272.0020.001F.33FB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+33FC ; [.15E7.0020.0004.33FC][.15EE.0020.0004.33FC][.B272.0020.001F.33FC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33E1 ; [.15E7.0020.0004.33E1][.B272.0020.001F.33E1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+32C1 ; [.15E7.0020.0004.32C1][.CA96.0020.001F.32C1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+335A ; [.15E7.0020.0004.335A][.8B60.0020.001F.335A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+33FD ; [.15E8.0020.0004.33FD][.15E5.0020.0004.33FD][.B272.0020.001F.33FD] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+33FE ; [.15E8.0020.0004.33FE][.15E6.0020.0004.33FE][.B272.0020.001F.33FE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+33E2 ; [.15E8.0020.0004.33E2][.B272.0020.001F.33E2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+32C2 ; [.15E8.0020.0004.32C2][.CA96.0020.001F.32C2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+335B ; [.15E8.0020.0004.335B][.8B60.0020.001F.335B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+33E3 ; [.15E9.0020.0004.33E3][.B272.0020.001F.33E3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+32C3 ; [.15E9.0020.0004.32C3][.CA96.0020.001F.32C3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+335C ; [.15E9.0020.0004.335C][.8B60.0020.001F.335C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+33E4 ; [.15EA.0020.0004.33E4][.B272.0020.001F.33E4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+32C4 ; [.15EA.0020.0004.32C4][.CA96.0020.001F.32C4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+335D ; [.15EA.0020.0004.335D][.8B60.0020.001F.335D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+33E5 ; [.15EB.0020.0004.33E5][.B272.0020.001F.33E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+32C5 ; [.15EB.0020.0004.32C5][.CA96.0020.001F.32C5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+335E ; [.15EB.0020.0004.335E][.8B60.0020.001F.335E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+33E6 ; [.15EC.0020.0004.33E6][.B272.0020.001F.33E6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+32C6 ; [.15EC.0020.0004.32C6][.CA96.0020.001F.32C6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+335F ; [.15EC.0020.0004.335F][.8B60.0020.001F.335F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+33E7 ; [.15ED.0020.0004.33E7][.B272.0020.001F.33E7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+32C7 ; [.15ED.0020.0004.32C7][.CA96.0020.001F.32C7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+3360 ; [.15ED.0020.0004.3360][.8B60.0020.001F.3360] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+33E8 ; [.15EE.0020.0004.33E8][.B272.0020.001F.33E8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+32C8 ; [.15EE.0020.0004.32C8][.CA96.0020.001F.32C8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+3361 ; [.15EE.0020.0004.3361][.8B60.0020.001F.3361] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
1F241 ; [*0359.0020.0004.1F241][.B35F.0020.0004.1F241][*035A.0020.001F.1F241] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09
1F242 ; [*0359.0020.0004.1F242][.8E0E.0020.0004.1F242][*035A.0020.001F.1F242] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C
1F247 ; [*0359.0020.0004.1F247][.B548.0020.0004.1F247][*035A.0020.001F.1F247] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD
@@ -441,7 +441,7 @@ FDD0 005A ; [.CB22.0020.0002.FDD0] # <noncharacter-FDD0, LATIN CAPITAL LETTER Z>
1F215 ; [.8D1C.0020.001C.1F215] # SQUARED CJK UNIFIED IDEOGRAPH-591A
32B0 ; [.C59A.0020.0006.32B0] # CIRCLED IDEOGRAPH NIGHT
2F24 ; [.89A7.0020.0004.2F24] # KANGXI RADICAL BIG
-337D ; [.89A7.0020.001C.337D][.CDCB.0020.001F.337D] # SQUARE ERA NAME TAISYOU
+337D ; [.89A7.0020.001C.337D][.CDCB.0020.001C.337D] # SQUARE ERA NAME TAISYOU
319D ; [.B9F9.0020.0014.319D] # IDEOGRAPHIC ANNOTATION HEAVEN MARK
1F217 ; [.B9F9.0020.001C.1F217] # SQUARED CJK UNIFIED IDEOGRAPH-5929
2F25 ; [.AB5E.0020.0004.2F25] # KANGXI RADICAL WOMAN
@@ -464,7 +464,7 @@ FDD0 005A ; [.CB22.0020.0002.FDD0] # <noncharacter-FDD0, LATIN CAPITAL LETTER Z>
2F30 ; [.989B.0020.0004.2F30] # KANGXI RADICAL ONESELF
2F31 ; [.9B91.0020.0004.2F31] # KANGXI RADICAL TURBAN
2F32 ; [.90EE.0020.0004.2F32] # KANGXI RADICAL DRY
-337B ; [.AD6D.0020.001C.337B][.866D.0020.001F.337B] # SQUARE ERA NAME HEISEI
+337B ; [.AD6D.0020.001C.337B][.866D.0020.001C.337B] # SQUARE ERA NAME HEISEI
2F33 ; [.C50D.0020.0004.2F33] # KANGXI RADICAL SHORT THREAD
3245 ; [.C8EA.0020.0006.3245] # CIRCLED IDEOGRAPH KINDERGARTEN
2F34 ; [.9307.0020.0004.2F34] # KANGXI RADICAL DOTTED CLIFF
@@ -498,9 +498,9 @@ FDD0 005A ; [.CB22.0020.0002.FDD0] # <noncharacter-FDD0, LATIN CAPITAL LETTER Z>
2F46 ; [.BDD2.0020.0004.2F46] # KANGXI RADICAL NOT
2F47 ; [.B272.0020.0004.2F47] # KANGXI RADICAL SUN
3290 ; [.B272.0020.0006.3290] # CIRCLED IDEOGRAPH SUN
-337E ; [.A8EC.0020.001C.337E][.CE5C.0020.001F.337E] # SQUARE ERA NAME MEIZI
+337E ; [.A8EC.0020.001C.337E][.CE5C.0020.001C.337E] # SQUARE ERA NAME MEIZI
1F219 ; [.C83C.0020.001C.1F219] # SQUARED CJK UNIFIED IDEOGRAPH-6620
-337C ; [.CCD5.0020.001C.337C][.949E.0020.001F.337C] # SQUARE ERA NAME SYOUWA
+337C ; [.CCD5.0020.001C.337C][.949E.0020.001C.337C] # SQUARE ERA NAME SYOUWA
2F48 ; [.CA8E.0020.0004.2F48] # KANGXI RADICAL SAY
2F49 ; [.CA96.0020.0004.2F49] # KANGXI RADICAL MOON
328A ; [.CA96.0020.0006.328A] # CIRCLED IDEOGRAPH MOON
@@ -510,7 +510,7 @@ FDD0 005A ; [.CB22.0020.0002.FDD0] # <noncharacter-FDD0, LATIN CAPITAL LETTER Z>
2F4A ; [.A98A.0020.0004.2F4A] # KANGXI RADICAL TREE
328D ; [.A98A.0020.0006.328D] # CIRCLED IDEOGRAPH WOOD
3291 ; [.CF58.0020.0006.3291] # CIRCLED IDEOGRAPH STOCK
-337F ; [.CF58.0020.001C.337F][.B5B3.0020.001F.337F][.9737.0020.001F.337F][.B4AC.0020.001F.337F] # SQUARE CORPORATION
+337F ; [.CF58.0020.001C.337F][.B5B3.0020.001C.337F][.9737.0020.001C.337F][.B4AC.0020.001C.337F] # SQUARE CORPORATION
2F4B ; [.AF4C.0020.0004.2F4B] # KANGXI RADICAL LACK
2F4C ; [.CE2E.0020.0004.2F4C] # KANGXI RADICAL STOP
32A3 ; [.CDCB.0020.0006.32A3] # CIRCLED IDEOGRAPH CORRECT
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_strk.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_strk.pl
index c1ff7ff3121..7f5d8a4f94b 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_strk.pl
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_strk.pl
@@ -1,214 +1,214 @@
use Unicode::Collate::CJK::Stroke;
+{
- locale_version => 0.88,
+ locale_version => 0.93,
overrideCJK => \&Unicode::Collate::CJK::Stroke::weightStroke,
- entry => <<'ENTRY', # for DUCET v6.1.0
-0101 ; [.15D4.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-0061 0304 ; [.15D4.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
-0100 ; [.15D4.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-0041 0304 ; [.15D4.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
-00E1 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0301 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-0061 0341 ; [.15D4.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
-00C1 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0301 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-0041 0341 ; [.15D4.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
-01CE ; [.15D4.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
-0061 030C ; [.15D4.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
-01CD ; [.15D4.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
-0041 030C ; [.15D4.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
-00E0 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0300 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-0061 0340 ; [.15D4.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
-00C0 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0300 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0041 0340 ; [.15D4.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
-0113 ; [.1631.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-0065 0304 ; [.1631.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
-0112 ; [.1631.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-0045 0304 ; [.1631.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
-00E9 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0301 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-0065 0341 ; [.1631.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
-00C9 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0301 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-0045 0341 ; [.1631.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
-011B ; [.1631.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
-0065 030C ; [.1631.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
-011A ; [.1631.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
-0045 030C ; [.1631.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
-00E8 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-0065 0300 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-0065 0340 ; [.1631.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
-00C8 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-0045 0300 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-0045 0340 ; [.1631.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
-00EA 0304 ; [.1631.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
-00CA 0304 ; [.1631.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
-0065 0302 0304 ; [.1631.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
-0045 0302 0304 ; [.1631.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
-1EBF ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-0065 0302 0301 ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-0065 0302 0341 ; [.1631.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBE ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-0045 0302 0301 ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-0045 0302 0341 ; [.1631.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-00EA 0301 ; [.1631.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
-00EA 0341 ; [.1631.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
-00CA 0301 ; [.1631.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
-00CA 0341 ; [.1631.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
-00EA 030C ; [.1631.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
-00CA 030C ; [.1631.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
-0065 0302 030C ; [.1631.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
-0045 0302 030C ; [.1631.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
-1EC1 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-0065 0302 0300 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-0065 0302 0340 ; [.1631.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC0 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-0045 0302 0300 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-0045 0302 0340 ; [.1631.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-00EA 0300 ; [.1631.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
-00EA 0340 ; [.1631.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
-00CA 0300 ; [.1631.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
-00CA 0340 ; [.1631.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
-00EA ; [.1631.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0065 0302 ; [.1631.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-00CA ; [.1631.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0045 0302 ; [.1631.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-1EC5 ; [.1631.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC4 ; [.1631.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC3 ; [.1631.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC2 ; [.1631.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC7 ; [.1631.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC6 ; [.1631.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-012B ; [.16B2.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-0069 0304 ; [.16B2.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
-012A ; [.16B2.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-0049 0304 ; [.16B2.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
-00ED ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0301 ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-0069 0341 ; [.16B2.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
-00CD ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0301 ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-0049 0341 ; [.16B2.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
-01D0 ; [.16B2.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
-0069 030C ; [.16B2.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
-01CF ; [.16B2.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
-0049 030C ; [.16B2.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
-00EC ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-0069 0300 ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-0069 0340 ; [.16B2.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
-00CC ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-0049 0300 ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-0049 0340 ; [.16B2.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
-006D 0304 ; [.1726.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
-004D 0304 ; [.1726.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
-1E3F ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-006D 0301 ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-006D 0341 ; [.1726.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
-1E3E ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-004D 0301 ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-004D 0341 ; [.1726.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
-006D 030C ; [.1726.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
-004D 030C ; [.1726.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
-006D 0300 ; [.1726.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
-006D 0340 ; [.1726.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
-004D 0300 ; [.1726.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
-004D 0340 ; [.1726.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
-006E 0304 ; [.1734.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
-004E 0304 ; [.1734.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
-0144 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0301 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-006E 0341 ; [.1734.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
-0143 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0301 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-004E 0341 ; [.1734.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
-0148 ; [.1734.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
-006E 030C ; [.1734.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
-0147 ; [.1734.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
-004E 030C ; [.1734.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
-01F9 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-006E 0300 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-006E 0340 ; [.1734.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
-01F8 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-004E 0300 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-004E 0340 ; [.1734.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
-014D ; [.1756.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-006F 0304 ; [.1756.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
-014C ; [.1756.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-004F 0304 ; [.1756.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
-00F3 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0301 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-006F 0341 ; [.1756.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
-00D3 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0301 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-004F 0341 ; [.1756.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
-01D2 ; [.1756.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
-006F 030C ; [.1756.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
-01D1 ; [.1756.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
-004F 030C ; [.1756.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
-00F2 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-006F 0300 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-006F 0340 ; [.1756.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
-00D2 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-004F 0300 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-004F 0340 ; [.1756.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
-016B ; [.181B.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-0075 0304 ; [.181B.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
-016A ; [.181B.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-0055 0304 ; [.181B.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
-00FA ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0301 ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-0075 0341 ; [.181B.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
-00DA ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0301 ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-0055 0341 ; [.181B.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
-01D4 ; [.181B.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
-0075 030C ; [.181B.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
-01D3 ; [.181B.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
-0055 030C ; [.181B.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
-00F9 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-0075 0300 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-0075 0340 ; [.181B.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
-00D9 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-0055 0300 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-0055 0340 ; [.181B.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
-01D6 ; [.181B.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-0075 0308 0304 ; [.181B.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.181B.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-0055 0308 0304 ; [.181B.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-00FC 0304 ; [.181B.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
-00DC 0304 ; [.181B.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
-01D8 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-0075 0308 0301 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-0075 0308 0341 ; [.181B.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-0055 0308 0301 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-0055 0308 0341 ; [.181B.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-00FC 0301 ; [.181B.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
-00FC 0341 ; [.181B.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
-00DC 0301 ; [.181B.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
-00DC 0341 ; [.181B.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
-01DA ; [.181B.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-0075 0308 030C ; [.181B.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.181B.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-0055 0308 030C ; [.181B.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-00FC 030C ; [.181B.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
-00DC 030C ; [.181B.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
-01DC ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-0075 0308 0300 ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-0075 0308 0340 ; [.181B.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-0055 0308 0300 ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-0055 0308 0340 ; [.181B.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-00FC 0300 ; [.181B.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
-00FC 0340 ; [.181B.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
-00DC 0300 ; [.181B.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
-00DC 0340 ; [.181B.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
-00FC ; [.181B.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-0075 0308 ; [.181B.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.181B.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-0055 0308 ; [.181B.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+ entry => <<'ENTRY', # for DUCET v6.2.0
+0101 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0061 0304 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0100 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+0041 0304 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+00E1 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0301 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0301 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+01CE ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+0061 030C ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+01CD ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+0041 030C ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+00E0 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0300 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0340 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+00C0 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0300 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0340 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0113 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0065 0304 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0112 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+0045 0304 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+00E9 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0301 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0301 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+011B ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+0065 030C ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+011A ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+0045 030C ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+00E8 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0300 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0340 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+00C8 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0300 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0340 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+00EA 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+00CA 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+0065 0302 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+0045 0302 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+1EBF ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0301 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0341 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0301 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0341 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+00EA 0301 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00EA 0341 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00CA 0301 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00CA 0341 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00EA 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+00CA 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+0065 0302 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+0045 0302 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+1EC1 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0300 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0340 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0300 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0340 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+00EA 0300 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00EA 0340 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00CA 0300 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00CA 0340 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00EA ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC5 ; [.164C.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.164C.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.164C.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.164C.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.164C.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.164C.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+012B ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+0069 0304 ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+012A ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+0049 0304 ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+00ED ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0301 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0341 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0301 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0341 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+01D0 ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+0069 030C ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+01CF ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+0049 030C ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+00EC ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0300 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0340 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+00CC ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0300 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0340 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+006D 0304 ; [.1741.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
+004D 0304 ; [.1741.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
+1E3F ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0301 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0341 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+1E3E ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0301 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0341 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+006D 030C ; [.1741.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
+004D 030C ; [.1741.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
+006D 0300 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
+006D 0340 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
+004D 0300 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
+004D 0340 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
+006E 0304 ; [.174F.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
+004E 0304 ; [.174F.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
+0144 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0301 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0341 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+0143 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0301 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0341 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+0148 ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+006E 030C ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+0147 ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+004E 030C ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+01F9 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0300 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0340 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+01F8 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0300 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0340 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+014D ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+006F 0304 ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+014C ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+004F 0304 ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+00F3 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+01D2 ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+006F 030C ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+01D1 ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+004F 030C ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+00F2 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0300 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0340 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+00D2 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0300 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0340 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+016B ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+0075 0304 ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+0055 0304 ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+00FA ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0301 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0341 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0301 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0341 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+01D4 ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+0075 030C ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+01D3 ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+0055 030C ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+00F9 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0300 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0340 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+00D9 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0300 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0340 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+01D6 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+0075 0308 0304 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+0055 0308 0304 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+00FC 0304 ; [.1836.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
+00DC 0304 ; [.1836.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
+01D8 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0301 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0341 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0301 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0341 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+00FC 0301 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00FC 0341 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+00DC 0301 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00DC 0341 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+01DA ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+0075 0308 030C ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0055 0308 030C ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+00FC 030C ; [.1836.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
+00DC 030C ; [.1836.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
+01DC ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0300 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0340 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0300 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0340 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+00FC 0300 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00FC 0340 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00DC 0300 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00DC 0340 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00FC ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
FDD0 2801 ; [.8000.0020.0002.FDD0] # <noncharacter-FDD0, BRAILLE PATTERN DOTS-1>
2E84 ; [.8007.0020.0002.2E84] # CJK RADICAL SECOND THREE
3006 ; [.8012.0020.0002.3006] # IDEOGRAPHIC CLOSING MARK
@@ -335,74 +335,74 @@ FDD0 2830 ; [.DC82.0020.0002.FDD0] # <noncharacter-FDD0, BRAILLE PATTERN DOTS-56
3236 ; [*02FB.0020.0004.3236][.9B3B.0020.0004.3236][*02FC.0020.001F.3236] # PARENTHESIZED IDEOGRAPH FINANCIAL
323E ; [*02FB.0020.0004.323E][.B2A5.0020.0004.323E][*02FC.0020.001F.323E] # PARENTHESIZED IDEOGRAPH RESOURCE
322E ; [*02FB.0020.0004.322E][.8E33.0020.0004.322E][*02FC.0020.001F.322E] # PARENTHESIZED IDEOGRAPH METAL
-3358 ; [.15CA.0020.0004.3358][.9216.0020.0004.3358] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
-33E9 ; [.15CB.0020.0004.33E9][.15CA.0020.0004.33E9][.815C.0020.001F.33E9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
-32C9 ; [.15CB.0020.0004.32C9][.15CA.0020.0004.32C9][.815F.0020.001F.32C9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
-3362 ; [.15CB.0020.0004.3362][.15CA.0020.0004.3362][.9216.0020.001F.3362] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
-33EA ; [.15CB.0020.0004.33EA][.15CB.0020.0004.33EA][.815C.0020.001F.33EA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
-32CA ; [.15CB.0020.0004.32CA][.15CB.0020.0004.32CA][.815F.0020.001F.32CA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
-3363 ; [.15CB.0020.0004.3363][.15CB.0020.0004.3363][.9216.0020.001F.3363] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
-33EB ; [.15CB.0020.0004.33EB][.15CC.0020.0004.33EB][.815C.0020.001F.33EB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
-32CB ; [.15CB.0020.0004.32CB][.15CC.0020.0004.32CB][.815F.0020.001F.32CB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
-3364 ; [.15CB.0020.0004.3364][.15CC.0020.0004.3364][.9216.0020.001F.3364] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
-33EC ; [.15CB.0020.0004.33EC][.15CD.0020.0004.33EC][.815C.0020.001F.33EC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
-3365 ; [.15CB.0020.0004.3365][.15CD.0020.0004.3365][.9216.0020.001F.3365] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
-33ED ; [.15CB.0020.0004.33ED][.15CE.0020.0004.33ED][.815C.0020.001F.33ED] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
-3366 ; [.15CB.0020.0004.3366][.15CE.0020.0004.3366][.9216.0020.001F.3366] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
-33EE ; [.15CB.0020.0004.33EE][.15CF.0020.0004.33EE][.815C.0020.001F.33EE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
-3367 ; [.15CB.0020.0004.3367][.15CF.0020.0004.3367][.9216.0020.001F.3367] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
-33EF ; [.15CB.0020.0004.33EF][.15D0.0020.0004.33EF][.815C.0020.001F.33EF] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
-3368 ; [.15CB.0020.0004.3368][.15D0.0020.0004.3368][.9216.0020.001F.3368] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
-33F0 ; [.15CB.0020.0004.33F0][.15D1.0020.0004.33F0][.815C.0020.001F.33F0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
-3369 ; [.15CB.0020.0004.3369][.15D1.0020.0004.3369][.9216.0020.001F.3369] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
-33F1 ; [.15CB.0020.0004.33F1][.15D2.0020.0004.33F1][.815C.0020.001F.33F1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
-336A ; [.15CB.0020.0004.336A][.15D2.0020.0004.336A][.9216.0020.001F.336A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
-33F2 ; [.15CB.0020.0004.33F2][.15D3.0020.0004.33F2][.815C.0020.001F.33F2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
-336B ; [.15CB.0020.0004.336B][.15D3.0020.0004.336B][.9216.0020.001F.336B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
-33E0 ; [.15CB.0020.0004.33E0][.815C.0020.0004.33E0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
-32C0 ; [.15CB.0020.0004.32C0][.815F.0020.0004.32C0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
-3359 ; [.15CB.0020.0004.3359][.9216.0020.0004.3359] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
-33F3 ; [.15CC.0020.0004.33F3][.15CA.0020.0004.33F3][.815C.0020.001F.33F3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
-336C ; [.15CC.0020.0004.336C][.15CA.0020.0004.336C][.9216.0020.001F.336C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
-33F4 ; [.15CC.0020.0004.33F4][.15CB.0020.0004.33F4][.815C.0020.001F.33F4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
-336D ; [.15CC.0020.0004.336D][.15CB.0020.0004.336D][.9216.0020.001F.336D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
-33F5 ; [.15CC.0020.0004.33F5][.15CC.0020.0004.33F5][.815C.0020.001F.33F5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
-336E ; [.15CC.0020.0004.336E][.15CC.0020.0004.336E][.9216.0020.001F.336E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
-33F6 ; [.15CC.0020.0004.33F6][.15CD.0020.0004.33F6][.815C.0020.001F.33F6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
-336F ; [.15CC.0020.0004.336F][.15CD.0020.0004.336F][.9216.0020.001F.336F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
-33F7 ; [.15CC.0020.0004.33F7][.15CE.0020.0004.33F7][.815C.0020.001F.33F7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
-3370 ; [.15CC.0020.0004.3370][.15CE.0020.0004.3370][.9216.0020.001F.3370] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
-33F8 ; [.15CC.0020.0004.33F8][.15CF.0020.0004.33F8][.815C.0020.001F.33F8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
-33F9 ; [.15CC.0020.0004.33F9][.15D0.0020.0004.33F9][.815C.0020.001F.33F9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
-33FA ; [.15CC.0020.0004.33FA][.15D1.0020.0004.33FA][.815C.0020.001F.33FA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
-33FB ; [.15CC.0020.0004.33FB][.15D2.0020.0004.33FB][.815C.0020.001F.33FB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
-33FC ; [.15CC.0020.0004.33FC][.15D3.0020.0004.33FC][.815C.0020.001F.33FC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
-33E1 ; [.15CC.0020.0004.33E1][.815C.0020.0004.33E1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
-32C1 ; [.15CC.0020.0004.32C1][.815F.0020.0004.32C1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
-335A ; [.15CC.0020.0004.335A][.9216.0020.0004.335A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
-33FD ; [.15CD.0020.0004.33FD][.15CA.0020.0004.33FD][.815C.0020.001F.33FD] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
-33FE ; [.15CD.0020.0004.33FE][.15CB.0020.0004.33FE][.815C.0020.001F.33FE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
-33E2 ; [.15CD.0020.0004.33E2][.815C.0020.0004.33E2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
-32C2 ; [.15CD.0020.0004.32C2][.815F.0020.0004.32C2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
-335B ; [.15CD.0020.0004.335B][.9216.0020.0004.335B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
-33E3 ; [.15CE.0020.0004.33E3][.815C.0020.0004.33E3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
-32C3 ; [.15CE.0020.0004.32C3][.815F.0020.0004.32C3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
-335C ; [.15CE.0020.0004.335C][.9216.0020.0004.335C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
-33E4 ; [.15CF.0020.0004.33E4][.815C.0020.0004.33E4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
-32C4 ; [.15CF.0020.0004.32C4][.815F.0020.0004.32C4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
-335D ; [.15CF.0020.0004.335D][.9216.0020.0004.335D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
-33E5 ; [.15D0.0020.0004.33E5][.815C.0020.0004.33E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
-32C5 ; [.15D0.0020.0004.32C5][.815F.0020.0004.32C5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
-335E ; [.15D0.0020.0004.335E][.9216.0020.0004.335E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
-33E6 ; [.15D1.0020.0004.33E6][.815C.0020.0004.33E6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
-32C6 ; [.15D1.0020.0004.32C6][.815F.0020.0004.32C6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
-335F ; [.15D1.0020.0004.335F][.9216.0020.0004.335F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
-33E7 ; [.15D2.0020.0004.33E7][.815C.0020.0004.33E7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
-32C7 ; [.15D2.0020.0004.32C7][.815F.0020.0004.32C7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
-3360 ; [.15D2.0020.0004.3360][.9216.0020.0004.3360] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
-33E8 ; [.15D3.0020.0004.33E8][.815C.0020.0004.33E8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
-32C8 ; [.15D3.0020.0004.32C8][.815F.0020.0004.32C8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
-3361 ; [.15D3.0020.0004.3361][.9216.0020.0004.3361] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+3358 ; [.15E5.0020.0004.3358][.9216.0020.001F.3358] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+33E9 ; [.15E6.0020.0004.33E9][.15E5.0020.0004.33E9][.815C.0020.001F.33E9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+32C9 ; [.15E6.0020.0004.32C9][.15E5.0020.0004.32C9][.815F.0020.001F.32C9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+3362 ; [.15E6.0020.0004.3362][.15E5.0020.0004.3362][.9216.0020.001F.3362] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+33EA ; [.15E6.0020.0004.33EA][.15E6.0020.0004.33EA][.815C.0020.001F.33EA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+32CA ; [.15E6.0020.0004.32CA][.15E6.0020.0004.32CA][.815F.0020.001F.32CA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+3363 ; [.15E6.0020.0004.3363][.15E6.0020.0004.3363][.9216.0020.001F.3363] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+33EB ; [.15E6.0020.0004.33EB][.15E7.0020.0004.33EB][.815C.0020.001F.33EB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+32CB ; [.15E6.0020.0004.32CB][.15E7.0020.0004.32CB][.815F.0020.001F.32CB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+3364 ; [.15E6.0020.0004.3364][.15E7.0020.0004.3364][.9216.0020.001F.3364] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+33EC ; [.15E6.0020.0004.33EC][.15E8.0020.0004.33EC][.815C.0020.001F.33EC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+3365 ; [.15E6.0020.0004.3365][.15E8.0020.0004.3365][.9216.0020.001F.3365] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+33ED ; [.15E6.0020.0004.33ED][.15E9.0020.0004.33ED][.815C.0020.001F.33ED] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+3366 ; [.15E6.0020.0004.3366][.15E9.0020.0004.3366][.9216.0020.001F.3366] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+33EE ; [.15E6.0020.0004.33EE][.15EA.0020.0004.33EE][.815C.0020.001F.33EE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+3367 ; [.15E6.0020.0004.3367][.15EA.0020.0004.3367][.9216.0020.001F.3367] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+33EF ; [.15E6.0020.0004.33EF][.15EB.0020.0004.33EF][.815C.0020.001F.33EF] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+3368 ; [.15E6.0020.0004.3368][.15EB.0020.0004.3368][.9216.0020.001F.3368] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+33F0 ; [.15E6.0020.0004.33F0][.15EC.0020.0004.33F0][.815C.0020.001F.33F0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+3369 ; [.15E6.0020.0004.3369][.15EC.0020.0004.3369][.9216.0020.001F.3369] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+33F1 ; [.15E6.0020.0004.33F1][.15ED.0020.0004.33F1][.815C.0020.001F.33F1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+336A ; [.15E6.0020.0004.336A][.15ED.0020.0004.336A][.9216.0020.001F.336A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+33F2 ; [.15E6.0020.0004.33F2][.15EE.0020.0004.33F2][.815C.0020.001F.33F2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+336B ; [.15E6.0020.0004.336B][.15EE.0020.0004.336B][.9216.0020.001F.336B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+33E0 ; [.15E6.0020.0004.33E0][.815C.0020.001F.33E0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+32C0 ; [.15E6.0020.0004.32C0][.815F.0020.001F.32C0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+3359 ; [.15E6.0020.0004.3359][.9216.0020.001F.3359] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+33F3 ; [.15E7.0020.0004.33F3][.15E5.0020.0004.33F3][.815C.0020.001F.33F3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+336C ; [.15E7.0020.0004.336C][.15E5.0020.0004.336C][.9216.0020.001F.336C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+33F4 ; [.15E7.0020.0004.33F4][.15E6.0020.0004.33F4][.815C.0020.001F.33F4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+336D ; [.15E7.0020.0004.336D][.15E6.0020.0004.336D][.9216.0020.001F.336D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+33F5 ; [.15E7.0020.0004.33F5][.15E7.0020.0004.33F5][.815C.0020.001F.33F5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+336E ; [.15E7.0020.0004.336E][.15E7.0020.0004.336E][.9216.0020.001F.336E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+33F6 ; [.15E7.0020.0004.33F6][.15E8.0020.0004.33F6][.815C.0020.001F.33F6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+336F ; [.15E7.0020.0004.336F][.15E8.0020.0004.336F][.9216.0020.001F.336F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+33F7 ; [.15E7.0020.0004.33F7][.15E9.0020.0004.33F7][.815C.0020.001F.33F7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+3370 ; [.15E7.0020.0004.3370][.15E9.0020.0004.3370][.9216.0020.001F.3370] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+33F8 ; [.15E7.0020.0004.33F8][.15EA.0020.0004.33F8][.815C.0020.001F.33F8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+33F9 ; [.15E7.0020.0004.33F9][.15EB.0020.0004.33F9][.815C.0020.001F.33F9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+33FA ; [.15E7.0020.0004.33FA][.15EC.0020.0004.33FA][.815C.0020.001F.33FA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+33FB ; [.15E7.0020.0004.33FB][.15ED.0020.0004.33FB][.815C.0020.001F.33FB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+33FC ; [.15E7.0020.0004.33FC][.15EE.0020.0004.33FC][.815C.0020.001F.33FC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33E1 ; [.15E7.0020.0004.33E1][.815C.0020.001F.33E1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+32C1 ; [.15E7.0020.0004.32C1][.815F.0020.001F.32C1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+335A ; [.15E7.0020.0004.335A][.9216.0020.001F.335A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+33FD ; [.15E8.0020.0004.33FD][.15E5.0020.0004.33FD][.815C.0020.001F.33FD] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+33FE ; [.15E8.0020.0004.33FE][.15E6.0020.0004.33FE][.815C.0020.001F.33FE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+33E2 ; [.15E8.0020.0004.33E2][.815C.0020.001F.33E2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+32C2 ; [.15E8.0020.0004.32C2][.815F.0020.001F.32C2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+335B ; [.15E8.0020.0004.335B][.9216.0020.001F.335B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+33E3 ; [.15E9.0020.0004.33E3][.815C.0020.001F.33E3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+32C3 ; [.15E9.0020.0004.32C3][.815F.0020.001F.32C3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+335C ; [.15E9.0020.0004.335C][.9216.0020.001F.335C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+33E4 ; [.15EA.0020.0004.33E4][.815C.0020.001F.33E4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+32C4 ; [.15EA.0020.0004.32C4][.815F.0020.001F.32C4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+335D ; [.15EA.0020.0004.335D][.9216.0020.001F.335D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+33E5 ; [.15EB.0020.0004.33E5][.815C.0020.001F.33E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+32C5 ; [.15EB.0020.0004.32C5][.815F.0020.001F.32C5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+335E ; [.15EB.0020.0004.335E][.9216.0020.001F.335E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+33E6 ; [.15EC.0020.0004.33E6][.815C.0020.001F.33E6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+32C6 ; [.15EC.0020.0004.32C6][.815F.0020.001F.32C6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+335F ; [.15EC.0020.0004.335F][.9216.0020.001F.335F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+33E7 ; [.15ED.0020.0004.33E7][.815C.0020.001F.33E7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+32C7 ; [.15ED.0020.0004.32C7][.815F.0020.001F.32C7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+3360 ; [.15ED.0020.0004.3360][.9216.0020.001F.3360] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+33E8 ; [.15EE.0020.0004.33E8][.815C.0020.001F.33E8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+32C8 ; [.15EE.0020.0004.32C8][.815F.0020.001F.32C8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+3361 ; [.15EE.0020.0004.3361][.9216.0020.001F.3361] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
1F241 ; [*0359.0020.0004.1F241][.8054.0020.0004.1F241][*035A.0020.001F.1F241] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09
1F242 ; [*0359.0020.0004.1F242][.802A.0020.0004.1F242][*035A.0020.001F.1F242] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C
1F247 ; [*0359.0020.0004.1F247][.A465.0020.0004.1F247][*035A.0020.001F.1F247] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD
@@ -507,7 +507,7 @@ FDD0 2830 ; [.DC82.0020.0002.FDD0] # <noncharacter-FDD0, BRAILLE PATTERN DOTS-56
1F215 ; [.83C8.0020.001C.1F215] # SQUARED CJK UNIFIED IDEOGRAPH-591A
32B0 ; [.8A3E.0020.0006.32B0] # CIRCLED IDEOGRAPH NIGHT
2F24 ; [.8086.0020.0004.2F24] # KANGXI RADICAL BIG
-337D ; [.8086.0020.001C.337D][.8288.0020.001F.337D] # SQUARE ERA NAME TAISYOU
+337D ; [.8086.0020.001C.337D][.8288.0020.001C.337D] # SQUARE ERA NAME TAISYOU
319D ; [.8130.0020.0014.319D] # IDEOGRAPHIC ANNOTATION HEAVEN MARK
1F217 ; [.8130.0020.001C.1F217] # SQUARED CJK UNIFIED IDEOGRAPH-5929
2F25 ; [.8088.0020.0004.2F25] # KANGXI RADICAL WOMAN
@@ -530,7 +530,7 @@ FDD0 2830 ; [.DC82.0020.0002.FDD0] # <noncharacter-FDD0, BRAILLE PATTERN DOTS-56
2F30 ; [.809C.0020.0004.2F30] # KANGXI RADICAL ONESELF
2F31 ; [.809F.0020.0004.2F31] # KANGXI RADICAL TURBAN
2F32 ; [.80A0.0020.0004.2F32] # KANGXI RADICAL DRY
-337B ; [.825F.0020.001C.337B][.8435.0020.001F.337B] # SQUARE ERA NAME HEISEI
+337B ; [.825F.0020.001C.337B][.8435.0020.001C.337B] # SQUARE ERA NAME HEISEI
2F33 ; [.80A2.0020.0004.2F33] # KANGXI RADICAL SHORT THREAD
3245 ; [.8260.0020.0006.3245] # CIRCLED IDEOGRAPH KINDERGARTEN
2F34 ; [.80A3.0020.0004.2F34] # KANGXI RADICAL DOTTED CLIFF
@@ -564,9 +564,9 @@ FDD0 2830 ; [.DC82.0020.0002.FDD0] # <noncharacter-FDD0, BRAILLE PATTERN DOTS-56
2F46 ; [.8159.0020.0004.2F46] # KANGXI RADICAL NOT
2F47 ; [.815C.0020.0004.2F47] # KANGXI RADICAL SUN
3290 ; [.815C.0020.0006.3290] # CIRCLED IDEOGRAPH SUN
-337E ; [.8BBF.0020.001C.337E][.8C54.0020.001F.337E] # SQUARE ERA NAME MEIZI
+337E ; [.8BBF.0020.001C.337E][.8C54.0020.001C.337E] # SQUARE ERA NAME MEIZI
1F219 ; [.90F3.0020.001C.1F219] # SQUARED CJK UNIFIED IDEOGRAPH-6620
-337C ; [.9100.0020.001C.337C][.89E5.0020.001F.337C] # SQUARE ERA NAME SYOUWA
+337C ; [.9100.0020.001C.337C][.89E5.0020.001C.337C] # SQUARE ERA NAME SYOUWA
2F48 ; [.815D.0020.0004.2F48] # KANGXI RADICAL SAY
2F49 ; [.815F.0020.0004.2F49] # KANGXI RADICAL MOON
328A ; [.815F.0020.0006.328A] # CIRCLED IDEOGRAPH MOON
@@ -576,7 +576,7 @@ FDD0 2830 ; [.DC82.0020.0002.FDD0] # <noncharacter-FDD0, BRAILLE PATTERN DOTS-56
2F4A ; [.8160.0020.0004.2F4A] # KANGXI RADICAL TREE
328D ; [.8160.0020.0006.328D] # CIRCLED IDEOGRAPH WOOD
3291 ; [.979F.0020.0006.3291] # CIRCLED IDEOGRAPH STOCK
-337F ; [.979F.0020.001C.337F][.841D.0020.001F.337F][.8335.0020.001F.337F][.8D2E.0020.001F.337F] # SQUARE CORPORATION
+337F ; [.979F.0020.001C.337F][.841D.0020.001C.337F][.8335.0020.001C.337F][.8D2E.0020.001C.337F] # SQUARE CORPORATION
2F4B ; [.8163.0020.0004.2F4B] # KANGXI RADICAL LACK
2F4C ; [.8164.0020.0004.2F4C] # KANGXI RADICAL STOP
32A3 ; [.8288.0020.0006.32A3] # CIRCLED IDEOGRAPH CORRECT
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl
new file mode 100644
index 00000000000..31006d21cc0
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl
@@ -0,0 +1,1563 @@
+use Unicode::Collate::CJK::Zhuyin;
++{
+ locale_version => 0.94,
+ overrideCJK => \&Unicode::Collate::CJK::Zhuyin::weightZhuyin,
+ entry => <<'ENTRY', # for DUCET v6.2.0
+02C9 ; [.0000.0199.0002.02C9] # MODIFIER LETTER MACRON
+02CA ; [.019A.0020.0002.02CA] # MODIFIER LETTER ACUTE ACCENT
+02C7 ; [.019B.0020.0002.02C7] # CARON
+02CB ; [.019C.0020.0002.02CB] # MODIFIER LETTER GRAVE ACCENT
+02D9 ; [.019D.0020.0002.02D9] # DOT ABOVE
+02EA ; [.019E.0020.0002.02EA] # MODIFIER LETTER YIN DEPARTING TONE MARK
+02EB ; [.019F.0020.0002.02EB] # MODIFIER LETTER YANG DEPARTING TONE MARK
+0101 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0061 0304 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0100 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+0041 0304 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+00E1 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0301 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0301 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+01CE ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+0061 030C ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+01CD ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+0041 030C ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+00E0 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0300 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0340 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+00C0 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0300 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0340 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0113 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0065 0304 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0112 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+0045 0304 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+00E9 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0301 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0301 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+011B ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+0065 030C ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+011A ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+0045 030C ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+00E8 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0300 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0340 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+00C8 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0300 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0340 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+00EA 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+00CA 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+0065 0302 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+0045 0302 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+1EBF ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0301 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0341 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0301 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0341 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+00EA 0301 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00EA 0341 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00CA 0301 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00CA 0341 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00EA 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+00CA 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+0065 0302 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+0045 0302 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+1EC1 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0300 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0340 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0300 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0340 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+00EA 0300 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00EA 0340 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00CA 0300 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00CA 0340 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00EA ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC5 ; [.164C.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.164C.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.164C.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.164C.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.164C.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.164C.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+012B ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+0069 0304 ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+012A ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+0049 0304 ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+00ED ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0301 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0341 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0301 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0341 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+01D0 ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+0069 030C ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+01CF ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+0049 030C ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+00EC ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0300 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0340 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+00CC ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0300 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0340 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+006D 0304 ; [.1741.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
+004D 0304 ; [.1741.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
+1E3F ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0301 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0341 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+1E3E ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0301 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0341 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+006D 030C ; [.1741.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
+004D 030C ; [.1741.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
+006D 0300 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
+006D 0340 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
+004D 0300 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
+004D 0340 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
+006E 0304 ; [.174F.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
+004E 0304 ; [.174F.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
+0144 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0301 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0341 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+0143 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0301 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0341 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+0148 ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+006E 030C ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+0147 ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+004E 030C ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+01F9 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0300 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0340 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+01F8 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0300 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0340 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+014D ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+006F 0304 ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+014C ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+004F 0304 ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+00F3 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+01D2 ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+006F 030C ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+01D1 ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+004F 030C ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+00F2 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0300 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0340 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+00D2 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0300 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0340 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+016B ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+0075 0304 ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+0055 0304 ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+00FA ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0301 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0341 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0301 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0341 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+01D4 ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+0075 030C ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+01D3 ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+0055 030C ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+00F9 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0300 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0340 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+00D9 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0300 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0340 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+01D6 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+0075 0308 0304 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+0055 0308 0304 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+00FC 0304 ; [.1836.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
+00DC 0304 ; [.1836.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
+01D8 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0301 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0341 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0301 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0341 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+00FC 0301 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00FC 0341 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+00DC 0301 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00DC 0341 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+01DA ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+0075 0308 030C ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0055 0308 030C ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+00FC 030C ; [.1836.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
+00DC 030C ; [.1836.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
+01DC ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0300 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0340 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0300 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0340 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+00FC 0300 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00FC 0340 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00DC 0300 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00DC 0340 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00FC ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+FDD0 3105 ; [.8000.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER B>
+2E8A ; [.80B5.0020.0002.2E8A] # CJK RADICAL DIVINATION
+FDD0 3106 ; [.83B1.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER P>
+FDD0 3107 ; [.8626.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER M>
+FDD0 3108 ; [.897F.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER F>
+2ECF ; [.8BC0.0020.0002.2ECF] # CJK RADICAL CITY
+2ED6 ; [.8BC1.0020.0002.2ED6] # CJK RADICAL MOUND TWO
+FDD0 3109 ; [.8C0D.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER D>
+2E88 ; [.8C86.0020.0002.2E88] # CJK RADICAL KNIFE ONE
+FDD0 310A ; [.901F.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER T>
+FDD0 310B ; [.93D9.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER N>
+2EA7 ; [.9525.0020.0002.2EA7] # CJK RADICAL COW
+FDD0 310C ; [.95D9.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER L>
+3007 ; [.9A41.0020.0002.3007] # IDEOGRAPHIC NUMBER ZERO
+FDD0 310D ; [.9C5F.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER G>
+2EE3 ; [.9E0A.0020.0002.2EE3] # CJK RADICAL BONE
+FDD0 310E ; [.9FD2.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER K>
+FDD0 310F ; [.A223.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER H>
+FDD0 3110 ; [.A697.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER J>
+2E95 ; [.A762.0020.0002.2E95] # CJK RADICAL SNOUT TWO
+2E86 ; [.AD18.0020.0002.2E86] # CJK RADICAL BOX
+FDD0 3111 ; [.AD38.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER Q>
+FDD0 3112 ; [.B164.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER X>
+2E8C ; [.B383.0020.0002.2E8C] # CJK RADICAL SMALL ONE
+2E8D ; [.B384.0020.0002.2E8D] # CJK RADICAL SMALL TWO
+FDD0 3113 ; [.B6E9.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER ZH>
+2EA5 ; [.B8AC.0020.0002.2EA5] # CJK RADICAL PAW TWO
+FDD0 3114 ; [.BBAC.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER CH>
+2ECC ; [.BE9D.0020.0002.2ECC] # CJK RADICAL SIMPLIFIED WALK
+2ECD ; [.BE9E.0020.0002.2ECD] # CJK RADICAL WALK ONE
+FDD0 3115 ; [.BF5A.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER SH>
+2EAC ; [.BFBC.0020.0002.2EAC] # CJK RADICAL SPIRIT ONE
+2EAE ; [.BFC1.0020.0002.2EAE] # CJK RADICAL BAMBOO
+FDD0 3116 ; [.C2A2.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER R>
+2E9C ; [.C2A3.0020.0002.2E9C] # CJK RADICAL SUN
+2EBC ; [.C2D3.0020.0002.2EBC] # CJK RADICAL MEAT
+2EB6 ; [.C311.0020.0002.2EB6] # CJK RADICAL SHEEP
+FDD0 3117 ; [.C402.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER Z>
+FDD0 3118 ; [.C630.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER C>
+2EBE ; [.C6CA.0020.0002.2EBE] # CJK RADICAL GRASS ONE
+FDD0 3119 ; [.C7F6.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER S>
+FDD0 311A ; [.CA13.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER A>
+FDD0 311B ; [.CA19.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER O>
+FDD0 311C ; [.CA1E.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER E>
+FDD0 311E ; [.CAA0.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER AI>
+FDD0 311F ; [.CAE8.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER EI>
+FDD0 3120 ; [.CAEB.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER AU>
+FDD0 3121 ; [.CB2E.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER OU>
+FDD0 3122 ; [.CB51.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER AN>
+FDD0 3123 ; [.CB8B.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER EN>
+FDD0 3124 ; [.CB94.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER ANG>
+FDD0 3125 ; [.CBA0.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER ENG>
+FDD0 3126 ; [.CBA2.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER ER>
+FDD0 3127 ; [.CBDB.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER I>
+2E84 ; [.CDB5.0020.0002.2E84] # CJK RADICAL SECOND THREE
+2E80 ; [.CEDF.0020.0002.2E80] # CJK RADICAL REPEAT
+FDD0 3128 ; [.D16F.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER U>
+FDD0 3129 ; [.D403.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER IU>
+2ED7 ; [.D47E.0020.0002.2ED7] # CJK RADICAL RAIN
+2E9D ; [.D53B.0020.0002.2E9D] # CJK RADICAL MOON
+3220 ; [*02FB.0020.0004.3220][.CBDC.0020.0004.3220][*02FC.0020.001F.3220] # PARENTHESIZED IDEOGRAPH ONE
+3226 ; [*02FB.0020.0004.3226][.AD39.0020.0004.3226][*02FC.0020.001F.3226] # PARENTHESIZED IDEOGRAPH SEVEN
+3222 ; [*02FB.0020.0004.3222][.C8DF.0020.0004.3222][*02FC.0020.001F.3222] # PARENTHESIZED IDEOGRAPH THREE
+3228 ; [*02FB.0020.0004.3228][.A95D.0020.0004.3228][*02FC.0020.001F.3228] # PARENTHESIZED IDEOGRAPH NINE
+3221 ; [*02FB.0020.0004.3221][.CBCD.0020.0004.3221][*02FC.0020.001F.3221] # PARENTHESIZED IDEOGRAPH TWO
+3224 ; [*02FB.0020.0004.3224][.D1A9.0020.0004.3224][*02FC.0020.001F.3224] # PARENTHESIZED IDEOGRAPH FIVE
+3239 ; [*02FB.0020.0004.3239][.8C57.0020.0004.3239][*02FC.0020.001F.3239] # PARENTHESIZED IDEOGRAPH REPRESENT
+323D ; [*02FB.0020.0004.323D][.ADC1.0020.0004.323D][*02FC.0020.001F.323D] # PARENTHESIZED IDEOGRAPH ENTERPRISE
+3241 ; [*02FB.0020.0004.3241][.B3A8.0020.0004.3241][*02FC.0020.001F.3241] # PARENTHESIZED IDEOGRAPH REST
+3227 ; [*02FB.0020.0004.3227][.8001.0020.0004.3227][*02FC.0020.001F.3227] # PARENTHESIZED IDEOGRAPH EIGHT
+3225 ; [*02FB.0020.0004.3225][.9953.0020.0004.3225][*02FC.0020.001F.3225] # PARENTHESIZED IDEOGRAPH SIX
+3238 ; [*02FB.0020.0004.3238][.969E.0020.0004.3238][*02FC.0020.001F.3238] # PARENTHESIZED IDEOGRAPH LABOR
+3229 ; [*02FB.0020.0004.3229][.BF85.0020.0004.3229][*02FC.0020.001F.3229] # PARENTHESIZED IDEOGRAPH TEN
+323F ; [*02FB.0020.0004.323F][.B2BC.0020.0004.323F][*02FC.0020.001F.323F] # PARENTHESIZED IDEOGRAPH ALLIANCE
+3234 ; [*02FB.0020.0004.3234][.892A.0020.0004.3234][*02FC.0020.001F.3234] # PARENTHESIZED IDEOGRAPH NAME
+323A ; [*02FB.0020.0004.323A][.A3B5.0020.0004.323A][*02FC.0020.001F.323A] # PARENTHESIZED IDEOGRAPH CALL
+3223 ; [*02FB.0020.0004.3223][.C82E.0020.0004.3223][*02FC.0020.001F.3223] # PARENTHESIZED IDEOGRAPH FOUR
+322F ; [*02FB.0020.0004.322F][.92EA.0020.0004.322F][*02FC.0020.001F.322F] # PARENTHESIZED IDEOGRAPH EARTH
+323B ; [*02FB.0020.0004.323B][.B5F0.0020.0004.323B][*02FC.0020.001F.323B] # PARENTHESIZED IDEOGRAPH STUDY
+3230 ; [*02FB.0020.0004.3230][.C2A4.0020.0004.3230][*02FC.0020.001F.3230] # PARENTHESIZED IDEOGRAPH SUN
+322A ; [*02FB.0020.0004.322A][.D53C.0020.0004.322A][*02FC.0020.001F.322A] # PARENTHESIZED IDEOGRAPH MOON
+3232 ; [*02FB.0020.0004.3232][.CEC7.0020.0004.3232][*02FC.0020.001F.3232] # PARENTHESIZED IDEOGRAPH HAVE
+322D ; [*02FB.0020.0004.322D][.895F.0020.0004.322D][*02FC.0020.001F.322D] # PARENTHESIZED IDEOGRAPH WOOD
+3231 ; [*02FB.0020.0004.3231][.BA36.0020.0004.3231][*02FC.0020.001F.3231] # PARENTHESIZED IDEOGRAPH STOCK
+322C ; [*02FB.0020.0004.322C][.C26E.0020.0004.322C][*02FC.0020.001F.322C] # PARENTHESIZED IDEOGRAPH WATER
+322B ; [*02FB.0020.0004.322B][.A48C.0020.0004.322B][*02FC.0020.001F.322B] # PARENTHESIZED IDEOGRAPH FIRE
+3235 ; [*02FB.0020.0004.3235][.9060.0020.0004.3235][*02FC.0020.001F.3235] # PARENTHESIZED IDEOGRAPH SPECIAL
+323C ; [*02FB.0020.0004.323C][.A9B3.0020.0004.323C][*02FC.0020.001F.323C] # PARENTHESIZED IDEOGRAPH SUPERVISE
+3233 ; [*02FB.0020.0004.3233][.C05E.0020.0004.3233][*02FC.0020.001F.3233] # PARENTHESIZED IDEOGRAPH SOCIETY
+3237 ; [*02FB.0020.0004.3237][.BA90.0020.0004.3237][*02FC.0020.001F.3237] # PARENTHESIZED IDEOGRAPH CONGRATULATION
+3240 ; [*02FB.0020.0004.3240][.A78C.0020.0004.3240][*02FC.0020.001F.3240] # PARENTHESIZED IDEOGRAPH FESTIVAL
+3242 ; [*02FB.0020.0004.3242][.C457.0020.0004.3242][*02FC.0020.001F.3242] # PARENTHESIZED IDEOGRAPH SELF
+3243 ; [*02FB.0020.0004.3243][.B766.0020.0004.3243][*02FC.0020.001F.3243] # PARENTHESIZED IDEOGRAPH REACH
+3236 ; [*02FB.0020.0004.3236][.C69F.0020.0004.3236][*02FC.0020.001F.3236] # PARENTHESIZED IDEOGRAPH FINANCIAL
+323E ; [*02FB.0020.0004.323E][.C421.0020.0004.323E][*02FC.0020.001F.323E] # PARENTHESIZED IDEOGRAPH RESOURCE
+322E ; [*02FB.0020.0004.322E][.AA72.0020.0004.322E][*02FC.0020.001F.322E] # PARENTHESIZED IDEOGRAPH METAL
+3358 ; [.15E5.0020.0004.3358][.8E99.0020.001F.3358] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+33E9 ; [.15E6.0020.0004.33E9][.15E5.0020.0004.33E9][.C2A4.0020.001F.33E9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+32C9 ; [.15E6.0020.0004.32C9][.15E5.0020.0004.32C9][.D53C.0020.001F.32C9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+3362 ; [.15E6.0020.0004.3362][.15E5.0020.0004.3362][.8E99.0020.001F.3362] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+33EA ; [.15E6.0020.0004.33EA][.15E6.0020.0004.33EA][.C2A4.0020.001F.33EA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+32CA ; [.15E6.0020.0004.32CA][.15E6.0020.0004.32CA][.D53C.0020.001F.32CA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+3363 ; [.15E6.0020.0004.3363][.15E6.0020.0004.3363][.8E99.0020.001F.3363] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+33EB ; [.15E6.0020.0004.33EB][.15E7.0020.0004.33EB][.C2A4.0020.001F.33EB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+32CB ; [.15E6.0020.0004.32CB][.15E7.0020.0004.32CB][.D53C.0020.001F.32CB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+3364 ; [.15E6.0020.0004.3364][.15E7.0020.0004.3364][.8E99.0020.001F.3364] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+33EC ; [.15E6.0020.0004.33EC][.15E8.0020.0004.33EC][.C2A4.0020.001F.33EC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+3365 ; [.15E6.0020.0004.3365][.15E8.0020.0004.3365][.8E99.0020.001F.3365] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+33ED ; [.15E6.0020.0004.33ED][.15E9.0020.0004.33ED][.C2A4.0020.001F.33ED] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+3366 ; [.15E6.0020.0004.3366][.15E9.0020.0004.3366][.8E99.0020.001F.3366] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+33EE ; [.15E6.0020.0004.33EE][.15EA.0020.0004.33EE][.C2A4.0020.001F.33EE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+3367 ; [.15E6.0020.0004.3367][.15EA.0020.0004.3367][.8E99.0020.001F.3367] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+33EF ; [.15E6.0020.0004.33EF][.15EB.0020.0004.33EF][.C2A4.0020.001F.33EF] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+3368 ; [.15E6.0020.0004.3368][.15EB.0020.0004.3368][.8E99.0020.001F.3368] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+33F0 ; [.15E6.0020.0004.33F0][.15EC.0020.0004.33F0][.C2A4.0020.001F.33F0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+3369 ; [.15E6.0020.0004.3369][.15EC.0020.0004.3369][.8E99.0020.001F.3369] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+33F1 ; [.15E6.0020.0004.33F1][.15ED.0020.0004.33F1][.C2A4.0020.001F.33F1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+336A ; [.15E6.0020.0004.336A][.15ED.0020.0004.336A][.8E99.0020.001F.336A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+33F2 ; [.15E6.0020.0004.33F2][.15EE.0020.0004.33F2][.C2A4.0020.001F.33F2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+336B ; [.15E6.0020.0004.336B][.15EE.0020.0004.336B][.8E99.0020.001F.336B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+33E0 ; [.15E6.0020.0004.33E0][.C2A4.0020.001F.33E0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+32C0 ; [.15E6.0020.0004.32C0][.D53C.0020.001F.32C0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+3359 ; [.15E6.0020.0004.3359][.8E99.0020.001F.3359] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+33F3 ; [.15E7.0020.0004.33F3][.15E5.0020.0004.33F3][.C2A4.0020.001F.33F3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+336C ; [.15E7.0020.0004.336C][.15E5.0020.0004.336C][.8E99.0020.001F.336C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+33F4 ; [.15E7.0020.0004.33F4][.15E6.0020.0004.33F4][.C2A4.0020.001F.33F4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+336D ; [.15E7.0020.0004.336D][.15E6.0020.0004.336D][.8E99.0020.001F.336D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+33F5 ; [.15E7.0020.0004.33F5][.15E7.0020.0004.33F5][.C2A4.0020.001F.33F5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+336E ; [.15E7.0020.0004.336E][.15E7.0020.0004.336E][.8E99.0020.001F.336E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+33F6 ; [.15E7.0020.0004.33F6][.15E8.0020.0004.33F6][.C2A4.0020.001F.33F6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+336F ; [.15E7.0020.0004.336F][.15E8.0020.0004.336F][.8E99.0020.001F.336F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+33F7 ; [.15E7.0020.0004.33F7][.15E9.0020.0004.33F7][.C2A4.0020.001F.33F7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+3370 ; [.15E7.0020.0004.3370][.15E9.0020.0004.3370][.8E99.0020.001F.3370] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+33F8 ; [.15E7.0020.0004.33F8][.15EA.0020.0004.33F8][.C2A4.0020.001F.33F8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+33F9 ; [.15E7.0020.0004.33F9][.15EB.0020.0004.33F9][.C2A4.0020.001F.33F9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+33FA ; [.15E7.0020.0004.33FA][.15EC.0020.0004.33FA][.C2A4.0020.001F.33FA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+33FB ; [.15E7.0020.0004.33FB][.15ED.0020.0004.33FB][.C2A4.0020.001F.33FB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+33FC ; [.15E7.0020.0004.33FC][.15EE.0020.0004.33FC][.C2A4.0020.001F.33FC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33E1 ; [.15E7.0020.0004.33E1][.C2A4.0020.001F.33E1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+32C1 ; [.15E7.0020.0004.32C1][.D53C.0020.001F.32C1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+335A ; [.15E7.0020.0004.335A][.8E99.0020.001F.335A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+33FD ; [.15E8.0020.0004.33FD][.15E5.0020.0004.33FD][.C2A4.0020.001F.33FD] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+33FE ; [.15E8.0020.0004.33FE][.15E6.0020.0004.33FE][.C2A4.0020.001F.33FE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+33E2 ; [.15E8.0020.0004.33E2][.C2A4.0020.001F.33E2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+32C2 ; [.15E8.0020.0004.32C2][.D53C.0020.001F.32C2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+335B ; [.15E8.0020.0004.335B][.8E99.0020.001F.335B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+33E3 ; [.15E9.0020.0004.33E3][.C2A4.0020.001F.33E3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+32C3 ; [.15E9.0020.0004.32C3][.D53C.0020.001F.32C3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+335C ; [.15E9.0020.0004.335C][.8E99.0020.001F.335C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+33E4 ; [.15EA.0020.0004.33E4][.C2A4.0020.001F.33E4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+32C4 ; [.15EA.0020.0004.32C4][.D53C.0020.001F.32C4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+335D ; [.15EA.0020.0004.335D][.8E99.0020.001F.335D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+33E5 ; [.15EB.0020.0004.33E5][.C2A4.0020.001F.33E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+32C5 ; [.15EB.0020.0004.32C5][.D53C.0020.001F.32C5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+335E ; [.15EB.0020.0004.335E][.8E99.0020.001F.335E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+33E6 ; [.15EC.0020.0004.33E6][.C2A4.0020.001F.33E6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+32C6 ; [.15EC.0020.0004.32C6][.D53C.0020.001F.32C6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+335F ; [.15EC.0020.0004.335F][.8E99.0020.001F.335F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+33E7 ; [.15ED.0020.0004.33E7][.C2A4.0020.001F.33E7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+32C7 ; [.15ED.0020.0004.32C7][.D53C.0020.001F.32C7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+3360 ; [.15ED.0020.0004.3360][.8E99.0020.001F.3360] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+33E8 ; [.15EE.0020.0004.33E8][.C2A4.0020.001F.33E8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+32C8 ; [.15EE.0020.0004.32C8][.D53C.0020.001F.32C8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+3361 ; [.15EE.0020.0004.3361][.8E99.0020.001F.3361] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+1F241 ; [*0359.0020.0004.1F241][.C8DF.0020.0004.1F241][*035A.0020.001F.1F241] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09
+1F242 ; [*0359.0020.0004.1F242][.CBCD.0020.0004.1F242][*035A.0020.001F.1F242] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C
+1F247 ; [*0359.0020.0004.1F247][.C1CC.0020.0004.1F247][*035A.0020.001F.1F247] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD
+1F243 ; [*0359.0020.0004.1F243][.CB52.0020.0004.1F243][*035A.0020.001F.1F243] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89
+1F245 ; [*0359.0020.0004.1F245][.8C38.0020.0004.1F245][*035A.0020.001F.1F245] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253
+1F248 ; [*0359.0020.0004.1F248][.80CD.0020.0004.1F248][*035A.0020.001F.1F248] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+1F240 ; [*0359.0020.0004.1F240][.819A.0020.0004.1F240][*035A.0020.001F.1F240] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C
+1F244 ; [*0359.0020.0004.1F244][.8E99.0020.0004.1F244][*035A.0020.001F.1F244] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9
+1F246 ; [*0359.0020.0004.1F246][.8CA9.0020.0004.1F246][*035A.0020.001F.1F246] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7
+2F00 ; [.CBDC.0020.0004.2F00] # KANGXI RADICAL ONE
+3192 ; [.CBDC.0020.0014.3192] # IDEOGRAPHIC ANNOTATION ONE MARK
+3280 ; [.CBDC.0020.0006.3280] # CIRCLED IDEOGRAPH ONE
+1F229 ; [.CBDC.0020.001C.1F229] # SQUARED CJK UNIFIED IDEOGRAPH-4E00
+319C ; [.8EC1.0020.0014.319C] # IDEOGRAPHIC ANNOTATION FOURTH MARK
+3286 ; [.AD39.0020.0006.3286] # CIRCLED IDEOGRAPH SEVEN
+3194 ; [.C8DF.0020.0014.3194] # IDEOGRAPHIC ANNOTATION THREE MARK
+3282 ; [.C8DF.0020.0006.3282] # CIRCLED IDEOGRAPH THREE
+1F22A ; [.C8DF.0020.001C.1F22A] # SQUARED CJK UNIFIED IDEOGRAPH-4E09
+3196 ; [.C19C.0020.0014.3196] # IDEOGRAPHIC ANNOTATION TOP MARK
+32A4 ; [.C19C.0020.0006.32A4] # CIRCLED IDEOGRAPH HIGH
+3198 ; [.B2A0.0020.0014.3198] # IDEOGRAPHIC ANNOTATION BOTTOM MARK
+32A6 ; [.B2A0.0020.0006.32A6] # CIRCLED IDEOGRAPH LOW
+319B ; [.8355.0020.0014.319B] # IDEOGRAPHIC ANNOTATION THIRD MARK
+2F01 ; [.9F64.0020.0004.2F01] # KANGXI RADICAL LINE
+3197 ; [.BB6D.0020.0014.3197] # IDEOGRAPHIC ANNOTATION MIDDLE MARK
+32A5 ; [.BB6D.0020.0006.32A5] # CIRCLED IDEOGRAPH CENTRE
+1F22D ; [.BB6D.0020.001C.1F22D] # SQUARED CJK UNIFIED IDEOGRAPH-4E2D
+2F02 ; [.BA6A.0020.0004.2F02] # KANGXI RADICAL DOT
+2F03 ; [.8558.0020.0004.2F03] # KANGXI RADICAL SLASH
+2F04 ; [.CC59.0020.0004.2F04] # KANGXI RADICAL SECOND
+319A ; [.CC59.0020.0014.319A] # IDEOGRAPHIC ANNOTATION SECOND MARK
+3288 ; [.A95D.0020.0006.3288] # CIRCLED IDEOGRAPH NINE
+2F05 ; [.AC3C.0020.0004.2F05] # KANGXI RADICAL HOOK
+2F06 ; [.CBCD.0020.0004.2F06] # KANGXI RADICAL TWO
+3193 ; [.CBCD.0020.0014.3193] # IDEOGRAPHIC ANNOTATION TWO MARK
+3281 ; [.CBCD.0020.0006.3281] # CIRCLED IDEOGRAPH TWO
+1F214 ; [.CBCD.0020.001C.1F214] # SQUARED CJK UNIFIED IDEOGRAPH-4E8C
+3284 ; [.D1A9.0020.0006.3284] # CIRCLED IDEOGRAPH FIVE
+2F07 ; [.90D4.0020.0004.2F07] # KANGXI RADICAL LID
+1F218 ; [.A8BE.0020.001C.1F218] # SQUARED CJK UNIFIED IDEOGRAPH-4EA4
+2F08 ; [.C2EF.0020.0004.2F08] # KANGXI RADICAL MAN
+319F ; [.C2EF.0020.0014.319F] # IDEOGRAPHIC ANNOTATION MAN MARK
+32AD ; [.ADC1.0020.0006.32AD] # CIRCLED IDEOGRAPH ENTERPRISE
+32A1 ; [.B3A8.0020.0006.32A1] # CIRCLED IDEOGRAPH REST
+329D ; [.CE97.0020.0006.329D] # CIRCLED IDEOGRAPH EXCELLENT
+2F09 ; [.CBA3.0020.0004.2F09] # KANGXI RADICAL LEGS
+2F0A ; [.C376.0020.0004.2F0A] # KANGXI RADICAL ENTER
+2F0B ; [.8001.0020.0004.2F0B] # KANGXI RADICAL EIGHT
+3287 ; [.8001.0020.0006.3287] # CIRCLED IDEOGRAPH EIGHT
+3285 ; [.9953.0020.0006.3285] # CIRCLED IDEOGRAPH SIX
+2F0C ; [.AD19.0020.0004.2F0C] # KANGXI RADICAL DOWN BOX
+1F21E ; [.C4C2.0020.001C.1F21E] # SQUARED CJK UNIFIED IDEOGRAPH-518D
+2F0D ; [.8867.0020.0004.2F0D] # KANGXI RADICAL COVER
+32A2 ; [.B2E9.0020.0006.32A2] # CIRCLED IDEOGRAPH COPY
+2F0E ; [.834E.0020.0004.2F0E] # KANGXI RADICAL ICE
+2F0F ; [.A74C.0020.0004.2F0F] # KANGXI RADICAL TABLE
+2F10 ; [.AF59.0020.0004.2F10] # KANGXI RADICAL OPEN BOX
+2F11 ; [.8C87.0020.0004.2F11] # KANGXI RADICAL KNIFE
+1F220 ; [.BE3B.0020.001C.1F220] # SQUARED CJK UNIFIED IDEOGRAPH-521D
+1F21C ; [.AF3B.0020.001C.1F21C] # SQUARED CJK UNIFIED IDEOGRAPH-524D
+1F239 ; [.9C7B.0020.001C.1F239] # SQUARED CJK UNIFIED IDEOGRAPH-5272
+2F12 ; [.9804.0020.0004.2F12] # KANGXI RADICAL POWER
+3298 ; [.969E.0020.0006.3298] # CIRCLED IDEOGRAPH LABOR
+2F13 ; [.811A.0020.0004.2F13] # KANGXI RADICAL WRAP
+2F14 ; [.81FC.0020.0004.2F14] # KANGXI RADICAL SPOON
+2F15 ; [.8A9F.0020.0004.2F15] # KANGXI RADICAL RIGHT OPEN BOX
+2F16 ; [.B224.0020.0004.2F16] # KANGXI RADICAL HIDING ENCLOSURE
+32A9 ; [.CBE1.0020.0006.32A9] # CIRCLED IDEOGRAPH MEDICINE
+2F17 ; [.BF85.0020.0004.2F17] # KANGXI RADICAL TEN
+3038 ; [.BF85.0020.0004.3038] # HANGZHOU NUMERAL TEN
+3289 ; [.BF85.0020.0006.3289] # CIRCLED IDEOGRAPH TEN
+3039 ; [.954F.0020.0004.3039] # HANGZHOU NUMERAL TWENTY
+303A ; [.C861.0020.0004.303A] # HANGZHOU NUMERAL THIRTY
+32AF ; [.B2BC.0020.0006.32AF] # CIRCLED IDEOGRAPH ALLIANCE
+2F18 ; [.80B6.0020.0004.2F18] # KANGXI RADICAL DIVINATION
+2F19 ; [.A84F.0020.0004.2F19] # KANGXI RADICAL SEAL
+329E ; [.D06B.0020.0006.329E] # CIRCLED IDEOGRAPH PRINT
+2F1A ; [.BDC0.0020.0004.2F1A] # KANGXI RADICAL CLIFF
+2F1B ; [.C7F7.0020.0004.2F1B] # KANGXI RADICAL PRIVATE
+2F1C ; [.CEE0.0020.0004.2F1C] # KANGXI RADICAL AGAIN
+1F212 ; [.C28A.0020.001C.1F212] # SQUARED CJK UNIFIED IDEOGRAPH-53CC
+2F1D ; [.A070.0020.0004.2F1D] # KANGXI RADICAL MOUTH
+1F251 ; [.A007.0020.0006.1F251] # CIRCLED IDEOGRAPH ACCEPT
+32A8 ; [.CEE1.0020.0006.32A8] # CIRCLED IDEOGRAPH RIGHT
+1F22E ; [.CEE1.0020.001C.1F22E] # SQUARED CJK UNIFIED IDEOGRAPH-53F3
+1F234 ; [.A232.0020.001C.1F234] # SQUARED CJK UNIFIED IDEOGRAPH-5408
+3294 ; [.892A.0020.0006.3294] # CIRCLED IDEOGRAPH NAME
+1F225 ; [.BEBE.0020.001C.1F225] # SQUARED CJK UNIFIED IDEOGRAPH-5439
+3244 ; [.D3B7.0020.0006.3244] # CIRCLED IDEOGRAPH QUESTION
+1F23A ; [.D120.0020.001C.1F23A] # SQUARED CJK UNIFIED IDEOGRAPH-55B6
+2F1E ; [.D27D.0020.0004.2F1E] # KANGXI RADICAL ENCLOSURE
+3195 ; [.C82E.0020.0014.3195] # IDEOGRAPHIC ANNOTATION FOUR MARK
+3283 ; [.C82E.0020.0006.3283] # CIRCLED IDEOGRAPH FOUR
+2F1F ; [.92EA.0020.0004.2F1F] # KANGXI RADICAL EARTH
+328F ; [.92EA.0020.0006.328F] # CIRCLED IDEOGRAPH EARTH
+319E ; [.8C4B.0020.0014.319E] # IDEOGRAPHIC ANNOTATION EARTH MARK
+2F20 ; [.BFB5.0020.0004.2F20] # KANGXI RADICAL SCHOLAR
+1F224 ; [.C1A8.0020.001C.1F224] # SQUARED CJK UNIFIED IDEOGRAPH-58F0
+2F21 ; [.B740.0020.0004.2F21] # KANGXI RADICAL GO
+2F22 ; [.C986.0020.0004.2F22] # KANGXI RADICAL GO SLOWLY
+2F23 ; [.B165.0020.0004.2F23] # KANGXI RADICAL EVENING
+1F215 ; [.8F35.0020.001C.1F215] # SQUARED CJK UNIFIED IDEOGRAPH-591A
+32B0 ; [.CDD7.0020.0006.32B0] # CIRCLED IDEOGRAPH NIGHT
+2F24 ; [.8C39.0020.0004.2F24] # KANGXI RADICAL BIG
+337D ; [.8C39.0020.001C.337D][.BA1E.0020.001C.337D] # SQUARE ERA NAME TAISYOU
+319D ; [.923B.0020.0014.319D] # IDEOGRAPHIC ANNOTATION HEAVEN MARK
+1F217 ; [.923B.0020.001C.1F217] # SQUARED CJK UNIFIED IDEOGRAPH-5929
+2F25 ; [.95CC.0020.0004.2F25] # KANGXI RADICAL WOMAN
+329B ; [.95CC.0020.0006.329B] # CIRCLED IDEOGRAPH FEMALE
+2F26 ; [.C466.0020.0004.2F26] # KANGXI RADICAL CHILD
+1F211 ; [.C456.0020.001C.1F211] # SQUARED CJK UNIFIED IDEOGRAPH-5B57
+32AB ; [.B5F0.0020.0006.32AB] # CIRCLED IDEOGRAPH STUDY
+2F27 ; [.88BF.0020.0004.2F27] # KANGXI RADICAL ROOF
+32AA ; [.C5ED.0020.0006.32AA] # CIRCLED IDEOGRAPH RELIGION
+2F28 ; [.C7B4.0020.0004.2F28] # KANGXI RADICAL INCH
+2F29 ; [.B385.0020.0004.2F29] # KANGXI RADICAL SMALL
+2F2A ; [.CE9E.0020.0004.2F2A] # KANGXI RADICAL LAME
+2F2B ; [.BF5B.0020.0004.2F2B] # KANGXI RADICAL CORPSE
+2F2C ; [.BC63.0020.0004.2F2C] # KANGXI RADICAL SPROUT
+2F2D ; [.C0C5.0020.0004.2F2D] # KANGXI RADICAL MOUNTAIN
+2F2E ; [.BED1.0020.0004.2F2E] # KANGXI RADICAL RIVER
+2F2F ; [.9F9E.0020.0004.2F2F] # KANGXI RADICAL WORK
+32A7 ; [.C593.0020.0006.32A7] # CIRCLED IDEOGRAPH LEFT
+1F22C ; [.C593.0020.001C.1F22C] # SQUARED CJK UNIFIED IDEOGRAPH-5DE6
+2F30 ; [.A74D.0020.0004.2F30] # KANGXI RADICAL ONESELF
+2F31 ; [.AA6D.0020.0004.2F31] # KANGXI RADICAL TURBAN
+2F32 ; [.9D7F.0020.0004.2F32] # KANGXI RADICAL DRY
+337B ; [.85BF.0020.001C.337B][.BDFC.0020.001C.337B] # SQUARE ERA NAME HEISEI
+2F33 ; [.CE11.0020.0004.2F33] # KANGXI RADICAL SHORT THREAD
+3245 ; [.CEE2.0020.0006.3245] # CIRCLED IDEOGRAPH KINDERGARTEN
+2F34 ; [.9F8F.0020.0004.2F34] # KANGXI RADICAL DOTTED CLIFF
+2F35 ; [.D04E.0020.0004.2F35] # KANGXI RADICAL LONG STRIDE
+2F36 ; [.9FBB.0020.0004.2F36] # KANGXI RADICAL TWO HANDS
+2F37 ; [.CC86.0020.0004.2F37] # KANGXI RADICAL SHOOT
+2F38 ; [.9F9F.0020.0004.2F38] # KANGXI RADICAL BOW
+2F39 ; [.A763.0020.0004.2F39] # KANGXI RADICAL SNOUT
+2F3A ; [.C0C6.0020.0004.2F3A] # KANGXI RADICAL BRISTLE
+2F3B ; [.BBF9.0020.0004.2F3B] # KANGXI RADICAL STEP
+1F21D ; [.A30D.0020.001C.1F21D] # SQUARED CJK UNIFIED IDEOGRAPH-5F8C
+1F250 ; [.8C4D.0020.0006.1F250] # CIRCLED IDEOGRAPH ADVANTAGE
+2F3C ; [.B4AB.0020.0004.2F3C] # KANGXI RADICAL HEART
+2F3D ; [.9C6C.0020.0004.2F3D] # KANGXI RADICAL HALBERD
+2F3E ; [.A40C.0020.0004.2F3E] # KANGXI RADICAL DOOR
+2F3F ; [.C0AE.0020.0004.2F3F] # KANGXI RADICAL HAND
+1F210 ; [.C0AE.0020.001C.1F210] # SQUARED CJK UNIFIED IDEOGRAPH-624B
+1F231 ; [.8C38.0020.001C.1F231] # SQUARED CJK UNIFIED IDEOGRAPH-6253
+1F227 ; [.90D6.0020.001C.1F227] # SQUARED CJK UNIFIED IDEOGRAPH-6295
+1F22F ; [.B753.0020.001C.1F22F] # SQUARED CJK UNIFIED IDEOGRAPH-6307
+1F228 ; [.838E.0020.001C.1F228] # SQUARED CJK UNIFIED IDEOGRAPH-6355
+2F40 ; [.B6EB.0020.0004.2F40] # KANGXI RADICAL BRANCH
+2F41 ; [.85EC.0020.0004.2F41] # KANGXI RADICAL RAP
+2F42 ; [.D38D.0020.0004.2F42] # KANGXI RADICAL SCRIPT
+3246 ; [.D38D.0020.0006.3246] # CIRCLED IDEOGRAPH SCHOOL
+2F43 ; [.8CCF.0020.0004.2F43] # KANGXI RADICAL DIPPER
+1F21B ; [.9905.0020.001C.1F21B] # SQUARED CJK UNIFIED IDEOGRAPH-6599
+2F44 ; [.AA6F.0020.0004.2F44] # KANGXI RADICAL AXE
+1F21F ; [.B4BC.0020.001C.1F21F] # SQUARED CJK UNIFIED IDEOGRAPH-65B0
+2F45 ; [.8AA0.0020.0004.2F45] # KANGXI RADICAL SQUARE
+2F46 ; [.D18A.0020.0004.2F46] # KANGXI RADICAL NOT
+2F47 ; [.C2A4.0020.0004.2F47] # KANGXI RADICAL SUN
+3290 ; [.C2A4.0020.0006.3290] # CIRCLED IDEOGRAPH SUN
+337E ; [.892B.0020.001C.337E][.B773.0020.001C.337E] # SQUARE ERA NAME MEIZI
+1F219 ; [.D15D.0020.001C.1F219] # SQUARED CJK UNIFIED IDEOGRAPH-6620
+337C ; [.B884.0020.001C.337C][.A237.0020.001C.337C] # SQUARE ERA NAME SYOUWA
+2F48 ; [.D533.0020.0004.2F48] # KANGXI RADICAL SAY
+2F49 ; [.D53C.0020.0004.2F49] # KANGXI RADICAL MOON
+328A ; [.D53C.0020.0006.328A] # CIRCLED IDEOGRAPH MOON
+1F237 ; [.D53C.0020.001C.1F237] # SQUARED CJK UNIFIED IDEOGRAPH-6708
+3292 ; [.CEC7.0020.0006.3292] # CIRCLED IDEOGRAPH HAVE
+1F236 ; [.CEC7.0020.001C.1F236] # SQUARED CJK UNIFIED IDEOGRAPH-6709
+2F4A ; [.895F.0020.0004.2F4A] # KANGXI RADICAL TREE
+328D ; [.895F.0020.0006.328D] # CIRCLED IDEOGRAPH WOOD
+3291 ; [.BA36.0020.0006.3291] # CIRCLED IDEOGRAPH STOCK
+337F ; [.BA36.0020.001C.337F][.BFBF.0020.001C.337F][.A51A.0020.001C.337F][.C05E.0020.001C.337F] # SQUARE CORPORATION
+2F4B ; [.AF68.0020.0004.2F4B] # KANGXI RADICAL LACK
+2F4C ; [.B741.0020.0004.2F4C] # KANGXI RADICAL STOP
+32A3 ; [.BA1E.0020.0006.32A3] # CIRCLED IDEOGRAPH CORRECT
+2F4D ; [.8C53.0020.0004.2F4D] # KANGXI RADICAL DEATH
+2F4E ; [.C1D9.0020.0004.2F4E] # KANGXI RADICAL WEAPON
+2F4F ; [.D18B.0020.0004.2F4F] # KANGXI RADICAL DO NOT
+2E9F ; [.894D.0020.0004.2E9F] # CJK RADICAL MOTHER
+2F50 ; [.81FD.0020.0004.2F50] # KANGXI RADICAL COMPARE
+2F51 ; [.8727.0020.0004.2F51] # KANGXI RADICAL FUR
+2F52 ; [.BFB6.0020.0004.2F52] # KANGXI RADICAL CLAN
+2F53 ; [.ADDA.0020.0004.2F53] # KANGXI RADICAL STEAM
+2F54 ; [.C26E.0020.0004.2F54] # KANGXI RADICAL WATER
+328C ; [.C26E.0020.0006.328C] # CIRCLED IDEOGRAPH WATER
+329F ; [.BA84.0020.0006.329F] # CIRCLED IDEOGRAPH ATTENTION
+1F235 ; [.8793.0020.001C.1F235] # SQUARED CJK UNIFIED IDEOGRAPH-6E80
+1F226 ; [.CF75.0020.001C.1F226] # SQUARED CJK UNIFIED IDEOGRAPH-6F14
+2F55 ; [.A48C.0020.0004.2F55] # KANGXI RADICAL FIRE
+328B ; [.A48C.0020.0006.328B] # CIRCLED IDEOGRAPH FIRE
+1F21A ; [.D19A.0020.001C.1F21A] # SQUARED CJK UNIFIED IDEOGRAPH-7121
+2F56 ; [.B88D.0020.0004.2F56] # KANGXI RADICAL CLAW
+2F57 ; [.8BC3.0020.0004.2F57] # KANGXI RADICAL FATHER
+2F58 ; [.CE21.0020.0004.2F58] # KANGXI RADICAL DOUBLE X
+2F59 ; [.8453.0020.0004.2F59] # KANGXI RADICAL HALF TREE TRUNK
+2F5A ; [.8593.0020.0004.2F5A] # KANGXI RADICAL SLICE
+2F5B ; [.CD78.0020.0004.2F5B] # KANGXI RADICAL FANG
+2F5C ; [.9526.0020.0004.2F5C] # KANGXI RADICAL COW
+3295 ; [.9060.0020.0006.3295] # CIRCLED IDEOGRAPH SPECIAL
+2F5D ; [.B123.0020.0004.2F5D] # KANGXI RADICAL DOG
+2F5E ; [.B63A.0020.0004.2F5E] # KANGXI RADICAL PROFOUND
+2F5F ; [.D4A7.0020.0004.2F5F] # KANGXI RADICAL JADE
+2F60 ; [.9E4D.0020.0004.2F60] # KANGXI RADICAL MELON
+2F61 ; [.D216.0020.0004.2F61] # KANGXI RADICAL TILE
+2F62 ; [.9D4E.0020.0004.2F62] # KANGXI RADICAL SWEET
+2F63 ; [.C1A6.0020.0004.2F63] # KANGXI RADICAL LIFE
+1F222 ; [.C1A6.0020.001C.1F222] # SQUARED CJK UNIFIED IDEOGRAPH-751F
+2F64 ; [.D68B.0020.0004.2F64] # KANGXI RADICAL USE
+2F65 ; [.9245.0020.0004.2F65] # KANGXI RADICAL FIELD
+3199 ; [.A814.0020.0014.3199] # IDEOGRAPHIC ANNOTATION FIRST MARK
+1F238 ; [.C125.0020.001C.1F238] # SQUARED CJK UNIFIED IDEOGRAPH-7533
+329A ; [.9459.0020.0006.329A] # CIRCLED IDEOGRAPH MALE
+2F66 ; [.852E.0020.0004.2F66] # KANGXI RADICAL BOLT OF CLOTH
+2F67 ; [.93F9.0020.0004.2F67] # KANGXI RADICAL SICKNESS
+2F68 ; [.8046.0020.0004.2F68] # KANGXI RADICAL DOTTED TENT
+2F69 ; [.80BD.0020.0004.2F69] # KANGXI RADICAL WHITE
+2F6A ; [.8504.0020.0004.2F6A] # KANGXI RADICAL SKIN
+2F6B ; [.890B.0020.0004.2F6B] # KANGXI RADICAL DISH
+32AC ; [.A9B3.0020.0006.32AC] # CIRCLED IDEOGRAPH SUPERVISE
+2F6C ; [.8962.0020.0004.2F6C] # KANGXI RADICAL EYE
+2F6D ; [.8728.0020.0004.2F6D] # KANGXI RADICAL SPEAR
+2F6E ; [.BFA9.0020.0004.2F6E] # KANGXI RADICAL ARROW
+2F6F ; [.BF87.0020.0004.2F6F] # KANGXI RADICAL STONE
+2F70 ; [.BFBD.0020.0004.2F70] # KANGXI RADICAL SPIRIT
+3293 ; [.C05E.0020.0006.3293] # CIRCLED IDEOGRAPH SOCIETY
+3297 ; [.BA90.0020.0006.3297] # CIRCLED IDEOGRAPH CONGRATULATION
+1F232 ; [.AAB2.0020.001C.1F232] # SQUARED CJK UNIFIED IDEOGRAPH-7981
+2F71 ; [.C2BD.0020.0004.2F71] # KANGXI RADICAL TRACK
+2F72 ; [.A231.0020.0004.2F72] # KANGXI RADICAL GRAIN
+3299 ; [.8871.0020.0006.3299] # CIRCLED IDEOGRAPH SECRET
+2F73 ; [.B5ED.0020.0004.2F73] # KANGXI RADICAL CAVE
+1F233 ; [.A211.0020.001C.1F233] # SQUARED CJK UNIFIED IDEOGRAPH-7A7A
+2F74 ; [.9808.0020.0004.2F74] # KANGXI RADICAL STAND
+2F75 ; [.BA53.0020.0004.2F75] # KANGXI RADICAL BAMBOO
+3247 ; [.BA0D.0020.0006.3247] # CIRCLED IDEOGRAPH KOTO
+2F76 ; [.8856.0020.0004.2F76] # KANGXI RADICAL RICE
+2F77 ; [.8868.0020.0004.2F77] # KANGXI RADICAL SILK
+1F221 ; [.BB7F.0020.001C.1F221] # SQUARED CJK UNIFIED IDEOGRAPH-7D42
+2F78 ; [.89F6.0020.0004.2F78] # KANGXI RADICAL JAR
+2F79 ; [.D3D1.0020.0004.2F79] # KANGXI RADICAL NET
+2F7A ; [.D08F.0020.0004.2F7A] # KANGXI RADICAL SHEEP
+2F7B ; [.D47D.0020.0004.2F7B] # KANGXI RADICAL FEATHER
+2F7C ; [.96B7.0020.0004.2F7C] # KANGXI RADICAL OLD
+2F7D ; [.CBA4.0020.0004.2F7D] # KANGXI RADICAL AND
+2F7E ; [.966B.0020.0004.2F7E] # KANGXI RADICAL PLOW
+2F7F ; [.CBBF.0020.0004.2F7F] # KANGXI RADICAL EAR
+2F80 ; [.D4AA.0020.0004.2F80] # KANGXI RADICAL BRUSH
+2F81 ; [.C2D4.0020.0004.2F81] # KANGXI RADICAL MEAT
+2F82 ; [.BD5B.0020.0004.2F82] # KANGXI RADICAL MINISTER
+2F83 ; [.C457.0020.0004.2F83] # KANGXI RADICAL SELF
+2F84 ; [.B766.0020.0004.2F84] # KANGXI RADICAL ARRIVE
+2F85 ; [.A96D.0020.0004.2F85] # KANGXI RADICAL MORTAR
+2F86 ; [.C053.0020.0004.2F86] # KANGXI RADICAL TONGUE
+2F87 ; [.BEE4.0020.0004.2F87] # KANGXI RADICAL OPPOSE
+2F88 ; [.B8B0.0020.0004.2F88] # KANGXI RADICAL BOAT
+2F89 ; [.9D94.0020.0004.2F89] # KANGXI RADICAL STOPPING
+2F8A ; [.C870.0020.0004.2F8A] # KANGXI RADICAL COLOR
+2F8B ; [.C6C2.0020.0004.2F8B] # KANGXI RADICAL GRASS
+2F8C ; [.A3B4.0020.0004.2F8C] # KANGXI RADICAL TIGER
+2F8D ; [.BF4A.0020.0004.2F8D] # KANGXI RADICAL INSECT
+2F8E ; [.B604.0020.0004.2F8E] # KANGXI RADICAL BLOOD
+2F8F ; [.B543.0020.0004.2F8F] # KANGXI RADICAL WALK ENCLOSURE
+2F90 ; [.CBE0.0020.0004.2F90] # KANGXI RADICAL CLOTHES
+2F91 ; [.CD9C.0020.0004.2F91] # KANGXI RADICAL WEST
+2F92 ; [.AA1C.0020.0004.2F92] # KANGXI RADICAL SEE
+2F93 ; [.A8EB.0020.0004.2F93] # KANGXI RADICAL HORN
+1F216 ; [.A898.0020.001C.1F216] # SQUARED CJK UNIFIED IDEOGRAPH-89E3
+2F94 ; [.CF21.0020.0004.2F94] # KANGXI RADICAL SPEECH
+2F95 ; [.9E07.0020.0004.2F95] # KANGXI RADICAL VALLEY
+2F96 ; [.8CD0.0020.0004.2F96] # KANGXI RADICAL BEAN
+2F97 ; [.BFAB.0020.0004.2F97] # KANGXI RADICAL PIG
+2F98 ; [.B76C.0020.0004.2F98] # KANGXI RADICAL BADGER
+2F99 ; [.80EB.0020.0004.2F99] # KANGXI RADICAL SHELL
+3296 ; [.C69F.0020.0006.3296] # CIRCLED IDEOGRAPH FINANCIAL
+1F223 ; [.8A4B.0020.001C.1F223] # SQUARED CJK UNIFIED IDEOGRAPH-8CA9
+32AE ; [.C421.0020.0006.32AE] # CIRCLED IDEOGRAPH RESOURCE
+2F9A ; [.BBFE.0020.0004.2F9A] # KANGXI RADICAL RED
+2F9B ; [.C50C.0020.0004.2F9B] # KANGXI RADICAL RUN
+1F230 ; [.C50C.0020.001C.1F230] # SQUARED CJK UNIFIED IDEOGRAPH-8D70
+2F9C ; [.C571.0020.0004.2F9C] # KANGXI RADICAL FOOT
+2F9D ; [.C129.0020.0004.2F9D] # KANGXI RADICAL BODY
+2F9E ; [.BC58.0020.0004.2F9E] # KANGXI RADICAL CART
+2F9F ; [.B4AE.0020.0004.2F9F] # KANGXI RADICAL BITTER
+2FA0 ; [.BD5F.0020.0004.2FA0] # KANGXI RADICAL MORNING
+2FA1 ; [.BEA0.0020.0004.2FA1] # KANGXI RADICAL WALK
+1F22B ; [.CEBC.0020.001C.1F22B] # SQUARED CJK UNIFIED IDEOGRAPH-904A
+329C ; [.BFFC.0020.0006.329C] # CIRCLED IDEOGRAPH SUITABLE
+2FA2 ; [.CC9C.0020.0004.2FA2] # KANGXI RADICAL CITY
+2FA3 ; [.CECA.0020.0004.2FA3] # KANGXI RADICAL WINE
+2FA4 ; [.8308.0020.0004.2FA4] # KANGXI RADICAL DISTINGUISH
+2FA5 ; [.97EB.0020.0004.2FA5] # KANGXI RADICAL VILLAGE
+2FA6 ; [.AA72.0020.0004.2FA6] # KANGXI RADICAL GOLD
+328E ; [.AA72.0020.0006.328E] # CIRCLED IDEOGRAPH METAL
+2FA7 ; [.B9D1.0020.0004.2FA7] # KANGXI RADICAL LONG
+2FA8 ; [.87B7.0020.0004.2FA8] # KANGXI RADICAL GATE
+2FA9 ; [.8BCB.0020.0004.2FA9] # KANGXI RADICAL MOUND
+2FAA ; [.9819.0020.0004.2FAA] # KANGXI RADICAL SLAVE
+2FAB ; [.BAFD.0020.0004.2FAB] # KANGXI RADICAL SHORT TAILED BIRD
+2FAC ; [.D47F.0020.0004.2FAC] # KANGXI RADICAL RAIN
+2FAD ; [.B01B.0020.0004.2FAD] # KANGXI RADICAL BLUE
+2FAE ; [.89A9.0020.0004.2FAE] # KANGXI RADICAL WRONG
+2FAF ; [.88EB.0020.0004.2FAF] # KANGXI RADICAL FACE
+2FB0 ; [.9C8F.0020.0004.2FB0] # KANGXI RADICAL LEATHER
+2FB1 ; [.D288.0020.0004.2FB1] # KANGXI RADICAL TANNED LEATHER
+2FB2 ; [.A965.0020.0004.2FB2] # KANGXI RADICAL LEEK
+2FB3 ; [.CFF8.0020.0004.2FB3] # KANGXI RADICAL SOUND
+2FB4 ; [.CDDC.0020.0004.2FB4] # KANGXI RADICAL LEAF
+32A0 ; [.B520.0020.0006.32A0] # CIRCLED IDEOGRAPH ITEM
+2FB5 ; [.8AD5.0020.0004.2FB5] # KANGXI RADICAL WIND
+2FB6 ; [.89AA.0020.0004.2FB6] # KANGXI RADICAL FLY
+2FB7 ; [.BF93.0020.0004.2FB7] # KANGXI RADICAL EAT
+2FB8 ; [.C0B1.0020.0004.2FB8] # KANGXI RADICAL HEAD
+2FB9 ; [.B4E1.0020.0004.2FB9] # KANGXI RADICAL FRAGRANT
+2FBA ; [.8637.0020.0004.2FBA] # KANGXI RADICAL HORSE
+2FBB ; [.9E10.0020.0004.2FBB] # KANGXI RADICAL BONE
+2FBC ; [.9CEC.0020.0004.2FBC] # KANGXI RADICAL TALL
+2FBD ; [.82AD.0020.0004.2FBD] # KANGXI RADICAL HAIR
+2FBE ; [.8CD4.0020.0004.2FBE] # KANGXI RADICAL FIGHT
+2FBF ; [.BDCE.0020.0004.2FBF] # KANGXI RADICAL SACRIFICIAL WINE
+2FC0 ; [.9C94.0020.0004.2FC0] # KANGXI RADICAL CAULDRON
+2FC1 ; [.9EF1.0020.0004.2FC1] # KANGXI RADICAL GHOST
+2FC2 ; [.D436.0020.0004.2FC2] # KANGXI RADICAL FISH
+2FC3 ; [.9519.0020.0004.2FC3] # KANGXI RADICAL BIRD
+2FC4 ; [.9AD5.0020.0004.2FC4] # KANGXI RADICAL SALT
+2FC5 ; [.9AFD.0020.0004.2FC5] # KANGXI RADICAL DEER
+2FC6 ; [.86CC.0020.0004.2FC6] # KANGXI RADICAL WHEAT
+2FC7 ; [.862D.0020.0004.2FC7] # KANGXI RADICAL HEMP
+2FC8 ; [.A607.0020.0004.2FC8] # KANGXI RADICAL YELLOW
+2FC9 ; [.C20C.0020.0004.2FC9] # KANGXI RADICAL MILLET
+2FCA ; [.A2AD.0020.0004.2FCA] # KANGXI RADICAL BLACK
+2FCB ; [.B762.0020.0004.2FCB] # KANGXI RADICAL EMBROIDERY
+2FCC ; [.88E4.0020.0004.2FCC] # KANGXI RADICAL FROG
+2FCD ; [.8ED2.0020.0004.2FCD] # KANGXI RADICAL TRIPOD
+2FCE ; [.9E1D.0020.0004.2FCE] # KANGXI RADICAL DRUM
+2FCF ; [.C210.0020.0004.2FCF] # KANGXI RADICAL RAT
+2FD0 ; [.81FB.0020.0004.2FD0] # KANGXI RADICAL NOSE
+2FD1 ; [.ADA1.0020.0004.2FD1] # KANGXI RADICAL EVEN
+2FD2 ; [.BBF7.0020.0004.2FD2] # KANGXI RADICAL TOOTH
+2FD3 ; [.9BE4.0020.0004.2FD3] # KANGXI RADICAL DRAGON
+2FD4 ; [.9ED7.0020.0004.2FD4] # KANGXI RADICAL TURTLE
+2EF3 ; [.9EB8.0020.0004.2EF3] # CJK RADICAL C-SIMPLIFIED TURTLE
+2FD5 ; [.D560.0020.0004.2FD5] # KANGXI RADICAL FLUTE
+F967 ; [.8392.0020.0002.4E0D] # CJK COMPATIBILITY IDEOGRAPH-F967
+FA70 ; [.836F.0020.0002.4E26] # CJK COMPATIBILITY IDEOGRAPH-FA70
+F905 ; [.BEEB.0020.0002.4E32] # CJK COMPATIBILITY IDEOGRAPH-F905
+2F801 ; [.D334.0020.0002.4E38] # CJK COMPATIBILITY IDEOGRAPH-2F801
+F95E ; [.8CEB.0020.0002.4E39] # CJK COMPATIBILITY IDEOGRAPH-F95E
+2F800 ; [.980B.0020.0002.4E3D] # CJK COMPATIBILITY IDEOGRAPH-2F800
+2F802 ; [.CC07.0020.0002.4E41] # CJK COMPATIBILITY IDEOGRAPH-2F802
+F91B ; [.9BA8.0020.0002.4E82] # CJK COMPATIBILITY IDEOGRAPH-F91B
+F9BA ; [.9615.0020.0002.4E86] # CJK COMPATIBILITY IDEOGRAPH-F9BA
+F977 ; [.9A32.0020.0002.4EAE] # CJK COMPATIBILITY IDEOGRAPH-F977
+F9FD ; [.C151.0020.0002.4EC0] # CJK COMPATIBILITY IDEOGRAPH-F9FD
+2F819 ; [.834F.0020.0002.4ECC] # CJK COMPATIBILITY IDEOGRAPH-2F819
+F9A8 ; [.9A9B.0020.0002.4EE4] # CJK COMPATIBILITY IDEOGRAPH-F9A8
+2F804 ; [.94AF.0020.0002.4F60] # CJK COMPATIBILITY IDEOGRAPH-2F804
+FA73 ; [.B546.0020.0002.4F80] # CJK COMPATIBILITY IDEOGRAPH-FA73
+F92D ; [.9619.0020.0002.4F86] # CJK COMPATIBILITY IDEOGRAPH-F92D
+F9B5 ; [.9811.0020.0002.4F8B] # CJK COMPATIBILITY IDEOGRAPH-F9B5
+FA30 ; [.D1B4.0020.0002.4FAE] # CJK COMPATIBILITY IDEOGRAPH-FA30
+2F805 ; [.D1B4.0020.0002.4FAE] # CJK COMPATIBILITY IDEOGRAPH-2F805
+2F806 ; [.935A.0020.0002.4FBB] # CJK COMPATIBILITY IDEOGRAPH-2F806
+F965 ; [.830C.0020.0002.4FBF] # CJK COMPATIBILITY IDEOGRAPH-F965
+2F807 ; [.8373.0020.0002.5002] # CJK COMPATIBILITY IDEOGRAPH-2F807
+F9D4 ; [.9BB2.0020.0002.502B] # CJK COMPATIBILITY IDEOGRAPH-F9D4
+2F808 ; [.C477.0020.0002.507A] # CJK COMPATIBILITY IDEOGRAPH-2F808
+2F809 ; [.80FF.0020.0002.5099] # CJK COMPATIBILITY IDEOGRAPH-2F809
+2F80B ; [.B522.0020.0002.50CF] # CJK COMPATIBILITY IDEOGRAPH-2F80B
+F9BB ; [.98D4.0020.0002.50DA] # CJK COMPATIBILITY IDEOGRAPH-F9BB
+FA31 ; [.C90E.0020.0002.50E7] # CJK COMPATIBILITY IDEOGRAPH-FA31
+2F80A ; [.C90E.0020.0002.50E7] # CJK COMPATIBILITY IDEOGRAPH-2F80A
+FA0C ; [.D1CB.0020.0002.5140] # CJK COMPATIBILITY IDEOGRAPH-FA0C
+FA74 ; [.BF37.0020.0002.5145] # CJK COMPATIBILITY IDEOGRAPH-FA74
+FA32 ; [.88D2.0020.0002.514D] # CJK COMPATIBILITY IDEOGRAPH-FA32
+2F80E ; [.88D2.0020.0002.514D] # CJK COMPATIBILITY IDEOGRAPH-2F80E
+2F80F ; [.92F0.0020.0002.5154] # CJK COMPATIBILITY IDEOGRAPH-2F80F
+2F810 ; [.A627.0020.0002.5164] # CJK COMPATIBILITY IDEOGRAPH-2F810
+2F814 ; [.9422.0020.0002.5167] # CJK COMPATIBILITY IDEOGRAPH-2F814
+FA72 ; [.B0F4.0020.0002.5168] # CJK COMPATIBILITY IDEOGRAPH-FA72
+F978 ; [.9A28.0020.0002.5169] # CJK COMPATIBILITY IDEOGRAPH-F978
+F9D1 ; [.9953.0020.0002.516D] # CJK COMPATIBILITY IDEOGRAPH-F9D1
+2F811 ; [.ABF3.0020.0002.5177] # CJK COMPATIBILITY IDEOGRAPH-2F811
+FA75 ; [.A7A9.0020.0002.5180] # CJK COMPATIBILITY IDEOGRAPH-FA75
+2F815 ; [.C4C2.0020.0002.518D] # CJK COMPATIBILITY IDEOGRAPH-2F815
+2F8D2 ; [.874F.0020.0002.5192] # CJK COMPATIBILITY IDEOGRAPH-2F8D2
+2F8D3 ; [.88DA.0020.0002.5195] # CJK COMPATIBILITY IDEOGRAPH-2F8D3
+2F817 ; [.C3F9.0020.0002.5197] # CJK COMPATIBILITY IDEOGRAPH-2F817
+2F818 ; [.D571.0020.0002.51A4] # CJK COMPATIBILITY IDEOGRAPH-2F818
+2F81A ; [.8FE3.0020.0002.51AC] # CJK COMPATIBILITY IDEOGRAPH-2F81A
+FA71 ; [.A1F5.0020.0002.51B5] # CJK COMPATIBILITY IDEOGRAPH-FA71
+2F81B ; [.A1F5.0020.0002.51B5] # CJK COMPATIBILITY IDEOGRAPH-2F81B
+F92E ; [.9793.0020.0002.51B7] # CJK COMPATIBILITY IDEOGRAPH-F92E
+F979 ; [.9A18.0020.0002.51C9] # CJK COMPATIBILITY IDEOGRAPH-F979
+F955 ; [.9A51.0020.0002.51CC] # CJK COMPATIBILITY IDEOGRAPH-F955
+F954 ; [.99F8.0020.0002.51DC] # CJK COMPATIBILITY IDEOGRAPH-F954
+FA15 ; [.B1BC.0020.0002.51DE] # CJK COMPATIBILITY IDEOGRAPH-FA15
+2F81D ; [.AF59.0020.0002.51F5] # CJK COMPATIBILITY IDEOGRAPH-2F81D
+2F81E ; [.C305.0020.0002.5203] # CJK COMPATIBILITY IDEOGRAPH-2F81E
+FA00 ; [.AE24.0020.0002.5207] # CJK COMPATIBILITY IDEOGRAPH-FA00
+2F850 ; [.AE24.0020.0002.5207] # CJK COMPATIBILITY IDEOGRAPH-2F850
+F99C ; [.98A1.0020.0002.5217] # CJK COMPATIBILITY IDEOGRAPH-F99C
+F9DD ; [.980C.0020.0002.5229] # CJK COMPATIBILITY IDEOGRAPH-F9DD
+F9FF ; [.C66A.0020.0002.523A] # CJK COMPATIBILITY IDEOGRAPH-F9FF
+2F820 ; [.A014.0020.0002.523B] # CJK COMPATIBILITY IDEOGRAPH-2F820
+2F821 ; [.9B64.0020.0002.5246] # CJK COMPATIBILITY IDEOGRAPH-2F821
+2F822 ; [.9C7B.0020.0002.5272] # CJK COMPATIBILITY IDEOGRAPH-2F822
+2F823 ; [.BD2E.0020.0002.5277] # CJK COMPATIBILITY IDEOGRAPH-2F823
+F9C7 ; [.9926.0020.0002.5289] # CJK COMPATIBILITY IDEOGRAPH-F9C7
+F98A ; [.9804.0020.0002.529B] # CJK COMPATIBILITY IDEOGRAPH-F98A
+F99D ; [.98A2.0020.0002.52A3] # CJK COMPATIBILITY IDEOGRAPH-F99D
+2F992 ; [.969D.0020.0002.52B3] # CJK COMPATIBILITY IDEOGRAPH-2F992
+FA76 ; [.D671.0020.0002.52C7] # CJK COMPATIBILITY IDEOGRAPH-FA76
+2F825 ; [.D671.0020.0002.52C7] # CJK COMPATIBILITY IDEOGRAPH-2F825
+FA33 ; [.88D5.0020.0002.52C9] # CJK COMPATIBILITY IDEOGRAPH-FA33
+2F826 ; [.88D5.0020.0002.52C9] # CJK COMPATIBILITY IDEOGRAPH-2F826
+F952 ; [.964C.0020.0002.52D2] # CJK COMPATIBILITY IDEOGRAPH-F952
+F92F ; [.96A5.0020.0002.52DE] # CJK COMPATIBILITY IDEOGRAPH-F92F
+FA34 ; [.AFAD.0020.0002.52E4] # CJK COMPATIBILITY IDEOGRAPH-FA34
+2F827 ; [.AFAD.0020.0002.52E4] # CJK COMPATIBILITY IDEOGRAPH-2F827
+F97F ; [.985C.0020.0002.52F5] # CJK COMPATIBILITY IDEOGRAPH-F97F
+FA77 ; [.C096.0020.0002.52FA] # CJK COMPATIBILITY IDEOGRAPH-FA77
+2F828 ; [.C096.0020.0002.52FA] # CJK COMPATIBILITY IDEOGRAPH-2F828
+2F829 ; [.811B.0020.0002.5305] # CJK COMPATIBILITY IDEOGRAPH-2F829
+2F82A ; [.C7B7.0020.0002.5306] # CJK COMPATIBILITY IDEOGRAPH-2F82A
+F963 ; [.80E5.0020.0002.5317] # CJK COMPATIBILITY IDEOGRAPH-F963
+2F82B ; [.80E5.0020.0002.5317] # CJK COMPATIBILITY IDEOGRAPH-2F82B
+F9EB ; [.94CA.0020.0002.533F] # CJK COMPATIBILITY IDEOGRAPH-F9EB
+2F82C ; [.A518.0020.0002.5349] # CJK COMPATIBILITY IDEOGRAPH-2F82C
+FA35 ; [.80D7.0020.0002.5351] # CJK COMPATIBILITY IDEOGRAPH-FA35
+2F82D ; [.80D7.0020.0002.5351] # CJK COMPATIBILITY IDEOGRAPH-2F82D
+2F82E ; [.807E.0020.0002.535A] # CJK COMPATIBILITY IDEOGRAPH-2F82E
+2F82F ; [.A6FF.0020.0002.5373] # CJK COMPATIBILITY IDEOGRAPH-2F82F
+F91C ; [.9BA5.0020.0002.5375] # CJK COMPATIBILITY IDEOGRAPH-F91C
+2F830 ; [.A70A.0020.0002.537D] # CJK COMPATIBILITY IDEOGRAPH-2F830
+2F831 ; [.B020.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F831
+2F832 ; [.B020.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F832
+2F833 ; [.B020.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F833
+F96B ; [.C6D2.0020.0002.53C3] # CJK COMPATIBILITY IDEOGRAPH-F96B
+2F836 ; [.A6FB.0020.0002.53CA] # CJK COMPATIBILITY IDEOGRAPH-2F836
+2F837 ; [.C8D2.0020.0002.53DF] # CJK COMPATIBILITY IDEOGRAPH-2F837
+F906 ; [.ABEE.0020.0002.53E5] # CJK COMPATIBILITY IDEOGRAPH-F906
+2F839 ; [.A922.0020.0002.53EB] # CJK COMPATIBILITY IDEOGRAPH-2F839
+2F83A ; [.BBFA.0020.0002.53F1] # CJK COMPATIBILITY IDEOGRAPH-2F83A
+2F83B ; [.CE13.0020.0002.5406] # CJK COMPATIBILITY IDEOGRAPH-2F83B
+F9DE ; [.9809.0020.0002.540F] # CJK COMPATIBILITY IDEOGRAPH-F9DE
+F9ED ; [.9A03.0020.0002.541D] # CJK COMPATIBILITY IDEOGRAPH-F9ED
+2F83D ; [.B16A.0020.0002.5438] # CJK COMPATIBILITY IDEOGRAPH-2F83D
+F980 ; [.9C24.0020.0002.5442] # CJK COMPATIBILITY IDEOGRAPH-F980
+2F83E ; [.BDFE.0020.0002.5448] # CJK COMPATIBILITY IDEOGRAPH-2F83E
+2F83F ; [.B8B3.0020.0002.5468] # CJK COMPATIBILITY IDEOGRAPH-2F83F
+2F83C ; [.B473.0020.0002.549E] # CJK COMPATIBILITY IDEOGRAPH-2F83C
+2F840 ; [.CA56.0020.0002.54A2] # CJK COMPATIBILITY IDEOGRAPH-2F840
+F99E ; [.CF9A.0020.0002.54BD] # CJK COMPATIBILITY IDEOGRAPH-F99E
+2F841 ; [.8891.0020.0002.54F6] # CJK COMPATIBILITY IDEOGRAPH-2F841
+2F842 ; [.9144.0020.0002.5510] # CJK COMPATIBILITY IDEOGRAPH-2F842
+2F843 ; [.ADCE.0020.0002.5553] # CJK COMPATIBILITY IDEOGRAPH-2F843
+FA79 ; [.90B6.0020.0002.5555] # CJK COMPATIBILITY IDEOGRAPH-FA79
+2F844 ; [.B415.0020.0002.5563] # CJK COMPATIBILITY IDEOGRAPH-2F844
+2F845 ; [.C100.0020.0002.5584] # CJK COMPATIBILITY IDEOGRAPH-2F845
+2F846 ; [.C100.0020.0002.5584] # CJK COMPATIBILITY IDEOGRAPH-2F846
+F90B ; [.95E6.0020.0002.5587] # CJK COMPATIBILITY IDEOGRAPH-F90B
+FA7A ; [.A52B.0020.0002.5599] # CJK COMPATIBILITY IDEOGRAPH-FA7A
+2F847 ; [.A52B.0020.0002.5599] # CJK COMPATIBILITY IDEOGRAPH-2F847
+FA36 ; [.A22D.0020.0002.559D] # CJK COMPATIBILITY IDEOGRAPH-FA36
+FA78 ; [.A22D.0020.0002.559D] # CJK COMPATIBILITY IDEOGRAPH-FA78
+2F848 ; [.BBB6.0020.0002.55AB] # CJK COMPATIBILITY IDEOGRAPH-2F848
+2F849 ; [.B7F6.0020.0002.55B3] # CJK COMPATIBILITY IDEOGRAPH-2F849
+FA0D ; [.A422.0020.0002.55C0] # CJK COMPATIBILITY IDEOGRAPH-FA0D
+2F84A ; [.CE34.0020.0002.55C2] # CJK COMPATIBILITY IDEOGRAPH-2F84A
+FA7B ; [.D21D.0020.0002.55E2] # CJK COMPATIBILITY IDEOGRAPH-FA7B
+FA37 ; [.912C.0020.0002.5606] # CJK COMPATIBILITY IDEOGRAPH-FA37
+2F84C ; [.912C.0020.0002.5606] # CJK COMPATIBILITY IDEOGRAPH-2F84C
+2F84E ; [.A2BD.0020.0002.5651] # CJK COMPATIBILITY IDEOGRAPH-2F84E
+FA38 ; [.ADFD.0020.0002.5668] # CJK COMPATIBILITY IDEOGRAPH-FA38
+2F84F ; [.847B.0020.0002.5674] # CJK COMPATIBILITY IDEOGRAPH-2F84F
+F9A9 ; [.9A44.0020.0002.56F9] # CJK COMPATIBILITY IDEOGRAPH-F9A9
+2F84B ; [.92DB.0020.0002.5716] # CJK COMPATIBILITY IDEOGRAPH-2F84B
+2F84D ; [.92DC.0020.0002.5717] # CJK COMPATIBILITY IDEOGRAPH-2F84D
+2F855 ; [.B548.0020.0002.578B] # CJK COMPATIBILITY IDEOGRAPH-2F855
+2F852 ; [.BE03.0020.0002.57CE] # CJK COMPATIBILITY IDEOGRAPH-2F852
+2F853 ; [.B720.0020.0002.57F4] # CJK COMPATIBILITY IDEOGRAPH-2F853
+2F854 ; [.92F2.0020.0002.580D] # CJK COMPATIBILITY IDEOGRAPH-2F854
+2F857 ; [.8151.0020.0002.5831] # CJK COMPATIBILITY IDEOGRAPH-2F857
+2F856 ; [.C642.0020.0002.5832] # CJK COMPATIBILITY IDEOGRAPH-2F856
+FA39 ; [.85EA.0020.0002.5840] # CJK COMPATIBILITY IDEOGRAPH-FA39
+FA10 ; [.BB92.0020.0002.585A] # CJK COMPATIBILITY IDEOGRAPH-FA10
+FA7C ; [.BB92.0020.0002.585A] # CJK COMPATIBILITY IDEOGRAPH-FA7C
+F96C ; [.C892.0020.0002.585E] # CJK COMPATIBILITY IDEOGRAPH-F96C
+FA3A ; [.86A0.0020.0002.58A8] # CJK COMPATIBILITY IDEOGRAPH-FA3A
+2F858 ; [.8E0D.0020.0002.58AC] # CJK COMPATIBILITY IDEOGRAPH-2F858
+FA7D ; [.8A7A.0020.0002.58B3] # CJK COMPATIBILITY IDEOGRAPH-FA7D
+F94A ; [.9679.0020.0002.58D8] # CJK COMPATIBILITY IDEOGRAPH-F94A
+F942 ; [.9C0B.0020.0002.58DF] # CJK COMPATIBILITY IDEOGRAPH-F942
+2F851 ; [.BB63.0020.0002.58EE] # CJK COMPATIBILITY IDEOGRAPH-2F851
+2F85A ; [.86C6.0020.0002.58F2] # CJK COMPATIBILITY IDEOGRAPH-2F85A
+2F85B ; [.A3DA.0020.0002.58F7] # CJK COMPATIBILITY IDEOGRAPH-2F85B
+2F85C ; [.8AFA.0020.0002.5906] # CJK COMPATIBILITY IDEOGRAPH-2F85C
+2F85D ; [.8F35.0020.0002.591A] # CJK COMPATIBILITY IDEOGRAPH-2F85D
+2F85E ; [.882A.0020.0002.5922] # CJK COMPATIBILITY IDEOGRAPH-2F85E
+FA7E ; [.CF5B.0020.0002.5944] # CJK COMPATIBILITY IDEOGRAPH-FA7E
+F90C ; [.9410.0020.0002.5948] # CJK COMPATIBILITY IDEOGRAPH-F90C
+F909 ; [.ADE9.0020.0002.5951] # CJK COMPATIBILITY IDEOGRAPH-F909
+FA7F ; [.8193.0020.0002.5954] # CJK COMPATIBILITY IDEOGRAPH-FA7F
+2F85F ; [.C04A.0020.0002.5962] # CJK COMPATIBILITY IDEOGRAPH-2F85F
+F981 ; [.95CC.0020.0002.5973] # CJK COMPATIBILITY IDEOGRAPH-F981
+2F865 ; [.8598.0020.0002.59D8] # CJK COMPATIBILITY IDEOGRAPH-2F865
+2F862 ; [.A6AD.0020.0002.59EC] # CJK COMPATIBILITY IDEOGRAPH-2F862
+2F863 ; [.D42A.0020.0002.5A1B] # CJK COMPATIBILITY IDEOGRAPH-2F863
+2F864 ; [.935B.0020.0002.5A27] # CJK COMPATIBILITY IDEOGRAPH-2F864
+FA80 ; [.8232.0020.0002.5A62] # CJK COMPATIBILITY IDEOGRAPH-FA80
+2F866 ; [.8BDA.0020.0002.5A66] # CJK COMPATIBILITY IDEOGRAPH-2F866
+2F986 ; [.D15F.0020.0002.5AB5] # CJK COMPATIBILITY IDEOGRAPH-2F986
+2F869 ; [.C2B1.0020.0002.5B08] # CJK COMPATIBILITY IDEOGRAPH-2F869
+FA81 ; [.C657.0020.0002.5B28] # CJK COMPATIBILITY IDEOGRAPH-FA81
+2F86A ; [.9741.0020.0002.5B3E] # CJK COMPATIBILITY IDEOGRAPH-2F86A
+2F86B ; [.9741.0020.0002.5B3E] # CJK COMPATIBILITY IDEOGRAPH-2F86B
+FA04 ; [.B874.0020.0002.5B85] # CJK COMPATIBILITY IDEOGRAPH-FA04
+2F86D ; [.D575.0020.0002.5BC3] # CJK COMPATIBILITY IDEOGRAPH-2F86D
+2F86E ; [.B7AB.0020.0002.5BD8] # CJK COMPATIBILITY IDEOGRAPH-2F86E
+F95F ; [.9570.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-F95F
+F9AA ; [.9570.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-F9AA
+2F86F ; [.9570.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-2F86F
+F9BC ; [.98DC.0020.0002.5BEE] # CJK COMPATIBILITY IDEOGRAPH-F9BC
+2F870 ; [.8143.0020.0002.5BF3] # CJK COMPATIBILITY IDEOGRAPH-2F870
+2F872 ; [.C0B3.0020.0002.5BFF] # CJK COMPATIBILITY IDEOGRAPH-2F872
+2F873 ; [.AAD5.0020.0002.5C06] # CJK COMPATIBILITY IDEOGRAPH-2F873
+2F875 ; [.CE9E.0020.0002.5C22] # CJK COMPATIBILITY IDEOGRAPH-2F875
+F9BD ; [.9522.0020.0002.5C3F] # CJK COMPATIBILITY IDEOGRAPH-F9BD
+2F877 ; [.92CA.0020.0002.5C60] # CJK COMPATIBILITY IDEOGRAPH-2F877
+F94B ; [.9C34.0020.0002.5C62] # CJK COMPATIBILITY IDEOGRAPH-F94B
+FA3B ; [.C71D.0020.0002.5C64] # CJK COMPATIBILITY IDEOGRAPH-FA3B
+F9DF ; [.9C36.0020.0002.5C65] # CJK COMPATIBILITY IDEOGRAPH-F9DF
+FA3C ; [.BC63.0020.0002.5C6E] # CJK COMPATIBILITY IDEOGRAPH-FA3C
+2F878 ; [.BC63.0020.0002.5C6E] # CJK COMPATIBILITY IDEOGRAPH-2F878
+2F87A ; [.AEFF.0020.0002.5C8D] # CJK COMPATIBILITY IDEOGRAPH-2F87A
+2F879 ; [.B3C8.0020.0002.5CC0] # CJK COMPATIBILITY IDEOGRAPH-2F879
+F9D5 ; [.9BB6.0020.0002.5D19] # CJK COMPATIBILITY IDEOGRAPH-F9D5
+2F87C ; [.CF66.0020.0002.5D43] # CJK COMPATIBILITY IDEOGRAPH-2F87C
+F921 ; [.970A.0020.0002.5D50] # CJK COMPATIBILITY IDEOGRAPH-F921
+2F87F ; [.C416.0020.0002.5D6B] # CJK COMPATIBILITY IDEOGRAPH-2F87F
+2F87E ; [.8E87.0020.0002.5D6E] # CJK COMPATIBILITY IDEOGRAPH-2F87E
+2F880 ; [.BD30.0020.0002.5D7C] # CJK COMPATIBILITY IDEOGRAPH-2F880
+2F9F4 ; [.B1BE.0020.0002.5DB2] # CJK COMPATIBILITY IDEOGRAPH-2F9F4
+F9AB ; [.9A9A.0020.0002.5DBA] # CJK COMPATIBILITY IDEOGRAPH-F9AB
+2F881 ; [.B68C.0020.0002.5DE1] # CJK COMPATIBILITY IDEOGRAPH-2F881
+2F882 ; [.BC98.0020.0002.5DE2] # CJK COMPATIBILITY IDEOGRAPH-2F882
+2F884 ; [.B6C0.0020.0002.5DFD] # CJK COMPATIBILITY IDEOGRAPH-2F884
+2F885 ; [.C26F.0020.0002.5E28] # CJK COMPATIBILITY IDEOGRAPH-2F885
+2F886 ; [.8758.0020.0002.5E3D] # CJK COMPATIBILITY IDEOGRAPH-2F886
+2F887 ; [.8A7B.0020.0002.5E69] # CJK COMPATIBILITY IDEOGRAPH-2F887
+F98E ; [.9537.0020.0002.5E74] # CJK COMPATIBILITY IDEOGRAPH-F98E
+FA01 ; [.8F28.0020.0002.5EA6] # CJK COMPATIBILITY IDEOGRAPH-FA01
+2F88B ; [.8372.0020.0002.5EB0] # CJK COMPATIBILITY IDEOGRAPH-2F88B
+2F88C ; [.8233.0020.0002.5EB3] # CJK COMPATIBILITY IDEOGRAPH-2F88C
+2F88D ; [.C22B.0020.0002.5EB6] # CJK COMPATIBILITY IDEOGRAPH-2F88D
+F9A2 ; [.996E.0020.0002.5EC9] # CJK COMPATIBILITY IDEOGRAPH-F9A2
+F928 ; [.9766.0020.0002.5ECA] # CJK COMPATIBILITY IDEOGRAPH-F928
+2F88E ; [.9766.0020.0002.5ECA] # CJK COMPATIBILITY IDEOGRAPH-2F88E
+FA82 ; [.CAF7.0020.0002.5ED2] # CJK COMPATIBILITY IDEOGRAPH-FA82
+FA0B ; [.A11E.0020.0002.5ED3] # CJK COMPATIBILITY IDEOGRAPH-FA0B
+FA83 ; [.CCFF.0020.0002.5ED9] # CJK COMPATIBILITY IDEOGRAPH-FA83
+F982 ; [.9AB9.0020.0002.5EEC] # CJK COMPATIBILITY IDEOGRAPH-F982
+2F890 ; [.9FBB.0020.0002.5EFE] # CJK COMPATIBILITY IDEOGRAPH-2F890
+F943 ; [.95C8.0020.0002.5F04] # CJK COMPATIBILITY IDEOGRAPH-F943
+2F894 ; [.9097.0020.0002.5F22] # CJK COMPATIBILITY IDEOGRAPH-2F894
+2F895 ; [.9097.0020.0002.5F22] # CJK COMPATIBILITY IDEOGRAPH-2F895
+2F874 ; [.8D4C.0020.0002.5F53] # CJK COMPATIBILITY IDEOGRAPH-2F874
+2F899 ; [.B544.0020.0002.5F62] # CJK COMPATIBILITY IDEOGRAPH-2F899
+FA84 ; [.C6A8.0020.0002.5F69] # CJK COMPATIBILITY IDEOGRAPH-FA84
+2F89A ; [.8E55.0020.0002.5F6B] # CJK COMPATIBILITY IDEOGRAPH-2F89A
+F9D8 ; [.9C41.0020.0002.5F8B] # CJK COMPATIBILITY IDEOGRAPH-F9D8
+2F89C ; [.8FF3.0020.0002.5F9A] # CJK COMPATIBILITY IDEOGRAPH-2F89C
+F966 ; [.8BDF.0020.0002.5FA9] # CJK COMPATIBILITY IDEOGRAPH-F966
+FA85 ; [.CE36.0020.0002.5FAD] # CJK COMPATIBILITY IDEOGRAPH-FA85
+2F89D ; [.C2FD.0020.0002.5FCD] # CJK COMPATIBILITY IDEOGRAPH-2F89D
+2F89E ; [.B768.0020.0002.5FD7] # CJK COMPATIBILITY IDEOGRAPH-2F89E
+F9A3 ; [.9551.0020.0002.5FF5] # CJK COMPATIBILITY IDEOGRAPH-F9A3
+2F89F ; [.A1E7.0020.0002.5FF9] # CJK COMPATIBILITY IDEOGRAPH-2F89F
+F960 ; [.958F.0020.0002.6012] # CJK COMPATIBILITY IDEOGRAPH-F960
+F9AC ; [.9965.0020.0002.601C] # CJK COMPATIBILITY IDEOGRAPH-F9AC
+FA6B ; [.A524.0020.0002.6075] # CJK COMPATIBILITY IDEOGRAPH-FA6B
+2F8A0 ; [.D572.0020.0002.6081] # CJK COMPATIBILITY IDEOGRAPH-2F8A0
+FA3D ; [.A510.0020.0002.6094] # CJK COMPATIBILITY IDEOGRAPH-FA3D
+2F8A3 ; [.A510.0020.0002.6094] # CJK COMPATIBILITY IDEOGRAPH-2F8A3
+2F8A5 ; [.8FBB.0020.0002.60C7] # CJK COMPATIBILITY IDEOGRAPH-2F8A5
+FA86 ; [.D3D6.0020.0002.60D8] # CJK COMPATIBILITY IDEOGRAPH-FA86
+F9B9 ; [.CA70.0020.0002.60E1] # CJK COMPATIBILITY IDEOGRAPH-F9B9
+FA88 ; [.D4DB.0020.0002.6108] # CJK COMPATIBILITY IDEOGRAPH-FA88
+F9D9 ; [.9846.0020.0002.6144] # CJK COMPATIBILITY IDEOGRAPH-F9D9
+2F8A6 ; [.C64C.0020.0002.6148] # CJK COMPATIBILITY IDEOGRAPH-2F8A6
+2F8A7 ; [.A5FA.0020.0002.614C] # CJK COMPATIBILITY IDEOGRAPH-2F8A7
+2F8A9 ; [.A5FA.0020.0002.614C] # CJK COMPATIBILITY IDEOGRAPH-2F8A9
+FA87 ; [.C178.0020.0002.614E] # CJK COMPATIBILITY IDEOGRAPH-FA87
+2F8A8 ; [.C178.0020.0002.614E] # CJK COMPATIBILITY IDEOGRAPH-2F8A8
+FA8A ; [.CB23.0020.0002.6160] # CJK COMPATIBILITY IDEOGRAPH-FA8A
+FA3E ; [.A03D.0020.0002.6168] # CJK COMPATIBILITY IDEOGRAPH-FA3E
+2F8AA ; [.96E1.0020.0002.617A] # CJK COMPATIBILITY IDEOGRAPH-2F8AA
+FA3F ; [.C55C.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-FA3F
+FA89 ; [.C55C.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-FA89
+2F8AB ; [.C55C.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-2F8AB
+F98F ; [.997C.0020.0002.6190] # CJK COMPATIBILITY IDEOGRAPH-F98F
+2F8AD ; [.8A96.0020.0002.61A4] # CJK COMPATIBILITY IDEOGRAPH-2F8AD
+2F8AE ; [.C6EB.0020.0002.61AF] # CJK COMPATIBILITY IDEOGRAPH-2F8AE
+2F8AC ; [.B498.0020.0002.61B2] # CJK COMPATIBILITY IDEOGRAPH-2F8AC
+2F8AF ; [.8803.0020.0002.61DE] # CJK COMPATIBILITY IDEOGRAPH-2F8AF
+FA40 ; [.BE2C.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-FA40
+FA8B ; [.BE2C.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-FA8B
+2F8B0 ; [.BE2C.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-2F8B0
+F90D ; [.9742.0020.0002.61F6] # CJK COMPATIBILITY IDEOGRAPH-F90D
+2F8B1 ; [.9742.0020.0002.61F6] # CJK COMPATIBILITY IDEOGRAPH-2F8B1
+F990 ; [.99C4.0020.0002.6200] # CJK COMPATIBILITY IDEOGRAPH-F990
+2F8B2 ; [.BDFC.0020.0002.6210] # CJK COMPATIBILITY IDEOGRAPH-2F8B2
+2F8B3 ; [.A802.0020.0002.621B] # CJK COMPATIBILITY IDEOGRAPH-2F8B3
+F9D2 ; [.9B16.0020.0002.622E] # CJK COMPATIBILITY IDEOGRAPH-F9D2
+FA8C ; [.8C7A.0020.0002.6234] # CJK COMPATIBILITY IDEOGRAPH-FA8C
+2F8B4 ; [.A0E3.0020.0002.625D] # CJK COMPATIBILITY IDEOGRAPH-2F8B4
+2F8B5 ; [.814B.0020.0002.62B1] # CJK COMPATIBILITY IDEOGRAPH-2F8B5
+F925 ; [.95DB.0020.0002.62C9] # CJK COMPATIBILITY IDEOGRAPH-F925
+F95B ; [.93DB.0020.0002.62CF] # CJK COMPATIBILITY IDEOGRAPH-F95B
+FA02 ; [.9037.0020.0002.62D3] # CJK COMPATIBILITY IDEOGRAPH-FA02
+2F8B6 ; [.801D.0020.0002.62D4] # CJK COMPATIBILITY IDEOGRAPH-2F8B6
+2F8BA ; [.8599.0020.0002.62FC] # CJK COMPATIBILITY IDEOGRAPH-2F8BA
+F973 ; [.C00F.0020.0002.62FE] # CJK COMPATIBILITY IDEOGRAPH-F973
+2F8B9 ; [.D348.0020.0002.633D] # CJK COMPATIBILITY IDEOGRAPH-2F8B9
+2F8B7 ; [.ACA2.0020.0002.6350] # CJK COMPATIBILITY IDEOGRAPH-2F8B7
+2F8BB ; [.C05A.0020.0002.6368] # CJK COMPATIBILITY IDEOGRAPH-2F8BB
+F9A4 ; [.9540.0020.0002.637B] # CJK COMPATIBILITY IDEOGRAPH-F9A4
+2F8BC ; [.C8AF.0020.0002.6383] # CJK COMPATIBILITY IDEOGRAPH-2F8BC
+F975 ; [.CA67.0020.0002.63A0] # CJK COMPATIBILITY IDEOGRAPH-F975
+2F8C1 ; [.CF63.0020.0002.63A9] # CJK COMPATIBILITY IDEOGRAPH-2F8C1
+FA8D ; [.D43E.0020.0002.63C4] # CJK COMPATIBILITY IDEOGRAPH-FA8D
+2F8C0 ; [.CF39.0020.0002.63C5] # CJK COMPATIBILITY IDEOGRAPH-2F8C0
+2F8BD ; [.A70F.0020.0002.63E4] # CJK COMPATIBILITY IDEOGRAPH-2F8BD
+FA8E ; [.C8BD.0020.0002.641C] # CJK COMPATIBILITY IDEOGRAPH-FA8E
+2F8BF ; [.AAB0.0020.0002.6422] # CJK COMPATIBILITY IDEOGRAPH-2F8BF
+FA8F ; [.8365.0020.0002.6452] # CJK COMPATIBILITY IDEOGRAPH-FA8F
+2F8C3 ; [.865D.0020.0002.6469] # CJK COMPATIBILITY IDEOGRAPH-2F8C3
+2F8C6 ; [.A904.0020.0002.6477] # CJK COMPATIBILITY IDEOGRAPH-2F8C6
+2F8C4 ; [.AB0A.0020.0002.647E] # CJK COMPATIBILITY IDEOGRAPH-2F8C4
+F991 ; [.9546.0020.0002.649A] # CJK COMPATIBILITY IDEOGRAPH-F991
+2F8C5 ; [.A4F3.0020.0002.649D] # CJK COMPATIBILITY IDEOGRAPH-2F8C5
+F930 ; [.9ADE.0020.0002.64C4] # CJK COMPATIBILITY IDEOGRAPH-F930
+FA41 ; [.8915.0020.0002.654F] # CJK COMPATIBILITY IDEOGRAPH-FA41
+2F8C8 ; [.8915.0020.0002.654F] # CJK COMPATIBILITY IDEOGRAPH-2F8C8
+FA90 ; [.CAF2.0020.0002.6556] # CJK COMPATIBILITY IDEOGRAPH-FA90
+2F8C9 ; [.AB74.0020.0002.656C] # CJK COMPATIBILITY IDEOGRAPH-2F8C9
+F969 ; [.C23A.0020.0002.6578] # CJK COMPATIBILITY IDEOGRAPH-F969
+F9BE ; [.9905.0020.0002.6599] # CJK COMPATIBILITY IDEOGRAPH-F9BE
+F983 ; [.9C2B.0020.0002.65C5] # CJK COMPATIBILITY IDEOGRAPH-F983
+FA42 ; [.A775.0020.0002.65E2] # CJK COMPATIBILITY IDEOGRAPH-FA42
+2F8CB ; [.A789.0020.0002.65E3] # CJK COMPATIBILITY IDEOGRAPH-2F8CB
+F9E0 ; [.CCA3.0020.0002.6613] # CJK COMPATIBILITY IDEOGRAPH-F9E0
+2F8CD ; [.AAA5.0020.0002.6649] # CJK COMPATIBILITY IDEOGRAPH-2F8CD
+FA12 ; [.B034.0020.0002.6674] # CJK COMPATIBILITY IDEOGRAPH-FA12
+FA91 ; [.B034.0020.0002.6674] # CJK COMPATIBILITY IDEOGRAPH-FA91
+F9C5 ; [.D5E6.0020.0002.6688] # CJK COMPATIBILITY IDEOGRAPH-F9C5
+FA43 ; [.C20B.0020.0002.6691] # CJK COMPATIBILITY IDEOGRAPH-FA43
+2F8CF ; [.C20B.0020.0002.6691] # CJK COMPATIBILITY IDEOGRAPH-2F8CF
+2F8D5 ; [.AAB8.0020.0002.669C] # CJK COMPATIBILITY IDEOGRAPH-2F8D5
+FA06 ; [.8156.0020.0002.66B4] # CJK COMPATIBILITY IDEOGRAPH-FA06
+F98B ; [.9855.0020.0002.66C6] # CJK COMPATIBILITY IDEOGRAPH-F98B
+F901 ; [.9DDE.0020.0002.66F4] # CJK COMPATIBILITY IDEOGRAPH-F901
+2F8CC ; [.C1E5.0020.0002.66F8] # CJK COMPATIBILITY IDEOGRAPH-2F8CC
+2F8D4 ; [.C5BD.0020.0002.6700] # CJK COMPATIBILITY IDEOGRAPH-2F8D4
+F929 ; [.9775.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-F929
+FA92 ; [.9775.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-FA92
+2F8D8 ; [.9775.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-2F8D8
+FA93 ; [.D3E7.0020.0002.671B] # CJK COMPATIBILITY IDEOGRAPH-FA93
+2F8D9 ; [.D3E7.0020.0002.671B] # CJK COMPATIBILITY IDEOGRAPH-2F8D9
+2F8DA ; [.C5F8.0020.0002.6721] # CJK COMPATIBILITY IDEOGRAPH-2F8DA
+F9E1 ; [.9897.0020.0002.674E] # CJK COMPATIBILITY IDEOGRAPH-F9E1
+2F8DC ; [.82A9.0020.0002.6753] # CJK COMPATIBILITY IDEOGRAPH-2F8DC
+FA94 ; [.B9DA.0020.0002.6756] # CJK COMPATIBILITY IDEOGRAPH-FA94
+2F8DB ; [.ADC7.0020.0002.675E] # CJK COMPATIBILITY IDEOGRAPH-2F8DB
+F9C8 ; [.BCDE.0020.0002.677B] # CJK COMPATIBILITY IDEOGRAPH-F9C8
+2F8E0 ; [.A6A7.0020.0002.6785] # CJK COMPATIBILITY IDEOGRAPH-2F8E0
+F9F4 ; [.99CA.0020.0002.6797] # CJK COMPATIBILITY IDEOGRAPH-F9F4
+F9C9 ; [.9944.0020.0002.67F3] # CJK COMPATIBILITY IDEOGRAPH-F9C9
+2F8DF ; [.9EAD.0020.0002.67FA] # CJK COMPATIBILITY IDEOGRAPH-2F8DF
+F9DA ; [.9826.0020.0002.6817] # CJK COMPATIBILITY IDEOGRAPH-F9DA
+2F8E5 ; [.8196.0020.0002.681F] # CJK COMPATIBILITY IDEOGRAPH-2F8E5
+2F8E1 ; [.C902.0020.0002.6852] # CJK COMPATIBILITY IDEOGRAPH-2F8E1
+F97A ; [.9A19.0020.0002.6881] # CJK COMPATIBILITY IDEOGRAPH-F97A
+FA44 ; [.86DF.0020.0002.6885] # CJK COMPATIBILITY IDEOGRAPH-FA44
+2F8E2 ; [.86DF.0020.0002.6885] # CJK COMPATIBILITY IDEOGRAPH-2F8E2
+2F8E4 ; [.CAEF.0020.0002.688E] # CJK COMPATIBILITY IDEOGRAPH-2F8E4
+F9E2 ; [.979F.0020.0002.68A8] # CJK COMPATIBILITY IDEOGRAPH-F9E2
+2F8E6 ; [.C417.0020.0002.6914] # CJK COMPATIBILITY IDEOGRAPH-2F8E6
+2F8E8 ; [.B7F9.0020.0002.6942] # CJK COMPATIBILITY IDEOGRAPH-2F8E8
+2F8E9 ; [.CE3D.0020.0002.69A3] # CJK COMPATIBILITY IDEOGRAPH-2F8E9
+2F8EA ; [.9CE5.0020.0002.69EA] # CJK COMPATIBILITY IDEOGRAPH-2F8EA
+F914 ; [.9610.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F914
+F95C ; [.9610.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F95C
+F9BF ; [.9610.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F9BF
+F94C ; [.96E3.0020.0002.6A13] # CJK COMPATIBILITY IDEOGRAPH-F94C
+2F8EB ; [.C052.0020.0002.6AA8] # CJK COMPATIBILITY IDEOGRAPH-2F8EB
+F931 ; [.9AE5.0020.0002.6AD3] # CJK COMPATIBILITY IDEOGRAPH-F931
+2F8ED ; [.B7D3.0020.0002.6ADB] # CJK COMPATIBILITY IDEOGRAPH-2F8ED
+F91D ; [.9726.0020.0002.6B04] # CJK COMPATIBILITY IDEOGRAPH-F91D
+2F8EF ; [.C667.0020.0002.6B21] # CJK COMPATIBILITY IDEOGRAPH-2F8EF
+2F8F1 ; [.B58D.0020.0002.6B54] # CJK COMPATIBILITY IDEOGRAPH-2F8F1
+2F8F3 ; [.C9AB.0020.0002.6B72] # CJK COMPATIBILITY IDEOGRAPH-2F8F3
+F98C ; [.9856.0020.0002.6B77] # CJK COMPATIBILITY IDEOGRAPH-F98C
+FA95 ; [.8C53.0020.0002.6B79] # CJK COMPATIBILITY IDEOGRAPH-FA95
+2F8F4 ; [.D380.0020.0002.6B9F] # CJK COMPATIBILITY IDEOGRAPH-2F8F4
+F9A5 ; [.99BD.0020.0002.6BAE] # CJK COMPATIBILITY IDEOGRAPH-F9A5
+F970 ; [.C025.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-F970
+FA96 ; [.C025.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-FA96
+2F8F5 ; [.C025.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-2F8F5
+2F8F6 ; [.AE8A.0020.0002.6BBB] # CJK COMPATIBILITY IDEOGRAPH-2F8F6
+2F8FA ; [.8A3E.0020.0002.6C4E] # CJK COMPATIBILITY IDEOGRAPH-2F8FA
+2F8FE ; [.AF01.0020.0002.6C67] # CJK COMPATIBILITY IDEOGRAPH-2F8FE
+F972 ; [.BD5D.0020.0002.6C88] # CJK COMPATIBILITY IDEOGRAPH-F972
+2F8FC ; [.CF25.0020.0002.6CBF] # CJK COMPATIBILITY IDEOGRAPH-2F8FC
+F968 ; [.886C.0020.0002.6CCC] # CJK COMPATIBILITY IDEOGRAPH-F968
+2F8FD ; [.8194.0020.0002.6CCD] # CJK COMPATIBILITY IDEOGRAPH-2F8FD
+F9E3 ; [.9490.0020.0002.6CE5] # CJK COMPATIBILITY IDEOGRAPH-F9E3
+2F8FF ; [.D193.0020.0002.6D16] # CJK COMPATIBILITY IDEOGRAPH-2F8FF
+F915 ; [.9B72.0020.0002.6D1B] # CJK COMPATIBILITY IDEOGRAPH-F915
+FA05 ; [.900E.0020.0002.6D1E] # CJK COMPATIBILITY IDEOGRAPH-FA05
+2F907 ; [.85C8.0020.0002.6D34] # CJK COMPATIBILITY IDEOGRAPH-2F907
+2F900 ; [.83F9.0020.0002.6D3E] # CJK COMPATIBILITY IDEOGRAPH-2F900
+F9CA ; [.9912.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-F9CA
+FA97 ; [.9912.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-FA97
+2F902 ; [.9912.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-2F902
+2F903 ; [.A2D9.0020.0002.6D69] # CJK COMPATIBILITY IDEOGRAPH-2F903
+F92A ; [.9781.0020.0002.6D6A] # CJK COMPATIBILITY IDEOGRAPH-F92A
+FA45 ; [.A29A.0020.0002.6D77] # CJK COMPATIBILITY IDEOGRAPH-FA45
+2F901 ; [.A29A.0020.0002.6D77] # CJK COMPATIBILITY IDEOGRAPH-2F901
+2F904 ; [.AAA7.0020.0002.6D78] # CJK COMPATIBILITY IDEOGRAPH-2F904
+2F905 ; [.94E1.0020.0002.6D85] # CJK COMPATIBILITY IDEOGRAPH-2F905
+F9F5 ; [.99D1.0020.0002.6DCB] # CJK COMPATIBILITY IDEOGRAPH-F9F5
+F94D ; [.9688.0020.0002.6DDA] # CJK COMPATIBILITY IDEOGRAPH-F94D
+F9D6 ; [.9BB8.0020.0002.6DEA] # CJK COMPATIBILITY IDEOGRAPH-F9D6
+2F90E ; [.CF08.0020.0002.6DF9] # CJK COMPATIBILITY IDEOGRAPH-2F90E
+FA46 ; [.BA70.0020.0002.6E1A] # CJK COMPATIBILITY IDEOGRAPH-FA46
+2F908 ; [.9DB6.0020.0002.6E2F] # CJK COMPATIBILITY IDEOGRAPH-2F908
+2F909 ; [.CF0D.0020.0002.6E6E] # CJK COMPATIBILITY IDEOGRAPH-2F909
+F9CB ; [.990C.0020.0002.6E9C] # CJK COMPATIBILITY IDEOGRAPH-F9CB
+F9EC ; [.94CE.0020.0002.6EBA] # CJK COMPATIBILITY IDEOGRAPH-F9EC
+2F90C ; [.8E88.0020.0002.6EC7] # CJK COMPATIBILITY IDEOGRAPH-2F90C
+FA99 ; [.C419.0020.0002.6ECB] # CJK COMPATIBILITY IDEOGRAPH-FA99
+2F90B ; [.C419.0020.0002.6ECB] # CJK COMPATIBILITY IDEOGRAPH-2F90B
+F904 ; [.A44F.0020.0002.6ED1] # CJK COMPATIBILITY IDEOGRAPH-F904
+FA98 ; [.D03B.0020.0002.6EDB] # CJK COMPATIBILITY IDEOGRAPH-FA98
+F94E ; [.96FC.0020.0002.6F0F] # CJK COMPATIBILITY IDEOGRAPH-F94E
+FA47 ; [.A368.0020.0002.6F22] # CJK COMPATIBILITY IDEOGRAPH-FA47
+FA9A ; [.A368.0020.0002.6F22] # CJK COMPATIBILITY IDEOGRAPH-FA9A
+F992 ; [.9974.0020.0002.6F23] # CJK COMPATIBILITY IDEOGRAPH-F992
+2F90F ; [.BCA0.0020.0002.6F6E] # CJK COMPATIBILITY IDEOGRAPH-2F90F
+2F912 ; [.8A7C.0020.0002.6FC6] # CJK COMPATIBILITY IDEOGRAPH-2F912
+F922 ; [.9751.0020.0002.6FEB] # CJK COMPATIBILITY IDEOGRAPH-F922
+F984 ; [.9C51.0020.0002.6FFE] # CJK COMPATIBILITY IDEOGRAPH-F984
+2F915 ; [.D142.0020.0002.701B] # CJK COMPATIBILITY IDEOGRAPH-2F915
+FA9B ; [.AB83.0020.0002.701E] # CJK COMPATIBILITY IDEOGRAPH-FA9B
+2F914 ; [.AB83.0020.0002.701E] # CJK COMPATIBILITY IDEOGRAPH-2F914
+2F913 ; [.D563.0020.0002.7039] # CJK COMPATIBILITY IDEOGRAPH-2F913
+2F917 ; [.AF57.0020.0002.704A] # CJK COMPATIBILITY IDEOGRAPH-2F917
+2F835 ; [.A4D6.0020.0002.7070] # CJK COMPATIBILITY IDEOGRAPH-2F835
+2F919 ; [.BB35.0020.0002.7077] # CJK COMPATIBILITY IDEOGRAPH-2F919
+2F918 ; [.C4B5.0020.0002.707D] # CJK COMPATIBILITY IDEOGRAPH-2F918
+F9FB ; [.B774.0020.0002.7099] # CJK COMPATIBILITY IDEOGRAPH-F9FB
+2F91A ; [.9126.0020.0002.70AD] # CJK COMPATIBILITY IDEOGRAPH-2F91A
+F99F ; [.98B0.0020.0002.70C8] # CJK COMPATIBILITY IDEOGRAPH-F99F
+F916 ; [.96C6.0020.0002.70D9] # CJK COMPATIBILITY IDEOGRAPH-F916
+2F91C ; [.8FAD.0020.0002.7145] # CJK COMPATIBILITY IDEOGRAPH-2F91C
+F993 ; [.99B6.0020.0002.7149] # CJK COMPATIBILITY IDEOGRAPH-F993
+FA48 ; [.BA72.0020.0002.716E] # CJK COMPATIBILITY IDEOGRAPH-FA48
+FA9C ; [.BA72.0020.0002.716E] # CJK COMPATIBILITY IDEOGRAPH-FA9C
+2F91E ; [.C7CA.0020.0002.719C] # CJK COMPATIBILITY IDEOGRAPH-2F91E
+F9C0 ; [.98E3.0020.0002.71CE] # CJK COMPATIBILITY IDEOGRAPH-F9C0
+F9EE ; [.99E0.0020.0002.71D0] # CJK COMPATIBILITY IDEOGRAPH-F9EE
+F932 ; [.9AC1.0020.0002.7210] # CJK COMPATIBILITY IDEOGRAPH-F932
+F91E ; [.9753.0020.0002.721B] # CJK COMPATIBILITY IDEOGRAPH-F91E
+2F920 ; [.C7A8.0020.0002.7228] # CJK COMPATIBILITY IDEOGRAPH-2F920
+FA49 ; [.B8AD.0020.0002.722B] # CJK COMPATIBILITY IDEOGRAPH-FA49
+FA9E ; [.AC81.0020.0002.7235] # CJK COMPATIBILITY IDEOGRAPH-FA9E
+2F921 ; [.AC81.0020.0002.7235] # CJK COMPATIBILITY IDEOGRAPH-2F921
+2F922 ; [.B809.0020.0002.7250] # CJK COMPATIBILITY IDEOGRAPH-2F922
+F946 ; [.969F.0020.0002.7262] # CJK COMPATIBILITY IDEOGRAPH-F946
+2F924 ; [.B19A.0020.0002.7280] # CJK COMPATIBILITY IDEOGRAPH-2F924
+2F925 ; [.810B.0020.0002.7295] # CJK COMPATIBILITY IDEOGRAPH-2F925
+FA9F ; [.8A3C.0020.0002.72AF] # CJK COMPATIBILITY IDEOGRAPH-FA9F
+F9FA ; [.BB66.0020.0002.72C0] # CJK COMPATIBILITY IDEOGRAPH-F9FA
+F92B ; [.975E.0020.0002.72FC] # CJK COMPATIBILITY IDEOGRAPH-F92B
+FA16 ; [.BA3A.0020.0002.732A] # CJK COMPATIBILITY IDEOGRAPH-FA16
+FAA0 ; [.BA3A.0020.0002.732A] # CJK COMPATIBILITY IDEOGRAPH-FAA0
+F9A7 ; [.98C3.0020.0002.7375] # CJK COMPATIBILITY IDEOGRAPH-F9A7
+2F928 ; [.9034.0020.0002.737A] # CJK COMPATIBILITY IDEOGRAPH-2F928
+F961 ; [.9C43.0020.0002.7387] # CJK COMPATIBILITY IDEOGRAPH-F961
+F9DB ; [.9C43.0020.0002.7387] # CJK COMPATIBILITY IDEOGRAPH-F9DB
+2F929 ; [.D3CA.0020.0002.738B] # CJK COMPATIBILITY IDEOGRAPH-2F929
+2F92B ; [.D544.0020.0002.73A5] # CJK COMPATIBILITY IDEOGRAPH-2F92B
+F9AD ; [.9A4F.0020.0002.73B2] # CJK COMPATIBILITY IDEOGRAPH-F9AD
+F917 ; [.9B76.0020.0002.73DE] # CJK COMPATIBILITY IDEOGRAPH-F917
+F9E4 ; [.97F2.0020.0002.7406] # CJK COMPATIBILITY IDEOGRAPH-F9E4
+F9CC ; [.9914.0020.0002.7409] # CJK COMPATIBILITY IDEOGRAPH-F9CC
+FA4A ; [.C58E.0020.0002.7422] # CJK COMPATIBILITY IDEOGRAPH-FA4A
+2F92E ; [.8C72.0020.0002.7447] # CJK COMPATIBILITY IDEOGRAPH-2F92E
+2F92F ; [.D44E.0020.0002.745C] # CJK COMPATIBILITY IDEOGRAPH-2F92F
+F9AE ; [.D131.0020.0002.7469] # CJK COMPATIBILITY IDEOGRAPH-F9AE
+FAA1 ; [.B9AB.0020.0002.7471] # CJK COMPATIBILITY IDEOGRAPH-FAA1
+2F930 ; [.B9AB.0020.0002.7471] # CJK COMPATIBILITY IDEOGRAPH-2F930
+2F931 ; [.C979.0020.0002.7485] # CJK COMPATIBILITY IDEOGRAPH-2F931
+F994 ; [.999F.0020.0002.7489] # CJK COMPATIBILITY IDEOGRAPH-F994
+F9EF ; [.99E1.0020.0002.7498] # CJK COMPATIBILITY IDEOGRAPH-F9EF
+2F932 ; [.B15E.0020.0002.74CA] # CJK COMPATIBILITY IDEOGRAPH-2F932
+FAA2 ; [.C64D.0020.0002.7506] # CJK COMPATIBILITY IDEOGRAPH-FAA2
+2F934 ; [.C397.0020.0002.7524] # CJK COMPATIBILITY IDEOGRAPH-2F934
+FAA3 ; [.A462.0020.0002.753B] # CJK COMPATIBILITY IDEOGRAPH-FAA3
+2F936 ; [.C4B7.0020.0002.753E] # CJK COMPATIBILITY IDEOGRAPH-2F936
+F9CD ; [.9915.0020.0002.7559] # CJK COMPATIBILITY IDEOGRAPH-F9CD
+F976 ; [.CA68.0020.0002.7565] # CJK COMPATIBILITY IDEOGRAPH-F976
+F962 ; [.CCD0.0020.0002.7570] # CJK COMPATIBILITY IDEOGRAPH-F962
+2F938 ; [.CCD0.0020.0002.7570] # CJK COMPATIBILITY IDEOGRAPH-2F938
+F9E5 ; [.983F.0020.0002.75E2] # CJK COMPATIBILITY IDEOGRAPH-F9E5
+2F93A ; [.D494.0020.0002.7610] # CJK COMPATIBILITY IDEOGRAPH-2F93A
+FAA4 ; [.9F2F.0020.0002.761D] # CJK COMPATIBILITY IDEOGRAPH-FAA4
+FAA5 ; [.D382.0020.0002.761F] # CJK COMPATIBILITY IDEOGRAPH-FAA5
+F9C1 ; [.98E8.0020.0002.7642] # CJK COMPATIBILITY IDEOGRAPH-F9C1
+F90E ; [.9649.0020.0002.7669] # CJK COMPATIBILITY IDEOGRAPH-F90E
+FA17 ; [.CCC7.0020.0002.76CA] # CJK COMPATIBILITY IDEOGRAPH-FA17
+FAA6 ; [.CCC7.0020.0002.76CA] # CJK COMPATIBILITY IDEOGRAPH-FAA6
+FAA7 ; [.C1CA.0020.0002.76DB] # CJK COMPATIBILITY IDEOGRAPH-FAA7
+F933 ; [.9AB5.0020.0002.76E7] # CJK COMPATIBILITY IDEOGRAPH-F933
+FAA8 ; [.B71A.0020.0002.76F4] # CJK COMPATIBILITY IDEOGRAPH-FAA8
+2F940 ; [.B71A.0020.0002.76F4] # CJK COMPATIBILITY IDEOGRAPH-2F940
+F96D ; [.C1C2.0020.0002.7701] # CJK COMPATIBILITY IDEOGRAPH-F96D
+2F945 ; [.B959.0020.0002.771E] # CJK COMPATIBILITY IDEOGRAPH-2F945
+2F946 ; [.B95A.0020.0002.771F] # CJK COMPATIBILITY IDEOGRAPH-2F946
+2F947 ; [.B95A.0020.0002.771F] # CJK COMPATIBILITY IDEOGRAPH-2F947
+FAAA ; [.B869.0020.0002.7740] # CJK COMPATIBILITY IDEOGRAPH-FAAA
+FAA9 ; [.ACC5.0020.0002.774A] # CJK COMPATIBILITY IDEOGRAPH-FAA9
+2F948 ; [.ACC5.0020.0002.774A] # CJK COMPATIBILITY IDEOGRAPH-2F948
+2F94A ; [.BD55.0020.0002.778B] # CJK COMPATIBILITY IDEOGRAPH-2F94A
+FA9D ; [.AE77.0020.0002.77A7] # CJK COMPATIBILITY IDEOGRAPH-FA9D
+2F94E ; [.B54F.0020.0002.784E] # CJK COMPATIBILITY IDEOGRAPH-2F94E
+F9CE ; [.9918.0020.0002.786B] # CJK COMPATIBILITY IDEOGRAPH-F9CE
+F93B ; [.9B0A.0020.0002.788C] # CJK COMPATIBILITY IDEOGRAPH-F93B
+2F94F ; [.9B0A.0020.0002.788C] # CJK COMPATIBILITY IDEOGRAPH-2F94F
+FA4B ; [.80DF.0020.0002.7891] # CJK COMPATIBILITY IDEOGRAPH-FA4B
+F947 ; [.9673.0020.0002.78CA] # CJK COMPATIBILITY IDEOGRAPH-F947
+FAAB ; [.9259.0020.0002.78CC] # CJK COMPATIBILITY IDEOGRAPH-FAAB
+2F950 ; [.9259.0020.0002.78CC] # CJK COMPATIBILITY IDEOGRAPH-2F950
+F964 ; [.845F.0020.0002.78FB] # CJK COMPATIBILITY IDEOGRAPH-F964
+F985 ; [.9878.0020.0002.792A] # CJK COMPATIBILITY IDEOGRAPH-F985
+FA18 ; [.97EA.0020.0002.793C] # CJK COMPATIBILITY IDEOGRAPH-FA18
+FA4C ; [.C05E.0020.0002.793E] # CJK COMPATIBILITY IDEOGRAPH-FA4C
+FA4E ; [.AD73.0020.0002.7948] # CJK COMPATIBILITY IDEOGRAPH-FA4E
+FA4D ; [.B757.0020.0002.7949] # CJK COMPATIBILITY IDEOGRAPH-FA4D
+FA4F ; [.CEF0.0020.0002.7950] # CJK COMPATIBILITY IDEOGRAPH-FA4F
+FA50 ; [.C583.0020.0002.7956] # CJK COMPATIBILITY IDEOGRAPH-FA50
+2F953 ; [.C583.0020.0002.7956] # CJK COMPATIBILITY IDEOGRAPH-2F953
+FA51 ; [.BA90.0020.0002.795D] # CJK COMPATIBILITY IDEOGRAPH-FA51
+FA19 ; [.C153.0020.0002.795E] # CJK COMPATIBILITY IDEOGRAPH-FA19
+FA1A ; [.B4FF.0020.0002.7965] # CJK COMPATIBILITY IDEOGRAPH-FA1A
+F93C ; [.9B0B.0020.0002.797F] # CJK COMPATIBILITY IDEOGRAPH-F93C
+FA52 ; [.A4A7.0020.0002.798D] # CJK COMPATIBILITY IDEOGRAPH-FA52
+FA53 ; [.B971.0020.0002.798E] # CJK COMPATIBILITY IDEOGRAPH-FA53
+FA1B ; [.8B8D.0020.0002.798F] # CJK COMPATIBILITY IDEOGRAPH-FA1B
+2F956 ; [.8B8D.0020.0002.798F] # CJK COMPATIBILITY IDEOGRAPH-2F956
+F9B6 ; [.97FC.0020.0002.79AE] # CJK COMPATIBILITY IDEOGRAPH-F9B6
+F995 ; [.9538.0020.0002.79CA] # CJK COMPATIBILITY IDEOGRAPH-F995
+2F957 ; [.C201.0020.0002.79EB] # CJK COMPATIBILITY IDEOGRAPH-2F957
+F956 ; [.978F.0020.0002.7A1C] # CJK COMPATIBILITY IDEOGRAPH-F956
+FA54 ; [.9E24.0020.0002.7A40] # CJK COMPATIBILITY IDEOGRAPH-FA54
+2F959 ; [.9E24.0020.0002.7A40] # CJK COMPATIBILITY IDEOGRAPH-2F959
+2F95A ; [.A79C.0020.0002.7A4A] # CJK COMPATIBILITY IDEOGRAPH-2F95A
+2F95B ; [.D3B2.0020.0002.7A4F] # CJK COMPATIBILITY IDEOGRAPH-2F95B
+FA55 ; [.92B6.0020.0002.7A81] # CJK COMPATIBILITY IDEOGRAPH-FA55
+FAAC ; [.9231.0020.0002.7AB1] # CJK COMPATIBILITY IDEOGRAPH-FAAC
+F9F7 ; [.9808.0020.0002.7ACB] # CJK COMPATIBILITY IDEOGRAPH-F9F7
+2F95F ; [.85BC.0020.0002.7AEE] # CJK COMPATIBILITY IDEOGRAPH-2F95F
+F9F8 ; [.9833.0020.0002.7B20] # CJK COMPATIBILITY IDEOGRAPH-F9F8
+FA56 ; [.A87C.0020.0002.7BC0] # CJK COMPATIBILITY IDEOGRAPH-FA56
+FAAD ; [.A87C.0020.0002.7BC0] # CJK COMPATIBILITY IDEOGRAPH-FAAD
+2F962 ; [.BB3E.0020.0002.7BC6] # CJK COMPATIBILITY IDEOGRAPH-2F962
+2F963 ; [.BA5F.0020.0002.7BC9] # CJK COMPATIBILITY IDEOGRAPH-2F963
+F9A6 ; [.9992.0020.0002.7C3E] # CJK COMPATIBILITY IDEOGRAPH-F9A6
+F944 ; [.9BF8.0020.0002.7C60] # CJK COMPATIBILITY IDEOGRAPH-F944
+FAAE ; [.9686.0020.0002.7C7B] # CJK COMPATIBILITY IDEOGRAPH-FAAE
+F9F9 ; [.9834.0020.0002.7C92] # CJK COMPATIBILITY IDEOGRAPH-F9F9
+FA1D ; [.AB32.0020.0002.7CBE] # CJK COMPATIBILITY IDEOGRAPH-FA1D
+2F966 ; [.8114.0020.0002.7CD2] # CJK COMPATIBILITY IDEOGRAPH-2F966
+FA03 ; [.915F.0020.0002.7CD6] # CJK COMPATIBILITY IDEOGRAPH-FA03
+2F969 ; [.C8EE.0020.0002.7CE3] # CJK COMPATIBILITY IDEOGRAPH-2F969
+F97B ; [.9A24.0020.0002.7CE7] # CJK COMPATIBILITY IDEOGRAPH-F97B
+2F968 ; [.AB10.0020.0002.7CE8] # CJK COMPATIBILITY IDEOGRAPH-2F968
+2F96A ; [.A778.0020.0002.7D00] # CJK COMPATIBILITY IDEOGRAPH-2F96A
+F9CF ; [.952E.0020.0002.7D10] # CJK COMPATIBILITY IDEOGRAPH-F9CF
+F96A ; [.C970.0020.0002.7D22] # CJK COMPATIBILITY IDEOGRAPH-F96A
+F94F ; [.9689.0020.0002.7D2F] # CJK COMPATIBILITY IDEOGRAPH-F94F
+FAAF ; [.90A1.0020.0002.7D5B] # CJK COMPATIBILITY IDEOGRAPH-FAAF
+2F96C ; [.81D3.0020.0002.7D63] # CJK COMPATIBILITY IDEOGRAPH-2F96C
+F93D ; [.9C4A.0020.0002.7DA0] # CJK COMPATIBILITY IDEOGRAPH-F93D
+F957 ; [.9A73.0020.0002.7DBE] # CJK COMPATIBILITY IDEOGRAPH-F957
+2F96E ; [.C427.0020.0002.7DC7] # CJK COMPATIBILITY IDEOGRAPH-2F96E
+F996 ; [.99BA.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-F996
+FA57 ; [.99BA.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-FA57
+FAB0 ; [.99BA.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-FAB0
+2F96F ; [.C61F.0020.0002.7E02] # CJK COMPATIBILITY IDEOGRAPH-2F96F
+FA58 ; [.AAC3.0020.0002.7E09] # CJK COMPATIBILITY IDEOGRAPH-FA58
+F950 ; [.9C3C.0020.0002.7E37] # CJK COMPATIBILITY IDEOGRAPH-F950
+FA59 ; [.8A28.0020.0002.7E41] # CJK COMPATIBILITY IDEOGRAPH-FA59
+2F970 ; [.C8A7.0020.0002.7E45] # CJK COMPATIBILITY IDEOGRAPH-2F970
+FAB1 ; [.85D7.0020.0002.7F3E] # CJK COMPATIBILITY IDEOGRAPH-FAB1
+FA5A ; [.C20E.0020.0002.7F72] # CJK COMPATIBILITY IDEOGRAPH-FA5A
+F9E6 ; [.97C3.0020.0002.7F79] # CJK COMPATIBILITY IDEOGRAPH-F9E6
+2F976 ; [.BCA2.0020.0002.7F7A] # CJK COMPATIBILITY IDEOGRAPH-2F976
+F90F ; [.9B52.0020.0002.7F85] # CJK COMPATIBILITY IDEOGRAPH-F90F
+2F978 ; [.D0D3.0020.0002.7F95] # CJK COMPATIBILITY IDEOGRAPH-2F978
+F9AF ; [.9A62.0020.0002.7F9A] # CJK COMPATIBILITY IDEOGRAPH-F9AF
+FA1E ; [.D47D.0020.0002.7FBD] # CJK COMPATIBILITY IDEOGRAPH-FA1E
+2F979 ; [.CB06.0020.0002.7FFA] # CJK COMPATIBILITY IDEOGRAPH-2F979
+F934 ; [.96B7.0020.0002.8001] # CJK COMPATIBILITY IDEOGRAPH-F934
+FA5B ; [.B856.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-FA5B
+FAB2 ; [.B856.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-FAB2
+2F97A ; [.B856.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-2F97A
+F9B0 ; [.9A64.0020.0002.8046] # CJK COMPATIBILITY IDEOGRAPH-F9B0
+2F97D ; [.85BA.0020.0002.8060] # CJK COMPATIBILITY IDEOGRAPH-2F97D
+F997 ; [.9989.0020.0002.806F] # CJK COMPATIBILITY IDEOGRAPH-F997
+2F97F ; [.C7D5.0020.0002.8070] # CJK COMPATIBILITY IDEOGRAPH-2F97F
+F945 ; [.9BF9.0020.0002.807E] # CJK COMPATIBILITY IDEOGRAPH-F945
+F953 ; [.9600.0020.0002.808B] # CJK COMPATIBILITY IDEOGRAPH-F953
+2F8D6 ; [.93E7.0020.0002.80AD] # CJK COMPATIBILITY IDEOGRAPH-2F8D6
+2F982 ; [.D4B0.0020.0002.80B2] # CJK COMPATIBILITY IDEOGRAPH-2F982
+2F983 ; [.C780.0020.0002.8103] # CJK COMPATIBILITY IDEOGRAPH-2F983
+2F985 ; [.851D.0020.0002.813E] # CJK COMPATIBILITY IDEOGRAPH-2F985
+F926 ; [.95F4.0020.0002.81D8] # CJK COMPATIBILITY IDEOGRAPH-F926
+F9F6 ; [.99E7.0020.0002.81E8] # CJK COMPATIBILITY IDEOGRAPH-F9F6
+FA5C ; [.BCE6.0020.0002.81ED] # CJK COMPATIBILITY IDEOGRAPH-FA5C
+2F893 ; [.D42F.0020.0002.8201] # CJK COMPATIBILITY IDEOGRAPH-2F893
+2F98B ; [.D42F.0020.0002.8201] # CJK COMPATIBILITY IDEOGRAPH-2F98B
+2F98C ; [.B23F.0020.0002.8204] # CJK COMPATIBILITY IDEOGRAPH-2F98C
+FA6D ; [.9F3F.0020.0002.8218] # CJK COMPATIBILITY IDEOGRAPH-FA6D
+F97C ; [.9A16.0020.0002.826F] # CJK COMPATIBILITY IDEOGRAPH-F97C
+FA5D ; [.C6CB.0020.0002.8279] # CJK COMPATIBILITY IDEOGRAPH-FA5D
+FA5E ; [.C6CB.0020.0002.8279] # CJK COMPATIBILITY IDEOGRAPH-FA5E
+2F990 ; [.D4AD.0020.0002.828B] # CJK COMPATIBILITY IDEOGRAPH-2F990
+2F98F ; [.ADCA.0020.0002.8291] # CJK COMPATIBILITY IDEOGRAPH-2F98F
+2F991 ; [.B6F7.0020.0002.829D] # CJK COMPATIBILITY IDEOGRAPH-2F991
+2F993 ; [.A43F.0020.0002.82B1] # CJK COMPATIBILITY IDEOGRAPH-2F993
+2F994 ; [.8AA5.0020.0002.82B3] # CJK COMPATIBILITY IDEOGRAPH-2F994
+2F995 ; [.CD7E.0020.0002.82BD] # CJK COMPATIBILITY IDEOGRAPH-2F995
+F974 ; [.C386.0020.0002.82E5] # CJK COMPATIBILITY IDEOGRAPH-F974
+2F998 ; [.C386.0020.0002.82E5] # CJK COMPATIBILITY IDEOGRAPH-2F998
+2F996 ; [.A0F5.0020.0002.82E6] # CJK COMPATIBILITY IDEOGRAPH-2F996
+2F999 ; [.BC82.0020.0002.831D] # CJK COMPATIBILITY IDEOGRAPH-2F999
+2F99C ; [.D198.0020.0002.8323] # CJK COMPATIBILITY IDEOGRAPH-2F99C
+F9FE ; [.BC3C.0020.0002.8336] # CJK COMPATIBILITY IDEOGRAPH-F9FE
+FAB3 ; [.A5F7.0020.0002.8352] # CJK COMPATIBILITY IDEOGRAPH-FAB3
+2F9A0 ; [.85CF.0020.0002.8353] # CJK COMPATIBILITY IDEOGRAPH-2F9A0
+2F99A ; [.C3D3.0020.0002.8363] # CJK COMPATIBILITY IDEOGRAPH-2F99A
+2F99B ; [.A86D.0020.0002.83AD] # CJK COMPATIBILITY IDEOGRAPH-2F99B
+2F99D ; [.87E9.0020.0002.83BD] # CJK COMPATIBILITY IDEOGRAPH-2F99D
+F93E ; [.9B03.0020.0002.83C9] # CJK COMPATIBILITY IDEOGRAPH-F93E
+2F9A1 ; [.ABC4.0020.0002.83CA] # CJK COMPATIBILITY IDEOGRAPH-2F9A1
+2F9A2 ; [.ACE3.0020.0002.83CC] # CJK COMPATIBILITY IDEOGRAPH-2F9A2
+2F9A3 ; [.C6B0.0020.0002.83DC] # CJK COMPATIBILITY IDEOGRAPH-2F9A3
+2F99E ; [.8DE0.0020.0002.83E7] # CJK COMPATIBILITY IDEOGRAPH-2F99E
+FAB4 ; [.A44D.0020.0002.83EF] # CJK COMPATIBILITY IDEOGRAPH-FAB4
+F958 ; [.9A69.0020.0002.83F1] # CJK COMPATIBILITY IDEOGRAPH-F958
+F918 ; [.9B7C.0020.0002.843D] # CJK COMPATIBILITY IDEOGRAPH-F918
+F96E ; [.CDE9.0020.0002.8449] # CJK COMPATIBILITY IDEOGRAPH-F96E
+FA5F ; [.B86A.0020.0002.8457] # CJK COMPATIBILITY IDEOGRAPH-FA5F
+2F99F ; [.B86A.0020.0002.8457] # CJK COMPATIBILITY IDEOGRAPH-2F99F
+F999 ; [.9980.0020.0002.84EE] # CJK COMPATIBILITY IDEOGRAPH-F999
+2F9A8 ; [.85DC.0020.0002.84F1] # CJK COMPATIBILITY IDEOGRAPH-2F9A8
+2F9A9 ; [.AA97.0020.0002.84F3] # CJK COMPATIBILITY IDEOGRAPH-2F9A9
+F9C2 ; [.98FD.0020.0002.84FC] # CJK COMPATIBILITY IDEOGRAPH-F9C2
+2F9AA ; [.C74F.0020.0002.8516] # CJK COMPATIBILITY IDEOGRAPH-2F9AA
+2F9AC ; [.C399.0020.0002.8564] # CJK COMPATIBILITY IDEOGRAPH-2F9AC
+F923 ; [.971B.0020.0002.85CD] # CJK COMPATIBILITY IDEOGRAPH-F923
+F9F0 ; [.9A11.0020.0002.85FA] # CJK COMPATIBILITY IDEOGRAPH-F9F0
+F935 ; [.9AC4.0020.0002.8606] # CJK COMPATIBILITY IDEOGRAPH-F935
+FA20 ; [.AEF5.0020.0002.8612] # CJK COMPATIBILITY IDEOGRAPH-FA20
+F91F ; [.9728.0020.0002.862D] # CJK COMPATIBILITY IDEOGRAPH-F91F
+F910 ; [.9B5D.0020.0002.863F] # CJK COMPATIBILITY IDEOGRAPH-F910
+2F9B3 ; [.95D6.0020.0002.8650] # CJK COMPATIBILITY IDEOGRAPH-2F9B3
+F936 ; [.9AD8.0020.0002.865C] # CJK COMPATIBILITY IDEOGRAPH-F936
+2F9B4 ; [.9AD8.0020.0002.865C] # CJK COMPATIBILITY IDEOGRAPH-2F9B4
+2F9B5 ; [.A14D.0020.0002.8667] # CJK COMPATIBILITY IDEOGRAPH-2F9B5
+2F9B6 ; [.B256.0020.0002.8669] # CJK COMPATIBILITY IDEOGRAPH-2F9B6
+2F9B8 ; [.AF15.0020.0002.8688] # CJK COMPATIBILITY IDEOGRAPH-2F9B8
+2F9B7 ; [.BBB2.0020.0002.86A9] # CJK COMPATIBILITY IDEOGRAPH-2F9B7
+2F9BA ; [.85D9.0020.0002.86E2] # CJK COMPATIBILITY IDEOGRAPH-2F9BA
+2F9B9 ; [.D57F.0020.0002.870E] # CJK COMPATIBILITY IDEOGRAPH-2F9B9
+2F9BC ; [.8E3B.0020.0002.8728] # CJK COMPATIBILITY IDEOGRAPH-2F9BC
+2F9BD ; [.BA44.0020.0002.876B] # CJK COMPATIBILITY IDEOGRAPH-2F9BD
+FAB5 ; [.D5EE.0020.0002.8779] # CJK COMPATIBILITY IDEOGRAPH-FAB5
+2F9BB ; [.D5EE.0020.0002.8779] # CJK COMPATIBILITY IDEOGRAPH-2F9BB
+2F9BE ; [.C674.0020.0002.8786] # CJK COMPATIBILITY IDEOGRAPH-2F9BE
+F911 ; [.9B51.0020.0002.87BA] # CJK COMPATIBILITY IDEOGRAPH-F911
+2F9C0 ; [.9EFE.0020.0002.87E1] # CJK COMPATIBILITY IDEOGRAPH-2F9C0
+2F9C1 ; [.B510.0020.0002.8801] # CJK COMPATIBILITY IDEOGRAPH-2F9C1
+F927 ; [.95F9.0020.0002.881F] # CJK COMPATIBILITY IDEOGRAPH-F927
+FA08 ; [.B543.0020.0002.884C] # CJK COMPATIBILITY IDEOGRAPH-FA08
+2F9C3 ; [.BB4D.0020.0002.8860] # CJK COMPATIBILITY IDEOGRAPH-2F9C3
+2F9C4 ; [.CBE0.0020.0002.8863] # CJK COMPATIBILITY IDEOGRAPH-2F9C4
+F9A0 ; [.98B8.0020.0002.88C2] # CJK COMPATIBILITY IDEOGRAPH-F9A0
+F9E7 ; [.97F6.0020.0002.88CF] # CJK COMPATIBILITY IDEOGRAPH-F9E7
+2F9C6 ; [.9919.0020.0002.88D7] # CJK COMPATIBILITY IDEOGRAPH-2F9C6
+2F9C7 ; [.C276.0020.0002.88DE] # CJK COMPATIBILITY IDEOGRAPH-2F9C7
+F9E8 ; [.989C.0020.0002.88E1] # CJK COMPATIBILITY IDEOGRAPH-F9E8
+F912 ; [.9B67.0020.0002.88F8] # CJK COMPATIBILITY IDEOGRAPH-F912
+2F9C9 ; [.CF76.0020.0002.88FA] # CJK COMPATIBILITY IDEOGRAPH-2F9C9
+FA60 ; [.A282.0020.0002.8910] # CJK COMPATIBILITY IDEOGRAPH-FA60
+FAB6 ; [.B011.0020.0002.8941] # CJK COMPATIBILITY IDEOGRAPH-FAB6
+F924 ; [.9724.0020.0002.8964] # CJK COMPATIBILITY IDEOGRAPH-F924
+FAB7 ; [.8BFE.0020.0002.8986] # CJK COMPATIBILITY IDEOGRAPH-FAB7
+FA0A ; [.AA1C.0020.0002.898B] # CJK COMPATIBILITY IDEOGRAPH-FA0A
+FA61 ; [.BFE1.0020.0002.8996] # CJK COMPATIBILITY IDEOGRAPH-FA61
+FAB8 ; [.BFE1.0020.0002.8996] # CJK COMPATIBILITY IDEOGRAPH-FAB8
+2F9CF ; [.BE22.0020.0002.8AA0] # CJK COMPATIBILITY IDEOGRAPH-2F9CF
+F96F ; [.C24F.0020.0002.8AAA] # CJK COMPATIBILITY IDEOGRAPH-F96F
+F9A1 ; [.C24F.0020.0002.8AAA] # CJK COMPATIBILITY IDEOGRAPH-F9A1
+FAB9 ; [.8E75.0020.0002.8ABF] # CJK COMPATIBILITY IDEOGRAPH-FAB9
+FABB ; [.B047.0020.0002.8ACB] # CJK COMPATIBILITY IDEOGRAPH-FABB
+F97D ; [.9A3C.0020.0002.8AD2] # CJK COMPATIBILITY IDEOGRAPH-F97D
+F941 ; [.9BCB.0020.0002.8AD6] # CJK COMPATIBILITY IDEOGRAPH-F941
+FABE ; [.D502.0020.0002.8AED] # CJK COMPATIBILITY IDEOGRAPH-FABE
+2F9D0 ; [.D502.0020.0002.8AED] # CJK COMPATIBILITY IDEOGRAPH-2F9D0
+FA22 ; [.BA48.0020.0002.8AF8] # CJK COMPATIBILITY IDEOGRAPH-FA22
+FABA ; [.BA48.0020.0002.8AF8] # CJK COMPATIBILITY IDEOGRAPH-FABA
+F95D ; [.95A4.0020.0002.8AFE] # CJK COMPATIBILITY IDEOGRAPH-F95D
+FABD ; [.95A4.0020.0002.8AFE] # CJK COMPATIBILITY IDEOGRAPH-FABD
+FA62 ; [.CDF9.0020.0002.8B01] # CJK COMPATIBILITY IDEOGRAPH-FA62
+FABC ; [.CDF9.0020.0002.8B01] # CJK COMPATIBILITY IDEOGRAPH-FABC
+FA63 ; [.AA9A.0020.0002.8B39] # CJK COMPATIBILITY IDEOGRAPH-FA63
+FABF ; [.AA9A.0020.0002.8B39] # CJK COMPATIBILITY IDEOGRAPH-FABF
+F9FC ; [.C017.0020.0002.8B58] # CJK COMPATIBILITY IDEOGRAPH-F9FC
+F95A ; [.8F10.0020.0002.8B80] # CJK COMPATIBILITY IDEOGRAPH-F95A
+FAC0 ; [.831E.0020.0002.8B8A] # CJK COMPATIBILITY IDEOGRAPH-FAC0
+2F9D1 ; [.831E.0020.0002.8B8A] # CJK COMPATIBILITY IDEOGRAPH-2F9D1
+F900 ; [.ADCC.0020.0002.8C48] # CJK COMPATIBILITY IDEOGRAPH-F900
+2F9D2 ; [.BFAB.0020.0002.8C55] # CJK COMPATIBILITY IDEOGRAPH-2F9D2
+2F9D4 ; [.9F4B.0020.0002.8CAB] # CJK COMPATIBILITY IDEOGRAPH-2F9D4
+2F9D5 ; [.8245.0020.0002.8CC1] # CJK COMPATIBILITY IDEOGRAPH-2F9D5
+F948 ; [.9B0D.0020.0002.8CC2] # CJK COMPATIBILITY IDEOGRAPH-F948
+F903 ; [.A822.0020.0002.8CC8] # CJK COMPATIBILITY IDEOGRAPH-F903
+FA64 ; [.8331.0020.0002.8CD3] # CJK COMPATIBILITY IDEOGRAPH-FA64
+FA65 ; [.C56B.0020.0002.8D08] # CJK COMPATIBILITY IDEOGRAPH-FA65
+FAC1 ; [.C56B.0020.0002.8D08] # CJK COMPATIBILITY IDEOGRAPH-FAC1
+2F9D6 ; [.9D8F.0020.0002.8D1B] # CJK COMPATIBILITY IDEOGRAPH-2F9D6
+2F9D7 ; [.ADCD.0020.0002.8D77] # CJK COMPATIBILITY IDEOGRAPH-2F9D7
+2F9DB ; [.A9FA.0020.0002.8DBC] # CJK COMPATIBILITY IDEOGRAPH-2F9DB
+2F9DA ; [.8024.0020.0002.8DCB] # CJK COMPATIBILITY IDEOGRAPH-2F9DA
+F937 ; [.9B0E.0020.0002.8DEF] # CJK COMPATIBILITY IDEOGRAPH-F937
+2F9DC ; [.8589.0020.0002.8DF0] # CJK COMPATIBILITY IDEOGRAPH-2F9DC
+F902 ; [.BC58.0020.0002.8ECA] # CJK COMPATIBILITY IDEOGRAPH-F902
+2F9DE ; [.C321.0020.0002.8ED4] # CJK COMPATIBILITY IDEOGRAPH-2F9DE
+F998 ; [.9549.0020.0002.8F26] # CJK COMPATIBILITY IDEOGRAPH-F998
+F9D7 ; [.9BC2.0020.0002.8F2A] # CJK COMPATIBILITY IDEOGRAPH-F9D7
+FAC2 ; [.C1FB.0020.0002.8F38] # CJK COMPATIBILITY IDEOGRAPH-FAC2
+2F9DF ; [.C1FB.0020.0002.8F38] # CJK COMPATIBILITY IDEOGRAPH-2F9DF
+FA07 ; [.8B97.0020.0002.8F3B] # CJK COMPATIBILITY IDEOGRAPH-FA07
+F98D ; [.988A.0020.0002.8F62] # CJK COMPATIBILITY IDEOGRAPH-F98D
+2F98D ; [.C64B.0020.0002.8F9E] # CJK COMPATIBILITY IDEOGRAPH-2F98D
+F971 ; [.BD5F.0020.0002.8FB0] # CJK COMPATIBILITY IDEOGRAPH-F971
+FA66 ; [.BE9F.0020.0002.8FB6] # CJK COMPATIBILITY IDEOGRAPH-FA66
+F99A ; [.996B.0020.0002.9023] # CJK COMPATIBILITY IDEOGRAPH-F99A
+FA25 ; [.CCEA.0020.0002.9038] # CJK COMPATIBILITY IDEOGRAPH-FA25
+FA67 ; [.CCEA.0020.0002.9038] # CJK COMPATIBILITY IDEOGRAPH-FA67
+FAC3 ; [.BBE0.0020.0002.9072] # CJK COMPATIBILITY IDEOGRAPH-FAC3
+F9C3 ; [.98E6.0020.0002.907C] # CJK COMPATIBILITY IDEOGRAPH-F9C3
+F913 ; [.9B5E.0020.0002.908F] # CJK COMPATIBILITY IDEOGRAPH-F913
+2F9E2 ; [.ADC4.0020.0002.9094] # CJK COMPATIBILITY IDEOGRAPH-2F9E2
+F92C ; [.975C.0020.0002.90CE] # CJK COMPATIBILITY IDEOGRAPH-F92C
+FA2E ; [.975F.0020.0002.90DE] # CJK COMPATIBILITY IDEOGRAPH-FA2E
+2F9E3 ; [.85CC.0020.0002.90F1] # CJK COMPATIBILITY IDEOGRAPH-2F9E3
+FA26 ; [.8CC2.0020.0002.90FD] # CJK COMPATIBILITY IDEOGRAPH-FA26
+2F9E4 ; [.C423.0020.0002.9111] # CJK COMPATIBILITY IDEOGRAPH-2F9E4
+2F9E6 ; [.BC9D.0020.0002.911B] # CJK COMPATIBILITY IDEOGRAPH-2F9E6
+F919 ; [.96C8.0020.0002.916A] # CJK COMPATIBILITY IDEOGRAPH-F919
+FAC4 ; [.C8CB.0020.0002.9199] # CJK COMPATIBILITY IDEOGRAPH-FAC4
+F9B7 ; [.97FF.0020.0002.91B4] # CJK COMPATIBILITY IDEOGRAPH-F9B7
+F9E9 ; [.97EB.0020.0002.91CC] # CJK COMPATIBILITY IDEOGRAPH-F9E9
+F97E ; [.9A3A.0020.0002.91CF] # CJK COMPATIBILITY IDEOGRAPH-F97E
+F90A ; [.AA72.0020.0002.91D1] # CJK COMPATIBILITY IDEOGRAPH-F90A
+F9B1 ; [.9A6E.0020.0002.9234] # CJK COMPATIBILITY IDEOGRAPH-F9B1
+2F9E7 ; [.8086.0020.0002.9238] # CJK COMPATIBILITY IDEOGRAPH-2F9E7
+FAC5 ; [.B553.0020.0002.9276] # CJK COMPATIBILITY IDEOGRAPH-FAC5
+2F9EA ; [.8369.0020.0002.927C] # CJK COMPATIBILITY IDEOGRAPH-2F9EA
+2F9E8 ; [.B62C.0020.0002.92D7] # CJK COMPATIBILITY IDEOGRAPH-2F9E8
+2F9E9 ; [.A455.0020.0002.92D8] # CJK COMPATIBILITY IDEOGRAPH-2F9E9
+F93F ; [.9B23.0020.0002.9304] # CJK COMPATIBILITY IDEOGRAPH-F93F
+F99B ; [.99BE.0020.0002.934A] # CJK COMPATIBILITY IDEOGRAPH-F99B
+2F9EB ; [.B013.0020.0002.93F9] # CJK COMPATIBILITY IDEOGRAPH-2F9EB
+2F9EC ; [.C516.0020.0002.9415] # CJK COMPATIBILITY IDEOGRAPH-2F9EC
+2F9EE ; [.A032.0020.0002.958B] # CJK COMPATIBILITY IDEOGRAPH-2F9EE
+F986 ; [.9C1F.0020.0002.95AD] # CJK COMPATIBILITY IDEOGRAPH-F986
+2F9F0 ; [.C083.0020.0002.95B7] # CJK COMPATIBILITY IDEOGRAPH-2F9F0
+F9C6 ; [.C3B3.0020.0002.962E] # CJK COMPATIBILITY IDEOGRAPH-F9C6
+F951 ; [.96FA.0020.0002.964B] # CJK COMPATIBILITY IDEOGRAPH-F951
+FA09 ; [.AB03.0020.0002.964D] # CJK COMPATIBILITY IDEOGRAPH-FA09
+F959 ; [.9A68.0020.0002.9675] # CJK COMPATIBILITY IDEOGRAPH-F959
+F9D3 ; [.9AFC.0020.0002.9678] # CJK COMPATIBILITY IDEOGRAPH-F9D3
+FAC6 ; [.BA71.0020.0002.967C] # CJK COMPATIBILITY IDEOGRAPH-FAC6
+F9DC ; [.9BDC.0020.0002.9686] # CJK COMPATIBILITY IDEOGRAPH-F9DC
+F9F1 ; [.99DD.0020.0002.96A3] # CJK COMPATIBILITY IDEOGRAPH-F9F1
+FA2F ; [.9859.0020.0002.96B7] # CJK COMPATIBILITY IDEOGRAPH-FA2F
+F9B8 ; [.985F.0020.0002.96B8] # CJK COMPATIBILITY IDEOGRAPH-F9B8
+2F9F3 ; [.AF18.0020.0002.96C3] # CJK COMPATIBILITY IDEOGRAPH-2F9F3
+F9EA ; [.97D0.0020.0002.96E2] # CJK COMPATIBILITY IDEOGRAPH-F9EA
+FA68 ; [.9467.0020.0002.96E3] # CJK COMPATIBILITY IDEOGRAPH-FA68
+FAC7 ; [.9467.0020.0002.96E3] # CJK COMPATIBILITY IDEOGRAPH-FAC7
+F9B2 ; [.9A70.0020.0002.96F6] # CJK COMPATIBILITY IDEOGRAPH-F9B2
+F949 ; [.964D.0020.0002.96F7] # CJK COMPATIBILITY IDEOGRAPH-F949
+2F9F5 ; [.D625.0020.0002.9723] # CJK COMPATIBILITY IDEOGRAPH-2F9F5
+F938 ; [.9B37.0020.0002.9732] # CJK COMPATIBILITY IDEOGRAPH-F938
+F9B3 ; [.9A8D.0020.0002.9748] # CJK COMPATIBILITY IDEOGRAPH-F9B3
+FA1C ; [.AB77.0020.0002.9756] # CJK COMPATIBILITY IDEOGRAPH-FA1C
+FAC8 ; [.AB77.0020.0002.9756] # CJK COMPATIBILITY IDEOGRAPH-FAC8
+FAC9 ; [.80D4.0020.0002.97DB] # CJK COMPATIBILITY IDEOGRAPH-FAC9
+2F9FA ; [.8286.0020.0002.97E0] # CJK COMPATIBILITY IDEOGRAPH-2F9FA
+FA69 ; [.B512.0020.0002.97FF] # CJK COMPATIBILITY IDEOGRAPH-FA69
+FACA ; [.B512.0020.0002.97FF] # CJK COMPATIBILITY IDEOGRAPH-FACA
+FACB ; [.CA47.0020.0002.980B] # CJK COMPATIBILITY IDEOGRAPH-FACB
+2F9FE ; [.CA47.0020.0002.980B] # CJK COMPATIBILITY IDEOGRAPH-2F9FE
+2F9FF ; [.CA47.0020.0002.980B] # CJK COMPATIBILITY IDEOGRAPH-2F9FF
+F9B4 ; [.9A99.0020.0002.9818] # CJK COMPATIBILITY IDEOGRAPH-F9B4
+2FA00 ; [.85BD.0020.0002.9829] # CJK COMPATIBILITY IDEOGRAPH-2FA00
+FA6A ; [.85A6.0020.0002.983B] # CJK COMPATIBILITY IDEOGRAPH-FA6A
+FACC ; [.85A6.0020.0002.983B] # CJK COMPATIBILITY IDEOGRAPH-FACC
+F9D0 ; [.9693.0020.0002.985E] # CJK COMPATIBILITY IDEOGRAPH-F9D0
+2FA02 ; [.A6B2.0020.0002.98E2] # CJK COMPATIBILITY IDEOGRAPH-2FA02
+FA2A ; [.8A4D.0020.0002.98EF] # CJK COMPATIBILITY IDEOGRAPH-FA2A
+FA2B ; [.C84E.0020.0002.98FC] # CJK COMPATIBILITY IDEOGRAPH-FA2B
+FA2C ; [.9F41.0020.0002.9928] # CJK COMPATIBILITY IDEOGRAPH-FA2C
+2FA04 ; [.CA8F.0020.0002.9929] # CJK COMPATIBILITY IDEOGRAPH-2FA04
+2FA05 ; [.D5F2.0020.0002.99A7] # CJK COMPATIBILITY IDEOGRAPH-2FA05
+2FA06 ; [.813C.0020.0002.99C2] # CJK COMPATIBILITY IDEOGRAPH-2FA06
+F91A ; [.9B82.0020.0002.99F1] # CJK COMPATIBILITY IDEOGRAPH-F91A
+2FA07 ; [.9361.0020.0002.99FE] # CJK COMPATIBILITY IDEOGRAPH-2FA07
+F987 ; [.97E7.0020.0002.9A6A] # CJK COMPATIBILITY IDEOGRAPH-F987
+FACD ; [.B997.0020.0002.9B12] # CJK COMPATIBILITY IDEOGRAPH-FACD
+2FA0A ; [.B997.0020.0002.9B12] # CJK COMPATIBILITY IDEOGRAPH-2FA0A
+F939 ; [.9ADD.0020.0002.9B6F] # CJK COMPATIBILITY IDEOGRAPH-F939
+2FA0B ; [.A7C3.0020.0002.9C40] # CJK COMPATIBILITY IDEOGRAPH-2FA0B
+F9F2 ; [.99F1.0020.0002.9C57] # CJK COMPATIBILITY IDEOGRAPH-F9F2
+2FA0C ; [.A9BB.0020.0002.9CFD] # CJK COMPATIBILITY IDEOGRAPH-2FA0C
+2FA0F ; [.8528.0020.0002.9D67] # CJK COMPATIBILITY IDEOGRAPH-2FA0F
+FA2D ; [.A28C.0020.0002.9DB4] # CJK COMPATIBILITY IDEOGRAPH-FA2D
+F93A ; [.9B3A.0020.0002.9DFA] # CJK COMPATIBILITY IDEOGRAPH-F93A
+F920 ; [.9BA4.0020.0002.9E1E] # CJK COMPATIBILITY IDEOGRAPH-F920
+F940 ; [.9AFD.0020.0002.9E7F] # CJK COMPATIBILITY IDEOGRAPH-F940
+F988 ; [.9871.0020.0002.9E97] # CJK COMPATIBILITY IDEOGRAPH-F988
+F9F3 ; [.99F2.0020.0002.9E9F] # CJK COMPATIBILITY IDEOGRAPH-F9F3
+2FA15 ; [.862D.0020.0002.9EBB] # CJK COMPATIBILITY IDEOGRAPH-2FA15
+F989 ; [.97C2.0020.0002.9ECE] # CJK COMPATIBILITY IDEOGRAPH-F989
+2FA17 ; [.B762.0020.0002.9EF9] # CJK COMPATIBILITY IDEOGRAPH-2FA17
+2FA18 ; [.88D4.0020.0002.9EFE] # CJK COMPATIBILITY IDEOGRAPH-2FA18
+2FA19 ; [.B715.0020.0002.9F05] # CJK COMPATIBILITY IDEOGRAPH-2FA19
+2FA1A ; [.8885.0020.0002.9F0F] # CJK COMPATIBILITY IDEOGRAPH-2FA1A
+2FA1B ; [.8A85.0020.0002.9F16] # CJK COMPATIBILITY IDEOGRAPH-2FA1B
+2FA1C ; [.81FB.0020.0002.9F3B] # CJK COMPATIBILITY IDEOGRAPH-2FA1C
+FAD8 ; [.CA9A.0020.0002.9F43] # CJK COMPATIBILITY IDEOGRAPH-FAD8
+F9C4 ; [.9BE4.0020.0002.9F8D] # CJK COMPATIBILITY IDEOGRAPH-F9C4
+FAD9 ; [.8497.0020.0002.9F8E] # CJK COMPATIBILITY IDEOGRAPH-FAD9
+F907 ; [.9ED7.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-F907
+F908 ; [.9ED7.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-F908
+FACE ; [.9ED7.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-FACE
+2F81F ; [.8505.0020.0002.34DF] # CJK COMPATIBILITY IDEOGRAPH-2F81F
+2F888 ; [.87AA.0020.0002.3862] # CJK COMPATIBILITY IDEOGRAPH-2F888
+2F8D0 ; [.D37C.0020.0002.3B08] # CJK COMPATIBILITY IDEOGRAPH-2F8D0
+2F8CE ; [.D2E0.0020.0002.3B19] # CJK COMPATIBILITY IDEOGRAPH-2F8CE
+2F8DE ; [.A447.0020.0002.3B49] # CJK COMPATIBILITY IDEOGRAPH-2F8DE
+2F8EE ; [.CC56.0020.0002.3C18] # CJK COMPATIBILITY IDEOGRAPH-2F8EE
+2F90A ; [.9C08.0020.0002.3D33] # CJK COMPATIBILITY IDEOGRAPH-2F90A
+2F92C ; [.85CD.0020.0002.3EB8] # CJK COMPATIBILITY IDEOGRAPH-2F92C
+2F92D ; [.85CD.0020.0002.3EB8] # CJK COMPATIBILITY IDEOGRAPH-2F92D
+FAD4 ; [.A871.0020.0002.4039] # CJK COMPATIBILITY IDEOGRAPH-FAD4
+2F949 ; [.A871.0020.0002.4039] # CJK COMPATIBILITY IDEOGRAPH-2F949
+2F960 ; [.85E0.0020.0002.4202] # CJK COMPATIBILITY IDEOGRAPH-2F960
+2F96D ; [.CE1D.0020.0002.4301] # CJK COMPATIBILITY IDEOGRAPH-2F96D
+2F8D7 ; [.9118.0020.0002.43D9] # CJK COMPATIBILITY IDEOGRAPH-2F8D7
+2FA0E ; [.A746.0020.0002.4CED] # CJK COMPATIBILITY IDEOGRAPH-2FA0E
+ENTRY
+};
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/allkeys.txt b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/allkeys.txt
index a39ea3ceaec..514c63cc37b 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/allkeys.txt
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Collate/allkeys.txt
@@ -1,22 +1,22 @@
-# unidata-6.1.0.txt
-# Date: 2011-12-06, 16:57:32 GMT [KW]
+# unidata-6.2.0.txt
+# Date: 2012-08-14, 19:01:52 GMT [KW]
#
# This file defines the Default Unicode Collation Element Table
# (DUCET) for the Unicode Collation Algorithm
#
-# Copyright (c) 2001-2011 Unicode, Inc.
+# Copyright (c) 2001-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# See UTS #10, Unicode Collation Algorithm, for more information.
#
# Diagnostic weight ranges
-# Primary weight range: 0200..430F (16656)
+# Primary weight range: 0200..432A (16683)
# Secondary weight range: 0020..0177 (344)
# Variant secondaries: 0139..013E (6)
# Digit secondaries: 013F..0177 (57)
# Tertiary weight range: 0002..001F (30)
#
-@version 6.1.0
+@version 6.2.0
0000 ; [.0000.0000.0000.0000] # [0000] NULL (in 6429)
0001 ; [.0000.0000.0000.0000] # [0001] START OF HEADING (in 6429)
@@ -747,24 +747,24 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
0964 ; [*0287.0020.0002.0964] # DEVANAGARI DANDA
0965 ; [*0288.0020.0002.0965] # DEVANAGARI DOUBLE DANDA
0970 ; [*03B7.0020.0002.0970] # DEVANAGARI ABBREVIATION SIGN
-09F4 ; [*14BF.0020.0002.09F4] # BENGALI CURRENCY NUMERATOR ONE
-09F5 ; [*14C0.0020.0002.09F5] # BENGALI CURRENCY NUMERATOR TWO
-09F6 ; [*14C1.0020.0002.09F6] # BENGALI CURRENCY NUMERATOR THREE
-09F7 ; [*14C2.0020.0002.09F7] # BENGALI CURRENCY NUMERATOR FOUR
-09F8 ; [*14C3.0020.0002.09F8] # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
-09F9 ; [*14C4.0020.0002.09F9] # BENGALI CURRENCY DENOMINATOR SIXTEEN
+09F4 ; [*14D9.0020.0002.09F4] # BENGALI CURRENCY NUMERATOR ONE
+09F5 ; [*14DA.0020.0002.09F5] # BENGALI CURRENCY NUMERATOR TWO
+09F6 ; [*14DB.0020.0002.09F6] # BENGALI CURRENCY NUMERATOR THREE
+09F7 ; [*14DC.0020.0002.09F7] # BENGALI CURRENCY NUMERATOR FOUR
+09F8 ; [*14DD.0020.0002.09F8] # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
+09F9 ; [*14DE.0020.0002.09F9] # BENGALI CURRENCY DENOMINATOR SIXTEEN
09FA ; [*049D.0020.0002.09FA] # BENGALI ISSHAR
0AF0 ; [*03BB.0020.0002.0AF0] # GUJARATI ABBREVIATION SIGN
0B70 ; [*049E.0020.0002.0B70] # ORIYA ISSHAR
-0B72 ; [*14C5.0020.0002.0B72] # ORIYA FRACTION ONE QUARTER
-0B73 ; [*14C6.0020.0002.0B73] # ORIYA FRACTION ONE HALF
-0B74 ; [*14C7.0020.0002.0B74] # ORIYA FRACTION THREE QUARTERS
-0B75 ; [*14C8.0020.0002.0B75] # ORIYA FRACTION ONE SIXTEENTH
-0B76 ; [*14C9.0020.0002.0B76] # ORIYA FRACTION ONE EIGHTH
-0B77 ; [*14CA.0020.0002.0B77] # ORIYA FRACTION THREE SIXTEENTHS
-0BF0 ; [*14D1.0020.0002.0BF0] # TAMIL NUMBER TEN
-0BF1 ; [*14D2.0020.0002.0BF1] # TAMIL NUMBER ONE HUNDRED
-0BF2 ; [*14D3.0020.0002.0BF2] # TAMIL NUMBER ONE THOUSAND
+0B72 ; [*14DF.0020.0002.0B72] # ORIYA FRACTION ONE QUARTER
+0B73 ; [*14E0.0020.0002.0B73] # ORIYA FRACTION ONE HALF
+0B74 ; [*14E1.0020.0002.0B74] # ORIYA FRACTION THREE QUARTERS
+0B75 ; [*14E2.0020.0002.0B75] # ORIYA FRACTION ONE SIXTEENTH
+0B76 ; [*14E3.0020.0002.0B76] # ORIYA FRACTION ONE EIGHTH
+0B77 ; [*14E4.0020.0002.0B77] # ORIYA FRACTION THREE SIXTEENTHS
+0BF0 ; [*14EB.0020.0002.0BF0] # TAMIL NUMBER TEN
+0BF1 ; [*14EC.0020.0002.0BF1] # TAMIL NUMBER ONE HUNDRED
+0BF2 ; [*14ED.0020.0002.0BF2] # TAMIL NUMBER ONE THOUSAND
0BF3 ; [*049F.0020.0002.0BF3] # TAMIL DAY SIGN
0BF4 ; [*04A0.0020.0002.0BF4] # TAMIL MONTH SIGN
0BF5 ; [*04A1.0020.0002.0BF5] # TAMIL YEAR SIGN
@@ -773,12 +773,12 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
0BF8 ; [*04A4.0020.0002.0BF8] # TAMIL AS ABOVE SIGN
0BFA ; [*04A5.0020.0002.0BFA] # TAMIL NUMBER SIGN
0C7F ; [*04A6.0020.0002.0C7F] # TELUGU SIGN TUUMU
-0D70 ; [*14D4.0020.0002.0D70] # MALAYALAM NUMBER TEN
-0D71 ; [*14D5.0020.0002.0D71] # MALAYALAM NUMBER ONE HUNDRED
-0D72 ; [*14D6.0020.0002.0D72] # MALAYALAM NUMBER ONE THOUSAND
-0D73 ; [*14D7.0020.0002.0D73] # MALAYALAM FRACTION ONE QUARTER
-0D74 ; [*14D8.0020.0002.0D74] # MALAYALAM FRACTION ONE HALF
-0D75 ; [*14D9.0020.0002.0D75] # MALAYALAM FRACTION THREE QUARTERS
+0D70 ; [*14EE.0020.0002.0D70] # MALAYALAM NUMBER TEN
+0D71 ; [*14EF.0020.0002.0D71] # MALAYALAM NUMBER ONE HUNDRED
+0D72 ; [*14F0.0020.0002.0D72] # MALAYALAM NUMBER ONE THOUSAND
+0D73 ; [*14F1.0020.0002.0D73] # MALAYALAM FRACTION ONE QUARTER
+0D74 ; [*14F2.0020.0002.0D74] # MALAYALAM FRACTION ONE HALF
+0D75 ; [*14F3.0020.0002.0D75] # MALAYALAM FRACTION THREE QUARTERS
0D79 ; [*04A7.0020.0002.0D79] # MALAYALAM DATE MARK
0DF4 ; [*03BC.0020.0002.0DF4] # SINHALA PUNCTUATION KUNDDALIYA
0E4F ; [*03BD.0020.0002.0E4F] # THAI CHARACTER FONGMAN
@@ -877,17 +877,17 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
1366 ; [*0253.0020.0002.1366] # ETHIOPIC PREFACE COLON
1367 ; [*0269.0020.0002.1367] # ETHIOPIC QUESTION MARK
1368 ; [*02B3.0020.0002.1368] # ETHIOPIC PARAGRAPH SEPARATOR
-1372 ; [*14DA.0020.0002.1372] # ETHIOPIC NUMBER TEN
-1373 ; [*14DB.0020.0002.1373] # ETHIOPIC NUMBER TWENTY
-1374 ; [*14DC.0020.0002.1374] # ETHIOPIC NUMBER THIRTY
-1375 ; [*14DD.0020.0002.1375] # ETHIOPIC NUMBER FORTY
-1376 ; [*14DE.0020.0002.1376] # ETHIOPIC NUMBER FIFTY
-1377 ; [*14DF.0020.0002.1377] # ETHIOPIC NUMBER SIXTY
-1378 ; [*14E0.0020.0002.1378] # ETHIOPIC NUMBER SEVENTY
-1379 ; [*14E1.0020.0002.1379] # ETHIOPIC NUMBER EIGHTY
-137A ; [*14E2.0020.0002.137A] # ETHIOPIC NUMBER NINETY
-137B ; [*14E3.0020.0002.137B] # ETHIOPIC NUMBER HUNDRED
-137C ; [*14E4.0020.0002.137C] # ETHIOPIC NUMBER TEN THOUSAND
+1372 ; [*14F4.0020.0002.1372] # ETHIOPIC NUMBER TEN
+1373 ; [*14F5.0020.0002.1373] # ETHIOPIC NUMBER TWENTY
+1374 ; [*14F6.0020.0002.1374] # ETHIOPIC NUMBER THIRTY
+1375 ; [*14F7.0020.0002.1375] # ETHIOPIC NUMBER FORTY
+1376 ; [*14F8.0020.0002.1376] # ETHIOPIC NUMBER FIFTY
+1377 ; [*14F9.0020.0002.1377] # ETHIOPIC NUMBER SIXTY
+1378 ; [*14FA.0020.0002.1378] # ETHIOPIC NUMBER SEVENTY
+1379 ; [*14FB.0020.0002.1379] # ETHIOPIC NUMBER EIGHTY
+137A ; [*14FC.0020.0002.137A] # ETHIOPIC NUMBER NINETY
+137B ; [*14FD.0020.0002.137B] # ETHIOPIC NUMBER HUNDRED
+137C ; [*14FE.0020.0002.137C] # ETHIOPIC NUMBER TEN THOUSAND
1390 ; [*0453.0020.0002.1390] # ETHIOPIC TONAL MARK YIZET
1391 ; [*0454.0020.0002.1391] # ETHIOPIC TONAL MARK DERET
1392 ; [*0455.0020.0002.1392] # ETHIOPIC TONAL MARK RIKRIK
@@ -1108,7 +1108,7 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
2022 ; [*0382.0020.0002.2022] # BULLET
2023 ; [*0383.0020.0002.2023] # TRIANGULAR BULLET
2024 ; [*0273.0020.0004.2024] # ONE DOT LEADER
-2025 ; [*0273.0020.0004.2025][*0273.0020.0004.2025] # TWO DOT LEADER
+2025 ; [*0273.0020.0004.2025][*0273.0020.001F.2025] # TWO DOT LEADER
2026 ; [*0273.0020.0004.2026][*0273.0020.0004.2026][*0273.0020.001F.2026] # HORIZONTAL ELLIPSIS
2027 ; [*0384.0020.0002.2027] # HYPHENATION POINT
2028 ; [*0208.0020.0002.2028] # LINE SEPARATOR
@@ -1117,16 +1117,16 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
2030 ; [*0379.0020.0002.2030] # PER MILLE SIGN
2031 ; [*037B.0020.0002.2031] # PER TEN THOUSAND SIGN
2032 ; [*0388.0020.0002.2032] # PRIME
-2033 ; [*0388.0020.0004.2033][*0388.0020.0004.2033] # DOUBLE PRIME
+2033 ; [*0388.0020.0004.2033][*0388.0020.001F.2033] # DOUBLE PRIME
2034 ; [*0388.0020.0004.2034][*0388.0020.0004.2034][*0388.0020.001F.2034] # TRIPLE PRIME
2035 ; [*0389.0020.0002.2035] # REVERSED PRIME
-2036 ; [*0389.0020.0004.2036][*0389.0020.0004.2036] # REVERSED DOUBLE PRIME
+2036 ; [*0389.0020.0004.2036][*0389.0020.001F.2036] # REVERSED DOUBLE PRIME
2037 ; [*0389.0020.0004.2037][*0389.0020.0004.2037][*0389.0020.001F.2037] # REVERSED TRIPLE PRIME
2038 ; [*038C.0020.0002.2038] # CARET
2039 ; [*02EF.0020.0002.2039] # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
203A ; [*02F0.0020.0002.203A] # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
203B ; [*038D.0020.0002.203B] # REFERENCE MARK
-203C ; [*025E.0020.0004.203C][*025E.0020.0004.203C] # DOUBLE EXCLAMATION MARK
+203C ; [*025E.0020.0004.203C][*025E.0020.001F.203C] # DOUBLE EXCLAMATION MARK
203D ; [*0271.0020.0002.203D] # INTERROBANG
203E ; [*020B.0020.0002.203E] # OVERLINE
203F ; [*038E.0020.0002.203F] # UNDERTIE
@@ -1137,9 +1137,9 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
2044 ; [*05AC.0020.0002.2044] # FRACTION SLASH
2045 ; [*0307.0020.0002.2045] # LEFT SQUARE BRACKET WITH QUILL
2046 ; [*0308.0020.0002.2046] # RIGHT SQUARE BRACKET WITH QUILL
-2047 ; [*0263.0020.0004.2047][*0263.0020.0004.2047] # DOUBLE QUESTION MARK
-2048 ; [*0263.0020.0004.2048][*025E.0020.0004.2048] # QUESTION EXCLAMATION MARK
-2049 ; [*025E.0020.0004.2049][*0263.0020.0004.2049] # EXCLAMATION QUESTION MARK
+2047 ; [*0263.0020.0004.2047][*0263.0020.001F.2047] # DOUBLE QUESTION MARK
+2048 ; [*0263.0020.0004.2048][*025E.0020.001F.2048] # QUESTION EXCLAMATION MARK
+2049 ; [*025E.0020.0004.2049][*0263.0020.001F.2049] # EXCLAMATION QUESTION MARK
204A ; [*0375.0020.0002.204A] # TIRONIAN SIGN ET
204B ; [*036B.0020.0002.204B] # REVERSED PILCROW SIGN
204C ; [*0386.0020.0002.204C] # BLACK LEFTWARDS BULLET
@@ -1153,7 +1153,7 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
2054 ; [*038F.0020.0002.2054] # INVERTED UNDERTIE
2055 ; [*02CF.0020.0002.2055] # FLOWER PUNCTUATION MARK
2056 ; [*02D0.0020.0002.2056] # THREE DOT PUNCTUATION
-2057 ; [*0388.0020.0004.2057][*0388.0020.0004.2057][*0388.0020.001F.2057][*0388.0020.001F.2057] # QUADRUPLE PRIME
+2057 ; [*0388.0020.0004.2057][*0388.0020.0004.2057][*0388.0020.0004.2057][*0388.0020.001F.2057] # QUADRUPLE PRIME
2058 ; [*02D1.0020.0002.2058] # FOUR DOT PUNCTUATION
2059 ; [*02D2.0020.0002.2059] # FIVE DOT PUNCTUATION
205A ; [*02D3.0020.0002.205A] # TWO DOT PUNCTUATION
@@ -1198,12 +1198,12 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
214B ; [*0637.0020.0002.214B] # TURNED AMPERSAND
214C ; [*0520.0020.0002.214C] # PER SIGN
214F ; [*0521.0020.0002.214F] # SYMBOL FOR SAMARITAN SOURCE
-2180 ; [*14E5.0020.0002.2180] # ROMAN NUMERAL ONE THOUSAND C D
-2181 ; [*14E6.0020.0002.2181] # ROMAN NUMERAL FIVE THOUSAND
-2182 ; [*14E7.0020.0002.2182] # ROMAN NUMERAL TEN THOUSAND
-2186 ; [*14E8.0020.0002.2186] # ROMAN NUMERAL FIFTY EARLY FORM
-2187 ; [*14E9.0020.0002.2187] # ROMAN NUMERAL FIFTY THOUSAND
-2188 ; [*14EA.0020.0002.2188] # ROMAN NUMERAL ONE HUNDRED THOUSAND
+2180 ; [*14FF.0020.0002.2180] # ROMAN NUMERAL ONE THOUSAND C D
+2181 ; [*1500.0020.0002.2181] # ROMAN NUMERAL FIVE THOUSAND
+2182 ; [*1501.0020.0002.2182] # ROMAN NUMERAL TEN THOUSAND
+2186 ; [*1502.0020.0002.2186] # ROMAN NUMERAL FIFTY EARLY FORM
+2187 ; [*1503.0020.0002.2187] # ROMAN NUMERAL FIFTY THOUSAND
+2188 ; [*1504.0020.0002.2188] # ROMAN NUMERAL ONE HUNDRED THOUSAND
2190 ; [*0522.0020.0002.2190] # LEFTWARDS ARROW
2191 ; [*0524.0020.0002.2191] # UPWARDS ARROW
2192 ; [*0523.0020.0002.2192] # RIGHTWARDS ARROW
@@ -1360,10 +1360,10 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
2229 ; [*05C0.0020.0002.2229] # INTERSECTION
222A ; [*05C1.0020.0002.222A] # UNION
222B ; [*05C2.0020.0002.222B] # INTEGRAL
-222C ; [*05C2.0020.0004.222C][*05C2.0020.0004.222C] # DOUBLE INTEGRAL
+222C ; [*05C2.0020.0004.222C][*05C2.0020.001F.222C] # DOUBLE INTEGRAL
222D ; [*05C2.0020.0004.222D][*05C2.0020.0004.222D][*05C2.0020.001F.222D] # TRIPLE INTEGRAL
222E ; [*05C3.0020.0002.222E] # CONTOUR INTEGRAL
-222F ; [*05C3.0020.0004.222F][*05C3.0020.0004.222F] # SURFACE INTEGRAL
+222F ; [*05C3.0020.0004.222F][*05C3.0020.001F.222F] # SURFACE INTEGRAL
2230 ; [*05C3.0020.0004.2230][*05C3.0020.0004.2230][*05C3.0020.001F.2230] # VOLUME INTEGRAL
2231 ; [*05C4.0020.0002.2231] # CLOCKWISE INTEGRAL
2232 ; [*05C5.0020.0002.2232] # CLOCKWISE CONTOUR INTEGRAL
@@ -2170,14 +2170,14 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
262D ; [*08C4.0020.0002.262D] # HAMMER AND SICKLE
262E ; [*08C5.0020.0002.262E] # PEACE SYMBOL
262F ; [*08C6.0020.0002.262F] # YIN YANG
-2630 ; [*0D8F.0020.0002.2630] # TRIGRAM FOR HEAVEN
-2631 ; [*0D90.0020.0002.2631] # TRIGRAM FOR LAKE
-2632 ; [*0D91.0020.0002.2632] # TRIGRAM FOR FIRE
-2633 ; [*0D92.0020.0002.2633] # TRIGRAM FOR THUNDER
-2634 ; [*0D93.0020.0002.2634] # TRIGRAM FOR WIND
-2635 ; [*0D94.0020.0002.2635] # TRIGRAM FOR WATER
-2636 ; [*0D95.0020.0002.2636] # TRIGRAM FOR MOUNTAIN
-2637 ; [*0D96.0020.0002.2637] # TRIGRAM FOR EARTH
+2630 ; [*0DA9.0020.0002.2630] # TRIGRAM FOR HEAVEN
+2631 ; [*0DAA.0020.0002.2631] # TRIGRAM FOR LAKE
+2632 ; [*0DAB.0020.0002.2632] # TRIGRAM FOR FIRE
+2633 ; [*0DAC.0020.0002.2633] # TRIGRAM FOR THUNDER
+2634 ; [*0DAD.0020.0002.2634] # TRIGRAM FOR WIND
+2635 ; [*0DAE.0020.0002.2635] # TRIGRAM FOR WATER
+2636 ; [*0DAF.0020.0002.2636] # TRIGRAM FOR MOUNTAIN
+2637 ; [*0DB0.0020.0002.2637] # TRIGRAM FOR EARTH
2638 ; [*08C7.0020.0002.2638] # WHEEL OF DHARMA
2639 ; [*08C8.0020.0002.2639] # WHITE FROWNING FACE
263A ; [*08C9.0020.0002.263A] # WHITE SMILING FACE
@@ -2231,9 +2231,9 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
266A ; [*08F9.0020.0002.266A] # EIGHTH NOTE
266B ; [*08FA.0020.0002.266B] # BEAMED EIGHTH NOTES
266C ; [*08FB.0020.0002.266C] # BEAMED SIXTEENTH NOTES
-266D ; [*0FD5.0020.0002.266D] # MUSIC FLAT SIGN
-266E ; [*0FD6.0020.0002.266E] # MUSIC NATURAL SIGN
-266F ; [*0FD7.0020.0002.266F] # MUSIC SHARP SIGN
+266D ; [*0FEF.0020.0002.266D] # MUSIC FLAT SIGN
+266E ; [*0FF0.0020.0002.266E] # MUSIC NATURAL SIGN
+266F ; [*0FF1.0020.0002.266F] # MUSIC SHARP SIGN
2670 ; [*08FC.0020.0002.2670] # WEST SYRIAC CROSS
2671 ; [*08FD.0020.0002.2671] # EAST SYRIAC CROSS
2672 ; [*08FE.0020.0002.2672] # UNIVERSAL RECYCLING SYMBOL
@@ -2260,12 +2260,12 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
2687 ; [*0913.0020.0002.2687] # WHITE CIRCLE WITH TWO DOTS
2688 ; [*0914.0020.0002.2688] # BLACK CIRCLE WITH WHITE DOT RIGHT
2689 ; [*0915.0020.0002.2689] # BLACK CIRCLE WITH TWO WHITE DOTS
-268A ; [*0D89.0020.0002.268A] # MONOGRAM FOR YANG
-268B ; [*0D8A.0020.0002.268B] # MONOGRAM FOR YIN
-268C ; [*0D8B.0020.0002.268C] # DIGRAM FOR GREATER YANG
-268D ; [*0D8C.0020.0002.268D] # DIGRAM FOR LESSER YIN
-268E ; [*0D8D.0020.0002.268E] # DIGRAM FOR LESSER YANG
-268F ; [*0D8E.0020.0002.268F] # DIGRAM FOR GREATER YIN
+268A ; [*0DA3.0020.0002.268A] # MONOGRAM FOR YANG
+268B ; [*0DA4.0020.0002.268B] # MONOGRAM FOR YIN
+268C ; [*0DA5.0020.0002.268C] # DIGRAM FOR GREATER YANG
+268D ; [*0DA6.0020.0002.268D] # DIGRAM FOR LESSER YIN
+268E ; [*0DA7.0020.0002.268E] # DIGRAM FOR LESSER YANG
+268F ; [*0DA8.0020.0002.268F] # DIGRAM FOR GREATER YIN
2690 ; [*0916.0020.0002.2690] # WHITE FLAG
2691 ; [*0917.0020.0002.2691] # BLACK FLAG
2692 ; [*0918.0020.0002.2692] # HAMMER AND PICK
@@ -2378,109 +2378,109 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
26FD ; [*0983.0020.0002.26FD] # FUEL PUMP
26FE ; [*0984.0020.0002.26FE] # CUP ON BLACK SQUARE
26FF ; [*0985.0020.0002.26FF] # WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
-2701 ; [*0986.0020.0002.2701] # UPPER BLADE SCISSORS
-2702 ; [*0987.0020.0002.2702] # BLACK SCISSORS
-2703 ; [*0988.0020.0002.2703] # LOWER BLADE SCISSORS
-2704 ; [*0989.0020.0002.2704] # WHITE SCISSORS
-2705 ; [*098A.0020.0002.2705] # WHITE HEAVY CHECK MARK
-2706 ; [*098B.0020.0002.2706] # TELEPHONE LOCATION SIGN
-2707 ; [*098C.0020.0002.2707] # TAPE DRIVE
-2708 ; [*098D.0020.0002.2708] # AIRPLANE
-2709 ; [*098E.0020.0002.2709] # ENVELOPE
-270A ; [*098F.0020.0002.270A] # RAISED FIST
-270B ; [*0990.0020.0002.270B] # RAISED HAND
-270C ; [*0991.0020.0002.270C] # VICTORY HAND
-270D ; [*0992.0020.0002.270D] # WRITING HAND
-270E ; [*0993.0020.0002.270E] # LOWER RIGHT PENCIL
-270F ; [*0994.0020.0002.270F] # PENCIL
-2710 ; [*0995.0020.0002.2710] # UPPER RIGHT PENCIL
-2711 ; [*0996.0020.0002.2711] # WHITE NIB
-2712 ; [*0997.0020.0002.2712] # BLACK NIB
-2713 ; [*0998.0020.0002.2713] # CHECK MARK
-2714 ; [*0999.0020.0002.2714] # HEAVY CHECK MARK
-2715 ; [*099A.0020.0002.2715] # MULTIPLICATION X
-2716 ; [*099B.0020.0002.2716] # HEAVY MULTIPLICATION X
-2717 ; [*099C.0020.0002.2717] # BALLOT X
-2718 ; [*099D.0020.0002.2718] # HEAVY BALLOT X
-2719 ; [*099E.0020.0002.2719] # OUTLINED GREEK CROSS
-271A ; [*099F.0020.0002.271A] # HEAVY GREEK CROSS
-271B ; [*09A0.0020.0002.271B] # OPEN CENTRE CROSS
-271C ; [*09A1.0020.0002.271C] # HEAVY OPEN CENTRE CROSS
-271D ; [*09A2.0020.0002.271D] # LATIN CROSS
-271E ; [*09A3.0020.0002.271E] # SHADOWED WHITE LATIN CROSS
-271F ; [*09A4.0020.0002.271F] # OUTLINED LATIN CROSS
-2720 ; [*09A5.0020.0002.2720] # MALTESE CROSS
-2721 ; [*09A6.0020.0002.2721] # STAR OF DAVID
-2722 ; [*09A7.0020.0002.2722] # FOUR TEARDROP-SPOKED ASTERISK
-2723 ; [*09A8.0020.0002.2723] # FOUR BALLOON-SPOKED ASTERISK
-2724 ; [*09A9.0020.0002.2724] # HEAVY FOUR BALLOON-SPOKED ASTERISK
-2725 ; [*09AA.0020.0002.2725] # FOUR CLUB-SPOKED ASTERISK
-2726 ; [*09AB.0020.0002.2726] # BLACK FOUR POINTED STAR
-2727 ; [*09AC.0020.0002.2727] # WHITE FOUR POINTED STAR
-2728 ; [*09AD.0020.0002.2728] # SPARKLES
-2729 ; [*09AE.0020.0002.2729] # STRESS OUTLINED WHITE STAR
-272A ; [*09AF.0020.0002.272A] # CIRCLED WHITE STAR
-272B ; [*09B0.0020.0002.272B] # OPEN CENTRE BLACK STAR
-272C ; [*09B1.0020.0002.272C] # BLACK CENTRE WHITE STAR
-272D ; [*09B2.0020.0002.272D] # OUTLINED BLACK STAR
-272E ; [*09B3.0020.0002.272E] # HEAVY OUTLINED BLACK STAR
-272F ; [*09B4.0020.0002.272F] # PINWHEEL STAR
-2730 ; [*09B5.0020.0002.2730] # SHADOWED WHITE STAR
-2731 ; [*09B6.0020.0002.2731] # HEAVY ASTERISK
-2732 ; [*09B7.0020.0002.2732] # OPEN CENTRE ASTERISK
-2733 ; [*09B8.0020.0002.2733] # EIGHT SPOKED ASTERISK
-2734 ; [*09B9.0020.0002.2734] # EIGHT POINTED BLACK STAR
-2735 ; [*09BA.0020.0002.2735] # EIGHT POINTED PINWHEEL STAR
-2736 ; [*09BB.0020.0002.2736] # SIX POINTED BLACK STAR
-2737 ; [*09BC.0020.0002.2737] # EIGHT POINTED RECTILINEAR BLACK STAR
-2738 ; [*09BD.0020.0002.2738] # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
-2739 ; [*09BE.0020.0002.2739] # TWELVE POINTED BLACK STAR
-273A ; [*09BF.0020.0002.273A] # SIXTEEN POINTED ASTERISK
-273B ; [*09C0.0020.0002.273B] # TEARDROP-SPOKED ASTERISK
-273C ; [*09C1.0020.0002.273C] # OPEN CENTRE TEARDROP-SPOKED ASTERISK
-273D ; [*09C2.0020.0002.273D] # HEAVY TEARDROP-SPOKED ASTERISK
-273E ; [*09C3.0020.0002.273E] # SIX PETALLED BLACK AND WHITE FLORETTE
-273F ; [*09C4.0020.0002.273F] # BLACK FLORETTE
-2740 ; [*09C5.0020.0002.2740] # WHITE FLORETTE
-2741 ; [*09C6.0020.0002.2741] # EIGHT PETALLED OUTLINED BLACK FLORETTE
-2742 ; [*09C7.0020.0002.2742] # CIRCLED OPEN CENTRE EIGHT POINTED STAR
-2743 ; [*09C8.0020.0002.2743] # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
-2744 ; [*09C9.0020.0002.2744] # SNOWFLAKE
-2745 ; [*09CA.0020.0002.2745] # TIGHT TRIFOLIATE SNOWFLAKE
-2746 ; [*09CB.0020.0002.2746] # HEAVY CHEVRON SNOWFLAKE
-2747 ; [*09CC.0020.0002.2747] # SPARKLE
-2748 ; [*09CD.0020.0002.2748] # HEAVY SPARKLE
-2749 ; [*09CE.0020.0002.2749] # BALLOON-SPOKED ASTERISK
-274A ; [*09CF.0020.0002.274A] # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274B ; [*09D0.0020.0002.274B] # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274C ; [*09D1.0020.0002.274C] # CROSS MARK
-274D ; [*09D2.0020.0002.274D] # SHADOWED WHITE CIRCLE
-274E ; [*09D3.0020.0002.274E] # NEGATIVE SQUARED CROSS MARK
-274F ; [*09D4.0020.0002.274F] # LOWER RIGHT DROP-SHADOWED WHITE SQUARE
-2750 ; [*09D5.0020.0002.2750] # UPPER RIGHT DROP-SHADOWED WHITE SQUARE
-2751 ; [*09D6.0020.0002.2751] # LOWER RIGHT SHADOWED WHITE SQUARE
-2752 ; [*09D7.0020.0002.2752] # UPPER RIGHT SHADOWED WHITE SQUARE
-2753 ; [*09D8.0020.0002.2753] # BLACK QUESTION MARK ORNAMENT
-2754 ; [*09D9.0020.0002.2754] # WHITE QUESTION MARK ORNAMENT
-2755 ; [*09DA.0020.0002.2755] # WHITE EXCLAMATION MARK ORNAMENT
-2756 ; [*09DB.0020.0002.2756] # BLACK DIAMOND MINUS WHITE X
-2757 ; [*09DC.0020.0002.2757] # HEAVY EXCLAMATION MARK SYMBOL
-2758 ; [*09DD.0020.0002.2758] # LIGHT VERTICAL BAR
-2759 ; [*09DE.0020.0002.2759] # MEDIUM VERTICAL BAR
-275A ; [*09DF.0020.0002.275A] # HEAVY VERTICAL BAR
-275B ; [*09E0.0020.0002.275B] # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
-275C ; [*09E1.0020.0002.275C] # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
-275D ; [*09E2.0020.0002.275D] # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
-275E ; [*09E3.0020.0002.275E] # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-275F ; [*09E4.0020.0002.275F] # HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT
-2760 ; [*09E5.0020.0002.2760] # HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
-2761 ; [*09E6.0020.0002.2761] # CURVED STEM PARAGRAPH SIGN ORNAMENT
-2762 ; [*09E7.0020.0002.2762] # HEAVY EXCLAMATION MARK ORNAMENT
-2763 ; [*09E8.0020.0002.2763] # HEAVY HEART EXCLAMATION MARK ORNAMENT
-2764 ; [*09E9.0020.0002.2764] # HEAVY BLACK HEART
-2765 ; [*09EA.0020.0002.2765] # ROTATED HEAVY BLACK HEART BULLET
-2766 ; [*09EB.0020.0002.2766] # FLORAL HEART
-2767 ; [*09EC.0020.0002.2767] # ROTATED FLORAL HEART BULLET
+2701 ; [*09A0.0020.0002.2701] # UPPER BLADE SCISSORS
+2702 ; [*09A1.0020.0002.2702] # BLACK SCISSORS
+2703 ; [*09A2.0020.0002.2703] # LOWER BLADE SCISSORS
+2704 ; [*09A3.0020.0002.2704] # WHITE SCISSORS
+2705 ; [*09A4.0020.0002.2705] # WHITE HEAVY CHECK MARK
+2706 ; [*09A5.0020.0002.2706] # TELEPHONE LOCATION SIGN
+2707 ; [*09A6.0020.0002.2707] # TAPE DRIVE
+2708 ; [*09A7.0020.0002.2708] # AIRPLANE
+2709 ; [*09A8.0020.0002.2709] # ENVELOPE
+270A ; [*09A9.0020.0002.270A] # RAISED FIST
+270B ; [*09AA.0020.0002.270B] # RAISED HAND
+270C ; [*09AB.0020.0002.270C] # VICTORY HAND
+270D ; [*09AC.0020.0002.270D] # WRITING HAND
+270E ; [*09AD.0020.0002.270E] # LOWER RIGHT PENCIL
+270F ; [*09AE.0020.0002.270F] # PENCIL
+2710 ; [*09AF.0020.0002.2710] # UPPER RIGHT PENCIL
+2711 ; [*09B0.0020.0002.2711] # WHITE NIB
+2712 ; [*09B1.0020.0002.2712] # BLACK NIB
+2713 ; [*09B2.0020.0002.2713] # CHECK MARK
+2714 ; [*09B3.0020.0002.2714] # HEAVY CHECK MARK
+2715 ; [*09B4.0020.0002.2715] # MULTIPLICATION X
+2716 ; [*09B5.0020.0002.2716] # HEAVY MULTIPLICATION X
+2717 ; [*09B6.0020.0002.2717] # BALLOT X
+2718 ; [*09B7.0020.0002.2718] # HEAVY BALLOT X
+2719 ; [*09B8.0020.0002.2719] # OUTLINED GREEK CROSS
+271A ; [*09B9.0020.0002.271A] # HEAVY GREEK CROSS
+271B ; [*09BA.0020.0002.271B] # OPEN CENTRE CROSS
+271C ; [*09BB.0020.0002.271C] # HEAVY OPEN CENTRE CROSS
+271D ; [*09BC.0020.0002.271D] # LATIN CROSS
+271E ; [*09BD.0020.0002.271E] # SHADOWED WHITE LATIN CROSS
+271F ; [*09BE.0020.0002.271F] # OUTLINED LATIN CROSS
+2720 ; [*09BF.0020.0002.2720] # MALTESE CROSS
+2721 ; [*09C0.0020.0002.2721] # STAR OF DAVID
+2722 ; [*09C1.0020.0002.2722] # FOUR TEARDROP-SPOKED ASTERISK
+2723 ; [*09C2.0020.0002.2723] # FOUR BALLOON-SPOKED ASTERISK
+2724 ; [*09C3.0020.0002.2724] # HEAVY FOUR BALLOON-SPOKED ASTERISK
+2725 ; [*09C4.0020.0002.2725] # FOUR CLUB-SPOKED ASTERISK
+2726 ; [*09C5.0020.0002.2726] # BLACK FOUR POINTED STAR
+2727 ; [*09C6.0020.0002.2727] # WHITE FOUR POINTED STAR
+2728 ; [*09C7.0020.0002.2728] # SPARKLES
+2729 ; [*09C8.0020.0002.2729] # STRESS OUTLINED WHITE STAR
+272A ; [*09C9.0020.0002.272A] # CIRCLED WHITE STAR
+272B ; [*09CA.0020.0002.272B] # OPEN CENTRE BLACK STAR
+272C ; [*09CB.0020.0002.272C] # BLACK CENTRE WHITE STAR
+272D ; [*09CC.0020.0002.272D] # OUTLINED BLACK STAR
+272E ; [*09CD.0020.0002.272E] # HEAVY OUTLINED BLACK STAR
+272F ; [*09CE.0020.0002.272F] # PINWHEEL STAR
+2730 ; [*09CF.0020.0002.2730] # SHADOWED WHITE STAR
+2731 ; [*09D0.0020.0002.2731] # HEAVY ASTERISK
+2732 ; [*09D1.0020.0002.2732] # OPEN CENTRE ASTERISK
+2733 ; [*09D2.0020.0002.2733] # EIGHT SPOKED ASTERISK
+2734 ; [*09D3.0020.0002.2734] # EIGHT POINTED BLACK STAR
+2735 ; [*09D4.0020.0002.2735] # EIGHT POINTED PINWHEEL STAR
+2736 ; [*09D5.0020.0002.2736] # SIX POINTED BLACK STAR
+2737 ; [*09D6.0020.0002.2737] # EIGHT POINTED RECTILINEAR BLACK STAR
+2738 ; [*09D7.0020.0002.2738] # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
+2739 ; [*09D8.0020.0002.2739] # TWELVE POINTED BLACK STAR
+273A ; [*09D9.0020.0002.273A] # SIXTEEN POINTED ASTERISK
+273B ; [*09DA.0020.0002.273B] # TEARDROP-SPOKED ASTERISK
+273C ; [*09DB.0020.0002.273C] # OPEN CENTRE TEARDROP-SPOKED ASTERISK
+273D ; [*09DC.0020.0002.273D] # HEAVY TEARDROP-SPOKED ASTERISK
+273E ; [*09DD.0020.0002.273E] # SIX PETALLED BLACK AND WHITE FLORETTE
+273F ; [*09DE.0020.0002.273F] # BLACK FLORETTE
+2740 ; [*09DF.0020.0002.2740] # WHITE FLORETTE
+2741 ; [*09E0.0020.0002.2741] # EIGHT PETALLED OUTLINED BLACK FLORETTE
+2742 ; [*09E1.0020.0002.2742] # CIRCLED OPEN CENTRE EIGHT POINTED STAR
+2743 ; [*09E2.0020.0002.2743] # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
+2744 ; [*09E3.0020.0002.2744] # SNOWFLAKE
+2745 ; [*09E4.0020.0002.2745] # TIGHT TRIFOLIATE SNOWFLAKE
+2746 ; [*09E5.0020.0002.2746] # HEAVY CHEVRON SNOWFLAKE
+2747 ; [*09E6.0020.0002.2747] # SPARKLE
+2748 ; [*09E7.0020.0002.2748] # HEAVY SPARKLE
+2749 ; [*09E8.0020.0002.2749] # BALLOON-SPOKED ASTERISK
+274A ; [*09E9.0020.0002.274A] # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274B ; [*09EA.0020.0002.274B] # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274C ; [*09EB.0020.0002.274C] # CROSS MARK
+274D ; [*09EC.0020.0002.274D] # SHADOWED WHITE CIRCLE
+274E ; [*09ED.0020.0002.274E] # NEGATIVE SQUARED CROSS MARK
+274F ; [*09EE.0020.0002.274F] # LOWER RIGHT DROP-SHADOWED WHITE SQUARE
+2750 ; [*09EF.0020.0002.2750] # UPPER RIGHT DROP-SHADOWED WHITE SQUARE
+2751 ; [*09F0.0020.0002.2751] # LOWER RIGHT SHADOWED WHITE SQUARE
+2752 ; [*09F1.0020.0002.2752] # UPPER RIGHT SHADOWED WHITE SQUARE
+2753 ; [*09F2.0020.0002.2753] # BLACK QUESTION MARK ORNAMENT
+2754 ; [*09F3.0020.0002.2754] # WHITE QUESTION MARK ORNAMENT
+2755 ; [*09F4.0020.0002.2755] # WHITE EXCLAMATION MARK ORNAMENT
+2756 ; [*09F5.0020.0002.2756] # BLACK DIAMOND MINUS WHITE X
+2757 ; [*09F6.0020.0002.2757] # HEAVY EXCLAMATION MARK SYMBOL
+2758 ; [*09F7.0020.0002.2758] # LIGHT VERTICAL BAR
+2759 ; [*09F8.0020.0002.2759] # MEDIUM VERTICAL BAR
+275A ; [*09F9.0020.0002.275A] # HEAVY VERTICAL BAR
+275B ; [*09FA.0020.0002.275B] # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
+275C ; [*09FB.0020.0002.275C] # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
+275D ; [*09FC.0020.0002.275D] # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
+275E ; [*09FD.0020.0002.275E] # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+275F ; [*09FE.0020.0002.275F] # HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT
+2760 ; [*09FF.0020.0002.2760] # HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761 ; [*0A00.0020.0002.2761] # CURVED STEM PARAGRAPH SIGN ORNAMENT
+2762 ; [*0A01.0020.0002.2762] # HEAVY EXCLAMATION MARK ORNAMENT
+2763 ; [*0A02.0020.0002.2763] # HEAVY HEART EXCLAMATION MARK ORNAMENT
+2764 ; [*0A03.0020.0002.2764] # HEAVY BLACK HEART
+2765 ; [*0A04.0020.0002.2765] # ROTATED HEAVY BLACK HEART BULLET
+2766 ; [*0A05.0020.0002.2766] # FLORAL HEART
+2767 ; [*0A06.0020.0002.2767] # ROTATED FLORAL HEART BULLET
2768 ; [*032D.0020.0002.2768] # MEDIUM LEFT PARENTHESIS ORNAMENT
2769 ; [*032E.0020.0002.2769] # MEDIUM RIGHT PARENTHESIS ORNAMENT
276A ; [*032F.0020.0002.276A] # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
@@ -2495,88 +2495,88 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
2773 ; [*0338.0020.0002.2773] # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
2774 ; [*0339.0020.0002.2774] # MEDIUM LEFT CURLY BRACKET ORNAMENT
2775 ; [*033A.0020.0002.2775] # MEDIUM RIGHT CURLY BRACKET ORNAMENT
-2794 ; [*09ED.0020.0002.2794] # HEAVY WIDE-HEADED RIGHTWARDS ARROW
-2795 ; [*09EE.0020.0002.2795] # HEAVY PLUS SIGN
-2796 ; [*09EF.0020.0002.2796] # HEAVY MINUS SIGN
-2797 ; [*09F0.0020.0002.2797] # HEAVY DIVISION SIGN
-2798 ; [*09F1.0020.0002.2798] # HEAVY SOUTH EAST ARROW
-2799 ; [*09F2.0020.0002.2799] # HEAVY RIGHTWARDS ARROW
-279A ; [*09F3.0020.0002.279A] # HEAVY NORTH EAST ARROW
-279B ; [*09F4.0020.0002.279B] # DRAFTING POINT RIGHTWARDS ARROW
-279C ; [*09F5.0020.0002.279C] # HEAVY ROUND-TIPPED RIGHTWARDS ARROW
-279D ; [*09F6.0020.0002.279D] # TRIANGLE-HEADED RIGHTWARDS ARROW
-279E ; [*09F7.0020.0002.279E] # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
-279F ; [*09F8.0020.0002.279F] # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-27A0 ; [*09F9.0020.0002.27A0] # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
-27A1 ; [*09FA.0020.0002.27A1] # BLACK RIGHTWARDS ARROW
-27A2 ; [*09FB.0020.0002.27A2] # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
-27A3 ; [*09FC.0020.0002.27A3] # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
-27A4 ; [*09FD.0020.0002.27A4] # BLACK RIGHTWARDS ARROWHEAD
-27A5 ; [*09FE.0020.0002.27A5] # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
-27A6 ; [*09FF.0020.0002.27A6] # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
-27A7 ; [*0A00.0020.0002.27A7] # SQUAT BLACK RIGHTWARDS ARROW
-27A8 ; [*0A01.0020.0002.27A8] # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
-27A9 ; [*0A02.0020.0002.27A9] # RIGHT-SHADED WHITE RIGHTWARDS ARROW
-27AA ; [*0A03.0020.0002.27AA] # LEFT-SHADED WHITE RIGHTWARDS ARROW
-27AB ; [*0A04.0020.0002.27AB] # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-27AC ; [*0A05.0020.0002.27AC] # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
-27AD ; [*0A06.0020.0002.27AD] # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27AE ; [*0A07.0020.0002.27AE] # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27AF ; [*0A08.0020.0002.27AF] # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27B0 ; [*0A09.0020.0002.27B0] # CURLY LOOP
-27B1 ; [*0A0A.0020.0002.27B1] # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27B2 ; [*0A0B.0020.0002.27B2] # CIRCLED HEAVY WHITE RIGHTWARDS ARROW
-27B3 ; [*0A0C.0020.0002.27B3] # WHITE-FEATHERED RIGHTWARDS ARROW
-27B4 ; [*0A0D.0020.0002.27B4] # BLACK-FEATHERED SOUTH EAST ARROW
-27B5 ; [*0A0E.0020.0002.27B5] # BLACK-FEATHERED RIGHTWARDS ARROW
-27B6 ; [*0A0F.0020.0002.27B6] # BLACK-FEATHERED NORTH EAST ARROW
-27B7 ; [*0A10.0020.0002.27B7] # HEAVY BLACK-FEATHERED SOUTH EAST ARROW
-27B8 ; [*0A11.0020.0002.27B8] # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
-27B9 ; [*0A12.0020.0002.27B9] # HEAVY BLACK-FEATHERED NORTH EAST ARROW
-27BA ; [*0A13.0020.0002.27BA] # TEARDROP-BARBED RIGHTWARDS ARROW
-27BB ; [*0A14.0020.0002.27BB] # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
-27BC ; [*0A15.0020.0002.27BC] # WEDGE-TAILED RIGHTWARDS ARROW
-27BD ; [*0A16.0020.0002.27BD] # HEAVY WEDGE-TAILED RIGHTWARDS ARROW
-27BE ; [*0A17.0020.0002.27BE] # OPEN-OUTLINED RIGHTWARDS ARROW
-27BF ; [*0A18.0020.0002.27BF] # DOUBLE CURLY LOOP
-27C0 ; [*0A19.0020.0002.27C0] # THREE DIMENSIONAL ANGLE
-27C1 ; [*0A1A.0020.0002.27C1] # WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
-27C2 ; [*0A1B.0020.0002.27C2] # PERPENDICULAR
-27C3 ; [*0A1C.0020.0002.27C3] # OPEN SUBSET
-27C4 ; [*0A1D.0020.0002.27C4] # OPEN SUPERSET
+2794 ; [*0A07.0020.0002.2794] # HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2795 ; [*0A08.0020.0002.2795] # HEAVY PLUS SIGN
+2796 ; [*0A09.0020.0002.2796] # HEAVY MINUS SIGN
+2797 ; [*0A0A.0020.0002.2797] # HEAVY DIVISION SIGN
+2798 ; [*0A0B.0020.0002.2798] # HEAVY SOUTH EAST ARROW
+2799 ; [*0A0C.0020.0002.2799] # HEAVY RIGHTWARDS ARROW
+279A ; [*0A0D.0020.0002.279A] # HEAVY NORTH EAST ARROW
+279B ; [*0A0E.0020.0002.279B] # DRAFTING POINT RIGHTWARDS ARROW
+279C ; [*0A0F.0020.0002.279C] # HEAVY ROUND-TIPPED RIGHTWARDS ARROW
+279D ; [*0A10.0020.0002.279D] # TRIANGLE-HEADED RIGHTWARDS ARROW
+279E ; [*0A11.0020.0002.279E] # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
+279F ; [*0A12.0020.0002.279F] # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A0 ; [*0A13.0020.0002.27A0] # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A1 ; [*0A14.0020.0002.27A1] # BLACK RIGHTWARDS ARROW
+27A2 ; [*0A15.0020.0002.27A2] # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
+27A3 ; [*0A16.0020.0002.27A3] # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
+27A4 ; [*0A17.0020.0002.27A4] # BLACK RIGHTWARDS ARROWHEAD
+27A5 ; [*0A18.0020.0002.27A5] # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
+27A6 ; [*0A19.0020.0002.27A6] # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
+27A7 ; [*0A1A.0020.0002.27A7] # SQUAT BLACK RIGHTWARDS ARROW
+27A8 ; [*0A1B.0020.0002.27A8] # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
+27A9 ; [*0A1C.0020.0002.27A9] # RIGHT-SHADED WHITE RIGHTWARDS ARROW
+27AA ; [*0A1D.0020.0002.27AA] # LEFT-SHADED WHITE RIGHTWARDS ARROW
+27AB ; [*0A1E.0020.0002.27AB] # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AC ; [*0A1F.0020.0002.27AC] # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AD ; [*0A20.0020.0002.27AD] # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AE ; [*0A21.0020.0002.27AE] # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AF ; [*0A22.0020.0002.27AF] # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B0 ; [*0A23.0020.0002.27B0] # CURLY LOOP
+27B1 ; [*0A24.0020.0002.27B1] # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B2 ; [*0A25.0020.0002.27B2] # CIRCLED HEAVY WHITE RIGHTWARDS ARROW
+27B3 ; [*0A26.0020.0002.27B3] # WHITE-FEATHERED RIGHTWARDS ARROW
+27B4 ; [*0A27.0020.0002.27B4] # BLACK-FEATHERED SOUTH EAST ARROW
+27B5 ; [*0A28.0020.0002.27B5] # BLACK-FEATHERED RIGHTWARDS ARROW
+27B6 ; [*0A29.0020.0002.27B6] # BLACK-FEATHERED NORTH EAST ARROW
+27B7 ; [*0A2A.0020.0002.27B7] # HEAVY BLACK-FEATHERED SOUTH EAST ARROW
+27B8 ; [*0A2B.0020.0002.27B8] # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
+27B9 ; [*0A2C.0020.0002.27B9] # HEAVY BLACK-FEATHERED NORTH EAST ARROW
+27BA ; [*0A2D.0020.0002.27BA] # TEARDROP-BARBED RIGHTWARDS ARROW
+27BB ; [*0A2E.0020.0002.27BB] # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
+27BC ; [*0A2F.0020.0002.27BC] # WEDGE-TAILED RIGHTWARDS ARROW
+27BD ; [*0A30.0020.0002.27BD] # HEAVY WEDGE-TAILED RIGHTWARDS ARROW
+27BE ; [*0A31.0020.0002.27BE] # OPEN-OUTLINED RIGHTWARDS ARROW
+27BF ; [*0A32.0020.0002.27BF] # DOUBLE CURLY LOOP
+27C0 ; [*0A33.0020.0002.27C0] # THREE DIMENSIONAL ANGLE
+27C1 ; [*0A34.0020.0002.27C1] # WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
+27C2 ; [*0A35.0020.0002.27C2] # PERPENDICULAR
+27C3 ; [*0A36.0020.0002.27C3] # OPEN SUBSET
+27C4 ; [*0A37.0020.0002.27C4] # OPEN SUPERSET
27C5 ; [*0321.0020.0002.27C5] # LEFT S-SHAPED BAG DELIMITER
27C6 ; [*0322.0020.0002.27C6] # RIGHT S-SHAPED BAG DELIMITER
-27C7 ; [*0A1E.0020.0002.27C7] # OR WITH DOT INSIDE
-27C8 ; [*0A1F.0020.0002.27C8] # REVERSE SOLIDUS PRECEDING SUBSET
-27C9 ; [*0A20.0020.0002.27C9] # SUPERSET PRECEDING SOLIDUS
-27CA ; [*0A21.0020.0002.27CA] # VERTICAL BAR WITH HORIZONTAL STROKE
-27CB ; [*0A22.0020.0002.27CB] # MATHEMATICAL RISING DIAGONAL
-27CC ; [*0A23.0020.0002.27CC] # LONG DIVISION
-27CD ; [*0A24.0020.0002.27CD] # MATHEMATICAL FALLING DIAGONAL
-27CE ; [*0A25.0020.0002.27CE] # SQUARED LOGICAL AND
-27CF ; [*0A26.0020.0002.27CF] # SQUARED LOGICAL OR
-27D0 ; [*0A27.0020.0002.27D0] # WHITE DIAMOND WITH CENTRED DOT
-27D1 ; [*0A28.0020.0002.27D1] # AND WITH DOT
-27D2 ; [*0A29.0020.0002.27D2] # ELEMENT OF OPENING UPWARDS
-27D3 ; [*0A2A.0020.0002.27D3] # LOWER RIGHT CORNER WITH DOT
-27D4 ; [*0A2B.0020.0002.27D4] # UPPER LEFT CORNER WITH DOT
-27D5 ; [*0A2C.0020.0002.27D5] # LEFT OUTER JOIN
-27D6 ; [*0A2D.0020.0002.27D6] # RIGHT OUTER JOIN
-27D7 ; [*0A2E.0020.0002.27D7] # FULL OUTER JOIN
-27D8 ; [*0A2F.0020.0002.27D8] # LARGE UP TACK
-27D9 ; [*0A30.0020.0002.27D9] # LARGE DOWN TACK
-27DA ; [*0A31.0020.0002.27DA] # LEFT AND RIGHT DOUBLE TURNSTILE
-27DB ; [*0A32.0020.0002.27DB] # LEFT AND RIGHT TACK
-27DC ; [*0A33.0020.0002.27DC] # LEFT MULTIMAP
-27DD ; [*0A34.0020.0002.27DD] # LONG RIGHT TACK
-27DE ; [*0A35.0020.0002.27DE] # LONG LEFT TACK
-27DF ; [*0A36.0020.0002.27DF] # UP TACK WITH CIRCLE ABOVE
-27E0 ; [*0A37.0020.0002.27E0] # LOZENGE DIVIDED BY HORIZONTAL RULE
-27E1 ; [*0A38.0020.0002.27E1] # WHITE CONCAVE-SIDED DIAMOND
-27E2 ; [*0A39.0020.0002.27E2] # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
-27E3 ; [*0A3A.0020.0002.27E3] # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
-27E4 ; [*0A3B.0020.0002.27E4] # WHITE SQUARE WITH LEFTWARDS TICK
-27E5 ; [*0A3C.0020.0002.27E5] # WHITE SQUARE WITH RIGHTWARDS TICK
+27C7 ; [*0A38.0020.0002.27C7] # OR WITH DOT INSIDE
+27C8 ; [*0A39.0020.0002.27C8] # REVERSE SOLIDUS PRECEDING SUBSET
+27C9 ; [*0A3A.0020.0002.27C9] # SUPERSET PRECEDING SOLIDUS
+27CA ; [*0A3B.0020.0002.27CA] # VERTICAL BAR WITH HORIZONTAL STROKE
+27CB ; [*0A3C.0020.0002.27CB] # MATHEMATICAL RISING DIAGONAL
+27CC ; [*0A3D.0020.0002.27CC] # LONG DIVISION
+27CD ; [*0A3E.0020.0002.27CD] # MATHEMATICAL FALLING DIAGONAL
+27CE ; [*0A3F.0020.0002.27CE] # SQUARED LOGICAL AND
+27CF ; [*0A40.0020.0002.27CF] # SQUARED LOGICAL OR
+27D0 ; [*0A41.0020.0002.27D0] # WHITE DIAMOND WITH CENTRED DOT
+27D1 ; [*0A42.0020.0002.27D1] # AND WITH DOT
+27D2 ; [*0A43.0020.0002.27D2] # ELEMENT OF OPENING UPWARDS
+27D3 ; [*0A44.0020.0002.27D3] # LOWER RIGHT CORNER WITH DOT
+27D4 ; [*0A45.0020.0002.27D4] # UPPER LEFT CORNER WITH DOT
+27D5 ; [*0A46.0020.0002.27D5] # LEFT OUTER JOIN
+27D6 ; [*0A47.0020.0002.27D6] # RIGHT OUTER JOIN
+27D7 ; [*0A48.0020.0002.27D7] # FULL OUTER JOIN
+27D8 ; [*0A49.0020.0002.27D8] # LARGE UP TACK
+27D9 ; [*0A4A.0020.0002.27D9] # LARGE DOWN TACK
+27DA ; [*0A4B.0020.0002.27DA] # LEFT AND RIGHT DOUBLE TURNSTILE
+27DB ; [*0A4C.0020.0002.27DB] # LEFT AND RIGHT TACK
+27DC ; [*0A4D.0020.0002.27DC] # LEFT MULTIMAP
+27DD ; [*0A4E.0020.0002.27DD] # LONG RIGHT TACK
+27DE ; [*0A4F.0020.0002.27DE] # LONG LEFT TACK
+27DF ; [*0A50.0020.0002.27DF] # UP TACK WITH CIRCLE ABOVE
+27E0 ; [*0A51.0020.0002.27E0] # LOZENGE DIVIDED BY HORIZONTAL RULE
+27E1 ; [*0A52.0020.0002.27E1] # WHITE CONCAVE-SIDED DIAMOND
+27E2 ; [*0A53.0020.0002.27E2] # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
+27E3 ; [*0A54.0020.0002.27E3] # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
+27E4 ; [*0A55.0020.0002.27E4] # WHITE SQUARE WITH LEFTWARDS TICK
+27E5 ; [*0A56.0020.0002.27E5] # WHITE SQUARE WITH RIGHTWARDS TICK
27E6 ; [*0323.0020.0002.27E6] # MATHEMATICAL LEFT WHITE SQUARE BRACKET
27E7 ; [*0324.0020.0002.27E7] # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
27E8 ; [*0325.0020.0002.27E8] # MATHEMATICAL LEFT ANGLE BRACKET
@@ -2587,409 +2587,409 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
27ED ; [*032A.0020.0002.27ED] # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
27EE ; [*032B.0020.0002.27EE] # MATHEMATICAL LEFT FLATTENED PARENTHESIS
27EF ; [*032C.0020.0002.27EF] # MATHEMATICAL RIGHT FLATTENED PARENTHESIS
-27F0 ; [*0A3D.0020.0002.27F0] # UPWARDS QUADRUPLE ARROW
-27F1 ; [*0A3E.0020.0002.27F1] # DOWNWARDS QUADRUPLE ARROW
-27F2 ; [*0A3F.0020.0002.27F2] # ANTICLOCKWISE GAPPED CIRCLE ARROW
-27F3 ; [*0A40.0020.0002.27F3] # CLOCKWISE GAPPED CIRCLE ARROW
-27F4 ; [*0A41.0020.0002.27F4] # RIGHT ARROW WITH CIRCLED PLUS
-27F5 ; [*0A42.0020.0002.27F5] # LONG LEFTWARDS ARROW
-27F6 ; [*0A43.0020.0002.27F6] # LONG RIGHTWARDS ARROW
-27F7 ; [*0A44.0020.0002.27F7] # LONG LEFT RIGHT ARROW
-27F8 ; [*0A45.0020.0002.27F8] # LONG LEFTWARDS DOUBLE ARROW
-27F9 ; [*0A46.0020.0002.27F9] # LONG RIGHTWARDS DOUBLE ARROW
-27FA ; [*0A47.0020.0002.27FA] # LONG LEFT RIGHT DOUBLE ARROW
-27FB ; [*0A48.0020.0002.27FB] # LONG LEFTWARDS ARROW FROM BAR
-27FC ; [*0A49.0020.0002.27FC] # LONG RIGHTWARDS ARROW FROM BAR
-27FD ; [*0A4A.0020.0002.27FD] # LONG LEFTWARDS DOUBLE ARROW FROM BAR
-27FE ; [*0A4B.0020.0002.27FE] # LONG RIGHTWARDS DOUBLE ARROW FROM BAR
-27FF ; [*0A4C.0020.0002.27FF] # LONG RIGHTWARDS SQUIGGLE ARROW
-2800 ; [*0C89.0020.0002.2800] # BRAILLE PATTERN BLANK
-2801 ; [*0C8A.0020.0002.2801] # BRAILLE PATTERN DOTS-1
-2802 ; [*0C8B.0020.0002.2802] # BRAILLE PATTERN DOTS-2
-2803 ; [*0C8C.0020.0002.2803] # BRAILLE PATTERN DOTS-12
-2804 ; [*0C8D.0020.0002.2804] # BRAILLE PATTERN DOTS-3
-2805 ; [*0C8E.0020.0002.2805] # BRAILLE PATTERN DOTS-13
-2806 ; [*0C8F.0020.0002.2806] # BRAILLE PATTERN DOTS-23
-2807 ; [*0C90.0020.0002.2807] # BRAILLE PATTERN DOTS-123
-2808 ; [*0C91.0020.0002.2808] # BRAILLE PATTERN DOTS-4
-2809 ; [*0C92.0020.0002.2809] # BRAILLE PATTERN DOTS-14
-280A ; [*0C93.0020.0002.280A] # BRAILLE PATTERN DOTS-24
-280B ; [*0C94.0020.0002.280B] # BRAILLE PATTERN DOTS-124
-280C ; [*0C95.0020.0002.280C] # BRAILLE PATTERN DOTS-34
-280D ; [*0C96.0020.0002.280D] # BRAILLE PATTERN DOTS-134
-280E ; [*0C97.0020.0002.280E] # BRAILLE PATTERN DOTS-234
-280F ; [*0C98.0020.0002.280F] # BRAILLE PATTERN DOTS-1234
-2810 ; [*0C99.0020.0002.2810] # BRAILLE PATTERN DOTS-5
-2811 ; [*0C9A.0020.0002.2811] # BRAILLE PATTERN DOTS-15
-2812 ; [*0C9B.0020.0002.2812] # BRAILLE PATTERN DOTS-25
-2813 ; [*0C9C.0020.0002.2813] # BRAILLE PATTERN DOTS-125
-2814 ; [*0C9D.0020.0002.2814] # BRAILLE PATTERN DOTS-35
-2815 ; [*0C9E.0020.0002.2815] # BRAILLE PATTERN DOTS-135
-2816 ; [*0C9F.0020.0002.2816] # BRAILLE PATTERN DOTS-235
-2817 ; [*0CA0.0020.0002.2817] # BRAILLE PATTERN DOTS-1235
-2818 ; [*0CA1.0020.0002.2818] # BRAILLE PATTERN DOTS-45
-2819 ; [*0CA2.0020.0002.2819] # BRAILLE PATTERN DOTS-145
-281A ; [*0CA3.0020.0002.281A] # BRAILLE PATTERN DOTS-245
-281B ; [*0CA4.0020.0002.281B] # BRAILLE PATTERN DOTS-1245
-281C ; [*0CA5.0020.0002.281C] # BRAILLE PATTERN DOTS-345
-281D ; [*0CA6.0020.0002.281D] # BRAILLE PATTERN DOTS-1345
-281E ; [*0CA7.0020.0002.281E] # BRAILLE PATTERN DOTS-2345
-281F ; [*0CA8.0020.0002.281F] # BRAILLE PATTERN DOTS-12345
-2820 ; [*0CA9.0020.0002.2820] # BRAILLE PATTERN DOTS-6
-2821 ; [*0CAA.0020.0002.2821] # BRAILLE PATTERN DOTS-16
-2822 ; [*0CAB.0020.0002.2822] # BRAILLE PATTERN DOTS-26
-2823 ; [*0CAC.0020.0002.2823] # BRAILLE PATTERN DOTS-126
-2824 ; [*0CAD.0020.0002.2824] # BRAILLE PATTERN DOTS-36
-2825 ; [*0CAE.0020.0002.2825] # BRAILLE PATTERN DOTS-136
-2826 ; [*0CAF.0020.0002.2826] # BRAILLE PATTERN DOTS-236
-2827 ; [*0CB0.0020.0002.2827] # BRAILLE PATTERN DOTS-1236
-2828 ; [*0CB1.0020.0002.2828] # BRAILLE PATTERN DOTS-46
-2829 ; [*0CB2.0020.0002.2829] # BRAILLE PATTERN DOTS-146
-282A ; [*0CB3.0020.0002.282A] # BRAILLE PATTERN DOTS-246
-282B ; [*0CB4.0020.0002.282B] # BRAILLE PATTERN DOTS-1246
-282C ; [*0CB5.0020.0002.282C] # BRAILLE PATTERN DOTS-346
-282D ; [*0CB6.0020.0002.282D] # BRAILLE PATTERN DOTS-1346
-282E ; [*0CB7.0020.0002.282E] # BRAILLE PATTERN DOTS-2346
-282F ; [*0CB8.0020.0002.282F] # BRAILLE PATTERN DOTS-12346
-2830 ; [*0CB9.0020.0002.2830] # BRAILLE PATTERN DOTS-56
-2831 ; [*0CBA.0020.0002.2831] # BRAILLE PATTERN DOTS-156
-2832 ; [*0CBB.0020.0002.2832] # BRAILLE PATTERN DOTS-256
-2833 ; [*0CBC.0020.0002.2833] # BRAILLE PATTERN DOTS-1256
-2834 ; [*0CBD.0020.0002.2834] # BRAILLE PATTERN DOTS-356
-2835 ; [*0CBE.0020.0002.2835] # BRAILLE PATTERN DOTS-1356
-2836 ; [*0CBF.0020.0002.2836] # BRAILLE PATTERN DOTS-2356
-2837 ; [*0CC0.0020.0002.2837] # BRAILLE PATTERN DOTS-12356
-2838 ; [*0CC1.0020.0002.2838] # BRAILLE PATTERN DOTS-456
-2839 ; [*0CC2.0020.0002.2839] # BRAILLE PATTERN DOTS-1456
-283A ; [*0CC3.0020.0002.283A] # BRAILLE PATTERN DOTS-2456
-283B ; [*0CC4.0020.0002.283B] # BRAILLE PATTERN DOTS-12456
-283C ; [*0CC5.0020.0002.283C] # BRAILLE PATTERN DOTS-3456
-283D ; [*0CC6.0020.0002.283D] # BRAILLE PATTERN DOTS-13456
-283E ; [*0CC7.0020.0002.283E] # BRAILLE PATTERN DOTS-23456
-283F ; [*0CC8.0020.0002.283F] # BRAILLE PATTERN DOTS-123456
-2840 ; [*0CC9.0020.0002.2840] # BRAILLE PATTERN DOTS-7
-2841 ; [*0CCA.0020.0002.2841] # BRAILLE PATTERN DOTS-17
-2842 ; [*0CCB.0020.0002.2842] # BRAILLE PATTERN DOTS-27
-2843 ; [*0CCC.0020.0002.2843] # BRAILLE PATTERN DOTS-127
-2844 ; [*0CCD.0020.0002.2844] # BRAILLE PATTERN DOTS-37
-2845 ; [*0CCE.0020.0002.2845] # BRAILLE PATTERN DOTS-137
-2846 ; [*0CCF.0020.0002.2846] # BRAILLE PATTERN DOTS-237
-2847 ; [*0CD0.0020.0002.2847] # BRAILLE PATTERN DOTS-1237
-2848 ; [*0CD1.0020.0002.2848] # BRAILLE PATTERN DOTS-47
-2849 ; [*0CD2.0020.0002.2849] # BRAILLE PATTERN DOTS-147
-284A ; [*0CD3.0020.0002.284A] # BRAILLE PATTERN DOTS-247
-284B ; [*0CD4.0020.0002.284B] # BRAILLE PATTERN DOTS-1247
-284C ; [*0CD5.0020.0002.284C] # BRAILLE PATTERN DOTS-347
-284D ; [*0CD6.0020.0002.284D] # BRAILLE PATTERN DOTS-1347
-284E ; [*0CD7.0020.0002.284E] # BRAILLE PATTERN DOTS-2347
-284F ; [*0CD8.0020.0002.284F] # BRAILLE PATTERN DOTS-12347
-2850 ; [*0CD9.0020.0002.2850] # BRAILLE PATTERN DOTS-57
-2851 ; [*0CDA.0020.0002.2851] # BRAILLE PATTERN DOTS-157
-2852 ; [*0CDB.0020.0002.2852] # BRAILLE PATTERN DOTS-257
-2853 ; [*0CDC.0020.0002.2853] # BRAILLE PATTERN DOTS-1257
-2854 ; [*0CDD.0020.0002.2854] # BRAILLE PATTERN DOTS-357
-2855 ; [*0CDE.0020.0002.2855] # BRAILLE PATTERN DOTS-1357
-2856 ; [*0CDF.0020.0002.2856] # BRAILLE PATTERN DOTS-2357
-2857 ; [*0CE0.0020.0002.2857] # BRAILLE PATTERN DOTS-12357
-2858 ; [*0CE1.0020.0002.2858] # BRAILLE PATTERN DOTS-457
-2859 ; [*0CE2.0020.0002.2859] # BRAILLE PATTERN DOTS-1457
-285A ; [*0CE3.0020.0002.285A] # BRAILLE PATTERN DOTS-2457
-285B ; [*0CE4.0020.0002.285B] # BRAILLE PATTERN DOTS-12457
-285C ; [*0CE5.0020.0002.285C] # BRAILLE PATTERN DOTS-3457
-285D ; [*0CE6.0020.0002.285D] # BRAILLE PATTERN DOTS-13457
-285E ; [*0CE7.0020.0002.285E] # BRAILLE PATTERN DOTS-23457
-285F ; [*0CE8.0020.0002.285F] # BRAILLE PATTERN DOTS-123457
-2860 ; [*0CE9.0020.0002.2860] # BRAILLE PATTERN DOTS-67
-2861 ; [*0CEA.0020.0002.2861] # BRAILLE PATTERN DOTS-167
-2862 ; [*0CEB.0020.0002.2862] # BRAILLE PATTERN DOTS-267
-2863 ; [*0CEC.0020.0002.2863] # BRAILLE PATTERN DOTS-1267
-2864 ; [*0CED.0020.0002.2864] # BRAILLE PATTERN DOTS-367
-2865 ; [*0CEE.0020.0002.2865] # BRAILLE PATTERN DOTS-1367
-2866 ; [*0CEF.0020.0002.2866] # BRAILLE PATTERN DOTS-2367
-2867 ; [*0CF0.0020.0002.2867] # BRAILLE PATTERN DOTS-12367
-2868 ; [*0CF1.0020.0002.2868] # BRAILLE PATTERN DOTS-467
-2869 ; [*0CF2.0020.0002.2869] # BRAILLE PATTERN DOTS-1467
-286A ; [*0CF3.0020.0002.286A] # BRAILLE PATTERN DOTS-2467
-286B ; [*0CF4.0020.0002.286B] # BRAILLE PATTERN DOTS-12467
-286C ; [*0CF5.0020.0002.286C] # BRAILLE PATTERN DOTS-3467
-286D ; [*0CF6.0020.0002.286D] # BRAILLE PATTERN DOTS-13467
-286E ; [*0CF7.0020.0002.286E] # BRAILLE PATTERN DOTS-23467
-286F ; [*0CF8.0020.0002.286F] # BRAILLE PATTERN DOTS-123467
-2870 ; [*0CF9.0020.0002.2870] # BRAILLE PATTERN DOTS-567
-2871 ; [*0CFA.0020.0002.2871] # BRAILLE PATTERN DOTS-1567
-2872 ; [*0CFB.0020.0002.2872] # BRAILLE PATTERN DOTS-2567
-2873 ; [*0CFC.0020.0002.2873] # BRAILLE PATTERN DOTS-12567
-2874 ; [*0CFD.0020.0002.2874] # BRAILLE PATTERN DOTS-3567
-2875 ; [*0CFE.0020.0002.2875] # BRAILLE PATTERN DOTS-13567
-2876 ; [*0CFF.0020.0002.2876] # BRAILLE PATTERN DOTS-23567
-2877 ; [*0D00.0020.0002.2877] # BRAILLE PATTERN DOTS-123567
-2878 ; [*0D01.0020.0002.2878] # BRAILLE PATTERN DOTS-4567
-2879 ; [*0D02.0020.0002.2879] # BRAILLE PATTERN DOTS-14567
-287A ; [*0D03.0020.0002.287A] # BRAILLE PATTERN DOTS-24567
-287B ; [*0D04.0020.0002.287B] # BRAILLE PATTERN DOTS-124567
-287C ; [*0D05.0020.0002.287C] # BRAILLE PATTERN DOTS-34567
-287D ; [*0D06.0020.0002.287D] # BRAILLE PATTERN DOTS-134567
-287E ; [*0D07.0020.0002.287E] # BRAILLE PATTERN DOTS-234567
-287F ; [*0D08.0020.0002.287F] # BRAILLE PATTERN DOTS-1234567
-2880 ; [*0D09.0020.0002.2880] # BRAILLE PATTERN DOTS-8
-2881 ; [*0D0A.0020.0002.2881] # BRAILLE PATTERN DOTS-18
-2882 ; [*0D0B.0020.0002.2882] # BRAILLE PATTERN DOTS-28
-2883 ; [*0D0C.0020.0002.2883] # BRAILLE PATTERN DOTS-128
-2884 ; [*0D0D.0020.0002.2884] # BRAILLE PATTERN DOTS-38
-2885 ; [*0D0E.0020.0002.2885] # BRAILLE PATTERN DOTS-138
-2886 ; [*0D0F.0020.0002.2886] # BRAILLE PATTERN DOTS-238
-2887 ; [*0D10.0020.0002.2887] # BRAILLE PATTERN DOTS-1238
-2888 ; [*0D11.0020.0002.2888] # BRAILLE PATTERN DOTS-48
-2889 ; [*0D12.0020.0002.2889] # BRAILLE PATTERN DOTS-148
-288A ; [*0D13.0020.0002.288A] # BRAILLE PATTERN DOTS-248
-288B ; [*0D14.0020.0002.288B] # BRAILLE PATTERN DOTS-1248
-288C ; [*0D15.0020.0002.288C] # BRAILLE PATTERN DOTS-348
-288D ; [*0D16.0020.0002.288D] # BRAILLE PATTERN DOTS-1348
-288E ; [*0D17.0020.0002.288E] # BRAILLE PATTERN DOTS-2348
-288F ; [*0D18.0020.0002.288F] # BRAILLE PATTERN DOTS-12348
-2890 ; [*0D19.0020.0002.2890] # BRAILLE PATTERN DOTS-58
-2891 ; [*0D1A.0020.0002.2891] # BRAILLE PATTERN DOTS-158
-2892 ; [*0D1B.0020.0002.2892] # BRAILLE PATTERN DOTS-258
-2893 ; [*0D1C.0020.0002.2893] # BRAILLE PATTERN DOTS-1258
-2894 ; [*0D1D.0020.0002.2894] # BRAILLE PATTERN DOTS-358
-2895 ; [*0D1E.0020.0002.2895] # BRAILLE PATTERN DOTS-1358
-2896 ; [*0D1F.0020.0002.2896] # BRAILLE PATTERN DOTS-2358
-2897 ; [*0D20.0020.0002.2897] # BRAILLE PATTERN DOTS-12358
-2898 ; [*0D21.0020.0002.2898] # BRAILLE PATTERN DOTS-458
-2899 ; [*0D22.0020.0002.2899] # BRAILLE PATTERN DOTS-1458
-289A ; [*0D23.0020.0002.289A] # BRAILLE PATTERN DOTS-2458
-289B ; [*0D24.0020.0002.289B] # BRAILLE PATTERN DOTS-12458
-289C ; [*0D25.0020.0002.289C] # BRAILLE PATTERN DOTS-3458
-289D ; [*0D26.0020.0002.289D] # BRAILLE PATTERN DOTS-13458
-289E ; [*0D27.0020.0002.289E] # BRAILLE PATTERN DOTS-23458
-289F ; [*0D28.0020.0002.289F] # BRAILLE PATTERN DOTS-123458
-28A0 ; [*0D29.0020.0002.28A0] # BRAILLE PATTERN DOTS-68
-28A1 ; [*0D2A.0020.0002.28A1] # BRAILLE PATTERN DOTS-168
-28A2 ; [*0D2B.0020.0002.28A2] # BRAILLE PATTERN DOTS-268
-28A3 ; [*0D2C.0020.0002.28A3] # BRAILLE PATTERN DOTS-1268
-28A4 ; [*0D2D.0020.0002.28A4] # BRAILLE PATTERN DOTS-368
-28A5 ; [*0D2E.0020.0002.28A5] # BRAILLE PATTERN DOTS-1368
-28A6 ; [*0D2F.0020.0002.28A6] # BRAILLE PATTERN DOTS-2368
-28A7 ; [*0D30.0020.0002.28A7] # BRAILLE PATTERN DOTS-12368
-28A8 ; [*0D31.0020.0002.28A8] # BRAILLE PATTERN DOTS-468
-28A9 ; [*0D32.0020.0002.28A9] # BRAILLE PATTERN DOTS-1468
-28AA ; [*0D33.0020.0002.28AA] # BRAILLE PATTERN DOTS-2468
-28AB ; [*0D34.0020.0002.28AB] # BRAILLE PATTERN DOTS-12468
-28AC ; [*0D35.0020.0002.28AC] # BRAILLE PATTERN DOTS-3468
-28AD ; [*0D36.0020.0002.28AD] # BRAILLE PATTERN DOTS-13468
-28AE ; [*0D37.0020.0002.28AE] # BRAILLE PATTERN DOTS-23468
-28AF ; [*0D38.0020.0002.28AF] # BRAILLE PATTERN DOTS-123468
-28B0 ; [*0D39.0020.0002.28B0] # BRAILLE PATTERN DOTS-568
-28B1 ; [*0D3A.0020.0002.28B1] # BRAILLE PATTERN DOTS-1568
-28B2 ; [*0D3B.0020.0002.28B2] # BRAILLE PATTERN DOTS-2568
-28B3 ; [*0D3C.0020.0002.28B3] # BRAILLE PATTERN DOTS-12568
-28B4 ; [*0D3D.0020.0002.28B4] # BRAILLE PATTERN DOTS-3568
-28B5 ; [*0D3E.0020.0002.28B5] # BRAILLE PATTERN DOTS-13568
-28B6 ; [*0D3F.0020.0002.28B6] # BRAILLE PATTERN DOTS-23568
-28B7 ; [*0D40.0020.0002.28B7] # BRAILLE PATTERN DOTS-123568
-28B8 ; [*0D41.0020.0002.28B8] # BRAILLE PATTERN DOTS-4568
-28B9 ; [*0D42.0020.0002.28B9] # BRAILLE PATTERN DOTS-14568
-28BA ; [*0D43.0020.0002.28BA] # BRAILLE PATTERN DOTS-24568
-28BB ; [*0D44.0020.0002.28BB] # BRAILLE PATTERN DOTS-124568
-28BC ; [*0D45.0020.0002.28BC] # BRAILLE PATTERN DOTS-34568
-28BD ; [*0D46.0020.0002.28BD] # BRAILLE PATTERN DOTS-134568
-28BE ; [*0D47.0020.0002.28BE] # BRAILLE PATTERN DOTS-234568
-28BF ; [*0D48.0020.0002.28BF] # BRAILLE PATTERN DOTS-1234568
-28C0 ; [*0D49.0020.0002.28C0] # BRAILLE PATTERN DOTS-78
-28C1 ; [*0D4A.0020.0002.28C1] # BRAILLE PATTERN DOTS-178
-28C2 ; [*0D4B.0020.0002.28C2] # BRAILLE PATTERN DOTS-278
-28C3 ; [*0D4C.0020.0002.28C3] # BRAILLE PATTERN DOTS-1278
-28C4 ; [*0D4D.0020.0002.28C4] # BRAILLE PATTERN DOTS-378
-28C5 ; [*0D4E.0020.0002.28C5] # BRAILLE PATTERN DOTS-1378
-28C6 ; [*0D4F.0020.0002.28C6] # BRAILLE PATTERN DOTS-2378
-28C7 ; [*0D50.0020.0002.28C7] # BRAILLE PATTERN DOTS-12378
-28C8 ; [*0D51.0020.0002.28C8] # BRAILLE PATTERN DOTS-478
-28C9 ; [*0D52.0020.0002.28C9] # BRAILLE PATTERN DOTS-1478
-28CA ; [*0D53.0020.0002.28CA] # BRAILLE PATTERN DOTS-2478
-28CB ; [*0D54.0020.0002.28CB] # BRAILLE PATTERN DOTS-12478
-28CC ; [*0D55.0020.0002.28CC] # BRAILLE PATTERN DOTS-3478
-28CD ; [*0D56.0020.0002.28CD] # BRAILLE PATTERN DOTS-13478
-28CE ; [*0D57.0020.0002.28CE] # BRAILLE PATTERN DOTS-23478
-28CF ; [*0D58.0020.0002.28CF] # BRAILLE PATTERN DOTS-123478
-28D0 ; [*0D59.0020.0002.28D0] # BRAILLE PATTERN DOTS-578
-28D1 ; [*0D5A.0020.0002.28D1] # BRAILLE PATTERN DOTS-1578
-28D2 ; [*0D5B.0020.0002.28D2] # BRAILLE PATTERN DOTS-2578
-28D3 ; [*0D5C.0020.0002.28D3] # BRAILLE PATTERN DOTS-12578
-28D4 ; [*0D5D.0020.0002.28D4] # BRAILLE PATTERN DOTS-3578
-28D5 ; [*0D5E.0020.0002.28D5] # BRAILLE PATTERN DOTS-13578
-28D6 ; [*0D5F.0020.0002.28D6] # BRAILLE PATTERN DOTS-23578
-28D7 ; [*0D60.0020.0002.28D7] # BRAILLE PATTERN DOTS-123578
-28D8 ; [*0D61.0020.0002.28D8] # BRAILLE PATTERN DOTS-4578
-28D9 ; [*0D62.0020.0002.28D9] # BRAILLE PATTERN DOTS-14578
-28DA ; [*0D63.0020.0002.28DA] # BRAILLE PATTERN DOTS-24578
-28DB ; [*0D64.0020.0002.28DB] # BRAILLE PATTERN DOTS-124578
-28DC ; [*0D65.0020.0002.28DC] # BRAILLE PATTERN DOTS-34578
-28DD ; [*0D66.0020.0002.28DD] # BRAILLE PATTERN DOTS-134578
-28DE ; [*0D67.0020.0002.28DE] # BRAILLE PATTERN DOTS-234578
-28DF ; [*0D68.0020.0002.28DF] # BRAILLE PATTERN DOTS-1234578
-28E0 ; [*0D69.0020.0002.28E0] # BRAILLE PATTERN DOTS-678
-28E1 ; [*0D6A.0020.0002.28E1] # BRAILLE PATTERN DOTS-1678
-28E2 ; [*0D6B.0020.0002.28E2] # BRAILLE PATTERN DOTS-2678
-28E3 ; [*0D6C.0020.0002.28E3] # BRAILLE PATTERN DOTS-12678
-28E4 ; [*0D6D.0020.0002.28E4] # BRAILLE PATTERN DOTS-3678
-28E5 ; [*0D6E.0020.0002.28E5] # BRAILLE PATTERN DOTS-13678
-28E6 ; [*0D6F.0020.0002.28E6] # BRAILLE PATTERN DOTS-23678
-28E7 ; [*0D70.0020.0002.28E7] # BRAILLE PATTERN DOTS-123678
-28E8 ; [*0D71.0020.0002.28E8] # BRAILLE PATTERN DOTS-4678
-28E9 ; [*0D72.0020.0002.28E9] # BRAILLE PATTERN DOTS-14678
-28EA ; [*0D73.0020.0002.28EA] # BRAILLE PATTERN DOTS-24678
-28EB ; [*0D74.0020.0002.28EB] # BRAILLE PATTERN DOTS-124678
-28EC ; [*0D75.0020.0002.28EC] # BRAILLE PATTERN DOTS-34678
-28ED ; [*0D76.0020.0002.28ED] # BRAILLE PATTERN DOTS-134678
-28EE ; [*0D77.0020.0002.28EE] # BRAILLE PATTERN DOTS-234678
-28EF ; [*0D78.0020.0002.28EF] # BRAILLE PATTERN DOTS-1234678
-28F0 ; [*0D79.0020.0002.28F0] # BRAILLE PATTERN DOTS-5678
-28F1 ; [*0D7A.0020.0002.28F1] # BRAILLE PATTERN DOTS-15678
-28F2 ; [*0D7B.0020.0002.28F2] # BRAILLE PATTERN DOTS-25678
-28F3 ; [*0D7C.0020.0002.28F3] # BRAILLE PATTERN DOTS-125678
-28F4 ; [*0D7D.0020.0002.28F4] # BRAILLE PATTERN DOTS-35678
-28F5 ; [*0D7E.0020.0002.28F5] # BRAILLE PATTERN DOTS-135678
-28F6 ; [*0D7F.0020.0002.28F6] # BRAILLE PATTERN DOTS-235678
-28F7 ; [*0D80.0020.0002.28F7] # BRAILLE PATTERN DOTS-1235678
-28F8 ; [*0D81.0020.0002.28F8] # BRAILLE PATTERN DOTS-45678
-28F9 ; [*0D82.0020.0002.28F9] # BRAILLE PATTERN DOTS-145678
-28FA ; [*0D83.0020.0002.28FA] # BRAILLE PATTERN DOTS-245678
-28FB ; [*0D84.0020.0002.28FB] # BRAILLE PATTERN DOTS-1245678
-28FC ; [*0D85.0020.0002.28FC] # BRAILLE PATTERN DOTS-345678
-28FD ; [*0D86.0020.0002.28FD] # BRAILLE PATTERN DOTS-1345678
-28FE ; [*0D87.0020.0002.28FE] # BRAILLE PATTERN DOTS-2345678
-28FF ; [*0D88.0020.0002.28FF] # BRAILLE PATTERN DOTS-12345678
-2900 ; [*0A4D.0020.0002.2900] # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
-2901 ; [*0A4E.0020.0002.2901] # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
-2902 ; [*0A4F.0020.0002.2902] # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2903 ; [*0A50.0020.0002.2903] # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
-2904 ; [*0A51.0020.0002.2904] # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
-2905 ; [*0A52.0020.0002.2905] # RIGHTWARDS TWO-HEADED ARROW FROM BAR
-2906 ; [*0A53.0020.0002.2906] # LEFTWARDS DOUBLE ARROW FROM BAR
-2907 ; [*0A54.0020.0002.2907] # RIGHTWARDS DOUBLE ARROW FROM BAR
-2908 ; [*0A55.0020.0002.2908] # DOWNWARDS ARROW WITH HORIZONTAL STROKE
-2909 ; [*0A56.0020.0002.2909] # UPWARDS ARROW WITH HORIZONTAL STROKE
-290A ; [*0A57.0020.0002.290A] # UPWARDS TRIPLE ARROW
-290B ; [*0A58.0020.0002.290B] # DOWNWARDS TRIPLE ARROW
-290C ; [*0A59.0020.0002.290C] # LEFTWARDS DOUBLE DASH ARROW
-290D ; [*0A5A.0020.0002.290D] # RIGHTWARDS DOUBLE DASH ARROW
-290E ; [*0A5B.0020.0002.290E] # LEFTWARDS TRIPLE DASH ARROW
-290F ; [*0A5C.0020.0002.290F] # RIGHTWARDS TRIPLE DASH ARROW
-2910 ; [*0A5D.0020.0002.2910] # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
-2911 ; [*0A5E.0020.0002.2911] # RIGHTWARDS ARROW WITH DOTTED STEM
-2912 ; [*0A5F.0020.0002.2912] # UPWARDS ARROW TO BAR
-2913 ; [*0A60.0020.0002.2913] # DOWNWARDS ARROW TO BAR
-2914 ; [*0A61.0020.0002.2914] # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
-2915 ; [*0A62.0020.0002.2915] # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2916 ; [*0A63.0020.0002.2916] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL
-2917 ; [*0A64.0020.0002.2917] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
-2918 ; [*0A65.0020.0002.2918] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2919 ; [*0A66.0020.0002.2919] # LEFTWARDS ARROW-TAIL
-291A ; [*0A67.0020.0002.291A] # RIGHTWARDS ARROW-TAIL
-291B ; [*0A68.0020.0002.291B] # LEFTWARDS DOUBLE ARROW-TAIL
-291C ; [*0A69.0020.0002.291C] # RIGHTWARDS DOUBLE ARROW-TAIL
-291D ; [*0A6A.0020.0002.291D] # LEFTWARDS ARROW TO BLACK DIAMOND
-291E ; [*0A6B.0020.0002.291E] # RIGHTWARDS ARROW TO BLACK DIAMOND
-291F ; [*0A6C.0020.0002.291F] # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2920 ; [*0A6D.0020.0002.2920] # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
-2921 ; [*0A6E.0020.0002.2921] # NORTH WEST AND SOUTH EAST ARROW
-2922 ; [*0A6F.0020.0002.2922] # NORTH EAST AND SOUTH WEST ARROW
-2923 ; [*0A70.0020.0002.2923] # NORTH WEST ARROW WITH HOOK
-2924 ; [*0A71.0020.0002.2924] # NORTH EAST ARROW WITH HOOK
-2925 ; [*0A72.0020.0002.2925] # SOUTH EAST ARROW WITH HOOK
-2926 ; [*0A73.0020.0002.2926] # SOUTH WEST ARROW WITH HOOK
-2927 ; [*0A74.0020.0002.2927] # NORTH WEST ARROW AND NORTH EAST ARROW
-2928 ; [*0A75.0020.0002.2928] # NORTH EAST ARROW AND SOUTH EAST ARROW
-2929 ; [*0A76.0020.0002.2929] # SOUTH EAST ARROW AND SOUTH WEST ARROW
-292A ; [*0A77.0020.0002.292A] # SOUTH WEST ARROW AND NORTH WEST ARROW
-292B ; [*0A78.0020.0002.292B] # RISING DIAGONAL CROSSING FALLING DIAGONAL
-292C ; [*0A79.0020.0002.292C] # FALLING DIAGONAL CROSSING RISING DIAGONAL
-292D ; [*0A7A.0020.0002.292D] # SOUTH EAST ARROW CROSSING NORTH EAST ARROW
-292E ; [*0A7B.0020.0002.292E] # NORTH EAST ARROW CROSSING SOUTH EAST ARROW
-292F ; [*0A7C.0020.0002.292F] # FALLING DIAGONAL CROSSING NORTH EAST ARROW
-2930 ; [*0A7D.0020.0002.2930] # RISING DIAGONAL CROSSING SOUTH EAST ARROW
-2931 ; [*0A7E.0020.0002.2931] # NORTH EAST ARROW CROSSING NORTH WEST ARROW
-2932 ; [*0A7F.0020.0002.2932] # NORTH WEST ARROW CROSSING NORTH EAST ARROW
-2933 ; [*0A80.0020.0002.2933] # WAVE ARROW POINTING DIRECTLY RIGHT
-2934 ; [*0A81.0020.0002.2934] # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
-2935 ; [*0A82.0020.0002.2935] # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
-2936 ; [*0A83.0020.0002.2936] # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
-2937 ; [*0A84.0020.0002.2937] # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
-2938 ; [*0A85.0020.0002.2938] # RIGHT-SIDE ARC CLOCKWISE ARROW
-2939 ; [*0A86.0020.0002.2939] # LEFT-SIDE ARC ANTICLOCKWISE ARROW
-293A ; [*0A87.0020.0002.293A] # TOP ARC ANTICLOCKWISE ARROW
-293B ; [*0A88.0020.0002.293B] # BOTTOM ARC ANTICLOCKWISE ARROW
-293C ; [*0A89.0020.0002.293C] # TOP ARC CLOCKWISE ARROW WITH MINUS
-293D ; [*0A8A.0020.0002.293D] # TOP ARC ANTICLOCKWISE ARROW WITH PLUS
-293E ; [*0A8B.0020.0002.293E] # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW
-293F ; [*0A8C.0020.0002.293F] # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW
-2940 ; [*0A8D.0020.0002.2940] # ANTICLOCKWISE CLOSED CIRCLE ARROW
-2941 ; [*0A8E.0020.0002.2941] # CLOCKWISE CLOSED CIRCLE ARROW
-2942 ; [*0A8F.0020.0002.2942] # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
-2943 ; [*0A90.0020.0002.2943] # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW
-2944 ; [*0A91.0020.0002.2944] # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
-2945 ; [*0A92.0020.0002.2945] # RIGHTWARDS ARROW WITH PLUS BELOW
-2946 ; [*0A93.0020.0002.2946] # LEFTWARDS ARROW WITH PLUS BELOW
-2947 ; [*0A94.0020.0002.2947] # RIGHTWARDS ARROW THROUGH X
-2948 ; [*0A95.0020.0002.2948] # LEFT RIGHT ARROW THROUGH SMALL CIRCLE
-2949 ; [*0A96.0020.0002.2949] # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
-294A ; [*0A97.0020.0002.294A] # LEFT BARB UP RIGHT BARB DOWN HARPOON
-294B ; [*0A98.0020.0002.294B] # LEFT BARB DOWN RIGHT BARB UP HARPOON
-294C ; [*0A99.0020.0002.294C] # UP BARB RIGHT DOWN BARB LEFT HARPOON
-294D ; [*0A9A.0020.0002.294D] # UP BARB LEFT DOWN BARB RIGHT HARPOON
-294E ; [*0A9B.0020.0002.294E] # LEFT BARB UP RIGHT BARB UP HARPOON
-294F ; [*0A9C.0020.0002.294F] # UP BARB RIGHT DOWN BARB RIGHT HARPOON
-2950 ; [*0A9D.0020.0002.2950] # LEFT BARB DOWN RIGHT BARB DOWN HARPOON
-2951 ; [*0A9E.0020.0002.2951] # UP BARB LEFT DOWN BARB LEFT HARPOON
-2952 ; [*0A9F.0020.0002.2952] # LEFTWARDS HARPOON WITH BARB UP TO BAR
-2953 ; [*0AA0.0020.0002.2953] # RIGHTWARDS HARPOON WITH BARB UP TO BAR
-2954 ; [*0AA1.0020.0002.2954] # UPWARDS HARPOON WITH BARB RIGHT TO BAR
-2955 ; [*0AA2.0020.0002.2955] # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
-2956 ; [*0AA3.0020.0002.2956] # LEFTWARDS HARPOON WITH BARB DOWN TO BAR
-2957 ; [*0AA4.0020.0002.2957] # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
-2958 ; [*0AA5.0020.0002.2958] # UPWARDS HARPOON WITH BARB LEFT TO BAR
-2959 ; [*0AA6.0020.0002.2959] # DOWNWARDS HARPOON WITH BARB LEFT TO BAR
-295A ; [*0AA7.0020.0002.295A] # LEFTWARDS HARPOON WITH BARB UP FROM BAR
-295B ; [*0AA8.0020.0002.295B] # RIGHTWARDS HARPOON WITH BARB UP FROM BAR
-295C ; [*0AA9.0020.0002.295C] # UPWARDS HARPOON WITH BARB RIGHT FROM BAR
-295D ; [*0AAA.0020.0002.295D] # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
-295E ; [*0AAB.0020.0002.295E] # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
-295F ; [*0AAC.0020.0002.295F] # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
-2960 ; [*0AAD.0020.0002.2960] # UPWARDS HARPOON WITH BARB LEFT FROM BAR
-2961 ; [*0AAE.0020.0002.2961] # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
-2962 ; [*0AAF.0020.0002.2962] # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-2963 ; [*0AB0.0020.0002.2963] # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2964 ; [*0AB1.0020.0002.2964] # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2965 ; [*0AB2.0020.0002.2965] # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-2966 ; [*0AB3.0020.0002.2966] # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
-2967 ; [*0AB4.0020.0002.2967] # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
-2968 ; [*0AB5.0020.0002.2968] # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
-2969 ; [*0AB6.0020.0002.2969] # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
-296A ; [*0AB7.0020.0002.296A] # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296B ; [*0AB8.0020.0002.296B] # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296C ; [*0AB9.0020.0002.296C] # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
-296D ; [*0ABA.0020.0002.296D] # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
-296E ; [*0ABB.0020.0002.296E] # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
-296F ; [*0ABC.0020.0002.296F] # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
-2970 ; [*0ABD.0020.0002.2970] # RIGHT DOUBLE ARROW WITH ROUNDED HEAD
-2971 ; [*0ABE.0020.0002.2971] # EQUALS SIGN ABOVE RIGHTWARDS ARROW
-2972 ; [*0ABF.0020.0002.2972] # TILDE OPERATOR ABOVE RIGHTWARDS ARROW
-2973 ; [*0AC0.0020.0002.2973] # LEFTWARDS ARROW ABOVE TILDE OPERATOR
-2974 ; [*0AC1.0020.0002.2974] # RIGHTWARDS ARROW ABOVE TILDE OPERATOR
-2975 ; [*0AC2.0020.0002.2975] # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
-2976 ; [*0AC3.0020.0002.2976] # LESS-THAN ABOVE LEFTWARDS ARROW
-2977 ; [*0AC4.0020.0002.2977] # LEFTWARDS ARROW THROUGH LESS-THAN
-2978 ; [*0AC5.0020.0002.2978] # GREATER-THAN ABOVE RIGHTWARDS ARROW
-2979 ; [*0AC6.0020.0002.2979] # SUBSET ABOVE RIGHTWARDS ARROW
-297A ; [*0AC7.0020.0002.297A] # LEFTWARDS ARROW THROUGH SUBSET
-297B ; [*0AC8.0020.0002.297B] # SUPERSET ABOVE LEFTWARDS ARROW
-297C ; [*0AC9.0020.0002.297C] # LEFT FISH TAIL
-297D ; [*0ACA.0020.0002.297D] # RIGHT FISH TAIL
-297E ; [*0ACB.0020.0002.297E] # UP FISH TAIL
-297F ; [*0ACC.0020.0002.297F] # DOWN FISH TAIL
-2980 ; [*0ACD.0020.0002.2980] # TRIPLE VERTICAL BAR DELIMITER
-2981 ; [*0ACE.0020.0002.2981] # Z NOTATION SPOT
-2982 ; [*0ACF.0020.0002.2982] # Z NOTATION TYPE COLON
+27F0 ; [*0A57.0020.0002.27F0] # UPWARDS QUADRUPLE ARROW
+27F1 ; [*0A58.0020.0002.27F1] # DOWNWARDS QUADRUPLE ARROW
+27F2 ; [*0A59.0020.0002.27F2] # ANTICLOCKWISE GAPPED CIRCLE ARROW
+27F3 ; [*0A5A.0020.0002.27F3] # CLOCKWISE GAPPED CIRCLE ARROW
+27F4 ; [*0A5B.0020.0002.27F4] # RIGHT ARROW WITH CIRCLED PLUS
+27F5 ; [*0A5C.0020.0002.27F5] # LONG LEFTWARDS ARROW
+27F6 ; [*0A5D.0020.0002.27F6] # LONG RIGHTWARDS ARROW
+27F7 ; [*0A5E.0020.0002.27F7] # LONG LEFT RIGHT ARROW
+27F8 ; [*0A5F.0020.0002.27F8] # LONG LEFTWARDS DOUBLE ARROW
+27F9 ; [*0A60.0020.0002.27F9] # LONG RIGHTWARDS DOUBLE ARROW
+27FA ; [*0A61.0020.0002.27FA] # LONG LEFT RIGHT DOUBLE ARROW
+27FB ; [*0A62.0020.0002.27FB] # LONG LEFTWARDS ARROW FROM BAR
+27FC ; [*0A63.0020.0002.27FC] # LONG RIGHTWARDS ARROW FROM BAR
+27FD ; [*0A64.0020.0002.27FD] # LONG LEFTWARDS DOUBLE ARROW FROM BAR
+27FE ; [*0A65.0020.0002.27FE] # LONG RIGHTWARDS DOUBLE ARROW FROM BAR
+27FF ; [*0A66.0020.0002.27FF] # LONG RIGHTWARDS SQUIGGLE ARROW
+2800 ; [*0CA3.0020.0002.2800] # BRAILLE PATTERN BLANK
+2801 ; [*0CA4.0020.0002.2801] # BRAILLE PATTERN DOTS-1
+2802 ; [*0CA5.0020.0002.2802] # BRAILLE PATTERN DOTS-2
+2803 ; [*0CA6.0020.0002.2803] # BRAILLE PATTERN DOTS-12
+2804 ; [*0CA7.0020.0002.2804] # BRAILLE PATTERN DOTS-3
+2805 ; [*0CA8.0020.0002.2805] # BRAILLE PATTERN DOTS-13
+2806 ; [*0CA9.0020.0002.2806] # BRAILLE PATTERN DOTS-23
+2807 ; [*0CAA.0020.0002.2807] # BRAILLE PATTERN DOTS-123
+2808 ; [*0CAB.0020.0002.2808] # BRAILLE PATTERN DOTS-4
+2809 ; [*0CAC.0020.0002.2809] # BRAILLE PATTERN DOTS-14
+280A ; [*0CAD.0020.0002.280A] # BRAILLE PATTERN DOTS-24
+280B ; [*0CAE.0020.0002.280B] # BRAILLE PATTERN DOTS-124
+280C ; [*0CAF.0020.0002.280C] # BRAILLE PATTERN DOTS-34
+280D ; [*0CB0.0020.0002.280D] # BRAILLE PATTERN DOTS-134
+280E ; [*0CB1.0020.0002.280E] # BRAILLE PATTERN DOTS-234
+280F ; [*0CB2.0020.0002.280F] # BRAILLE PATTERN DOTS-1234
+2810 ; [*0CB3.0020.0002.2810] # BRAILLE PATTERN DOTS-5
+2811 ; [*0CB4.0020.0002.2811] # BRAILLE PATTERN DOTS-15
+2812 ; [*0CB5.0020.0002.2812] # BRAILLE PATTERN DOTS-25
+2813 ; [*0CB6.0020.0002.2813] # BRAILLE PATTERN DOTS-125
+2814 ; [*0CB7.0020.0002.2814] # BRAILLE PATTERN DOTS-35
+2815 ; [*0CB8.0020.0002.2815] # BRAILLE PATTERN DOTS-135
+2816 ; [*0CB9.0020.0002.2816] # BRAILLE PATTERN DOTS-235
+2817 ; [*0CBA.0020.0002.2817] # BRAILLE PATTERN DOTS-1235
+2818 ; [*0CBB.0020.0002.2818] # BRAILLE PATTERN DOTS-45
+2819 ; [*0CBC.0020.0002.2819] # BRAILLE PATTERN DOTS-145
+281A ; [*0CBD.0020.0002.281A] # BRAILLE PATTERN DOTS-245
+281B ; [*0CBE.0020.0002.281B] # BRAILLE PATTERN DOTS-1245
+281C ; [*0CBF.0020.0002.281C] # BRAILLE PATTERN DOTS-345
+281D ; [*0CC0.0020.0002.281D] # BRAILLE PATTERN DOTS-1345
+281E ; [*0CC1.0020.0002.281E] # BRAILLE PATTERN DOTS-2345
+281F ; [*0CC2.0020.0002.281F] # BRAILLE PATTERN DOTS-12345
+2820 ; [*0CC3.0020.0002.2820] # BRAILLE PATTERN DOTS-6
+2821 ; [*0CC4.0020.0002.2821] # BRAILLE PATTERN DOTS-16
+2822 ; [*0CC5.0020.0002.2822] # BRAILLE PATTERN DOTS-26
+2823 ; [*0CC6.0020.0002.2823] # BRAILLE PATTERN DOTS-126
+2824 ; [*0CC7.0020.0002.2824] # BRAILLE PATTERN DOTS-36
+2825 ; [*0CC8.0020.0002.2825] # BRAILLE PATTERN DOTS-136
+2826 ; [*0CC9.0020.0002.2826] # BRAILLE PATTERN DOTS-236
+2827 ; [*0CCA.0020.0002.2827] # BRAILLE PATTERN DOTS-1236
+2828 ; [*0CCB.0020.0002.2828] # BRAILLE PATTERN DOTS-46
+2829 ; [*0CCC.0020.0002.2829] # BRAILLE PATTERN DOTS-146
+282A ; [*0CCD.0020.0002.282A] # BRAILLE PATTERN DOTS-246
+282B ; [*0CCE.0020.0002.282B] # BRAILLE PATTERN DOTS-1246
+282C ; [*0CCF.0020.0002.282C] # BRAILLE PATTERN DOTS-346
+282D ; [*0CD0.0020.0002.282D] # BRAILLE PATTERN DOTS-1346
+282E ; [*0CD1.0020.0002.282E] # BRAILLE PATTERN DOTS-2346
+282F ; [*0CD2.0020.0002.282F] # BRAILLE PATTERN DOTS-12346
+2830 ; [*0CD3.0020.0002.2830] # BRAILLE PATTERN DOTS-56
+2831 ; [*0CD4.0020.0002.2831] # BRAILLE PATTERN DOTS-156
+2832 ; [*0CD5.0020.0002.2832] # BRAILLE PATTERN DOTS-256
+2833 ; [*0CD6.0020.0002.2833] # BRAILLE PATTERN DOTS-1256
+2834 ; [*0CD7.0020.0002.2834] # BRAILLE PATTERN DOTS-356
+2835 ; [*0CD8.0020.0002.2835] # BRAILLE PATTERN DOTS-1356
+2836 ; [*0CD9.0020.0002.2836] # BRAILLE PATTERN DOTS-2356
+2837 ; [*0CDA.0020.0002.2837] # BRAILLE PATTERN DOTS-12356
+2838 ; [*0CDB.0020.0002.2838] # BRAILLE PATTERN DOTS-456
+2839 ; [*0CDC.0020.0002.2839] # BRAILLE PATTERN DOTS-1456
+283A ; [*0CDD.0020.0002.283A] # BRAILLE PATTERN DOTS-2456
+283B ; [*0CDE.0020.0002.283B] # BRAILLE PATTERN DOTS-12456
+283C ; [*0CDF.0020.0002.283C] # BRAILLE PATTERN DOTS-3456
+283D ; [*0CE0.0020.0002.283D] # BRAILLE PATTERN DOTS-13456
+283E ; [*0CE1.0020.0002.283E] # BRAILLE PATTERN DOTS-23456
+283F ; [*0CE2.0020.0002.283F] # BRAILLE PATTERN DOTS-123456
+2840 ; [*0CE3.0020.0002.2840] # BRAILLE PATTERN DOTS-7
+2841 ; [*0CE4.0020.0002.2841] # BRAILLE PATTERN DOTS-17
+2842 ; [*0CE5.0020.0002.2842] # BRAILLE PATTERN DOTS-27
+2843 ; [*0CE6.0020.0002.2843] # BRAILLE PATTERN DOTS-127
+2844 ; [*0CE7.0020.0002.2844] # BRAILLE PATTERN DOTS-37
+2845 ; [*0CE8.0020.0002.2845] # BRAILLE PATTERN DOTS-137
+2846 ; [*0CE9.0020.0002.2846] # BRAILLE PATTERN DOTS-237
+2847 ; [*0CEA.0020.0002.2847] # BRAILLE PATTERN DOTS-1237
+2848 ; [*0CEB.0020.0002.2848] # BRAILLE PATTERN DOTS-47
+2849 ; [*0CEC.0020.0002.2849] # BRAILLE PATTERN DOTS-147
+284A ; [*0CED.0020.0002.284A] # BRAILLE PATTERN DOTS-247
+284B ; [*0CEE.0020.0002.284B] # BRAILLE PATTERN DOTS-1247
+284C ; [*0CEF.0020.0002.284C] # BRAILLE PATTERN DOTS-347
+284D ; [*0CF0.0020.0002.284D] # BRAILLE PATTERN DOTS-1347
+284E ; [*0CF1.0020.0002.284E] # BRAILLE PATTERN DOTS-2347
+284F ; [*0CF2.0020.0002.284F] # BRAILLE PATTERN DOTS-12347
+2850 ; [*0CF3.0020.0002.2850] # BRAILLE PATTERN DOTS-57
+2851 ; [*0CF4.0020.0002.2851] # BRAILLE PATTERN DOTS-157
+2852 ; [*0CF5.0020.0002.2852] # BRAILLE PATTERN DOTS-257
+2853 ; [*0CF6.0020.0002.2853] # BRAILLE PATTERN DOTS-1257
+2854 ; [*0CF7.0020.0002.2854] # BRAILLE PATTERN DOTS-357
+2855 ; [*0CF8.0020.0002.2855] # BRAILLE PATTERN DOTS-1357
+2856 ; [*0CF9.0020.0002.2856] # BRAILLE PATTERN DOTS-2357
+2857 ; [*0CFA.0020.0002.2857] # BRAILLE PATTERN DOTS-12357
+2858 ; [*0CFB.0020.0002.2858] # BRAILLE PATTERN DOTS-457
+2859 ; [*0CFC.0020.0002.2859] # BRAILLE PATTERN DOTS-1457
+285A ; [*0CFD.0020.0002.285A] # BRAILLE PATTERN DOTS-2457
+285B ; [*0CFE.0020.0002.285B] # BRAILLE PATTERN DOTS-12457
+285C ; [*0CFF.0020.0002.285C] # BRAILLE PATTERN DOTS-3457
+285D ; [*0D00.0020.0002.285D] # BRAILLE PATTERN DOTS-13457
+285E ; [*0D01.0020.0002.285E] # BRAILLE PATTERN DOTS-23457
+285F ; [*0D02.0020.0002.285F] # BRAILLE PATTERN DOTS-123457
+2860 ; [*0D03.0020.0002.2860] # BRAILLE PATTERN DOTS-67
+2861 ; [*0D04.0020.0002.2861] # BRAILLE PATTERN DOTS-167
+2862 ; [*0D05.0020.0002.2862] # BRAILLE PATTERN DOTS-267
+2863 ; [*0D06.0020.0002.2863] # BRAILLE PATTERN DOTS-1267
+2864 ; [*0D07.0020.0002.2864] # BRAILLE PATTERN DOTS-367
+2865 ; [*0D08.0020.0002.2865] # BRAILLE PATTERN DOTS-1367
+2866 ; [*0D09.0020.0002.2866] # BRAILLE PATTERN DOTS-2367
+2867 ; [*0D0A.0020.0002.2867] # BRAILLE PATTERN DOTS-12367
+2868 ; [*0D0B.0020.0002.2868] # BRAILLE PATTERN DOTS-467
+2869 ; [*0D0C.0020.0002.2869] # BRAILLE PATTERN DOTS-1467
+286A ; [*0D0D.0020.0002.286A] # BRAILLE PATTERN DOTS-2467
+286B ; [*0D0E.0020.0002.286B] # BRAILLE PATTERN DOTS-12467
+286C ; [*0D0F.0020.0002.286C] # BRAILLE PATTERN DOTS-3467
+286D ; [*0D10.0020.0002.286D] # BRAILLE PATTERN DOTS-13467
+286E ; [*0D11.0020.0002.286E] # BRAILLE PATTERN DOTS-23467
+286F ; [*0D12.0020.0002.286F] # BRAILLE PATTERN DOTS-123467
+2870 ; [*0D13.0020.0002.2870] # BRAILLE PATTERN DOTS-567
+2871 ; [*0D14.0020.0002.2871] # BRAILLE PATTERN DOTS-1567
+2872 ; [*0D15.0020.0002.2872] # BRAILLE PATTERN DOTS-2567
+2873 ; [*0D16.0020.0002.2873] # BRAILLE PATTERN DOTS-12567
+2874 ; [*0D17.0020.0002.2874] # BRAILLE PATTERN DOTS-3567
+2875 ; [*0D18.0020.0002.2875] # BRAILLE PATTERN DOTS-13567
+2876 ; [*0D19.0020.0002.2876] # BRAILLE PATTERN DOTS-23567
+2877 ; [*0D1A.0020.0002.2877] # BRAILLE PATTERN DOTS-123567
+2878 ; [*0D1B.0020.0002.2878] # BRAILLE PATTERN DOTS-4567
+2879 ; [*0D1C.0020.0002.2879] # BRAILLE PATTERN DOTS-14567
+287A ; [*0D1D.0020.0002.287A] # BRAILLE PATTERN DOTS-24567
+287B ; [*0D1E.0020.0002.287B] # BRAILLE PATTERN DOTS-124567
+287C ; [*0D1F.0020.0002.287C] # BRAILLE PATTERN DOTS-34567
+287D ; [*0D20.0020.0002.287D] # BRAILLE PATTERN DOTS-134567
+287E ; [*0D21.0020.0002.287E] # BRAILLE PATTERN DOTS-234567
+287F ; [*0D22.0020.0002.287F] # BRAILLE PATTERN DOTS-1234567
+2880 ; [*0D23.0020.0002.2880] # BRAILLE PATTERN DOTS-8
+2881 ; [*0D24.0020.0002.2881] # BRAILLE PATTERN DOTS-18
+2882 ; [*0D25.0020.0002.2882] # BRAILLE PATTERN DOTS-28
+2883 ; [*0D26.0020.0002.2883] # BRAILLE PATTERN DOTS-128
+2884 ; [*0D27.0020.0002.2884] # BRAILLE PATTERN DOTS-38
+2885 ; [*0D28.0020.0002.2885] # BRAILLE PATTERN DOTS-138
+2886 ; [*0D29.0020.0002.2886] # BRAILLE PATTERN DOTS-238
+2887 ; [*0D2A.0020.0002.2887] # BRAILLE PATTERN DOTS-1238
+2888 ; [*0D2B.0020.0002.2888] # BRAILLE PATTERN DOTS-48
+2889 ; [*0D2C.0020.0002.2889] # BRAILLE PATTERN DOTS-148
+288A ; [*0D2D.0020.0002.288A] # BRAILLE PATTERN DOTS-248
+288B ; [*0D2E.0020.0002.288B] # BRAILLE PATTERN DOTS-1248
+288C ; [*0D2F.0020.0002.288C] # BRAILLE PATTERN DOTS-348
+288D ; [*0D30.0020.0002.288D] # BRAILLE PATTERN DOTS-1348
+288E ; [*0D31.0020.0002.288E] # BRAILLE PATTERN DOTS-2348
+288F ; [*0D32.0020.0002.288F] # BRAILLE PATTERN DOTS-12348
+2890 ; [*0D33.0020.0002.2890] # BRAILLE PATTERN DOTS-58
+2891 ; [*0D34.0020.0002.2891] # BRAILLE PATTERN DOTS-158
+2892 ; [*0D35.0020.0002.2892] # BRAILLE PATTERN DOTS-258
+2893 ; [*0D36.0020.0002.2893] # BRAILLE PATTERN DOTS-1258
+2894 ; [*0D37.0020.0002.2894] # BRAILLE PATTERN DOTS-358
+2895 ; [*0D38.0020.0002.2895] # BRAILLE PATTERN DOTS-1358
+2896 ; [*0D39.0020.0002.2896] # BRAILLE PATTERN DOTS-2358
+2897 ; [*0D3A.0020.0002.2897] # BRAILLE PATTERN DOTS-12358
+2898 ; [*0D3B.0020.0002.2898] # BRAILLE PATTERN DOTS-458
+2899 ; [*0D3C.0020.0002.2899] # BRAILLE PATTERN DOTS-1458
+289A ; [*0D3D.0020.0002.289A] # BRAILLE PATTERN DOTS-2458
+289B ; [*0D3E.0020.0002.289B] # BRAILLE PATTERN DOTS-12458
+289C ; [*0D3F.0020.0002.289C] # BRAILLE PATTERN DOTS-3458
+289D ; [*0D40.0020.0002.289D] # BRAILLE PATTERN DOTS-13458
+289E ; [*0D41.0020.0002.289E] # BRAILLE PATTERN DOTS-23458
+289F ; [*0D42.0020.0002.289F] # BRAILLE PATTERN DOTS-123458
+28A0 ; [*0D43.0020.0002.28A0] # BRAILLE PATTERN DOTS-68
+28A1 ; [*0D44.0020.0002.28A1] # BRAILLE PATTERN DOTS-168
+28A2 ; [*0D45.0020.0002.28A2] # BRAILLE PATTERN DOTS-268
+28A3 ; [*0D46.0020.0002.28A3] # BRAILLE PATTERN DOTS-1268
+28A4 ; [*0D47.0020.0002.28A4] # BRAILLE PATTERN DOTS-368
+28A5 ; [*0D48.0020.0002.28A5] # BRAILLE PATTERN DOTS-1368
+28A6 ; [*0D49.0020.0002.28A6] # BRAILLE PATTERN DOTS-2368
+28A7 ; [*0D4A.0020.0002.28A7] # BRAILLE PATTERN DOTS-12368
+28A8 ; [*0D4B.0020.0002.28A8] # BRAILLE PATTERN DOTS-468
+28A9 ; [*0D4C.0020.0002.28A9] # BRAILLE PATTERN DOTS-1468
+28AA ; [*0D4D.0020.0002.28AA] # BRAILLE PATTERN DOTS-2468
+28AB ; [*0D4E.0020.0002.28AB] # BRAILLE PATTERN DOTS-12468
+28AC ; [*0D4F.0020.0002.28AC] # BRAILLE PATTERN DOTS-3468
+28AD ; [*0D50.0020.0002.28AD] # BRAILLE PATTERN DOTS-13468
+28AE ; [*0D51.0020.0002.28AE] # BRAILLE PATTERN DOTS-23468
+28AF ; [*0D52.0020.0002.28AF] # BRAILLE PATTERN DOTS-123468
+28B0 ; [*0D53.0020.0002.28B0] # BRAILLE PATTERN DOTS-568
+28B1 ; [*0D54.0020.0002.28B1] # BRAILLE PATTERN DOTS-1568
+28B2 ; [*0D55.0020.0002.28B2] # BRAILLE PATTERN DOTS-2568
+28B3 ; [*0D56.0020.0002.28B3] # BRAILLE PATTERN DOTS-12568
+28B4 ; [*0D57.0020.0002.28B4] # BRAILLE PATTERN DOTS-3568
+28B5 ; [*0D58.0020.0002.28B5] # BRAILLE PATTERN DOTS-13568
+28B6 ; [*0D59.0020.0002.28B6] # BRAILLE PATTERN DOTS-23568
+28B7 ; [*0D5A.0020.0002.28B7] # BRAILLE PATTERN DOTS-123568
+28B8 ; [*0D5B.0020.0002.28B8] # BRAILLE PATTERN DOTS-4568
+28B9 ; [*0D5C.0020.0002.28B9] # BRAILLE PATTERN DOTS-14568
+28BA ; [*0D5D.0020.0002.28BA] # BRAILLE PATTERN DOTS-24568
+28BB ; [*0D5E.0020.0002.28BB] # BRAILLE PATTERN DOTS-124568
+28BC ; [*0D5F.0020.0002.28BC] # BRAILLE PATTERN DOTS-34568
+28BD ; [*0D60.0020.0002.28BD] # BRAILLE PATTERN DOTS-134568
+28BE ; [*0D61.0020.0002.28BE] # BRAILLE PATTERN DOTS-234568
+28BF ; [*0D62.0020.0002.28BF] # BRAILLE PATTERN DOTS-1234568
+28C0 ; [*0D63.0020.0002.28C0] # BRAILLE PATTERN DOTS-78
+28C1 ; [*0D64.0020.0002.28C1] # BRAILLE PATTERN DOTS-178
+28C2 ; [*0D65.0020.0002.28C2] # BRAILLE PATTERN DOTS-278
+28C3 ; [*0D66.0020.0002.28C3] # BRAILLE PATTERN DOTS-1278
+28C4 ; [*0D67.0020.0002.28C4] # BRAILLE PATTERN DOTS-378
+28C5 ; [*0D68.0020.0002.28C5] # BRAILLE PATTERN DOTS-1378
+28C6 ; [*0D69.0020.0002.28C6] # BRAILLE PATTERN DOTS-2378
+28C7 ; [*0D6A.0020.0002.28C7] # BRAILLE PATTERN DOTS-12378
+28C8 ; [*0D6B.0020.0002.28C8] # BRAILLE PATTERN DOTS-478
+28C9 ; [*0D6C.0020.0002.28C9] # BRAILLE PATTERN DOTS-1478
+28CA ; [*0D6D.0020.0002.28CA] # BRAILLE PATTERN DOTS-2478
+28CB ; [*0D6E.0020.0002.28CB] # BRAILLE PATTERN DOTS-12478
+28CC ; [*0D6F.0020.0002.28CC] # BRAILLE PATTERN DOTS-3478
+28CD ; [*0D70.0020.0002.28CD] # BRAILLE PATTERN DOTS-13478
+28CE ; [*0D71.0020.0002.28CE] # BRAILLE PATTERN DOTS-23478
+28CF ; [*0D72.0020.0002.28CF] # BRAILLE PATTERN DOTS-123478
+28D0 ; [*0D73.0020.0002.28D0] # BRAILLE PATTERN DOTS-578
+28D1 ; [*0D74.0020.0002.28D1] # BRAILLE PATTERN DOTS-1578
+28D2 ; [*0D75.0020.0002.28D2] # BRAILLE PATTERN DOTS-2578
+28D3 ; [*0D76.0020.0002.28D3] # BRAILLE PATTERN DOTS-12578
+28D4 ; [*0D77.0020.0002.28D4] # BRAILLE PATTERN DOTS-3578
+28D5 ; [*0D78.0020.0002.28D5] # BRAILLE PATTERN DOTS-13578
+28D6 ; [*0D79.0020.0002.28D6] # BRAILLE PATTERN DOTS-23578
+28D7 ; [*0D7A.0020.0002.28D7] # BRAILLE PATTERN DOTS-123578
+28D8 ; [*0D7B.0020.0002.28D8] # BRAILLE PATTERN DOTS-4578
+28D9 ; [*0D7C.0020.0002.28D9] # BRAILLE PATTERN DOTS-14578
+28DA ; [*0D7D.0020.0002.28DA] # BRAILLE PATTERN DOTS-24578
+28DB ; [*0D7E.0020.0002.28DB] # BRAILLE PATTERN DOTS-124578
+28DC ; [*0D7F.0020.0002.28DC] # BRAILLE PATTERN DOTS-34578
+28DD ; [*0D80.0020.0002.28DD] # BRAILLE PATTERN DOTS-134578
+28DE ; [*0D81.0020.0002.28DE] # BRAILLE PATTERN DOTS-234578
+28DF ; [*0D82.0020.0002.28DF] # BRAILLE PATTERN DOTS-1234578
+28E0 ; [*0D83.0020.0002.28E0] # BRAILLE PATTERN DOTS-678
+28E1 ; [*0D84.0020.0002.28E1] # BRAILLE PATTERN DOTS-1678
+28E2 ; [*0D85.0020.0002.28E2] # BRAILLE PATTERN DOTS-2678
+28E3 ; [*0D86.0020.0002.28E3] # BRAILLE PATTERN DOTS-12678
+28E4 ; [*0D87.0020.0002.28E4] # BRAILLE PATTERN DOTS-3678
+28E5 ; [*0D88.0020.0002.28E5] # BRAILLE PATTERN DOTS-13678
+28E6 ; [*0D89.0020.0002.28E6] # BRAILLE PATTERN DOTS-23678
+28E7 ; [*0D8A.0020.0002.28E7] # BRAILLE PATTERN DOTS-123678
+28E8 ; [*0D8B.0020.0002.28E8] # BRAILLE PATTERN DOTS-4678
+28E9 ; [*0D8C.0020.0002.28E9] # BRAILLE PATTERN DOTS-14678
+28EA ; [*0D8D.0020.0002.28EA] # BRAILLE PATTERN DOTS-24678
+28EB ; [*0D8E.0020.0002.28EB] # BRAILLE PATTERN DOTS-124678
+28EC ; [*0D8F.0020.0002.28EC] # BRAILLE PATTERN DOTS-34678
+28ED ; [*0D90.0020.0002.28ED] # BRAILLE PATTERN DOTS-134678
+28EE ; [*0D91.0020.0002.28EE] # BRAILLE PATTERN DOTS-234678
+28EF ; [*0D92.0020.0002.28EF] # BRAILLE PATTERN DOTS-1234678
+28F0 ; [*0D93.0020.0002.28F0] # BRAILLE PATTERN DOTS-5678
+28F1 ; [*0D94.0020.0002.28F1] # BRAILLE PATTERN DOTS-15678
+28F2 ; [*0D95.0020.0002.28F2] # BRAILLE PATTERN DOTS-25678
+28F3 ; [*0D96.0020.0002.28F3] # BRAILLE PATTERN DOTS-125678
+28F4 ; [*0D97.0020.0002.28F4] # BRAILLE PATTERN DOTS-35678
+28F5 ; [*0D98.0020.0002.28F5] # BRAILLE PATTERN DOTS-135678
+28F6 ; [*0D99.0020.0002.28F6] # BRAILLE PATTERN DOTS-235678
+28F7 ; [*0D9A.0020.0002.28F7] # BRAILLE PATTERN DOTS-1235678
+28F8 ; [*0D9B.0020.0002.28F8] # BRAILLE PATTERN DOTS-45678
+28F9 ; [*0D9C.0020.0002.28F9] # BRAILLE PATTERN DOTS-145678
+28FA ; [*0D9D.0020.0002.28FA] # BRAILLE PATTERN DOTS-245678
+28FB ; [*0D9E.0020.0002.28FB] # BRAILLE PATTERN DOTS-1245678
+28FC ; [*0D9F.0020.0002.28FC] # BRAILLE PATTERN DOTS-345678
+28FD ; [*0DA0.0020.0002.28FD] # BRAILLE PATTERN DOTS-1345678
+28FE ; [*0DA1.0020.0002.28FE] # BRAILLE PATTERN DOTS-2345678
+28FF ; [*0DA2.0020.0002.28FF] # BRAILLE PATTERN DOTS-12345678
+2900 ; [*0A67.0020.0002.2900] # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+2901 ; [*0A68.0020.0002.2901] # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+2902 ; [*0A69.0020.0002.2902] # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+2903 ; [*0A6A.0020.0002.2903] # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+2904 ; [*0A6B.0020.0002.2904] # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
+2905 ; [*0A6C.0020.0002.2905] # RIGHTWARDS TWO-HEADED ARROW FROM BAR
+2906 ; [*0A6D.0020.0002.2906] # LEFTWARDS DOUBLE ARROW FROM BAR
+2907 ; [*0A6E.0020.0002.2907] # RIGHTWARDS DOUBLE ARROW FROM BAR
+2908 ; [*0A6F.0020.0002.2908] # DOWNWARDS ARROW WITH HORIZONTAL STROKE
+2909 ; [*0A70.0020.0002.2909] # UPWARDS ARROW WITH HORIZONTAL STROKE
+290A ; [*0A71.0020.0002.290A] # UPWARDS TRIPLE ARROW
+290B ; [*0A72.0020.0002.290B] # DOWNWARDS TRIPLE ARROW
+290C ; [*0A73.0020.0002.290C] # LEFTWARDS DOUBLE DASH ARROW
+290D ; [*0A74.0020.0002.290D] # RIGHTWARDS DOUBLE DASH ARROW
+290E ; [*0A75.0020.0002.290E] # LEFTWARDS TRIPLE DASH ARROW
+290F ; [*0A76.0020.0002.290F] # RIGHTWARDS TRIPLE DASH ARROW
+2910 ; [*0A77.0020.0002.2910] # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
+2911 ; [*0A78.0020.0002.2911] # RIGHTWARDS ARROW WITH DOTTED STEM
+2912 ; [*0A79.0020.0002.2912] # UPWARDS ARROW TO BAR
+2913 ; [*0A7A.0020.0002.2913] # DOWNWARDS ARROW TO BAR
+2914 ; [*0A7B.0020.0002.2914] # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
+2915 ; [*0A7C.0020.0002.2915] # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2916 ; [*0A7D.0020.0002.2916] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL
+2917 ; [*0A7E.0020.0002.2917] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
+2918 ; [*0A7F.0020.0002.2918] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2919 ; [*0A80.0020.0002.2919] # LEFTWARDS ARROW-TAIL
+291A ; [*0A81.0020.0002.291A] # RIGHTWARDS ARROW-TAIL
+291B ; [*0A82.0020.0002.291B] # LEFTWARDS DOUBLE ARROW-TAIL
+291C ; [*0A83.0020.0002.291C] # RIGHTWARDS DOUBLE ARROW-TAIL
+291D ; [*0A84.0020.0002.291D] # LEFTWARDS ARROW TO BLACK DIAMOND
+291E ; [*0A85.0020.0002.291E] # RIGHTWARDS ARROW TO BLACK DIAMOND
+291F ; [*0A86.0020.0002.291F] # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
+2920 ; [*0A87.0020.0002.2920] # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
+2921 ; [*0A88.0020.0002.2921] # NORTH WEST AND SOUTH EAST ARROW
+2922 ; [*0A89.0020.0002.2922] # NORTH EAST AND SOUTH WEST ARROW
+2923 ; [*0A8A.0020.0002.2923] # NORTH WEST ARROW WITH HOOK
+2924 ; [*0A8B.0020.0002.2924] # NORTH EAST ARROW WITH HOOK
+2925 ; [*0A8C.0020.0002.2925] # SOUTH EAST ARROW WITH HOOK
+2926 ; [*0A8D.0020.0002.2926] # SOUTH WEST ARROW WITH HOOK
+2927 ; [*0A8E.0020.0002.2927] # NORTH WEST ARROW AND NORTH EAST ARROW
+2928 ; [*0A8F.0020.0002.2928] # NORTH EAST ARROW AND SOUTH EAST ARROW
+2929 ; [*0A90.0020.0002.2929] # SOUTH EAST ARROW AND SOUTH WEST ARROW
+292A ; [*0A91.0020.0002.292A] # SOUTH WEST ARROW AND NORTH WEST ARROW
+292B ; [*0A92.0020.0002.292B] # RISING DIAGONAL CROSSING FALLING DIAGONAL
+292C ; [*0A93.0020.0002.292C] # FALLING DIAGONAL CROSSING RISING DIAGONAL
+292D ; [*0A94.0020.0002.292D] # SOUTH EAST ARROW CROSSING NORTH EAST ARROW
+292E ; [*0A95.0020.0002.292E] # NORTH EAST ARROW CROSSING SOUTH EAST ARROW
+292F ; [*0A96.0020.0002.292F] # FALLING DIAGONAL CROSSING NORTH EAST ARROW
+2930 ; [*0A97.0020.0002.2930] # RISING DIAGONAL CROSSING SOUTH EAST ARROW
+2931 ; [*0A98.0020.0002.2931] # NORTH EAST ARROW CROSSING NORTH WEST ARROW
+2932 ; [*0A99.0020.0002.2932] # NORTH WEST ARROW CROSSING NORTH EAST ARROW
+2933 ; [*0A9A.0020.0002.2933] # WAVE ARROW POINTING DIRECTLY RIGHT
+2934 ; [*0A9B.0020.0002.2934] # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
+2935 ; [*0A9C.0020.0002.2935] # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
+2936 ; [*0A9D.0020.0002.2936] # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
+2937 ; [*0A9E.0020.0002.2937] # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
+2938 ; [*0A9F.0020.0002.2938] # RIGHT-SIDE ARC CLOCKWISE ARROW
+2939 ; [*0AA0.0020.0002.2939] # LEFT-SIDE ARC ANTICLOCKWISE ARROW
+293A ; [*0AA1.0020.0002.293A] # TOP ARC ANTICLOCKWISE ARROW
+293B ; [*0AA2.0020.0002.293B] # BOTTOM ARC ANTICLOCKWISE ARROW
+293C ; [*0AA3.0020.0002.293C] # TOP ARC CLOCKWISE ARROW WITH MINUS
+293D ; [*0AA4.0020.0002.293D] # TOP ARC ANTICLOCKWISE ARROW WITH PLUS
+293E ; [*0AA5.0020.0002.293E] # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW
+293F ; [*0AA6.0020.0002.293F] # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW
+2940 ; [*0AA7.0020.0002.2940] # ANTICLOCKWISE CLOSED CIRCLE ARROW
+2941 ; [*0AA8.0020.0002.2941] # CLOCKWISE CLOSED CIRCLE ARROW
+2942 ; [*0AA9.0020.0002.2942] # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
+2943 ; [*0AAA.0020.0002.2943] # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW
+2944 ; [*0AAB.0020.0002.2944] # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
+2945 ; [*0AAC.0020.0002.2945] # RIGHTWARDS ARROW WITH PLUS BELOW
+2946 ; [*0AAD.0020.0002.2946] # LEFTWARDS ARROW WITH PLUS BELOW
+2947 ; [*0AAE.0020.0002.2947] # RIGHTWARDS ARROW THROUGH X
+2948 ; [*0AAF.0020.0002.2948] # LEFT RIGHT ARROW THROUGH SMALL CIRCLE
+2949 ; [*0AB0.0020.0002.2949] # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
+294A ; [*0AB1.0020.0002.294A] # LEFT BARB UP RIGHT BARB DOWN HARPOON
+294B ; [*0AB2.0020.0002.294B] # LEFT BARB DOWN RIGHT BARB UP HARPOON
+294C ; [*0AB3.0020.0002.294C] # UP BARB RIGHT DOWN BARB LEFT HARPOON
+294D ; [*0AB4.0020.0002.294D] # UP BARB LEFT DOWN BARB RIGHT HARPOON
+294E ; [*0AB5.0020.0002.294E] # LEFT BARB UP RIGHT BARB UP HARPOON
+294F ; [*0AB6.0020.0002.294F] # UP BARB RIGHT DOWN BARB RIGHT HARPOON
+2950 ; [*0AB7.0020.0002.2950] # LEFT BARB DOWN RIGHT BARB DOWN HARPOON
+2951 ; [*0AB8.0020.0002.2951] # UP BARB LEFT DOWN BARB LEFT HARPOON
+2952 ; [*0AB9.0020.0002.2952] # LEFTWARDS HARPOON WITH BARB UP TO BAR
+2953 ; [*0ABA.0020.0002.2953] # RIGHTWARDS HARPOON WITH BARB UP TO BAR
+2954 ; [*0ABB.0020.0002.2954] # UPWARDS HARPOON WITH BARB RIGHT TO BAR
+2955 ; [*0ABC.0020.0002.2955] # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
+2956 ; [*0ABD.0020.0002.2956] # LEFTWARDS HARPOON WITH BARB DOWN TO BAR
+2957 ; [*0ABE.0020.0002.2957] # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
+2958 ; [*0ABF.0020.0002.2958] # UPWARDS HARPOON WITH BARB LEFT TO BAR
+2959 ; [*0AC0.0020.0002.2959] # DOWNWARDS HARPOON WITH BARB LEFT TO BAR
+295A ; [*0AC1.0020.0002.295A] # LEFTWARDS HARPOON WITH BARB UP FROM BAR
+295B ; [*0AC2.0020.0002.295B] # RIGHTWARDS HARPOON WITH BARB UP FROM BAR
+295C ; [*0AC3.0020.0002.295C] # UPWARDS HARPOON WITH BARB RIGHT FROM BAR
+295D ; [*0AC4.0020.0002.295D] # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
+295E ; [*0AC5.0020.0002.295E] # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
+295F ; [*0AC6.0020.0002.295F] # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
+2960 ; [*0AC7.0020.0002.2960] # UPWARDS HARPOON WITH BARB LEFT FROM BAR
+2961 ; [*0AC8.0020.0002.2961] # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
+2962 ; [*0AC9.0020.0002.2962] # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+2963 ; [*0ACA.0020.0002.2963] # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+2964 ; [*0ACB.0020.0002.2964] # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+2965 ; [*0ACC.0020.0002.2965] # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+2966 ; [*0ACD.0020.0002.2966] # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
+2967 ; [*0ACE.0020.0002.2967] # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+2968 ; [*0ACF.0020.0002.2968] # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
+2969 ; [*0AD0.0020.0002.2969] # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+296A ; [*0AD1.0020.0002.296A] # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+296B ; [*0AD2.0020.0002.296B] # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+296C ; [*0AD3.0020.0002.296C] # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+296D ; [*0AD4.0020.0002.296D] # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+296E ; [*0AD5.0020.0002.296E] # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+296F ; [*0AD6.0020.0002.296F] # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+2970 ; [*0AD7.0020.0002.2970] # RIGHT DOUBLE ARROW WITH ROUNDED HEAD
+2971 ; [*0AD8.0020.0002.2971] # EQUALS SIGN ABOVE RIGHTWARDS ARROW
+2972 ; [*0AD9.0020.0002.2972] # TILDE OPERATOR ABOVE RIGHTWARDS ARROW
+2973 ; [*0ADA.0020.0002.2973] # LEFTWARDS ARROW ABOVE TILDE OPERATOR
+2974 ; [*0ADB.0020.0002.2974] # RIGHTWARDS ARROW ABOVE TILDE OPERATOR
+2975 ; [*0ADC.0020.0002.2975] # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
+2976 ; [*0ADD.0020.0002.2976] # LESS-THAN ABOVE LEFTWARDS ARROW
+2977 ; [*0ADE.0020.0002.2977] # LEFTWARDS ARROW THROUGH LESS-THAN
+2978 ; [*0ADF.0020.0002.2978] # GREATER-THAN ABOVE RIGHTWARDS ARROW
+2979 ; [*0AE0.0020.0002.2979] # SUBSET ABOVE RIGHTWARDS ARROW
+297A ; [*0AE1.0020.0002.297A] # LEFTWARDS ARROW THROUGH SUBSET
+297B ; [*0AE2.0020.0002.297B] # SUPERSET ABOVE LEFTWARDS ARROW
+297C ; [*0AE3.0020.0002.297C] # LEFT FISH TAIL
+297D ; [*0AE4.0020.0002.297D] # RIGHT FISH TAIL
+297E ; [*0AE5.0020.0002.297E] # UP FISH TAIL
+297F ; [*0AE6.0020.0002.297F] # DOWN FISH TAIL
+2980 ; [*0AE7.0020.0002.2980] # TRIPLE VERTICAL BAR DELIMITER
+2981 ; [*0AE8.0020.0002.2981] # Z NOTATION SPOT
+2982 ; [*0AE9.0020.0002.2982] # Z NOTATION TYPE COLON
2983 ; [*030B.0020.0002.2983] # LEFT WHITE CURLY BRACKET
2984 ; [*030C.0020.0002.2984] # RIGHT WHITE CURLY BRACKET
2985 ; [*030D.0020.0002.2985] # LEFT WHITE PARENTHESIS
@@ -3012,463 +3012,463 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
2996 ; [*031E.0020.0002.2996] # DOUBLE RIGHT ARC LESS-THAN BRACKET
2997 ; [*031F.0020.0002.2997] # LEFT BLACK TORTOISE SHELL BRACKET
2998 ; [*0320.0020.0002.2998] # RIGHT BLACK TORTOISE SHELL BRACKET
-2999 ; [*0AD0.0020.0002.2999] # DOTTED FENCE
-299A ; [*0AD1.0020.0002.299A] # VERTICAL ZIGZAG LINE
-299B ; [*0AD2.0020.0002.299B] # MEASURED ANGLE OPENING LEFT
-299C ; [*0AD3.0020.0002.299C] # RIGHT ANGLE VARIANT WITH SQUARE
-299D ; [*0AD4.0020.0002.299D] # MEASURED RIGHT ANGLE WITH DOT
-299E ; [*0AD5.0020.0002.299E] # ANGLE WITH S INSIDE
-299F ; [*0AD6.0020.0002.299F] # ACUTE ANGLE
-29A0 ; [*0AD7.0020.0002.29A0] # SPHERICAL ANGLE OPENING LEFT
-29A1 ; [*0AD8.0020.0002.29A1] # SPHERICAL ANGLE OPENING UP
-29A2 ; [*0AD9.0020.0002.29A2] # TURNED ANGLE
-29A3 ; [*0ADA.0020.0002.29A3] # REVERSED ANGLE
-29A4 ; [*0ADB.0020.0002.29A4] # ANGLE WITH UNDERBAR
-29A5 ; [*0ADC.0020.0002.29A5] # REVERSED ANGLE WITH UNDERBAR
-29A6 ; [*0ADD.0020.0002.29A6] # OBLIQUE ANGLE OPENING UP
-29A7 ; [*0ADE.0020.0002.29A7] # OBLIQUE ANGLE OPENING DOWN
-29A8 ; [*0ADF.0020.0002.29A8] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
-29A9 ; [*0AE0.0020.0002.29A9] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
-29AA ; [*0AE1.0020.0002.29AA] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
-29AB ; [*0AE2.0020.0002.29AB] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
-29AC ; [*0AE3.0020.0002.29AC] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
-29AD ; [*0AE4.0020.0002.29AD] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
-29AE ; [*0AE5.0020.0002.29AE] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
-29AF ; [*0AE6.0020.0002.29AF] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
-29B0 ; [*0AE7.0020.0002.29B0] # REVERSED EMPTY SET
-29B1 ; [*0AE8.0020.0002.29B1] # EMPTY SET WITH OVERBAR
-29B2 ; [*0AE9.0020.0002.29B2] # EMPTY SET WITH SMALL CIRCLE ABOVE
-29B3 ; [*0AEA.0020.0002.29B3] # EMPTY SET WITH RIGHT ARROW ABOVE
-29B4 ; [*0AEB.0020.0002.29B4] # EMPTY SET WITH LEFT ARROW ABOVE
-29B5 ; [*0AEC.0020.0002.29B5] # CIRCLE WITH HORIZONTAL BAR
-29B6 ; [*0AED.0020.0002.29B6] # CIRCLED VERTICAL BAR
-29B7 ; [*0AEE.0020.0002.29B7] # CIRCLED PARALLEL
-29B8 ; [*0AEF.0020.0002.29B8] # CIRCLED REVERSE SOLIDUS
-29B9 ; [*0AF0.0020.0002.29B9] # CIRCLED PERPENDICULAR
-29BA ; [*0AF1.0020.0002.29BA] # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR
-29BB ; [*0AF2.0020.0002.29BB] # CIRCLE WITH SUPERIMPOSED X
-29BC ; [*0AF3.0020.0002.29BC] # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
-29BD ; [*0AF4.0020.0002.29BD] # UP ARROW THROUGH CIRCLE
-29BE ; [*0AF5.0020.0002.29BE] # CIRCLED WHITE BULLET
-29BF ; [*0AF6.0020.0002.29BF] # CIRCLED BULLET
-29C0 ; [*0AF7.0020.0002.29C0] # CIRCLED LESS-THAN
-29C1 ; [*0AF8.0020.0002.29C1] # CIRCLED GREATER-THAN
-29C2 ; [*0AF9.0020.0002.29C2] # CIRCLE WITH SMALL CIRCLE TO THE RIGHT
-29C3 ; [*0AFA.0020.0002.29C3] # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
-29C4 ; [*0AFB.0020.0002.29C4] # SQUARED RISING DIAGONAL SLASH
-29C5 ; [*0AFC.0020.0002.29C5] # SQUARED FALLING DIAGONAL SLASH
-29C6 ; [*0AFD.0020.0002.29C6] # SQUARED ASTERISK
-29C7 ; [*0AFE.0020.0002.29C7] # SQUARED SMALL CIRCLE
-29C8 ; [*0AFF.0020.0002.29C8] # SQUARED SQUARE
-29C9 ; [*0B00.0020.0002.29C9] # TWO JOINED SQUARES
-29CA ; [*0B01.0020.0002.29CA] # TRIANGLE WITH DOT ABOVE
-29CB ; [*0B02.0020.0002.29CB] # TRIANGLE WITH UNDERBAR
-29CC ; [*0B03.0020.0002.29CC] # S IN TRIANGLE
-29CD ; [*0B04.0020.0002.29CD] # TRIANGLE WITH SERIFS AT BOTTOM
-29CE ; [*0B05.0020.0002.29CE] # RIGHT TRIANGLE ABOVE LEFT TRIANGLE
-29CF ; [*0B06.0020.0002.29CF] # LEFT TRIANGLE BESIDE VERTICAL BAR
-29D0 ; [*0B07.0020.0002.29D0] # VERTICAL BAR BESIDE RIGHT TRIANGLE
-29D1 ; [*0B08.0020.0002.29D1] # BOWTIE WITH LEFT HALF BLACK
-29D2 ; [*0B09.0020.0002.29D2] # BOWTIE WITH RIGHT HALF BLACK
-29D3 ; [*0B0A.0020.0002.29D3] # BLACK BOWTIE
-29D4 ; [*0B0B.0020.0002.29D4] # TIMES WITH LEFT HALF BLACK
-29D5 ; [*0B0C.0020.0002.29D5] # TIMES WITH RIGHT HALF BLACK
-29D6 ; [*0B0D.0020.0002.29D6] # WHITE HOURGLASS
-29D7 ; [*0B0E.0020.0002.29D7] # BLACK HOURGLASS
+2999 ; [*0AEA.0020.0002.2999] # DOTTED FENCE
+299A ; [*0AEB.0020.0002.299A] # VERTICAL ZIGZAG LINE
+299B ; [*0AEC.0020.0002.299B] # MEASURED ANGLE OPENING LEFT
+299C ; [*0AED.0020.0002.299C] # RIGHT ANGLE VARIANT WITH SQUARE
+299D ; [*0AEE.0020.0002.299D] # MEASURED RIGHT ANGLE WITH DOT
+299E ; [*0AEF.0020.0002.299E] # ANGLE WITH S INSIDE
+299F ; [*0AF0.0020.0002.299F] # ACUTE ANGLE
+29A0 ; [*0AF1.0020.0002.29A0] # SPHERICAL ANGLE OPENING LEFT
+29A1 ; [*0AF2.0020.0002.29A1] # SPHERICAL ANGLE OPENING UP
+29A2 ; [*0AF3.0020.0002.29A2] # TURNED ANGLE
+29A3 ; [*0AF4.0020.0002.29A3] # REVERSED ANGLE
+29A4 ; [*0AF5.0020.0002.29A4] # ANGLE WITH UNDERBAR
+29A5 ; [*0AF6.0020.0002.29A5] # REVERSED ANGLE WITH UNDERBAR
+29A6 ; [*0AF7.0020.0002.29A6] # OBLIQUE ANGLE OPENING UP
+29A7 ; [*0AF8.0020.0002.29A7] # OBLIQUE ANGLE OPENING DOWN
+29A8 ; [*0AF9.0020.0002.29A8] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
+29A9 ; [*0AFA.0020.0002.29A9] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
+29AA ; [*0AFB.0020.0002.29AA] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
+29AB ; [*0AFC.0020.0002.29AB] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
+29AC ; [*0AFD.0020.0002.29AC] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
+29AD ; [*0AFE.0020.0002.29AD] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
+29AE ; [*0AFF.0020.0002.29AE] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
+29AF ; [*0B00.0020.0002.29AF] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
+29B0 ; [*0B01.0020.0002.29B0] # REVERSED EMPTY SET
+29B1 ; [*0B02.0020.0002.29B1] # EMPTY SET WITH OVERBAR
+29B2 ; [*0B03.0020.0002.29B2] # EMPTY SET WITH SMALL CIRCLE ABOVE
+29B3 ; [*0B04.0020.0002.29B3] # EMPTY SET WITH RIGHT ARROW ABOVE
+29B4 ; [*0B05.0020.0002.29B4] # EMPTY SET WITH LEFT ARROW ABOVE
+29B5 ; [*0B06.0020.0002.29B5] # CIRCLE WITH HORIZONTAL BAR
+29B6 ; [*0B07.0020.0002.29B6] # CIRCLED VERTICAL BAR
+29B7 ; [*0B08.0020.0002.29B7] # CIRCLED PARALLEL
+29B8 ; [*0B09.0020.0002.29B8] # CIRCLED REVERSE SOLIDUS
+29B9 ; [*0B0A.0020.0002.29B9] # CIRCLED PERPENDICULAR
+29BA ; [*0B0B.0020.0002.29BA] # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR
+29BB ; [*0B0C.0020.0002.29BB] # CIRCLE WITH SUPERIMPOSED X
+29BC ; [*0B0D.0020.0002.29BC] # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
+29BD ; [*0B0E.0020.0002.29BD] # UP ARROW THROUGH CIRCLE
+29BE ; [*0B0F.0020.0002.29BE] # CIRCLED WHITE BULLET
+29BF ; [*0B10.0020.0002.29BF] # CIRCLED BULLET
+29C0 ; [*0B11.0020.0002.29C0] # CIRCLED LESS-THAN
+29C1 ; [*0B12.0020.0002.29C1] # CIRCLED GREATER-THAN
+29C2 ; [*0B13.0020.0002.29C2] # CIRCLE WITH SMALL CIRCLE TO THE RIGHT
+29C3 ; [*0B14.0020.0002.29C3] # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
+29C4 ; [*0B15.0020.0002.29C4] # SQUARED RISING DIAGONAL SLASH
+29C5 ; [*0B16.0020.0002.29C5] # SQUARED FALLING DIAGONAL SLASH
+29C6 ; [*0B17.0020.0002.29C6] # SQUARED ASTERISK
+29C7 ; [*0B18.0020.0002.29C7] # SQUARED SMALL CIRCLE
+29C8 ; [*0B19.0020.0002.29C8] # SQUARED SQUARE
+29C9 ; [*0B1A.0020.0002.29C9] # TWO JOINED SQUARES
+29CA ; [*0B1B.0020.0002.29CA] # TRIANGLE WITH DOT ABOVE
+29CB ; [*0B1C.0020.0002.29CB] # TRIANGLE WITH UNDERBAR
+29CC ; [*0B1D.0020.0002.29CC] # S IN TRIANGLE
+29CD ; [*0B1E.0020.0002.29CD] # TRIANGLE WITH SERIFS AT BOTTOM
+29CE ; [*0B1F.0020.0002.29CE] # RIGHT TRIANGLE ABOVE LEFT TRIANGLE
+29CF ; [*0B20.0020.0002.29CF] # LEFT TRIANGLE BESIDE VERTICAL BAR
+29D0 ; [*0B21.0020.0002.29D0] # VERTICAL BAR BESIDE RIGHT TRIANGLE
+29D1 ; [*0B22.0020.0002.29D1] # BOWTIE WITH LEFT HALF BLACK
+29D2 ; [*0B23.0020.0002.29D2] # BOWTIE WITH RIGHT HALF BLACK
+29D3 ; [*0B24.0020.0002.29D3] # BLACK BOWTIE
+29D4 ; [*0B25.0020.0002.29D4] # TIMES WITH LEFT HALF BLACK
+29D5 ; [*0B26.0020.0002.29D5] # TIMES WITH RIGHT HALF BLACK
+29D6 ; [*0B27.0020.0002.29D6] # WHITE HOURGLASS
+29D7 ; [*0B28.0020.0002.29D7] # BLACK HOURGLASS
29D8 ; [*0364.0020.0002.29D8] # LEFT WIGGLY FENCE
29D9 ; [*0365.0020.0002.29D9] # RIGHT WIGGLY FENCE
29DA ; [*0366.0020.0002.29DA] # LEFT DOUBLE WIGGLY FENCE
29DB ; [*0367.0020.0002.29DB] # RIGHT DOUBLE WIGGLY FENCE
-29DC ; [*0B0F.0020.0002.29DC] # INCOMPLETE INFINITY
-29DD ; [*0B10.0020.0002.29DD] # TIE OVER INFINITY
-29DE ; [*0B11.0020.0002.29DE] # INFINITY NEGATED WITH VERTICAL BAR
-29DF ; [*0B12.0020.0002.29DF] # DOUBLE-ENDED MULTIMAP
-29E0 ; [*0B13.0020.0002.29E0] # SQUARE WITH CONTOURED OUTLINE
-29E1 ; [*0B14.0020.0002.29E1] # INCREASES AS
-29E2 ; [*0B15.0020.0002.29E2] # SHUFFLE PRODUCT
-29E3 ; [*0B16.0020.0002.29E3] # EQUALS SIGN AND SLANTED PARALLEL
-29E4 ; [*0B17.0020.0002.29E4] # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
-29E5 ; [*0B18.0020.0002.29E5] # IDENTICAL TO AND SLANTED PARALLEL
-29E6 ; [*0B19.0020.0002.29E6] # GLEICH STARK
-29E7 ; [*0B1A.0020.0002.29E7] # THERMODYNAMIC
-29E8 ; [*0B1B.0020.0002.29E8] # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
-29E9 ; [*0B1C.0020.0002.29E9] # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
-29EA ; [*0B1D.0020.0002.29EA] # BLACK DIAMOND WITH DOWN ARROW
-29EB ; [*0B1E.0020.0002.29EB] # BLACK LOZENGE
-29EC ; [*0B1F.0020.0002.29EC] # WHITE CIRCLE WITH DOWN ARROW
-29ED ; [*0B20.0020.0002.29ED] # BLACK CIRCLE WITH DOWN ARROW
-29EE ; [*0B21.0020.0002.29EE] # ERROR-BARRED WHITE SQUARE
-29EF ; [*0B22.0020.0002.29EF] # ERROR-BARRED BLACK SQUARE
-29F0 ; [*0B23.0020.0002.29F0] # ERROR-BARRED WHITE DIAMOND
-29F1 ; [*0B24.0020.0002.29F1] # ERROR-BARRED BLACK DIAMOND
-29F2 ; [*0B25.0020.0002.29F2] # ERROR-BARRED WHITE CIRCLE
-29F3 ; [*0B26.0020.0002.29F3] # ERROR-BARRED BLACK CIRCLE
-29F4 ; [*0B27.0020.0002.29F4] # RULE-DELAYED
-29F5 ; [*0B28.0020.0002.29F5] # REVERSE SOLIDUS OPERATOR
-29F6 ; [*0B29.0020.0002.29F6] # SOLIDUS WITH OVERBAR
-29F7 ; [*0B2A.0020.0002.29F7] # REVERSE SOLIDUS WITH HORIZONTAL STROKE
-29F8 ; [*0B2B.0020.0002.29F8] # BIG SOLIDUS
-29F9 ; [*0B2C.0020.0002.29F9] # BIG REVERSE SOLIDUS
-29FA ; [*0B2D.0020.0002.29FA] # DOUBLE PLUS
-29FB ; [*0B2E.0020.0002.29FB] # TRIPLE PLUS
+29DC ; [*0B29.0020.0002.29DC] # INCOMPLETE INFINITY
+29DD ; [*0B2A.0020.0002.29DD] # TIE OVER INFINITY
+29DE ; [*0B2B.0020.0002.29DE] # INFINITY NEGATED WITH VERTICAL BAR
+29DF ; [*0B2C.0020.0002.29DF] # DOUBLE-ENDED MULTIMAP
+29E0 ; [*0B2D.0020.0002.29E0] # SQUARE WITH CONTOURED OUTLINE
+29E1 ; [*0B2E.0020.0002.29E1] # INCREASES AS
+29E2 ; [*0B2F.0020.0002.29E2] # SHUFFLE PRODUCT
+29E3 ; [*0B30.0020.0002.29E3] # EQUALS SIGN AND SLANTED PARALLEL
+29E4 ; [*0B31.0020.0002.29E4] # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
+29E5 ; [*0B32.0020.0002.29E5] # IDENTICAL TO AND SLANTED PARALLEL
+29E6 ; [*0B33.0020.0002.29E6] # GLEICH STARK
+29E7 ; [*0B34.0020.0002.29E7] # THERMODYNAMIC
+29E8 ; [*0B35.0020.0002.29E8] # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
+29E9 ; [*0B36.0020.0002.29E9] # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
+29EA ; [*0B37.0020.0002.29EA] # BLACK DIAMOND WITH DOWN ARROW
+29EB ; [*0B38.0020.0002.29EB] # BLACK LOZENGE
+29EC ; [*0B39.0020.0002.29EC] # WHITE CIRCLE WITH DOWN ARROW
+29ED ; [*0B3A.0020.0002.29ED] # BLACK CIRCLE WITH DOWN ARROW
+29EE ; [*0B3B.0020.0002.29EE] # ERROR-BARRED WHITE SQUARE
+29EF ; [*0B3C.0020.0002.29EF] # ERROR-BARRED BLACK SQUARE
+29F0 ; [*0B3D.0020.0002.29F0] # ERROR-BARRED WHITE DIAMOND
+29F1 ; [*0B3E.0020.0002.29F1] # ERROR-BARRED BLACK DIAMOND
+29F2 ; [*0B3F.0020.0002.29F2] # ERROR-BARRED WHITE CIRCLE
+29F3 ; [*0B40.0020.0002.29F3] # ERROR-BARRED BLACK CIRCLE
+29F4 ; [*0B41.0020.0002.29F4] # RULE-DELAYED
+29F5 ; [*0B42.0020.0002.29F5] # REVERSE SOLIDUS OPERATOR
+29F6 ; [*0B43.0020.0002.29F6] # SOLIDUS WITH OVERBAR
+29F7 ; [*0B44.0020.0002.29F7] # REVERSE SOLIDUS WITH HORIZONTAL STROKE
+29F8 ; [*0B45.0020.0002.29F8] # BIG SOLIDUS
+29F9 ; [*0B46.0020.0002.29F9] # BIG REVERSE SOLIDUS
+29FA ; [*0B47.0020.0002.29FA] # DOUBLE PLUS
+29FB ; [*0B48.0020.0002.29FB] # TRIPLE PLUS
29FC ; [*0309.0020.0002.29FC] # LEFT-POINTING CURVED ANGLE BRACKET
29FD ; [*030A.0020.0002.29FD] # RIGHT-POINTING CURVED ANGLE BRACKET
-29FE ; [*0B2F.0020.0002.29FE] # TINY
-29FF ; [*0B30.0020.0002.29FF] # MINY
-2A00 ; [*0B31.0020.0002.2A00] # N-ARY CIRCLED DOT OPERATOR
-2A01 ; [*0B32.0020.0002.2A01] # N-ARY CIRCLED PLUS OPERATOR
-2A02 ; [*0B33.0020.0002.2A02] # N-ARY CIRCLED TIMES OPERATOR
-2A03 ; [*0B34.0020.0002.2A03] # N-ARY UNION OPERATOR WITH DOT
-2A04 ; [*0B35.0020.0002.2A04] # N-ARY UNION OPERATOR WITH PLUS
-2A05 ; [*0B36.0020.0002.2A05] # N-ARY SQUARE INTERSECTION OPERATOR
-2A06 ; [*0B37.0020.0002.2A06] # N-ARY SQUARE UNION OPERATOR
-2A07 ; [*0B38.0020.0002.2A07] # TWO LOGICAL AND OPERATOR
-2A08 ; [*0B39.0020.0002.2A08] # TWO LOGICAL OR OPERATOR
-2A09 ; [*0B3A.0020.0002.2A09] # N-ARY TIMES OPERATOR
-2A0A ; [*0B3B.0020.0002.2A0A] # MODULO TWO SUM
-2A0B ; [*0B3C.0020.0002.2A0B] # SUMMATION WITH INTEGRAL
-2A0C ; [*05C2.0020.0004.2A0C][*05C2.0020.0004.2A0C][*05C2.0020.001F.2A0C][*05C2.0020.001F.2A0C] # QUADRUPLE INTEGRAL OPERATOR
-2A0D ; [*0B3D.0020.0002.2A0D] # FINITE PART INTEGRAL
-2A0E ; [*0B3E.0020.0002.2A0E] # INTEGRAL WITH DOUBLE STROKE
-2A0F ; [*0B3F.0020.0002.2A0F] # INTEGRAL AVERAGE WITH SLASH
-2A10 ; [*0B40.0020.0002.2A10] # CIRCULATION FUNCTION
-2A11 ; [*0B41.0020.0002.2A11] # ANTICLOCKWISE INTEGRATION
-2A12 ; [*0B42.0020.0002.2A12] # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
-2A13 ; [*0B43.0020.0002.2A13] # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
-2A14 ; [*0B44.0020.0002.2A14] # LINE INTEGRATION NOT INCLUDING THE POLE
-2A15 ; [*0B45.0020.0002.2A15] # INTEGRAL AROUND A POINT OPERATOR
-2A16 ; [*0B46.0020.0002.2A16] # QUATERNION INTEGRAL OPERATOR
-2A17 ; [*0B47.0020.0002.2A17] # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
-2A18 ; [*0B48.0020.0002.2A18] # INTEGRAL WITH TIMES SIGN
-2A19 ; [*0B49.0020.0002.2A19] # INTEGRAL WITH INTERSECTION
-2A1A ; [*0B4A.0020.0002.2A1A] # INTEGRAL WITH UNION
-2A1B ; [*0B4B.0020.0002.2A1B] # INTEGRAL WITH OVERBAR
-2A1C ; [*0B4C.0020.0002.2A1C] # INTEGRAL WITH UNDERBAR
-2A1D ; [*0B4D.0020.0002.2A1D] # JOIN
-2A1E ; [*0B4E.0020.0002.2A1E] # LARGE LEFT TRIANGLE OPERATOR
-2A1F ; [*0B4F.0020.0002.2A1F] # Z NOTATION SCHEMA COMPOSITION
-2A20 ; [*0B50.0020.0002.2A20] # Z NOTATION SCHEMA PIPING
-2A21 ; [*0B51.0020.0002.2A21] # Z NOTATION SCHEMA PROJECTION
-2A22 ; [*0B52.0020.0002.2A22] # PLUS SIGN WITH SMALL CIRCLE ABOVE
-2A23 ; [*0B53.0020.0002.2A23] # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
-2A24 ; [*0B54.0020.0002.2A24] # PLUS SIGN WITH TILDE ABOVE
-2A25 ; [*0B55.0020.0002.2A25] # PLUS SIGN WITH DOT BELOW
-2A26 ; [*0B56.0020.0002.2A26] # PLUS SIGN WITH TILDE BELOW
-2A27 ; [*0B57.0020.0002.2A27] # PLUS SIGN WITH SUBSCRIPT TWO
-2A28 ; [*0B58.0020.0002.2A28] # PLUS SIGN WITH BLACK TRIANGLE
-2A29 ; [*0B59.0020.0002.2A29] # MINUS SIGN WITH COMMA ABOVE
-2A2A ; [*0B5A.0020.0002.2A2A] # MINUS SIGN WITH DOT BELOW
-2A2B ; [*0B5B.0020.0002.2A2B] # MINUS SIGN WITH FALLING DOTS
-2A2C ; [*0B5C.0020.0002.2A2C] # MINUS SIGN WITH RISING DOTS
-2A2D ; [*0B5D.0020.0002.2A2D] # PLUS SIGN IN LEFT HALF CIRCLE
-2A2E ; [*0B5E.0020.0002.2A2E] # PLUS SIGN IN RIGHT HALF CIRCLE
-2A2F ; [*0B5F.0020.0002.2A2F] # VECTOR OR CROSS PRODUCT
-2A30 ; [*0B60.0020.0002.2A30] # MULTIPLICATION SIGN WITH DOT ABOVE
-2A31 ; [*0B61.0020.0002.2A31] # MULTIPLICATION SIGN WITH UNDERBAR
-2A32 ; [*0B62.0020.0002.2A32] # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
-2A33 ; [*0B63.0020.0002.2A33] # SMASH PRODUCT
-2A34 ; [*0B64.0020.0002.2A34] # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
-2A35 ; [*0B65.0020.0002.2A35] # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
-2A36 ; [*0B66.0020.0002.2A36] # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
-2A37 ; [*0B67.0020.0002.2A37] # MULTIPLICATION SIGN IN DOUBLE CIRCLE
-2A38 ; [*0B68.0020.0002.2A38] # CIRCLED DIVISION SIGN
-2A39 ; [*0B69.0020.0002.2A39] # PLUS SIGN IN TRIANGLE
-2A3A ; [*0B6A.0020.0002.2A3A] # MINUS SIGN IN TRIANGLE
-2A3B ; [*0B6B.0020.0002.2A3B] # MULTIPLICATION SIGN IN TRIANGLE
-2A3C ; [*0B6C.0020.0002.2A3C] # INTERIOR PRODUCT
-2A3D ; [*0B6D.0020.0002.2A3D] # RIGHTHAND INTERIOR PRODUCT
-2A3E ; [*0B6E.0020.0002.2A3E] # Z NOTATION RELATIONAL COMPOSITION
-2A3F ; [*0B6F.0020.0002.2A3F] # AMALGAMATION OR COPRODUCT
-2A40 ; [*0B70.0020.0002.2A40] # INTERSECTION WITH DOT
-2A41 ; [*0B71.0020.0002.2A41] # UNION WITH MINUS SIGN
-2A42 ; [*0B72.0020.0002.2A42] # UNION WITH OVERBAR
-2A43 ; [*0B73.0020.0002.2A43] # INTERSECTION WITH OVERBAR
-2A44 ; [*0B74.0020.0002.2A44] # INTERSECTION WITH LOGICAL AND
-2A45 ; [*0B75.0020.0002.2A45] # UNION WITH LOGICAL OR
-2A46 ; [*0B76.0020.0002.2A46] # UNION ABOVE INTERSECTION
-2A47 ; [*0B77.0020.0002.2A47] # INTERSECTION ABOVE UNION
-2A48 ; [*0B78.0020.0002.2A48] # UNION ABOVE BAR ABOVE INTERSECTION
-2A49 ; [*0B79.0020.0002.2A49] # INTERSECTION ABOVE BAR ABOVE UNION
-2A4A ; [*0B7A.0020.0002.2A4A] # UNION BESIDE AND JOINED WITH UNION
-2A4B ; [*0B7B.0020.0002.2A4B] # INTERSECTION BESIDE AND JOINED WITH INTERSECTION
-2A4C ; [*0B7C.0020.0002.2A4C] # CLOSED UNION WITH SERIFS
-2A4D ; [*0B7D.0020.0002.2A4D] # CLOSED INTERSECTION WITH SERIFS
-2A4E ; [*0B7E.0020.0002.2A4E] # DOUBLE SQUARE INTERSECTION
-2A4F ; [*0B7F.0020.0002.2A4F] # DOUBLE SQUARE UNION
-2A50 ; [*0B80.0020.0002.2A50] # CLOSED UNION WITH SERIFS AND SMASH PRODUCT
-2A51 ; [*0B81.0020.0002.2A51] # LOGICAL AND WITH DOT ABOVE
-2A52 ; [*0B82.0020.0002.2A52] # LOGICAL OR WITH DOT ABOVE
-2A53 ; [*0B83.0020.0002.2A53] # DOUBLE LOGICAL AND
-2A54 ; [*0B84.0020.0002.2A54] # DOUBLE LOGICAL OR
-2A55 ; [*0B85.0020.0002.2A55] # TWO INTERSECTING LOGICAL AND
-2A56 ; [*0B86.0020.0002.2A56] # TWO INTERSECTING LOGICAL OR
-2A57 ; [*0B87.0020.0002.2A57] # SLOPING LARGE OR
-2A58 ; [*0B88.0020.0002.2A58] # SLOPING LARGE AND
-2A59 ; [*0B89.0020.0002.2A59] # LOGICAL OR OVERLAPPING LOGICAL AND
-2A5A ; [*0B8A.0020.0002.2A5A] # LOGICAL AND WITH MIDDLE STEM
-2A5B ; [*0B8B.0020.0002.2A5B] # LOGICAL OR WITH MIDDLE STEM
-2A5C ; [*0B8C.0020.0002.2A5C] # LOGICAL AND WITH HORIZONTAL DASH
-2A5D ; [*0B8D.0020.0002.2A5D] # LOGICAL OR WITH HORIZONTAL DASH
-2A5E ; [*0B8E.0020.0002.2A5E] # LOGICAL AND WITH DOUBLE OVERBAR
-2A5F ; [*0B8F.0020.0002.2A5F] # LOGICAL AND WITH UNDERBAR
-2A60 ; [*0B90.0020.0002.2A60] # LOGICAL AND WITH DOUBLE UNDERBAR
-2A61 ; [*0B91.0020.0002.2A61] # SMALL VEE WITH UNDERBAR
-2A62 ; [*0B92.0020.0002.2A62] # LOGICAL OR WITH DOUBLE OVERBAR
-2A63 ; [*0B93.0020.0002.2A63] # LOGICAL OR WITH DOUBLE UNDERBAR
-2A64 ; [*0B94.0020.0002.2A64] # Z NOTATION DOMAIN ANTIRESTRICTION
-2A65 ; [*0B95.0020.0002.2A65] # Z NOTATION RANGE ANTIRESTRICTION
-2A66 ; [*0B96.0020.0002.2A66] # EQUALS SIGN WITH DOT BELOW
-2A67 ; [*0B97.0020.0002.2A67] # IDENTICAL WITH DOT ABOVE
-2A68 ; [*0B98.0020.0002.2A68] # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE
-2A69 ; [*0B99.0020.0002.2A69] # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE
-2A6A ; [*0B9A.0020.0002.2A6A] # TILDE OPERATOR WITH DOT ABOVE
-2A6B ; [*0B9B.0020.0002.2A6B] # TILDE OPERATOR WITH RISING DOTS
-2A6C ; [*0B9C.0020.0002.2A6C] # SIMILAR MINUS SIMILAR
-2A6D ; [*0B9D.0020.0002.2A6D] # CONGRUENT WITH DOT ABOVE
-2A6E ; [*0B9E.0020.0002.2A6E] # EQUALS WITH ASTERISK
-2A6F ; [*0B9F.0020.0002.2A6F] # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
-2A70 ; [*0BA0.0020.0002.2A70] # APPROXIMATELY EQUAL OR EQUAL TO
-2A71 ; [*0BA1.0020.0002.2A71] # EQUALS SIGN ABOVE PLUS SIGN
-2A72 ; [*0BA2.0020.0002.2A72] # PLUS SIGN ABOVE EQUALS SIGN
-2A73 ; [*0BA3.0020.0002.2A73] # EQUALS SIGN ABOVE TILDE OPERATOR
+29FE ; [*0B49.0020.0002.29FE] # TINY
+29FF ; [*0B4A.0020.0002.29FF] # MINY
+2A00 ; [*0B4B.0020.0002.2A00] # N-ARY CIRCLED DOT OPERATOR
+2A01 ; [*0B4C.0020.0002.2A01] # N-ARY CIRCLED PLUS OPERATOR
+2A02 ; [*0B4D.0020.0002.2A02] # N-ARY CIRCLED TIMES OPERATOR
+2A03 ; [*0B4E.0020.0002.2A03] # N-ARY UNION OPERATOR WITH DOT
+2A04 ; [*0B4F.0020.0002.2A04] # N-ARY UNION OPERATOR WITH PLUS
+2A05 ; [*0B50.0020.0002.2A05] # N-ARY SQUARE INTERSECTION OPERATOR
+2A06 ; [*0B51.0020.0002.2A06] # N-ARY SQUARE UNION OPERATOR
+2A07 ; [*0B52.0020.0002.2A07] # TWO LOGICAL AND OPERATOR
+2A08 ; [*0B53.0020.0002.2A08] # TWO LOGICAL OR OPERATOR
+2A09 ; [*0B54.0020.0002.2A09] # N-ARY TIMES OPERATOR
+2A0A ; [*0B55.0020.0002.2A0A] # MODULO TWO SUM
+2A0B ; [*0B56.0020.0002.2A0B] # SUMMATION WITH INTEGRAL
+2A0C ; [*05C2.0020.0004.2A0C][*05C2.0020.0004.2A0C][*05C2.0020.0004.2A0C][*05C2.0020.001F.2A0C] # QUADRUPLE INTEGRAL OPERATOR
+2A0D ; [*0B57.0020.0002.2A0D] # FINITE PART INTEGRAL
+2A0E ; [*0B58.0020.0002.2A0E] # INTEGRAL WITH DOUBLE STROKE
+2A0F ; [*0B59.0020.0002.2A0F] # INTEGRAL AVERAGE WITH SLASH
+2A10 ; [*0B5A.0020.0002.2A10] # CIRCULATION FUNCTION
+2A11 ; [*0B5B.0020.0002.2A11] # ANTICLOCKWISE INTEGRATION
+2A12 ; [*0B5C.0020.0002.2A12] # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
+2A13 ; [*0B5D.0020.0002.2A13] # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
+2A14 ; [*0B5E.0020.0002.2A14] # LINE INTEGRATION NOT INCLUDING THE POLE
+2A15 ; [*0B5F.0020.0002.2A15] # INTEGRAL AROUND A POINT OPERATOR
+2A16 ; [*0B60.0020.0002.2A16] # QUATERNION INTEGRAL OPERATOR
+2A17 ; [*0B61.0020.0002.2A17] # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
+2A18 ; [*0B62.0020.0002.2A18] # INTEGRAL WITH TIMES SIGN
+2A19 ; [*0B63.0020.0002.2A19] # INTEGRAL WITH INTERSECTION
+2A1A ; [*0B64.0020.0002.2A1A] # INTEGRAL WITH UNION
+2A1B ; [*0B65.0020.0002.2A1B] # INTEGRAL WITH OVERBAR
+2A1C ; [*0B66.0020.0002.2A1C] # INTEGRAL WITH UNDERBAR
+2A1D ; [*0B67.0020.0002.2A1D] # JOIN
+2A1E ; [*0B68.0020.0002.2A1E] # LARGE LEFT TRIANGLE OPERATOR
+2A1F ; [*0B69.0020.0002.2A1F] # Z NOTATION SCHEMA COMPOSITION
+2A20 ; [*0B6A.0020.0002.2A20] # Z NOTATION SCHEMA PIPING
+2A21 ; [*0B6B.0020.0002.2A21] # Z NOTATION SCHEMA PROJECTION
+2A22 ; [*0B6C.0020.0002.2A22] # PLUS SIGN WITH SMALL CIRCLE ABOVE
+2A23 ; [*0B6D.0020.0002.2A23] # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
+2A24 ; [*0B6E.0020.0002.2A24] # PLUS SIGN WITH TILDE ABOVE
+2A25 ; [*0B6F.0020.0002.2A25] # PLUS SIGN WITH DOT BELOW
+2A26 ; [*0B70.0020.0002.2A26] # PLUS SIGN WITH TILDE BELOW
+2A27 ; [*0B71.0020.0002.2A27] # PLUS SIGN WITH SUBSCRIPT TWO
+2A28 ; [*0B72.0020.0002.2A28] # PLUS SIGN WITH BLACK TRIANGLE
+2A29 ; [*0B73.0020.0002.2A29] # MINUS SIGN WITH COMMA ABOVE
+2A2A ; [*0B74.0020.0002.2A2A] # MINUS SIGN WITH DOT BELOW
+2A2B ; [*0B75.0020.0002.2A2B] # MINUS SIGN WITH FALLING DOTS
+2A2C ; [*0B76.0020.0002.2A2C] # MINUS SIGN WITH RISING DOTS
+2A2D ; [*0B77.0020.0002.2A2D] # PLUS SIGN IN LEFT HALF CIRCLE
+2A2E ; [*0B78.0020.0002.2A2E] # PLUS SIGN IN RIGHT HALF CIRCLE
+2A2F ; [*0B79.0020.0002.2A2F] # VECTOR OR CROSS PRODUCT
+2A30 ; [*0B7A.0020.0002.2A30] # MULTIPLICATION SIGN WITH DOT ABOVE
+2A31 ; [*0B7B.0020.0002.2A31] # MULTIPLICATION SIGN WITH UNDERBAR
+2A32 ; [*0B7C.0020.0002.2A32] # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
+2A33 ; [*0B7D.0020.0002.2A33] # SMASH PRODUCT
+2A34 ; [*0B7E.0020.0002.2A34] # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
+2A35 ; [*0B7F.0020.0002.2A35] # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
+2A36 ; [*0B80.0020.0002.2A36] # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
+2A37 ; [*0B81.0020.0002.2A37] # MULTIPLICATION SIGN IN DOUBLE CIRCLE
+2A38 ; [*0B82.0020.0002.2A38] # CIRCLED DIVISION SIGN
+2A39 ; [*0B83.0020.0002.2A39] # PLUS SIGN IN TRIANGLE
+2A3A ; [*0B84.0020.0002.2A3A] # MINUS SIGN IN TRIANGLE
+2A3B ; [*0B85.0020.0002.2A3B] # MULTIPLICATION SIGN IN TRIANGLE
+2A3C ; [*0B86.0020.0002.2A3C] # INTERIOR PRODUCT
+2A3D ; [*0B87.0020.0002.2A3D] # RIGHTHAND INTERIOR PRODUCT
+2A3E ; [*0B88.0020.0002.2A3E] # Z NOTATION RELATIONAL COMPOSITION
+2A3F ; [*0B89.0020.0002.2A3F] # AMALGAMATION OR COPRODUCT
+2A40 ; [*0B8A.0020.0002.2A40] # INTERSECTION WITH DOT
+2A41 ; [*0B8B.0020.0002.2A41] # UNION WITH MINUS SIGN
+2A42 ; [*0B8C.0020.0002.2A42] # UNION WITH OVERBAR
+2A43 ; [*0B8D.0020.0002.2A43] # INTERSECTION WITH OVERBAR
+2A44 ; [*0B8E.0020.0002.2A44] # INTERSECTION WITH LOGICAL AND
+2A45 ; [*0B8F.0020.0002.2A45] # UNION WITH LOGICAL OR
+2A46 ; [*0B90.0020.0002.2A46] # UNION ABOVE INTERSECTION
+2A47 ; [*0B91.0020.0002.2A47] # INTERSECTION ABOVE UNION
+2A48 ; [*0B92.0020.0002.2A48] # UNION ABOVE BAR ABOVE INTERSECTION
+2A49 ; [*0B93.0020.0002.2A49] # INTERSECTION ABOVE BAR ABOVE UNION
+2A4A ; [*0B94.0020.0002.2A4A] # UNION BESIDE AND JOINED WITH UNION
+2A4B ; [*0B95.0020.0002.2A4B] # INTERSECTION BESIDE AND JOINED WITH INTERSECTION
+2A4C ; [*0B96.0020.0002.2A4C] # CLOSED UNION WITH SERIFS
+2A4D ; [*0B97.0020.0002.2A4D] # CLOSED INTERSECTION WITH SERIFS
+2A4E ; [*0B98.0020.0002.2A4E] # DOUBLE SQUARE INTERSECTION
+2A4F ; [*0B99.0020.0002.2A4F] # DOUBLE SQUARE UNION
+2A50 ; [*0B9A.0020.0002.2A50] # CLOSED UNION WITH SERIFS AND SMASH PRODUCT
+2A51 ; [*0B9B.0020.0002.2A51] # LOGICAL AND WITH DOT ABOVE
+2A52 ; [*0B9C.0020.0002.2A52] # LOGICAL OR WITH DOT ABOVE
+2A53 ; [*0B9D.0020.0002.2A53] # DOUBLE LOGICAL AND
+2A54 ; [*0B9E.0020.0002.2A54] # DOUBLE LOGICAL OR
+2A55 ; [*0B9F.0020.0002.2A55] # TWO INTERSECTING LOGICAL AND
+2A56 ; [*0BA0.0020.0002.2A56] # TWO INTERSECTING LOGICAL OR
+2A57 ; [*0BA1.0020.0002.2A57] # SLOPING LARGE OR
+2A58 ; [*0BA2.0020.0002.2A58] # SLOPING LARGE AND
+2A59 ; [*0BA3.0020.0002.2A59] # LOGICAL OR OVERLAPPING LOGICAL AND
+2A5A ; [*0BA4.0020.0002.2A5A] # LOGICAL AND WITH MIDDLE STEM
+2A5B ; [*0BA5.0020.0002.2A5B] # LOGICAL OR WITH MIDDLE STEM
+2A5C ; [*0BA6.0020.0002.2A5C] # LOGICAL AND WITH HORIZONTAL DASH
+2A5D ; [*0BA7.0020.0002.2A5D] # LOGICAL OR WITH HORIZONTAL DASH
+2A5E ; [*0BA8.0020.0002.2A5E] # LOGICAL AND WITH DOUBLE OVERBAR
+2A5F ; [*0BA9.0020.0002.2A5F] # LOGICAL AND WITH UNDERBAR
+2A60 ; [*0BAA.0020.0002.2A60] # LOGICAL AND WITH DOUBLE UNDERBAR
+2A61 ; [*0BAB.0020.0002.2A61] # SMALL VEE WITH UNDERBAR
+2A62 ; [*0BAC.0020.0002.2A62] # LOGICAL OR WITH DOUBLE OVERBAR
+2A63 ; [*0BAD.0020.0002.2A63] # LOGICAL OR WITH DOUBLE UNDERBAR
+2A64 ; [*0BAE.0020.0002.2A64] # Z NOTATION DOMAIN ANTIRESTRICTION
+2A65 ; [*0BAF.0020.0002.2A65] # Z NOTATION RANGE ANTIRESTRICTION
+2A66 ; [*0BB0.0020.0002.2A66] # EQUALS SIGN WITH DOT BELOW
+2A67 ; [*0BB1.0020.0002.2A67] # IDENTICAL WITH DOT ABOVE
+2A68 ; [*0BB2.0020.0002.2A68] # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE
+2A69 ; [*0BB3.0020.0002.2A69] # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE
+2A6A ; [*0BB4.0020.0002.2A6A] # TILDE OPERATOR WITH DOT ABOVE
+2A6B ; [*0BB5.0020.0002.2A6B] # TILDE OPERATOR WITH RISING DOTS
+2A6C ; [*0BB6.0020.0002.2A6C] # SIMILAR MINUS SIMILAR
+2A6D ; [*0BB7.0020.0002.2A6D] # CONGRUENT WITH DOT ABOVE
+2A6E ; [*0BB8.0020.0002.2A6E] # EQUALS WITH ASTERISK
+2A6F ; [*0BB9.0020.0002.2A6F] # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
+2A70 ; [*0BBA.0020.0002.2A70] # APPROXIMATELY EQUAL OR EQUAL TO
+2A71 ; [*0BBB.0020.0002.2A71] # EQUALS SIGN ABOVE PLUS SIGN
+2A72 ; [*0BBC.0020.0002.2A72] # PLUS SIGN ABOVE EQUALS SIGN
+2A73 ; [*0BBD.0020.0002.2A73] # EQUALS SIGN ABOVE TILDE OPERATOR
2A74 ; [*0237.0020.0004.2A74][*0237.0020.0004.2A74][*05A1.0020.001F.2A74] # DOUBLE COLON EQUAL
-2A75 ; [*05A1.0020.0004.2A75][*05A1.0020.0004.2A75] # TWO CONSECUTIVE EQUALS SIGNS
+2A75 ; [*05A1.0020.0004.2A75][*05A1.0020.001F.2A75] # TWO CONSECUTIVE EQUALS SIGNS
2A76 ; [*05A1.0020.0004.2A76][*05A1.0020.0004.2A76][*05A1.0020.001F.2A76] # THREE CONSECUTIVE EQUALS SIGNS
-2A77 ; [*0BA4.0020.0002.2A77] # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
-2A78 ; [*0BA5.0020.0002.2A78] # EQUIVALENT WITH FOUR DOTS ABOVE
-2A79 ; [*0BA6.0020.0002.2A79] # LESS-THAN WITH CIRCLE INSIDE
-2A7A ; [*0BA7.0020.0002.2A7A] # GREATER-THAN WITH CIRCLE INSIDE
-2A7B ; [*0BA8.0020.0002.2A7B] # LESS-THAN WITH QUESTION MARK ABOVE
-2A7C ; [*0BA9.0020.0002.2A7C] # GREATER-THAN WITH QUESTION MARK ABOVE
-2A7D ; [*0BAA.0020.0002.2A7D] # LESS-THAN OR SLANTED EQUAL TO
-2A7E ; [*0BAB.0020.0002.2A7E] # GREATER-THAN OR SLANTED EQUAL TO
-2A7F ; [*0BAC.0020.0002.2A7F] # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A80 ; [*0BAD.0020.0002.2A80] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
-2A81 ; [*0BAE.0020.0002.2A81] # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A82 ; [*0BAF.0020.0002.2A82] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
-2A83 ; [*0BB0.0020.0002.2A83] # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
-2A84 ; [*0BB1.0020.0002.2A84] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
-2A85 ; [*0BB2.0020.0002.2A85] # LESS-THAN OR APPROXIMATE
-2A86 ; [*0BB3.0020.0002.2A86] # GREATER-THAN OR APPROXIMATE
-2A87 ; [*0BB4.0020.0002.2A87] # LESS-THAN AND SINGLE-LINE NOT EQUAL TO
-2A88 ; [*0BB5.0020.0002.2A88] # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
-2A89 ; [*0BB6.0020.0002.2A89] # LESS-THAN AND NOT APPROXIMATE
-2A8A ; [*0BB7.0020.0002.2A8A] # GREATER-THAN AND NOT APPROXIMATE
-2A8B ; [*0BB8.0020.0002.2A8B] # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
-2A8C ; [*0BB9.0020.0002.2A8C] # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
-2A8D ; [*0BBA.0020.0002.2A8D] # LESS-THAN ABOVE SIMILAR OR EQUAL
-2A8E ; [*0BBB.0020.0002.2A8E] # GREATER-THAN ABOVE SIMILAR OR EQUAL
-2A8F ; [*0BBC.0020.0002.2A8F] # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
-2A90 ; [*0BBD.0020.0002.2A90] # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
-2A91 ; [*0BBE.0020.0002.2A91] # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
-2A92 ; [*0BBF.0020.0002.2A92] # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
-2A93 ; [*0BC0.0020.0002.2A93] # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
-2A94 ; [*0BC1.0020.0002.2A94] # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
-2A95 ; [*0BC2.0020.0002.2A95] # SLANTED EQUAL TO OR LESS-THAN
-2A96 ; [*0BC3.0020.0002.2A96] # SLANTED EQUAL TO OR GREATER-THAN
-2A97 ; [*0BC4.0020.0002.2A97] # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
-2A98 ; [*0BC5.0020.0002.2A98] # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
-2A99 ; [*0BC6.0020.0002.2A99] # DOUBLE-LINE EQUAL TO OR LESS-THAN
-2A9A ; [*0BC7.0020.0002.2A9A] # DOUBLE-LINE EQUAL TO OR GREATER-THAN
-2A9B ; [*0BC8.0020.0002.2A9B] # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
-2A9C ; [*0BC9.0020.0002.2A9C] # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
-2A9D ; [*0BCA.0020.0002.2A9D] # SIMILAR OR LESS-THAN
-2A9E ; [*0BCB.0020.0002.2A9E] # SIMILAR OR GREATER-THAN
-2A9F ; [*0BCC.0020.0002.2A9F] # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
-2AA0 ; [*0BCD.0020.0002.2AA0] # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
-2AA1 ; [*0BCE.0020.0002.2AA1] # DOUBLE NESTED LESS-THAN
-2AA2 ; [*0BCF.0020.0002.2AA2] # DOUBLE NESTED GREATER-THAN
-2AA3 ; [*0BD0.0020.0002.2AA3] # DOUBLE NESTED LESS-THAN WITH UNDERBAR
-2AA4 ; [*0BD1.0020.0002.2AA4] # GREATER-THAN OVERLAPPING LESS-THAN
-2AA5 ; [*0BD2.0020.0002.2AA5] # GREATER-THAN BESIDE LESS-THAN
-2AA6 ; [*0BD3.0020.0002.2AA6] # LESS-THAN CLOSED BY CURVE
-2AA7 ; [*0BD4.0020.0002.2AA7] # GREATER-THAN CLOSED BY CURVE
-2AA8 ; [*0BD5.0020.0002.2AA8] # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AA9 ; [*0BD6.0020.0002.2AA9] # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
-2AAA ; [*0BD7.0020.0002.2AAA] # SMALLER THAN
-2AAB ; [*0BD8.0020.0002.2AAB] # LARGER THAN
-2AAC ; [*0BD9.0020.0002.2AAC] # SMALLER THAN OR EQUAL TO
-2AAD ; [*0BDA.0020.0002.2AAD] # LARGER THAN OR EQUAL TO
-2AAE ; [*0BDB.0020.0002.2AAE] # EQUALS SIGN WITH BUMPY ABOVE
-2AAF ; [*0BDC.0020.0002.2AAF] # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
-2AB0 ; [*0BDD.0020.0002.2AB0] # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
-2AB1 ; [*0BDE.0020.0002.2AB1] # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
-2AB2 ; [*0BDF.0020.0002.2AB2] # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
-2AB3 ; [*0BE0.0020.0002.2AB3] # PRECEDES ABOVE EQUALS SIGN
-2AB4 ; [*0BE1.0020.0002.2AB4] # SUCCEEDS ABOVE EQUALS SIGN
-2AB5 ; [*0BE2.0020.0002.2AB5] # PRECEDES ABOVE NOT EQUAL TO
-2AB6 ; [*0BE3.0020.0002.2AB6] # SUCCEEDS ABOVE NOT EQUAL TO
-2AB7 ; [*0BE4.0020.0002.2AB7] # PRECEDES ABOVE ALMOST EQUAL TO
-2AB8 ; [*0BE5.0020.0002.2AB8] # SUCCEEDS ABOVE ALMOST EQUAL TO
-2AB9 ; [*0BE6.0020.0002.2AB9] # PRECEDES ABOVE NOT ALMOST EQUAL TO
-2ABA ; [*0BE7.0020.0002.2ABA] # SUCCEEDS ABOVE NOT ALMOST EQUAL TO
-2ABB ; [*0BE8.0020.0002.2ABB] # DOUBLE PRECEDES
-2ABC ; [*0BE9.0020.0002.2ABC] # DOUBLE SUCCEEDS
-2ABD ; [*0BEA.0020.0002.2ABD] # SUBSET WITH DOT
-2ABE ; [*0BEB.0020.0002.2ABE] # SUPERSET WITH DOT
-2ABF ; [*0BEC.0020.0002.2ABF] # SUBSET WITH PLUS SIGN BELOW
-2AC0 ; [*0BED.0020.0002.2AC0] # SUPERSET WITH PLUS SIGN BELOW
-2AC1 ; [*0BEE.0020.0002.2AC1] # SUBSET WITH MULTIPLICATION SIGN BELOW
-2AC2 ; [*0BEF.0020.0002.2AC2] # SUPERSET WITH MULTIPLICATION SIGN BELOW
-2AC3 ; [*0BF0.0020.0002.2AC3] # SUBSET OF OR EQUAL TO WITH DOT ABOVE
-2AC4 ; [*0BF1.0020.0002.2AC4] # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
-2AC5 ; [*0BF2.0020.0002.2AC5] # SUBSET OF ABOVE EQUALS SIGN
-2AC6 ; [*0BF3.0020.0002.2AC6] # SUPERSET OF ABOVE EQUALS SIGN
-2AC7 ; [*0BF4.0020.0002.2AC7] # SUBSET OF ABOVE TILDE OPERATOR
-2AC8 ; [*0BF5.0020.0002.2AC8] # SUPERSET OF ABOVE TILDE OPERATOR
-2AC9 ; [*0BF6.0020.0002.2AC9] # SUBSET OF ABOVE ALMOST EQUAL TO
-2ACA ; [*0BF7.0020.0002.2ACA] # SUPERSET OF ABOVE ALMOST EQUAL TO
-2ACB ; [*0BF8.0020.0002.2ACB] # SUBSET OF ABOVE NOT EQUAL TO
-2ACC ; [*0BF9.0020.0002.2ACC] # SUPERSET OF ABOVE NOT EQUAL TO
-2ACD ; [*0BFA.0020.0002.2ACD] # SQUARE LEFT OPEN BOX OPERATOR
-2ACE ; [*0BFB.0020.0002.2ACE] # SQUARE RIGHT OPEN BOX OPERATOR
-2ACF ; [*0BFC.0020.0002.2ACF] # CLOSED SUBSET
-2AD0 ; [*0BFD.0020.0002.2AD0] # CLOSED SUPERSET
-2AD1 ; [*0BFE.0020.0002.2AD1] # CLOSED SUBSET OR EQUAL TO
-2AD2 ; [*0BFF.0020.0002.2AD2] # CLOSED SUPERSET OR EQUAL TO
-2AD3 ; [*0C00.0020.0002.2AD3] # SUBSET ABOVE SUPERSET
-2AD4 ; [*0C01.0020.0002.2AD4] # SUPERSET ABOVE SUBSET
-2AD5 ; [*0C02.0020.0002.2AD5] # SUBSET ABOVE SUBSET
-2AD6 ; [*0C03.0020.0002.2AD6] # SUPERSET ABOVE SUPERSET
-2AD7 ; [*0C04.0020.0002.2AD7] # SUPERSET BESIDE SUBSET
-2AD8 ; [*0C05.0020.0002.2AD8] # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
-2AD9 ; [*0C06.0020.0002.2AD9] # ELEMENT OF OPENING DOWNWARDS
-2ADA ; [*0C07.0020.0002.2ADA] # PITCHFORK WITH TEE TOP
-2ADB ; [*0C08.0020.0002.2ADB] # TRANSVERSAL INTERSECTION
-2ADC ; [*0C09.0020.0002.2ADD][.0000.0054.0002.0338] # FORKING
-2ADD ; [*0C09.0020.0002.2ADD] # NONFORKING
-2ADE ; [*0C0A.0020.0002.2ADE] # SHORT LEFT TACK
-2ADF ; [*0C0B.0020.0002.2ADF] # SHORT DOWN TACK
-2AE0 ; [*0C0C.0020.0002.2AE0] # SHORT UP TACK
-2AE1 ; [*0C0D.0020.0002.2AE1] # PERPENDICULAR WITH S
-2AE2 ; [*0C0E.0020.0002.2AE2] # VERTICAL BAR TRIPLE RIGHT TURNSTILE
-2AE3 ; [*0C0F.0020.0002.2AE3] # DOUBLE VERTICAL BAR LEFT TURNSTILE
-2AE4 ; [*0C10.0020.0002.2AE4] # VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE5 ; [*0C11.0020.0002.2AE5] # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
-2AE6 ; [*0C12.0020.0002.2AE6] # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
-2AE7 ; [*0C13.0020.0002.2AE7] # SHORT DOWN TACK WITH OVERBAR
-2AE8 ; [*0C14.0020.0002.2AE8] # SHORT UP TACK WITH UNDERBAR
-2AE9 ; [*0C15.0020.0002.2AE9] # SHORT UP TACK ABOVE SHORT DOWN TACK
-2AEA ; [*0C16.0020.0002.2AEA] # DOUBLE DOWN TACK
-2AEB ; [*0C17.0020.0002.2AEB] # DOUBLE UP TACK
-2AEC ; [*0C18.0020.0002.2AEC] # DOUBLE STROKE NOT SIGN
-2AED ; [*0C19.0020.0002.2AED] # REVERSED DOUBLE STROKE NOT SIGN
-2AEE ; [*0C1A.0020.0002.2AEE] # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
-2AEF ; [*0C1B.0020.0002.2AEF] # VERTICAL LINE WITH CIRCLE ABOVE
-2AF0 ; [*0C1C.0020.0002.2AF0] # VERTICAL LINE WITH CIRCLE BELOW
-2AF1 ; [*0C1D.0020.0002.2AF1] # DOWN TACK WITH CIRCLE BELOW
-2AF2 ; [*0C1E.0020.0002.2AF2] # PARALLEL WITH HORIZONTAL STROKE
-2AF3 ; [*0C1F.0020.0002.2AF3] # PARALLEL WITH TILDE OPERATOR
-2AF4 ; [*0C20.0020.0002.2AF4] # TRIPLE VERTICAL BAR BINARY RELATION
-2AF5 ; [*0C21.0020.0002.2AF5] # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE
-2AF6 ; [*0C22.0020.0002.2AF6] # TRIPLE COLON OPERATOR
-2AF7 ; [*0C23.0020.0002.2AF7] # TRIPLE NESTED LESS-THAN
-2AF8 ; [*0C24.0020.0002.2AF8] # TRIPLE NESTED GREATER-THAN
-2AF9 ; [*0C25.0020.0002.2AF9] # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
-2AFA ; [*0C26.0020.0002.2AFA] # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
-2AFB ; [*0C27.0020.0002.2AFB] # TRIPLE SOLIDUS BINARY RELATION
-2AFC ; [*0C28.0020.0002.2AFC] # LARGE TRIPLE VERTICAL BAR OPERATOR
-2AFD ; [*0C29.0020.0002.2AFD] # DOUBLE SOLIDUS OPERATOR
-2AFE ; [*0C2A.0020.0002.2AFE] # WHITE VERTICAL BAR
-2AFF ; [*0C2B.0020.0002.2AFF] # N-ARY WHITE VERTICAL BAR
-2B00 ; [*0C2C.0020.0002.2B00] # NORTH EAST WHITE ARROW
-2B01 ; [*0C2D.0020.0002.2B01] # NORTH WEST WHITE ARROW
-2B02 ; [*0C2E.0020.0002.2B02] # SOUTH EAST WHITE ARROW
-2B03 ; [*0C2F.0020.0002.2B03] # SOUTH WEST WHITE ARROW
-2B04 ; [*0C30.0020.0002.2B04] # LEFT RIGHT WHITE ARROW
-2B05 ; [*0C31.0020.0002.2B05] # LEFTWARDS BLACK ARROW
-2B06 ; [*0C32.0020.0002.2B06] # UPWARDS BLACK ARROW
-2B07 ; [*0C33.0020.0002.2B07] # DOWNWARDS BLACK ARROW
-2B08 ; [*0C34.0020.0002.2B08] # NORTH EAST BLACK ARROW
-2B09 ; [*0C35.0020.0002.2B09] # NORTH WEST BLACK ARROW
-2B0A ; [*0C36.0020.0002.2B0A] # SOUTH EAST BLACK ARROW
-2B0B ; [*0C37.0020.0002.2B0B] # SOUTH WEST BLACK ARROW
-2B0C ; [*0C38.0020.0002.2B0C] # LEFT RIGHT BLACK ARROW
-2B0D ; [*0C39.0020.0002.2B0D] # UP DOWN BLACK ARROW
-2B0E ; [*0C3A.0020.0002.2B0E] # RIGHTWARDS ARROW WITH TIP DOWNWARDS
-2B0F ; [*0C3B.0020.0002.2B0F] # RIGHTWARDS ARROW WITH TIP UPWARDS
-2B10 ; [*0C3C.0020.0002.2B10] # LEFTWARDS ARROW WITH TIP DOWNWARDS
-2B11 ; [*0C3D.0020.0002.2B11] # LEFTWARDS ARROW WITH TIP UPWARDS
-2B12 ; [*0C3E.0020.0002.2B12] # SQUARE WITH TOP HALF BLACK
-2B13 ; [*0C3F.0020.0002.2B13] # SQUARE WITH BOTTOM HALF BLACK
-2B14 ; [*0C40.0020.0002.2B14] # SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK
-2B15 ; [*0C41.0020.0002.2B15] # SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK
-2B16 ; [*0C42.0020.0002.2B16] # DIAMOND WITH LEFT HALF BLACK
-2B17 ; [*0C43.0020.0002.2B17] # DIAMOND WITH RIGHT HALF BLACK
-2B18 ; [*0C44.0020.0002.2B18] # DIAMOND WITH TOP HALF BLACK
-2B19 ; [*0C45.0020.0002.2B19] # DIAMOND WITH BOTTOM HALF BLACK
-2B1A ; [*0C46.0020.0002.2B1A] # DOTTED SQUARE
-2B1B ; [*0C47.0020.0002.2B1B] # BLACK LARGE SQUARE
-2B1C ; [*0C48.0020.0002.2B1C] # WHITE LARGE SQUARE
-2B1D ; [*0C49.0020.0002.2B1D] # BLACK VERY SMALL SQUARE
-2B1E ; [*0C4A.0020.0002.2B1E] # WHITE VERY SMALL SQUARE
-2B1F ; [*0C4B.0020.0002.2B1F] # BLACK PENTAGON
-2B20 ; [*0C4C.0020.0002.2B20] # WHITE PENTAGON
-2B21 ; [*0C4D.0020.0002.2B21] # WHITE HEXAGON
-2B22 ; [*0C4E.0020.0002.2B22] # BLACK HEXAGON
-2B23 ; [*0C4F.0020.0002.2B23] # HORIZONTAL BLACK HEXAGON
-2B24 ; [*0C50.0020.0002.2B24] # BLACK LARGE CIRCLE
-2B25 ; [*0C51.0020.0002.2B25] # BLACK MEDIUM DIAMOND
-2B26 ; [*0C52.0020.0002.2B26] # WHITE MEDIUM DIAMOND
-2B27 ; [*0C53.0020.0002.2B27] # BLACK MEDIUM LOZENGE
-2B28 ; [*0C54.0020.0002.2B28] # WHITE MEDIUM LOZENGE
-2B29 ; [*0C55.0020.0002.2B29] # BLACK SMALL DIAMOND
-2B2A ; [*0C56.0020.0002.2B2A] # BLACK SMALL LOZENGE
-2B2B ; [*0C57.0020.0002.2B2B] # WHITE SMALL LOZENGE
-2B2C ; [*0C58.0020.0002.2B2C] # BLACK HORIZONTAL ELLIPSE
-2B2D ; [*0C59.0020.0002.2B2D] # WHITE HORIZONTAL ELLIPSE
-2B2E ; [*0C5A.0020.0002.2B2E] # BLACK VERTICAL ELLIPSE
-2B2F ; [*0C5B.0020.0002.2B2F] # WHITE VERTICAL ELLIPSE
-2B30 ; [*0C5C.0020.0002.2B30] # LEFT ARROW WITH SMALL CIRCLE
-2B31 ; [*0C5D.0020.0002.2B31] # THREE LEFTWARDS ARROWS
-2B32 ; [*0C5E.0020.0002.2B32] # LEFT ARROW WITH CIRCLED PLUS
-2B33 ; [*0C5F.0020.0002.2B33] # LONG LEFTWARDS SQUIGGLE ARROW
-2B34 ; [*0C60.0020.0002.2B34] # LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
-2B35 ; [*0C61.0020.0002.2B35] # LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
-2B36 ; [*0C62.0020.0002.2B36] # LEFTWARDS TWO-HEADED ARROW FROM BAR
-2B37 ; [*0C63.0020.0002.2B37] # LEFTWARDS TWO-HEADED TRIPLE DASH ARROW
-2B38 ; [*0C64.0020.0002.2B38] # LEFTWARDS ARROW WITH DOTTED STEM
-2B39 ; [*0C65.0020.0002.2B39] # LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
-2B3A ; [*0C66.0020.0002.2B3A] # LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2B3B ; [*0C67.0020.0002.2B3B] # LEFTWARDS TWO-HEADED ARROW WITH TAIL
-2B3C ; [*0C68.0020.0002.2B3C] # LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
-2B3D ; [*0C69.0020.0002.2B3D] # LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
-2B3E ; [*0C6A.0020.0002.2B3E] # LEFTWARDS ARROW THROUGH X
-2B3F ; [*0C6B.0020.0002.2B3F] # WAVE ARROW POINTING DIRECTLY LEFT
-2B40 ; [*0C6C.0020.0002.2B40] # EQUALS SIGN ABOVE LEFTWARDS ARROW
-2B41 ; [*0C6D.0020.0002.2B41] # REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW
-2B42 ; [*0C6E.0020.0002.2B42] # LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
-2B43 ; [*0C6F.0020.0002.2B43] # RIGHTWARDS ARROW THROUGH GREATER-THAN
-2B44 ; [*0C70.0020.0002.2B44] # RIGHTWARDS ARROW THROUGH SUPERSET
-2B45 ; [*0C71.0020.0002.2B45] # LEFTWARDS QUADRUPLE ARROW
-2B46 ; [*0C72.0020.0002.2B46] # RIGHTWARDS QUADRUPLE ARROW
-2B47 ; [*0C73.0020.0002.2B47] # REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW
-2B48 ; [*0C74.0020.0002.2B48] # RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
-2B49 ; [*0C75.0020.0002.2B49] # TILDE OPERATOR ABOVE LEFTWARDS ARROW
-2B4A ; [*0C76.0020.0002.2B4A] # LEFTWARDS ARROW ABOVE ALMOST EQUAL TO
-2B4B ; [*0C77.0020.0002.2B4B] # LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
-2B4C ; [*0C78.0020.0002.2B4C] # RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
-2B50 ; [*0C79.0020.0002.2B50] # WHITE MEDIUM STAR
-2B51 ; [*0C7A.0020.0002.2B51] # BLACK SMALL STAR
-2B52 ; [*0C7B.0020.0002.2B52] # WHITE SMALL STAR
-2B53 ; [*0C7C.0020.0002.2B53] # BLACK RIGHT-POINTING PENTAGON
-2B54 ; [*0C7D.0020.0002.2B54] # WHITE RIGHT-POINTING PENTAGON
-2B55 ; [*0C7E.0020.0002.2B55] # HEAVY LARGE CIRCLE
-2B56 ; [*0C7F.0020.0002.2B56] # HEAVY OVAL WITH OVAL INSIDE
-2B57 ; [*0C80.0020.0002.2B57] # HEAVY CIRCLE WITH CIRCLE INSIDE
-2B58 ; [*0C81.0020.0002.2B58] # HEAVY CIRCLE
-2B59 ; [*0C82.0020.0002.2B59] # HEAVY CIRCLED SALTIRE
-2CE5 ; [*0C83.0020.0002.2CE5] # COPTIC SYMBOL MI RO
-2CE6 ; [*0C84.0020.0002.2CE6] # COPTIC SYMBOL PI RO
-2CE7 ; [*0C85.0020.0002.2CE7] # COPTIC SYMBOL STAUROS
-2CE8 ; [*0C86.0020.0002.2CE8] # COPTIC SYMBOL TAU RO
-2CE9 ; [*0C87.0020.0002.2CE9] # COPTIC SYMBOL KHI RO
-2CEA ; [*0C88.0020.0002.2CEA] # COPTIC SYMBOL SHIMA SIMA
+2A77 ; [*0BBE.0020.0002.2A77] # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
+2A78 ; [*0BBF.0020.0002.2A78] # EQUIVALENT WITH FOUR DOTS ABOVE
+2A79 ; [*0BC0.0020.0002.2A79] # LESS-THAN WITH CIRCLE INSIDE
+2A7A ; [*0BC1.0020.0002.2A7A] # GREATER-THAN WITH CIRCLE INSIDE
+2A7B ; [*0BC2.0020.0002.2A7B] # LESS-THAN WITH QUESTION MARK ABOVE
+2A7C ; [*0BC3.0020.0002.2A7C] # GREATER-THAN WITH QUESTION MARK ABOVE
+2A7D ; [*0BC4.0020.0002.2A7D] # LESS-THAN OR SLANTED EQUAL TO
+2A7E ; [*0BC5.0020.0002.2A7E] # GREATER-THAN OR SLANTED EQUAL TO
+2A7F ; [*0BC6.0020.0002.2A7F] # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A80 ; [*0BC7.0020.0002.2A80] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A81 ; [*0BC8.0020.0002.2A81] # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A82 ; [*0BC9.0020.0002.2A82] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A83 ; [*0BCA.0020.0002.2A83] # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
+2A84 ; [*0BCB.0020.0002.2A84] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
+2A85 ; [*0BCC.0020.0002.2A85] # LESS-THAN OR APPROXIMATE
+2A86 ; [*0BCD.0020.0002.2A86] # GREATER-THAN OR APPROXIMATE
+2A87 ; [*0BCE.0020.0002.2A87] # LESS-THAN AND SINGLE-LINE NOT EQUAL TO
+2A88 ; [*0BCF.0020.0002.2A88] # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
+2A89 ; [*0BD0.0020.0002.2A89] # LESS-THAN AND NOT APPROXIMATE
+2A8A ; [*0BD1.0020.0002.2A8A] # GREATER-THAN AND NOT APPROXIMATE
+2A8B ; [*0BD2.0020.0002.2A8B] # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
+2A8C ; [*0BD3.0020.0002.2A8C] # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
+2A8D ; [*0BD4.0020.0002.2A8D] # LESS-THAN ABOVE SIMILAR OR EQUAL
+2A8E ; [*0BD5.0020.0002.2A8E] # GREATER-THAN ABOVE SIMILAR OR EQUAL
+2A8F ; [*0BD6.0020.0002.2A8F] # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
+2A90 ; [*0BD7.0020.0002.2A90] # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
+2A91 ; [*0BD8.0020.0002.2A91] # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
+2A92 ; [*0BD9.0020.0002.2A92] # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
+2A93 ; [*0BDA.0020.0002.2A93] # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
+2A94 ; [*0BDB.0020.0002.2A94] # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
+2A95 ; [*0BDC.0020.0002.2A95] # SLANTED EQUAL TO OR LESS-THAN
+2A96 ; [*0BDD.0020.0002.2A96] # SLANTED EQUAL TO OR GREATER-THAN
+2A97 ; [*0BDE.0020.0002.2A97] # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
+2A98 ; [*0BDF.0020.0002.2A98] # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
+2A99 ; [*0BE0.0020.0002.2A99] # DOUBLE-LINE EQUAL TO OR LESS-THAN
+2A9A ; [*0BE1.0020.0002.2A9A] # DOUBLE-LINE EQUAL TO OR GREATER-THAN
+2A9B ; [*0BE2.0020.0002.2A9B] # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
+2A9C ; [*0BE3.0020.0002.2A9C] # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
+2A9D ; [*0BE4.0020.0002.2A9D] # SIMILAR OR LESS-THAN
+2A9E ; [*0BE5.0020.0002.2A9E] # SIMILAR OR GREATER-THAN
+2A9F ; [*0BE6.0020.0002.2A9F] # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
+2AA0 ; [*0BE7.0020.0002.2AA0] # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
+2AA1 ; [*0BE8.0020.0002.2AA1] # DOUBLE NESTED LESS-THAN
+2AA2 ; [*0BE9.0020.0002.2AA2] # DOUBLE NESTED GREATER-THAN
+2AA3 ; [*0BEA.0020.0002.2AA3] # DOUBLE NESTED LESS-THAN WITH UNDERBAR
+2AA4 ; [*0BEB.0020.0002.2AA4] # GREATER-THAN OVERLAPPING LESS-THAN
+2AA5 ; [*0BEC.0020.0002.2AA5] # GREATER-THAN BESIDE LESS-THAN
+2AA6 ; [*0BED.0020.0002.2AA6] # LESS-THAN CLOSED BY CURVE
+2AA7 ; [*0BEE.0020.0002.2AA7] # GREATER-THAN CLOSED BY CURVE
+2AA8 ; [*0BEF.0020.0002.2AA8] # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AA9 ; [*0BF0.0020.0002.2AA9] # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AAA ; [*0BF1.0020.0002.2AAA] # SMALLER THAN
+2AAB ; [*0BF2.0020.0002.2AAB] # LARGER THAN
+2AAC ; [*0BF3.0020.0002.2AAC] # SMALLER THAN OR EQUAL TO
+2AAD ; [*0BF4.0020.0002.2AAD] # LARGER THAN OR EQUAL TO
+2AAE ; [*0BF5.0020.0002.2AAE] # EQUALS SIGN WITH BUMPY ABOVE
+2AAF ; [*0BF6.0020.0002.2AAF] # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+2AB0 ; [*0BF7.0020.0002.2AB0] # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+2AB1 ; [*0BF8.0020.0002.2AB1] # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
+2AB2 ; [*0BF9.0020.0002.2AB2] # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
+2AB3 ; [*0BFA.0020.0002.2AB3] # PRECEDES ABOVE EQUALS SIGN
+2AB4 ; [*0BFB.0020.0002.2AB4] # SUCCEEDS ABOVE EQUALS SIGN
+2AB5 ; [*0BFC.0020.0002.2AB5] # PRECEDES ABOVE NOT EQUAL TO
+2AB6 ; [*0BFD.0020.0002.2AB6] # SUCCEEDS ABOVE NOT EQUAL TO
+2AB7 ; [*0BFE.0020.0002.2AB7] # PRECEDES ABOVE ALMOST EQUAL TO
+2AB8 ; [*0BFF.0020.0002.2AB8] # SUCCEEDS ABOVE ALMOST EQUAL TO
+2AB9 ; [*0C00.0020.0002.2AB9] # PRECEDES ABOVE NOT ALMOST EQUAL TO
+2ABA ; [*0C01.0020.0002.2ABA] # SUCCEEDS ABOVE NOT ALMOST EQUAL TO
+2ABB ; [*0C02.0020.0002.2ABB] # DOUBLE PRECEDES
+2ABC ; [*0C03.0020.0002.2ABC] # DOUBLE SUCCEEDS
+2ABD ; [*0C04.0020.0002.2ABD] # SUBSET WITH DOT
+2ABE ; [*0C05.0020.0002.2ABE] # SUPERSET WITH DOT
+2ABF ; [*0C06.0020.0002.2ABF] # SUBSET WITH PLUS SIGN BELOW
+2AC0 ; [*0C07.0020.0002.2AC0] # SUPERSET WITH PLUS SIGN BELOW
+2AC1 ; [*0C08.0020.0002.2AC1] # SUBSET WITH MULTIPLICATION SIGN BELOW
+2AC2 ; [*0C09.0020.0002.2AC2] # SUPERSET WITH MULTIPLICATION SIGN BELOW
+2AC3 ; [*0C0A.0020.0002.2AC3] # SUBSET OF OR EQUAL TO WITH DOT ABOVE
+2AC4 ; [*0C0B.0020.0002.2AC4] # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
+2AC5 ; [*0C0C.0020.0002.2AC5] # SUBSET OF ABOVE EQUALS SIGN
+2AC6 ; [*0C0D.0020.0002.2AC6] # SUPERSET OF ABOVE EQUALS SIGN
+2AC7 ; [*0C0E.0020.0002.2AC7] # SUBSET OF ABOVE TILDE OPERATOR
+2AC8 ; [*0C0F.0020.0002.2AC8] # SUPERSET OF ABOVE TILDE OPERATOR
+2AC9 ; [*0C10.0020.0002.2AC9] # SUBSET OF ABOVE ALMOST EQUAL TO
+2ACA ; [*0C11.0020.0002.2ACA] # SUPERSET OF ABOVE ALMOST EQUAL TO
+2ACB ; [*0C12.0020.0002.2ACB] # SUBSET OF ABOVE NOT EQUAL TO
+2ACC ; [*0C13.0020.0002.2ACC] # SUPERSET OF ABOVE NOT EQUAL TO
+2ACD ; [*0C14.0020.0002.2ACD] # SQUARE LEFT OPEN BOX OPERATOR
+2ACE ; [*0C15.0020.0002.2ACE] # SQUARE RIGHT OPEN BOX OPERATOR
+2ACF ; [*0C16.0020.0002.2ACF] # CLOSED SUBSET
+2AD0 ; [*0C17.0020.0002.2AD0] # CLOSED SUPERSET
+2AD1 ; [*0C18.0020.0002.2AD1] # CLOSED SUBSET OR EQUAL TO
+2AD2 ; [*0C19.0020.0002.2AD2] # CLOSED SUPERSET OR EQUAL TO
+2AD3 ; [*0C1A.0020.0002.2AD3] # SUBSET ABOVE SUPERSET
+2AD4 ; [*0C1B.0020.0002.2AD4] # SUPERSET ABOVE SUBSET
+2AD5 ; [*0C1C.0020.0002.2AD5] # SUBSET ABOVE SUBSET
+2AD6 ; [*0C1D.0020.0002.2AD6] # SUPERSET ABOVE SUPERSET
+2AD7 ; [*0C1E.0020.0002.2AD7] # SUPERSET BESIDE SUBSET
+2AD8 ; [*0C1F.0020.0002.2AD8] # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
+2AD9 ; [*0C20.0020.0002.2AD9] # ELEMENT OF OPENING DOWNWARDS
+2ADA ; [*0C21.0020.0002.2ADA] # PITCHFORK WITH TEE TOP
+2ADB ; [*0C22.0020.0002.2ADB] # TRANSVERSAL INTERSECTION
+2ADC ; [*0C23.0020.0002.2ADD][.0000.0054.0002.0338] # FORKING
+2ADD ; [*0C23.0020.0002.2ADD] # NONFORKING
+2ADE ; [*0C24.0020.0002.2ADE] # SHORT LEFT TACK
+2ADF ; [*0C25.0020.0002.2ADF] # SHORT DOWN TACK
+2AE0 ; [*0C26.0020.0002.2AE0] # SHORT UP TACK
+2AE1 ; [*0C27.0020.0002.2AE1] # PERPENDICULAR WITH S
+2AE2 ; [*0C28.0020.0002.2AE2] # VERTICAL BAR TRIPLE RIGHT TURNSTILE
+2AE3 ; [*0C29.0020.0002.2AE3] # DOUBLE VERTICAL BAR LEFT TURNSTILE
+2AE4 ; [*0C2A.0020.0002.2AE4] # VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AE5 ; [*0C2B.0020.0002.2AE5] # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AE6 ; [*0C2C.0020.0002.2AE6] # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
+2AE7 ; [*0C2D.0020.0002.2AE7] # SHORT DOWN TACK WITH OVERBAR
+2AE8 ; [*0C2E.0020.0002.2AE8] # SHORT UP TACK WITH UNDERBAR
+2AE9 ; [*0C2F.0020.0002.2AE9] # SHORT UP TACK ABOVE SHORT DOWN TACK
+2AEA ; [*0C30.0020.0002.2AEA] # DOUBLE DOWN TACK
+2AEB ; [*0C31.0020.0002.2AEB] # DOUBLE UP TACK
+2AEC ; [*0C32.0020.0002.2AEC] # DOUBLE STROKE NOT SIGN
+2AED ; [*0C33.0020.0002.2AED] # REVERSED DOUBLE STROKE NOT SIGN
+2AEE ; [*0C34.0020.0002.2AEE] # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
+2AEF ; [*0C35.0020.0002.2AEF] # VERTICAL LINE WITH CIRCLE ABOVE
+2AF0 ; [*0C36.0020.0002.2AF0] # VERTICAL LINE WITH CIRCLE BELOW
+2AF1 ; [*0C37.0020.0002.2AF1] # DOWN TACK WITH CIRCLE BELOW
+2AF2 ; [*0C38.0020.0002.2AF2] # PARALLEL WITH HORIZONTAL STROKE
+2AF3 ; [*0C39.0020.0002.2AF3] # PARALLEL WITH TILDE OPERATOR
+2AF4 ; [*0C3A.0020.0002.2AF4] # TRIPLE VERTICAL BAR BINARY RELATION
+2AF5 ; [*0C3B.0020.0002.2AF5] # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE
+2AF6 ; [*0C3C.0020.0002.2AF6] # TRIPLE COLON OPERATOR
+2AF7 ; [*0C3D.0020.0002.2AF7] # TRIPLE NESTED LESS-THAN
+2AF8 ; [*0C3E.0020.0002.2AF8] # TRIPLE NESTED GREATER-THAN
+2AF9 ; [*0C3F.0020.0002.2AF9] # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
+2AFA ; [*0C40.0020.0002.2AFA] # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
+2AFB ; [*0C41.0020.0002.2AFB] # TRIPLE SOLIDUS BINARY RELATION
+2AFC ; [*0C42.0020.0002.2AFC] # LARGE TRIPLE VERTICAL BAR OPERATOR
+2AFD ; [*0C43.0020.0002.2AFD] # DOUBLE SOLIDUS OPERATOR
+2AFE ; [*0C44.0020.0002.2AFE] # WHITE VERTICAL BAR
+2AFF ; [*0C45.0020.0002.2AFF] # N-ARY WHITE VERTICAL BAR
+2B00 ; [*0C46.0020.0002.2B00] # NORTH EAST WHITE ARROW
+2B01 ; [*0C47.0020.0002.2B01] # NORTH WEST WHITE ARROW
+2B02 ; [*0C48.0020.0002.2B02] # SOUTH EAST WHITE ARROW
+2B03 ; [*0C49.0020.0002.2B03] # SOUTH WEST WHITE ARROW
+2B04 ; [*0C4A.0020.0002.2B04] # LEFT RIGHT WHITE ARROW
+2B05 ; [*0C4B.0020.0002.2B05] # LEFTWARDS BLACK ARROW
+2B06 ; [*0C4C.0020.0002.2B06] # UPWARDS BLACK ARROW
+2B07 ; [*0C4D.0020.0002.2B07] # DOWNWARDS BLACK ARROW
+2B08 ; [*0C4E.0020.0002.2B08] # NORTH EAST BLACK ARROW
+2B09 ; [*0C4F.0020.0002.2B09] # NORTH WEST BLACK ARROW
+2B0A ; [*0C50.0020.0002.2B0A] # SOUTH EAST BLACK ARROW
+2B0B ; [*0C51.0020.0002.2B0B] # SOUTH WEST BLACK ARROW
+2B0C ; [*0C52.0020.0002.2B0C] # LEFT RIGHT BLACK ARROW
+2B0D ; [*0C53.0020.0002.2B0D] # UP DOWN BLACK ARROW
+2B0E ; [*0C54.0020.0002.2B0E] # RIGHTWARDS ARROW WITH TIP DOWNWARDS
+2B0F ; [*0C55.0020.0002.2B0F] # RIGHTWARDS ARROW WITH TIP UPWARDS
+2B10 ; [*0C56.0020.0002.2B10] # LEFTWARDS ARROW WITH TIP DOWNWARDS
+2B11 ; [*0C57.0020.0002.2B11] # LEFTWARDS ARROW WITH TIP UPWARDS
+2B12 ; [*0C58.0020.0002.2B12] # SQUARE WITH TOP HALF BLACK
+2B13 ; [*0C59.0020.0002.2B13] # SQUARE WITH BOTTOM HALF BLACK
+2B14 ; [*0C5A.0020.0002.2B14] # SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK
+2B15 ; [*0C5B.0020.0002.2B15] # SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK
+2B16 ; [*0C5C.0020.0002.2B16] # DIAMOND WITH LEFT HALF BLACK
+2B17 ; [*0C5D.0020.0002.2B17] # DIAMOND WITH RIGHT HALF BLACK
+2B18 ; [*0C5E.0020.0002.2B18] # DIAMOND WITH TOP HALF BLACK
+2B19 ; [*0C5F.0020.0002.2B19] # DIAMOND WITH BOTTOM HALF BLACK
+2B1A ; [*0C60.0020.0002.2B1A] # DOTTED SQUARE
+2B1B ; [*0C61.0020.0002.2B1B] # BLACK LARGE SQUARE
+2B1C ; [*0C62.0020.0002.2B1C] # WHITE LARGE SQUARE
+2B1D ; [*0C63.0020.0002.2B1D] # BLACK VERY SMALL SQUARE
+2B1E ; [*0C64.0020.0002.2B1E] # WHITE VERY SMALL SQUARE
+2B1F ; [*0C65.0020.0002.2B1F] # BLACK PENTAGON
+2B20 ; [*0C66.0020.0002.2B20] # WHITE PENTAGON
+2B21 ; [*0C67.0020.0002.2B21] # WHITE HEXAGON
+2B22 ; [*0C68.0020.0002.2B22] # BLACK HEXAGON
+2B23 ; [*0C69.0020.0002.2B23] # HORIZONTAL BLACK HEXAGON
+2B24 ; [*0C6A.0020.0002.2B24] # BLACK LARGE CIRCLE
+2B25 ; [*0C6B.0020.0002.2B25] # BLACK MEDIUM DIAMOND
+2B26 ; [*0C6C.0020.0002.2B26] # WHITE MEDIUM DIAMOND
+2B27 ; [*0C6D.0020.0002.2B27] # BLACK MEDIUM LOZENGE
+2B28 ; [*0C6E.0020.0002.2B28] # WHITE MEDIUM LOZENGE
+2B29 ; [*0C6F.0020.0002.2B29] # BLACK SMALL DIAMOND
+2B2A ; [*0C70.0020.0002.2B2A] # BLACK SMALL LOZENGE
+2B2B ; [*0C71.0020.0002.2B2B] # WHITE SMALL LOZENGE
+2B2C ; [*0C72.0020.0002.2B2C] # BLACK HORIZONTAL ELLIPSE
+2B2D ; [*0C73.0020.0002.2B2D] # WHITE HORIZONTAL ELLIPSE
+2B2E ; [*0C74.0020.0002.2B2E] # BLACK VERTICAL ELLIPSE
+2B2F ; [*0C75.0020.0002.2B2F] # WHITE VERTICAL ELLIPSE
+2B30 ; [*0C76.0020.0002.2B30] # LEFT ARROW WITH SMALL CIRCLE
+2B31 ; [*0C77.0020.0002.2B31] # THREE LEFTWARDS ARROWS
+2B32 ; [*0C78.0020.0002.2B32] # LEFT ARROW WITH CIRCLED PLUS
+2B33 ; [*0C79.0020.0002.2B33] # LONG LEFTWARDS SQUIGGLE ARROW
+2B34 ; [*0C7A.0020.0002.2B34] # LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+2B35 ; [*0C7B.0020.0002.2B35] # LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+2B36 ; [*0C7C.0020.0002.2B36] # LEFTWARDS TWO-HEADED ARROW FROM BAR
+2B37 ; [*0C7D.0020.0002.2B37] # LEFTWARDS TWO-HEADED TRIPLE DASH ARROW
+2B38 ; [*0C7E.0020.0002.2B38] # LEFTWARDS ARROW WITH DOTTED STEM
+2B39 ; [*0C7F.0020.0002.2B39] # LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
+2B3A ; [*0C80.0020.0002.2B3A] # LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2B3B ; [*0C81.0020.0002.2B3B] # LEFTWARDS TWO-HEADED ARROW WITH TAIL
+2B3C ; [*0C82.0020.0002.2B3C] # LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
+2B3D ; [*0C83.0020.0002.2B3D] # LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2B3E ; [*0C84.0020.0002.2B3E] # LEFTWARDS ARROW THROUGH X
+2B3F ; [*0C85.0020.0002.2B3F] # WAVE ARROW POINTING DIRECTLY LEFT
+2B40 ; [*0C86.0020.0002.2B40] # EQUALS SIGN ABOVE LEFTWARDS ARROW
+2B41 ; [*0C87.0020.0002.2B41] # REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW
+2B42 ; [*0C88.0020.0002.2B42] # LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
+2B43 ; [*0C89.0020.0002.2B43] # RIGHTWARDS ARROW THROUGH GREATER-THAN
+2B44 ; [*0C8A.0020.0002.2B44] # RIGHTWARDS ARROW THROUGH SUPERSET
+2B45 ; [*0C8B.0020.0002.2B45] # LEFTWARDS QUADRUPLE ARROW
+2B46 ; [*0C8C.0020.0002.2B46] # RIGHTWARDS QUADRUPLE ARROW
+2B47 ; [*0C8D.0020.0002.2B47] # REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW
+2B48 ; [*0C8E.0020.0002.2B48] # RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
+2B49 ; [*0C8F.0020.0002.2B49] # TILDE OPERATOR ABOVE LEFTWARDS ARROW
+2B4A ; [*0C90.0020.0002.2B4A] # LEFTWARDS ARROW ABOVE ALMOST EQUAL TO
+2B4B ; [*0C91.0020.0002.2B4B] # LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+2B4C ; [*0C92.0020.0002.2B4C] # RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+2B50 ; [*0C93.0020.0002.2B50] # WHITE MEDIUM STAR
+2B51 ; [*0C94.0020.0002.2B51] # BLACK SMALL STAR
+2B52 ; [*0C95.0020.0002.2B52] # WHITE SMALL STAR
+2B53 ; [*0C96.0020.0002.2B53] # BLACK RIGHT-POINTING PENTAGON
+2B54 ; [*0C97.0020.0002.2B54] # WHITE RIGHT-POINTING PENTAGON
+2B55 ; [*0C98.0020.0002.2B55] # HEAVY LARGE CIRCLE
+2B56 ; [*0C99.0020.0002.2B56] # HEAVY OVAL WITH OVAL INSIDE
+2B57 ; [*0C9A.0020.0002.2B57] # HEAVY CIRCLE WITH CIRCLE INSIDE
+2B58 ; [*0C9B.0020.0002.2B58] # HEAVY CIRCLE
+2B59 ; [*0C9C.0020.0002.2B59] # HEAVY CIRCLED SALTIRE
+2CE5 ; [*0C9D.0020.0002.2CE5] # COPTIC SYMBOL MI RO
+2CE6 ; [*0C9E.0020.0002.2CE6] # COPTIC SYMBOL PI RO
+2CE7 ; [*0C9F.0020.0002.2CE7] # COPTIC SYMBOL STAUROS
+2CE8 ; [*0CA0.0020.0002.2CE8] # COPTIC SYMBOL TAU RO
+2CE9 ; [*0CA1.0020.0002.2CE9] # COPTIC SYMBOL KHI RO
+2CEA ; [*0CA2.0020.0002.2CEA] # COPTIC SYMBOL SHIMA SIMA
2CF9 ; [*027D.0020.0002.2CF9] # COPTIC OLD NUBIAN FULL STOP
2CFA ; [*026B.0020.0002.2CFA] # COPTIC OLD NUBIAN DIRECT QUESTION MARK
2CFB ; [*026C.0020.0002.2CFB] # COPTIC OLD NUBIAN INDIRECT QUESTION MARK
2CFC ; [*02DC.0020.0002.2CFC] # COPTIC OLD NUBIAN VERSE DIVIDER
-2CFD ; [*1501.0020.0002.2CFD] # COPTIC FRACTION ONE HALF
+2CFD ; [*151B.0020.0002.2CFD] # COPTIC FRACTION ONE HALF
2CFE ; [*027E.0020.0002.2CFE] # COPTIC FULL STOP
2CFF ; [*02DD.0020.0002.2CFF] # COPTIC MORPHOLOGICAL DIVIDER
2D70 ; [*03F4.0020.0002.2D70] # TIFINAGH SEPARATOR MARK
@@ -3532,23 +3532,23 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
2E39 ; [*0369.0020.0002.2E39] # TOP HALF SECTION SIGN
2E3A ; [*0219.0020.0002.2E3A] # TWO-EM DASH
2E3B ; [*021A.0020.0002.2E3B] # THREE-EM DASH
-2FF0 ; [*1483.0020.0002.2FF0] # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
-2FF1 ; [*1484.0020.0002.2FF1] # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
-2FF2 ; [*1485.0020.0002.2FF2] # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
-2FF3 ; [*1486.0020.0002.2FF3] # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
-2FF4 ; [*1487.0020.0002.2FF4] # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
-2FF5 ; [*1488.0020.0002.2FF5] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
-2FF6 ; [*1489.0020.0002.2FF6] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
-2FF7 ; [*148A.0020.0002.2FF7] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
-2FF8 ; [*148B.0020.0002.2FF8] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
-2FF9 ; [*148C.0020.0002.2FF9] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
-2FFA ; [*148D.0020.0002.2FFA] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
-2FFB ; [*148E.0020.0002.2FFB] # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+2FF0 ; [*149D.0020.0002.2FF0] # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
+2FF1 ; [*149E.0020.0002.2FF1] # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
+2FF2 ; [*149F.0020.0002.2FF2] # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
+2FF3 ; [*14A0.0020.0002.2FF3] # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
+2FF4 ; [*14A1.0020.0002.2FF4] # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
+2FF5 ; [*14A2.0020.0002.2FF5] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
+2FF6 ; [*14A3.0020.0002.2FF6] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
+2FF7 ; [*14A4.0020.0002.2FF7] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
+2FF8 ; [*14A5.0020.0002.2FF8] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
+2FF9 ; [*14A6.0020.0002.2FF9] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
+2FFA ; [*14A7.0020.0002.2FFA] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
+2FFB ; [*14A8.0020.0002.2FFB] # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
3000 ; [*020A.0020.0003.3000] # IDEOGRAPHIC SPACE
3001 ; [*022F.0020.0002.3001] # IDEOGRAPHIC COMMA
3002 ; [*0283.0020.0002.3002] # IDEOGRAPHIC FULL STOP
3003 ; [*038A.0020.0002.3003] # DITTO MARK
-3004 ; [*14B3.0020.0002.3004] # JAPANESE INDUSTRIAL STANDARD SYMBOL
+3004 ; [*14CD.0020.0002.3004] # JAPANESE INDUSTRIAL STANDARD SYMBOL
3008 ; [*034F.0020.0002.3008] # LEFT ANGLE BRACKET
3009 ; [*0350.0020.0002.3009] # RIGHT ANGLE BRACKET
300A ; [*0351.0020.0002.300A] # LEFT DOUBLE ANGLE BRACKET
@@ -3559,8 +3559,8 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
300F ; [*0356.0020.0002.300F] # RIGHT WHITE CORNER BRACKET
3010 ; [*0357.0020.0002.3010] # LEFT BLACK LENTICULAR BRACKET
3011 ; [*0358.0020.0002.3011] # RIGHT BLACK LENTICULAR BRACKET
-3012 ; [*14B4.0020.0002.3012] # POSTAL MARK
-3013 ; [*14B5.0020.0002.3013] # GETA MARK
+3012 ; [*14CE.0020.0002.3012] # POSTAL MARK
+3013 ; [*14CF.0020.0002.3013] # GETA MARK
3014 ; [*0359.0020.0002.3014] # LEFT TORTOISE SHELL BRACKET
3015 ; [*035A.0020.0002.3015] # RIGHT TORTOISE SHELL BRACKET
3016 ; [*035B.0020.0002.3016] # LEFT WHITE LENTICULAR BRACKET
@@ -3573,175 +3573,175 @@ E01EF ; [.0000.0000.0000.0000] # [E01EF] VARIATION SELECTOR-256
301D ; [*02F6.0020.0002.301D] # REVERSED DOUBLE PRIME QUOTATION MARK
301E ; [*02F7.0020.0002.301E] # DOUBLE PRIME QUOTATION MARK
301F ; [*02F8.0020.0002.301F] # LOW DOUBLE PRIME QUOTATION MARK
-3020 ; [*14B6.0020.0002.3020] # POSTAL MARK FACE
+3020 ; [*14D0.0020.0002.3020] # POSTAL MARK FACE
3030 ; [*021E.0020.0002.3030] # WAVY DASH
-3036 ; [*14B4.0020.0004.3036] # CIRCLED POSTAL MARK
-3037 ; [*14B7.0020.0002.3037] # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+3036 ; [*14CE.0020.0004.3036] # CIRCLED POSTAL MARK
+3037 ; [*14D1.0020.0002.3037] # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
303D ; [*038B.0020.0002.303D] # PART ALTERNATION MARK
-303E ; [*14B8.0020.0002.303E] # IDEOGRAPHIC VARIATION INDICATOR
-303F ; [*14B9.0020.0002.303F] # IDEOGRAPHIC HALF FILL SPACE
+303E ; [*14D2.0020.0002.303E] # IDEOGRAPHIC VARIATION INDICATOR
+303F ; [*14D3.0020.0002.303F] # IDEOGRAPHIC HALF FILL SPACE
309B ; [*041E.0020.0002.309B] # KATAKANA-HIRAGANA VOICED SOUND MARK
309C ; [*041F.0020.0002.309C] # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
30A0 ; [*021F.0020.0002.30A0] # KATAKANA-HIRAGANA DOUBLE HYPHEN
30FB ; [*0220.0020.0002.30FB] # KATAKANA MIDDLE DOT
-3190 ; [*14BA.0020.0002.3190] # IDEOGRAPHIC ANNOTATION LINKING MARK
-3191 ; [*14BB.0020.0002.3191] # IDEOGRAPHIC ANNOTATION REVERSE MARK
-31C0 ; [*148F.0020.0002.31C0] # CJK STROKE T
-31C1 ; [*1490.0020.0002.31C1] # CJK STROKE WG
-31C2 ; [*1491.0020.0002.31C2] # CJK STROKE XG
-31C3 ; [*1492.0020.0002.31C3] # CJK STROKE BXG
-31C4 ; [*1493.0020.0002.31C4] # CJK STROKE SW
-31C5 ; [*1494.0020.0002.31C5] # CJK STROKE HZZ
-31C6 ; [*1495.0020.0002.31C6] # CJK STROKE HZG
-31C7 ; [*1496.0020.0002.31C7] # CJK STROKE HP
-31C8 ; [*1497.0020.0002.31C8] # CJK STROKE HZWG
-31C9 ; [*1498.0020.0002.31C9] # CJK STROKE SZWG
-31CA ; [*1499.0020.0002.31CA] # CJK STROKE HZT
-31CB ; [*149A.0020.0002.31CB] # CJK STROKE HZZP
-31CC ; [*149B.0020.0002.31CC] # CJK STROKE HPWG
-31CD ; [*149C.0020.0002.31CD] # CJK STROKE HZW
-31CE ; [*149D.0020.0002.31CE] # CJK STROKE HZZZ
-31CF ; [*149E.0020.0002.31CF] # CJK STROKE N
-31D0 ; [*149F.0020.0002.31D0] # CJK STROKE H
-31D1 ; [*14A0.0020.0002.31D1] # CJK STROKE S
-31D2 ; [*14A1.0020.0002.31D2] # CJK STROKE P
-31D3 ; [*14A2.0020.0002.31D3] # CJK STROKE SP
-31D4 ; [*14A3.0020.0002.31D4] # CJK STROKE D
-31D5 ; [*14A4.0020.0002.31D5] # CJK STROKE HZ
-31D6 ; [*14A5.0020.0002.31D6] # CJK STROKE HG
-31D7 ; [*14A6.0020.0002.31D7] # CJK STROKE SZ
-31D8 ; [*14A7.0020.0002.31D8] # CJK STROKE SWZ
-31D9 ; [*14A8.0020.0002.31D9] # CJK STROKE ST
-31DA ; [*14A9.0020.0002.31DA] # CJK STROKE SG
-31DB ; [*14AA.0020.0002.31DB] # CJK STROKE PD
-31DC ; [*14AB.0020.0002.31DC] # CJK STROKE PZ
-31DD ; [*14AC.0020.0002.31DD] # CJK STROKE TN
-31DE ; [*14AD.0020.0002.31DE] # CJK STROKE SZZ
-31DF ; [*14AE.0020.0002.31DF] # CJK STROKE SWG
-31E0 ; [*14AF.0020.0002.31E0] # CJK STROKE HXWG
-31E1 ; [*14B0.0020.0002.31E1] # CJK STROKE HZZZG
-31E2 ; [*14B1.0020.0002.31E2] # CJK STROKE PG
-31E3 ; [*14B2.0020.0002.31E3] # CJK STROKE Q
-327F ; [*14BC.0020.0002.327F] # KOREAN STANDARD SYMBOL
-4DC0 ; [*0D97.0020.0002.4DC0] # HEXAGRAM FOR THE CREATIVE HEAVEN
-4DC1 ; [*0D98.0020.0002.4DC1] # HEXAGRAM FOR THE RECEPTIVE EARTH
-4DC2 ; [*0D99.0020.0002.4DC2] # HEXAGRAM FOR DIFFICULTY AT THE BEGINNING
-4DC3 ; [*0D9A.0020.0002.4DC3] # HEXAGRAM FOR YOUTHFUL FOLLY
-4DC4 ; [*0D9B.0020.0002.4DC4] # HEXAGRAM FOR WAITING
-4DC5 ; [*0D9C.0020.0002.4DC5] # HEXAGRAM FOR CONFLICT
-4DC6 ; [*0D9D.0020.0002.4DC6] # HEXAGRAM FOR THE ARMY
-4DC7 ; [*0D9E.0020.0002.4DC7] # HEXAGRAM FOR HOLDING TOGETHER
-4DC8 ; [*0D9F.0020.0002.4DC8] # HEXAGRAM FOR SMALL TAMING
-4DC9 ; [*0DA0.0020.0002.4DC9] # HEXAGRAM FOR TREADING
-4DCA ; [*0DA1.0020.0002.4DCA] # HEXAGRAM FOR PEACE
-4DCB ; [*0DA2.0020.0002.4DCB] # HEXAGRAM FOR STANDSTILL
-4DCC ; [*0DA3.0020.0002.4DCC] # HEXAGRAM FOR FELLOWSHIP
-4DCD ; [*0DA4.0020.0002.4DCD] # HEXAGRAM FOR GREAT POSSESSION
-4DCE ; [*0DA5.0020.0002.4DCE] # HEXAGRAM FOR MODESTY
-4DCF ; [*0DA6.0020.0002.4DCF] # HEXAGRAM FOR ENTHUSIASM
-4DD0 ; [*0DA7.0020.0002.4DD0] # HEXAGRAM FOR FOLLOWING
-4DD1 ; [*0DA8.0020.0002.4DD1] # HEXAGRAM FOR WORK ON THE DECAYED
-4DD2 ; [*0DA9.0020.0002.4DD2] # HEXAGRAM FOR APPROACH
-4DD3 ; [*0DAA.0020.0002.4DD3] # HEXAGRAM FOR CONTEMPLATION
-4DD4 ; [*0DAB.0020.0002.4DD4] # HEXAGRAM FOR BITING THROUGH
-4DD5 ; [*0DAC.0020.0002.4DD5] # HEXAGRAM FOR GRACE
-4DD6 ; [*0DAD.0020.0002.4DD6] # HEXAGRAM FOR SPLITTING APART
-4DD7 ; [*0DAE.0020.0002.4DD7] # HEXAGRAM FOR RETURN
-4DD8 ; [*0DAF.0020.0002.4DD8] # HEXAGRAM FOR INNOCENCE
-4DD9 ; [*0DB0.0020.0002.4DD9] # HEXAGRAM FOR GREAT TAMING
-4DDA ; [*0DB1.0020.0002.4DDA] # HEXAGRAM FOR MOUTH CORNERS
-4DDB ; [*0DB2.0020.0002.4DDB] # HEXAGRAM FOR GREAT PREPONDERANCE
-4DDC ; [*0DB3.0020.0002.4DDC] # HEXAGRAM FOR THE ABYSMAL WATER
-4DDD ; [*0DB4.0020.0002.4DDD] # HEXAGRAM FOR THE CLINGING FIRE
-4DDE ; [*0DB5.0020.0002.4DDE] # HEXAGRAM FOR INFLUENCE
-4DDF ; [*0DB6.0020.0002.4DDF] # HEXAGRAM FOR DURATION
-4DE0 ; [*0DB7.0020.0002.4DE0] # HEXAGRAM FOR RETREAT
-4DE1 ; [*0DB8.0020.0002.4DE1] # HEXAGRAM FOR GREAT POWER
-4DE2 ; [*0DB9.0020.0002.4DE2] # HEXAGRAM FOR PROGRESS
-4DE3 ; [*0DBA.0020.0002.4DE3] # HEXAGRAM FOR DARKENING OF THE LIGHT
-4DE4 ; [*0DBB.0020.0002.4DE4] # HEXAGRAM FOR THE FAMILY
-4DE5 ; [*0DBC.0020.0002.4DE5] # HEXAGRAM FOR OPPOSITION
-4DE6 ; [*0DBD.0020.0002.4DE6] # HEXAGRAM FOR OBSTRUCTION
-4DE7 ; [*0DBE.0020.0002.4DE7] # HEXAGRAM FOR DELIVERANCE
-4DE8 ; [*0DBF.0020.0002.4DE8] # HEXAGRAM FOR DECREASE
-4DE9 ; [*0DC0.0020.0002.4DE9] # HEXAGRAM FOR INCREASE
-4DEA ; [*0DC1.0020.0002.4DEA] # HEXAGRAM FOR BREAKTHROUGH
-4DEB ; [*0DC2.0020.0002.4DEB] # HEXAGRAM FOR COMING TO MEET
-4DEC ; [*0DC3.0020.0002.4DEC] # HEXAGRAM FOR GATHERING TOGETHER
-4DED ; [*0DC4.0020.0002.4DED] # HEXAGRAM FOR PUSHING UPWARD
-4DEE ; [*0DC5.0020.0002.4DEE] # HEXAGRAM FOR OPPRESSION
-4DEF ; [*0DC6.0020.0002.4DEF] # HEXAGRAM FOR THE WELL
-4DF0 ; [*0DC7.0020.0002.4DF0] # HEXAGRAM FOR REVOLUTION
-4DF1 ; [*0DC8.0020.0002.4DF1] # HEXAGRAM FOR THE CAULDRON
-4DF2 ; [*0DC9.0020.0002.4DF2] # HEXAGRAM FOR THE AROUSING THUNDER
-4DF3 ; [*0DCA.0020.0002.4DF3] # HEXAGRAM FOR THE KEEPING STILL MOUNTAIN
-4DF4 ; [*0DCB.0020.0002.4DF4] # HEXAGRAM FOR DEVELOPMENT
-4DF5 ; [*0DCC.0020.0002.4DF5] # HEXAGRAM FOR THE MARRYING MAIDEN
-4DF6 ; [*0DCD.0020.0002.4DF6] # HEXAGRAM FOR ABUNDANCE
-4DF7 ; [*0DCE.0020.0002.4DF7] # HEXAGRAM FOR THE WANDERER
-4DF8 ; [*0DCF.0020.0002.4DF8] # HEXAGRAM FOR THE GENTLE WIND
-4DF9 ; [*0DD0.0020.0002.4DF9] # HEXAGRAM FOR THE JOYOUS LAKE
-4DFA ; [*0DD1.0020.0002.4DFA] # HEXAGRAM FOR DISPERSION
-4DFB ; [*0DD2.0020.0002.4DFB] # HEXAGRAM FOR LIMITATION
-4DFC ; [*0DD3.0020.0002.4DFC] # HEXAGRAM FOR INNER TRUTH
-4DFD ; [*0DD4.0020.0002.4DFD] # HEXAGRAM FOR SMALL PREPONDERANCE
-4DFE ; [*0DD5.0020.0002.4DFE] # HEXAGRAM FOR AFTER COMPLETION
-4DFF ; [*0DD6.0020.0002.4DFF] # HEXAGRAM FOR BEFORE COMPLETION
-A490 ; [*0E2E.0020.0002.A490] # YI RADICAL QOT
-A491 ; [*0E2F.0020.0002.A491] # YI RADICAL LI
-A492 ; [*0E30.0020.0002.A492] # YI RADICAL KIT
-A493 ; [*0E31.0020.0002.A493] # YI RADICAL NYIP
-A494 ; [*0E32.0020.0002.A494] # YI RADICAL CYP
-A495 ; [*0E33.0020.0002.A495] # YI RADICAL SSI
-A496 ; [*0E34.0020.0002.A496] # YI RADICAL GGOP
-A497 ; [*0E35.0020.0002.A497] # YI RADICAL GEP
-A498 ; [*0E36.0020.0002.A498] # YI RADICAL MI
-A499 ; [*0E37.0020.0002.A499] # YI RADICAL HXIT
-A49A ; [*0E38.0020.0002.A49A] # YI RADICAL LYR
-A49B ; [*0E39.0020.0002.A49B] # YI RADICAL BBUT
-A49C ; [*0E3A.0020.0002.A49C] # YI RADICAL MOP
-A49D ; [*0E3B.0020.0002.A49D] # YI RADICAL YO
-A49E ; [*0E3C.0020.0002.A49E] # YI RADICAL PUT
-A49F ; [*0E3D.0020.0002.A49F] # YI RADICAL HXUO
-A4A0 ; [*0E3E.0020.0002.A4A0] # YI RADICAL TAT
-A4A1 ; [*0E3F.0020.0002.A4A1] # YI RADICAL GA
-A4A2 ; [*0E40.0020.0002.A4A2] # YI RADICAL ZUP
-A4A3 ; [*0E41.0020.0002.A4A3] # YI RADICAL CYT
-A4A4 ; [*0E42.0020.0002.A4A4] # YI RADICAL DDUR
-A4A5 ; [*0E43.0020.0002.A4A5] # YI RADICAL BUR
-A4A6 ; [*0E44.0020.0002.A4A6] # YI RADICAL GGUO
-A4A7 ; [*0E45.0020.0002.A4A7] # YI RADICAL NYOP
-A4A8 ; [*0E46.0020.0002.A4A8] # YI RADICAL TU
-A4A9 ; [*0E47.0020.0002.A4A9] # YI RADICAL OP
-A4AA ; [*0E48.0020.0002.A4AA] # YI RADICAL JJUT
-A4AB ; [*0E49.0020.0002.A4AB] # YI RADICAL ZOT
-A4AC ; [*0E4A.0020.0002.A4AC] # YI RADICAL PYT
-A4AD ; [*0E4B.0020.0002.A4AD] # YI RADICAL HMO
-A4AE ; [*0E4C.0020.0002.A4AE] # YI RADICAL YIT
-A4AF ; [*0E4D.0020.0002.A4AF] # YI RADICAL VUR
-A4B0 ; [*0E4E.0020.0002.A4B0] # YI RADICAL SHY
-A4B1 ; [*0E4F.0020.0002.A4B1] # YI RADICAL VEP
-A4B2 ; [*0E50.0020.0002.A4B2] # YI RADICAL ZA
-A4B3 ; [*0E51.0020.0002.A4B3] # YI RADICAL JO
-A4B4 ; [*0E52.0020.0002.A4B4] # YI RADICAL NZUP
-A4B5 ; [*0E53.0020.0002.A4B5] # YI RADICAL JJY
-A4B6 ; [*0E54.0020.0002.A4B6] # YI RADICAL GOT
-A4B7 ; [*0E55.0020.0002.A4B7] # YI RADICAL JJIE
-A4B8 ; [*0E56.0020.0002.A4B8] # YI RADICAL WO
-A4B9 ; [*0E57.0020.0002.A4B9] # YI RADICAL DU
-A4BA ; [*0E58.0020.0002.A4BA] # YI RADICAL SHUR
-A4BB ; [*0E59.0020.0002.A4BB] # YI RADICAL LIE
-A4BC ; [*0E5A.0020.0002.A4BC] # YI RADICAL CY
-A4BD ; [*0E5B.0020.0002.A4BD] # YI RADICAL CUOP
-A4BE ; [*0E5C.0020.0002.A4BE] # YI RADICAL CIP
-A4BF ; [*0E5D.0020.0002.A4BF] # YI RADICAL HXOP
-A4C0 ; [*0E5E.0020.0002.A4C0] # YI RADICAL SHAT
-A4C1 ; [*0E5F.0020.0002.A4C1] # YI RADICAL ZUR
-A4C2 ; [*0E60.0020.0002.A4C2] # YI RADICAL SHOP
-A4C3 ; [*0E61.0020.0002.A4C3] # YI RADICAL CHE
-A4C4 ; [*0E62.0020.0002.A4C4] # YI RADICAL ZZIET
-A4C5 ; [*0E63.0020.0002.A4C5] # YI RADICAL NBIE
-A4C6 ; [*0E64.0020.0002.A4C6] # YI RADICAL KE
+3190 ; [*14D4.0020.0002.3190] # IDEOGRAPHIC ANNOTATION LINKING MARK
+3191 ; [*14D5.0020.0002.3191] # IDEOGRAPHIC ANNOTATION REVERSE MARK
+31C0 ; [*14A9.0020.0002.31C0] # CJK STROKE T
+31C1 ; [*14AA.0020.0002.31C1] # CJK STROKE WG
+31C2 ; [*14AB.0020.0002.31C2] # CJK STROKE XG
+31C3 ; [*14AC.0020.0002.31C3] # CJK STROKE BXG
+31C4 ; [*14AD.0020.0002.31C4] # CJK STROKE SW
+31C5 ; [*14AE.0020.0002.31C5] # CJK STROKE HZZ
+31C6 ; [*14AF.0020.0002.31C6] # CJK STROKE HZG
+31C7 ; [*14B0.0020.0002.31C7] # CJK STROKE HP
+31C8 ; [*14B1.0020.0002.31C8] # CJK STROKE HZWG
+31C9 ; [*14B2.0020.0002.31C9] # CJK STROKE SZWG
+31CA ; [*14B3.0020.0002.31CA] # CJK STROKE HZT
+31CB ; [*14B4.0020.0002.31CB] # CJK STROKE HZZP
+31CC ; [*14B5.0020.0002.31CC] # CJK STROKE HPWG
+31CD ; [*14B6.0020.0002.31CD] # CJK STROKE HZW
+31CE ; [*14B7.0020.0002.31CE] # CJK STROKE HZZZ
+31CF ; [*14B8.0020.0002.31CF] # CJK STROKE N
+31D0 ; [*14B9.0020.0002.31D0] # CJK STROKE H
+31D1 ; [*14BA.0020.0002.31D1] # CJK STROKE S
+31D2 ; [*14BB.0020.0002.31D2] # CJK STROKE P
+31D3 ; [*14BC.0020.0002.31D3] # CJK STROKE SP
+31D4 ; [*14BD.0020.0002.31D4] # CJK STROKE D
+31D5 ; [*14BE.0020.0002.31D5] # CJK STROKE HZ
+31D6 ; [*14BF.0020.0002.31D6] # CJK STROKE HG
+31D7 ; [*14C0.0020.0002.31D7] # CJK STROKE SZ
+31D8 ; [*14C1.0020.0002.31D8] # CJK STROKE SWZ
+31D9 ; [*14C2.0020.0002.31D9] # CJK STROKE ST
+31DA ; [*14C3.0020.0002.31DA] # CJK STROKE SG
+31DB ; [*14C4.0020.0002.31DB] # CJK STROKE PD
+31DC ; [*14C5.0020.0002.31DC] # CJK STROKE PZ
+31DD ; [*14C6.0020.0002.31DD] # CJK STROKE TN
+31DE ; [*14C7.0020.0002.31DE] # CJK STROKE SZZ
+31DF ; [*14C8.0020.0002.31DF] # CJK STROKE SWG
+31E0 ; [*14C9.0020.0002.31E0] # CJK STROKE HXWG
+31E1 ; [*14CA.0020.0002.31E1] # CJK STROKE HZZZG
+31E2 ; [*14CB.0020.0002.31E2] # CJK STROKE PG
+31E3 ; [*14CC.0020.0002.31E3] # CJK STROKE Q
+327F ; [*14D6.0020.0002.327F] # KOREAN STANDARD SYMBOL
+4DC0 ; [*0DB1.0020.0002.4DC0] # HEXAGRAM FOR THE CREATIVE HEAVEN
+4DC1 ; [*0DB2.0020.0002.4DC1] # HEXAGRAM FOR THE RECEPTIVE EARTH
+4DC2 ; [*0DB3.0020.0002.4DC2] # HEXAGRAM FOR DIFFICULTY AT THE BEGINNING
+4DC3 ; [*0DB4.0020.0002.4DC3] # HEXAGRAM FOR YOUTHFUL FOLLY
+4DC4 ; [*0DB5.0020.0002.4DC4] # HEXAGRAM FOR WAITING
+4DC5 ; [*0DB6.0020.0002.4DC5] # HEXAGRAM FOR CONFLICT
+4DC6 ; [*0DB7.0020.0002.4DC6] # HEXAGRAM FOR THE ARMY
+4DC7 ; [*0DB8.0020.0002.4DC7] # HEXAGRAM FOR HOLDING TOGETHER
+4DC8 ; [*0DB9.0020.0002.4DC8] # HEXAGRAM FOR SMALL TAMING
+4DC9 ; [*0DBA.0020.0002.4DC9] # HEXAGRAM FOR TREADING
+4DCA ; [*0DBB.0020.0002.4DCA] # HEXAGRAM FOR PEACE
+4DCB ; [*0DBC.0020.0002.4DCB] # HEXAGRAM FOR STANDSTILL
+4DCC ; [*0DBD.0020.0002.4DCC] # HEXAGRAM FOR FELLOWSHIP
+4DCD ; [*0DBE.0020.0002.4DCD] # HEXAGRAM FOR GREAT POSSESSION
+4DCE ; [*0DBF.0020.0002.4DCE] # HEXAGRAM FOR MODESTY
+4DCF ; [*0DC0.0020.0002.4DCF] # HEXAGRAM FOR ENTHUSIASM
+4DD0 ; [*0DC1.0020.0002.4DD0] # HEXAGRAM FOR FOLLOWING
+4DD1 ; [*0DC2.0020.0002.4DD1] # HEXAGRAM FOR WORK ON THE DECAYED
+4DD2 ; [*0DC3.0020.0002.4DD2] # HEXAGRAM FOR APPROACH
+4DD3 ; [*0DC4.0020.0002.4DD3] # HEXAGRAM FOR CONTEMPLATION
+4DD4 ; [*0DC5.0020.0002.4DD4] # HEXAGRAM FOR BITING THROUGH
+4DD5 ; [*0DC6.0020.0002.4DD5] # HEXAGRAM FOR GRACE
+4DD6 ; [*0DC7.0020.0002.4DD6] # HEXAGRAM FOR SPLITTING APART
+4DD7 ; [*0DC8.0020.0002.4DD7] # HEXAGRAM FOR RETURN
+4DD8 ; [*0DC9.0020.0002.4DD8] # HEXAGRAM FOR INNOCENCE
+4DD9 ; [*0DCA.0020.0002.4DD9] # HEXAGRAM FOR GREAT TAMING
+4DDA ; [*0DCB.0020.0002.4DDA] # HEXAGRAM FOR MOUTH CORNERS
+4DDB ; [*0DCC.0020.0002.4DDB] # HEXAGRAM FOR GREAT PREPONDERANCE
+4DDC ; [*0DCD.0020.0002.4DDC] # HEXAGRAM FOR THE ABYSMAL WATER
+4DDD ; [*0DCE.0020.0002.4DDD] # HEXAGRAM FOR THE CLINGING FIRE
+4DDE ; [*0DCF.0020.0002.4DDE] # HEXAGRAM FOR INFLUENCE
+4DDF ; [*0DD0.0020.0002.4DDF] # HEXAGRAM FOR DURATION
+4DE0 ; [*0DD1.0020.0002.4DE0] # HEXAGRAM FOR RETREAT
+4DE1 ; [*0DD2.0020.0002.4DE1] # HEXAGRAM FOR GREAT POWER
+4DE2 ; [*0DD3.0020.0002.4DE2] # HEXAGRAM FOR PROGRESS
+4DE3 ; [*0DD4.0020.0002.4DE3] # HEXAGRAM FOR DARKENING OF THE LIGHT
+4DE4 ; [*0DD5.0020.0002.4DE4] # HEXAGRAM FOR THE FAMILY
+4DE5 ; [*0DD6.0020.0002.4DE5] # HEXAGRAM FOR OPPOSITION
+4DE6 ; [*0DD7.0020.0002.4DE6] # HEXAGRAM FOR OBSTRUCTION
+4DE7 ; [*0DD8.0020.0002.4DE7] # HEXAGRAM FOR DELIVERANCE
+4DE8 ; [*0DD9.0020.0002.4DE8] # HEXAGRAM FOR DECREASE
+4DE9 ; [*0DDA.0020.0002.4DE9] # HEXAGRAM FOR INCREASE
+4DEA ; [*0DDB.0020.0002.4DEA] # HEXAGRAM FOR BREAKTHROUGH
+4DEB ; [*0DDC.0020.0002.4DEB] # HEXAGRAM FOR COMING TO MEET
+4DEC ; [*0DDD.0020.0002.4DEC] # HEXAGRAM FOR GATHERING TOGETHER
+4DED ; [*0DDE.0020.0002.4DED] # HEXAGRAM FOR PUSHING UPWARD
+4DEE ; [*0DDF.0020.0002.4DEE] # HEXAGRAM FOR OPPRESSION
+4DEF ; [*0DE0.0020.0002.4DEF] # HEXAGRAM FOR THE WELL
+4DF0 ; [*0DE1.0020.0002.4DF0] # HEXAGRAM FOR REVOLUTION
+4DF1 ; [*0DE2.0020.0002.4DF1] # HEXAGRAM FOR THE CAULDRON
+4DF2 ; [*0DE3.0020.0002.4DF2] # HEXAGRAM FOR THE AROUSING THUNDER
+4DF3 ; [*0DE4.0020.0002.4DF3] # HEXAGRAM FOR THE KEEPING STILL MOUNTAIN
+4DF4 ; [*0DE5.0020.0002.4DF4] # HEXAGRAM FOR DEVELOPMENT
+4DF5 ; [*0DE6.0020.0002.4DF5] # HEXAGRAM FOR THE MARRYING MAIDEN
+4DF6 ; [*0DE7.0020.0002.4DF6] # HEXAGRAM FOR ABUNDANCE
+4DF7 ; [*0DE8.0020.0002.4DF7] # HEXAGRAM FOR THE WANDERER
+4DF8 ; [*0DE9.0020.0002.4DF8] # HEXAGRAM FOR THE GENTLE WIND
+4DF9 ; [*0DEA.0020.0002.4DF9] # HEXAGRAM FOR THE JOYOUS LAKE
+4DFA ; [*0DEB.0020.0002.4DFA] # HEXAGRAM FOR DISPERSION
+4DFB ; [*0DEC.0020.0002.4DFB] # HEXAGRAM FOR LIMITATION
+4DFC ; [*0DED.0020.0002.4DFC] # HEXAGRAM FOR INNER TRUTH
+4DFD ; [*0DEE.0020.0002.4DFD] # HEXAGRAM FOR SMALL PREPONDERANCE
+4DFE ; [*0DEF.0020.0002.4DFE] # HEXAGRAM FOR AFTER COMPLETION
+4DFF ; [*0DF0.0020.0002.4DFF] # HEXAGRAM FOR BEFORE COMPLETION
+A490 ; [*0E48.0020.0002.A490] # YI RADICAL QOT
+A491 ; [*0E49.0020.0002.A491] # YI RADICAL LI
+A492 ; [*0E4A.0020.0002.A492] # YI RADICAL KIT
+A493 ; [*0E4B.0020.0002.A493] # YI RADICAL NYIP
+A494 ; [*0E4C.0020.0002.A494] # YI RADICAL CYP
+A495 ; [*0E4D.0020.0002.A495] # YI RADICAL SSI
+A496 ; [*0E4E.0020.0002.A496] # YI RADICAL GGOP
+A497 ; [*0E4F.0020.0002.A497] # YI RADICAL GEP
+A498 ; [*0E50.0020.0002.A498] # YI RADICAL MI
+A499 ; [*0E51.0020.0002.A499] # YI RADICAL HXIT
+A49A ; [*0E52.0020.0002.A49A] # YI RADICAL LYR
+A49B ; [*0E53.0020.0002.A49B] # YI RADICAL BBUT
+A49C ; [*0E54.0020.0002.A49C] # YI RADICAL MOP
+A49D ; [*0E55.0020.0002.A49D] # YI RADICAL YO
+A49E ; [*0E56.0020.0002.A49E] # YI RADICAL PUT
+A49F ; [*0E57.0020.0002.A49F] # YI RADICAL HXUO
+A4A0 ; [*0E58.0020.0002.A4A0] # YI RADICAL TAT
+A4A1 ; [*0E59.0020.0002.A4A1] # YI RADICAL GA
+A4A2 ; [*0E5A.0020.0002.A4A2] # YI RADICAL ZUP
+A4A3 ; [*0E5B.0020.0002.A4A3] # YI RADICAL CYT
+A4A4 ; [*0E5C.0020.0002.A4A4] # YI RADICAL DDUR
+A4A5 ; [*0E5D.0020.0002.A4A5] # YI RADICAL BUR
+A4A6 ; [*0E5E.0020.0002.A4A6] # YI RADICAL GGUO
+A4A7 ; [*0E5F.0020.0002.A4A7] # YI RADICAL NYOP
+A4A8 ; [*0E60.0020.0002.A4A8] # YI RADICAL TU
+A4A9 ; [*0E61.0020.0002.A4A9] # YI RADICAL OP
+A4AA ; [*0E62.0020.0002.A4AA] # YI RADICAL JJUT
+A4AB ; [*0E63.0020.0002.A4AB] # YI RADICAL ZOT
+A4AC ; [*0E64.0020.0002.A4AC] # YI RADICAL PYT
+A4AD ; [*0E65.0020.0002.A4AD] # YI RADICAL HMO
+A4AE ; [*0E66.0020.0002.A4AE] # YI RADICAL YIT
+A4AF ; [*0E67.0020.0002.A4AF] # YI RADICAL VUR
+A4B0 ; [*0E68.0020.0002.A4B0] # YI RADICAL SHY
+A4B1 ; [*0E69.0020.0002.A4B1] # YI RADICAL VEP
+A4B2 ; [*0E6A.0020.0002.A4B2] # YI RADICAL ZA
+A4B3 ; [*0E6B.0020.0002.A4B3] # YI RADICAL JO
+A4B4 ; [*0E6C.0020.0002.A4B4] # YI RADICAL NZUP
+A4B5 ; [*0E6D.0020.0002.A4B5] # YI RADICAL JJY
+A4B6 ; [*0E6E.0020.0002.A4B6] # YI RADICAL GOT
+A4B7 ; [*0E6F.0020.0002.A4B7] # YI RADICAL JJIE
+A4B8 ; [*0E70.0020.0002.A4B8] # YI RADICAL WO
+A4B9 ; [*0E71.0020.0002.A4B9] # YI RADICAL DU
+A4BA ; [*0E72.0020.0002.A4BA] # YI RADICAL SHUR
+A4BB ; [*0E73.0020.0002.A4BB] # YI RADICAL LIE
+A4BC ; [*0E74.0020.0002.A4BC] # YI RADICAL CY
+A4BD ; [*0E75.0020.0002.A4BD] # YI RADICAL CUOP
+A4BE ; [*0E76.0020.0002.A4BE] # YI RADICAL CIP
+A4BF ; [*0E77.0020.0002.A4BF] # YI RADICAL HXOP
+A4C0 ; [*0E78.0020.0002.A4C0] # YI RADICAL SHAT
+A4C1 ; [*0E79.0020.0002.A4C1] # YI RADICAL ZUR
+A4C2 ; [*0E7A.0020.0002.A4C2] # YI RADICAL SHOP
+A4C3 ; [*0E7B.0020.0002.A4C3] # YI RADICAL CHE
+A4C4 ; [*0E7C.0020.0002.A4C4] # YI RADICAL ZZIET
+A4C5 ; [*0E7D.0020.0002.A4C5] # YI RADICAL NBIE
+A4C6 ; [*0E7E.0020.0002.A4C6] # YI RADICAL KE
A4FE ; [*022C.0020.0002.A4FE] # LISU PUNCTUATION COMMA
A4FF ; [*0280.0020.0002.A4FF] # LISU PUNCTUATION FULL STOP
A60D ; [*022D.0020.0002.A60D] # VAI COMMA
@@ -3799,12 +3799,12 @@ A828 ; [*04A8.0020.0002.A828] # SYLOTI NAGRI POETRY MARK-1
A829 ; [*04A9.0020.0002.A829] # SYLOTI NAGRI POETRY MARK-2
A82A ; [*04AA.0020.0002.A82A] # SYLOTI NAGRI POETRY MARK-3
A82B ; [*04AB.0020.0002.A82B] # SYLOTI NAGRI POETRY MARK-4
-A830 ; [*14CB.0020.0002.A830] # NORTH INDIC FRACTION ONE QUARTER
-A831 ; [*14CC.0020.0002.A831] # NORTH INDIC FRACTION ONE HALF
-A832 ; [*14CD.0020.0002.A832] # NORTH INDIC FRACTION THREE QUARTERS
-A833 ; [*14CE.0020.0002.A833] # NORTH INDIC FRACTION ONE SIXTEENTH
-A834 ; [*14CF.0020.0002.A834] # NORTH INDIC FRACTION ONE EIGHTH
-A835 ; [*14D0.0020.0002.A835] # NORTH INDIC FRACTION THREE SIXTEENTHS
+A830 ; [*14E5.0020.0002.A830] # NORTH INDIC FRACTION ONE QUARTER
+A831 ; [*14E6.0020.0002.A831] # NORTH INDIC FRACTION ONE HALF
+A832 ; [*14E7.0020.0002.A832] # NORTH INDIC FRACTION THREE QUARTERS
+A833 ; [*14E8.0020.0002.A833] # NORTH INDIC FRACTION ONE SIXTEENTH
+A834 ; [*14E9.0020.0002.A834] # NORTH INDIC FRACTION ONE EIGHTH
+A835 ; [*14EA.0020.0002.A835] # NORTH INDIC FRACTION THREE SIXTEENTHS
A836 ; [*04AC.0020.0002.A836] # NORTH INDIC QUARTER MARK
A837 ; [*04AD.0020.0002.A837] # NORTH INDIC PLACEHOLDER MARK
A839 ; [*04AE.0020.0002.A839] # NORTH INDIC QUANTITY MARK
@@ -3900,7 +3900,7 @@ FE23 ; [.0000.0000.0000.FE23] # COMBINING DOUBLE TILDE RIGHT HALF
FE24 ; [.0000.0000.0000.FE24] # COMBINING MACRON LEFT HALF
FE25 ; [.0000.0000.0000.FE25] # COMBINING MACRON RIGHT HALF
FE26 ; [.0000.0000.0000.FE26] # COMBINING CONJOINING MACRON
-FE30 ; [*0273.0020.0016.FE30][*0273.0020.0016.FE30] # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE30 ; [*0273.0020.0016.FE30][*0273.0020.001F.FE30] # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
FE31 ; [*0217.0020.0016.FE31] # PRESENTATION FORM FOR VERTICAL EM DASH
FE32 ; [*0216.0020.0016.FE32] # PRESENTATION FORM FOR VERTICAL EN DASH
FE33 ; [*020C.0020.0016.FE33] # PRESENTATION FORM FOR VERTICAL LOW LINE
@@ -4006,196 +4006,196 @@ FFEB ; [*0523.0020.0012.FFEB] # HALFWIDTH RIGHTWARDS ARROW
FFEC ; [*0525.0020.0012.FFEC] # HALFWIDTH DOWNWARDS ARROW
FFED ; [*0837.0020.0012.FFED] # HALFWIDTH BLACK SQUARE
FFEE ; [*0862.0020.0012.FFEE] # HALFWIDTH WHITE CIRCLE
-FFFC ; [*14BD.0020.0002.FFFC] # OBJECT REPLACEMENT CHARACTER
-FFFD ; [*14BE.0020.0002.FFFD] # REPLACEMENT CHARACTER
+FFFC ; [*14D7.0020.0002.FFFC] # OBJECT REPLACEMENT CHARACTER
+FFFD ; [*14D8.0020.0002.FFFD] # REPLACEMENT CHARACTER
10100 ; [*02E0.0020.0002.10100] # AEGEAN WORD SEPARATOR LINE
10101 ; [*02E1.0020.0002.10101] # AEGEAN WORD SEPARATOR DOT
10102 ; [*02E2.0020.0002.10102] # AEGEAN CHECK MARK
-10110 ; [*1504.0020.0002.10110] # AEGEAN NUMBER TEN
-10111 ; [*1505.0020.0002.10111] # AEGEAN NUMBER TWENTY
-10112 ; [*1506.0020.0002.10112] # AEGEAN NUMBER THIRTY
-10113 ; [*1507.0020.0002.10113] # AEGEAN NUMBER FORTY
-10114 ; [*1508.0020.0002.10114] # AEGEAN NUMBER FIFTY
-10115 ; [*1509.0020.0002.10115] # AEGEAN NUMBER SIXTY
-10116 ; [*150A.0020.0002.10116] # AEGEAN NUMBER SEVENTY
-10117 ; [*150B.0020.0002.10117] # AEGEAN NUMBER EIGHTY
-10118 ; [*150C.0020.0002.10118] # AEGEAN NUMBER NINETY
-10119 ; [*150D.0020.0002.10119] # AEGEAN NUMBER ONE HUNDRED
-1011A ; [*150E.0020.0002.1011A] # AEGEAN NUMBER TWO HUNDRED
-1011B ; [*150F.0020.0002.1011B] # AEGEAN NUMBER THREE HUNDRED
-1011C ; [*1510.0020.0002.1011C] # AEGEAN NUMBER FOUR HUNDRED
-1011D ; [*1511.0020.0002.1011D] # AEGEAN NUMBER FIVE HUNDRED
-1011E ; [*1512.0020.0002.1011E] # AEGEAN NUMBER SIX HUNDRED
-1011F ; [*1513.0020.0002.1011F] # AEGEAN NUMBER SEVEN HUNDRED
-10120 ; [*1514.0020.0002.10120] # AEGEAN NUMBER EIGHT HUNDRED
-10121 ; [*1515.0020.0002.10121] # AEGEAN NUMBER NINE HUNDRED
-10122 ; [*1516.0020.0002.10122] # AEGEAN NUMBER ONE THOUSAND
-10123 ; [*1517.0020.0002.10123] # AEGEAN NUMBER TWO THOUSAND
-10124 ; [*1518.0020.0002.10124] # AEGEAN NUMBER THREE THOUSAND
-10125 ; [*1519.0020.0002.10125] # AEGEAN NUMBER FOUR THOUSAND
-10126 ; [*151A.0020.0002.10126] # AEGEAN NUMBER FIVE THOUSAND
-10127 ; [*151B.0020.0002.10127] # AEGEAN NUMBER SIX THOUSAND
-10128 ; [*151C.0020.0002.10128] # AEGEAN NUMBER SEVEN THOUSAND
-10129 ; [*151D.0020.0002.10129] # AEGEAN NUMBER EIGHT THOUSAND
-1012A ; [*151E.0020.0002.1012A] # AEGEAN NUMBER NINE THOUSAND
-1012B ; [*151F.0020.0002.1012B] # AEGEAN NUMBER TEN THOUSAND
-1012C ; [*1520.0020.0002.1012C] # AEGEAN NUMBER TWENTY THOUSAND
-1012D ; [*1521.0020.0002.1012D] # AEGEAN NUMBER THIRTY THOUSAND
-1012E ; [*1522.0020.0002.1012E] # AEGEAN NUMBER FORTY THOUSAND
-1012F ; [*1523.0020.0002.1012F] # AEGEAN NUMBER FIFTY THOUSAND
-10130 ; [*1524.0020.0002.10130] # AEGEAN NUMBER SIXTY THOUSAND
-10131 ; [*1525.0020.0002.10131] # AEGEAN NUMBER SEVENTY THOUSAND
-10132 ; [*1526.0020.0002.10132] # AEGEAN NUMBER EIGHTY THOUSAND
-10133 ; [*1527.0020.0002.10133] # AEGEAN NUMBER NINETY THOUSAND
-10137 ; [*0E65.0020.0002.10137] # AEGEAN WEIGHT BASE UNIT
-10138 ; [*0E66.0020.0002.10138] # AEGEAN WEIGHT FIRST SUBUNIT
-10139 ; [*0E67.0020.0002.10139] # AEGEAN WEIGHT SECOND SUBUNIT
-1013A ; [*0E68.0020.0002.1013A] # AEGEAN WEIGHT THIRD SUBUNIT
-1013B ; [*0E69.0020.0002.1013B] # AEGEAN WEIGHT FOURTH SUBUNIT
-1013C ; [*0E6A.0020.0002.1013C] # AEGEAN DRY MEASURE FIRST SUBUNIT
-1013D ; [*0E6B.0020.0002.1013D] # AEGEAN LIQUID MEASURE FIRST SUBUNIT
-1013E ; [*0E6C.0020.0002.1013E] # AEGEAN MEASURE SECOND SUBUNIT
-1013F ; [*0E6D.0020.0002.1013F] # AEGEAN MEASURE THIRD SUBUNIT
-10140 ; [*1528.0020.0002.10140] # GREEK ACROPHONIC ATTIC ONE QUARTER
-10141 ; [*1529.0020.0002.10141] # GREEK ACROPHONIC ATTIC ONE HALF
-10144 ; [*152A.0020.0002.10144] # GREEK ACROPHONIC ATTIC FIFTY
-10145 ; [*152B.0020.0002.10145] # GREEK ACROPHONIC ATTIC FIVE HUNDRED
-10146 ; [*152C.0020.0002.10146] # GREEK ACROPHONIC ATTIC FIVE THOUSAND
-10147 ; [*152D.0020.0002.10147] # GREEK ACROPHONIC ATTIC FIFTY THOUSAND
-10149 ; [*152E.0020.0002.10149] # GREEK ACROPHONIC ATTIC TEN TALENTS
-1014A ; [*152F.0020.0002.1014A] # GREEK ACROPHONIC ATTIC FIFTY TALENTS
-1014B ; [*1530.0020.0002.1014B] # GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS
-1014C ; [*1531.0020.0002.1014C] # GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS
-1014D ; [*1532.0020.0002.1014D] # GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS
-1014E ; [*1533.0020.0002.1014E] # GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS
-10150 ; [*1534.0020.0002.10150] # GREEK ACROPHONIC ATTIC TEN STATERS
-10151 ; [*1535.0020.0002.10151] # GREEK ACROPHONIC ATTIC FIFTY STATERS
-10152 ; [*1536.0020.0002.10152] # GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS
-10153 ; [*1537.0020.0002.10153] # GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS
-10154 ; [*1538.0020.0002.10154] # GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS
-10155 ; [*1539.0020.0002.10155] # GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS
-10156 ; [*153A.0020.0002.10156] # GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS
-10157 ; [*153B.0020.0002.10157] # GREEK ACROPHONIC ATTIC TEN MNAS
-10160 ; [*153C.0020.0002.10160] # GREEK ACROPHONIC TROEZENIAN TEN
-10161 ; [*153D.0020.0002.10161] # GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM
-10162 ; [*153E.0020.0002.10162] # GREEK ACROPHONIC HERMIONIAN TEN
-10163 ; [*153F.0020.0002.10163] # GREEK ACROPHONIC MESSENIAN TEN
-10164 ; [*1540.0020.0002.10164] # GREEK ACROPHONIC THESPIAN TEN
-10165 ; [*1541.0020.0002.10165] # GREEK ACROPHONIC THESPIAN THIRTY
-10166 ; [*1542.0020.0002.10166] # GREEK ACROPHONIC TROEZENIAN FIFTY
-10167 ; [*1543.0020.0002.10167] # GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM
-10168 ; [*1544.0020.0002.10168] # GREEK ACROPHONIC HERMIONIAN FIFTY
-10169 ; [*1545.0020.0002.10169] # GREEK ACROPHONIC THESPIAN FIFTY
-1016A ; [*1546.0020.0002.1016A] # GREEK ACROPHONIC THESPIAN ONE HUNDRED
-1016B ; [*1547.0020.0002.1016B] # GREEK ACROPHONIC THESPIAN THREE HUNDRED
-1016C ; [*1548.0020.0002.1016C] # GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED
-1016D ; [*1549.0020.0002.1016D] # GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED
-1016E ; [*154A.0020.0002.1016E] # GREEK ACROPHONIC THESPIAN FIVE HUNDRED
-1016F ; [*154B.0020.0002.1016F] # GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED
-10170 ; [*154C.0020.0002.10170] # GREEK ACROPHONIC NAXIAN FIVE HUNDRED
-10171 ; [*154D.0020.0002.10171] # GREEK ACROPHONIC THESPIAN ONE THOUSAND
-10172 ; [*154E.0020.0002.10172] # GREEK ACROPHONIC THESPIAN FIVE THOUSAND
-10174 ; [*154F.0020.0002.10174] # GREEK ACROPHONIC STRATIAN FIFTY MNAS
-10175 ; [*1550.0020.0002.10175] # GREEK ONE HALF SIGN
-10176 ; [*1551.0020.0002.10176] # GREEK ONE HALF SIGN ALTERNATE FORM
-10177 ; [*1552.0020.0002.10177] # GREEK TWO THIRDS SIGN
-10178 ; [*1553.0020.0002.10178] # GREEK THREE QUARTERS SIGN
-10179 ; [*0E6E.0020.0002.10179] # GREEK YEAR SIGN
-1017A ; [*0E6F.0020.0002.1017A] # GREEK TALENT SIGN
-1017B ; [*0E70.0020.0002.1017B] # GREEK DRACHMA SIGN
-1017C ; [*0E71.0020.0002.1017C] # GREEK OBOL SIGN
-1017D ; [*0E72.0020.0002.1017D] # GREEK TWO OBOLS SIGN
-1017E ; [*0E73.0020.0002.1017E] # GREEK THREE OBOLS SIGN
-1017F ; [*0E74.0020.0002.1017F] # GREEK FOUR OBOLS SIGN
-10180 ; [*0E75.0020.0002.10180] # GREEK FIVE OBOLS SIGN
-10181 ; [*0E76.0020.0002.10181] # GREEK METRETES SIGN
-10182 ; [*0E77.0020.0002.10182] # GREEK KYATHOS BASE SIGN
-10183 ; [*0E78.0020.0002.10183] # GREEK LITRA SIGN
-10184 ; [*0E79.0020.0002.10184] # GREEK OUNKIA SIGN
-10185 ; [*0E7A.0020.0002.10185] # GREEK XESTES SIGN
-10186 ; [*0E7B.0020.0002.10186] # GREEK ARTABE SIGN
-10187 ; [*0E7C.0020.0002.10187] # GREEK AROURA SIGN
-10188 ; [*0E7D.0020.0002.10188] # GREEK GRAMMA SIGN
-10189 ; [*0E7E.0020.0002.10189] # GREEK TRYBLION BASE SIGN
-10190 ; [*0E7F.0020.0002.10190] # ROMAN SEXTANS SIGN
-10191 ; [*0E80.0020.0002.10191] # ROMAN UNCIA SIGN
-10192 ; [*0E81.0020.0002.10192] # ROMAN SEMUNCIA SIGN
-10193 ; [*0E82.0020.0002.10193] # ROMAN SEXTULA SIGN
-10194 ; [*0E83.0020.0002.10194] # ROMAN DIMIDIA SEXTULA SIGN
-10195 ; [*0E84.0020.0002.10195] # ROMAN SILIQUA SIGN
-10196 ; [*0E85.0020.0002.10196] # ROMAN DENARIUS SIGN
-10197 ; [*0E86.0020.0002.10197] # ROMAN QUINARIUS SIGN
-10198 ; [*0E87.0020.0002.10198] # ROMAN SESTERTIUS SIGN
-10199 ; [*0E88.0020.0002.10199] # ROMAN DUPONDIUS SIGN
-1019A ; [*0E89.0020.0002.1019A] # ROMAN AS SIGN
-1019B ; [*0E8A.0020.0002.1019B] # ROMAN CENTURIAL SIGN
-101D0 ; [*0E8B.0020.0002.101D0] # PHAISTOS DISC SIGN PEDESTRIAN
-101D1 ; [*0E8C.0020.0002.101D1] # PHAISTOS DISC SIGN PLUMED HEAD
-101D2 ; [*0E8D.0020.0002.101D2] # PHAISTOS DISC SIGN TATTOOED HEAD
-101D3 ; [*0E8E.0020.0002.101D3] # PHAISTOS DISC SIGN CAPTIVE
-101D4 ; [*0E8F.0020.0002.101D4] # PHAISTOS DISC SIGN CHILD
-101D5 ; [*0E90.0020.0002.101D5] # PHAISTOS DISC SIGN WOMAN
-101D6 ; [*0E91.0020.0002.101D6] # PHAISTOS DISC SIGN HELMET
-101D7 ; [*0E92.0020.0002.101D7] # PHAISTOS DISC SIGN GAUNTLET
-101D8 ; [*0E93.0020.0002.101D8] # PHAISTOS DISC SIGN TIARA
-101D9 ; [*0E94.0020.0002.101D9] # PHAISTOS DISC SIGN ARROW
-101DA ; [*0E95.0020.0002.101DA] # PHAISTOS DISC SIGN BOW
-101DB ; [*0E96.0020.0002.101DB] # PHAISTOS DISC SIGN SHIELD
-101DC ; [*0E97.0020.0002.101DC] # PHAISTOS DISC SIGN CLUB
-101DD ; [*0E98.0020.0002.101DD] # PHAISTOS DISC SIGN MANACLES
-101DE ; [*0E99.0020.0002.101DE] # PHAISTOS DISC SIGN MATTOCK
-101DF ; [*0E9A.0020.0002.101DF] # PHAISTOS DISC SIGN SAW
-101E0 ; [*0E9B.0020.0002.101E0] # PHAISTOS DISC SIGN LID
-101E1 ; [*0E9C.0020.0002.101E1] # PHAISTOS DISC SIGN BOOMERANG
-101E2 ; [*0E9D.0020.0002.101E2] # PHAISTOS DISC SIGN CARPENTRY PLANE
-101E3 ; [*0E9E.0020.0002.101E3] # PHAISTOS DISC SIGN DOLIUM
-101E4 ; [*0E9F.0020.0002.101E4] # PHAISTOS DISC SIGN COMB
-101E5 ; [*0EA0.0020.0002.101E5] # PHAISTOS DISC SIGN SLING
-101E6 ; [*0EA1.0020.0002.101E6] # PHAISTOS DISC SIGN COLUMN
-101E7 ; [*0EA2.0020.0002.101E7] # PHAISTOS DISC SIGN BEEHIVE
-101E8 ; [*0EA3.0020.0002.101E8] # PHAISTOS DISC SIGN SHIP
-101E9 ; [*0EA4.0020.0002.101E9] # PHAISTOS DISC SIGN HORN
-101EA ; [*0EA5.0020.0002.101EA] # PHAISTOS DISC SIGN HIDE
-101EB ; [*0EA6.0020.0002.101EB] # PHAISTOS DISC SIGN BULLS LEG
-101EC ; [*0EA7.0020.0002.101EC] # PHAISTOS DISC SIGN CAT
-101ED ; [*0EA8.0020.0002.101ED] # PHAISTOS DISC SIGN RAM
-101EE ; [*0EA9.0020.0002.101EE] # PHAISTOS DISC SIGN EAGLE
-101EF ; [*0EAA.0020.0002.101EF] # PHAISTOS DISC SIGN DOVE
-101F0 ; [*0EAB.0020.0002.101F0] # PHAISTOS DISC SIGN TUNNY
-101F1 ; [*0EAC.0020.0002.101F1] # PHAISTOS DISC SIGN BEE
-101F2 ; [*0EAD.0020.0002.101F2] # PHAISTOS DISC SIGN PLANE TREE
-101F3 ; [*0EAE.0020.0002.101F3] # PHAISTOS DISC SIGN VINE
-101F4 ; [*0EAF.0020.0002.101F4] # PHAISTOS DISC SIGN PAPYRUS
-101F5 ; [*0EB0.0020.0002.101F5] # PHAISTOS DISC SIGN ROSETTE
-101F6 ; [*0EB1.0020.0002.101F6] # PHAISTOS DISC SIGN LILY
-101F7 ; [*0EB2.0020.0002.101F7] # PHAISTOS DISC SIGN OX BACK
-101F8 ; [*0EB3.0020.0002.101F8] # PHAISTOS DISC SIGN FLUTE
-101F9 ; [*0EB4.0020.0002.101F9] # PHAISTOS DISC SIGN GRATER
-101FA ; [*0EB5.0020.0002.101FA] # PHAISTOS DISC SIGN STRAINER
-101FB ; [*0EB6.0020.0002.101FB] # PHAISTOS DISC SIGN SMALL AXE
-101FC ; [*0EB7.0020.0002.101FC] # PHAISTOS DISC SIGN WAVY BAND
-10322 ; [*1502.0020.0002.10322] # OLD ITALIC NUMERAL TEN
-10323 ; [*1503.0020.0002.10323] # OLD ITALIC NUMERAL FIFTY
+10110 ; [*151E.0020.0002.10110] # AEGEAN NUMBER TEN
+10111 ; [*151F.0020.0002.10111] # AEGEAN NUMBER TWENTY
+10112 ; [*1520.0020.0002.10112] # AEGEAN NUMBER THIRTY
+10113 ; [*1521.0020.0002.10113] # AEGEAN NUMBER FORTY
+10114 ; [*1522.0020.0002.10114] # AEGEAN NUMBER FIFTY
+10115 ; [*1523.0020.0002.10115] # AEGEAN NUMBER SIXTY
+10116 ; [*1524.0020.0002.10116] # AEGEAN NUMBER SEVENTY
+10117 ; [*1525.0020.0002.10117] # AEGEAN NUMBER EIGHTY
+10118 ; [*1526.0020.0002.10118] # AEGEAN NUMBER NINETY
+10119 ; [*1527.0020.0002.10119] # AEGEAN NUMBER ONE HUNDRED
+1011A ; [*1528.0020.0002.1011A] # AEGEAN NUMBER TWO HUNDRED
+1011B ; [*1529.0020.0002.1011B] # AEGEAN NUMBER THREE HUNDRED
+1011C ; [*152A.0020.0002.1011C] # AEGEAN NUMBER FOUR HUNDRED
+1011D ; [*152B.0020.0002.1011D] # AEGEAN NUMBER FIVE HUNDRED
+1011E ; [*152C.0020.0002.1011E] # AEGEAN NUMBER SIX HUNDRED
+1011F ; [*152D.0020.0002.1011F] # AEGEAN NUMBER SEVEN HUNDRED
+10120 ; [*152E.0020.0002.10120] # AEGEAN NUMBER EIGHT HUNDRED
+10121 ; [*152F.0020.0002.10121] # AEGEAN NUMBER NINE HUNDRED
+10122 ; [*1530.0020.0002.10122] # AEGEAN NUMBER ONE THOUSAND
+10123 ; [*1531.0020.0002.10123] # AEGEAN NUMBER TWO THOUSAND
+10124 ; [*1532.0020.0002.10124] # AEGEAN NUMBER THREE THOUSAND
+10125 ; [*1533.0020.0002.10125] # AEGEAN NUMBER FOUR THOUSAND
+10126 ; [*1534.0020.0002.10126] # AEGEAN NUMBER FIVE THOUSAND
+10127 ; [*1535.0020.0002.10127] # AEGEAN NUMBER SIX THOUSAND
+10128 ; [*1536.0020.0002.10128] # AEGEAN NUMBER SEVEN THOUSAND
+10129 ; [*1537.0020.0002.10129] # AEGEAN NUMBER EIGHT THOUSAND
+1012A ; [*1538.0020.0002.1012A] # AEGEAN NUMBER NINE THOUSAND
+1012B ; [*1539.0020.0002.1012B] # AEGEAN NUMBER TEN THOUSAND
+1012C ; [*153A.0020.0002.1012C] # AEGEAN NUMBER TWENTY THOUSAND
+1012D ; [*153B.0020.0002.1012D] # AEGEAN NUMBER THIRTY THOUSAND
+1012E ; [*153C.0020.0002.1012E] # AEGEAN NUMBER FORTY THOUSAND
+1012F ; [*153D.0020.0002.1012F] # AEGEAN NUMBER FIFTY THOUSAND
+10130 ; [*153E.0020.0002.10130] # AEGEAN NUMBER SIXTY THOUSAND
+10131 ; [*153F.0020.0002.10131] # AEGEAN NUMBER SEVENTY THOUSAND
+10132 ; [*1540.0020.0002.10132] # AEGEAN NUMBER EIGHTY THOUSAND
+10133 ; [*1541.0020.0002.10133] # AEGEAN NUMBER NINETY THOUSAND
+10137 ; [*0E7F.0020.0002.10137] # AEGEAN WEIGHT BASE UNIT
+10138 ; [*0E80.0020.0002.10138] # AEGEAN WEIGHT FIRST SUBUNIT
+10139 ; [*0E81.0020.0002.10139] # AEGEAN WEIGHT SECOND SUBUNIT
+1013A ; [*0E82.0020.0002.1013A] # AEGEAN WEIGHT THIRD SUBUNIT
+1013B ; [*0E83.0020.0002.1013B] # AEGEAN WEIGHT FOURTH SUBUNIT
+1013C ; [*0E84.0020.0002.1013C] # AEGEAN DRY MEASURE FIRST SUBUNIT
+1013D ; [*0E85.0020.0002.1013D] # AEGEAN LIQUID MEASURE FIRST SUBUNIT
+1013E ; [*0E86.0020.0002.1013E] # AEGEAN MEASURE SECOND SUBUNIT
+1013F ; [*0E87.0020.0002.1013F] # AEGEAN MEASURE THIRD SUBUNIT
+10140 ; [*1542.0020.0002.10140] # GREEK ACROPHONIC ATTIC ONE QUARTER
+10141 ; [*1543.0020.0002.10141] # GREEK ACROPHONIC ATTIC ONE HALF
+10144 ; [*1544.0020.0002.10144] # GREEK ACROPHONIC ATTIC FIFTY
+10145 ; [*1545.0020.0002.10145] # GREEK ACROPHONIC ATTIC FIVE HUNDRED
+10146 ; [*1546.0020.0002.10146] # GREEK ACROPHONIC ATTIC FIVE THOUSAND
+10147 ; [*1547.0020.0002.10147] # GREEK ACROPHONIC ATTIC FIFTY THOUSAND
+10149 ; [*1548.0020.0002.10149] # GREEK ACROPHONIC ATTIC TEN TALENTS
+1014A ; [*1549.0020.0002.1014A] # GREEK ACROPHONIC ATTIC FIFTY TALENTS
+1014B ; [*154A.0020.0002.1014B] # GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS
+1014C ; [*154B.0020.0002.1014C] # GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS
+1014D ; [*154C.0020.0002.1014D] # GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS
+1014E ; [*154D.0020.0002.1014E] # GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS
+10150 ; [*154E.0020.0002.10150] # GREEK ACROPHONIC ATTIC TEN STATERS
+10151 ; [*154F.0020.0002.10151] # GREEK ACROPHONIC ATTIC FIFTY STATERS
+10152 ; [*1550.0020.0002.10152] # GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS
+10153 ; [*1551.0020.0002.10153] # GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS
+10154 ; [*1552.0020.0002.10154] # GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS
+10155 ; [*1553.0020.0002.10155] # GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS
+10156 ; [*1554.0020.0002.10156] # GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS
+10157 ; [*1555.0020.0002.10157] # GREEK ACROPHONIC ATTIC TEN MNAS
+10160 ; [*1556.0020.0002.10160] # GREEK ACROPHONIC TROEZENIAN TEN
+10161 ; [*1557.0020.0002.10161] # GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM
+10162 ; [*1558.0020.0002.10162] # GREEK ACROPHONIC HERMIONIAN TEN
+10163 ; [*1559.0020.0002.10163] # GREEK ACROPHONIC MESSENIAN TEN
+10164 ; [*155A.0020.0002.10164] # GREEK ACROPHONIC THESPIAN TEN
+10165 ; [*155B.0020.0002.10165] # GREEK ACROPHONIC THESPIAN THIRTY
+10166 ; [*155C.0020.0002.10166] # GREEK ACROPHONIC TROEZENIAN FIFTY
+10167 ; [*155D.0020.0002.10167] # GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM
+10168 ; [*155E.0020.0002.10168] # GREEK ACROPHONIC HERMIONIAN FIFTY
+10169 ; [*155F.0020.0002.10169] # GREEK ACROPHONIC THESPIAN FIFTY
+1016A ; [*1560.0020.0002.1016A] # GREEK ACROPHONIC THESPIAN ONE HUNDRED
+1016B ; [*1561.0020.0002.1016B] # GREEK ACROPHONIC THESPIAN THREE HUNDRED
+1016C ; [*1562.0020.0002.1016C] # GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED
+1016D ; [*1563.0020.0002.1016D] # GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED
+1016E ; [*1564.0020.0002.1016E] # GREEK ACROPHONIC THESPIAN FIVE HUNDRED
+1016F ; [*1565.0020.0002.1016F] # GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED
+10170 ; [*1566.0020.0002.10170] # GREEK ACROPHONIC NAXIAN FIVE HUNDRED
+10171 ; [*1567.0020.0002.10171] # GREEK ACROPHONIC THESPIAN ONE THOUSAND
+10172 ; [*1568.0020.0002.10172] # GREEK ACROPHONIC THESPIAN FIVE THOUSAND
+10174 ; [*1569.0020.0002.10174] # GREEK ACROPHONIC STRATIAN FIFTY MNAS
+10175 ; [*156A.0020.0002.10175] # GREEK ONE HALF SIGN
+10176 ; [*156B.0020.0002.10176] # GREEK ONE HALF SIGN ALTERNATE FORM
+10177 ; [*156C.0020.0002.10177] # GREEK TWO THIRDS SIGN
+10178 ; [*156D.0020.0002.10178] # GREEK THREE QUARTERS SIGN
+10179 ; [*0E88.0020.0002.10179] # GREEK YEAR SIGN
+1017A ; [*0E89.0020.0002.1017A] # GREEK TALENT SIGN
+1017B ; [*0E8A.0020.0002.1017B] # GREEK DRACHMA SIGN
+1017C ; [*0E8B.0020.0002.1017C] # GREEK OBOL SIGN
+1017D ; [*0E8C.0020.0002.1017D] # GREEK TWO OBOLS SIGN
+1017E ; [*0E8D.0020.0002.1017E] # GREEK THREE OBOLS SIGN
+1017F ; [*0E8E.0020.0002.1017F] # GREEK FOUR OBOLS SIGN
+10180 ; [*0E8F.0020.0002.10180] # GREEK FIVE OBOLS SIGN
+10181 ; [*0E90.0020.0002.10181] # GREEK METRETES SIGN
+10182 ; [*0E91.0020.0002.10182] # GREEK KYATHOS BASE SIGN
+10183 ; [*0E92.0020.0002.10183] # GREEK LITRA SIGN
+10184 ; [*0E93.0020.0002.10184] # GREEK OUNKIA SIGN
+10185 ; [*0E94.0020.0002.10185] # GREEK XESTES SIGN
+10186 ; [*0E95.0020.0002.10186] # GREEK ARTABE SIGN
+10187 ; [*0E96.0020.0002.10187] # GREEK AROURA SIGN
+10188 ; [*0E97.0020.0002.10188] # GREEK GRAMMA SIGN
+10189 ; [*0E98.0020.0002.10189] # GREEK TRYBLION BASE SIGN
+10190 ; [*0E99.0020.0002.10190] # ROMAN SEXTANS SIGN
+10191 ; [*0E9A.0020.0002.10191] # ROMAN UNCIA SIGN
+10192 ; [*0E9B.0020.0002.10192] # ROMAN SEMUNCIA SIGN
+10193 ; [*0E9C.0020.0002.10193] # ROMAN SEXTULA SIGN
+10194 ; [*0E9D.0020.0002.10194] # ROMAN DIMIDIA SEXTULA SIGN
+10195 ; [*0E9E.0020.0002.10195] # ROMAN SILIQUA SIGN
+10196 ; [*0E9F.0020.0002.10196] # ROMAN DENARIUS SIGN
+10197 ; [*0EA0.0020.0002.10197] # ROMAN QUINARIUS SIGN
+10198 ; [*0EA1.0020.0002.10198] # ROMAN SESTERTIUS SIGN
+10199 ; [*0EA2.0020.0002.10199] # ROMAN DUPONDIUS SIGN
+1019A ; [*0EA3.0020.0002.1019A] # ROMAN AS SIGN
+1019B ; [*0EA4.0020.0002.1019B] # ROMAN CENTURIAL SIGN
+101D0 ; [*0EA5.0020.0002.101D0] # PHAISTOS DISC SIGN PEDESTRIAN
+101D1 ; [*0EA6.0020.0002.101D1] # PHAISTOS DISC SIGN PLUMED HEAD
+101D2 ; [*0EA7.0020.0002.101D2] # PHAISTOS DISC SIGN TATTOOED HEAD
+101D3 ; [*0EA8.0020.0002.101D3] # PHAISTOS DISC SIGN CAPTIVE
+101D4 ; [*0EA9.0020.0002.101D4] # PHAISTOS DISC SIGN CHILD
+101D5 ; [*0EAA.0020.0002.101D5] # PHAISTOS DISC SIGN WOMAN
+101D6 ; [*0EAB.0020.0002.101D6] # PHAISTOS DISC SIGN HELMET
+101D7 ; [*0EAC.0020.0002.101D7] # PHAISTOS DISC SIGN GAUNTLET
+101D8 ; [*0EAD.0020.0002.101D8] # PHAISTOS DISC SIGN TIARA
+101D9 ; [*0EAE.0020.0002.101D9] # PHAISTOS DISC SIGN ARROW
+101DA ; [*0EAF.0020.0002.101DA] # PHAISTOS DISC SIGN BOW
+101DB ; [*0EB0.0020.0002.101DB] # PHAISTOS DISC SIGN SHIELD
+101DC ; [*0EB1.0020.0002.101DC] # PHAISTOS DISC SIGN CLUB
+101DD ; [*0EB2.0020.0002.101DD] # PHAISTOS DISC SIGN MANACLES
+101DE ; [*0EB3.0020.0002.101DE] # PHAISTOS DISC SIGN MATTOCK
+101DF ; [*0EB4.0020.0002.101DF] # PHAISTOS DISC SIGN SAW
+101E0 ; [*0EB5.0020.0002.101E0] # PHAISTOS DISC SIGN LID
+101E1 ; [*0EB6.0020.0002.101E1] # PHAISTOS DISC SIGN BOOMERANG
+101E2 ; [*0EB7.0020.0002.101E2] # PHAISTOS DISC SIGN CARPENTRY PLANE
+101E3 ; [*0EB8.0020.0002.101E3] # PHAISTOS DISC SIGN DOLIUM
+101E4 ; [*0EB9.0020.0002.101E4] # PHAISTOS DISC SIGN COMB
+101E5 ; [*0EBA.0020.0002.101E5] # PHAISTOS DISC SIGN SLING
+101E6 ; [*0EBB.0020.0002.101E6] # PHAISTOS DISC SIGN COLUMN
+101E7 ; [*0EBC.0020.0002.101E7] # PHAISTOS DISC SIGN BEEHIVE
+101E8 ; [*0EBD.0020.0002.101E8] # PHAISTOS DISC SIGN SHIP
+101E9 ; [*0EBE.0020.0002.101E9] # PHAISTOS DISC SIGN HORN
+101EA ; [*0EBF.0020.0002.101EA] # PHAISTOS DISC SIGN HIDE
+101EB ; [*0EC0.0020.0002.101EB] # PHAISTOS DISC SIGN BULLS LEG
+101EC ; [*0EC1.0020.0002.101EC] # PHAISTOS DISC SIGN CAT
+101ED ; [*0EC2.0020.0002.101ED] # PHAISTOS DISC SIGN RAM
+101EE ; [*0EC3.0020.0002.101EE] # PHAISTOS DISC SIGN EAGLE
+101EF ; [*0EC4.0020.0002.101EF] # PHAISTOS DISC SIGN DOVE
+101F0 ; [*0EC5.0020.0002.101F0] # PHAISTOS DISC SIGN TUNNY
+101F1 ; [*0EC6.0020.0002.101F1] # PHAISTOS DISC SIGN BEE
+101F2 ; [*0EC7.0020.0002.101F2] # PHAISTOS DISC SIGN PLANE TREE
+101F3 ; [*0EC8.0020.0002.101F3] # PHAISTOS DISC SIGN VINE
+101F4 ; [*0EC9.0020.0002.101F4] # PHAISTOS DISC SIGN PAPYRUS
+101F5 ; [*0ECA.0020.0002.101F5] # PHAISTOS DISC SIGN ROSETTE
+101F6 ; [*0ECB.0020.0002.101F6] # PHAISTOS DISC SIGN LILY
+101F7 ; [*0ECC.0020.0002.101F7] # PHAISTOS DISC SIGN OX BACK
+101F8 ; [*0ECD.0020.0002.101F8] # PHAISTOS DISC SIGN FLUTE
+101F9 ; [*0ECE.0020.0002.101F9] # PHAISTOS DISC SIGN GRATER
+101FA ; [*0ECF.0020.0002.101FA] # PHAISTOS DISC SIGN STRAINER
+101FB ; [*0ED0.0020.0002.101FB] # PHAISTOS DISC SIGN SMALL AXE
+101FC ; [*0ED1.0020.0002.101FC] # PHAISTOS DISC SIGN WAVY BAND
+10322 ; [*151C.0020.0002.10322] # OLD ITALIC NUMERAL TEN
+10323 ; [*151D.0020.0002.10323] # OLD ITALIC NUMERAL FIFTY
1039F ; [*02E3.0020.0002.1039F] # UGARITIC WORD DIVIDER
103D0 ; [*02E4.0020.0002.103D0] # OLD PERSIAN WORD DIVIDER
-103D3 ; [*1554.0020.0002.103D3] # OLD PERSIAN NUMBER TEN
-103D4 ; [*1555.0020.0002.103D4] # OLD PERSIAN NUMBER TWENTY
-103D5 ; [*1556.0020.0002.103D5] # OLD PERSIAN NUMBER HUNDRED
+103D3 ; [*156E.0020.0002.103D3] # OLD PERSIAN NUMBER TEN
+103D4 ; [*156F.0020.0002.103D4] # OLD PERSIAN NUMBER TWENTY
+103D5 ; [*1570.0020.0002.103D5] # OLD PERSIAN NUMBER HUNDRED
10857 ; [*02C4.0020.0002.10857] # IMPERIAL ARAMAIC SECTION SIGN
-1085B ; [*155C.0020.0002.1085B] # IMPERIAL ARAMAIC NUMBER TEN
-1085C ; [*155D.0020.0002.1085C] # IMPERIAL ARAMAIC NUMBER TWENTY
-1085D ; [*155E.0020.0002.1085D] # IMPERIAL ARAMAIC NUMBER ONE HUNDRED
-1085E ; [*155F.0020.0002.1085E] # IMPERIAL ARAMAIC NUMBER ONE THOUSAND
-1085F ; [*1560.0020.0002.1085F] # IMPERIAL ARAMAIC NUMBER TEN THOUSAND
-10917 ; [*1559.0020.0002.10917] # PHOENICIAN NUMBER TEN
-10918 ; [*155A.0020.0002.10918] # PHOENICIAN NUMBER TWENTY
-10919 ; [*155B.0020.0002.10919] # PHOENICIAN NUMBER ONE HUNDRED
+1085B ; [*1576.0020.0002.1085B] # IMPERIAL ARAMAIC NUMBER TEN
+1085C ; [*1577.0020.0002.1085C] # IMPERIAL ARAMAIC NUMBER TWENTY
+1085D ; [*1578.0020.0002.1085D] # IMPERIAL ARAMAIC NUMBER ONE HUNDRED
+1085E ; [*1579.0020.0002.1085E] # IMPERIAL ARAMAIC NUMBER ONE THOUSAND
+1085F ; [*157A.0020.0002.1085F] # IMPERIAL ARAMAIC NUMBER TEN THOUSAND
+10917 ; [*1573.0020.0002.10917] # PHOENICIAN NUMBER TEN
+10918 ; [*1574.0020.0002.10918] # PHOENICIAN NUMBER TWENTY
+10919 ; [*1575.0020.0002.10919] # PHOENICIAN NUMBER ONE HUNDRED
1091F ; [*02E5.0020.0002.1091F] # PHOENICIAN WORD SEPARATOR
1093F ; [*02DF.0020.0002.1093F] # LYDIAN TRIANGULAR MARK
-10A44 ; [*1574.0020.0002.10A44] # KHAROSHTHI NUMBER TEN
-10A45 ; [*1575.0020.0002.10A45] # KHAROSHTHI NUMBER TWENTY
-10A46 ; [*1576.0020.0002.10A46] # KHAROSHTHI NUMBER ONE HUNDRED
-10A47 ; [*1577.0020.0002.10A47] # KHAROSHTHI NUMBER ONE THOUSAND
+10A44 ; [*158E.0020.0002.10A44] # KHAROSHTHI NUMBER TEN
+10A45 ; [*158F.0020.0002.10A45] # KHAROSHTHI NUMBER TWENTY
+10A46 ; [*1590.0020.0002.10A46] # KHAROSHTHI NUMBER ONE HUNDRED
+10A47 ; [*1591.0020.0002.10A47] # KHAROSHTHI NUMBER ONE THOUSAND
10A50 ; [*0404.0020.0002.10A50] # KHAROSHTHI PUNCTUATION DOT
10A51 ; [*0405.0020.0002.10A51] # KHAROSHTHI PUNCTUATION SMALL CIRCLE
10A52 ; [*0406.0020.0002.10A52] # KHAROSHTHI PUNCTUATION CIRCLE
@@ -4205,8 +4205,8 @@ FFFD ; [*14BE.0020.0002.FFFD] # REPLACEMENT CHARACTER
10A56 ; [*02A3.0020.0002.10A56] # KHAROSHTHI PUNCTUATION DANDA
10A57 ; [*02A4.0020.0002.10A57] # KHAROSHTHI PUNCTUATION DOUBLE DANDA
10A58 ; [*040A.0020.0002.10A58] # KHAROSHTHI PUNCTUATION LINES
-10A7E ; [*1557.0020.0002.10A7E] # OLD SOUTH ARABIAN NUMBER FIFTY
-10A7F ; [*1558.0020.0002.10A7F] # OLD SOUTH ARABIAN NUMERIC INDICATOR
+10A7E ; [*1571.0020.0002.10A7E] # OLD SOUTH ARABIAN NUMBER FIFTY
+10A7F ; [*1572.0020.0002.10A7F] # OLD SOUTH ARABIAN NUMERIC INDICATOR
10B39 ; [*040B.0020.0002.10B39] # AVESTAN ABBREVIATION MARK
10B3A ; [*02C5.0020.0002.10B3A] # TINY TWO DOTS OVER ONE DOT PUNCTUATION
10B3B ; [*02C6.0020.0002.10B3B] # SMALL TWO DOTS OVER ONE DOT PUNCTUATION
@@ -4214,36 +4214,36 @@ FFFD ; [*14BE.0020.0002.FFFD] # REPLACEMENT CHARACTER
10B3D ; [*02C8.0020.0002.10B3D] # LARGE ONE DOT OVER TWO DOTS PUNCTUATION
10B3E ; [*02C9.0020.0002.10B3E] # LARGE TWO RINGS OVER ONE RING PUNCTUATION
10B3F ; [*02CA.0020.0002.10B3F] # LARGE ONE RING OVER TWO RINGS PUNCTUATION
-10B5C ; [*1561.0020.0002.10B5C] # INSCRIPTIONAL PARTHIAN NUMBER TEN
-10B5D ; [*1562.0020.0002.10B5D] # INSCRIPTIONAL PARTHIAN NUMBER TWENTY
-10B5E ; [*1563.0020.0002.10B5E] # INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED
-10B5F ; [*1564.0020.0002.10B5F] # INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND
-10B7C ; [*1565.0020.0002.10B7C] # INSCRIPTIONAL PAHLAVI NUMBER TEN
-10B7D ; [*1566.0020.0002.10B7D] # INSCRIPTIONAL PAHLAVI NUMBER TWENTY
-10B7E ; [*1567.0020.0002.10B7E] # INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED
-10B7F ; [*1568.0020.0002.10B7F] # INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
-10E69 ; [*14EB.0020.0002.10E69] # RUMI NUMBER TEN
-10E6A ; [*14EC.0020.0002.10E6A] # RUMI NUMBER TWENTY
-10E6B ; [*14ED.0020.0002.10E6B] # RUMI NUMBER THIRTY
-10E6C ; [*14EE.0020.0002.10E6C] # RUMI NUMBER FORTY
-10E6D ; [*14EF.0020.0002.10E6D] # RUMI NUMBER FIFTY
-10E6E ; [*14F0.0020.0002.10E6E] # RUMI NUMBER SIXTY
-10E6F ; [*14F1.0020.0002.10E6F] # RUMI NUMBER SEVENTY
-10E70 ; [*14F2.0020.0002.10E70] # RUMI NUMBER EIGHTY
-10E71 ; [*14F3.0020.0002.10E71] # RUMI NUMBER NINETY
-10E72 ; [*14F4.0020.0002.10E72] # RUMI NUMBER ONE HUNDRED
-10E73 ; [*14F5.0020.0002.10E73] # RUMI NUMBER TWO HUNDRED
-10E74 ; [*14F6.0020.0002.10E74] # RUMI NUMBER THREE HUNDRED
-10E75 ; [*14F7.0020.0002.10E75] # RUMI NUMBER FOUR HUNDRED
-10E76 ; [*14F8.0020.0002.10E76] # RUMI NUMBER FIVE HUNDRED
-10E77 ; [*14F9.0020.0002.10E77] # RUMI NUMBER SIX HUNDRED
-10E78 ; [*14FA.0020.0002.10E78] # RUMI NUMBER SEVEN HUNDRED
-10E79 ; [*14FB.0020.0002.10E79] # RUMI NUMBER EIGHT HUNDRED
-10E7A ; [*14FC.0020.0002.10E7A] # RUMI NUMBER NINE HUNDRED
-10E7B ; [*14FD.0020.0002.10E7B] # RUMI FRACTION ONE HALF
-10E7C ; [*14FE.0020.0002.10E7C] # RUMI FRACTION ONE QUARTER
-10E7D ; [*14FF.0020.0002.10E7D] # RUMI FRACTION ONE THIRD
-10E7E ; [*1500.0020.0002.10E7E] # RUMI FRACTION TWO THIRDS
+10B5C ; [*157B.0020.0002.10B5C] # INSCRIPTIONAL PARTHIAN NUMBER TEN
+10B5D ; [*157C.0020.0002.10B5D] # INSCRIPTIONAL PARTHIAN NUMBER TWENTY
+10B5E ; [*157D.0020.0002.10B5E] # INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED
+10B5F ; [*157E.0020.0002.10B5F] # INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND
+10B7C ; [*157F.0020.0002.10B7C] # INSCRIPTIONAL PAHLAVI NUMBER TEN
+10B7D ; [*1580.0020.0002.10B7D] # INSCRIPTIONAL PAHLAVI NUMBER TWENTY
+10B7E ; [*1581.0020.0002.10B7E] # INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED
+10B7F ; [*1582.0020.0002.10B7F] # INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
+10E69 ; [*1505.0020.0002.10E69] # RUMI NUMBER TEN
+10E6A ; [*1506.0020.0002.10E6A] # RUMI NUMBER TWENTY
+10E6B ; [*1507.0020.0002.10E6B] # RUMI NUMBER THIRTY
+10E6C ; [*1508.0020.0002.10E6C] # RUMI NUMBER FORTY
+10E6D ; [*1509.0020.0002.10E6D] # RUMI NUMBER FIFTY
+10E6E ; [*150A.0020.0002.10E6E] # RUMI NUMBER SIXTY
+10E6F ; [*150B.0020.0002.10E6F] # RUMI NUMBER SEVENTY
+10E70 ; [*150C.0020.0002.10E70] # RUMI NUMBER EIGHTY
+10E71 ; [*150D.0020.0002.10E71] # RUMI NUMBER NINETY
+10E72 ; [*150E.0020.0002.10E72] # RUMI NUMBER ONE HUNDRED
+10E73 ; [*150F.0020.0002.10E73] # RUMI NUMBER TWO HUNDRED
+10E74 ; [*1510.0020.0002.10E74] # RUMI NUMBER THREE HUNDRED
+10E75 ; [*1511.0020.0002.10E75] # RUMI NUMBER FOUR HUNDRED
+10E76 ; [*1512.0020.0002.10E76] # RUMI NUMBER FIVE HUNDRED
+10E77 ; [*1513.0020.0002.10E77] # RUMI NUMBER SIX HUNDRED
+10E78 ; [*1514.0020.0002.10E78] # RUMI NUMBER SEVEN HUNDRED
+10E79 ; [*1515.0020.0002.10E79] # RUMI NUMBER EIGHT HUNDRED
+10E7A ; [*1516.0020.0002.10E7A] # RUMI NUMBER NINE HUNDRED
+10E7B ; [*1517.0020.0002.10E7B] # RUMI FRACTION ONE HALF
+10E7C ; [*1518.0020.0002.10E7C] # RUMI FRACTION ONE QUARTER
+10E7D ; [*1519.0020.0002.10E7D] # RUMI FRACTION ONE THIRD
+10E7E ; [*151A.0020.0002.10E7E] # RUMI FRACTION TWO THIRDS
11047 ; [*02A5.0020.0002.11047] # BRAHMI DANDA
11048 ; [*02A6.0020.0002.11048] # BRAHMI DOUBLE DANDA
11049 ; [*03FF.0020.0002.11049] # BRAHMI PUNCTUATION DOT
@@ -4251,17 +4251,17 @@ FFFD ; [*14BE.0020.0002.FFFD] # REPLACEMENT CHARACTER
1104B ; [*0401.0020.0002.1104B] # BRAHMI PUNCTUATION LINE
1104C ; [*0402.0020.0002.1104C] # BRAHMI PUNCTUATION CRESCENT BAR
1104D ; [*0403.0020.0002.1104D] # BRAHMI PUNCTUATION LOTUS
-1105B ; [*1569.0020.0002.1105B] # BRAHMI NUMBER TEN
-1105C ; [*156A.0020.0002.1105C] # BRAHMI NUMBER TWENTY
-1105D ; [*156B.0020.0002.1105D] # BRAHMI NUMBER THIRTY
-1105E ; [*156C.0020.0002.1105E] # BRAHMI NUMBER FORTY
-1105F ; [*156D.0020.0002.1105F] # BRAHMI NUMBER FIFTY
-11060 ; [*156E.0020.0002.11060] # BRAHMI NUMBER SIXTY
-11061 ; [*156F.0020.0002.11061] # BRAHMI NUMBER SEVENTY
-11062 ; [*1570.0020.0002.11062] # BRAHMI NUMBER EIGHTY
-11063 ; [*1571.0020.0002.11063] # BRAHMI NUMBER NINETY
-11064 ; [*1572.0020.0002.11064] # BRAHMI NUMBER ONE HUNDRED
-11065 ; [*1573.0020.0002.11065] # BRAHMI NUMBER ONE THOUSAND
+1105B ; [*1583.0020.0002.1105B] # BRAHMI NUMBER TEN
+1105C ; [*1584.0020.0002.1105C] # BRAHMI NUMBER TWENTY
+1105D ; [*1585.0020.0002.1105D] # BRAHMI NUMBER THIRTY
+1105E ; [*1586.0020.0002.1105E] # BRAHMI NUMBER FORTY
+1105F ; [*1587.0020.0002.1105F] # BRAHMI NUMBER FIFTY
+11060 ; [*1588.0020.0002.11060] # BRAHMI NUMBER SIXTY
+11061 ; [*1589.0020.0002.11061] # BRAHMI NUMBER SEVENTY
+11062 ; [*158A.0020.0002.11062] # BRAHMI NUMBER EIGHTY
+11063 ; [*158B.0020.0002.11063] # BRAHMI NUMBER NINETY
+11064 ; [*158C.0020.0002.11064] # BRAHMI NUMBER ONE HUNDRED
+11065 ; [*158D.0020.0002.11065] # BRAHMI NUMBER ONE THOUSAND
110BB ; [*040C.0020.0002.110BB] # KAITHI ABBREVIATION SIGN
110BC ; [*040D.0020.0002.110BC] # KAITHI ENUMERATION SIGN
110BD ; [.0000.0000.0000.110BD] # KAITHI NUMBER SIGN
@@ -4277,376 +4277,376 @@ FFFD ; [*14BE.0020.0002.FFFD] # REPLACEMENT CHARACTER
111C6 ; [*02AC.0020.0002.111C6] # SHARADA DOUBLE DANDA
111C7 ; [*040E.0020.0002.111C7] # SHARADA ABBREVIATION SIGN
111C8 ; [*02CE.0020.0002.111C8] # SHARADA SEPARATOR
-12432 ; [*1578.0020.0002.12432] # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH
-12433 ; [*1579.0020.0002.12433] # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN
-12456 ; [*157A.0020.0002.12456] # CUNEIFORM NUMERIC SIGN NIGIDAMIN
-12457 ; [*157B.0020.0002.12457] # CUNEIFORM NUMERIC SIGN NIGIDAESH
-1245A ; [*157C.0020.0002.1245A] # CUNEIFORM NUMERIC SIGN ONE THIRD DISH
-1245B ; [*157D.0020.0002.1245B] # CUNEIFORM NUMERIC SIGN TWO THIRDS DISH
-1245C ; [*157E.0020.0002.1245C] # CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH
-1245D ; [*157F.0020.0002.1245D] # CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A
-1245E ; [*1580.0020.0002.1245E] # CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A
-1245F ; [*1581.0020.0002.1245F] # CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH
-12460 ; [*1582.0020.0002.12460] # CUNEIFORM NUMERIC SIGN ONE QUARTER ASH
-12461 ; [*1583.0020.0002.12461] # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH
-12462 ; [*1584.0020.0002.12462] # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+12432 ; [*1592.0020.0002.12432] # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH
+12433 ; [*1593.0020.0002.12433] # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN
+12456 ; [*1594.0020.0002.12456] # CUNEIFORM NUMERIC SIGN NIGIDAMIN
+12457 ; [*1595.0020.0002.12457] # CUNEIFORM NUMERIC SIGN NIGIDAESH
+1245A ; [*1596.0020.0002.1245A] # CUNEIFORM NUMERIC SIGN ONE THIRD DISH
+1245B ; [*1597.0020.0002.1245B] # CUNEIFORM NUMERIC SIGN TWO THIRDS DISH
+1245C ; [*1598.0020.0002.1245C] # CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH
+1245D ; [*1599.0020.0002.1245D] # CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A
+1245E ; [*159A.0020.0002.1245E] # CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A
+1245F ; [*159B.0020.0002.1245F] # CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH
+12460 ; [*159C.0020.0002.12460] # CUNEIFORM NUMERIC SIGN ONE QUARTER ASH
+12461 ; [*159D.0020.0002.12461] # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH
+12462 ; [*159E.0020.0002.12462] # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
12470 ; [*02E6.0020.0002.12470] # CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER
12471 ; [*02E7.0020.0002.12471] # CUNEIFORM PUNCTUATION SIGN VERTICAL COLON
12472 ; [*02E8.0020.0002.12472] # CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON
12473 ; [*02E9.0020.0002.12473] # CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON
-1D000 ; [*0EB8.0020.0002.1D000] # BYZANTINE MUSICAL SYMBOL PSILI
-1D001 ; [*0EB9.0020.0002.1D001] # BYZANTINE MUSICAL SYMBOL DASEIA
-1D002 ; [*0EBA.0020.0002.1D002] # BYZANTINE MUSICAL SYMBOL PERISPOMENI
-1D003 ; [*0EBB.0020.0002.1D003] # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON
-1D004 ; [*0EBC.0020.0002.1D004] # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI
-1D005 ; [*0EBD.0020.0002.1D005] # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON
-1D006 ; [*0EBE.0020.0002.1D006] # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI
-1D007 ; [*0EBF.0020.0002.1D007] # BYZANTINE MUSICAL SYMBOL KATHISTI
-1D008 ; [*0EC0.0020.0002.1D008] # BYZANTINE MUSICAL SYMBOL SYRMATIKI
-1D009 ; [*0EC1.0020.0002.1D009] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI
-1D00A ; [*0EC2.0020.0002.1D00A] # BYZANTINE MUSICAL SYMBOL YPOKRISIS
-1D00B ; [*0EC3.0020.0002.1D00B] # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI
-1D00C ; [*0EC4.0020.0002.1D00C] # BYZANTINE MUSICAL SYMBOL KREMASTI
-1D00D ; [*0EC5.0020.0002.1D00D] # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON
-1D00E ; [*0EC6.0020.0002.1D00E] # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON
-1D00F ; [*0EC7.0020.0002.1D00F] # BYZANTINE MUSICAL SYMBOL TELEIA
-1D010 ; [*0EC8.0020.0002.1D010] # BYZANTINE MUSICAL SYMBOL KENTIMATA
-1D011 ; [*0EC9.0020.0002.1D011] # BYZANTINE MUSICAL SYMBOL APOSTROFOS
-1D012 ; [*0ECA.0020.0002.1D012] # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI
-1D013 ; [*0ECB.0020.0002.1D013] # BYZANTINE MUSICAL SYMBOL SYNEVMA
-1D014 ; [*0ECC.0020.0002.1D014] # BYZANTINE MUSICAL SYMBOL THITA
-1D015 ; [*0ECD.0020.0002.1D015] # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION
-1D016 ; [*0ECE.0020.0002.1D016] # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION
-1D017 ; [*0ECF.0020.0002.1D017] # BYZANTINE MUSICAL SYMBOL PSILON
-1D018 ; [*0ED0.0020.0002.1D018] # BYZANTINE MUSICAL SYMBOL CHAMILON
-1D019 ; [*0ED1.0020.0002.1D019] # BYZANTINE MUSICAL SYMBOL VATHY
-1D01A ; [*0ED2.0020.0002.1D01A] # BYZANTINE MUSICAL SYMBOL ISON ARCHAION
-1D01B ; [*0ED3.0020.0002.1D01B] # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION
-1D01C ; [*0ED4.0020.0002.1D01C] # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION
-1D01D ; [*0ED5.0020.0002.1D01D] # BYZANTINE MUSICAL SYMBOL SAXIMATA
-1D01E ; [*0ED6.0020.0002.1D01E] # BYZANTINE MUSICAL SYMBOL PARICHON
-1D01F ; [*0ED7.0020.0002.1D01F] # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA
-1D020 ; [*0ED8.0020.0002.1D020] # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION
-1D021 ; [*0ED9.0020.0002.1D021] # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION
-1D022 ; [*0EDA.0020.0002.1D022] # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION
-1D023 ; [*0EDB.0020.0002.1D023] # BYZANTINE MUSICAL SYMBOL APOTHEMA
-1D024 ; [*0EDC.0020.0002.1D024] # BYZANTINE MUSICAL SYMBOL KLASMA
-1D025 ; [*0EDD.0020.0002.1D025] # BYZANTINE MUSICAL SYMBOL REVMA
-1D026 ; [*0EDE.0020.0002.1D026] # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION
-1D027 ; [*0EDF.0020.0002.1D027] # BYZANTINE MUSICAL SYMBOL TINAGMA
-1D028 ; [*0EE0.0020.0002.1D028] # BYZANTINE MUSICAL SYMBOL ANATRICHISMA
-1D029 ; [*0EE1.0020.0002.1D029] # BYZANTINE MUSICAL SYMBOL SEISMA
-1D02A ; [*0EE2.0020.0002.1D02A] # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION
-1D02B ; [*0EE3.0020.0002.1D02B] # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU
-1D02C ; [*0EE4.0020.0002.1D02C] # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION
-1D02D ; [*0EE5.0020.0002.1D02D] # BYZANTINE MUSICAL SYMBOL THEMA
-1D02E ; [*0EE6.0020.0002.1D02E] # BYZANTINE MUSICAL SYMBOL LEMOI
-1D02F ; [*0EE7.0020.0002.1D02F] # BYZANTINE MUSICAL SYMBOL DYO
-1D030 ; [*0EE8.0020.0002.1D030] # BYZANTINE MUSICAL SYMBOL TRIA
-1D031 ; [*0EE9.0020.0002.1D031] # BYZANTINE MUSICAL SYMBOL TESSERA
-1D032 ; [*0EEA.0020.0002.1D032] # BYZANTINE MUSICAL SYMBOL KRATIMATA
-1D033 ; [*0EEB.0020.0002.1D033] # BYZANTINE MUSICAL SYMBOL APESO EXO NEO
-1D034 ; [*0EEC.0020.0002.1D034] # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION
-1D035 ; [*0EED.0020.0002.1D035] # BYZANTINE MUSICAL SYMBOL IMIFTHORA
-1D036 ; [*0EEE.0020.0002.1D036] # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION
-1D037 ; [*0EEF.0020.0002.1D037] # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON
-1D038 ; [*0EF0.0020.0002.1D038] # BYZANTINE MUSICAL SYMBOL PELASTON
-1D039 ; [*0EF1.0020.0002.1D039] # BYZANTINE MUSICAL SYMBOL PSIFISTON
-1D03A ; [*0EF2.0020.0002.1D03A] # BYZANTINE MUSICAL SYMBOL KONTEVMA
-1D03B ; [*0EF3.0020.0002.1D03B] # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION
-1D03C ; [*0EF4.0020.0002.1D03C] # BYZANTINE MUSICAL SYMBOL RAPISMA
-1D03D ; [*0EF5.0020.0002.1D03D] # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION
-1D03E ; [*0EF6.0020.0002.1D03E] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION
-1D03F ; [*0EF7.0020.0002.1D03F] # BYZANTINE MUSICAL SYMBOL ICHADIN
-1D040 ; [*0EF8.0020.0002.1D040] # BYZANTINE MUSICAL SYMBOL NANA
-1D041 ; [*0EF9.0020.0002.1D041] # BYZANTINE MUSICAL SYMBOL PETASMA
-1D042 ; [*0EFA.0020.0002.1D042] # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO
-1D043 ; [*0EFB.0020.0002.1D043] # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO
-1D044 ; [*0EFC.0020.0002.1D044] # BYZANTINE MUSICAL SYMBOL STRAGGISMATA
-1D045 ; [*0EFD.0020.0002.1D045] # BYZANTINE MUSICAL SYMBOL GRONTHISMATA
-1D046 ; [*0EFE.0020.0002.1D046] # BYZANTINE MUSICAL SYMBOL ISON NEO
-1D047 ; [*0EFF.0020.0002.1D047] # BYZANTINE MUSICAL SYMBOL OLIGON NEO
-1D048 ; [*0F00.0020.0002.1D048] # BYZANTINE MUSICAL SYMBOL OXEIA NEO
-1D049 ; [*0F01.0020.0002.1D049] # BYZANTINE MUSICAL SYMBOL PETASTI
-1D04A ; [*0F02.0020.0002.1D04A] # BYZANTINE MUSICAL SYMBOL KOUFISMA
-1D04B ; [*0F03.0020.0002.1D04B] # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA
-1D04C ; [*0F04.0020.0002.1D04C] # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA
-1D04D ; [*0F05.0020.0002.1D04D] # BYZANTINE MUSICAL SYMBOL PELASTON NEO
-1D04E ; [*0F06.0020.0002.1D04E] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO
-1D04F ; [*0F07.0020.0002.1D04F] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO
-1D050 ; [*0F08.0020.0002.1D050] # BYZANTINE MUSICAL SYMBOL YPSILI
-1D051 ; [*0F09.0020.0002.1D051] # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO
-1D052 ; [*0F0A.0020.0002.1D052] # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO
-1D053 ; [*0F0B.0020.0002.1D053] # BYZANTINE MUSICAL SYMBOL YPORROI
-1D054 ; [*0F0C.0020.0002.1D054] # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON
-1D055 ; [*0F0D.0020.0002.1D055] # BYZANTINE MUSICAL SYMBOL ELAFRON
-1D056 ; [*0F0E.0020.0002.1D056] # BYZANTINE MUSICAL SYMBOL CHAMILI
-1D057 ; [*0F0F.0020.0002.1D057] # BYZANTINE MUSICAL SYMBOL MIKRON ISON
-1D058 ; [*0F10.0020.0002.1D058] # BYZANTINE MUSICAL SYMBOL VAREIA NEO
-1D059 ; [*0F11.0020.0002.1D059] # BYZANTINE MUSICAL SYMBOL PIASMA NEO
-1D05A ; [*0F12.0020.0002.1D05A] # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO
-1D05B ; [*0F13.0020.0002.1D05B] # BYZANTINE MUSICAL SYMBOL OMALON
-1D05C ; [*0F14.0020.0002.1D05C] # BYZANTINE MUSICAL SYMBOL ANTIKENOMA
-1D05D ; [*0F15.0020.0002.1D05D] # BYZANTINE MUSICAL SYMBOL LYGISMA
-1D05E ; [*0F16.0020.0002.1D05E] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO
-1D05F ; [*0F17.0020.0002.1D05F] # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO
-1D060 ; [*0F18.0020.0002.1D060] # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA
-1D061 ; [*0F19.0020.0002.1D061] # BYZANTINE MUSICAL SYMBOL KYLISMA
-1D062 ; [*0F1A.0020.0002.1D062] # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA
-1D063 ; [*0F1B.0020.0002.1D063] # BYZANTINE MUSICAL SYMBOL TROMIKON NEO
-1D064 ; [*0F1C.0020.0002.1D064] # BYZANTINE MUSICAL SYMBOL EKSTREPTON
-1D065 ; [*0F1D.0020.0002.1D065] # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO
-1D066 ; [*0F1E.0020.0002.1D066] # BYZANTINE MUSICAL SYMBOL SYRMA
-1D067 ; [*0F1F.0020.0002.1D067] # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO
-1D068 ; [*0F20.0020.0002.1D068] # BYZANTINE MUSICAL SYMBOL EPEGERMA
-1D069 ; [*0F21.0020.0002.1D069] # BYZANTINE MUSICAL SYMBOL SEISMA NEO
-1D06A ; [*0F22.0020.0002.1D06A] # BYZANTINE MUSICAL SYMBOL XIRON KLASMA
-1D06B ; [*0F23.0020.0002.1D06B] # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON
-1D06C ; [*0F24.0020.0002.1D06C] # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA
-1D06D ; [*0F25.0020.0002.1D06D] # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA
-1D06E ; [*0F26.0020.0002.1D06E] # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA
-1D06F ; [*0F27.0020.0002.1D06F] # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA
-1D070 ; [*0F28.0020.0002.1D070] # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA
-1D071 ; [*0F29.0020.0002.1D071] # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA
-1D072 ; [*0F2A.0020.0002.1D072] # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON
-1D073 ; [*0F2B.0020.0002.1D073] # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON
-1D074 ; [*0F2C.0020.0002.1D074] # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON
-1D075 ; [*0F2D.0020.0002.1D075] # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO
-1D076 ; [*0F2E.0020.0002.1D076] # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO
-1D077 ; [*0F2F.0020.0002.1D077] # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO
-1D078 ; [*0F30.0020.0002.1D078] # BYZANTINE MUSICAL SYMBOL THEMA APLOUN
-1D079 ; [*0F31.0020.0002.1D079] # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES
-1D07A ; [*0F32.0020.0002.1D07A] # BYZANTINE MUSICAL SYMBOL KATAVASMA
-1D07B ; [*0F33.0020.0002.1D07B] # BYZANTINE MUSICAL SYMBOL ENDOFONON
-1D07C ; [*0F34.0020.0002.1D07C] # BYZANTINE MUSICAL SYMBOL YFEN KATO
-1D07D ; [*0F35.0020.0002.1D07D] # BYZANTINE MUSICAL SYMBOL YFEN ANO
-1D07E ; [*0F36.0020.0002.1D07E] # BYZANTINE MUSICAL SYMBOL STAVROS
-1D07F ; [*0F37.0020.0002.1D07F] # BYZANTINE MUSICAL SYMBOL KLASMA ANO
-1D080 ; [*0F38.0020.0002.1D080] # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION
-1D081 ; [*0F39.0020.0002.1D081] # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION
-1D082 ; [*0F3A.0020.0002.1D082] # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO
-1D083 ; [*0F3B.0020.0002.1D083] # BYZANTINE MUSICAL SYMBOL KRATIMA NEO
-1D084 ; [*0F3C.0020.0002.1D084] # BYZANTINE MUSICAL SYMBOL APODERMA NEO
-1D085 ; [*0F3D.0020.0002.1D085] # BYZANTINE MUSICAL SYMBOL APLI
-1D086 ; [*0F3E.0020.0002.1D086] # BYZANTINE MUSICAL SYMBOL DIPLI
-1D087 ; [*0F3F.0020.0002.1D087] # BYZANTINE MUSICAL SYMBOL TRIPLI
-1D088 ; [*0F40.0020.0002.1D088] # BYZANTINE MUSICAL SYMBOL TETRAPLI
-1D089 ; [*0F41.0020.0002.1D089] # BYZANTINE MUSICAL SYMBOL KORONIS
-1D08A ; [*0F42.0020.0002.1D08A] # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU
-1D08B ; [*0F43.0020.0002.1D08B] # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON
-1D08C ; [*0F44.0020.0002.1D08C] # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON
-1D08D ; [*0F45.0020.0002.1D08D] # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON
-1D08E ; [*0F46.0020.0002.1D08E] # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU
-1D08F ; [*0F47.0020.0002.1D08F] # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO
-1D090 ; [*0F48.0020.0002.1D090] # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA
-1D091 ; [*0F49.0020.0002.1D091] # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA
-1D092 ; [*0F4A.0020.0002.1D092] # BYZANTINE MUSICAL SYMBOL DIGORGON
-1D093 ; [*0F4B.0020.0002.1D093] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO
-1D094 ; [*0F4C.0020.0002.1D094] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO
-1D095 ; [*0F4D.0020.0002.1D095] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA
-1D096 ; [*0F4E.0020.0002.1D096] # BYZANTINE MUSICAL SYMBOL TRIGORGON
-1D097 ; [*0F4F.0020.0002.1D097] # BYZANTINE MUSICAL SYMBOL ARGON
-1D098 ; [*0F50.0020.0002.1D098] # BYZANTINE MUSICAL SYMBOL IMIDIARGON
-1D099 ; [*0F51.0020.0002.1D099] # BYZANTINE MUSICAL SYMBOL DIARGON
-1D09A ; [*0F52.0020.0002.1D09A] # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI
-1D09B ; [*0F53.0020.0002.1D09B] # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI
-1D09C ; [*0F54.0020.0002.1D09C] # BYZANTINE MUSICAL SYMBOL AGOGI ARGI
-1D09D ; [*0F55.0020.0002.1D09D] # BYZANTINE MUSICAL SYMBOL AGOGI METRIA
-1D09E ; [*0F56.0020.0002.1D09E] # BYZANTINE MUSICAL SYMBOL AGOGI MESI
-1D09F ; [*0F57.0020.0002.1D09F] # BYZANTINE MUSICAL SYMBOL AGOGI GORGI
-1D0A0 ; [*0F58.0020.0002.1D0A0] # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI
-1D0A1 ; [*0F59.0020.0002.1D0A1] # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI
-1D0A2 ; [*0F5A.0020.0002.1D0A2] # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS
-1D0A3 ; [*0F5B.0020.0002.1D0A3] # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS
-1D0A4 ; [*0F5C.0020.0002.1D0A4] # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS
-1D0A5 ; [*0F5D.0020.0002.1D0A5] # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS
-1D0A6 ; [*0F5E.0020.0002.1D0A6] # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS
-1D0A7 ; [*0F5F.0020.0002.1D0A7] # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS
-1D0A8 ; [*0F60.0020.0002.1D0A8] # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS
-1D0A9 ; [*0F61.0020.0002.1D0A9] # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS
-1D0AA ; [*0F62.0020.0002.1D0AA] # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS
-1D0AB ; [*0F63.0020.0002.1D0AB] # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS
-1D0AC ; [*0F64.0020.0002.1D0AC] # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS
-1D0AD ; [*0F65.0020.0002.1D0AD] # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS
-1D0AE ; [*0F66.0020.0002.1D0AE] # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS
-1D0AF ; [*0F67.0020.0002.1D0AF] # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS
-1D0B0 ; [*0F68.0020.0002.1D0B0] # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS
-1D0B1 ; [*0F69.0020.0002.1D0B1] # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS
-1D0B2 ; [*0F6A.0020.0002.1D0B2] # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS
-1D0B3 ; [*0F6B.0020.0002.1D0B3] # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS
-1D0B4 ; [*0F6C.0020.0002.1D0B4] # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN
-1D0B5 ; [*0F6D.0020.0002.1D0B5] # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN
-1D0B6 ; [*0F6E.0020.0002.1D0B6] # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU
-1D0B7 ; [*0F6F.0020.0002.1D0B7] # BYZANTINE MUSICAL SYMBOL IMIFONON
-1D0B8 ; [*0F70.0020.0002.1D0B8] # BYZANTINE MUSICAL SYMBOL IMIFTHORON
-1D0B9 ; [*0F71.0020.0002.1D0B9] # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU
-1D0BA ; [*0F72.0020.0002.1D0BA] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA
-1D0BB ; [*0F73.0020.0002.1D0BB] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA
-1D0BC ; [*0F74.0020.0002.1D0BC] # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS
-1D0BD ; [*0F75.0020.0002.1D0BD] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI
-1D0BE ; [*0F76.0020.0002.1D0BE] # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI
-1D0BF ; [*0F77.0020.0002.1D0BF] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE
-1D0C0 ; [*0F78.0020.0002.1D0C0] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO
-1D0C1 ; [*0F79.0020.0002.1D0C1] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO
-1D0C2 ; [*0F7A.0020.0002.1D0C2] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO
-1D0C3 ; [*0F7B.0020.0002.1D0C3] # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS
-1D0C4 ; [*0F7C.0020.0002.1D0C4] # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS
-1D0C5 ; [*0F7D.0020.0002.1D0C5] # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS
-1D0C6 ; [*0F7E.0020.0002.1D0C6] # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI
-1D0C7 ; [*0F7F.0020.0002.1D0C7] # BYZANTINE MUSICAL SYMBOL FTHORA NENANO
-1D0C8 ; [*0F80.0020.0002.1D0C8] # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS
-1D0C9 ; [*0F81.0020.0002.1D0C9] # BYZANTINE MUSICAL SYMBOL CHROA KLITON
-1D0CA ; [*0F82.0020.0002.1D0CA] # BYZANTINE MUSICAL SYMBOL CHROA SPATHI
-1D0CB ; [*0F83.0020.0002.1D0CB] # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION
-1D0CC ; [*0F84.0020.0002.1D0CC] # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA
-1D0CD ; [*0F85.0020.0002.1D0CD] # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION
-1D0CE ; [*0F86.0020.0002.1D0CE] # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION
-1D0CF ; [*0F87.0020.0002.1D0CF] # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION
-1D0D0 ; [*0F88.0020.0002.1D0D0] # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA
-1D0D1 ; [*0F89.0020.0002.1D0D1] # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D2 ; [*0F8A.0020.0002.1D0D2] # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA
-1D0D3 ; [*0F8B.0020.0002.1D0D3] # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA
-1D0D4 ; [*0F8C.0020.0002.1D0D4] # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA
-1D0D5 ; [*0F8D.0020.0002.1D0D5] # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA
-1D0D6 ; [*0F8E.0020.0002.1D0D6] # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA
-1D0D7 ; [*0F8F.0020.0002.1D0D7] # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA
-1D0D8 ; [*0F90.0020.0002.1D0D8] # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS
-1D0D9 ; [*0F91.0020.0002.1D0D9] # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS
-1D0DA ; [*0F92.0020.0002.1D0DA] # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI
-1D0DB ; [*0F93.0020.0002.1D0DB] # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI
-1D0DC ; [*0F94.0020.0002.1D0DC] # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI
-1D0DD ; [*0F95.0020.0002.1D0DD] # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS
-1D0DE ; [*0F96.0020.0002.1D0DE] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS
-1D0DF ; [*0F97.0020.0002.1D0DF] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU
-1D0E0 ; [*0F98.0020.0002.1D0E0] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU
-1D0E1 ; [*0F99.0020.0002.1D0E1] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU
-1D0E2 ; [*0F9A.0020.0002.1D0E2] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS
-1D0E3 ; [*0F9B.0020.0002.1D0E3] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU
-1D0E4 ; [*0F9C.0020.0002.1D0E4] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU
-1D0E5 ; [*0F9D.0020.0002.1D0E5] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU
-1D0E6 ; [*0F9E.0020.0002.1D0E6] # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG
-1D0E7 ; [*0F9F.0020.0002.1D0E7] # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU
-1D0E8 ; [*0FA0.0020.0002.1D0E8] # BYZANTINE MUSICAL SYMBOL STIGMA
-1D0E9 ; [*0FA1.0020.0002.1D0E9] # BYZANTINE MUSICAL SYMBOL ARKTIKO PA
-1D0EA ; [*0FA2.0020.0002.1D0EA] # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU
-1D0EB ; [*0FA3.0020.0002.1D0EB] # BYZANTINE MUSICAL SYMBOL ARKTIKO GA
-1D0EC ; [*0FA4.0020.0002.1D0EC] # BYZANTINE MUSICAL SYMBOL ARKTIKO DI
-1D0ED ; [*0FA5.0020.0002.1D0ED] # BYZANTINE MUSICAL SYMBOL ARKTIKO KE
-1D0EE ; [*0FA6.0020.0002.1D0EE] # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO
-1D0EF ; [*0FA7.0020.0002.1D0EF] # BYZANTINE MUSICAL SYMBOL ARKTIKO NI
-1D0F0 ; [*0FA8.0020.0002.1D0F0] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO
-1D0F1 ; [*0FA9.0020.0002.1D0F1] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO
-1D0F2 ; [*0FAA.0020.0002.1D0F2] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO
-1D0F3 ; [*0FAB.0020.0002.1D0F3] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO
-1D0F4 ; [*0FAC.0020.0002.1D0F4] # BYZANTINE MUSICAL SYMBOL KLASMA KATO
-1D0F5 ; [*0FAD.0020.0002.1D0F5] # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
-1D100 ; [*0FAE.0020.0002.1D100] # MUSICAL SYMBOL SINGLE BARLINE
-1D101 ; [*0FAF.0020.0002.1D101] # MUSICAL SYMBOL DOUBLE BARLINE
-1D102 ; [*0FB0.0020.0002.1D102] # MUSICAL SYMBOL FINAL BARLINE
-1D103 ; [*0FB1.0020.0002.1D103] # MUSICAL SYMBOL REVERSE FINAL BARLINE
-1D104 ; [*0FB2.0020.0002.1D104] # MUSICAL SYMBOL DASHED BARLINE
-1D105 ; [*0FB3.0020.0002.1D105] # MUSICAL SYMBOL SHORT BARLINE
-1D106 ; [*0FB4.0020.0002.1D106] # MUSICAL SYMBOL LEFT REPEAT SIGN
-1D107 ; [*0FB5.0020.0002.1D107] # MUSICAL SYMBOL RIGHT REPEAT SIGN
-1D108 ; [*0FB6.0020.0002.1D108] # MUSICAL SYMBOL REPEAT DOTS
-1D109 ; [*0FB7.0020.0002.1D109] # MUSICAL SYMBOL DAL SEGNO
-1D10A ; [*0FB8.0020.0002.1D10A] # MUSICAL SYMBOL DA CAPO
-1D10B ; [*0FB9.0020.0002.1D10B] # MUSICAL SYMBOL SEGNO
-1D10C ; [*0FBA.0020.0002.1D10C] # MUSICAL SYMBOL CODA
-1D10D ; [*0FBB.0020.0002.1D10D] # MUSICAL SYMBOL REPEATED FIGURE-1
-1D10E ; [*0FBC.0020.0002.1D10E] # MUSICAL SYMBOL REPEATED FIGURE-2
-1D10F ; [*0FBD.0020.0002.1D10F] # MUSICAL SYMBOL REPEATED FIGURE-3
-1D110 ; [*0FBE.0020.0002.1D110] # MUSICAL SYMBOL FERMATA
-1D111 ; [*0FBF.0020.0002.1D111] # MUSICAL SYMBOL FERMATA BELOW
-1D112 ; [*0FC0.0020.0002.1D112] # MUSICAL SYMBOL BREATH MARK
-1D113 ; [*0FC1.0020.0002.1D113] # MUSICAL SYMBOL CAESURA
-1D114 ; [*0FC2.0020.0002.1D114] # MUSICAL SYMBOL BRACE
-1D115 ; [*0FC3.0020.0002.1D115] # MUSICAL SYMBOL BRACKET
-1D116 ; [*0FC4.0020.0002.1D116] # MUSICAL SYMBOL ONE-LINE STAFF
-1D117 ; [*0FC5.0020.0002.1D117] # MUSICAL SYMBOL TWO-LINE STAFF
-1D118 ; [*0FC6.0020.0002.1D118] # MUSICAL SYMBOL THREE-LINE STAFF
-1D119 ; [*0FC7.0020.0002.1D119] # MUSICAL SYMBOL FOUR-LINE STAFF
-1D11A ; [*0FC8.0020.0002.1D11A] # MUSICAL SYMBOL FIVE-LINE STAFF
-1D11B ; [*0FC9.0020.0002.1D11B] # MUSICAL SYMBOL SIX-LINE STAFF
-1D11C ; [*0FCA.0020.0002.1D11C] # MUSICAL SYMBOL SIX-STRING FRETBOARD
-1D11D ; [*0FCB.0020.0002.1D11D] # MUSICAL SYMBOL FOUR-STRING FRETBOARD
-1D11E ; [*0FCC.0020.0002.1D11E] # MUSICAL SYMBOL G CLEF
-1D11F ; [*0FCD.0020.0002.1D11F] # MUSICAL SYMBOL G CLEF OTTAVA ALTA
-1D120 ; [*0FCE.0020.0002.1D120] # MUSICAL SYMBOL G CLEF OTTAVA BASSA
-1D121 ; [*0FCF.0020.0002.1D121] # MUSICAL SYMBOL C CLEF
-1D122 ; [*0FD0.0020.0002.1D122] # MUSICAL SYMBOL F CLEF
-1D123 ; [*0FD1.0020.0002.1D123] # MUSICAL SYMBOL F CLEF OTTAVA ALTA
-1D124 ; [*0FD2.0020.0002.1D124] # MUSICAL SYMBOL F CLEF OTTAVA BASSA
-1D125 ; [*0FD3.0020.0002.1D125] # MUSICAL SYMBOL DRUM CLEF-1
-1D126 ; [*0FD4.0020.0002.1D126] # MUSICAL SYMBOL DRUM CLEF-2
-1D129 ; [*0FE8.0020.0002.1D129] # MUSICAL SYMBOL MULTIPLE MEASURE REST
-1D12A ; [*0FD8.0020.0002.1D12A] # MUSICAL SYMBOL DOUBLE SHARP
-1D12B ; [*0FD9.0020.0002.1D12B] # MUSICAL SYMBOL DOUBLE FLAT
-1D12C ; [*0FDA.0020.0002.1D12C] # MUSICAL SYMBOL FLAT UP
-1D12D ; [*0FDB.0020.0002.1D12D] # MUSICAL SYMBOL FLAT DOWN
-1D12E ; [*0FDC.0020.0002.1D12E] # MUSICAL SYMBOL NATURAL UP
-1D12F ; [*0FDD.0020.0002.1D12F] # MUSICAL SYMBOL NATURAL DOWN
-1D130 ; [*0FDE.0020.0002.1D130] # MUSICAL SYMBOL SHARP UP
-1D131 ; [*0FDF.0020.0002.1D131] # MUSICAL SYMBOL SHARP DOWN
-1D132 ; [*0FE0.0020.0002.1D132] # MUSICAL SYMBOL QUARTER TONE SHARP
-1D133 ; [*0FE1.0020.0002.1D133] # MUSICAL SYMBOL QUARTER TONE FLAT
-1D134 ; [*0FE2.0020.0002.1D134] # MUSICAL SYMBOL COMMON TIME
-1D135 ; [*0FE3.0020.0002.1D135] # MUSICAL SYMBOL CUT TIME
-1D136 ; [*0FE4.0020.0002.1D136] # MUSICAL SYMBOL OTTAVA ALTA
-1D137 ; [*0FE5.0020.0002.1D137] # MUSICAL SYMBOL OTTAVA BASSA
-1D138 ; [*0FE6.0020.0002.1D138] # MUSICAL SYMBOL QUINDICESIMA ALTA
-1D139 ; [*0FE7.0020.0002.1D139] # MUSICAL SYMBOL QUINDICESIMA BASSA
-1D13A ; [*0FE9.0020.0002.1D13A] # MUSICAL SYMBOL MULTI REST
-1D13B ; [*0FEA.0020.0002.1D13B] # MUSICAL SYMBOL WHOLE REST
-1D13C ; [*0FEB.0020.0002.1D13C] # MUSICAL SYMBOL HALF REST
-1D13D ; [*0FEC.0020.0002.1D13D] # MUSICAL SYMBOL QUARTER REST
-1D13E ; [*0FED.0020.0002.1D13E] # MUSICAL SYMBOL EIGHTH REST
-1D13F ; [*0FEE.0020.0002.1D13F] # MUSICAL SYMBOL SIXTEENTH REST
-1D140 ; [*0FEF.0020.0002.1D140] # MUSICAL SYMBOL THIRTY-SECOND REST
-1D141 ; [*0FF0.0020.0002.1D141] # MUSICAL SYMBOL SIXTY-FOURTH REST
-1D142 ; [*0FF1.0020.0002.1D142] # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST
-1D143 ; [*0FF2.0020.0002.1D143] # MUSICAL SYMBOL X NOTEHEAD
-1D144 ; [*0FF3.0020.0002.1D144] # MUSICAL SYMBOL PLUS NOTEHEAD
-1D145 ; [*0FF4.0020.0002.1D145] # MUSICAL SYMBOL CIRCLE X NOTEHEAD
-1D146 ; [*0FF5.0020.0002.1D146] # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE
-1D147 ; [*0FF6.0020.0002.1D147] # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK
-1D148 ; [*0FF7.0020.0002.1D148] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE
-1D149 ; [*0FF8.0020.0002.1D149] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK
-1D14A ; [*0FF9.0020.0002.1D14A] # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE
-1D14B ; [*0FFA.0020.0002.1D14B] # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK
-1D14C ; [*0FFB.0020.0002.1D14C] # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE
-1D14D ; [*0FFC.0020.0002.1D14D] # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK
-1D14E ; [*0FFD.0020.0002.1D14E] # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE
-1D14F ; [*0FFE.0020.0002.1D14F] # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK
-1D150 ; [*0FFF.0020.0002.1D150] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE
-1D151 ; [*1000.0020.0002.1D151] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK
-1D152 ; [*1001.0020.0002.1D152] # MUSICAL SYMBOL MOON NOTEHEAD WHITE
-1D153 ; [*1002.0020.0002.1D153] # MUSICAL SYMBOL MOON NOTEHEAD BLACK
-1D154 ; [*1003.0020.0002.1D154] # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE
-1D155 ; [*1004.0020.0002.1D155] # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK
-1D156 ; [*1005.0020.0002.1D156] # MUSICAL SYMBOL PARENTHESIS NOTEHEAD
-1D157 ; [*1006.0020.0002.1D157] # MUSICAL SYMBOL VOID NOTEHEAD
-1D158 ; [*1007.0020.0002.1D158] # MUSICAL SYMBOL NOTEHEAD BLACK
-1D159 ; [*1008.0020.0002.1D159] # MUSICAL SYMBOL NULL NOTEHEAD
-1D15A ; [*1009.0020.0002.1D15A] # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE
-1D15B ; [*100A.0020.0002.1D15B] # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
-1D15C ; [*100B.0020.0002.1D15C] # MUSICAL SYMBOL BREVE
-1D15D ; [*100C.0020.0002.1D15D] # MUSICAL SYMBOL WHOLE NOTE
-1D15E ; [*1006.0020.0002.1D157][.0000.0000.0000.1D165] # MUSICAL SYMBOL HALF NOTE
-1D15F ; [*1007.0020.0002.1D158][.0000.0000.0000.1D165] # MUSICAL SYMBOL QUARTER NOTE
-1D160 ; [*1007.0020.0002.1D158][.0000.0000.0000.1D165][.0000.0000.0000.1D16E] # MUSICAL SYMBOL EIGHTH NOTE
-1D161 ; [*1007.0020.0002.1D158][.0000.0000.0000.1D165][.0000.0000.0000.1D16F] # MUSICAL SYMBOL SIXTEENTH NOTE
-1D162 ; [*1007.0020.0002.1D158][.0000.0000.0000.1D165][.0000.0000.0000.1D170] # MUSICAL SYMBOL THIRTY-SECOND NOTE
-1D163 ; [*1007.0020.0002.1D158][.0000.0000.0000.1D165][.0000.0000.0000.1D171] # MUSICAL SYMBOL SIXTY-FOURTH NOTE
-1D164 ; [*1007.0020.0002.1D158][.0000.0000.0000.1D165][.0000.0000.0000.1D172] # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D000 ; [*0ED2.0020.0002.1D000] # BYZANTINE MUSICAL SYMBOL PSILI
+1D001 ; [*0ED3.0020.0002.1D001] # BYZANTINE MUSICAL SYMBOL DASEIA
+1D002 ; [*0ED4.0020.0002.1D002] # BYZANTINE MUSICAL SYMBOL PERISPOMENI
+1D003 ; [*0ED5.0020.0002.1D003] # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON
+1D004 ; [*0ED6.0020.0002.1D004] # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI
+1D005 ; [*0ED7.0020.0002.1D005] # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON
+1D006 ; [*0ED8.0020.0002.1D006] # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI
+1D007 ; [*0ED9.0020.0002.1D007] # BYZANTINE MUSICAL SYMBOL KATHISTI
+1D008 ; [*0EDA.0020.0002.1D008] # BYZANTINE MUSICAL SYMBOL SYRMATIKI
+1D009 ; [*0EDB.0020.0002.1D009] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI
+1D00A ; [*0EDC.0020.0002.1D00A] # BYZANTINE MUSICAL SYMBOL YPOKRISIS
+1D00B ; [*0EDD.0020.0002.1D00B] # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI
+1D00C ; [*0EDE.0020.0002.1D00C] # BYZANTINE MUSICAL SYMBOL KREMASTI
+1D00D ; [*0EDF.0020.0002.1D00D] # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON
+1D00E ; [*0EE0.0020.0002.1D00E] # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON
+1D00F ; [*0EE1.0020.0002.1D00F] # BYZANTINE MUSICAL SYMBOL TELEIA
+1D010 ; [*0EE2.0020.0002.1D010] # BYZANTINE MUSICAL SYMBOL KENTIMATA
+1D011 ; [*0EE3.0020.0002.1D011] # BYZANTINE MUSICAL SYMBOL APOSTROFOS
+1D012 ; [*0EE4.0020.0002.1D012] # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI
+1D013 ; [*0EE5.0020.0002.1D013] # BYZANTINE MUSICAL SYMBOL SYNEVMA
+1D014 ; [*0EE6.0020.0002.1D014] # BYZANTINE MUSICAL SYMBOL THITA
+1D015 ; [*0EE7.0020.0002.1D015] # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION
+1D016 ; [*0EE8.0020.0002.1D016] # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION
+1D017 ; [*0EE9.0020.0002.1D017] # BYZANTINE MUSICAL SYMBOL PSILON
+1D018 ; [*0EEA.0020.0002.1D018] # BYZANTINE MUSICAL SYMBOL CHAMILON
+1D019 ; [*0EEB.0020.0002.1D019] # BYZANTINE MUSICAL SYMBOL VATHY
+1D01A ; [*0EEC.0020.0002.1D01A] # BYZANTINE MUSICAL SYMBOL ISON ARCHAION
+1D01B ; [*0EED.0020.0002.1D01B] # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION
+1D01C ; [*0EEE.0020.0002.1D01C] # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION
+1D01D ; [*0EEF.0020.0002.1D01D] # BYZANTINE MUSICAL SYMBOL SAXIMATA
+1D01E ; [*0EF0.0020.0002.1D01E] # BYZANTINE MUSICAL SYMBOL PARICHON
+1D01F ; [*0EF1.0020.0002.1D01F] # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA
+1D020 ; [*0EF2.0020.0002.1D020] # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION
+1D021 ; [*0EF3.0020.0002.1D021] # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION
+1D022 ; [*0EF4.0020.0002.1D022] # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION
+1D023 ; [*0EF5.0020.0002.1D023] # BYZANTINE MUSICAL SYMBOL APOTHEMA
+1D024 ; [*0EF6.0020.0002.1D024] # BYZANTINE MUSICAL SYMBOL KLASMA
+1D025 ; [*0EF7.0020.0002.1D025] # BYZANTINE MUSICAL SYMBOL REVMA
+1D026 ; [*0EF8.0020.0002.1D026] # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION
+1D027 ; [*0EF9.0020.0002.1D027] # BYZANTINE MUSICAL SYMBOL TINAGMA
+1D028 ; [*0EFA.0020.0002.1D028] # BYZANTINE MUSICAL SYMBOL ANATRICHISMA
+1D029 ; [*0EFB.0020.0002.1D029] # BYZANTINE MUSICAL SYMBOL SEISMA
+1D02A ; [*0EFC.0020.0002.1D02A] # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION
+1D02B ; [*0EFD.0020.0002.1D02B] # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU
+1D02C ; [*0EFE.0020.0002.1D02C] # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION
+1D02D ; [*0EFF.0020.0002.1D02D] # BYZANTINE MUSICAL SYMBOL THEMA
+1D02E ; [*0F00.0020.0002.1D02E] # BYZANTINE MUSICAL SYMBOL LEMOI
+1D02F ; [*0F01.0020.0002.1D02F] # BYZANTINE MUSICAL SYMBOL DYO
+1D030 ; [*0F02.0020.0002.1D030] # BYZANTINE MUSICAL SYMBOL TRIA
+1D031 ; [*0F03.0020.0002.1D031] # BYZANTINE MUSICAL SYMBOL TESSERA
+1D032 ; [*0F04.0020.0002.1D032] # BYZANTINE MUSICAL SYMBOL KRATIMATA
+1D033 ; [*0F05.0020.0002.1D033] # BYZANTINE MUSICAL SYMBOL APESO EXO NEO
+1D034 ; [*0F06.0020.0002.1D034] # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION
+1D035 ; [*0F07.0020.0002.1D035] # BYZANTINE MUSICAL SYMBOL IMIFTHORA
+1D036 ; [*0F08.0020.0002.1D036] # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION
+1D037 ; [*0F09.0020.0002.1D037] # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON
+1D038 ; [*0F0A.0020.0002.1D038] # BYZANTINE MUSICAL SYMBOL PELASTON
+1D039 ; [*0F0B.0020.0002.1D039] # BYZANTINE MUSICAL SYMBOL PSIFISTON
+1D03A ; [*0F0C.0020.0002.1D03A] # BYZANTINE MUSICAL SYMBOL KONTEVMA
+1D03B ; [*0F0D.0020.0002.1D03B] # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION
+1D03C ; [*0F0E.0020.0002.1D03C] # BYZANTINE MUSICAL SYMBOL RAPISMA
+1D03D ; [*0F0F.0020.0002.1D03D] # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION
+1D03E ; [*0F10.0020.0002.1D03E] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION
+1D03F ; [*0F11.0020.0002.1D03F] # BYZANTINE MUSICAL SYMBOL ICHADIN
+1D040 ; [*0F12.0020.0002.1D040] # BYZANTINE MUSICAL SYMBOL NANA
+1D041 ; [*0F13.0020.0002.1D041] # BYZANTINE MUSICAL SYMBOL PETASMA
+1D042 ; [*0F14.0020.0002.1D042] # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO
+1D043 ; [*0F15.0020.0002.1D043] # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO
+1D044 ; [*0F16.0020.0002.1D044] # BYZANTINE MUSICAL SYMBOL STRAGGISMATA
+1D045 ; [*0F17.0020.0002.1D045] # BYZANTINE MUSICAL SYMBOL GRONTHISMATA
+1D046 ; [*0F18.0020.0002.1D046] # BYZANTINE MUSICAL SYMBOL ISON NEO
+1D047 ; [*0F19.0020.0002.1D047] # BYZANTINE MUSICAL SYMBOL OLIGON NEO
+1D048 ; [*0F1A.0020.0002.1D048] # BYZANTINE MUSICAL SYMBOL OXEIA NEO
+1D049 ; [*0F1B.0020.0002.1D049] # BYZANTINE MUSICAL SYMBOL PETASTI
+1D04A ; [*0F1C.0020.0002.1D04A] # BYZANTINE MUSICAL SYMBOL KOUFISMA
+1D04B ; [*0F1D.0020.0002.1D04B] # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA
+1D04C ; [*0F1E.0020.0002.1D04C] # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA
+1D04D ; [*0F1F.0020.0002.1D04D] # BYZANTINE MUSICAL SYMBOL PELASTON NEO
+1D04E ; [*0F20.0020.0002.1D04E] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO
+1D04F ; [*0F21.0020.0002.1D04F] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO
+1D050 ; [*0F22.0020.0002.1D050] # BYZANTINE MUSICAL SYMBOL YPSILI
+1D051 ; [*0F23.0020.0002.1D051] # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO
+1D052 ; [*0F24.0020.0002.1D052] # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO
+1D053 ; [*0F25.0020.0002.1D053] # BYZANTINE MUSICAL SYMBOL YPORROI
+1D054 ; [*0F26.0020.0002.1D054] # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON
+1D055 ; [*0F27.0020.0002.1D055] # BYZANTINE MUSICAL SYMBOL ELAFRON
+1D056 ; [*0F28.0020.0002.1D056] # BYZANTINE MUSICAL SYMBOL CHAMILI
+1D057 ; [*0F29.0020.0002.1D057] # BYZANTINE MUSICAL SYMBOL MIKRON ISON
+1D058 ; [*0F2A.0020.0002.1D058] # BYZANTINE MUSICAL SYMBOL VAREIA NEO
+1D059 ; [*0F2B.0020.0002.1D059] # BYZANTINE MUSICAL SYMBOL PIASMA NEO
+1D05A ; [*0F2C.0020.0002.1D05A] # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO
+1D05B ; [*0F2D.0020.0002.1D05B] # BYZANTINE MUSICAL SYMBOL OMALON
+1D05C ; [*0F2E.0020.0002.1D05C] # BYZANTINE MUSICAL SYMBOL ANTIKENOMA
+1D05D ; [*0F2F.0020.0002.1D05D] # BYZANTINE MUSICAL SYMBOL LYGISMA
+1D05E ; [*0F30.0020.0002.1D05E] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO
+1D05F ; [*0F31.0020.0002.1D05F] # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO
+1D060 ; [*0F32.0020.0002.1D060] # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA
+1D061 ; [*0F33.0020.0002.1D061] # BYZANTINE MUSICAL SYMBOL KYLISMA
+1D062 ; [*0F34.0020.0002.1D062] # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA
+1D063 ; [*0F35.0020.0002.1D063] # BYZANTINE MUSICAL SYMBOL TROMIKON NEO
+1D064 ; [*0F36.0020.0002.1D064] # BYZANTINE MUSICAL SYMBOL EKSTREPTON
+1D065 ; [*0F37.0020.0002.1D065] # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO
+1D066 ; [*0F38.0020.0002.1D066] # BYZANTINE MUSICAL SYMBOL SYRMA
+1D067 ; [*0F39.0020.0002.1D067] # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO
+1D068 ; [*0F3A.0020.0002.1D068] # BYZANTINE MUSICAL SYMBOL EPEGERMA
+1D069 ; [*0F3B.0020.0002.1D069] # BYZANTINE MUSICAL SYMBOL SEISMA NEO
+1D06A ; [*0F3C.0020.0002.1D06A] # BYZANTINE MUSICAL SYMBOL XIRON KLASMA
+1D06B ; [*0F3D.0020.0002.1D06B] # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON
+1D06C ; [*0F3E.0020.0002.1D06C] # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA
+1D06D ; [*0F3F.0020.0002.1D06D] # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA
+1D06E ; [*0F40.0020.0002.1D06E] # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA
+1D06F ; [*0F41.0020.0002.1D06F] # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA
+1D070 ; [*0F42.0020.0002.1D070] # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA
+1D071 ; [*0F43.0020.0002.1D071] # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA
+1D072 ; [*0F44.0020.0002.1D072] # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON
+1D073 ; [*0F45.0020.0002.1D073] # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON
+1D074 ; [*0F46.0020.0002.1D074] # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON
+1D075 ; [*0F47.0020.0002.1D075] # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO
+1D076 ; [*0F48.0020.0002.1D076] # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO
+1D077 ; [*0F49.0020.0002.1D077] # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO
+1D078 ; [*0F4A.0020.0002.1D078] # BYZANTINE MUSICAL SYMBOL THEMA APLOUN
+1D079 ; [*0F4B.0020.0002.1D079] # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES
+1D07A ; [*0F4C.0020.0002.1D07A] # BYZANTINE MUSICAL SYMBOL KATAVASMA
+1D07B ; [*0F4D.0020.0002.1D07B] # BYZANTINE MUSICAL SYMBOL ENDOFONON
+1D07C ; [*0F4E.0020.0002.1D07C] # BYZANTINE MUSICAL SYMBOL YFEN KATO
+1D07D ; [*0F4F.0020.0002.1D07D] # BYZANTINE MUSICAL SYMBOL YFEN ANO
+1D07E ; [*0F50.0020.0002.1D07E] # BYZANTINE MUSICAL SYMBOL STAVROS
+1D07F ; [*0F51.0020.0002.1D07F] # BYZANTINE MUSICAL SYMBOL KLASMA ANO
+1D080 ; [*0F52.0020.0002.1D080] # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION
+1D081 ; [*0F53.0020.0002.1D081] # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION
+1D082 ; [*0F54.0020.0002.1D082] # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO
+1D083 ; [*0F55.0020.0002.1D083] # BYZANTINE MUSICAL SYMBOL KRATIMA NEO
+1D084 ; [*0F56.0020.0002.1D084] # BYZANTINE MUSICAL SYMBOL APODERMA NEO
+1D085 ; [*0F57.0020.0002.1D085] # BYZANTINE MUSICAL SYMBOL APLI
+1D086 ; [*0F58.0020.0002.1D086] # BYZANTINE MUSICAL SYMBOL DIPLI
+1D087 ; [*0F59.0020.0002.1D087] # BYZANTINE MUSICAL SYMBOL TRIPLI
+1D088 ; [*0F5A.0020.0002.1D088] # BYZANTINE MUSICAL SYMBOL TETRAPLI
+1D089 ; [*0F5B.0020.0002.1D089] # BYZANTINE MUSICAL SYMBOL KORONIS
+1D08A ; [*0F5C.0020.0002.1D08A] # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU
+1D08B ; [*0F5D.0020.0002.1D08B] # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON
+1D08C ; [*0F5E.0020.0002.1D08C] # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON
+1D08D ; [*0F5F.0020.0002.1D08D] # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON
+1D08E ; [*0F60.0020.0002.1D08E] # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU
+1D08F ; [*0F61.0020.0002.1D08F] # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO
+1D090 ; [*0F62.0020.0002.1D090] # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA
+1D091 ; [*0F63.0020.0002.1D091] # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA
+1D092 ; [*0F64.0020.0002.1D092] # BYZANTINE MUSICAL SYMBOL DIGORGON
+1D093 ; [*0F65.0020.0002.1D093] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO
+1D094 ; [*0F66.0020.0002.1D094] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO
+1D095 ; [*0F67.0020.0002.1D095] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA
+1D096 ; [*0F68.0020.0002.1D096] # BYZANTINE MUSICAL SYMBOL TRIGORGON
+1D097 ; [*0F69.0020.0002.1D097] # BYZANTINE MUSICAL SYMBOL ARGON
+1D098 ; [*0F6A.0020.0002.1D098] # BYZANTINE MUSICAL SYMBOL IMIDIARGON
+1D099 ; [*0F6B.0020.0002.1D099] # BYZANTINE MUSICAL SYMBOL DIARGON
+1D09A ; [*0F6C.0020.0002.1D09A] # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI
+1D09B ; [*0F6D.0020.0002.1D09B] # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI
+1D09C ; [*0F6E.0020.0002.1D09C] # BYZANTINE MUSICAL SYMBOL AGOGI ARGI
+1D09D ; [*0F6F.0020.0002.1D09D] # BYZANTINE MUSICAL SYMBOL AGOGI METRIA
+1D09E ; [*0F70.0020.0002.1D09E] # BYZANTINE MUSICAL SYMBOL AGOGI MESI
+1D09F ; [*0F71.0020.0002.1D09F] # BYZANTINE MUSICAL SYMBOL AGOGI GORGI
+1D0A0 ; [*0F72.0020.0002.1D0A0] # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI
+1D0A1 ; [*0F73.0020.0002.1D0A1] # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI
+1D0A2 ; [*0F74.0020.0002.1D0A2] # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS
+1D0A3 ; [*0F75.0020.0002.1D0A3] # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS
+1D0A4 ; [*0F76.0020.0002.1D0A4] # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS
+1D0A5 ; [*0F77.0020.0002.1D0A5] # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS
+1D0A6 ; [*0F78.0020.0002.1D0A6] # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS
+1D0A7 ; [*0F79.0020.0002.1D0A7] # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS
+1D0A8 ; [*0F7A.0020.0002.1D0A8] # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS
+1D0A9 ; [*0F7B.0020.0002.1D0A9] # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS
+1D0AA ; [*0F7C.0020.0002.1D0AA] # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS
+1D0AB ; [*0F7D.0020.0002.1D0AB] # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS
+1D0AC ; [*0F7E.0020.0002.1D0AC] # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS
+1D0AD ; [*0F7F.0020.0002.1D0AD] # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS
+1D0AE ; [*0F80.0020.0002.1D0AE] # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS
+1D0AF ; [*0F81.0020.0002.1D0AF] # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS
+1D0B0 ; [*0F82.0020.0002.1D0B0] # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS
+1D0B1 ; [*0F83.0020.0002.1D0B1] # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS
+1D0B2 ; [*0F84.0020.0002.1D0B2] # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS
+1D0B3 ; [*0F85.0020.0002.1D0B3] # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS
+1D0B4 ; [*0F86.0020.0002.1D0B4] # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN
+1D0B5 ; [*0F87.0020.0002.1D0B5] # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN
+1D0B6 ; [*0F88.0020.0002.1D0B6] # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU
+1D0B7 ; [*0F89.0020.0002.1D0B7] # BYZANTINE MUSICAL SYMBOL IMIFONON
+1D0B8 ; [*0F8A.0020.0002.1D0B8] # BYZANTINE MUSICAL SYMBOL IMIFTHORON
+1D0B9 ; [*0F8B.0020.0002.1D0B9] # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU
+1D0BA ; [*0F8C.0020.0002.1D0BA] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA
+1D0BB ; [*0F8D.0020.0002.1D0BB] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA
+1D0BC ; [*0F8E.0020.0002.1D0BC] # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS
+1D0BD ; [*0F8F.0020.0002.1D0BD] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI
+1D0BE ; [*0F90.0020.0002.1D0BE] # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI
+1D0BF ; [*0F91.0020.0002.1D0BF] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE
+1D0C0 ; [*0F92.0020.0002.1D0C0] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO
+1D0C1 ; [*0F93.0020.0002.1D0C1] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO
+1D0C2 ; [*0F94.0020.0002.1D0C2] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO
+1D0C3 ; [*0F95.0020.0002.1D0C3] # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS
+1D0C4 ; [*0F96.0020.0002.1D0C4] # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS
+1D0C5 ; [*0F97.0020.0002.1D0C5] # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS
+1D0C6 ; [*0F98.0020.0002.1D0C6] # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI
+1D0C7 ; [*0F99.0020.0002.1D0C7] # BYZANTINE MUSICAL SYMBOL FTHORA NENANO
+1D0C8 ; [*0F9A.0020.0002.1D0C8] # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS
+1D0C9 ; [*0F9B.0020.0002.1D0C9] # BYZANTINE MUSICAL SYMBOL CHROA KLITON
+1D0CA ; [*0F9C.0020.0002.1D0CA] # BYZANTINE MUSICAL SYMBOL CHROA SPATHI
+1D0CB ; [*0F9D.0020.0002.1D0CB] # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION
+1D0CC ; [*0F9E.0020.0002.1D0CC] # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA
+1D0CD ; [*0F9F.0020.0002.1D0CD] # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION
+1D0CE ; [*0FA0.0020.0002.1D0CE] # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION
+1D0CF ; [*0FA1.0020.0002.1D0CF] # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION
+1D0D0 ; [*0FA2.0020.0002.1D0D0] # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA
+1D0D1 ; [*0FA3.0020.0002.1D0D1] # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA
+1D0D2 ; [*0FA4.0020.0002.1D0D2] # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA
+1D0D3 ; [*0FA5.0020.0002.1D0D3] # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA
+1D0D4 ; [*0FA6.0020.0002.1D0D4] # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA
+1D0D5 ; [*0FA7.0020.0002.1D0D5] # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA
+1D0D6 ; [*0FA8.0020.0002.1D0D6] # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA
+1D0D7 ; [*0FA9.0020.0002.1D0D7] # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA
+1D0D8 ; [*0FAA.0020.0002.1D0D8] # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS
+1D0D9 ; [*0FAB.0020.0002.1D0D9] # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS
+1D0DA ; [*0FAC.0020.0002.1D0DA] # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI
+1D0DB ; [*0FAD.0020.0002.1D0DB] # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI
+1D0DC ; [*0FAE.0020.0002.1D0DC] # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI
+1D0DD ; [*0FAF.0020.0002.1D0DD] # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS
+1D0DE ; [*0FB0.0020.0002.1D0DE] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS
+1D0DF ; [*0FB1.0020.0002.1D0DF] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU
+1D0E0 ; [*0FB2.0020.0002.1D0E0] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU
+1D0E1 ; [*0FB3.0020.0002.1D0E1] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU
+1D0E2 ; [*0FB4.0020.0002.1D0E2] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS
+1D0E3 ; [*0FB5.0020.0002.1D0E3] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU
+1D0E4 ; [*0FB6.0020.0002.1D0E4] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU
+1D0E5 ; [*0FB7.0020.0002.1D0E5] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU
+1D0E6 ; [*0FB8.0020.0002.1D0E6] # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG
+1D0E7 ; [*0FB9.0020.0002.1D0E7] # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU
+1D0E8 ; [*0FBA.0020.0002.1D0E8] # BYZANTINE MUSICAL SYMBOL STIGMA
+1D0E9 ; [*0FBB.0020.0002.1D0E9] # BYZANTINE MUSICAL SYMBOL ARKTIKO PA
+1D0EA ; [*0FBC.0020.0002.1D0EA] # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU
+1D0EB ; [*0FBD.0020.0002.1D0EB] # BYZANTINE MUSICAL SYMBOL ARKTIKO GA
+1D0EC ; [*0FBE.0020.0002.1D0EC] # BYZANTINE MUSICAL SYMBOL ARKTIKO DI
+1D0ED ; [*0FBF.0020.0002.1D0ED] # BYZANTINE MUSICAL SYMBOL ARKTIKO KE
+1D0EE ; [*0FC0.0020.0002.1D0EE] # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO
+1D0EF ; [*0FC1.0020.0002.1D0EF] # BYZANTINE MUSICAL SYMBOL ARKTIKO NI
+1D0F0 ; [*0FC2.0020.0002.1D0F0] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO
+1D0F1 ; [*0FC3.0020.0002.1D0F1] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO
+1D0F2 ; [*0FC4.0020.0002.1D0F2] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO
+1D0F3 ; [*0FC5.0020.0002.1D0F3] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO
+1D0F4 ; [*0FC6.0020.0002.1D0F4] # BYZANTINE MUSICAL SYMBOL KLASMA KATO
+1D0F5 ; [*0FC7.0020.0002.1D0F5] # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
+1D100 ; [*0FC8.0020.0002.1D100] # MUSICAL SYMBOL SINGLE BARLINE
+1D101 ; [*0FC9.0020.0002.1D101] # MUSICAL SYMBOL DOUBLE BARLINE
+1D102 ; [*0FCA.0020.0002.1D102] # MUSICAL SYMBOL FINAL BARLINE
+1D103 ; [*0FCB.0020.0002.1D103] # MUSICAL SYMBOL REVERSE FINAL BARLINE
+1D104 ; [*0FCC.0020.0002.1D104] # MUSICAL SYMBOL DASHED BARLINE
+1D105 ; [*0FCD.0020.0002.1D105] # MUSICAL SYMBOL SHORT BARLINE
+1D106 ; [*0FCE.0020.0002.1D106] # MUSICAL SYMBOL LEFT REPEAT SIGN
+1D107 ; [*0FCF.0020.0002.1D107] # MUSICAL SYMBOL RIGHT REPEAT SIGN
+1D108 ; [*0FD0.0020.0002.1D108] # MUSICAL SYMBOL REPEAT DOTS
+1D109 ; [*0FD1.0020.0002.1D109] # MUSICAL SYMBOL DAL SEGNO
+1D10A ; [*0FD2.0020.0002.1D10A] # MUSICAL SYMBOL DA CAPO
+1D10B ; [*0FD3.0020.0002.1D10B] # MUSICAL SYMBOL SEGNO
+1D10C ; [*0FD4.0020.0002.1D10C] # MUSICAL SYMBOL CODA
+1D10D ; [*0FD5.0020.0002.1D10D] # MUSICAL SYMBOL REPEATED FIGURE-1
+1D10E ; [*0FD6.0020.0002.1D10E] # MUSICAL SYMBOL REPEATED FIGURE-2
+1D10F ; [*0FD7.0020.0002.1D10F] # MUSICAL SYMBOL REPEATED FIGURE-3
+1D110 ; [*0FD8.0020.0002.1D110] # MUSICAL SYMBOL FERMATA
+1D111 ; [*0FD9.0020.0002.1D111] # MUSICAL SYMBOL FERMATA BELOW
+1D112 ; [*0FDA.0020.0002.1D112] # MUSICAL SYMBOL BREATH MARK
+1D113 ; [*0FDB.0020.0002.1D113] # MUSICAL SYMBOL CAESURA
+1D114 ; [*0FDC.0020.0002.1D114] # MUSICAL SYMBOL BRACE
+1D115 ; [*0FDD.0020.0002.1D115] # MUSICAL SYMBOL BRACKET
+1D116 ; [*0FDE.0020.0002.1D116] # MUSICAL SYMBOL ONE-LINE STAFF
+1D117 ; [*0FDF.0020.0002.1D117] # MUSICAL SYMBOL TWO-LINE STAFF
+1D118 ; [*0FE0.0020.0002.1D118] # MUSICAL SYMBOL THREE-LINE STAFF
+1D119 ; [*0FE1.0020.0002.1D119] # MUSICAL SYMBOL FOUR-LINE STAFF
+1D11A ; [*0FE2.0020.0002.1D11A] # MUSICAL SYMBOL FIVE-LINE STAFF
+1D11B ; [*0FE3.0020.0002.1D11B] # MUSICAL SYMBOL SIX-LINE STAFF
+1D11C ; [*0FE4.0020.0002.1D11C] # MUSICAL SYMBOL SIX-STRING FRETBOARD
+1D11D ; [*0FE5.0020.0002.1D11D] # MUSICAL SYMBOL FOUR-STRING FRETBOARD
+1D11E ; [*0FE6.0020.0002.1D11E] # MUSICAL SYMBOL G CLEF
+1D11F ; [*0FE7.0020.0002.1D11F] # MUSICAL SYMBOL G CLEF OTTAVA ALTA
+1D120 ; [*0FE8.0020.0002.1D120] # MUSICAL SYMBOL G CLEF OTTAVA BASSA
+1D121 ; [*0FE9.0020.0002.1D121] # MUSICAL SYMBOL C CLEF
+1D122 ; [*0FEA.0020.0002.1D122] # MUSICAL SYMBOL F CLEF
+1D123 ; [*0FEB.0020.0002.1D123] # MUSICAL SYMBOL F CLEF OTTAVA ALTA
+1D124 ; [*0FEC.0020.0002.1D124] # MUSICAL SYMBOL F CLEF OTTAVA BASSA
+1D125 ; [*0FED.0020.0002.1D125] # MUSICAL SYMBOL DRUM CLEF-1
+1D126 ; [*0FEE.0020.0002.1D126] # MUSICAL SYMBOL DRUM CLEF-2
+1D129 ; [*1002.0020.0002.1D129] # MUSICAL SYMBOL MULTIPLE MEASURE REST
+1D12A ; [*0FF2.0020.0002.1D12A] # MUSICAL SYMBOL DOUBLE SHARP
+1D12B ; [*0FF3.0020.0002.1D12B] # MUSICAL SYMBOL DOUBLE FLAT
+1D12C ; [*0FF4.0020.0002.1D12C] # MUSICAL SYMBOL FLAT UP
+1D12D ; [*0FF5.0020.0002.1D12D] # MUSICAL SYMBOL FLAT DOWN
+1D12E ; [*0FF6.0020.0002.1D12E] # MUSICAL SYMBOL NATURAL UP
+1D12F ; [*0FF7.0020.0002.1D12F] # MUSICAL SYMBOL NATURAL DOWN
+1D130 ; [*0FF8.0020.0002.1D130] # MUSICAL SYMBOL SHARP UP
+1D131 ; [*0FF9.0020.0002.1D131] # MUSICAL SYMBOL SHARP DOWN
+1D132 ; [*0FFA.0020.0002.1D132] # MUSICAL SYMBOL QUARTER TONE SHARP
+1D133 ; [*0FFB.0020.0002.1D133] # MUSICAL SYMBOL QUARTER TONE FLAT
+1D134 ; [*0FFC.0020.0002.1D134] # MUSICAL SYMBOL COMMON TIME
+1D135 ; [*0FFD.0020.0002.1D135] # MUSICAL SYMBOL CUT TIME
+1D136 ; [*0FFE.0020.0002.1D136] # MUSICAL SYMBOL OTTAVA ALTA
+1D137 ; [*0FFF.0020.0002.1D137] # MUSICAL SYMBOL OTTAVA BASSA
+1D138 ; [*1000.0020.0002.1D138] # MUSICAL SYMBOL QUINDICESIMA ALTA
+1D139 ; [*1001.0020.0002.1D139] # MUSICAL SYMBOL QUINDICESIMA BASSA
+1D13A ; [*1003.0020.0002.1D13A] # MUSICAL SYMBOL MULTI REST
+1D13B ; [*1004.0020.0002.1D13B] # MUSICAL SYMBOL WHOLE REST
+1D13C ; [*1005.0020.0002.1D13C] # MUSICAL SYMBOL HALF REST
+1D13D ; [*1006.0020.0002.1D13D] # MUSICAL SYMBOL QUARTER REST
+1D13E ; [*1007.0020.0002.1D13E] # MUSICAL SYMBOL EIGHTH REST
+1D13F ; [*1008.0020.0002.1D13F] # MUSICAL SYMBOL SIXTEENTH REST
+1D140 ; [*1009.0020.0002.1D140] # MUSICAL SYMBOL THIRTY-SECOND REST
+1D141 ; [*100A.0020.0002.1D141] # MUSICAL SYMBOL SIXTY-FOURTH REST
+1D142 ; [*100B.0020.0002.1D142] # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST
+1D143 ; [*100C.0020.0002.1D143] # MUSICAL SYMBOL X NOTEHEAD
+1D144 ; [*100D.0020.0002.1D144] # MUSICAL SYMBOL PLUS NOTEHEAD
+1D145 ; [*100E.0020.0002.1D145] # MUSICAL SYMBOL CIRCLE X NOTEHEAD
+1D146 ; [*100F.0020.0002.1D146] # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE
+1D147 ; [*1010.0020.0002.1D147] # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK
+1D148 ; [*1011.0020.0002.1D148] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE
+1D149 ; [*1012.0020.0002.1D149] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK
+1D14A ; [*1013.0020.0002.1D14A] # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE
+1D14B ; [*1014.0020.0002.1D14B] # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK
+1D14C ; [*1015.0020.0002.1D14C] # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE
+1D14D ; [*1016.0020.0002.1D14D] # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK
+1D14E ; [*1017.0020.0002.1D14E] # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE
+1D14F ; [*1018.0020.0002.1D14F] # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK
+1D150 ; [*1019.0020.0002.1D150] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE
+1D151 ; [*101A.0020.0002.1D151] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK
+1D152 ; [*101B.0020.0002.1D152] # MUSICAL SYMBOL MOON NOTEHEAD WHITE
+1D153 ; [*101C.0020.0002.1D153] # MUSICAL SYMBOL MOON NOTEHEAD BLACK
+1D154 ; [*101D.0020.0002.1D154] # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE
+1D155 ; [*101E.0020.0002.1D155] # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK
+1D156 ; [*101F.0020.0002.1D156] # MUSICAL SYMBOL PARENTHESIS NOTEHEAD
+1D157 ; [*1020.0020.0002.1D157] # MUSICAL SYMBOL VOID NOTEHEAD
+1D158 ; [*1021.0020.0002.1D158] # MUSICAL SYMBOL NOTEHEAD BLACK
+1D159 ; [*1022.0020.0002.1D159] # MUSICAL SYMBOL NULL NOTEHEAD
+1D15A ; [*1023.0020.0002.1D15A] # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE
+1D15B ; [*1024.0020.0002.1D15B] # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
+1D15C ; [*1025.0020.0002.1D15C] # MUSICAL SYMBOL BREVE
+1D15D ; [*1026.0020.0002.1D15D] # MUSICAL SYMBOL WHOLE NOTE
+1D15E ; [*1020.0020.0002.1D157][.0000.0000.0000.1D165] # MUSICAL SYMBOL HALF NOTE
+1D15F ; [*1021.0020.0002.1D158][.0000.0000.0000.1D165] # MUSICAL SYMBOL QUARTER NOTE
+1D160 ; [*1021.0020.0002.1D158][.0000.0000.0000.1D165][.0000.0000.0000.1D16E] # MUSICAL SYMBOL EIGHTH NOTE
+1D161 ; [*1021.0020.0002.1D158][.0000.0000.0000.1D165][.0000.0000.0000.1D16F] # MUSICAL SYMBOL SIXTEENTH NOTE
+1D162 ; [*1021.0020.0002.1D158][.0000.0000.0000.1D165][.0000.0000.0000.1D170] # MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163 ; [*1021.0020.0002.1D158][.0000.0000.0000.1D165][.0000.0000.0000.1D171] # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164 ; [*1021.0020.0002.1D158][.0000.0000.0000.1D165][.0000.0000.0000.1D172] # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
1D165 ; [.0000.0000.0000.1D165] # MUSICAL SYMBOL COMBINING STEM
1D166 ; [.0000.0000.0000.1D166] # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
1D167 ; [.0000.0000.0000.1D167] # MUSICAL SYMBOL COMBINING TREMOLO-1
1D168 ; [.0000.0000.0000.1D168] # MUSICAL SYMBOL COMBINING TREMOLO-2
1D169 ; [.0000.0000.0000.1D169] # MUSICAL SYMBOL COMBINING TREMOLO-3
-1D16A ; [*100D.0020.0002.1D16A] # MUSICAL SYMBOL FINGERED TREMOLO-1
-1D16B ; [*100E.0020.0002.1D16B] # MUSICAL SYMBOL FINGERED TREMOLO-2
-1D16C ; [*100F.0020.0002.1D16C] # MUSICAL SYMBOL FINGERED TREMOLO-3
+1D16A ; [*1027.0020.0002.1D16A] # MUSICAL SYMBOL FINGERED TREMOLO-1
+1D16B ; [*1028.0020.0002.1D16B] # MUSICAL SYMBOL FINGERED TREMOLO-2
+1D16C ; [*1029.0020.0002.1D16C] # MUSICAL SYMBOL FINGERED TREMOLO-3
1D16D ; [.0000.0000.0000.1D16D] # MUSICAL SYMBOL COMBINING AUGMENTATION DOT
1D16E ; [.0000.0000.0000.1D16E] # MUSICAL SYMBOL COMBINING FLAG-1
1D16F ; [.0000.0000.0000.1D16F] # MUSICAL SYMBOL COMBINING FLAG-2
@@ -4661,8 +4661,8 @@ FFFD ; [*14BE.0020.0002.FFFD] # REPLACEMENT CHARACTER
1D180 ; [.0000.0000.0000.1D180] # MUSICAL SYMBOL COMBINING MARCATO-STACCATO
1D181 ; [.0000.0000.0000.1D181] # MUSICAL SYMBOL COMBINING ACCENT-STACCATO
1D182 ; [.0000.0000.0000.1D182] # MUSICAL SYMBOL COMBINING LOURE
-1D183 ; [*1010.0020.0002.1D183] # MUSICAL SYMBOL ARPEGGIATO UP
-1D184 ; [*1011.0020.0002.1D184] # MUSICAL SYMBOL ARPEGGIATO DOWN
+1D183 ; [*102A.0020.0002.1D183] # MUSICAL SYMBOL ARPEGGIATO UP
+1D184 ; [*102B.0020.0002.1D184] # MUSICAL SYMBOL ARPEGGIATO DOWN
1D185 ; [.0000.0000.0000.1D185] # MUSICAL SYMBOL COMBINING DOIT
1D186 ; [.0000.0000.0000.1D186] # MUSICAL SYMBOL COMBINING RIP
1D187 ; [.0000.0000.0000.1D187] # MUSICAL SYMBOL COMBINING FLIP
@@ -4670,254 +4670,254 @@ FFFD ; [*14BE.0020.0002.FFFD] # REPLACEMENT CHARACTER
1D189 ; [.0000.0000.0000.1D189] # MUSICAL SYMBOL COMBINING BEND
1D18A ; [.0000.0000.0000.1D18A] # MUSICAL SYMBOL COMBINING DOUBLE TONGUE
1D18B ; [.0000.0000.0000.1D18B] # MUSICAL SYMBOL COMBINING TRIPLE TONGUE
-1D18C ; [*1012.0020.0002.1D18C] # MUSICAL SYMBOL RINFORZANDO
-1D18D ; [*1013.0020.0002.1D18D] # MUSICAL SYMBOL SUBITO
-1D18E ; [*1014.0020.0002.1D18E] # MUSICAL SYMBOL Z
-1D18F ; [*1015.0020.0002.1D18F] # MUSICAL SYMBOL PIANO
-1D190 ; [*1016.0020.0002.1D190] # MUSICAL SYMBOL MEZZO
-1D191 ; [*1017.0020.0002.1D191] # MUSICAL SYMBOL FORTE
-1D192 ; [*1018.0020.0002.1D192] # MUSICAL SYMBOL CRESCENDO
-1D193 ; [*1019.0020.0002.1D193] # MUSICAL SYMBOL DECRESCENDO
-1D194 ; [*101A.0020.0002.1D194] # MUSICAL SYMBOL GRACE NOTE SLASH
-1D195 ; [*101B.0020.0002.1D195] # MUSICAL SYMBOL GRACE NOTE NO SLASH
-1D196 ; [*101C.0020.0002.1D196] # MUSICAL SYMBOL TR
-1D197 ; [*101D.0020.0002.1D197] # MUSICAL SYMBOL TURN
-1D198 ; [*101E.0020.0002.1D198] # MUSICAL SYMBOL INVERTED TURN
-1D199 ; [*101F.0020.0002.1D199] # MUSICAL SYMBOL TURN SLASH
-1D19A ; [*1020.0020.0002.1D19A] # MUSICAL SYMBOL TURN UP
-1D19B ; [*1021.0020.0002.1D19B] # MUSICAL SYMBOL ORNAMENT STROKE-1
-1D19C ; [*1022.0020.0002.1D19C] # MUSICAL SYMBOL ORNAMENT STROKE-2
-1D19D ; [*1023.0020.0002.1D19D] # MUSICAL SYMBOL ORNAMENT STROKE-3
-1D19E ; [*1024.0020.0002.1D19E] # MUSICAL SYMBOL ORNAMENT STROKE-4
-1D19F ; [*1025.0020.0002.1D19F] # MUSICAL SYMBOL ORNAMENT STROKE-5
-1D1A0 ; [*1026.0020.0002.1D1A0] # MUSICAL SYMBOL ORNAMENT STROKE-6
-1D1A1 ; [*1027.0020.0002.1D1A1] # MUSICAL SYMBOL ORNAMENT STROKE-7
-1D1A2 ; [*1028.0020.0002.1D1A2] # MUSICAL SYMBOL ORNAMENT STROKE-8
-1D1A3 ; [*1029.0020.0002.1D1A3] # MUSICAL SYMBOL ORNAMENT STROKE-9
-1D1A4 ; [*102A.0020.0002.1D1A4] # MUSICAL SYMBOL ORNAMENT STROKE-10
-1D1A5 ; [*102B.0020.0002.1D1A5] # MUSICAL SYMBOL ORNAMENT STROKE-11
-1D1A6 ; [*102C.0020.0002.1D1A6] # MUSICAL SYMBOL HAUPTSTIMME
-1D1A7 ; [*102D.0020.0002.1D1A7] # MUSICAL SYMBOL NEBENSTIMME
-1D1A8 ; [*102E.0020.0002.1D1A8] # MUSICAL SYMBOL END OF STIMME
-1D1A9 ; [*102F.0020.0002.1D1A9] # MUSICAL SYMBOL DEGREE SLASH
+1D18C ; [*102C.0020.0002.1D18C] # MUSICAL SYMBOL RINFORZANDO
+1D18D ; [*102D.0020.0002.1D18D] # MUSICAL SYMBOL SUBITO
+1D18E ; [*102E.0020.0002.1D18E] # MUSICAL SYMBOL Z
+1D18F ; [*102F.0020.0002.1D18F] # MUSICAL SYMBOL PIANO
+1D190 ; [*1030.0020.0002.1D190] # MUSICAL SYMBOL MEZZO
+1D191 ; [*1031.0020.0002.1D191] # MUSICAL SYMBOL FORTE
+1D192 ; [*1032.0020.0002.1D192] # MUSICAL SYMBOL CRESCENDO
+1D193 ; [*1033.0020.0002.1D193] # MUSICAL SYMBOL DECRESCENDO
+1D194 ; [*1034.0020.0002.1D194] # MUSICAL SYMBOL GRACE NOTE SLASH
+1D195 ; [*1035.0020.0002.1D195] # MUSICAL SYMBOL GRACE NOTE NO SLASH
+1D196 ; [*1036.0020.0002.1D196] # MUSICAL SYMBOL TR
+1D197 ; [*1037.0020.0002.1D197] # MUSICAL SYMBOL TURN
+1D198 ; [*1038.0020.0002.1D198] # MUSICAL SYMBOL INVERTED TURN
+1D199 ; [*1039.0020.0002.1D199] # MUSICAL SYMBOL TURN SLASH
+1D19A ; [*103A.0020.0002.1D19A] # MUSICAL SYMBOL TURN UP
+1D19B ; [*103B.0020.0002.1D19B] # MUSICAL SYMBOL ORNAMENT STROKE-1
+1D19C ; [*103C.0020.0002.1D19C] # MUSICAL SYMBOL ORNAMENT STROKE-2
+1D19D ; [*103D.0020.0002.1D19D] # MUSICAL SYMBOL ORNAMENT STROKE-3
+1D19E ; [*103E.0020.0002.1D19E] # MUSICAL SYMBOL ORNAMENT STROKE-4
+1D19F ; [*103F.0020.0002.1D19F] # MUSICAL SYMBOL ORNAMENT STROKE-5
+1D1A0 ; [*1040.0020.0002.1D1A0] # MUSICAL SYMBOL ORNAMENT STROKE-6
+1D1A1 ; [*1041.0020.0002.1D1A1] # MUSICAL SYMBOL ORNAMENT STROKE-7
+1D1A2 ; [*1042.0020.0002.1D1A2] # MUSICAL SYMBOL ORNAMENT STROKE-8
+1D1A3 ; [*1043.0020.0002.1D1A3] # MUSICAL SYMBOL ORNAMENT STROKE-9
+1D1A4 ; [*1044.0020.0002.1D1A4] # MUSICAL SYMBOL ORNAMENT STROKE-10
+1D1A5 ; [*1045.0020.0002.1D1A5] # MUSICAL SYMBOL ORNAMENT STROKE-11
+1D1A6 ; [*1046.0020.0002.1D1A6] # MUSICAL SYMBOL HAUPTSTIMME
+1D1A7 ; [*1047.0020.0002.1D1A7] # MUSICAL SYMBOL NEBENSTIMME
+1D1A8 ; [*1048.0020.0002.1D1A8] # MUSICAL SYMBOL END OF STIMME
+1D1A9 ; [*1049.0020.0002.1D1A9] # MUSICAL SYMBOL DEGREE SLASH
1D1AA ; [.0000.0000.0000.1D1AA] # MUSICAL SYMBOL COMBINING DOWN BOW
1D1AB ; [.0000.0000.0000.1D1AB] # MUSICAL SYMBOL COMBINING UP BOW
1D1AC ; [.0000.0000.0000.1D1AC] # MUSICAL SYMBOL COMBINING HARMONIC
1D1AD ; [.0000.0000.0000.1D1AD] # MUSICAL SYMBOL COMBINING SNAP PIZZICATO
-1D1AE ; [*1030.0020.0002.1D1AE] # MUSICAL SYMBOL PEDAL MARK
-1D1AF ; [*1031.0020.0002.1D1AF] # MUSICAL SYMBOL PEDAL UP MARK
-1D1B0 ; [*1032.0020.0002.1D1B0] # MUSICAL SYMBOL HALF PEDAL MARK
-1D1B1 ; [*1033.0020.0002.1D1B1] # MUSICAL SYMBOL GLISSANDO UP
-1D1B2 ; [*1034.0020.0002.1D1B2] # MUSICAL SYMBOL GLISSANDO DOWN
-1D1B3 ; [*1035.0020.0002.1D1B3] # MUSICAL SYMBOL WITH FINGERNAILS
-1D1B4 ; [*1036.0020.0002.1D1B4] # MUSICAL SYMBOL DAMP
-1D1B5 ; [*1037.0020.0002.1D1B5] # MUSICAL SYMBOL DAMP ALL
-1D1B6 ; [*1038.0020.0002.1D1B6] # MUSICAL SYMBOL MAXIMA
-1D1B7 ; [*1039.0020.0002.1D1B7] # MUSICAL SYMBOL LONGA
-1D1B8 ; [*103A.0020.0002.1D1B8] # MUSICAL SYMBOL BREVIS
-1D1B9 ; [*103B.0020.0002.1D1B9] # MUSICAL SYMBOL SEMIBREVIS WHITE
-1D1BA ; [*103C.0020.0002.1D1BA] # MUSICAL SYMBOL SEMIBREVIS BLACK
-1D1BB ; [*103B.0020.0002.1D1B9][.0000.0000.0000.1D165] # MUSICAL SYMBOL MINIMA
-1D1BC ; [*103C.0020.0002.1D1BA][.0000.0000.0000.1D165] # MUSICAL SYMBOL MINIMA BLACK
-1D1BD ; [*103B.0020.0002.1D1B9][.0000.0000.0000.1D165][.0000.0000.0000.1D16E] # MUSICAL SYMBOL SEMIMINIMA WHITE
-1D1BE ; [*103C.0020.0002.1D1BA][.0000.0000.0000.1D165][.0000.0000.0000.1D16E] # MUSICAL SYMBOL SEMIMINIMA BLACK
-1D1BF ; [*103B.0020.0002.1D1B9][.0000.0000.0000.1D165][.0000.0000.0000.1D16F] # MUSICAL SYMBOL FUSA WHITE
-1D1C0 ; [*103C.0020.0002.1D1BA][.0000.0000.0000.1D165][.0000.0000.0000.1D16F] # MUSICAL SYMBOL FUSA BLACK
-1D1C1 ; [*103D.0020.0002.1D1C1] # MUSICAL SYMBOL LONGA PERFECTA REST
-1D1C2 ; [*103E.0020.0002.1D1C2] # MUSICAL SYMBOL LONGA IMPERFECTA REST
-1D1C3 ; [*103F.0020.0002.1D1C3] # MUSICAL SYMBOL BREVIS REST
-1D1C4 ; [*1040.0020.0002.1D1C4] # MUSICAL SYMBOL SEMIBREVIS REST
-1D1C5 ; [*1041.0020.0002.1D1C5] # MUSICAL SYMBOL MINIMA REST
-1D1C6 ; [*1042.0020.0002.1D1C6] # MUSICAL SYMBOL SEMIMINIMA REST
-1D1C7 ; [*1043.0020.0002.1D1C7] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA
-1D1C8 ; [*1044.0020.0002.1D1C8] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA
-1D1C9 ; [*1045.0020.0002.1D1C9] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1
-1D1CA ; [*1046.0020.0002.1D1CA] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA
-1D1CB ; [*1047.0020.0002.1D1CB] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA
-1D1CC ; [*1048.0020.0002.1D1CC] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1
-1D1CD ; [*1049.0020.0002.1D1CD] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2
-1D1CE ; [*104A.0020.0002.1D1CE] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3
-1D1CF ; [*104B.0020.0002.1D1CF] # MUSICAL SYMBOL CROIX
-1D1D0 ; [*104C.0020.0002.1D1D0] # MUSICAL SYMBOL GREGORIAN C CLEF
-1D1D1 ; [*104D.0020.0002.1D1D1] # MUSICAL SYMBOL GREGORIAN F CLEF
-1D1D2 ; [*104E.0020.0002.1D1D2] # MUSICAL SYMBOL SQUARE B
-1D1D3 ; [*104F.0020.0002.1D1D3] # MUSICAL SYMBOL VIRGA
-1D1D4 ; [*1050.0020.0002.1D1D4] # MUSICAL SYMBOL PODATUS
-1D1D5 ; [*1051.0020.0002.1D1D5] # MUSICAL SYMBOL CLIVIS
-1D1D6 ; [*1052.0020.0002.1D1D6] # MUSICAL SYMBOL SCANDICUS
-1D1D7 ; [*1053.0020.0002.1D1D7] # MUSICAL SYMBOL CLIMACUS
-1D1D8 ; [*1054.0020.0002.1D1D8] # MUSICAL SYMBOL TORCULUS
-1D1D9 ; [*1055.0020.0002.1D1D9] # MUSICAL SYMBOL PORRECTUS
-1D1DA ; [*1056.0020.0002.1D1DA] # MUSICAL SYMBOL PORRECTUS FLEXUS
-1D1DB ; [*1057.0020.0002.1D1DB] # MUSICAL SYMBOL SCANDICUS FLEXUS
-1D1DC ; [*1058.0020.0002.1D1DC] # MUSICAL SYMBOL TORCULUS RESUPINUS
-1D1DD ; [*1059.0020.0002.1D1DD] # MUSICAL SYMBOL PES SUBPUNCTIS
-1D200 ; [*105A.0020.0002.1D200] # GREEK VOCAL NOTATION SYMBOL-1
-1D201 ; [*105B.0020.0002.1D201] # GREEK VOCAL NOTATION SYMBOL-2
-1D202 ; [*105C.0020.0002.1D202] # GREEK VOCAL NOTATION SYMBOL-3
-1D203 ; [*105D.0020.0002.1D203] # GREEK VOCAL NOTATION SYMBOL-4
-1D204 ; [*105E.0020.0002.1D204] # GREEK VOCAL NOTATION SYMBOL-5
-1D205 ; [*105F.0020.0002.1D205] # GREEK VOCAL NOTATION SYMBOL-6
-1D206 ; [*1060.0020.0002.1D206] # GREEK VOCAL NOTATION SYMBOL-7
-1D207 ; [*1061.0020.0002.1D207] # GREEK VOCAL NOTATION SYMBOL-8
-1D208 ; [*1062.0020.0002.1D208] # GREEK VOCAL NOTATION SYMBOL-9
-1D209 ; [*1063.0020.0002.1D209] # GREEK VOCAL NOTATION SYMBOL-10
-1D20A ; [*1064.0020.0002.1D20A] # GREEK VOCAL NOTATION SYMBOL-11
-1D20B ; [*1065.0020.0002.1D20B] # GREEK VOCAL NOTATION SYMBOL-12
-1D20C ; [*1066.0020.0002.1D20C] # GREEK VOCAL NOTATION SYMBOL-13
-1D20D ; [*1067.0020.0002.1D20D] # GREEK VOCAL NOTATION SYMBOL-14
-1D20E ; [*1068.0020.0002.1D20E] # GREEK VOCAL NOTATION SYMBOL-15
-1D20F ; [*1069.0020.0002.1D20F] # GREEK VOCAL NOTATION SYMBOL-16
-1D210 ; [*106A.0020.0002.1D210] # GREEK VOCAL NOTATION SYMBOL-17
-1D211 ; [*106B.0020.0002.1D211] # GREEK VOCAL NOTATION SYMBOL-18
-1D212 ; [*106C.0020.0002.1D212] # GREEK VOCAL NOTATION SYMBOL-19
-1D213 ; [*106D.0020.0002.1D213] # GREEK VOCAL NOTATION SYMBOL-20
-1D214 ; [*106E.0020.0002.1D214] # GREEK VOCAL NOTATION SYMBOL-21
-1D215 ; [*106F.0020.0002.1D215] # GREEK VOCAL NOTATION SYMBOL-22
-1D216 ; [*1070.0020.0002.1D216] # GREEK VOCAL NOTATION SYMBOL-23
-1D217 ; [*1071.0020.0002.1D217] # GREEK VOCAL NOTATION SYMBOL-24
-1D218 ; [*1072.0020.0002.1D218] # GREEK VOCAL NOTATION SYMBOL-50
-1D219 ; [*1073.0020.0002.1D219] # GREEK VOCAL NOTATION SYMBOL-51
-1D21A ; [*1074.0020.0002.1D21A] # GREEK VOCAL NOTATION SYMBOL-52
-1D21B ; [*1075.0020.0002.1D21B] # GREEK VOCAL NOTATION SYMBOL-53
-1D21C ; [*1076.0020.0002.1D21C] # GREEK VOCAL NOTATION SYMBOL-54
-1D21D ; [*1077.0020.0002.1D21D] # GREEK INSTRUMENTAL NOTATION SYMBOL-1
-1D21E ; [*1078.0020.0002.1D21E] # GREEK INSTRUMENTAL NOTATION SYMBOL-2
-1D21F ; [*1079.0020.0002.1D21F] # GREEK INSTRUMENTAL NOTATION SYMBOL-4
-1D220 ; [*107A.0020.0002.1D220] # GREEK INSTRUMENTAL NOTATION SYMBOL-5
-1D221 ; [*107B.0020.0002.1D221] # GREEK INSTRUMENTAL NOTATION SYMBOL-7
-1D222 ; [*107C.0020.0002.1D222] # GREEK INSTRUMENTAL NOTATION SYMBOL-8
-1D223 ; [*107D.0020.0002.1D223] # GREEK INSTRUMENTAL NOTATION SYMBOL-11
-1D224 ; [*107E.0020.0002.1D224] # GREEK INSTRUMENTAL NOTATION SYMBOL-12
-1D225 ; [*107F.0020.0002.1D225] # GREEK INSTRUMENTAL NOTATION SYMBOL-13
-1D226 ; [*1080.0020.0002.1D226] # GREEK INSTRUMENTAL NOTATION SYMBOL-14
-1D227 ; [*1081.0020.0002.1D227] # GREEK INSTRUMENTAL NOTATION SYMBOL-17
-1D228 ; [*1082.0020.0002.1D228] # GREEK INSTRUMENTAL NOTATION SYMBOL-18
-1D229 ; [*1083.0020.0002.1D229] # GREEK INSTRUMENTAL NOTATION SYMBOL-19
-1D22A ; [*1084.0020.0002.1D22A] # GREEK INSTRUMENTAL NOTATION SYMBOL-23
-1D22B ; [*1085.0020.0002.1D22B] # GREEK INSTRUMENTAL NOTATION SYMBOL-24
-1D22C ; [*1086.0020.0002.1D22C] # GREEK INSTRUMENTAL NOTATION SYMBOL-25
-1D22D ; [*1087.0020.0002.1D22D] # GREEK INSTRUMENTAL NOTATION SYMBOL-26
-1D22E ; [*1088.0020.0002.1D22E] # GREEK INSTRUMENTAL NOTATION SYMBOL-27
-1D22F ; [*1089.0020.0002.1D22F] # GREEK INSTRUMENTAL NOTATION SYMBOL-29
-1D230 ; [*108A.0020.0002.1D230] # GREEK INSTRUMENTAL NOTATION SYMBOL-30
-1D231 ; [*108B.0020.0002.1D231] # GREEK INSTRUMENTAL NOTATION SYMBOL-32
-1D232 ; [*108C.0020.0002.1D232] # GREEK INSTRUMENTAL NOTATION SYMBOL-36
-1D233 ; [*108D.0020.0002.1D233] # GREEK INSTRUMENTAL NOTATION SYMBOL-37
-1D234 ; [*108E.0020.0002.1D234] # GREEK INSTRUMENTAL NOTATION SYMBOL-38
-1D235 ; [*108F.0020.0002.1D235] # GREEK INSTRUMENTAL NOTATION SYMBOL-39
-1D236 ; [*1090.0020.0002.1D236] # GREEK INSTRUMENTAL NOTATION SYMBOL-40
-1D237 ; [*1091.0020.0002.1D237] # GREEK INSTRUMENTAL NOTATION SYMBOL-42
-1D238 ; [*1092.0020.0002.1D238] # GREEK INSTRUMENTAL NOTATION SYMBOL-43
-1D239 ; [*1093.0020.0002.1D239] # GREEK INSTRUMENTAL NOTATION SYMBOL-45
-1D23A ; [*1094.0020.0002.1D23A] # GREEK INSTRUMENTAL NOTATION SYMBOL-47
-1D23B ; [*1095.0020.0002.1D23B] # GREEK INSTRUMENTAL NOTATION SYMBOL-48
-1D23C ; [*1096.0020.0002.1D23C] # GREEK INSTRUMENTAL NOTATION SYMBOL-49
-1D23D ; [*1097.0020.0002.1D23D] # GREEK INSTRUMENTAL NOTATION SYMBOL-50
-1D23E ; [*1098.0020.0002.1D23E] # GREEK INSTRUMENTAL NOTATION SYMBOL-51
-1D23F ; [*1099.0020.0002.1D23F] # GREEK INSTRUMENTAL NOTATION SYMBOL-52
-1D240 ; [*109A.0020.0002.1D240] # GREEK INSTRUMENTAL NOTATION SYMBOL-53
-1D241 ; [*109B.0020.0002.1D241] # GREEK INSTRUMENTAL NOTATION SYMBOL-54
+1D1AE ; [*104A.0020.0002.1D1AE] # MUSICAL SYMBOL PEDAL MARK
+1D1AF ; [*104B.0020.0002.1D1AF] # MUSICAL SYMBOL PEDAL UP MARK
+1D1B0 ; [*104C.0020.0002.1D1B0] # MUSICAL SYMBOL HALF PEDAL MARK
+1D1B1 ; [*104D.0020.0002.1D1B1] # MUSICAL SYMBOL GLISSANDO UP
+1D1B2 ; [*104E.0020.0002.1D1B2] # MUSICAL SYMBOL GLISSANDO DOWN
+1D1B3 ; [*104F.0020.0002.1D1B3] # MUSICAL SYMBOL WITH FINGERNAILS
+1D1B4 ; [*1050.0020.0002.1D1B4] # MUSICAL SYMBOL DAMP
+1D1B5 ; [*1051.0020.0002.1D1B5] # MUSICAL SYMBOL DAMP ALL
+1D1B6 ; [*1052.0020.0002.1D1B6] # MUSICAL SYMBOL MAXIMA
+1D1B7 ; [*1053.0020.0002.1D1B7] # MUSICAL SYMBOL LONGA
+1D1B8 ; [*1054.0020.0002.1D1B8] # MUSICAL SYMBOL BREVIS
+1D1B9 ; [*1055.0020.0002.1D1B9] # MUSICAL SYMBOL SEMIBREVIS WHITE
+1D1BA ; [*1056.0020.0002.1D1BA] # MUSICAL SYMBOL SEMIBREVIS BLACK
+1D1BB ; [*1055.0020.0002.1D1B9][.0000.0000.0000.1D165] # MUSICAL SYMBOL MINIMA
+1D1BC ; [*1056.0020.0002.1D1BA][.0000.0000.0000.1D165] # MUSICAL SYMBOL MINIMA BLACK
+1D1BD ; [*1055.0020.0002.1D1B9][.0000.0000.0000.1D165][.0000.0000.0000.1D16E] # MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE ; [*1056.0020.0002.1D1BA][.0000.0000.0000.1D165][.0000.0000.0000.1D16E] # MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF ; [*1055.0020.0002.1D1B9][.0000.0000.0000.1D165][.0000.0000.0000.1D16F] # MUSICAL SYMBOL FUSA WHITE
+1D1C0 ; [*1056.0020.0002.1D1BA][.0000.0000.0000.1D165][.0000.0000.0000.1D16F] # MUSICAL SYMBOL FUSA BLACK
+1D1C1 ; [*1057.0020.0002.1D1C1] # MUSICAL SYMBOL LONGA PERFECTA REST
+1D1C2 ; [*1058.0020.0002.1D1C2] # MUSICAL SYMBOL LONGA IMPERFECTA REST
+1D1C3 ; [*1059.0020.0002.1D1C3] # MUSICAL SYMBOL BREVIS REST
+1D1C4 ; [*105A.0020.0002.1D1C4] # MUSICAL SYMBOL SEMIBREVIS REST
+1D1C5 ; [*105B.0020.0002.1D1C5] # MUSICAL SYMBOL MINIMA REST
+1D1C6 ; [*105C.0020.0002.1D1C6] # MUSICAL SYMBOL SEMIMINIMA REST
+1D1C7 ; [*105D.0020.0002.1D1C7] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA
+1D1C8 ; [*105E.0020.0002.1D1C8] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA
+1D1C9 ; [*105F.0020.0002.1D1C9] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1
+1D1CA ; [*1060.0020.0002.1D1CA] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA
+1D1CB ; [*1061.0020.0002.1D1CB] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA
+1D1CC ; [*1062.0020.0002.1D1CC] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1
+1D1CD ; [*1063.0020.0002.1D1CD] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2
+1D1CE ; [*1064.0020.0002.1D1CE] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3
+1D1CF ; [*1065.0020.0002.1D1CF] # MUSICAL SYMBOL CROIX
+1D1D0 ; [*1066.0020.0002.1D1D0] # MUSICAL SYMBOL GREGORIAN C CLEF
+1D1D1 ; [*1067.0020.0002.1D1D1] # MUSICAL SYMBOL GREGORIAN F CLEF
+1D1D2 ; [*1068.0020.0002.1D1D2] # MUSICAL SYMBOL SQUARE B
+1D1D3 ; [*1069.0020.0002.1D1D3] # MUSICAL SYMBOL VIRGA
+1D1D4 ; [*106A.0020.0002.1D1D4] # MUSICAL SYMBOL PODATUS
+1D1D5 ; [*106B.0020.0002.1D1D5] # MUSICAL SYMBOL CLIVIS
+1D1D6 ; [*106C.0020.0002.1D1D6] # MUSICAL SYMBOL SCANDICUS
+1D1D7 ; [*106D.0020.0002.1D1D7] # MUSICAL SYMBOL CLIMACUS
+1D1D8 ; [*106E.0020.0002.1D1D8] # MUSICAL SYMBOL TORCULUS
+1D1D9 ; [*106F.0020.0002.1D1D9] # MUSICAL SYMBOL PORRECTUS
+1D1DA ; [*1070.0020.0002.1D1DA] # MUSICAL SYMBOL PORRECTUS FLEXUS
+1D1DB ; [*1071.0020.0002.1D1DB] # MUSICAL SYMBOL SCANDICUS FLEXUS
+1D1DC ; [*1072.0020.0002.1D1DC] # MUSICAL SYMBOL TORCULUS RESUPINUS
+1D1DD ; [*1073.0020.0002.1D1DD] # MUSICAL SYMBOL PES SUBPUNCTIS
+1D200 ; [*1074.0020.0002.1D200] # GREEK VOCAL NOTATION SYMBOL-1
+1D201 ; [*1075.0020.0002.1D201] # GREEK VOCAL NOTATION SYMBOL-2
+1D202 ; [*1076.0020.0002.1D202] # GREEK VOCAL NOTATION SYMBOL-3
+1D203 ; [*1077.0020.0002.1D203] # GREEK VOCAL NOTATION SYMBOL-4
+1D204 ; [*1078.0020.0002.1D204] # GREEK VOCAL NOTATION SYMBOL-5
+1D205 ; [*1079.0020.0002.1D205] # GREEK VOCAL NOTATION SYMBOL-6
+1D206 ; [*107A.0020.0002.1D206] # GREEK VOCAL NOTATION SYMBOL-7
+1D207 ; [*107B.0020.0002.1D207] # GREEK VOCAL NOTATION SYMBOL-8
+1D208 ; [*107C.0020.0002.1D208] # GREEK VOCAL NOTATION SYMBOL-9
+1D209 ; [*107D.0020.0002.1D209] # GREEK VOCAL NOTATION SYMBOL-10
+1D20A ; [*107E.0020.0002.1D20A] # GREEK VOCAL NOTATION SYMBOL-11
+1D20B ; [*107F.0020.0002.1D20B] # GREEK VOCAL NOTATION SYMBOL-12
+1D20C ; [*1080.0020.0002.1D20C] # GREEK VOCAL NOTATION SYMBOL-13
+1D20D ; [*1081.0020.0002.1D20D] # GREEK VOCAL NOTATION SYMBOL-14
+1D20E ; [*1082.0020.0002.1D20E] # GREEK VOCAL NOTATION SYMBOL-15
+1D20F ; [*1083.0020.0002.1D20F] # GREEK VOCAL NOTATION SYMBOL-16
+1D210 ; [*1084.0020.0002.1D210] # GREEK VOCAL NOTATION SYMBOL-17
+1D211 ; [*1085.0020.0002.1D211] # GREEK VOCAL NOTATION SYMBOL-18
+1D212 ; [*1086.0020.0002.1D212] # GREEK VOCAL NOTATION SYMBOL-19
+1D213 ; [*1087.0020.0002.1D213] # GREEK VOCAL NOTATION SYMBOL-20
+1D214 ; [*1088.0020.0002.1D214] # GREEK VOCAL NOTATION SYMBOL-21
+1D215 ; [*1089.0020.0002.1D215] # GREEK VOCAL NOTATION SYMBOL-22
+1D216 ; [*108A.0020.0002.1D216] # GREEK VOCAL NOTATION SYMBOL-23
+1D217 ; [*108B.0020.0002.1D217] # GREEK VOCAL NOTATION SYMBOL-24
+1D218 ; [*108C.0020.0002.1D218] # GREEK VOCAL NOTATION SYMBOL-50
+1D219 ; [*108D.0020.0002.1D219] # GREEK VOCAL NOTATION SYMBOL-51
+1D21A ; [*108E.0020.0002.1D21A] # GREEK VOCAL NOTATION SYMBOL-52
+1D21B ; [*108F.0020.0002.1D21B] # GREEK VOCAL NOTATION SYMBOL-53
+1D21C ; [*1090.0020.0002.1D21C] # GREEK VOCAL NOTATION SYMBOL-54
+1D21D ; [*1091.0020.0002.1D21D] # GREEK INSTRUMENTAL NOTATION SYMBOL-1
+1D21E ; [*1092.0020.0002.1D21E] # GREEK INSTRUMENTAL NOTATION SYMBOL-2
+1D21F ; [*1093.0020.0002.1D21F] # GREEK INSTRUMENTAL NOTATION SYMBOL-4
+1D220 ; [*1094.0020.0002.1D220] # GREEK INSTRUMENTAL NOTATION SYMBOL-5
+1D221 ; [*1095.0020.0002.1D221] # GREEK INSTRUMENTAL NOTATION SYMBOL-7
+1D222 ; [*1096.0020.0002.1D222] # GREEK INSTRUMENTAL NOTATION SYMBOL-8
+1D223 ; [*1097.0020.0002.1D223] # GREEK INSTRUMENTAL NOTATION SYMBOL-11
+1D224 ; [*1098.0020.0002.1D224] # GREEK INSTRUMENTAL NOTATION SYMBOL-12
+1D225 ; [*1099.0020.0002.1D225] # GREEK INSTRUMENTAL NOTATION SYMBOL-13
+1D226 ; [*109A.0020.0002.1D226] # GREEK INSTRUMENTAL NOTATION SYMBOL-14
+1D227 ; [*109B.0020.0002.1D227] # GREEK INSTRUMENTAL NOTATION SYMBOL-17
+1D228 ; [*109C.0020.0002.1D228] # GREEK INSTRUMENTAL NOTATION SYMBOL-18
+1D229 ; [*109D.0020.0002.1D229] # GREEK INSTRUMENTAL NOTATION SYMBOL-19
+1D22A ; [*109E.0020.0002.1D22A] # GREEK INSTRUMENTAL NOTATION SYMBOL-23
+1D22B ; [*109F.0020.0002.1D22B] # GREEK INSTRUMENTAL NOTATION SYMBOL-24
+1D22C ; [*10A0.0020.0002.1D22C] # GREEK INSTRUMENTAL NOTATION SYMBOL-25
+1D22D ; [*10A1.0020.0002.1D22D] # GREEK INSTRUMENTAL NOTATION SYMBOL-26
+1D22E ; [*10A2.0020.0002.1D22E] # GREEK INSTRUMENTAL NOTATION SYMBOL-27
+1D22F ; [*10A3.0020.0002.1D22F] # GREEK INSTRUMENTAL NOTATION SYMBOL-29
+1D230 ; [*10A4.0020.0002.1D230] # GREEK INSTRUMENTAL NOTATION SYMBOL-30
+1D231 ; [*10A5.0020.0002.1D231] # GREEK INSTRUMENTAL NOTATION SYMBOL-32
+1D232 ; [*10A6.0020.0002.1D232] # GREEK INSTRUMENTAL NOTATION SYMBOL-36
+1D233 ; [*10A7.0020.0002.1D233] # GREEK INSTRUMENTAL NOTATION SYMBOL-37
+1D234 ; [*10A8.0020.0002.1D234] # GREEK INSTRUMENTAL NOTATION SYMBOL-38
+1D235 ; [*10A9.0020.0002.1D235] # GREEK INSTRUMENTAL NOTATION SYMBOL-39
+1D236 ; [*10AA.0020.0002.1D236] # GREEK INSTRUMENTAL NOTATION SYMBOL-40
+1D237 ; [*10AB.0020.0002.1D237] # GREEK INSTRUMENTAL NOTATION SYMBOL-42
+1D238 ; [*10AC.0020.0002.1D238] # GREEK INSTRUMENTAL NOTATION SYMBOL-43
+1D239 ; [*10AD.0020.0002.1D239] # GREEK INSTRUMENTAL NOTATION SYMBOL-45
+1D23A ; [*10AE.0020.0002.1D23A] # GREEK INSTRUMENTAL NOTATION SYMBOL-47
+1D23B ; [*10AF.0020.0002.1D23B] # GREEK INSTRUMENTAL NOTATION SYMBOL-48
+1D23C ; [*10B0.0020.0002.1D23C] # GREEK INSTRUMENTAL NOTATION SYMBOL-49
+1D23D ; [*10B1.0020.0002.1D23D] # GREEK INSTRUMENTAL NOTATION SYMBOL-50
+1D23E ; [*10B2.0020.0002.1D23E] # GREEK INSTRUMENTAL NOTATION SYMBOL-51
+1D23F ; [*10B3.0020.0002.1D23F] # GREEK INSTRUMENTAL NOTATION SYMBOL-52
+1D240 ; [*10B4.0020.0002.1D240] # GREEK INSTRUMENTAL NOTATION SYMBOL-53
+1D241 ; [*10B5.0020.0002.1D241] # GREEK INSTRUMENTAL NOTATION SYMBOL-54
1D242 ; [.0000.0000.0000.1D242] # COMBINING GREEK MUSICAL TRISEME
1D243 ; [.0000.0000.0000.1D243] # COMBINING GREEK MUSICAL TETRASEME
1D244 ; [.0000.0000.0000.1D244] # COMBINING GREEK MUSICAL PENTASEME
-1D245 ; [*109C.0020.0002.1D245] # GREEK MUSICAL LEIMMA
-1D300 ; [*0DD7.0020.0002.1D300] # MONOGRAM FOR EARTH
-1D301 ; [*0DD8.0020.0002.1D301] # DIGRAM FOR HEAVENLY EARTH
-1D302 ; [*0DD9.0020.0002.1D302] # DIGRAM FOR HUMAN EARTH
-1D303 ; [*0DDA.0020.0002.1D303] # DIGRAM FOR EARTHLY HEAVEN
-1D304 ; [*0DDB.0020.0002.1D304] # DIGRAM FOR EARTHLY HUMAN
-1D305 ; [*0DDC.0020.0002.1D305] # DIGRAM FOR EARTH
-1D306 ; [*0DDD.0020.0002.1D306] # TETRAGRAM FOR CENTRE
-1D307 ; [*0DDE.0020.0002.1D307] # TETRAGRAM FOR FULL CIRCLE
-1D308 ; [*0DDF.0020.0002.1D308] # TETRAGRAM FOR MIRED
-1D309 ; [*0DE0.0020.0002.1D309] # TETRAGRAM FOR BARRIER
-1D30A ; [*0DE1.0020.0002.1D30A] # TETRAGRAM FOR KEEPING SMALL
-1D30B ; [*0DE2.0020.0002.1D30B] # TETRAGRAM FOR CONTRARIETY
-1D30C ; [*0DE3.0020.0002.1D30C] # TETRAGRAM FOR ASCENT
-1D30D ; [*0DE4.0020.0002.1D30D] # TETRAGRAM FOR OPPOSITION
-1D30E ; [*0DE5.0020.0002.1D30E] # TETRAGRAM FOR BRANCHING OUT
-1D30F ; [*0DE6.0020.0002.1D30F] # TETRAGRAM FOR DEFECTIVENESS OR DISTORTION
-1D310 ; [*0DE7.0020.0002.1D310] # TETRAGRAM FOR DIVERGENCE
-1D311 ; [*0DE8.0020.0002.1D311] # TETRAGRAM FOR YOUTHFULNESS
-1D312 ; [*0DE9.0020.0002.1D312] # TETRAGRAM FOR INCREASE
-1D313 ; [*0DEA.0020.0002.1D313] # TETRAGRAM FOR PENETRATION
-1D314 ; [*0DEB.0020.0002.1D314] # TETRAGRAM FOR REACH
-1D315 ; [*0DEC.0020.0002.1D315] # TETRAGRAM FOR CONTACT
-1D316 ; [*0DED.0020.0002.1D316] # TETRAGRAM FOR HOLDING BACK
-1D317 ; [*0DEE.0020.0002.1D317] # TETRAGRAM FOR WAITING
-1D318 ; [*0DEF.0020.0002.1D318] # TETRAGRAM FOR FOLLOWING
-1D319 ; [*0DF0.0020.0002.1D319] # TETRAGRAM FOR ADVANCE
-1D31A ; [*0DF1.0020.0002.1D31A] # TETRAGRAM FOR RELEASE
-1D31B ; [*0DF2.0020.0002.1D31B] # TETRAGRAM FOR RESISTANCE
-1D31C ; [*0DF3.0020.0002.1D31C] # TETRAGRAM FOR EASE
-1D31D ; [*0DF4.0020.0002.1D31D] # TETRAGRAM FOR JOY
-1D31E ; [*0DF5.0020.0002.1D31E] # TETRAGRAM FOR CONTENTION
-1D31F ; [*0DF6.0020.0002.1D31F] # TETRAGRAM FOR ENDEAVOUR
-1D320 ; [*0DF7.0020.0002.1D320] # TETRAGRAM FOR DUTIES
-1D321 ; [*0DF8.0020.0002.1D321] # TETRAGRAM FOR CHANGE
-1D322 ; [*0DF9.0020.0002.1D322] # TETRAGRAM FOR DECISIVENESS
-1D323 ; [*0DFA.0020.0002.1D323] # TETRAGRAM FOR BOLD RESOLUTION
-1D324 ; [*0DFB.0020.0002.1D324] # TETRAGRAM FOR PACKING
-1D325 ; [*0DFC.0020.0002.1D325] # TETRAGRAM FOR LEGION
-1D326 ; [*0DFD.0020.0002.1D326] # TETRAGRAM FOR CLOSENESS
-1D327 ; [*0DFE.0020.0002.1D327] # TETRAGRAM FOR KINSHIP
-1D328 ; [*0DFF.0020.0002.1D328] # TETRAGRAM FOR GATHERING
-1D329 ; [*0E00.0020.0002.1D329] # TETRAGRAM FOR STRENGTH
-1D32A ; [*0E01.0020.0002.1D32A] # TETRAGRAM FOR PURITY
-1D32B ; [*0E02.0020.0002.1D32B] # TETRAGRAM FOR FULLNESS
-1D32C ; [*0E03.0020.0002.1D32C] # TETRAGRAM FOR RESIDENCE
-1D32D ; [*0E04.0020.0002.1D32D] # TETRAGRAM FOR LAW OR MODEL
-1D32E ; [*0E05.0020.0002.1D32E] # TETRAGRAM FOR RESPONSE
-1D32F ; [*0E06.0020.0002.1D32F] # TETRAGRAM FOR GOING TO MEET
-1D330 ; [*0E07.0020.0002.1D330] # TETRAGRAM FOR ENCOUNTERS
-1D331 ; [*0E08.0020.0002.1D331] # TETRAGRAM FOR STOVE
-1D332 ; [*0E09.0020.0002.1D332] # TETRAGRAM FOR GREATNESS
-1D333 ; [*0E0A.0020.0002.1D333] # TETRAGRAM FOR ENLARGEMENT
-1D334 ; [*0E0B.0020.0002.1D334] # TETRAGRAM FOR PATTERN
-1D335 ; [*0E0C.0020.0002.1D335] # TETRAGRAM FOR RITUAL
-1D336 ; [*0E0D.0020.0002.1D336] # TETRAGRAM FOR FLIGHT
-1D337 ; [*0E0E.0020.0002.1D337] # TETRAGRAM FOR VASTNESS OR WASTING
-1D338 ; [*0E0F.0020.0002.1D338] # TETRAGRAM FOR CONSTANCY
-1D339 ; [*0E10.0020.0002.1D339] # TETRAGRAM FOR MEASURE
-1D33A ; [*0E11.0020.0002.1D33A] # TETRAGRAM FOR ETERNITY
-1D33B ; [*0E12.0020.0002.1D33B] # TETRAGRAM FOR UNITY
-1D33C ; [*0E13.0020.0002.1D33C] # TETRAGRAM FOR DIMINISHMENT
-1D33D ; [*0E14.0020.0002.1D33D] # TETRAGRAM FOR CLOSED MOUTH
-1D33E ; [*0E15.0020.0002.1D33E] # TETRAGRAM FOR GUARDEDNESS
-1D33F ; [*0E16.0020.0002.1D33F] # TETRAGRAM FOR GATHERING IN
-1D340 ; [*0E17.0020.0002.1D340] # TETRAGRAM FOR MASSING
-1D341 ; [*0E18.0020.0002.1D341] # TETRAGRAM FOR ACCUMULATION
-1D342 ; [*0E19.0020.0002.1D342] # TETRAGRAM FOR EMBELLISHMENT
-1D343 ; [*0E1A.0020.0002.1D343] # TETRAGRAM FOR DOUBT
-1D344 ; [*0E1B.0020.0002.1D344] # TETRAGRAM FOR WATCH
-1D345 ; [*0E1C.0020.0002.1D345] # TETRAGRAM FOR SINKING
-1D346 ; [*0E1D.0020.0002.1D346] # TETRAGRAM FOR INNER
-1D347 ; [*0E1E.0020.0002.1D347] # TETRAGRAM FOR DEPARTURE
-1D348 ; [*0E1F.0020.0002.1D348] # TETRAGRAM FOR DARKENING
-1D349 ; [*0E20.0020.0002.1D349] # TETRAGRAM FOR DIMMING
-1D34A ; [*0E21.0020.0002.1D34A] # TETRAGRAM FOR EXHAUSTION
-1D34B ; [*0E22.0020.0002.1D34B] # TETRAGRAM FOR SEVERANCE
-1D34C ; [*0E23.0020.0002.1D34C] # TETRAGRAM FOR STOPPAGE
-1D34D ; [*0E24.0020.0002.1D34D] # TETRAGRAM FOR HARDNESS
-1D34E ; [*0E25.0020.0002.1D34E] # TETRAGRAM FOR COMPLETION
-1D34F ; [*0E26.0020.0002.1D34F] # TETRAGRAM FOR CLOSURE
-1D350 ; [*0E27.0020.0002.1D350] # TETRAGRAM FOR FAILURE
-1D351 ; [*0E28.0020.0002.1D351] # TETRAGRAM FOR AGGRAVATION
-1D352 ; [*0E29.0020.0002.1D352] # TETRAGRAM FOR COMPLIANCE
-1D353 ; [*0E2A.0020.0002.1D353] # TETRAGRAM FOR ON THE VERGE
-1D354 ; [*0E2B.0020.0002.1D354] # TETRAGRAM FOR DIFFICULTIES
-1D355 ; [*0E2C.0020.0002.1D355] # TETRAGRAM FOR LABOURING
-1D356 ; [*0E2D.0020.0002.1D356] # TETRAGRAM FOR FOSTERING
-1D369 ; [*1585.0020.0002.1D369] # COUNTING ROD TENS DIGIT ONE
-1D36A ; [*1586.0020.0002.1D36A] # COUNTING ROD TENS DIGIT TWO
-1D36B ; [*1587.0020.0002.1D36B] # COUNTING ROD TENS DIGIT THREE
-1D36C ; [*1588.0020.0002.1D36C] # COUNTING ROD TENS DIGIT FOUR
-1D36D ; [*1589.0020.0002.1D36D] # COUNTING ROD TENS DIGIT FIVE
-1D36E ; [*158A.0020.0002.1D36E] # COUNTING ROD TENS DIGIT SIX
-1D36F ; [*158B.0020.0002.1D36F] # COUNTING ROD TENS DIGIT SEVEN
-1D370 ; [*158C.0020.0002.1D370] # COUNTING ROD TENS DIGIT EIGHT
-1D371 ; [*158D.0020.0002.1D371] # COUNTING ROD TENS DIGIT NINE
+1D245 ; [*10B6.0020.0002.1D245] # GREEK MUSICAL LEIMMA
+1D300 ; [*0DF1.0020.0002.1D300] # MONOGRAM FOR EARTH
+1D301 ; [*0DF2.0020.0002.1D301] # DIGRAM FOR HEAVENLY EARTH
+1D302 ; [*0DF3.0020.0002.1D302] # DIGRAM FOR HUMAN EARTH
+1D303 ; [*0DF4.0020.0002.1D303] # DIGRAM FOR EARTHLY HEAVEN
+1D304 ; [*0DF5.0020.0002.1D304] # DIGRAM FOR EARTHLY HUMAN
+1D305 ; [*0DF6.0020.0002.1D305] # DIGRAM FOR EARTH
+1D306 ; [*0DF7.0020.0002.1D306] # TETRAGRAM FOR CENTRE
+1D307 ; [*0DF8.0020.0002.1D307] # TETRAGRAM FOR FULL CIRCLE
+1D308 ; [*0DF9.0020.0002.1D308] # TETRAGRAM FOR MIRED
+1D309 ; [*0DFA.0020.0002.1D309] # TETRAGRAM FOR BARRIER
+1D30A ; [*0DFB.0020.0002.1D30A] # TETRAGRAM FOR KEEPING SMALL
+1D30B ; [*0DFC.0020.0002.1D30B] # TETRAGRAM FOR CONTRARIETY
+1D30C ; [*0DFD.0020.0002.1D30C] # TETRAGRAM FOR ASCENT
+1D30D ; [*0DFE.0020.0002.1D30D] # TETRAGRAM FOR OPPOSITION
+1D30E ; [*0DFF.0020.0002.1D30E] # TETRAGRAM FOR BRANCHING OUT
+1D30F ; [*0E00.0020.0002.1D30F] # TETRAGRAM FOR DEFECTIVENESS OR DISTORTION
+1D310 ; [*0E01.0020.0002.1D310] # TETRAGRAM FOR DIVERGENCE
+1D311 ; [*0E02.0020.0002.1D311] # TETRAGRAM FOR YOUTHFULNESS
+1D312 ; [*0E03.0020.0002.1D312] # TETRAGRAM FOR INCREASE
+1D313 ; [*0E04.0020.0002.1D313] # TETRAGRAM FOR PENETRATION
+1D314 ; [*0E05.0020.0002.1D314] # TETRAGRAM FOR REACH
+1D315 ; [*0E06.0020.0002.1D315] # TETRAGRAM FOR CONTACT
+1D316 ; [*0E07.0020.0002.1D316] # TETRAGRAM FOR HOLDING BACK
+1D317 ; [*0E08.0020.0002.1D317] # TETRAGRAM FOR WAITING
+1D318 ; [*0E09.0020.0002.1D318] # TETRAGRAM FOR FOLLOWING
+1D319 ; [*0E0A.0020.0002.1D319] # TETRAGRAM FOR ADVANCE
+1D31A ; [*0E0B.0020.0002.1D31A] # TETRAGRAM FOR RELEASE
+1D31B ; [*0E0C.0020.0002.1D31B] # TETRAGRAM FOR RESISTANCE
+1D31C ; [*0E0D.0020.0002.1D31C] # TETRAGRAM FOR EASE
+1D31D ; [*0E0E.0020.0002.1D31D] # TETRAGRAM FOR JOY
+1D31E ; [*0E0F.0020.0002.1D31E] # TETRAGRAM FOR CONTENTION
+1D31F ; [*0E10.0020.0002.1D31F] # TETRAGRAM FOR ENDEAVOUR
+1D320 ; [*0E11.0020.0002.1D320] # TETRAGRAM FOR DUTIES
+1D321 ; [*0E12.0020.0002.1D321] # TETRAGRAM FOR CHANGE
+1D322 ; [*0E13.0020.0002.1D322] # TETRAGRAM FOR DECISIVENESS
+1D323 ; [*0E14.0020.0002.1D323] # TETRAGRAM FOR BOLD RESOLUTION
+1D324 ; [*0E15.0020.0002.1D324] # TETRAGRAM FOR PACKING
+1D325 ; [*0E16.0020.0002.1D325] # TETRAGRAM FOR LEGION
+1D326 ; [*0E17.0020.0002.1D326] # TETRAGRAM FOR CLOSENESS
+1D327 ; [*0E18.0020.0002.1D327] # TETRAGRAM FOR KINSHIP
+1D328 ; [*0E19.0020.0002.1D328] # TETRAGRAM FOR GATHERING
+1D329 ; [*0E1A.0020.0002.1D329] # TETRAGRAM FOR STRENGTH
+1D32A ; [*0E1B.0020.0002.1D32A] # TETRAGRAM FOR PURITY
+1D32B ; [*0E1C.0020.0002.1D32B] # TETRAGRAM FOR FULLNESS
+1D32C ; [*0E1D.0020.0002.1D32C] # TETRAGRAM FOR RESIDENCE
+1D32D ; [*0E1E.0020.0002.1D32D] # TETRAGRAM FOR LAW OR MODEL
+1D32E ; [*0E1F.0020.0002.1D32E] # TETRAGRAM FOR RESPONSE
+1D32F ; [*0E20.0020.0002.1D32F] # TETRAGRAM FOR GOING TO MEET
+1D330 ; [*0E21.0020.0002.1D330] # TETRAGRAM FOR ENCOUNTERS
+1D331 ; [*0E22.0020.0002.1D331] # TETRAGRAM FOR STOVE
+1D332 ; [*0E23.0020.0002.1D332] # TETRAGRAM FOR GREATNESS
+1D333 ; [*0E24.0020.0002.1D333] # TETRAGRAM FOR ENLARGEMENT
+1D334 ; [*0E25.0020.0002.1D334] # TETRAGRAM FOR PATTERN
+1D335 ; [*0E26.0020.0002.1D335] # TETRAGRAM FOR RITUAL
+1D336 ; [*0E27.0020.0002.1D336] # TETRAGRAM FOR FLIGHT
+1D337 ; [*0E28.0020.0002.1D337] # TETRAGRAM FOR VASTNESS OR WASTING
+1D338 ; [*0E29.0020.0002.1D338] # TETRAGRAM FOR CONSTANCY
+1D339 ; [*0E2A.0020.0002.1D339] # TETRAGRAM FOR MEASURE
+1D33A ; [*0E2B.0020.0002.1D33A] # TETRAGRAM FOR ETERNITY
+1D33B ; [*0E2C.0020.0002.1D33B] # TETRAGRAM FOR UNITY
+1D33C ; [*0E2D.0020.0002.1D33C] # TETRAGRAM FOR DIMINISHMENT
+1D33D ; [*0E2E.0020.0002.1D33D] # TETRAGRAM FOR CLOSED MOUTH
+1D33E ; [*0E2F.0020.0002.1D33E] # TETRAGRAM FOR GUARDEDNESS
+1D33F ; [*0E30.0020.0002.1D33F] # TETRAGRAM FOR GATHERING IN
+1D340 ; [*0E31.0020.0002.1D340] # TETRAGRAM FOR MASSING
+1D341 ; [*0E32.0020.0002.1D341] # TETRAGRAM FOR ACCUMULATION
+1D342 ; [*0E33.0020.0002.1D342] # TETRAGRAM FOR EMBELLISHMENT
+1D343 ; [*0E34.0020.0002.1D343] # TETRAGRAM FOR DOUBT
+1D344 ; [*0E35.0020.0002.1D344] # TETRAGRAM FOR WATCH
+1D345 ; [*0E36.0020.0002.1D345] # TETRAGRAM FOR SINKING
+1D346 ; [*0E37.0020.0002.1D346] # TETRAGRAM FOR INNER
+1D347 ; [*0E38.0020.0002.1D347] # TETRAGRAM FOR DEPARTURE
+1D348 ; [*0E39.0020.0002.1D348] # TETRAGRAM FOR DARKENING
+1D349 ; [*0E3A.0020.0002.1D349] # TETRAGRAM FOR DIMMING
+1D34A ; [*0E3B.0020.0002.1D34A] # TETRAGRAM FOR EXHAUSTION
+1D34B ; [*0E3C.0020.0002.1D34B] # TETRAGRAM FOR SEVERANCE
+1D34C ; [*0E3D.0020.0002.1D34C] # TETRAGRAM FOR STOPPAGE
+1D34D ; [*0E3E.0020.0002.1D34D] # TETRAGRAM FOR HARDNESS
+1D34E ; [*0E3F.0020.0002.1D34E] # TETRAGRAM FOR COMPLETION
+1D34F ; [*0E40.0020.0002.1D34F] # TETRAGRAM FOR CLOSURE
+1D350 ; [*0E41.0020.0002.1D350] # TETRAGRAM FOR FAILURE
+1D351 ; [*0E42.0020.0002.1D351] # TETRAGRAM FOR AGGRAVATION
+1D352 ; [*0E43.0020.0002.1D352] # TETRAGRAM FOR COMPLIANCE
+1D353 ; [*0E44.0020.0002.1D353] # TETRAGRAM FOR ON THE VERGE
+1D354 ; [*0E45.0020.0002.1D354] # TETRAGRAM FOR DIFFICULTIES
+1D355 ; [*0E46.0020.0002.1D355] # TETRAGRAM FOR LABOURING
+1D356 ; [*0E47.0020.0002.1D356] # TETRAGRAM FOR FOSTERING
+1D369 ; [*159F.0020.0002.1D369] # COUNTING ROD TENS DIGIT ONE
+1D36A ; [*15A0.0020.0002.1D36A] # COUNTING ROD TENS DIGIT TWO
+1D36B ; [*15A1.0020.0002.1D36B] # COUNTING ROD TENS DIGIT THREE
+1D36C ; [*15A2.0020.0002.1D36C] # COUNTING ROD TENS DIGIT FOUR
+1D36D ; [*15A3.0020.0002.1D36D] # COUNTING ROD TENS DIGIT FIVE
+1D36E ; [*15A4.0020.0002.1D36E] # COUNTING ROD TENS DIGIT SIX
+1D36F ; [*15A5.0020.0002.1D36F] # COUNTING ROD TENS DIGIT SEVEN
+1D370 ; [*15A6.0020.0002.1D370] # COUNTING ROD TENS DIGIT EIGHT
+1D371 ; [*15A7.0020.0002.1D371] # COUNTING ROD TENS DIGIT NINE
1D6C1 ; [*0592.0020.0005.1D6C1] # MATHEMATICAL BOLD NABLA
1D6DB ; [*058E.0020.0005.1D6DB] # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
1D6FB ; [*0592.0020.0005.1D6FB] # MATHEMATICAL ITALIC NABLA
@@ -4930,1004 +4930,1030 @@ FFFD ; [*14BE.0020.0002.FFFD] # REPLACEMENT CHARACTER
1D7C3 ; [*058E.0020.0005.1D7C3] # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
1EEF0 ; [*0485.0020.0002.1EEF0] # ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL
1EEF1 ; [*0486.0020.0002.1EEF1] # ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
-1F000 ; [*109D.0020.0002.1F000] # MAHJONG TILE EAST WIND
-1F001 ; [*109E.0020.0002.1F001] # MAHJONG TILE SOUTH WIND
-1F002 ; [*109F.0020.0002.1F002] # MAHJONG TILE WEST WIND
-1F003 ; [*10A0.0020.0002.1F003] # MAHJONG TILE NORTH WIND
-1F004 ; [*10A1.0020.0002.1F004] # MAHJONG TILE RED DRAGON
-1F005 ; [*10A2.0020.0002.1F005] # MAHJONG TILE GREEN DRAGON
-1F006 ; [*10A3.0020.0002.1F006] # MAHJONG TILE WHITE DRAGON
-1F007 ; [*10A4.0020.0002.1F007] # MAHJONG TILE ONE OF CHARACTERS
-1F008 ; [*10A5.0020.0002.1F008] # MAHJONG TILE TWO OF CHARACTERS
-1F009 ; [*10A6.0020.0002.1F009] # MAHJONG TILE THREE OF CHARACTERS
-1F00A ; [*10A7.0020.0002.1F00A] # MAHJONG TILE FOUR OF CHARACTERS
-1F00B ; [*10A8.0020.0002.1F00B] # MAHJONG TILE FIVE OF CHARACTERS
-1F00C ; [*10A9.0020.0002.1F00C] # MAHJONG TILE SIX OF CHARACTERS
-1F00D ; [*10AA.0020.0002.1F00D] # MAHJONG TILE SEVEN OF CHARACTERS
-1F00E ; [*10AB.0020.0002.1F00E] # MAHJONG TILE EIGHT OF CHARACTERS
-1F00F ; [*10AC.0020.0002.1F00F] # MAHJONG TILE NINE OF CHARACTERS
-1F010 ; [*10AD.0020.0002.1F010] # MAHJONG TILE ONE OF BAMBOOS
-1F011 ; [*10AE.0020.0002.1F011] # MAHJONG TILE TWO OF BAMBOOS
-1F012 ; [*10AF.0020.0002.1F012] # MAHJONG TILE THREE OF BAMBOOS
-1F013 ; [*10B0.0020.0002.1F013] # MAHJONG TILE FOUR OF BAMBOOS
-1F014 ; [*10B1.0020.0002.1F014] # MAHJONG TILE FIVE OF BAMBOOS
-1F015 ; [*10B2.0020.0002.1F015] # MAHJONG TILE SIX OF BAMBOOS
-1F016 ; [*10B3.0020.0002.1F016] # MAHJONG TILE SEVEN OF BAMBOOS
-1F017 ; [*10B4.0020.0002.1F017] # MAHJONG TILE EIGHT OF BAMBOOS
-1F018 ; [*10B5.0020.0002.1F018] # MAHJONG TILE NINE OF BAMBOOS
-1F019 ; [*10B6.0020.0002.1F019] # MAHJONG TILE ONE OF CIRCLES
-1F01A ; [*10B7.0020.0002.1F01A] # MAHJONG TILE TWO OF CIRCLES
-1F01B ; [*10B8.0020.0002.1F01B] # MAHJONG TILE THREE OF CIRCLES
-1F01C ; [*10B9.0020.0002.1F01C] # MAHJONG TILE FOUR OF CIRCLES
-1F01D ; [*10BA.0020.0002.1F01D] # MAHJONG TILE FIVE OF CIRCLES
-1F01E ; [*10BB.0020.0002.1F01E] # MAHJONG TILE SIX OF CIRCLES
-1F01F ; [*10BC.0020.0002.1F01F] # MAHJONG TILE SEVEN OF CIRCLES
-1F020 ; [*10BD.0020.0002.1F020] # MAHJONG TILE EIGHT OF CIRCLES
-1F021 ; [*10BE.0020.0002.1F021] # MAHJONG TILE NINE OF CIRCLES
-1F022 ; [*10BF.0020.0002.1F022] # MAHJONG TILE PLUM
-1F023 ; [*10C0.0020.0002.1F023] # MAHJONG TILE ORCHID
-1F024 ; [*10C1.0020.0002.1F024] # MAHJONG TILE BAMBOO
-1F025 ; [*10C2.0020.0002.1F025] # MAHJONG TILE CHRYSANTHEMUM
-1F026 ; [*10C3.0020.0002.1F026] # MAHJONG TILE SPRING
-1F027 ; [*10C4.0020.0002.1F027] # MAHJONG TILE SUMMER
-1F028 ; [*10C5.0020.0002.1F028] # MAHJONG TILE AUTUMN
-1F029 ; [*10C6.0020.0002.1F029] # MAHJONG TILE WINTER
-1F02A ; [*10C7.0020.0002.1F02A] # MAHJONG TILE JOKER
-1F02B ; [*10C8.0020.0002.1F02B] # MAHJONG TILE BACK
-1F030 ; [*10C9.0020.0002.1F030] # DOMINO TILE HORIZONTAL BACK
-1F031 ; [*10CA.0020.0002.1F031] # DOMINO TILE HORIZONTAL-00-00
-1F032 ; [*10CB.0020.0002.1F032] # DOMINO TILE HORIZONTAL-00-01
-1F033 ; [*10CC.0020.0002.1F033] # DOMINO TILE HORIZONTAL-00-02
-1F034 ; [*10CD.0020.0002.1F034] # DOMINO TILE HORIZONTAL-00-03
-1F035 ; [*10CE.0020.0002.1F035] # DOMINO TILE HORIZONTAL-00-04
-1F036 ; [*10CF.0020.0002.1F036] # DOMINO TILE HORIZONTAL-00-05
-1F037 ; [*10D0.0020.0002.1F037] # DOMINO TILE HORIZONTAL-00-06
-1F038 ; [*10D1.0020.0002.1F038] # DOMINO TILE HORIZONTAL-01-00
-1F039 ; [*10D2.0020.0002.1F039] # DOMINO TILE HORIZONTAL-01-01
-1F03A ; [*10D3.0020.0002.1F03A] # DOMINO TILE HORIZONTAL-01-02
-1F03B ; [*10D4.0020.0002.1F03B] # DOMINO TILE HORIZONTAL-01-03
-1F03C ; [*10D5.0020.0002.1F03C] # DOMINO TILE HORIZONTAL-01-04
-1F03D ; [*10D6.0020.0002.1F03D] # DOMINO TILE HORIZONTAL-01-05
-1F03E ; [*10D7.0020.0002.1F03E] # DOMINO TILE HORIZONTAL-01-06
-1F03F ; [*10D8.0020.0002.1F03F] # DOMINO TILE HORIZONTAL-02-00
-1F040 ; [*10D9.0020.0002.1F040] # DOMINO TILE HORIZONTAL-02-01
-1F041 ; [*10DA.0020.0002.1F041] # DOMINO TILE HORIZONTAL-02-02
-1F042 ; [*10DB.0020.0002.1F042] # DOMINO TILE HORIZONTAL-02-03
-1F043 ; [*10DC.0020.0002.1F043] # DOMINO TILE HORIZONTAL-02-04
-1F044 ; [*10DD.0020.0002.1F044] # DOMINO TILE HORIZONTAL-02-05
-1F045 ; [*10DE.0020.0002.1F045] # DOMINO TILE HORIZONTAL-02-06
-1F046 ; [*10DF.0020.0002.1F046] # DOMINO TILE HORIZONTAL-03-00
-1F047 ; [*10E0.0020.0002.1F047] # DOMINO TILE HORIZONTAL-03-01
-1F048 ; [*10E1.0020.0002.1F048] # DOMINO TILE HORIZONTAL-03-02
-1F049 ; [*10E2.0020.0002.1F049] # DOMINO TILE HORIZONTAL-03-03
-1F04A ; [*10E3.0020.0002.1F04A] # DOMINO TILE HORIZONTAL-03-04
-1F04B ; [*10E4.0020.0002.1F04B] # DOMINO TILE HORIZONTAL-03-05
-1F04C ; [*10E5.0020.0002.1F04C] # DOMINO TILE HORIZONTAL-03-06
-1F04D ; [*10E6.0020.0002.1F04D] # DOMINO TILE HORIZONTAL-04-00
-1F04E ; [*10E7.0020.0002.1F04E] # DOMINO TILE HORIZONTAL-04-01
-1F04F ; [*10E8.0020.0002.1F04F] # DOMINO TILE HORIZONTAL-04-02
-1F050 ; [*10E9.0020.0002.1F050] # DOMINO TILE HORIZONTAL-04-03
-1F051 ; [*10EA.0020.0002.1F051] # DOMINO TILE HORIZONTAL-04-04
-1F052 ; [*10EB.0020.0002.1F052] # DOMINO TILE HORIZONTAL-04-05
-1F053 ; [*10EC.0020.0002.1F053] # DOMINO TILE HORIZONTAL-04-06
-1F054 ; [*10ED.0020.0002.1F054] # DOMINO TILE HORIZONTAL-05-00
-1F055 ; [*10EE.0020.0002.1F055] # DOMINO TILE HORIZONTAL-05-01
-1F056 ; [*10EF.0020.0002.1F056] # DOMINO TILE HORIZONTAL-05-02
-1F057 ; [*10F0.0020.0002.1F057] # DOMINO TILE HORIZONTAL-05-03
-1F058 ; [*10F1.0020.0002.1F058] # DOMINO TILE HORIZONTAL-05-04
-1F059 ; [*10F2.0020.0002.1F059] # DOMINO TILE HORIZONTAL-05-05
-1F05A ; [*10F3.0020.0002.1F05A] # DOMINO TILE HORIZONTAL-05-06
-1F05B ; [*10F4.0020.0002.1F05B] # DOMINO TILE HORIZONTAL-06-00
-1F05C ; [*10F5.0020.0002.1F05C] # DOMINO TILE HORIZONTAL-06-01
-1F05D ; [*10F6.0020.0002.1F05D] # DOMINO TILE HORIZONTAL-06-02
-1F05E ; [*10F7.0020.0002.1F05E] # DOMINO TILE HORIZONTAL-06-03
-1F05F ; [*10F8.0020.0002.1F05F] # DOMINO TILE HORIZONTAL-06-04
-1F060 ; [*10F9.0020.0002.1F060] # DOMINO TILE HORIZONTAL-06-05
-1F061 ; [*10FA.0020.0002.1F061] # DOMINO TILE HORIZONTAL-06-06
-1F062 ; [*10FB.0020.0002.1F062] # DOMINO TILE VERTICAL BACK
-1F063 ; [*10FC.0020.0002.1F063] # DOMINO TILE VERTICAL-00-00
-1F064 ; [*10FD.0020.0002.1F064] # DOMINO TILE VERTICAL-00-01
-1F065 ; [*10FE.0020.0002.1F065] # DOMINO TILE VERTICAL-00-02
-1F066 ; [*10FF.0020.0002.1F066] # DOMINO TILE VERTICAL-00-03
-1F067 ; [*1100.0020.0002.1F067] # DOMINO TILE VERTICAL-00-04
-1F068 ; [*1101.0020.0002.1F068] # DOMINO TILE VERTICAL-00-05
-1F069 ; [*1102.0020.0002.1F069] # DOMINO TILE VERTICAL-00-06
-1F06A ; [*1103.0020.0002.1F06A] # DOMINO TILE VERTICAL-01-00
-1F06B ; [*1104.0020.0002.1F06B] # DOMINO TILE VERTICAL-01-01
-1F06C ; [*1105.0020.0002.1F06C] # DOMINO TILE VERTICAL-01-02
-1F06D ; [*1106.0020.0002.1F06D] # DOMINO TILE VERTICAL-01-03
-1F06E ; [*1107.0020.0002.1F06E] # DOMINO TILE VERTICAL-01-04
-1F06F ; [*1108.0020.0002.1F06F] # DOMINO TILE VERTICAL-01-05
-1F070 ; [*1109.0020.0002.1F070] # DOMINO TILE VERTICAL-01-06
-1F071 ; [*110A.0020.0002.1F071] # DOMINO TILE VERTICAL-02-00
-1F072 ; [*110B.0020.0002.1F072] # DOMINO TILE VERTICAL-02-01
-1F073 ; [*110C.0020.0002.1F073] # DOMINO TILE VERTICAL-02-02
-1F074 ; [*110D.0020.0002.1F074] # DOMINO TILE VERTICAL-02-03
-1F075 ; [*110E.0020.0002.1F075] # DOMINO TILE VERTICAL-02-04
-1F076 ; [*110F.0020.0002.1F076] # DOMINO TILE VERTICAL-02-05
-1F077 ; [*1110.0020.0002.1F077] # DOMINO TILE VERTICAL-02-06
-1F078 ; [*1111.0020.0002.1F078] # DOMINO TILE VERTICAL-03-00
-1F079 ; [*1112.0020.0002.1F079] # DOMINO TILE VERTICAL-03-01
-1F07A ; [*1113.0020.0002.1F07A] # DOMINO TILE VERTICAL-03-02
-1F07B ; [*1114.0020.0002.1F07B] # DOMINO TILE VERTICAL-03-03
-1F07C ; [*1115.0020.0002.1F07C] # DOMINO TILE VERTICAL-03-04
-1F07D ; [*1116.0020.0002.1F07D] # DOMINO TILE VERTICAL-03-05
-1F07E ; [*1117.0020.0002.1F07E] # DOMINO TILE VERTICAL-03-06
-1F07F ; [*1118.0020.0002.1F07F] # DOMINO TILE VERTICAL-04-00
-1F080 ; [*1119.0020.0002.1F080] # DOMINO TILE VERTICAL-04-01
-1F081 ; [*111A.0020.0002.1F081] # DOMINO TILE VERTICAL-04-02
-1F082 ; [*111B.0020.0002.1F082] # DOMINO TILE VERTICAL-04-03
-1F083 ; [*111C.0020.0002.1F083] # DOMINO TILE VERTICAL-04-04
-1F084 ; [*111D.0020.0002.1F084] # DOMINO TILE VERTICAL-04-05
-1F085 ; [*111E.0020.0002.1F085] # DOMINO TILE VERTICAL-04-06
-1F086 ; [*111F.0020.0002.1F086] # DOMINO TILE VERTICAL-05-00
-1F087 ; [*1120.0020.0002.1F087] # DOMINO TILE VERTICAL-05-01
-1F088 ; [*1121.0020.0002.1F088] # DOMINO TILE VERTICAL-05-02
-1F089 ; [*1122.0020.0002.1F089] # DOMINO TILE VERTICAL-05-03
-1F08A ; [*1123.0020.0002.1F08A] # DOMINO TILE VERTICAL-05-04
-1F08B ; [*1124.0020.0002.1F08B] # DOMINO TILE VERTICAL-05-05
-1F08C ; [*1125.0020.0002.1F08C] # DOMINO TILE VERTICAL-05-06
-1F08D ; [*1126.0020.0002.1F08D] # DOMINO TILE VERTICAL-06-00
-1F08E ; [*1127.0020.0002.1F08E] # DOMINO TILE VERTICAL-06-01
-1F08F ; [*1128.0020.0002.1F08F] # DOMINO TILE VERTICAL-06-02
-1F090 ; [*1129.0020.0002.1F090] # DOMINO TILE VERTICAL-06-03
-1F091 ; [*112A.0020.0002.1F091] # DOMINO TILE VERTICAL-06-04
-1F092 ; [*112B.0020.0002.1F092] # DOMINO TILE VERTICAL-06-05
-1F093 ; [*112C.0020.0002.1F093] # DOMINO TILE VERTICAL-06-06
-1F0A0 ; [*112D.0020.0002.1F0A0] # PLAYING CARD BACK
-1F0A1 ; [*112E.0020.0002.1F0A1] # PLAYING CARD ACE OF SPADES
-1F0A2 ; [*112F.0020.0002.1F0A2] # PLAYING CARD TWO OF SPADES
-1F0A3 ; [*1130.0020.0002.1F0A3] # PLAYING CARD THREE OF SPADES
-1F0A4 ; [*1131.0020.0002.1F0A4] # PLAYING CARD FOUR OF SPADES
-1F0A5 ; [*1132.0020.0002.1F0A5] # PLAYING CARD FIVE OF SPADES
-1F0A6 ; [*1133.0020.0002.1F0A6] # PLAYING CARD SIX OF SPADES
-1F0A7 ; [*1134.0020.0002.1F0A7] # PLAYING CARD SEVEN OF SPADES
-1F0A8 ; [*1135.0020.0002.1F0A8] # PLAYING CARD EIGHT OF SPADES
-1F0A9 ; [*1136.0020.0002.1F0A9] # PLAYING CARD NINE OF SPADES
-1F0AA ; [*1137.0020.0002.1F0AA] # PLAYING CARD TEN OF SPADES
-1F0AB ; [*1138.0020.0002.1F0AB] # PLAYING CARD JACK OF SPADES
-1F0AC ; [*1139.0020.0002.1F0AC] # PLAYING CARD KNIGHT OF SPADES
-1F0AD ; [*113A.0020.0002.1F0AD] # PLAYING CARD QUEEN OF SPADES
-1F0AE ; [*113B.0020.0002.1F0AE] # PLAYING CARD KING OF SPADES
-1F0B1 ; [*113C.0020.0002.1F0B1] # PLAYING CARD ACE OF HEARTS
-1F0B2 ; [*113D.0020.0002.1F0B2] # PLAYING CARD TWO OF HEARTS
-1F0B3 ; [*113E.0020.0002.1F0B3] # PLAYING CARD THREE OF HEARTS
-1F0B4 ; [*113F.0020.0002.1F0B4] # PLAYING CARD FOUR OF HEARTS
-1F0B5 ; [*1140.0020.0002.1F0B5] # PLAYING CARD FIVE OF HEARTS
-1F0B6 ; [*1141.0020.0002.1F0B6] # PLAYING CARD SIX OF HEARTS
-1F0B7 ; [*1142.0020.0002.1F0B7] # PLAYING CARD SEVEN OF HEARTS
-1F0B8 ; [*1143.0020.0002.1F0B8] # PLAYING CARD EIGHT OF HEARTS
-1F0B9 ; [*1144.0020.0002.1F0B9] # PLAYING CARD NINE OF HEARTS
-1F0BA ; [*1145.0020.0002.1F0BA] # PLAYING CARD TEN OF HEARTS
-1F0BB ; [*1146.0020.0002.1F0BB] # PLAYING CARD JACK OF HEARTS
-1F0BC ; [*1147.0020.0002.1F0BC] # PLAYING CARD KNIGHT OF HEARTS
-1F0BD ; [*1148.0020.0002.1F0BD] # PLAYING CARD QUEEN OF HEARTS
-1F0BE ; [*1149.0020.0002.1F0BE] # PLAYING CARD KING OF HEARTS
-1F0C1 ; [*114A.0020.0002.1F0C1] # PLAYING CARD ACE OF DIAMONDS
-1F0C2 ; [*114B.0020.0002.1F0C2] # PLAYING CARD TWO OF DIAMONDS
-1F0C3 ; [*114C.0020.0002.1F0C3] # PLAYING CARD THREE OF DIAMONDS
-1F0C4 ; [*114D.0020.0002.1F0C4] # PLAYING CARD FOUR OF DIAMONDS
-1F0C5 ; [*114E.0020.0002.1F0C5] # PLAYING CARD FIVE OF DIAMONDS
-1F0C6 ; [*114F.0020.0002.1F0C6] # PLAYING CARD SIX OF DIAMONDS
-1F0C7 ; [*1150.0020.0002.1F0C7] # PLAYING CARD SEVEN OF DIAMONDS
-1F0C8 ; [*1151.0020.0002.1F0C8] # PLAYING CARD EIGHT OF DIAMONDS
-1F0C9 ; [*1152.0020.0002.1F0C9] # PLAYING CARD NINE OF DIAMONDS
-1F0CA ; [*1153.0020.0002.1F0CA] # PLAYING CARD TEN OF DIAMONDS
-1F0CB ; [*1154.0020.0002.1F0CB] # PLAYING CARD JACK OF DIAMONDS
-1F0CC ; [*1155.0020.0002.1F0CC] # PLAYING CARD KNIGHT OF DIAMONDS
-1F0CD ; [*1156.0020.0002.1F0CD] # PLAYING CARD QUEEN OF DIAMONDS
-1F0CE ; [*1157.0020.0002.1F0CE] # PLAYING CARD KING OF DIAMONDS
-1F0CF ; [*1158.0020.0002.1F0CF] # PLAYING CARD BLACK JOKER
-1F0D1 ; [*1159.0020.0002.1F0D1] # PLAYING CARD ACE OF CLUBS
-1F0D2 ; [*115A.0020.0002.1F0D2] # PLAYING CARD TWO OF CLUBS
-1F0D3 ; [*115B.0020.0002.1F0D3] # PLAYING CARD THREE OF CLUBS
-1F0D4 ; [*115C.0020.0002.1F0D4] # PLAYING CARD FOUR OF CLUBS
-1F0D5 ; [*115D.0020.0002.1F0D5] # PLAYING CARD FIVE OF CLUBS
-1F0D6 ; [*115E.0020.0002.1F0D6] # PLAYING CARD SIX OF CLUBS
-1F0D7 ; [*115F.0020.0002.1F0D7] # PLAYING CARD SEVEN OF CLUBS
-1F0D8 ; [*1160.0020.0002.1F0D8] # PLAYING CARD EIGHT OF CLUBS
-1F0D9 ; [*1161.0020.0002.1F0D9] # PLAYING CARD NINE OF CLUBS
-1F0DA ; [*1162.0020.0002.1F0DA] # PLAYING CARD TEN OF CLUBS
-1F0DB ; [*1163.0020.0002.1F0DB] # PLAYING CARD JACK OF CLUBS
-1F0DC ; [*1164.0020.0002.1F0DC] # PLAYING CARD KNIGHT OF CLUBS
-1F0DD ; [*1165.0020.0002.1F0DD] # PLAYING CARD QUEEN OF CLUBS
-1F0DE ; [*1166.0020.0002.1F0DE] # PLAYING CARD KING OF CLUBS
-1F0DF ; [*1167.0020.0002.1F0DF] # PLAYING CARD WHITE JOKER
-1F300 ; [*1168.0020.0002.1F300] # CYCLONE
-1F301 ; [*1169.0020.0002.1F301] # FOGGY
-1F302 ; [*116A.0020.0002.1F302] # CLOSED UMBRELLA
-1F303 ; [*116B.0020.0002.1F303] # NIGHT WITH STARS
-1F304 ; [*116C.0020.0002.1F304] # SUNRISE OVER MOUNTAINS
-1F305 ; [*116D.0020.0002.1F305] # SUNRISE
-1F306 ; [*116E.0020.0002.1F306] # CITYSCAPE AT DUSK
-1F307 ; [*116F.0020.0002.1F307] # SUNSET OVER BUILDINGS
-1F308 ; [*1170.0020.0002.1F308] # RAINBOW
-1F309 ; [*1171.0020.0002.1F309] # BRIDGE AT NIGHT
-1F30A ; [*1172.0020.0002.1F30A] # WATER WAVE
-1F30B ; [*1173.0020.0002.1F30B] # VOLCANO
-1F30C ; [*1174.0020.0002.1F30C] # MILKY WAY
-1F30D ; [*1175.0020.0002.1F30D] # EARTH GLOBE EUROPE-AFRICA
-1F30E ; [*1176.0020.0002.1F30E] # EARTH GLOBE AMERICAS
-1F30F ; [*1177.0020.0002.1F30F] # EARTH GLOBE ASIA-AUSTRALIA
-1F310 ; [*1178.0020.0002.1F310] # GLOBE WITH MERIDIANS
-1F311 ; [*1179.0020.0002.1F311] # NEW MOON SYMBOL
-1F312 ; [*117A.0020.0002.1F312] # WAXING CRESCENT MOON SYMBOL
-1F313 ; [*117B.0020.0002.1F313] # FIRST QUARTER MOON SYMBOL
-1F314 ; [*117C.0020.0002.1F314] # WAXING GIBBOUS MOON SYMBOL
-1F315 ; [*117D.0020.0002.1F315] # FULL MOON SYMBOL
-1F316 ; [*117E.0020.0002.1F316] # WANING GIBBOUS MOON SYMBOL
-1F317 ; [*117F.0020.0002.1F317] # LAST QUARTER MOON SYMBOL
-1F318 ; [*1180.0020.0002.1F318] # WANING CRESCENT MOON SYMBOL
-1F319 ; [*1181.0020.0002.1F319] # CRESCENT MOON
-1F31A ; [*1182.0020.0002.1F31A] # NEW MOON WITH FACE
-1F31B ; [*1183.0020.0002.1F31B] # FIRST QUARTER MOON WITH FACE
-1F31C ; [*1184.0020.0002.1F31C] # LAST QUARTER MOON WITH FACE
-1F31D ; [*1185.0020.0002.1F31D] # FULL MOON WITH FACE
-1F31E ; [*1186.0020.0002.1F31E] # SUN WITH FACE
-1F31F ; [*1187.0020.0002.1F31F] # GLOWING STAR
-1F320 ; [*1188.0020.0002.1F320] # SHOOTING STAR
-1F330 ; [*1189.0020.0002.1F330] # CHESTNUT
-1F331 ; [*118A.0020.0002.1F331] # SEEDLING
-1F332 ; [*118B.0020.0002.1F332] # EVERGREEN TREE
-1F333 ; [*118C.0020.0002.1F333] # DECIDUOUS TREE
-1F334 ; [*118D.0020.0002.1F334] # PALM TREE
-1F335 ; [*118E.0020.0002.1F335] # CACTUS
-1F337 ; [*118F.0020.0002.1F337] # TULIP
-1F338 ; [*1190.0020.0002.1F338] # CHERRY BLOSSOM
-1F339 ; [*1191.0020.0002.1F339] # ROSE
-1F33A ; [*1192.0020.0002.1F33A] # HIBISCUS
-1F33B ; [*1193.0020.0002.1F33B] # SUNFLOWER
-1F33C ; [*1194.0020.0002.1F33C] # BLOSSOM
-1F33D ; [*1195.0020.0002.1F33D] # EAR OF MAIZE
-1F33E ; [*1196.0020.0002.1F33E] # EAR OF RICE
-1F33F ; [*1197.0020.0002.1F33F] # HERB
-1F340 ; [*1198.0020.0002.1F340] # FOUR LEAF CLOVER
-1F341 ; [*1199.0020.0002.1F341] # MAPLE LEAF
-1F342 ; [*119A.0020.0002.1F342] # FALLEN LEAF
-1F343 ; [*119B.0020.0002.1F343] # LEAF FLUTTERING IN WIND
-1F344 ; [*119C.0020.0002.1F344] # MUSHROOM
-1F345 ; [*119D.0020.0002.1F345] # TOMATO
-1F346 ; [*119E.0020.0002.1F346] # AUBERGINE
-1F347 ; [*119F.0020.0002.1F347] # GRAPES
-1F348 ; [*11A0.0020.0002.1F348] # MELON
-1F349 ; [*11A1.0020.0002.1F349] # WATERMELON
-1F34A ; [*11A2.0020.0002.1F34A] # TANGERINE
-1F34B ; [*11A3.0020.0002.1F34B] # LEMON
-1F34C ; [*11A4.0020.0002.1F34C] # BANANA
-1F34D ; [*11A5.0020.0002.1F34D] # PINEAPPLE
-1F34E ; [*11A6.0020.0002.1F34E] # RED APPLE
-1F34F ; [*11A7.0020.0002.1F34F] # GREEN APPLE
-1F350 ; [*11A8.0020.0002.1F350] # PEAR
-1F351 ; [*11A9.0020.0002.1F351] # PEACH
-1F352 ; [*11AA.0020.0002.1F352] # CHERRIES
-1F353 ; [*11AB.0020.0002.1F353] # STRAWBERRY
-1F354 ; [*11AC.0020.0002.1F354] # HAMBURGER
-1F355 ; [*11AD.0020.0002.1F355] # SLICE OF PIZZA
-1F356 ; [*11AE.0020.0002.1F356] # MEAT ON BONE
-1F357 ; [*11AF.0020.0002.1F357] # POULTRY LEG
-1F358 ; [*11B0.0020.0002.1F358] # RICE CRACKER
-1F359 ; [*11B1.0020.0002.1F359] # RICE BALL
-1F35A ; [*11B2.0020.0002.1F35A] # COOKED RICE
-1F35B ; [*11B3.0020.0002.1F35B] # CURRY AND RICE
-1F35C ; [*11B4.0020.0002.1F35C] # STEAMING BOWL
-1F35D ; [*11B5.0020.0002.1F35D] # SPAGHETTI
-1F35E ; [*11B6.0020.0002.1F35E] # BREAD
-1F35F ; [*11B7.0020.0002.1F35F] # FRENCH FRIES
-1F360 ; [*11B8.0020.0002.1F360] # ROASTED SWEET POTATO
-1F361 ; [*11B9.0020.0002.1F361] # DANGO
-1F362 ; [*11BA.0020.0002.1F362] # ODEN
-1F363 ; [*11BB.0020.0002.1F363] # SUSHI
-1F364 ; [*11BC.0020.0002.1F364] # FRIED SHRIMP
-1F365 ; [*11BD.0020.0002.1F365] # FISH CAKE WITH SWIRL DESIGN
-1F366 ; [*11BE.0020.0002.1F366] # SOFT ICE CREAM
-1F367 ; [*11BF.0020.0002.1F367] # SHAVED ICE
-1F368 ; [*11C0.0020.0002.1F368] # ICE CREAM
-1F369 ; [*11C1.0020.0002.1F369] # DOUGHNUT
-1F36A ; [*11C2.0020.0002.1F36A] # COOKIE
-1F36B ; [*11C3.0020.0002.1F36B] # CHOCOLATE BAR
-1F36C ; [*11C4.0020.0002.1F36C] # CANDY
-1F36D ; [*11C5.0020.0002.1F36D] # LOLLIPOP
-1F36E ; [*11C6.0020.0002.1F36E] # CUSTARD
-1F36F ; [*11C7.0020.0002.1F36F] # HONEY POT
-1F370 ; [*11C8.0020.0002.1F370] # SHORTCAKE
-1F371 ; [*11C9.0020.0002.1F371] # BENTO BOX
-1F372 ; [*11CA.0020.0002.1F372] # POT OF FOOD
-1F373 ; [*11CB.0020.0002.1F373] # COOKING
-1F374 ; [*11CC.0020.0002.1F374] # FORK AND KNIFE
-1F375 ; [*11CD.0020.0002.1F375] # TEACUP WITHOUT HANDLE
-1F376 ; [*11CE.0020.0002.1F376] # SAKE BOTTLE AND CUP
-1F377 ; [*11CF.0020.0002.1F377] # WINE GLASS
-1F378 ; [*11D0.0020.0002.1F378] # COCKTAIL GLASS
-1F379 ; [*11D1.0020.0002.1F379] # TROPICAL DRINK
-1F37A ; [*11D2.0020.0002.1F37A] # BEER MUG
-1F37B ; [*11D3.0020.0002.1F37B] # CLINKING BEER MUGS
-1F37C ; [*11D4.0020.0002.1F37C] # BABY BOTTLE
-1F380 ; [*11D5.0020.0002.1F380] # RIBBON
-1F381 ; [*11D6.0020.0002.1F381] # WRAPPED PRESENT
-1F382 ; [*11D7.0020.0002.1F382] # BIRTHDAY CAKE
-1F383 ; [*11D8.0020.0002.1F383] # JACK-O-LANTERN
-1F384 ; [*11D9.0020.0002.1F384] # CHRISTMAS TREE
-1F385 ; [*11DA.0020.0002.1F385] # FATHER CHRISTMAS
-1F386 ; [*11DB.0020.0002.1F386] # FIREWORKS
-1F387 ; [*11DC.0020.0002.1F387] # FIREWORK SPARKLER
-1F388 ; [*11DD.0020.0002.1F388] # BALLOON
-1F389 ; [*11DE.0020.0002.1F389] # PARTY POPPER
-1F38A ; [*11DF.0020.0002.1F38A] # CONFETTI BALL
-1F38B ; [*11E0.0020.0002.1F38B] # TANABATA TREE
-1F38C ; [*11E1.0020.0002.1F38C] # CROSSED FLAGS
-1F38D ; [*11E2.0020.0002.1F38D] # PINE DECORATION
-1F38E ; [*11E3.0020.0002.1F38E] # JAPANESE DOLLS
-1F38F ; [*11E4.0020.0002.1F38F] # CARP STREAMER
-1F390 ; [*11E5.0020.0002.1F390] # WIND CHIME
-1F391 ; [*11E6.0020.0002.1F391] # MOON VIEWING CEREMONY
-1F392 ; [*11E7.0020.0002.1F392] # SCHOOL SATCHEL
-1F393 ; [*11E8.0020.0002.1F393] # GRADUATION CAP
-1F3A0 ; [*11E9.0020.0002.1F3A0] # CAROUSEL HORSE
-1F3A1 ; [*11EA.0020.0002.1F3A1] # FERRIS WHEEL
-1F3A2 ; [*11EB.0020.0002.1F3A2] # ROLLER COASTER
-1F3A3 ; [*11EC.0020.0002.1F3A3] # FISHING POLE AND FISH
-1F3A4 ; [*11ED.0020.0002.1F3A4] # MICROPHONE
-1F3A5 ; [*11EE.0020.0002.1F3A5] # MOVIE CAMERA
-1F3A6 ; [*11EF.0020.0002.1F3A6] # CINEMA
-1F3A7 ; [*11F0.0020.0002.1F3A7] # HEADPHONE
-1F3A8 ; [*11F1.0020.0002.1F3A8] # ARTIST PALETTE
-1F3A9 ; [*11F2.0020.0002.1F3A9] # TOP HAT
-1F3AA ; [*11F3.0020.0002.1F3AA] # CIRCUS TENT
-1F3AB ; [*11F4.0020.0002.1F3AB] # TICKET
-1F3AC ; [*11F5.0020.0002.1F3AC] # CLAPPER BOARD
-1F3AD ; [*11F6.0020.0002.1F3AD] # PERFORMING ARTS
-1F3AE ; [*11F7.0020.0002.1F3AE] # VIDEO GAME
-1F3AF ; [*11F8.0020.0002.1F3AF] # DIRECT HIT
-1F3B0 ; [*11F9.0020.0002.1F3B0] # SLOT MACHINE
-1F3B1 ; [*11FA.0020.0002.1F3B1] # BILLIARDS
-1F3B2 ; [*11FB.0020.0002.1F3B2] # GAME DIE
-1F3B3 ; [*11FC.0020.0002.1F3B3] # BOWLING
-1F3B4 ; [*11FD.0020.0002.1F3B4] # FLOWER PLAYING CARDS
-1F3B5 ; [*11FE.0020.0002.1F3B5] # MUSICAL NOTE
-1F3B6 ; [*11FF.0020.0002.1F3B6] # MULTIPLE MUSICAL NOTES
-1F3B7 ; [*1200.0020.0002.1F3B7] # SAXOPHONE
-1F3B8 ; [*1201.0020.0002.1F3B8] # GUITAR
-1F3B9 ; [*1202.0020.0002.1F3B9] # MUSICAL KEYBOARD
-1F3BA ; [*1203.0020.0002.1F3BA] # TRUMPET
-1F3BB ; [*1204.0020.0002.1F3BB] # VIOLIN
-1F3BC ; [*1205.0020.0002.1F3BC] # MUSICAL SCORE
-1F3BD ; [*1206.0020.0002.1F3BD] # RUNNING SHIRT WITH SASH
-1F3BE ; [*1207.0020.0002.1F3BE] # TENNIS RACQUET AND BALL
-1F3BF ; [*1208.0020.0002.1F3BF] # SKI AND SKI BOOT
-1F3C0 ; [*1209.0020.0002.1F3C0] # BASKETBALL AND HOOP
-1F3C1 ; [*120A.0020.0002.1F3C1] # CHEQUERED FLAG
-1F3C2 ; [*120B.0020.0002.1F3C2] # SNOWBOARDER
-1F3C3 ; [*120C.0020.0002.1F3C3] # RUNNER
-1F3C4 ; [*120D.0020.0002.1F3C4] # SURFER
-1F3C6 ; [*120E.0020.0002.1F3C6] # TROPHY
-1F3C7 ; [*120F.0020.0002.1F3C7] # HORSE RACING
-1F3C8 ; [*1210.0020.0002.1F3C8] # AMERICAN FOOTBALL
-1F3C9 ; [*1211.0020.0002.1F3C9] # RUGBY FOOTBALL
-1F3CA ; [*1212.0020.0002.1F3CA] # SWIMMER
-1F3E0 ; [*1213.0020.0002.1F3E0] # HOUSE BUILDING
-1F3E1 ; [*1214.0020.0002.1F3E1] # HOUSE WITH GARDEN
-1F3E2 ; [*1215.0020.0002.1F3E2] # OFFICE BUILDING
-1F3E3 ; [*1216.0020.0002.1F3E3] # JAPANESE POST OFFICE
-1F3E4 ; [*1217.0020.0002.1F3E4] # EUROPEAN POST OFFICE
-1F3E5 ; [*1218.0020.0002.1F3E5] # HOSPITAL
-1F3E6 ; [*1219.0020.0002.1F3E6] # BANK
-1F3E7 ; [*121A.0020.0002.1F3E7] # AUTOMATED TELLER MACHINE
-1F3E8 ; [*121B.0020.0002.1F3E8] # HOTEL
-1F3E9 ; [*121C.0020.0002.1F3E9] # LOVE HOTEL
-1F3EA ; [*121D.0020.0002.1F3EA] # CONVENIENCE STORE
-1F3EB ; [*121E.0020.0002.1F3EB] # SCHOOL
-1F3EC ; [*121F.0020.0002.1F3EC] # DEPARTMENT STORE
-1F3ED ; [*1220.0020.0002.1F3ED] # FACTORY
-1F3EE ; [*1221.0020.0002.1F3EE] # IZAKAYA LANTERN
-1F3EF ; [*1222.0020.0002.1F3EF] # JAPANESE CASTLE
-1F3F0 ; [*1223.0020.0002.1F3F0] # EUROPEAN CASTLE
-1F400 ; [*1224.0020.0002.1F400] # RAT
-1F401 ; [*1225.0020.0002.1F401] # MOUSE
-1F402 ; [*1226.0020.0002.1F402] # OX
-1F403 ; [*1227.0020.0002.1F403] # WATER BUFFALO
-1F404 ; [*1228.0020.0002.1F404] # COW
-1F405 ; [*1229.0020.0002.1F405] # TIGER
-1F406 ; [*122A.0020.0002.1F406] # LEOPARD
-1F407 ; [*122B.0020.0002.1F407] # RABBIT
-1F408 ; [*122C.0020.0002.1F408] # CAT
-1F409 ; [*122D.0020.0002.1F409] # DRAGON
-1F40A ; [*122E.0020.0002.1F40A] # CROCODILE
-1F40B ; [*122F.0020.0002.1F40B] # WHALE
-1F40C ; [*1230.0020.0002.1F40C] # SNAIL
-1F40D ; [*1231.0020.0002.1F40D] # SNAKE
-1F40E ; [*1232.0020.0002.1F40E] # HORSE
-1F40F ; [*1233.0020.0002.1F40F] # RAM
-1F410 ; [*1234.0020.0002.1F410] # GOAT
-1F411 ; [*1235.0020.0002.1F411] # SHEEP
-1F412 ; [*1236.0020.0002.1F412] # MONKEY
-1F413 ; [*1237.0020.0002.1F413] # ROOSTER
-1F414 ; [*1238.0020.0002.1F414] # CHICKEN
-1F415 ; [*1239.0020.0002.1F415] # DOG
-1F416 ; [*123A.0020.0002.1F416] # PIG
-1F417 ; [*123B.0020.0002.1F417] # BOAR
-1F418 ; [*123C.0020.0002.1F418] # ELEPHANT
-1F419 ; [*123D.0020.0002.1F419] # OCTOPUS
-1F41A ; [*123E.0020.0002.1F41A] # SPIRAL SHELL
-1F41B ; [*123F.0020.0002.1F41B] # BUG
-1F41C ; [*1240.0020.0002.1F41C] # ANT
-1F41D ; [*1241.0020.0002.1F41D] # HONEYBEE
-1F41E ; [*1242.0020.0002.1F41E] # LADY BEETLE
-1F41F ; [*1243.0020.0002.1F41F] # FISH
-1F420 ; [*1244.0020.0002.1F420] # TROPICAL FISH
-1F421 ; [*1245.0020.0002.1F421] # BLOWFISH
-1F422 ; [*1246.0020.0002.1F422] # TURTLE
-1F423 ; [*1247.0020.0002.1F423] # HATCHING CHICK
-1F424 ; [*1248.0020.0002.1F424] # BABY CHICK
-1F425 ; [*1249.0020.0002.1F425] # FRONT-FACING BABY CHICK
-1F426 ; [*124A.0020.0002.1F426] # BIRD
-1F427 ; [*124B.0020.0002.1F427] # PENGUIN
-1F428 ; [*124C.0020.0002.1F428] # KOALA
-1F429 ; [*124D.0020.0002.1F429] # POODLE
-1F42A ; [*124E.0020.0002.1F42A] # DROMEDARY CAMEL
-1F42B ; [*124F.0020.0002.1F42B] # BACTRIAN CAMEL
-1F42C ; [*1250.0020.0002.1F42C] # DOLPHIN
-1F42D ; [*1251.0020.0002.1F42D] # MOUSE FACE
-1F42E ; [*1252.0020.0002.1F42E] # COW FACE
-1F42F ; [*1253.0020.0002.1F42F] # TIGER FACE
-1F430 ; [*1254.0020.0002.1F430] # RABBIT FACE
-1F431 ; [*1255.0020.0002.1F431] # CAT FACE
-1F432 ; [*1256.0020.0002.1F432] # DRAGON FACE
-1F433 ; [*1257.0020.0002.1F433] # SPOUTING WHALE
-1F434 ; [*1258.0020.0002.1F434] # HORSE FACE
-1F435 ; [*1259.0020.0002.1F435] # MONKEY FACE
-1F436 ; [*125A.0020.0002.1F436] # DOG FACE
-1F437 ; [*125B.0020.0002.1F437] # PIG FACE
-1F438 ; [*125C.0020.0002.1F438] # FROG FACE
-1F439 ; [*125D.0020.0002.1F439] # HAMSTER FACE
-1F43A ; [*125E.0020.0002.1F43A] # WOLF FACE
-1F43B ; [*125F.0020.0002.1F43B] # BEAR FACE
-1F43C ; [*1260.0020.0002.1F43C] # PANDA FACE
-1F43D ; [*1261.0020.0002.1F43D] # PIG NOSE
-1F43E ; [*1262.0020.0002.1F43E] # PAW PRINTS
-1F440 ; [*1263.0020.0002.1F440] # EYES
-1F442 ; [*1264.0020.0002.1F442] # EAR
-1F443 ; [*1265.0020.0002.1F443] # NOSE
-1F444 ; [*1266.0020.0002.1F444] # MOUTH
-1F445 ; [*1267.0020.0002.1F445] # TONGUE
-1F446 ; [*1268.0020.0002.1F446] # WHITE UP POINTING BACKHAND INDEX
-1F447 ; [*1269.0020.0002.1F447] # WHITE DOWN POINTING BACKHAND INDEX
-1F448 ; [*126A.0020.0002.1F448] # WHITE LEFT POINTING BACKHAND INDEX
-1F449 ; [*126B.0020.0002.1F449] # WHITE RIGHT POINTING BACKHAND INDEX
-1F44A ; [*126C.0020.0002.1F44A] # FISTED HAND SIGN
-1F44B ; [*126D.0020.0002.1F44B] # WAVING HAND SIGN
-1F44C ; [*126E.0020.0002.1F44C] # OK HAND SIGN
-1F44D ; [*126F.0020.0002.1F44D] # THUMBS UP SIGN
-1F44E ; [*1270.0020.0002.1F44E] # THUMBS DOWN SIGN
-1F44F ; [*1271.0020.0002.1F44F] # CLAPPING HANDS SIGN
-1F450 ; [*1272.0020.0002.1F450] # OPEN HANDS SIGN
-1F451 ; [*1273.0020.0002.1F451] # CROWN
-1F452 ; [*1274.0020.0002.1F452] # WOMANS HAT
-1F453 ; [*1275.0020.0002.1F453] # EYEGLASSES
-1F454 ; [*1276.0020.0002.1F454] # NECKTIE
-1F455 ; [*1277.0020.0002.1F455] # T-SHIRT
-1F456 ; [*1278.0020.0002.1F456] # JEANS
-1F457 ; [*1279.0020.0002.1F457] # DRESS
-1F458 ; [*127A.0020.0002.1F458] # KIMONO
-1F459 ; [*127B.0020.0002.1F459] # BIKINI
-1F45A ; [*127C.0020.0002.1F45A] # WOMANS CLOTHES
-1F45B ; [*127D.0020.0002.1F45B] # PURSE
-1F45C ; [*127E.0020.0002.1F45C] # HANDBAG
-1F45D ; [*127F.0020.0002.1F45D] # POUCH
-1F45E ; [*1280.0020.0002.1F45E] # MANS SHOE
-1F45F ; [*1281.0020.0002.1F45F] # ATHLETIC SHOE
-1F460 ; [*1282.0020.0002.1F460] # HIGH-HEELED SHOE
-1F461 ; [*1283.0020.0002.1F461] # WOMANS SANDAL
-1F462 ; [*1284.0020.0002.1F462] # WOMANS BOOTS
-1F463 ; [*1285.0020.0002.1F463] # FOOTPRINTS
-1F464 ; [*1286.0020.0002.1F464] # BUST IN SILHOUETTE
-1F465 ; [*1287.0020.0002.1F465] # BUSTS IN SILHOUETTE
-1F466 ; [*1288.0020.0002.1F466] # BOY
-1F467 ; [*1289.0020.0002.1F467] # GIRL
-1F468 ; [*128A.0020.0002.1F468] # MAN
-1F469 ; [*128B.0020.0002.1F469] # WOMAN
-1F46A ; [*128C.0020.0002.1F46A] # FAMILY
-1F46B ; [*128D.0020.0002.1F46B] # MAN AND WOMAN HOLDING HANDS
-1F46C ; [*128E.0020.0002.1F46C] # TWO MEN HOLDING HANDS
-1F46D ; [*128F.0020.0002.1F46D] # TWO WOMEN HOLDING HANDS
-1F46E ; [*1290.0020.0002.1F46E] # POLICE OFFICER
-1F46F ; [*1291.0020.0002.1F46F] # WOMAN WITH BUNNY EARS
-1F470 ; [*1292.0020.0002.1F470] # BRIDE WITH VEIL
-1F471 ; [*1293.0020.0002.1F471] # PERSON WITH BLOND HAIR
-1F472 ; [*1294.0020.0002.1F472] # MAN WITH GUA PI MAO
-1F473 ; [*1295.0020.0002.1F473] # MAN WITH TURBAN
-1F474 ; [*1296.0020.0002.1F474] # OLDER MAN
-1F475 ; [*1297.0020.0002.1F475] # OLDER WOMAN
-1F476 ; [*1298.0020.0002.1F476] # BABY
-1F477 ; [*1299.0020.0002.1F477] # CONSTRUCTION WORKER
-1F478 ; [*129A.0020.0002.1F478] # PRINCESS
-1F479 ; [*129B.0020.0002.1F479] # JAPANESE OGRE
-1F47A ; [*129C.0020.0002.1F47A] # JAPANESE GOBLIN
-1F47B ; [*129D.0020.0002.1F47B] # GHOST
-1F47C ; [*129E.0020.0002.1F47C] # BABY ANGEL
-1F47D ; [*129F.0020.0002.1F47D] # EXTRATERRESTRIAL ALIEN
-1F47E ; [*12A0.0020.0002.1F47E] # ALIEN MONSTER
-1F47F ; [*12A1.0020.0002.1F47F] # IMP
-1F480 ; [*12A2.0020.0002.1F480] # SKULL
-1F481 ; [*12A3.0020.0002.1F481] # INFORMATION DESK PERSON
-1F482 ; [*12A4.0020.0002.1F482] # GUARDSMAN
-1F483 ; [*12A5.0020.0002.1F483] # DANCER
-1F484 ; [*12A6.0020.0002.1F484] # LIPSTICK
-1F485 ; [*12A7.0020.0002.1F485] # NAIL POLISH
-1F486 ; [*12A8.0020.0002.1F486] # FACE MASSAGE
-1F487 ; [*12A9.0020.0002.1F487] # HAIRCUT
-1F488 ; [*12AA.0020.0002.1F488] # BARBER POLE
-1F489 ; [*12AB.0020.0002.1F489] # SYRINGE
-1F48A ; [*12AC.0020.0002.1F48A] # PILL
-1F48B ; [*12AD.0020.0002.1F48B] # KISS MARK
-1F48C ; [*12AE.0020.0002.1F48C] # LOVE LETTER
-1F48D ; [*12AF.0020.0002.1F48D] # RING
-1F48E ; [*12B0.0020.0002.1F48E] # GEM STONE
-1F48F ; [*12B1.0020.0002.1F48F] # KISS
-1F490 ; [*12B2.0020.0002.1F490] # BOUQUET
-1F491 ; [*12B3.0020.0002.1F491] # COUPLE WITH HEART
-1F492 ; [*12B4.0020.0002.1F492] # WEDDING
-1F493 ; [*12B5.0020.0002.1F493] # BEATING HEART
-1F494 ; [*12B6.0020.0002.1F494] # BROKEN HEART
-1F495 ; [*12B7.0020.0002.1F495] # TWO HEARTS
-1F496 ; [*12B8.0020.0002.1F496] # SPARKLING HEART
-1F497 ; [*12B9.0020.0002.1F497] # GROWING HEART
-1F498 ; [*12BA.0020.0002.1F498] # HEART WITH ARROW
-1F499 ; [*12BB.0020.0002.1F499] # BLUE HEART
-1F49A ; [*12BC.0020.0002.1F49A] # GREEN HEART
-1F49B ; [*12BD.0020.0002.1F49B] # YELLOW HEART
-1F49C ; [*12BE.0020.0002.1F49C] # PURPLE HEART
-1F49D ; [*12BF.0020.0002.1F49D] # HEART WITH RIBBON
-1F49E ; [*12C0.0020.0002.1F49E] # REVOLVING HEARTS
-1F49F ; [*12C1.0020.0002.1F49F] # HEART DECORATION
-1F4A0 ; [*12C2.0020.0002.1F4A0] # DIAMOND SHAPE WITH A DOT INSIDE
-1F4A1 ; [*12C3.0020.0002.1F4A1] # ELECTRIC LIGHT BULB
-1F4A2 ; [*12C4.0020.0002.1F4A2] # ANGER SYMBOL
-1F4A3 ; [*12C5.0020.0002.1F4A3] # BOMB
-1F4A4 ; [*12C6.0020.0002.1F4A4] # SLEEPING SYMBOL
-1F4A5 ; [*12C7.0020.0002.1F4A5] # COLLISION SYMBOL
-1F4A6 ; [*12C8.0020.0002.1F4A6] # SPLASHING SWEAT SYMBOL
-1F4A7 ; [*12C9.0020.0002.1F4A7] # DROPLET
-1F4A8 ; [*12CA.0020.0002.1F4A8] # DASH SYMBOL
-1F4A9 ; [*12CB.0020.0002.1F4A9] # PILE OF POO
-1F4AA ; [*12CC.0020.0002.1F4AA] # FLEXED BICEPS
-1F4AB ; [*12CD.0020.0002.1F4AB] # DIZZY SYMBOL
-1F4AC ; [*12CE.0020.0002.1F4AC] # SPEECH BALLOON
-1F4AD ; [*12CF.0020.0002.1F4AD] # THOUGHT BALLOON
-1F4AE ; [*12D0.0020.0002.1F4AE] # WHITE FLOWER
-1F4AF ; [*12D1.0020.0002.1F4AF] # HUNDRED POINTS SYMBOL
-1F4B0 ; [*12D2.0020.0002.1F4B0] # MONEY BAG
-1F4B1 ; [*12D3.0020.0002.1F4B1] # CURRENCY EXCHANGE
-1F4B2 ; [*12D4.0020.0002.1F4B2] # HEAVY DOLLAR SIGN
-1F4B3 ; [*12D5.0020.0002.1F4B3] # CREDIT CARD
-1F4B4 ; [*12D6.0020.0002.1F4B4] # BANKNOTE WITH YEN SIGN
-1F4B5 ; [*12D7.0020.0002.1F4B5] # BANKNOTE WITH DOLLAR SIGN
-1F4B6 ; [*12D8.0020.0002.1F4B6] # BANKNOTE WITH EURO SIGN
-1F4B7 ; [*12D9.0020.0002.1F4B7] # BANKNOTE WITH POUND SIGN
-1F4B8 ; [*12DA.0020.0002.1F4B8] # MONEY WITH WINGS
-1F4B9 ; [*12DB.0020.0002.1F4B9] # CHART WITH UPWARDS TREND AND YEN SIGN
-1F4BA ; [*12DC.0020.0002.1F4BA] # SEAT
-1F4BB ; [*12DD.0020.0002.1F4BB] # PERSONAL COMPUTER
-1F4BC ; [*12DE.0020.0002.1F4BC] # BRIEFCASE
-1F4BD ; [*12DF.0020.0002.1F4BD] # MINIDISC
-1F4BE ; [*12E0.0020.0002.1F4BE] # FLOPPY DISK
-1F4BF ; [*12E1.0020.0002.1F4BF] # OPTICAL DISC
-1F4C0 ; [*12E2.0020.0002.1F4C0] # DVD
-1F4C1 ; [*12E3.0020.0002.1F4C1] # FILE FOLDER
-1F4C2 ; [*12E4.0020.0002.1F4C2] # OPEN FILE FOLDER
-1F4C3 ; [*12E5.0020.0002.1F4C3] # PAGE WITH CURL
-1F4C4 ; [*12E6.0020.0002.1F4C4] # PAGE FACING UP
-1F4C5 ; [*12E7.0020.0002.1F4C5] # CALENDAR
-1F4C6 ; [*12E8.0020.0002.1F4C6] # TEAR-OFF CALENDAR
-1F4C7 ; [*12E9.0020.0002.1F4C7] # CARD INDEX
-1F4C8 ; [*12EA.0020.0002.1F4C8] # CHART WITH UPWARDS TREND
-1F4C9 ; [*12EB.0020.0002.1F4C9] # CHART WITH DOWNWARDS TREND
-1F4CA ; [*12EC.0020.0002.1F4CA] # BAR CHART
-1F4CB ; [*12ED.0020.0002.1F4CB] # CLIPBOARD
-1F4CC ; [*12EE.0020.0002.1F4CC] # PUSHPIN
-1F4CD ; [*12EF.0020.0002.1F4CD] # ROUND PUSHPIN
-1F4CE ; [*12F0.0020.0002.1F4CE] # PAPERCLIP
-1F4CF ; [*12F1.0020.0002.1F4CF] # STRAIGHT RULER
-1F4D0 ; [*12F2.0020.0002.1F4D0] # TRIANGULAR RULER
-1F4D1 ; [*12F3.0020.0002.1F4D1] # BOOKMARK TABS
-1F4D2 ; [*12F4.0020.0002.1F4D2] # LEDGER
-1F4D3 ; [*12F5.0020.0002.1F4D3] # NOTEBOOK
-1F4D4 ; [*12F6.0020.0002.1F4D4] # NOTEBOOK WITH DECORATIVE COVER
-1F4D5 ; [*12F7.0020.0002.1F4D5] # CLOSED BOOK
-1F4D6 ; [*12F8.0020.0002.1F4D6] # OPEN BOOK
-1F4D7 ; [*12F9.0020.0002.1F4D7] # GREEN BOOK
-1F4D8 ; [*12FA.0020.0002.1F4D8] # BLUE BOOK
-1F4D9 ; [*12FB.0020.0002.1F4D9] # ORANGE BOOK
-1F4DA ; [*12FC.0020.0002.1F4DA] # BOOKS
-1F4DB ; [*12FD.0020.0002.1F4DB] # NAME BADGE
-1F4DC ; [*12FE.0020.0002.1F4DC] # SCROLL
-1F4DD ; [*12FF.0020.0002.1F4DD] # MEMO
-1F4DE ; [*1300.0020.0002.1F4DE] # TELEPHONE RECEIVER
-1F4DF ; [*1301.0020.0002.1F4DF] # PAGER
-1F4E0 ; [*1302.0020.0002.1F4E0] # FAX MACHINE
-1F4E1 ; [*1303.0020.0002.1F4E1] # SATELLITE ANTENNA
-1F4E2 ; [*1304.0020.0002.1F4E2] # PUBLIC ADDRESS LOUDSPEAKER
-1F4E3 ; [*1305.0020.0002.1F4E3] # CHEERING MEGAPHONE
-1F4E4 ; [*1306.0020.0002.1F4E4] # OUTBOX TRAY
-1F4E5 ; [*1307.0020.0002.1F4E5] # INBOX TRAY
-1F4E6 ; [*1308.0020.0002.1F4E6] # PACKAGE
-1F4E7 ; [*1309.0020.0002.1F4E7] # E-MAIL SYMBOL
-1F4E8 ; [*130A.0020.0002.1F4E8] # INCOMING ENVELOPE
-1F4E9 ; [*130B.0020.0002.1F4E9] # ENVELOPE WITH DOWNWARDS ARROW ABOVE
-1F4EA ; [*130C.0020.0002.1F4EA] # CLOSED MAILBOX WITH LOWERED FLAG
-1F4EB ; [*130D.0020.0002.1F4EB] # CLOSED MAILBOX WITH RAISED FLAG
-1F4EC ; [*130E.0020.0002.1F4EC] # OPEN MAILBOX WITH RAISED FLAG
-1F4ED ; [*130F.0020.0002.1F4ED] # OPEN MAILBOX WITH LOWERED FLAG
-1F4EE ; [*1310.0020.0002.1F4EE] # POSTBOX
-1F4EF ; [*1311.0020.0002.1F4EF] # POSTAL HORN
-1F4F0 ; [*1312.0020.0002.1F4F0] # NEWSPAPER
-1F4F1 ; [*1313.0020.0002.1F4F1] # MOBILE PHONE
-1F4F2 ; [*1314.0020.0002.1F4F2] # MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT
-1F4F3 ; [*1315.0020.0002.1F4F3] # VIBRATION MODE
-1F4F4 ; [*1316.0020.0002.1F4F4] # MOBILE PHONE OFF
-1F4F5 ; [*1317.0020.0002.1F4F5] # NO MOBILE PHONES
-1F4F6 ; [*1318.0020.0002.1F4F6] # ANTENNA WITH BARS
-1F4F7 ; [*1319.0020.0002.1F4F7] # CAMERA
-1F4F9 ; [*131A.0020.0002.1F4F9] # VIDEO CAMERA
-1F4FA ; [*131B.0020.0002.1F4FA] # TELEVISION
-1F4FB ; [*131C.0020.0002.1F4FB] # RADIO
-1F4FC ; [*131D.0020.0002.1F4FC] # VIDEOCASSETTE
-1F500 ; [*131E.0020.0002.1F500] # TWISTED RIGHTWARDS ARROWS
-1F501 ; [*131F.0020.0002.1F501] # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS
-1F502 ; [*1320.0020.0002.1F502] # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY
-1F503 ; [*1321.0020.0002.1F503] # CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
-1F504 ; [*1322.0020.0002.1F504] # ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
-1F505 ; [*1323.0020.0002.1F505] # LOW BRIGHTNESS SYMBOL
-1F506 ; [*1324.0020.0002.1F506] # HIGH BRIGHTNESS SYMBOL
-1F507 ; [*1325.0020.0002.1F507] # SPEAKER WITH CANCELLATION STROKE
-1F508 ; [*1326.0020.0002.1F508] # SPEAKER
-1F509 ; [*1327.0020.0002.1F509] # SPEAKER WITH ONE SOUND WAVE
-1F50A ; [*1328.0020.0002.1F50A] # SPEAKER WITH THREE SOUND WAVES
-1F50B ; [*1329.0020.0002.1F50B] # BATTERY
-1F50C ; [*132A.0020.0002.1F50C] # ELECTRIC PLUG
-1F50D ; [*132B.0020.0002.1F50D] # LEFT-POINTING MAGNIFYING GLASS
-1F50E ; [*132C.0020.0002.1F50E] # RIGHT-POINTING MAGNIFYING GLASS
-1F50F ; [*132D.0020.0002.1F50F] # LOCK WITH INK PEN
-1F510 ; [*132E.0020.0002.1F510] # CLOSED LOCK WITH KEY
-1F511 ; [*132F.0020.0002.1F511] # KEY
-1F512 ; [*1330.0020.0002.1F512] # LOCK
-1F513 ; [*1331.0020.0002.1F513] # OPEN LOCK
-1F514 ; [*1332.0020.0002.1F514] # BELL
-1F515 ; [*1333.0020.0002.1F515] # BELL WITH CANCELLATION STROKE
-1F516 ; [*1334.0020.0002.1F516] # BOOKMARK
-1F517 ; [*1335.0020.0002.1F517] # LINK SYMBOL
-1F518 ; [*1336.0020.0002.1F518] # RADIO BUTTON
-1F519 ; [*1337.0020.0002.1F519] # BACK WITH LEFTWARDS ARROW ABOVE
-1F51A ; [*1338.0020.0002.1F51A] # END WITH LEFTWARDS ARROW ABOVE
-1F51B ; [*1339.0020.0002.1F51B] # ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE
-1F51C ; [*133A.0020.0002.1F51C] # SOON WITH RIGHTWARDS ARROW ABOVE
-1F51D ; [*133B.0020.0002.1F51D] # TOP WITH UPWARDS ARROW ABOVE
-1F51E ; [*133C.0020.0002.1F51E] # NO ONE UNDER EIGHTEEN SYMBOL
-1F51F ; [*133D.0020.0002.1F51F] # KEYCAP TEN
-1F520 ; [*133E.0020.0002.1F520] # INPUT SYMBOL FOR LATIN CAPITAL LETTERS
-1F521 ; [*133F.0020.0002.1F521] # INPUT SYMBOL FOR LATIN SMALL LETTERS
-1F522 ; [*1340.0020.0002.1F522] # INPUT SYMBOL FOR NUMBERS
-1F523 ; [*1341.0020.0002.1F523] # INPUT SYMBOL FOR SYMBOLS
-1F524 ; [*1342.0020.0002.1F524] # INPUT SYMBOL FOR LATIN LETTERS
-1F525 ; [*1343.0020.0002.1F525] # FIRE
-1F526 ; [*1344.0020.0002.1F526] # ELECTRIC TORCH
-1F527 ; [*1345.0020.0002.1F527] # WRENCH
-1F528 ; [*1346.0020.0002.1F528] # HAMMER
-1F529 ; [*1347.0020.0002.1F529] # NUT AND BOLT
-1F52A ; [*1348.0020.0002.1F52A] # HOCHO
-1F52B ; [*1349.0020.0002.1F52B] # PISTOL
-1F52C ; [*134A.0020.0002.1F52C] # MICROSCOPE
-1F52D ; [*134B.0020.0002.1F52D] # TELESCOPE
-1F52E ; [*134C.0020.0002.1F52E] # CRYSTAL BALL
-1F52F ; [*134D.0020.0002.1F52F] # SIX POINTED STAR WITH MIDDLE DOT
-1F530 ; [*134E.0020.0002.1F530] # JAPANESE SYMBOL FOR BEGINNER
-1F531 ; [*134F.0020.0002.1F531] # TRIDENT EMBLEM
-1F532 ; [*1350.0020.0002.1F532] # BLACK SQUARE BUTTON
-1F533 ; [*1351.0020.0002.1F533] # WHITE SQUARE BUTTON
-1F534 ; [*1352.0020.0002.1F534] # LARGE RED CIRCLE
-1F535 ; [*1353.0020.0002.1F535] # LARGE BLUE CIRCLE
-1F536 ; [*1354.0020.0002.1F536] # LARGE ORANGE DIAMOND
-1F537 ; [*1355.0020.0002.1F537] # LARGE BLUE DIAMOND
-1F538 ; [*1356.0020.0002.1F538] # SMALL ORANGE DIAMOND
-1F539 ; [*1357.0020.0002.1F539] # SMALL BLUE DIAMOND
-1F53A ; [*1358.0020.0002.1F53A] # UP-POINTING RED TRIANGLE
-1F53B ; [*1359.0020.0002.1F53B] # DOWN-POINTING RED TRIANGLE
-1F53C ; [*135A.0020.0002.1F53C] # UP-POINTING SMALL RED TRIANGLE
-1F53D ; [*135B.0020.0002.1F53D] # DOWN-POINTING SMALL RED TRIANGLE
-1F540 ; [*135C.0020.0002.1F540] # CIRCLED CROSS POMMEE
-1F541 ; [*135D.0020.0002.1F541] # CROSS POMMEE WITH HALF-CIRCLE BELOW
-1F542 ; [*135E.0020.0002.1F542] # CROSS POMMEE
-1F543 ; [*135F.0020.0002.1F543] # NOTCHED LEFT SEMICIRCLE WITH THREE DOTS
-1F550 ; [*1360.0020.0002.1F550] # CLOCK FACE ONE OCLOCK
-1F551 ; [*1361.0020.0002.1F551] # CLOCK FACE TWO OCLOCK
-1F552 ; [*1362.0020.0002.1F552] # CLOCK FACE THREE OCLOCK
-1F553 ; [*1363.0020.0002.1F553] # CLOCK FACE FOUR OCLOCK
-1F554 ; [*1364.0020.0002.1F554] # CLOCK FACE FIVE OCLOCK
-1F555 ; [*1365.0020.0002.1F555] # CLOCK FACE SIX OCLOCK
-1F556 ; [*1366.0020.0002.1F556] # CLOCK FACE SEVEN OCLOCK
-1F557 ; [*1367.0020.0002.1F557] # CLOCK FACE EIGHT OCLOCK
-1F558 ; [*1368.0020.0002.1F558] # CLOCK FACE NINE OCLOCK
-1F559 ; [*1369.0020.0002.1F559] # CLOCK FACE TEN OCLOCK
-1F55A ; [*136A.0020.0002.1F55A] # CLOCK FACE ELEVEN OCLOCK
-1F55B ; [*136B.0020.0002.1F55B] # CLOCK FACE TWELVE OCLOCK
-1F55C ; [*136C.0020.0002.1F55C] # CLOCK FACE ONE-THIRTY
-1F55D ; [*136D.0020.0002.1F55D] # CLOCK FACE TWO-THIRTY
-1F55E ; [*136E.0020.0002.1F55E] # CLOCK FACE THREE-THIRTY
-1F55F ; [*136F.0020.0002.1F55F] # CLOCK FACE FOUR-THIRTY
-1F560 ; [*1370.0020.0002.1F560] # CLOCK FACE FIVE-THIRTY
-1F561 ; [*1371.0020.0002.1F561] # CLOCK FACE SIX-THIRTY
-1F562 ; [*1372.0020.0002.1F562] # CLOCK FACE SEVEN-THIRTY
-1F563 ; [*1373.0020.0002.1F563] # CLOCK FACE EIGHT-THIRTY
-1F564 ; [*1374.0020.0002.1F564] # CLOCK FACE NINE-THIRTY
-1F565 ; [*1375.0020.0002.1F565] # CLOCK FACE TEN-THIRTY
-1F566 ; [*1376.0020.0002.1F566] # CLOCK FACE ELEVEN-THIRTY
-1F567 ; [*1377.0020.0002.1F567] # CLOCK FACE TWELVE-THIRTY
-1F5FB ; [*1378.0020.0002.1F5FB] # MOUNT FUJI
-1F5FC ; [*1379.0020.0002.1F5FC] # TOKYO TOWER
-1F5FD ; [*137A.0020.0002.1F5FD] # STATUE OF LIBERTY
-1F5FE ; [*137B.0020.0002.1F5FE] # SILHOUETTE OF JAPAN
-1F5FF ; [*137C.0020.0002.1F5FF] # MOYAI
-1F600 ; [*137D.0020.0002.1F600] # GRINNING FACE
-1F601 ; [*137E.0020.0002.1F601] # GRINNING FACE WITH SMILING EYES
-1F602 ; [*137F.0020.0002.1F602] # FACE WITH TEARS OF JOY
-1F603 ; [*1380.0020.0002.1F603] # SMILING FACE WITH OPEN MOUTH
-1F604 ; [*1381.0020.0002.1F604] # SMILING FACE WITH OPEN MOUTH AND SMILING EYES
-1F605 ; [*1382.0020.0002.1F605] # SMILING FACE WITH OPEN MOUTH AND COLD SWEAT
-1F606 ; [*1383.0020.0002.1F606] # SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES
-1F607 ; [*1384.0020.0002.1F607] # SMILING FACE WITH HALO
-1F608 ; [*1385.0020.0002.1F608] # SMILING FACE WITH HORNS
-1F609 ; [*1386.0020.0002.1F609] # WINKING FACE
-1F60A ; [*1387.0020.0002.1F60A] # SMILING FACE WITH SMILING EYES
-1F60B ; [*1388.0020.0002.1F60B] # FACE SAVOURING DELICIOUS FOOD
-1F60C ; [*1389.0020.0002.1F60C] # RELIEVED FACE
-1F60D ; [*138A.0020.0002.1F60D] # SMILING FACE WITH HEART-SHAPED EYES
-1F60E ; [*138B.0020.0002.1F60E] # SMILING FACE WITH SUNGLASSES
-1F60F ; [*138C.0020.0002.1F60F] # SMIRKING FACE
-1F610 ; [*138D.0020.0002.1F610] # NEUTRAL FACE
-1F611 ; [*138E.0020.0002.1F611] # EXPRESSIONLESS FACE
-1F612 ; [*138F.0020.0002.1F612] # UNAMUSED FACE
-1F613 ; [*1390.0020.0002.1F613] # FACE WITH COLD SWEAT
-1F614 ; [*1391.0020.0002.1F614] # PENSIVE FACE
-1F615 ; [*1392.0020.0002.1F615] # CONFUSED FACE
-1F616 ; [*1393.0020.0002.1F616] # CONFOUNDED FACE
-1F617 ; [*1394.0020.0002.1F617] # KISSING FACE
-1F618 ; [*1395.0020.0002.1F618] # FACE THROWING A KISS
-1F619 ; [*1396.0020.0002.1F619] # KISSING FACE WITH SMILING EYES
-1F61A ; [*1397.0020.0002.1F61A] # KISSING FACE WITH CLOSED EYES
-1F61B ; [*1398.0020.0002.1F61B] # FACE WITH STUCK-OUT TONGUE
-1F61C ; [*1399.0020.0002.1F61C] # FACE WITH STUCK-OUT TONGUE AND WINKING EYE
-1F61D ; [*139A.0020.0002.1F61D] # FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES
-1F61E ; [*139B.0020.0002.1F61E] # DISAPPOINTED FACE
-1F61F ; [*139C.0020.0002.1F61F] # WORRIED FACE
-1F620 ; [*139D.0020.0002.1F620] # ANGRY FACE
-1F621 ; [*139E.0020.0002.1F621] # POUTING FACE
-1F622 ; [*139F.0020.0002.1F622] # CRYING FACE
-1F623 ; [*13A0.0020.0002.1F623] # PERSEVERING FACE
-1F624 ; [*13A1.0020.0002.1F624] # FACE WITH LOOK OF TRIUMPH
-1F625 ; [*13A2.0020.0002.1F625] # DISAPPOINTED BUT RELIEVED FACE
-1F626 ; [*13A3.0020.0002.1F626] # FROWNING FACE WITH OPEN MOUTH
-1F627 ; [*13A4.0020.0002.1F627] # ANGUISHED FACE
-1F628 ; [*13A5.0020.0002.1F628] # FEARFUL FACE
-1F629 ; [*13A6.0020.0002.1F629] # WEARY FACE
-1F62A ; [*13A7.0020.0002.1F62A] # SLEEPY FACE
-1F62B ; [*13A8.0020.0002.1F62B] # TIRED FACE
-1F62C ; [*13A9.0020.0002.1F62C] # GRIMACING FACE
-1F62D ; [*13AA.0020.0002.1F62D] # LOUDLY CRYING FACE
-1F62E ; [*13AB.0020.0002.1F62E] # FACE WITH OPEN MOUTH
-1F62F ; [*13AC.0020.0002.1F62F] # HUSHED FACE
-1F630 ; [*13AD.0020.0002.1F630] # FACE WITH OPEN MOUTH AND COLD SWEAT
-1F631 ; [*13AE.0020.0002.1F631] # FACE SCREAMING IN FEAR
-1F632 ; [*13AF.0020.0002.1F632] # ASTONISHED FACE
-1F633 ; [*13B0.0020.0002.1F633] # FLUSHED FACE
-1F634 ; [*13B1.0020.0002.1F634] # SLEEPING FACE
-1F635 ; [*13B2.0020.0002.1F635] # DIZZY FACE
-1F636 ; [*13B3.0020.0002.1F636] # FACE WITHOUT MOUTH
-1F637 ; [*13B4.0020.0002.1F637] # FACE WITH MEDICAL MASK
-1F638 ; [*13B5.0020.0002.1F638] # GRINNING CAT FACE WITH SMILING EYES
-1F639 ; [*13B6.0020.0002.1F639] # CAT FACE WITH TEARS OF JOY
-1F63A ; [*13B7.0020.0002.1F63A] # SMILING CAT FACE WITH OPEN MOUTH
-1F63B ; [*13B8.0020.0002.1F63B] # SMILING CAT FACE WITH HEART-SHAPED EYES
-1F63C ; [*13B9.0020.0002.1F63C] # CAT FACE WITH WRY SMILE
-1F63D ; [*13BA.0020.0002.1F63D] # KISSING CAT FACE WITH CLOSED EYES
-1F63E ; [*13BB.0020.0002.1F63E] # POUTING CAT FACE
-1F63F ; [*13BC.0020.0002.1F63F] # CRYING CAT FACE
-1F640 ; [*13BD.0020.0002.1F640] # WEARY CAT FACE
-1F645 ; [*13BE.0020.0002.1F645] # FACE WITH NO GOOD GESTURE
-1F646 ; [*13BF.0020.0002.1F646] # FACE WITH OK GESTURE
-1F647 ; [*13C0.0020.0002.1F647] # PERSON BOWING DEEPLY
-1F648 ; [*13C1.0020.0002.1F648] # SEE-NO-EVIL MONKEY
-1F649 ; [*13C2.0020.0002.1F649] # HEAR-NO-EVIL MONKEY
-1F64A ; [*13C3.0020.0002.1F64A] # SPEAK-NO-EVIL MONKEY
-1F64B ; [*13C4.0020.0002.1F64B] # HAPPY PERSON RAISING ONE HAND
-1F64C ; [*13C5.0020.0002.1F64C] # PERSON RAISING BOTH HANDS IN CELEBRATION
-1F64D ; [*13C6.0020.0002.1F64D] # PERSON FROWNING
-1F64E ; [*13C7.0020.0002.1F64E] # PERSON WITH POUTING FACE
-1F64F ; [*13C8.0020.0002.1F64F] # PERSON WITH FOLDED HANDS
-1F680 ; [*13C9.0020.0002.1F680] # ROCKET
-1F681 ; [*13CA.0020.0002.1F681] # HELICOPTER
-1F682 ; [*13CB.0020.0002.1F682] # STEAM LOCOMOTIVE
-1F683 ; [*13CC.0020.0002.1F683] # RAILWAY CAR
-1F684 ; [*13CD.0020.0002.1F684] # HIGH-SPEED TRAIN
-1F685 ; [*13CE.0020.0002.1F685] # HIGH-SPEED TRAIN WITH BULLET NOSE
-1F686 ; [*13CF.0020.0002.1F686] # TRAIN
-1F687 ; [*13D0.0020.0002.1F687] # METRO
-1F688 ; [*13D1.0020.0002.1F688] # LIGHT RAIL
-1F689 ; [*13D2.0020.0002.1F689] # STATION
-1F68A ; [*13D3.0020.0002.1F68A] # TRAM
-1F68B ; [*13D4.0020.0002.1F68B] # TRAM CAR
-1F68C ; [*13D5.0020.0002.1F68C] # BUS
-1F68D ; [*13D6.0020.0002.1F68D] # ONCOMING BUS
-1F68E ; [*13D7.0020.0002.1F68E] # TROLLEYBUS
-1F68F ; [*13D8.0020.0002.1F68F] # BUS STOP
-1F690 ; [*13D9.0020.0002.1F690] # MINIBUS
-1F691 ; [*13DA.0020.0002.1F691] # AMBULANCE
-1F692 ; [*13DB.0020.0002.1F692] # FIRE ENGINE
-1F693 ; [*13DC.0020.0002.1F693] # POLICE CAR
-1F694 ; [*13DD.0020.0002.1F694] # ONCOMING POLICE CAR
-1F695 ; [*13DE.0020.0002.1F695] # TAXI
-1F696 ; [*13DF.0020.0002.1F696] # ONCOMING TAXI
-1F697 ; [*13E0.0020.0002.1F697] # AUTOMOBILE
-1F698 ; [*13E1.0020.0002.1F698] # ONCOMING AUTOMOBILE
-1F699 ; [*13E2.0020.0002.1F699] # RECREATIONAL VEHICLE
-1F69A ; [*13E3.0020.0002.1F69A] # DELIVERY TRUCK
-1F69B ; [*13E4.0020.0002.1F69B] # ARTICULATED LORRY
-1F69C ; [*13E5.0020.0002.1F69C] # TRACTOR
-1F69D ; [*13E6.0020.0002.1F69D] # MONORAIL
-1F69E ; [*13E7.0020.0002.1F69E] # MOUNTAIN RAILWAY
-1F69F ; [*13E8.0020.0002.1F69F] # SUSPENSION RAILWAY
-1F6A0 ; [*13E9.0020.0002.1F6A0] # MOUNTAIN CABLEWAY
-1F6A1 ; [*13EA.0020.0002.1F6A1] # AERIAL TRAMWAY
-1F6A2 ; [*13EB.0020.0002.1F6A2] # SHIP
-1F6A3 ; [*13EC.0020.0002.1F6A3] # ROWBOAT
-1F6A4 ; [*13ED.0020.0002.1F6A4] # SPEEDBOAT
-1F6A5 ; [*13EE.0020.0002.1F6A5] # HORIZONTAL TRAFFIC LIGHT
-1F6A6 ; [*13EF.0020.0002.1F6A6] # VERTICAL TRAFFIC LIGHT
-1F6A7 ; [*13F0.0020.0002.1F6A7] # CONSTRUCTION SIGN
-1F6A8 ; [*13F1.0020.0002.1F6A8] # POLICE CARS REVOLVING LIGHT
-1F6A9 ; [*13F2.0020.0002.1F6A9] # TRIANGULAR FLAG ON POST
-1F6AA ; [*13F3.0020.0002.1F6AA] # DOOR
-1F6AB ; [*13F4.0020.0002.1F6AB] # NO ENTRY SIGN
-1F6AC ; [*13F5.0020.0002.1F6AC] # SMOKING SYMBOL
-1F6AD ; [*13F6.0020.0002.1F6AD] # NO SMOKING SYMBOL
-1F6AE ; [*13F7.0020.0002.1F6AE] # PUT LITTER IN ITS PLACE SYMBOL
-1F6AF ; [*13F8.0020.0002.1F6AF] # DO NOT LITTER SYMBOL
-1F6B0 ; [*13F9.0020.0002.1F6B0] # POTABLE WATER SYMBOL
-1F6B1 ; [*13FA.0020.0002.1F6B1] # NON-POTABLE WATER SYMBOL
-1F6B2 ; [*13FB.0020.0002.1F6B2] # BICYCLE
-1F6B3 ; [*13FC.0020.0002.1F6B3] # NO BICYCLES
-1F6B4 ; [*13FD.0020.0002.1F6B4] # BICYCLIST
-1F6B5 ; [*13FE.0020.0002.1F6B5] # MOUNTAIN BICYCLIST
-1F6B6 ; [*13FF.0020.0002.1F6B6] # PEDESTRIAN
-1F6B7 ; [*1400.0020.0002.1F6B7] # NO PEDESTRIANS
-1F6B8 ; [*1401.0020.0002.1F6B8] # CHILDREN CROSSING
-1F6B9 ; [*1402.0020.0002.1F6B9] # MENS SYMBOL
-1F6BA ; [*1403.0020.0002.1F6BA] # WOMENS SYMBOL
-1F6BB ; [*1404.0020.0002.1F6BB] # RESTROOM
-1F6BC ; [*1405.0020.0002.1F6BC] # BABY SYMBOL
-1F6BD ; [*1406.0020.0002.1F6BD] # TOILET
-1F6BE ; [*1407.0020.0002.1F6BE] # WATER CLOSET
-1F6BF ; [*1408.0020.0002.1F6BF] # SHOWER
-1F6C0 ; [*1409.0020.0002.1F6C0] # BATH
-1F6C1 ; [*140A.0020.0002.1F6C1] # BATHTUB
-1F6C2 ; [*140B.0020.0002.1F6C2] # PASSPORT CONTROL
-1F6C3 ; [*140C.0020.0002.1F6C3] # CUSTOMS
-1F6C4 ; [*140D.0020.0002.1F6C4] # BAGGAGE CLAIM
-1F6C5 ; [*140E.0020.0002.1F6C5] # LEFT LUGGAGE
-1F700 ; [*140F.0020.0002.1F700] # ALCHEMICAL SYMBOL FOR QUINTESSENCE
-1F701 ; [*1410.0020.0002.1F701] # ALCHEMICAL SYMBOL FOR AIR
-1F702 ; [*1411.0020.0002.1F702] # ALCHEMICAL SYMBOL FOR FIRE
-1F703 ; [*1412.0020.0002.1F703] # ALCHEMICAL SYMBOL FOR EARTH
-1F704 ; [*1413.0020.0002.1F704] # ALCHEMICAL SYMBOL FOR WATER
-1F705 ; [*1414.0020.0002.1F705] # ALCHEMICAL SYMBOL FOR AQUAFORTIS
-1F706 ; [*1415.0020.0002.1F706] # ALCHEMICAL SYMBOL FOR AQUA REGIA
-1F707 ; [*1416.0020.0002.1F707] # ALCHEMICAL SYMBOL FOR AQUA REGIA-2
-1F708 ; [*1417.0020.0002.1F708] # ALCHEMICAL SYMBOL FOR AQUA VITAE
-1F709 ; [*1418.0020.0002.1F709] # ALCHEMICAL SYMBOL FOR AQUA VITAE-2
-1F70A ; [*1419.0020.0002.1F70A] # ALCHEMICAL SYMBOL FOR VINEGAR
-1F70B ; [*141A.0020.0002.1F70B] # ALCHEMICAL SYMBOL FOR VINEGAR-2
-1F70C ; [*141B.0020.0002.1F70C] # ALCHEMICAL SYMBOL FOR VINEGAR-3
-1F70D ; [*141C.0020.0002.1F70D] # ALCHEMICAL SYMBOL FOR SULFUR
-1F70E ; [*141D.0020.0002.1F70E] # ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR
-1F70F ; [*141E.0020.0002.1F70F] # ALCHEMICAL SYMBOL FOR BLACK SULFUR
-1F710 ; [*141F.0020.0002.1F710] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE
-1F711 ; [*1420.0020.0002.1F711] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2
-1F712 ; [*1421.0020.0002.1F712] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3
-1F713 ; [*1422.0020.0002.1F713] # ALCHEMICAL SYMBOL FOR CINNABAR
-1F714 ; [*1423.0020.0002.1F714] # ALCHEMICAL SYMBOL FOR SALT
-1F715 ; [*1424.0020.0002.1F715] # ALCHEMICAL SYMBOL FOR NITRE
-1F716 ; [*1425.0020.0002.1F716] # ALCHEMICAL SYMBOL FOR VITRIOL
-1F717 ; [*1426.0020.0002.1F717] # ALCHEMICAL SYMBOL FOR VITRIOL-2
-1F718 ; [*1427.0020.0002.1F718] # ALCHEMICAL SYMBOL FOR ROCK SALT
-1F719 ; [*1428.0020.0002.1F719] # ALCHEMICAL SYMBOL FOR ROCK SALT-2
-1F71A ; [*1429.0020.0002.1F71A] # ALCHEMICAL SYMBOL FOR GOLD
-1F71B ; [*142A.0020.0002.1F71B] # ALCHEMICAL SYMBOL FOR SILVER
-1F71C ; [*142B.0020.0002.1F71C] # ALCHEMICAL SYMBOL FOR IRON ORE
-1F71D ; [*142C.0020.0002.1F71D] # ALCHEMICAL SYMBOL FOR IRON ORE-2
-1F71E ; [*142D.0020.0002.1F71E] # ALCHEMICAL SYMBOL FOR CROCUS OF IRON
-1F71F ; [*142E.0020.0002.1F71F] # ALCHEMICAL SYMBOL FOR REGULUS OF IRON
-1F720 ; [*142F.0020.0002.1F720] # ALCHEMICAL SYMBOL FOR COPPER ORE
-1F721 ; [*1430.0020.0002.1F721] # ALCHEMICAL SYMBOL FOR IRON-COPPER ORE
-1F722 ; [*1431.0020.0002.1F722] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER
-1F723 ; [*1432.0020.0002.1F723] # ALCHEMICAL SYMBOL FOR CROCUS OF COPPER
-1F724 ; [*1433.0020.0002.1F724] # ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2
-1F725 ; [*1434.0020.0002.1F725] # ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE
-1F726 ; [*1435.0020.0002.1F726] # ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE
-1F727 ; [*1436.0020.0002.1F727] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER
-1F728 ; [*1437.0020.0002.1F728] # ALCHEMICAL SYMBOL FOR VERDIGRIS
-1F729 ; [*1438.0020.0002.1F729] # ALCHEMICAL SYMBOL FOR TIN ORE
-1F72A ; [*1439.0020.0002.1F72A] # ALCHEMICAL SYMBOL FOR LEAD ORE
-1F72B ; [*143A.0020.0002.1F72B] # ALCHEMICAL SYMBOL FOR ANTIMONY ORE
-1F72C ; [*143B.0020.0002.1F72C] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY
-1F72D ; [*143C.0020.0002.1F72D] # ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY
-1F72E ; [*143D.0020.0002.1F72E] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY
-1F72F ; [*143E.0020.0002.1F72F] # ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY
-1F730 ; [*143F.0020.0002.1F730] # ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY
-1F731 ; [*1440.0020.0002.1F731] # ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2
-1F732 ; [*1441.0020.0002.1F732] # ALCHEMICAL SYMBOL FOR REGULUS
-1F733 ; [*1442.0020.0002.1F733] # ALCHEMICAL SYMBOL FOR REGULUS-2
-1F734 ; [*1443.0020.0002.1F734] # ALCHEMICAL SYMBOL FOR REGULUS-3
-1F735 ; [*1444.0020.0002.1F735] # ALCHEMICAL SYMBOL FOR REGULUS-4
-1F736 ; [*1445.0020.0002.1F736] # ALCHEMICAL SYMBOL FOR ALKALI
-1F737 ; [*1446.0020.0002.1F737] # ALCHEMICAL SYMBOL FOR ALKALI-2
-1F738 ; [*1447.0020.0002.1F738] # ALCHEMICAL SYMBOL FOR MARCASITE
-1F739 ; [*1448.0020.0002.1F739] # ALCHEMICAL SYMBOL FOR SAL-AMMONIAC
-1F73A ; [*1449.0020.0002.1F73A] # ALCHEMICAL SYMBOL FOR ARSENIC
-1F73B ; [*144A.0020.0002.1F73B] # ALCHEMICAL SYMBOL FOR REALGAR
-1F73C ; [*144B.0020.0002.1F73C] # ALCHEMICAL SYMBOL FOR REALGAR-2
-1F73D ; [*144C.0020.0002.1F73D] # ALCHEMICAL SYMBOL FOR AURIPIGMENT
-1F73E ; [*144D.0020.0002.1F73E] # ALCHEMICAL SYMBOL FOR BISMUTH ORE
-1F73F ; [*144E.0020.0002.1F73F] # ALCHEMICAL SYMBOL FOR TARTAR
-1F740 ; [*144F.0020.0002.1F740] # ALCHEMICAL SYMBOL FOR TARTAR-2
-1F741 ; [*1450.0020.0002.1F741] # ALCHEMICAL SYMBOL FOR QUICK LIME
-1F742 ; [*1451.0020.0002.1F742] # ALCHEMICAL SYMBOL FOR BORAX
-1F743 ; [*1452.0020.0002.1F743] # ALCHEMICAL SYMBOL FOR BORAX-2
-1F744 ; [*1453.0020.0002.1F744] # ALCHEMICAL SYMBOL FOR BORAX-3
-1F745 ; [*1454.0020.0002.1F745] # ALCHEMICAL SYMBOL FOR ALUM
-1F746 ; [*1455.0020.0002.1F746] # ALCHEMICAL SYMBOL FOR OIL
-1F747 ; [*1456.0020.0002.1F747] # ALCHEMICAL SYMBOL FOR SPIRIT
-1F748 ; [*1457.0020.0002.1F748] # ALCHEMICAL SYMBOL FOR TINCTURE
-1F749 ; [*1458.0020.0002.1F749] # ALCHEMICAL SYMBOL FOR GUM
-1F74A ; [*1459.0020.0002.1F74A] # ALCHEMICAL SYMBOL FOR WAX
-1F74B ; [*145A.0020.0002.1F74B] # ALCHEMICAL SYMBOL FOR POWDER
-1F74C ; [*145B.0020.0002.1F74C] # ALCHEMICAL SYMBOL FOR CALX
-1F74D ; [*145C.0020.0002.1F74D] # ALCHEMICAL SYMBOL FOR TUTTY
-1F74E ; [*145D.0020.0002.1F74E] # ALCHEMICAL SYMBOL FOR CAPUT MORTUUM
-1F74F ; [*145E.0020.0002.1F74F] # ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE
-1F750 ; [*145F.0020.0002.1F750] # ALCHEMICAL SYMBOL FOR CADUCEUS
-1F751 ; [*1460.0020.0002.1F751] # ALCHEMICAL SYMBOL FOR TRIDENT
-1F752 ; [*1461.0020.0002.1F752] # ALCHEMICAL SYMBOL FOR STARRED TRIDENT
-1F753 ; [*1462.0020.0002.1F753] # ALCHEMICAL SYMBOL FOR LODESTONE
-1F754 ; [*1463.0020.0002.1F754] # ALCHEMICAL SYMBOL FOR SOAP
-1F755 ; [*1464.0020.0002.1F755] # ALCHEMICAL SYMBOL FOR URINE
-1F756 ; [*1465.0020.0002.1F756] # ALCHEMICAL SYMBOL FOR HORSE DUNG
-1F757 ; [*1466.0020.0002.1F757] # ALCHEMICAL SYMBOL FOR ASHES
-1F758 ; [*1467.0020.0002.1F758] # ALCHEMICAL SYMBOL FOR POT ASHES
-1F759 ; [*1468.0020.0002.1F759] # ALCHEMICAL SYMBOL FOR BRICK
-1F75A ; [*1469.0020.0002.1F75A] # ALCHEMICAL SYMBOL FOR POWDERED BRICK
-1F75B ; [*146A.0020.0002.1F75B] # ALCHEMICAL SYMBOL FOR AMALGAM
-1F75C ; [*146B.0020.0002.1F75C] # ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM
-1F75D ; [*146C.0020.0002.1F75D] # ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2
-1F75E ; [*146D.0020.0002.1F75E] # ALCHEMICAL SYMBOL FOR SUBLIMATION
-1F75F ; [*146E.0020.0002.1F75F] # ALCHEMICAL SYMBOL FOR PRECIPITATE
-1F760 ; [*146F.0020.0002.1F760] # ALCHEMICAL SYMBOL FOR DISTILL
-1F761 ; [*1470.0020.0002.1F761] # ALCHEMICAL SYMBOL FOR DISSOLVE
-1F762 ; [*1471.0020.0002.1F762] # ALCHEMICAL SYMBOL FOR DISSOLVE-2
-1F763 ; [*1472.0020.0002.1F763] # ALCHEMICAL SYMBOL FOR PURIFY
-1F764 ; [*1473.0020.0002.1F764] # ALCHEMICAL SYMBOL FOR PUTREFACTION
-1F765 ; [*1474.0020.0002.1F765] # ALCHEMICAL SYMBOL FOR CRUCIBLE
-1F766 ; [*1475.0020.0002.1F766] # ALCHEMICAL SYMBOL FOR CRUCIBLE-2
-1F767 ; [*1476.0020.0002.1F767] # ALCHEMICAL SYMBOL FOR CRUCIBLE-3
-1F768 ; [*1477.0020.0002.1F768] # ALCHEMICAL SYMBOL FOR CRUCIBLE-4
-1F769 ; [*1478.0020.0002.1F769] # ALCHEMICAL SYMBOL FOR CRUCIBLE-5
-1F76A ; [*1479.0020.0002.1F76A] # ALCHEMICAL SYMBOL FOR ALEMBIC
-1F76B ; [*147A.0020.0002.1F76B] # ALCHEMICAL SYMBOL FOR BATH OF MARY
-1F76C ; [*147B.0020.0002.1F76C] # ALCHEMICAL SYMBOL FOR BATH OF VAPOURS
-1F76D ; [*147C.0020.0002.1F76D] # ALCHEMICAL SYMBOL FOR RETORT
-1F76E ; [*147D.0020.0002.1F76E] # ALCHEMICAL SYMBOL FOR HOUR
-1F76F ; [*147E.0020.0002.1F76F] # ALCHEMICAL SYMBOL FOR NIGHT
-1F770 ; [*147F.0020.0002.1F770] # ALCHEMICAL SYMBOL FOR DAY-NIGHT
-1F771 ; [*1480.0020.0002.1F771] # ALCHEMICAL SYMBOL FOR MONTH
-1F772 ; [*1481.0020.0002.1F772] # ALCHEMICAL SYMBOL FOR HALF DRAM
-1F773 ; [*1482.0020.0002.1F773] # ALCHEMICAL SYMBOL FOR HALF OUNCE
+1F000 ; [*10B7.0020.0002.1F000] # MAHJONG TILE EAST WIND
+1F001 ; [*10B8.0020.0002.1F001] # MAHJONG TILE SOUTH WIND
+1F002 ; [*10B9.0020.0002.1F002] # MAHJONG TILE WEST WIND
+1F003 ; [*10BA.0020.0002.1F003] # MAHJONG TILE NORTH WIND
+1F004 ; [*10BB.0020.0002.1F004] # MAHJONG TILE RED DRAGON
+1F005 ; [*10BC.0020.0002.1F005] # MAHJONG TILE GREEN DRAGON
+1F006 ; [*10BD.0020.0002.1F006] # MAHJONG TILE WHITE DRAGON
+1F007 ; [*10BE.0020.0002.1F007] # MAHJONG TILE ONE OF CHARACTERS
+1F008 ; [*10BF.0020.0002.1F008] # MAHJONG TILE TWO OF CHARACTERS
+1F009 ; [*10C0.0020.0002.1F009] # MAHJONG TILE THREE OF CHARACTERS
+1F00A ; [*10C1.0020.0002.1F00A] # MAHJONG TILE FOUR OF CHARACTERS
+1F00B ; [*10C2.0020.0002.1F00B] # MAHJONG TILE FIVE OF CHARACTERS
+1F00C ; [*10C3.0020.0002.1F00C] # MAHJONG TILE SIX OF CHARACTERS
+1F00D ; [*10C4.0020.0002.1F00D] # MAHJONG TILE SEVEN OF CHARACTERS
+1F00E ; [*10C5.0020.0002.1F00E] # MAHJONG TILE EIGHT OF CHARACTERS
+1F00F ; [*10C6.0020.0002.1F00F] # MAHJONG TILE NINE OF CHARACTERS
+1F010 ; [*10C7.0020.0002.1F010] # MAHJONG TILE ONE OF BAMBOOS
+1F011 ; [*10C8.0020.0002.1F011] # MAHJONG TILE TWO OF BAMBOOS
+1F012 ; [*10C9.0020.0002.1F012] # MAHJONG TILE THREE OF BAMBOOS
+1F013 ; [*10CA.0020.0002.1F013] # MAHJONG TILE FOUR OF BAMBOOS
+1F014 ; [*10CB.0020.0002.1F014] # MAHJONG TILE FIVE OF BAMBOOS
+1F015 ; [*10CC.0020.0002.1F015] # MAHJONG TILE SIX OF BAMBOOS
+1F016 ; [*10CD.0020.0002.1F016] # MAHJONG TILE SEVEN OF BAMBOOS
+1F017 ; [*10CE.0020.0002.1F017] # MAHJONG TILE EIGHT OF BAMBOOS
+1F018 ; [*10CF.0020.0002.1F018] # MAHJONG TILE NINE OF BAMBOOS
+1F019 ; [*10D0.0020.0002.1F019] # MAHJONG TILE ONE OF CIRCLES
+1F01A ; [*10D1.0020.0002.1F01A] # MAHJONG TILE TWO OF CIRCLES
+1F01B ; [*10D2.0020.0002.1F01B] # MAHJONG TILE THREE OF CIRCLES
+1F01C ; [*10D3.0020.0002.1F01C] # MAHJONG TILE FOUR OF CIRCLES
+1F01D ; [*10D4.0020.0002.1F01D] # MAHJONG TILE FIVE OF CIRCLES
+1F01E ; [*10D5.0020.0002.1F01E] # MAHJONG TILE SIX OF CIRCLES
+1F01F ; [*10D6.0020.0002.1F01F] # MAHJONG TILE SEVEN OF CIRCLES
+1F020 ; [*10D7.0020.0002.1F020] # MAHJONG TILE EIGHT OF CIRCLES
+1F021 ; [*10D8.0020.0002.1F021] # MAHJONG TILE NINE OF CIRCLES
+1F022 ; [*10D9.0020.0002.1F022] # MAHJONG TILE PLUM
+1F023 ; [*10DA.0020.0002.1F023] # MAHJONG TILE ORCHID
+1F024 ; [*10DB.0020.0002.1F024] # MAHJONG TILE BAMBOO
+1F025 ; [*10DC.0020.0002.1F025] # MAHJONG TILE CHRYSANTHEMUM
+1F026 ; [*10DD.0020.0002.1F026] # MAHJONG TILE SPRING
+1F027 ; [*10DE.0020.0002.1F027] # MAHJONG TILE SUMMER
+1F028 ; [*10DF.0020.0002.1F028] # MAHJONG TILE AUTUMN
+1F029 ; [*10E0.0020.0002.1F029] # MAHJONG TILE WINTER
+1F02A ; [*10E1.0020.0002.1F02A] # MAHJONG TILE JOKER
+1F02B ; [*10E2.0020.0002.1F02B] # MAHJONG TILE BACK
+1F030 ; [*10E3.0020.0002.1F030] # DOMINO TILE HORIZONTAL BACK
+1F031 ; [*10E4.0020.0002.1F031] # DOMINO TILE HORIZONTAL-00-00
+1F032 ; [*10E5.0020.0002.1F032] # DOMINO TILE HORIZONTAL-00-01
+1F033 ; [*10E6.0020.0002.1F033] # DOMINO TILE HORIZONTAL-00-02
+1F034 ; [*10E7.0020.0002.1F034] # DOMINO TILE HORIZONTAL-00-03
+1F035 ; [*10E8.0020.0002.1F035] # DOMINO TILE HORIZONTAL-00-04
+1F036 ; [*10E9.0020.0002.1F036] # DOMINO TILE HORIZONTAL-00-05
+1F037 ; [*10EA.0020.0002.1F037] # DOMINO TILE HORIZONTAL-00-06
+1F038 ; [*10EB.0020.0002.1F038] # DOMINO TILE HORIZONTAL-01-00
+1F039 ; [*10EC.0020.0002.1F039] # DOMINO TILE HORIZONTAL-01-01
+1F03A ; [*10ED.0020.0002.1F03A] # DOMINO TILE HORIZONTAL-01-02
+1F03B ; [*10EE.0020.0002.1F03B] # DOMINO TILE HORIZONTAL-01-03
+1F03C ; [*10EF.0020.0002.1F03C] # DOMINO TILE HORIZONTAL-01-04
+1F03D ; [*10F0.0020.0002.1F03D] # DOMINO TILE HORIZONTAL-01-05
+1F03E ; [*10F1.0020.0002.1F03E] # DOMINO TILE HORIZONTAL-01-06
+1F03F ; [*10F2.0020.0002.1F03F] # DOMINO TILE HORIZONTAL-02-00
+1F040 ; [*10F3.0020.0002.1F040] # DOMINO TILE HORIZONTAL-02-01
+1F041 ; [*10F4.0020.0002.1F041] # DOMINO TILE HORIZONTAL-02-02
+1F042 ; [*10F5.0020.0002.1F042] # DOMINO TILE HORIZONTAL-02-03
+1F043 ; [*10F6.0020.0002.1F043] # DOMINO TILE HORIZONTAL-02-04
+1F044 ; [*10F7.0020.0002.1F044] # DOMINO TILE HORIZONTAL-02-05
+1F045 ; [*10F8.0020.0002.1F045] # DOMINO TILE HORIZONTAL-02-06
+1F046 ; [*10F9.0020.0002.1F046] # DOMINO TILE HORIZONTAL-03-00
+1F047 ; [*10FA.0020.0002.1F047] # DOMINO TILE HORIZONTAL-03-01
+1F048 ; [*10FB.0020.0002.1F048] # DOMINO TILE HORIZONTAL-03-02
+1F049 ; [*10FC.0020.0002.1F049] # DOMINO TILE HORIZONTAL-03-03
+1F04A ; [*10FD.0020.0002.1F04A] # DOMINO TILE HORIZONTAL-03-04
+1F04B ; [*10FE.0020.0002.1F04B] # DOMINO TILE HORIZONTAL-03-05
+1F04C ; [*10FF.0020.0002.1F04C] # DOMINO TILE HORIZONTAL-03-06
+1F04D ; [*1100.0020.0002.1F04D] # DOMINO TILE HORIZONTAL-04-00
+1F04E ; [*1101.0020.0002.1F04E] # DOMINO TILE HORIZONTAL-04-01
+1F04F ; [*1102.0020.0002.1F04F] # DOMINO TILE HORIZONTAL-04-02
+1F050 ; [*1103.0020.0002.1F050] # DOMINO TILE HORIZONTAL-04-03
+1F051 ; [*1104.0020.0002.1F051] # DOMINO TILE HORIZONTAL-04-04
+1F052 ; [*1105.0020.0002.1F052] # DOMINO TILE HORIZONTAL-04-05
+1F053 ; [*1106.0020.0002.1F053] # DOMINO TILE HORIZONTAL-04-06
+1F054 ; [*1107.0020.0002.1F054] # DOMINO TILE HORIZONTAL-05-00
+1F055 ; [*1108.0020.0002.1F055] # DOMINO TILE HORIZONTAL-05-01
+1F056 ; [*1109.0020.0002.1F056] # DOMINO TILE HORIZONTAL-05-02
+1F057 ; [*110A.0020.0002.1F057] # DOMINO TILE HORIZONTAL-05-03
+1F058 ; [*110B.0020.0002.1F058] # DOMINO TILE HORIZONTAL-05-04
+1F059 ; [*110C.0020.0002.1F059] # DOMINO TILE HORIZONTAL-05-05
+1F05A ; [*110D.0020.0002.1F05A] # DOMINO TILE HORIZONTAL-05-06
+1F05B ; [*110E.0020.0002.1F05B] # DOMINO TILE HORIZONTAL-06-00
+1F05C ; [*110F.0020.0002.1F05C] # DOMINO TILE HORIZONTAL-06-01
+1F05D ; [*1110.0020.0002.1F05D] # DOMINO TILE HORIZONTAL-06-02
+1F05E ; [*1111.0020.0002.1F05E] # DOMINO TILE HORIZONTAL-06-03
+1F05F ; [*1112.0020.0002.1F05F] # DOMINO TILE HORIZONTAL-06-04
+1F060 ; [*1113.0020.0002.1F060] # DOMINO TILE HORIZONTAL-06-05
+1F061 ; [*1114.0020.0002.1F061] # DOMINO TILE HORIZONTAL-06-06
+1F062 ; [*1115.0020.0002.1F062] # DOMINO TILE VERTICAL BACK
+1F063 ; [*1116.0020.0002.1F063] # DOMINO TILE VERTICAL-00-00
+1F064 ; [*1117.0020.0002.1F064] # DOMINO TILE VERTICAL-00-01
+1F065 ; [*1118.0020.0002.1F065] # DOMINO TILE VERTICAL-00-02
+1F066 ; [*1119.0020.0002.1F066] # DOMINO TILE VERTICAL-00-03
+1F067 ; [*111A.0020.0002.1F067] # DOMINO TILE VERTICAL-00-04
+1F068 ; [*111B.0020.0002.1F068] # DOMINO TILE VERTICAL-00-05
+1F069 ; [*111C.0020.0002.1F069] # DOMINO TILE VERTICAL-00-06
+1F06A ; [*111D.0020.0002.1F06A] # DOMINO TILE VERTICAL-01-00
+1F06B ; [*111E.0020.0002.1F06B] # DOMINO TILE VERTICAL-01-01
+1F06C ; [*111F.0020.0002.1F06C] # DOMINO TILE VERTICAL-01-02
+1F06D ; [*1120.0020.0002.1F06D] # DOMINO TILE VERTICAL-01-03
+1F06E ; [*1121.0020.0002.1F06E] # DOMINO TILE VERTICAL-01-04
+1F06F ; [*1122.0020.0002.1F06F] # DOMINO TILE VERTICAL-01-05
+1F070 ; [*1123.0020.0002.1F070] # DOMINO TILE VERTICAL-01-06
+1F071 ; [*1124.0020.0002.1F071] # DOMINO TILE VERTICAL-02-00
+1F072 ; [*1125.0020.0002.1F072] # DOMINO TILE VERTICAL-02-01
+1F073 ; [*1126.0020.0002.1F073] # DOMINO TILE VERTICAL-02-02
+1F074 ; [*1127.0020.0002.1F074] # DOMINO TILE VERTICAL-02-03
+1F075 ; [*1128.0020.0002.1F075] # DOMINO TILE VERTICAL-02-04
+1F076 ; [*1129.0020.0002.1F076] # DOMINO TILE VERTICAL-02-05
+1F077 ; [*112A.0020.0002.1F077] # DOMINO TILE VERTICAL-02-06
+1F078 ; [*112B.0020.0002.1F078] # DOMINO TILE VERTICAL-03-00
+1F079 ; [*112C.0020.0002.1F079] # DOMINO TILE VERTICAL-03-01
+1F07A ; [*112D.0020.0002.1F07A] # DOMINO TILE VERTICAL-03-02
+1F07B ; [*112E.0020.0002.1F07B] # DOMINO TILE VERTICAL-03-03
+1F07C ; [*112F.0020.0002.1F07C] # DOMINO TILE VERTICAL-03-04
+1F07D ; [*1130.0020.0002.1F07D] # DOMINO TILE VERTICAL-03-05
+1F07E ; [*1131.0020.0002.1F07E] # DOMINO TILE VERTICAL-03-06
+1F07F ; [*1132.0020.0002.1F07F] # DOMINO TILE VERTICAL-04-00
+1F080 ; [*1133.0020.0002.1F080] # DOMINO TILE VERTICAL-04-01
+1F081 ; [*1134.0020.0002.1F081] # DOMINO TILE VERTICAL-04-02
+1F082 ; [*1135.0020.0002.1F082] # DOMINO TILE VERTICAL-04-03
+1F083 ; [*1136.0020.0002.1F083] # DOMINO TILE VERTICAL-04-04
+1F084 ; [*1137.0020.0002.1F084] # DOMINO TILE VERTICAL-04-05
+1F085 ; [*1138.0020.0002.1F085] # DOMINO TILE VERTICAL-04-06
+1F086 ; [*1139.0020.0002.1F086] # DOMINO TILE VERTICAL-05-00
+1F087 ; [*113A.0020.0002.1F087] # DOMINO TILE VERTICAL-05-01
+1F088 ; [*113B.0020.0002.1F088] # DOMINO TILE VERTICAL-05-02
+1F089 ; [*113C.0020.0002.1F089] # DOMINO TILE VERTICAL-05-03
+1F08A ; [*113D.0020.0002.1F08A] # DOMINO TILE VERTICAL-05-04
+1F08B ; [*113E.0020.0002.1F08B] # DOMINO TILE VERTICAL-05-05
+1F08C ; [*113F.0020.0002.1F08C] # DOMINO TILE VERTICAL-05-06
+1F08D ; [*1140.0020.0002.1F08D] # DOMINO TILE VERTICAL-06-00
+1F08E ; [*1141.0020.0002.1F08E] # DOMINO TILE VERTICAL-06-01
+1F08F ; [*1142.0020.0002.1F08F] # DOMINO TILE VERTICAL-06-02
+1F090 ; [*1143.0020.0002.1F090] # DOMINO TILE VERTICAL-06-03
+1F091 ; [*1144.0020.0002.1F091] # DOMINO TILE VERTICAL-06-04
+1F092 ; [*1145.0020.0002.1F092] # DOMINO TILE VERTICAL-06-05
+1F093 ; [*1146.0020.0002.1F093] # DOMINO TILE VERTICAL-06-06
+1F0A0 ; [*1147.0020.0002.1F0A0] # PLAYING CARD BACK
+1F0A1 ; [*1148.0020.0002.1F0A1] # PLAYING CARD ACE OF SPADES
+1F0A2 ; [*1149.0020.0002.1F0A2] # PLAYING CARD TWO OF SPADES
+1F0A3 ; [*114A.0020.0002.1F0A3] # PLAYING CARD THREE OF SPADES
+1F0A4 ; [*114B.0020.0002.1F0A4] # PLAYING CARD FOUR OF SPADES
+1F0A5 ; [*114C.0020.0002.1F0A5] # PLAYING CARD FIVE OF SPADES
+1F0A6 ; [*114D.0020.0002.1F0A6] # PLAYING CARD SIX OF SPADES
+1F0A7 ; [*114E.0020.0002.1F0A7] # PLAYING CARD SEVEN OF SPADES
+1F0A8 ; [*114F.0020.0002.1F0A8] # PLAYING CARD EIGHT OF SPADES
+1F0A9 ; [*1150.0020.0002.1F0A9] # PLAYING CARD NINE OF SPADES
+1F0AA ; [*1151.0020.0002.1F0AA] # PLAYING CARD TEN OF SPADES
+1F0AB ; [*1152.0020.0002.1F0AB] # PLAYING CARD JACK OF SPADES
+1F0AC ; [*1153.0020.0002.1F0AC] # PLAYING CARD KNIGHT OF SPADES
+1F0AD ; [*1154.0020.0002.1F0AD] # PLAYING CARD QUEEN OF SPADES
+1F0AE ; [*1155.0020.0002.1F0AE] # PLAYING CARD KING OF SPADES
+1F0B1 ; [*1156.0020.0002.1F0B1] # PLAYING CARD ACE OF HEARTS
+1F0B2 ; [*1157.0020.0002.1F0B2] # PLAYING CARD TWO OF HEARTS
+1F0B3 ; [*1158.0020.0002.1F0B3] # PLAYING CARD THREE OF HEARTS
+1F0B4 ; [*1159.0020.0002.1F0B4] # PLAYING CARD FOUR OF HEARTS
+1F0B5 ; [*115A.0020.0002.1F0B5] # PLAYING CARD FIVE OF HEARTS
+1F0B6 ; [*115B.0020.0002.1F0B6] # PLAYING CARD SIX OF HEARTS
+1F0B7 ; [*115C.0020.0002.1F0B7] # PLAYING CARD SEVEN OF HEARTS
+1F0B8 ; [*115D.0020.0002.1F0B8] # PLAYING CARD EIGHT OF HEARTS
+1F0B9 ; [*115E.0020.0002.1F0B9] # PLAYING CARD NINE OF HEARTS
+1F0BA ; [*115F.0020.0002.1F0BA] # PLAYING CARD TEN OF HEARTS
+1F0BB ; [*1160.0020.0002.1F0BB] # PLAYING CARD JACK OF HEARTS
+1F0BC ; [*1161.0020.0002.1F0BC] # PLAYING CARD KNIGHT OF HEARTS
+1F0BD ; [*1162.0020.0002.1F0BD] # PLAYING CARD QUEEN OF HEARTS
+1F0BE ; [*1163.0020.0002.1F0BE] # PLAYING CARD KING OF HEARTS
+1F0C1 ; [*1164.0020.0002.1F0C1] # PLAYING CARD ACE OF DIAMONDS
+1F0C2 ; [*1165.0020.0002.1F0C2] # PLAYING CARD TWO OF DIAMONDS
+1F0C3 ; [*1166.0020.0002.1F0C3] # PLAYING CARD THREE OF DIAMONDS
+1F0C4 ; [*1167.0020.0002.1F0C4] # PLAYING CARD FOUR OF DIAMONDS
+1F0C5 ; [*1168.0020.0002.1F0C5] # PLAYING CARD FIVE OF DIAMONDS
+1F0C6 ; [*1169.0020.0002.1F0C6] # PLAYING CARD SIX OF DIAMONDS
+1F0C7 ; [*116A.0020.0002.1F0C7] # PLAYING CARD SEVEN OF DIAMONDS
+1F0C8 ; [*116B.0020.0002.1F0C8] # PLAYING CARD EIGHT OF DIAMONDS
+1F0C9 ; [*116C.0020.0002.1F0C9] # PLAYING CARD NINE OF DIAMONDS
+1F0CA ; [*116D.0020.0002.1F0CA] # PLAYING CARD TEN OF DIAMONDS
+1F0CB ; [*116E.0020.0002.1F0CB] # PLAYING CARD JACK OF DIAMONDS
+1F0CC ; [*116F.0020.0002.1F0CC] # PLAYING CARD KNIGHT OF DIAMONDS
+1F0CD ; [*1170.0020.0002.1F0CD] # PLAYING CARD QUEEN OF DIAMONDS
+1F0CE ; [*1171.0020.0002.1F0CE] # PLAYING CARD KING OF DIAMONDS
+1F0CF ; [*1172.0020.0002.1F0CF] # PLAYING CARD BLACK JOKER
+1F0D1 ; [*1173.0020.0002.1F0D1] # PLAYING CARD ACE OF CLUBS
+1F0D2 ; [*1174.0020.0002.1F0D2] # PLAYING CARD TWO OF CLUBS
+1F0D3 ; [*1175.0020.0002.1F0D3] # PLAYING CARD THREE OF CLUBS
+1F0D4 ; [*1176.0020.0002.1F0D4] # PLAYING CARD FOUR OF CLUBS
+1F0D5 ; [*1177.0020.0002.1F0D5] # PLAYING CARD FIVE OF CLUBS
+1F0D6 ; [*1178.0020.0002.1F0D6] # PLAYING CARD SIX OF CLUBS
+1F0D7 ; [*1179.0020.0002.1F0D7] # PLAYING CARD SEVEN OF CLUBS
+1F0D8 ; [*117A.0020.0002.1F0D8] # PLAYING CARD EIGHT OF CLUBS
+1F0D9 ; [*117B.0020.0002.1F0D9] # PLAYING CARD NINE OF CLUBS
+1F0DA ; [*117C.0020.0002.1F0DA] # PLAYING CARD TEN OF CLUBS
+1F0DB ; [*117D.0020.0002.1F0DB] # PLAYING CARD JACK OF CLUBS
+1F0DC ; [*117E.0020.0002.1F0DC] # PLAYING CARD KNIGHT OF CLUBS
+1F0DD ; [*117F.0020.0002.1F0DD] # PLAYING CARD QUEEN OF CLUBS
+1F0DE ; [*1180.0020.0002.1F0DE] # PLAYING CARD KING OF CLUBS
+1F0DF ; [*1181.0020.0002.1F0DF] # PLAYING CARD WHITE JOKER
+1F1E6 ; [*0986.0020.0002.1F1E6] # REGIONAL INDICATOR SYMBOL LETTER A
+1F1E7 ; [*0987.0020.0002.1F1E7] # REGIONAL INDICATOR SYMBOL LETTER B
+1F1E8 ; [*0988.0020.0002.1F1E8] # REGIONAL INDICATOR SYMBOL LETTER C
+1F1E9 ; [*0989.0020.0002.1F1E9] # REGIONAL INDICATOR SYMBOL LETTER D
+1F1EA ; [*098A.0020.0002.1F1EA] # REGIONAL INDICATOR SYMBOL LETTER E
+1F1EB ; [*098B.0020.0002.1F1EB] # REGIONAL INDICATOR SYMBOL LETTER F
+1F1EC ; [*098C.0020.0002.1F1EC] # REGIONAL INDICATOR SYMBOL LETTER G
+1F1ED ; [*098D.0020.0002.1F1ED] # REGIONAL INDICATOR SYMBOL LETTER H
+1F1EE ; [*098E.0020.0002.1F1EE] # REGIONAL INDICATOR SYMBOL LETTER I
+1F1EF ; [*098F.0020.0002.1F1EF] # REGIONAL INDICATOR SYMBOL LETTER J
+1F1F0 ; [*0990.0020.0002.1F1F0] # REGIONAL INDICATOR SYMBOL LETTER K
+1F1F1 ; [*0991.0020.0002.1F1F1] # REGIONAL INDICATOR SYMBOL LETTER L
+1F1F2 ; [*0992.0020.0002.1F1F2] # REGIONAL INDICATOR SYMBOL LETTER M
+1F1F3 ; [*0993.0020.0002.1F1F3] # REGIONAL INDICATOR SYMBOL LETTER N
+1F1F4 ; [*0994.0020.0002.1F1F4] # REGIONAL INDICATOR SYMBOL LETTER O
+1F1F5 ; [*0995.0020.0002.1F1F5] # REGIONAL INDICATOR SYMBOL LETTER P
+1F1F6 ; [*0996.0020.0002.1F1F6] # REGIONAL INDICATOR SYMBOL LETTER Q
+1F1F7 ; [*0997.0020.0002.1F1F7] # REGIONAL INDICATOR SYMBOL LETTER R
+1F1F8 ; [*0998.0020.0002.1F1F8] # REGIONAL INDICATOR SYMBOL LETTER S
+1F1F9 ; [*0999.0020.0002.1F1F9] # REGIONAL INDICATOR SYMBOL LETTER T
+1F1FA ; [*099A.0020.0002.1F1FA] # REGIONAL INDICATOR SYMBOL LETTER U
+1F1FB ; [*099B.0020.0002.1F1FB] # REGIONAL INDICATOR SYMBOL LETTER V
+1F1FC ; [*099C.0020.0002.1F1FC] # REGIONAL INDICATOR SYMBOL LETTER W
+1F1FD ; [*099D.0020.0002.1F1FD] # REGIONAL INDICATOR SYMBOL LETTER X
+1F1FE ; [*099E.0020.0002.1F1FE] # REGIONAL INDICATOR SYMBOL LETTER Y
+1F1FF ; [*099F.0020.0002.1F1FF] # REGIONAL INDICATOR SYMBOL LETTER Z
+1F300 ; [*1182.0020.0002.1F300] # CYCLONE
+1F301 ; [*1183.0020.0002.1F301] # FOGGY
+1F302 ; [*1184.0020.0002.1F302] # CLOSED UMBRELLA
+1F303 ; [*1185.0020.0002.1F303] # NIGHT WITH STARS
+1F304 ; [*1186.0020.0002.1F304] # SUNRISE OVER MOUNTAINS
+1F305 ; [*1187.0020.0002.1F305] # SUNRISE
+1F306 ; [*1188.0020.0002.1F306] # CITYSCAPE AT DUSK
+1F307 ; [*1189.0020.0002.1F307] # SUNSET OVER BUILDINGS
+1F308 ; [*118A.0020.0002.1F308] # RAINBOW
+1F309 ; [*118B.0020.0002.1F309] # BRIDGE AT NIGHT
+1F30A ; [*118C.0020.0002.1F30A] # WATER WAVE
+1F30B ; [*118D.0020.0002.1F30B] # VOLCANO
+1F30C ; [*118E.0020.0002.1F30C] # MILKY WAY
+1F30D ; [*118F.0020.0002.1F30D] # EARTH GLOBE EUROPE-AFRICA
+1F30E ; [*1190.0020.0002.1F30E] # EARTH GLOBE AMERICAS
+1F30F ; [*1191.0020.0002.1F30F] # EARTH GLOBE ASIA-AUSTRALIA
+1F310 ; [*1192.0020.0002.1F310] # GLOBE WITH MERIDIANS
+1F311 ; [*1193.0020.0002.1F311] # NEW MOON SYMBOL
+1F312 ; [*1194.0020.0002.1F312] # WAXING CRESCENT MOON SYMBOL
+1F313 ; [*1195.0020.0002.1F313] # FIRST QUARTER MOON SYMBOL
+1F314 ; [*1196.0020.0002.1F314] # WAXING GIBBOUS MOON SYMBOL
+1F315 ; [*1197.0020.0002.1F315] # FULL MOON SYMBOL
+1F316 ; [*1198.0020.0002.1F316] # WANING GIBBOUS MOON SYMBOL
+1F317 ; [*1199.0020.0002.1F317] # LAST QUARTER MOON SYMBOL
+1F318 ; [*119A.0020.0002.1F318] # WANING CRESCENT MOON SYMBOL
+1F319 ; [*119B.0020.0002.1F319] # CRESCENT MOON
+1F31A ; [*119C.0020.0002.1F31A] # NEW MOON WITH FACE
+1F31B ; [*119D.0020.0002.1F31B] # FIRST QUARTER MOON WITH FACE
+1F31C ; [*119E.0020.0002.1F31C] # LAST QUARTER MOON WITH FACE
+1F31D ; [*119F.0020.0002.1F31D] # FULL MOON WITH FACE
+1F31E ; [*11A0.0020.0002.1F31E] # SUN WITH FACE
+1F31F ; [*11A1.0020.0002.1F31F] # GLOWING STAR
+1F320 ; [*11A2.0020.0002.1F320] # SHOOTING STAR
+1F330 ; [*11A3.0020.0002.1F330] # CHESTNUT
+1F331 ; [*11A4.0020.0002.1F331] # SEEDLING
+1F332 ; [*11A5.0020.0002.1F332] # EVERGREEN TREE
+1F333 ; [*11A6.0020.0002.1F333] # DECIDUOUS TREE
+1F334 ; [*11A7.0020.0002.1F334] # PALM TREE
+1F335 ; [*11A8.0020.0002.1F335] # CACTUS
+1F337 ; [*11A9.0020.0002.1F337] # TULIP
+1F338 ; [*11AA.0020.0002.1F338] # CHERRY BLOSSOM
+1F339 ; [*11AB.0020.0002.1F339] # ROSE
+1F33A ; [*11AC.0020.0002.1F33A] # HIBISCUS
+1F33B ; [*11AD.0020.0002.1F33B] # SUNFLOWER
+1F33C ; [*11AE.0020.0002.1F33C] # BLOSSOM
+1F33D ; [*11AF.0020.0002.1F33D] # EAR OF MAIZE
+1F33E ; [*11B0.0020.0002.1F33E] # EAR OF RICE
+1F33F ; [*11B1.0020.0002.1F33F] # HERB
+1F340 ; [*11B2.0020.0002.1F340] # FOUR LEAF CLOVER
+1F341 ; [*11B3.0020.0002.1F341] # MAPLE LEAF
+1F342 ; [*11B4.0020.0002.1F342] # FALLEN LEAF
+1F343 ; [*11B5.0020.0002.1F343] # LEAF FLUTTERING IN WIND
+1F344 ; [*11B6.0020.0002.1F344] # MUSHROOM
+1F345 ; [*11B7.0020.0002.1F345] # TOMATO
+1F346 ; [*11B8.0020.0002.1F346] # AUBERGINE
+1F347 ; [*11B9.0020.0002.1F347] # GRAPES
+1F348 ; [*11BA.0020.0002.1F348] # MELON
+1F349 ; [*11BB.0020.0002.1F349] # WATERMELON
+1F34A ; [*11BC.0020.0002.1F34A] # TANGERINE
+1F34B ; [*11BD.0020.0002.1F34B] # LEMON
+1F34C ; [*11BE.0020.0002.1F34C] # BANANA
+1F34D ; [*11BF.0020.0002.1F34D] # PINEAPPLE
+1F34E ; [*11C0.0020.0002.1F34E] # RED APPLE
+1F34F ; [*11C1.0020.0002.1F34F] # GREEN APPLE
+1F350 ; [*11C2.0020.0002.1F350] # PEAR
+1F351 ; [*11C3.0020.0002.1F351] # PEACH
+1F352 ; [*11C4.0020.0002.1F352] # CHERRIES
+1F353 ; [*11C5.0020.0002.1F353] # STRAWBERRY
+1F354 ; [*11C6.0020.0002.1F354] # HAMBURGER
+1F355 ; [*11C7.0020.0002.1F355] # SLICE OF PIZZA
+1F356 ; [*11C8.0020.0002.1F356] # MEAT ON BONE
+1F357 ; [*11C9.0020.0002.1F357] # POULTRY LEG
+1F358 ; [*11CA.0020.0002.1F358] # RICE CRACKER
+1F359 ; [*11CB.0020.0002.1F359] # RICE BALL
+1F35A ; [*11CC.0020.0002.1F35A] # COOKED RICE
+1F35B ; [*11CD.0020.0002.1F35B] # CURRY AND RICE
+1F35C ; [*11CE.0020.0002.1F35C] # STEAMING BOWL
+1F35D ; [*11CF.0020.0002.1F35D] # SPAGHETTI
+1F35E ; [*11D0.0020.0002.1F35E] # BREAD
+1F35F ; [*11D1.0020.0002.1F35F] # FRENCH FRIES
+1F360 ; [*11D2.0020.0002.1F360] # ROASTED SWEET POTATO
+1F361 ; [*11D3.0020.0002.1F361] # DANGO
+1F362 ; [*11D4.0020.0002.1F362] # ODEN
+1F363 ; [*11D5.0020.0002.1F363] # SUSHI
+1F364 ; [*11D6.0020.0002.1F364] # FRIED SHRIMP
+1F365 ; [*11D7.0020.0002.1F365] # FISH CAKE WITH SWIRL DESIGN
+1F366 ; [*11D8.0020.0002.1F366] # SOFT ICE CREAM
+1F367 ; [*11D9.0020.0002.1F367] # SHAVED ICE
+1F368 ; [*11DA.0020.0002.1F368] # ICE CREAM
+1F369 ; [*11DB.0020.0002.1F369] # DOUGHNUT
+1F36A ; [*11DC.0020.0002.1F36A] # COOKIE
+1F36B ; [*11DD.0020.0002.1F36B] # CHOCOLATE BAR
+1F36C ; [*11DE.0020.0002.1F36C] # CANDY
+1F36D ; [*11DF.0020.0002.1F36D] # LOLLIPOP
+1F36E ; [*11E0.0020.0002.1F36E] # CUSTARD
+1F36F ; [*11E1.0020.0002.1F36F] # HONEY POT
+1F370 ; [*11E2.0020.0002.1F370] # SHORTCAKE
+1F371 ; [*11E3.0020.0002.1F371] # BENTO BOX
+1F372 ; [*11E4.0020.0002.1F372] # POT OF FOOD
+1F373 ; [*11E5.0020.0002.1F373] # COOKING
+1F374 ; [*11E6.0020.0002.1F374] # FORK AND KNIFE
+1F375 ; [*11E7.0020.0002.1F375] # TEACUP WITHOUT HANDLE
+1F376 ; [*11E8.0020.0002.1F376] # SAKE BOTTLE AND CUP
+1F377 ; [*11E9.0020.0002.1F377] # WINE GLASS
+1F378 ; [*11EA.0020.0002.1F378] # COCKTAIL GLASS
+1F379 ; [*11EB.0020.0002.1F379] # TROPICAL DRINK
+1F37A ; [*11EC.0020.0002.1F37A] # BEER MUG
+1F37B ; [*11ED.0020.0002.1F37B] # CLINKING BEER MUGS
+1F37C ; [*11EE.0020.0002.1F37C] # BABY BOTTLE
+1F380 ; [*11EF.0020.0002.1F380] # RIBBON
+1F381 ; [*11F0.0020.0002.1F381] # WRAPPED PRESENT
+1F382 ; [*11F1.0020.0002.1F382] # BIRTHDAY CAKE
+1F383 ; [*11F2.0020.0002.1F383] # JACK-O-LANTERN
+1F384 ; [*11F3.0020.0002.1F384] # CHRISTMAS TREE
+1F385 ; [*11F4.0020.0002.1F385] # FATHER CHRISTMAS
+1F386 ; [*11F5.0020.0002.1F386] # FIREWORKS
+1F387 ; [*11F6.0020.0002.1F387] # FIREWORK SPARKLER
+1F388 ; [*11F7.0020.0002.1F388] # BALLOON
+1F389 ; [*11F8.0020.0002.1F389] # PARTY POPPER
+1F38A ; [*11F9.0020.0002.1F38A] # CONFETTI BALL
+1F38B ; [*11FA.0020.0002.1F38B] # TANABATA TREE
+1F38C ; [*11FB.0020.0002.1F38C] # CROSSED FLAGS
+1F38D ; [*11FC.0020.0002.1F38D] # PINE DECORATION
+1F38E ; [*11FD.0020.0002.1F38E] # JAPANESE DOLLS
+1F38F ; [*11FE.0020.0002.1F38F] # CARP STREAMER
+1F390 ; [*11FF.0020.0002.1F390] # WIND CHIME
+1F391 ; [*1200.0020.0002.1F391] # MOON VIEWING CEREMONY
+1F392 ; [*1201.0020.0002.1F392] # SCHOOL SATCHEL
+1F393 ; [*1202.0020.0002.1F393] # GRADUATION CAP
+1F3A0 ; [*1203.0020.0002.1F3A0] # CAROUSEL HORSE
+1F3A1 ; [*1204.0020.0002.1F3A1] # FERRIS WHEEL
+1F3A2 ; [*1205.0020.0002.1F3A2] # ROLLER COASTER
+1F3A3 ; [*1206.0020.0002.1F3A3] # FISHING POLE AND FISH
+1F3A4 ; [*1207.0020.0002.1F3A4] # MICROPHONE
+1F3A5 ; [*1208.0020.0002.1F3A5] # MOVIE CAMERA
+1F3A6 ; [*1209.0020.0002.1F3A6] # CINEMA
+1F3A7 ; [*120A.0020.0002.1F3A7] # HEADPHONE
+1F3A8 ; [*120B.0020.0002.1F3A8] # ARTIST PALETTE
+1F3A9 ; [*120C.0020.0002.1F3A9] # TOP HAT
+1F3AA ; [*120D.0020.0002.1F3AA] # CIRCUS TENT
+1F3AB ; [*120E.0020.0002.1F3AB] # TICKET
+1F3AC ; [*120F.0020.0002.1F3AC] # CLAPPER BOARD
+1F3AD ; [*1210.0020.0002.1F3AD] # PERFORMING ARTS
+1F3AE ; [*1211.0020.0002.1F3AE] # VIDEO GAME
+1F3AF ; [*1212.0020.0002.1F3AF] # DIRECT HIT
+1F3B0 ; [*1213.0020.0002.1F3B0] # SLOT MACHINE
+1F3B1 ; [*1214.0020.0002.1F3B1] # BILLIARDS
+1F3B2 ; [*1215.0020.0002.1F3B2] # GAME DIE
+1F3B3 ; [*1216.0020.0002.1F3B3] # BOWLING
+1F3B4 ; [*1217.0020.0002.1F3B4] # FLOWER PLAYING CARDS
+1F3B5 ; [*1218.0020.0002.1F3B5] # MUSICAL NOTE
+1F3B6 ; [*1219.0020.0002.1F3B6] # MULTIPLE MUSICAL NOTES
+1F3B7 ; [*121A.0020.0002.1F3B7] # SAXOPHONE
+1F3B8 ; [*121B.0020.0002.1F3B8] # GUITAR
+1F3B9 ; [*121C.0020.0002.1F3B9] # MUSICAL KEYBOARD
+1F3BA ; [*121D.0020.0002.1F3BA] # TRUMPET
+1F3BB ; [*121E.0020.0002.1F3BB] # VIOLIN
+1F3BC ; [*121F.0020.0002.1F3BC] # MUSICAL SCORE
+1F3BD ; [*1220.0020.0002.1F3BD] # RUNNING SHIRT WITH SASH
+1F3BE ; [*1221.0020.0002.1F3BE] # TENNIS RACQUET AND BALL
+1F3BF ; [*1222.0020.0002.1F3BF] # SKI AND SKI BOOT
+1F3C0 ; [*1223.0020.0002.1F3C0] # BASKETBALL AND HOOP
+1F3C1 ; [*1224.0020.0002.1F3C1] # CHEQUERED FLAG
+1F3C2 ; [*1225.0020.0002.1F3C2] # SNOWBOARDER
+1F3C3 ; [*1226.0020.0002.1F3C3] # RUNNER
+1F3C4 ; [*1227.0020.0002.1F3C4] # SURFER
+1F3C6 ; [*1228.0020.0002.1F3C6] # TROPHY
+1F3C7 ; [*1229.0020.0002.1F3C7] # HORSE RACING
+1F3C8 ; [*122A.0020.0002.1F3C8] # AMERICAN FOOTBALL
+1F3C9 ; [*122B.0020.0002.1F3C9] # RUGBY FOOTBALL
+1F3CA ; [*122C.0020.0002.1F3CA] # SWIMMER
+1F3E0 ; [*122D.0020.0002.1F3E0] # HOUSE BUILDING
+1F3E1 ; [*122E.0020.0002.1F3E1] # HOUSE WITH GARDEN
+1F3E2 ; [*122F.0020.0002.1F3E2] # OFFICE BUILDING
+1F3E3 ; [*1230.0020.0002.1F3E3] # JAPANESE POST OFFICE
+1F3E4 ; [*1231.0020.0002.1F3E4] # EUROPEAN POST OFFICE
+1F3E5 ; [*1232.0020.0002.1F3E5] # HOSPITAL
+1F3E6 ; [*1233.0020.0002.1F3E6] # BANK
+1F3E7 ; [*1234.0020.0002.1F3E7] # AUTOMATED TELLER MACHINE
+1F3E8 ; [*1235.0020.0002.1F3E8] # HOTEL
+1F3E9 ; [*1236.0020.0002.1F3E9] # LOVE HOTEL
+1F3EA ; [*1237.0020.0002.1F3EA] # CONVENIENCE STORE
+1F3EB ; [*1238.0020.0002.1F3EB] # SCHOOL
+1F3EC ; [*1239.0020.0002.1F3EC] # DEPARTMENT STORE
+1F3ED ; [*123A.0020.0002.1F3ED] # FACTORY
+1F3EE ; [*123B.0020.0002.1F3EE] # IZAKAYA LANTERN
+1F3EF ; [*123C.0020.0002.1F3EF] # JAPANESE CASTLE
+1F3F0 ; [*123D.0020.0002.1F3F0] # EUROPEAN CASTLE
+1F400 ; [*123E.0020.0002.1F400] # RAT
+1F401 ; [*123F.0020.0002.1F401] # MOUSE
+1F402 ; [*1240.0020.0002.1F402] # OX
+1F403 ; [*1241.0020.0002.1F403] # WATER BUFFALO
+1F404 ; [*1242.0020.0002.1F404] # COW
+1F405 ; [*1243.0020.0002.1F405] # TIGER
+1F406 ; [*1244.0020.0002.1F406] # LEOPARD
+1F407 ; [*1245.0020.0002.1F407] # RABBIT
+1F408 ; [*1246.0020.0002.1F408] # CAT
+1F409 ; [*1247.0020.0002.1F409] # DRAGON
+1F40A ; [*1248.0020.0002.1F40A] # CROCODILE
+1F40B ; [*1249.0020.0002.1F40B] # WHALE
+1F40C ; [*124A.0020.0002.1F40C] # SNAIL
+1F40D ; [*124B.0020.0002.1F40D] # SNAKE
+1F40E ; [*124C.0020.0002.1F40E] # HORSE
+1F40F ; [*124D.0020.0002.1F40F] # RAM
+1F410 ; [*124E.0020.0002.1F410] # GOAT
+1F411 ; [*124F.0020.0002.1F411] # SHEEP
+1F412 ; [*1250.0020.0002.1F412] # MONKEY
+1F413 ; [*1251.0020.0002.1F413] # ROOSTER
+1F414 ; [*1252.0020.0002.1F414] # CHICKEN
+1F415 ; [*1253.0020.0002.1F415] # DOG
+1F416 ; [*1254.0020.0002.1F416] # PIG
+1F417 ; [*1255.0020.0002.1F417] # BOAR
+1F418 ; [*1256.0020.0002.1F418] # ELEPHANT
+1F419 ; [*1257.0020.0002.1F419] # OCTOPUS
+1F41A ; [*1258.0020.0002.1F41A] # SPIRAL SHELL
+1F41B ; [*1259.0020.0002.1F41B] # BUG
+1F41C ; [*125A.0020.0002.1F41C] # ANT
+1F41D ; [*125B.0020.0002.1F41D] # HONEYBEE
+1F41E ; [*125C.0020.0002.1F41E] # LADY BEETLE
+1F41F ; [*125D.0020.0002.1F41F] # FISH
+1F420 ; [*125E.0020.0002.1F420] # TROPICAL FISH
+1F421 ; [*125F.0020.0002.1F421] # BLOWFISH
+1F422 ; [*1260.0020.0002.1F422] # TURTLE
+1F423 ; [*1261.0020.0002.1F423] # HATCHING CHICK
+1F424 ; [*1262.0020.0002.1F424] # BABY CHICK
+1F425 ; [*1263.0020.0002.1F425] # FRONT-FACING BABY CHICK
+1F426 ; [*1264.0020.0002.1F426] # BIRD
+1F427 ; [*1265.0020.0002.1F427] # PENGUIN
+1F428 ; [*1266.0020.0002.1F428] # KOALA
+1F429 ; [*1267.0020.0002.1F429] # POODLE
+1F42A ; [*1268.0020.0002.1F42A] # DROMEDARY CAMEL
+1F42B ; [*1269.0020.0002.1F42B] # BACTRIAN CAMEL
+1F42C ; [*126A.0020.0002.1F42C] # DOLPHIN
+1F42D ; [*126B.0020.0002.1F42D] # MOUSE FACE
+1F42E ; [*126C.0020.0002.1F42E] # COW FACE
+1F42F ; [*126D.0020.0002.1F42F] # TIGER FACE
+1F430 ; [*126E.0020.0002.1F430] # RABBIT FACE
+1F431 ; [*126F.0020.0002.1F431] # CAT FACE
+1F432 ; [*1270.0020.0002.1F432] # DRAGON FACE
+1F433 ; [*1271.0020.0002.1F433] # SPOUTING WHALE
+1F434 ; [*1272.0020.0002.1F434] # HORSE FACE
+1F435 ; [*1273.0020.0002.1F435] # MONKEY FACE
+1F436 ; [*1274.0020.0002.1F436] # DOG FACE
+1F437 ; [*1275.0020.0002.1F437] # PIG FACE
+1F438 ; [*1276.0020.0002.1F438] # FROG FACE
+1F439 ; [*1277.0020.0002.1F439] # HAMSTER FACE
+1F43A ; [*1278.0020.0002.1F43A] # WOLF FACE
+1F43B ; [*1279.0020.0002.1F43B] # BEAR FACE
+1F43C ; [*127A.0020.0002.1F43C] # PANDA FACE
+1F43D ; [*127B.0020.0002.1F43D] # PIG NOSE
+1F43E ; [*127C.0020.0002.1F43E] # PAW PRINTS
+1F440 ; [*127D.0020.0002.1F440] # EYES
+1F442 ; [*127E.0020.0002.1F442] # EAR
+1F443 ; [*127F.0020.0002.1F443] # NOSE
+1F444 ; [*1280.0020.0002.1F444] # MOUTH
+1F445 ; [*1281.0020.0002.1F445] # TONGUE
+1F446 ; [*1282.0020.0002.1F446] # WHITE UP POINTING BACKHAND INDEX
+1F447 ; [*1283.0020.0002.1F447] # WHITE DOWN POINTING BACKHAND INDEX
+1F448 ; [*1284.0020.0002.1F448] # WHITE LEFT POINTING BACKHAND INDEX
+1F449 ; [*1285.0020.0002.1F449] # WHITE RIGHT POINTING BACKHAND INDEX
+1F44A ; [*1286.0020.0002.1F44A] # FISTED HAND SIGN
+1F44B ; [*1287.0020.0002.1F44B] # WAVING HAND SIGN
+1F44C ; [*1288.0020.0002.1F44C] # OK HAND SIGN
+1F44D ; [*1289.0020.0002.1F44D] # THUMBS UP SIGN
+1F44E ; [*128A.0020.0002.1F44E] # THUMBS DOWN SIGN
+1F44F ; [*128B.0020.0002.1F44F] # CLAPPING HANDS SIGN
+1F450 ; [*128C.0020.0002.1F450] # OPEN HANDS SIGN
+1F451 ; [*128D.0020.0002.1F451] # CROWN
+1F452 ; [*128E.0020.0002.1F452] # WOMANS HAT
+1F453 ; [*128F.0020.0002.1F453] # EYEGLASSES
+1F454 ; [*1290.0020.0002.1F454] # NECKTIE
+1F455 ; [*1291.0020.0002.1F455] # T-SHIRT
+1F456 ; [*1292.0020.0002.1F456] # JEANS
+1F457 ; [*1293.0020.0002.1F457] # DRESS
+1F458 ; [*1294.0020.0002.1F458] # KIMONO
+1F459 ; [*1295.0020.0002.1F459] # BIKINI
+1F45A ; [*1296.0020.0002.1F45A] # WOMANS CLOTHES
+1F45B ; [*1297.0020.0002.1F45B] # PURSE
+1F45C ; [*1298.0020.0002.1F45C] # HANDBAG
+1F45D ; [*1299.0020.0002.1F45D] # POUCH
+1F45E ; [*129A.0020.0002.1F45E] # MANS SHOE
+1F45F ; [*129B.0020.0002.1F45F] # ATHLETIC SHOE
+1F460 ; [*129C.0020.0002.1F460] # HIGH-HEELED SHOE
+1F461 ; [*129D.0020.0002.1F461] # WOMANS SANDAL
+1F462 ; [*129E.0020.0002.1F462] # WOMANS BOOTS
+1F463 ; [*129F.0020.0002.1F463] # FOOTPRINTS
+1F464 ; [*12A0.0020.0002.1F464] # BUST IN SILHOUETTE
+1F465 ; [*12A1.0020.0002.1F465] # BUSTS IN SILHOUETTE
+1F466 ; [*12A2.0020.0002.1F466] # BOY
+1F467 ; [*12A3.0020.0002.1F467] # GIRL
+1F468 ; [*12A4.0020.0002.1F468] # MAN
+1F469 ; [*12A5.0020.0002.1F469] # WOMAN
+1F46A ; [*12A6.0020.0002.1F46A] # FAMILY
+1F46B ; [*12A7.0020.0002.1F46B] # MAN AND WOMAN HOLDING HANDS
+1F46C ; [*12A8.0020.0002.1F46C] # TWO MEN HOLDING HANDS
+1F46D ; [*12A9.0020.0002.1F46D] # TWO WOMEN HOLDING HANDS
+1F46E ; [*12AA.0020.0002.1F46E] # POLICE OFFICER
+1F46F ; [*12AB.0020.0002.1F46F] # WOMAN WITH BUNNY EARS
+1F470 ; [*12AC.0020.0002.1F470] # BRIDE WITH VEIL
+1F471 ; [*12AD.0020.0002.1F471] # PERSON WITH BLOND HAIR
+1F472 ; [*12AE.0020.0002.1F472] # MAN WITH GUA PI MAO
+1F473 ; [*12AF.0020.0002.1F473] # MAN WITH TURBAN
+1F474 ; [*12B0.0020.0002.1F474] # OLDER MAN
+1F475 ; [*12B1.0020.0002.1F475] # OLDER WOMAN
+1F476 ; [*12B2.0020.0002.1F476] # BABY
+1F477 ; [*12B3.0020.0002.1F477] # CONSTRUCTION WORKER
+1F478 ; [*12B4.0020.0002.1F478] # PRINCESS
+1F479 ; [*12B5.0020.0002.1F479] # JAPANESE OGRE
+1F47A ; [*12B6.0020.0002.1F47A] # JAPANESE GOBLIN
+1F47B ; [*12B7.0020.0002.1F47B] # GHOST
+1F47C ; [*12B8.0020.0002.1F47C] # BABY ANGEL
+1F47D ; [*12B9.0020.0002.1F47D] # EXTRATERRESTRIAL ALIEN
+1F47E ; [*12BA.0020.0002.1F47E] # ALIEN MONSTER
+1F47F ; [*12BB.0020.0002.1F47F] # IMP
+1F480 ; [*12BC.0020.0002.1F480] # SKULL
+1F481 ; [*12BD.0020.0002.1F481] # INFORMATION DESK PERSON
+1F482 ; [*12BE.0020.0002.1F482] # GUARDSMAN
+1F483 ; [*12BF.0020.0002.1F483] # DANCER
+1F484 ; [*12C0.0020.0002.1F484] # LIPSTICK
+1F485 ; [*12C1.0020.0002.1F485] # NAIL POLISH
+1F486 ; [*12C2.0020.0002.1F486] # FACE MASSAGE
+1F487 ; [*12C3.0020.0002.1F487] # HAIRCUT
+1F488 ; [*12C4.0020.0002.1F488] # BARBER POLE
+1F489 ; [*12C5.0020.0002.1F489] # SYRINGE
+1F48A ; [*12C6.0020.0002.1F48A] # PILL
+1F48B ; [*12C7.0020.0002.1F48B] # KISS MARK
+1F48C ; [*12C8.0020.0002.1F48C] # LOVE LETTER
+1F48D ; [*12C9.0020.0002.1F48D] # RING
+1F48E ; [*12CA.0020.0002.1F48E] # GEM STONE
+1F48F ; [*12CB.0020.0002.1F48F] # KISS
+1F490 ; [*12CC.0020.0002.1F490] # BOUQUET
+1F491 ; [*12CD.0020.0002.1F491] # COUPLE WITH HEART
+1F492 ; [*12CE.0020.0002.1F492] # WEDDING
+1F493 ; [*12CF.0020.0002.1F493] # BEATING HEART
+1F494 ; [*12D0.0020.0002.1F494] # BROKEN HEART
+1F495 ; [*12D1.0020.0002.1F495] # TWO HEARTS
+1F496 ; [*12D2.0020.0002.1F496] # SPARKLING HEART
+1F497 ; [*12D3.0020.0002.1F497] # GROWING HEART
+1F498 ; [*12D4.0020.0002.1F498] # HEART WITH ARROW
+1F499 ; [*12D5.0020.0002.1F499] # BLUE HEART
+1F49A ; [*12D6.0020.0002.1F49A] # GREEN HEART
+1F49B ; [*12D7.0020.0002.1F49B] # YELLOW HEART
+1F49C ; [*12D8.0020.0002.1F49C] # PURPLE HEART
+1F49D ; [*12D9.0020.0002.1F49D] # HEART WITH RIBBON
+1F49E ; [*12DA.0020.0002.1F49E] # REVOLVING HEARTS
+1F49F ; [*12DB.0020.0002.1F49F] # HEART DECORATION
+1F4A0 ; [*12DC.0020.0002.1F4A0] # DIAMOND SHAPE WITH A DOT INSIDE
+1F4A1 ; [*12DD.0020.0002.1F4A1] # ELECTRIC LIGHT BULB
+1F4A2 ; [*12DE.0020.0002.1F4A2] # ANGER SYMBOL
+1F4A3 ; [*12DF.0020.0002.1F4A3] # BOMB
+1F4A4 ; [*12E0.0020.0002.1F4A4] # SLEEPING SYMBOL
+1F4A5 ; [*12E1.0020.0002.1F4A5] # COLLISION SYMBOL
+1F4A6 ; [*12E2.0020.0002.1F4A6] # SPLASHING SWEAT SYMBOL
+1F4A7 ; [*12E3.0020.0002.1F4A7] # DROPLET
+1F4A8 ; [*12E4.0020.0002.1F4A8] # DASH SYMBOL
+1F4A9 ; [*12E5.0020.0002.1F4A9] # PILE OF POO
+1F4AA ; [*12E6.0020.0002.1F4AA] # FLEXED BICEPS
+1F4AB ; [*12E7.0020.0002.1F4AB] # DIZZY SYMBOL
+1F4AC ; [*12E8.0020.0002.1F4AC] # SPEECH BALLOON
+1F4AD ; [*12E9.0020.0002.1F4AD] # THOUGHT BALLOON
+1F4AE ; [*12EA.0020.0002.1F4AE] # WHITE FLOWER
+1F4AF ; [*12EB.0020.0002.1F4AF] # HUNDRED POINTS SYMBOL
+1F4B0 ; [*12EC.0020.0002.1F4B0] # MONEY BAG
+1F4B1 ; [*12ED.0020.0002.1F4B1] # CURRENCY EXCHANGE
+1F4B2 ; [*12EE.0020.0002.1F4B2] # HEAVY DOLLAR SIGN
+1F4B3 ; [*12EF.0020.0002.1F4B3] # CREDIT CARD
+1F4B4 ; [*12F0.0020.0002.1F4B4] # BANKNOTE WITH YEN SIGN
+1F4B5 ; [*12F1.0020.0002.1F4B5] # BANKNOTE WITH DOLLAR SIGN
+1F4B6 ; [*12F2.0020.0002.1F4B6] # BANKNOTE WITH EURO SIGN
+1F4B7 ; [*12F3.0020.0002.1F4B7] # BANKNOTE WITH POUND SIGN
+1F4B8 ; [*12F4.0020.0002.1F4B8] # MONEY WITH WINGS
+1F4B9 ; [*12F5.0020.0002.1F4B9] # CHART WITH UPWARDS TREND AND YEN SIGN
+1F4BA ; [*12F6.0020.0002.1F4BA] # SEAT
+1F4BB ; [*12F7.0020.0002.1F4BB] # PERSONAL COMPUTER
+1F4BC ; [*12F8.0020.0002.1F4BC] # BRIEFCASE
+1F4BD ; [*12F9.0020.0002.1F4BD] # MINIDISC
+1F4BE ; [*12FA.0020.0002.1F4BE] # FLOPPY DISK
+1F4BF ; [*12FB.0020.0002.1F4BF] # OPTICAL DISC
+1F4C0 ; [*12FC.0020.0002.1F4C0] # DVD
+1F4C1 ; [*12FD.0020.0002.1F4C1] # FILE FOLDER
+1F4C2 ; [*12FE.0020.0002.1F4C2] # OPEN FILE FOLDER
+1F4C3 ; [*12FF.0020.0002.1F4C3] # PAGE WITH CURL
+1F4C4 ; [*1300.0020.0002.1F4C4] # PAGE FACING UP
+1F4C5 ; [*1301.0020.0002.1F4C5] # CALENDAR
+1F4C6 ; [*1302.0020.0002.1F4C6] # TEAR-OFF CALENDAR
+1F4C7 ; [*1303.0020.0002.1F4C7] # CARD INDEX
+1F4C8 ; [*1304.0020.0002.1F4C8] # CHART WITH UPWARDS TREND
+1F4C9 ; [*1305.0020.0002.1F4C9] # CHART WITH DOWNWARDS TREND
+1F4CA ; [*1306.0020.0002.1F4CA] # BAR CHART
+1F4CB ; [*1307.0020.0002.1F4CB] # CLIPBOARD
+1F4CC ; [*1308.0020.0002.1F4CC] # PUSHPIN
+1F4CD ; [*1309.0020.0002.1F4CD] # ROUND PUSHPIN
+1F4CE ; [*130A.0020.0002.1F4CE] # PAPERCLIP
+1F4CF ; [*130B.0020.0002.1F4CF] # STRAIGHT RULER
+1F4D0 ; [*130C.0020.0002.1F4D0] # TRIANGULAR RULER
+1F4D1 ; [*130D.0020.0002.1F4D1] # BOOKMARK TABS
+1F4D2 ; [*130E.0020.0002.1F4D2] # LEDGER
+1F4D3 ; [*130F.0020.0002.1F4D3] # NOTEBOOK
+1F4D4 ; [*1310.0020.0002.1F4D4] # NOTEBOOK WITH DECORATIVE COVER
+1F4D5 ; [*1311.0020.0002.1F4D5] # CLOSED BOOK
+1F4D6 ; [*1312.0020.0002.1F4D6] # OPEN BOOK
+1F4D7 ; [*1313.0020.0002.1F4D7] # GREEN BOOK
+1F4D8 ; [*1314.0020.0002.1F4D8] # BLUE BOOK
+1F4D9 ; [*1315.0020.0002.1F4D9] # ORANGE BOOK
+1F4DA ; [*1316.0020.0002.1F4DA] # BOOKS
+1F4DB ; [*1317.0020.0002.1F4DB] # NAME BADGE
+1F4DC ; [*1318.0020.0002.1F4DC] # SCROLL
+1F4DD ; [*1319.0020.0002.1F4DD] # MEMO
+1F4DE ; [*131A.0020.0002.1F4DE] # TELEPHONE RECEIVER
+1F4DF ; [*131B.0020.0002.1F4DF] # PAGER
+1F4E0 ; [*131C.0020.0002.1F4E0] # FAX MACHINE
+1F4E1 ; [*131D.0020.0002.1F4E1] # SATELLITE ANTENNA
+1F4E2 ; [*131E.0020.0002.1F4E2] # PUBLIC ADDRESS LOUDSPEAKER
+1F4E3 ; [*131F.0020.0002.1F4E3] # CHEERING MEGAPHONE
+1F4E4 ; [*1320.0020.0002.1F4E4] # OUTBOX TRAY
+1F4E5 ; [*1321.0020.0002.1F4E5] # INBOX TRAY
+1F4E6 ; [*1322.0020.0002.1F4E6] # PACKAGE
+1F4E7 ; [*1323.0020.0002.1F4E7] # E-MAIL SYMBOL
+1F4E8 ; [*1324.0020.0002.1F4E8] # INCOMING ENVELOPE
+1F4E9 ; [*1325.0020.0002.1F4E9] # ENVELOPE WITH DOWNWARDS ARROW ABOVE
+1F4EA ; [*1326.0020.0002.1F4EA] # CLOSED MAILBOX WITH LOWERED FLAG
+1F4EB ; [*1327.0020.0002.1F4EB] # CLOSED MAILBOX WITH RAISED FLAG
+1F4EC ; [*1328.0020.0002.1F4EC] # OPEN MAILBOX WITH RAISED FLAG
+1F4ED ; [*1329.0020.0002.1F4ED] # OPEN MAILBOX WITH LOWERED FLAG
+1F4EE ; [*132A.0020.0002.1F4EE] # POSTBOX
+1F4EF ; [*132B.0020.0002.1F4EF] # POSTAL HORN
+1F4F0 ; [*132C.0020.0002.1F4F0] # NEWSPAPER
+1F4F1 ; [*132D.0020.0002.1F4F1] # MOBILE PHONE
+1F4F2 ; [*132E.0020.0002.1F4F2] # MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT
+1F4F3 ; [*132F.0020.0002.1F4F3] # VIBRATION MODE
+1F4F4 ; [*1330.0020.0002.1F4F4] # MOBILE PHONE OFF
+1F4F5 ; [*1331.0020.0002.1F4F5] # NO MOBILE PHONES
+1F4F6 ; [*1332.0020.0002.1F4F6] # ANTENNA WITH BARS
+1F4F7 ; [*1333.0020.0002.1F4F7] # CAMERA
+1F4F9 ; [*1334.0020.0002.1F4F9] # VIDEO CAMERA
+1F4FA ; [*1335.0020.0002.1F4FA] # TELEVISION
+1F4FB ; [*1336.0020.0002.1F4FB] # RADIO
+1F4FC ; [*1337.0020.0002.1F4FC] # VIDEOCASSETTE
+1F500 ; [*1338.0020.0002.1F500] # TWISTED RIGHTWARDS ARROWS
+1F501 ; [*1339.0020.0002.1F501] # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS
+1F502 ; [*133A.0020.0002.1F502] # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY
+1F503 ; [*133B.0020.0002.1F503] # CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
+1F504 ; [*133C.0020.0002.1F504] # ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
+1F505 ; [*133D.0020.0002.1F505] # LOW BRIGHTNESS SYMBOL
+1F506 ; [*133E.0020.0002.1F506] # HIGH BRIGHTNESS SYMBOL
+1F507 ; [*133F.0020.0002.1F507] # SPEAKER WITH CANCELLATION STROKE
+1F508 ; [*1340.0020.0002.1F508] # SPEAKER
+1F509 ; [*1341.0020.0002.1F509] # SPEAKER WITH ONE SOUND WAVE
+1F50A ; [*1342.0020.0002.1F50A] # SPEAKER WITH THREE SOUND WAVES
+1F50B ; [*1343.0020.0002.1F50B] # BATTERY
+1F50C ; [*1344.0020.0002.1F50C] # ELECTRIC PLUG
+1F50D ; [*1345.0020.0002.1F50D] # LEFT-POINTING MAGNIFYING GLASS
+1F50E ; [*1346.0020.0002.1F50E] # RIGHT-POINTING MAGNIFYING GLASS
+1F50F ; [*1347.0020.0002.1F50F] # LOCK WITH INK PEN
+1F510 ; [*1348.0020.0002.1F510] # CLOSED LOCK WITH KEY
+1F511 ; [*1349.0020.0002.1F511] # KEY
+1F512 ; [*134A.0020.0002.1F512] # LOCK
+1F513 ; [*134B.0020.0002.1F513] # OPEN LOCK
+1F514 ; [*134C.0020.0002.1F514] # BELL
+1F515 ; [*134D.0020.0002.1F515] # BELL WITH CANCELLATION STROKE
+1F516 ; [*134E.0020.0002.1F516] # BOOKMARK
+1F517 ; [*134F.0020.0002.1F517] # LINK SYMBOL
+1F518 ; [*1350.0020.0002.1F518] # RADIO BUTTON
+1F519 ; [*1351.0020.0002.1F519] # BACK WITH LEFTWARDS ARROW ABOVE
+1F51A ; [*1352.0020.0002.1F51A] # END WITH LEFTWARDS ARROW ABOVE
+1F51B ; [*1353.0020.0002.1F51B] # ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE
+1F51C ; [*1354.0020.0002.1F51C] # SOON WITH RIGHTWARDS ARROW ABOVE
+1F51D ; [*1355.0020.0002.1F51D] # TOP WITH UPWARDS ARROW ABOVE
+1F51E ; [*1356.0020.0002.1F51E] # NO ONE UNDER EIGHTEEN SYMBOL
+1F51F ; [*1357.0020.0002.1F51F] # KEYCAP TEN
+1F520 ; [*1358.0020.0002.1F520] # INPUT SYMBOL FOR LATIN CAPITAL LETTERS
+1F521 ; [*1359.0020.0002.1F521] # INPUT SYMBOL FOR LATIN SMALL LETTERS
+1F522 ; [*135A.0020.0002.1F522] # INPUT SYMBOL FOR NUMBERS
+1F523 ; [*135B.0020.0002.1F523] # INPUT SYMBOL FOR SYMBOLS
+1F524 ; [*135C.0020.0002.1F524] # INPUT SYMBOL FOR LATIN LETTERS
+1F525 ; [*135D.0020.0002.1F525] # FIRE
+1F526 ; [*135E.0020.0002.1F526] # ELECTRIC TORCH
+1F527 ; [*135F.0020.0002.1F527] # WRENCH
+1F528 ; [*1360.0020.0002.1F528] # HAMMER
+1F529 ; [*1361.0020.0002.1F529] # NUT AND BOLT
+1F52A ; [*1362.0020.0002.1F52A] # HOCHO
+1F52B ; [*1363.0020.0002.1F52B] # PISTOL
+1F52C ; [*1364.0020.0002.1F52C] # MICROSCOPE
+1F52D ; [*1365.0020.0002.1F52D] # TELESCOPE
+1F52E ; [*1366.0020.0002.1F52E] # CRYSTAL BALL
+1F52F ; [*1367.0020.0002.1F52F] # SIX POINTED STAR WITH MIDDLE DOT
+1F530 ; [*1368.0020.0002.1F530] # JAPANESE SYMBOL FOR BEGINNER
+1F531 ; [*1369.0020.0002.1F531] # TRIDENT EMBLEM
+1F532 ; [*136A.0020.0002.1F532] # BLACK SQUARE BUTTON
+1F533 ; [*136B.0020.0002.1F533] # WHITE SQUARE BUTTON
+1F534 ; [*136C.0020.0002.1F534] # LARGE RED CIRCLE
+1F535 ; [*136D.0020.0002.1F535] # LARGE BLUE CIRCLE
+1F536 ; [*136E.0020.0002.1F536] # LARGE ORANGE DIAMOND
+1F537 ; [*136F.0020.0002.1F537] # LARGE BLUE DIAMOND
+1F538 ; [*1370.0020.0002.1F538] # SMALL ORANGE DIAMOND
+1F539 ; [*1371.0020.0002.1F539] # SMALL BLUE DIAMOND
+1F53A ; [*1372.0020.0002.1F53A] # UP-POINTING RED TRIANGLE
+1F53B ; [*1373.0020.0002.1F53B] # DOWN-POINTING RED TRIANGLE
+1F53C ; [*1374.0020.0002.1F53C] # UP-POINTING SMALL RED TRIANGLE
+1F53D ; [*1375.0020.0002.1F53D] # DOWN-POINTING SMALL RED TRIANGLE
+1F540 ; [*1376.0020.0002.1F540] # CIRCLED CROSS POMMEE
+1F541 ; [*1377.0020.0002.1F541] # CROSS POMMEE WITH HALF-CIRCLE BELOW
+1F542 ; [*1378.0020.0002.1F542] # CROSS POMMEE
+1F543 ; [*1379.0020.0002.1F543] # NOTCHED LEFT SEMICIRCLE WITH THREE DOTS
+1F550 ; [*137A.0020.0002.1F550] # CLOCK FACE ONE OCLOCK
+1F551 ; [*137B.0020.0002.1F551] # CLOCK FACE TWO OCLOCK
+1F552 ; [*137C.0020.0002.1F552] # CLOCK FACE THREE OCLOCK
+1F553 ; [*137D.0020.0002.1F553] # CLOCK FACE FOUR OCLOCK
+1F554 ; [*137E.0020.0002.1F554] # CLOCK FACE FIVE OCLOCK
+1F555 ; [*137F.0020.0002.1F555] # CLOCK FACE SIX OCLOCK
+1F556 ; [*1380.0020.0002.1F556] # CLOCK FACE SEVEN OCLOCK
+1F557 ; [*1381.0020.0002.1F557] # CLOCK FACE EIGHT OCLOCK
+1F558 ; [*1382.0020.0002.1F558] # CLOCK FACE NINE OCLOCK
+1F559 ; [*1383.0020.0002.1F559] # CLOCK FACE TEN OCLOCK
+1F55A ; [*1384.0020.0002.1F55A] # CLOCK FACE ELEVEN OCLOCK
+1F55B ; [*1385.0020.0002.1F55B] # CLOCK FACE TWELVE OCLOCK
+1F55C ; [*1386.0020.0002.1F55C] # CLOCK FACE ONE-THIRTY
+1F55D ; [*1387.0020.0002.1F55D] # CLOCK FACE TWO-THIRTY
+1F55E ; [*1388.0020.0002.1F55E] # CLOCK FACE THREE-THIRTY
+1F55F ; [*1389.0020.0002.1F55F] # CLOCK FACE FOUR-THIRTY
+1F560 ; [*138A.0020.0002.1F560] # CLOCK FACE FIVE-THIRTY
+1F561 ; [*138B.0020.0002.1F561] # CLOCK FACE SIX-THIRTY
+1F562 ; [*138C.0020.0002.1F562] # CLOCK FACE SEVEN-THIRTY
+1F563 ; [*138D.0020.0002.1F563] # CLOCK FACE EIGHT-THIRTY
+1F564 ; [*138E.0020.0002.1F564] # CLOCK FACE NINE-THIRTY
+1F565 ; [*138F.0020.0002.1F565] # CLOCK FACE TEN-THIRTY
+1F566 ; [*1390.0020.0002.1F566] # CLOCK FACE ELEVEN-THIRTY
+1F567 ; [*1391.0020.0002.1F567] # CLOCK FACE TWELVE-THIRTY
+1F5FB ; [*1392.0020.0002.1F5FB] # MOUNT FUJI
+1F5FC ; [*1393.0020.0002.1F5FC] # TOKYO TOWER
+1F5FD ; [*1394.0020.0002.1F5FD] # STATUE OF LIBERTY
+1F5FE ; [*1395.0020.0002.1F5FE] # SILHOUETTE OF JAPAN
+1F5FF ; [*1396.0020.0002.1F5FF] # MOYAI
+1F600 ; [*1397.0020.0002.1F600] # GRINNING FACE
+1F601 ; [*1398.0020.0002.1F601] # GRINNING FACE WITH SMILING EYES
+1F602 ; [*1399.0020.0002.1F602] # FACE WITH TEARS OF JOY
+1F603 ; [*139A.0020.0002.1F603] # SMILING FACE WITH OPEN MOUTH
+1F604 ; [*139B.0020.0002.1F604] # SMILING FACE WITH OPEN MOUTH AND SMILING EYES
+1F605 ; [*139C.0020.0002.1F605] # SMILING FACE WITH OPEN MOUTH AND COLD SWEAT
+1F606 ; [*139D.0020.0002.1F606] # SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES
+1F607 ; [*139E.0020.0002.1F607] # SMILING FACE WITH HALO
+1F608 ; [*139F.0020.0002.1F608] # SMILING FACE WITH HORNS
+1F609 ; [*13A0.0020.0002.1F609] # WINKING FACE
+1F60A ; [*13A1.0020.0002.1F60A] # SMILING FACE WITH SMILING EYES
+1F60B ; [*13A2.0020.0002.1F60B] # FACE SAVOURING DELICIOUS FOOD
+1F60C ; [*13A3.0020.0002.1F60C] # RELIEVED FACE
+1F60D ; [*13A4.0020.0002.1F60D] # SMILING FACE WITH HEART-SHAPED EYES
+1F60E ; [*13A5.0020.0002.1F60E] # SMILING FACE WITH SUNGLASSES
+1F60F ; [*13A6.0020.0002.1F60F] # SMIRKING FACE
+1F610 ; [*13A7.0020.0002.1F610] # NEUTRAL FACE
+1F611 ; [*13A8.0020.0002.1F611] # EXPRESSIONLESS FACE
+1F612 ; [*13A9.0020.0002.1F612] # UNAMUSED FACE
+1F613 ; [*13AA.0020.0002.1F613] # FACE WITH COLD SWEAT
+1F614 ; [*13AB.0020.0002.1F614] # PENSIVE FACE
+1F615 ; [*13AC.0020.0002.1F615] # CONFUSED FACE
+1F616 ; [*13AD.0020.0002.1F616] # CONFOUNDED FACE
+1F617 ; [*13AE.0020.0002.1F617] # KISSING FACE
+1F618 ; [*13AF.0020.0002.1F618] # FACE THROWING A KISS
+1F619 ; [*13B0.0020.0002.1F619] # KISSING FACE WITH SMILING EYES
+1F61A ; [*13B1.0020.0002.1F61A] # KISSING FACE WITH CLOSED EYES
+1F61B ; [*13B2.0020.0002.1F61B] # FACE WITH STUCK-OUT TONGUE
+1F61C ; [*13B3.0020.0002.1F61C] # FACE WITH STUCK-OUT TONGUE AND WINKING EYE
+1F61D ; [*13B4.0020.0002.1F61D] # FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES
+1F61E ; [*13B5.0020.0002.1F61E] # DISAPPOINTED FACE
+1F61F ; [*13B6.0020.0002.1F61F] # WORRIED FACE
+1F620 ; [*13B7.0020.0002.1F620] # ANGRY FACE
+1F621 ; [*13B8.0020.0002.1F621] # POUTING FACE
+1F622 ; [*13B9.0020.0002.1F622] # CRYING FACE
+1F623 ; [*13BA.0020.0002.1F623] # PERSEVERING FACE
+1F624 ; [*13BB.0020.0002.1F624] # FACE WITH LOOK OF TRIUMPH
+1F625 ; [*13BC.0020.0002.1F625] # DISAPPOINTED BUT RELIEVED FACE
+1F626 ; [*13BD.0020.0002.1F626] # FROWNING FACE WITH OPEN MOUTH
+1F627 ; [*13BE.0020.0002.1F627] # ANGUISHED FACE
+1F628 ; [*13BF.0020.0002.1F628] # FEARFUL FACE
+1F629 ; [*13C0.0020.0002.1F629] # WEARY FACE
+1F62A ; [*13C1.0020.0002.1F62A] # SLEEPY FACE
+1F62B ; [*13C2.0020.0002.1F62B] # TIRED FACE
+1F62C ; [*13C3.0020.0002.1F62C] # GRIMACING FACE
+1F62D ; [*13C4.0020.0002.1F62D] # LOUDLY CRYING FACE
+1F62E ; [*13C5.0020.0002.1F62E] # FACE WITH OPEN MOUTH
+1F62F ; [*13C6.0020.0002.1F62F] # HUSHED FACE
+1F630 ; [*13C7.0020.0002.1F630] # FACE WITH OPEN MOUTH AND COLD SWEAT
+1F631 ; [*13C8.0020.0002.1F631] # FACE SCREAMING IN FEAR
+1F632 ; [*13C9.0020.0002.1F632] # ASTONISHED FACE
+1F633 ; [*13CA.0020.0002.1F633] # FLUSHED FACE
+1F634 ; [*13CB.0020.0002.1F634] # SLEEPING FACE
+1F635 ; [*13CC.0020.0002.1F635] # DIZZY FACE
+1F636 ; [*13CD.0020.0002.1F636] # FACE WITHOUT MOUTH
+1F637 ; [*13CE.0020.0002.1F637] # FACE WITH MEDICAL MASK
+1F638 ; [*13CF.0020.0002.1F638] # GRINNING CAT FACE WITH SMILING EYES
+1F639 ; [*13D0.0020.0002.1F639] # CAT FACE WITH TEARS OF JOY
+1F63A ; [*13D1.0020.0002.1F63A] # SMILING CAT FACE WITH OPEN MOUTH
+1F63B ; [*13D2.0020.0002.1F63B] # SMILING CAT FACE WITH HEART-SHAPED EYES
+1F63C ; [*13D3.0020.0002.1F63C] # CAT FACE WITH WRY SMILE
+1F63D ; [*13D4.0020.0002.1F63D] # KISSING CAT FACE WITH CLOSED EYES
+1F63E ; [*13D5.0020.0002.1F63E] # POUTING CAT FACE
+1F63F ; [*13D6.0020.0002.1F63F] # CRYING CAT FACE
+1F640 ; [*13D7.0020.0002.1F640] # WEARY CAT FACE
+1F645 ; [*13D8.0020.0002.1F645] # FACE WITH NO GOOD GESTURE
+1F646 ; [*13D9.0020.0002.1F646] # FACE WITH OK GESTURE
+1F647 ; [*13DA.0020.0002.1F647] # PERSON BOWING DEEPLY
+1F648 ; [*13DB.0020.0002.1F648] # SEE-NO-EVIL MONKEY
+1F649 ; [*13DC.0020.0002.1F649] # HEAR-NO-EVIL MONKEY
+1F64A ; [*13DD.0020.0002.1F64A] # SPEAK-NO-EVIL MONKEY
+1F64B ; [*13DE.0020.0002.1F64B] # HAPPY PERSON RAISING ONE HAND
+1F64C ; [*13DF.0020.0002.1F64C] # PERSON RAISING BOTH HANDS IN CELEBRATION
+1F64D ; [*13E0.0020.0002.1F64D] # PERSON FROWNING
+1F64E ; [*13E1.0020.0002.1F64E] # PERSON WITH POUTING FACE
+1F64F ; [*13E2.0020.0002.1F64F] # PERSON WITH FOLDED HANDS
+1F680 ; [*13E3.0020.0002.1F680] # ROCKET
+1F681 ; [*13E4.0020.0002.1F681] # HELICOPTER
+1F682 ; [*13E5.0020.0002.1F682] # STEAM LOCOMOTIVE
+1F683 ; [*13E6.0020.0002.1F683] # RAILWAY CAR
+1F684 ; [*13E7.0020.0002.1F684] # HIGH-SPEED TRAIN
+1F685 ; [*13E8.0020.0002.1F685] # HIGH-SPEED TRAIN WITH BULLET NOSE
+1F686 ; [*13E9.0020.0002.1F686] # TRAIN
+1F687 ; [*13EA.0020.0002.1F687] # METRO
+1F688 ; [*13EB.0020.0002.1F688] # LIGHT RAIL
+1F689 ; [*13EC.0020.0002.1F689] # STATION
+1F68A ; [*13ED.0020.0002.1F68A] # TRAM
+1F68B ; [*13EE.0020.0002.1F68B] # TRAM CAR
+1F68C ; [*13EF.0020.0002.1F68C] # BUS
+1F68D ; [*13F0.0020.0002.1F68D] # ONCOMING BUS
+1F68E ; [*13F1.0020.0002.1F68E] # TROLLEYBUS
+1F68F ; [*13F2.0020.0002.1F68F] # BUS STOP
+1F690 ; [*13F3.0020.0002.1F690] # MINIBUS
+1F691 ; [*13F4.0020.0002.1F691] # AMBULANCE
+1F692 ; [*13F5.0020.0002.1F692] # FIRE ENGINE
+1F693 ; [*13F6.0020.0002.1F693] # POLICE CAR
+1F694 ; [*13F7.0020.0002.1F694] # ONCOMING POLICE CAR
+1F695 ; [*13F8.0020.0002.1F695] # TAXI
+1F696 ; [*13F9.0020.0002.1F696] # ONCOMING TAXI
+1F697 ; [*13FA.0020.0002.1F697] # AUTOMOBILE
+1F698 ; [*13FB.0020.0002.1F698] # ONCOMING AUTOMOBILE
+1F699 ; [*13FC.0020.0002.1F699] # RECREATIONAL VEHICLE
+1F69A ; [*13FD.0020.0002.1F69A] # DELIVERY TRUCK
+1F69B ; [*13FE.0020.0002.1F69B] # ARTICULATED LORRY
+1F69C ; [*13FF.0020.0002.1F69C] # TRACTOR
+1F69D ; [*1400.0020.0002.1F69D] # MONORAIL
+1F69E ; [*1401.0020.0002.1F69E] # MOUNTAIN RAILWAY
+1F69F ; [*1402.0020.0002.1F69F] # SUSPENSION RAILWAY
+1F6A0 ; [*1403.0020.0002.1F6A0] # MOUNTAIN CABLEWAY
+1F6A1 ; [*1404.0020.0002.1F6A1] # AERIAL TRAMWAY
+1F6A2 ; [*1405.0020.0002.1F6A2] # SHIP
+1F6A3 ; [*1406.0020.0002.1F6A3] # ROWBOAT
+1F6A4 ; [*1407.0020.0002.1F6A4] # SPEEDBOAT
+1F6A5 ; [*1408.0020.0002.1F6A5] # HORIZONTAL TRAFFIC LIGHT
+1F6A6 ; [*1409.0020.0002.1F6A6] # VERTICAL TRAFFIC LIGHT
+1F6A7 ; [*140A.0020.0002.1F6A7] # CONSTRUCTION SIGN
+1F6A8 ; [*140B.0020.0002.1F6A8] # POLICE CARS REVOLVING LIGHT
+1F6A9 ; [*140C.0020.0002.1F6A9] # TRIANGULAR FLAG ON POST
+1F6AA ; [*140D.0020.0002.1F6AA] # DOOR
+1F6AB ; [*140E.0020.0002.1F6AB] # NO ENTRY SIGN
+1F6AC ; [*140F.0020.0002.1F6AC] # SMOKING SYMBOL
+1F6AD ; [*1410.0020.0002.1F6AD] # NO SMOKING SYMBOL
+1F6AE ; [*1411.0020.0002.1F6AE] # PUT LITTER IN ITS PLACE SYMBOL
+1F6AF ; [*1412.0020.0002.1F6AF] # DO NOT LITTER SYMBOL
+1F6B0 ; [*1413.0020.0002.1F6B0] # POTABLE WATER SYMBOL
+1F6B1 ; [*1414.0020.0002.1F6B1] # NON-POTABLE WATER SYMBOL
+1F6B2 ; [*1415.0020.0002.1F6B2] # BICYCLE
+1F6B3 ; [*1416.0020.0002.1F6B3] # NO BICYCLES
+1F6B4 ; [*1417.0020.0002.1F6B4] # BICYCLIST
+1F6B5 ; [*1418.0020.0002.1F6B5] # MOUNTAIN BICYCLIST
+1F6B6 ; [*1419.0020.0002.1F6B6] # PEDESTRIAN
+1F6B7 ; [*141A.0020.0002.1F6B7] # NO PEDESTRIANS
+1F6B8 ; [*141B.0020.0002.1F6B8] # CHILDREN CROSSING
+1F6B9 ; [*141C.0020.0002.1F6B9] # MENS SYMBOL
+1F6BA ; [*141D.0020.0002.1F6BA] # WOMENS SYMBOL
+1F6BB ; [*141E.0020.0002.1F6BB] # RESTROOM
+1F6BC ; [*141F.0020.0002.1F6BC] # BABY SYMBOL
+1F6BD ; [*1420.0020.0002.1F6BD] # TOILET
+1F6BE ; [*1421.0020.0002.1F6BE] # WATER CLOSET
+1F6BF ; [*1422.0020.0002.1F6BF] # SHOWER
+1F6C0 ; [*1423.0020.0002.1F6C0] # BATH
+1F6C1 ; [*1424.0020.0002.1F6C1] # BATHTUB
+1F6C2 ; [*1425.0020.0002.1F6C2] # PASSPORT CONTROL
+1F6C3 ; [*1426.0020.0002.1F6C3] # CUSTOMS
+1F6C4 ; [*1427.0020.0002.1F6C4] # BAGGAGE CLAIM
+1F6C5 ; [*1428.0020.0002.1F6C5] # LEFT LUGGAGE
+1F700 ; [*1429.0020.0002.1F700] # ALCHEMICAL SYMBOL FOR QUINTESSENCE
+1F701 ; [*142A.0020.0002.1F701] # ALCHEMICAL SYMBOL FOR AIR
+1F702 ; [*142B.0020.0002.1F702] # ALCHEMICAL SYMBOL FOR FIRE
+1F703 ; [*142C.0020.0002.1F703] # ALCHEMICAL SYMBOL FOR EARTH
+1F704 ; [*142D.0020.0002.1F704] # ALCHEMICAL SYMBOL FOR WATER
+1F705 ; [*142E.0020.0002.1F705] # ALCHEMICAL SYMBOL FOR AQUAFORTIS
+1F706 ; [*142F.0020.0002.1F706] # ALCHEMICAL SYMBOL FOR AQUA REGIA
+1F707 ; [*1430.0020.0002.1F707] # ALCHEMICAL SYMBOL FOR AQUA REGIA-2
+1F708 ; [*1431.0020.0002.1F708] # ALCHEMICAL SYMBOL FOR AQUA VITAE
+1F709 ; [*1432.0020.0002.1F709] # ALCHEMICAL SYMBOL FOR AQUA VITAE-2
+1F70A ; [*1433.0020.0002.1F70A] # ALCHEMICAL SYMBOL FOR VINEGAR
+1F70B ; [*1434.0020.0002.1F70B] # ALCHEMICAL SYMBOL FOR VINEGAR-2
+1F70C ; [*1435.0020.0002.1F70C] # ALCHEMICAL SYMBOL FOR VINEGAR-3
+1F70D ; [*1436.0020.0002.1F70D] # ALCHEMICAL SYMBOL FOR SULFUR
+1F70E ; [*1437.0020.0002.1F70E] # ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR
+1F70F ; [*1438.0020.0002.1F70F] # ALCHEMICAL SYMBOL FOR BLACK SULFUR
+1F710 ; [*1439.0020.0002.1F710] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE
+1F711 ; [*143A.0020.0002.1F711] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2
+1F712 ; [*143B.0020.0002.1F712] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3
+1F713 ; [*143C.0020.0002.1F713] # ALCHEMICAL SYMBOL FOR CINNABAR
+1F714 ; [*143D.0020.0002.1F714] # ALCHEMICAL SYMBOL FOR SALT
+1F715 ; [*143E.0020.0002.1F715] # ALCHEMICAL SYMBOL FOR NITRE
+1F716 ; [*143F.0020.0002.1F716] # ALCHEMICAL SYMBOL FOR VITRIOL
+1F717 ; [*1440.0020.0002.1F717] # ALCHEMICAL SYMBOL FOR VITRIOL-2
+1F718 ; [*1441.0020.0002.1F718] # ALCHEMICAL SYMBOL FOR ROCK SALT
+1F719 ; [*1442.0020.0002.1F719] # ALCHEMICAL SYMBOL FOR ROCK SALT-2
+1F71A ; [*1443.0020.0002.1F71A] # ALCHEMICAL SYMBOL FOR GOLD
+1F71B ; [*1444.0020.0002.1F71B] # ALCHEMICAL SYMBOL FOR SILVER
+1F71C ; [*1445.0020.0002.1F71C] # ALCHEMICAL SYMBOL FOR IRON ORE
+1F71D ; [*1446.0020.0002.1F71D] # ALCHEMICAL SYMBOL FOR IRON ORE-2
+1F71E ; [*1447.0020.0002.1F71E] # ALCHEMICAL SYMBOL FOR CROCUS OF IRON
+1F71F ; [*1448.0020.0002.1F71F] # ALCHEMICAL SYMBOL FOR REGULUS OF IRON
+1F720 ; [*1449.0020.0002.1F720] # ALCHEMICAL SYMBOL FOR COPPER ORE
+1F721 ; [*144A.0020.0002.1F721] # ALCHEMICAL SYMBOL FOR IRON-COPPER ORE
+1F722 ; [*144B.0020.0002.1F722] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER
+1F723 ; [*144C.0020.0002.1F723] # ALCHEMICAL SYMBOL FOR CROCUS OF COPPER
+1F724 ; [*144D.0020.0002.1F724] # ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2
+1F725 ; [*144E.0020.0002.1F725] # ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE
+1F726 ; [*144F.0020.0002.1F726] # ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE
+1F727 ; [*1450.0020.0002.1F727] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER
+1F728 ; [*1451.0020.0002.1F728] # ALCHEMICAL SYMBOL FOR VERDIGRIS
+1F729 ; [*1452.0020.0002.1F729] # ALCHEMICAL SYMBOL FOR TIN ORE
+1F72A ; [*1453.0020.0002.1F72A] # ALCHEMICAL SYMBOL FOR LEAD ORE
+1F72B ; [*1454.0020.0002.1F72B] # ALCHEMICAL SYMBOL FOR ANTIMONY ORE
+1F72C ; [*1455.0020.0002.1F72C] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY
+1F72D ; [*1456.0020.0002.1F72D] # ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY
+1F72E ; [*1457.0020.0002.1F72E] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY
+1F72F ; [*1458.0020.0002.1F72F] # ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY
+1F730 ; [*1459.0020.0002.1F730] # ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY
+1F731 ; [*145A.0020.0002.1F731] # ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2
+1F732 ; [*145B.0020.0002.1F732] # ALCHEMICAL SYMBOL FOR REGULUS
+1F733 ; [*145C.0020.0002.1F733] # ALCHEMICAL SYMBOL FOR REGULUS-2
+1F734 ; [*145D.0020.0002.1F734] # ALCHEMICAL SYMBOL FOR REGULUS-3
+1F735 ; [*145E.0020.0002.1F735] # ALCHEMICAL SYMBOL FOR REGULUS-4
+1F736 ; [*145F.0020.0002.1F736] # ALCHEMICAL SYMBOL FOR ALKALI
+1F737 ; [*1460.0020.0002.1F737] # ALCHEMICAL SYMBOL FOR ALKALI-2
+1F738 ; [*1461.0020.0002.1F738] # ALCHEMICAL SYMBOL FOR MARCASITE
+1F739 ; [*1462.0020.0002.1F739] # ALCHEMICAL SYMBOL FOR SAL-AMMONIAC
+1F73A ; [*1463.0020.0002.1F73A] # ALCHEMICAL SYMBOL FOR ARSENIC
+1F73B ; [*1464.0020.0002.1F73B] # ALCHEMICAL SYMBOL FOR REALGAR
+1F73C ; [*1465.0020.0002.1F73C] # ALCHEMICAL SYMBOL FOR REALGAR-2
+1F73D ; [*1466.0020.0002.1F73D] # ALCHEMICAL SYMBOL FOR AURIPIGMENT
+1F73E ; [*1467.0020.0002.1F73E] # ALCHEMICAL SYMBOL FOR BISMUTH ORE
+1F73F ; [*1468.0020.0002.1F73F] # ALCHEMICAL SYMBOL FOR TARTAR
+1F740 ; [*1469.0020.0002.1F740] # ALCHEMICAL SYMBOL FOR TARTAR-2
+1F741 ; [*146A.0020.0002.1F741] # ALCHEMICAL SYMBOL FOR QUICK LIME
+1F742 ; [*146B.0020.0002.1F742] # ALCHEMICAL SYMBOL FOR BORAX
+1F743 ; [*146C.0020.0002.1F743] # ALCHEMICAL SYMBOL FOR BORAX-2
+1F744 ; [*146D.0020.0002.1F744] # ALCHEMICAL SYMBOL FOR BORAX-3
+1F745 ; [*146E.0020.0002.1F745] # ALCHEMICAL SYMBOL FOR ALUM
+1F746 ; [*146F.0020.0002.1F746] # ALCHEMICAL SYMBOL FOR OIL
+1F747 ; [*1470.0020.0002.1F747] # ALCHEMICAL SYMBOL FOR SPIRIT
+1F748 ; [*1471.0020.0002.1F748] # ALCHEMICAL SYMBOL FOR TINCTURE
+1F749 ; [*1472.0020.0002.1F749] # ALCHEMICAL SYMBOL FOR GUM
+1F74A ; [*1473.0020.0002.1F74A] # ALCHEMICAL SYMBOL FOR WAX
+1F74B ; [*1474.0020.0002.1F74B] # ALCHEMICAL SYMBOL FOR POWDER
+1F74C ; [*1475.0020.0002.1F74C] # ALCHEMICAL SYMBOL FOR CALX
+1F74D ; [*1476.0020.0002.1F74D] # ALCHEMICAL SYMBOL FOR TUTTY
+1F74E ; [*1477.0020.0002.1F74E] # ALCHEMICAL SYMBOL FOR CAPUT MORTUUM
+1F74F ; [*1478.0020.0002.1F74F] # ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE
+1F750 ; [*1479.0020.0002.1F750] # ALCHEMICAL SYMBOL FOR CADUCEUS
+1F751 ; [*147A.0020.0002.1F751] # ALCHEMICAL SYMBOL FOR TRIDENT
+1F752 ; [*147B.0020.0002.1F752] # ALCHEMICAL SYMBOL FOR STARRED TRIDENT
+1F753 ; [*147C.0020.0002.1F753] # ALCHEMICAL SYMBOL FOR LODESTONE
+1F754 ; [*147D.0020.0002.1F754] # ALCHEMICAL SYMBOL FOR SOAP
+1F755 ; [*147E.0020.0002.1F755] # ALCHEMICAL SYMBOL FOR URINE
+1F756 ; [*147F.0020.0002.1F756] # ALCHEMICAL SYMBOL FOR HORSE DUNG
+1F757 ; [*1480.0020.0002.1F757] # ALCHEMICAL SYMBOL FOR ASHES
+1F758 ; [*1481.0020.0002.1F758] # ALCHEMICAL SYMBOL FOR POT ASHES
+1F759 ; [*1482.0020.0002.1F759] # ALCHEMICAL SYMBOL FOR BRICK
+1F75A ; [*1483.0020.0002.1F75A] # ALCHEMICAL SYMBOL FOR POWDERED BRICK
+1F75B ; [*1484.0020.0002.1F75B] # ALCHEMICAL SYMBOL FOR AMALGAM
+1F75C ; [*1485.0020.0002.1F75C] # ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM
+1F75D ; [*1486.0020.0002.1F75D] # ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2
+1F75E ; [*1487.0020.0002.1F75E] # ALCHEMICAL SYMBOL FOR SUBLIMATION
+1F75F ; [*1488.0020.0002.1F75F] # ALCHEMICAL SYMBOL FOR PRECIPITATE
+1F760 ; [*1489.0020.0002.1F760] # ALCHEMICAL SYMBOL FOR DISTILL
+1F761 ; [*148A.0020.0002.1F761] # ALCHEMICAL SYMBOL FOR DISSOLVE
+1F762 ; [*148B.0020.0002.1F762] # ALCHEMICAL SYMBOL FOR DISSOLVE-2
+1F763 ; [*148C.0020.0002.1F763] # ALCHEMICAL SYMBOL FOR PURIFY
+1F764 ; [*148D.0020.0002.1F764] # ALCHEMICAL SYMBOL FOR PUTREFACTION
+1F765 ; [*148E.0020.0002.1F765] # ALCHEMICAL SYMBOL FOR CRUCIBLE
+1F766 ; [*148F.0020.0002.1F766] # ALCHEMICAL SYMBOL FOR CRUCIBLE-2
+1F767 ; [*1490.0020.0002.1F767] # ALCHEMICAL SYMBOL FOR CRUCIBLE-3
+1F768 ; [*1491.0020.0002.1F768] # ALCHEMICAL SYMBOL FOR CRUCIBLE-4
+1F769 ; [*1492.0020.0002.1F769] # ALCHEMICAL SYMBOL FOR CRUCIBLE-5
+1F76A ; [*1493.0020.0002.1F76A] # ALCHEMICAL SYMBOL FOR ALEMBIC
+1F76B ; [*1494.0020.0002.1F76B] # ALCHEMICAL SYMBOL FOR BATH OF MARY
+1F76C ; [*1495.0020.0002.1F76C] # ALCHEMICAL SYMBOL FOR BATH OF VAPOURS
+1F76D ; [*1496.0020.0002.1F76D] # ALCHEMICAL SYMBOL FOR RETORT
+1F76E ; [*1497.0020.0002.1F76E] # ALCHEMICAL SYMBOL FOR HOUR
+1F76F ; [*1498.0020.0002.1F76F] # ALCHEMICAL SYMBOL FOR NIGHT
+1F770 ; [*1499.0020.0002.1F770] # ALCHEMICAL SYMBOL FOR DAY-NIGHT
+1F771 ; [*149A.0020.0002.1F771] # ALCHEMICAL SYMBOL FOR MONTH
+1F772 ; [*149B.0020.0002.1F772] # ALCHEMICAL SYMBOL FOR HALF DRAM
+1F773 ; [*149C.0020.0002.1F773] # ALCHEMICAL SYMBOL FOR HALF OUNCE
0332 ; [.0000.0021.0002.0332] # COMBINING LOW LINE
0313 ; [.0000.0022.0002.0313] # COMBINING COMMA ABOVE
0343 ; [.0000.0022.0002.0343] # COMBINING GREEK KORONIS
@@ -6131,8 +6157,8 @@ FB1E ; [.0000.0096.0002.FB1E] # HEBREW POINT JUDEO-SPANISH VARIKA
082A ; [.0000.009C.0002.082A] # SAMARITAN VOWEL SIGN I
082B ; [.0000.009D.0002.082B] # SAMARITAN VOWEL SIGN O
082C ; [.0000.009E.0002.082C] # SAMARITAN VOWEL SIGN SUKUN
-0818 ; [.0000.009F.0002.0818] # SAMARITAN MARK DAGESH
-0819 ; [.0000.00A0.0002.0819] # SAMARITAN MARK OCCLUSION
+0818 ; [.0000.009F.0002.0818] # SAMARITAN MARK OCCLUSION
+0819 ; [.0000.00A0.0002.0819] # SAMARITAN MARK DAGESH
082D ; [.0000.00A1.0002.082D] # SAMARITAN MARK NEQUDAA
064B ; [.0000.00A2.0002.064B] # ARABIC FATHATAN
FE71 ; [.0000.00A2.0018.FE71] # ARABIC TATWEEL WITH FATHATAN ABOVE
@@ -6377,17261 +6403,17246 @@ FF9F ; [.0000.0129.0012.FF9F] # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
20E8 ; [.0000.0136.0002.20E8] # COMBINING TRIPLE UNDERDOT
20E9 ; [.0000.0137.0002.20E9] # COMBINING WIDE BRIDGE ABOVE
101FD ; [.0000.0138.0002.101FD] # PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
-02D0 ; [.158E.0020.0002.02D0] # MODIFIER LETTER TRIANGULAR COLON
-02D1 ; [.158F.0020.0002.02D1] # MODIFIER LETTER HALF TRIANGULAR COLON
-0971 ; [.1590.0020.0002.0971] # DEVANAGARI SIGN HIGH SPACING DOT
-0E46 ; [.1591.0020.0002.0E46] # THAI CHARACTER MAIYAMOK
-0EC6 ; [.1592.0020.0002.0EC6] # LAO KO LA
-17D7 ; [.1593.0020.0002.17D7] # KHMER SIGN LEK TOO
-1AA7 ; [.1594.0020.0002.1AA7] # TAI THAM SIGN MAI YAMOK
-A9CF ; [.1595.0020.0002.A9CF] # JAVANESE PANGRANGKEP
-AA70 ; [.1596.0020.0002.AA70] # MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
-AADD ; [.1597.0020.0002.AADD] # TAI VIET SYMBOL SAM
-AAF3 ; [.1598.0020.0002.AAF3] # MEETEI MAYEK SYLLABLE REPETITION MARK
-AAF4 ; [.1599.0020.0002.AAF4] # MEETEI MAYEK WORD REPETITION MARK
-3005 ; [.159A.0020.0002.3005] # IDEOGRAPHIC ITERATION MARK
-303B ; [.159B.0020.0002.303B] # VERTICAL IDEOGRAPHIC ITERATION MARK
-3031 ; [.159C.0020.0002.3031] # VERTICAL KANA REPEAT MARK
-3032 ; [.159C.0020.0002.3031][.0000.0128.0002.3099] # VERTICAL KANA REPEAT WITH VOICED SOUND MARK
-3033 ; [.159D.0020.0002.3033] # VERTICAL KANA REPEAT MARK UPPER HALF
-3034 ; [.159D.0020.0002.3033][.0000.0128.0002.3099] # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
-3035 ; [.159E.0020.0002.3035] # VERTICAL KANA REPEAT MARK LOWER HALF
-309D ; [.159F.0020.0002.309D] # HIRAGANA ITERATION MARK
-309E ; [.159F.0020.0002.309D][.0000.0128.0002.3099] # HIRAGANA VOICED ITERATION MARK
-30FC ; [.15A0.0020.0002.30FC] # KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF70 ; [.15A0.0020.0012.FF70] # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-30FD ; [.15A1.0020.0002.30FD] # KATAKANA ITERATION MARK
-30FE ; [.15A1.0020.0002.30FD][.0000.0128.0002.3099] # KATAKANA VOICED ITERATION MARK
-00A4 ; [.15A2.0020.0002.00A4] # CURRENCY SIGN
-00A2 ; [.15A3.0020.0002.00A2] # CENT SIGN
-FFE0 ; [.15A3.0020.0003.FFE0] # FULLWIDTH CENT SIGN
-0024 ; [.15A4.0020.0002.0024] # DOLLAR SIGN
-FF04 ; [.15A4.0020.0003.FF04] # FULLWIDTH DOLLAR SIGN
-FE69 ; [.15A4.0020.000F.FE69] # SMALL DOLLAR SIGN
-00A3 ; [.15A5.0020.0002.00A3] # POUND SIGN
-FFE1 ; [.15A5.0020.0003.FFE1] # FULLWIDTH POUND SIGN
-00A5 ; [.15A6.0020.0002.00A5] # YEN SIGN
-FFE5 ; [.15A6.0020.0003.FFE5] # FULLWIDTH YEN SIGN
-058F ; [.15A7.0020.0002.058F] # ARMENIAN DRAM SIGN
-060B ; [.15A8.0020.0002.060B] # AFGHANI SIGN
-09F2 ; [.15A9.0020.0002.09F2] # BENGALI RUPEE MARK
-09F3 ; [.15AA.0020.0002.09F3] # BENGALI RUPEE SIGN
-09FB ; [.15AB.0020.0002.09FB] # BENGALI GANDA MARK
-0AF1 ; [.15AC.0020.0002.0AF1] # GUJARATI RUPEE SIGN
-A838 ; [.15AD.0020.0002.A838] # NORTH INDIC RUPEE MARK
-0BF9 ; [.15AE.0020.0002.0BF9] # TAMIL RUPEE SIGN
-0E3F ; [.15AF.0020.0002.0E3F] # THAI CURRENCY SYMBOL BAHT
-17DB ; [.15B0.0020.0002.17DB] # KHMER CURRENCY SYMBOL RIEL
-20A0 ; [.15B1.0020.0002.20A0] # EURO-CURRENCY SIGN
-20A1 ; [.15B2.0020.0002.20A1] # COLON SIGN
-20A2 ; [.15B3.0020.0002.20A2] # CRUZEIRO SIGN
-20A3 ; [.15B4.0020.0002.20A3] # FRENCH FRANC SIGN
-20A4 ; [.15B5.0020.0002.20A4] # LIRA SIGN
-20A5 ; [.15B6.0020.0002.20A5] # MILL SIGN
-20A6 ; [.15B7.0020.0002.20A6] # NAIRA SIGN
-20A7 ; [.15B8.0020.0002.20A7] # PESETA SIGN
-20A9 ; [.15B9.0020.0002.20A9] # WON SIGN
-FFE6 ; [.15B9.0020.0003.FFE6] # FULLWIDTH WON SIGN
-20AA ; [.15BA.0020.0002.20AA] # NEW SHEQEL SIGN
-20AB ; [.15BB.0020.0002.20AB] # DONG SIGN
-20AC ; [.15BC.0020.0002.20AC] # EURO SIGN
-20AD ; [.15BD.0020.0002.20AD] # KIP SIGN
-20AE ; [.15BE.0020.0002.20AE] # TUGRIK SIGN
-20AF ; [.15BF.0020.0002.20AF] # DRACHMA SIGN
-20B0 ; [.15C0.0020.0002.20B0] # GERMAN PENNY SIGN
-20B1 ; [.15C1.0020.0002.20B1] # PESO SIGN
-20B2 ; [.15C2.0020.0002.20B2] # GUARANI SIGN
-20B3 ; [.15C3.0020.0002.20B3] # AUSTRAL SIGN
-20B4 ; [.15C4.0020.0002.20B4] # HRYVNIA SIGN
-20B5 ; [.15C5.0020.0002.20B5] # CEDI SIGN
-20B6 ; [.15C6.0020.0002.20B6] # LIVRE TOURNOIS SIGN
-20B7 ; [.15C7.0020.0002.20B7] # SPESMILO SIGN
-20B8 ; [.15C8.0020.0002.20B8] # TENGE SIGN
-20B9 ; [.15C9.0020.0002.20B9] # INDIAN RUPEE SIGN
-0030 ; [.15CA.0020.0002.0030] # DIGIT ZERO
-FF10 ; [.15CA.0020.0003.FF10] # FULLWIDTH DIGIT ZERO
-1F100 ; [.15CA.0020.0004.1F100][*0273.0020.0004.1F100] # DIGIT ZERO FULL STOP
-1F101 ; [.15CA.0020.0004.1F101][*0221.0020.0004.1F101] # DIGIT ZERO COMMA
-1D7CE ; [.15CA.0020.0005.1D7CE] # MATHEMATICAL BOLD DIGIT ZERO
-1D7D8 ; [.15CA.0020.0005.1D7D8] # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
-1D7E2 ; [.15CA.0020.0005.1D7E2] # MATHEMATICAL SANS-SERIF DIGIT ZERO
-1D7EC ; [.15CA.0020.0005.1D7EC] # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
-1D7F6 ; [.15CA.0020.0005.1D7F6] # MATHEMATICAL MONOSPACE DIGIT ZERO
-24EA ; [.15CA.0020.0006.24EA] # CIRCLED DIGIT ZERO
-24FF ; [.15CA.0020.0006.24FF] # NEGATIVE CIRCLED DIGIT ZERO
-2070 ; [.15CA.0020.0014.2070] # SUPERSCRIPT ZERO
-2080 ; [.15CA.0020.0015.2080] # SUBSCRIPT ZERO
-0660 ; [.15CA.0020.0002.0660][.0000.013F.0002.0660] # ARABIC-INDIC DIGIT ZERO
-06F0 ; [.15CA.0020.0002.06F0][.0000.0140.0002.06F0] # EXTENDED ARABIC-INDIC DIGIT ZERO
-07C0 ; [.15CA.0020.0002.07C0][.0000.0142.0002.07C0] # NKO DIGIT ZERO
-104A0 ; [.15CA.0020.0002.104A0][.0000.0144.0002.104A0] # OSMANYA DIGIT ZERO
-0966 ; [.15CA.0020.0002.0966][.0000.0145.0002.0966] # DEVANAGARI DIGIT ZERO
-09E6 ; [.15CA.0020.0002.09E6][.0000.0146.0002.09E6] # BENGALI DIGIT ZERO
-0A66 ; [.15CA.0020.0002.0A66][.0000.0147.0002.0A66] # GURMUKHI DIGIT ZERO
-0AE6 ; [.15CA.0020.0002.0AE6][.0000.0148.0002.0AE6] # GUJARATI DIGIT ZERO
-0B66 ; [.15CA.0020.0002.0B66][.0000.0149.0002.0B66] # ORIYA DIGIT ZERO
-0BE6 ; [.15CA.0020.0002.0BE6][.0000.014A.0002.0BE6] # TAMIL DIGIT ZERO
-0C66 ; [.15CA.0020.0002.0C66][.0000.014B.0002.0C66] # TELUGU DIGIT ZERO
-0C78 ; [.15CA.0020.0002.0C78][.0000.014B.0002.0C78] # TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR
-0CE6 ; [.15CA.0020.0002.0CE6][.0000.014C.0002.0CE6] # KANNADA DIGIT ZERO
-0D66 ; [.15CA.0020.0002.0D66][.0000.014D.0002.0D66] # MALAYALAM DIGIT ZERO
-ABF0 ; [.15CA.0020.0002.ABF0][.0000.014E.0002.ABF0] # MEETEI MAYEK DIGIT ZERO
-A8D0 ; [.15CA.0020.0002.A8D0][.0000.014F.0002.A8D0] # SAURASHTRA DIGIT ZERO
-1946 ; [.15CA.0020.0002.1946][.0000.0150.0002.1946] # LIMBU DIGIT ZERO
-19D0 ; [.15CA.0020.0002.19D0][.0000.0151.0002.19D0] # NEW TAI LUE DIGIT ZERO
-1A80 ; [.15CA.0020.0002.1A80][.0000.0152.0002.1A80] # TAI THAM HORA DIGIT ZERO
-1A90 ; [.15CA.0020.0002.1A90][.0000.0153.0002.1A90] # TAI THAM THAM DIGIT ZERO
-0E50 ; [.15CA.0020.0002.0E50][.0000.0154.0002.0E50] # THAI DIGIT ZERO
-0ED0 ; [.15CA.0020.0002.0ED0][.0000.0155.0002.0ED0] # LAO DIGIT ZERO
-0F20 ; [.15CA.0020.0002.0F20][.0000.0156.0002.0F20] # TIBETAN DIGIT ZERO
-0F33 ; [.15CA.0020.0004.0F33][.0000.0156.0004.0F33] # TIBETAN DIGIT HALF ZERO
-1C40 ; [.15CA.0020.0002.1C40][.0000.0157.0002.1C40] # LEPCHA DIGIT ZERO
-A900 ; [.15CA.0020.0002.A900][.0000.0158.0002.A900] # KAYAH LI DIGIT ZERO
-1040 ; [.15CA.0020.0002.1040][.0000.0159.0002.1040] # MYANMAR DIGIT ZERO
-1090 ; [.15CA.0020.0002.1090][.0000.015A.0002.1090] # MYANMAR SHAN DIGIT ZERO
-11136 ; [.15CA.0020.0002.11136][.0000.015B.0002.11136] # CHAKMA DIGIT ZERO
-17E0 ; [.15CA.0020.0002.17E0][.0000.015C.0002.17E0] # KHMER DIGIT ZERO
-17F0 ; [.15CA.0020.0002.17F0][.0000.015D.0002.17F0] # KHMER SYMBOL LEK ATTAK SON
-AA50 ; [.15CA.0020.0002.AA50][.0000.015E.0002.AA50] # CHAM DIGIT ZERO
-1B50 ; [.15CA.0020.0002.1B50][.0000.015F.0002.1B50] # BALINESE DIGIT ZERO
-A9D0 ; [.15CA.0020.0002.A9D0][.0000.0160.0002.A9D0] # JAVANESE DIGIT ZERO
-1BB0 ; [.15CA.0020.0002.1BB0][.0000.0161.0002.1BB0] # SUNDANESE DIGIT ZERO
-1810 ; [.15CA.0020.0002.1810][.0000.0162.0002.1810] # MONGOLIAN DIGIT ZERO
-1C50 ; [.15CA.0020.0002.1C50][.0000.0163.0002.1C50] # OL CHIKI DIGIT ZERO
-A620 ; [.15CA.0020.0002.A620][.0000.0164.0002.A620] # VAI DIGIT ZERO
-110F0 ; [.15CA.0020.0002.110F0][.0000.0165.0002.110F0] # SORA SOMPENG DIGIT ZERO
-3007 ; [.15CA.0020.0002.3007][.0000.0166.0002.3007] # IDEOGRAPHIC NUMBER ZERO
-1018A ; [.15CA.0020.0002.1018A][.0000.0168.0002.1018A] # GREEK ZERO SIGN
-111D0 ; [.15CA.0020.0002.111D0][.0000.0172.0002.111D0] # SHARADA DIGIT ZERO
-116C0 ; [.15CA.0020.0002.116C0][.0000.0173.0002.116C0] # TAKRI DIGIT ZERO
-11066 ; [.15CA.0020.0002.11066][.0000.0174.0002.11066] # BRAHMI DIGIT ZERO
-2189 ; [.15CA.0020.001E.2189][*05AC.0020.001E.2189][.15CD.0020.001F.2189] # VULGAR FRACTION ZERO THIRDS
-3358 ; [.15CA.0020.0004.3358][.FB40.0020.0004.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
-0031 ; [.15CB.0020.0002.0031] # DIGIT ONE
-FF11 ; [.15CB.0020.0003.FF11] # FULLWIDTH DIGIT ONE
-2474 ; [*02FB.0020.0004.2474][.15CB.0020.0004.2474][*02FC.0020.001F.2474] # PARENTHESIZED DIGIT ONE
-2488 ; [.15CB.0020.0004.2488][*0273.0020.0004.2488] # DIGIT ONE FULL STOP
-1F102 ; [.15CB.0020.0004.1F102][*0221.0020.0004.1F102] # DIGIT ONE COMMA
-1D7CF ; [.15CB.0020.0005.1D7CF] # MATHEMATICAL BOLD DIGIT ONE
-1D7D9 ; [.15CB.0020.0005.1D7D9] # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
-1D7E3 ; [.15CB.0020.0005.1D7E3] # MATHEMATICAL SANS-SERIF DIGIT ONE
-1D7ED ; [.15CB.0020.0005.1D7ED] # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
-1D7F7 ; [.15CB.0020.0005.1D7F7] # MATHEMATICAL MONOSPACE DIGIT ONE
-2460 ; [.15CB.0020.0006.2460] # CIRCLED DIGIT ONE
-24F5 ; [.15CB.0020.0006.24F5] # DOUBLE CIRCLED DIGIT ONE
-2776 ; [.15CB.0020.0006.2776] # DINGBAT NEGATIVE CIRCLED DIGIT ONE
-2780 ; [.15CB.0020.0006.2780] # DINGBAT CIRCLED SANS-SERIF DIGIT ONE
-278A ; [.15CB.0020.0006.278A] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
-00B9 ; [.15CB.0020.0014.00B9] # SUPERSCRIPT ONE
-2081 ; [.15CB.0020.0015.2081] # SUBSCRIPT ONE
-215F ; [.15CB.0020.001E.215F][*05AC.0020.001E.215F] # FRACTION NUMERATOR ONE
-0661 ; [.15CB.0020.0002.0661][.0000.013F.0002.0661] # ARABIC-INDIC DIGIT ONE
-06F1 ; [.15CB.0020.0002.06F1][.0000.0140.0002.06F1] # EXTENDED ARABIC-INDIC DIGIT ONE
-10E60 ; [.15CB.0020.0002.10E60][.0000.0141.0002.10E60] # RUMI DIGIT ONE
-07C1 ; [.15CB.0020.0002.07C1][.0000.0142.0002.07C1] # NKO DIGIT ONE
-1369 ; [.15CB.0020.0002.1369][.0000.0143.0002.1369] # ETHIOPIC DIGIT ONE
-104A1 ; [.15CB.0020.0002.104A1][.0000.0144.0002.104A1] # OSMANYA DIGIT ONE
-0967 ; [.15CB.0020.0002.0967][.0000.0145.0002.0967] # DEVANAGARI DIGIT ONE
-09E7 ; [.15CB.0020.0002.09E7][.0000.0146.0002.09E7] # BENGALI DIGIT ONE
-0A67 ; [.15CB.0020.0002.0A67][.0000.0147.0002.0A67] # GURMUKHI DIGIT ONE
-0AE7 ; [.15CB.0020.0002.0AE7][.0000.0148.0002.0AE7] # GUJARATI DIGIT ONE
-0B67 ; [.15CB.0020.0002.0B67][.0000.0149.0002.0B67] # ORIYA DIGIT ONE
-0BE7 ; [.15CB.0020.0002.0BE7][.0000.014A.0002.0BE7] # TAMIL DIGIT ONE
-0C67 ; [.15CB.0020.0002.0C67][.0000.014B.0002.0C67] # TELUGU DIGIT ONE
-0C79 ; [.15CB.0020.0002.0C79][.0000.014B.0002.0C79] # TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR
-0C7C ; [.15CB.0020.0002.0C7C][.0000.014B.0002.0C7C] # TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR
-0CE7 ; [.15CB.0020.0002.0CE7][.0000.014C.0002.0CE7] # KANNADA DIGIT ONE
-0D67 ; [.15CB.0020.0002.0D67][.0000.014D.0002.0D67] # MALAYALAM DIGIT ONE
-ABF1 ; [.15CB.0020.0002.ABF1][.0000.014E.0002.ABF1] # MEETEI MAYEK DIGIT ONE
-A8D1 ; [.15CB.0020.0002.A8D1][.0000.014F.0002.A8D1] # SAURASHTRA DIGIT ONE
-1947 ; [.15CB.0020.0002.1947][.0000.0150.0002.1947] # LIMBU DIGIT ONE
-19D1 ; [.15CB.0020.0002.19D1][.0000.0151.0002.19D1] # NEW TAI LUE DIGIT ONE
-19DA ; [.15CB.0020.0002.19DA][.0000.0151.0002.19DA] # NEW TAI LUE THAM DIGIT ONE
-1A81 ; [.15CB.0020.0002.1A81][.0000.0152.0002.1A81] # TAI THAM HORA DIGIT ONE
-1A91 ; [.15CB.0020.0002.1A91][.0000.0153.0002.1A91] # TAI THAM THAM DIGIT ONE
-0E51 ; [.15CB.0020.0002.0E51][.0000.0154.0002.0E51] # THAI DIGIT ONE
-0ED1 ; [.15CB.0020.0002.0ED1][.0000.0155.0002.0ED1] # LAO DIGIT ONE
-0F21 ; [.15CB.0020.0002.0F21][.0000.0156.0002.0F21] # TIBETAN DIGIT ONE
-0F2A ; [.15CB.0020.0004.0F2A][.0000.0156.0004.0F2A] # TIBETAN DIGIT HALF ONE
-1C41 ; [.15CB.0020.0002.1C41][.0000.0157.0002.1C41] # LEPCHA DIGIT ONE
-A901 ; [.15CB.0020.0002.A901][.0000.0158.0002.A901] # KAYAH LI DIGIT ONE
-1041 ; [.15CB.0020.0002.1041][.0000.0159.0002.1041] # MYANMAR DIGIT ONE
-1091 ; [.15CB.0020.0002.1091][.0000.015A.0002.1091] # MYANMAR SHAN DIGIT ONE
-11137 ; [.15CB.0020.0002.11137][.0000.015B.0002.11137] # CHAKMA DIGIT ONE
-17E1 ; [.15CB.0020.0002.17E1][.0000.015C.0002.17E1] # KHMER DIGIT ONE
-17F1 ; [.15CB.0020.0002.17F1][.0000.015D.0002.17F1] # KHMER SYMBOL LEK ATTAK MUOY
-AA51 ; [.15CB.0020.0002.AA51][.0000.015E.0002.AA51] # CHAM DIGIT ONE
-1B51 ; [.15CB.0020.0002.1B51][.0000.015F.0002.1B51] # BALINESE DIGIT ONE
-A9D1 ; [.15CB.0020.0002.A9D1][.0000.0160.0002.A9D1] # JAVANESE DIGIT ONE
-1BB1 ; [.15CB.0020.0002.1BB1][.0000.0161.0002.1BB1] # SUNDANESE DIGIT ONE
-1811 ; [.15CB.0020.0002.1811][.0000.0162.0002.1811] # MONGOLIAN DIGIT ONE
-1C51 ; [.15CB.0020.0002.1C51][.0000.0163.0002.1C51] # OL CHIKI DIGIT ONE
-A621 ; [.15CB.0020.0002.A621][.0000.0164.0002.A621] # VAI DIGIT ONE
-110F1 ; [.15CB.0020.0002.110F1][.0000.0165.0002.110F1] # SORA SOMPENG DIGIT ONE
-3021 ; [.15CB.0020.0002.3021][.0000.0166.0002.3021] # HANGZHOU NUMERAL ONE
-10107 ; [.15CB.0020.0002.10107][.0000.0167.0002.10107] # AEGEAN NUMBER ONE
-10142 ; [.15CB.0020.0002.10142][.0000.0168.0002.10142] # GREEK ACROPHONIC ATTIC ONE DRACHMA
-10158 ; [.15CB.0020.0002.10158][.0000.0168.0002.10158] # GREEK ACROPHONIC HERAEUM ONE PLETHRON
-10159 ; [.15CB.0020.0002.10159][.0000.0168.0002.10159] # GREEK ACROPHONIC THESPIAN ONE
-1015A ; [.15CB.0020.0002.1015A][.0000.0168.0002.1015A] # GREEK ACROPHONIC HERMIONIAN ONE
-10320 ; [.15CB.0020.0002.10320][.0000.016A.0002.10320] # OLD ITALIC NUMERAL ONE
-103D1 ; [.15CB.0020.0002.103D1][.0000.016B.0002.103D1] # OLD PERSIAN NUMBER ONE
-12415 ; [.15CB.0020.0002.12415][.0000.016C.0002.12415] # CUNEIFORM NUMERIC SIGN ONE GESH2
-1241E ; [.15CB.0020.0002.1241E][.0000.016C.0002.1241E] # CUNEIFORM NUMERIC SIGN ONE GESHU
-1242C ; [.15CB.0020.0002.1242C][.0000.016C.0002.1242C] # CUNEIFORM NUMERIC SIGN ONE SHARU
-12434 ; [.15CB.0020.0002.12434][.0000.016C.0002.12434] # CUNEIFORM NUMERIC SIGN ONE BURU
-1244F ; [.15CB.0020.0002.1244F][.0000.016C.0002.1244F] # CUNEIFORM NUMERIC SIGN ONE BAN2
-12458 ; [.15CB.0020.0002.12458][.0000.016C.0002.12458] # CUNEIFORM NUMERIC SIGN ONE ESHE3
-10A7D ; [.15CB.0020.0002.10A7D][.0000.016D.0002.10A7D] # OLD SOUTH ARABIAN NUMBER ONE
-10916 ; [.15CB.0020.0002.10916][.0000.016E.0002.10916] # PHOENICIAN NUMBER ONE
-10858 ; [.15CB.0020.0002.10858][.0000.016F.0002.10858] # IMPERIAL ARAMAIC NUMBER ONE
-10B58 ; [.15CB.0020.0002.10B58][.0000.0170.0002.10B58] # INSCRIPTIONAL PARTHIAN NUMBER ONE
-10B78 ; [.15CB.0020.0002.10B78][.0000.0171.0002.10B78] # INSCRIPTIONAL PAHLAVI NUMBER ONE
-111D1 ; [.15CB.0020.0002.111D1][.0000.0172.0002.111D1] # SHARADA DIGIT ONE
-116C1 ; [.15CB.0020.0002.116C1][.0000.0173.0002.116C1] # TAKRI DIGIT ONE
-11067 ; [.15CB.0020.0002.11067][.0000.0174.0002.11067] # BRAHMI DIGIT ONE
-11052 ; [.15CB.0020.0002.11052][.0000.0175.0002.11052] # BRAHMI NUMBER ONE
-10A40 ; [.15CB.0020.0002.10A40][.0000.0176.0002.10A40] # KHAROSHTHI DIGIT ONE
-1D360 ; [.15CB.0020.0002.1D360][.0000.0177.0002.1D360] # COUNTING ROD UNIT DIGIT ONE
-2491 ; [.15CB.0020.0004.2491][.15CA.0020.0004.2491][*0273.0020.001F.2491] # NUMBER TEN FULL STOP
-247D ; [*02FB.0020.0004.247D][.15CB.0020.0004.247D][.15CA.0020.001F.247D][*02FC.0020.001F.247D] # PARENTHESIZED NUMBER TEN
-2469 ; [.15CB.0020.0006.2469][.15CA.0020.0006.2469] # CIRCLED NUMBER TEN
-24FE ; [.15CB.0020.0006.24FE][.15CA.0020.0006.24FE] # DOUBLE CIRCLED NUMBER TEN
-277F ; [.15CB.0020.0006.277F][.15CA.0020.0006.277F] # DINGBAT NEGATIVE CIRCLED NUMBER TEN
-2789 ; [.15CB.0020.0006.2789][.15CA.0020.0006.2789] # DINGBAT CIRCLED SANS-SERIF NUMBER TEN
-2793 ; [.15CB.0020.0006.2793][.15CA.0020.0006.2793] # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
-3248 ; [.15CB.0020.0006.3248][.15CA.0020.0006.3248] # CIRCLED NUMBER TEN ON BLACK SQUARE
-33E9 ; [.15CB.0020.0004.33E9][.15CA.0020.0004.33E9][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
-32C9 ; [.15CB.0020.0004.32C9][.15CA.0020.0004.32C9][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
-3362 ; [.15CB.0020.0004.3362][.15CA.0020.0004.3362][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
-2492 ; [.15CB.0020.0004.2492][.15CB.0020.0004.2492][*0273.0020.001F.2492] # NUMBER ELEVEN FULL STOP
-247E ; [*02FB.0020.0004.247E][.15CB.0020.0004.247E][.15CB.0020.001F.247E][*02FC.0020.001F.247E] # PARENTHESIZED NUMBER ELEVEN
-246A ; [.15CB.0020.0006.246A][.15CB.0020.0006.246A] # CIRCLED NUMBER ELEVEN
-24EB ; [.15CB.0020.0006.24EB][.15CB.0020.0006.24EB] # NEGATIVE CIRCLED NUMBER ELEVEN
-2152 ; [.15CB.0020.001E.2152][*05AC.0020.001E.2152][.15CB.0020.001F.2152][.15CA.0020.001F.2152] # VULGAR FRACTION ONE TENTH
-33EA ; [.15CB.0020.0004.33EA][.15CB.0020.0004.33EA][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
-32CA ; [.15CB.0020.0004.32CA][.15CB.0020.0004.32CA][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
-3363 ; [.15CB.0020.0004.3363][.15CB.0020.0004.3363][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
-2493 ; [.15CB.0020.0004.2493][.15CC.0020.0004.2493][*0273.0020.001F.2493] # NUMBER TWELVE FULL STOP
-247F ; [*02FB.0020.0004.247F][.15CB.0020.0004.247F][.15CC.0020.001F.247F][*02FC.0020.001F.247F] # PARENTHESIZED NUMBER TWELVE
-246B ; [.15CB.0020.0006.246B][.15CC.0020.0006.246B] # CIRCLED NUMBER TWELVE
-24EC ; [.15CB.0020.0006.24EC][.15CC.0020.0006.24EC] # NEGATIVE CIRCLED NUMBER TWELVE
-00BD ; [.15CB.0020.001E.00BD][*05AC.0020.001E.00BD][.15CC.0020.001F.00BD] # VULGAR FRACTION ONE HALF
-33EB ; [.15CB.0020.0004.33EB][.15CC.0020.0004.33EB][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
-32CB ; [.15CB.0020.0004.32CB][.15CC.0020.0004.32CB][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
-3364 ; [.15CB.0020.0004.3364][.15CC.0020.0004.3364][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
-2494 ; [.15CB.0020.0004.2494][.15CD.0020.0004.2494][*0273.0020.001F.2494] # NUMBER THIRTEEN FULL STOP
-2480 ; [*02FB.0020.0004.2480][.15CB.0020.0004.2480][.15CD.0020.001F.2480][*02FC.0020.001F.2480] # PARENTHESIZED NUMBER THIRTEEN
-246C ; [.15CB.0020.0006.246C][.15CD.0020.0006.246C] # CIRCLED NUMBER THIRTEEN
-24ED ; [.15CB.0020.0006.24ED][.15CD.0020.0006.24ED] # NEGATIVE CIRCLED NUMBER THIRTEEN
-2153 ; [.15CB.0020.001E.2153][*05AC.0020.001E.2153][.15CD.0020.001F.2153] # VULGAR FRACTION ONE THIRD
-33EC ; [.15CB.0020.0004.33EC][.15CD.0020.0004.33EC][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
-3365 ; [.15CB.0020.0004.3365][.15CD.0020.0004.3365][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
-2495 ; [.15CB.0020.0004.2495][.15CE.0020.0004.2495][*0273.0020.001F.2495] # NUMBER FOURTEEN FULL STOP
-2481 ; [*02FB.0020.0004.2481][.15CB.0020.0004.2481][.15CE.0020.001F.2481][*02FC.0020.001F.2481] # PARENTHESIZED NUMBER FOURTEEN
-246D ; [.15CB.0020.0006.246D][.15CE.0020.0006.246D] # CIRCLED NUMBER FOURTEEN
-24EE ; [.15CB.0020.0006.24EE][.15CE.0020.0006.24EE] # NEGATIVE CIRCLED NUMBER FOURTEEN
-00BC ; [.15CB.0020.001E.00BC][*05AC.0020.001E.00BC][.15CE.0020.001F.00BC] # VULGAR FRACTION ONE QUARTER
-33ED ; [.15CB.0020.0004.33ED][.15CE.0020.0004.33ED][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
-3366 ; [.15CB.0020.0004.3366][.15CE.0020.0004.3366][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
-2496 ; [.15CB.0020.0004.2496][.15CF.0020.0004.2496][*0273.0020.001F.2496] # NUMBER FIFTEEN FULL STOP
-2482 ; [*02FB.0020.0004.2482][.15CB.0020.0004.2482][.15CF.0020.001F.2482][*02FC.0020.001F.2482] # PARENTHESIZED NUMBER FIFTEEN
-246E ; [.15CB.0020.0006.246E][.15CF.0020.0006.246E] # CIRCLED NUMBER FIFTEEN
-24EF ; [.15CB.0020.0006.24EF][.15CF.0020.0006.24EF] # NEGATIVE CIRCLED NUMBER FIFTEEN
-2155 ; [.15CB.0020.001E.2155][*05AC.0020.001E.2155][.15CF.0020.001F.2155] # VULGAR FRACTION ONE FIFTH
-33EE ; [.15CB.0020.0004.33EE][.15CF.0020.0004.33EE][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
-3367 ; [.15CB.0020.0004.3367][.15CF.0020.0004.3367][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
-2497 ; [.15CB.0020.0004.2497][.15D0.0020.0004.2497][*0273.0020.001F.2497] # NUMBER SIXTEEN FULL STOP
-2483 ; [*02FB.0020.0004.2483][.15CB.0020.0004.2483][.15D0.0020.001F.2483][*02FC.0020.001F.2483] # PARENTHESIZED NUMBER SIXTEEN
-246F ; [.15CB.0020.0006.246F][.15D0.0020.0006.246F] # CIRCLED NUMBER SIXTEEN
-24F0 ; [.15CB.0020.0006.24F0][.15D0.0020.0006.24F0] # NEGATIVE CIRCLED NUMBER SIXTEEN
-2159 ; [.15CB.0020.001E.2159][*05AC.0020.001E.2159][.15D0.0020.001F.2159] # VULGAR FRACTION ONE SIXTH
-33EF ; [.15CB.0020.0004.33EF][.15D0.0020.0004.33EF][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
-3368 ; [.15CB.0020.0004.3368][.15D0.0020.0004.3368][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
-2498 ; [.15CB.0020.0004.2498][.15D1.0020.0004.2498][*0273.0020.001F.2498] # NUMBER SEVENTEEN FULL STOP
-2484 ; [*02FB.0020.0004.2484][.15CB.0020.0004.2484][.15D1.0020.001F.2484][*02FC.0020.001F.2484] # PARENTHESIZED NUMBER SEVENTEEN
-2470 ; [.15CB.0020.0006.2470][.15D1.0020.0006.2470] # CIRCLED NUMBER SEVENTEEN
-24F1 ; [.15CB.0020.0006.24F1][.15D1.0020.0006.24F1] # NEGATIVE CIRCLED NUMBER SEVENTEEN
-2150 ; [.15CB.0020.001E.2150][*05AC.0020.001E.2150][.15D1.0020.001F.2150] # VULGAR FRACTION ONE SEVENTH
-33F0 ; [.15CB.0020.0004.33F0][.15D1.0020.0004.33F0][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
-3369 ; [.15CB.0020.0004.3369][.15D1.0020.0004.3369][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
-2499 ; [.15CB.0020.0004.2499][.15D2.0020.0004.2499][*0273.0020.001F.2499] # NUMBER EIGHTEEN FULL STOP
-2485 ; [*02FB.0020.0004.2485][.15CB.0020.0004.2485][.15D2.0020.001F.2485][*02FC.0020.001F.2485] # PARENTHESIZED NUMBER EIGHTEEN
-2471 ; [.15CB.0020.0006.2471][.15D2.0020.0006.2471] # CIRCLED NUMBER EIGHTEEN
-24F2 ; [.15CB.0020.0006.24F2][.15D2.0020.0006.24F2] # NEGATIVE CIRCLED NUMBER EIGHTEEN
-215B ; [.15CB.0020.001E.215B][*05AC.0020.001E.215B][.15D2.0020.001F.215B] # VULGAR FRACTION ONE EIGHTH
-33F1 ; [.15CB.0020.0004.33F1][.15D2.0020.0004.33F1][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
-336A ; [.15CB.0020.0004.336A][.15D2.0020.0004.336A][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
-249A ; [.15CB.0020.0004.249A][.15D3.0020.0004.249A][*0273.0020.001F.249A] # NUMBER NINETEEN FULL STOP
-2486 ; [*02FB.0020.0004.2486][.15CB.0020.0004.2486][.15D3.0020.001F.2486][*02FC.0020.001F.2486] # PARENTHESIZED NUMBER NINETEEN
-2472 ; [.15CB.0020.0006.2472][.15D3.0020.0006.2472] # CIRCLED NUMBER NINETEEN
-24F3 ; [.15CB.0020.0006.24F3][.15D3.0020.0006.24F3] # NEGATIVE CIRCLED NUMBER NINETEEN
-2151 ; [.15CB.0020.001E.2151][*05AC.0020.001E.2151][.15D3.0020.001F.2151] # VULGAR FRACTION ONE NINTH
-33F2 ; [.15CB.0020.0004.33F2][.15D3.0020.0004.33F2][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
-336B ; [.15CB.0020.0004.336B][.15D3.0020.0004.336B][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
-33E0 ; [.15CB.0020.0004.33E0][.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
-32C0 ; [.15CB.0020.0004.32C0][.FB40.0020.0004.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
-3359 ; [.15CB.0020.0004.3359][.FB40.0020.0004.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
-0032 ; [.15CC.0020.0002.0032] # DIGIT TWO
-FF12 ; [.15CC.0020.0003.FF12] # FULLWIDTH DIGIT TWO
-2475 ; [*02FB.0020.0004.2475][.15CC.0020.0004.2475][*02FC.0020.001F.2475] # PARENTHESIZED DIGIT TWO
-2489 ; [.15CC.0020.0004.2489][*0273.0020.0004.2489] # DIGIT TWO FULL STOP
-1F103 ; [.15CC.0020.0004.1F103][*0221.0020.0004.1F103] # DIGIT TWO COMMA
-1D7D0 ; [.15CC.0020.0005.1D7D0] # MATHEMATICAL BOLD DIGIT TWO
-1D7DA ; [.15CC.0020.0005.1D7DA] # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
-1D7E4 ; [.15CC.0020.0005.1D7E4] # MATHEMATICAL SANS-SERIF DIGIT TWO
-1D7EE ; [.15CC.0020.0005.1D7EE] # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
-1D7F8 ; [.15CC.0020.0005.1D7F8] # MATHEMATICAL MONOSPACE DIGIT TWO
-2461 ; [.15CC.0020.0006.2461] # CIRCLED DIGIT TWO
-24F6 ; [.15CC.0020.0006.24F6] # DOUBLE CIRCLED DIGIT TWO
-2777 ; [.15CC.0020.0006.2777] # DINGBAT NEGATIVE CIRCLED DIGIT TWO
-2781 ; [.15CC.0020.0006.2781] # DINGBAT CIRCLED SANS-SERIF DIGIT TWO
-278B ; [.15CC.0020.0006.278B] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
-00B2 ; [.15CC.0020.0014.00B2] # SUPERSCRIPT TWO
-2082 ; [.15CC.0020.0015.2082] # SUBSCRIPT TWO
-0662 ; [.15CC.0020.0002.0662][.0000.013F.0002.0662] # ARABIC-INDIC DIGIT TWO
-06F2 ; [.15CC.0020.0002.06F2][.0000.0140.0002.06F2] # EXTENDED ARABIC-INDIC DIGIT TWO
-10E61 ; [.15CC.0020.0002.10E61][.0000.0141.0002.10E61] # RUMI DIGIT TWO
-07C2 ; [.15CC.0020.0002.07C2][.0000.0142.0002.07C2] # NKO DIGIT TWO
-136A ; [.15CC.0020.0002.136A][.0000.0143.0002.136A] # ETHIOPIC DIGIT TWO
-104A2 ; [.15CC.0020.0002.104A2][.0000.0144.0002.104A2] # OSMANYA DIGIT TWO
-0968 ; [.15CC.0020.0002.0968][.0000.0145.0002.0968] # DEVANAGARI DIGIT TWO
-09E8 ; [.15CC.0020.0002.09E8][.0000.0146.0002.09E8] # BENGALI DIGIT TWO
-0A68 ; [.15CC.0020.0002.0A68][.0000.0147.0002.0A68] # GURMUKHI DIGIT TWO
-0AE8 ; [.15CC.0020.0002.0AE8][.0000.0148.0002.0AE8] # GUJARATI DIGIT TWO
-0B68 ; [.15CC.0020.0002.0B68][.0000.0149.0002.0B68] # ORIYA DIGIT TWO
-0BE8 ; [.15CC.0020.0002.0BE8][.0000.014A.0002.0BE8] # TAMIL DIGIT TWO
-0C68 ; [.15CC.0020.0002.0C68][.0000.014B.0002.0C68] # TELUGU DIGIT TWO
-0C7A ; [.15CC.0020.0002.0C7A][.0000.014B.0002.0C7A] # TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR
-0C7D ; [.15CC.0020.0002.0C7D][.0000.014B.0002.0C7D] # TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR
-0CE8 ; [.15CC.0020.0002.0CE8][.0000.014C.0002.0CE8] # KANNADA DIGIT TWO
-0D68 ; [.15CC.0020.0002.0D68][.0000.014D.0002.0D68] # MALAYALAM DIGIT TWO
-ABF2 ; [.15CC.0020.0002.ABF2][.0000.014E.0002.ABF2] # MEETEI MAYEK DIGIT TWO
-A8D2 ; [.15CC.0020.0002.A8D2][.0000.014F.0002.A8D2] # SAURASHTRA DIGIT TWO
-1948 ; [.15CC.0020.0002.1948][.0000.0150.0002.1948] # LIMBU DIGIT TWO
-19D2 ; [.15CC.0020.0002.19D2][.0000.0151.0002.19D2] # NEW TAI LUE DIGIT TWO
-1A82 ; [.15CC.0020.0002.1A82][.0000.0152.0002.1A82] # TAI THAM HORA DIGIT TWO
-1A92 ; [.15CC.0020.0002.1A92][.0000.0153.0002.1A92] # TAI THAM THAM DIGIT TWO
-0E52 ; [.15CC.0020.0002.0E52][.0000.0154.0002.0E52] # THAI DIGIT TWO
-0ED2 ; [.15CC.0020.0002.0ED2][.0000.0155.0002.0ED2] # LAO DIGIT TWO
-0F22 ; [.15CC.0020.0002.0F22][.0000.0156.0002.0F22] # TIBETAN DIGIT TWO
-0F2B ; [.15CC.0020.0004.0F2B][.0000.0156.0004.0F2B] # TIBETAN DIGIT HALF TWO
-1C42 ; [.15CC.0020.0002.1C42][.0000.0157.0002.1C42] # LEPCHA DIGIT TWO
-A902 ; [.15CC.0020.0002.A902][.0000.0158.0002.A902] # KAYAH LI DIGIT TWO
-1042 ; [.15CC.0020.0002.1042][.0000.0159.0002.1042] # MYANMAR DIGIT TWO
-1092 ; [.15CC.0020.0002.1092][.0000.015A.0002.1092] # MYANMAR SHAN DIGIT TWO
-11138 ; [.15CC.0020.0002.11138][.0000.015B.0002.11138] # CHAKMA DIGIT TWO
-17E2 ; [.15CC.0020.0002.17E2][.0000.015C.0002.17E2] # KHMER DIGIT TWO
-17F2 ; [.15CC.0020.0002.17F2][.0000.015D.0002.17F2] # KHMER SYMBOL LEK ATTAK PII
-AA52 ; [.15CC.0020.0002.AA52][.0000.015E.0002.AA52] # CHAM DIGIT TWO
-1B52 ; [.15CC.0020.0002.1B52][.0000.015F.0002.1B52] # BALINESE DIGIT TWO
-A9D2 ; [.15CC.0020.0002.A9D2][.0000.0160.0002.A9D2] # JAVANESE DIGIT TWO
-1BB2 ; [.15CC.0020.0002.1BB2][.0000.0161.0002.1BB2] # SUNDANESE DIGIT TWO
-1812 ; [.15CC.0020.0002.1812][.0000.0162.0002.1812] # MONGOLIAN DIGIT TWO
-1C52 ; [.15CC.0020.0002.1C52][.0000.0163.0002.1C52] # OL CHIKI DIGIT TWO
-A622 ; [.15CC.0020.0002.A622][.0000.0164.0002.A622] # VAI DIGIT TWO
-110F2 ; [.15CC.0020.0002.110F2][.0000.0165.0002.110F2] # SORA SOMPENG DIGIT TWO
-3022 ; [.15CC.0020.0002.3022][.0000.0166.0002.3022] # HANGZHOU NUMERAL TWO
-10108 ; [.15CC.0020.0002.10108][.0000.0167.0002.10108] # AEGEAN NUMBER TWO
-1015B ; [.15CC.0020.0002.1015B][.0000.0168.0002.1015B] # GREEK ACROPHONIC EPIDAUREAN TWO
-1015C ; [.15CC.0020.0002.1015C][.0000.0168.0002.1015C] # GREEK ACROPHONIC THESPIAN TWO
-1015D ; [.15CC.0020.0002.1015D][.0000.0168.0002.1015D] # GREEK ACROPHONIC CYRENAIC TWO DRACHMAS
-1015E ; [.15CC.0020.0002.1015E][.0000.0168.0002.1015E] # GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS
-103D2 ; [.15CC.0020.0002.103D2][.0000.016B.0002.103D2] # OLD PERSIAN NUMBER TWO
-12400 ; [.15CC.0020.0002.12400][.0000.016C.0002.12400] # CUNEIFORM NUMERIC SIGN TWO ASH
-12416 ; [.15CC.0020.0002.12416][.0000.016C.0002.12416] # CUNEIFORM NUMERIC SIGN TWO GESH2
-1241F ; [.15CC.0020.0002.1241F][.0000.016C.0002.1241F] # CUNEIFORM NUMERIC SIGN TWO GESHU
-12423 ; [.15CC.0020.0002.12423][.0000.016C.0002.12423] # CUNEIFORM NUMERIC SIGN TWO SHAR2
-1242D ; [.15CC.0020.0002.1242D][.0000.016C.0002.1242D] # CUNEIFORM NUMERIC SIGN TWO SHARU
-12435 ; [.15CC.0020.0002.12435][.0000.016C.0002.12435] # CUNEIFORM NUMERIC SIGN TWO BURU
-1244A ; [.15CC.0020.0002.1244A][.0000.016C.0002.1244A] # CUNEIFORM NUMERIC SIGN TWO ASH TENU
-12450 ; [.15CC.0020.0002.12450][.0000.016C.0002.12450] # CUNEIFORM NUMERIC SIGN TWO BAN2
-12459 ; [.15CC.0020.0002.12459][.0000.016C.0002.12459] # CUNEIFORM NUMERIC SIGN TWO ESHE3
-1091A ; [.15CC.0020.0002.1091A][.0000.016E.0002.1091A] # PHOENICIAN NUMBER TWO
-10859 ; [.15CC.0020.0002.10859][.0000.016F.0002.10859] # IMPERIAL ARAMAIC NUMBER TWO
-10B59 ; [.15CC.0020.0002.10B59][.0000.0170.0002.10B59] # INSCRIPTIONAL PARTHIAN NUMBER TWO
-10B79 ; [.15CC.0020.0002.10B79][.0000.0171.0002.10B79] # INSCRIPTIONAL PAHLAVI NUMBER TWO
-111D2 ; [.15CC.0020.0002.111D2][.0000.0172.0002.111D2] # SHARADA DIGIT TWO
-116C2 ; [.15CC.0020.0002.116C2][.0000.0173.0002.116C2] # TAKRI DIGIT TWO
-11068 ; [.15CC.0020.0002.11068][.0000.0174.0002.11068] # BRAHMI DIGIT TWO
-11053 ; [.15CC.0020.0002.11053][.0000.0175.0002.11053] # BRAHMI NUMBER TWO
-10A41 ; [.15CC.0020.0002.10A41][.0000.0176.0002.10A41] # KHAROSHTHI DIGIT TWO
-1D361 ; [.15CC.0020.0002.1D361][.0000.0177.0002.1D361] # COUNTING ROD UNIT DIGIT TWO
-249B ; [.15CC.0020.0004.249B][.15CA.0020.0004.249B][*0273.0020.001F.249B] # NUMBER TWENTY FULL STOP
-2487 ; [*02FB.0020.0004.2487][.15CC.0020.0004.2487][.15CA.0020.001F.2487][*02FC.0020.001F.2487] # PARENTHESIZED NUMBER TWENTY
-2473 ; [.15CC.0020.0006.2473][.15CA.0020.0006.2473] # CIRCLED NUMBER TWENTY
-24F4 ; [.15CC.0020.0006.24F4][.15CA.0020.0006.24F4] # NEGATIVE CIRCLED NUMBER TWENTY
-3249 ; [.15CC.0020.0006.3249][.15CA.0020.0006.3249] # CIRCLED NUMBER TWENTY ON BLACK SQUARE
-33F3 ; [.15CC.0020.0004.33F3][.15CA.0020.0004.33F3][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
-336C ; [.15CC.0020.0004.336C][.15CA.0020.0004.336C][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
-3251 ; [.15CC.0020.0006.3251][.15CB.0020.0006.3251] # CIRCLED NUMBER TWENTY ONE
-33F4 ; [.15CC.0020.0004.33F4][.15CB.0020.0004.33F4][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
-336D ; [.15CC.0020.0004.336D][.15CB.0020.0004.336D][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
-3252 ; [.15CC.0020.0006.3252][.15CC.0020.0006.3252] # CIRCLED NUMBER TWENTY TWO
-33F5 ; [.15CC.0020.0004.33F5][.15CC.0020.0004.33F5][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
-336E ; [.15CC.0020.0004.336E][.15CC.0020.0004.336E][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
-3253 ; [.15CC.0020.0006.3253][.15CD.0020.0006.3253] # CIRCLED NUMBER TWENTY THREE
-2154 ; [.15CC.0020.001E.2154][*05AC.0020.001E.2154][.15CD.0020.001F.2154] # VULGAR FRACTION TWO THIRDS
-33F6 ; [.15CC.0020.0004.33F6][.15CD.0020.0004.33F6][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
-336F ; [.15CC.0020.0004.336F][.15CD.0020.0004.336F][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
-3254 ; [.15CC.0020.0006.3254][.15CE.0020.0006.3254] # CIRCLED NUMBER TWENTY FOUR
-33F7 ; [.15CC.0020.0004.33F7][.15CE.0020.0004.33F7][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
-3370 ; [.15CC.0020.0004.3370][.15CE.0020.0004.3370][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
-3255 ; [.15CC.0020.0006.3255][.15CF.0020.0006.3255] # CIRCLED NUMBER TWENTY FIVE
-2156 ; [.15CC.0020.001E.2156][*05AC.0020.001E.2156][.15CF.0020.001F.2156] # VULGAR FRACTION TWO FIFTHS
-33F8 ; [.15CC.0020.0004.33F8][.15CF.0020.0004.33F8][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
-3256 ; [.15CC.0020.0006.3256][.15D0.0020.0006.3256] # CIRCLED NUMBER TWENTY SIX
-33F9 ; [.15CC.0020.0004.33F9][.15D0.0020.0004.33F9][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
-3257 ; [.15CC.0020.0006.3257][.15D1.0020.0006.3257] # CIRCLED NUMBER TWENTY SEVEN
-33FA ; [.15CC.0020.0004.33FA][.15D1.0020.0004.33FA][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
-3258 ; [.15CC.0020.0006.3258][.15D2.0020.0006.3258] # CIRCLED NUMBER TWENTY EIGHT
-33FB ; [.15CC.0020.0004.33FB][.15D2.0020.0004.33FB][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
-3259 ; [.15CC.0020.0006.3259][.15D3.0020.0006.3259] # CIRCLED NUMBER TWENTY NINE
-33FC ; [.15CC.0020.0004.33FC][.15D3.0020.0004.33FC][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
-33E1 ; [.15CC.0020.0004.33E1][.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
-32C1 ; [.15CC.0020.0004.32C1][.FB40.0020.0004.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
-335A ; [.15CC.0020.0004.335A][.FB40.0020.0004.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
-0033 ; [.15CD.0020.0002.0033] # DIGIT THREE
-FF13 ; [.15CD.0020.0003.FF13] # FULLWIDTH DIGIT THREE
-2476 ; [*02FB.0020.0004.2476][.15CD.0020.0004.2476][*02FC.0020.001F.2476] # PARENTHESIZED DIGIT THREE
-248A ; [.15CD.0020.0004.248A][*0273.0020.0004.248A] # DIGIT THREE FULL STOP
-1F104 ; [.15CD.0020.0004.1F104][*0221.0020.0004.1F104] # DIGIT THREE COMMA
-1D7D1 ; [.15CD.0020.0005.1D7D1] # MATHEMATICAL BOLD DIGIT THREE
-1D7DB ; [.15CD.0020.0005.1D7DB] # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
-1D7E5 ; [.15CD.0020.0005.1D7E5] # MATHEMATICAL SANS-SERIF DIGIT THREE
-1D7EF ; [.15CD.0020.0005.1D7EF] # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
-1D7F9 ; [.15CD.0020.0005.1D7F9] # MATHEMATICAL MONOSPACE DIGIT THREE
-2462 ; [.15CD.0020.0006.2462] # CIRCLED DIGIT THREE
-24F7 ; [.15CD.0020.0006.24F7] # DOUBLE CIRCLED DIGIT THREE
-2778 ; [.15CD.0020.0006.2778] # DINGBAT NEGATIVE CIRCLED DIGIT THREE
-2782 ; [.15CD.0020.0006.2782] # DINGBAT CIRCLED SANS-SERIF DIGIT THREE
-278C ; [.15CD.0020.0006.278C] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
-00B3 ; [.15CD.0020.0014.00B3] # SUPERSCRIPT THREE
-2083 ; [.15CD.0020.0015.2083] # SUBSCRIPT THREE
-0663 ; [.15CD.0020.0002.0663][.0000.013F.0002.0663] # ARABIC-INDIC DIGIT THREE
-06F3 ; [.15CD.0020.0002.06F3][.0000.0140.0002.06F3] # EXTENDED ARABIC-INDIC DIGIT THREE
-10E62 ; [.15CD.0020.0002.10E62][.0000.0141.0002.10E62] # RUMI DIGIT THREE
-07C3 ; [.15CD.0020.0002.07C3][.0000.0142.0002.07C3] # NKO DIGIT THREE
-136B ; [.15CD.0020.0002.136B][.0000.0143.0002.136B] # ETHIOPIC DIGIT THREE
-104A3 ; [.15CD.0020.0002.104A3][.0000.0144.0002.104A3] # OSMANYA DIGIT THREE
-0969 ; [.15CD.0020.0002.0969][.0000.0145.0002.0969] # DEVANAGARI DIGIT THREE
-09E9 ; [.15CD.0020.0002.09E9][.0000.0146.0002.09E9] # BENGALI DIGIT THREE
-0A69 ; [.15CD.0020.0002.0A69][.0000.0147.0002.0A69] # GURMUKHI DIGIT THREE
-0AE9 ; [.15CD.0020.0002.0AE9][.0000.0148.0002.0AE9] # GUJARATI DIGIT THREE
-0B69 ; [.15CD.0020.0002.0B69][.0000.0149.0002.0B69] # ORIYA DIGIT THREE
-0BE9 ; [.15CD.0020.0002.0BE9][.0000.014A.0002.0BE9] # TAMIL DIGIT THREE
-0C69 ; [.15CD.0020.0002.0C69][.0000.014B.0002.0C69] # TELUGU DIGIT THREE
-0C7B ; [.15CD.0020.0002.0C7B][.0000.014B.0002.0C7B] # TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR
-0C7E ; [.15CD.0020.0002.0C7E][.0000.014B.0002.0C7E] # TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
-0CE9 ; [.15CD.0020.0002.0CE9][.0000.014C.0002.0CE9] # KANNADA DIGIT THREE
-0D69 ; [.15CD.0020.0002.0D69][.0000.014D.0002.0D69] # MALAYALAM DIGIT THREE
-ABF3 ; [.15CD.0020.0002.ABF3][.0000.014E.0002.ABF3] # MEETEI MAYEK DIGIT THREE
-A8D3 ; [.15CD.0020.0002.A8D3][.0000.014F.0002.A8D3] # SAURASHTRA DIGIT THREE
-1949 ; [.15CD.0020.0002.1949][.0000.0150.0002.1949] # LIMBU DIGIT THREE
-19D3 ; [.15CD.0020.0002.19D3][.0000.0151.0002.19D3] # NEW TAI LUE DIGIT THREE
-1A83 ; [.15CD.0020.0002.1A83][.0000.0152.0002.1A83] # TAI THAM HORA DIGIT THREE
-1A93 ; [.15CD.0020.0002.1A93][.0000.0153.0002.1A93] # TAI THAM THAM DIGIT THREE
-0E53 ; [.15CD.0020.0002.0E53][.0000.0154.0002.0E53] # THAI DIGIT THREE
-0ED3 ; [.15CD.0020.0002.0ED3][.0000.0155.0002.0ED3] # LAO DIGIT THREE
-0F23 ; [.15CD.0020.0002.0F23][.0000.0156.0002.0F23] # TIBETAN DIGIT THREE
-0F2C ; [.15CD.0020.0004.0F2C][.0000.0156.0004.0F2C] # TIBETAN DIGIT HALF THREE
-1C43 ; [.15CD.0020.0002.1C43][.0000.0157.0002.1C43] # LEPCHA DIGIT THREE
-A903 ; [.15CD.0020.0002.A903][.0000.0158.0002.A903] # KAYAH LI DIGIT THREE
-1043 ; [.15CD.0020.0002.1043][.0000.0159.0002.1043] # MYANMAR DIGIT THREE
-1093 ; [.15CD.0020.0002.1093][.0000.015A.0002.1093] # MYANMAR SHAN DIGIT THREE
-11139 ; [.15CD.0020.0002.11139][.0000.015B.0002.11139] # CHAKMA DIGIT THREE
-17E3 ; [.15CD.0020.0002.17E3][.0000.015C.0002.17E3] # KHMER DIGIT THREE
-17F3 ; [.15CD.0020.0002.17F3][.0000.015D.0002.17F3] # KHMER SYMBOL LEK ATTAK BEI
-AA53 ; [.15CD.0020.0002.AA53][.0000.015E.0002.AA53] # CHAM DIGIT THREE
-1B53 ; [.15CD.0020.0002.1B53][.0000.015F.0002.1B53] # BALINESE DIGIT THREE
-A9D3 ; [.15CD.0020.0002.A9D3][.0000.0160.0002.A9D3] # JAVANESE DIGIT THREE
-1BB3 ; [.15CD.0020.0002.1BB3][.0000.0161.0002.1BB3] # SUNDANESE DIGIT THREE
-1813 ; [.15CD.0020.0002.1813][.0000.0162.0002.1813] # MONGOLIAN DIGIT THREE
-1C53 ; [.15CD.0020.0002.1C53][.0000.0163.0002.1C53] # OL CHIKI DIGIT THREE
-A623 ; [.15CD.0020.0002.A623][.0000.0164.0002.A623] # VAI DIGIT THREE
-110F3 ; [.15CD.0020.0002.110F3][.0000.0165.0002.110F3] # SORA SOMPENG DIGIT THREE
-3023 ; [.15CD.0020.0002.3023][.0000.0166.0002.3023] # HANGZHOU NUMERAL THREE
-10109 ; [.15CD.0020.0002.10109][.0000.0167.0002.10109] # AEGEAN NUMBER THREE
-12401 ; [.15CD.0020.0002.12401][.0000.016C.0002.12401] # CUNEIFORM NUMERIC SIGN THREE ASH
-12408 ; [.15CD.0020.0002.12408][.0000.016C.0002.12408] # CUNEIFORM NUMERIC SIGN THREE DISH
-12417 ; [.15CD.0020.0002.12417][.0000.016C.0002.12417] # CUNEIFORM NUMERIC SIGN THREE GESH2
-12420 ; [.15CD.0020.0002.12420][.0000.016C.0002.12420] # CUNEIFORM NUMERIC SIGN THREE GESHU
-12424 ; [.15CD.0020.0002.12424][.0000.016C.0002.12424] # CUNEIFORM NUMERIC SIGN THREE SHAR2
-12425 ; [.15CD.0020.0002.12425][.0000.016C.0002.12425] # CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM
-1242E ; [.15CD.0020.0002.1242E][.0000.016C.0002.1242E] # CUNEIFORM NUMERIC SIGN THREE SHARU
-1242F ; [.15CD.0020.0002.1242F][.0000.016C.0002.1242F] # CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM
-12436 ; [.15CD.0020.0002.12436][.0000.016C.0002.12436] # CUNEIFORM NUMERIC SIGN THREE BURU
-12437 ; [.15CD.0020.0002.12437][.0000.016C.0002.12437] # CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM
-1243A ; [.15CD.0020.0002.1243A][.0000.016C.0002.1243A] # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16
-1243B ; [.15CD.0020.0002.1243B][.0000.016C.0002.1243B] # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21
-1244B ; [.15CD.0020.0002.1244B][.0000.016C.0002.1244B] # CUNEIFORM NUMERIC SIGN THREE ASH TENU
-12451 ; [.15CD.0020.0002.12451][.0000.016C.0002.12451] # CUNEIFORM NUMERIC SIGN THREE BAN2
-1091B ; [.15CD.0020.0002.1091B][.0000.016E.0002.1091B] # PHOENICIAN NUMBER THREE
-1085A ; [.15CD.0020.0002.1085A][.0000.016F.0002.1085A] # IMPERIAL ARAMAIC NUMBER THREE
-10B5A ; [.15CD.0020.0002.10B5A][.0000.0170.0002.10B5A] # INSCRIPTIONAL PARTHIAN NUMBER THREE
-10B7A ; [.15CD.0020.0002.10B7A][.0000.0171.0002.10B7A] # INSCRIPTIONAL PAHLAVI NUMBER THREE
-111D3 ; [.15CD.0020.0002.111D3][.0000.0172.0002.111D3] # SHARADA DIGIT THREE
-116C3 ; [.15CD.0020.0002.116C3][.0000.0173.0002.116C3] # TAKRI DIGIT THREE
-11069 ; [.15CD.0020.0002.11069][.0000.0174.0002.11069] # BRAHMI DIGIT THREE
-11054 ; [.15CD.0020.0002.11054][.0000.0175.0002.11054] # BRAHMI NUMBER THREE
-10A42 ; [.15CD.0020.0002.10A42][.0000.0176.0002.10A42] # KHAROSHTHI DIGIT THREE
-1D362 ; [.15CD.0020.0002.1D362][.0000.0177.0002.1D362] # COUNTING ROD UNIT DIGIT THREE
-324A ; [.15CD.0020.0006.324A][.15CA.0020.0006.324A] # CIRCLED NUMBER THIRTY ON BLACK SQUARE
-325A ; [.15CD.0020.0006.325A][.15CA.0020.0006.325A] # CIRCLED NUMBER THIRTY
-33FD ; [.15CD.0020.0004.33FD][.15CA.0020.0004.33FD][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
-325B ; [.15CD.0020.0006.325B][.15CB.0020.0006.325B] # CIRCLED NUMBER THIRTY ONE
-33FE ; [.15CD.0020.0004.33FE][.15CB.0020.0004.33FE][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
-325C ; [.15CD.0020.0006.325C][.15CC.0020.0006.325C] # CIRCLED NUMBER THIRTY TWO
-325D ; [.15CD.0020.0006.325D][.15CD.0020.0006.325D] # CIRCLED NUMBER THIRTY THREE
-325E ; [.15CD.0020.0006.325E][.15CE.0020.0006.325E] # CIRCLED NUMBER THIRTY FOUR
-00BE ; [.15CD.0020.001E.00BE][*05AC.0020.001E.00BE][.15CE.0020.001F.00BE] # VULGAR FRACTION THREE QUARTERS
-325F ; [.15CD.0020.0006.325F][.15CF.0020.0006.325F] # CIRCLED NUMBER THIRTY FIVE
-2157 ; [.15CD.0020.001E.2157][*05AC.0020.001E.2157][.15CF.0020.001F.2157] # VULGAR FRACTION THREE FIFTHS
-32B1 ; [.15CD.0020.0006.32B1][.15D0.0020.0006.32B1] # CIRCLED NUMBER THIRTY SIX
-32B2 ; [.15CD.0020.0006.32B2][.15D1.0020.0006.32B2] # CIRCLED NUMBER THIRTY SEVEN
-32B3 ; [.15CD.0020.0006.32B3][.15D2.0020.0006.32B3] # CIRCLED NUMBER THIRTY EIGHT
-215C ; [.15CD.0020.001E.215C][*05AC.0020.001E.215C][.15D2.0020.001F.215C] # VULGAR FRACTION THREE EIGHTHS
-32B4 ; [.15CD.0020.0006.32B4][.15D3.0020.0006.32B4] # CIRCLED NUMBER THIRTY NINE
-33E2 ; [.15CD.0020.0004.33E2][.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
-32C2 ; [.15CD.0020.0004.32C2][.FB40.0020.0004.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
-335B ; [.15CD.0020.0004.335B][.FB40.0020.0004.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
-0034 ; [.15CE.0020.0002.0034] # DIGIT FOUR
-FF14 ; [.15CE.0020.0003.FF14] # FULLWIDTH DIGIT FOUR
-2477 ; [*02FB.0020.0004.2477][.15CE.0020.0004.2477][*02FC.0020.001F.2477] # PARENTHESIZED DIGIT FOUR
-248B ; [.15CE.0020.0004.248B][*0273.0020.0004.248B] # DIGIT FOUR FULL STOP
-1F105 ; [.15CE.0020.0004.1F105][*0221.0020.0004.1F105] # DIGIT FOUR COMMA
-1D7D2 ; [.15CE.0020.0005.1D7D2] # MATHEMATICAL BOLD DIGIT FOUR
-1D7DC ; [.15CE.0020.0005.1D7DC] # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
-1D7E6 ; [.15CE.0020.0005.1D7E6] # MATHEMATICAL SANS-SERIF DIGIT FOUR
-1D7F0 ; [.15CE.0020.0005.1D7F0] # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
-1D7FA ; [.15CE.0020.0005.1D7FA] # MATHEMATICAL MONOSPACE DIGIT FOUR
-2463 ; [.15CE.0020.0006.2463] # CIRCLED DIGIT FOUR
-24F8 ; [.15CE.0020.0006.24F8] # DOUBLE CIRCLED DIGIT FOUR
-2779 ; [.15CE.0020.0006.2779] # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
-2783 ; [.15CE.0020.0006.2783] # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
-278D ; [.15CE.0020.0006.278D] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
-2074 ; [.15CE.0020.0014.2074] # SUPERSCRIPT FOUR
-2084 ; [.15CE.0020.0015.2084] # SUBSCRIPT FOUR
-0664 ; [.15CE.0020.0002.0664][.0000.013F.0002.0664] # ARABIC-INDIC DIGIT FOUR
-06F4 ; [.15CE.0020.0002.06F4][.0000.0140.0002.06F4] # EXTENDED ARABIC-INDIC DIGIT FOUR
-10E63 ; [.15CE.0020.0002.10E63][.0000.0141.0002.10E63] # RUMI DIGIT FOUR
-07C4 ; [.15CE.0020.0002.07C4][.0000.0142.0002.07C4] # NKO DIGIT FOUR
-136C ; [.15CE.0020.0002.136C][.0000.0143.0002.136C] # ETHIOPIC DIGIT FOUR
-104A4 ; [.15CE.0020.0002.104A4][.0000.0144.0002.104A4] # OSMANYA DIGIT FOUR
-096A ; [.15CE.0020.0002.096A][.0000.0145.0002.096A] # DEVANAGARI DIGIT FOUR
-09EA ; [.15CE.0020.0002.09EA][.0000.0146.0002.09EA] # BENGALI DIGIT FOUR
-0A6A ; [.15CE.0020.0002.0A6A][.0000.0147.0002.0A6A] # GURMUKHI DIGIT FOUR
-0AEA ; [.15CE.0020.0002.0AEA][.0000.0148.0002.0AEA] # GUJARATI DIGIT FOUR
-0B6A ; [.15CE.0020.0002.0B6A][.0000.0149.0002.0B6A] # ORIYA DIGIT FOUR
-0BEA ; [.15CE.0020.0002.0BEA][.0000.014A.0002.0BEA] # TAMIL DIGIT FOUR
-0C6A ; [.15CE.0020.0002.0C6A][.0000.014B.0002.0C6A] # TELUGU DIGIT FOUR
-0CEA ; [.15CE.0020.0002.0CEA][.0000.014C.0002.0CEA] # KANNADA DIGIT FOUR
-0D6A ; [.15CE.0020.0002.0D6A][.0000.014D.0002.0D6A] # MALAYALAM DIGIT FOUR
-ABF4 ; [.15CE.0020.0002.ABF4][.0000.014E.0002.ABF4] # MEETEI MAYEK DIGIT FOUR
-A8D4 ; [.15CE.0020.0002.A8D4][.0000.014F.0002.A8D4] # SAURASHTRA DIGIT FOUR
-194A ; [.15CE.0020.0002.194A][.0000.0150.0002.194A] # LIMBU DIGIT FOUR
-19D4 ; [.15CE.0020.0002.19D4][.0000.0151.0002.19D4] # NEW TAI LUE DIGIT FOUR
-1A84 ; [.15CE.0020.0002.1A84][.0000.0152.0002.1A84] # TAI THAM HORA DIGIT FOUR
-1A94 ; [.15CE.0020.0002.1A94][.0000.0153.0002.1A94] # TAI THAM THAM DIGIT FOUR
-0E54 ; [.15CE.0020.0002.0E54][.0000.0154.0002.0E54] # THAI DIGIT FOUR
-0ED4 ; [.15CE.0020.0002.0ED4][.0000.0155.0002.0ED4] # LAO DIGIT FOUR
-0F24 ; [.15CE.0020.0002.0F24][.0000.0156.0002.0F24] # TIBETAN DIGIT FOUR
-0F2D ; [.15CE.0020.0004.0F2D][.0000.0156.0004.0F2D] # TIBETAN DIGIT HALF FOUR
-1C44 ; [.15CE.0020.0002.1C44][.0000.0157.0002.1C44] # LEPCHA DIGIT FOUR
-A904 ; [.15CE.0020.0002.A904][.0000.0158.0002.A904] # KAYAH LI DIGIT FOUR
-1044 ; [.15CE.0020.0002.1044][.0000.0159.0002.1044] # MYANMAR DIGIT FOUR
-1094 ; [.15CE.0020.0002.1094][.0000.015A.0002.1094] # MYANMAR SHAN DIGIT FOUR
-1113A ; [.15CE.0020.0002.1113A][.0000.015B.0002.1113A] # CHAKMA DIGIT FOUR
-17E4 ; [.15CE.0020.0002.17E4][.0000.015C.0002.17E4] # KHMER DIGIT FOUR
-17F4 ; [.15CE.0020.0002.17F4][.0000.015D.0002.17F4] # KHMER SYMBOL LEK ATTAK BUON
-AA54 ; [.15CE.0020.0002.AA54][.0000.015E.0002.AA54] # CHAM DIGIT FOUR
-1B54 ; [.15CE.0020.0002.1B54][.0000.015F.0002.1B54] # BALINESE DIGIT FOUR
-A9D4 ; [.15CE.0020.0002.A9D4][.0000.0160.0002.A9D4] # JAVANESE DIGIT FOUR
-1BB4 ; [.15CE.0020.0002.1BB4][.0000.0161.0002.1BB4] # SUNDANESE DIGIT FOUR
-1814 ; [.15CE.0020.0002.1814][.0000.0162.0002.1814] # MONGOLIAN DIGIT FOUR
-1C54 ; [.15CE.0020.0002.1C54][.0000.0163.0002.1C54] # OL CHIKI DIGIT FOUR
-A624 ; [.15CE.0020.0002.A624][.0000.0164.0002.A624] # VAI DIGIT FOUR
-110F4 ; [.15CE.0020.0002.110F4][.0000.0165.0002.110F4] # SORA SOMPENG DIGIT FOUR
-3024 ; [.15CE.0020.0002.3024][.0000.0166.0002.3024] # HANGZHOU NUMERAL FOUR
-1010A ; [.15CE.0020.0002.1010A][.0000.0167.0002.1010A] # AEGEAN NUMBER FOUR
-12402 ; [.15CE.0020.0002.12402][.0000.016C.0002.12402] # CUNEIFORM NUMERIC SIGN FOUR ASH
-12409 ; [.15CE.0020.0002.12409][.0000.016C.0002.12409] # CUNEIFORM NUMERIC SIGN FOUR DISH
-1240F ; [.15CE.0020.0002.1240F][.0000.016C.0002.1240F] # CUNEIFORM NUMERIC SIGN FOUR U
-12418 ; [.15CE.0020.0002.12418][.0000.016C.0002.12418] # CUNEIFORM NUMERIC SIGN FOUR GESH2
-12421 ; [.15CE.0020.0002.12421][.0000.016C.0002.12421] # CUNEIFORM NUMERIC SIGN FOUR GESHU
-12426 ; [.15CE.0020.0002.12426][.0000.016C.0002.12426] # CUNEIFORM NUMERIC SIGN FOUR SHAR2
-12430 ; [.15CE.0020.0002.12430][.0000.016C.0002.12430] # CUNEIFORM NUMERIC SIGN FOUR SHARU
-12438 ; [.15CE.0020.0002.12438][.0000.016C.0002.12438] # CUNEIFORM NUMERIC SIGN FOUR BURU
-1243C ; [.15CE.0020.0002.1243C][.0000.016C.0002.1243C] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU
-1243D ; [.15CE.0020.0002.1243D][.0000.016C.0002.1243D] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4
-1243E ; [.15CE.0020.0002.1243E][.0000.016C.0002.1243E] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A
-1243F ; [.15CE.0020.0002.1243F][.0000.016C.0002.1243F] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B
-1244C ; [.15CE.0020.0002.1244C][.0000.016C.0002.1244C] # CUNEIFORM NUMERIC SIGN FOUR ASH TENU
-12452 ; [.15CE.0020.0002.12452][.0000.016C.0002.12452] # CUNEIFORM NUMERIC SIGN FOUR BAN2
-12453 ; [.15CE.0020.0002.12453][.0000.016C.0002.12453] # CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM
-10B5B ; [.15CE.0020.0002.10B5B][.0000.0170.0002.10B5B] # INSCRIPTIONAL PARTHIAN NUMBER FOUR
-10B7B ; [.15CE.0020.0002.10B7B][.0000.0171.0002.10B7B] # INSCRIPTIONAL PAHLAVI NUMBER FOUR
-111D4 ; [.15CE.0020.0002.111D4][.0000.0172.0002.111D4] # SHARADA DIGIT FOUR
-116C4 ; [.15CE.0020.0002.116C4][.0000.0173.0002.116C4] # TAKRI DIGIT FOUR
-1106A ; [.15CE.0020.0002.1106A][.0000.0174.0002.1106A] # BRAHMI DIGIT FOUR
-11055 ; [.15CE.0020.0002.11055][.0000.0175.0002.11055] # BRAHMI NUMBER FOUR
-10A43 ; [.15CE.0020.0002.10A43][.0000.0176.0002.10A43] # KHAROSHTHI DIGIT FOUR
-1D363 ; [.15CE.0020.0002.1D363][.0000.0177.0002.1D363] # COUNTING ROD UNIT DIGIT FOUR
-324B ; [.15CE.0020.0006.324B][.15CA.0020.0006.324B] # CIRCLED NUMBER FORTY ON BLACK SQUARE
-32B5 ; [.15CE.0020.0006.32B5][.15CA.0020.0006.32B5] # CIRCLED NUMBER FORTY
-32B6 ; [.15CE.0020.0006.32B6][.15CB.0020.0006.32B6] # CIRCLED NUMBER FORTY ONE
-32B7 ; [.15CE.0020.0006.32B7][.15CC.0020.0006.32B7] # CIRCLED NUMBER FORTY TWO
-32B8 ; [.15CE.0020.0006.32B8][.15CD.0020.0006.32B8] # CIRCLED NUMBER FORTY THREE
-32B9 ; [.15CE.0020.0006.32B9][.15CE.0020.0006.32B9] # CIRCLED NUMBER FORTY FOUR
-32BA ; [.15CE.0020.0006.32BA][.15CF.0020.0006.32BA] # CIRCLED NUMBER FORTY FIVE
-2158 ; [.15CE.0020.001E.2158][*05AC.0020.001E.2158][.15CF.0020.001F.2158] # VULGAR FRACTION FOUR FIFTHS
-32BB ; [.15CE.0020.0006.32BB][.15D0.0020.0006.32BB] # CIRCLED NUMBER FORTY SIX
-32BC ; [.15CE.0020.0006.32BC][.15D1.0020.0006.32BC] # CIRCLED NUMBER FORTY SEVEN
-32BD ; [.15CE.0020.0006.32BD][.15D2.0020.0006.32BD] # CIRCLED NUMBER FORTY EIGHT
-32BE ; [.15CE.0020.0006.32BE][.15D3.0020.0006.32BE] # CIRCLED NUMBER FORTY NINE
-33E3 ; [.15CE.0020.0004.33E3][.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
-32C3 ; [.15CE.0020.0004.32C3][.FB40.0020.0004.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
-335C ; [.15CE.0020.0004.335C][.FB40.0020.0004.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
-0035 ; [.15CF.0020.0002.0035] # DIGIT FIVE
-FF15 ; [.15CF.0020.0003.FF15] # FULLWIDTH DIGIT FIVE
-2478 ; [*02FB.0020.0004.2478][.15CF.0020.0004.2478][*02FC.0020.001F.2478] # PARENTHESIZED DIGIT FIVE
-248C ; [.15CF.0020.0004.248C][*0273.0020.0004.248C] # DIGIT FIVE FULL STOP
-1F106 ; [.15CF.0020.0004.1F106][*0221.0020.0004.1F106] # DIGIT FIVE COMMA
-1D7D3 ; [.15CF.0020.0005.1D7D3] # MATHEMATICAL BOLD DIGIT FIVE
-1D7DD ; [.15CF.0020.0005.1D7DD] # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
-1D7E7 ; [.15CF.0020.0005.1D7E7] # MATHEMATICAL SANS-SERIF DIGIT FIVE
-1D7F1 ; [.15CF.0020.0005.1D7F1] # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
-1D7FB ; [.15CF.0020.0005.1D7FB] # MATHEMATICAL MONOSPACE DIGIT FIVE
-2464 ; [.15CF.0020.0006.2464] # CIRCLED DIGIT FIVE
-24F9 ; [.15CF.0020.0006.24F9] # DOUBLE CIRCLED DIGIT FIVE
-277A ; [.15CF.0020.0006.277A] # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
-2784 ; [.15CF.0020.0006.2784] # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
-278E ; [.15CF.0020.0006.278E] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
-2075 ; [.15CF.0020.0014.2075] # SUPERSCRIPT FIVE
-2085 ; [.15CF.0020.0015.2085] # SUBSCRIPT FIVE
-0665 ; [.15CF.0020.0002.0665][.0000.013F.0002.0665] # ARABIC-INDIC DIGIT FIVE
-06F5 ; [.15CF.0020.0002.06F5][.0000.0140.0002.06F5] # EXTENDED ARABIC-INDIC DIGIT FIVE
-10E64 ; [.15CF.0020.0002.10E64][.0000.0141.0002.10E64] # RUMI DIGIT FIVE
-07C5 ; [.15CF.0020.0002.07C5][.0000.0142.0002.07C5] # NKO DIGIT FIVE
-136D ; [.15CF.0020.0002.136D][.0000.0143.0002.136D] # ETHIOPIC DIGIT FIVE
-104A5 ; [.15CF.0020.0002.104A5][.0000.0144.0002.104A5] # OSMANYA DIGIT FIVE
-096B ; [.15CF.0020.0002.096B][.0000.0145.0002.096B] # DEVANAGARI DIGIT FIVE
-09EB ; [.15CF.0020.0002.09EB][.0000.0146.0002.09EB] # BENGALI DIGIT FIVE
-0A6B ; [.15CF.0020.0002.0A6B][.0000.0147.0002.0A6B] # GURMUKHI DIGIT FIVE
-0AEB ; [.15CF.0020.0002.0AEB][.0000.0148.0002.0AEB] # GUJARATI DIGIT FIVE
-0B6B ; [.15CF.0020.0002.0B6B][.0000.0149.0002.0B6B] # ORIYA DIGIT FIVE
-0BEB ; [.15CF.0020.0002.0BEB][.0000.014A.0002.0BEB] # TAMIL DIGIT FIVE
-0C6B ; [.15CF.0020.0002.0C6B][.0000.014B.0002.0C6B] # TELUGU DIGIT FIVE
-0CEB ; [.15CF.0020.0002.0CEB][.0000.014C.0002.0CEB] # KANNADA DIGIT FIVE
-0D6B ; [.15CF.0020.0002.0D6B][.0000.014D.0002.0D6B] # MALAYALAM DIGIT FIVE
-ABF5 ; [.15CF.0020.0002.ABF5][.0000.014E.0002.ABF5] # MEETEI MAYEK DIGIT FIVE
-A8D5 ; [.15CF.0020.0002.A8D5][.0000.014F.0002.A8D5] # SAURASHTRA DIGIT FIVE
-194B ; [.15CF.0020.0002.194B][.0000.0150.0002.194B] # LIMBU DIGIT FIVE
-19D5 ; [.15CF.0020.0002.19D5][.0000.0151.0002.19D5] # NEW TAI LUE DIGIT FIVE
-1A85 ; [.15CF.0020.0002.1A85][.0000.0152.0002.1A85] # TAI THAM HORA DIGIT FIVE
-1A95 ; [.15CF.0020.0002.1A95][.0000.0153.0002.1A95] # TAI THAM THAM DIGIT FIVE
-0E55 ; [.15CF.0020.0002.0E55][.0000.0154.0002.0E55] # THAI DIGIT FIVE
-0ED5 ; [.15CF.0020.0002.0ED5][.0000.0155.0002.0ED5] # LAO DIGIT FIVE
-0F25 ; [.15CF.0020.0002.0F25][.0000.0156.0002.0F25] # TIBETAN DIGIT FIVE
-0F2E ; [.15CF.0020.0004.0F2E][.0000.0156.0004.0F2E] # TIBETAN DIGIT HALF FIVE
-1C45 ; [.15CF.0020.0002.1C45][.0000.0157.0002.1C45] # LEPCHA DIGIT FIVE
-A905 ; [.15CF.0020.0002.A905][.0000.0158.0002.A905] # KAYAH LI DIGIT FIVE
-1045 ; [.15CF.0020.0002.1045][.0000.0159.0002.1045] # MYANMAR DIGIT FIVE
-1095 ; [.15CF.0020.0002.1095][.0000.015A.0002.1095] # MYANMAR SHAN DIGIT FIVE
-1113B ; [.15CF.0020.0002.1113B][.0000.015B.0002.1113B] # CHAKMA DIGIT FIVE
-17E5 ; [.15CF.0020.0002.17E5][.0000.015C.0002.17E5] # KHMER DIGIT FIVE
-17F5 ; [.15CF.0020.0002.17F5][.0000.015D.0002.17F5] # KHMER SYMBOL LEK ATTAK PRAM
-AA55 ; [.15CF.0020.0002.AA55][.0000.015E.0002.AA55] # CHAM DIGIT FIVE
-1B55 ; [.15CF.0020.0002.1B55][.0000.015F.0002.1B55] # BALINESE DIGIT FIVE
-A9D5 ; [.15CF.0020.0002.A9D5][.0000.0160.0002.A9D5] # JAVANESE DIGIT FIVE
-1BB5 ; [.15CF.0020.0002.1BB5][.0000.0161.0002.1BB5] # SUNDANESE DIGIT FIVE
-1815 ; [.15CF.0020.0002.1815][.0000.0162.0002.1815] # MONGOLIAN DIGIT FIVE
-1C55 ; [.15CF.0020.0002.1C55][.0000.0163.0002.1C55] # OL CHIKI DIGIT FIVE
-A625 ; [.15CF.0020.0002.A625][.0000.0164.0002.A625] # VAI DIGIT FIVE
-110F5 ; [.15CF.0020.0002.110F5][.0000.0165.0002.110F5] # SORA SOMPENG DIGIT FIVE
-3025 ; [.15CF.0020.0002.3025][.0000.0166.0002.3025] # HANGZHOU NUMERAL FIVE
-1010B ; [.15CF.0020.0002.1010B][.0000.0167.0002.1010B] # AEGEAN NUMBER FIVE
-10143 ; [.15CF.0020.0002.10143][.0000.0168.0002.10143] # GREEK ACROPHONIC ATTIC FIVE
-10148 ; [.15CF.0020.0002.10148][.0000.0168.0002.10148] # GREEK ACROPHONIC ATTIC FIVE TALENTS
-1014F ; [.15CF.0020.0002.1014F][.0000.0168.0002.1014F] # GREEK ACROPHONIC ATTIC FIVE STATERS
-1015F ; [.15CF.0020.0002.1015F][.0000.0168.0002.1015F] # GREEK ACROPHONIC TROEZENIAN FIVE
-10173 ; [.15CF.0020.0002.10173][.0000.0168.0002.10173] # GREEK ACROPHONIC DELPHIC FIVE MNAS
-10321 ; [.15CF.0020.0002.10321][.0000.016A.0002.10321] # OLD ITALIC NUMERAL FIVE
-12403 ; [.15CF.0020.0002.12403][.0000.016C.0002.12403] # CUNEIFORM NUMERIC SIGN FIVE ASH
-1240A ; [.15CF.0020.0002.1240A][.0000.016C.0002.1240A] # CUNEIFORM NUMERIC SIGN FIVE DISH
-12410 ; [.15CF.0020.0002.12410][.0000.016C.0002.12410] # CUNEIFORM NUMERIC SIGN FIVE U
-12419 ; [.15CF.0020.0002.12419][.0000.016C.0002.12419] # CUNEIFORM NUMERIC SIGN FIVE GESH2
-12422 ; [.15CF.0020.0002.12422][.0000.016C.0002.12422] # CUNEIFORM NUMERIC SIGN FIVE GESHU
-12427 ; [.15CF.0020.0002.12427][.0000.016C.0002.12427] # CUNEIFORM NUMERIC SIGN FIVE SHAR2
-12431 ; [.15CF.0020.0002.12431][.0000.016C.0002.12431] # CUNEIFORM NUMERIC SIGN FIVE SHARU
-12439 ; [.15CF.0020.0002.12439][.0000.016C.0002.12439] # CUNEIFORM NUMERIC SIGN FIVE BURU
-1244D ; [.15CF.0020.0002.1244D][.0000.016C.0002.1244D] # CUNEIFORM NUMERIC SIGN FIVE ASH TENU
-12454 ; [.15CF.0020.0002.12454][.0000.016C.0002.12454] # CUNEIFORM NUMERIC SIGN FIVE BAN2
-12455 ; [.15CF.0020.0002.12455][.0000.016C.0002.12455] # CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM
-111D5 ; [.15CF.0020.0002.111D5][.0000.0172.0002.111D5] # SHARADA DIGIT FIVE
-116C5 ; [.15CF.0020.0002.116C5][.0000.0173.0002.116C5] # TAKRI DIGIT FIVE
-1106B ; [.15CF.0020.0002.1106B][.0000.0174.0002.1106B] # BRAHMI DIGIT FIVE
-11056 ; [.15CF.0020.0002.11056][.0000.0175.0002.11056] # BRAHMI NUMBER FIVE
-1D364 ; [.15CF.0020.0002.1D364][.0000.0177.0002.1D364] # COUNTING ROD UNIT DIGIT FIVE
-324C ; [.15CF.0020.0006.324C][.15CA.0020.0006.324C] # CIRCLED NUMBER FIFTY ON BLACK SQUARE
-32BF ; [.15CF.0020.0006.32BF][.15CA.0020.0006.32BF] # CIRCLED NUMBER FIFTY
-215A ; [.15CF.0020.001E.215A][*05AC.0020.001E.215A][.15D0.0020.001F.215A] # VULGAR FRACTION FIVE SIXTHS
-215D ; [.15CF.0020.001E.215D][*05AC.0020.001E.215D][.15D2.0020.001F.215D] # VULGAR FRACTION FIVE EIGHTHS
-33E4 ; [.15CF.0020.0004.33E4][.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
-32C4 ; [.15CF.0020.0004.32C4][.FB40.0020.0004.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
-335D ; [.15CF.0020.0004.335D][.FB40.0020.0004.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
-0036 ; [.15D0.0020.0002.0036] # DIGIT SIX
-FF16 ; [.15D0.0020.0003.FF16] # FULLWIDTH DIGIT SIX
-2479 ; [*02FB.0020.0004.2479][.15D0.0020.0004.2479][*02FC.0020.001F.2479] # PARENTHESIZED DIGIT SIX
-248D ; [.15D0.0020.0004.248D][*0273.0020.0004.248D] # DIGIT SIX FULL STOP
-1F107 ; [.15D0.0020.0004.1F107][*0221.0020.0004.1F107] # DIGIT SIX COMMA
-1D7D4 ; [.15D0.0020.0005.1D7D4] # MATHEMATICAL BOLD DIGIT SIX
-1D7DE ; [.15D0.0020.0005.1D7DE] # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
-1D7E8 ; [.15D0.0020.0005.1D7E8] # MATHEMATICAL SANS-SERIF DIGIT SIX
-1D7F2 ; [.15D0.0020.0005.1D7F2] # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
-1D7FC ; [.15D0.0020.0005.1D7FC] # MATHEMATICAL MONOSPACE DIGIT SIX
-2465 ; [.15D0.0020.0006.2465] # CIRCLED DIGIT SIX
-24FA ; [.15D0.0020.0006.24FA] # DOUBLE CIRCLED DIGIT SIX
-277B ; [.15D0.0020.0006.277B] # DINGBAT NEGATIVE CIRCLED DIGIT SIX
-2785 ; [.15D0.0020.0006.2785] # DINGBAT CIRCLED SANS-SERIF DIGIT SIX
-278F ; [.15D0.0020.0006.278F] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
-2076 ; [.15D0.0020.0014.2076] # SUPERSCRIPT SIX
-2086 ; [.15D0.0020.0015.2086] # SUBSCRIPT SIX
-0666 ; [.15D0.0020.0002.0666][.0000.013F.0002.0666] # ARABIC-INDIC DIGIT SIX
-06F6 ; [.15D0.0020.0002.06F6][.0000.0140.0002.06F6] # EXTENDED ARABIC-INDIC DIGIT SIX
-10E65 ; [.15D0.0020.0002.10E65][.0000.0141.0002.10E65] # RUMI DIGIT SIX
-07C6 ; [.15D0.0020.0002.07C6][.0000.0142.0002.07C6] # NKO DIGIT SIX
-136E ; [.15D0.0020.0002.136E][.0000.0143.0002.136E] # ETHIOPIC DIGIT SIX
-104A6 ; [.15D0.0020.0002.104A6][.0000.0144.0002.104A6] # OSMANYA DIGIT SIX
-096C ; [.15D0.0020.0002.096C][.0000.0145.0002.096C] # DEVANAGARI DIGIT SIX
-09EC ; [.15D0.0020.0002.09EC][.0000.0146.0002.09EC] # BENGALI DIGIT SIX
-0A6C ; [.15D0.0020.0002.0A6C][.0000.0147.0002.0A6C] # GURMUKHI DIGIT SIX
-0AEC ; [.15D0.0020.0002.0AEC][.0000.0148.0002.0AEC] # GUJARATI DIGIT SIX
-0B6C ; [.15D0.0020.0002.0B6C][.0000.0149.0002.0B6C] # ORIYA DIGIT SIX
-0BEC ; [.15D0.0020.0002.0BEC][.0000.014A.0002.0BEC] # TAMIL DIGIT SIX
-0C6C ; [.15D0.0020.0002.0C6C][.0000.014B.0002.0C6C] # TELUGU DIGIT SIX
-0CEC ; [.15D0.0020.0002.0CEC][.0000.014C.0002.0CEC] # KANNADA DIGIT SIX
-0D6C ; [.15D0.0020.0002.0D6C][.0000.014D.0002.0D6C] # MALAYALAM DIGIT SIX
-ABF6 ; [.15D0.0020.0002.ABF6][.0000.014E.0002.ABF6] # MEETEI MAYEK DIGIT SIX
-A8D6 ; [.15D0.0020.0002.A8D6][.0000.014F.0002.A8D6] # SAURASHTRA DIGIT SIX
-194C ; [.15D0.0020.0002.194C][.0000.0150.0002.194C] # LIMBU DIGIT SIX
-19D6 ; [.15D0.0020.0002.19D6][.0000.0151.0002.19D6] # NEW TAI LUE DIGIT SIX
-1A86 ; [.15D0.0020.0002.1A86][.0000.0152.0002.1A86] # TAI THAM HORA DIGIT SIX
-1A96 ; [.15D0.0020.0002.1A96][.0000.0153.0002.1A96] # TAI THAM THAM DIGIT SIX
-0E56 ; [.15D0.0020.0002.0E56][.0000.0154.0002.0E56] # THAI DIGIT SIX
-0ED6 ; [.15D0.0020.0002.0ED6][.0000.0155.0002.0ED6] # LAO DIGIT SIX
-0F26 ; [.15D0.0020.0002.0F26][.0000.0156.0002.0F26] # TIBETAN DIGIT SIX
-0F2F ; [.15D0.0020.0004.0F2F][.0000.0156.0004.0F2F] # TIBETAN DIGIT HALF SIX
-1C46 ; [.15D0.0020.0002.1C46][.0000.0157.0002.1C46] # LEPCHA DIGIT SIX
-A906 ; [.15D0.0020.0002.A906][.0000.0158.0002.A906] # KAYAH LI DIGIT SIX
-1046 ; [.15D0.0020.0002.1046][.0000.0159.0002.1046] # MYANMAR DIGIT SIX
-1096 ; [.15D0.0020.0002.1096][.0000.015A.0002.1096] # MYANMAR SHAN DIGIT SIX
-1113C ; [.15D0.0020.0002.1113C][.0000.015B.0002.1113C] # CHAKMA DIGIT SIX
-17E6 ; [.15D0.0020.0002.17E6][.0000.015C.0002.17E6] # KHMER DIGIT SIX
-17F6 ; [.15D0.0020.0002.17F6][.0000.015D.0002.17F6] # KHMER SYMBOL LEK ATTAK PRAM-MUOY
-AA56 ; [.15D0.0020.0002.AA56][.0000.015E.0002.AA56] # CHAM DIGIT SIX
-1B56 ; [.15D0.0020.0002.1B56][.0000.015F.0002.1B56] # BALINESE DIGIT SIX
-A9D6 ; [.15D0.0020.0002.A9D6][.0000.0160.0002.A9D6] # JAVANESE DIGIT SIX
-1BB6 ; [.15D0.0020.0002.1BB6][.0000.0161.0002.1BB6] # SUNDANESE DIGIT SIX
-1816 ; [.15D0.0020.0002.1816][.0000.0162.0002.1816] # MONGOLIAN DIGIT SIX
-1C56 ; [.15D0.0020.0002.1C56][.0000.0163.0002.1C56] # OL CHIKI DIGIT SIX
-A626 ; [.15D0.0020.0002.A626][.0000.0164.0002.A626] # VAI DIGIT SIX
-110F6 ; [.15D0.0020.0002.110F6][.0000.0165.0002.110F6] # SORA SOMPENG DIGIT SIX
-3026 ; [.15D0.0020.0002.3026][.0000.0166.0002.3026] # HANGZHOU NUMERAL SIX
-1010C ; [.15D0.0020.0002.1010C][.0000.0167.0002.1010C] # AEGEAN NUMBER SIX
-2185 ; [.15D0.0020.0002.2185][.0000.0169.0002.2185] # ROMAN NUMERAL SIX LATE FORM
-12404 ; [.15D0.0020.0002.12404][.0000.016C.0002.12404] # CUNEIFORM NUMERIC SIGN SIX ASH
-1240B ; [.15D0.0020.0002.1240B][.0000.016C.0002.1240B] # CUNEIFORM NUMERIC SIGN SIX DISH
-12411 ; [.15D0.0020.0002.12411][.0000.016C.0002.12411] # CUNEIFORM NUMERIC SIGN SIX U
-1241A ; [.15D0.0020.0002.1241A][.0000.016C.0002.1241A] # CUNEIFORM NUMERIC SIGN SIX GESH2
-12428 ; [.15D0.0020.0002.12428][.0000.016C.0002.12428] # CUNEIFORM NUMERIC SIGN SIX SHAR2
-12440 ; [.15D0.0020.0002.12440][.0000.016C.0002.12440] # CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9
-1244E ; [.15D0.0020.0002.1244E][.0000.016C.0002.1244E] # CUNEIFORM NUMERIC SIGN SIX ASH TENU
-111D6 ; [.15D0.0020.0002.111D6][.0000.0172.0002.111D6] # SHARADA DIGIT SIX
-116C6 ; [.15D0.0020.0002.116C6][.0000.0173.0002.116C6] # TAKRI DIGIT SIX
-1106C ; [.15D0.0020.0002.1106C][.0000.0174.0002.1106C] # BRAHMI DIGIT SIX
-11057 ; [.15D0.0020.0002.11057][.0000.0175.0002.11057] # BRAHMI NUMBER SIX
-1D365 ; [.15D0.0020.0002.1D365][.0000.0177.0002.1D365] # COUNTING ROD UNIT DIGIT SIX
-324D ; [.15D0.0020.0006.324D][.15CA.0020.0006.324D] # CIRCLED NUMBER SIXTY ON BLACK SQUARE
-33E5 ; [.15D0.0020.0004.33E5][.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
-32C5 ; [.15D0.0020.0004.32C5][.FB40.0020.0004.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
-335E ; [.15D0.0020.0004.335E][.FB40.0020.0004.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
-0037 ; [.15D1.0020.0002.0037] # DIGIT SEVEN
-FF17 ; [.15D1.0020.0003.FF17] # FULLWIDTH DIGIT SEVEN
-247A ; [*02FB.0020.0004.247A][.15D1.0020.0004.247A][*02FC.0020.001F.247A] # PARENTHESIZED DIGIT SEVEN
-248E ; [.15D1.0020.0004.248E][*0273.0020.0004.248E] # DIGIT SEVEN FULL STOP
-1F108 ; [.15D1.0020.0004.1F108][*0221.0020.0004.1F108] # DIGIT SEVEN COMMA
-1D7D5 ; [.15D1.0020.0005.1D7D5] # MATHEMATICAL BOLD DIGIT SEVEN
-1D7DF ; [.15D1.0020.0005.1D7DF] # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
-1D7E9 ; [.15D1.0020.0005.1D7E9] # MATHEMATICAL SANS-SERIF DIGIT SEVEN
-1D7F3 ; [.15D1.0020.0005.1D7F3] # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
-1D7FD ; [.15D1.0020.0005.1D7FD] # MATHEMATICAL MONOSPACE DIGIT SEVEN
-2466 ; [.15D1.0020.0006.2466] # CIRCLED DIGIT SEVEN
-24FB ; [.15D1.0020.0006.24FB] # DOUBLE CIRCLED DIGIT SEVEN
-277C ; [.15D1.0020.0006.277C] # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
-2786 ; [.15D1.0020.0006.2786] # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
-2790 ; [.15D1.0020.0006.2790] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
-2077 ; [.15D1.0020.0014.2077] # SUPERSCRIPT SEVEN
-2087 ; [.15D1.0020.0015.2087] # SUBSCRIPT SEVEN
-0667 ; [.15D1.0020.0002.0667][.0000.013F.0002.0667] # ARABIC-INDIC DIGIT SEVEN
-06F7 ; [.15D1.0020.0002.06F7][.0000.0140.0002.06F7] # EXTENDED ARABIC-INDIC DIGIT SEVEN
-10E66 ; [.15D1.0020.0002.10E66][.0000.0141.0002.10E66] # RUMI DIGIT SEVEN
-07C7 ; [.15D1.0020.0002.07C7][.0000.0142.0002.07C7] # NKO DIGIT SEVEN
-136F ; [.15D1.0020.0002.136F][.0000.0143.0002.136F] # ETHIOPIC DIGIT SEVEN
-104A7 ; [.15D1.0020.0002.104A7][.0000.0144.0002.104A7] # OSMANYA DIGIT SEVEN
-096D ; [.15D1.0020.0002.096D][.0000.0145.0002.096D] # DEVANAGARI DIGIT SEVEN
-09ED ; [.15D1.0020.0002.09ED][.0000.0146.0002.09ED] # BENGALI DIGIT SEVEN
-0A6D ; [.15D1.0020.0002.0A6D][.0000.0147.0002.0A6D] # GURMUKHI DIGIT SEVEN
-0AED ; [.15D1.0020.0002.0AED][.0000.0148.0002.0AED] # GUJARATI DIGIT SEVEN
-0B6D ; [.15D1.0020.0002.0B6D][.0000.0149.0002.0B6D] # ORIYA DIGIT SEVEN
-0BED ; [.15D1.0020.0002.0BED][.0000.014A.0002.0BED] # TAMIL DIGIT SEVEN
-0C6D ; [.15D1.0020.0002.0C6D][.0000.014B.0002.0C6D] # TELUGU DIGIT SEVEN
-0CED ; [.15D1.0020.0002.0CED][.0000.014C.0002.0CED] # KANNADA DIGIT SEVEN
-0D6D ; [.15D1.0020.0002.0D6D][.0000.014D.0002.0D6D] # MALAYALAM DIGIT SEVEN
-ABF7 ; [.15D1.0020.0002.ABF7][.0000.014E.0002.ABF7] # MEETEI MAYEK DIGIT SEVEN
-A8D7 ; [.15D1.0020.0002.A8D7][.0000.014F.0002.A8D7] # SAURASHTRA DIGIT SEVEN
-194D ; [.15D1.0020.0002.194D][.0000.0150.0002.194D] # LIMBU DIGIT SEVEN
-19D7 ; [.15D1.0020.0002.19D7][.0000.0151.0002.19D7] # NEW TAI LUE DIGIT SEVEN
-1A87 ; [.15D1.0020.0002.1A87][.0000.0152.0002.1A87] # TAI THAM HORA DIGIT SEVEN
-1A97 ; [.15D1.0020.0002.1A97][.0000.0153.0002.1A97] # TAI THAM THAM DIGIT SEVEN
-0E57 ; [.15D1.0020.0002.0E57][.0000.0154.0002.0E57] # THAI DIGIT SEVEN
-0ED7 ; [.15D1.0020.0002.0ED7][.0000.0155.0002.0ED7] # LAO DIGIT SEVEN
-0F27 ; [.15D1.0020.0002.0F27][.0000.0156.0002.0F27] # TIBETAN DIGIT SEVEN
-0F30 ; [.15D1.0020.0004.0F30][.0000.0156.0004.0F30] # TIBETAN DIGIT HALF SEVEN
-1C47 ; [.15D1.0020.0002.1C47][.0000.0157.0002.1C47] # LEPCHA DIGIT SEVEN
-A907 ; [.15D1.0020.0002.A907][.0000.0158.0002.A907] # KAYAH LI DIGIT SEVEN
-1047 ; [.15D1.0020.0002.1047][.0000.0159.0002.1047] # MYANMAR DIGIT SEVEN
-1097 ; [.15D1.0020.0002.1097][.0000.015A.0002.1097] # MYANMAR SHAN DIGIT SEVEN
-1113D ; [.15D1.0020.0002.1113D][.0000.015B.0002.1113D] # CHAKMA DIGIT SEVEN
-17E7 ; [.15D1.0020.0002.17E7][.0000.015C.0002.17E7] # KHMER DIGIT SEVEN
-17F7 ; [.15D1.0020.0002.17F7][.0000.015D.0002.17F7] # KHMER SYMBOL LEK ATTAK PRAM-PII
-AA57 ; [.15D1.0020.0002.AA57][.0000.015E.0002.AA57] # CHAM DIGIT SEVEN
-1B57 ; [.15D1.0020.0002.1B57][.0000.015F.0002.1B57] # BALINESE DIGIT SEVEN
-A9D7 ; [.15D1.0020.0002.A9D7][.0000.0160.0002.A9D7] # JAVANESE DIGIT SEVEN
-1BB7 ; [.15D1.0020.0002.1BB7][.0000.0161.0002.1BB7] # SUNDANESE DIGIT SEVEN
-1817 ; [.15D1.0020.0002.1817][.0000.0162.0002.1817] # MONGOLIAN DIGIT SEVEN
-1C57 ; [.15D1.0020.0002.1C57][.0000.0163.0002.1C57] # OL CHIKI DIGIT SEVEN
-A627 ; [.15D1.0020.0002.A627][.0000.0164.0002.A627] # VAI DIGIT SEVEN
-110F7 ; [.15D1.0020.0002.110F7][.0000.0165.0002.110F7] # SORA SOMPENG DIGIT SEVEN
-3027 ; [.15D1.0020.0002.3027][.0000.0166.0002.3027] # HANGZHOU NUMERAL SEVEN
-1010D ; [.15D1.0020.0002.1010D][.0000.0167.0002.1010D] # AEGEAN NUMBER SEVEN
-12405 ; [.15D1.0020.0002.12405][.0000.016C.0002.12405] # CUNEIFORM NUMERIC SIGN SEVEN ASH
-1240C ; [.15D1.0020.0002.1240C][.0000.016C.0002.1240C] # CUNEIFORM NUMERIC SIGN SEVEN DISH
-12412 ; [.15D1.0020.0002.12412][.0000.016C.0002.12412] # CUNEIFORM NUMERIC SIGN SEVEN U
-1241B ; [.15D1.0020.0002.1241B][.0000.016C.0002.1241B] # CUNEIFORM NUMERIC SIGN SEVEN GESH2
-12429 ; [.15D1.0020.0002.12429][.0000.016C.0002.12429] # CUNEIFORM NUMERIC SIGN SEVEN SHAR2
-12441 ; [.15D1.0020.0002.12441][.0000.016C.0002.12441] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3
-12442 ; [.15D1.0020.0002.12442][.0000.016C.0002.12442] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A
-12443 ; [.15D1.0020.0002.12443][.0000.016C.0002.12443] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B
-111D7 ; [.15D1.0020.0002.111D7][.0000.0172.0002.111D7] # SHARADA DIGIT SEVEN
-116C7 ; [.15D1.0020.0002.116C7][.0000.0173.0002.116C7] # TAKRI DIGIT SEVEN
-1106D ; [.15D1.0020.0002.1106D][.0000.0174.0002.1106D] # BRAHMI DIGIT SEVEN
-11058 ; [.15D1.0020.0002.11058][.0000.0175.0002.11058] # BRAHMI NUMBER SEVEN
-1D366 ; [.15D1.0020.0002.1D366][.0000.0177.0002.1D366] # COUNTING ROD UNIT DIGIT SEVEN
-324E ; [.15D1.0020.0006.324E][.15CA.0020.0006.324E] # CIRCLED NUMBER SEVENTY ON BLACK SQUARE
-215E ; [.15D1.0020.001E.215E][*05AC.0020.001E.215E][.15D2.0020.001F.215E] # VULGAR FRACTION SEVEN EIGHTHS
-33E6 ; [.15D1.0020.0004.33E6][.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
-32C6 ; [.15D1.0020.0004.32C6][.FB40.0020.0004.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
-335F ; [.15D1.0020.0004.335F][.FB40.0020.0004.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
-0038 ; [.15D2.0020.0002.0038] # DIGIT EIGHT
-FF18 ; [.15D2.0020.0003.FF18] # FULLWIDTH DIGIT EIGHT
-247B ; [*02FB.0020.0004.247B][.15D2.0020.0004.247B][*02FC.0020.001F.247B] # PARENTHESIZED DIGIT EIGHT
-248F ; [.15D2.0020.0004.248F][*0273.0020.0004.248F] # DIGIT EIGHT FULL STOP
-1F109 ; [.15D2.0020.0004.1F109][*0221.0020.0004.1F109] # DIGIT EIGHT COMMA
-1D7D6 ; [.15D2.0020.0005.1D7D6] # MATHEMATICAL BOLD DIGIT EIGHT
-1D7E0 ; [.15D2.0020.0005.1D7E0] # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
-1D7EA ; [.15D2.0020.0005.1D7EA] # MATHEMATICAL SANS-SERIF DIGIT EIGHT
-1D7F4 ; [.15D2.0020.0005.1D7F4] # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
-1D7FE ; [.15D2.0020.0005.1D7FE] # MATHEMATICAL MONOSPACE DIGIT EIGHT
-2467 ; [.15D2.0020.0006.2467] # CIRCLED DIGIT EIGHT
-24FC ; [.15D2.0020.0006.24FC] # DOUBLE CIRCLED DIGIT EIGHT
-277D ; [.15D2.0020.0006.277D] # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
-2787 ; [.15D2.0020.0006.2787] # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
-2791 ; [.15D2.0020.0006.2791] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
-2078 ; [.15D2.0020.0014.2078] # SUPERSCRIPT EIGHT
-2088 ; [.15D2.0020.0015.2088] # SUBSCRIPT EIGHT
-0668 ; [.15D2.0020.0002.0668][.0000.013F.0002.0668] # ARABIC-INDIC DIGIT EIGHT
-06F8 ; [.15D2.0020.0002.06F8][.0000.0140.0002.06F8] # EXTENDED ARABIC-INDIC DIGIT EIGHT
-10E67 ; [.15D2.0020.0002.10E67][.0000.0141.0002.10E67] # RUMI DIGIT EIGHT
-07C8 ; [.15D2.0020.0002.07C8][.0000.0142.0002.07C8] # NKO DIGIT EIGHT
-1370 ; [.15D2.0020.0002.1370][.0000.0143.0002.1370] # ETHIOPIC DIGIT EIGHT
-104A8 ; [.15D2.0020.0002.104A8][.0000.0144.0002.104A8] # OSMANYA DIGIT EIGHT
-096E ; [.15D2.0020.0002.096E][.0000.0145.0002.096E] # DEVANAGARI DIGIT EIGHT
-09EE ; [.15D2.0020.0002.09EE][.0000.0146.0002.09EE] # BENGALI DIGIT EIGHT
-0A6E ; [.15D2.0020.0002.0A6E][.0000.0147.0002.0A6E] # GURMUKHI DIGIT EIGHT
-0AEE ; [.15D2.0020.0002.0AEE][.0000.0148.0002.0AEE] # GUJARATI DIGIT EIGHT
-0B6E ; [.15D2.0020.0002.0B6E][.0000.0149.0002.0B6E] # ORIYA DIGIT EIGHT
-0BEE ; [.15D2.0020.0002.0BEE][.0000.014A.0002.0BEE] # TAMIL DIGIT EIGHT
-0C6E ; [.15D2.0020.0002.0C6E][.0000.014B.0002.0C6E] # TELUGU DIGIT EIGHT
-0CEE ; [.15D2.0020.0002.0CEE][.0000.014C.0002.0CEE] # KANNADA DIGIT EIGHT
-0D6E ; [.15D2.0020.0002.0D6E][.0000.014D.0002.0D6E] # MALAYALAM DIGIT EIGHT
-ABF8 ; [.15D2.0020.0002.ABF8][.0000.014E.0002.ABF8] # MEETEI MAYEK DIGIT EIGHT
-A8D8 ; [.15D2.0020.0002.A8D8][.0000.014F.0002.A8D8] # SAURASHTRA DIGIT EIGHT
-194E ; [.15D2.0020.0002.194E][.0000.0150.0002.194E] # LIMBU DIGIT EIGHT
-19D8 ; [.15D2.0020.0002.19D8][.0000.0151.0002.19D8] # NEW TAI LUE DIGIT EIGHT
-1A88 ; [.15D2.0020.0002.1A88][.0000.0152.0002.1A88] # TAI THAM HORA DIGIT EIGHT
-1A98 ; [.15D2.0020.0002.1A98][.0000.0153.0002.1A98] # TAI THAM THAM DIGIT EIGHT
-0E58 ; [.15D2.0020.0002.0E58][.0000.0154.0002.0E58] # THAI DIGIT EIGHT
-0ED8 ; [.15D2.0020.0002.0ED8][.0000.0155.0002.0ED8] # LAO DIGIT EIGHT
-0F28 ; [.15D2.0020.0002.0F28][.0000.0156.0002.0F28] # TIBETAN DIGIT EIGHT
-0F31 ; [.15D2.0020.0004.0F31][.0000.0156.0004.0F31] # TIBETAN DIGIT HALF EIGHT
-1C48 ; [.15D2.0020.0002.1C48][.0000.0157.0002.1C48] # LEPCHA DIGIT EIGHT
-A908 ; [.15D2.0020.0002.A908][.0000.0158.0002.A908] # KAYAH LI DIGIT EIGHT
-1048 ; [.15D2.0020.0002.1048][.0000.0159.0002.1048] # MYANMAR DIGIT EIGHT
-1098 ; [.15D2.0020.0002.1098][.0000.015A.0002.1098] # MYANMAR SHAN DIGIT EIGHT
-1113E ; [.15D2.0020.0002.1113E][.0000.015B.0002.1113E] # CHAKMA DIGIT EIGHT
-17E8 ; [.15D2.0020.0002.17E8][.0000.015C.0002.17E8] # KHMER DIGIT EIGHT
-17F8 ; [.15D2.0020.0002.17F8][.0000.015D.0002.17F8] # KHMER SYMBOL LEK ATTAK PRAM-BEI
-AA58 ; [.15D2.0020.0002.AA58][.0000.015E.0002.AA58] # CHAM DIGIT EIGHT
-1B58 ; [.15D2.0020.0002.1B58][.0000.015F.0002.1B58] # BALINESE DIGIT EIGHT
-A9D8 ; [.15D2.0020.0002.A9D8][.0000.0160.0002.A9D8] # JAVANESE DIGIT EIGHT
-1BB8 ; [.15D2.0020.0002.1BB8][.0000.0161.0002.1BB8] # SUNDANESE DIGIT EIGHT
-1818 ; [.15D2.0020.0002.1818][.0000.0162.0002.1818] # MONGOLIAN DIGIT EIGHT
-1C58 ; [.15D2.0020.0002.1C58][.0000.0163.0002.1C58] # OL CHIKI DIGIT EIGHT
-A628 ; [.15D2.0020.0002.A628][.0000.0164.0002.A628] # VAI DIGIT EIGHT
-110F8 ; [.15D2.0020.0002.110F8][.0000.0165.0002.110F8] # SORA SOMPENG DIGIT EIGHT
-3028 ; [.15D2.0020.0002.3028][.0000.0166.0002.3028] # HANGZHOU NUMERAL EIGHT
-1010E ; [.15D2.0020.0002.1010E][.0000.0167.0002.1010E] # AEGEAN NUMBER EIGHT
-12406 ; [.15D2.0020.0002.12406][.0000.016C.0002.12406] # CUNEIFORM NUMERIC SIGN EIGHT ASH
-1240D ; [.15D2.0020.0002.1240D][.0000.016C.0002.1240D] # CUNEIFORM NUMERIC SIGN EIGHT DISH
-12413 ; [.15D2.0020.0002.12413][.0000.016C.0002.12413] # CUNEIFORM NUMERIC SIGN EIGHT U
-1241C ; [.15D2.0020.0002.1241C][.0000.016C.0002.1241C] # CUNEIFORM NUMERIC SIGN EIGHT GESH2
-1242A ; [.15D2.0020.0002.1242A][.0000.016C.0002.1242A] # CUNEIFORM NUMERIC SIGN EIGHT SHAR2
-12444 ; [.15D2.0020.0002.12444][.0000.016C.0002.12444] # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU
-12445 ; [.15D2.0020.0002.12445][.0000.016C.0002.12445] # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3
-111D8 ; [.15D2.0020.0002.111D8][.0000.0172.0002.111D8] # SHARADA DIGIT EIGHT
-116C8 ; [.15D2.0020.0002.116C8][.0000.0173.0002.116C8] # TAKRI DIGIT EIGHT
-1106E ; [.15D2.0020.0002.1106E][.0000.0174.0002.1106E] # BRAHMI DIGIT EIGHT
-11059 ; [.15D2.0020.0002.11059][.0000.0175.0002.11059] # BRAHMI NUMBER EIGHT
-1D367 ; [.15D2.0020.0002.1D367][.0000.0177.0002.1D367] # COUNTING ROD UNIT DIGIT EIGHT
-324F ; [.15D2.0020.0006.324F][.15CA.0020.0006.324F] # CIRCLED NUMBER EIGHTY ON BLACK SQUARE
-33E7 ; [.15D2.0020.0004.33E7][.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
-32C7 ; [.15D2.0020.0004.32C7][.FB40.0020.0004.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
-3360 ; [.15D2.0020.0004.3360][.FB40.0020.0004.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
-0039 ; [.15D3.0020.0002.0039] # DIGIT NINE
-FF19 ; [.15D3.0020.0003.FF19] # FULLWIDTH DIGIT NINE
-247C ; [*02FB.0020.0004.247C][.15D3.0020.0004.247C][*02FC.0020.001F.247C] # PARENTHESIZED DIGIT NINE
-2490 ; [.15D3.0020.0004.2490][*0273.0020.0004.2490] # DIGIT NINE FULL STOP
-1F10A ; [.15D3.0020.0004.1F10A][*0221.0020.0004.1F10A] # DIGIT NINE COMMA
-1D7D7 ; [.15D3.0020.0005.1D7D7] # MATHEMATICAL BOLD DIGIT NINE
-1D7E1 ; [.15D3.0020.0005.1D7E1] # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
-1D7EB ; [.15D3.0020.0005.1D7EB] # MATHEMATICAL SANS-SERIF DIGIT NINE
-1D7F5 ; [.15D3.0020.0005.1D7F5] # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
-1D7FF ; [.15D3.0020.0005.1D7FF] # MATHEMATICAL MONOSPACE DIGIT NINE
-2468 ; [.15D3.0020.0006.2468] # CIRCLED DIGIT NINE
-24FD ; [.15D3.0020.0006.24FD] # DOUBLE CIRCLED DIGIT NINE
-277E ; [.15D3.0020.0006.277E] # DINGBAT NEGATIVE CIRCLED DIGIT NINE
-2788 ; [.15D3.0020.0006.2788] # DINGBAT CIRCLED SANS-SERIF DIGIT NINE
-2792 ; [.15D3.0020.0006.2792] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
-2079 ; [.15D3.0020.0014.2079] # SUPERSCRIPT NINE
-2089 ; [.15D3.0020.0015.2089] # SUBSCRIPT NINE
-0669 ; [.15D3.0020.0002.0669][.0000.013F.0002.0669] # ARABIC-INDIC DIGIT NINE
-06F9 ; [.15D3.0020.0002.06F9][.0000.0140.0002.06F9] # EXTENDED ARABIC-INDIC DIGIT NINE
-10E68 ; [.15D3.0020.0002.10E68][.0000.0141.0002.10E68] # RUMI DIGIT NINE
-07C9 ; [.15D3.0020.0002.07C9][.0000.0142.0002.07C9] # NKO DIGIT NINE
-1371 ; [.15D3.0020.0002.1371][.0000.0143.0002.1371] # ETHIOPIC DIGIT NINE
-104A9 ; [.15D3.0020.0002.104A9][.0000.0144.0002.104A9] # OSMANYA DIGIT NINE
-096F ; [.15D3.0020.0002.096F][.0000.0145.0002.096F] # DEVANAGARI DIGIT NINE
-09EF ; [.15D3.0020.0002.09EF][.0000.0146.0002.09EF] # BENGALI DIGIT NINE
-0A6F ; [.15D3.0020.0002.0A6F][.0000.0147.0002.0A6F] # GURMUKHI DIGIT NINE
-0AEF ; [.15D3.0020.0002.0AEF][.0000.0148.0002.0AEF] # GUJARATI DIGIT NINE
-0B6F ; [.15D3.0020.0002.0B6F][.0000.0149.0002.0B6F] # ORIYA DIGIT NINE
-0BEF ; [.15D3.0020.0002.0BEF][.0000.014A.0002.0BEF] # TAMIL DIGIT NINE
-0C6F ; [.15D3.0020.0002.0C6F][.0000.014B.0002.0C6F] # TELUGU DIGIT NINE
-0CEF ; [.15D3.0020.0002.0CEF][.0000.014C.0002.0CEF] # KANNADA DIGIT NINE
-0D6F ; [.15D3.0020.0002.0D6F][.0000.014D.0002.0D6F] # MALAYALAM DIGIT NINE
-ABF9 ; [.15D3.0020.0002.ABF9][.0000.014E.0002.ABF9] # MEETEI MAYEK DIGIT NINE
-A8D9 ; [.15D3.0020.0002.A8D9][.0000.014F.0002.A8D9] # SAURASHTRA DIGIT NINE
-194F ; [.15D3.0020.0002.194F][.0000.0150.0002.194F] # LIMBU DIGIT NINE
-19D9 ; [.15D3.0020.0002.19D9][.0000.0151.0002.19D9] # NEW TAI LUE DIGIT NINE
-1A89 ; [.15D3.0020.0002.1A89][.0000.0152.0002.1A89] # TAI THAM HORA DIGIT NINE
-1A99 ; [.15D3.0020.0002.1A99][.0000.0153.0002.1A99] # TAI THAM THAM DIGIT NINE
-0E59 ; [.15D3.0020.0002.0E59][.0000.0154.0002.0E59] # THAI DIGIT NINE
-0ED9 ; [.15D3.0020.0002.0ED9][.0000.0155.0002.0ED9] # LAO DIGIT NINE
-0F29 ; [.15D3.0020.0002.0F29][.0000.0156.0002.0F29] # TIBETAN DIGIT NINE
-0F32 ; [.15D3.0020.0004.0F32][.0000.0156.0004.0F32] # TIBETAN DIGIT HALF NINE
-1C49 ; [.15D3.0020.0002.1C49][.0000.0157.0002.1C49] # LEPCHA DIGIT NINE
-A909 ; [.15D3.0020.0002.A909][.0000.0158.0002.A909] # KAYAH LI DIGIT NINE
-1049 ; [.15D3.0020.0002.1049][.0000.0159.0002.1049] # MYANMAR DIGIT NINE
-1099 ; [.15D3.0020.0002.1099][.0000.015A.0002.1099] # MYANMAR SHAN DIGIT NINE
-1113F ; [.15D3.0020.0002.1113F][.0000.015B.0002.1113F] # CHAKMA DIGIT NINE
-17E9 ; [.15D3.0020.0002.17E9][.0000.015C.0002.17E9] # KHMER DIGIT NINE
-17F9 ; [.15D3.0020.0002.17F9][.0000.015D.0002.17F9] # KHMER SYMBOL LEK ATTAK PRAM-BUON
-AA59 ; [.15D3.0020.0002.AA59][.0000.015E.0002.AA59] # CHAM DIGIT NINE
-1B59 ; [.15D3.0020.0002.1B59][.0000.015F.0002.1B59] # BALINESE DIGIT NINE
-A9D9 ; [.15D3.0020.0002.A9D9][.0000.0160.0002.A9D9] # JAVANESE DIGIT NINE
-1BB9 ; [.15D3.0020.0002.1BB9][.0000.0161.0002.1BB9] # SUNDANESE DIGIT NINE
-1819 ; [.15D3.0020.0002.1819][.0000.0162.0002.1819] # MONGOLIAN DIGIT NINE
-1C59 ; [.15D3.0020.0002.1C59][.0000.0163.0002.1C59] # OL CHIKI DIGIT NINE
-A629 ; [.15D3.0020.0002.A629][.0000.0164.0002.A629] # VAI DIGIT NINE
-110F9 ; [.15D3.0020.0002.110F9][.0000.0165.0002.110F9] # SORA SOMPENG DIGIT NINE
-3029 ; [.15D3.0020.0002.3029][.0000.0166.0002.3029] # HANGZHOU NUMERAL NINE
-1010F ; [.15D3.0020.0002.1010F][.0000.0167.0002.1010F] # AEGEAN NUMBER NINE
-12407 ; [.15D3.0020.0002.12407][.0000.016C.0002.12407] # CUNEIFORM NUMERIC SIGN NINE ASH
-1240E ; [.15D3.0020.0002.1240E][.0000.016C.0002.1240E] # CUNEIFORM NUMERIC SIGN NINE DISH
-12414 ; [.15D3.0020.0002.12414][.0000.016C.0002.12414] # CUNEIFORM NUMERIC SIGN NINE U
-1241D ; [.15D3.0020.0002.1241D][.0000.016C.0002.1241D] # CUNEIFORM NUMERIC SIGN NINE GESH2
-1242B ; [.15D3.0020.0002.1242B][.0000.016C.0002.1242B] # CUNEIFORM NUMERIC SIGN NINE SHAR2
-12446 ; [.15D3.0020.0002.12446][.0000.016C.0002.12446] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU
-12447 ; [.15D3.0020.0002.12447][.0000.016C.0002.12447] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3
-12448 ; [.15D3.0020.0002.12448][.0000.016C.0002.12448] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4
-12449 ; [.15D3.0020.0002.12449][.0000.016C.0002.12449] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A
-111D9 ; [.15D3.0020.0002.111D9][.0000.0172.0002.111D9] # SHARADA DIGIT NINE
-116C9 ; [.15D3.0020.0002.116C9][.0000.0173.0002.116C9] # TAKRI DIGIT NINE
-1106F ; [.15D3.0020.0002.1106F][.0000.0174.0002.1106F] # BRAHMI DIGIT NINE
-1105A ; [.15D3.0020.0002.1105A][.0000.0175.0002.1105A] # BRAHMI NUMBER NINE
-1D368 ; [.15D3.0020.0002.1D368][.0000.0177.0002.1D368] # COUNTING ROD UNIT DIGIT NINE
-33E8 ; [.15D3.0020.0004.33E8][.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
-32C8 ; [.15D3.0020.0004.32C8][.FB40.0020.0004.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
-3361 ; [.15D3.0020.0004.3361][.FB40.0020.0004.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
-0061 ; [.15D4.0020.0002.0061] # LATIN SMALL LETTER A
-FF41 ; [.15D4.0020.0003.FF41] # FULLWIDTH LATIN SMALL LETTER A
-0363 ; [.15D4.0020.0004.0363] # COMBINING LATIN SMALL LETTER A
-249C ; [*02FB.0020.0004.249C][.15D4.0020.0004.249C][*02FC.0020.001F.249C] # PARENTHESIZED LATIN SMALL LETTER A
-1D41A ; [.15D4.0020.0005.1D41A] # MATHEMATICAL BOLD SMALL A
-1D44E ; [.15D4.0020.0005.1D44E] # MATHEMATICAL ITALIC SMALL A
-1D482 ; [.15D4.0020.0005.1D482] # MATHEMATICAL BOLD ITALIC SMALL A
-1D4B6 ; [.15D4.0020.0005.1D4B6] # MATHEMATICAL SCRIPT SMALL A
-1D4EA ; [.15D4.0020.0005.1D4EA] # MATHEMATICAL BOLD SCRIPT SMALL A
-1D51E ; [.15D4.0020.0005.1D51E] # MATHEMATICAL FRAKTUR SMALL A
-1D552 ; [.15D4.0020.0005.1D552] # MATHEMATICAL DOUBLE-STRUCK SMALL A
-1D586 ; [.15D4.0020.0005.1D586] # MATHEMATICAL BOLD FRAKTUR SMALL A
-1D5BA ; [.15D4.0020.0005.1D5BA] # MATHEMATICAL SANS-SERIF SMALL A
-1D5EE ; [.15D4.0020.0005.1D5EE] # MATHEMATICAL SANS-SERIF BOLD SMALL A
-1D622 ; [.15D4.0020.0005.1D622] # MATHEMATICAL SANS-SERIF ITALIC SMALL A
-1D656 ; [.15D4.0020.0005.1D656] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
-1D68A ; [.15D4.0020.0005.1D68A] # MATHEMATICAL MONOSPACE SMALL A
-24D0 ; [.15D4.0020.0006.24D0] # CIRCLED LATIN SMALL LETTER A
-0041 ; [.15D4.0020.0008.0041] # LATIN CAPITAL LETTER A
-FF21 ; [.15D4.0020.0009.FF21] # FULLWIDTH LATIN CAPITAL LETTER A
-1F110 ; [*02FB.0020.0004.1F110][.15D4.0020.000A.1F110][*02FC.0020.001F.1F110] # PARENTHESIZED LATIN CAPITAL LETTER A
-1F1E6 ; [.15D4.0020.000A.1F1E6] # REGIONAL INDICATOR SYMBOL LETTER A
-1D400 ; [.15D4.0020.000B.1D400] # MATHEMATICAL BOLD CAPITAL A
-1D434 ; [.15D4.0020.000B.1D434] # MATHEMATICAL ITALIC CAPITAL A
-1D468 ; [.15D4.0020.000B.1D468] # MATHEMATICAL BOLD ITALIC CAPITAL A
-1D49C ; [.15D4.0020.000B.1D49C] # MATHEMATICAL SCRIPT CAPITAL A
-1D4D0 ; [.15D4.0020.000B.1D4D0] # MATHEMATICAL BOLD SCRIPT CAPITAL A
-1D504 ; [.15D4.0020.000B.1D504] # MATHEMATICAL FRAKTUR CAPITAL A
-1D538 ; [.15D4.0020.000B.1D538] # MATHEMATICAL DOUBLE-STRUCK CAPITAL A
-1D56C ; [.15D4.0020.000B.1D56C] # MATHEMATICAL BOLD FRAKTUR CAPITAL A
-1D5A0 ; [.15D4.0020.000B.1D5A0] # MATHEMATICAL SANS-SERIF CAPITAL A
-1D5D4 ; [.15D4.0020.000B.1D5D4] # MATHEMATICAL SANS-SERIF BOLD CAPITAL A
-1D608 ; [.15D4.0020.000B.1D608] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
-1D63C ; [.15D4.0020.000B.1D63C] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
-1D670 ; [.15D4.0020.000B.1D670] # MATHEMATICAL MONOSPACE CAPITAL A
-24B6 ; [.15D4.0020.000C.24B6] # CIRCLED LATIN CAPITAL LETTER A
-1F150 ; [.15D4.0020.000C.1F150] # NEGATIVE CIRCLED LATIN CAPITAL LETTER A
-00AA ; [.15D4.0020.0014.00AA] # FEMININE ORDINAL INDICATOR
-1D43 ; [.15D4.0020.0014.1D43] # MODIFIER LETTER SMALL A
-2090 ; [.15D4.0020.0015.2090] # LATIN SUBSCRIPT SMALL LETTER A
-1D2C ; [.15D4.0020.001D.1D2C] # MODIFIER LETTER CAPITAL A
-1F130 ; [.15D4.0020.001D.1F130] # SQUARED LATIN CAPITAL LETTER A
-1F170 ; [.15D4.0020.001D.1F170] # NEGATIVE SQUARED LATIN CAPITAL LETTER A
-00E1 ; [.15D4.0020.0002.0061][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH ACUTE
-00C1 ; [.15D4.0020.0008.0041][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH ACUTE
-00E0 ; [.15D4.0020.0002.0061][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH GRAVE
-00C0 ; [.15D4.0020.0008.0041][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH GRAVE
-0103 ; [.15D4.0020.0002.0061][.0000.0037.0002.0306] # LATIN SMALL LETTER A WITH BREVE
-0102 ; [.15D4.0020.0008.0041][.0000.0037.0002.0306] # LATIN CAPITAL LETTER A WITH BREVE
-1EAF ; [.15D4.0020.0002.0061][.0000.0037.0002.0306][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH BREVE AND ACUTE
-1EAE ; [.15D4.0020.0008.0041][.0000.0037.0002.0306][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-1EB1 ; [.15D4.0020.0002.0061][.0000.0037.0002.0306][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH BREVE AND GRAVE
-1EB0 ; [.15D4.0020.0008.0041][.0000.0037.0002.0306][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-1EB5 ; [.15D4.0020.0002.0061][.0000.0037.0002.0306][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH BREVE AND TILDE
-1EB4 ; [.15D4.0020.0008.0041][.0000.0037.0002.0306][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-1EB3 ; [.15D4.0020.0002.0061][.0000.0037.0002.0306][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
-1EB2 ; [.15D4.0020.0008.0041][.0000.0037.0002.0306][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-00E2 ; [.15D4.0020.0002.0061][.0000.003C.0002.0302] # LATIN SMALL LETTER A WITH CIRCUMFLEX
-00C2 ; [.15D4.0020.0008.0041][.0000.003C.0002.0302] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-1EA5 ; [.15D4.0020.0002.0061][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA4 ; [.15D4.0020.0008.0041][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA7 ; [.15D4.0020.0002.0061][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA6 ; [.15D4.0020.0008.0041][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EAB ; [.15D4.0020.0002.0061][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAA ; [.15D4.0020.0008.0041][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-1EA9 ; [.15D4.0020.0002.0061][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EA8 ; [.15D4.0020.0008.0041][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-01CE ; [.15D4.0020.0002.0061][.0000.0041.0002.030C] # LATIN SMALL LETTER A WITH CARON
-01CD ; [.15D4.0020.0008.0041][.0000.0041.0002.030C] # LATIN CAPITAL LETTER A WITH CARON
-00E5 ; [.15D4.0020.0002.0061][.0000.0043.0002.030A] # LATIN SMALL LETTER A WITH RING ABOVE
-00C5 ; [.15D4.0020.0008.0041][.0000.0043.0002.030A] # LATIN CAPITAL LETTER A WITH RING ABOVE
-212B ; [.15D4.0020.0008.0041][.0000.0043.0002.030A] # ANGSTROM SIGN
-01FB ; [.15D4.0020.0002.0061][.0000.0043.0002.030A][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FA ; [.15D4.0020.0008.0041][.0000.0043.0002.030A][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-00E4 ; [.15D4.0020.0002.0061][.0000.0047.0002.0308] # LATIN SMALL LETTER A WITH DIAERESIS
-00C4 ; [.15D4.0020.0008.0041][.0000.0047.0002.0308] # LATIN CAPITAL LETTER A WITH DIAERESIS
-01DF ; [.15D4.0020.0002.0061][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01DE ; [.15D4.0020.0008.0041][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-00E3 ; [.15D4.0020.0002.0061][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH TILDE
-00C3 ; [.15D4.0020.0008.0041][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH TILDE
-0227 ; [.15D4.0020.0002.0061][.0000.0052.0002.0307] # LATIN SMALL LETTER A WITH DOT ABOVE
-0226 ; [.15D4.0020.0008.0041][.0000.0052.0002.0307] # LATIN CAPITAL LETTER A WITH DOT ABOVE
-01E1 ; [.15D4.0020.0002.0061][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
-01E0 ; [.15D4.0020.0008.0041][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
-0105 ; [.15D4.0020.0002.0061][.0000.0059.0002.0328] # LATIN SMALL LETTER A WITH OGONEK
-0104 ; [.15D4.0020.0008.0041][.0000.0059.0002.0328] # LATIN CAPITAL LETTER A WITH OGONEK
-0101 ; [.15D4.0020.0002.0061][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH MACRON
-0100 ; [.15D4.0020.0008.0041][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH MACRON
-1EA3 ; [.15D4.0020.0002.0061][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH HOOK ABOVE
-1EA2 ; [.15D4.0020.0008.0041][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH HOOK ABOVE
-0201 ; [.15D4.0020.0002.0061][.0000.0065.0002.030F] # LATIN SMALL LETTER A WITH DOUBLE GRAVE
-0200 ; [.15D4.0020.0008.0041][.0000.0065.0002.030F] # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
-0203 ; [.15D4.0020.0002.0061][.0000.0067.0002.0311] # LATIN SMALL LETTER A WITH INVERTED BREVE
-0202 ; [.15D4.0020.0008.0041][.0000.0067.0002.0311] # LATIN CAPITAL LETTER A WITH INVERTED BREVE
-1EA1 ; [.15D4.0020.0002.0061][.0000.0070.0002.0323] # LATIN SMALL LETTER A WITH DOT BELOW
-1EA0 ; [.15D4.0020.0008.0041][.0000.0070.0002.0323] # LATIN CAPITAL LETTER A WITH DOT BELOW
-1EB7 ; [.15D4.0020.0002.0061][.0000.0070.0002.0323][.0000.0037.0002.0306] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
-1EB6 ; [.15D4.0020.0008.0041][.0000.0070.0002.0323][.0000.0037.0002.0306] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-1EAD ; [.15D4.0020.0002.0061][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAC ; [.15D4.0020.0008.0041][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1E01 ; [.15D4.0020.0002.0061][.0000.0076.0002.0325] # LATIN SMALL LETTER A WITH RING BELOW
-1E00 ; [.15D4.0020.0008.0041][.0000.0076.0002.0325] # LATIN CAPITAL LETTER A WITH RING BELOW
-1DD3 ; [.15D4.0020.0004.1DD3][.0000.0139.0004.1DD3] # COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE
-A733 ; [.15D4.0020.0004.A733][.15D4.0020.0004.A733] # LATIN SMALL LETTER AA
-A732 ; [.15D4.0020.000A.A732][.15D4.0020.000A.A732] # LATIN CAPITAL LETTER AA
-1F18E ; [.15D4.0020.001D.1F18E][.15EA.0020.001D.1F18E] # NEGATIVE SQUARED AB
-2100 ; [.15D4.0020.0004.2100][*0372.0020.0004.2100][.1602.0020.001F.2100] # ACCOUNT OF
-00E6 ; [.15D4.0020.0004.00E6][.0000.0139.0004.00E6][.1631.0020.001F.00E6] # LATIN SMALL LETTER AE
-1DD4 ; [.15D4.0020.0004.1DD4][.0000.0139.0004.1DD4][.1631.0020.001F.1DD4] # COMBINING LATIN SMALL LETTER AE
-00C6 ; [.15D4.0020.000A.00C6][.0000.0139.0004.00C6][.1631.0020.001F.00C6] # LATIN CAPITAL LETTER AE
-1D2D ; [.15D4.0020.0014.1D2D][.0000.0139.0014.1D2D][.1631.0020.001F.1D2D] # MODIFIER LETTER CAPITAL AE
-01FD ; [.15D4.0020.0004.01FD][.0000.0139.0004.01FD][.1631.0020.001F.01FD][.0000.0032.0002.01FD] # LATIN SMALL LETTER AE WITH ACUTE
-01FC ; [.15D4.0020.000A.01FC][.0000.0139.0004.01FC][.1631.0020.001F.01FC][.0000.0032.0002.01FC] # LATIN CAPITAL LETTER AE WITH ACUTE
-01E3 ; [.15D4.0020.0004.01E3][.0000.0139.0004.01E3][.1631.0020.001F.01E3][.0000.005B.0002.01E3] # LATIN SMALL LETTER AE WITH MACRON
-01E2 ; [.15D4.0020.000A.01E2][.0000.0139.0004.01E2][.1631.0020.001F.01E2][.0000.005B.0002.01E2] # LATIN CAPITAL LETTER AE WITH MACRON
-33C2 ; [.15D4.0020.001C.33C2][*0273.0020.001C.33C2][.1726.0020.001F.33C2][*0273.0020.001F.33C2] # SQUARE AM
-33DF ; [.15D4.0020.001D.33DF][*05AB.0020.001C.33DF][.1726.0020.001F.33DF] # SQUARE A OVER M
-1DD5 ; [.15D4.0020.0004.1DD5][.1756.0020.0004.1DD5] # COMBINING LATIN SMALL LETTER AO
-A735 ; [.15D4.0020.0004.A735][.1756.0020.0004.A735] # LATIN SMALL LETTER AO
-A734 ; [.15D4.0020.000A.A734][.1756.0020.000A.A734] # LATIN CAPITAL LETTER AO
-2101 ; [.15D4.0020.0004.2101][*0372.0020.0004.2101][.17D8.0020.001F.2101] # ADDRESSED TO THE SUBJECT
-214D ; [.15D4.0020.000A.214D][*0372.0020.0004.214D][.17D8.0020.001F.214D] # AKTIESELSKAB
-A737 ; [.15D4.0020.0004.A737][.181B.0020.0004.A737] # LATIN SMALL LETTER AU
-A736 ; [.15D4.0020.000A.A736][.181B.0020.000A.A736] # LATIN CAPITAL LETTER AU
-3373 ; [.15D4.0020.001D.3373][.181B.0020.001D.3373] # SQUARE AU
-1DD6 ; [.15D4.0020.0004.1DD6][.1844.0020.0004.1DD6] # COMBINING LATIN SMALL LETTER AV
-A739 ; [.15D4.0020.0004.A739][.1844.0020.0004.A739] # LATIN SMALL LETTER AV
-A738 ; [.15D4.0020.000A.A738][.1844.0020.000A.A738] # LATIN CAPITAL LETTER AV
-A73B ; [.15D4.0020.0004.A73B][.0000.0139.0004.A73B][.1844.0020.001F.A73B] # LATIN SMALL LETTER AV WITH HORIZONTAL BAR
-A73A ; [.15D4.0020.000A.A73A][.0000.0139.0004.A73A][.1844.0020.001F.A73A] # LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
-A73D ; [.15D4.0020.0004.A73D][.1865.0020.0004.A73D] # LATIN SMALL LETTER AY
-A73C ; [.15D4.0020.000A.A73C][.1865.0020.000A.A73C] # LATIN CAPITAL LETTER AY
-1E9A ; [.15D4.0020.0004.1E9A][.18D6.0020.0004.1E9A] # LATIN SMALL LETTER A WITH RIGHT HALF RING
-1D00 ; [.15D8.0020.0002.1D00] # LATIN LETTER SMALL CAPITAL A
-2C65 ; [.15D9.0020.0002.2C65] # LATIN SMALL LETTER A WITH STROKE
-023A ; [.15D9.0020.0008.023A] # LATIN CAPITAL LETTER A WITH STROKE
-1D8F ; [.15DA.0020.0002.1D8F] # LATIN SMALL LETTER A WITH RETROFLEX HOOK
-1D01 ; [.15DB.0020.0002.1D01] # LATIN LETTER SMALL CAPITAL AE
-1D02 ; [.15DC.0020.0002.1D02] # LATIN SMALL LETTER TURNED AE
-1D46 ; [.15DC.0020.0014.1D46] # MODIFIER LETTER SMALL TURNED AE
-0250 ; [.15DD.0020.0002.0250] # LATIN SMALL LETTER TURNED A
-2C6F ; [.15DD.0020.0008.2C6F] # LATIN CAPITAL LETTER TURNED A
-1D44 ; [.15DD.0020.0014.1D44] # MODIFIER LETTER SMALL TURNED A
-0251 ; [.15E1.0020.0002.0251] # LATIN SMALL LETTER ALPHA
-2C6D ; [.15E1.0020.0008.2C6D] # LATIN CAPITAL LETTER ALPHA
-1D45 ; [.15E1.0020.0014.1D45] # MODIFIER LETTER SMALL ALPHA
-1D90 ; [.15E5.0020.0002.1D90] # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK
-0252 ; [.15E6.0020.0002.0252] # LATIN SMALL LETTER TURNED ALPHA
-2C70 ; [.15E6.0020.0008.2C70] # LATIN CAPITAL LETTER TURNED ALPHA
-1D9B ; [.15E6.0020.0014.1D9B] # MODIFIER LETTER SMALL TURNED ALPHA
-0062 ; [.15EA.0020.0002.0062] # LATIN SMALL LETTER B
-FF42 ; [.15EA.0020.0003.FF42] # FULLWIDTH LATIN SMALL LETTER B
-249D ; [*02FB.0020.0004.249D][.15EA.0020.0004.249D][*02FC.0020.001F.249D] # PARENTHESIZED LATIN SMALL LETTER B
-1D41B ; [.15EA.0020.0005.1D41B] # MATHEMATICAL BOLD SMALL B
-1D44F ; [.15EA.0020.0005.1D44F] # MATHEMATICAL ITALIC SMALL B
-1D483 ; [.15EA.0020.0005.1D483] # MATHEMATICAL BOLD ITALIC SMALL B
-1D4B7 ; [.15EA.0020.0005.1D4B7] # MATHEMATICAL SCRIPT SMALL B
-1D4EB ; [.15EA.0020.0005.1D4EB] # MATHEMATICAL BOLD SCRIPT SMALL B
-1D51F ; [.15EA.0020.0005.1D51F] # MATHEMATICAL FRAKTUR SMALL B
-1D553 ; [.15EA.0020.0005.1D553] # MATHEMATICAL DOUBLE-STRUCK SMALL B
-1D587 ; [.15EA.0020.0005.1D587] # MATHEMATICAL BOLD FRAKTUR SMALL B
-1D5BB ; [.15EA.0020.0005.1D5BB] # MATHEMATICAL SANS-SERIF SMALL B
-1D5EF ; [.15EA.0020.0005.1D5EF] # MATHEMATICAL SANS-SERIF BOLD SMALL B
-1D623 ; [.15EA.0020.0005.1D623] # MATHEMATICAL SANS-SERIF ITALIC SMALL B
-1D657 ; [.15EA.0020.0005.1D657] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
-1D68B ; [.15EA.0020.0005.1D68B] # MATHEMATICAL MONOSPACE SMALL B
-24D1 ; [.15EA.0020.0006.24D1] # CIRCLED LATIN SMALL LETTER B
-0042 ; [.15EA.0020.0008.0042] # LATIN CAPITAL LETTER B
-FF22 ; [.15EA.0020.0009.FF22] # FULLWIDTH LATIN CAPITAL LETTER B
-1F111 ; [*02FB.0020.0004.1F111][.15EA.0020.000A.1F111][*02FC.0020.001F.1F111] # PARENTHESIZED LATIN CAPITAL LETTER B
-1F1E7 ; [.15EA.0020.000A.1F1E7] # REGIONAL INDICATOR SYMBOL LETTER B
-212C ; [.15EA.0020.000B.212C] # SCRIPT CAPITAL B
-1D401 ; [.15EA.0020.000B.1D401] # MATHEMATICAL BOLD CAPITAL B
-1D435 ; [.15EA.0020.000B.1D435] # MATHEMATICAL ITALIC CAPITAL B
-1D469 ; [.15EA.0020.000B.1D469] # MATHEMATICAL BOLD ITALIC CAPITAL B
-1D4D1 ; [.15EA.0020.000B.1D4D1] # MATHEMATICAL BOLD SCRIPT CAPITAL B
-1D505 ; [.15EA.0020.000B.1D505] # MATHEMATICAL FRAKTUR CAPITAL B
-1D539 ; [.15EA.0020.000B.1D539] # MATHEMATICAL DOUBLE-STRUCK CAPITAL B
-1D56D ; [.15EA.0020.000B.1D56D] # MATHEMATICAL BOLD FRAKTUR CAPITAL B
-1D5A1 ; [.15EA.0020.000B.1D5A1] # MATHEMATICAL SANS-SERIF CAPITAL B
-1D5D5 ; [.15EA.0020.000B.1D5D5] # MATHEMATICAL SANS-SERIF BOLD CAPITAL B
-1D609 ; [.15EA.0020.000B.1D609] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
-1D63D ; [.15EA.0020.000B.1D63D] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
-1D671 ; [.15EA.0020.000B.1D671] # MATHEMATICAL MONOSPACE CAPITAL B
-24B7 ; [.15EA.0020.000C.24B7] # CIRCLED LATIN CAPITAL LETTER B
-1F151 ; [.15EA.0020.000C.1F151] # NEGATIVE CIRCLED LATIN CAPITAL LETTER B
-1D47 ; [.15EA.0020.0014.1D47] # MODIFIER LETTER SMALL B
-1D2E ; [.15EA.0020.001D.1D2E] # MODIFIER LETTER CAPITAL B
-1F131 ; [.15EA.0020.001D.1F131] # SQUARED LATIN CAPITAL LETTER B
-1F171 ; [.15EA.0020.001D.1F171] # NEGATIVE SQUARED LATIN CAPITAL LETTER B
-1E03 ; [.15EA.0020.0002.0062][.0000.0052.0002.0307] # LATIN SMALL LETTER B WITH DOT ABOVE
-1E02 ; [.15EA.0020.0008.0042][.0000.0052.0002.0307] # LATIN CAPITAL LETTER B WITH DOT ABOVE
-1E05 ; [.15EA.0020.0002.0062][.0000.0070.0002.0323] # LATIN SMALL LETTER B WITH DOT BELOW
-1E04 ; [.15EA.0020.0008.0042][.0000.0070.0002.0323] # LATIN CAPITAL LETTER B WITH DOT BELOW
-1E07 ; [.15EA.0020.0002.0062][.0000.007B.0002.0331] # LATIN SMALL LETTER B WITH LINE BELOW
-1E06 ; [.15EA.0020.0008.0042][.0000.007B.0002.0331] # LATIN CAPITAL LETTER B WITH LINE BELOW
-3374 ; [.15EA.0020.001C.3374][.15D4.0020.001C.3374][.17A2.0020.001F.3374] # SQUARE BAR
-33C3 ; [.15EA.0020.001D.33C3][.1790.0020.001C.33C3] # SQUARE BQ
-0299 ; [.15EE.0020.0002.0299] # LATIN LETTER SMALL CAPITAL B
-0180 ; [.15F2.0020.0002.0180] # LATIN SMALL LETTER B WITH STROKE
-0243 ; [.15F2.0020.0008.0243] # LATIN CAPITAL LETTER B WITH STROKE
-1D2F ; [.15F6.0020.0002.1D2F] # MODIFIER LETTER CAPITAL BARRED B
-1D03 ; [.15F7.0020.0002.1D03] # LATIN LETTER SMALL CAPITAL BARRED B
-1D6C ; [.15F8.0020.0002.1D6C] # LATIN SMALL LETTER B WITH MIDDLE TILDE
-1D80 ; [.15F9.0020.0002.1D80] # LATIN SMALL LETTER B WITH PALATAL HOOK
-0253 ; [.15FA.0020.0002.0253] # LATIN SMALL LETTER B WITH HOOK
-0181 ; [.15FA.0020.0008.0181] # LATIN CAPITAL LETTER B WITH HOOK
-0183 ; [.15FE.0020.0002.0183] # LATIN SMALL LETTER B WITH TOPBAR
-0182 ; [.15FE.0020.0008.0182] # LATIN CAPITAL LETTER B WITH TOPBAR
-0063 ; [.1602.0020.0002.0063] # LATIN SMALL LETTER C
-FF43 ; [.1602.0020.0003.FF43] # FULLWIDTH LATIN SMALL LETTER C
-0368 ; [.1602.0020.0004.0368] # COMBINING LATIN SMALL LETTER C
-217D ; [.1602.0020.0004.217D] # SMALL ROMAN NUMERAL ONE HUNDRED
-249E ; [*02FB.0020.0004.249E][.1602.0020.0004.249E][*02FC.0020.001F.249E] # PARENTHESIZED LATIN SMALL LETTER C
-1D41C ; [.1602.0020.0005.1D41C] # MATHEMATICAL BOLD SMALL C
-1D450 ; [.1602.0020.0005.1D450] # MATHEMATICAL ITALIC SMALL C
-1D484 ; [.1602.0020.0005.1D484] # MATHEMATICAL BOLD ITALIC SMALL C
-1D4B8 ; [.1602.0020.0005.1D4B8] # MATHEMATICAL SCRIPT SMALL C
-1D4EC ; [.1602.0020.0005.1D4EC] # MATHEMATICAL BOLD SCRIPT SMALL C
-1D520 ; [.1602.0020.0005.1D520] # MATHEMATICAL FRAKTUR SMALL C
-1D554 ; [.1602.0020.0005.1D554] # MATHEMATICAL DOUBLE-STRUCK SMALL C
-1D588 ; [.1602.0020.0005.1D588] # MATHEMATICAL BOLD FRAKTUR SMALL C
-1D5BC ; [.1602.0020.0005.1D5BC] # MATHEMATICAL SANS-SERIF SMALL C
-1D5F0 ; [.1602.0020.0005.1D5F0] # MATHEMATICAL SANS-SERIF BOLD SMALL C
-1D624 ; [.1602.0020.0005.1D624] # MATHEMATICAL SANS-SERIF ITALIC SMALL C
-1D658 ; [.1602.0020.0005.1D658] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
-1D68C ; [.1602.0020.0005.1D68C] # MATHEMATICAL MONOSPACE SMALL C
-24D2 ; [.1602.0020.0006.24D2] # CIRCLED LATIN SMALL LETTER C
-0043 ; [.1602.0020.0008.0043] # LATIN CAPITAL LETTER C
-FF23 ; [.1602.0020.0009.FF23] # FULLWIDTH LATIN CAPITAL LETTER C
-2103 ; [*0482.0020.0004.2103][.1602.0020.000A.2103] # DEGREE CELSIUS
-216D ; [.1602.0020.000A.216D] # ROMAN NUMERAL ONE HUNDRED
-1F112 ; [*02FB.0020.0004.1F112][.1602.0020.000A.1F112][*02FC.0020.001F.1F112] # PARENTHESIZED LATIN CAPITAL LETTER C
-1F1E8 ; [.1602.0020.000A.1F1E8] # REGIONAL INDICATOR SYMBOL LETTER C
-2102 ; [.1602.0020.000B.2102] # DOUBLE-STRUCK CAPITAL C
-212D ; [.1602.0020.000B.212D] # BLACK-LETTER CAPITAL C
-1D402 ; [.1602.0020.000B.1D402] # MATHEMATICAL BOLD CAPITAL C
-1D436 ; [.1602.0020.000B.1D436] # MATHEMATICAL ITALIC CAPITAL C
-1D46A ; [.1602.0020.000B.1D46A] # MATHEMATICAL BOLD ITALIC CAPITAL C
-1D49E ; [.1602.0020.000B.1D49E] # MATHEMATICAL SCRIPT CAPITAL C
-1D4D2 ; [.1602.0020.000B.1D4D2] # MATHEMATICAL BOLD SCRIPT CAPITAL C
-1D56E ; [.1602.0020.000B.1D56E] # MATHEMATICAL BOLD FRAKTUR CAPITAL C
-1D5A2 ; [.1602.0020.000B.1D5A2] # MATHEMATICAL SANS-SERIF CAPITAL C
-1D5D6 ; [.1602.0020.000B.1D5D6] # MATHEMATICAL SANS-SERIF BOLD CAPITAL C
-1D60A ; [.1602.0020.000B.1D60A] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
-1D63E ; [.1602.0020.000B.1D63E] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
-1D672 ; [.1602.0020.000B.1D672] # MATHEMATICAL MONOSPACE CAPITAL C
-24B8 ; [.1602.0020.000C.24B8] # CIRCLED LATIN CAPITAL LETTER C
-1F12B ; [.1602.0020.000C.1F12B] # CIRCLED ITALIC LATIN CAPITAL LETTER C
-1F152 ; [.1602.0020.000C.1F152] # NEGATIVE CIRCLED LATIN CAPITAL LETTER C
-1D9C ; [.1602.0020.0014.1D9C] # MODIFIER LETTER SMALL C
-1F132 ; [.1602.0020.001D.1F132] # SQUARED LATIN CAPITAL LETTER C
-1F172 ; [.1602.0020.001D.1F172] # NEGATIVE SQUARED LATIN CAPITAL LETTER C
-0107 ; [.1602.0020.0002.0063][.0000.0032.0002.0301] # LATIN SMALL LETTER C WITH ACUTE
-0106 ; [.1602.0020.0008.0043][.0000.0032.0002.0301] # LATIN CAPITAL LETTER C WITH ACUTE
-0109 ; [.1602.0020.0002.0063][.0000.003C.0002.0302] # LATIN SMALL LETTER C WITH CIRCUMFLEX
-0108 ; [.1602.0020.0008.0043][.0000.003C.0002.0302] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-010D ; [.1602.0020.0002.0063][.0000.0041.0002.030C] # LATIN SMALL LETTER C WITH CARON
-010C ; [.1602.0020.0008.0043][.0000.0041.0002.030C] # LATIN CAPITAL LETTER C WITH CARON
-010B ; [.1602.0020.0002.0063][.0000.0052.0002.0307] # LATIN SMALL LETTER C WITH DOT ABOVE
-010A ; [.1602.0020.0008.0043][.0000.0052.0002.0307] # LATIN CAPITAL LETTER C WITH DOT ABOVE
-00E7 ; [.1602.0020.0002.0063][.0000.0056.0002.0327] # LATIN SMALL LETTER C WITH CEDILLA
-1DD7 ; [.1602.0020.0004.1DD7][.0000.0056.0004.1DD7] # COMBINING LATIN SMALL LETTER C CEDILLA
-00C7 ; [.1602.0020.0008.0043][.0000.0056.0002.0327] # LATIN CAPITAL LETTER C WITH CEDILLA
-1E09 ; [.1602.0020.0002.0063][.0000.0056.0002.0327][.0000.0032.0002.0301] # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
-1E08 ; [.1602.0020.0008.0043][.0000.0056.0002.0327][.0000.0032.0002.0301] # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
-3388 ; [.1602.0020.001C.3388][.15D4.0020.001C.3388][.16F6.0020.001F.3388] # SQUARE CAL
-33C4 ; [.1602.0020.001C.33C4][.1602.0020.001C.33C4] # SQUARE CC
-1F12D ; [.1602.0020.000C.1F12D][.1616.0020.000C.1F12D] # CIRCLED CD
-33C5 ; [.1602.0020.001C.33C5][.1616.0020.001C.33C5] # SQUARE CD
-33C6 ; [.1602.0020.001D.33C6][*05AB.0020.001C.33C6][.16E4.0020.001F.33C6][.1676.0020.001F.33C6] # SQUARE C OVER KG
-1F191 ; [.1602.0020.001D.1F191][.16F6.0020.001D.1F191] # SQUARED CL
-339D ; [.1602.0020.001C.339D][.1726.0020.001C.339D] # SQUARE CM
-33A0 ; [.1602.0020.001C.33A0][.1726.0020.001C.33A0][.15CC.0020.001F.33A0] # SQUARE CM SQUARED
-33A4 ; [.1602.0020.001C.33A4][.1726.0020.001C.33A4][.15CD.0020.001F.33A4] # SQUARE CM CUBED
-2105 ; [.1602.0020.0004.2105][*0372.0020.0004.2105][.1756.0020.001F.2105] # CARE OF
-33C7 ; [.1602.0020.001D.33C7][.1756.0020.001C.33C7][*0273.0020.001F.33C7] # SQUARE CO
-1F192 ; [.1602.0020.001D.1F192][.1756.0020.001D.1F192][.1756.0020.001F.1F192][.16F6.0020.001F.1F192] # SQUARED COOL
-2106 ; [.1602.0020.0004.2106][*0372.0020.0004.2106][.181B.0020.001F.2106] # CADA UNA
-1D04 ; [.1606.0020.0002.1D04] # LATIN LETTER SMALL CAPITAL C
-023C ; [.1607.0020.0002.023C] # LATIN SMALL LETTER C WITH STROKE
-023B ; [.1607.0020.0008.023B] # LATIN CAPITAL LETTER C WITH STROKE
-A793 ; [.160B.0020.0002.A793] # LATIN SMALL LETTER C WITH BAR
-A792 ; [.160B.0020.0008.A792] # LATIN CAPITAL LETTER C WITH BAR
-0188 ; [.160C.0020.0002.0188] # LATIN SMALL LETTER C WITH HOOK
-0187 ; [.160C.0020.0008.0187] # LATIN CAPITAL LETTER C WITH HOOK
-0255 ; [.1610.0020.0002.0255] # LATIN SMALL LETTER C WITH CURL
-1D9D ; [.1610.0020.0014.1D9D] # MODIFIER LETTER SMALL C WITH CURL
-2184 ; [.1614.0020.0002.2184] # LATIN SMALL LETTER REVERSED C
-2183 ; [.1614.0020.0008.2183] # ROMAN NUMERAL REVERSED ONE HUNDRED
-A73F ; [.1615.0020.0002.A73F] # LATIN SMALL LETTER REVERSED C WITH DOT
-A73E ; [.1615.0020.0008.A73E] # LATIN CAPITAL LETTER REVERSED C WITH DOT
-0064 ; [.1616.0020.0002.0064] # LATIN SMALL LETTER D
-FF44 ; [.1616.0020.0003.FF44] # FULLWIDTH LATIN SMALL LETTER D
-0369 ; [.1616.0020.0004.0369] # COMBINING LATIN SMALL LETTER D
-217E ; [.1616.0020.0004.217E] # SMALL ROMAN NUMERAL FIVE HUNDRED
-249F ; [*02FB.0020.0004.249F][.1616.0020.0004.249F][*02FC.0020.001F.249F] # PARENTHESIZED LATIN SMALL LETTER D
-2146 ; [.1616.0020.0005.2146] # DOUBLE-STRUCK ITALIC SMALL D
-1D41D ; [.1616.0020.0005.1D41D] # MATHEMATICAL BOLD SMALL D
-1D451 ; [.1616.0020.0005.1D451] # MATHEMATICAL ITALIC SMALL D
-1D485 ; [.1616.0020.0005.1D485] # MATHEMATICAL BOLD ITALIC SMALL D
-1D4B9 ; [.1616.0020.0005.1D4B9] # MATHEMATICAL SCRIPT SMALL D
-1D4ED ; [.1616.0020.0005.1D4ED] # MATHEMATICAL BOLD SCRIPT SMALL D
-1D521 ; [.1616.0020.0005.1D521] # MATHEMATICAL FRAKTUR SMALL D
-1D555 ; [.1616.0020.0005.1D555] # MATHEMATICAL DOUBLE-STRUCK SMALL D
-1D589 ; [.1616.0020.0005.1D589] # MATHEMATICAL BOLD FRAKTUR SMALL D
-1D5BD ; [.1616.0020.0005.1D5BD] # MATHEMATICAL SANS-SERIF SMALL D
-1D5F1 ; [.1616.0020.0005.1D5F1] # MATHEMATICAL SANS-SERIF BOLD SMALL D
-1D625 ; [.1616.0020.0005.1D625] # MATHEMATICAL SANS-SERIF ITALIC SMALL D
-1D659 ; [.1616.0020.0005.1D659] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
-1D68D ; [.1616.0020.0005.1D68D] # MATHEMATICAL MONOSPACE SMALL D
-24D3 ; [.1616.0020.0006.24D3] # CIRCLED LATIN SMALL LETTER D
-0044 ; [.1616.0020.0008.0044] # LATIN CAPITAL LETTER D
-FF24 ; [.1616.0020.0009.FF24] # FULLWIDTH LATIN CAPITAL LETTER D
-216E ; [.1616.0020.000A.216E] # ROMAN NUMERAL FIVE HUNDRED
-1F113 ; [*02FB.0020.0004.1F113][.1616.0020.000A.1F113][*02FC.0020.001F.1F113] # PARENTHESIZED LATIN CAPITAL LETTER D
-1F1E9 ; [.1616.0020.000A.1F1E9] # REGIONAL INDICATOR SYMBOL LETTER D
-2145 ; [.1616.0020.000B.2145] # DOUBLE-STRUCK ITALIC CAPITAL D
-1D403 ; [.1616.0020.000B.1D403] # MATHEMATICAL BOLD CAPITAL D
-1D437 ; [.1616.0020.000B.1D437] # MATHEMATICAL ITALIC CAPITAL D
-1D46B ; [.1616.0020.000B.1D46B] # MATHEMATICAL BOLD ITALIC CAPITAL D
-1D49F ; [.1616.0020.000B.1D49F] # MATHEMATICAL SCRIPT CAPITAL D
-1D4D3 ; [.1616.0020.000B.1D4D3] # MATHEMATICAL BOLD SCRIPT CAPITAL D
-1D507 ; [.1616.0020.000B.1D507] # MATHEMATICAL FRAKTUR CAPITAL D
-1D53B ; [.1616.0020.000B.1D53B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL D
-1D56F ; [.1616.0020.000B.1D56F] # MATHEMATICAL BOLD FRAKTUR CAPITAL D
-1D5A3 ; [.1616.0020.000B.1D5A3] # MATHEMATICAL SANS-SERIF CAPITAL D
-1D5D7 ; [.1616.0020.000B.1D5D7] # MATHEMATICAL SANS-SERIF BOLD CAPITAL D
-1D60B ; [.1616.0020.000B.1D60B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
-1D63F ; [.1616.0020.000B.1D63F] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
-1D673 ; [.1616.0020.000B.1D673] # MATHEMATICAL MONOSPACE CAPITAL D
-24B9 ; [.1616.0020.000C.24B9] # CIRCLED LATIN CAPITAL LETTER D
-1F153 ; [.1616.0020.000C.1F153] # NEGATIVE CIRCLED LATIN CAPITAL LETTER D
-1D48 ; [.1616.0020.0014.1D48] # MODIFIER LETTER SMALL D
-1D30 ; [.1616.0020.001D.1D30] # MODIFIER LETTER CAPITAL D
-1F133 ; [.1616.0020.001D.1F133] # SQUARED LATIN CAPITAL LETTER D
-1F173 ; [.1616.0020.001D.1F173] # NEGATIVE SQUARED LATIN CAPITAL LETTER D
-010F ; [.1616.0020.0002.0064][.0000.0041.0002.030C] # LATIN SMALL LETTER D WITH CARON
-010E ; [.1616.0020.0008.0044][.0000.0041.0002.030C] # LATIN CAPITAL LETTER D WITH CARON
-1E0B ; [.1616.0020.0002.0064][.0000.0052.0002.0307] # LATIN SMALL LETTER D WITH DOT ABOVE
-1E0A ; [.1616.0020.0008.0044][.0000.0052.0002.0307] # LATIN CAPITAL LETTER D WITH DOT ABOVE
-1E11 ; [.1616.0020.0002.0064][.0000.0056.0002.0327] # LATIN SMALL LETTER D WITH CEDILLA
-1E10 ; [.1616.0020.0008.0044][.0000.0056.0002.0327] # LATIN CAPITAL LETTER D WITH CEDILLA
-1E0D ; [.1616.0020.0002.0064][.0000.0070.0002.0323] # LATIN SMALL LETTER D WITH DOT BELOW
-1E0C ; [.1616.0020.0008.0044][.0000.0070.0002.0323] # LATIN CAPITAL LETTER D WITH DOT BELOW
-1E13 ; [.1616.0020.0002.0064][.0000.0078.0002.032D] # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
-1E12 ; [.1616.0020.0008.0044][.0000.0078.0002.032D] # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
-1E0F ; [.1616.0020.0002.0064][.0000.007B.0002.0331] # LATIN SMALL LETTER D WITH LINE BELOW
-1E0E ; [.1616.0020.0008.0044][.0000.007B.0002.0331] # LATIN CAPITAL LETTER D WITH LINE BELOW
-0111 ; [.1616.0020.0002.0064][.0000.007D.0002.0335] # LATIN SMALL LETTER D WITH STROKE
-0110 ; [.1616.0020.0008.0044][.0000.007D.0002.0335] # LATIN CAPITAL LETTER D WITH STROKE
-00F0 ; [.1616.0020.0004.00F0][.0000.0139.0004.00F0] # LATIN SMALL LETTER ETH
-1DD9 ; [.1616.0020.0004.1DD9][.0000.0139.0004.1DD9] # COMBINING LATIN SMALL LETTER ETH
-00D0 ; [.1616.0020.000A.00D0][.0000.0139.0004.00D0] # LATIN CAPITAL LETTER ETH
-1D9E ; [.1616.0020.0014.1D9E][.0000.0139.0014.1D9E] # MODIFIER LETTER SMALL ETH
-1DD8 ; [.1616.0020.0004.1DD8][.0000.013A.0004.1DD8] # COMBINING LATIN SMALL LETTER INSULAR D
-A77A ; [.1616.0020.0004.A77A][.0000.013A.0004.A77A] # LATIN SMALL LETTER INSULAR D
-A779 ; [.1616.0020.000A.A779][.0000.013A.0004.A779] # LATIN CAPITAL LETTER INSULAR D
-3372 ; [.1616.0020.001C.3372][.15D4.0020.001C.3372] # SQUARE DA
-0238 ; [.1616.0020.0004.0238][.15EA.0020.0004.0238] # LATIN SMALL LETTER DB DIGRAPH
-33C8 ; [.1616.0020.001C.33C8][.15EA.0020.001D.33C8] # SQUARE DB
-1F190 ; [.1616.0020.001D.1F190][.16CB.0020.001D.1F190] # SQUARE DJ
-3397 ; [.1616.0020.001C.3397][.16F6.0020.001C.3397] # SQUARE DL
-3377 ; [.1616.0020.001C.3377][.1726.0020.001C.3377] # SQUARE DM
-3378 ; [.1616.0020.001C.3378][.1726.0020.001C.3378][.15CC.0020.001F.3378] # SQUARE DM SQUARED
-3379 ; [.1616.0020.001C.3379][.1726.0020.001C.3379][.15CD.0020.001F.3379] # SQUARE DM CUBED
-01F3 ; [.1616.0020.0004.01F3][.187A.0020.0004.01F3] # LATIN SMALL LETTER DZ
-02A3 ; [.1616.0020.0004.02A3][.187A.0020.0004.02A3] # LATIN SMALL LETTER DZ DIGRAPH
-01F2 ; [.1616.0020.000A.01F2][.187A.0020.0004.01F2] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
-01F1 ; [.1616.0020.000A.01F1][.187A.0020.000A.01F1] # LATIN CAPITAL LETTER DZ
-01C6 ; [.1616.0020.0004.01C6][.187A.0020.0004.01C6][.0000.0041.001F.01C6] # LATIN SMALL LETTER DZ WITH CARON
-01C5 ; [.1616.0020.000A.01C5][.187A.0020.0004.01C5][.0000.0041.001F.01C5] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
-01C4 ; [.1616.0020.000A.01C4][.187A.0020.000A.01C4][.0000.0041.001F.01C4] # LATIN CAPITAL LETTER DZ WITH CARON
-02A5 ; [.1616.0020.0004.02A5][.188D.0020.0004.02A5] # LATIN SMALL LETTER DZ DIGRAPH WITH CURL
-02A4 ; [.1616.0020.0004.02A4][.1897.0020.0004.02A4] # LATIN SMALL LETTER DEZH DIGRAPH
-1D05 ; [.161A.0020.0002.1D05] # LATIN LETTER SMALL CAPITAL D
-1D06 ; [.161B.0020.0002.1D06] # LATIN LETTER SMALL CAPITAL ETH
-1D6D ; [.161C.0020.0002.1D6D] # LATIN SMALL LETTER D WITH MIDDLE TILDE
-1D81 ; [.161D.0020.0002.1D81] # LATIN SMALL LETTER D WITH PALATAL HOOK
-0256 ; [.161E.0020.0002.0256] # LATIN SMALL LETTER D WITH TAIL
-0189 ; [.161E.0020.0008.0189] # LATIN CAPITAL LETTER AFRICAN D
-0257 ; [.1622.0020.0002.0257] # LATIN SMALL LETTER D WITH HOOK
-018A ; [.1622.0020.0008.018A] # LATIN CAPITAL LETTER D WITH HOOK
-1D91 ; [.1626.0020.0002.1D91] # LATIN SMALL LETTER D WITH HOOK AND TAIL
-018C ; [.1627.0020.0002.018C] # LATIN SMALL LETTER D WITH TOPBAR
-018B ; [.1627.0020.0008.018B] # LATIN CAPITAL LETTER D WITH TOPBAR
-0221 ; [.162B.0020.0002.0221] # LATIN SMALL LETTER D WITH CURL
-A771 ; [.162F.0020.0002.A771] # LATIN SMALL LETTER DUM
-1E9F ; [.1630.0020.0002.1E9F] # LATIN SMALL LETTER DELTA
-0065 ; [.1631.0020.0002.0065] # LATIN SMALL LETTER E
-FF45 ; [.1631.0020.0003.FF45] # FULLWIDTH LATIN SMALL LETTER E
-0364 ; [.1631.0020.0004.0364] # COMBINING LATIN SMALL LETTER E
-24A0 ; [*02FB.0020.0004.24A0][.1631.0020.0004.24A0][*02FC.0020.001F.24A0] # PARENTHESIZED LATIN SMALL LETTER E
-212F ; [.1631.0020.0005.212F] # SCRIPT SMALL E
-2147 ; [.1631.0020.0005.2147] # DOUBLE-STRUCK ITALIC SMALL E
-1D41E ; [.1631.0020.0005.1D41E] # MATHEMATICAL BOLD SMALL E
-1D452 ; [.1631.0020.0005.1D452] # MATHEMATICAL ITALIC SMALL E
-1D486 ; [.1631.0020.0005.1D486] # MATHEMATICAL BOLD ITALIC SMALL E
-1D4EE ; [.1631.0020.0005.1D4EE] # MATHEMATICAL BOLD SCRIPT SMALL E
-1D522 ; [.1631.0020.0005.1D522] # MATHEMATICAL FRAKTUR SMALL E
-1D556 ; [.1631.0020.0005.1D556] # MATHEMATICAL DOUBLE-STRUCK SMALL E
-1D58A ; [.1631.0020.0005.1D58A] # MATHEMATICAL BOLD FRAKTUR SMALL E
-1D5BE ; [.1631.0020.0005.1D5BE] # MATHEMATICAL SANS-SERIF SMALL E
-1D5F2 ; [.1631.0020.0005.1D5F2] # MATHEMATICAL SANS-SERIF BOLD SMALL E
-1D626 ; [.1631.0020.0005.1D626] # MATHEMATICAL SANS-SERIF ITALIC SMALL E
-1D65A ; [.1631.0020.0005.1D65A] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
-1D68E ; [.1631.0020.0005.1D68E] # MATHEMATICAL MONOSPACE SMALL E
-24D4 ; [.1631.0020.0006.24D4] # CIRCLED LATIN SMALL LETTER E
-0045 ; [.1631.0020.0008.0045] # LATIN CAPITAL LETTER E
-FF25 ; [.1631.0020.0009.FF25] # FULLWIDTH LATIN CAPITAL LETTER E
-1F114 ; [*02FB.0020.0004.1F114][.1631.0020.000A.1F114][*02FC.0020.001F.1F114] # PARENTHESIZED LATIN CAPITAL LETTER E
-1F1EA ; [.1631.0020.000A.1F1EA] # REGIONAL INDICATOR SYMBOL LETTER E
-2130 ; [.1631.0020.000B.2130] # SCRIPT CAPITAL E
-1D404 ; [.1631.0020.000B.1D404] # MATHEMATICAL BOLD CAPITAL E
-1D438 ; [.1631.0020.000B.1D438] # MATHEMATICAL ITALIC CAPITAL E
-1D46C ; [.1631.0020.000B.1D46C] # MATHEMATICAL BOLD ITALIC CAPITAL E
-1D4D4 ; [.1631.0020.000B.1D4D4] # MATHEMATICAL BOLD SCRIPT CAPITAL E
-1D508 ; [.1631.0020.000B.1D508] # MATHEMATICAL FRAKTUR CAPITAL E
-1D53C ; [.1631.0020.000B.1D53C] # MATHEMATICAL DOUBLE-STRUCK CAPITAL E
-1D570 ; [.1631.0020.000B.1D570] # MATHEMATICAL BOLD FRAKTUR CAPITAL E
-1D5A4 ; [.1631.0020.000B.1D5A4] # MATHEMATICAL SANS-SERIF CAPITAL E
-1D5D8 ; [.1631.0020.000B.1D5D8] # MATHEMATICAL SANS-SERIF BOLD CAPITAL E
-1D60C ; [.1631.0020.000B.1D60C] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
-1D640 ; [.1631.0020.000B.1D640] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
-1D674 ; [.1631.0020.000B.1D674] # MATHEMATICAL MONOSPACE CAPITAL E
-24BA ; [.1631.0020.000C.24BA] # CIRCLED LATIN CAPITAL LETTER E
-1F154 ; [.1631.0020.000C.1F154] # NEGATIVE CIRCLED LATIN CAPITAL LETTER E
-1D49 ; [.1631.0020.0014.1D49] # MODIFIER LETTER SMALL E
-2091 ; [.1631.0020.0015.2091] # LATIN SUBSCRIPT SMALL LETTER E
-1D31 ; [.1631.0020.001D.1D31] # MODIFIER LETTER CAPITAL E
-1F134 ; [.1631.0020.001D.1F134] # SQUARED LATIN CAPITAL LETTER E
-1F174 ; [.1631.0020.001D.1F174] # NEGATIVE SQUARED LATIN CAPITAL LETTER E
-00E9 ; [.1631.0020.0002.0065][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH ACUTE
-00C9 ; [.1631.0020.0008.0045][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH ACUTE
-00E8 ; [.1631.0020.0002.0065][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH GRAVE
-00C8 ; [.1631.0020.0008.0045][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH GRAVE
-0115 ; [.1631.0020.0002.0065][.0000.0037.0002.0306] # LATIN SMALL LETTER E WITH BREVE
-0114 ; [.1631.0020.0008.0045][.0000.0037.0002.0306] # LATIN CAPITAL LETTER E WITH BREVE
-00EA ; [.1631.0020.0002.0065][.0000.003C.0002.0302] # LATIN SMALL LETTER E WITH CIRCUMFLEX
-00CA ; [.1631.0020.0008.0045][.0000.003C.0002.0302] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-1EBF ; [.1631.0020.0002.0065][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBE ; [.1631.0020.0008.0045][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC1 ; [.1631.0020.0002.0065][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC0 ; [.1631.0020.0008.0045][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC5 ; [.1631.0020.0002.0065][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC4 ; [.1631.0020.0008.0045][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC3 ; [.1631.0020.0002.0065][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC2 ; [.1631.0020.0008.0045][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-011B ; [.1631.0020.0002.0065][.0000.0041.0002.030C] # LATIN SMALL LETTER E WITH CARON
-011A ; [.1631.0020.0008.0045][.0000.0041.0002.030C] # LATIN CAPITAL LETTER E WITH CARON
-00EB ; [.1631.0020.0002.0065][.0000.0047.0002.0308] # LATIN SMALL LETTER E WITH DIAERESIS
-00CB ; [.1631.0020.0008.0045][.0000.0047.0002.0308] # LATIN CAPITAL LETTER E WITH DIAERESIS
-1EBD ; [.1631.0020.0002.0065][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH TILDE
-1EBC ; [.1631.0020.0008.0045][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH TILDE
-0117 ; [.1631.0020.0002.0065][.0000.0052.0002.0307] # LATIN SMALL LETTER E WITH DOT ABOVE
-0116 ; [.1631.0020.0008.0045][.0000.0052.0002.0307] # LATIN CAPITAL LETTER E WITH DOT ABOVE
-0229 ; [.1631.0020.0002.0065][.0000.0056.0002.0327] # LATIN SMALL LETTER E WITH CEDILLA
-0228 ; [.1631.0020.0008.0045][.0000.0056.0002.0327] # LATIN CAPITAL LETTER E WITH CEDILLA
-1E1D ; [.1631.0020.0002.0065][.0000.0056.0002.0327][.0000.0037.0002.0306] # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
-1E1C ; [.1631.0020.0008.0045][.0000.0056.0002.0327][.0000.0037.0002.0306] # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
-0119 ; [.1631.0020.0002.0065][.0000.0059.0002.0328] # LATIN SMALL LETTER E WITH OGONEK
-0118 ; [.1631.0020.0008.0045][.0000.0059.0002.0328] # LATIN CAPITAL LETTER E WITH OGONEK
-0113 ; [.1631.0020.0002.0065][.0000.005B.0002.0304] # LATIN SMALL LETTER E WITH MACRON
-0112 ; [.1631.0020.0008.0045][.0000.005B.0002.0304] # LATIN CAPITAL LETTER E WITH MACRON
-1E17 ; [.1631.0020.0002.0065][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH MACRON AND ACUTE
-1E16 ; [.1631.0020.0008.0045][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
-1E15 ; [.1631.0020.0002.0065][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH MACRON AND GRAVE
-1E14 ; [.1631.0020.0008.0045][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
-1EBB ; [.1631.0020.0002.0065][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH HOOK ABOVE
-1EBA ; [.1631.0020.0008.0045][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH HOOK ABOVE
-0205 ; [.1631.0020.0002.0065][.0000.0065.0002.030F] # LATIN SMALL LETTER E WITH DOUBLE GRAVE
-0204 ; [.1631.0020.0008.0045][.0000.0065.0002.030F] # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
-0207 ; [.1631.0020.0002.0065][.0000.0067.0002.0311] # LATIN SMALL LETTER E WITH INVERTED BREVE
-0206 ; [.1631.0020.0008.0045][.0000.0067.0002.0311] # LATIN CAPITAL LETTER E WITH INVERTED BREVE
-1EB9 ; [.1631.0020.0002.0065][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH DOT BELOW
-1EB8 ; [.1631.0020.0008.0045][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH DOT BELOW
-1EC7 ; [.1631.0020.0002.0065][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC6 ; [.1631.0020.0008.0045][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1E19 ; [.1631.0020.0002.0065][.0000.0078.0002.032D] # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
-1E18 ; [.1631.0020.0008.0045][.0000.0078.0002.032D] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
-1E1B ; [.1631.0020.0002.0065][.0000.007A.0002.0330] # LATIN SMALL LETTER E WITH TILDE BELOW
-1E1A ; [.1631.0020.0008.0045][.0000.007A.0002.0330] # LATIN CAPITAL LETTER E WITH TILDE BELOW
-32CD ; [.1631.0020.001C.32CD][.17A2.0020.001C.32CD][.1676.0020.001F.32CD] # SQUARE ERG
-32CE ; [.1631.0020.001C.32CE][.1844.0020.001D.32CE] # SQUARE EV
-1D07 ; [.1635.0020.0002.1D07] # LATIN LETTER SMALL CAPITAL E
-0247 ; [.1636.0020.0002.0247] # LATIN SMALL LETTER E WITH STROKE
-0246 ; [.1636.0020.0008.0246] # LATIN CAPITAL LETTER E WITH STROKE
-1D92 ; [.163A.0020.0002.1D92] # LATIN SMALL LETTER E WITH RETROFLEX HOOK
-2C78 ; [.163B.0020.0002.2C78] # LATIN SMALL LETTER E WITH NOTCH
-01DD ; [.163C.0020.0002.01DD] # LATIN SMALL LETTER TURNED E
-018E ; [.163C.0020.0008.018E] # LATIN CAPITAL LETTER REVERSED E
-1D32 ; [.163C.0020.001D.1D32] # MODIFIER LETTER CAPITAL REVERSED E
-2C7B ; [.1640.0020.0002.2C7B] # LATIN LETTER SMALL CAPITAL TURNED E
-0259 ; [.1641.0020.0002.0259] # LATIN SMALL LETTER SCHWA
-018F ; [.1641.0020.0008.018F] # LATIN CAPITAL LETTER SCHWA
-1D4A ; [.1641.0020.0014.1D4A] # MODIFIER LETTER SMALL SCHWA
-2094 ; [.1641.0020.0015.2094] # LATIN SUBSCRIPT SMALL LETTER SCHWA
-1D95 ; [.1645.0020.0002.1D95] # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK
-025B ; [.1646.0020.0002.025B] # LATIN SMALL LETTER OPEN E
-0190 ; [.1646.0020.0008.0190] # LATIN CAPITAL LETTER OPEN E
-2107 ; [.1646.0020.000A.2107] # EULER CONSTANT
-1D4B ; [.1646.0020.0014.1D4B] # MODIFIER LETTER SMALL OPEN E
-1D93 ; [.164A.0020.0002.1D93] # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK
-0258 ; [.164B.0020.0002.0258] # LATIN SMALL LETTER REVERSED E
-025A ; [.164F.0020.0002.025A] # LATIN SMALL LETTER SCHWA WITH HOOK
-025C ; [.1653.0020.0002.025C] # LATIN SMALL LETTER REVERSED OPEN E
-1D9F ; [.1653.0020.0014.1D9F] # MODIFIER LETTER SMALL REVERSED OPEN E
-1D94 ; [.1657.0020.0002.1D94] # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK
-1D08 ; [.1658.0020.0002.1D08] # LATIN SMALL LETTER TURNED OPEN E
-1D4C ; [.1658.0020.0014.1D4C] # MODIFIER LETTER SMALL TURNED OPEN E
-025D ; [.1659.0020.0002.025D] # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
-025E ; [.165D.0020.0002.025E] # LATIN SMALL LETTER CLOSED REVERSED OPEN E
-029A ; [.1661.0020.0002.029A] # LATIN SMALL LETTER CLOSED OPEN E
-0264 ; [.1665.0020.0002.0264] # LATIN SMALL LETTER RAMS HORN
-0066 ; [.1669.0020.0002.0066] # LATIN SMALL LETTER F
-FF46 ; [.1669.0020.0003.FF46] # FULLWIDTH LATIN SMALL LETTER F
-24A1 ; [*02FB.0020.0004.24A1][.1669.0020.0004.24A1][*02FC.0020.001F.24A1] # PARENTHESIZED LATIN SMALL LETTER F
-1D41F ; [.1669.0020.0005.1D41F] # MATHEMATICAL BOLD SMALL F
-1D453 ; [.1669.0020.0005.1D453] # MATHEMATICAL ITALIC SMALL F
-1D487 ; [.1669.0020.0005.1D487] # MATHEMATICAL BOLD ITALIC SMALL F
-1D4BB ; [.1669.0020.0005.1D4BB] # MATHEMATICAL SCRIPT SMALL F
-1D4EF ; [.1669.0020.0005.1D4EF] # MATHEMATICAL BOLD SCRIPT SMALL F
-1D523 ; [.1669.0020.0005.1D523] # MATHEMATICAL FRAKTUR SMALL F
-1D557 ; [.1669.0020.0005.1D557] # MATHEMATICAL DOUBLE-STRUCK SMALL F
-1D58B ; [.1669.0020.0005.1D58B] # MATHEMATICAL BOLD FRAKTUR SMALL F
-1D5BF ; [.1669.0020.0005.1D5BF] # MATHEMATICAL SANS-SERIF SMALL F
-1D5F3 ; [.1669.0020.0005.1D5F3] # MATHEMATICAL SANS-SERIF BOLD SMALL F
-1D627 ; [.1669.0020.0005.1D627] # MATHEMATICAL SANS-SERIF ITALIC SMALL F
-1D65B ; [.1669.0020.0005.1D65B] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
-1D68F ; [.1669.0020.0005.1D68F] # MATHEMATICAL MONOSPACE SMALL F
-24D5 ; [.1669.0020.0006.24D5] # CIRCLED LATIN SMALL LETTER F
-0046 ; [.1669.0020.0008.0046] # LATIN CAPITAL LETTER F
-FF26 ; [.1669.0020.0009.FF26] # FULLWIDTH LATIN CAPITAL LETTER F
-2109 ; [*0482.0020.0004.2109][.1669.0020.000A.2109] # DEGREE FAHRENHEIT
-1F115 ; [*02FB.0020.0004.1F115][.1669.0020.000A.1F115][*02FC.0020.001F.1F115] # PARENTHESIZED LATIN CAPITAL LETTER F
-1F1EB ; [.1669.0020.000A.1F1EB] # REGIONAL INDICATOR SYMBOL LETTER F
-2131 ; [.1669.0020.000B.2131] # SCRIPT CAPITAL F
-1D405 ; [.1669.0020.000B.1D405] # MATHEMATICAL BOLD CAPITAL F
-1D439 ; [.1669.0020.000B.1D439] # MATHEMATICAL ITALIC CAPITAL F
-1D46D ; [.1669.0020.000B.1D46D] # MATHEMATICAL BOLD ITALIC CAPITAL F
-1D4D5 ; [.1669.0020.000B.1D4D5] # MATHEMATICAL BOLD SCRIPT CAPITAL F
-1D509 ; [.1669.0020.000B.1D509] # MATHEMATICAL FRAKTUR CAPITAL F
-1D53D ; [.1669.0020.000B.1D53D] # MATHEMATICAL DOUBLE-STRUCK CAPITAL F
-1D571 ; [.1669.0020.000B.1D571] # MATHEMATICAL BOLD FRAKTUR CAPITAL F
-1D5A5 ; [.1669.0020.000B.1D5A5] # MATHEMATICAL SANS-SERIF CAPITAL F
-1D5D9 ; [.1669.0020.000B.1D5D9] # MATHEMATICAL SANS-SERIF BOLD CAPITAL F
-1D60D ; [.1669.0020.000B.1D60D] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
-1D641 ; [.1669.0020.000B.1D641] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
-1D675 ; [.1669.0020.000B.1D675] # MATHEMATICAL MONOSPACE CAPITAL F
-24BB ; [.1669.0020.000C.24BB] # CIRCLED LATIN CAPITAL LETTER F
-1F155 ; [.1669.0020.000C.1F155] # NEGATIVE CIRCLED LATIN CAPITAL LETTER F
-1DA0 ; [.1669.0020.0014.1DA0] # MODIFIER LETTER SMALL F
-1F135 ; [.1669.0020.001D.1F135] # SQUARED LATIN CAPITAL LETTER F
-1F175 ; [.1669.0020.001D.1F175] # NEGATIVE SQUARED LATIN CAPITAL LETTER F
-1E1F ; [.1669.0020.0002.0066][.0000.0052.0002.0307] # LATIN SMALL LETTER F WITH DOT ABOVE
-1E1E ; [.1669.0020.0008.0046][.0000.0052.0002.0307] # LATIN CAPITAL LETTER F WITH DOT ABOVE
-A77C ; [.1669.0020.0004.A77C][.0000.013A.0004.A77C] # LATIN SMALL LETTER INSULAR F
-A77B ; [.1669.0020.000A.A77B][.0000.013A.0004.A77B] # LATIN CAPITAL LETTER INSULAR F
-213B ; [.1669.0020.000A.213B][.15D4.0020.000A.213B][.1860.0020.001F.213B] # FACSIMILE SIGN
-FB00 ; [.1669.0020.0004.FB00][.1669.0020.0004.FB00] # LATIN SMALL LIGATURE FF
-FB03 ; [.1669.0020.0004.FB03][.1669.0020.0004.FB03][.16B2.0020.001F.FB03] # LATIN SMALL LIGATURE FFI
-FB04 ; [.1669.0020.0004.FB04][.1669.0020.0004.FB04][.16F6.0020.001F.FB04] # LATIN SMALL LIGATURE FFL
-FB01 ; [.1669.0020.0004.FB01][.16B2.0020.0004.FB01] # LATIN SMALL LIGATURE FI
-FB02 ; [.1669.0020.0004.FB02][.16F6.0020.0004.FB02] # LATIN SMALL LIGATURE FL
-3399 ; [.1669.0020.001C.3399][.1726.0020.001C.3399] # SQUARE FM
-02A9 ; [.1669.0020.0004.02A9][.1752.0020.0004.02A9] # LATIN SMALL LETTER FENG DIGRAPH
-1F193 ; [.1669.0020.001D.1F193][.17A2.0020.001D.1F193][.1631.0020.001F.1F193][.1631.0020.001F.1F193] # SQUARED FREE
-A730 ; [.166D.0020.0002.A730] # LATIN LETTER SMALL CAPITAL F
-1D6E ; [.166E.0020.0002.1D6E] # LATIN SMALL LETTER F WITH MIDDLE TILDE
-1D82 ; [.166F.0020.0002.1D82] # LATIN SMALL LETTER F WITH PALATAL HOOK
-0192 ; [.1670.0020.0002.0192] # LATIN SMALL LETTER F WITH HOOK
-0191 ; [.1670.0020.0008.0191] # LATIN CAPITAL LETTER F WITH HOOK
-214E ; [.1674.0020.0002.214E] # TURNED SMALL F
-2132 ; [.1674.0020.0008.2132] # TURNED CAPITAL F
-A7FB ; [.1675.0020.0002.A7FB] # LATIN EPIGRAPHIC LETTER REVERSED F
-0067 ; [.1676.0020.0002.0067] # LATIN SMALL LETTER G
-FF47 ; [.1676.0020.0003.FF47] # FULLWIDTH LATIN SMALL LETTER G
-1DDA ; [.1676.0020.0004.1DDA] # COMBINING LATIN SMALL LETTER G
-24A2 ; [*02FB.0020.0004.24A2][.1676.0020.0004.24A2][*02FC.0020.001F.24A2] # PARENTHESIZED LATIN SMALL LETTER G
-210A ; [.1676.0020.0005.210A] # SCRIPT SMALL G
-1D420 ; [.1676.0020.0005.1D420] # MATHEMATICAL BOLD SMALL G
-1D454 ; [.1676.0020.0005.1D454] # MATHEMATICAL ITALIC SMALL G
-1D488 ; [.1676.0020.0005.1D488] # MATHEMATICAL BOLD ITALIC SMALL G
-1D4F0 ; [.1676.0020.0005.1D4F0] # MATHEMATICAL BOLD SCRIPT SMALL G
-1D524 ; [.1676.0020.0005.1D524] # MATHEMATICAL FRAKTUR SMALL G
-1D558 ; [.1676.0020.0005.1D558] # MATHEMATICAL DOUBLE-STRUCK SMALL G
-1D58C ; [.1676.0020.0005.1D58C] # MATHEMATICAL BOLD FRAKTUR SMALL G
-1D5C0 ; [.1676.0020.0005.1D5C0] # MATHEMATICAL SANS-SERIF SMALL G
-1D5F4 ; [.1676.0020.0005.1D5F4] # MATHEMATICAL SANS-SERIF BOLD SMALL G
-1D628 ; [.1676.0020.0005.1D628] # MATHEMATICAL SANS-SERIF ITALIC SMALL G
-1D65C ; [.1676.0020.0005.1D65C] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
-1D690 ; [.1676.0020.0005.1D690] # MATHEMATICAL MONOSPACE SMALL G
-24D6 ; [.1676.0020.0006.24D6] # CIRCLED LATIN SMALL LETTER G
-0047 ; [.1676.0020.0008.0047] # LATIN CAPITAL LETTER G
-FF27 ; [.1676.0020.0009.FF27] # FULLWIDTH LATIN CAPITAL LETTER G
-1F116 ; [*02FB.0020.0004.1F116][.1676.0020.000A.1F116][*02FC.0020.001F.1F116] # PARENTHESIZED LATIN CAPITAL LETTER G
-1F1EC ; [.1676.0020.000A.1F1EC] # REGIONAL INDICATOR SYMBOL LETTER G
-1D406 ; [.1676.0020.000B.1D406] # MATHEMATICAL BOLD CAPITAL G
-1D43A ; [.1676.0020.000B.1D43A] # MATHEMATICAL ITALIC CAPITAL G
-1D46E ; [.1676.0020.000B.1D46E] # MATHEMATICAL BOLD ITALIC CAPITAL G
-1D4A2 ; [.1676.0020.000B.1D4A2] # MATHEMATICAL SCRIPT CAPITAL G
-1D4D6 ; [.1676.0020.000B.1D4D6] # MATHEMATICAL BOLD SCRIPT CAPITAL G
-1D50A ; [.1676.0020.000B.1D50A] # MATHEMATICAL FRAKTUR CAPITAL G
-1D53E ; [.1676.0020.000B.1D53E] # MATHEMATICAL DOUBLE-STRUCK CAPITAL G
-1D572 ; [.1676.0020.000B.1D572] # MATHEMATICAL BOLD FRAKTUR CAPITAL G
-1D5A6 ; [.1676.0020.000B.1D5A6] # MATHEMATICAL SANS-SERIF CAPITAL G
-1D5DA ; [.1676.0020.000B.1D5DA] # MATHEMATICAL SANS-SERIF BOLD CAPITAL G
-1D60E ; [.1676.0020.000B.1D60E] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
-1D642 ; [.1676.0020.000B.1D642] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
-1D676 ; [.1676.0020.000B.1D676] # MATHEMATICAL MONOSPACE CAPITAL G
-24BC ; [.1676.0020.000C.24BC] # CIRCLED LATIN CAPITAL LETTER G
-1F156 ; [.1676.0020.000C.1F156] # NEGATIVE CIRCLED LATIN CAPITAL LETTER G
-1D4D ; [.1676.0020.0014.1D4D] # MODIFIER LETTER SMALL G
-1D33 ; [.1676.0020.001D.1D33] # MODIFIER LETTER CAPITAL G
-1F136 ; [.1676.0020.001D.1F136] # SQUARED LATIN CAPITAL LETTER G
-1F176 ; [.1676.0020.001D.1F176] # NEGATIVE SQUARED LATIN CAPITAL LETTER G
-01F5 ; [.1676.0020.0002.0067][.0000.0032.0002.0301] # LATIN SMALL LETTER G WITH ACUTE
-01F4 ; [.1676.0020.0008.0047][.0000.0032.0002.0301] # LATIN CAPITAL LETTER G WITH ACUTE
-011F ; [.1676.0020.0002.0067][.0000.0037.0002.0306] # LATIN SMALL LETTER G WITH BREVE
-011E ; [.1676.0020.0008.0047][.0000.0037.0002.0306] # LATIN CAPITAL LETTER G WITH BREVE
-011D ; [.1676.0020.0002.0067][.0000.003C.0002.0302] # LATIN SMALL LETTER G WITH CIRCUMFLEX
-011C ; [.1676.0020.0008.0047][.0000.003C.0002.0302] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-01E7 ; [.1676.0020.0002.0067][.0000.0041.0002.030C] # LATIN SMALL LETTER G WITH CARON
-01E6 ; [.1676.0020.0008.0047][.0000.0041.0002.030C] # LATIN CAPITAL LETTER G WITH CARON
-0121 ; [.1676.0020.0002.0067][.0000.0052.0002.0307] # LATIN SMALL LETTER G WITH DOT ABOVE
-0120 ; [.1676.0020.0008.0047][.0000.0052.0002.0307] # LATIN CAPITAL LETTER G WITH DOT ABOVE
-0123 ; [.1676.0020.0002.0067][.0000.0056.0002.0327] # LATIN SMALL LETTER G WITH CEDILLA
-0122 ; [.1676.0020.0008.0047][.0000.0056.0002.0327] # LATIN CAPITAL LETTER G WITH CEDILLA
-1E21 ; [.1676.0020.0002.0067][.0000.005B.0002.0304] # LATIN SMALL LETTER G WITH MACRON
-1E20 ; [.1676.0020.0008.0047][.0000.005B.0002.0304] # LATIN CAPITAL LETTER G WITH MACRON
-A7A1 ; [.1676.0020.0004.A7A1][.0000.0061.0004.A7A1] # LATIN SMALL LETTER G WITH OBLIQUE STROKE
-A7A0 ; [.1676.0020.000A.A7A0][.0000.0061.0004.A7A0] # LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
-1D79 ; [.1676.0020.0004.1D79][.0000.013A.0004.1D79] # LATIN SMALL LETTER INSULAR G
-A77D ; [.1676.0020.000A.A77D][.0000.013A.0004.A77D] # LATIN CAPITAL LETTER INSULAR G
-33FF ; [.1676.0020.001C.33FF][.15D4.0020.001C.33FF][.16F6.0020.001F.33FF] # SQUARE GAL
-3387 ; [.1676.0020.001D.3387][.15EA.0020.001D.3387] # SQUARE GB
-3393 ; [.1676.0020.001D.3393][.1699.0020.001D.3393][.187A.0020.001F.3393] # SQUARE GHZ
-33AC ; [.1676.0020.001D.33AC][.177B.0020.001D.33AC][.15D4.0020.001F.33AC] # SQUARE GPA
-33C9 ; [.1676.0020.001D.33C9][.1865.0020.001C.33C9] # SQUARE GY
-0261 ; [.167A.0020.0002.0261] # LATIN SMALL LETTER SCRIPT G
-1DA2 ; [.167A.0020.0014.1DA2] # MODIFIER LETTER SMALL SCRIPT G
-0262 ; [.167E.0020.0002.0262] # LATIN LETTER SMALL CAPITAL G
-1DDB ; [.167E.0020.0004.1DDB] # COMBINING LATIN LETTER SMALL CAPITAL G
-01E5 ; [.1682.0020.0002.01E5] # LATIN SMALL LETTER G WITH STROKE
-01E4 ; [.1682.0020.0008.01E4] # LATIN CAPITAL LETTER G WITH STROKE
-1D83 ; [.1686.0020.0002.1D83] # LATIN SMALL LETTER G WITH PALATAL HOOK
-0260 ; [.1687.0020.0002.0260] # LATIN SMALL LETTER G WITH HOOK
-0193 ; [.1687.0020.0008.0193] # LATIN CAPITAL LETTER G WITH HOOK
-029B ; [.168B.0020.0002.029B] # LATIN LETTER SMALL CAPITAL G WITH HOOK
-1D77 ; [.168F.0020.0002.1D77] # LATIN SMALL LETTER TURNED G
-A77F ; [.1690.0020.0002.A77F] # LATIN SMALL LETTER TURNED INSULAR G
-A77E ; [.1690.0020.0008.A77E] # LATIN CAPITAL LETTER TURNED INSULAR G
-0263 ; [.1691.0020.0002.0263] # LATIN SMALL LETTER GAMMA
-0194 ; [.1691.0020.0008.0194] # LATIN CAPITAL LETTER GAMMA
-02E0 ; [.1691.0020.0014.02E0] # MODIFIER LETTER SMALL GAMMA
-01A3 ; [.1695.0020.0002.01A3] # LATIN SMALL LETTER OI
-01A2 ; [.1695.0020.0008.01A2] # LATIN CAPITAL LETTER OI
-0068 ; [.1699.0020.0002.0068] # LATIN SMALL LETTER H
-FF48 ; [.1699.0020.0003.FF48] # FULLWIDTH LATIN SMALL LETTER H
-036A ; [.1699.0020.0004.036A] # COMBINING LATIN SMALL LETTER H
-24A3 ; [*02FB.0020.0004.24A3][.1699.0020.0004.24A3][*02FC.0020.001F.24A3] # PARENTHESIZED LATIN SMALL LETTER H
-210E ; [.1699.0020.0005.210E] # PLANCK CONSTANT
-1D421 ; [.1699.0020.0005.1D421] # MATHEMATICAL BOLD SMALL H
-1D489 ; [.1699.0020.0005.1D489] # MATHEMATICAL BOLD ITALIC SMALL H
-1D4BD ; [.1699.0020.0005.1D4BD] # MATHEMATICAL SCRIPT SMALL H
-1D4F1 ; [.1699.0020.0005.1D4F1] # MATHEMATICAL BOLD SCRIPT SMALL H
-1D525 ; [.1699.0020.0005.1D525] # MATHEMATICAL FRAKTUR SMALL H
-1D559 ; [.1699.0020.0005.1D559] # MATHEMATICAL DOUBLE-STRUCK SMALL H
-1D58D ; [.1699.0020.0005.1D58D] # MATHEMATICAL BOLD FRAKTUR SMALL H
-1D5C1 ; [.1699.0020.0005.1D5C1] # MATHEMATICAL SANS-SERIF SMALL H
-1D5F5 ; [.1699.0020.0005.1D5F5] # MATHEMATICAL SANS-SERIF BOLD SMALL H
-1D629 ; [.1699.0020.0005.1D629] # MATHEMATICAL SANS-SERIF ITALIC SMALL H
-1D65D ; [.1699.0020.0005.1D65D] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
-1D691 ; [.1699.0020.0005.1D691] # MATHEMATICAL MONOSPACE SMALL H
-24D7 ; [.1699.0020.0006.24D7] # CIRCLED LATIN SMALL LETTER H
-0048 ; [.1699.0020.0008.0048] # LATIN CAPITAL LETTER H
-FF28 ; [.1699.0020.0009.FF28] # FULLWIDTH LATIN CAPITAL LETTER H
-1F117 ; [*02FB.0020.0004.1F117][.1699.0020.000A.1F117][*02FC.0020.001F.1F117] # PARENTHESIZED LATIN CAPITAL LETTER H
-1F1ED ; [.1699.0020.000A.1F1ED] # REGIONAL INDICATOR SYMBOL LETTER H
-210B ; [.1699.0020.000B.210B] # SCRIPT CAPITAL H
-210C ; [.1699.0020.000B.210C] # BLACK-LETTER CAPITAL H
-210D ; [.1699.0020.000B.210D] # DOUBLE-STRUCK CAPITAL H
-1D407 ; [.1699.0020.000B.1D407] # MATHEMATICAL BOLD CAPITAL H
-1D43B ; [.1699.0020.000B.1D43B] # MATHEMATICAL ITALIC CAPITAL H
-1D46F ; [.1699.0020.000B.1D46F] # MATHEMATICAL BOLD ITALIC CAPITAL H
-1D4D7 ; [.1699.0020.000B.1D4D7] # MATHEMATICAL BOLD SCRIPT CAPITAL H
-1D573 ; [.1699.0020.000B.1D573] # MATHEMATICAL BOLD FRAKTUR CAPITAL H
-1D5A7 ; [.1699.0020.000B.1D5A7] # MATHEMATICAL SANS-SERIF CAPITAL H
-1D5DB ; [.1699.0020.000B.1D5DB] # MATHEMATICAL SANS-SERIF BOLD CAPITAL H
-1D60F ; [.1699.0020.000B.1D60F] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
-1D643 ; [.1699.0020.000B.1D643] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
-1D677 ; [.1699.0020.000B.1D677] # MATHEMATICAL MONOSPACE CAPITAL H
-24BD ; [.1699.0020.000C.24BD] # CIRCLED LATIN CAPITAL LETTER H
-1F157 ; [.1699.0020.000C.1F157] # NEGATIVE CIRCLED LATIN CAPITAL LETTER H
-02B0 ; [.1699.0020.0014.02B0] # MODIFIER LETTER SMALL H
-2095 ; [.1699.0020.0015.2095] # LATIN SUBSCRIPT SMALL LETTER H
-1D34 ; [.1699.0020.001D.1D34] # MODIFIER LETTER CAPITAL H
-1F137 ; [.1699.0020.001D.1F137] # SQUARED LATIN CAPITAL LETTER H
-1F177 ; [.1699.0020.001D.1F177] # NEGATIVE SQUARED LATIN CAPITAL LETTER H
-0125 ; [.1699.0020.0002.0068][.0000.003C.0002.0302] # LATIN SMALL LETTER H WITH CIRCUMFLEX
-0124 ; [.1699.0020.0008.0048][.0000.003C.0002.0302] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-021F ; [.1699.0020.0002.0068][.0000.0041.0002.030C] # LATIN SMALL LETTER H WITH CARON
-021E ; [.1699.0020.0008.0048][.0000.0041.0002.030C] # LATIN CAPITAL LETTER H WITH CARON
-1E27 ; [.1699.0020.0002.0068][.0000.0047.0002.0308] # LATIN SMALL LETTER H WITH DIAERESIS
-1E26 ; [.1699.0020.0008.0048][.0000.0047.0002.0308] # LATIN CAPITAL LETTER H WITH DIAERESIS
-1E23 ; [.1699.0020.0002.0068][.0000.0052.0002.0307] # LATIN SMALL LETTER H WITH DOT ABOVE
-1E22 ; [.1699.0020.0008.0048][.0000.0052.0002.0307] # LATIN CAPITAL LETTER H WITH DOT ABOVE
-1E29 ; [.1699.0020.0002.0068][.0000.0056.0002.0327] # LATIN SMALL LETTER H WITH CEDILLA
-1E28 ; [.1699.0020.0008.0048][.0000.0056.0002.0327] # LATIN CAPITAL LETTER H WITH CEDILLA
-1E25 ; [.1699.0020.0002.0068][.0000.0070.0002.0323] # LATIN SMALL LETTER H WITH DOT BELOW
-1E24 ; [.1699.0020.0008.0048][.0000.0070.0002.0323] # LATIN CAPITAL LETTER H WITH DOT BELOW
-1E2B ; [.1699.0020.0002.0068][.0000.0079.0002.032E] # LATIN SMALL LETTER H WITH BREVE BELOW
-1E2A ; [.1699.0020.0008.0048][.0000.0079.0002.032E] # LATIN CAPITAL LETTER H WITH BREVE BELOW
-1E96 ; [.1699.0020.0002.0068][.0000.007B.0002.0331] # LATIN SMALL LETTER H WITH LINE BELOW
-0127 ; [.1699.0020.0002.0068][.0000.007D.0002.0335] # LATIN SMALL LETTER H WITH STROKE
-210F ; [.1699.0020.0002.210F][.0000.007D.0002.210F] # PLANCK CONSTANT OVER TWO PI
-0126 ; [.1699.0020.0008.0048][.0000.007D.0002.0335] # LATIN CAPITAL LETTER H WITH STROKE
-A7F8 ; [.1699.0020.0014.A7F8][.0000.007D.0014.A7F8] # MODIFIER LETTER CAPITAL H WITH STROKE
-33CA ; [.1699.0020.001C.33CA][.15D4.0020.001C.33CA] # SQUARE HA
-32CC ; [.1699.0020.001D.32CC][.1676.0020.001C.32CC] # SQUARE HG
-33CB ; [.1699.0020.001D.33CB][.177B.0020.001D.33CB] # SQUARE HP
-3371 ; [.1699.0020.001C.3371][.177B.0020.001D.3371][.15D4.0020.001F.3371] # SQUARE HPA
-1F14A ; [.1699.0020.001D.1F14A][.1844.0020.001D.1F14A] # SQUARED HV
-3390 ; [.1699.0020.001D.3390][.187A.0020.001C.3390] # SQUARE HZ
-029C ; [.169D.0020.0002.029C] # LATIN LETTER SMALL CAPITAL H
-0195 ; [.16A1.0020.0002.0195] # LATIN SMALL LETTER HV
-01F6 ; [.16A1.0020.0008.01F6] # LATIN CAPITAL LETTER HWAIR
-0266 ; [.16A5.0020.0002.0266] # LATIN SMALL LETTER H WITH HOOK
-A7AA ; [.16A5.0020.0008.A7AA] # LATIN CAPITAL LETTER H WITH HOOK
-02B1 ; [.16A5.0020.0014.02B1] # MODIFIER LETTER SMALL H WITH HOOK
-2C68 ; [.16A9.0020.0002.2C68] # LATIN SMALL LETTER H WITH DESCENDER
-2C67 ; [.16A9.0020.0008.2C67] # LATIN CAPITAL LETTER H WITH DESCENDER
-2C76 ; [.16AA.0020.0002.2C76] # LATIN SMALL LETTER HALF H
-2C75 ; [.16AA.0020.0008.2C75] # LATIN CAPITAL LETTER HALF H
-A727 ; [.16AB.0020.0002.A727] # LATIN SMALL LETTER HENG
-A726 ; [.16AB.0020.0008.A726] # LATIN CAPITAL LETTER HENG
-0267 ; [.16AC.0020.0002.0267] # LATIN SMALL LETTER HENG WITH HOOK
-02BB ; [.16B0.0020.0002.02BB] # MODIFIER LETTER TURNED COMMA
-02BD ; [.16B1.0020.0002.02BD] # MODIFIER LETTER REVERSED COMMA
-0069 ; [.16B2.0020.0002.0069] # LATIN SMALL LETTER I
-FF49 ; [.16B2.0020.0003.FF49] # FULLWIDTH LATIN SMALL LETTER I
-0365 ; [.16B2.0020.0004.0365] # COMBINING LATIN SMALL LETTER I
-2170 ; [.16B2.0020.0004.2170] # SMALL ROMAN NUMERAL ONE
-24A4 ; [*02FB.0020.0004.24A4][.16B2.0020.0004.24A4][*02FC.0020.001F.24A4] # PARENTHESIZED LATIN SMALL LETTER I
-2139 ; [.16B2.0020.0005.2139] # INFORMATION SOURCE
-2148 ; [.16B2.0020.0005.2148] # DOUBLE-STRUCK ITALIC SMALL I
-1D422 ; [.16B2.0020.0005.1D422] # MATHEMATICAL BOLD SMALL I
-1D456 ; [.16B2.0020.0005.1D456] # MATHEMATICAL ITALIC SMALL I
-1D48A ; [.16B2.0020.0005.1D48A] # MATHEMATICAL BOLD ITALIC SMALL I
-1D4BE ; [.16B2.0020.0005.1D4BE] # MATHEMATICAL SCRIPT SMALL I
-1D4F2 ; [.16B2.0020.0005.1D4F2] # MATHEMATICAL BOLD SCRIPT SMALL I
-1D526 ; [.16B2.0020.0005.1D526] # MATHEMATICAL FRAKTUR SMALL I
-1D55A ; [.16B2.0020.0005.1D55A] # MATHEMATICAL DOUBLE-STRUCK SMALL I
-1D58E ; [.16B2.0020.0005.1D58E] # MATHEMATICAL BOLD FRAKTUR SMALL I
-1D5C2 ; [.16B2.0020.0005.1D5C2] # MATHEMATICAL SANS-SERIF SMALL I
-1D5F6 ; [.16B2.0020.0005.1D5F6] # MATHEMATICAL SANS-SERIF BOLD SMALL I
-1D62A ; [.16B2.0020.0005.1D62A] # MATHEMATICAL SANS-SERIF ITALIC SMALL I
-1D65E ; [.16B2.0020.0005.1D65E] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
-1D692 ; [.16B2.0020.0005.1D692] # MATHEMATICAL MONOSPACE SMALL I
-24D8 ; [.16B2.0020.0006.24D8] # CIRCLED LATIN SMALL LETTER I
-0049 ; [.16B2.0020.0008.0049] # LATIN CAPITAL LETTER I
-FF29 ; [.16B2.0020.0009.FF29] # FULLWIDTH LATIN CAPITAL LETTER I
-2160 ; [.16B2.0020.000A.2160] # ROMAN NUMERAL ONE
-1F118 ; [*02FB.0020.0004.1F118][.16B2.0020.000A.1F118][*02FC.0020.001F.1F118] # PARENTHESIZED LATIN CAPITAL LETTER I
-1F1EE ; [.16B2.0020.000A.1F1EE] # REGIONAL INDICATOR SYMBOL LETTER I
-2110 ; [.16B2.0020.000B.2110] # SCRIPT CAPITAL I
-2111 ; [.16B2.0020.000B.2111] # BLACK-LETTER CAPITAL I
-1D408 ; [.16B2.0020.000B.1D408] # MATHEMATICAL BOLD CAPITAL I
-1D43C ; [.16B2.0020.000B.1D43C] # MATHEMATICAL ITALIC CAPITAL I
-1D470 ; [.16B2.0020.000B.1D470] # MATHEMATICAL BOLD ITALIC CAPITAL I
-1D4D8 ; [.16B2.0020.000B.1D4D8] # MATHEMATICAL BOLD SCRIPT CAPITAL I
-1D540 ; [.16B2.0020.000B.1D540] # MATHEMATICAL DOUBLE-STRUCK CAPITAL I
-1D574 ; [.16B2.0020.000B.1D574] # MATHEMATICAL BOLD FRAKTUR CAPITAL I
-1D5A8 ; [.16B2.0020.000B.1D5A8] # MATHEMATICAL SANS-SERIF CAPITAL I
-1D5DC ; [.16B2.0020.000B.1D5DC] # MATHEMATICAL SANS-SERIF BOLD CAPITAL I
-1D610 ; [.16B2.0020.000B.1D610] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
-1D644 ; [.16B2.0020.000B.1D644] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
-1D678 ; [.16B2.0020.000B.1D678] # MATHEMATICAL MONOSPACE CAPITAL I
-24BE ; [.16B2.0020.000C.24BE] # CIRCLED LATIN CAPITAL LETTER I
-1F158 ; [.16B2.0020.000C.1F158] # NEGATIVE CIRCLED LATIN CAPITAL LETTER I
-2071 ; [.16B2.0020.0014.2071] # SUPERSCRIPT LATIN SMALL LETTER I
-1D62 ; [.16B2.0020.0015.1D62] # LATIN SUBSCRIPT SMALL LETTER I
-1D35 ; [.16B2.0020.001D.1D35] # MODIFIER LETTER CAPITAL I
-1F138 ; [.16B2.0020.001D.1F138] # SQUARED LATIN CAPITAL LETTER I
-1F178 ; [.16B2.0020.001D.1F178] # NEGATIVE SQUARED LATIN CAPITAL LETTER I
-00ED ; [.16B2.0020.0002.0069][.0000.0032.0002.0301] # LATIN SMALL LETTER I WITH ACUTE
-00CD ; [.16B2.0020.0008.0049][.0000.0032.0002.0301] # LATIN CAPITAL LETTER I WITH ACUTE
-00EC ; [.16B2.0020.0002.0069][.0000.0035.0002.0300] # LATIN SMALL LETTER I WITH GRAVE
-00CC ; [.16B2.0020.0008.0049][.0000.0035.0002.0300] # LATIN CAPITAL LETTER I WITH GRAVE
-012D ; [.16B2.0020.0002.0069][.0000.0037.0002.0306] # LATIN SMALL LETTER I WITH BREVE
-012C ; [.16B2.0020.0008.0049][.0000.0037.0002.0306] # LATIN CAPITAL LETTER I WITH BREVE
-00EE ; [.16B2.0020.0002.0069][.0000.003C.0002.0302] # LATIN SMALL LETTER I WITH CIRCUMFLEX
-00CE ; [.16B2.0020.0008.0049][.0000.003C.0002.0302] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-01D0 ; [.16B2.0020.0002.0069][.0000.0041.0002.030C] # LATIN SMALL LETTER I WITH CARON
-01CF ; [.16B2.0020.0008.0049][.0000.0041.0002.030C] # LATIN CAPITAL LETTER I WITH CARON
-00EF ; [.16B2.0020.0002.0069][.0000.0047.0002.0308] # LATIN SMALL LETTER I WITH DIAERESIS
-00CF ; [.16B2.0020.0008.0049][.0000.0047.0002.0308] # LATIN CAPITAL LETTER I WITH DIAERESIS
-1E2F ; [.16B2.0020.0002.0069][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
-1E2E ; [.16B2.0020.0008.0049][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
-0129 ; [.16B2.0020.0002.0069][.0000.004E.0002.0303] # LATIN SMALL LETTER I WITH TILDE
-0128 ; [.16B2.0020.0008.0049][.0000.004E.0002.0303] # LATIN CAPITAL LETTER I WITH TILDE
-0130 ; [.16B2.0020.0008.0049][.0000.0052.0002.0307] # LATIN CAPITAL LETTER I WITH DOT ABOVE
-012F ; [.16B2.0020.0002.0069][.0000.0059.0002.0328] # LATIN SMALL LETTER I WITH OGONEK
-012E ; [.16B2.0020.0008.0049][.0000.0059.0002.0328] # LATIN CAPITAL LETTER I WITH OGONEK
-012B ; [.16B2.0020.0002.0069][.0000.005B.0002.0304] # LATIN SMALL LETTER I WITH MACRON
-012A ; [.16B2.0020.0008.0049][.0000.005B.0002.0304] # LATIN CAPITAL LETTER I WITH MACRON
-1EC9 ; [.16B2.0020.0002.0069][.0000.0064.0002.0309] # LATIN SMALL LETTER I WITH HOOK ABOVE
-1EC8 ; [.16B2.0020.0008.0049][.0000.0064.0002.0309] # LATIN CAPITAL LETTER I WITH HOOK ABOVE
-0209 ; [.16B2.0020.0002.0069][.0000.0065.0002.030F] # LATIN SMALL LETTER I WITH DOUBLE GRAVE
-0208 ; [.16B2.0020.0008.0049][.0000.0065.0002.030F] # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
-020B ; [.16B2.0020.0002.0069][.0000.0067.0002.0311] # LATIN SMALL LETTER I WITH INVERTED BREVE
-020A ; [.16B2.0020.0008.0049][.0000.0067.0002.0311] # LATIN CAPITAL LETTER I WITH INVERTED BREVE
-1ECB ; [.16B2.0020.0002.0069][.0000.0070.0002.0323] # LATIN SMALL LETTER I WITH DOT BELOW
-1ECA ; [.16B2.0020.0008.0049][.0000.0070.0002.0323] # LATIN CAPITAL LETTER I WITH DOT BELOW
-1E2D ; [.16B2.0020.0002.0069][.0000.007A.0002.0330] # LATIN SMALL LETTER I WITH TILDE BELOW
-1E2C ; [.16B2.0020.0008.0049][.0000.007A.0002.0330] # LATIN CAPITAL LETTER I WITH TILDE BELOW
-1F18B ; [.16B2.0020.001D.1F18B][.1602.0020.001D.1F18B] # NEGATIVE SQUARED IC
-1F194 ; [.16B2.0020.001D.1F194][.1616.0020.001D.1F194] # SQUARED ID
-2171 ; [.16B2.0020.0004.2171][.16B2.0020.0004.2171] # SMALL ROMAN NUMERAL TWO
-2161 ; [.16B2.0020.000A.2161][.16B2.0020.000A.2161] # ROMAN NUMERAL TWO
-2172 ; [.16B2.0020.0004.2172][.16B2.0020.0004.2172][.16B2.0020.001F.2172] # SMALL ROMAN NUMERAL THREE
-2162 ; [.16B2.0020.000A.2162][.16B2.0020.000A.2162][.16B2.0020.001F.2162] # ROMAN NUMERAL THREE
-0133 ; [.16B2.0020.0004.0133][.16CB.0020.0004.0133] # LATIN SMALL LIGATURE IJ
-0132 ; [.16B2.0020.000A.0132][.16CB.0020.000A.0132] # LATIN CAPITAL LIGATURE IJ
-33CC ; [.16B2.0020.001C.33CC][.1734.0020.001C.33CC] # SQUARE IN
-337A ; [.16B2.0020.001D.337A][.181B.0020.001D.337A] # SQUARE IU
-2173 ; [.16B2.0020.0004.2173][.1844.0020.0004.2173] # SMALL ROMAN NUMERAL FOUR
-2163 ; [.16B2.0020.000A.2163][.1844.0020.000A.2163] # ROMAN NUMERAL FOUR
-2178 ; [.16B2.0020.0004.2178][.1860.0020.0004.2178] # SMALL ROMAN NUMERAL NINE
-2168 ; [.16B2.0020.000A.2168][.1860.0020.000A.2168] # ROMAN NUMERAL NINE
-0131 ; [.16B6.0020.0002.0131] # LATIN SMALL LETTER DOTLESS I
-1D6A4 ; [.16B6.0020.0005.1D6A4] # MATHEMATICAL ITALIC SMALL DOTLESS I
-026A ; [.16BA.0020.0002.026A] # LATIN LETTER SMALL CAPITAL I
-1DA6 ; [.16BA.0020.0014.1DA6] # MODIFIER LETTER SMALL CAPITAL I
-A7FE ; [.16BE.0020.0002.A7FE] # LATIN EPIGRAPHIC LETTER I LONGA
-1D09 ; [.16BF.0020.0002.1D09] # LATIN SMALL LETTER TURNED I
-1D4E ; [.16BF.0020.0014.1D4E] # MODIFIER LETTER SMALL TURNED I
-0268 ; [.16C0.0020.0002.0268] # LATIN SMALL LETTER I WITH STROKE
-0197 ; [.16C0.0020.0008.0197] # LATIN CAPITAL LETTER I WITH STROKE
-1DA4 ; [.16C0.0020.0014.1DA4] # MODIFIER LETTER SMALL I WITH STROKE
-1D7B ; [.16C4.0020.0002.1D7B] # LATIN SMALL CAPITAL LETTER I WITH STROKE
-1DA7 ; [.16C4.0020.0014.1DA7] # MODIFIER LETTER SMALL CAPITAL I WITH STROKE
-1D96 ; [.16C5.0020.0002.1D96] # LATIN SMALL LETTER I WITH RETROFLEX HOOK
-0269 ; [.16C6.0020.0002.0269] # LATIN SMALL LETTER IOTA
-0196 ; [.16C6.0020.0008.0196] # LATIN CAPITAL LETTER IOTA
-1DA5 ; [.16C6.0020.0014.1DA5] # MODIFIER LETTER SMALL IOTA
-1D7C ; [.16CA.0020.0002.1D7C] # LATIN SMALL LETTER IOTA WITH STROKE
-006A ; [.16CB.0020.0002.006A] # LATIN SMALL LETTER J
-FF4A ; [.16CB.0020.0003.FF4A] # FULLWIDTH LATIN SMALL LETTER J
-24A5 ; [*02FB.0020.0004.24A5][.16CB.0020.0004.24A5][*02FC.0020.001F.24A5] # PARENTHESIZED LATIN SMALL LETTER J
-2149 ; [.16CB.0020.0005.2149] # DOUBLE-STRUCK ITALIC SMALL J
-1D423 ; [.16CB.0020.0005.1D423] # MATHEMATICAL BOLD SMALL J
-1D457 ; [.16CB.0020.0005.1D457] # MATHEMATICAL ITALIC SMALL J
-1D48B ; [.16CB.0020.0005.1D48B] # MATHEMATICAL BOLD ITALIC SMALL J
-1D4BF ; [.16CB.0020.0005.1D4BF] # MATHEMATICAL SCRIPT SMALL J
-1D4F3 ; [.16CB.0020.0005.1D4F3] # MATHEMATICAL BOLD SCRIPT SMALL J
-1D527 ; [.16CB.0020.0005.1D527] # MATHEMATICAL FRAKTUR SMALL J
-1D55B ; [.16CB.0020.0005.1D55B] # MATHEMATICAL DOUBLE-STRUCK SMALL J
-1D58F ; [.16CB.0020.0005.1D58F] # MATHEMATICAL BOLD FRAKTUR SMALL J
-1D5C3 ; [.16CB.0020.0005.1D5C3] # MATHEMATICAL SANS-SERIF SMALL J
-1D5F7 ; [.16CB.0020.0005.1D5F7] # MATHEMATICAL SANS-SERIF BOLD SMALL J
-1D62B ; [.16CB.0020.0005.1D62B] # MATHEMATICAL SANS-SERIF ITALIC SMALL J
-1D65F ; [.16CB.0020.0005.1D65F] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
-1D693 ; [.16CB.0020.0005.1D693] # MATHEMATICAL MONOSPACE SMALL J
-24D9 ; [.16CB.0020.0006.24D9] # CIRCLED LATIN SMALL LETTER J
-004A ; [.16CB.0020.0008.004A] # LATIN CAPITAL LETTER J
-FF2A ; [.16CB.0020.0009.FF2A] # FULLWIDTH LATIN CAPITAL LETTER J
-1F119 ; [*02FB.0020.0004.1F119][.16CB.0020.000A.1F119][*02FC.0020.001F.1F119] # PARENTHESIZED LATIN CAPITAL LETTER J
-1F1EF ; [.16CB.0020.000A.1F1EF] # REGIONAL INDICATOR SYMBOL LETTER J
-1D409 ; [.16CB.0020.000B.1D409] # MATHEMATICAL BOLD CAPITAL J
-1D43D ; [.16CB.0020.000B.1D43D] # MATHEMATICAL ITALIC CAPITAL J
-1D471 ; [.16CB.0020.000B.1D471] # MATHEMATICAL BOLD ITALIC CAPITAL J
-1D4A5 ; [.16CB.0020.000B.1D4A5] # MATHEMATICAL SCRIPT CAPITAL J
-1D4D9 ; [.16CB.0020.000B.1D4D9] # MATHEMATICAL BOLD SCRIPT CAPITAL J
-1D50D ; [.16CB.0020.000B.1D50D] # MATHEMATICAL FRAKTUR CAPITAL J
-1D541 ; [.16CB.0020.000B.1D541] # MATHEMATICAL DOUBLE-STRUCK CAPITAL J
-1D575 ; [.16CB.0020.000B.1D575] # MATHEMATICAL BOLD FRAKTUR CAPITAL J
-1D5A9 ; [.16CB.0020.000B.1D5A9] # MATHEMATICAL SANS-SERIF CAPITAL J
-1D5DD ; [.16CB.0020.000B.1D5DD] # MATHEMATICAL SANS-SERIF BOLD CAPITAL J
-1D611 ; [.16CB.0020.000B.1D611] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
-1D645 ; [.16CB.0020.000B.1D645] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
-1D679 ; [.16CB.0020.000B.1D679] # MATHEMATICAL MONOSPACE CAPITAL J
-24BF ; [.16CB.0020.000C.24BF] # CIRCLED LATIN CAPITAL LETTER J
-1F159 ; [.16CB.0020.000C.1F159] # NEGATIVE CIRCLED LATIN CAPITAL LETTER J
-02B2 ; [.16CB.0020.0014.02B2] # MODIFIER LETTER SMALL J
-2C7C ; [.16CB.0020.0015.2C7C] # LATIN SUBSCRIPT SMALL LETTER J
-1D36 ; [.16CB.0020.001D.1D36] # MODIFIER LETTER CAPITAL J
-1F139 ; [.16CB.0020.001D.1F139] # SQUARED LATIN CAPITAL LETTER J
-1F179 ; [.16CB.0020.001D.1F179] # NEGATIVE SQUARED LATIN CAPITAL LETTER J
-0135 ; [.16CB.0020.0002.006A][.0000.003C.0002.0302] # LATIN SMALL LETTER J WITH CIRCUMFLEX
-0134 ; [.16CB.0020.0008.004A][.0000.003C.0002.0302] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-01F0 ; [.16CB.0020.0002.006A][.0000.0041.0002.030C] # LATIN SMALL LETTER J WITH CARON
-0237 ; [.16CF.0020.0002.0237] # LATIN SMALL LETTER DOTLESS J
-1D6A5 ; [.16CF.0020.0005.1D6A5] # MATHEMATICAL ITALIC SMALL DOTLESS J
-1D0A ; [.16D3.0020.0002.1D0A] # LATIN LETTER SMALL CAPITAL J
-0249 ; [.16D4.0020.0002.0249] # LATIN SMALL LETTER J WITH STROKE
-0248 ; [.16D4.0020.0008.0248] # LATIN CAPITAL LETTER J WITH STROKE
-029D ; [.16D8.0020.0002.029D] # LATIN SMALL LETTER J WITH CROSSED-TAIL
-1DA8 ; [.16D8.0020.0014.1DA8] # MODIFIER LETTER SMALL J WITH CROSSED-TAIL
-025F ; [.16DC.0020.0002.025F] # LATIN SMALL LETTER DOTLESS J WITH STROKE
-1DA1 ; [.16DC.0020.0014.1DA1] # MODIFIER LETTER SMALL DOTLESS J WITH STROKE
-0284 ; [.16E0.0020.0002.0284] # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
-006B ; [.16E4.0020.0002.006B] # LATIN SMALL LETTER K
-FF4B ; [.16E4.0020.0003.FF4B] # FULLWIDTH LATIN SMALL LETTER K
-1DDC ; [.16E4.0020.0004.1DDC] # COMBINING LATIN SMALL LETTER K
-24A6 ; [*02FB.0020.0004.24A6][.16E4.0020.0004.24A6][*02FC.0020.001F.24A6] # PARENTHESIZED LATIN SMALL LETTER K
-1D424 ; [.16E4.0020.0005.1D424] # MATHEMATICAL BOLD SMALL K
-1D458 ; [.16E4.0020.0005.1D458] # MATHEMATICAL ITALIC SMALL K
-1D48C ; [.16E4.0020.0005.1D48C] # MATHEMATICAL BOLD ITALIC SMALL K
-1D4C0 ; [.16E4.0020.0005.1D4C0] # MATHEMATICAL SCRIPT SMALL K
-1D4F4 ; [.16E4.0020.0005.1D4F4] # MATHEMATICAL BOLD SCRIPT SMALL K
-1D528 ; [.16E4.0020.0005.1D528] # MATHEMATICAL FRAKTUR SMALL K
-1D55C ; [.16E4.0020.0005.1D55C] # MATHEMATICAL DOUBLE-STRUCK SMALL K
-1D590 ; [.16E4.0020.0005.1D590] # MATHEMATICAL BOLD FRAKTUR SMALL K
-1D5C4 ; [.16E4.0020.0005.1D5C4] # MATHEMATICAL SANS-SERIF SMALL K
-1D5F8 ; [.16E4.0020.0005.1D5F8] # MATHEMATICAL SANS-SERIF BOLD SMALL K
-1D62C ; [.16E4.0020.0005.1D62C] # MATHEMATICAL SANS-SERIF ITALIC SMALL K
-1D660 ; [.16E4.0020.0005.1D660] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
-1D694 ; [.16E4.0020.0005.1D694] # MATHEMATICAL MONOSPACE SMALL K
-24DA ; [.16E4.0020.0006.24DA] # CIRCLED LATIN SMALL LETTER K
-004B ; [.16E4.0020.0008.004B] # LATIN CAPITAL LETTER K
-212A ; [.16E4.0020.0008.212A] # KELVIN SIGN
-FF2B ; [.16E4.0020.0009.FF2B] # FULLWIDTH LATIN CAPITAL LETTER K
-1F11A ; [*02FB.0020.0004.1F11A][.16E4.0020.000A.1F11A][*02FC.0020.001F.1F11A] # PARENTHESIZED LATIN CAPITAL LETTER K
-1F1F0 ; [.16E4.0020.000A.1F1F0] # REGIONAL INDICATOR SYMBOL LETTER K
-1D40A ; [.16E4.0020.000B.1D40A] # MATHEMATICAL BOLD CAPITAL K
-1D43E ; [.16E4.0020.000B.1D43E] # MATHEMATICAL ITALIC CAPITAL K
-1D472 ; [.16E4.0020.000B.1D472] # MATHEMATICAL BOLD ITALIC CAPITAL K
-1D4A6 ; [.16E4.0020.000B.1D4A6] # MATHEMATICAL SCRIPT CAPITAL K
-1D4DA ; [.16E4.0020.000B.1D4DA] # MATHEMATICAL BOLD SCRIPT CAPITAL K
-1D50E ; [.16E4.0020.000B.1D50E] # MATHEMATICAL FRAKTUR CAPITAL K
-1D542 ; [.16E4.0020.000B.1D542] # MATHEMATICAL DOUBLE-STRUCK CAPITAL K
-1D576 ; [.16E4.0020.000B.1D576] # MATHEMATICAL BOLD FRAKTUR CAPITAL K
-1D5AA ; [.16E4.0020.000B.1D5AA] # MATHEMATICAL SANS-SERIF CAPITAL K
-1D5DE ; [.16E4.0020.000B.1D5DE] # MATHEMATICAL SANS-SERIF BOLD CAPITAL K
-1D612 ; [.16E4.0020.000B.1D612] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
-1D646 ; [.16E4.0020.000B.1D646] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
-1D67A ; [.16E4.0020.000B.1D67A] # MATHEMATICAL MONOSPACE CAPITAL K
-24C0 ; [.16E4.0020.000C.24C0] # CIRCLED LATIN CAPITAL LETTER K
-1F15A ; [.16E4.0020.000C.1F15A] # NEGATIVE CIRCLED LATIN CAPITAL LETTER K
-1D4F ; [.16E4.0020.0014.1D4F] # MODIFIER LETTER SMALL K
-2096 ; [.16E4.0020.0015.2096] # LATIN SUBSCRIPT SMALL LETTER K
-1D37 ; [.16E4.0020.001D.1D37] # MODIFIER LETTER CAPITAL K
-1F13A ; [.16E4.0020.001D.1F13A] # SQUARED LATIN CAPITAL LETTER K
-1F17A ; [.16E4.0020.001D.1F17A] # NEGATIVE SQUARED LATIN CAPITAL LETTER K
-1E31 ; [.16E4.0020.0002.006B][.0000.0032.0002.0301] # LATIN SMALL LETTER K WITH ACUTE
-1E30 ; [.16E4.0020.0008.004B][.0000.0032.0002.0301] # LATIN CAPITAL LETTER K WITH ACUTE
-01E9 ; [.16E4.0020.0002.006B][.0000.0041.0002.030C] # LATIN SMALL LETTER K WITH CARON
-01E8 ; [.16E4.0020.0008.004B][.0000.0041.0002.030C] # LATIN CAPITAL LETTER K WITH CARON
-0137 ; [.16E4.0020.0002.006B][.0000.0056.0002.0327] # LATIN SMALL LETTER K WITH CEDILLA
-0136 ; [.16E4.0020.0008.004B][.0000.0056.0002.0327] # LATIN CAPITAL LETTER K WITH CEDILLA
-A7A3 ; [.16E4.0020.0004.A7A3][.0000.0061.0004.A7A3] # LATIN SMALL LETTER K WITH OBLIQUE STROKE
-A7A2 ; [.16E4.0020.000A.A7A2][.0000.0061.0004.A7A2] # LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
-1E33 ; [.16E4.0020.0002.006B][.0000.0070.0002.0323] # LATIN SMALL LETTER K WITH DOT BELOW
-1E32 ; [.16E4.0020.0008.004B][.0000.0070.0002.0323] # LATIN CAPITAL LETTER K WITH DOT BELOW
-1E35 ; [.16E4.0020.0002.006B][.0000.007B.0002.0331] # LATIN SMALL LETTER K WITH LINE BELOW
-1E34 ; [.16E4.0020.0008.004B][.0000.007B.0002.0331] # LATIN CAPITAL LETTER K WITH LINE BELOW
-3384 ; [.16E4.0020.001C.3384][.15D4.0020.001D.3384] # SQUARE KA
-3385 ; [.16E4.0020.001D.3385][.15EA.0020.001D.3385] # SQUARE KB
-3389 ; [.16E4.0020.001C.3389][.1602.0020.001C.3389][.15D4.0020.001F.3389][.16F6.0020.001F.3389] # SQUARE KCAL
-338F ; [.16E4.0020.001C.338F][.1676.0020.001C.338F] # SQUARE KG
-3391 ; [.16E4.0020.001C.3391][.1699.0020.001D.3391][.187A.0020.001F.3391] # SQUARE KHZ
-33CD ; [.16E4.0020.001D.33CD][.16E4.0020.001D.33CD] # SQUARE KK
-3398 ; [.16E4.0020.001C.3398][.16F6.0020.001C.3398] # SQUARE KL
-339E ; [.16E4.0020.001C.339E][.1726.0020.001C.339E] # SQUARE KM
-33CE ; [.16E4.0020.001D.33CE][.1726.0020.001D.33CE] # SQUARE KM CAPITAL
-33A2 ; [.16E4.0020.001C.33A2][.1726.0020.001C.33A2][.15CC.0020.001F.33A2] # SQUARE KM SQUARED
-33A6 ; [.16E4.0020.001C.33A6][.1726.0020.001C.33A6][.15CD.0020.001F.33A6] # SQUARE KM CUBED
-33AA ; [.16E4.0020.001C.33AA][.177B.0020.001D.33AA][.15D4.0020.001F.33AA] # SQUARE KPA
-33CF ; [.16E4.0020.001C.33CF][.17FB.0020.001C.33CF] # SQUARE KT
-33B8 ; [.16E4.0020.001C.33B8][.1844.0020.001D.33B8] # SQUARE KV
-33BE ; [.16E4.0020.001C.33BE][.1856.0020.001D.33BE] # SQUARE KW
-33C0 ; [.16E4.0020.001C.33C0][.1936.0020.001D.33C0] # SQUARE K OHM
-1D0B ; [.16E8.0020.0002.1D0B] # LATIN LETTER SMALL CAPITAL K
-1D84 ; [.16E9.0020.0002.1D84] # LATIN SMALL LETTER K WITH PALATAL HOOK
-0199 ; [.16EA.0020.0002.0199] # LATIN SMALL LETTER K WITH HOOK
-0198 ; [.16EA.0020.0008.0198] # LATIN CAPITAL LETTER K WITH HOOK
-2C6A ; [.16EE.0020.0002.2C6A] # LATIN SMALL LETTER K WITH DESCENDER
-2C69 ; [.16EE.0020.0008.2C69] # LATIN CAPITAL LETTER K WITH DESCENDER
-A741 ; [.16EF.0020.0002.A741] # LATIN SMALL LETTER K WITH STROKE
-A740 ; [.16EF.0020.0008.A740] # LATIN CAPITAL LETTER K WITH STROKE
-A743 ; [.16F0.0020.0002.A743] # LATIN SMALL LETTER K WITH DIAGONAL STROKE
-A742 ; [.16F0.0020.0008.A742] # LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
-A745 ; [.16F1.0020.0002.A745] # LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
-A744 ; [.16F1.0020.0008.A744] # LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
-029E ; [.16F2.0020.0002.029E] # LATIN SMALL LETTER TURNED K
-006C ; [.16F6.0020.0002.006C] # LATIN SMALL LETTER L
-FF4C ; [.16F6.0020.0003.FF4C] # FULLWIDTH LATIN SMALL LETTER L
-1DDD ; [.16F6.0020.0004.1DDD] # COMBINING LATIN SMALL LETTER L
-217C ; [.16F6.0020.0004.217C] # SMALL ROMAN NUMERAL FIFTY
-24A7 ; [*02FB.0020.0004.24A7][.16F6.0020.0004.24A7][*02FC.0020.001F.24A7] # PARENTHESIZED LATIN SMALL LETTER L
-2113 ; [.16F6.0020.0005.2113] # SCRIPT SMALL L
-1D425 ; [.16F6.0020.0005.1D425] # MATHEMATICAL BOLD SMALL L
-1D459 ; [.16F6.0020.0005.1D459] # MATHEMATICAL ITALIC SMALL L
-1D48D ; [.16F6.0020.0005.1D48D] # MATHEMATICAL BOLD ITALIC SMALL L
-1D4C1 ; [.16F6.0020.0005.1D4C1] # MATHEMATICAL SCRIPT SMALL L
-1D4F5 ; [.16F6.0020.0005.1D4F5] # MATHEMATICAL BOLD SCRIPT SMALL L
-1D529 ; [.16F6.0020.0005.1D529] # MATHEMATICAL FRAKTUR SMALL L
-1D55D ; [.16F6.0020.0005.1D55D] # MATHEMATICAL DOUBLE-STRUCK SMALL L
-1D591 ; [.16F6.0020.0005.1D591] # MATHEMATICAL BOLD FRAKTUR SMALL L
-1D5C5 ; [.16F6.0020.0005.1D5C5] # MATHEMATICAL SANS-SERIF SMALL L
-1D5F9 ; [.16F6.0020.0005.1D5F9] # MATHEMATICAL SANS-SERIF BOLD SMALL L
-1D62D ; [.16F6.0020.0005.1D62D] # MATHEMATICAL SANS-SERIF ITALIC SMALL L
-1D661 ; [.16F6.0020.0005.1D661] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
-1D695 ; [.16F6.0020.0005.1D695] # MATHEMATICAL MONOSPACE SMALL L
-24DB ; [.16F6.0020.0006.24DB] # CIRCLED LATIN SMALL LETTER L
-004C ; [.16F6.0020.0008.004C] # LATIN CAPITAL LETTER L
-FF2C ; [.16F6.0020.0009.FF2C] # FULLWIDTH LATIN CAPITAL LETTER L
-216C ; [.16F6.0020.000A.216C] # ROMAN NUMERAL FIFTY
-1F11B ; [*02FB.0020.0004.1F11B][.16F6.0020.000A.1F11B][*02FC.0020.001F.1F11B] # PARENTHESIZED LATIN CAPITAL LETTER L
-1F1F1 ; [.16F6.0020.000A.1F1F1] # REGIONAL INDICATOR SYMBOL LETTER L
-2112 ; [.16F6.0020.000B.2112] # SCRIPT CAPITAL L
-1D40B ; [.16F6.0020.000B.1D40B] # MATHEMATICAL BOLD CAPITAL L
-1D43F ; [.16F6.0020.000B.1D43F] # MATHEMATICAL ITALIC CAPITAL L
-1D473 ; [.16F6.0020.000B.1D473] # MATHEMATICAL BOLD ITALIC CAPITAL L
-1D4DB ; [.16F6.0020.000B.1D4DB] # MATHEMATICAL BOLD SCRIPT CAPITAL L
-1D50F ; [.16F6.0020.000B.1D50F] # MATHEMATICAL FRAKTUR CAPITAL L
-1D543 ; [.16F6.0020.000B.1D543] # MATHEMATICAL DOUBLE-STRUCK CAPITAL L
-1D577 ; [.16F6.0020.000B.1D577] # MATHEMATICAL BOLD FRAKTUR CAPITAL L
-1D5AB ; [.16F6.0020.000B.1D5AB] # MATHEMATICAL SANS-SERIF CAPITAL L
-1D5DF ; [.16F6.0020.000B.1D5DF] # MATHEMATICAL SANS-SERIF BOLD CAPITAL L
-1D613 ; [.16F6.0020.000B.1D613] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
-1D647 ; [.16F6.0020.000B.1D647] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
-1D67B ; [.16F6.0020.000B.1D67B] # MATHEMATICAL MONOSPACE CAPITAL L
-24C1 ; [.16F6.0020.000C.24C1] # CIRCLED LATIN CAPITAL LETTER L
-1F15B ; [.16F6.0020.000C.1F15B] # NEGATIVE CIRCLED LATIN CAPITAL LETTER L
-02E1 ; [.16F6.0020.0014.02E1] # MODIFIER LETTER SMALL L
-2097 ; [.16F6.0020.0015.2097] # LATIN SUBSCRIPT SMALL LETTER L
-1D38 ; [.16F6.0020.001D.1D38] # MODIFIER LETTER CAPITAL L
-1F13B ; [.16F6.0020.001D.1F13B] # SQUARED LATIN CAPITAL LETTER L
-1F17B ; [.16F6.0020.001D.1F17B] # NEGATIVE SQUARED LATIN CAPITAL LETTER L
-013A ; [.16F6.0020.0002.006C][.0000.0032.0002.0301] # LATIN SMALL LETTER L WITH ACUTE
-0139 ; [.16F6.0020.0008.004C][.0000.0032.0002.0301] # LATIN CAPITAL LETTER L WITH ACUTE
-013E ; [.16F6.0020.0002.006C][.0000.0041.0002.030C] # LATIN SMALL LETTER L WITH CARON
-013D ; [.16F6.0020.0008.004C][.0000.0041.0002.030C] # LATIN CAPITAL LETTER L WITH CARON
-013C ; [.16F6.0020.0002.006C][.0000.0056.0002.0327] # LATIN SMALL LETTER L WITH CEDILLA
-013B ; [.16F6.0020.0008.004C][.0000.0056.0002.0327] # LATIN CAPITAL LETTER L WITH CEDILLA
-1E37 ; [.16F6.0020.0002.006C][.0000.0070.0002.0323] # LATIN SMALL LETTER L WITH DOT BELOW
-1E36 ; [.16F6.0020.0008.004C][.0000.0070.0002.0323] # LATIN CAPITAL LETTER L WITH DOT BELOW
-1E39 ; [.16F6.0020.0002.006C][.0000.0070.0002.0323][.0000.005B.0002.0304] # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
-1E38 ; [.16F6.0020.0008.004C][.0000.0070.0002.0323][.0000.005B.0002.0304] # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
-1E3D ; [.16F6.0020.0002.006C][.0000.0078.0002.032D] # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
-1E3C ; [.16F6.0020.0008.004C][.0000.0078.0002.032D] # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
-1E3B ; [.16F6.0020.0002.006C][.0000.007B.0002.0331] # LATIN SMALL LETTER L WITH LINE BELOW
-1E3A ; [.16F6.0020.0008.004C][.0000.007B.0002.0331] # LATIN CAPITAL LETTER L WITH LINE BELOW
-0142 ; [.16F6.0020.0002.006C][.0000.007D.0002.0335] # LATIN SMALL LETTER L WITH STROKE
-0141 ; [.16F6.0020.0008.004C][.0000.007D.0002.0335] # LATIN CAPITAL LETTER L WITH STROKE
-0140 ; [.16F6.0020.0002.0140][.0000.0139.0002.0140] # LATIN SMALL LETTER L WITH MIDDLE DOT
-006C 00B7 ; [.16F6.0020.0002.0140][.0000.0139.0002.0140] # LATIN SMALL LETTER L WITH MIDDLE DOT
-006C 0387 ; [.16F6.0020.0002.0140][.0000.0139.0002.0140] # LATIN SMALL LETTER L WITH MIDDLE DOT
-013F ; [.16F6.0020.0008.013F][.0000.0139.0002.013F] # LATIN CAPITAL LETTER L WITH MIDDLE DOT
-004C 00B7 ; [.16F6.0020.0008.013F][.0000.0139.0002.013F] # LATIN CAPITAL LETTER L WITH MIDDLE DOT
-004C 0387 ; [.16F6.0020.0008.013F][.0000.0139.0002.013F] # LATIN CAPITAL LETTER L WITH MIDDLE DOT
-01C9 ; [.16F6.0020.0004.01C9][.16CB.0020.0004.01C9] # LATIN SMALL LETTER LJ
-01C8 ; [.16F6.0020.000A.01C8][.16CB.0020.0004.01C8] # LATIN CAPITAL LETTER L WITH SMALL LETTER J
-01C7 ; [.16F6.0020.000A.01C7][.16CB.0020.000A.01C7] # LATIN CAPITAL LETTER LJ
-1EFB ; [.16F6.0020.0004.1EFB][.16F6.0020.0004.1EFB] # LATIN SMALL LETTER MIDDLE-WELSH LL
-1EFA ; [.16F6.0020.000A.1EFA][.16F6.0020.000A.1EFA] # LATIN CAPITAL LETTER MIDDLE-WELSH LL
-33D0 ; [.16F6.0020.001C.33D0][.1726.0020.001C.33D0] # SQUARE LM
-33D1 ; [.16F6.0020.001C.33D1][.1734.0020.001C.33D1] # SQUARE LN
-33D2 ; [.16F6.0020.001C.33D2][.1756.0020.001C.33D2][.1676.0020.001F.33D2] # SQUARE LOG
-02AA ; [.16F6.0020.0004.02AA][.17D8.0020.0004.02AA] # LATIN SMALL LETTER LS DIGRAPH
-32CF ; [.16F6.0020.001D.32CF][.17FB.0020.001D.32CF][.1616.0020.001F.32CF] # LIMITED LIABILITY SIGN
-33D3 ; [.16F6.0020.001C.33D3][.1860.0020.001C.33D3] # SQUARE LX
-02AB ; [.16F6.0020.0004.02AB][.187A.0020.0004.02AB] # LATIN SMALL LETTER LZ DIGRAPH
-029F ; [.16FA.0020.0002.029F] # LATIN LETTER SMALL CAPITAL L
-1DDE ; [.16FA.0020.0004.1DDE] # COMBINING LATIN LETTER SMALL CAPITAL L
-1DAB ; [.16FA.0020.0014.1DAB] # MODIFIER LETTER SMALL CAPITAL L
-A747 ; [.16FE.0020.0002.A747] # LATIN SMALL LETTER BROKEN L
-A746 ; [.16FE.0020.0008.A746] # LATIN CAPITAL LETTER BROKEN L
-1D0C ; [.16FF.0020.0002.1D0C] # LATIN LETTER SMALL CAPITAL L WITH STROKE
-A749 ; [.1700.0020.0002.A749] # LATIN SMALL LETTER L WITH HIGH STROKE
-A748 ; [.1700.0020.0008.A748] # LATIN CAPITAL LETTER L WITH HIGH STROKE
-019A ; [.1701.0020.0002.019A] # LATIN SMALL LETTER L WITH BAR
-023D ; [.1701.0020.0008.023D] # LATIN CAPITAL LETTER L WITH BAR
-2C61 ; [.1705.0020.0002.2C61] # LATIN SMALL LETTER L WITH DOUBLE BAR
-2C60 ; [.1705.0020.0008.2C60] # LATIN CAPITAL LETTER L WITH DOUBLE BAR
-026B ; [.1706.0020.0002.026B] # LATIN SMALL LETTER L WITH MIDDLE TILDE
-2C62 ; [.1706.0020.0008.2C62] # LATIN CAPITAL LETTER L WITH MIDDLE TILDE
-026C ; [.170A.0020.0002.026C] # LATIN SMALL LETTER L WITH BELT
-1D85 ; [.170E.0020.0002.1D85] # LATIN SMALL LETTER L WITH PALATAL HOOK
-1DAA ; [.170E.0020.0014.1DAA] # MODIFIER LETTER SMALL L WITH PALATAL HOOK
-026D ; [.170F.0020.0002.026D] # LATIN SMALL LETTER L WITH RETROFLEX HOOK
-1DA9 ; [.170F.0020.0014.1DA9] # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
-A78E ; [.1713.0020.0002.A78E] # LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
-0234 ; [.1714.0020.0002.0234] # LATIN SMALL LETTER L WITH CURL
-A772 ; [.1718.0020.0002.A772] # LATIN SMALL LETTER LUM
-026E ; [.1719.0020.0002.026E] # LATIN SMALL LETTER LEZH
-A781 ; [.171D.0020.0002.A781] # LATIN SMALL LETTER TURNED L
-A780 ; [.171D.0020.0008.A780] # LATIN CAPITAL LETTER TURNED L
-019B ; [.171E.0020.0002.019B] # LATIN SMALL LETTER LAMBDA WITH STROKE
-028E ; [.1722.0020.0002.028E] # LATIN SMALL LETTER TURNED Y
-006D ; [.1726.0020.0002.006D] # LATIN SMALL LETTER M
-FF4D ; [.1726.0020.0003.FF4D] # FULLWIDTH LATIN SMALL LETTER M
-036B ; [.1726.0020.0004.036B] # COMBINING LATIN SMALL LETTER M
-217F ; [.1726.0020.0004.217F] # SMALL ROMAN NUMERAL ONE THOUSAND
-24A8 ; [*02FB.0020.0004.24A8][.1726.0020.0004.24A8][*02FC.0020.001F.24A8] # PARENTHESIZED LATIN SMALL LETTER M
-1D426 ; [.1726.0020.0005.1D426] # MATHEMATICAL BOLD SMALL M
-1D45A ; [.1726.0020.0005.1D45A] # MATHEMATICAL ITALIC SMALL M
-1D48E ; [.1726.0020.0005.1D48E] # MATHEMATICAL BOLD ITALIC SMALL M
-1D4C2 ; [.1726.0020.0005.1D4C2] # MATHEMATICAL SCRIPT SMALL M
-1D4F6 ; [.1726.0020.0005.1D4F6] # MATHEMATICAL BOLD SCRIPT SMALL M
-1D52A ; [.1726.0020.0005.1D52A] # MATHEMATICAL FRAKTUR SMALL M
-1D55E ; [.1726.0020.0005.1D55E] # MATHEMATICAL DOUBLE-STRUCK SMALL M
-1D592 ; [.1726.0020.0005.1D592] # MATHEMATICAL BOLD FRAKTUR SMALL M
-1D5C6 ; [.1726.0020.0005.1D5C6] # MATHEMATICAL SANS-SERIF SMALL M
-1D5FA ; [.1726.0020.0005.1D5FA] # MATHEMATICAL SANS-SERIF BOLD SMALL M
-1D62E ; [.1726.0020.0005.1D62E] # MATHEMATICAL SANS-SERIF ITALIC SMALL M
-1D662 ; [.1726.0020.0005.1D662] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
-1D696 ; [.1726.0020.0005.1D696] # MATHEMATICAL MONOSPACE SMALL M
-24DC ; [.1726.0020.0006.24DC] # CIRCLED LATIN SMALL LETTER M
-004D ; [.1726.0020.0008.004D] # LATIN CAPITAL LETTER M
-FF2D ; [.1726.0020.0009.FF2D] # FULLWIDTH LATIN CAPITAL LETTER M
-216F ; [.1726.0020.000A.216F] # ROMAN NUMERAL ONE THOUSAND
-1F11C ; [*02FB.0020.0004.1F11C][.1726.0020.000A.1F11C][*02FC.0020.001F.1F11C] # PARENTHESIZED LATIN CAPITAL LETTER M
-1F1F2 ; [.1726.0020.000A.1F1F2] # REGIONAL INDICATOR SYMBOL LETTER M
-2133 ; [.1726.0020.000B.2133] # SCRIPT CAPITAL M
-1D40C ; [.1726.0020.000B.1D40C] # MATHEMATICAL BOLD CAPITAL M
-1D440 ; [.1726.0020.000B.1D440] # MATHEMATICAL ITALIC CAPITAL M
-1D474 ; [.1726.0020.000B.1D474] # MATHEMATICAL BOLD ITALIC CAPITAL M
-1D4DC ; [.1726.0020.000B.1D4DC] # MATHEMATICAL BOLD SCRIPT CAPITAL M
-1D510 ; [.1726.0020.000B.1D510] # MATHEMATICAL FRAKTUR CAPITAL M
-1D544 ; [.1726.0020.000B.1D544] # MATHEMATICAL DOUBLE-STRUCK CAPITAL M
-1D578 ; [.1726.0020.000B.1D578] # MATHEMATICAL BOLD FRAKTUR CAPITAL M
-1D5AC ; [.1726.0020.000B.1D5AC] # MATHEMATICAL SANS-SERIF CAPITAL M
-1D5E0 ; [.1726.0020.000B.1D5E0] # MATHEMATICAL SANS-SERIF BOLD CAPITAL M
-1D614 ; [.1726.0020.000B.1D614] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
-1D648 ; [.1726.0020.000B.1D648] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
-1D67C ; [.1726.0020.000B.1D67C] # MATHEMATICAL MONOSPACE CAPITAL M
-24C2 ; [.1726.0020.000C.24C2] # CIRCLED LATIN CAPITAL LETTER M
-1F15C ; [.1726.0020.000C.1F15C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER M
-1D50 ; [.1726.0020.0014.1D50] # MODIFIER LETTER SMALL M
-2098 ; [.1726.0020.0015.2098] # LATIN SUBSCRIPT SMALL LETTER M
-1D39 ; [.1726.0020.001D.1D39] # MODIFIER LETTER CAPITAL M
-1F13C ; [.1726.0020.001D.1F13C] # SQUARED LATIN CAPITAL LETTER M
-1F17C ; [.1726.0020.001D.1F17C] # NEGATIVE SQUARED LATIN CAPITAL LETTER M
-1E3F ; [.1726.0020.0002.006D][.0000.0032.0002.0301] # LATIN SMALL LETTER M WITH ACUTE
-1E3E ; [.1726.0020.0008.004D][.0000.0032.0002.0301] # LATIN CAPITAL LETTER M WITH ACUTE
-1E41 ; [.1726.0020.0002.006D][.0000.0052.0002.0307] # LATIN SMALL LETTER M WITH DOT ABOVE
-1E40 ; [.1726.0020.0008.004D][.0000.0052.0002.0307] # LATIN CAPITAL LETTER M WITH DOT ABOVE
-1E43 ; [.1726.0020.0002.006D][.0000.0070.0002.0323] # LATIN SMALL LETTER M WITH DOT BELOW
-1E42 ; [.1726.0020.0008.004D][.0000.0070.0002.0323] # LATIN CAPITAL LETTER M WITH DOT BELOW
-33A1 ; [.1726.0020.001C.33A1][.15CC.0020.001C.33A1] # SQUARE M SQUARED
-33A5 ; [.1726.0020.001C.33A5][.15CD.0020.001C.33A5] # SQUARE M CUBED
-3383 ; [.1726.0020.001C.3383][.15D4.0020.001D.3383] # SQUARE MA
-33D4 ; [.1726.0020.001C.33D4][.15EA.0020.001C.33D4] # SQUARE MB SMALL
-3386 ; [.1726.0020.001D.3386][.15EA.0020.001D.3386] # SQUARE MB
-1F16A ; [.1726.0020.0014.1F16A][.1602.0020.0014.1F16A] # RAISED MC SIGN
-1F16B ; [.1726.0020.0014.1F16B][.1616.0020.0014.1F16B] # RAISED MD SIGN
-338E ; [.1726.0020.001C.338E][.1676.0020.001C.338E] # SQUARE MG
-3392 ; [.1726.0020.001D.3392][.1699.0020.001D.3392][.187A.0020.001F.3392] # SQUARE MHZ
-33D5 ; [.1726.0020.001C.33D5][.16B2.0020.001C.33D5][.16F6.0020.001F.33D5] # SQUARE MIL
-3396 ; [.1726.0020.001C.3396][.16F6.0020.001C.3396] # SQUARE ML
-339C ; [.1726.0020.001C.339C][.1726.0020.001C.339C] # SQUARE MM
-339F ; [.1726.0020.001C.339F][.1726.0020.001C.339F][.15CC.0020.001F.339F] # SQUARE MM SQUARED
-33A3 ; [.1726.0020.001C.33A3][.1726.0020.001C.33A3][.15CD.0020.001F.33A3] # SQUARE MM CUBED
-33D6 ; [.1726.0020.001C.33D6][.1756.0020.001C.33D6][.16F6.0020.001F.33D6] # SQUARE MOL
-33AB ; [.1726.0020.001D.33AB][.177B.0020.001D.33AB][.15D4.0020.001F.33AB] # SQUARE MPA
-33B3 ; [.1726.0020.001C.33B3][.17D8.0020.001C.33B3] # SQUARE MS
-33A7 ; [.1726.0020.001C.33A7][*05AB.0020.001C.33A7][.17D8.0020.001F.33A7] # SQUARE M OVER S
-33A8 ; [.1726.0020.001C.33A8][*05AB.0020.001C.33A8][.17D8.0020.001F.33A8][.15CC.0020.001F.33A8] # SQUARE M OVER S SQUARED
-33B7 ; [.1726.0020.001C.33B7][.1844.0020.001D.33B7] # SQUARE MV
-33B9 ; [.1726.0020.001D.33B9][.1844.0020.001D.33B9] # SQUARE MV MEGA
-1F14B ; [.1726.0020.001D.1F14B][.1844.0020.001D.1F14B] # SQUARED MV
-33BD ; [.1726.0020.001C.33BD][.1856.0020.001D.33BD] # SQUARE MW
-33BF ; [.1726.0020.001D.33BF][.1856.0020.001D.33BF] # SQUARE MW MEGA
-33C1 ; [.1726.0020.001D.33C1][.1936.0020.001D.33C1] # SQUARE M OHM
-1D0D ; [.172A.0020.0002.1D0D] # LATIN LETTER SMALL CAPITAL M
-1DDF ; [.172A.0020.0004.1DDF] # COMBINING LATIN LETTER SMALL CAPITAL M
-1D6F ; [.172B.0020.0002.1D6F] # LATIN SMALL LETTER M WITH MIDDLE TILDE
-1D86 ; [.172C.0020.0002.1D86] # LATIN SMALL LETTER M WITH PALATAL HOOK
-0271 ; [.172D.0020.0002.0271] # LATIN SMALL LETTER M WITH HOOK
-2C6E ; [.172D.0020.0008.2C6E] # LATIN CAPITAL LETTER M WITH HOOK
-1DAC ; [.172D.0020.0014.1DAC] # MODIFIER LETTER SMALL M WITH HOOK
-A7FD ; [.1731.0020.0002.A7FD] # LATIN EPIGRAPHIC LETTER INVERTED M
-A7FF ; [.1732.0020.0002.A7FF] # LATIN EPIGRAPHIC LETTER ARCHAIC M
-A773 ; [.1733.0020.0002.A773] # LATIN SMALL LETTER MUM
-006E ; [.1734.0020.0002.006E] # LATIN SMALL LETTER N
-FF4E ; [.1734.0020.0003.FF4E] # FULLWIDTH LATIN SMALL LETTER N
-1DE0 ; [.1734.0020.0004.1DE0] # COMBINING LATIN SMALL LETTER N
-24A9 ; [*02FB.0020.0004.24A9][.1734.0020.0004.24A9][*02FC.0020.001F.24A9] # PARENTHESIZED LATIN SMALL LETTER N
-1D427 ; [.1734.0020.0005.1D427] # MATHEMATICAL BOLD SMALL N
-1D45B ; [.1734.0020.0005.1D45B] # MATHEMATICAL ITALIC SMALL N
-1D48F ; [.1734.0020.0005.1D48F] # MATHEMATICAL BOLD ITALIC SMALL N
-1D4C3 ; [.1734.0020.0005.1D4C3] # MATHEMATICAL SCRIPT SMALL N
-1D4F7 ; [.1734.0020.0005.1D4F7] # MATHEMATICAL BOLD SCRIPT SMALL N
-1D52B ; [.1734.0020.0005.1D52B] # MATHEMATICAL FRAKTUR SMALL N
-1D55F ; [.1734.0020.0005.1D55F] # MATHEMATICAL DOUBLE-STRUCK SMALL N
-1D593 ; [.1734.0020.0005.1D593] # MATHEMATICAL BOLD FRAKTUR SMALL N
-1D5C7 ; [.1734.0020.0005.1D5C7] # MATHEMATICAL SANS-SERIF SMALL N
-1D5FB ; [.1734.0020.0005.1D5FB] # MATHEMATICAL SANS-SERIF BOLD SMALL N
-1D62F ; [.1734.0020.0005.1D62F] # MATHEMATICAL SANS-SERIF ITALIC SMALL N
-1D663 ; [.1734.0020.0005.1D663] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
-1D697 ; [.1734.0020.0005.1D697] # MATHEMATICAL MONOSPACE SMALL N
-24DD ; [.1734.0020.0006.24DD] # CIRCLED LATIN SMALL LETTER N
-004E ; [.1734.0020.0008.004E] # LATIN CAPITAL LETTER N
-FF2E ; [.1734.0020.0009.FF2E] # FULLWIDTH LATIN CAPITAL LETTER N
-1F11D ; [*02FB.0020.0004.1F11D][.1734.0020.000A.1F11D][*02FC.0020.001F.1F11D] # PARENTHESIZED LATIN CAPITAL LETTER N
-1F1F3 ; [.1734.0020.000A.1F1F3] # REGIONAL INDICATOR SYMBOL LETTER N
-2115 ; [.1734.0020.000B.2115] # DOUBLE-STRUCK CAPITAL N
-1D40D ; [.1734.0020.000B.1D40D] # MATHEMATICAL BOLD CAPITAL N
-1D441 ; [.1734.0020.000B.1D441] # MATHEMATICAL ITALIC CAPITAL N
-1D475 ; [.1734.0020.000B.1D475] # MATHEMATICAL BOLD ITALIC CAPITAL N
-1D4A9 ; [.1734.0020.000B.1D4A9] # MATHEMATICAL SCRIPT CAPITAL N
-1D4DD ; [.1734.0020.000B.1D4DD] # MATHEMATICAL BOLD SCRIPT CAPITAL N
-1D511 ; [.1734.0020.000B.1D511] # MATHEMATICAL FRAKTUR CAPITAL N
-1D579 ; [.1734.0020.000B.1D579] # MATHEMATICAL BOLD FRAKTUR CAPITAL N
-1D5AD ; [.1734.0020.000B.1D5AD] # MATHEMATICAL SANS-SERIF CAPITAL N
-1D5E1 ; [.1734.0020.000B.1D5E1] # MATHEMATICAL SANS-SERIF BOLD CAPITAL N
-1D615 ; [.1734.0020.000B.1D615] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
-1D649 ; [.1734.0020.000B.1D649] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
-1D67D ; [.1734.0020.000B.1D67D] # MATHEMATICAL MONOSPACE CAPITAL N
-24C3 ; [.1734.0020.000C.24C3] # CIRCLED LATIN CAPITAL LETTER N
-1F15D ; [.1734.0020.000C.1F15D] # NEGATIVE CIRCLED LATIN CAPITAL LETTER N
-207F ; [.1734.0020.0014.207F] # SUPERSCRIPT LATIN SMALL LETTER N
-2099 ; [.1734.0020.0015.2099] # LATIN SUBSCRIPT SMALL LETTER N
-1D3A ; [.1734.0020.001D.1D3A] # MODIFIER LETTER CAPITAL N
-1F13D ; [.1734.0020.001D.1F13D] # SQUARED LATIN CAPITAL LETTER N
-1F17D ; [.1734.0020.001D.1F17D] # NEGATIVE SQUARED LATIN CAPITAL LETTER N
-0144 ; [.1734.0020.0002.006E][.0000.0032.0002.0301] # LATIN SMALL LETTER N WITH ACUTE
-0143 ; [.1734.0020.0008.004E][.0000.0032.0002.0301] # LATIN CAPITAL LETTER N WITH ACUTE
-01F9 ; [.1734.0020.0002.006E][.0000.0035.0002.0300] # LATIN SMALL LETTER N WITH GRAVE
-01F8 ; [.1734.0020.0008.004E][.0000.0035.0002.0300] # LATIN CAPITAL LETTER N WITH GRAVE
-0148 ; [.1734.0020.0002.006E][.0000.0041.0002.030C] # LATIN SMALL LETTER N WITH CARON
-0147 ; [.1734.0020.0008.004E][.0000.0041.0002.030C] # LATIN CAPITAL LETTER N WITH CARON
-00F1 ; [.1734.0020.0002.006E][.0000.004E.0002.0303] # LATIN SMALL LETTER N WITH TILDE
-00D1 ; [.1734.0020.0008.004E][.0000.004E.0002.0303] # LATIN CAPITAL LETTER N WITH TILDE
-1E45 ; [.1734.0020.0002.006E][.0000.0052.0002.0307] # LATIN SMALL LETTER N WITH DOT ABOVE
-1E44 ; [.1734.0020.0008.004E][.0000.0052.0002.0307] # LATIN CAPITAL LETTER N WITH DOT ABOVE
-0146 ; [.1734.0020.0002.006E][.0000.0056.0002.0327] # LATIN SMALL LETTER N WITH CEDILLA
-0145 ; [.1734.0020.0008.004E][.0000.0056.0002.0327] # LATIN CAPITAL LETTER N WITH CEDILLA
-A7A5 ; [.1734.0020.0004.A7A5][.0000.0061.0004.A7A5] # LATIN SMALL LETTER N WITH OBLIQUE STROKE
-A7A4 ; [.1734.0020.000A.A7A4][.0000.0061.0004.A7A4] # LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
-1E47 ; [.1734.0020.0002.006E][.0000.0070.0002.0323] # LATIN SMALL LETTER N WITH DOT BELOW
-1E46 ; [.1734.0020.0008.004E][.0000.0070.0002.0323] # LATIN CAPITAL LETTER N WITH DOT BELOW
-1E4B ; [.1734.0020.0002.006E][.0000.0078.0002.032D] # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
-1E4A ; [.1734.0020.0008.004E][.0000.0078.0002.032D] # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
-1E49 ; [.1734.0020.0002.006E][.0000.007B.0002.0331] # LATIN SMALL LETTER N WITH LINE BELOW
-1E48 ; [.1734.0020.0008.004E][.0000.007B.0002.0331] # LATIN CAPITAL LETTER N WITH LINE BELOW
-3381 ; [.1734.0020.001C.3381][.15D4.0020.001D.3381] # SQUARE NA
-1F195 ; [.1734.0020.001D.1F195][.1631.0020.001D.1F195][.1856.0020.001F.1F195] # SQUARED NEW
-338B ; [.1734.0020.001C.338B][.1669.0020.001D.338B] # SQUARE NF
-1F196 ; [.1734.0020.001D.1F196][.1676.0020.001D.1F196] # SQUARED NG
-01CC ; [.1734.0020.0004.01CC][.16CB.0020.0004.01CC] # LATIN SMALL LETTER NJ
-01CB ; [.1734.0020.000A.01CB][.16CB.0020.0004.01CB] # LATIN CAPITAL LETTER N WITH SMALL LETTER J
-01CA ; [.1734.0020.000A.01CA][.16CB.0020.000A.01CA] # LATIN CAPITAL LETTER NJ
-339A ; [.1734.0020.001C.339A][.1726.0020.001C.339A] # SQUARE NM
-2116 ; [.1734.0020.000A.2116][.1756.0020.0004.2116] # NUMERO SIGN
-33B1 ; [.1734.0020.001C.33B1][.17D8.0020.001C.33B1] # SQUARE NS
-33B5 ; [.1734.0020.001C.33B5][.1844.0020.001D.33B5] # SQUARE NV
-33BB ; [.1734.0020.001C.33BB][.1856.0020.001D.33BB] # SQUARE NW
-0274 ; [.1738.0020.0002.0274] # LATIN LETTER SMALL CAPITAL N
-1DE1 ; [.1738.0020.0004.1DE1] # COMBINING LATIN LETTER SMALL CAPITAL N
-1DB0 ; [.1738.0020.0014.1DB0] # MODIFIER LETTER SMALL CAPITAL N
-1D3B ; [.173C.0020.0002.1D3B] # MODIFIER LETTER CAPITAL REVERSED N
-1D0E ; [.173D.0020.0002.1D0E] # LATIN LETTER SMALL CAPITAL REVERSED N
-1D70 ; [.173E.0020.0002.1D70] # LATIN SMALL LETTER N WITH MIDDLE TILDE
-0272 ; [.173F.0020.0002.0272] # LATIN SMALL LETTER N WITH LEFT HOOK
-019D ; [.173F.0020.0008.019D] # LATIN CAPITAL LETTER N WITH LEFT HOOK
-1DAE ; [.173F.0020.0014.1DAE] # MODIFIER LETTER SMALL N WITH LEFT HOOK
-019E ; [.1743.0020.0002.019E] # LATIN SMALL LETTER N WITH LONG RIGHT LEG
-0220 ; [.1743.0020.0008.0220] # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
-A791 ; [.1747.0020.0002.A791] # LATIN SMALL LETTER N WITH DESCENDER
-A790 ; [.1747.0020.0008.A790] # LATIN CAPITAL LETTER N WITH DESCENDER
-1D87 ; [.1748.0020.0002.1D87] # LATIN SMALL LETTER N WITH PALATAL HOOK
-0273 ; [.1749.0020.0002.0273] # LATIN SMALL LETTER N WITH RETROFLEX HOOK
-1DAF ; [.1749.0020.0014.1DAF] # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
-0235 ; [.174D.0020.0002.0235] # LATIN SMALL LETTER N WITH CURL
-A774 ; [.1751.0020.0002.A774] # LATIN SMALL LETTER NUM
-014B ; [.1752.0020.0002.014B] # LATIN SMALL LETTER ENG
-014A ; [.1752.0020.0008.014A] # LATIN CAPITAL LETTER ENG
-1D51 ; [.1752.0020.0014.1D51] # MODIFIER LETTER SMALL ENG
-006F ; [.1756.0020.0002.006F] # LATIN SMALL LETTER O
-FF4F ; [.1756.0020.0003.FF4F] # FULLWIDTH LATIN SMALL LETTER O
-0366 ; [.1756.0020.0004.0366] # COMBINING LATIN SMALL LETTER O
-24AA ; [*02FB.0020.0004.24AA][.1756.0020.0004.24AA][*02FC.0020.001F.24AA] # PARENTHESIZED LATIN SMALL LETTER O
-2134 ; [.1756.0020.0005.2134] # SCRIPT SMALL O
-1D428 ; [.1756.0020.0005.1D428] # MATHEMATICAL BOLD SMALL O
-1D45C ; [.1756.0020.0005.1D45C] # MATHEMATICAL ITALIC SMALL O
-1D490 ; [.1756.0020.0005.1D490] # MATHEMATICAL BOLD ITALIC SMALL O
-1D4F8 ; [.1756.0020.0005.1D4F8] # MATHEMATICAL BOLD SCRIPT SMALL O
-1D52C ; [.1756.0020.0005.1D52C] # MATHEMATICAL FRAKTUR SMALL O
-1D560 ; [.1756.0020.0005.1D560] # MATHEMATICAL DOUBLE-STRUCK SMALL O
-1D594 ; [.1756.0020.0005.1D594] # MATHEMATICAL BOLD FRAKTUR SMALL O
-1D5C8 ; [.1756.0020.0005.1D5C8] # MATHEMATICAL SANS-SERIF SMALL O
-1D5FC ; [.1756.0020.0005.1D5FC] # MATHEMATICAL SANS-SERIF BOLD SMALL O
-1D630 ; [.1756.0020.0005.1D630] # MATHEMATICAL SANS-SERIF ITALIC SMALL O
-1D664 ; [.1756.0020.0005.1D664] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
-1D698 ; [.1756.0020.0005.1D698] # MATHEMATICAL MONOSPACE SMALL O
-24DE ; [.1756.0020.0006.24DE] # CIRCLED LATIN SMALL LETTER O
-004F ; [.1756.0020.0008.004F] # LATIN CAPITAL LETTER O
-FF2F ; [.1756.0020.0009.FF2F] # FULLWIDTH LATIN CAPITAL LETTER O
-1F11E ; [*02FB.0020.0004.1F11E][.1756.0020.000A.1F11E][*02FC.0020.001F.1F11E] # PARENTHESIZED LATIN CAPITAL LETTER O
-1F1F4 ; [.1756.0020.000A.1F1F4] # REGIONAL INDICATOR SYMBOL LETTER O
-1D40E ; [.1756.0020.000B.1D40E] # MATHEMATICAL BOLD CAPITAL O
-1D442 ; [.1756.0020.000B.1D442] # MATHEMATICAL ITALIC CAPITAL O
-1D476 ; [.1756.0020.000B.1D476] # MATHEMATICAL BOLD ITALIC CAPITAL O
-1D4AA ; [.1756.0020.000B.1D4AA] # MATHEMATICAL SCRIPT CAPITAL O
-1D4DE ; [.1756.0020.000B.1D4DE] # MATHEMATICAL BOLD SCRIPT CAPITAL O
-1D512 ; [.1756.0020.000B.1D512] # MATHEMATICAL FRAKTUR CAPITAL O
-1D546 ; [.1756.0020.000B.1D546] # MATHEMATICAL DOUBLE-STRUCK CAPITAL O
-1D57A ; [.1756.0020.000B.1D57A] # MATHEMATICAL BOLD FRAKTUR CAPITAL O
-1D5AE ; [.1756.0020.000B.1D5AE] # MATHEMATICAL SANS-SERIF CAPITAL O
-1D5E2 ; [.1756.0020.000B.1D5E2] # MATHEMATICAL SANS-SERIF BOLD CAPITAL O
-1D616 ; [.1756.0020.000B.1D616] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
-1D64A ; [.1756.0020.000B.1D64A] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
-1D67E ; [.1756.0020.000B.1D67E] # MATHEMATICAL MONOSPACE CAPITAL O
-24C4 ; [.1756.0020.000C.24C4] # CIRCLED LATIN CAPITAL LETTER O
-1F15E ; [.1756.0020.000C.1F15E] # NEGATIVE CIRCLED LATIN CAPITAL LETTER O
-00BA ; [.1756.0020.0014.00BA] # MASCULINE ORDINAL INDICATOR
-1D52 ; [.1756.0020.0014.1D52] # MODIFIER LETTER SMALL O
-2092 ; [.1756.0020.0015.2092] # LATIN SUBSCRIPT SMALL LETTER O
-1D3C ; [.1756.0020.001D.1D3C] # MODIFIER LETTER CAPITAL O
-1F13E ; [.1756.0020.001D.1F13E] # SQUARED LATIN CAPITAL LETTER O
-1F17E ; [.1756.0020.001D.1F17E] # NEGATIVE SQUARED LATIN CAPITAL LETTER O
-00F3 ; [.1756.0020.0002.006F][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH ACUTE
-00D3 ; [.1756.0020.0008.004F][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH ACUTE
-00F2 ; [.1756.0020.0002.006F][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH GRAVE
-00D2 ; [.1756.0020.0008.004F][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH GRAVE
-014F ; [.1756.0020.0002.006F][.0000.0037.0002.0306] # LATIN SMALL LETTER O WITH BREVE
-014E ; [.1756.0020.0008.004F][.0000.0037.0002.0306] # LATIN CAPITAL LETTER O WITH BREVE
-00F4 ; [.1756.0020.0002.006F][.0000.003C.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX
-00D4 ; [.1756.0020.0008.004F][.0000.003C.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-1ED1 ; [.1756.0020.0002.006F][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED0 ; [.1756.0020.0008.004F][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED3 ; [.1756.0020.0002.006F][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED2 ; [.1756.0020.0008.004F][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED7 ; [.1756.0020.0002.006F][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED6 ; [.1756.0020.0008.004F][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED5 ; [.1756.0020.0002.006F][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED4 ; [.1756.0020.0008.004F][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-01D2 ; [.1756.0020.0002.006F][.0000.0041.0002.030C] # LATIN SMALL LETTER O WITH CARON
-01D1 ; [.1756.0020.0008.004F][.0000.0041.0002.030C] # LATIN CAPITAL LETTER O WITH CARON
-00F6 ; [.1756.0020.0002.006F][.0000.0047.0002.0308] # LATIN SMALL LETTER O WITH DIAERESIS
-00D6 ; [.1756.0020.0008.004F][.0000.0047.0002.0308] # LATIN CAPITAL LETTER O WITH DIAERESIS
-022B ; [.1756.0020.0002.006F][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022A ; [.1756.0020.0008.004F][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-0151 ; [.1756.0020.0002.006F][.0000.004D.0002.030B] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0150 ; [.1756.0020.0008.004F][.0000.004D.0002.030B] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-00F5 ; [.1756.0020.0002.006F][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH TILDE
-00D5 ; [.1756.0020.0008.004F][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH TILDE
-1E4D ; [.1756.0020.0002.006F][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH TILDE AND ACUTE
-1E4C ; [.1756.0020.0008.004F][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-1E4F ; [.1756.0020.0002.006F][.0000.004E.0002.0303][.0000.0047.0002.0308] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
-1E4E ; [.1756.0020.0008.004F][.0000.004E.0002.0303][.0000.0047.0002.0308] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-022D ; [.1756.0020.0002.006F][.0000.004E.0002.0303][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH TILDE AND MACRON
-022C ; [.1756.0020.0008.004F][.0000.004E.0002.0303][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
-022F ; [.1756.0020.0002.006F][.0000.0052.0002.0307] # LATIN SMALL LETTER O WITH DOT ABOVE
-022E ; [.1756.0020.0008.004F][.0000.0052.0002.0307] # LATIN CAPITAL LETTER O WITH DOT ABOVE
-0231 ; [.1756.0020.0002.006F][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
-0230 ; [.1756.0020.0008.004F][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
-00F8 ; [.1756.0020.0002.006F][.0000.0054.0002.0338] # LATIN SMALL LETTER O WITH STROKE
-00D8 ; [.1756.0020.0008.004F][.0000.0054.0002.0338] # LATIN CAPITAL LETTER O WITH STROKE
-01FF ; [.1756.0020.0002.006F][.0000.0054.0002.0338][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-01FE ; [.1756.0020.0008.004F][.0000.0054.0002.0338][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-01EB ; [.1756.0020.0002.006F][.0000.0059.0002.0328] # LATIN SMALL LETTER O WITH OGONEK
-01EA ; [.1756.0020.0008.004F][.0000.0059.0002.0328] # LATIN CAPITAL LETTER O WITH OGONEK
-01ED ; [.1756.0020.0002.006F][.0000.0059.0002.0328][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH OGONEK AND MACRON
-01EC ; [.1756.0020.0008.004F][.0000.0059.0002.0328][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
-014D ; [.1756.0020.0002.006F][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH MACRON
-014C ; [.1756.0020.0008.004F][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH MACRON
-1E53 ; [.1756.0020.0002.006F][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH MACRON AND ACUTE
-1E52 ; [.1756.0020.0008.004F][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
-1E51 ; [.1756.0020.0002.006F][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH MACRON AND GRAVE
-1E50 ; [.1756.0020.0008.004F][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
-1ECF ; [.1756.0020.0002.006F][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH HOOK ABOVE
-1ECE ; [.1756.0020.0008.004F][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH HOOK ABOVE
-020D ; [.1756.0020.0002.006F][.0000.0065.0002.030F] # LATIN SMALL LETTER O WITH DOUBLE GRAVE
-020C ; [.1756.0020.0008.004F][.0000.0065.0002.030F] # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
-020F ; [.1756.0020.0002.006F][.0000.0067.0002.0311] # LATIN SMALL LETTER O WITH INVERTED BREVE
-020E ; [.1756.0020.0008.004F][.0000.0067.0002.0311] # LATIN CAPITAL LETTER O WITH INVERTED BREVE
-01A1 ; [.1756.0020.0002.006F][.0000.0068.0002.031B] # LATIN SMALL LETTER O WITH HORN
-01A0 ; [.1756.0020.0008.004F][.0000.0068.0002.031B] # LATIN CAPITAL LETTER O WITH HORN
-1EDB ; [.1756.0020.0002.006F][.0000.0068.0002.031B][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH HORN AND ACUTE
-1EDA ; [.1756.0020.0008.004F][.0000.0068.0002.031B][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
-1EDD ; [.1756.0020.0002.006F][.0000.0068.0002.031B][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH HORN AND GRAVE
-1EDC ; [.1756.0020.0008.004F][.0000.0068.0002.031B][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
-1EE1 ; [.1756.0020.0002.006F][.0000.0068.0002.031B][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH HORN AND TILDE
-1EE0 ; [.1756.0020.0008.004F][.0000.0068.0002.031B][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH HORN AND TILDE
-1EDF ; [.1756.0020.0002.006F][.0000.0068.0002.031B][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
-1EDE ; [.1756.0020.0008.004F][.0000.0068.0002.031B][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
-1EE3 ; [.1756.0020.0002.006F][.0000.0068.0002.031B][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
-1EE2 ; [.1756.0020.0008.004F][.0000.0068.0002.031B][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-1ECD ; [.1756.0020.0002.006F][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH DOT BELOW
-1ECC ; [.1756.0020.0008.004F][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH DOT BELOW
-1ED9 ; [.1756.0020.0002.006F][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED8 ; [.1756.0020.0008.004F][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-0153 ; [.1756.0020.0004.0153][.0000.0139.0004.0153][.1631.0020.001F.0153] # LATIN SMALL LIGATURE OE
-0152 ; [.1756.0020.000A.0152][.0000.0139.0004.0152][.1631.0020.001F.0152] # LATIN CAPITAL LIGATURE OE
-A7F9 ; [.1756.0020.0014.A7F9][.0000.0139.0014.A7F9][.1631.0020.001F.A7F9] # MODIFIER LETTER SMALL LIGATURE OE
-1F197 ; [.1756.0020.001D.1F197][.16E4.0020.001D.1F197] # SQUARED OK
-A74F ; [.1756.0020.0004.A74F][.1756.0020.0004.A74F] # LATIN SMALL LETTER OO
-A74E ; [.1756.0020.000A.A74E][.1756.0020.000A.A74E] # LATIN CAPITAL LETTER OO
-3375 ; [.1756.0020.001C.3375][.1844.0020.001D.3375] # SQUARE OV
-1D0F ; [.175A.0020.0002.1D0F] # LATIN LETTER SMALL CAPITAL O
-1D11 ; [.175B.0020.0002.1D11] # LATIN SMALL LETTER SIDEWAYS O
-0276 ; [.175C.0020.0002.0276] # LATIN LETTER SMALL CAPITAL OE
-1D14 ; [.1760.0020.0002.1D14] # LATIN SMALL LETTER TURNED OE
-1D13 ; [.1761.0020.0002.1D13] # LATIN SMALL LETTER SIDEWAYS O WITH STROKE
-0254 ; [.1762.0020.0002.0254] # LATIN SMALL LETTER OPEN O
-0186 ; [.1762.0020.0008.0186] # LATIN CAPITAL LETTER OPEN O
-1D53 ; [.1762.0020.0014.1D53] # MODIFIER LETTER SMALL OPEN O
-1D10 ; [.1766.0020.0002.1D10] # LATIN LETTER SMALL CAPITAL OPEN O
-1D12 ; [.1767.0020.0002.1D12] # LATIN SMALL LETTER SIDEWAYS OPEN O
-1D97 ; [.1768.0020.0002.1D97] # LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK
-A74D ; [.1769.0020.0002.A74D] # LATIN SMALL LETTER O WITH LOOP
-A74C ; [.1769.0020.0008.A74C] # LATIN CAPITAL LETTER O WITH LOOP
-1D16 ; [.176A.0020.0002.1D16] # LATIN SMALL LETTER TOP HALF O
-1D54 ; [.176A.0020.0014.1D54] # MODIFIER LETTER SMALL TOP HALF O
-1D17 ; [.176B.0020.0002.1D17] # LATIN SMALL LETTER BOTTOM HALF O
-1D55 ; [.176B.0020.0014.1D55] # MODIFIER LETTER SMALL BOTTOM HALF O
-2C7A ; [.176C.0020.0002.2C7A] # LATIN SMALL LETTER O WITH LOW RING INSIDE
-0275 ; [.176D.0020.0002.0275] # LATIN SMALL LETTER BARRED O
-019F ; [.176D.0020.0008.019F] # LATIN CAPITAL LETTER O WITH MIDDLE TILDE
-1DB1 ; [.176D.0020.0014.1DB1] # MODIFIER LETTER SMALL BARRED O
-A74B ; [.1771.0020.0002.A74B] # LATIN SMALL LETTER O WITH LONG STROKE OVERLAY
-A74A ; [.1771.0020.0008.A74A] # LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
-0277 ; [.1772.0020.0002.0277] # LATIN SMALL LETTER CLOSED OMEGA
-0223 ; [.1776.0020.0002.0223] # LATIN SMALL LETTER OU
-0222 ; [.1776.0020.0008.0222] # LATIN CAPITAL LETTER OU
-1D3D ; [.1776.0020.001D.1D3D] # MODIFIER LETTER CAPITAL OU
-1D15 ; [.177A.0020.0002.1D15] # LATIN LETTER SMALL CAPITAL OU
-0070 ; [.177B.0020.0002.0070] # LATIN SMALL LETTER P
-FF50 ; [.177B.0020.0003.FF50] # FULLWIDTH LATIN SMALL LETTER P
-24AB ; [*02FB.0020.0004.24AB][.177B.0020.0004.24AB][*02FC.0020.001F.24AB] # PARENTHESIZED LATIN SMALL LETTER P
-1D429 ; [.177B.0020.0005.1D429] # MATHEMATICAL BOLD SMALL P
-1D45D ; [.177B.0020.0005.1D45D] # MATHEMATICAL ITALIC SMALL P
-1D491 ; [.177B.0020.0005.1D491] # MATHEMATICAL BOLD ITALIC SMALL P
-1D4C5 ; [.177B.0020.0005.1D4C5] # MATHEMATICAL SCRIPT SMALL P
-1D4F9 ; [.177B.0020.0005.1D4F9] # MATHEMATICAL BOLD SCRIPT SMALL P
-1D52D ; [.177B.0020.0005.1D52D] # MATHEMATICAL FRAKTUR SMALL P
-1D561 ; [.177B.0020.0005.1D561] # MATHEMATICAL DOUBLE-STRUCK SMALL P
-1D595 ; [.177B.0020.0005.1D595] # MATHEMATICAL BOLD FRAKTUR SMALL P
-1D5C9 ; [.177B.0020.0005.1D5C9] # MATHEMATICAL SANS-SERIF SMALL P
-1D5FD ; [.177B.0020.0005.1D5FD] # MATHEMATICAL SANS-SERIF BOLD SMALL P
-1D631 ; [.177B.0020.0005.1D631] # MATHEMATICAL SANS-SERIF ITALIC SMALL P
-1D665 ; [.177B.0020.0005.1D665] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
-1D699 ; [.177B.0020.0005.1D699] # MATHEMATICAL MONOSPACE SMALL P
-24DF ; [.177B.0020.0006.24DF] # CIRCLED LATIN SMALL LETTER P
-0050 ; [.177B.0020.0008.0050] # LATIN CAPITAL LETTER P
-FF30 ; [.177B.0020.0009.FF30] # FULLWIDTH LATIN CAPITAL LETTER P
-1F11F ; [*02FB.0020.0004.1F11F][.177B.0020.000A.1F11F][*02FC.0020.001F.1F11F] # PARENTHESIZED LATIN CAPITAL LETTER P
-1F1F5 ; [.177B.0020.000A.1F1F5] # REGIONAL INDICATOR SYMBOL LETTER P
-2119 ; [.177B.0020.000B.2119] # DOUBLE-STRUCK CAPITAL P
-1D40F ; [.177B.0020.000B.1D40F] # MATHEMATICAL BOLD CAPITAL P
-1D443 ; [.177B.0020.000B.1D443] # MATHEMATICAL ITALIC CAPITAL P
-1D477 ; [.177B.0020.000B.1D477] # MATHEMATICAL BOLD ITALIC CAPITAL P
-1D4AB ; [.177B.0020.000B.1D4AB] # MATHEMATICAL SCRIPT CAPITAL P
-1D4DF ; [.177B.0020.000B.1D4DF] # MATHEMATICAL BOLD SCRIPT CAPITAL P
-1D513 ; [.177B.0020.000B.1D513] # MATHEMATICAL FRAKTUR CAPITAL P
-1D57B ; [.177B.0020.000B.1D57B] # MATHEMATICAL BOLD FRAKTUR CAPITAL P
-1D5AF ; [.177B.0020.000B.1D5AF] # MATHEMATICAL SANS-SERIF CAPITAL P
-1D5E3 ; [.177B.0020.000B.1D5E3] # MATHEMATICAL SANS-SERIF BOLD CAPITAL P
-1D617 ; [.177B.0020.000B.1D617] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
-1D64B ; [.177B.0020.000B.1D64B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
-1D67F ; [.177B.0020.000B.1D67F] # MATHEMATICAL MONOSPACE CAPITAL P
-24C5 ; [.177B.0020.000C.24C5] # CIRCLED LATIN CAPITAL LETTER P
-1F15F ; [.177B.0020.000C.1F15F] # NEGATIVE CIRCLED LATIN CAPITAL LETTER P
-1D56 ; [.177B.0020.0014.1D56] # MODIFIER LETTER SMALL P
-209A ; [.177B.0020.0015.209A] # LATIN SUBSCRIPT SMALL LETTER P
-1D3E ; [.177B.0020.001D.1D3E] # MODIFIER LETTER CAPITAL P
-1F13F ; [.177B.0020.001D.1F13F] # SQUARED LATIN CAPITAL LETTER P
-1F17F ; [.177B.0020.001D.1F17F] # NEGATIVE SQUARED LATIN CAPITAL LETTER P
-1F18A ; [.177B.0020.001D.1F18A] # CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P
-1E55 ; [.177B.0020.0002.0070][.0000.0032.0002.0301] # LATIN SMALL LETTER P WITH ACUTE
-1E54 ; [.177B.0020.0008.0050][.0000.0032.0002.0301] # LATIN CAPITAL LETTER P WITH ACUTE
-1E57 ; [.177B.0020.0002.0070][.0000.0052.0002.0307] # LATIN SMALL LETTER P WITH DOT ABOVE
-1E56 ; [.177B.0020.0008.0050][.0000.0052.0002.0307] # LATIN CAPITAL LETTER P WITH DOT ABOVE
-3380 ; [.177B.0020.001C.3380][.15D4.0020.001D.3380] # SQUARE PA AMPS
-33A9 ; [.177B.0020.001D.33A9][.15D4.0020.001C.33A9] # SQUARE PA
-1F18C ; [.177B.0020.001D.1F18C][.15D4.0020.001D.1F18C] # NEGATIVE SQUARED PA
-3376 ; [.177B.0020.001C.3376][.1602.0020.001C.3376] # SQUARE PC
-338A ; [.177B.0020.001C.338A][.1669.0020.001D.338A] # SQUARE PF
-33D7 ; [.177B.0020.001D.33D7][.1699.0020.001D.33D7] # SQUARE PH
-33D8 ; [.177B.0020.001C.33D8][*0273.0020.001C.33D8][.1726.0020.001F.33D8][*0273.0020.001F.33D8] # SQUARE PM
-33D9 ; [.177B.0020.001D.33D9][.177B.0020.001D.33D9][.1726.0020.001F.33D9] # SQUARE PPM
-1F14E ; [.177B.0020.001D.1F14E][.177B.0020.001D.1F14E][.1844.0020.001F.1F14E] # SQUARED PPV
-33DA ; [.177B.0020.001D.33DA][.17A2.0020.001D.33DA] # SQUARE PR
-33B0 ; [.177B.0020.001C.33B0][.17D8.0020.001C.33B0] # SQUARE PS
-3250 ; [.177B.0020.001D.3250][.17FB.0020.001D.3250][.1631.0020.001F.3250] # PARTNERSHIP SIGN
-33B4 ; [.177B.0020.001C.33B4][.1844.0020.001D.33B4] # SQUARE PV
-33BA ; [.177B.0020.001C.33BA][.1856.0020.001D.33BA] # SQUARE PW
-1D18 ; [.177F.0020.0002.1D18] # LATIN LETTER SMALL CAPITAL P
-1D7D ; [.1780.0020.0002.1D7D] # LATIN SMALL LETTER P WITH STROKE
-2C63 ; [.1780.0020.0008.2C63] # LATIN CAPITAL LETTER P WITH STROKE
-A751 ; [.1781.0020.0002.A751] # LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER
-A750 ; [.1781.0020.0008.A750] # LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
-1D71 ; [.1782.0020.0002.1D71] # LATIN SMALL LETTER P WITH MIDDLE TILDE
-1D88 ; [.1783.0020.0002.1D88] # LATIN SMALL LETTER P WITH PALATAL HOOK
-01A5 ; [.1784.0020.0002.01A5] # LATIN SMALL LETTER P WITH HOOK
-01A4 ; [.1784.0020.0008.01A4] # LATIN CAPITAL LETTER P WITH HOOK
-A753 ; [.1788.0020.0002.A753] # LATIN SMALL LETTER P WITH FLOURISH
-A752 ; [.1788.0020.0008.A752] # LATIN CAPITAL LETTER P WITH FLOURISH
-A755 ; [.1789.0020.0002.A755] # LATIN SMALL LETTER P WITH SQUIRREL TAIL
-A754 ; [.1789.0020.0008.A754] # LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
-A7FC ; [.178A.0020.0002.A7FC] # LATIN EPIGRAPHIC LETTER REVERSED P
-0278 ; [.178B.0020.0002.0278] # LATIN SMALL LETTER PHI
-1DB2 ; [.178B.0020.0014.1DB2] # MODIFIER LETTER SMALL PHI
-2C77 ; [.178F.0020.0002.2C77] # LATIN SMALL LETTER TAILLESS PHI
-0071 ; [.1790.0020.0002.0071] # LATIN SMALL LETTER Q
-FF51 ; [.1790.0020.0003.FF51] # FULLWIDTH LATIN SMALL LETTER Q
-24AC ; [*02FB.0020.0004.24AC][.1790.0020.0004.24AC][*02FC.0020.001F.24AC] # PARENTHESIZED LATIN SMALL LETTER Q
-1D42A ; [.1790.0020.0005.1D42A] # MATHEMATICAL BOLD SMALL Q
-1D45E ; [.1790.0020.0005.1D45E] # MATHEMATICAL ITALIC SMALL Q
-1D492 ; [.1790.0020.0005.1D492] # MATHEMATICAL BOLD ITALIC SMALL Q
-1D4C6 ; [.1790.0020.0005.1D4C6] # MATHEMATICAL SCRIPT SMALL Q
-1D4FA ; [.1790.0020.0005.1D4FA] # MATHEMATICAL BOLD SCRIPT SMALL Q
-1D52E ; [.1790.0020.0005.1D52E] # MATHEMATICAL FRAKTUR SMALL Q
-1D562 ; [.1790.0020.0005.1D562] # MATHEMATICAL DOUBLE-STRUCK SMALL Q
-1D596 ; [.1790.0020.0005.1D596] # MATHEMATICAL BOLD FRAKTUR SMALL Q
-1D5CA ; [.1790.0020.0005.1D5CA] # MATHEMATICAL SANS-SERIF SMALL Q
-1D5FE ; [.1790.0020.0005.1D5FE] # MATHEMATICAL SANS-SERIF BOLD SMALL Q
-1D632 ; [.1790.0020.0005.1D632] # MATHEMATICAL SANS-SERIF ITALIC SMALL Q
-1D666 ; [.1790.0020.0005.1D666] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
-1D69A ; [.1790.0020.0005.1D69A] # MATHEMATICAL MONOSPACE SMALL Q
-24E0 ; [.1790.0020.0006.24E0] # CIRCLED LATIN SMALL LETTER Q
-0051 ; [.1790.0020.0008.0051] # LATIN CAPITAL LETTER Q
-FF31 ; [.1790.0020.0009.FF31] # FULLWIDTH LATIN CAPITAL LETTER Q
-1F120 ; [*02FB.0020.0004.1F120][.1790.0020.000A.1F120][*02FC.0020.001F.1F120] # PARENTHESIZED LATIN CAPITAL LETTER Q
-1F1F6 ; [.1790.0020.000A.1F1F6] # REGIONAL INDICATOR SYMBOL LETTER Q
-211A ; [.1790.0020.000B.211A] # DOUBLE-STRUCK CAPITAL Q
-1D410 ; [.1790.0020.000B.1D410] # MATHEMATICAL BOLD CAPITAL Q
-1D444 ; [.1790.0020.000B.1D444] # MATHEMATICAL ITALIC CAPITAL Q
-1D478 ; [.1790.0020.000B.1D478] # MATHEMATICAL BOLD ITALIC CAPITAL Q
-1D4AC ; [.1790.0020.000B.1D4AC] # MATHEMATICAL SCRIPT CAPITAL Q
-1D4E0 ; [.1790.0020.000B.1D4E0] # MATHEMATICAL BOLD SCRIPT CAPITAL Q
-1D514 ; [.1790.0020.000B.1D514] # MATHEMATICAL FRAKTUR CAPITAL Q
-1D57C ; [.1790.0020.000B.1D57C] # MATHEMATICAL BOLD FRAKTUR CAPITAL Q
-1D5B0 ; [.1790.0020.000B.1D5B0] # MATHEMATICAL SANS-SERIF CAPITAL Q
-1D5E4 ; [.1790.0020.000B.1D5E4] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
-1D618 ; [.1790.0020.000B.1D618] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
-1D64C ; [.1790.0020.000B.1D64C] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
-1D680 ; [.1790.0020.000B.1D680] # MATHEMATICAL MONOSPACE CAPITAL Q
-24C6 ; [.1790.0020.000C.24C6] # CIRCLED LATIN CAPITAL LETTER Q
-1F160 ; [.1790.0020.000C.1F160] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Q
-1F140 ; [.1790.0020.001D.1F140] # SQUARED LATIN CAPITAL LETTER Q
-1F180 ; [.1790.0020.001D.1F180] # NEGATIVE SQUARED LATIN CAPITAL LETTER Q
-0239 ; [.1790.0020.0004.0239][.177B.0020.0004.0239] # LATIN SMALL LETTER QP DIGRAPH
-A757 ; [.1794.0020.0002.A757] # LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
-A756 ; [.1794.0020.0008.A756] # LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
-A759 ; [.1795.0020.0002.A759] # LATIN SMALL LETTER Q WITH DIAGONAL STROKE
-A758 ; [.1795.0020.0008.A758] # LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
-02A0 ; [.1796.0020.0002.02A0] # LATIN SMALL LETTER Q WITH HOOK
-024B ; [.179A.0020.0002.024B] # LATIN SMALL LETTER Q WITH HOOK TAIL
-024A ; [.179A.0020.0008.024A] # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
-0138 ; [.179E.0020.0002.0138] # LATIN SMALL LETTER KRA
-0072 ; [.17A2.0020.0002.0072] # LATIN SMALL LETTER R
-FF52 ; [.17A2.0020.0003.FF52] # FULLWIDTH LATIN SMALL LETTER R
-036C ; [.17A2.0020.0004.036C] # COMBINING LATIN SMALL LETTER R
-1DCA ; [.17A2.0020.0004.1DCA] # COMBINING LATIN SMALL LETTER R BELOW
-24AD ; [*02FB.0020.0004.24AD][.17A2.0020.0004.24AD][*02FC.0020.001F.24AD] # PARENTHESIZED LATIN SMALL LETTER R
-1D42B ; [.17A2.0020.0005.1D42B] # MATHEMATICAL BOLD SMALL R
-1D45F ; [.17A2.0020.0005.1D45F] # MATHEMATICAL ITALIC SMALL R
-1D493 ; [.17A2.0020.0005.1D493] # MATHEMATICAL BOLD ITALIC SMALL R
-1D4C7 ; [.17A2.0020.0005.1D4C7] # MATHEMATICAL SCRIPT SMALL R
-1D4FB ; [.17A2.0020.0005.1D4FB] # MATHEMATICAL BOLD SCRIPT SMALL R
-1D52F ; [.17A2.0020.0005.1D52F] # MATHEMATICAL FRAKTUR SMALL R
-1D563 ; [.17A2.0020.0005.1D563] # MATHEMATICAL DOUBLE-STRUCK SMALL R
-1D597 ; [.17A2.0020.0005.1D597] # MATHEMATICAL BOLD FRAKTUR SMALL R
-1D5CB ; [.17A2.0020.0005.1D5CB] # MATHEMATICAL SANS-SERIF SMALL R
-1D5FF ; [.17A2.0020.0005.1D5FF] # MATHEMATICAL SANS-SERIF BOLD SMALL R
-1D633 ; [.17A2.0020.0005.1D633] # MATHEMATICAL SANS-SERIF ITALIC SMALL R
-1D667 ; [.17A2.0020.0005.1D667] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
-1D69B ; [.17A2.0020.0005.1D69B] # MATHEMATICAL MONOSPACE SMALL R
-24E1 ; [.17A2.0020.0006.24E1] # CIRCLED LATIN SMALL LETTER R
-0052 ; [.17A2.0020.0008.0052] # LATIN CAPITAL LETTER R
-FF32 ; [.17A2.0020.0009.FF32] # FULLWIDTH LATIN CAPITAL LETTER R
-1F121 ; [*02FB.0020.0004.1F121][.17A2.0020.000A.1F121][*02FC.0020.001F.1F121] # PARENTHESIZED LATIN CAPITAL LETTER R
-1F1F7 ; [.17A2.0020.000A.1F1F7] # REGIONAL INDICATOR SYMBOL LETTER R
-211B ; [.17A2.0020.000B.211B] # SCRIPT CAPITAL R
-211C ; [.17A2.0020.000B.211C] # BLACK-LETTER CAPITAL R
-211D ; [.17A2.0020.000B.211D] # DOUBLE-STRUCK CAPITAL R
-1D411 ; [.17A2.0020.000B.1D411] # MATHEMATICAL BOLD CAPITAL R
-1D445 ; [.17A2.0020.000B.1D445] # MATHEMATICAL ITALIC CAPITAL R
-1D479 ; [.17A2.0020.000B.1D479] # MATHEMATICAL BOLD ITALIC CAPITAL R
-1D4E1 ; [.17A2.0020.000B.1D4E1] # MATHEMATICAL BOLD SCRIPT CAPITAL R
-1D57D ; [.17A2.0020.000B.1D57D] # MATHEMATICAL BOLD FRAKTUR CAPITAL R
-1D5B1 ; [.17A2.0020.000B.1D5B1] # MATHEMATICAL SANS-SERIF CAPITAL R
-1D5E5 ; [.17A2.0020.000B.1D5E5] # MATHEMATICAL SANS-SERIF BOLD CAPITAL R
-1D619 ; [.17A2.0020.000B.1D619] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
-1D64D ; [.17A2.0020.000B.1D64D] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
-1D681 ; [.17A2.0020.000B.1D681] # MATHEMATICAL MONOSPACE CAPITAL R
-24C7 ; [.17A2.0020.000C.24C7] # CIRCLED LATIN CAPITAL LETTER R
-1F12C ; [.17A2.0020.000C.1F12C] # CIRCLED ITALIC LATIN CAPITAL LETTER R
-1F161 ; [.17A2.0020.000C.1F161] # NEGATIVE CIRCLED LATIN CAPITAL LETTER R
-02B3 ; [.17A2.0020.0014.02B3] # MODIFIER LETTER SMALL R
-1D63 ; [.17A2.0020.0015.1D63] # LATIN SUBSCRIPT SMALL LETTER R
-1D3F ; [.17A2.0020.001D.1D3F] # MODIFIER LETTER CAPITAL R
-1F141 ; [.17A2.0020.001D.1F141] # SQUARED LATIN CAPITAL LETTER R
-1F181 ; [.17A2.0020.001D.1F181] # NEGATIVE SQUARED LATIN CAPITAL LETTER R
-0155 ; [.17A2.0020.0002.0072][.0000.0032.0002.0301] # LATIN SMALL LETTER R WITH ACUTE
-0154 ; [.17A2.0020.0008.0052][.0000.0032.0002.0301] # LATIN CAPITAL LETTER R WITH ACUTE
-0159 ; [.17A2.0020.0002.0072][.0000.0041.0002.030C] # LATIN SMALL LETTER R WITH CARON
-0158 ; [.17A2.0020.0008.0052][.0000.0041.0002.030C] # LATIN CAPITAL LETTER R WITH CARON
-1E59 ; [.17A2.0020.0002.0072][.0000.0052.0002.0307] # LATIN SMALL LETTER R WITH DOT ABOVE
-1E58 ; [.17A2.0020.0008.0052][.0000.0052.0002.0307] # LATIN CAPITAL LETTER R WITH DOT ABOVE
-0157 ; [.17A2.0020.0002.0072][.0000.0056.0002.0327] # LATIN SMALL LETTER R WITH CEDILLA
-0156 ; [.17A2.0020.0008.0052][.0000.0056.0002.0327] # LATIN CAPITAL LETTER R WITH CEDILLA
-A7A7 ; [.17A2.0020.0004.A7A7][.0000.0061.0004.A7A7] # LATIN SMALL LETTER R WITH OBLIQUE STROKE
-A7A6 ; [.17A2.0020.000A.A7A6][.0000.0061.0004.A7A6] # LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
-0211 ; [.17A2.0020.0002.0072][.0000.0065.0002.030F] # LATIN SMALL LETTER R WITH DOUBLE GRAVE
-0210 ; [.17A2.0020.0008.0052][.0000.0065.0002.030F] # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
-0213 ; [.17A2.0020.0002.0072][.0000.0067.0002.0311] # LATIN SMALL LETTER R WITH INVERTED BREVE
-0212 ; [.17A2.0020.0008.0052][.0000.0067.0002.0311] # LATIN CAPITAL LETTER R WITH INVERTED BREVE
-1E5B ; [.17A2.0020.0002.0072][.0000.0070.0002.0323] # LATIN SMALL LETTER R WITH DOT BELOW
-1E5A ; [.17A2.0020.0008.0052][.0000.0070.0002.0323] # LATIN CAPITAL LETTER R WITH DOT BELOW
-1E5D ; [.17A2.0020.0002.0072][.0000.0070.0002.0323][.0000.005B.0002.0304] # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
-1E5C ; [.17A2.0020.0008.0052][.0000.0070.0002.0323][.0000.005B.0002.0304] # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
-1E5F ; [.17A2.0020.0002.0072][.0000.007B.0002.0331] # LATIN SMALL LETTER R WITH LINE BELOW
-1E5E ; [.17A2.0020.0008.0052][.0000.007B.0002.0331] # LATIN CAPITAL LETTER R WITH LINE BELOW
-A783 ; [.17A2.0020.0004.A783][.0000.013A.0004.A783] # LATIN SMALL LETTER INSULAR R
-A782 ; [.17A2.0020.000A.A782][.0000.013A.0004.A782] # LATIN CAPITAL LETTER INSULAR R
-33AD ; [.17A2.0020.001C.33AD][.15D4.0020.001C.33AD][.1616.0020.001F.33AD] # SQUARE RAD
-33AE ; [.17A2.0020.001C.33AE][.15D4.0020.001C.33AE][.1616.0020.001F.33AE][*05AB.0020.001F.33AE][.17D8.0020.001F.33AE] # SQUARE RAD OVER S
-33AF ; [.17A2.0020.001C.33AF][.15D4.0020.001C.33AF][.1616.0020.001F.33AF][*05AB.0020.001F.33AF][.17D8.0020.001F.33AF][.15CC.0020.001F.33AF] # SQUARE RAD OVER S SQUARED
-20A8 ; [.17A2.0020.000A.20A8][.17D8.0020.0004.20A8] # RUPEE SIGN
-0280 ; [.17A6.0020.0002.0280] # LATIN LETTER SMALL CAPITAL R
-1DE2 ; [.17A6.0020.0004.1DE2] # COMBINING LATIN LETTER SMALL CAPITAL R
-01A6 ; [.17A6.0020.0008.01A6] # LATIN LETTER YR
-A75B ; [.17AA.0020.0002.A75B] # LATIN SMALL LETTER R ROTUNDA
-1DE3 ; [.17AA.0020.0004.1DE3] # COMBINING LATIN SMALL LETTER R ROTUNDA
-A75A ; [.17AA.0020.0008.A75A] # LATIN CAPITAL LETTER R ROTUNDA
-1D19 ; [.17AB.0020.0002.1D19] # LATIN LETTER SMALL CAPITAL REVERSED R
-024D ; [.17AC.0020.0002.024D] # LATIN SMALL LETTER R WITH STROKE
-024C ; [.17AC.0020.0008.024C] # LATIN CAPITAL LETTER R WITH STROKE
-1D72 ; [.17B0.0020.0002.1D72] # LATIN SMALL LETTER R WITH MIDDLE TILDE
-0279 ; [.17B1.0020.0002.0279] # LATIN SMALL LETTER TURNED R
-02B4 ; [.17B1.0020.0014.02B4] # MODIFIER LETTER SMALL TURNED R
-1D1A ; [.17B5.0020.0002.1D1A] # LATIN LETTER SMALL CAPITAL TURNED R
-027A ; [.17B6.0020.0002.027A] # LATIN SMALL LETTER TURNED R WITH LONG LEG
-1D89 ; [.17BA.0020.0002.1D89] # LATIN SMALL LETTER R WITH PALATAL HOOK
-027B ; [.17BB.0020.0002.027B] # LATIN SMALL LETTER TURNED R WITH HOOK
-02B5 ; [.17BB.0020.0014.02B5] # MODIFIER LETTER SMALL TURNED R WITH HOOK
-2C79 ; [.17BF.0020.0002.2C79] # LATIN SMALL LETTER TURNED R WITH TAIL
-027C ; [.17C0.0020.0002.027C] # LATIN SMALL LETTER R WITH LONG LEG
-027D ; [.17C4.0020.0002.027D] # LATIN SMALL LETTER R WITH TAIL
-2C64 ; [.17C4.0020.0008.2C64] # LATIN CAPITAL LETTER R WITH TAIL
-027E ; [.17C8.0020.0002.027E] # LATIN SMALL LETTER R WITH FISHHOOK
-1D73 ; [.17CC.0020.0002.1D73] # LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE
-027F ; [.17CD.0020.0002.027F] # LATIN SMALL LETTER REVERSED R WITH FISHHOOK
-0281 ; [.17D1.0020.0002.0281] # LATIN LETTER SMALL CAPITAL INVERTED R
-02B6 ; [.17D1.0020.0014.02B6] # MODIFIER LETTER SMALL CAPITAL INVERTED R
-A775 ; [.17D5.0020.0002.A775] # LATIN SMALL LETTER RUM
-A776 ; [.17D6.0020.0002.A776] # LATIN LETTER SMALL CAPITAL RUM
-A75D ; [.17D7.0020.0002.A75D] # LATIN SMALL LETTER RUM ROTUNDA
-A75C ; [.17D7.0020.0008.A75C] # LATIN CAPITAL LETTER RUM ROTUNDA
-0073 ; [.17D8.0020.0002.0073] # LATIN SMALL LETTER S
-FF53 ; [.17D8.0020.0003.FF53] # FULLWIDTH LATIN SMALL LETTER S
-1DE4 ; [.17D8.0020.0004.1DE4] # COMBINING LATIN SMALL LETTER S
-24AE ; [*02FB.0020.0004.24AE][.17D8.0020.0004.24AE][*02FC.0020.001F.24AE] # PARENTHESIZED LATIN SMALL LETTER S
-1D42C ; [.17D8.0020.0005.1D42C] # MATHEMATICAL BOLD SMALL S
-1D460 ; [.17D8.0020.0005.1D460] # MATHEMATICAL ITALIC SMALL S
-1D494 ; [.17D8.0020.0005.1D494] # MATHEMATICAL BOLD ITALIC SMALL S
-1D4C8 ; [.17D8.0020.0005.1D4C8] # MATHEMATICAL SCRIPT SMALL S
-1D4FC ; [.17D8.0020.0005.1D4FC] # MATHEMATICAL BOLD SCRIPT SMALL S
-1D530 ; [.17D8.0020.0005.1D530] # MATHEMATICAL FRAKTUR SMALL S
-1D564 ; [.17D8.0020.0005.1D564] # MATHEMATICAL DOUBLE-STRUCK SMALL S
-1D598 ; [.17D8.0020.0005.1D598] # MATHEMATICAL BOLD FRAKTUR SMALL S
-1D5CC ; [.17D8.0020.0005.1D5CC] # MATHEMATICAL SANS-SERIF SMALL S
-1D600 ; [.17D8.0020.0005.1D600] # MATHEMATICAL SANS-SERIF BOLD SMALL S
-1D634 ; [.17D8.0020.0005.1D634] # MATHEMATICAL SANS-SERIF ITALIC SMALL S
-1D668 ; [.17D8.0020.0005.1D668] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
-1D69C ; [.17D8.0020.0005.1D69C] # MATHEMATICAL MONOSPACE SMALL S
-24E2 ; [.17D8.0020.0006.24E2] # CIRCLED LATIN SMALL LETTER S
-0053 ; [.17D8.0020.0008.0053] # LATIN CAPITAL LETTER S
-FF33 ; [.17D8.0020.0009.FF33] # FULLWIDTH LATIN CAPITAL LETTER S
-1F122 ; [*02FB.0020.0004.1F122][.17D8.0020.000A.1F122][*02FC.0020.001F.1F122] # PARENTHESIZED LATIN CAPITAL LETTER S
-1F12A ; [*0359.0020.0004.1F12A][.17D8.0020.000A.1F12A][*035A.0020.001F.1F12A] # TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S
-1F1F8 ; [.17D8.0020.000A.1F1F8] # REGIONAL INDICATOR SYMBOL LETTER S
-1D412 ; [.17D8.0020.000B.1D412] # MATHEMATICAL BOLD CAPITAL S
-1D446 ; [.17D8.0020.000B.1D446] # MATHEMATICAL ITALIC CAPITAL S
-1D47A ; [.17D8.0020.000B.1D47A] # MATHEMATICAL BOLD ITALIC CAPITAL S
-1D4AE ; [.17D8.0020.000B.1D4AE] # MATHEMATICAL SCRIPT CAPITAL S
-1D4E2 ; [.17D8.0020.000B.1D4E2] # MATHEMATICAL BOLD SCRIPT CAPITAL S
-1D516 ; [.17D8.0020.000B.1D516] # MATHEMATICAL FRAKTUR CAPITAL S
-1D54A ; [.17D8.0020.000B.1D54A] # MATHEMATICAL DOUBLE-STRUCK CAPITAL S
-1D57E ; [.17D8.0020.000B.1D57E] # MATHEMATICAL BOLD FRAKTUR CAPITAL S
-1D5B2 ; [.17D8.0020.000B.1D5B2] # MATHEMATICAL SANS-SERIF CAPITAL S
-1D5E6 ; [.17D8.0020.000B.1D5E6] # MATHEMATICAL SANS-SERIF BOLD CAPITAL S
-1D61A ; [.17D8.0020.000B.1D61A] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
-1D64E ; [.17D8.0020.000B.1D64E] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
-1D682 ; [.17D8.0020.000B.1D682] # MATHEMATICAL MONOSPACE CAPITAL S
-24C8 ; [.17D8.0020.000C.24C8] # CIRCLED LATIN CAPITAL LETTER S
-1F162 ; [.17D8.0020.000C.1F162] # NEGATIVE CIRCLED LATIN CAPITAL LETTER S
-02E2 ; [.17D8.0020.0014.02E2] # MODIFIER LETTER SMALL S
-209B ; [.17D8.0020.0015.209B] # LATIN SUBSCRIPT SMALL LETTER S
-1F142 ; [.17D8.0020.001D.1F142] # SQUARED LATIN CAPITAL LETTER S
-1F182 ; [.17D8.0020.001D.1F182] # NEGATIVE SQUARED LATIN CAPITAL LETTER S
-015B ; [.17D8.0020.0002.0073][.0000.0032.0002.0301] # LATIN SMALL LETTER S WITH ACUTE
-015A ; [.17D8.0020.0008.0053][.0000.0032.0002.0301] # LATIN CAPITAL LETTER S WITH ACUTE
-1E65 ; [.17D8.0020.0002.0073][.0000.0032.0002.0301][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
-1E64 ; [.17D8.0020.0008.0053][.0000.0032.0002.0301][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
-015D ; [.17D8.0020.0002.0073][.0000.003C.0002.0302] # LATIN SMALL LETTER S WITH CIRCUMFLEX
-015C ; [.17D8.0020.0008.0053][.0000.003C.0002.0302] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-0161 ; [.17D8.0020.0002.0073][.0000.0041.0002.030C] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17D8.0020.0008.0053][.0000.0041.0002.030C] # LATIN CAPITAL LETTER S WITH CARON
-1E67 ; [.17D8.0020.0002.0073][.0000.0041.0002.030C][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
-1E66 ; [.17D8.0020.0008.0053][.0000.0041.0002.030C][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
-1E61 ; [.17D8.0020.0002.0073][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH DOT ABOVE
-1E60 ; [.17D8.0020.0008.0053][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH DOT ABOVE
-015F ; [.17D8.0020.0002.0073][.0000.0056.0002.0327] # LATIN SMALL LETTER S WITH CEDILLA
-015E ; [.17D8.0020.0008.0053][.0000.0056.0002.0327] # LATIN CAPITAL LETTER S WITH CEDILLA
-A7A9 ; [.17D8.0020.0004.A7A9][.0000.0061.0004.A7A9] # LATIN SMALL LETTER S WITH OBLIQUE STROKE
-A7A8 ; [.17D8.0020.000A.A7A8][.0000.0061.0004.A7A8] # LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
-1E63 ; [.17D8.0020.0002.0073][.0000.0070.0002.0323] # LATIN SMALL LETTER S WITH DOT BELOW
-1E62 ; [.17D8.0020.0008.0053][.0000.0070.0002.0323] # LATIN CAPITAL LETTER S WITH DOT BELOW
-1E69 ; [.17D8.0020.0002.0073][.0000.0070.0002.0323][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E68 ; [.17D8.0020.0008.0053][.0000.0070.0002.0323][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
-0219 ; [.17D8.0020.0002.0073][.0000.0077.0002.0326] # LATIN SMALL LETTER S WITH COMMA BELOW
-0218 ; [.17D8.0020.0008.0053][.0000.0077.0002.0326] # LATIN CAPITAL LETTER S WITH COMMA BELOW
-017F ; [.17D8.0020.0004.017F][.0000.013A.0004.017F] # LATIN SMALL LETTER LONG S
-1DE5 ; [.17D8.0020.0004.1DE5][.0000.013A.0004.1DE5] # COMBINING LATIN SMALL LETTER LONG S
-A785 ; [.17D8.0020.0004.A785][.0000.013A.0004.A785] # LATIN SMALL LETTER INSULAR S
-A784 ; [.17D8.0020.000A.A784][.0000.013A.0004.A784] # LATIN CAPITAL LETTER INSULAR S
-1E9B ; [.17D8.0020.0004.1E9B][.0000.013A.0004.1E9B][.0000.0052.0002.1E9B] # LATIN SMALL LETTER LONG S WITH DOT ABOVE
-1F18D ; [.17D8.0020.001D.1F18D][.15D4.0020.001D.1F18D] # NEGATIVE SQUARED SA
-1F14C ; [.17D8.0020.001D.1F14C][.1616.0020.001D.1F14C] # SQUARED SD
-2120 ; [.17D8.0020.0014.2120][.1726.0020.0014.2120] # SERVICE MARK
-1F198 ; [.17D8.0020.001D.1F198][.1756.0020.001D.1F198][.17D8.0020.001F.1F198] # SQUARED SOS
-33DB ; [.17D8.0020.001C.33DB][.17A2.0020.001C.33DB] # SQUARE SR
-1F14D ; [.17D8.0020.001D.1F14D][.17D8.0020.001D.1F14D] # SQUARED SS
-00DF ; [.17D8.0020.0004.00DF][.0000.0139.0004.00DF][.17D8.0020.001F.00DF] # LATIN SMALL LETTER SHARP S
-1E9E ; [.17D8.0020.000A.1E9E][.0000.0139.0004.1E9E][.17D8.0020.001F.1E9E] # LATIN CAPITAL LETTER SHARP S
-FB06 ; [.17D8.0020.0004.FB06][.17FB.0020.0004.FB06] # LATIN SMALL LIGATURE ST
-FB05 ; [.17D8.0020.0004.FB05][.0000.013A.0004.FB05][.17FB.0020.001F.FB05] # LATIN SMALL LIGATURE LONG S T
-33DC ; [.17D8.0020.001D.33DC][.1844.0020.001C.33DC] # SQUARE SV
-A731 ; [.17DC.0020.0002.A731] # LATIN LETTER SMALL CAPITAL S
-1D74 ; [.17DD.0020.0002.1D74] # LATIN SMALL LETTER S WITH MIDDLE TILDE
-1D8A ; [.17DE.0020.0002.1D8A] # LATIN SMALL LETTER S WITH PALATAL HOOK
-0282 ; [.17DF.0020.0002.0282] # LATIN SMALL LETTER S WITH HOOK
-1DB3 ; [.17DF.0020.0014.1DB3] # MODIFIER LETTER SMALL S WITH HOOK
-023F ; [.17E3.0020.0002.023F] # LATIN SMALL LETTER S WITH SWASH TAIL
-2C7E ; [.17E3.0020.0008.2C7E] # LATIN CAPITAL LETTER S WITH SWASH TAIL
-1E9C ; [.17E7.0020.0002.1E9C] # LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE
-1E9D ; [.17E8.0020.0002.1E9D] # LATIN SMALL LETTER LONG S WITH HIGH STROKE
-0283 ; [.17E9.0020.0002.0283] # LATIN SMALL LETTER ESH
-01A9 ; [.17E9.0020.0008.01A9] # LATIN CAPITAL LETTER ESH
-1DB4 ; [.17E9.0020.0014.1DB4] # MODIFIER LETTER SMALL ESH
-1D8B ; [.17ED.0020.0002.1D8B] # LATIN SMALL LETTER ESH WITH PALATAL HOOK
-01AA ; [.17EE.0020.0002.01AA] # LATIN LETTER REVERSED ESH LOOP
-0285 ; [.17F2.0020.0002.0285] # LATIN SMALL LETTER SQUAT REVERSED ESH
-1D98 ; [.17F6.0020.0002.1D98] # LATIN SMALL LETTER ESH WITH RETROFLEX HOOK
-0286 ; [.17F7.0020.0002.0286] # LATIN SMALL LETTER ESH WITH CURL
-0074 ; [.17FB.0020.0002.0074] # LATIN SMALL LETTER T
-FF54 ; [.17FB.0020.0003.FF54] # FULLWIDTH LATIN SMALL LETTER T
-036D ; [.17FB.0020.0004.036D] # COMBINING LATIN SMALL LETTER T
-24AF ; [*02FB.0020.0004.24AF][.17FB.0020.0004.24AF][*02FC.0020.001F.24AF] # PARENTHESIZED LATIN SMALL LETTER T
-1D42D ; [.17FB.0020.0005.1D42D] # MATHEMATICAL BOLD SMALL T
-1D461 ; [.17FB.0020.0005.1D461] # MATHEMATICAL ITALIC SMALL T
-1D495 ; [.17FB.0020.0005.1D495] # MATHEMATICAL BOLD ITALIC SMALL T
-1D4C9 ; [.17FB.0020.0005.1D4C9] # MATHEMATICAL SCRIPT SMALL T
-1D4FD ; [.17FB.0020.0005.1D4FD] # MATHEMATICAL BOLD SCRIPT SMALL T
-1D531 ; [.17FB.0020.0005.1D531] # MATHEMATICAL FRAKTUR SMALL T
-1D565 ; [.17FB.0020.0005.1D565] # MATHEMATICAL DOUBLE-STRUCK SMALL T
-1D599 ; [.17FB.0020.0005.1D599] # MATHEMATICAL BOLD FRAKTUR SMALL T
-1D5CD ; [.17FB.0020.0005.1D5CD] # MATHEMATICAL SANS-SERIF SMALL T
-1D601 ; [.17FB.0020.0005.1D601] # MATHEMATICAL SANS-SERIF BOLD SMALL T
-1D635 ; [.17FB.0020.0005.1D635] # MATHEMATICAL SANS-SERIF ITALIC SMALL T
-1D669 ; [.17FB.0020.0005.1D669] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
-1D69D ; [.17FB.0020.0005.1D69D] # MATHEMATICAL MONOSPACE SMALL T
-24E3 ; [.17FB.0020.0006.24E3] # CIRCLED LATIN SMALL LETTER T
-0054 ; [.17FB.0020.0008.0054] # LATIN CAPITAL LETTER T
-FF34 ; [.17FB.0020.0009.FF34] # FULLWIDTH LATIN CAPITAL LETTER T
-1F123 ; [*02FB.0020.0004.1F123][.17FB.0020.000A.1F123][*02FC.0020.001F.1F123] # PARENTHESIZED LATIN CAPITAL LETTER T
-1F1F9 ; [.17FB.0020.000A.1F1F9] # REGIONAL INDICATOR SYMBOL LETTER T
-1D413 ; [.17FB.0020.000B.1D413] # MATHEMATICAL BOLD CAPITAL T
-1D447 ; [.17FB.0020.000B.1D447] # MATHEMATICAL ITALIC CAPITAL T
-1D47B ; [.17FB.0020.000B.1D47B] # MATHEMATICAL BOLD ITALIC CAPITAL T
-1D4AF ; [.17FB.0020.000B.1D4AF] # MATHEMATICAL SCRIPT CAPITAL T
-1D4E3 ; [.17FB.0020.000B.1D4E3] # MATHEMATICAL BOLD SCRIPT CAPITAL T
-1D517 ; [.17FB.0020.000B.1D517] # MATHEMATICAL FRAKTUR CAPITAL T
-1D54B ; [.17FB.0020.000B.1D54B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL T
-1D57F ; [.17FB.0020.000B.1D57F] # MATHEMATICAL BOLD FRAKTUR CAPITAL T
-1D5B3 ; [.17FB.0020.000B.1D5B3] # MATHEMATICAL SANS-SERIF CAPITAL T
-1D5E7 ; [.17FB.0020.000B.1D5E7] # MATHEMATICAL SANS-SERIF BOLD CAPITAL T
-1D61B ; [.17FB.0020.000B.1D61B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
-1D64F ; [.17FB.0020.000B.1D64F] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
-1D683 ; [.17FB.0020.000B.1D683] # MATHEMATICAL MONOSPACE CAPITAL T
-24C9 ; [.17FB.0020.000C.24C9] # CIRCLED LATIN CAPITAL LETTER T
-1F163 ; [.17FB.0020.000C.1F163] # NEGATIVE CIRCLED LATIN CAPITAL LETTER T
-1D57 ; [.17FB.0020.0014.1D57] # MODIFIER LETTER SMALL T
-209C ; [.17FB.0020.0015.209C] # LATIN SUBSCRIPT SMALL LETTER T
-1D40 ; [.17FB.0020.001D.1D40] # MODIFIER LETTER CAPITAL T
-1F143 ; [.17FB.0020.001D.1F143] # SQUARED LATIN CAPITAL LETTER T
-1F183 ; [.17FB.0020.001D.1F183] # NEGATIVE SQUARED LATIN CAPITAL LETTER T
-0165 ; [.17FB.0020.0002.0074][.0000.0041.0002.030C] # LATIN SMALL LETTER T WITH CARON
-0164 ; [.17FB.0020.0008.0054][.0000.0041.0002.030C] # LATIN CAPITAL LETTER T WITH CARON
-1E97 ; [.17FB.0020.0002.0074][.0000.0047.0002.0308] # LATIN SMALL LETTER T WITH DIAERESIS
-1E6B ; [.17FB.0020.0002.0074][.0000.0052.0002.0307] # LATIN SMALL LETTER T WITH DOT ABOVE
-1E6A ; [.17FB.0020.0008.0054][.0000.0052.0002.0307] # LATIN CAPITAL LETTER T WITH DOT ABOVE
-0163 ; [.17FB.0020.0002.0074][.0000.0056.0002.0327] # LATIN SMALL LETTER T WITH CEDILLA
-0162 ; [.17FB.0020.0008.0054][.0000.0056.0002.0327] # LATIN CAPITAL LETTER T WITH CEDILLA
-1E6D ; [.17FB.0020.0002.0074][.0000.0070.0002.0323] # LATIN SMALL LETTER T WITH DOT BELOW
-1E6C ; [.17FB.0020.0008.0054][.0000.0070.0002.0323] # LATIN CAPITAL LETTER T WITH DOT BELOW
-021B ; [.17FB.0020.0002.0074][.0000.0077.0002.0326] # LATIN SMALL LETTER T WITH COMMA BELOW
-021A ; [.17FB.0020.0008.0054][.0000.0077.0002.0326] # LATIN CAPITAL LETTER T WITH COMMA BELOW
-1E71 ; [.17FB.0020.0002.0074][.0000.0078.0002.032D] # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
-1E70 ; [.17FB.0020.0008.0054][.0000.0078.0002.032D] # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
-1E6F ; [.17FB.0020.0002.0074][.0000.007B.0002.0331] # LATIN SMALL LETTER T WITH LINE BELOW
-1E6E ; [.17FB.0020.0008.0054][.0000.007B.0002.0331] # LATIN CAPITAL LETTER T WITH LINE BELOW
-A787 ; [.17FB.0020.0004.A787][.0000.013A.0004.A787] # LATIN SMALL LETTER INSULAR T
-A786 ; [.17FB.0020.000A.A786][.0000.013A.0004.A786] # LATIN CAPITAL LETTER INSULAR T
-02A8 ; [.17FB.0020.0004.02A8][.1610.0020.0004.02A8] # LATIN SMALL LETTER TC DIGRAPH WITH CURL
-2121 ; [.17FB.0020.000A.2121][.1631.0020.000A.2121][.16F6.0020.001F.2121] # TELEPHONE SIGN
-1D7A ; [.17FB.0020.0004.1D7A][.0000.0139.0004.1D7A][.1699.0020.001F.1D7A] # LATIN SMALL LETTER TH WITH STRIKETHROUGH
-3394 ; [.17FB.0020.001D.3394][.1699.0020.001D.3394][.187A.0020.001F.3394] # SQUARE THZ
-2122 ; [.17FB.0020.0014.2122][.1726.0020.0014.2122] # TRADE MARK SIGN
-01BE ; [.17FB.0020.0004.01BE][.17D8.0020.0004.01BE] # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
-02A6 ; [.17FB.0020.0004.02A6][.17D8.0020.0004.02A6] # LATIN SMALL LETTER TS DIGRAPH
-02A7 ; [.17FB.0020.0004.02A7][.17E9.0020.0004.02A7] # LATIN SMALL LETTER TESH DIGRAPH
-A729 ; [.17FB.0020.0004.A729][.187A.0020.0004.A729] # LATIN SMALL LETTER TZ
-A728 ; [.17FB.0020.000A.A728][.187A.0020.0004.A728] # LATIN CAPITAL LETTER TZ
-1D1B ; [.17FF.0020.0002.1D1B] # LATIN LETTER SMALL CAPITAL T
-0167 ; [.1800.0020.0002.0167] # LATIN SMALL LETTER T WITH STROKE
-0166 ; [.1800.0020.0008.0166] # LATIN CAPITAL LETTER T WITH STROKE
-2C66 ; [.1804.0020.0002.2C66] # LATIN SMALL LETTER T WITH DIAGONAL STROKE
-023E ; [.1804.0020.0008.023E] # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
-1D75 ; [.1805.0020.0002.1D75] # LATIN SMALL LETTER T WITH MIDDLE TILDE
-01AB ; [.1806.0020.0002.01AB] # LATIN SMALL LETTER T WITH PALATAL HOOK
-1DB5 ; [.1806.0020.0014.1DB5] # MODIFIER LETTER SMALL T WITH PALATAL HOOK
-01AD ; [.180A.0020.0002.01AD] # LATIN SMALL LETTER T WITH HOOK
-01AC ; [.180A.0020.0008.01AC] # LATIN CAPITAL LETTER T WITH HOOK
-0288 ; [.180E.0020.0002.0288] # LATIN SMALL LETTER T WITH RETROFLEX HOOK
-01AE ; [.180E.0020.0008.01AE] # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
-0236 ; [.1812.0020.0002.0236] # LATIN SMALL LETTER T WITH CURL
-A777 ; [.1816.0020.0002.A777] # LATIN SMALL LETTER TUM
-0287 ; [.1817.0020.0002.0287] # LATIN SMALL LETTER TURNED T
-0075 ; [.181B.0020.0002.0075] # LATIN SMALL LETTER U
-FF55 ; [.181B.0020.0003.FF55] # FULLWIDTH LATIN SMALL LETTER U
-0367 ; [.181B.0020.0004.0367] # COMBINING LATIN SMALL LETTER U
-24B0 ; [*02FB.0020.0004.24B0][.181B.0020.0004.24B0][*02FC.0020.001F.24B0] # PARENTHESIZED LATIN SMALL LETTER U
-1D42E ; [.181B.0020.0005.1D42E] # MATHEMATICAL BOLD SMALL U
-1D462 ; [.181B.0020.0005.1D462] # MATHEMATICAL ITALIC SMALL U
-1D496 ; [.181B.0020.0005.1D496] # MATHEMATICAL BOLD ITALIC SMALL U
-1D4CA ; [.181B.0020.0005.1D4CA] # MATHEMATICAL SCRIPT SMALL U
-1D4FE ; [.181B.0020.0005.1D4FE] # MATHEMATICAL BOLD SCRIPT SMALL U
-1D532 ; [.181B.0020.0005.1D532] # MATHEMATICAL FRAKTUR SMALL U
-1D566 ; [.181B.0020.0005.1D566] # MATHEMATICAL DOUBLE-STRUCK SMALL U
-1D59A ; [.181B.0020.0005.1D59A] # MATHEMATICAL BOLD FRAKTUR SMALL U
-1D5CE ; [.181B.0020.0005.1D5CE] # MATHEMATICAL SANS-SERIF SMALL U
-1D602 ; [.181B.0020.0005.1D602] # MATHEMATICAL SANS-SERIF BOLD SMALL U
-1D636 ; [.181B.0020.0005.1D636] # MATHEMATICAL SANS-SERIF ITALIC SMALL U
-1D66A ; [.181B.0020.0005.1D66A] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
-1D69E ; [.181B.0020.0005.1D69E] # MATHEMATICAL MONOSPACE SMALL U
-24E4 ; [.181B.0020.0006.24E4] # CIRCLED LATIN SMALL LETTER U
-0055 ; [.181B.0020.0008.0055] # LATIN CAPITAL LETTER U
-FF35 ; [.181B.0020.0009.FF35] # FULLWIDTH LATIN CAPITAL LETTER U
-1F124 ; [*02FB.0020.0004.1F124][.181B.0020.000A.1F124][*02FC.0020.001F.1F124] # PARENTHESIZED LATIN CAPITAL LETTER U
-1F1FA ; [.181B.0020.000A.1F1FA] # REGIONAL INDICATOR SYMBOL LETTER U
-1D414 ; [.181B.0020.000B.1D414] # MATHEMATICAL BOLD CAPITAL U
-1D448 ; [.181B.0020.000B.1D448] # MATHEMATICAL ITALIC CAPITAL U
-1D47C ; [.181B.0020.000B.1D47C] # MATHEMATICAL BOLD ITALIC CAPITAL U
-1D4B0 ; [.181B.0020.000B.1D4B0] # MATHEMATICAL SCRIPT CAPITAL U
-1D4E4 ; [.181B.0020.000B.1D4E4] # MATHEMATICAL BOLD SCRIPT CAPITAL U
-1D518 ; [.181B.0020.000B.1D518] # MATHEMATICAL FRAKTUR CAPITAL U
-1D54C ; [.181B.0020.000B.1D54C] # MATHEMATICAL DOUBLE-STRUCK CAPITAL U
-1D580 ; [.181B.0020.000B.1D580] # MATHEMATICAL BOLD FRAKTUR CAPITAL U
-1D5B4 ; [.181B.0020.000B.1D5B4] # MATHEMATICAL SANS-SERIF CAPITAL U
-1D5E8 ; [.181B.0020.000B.1D5E8] # MATHEMATICAL SANS-SERIF BOLD CAPITAL U
-1D61C ; [.181B.0020.000B.1D61C] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
-1D650 ; [.181B.0020.000B.1D650] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
-1D684 ; [.181B.0020.000B.1D684] # MATHEMATICAL MONOSPACE CAPITAL U
-24CA ; [.181B.0020.000C.24CA] # CIRCLED LATIN CAPITAL LETTER U
-1F164 ; [.181B.0020.000C.1F164] # NEGATIVE CIRCLED LATIN CAPITAL LETTER U
-1D58 ; [.181B.0020.0014.1D58] # MODIFIER LETTER SMALL U
-1D64 ; [.181B.0020.0015.1D64] # LATIN SUBSCRIPT SMALL LETTER U
-1D41 ; [.181B.0020.001D.1D41] # MODIFIER LETTER CAPITAL U
-1F144 ; [.181B.0020.001D.1F144] # SQUARED LATIN CAPITAL LETTER U
-1F184 ; [.181B.0020.001D.1F184] # NEGATIVE SQUARED LATIN CAPITAL LETTER U
-00FA ; [.181B.0020.0002.0075][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH ACUTE
-00DA ; [.181B.0020.0008.0055][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH ACUTE
-00F9 ; [.181B.0020.0002.0075][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH GRAVE
-00D9 ; [.181B.0020.0008.0055][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH GRAVE
-016D ; [.181B.0020.0002.0075][.0000.0037.0002.0306] # LATIN SMALL LETTER U WITH BREVE
-016C ; [.181B.0020.0008.0055][.0000.0037.0002.0306] # LATIN CAPITAL LETTER U WITH BREVE
-00FB ; [.181B.0020.0002.0075][.0000.003C.0002.0302] # LATIN SMALL LETTER U WITH CIRCUMFLEX
-00DB ; [.181B.0020.0008.0055][.0000.003C.0002.0302] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-01D4 ; [.181B.0020.0002.0075][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH CARON
-01D3 ; [.181B.0020.0008.0055][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH CARON
-016F ; [.181B.0020.0002.0075][.0000.0043.0002.030A] # LATIN SMALL LETTER U WITH RING ABOVE
-016E ; [.181B.0020.0008.0055][.0000.0043.0002.030A] # LATIN CAPITAL LETTER U WITH RING ABOVE
-00FC ; [.181B.0020.0002.0075][.0000.0047.0002.0308] # LATIN SMALL LETTER U WITH DIAERESIS
-00DC ; [.181B.0020.0008.0055][.0000.0047.0002.0308] # LATIN CAPITAL LETTER U WITH DIAERESIS
-01D8 ; [.181B.0020.0002.0075][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D7 ; [.181B.0020.0008.0055][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01DC ; [.181B.0020.0002.0075][.0000.0047.0002.0308][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-01DB ; [.181B.0020.0008.0055][.0000.0047.0002.0308][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01DA ; [.181B.0020.0002.0075][.0000.0047.0002.0308][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01D9 ; [.181B.0020.0008.0055][.0000.0047.0002.0308][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-01D6 ; [.181B.0020.0002.0075][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D5 ; [.181B.0020.0008.0055][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-0171 ; [.181B.0020.0002.0075][.0000.004D.0002.030B] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0170 ; [.181B.0020.0008.0055][.0000.004D.0002.030B] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0169 ; [.181B.0020.0002.0075][.0000.004E.0002.0303] # LATIN SMALL LETTER U WITH TILDE
-0168 ; [.181B.0020.0008.0055][.0000.004E.0002.0303] # LATIN CAPITAL LETTER U WITH TILDE
-1E79 ; [.181B.0020.0002.0075][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH TILDE AND ACUTE
-1E78 ; [.181B.0020.0008.0055][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
-0173 ; [.181B.0020.0002.0075][.0000.0059.0002.0328] # LATIN SMALL LETTER U WITH OGONEK
-0172 ; [.181B.0020.0008.0055][.0000.0059.0002.0328] # LATIN CAPITAL LETTER U WITH OGONEK
-016B ; [.181B.0020.0002.0075][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH MACRON
-016A ; [.181B.0020.0008.0055][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH MACRON
-1E7B ; [.181B.0020.0002.0075][.0000.005B.0002.0304][.0000.0047.0002.0308] # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
-1E7A ; [.181B.0020.0008.0055][.0000.005B.0002.0304][.0000.0047.0002.0308] # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
-1EE7 ; [.181B.0020.0002.0075][.0000.0064.0002.0309] # LATIN SMALL LETTER U WITH HOOK ABOVE
-1EE6 ; [.181B.0020.0008.0055][.0000.0064.0002.0309] # LATIN CAPITAL LETTER U WITH HOOK ABOVE
-0215 ; [.181B.0020.0002.0075][.0000.0065.0002.030F] # LATIN SMALL LETTER U WITH DOUBLE GRAVE
-0214 ; [.181B.0020.0008.0055][.0000.0065.0002.030F] # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
-0217 ; [.181B.0020.0002.0075][.0000.0067.0002.0311] # LATIN SMALL LETTER U WITH INVERTED BREVE
-0216 ; [.181B.0020.0008.0055][.0000.0067.0002.0311] # LATIN CAPITAL LETTER U WITH INVERTED BREVE
-01B0 ; [.181B.0020.0002.0075][.0000.0068.0002.031B] # LATIN SMALL LETTER U WITH HORN
-01AF ; [.181B.0020.0008.0055][.0000.0068.0002.031B] # LATIN CAPITAL LETTER U WITH HORN
-1EE9 ; [.181B.0020.0002.0075][.0000.0068.0002.031B][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH HORN AND ACUTE
-1EE8 ; [.181B.0020.0008.0055][.0000.0068.0002.031B][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
-1EEB ; [.181B.0020.0002.0075][.0000.0068.0002.031B][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH HORN AND GRAVE
-1EEA ; [.181B.0020.0008.0055][.0000.0068.0002.031B][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
-1EEF ; [.181B.0020.0002.0075][.0000.0068.0002.031B][.0000.004E.0002.0303] # LATIN SMALL LETTER U WITH HORN AND TILDE
-1EEE ; [.181B.0020.0008.0055][.0000.0068.0002.031B][.0000.004E.0002.0303] # LATIN CAPITAL LETTER U WITH HORN AND TILDE
-1EED ; [.181B.0020.0002.0075][.0000.0068.0002.031B][.0000.0064.0002.0309] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
-1EEC ; [.181B.0020.0008.0055][.0000.0068.0002.031B][.0000.0064.0002.0309] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
-1EF1 ; [.181B.0020.0002.0075][.0000.0068.0002.031B][.0000.0070.0002.0323] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
-1EF0 ; [.181B.0020.0008.0055][.0000.0068.0002.031B][.0000.0070.0002.0323] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
-1EE5 ; [.181B.0020.0002.0075][.0000.0070.0002.0323] # LATIN SMALL LETTER U WITH DOT BELOW
-1EE4 ; [.181B.0020.0008.0055][.0000.0070.0002.0323] # LATIN CAPITAL LETTER U WITH DOT BELOW
-1E73 ; [.181B.0020.0002.0075][.0000.0075.0002.0324] # LATIN SMALL LETTER U WITH DIAERESIS BELOW
-1E72 ; [.181B.0020.0008.0055][.0000.0075.0002.0324] # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
-1E77 ; [.181B.0020.0002.0075][.0000.0078.0002.032D] # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
-1E76 ; [.181B.0020.0008.0055][.0000.0078.0002.032D] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
-1E75 ; [.181B.0020.0002.0075][.0000.007A.0002.0330] # LATIN SMALL LETTER U WITH TILDE BELOW
-1E74 ; [.181B.0020.0008.0055][.0000.007A.0002.0330] # LATIN CAPITAL LETTER U WITH TILDE BELOW
-1F199 ; [.181B.0020.001D.1F199][.177B.0020.001D.1F199][*025E.0020.001F.1F199] # SQUARED UP WITH EXCLAMATION MARK
-1D1C ; [.181F.0020.0002.1D1C] # LATIN LETTER SMALL CAPITAL U
-1DB8 ; [.181F.0020.0014.1DB8] # MODIFIER LETTER SMALL CAPITAL U
-1D1D ; [.1820.0020.0002.1D1D] # LATIN SMALL LETTER SIDEWAYS U
-1D59 ; [.1820.0020.0014.1D59] # MODIFIER LETTER SMALL SIDEWAYS U
-1D1E ; [.1821.0020.0002.1D1E] # LATIN SMALL LETTER SIDEWAYS DIAERESIZED U
-1D6B ; [.1822.0020.0002.1D6B] # LATIN SMALL LETTER UE
-0289 ; [.1823.0020.0002.0289] # LATIN SMALL LETTER U BAR
-0244 ; [.1823.0020.0008.0244] # LATIN CAPITAL LETTER U BAR
-1DB6 ; [.1823.0020.0014.1DB6] # MODIFIER LETTER SMALL U BAR
-1D7E ; [.1827.0020.0002.1D7E] # LATIN SMALL CAPITAL LETTER U WITH STROKE
-1D99 ; [.1828.0020.0002.1D99] # LATIN SMALL LETTER U WITH RETROFLEX HOOK
-0265 ; [.1829.0020.0002.0265] # LATIN SMALL LETTER TURNED H
-A78D ; [.1829.0020.0008.A78D] # LATIN CAPITAL LETTER TURNED H
-1DA3 ; [.1829.0020.0014.1DA3] # MODIFIER LETTER SMALL TURNED H
-02AE ; [.182D.0020.0002.02AE] # LATIN SMALL LETTER TURNED H WITH FISHHOOK
-02AF ; [.1831.0020.0002.02AF] # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
-026F ; [.1835.0020.0002.026F] # LATIN SMALL LETTER TURNED M
-019C ; [.1835.0020.0008.019C] # LATIN CAPITAL LETTER TURNED M
-1D5A ; [.1835.0020.0014.1D5A] # MODIFIER LETTER SMALL TURNED M
-A7FA ; [.1839.0020.0002.A7FA] # LATIN LETTER SMALL CAPITAL TURNED M
-1D1F ; [.183A.0020.0002.1D1F] # LATIN SMALL LETTER SIDEWAYS TURNED M
-0270 ; [.183B.0020.0002.0270] # LATIN SMALL LETTER TURNED M WITH LONG LEG
-1DAD ; [.183B.0020.0014.1DAD] # MODIFIER LETTER SMALL TURNED M WITH LONG LEG
-028A ; [.183F.0020.0002.028A] # LATIN SMALL LETTER UPSILON
-01B1 ; [.183F.0020.0008.01B1] # LATIN CAPITAL LETTER UPSILON
-1DB7 ; [.183F.0020.0014.1DB7] # MODIFIER LETTER SMALL UPSILON
-1D7F ; [.1843.0020.0002.1D7F] # LATIN SMALL LETTER UPSILON WITH STROKE
-0076 ; [.1844.0020.0002.0076] # LATIN SMALL LETTER V
-FF56 ; [.1844.0020.0003.FF56] # FULLWIDTH LATIN SMALL LETTER V
-036E ; [.1844.0020.0004.036E] # COMBINING LATIN SMALL LETTER V
-2174 ; [.1844.0020.0004.2174] # SMALL ROMAN NUMERAL FIVE
-24B1 ; [*02FB.0020.0004.24B1][.1844.0020.0004.24B1][*02FC.0020.001F.24B1] # PARENTHESIZED LATIN SMALL LETTER V
-1D42F ; [.1844.0020.0005.1D42F] # MATHEMATICAL BOLD SMALL V
-1D463 ; [.1844.0020.0005.1D463] # MATHEMATICAL ITALIC SMALL V
-1D497 ; [.1844.0020.0005.1D497] # MATHEMATICAL BOLD ITALIC SMALL V
-1D4CB ; [.1844.0020.0005.1D4CB] # MATHEMATICAL SCRIPT SMALL V
-1D4FF ; [.1844.0020.0005.1D4FF] # MATHEMATICAL BOLD SCRIPT SMALL V
-1D533 ; [.1844.0020.0005.1D533] # MATHEMATICAL FRAKTUR SMALL V
-1D567 ; [.1844.0020.0005.1D567] # MATHEMATICAL DOUBLE-STRUCK SMALL V
-1D59B ; [.1844.0020.0005.1D59B] # MATHEMATICAL BOLD FRAKTUR SMALL V
-1D5CF ; [.1844.0020.0005.1D5CF] # MATHEMATICAL SANS-SERIF SMALL V
-1D603 ; [.1844.0020.0005.1D603] # MATHEMATICAL SANS-SERIF BOLD SMALL V
-1D637 ; [.1844.0020.0005.1D637] # MATHEMATICAL SANS-SERIF ITALIC SMALL V
-1D66B ; [.1844.0020.0005.1D66B] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
-1D69F ; [.1844.0020.0005.1D69F] # MATHEMATICAL MONOSPACE SMALL V
-24E5 ; [.1844.0020.0006.24E5] # CIRCLED LATIN SMALL LETTER V
-0056 ; [.1844.0020.0008.0056] # LATIN CAPITAL LETTER V
-FF36 ; [.1844.0020.0009.FF36] # FULLWIDTH LATIN CAPITAL LETTER V
-2164 ; [.1844.0020.000A.2164] # ROMAN NUMERAL FIVE
-1F125 ; [*02FB.0020.0004.1F125][.1844.0020.000A.1F125][*02FC.0020.001F.1F125] # PARENTHESIZED LATIN CAPITAL LETTER V
-1F1FB ; [.1844.0020.000A.1F1FB] # REGIONAL INDICATOR SYMBOL LETTER V
-1D415 ; [.1844.0020.000B.1D415] # MATHEMATICAL BOLD CAPITAL V
-1D449 ; [.1844.0020.000B.1D449] # MATHEMATICAL ITALIC CAPITAL V
-1D47D ; [.1844.0020.000B.1D47D] # MATHEMATICAL BOLD ITALIC CAPITAL V
-1D4B1 ; [.1844.0020.000B.1D4B1] # MATHEMATICAL SCRIPT CAPITAL V
-1D4E5 ; [.1844.0020.000B.1D4E5] # MATHEMATICAL BOLD SCRIPT CAPITAL V
-1D519 ; [.1844.0020.000B.1D519] # MATHEMATICAL FRAKTUR CAPITAL V
-1D54D ; [.1844.0020.000B.1D54D] # MATHEMATICAL DOUBLE-STRUCK CAPITAL V
-1D581 ; [.1844.0020.000B.1D581] # MATHEMATICAL BOLD FRAKTUR CAPITAL V
-1D5B5 ; [.1844.0020.000B.1D5B5] # MATHEMATICAL SANS-SERIF CAPITAL V
-1D5E9 ; [.1844.0020.000B.1D5E9] # MATHEMATICAL SANS-SERIF BOLD CAPITAL V
-1D61D ; [.1844.0020.000B.1D61D] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
-1D651 ; [.1844.0020.000B.1D651] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
-1D685 ; [.1844.0020.000B.1D685] # MATHEMATICAL MONOSPACE CAPITAL V
-24CB ; [.1844.0020.000C.24CB] # CIRCLED LATIN CAPITAL LETTER V
-1F165 ; [.1844.0020.000C.1F165] # NEGATIVE CIRCLED LATIN CAPITAL LETTER V
-1D5B ; [.1844.0020.0014.1D5B] # MODIFIER LETTER SMALL V
-1D65 ; [.1844.0020.0015.1D65] # LATIN SUBSCRIPT SMALL LETTER V
-2C7D ; [.1844.0020.001D.2C7D] # MODIFIER LETTER CAPITAL V
-1F145 ; [.1844.0020.001D.1F145] # SQUARED LATIN CAPITAL LETTER V
-1F185 ; [.1844.0020.001D.1F185] # NEGATIVE SQUARED LATIN CAPITAL LETTER V
-1E7D ; [.1844.0020.0002.0076][.0000.004E.0002.0303] # LATIN SMALL LETTER V WITH TILDE
-1E7C ; [.1844.0020.0008.0056][.0000.004E.0002.0303] # LATIN CAPITAL LETTER V WITH TILDE
-1E7F ; [.1844.0020.0002.0076][.0000.0070.0002.0323] # LATIN SMALL LETTER V WITH DOT BELOW
-1E7E ; [.1844.0020.0008.0056][.0000.0070.0002.0323] # LATIN CAPITAL LETTER V WITH DOT BELOW
-2175 ; [.1844.0020.0004.2175][.16B2.0020.0004.2175] # SMALL ROMAN NUMERAL SIX
-2165 ; [.1844.0020.000A.2165][.16B2.0020.000A.2165] # ROMAN NUMERAL SIX
-2176 ; [.1844.0020.0004.2176][.16B2.0020.0004.2176][.16B2.0020.001F.2176] # SMALL ROMAN NUMERAL SEVEN
-2166 ; [.1844.0020.000A.2166][.16B2.0020.000A.2166][.16B2.0020.001F.2166] # ROMAN NUMERAL SEVEN
-2177 ; [.1844.0020.0004.2177][.16B2.0020.0004.2177][.16B2.0020.001F.2177][.16B2.0020.001F.2177] # SMALL ROMAN NUMERAL EIGHT
-2167 ; [.1844.0020.000A.2167][.16B2.0020.000A.2167][.16B2.0020.001F.2167][.16B2.0020.001F.2167] # ROMAN NUMERAL EIGHT
-33DE ; [.1844.0020.001D.33DE][*05AB.0020.001C.33DE][.1726.0020.001F.33DE] # SQUARE V OVER M
-1F19A ; [.1844.0020.001D.1F19A][.17D8.0020.001D.1F19A] # SQUARED VS
-A761 ; [.1844.0020.0004.A761][.1865.0020.0004.A761] # LATIN SMALL LETTER VY
-A760 ; [.1844.0020.000A.A760][.1865.0020.000A.A760] # LATIN CAPITAL LETTER VY
-1D20 ; [.1848.0020.0002.1D20] # LATIN LETTER SMALL CAPITAL V
-A75F ; [.1849.0020.0002.A75F] # LATIN SMALL LETTER V WITH DIAGONAL STROKE
-A75E ; [.1849.0020.0008.A75E] # LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
-1D8C ; [.184A.0020.0002.1D8C] # LATIN SMALL LETTER V WITH PALATAL HOOK
-028B ; [.184B.0020.0002.028B] # LATIN SMALL LETTER V WITH HOOK
-01B2 ; [.184B.0020.0008.01B2] # LATIN CAPITAL LETTER V WITH HOOK
-1DB9 ; [.184B.0020.0014.1DB9] # MODIFIER LETTER SMALL V WITH HOOK
-2C71 ; [.184F.0020.0002.2C71] # LATIN SMALL LETTER V WITH RIGHT HOOK
-2C74 ; [.1850.0020.0002.2C74] # LATIN SMALL LETTER V WITH CURL
-1EFD ; [.1851.0020.0002.1EFD] # LATIN SMALL LETTER MIDDLE-WELSH V
-1EFC ; [.1851.0020.0008.1EFC] # LATIN CAPITAL LETTER MIDDLE-WELSH V
-028C ; [.1852.0020.0002.028C] # LATIN SMALL LETTER TURNED V
-0245 ; [.1852.0020.0008.0245] # LATIN CAPITAL LETTER TURNED V
-1DBA ; [.1852.0020.0014.1DBA] # MODIFIER LETTER SMALL TURNED V
-0077 ; [.1856.0020.0002.0077] # LATIN SMALL LETTER W
-FF57 ; [.1856.0020.0003.FF57] # FULLWIDTH LATIN SMALL LETTER W
-24B2 ; [*02FB.0020.0004.24B2][.1856.0020.0004.24B2][*02FC.0020.001F.24B2] # PARENTHESIZED LATIN SMALL LETTER W
-1D430 ; [.1856.0020.0005.1D430] # MATHEMATICAL BOLD SMALL W
-1D464 ; [.1856.0020.0005.1D464] # MATHEMATICAL ITALIC SMALL W
-1D498 ; [.1856.0020.0005.1D498] # MATHEMATICAL BOLD ITALIC SMALL W
-1D4CC ; [.1856.0020.0005.1D4CC] # MATHEMATICAL SCRIPT SMALL W
-1D500 ; [.1856.0020.0005.1D500] # MATHEMATICAL BOLD SCRIPT SMALL W
-1D534 ; [.1856.0020.0005.1D534] # MATHEMATICAL FRAKTUR SMALL W
-1D568 ; [.1856.0020.0005.1D568] # MATHEMATICAL DOUBLE-STRUCK SMALL W
-1D59C ; [.1856.0020.0005.1D59C] # MATHEMATICAL BOLD FRAKTUR SMALL W
-1D5D0 ; [.1856.0020.0005.1D5D0] # MATHEMATICAL SANS-SERIF SMALL W
-1D604 ; [.1856.0020.0005.1D604] # MATHEMATICAL SANS-SERIF BOLD SMALL W
-1D638 ; [.1856.0020.0005.1D638] # MATHEMATICAL SANS-SERIF ITALIC SMALL W
-1D66C ; [.1856.0020.0005.1D66C] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
-1D6A0 ; [.1856.0020.0005.1D6A0] # MATHEMATICAL MONOSPACE SMALL W
-24E6 ; [.1856.0020.0006.24E6] # CIRCLED LATIN SMALL LETTER W
-0057 ; [.1856.0020.0008.0057] # LATIN CAPITAL LETTER W
-FF37 ; [.1856.0020.0009.FF37] # FULLWIDTH LATIN CAPITAL LETTER W
-1F126 ; [*02FB.0020.0004.1F126][.1856.0020.000A.1F126][*02FC.0020.001F.1F126] # PARENTHESIZED LATIN CAPITAL LETTER W
-1F1FC ; [.1856.0020.000A.1F1FC] # REGIONAL INDICATOR SYMBOL LETTER W
-1D416 ; [.1856.0020.000B.1D416] # MATHEMATICAL BOLD CAPITAL W
-1D44A ; [.1856.0020.000B.1D44A] # MATHEMATICAL ITALIC CAPITAL W
-1D47E ; [.1856.0020.000B.1D47E] # MATHEMATICAL BOLD ITALIC CAPITAL W
-1D4B2 ; [.1856.0020.000B.1D4B2] # MATHEMATICAL SCRIPT CAPITAL W
-1D4E6 ; [.1856.0020.000B.1D4E6] # MATHEMATICAL BOLD SCRIPT CAPITAL W
-1D51A ; [.1856.0020.000B.1D51A] # MATHEMATICAL FRAKTUR CAPITAL W
-1D54E ; [.1856.0020.000B.1D54E] # MATHEMATICAL DOUBLE-STRUCK CAPITAL W
-1D582 ; [.1856.0020.000B.1D582] # MATHEMATICAL BOLD FRAKTUR CAPITAL W
-1D5B6 ; [.1856.0020.000B.1D5B6] # MATHEMATICAL SANS-SERIF CAPITAL W
-1D5EA ; [.1856.0020.000B.1D5EA] # MATHEMATICAL SANS-SERIF BOLD CAPITAL W
-1D61E ; [.1856.0020.000B.1D61E] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
-1D652 ; [.1856.0020.000B.1D652] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
-1D686 ; [.1856.0020.000B.1D686] # MATHEMATICAL MONOSPACE CAPITAL W
-24CC ; [.1856.0020.000C.24CC] # CIRCLED LATIN CAPITAL LETTER W
-1F166 ; [.1856.0020.000C.1F166] # NEGATIVE CIRCLED LATIN CAPITAL LETTER W
-02B7 ; [.1856.0020.0014.02B7] # MODIFIER LETTER SMALL W
-1D42 ; [.1856.0020.001D.1D42] # MODIFIER LETTER CAPITAL W
-1F146 ; [.1856.0020.001D.1F146] # SQUARED LATIN CAPITAL LETTER W
-1F186 ; [.1856.0020.001D.1F186] # NEGATIVE SQUARED LATIN CAPITAL LETTER W
-1E83 ; [.1856.0020.0002.0077][.0000.0032.0002.0301] # LATIN SMALL LETTER W WITH ACUTE
-1E82 ; [.1856.0020.0008.0057][.0000.0032.0002.0301] # LATIN CAPITAL LETTER W WITH ACUTE
-1E81 ; [.1856.0020.0002.0077][.0000.0035.0002.0300] # LATIN SMALL LETTER W WITH GRAVE
-1E80 ; [.1856.0020.0008.0057][.0000.0035.0002.0300] # LATIN CAPITAL LETTER W WITH GRAVE
-0175 ; [.1856.0020.0002.0077][.0000.003C.0002.0302] # LATIN SMALL LETTER W WITH CIRCUMFLEX
-0174 ; [.1856.0020.0008.0057][.0000.003C.0002.0302] # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-1E98 ; [.1856.0020.0002.0077][.0000.0043.0002.030A] # LATIN SMALL LETTER W WITH RING ABOVE
-1E85 ; [.1856.0020.0002.0077][.0000.0047.0002.0308] # LATIN SMALL LETTER W WITH DIAERESIS
-1E84 ; [.1856.0020.0008.0057][.0000.0047.0002.0308] # LATIN CAPITAL LETTER W WITH DIAERESIS
-1E87 ; [.1856.0020.0002.0077][.0000.0052.0002.0307] # LATIN SMALL LETTER W WITH DOT ABOVE
-1E86 ; [.1856.0020.0008.0057][.0000.0052.0002.0307] # LATIN CAPITAL LETTER W WITH DOT ABOVE
-1E89 ; [.1856.0020.0002.0077][.0000.0070.0002.0323] # LATIN SMALL LETTER W WITH DOT BELOW
-1E88 ; [.1856.0020.0008.0057][.0000.0070.0002.0323] # LATIN CAPITAL LETTER W WITH DOT BELOW
-33DD ; [.1856.0020.001D.33DD][.15EA.0020.001C.33DD] # SQUARE WB
-1F14F ; [.1856.0020.001D.1F14F][.1602.0020.001D.1F14F] # SQUARED WC
-1F18F ; [.1856.0020.001D.1F18F][.1602.0020.001D.1F18F] # NEGATIVE SQUARED WC
-1F12E ; [.1856.0020.000C.1F12E][.187A.0020.000C.1F12E] # CIRCLED WZ
-1D21 ; [.185A.0020.0002.1D21] # LATIN LETTER SMALL CAPITAL W
-2C73 ; [.185B.0020.0002.2C73] # LATIN SMALL LETTER W WITH HOOK
-2C72 ; [.185B.0020.0008.2C72] # LATIN CAPITAL LETTER W WITH HOOK
-028D ; [.185C.0020.0002.028D] # LATIN SMALL LETTER TURNED W
-0078 ; [.1860.0020.0002.0078] # LATIN SMALL LETTER X
-FF58 ; [.1860.0020.0003.FF58] # FULLWIDTH LATIN SMALL LETTER X
-036F ; [.1860.0020.0004.036F] # COMBINING LATIN SMALL LETTER X
-2179 ; [.1860.0020.0004.2179] # SMALL ROMAN NUMERAL TEN
-24B3 ; [*02FB.0020.0004.24B3][.1860.0020.0004.24B3][*02FC.0020.001F.24B3] # PARENTHESIZED LATIN SMALL LETTER X
-1D431 ; [.1860.0020.0005.1D431] # MATHEMATICAL BOLD SMALL X
-1D465 ; [.1860.0020.0005.1D465] # MATHEMATICAL ITALIC SMALL X
-1D499 ; [.1860.0020.0005.1D499] # MATHEMATICAL BOLD ITALIC SMALL X
-1D4CD ; [.1860.0020.0005.1D4CD] # MATHEMATICAL SCRIPT SMALL X
-1D501 ; [.1860.0020.0005.1D501] # MATHEMATICAL BOLD SCRIPT SMALL X
-1D535 ; [.1860.0020.0005.1D535] # MATHEMATICAL FRAKTUR SMALL X
-1D569 ; [.1860.0020.0005.1D569] # MATHEMATICAL DOUBLE-STRUCK SMALL X
-1D59D ; [.1860.0020.0005.1D59D] # MATHEMATICAL BOLD FRAKTUR SMALL X
-1D5D1 ; [.1860.0020.0005.1D5D1] # MATHEMATICAL SANS-SERIF SMALL X
-1D605 ; [.1860.0020.0005.1D605] # MATHEMATICAL SANS-SERIF BOLD SMALL X
-1D639 ; [.1860.0020.0005.1D639] # MATHEMATICAL SANS-SERIF ITALIC SMALL X
-1D66D ; [.1860.0020.0005.1D66D] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
-1D6A1 ; [.1860.0020.0005.1D6A1] # MATHEMATICAL MONOSPACE SMALL X
-24E7 ; [.1860.0020.0006.24E7] # CIRCLED LATIN SMALL LETTER X
-0058 ; [.1860.0020.0008.0058] # LATIN CAPITAL LETTER X
-FF38 ; [.1860.0020.0009.FF38] # FULLWIDTH LATIN CAPITAL LETTER X
-2169 ; [.1860.0020.000A.2169] # ROMAN NUMERAL TEN
-1F127 ; [*02FB.0020.0004.1F127][.1860.0020.000A.1F127][*02FC.0020.001F.1F127] # PARENTHESIZED LATIN CAPITAL LETTER X
-1F1FD ; [.1860.0020.000A.1F1FD] # REGIONAL INDICATOR SYMBOL LETTER X
-1D417 ; [.1860.0020.000B.1D417] # MATHEMATICAL BOLD CAPITAL X
-1D44B ; [.1860.0020.000B.1D44B] # MATHEMATICAL ITALIC CAPITAL X
-1D47F ; [.1860.0020.000B.1D47F] # MATHEMATICAL BOLD ITALIC CAPITAL X
-1D4B3 ; [.1860.0020.000B.1D4B3] # MATHEMATICAL SCRIPT CAPITAL X
-1D4E7 ; [.1860.0020.000B.1D4E7] # MATHEMATICAL BOLD SCRIPT CAPITAL X
-1D51B ; [.1860.0020.000B.1D51B] # MATHEMATICAL FRAKTUR CAPITAL X
-1D54F ; [.1860.0020.000B.1D54F] # MATHEMATICAL DOUBLE-STRUCK CAPITAL X
-1D583 ; [.1860.0020.000B.1D583] # MATHEMATICAL BOLD FRAKTUR CAPITAL X
-1D5B7 ; [.1860.0020.000B.1D5B7] # MATHEMATICAL SANS-SERIF CAPITAL X
-1D5EB ; [.1860.0020.000B.1D5EB] # MATHEMATICAL SANS-SERIF BOLD CAPITAL X
-1D61F ; [.1860.0020.000B.1D61F] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
-1D653 ; [.1860.0020.000B.1D653] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
-1D687 ; [.1860.0020.000B.1D687] # MATHEMATICAL MONOSPACE CAPITAL X
-24CD ; [.1860.0020.000C.24CD] # CIRCLED LATIN CAPITAL LETTER X
-1F167 ; [.1860.0020.000C.1F167] # NEGATIVE CIRCLED LATIN CAPITAL LETTER X
-02E3 ; [.1860.0020.0014.02E3] # MODIFIER LETTER SMALL X
-2093 ; [.1860.0020.0015.2093] # LATIN SUBSCRIPT SMALL LETTER X
-1F147 ; [.1860.0020.001D.1F147] # SQUARED LATIN CAPITAL LETTER X
-1F187 ; [.1860.0020.001D.1F187] # NEGATIVE SQUARED LATIN CAPITAL LETTER X
-1E8D ; [.1860.0020.0002.0078][.0000.0047.0002.0308] # LATIN SMALL LETTER X WITH DIAERESIS
-1E8C ; [.1860.0020.0008.0058][.0000.0047.0002.0308] # LATIN CAPITAL LETTER X WITH DIAERESIS
-1E8B ; [.1860.0020.0002.0078][.0000.0052.0002.0307] # LATIN SMALL LETTER X WITH DOT ABOVE
-1E8A ; [.1860.0020.0008.0058][.0000.0052.0002.0307] # LATIN CAPITAL LETTER X WITH DOT ABOVE
-217A ; [.1860.0020.0004.217A][.16B2.0020.0004.217A] # SMALL ROMAN NUMERAL ELEVEN
-216A ; [.1860.0020.000A.216A][.16B2.0020.000A.216A] # ROMAN NUMERAL ELEVEN
-217B ; [.1860.0020.0004.217B][.16B2.0020.0004.217B][.16B2.0020.001F.217B] # SMALL ROMAN NUMERAL TWELVE
-216B ; [.1860.0020.000A.216B][.16B2.0020.000A.216B][.16B2.0020.001F.216B] # ROMAN NUMERAL TWELVE
-1D8D ; [.1864.0020.0002.1D8D] # LATIN SMALL LETTER X WITH PALATAL HOOK
-0079 ; [.1865.0020.0002.0079] # LATIN SMALL LETTER Y
-FF59 ; [.1865.0020.0003.FF59] # FULLWIDTH LATIN SMALL LETTER Y
-24B4 ; [*02FB.0020.0004.24B4][.1865.0020.0004.24B4][*02FC.0020.001F.24B4] # PARENTHESIZED LATIN SMALL LETTER Y
-1D432 ; [.1865.0020.0005.1D432] # MATHEMATICAL BOLD SMALL Y
-1D466 ; [.1865.0020.0005.1D466] # MATHEMATICAL ITALIC SMALL Y
-1D49A ; [.1865.0020.0005.1D49A] # MATHEMATICAL BOLD ITALIC SMALL Y
-1D4CE ; [.1865.0020.0005.1D4CE] # MATHEMATICAL SCRIPT SMALL Y
-1D502 ; [.1865.0020.0005.1D502] # MATHEMATICAL BOLD SCRIPT SMALL Y
-1D536 ; [.1865.0020.0005.1D536] # MATHEMATICAL FRAKTUR SMALL Y
-1D56A ; [.1865.0020.0005.1D56A] # MATHEMATICAL DOUBLE-STRUCK SMALL Y
-1D59E ; [.1865.0020.0005.1D59E] # MATHEMATICAL BOLD FRAKTUR SMALL Y
-1D5D2 ; [.1865.0020.0005.1D5D2] # MATHEMATICAL SANS-SERIF SMALL Y
-1D606 ; [.1865.0020.0005.1D606] # MATHEMATICAL SANS-SERIF BOLD SMALL Y
-1D63A ; [.1865.0020.0005.1D63A] # MATHEMATICAL SANS-SERIF ITALIC SMALL Y
-1D66E ; [.1865.0020.0005.1D66E] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
-1D6A2 ; [.1865.0020.0005.1D6A2] # MATHEMATICAL MONOSPACE SMALL Y
-24E8 ; [.1865.0020.0006.24E8] # CIRCLED LATIN SMALL LETTER Y
-0059 ; [.1865.0020.0008.0059] # LATIN CAPITAL LETTER Y
-FF39 ; [.1865.0020.0009.FF39] # FULLWIDTH LATIN CAPITAL LETTER Y
-1F128 ; [*02FB.0020.0004.1F128][.1865.0020.000A.1F128][*02FC.0020.001F.1F128] # PARENTHESIZED LATIN CAPITAL LETTER Y
-1F1FE ; [.1865.0020.000A.1F1FE] # REGIONAL INDICATOR SYMBOL LETTER Y
-1D418 ; [.1865.0020.000B.1D418] # MATHEMATICAL BOLD CAPITAL Y
-1D44C ; [.1865.0020.000B.1D44C] # MATHEMATICAL ITALIC CAPITAL Y
-1D480 ; [.1865.0020.000B.1D480] # MATHEMATICAL BOLD ITALIC CAPITAL Y
-1D4B4 ; [.1865.0020.000B.1D4B4] # MATHEMATICAL SCRIPT CAPITAL Y
-1D4E8 ; [.1865.0020.000B.1D4E8] # MATHEMATICAL BOLD SCRIPT CAPITAL Y
-1D51C ; [.1865.0020.000B.1D51C] # MATHEMATICAL FRAKTUR CAPITAL Y
-1D550 ; [.1865.0020.000B.1D550] # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
-1D584 ; [.1865.0020.000B.1D584] # MATHEMATICAL BOLD FRAKTUR CAPITAL Y
-1D5B8 ; [.1865.0020.000B.1D5B8] # MATHEMATICAL SANS-SERIF CAPITAL Y
-1D5EC ; [.1865.0020.000B.1D5EC] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
-1D620 ; [.1865.0020.000B.1D620] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
-1D654 ; [.1865.0020.000B.1D654] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
-1D688 ; [.1865.0020.000B.1D688] # MATHEMATICAL MONOSPACE CAPITAL Y
-24CE ; [.1865.0020.000C.24CE] # CIRCLED LATIN CAPITAL LETTER Y
-1F168 ; [.1865.0020.000C.1F168] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Y
-02B8 ; [.1865.0020.0014.02B8] # MODIFIER LETTER SMALL Y
-1F148 ; [.1865.0020.001D.1F148] # SQUARED LATIN CAPITAL LETTER Y
-1F188 ; [.1865.0020.001D.1F188] # NEGATIVE SQUARED LATIN CAPITAL LETTER Y
-00FD ; [.1865.0020.0002.0079][.0000.0032.0002.0301] # LATIN SMALL LETTER Y WITH ACUTE
-00DD ; [.1865.0020.0008.0059][.0000.0032.0002.0301] # LATIN CAPITAL LETTER Y WITH ACUTE
-1EF3 ; [.1865.0020.0002.0079][.0000.0035.0002.0300] # LATIN SMALL LETTER Y WITH GRAVE
-1EF2 ; [.1865.0020.0008.0059][.0000.0035.0002.0300] # LATIN CAPITAL LETTER Y WITH GRAVE
-0177 ; [.1865.0020.0002.0079][.0000.003C.0002.0302] # LATIN SMALL LETTER Y WITH CIRCUMFLEX
-0176 ; [.1865.0020.0008.0059][.0000.003C.0002.0302] # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-1E99 ; [.1865.0020.0002.0079][.0000.0043.0002.030A] # LATIN SMALL LETTER Y WITH RING ABOVE
-00FF ; [.1865.0020.0002.0079][.0000.0047.0002.0308] # LATIN SMALL LETTER Y WITH DIAERESIS
-0178 ; [.1865.0020.0008.0059][.0000.0047.0002.0308] # LATIN CAPITAL LETTER Y WITH DIAERESIS
-1EF9 ; [.1865.0020.0002.0079][.0000.004E.0002.0303] # LATIN SMALL LETTER Y WITH TILDE
-1EF8 ; [.1865.0020.0008.0059][.0000.004E.0002.0303] # LATIN CAPITAL LETTER Y WITH TILDE
-1E8F ; [.1865.0020.0002.0079][.0000.0052.0002.0307] # LATIN SMALL LETTER Y WITH DOT ABOVE
-1E8E ; [.1865.0020.0008.0059][.0000.0052.0002.0307] # LATIN CAPITAL LETTER Y WITH DOT ABOVE
-0233 ; [.1865.0020.0002.0079][.0000.005B.0002.0304] # LATIN SMALL LETTER Y WITH MACRON
-0232 ; [.1865.0020.0008.0059][.0000.005B.0002.0304] # LATIN CAPITAL LETTER Y WITH MACRON
-1EF7 ; [.1865.0020.0002.0079][.0000.0064.0002.0309] # LATIN SMALL LETTER Y WITH HOOK ABOVE
-1EF6 ; [.1865.0020.0008.0059][.0000.0064.0002.0309] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
-1EF5 ; [.1865.0020.0002.0079][.0000.0070.0002.0323] # LATIN SMALL LETTER Y WITH DOT BELOW
-1EF4 ; [.1865.0020.0008.0059][.0000.0070.0002.0323] # LATIN CAPITAL LETTER Y WITH DOT BELOW
-028F ; [.1869.0020.0002.028F] # LATIN LETTER SMALL CAPITAL Y
-024F ; [.186D.0020.0002.024F] # LATIN SMALL LETTER Y WITH STROKE
-024E ; [.186D.0020.0008.024E] # LATIN CAPITAL LETTER Y WITH STROKE
-01B4 ; [.1871.0020.0002.01B4] # LATIN SMALL LETTER Y WITH HOOK
-01B3 ; [.1871.0020.0008.01B3] # LATIN CAPITAL LETTER Y WITH HOOK
-1EFF ; [.1875.0020.0002.1EFF] # LATIN SMALL LETTER Y WITH LOOP
-1EFE ; [.1875.0020.0008.1EFE] # LATIN CAPITAL LETTER Y WITH LOOP
-021D ; [.1876.0020.0002.021D] # LATIN SMALL LETTER YOGH
-021C ; [.1876.0020.0008.021C] # LATIN CAPITAL LETTER YOGH
-007A ; [.187A.0020.0002.007A] # LATIN SMALL LETTER Z
-FF5A ; [.187A.0020.0003.FF5A] # FULLWIDTH LATIN SMALL LETTER Z
-1DE6 ; [.187A.0020.0004.1DE6] # COMBINING LATIN SMALL LETTER Z
-24B5 ; [*02FB.0020.0004.24B5][.187A.0020.0004.24B5][*02FC.0020.001F.24B5] # PARENTHESIZED LATIN SMALL LETTER Z
-1D433 ; [.187A.0020.0005.1D433] # MATHEMATICAL BOLD SMALL Z
-1D467 ; [.187A.0020.0005.1D467] # MATHEMATICAL ITALIC SMALL Z
-1D49B ; [.187A.0020.0005.1D49B] # MATHEMATICAL BOLD ITALIC SMALL Z
-1D4CF ; [.187A.0020.0005.1D4CF] # MATHEMATICAL SCRIPT SMALL Z
-1D503 ; [.187A.0020.0005.1D503] # MATHEMATICAL BOLD SCRIPT SMALL Z
-1D537 ; [.187A.0020.0005.1D537] # MATHEMATICAL FRAKTUR SMALL Z
-1D56B ; [.187A.0020.0005.1D56B] # MATHEMATICAL DOUBLE-STRUCK SMALL Z
-1D59F ; [.187A.0020.0005.1D59F] # MATHEMATICAL BOLD FRAKTUR SMALL Z
-1D5D3 ; [.187A.0020.0005.1D5D3] # MATHEMATICAL SANS-SERIF SMALL Z
-1D607 ; [.187A.0020.0005.1D607] # MATHEMATICAL SANS-SERIF BOLD SMALL Z
-1D63B ; [.187A.0020.0005.1D63B] # MATHEMATICAL SANS-SERIF ITALIC SMALL Z
-1D66F ; [.187A.0020.0005.1D66F] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
-1D6A3 ; [.187A.0020.0005.1D6A3] # MATHEMATICAL MONOSPACE SMALL Z
-24E9 ; [.187A.0020.0006.24E9] # CIRCLED LATIN SMALL LETTER Z
-005A ; [.187A.0020.0008.005A] # LATIN CAPITAL LETTER Z
-FF3A ; [.187A.0020.0009.FF3A] # FULLWIDTH LATIN CAPITAL LETTER Z
-1F129 ; [*02FB.0020.0004.1F129][.187A.0020.000A.1F129][*02FC.0020.001F.1F129] # PARENTHESIZED LATIN CAPITAL LETTER Z
-1F1FF ; [.187A.0020.000A.1F1FF] # REGIONAL INDICATOR SYMBOL LETTER Z
-2124 ; [.187A.0020.000B.2124] # DOUBLE-STRUCK CAPITAL Z
-2128 ; [.187A.0020.000B.2128] # BLACK-LETTER CAPITAL Z
-1D419 ; [.187A.0020.000B.1D419] # MATHEMATICAL BOLD CAPITAL Z
-1D44D ; [.187A.0020.000B.1D44D] # MATHEMATICAL ITALIC CAPITAL Z
-1D481 ; [.187A.0020.000B.1D481] # MATHEMATICAL BOLD ITALIC CAPITAL Z
-1D4B5 ; [.187A.0020.000B.1D4B5] # MATHEMATICAL SCRIPT CAPITAL Z
-1D4E9 ; [.187A.0020.000B.1D4E9] # MATHEMATICAL BOLD SCRIPT CAPITAL Z
-1D585 ; [.187A.0020.000B.1D585] # MATHEMATICAL BOLD FRAKTUR CAPITAL Z
-1D5B9 ; [.187A.0020.000B.1D5B9] # MATHEMATICAL SANS-SERIF CAPITAL Z
-1D5ED ; [.187A.0020.000B.1D5ED] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
-1D621 ; [.187A.0020.000B.1D621] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
-1D655 ; [.187A.0020.000B.1D655] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
-1D689 ; [.187A.0020.000B.1D689] # MATHEMATICAL MONOSPACE CAPITAL Z
-24CF ; [.187A.0020.000C.24CF] # CIRCLED LATIN CAPITAL LETTER Z
-1F169 ; [.187A.0020.000C.1F169] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
-1DBB ; [.187A.0020.0014.1DBB] # MODIFIER LETTER SMALL Z
-1F149 ; [.187A.0020.001D.1F149] # SQUARED LATIN CAPITAL LETTER Z
-1F189 ; [.187A.0020.001D.1F189] # NEGATIVE SQUARED LATIN CAPITAL LETTER Z
-017A ; [.187A.0020.0002.007A][.0000.0032.0002.0301] # LATIN SMALL LETTER Z WITH ACUTE
-0179 ; [.187A.0020.0008.005A][.0000.0032.0002.0301] # LATIN CAPITAL LETTER Z WITH ACUTE
-1E91 ; [.187A.0020.0002.007A][.0000.003C.0002.0302] # LATIN SMALL LETTER Z WITH CIRCUMFLEX
-1E90 ; [.187A.0020.0008.005A][.0000.003C.0002.0302] # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
-017E ; [.187A.0020.0002.007A][.0000.0041.0002.030C] # LATIN SMALL LETTER Z WITH CARON
-017D ; [.187A.0020.0008.005A][.0000.0041.0002.030C] # LATIN CAPITAL LETTER Z WITH CARON
-017C ; [.187A.0020.0002.007A][.0000.0052.0002.0307] # LATIN SMALL LETTER Z WITH DOT ABOVE
-017B ; [.187A.0020.0008.005A][.0000.0052.0002.0307] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
-1E93 ; [.187A.0020.0002.007A][.0000.0070.0002.0323] # LATIN SMALL LETTER Z WITH DOT BELOW
-1E92 ; [.187A.0020.0008.005A][.0000.0070.0002.0323] # LATIN CAPITAL LETTER Z WITH DOT BELOW
-1E95 ; [.187A.0020.0002.007A][.0000.007B.0002.0331] # LATIN SMALL LETTER Z WITH LINE BELOW
-1E94 ; [.187A.0020.0008.005A][.0000.007B.0002.0331] # LATIN CAPITAL LETTER Z WITH LINE BELOW
-018D ; [.187A.0020.0004.018D][.1856.0020.0004.018D] # LATIN SMALL LETTER TURNED DELTA
-1D22 ; [.187E.0020.0002.1D22] # LATIN LETTER SMALL CAPITAL Z
-01B6 ; [.187F.0020.0002.01B6] # LATIN SMALL LETTER Z WITH STROKE
-01B5 ; [.187F.0020.0008.01B5] # LATIN CAPITAL LETTER Z WITH STROKE
-1D76 ; [.1883.0020.0002.1D76] # LATIN SMALL LETTER Z WITH MIDDLE TILDE
-1D8E ; [.1884.0020.0002.1D8E] # LATIN SMALL LETTER Z WITH PALATAL HOOK
-0225 ; [.1885.0020.0002.0225] # LATIN SMALL LETTER Z WITH HOOK
-0224 ; [.1885.0020.0008.0224] # LATIN CAPITAL LETTER Z WITH HOOK
-0290 ; [.1889.0020.0002.0290] # LATIN SMALL LETTER Z WITH RETROFLEX HOOK
-1DBC ; [.1889.0020.0014.1DBC] # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
-0291 ; [.188D.0020.0002.0291] # LATIN SMALL LETTER Z WITH CURL
-1DBD ; [.188D.0020.0014.1DBD] # MODIFIER LETTER SMALL Z WITH CURL
-0240 ; [.1891.0020.0002.0240] # LATIN SMALL LETTER Z WITH SWASH TAIL
-2C7F ; [.1891.0020.0008.2C7F] # LATIN CAPITAL LETTER Z WITH SWASH TAIL
-2C6C ; [.1895.0020.0002.2C6C] # LATIN SMALL LETTER Z WITH DESCENDER
-2C6B ; [.1895.0020.0008.2C6B] # LATIN CAPITAL LETTER Z WITH DESCENDER
-A763 ; [.1896.0020.0002.A763] # LATIN SMALL LETTER VISIGOTHIC Z
-A762 ; [.1896.0020.0008.A762] # LATIN CAPITAL LETTER VISIGOTHIC Z
-0292 ; [.1897.0020.0002.0292] # LATIN SMALL LETTER EZH
-01B7 ; [.1897.0020.0008.01B7] # LATIN CAPITAL LETTER EZH
-1DBE ; [.1897.0020.0014.1DBE] # MODIFIER LETTER SMALL EZH
-01EF ; [.1897.0020.0002.0292][.0000.0041.0002.030C] # LATIN SMALL LETTER EZH WITH CARON
-01EE ; [.1897.0020.0008.01B7][.0000.0041.0002.030C] # LATIN CAPITAL LETTER EZH WITH CARON
-1D23 ; [.189B.0020.0002.1D23] # LATIN LETTER SMALL CAPITAL EZH
-01B9 ; [.189C.0020.0002.01B9] # LATIN SMALL LETTER EZH REVERSED
-01B8 ; [.189C.0020.0008.01B8] # LATIN CAPITAL LETTER EZH REVERSED
-1D9A ; [.18A0.0020.0002.1D9A] # LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
-01BA ; [.18A1.0020.0002.01BA] # LATIN SMALL LETTER EZH WITH TAIL
-0293 ; [.18A5.0020.0002.0293] # LATIN SMALL LETTER EZH WITH CURL
-00FE ; [.18A9.0020.0002.00FE] # LATIN SMALL LETTER THORN
-00DE ; [.18A9.0020.0008.00DE] # LATIN CAPITAL LETTER THORN
-A765 ; [.18AD.0020.0002.A765] # LATIN SMALL LETTER THORN WITH STROKE
-A764 ; [.18AD.0020.0008.A764] # LATIN CAPITAL LETTER THORN WITH STROKE
-A767 ; [.18AE.0020.0002.A767] # LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
-A766 ; [.18AE.0020.0008.A766] # LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
-01BF ; [.18AF.0020.0002.01BF] # LATIN LETTER WYNN
-01F7 ; [.18AF.0020.0008.01F7] # LATIN CAPITAL LETTER WYNN
-A769 ; [.18B3.0020.0002.A769] # LATIN SMALL LETTER VEND
-A768 ; [.18B3.0020.0008.A768] # LATIN CAPITAL LETTER VEND
-A76B ; [.18B4.0020.0002.A76B] # LATIN SMALL LETTER ET
-A76A ; [.18B4.0020.0008.A76A] # LATIN CAPITAL LETTER ET
-A76D ; [.18B5.0020.0002.A76D] # LATIN SMALL LETTER IS
-A76C ; [.18B5.0020.0008.A76C] # LATIN CAPITAL LETTER IS
-A76F ; [.18B6.0020.0002.A76F] # LATIN SMALL LETTER CON
-1DD2 ; [.18B6.0020.0004.1DD2] # COMBINING US ABOVE
-A76E ; [.18B6.0020.0008.A76E] # LATIN CAPITAL LETTER CON
-A770 ; [.18B6.0020.0014.A770] # MODIFIER LETTER US
-A778 ; [.18B7.0020.0002.A778] # LATIN SMALL LETTER UM
-01BB ; [.18B8.0020.0002.01BB] # LATIN LETTER TWO WITH STROKE
-A72B ; [.18BC.0020.0002.A72B] # LATIN SMALL LETTER TRESILLO
-A72A ; [.18BC.0020.0008.A72A] # LATIN CAPITAL LETTER TRESILLO
-A72D ; [.18BD.0020.0002.A72D] # LATIN SMALL LETTER CUATRILLO
-A72C ; [.18BD.0020.0008.A72C] # LATIN CAPITAL LETTER CUATRILLO
-A72F ; [.18BE.0020.0002.A72F] # LATIN SMALL LETTER CUATRILLO WITH COMMA
-A72E ; [.18BE.0020.0008.A72E] # LATIN CAPITAL LETTER CUATRILLO WITH COMMA
-01A8 ; [.18BF.0020.0002.01A8] # LATIN SMALL LETTER TONE TWO
-01A7 ; [.18BF.0020.0008.01A7] # LATIN CAPITAL LETTER TONE TWO
-01BD ; [.18C3.0020.0002.01BD] # LATIN SMALL LETTER TONE FIVE
-01BC ; [.18C3.0020.0008.01BC] # LATIN CAPITAL LETTER TONE FIVE
-0185 ; [.18C7.0020.0002.0185] # LATIN SMALL LETTER TONE SIX
-0184 ; [.18C7.0020.0008.0184] # LATIN CAPITAL LETTER TONE SIX
-0294 ; [.18CB.0020.0002.0294] # LATIN LETTER GLOTTAL STOP
-0242 ; [.18CF.0020.0002.0242] # LATIN SMALL LETTER GLOTTAL STOP
-0241 ; [.18CF.0020.0008.0241] # LATIN CAPITAL LETTER GLOTTAL STOP
-02C0 ; [.18D3.0020.0002.02C0] # MODIFIER LETTER GLOTTAL STOP
-02BC ; [.18D4.0020.0002.02BC] # MODIFIER LETTER APOSTROPHE
-0149 ; [.18D4.0020.0004.0149][.1734.0020.0004.0149] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-02EE ; [.18D5.0020.0002.02EE] # MODIFIER LETTER DOUBLE APOSTROPHE
-02BE ; [.18D6.0020.0002.02BE] # MODIFIER LETTER RIGHT HALF RING
-A723 ; [.18D7.0020.0002.A723] # LATIN SMALL LETTER EGYPTOLOGICAL ALEF
-A722 ; [.18D7.0020.0008.A722] # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
-A78C ; [.18D8.0020.0002.A78C] # LATIN SMALL LETTER SALTILLO
-A78B ; [.18D8.0020.0008.A78B] # LATIN CAPITAL LETTER SALTILLO
-0295 ; [.18D9.0020.0002.0295] # LATIN LETTER PHARYNGEAL VOICED FRICATIVE
-02E4 ; [.18D9.0020.0014.02E4] # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-02BF ; [.18DD.0020.0002.02BF] # MODIFIER LETTER LEFT HALF RING
-02C1 ; [.18DE.0020.0002.02C1] # MODIFIER LETTER REVERSED GLOTTAL STOP
-1D24 ; [.18DF.0020.0002.1D24] # LATIN LETTER VOICED LARYNGEAL SPIRANT
-1D25 ; [.18E0.0020.0002.1D25] # LATIN LETTER AIN
-1D5C ; [.18E0.0020.0014.1D5C] # MODIFIER LETTER SMALL AIN
-A725 ; [.18E1.0020.0002.A725] # LATIN SMALL LETTER EGYPTOLOGICAL AIN
-A724 ; [.18E1.0020.0008.A724] # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
-02A1 ; [.18E2.0020.0002.02A1] # LATIN LETTER GLOTTAL STOP WITH STROKE
-02A2 ; [.18E6.0020.0002.02A2] # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
-0296 ; [.18EA.0020.0002.0296] # LATIN LETTER INVERTED GLOTTAL STOP
-01C0 ; [.18EE.0020.0002.01C0] # LATIN LETTER DENTAL CLICK
-01C1 ; [.18F2.0020.0002.01C1] # LATIN LETTER LATERAL CLICK
-01C2 ; [.18F6.0020.0002.01C2] # LATIN LETTER ALVEOLAR CLICK
-01C3 ; [.18FA.0020.0002.01C3] # LATIN LETTER RETROFLEX CLICK
-0297 ; [.18FE.0020.0002.0297] # LATIN LETTER STRETCHED C
-0298 ; [.1902.0020.0002.0298] # LATIN LETTER BILABIAL CLICK
-02AC ; [.1906.0020.0002.02AC] # LATIN LETTER BILABIAL PERCUSSIVE
-02AD ; [.190A.0020.0002.02AD] # LATIN LETTER BIDENTAL PERCUSSIVE
-03B1 ; [.190E.0020.0002.03B1] # GREEK SMALL LETTER ALPHA
-1D6C2 ; [.190E.0020.0005.1D6C2] # MATHEMATICAL BOLD SMALL ALPHA
-1D6FC ; [.190E.0020.0005.1D6FC] # MATHEMATICAL ITALIC SMALL ALPHA
-1D736 ; [.190E.0020.0005.1D736] # MATHEMATICAL BOLD ITALIC SMALL ALPHA
-1D770 ; [.190E.0020.0005.1D770] # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
-1D7AA ; [.190E.0020.0005.1D7AA] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
-0391 ; [.190E.0020.0008.0391] # GREEK CAPITAL LETTER ALPHA
-1D6A8 ; [.190E.0020.000B.1D6A8] # MATHEMATICAL BOLD CAPITAL ALPHA
-1D6E2 ; [.190E.0020.000B.1D6E2] # MATHEMATICAL ITALIC CAPITAL ALPHA
-1D71C ; [.190E.0020.000B.1D71C] # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
-1D756 ; [.190E.0020.000B.1D756] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
-1D790 ; [.190E.0020.000B.1D790] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
-1F00 ; [.190E.0020.0002.03B1][.0000.0022.0002.0313] # GREEK SMALL LETTER ALPHA WITH PSILI
-1F08 ; [.190E.0020.0008.0391][.0000.0022.0002.0313] # GREEK CAPITAL LETTER ALPHA WITH PSILI
-1F04 ; [.190E.0020.0002.03B1][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
-1F0C ; [.190E.0020.0008.0391][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
-1F84 ; [.190E.0020.0002.03B1][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F8C ; [.190E.0020.0008.0391][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F02 ; [.190E.0020.0002.03B1][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
-1F0A ; [.190E.0020.0008.0391][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
-1F82 ; [.190E.0020.0002.03B1][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F8A ; [.190E.0020.0008.0391][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F06 ; [.190E.0020.0002.03B1][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1F0E ; [.190E.0020.0008.0391][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1F86 ; [.190E.0020.0002.03B1][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F8E ; [.190E.0020.0008.0391][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F80 ; [.190E.0020.0002.03B1][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-1F88 ; [.190E.0020.0008.0391][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-1F01 ; [.190E.0020.0002.03B1][.0000.002A.0002.0314] # GREEK SMALL LETTER ALPHA WITH DASIA
-1F09 ; [.190E.0020.0008.0391][.0000.002A.0002.0314] # GREEK CAPITAL LETTER ALPHA WITH DASIA
-1F05 ; [.190E.0020.0002.03B1][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
-1F0D ; [.190E.0020.0008.0391][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
-1F85 ; [.190E.0020.0002.03B1][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F8D ; [.190E.0020.0008.0391][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F03 ; [.190E.0020.0002.03B1][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
-1F0B ; [.190E.0020.0008.0391][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
-1F83 ; [.190E.0020.0002.03B1][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F8B ; [.190E.0020.0008.0391][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F07 ; [.190E.0020.0002.03B1][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F0F ; [.190E.0020.0008.0391][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F87 ; [.190E.0020.0002.03B1][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F8F ; [.190E.0020.0008.0391][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F81 ; [.190E.0020.0002.03B1][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-1F89 ; [.190E.0020.0008.0391][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-03AC ; [.190E.0020.0002.03B1][.0000.0032.0002.0301] # GREEK SMALL LETTER ALPHA WITH TONOS
-1F71 ; [.190E.0020.0002.03B1][.0000.0032.0002.0301] # GREEK SMALL LETTER ALPHA WITH OXIA
-0386 ; [.190E.0020.0008.0391][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ALPHA WITH TONOS
-1FBB ; [.190E.0020.0008.0391][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ALPHA WITH OXIA
-1FB4 ; [.190E.0020.0002.03B1][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1F70 ; [.190E.0020.0002.03B1][.0000.0035.0002.0300] # GREEK SMALL LETTER ALPHA WITH VARIA
-1FBA ; [.190E.0020.0008.0391][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ALPHA WITH VARIA
-1FB2 ; [.190E.0020.0002.03B1][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-1FB0 ; [.190E.0020.0002.03B1][.0000.0037.0002.0306] # GREEK SMALL LETTER ALPHA WITH VRACHY
-1FB8 ; [.190E.0020.0008.0391][.0000.0037.0002.0306] # GREEK CAPITAL LETTER ALPHA WITH VRACHY
-1FB6 ; [.190E.0020.0002.03B1][.0000.0045.0002.0342] # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-1FB7 ; [.190E.0020.0002.03B1][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FB1 ; [.190E.0020.0002.03B1][.0000.005B.0002.0304] # GREEK SMALL LETTER ALPHA WITH MACRON
-1FB9 ; [.190E.0020.0008.0391][.0000.005B.0002.0304] # GREEK CAPITAL LETTER ALPHA WITH MACRON
-1FB3 ; [.190E.0020.0002.03B1][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-1FBC ; [.190E.0020.0008.0391][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-03B2 ; [.190F.0020.0002.03B2] # GREEK SMALL LETTER BETA
-03D0 ; [.190F.0020.0004.03D0] # GREEK BETA SYMBOL
-1D6C3 ; [.190F.0020.0005.1D6C3] # MATHEMATICAL BOLD SMALL BETA
-1D6FD ; [.190F.0020.0005.1D6FD] # MATHEMATICAL ITALIC SMALL BETA
-1D737 ; [.190F.0020.0005.1D737] # MATHEMATICAL BOLD ITALIC SMALL BETA
-1D771 ; [.190F.0020.0005.1D771] # MATHEMATICAL SANS-SERIF BOLD SMALL BETA
-1D7AB ; [.190F.0020.0005.1D7AB] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
-0392 ; [.190F.0020.0008.0392] # GREEK CAPITAL LETTER BETA
-1D6A9 ; [.190F.0020.000B.1D6A9] # MATHEMATICAL BOLD CAPITAL BETA
-1D6E3 ; [.190F.0020.000B.1D6E3] # MATHEMATICAL ITALIC CAPITAL BETA
-1D71D ; [.190F.0020.000B.1D71D] # MATHEMATICAL BOLD ITALIC CAPITAL BETA
-1D757 ; [.190F.0020.000B.1D757] # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
-1D791 ; [.190F.0020.000B.1D791] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
-1D5D ; [.190F.0020.0014.1D5D] # MODIFIER LETTER SMALL BETA
-1D66 ; [.190F.0020.0015.1D66] # GREEK SUBSCRIPT SMALL LETTER BETA
-03B3 ; [.1910.0020.0002.03B3] # GREEK SMALL LETTER GAMMA
-213D ; [.1910.0020.0005.213D] # DOUBLE-STRUCK SMALL GAMMA
-1D6C4 ; [.1910.0020.0005.1D6C4] # MATHEMATICAL BOLD SMALL GAMMA
-1D6FE ; [.1910.0020.0005.1D6FE] # MATHEMATICAL ITALIC SMALL GAMMA
-1D738 ; [.1910.0020.0005.1D738] # MATHEMATICAL BOLD ITALIC SMALL GAMMA
-1D772 ; [.1910.0020.0005.1D772] # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
-1D7AC ; [.1910.0020.0005.1D7AC] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
-0393 ; [.1910.0020.0008.0393] # GREEK CAPITAL LETTER GAMMA
-213E ; [.1910.0020.000B.213E] # DOUBLE-STRUCK CAPITAL GAMMA
-1D6AA ; [.1910.0020.000B.1D6AA] # MATHEMATICAL BOLD CAPITAL GAMMA
-1D6E4 ; [.1910.0020.000B.1D6E4] # MATHEMATICAL ITALIC CAPITAL GAMMA
-1D71E ; [.1910.0020.000B.1D71E] # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
-1D758 ; [.1910.0020.000B.1D758] # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
-1D792 ; [.1910.0020.000B.1D792] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
-1D5E ; [.1910.0020.0014.1D5E] # MODIFIER LETTER SMALL GREEK GAMMA
-1D67 ; [.1910.0020.0015.1D67] # GREEK SUBSCRIPT SMALL LETTER GAMMA
-1D26 ; [.1911.0020.0002.1D26] # GREEK LETTER SMALL CAPITAL GAMMA
-03B4 ; [.1912.0020.0002.03B4] # GREEK SMALL LETTER DELTA
-1D6C5 ; [.1912.0020.0005.1D6C5] # MATHEMATICAL BOLD SMALL DELTA
-1D6FF ; [.1912.0020.0005.1D6FF] # MATHEMATICAL ITALIC SMALL DELTA
-1D739 ; [.1912.0020.0005.1D739] # MATHEMATICAL BOLD ITALIC SMALL DELTA
-1D773 ; [.1912.0020.0005.1D773] # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
-1D7AD ; [.1912.0020.0005.1D7AD] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
-0394 ; [.1912.0020.0008.0394] # GREEK CAPITAL LETTER DELTA
-1D6AB ; [.1912.0020.000B.1D6AB] # MATHEMATICAL BOLD CAPITAL DELTA
-1D6E5 ; [.1912.0020.000B.1D6E5] # MATHEMATICAL ITALIC CAPITAL DELTA
-1D71F ; [.1912.0020.000B.1D71F] # MATHEMATICAL BOLD ITALIC CAPITAL DELTA
-1D759 ; [.1912.0020.000B.1D759] # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
-1D793 ; [.1912.0020.000B.1D793] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
-1D5F ; [.1912.0020.0014.1D5F] # MODIFIER LETTER SMALL DELTA
-03B5 ; [.1913.0020.0002.03B5] # GREEK SMALL LETTER EPSILON
-03F5 ; [.1913.0020.0004.03F5] # GREEK LUNATE EPSILON SYMBOL
-1D6C6 ; [.1913.0020.0005.1D6C6] # MATHEMATICAL BOLD SMALL EPSILON
-1D6DC ; [.1913.0020.0005.1D6DC] # MATHEMATICAL BOLD EPSILON SYMBOL
-1D700 ; [.1913.0020.0005.1D700] # MATHEMATICAL ITALIC SMALL EPSILON
-1D716 ; [.1913.0020.0005.1D716] # MATHEMATICAL ITALIC EPSILON SYMBOL
-1D73A ; [.1913.0020.0005.1D73A] # MATHEMATICAL BOLD ITALIC SMALL EPSILON
-1D750 ; [.1913.0020.0005.1D750] # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
-1D774 ; [.1913.0020.0005.1D774] # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
-1D78A ; [.1913.0020.0005.1D78A] # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
-1D7AE ; [.1913.0020.0005.1D7AE] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
-1D7C4 ; [.1913.0020.0005.1D7C4] # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
-0395 ; [.1913.0020.0008.0395] # GREEK CAPITAL LETTER EPSILON
-1D6AC ; [.1913.0020.000B.1D6AC] # MATHEMATICAL BOLD CAPITAL EPSILON
-1D6E6 ; [.1913.0020.000B.1D6E6] # MATHEMATICAL ITALIC CAPITAL EPSILON
-1D720 ; [.1913.0020.000B.1D720] # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
-1D75A ; [.1913.0020.000B.1D75A] # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
-1D794 ; [.1913.0020.000B.1D794] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
-1F10 ; [.1913.0020.0002.03B5][.0000.0022.0002.0313] # GREEK SMALL LETTER EPSILON WITH PSILI
-1F18 ; [.1913.0020.0008.0395][.0000.0022.0002.0313] # GREEK CAPITAL LETTER EPSILON WITH PSILI
-1F14 ; [.1913.0020.0002.03B5][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
-1F1C ; [.1913.0020.0008.0395][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
-1F12 ; [.1913.0020.0002.03B5][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
-1F1A ; [.1913.0020.0008.0395][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
-1F11 ; [.1913.0020.0002.03B5][.0000.002A.0002.0314] # GREEK SMALL LETTER EPSILON WITH DASIA
-1F19 ; [.1913.0020.0008.0395][.0000.002A.0002.0314] # GREEK CAPITAL LETTER EPSILON WITH DASIA
-1F15 ; [.1913.0020.0002.03B5][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
-1F1D ; [.1913.0020.0008.0395][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
-1F13 ; [.1913.0020.0002.03B5][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
-1F1B ; [.1913.0020.0008.0395][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
-03AD ; [.1913.0020.0002.03B5][.0000.0032.0002.0301] # GREEK SMALL LETTER EPSILON WITH TONOS
-1F73 ; [.1913.0020.0002.03B5][.0000.0032.0002.0301] # GREEK SMALL LETTER EPSILON WITH OXIA
-0388 ; [.1913.0020.0008.0395][.0000.0032.0002.0301] # GREEK CAPITAL LETTER EPSILON WITH TONOS
-1FC9 ; [.1913.0020.0008.0395][.0000.0032.0002.0301] # GREEK CAPITAL LETTER EPSILON WITH OXIA
-1F72 ; [.1913.0020.0002.03B5][.0000.0035.0002.0300] # GREEK SMALL LETTER EPSILON WITH VARIA
-1FC8 ; [.1913.0020.0008.0395][.0000.0035.0002.0300] # GREEK CAPITAL LETTER EPSILON WITH VARIA
-03DD ; [.1914.0020.0002.03DD] # GREEK SMALL LETTER DIGAMMA
-1D7CB ; [.1914.0020.0005.1D7CB] # MATHEMATICAL BOLD SMALL DIGAMMA
-03DC ; [.1914.0020.0008.03DC] # GREEK LETTER DIGAMMA
-1D7CA ; [.1914.0020.000B.1D7CA] # MATHEMATICAL BOLD CAPITAL DIGAMMA
-0377 ; [.1915.0020.0002.0377] # GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
-0376 ; [.1915.0020.0008.0376] # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
-03DB ; [.1916.0020.0002.03DB] # GREEK SMALL LETTER STIGMA
-03DA ; [.1916.0020.0008.03DA] # GREEK LETTER STIGMA
-03B6 ; [.1917.0020.0002.03B6] # GREEK SMALL LETTER ZETA
-1D6C7 ; [.1917.0020.0005.1D6C7] # MATHEMATICAL BOLD SMALL ZETA
-1D701 ; [.1917.0020.0005.1D701] # MATHEMATICAL ITALIC SMALL ZETA
-1D73B ; [.1917.0020.0005.1D73B] # MATHEMATICAL BOLD ITALIC SMALL ZETA
-1D775 ; [.1917.0020.0005.1D775] # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
-1D7AF ; [.1917.0020.0005.1D7AF] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
-0396 ; [.1917.0020.0008.0396] # GREEK CAPITAL LETTER ZETA
-1D6AD ; [.1917.0020.000B.1D6AD] # MATHEMATICAL BOLD CAPITAL ZETA
-1D6E7 ; [.1917.0020.000B.1D6E7] # MATHEMATICAL ITALIC CAPITAL ZETA
-1D721 ; [.1917.0020.000B.1D721] # MATHEMATICAL BOLD ITALIC CAPITAL ZETA
-1D75B ; [.1917.0020.000B.1D75B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
-1D795 ; [.1917.0020.000B.1D795] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
-0371 ; [.1918.0020.0002.0371] # GREEK SMALL LETTER HETA
-0370 ; [.1918.0020.0008.0370] # GREEK CAPITAL LETTER HETA
-03B7 ; [.1919.0020.0002.03B7] # GREEK SMALL LETTER ETA
-1D6C8 ; [.1919.0020.0005.1D6C8] # MATHEMATICAL BOLD SMALL ETA
-1D702 ; [.1919.0020.0005.1D702] # MATHEMATICAL ITALIC SMALL ETA
-1D73C ; [.1919.0020.0005.1D73C] # MATHEMATICAL BOLD ITALIC SMALL ETA
-1D776 ; [.1919.0020.0005.1D776] # MATHEMATICAL SANS-SERIF BOLD SMALL ETA
-1D7B0 ; [.1919.0020.0005.1D7B0] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
-0397 ; [.1919.0020.0008.0397] # GREEK CAPITAL LETTER ETA
-1D6AE ; [.1919.0020.000B.1D6AE] # MATHEMATICAL BOLD CAPITAL ETA
-1D6E8 ; [.1919.0020.000B.1D6E8] # MATHEMATICAL ITALIC CAPITAL ETA
-1D722 ; [.1919.0020.000B.1D722] # MATHEMATICAL BOLD ITALIC CAPITAL ETA
-1D75C ; [.1919.0020.000B.1D75C] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
-1D796 ; [.1919.0020.000B.1D796] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
-1F20 ; [.1919.0020.0002.03B7][.0000.0022.0002.0313] # GREEK SMALL LETTER ETA WITH PSILI
-1F28 ; [.1919.0020.0008.0397][.0000.0022.0002.0313] # GREEK CAPITAL LETTER ETA WITH PSILI
-1F24 ; [.1919.0020.0002.03B7][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
-1F2C ; [.1919.0020.0008.0397][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
-1F94 ; [.1919.0020.0002.03B7][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F9C ; [.1919.0020.0008.0397][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F22 ; [.1919.0020.0002.03B7][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
-1F2A ; [.1919.0020.0008.0397][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
-1F92 ; [.1919.0020.0002.03B7][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F9A ; [.1919.0020.0008.0397][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F26 ; [.1919.0020.0002.03B7][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
-1F2E ; [.1919.0020.0008.0397][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
-1F96 ; [.1919.0020.0002.03B7][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F9E ; [.1919.0020.0008.0397][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F90 ; [.1919.0020.0002.03B7][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-1F98 ; [.1919.0020.0008.0397][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-1F21 ; [.1919.0020.0002.03B7][.0000.002A.0002.0314] # GREEK SMALL LETTER ETA WITH DASIA
-1F29 ; [.1919.0020.0008.0397][.0000.002A.0002.0314] # GREEK CAPITAL LETTER ETA WITH DASIA
-1F25 ; [.1919.0020.0002.03B7][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
-1F2D ; [.1919.0020.0008.0397][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
-1F95 ; [.1919.0020.0002.03B7][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F9D ; [.1919.0020.0008.0397][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F23 ; [.1919.0020.0002.03B7][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
-1F2B ; [.1919.0020.0008.0397][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
-1F93 ; [.1919.0020.0002.03B7][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F9B ; [.1919.0020.0008.0397][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F27 ; [.1919.0020.0002.03B7][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
-1F2F ; [.1919.0020.0008.0397][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
-1F97 ; [.1919.0020.0002.03B7][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F9F ; [.1919.0020.0008.0397][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F91 ; [.1919.0020.0002.03B7][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-1F99 ; [.1919.0020.0008.0397][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-03AE ; [.1919.0020.0002.03B7][.0000.0032.0002.0301] # GREEK SMALL LETTER ETA WITH TONOS
-1F75 ; [.1919.0020.0002.03B7][.0000.0032.0002.0301] # GREEK SMALL LETTER ETA WITH OXIA
-0389 ; [.1919.0020.0008.0397][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ETA WITH TONOS
-1FCB ; [.1919.0020.0008.0397][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ETA WITH OXIA
-1FC4 ; [.1919.0020.0002.03B7][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1F74 ; [.1919.0020.0002.03B7][.0000.0035.0002.0300] # GREEK SMALL LETTER ETA WITH VARIA
-1FCA ; [.1919.0020.0008.0397][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ETA WITH VARIA
-1FC2 ; [.1919.0020.0002.03B7][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-1FC6 ; [.1919.0020.0002.03B7][.0000.0045.0002.0342] # GREEK SMALL LETTER ETA WITH PERISPOMENI
-1FC7 ; [.1919.0020.0002.03B7][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FC3 ; [.1919.0020.0002.03B7][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-1FCC ; [.1919.0020.0008.0397][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-03B8 ; [.191A.0020.0002.03B8] # GREEK SMALL LETTER THETA
-03D1 ; [.191A.0020.0004.03D1] # GREEK THETA SYMBOL
-1D6C9 ; [.191A.0020.0005.1D6C9] # MATHEMATICAL BOLD SMALL THETA
-1D6DD ; [.191A.0020.0005.1D6DD] # MATHEMATICAL BOLD THETA SYMBOL
-1D703 ; [.191A.0020.0005.1D703] # MATHEMATICAL ITALIC SMALL THETA
-1D717 ; [.191A.0020.0005.1D717] # MATHEMATICAL ITALIC THETA SYMBOL
-1D73D ; [.191A.0020.0005.1D73D] # MATHEMATICAL BOLD ITALIC SMALL THETA
-1D751 ; [.191A.0020.0005.1D751] # MATHEMATICAL BOLD ITALIC THETA SYMBOL
-1D777 ; [.191A.0020.0005.1D777] # MATHEMATICAL SANS-SERIF BOLD SMALL THETA
-1D78B ; [.191A.0020.0005.1D78B] # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
-1D7B1 ; [.191A.0020.0005.1D7B1] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
-1D7C5 ; [.191A.0020.0005.1D7C5] # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
-0398 ; [.191A.0020.0008.0398] # GREEK CAPITAL LETTER THETA
-03F4 ; [.191A.0020.000A.03F4] # GREEK CAPITAL THETA SYMBOL
-1D6AF ; [.191A.0020.000B.1D6AF] # MATHEMATICAL BOLD CAPITAL THETA
-1D6B9 ; [.191A.0020.000B.1D6B9] # MATHEMATICAL BOLD CAPITAL THETA SYMBOL
-1D6E9 ; [.191A.0020.000B.1D6E9] # MATHEMATICAL ITALIC CAPITAL THETA
-1D6F3 ; [.191A.0020.000B.1D6F3] # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
-1D723 ; [.191A.0020.000B.1D723] # MATHEMATICAL BOLD ITALIC CAPITAL THETA
-1D72D ; [.191A.0020.000B.1D72D] # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
-1D75D ; [.191A.0020.000B.1D75D] # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
-1D767 ; [.191A.0020.000B.1D767] # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
-1D797 ; [.191A.0020.000B.1D797] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
-1D7A1 ; [.191A.0020.000B.1D7A1] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
-1DBF ; [.191A.0020.0014.1DBF] # MODIFIER LETTER SMALL THETA
-03B9 ; [.191B.0020.0002.03B9] # GREEK SMALL LETTER IOTA
-1FBE ; [.191B.0020.0002.1FBE] # GREEK PROSGEGRAMMENI
-037A ; [.191B.0020.0004.037A] # GREEK YPOGEGRAMMENI
-1D6CA ; [.191B.0020.0005.1D6CA] # MATHEMATICAL BOLD SMALL IOTA
-1D704 ; [.191B.0020.0005.1D704] # MATHEMATICAL ITALIC SMALL IOTA
-1D73E ; [.191B.0020.0005.1D73E] # MATHEMATICAL BOLD ITALIC SMALL IOTA
-1D778 ; [.191B.0020.0005.1D778] # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
-1D7B2 ; [.191B.0020.0005.1D7B2] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
-0399 ; [.191B.0020.0008.0399] # GREEK CAPITAL LETTER IOTA
-1D6B0 ; [.191B.0020.000B.1D6B0] # MATHEMATICAL BOLD CAPITAL IOTA
-1D6EA ; [.191B.0020.000B.1D6EA] # MATHEMATICAL ITALIC CAPITAL IOTA
-1D724 ; [.191B.0020.000B.1D724] # MATHEMATICAL BOLD ITALIC CAPITAL IOTA
-1D75E ; [.191B.0020.000B.1D75E] # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
-1D798 ; [.191B.0020.000B.1D798] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
-1F30 ; [.191B.0020.0002.03B9][.0000.0022.0002.0313] # GREEK SMALL LETTER IOTA WITH PSILI
-1F38 ; [.191B.0020.0008.0399][.0000.0022.0002.0313] # GREEK CAPITAL LETTER IOTA WITH PSILI
-1F34 ; [.191B.0020.0002.03B9][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
-1F3C ; [.191B.0020.0008.0399][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
-1F32 ; [.191B.0020.0002.03B9][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
-1F3A ; [.191B.0020.0008.0399][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
-1F36 ; [.191B.0020.0002.03B9][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
-1F3E ; [.191B.0020.0008.0399][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
-1F31 ; [.191B.0020.0002.03B9][.0000.002A.0002.0314] # GREEK SMALL LETTER IOTA WITH DASIA
-1F39 ; [.191B.0020.0008.0399][.0000.002A.0002.0314] # GREEK CAPITAL LETTER IOTA WITH DASIA
-1F35 ; [.191B.0020.0002.03B9][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
-1F3D ; [.191B.0020.0008.0399][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
-1F33 ; [.191B.0020.0002.03B9][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
-1F3B ; [.191B.0020.0008.0399][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
-1F37 ; [.191B.0020.0002.03B9][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F3F ; [.191B.0020.0008.0399][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
-03AF ; [.191B.0020.0002.03B9][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH TONOS
-1F77 ; [.191B.0020.0002.03B9][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH OXIA
-038A ; [.191B.0020.0008.0399][.0000.0032.0002.0301] # GREEK CAPITAL LETTER IOTA WITH TONOS
-1FDB ; [.191B.0020.0008.0399][.0000.0032.0002.0301] # GREEK CAPITAL LETTER IOTA WITH OXIA
-1F76 ; [.191B.0020.0002.03B9][.0000.0035.0002.0300] # GREEK SMALL LETTER IOTA WITH VARIA
-1FDA ; [.191B.0020.0008.0399][.0000.0035.0002.0300] # GREEK CAPITAL LETTER IOTA WITH VARIA
-1FD0 ; [.191B.0020.0002.03B9][.0000.0037.0002.0306] # GREEK SMALL LETTER IOTA WITH VRACHY
-1FD8 ; [.191B.0020.0008.0399][.0000.0037.0002.0306] # GREEK CAPITAL LETTER IOTA WITH VRACHY
-1FD6 ; [.191B.0020.0002.03B9][.0000.0045.0002.0342] # GREEK SMALL LETTER IOTA WITH PERISPOMENI
-03CA ; [.191B.0020.0002.03B9][.0000.0047.0002.0308] # GREEK SMALL LETTER IOTA WITH DIALYTIKA
-03AA ; [.191B.0020.0008.0399][.0000.0047.0002.0308] # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-0390 ; [.191B.0020.0002.03B9][.0000.0047.0002.0308][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-1FD3 ; [.191B.0020.0002.03B9][.0000.0047.0002.0308][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1FD2 ; [.191B.0020.0002.03B9][.0000.0047.0002.0308][.0000.0035.0002.0300] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-1FD7 ; [.191B.0020.0002.03B9][.0000.0047.0002.0308][.0000.0045.0002.0342] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-1FD1 ; [.191B.0020.0002.03B9][.0000.005B.0002.0304] # GREEK SMALL LETTER IOTA WITH MACRON
-1FD9 ; [.191B.0020.0008.0399][.0000.005B.0002.0304] # GREEK CAPITAL LETTER IOTA WITH MACRON
-03F3 ; [.191C.0020.0002.03F3] # GREEK LETTER YOT
-03BA ; [.191D.0020.0002.03BA] # GREEK SMALL LETTER KAPPA
-03F0 ; [.191D.0020.0004.03F0] # GREEK KAPPA SYMBOL
-1D6CB ; [.191D.0020.0005.1D6CB] # MATHEMATICAL BOLD SMALL KAPPA
-1D6DE ; [.191D.0020.0005.1D6DE] # MATHEMATICAL BOLD KAPPA SYMBOL
-1D705 ; [.191D.0020.0005.1D705] # MATHEMATICAL ITALIC SMALL KAPPA
-1D718 ; [.191D.0020.0005.1D718] # MATHEMATICAL ITALIC KAPPA SYMBOL
-1D73F ; [.191D.0020.0005.1D73F] # MATHEMATICAL BOLD ITALIC SMALL KAPPA
-1D752 ; [.191D.0020.0005.1D752] # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
-1D779 ; [.191D.0020.0005.1D779] # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
-1D78C ; [.191D.0020.0005.1D78C] # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
-1D7B3 ; [.191D.0020.0005.1D7B3] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
-1D7C6 ; [.191D.0020.0005.1D7C6] # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
-039A ; [.191D.0020.0008.039A] # GREEK CAPITAL LETTER KAPPA
-1D6B1 ; [.191D.0020.000B.1D6B1] # MATHEMATICAL BOLD CAPITAL KAPPA
-1D6EB ; [.191D.0020.000B.1D6EB] # MATHEMATICAL ITALIC CAPITAL KAPPA
-1D725 ; [.191D.0020.000B.1D725] # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
-1D75F ; [.191D.0020.000B.1D75F] # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
-1D799 ; [.191D.0020.000B.1D799] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
-03D7 ; [.191D.0020.0004.03D7][.190E.0020.0004.03D7][.191B.0020.001F.03D7] # GREEK KAI SYMBOL
-03CF ; [.191D.0020.000A.03CF][.190E.0020.0004.03CF][.191B.0020.001F.03CF] # GREEK CAPITAL KAI SYMBOL
-03BB ; [.191E.0020.0002.03BB] # GREEK SMALL LETTER LAMDA
-1D6CC ; [.191E.0020.0005.1D6CC] # MATHEMATICAL BOLD SMALL LAMDA
-1D706 ; [.191E.0020.0005.1D706] # MATHEMATICAL ITALIC SMALL LAMDA
-1D740 ; [.191E.0020.0005.1D740] # MATHEMATICAL BOLD ITALIC SMALL LAMDA
-1D77A ; [.191E.0020.0005.1D77A] # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
-1D7B4 ; [.191E.0020.0005.1D7B4] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
-039B ; [.191E.0020.0008.039B] # GREEK CAPITAL LETTER LAMDA
-1D6B2 ; [.191E.0020.000B.1D6B2] # MATHEMATICAL BOLD CAPITAL LAMDA
-1D6EC ; [.191E.0020.000B.1D6EC] # MATHEMATICAL ITALIC CAPITAL LAMDA
-1D726 ; [.191E.0020.000B.1D726] # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
-1D760 ; [.191E.0020.000B.1D760] # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
-1D79A ; [.191E.0020.000B.1D79A] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
-1D27 ; [.191F.0020.0002.1D27] # GREEK LETTER SMALL CAPITAL LAMDA
-03BC ; [.1920.0020.0002.03BC] # GREEK SMALL LETTER MU
-00B5 ; [.1920.0020.0004.00B5] # MICRO SIGN
-1D6CD ; [.1920.0020.0005.1D6CD] # MATHEMATICAL BOLD SMALL MU
-1D707 ; [.1920.0020.0005.1D707] # MATHEMATICAL ITALIC SMALL MU
-1D741 ; [.1920.0020.0005.1D741] # MATHEMATICAL BOLD ITALIC SMALL MU
-1D77B ; [.1920.0020.0005.1D77B] # MATHEMATICAL SANS-SERIF BOLD SMALL MU
-1D7B5 ; [.1920.0020.0005.1D7B5] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
-039C ; [.1920.0020.0008.039C] # GREEK CAPITAL LETTER MU
-1D6B3 ; [.1920.0020.000B.1D6B3] # MATHEMATICAL BOLD CAPITAL MU
-1D6ED ; [.1920.0020.000B.1D6ED] # MATHEMATICAL ITALIC CAPITAL MU
-1D727 ; [.1920.0020.000B.1D727] # MATHEMATICAL BOLD ITALIC CAPITAL MU
-1D761 ; [.1920.0020.000B.1D761] # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
-1D79B ; [.1920.0020.000B.1D79B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
-3382 ; [.1920.0020.001C.3382][.15D4.0020.001D.3382] # SQUARE MU A
-338C ; [.1920.0020.001C.338C][.1669.0020.001D.338C] # SQUARE MU F
-338D ; [.1920.0020.001C.338D][.1676.0020.001C.338D] # SQUARE MU G
-3395 ; [.1920.0020.001C.3395][.16F6.0020.001C.3395] # SQUARE MU L
-339B ; [.1920.0020.001C.339B][.1726.0020.001C.339B] # SQUARE MU M
-33B2 ; [.1920.0020.001C.33B2][.17D8.0020.001C.33B2] # SQUARE MU S
-33B6 ; [.1920.0020.001C.33B6][.1844.0020.001D.33B6] # SQUARE MU V
-33BC ; [.1920.0020.001C.33BC][.1856.0020.001D.33BC] # SQUARE MU W
-03BD ; [.1921.0020.0002.03BD] # GREEK SMALL LETTER NU
-1D6CE ; [.1921.0020.0005.1D6CE] # MATHEMATICAL BOLD SMALL NU
-1D708 ; [.1921.0020.0005.1D708] # MATHEMATICAL ITALIC SMALL NU
-1D742 ; [.1921.0020.0005.1D742] # MATHEMATICAL BOLD ITALIC SMALL NU
-1D77C ; [.1921.0020.0005.1D77C] # MATHEMATICAL SANS-SERIF BOLD SMALL NU
-1D7B6 ; [.1921.0020.0005.1D7B6] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
-039D ; [.1921.0020.0008.039D] # GREEK CAPITAL LETTER NU
-1D6B4 ; [.1921.0020.000B.1D6B4] # MATHEMATICAL BOLD CAPITAL NU
-1D6EE ; [.1921.0020.000B.1D6EE] # MATHEMATICAL ITALIC CAPITAL NU
-1D728 ; [.1921.0020.000B.1D728] # MATHEMATICAL BOLD ITALIC CAPITAL NU
-1D762 ; [.1921.0020.000B.1D762] # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
-1D79C ; [.1921.0020.000B.1D79C] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
-03BE ; [.1922.0020.0002.03BE] # GREEK SMALL LETTER XI
-1D6CF ; [.1922.0020.0005.1D6CF] # MATHEMATICAL BOLD SMALL XI
-1D709 ; [.1922.0020.0005.1D709] # MATHEMATICAL ITALIC SMALL XI
-1D743 ; [.1922.0020.0005.1D743] # MATHEMATICAL BOLD ITALIC SMALL XI
-1D77D ; [.1922.0020.0005.1D77D] # MATHEMATICAL SANS-SERIF BOLD SMALL XI
-1D7B7 ; [.1922.0020.0005.1D7B7] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
-039E ; [.1922.0020.0008.039E] # GREEK CAPITAL LETTER XI
-1D6B5 ; [.1922.0020.000B.1D6B5] # MATHEMATICAL BOLD CAPITAL XI
-1D6EF ; [.1922.0020.000B.1D6EF] # MATHEMATICAL ITALIC CAPITAL XI
-1D729 ; [.1922.0020.000B.1D729] # MATHEMATICAL BOLD ITALIC CAPITAL XI
-1D763 ; [.1922.0020.000B.1D763] # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
-1D79D ; [.1922.0020.000B.1D79D] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
-03BF ; [.1923.0020.0002.03BF] # GREEK SMALL LETTER OMICRON
-1D6D0 ; [.1923.0020.0005.1D6D0] # MATHEMATICAL BOLD SMALL OMICRON
-1D70A ; [.1923.0020.0005.1D70A] # MATHEMATICAL ITALIC SMALL OMICRON
-1D744 ; [.1923.0020.0005.1D744] # MATHEMATICAL BOLD ITALIC SMALL OMICRON
-1D77E ; [.1923.0020.0005.1D77E] # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
-1D7B8 ; [.1923.0020.0005.1D7B8] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
-039F ; [.1923.0020.0008.039F] # GREEK CAPITAL LETTER OMICRON
-1D6B6 ; [.1923.0020.000B.1D6B6] # MATHEMATICAL BOLD CAPITAL OMICRON
-1D6F0 ; [.1923.0020.000B.1D6F0] # MATHEMATICAL ITALIC CAPITAL OMICRON
-1D72A ; [.1923.0020.000B.1D72A] # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
-1D764 ; [.1923.0020.000B.1D764] # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
-1D79E ; [.1923.0020.000B.1D79E] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
-1F40 ; [.1923.0020.0002.03BF][.0000.0022.0002.0313] # GREEK SMALL LETTER OMICRON WITH PSILI
-1F48 ; [.1923.0020.0008.039F][.0000.0022.0002.0313] # GREEK CAPITAL LETTER OMICRON WITH PSILI
-1F44 ; [.1923.0020.0002.03BF][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
-1F4C ; [.1923.0020.0008.039F][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
-1F42 ; [.1923.0020.0002.03BF][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
-1F4A ; [.1923.0020.0008.039F][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
-1F41 ; [.1923.0020.0002.03BF][.0000.002A.0002.0314] # GREEK SMALL LETTER OMICRON WITH DASIA
-1F49 ; [.1923.0020.0008.039F][.0000.002A.0002.0314] # GREEK CAPITAL LETTER OMICRON WITH DASIA
-1F45 ; [.1923.0020.0002.03BF][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
-1F4D ; [.1923.0020.0008.039F][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
-1F43 ; [.1923.0020.0002.03BF][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
-1F4B ; [.1923.0020.0008.039F][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
-03CC ; [.1923.0020.0002.03BF][.0000.0032.0002.0301] # GREEK SMALL LETTER OMICRON WITH TONOS
-1F79 ; [.1923.0020.0002.03BF][.0000.0032.0002.0301] # GREEK SMALL LETTER OMICRON WITH OXIA
-038C ; [.1923.0020.0008.039F][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMICRON WITH TONOS
-1FF9 ; [.1923.0020.0008.039F][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMICRON WITH OXIA
-1F78 ; [.1923.0020.0002.03BF][.0000.0035.0002.0300] # GREEK SMALL LETTER OMICRON WITH VARIA
-1FF8 ; [.1923.0020.0008.039F][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMICRON WITH VARIA
-03C0 ; [.1924.0020.0002.03C0] # GREEK SMALL LETTER PI
-03D6 ; [.1924.0020.0004.03D6] # GREEK PI SYMBOL
-213C ; [.1924.0020.0005.213C] # DOUBLE-STRUCK SMALL PI
-1D6D1 ; [.1924.0020.0005.1D6D1] # MATHEMATICAL BOLD SMALL PI
-1D6E1 ; [.1924.0020.0005.1D6E1] # MATHEMATICAL BOLD PI SYMBOL
-1D70B ; [.1924.0020.0005.1D70B] # MATHEMATICAL ITALIC SMALL PI
-1D71B ; [.1924.0020.0005.1D71B] # MATHEMATICAL ITALIC PI SYMBOL
-1D745 ; [.1924.0020.0005.1D745] # MATHEMATICAL BOLD ITALIC SMALL PI
-1D755 ; [.1924.0020.0005.1D755] # MATHEMATICAL BOLD ITALIC PI SYMBOL
-1D77F ; [.1924.0020.0005.1D77F] # MATHEMATICAL SANS-SERIF BOLD SMALL PI
-1D78F ; [.1924.0020.0005.1D78F] # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
-1D7B9 ; [.1924.0020.0005.1D7B9] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
-1D7C9 ; [.1924.0020.0005.1D7C9] # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
-03A0 ; [.1924.0020.0008.03A0] # GREEK CAPITAL LETTER PI
-213F ; [.1924.0020.000B.213F] # DOUBLE-STRUCK CAPITAL PI
-1D6B7 ; [.1924.0020.000B.1D6B7] # MATHEMATICAL BOLD CAPITAL PI
-1D6F1 ; [.1924.0020.000B.1D6F1] # MATHEMATICAL ITALIC CAPITAL PI
-1D72B ; [.1924.0020.000B.1D72B] # MATHEMATICAL BOLD ITALIC CAPITAL PI
-1D765 ; [.1924.0020.000B.1D765] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
-1D79F ; [.1924.0020.000B.1D79F] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
-1D28 ; [.1925.0020.0002.1D28] # GREEK LETTER SMALL CAPITAL PI
-03FB ; [.1926.0020.0002.03FB] # GREEK SMALL LETTER SAN
-03FA ; [.1926.0020.0008.03FA] # GREEK CAPITAL LETTER SAN
-03DF ; [.1927.0020.0002.03DF] # GREEK SMALL LETTER KOPPA
-03DE ; [.1927.0020.0008.03DE] # GREEK LETTER KOPPA
-03D9 ; [.1928.0020.0002.03D9] # GREEK SMALL LETTER ARCHAIC KOPPA
-03D8 ; [.1928.0020.0008.03D8] # GREEK LETTER ARCHAIC KOPPA
-03C1 ; [.1929.0020.0002.03C1] # GREEK SMALL LETTER RHO
-03F1 ; [.1929.0020.0004.03F1] # GREEK RHO SYMBOL
-1D6D2 ; [.1929.0020.0005.1D6D2] # MATHEMATICAL BOLD SMALL RHO
-1D6E0 ; [.1929.0020.0005.1D6E0] # MATHEMATICAL BOLD RHO SYMBOL
-1D70C ; [.1929.0020.0005.1D70C] # MATHEMATICAL ITALIC SMALL RHO
-1D71A ; [.1929.0020.0005.1D71A] # MATHEMATICAL ITALIC RHO SYMBOL
-1D746 ; [.1929.0020.0005.1D746] # MATHEMATICAL BOLD ITALIC SMALL RHO
-1D754 ; [.1929.0020.0005.1D754] # MATHEMATICAL BOLD ITALIC RHO SYMBOL
-1D780 ; [.1929.0020.0005.1D780] # MATHEMATICAL SANS-SERIF BOLD SMALL RHO
-1D78E ; [.1929.0020.0005.1D78E] # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
-1D7BA ; [.1929.0020.0005.1D7BA] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
-1D7C8 ; [.1929.0020.0005.1D7C8] # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
-03A1 ; [.1929.0020.0008.03A1] # GREEK CAPITAL LETTER RHO
-1D6B8 ; [.1929.0020.000B.1D6B8] # MATHEMATICAL BOLD CAPITAL RHO
-1D6F2 ; [.1929.0020.000B.1D6F2] # MATHEMATICAL ITALIC CAPITAL RHO
-1D72C ; [.1929.0020.000B.1D72C] # MATHEMATICAL BOLD ITALIC CAPITAL RHO
-1D766 ; [.1929.0020.000B.1D766] # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
-1D7A0 ; [.1929.0020.000B.1D7A0] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
-1D68 ; [.1929.0020.0015.1D68] # GREEK SUBSCRIPT SMALL LETTER RHO
-1FE4 ; [.1929.0020.0002.03C1][.0000.0022.0002.0313] # GREEK SMALL LETTER RHO WITH PSILI
-1FE5 ; [.1929.0020.0002.03C1][.0000.002A.0002.0314] # GREEK SMALL LETTER RHO WITH DASIA
-1FEC ; [.1929.0020.0008.03A1][.0000.002A.0002.0314] # GREEK CAPITAL LETTER RHO WITH DASIA
-1D29 ; [.192A.0020.0002.1D29] # GREEK LETTER SMALL CAPITAL RHO
-03FC ; [.192B.0020.0002.03FC] # GREEK RHO WITH STROKE SYMBOL
-03C3 ; [.192C.0020.0002.03C3] # GREEK SMALL LETTER SIGMA
-03F2 ; [.192C.0020.0004.03F2] # GREEK LUNATE SIGMA SYMBOL
-1D6D3 ; [.192C.0020.0005.1D6D3] # MATHEMATICAL BOLD SMALL FINAL SIGMA
-1D6D4 ; [.192C.0020.0005.1D6D4] # MATHEMATICAL BOLD SMALL SIGMA
-1D70D ; [.192C.0020.0005.1D70D] # MATHEMATICAL ITALIC SMALL FINAL SIGMA
-1D70E ; [.192C.0020.0005.1D70E] # MATHEMATICAL ITALIC SMALL SIGMA
-1D747 ; [.192C.0020.0005.1D747] # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
-1D748 ; [.192C.0020.0005.1D748] # MATHEMATICAL BOLD ITALIC SMALL SIGMA
-1D781 ; [.192C.0020.0005.1D781] # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
-1D782 ; [.192C.0020.0005.1D782] # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
-1D7BB ; [.192C.0020.0005.1D7BB] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
-1D7BC ; [.192C.0020.0005.1D7BC] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
-03A3 ; [.192C.0020.0008.03A3] # GREEK CAPITAL LETTER SIGMA
-03F9 ; [.192C.0020.000A.03F9] # GREEK CAPITAL LUNATE SIGMA SYMBOL
-1D6BA ; [.192C.0020.000B.1D6BA] # MATHEMATICAL BOLD CAPITAL SIGMA
-1D6F4 ; [.192C.0020.000B.1D6F4] # MATHEMATICAL ITALIC CAPITAL SIGMA
-1D72E ; [.192C.0020.000B.1D72E] # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
-1D768 ; [.192C.0020.000B.1D768] # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
-1D7A2 ; [.192C.0020.000B.1D7A2] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
-03C2 ; [.192C.0020.0019.03C2] # GREEK SMALL LETTER FINAL SIGMA
-037C ; [.192D.0020.0002.037C] # GREEK SMALL DOTTED LUNATE SIGMA SYMBOL
-03FE ; [.192D.0020.0008.03FE] # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
-037B ; [.192E.0020.0002.037B] # GREEK SMALL REVERSED LUNATE SIGMA SYMBOL
-03FD ; [.192E.0020.0008.03FD] # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
-037D ; [.192F.0020.0002.037D] # GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
-03FF ; [.192F.0020.0008.03FF] # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
-03C4 ; [.1930.0020.0002.03C4] # GREEK SMALL LETTER TAU
-1D6D5 ; [.1930.0020.0005.1D6D5] # MATHEMATICAL BOLD SMALL TAU
-1D70F ; [.1930.0020.0005.1D70F] # MATHEMATICAL ITALIC SMALL TAU
-1D749 ; [.1930.0020.0005.1D749] # MATHEMATICAL BOLD ITALIC SMALL TAU
-1D783 ; [.1930.0020.0005.1D783] # MATHEMATICAL SANS-SERIF BOLD SMALL TAU
-1D7BD ; [.1930.0020.0005.1D7BD] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
-03A4 ; [.1930.0020.0008.03A4] # GREEK CAPITAL LETTER TAU
-1D6BB ; [.1930.0020.000B.1D6BB] # MATHEMATICAL BOLD CAPITAL TAU
-1D6F5 ; [.1930.0020.000B.1D6F5] # MATHEMATICAL ITALIC CAPITAL TAU
-1D72F ; [.1930.0020.000B.1D72F] # MATHEMATICAL BOLD ITALIC CAPITAL TAU
-1D769 ; [.1930.0020.000B.1D769] # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
-1D7A3 ; [.1930.0020.000B.1D7A3] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
-03C5 ; [.1931.0020.0002.03C5] # GREEK SMALL LETTER UPSILON
-1D6D6 ; [.1931.0020.0005.1D6D6] # MATHEMATICAL BOLD SMALL UPSILON
-1D710 ; [.1931.0020.0005.1D710] # MATHEMATICAL ITALIC SMALL UPSILON
-1D74A ; [.1931.0020.0005.1D74A] # MATHEMATICAL BOLD ITALIC SMALL UPSILON
-1D784 ; [.1931.0020.0005.1D784] # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
-1D7BE ; [.1931.0020.0005.1D7BE] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
-03A5 ; [.1931.0020.0008.03A5] # GREEK CAPITAL LETTER UPSILON
-03D2 ; [.1931.0020.000A.03D2] # GREEK UPSILON WITH HOOK SYMBOL
-1D6BC ; [.1931.0020.000B.1D6BC] # MATHEMATICAL BOLD CAPITAL UPSILON
-1D6F6 ; [.1931.0020.000B.1D6F6] # MATHEMATICAL ITALIC CAPITAL UPSILON
-1D730 ; [.1931.0020.000B.1D730] # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
-1D76A ; [.1931.0020.000B.1D76A] # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
-1D7A4 ; [.1931.0020.000B.1D7A4] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
-1F50 ; [.1931.0020.0002.03C5][.0000.0022.0002.0313] # GREEK SMALL LETTER UPSILON WITH PSILI
-1F54 ; [.1931.0020.0002.03C5][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-1F52 ; [.1931.0020.0002.03C5][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-1F56 ; [.1931.0020.0002.03C5][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-1F51 ; [.1931.0020.0002.03C5][.0000.002A.0002.0314] # GREEK SMALL LETTER UPSILON WITH DASIA
-1F59 ; [.1931.0020.0008.03A5][.0000.002A.0002.0314] # GREEK CAPITAL LETTER UPSILON WITH DASIA
-1F55 ; [.1931.0020.0002.03C5][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
-1F5D ; [.1931.0020.0008.03A5][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
-1F53 ; [.1931.0020.0002.03C5][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
-1F5B ; [.1931.0020.0008.03A5][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
-1F57 ; [.1931.0020.0002.03C5][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F5F ; [.1931.0020.0008.03A5][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
-03CD ; [.1931.0020.0002.03C5][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH TONOS
-1F7B ; [.1931.0020.0002.03C5][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH OXIA
-038E ; [.1931.0020.0008.03A5][.0000.0032.0002.0301] # GREEK CAPITAL LETTER UPSILON WITH TONOS
-1FEB ; [.1931.0020.0008.03A5][.0000.0032.0002.0301] # GREEK CAPITAL LETTER UPSILON WITH OXIA
-03D3 ; [.1931.0020.000A.03D3][.0000.0032.0002.03D3] # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
-1F7A ; [.1931.0020.0002.03C5][.0000.0035.0002.0300] # GREEK SMALL LETTER UPSILON WITH VARIA
-1FEA ; [.1931.0020.0008.03A5][.0000.0035.0002.0300] # GREEK CAPITAL LETTER UPSILON WITH VARIA
-1FE0 ; [.1931.0020.0002.03C5][.0000.0037.0002.0306] # GREEK SMALL LETTER UPSILON WITH VRACHY
-1FE8 ; [.1931.0020.0008.03A5][.0000.0037.0002.0306] # GREEK CAPITAL LETTER UPSILON WITH VRACHY
-1FE6 ; [.1931.0020.0002.03C5][.0000.0045.0002.0342] # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-03CB ; [.1931.0020.0002.03C5][.0000.0047.0002.0308] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-03AB ; [.1931.0020.0008.03A5][.0000.0047.0002.0308] # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-03D4 ; [.1931.0020.000A.03D4][.0000.0047.0002.03D4] # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
-03B0 ; [.1931.0020.0002.03C5][.0000.0047.0002.0308][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-1FE3 ; [.1931.0020.0002.03C5][.0000.0047.0002.0308][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-1FE2 ; [.1931.0020.0002.03C5][.0000.0047.0002.0308][.0000.0035.0002.0300] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-1FE7 ; [.1931.0020.0002.03C5][.0000.0047.0002.0308][.0000.0045.0002.0342] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-1FE1 ; [.1931.0020.0002.03C5][.0000.005B.0002.0304] # GREEK SMALL LETTER UPSILON WITH MACRON
-1FE9 ; [.1931.0020.0008.03A5][.0000.005B.0002.0304] # GREEK CAPITAL LETTER UPSILON WITH MACRON
-03C6 ; [.1932.0020.0002.03C6] # GREEK SMALL LETTER PHI
-03D5 ; [.1932.0020.0004.03D5] # GREEK PHI SYMBOL
-1D6D7 ; [.1932.0020.0005.1D6D7] # MATHEMATICAL BOLD SMALL PHI
-1D6DF ; [.1932.0020.0005.1D6DF] # MATHEMATICAL BOLD PHI SYMBOL
-1D711 ; [.1932.0020.0005.1D711] # MATHEMATICAL ITALIC SMALL PHI
-1D719 ; [.1932.0020.0005.1D719] # MATHEMATICAL ITALIC PHI SYMBOL
-1D74B ; [.1932.0020.0005.1D74B] # MATHEMATICAL BOLD ITALIC SMALL PHI
-1D753 ; [.1932.0020.0005.1D753] # MATHEMATICAL BOLD ITALIC PHI SYMBOL
-1D785 ; [.1932.0020.0005.1D785] # MATHEMATICAL SANS-SERIF BOLD SMALL PHI
-1D78D ; [.1932.0020.0005.1D78D] # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
-1D7BF ; [.1932.0020.0005.1D7BF] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
-1D7C7 ; [.1932.0020.0005.1D7C7] # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
-03A6 ; [.1932.0020.0008.03A6] # GREEK CAPITAL LETTER PHI
-1D6BD ; [.1932.0020.000B.1D6BD] # MATHEMATICAL BOLD CAPITAL PHI
-1D6F7 ; [.1932.0020.000B.1D6F7] # MATHEMATICAL ITALIC CAPITAL PHI
-1D731 ; [.1932.0020.000B.1D731] # MATHEMATICAL BOLD ITALIC CAPITAL PHI
-1D76B ; [.1932.0020.000B.1D76B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
-1D7A5 ; [.1932.0020.000B.1D7A5] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
-1D60 ; [.1932.0020.0014.1D60] # MODIFIER LETTER SMALL GREEK PHI
-1D69 ; [.1932.0020.0015.1D69] # GREEK SUBSCRIPT SMALL LETTER PHI
-03C7 ; [.1933.0020.0002.03C7] # GREEK SMALL LETTER CHI
-1D6D8 ; [.1933.0020.0005.1D6D8] # MATHEMATICAL BOLD SMALL CHI
-1D712 ; [.1933.0020.0005.1D712] # MATHEMATICAL ITALIC SMALL CHI
-1D74C ; [.1933.0020.0005.1D74C] # MATHEMATICAL BOLD ITALIC SMALL CHI
-1D786 ; [.1933.0020.0005.1D786] # MATHEMATICAL SANS-SERIF BOLD SMALL CHI
-1D7C0 ; [.1933.0020.0005.1D7C0] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
-03A7 ; [.1933.0020.0008.03A7] # GREEK CAPITAL LETTER CHI
-1D6BE ; [.1933.0020.000B.1D6BE] # MATHEMATICAL BOLD CAPITAL CHI
-1D6F8 ; [.1933.0020.000B.1D6F8] # MATHEMATICAL ITALIC CAPITAL CHI
-1D732 ; [.1933.0020.000B.1D732] # MATHEMATICAL BOLD ITALIC CAPITAL CHI
-1D76C ; [.1933.0020.000B.1D76C] # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
-1D7A6 ; [.1933.0020.000B.1D7A6] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
-1D61 ; [.1933.0020.0014.1D61] # MODIFIER LETTER SMALL CHI
-1D6A ; [.1933.0020.0015.1D6A] # GREEK SUBSCRIPT SMALL LETTER CHI
-03C8 ; [.1934.0020.0002.03C8] # GREEK SMALL LETTER PSI
-1D6D9 ; [.1934.0020.0005.1D6D9] # MATHEMATICAL BOLD SMALL PSI
-1D713 ; [.1934.0020.0005.1D713] # MATHEMATICAL ITALIC SMALL PSI
-1D74D ; [.1934.0020.0005.1D74D] # MATHEMATICAL BOLD ITALIC SMALL PSI
-1D787 ; [.1934.0020.0005.1D787] # MATHEMATICAL SANS-SERIF BOLD SMALL PSI
-1D7C1 ; [.1934.0020.0005.1D7C1] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
-03A8 ; [.1934.0020.0008.03A8] # GREEK CAPITAL LETTER PSI
-1D6BF ; [.1934.0020.000B.1D6BF] # MATHEMATICAL BOLD CAPITAL PSI
-1D6F9 ; [.1934.0020.000B.1D6F9] # MATHEMATICAL ITALIC CAPITAL PSI
-1D733 ; [.1934.0020.000B.1D733] # MATHEMATICAL BOLD ITALIC CAPITAL PSI
-1D76D ; [.1934.0020.000B.1D76D] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
-1D7A7 ; [.1934.0020.000B.1D7A7] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
-1D2A ; [.1935.0020.0002.1D2A] # GREEK LETTER SMALL CAPITAL PSI
-03C9 ; [.1936.0020.0002.03C9] # GREEK SMALL LETTER OMEGA
-1D6DA ; [.1936.0020.0005.1D6DA] # MATHEMATICAL BOLD SMALL OMEGA
-1D714 ; [.1936.0020.0005.1D714] # MATHEMATICAL ITALIC SMALL OMEGA
-1D74E ; [.1936.0020.0005.1D74E] # MATHEMATICAL BOLD ITALIC SMALL OMEGA
-1D788 ; [.1936.0020.0005.1D788] # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
-1D7C2 ; [.1936.0020.0005.1D7C2] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
-03A9 ; [.1936.0020.0008.03A9] # GREEK CAPITAL LETTER OMEGA
-2126 ; [.1936.0020.0008.2126] # OHM SIGN
-1D6C0 ; [.1936.0020.000B.1D6C0] # MATHEMATICAL BOLD CAPITAL OMEGA
-1D6FA ; [.1936.0020.000B.1D6FA] # MATHEMATICAL ITALIC CAPITAL OMEGA
-1D734 ; [.1936.0020.000B.1D734] # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
-1D76E ; [.1936.0020.000B.1D76E] # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
-1D7A8 ; [.1936.0020.000B.1D7A8] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
-1F60 ; [.1936.0020.0002.03C9][.0000.0022.0002.0313] # GREEK SMALL LETTER OMEGA WITH PSILI
-1F68 ; [.1936.0020.0008.03A9][.0000.0022.0002.0313] # GREEK CAPITAL LETTER OMEGA WITH PSILI
-1F64 ; [.1936.0020.0002.03C9][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
-1F6C ; [.1936.0020.0008.03A9][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
-1FA4 ; [.1936.0020.0002.03C9][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1FAC ; [.1936.0020.0008.03A9][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F62 ; [.1936.0020.0002.03C9][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
-1F6A ; [.1936.0020.0008.03A9][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
-1FA2 ; [.1936.0020.0002.03C9][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1FAA ; [.1936.0020.0008.03A9][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F66 ; [.1936.0020.0002.03C9][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1F6E ; [.1936.0020.0008.03A9][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1FA6 ; [.1936.0020.0002.03C9][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1FAE ; [.1936.0020.0008.03A9][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1FA0 ; [.1936.0020.0002.03C9][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-1FA8 ; [.1936.0020.0008.03A9][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-1F61 ; [.1936.0020.0002.03C9][.0000.002A.0002.0314] # GREEK SMALL LETTER OMEGA WITH DASIA
-1F69 ; [.1936.0020.0008.03A9][.0000.002A.0002.0314] # GREEK CAPITAL LETTER OMEGA WITH DASIA
-1F65 ; [.1936.0020.0002.03C9][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
-1F6D ; [.1936.0020.0008.03A9][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
-1FA5 ; [.1936.0020.0002.03C9][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1FAD ; [.1936.0020.0008.03A9][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F63 ; [.1936.0020.0002.03C9][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
-1F6B ; [.1936.0020.0008.03A9][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
-1FA3 ; [.1936.0020.0002.03C9][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1FAB ; [.1936.0020.0008.03A9][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F67 ; [.1936.0020.0002.03C9][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F6F ; [.1936.0020.0008.03A9][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1FA7 ; [.1936.0020.0002.03C9][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1FAF ; [.1936.0020.0008.03A9][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FA1 ; [.1936.0020.0002.03C9][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-1FA9 ; [.1936.0020.0008.03A9][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-03CE ; [.1936.0020.0002.03C9][.0000.0032.0002.0301] # GREEK SMALL LETTER OMEGA WITH TONOS
-1F7D ; [.1936.0020.0002.03C9][.0000.0032.0002.0301] # GREEK SMALL LETTER OMEGA WITH OXIA
-038F ; [.1936.0020.0008.03A9][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMEGA WITH TONOS
-1FFB ; [.1936.0020.0008.03A9][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMEGA WITH OXIA
-1FF4 ; [.1936.0020.0002.03C9][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-1F7C ; [.1936.0020.0002.03C9][.0000.0035.0002.0300] # GREEK SMALL LETTER OMEGA WITH VARIA
-1FFA ; [.1936.0020.0008.03A9][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMEGA WITH VARIA
-1FF2 ; [.1936.0020.0002.03C9][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-1FF6 ; [.1936.0020.0002.03C9][.0000.0045.0002.0342] # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-1FF7 ; [.1936.0020.0002.03C9][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FF3 ; [.1936.0020.0002.03C9][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-1FFC ; [.1936.0020.0008.03A9][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-03E1 ; [.1937.0020.0002.03E1] # GREEK SMALL LETTER SAMPI
-03E0 ; [.1937.0020.0008.03E0] # GREEK LETTER SAMPI
-0373 ; [.1938.0020.0002.0373] # GREEK SMALL LETTER ARCHAIC SAMPI
-0372 ; [.1938.0020.0008.0372] # GREEK CAPITAL LETTER ARCHAIC SAMPI
-03F8 ; [.1939.0020.0002.03F8] # GREEK SMALL LETTER SHO
-03F7 ; [.1939.0020.0008.03F7] # GREEK CAPITAL LETTER SHO
-2C81 ; [.193A.0020.0002.2C81] # COPTIC SMALL LETTER ALFA
-2C80 ; [.193A.0020.0008.2C80] # COPTIC CAPITAL LETTER ALFA
-2C83 ; [.193B.0020.0002.2C83] # COPTIC SMALL LETTER VIDA
-2C82 ; [.193B.0020.0008.2C82] # COPTIC CAPITAL LETTER VIDA
-2C85 ; [.193C.0020.0002.2C85] # COPTIC SMALL LETTER GAMMA
-2C84 ; [.193C.0020.0008.2C84] # COPTIC CAPITAL LETTER GAMMA
-2C87 ; [.193D.0020.0002.2C87] # COPTIC SMALL LETTER DALDA
-2C86 ; [.193D.0020.0008.2C86] # COPTIC CAPITAL LETTER DALDA
-2C89 ; [.193E.0020.0002.2C89] # COPTIC SMALL LETTER EIE
-2C88 ; [.193E.0020.0008.2C88] # COPTIC CAPITAL LETTER EIE
-2CB7 ; [.193F.0020.0002.2CB7] # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
-2CB6 ; [.193F.0020.0008.2CB6] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
-2C8B ; [.1940.0020.0002.2C8B] # COPTIC SMALL LETTER SOU
-2C8A ; [.1940.0020.0008.2C8A] # COPTIC CAPITAL LETTER SOU
-2C8D ; [.1941.0020.0002.2C8D] # COPTIC SMALL LETTER ZATA
-2C8C ; [.1941.0020.0008.2C8C] # COPTIC CAPITAL LETTER ZATA
-2C8F ; [.1942.0020.0002.2C8F] # COPTIC SMALL LETTER HATE
-2C8E ; [.1942.0020.0008.2C8E] # COPTIC CAPITAL LETTER HATE
-2C91 ; [.1943.0020.0002.2C91] # COPTIC SMALL LETTER THETHE
-2C90 ; [.1943.0020.0008.2C90] # COPTIC CAPITAL LETTER THETHE
-2C93 ; [.1944.0020.0002.2C93] # COPTIC SMALL LETTER IAUDA
-2C92 ; [.1944.0020.0008.2C92] # COPTIC CAPITAL LETTER IAUDA
-2C95 ; [.1945.0020.0002.2C95] # COPTIC SMALL LETTER KAPA
-2C94 ; [.1945.0020.0008.2C94] # COPTIC CAPITAL LETTER KAPA
-2CE4 ; [.1945.0020.0004.2CE4][.193A.0020.0004.2CE4][.1944.0020.001F.2CE4] # COPTIC SYMBOL KAI
-2CB9 ; [.1946.0020.0002.2CB9] # COPTIC SMALL LETTER DIALECT-P KAPA
-2CB8 ; [.1946.0020.0008.2CB8] # COPTIC CAPITAL LETTER DIALECT-P KAPA
-2C97 ; [.1947.0020.0002.2C97] # COPTIC SMALL LETTER LAULA
-2C96 ; [.1947.0020.0008.2C96] # COPTIC CAPITAL LETTER LAULA
-2C99 ; [.1948.0020.0002.2C99] # COPTIC SMALL LETTER MI
-2C98 ; [.1948.0020.0008.2C98] # COPTIC CAPITAL LETTER MI
-2C9B ; [.1949.0020.0002.2C9B] # COPTIC SMALL LETTER NI
-2C9A ; [.1949.0020.0008.2C9A] # COPTIC CAPITAL LETTER NI
-2CBB ; [.194A.0020.0002.2CBB] # COPTIC SMALL LETTER DIALECT-P NI
-2CBA ; [.194A.0020.0008.2CBA] # COPTIC CAPITAL LETTER DIALECT-P NI
-2CBD ; [.194B.0020.0002.2CBD] # COPTIC SMALL LETTER CRYPTOGRAMMIC NI
-2CBC ; [.194B.0020.0008.2CBC] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
-2C9D ; [.194C.0020.0002.2C9D] # COPTIC SMALL LETTER KSI
-2C9C ; [.194C.0020.0008.2C9C] # COPTIC CAPITAL LETTER KSI
-2C9F ; [.194D.0020.0002.2C9F] # COPTIC SMALL LETTER O
-2C9E ; [.194D.0020.0008.2C9E] # COPTIC CAPITAL LETTER O
-2CA1 ; [.194E.0020.0002.2CA1] # COPTIC SMALL LETTER PI
-2CA0 ; [.194E.0020.0008.2CA0] # COPTIC CAPITAL LETTER PI
-2CA3 ; [.194F.0020.0002.2CA3] # COPTIC SMALL LETTER RO
-2CA2 ; [.194F.0020.0008.2CA2] # COPTIC CAPITAL LETTER RO
-2CA5 ; [.1950.0020.0002.2CA5] # COPTIC SMALL LETTER SIMA
-2CA4 ; [.1950.0020.0008.2CA4] # COPTIC CAPITAL LETTER SIMA
-2CA7 ; [.1951.0020.0002.2CA7] # COPTIC SMALL LETTER TAU
-2CA6 ; [.1951.0020.0008.2CA6] # COPTIC CAPITAL LETTER TAU
-2CA9 ; [.1952.0020.0002.2CA9] # COPTIC SMALL LETTER UA
-2CA8 ; [.1952.0020.0008.2CA8] # COPTIC CAPITAL LETTER UA
-2CAB ; [.1953.0020.0002.2CAB] # COPTIC SMALL LETTER FI
-2CAA ; [.1953.0020.0008.2CAA] # COPTIC CAPITAL LETTER FI
-2CAD ; [.1954.0020.0002.2CAD] # COPTIC SMALL LETTER KHI
-2CAC ; [.1954.0020.0008.2CAC] # COPTIC CAPITAL LETTER KHI
-2CAF ; [.1955.0020.0002.2CAF] # COPTIC SMALL LETTER PSI
-2CAE ; [.1955.0020.0008.2CAE] # COPTIC CAPITAL LETTER PSI
-2CB1 ; [.1956.0020.0002.2CB1] # COPTIC SMALL LETTER OOU
-2CB0 ; [.1956.0020.0008.2CB0] # COPTIC CAPITAL LETTER OOU
-2CBF ; [.1957.0020.0002.2CBF] # COPTIC SMALL LETTER OLD COPTIC OOU
-2CBE ; [.1957.0020.0008.2CBE] # COPTIC CAPITAL LETTER OLD COPTIC OOU
-2CC1 ; [.1958.0020.0002.2CC1] # COPTIC SMALL LETTER SAMPI
-2CC0 ; [.1958.0020.0008.2CC0] # COPTIC CAPITAL LETTER SAMPI
-03E3 ; [.1959.0020.0002.03E3] # COPTIC SMALL LETTER SHEI
-03E2 ; [.1959.0020.0008.03E2] # COPTIC CAPITAL LETTER SHEI
-2CEC ; [.195A.0020.0002.2CEC] # COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI
-2CEB ; [.195A.0020.0008.2CEB] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
-2CC3 ; [.195B.0020.0002.2CC3] # COPTIC SMALL LETTER CROSSED SHEI
-2CC2 ; [.195B.0020.0008.2CC2] # COPTIC CAPITAL LETTER CROSSED SHEI
-2CC5 ; [.195C.0020.0002.2CC5] # COPTIC SMALL LETTER OLD COPTIC SHEI
-2CC4 ; [.195C.0020.0008.2CC4] # COPTIC CAPITAL LETTER OLD COPTIC SHEI
-2CC7 ; [.195D.0020.0002.2CC7] # COPTIC SMALL LETTER OLD COPTIC ESH
-2CC6 ; [.195D.0020.0008.2CC6] # COPTIC CAPITAL LETTER OLD COPTIC ESH
-03E5 ; [.195E.0020.0002.03E5] # COPTIC SMALL LETTER FEI
-03E4 ; [.195E.0020.0008.03E4] # COPTIC CAPITAL LETTER FEI
-03E7 ; [.195F.0020.0002.03E7] # COPTIC SMALL LETTER KHEI
-03E6 ; [.195F.0020.0008.03E6] # COPTIC CAPITAL LETTER KHEI
-2CF3 ; [.1960.0020.0002.2CF3] # COPTIC SMALL LETTER BOHAIRIC KHEI
-2CF2 ; [.1960.0020.0008.2CF2] # COPTIC CAPITAL LETTER BOHAIRIC KHEI
-2CC9 ; [.1961.0020.0002.2CC9] # COPTIC SMALL LETTER AKHMIMIC KHEI
-2CC8 ; [.1961.0020.0008.2CC8] # COPTIC CAPITAL LETTER AKHMIMIC KHEI
-03E9 ; [.1962.0020.0002.03E9] # COPTIC SMALL LETTER HORI
-03E8 ; [.1962.0020.0008.03E8] # COPTIC CAPITAL LETTER HORI
-2CCB ; [.1963.0020.0002.2CCB] # COPTIC SMALL LETTER DIALECT-P HORI
-2CCA ; [.1963.0020.0008.2CCA] # COPTIC CAPITAL LETTER DIALECT-P HORI
-2CCD ; [.1964.0020.0002.2CCD] # COPTIC SMALL LETTER OLD COPTIC HORI
-2CCC ; [.1964.0020.0008.2CCC] # COPTIC CAPITAL LETTER OLD COPTIC HORI
-2CCF ; [.1965.0020.0002.2CCF] # COPTIC SMALL LETTER OLD COPTIC HA
-2CCE ; [.1965.0020.0008.2CCE] # COPTIC CAPITAL LETTER OLD COPTIC HA
-2CD1 ; [.1966.0020.0002.2CD1] # COPTIC SMALL LETTER L-SHAPED HA
-2CD0 ; [.1966.0020.0008.2CD0] # COPTIC CAPITAL LETTER L-SHAPED HA
-2CD3 ; [.1967.0020.0002.2CD3] # COPTIC SMALL LETTER OLD COPTIC HEI
-2CD2 ; [.1967.0020.0008.2CD2] # COPTIC CAPITAL LETTER OLD COPTIC HEI
-2CD5 ; [.1968.0020.0002.2CD5] # COPTIC SMALL LETTER OLD COPTIC HAT
-2CD4 ; [.1968.0020.0008.2CD4] # COPTIC CAPITAL LETTER OLD COPTIC HAT
-03EB ; [.1969.0020.0002.03EB] # COPTIC SMALL LETTER GANGIA
-03EA ; [.1969.0020.0008.03EA] # COPTIC CAPITAL LETTER GANGIA
-2CEE ; [.196A.0020.0002.2CEE] # COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
-2CED ; [.196A.0020.0008.2CED] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
-2CD7 ; [.196B.0020.0002.2CD7] # COPTIC SMALL LETTER OLD COPTIC GANGIA
-2CD6 ; [.196B.0020.0008.2CD6] # COPTIC CAPITAL LETTER OLD COPTIC GANGIA
-03ED ; [.196C.0020.0002.03ED] # COPTIC SMALL LETTER SHIMA
-03EC ; [.196C.0020.0008.03EC] # COPTIC CAPITAL LETTER SHIMA
-2CD9 ; [.196D.0020.0002.2CD9] # COPTIC SMALL LETTER OLD COPTIC DJA
-2CD8 ; [.196D.0020.0008.2CD8] # COPTIC CAPITAL LETTER OLD COPTIC DJA
-2CDB ; [.196E.0020.0002.2CDB] # COPTIC SMALL LETTER OLD COPTIC SHIMA
-2CDA ; [.196E.0020.0008.2CDA] # COPTIC CAPITAL LETTER OLD COPTIC SHIMA
-2CDD ; [.196F.0020.0002.2CDD] # COPTIC SMALL LETTER OLD NUBIAN SHIMA
-2CDC ; [.196F.0020.0008.2CDC] # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
-03EF ; [.1970.0020.0002.03EF] # COPTIC SMALL LETTER DEI
-03EE ; [.1970.0020.0008.03EE] # COPTIC CAPITAL LETTER DEI
-2CB3 ; [.1971.0020.0002.2CB3] # COPTIC SMALL LETTER DIALECT-P ALEF
-2CB2 ; [.1971.0020.0008.2CB2] # COPTIC CAPITAL LETTER DIALECT-P ALEF
-2CB5 ; [.1972.0020.0002.2CB5] # COPTIC SMALL LETTER OLD COPTIC AIN
-2CB4 ; [.1972.0020.0008.2CB4] # COPTIC CAPITAL LETTER OLD COPTIC AIN
-2CDF ; [.1973.0020.0002.2CDF] # COPTIC SMALL LETTER OLD NUBIAN NGI
-2CDE ; [.1973.0020.0008.2CDE] # COPTIC CAPITAL LETTER OLD NUBIAN NGI
-2CE1 ; [.1974.0020.0002.2CE1] # COPTIC SMALL LETTER OLD NUBIAN NYI
-2CE0 ; [.1974.0020.0008.2CE0] # COPTIC CAPITAL LETTER OLD NUBIAN NYI
-2CE3 ; [.1975.0020.0002.2CE3] # COPTIC SMALL LETTER OLD NUBIAN WAU
-2CE2 ; [.1975.0020.0008.2CE2] # COPTIC CAPITAL LETTER OLD NUBIAN WAU
-0430 ; [.1976.0020.0002.0430] # CYRILLIC SMALL LETTER A
-2DF6 ; [.1976.0020.0004.2DF6] # COMBINING CYRILLIC LETTER A
-0410 ; [.1976.0020.0008.0410] # CYRILLIC CAPITAL LETTER A
-04D1 ; [.197A.0020.0002.04D1] # CYRILLIC SMALL LETTER A WITH BREVE
-0430 0306 ; [.197A.0020.0002.04D1] # CYRILLIC SMALL LETTER A WITH BREVE
-04D0 ; [.197A.0020.0008.04D0] # CYRILLIC CAPITAL LETTER A WITH BREVE
-0410 0306 ; [.197A.0020.0008.04D0] # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D3 ; [.197E.0020.0002.04D3] # CYRILLIC SMALL LETTER A WITH DIAERESIS
-0430 0308 ; [.197E.0020.0002.04D3] # CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D2 ; [.197E.0020.0008.04D2] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-0410 0308 ; [.197E.0020.0008.04D2] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04D9 ; [.1982.0020.0002.04D9] # CYRILLIC SMALL LETTER SCHWA
-04D8 ; [.1982.0020.0008.04D8] # CYRILLIC CAPITAL LETTER SCHWA
-04DB ; [.1986.0020.0002.04DB] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04D9 0308 ; [.1986.0020.0002.04DB] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DA ; [.1986.0020.0008.04DA] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-04D8 0308 ; [.1986.0020.0008.04DA] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-04D5 ; [.198A.0020.0002.04D5] # CYRILLIC SMALL LIGATURE A IE
-04D4 ; [.198A.0020.0008.04D4] # CYRILLIC CAPITAL LIGATURE A IE
-0431 ; [.198E.0020.0002.0431] # CYRILLIC SMALL LETTER BE
-2DE0 ; [.198E.0020.0004.2DE0] # COMBINING CYRILLIC LETTER BE
-0411 ; [.198E.0020.0008.0411] # CYRILLIC CAPITAL LETTER BE
-0432 ; [.1992.0020.0002.0432] # CYRILLIC SMALL LETTER VE
-2DE1 ; [.1992.0020.0004.2DE1] # COMBINING CYRILLIC LETTER VE
-0412 ; [.1992.0020.0008.0412] # CYRILLIC CAPITAL LETTER VE
-0433 ; [.1996.0020.0002.0433] # CYRILLIC SMALL LETTER GHE
-2DE2 ; [.1996.0020.0004.2DE2] # COMBINING CYRILLIC LETTER GHE
-0413 ; [.1996.0020.0008.0413] # CYRILLIC CAPITAL LETTER GHE
-0491 ; [.1996.0020.0004.0491][.0000.013A.0004.0491] # CYRILLIC SMALL LETTER GHE WITH UPTURN
-0490 ; [.1996.0020.000A.0490][.0000.013A.0004.0490] # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0493 ; [.199A.0020.0002.0493] # CYRILLIC SMALL LETTER GHE WITH STROKE
-0492 ; [.199A.0020.0008.0492] # CYRILLIC CAPITAL LETTER GHE WITH STROKE
-04FB ; [.199E.0020.0002.04FB] # CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
-04FA ; [.199E.0020.0008.04FA] # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
-0495 ; [.19A2.0020.0002.0495] # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
-0494 ; [.19A2.0020.0008.0494] # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
-04F7 ; [.19A6.0020.0002.04F7] # CYRILLIC SMALL LETTER GHE WITH DESCENDER
-04F6 ; [.19A6.0020.0008.04F6] # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
-0434 ; [.19AA.0020.0002.0434] # CYRILLIC SMALL LETTER DE
-2DE3 ; [.19AA.0020.0004.2DE3] # COMBINING CYRILLIC LETTER DE
-0414 ; [.19AA.0020.0008.0414] # CYRILLIC CAPITAL LETTER DE
-0501 ; [.19AE.0020.0002.0501] # CYRILLIC SMALL LETTER KOMI DE
-0500 ; [.19AE.0020.0008.0500] # CYRILLIC CAPITAL LETTER KOMI DE
-A681 ; [.19AF.0020.0002.A681] # CYRILLIC SMALL LETTER DWE
-A680 ; [.19AF.0020.0008.A680] # CYRILLIC CAPITAL LETTER DWE
-0452 ; [.19B0.0020.0002.0452] # CYRILLIC SMALL LETTER DJE
-0402 ; [.19B0.0020.0008.0402] # CYRILLIC CAPITAL LETTER DJE
-A663 ; [.19B4.0020.0002.A663] # CYRILLIC SMALL LETTER SOFT DE
-A662 ; [.19B4.0020.0008.A662] # CYRILLIC CAPITAL LETTER SOFT DE
-0503 ; [.19B5.0020.0002.0503] # CYRILLIC SMALL LETTER KOMI DJE
-0502 ; [.19B5.0020.0008.0502] # CYRILLIC CAPITAL LETTER KOMI DJE
-0453 ; [.19B6.0020.0002.0453] # CYRILLIC SMALL LETTER GJE
-0433 0301 ; [.19B6.0020.0002.0453] # CYRILLIC SMALL LETTER GJE
-0433 0341 ; [.19B6.0020.0002.0453] # CYRILLIC SMALL LETTER GJE
-0403 ; [.19B6.0020.0008.0403] # CYRILLIC CAPITAL LETTER GJE
-0413 0301 ; [.19B6.0020.0008.0403] # CYRILLIC CAPITAL LETTER GJE
-0413 0341 ; [.19B6.0020.0008.0403] # CYRILLIC CAPITAL LETTER GJE
-0499 ; [.19BA.0020.0002.0499] # CYRILLIC SMALL LETTER ZE WITH DESCENDER
-0498 ; [.19BA.0020.0008.0498] # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
-0435 ; [.19BE.0020.0002.0435] # CYRILLIC SMALL LETTER IE
-2DF7 ; [.19BE.0020.0004.2DF7] # COMBINING CYRILLIC LETTER IE
-0415 ; [.19BE.0020.0008.0415] # CYRILLIC CAPITAL LETTER IE
-0450 ; [.19BE.0020.0002.0435][.0000.0035.0002.0300] # CYRILLIC SMALL LETTER IE WITH GRAVE
-0400 ; [.19BE.0020.0008.0415][.0000.0035.0002.0300] # CYRILLIC CAPITAL LETTER IE WITH GRAVE
-0451 ; [.19BE.0020.0002.0435][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER IO
-0401 ; [.19BE.0020.0008.0415][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER IO
-04D7 ; [.19C2.0020.0002.04D7] # CYRILLIC SMALL LETTER IE WITH BREVE
-0435 0306 ; [.19C2.0020.0002.04D7] # CYRILLIC SMALL LETTER IE WITH BREVE
-04D6 ; [.19C2.0020.0008.04D6] # CYRILLIC CAPITAL LETTER IE WITH BREVE
-0415 0306 ; [.19C2.0020.0008.04D6] # CYRILLIC CAPITAL LETTER IE WITH BREVE
-0454 ; [.19C6.0020.0002.0454] # CYRILLIC SMALL LETTER UKRAINIAN IE
-A674 ; [.19C6.0020.0004.A674] # COMBINING CYRILLIC LETTER UKRAINIAN IE
-0404 ; [.19C6.0020.0008.0404] # CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0436 ; [.19CA.0020.0002.0436] # CYRILLIC SMALL LETTER ZHE
-2DE4 ; [.19CA.0020.0004.2DE4] # COMBINING CYRILLIC LETTER ZHE
-0416 ; [.19CA.0020.0008.0416] # CYRILLIC CAPITAL LETTER ZHE
-04C2 ; [.19CA.0020.0002.0436][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER ZHE WITH BREVE
-04C1 ; [.19CA.0020.0008.0416][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
-A685 ; [.19CE.0020.0002.A685] # CYRILLIC SMALL LETTER ZHWE
-A684 ; [.19CE.0020.0008.A684] # CYRILLIC CAPITAL LETTER ZHWE
-04DD ; [.19CF.0020.0002.04DD] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-0436 0308 ; [.19CF.0020.0002.04DD] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DC ; [.19CF.0020.0008.04DC] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-0416 0308 ; [.19CF.0020.0008.04DC] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-0497 ; [.19D3.0020.0002.0497] # CYRILLIC SMALL LETTER ZHE WITH DESCENDER
-0496 ; [.19D3.0020.0008.0496] # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
-0437 ; [.19D7.0020.0002.0437] # CYRILLIC SMALL LETTER ZE
-2DE5 ; [.19D7.0020.0004.2DE5] # COMBINING CYRILLIC LETTER ZE
-0417 ; [.19D7.0020.0008.0417] # CYRILLIC CAPITAL LETTER ZE
-A641 ; [.19DB.0020.0002.A641] # CYRILLIC SMALL LETTER ZEMLYA
-A640 ; [.19DB.0020.0008.A640] # CYRILLIC CAPITAL LETTER ZEMLYA
-0505 ; [.19DC.0020.0002.0505] # CYRILLIC SMALL LETTER KOMI ZJE
-0504 ; [.19DC.0020.0008.0504] # CYRILLIC CAPITAL LETTER KOMI ZJE
-0511 ; [.19DD.0020.0002.0511] # CYRILLIC SMALL LETTER REVERSED ZE
-0510 ; [.19DD.0020.0008.0510] # CYRILLIC CAPITAL LETTER REVERSED ZE
-04DF ; [.19DE.0020.0002.04DF] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-0437 0308 ; [.19DE.0020.0002.04DF] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04DE ; [.19DE.0020.0008.04DE] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-0417 0308 ; [.19DE.0020.0008.04DE] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-A643 ; [.19E2.0020.0002.A643] # CYRILLIC SMALL LETTER DZELO
-A642 ; [.19E2.0020.0008.A642] # CYRILLIC CAPITAL LETTER DZELO
-0455 ; [.19E3.0020.0002.0455] # CYRILLIC SMALL LETTER DZE
-0405 ; [.19E3.0020.0008.0405] # CYRILLIC CAPITAL LETTER DZE
-A645 ; [.19E7.0020.0002.A645] # CYRILLIC SMALL LETTER REVERSED DZE
-A644 ; [.19E7.0020.0008.A644] # CYRILLIC CAPITAL LETTER REVERSED DZE
-04E1 ; [.19E8.0020.0002.04E1] # CYRILLIC SMALL LETTER ABKHASIAN DZE
-04E0 ; [.19E8.0020.0008.04E0] # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
-A689 ; [.19EC.0020.0002.A689] # CYRILLIC SMALL LETTER DZZE
-A688 ; [.19EC.0020.0008.A688] # CYRILLIC CAPITAL LETTER DZZE
-0507 ; [.19ED.0020.0002.0507] # CYRILLIC SMALL LETTER KOMI DZJE
-0506 ; [.19ED.0020.0008.0506] # CYRILLIC CAPITAL LETTER KOMI DZJE
-A683 ; [.19EE.0020.0002.A683] # CYRILLIC SMALL LETTER DZWE
-A682 ; [.19EE.0020.0008.A682] # CYRILLIC CAPITAL LETTER DZWE
-0438 ; [.19EF.0020.0002.0438] # CYRILLIC SMALL LETTER I
-A675 ; [.19EF.0020.0004.A675] # COMBINING CYRILLIC LETTER I
-0418 ; [.19EF.0020.0008.0418] # CYRILLIC CAPITAL LETTER I
-045D ; [.19EF.0020.0002.0438][.0000.0035.0002.0300] # CYRILLIC SMALL LETTER I WITH GRAVE
-040D ; [.19EF.0020.0008.0418][.0000.0035.0002.0300] # CYRILLIC CAPITAL LETTER I WITH GRAVE
-04E3 ; [.19EF.0020.0002.0438][.0000.005B.0002.0304] # CYRILLIC SMALL LETTER I WITH MACRON
-04E2 ; [.19EF.0020.0008.0418][.0000.005B.0002.0304] # CYRILLIC CAPITAL LETTER I WITH MACRON
-048B ; [.19F3.0020.0002.048B] # CYRILLIC SMALL LETTER SHORT I WITH TAIL
-048A ; [.19F3.0020.0008.048A] # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
-04E5 ; [.19F7.0020.0002.04E5] # CYRILLIC SMALL LETTER I WITH DIAERESIS
-0438 0308 ; [.19F7.0020.0002.04E5] # CYRILLIC SMALL LETTER I WITH DIAERESIS
-04E4 ; [.19F7.0020.0008.04E4] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-0418 0308 ; [.19F7.0020.0008.04E4] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-0456 ; [.19FB.0020.0002.0456] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0406 ; [.19FB.0020.0008.0406] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-A647 ; [.19FF.0020.0002.A647] # CYRILLIC SMALL LETTER IOTA
-A646 ; [.19FF.0020.0008.A646] # CYRILLIC CAPITAL LETTER IOTA
-0457 ; [.1A00.0020.0002.0457] # CYRILLIC SMALL LETTER YI
-0456 0308 ; [.1A00.0020.0002.0457] # CYRILLIC SMALL LETTER YI
-A676 ; [.1A00.0020.0004.A676] # COMBINING CYRILLIC LETTER YI
-0407 ; [.1A00.0020.0008.0407] # CYRILLIC CAPITAL LETTER YI
-0406 0308 ; [.1A00.0020.0008.0407] # CYRILLIC CAPITAL LETTER YI
-0439 ; [.1A04.0020.0002.0439] # CYRILLIC SMALL LETTER SHORT I
-0438 0306 ; [.1A04.0020.0002.0439] # CYRILLIC SMALL LETTER SHORT I
-0419 ; [.1A04.0020.0008.0419] # CYRILLIC CAPITAL LETTER SHORT I
-0418 0306 ; [.1A04.0020.0008.0419] # CYRILLIC CAPITAL LETTER SHORT I
-0458 ; [.1A08.0020.0002.0458] # CYRILLIC SMALL LETTER JE
-0408 ; [.1A08.0020.0008.0408] # CYRILLIC CAPITAL LETTER JE
-A649 ; [.1A0C.0020.0002.A649] # CYRILLIC SMALL LETTER DJERV
-2DF8 ; [.1A0C.0020.0004.2DF8] # COMBINING CYRILLIC LETTER DJERV
-A648 ; [.1A0C.0020.0008.A648] # CYRILLIC CAPITAL LETTER DJERV
-043A ; [.1A0D.0020.0002.043A] # CYRILLIC SMALL LETTER KA
-2DE6 ; [.1A0D.0020.0004.2DE6] # COMBINING CYRILLIC LETTER KA
-041A ; [.1A0D.0020.0008.041A] # CYRILLIC CAPITAL LETTER KA
-049B ; [.1A11.0020.0002.049B] # CYRILLIC SMALL LETTER KA WITH DESCENDER
-049A ; [.1A11.0020.0008.049A] # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
-04C4 ; [.1A15.0020.0002.04C4] # CYRILLIC SMALL LETTER KA WITH HOOK
-04C3 ; [.1A15.0020.0008.04C3] # CYRILLIC CAPITAL LETTER KA WITH HOOK
-04A1 ; [.1A19.0020.0002.04A1] # CYRILLIC SMALL LETTER BASHKIR KA
-04A0 ; [.1A19.0020.0008.04A0] # CYRILLIC CAPITAL LETTER BASHKIR KA
-049F ; [.1A1D.0020.0002.049F] # CYRILLIC SMALL LETTER KA WITH STROKE
-049E ; [.1A1D.0020.0008.049E] # CYRILLIC CAPITAL LETTER KA WITH STROKE
-049D ; [.1A21.0020.0002.049D] # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
-049C ; [.1A21.0020.0008.049C] # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
-051F ; [.1A25.0020.0002.051F] # CYRILLIC SMALL LETTER ALEUT KA
-051E ; [.1A25.0020.0008.051E] # CYRILLIC CAPITAL LETTER ALEUT KA
-051B ; [.1A26.0020.0002.051B] # CYRILLIC SMALL LETTER QA
-051A ; [.1A26.0020.0008.051A] # CYRILLIC CAPITAL LETTER QA
-043B ; [.1A27.0020.0002.043B] # CYRILLIC SMALL LETTER EL
-2DE7 ; [.1A27.0020.0004.2DE7] # COMBINING CYRILLIC LETTER EL
-041B ; [.1A27.0020.0008.041B] # CYRILLIC CAPITAL LETTER EL
-1D2B ; [.1A2B.0020.0002.1D2B] # CYRILLIC LETTER SMALL CAPITAL EL
-04C6 ; [.1A2C.0020.0002.04C6] # CYRILLIC SMALL LETTER EL WITH TAIL
-04C5 ; [.1A2C.0020.0008.04C5] # CYRILLIC CAPITAL LETTER EL WITH TAIL
-0513 ; [.1A30.0020.0002.0513] # CYRILLIC SMALL LETTER EL WITH HOOK
-0512 ; [.1A30.0020.0008.0512] # CYRILLIC CAPITAL LETTER EL WITH HOOK
-0521 ; [.1A31.0020.0002.0521] # CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK
-0520 ; [.1A31.0020.0008.0520] # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
-0459 ; [.1A32.0020.0002.0459] # CYRILLIC SMALL LETTER LJE
-0409 ; [.1A32.0020.0008.0409] # CYRILLIC CAPITAL LETTER LJE
-A665 ; [.1A36.0020.0002.A665] # CYRILLIC SMALL LETTER SOFT EL
-A664 ; [.1A36.0020.0008.A664] # CYRILLIC CAPITAL LETTER SOFT EL
-0509 ; [.1A37.0020.0002.0509] # CYRILLIC SMALL LETTER KOMI LJE
-0508 ; [.1A37.0020.0008.0508] # CYRILLIC CAPITAL LETTER KOMI LJE
-0515 ; [.1A38.0020.0002.0515] # CYRILLIC SMALL LETTER LHA
-0514 ; [.1A38.0020.0008.0514] # CYRILLIC CAPITAL LETTER LHA
-043C ; [.1A39.0020.0002.043C] # CYRILLIC SMALL LETTER EM
-2DE8 ; [.1A39.0020.0004.2DE8] # COMBINING CYRILLIC LETTER EM
-041C ; [.1A39.0020.0008.041C] # CYRILLIC CAPITAL LETTER EM
-04CE ; [.1A3D.0020.0002.04CE] # CYRILLIC SMALL LETTER EM WITH TAIL
-04CD ; [.1A3D.0020.0008.04CD] # CYRILLIC CAPITAL LETTER EM WITH TAIL
-A667 ; [.1A41.0020.0002.A667] # CYRILLIC SMALL LETTER SOFT EM
-A666 ; [.1A41.0020.0008.A666] # CYRILLIC CAPITAL LETTER SOFT EM
-043D ; [.1A42.0020.0002.043D] # CYRILLIC SMALL LETTER EN
-2DE9 ; [.1A42.0020.0004.2DE9] # COMBINING CYRILLIC LETTER EN
-041D ; [.1A42.0020.0008.041D] # CYRILLIC CAPITAL LETTER EN
-1D78 ; [.1A42.0020.0014.1D78] # MODIFIER LETTER CYRILLIC EN
-04CA ; [.1A46.0020.0002.04CA] # CYRILLIC SMALL LETTER EN WITH TAIL
-04C9 ; [.1A46.0020.0008.04C9] # CYRILLIC CAPITAL LETTER EN WITH TAIL
-04A3 ; [.1A4A.0020.0002.04A3] # CYRILLIC SMALL LETTER EN WITH DESCENDER
-04A2 ; [.1A4A.0020.0008.04A2] # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
-04C8 ; [.1A4E.0020.0002.04C8] # CYRILLIC SMALL LETTER EN WITH HOOK
-04C7 ; [.1A4E.0020.0008.04C7] # CYRILLIC CAPITAL LETTER EN WITH HOOK
-0523 ; [.1A52.0020.0002.0523] # CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
-0522 ; [.1A52.0020.0008.0522] # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
-04A5 ; [.1A53.0020.0002.04A5] # CYRILLIC SMALL LIGATURE EN GHE
-04A4 ; [.1A53.0020.0008.04A4] # CYRILLIC CAPITAL LIGATURE EN GHE
-045A ; [.1A57.0020.0002.045A] # CYRILLIC SMALL LETTER NJE
-040A ; [.1A57.0020.0008.040A] # CYRILLIC CAPITAL LETTER NJE
-050B ; [.1A5B.0020.0002.050B] # CYRILLIC SMALL LETTER KOMI NJE
-050A ; [.1A5B.0020.0008.050A] # CYRILLIC CAPITAL LETTER KOMI NJE
-043E ; [.1A5C.0020.0002.043E] # CYRILLIC SMALL LETTER O
-2DEA ; [.1A5C.0020.0004.2DEA] # COMBINING CYRILLIC LETTER O
-A669 ; [.1A5C.0020.0004.A669] # CYRILLIC SMALL LETTER MONOCULAR O
-A66B ; [.1A5C.0020.0004.A66B] # CYRILLIC SMALL LETTER BINOCULAR O
-A66D ; [.1A5C.0020.0004.A66D] # CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
-A66E ; [.1A5C.0020.0004.A66E] # CYRILLIC LETTER MULTIOCULAR O
-041E ; [.1A5C.0020.0008.041E] # CYRILLIC CAPITAL LETTER O
-A668 ; [.1A5C.0020.000A.A668] # CYRILLIC CAPITAL LETTER MONOCULAR O
-A66A ; [.1A5C.0020.000A.A66A] # CYRILLIC CAPITAL LETTER BINOCULAR O
-A66C ; [.1A5C.0020.000A.A66C] # CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
-04E7 ; [.1A60.0020.0002.04E7] # CYRILLIC SMALL LETTER O WITH DIAERESIS
-043E 0308 ; [.1A60.0020.0002.04E7] # CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E6 ; [.1A60.0020.0008.04E6] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-041E 0308 ; [.1A60.0020.0008.04E6] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04E9 ; [.1A64.0020.0002.04E9] # CYRILLIC SMALL LETTER BARRED O
-04E8 ; [.1A64.0020.0008.04E8] # CYRILLIC CAPITAL LETTER BARRED O
-04EB ; [.1A68.0020.0002.04EB] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04E9 0308 ; [.1A68.0020.0002.04EB] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EA ; [.1A68.0020.0008.04EA] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-04E8 0308 ; [.1A68.0020.0008.04EA] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-043F ; [.1A6C.0020.0002.043F] # CYRILLIC SMALL LETTER PE
-2DEB ; [.1A6C.0020.0004.2DEB] # COMBINING CYRILLIC LETTER PE
-041F ; [.1A6C.0020.0008.041F] # CYRILLIC CAPITAL LETTER PE
-0525 ; [.1A70.0020.0002.0525] # CYRILLIC SMALL LETTER PE WITH DESCENDER
-0524 ; [.1A70.0020.0008.0524] # CYRILLIC CAPITAL LETTER PE WITH DESCENDER
-04A7 ; [.1A71.0020.0002.04A7] # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
-04A6 ; [.1A71.0020.0008.04A6] # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
-0481 ; [.1A75.0020.0002.0481] # CYRILLIC SMALL LETTER KOPPA
-0480 ; [.1A75.0020.0008.0480] # CYRILLIC CAPITAL LETTER KOPPA
-0440 ; [.1A79.0020.0002.0440] # CYRILLIC SMALL LETTER ER
-2DEC ; [.1A79.0020.0004.2DEC] # COMBINING CYRILLIC LETTER ER
-0420 ; [.1A79.0020.0008.0420] # CYRILLIC CAPITAL LETTER ER
-048F ; [.1A7D.0020.0002.048F] # CYRILLIC SMALL LETTER ER WITH TICK
-048E ; [.1A7D.0020.0008.048E] # CYRILLIC CAPITAL LETTER ER WITH TICK
-0517 ; [.1A81.0020.0002.0517] # CYRILLIC SMALL LETTER RHA
-0516 ; [.1A81.0020.0008.0516] # CYRILLIC CAPITAL LETTER RHA
-0441 ; [.1A82.0020.0002.0441] # CYRILLIC SMALL LETTER ES
-2DED ; [.1A82.0020.0004.2DED] # COMBINING CYRILLIC LETTER ES
-0421 ; [.1A82.0020.0008.0421] # CYRILLIC CAPITAL LETTER ES
-2DF5 ; [.1A82.0020.0004.2DF5][.1A8B.0020.0004.2DF5] # COMBINING CYRILLIC LETTER ES-TE
-050D ; [.1A86.0020.0002.050D] # CYRILLIC SMALL LETTER KOMI SJE
-050C ; [.1A86.0020.0008.050C] # CYRILLIC CAPITAL LETTER KOMI SJE
-04AB ; [.1A87.0020.0002.04AB] # CYRILLIC SMALL LETTER ES WITH DESCENDER
-04AA ; [.1A87.0020.0008.04AA] # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
-0442 ; [.1A8B.0020.0002.0442] # CYRILLIC SMALL LETTER TE
-2DEE ; [.1A8B.0020.0004.2DEE] # COMBINING CYRILLIC LETTER TE
-0422 ; [.1A8B.0020.0008.0422] # CYRILLIC CAPITAL LETTER TE
-A68D ; [.1A8F.0020.0002.A68D] # CYRILLIC SMALL LETTER TWE
-A68C ; [.1A8F.0020.0008.A68C] # CYRILLIC CAPITAL LETTER TWE
-050F ; [.1A90.0020.0002.050F] # CYRILLIC SMALL LETTER KOMI TJE
-050E ; [.1A90.0020.0008.050E] # CYRILLIC CAPITAL LETTER KOMI TJE
-04AD ; [.1A91.0020.0002.04AD] # CYRILLIC SMALL LETTER TE WITH DESCENDER
-04AC ; [.1A91.0020.0008.04AC] # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
-A68B ; [.1A95.0020.0002.A68B] # CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK
-A68A ; [.1A95.0020.0008.A68A] # CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
-045B ; [.1A96.0020.0002.045B] # CYRILLIC SMALL LETTER TSHE
-040B ; [.1A96.0020.0008.040B] # CYRILLIC CAPITAL LETTER TSHE
-045C ; [.1A9A.0020.0002.045C] # CYRILLIC SMALL LETTER KJE
-043A 0301 ; [.1A9A.0020.0002.045C] # CYRILLIC SMALL LETTER KJE
-043A 0341 ; [.1A9A.0020.0002.045C] # CYRILLIC SMALL LETTER KJE
-040C ; [.1A9A.0020.0008.040C] # CYRILLIC CAPITAL LETTER KJE
-041A 0301 ; [.1A9A.0020.0008.040C] # CYRILLIC CAPITAL LETTER KJE
-041A 0341 ; [.1A9A.0020.0008.040C] # CYRILLIC CAPITAL LETTER KJE
-0443 ; [.1A9E.0020.0002.0443] # CYRILLIC SMALL LETTER U
-A677 ; [.1A9E.0020.0004.A677] # COMBINING CYRILLIC LETTER U
-0423 ; [.1A9E.0020.0008.0423] # CYRILLIC CAPITAL LETTER U
-04EF ; [.1A9E.0020.0002.0443][.0000.005B.0002.0304] # CYRILLIC SMALL LETTER U WITH MACRON
-04EE ; [.1A9E.0020.0008.0423][.0000.005B.0002.0304] # CYRILLIC CAPITAL LETTER U WITH MACRON
-045E ; [.1AA2.0020.0002.045E] # CYRILLIC SMALL LETTER SHORT U
-0443 0306 ; [.1AA2.0020.0002.045E] # CYRILLIC SMALL LETTER SHORT U
-040E ; [.1AA2.0020.0008.040E] # CYRILLIC CAPITAL LETTER SHORT U
-0423 0306 ; [.1AA2.0020.0008.040E] # CYRILLIC CAPITAL LETTER SHORT U
-04F1 ; [.1AA6.0020.0002.04F1] # CYRILLIC SMALL LETTER U WITH DIAERESIS
-0443 0308 ; [.1AA6.0020.0002.04F1] # CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F0 ; [.1AA6.0020.0008.04F0] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-0423 0308 ; [.1AA6.0020.0008.04F0] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F3 ; [.1AAA.0020.0002.04F3] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-0443 030B ; [.1AAA.0020.0002.04F3] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F2 ; [.1AAA.0020.0008.04F2] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-0423 030B ; [.1AAA.0020.0008.04F2] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04AF ; [.1AAE.0020.0002.04AF] # CYRILLIC SMALL LETTER STRAIGHT U
-04AE ; [.1AAE.0020.0008.04AE] # CYRILLIC CAPITAL LETTER STRAIGHT U
-04B1 ; [.1AB2.0020.0002.04B1] # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
-04B0 ; [.1AB2.0020.0008.04B0] # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
-A64B ; [.1AB6.0020.0002.A64B] # CYRILLIC SMALL LETTER MONOGRAPH UK
-2DF9 ; [.1AB6.0020.0004.2DF9] # COMBINING CYRILLIC LETTER MONOGRAPH UK
-A64A ; [.1AB6.0020.0008.A64A] # CYRILLIC CAPITAL LETTER MONOGRAPH UK
-0479 ; [.1AB7.0020.0002.0479] # CYRILLIC SMALL LETTER UK
-0478 ; [.1AB7.0020.0008.0478] # CYRILLIC CAPITAL LETTER UK
-0444 ; [.1ABB.0020.0002.0444] # CYRILLIC SMALL LETTER EF
-0424 ; [.1ABB.0020.0008.0424] # CYRILLIC CAPITAL LETTER EF
-0445 ; [.1ABF.0020.0002.0445] # CYRILLIC SMALL LETTER HA
-2DEF ; [.1ABF.0020.0004.2DEF] # COMBINING CYRILLIC LETTER HA
-0425 ; [.1ABF.0020.0008.0425] # CYRILLIC CAPITAL LETTER HA
-04FD ; [.1AC3.0020.0002.04FD] # CYRILLIC SMALL LETTER HA WITH HOOK
-04FC ; [.1AC3.0020.0008.04FC] # CYRILLIC CAPITAL LETTER HA WITH HOOK
-04FF ; [.1AC7.0020.0002.04FF] # CYRILLIC SMALL LETTER HA WITH STROKE
-04FE ; [.1AC7.0020.0008.04FE] # CYRILLIC CAPITAL LETTER HA WITH STROKE
-04B3 ; [.1ACB.0020.0002.04B3] # CYRILLIC SMALL LETTER HA WITH DESCENDER
-04B2 ; [.1ACB.0020.0008.04B2] # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
-04BB ; [.1ACF.0020.0002.04BB] # CYRILLIC SMALL LETTER SHHA
-04BA ; [.1ACF.0020.0008.04BA] # CYRILLIC CAPITAL LETTER SHHA
-0527 ; [.1AD3.0020.0002.0527] # CYRILLIC SMALL LETTER SHHA WITH DESCENDER
-0526 ; [.1AD3.0020.0008.0526] # CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
-A695 ; [.1AD4.0020.0002.A695] # CYRILLIC SMALL LETTER HWE
-A694 ; [.1AD4.0020.0008.A694] # CYRILLIC CAPITAL LETTER HWE
-0461 ; [.1AD5.0020.0002.0461] # CYRILLIC SMALL LETTER OMEGA
-A67B ; [.1AD5.0020.0004.A67B] # COMBINING CYRILLIC LETTER OMEGA
-0460 ; [.1AD5.0020.0008.0460] # CYRILLIC CAPITAL LETTER OMEGA
-047F ; [.1AD9.0020.0002.047F] # CYRILLIC SMALL LETTER OT
-047E ; [.1AD9.0020.0008.047E] # CYRILLIC CAPITAL LETTER OT
-A64D ; [.1ADD.0020.0002.A64D] # CYRILLIC SMALL LETTER BROAD OMEGA
-A64C ; [.1ADD.0020.0008.A64C] # CYRILLIC CAPITAL LETTER BROAD OMEGA
-047D ; [.1ADE.0020.0002.047D] # CYRILLIC SMALL LETTER OMEGA WITH TITLO
-047C ; [.1ADE.0020.0008.047C] # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
-047B ; [.1AE2.0020.0002.047B] # CYRILLIC SMALL LETTER ROUND OMEGA
-047A ; [.1AE2.0020.0008.047A] # CYRILLIC CAPITAL LETTER ROUND OMEGA
-0446 ; [.1AE6.0020.0002.0446] # CYRILLIC SMALL LETTER TSE
-2DF0 ; [.1AE6.0020.0004.2DF0] # COMBINING CYRILLIC LETTER TSE
-0426 ; [.1AE6.0020.0008.0426] # CYRILLIC CAPITAL LETTER TSE
-A661 ; [.1AEA.0020.0002.A661] # CYRILLIC SMALL LETTER REVERSED TSE
-A660 ; [.1AEA.0020.0008.A660] # CYRILLIC CAPITAL LETTER REVERSED TSE
-A68F ; [.1AEB.0020.0002.A68F] # CYRILLIC SMALL LETTER TSWE
-A68E ; [.1AEB.0020.0008.A68E] # CYRILLIC CAPITAL LETTER TSWE
-04B5 ; [.1AEC.0020.0002.04B5] # CYRILLIC SMALL LIGATURE TE TSE
-04B4 ; [.1AEC.0020.0008.04B4] # CYRILLIC CAPITAL LIGATURE TE TSE
-A691 ; [.1AF0.0020.0002.A691] # CYRILLIC SMALL LETTER TSSE
-A690 ; [.1AF0.0020.0008.A690] # CYRILLIC CAPITAL LETTER TSSE
-0447 ; [.1AF1.0020.0002.0447] # CYRILLIC SMALL LETTER CHE
-2DF1 ; [.1AF1.0020.0004.2DF1] # COMBINING CYRILLIC LETTER CHE
-0427 ; [.1AF1.0020.0008.0427] # CYRILLIC CAPITAL LETTER CHE
-A693 ; [.1AF5.0020.0002.A693] # CYRILLIC SMALL LETTER TCHE
-A692 ; [.1AF5.0020.0008.A692] # CYRILLIC CAPITAL LETTER TCHE
-04F5 ; [.1AF6.0020.0002.04F5] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-0447 0308 ; [.1AF6.0020.0002.04F5] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F4 ; [.1AF6.0020.0008.04F4] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-0427 0308 ; [.1AF6.0020.0008.04F4] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04B7 ; [.1AFA.0020.0002.04B7] # CYRILLIC SMALL LETTER CHE WITH DESCENDER
-04B6 ; [.1AFA.0020.0008.04B6] # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
-04CC ; [.1AFE.0020.0002.04CC] # CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04CB ; [.1AFE.0020.0008.04CB] # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04B9 ; [.1B02.0020.0002.04B9] # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
-04B8 ; [.1B02.0020.0008.04B8] # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
-A687 ; [.1B06.0020.0002.A687] # CYRILLIC SMALL LETTER CCHE
-A686 ; [.1B06.0020.0008.A686] # CYRILLIC CAPITAL LETTER CCHE
-04BD ; [.1B07.0020.0002.04BD] # CYRILLIC SMALL LETTER ABKHASIAN CHE
-04BC ; [.1B07.0020.0008.04BC] # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
-04BF ; [.1B0B.0020.0002.04BF] # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
-04BE ; [.1B0B.0020.0008.04BE] # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
-045F ; [.1B0F.0020.0002.045F] # CYRILLIC SMALL LETTER DZHE
-040F ; [.1B0F.0020.0008.040F] # CYRILLIC CAPITAL LETTER DZHE
-0448 ; [.1B13.0020.0002.0448] # CYRILLIC SMALL LETTER SHA
-2DF2 ; [.1B13.0020.0004.2DF2] # COMBINING CYRILLIC LETTER SHA
-0428 ; [.1B13.0020.0008.0428] # CYRILLIC CAPITAL LETTER SHA
-A697 ; [.1B17.0020.0002.A697] # CYRILLIC SMALL LETTER SHWE
-A696 ; [.1B17.0020.0008.A696] # CYRILLIC CAPITAL LETTER SHWE
-0449 ; [.1B18.0020.0002.0449] # CYRILLIC SMALL LETTER SHCHA
-2DF3 ; [.1B18.0020.0004.2DF3] # COMBINING CYRILLIC LETTER SHCHA
-0429 ; [.1B18.0020.0008.0429] # CYRILLIC CAPITAL LETTER SHCHA
-A64F ; [.1B1C.0020.0002.A64F] # CYRILLIC SMALL LETTER NEUTRAL YER
-A64E ; [.1B1C.0020.0008.A64E] # CYRILLIC CAPITAL LETTER NEUTRAL YER
-2E2F ; [.1B1D.0020.0002.2E2F] # VERTICAL TILDE
-A67F ; [.1B1E.0020.0002.A67F] # CYRILLIC PAYEROK
-044A ; [.1B1F.0020.0002.044A] # CYRILLIC SMALL LETTER HARD SIGN
-A678 ; [.1B1F.0020.0004.A678] # COMBINING CYRILLIC LETTER HARD SIGN
-042A ; [.1B1F.0020.0008.042A] # CYRILLIC CAPITAL LETTER HARD SIGN
-A651 ; [.1B23.0020.0002.A651] # CYRILLIC SMALL LETTER YERU WITH BACK YER
-A650 ; [.1B23.0020.0008.A650] # CYRILLIC CAPITAL LETTER YERU WITH BACK YER
-044B ; [.1B24.0020.0002.044B] # CYRILLIC SMALL LETTER YERU
-A679 ; [.1B24.0020.0004.A679] # COMBINING CYRILLIC LETTER YERU
-042B ; [.1B24.0020.0008.042B] # CYRILLIC CAPITAL LETTER YERU
-04F9 ; [.1B28.0020.0002.04F9] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-044B 0308 ; [.1B28.0020.0002.04F9] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-04F8 ; [.1B28.0020.0008.04F8] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-042B 0308 ; [.1B28.0020.0008.04F8] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-044C ; [.1B2C.0020.0002.044C] # CYRILLIC SMALL LETTER SOFT SIGN
-A67A ; [.1B2C.0020.0004.A67A] # COMBINING CYRILLIC LETTER SOFT SIGN
-042C ; [.1B2C.0020.0008.042C] # CYRILLIC CAPITAL LETTER SOFT SIGN
-048D ; [.1B30.0020.0002.048D] # CYRILLIC SMALL LETTER SEMISOFT SIGN
-048C ; [.1B30.0020.0008.048C] # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-0463 ; [.1B34.0020.0002.0463] # CYRILLIC SMALL LETTER YAT
-2DFA ; [.1B34.0020.0004.2DFA] # COMBINING CYRILLIC LETTER YAT
-0462 ; [.1B34.0020.0008.0462] # CYRILLIC CAPITAL LETTER YAT
-A653 ; [.1B38.0020.0002.A653] # CYRILLIC SMALL LETTER IOTIFIED YAT
-A652 ; [.1B38.0020.0008.A652] # CYRILLIC CAPITAL LETTER IOTIFIED YAT
-044D ; [.1B39.0020.0002.044D] # CYRILLIC SMALL LETTER E
-042D ; [.1B39.0020.0008.042D] # CYRILLIC CAPITAL LETTER E
-04ED ; [.1B3D.0020.0002.04ED] # CYRILLIC SMALL LETTER E WITH DIAERESIS
-044D 0308 ; [.1B3D.0020.0002.04ED] # CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EC ; [.1B3D.0020.0008.04EC] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-042D 0308 ; [.1B3D.0020.0008.04EC] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-044E ; [.1B41.0020.0002.044E] # CYRILLIC SMALL LETTER YU
-2DFB ; [.1B41.0020.0004.2DFB] # COMBINING CYRILLIC LETTER YU
-042E ; [.1B41.0020.0008.042E] # CYRILLIC CAPITAL LETTER YU
-A655 ; [.1B45.0020.0002.A655] # CYRILLIC SMALL LETTER REVERSED YU
-A654 ; [.1B45.0020.0008.A654] # CYRILLIC CAPITAL LETTER REVERSED YU
-A657 ; [.1B46.0020.0002.A657] # CYRILLIC SMALL LETTER IOTIFIED A
-2DFC ; [.1B46.0020.0004.2DFC] # COMBINING CYRILLIC LETTER IOTIFIED A
-A656 ; [.1B46.0020.0008.A656] # CYRILLIC CAPITAL LETTER IOTIFIED A
-044F ; [.1B47.0020.0002.044F] # CYRILLIC SMALL LETTER YA
-042F ; [.1B47.0020.0008.042F] # CYRILLIC CAPITAL LETTER YA
-0519 ; [.1B4B.0020.0002.0519] # CYRILLIC SMALL LETTER YAE
-0518 ; [.1B4B.0020.0008.0518] # CYRILLIC CAPITAL LETTER YAE
-0465 ; [.1B4C.0020.0002.0465] # CYRILLIC SMALL LETTER IOTIFIED E
-A69F ; [.1B4C.0020.0004.A69F] # COMBINING CYRILLIC LETTER IOTIFIED E
-0464 ; [.1B4C.0020.0008.0464] # CYRILLIC CAPITAL LETTER IOTIFIED E
-0467 ; [.1B50.0020.0002.0467] # CYRILLIC SMALL LETTER LITTLE YUS
-2DFD ; [.1B50.0020.0004.2DFD] # COMBINING CYRILLIC LETTER LITTLE YUS
-0466 ; [.1B50.0020.0008.0466] # CYRILLIC CAPITAL LETTER LITTLE YUS
-A659 ; [.1B54.0020.0002.A659] # CYRILLIC SMALL LETTER CLOSED LITTLE YUS
-A658 ; [.1B54.0020.0008.A658] # CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
-046B ; [.1B55.0020.0002.046B] # CYRILLIC SMALL LETTER BIG YUS
-2DFE ; [.1B55.0020.0004.2DFE] # COMBINING CYRILLIC LETTER BIG YUS
-046A ; [.1B55.0020.0008.046A] # CYRILLIC CAPITAL LETTER BIG YUS
-A65B ; [.1B59.0020.0002.A65B] # CYRILLIC SMALL LETTER BLENDED YUS
-A65A ; [.1B59.0020.0008.A65A] # CYRILLIC CAPITAL LETTER BLENDED YUS
-0469 ; [.1B5A.0020.0002.0469] # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
-0468 ; [.1B5A.0020.0008.0468] # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
-A65D ; [.1B5E.0020.0002.A65D] # CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS
-A65C ; [.1B5E.0020.0008.A65C] # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
-046D ; [.1B5F.0020.0002.046D] # CYRILLIC SMALL LETTER IOTIFIED BIG YUS
-2DFF ; [.1B5F.0020.0004.2DFF] # COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
-046C ; [.1B5F.0020.0008.046C] # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
-046F ; [.1B63.0020.0002.046F] # CYRILLIC SMALL LETTER KSI
-046E ; [.1B63.0020.0008.046E] # CYRILLIC CAPITAL LETTER KSI
-0471 ; [.1B67.0020.0002.0471] # CYRILLIC SMALL LETTER PSI
-0470 ; [.1B67.0020.0008.0470] # CYRILLIC CAPITAL LETTER PSI
-0473 ; [.1B6B.0020.0002.0473] # CYRILLIC SMALL LETTER FITA
-2DF4 ; [.1B6B.0020.0004.2DF4] # COMBINING CYRILLIC LETTER FITA
-0472 ; [.1B6B.0020.0008.0472] # CYRILLIC CAPITAL LETTER FITA
-0475 ; [.1B6F.0020.0002.0475] # CYRILLIC SMALL LETTER IZHITSA
-0474 ; [.1B6F.0020.0008.0474] # CYRILLIC CAPITAL LETTER IZHITSA
-0477 ; [.1B73.0020.0002.0477] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0475 030F ; [.1B73.0020.0002.0477] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0476 ; [.1B73.0020.0008.0476] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0474 030F ; [.1B73.0020.0008.0476] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-A65F ; [.1B77.0020.0002.A65F] # CYRILLIC SMALL LETTER YN
-A65E ; [.1B77.0020.0008.A65E] # CYRILLIC CAPITAL LETTER YN
-04A9 ; [.1B78.0020.0002.04A9] # CYRILLIC SMALL LETTER ABKHASIAN HA
-04A8 ; [.1B78.0020.0008.04A8] # CYRILLIC CAPITAL LETTER ABKHASIAN HA
-051D ; [.1B7C.0020.0002.051D] # CYRILLIC SMALL LETTER WE
-051C ; [.1B7C.0020.0008.051C] # CYRILLIC CAPITAL LETTER WE
-04CF ; [.1B7D.0020.0002.04CF] # CYRILLIC SMALL LETTER PALOCHKA
-04C0 ; [.1B7D.0020.0008.04C0] # CYRILLIC LETTER PALOCHKA
-2C30 ; [.1B81.0020.0002.2C30] # GLAGOLITIC SMALL LETTER AZU
-2C00 ; [.1B81.0020.0008.2C00] # GLAGOLITIC CAPITAL LETTER AZU
-2C31 ; [.1B82.0020.0002.2C31] # GLAGOLITIC SMALL LETTER BUKY
-2C01 ; [.1B82.0020.0008.2C01] # GLAGOLITIC CAPITAL LETTER BUKY
-2C32 ; [.1B83.0020.0002.2C32] # GLAGOLITIC SMALL LETTER VEDE
-2C02 ; [.1B83.0020.0008.2C02] # GLAGOLITIC CAPITAL LETTER VEDE
-2C33 ; [.1B84.0020.0002.2C33] # GLAGOLITIC SMALL LETTER GLAGOLI
-2C03 ; [.1B84.0020.0008.2C03] # GLAGOLITIC CAPITAL LETTER GLAGOLI
-2C34 ; [.1B85.0020.0002.2C34] # GLAGOLITIC SMALL LETTER DOBRO
-2C04 ; [.1B85.0020.0008.2C04] # GLAGOLITIC CAPITAL LETTER DOBRO
-2C35 ; [.1B86.0020.0002.2C35] # GLAGOLITIC SMALL LETTER YESTU
-2C05 ; [.1B86.0020.0008.2C05] # GLAGOLITIC CAPITAL LETTER YESTU
-2C36 ; [.1B87.0020.0002.2C36] # GLAGOLITIC SMALL LETTER ZHIVETE
-2C06 ; [.1B87.0020.0008.2C06] # GLAGOLITIC CAPITAL LETTER ZHIVETE
-2C37 ; [.1B88.0020.0002.2C37] # GLAGOLITIC SMALL LETTER DZELO
-2C07 ; [.1B88.0020.0008.2C07] # GLAGOLITIC CAPITAL LETTER DZELO
-2C38 ; [.1B89.0020.0002.2C38] # GLAGOLITIC SMALL LETTER ZEMLJA
-2C08 ; [.1B89.0020.0008.2C08] # GLAGOLITIC CAPITAL LETTER ZEMLJA
-2C39 ; [.1B8A.0020.0002.2C39] # GLAGOLITIC SMALL LETTER IZHE
-2C09 ; [.1B8A.0020.0008.2C09] # GLAGOLITIC CAPITAL LETTER IZHE
-2C3A ; [.1B8B.0020.0002.2C3A] # GLAGOLITIC SMALL LETTER INITIAL IZHE
-2C0A ; [.1B8B.0020.0008.2C0A] # GLAGOLITIC CAPITAL LETTER INITIAL IZHE
-2C3B ; [.1B8C.0020.0002.2C3B] # GLAGOLITIC SMALL LETTER I
-2C0B ; [.1B8C.0020.0008.2C0B] # GLAGOLITIC CAPITAL LETTER I
-2C3C ; [.1B8D.0020.0002.2C3C] # GLAGOLITIC SMALL LETTER DJERVI
-2C0C ; [.1B8D.0020.0008.2C0C] # GLAGOLITIC CAPITAL LETTER DJERVI
-2C3D ; [.1B8E.0020.0002.2C3D] # GLAGOLITIC SMALL LETTER KAKO
-2C0D ; [.1B8E.0020.0008.2C0D] # GLAGOLITIC CAPITAL LETTER KAKO
-2C3E ; [.1B8F.0020.0002.2C3E] # GLAGOLITIC SMALL LETTER LJUDIJE
-2C0E ; [.1B8F.0020.0008.2C0E] # GLAGOLITIC CAPITAL LETTER LJUDIJE
-2C3F ; [.1B90.0020.0002.2C3F] # GLAGOLITIC SMALL LETTER MYSLITE
-2C0F ; [.1B90.0020.0008.2C0F] # GLAGOLITIC CAPITAL LETTER MYSLITE
-2C40 ; [.1B91.0020.0002.2C40] # GLAGOLITIC SMALL LETTER NASHI
-2C10 ; [.1B91.0020.0008.2C10] # GLAGOLITIC CAPITAL LETTER NASHI
-2C41 ; [.1B92.0020.0002.2C41] # GLAGOLITIC SMALL LETTER ONU
-2C11 ; [.1B92.0020.0008.2C11] # GLAGOLITIC CAPITAL LETTER ONU
-2C42 ; [.1B93.0020.0002.2C42] # GLAGOLITIC SMALL LETTER POKOJI
-2C12 ; [.1B93.0020.0008.2C12] # GLAGOLITIC CAPITAL LETTER POKOJI
-2C43 ; [.1B94.0020.0002.2C43] # GLAGOLITIC SMALL LETTER RITSI
-2C13 ; [.1B94.0020.0008.2C13] # GLAGOLITIC CAPITAL LETTER RITSI
-2C44 ; [.1B95.0020.0002.2C44] # GLAGOLITIC SMALL LETTER SLOVO
-2C14 ; [.1B95.0020.0008.2C14] # GLAGOLITIC CAPITAL LETTER SLOVO
-2C45 ; [.1B96.0020.0002.2C45] # GLAGOLITIC SMALL LETTER TVRIDO
-2C15 ; [.1B96.0020.0008.2C15] # GLAGOLITIC CAPITAL LETTER TVRIDO
-2C46 ; [.1B97.0020.0002.2C46] # GLAGOLITIC SMALL LETTER UKU
-2C16 ; [.1B97.0020.0008.2C16] # GLAGOLITIC CAPITAL LETTER UKU
-2C47 ; [.1B98.0020.0002.2C47] # GLAGOLITIC SMALL LETTER FRITU
-2C17 ; [.1B98.0020.0008.2C17] # GLAGOLITIC CAPITAL LETTER FRITU
-2C48 ; [.1B99.0020.0002.2C48] # GLAGOLITIC SMALL LETTER HERU
-2C18 ; [.1B99.0020.0008.2C18] # GLAGOLITIC CAPITAL LETTER HERU
-2C49 ; [.1B9A.0020.0002.2C49] # GLAGOLITIC SMALL LETTER OTU
-2C19 ; [.1B9A.0020.0008.2C19] # GLAGOLITIC CAPITAL LETTER OTU
-2C4A ; [.1B9B.0020.0002.2C4A] # GLAGOLITIC SMALL LETTER PE
-2C1A ; [.1B9B.0020.0008.2C1A] # GLAGOLITIC CAPITAL LETTER PE
-2C4B ; [.1B9C.0020.0002.2C4B] # GLAGOLITIC SMALL LETTER SHTA
-2C1B ; [.1B9C.0020.0008.2C1B] # GLAGOLITIC CAPITAL LETTER SHTA
-2C4C ; [.1B9D.0020.0002.2C4C] # GLAGOLITIC SMALL LETTER TSI
-2C1C ; [.1B9D.0020.0008.2C1C] # GLAGOLITIC CAPITAL LETTER TSI
-2C4D ; [.1B9E.0020.0002.2C4D] # GLAGOLITIC SMALL LETTER CHRIVI
-2C1D ; [.1B9E.0020.0008.2C1D] # GLAGOLITIC CAPITAL LETTER CHRIVI
-2C4E ; [.1B9F.0020.0002.2C4E] # GLAGOLITIC SMALL LETTER SHA
-2C1E ; [.1B9F.0020.0008.2C1E] # GLAGOLITIC CAPITAL LETTER SHA
-2C4F ; [.1BA0.0020.0002.2C4F] # GLAGOLITIC SMALL LETTER YERU
-2C1F ; [.1BA0.0020.0008.2C1F] # GLAGOLITIC CAPITAL LETTER YERU
-2C50 ; [.1BA1.0020.0002.2C50] # GLAGOLITIC SMALL LETTER YERI
-2C20 ; [.1BA1.0020.0008.2C20] # GLAGOLITIC CAPITAL LETTER YERI
-2C51 ; [.1BA2.0020.0002.2C51] # GLAGOLITIC SMALL LETTER YATI
-2C21 ; [.1BA2.0020.0008.2C21] # GLAGOLITIC CAPITAL LETTER YATI
-2C52 ; [.1BA3.0020.0002.2C52] # GLAGOLITIC SMALL LETTER SPIDERY HA
-2C22 ; [.1BA3.0020.0008.2C22] # GLAGOLITIC CAPITAL LETTER SPIDERY HA
-2C53 ; [.1BA4.0020.0002.2C53] # GLAGOLITIC SMALL LETTER YU
-2C23 ; [.1BA4.0020.0008.2C23] # GLAGOLITIC CAPITAL LETTER YU
-2C54 ; [.1BA5.0020.0002.2C54] # GLAGOLITIC SMALL LETTER SMALL YUS
-2C24 ; [.1BA5.0020.0008.2C24] # GLAGOLITIC CAPITAL LETTER SMALL YUS
-2C55 ; [.1BA6.0020.0002.2C55] # GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL
-2C25 ; [.1BA6.0020.0008.2C25] # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
-2C56 ; [.1BA7.0020.0002.2C56] # GLAGOLITIC SMALL LETTER YO
-2C26 ; [.1BA7.0020.0008.2C26] # GLAGOLITIC CAPITAL LETTER YO
-2C57 ; [.1BA8.0020.0002.2C57] # GLAGOLITIC SMALL LETTER IOTATED SMALL YUS
-2C27 ; [.1BA8.0020.0008.2C27] # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
-2C58 ; [.1BA9.0020.0002.2C58] # GLAGOLITIC SMALL LETTER BIG YUS
-2C28 ; [.1BA9.0020.0008.2C28] # GLAGOLITIC CAPITAL LETTER BIG YUS
-2C59 ; [.1BAA.0020.0002.2C59] # GLAGOLITIC SMALL LETTER IOTATED BIG YUS
-2C29 ; [.1BAA.0020.0008.2C29] # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
-2C5A ; [.1BAB.0020.0002.2C5A] # GLAGOLITIC SMALL LETTER FITA
-2C2A ; [.1BAB.0020.0008.2C2A] # GLAGOLITIC CAPITAL LETTER FITA
-2C5B ; [.1BAC.0020.0002.2C5B] # GLAGOLITIC SMALL LETTER IZHITSA
-2C2B ; [.1BAC.0020.0008.2C2B] # GLAGOLITIC CAPITAL LETTER IZHITSA
-2C5C ; [.1BAD.0020.0002.2C5C] # GLAGOLITIC SMALL LETTER SHTAPIC
-2C2C ; [.1BAD.0020.0008.2C2C] # GLAGOLITIC CAPITAL LETTER SHTAPIC
-2C5D ; [.1BAE.0020.0002.2C5D] # GLAGOLITIC SMALL LETTER TROKUTASTI A
-2C2D ; [.1BAE.0020.0008.2C2D] # GLAGOLITIC CAPITAL LETTER TROKUTASTI A
-2C5E ; [.1BAF.0020.0002.2C5E] # GLAGOLITIC SMALL LETTER LATINATE MYSLITE
-2C2E ; [.1BAF.0020.0008.2C2E] # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
-10D0 ; [.1BB0.0020.0002.10D0] # GEORGIAN LETTER AN
-2D00 ; [.1BB1.0020.0002.2D00] # GEORGIAN SMALL LETTER AN
-10A0 ; [.1BB1.0020.0008.10A0] # GEORGIAN CAPITAL LETTER AN
-10D1 ; [.1BB2.0020.0002.10D1] # GEORGIAN LETTER BAN
-2D01 ; [.1BB3.0020.0002.2D01] # GEORGIAN SMALL LETTER BAN
-10A1 ; [.1BB3.0020.0008.10A1] # GEORGIAN CAPITAL LETTER BAN
-10D2 ; [.1BB4.0020.0002.10D2] # GEORGIAN LETTER GAN
-2D02 ; [.1BB5.0020.0002.2D02] # GEORGIAN SMALL LETTER GAN
-10A2 ; [.1BB5.0020.0008.10A2] # GEORGIAN CAPITAL LETTER GAN
-10D3 ; [.1BB6.0020.0002.10D3] # GEORGIAN LETTER DON
-2D03 ; [.1BB7.0020.0002.2D03] # GEORGIAN SMALL LETTER DON
-10A3 ; [.1BB7.0020.0008.10A3] # GEORGIAN CAPITAL LETTER DON
-10D4 ; [.1BB8.0020.0002.10D4] # GEORGIAN LETTER EN
-2D04 ; [.1BB9.0020.0002.2D04] # GEORGIAN SMALL LETTER EN
-10A4 ; [.1BB9.0020.0008.10A4] # GEORGIAN CAPITAL LETTER EN
-10D5 ; [.1BBA.0020.0002.10D5] # GEORGIAN LETTER VIN
-2D05 ; [.1BBB.0020.0002.2D05] # GEORGIAN SMALL LETTER VIN
-10A5 ; [.1BBB.0020.0008.10A5] # GEORGIAN CAPITAL LETTER VIN
-10D6 ; [.1BBC.0020.0002.10D6] # GEORGIAN LETTER ZEN
-2D06 ; [.1BBD.0020.0002.2D06] # GEORGIAN SMALL LETTER ZEN
-10A6 ; [.1BBD.0020.0008.10A6] # GEORGIAN CAPITAL LETTER ZEN
-10F1 ; [.1BBE.0020.0002.10F1] # GEORGIAN LETTER HE
-2D21 ; [.1BBF.0020.0002.2D21] # GEORGIAN SMALL LETTER HE
-10C1 ; [.1BBF.0020.0008.10C1] # GEORGIAN CAPITAL LETTER HE
-10D7 ; [.1BC0.0020.0002.10D7] # GEORGIAN LETTER TAN
-2D07 ; [.1BC1.0020.0002.2D07] # GEORGIAN SMALL LETTER TAN
-10A7 ; [.1BC1.0020.0008.10A7] # GEORGIAN CAPITAL LETTER TAN
-10D8 ; [.1BC2.0020.0002.10D8] # GEORGIAN LETTER IN
-2D08 ; [.1BC3.0020.0002.2D08] # GEORGIAN SMALL LETTER IN
-10A8 ; [.1BC3.0020.0008.10A8] # GEORGIAN CAPITAL LETTER IN
-10D9 ; [.1BC4.0020.0002.10D9] # GEORGIAN LETTER KAN
-2D09 ; [.1BC5.0020.0002.2D09] # GEORGIAN SMALL LETTER KAN
-10A9 ; [.1BC5.0020.0008.10A9] # GEORGIAN CAPITAL LETTER KAN
-10DA ; [.1BC6.0020.0002.10DA] # GEORGIAN LETTER LAS
-2D0A ; [.1BC7.0020.0002.2D0A] # GEORGIAN SMALL LETTER LAS
-10AA ; [.1BC7.0020.0008.10AA] # GEORGIAN CAPITAL LETTER LAS
-10DB ; [.1BC8.0020.0002.10DB] # GEORGIAN LETTER MAN
-2D0B ; [.1BC9.0020.0002.2D0B] # GEORGIAN SMALL LETTER MAN
-10AB ; [.1BC9.0020.0008.10AB] # GEORGIAN CAPITAL LETTER MAN
-10DC ; [.1BCA.0020.0002.10DC] # GEORGIAN LETTER NAR
-10FC ; [.1BCA.0020.0014.10FC] # MODIFIER LETTER GEORGIAN NAR
-2D0C ; [.1BCB.0020.0002.2D0C] # GEORGIAN SMALL LETTER NAR
-10AC ; [.1BCB.0020.0008.10AC] # GEORGIAN CAPITAL LETTER NAR
-10F2 ; [.1BCC.0020.0002.10F2] # GEORGIAN LETTER HIE
-2D22 ; [.1BCD.0020.0002.2D22] # GEORGIAN SMALL LETTER HIE
-10C2 ; [.1BCD.0020.0008.10C2] # GEORGIAN CAPITAL LETTER HIE
-10DD ; [.1BCE.0020.0002.10DD] # GEORGIAN LETTER ON
-2D0D ; [.1BCF.0020.0002.2D0D] # GEORGIAN SMALL LETTER ON
-10AD ; [.1BCF.0020.0008.10AD] # GEORGIAN CAPITAL LETTER ON
-10DE ; [.1BD0.0020.0002.10DE] # GEORGIAN LETTER PAR
-2D0E ; [.1BD1.0020.0002.2D0E] # GEORGIAN SMALL LETTER PAR
-10AE ; [.1BD1.0020.0008.10AE] # GEORGIAN CAPITAL LETTER PAR
-10DF ; [.1BD2.0020.0002.10DF] # GEORGIAN LETTER ZHAR
-2D0F ; [.1BD3.0020.0002.2D0F] # GEORGIAN SMALL LETTER ZHAR
-10AF ; [.1BD3.0020.0008.10AF] # GEORGIAN CAPITAL LETTER ZHAR
-10E0 ; [.1BD4.0020.0002.10E0] # GEORGIAN LETTER RAE
-2D10 ; [.1BD5.0020.0002.2D10] # GEORGIAN SMALL LETTER RAE
-10B0 ; [.1BD5.0020.0008.10B0] # GEORGIAN CAPITAL LETTER RAE
-10E1 ; [.1BD6.0020.0002.10E1] # GEORGIAN LETTER SAN
-2D11 ; [.1BD7.0020.0002.2D11] # GEORGIAN SMALL LETTER SAN
-10B1 ; [.1BD7.0020.0008.10B1] # GEORGIAN CAPITAL LETTER SAN
-10E2 ; [.1BD8.0020.0002.10E2] # GEORGIAN LETTER TAR
-2D12 ; [.1BD9.0020.0002.2D12] # GEORGIAN SMALL LETTER TAR
-10B2 ; [.1BD9.0020.0008.10B2] # GEORGIAN CAPITAL LETTER TAR
-10F3 ; [.1BDA.0020.0002.10F3] # GEORGIAN LETTER WE
-2D23 ; [.1BDB.0020.0002.2D23] # GEORGIAN SMALL LETTER WE
-10C3 ; [.1BDB.0020.0008.10C3] # GEORGIAN CAPITAL LETTER WE
-10E3 ; [.1BDC.0020.0002.10E3] # GEORGIAN LETTER UN
-2D13 ; [.1BDD.0020.0002.2D13] # GEORGIAN SMALL LETTER UN
-10B3 ; [.1BDD.0020.0008.10B3] # GEORGIAN CAPITAL LETTER UN
-10E4 ; [.1BDE.0020.0002.10E4] # GEORGIAN LETTER PHAR
-2D14 ; [.1BDF.0020.0002.2D14] # GEORGIAN SMALL LETTER PHAR
-10B4 ; [.1BDF.0020.0008.10B4] # GEORGIAN CAPITAL LETTER PHAR
-10E5 ; [.1BE0.0020.0002.10E5] # GEORGIAN LETTER KHAR
-2D15 ; [.1BE1.0020.0002.2D15] # GEORGIAN SMALL LETTER KHAR
-10B5 ; [.1BE1.0020.0008.10B5] # GEORGIAN CAPITAL LETTER KHAR
-10E6 ; [.1BE2.0020.0002.10E6] # GEORGIAN LETTER GHAN
-2D16 ; [.1BE3.0020.0002.2D16] # GEORGIAN SMALL LETTER GHAN
-10B6 ; [.1BE3.0020.0008.10B6] # GEORGIAN CAPITAL LETTER GHAN
-10E7 ; [.1BE4.0020.0002.10E7] # GEORGIAN LETTER QAR
-2D17 ; [.1BE5.0020.0002.2D17] # GEORGIAN SMALL LETTER QAR
-10B7 ; [.1BE5.0020.0008.10B7] # GEORGIAN CAPITAL LETTER QAR
-10E8 ; [.1BE6.0020.0002.10E8] # GEORGIAN LETTER SHIN
-2D18 ; [.1BE7.0020.0002.2D18] # GEORGIAN SMALL LETTER SHIN
-10B8 ; [.1BE7.0020.0008.10B8] # GEORGIAN CAPITAL LETTER SHIN
-10E9 ; [.1BE8.0020.0002.10E9] # GEORGIAN LETTER CHIN
-2D19 ; [.1BE9.0020.0002.2D19] # GEORGIAN SMALL LETTER CHIN
-10B9 ; [.1BE9.0020.0008.10B9] # GEORGIAN CAPITAL LETTER CHIN
-10EA ; [.1BEA.0020.0002.10EA] # GEORGIAN LETTER CAN
-2D1A ; [.1BEB.0020.0002.2D1A] # GEORGIAN SMALL LETTER CAN
-10BA ; [.1BEB.0020.0008.10BA] # GEORGIAN CAPITAL LETTER CAN
-10EB ; [.1BEC.0020.0002.10EB] # GEORGIAN LETTER JIL
-2D1B ; [.1BED.0020.0002.2D1B] # GEORGIAN SMALL LETTER JIL
-10BB ; [.1BED.0020.0008.10BB] # GEORGIAN CAPITAL LETTER JIL
-10EC ; [.1BEE.0020.0002.10EC] # GEORGIAN LETTER CIL
-2D1C ; [.1BEF.0020.0002.2D1C] # GEORGIAN SMALL LETTER CIL
-10BC ; [.1BEF.0020.0008.10BC] # GEORGIAN CAPITAL LETTER CIL
-10ED ; [.1BF0.0020.0002.10ED] # GEORGIAN LETTER CHAR
-2D1D ; [.1BF1.0020.0002.2D1D] # GEORGIAN SMALL LETTER CHAR
-10BD ; [.1BF1.0020.0008.10BD] # GEORGIAN CAPITAL LETTER CHAR
-10EE ; [.1BF2.0020.0002.10EE] # GEORGIAN LETTER XAN
-2D1E ; [.1BF3.0020.0002.2D1E] # GEORGIAN SMALL LETTER XAN
-10BE ; [.1BF3.0020.0008.10BE] # GEORGIAN CAPITAL LETTER XAN
-10F4 ; [.1BF4.0020.0002.10F4] # GEORGIAN LETTER HAR
-2D24 ; [.1BF5.0020.0002.2D24] # GEORGIAN SMALL LETTER HAR
-10C4 ; [.1BF5.0020.0008.10C4] # GEORGIAN CAPITAL LETTER HAR
-10EF ; [.1BF6.0020.0002.10EF] # GEORGIAN LETTER JHAN
-2D1F ; [.1BF7.0020.0002.2D1F] # GEORGIAN SMALL LETTER JHAN
-10BF ; [.1BF7.0020.0008.10BF] # GEORGIAN CAPITAL LETTER JHAN
-10F0 ; [.1BF8.0020.0002.10F0] # GEORGIAN LETTER HAE
-2D20 ; [.1BF9.0020.0002.2D20] # GEORGIAN SMALL LETTER HAE
-10C0 ; [.1BF9.0020.0008.10C0] # GEORGIAN CAPITAL LETTER HAE
-10F5 ; [.1BFA.0020.0002.10F5] # GEORGIAN LETTER HOE
-2D25 ; [.1BFB.0020.0002.2D25] # GEORGIAN SMALL LETTER HOE
-10C5 ; [.1BFB.0020.0008.10C5] # GEORGIAN CAPITAL LETTER HOE
-10F6 ; [.1BFC.0020.0002.10F6] # GEORGIAN LETTER FI
-10F7 ; [.1BFD.0020.0002.10F7] # GEORGIAN LETTER YN
-2D27 ; [.1BFE.0020.0002.2D27] # GEORGIAN SMALL LETTER YN
-10C7 ; [.1BFE.0020.0008.10C7] # GEORGIAN CAPITAL LETTER YN
-10F8 ; [.1BFF.0020.0002.10F8] # GEORGIAN LETTER ELIFI
-10F9 ; [.1C00.0020.0002.10F9] # GEORGIAN LETTER TURNED GAN
-10FA ; [.1C01.0020.0002.10FA] # GEORGIAN LETTER AIN
-10FD ; [.1C02.0020.0002.10FD] # GEORGIAN LETTER AEN
-2D2D ; [.1C03.0020.0002.2D2D] # GEORGIAN SMALL LETTER AEN
-10CD ; [.1C03.0020.0008.10CD] # GEORGIAN CAPITAL LETTER AEN
-10FE ; [.1C04.0020.0002.10FE] # GEORGIAN LETTER HARD SIGN
-10FF ; [.1C05.0020.0002.10FF] # GEORGIAN LETTER LABIAL SIGN
-0561 ; [.1C06.0020.0002.0561] # ARMENIAN SMALL LETTER AYB
-0531 ; [.1C06.0020.0008.0531] # ARMENIAN CAPITAL LETTER AYB
-0562 ; [.1C07.0020.0002.0562] # ARMENIAN SMALL LETTER BEN
-0532 ; [.1C07.0020.0008.0532] # ARMENIAN CAPITAL LETTER BEN
-0563 ; [.1C08.0020.0002.0563] # ARMENIAN SMALL LETTER GIM
-0533 ; [.1C08.0020.0008.0533] # ARMENIAN CAPITAL LETTER GIM
-0564 ; [.1C09.0020.0002.0564] # ARMENIAN SMALL LETTER DA
-0534 ; [.1C09.0020.0008.0534] # ARMENIAN CAPITAL LETTER DA
-0565 ; [.1C0A.0020.0002.0565] # ARMENIAN SMALL LETTER ECH
-0535 ; [.1C0A.0020.0008.0535] # ARMENIAN CAPITAL LETTER ECH
-0587 ; [.1C0A.0020.0004.0587][.1C27.0020.0004.0587] # ARMENIAN SMALL LIGATURE ECH YIWN
-0566 ; [.1C0B.0020.0002.0566] # ARMENIAN SMALL LETTER ZA
-0536 ; [.1C0B.0020.0008.0536] # ARMENIAN CAPITAL LETTER ZA
-0567 ; [.1C0C.0020.0002.0567] # ARMENIAN SMALL LETTER EH
-0537 ; [.1C0C.0020.0008.0537] # ARMENIAN CAPITAL LETTER EH
-0568 ; [.1C0D.0020.0002.0568] # ARMENIAN SMALL LETTER ET
-0538 ; [.1C0D.0020.0008.0538] # ARMENIAN CAPITAL LETTER ET
-0569 ; [.1C0E.0020.0002.0569] # ARMENIAN SMALL LETTER TO
-0539 ; [.1C0E.0020.0008.0539] # ARMENIAN CAPITAL LETTER TO
-056A ; [.1C0F.0020.0002.056A] # ARMENIAN SMALL LETTER ZHE
-053A ; [.1C0F.0020.0008.053A] # ARMENIAN CAPITAL LETTER ZHE
-056B ; [.1C10.0020.0002.056B] # ARMENIAN SMALL LETTER INI
-053B ; [.1C10.0020.0008.053B] # ARMENIAN CAPITAL LETTER INI
-056C ; [.1C11.0020.0002.056C] # ARMENIAN SMALL LETTER LIWN
-053C ; [.1C11.0020.0008.053C] # ARMENIAN CAPITAL LETTER LIWN
-056D ; [.1C12.0020.0002.056D] # ARMENIAN SMALL LETTER XEH
-053D ; [.1C12.0020.0008.053D] # ARMENIAN CAPITAL LETTER XEH
-056E ; [.1C13.0020.0002.056E] # ARMENIAN SMALL LETTER CA
-053E ; [.1C13.0020.0008.053E] # ARMENIAN CAPITAL LETTER CA
-056F ; [.1C14.0020.0002.056F] # ARMENIAN SMALL LETTER KEN
-053F ; [.1C14.0020.0008.053F] # ARMENIAN CAPITAL LETTER KEN
-0570 ; [.1C15.0020.0002.0570] # ARMENIAN SMALL LETTER HO
-0540 ; [.1C15.0020.0008.0540] # ARMENIAN CAPITAL LETTER HO
-0571 ; [.1C16.0020.0002.0571] # ARMENIAN SMALL LETTER JA
-0541 ; [.1C16.0020.0008.0541] # ARMENIAN CAPITAL LETTER JA
-0572 ; [.1C17.0020.0002.0572] # ARMENIAN SMALL LETTER GHAD
-0542 ; [.1C17.0020.0008.0542] # ARMENIAN CAPITAL LETTER GHAD
-0573 ; [.1C18.0020.0002.0573] # ARMENIAN SMALL LETTER CHEH
-0543 ; [.1C18.0020.0008.0543] # ARMENIAN CAPITAL LETTER CHEH
-0574 ; [.1C19.0020.0002.0574] # ARMENIAN SMALL LETTER MEN
-0544 ; [.1C19.0020.0008.0544] # ARMENIAN CAPITAL LETTER MEN
-FB14 ; [.1C19.0020.0004.FB14][.1C0A.0020.0004.FB14] # ARMENIAN SMALL LIGATURE MEN ECH
-FB15 ; [.1C19.0020.0004.FB15][.1C10.0020.0004.FB15] # ARMENIAN SMALL LIGATURE MEN INI
-FB17 ; [.1C19.0020.0004.FB17][.1C12.0020.0004.FB17] # ARMENIAN SMALL LIGATURE MEN XEH
-FB13 ; [.1C19.0020.0004.FB13][.1C1B.0020.0004.FB13] # ARMENIAN SMALL LIGATURE MEN NOW
-0575 ; [.1C1A.0020.0002.0575] # ARMENIAN SMALL LETTER YI
-0545 ; [.1C1A.0020.0008.0545] # ARMENIAN CAPITAL LETTER YI
-0576 ; [.1C1B.0020.0002.0576] # ARMENIAN SMALL LETTER NOW
-0546 ; [.1C1B.0020.0008.0546] # ARMENIAN CAPITAL LETTER NOW
-0577 ; [.1C1C.0020.0002.0577] # ARMENIAN SMALL LETTER SHA
-0547 ; [.1C1C.0020.0008.0547] # ARMENIAN CAPITAL LETTER SHA
-0578 ; [.1C1D.0020.0002.0578] # ARMENIAN SMALL LETTER VO
-0548 ; [.1C1D.0020.0008.0548] # ARMENIAN CAPITAL LETTER VO
-0579 ; [.1C1E.0020.0002.0579] # ARMENIAN SMALL LETTER CHA
-0549 ; [.1C1E.0020.0008.0549] # ARMENIAN CAPITAL LETTER CHA
-057A ; [.1C1F.0020.0002.057A] # ARMENIAN SMALL LETTER PEH
-054A ; [.1C1F.0020.0008.054A] # ARMENIAN CAPITAL LETTER PEH
-057B ; [.1C20.0020.0002.057B] # ARMENIAN SMALL LETTER JHEH
-054B ; [.1C20.0020.0008.054B] # ARMENIAN CAPITAL LETTER JHEH
-057C ; [.1C21.0020.0002.057C] # ARMENIAN SMALL LETTER RA
-054C ; [.1C21.0020.0008.054C] # ARMENIAN CAPITAL LETTER RA
-057D ; [.1C22.0020.0002.057D] # ARMENIAN SMALL LETTER SEH
-054D ; [.1C22.0020.0008.054D] # ARMENIAN CAPITAL LETTER SEH
-057E ; [.1C23.0020.0002.057E] # ARMENIAN SMALL LETTER VEW
-054E ; [.1C23.0020.0008.054E] # ARMENIAN CAPITAL LETTER VEW
-FB16 ; [.1C23.0020.0004.FB16][.1C1B.0020.0004.FB16] # ARMENIAN SMALL LIGATURE VEW NOW
-057F ; [.1C24.0020.0002.057F] # ARMENIAN SMALL LETTER TIWN
-054F ; [.1C24.0020.0008.054F] # ARMENIAN CAPITAL LETTER TIWN
-0580 ; [.1C25.0020.0002.0580] # ARMENIAN SMALL LETTER REH
-0550 ; [.1C25.0020.0008.0550] # ARMENIAN CAPITAL LETTER REH
-0581 ; [.1C26.0020.0002.0581] # ARMENIAN SMALL LETTER CO
-0551 ; [.1C26.0020.0008.0551] # ARMENIAN CAPITAL LETTER CO
-0582 ; [.1C27.0020.0002.0582] # ARMENIAN SMALL LETTER YIWN
-0552 ; [.1C27.0020.0008.0552] # ARMENIAN CAPITAL LETTER YIWN
-0583 ; [.1C28.0020.0002.0583] # ARMENIAN SMALL LETTER PIWR
-0553 ; [.1C28.0020.0008.0553] # ARMENIAN CAPITAL LETTER PIWR
-0584 ; [.1C29.0020.0002.0584] # ARMENIAN SMALL LETTER KEH
-0554 ; [.1C29.0020.0008.0554] # ARMENIAN CAPITAL LETTER KEH
-0585 ; [.1C2A.0020.0002.0585] # ARMENIAN SMALL LETTER OH
-0555 ; [.1C2A.0020.0008.0555] # ARMENIAN CAPITAL LETTER OH
-0586 ; [.1C2B.0020.0002.0586] # ARMENIAN SMALL LETTER FEH
-0556 ; [.1C2B.0020.0008.0556] # ARMENIAN CAPITAL LETTER FEH
-0559 ; [.1C2C.0020.0002.0559] # ARMENIAN MODIFIER LETTER LEFT HALF RING
-05D0 ; [.1C2D.0020.0002.05D0] # HEBREW LETTER ALEF
-2135 ; [.1C2D.0020.0004.2135] # ALEF SYMBOL
-FB21 ; [.1C2D.0020.0005.FB21] # HEBREW LETTER WIDE ALEF
-FB2E ; [.1C2D.0020.0002.05D0][.0000.008C.0002.05B7] # HEBREW LETTER ALEF WITH PATAH
-FB2F ; [.1C2D.0020.0002.05D0][.0000.008D.0002.05B8] # HEBREW LETTER ALEF WITH QAMATS
-FB30 ; [.1C2D.0020.0002.05D0][.0000.0092.0002.05BC] # HEBREW LETTER ALEF WITH MAPIQ
-FB4F ; [.1C2D.0020.0004.FB4F][.1C38.0020.0004.FB4F] # HEBREW LIGATURE ALEF LAMED
-05D1 ; [.1C2E.0020.0002.05D1] # HEBREW LETTER BET
-2136 ; [.1C2E.0020.0004.2136] # BET SYMBOL
-FB31 ; [.1C2E.0020.0002.05D1][.0000.0092.0002.05BC] # HEBREW LETTER BET WITH DAGESH
-FB4C ; [.1C2E.0020.0002.05D1][.0000.0095.0002.05BF] # HEBREW LETTER BET WITH RAFE
-05D2 ; [.1C2F.0020.0002.05D2] # HEBREW LETTER GIMEL
-2137 ; [.1C2F.0020.0004.2137] # GIMEL SYMBOL
-FB32 ; [.1C2F.0020.0002.05D2][.0000.0092.0002.05BC] # HEBREW LETTER GIMEL WITH DAGESH
-05D3 ; [.1C30.0020.0002.05D3] # HEBREW LETTER DALET
-2138 ; [.1C30.0020.0004.2138] # DALET SYMBOL
-FB22 ; [.1C30.0020.0005.FB22] # HEBREW LETTER WIDE DALET
-FB33 ; [.1C30.0020.0002.05D3][.0000.0092.0002.05BC] # HEBREW LETTER DALET WITH DAGESH
-05D4 ; [.1C31.0020.0002.05D4] # HEBREW LETTER HE
-FB23 ; [.1C31.0020.0005.FB23] # HEBREW LETTER WIDE HE
-FB34 ; [.1C31.0020.0002.05D4][.0000.0092.0002.05BC] # HEBREW LETTER HE WITH MAPIQ
-05D5 ; [.1C32.0020.0002.05D5] # HEBREW LETTER VAV
-FB4B ; [.1C32.0020.0002.05D5][.0000.008E.0002.05B9] # HEBREW LETTER VAV WITH HOLAM
-FB35 ; [.1C32.0020.0002.05D5][.0000.0092.0002.05BC] # HEBREW LETTER VAV WITH DAGESH
-05F0 ; [.1C32.0020.0004.05F0][.1C32.0020.0004.05F0] # HEBREW LIGATURE YIDDISH DOUBLE VAV
-05F1 ; [.1C32.0020.0004.05F1][.1C36.0020.0004.05F1] # HEBREW LIGATURE YIDDISH VAV YOD
-05D6 ; [.1C33.0020.0002.05D6] # HEBREW LETTER ZAYIN
-FB36 ; [.1C33.0020.0002.05D6][.0000.0092.0002.05BC] # HEBREW LETTER ZAYIN WITH DAGESH
-05D7 ; [.1C34.0020.0002.05D7] # HEBREW LETTER HET
-05D8 ; [.1C35.0020.0002.05D8] # HEBREW LETTER TET
-FB38 ; [.1C35.0020.0002.05D8][.0000.0092.0002.05BC] # HEBREW LETTER TET WITH DAGESH
-05D9 ; [.1C36.0020.0002.05D9] # HEBREW LETTER YOD
-FB1D ; [.1C36.0020.0002.05D9][.0000.0089.0002.05B4] # HEBREW LETTER YOD WITH HIRIQ
-FB39 ; [.1C36.0020.0002.05D9][.0000.0092.0002.05BC] # HEBREW LETTER YOD WITH DAGESH
-05F2 ; [.1C36.0020.0004.05F2][.1C36.0020.0004.05F2] # HEBREW LIGATURE YIDDISH DOUBLE YOD
-FB1F ; [.1C36.0020.0004.FB1F][.1C36.0020.0004.FB1F][.0000.008C.0002.FB1F] # HEBREW LIGATURE YIDDISH YOD YOD PATAH
-05DB ; [.1C37.0020.0002.05DB] # HEBREW LETTER KAF
-FB24 ; [.1C37.0020.0005.FB24] # HEBREW LETTER WIDE KAF
-05DA ; [.1C37.0020.0019.05DA] # HEBREW LETTER FINAL KAF
-FB3B ; [.1C37.0020.0002.05DB][.0000.0092.0002.05BC] # HEBREW LETTER KAF WITH DAGESH
-FB3A ; [.1C37.0020.0019.FB3A][.0000.0092.0002.FB3A] # HEBREW LETTER FINAL KAF WITH DAGESH
-FB4D ; [.1C37.0020.0002.05DB][.0000.0095.0002.05BF] # HEBREW LETTER KAF WITH RAFE
-05DC ; [.1C38.0020.0002.05DC] # HEBREW LETTER LAMED
-FB25 ; [.1C38.0020.0005.FB25] # HEBREW LETTER WIDE LAMED
-FB3C ; [.1C38.0020.0002.05DC][.0000.0092.0002.05BC] # HEBREW LETTER LAMED WITH DAGESH
-05DE ; [.1C39.0020.0002.05DE] # HEBREW LETTER MEM
-FB26 ; [.1C39.0020.0005.FB26] # HEBREW LETTER WIDE FINAL MEM
-05DD ; [.1C39.0020.0019.05DD] # HEBREW LETTER FINAL MEM
-FB3E ; [.1C39.0020.0002.05DE][.0000.0092.0002.05BC] # HEBREW LETTER MEM WITH DAGESH
-05E0 ; [.1C3A.0020.0002.05E0] # HEBREW LETTER NUN
-05DF ; [.1C3A.0020.0019.05DF] # HEBREW LETTER FINAL NUN
-FB40 ; [.1C3A.0020.0002.05E0][.0000.0092.0002.05BC] # HEBREW LETTER NUN WITH DAGESH
-05E1 ; [.1C3B.0020.0002.05E1] # HEBREW LETTER SAMEKH
-FB41 ; [.1C3B.0020.0002.05E1][.0000.0092.0002.05BC] # HEBREW LETTER SAMEKH WITH DAGESH
-05E2 ; [.1C3C.0020.0002.05E2] # HEBREW LETTER AYIN
-FB20 ; [.1C3C.0020.0005.FB20] # HEBREW LETTER ALTERNATIVE AYIN
-05E4 ; [.1C3D.0020.0002.05E4] # HEBREW LETTER PE
-05E3 ; [.1C3D.0020.0019.05E3] # HEBREW LETTER FINAL PE
-FB44 ; [.1C3D.0020.0002.05E4][.0000.0092.0002.05BC] # HEBREW LETTER PE WITH DAGESH
-FB43 ; [.1C3D.0020.0019.FB43][.0000.0092.0002.FB43] # HEBREW LETTER FINAL PE WITH DAGESH
-FB4E ; [.1C3D.0020.0002.05E4][.0000.0095.0002.05BF] # HEBREW LETTER PE WITH RAFE
-05E6 ; [.1C3E.0020.0002.05E6] # HEBREW LETTER TSADI
-05E5 ; [.1C3E.0020.0019.05E5] # HEBREW LETTER FINAL TSADI
-FB46 ; [.1C3E.0020.0002.05E6][.0000.0092.0002.05BC] # HEBREW LETTER TSADI WITH DAGESH
-05E7 ; [.1C3F.0020.0002.05E7] # HEBREW LETTER QOF
-FB47 ; [.1C3F.0020.0002.05E7][.0000.0092.0002.05BC] # HEBREW LETTER QOF WITH DAGESH
-05E8 ; [.1C40.0020.0002.05E8] # HEBREW LETTER RESH
-FB27 ; [.1C40.0020.0005.FB27] # HEBREW LETTER WIDE RESH
-FB48 ; [.1C40.0020.0002.05E8][.0000.0092.0002.05BC] # HEBREW LETTER RESH WITH DAGESH
-05E9 ; [.1C41.0020.0002.05E9] # HEBREW LETTER SHIN
-FB2B ; [.1C41.0020.0002.05E9][.0000.0090.0002.05C2] # HEBREW LETTER SHIN WITH SIN DOT
-FB2A ; [.1C41.0020.0002.05E9][.0000.0091.0002.05C1] # HEBREW LETTER SHIN WITH SHIN DOT
-FB49 ; [.1C41.0020.0002.05E9][.0000.0092.0002.05BC] # HEBREW LETTER SHIN WITH DAGESH
-FB2D ; [.1C41.0020.0002.05E9][.0000.0092.0002.05BC][.0000.0090.0002.05C2] # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
-FB2C ; [.1C41.0020.0002.05E9][.0000.0092.0002.05BC][.0000.0091.0002.05C1] # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
-05EA ; [.1C42.0020.0002.05EA] # HEBREW LETTER TAV
-FB28 ; [.1C42.0020.0005.FB28] # HEBREW LETTER WIDE TAV
-FB4A ; [.1C42.0020.0002.05EA][.0000.0092.0002.05BC] # HEBREW LETTER TAV WITH DAGESH
-10900 ; [.1C43.0020.0002.10900] # PHOENICIAN LETTER ALF
-10901 ; [.1C44.0020.0002.10901] # PHOENICIAN LETTER BET
-10902 ; [.1C45.0020.0002.10902] # PHOENICIAN LETTER GAML
-10903 ; [.1C46.0020.0002.10903] # PHOENICIAN LETTER DELT
-10904 ; [.1C47.0020.0002.10904] # PHOENICIAN LETTER HE
-10905 ; [.1C48.0020.0002.10905] # PHOENICIAN LETTER WAU
-10906 ; [.1C49.0020.0002.10906] # PHOENICIAN LETTER ZAI
-10907 ; [.1C4A.0020.0002.10907] # PHOENICIAN LETTER HET
-10908 ; [.1C4B.0020.0002.10908] # PHOENICIAN LETTER TET
-10909 ; [.1C4C.0020.0002.10909] # PHOENICIAN LETTER YOD
-1090A ; [.1C4D.0020.0002.1090A] # PHOENICIAN LETTER KAF
-1090B ; [.1C4E.0020.0002.1090B] # PHOENICIAN LETTER LAMD
-1090C ; [.1C4F.0020.0002.1090C] # PHOENICIAN LETTER MEM
-1090D ; [.1C50.0020.0002.1090D] # PHOENICIAN LETTER NUN
-1090E ; [.1C51.0020.0002.1090E] # PHOENICIAN LETTER SEMK
-1090F ; [.1C52.0020.0002.1090F] # PHOENICIAN LETTER AIN
-10910 ; [.1C53.0020.0002.10910] # PHOENICIAN LETTER PE
-10911 ; [.1C54.0020.0002.10911] # PHOENICIAN LETTER SADE
-10912 ; [.1C55.0020.0002.10912] # PHOENICIAN LETTER QOF
-10913 ; [.1C56.0020.0002.10913] # PHOENICIAN LETTER ROSH
-10914 ; [.1C57.0020.0002.10914] # PHOENICIAN LETTER SHIN
-10915 ; [.1C58.0020.0002.10915] # PHOENICIAN LETTER TAU
-0800 ; [.1C59.0020.0002.0800] # SAMARITAN LETTER ALAF
-0801 ; [.1C5A.0020.0002.0801] # SAMARITAN LETTER BIT
-0802 ; [.1C5B.0020.0002.0802] # SAMARITAN LETTER GAMAN
-0803 ; [.1C5C.0020.0002.0803] # SAMARITAN LETTER DALAT
-0804 ; [.1C5D.0020.0002.0804] # SAMARITAN LETTER IY
-0805 ; [.1C5E.0020.0002.0805] # SAMARITAN LETTER BAA
-0806 ; [.1C5F.0020.0002.0806] # SAMARITAN LETTER ZEN
-0807 ; [.1C60.0020.0002.0807] # SAMARITAN LETTER IT
-0808 ; [.1C61.0020.0002.0808] # SAMARITAN LETTER TIT
-0809 ; [.1C62.0020.0002.0809] # SAMARITAN LETTER YUT
-080A ; [.1C63.0020.0002.080A] # SAMARITAN LETTER KAAF
-080B ; [.1C64.0020.0002.080B] # SAMARITAN LETTER LABAT
-080C ; [.1C65.0020.0002.080C] # SAMARITAN LETTER MIM
-080D ; [.1C66.0020.0002.080D] # SAMARITAN LETTER NUN
-080E ; [.1C67.0020.0002.080E] # SAMARITAN LETTER SINGAAT
-080F ; [.1C68.0020.0002.080F] # SAMARITAN LETTER IN
-0810 ; [.1C69.0020.0002.0810] # SAMARITAN LETTER FI
-0811 ; [.1C6A.0020.0002.0811] # SAMARITAN LETTER TSAADIY
-0812 ; [.1C6B.0020.0002.0812] # SAMARITAN LETTER QUF
-0813 ; [.1C6C.0020.0002.0813] # SAMARITAN LETTER RISH
-0814 ; [.1C6D.0020.0002.0814] # SAMARITAN LETTER SHAN
-0815 ; [.1C6E.0020.0002.0815] # SAMARITAN LETTER TAAF
-0816 ; [.1C6F.0020.0002.0816] # SAMARITAN MARK IN
-0817 ; [.1C70.0020.0002.0817] # SAMARITAN MARK IN-ALAF
-081A ; [.1C71.0020.0002.081A] # SAMARITAN MODIFIER LETTER EPENTHETIC YUT
-081B ; [.1C72.0020.0002.081B] # SAMARITAN MARK EPENTHETIC YUT
-0621 ; [.1C73.0020.0002.0621] # ARABIC LETTER HAMZA
-0674 ; [.1C73.0020.0004.0674] # ARABIC LETTER HIGH HAMZA
-FE80 ; [.1C73.0020.001A.FE80] # ARABIC LETTER HAMZA ISOLATED FORM
-06FD ; [.1C73.0020.0004.06FD][.0000.013A.0004.06FD] # ARABIC SIGN SINDHI AMPERSAND
-0622 ; [.1C74.0020.0002.0622] # ARABIC LETTER ALEF WITH MADDA ABOVE
-0627 0653 ; [.1C74.0020.0002.0622] # ARABIC LETTER ALEF WITH MADDA ABOVE
-FE82 ; [.1C74.0020.0019.FE82] # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-FE81 ; [.1C74.0020.001A.FE81] # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-0623 ; [.1C75.0020.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
-0627 0654 ; [.1C75.0020.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
-FE84 ; [.1C75.0020.0019.FE84] # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-FE83 ; [.1C75.0020.001A.FE83] # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
-0672 ; [.1C76.0020.0002.0672] # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
-0671 ; [.1C77.0020.0002.0671] # ARABIC LETTER ALEF WASLA
-FB51 ; [.1C77.0020.0019.FB51] # ARABIC LETTER ALEF WASLA FINAL FORM
-FB50 ; [.1C77.0020.001A.FB50] # ARABIC LETTER ALEF WASLA ISOLATED FORM
-0624 ; [.1C78.0020.0002.0624] # ARABIC LETTER WAW WITH HAMZA ABOVE
-0648 0654 ; [.1C78.0020.0002.0624] # ARABIC LETTER WAW WITH HAMZA ABOVE
-FE86 ; [.1C78.0020.0019.FE86] # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
-FE85 ; [.1C78.0020.001A.FE85] # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-0625 ; [.1C79.0020.0002.0625] # ARABIC LETTER ALEF WITH HAMZA BELOW
-0627 0655 ; [.1C79.0020.0002.0625] # ARABIC LETTER ALEF WITH HAMZA BELOW
-FE88 ; [.1C79.0020.0019.FE88] # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
-FE87 ; [.1C79.0020.001A.FE87] # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
-0673 ; [.1C7A.0020.0002.0673] # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
-0773 ; [.1C7B.0020.0002.0773] # ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
-0774 ; [.1C7C.0020.0002.0774] # ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
-0626 ; [.1C7D.0020.0002.0626] # ARABIC LETTER YEH WITH HAMZA ABOVE
-064A 0654 ; [.1C7D.0020.0002.0626] # ARABIC LETTER YEH WITH HAMZA ABOVE
-FE8B ; [.1C7D.0020.0017.FE8B] # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-FE8C ; [.1C7D.0020.0018.FE8C] # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
-FE8A ; [.1C7D.0020.0019.FE8A] # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
-FE89 ; [.1C7D.0020.001A.FE89] # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
-FBEB ; [.1C7D.0020.0019.FBEB][.1C81.0020.0019.FBEB] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
-FBEA ; [.1C7D.0020.001A.FBEA][.1C81.0020.001A.FBEA] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
-FC97 ; [.1C7D.0020.0017.FC97][.1C97.0020.0017.FC97] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
-FC00 ; [.1C7D.0020.001A.FC00][.1C97.0020.001A.FC00] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
-FC98 ; [.1C7D.0020.0017.FC98][.1C9E.0020.0017.FC98] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
-FC01 ; [.1C7D.0020.001A.FC01][.1C9E.0020.001A.FC01] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
-FC99 ; [.1C7D.0020.0017.FC99][.1C9F.0020.0017.FC99] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
-FC64 ; [.1C7D.0020.0019.FC64][.1CB7.0020.0019.FC64] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
-FC65 ; [.1C7D.0020.0019.FC65][.1CB8.0020.0019.FC65] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
-FC9A ; [.1C7D.0020.0017.FC9A][.1D0C.0020.0017.FC9A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
-FCDF ; [.1C7D.0020.0018.FCDF][.1D0C.0020.0018.FCDF] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
-FC66 ; [.1C7D.0020.0019.FC66][.1D0C.0020.0019.FC66] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
-FC02 ; [.1C7D.0020.001A.FC02][.1D0C.0020.001A.FC02] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
-FC67 ; [.1C7D.0020.0019.FC67][.1D10.0020.0019.FC67] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
-FC9B ; [.1C7D.0020.0017.FC9B][.1D19.0020.0017.FC9B] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
-FCE0 ; [.1C7D.0020.0018.FCE0][.1D19.0020.0018.FCE0] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
-FBED ; [.1C7D.0020.0019.FBED][.1D1E.0020.0019.FBED] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
-FBEC ; [.1C7D.0020.001A.FBEC][.1D1E.0020.001A.FBEC] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
-FBEF ; [.1C7D.0020.0019.FBEF][.1D1F.0020.0019.FBEF] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
-FBEE ; [.1C7D.0020.001A.FBEE][.1D1F.0020.001A.FBEE] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
-FBF3 ; [.1C7D.0020.0019.FBF3][.1D22.0020.0019.FBF3] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
-FBF2 ; [.1C7D.0020.001A.FBF2][.1D22.0020.001A.FBF2] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
-FBF1 ; [.1C7D.0020.0019.FBF1][.1D23.0020.0019.FBF1] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
-FBF0 ; [.1C7D.0020.001A.FBF0][.1D23.0020.001A.FBF0] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
-FBF5 ; [.1C7D.0020.0019.FBF5][.1D24.0020.0019.FBF5] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
-FBF4 ; [.1C7D.0020.001A.FBF4][.1D24.0020.001A.FBF4] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
-FBFB ; [.1C7D.0020.0017.FBFB][.1D2C.0020.0017.FBFB] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
-FBFA ; [.1C7D.0020.0019.FBFA][.1D2C.0020.0019.FBFA] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
-FC68 ; [.1C7D.0020.0019.FC68][.1D2C.0020.0019.FC68] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
-FBF9 ; [.1C7D.0020.001A.FBF9][.1D2C.0020.001A.FBF9] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
-FC03 ; [.1C7D.0020.001A.FC03][.1D2C.0020.001A.FC03] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
-FC69 ; [.1C7D.0020.0019.FC69][.1D2D.0020.0019.FC69] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
-FC04 ; [.1C7D.0020.001A.FC04][.1D2D.0020.001A.FC04] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
-FBF8 ; [.1C7D.0020.0017.FBF8][.1D31.0020.0017.FBF8] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
-FBF7 ; [.1C7D.0020.0019.FBF7][.1D31.0020.0019.FBF7] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
-FBF6 ; [.1C7D.0020.001A.FBF6][.1D31.0020.001A.FBF6] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
-08A8 ; [.1C7E.0020.0002.08A8] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE
-08A9 ; [.1C7F.0020.0002.08A9] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE
-08AC ; [.1C80.0020.0002.08AC] # ARABIC LETTER ROHINGYA YEH
-0627 ; [.1C81.0020.0002.0627] # ARABIC LETTER ALEF
-1EE00 ; [.1C81.0020.0005.1EE00] # ARABIC MATHEMATICAL ALEF
-1EE80 ; [.1C81.0020.0005.1EE80] # ARABIC MATHEMATICAL LOOPED ALEF
-FE8E ; [.1C81.0020.0019.FE8E] # ARABIC LETTER ALEF FINAL FORM
-FE8D ; [.1C81.0020.001A.FE8D] # ARABIC LETTER ALEF ISOLATED FORM
-FD3C ; [.1C81.0020.0019.FD3C][.0000.00A2.0019.FD3C] # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
-FD3D ; [.1C81.0020.001A.FD3D][.0000.00A2.001A.FD3D] # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
-0675 ; [.1C81.0020.0004.0675][.1C73.0020.0004.0675] # ARABIC LETTER HIGH HAMZA ALEF
-FDF3 ; [.1C81.0020.001A.FDF3][.1CF2.0020.001A.FDF3][.1C83.0020.001F.FDF3][.1CB7.0020.001F.FDF3] # ARABIC LIGATURE AKBAR ISOLATED FORM
-FDF2 ; [.1C81.0020.001A.FDF2][.1D05.0020.001A.FDF2][.1D05.0020.001F.FDF2][.1D19.0020.001F.FDF2] # ARABIC LIGATURE ALLAH ISOLATED FORM
-066E ; [.1C82.0020.0002.066E] # ARABIC LETTER DOTLESS BEH
-1EE1C ; [.1C82.0020.0005.1EE1C] # ARABIC MATHEMATICAL DOTLESS BEH
-1EE7C ; [.1C82.0020.0005.1EE7C] # ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
-0628 ; [.1C83.0020.0002.0628] # ARABIC LETTER BEH
-1EE01 ; [.1C83.0020.0005.1EE01] # ARABIC MATHEMATICAL BEH
-1EE21 ; [.1C83.0020.0005.1EE21] # ARABIC MATHEMATICAL INITIAL BEH
-1EE61 ; [.1C83.0020.0005.1EE61] # ARABIC MATHEMATICAL STRETCHED BEH
-1EE81 ; [.1C83.0020.0005.1EE81] # ARABIC MATHEMATICAL LOOPED BEH
-1EEA1 ; [.1C83.0020.0005.1EEA1] # ARABIC MATHEMATICAL DOUBLE-STRUCK BEH
-FE91 ; [.1C83.0020.0017.FE91] # ARABIC LETTER BEH INITIAL FORM
-FE92 ; [.1C83.0020.0018.FE92] # ARABIC LETTER BEH MEDIAL FORM
-FE90 ; [.1C83.0020.0019.FE90] # ARABIC LETTER BEH FINAL FORM
-FE8F ; [.1C83.0020.001A.FE8F] # ARABIC LETTER BEH ISOLATED FORM
-FC9C ; [.1C83.0020.0017.FC9C][.1C97.0020.0017.FC9C] # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
-FC05 ; [.1C83.0020.001A.FC05][.1C97.0020.001A.FC05] # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
-FC9D ; [.1C83.0020.0017.FC9D][.1C9E.0020.0017.FC9D] # ARABIC LIGATURE BEH WITH HAH INITIAL FORM
-FC06 ; [.1C83.0020.001A.FC06][.1C9E.0020.001A.FC06] # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
-FDC2 ; [.1C83.0020.0019.FDC2][.1C9E.0020.0019.FDC2][.1D2D.0020.001F.FDC2] # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
-FC9E ; [.1C83.0020.0017.FC9E][.1C9F.0020.0017.FC9E] # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
-FC07 ; [.1C83.0020.001A.FC07][.1C9F.0020.001A.FC07] # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
-FD9E ; [.1C83.0020.0019.FD9E][.1C9F.0020.0019.FD9E][.1D2D.0020.001F.FD9E] # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
-FC6A ; [.1C83.0020.0019.FC6A][.1CB7.0020.0019.FC6A] # ARABIC LIGATURE BEH WITH REH FINAL FORM
-FC6B ; [.1C83.0020.0019.FC6B][.1CB8.0020.0019.FC6B] # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
-FC9F ; [.1C83.0020.0017.FC9F][.1D0C.0020.0017.FC9F] # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
-FCE1 ; [.1C83.0020.0018.FCE1][.1D0C.0020.0018.FCE1] # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
-FC6C ; [.1C83.0020.0019.FC6C][.1D0C.0020.0019.FC6C] # ARABIC LIGATURE BEH WITH MEEM FINAL FORM
-FC08 ; [.1C83.0020.001A.FC08][.1D0C.0020.001A.FC08] # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
-FC6D ; [.1C83.0020.0019.FC6D][.1D10.0020.0019.FC6D] # ARABIC LIGATURE BEH WITH NOON FINAL FORM
-FCA0 ; [.1C83.0020.0017.FCA0][.1D19.0020.0017.FCA0] # ARABIC LIGATURE BEH WITH HEH INITIAL FORM
-FCE2 ; [.1C83.0020.0018.FCE2][.1D19.0020.0018.FCE2] # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
-FC6E ; [.1C83.0020.0019.FC6E][.1D2C.0020.0019.FC6E] # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
-FC09 ; [.1C83.0020.001A.FC09][.1D2C.0020.001A.FC09] # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
-FC6F ; [.1C83.0020.0019.FC6F][.1D2D.0020.0019.FC6F] # ARABIC LIGATURE BEH WITH YEH FINAL FORM
-FC0A ; [.1C83.0020.001A.FC0A][.1D2D.0020.001A.FC0A] # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
-067B ; [.1C84.0020.0002.067B] # ARABIC LETTER BEEH
-FB54 ; [.1C84.0020.0017.FB54] # ARABIC LETTER BEEH INITIAL FORM
-FB55 ; [.1C84.0020.0018.FB55] # ARABIC LETTER BEEH MEDIAL FORM
-FB53 ; [.1C84.0020.0019.FB53] # ARABIC LETTER BEEH FINAL FORM
-FB52 ; [.1C84.0020.001A.FB52] # ARABIC LETTER BEEH ISOLATED FORM
-067E ; [.1C85.0020.0002.067E] # ARABIC LETTER PEH
-FB58 ; [.1C85.0020.0017.FB58] # ARABIC LETTER PEH INITIAL FORM
-FB59 ; [.1C85.0020.0018.FB59] # ARABIC LETTER PEH MEDIAL FORM
-FB57 ; [.1C85.0020.0019.FB57] # ARABIC LETTER PEH FINAL FORM
-FB56 ; [.1C85.0020.001A.FB56] # ARABIC LETTER PEH ISOLATED FORM
-0680 ; [.1C86.0020.0002.0680] # ARABIC LETTER BEHEH
-FB5C ; [.1C86.0020.0017.FB5C] # ARABIC LETTER BEHEH INITIAL FORM
-FB5D ; [.1C86.0020.0018.FB5D] # ARABIC LETTER BEHEH MEDIAL FORM
-FB5B ; [.1C86.0020.0019.FB5B] # ARABIC LETTER BEHEH FINAL FORM
-FB5A ; [.1C86.0020.001A.FB5A] # ARABIC LETTER BEHEH ISOLATED FORM
-0750 ; [.1C87.0020.0002.0750] # ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW
-0751 ; [.1C88.0020.0002.0751] # ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE
-0752 ; [.1C89.0020.0002.0752] # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW
-0753 ; [.1C8A.0020.0002.0753] # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE
-0754 ; [.1C8B.0020.0002.0754] # ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE
-0755 ; [.1C8C.0020.0002.0755] # ARABIC LETTER BEH WITH INVERTED SMALL V BELOW
-08A0 ; [.1C8D.0020.0002.08A0] # ARABIC LETTER BEH WITH SMALL V BELOW
-0756 ; [.1C8E.0020.0002.0756] # ARABIC LETTER BEH WITH SMALL V
-0629 ; [.1C8F.0020.0002.0629] # ARABIC LETTER TEH MARBUTA
-FE94 ; [.1C8F.0020.0019.FE94] # ARABIC LETTER TEH MARBUTA FINAL FORM
-FE93 ; [.1C8F.0020.001A.FE93] # ARABIC LETTER TEH MARBUTA ISOLATED FORM
-062A ; [.1C90.0020.0002.062A] # ARABIC LETTER TEH
-1EE15 ; [.1C90.0020.0005.1EE15] # ARABIC MATHEMATICAL TEH
-1EE35 ; [.1C90.0020.0005.1EE35] # ARABIC MATHEMATICAL INITIAL TEH
-1EE75 ; [.1C90.0020.0005.1EE75] # ARABIC MATHEMATICAL STRETCHED TEH
-1EE95 ; [.1C90.0020.0005.1EE95] # ARABIC MATHEMATICAL LOOPED TEH
-1EEB5 ; [.1C90.0020.0005.1EEB5] # ARABIC MATHEMATICAL DOUBLE-STRUCK TEH
-FE97 ; [.1C90.0020.0017.FE97] # ARABIC LETTER TEH INITIAL FORM
-FE98 ; [.1C90.0020.0018.FE98] # ARABIC LETTER TEH MEDIAL FORM
-FE96 ; [.1C90.0020.0019.FE96] # ARABIC LETTER TEH FINAL FORM
-FE95 ; [.1C90.0020.001A.FE95] # ARABIC LETTER TEH ISOLATED FORM
-FCA1 ; [.1C90.0020.0017.FCA1][.1C97.0020.0017.FCA1] # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
-FC0B ; [.1C90.0020.001A.FC0B][.1C97.0020.001A.FC0B] # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
-FD50 ; [.1C90.0020.0017.FD50][.1C97.0020.0017.FD50][.1D0C.0020.001F.FD50] # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
-FDA0 ; [.1C90.0020.0019.FDA0][.1C97.0020.0019.FDA0][.1D2C.0020.001F.FDA0] # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FD9F ; [.1C90.0020.0019.FD9F][.1C97.0020.0019.FD9F][.1D2D.0020.001F.FD9F] # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
-FCA2 ; [.1C90.0020.0017.FCA2][.1C9E.0020.0017.FCA2] # ARABIC LIGATURE TEH WITH HAH INITIAL FORM
-FC0C ; [.1C90.0020.001A.FC0C][.1C9E.0020.001A.FC0C] # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
-FD52 ; [.1C90.0020.0017.FD52][.1C9E.0020.0017.FD52][.1C97.0020.001F.FD52] # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
-FD51 ; [.1C90.0020.0019.FD51][.1C9E.0020.0019.FD51][.1C97.0020.001F.FD51] # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
-FD53 ; [.1C90.0020.0017.FD53][.1C9E.0020.0017.FD53][.1D0C.0020.001F.FD53] # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
-FCA3 ; [.1C90.0020.0017.FCA3][.1C9F.0020.0017.FCA3] # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
-FC0D ; [.1C90.0020.001A.FC0D][.1C9F.0020.001A.FC0D] # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
-FD54 ; [.1C90.0020.0017.FD54][.1C9F.0020.0017.FD54][.1D0C.0020.001F.FD54] # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
-FDA2 ; [.1C90.0020.0019.FDA2][.1C9F.0020.0019.FDA2][.1D2C.0020.001F.FDA2] # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
-FDA1 ; [.1C90.0020.0019.FDA1][.1C9F.0020.0019.FDA1][.1D2D.0020.001F.FDA1] # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
-FC70 ; [.1C90.0020.0019.FC70][.1CB7.0020.0019.FC70] # ARABIC LIGATURE TEH WITH REH FINAL FORM
-FC71 ; [.1C90.0020.0019.FC71][.1CB8.0020.0019.FC71] # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
-FCA4 ; [.1C90.0020.0017.FCA4][.1D0C.0020.0017.FCA4] # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
-FCE3 ; [.1C90.0020.0018.FCE3][.1D0C.0020.0018.FCE3] # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
-FC72 ; [.1C90.0020.0019.FC72][.1D0C.0020.0019.FC72] # ARABIC LIGATURE TEH WITH MEEM FINAL FORM
-FC0E ; [.1C90.0020.001A.FC0E][.1D0C.0020.001A.FC0E] # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
-FD55 ; [.1C90.0020.0017.FD55][.1D0C.0020.0017.FD55][.1C97.0020.001F.FD55] # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
-FD56 ; [.1C90.0020.0017.FD56][.1D0C.0020.0017.FD56][.1C9E.0020.001F.FD56] # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
-FD57 ; [.1C90.0020.0017.FD57][.1D0C.0020.0017.FD57][.1C9F.0020.001F.FD57] # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
-FDA4 ; [.1C90.0020.0019.FDA4][.1D0C.0020.0019.FDA4][.1D2C.0020.001F.FDA4] # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FDA3 ; [.1C90.0020.0019.FDA3][.1D0C.0020.0019.FDA3][.1D2D.0020.001F.FDA3] # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
-FC73 ; [.1C90.0020.0019.FC73][.1D10.0020.0019.FC73] # ARABIC LIGATURE TEH WITH NOON FINAL FORM
-FCA5 ; [.1C90.0020.0017.FCA5][.1D19.0020.0017.FCA5] # ARABIC LIGATURE TEH WITH HEH INITIAL FORM
-FCE4 ; [.1C90.0020.0018.FCE4][.1D19.0020.0018.FCE4] # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
-FC74 ; [.1C90.0020.0019.FC74][.1D2C.0020.0019.FC74] # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
-FC0F ; [.1C90.0020.001A.FC0F][.1D2C.0020.001A.FC0F] # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
-FC75 ; [.1C90.0020.0019.FC75][.1D2D.0020.0019.FC75] # ARABIC LIGATURE TEH WITH YEH FINAL FORM
-FC10 ; [.1C90.0020.001A.FC10][.1D2D.0020.001A.FC10] # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
-062B ; [.1C91.0020.0002.062B] # ARABIC LETTER THEH
-1EE16 ; [.1C91.0020.0005.1EE16] # ARABIC MATHEMATICAL THEH
-1EE36 ; [.1C91.0020.0005.1EE36] # ARABIC MATHEMATICAL INITIAL THEH
-1EE76 ; [.1C91.0020.0005.1EE76] # ARABIC MATHEMATICAL STRETCHED THEH
-1EE96 ; [.1C91.0020.0005.1EE96] # ARABIC MATHEMATICAL LOOPED THEH
-1EEB6 ; [.1C91.0020.0005.1EEB6] # ARABIC MATHEMATICAL DOUBLE-STRUCK THEH
-FE9B ; [.1C91.0020.0017.FE9B] # ARABIC LETTER THEH INITIAL FORM
-FE9C ; [.1C91.0020.0018.FE9C] # ARABIC LETTER THEH MEDIAL FORM
-FE9A ; [.1C91.0020.0019.FE9A] # ARABIC LETTER THEH FINAL FORM
-FE99 ; [.1C91.0020.001A.FE99] # ARABIC LETTER THEH ISOLATED FORM
-FC11 ; [.1C91.0020.001A.FC11][.1C97.0020.001A.FC11] # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
-FC76 ; [.1C91.0020.0019.FC76][.1CB7.0020.0019.FC76] # ARABIC LIGATURE THEH WITH REH FINAL FORM
-FC77 ; [.1C91.0020.0019.FC77][.1CB8.0020.0019.FC77] # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
-FCA6 ; [.1C91.0020.0017.FCA6][.1D0C.0020.0017.FCA6] # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
-FCE5 ; [.1C91.0020.0018.FCE5][.1D0C.0020.0018.FCE5] # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
-FC78 ; [.1C91.0020.0019.FC78][.1D0C.0020.0019.FC78] # ARABIC LIGATURE THEH WITH MEEM FINAL FORM
-FC12 ; [.1C91.0020.001A.FC12][.1D0C.0020.001A.FC12] # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
-FC79 ; [.1C91.0020.0019.FC79][.1D10.0020.0019.FC79] # ARABIC LIGATURE THEH WITH NOON FINAL FORM
-FCE6 ; [.1C91.0020.0018.FCE6][.1D19.0020.0018.FCE6] # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
-FC7A ; [.1C91.0020.0019.FC7A][.1D2C.0020.0019.FC7A] # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
-FC13 ; [.1C91.0020.001A.FC13][.1D2C.0020.001A.FC13] # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
-FC7B ; [.1C91.0020.0019.FC7B][.1D2D.0020.0019.FC7B] # ARABIC LIGATURE THEH WITH YEH FINAL FORM
-FC14 ; [.1C91.0020.001A.FC14][.1D2D.0020.001A.FC14] # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
-0679 ; [.1C92.0020.0002.0679] # ARABIC LETTER TTEH
-FB68 ; [.1C92.0020.0017.FB68] # ARABIC LETTER TTEH INITIAL FORM
-FB69 ; [.1C92.0020.0018.FB69] # ARABIC LETTER TTEH MEDIAL FORM
-FB67 ; [.1C92.0020.0019.FB67] # ARABIC LETTER TTEH FINAL FORM
-FB66 ; [.1C92.0020.001A.FB66] # ARABIC LETTER TTEH ISOLATED FORM
-067A ; [.1C93.0020.0002.067A] # ARABIC LETTER TTEHEH
-FB60 ; [.1C93.0020.0017.FB60] # ARABIC LETTER TTEHEH INITIAL FORM
-FB61 ; [.1C93.0020.0018.FB61] # ARABIC LETTER TTEHEH MEDIAL FORM
-FB5F ; [.1C93.0020.0019.FB5F] # ARABIC LETTER TTEHEH FINAL FORM
-FB5E ; [.1C93.0020.001A.FB5E] # ARABIC LETTER TTEHEH ISOLATED FORM
-067C ; [.1C94.0020.0002.067C] # ARABIC LETTER TEH WITH RING
-067D ; [.1C95.0020.0002.067D] # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
-067F ; [.1C96.0020.0002.067F] # ARABIC LETTER TEHEH
-FB64 ; [.1C96.0020.0017.FB64] # ARABIC LETTER TEHEH INITIAL FORM
-FB65 ; [.1C96.0020.0018.FB65] # ARABIC LETTER TEHEH MEDIAL FORM
-FB63 ; [.1C96.0020.0019.FB63] # ARABIC LETTER TEHEH FINAL FORM
-FB62 ; [.1C96.0020.001A.FB62] # ARABIC LETTER TEHEH ISOLATED FORM
-062C ; [.1C97.0020.0002.062C] # ARABIC LETTER JEEM
-1EE02 ; [.1C97.0020.0005.1EE02] # ARABIC MATHEMATICAL JEEM
-1EE22 ; [.1C97.0020.0005.1EE22] # ARABIC MATHEMATICAL INITIAL JEEM
-1EE42 ; [.1C97.0020.0005.1EE42] # ARABIC MATHEMATICAL TAILED JEEM
-1EE62 ; [.1C97.0020.0005.1EE62] # ARABIC MATHEMATICAL STRETCHED JEEM
-1EE82 ; [.1C97.0020.0005.1EE82] # ARABIC MATHEMATICAL LOOPED JEEM
-1EEA2 ; [.1C97.0020.0005.1EEA2] # ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM
-FE9F ; [.1C97.0020.0017.FE9F] # ARABIC LETTER JEEM INITIAL FORM
-FEA0 ; [.1C97.0020.0018.FEA0] # ARABIC LETTER JEEM MEDIAL FORM
-FE9E ; [.1C97.0020.0019.FE9E] # ARABIC LETTER JEEM FINAL FORM
-FE9D ; [.1C97.0020.001A.FE9D] # ARABIC LETTER JEEM ISOLATED FORM
-FCA7 ; [.1C97.0020.0017.FCA7][.1C9E.0020.0017.FCA7] # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
-FC15 ; [.1C97.0020.001A.FC15][.1C9E.0020.001A.FC15] # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
-FDA6 ; [.1C97.0020.0019.FDA6][.1C9E.0020.0019.FDA6][.1D2C.0020.001F.FDA6] # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
-FDBE ; [.1C97.0020.0019.FDBE][.1C9E.0020.0019.FDBE][.1D2D.0020.001F.FDBE] # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
-FDFB ; [.1C97.0020.001A.FDFB][.1D05.0020.001A.FDFB][*020A.0020.001F.FDFB][.1C97.0020.001F.FDFB][.1D05.0020.001F.FDFB][.1C81.0020.001F.FDFB][.1D05.0020.001F.FDFB][.1D19.0020.001F.FDFB] # ARABIC LIGATURE JALLAJALALOUHOU
-FCA8 ; [.1C97.0020.0017.FCA8][.1D0C.0020.0017.FCA8] # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
-FC16 ; [.1C97.0020.001A.FC16][.1D0C.0020.001A.FC16] # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
-FD59 ; [.1C97.0020.0017.FD59][.1D0C.0020.0017.FD59][.1C9E.0020.001F.FD59] # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
-FD58 ; [.1C97.0020.0019.FD58][.1D0C.0020.0019.FD58][.1C9E.0020.001F.FD58] # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
-FDA7 ; [.1C97.0020.0019.FDA7][.1D0C.0020.0019.FDA7][.1D2C.0020.001F.FDA7] # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FDA5 ; [.1C97.0020.0019.FDA5][.1D0C.0020.0019.FDA5][.1D2D.0020.001F.FDA5] # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
-FD1D ; [.1C97.0020.0019.FD1D][.1D2C.0020.0019.FD1D] # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
-FD01 ; [.1C97.0020.001A.FD01][.1D2C.0020.001A.FD01] # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
-FD1E ; [.1C97.0020.0019.FD1E][.1D2D.0020.0019.FD1E] # ARABIC LIGATURE JEEM WITH YEH FINAL FORM
-FD02 ; [.1C97.0020.001A.FD02][.1D2D.0020.001A.FD02] # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
-0683 ; [.1C98.0020.0002.0683] # ARABIC LETTER NYEH
-FB78 ; [.1C98.0020.0017.FB78] # ARABIC LETTER NYEH INITIAL FORM
-FB79 ; [.1C98.0020.0018.FB79] # ARABIC LETTER NYEH MEDIAL FORM
-FB77 ; [.1C98.0020.0019.FB77] # ARABIC LETTER NYEH FINAL FORM
-FB76 ; [.1C98.0020.001A.FB76] # ARABIC LETTER NYEH ISOLATED FORM
-0684 ; [.1C99.0020.0002.0684] # ARABIC LETTER DYEH
-FB74 ; [.1C99.0020.0017.FB74] # ARABIC LETTER DYEH INITIAL FORM
-FB75 ; [.1C99.0020.0018.FB75] # ARABIC LETTER DYEH MEDIAL FORM
-FB73 ; [.1C99.0020.0019.FB73] # ARABIC LETTER DYEH FINAL FORM
-FB72 ; [.1C99.0020.001A.FB72] # ARABIC LETTER DYEH ISOLATED FORM
-0686 ; [.1C9A.0020.0002.0686] # ARABIC LETTER TCHEH
-FB7C ; [.1C9A.0020.0017.FB7C] # ARABIC LETTER TCHEH INITIAL FORM
-FB7D ; [.1C9A.0020.0018.FB7D] # ARABIC LETTER TCHEH MEDIAL FORM
-FB7B ; [.1C9A.0020.0019.FB7B] # ARABIC LETTER TCHEH FINAL FORM
-FB7A ; [.1C9A.0020.001A.FB7A] # ARABIC LETTER TCHEH ISOLATED FORM
-06BF ; [.1C9B.0020.0002.06BF] # ARABIC LETTER TCHEH WITH DOT ABOVE
-0687 ; [.1C9C.0020.0002.0687] # ARABIC LETTER TCHEHEH
-FB80 ; [.1C9C.0020.0017.FB80] # ARABIC LETTER TCHEHEH INITIAL FORM
-FB81 ; [.1C9C.0020.0018.FB81] # ARABIC LETTER TCHEHEH MEDIAL FORM
-FB7F ; [.1C9C.0020.0019.FB7F] # ARABIC LETTER TCHEHEH FINAL FORM
-FB7E ; [.1C9C.0020.001A.FB7E] # ARABIC LETTER TCHEHEH ISOLATED FORM
-08A2 ; [.1C9D.0020.0002.08A2] # ARABIC LETTER JEEM WITH TWO DOTS ABOVE
-062D ; [.1C9E.0020.0002.062D] # ARABIC LETTER HAH
-1EE07 ; [.1C9E.0020.0005.1EE07] # ARABIC MATHEMATICAL HAH
-1EE27 ; [.1C9E.0020.0005.1EE27] # ARABIC MATHEMATICAL INITIAL HAH
-1EE47 ; [.1C9E.0020.0005.1EE47] # ARABIC MATHEMATICAL TAILED HAH
-1EE67 ; [.1C9E.0020.0005.1EE67] # ARABIC MATHEMATICAL STRETCHED HAH
-1EE87 ; [.1C9E.0020.0005.1EE87] # ARABIC MATHEMATICAL LOOPED HAH
-1EEA7 ; [.1C9E.0020.0005.1EEA7] # ARABIC MATHEMATICAL DOUBLE-STRUCK HAH
-FEA3 ; [.1C9E.0020.0017.FEA3] # ARABIC LETTER HAH INITIAL FORM
-FEA4 ; [.1C9E.0020.0018.FEA4] # ARABIC LETTER HAH MEDIAL FORM
-FEA2 ; [.1C9E.0020.0019.FEA2] # ARABIC LETTER HAH FINAL FORM
-FEA1 ; [.1C9E.0020.001A.FEA1] # ARABIC LETTER HAH ISOLATED FORM
-FCA9 ; [.1C9E.0020.0017.FCA9][.1C97.0020.0017.FCA9] # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
-FC17 ; [.1C9E.0020.001A.FC17][.1C97.0020.001A.FC17] # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
-FDBF ; [.1C9E.0020.0019.FDBF][.1C97.0020.0019.FDBF][.1D2D.0020.001F.FDBF] # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
-FCAA ; [.1C9E.0020.0017.FCAA][.1D0C.0020.0017.FCAA] # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
-FC18 ; [.1C9E.0020.001A.FC18][.1D0C.0020.001A.FC18] # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
-FD5B ; [.1C9E.0020.0019.FD5B][.1D0C.0020.0019.FD5B][.1D2C.0020.001F.FD5B] # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD5A ; [.1C9E.0020.0019.FD5A][.1D0C.0020.0019.FD5A][.1D2D.0020.001F.FD5A] # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
-FD1B ; [.1C9E.0020.0019.FD1B][.1D2C.0020.0019.FD1B] # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
-FCFF ; [.1C9E.0020.001A.FCFF][.1D2C.0020.001A.FCFF] # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
-FD1C ; [.1C9E.0020.0019.FD1C][.1D2D.0020.0019.FD1C] # ARABIC LIGATURE HAH WITH YEH FINAL FORM
-FD00 ; [.1C9E.0020.001A.FD00][.1D2D.0020.001A.FD00] # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
-062E ; [.1C9F.0020.0002.062E] # ARABIC LETTER KHAH
-1EE17 ; [.1C9F.0020.0005.1EE17] # ARABIC MATHEMATICAL KHAH
-1EE37 ; [.1C9F.0020.0005.1EE37] # ARABIC MATHEMATICAL INITIAL KHAH
-1EE57 ; [.1C9F.0020.0005.1EE57] # ARABIC MATHEMATICAL TAILED KHAH
-1EE77 ; [.1C9F.0020.0005.1EE77] # ARABIC MATHEMATICAL STRETCHED KHAH
-1EE97 ; [.1C9F.0020.0005.1EE97] # ARABIC MATHEMATICAL LOOPED KHAH
-1EEB7 ; [.1C9F.0020.0005.1EEB7] # ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH
-FEA7 ; [.1C9F.0020.0017.FEA7] # ARABIC LETTER KHAH INITIAL FORM
-FEA8 ; [.1C9F.0020.0018.FEA8] # ARABIC LETTER KHAH MEDIAL FORM
-FEA6 ; [.1C9F.0020.0019.FEA6] # ARABIC LETTER KHAH FINAL FORM
-FEA5 ; [.1C9F.0020.001A.FEA5] # ARABIC LETTER KHAH ISOLATED FORM
-FCAB ; [.1C9F.0020.0017.FCAB][.1C97.0020.0017.FCAB] # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
-FC19 ; [.1C9F.0020.001A.FC19][.1C97.0020.001A.FC19] # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
-FC1A ; [.1C9F.0020.001A.FC1A][.1C9E.0020.001A.FC1A] # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
-FCAC ; [.1C9F.0020.0017.FCAC][.1D0C.0020.0017.FCAC] # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
-FC1B ; [.1C9F.0020.001A.FC1B][.1D0C.0020.001A.FC1B] # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
-FD1F ; [.1C9F.0020.0019.FD1F][.1D2C.0020.0019.FD1F] # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
-FD03 ; [.1C9F.0020.001A.FD03][.1D2C.0020.001A.FD03] # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
-FD20 ; [.1C9F.0020.0019.FD20][.1D2D.0020.0019.FD20] # ARABIC LIGATURE KHAH WITH YEH FINAL FORM
-FD04 ; [.1C9F.0020.001A.FD04][.1D2D.0020.001A.FD04] # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
-0681 ; [.1CA0.0020.0002.0681] # ARABIC LETTER HAH WITH HAMZA ABOVE
-0682 ; [.1CA1.0020.0002.0682] # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
-0685 ; [.1CA2.0020.0002.0685] # ARABIC LETTER HAH WITH THREE DOTS ABOVE
-0757 ; [.1CA3.0020.0002.0757] # ARABIC LETTER HAH WITH TWO DOTS ABOVE
-0758 ; [.1CA4.0020.0002.0758] # ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW
-076E ; [.1CA5.0020.0002.076E] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW
-076F ; [.1CA6.0020.0002.076F] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS
-0772 ; [.1CA7.0020.0002.0772] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE
-077C ; [.1CA8.0020.0002.077C] # ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW
-062F ; [.1CA9.0020.0002.062F] # ARABIC LETTER DAL
-1EE03 ; [.1CA9.0020.0005.1EE03] # ARABIC MATHEMATICAL DAL
-1EE83 ; [.1CA9.0020.0005.1EE83] # ARABIC MATHEMATICAL LOOPED DAL
-1EEA3 ; [.1CA9.0020.0005.1EEA3] # ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
-FEAA ; [.1CA9.0020.0019.FEAA] # ARABIC LETTER DAL FINAL FORM
-FEA9 ; [.1CA9.0020.001A.FEA9] # ARABIC LETTER DAL ISOLATED FORM
-0630 ; [.1CAA.0020.0002.0630] # ARABIC LETTER THAL
-1EE18 ; [.1CAA.0020.0005.1EE18] # ARABIC MATHEMATICAL THAL
-1EE98 ; [.1CAA.0020.0005.1EE98] # ARABIC MATHEMATICAL LOOPED THAL
-1EEB8 ; [.1CAA.0020.0005.1EEB8] # ARABIC MATHEMATICAL DOUBLE-STRUCK THAL
-FEAC ; [.1CAA.0020.0019.FEAC] # ARABIC LETTER THAL FINAL FORM
-FEAB ; [.1CAA.0020.001A.FEAB] # ARABIC LETTER THAL ISOLATED FORM
-FC5B ; [.1CAA.0020.001A.FC5B][.0000.00D1.001A.FC5B] # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
-0688 ; [.1CAB.0020.0002.0688] # ARABIC LETTER DDAL
-FB89 ; [.1CAB.0020.0019.FB89] # ARABIC LETTER DDAL FINAL FORM
-FB88 ; [.1CAB.0020.001A.FB88] # ARABIC LETTER DDAL ISOLATED FORM
-0689 ; [.1CAC.0020.0002.0689] # ARABIC LETTER DAL WITH RING
-068A ; [.1CAD.0020.0002.068A] # ARABIC LETTER DAL WITH DOT BELOW
-068B ; [.1CAE.0020.0002.068B] # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
-068C ; [.1CAF.0020.0002.068C] # ARABIC LETTER DAHAL
-FB85 ; [.1CAF.0020.0019.FB85] # ARABIC LETTER DAHAL FINAL FORM
-FB84 ; [.1CAF.0020.001A.FB84] # ARABIC LETTER DAHAL ISOLATED FORM
-068D ; [.1CB0.0020.0002.068D] # ARABIC LETTER DDAHAL
-FB83 ; [.1CB0.0020.0019.FB83] # ARABIC LETTER DDAHAL FINAL FORM
-FB82 ; [.1CB0.0020.001A.FB82] # ARABIC LETTER DDAHAL ISOLATED FORM
-068E ; [.1CB1.0020.0002.068E] # ARABIC LETTER DUL
-FB87 ; [.1CB1.0020.0019.FB87] # ARABIC LETTER DUL FINAL FORM
-FB86 ; [.1CB1.0020.001A.FB86] # ARABIC LETTER DUL ISOLATED FORM
-068F ; [.1CB2.0020.0002.068F] # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
-0690 ; [.1CB3.0020.0002.0690] # ARABIC LETTER DAL WITH FOUR DOTS ABOVE
-06EE ; [.1CB4.0020.0002.06EE] # ARABIC LETTER DAL WITH INVERTED V
-0759 ; [.1CB5.0020.0002.0759] # ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH
-075A ; [.1CB6.0020.0002.075A] # ARABIC LETTER DAL WITH INVERTED SMALL V BELOW
-0631 ; [.1CB7.0020.0002.0631] # ARABIC LETTER REH
-1EE13 ; [.1CB7.0020.0005.1EE13] # ARABIC MATHEMATICAL REH
-1EE93 ; [.1CB7.0020.0005.1EE93] # ARABIC MATHEMATICAL LOOPED REH
-1EEB3 ; [.1CB7.0020.0005.1EEB3] # ARABIC MATHEMATICAL DOUBLE-STRUCK REH
-FEAE ; [.1CB7.0020.0019.FEAE] # ARABIC LETTER REH FINAL FORM
-FEAD ; [.1CB7.0020.001A.FEAD] # ARABIC LETTER REH ISOLATED FORM
-FC5C ; [.1CB7.0020.001A.FC5C][.0000.00D1.001A.FC5C] # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
-FDF6 ; [.1CB7.0020.001A.FDF6][.1CC8.0020.001A.FDF6][.1D1F.0020.001F.FDF6][.1D05.0020.001F.FDF6] # ARABIC LIGATURE RASOUL ISOLATED FORM
-FDFC ; [.1CB7.0020.001A.FDFC][.1D2E.0020.001A.FDFC][.1C81.0020.001F.FDFC][.1D05.0020.001F.FDFC] # RIAL SIGN
-0632 ; [.1CB8.0020.0002.0632] # ARABIC LETTER ZAIN
-1EE06 ; [.1CB8.0020.0005.1EE06] # ARABIC MATHEMATICAL ZAIN
-1EE86 ; [.1CB8.0020.0005.1EE86] # ARABIC MATHEMATICAL LOOPED ZAIN
-1EEA6 ; [.1CB8.0020.0005.1EEA6] # ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN
-FEB0 ; [.1CB8.0020.0019.FEB0] # ARABIC LETTER ZAIN FINAL FORM
-FEAF ; [.1CB8.0020.001A.FEAF] # ARABIC LETTER ZAIN ISOLATED FORM
-0691 ; [.1CB9.0020.0002.0691] # ARABIC LETTER RREH
-FB8D ; [.1CB9.0020.0019.FB8D] # ARABIC LETTER RREH FINAL FORM
-FB8C ; [.1CB9.0020.001A.FB8C] # ARABIC LETTER RREH ISOLATED FORM
-0692 ; [.1CBA.0020.0002.0692] # ARABIC LETTER REH WITH SMALL V
-0693 ; [.1CBB.0020.0002.0693] # ARABIC LETTER REH WITH RING
-0694 ; [.1CBC.0020.0002.0694] # ARABIC LETTER REH WITH DOT BELOW
-0695 ; [.1CBD.0020.0002.0695] # ARABIC LETTER REH WITH SMALL V BELOW
-0696 ; [.1CBE.0020.0002.0696] # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
-0697 ; [.1CBF.0020.0002.0697] # ARABIC LETTER REH WITH TWO DOTS ABOVE
-0698 ; [.1CC0.0020.0002.0698] # ARABIC LETTER JEH
-FB8B ; [.1CC0.0020.0019.FB8B] # ARABIC LETTER JEH FINAL FORM
-FB8A ; [.1CC0.0020.001A.FB8A] # ARABIC LETTER JEH ISOLATED FORM
-0699 ; [.1CC1.0020.0002.0699] # ARABIC LETTER REH WITH FOUR DOTS ABOVE
-06EF ; [.1CC2.0020.0002.06EF] # ARABIC LETTER REH WITH INVERTED V
-075B ; [.1CC3.0020.0002.075B] # ARABIC LETTER REH WITH STROKE
-076B ; [.1CC4.0020.0002.076B] # ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE
-076C ; [.1CC5.0020.0002.076C] # ARABIC LETTER REH WITH HAMZA ABOVE
-0771 ; [.1CC6.0020.0002.0771] # ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS
-08AA ; [.1CC7.0020.0002.08AA] # ARABIC LETTER REH WITH LOOP
-0633 ; [.1CC8.0020.0002.0633] # ARABIC LETTER SEEN
-1EE0E ; [.1CC8.0020.0005.1EE0E] # ARABIC MATHEMATICAL SEEN
-1EE2E ; [.1CC8.0020.0005.1EE2E] # ARABIC MATHEMATICAL INITIAL SEEN
-1EE4E ; [.1CC8.0020.0005.1EE4E] # ARABIC MATHEMATICAL TAILED SEEN
-1EE6E ; [.1CC8.0020.0005.1EE6E] # ARABIC MATHEMATICAL STRETCHED SEEN
-1EE8E ; [.1CC8.0020.0005.1EE8E] # ARABIC MATHEMATICAL LOOPED SEEN
-1EEAE ; [.1CC8.0020.0005.1EEAE] # ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN
-FEB3 ; [.1CC8.0020.0017.FEB3] # ARABIC LETTER SEEN INITIAL FORM
-FEB4 ; [.1CC8.0020.0018.FEB4] # ARABIC LETTER SEEN MEDIAL FORM
-FEB2 ; [.1CC8.0020.0019.FEB2] # ARABIC LETTER SEEN FINAL FORM
-FEB1 ; [.1CC8.0020.001A.FEB1] # ARABIC LETTER SEEN ISOLATED FORM
-FCAD ; [.1CC8.0020.0017.FCAD][.1C97.0020.0017.FCAD] # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
-FD34 ; [.1CC8.0020.0018.FD34][.1C97.0020.0018.FD34] # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
-FC1C ; [.1CC8.0020.001A.FC1C][.1C97.0020.001A.FC1C] # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
-FD5D ; [.1CC8.0020.0017.FD5D][.1C97.0020.0017.FD5D][.1C9E.0020.001F.FD5D] # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
-FD5E ; [.1CC8.0020.0019.FD5E][.1C97.0020.0019.FD5E][.1D2C.0020.001F.FD5E] # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FCAE ; [.1CC8.0020.0017.FCAE][.1C9E.0020.0017.FCAE] # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
-FD35 ; [.1CC8.0020.0018.FD35][.1C9E.0020.0018.FD35] # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
-FC1D ; [.1CC8.0020.001A.FC1D][.1C9E.0020.001A.FC1D] # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
-FD5C ; [.1CC8.0020.0017.FD5C][.1C9E.0020.0017.FD5C][.1C97.0020.001F.FD5C] # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
-FCAF ; [.1CC8.0020.0017.FCAF][.1C9F.0020.0017.FCAF] # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
-FD36 ; [.1CC8.0020.0018.FD36][.1C9F.0020.0018.FD36] # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
-FC1E ; [.1CC8.0020.001A.FC1E][.1C9F.0020.001A.FC1E] # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
-FDA8 ; [.1CC8.0020.0019.FDA8][.1C9F.0020.0019.FDA8][.1D2C.0020.001F.FDA8] # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
-FDC6 ; [.1CC8.0020.0019.FDC6][.1C9F.0020.0019.FDC6][.1D2D.0020.001F.FDC6] # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
-FD2A ; [.1CC8.0020.0019.FD2A][.1CB7.0020.0019.FD2A] # ARABIC LIGATURE SEEN WITH REH FINAL FORM
-FD0E ; [.1CC8.0020.001A.FD0E][.1CB7.0020.001A.FD0E] # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
-FCB0 ; [.1CC8.0020.0017.FCB0][.1D0C.0020.0017.FCB0] # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
-FCE7 ; [.1CC8.0020.0018.FCE7][.1D0C.0020.0018.FCE7] # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
-FC1F ; [.1CC8.0020.001A.FC1F][.1D0C.0020.001A.FC1F] # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
-FD61 ; [.1CC8.0020.0017.FD61][.1D0C.0020.0017.FD61][.1C97.0020.001F.FD61] # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
-FD60 ; [.1CC8.0020.0017.FD60][.1D0C.0020.0017.FD60][.1C9E.0020.001F.FD60] # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
-FD5F ; [.1CC8.0020.0019.FD5F][.1D0C.0020.0019.FD5F][.1C9E.0020.001F.FD5F] # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
-FD63 ; [.1CC8.0020.0017.FD63][.1D0C.0020.0017.FD63][.1D0C.0020.001F.FD63] # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
-FD62 ; [.1CC8.0020.0019.FD62][.1D0C.0020.0019.FD62][.1D0C.0020.001F.FD62] # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
-FD31 ; [.1CC8.0020.0017.FD31][.1D19.0020.0017.FD31] # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
-FCE8 ; [.1CC8.0020.0018.FCE8][.1D19.0020.0018.FCE8] # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
-FD17 ; [.1CC8.0020.0019.FD17][.1D2C.0020.0019.FD17] # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
-FCFB ; [.1CC8.0020.001A.FCFB][.1D2C.0020.001A.FCFB] # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
-FD18 ; [.1CC8.0020.0019.FD18][.1D2D.0020.0019.FD18] # ARABIC LIGATURE SEEN WITH YEH FINAL FORM
-FCFC ; [.1CC8.0020.001A.FCFC][.1D2D.0020.001A.FCFC] # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
-0634 ; [.1CC9.0020.0002.0634] # ARABIC LETTER SHEEN
-1EE14 ; [.1CC9.0020.0005.1EE14] # ARABIC MATHEMATICAL SHEEN
-1EE34 ; [.1CC9.0020.0005.1EE34] # ARABIC MATHEMATICAL INITIAL SHEEN
-1EE54 ; [.1CC9.0020.0005.1EE54] # ARABIC MATHEMATICAL TAILED SHEEN
-1EE74 ; [.1CC9.0020.0005.1EE74] # ARABIC MATHEMATICAL STRETCHED SHEEN
-1EE94 ; [.1CC9.0020.0005.1EE94] # ARABIC MATHEMATICAL LOOPED SHEEN
-1EEB4 ; [.1CC9.0020.0005.1EEB4] # ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN
-FEB7 ; [.1CC9.0020.0017.FEB7] # ARABIC LETTER SHEEN INITIAL FORM
-FEB8 ; [.1CC9.0020.0018.FEB8] # ARABIC LETTER SHEEN MEDIAL FORM
-FEB6 ; [.1CC9.0020.0019.FEB6] # ARABIC LETTER SHEEN FINAL FORM
-FEB5 ; [.1CC9.0020.001A.FEB5] # ARABIC LETTER SHEEN ISOLATED FORM
-FD2D ; [.1CC9.0020.0017.FD2D][.1C97.0020.0017.FD2D] # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
-FD37 ; [.1CC9.0020.0018.FD37][.1C97.0020.0018.FD37] # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
-FD25 ; [.1CC9.0020.0019.FD25][.1C97.0020.0019.FD25] # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
-FD09 ; [.1CC9.0020.001A.FD09][.1C97.0020.001A.FD09] # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
-FD69 ; [.1CC9.0020.0019.FD69][.1C97.0020.0019.FD69][.1D2D.0020.001F.FD69] # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
-FD2E ; [.1CC9.0020.0017.FD2E][.1C9E.0020.0017.FD2E] # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
-FD38 ; [.1CC9.0020.0018.FD38][.1C9E.0020.0018.FD38] # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
-FD26 ; [.1CC9.0020.0019.FD26][.1C9E.0020.0019.FD26] # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
-FD0A ; [.1CC9.0020.001A.FD0A][.1C9E.0020.001A.FD0A] # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
-FD68 ; [.1CC9.0020.0017.FD68][.1C9E.0020.0017.FD68][.1D0C.0020.001F.FD68] # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
-FD67 ; [.1CC9.0020.0019.FD67][.1C9E.0020.0019.FD67][.1D0C.0020.001F.FD67] # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
-FDAA ; [.1CC9.0020.0019.FDAA][.1C9E.0020.0019.FDAA][.1D2D.0020.001F.FDAA] # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
-FD2F ; [.1CC9.0020.0017.FD2F][.1C9F.0020.0017.FD2F] # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
-FD39 ; [.1CC9.0020.0018.FD39][.1C9F.0020.0018.FD39] # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
-FD27 ; [.1CC9.0020.0019.FD27][.1C9F.0020.0019.FD27] # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
-FD0B ; [.1CC9.0020.001A.FD0B][.1C9F.0020.001A.FD0B] # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
-FD29 ; [.1CC9.0020.0019.FD29][.1CB7.0020.0019.FD29] # ARABIC LIGATURE SHEEN WITH REH FINAL FORM
-FD0D ; [.1CC9.0020.001A.FD0D][.1CB7.0020.001A.FD0D] # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
-FD30 ; [.1CC9.0020.0017.FD30][.1D0C.0020.0017.FD30] # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
-FCE9 ; [.1CC9.0020.0018.FCE9][.1D0C.0020.0018.FCE9] # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
-FD28 ; [.1CC9.0020.0019.FD28][.1D0C.0020.0019.FD28] # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
-FD0C ; [.1CC9.0020.001A.FD0C][.1D0C.0020.001A.FD0C] # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
-FD6B ; [.1CC9.0020.0017.FD6B][.1D0C.0020.0017.FD6B][.1C9F.0020.001F.FD6B] # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
-FD6A ; [.1CC9.0020.0019.FD6A][.1D0C.0020.0019.FD6A][.1C9F.0020.001F.FD6A] # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
-FD6D ; [.1CC9.0020.0017.FD6D][.1D0C.0020.0017.FD6D][.1D0C.0020.001F.FD6D] # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
-FD6C ; [.1CC9.0020.0019.FD6C][.1D0C.0020.0019.FD6C][.1D0C.0020.001F.FD6C] # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
-FD32 ; [.1CC9.0020.0017.FD32][.1D19.0020.0017.FD32] # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
-FCEA ; [.1CC9.0020.0018.FCEA][.1D19.0020.0018.FCEA] # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
-FD19 ; [.1CC9.0020.0019.FD19][.1D2C.0020.0019.FD19] # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
-FCFD ; [.1CC9.0020.001A.FCFD][.1D2C.0020.001A.FCFD] # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
-FD1A ; [.1CC9.0020.0019.FD1A][.1D2D.0020.0019.FD1A] # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
-FCFE ; [.1CC9.0020.001A.FCFE][.1D2D.0020.001A.FCFE] # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
-069A ; [.1CCA.0020.0002.069A] # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
-069B ; [.1CCB.0020.0002.069B] # ARABIC LETTER SEEN WITH THREE DOTS BELOW
-069C ; [.1CCC.0020.0002.069C] # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
-06FA ; [.1CCD.0020.0002.06FA] # ARABIC LETTER SHEEN WITH DOT BELOW
-075C ; [.1CCE.0020.0002.075C] # ARABIC LETTER SEEN WITH FOUR DOTS ABOVE
-076D ; [.1CCF.0020.0002.076D] # ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
-0770 ; [.1CD0.0020.0002.0770] # ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS
-077D ; [.1CD1.0020.0002.077D] # ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE
-077E ; [.1CD2.0020.0002.077E] # ARABIC LETTER SEEN WITH INVERTED V
-0635 ; [.1CD3.0020.0002.0635] # ARABIC LETTER SAD
-1EE11 ; [.1CD3.0020.0005.1EE11] # ARABIC MATHEMATICAL SAD
-1EE31 ; [.1CD3.0020.0005.1EE31] # ARABIC MATHEMATICAL INITIAL SAD
-1EE51 ; [.1CD3.0020.0005.1EE51] # ARABIC MATHEMATICAL TAILED SAD
-1EE71 ; [.1CD3.0020.0005.1EE71] # ARABIC MATHEMATICAL STRETCHED SAD
-1EE91 ; [.1CD3.0020.0005.1EE91] # ARABIC MATHEMATICAL LOOPED SAD
-1EEB1 ; [.1CD3.0020.0005.1EEB1] # ARABIC MATHEMATICAL DOUBLE-STRUCK SAD
-FEBB ; [.1CD3.0020.0017.FEBB] # ARABIC LETTER SAD INITIAL FORM
-FEBC ; [.1CD3.0020.0018.FEBC] # ARABIC LETTER SAD MEDIAL FORM
-FEBA ; [.1CD3.0020.0019.FEBA] # ARABIC LETTER SAD FINAL FORM
-FEB9 ; [.1CD3.0020.001A.FEB9] # ARABIC LETTER SAD ISOLATED FORM
-FCB1 ; [.1CD3.0020.0017.FCB1][.1C9E.0020.0017.FCB1] # ARABIC LIGATURE SAD WITH HAH INITIAL FORM
-FC20 ; [.1CD3.0020.001A.FC20][.1C9E.0020.001A.FC20] # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
-FD65 ; [.1CD3.0020.0017.FD65][.1C9E.0020.0017.FD65][.1C9E.0020.001F.FD65] # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
-FD64 ; [.1CD3.0020.0019.FD64][.1C9E.0020.0019.FD64][.1C9E.0020.001F.FD64] # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
-FDA9 ; [.1CD3.0020.0019.FDA9][.1C9E.0020.0019.FDA9][.1D2D.0020.001F.FDA9] # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
-FCB2 ; [.1CD3.0020.0017.FCB2][.1C9F.0020.0017.FCB2] # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
-FD2B ; [.1CD3.0020.0019.FD2B][.1CB7.0020.0019.FD2B] # ARABIC LIGATURE SAD WITH REH FINAL FORM
-FD0F ; [.1CD3.0020.001A.FD0F][.1CB7.0020.001A.FD0F] # ARABIC LIGATURE SAD WITH REH ISOLATED FORM
-FDF5 ; [.1CD3.0020.001A.FDF5][.1D05.0020.001A.FDF5][.1CDC.0020.001F.FDF5][.1D0C.0020.001F.FDF5] # ARABIC LIGATURE SALAM ISOLATED FORM
-FDF9 ; [.1CD3.0020.001A.FDF9][.1D05.0020.001A.FDF9][.1D2C.0020.001F.FDF9] # ARABIC LIGATURE SALLA ISOLATED FORM
-FDFA ; [.1CD3.0020.001A.FDFA][.1D05.0020.001A.FDFA][.1D2C.0020.001F.FDFA][*020A.0020.001F.FDFA][.1C81.0020.001F.FDFA][.1D05.0020.001F.FDFA][.1D05.0020.001F.FDFA][.1D19.0020.001F.FDFA][*020A.0020.001F.FDFA][.1CDC.0020.001F.FDFA][.1D05.0020.001F.FDFA][.1D2D.0020.001F.FDFA][.1D19.0020.001F.FDFA][*020A.0020.001F.FDFA][.1D1F.0020.001F.FDFA][.1CC8.0020.001F.FDFA][.1D05.0020.001F.FDFA][.1D0C.0020.001F.FDFA] # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
-FDF0 ; [.1CD3.0020.001A.FDF0][.1D05.0020.001A.FDF0][.1D3A.0020.001F.FDF0] # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
-FCB3 ; [.1CD3.0020.0017.FCB3][.1D0C.0020.0017.FCB3] # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
-FC21 ; [.1CD3.0020.001A.FC21][.1D0C.0020.001A.FC21] # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
-FDC5 ; [.1CD3.0020.0017.FDC5][.1D0C.0020.0017.FDC5][.1D0C.0020.001F.FDC5] # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
-FD66 ; [.1CD3.0020.0019.FD66][.1D0C.0020.0019.FD66][.1D0C.0020.001F.FD66] # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
-FD21 ; [.1CD3.0020.0019.FD21][.1D2C.0020.0019.FD21] # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
-FD05 ; [.1CD3.0020.001A.FD05][.1D2C.0020.001A.FD05] # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
-FD22 ; [.1CD3.0020.0019.FD22][.1D2D.0020.0019.FD22] # ARABIC LIGATURE SAD WITH YEH FINAL FORM
-FD06 ; [.1CD3.0020.001A.FD06][.1D2D.0020.001A.FD06] # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
-0636 ; [.1CD4.0020.0002.0636] # ARABIC LETTER DAD
-1EE19 ; [.1CD4.0020.0005.1EE19] # ARABIC MATHEMATICAL DAD
-1EE39 ; [.1CD4.0020.0005.1EE39] # ARABIC MATHEMATICAL INITIAL DAD
-1EE59 ; [.1CD4.0020.0005.1EE59] # ARABIC MATHEMATICAL TAILED DAD
-1EE79 ; [.1CD4.0020.0005.1EE79] # ARABIC MATHEMATICAL STRETCHED DAD
-1EE99 ; [.1CD4.0020.0005.1EE99] # ARABIC MATHEMATICAL LOOPED DAD
-1EEB9 ; [.1CD4.0020.0005.1EEB9] # ARABIC MATHEMATICAL DOUBLE-STRUCK DAD
-FEBF ; [.1CD4.0020.0017.FEBF] # ARABIC LETTER DAD INITIAL FORM
-FEC0 ; [.1CD4.0020.0018.FEC0] # ARABIC LETTER DAD MEDIAL FORM
-FEBE ; [.1CD4.0020.0019.FEBE] # ARABIC LETTER DAD FINAL FORM
-FEBD ; [.1CD4.0020.001A.FEBD] # ARABIC LETTER DAD ISOLATED FORM
-FCB4 ; [.1CD4.0020.0017.FCB4][.1C97.0020.0017.FCB4] # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
-FC22 ; [.1CD4.0020.001A.FC22][.1C97.0020.001A.FC22] # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
-FCB5 ; [.1CD4.0020.0017.FCB5][.1C9E.0020.0017.FCB5] # ARABIC LIGATURE DAD WITH HAH INITIAL FORM
-FC23 ; [.1CD4.0020.001A.FC23][.1C9E.0020.001A.FC23] # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
-FD6E ; [.1CD4.0020.0019.FD6E][.1C9E.0020.0019.FD6E][.1D2C.0020.001F.FD6E] # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
-FDAB ; [.1CD4.0020.0019.FDAB][.1C9E.0020.0019.FDAB][.1D2D.0020.001F.FDAB] # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
-FCB6 ; [.1CD4.0020.0017.FCB6][.1C9F.0020.0017.FCB6] # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
-FC24 ; [.1CD4.0020.001A.FC24][.1C9F.0020.001A.FC24] # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
-FD70 ; [.1CD4.0020.0017.FD70][.1C9F.0020.0017.FD70][.1D0C.0020.001F.FD70] # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
-FD6F ; [.1CD4.0020.0019.FD6F][.1C9F.0020.0019.FD6F][.1D0C.0020.001F.FD6F] # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
-FD2C ; [.1CD4.0020.0019.FD2C][.1CB7.0020.0019.FD2C] # ARABIC LIGATURE DAD WITH REH FINAL FORM
-FD10 ; [.1CD4.0020.001A.FD10][.1CB7.0020.001A.FD10] # ARABIC LIGATURE DAD WITH REH ISOLATED FORM
-FCB7 ; [.1CD4.0020.0017.FCB7][.1D0C.0020.0017.FCB7] # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
-FC25 ; [.1CD4.0020.001A.FC25][.1D0C.0020.001A.FC25] # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
-FD23 ; [.1CD4.0020.0019.FD23][.1D2C.0020.0019.FD23] # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
-FD07 ; [.1CD4.0020.001A.FD07][.1D2C.0020.001A.FD07] # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
-FD24 ; [.1CD4.0020.0019.FD24][.1D2D.0020.0019.FD24] # ARABIC LIGATURE DAD WITH YEH FINAL FORM
-FD08 ; [.1CD4.0020.001A.FD08][.1D2D.0020.001A.FD08] # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
-069D ; [.1CD5.0020.0002.069D] # ARABIC LETTER SAD WITH TWO DOTS BELOW
-069E ; [.1CD6.0020.0002.069E] # ARABIC LETTER SAD WITH THREE DOTS ABOVE
-06FB ; [.1CD7.0020.0002.06FB] # ARABIC LETTER DAD WITH DOT BELOW
-0637 ; [.1CD8.0020.0002.0637] # ARABIC LETTER TAH
-1EE08 ; [.1CD8.0020.0005.1EE08] # ARABIC MATHEMATICAL TAH
-1EE68 ; [.1CD8.0020.0005.1EE68] # ARABIC MATHEMATICAL STRETCHED TAH
-1EE88 ; [.1CD8.0020.0005.1EE88] # ARABIC MATHEMATICAL LOOPED TAH
-1EEA8 ; [.1CD8.0020.0005.1EEA8] # ARABIC MATHEMATICAL DOUBLE-STRUCK TAH
-FEC3 ; [.1CD8.0020.0017.FEC3] # ARABIC LETTER TAH INITIAL FORM
-FEC4 ; [.1CD8.0020.0018.FEC4] # ARABIC LETTER TAH MEDIAL FORM
-FEC2 ; [.1CD8.0020.0019.FEC2] # ARABIC LETTER TAH FINAL FORM
-FEC1 ; [.1CD8.0020.001A.FEC1] # ARABIC LETTER TAH ISOLATED FORM
-FCB8 ; [.1CD8.0020.0017.FCB8][.1C9E.0020.0017.FCB8] # ARABIC LIGATURE TAH WITH HAH INITIAL FORM
-FC26 ; [.1CD8.0020.001A.FC26][.1C9E.0020.001A.FC26] # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
-FD33 ; [.1CD8.0020.0017.FD33][.1D0C.0020.0017.FD33] # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
-FD3A ; [.1CD8.0020.0018.FD3A][.1D0C.0020.0018.FD3A] # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
-FC27 ; [.1CD8.0020.001A.FC27][.1D0C.0020.001A.FC27] # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
-FD72 ; [.1CD8.0020.0017.FD72][.1D0C.0020.0017.FD72][.1C9E.0020.001F.FD72] # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
-FD71 ; [.1CD8.0020.0019.FD71][.1D0C.0020.0019.FD71][.1C9E.0020.001F.FD71] # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
-FD73 ; [.1CD8.0020.0017.FD73][.1D0C.0020.0017.FD73][.1D0C.0020.001F.FD73] # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
-FD74 ; [.1CD8.0020.0019.FD74][.1D0C.0020.0019.FD74][.1D2D.0020.001F.FD74] # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
-FD11 ; [.1CD8.0020.0019.FD11][.1D2C.0020.0019.FD11] # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
-FCF5 ; [.1CD8.0020.001A.FCF5][.1D2C.0020.001A.FCF5] # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
-FD12 ; [.1CD8.0020.0019.FD12][.1D2D.0020.0019.FD12] # ARABIC LIGATURE TAH WITH YEH FINAL FORM
-FCF6 ; [.1CD8.0020.001A.FCF6][.1D2D.0020.001A.FCF6] # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
-0638 ; [.1CD9.0020.0002.0638] # ARABIC LETTER ZAH
-1EE1A ; [.1CD9.0020.0005.1EE1A] # ARABIC MATHEMATICAL ZAH
-1EE7A ; [.1CD9.0020.0005.1EE7A] # ARABIC MATHEMATICAL STRETCHED ZAH
-1EE9A ; [.1CD9.0020.0005.1EE9A] # ARABIC MATHEMATICAL LOOPED ZAH
-1EEBA ; [.1CD9.0020.0005.1EEBA] # ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH
-FEC7 ; [.1CD9.0020.0017.FEC7] # ARABIC LETTER ZAH INITIAL FORM
-FEC8 ; [.1CD9.0020.0018.FEC8] # ARABIC LETTER ZAH MEDIAL FORM
-FEC6 ; [.1CD9.0020.0019.FEC6] # ARABIC LETTER ZAH FINAL FORM
-FEC5 ; [.1CD9.0020.001A.FEC5] # ARABIC LETTER ZAH ISOLATED FORM
-FCB9 ; [.1CD9.0020.0017.FCB9][.1D0C.0020.0017.FCB9] # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
-FD3B ; [.1CD9.0020.0018.FD3B][.1D0C.0020.0018.FD3B] # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
-FC28 ; [.1CD9.0020.001A.FC28][.1D0C.0020.001A.FC28] # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
-069F ; [.1CDA.0020.0002.069F] # ARABIC LETTER TAH WITH THREE DOTS ABOVE
-08A3 ; [.1CDB.0020.0002.08A3] # ARABIC LETTER TAH WITH TWO DOTS ABOVE
-0639 ; [.1CDC.0020.0002.0639] # ARABIC LETTER AIN
-1EE0F ; [.1CDC.0020.0005.1EE0F] # ARABIC MATHEMATICAL AIN
-1EE2F ; [.1CDC.0020.0005.1EE2F] # ARABIC MATHEMATICAL INITIAL AIN
-1EE4F ; [.1CDC.0020.0005.1EE4F] # ARABIC MATHEMATICAL TAILED AIN
-1EE6F ; [.1CDC.0020.0005.1EE6F] # ARABIC MATHEMATICAL STRETCHED AIN
-1EE8F ; [.1CDC.0020.0005.1EE8F] # ARABIC MATHEMATICAL LOOPED AIN
-1EEAF ; [.1CDC.0020.0005.1EEAF] # ARABIC MATHEMATICAL DOUBLE-STRUCK AIN
-FECB ; [.1CDC.0020.0017.FECB] # ARABIC LETTER AIN INITIAL FORM
-FECC ; [.1CDC.0020.0018.FECC] # ARABIC LETTER AIN MEDIAL FORM
-FECA ; [.1CDC.0020.0019.FECA] # ARABIC LETTER AIN FINAL FORM
-FEC9 ; [.1CDC.0020.001A.FEC9] # ARABIC LETTER AIN ISOLATED FORM
-FCBA ; [.1CDC.0020.0017.FCBA][.1C97.0020.0017.FCBA] # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
-FC29 ; [.1CDC.0020.001A.FC29][.1C97.0020.001A.FC29] # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
-FDC4 ; [.1CDC.0020.0017.FDC4][.1C97.0020.0017.FDC4][.1D0C.0020.001F.FDC4] # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
-FD75 ; [.1CDC.0020.0019.FD75][.1C97.0020.0019.FD75][.1D0C.0020.001F.FD75] # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
-FDF7 ; [.1CDC.0020.001A.FDF7][.1D05.0020.001A.FDF7][.1D2D.0020.001F.FDF7][.1D19.0020.001F.FDF7] # ARABIC LIGATURE ALAYHE ISOLATED FORM
-FCBB ; [.1CDC.0020.0017.FCBB][.1D0C.0020.0017.FCBB] # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
-FC2A ; [.1CDC.0020.001A.FC2A][.1D0C.0020.001A.FC2A] # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
-FD77 ; [.1CDC.0020.0017.FD77][.1D0C.0020.0017.FD77][.1D0C.0020.001F.FD77] # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
-FD76 ; [.1CDC.0020.0019.FD76][.1D0C.0020.0019.FD76][.1D0C.0020.001F.FD76] # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
-FD78 ; [.1CDC.0020.0019.FD78][.1D0C.0020.0019.FD78][.1D2C.0020.001F.FD78] # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FDB6 ; [.1CDC.0020.0019.FDB6][.1D0C.0020.0019.FDB6][.1D2D.0020.001F.FDB6] # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
-FD13 ; [.1CDC.0020.0019.FD13][.1D2C.0020.0019.FD13] # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
-FCF7 ; [.1CDC.0020.001A.FCF7][.1D2C.0020.001A.FCF7] # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
-FD14 ; [.1CDC.0020.0019.FD14][.1D2D.0020.0019.FD14] # ARABIC LIGATURE AIN WITH YEH FINAL FORM
-FCF8 ; [.1CDC.0020.001A.FCF8][.1D2D.0020.001A.FCF8] # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
-063A ; [.1CDD.0020.0002.063A] # ARABIC LETTER GHAIN
-1EE1B ; [.1CDD.0020.0005.1EE1B] # ARABIC MATHEMATICAL GHAIN
-1EE3B ; [.1CDD.0020.0005.1EE3B] # ARABIC MATHEMATICAL INITIAL GHAIN
-1EE5B ; [.1CDD.0020.0005.1EE5B] # ARABIC MATHEMATICAL TAILED GHAIN
-1EE7B ; [.1CDD.0020.0005.1EE7B] # ARABIC MATHEMATICAL STRETCHED GHAIN
-1EE9B ; [.1CDD.0020.0005.1EE9B] # ARABIC MATHEMATICAL LOOPED GHAIN
-1EEBB ; [.1CDD.0020.0005.1EEBB] # ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
-FECF ; [.1CDD.0020.0017.FECF] # ARABIC LETTER GHAIN INITIAL FORM
-FED0 ; [.1CDD.0020.0018.FED0] # ARABIC LETTER GHAIN MEDIAL FORM
-FECE ; [.1CDD.0020.0019.FECE] # ARABIC LETTER GHAIN FINAL FORM
-FECD ; [.1CDD.0020.001A.FECD] # ARABIC LETTER GHAIN ISOLATED FORM
-FCBC ; [.1CDD.0020.0017.FCBC][.1C97.0020.0017.FCBC] # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
-FC2B ; [.1CDD.0020.001A.FC2B][.1C97.0020.001A.FC2B] # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
-FCBD ; [.1CDD.0020.0017.FCBD][.1D0C.0020.0017.FCBD] # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
-FC2C ; [.1CDD.0020.001A.FC2C][.1D0C.0020.001A.FC2C] # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
-FD79 ; [.1CDD.0020.0019.FD79][.1D0C.0020.0019.FD79][.1D0C.0020.001F.FD79] # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
-FD7B ; [.1CDD.0020.0019.FD7B][.1D0C.0020.0019.FD7B][.1D2C.0020.001F.FD7B] # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD7A ; [.1CDD.0020.0019.FD7A][.1D0C.0020.0019.FD7A][.1D2D.0020.001F.FD7A] # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
-FD15 ; [.1CDD.0020.0019.FD15][.1D2C.0020.0019.FD15] # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
-FCF9 ; [.1CDD.0020.001A.FCF9][.1D2C.0020.001A.FCF9] # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
-FD16 ; [.1CDD.0020.0019.FD16][.1D2D.0020.0019.FD16] # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
-FCFA ; [.1CDD.0020.001A.FCFA][.1D2D.0020.001A.FCFA] # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
-06A0 ; [.1CDE.0020.0002.06A0] # ARABIC LETTER AIN WITH THREE DOTS ABOVE
-06FC ; [.1CDF.0020.0002.06FC] # ARABIC LETTER GHAIN WITH DOT BELOW
-075D ; [.1CE0.0020.0002.075D] # ARABIC LETTER AIN WITH TWO DOTS ABOVE
-075E ; [.1CE1.0020.0002.075E] # ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE
-075F ; [.1CE2.0020.0002.075F] # ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE
-0641 ; [.1CE3.0020.0002.0641] # ARABIC LETTER FEH
-1EE10 ; [.1CE3.0020.0005.1EE10] # ARABIC MATHEMATICAL FEH
-1EE30 ; [.1CE3.0020.0005.1EE30] # ARABIC MATHEMATICAL INITIAL FEH
-1EE70 ; [.1CE3.0020.0005.1EE70] # ARABIC MATHEMATICAL STRETCHED FEH
-1EE90 ; [.1CE3.0020.0005.1EE90] # ARABIC MATHEMATICAL LOOPED FEH
-1EEB0 ; [.1CE3.0020.0005.1EEB0] # ARABIC MATHEMATICAL DOUBLE-STRUCK FEH
-FED3 ; [.1CE3.0020.0017.FED3] # ARABIC LETTER FEH INITIAL FORM
-FED4 ; [.1CE3.0020.0018.FED4] # ARABIC LETTER FEH MEDIAL FORM
-FED2 ; [.1CE3.0020.0019.FED2] # ARABIC LETTER FEH FINAL FORM
-FED1 ; [.1CE3.0020.001A.FED1] # ARABIC LETTER FEH ISOLATED FORM
-FCBE ; [.1CE3.0020.0017.FCBE][.1C97.0020.0017.FCBE] # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
-FC2D ; [.1CE3.0020.001A.FC2D][.1C97.0020.001A.FC2D] # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
-FCBF ; [.1CE3.0020.0017.FCBF][.1C9E.0020.0017.FCBF] # ARABIC LIGATURE FEH WITH HAH INITIAL FORM
-FC2E ; [.1CE3.0020.001A.FC2E][.1C9E.0020.001A.FC2E] # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
-FCC0 ; [.1CE3.0020.0017.FCC0][.1C9F.0020.0017.FCC0] # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
-FC2F ; [.1CE3.0020.001A.FC2F][.1C9F.0020.001A.FC2F] # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
-FD7D ; [.1CE3.0020.0017.FD7D][.1C9F.0020.0017.FD7D][.1D0C.0020.001F.FD7D] # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
-FD7C ; [.1CE3.0020.0019.FD7C][.1C9F.0020.0019.FD7C][.1D0C.0020.001F.FD7C] # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
-FCC1 ; [.1CE3.0020.0017.FCC1][.1D0C.0020.0017.FCC1] # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
-FC30 ; [.1CE3.0020.001A.FC30][.1D0C.0020.001A.FC30] # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
-FDC1 ; [.1CE3.0020.0019.FDC1][.1D0C.0020.0019.FDC1][.1D2D.0020.001F.FDC1] # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
-FC7C ; [.1CE3.0020.0019.FC7C][.1D2C.0020.0019.FC7C] # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
-FC31 ; [.1CE3.0020.001A.FC31][.1D2C.0020.001A.FC31] # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
-FC7D ; [.1CE3.0020.0019.FC7D][.1D2D.0020.0019.FC7D] # ARABIC LIGATURE FEH WITH YEH FINAL FORM
-FC32 ; [.1CE3.0020.001A.FC32][.1D2D.0020.001A.FC32] # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
-06A1 ; [.1CE4.0020.0002.06A1] # ARABIC LETTER DOTLESS FEH
-1EE1E ; [.1CE4.0020.0005.1EE1E] # ARABIC MATHEMATICAL DOTLESS FEH
-1EE7E ; [.1CE4.0020.0005.1EE7E] # ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
-06A2 ; [.1CE5.0020.0002.06A2] # ARABIC LETTER FEH WITH DOT MOVED BELOW
-06A3 ; [.1CE6.0020.0002.06A3] # ARABIC LETTER FEH WITH DOT BELOW
-06A4 ; [.1CE7.0020.0002.06A4] # ARABIC LETTER VEH
-FB6C ; [.1CE7.0020.0017.FB6C] # ARABIC LETTER VEH INITIAL FORM
-FB6D ; [.1CE7.0020.0018.FB6D] # ARABIC LETTER VEH MEDIAL FORM
-FB6B ; [.1CE7.0020.0019.FB6B] # ARABIC LETTER VEH FINAL FORM
-FB6A ; [.1CE7.0020.001A.FB6A] # ARABIC LETTER VEH ISOLATED FORM
-08A4 ; [.1CE8.0020.0002.08A4] # ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE
-06A5 ; [.1CE9.0020.0002.06A5] # ARABIC LETTER FEH WITH THREE DOTS BELOW
-06A6 ; [.1CEA.0020.0002.06A6] # ARABIC LETTER PEHEH
-FB70 ; [.1CEA.0020.0017.FB70] # ARABIC LETTER PEHEH INITIAL FORM
-FB71 ; [.1CEA.0020.0018.FB71] # ARABIC LETTER PEHEH MEDIAL FORM
-FB6F ; [.1CEA.0020.0019.FB6F] # ARABIC LETTER PEHEH FINAL FORM
-FB6E ; [.1CEA.0020.001A.FB6E] # ARABIC LETTER PEHEH ISOLATED FORM
-0760 ; [.1CEB.0020.0002.0760] # ARABIC LETTER FEH WITH TWO DOTS BELOW
-0761 ; [.1CEC.0020.0002.0761] # ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW
-066F ; [.1CED.0020.0002.066F] # ARABIC LETTER DOTLESS QAF
-1EE1F ; [.1CED.0020.0005.1EE1F] # ARABIC MATHEMATICAL DOTLESS QAF
-1EE5F ; [.1CED.0020.0005.1EE5F] # ARABIC MATHEMATICAL TAILED DOTLESS QAF
-0642 ; [.1CEE.0020.0002.0642] # ARABIC LETTER QAF
-1EE12 ; [.1CEE.0020.0005.1EE12] # ARABIC MATHEMATICAL QAF
-1EE32 ; [.1CEE.0020.0005.1EE32] # ARABIC MATHEMATICAL INITIAL QAF
-1EE52 ; [.1CEE.0020.0005.1EE52] # ARABIC MATHEMATICAL TAILED QAF
-1EE72 ; [.1CEE.0020.0005.1EE72] # ARABIC MATHEMATICAL STRETCHED QAF
-1EE92 ; [.1CEE.0020.0005.1EE92] # ARABIC MATHEMATICAL LOOPED QAF
-1EEB2 ; [.1CEE.0020.0005.1EEB2] # ARABIC MATHEMATICAL DOUBLE-STRUCK QAF
-FED7 ; [.1CEE.0020.0017.FED7] # ARABIC LETTER QAF INITIAL FORM
-FED8 ; [.1CEE.0020.0018.FED8] # ARABIC LETTER QAF MEDIAL FORM
-FED6 ; [.1CEE.0020.0019.FED6] # ARABIC LETTER QAF FINAL FORM
-FED5 ; [.1CEE.0020.001A.FED5] # ARABIC LETTER QAF ISOLATED FORM
-FCC2 ; [.1CEE.0020.0017.FCC2][.1C9E.0020.0017.FCC2] # ARABIC LIGATURE QAF WITH HAH INITIAL FORM
-FC33 ; [.1CEE.0020.001A.FC33][.1C9E.0020.001A.FC33] # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
-FDF1 ; [.1CEE.0020.001A.FDF1][.1D05.0020.001A.FDF1][.1D3A.0020.001F.FDF1] # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
-FCC3 ; [.1CEE.0020.0017.FCC3][.1D0C.0020.0017.FCC3] # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
-FC34 ; [.1CEE.0020.001A.FC34][.1D0C.0020.001A.FC34] # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
-FDB4 ; [.1CEE.0020.0017.FDB4][.1D0C.0020.0017.FDB4][.1C9E.0020.001F.FDB4] # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
-FD7E ; [.1CEE.0020.0019.FD7E][.1D0C.0020.0019.FD7E][.1C9E.0020.001F.FD7E] # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
-FD7F ; [.1CEE.0020.0019.FD7F][.1D0C.0020.0019.FD7F][.1D0C.0020.001F.FD7F] # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
-FDB2 ; [.1CEE.0020.0019.FDB2][.1D0C.0020.0019.FDB2][.1D2D.0020.001F.FDB2] # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
-FC7E ; [.1CEE.0020.0019.FC7E][.1D2C.0020.0019.FC7E] # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
-FC35 ; [.1CEE.0020.001A.FC35][.1D2C.0020.001A.FC35] # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
-FC7F ; [.1CEE.0020.0019.FC7F][.1D2D.0020.0019.FC7F] # ARABIC LIGATURE QAF WITH YEH FINAL FORM
-FC36 ; [.1CEE.0020.001A.FC36][.1D2D.0020.001A.FC36] # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
-06A7 ; [.1CEF.0020.0002.06A7] # ARABIC LETTER QAF WITH DOT ABOVE
-06A8 ; [.1CF0.0020.0002.06A8] # ARABIC LETTER QAF WITH THREE DOTS ABOVE
-08A5 ; [.1CF1.0020.0002.08A5] # ARABIC LETTER QAF WITH DOT BELOW
-0643 ; [.1CF2.0020.0002.0643] # ARABIC LETTER KAF
-1EE0A ; [.1CF2.0020.0005.1EE0A] # ARABIC MATHEMATICAL KAF
-1EE2A ; [.1CF2.0020.0005.1EE2A] # ARABIC MATHEMATICAL INITIAL KAF
-1EE6A ; [.1CF2.0020.0005.1EE6A] # ARABIC MATHEMATICAL STRETCHED KAF
-FEDB ; [.1CF2.0020.0017.FEDB] # ARABIC LETTER KAF INITIAL FORM
-FEDC ; [.1CF2.0020.0018.FEDC] # ARABIC LETTER KAF MEDIAL FORM
-FEDA ; [.1CF2.0020.0019.FEDA] # ARABIC LETTER KAF FINAL FORM
-FED9 ; [.1CF2.0020.001A.FED9] # ARABIC LETTER KAF ISOLATED FORM
-FC80 ; [.1CF2.0020.0019.FC80][.1C81.0020.0019.FC80] # ARABIC LIGATURE KAF WITH ALEF FINAL FORM
-FC37 ; [.1CF2.0020.001A.FC37][.1C81.0020.001A.FC37] # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
-FCC4 ; [.1CF2.0020.0017.FCC4][.1C97.0020.0017.FCC4] # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
-FC38 ; [.1CF2.0020.001A.FC38][.1C97.0020.001A.FC38] # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
-FCC5 ; [.1CF2.0020.0017.FCC5][.1C9E.0020.0017.FCC5] # ARABIC LIGATURE KAF WITH HAH INITIAL FORM
-FC39 ; [.1CF2.0020.001A.FC39][.1C9E.0020.001A.FC39] # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
-FCC6 ; [.1CF2.0020.0017.FCC6][.1C9F.0020.0017.FCC6] # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
-FC3A ; [.1CF2.0020.001A.FC3A][.1C9F.0020.001A.FC3A] # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
-FCC7 ; [.1CF2.0020.0017.FCC7][.1D05.0020.0017.FCC7] # ARABIC LIGATURE KAF WITH LAM INITIAL FORM
-FCEB ; [.1CF2.0020.0018.FCEB][.1D05.0020.0018.FCEB] # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
-FC81 ; [.1CF2.0020.0019.FC81][.1D05.0020.0019.FC81] # ARABIC LIGATURE KAF WITH LAM FINAL FORM
-FC3B ; [.1CF2.0020.001A.FC3B][.1D05.0020.001A.FC3B] # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
-FCC8 ; [.1CF2.0020.0017.FCC8][.1D0C.0020.0017.FCC8] # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
-FCEC ; [.1CF2.0020.0018.FCEC][.1D0C.0020.0018.FCEC] # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
-FC82 ; [.1CF2.0020.0019.FC82][.1D0C.0020.0019.FC82] # ARABIC LIGATURE KAF WITH MEEM FINAL FORM
-FC3C ; [.1CF2.0020.001A.FC3C][.1D0C.0020.001A.FC3C] # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
-FDC3 ; [.1CF2.0020.0017.FDC3][.1D0C.0020.0017.FDC3][.1D0C.0020.001F.FDC3] # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
-FDBB ; [.1CF2.0020.0019.FDBB][.1D0C.0020.0019.FDBB][.1D0C.0020.001F.FDBB] # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
-FDB7 ; [.1CF2.0020.0019.FDB7][.1D0C.0020.0019.FDB7][.1D2D.0020.001F.FDB7] # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
-FC83 ; [.1CF2.0020.0019.FC83][.1D2C.0020.0019.FC83] # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
-FC3D ; [.1CF2.0020.001A.FC3D][.1D2C.0020.001A.FC3D] # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
-FC84 ; [.1CF2.0020.0019.FC84][.1D2D.0020.0019.FC84] # ARABIC LIGATURE KAF WITH YEH FINAL FORM
-FC3E ; [.1CF2.0020.001A.FC3E][.1D2D.0020.001A.FC3E] # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
-06A9 ; [.1CF3.0020.0002.06A9] # ARABIC LETTER KEHEH
-FB90 ; [.1CF3.0020.0017.FB90] # ARABIC LETTER KEHEH INITIAL FORM
-FB91 ; [.1CF3.0020.0018.FB91] # ARABIC LETTER KEHEH MEDIAL FORM
-FB8F ; [.1CF3.0020.0019.FB8F] # ARABIC LETTER KEHEH FINAL FORM
-FB8E ; [.1CF3.0020.001A.FB8E] # ARABIC LETTER KEHEH ISOLATED FORM
-06AA ; [.1CF4.0020.0002.06AA] # ARABIC LETTER SWASH KAF
-06AB ; [.1CF5.0020.0002.06AB] # ARABIC LETTER KAF WITH RING
-06AC ; [.1CF6.0020.0002.06AC] # ARABIC LETTER KAF WITH DOT ABOVE
-077F ; [.1CF7.0020.0002.077F] # ARABIC LETTER KAF WITH TWO DOTS ABOVE
-06AD ; [.1CF8.0020.0002.06AD] # ARABIC LETTER NG
-FBD5 ; [.1CF8.0020.0017.FBD5] # ARABIC LETTER NG INITIAL FORM
-FBD6 ; [.1CF8.0020.0018.FBD6] # ARABIC LETTER NG MEDIAL FORM
-FBD4 ; [.1CF8.0020.0019.FBD4] # ARABIC LETTER NG FINAL FORM
-FBD3 ; [.1CF8.0020.001A.FBD3] # ARABIC LETTER NG ISOLATED FORM
-06AE ; [.1CF9.0020.0002.06AE] # ARABIC LETTER KAF WITH THREE DOTS BELOW
-06AF ; [.1CFA.0020.0002.06AF] # ARABIC LETTER GAF
-FB94 ; [.1CFA.0020.0017.FB94] # ARABIC LETTER GAF INITIAL FORM
-FB95 ; [.1CFA.0020.0018.FB95] # ARABIC LETTER GAF MEDIAL FORM
-FB93 ; [.1CFA.0020.0019.FB93] # ARABIC LETTER GAF FINAL FORM
-FB92 ; [.1CFA.0020.001A.FB92] # ARABIC LETTER GAF ISOLATED FORM
-06B0 ; [.1CFB.0020.0002.06B0] # ARABIC LETTER GAF WITH RING
-06B1 ; [.1CFC.0020.0002.06B1] # ARABIC LETTER NGOEH
-FB9C ; [.1CFC.0020.0017.FB9C] # ARABIC LETTER NGOEH INITIAL FORM
-FB9D ; [.1CFC.0020.0018.FB9D] # ARABIC LETTER NGOEH MEDIAL FORM
-FB9B ; [.1CFC.0020.0019.FB9B] # ARABIC LETTER NGOEH FINAL FORM
-FB9A ; [.1CFC.0020.001A.FB9A] # ARABIC LETTER NGOEH ISOLATED FORM
-06B2 ; [.1CFD.0020.0002.06B2] # ARABIC LETTER GAF WITH TWO DOTS BELOW
-06B3 ; [.1CFE.0020.0002.06B3] # ARABIC LETTER GUEH
-FB98 ; [.1CFE.0020.0017.FB98] # ARABIC LETTER GUEH INITIAL FORM
-FB99 ; [.1CFE.0020.0018.FB99] # ARABIC LETTER GUEH MEDIAL FORM
-FB97 ; [.1CFE.0020.0019.FB97] # ARABIC LETTER GUEH FINAL FORM
-FB96 ; [.1CFE.0020.001A.FB96] # ARABIC LETTER GUEH ISOLATED FORM
-06B4 ; [.1CFF.0020.0002.06B4] # ARABIC LETTER GAF WITH THREE DOTS ABOVE
-0762 ; [.1D00.0020.0002.0762] # ARABIC LETTER KEHEH WITH DOT ABOVE
-063B ; [.1D01.0020.0002.063B] # ARABIC LETTER KEHEH WITH TWO DOTS ABOVE
-063C ; [.1D02.0020.0002.063C] # ARABIC LETTER KEHEH WITH THREE DOTS BELOW
-0763 ; [.1D03.0020.0002.0763] # ARABIC LETTER KEHEH WITH THREE DOTS ABOVE
-0764 ; [.1D04.0020.0002.0764] # ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW
-0644 ; [.1D05.0020.0002.0644] # ARABIC LETTER LAM
-1EE0B ; [.1D05.0020.0005.1EE0B] # ARABIC MATHEMATICAL LAM
-1EE2B ; [.1D05.0020.0005.1EE2B] # ARABIC MATHEMATICAL INITIAL LAM
-1EE4B ; [.1D05.0020.0005.1EE4B] # ARABIC MATHEMATICAL TAILED LAM
-1EE8B ; [.1D05.0020.0005.1EE8B] # ARABIC MATHEMATICAL LOOPED LAM
-1EEAB ; [.1D05.0020.0005.1EEAB] # ARABIC MATHEMATICAL DOUBLE-STRUCK LAM
-FEDF ; [.1D05.0020.0017.FEDF] # ARABIC LETTER LAM INITIAL FORM
-FEE0 ; [.1D05.0020.0018.FEE0] # ARABIC LETTER LAM MEDIAL FORM
-FEDE ; [.1D05.0020.0019.FEDE] # ARABIC LETTER LAM FINAL FORM
-FEDD ; [.1D05.0020.001A.FEDD] # ARABIC LETTER LAM ISOLATED FORM
-FEF6 ; [.1D05.0020.0019.FEF6][.1C74.0020.0019.FEF6] # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-FEF5 ; [.1D05.0020.001A.FEF5][.1C74.0020.001A.FEF5] # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
-FEF8 ; [.1D05.0020.0019.FEF8][.1C75.0020.0019.FEF8] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-FEF7 ; [.1D05.0020.001A.FEF7][.1C75.0020.001A.FEF7] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
-FEFA ; [.1D05.0020.0019.FEFA][.1C79.0020.0019.FEFA] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
-FEF9 ; [.1D05.0020.001A.FEF9][.1C79.0020.001A.FEF9] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
-FEFC ; [.1D05.0020.0019.FEFC][.1C81.0020.0019.FEFC] # ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-FEFB ; [.1D05.0020.001A.FEFB][.1C81.0020.001A.FEFB] # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
-FCC9 ; [.1D05.0020.0017.FCC9][.1C97.0020.0017.FCC9] # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
-FC3F ; [.1D05.0020.001A.FC3F][.1C97.0020.001A.FC3F] # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
-FD83 ; [.1D05.0020.0017.FD83][.1C97.0020.0017.FD83][.1C97.0020.001F.FD83] # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
-FD84 ; [.1D05.0020.0019.FD84][.1C97.0020.0019.FD84][.1C97.0020.001F.FD84] # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
-FDBA ; [.1D05.0020.0017.FDBA][.1C97.0020.0017.FDBA][.1D0C.0020.001F.FDBA] # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
-FDBC ; [.1D05.0020.0019.FDBC][.1C97.0020.0019.FDBC][.1D0C.0020.001F.FDBC] # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
-FDAC ; [.1D05.0020.0019.FDAC][.1C97.0020.0019.FDAC][.1D2D.0020.001F.FDAC] # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
-FCCA ; [.1D05.0020.0017.FCCA][.1C9E.0020.0017.FCCA] # ARABIC LIGATURE LAM WITH HAH INITIAL FORM
-FC40 ; [.1D05.0020.001A.FC40][.1C9E.0020.001A.FC40] # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
-FDB5 ; [.1D05.0020.0017.FDB5][.1C9E.0020.0017.FDB5][.1D0C.0020.001F.FDB5] # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
-FD80 ; [.1D05.0020.0019.FD80][.1C9E.0020.0019.FD80][.1D0C.0020.001F.FD80] # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
-FD82 ; [.1D05.0020.0019.FD82][.1C9E.0020.0019.FD82][.1D2C.0020.001F.FD82] # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD81 ; [.1D05.0020.0019.FD81][.1C9E.0020.0019.FD81][.1D2D.0020.001F.FD81] # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
-FCCB ; [.1D05.0020.0017.FCCB][.1C9F.0020.0017.FCCB] # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
-FC41 ; [.1D05.0020.001A.FC41][.1C9F.0020.001A.FC41] # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
-FD86 ; [.1D05.0020.0017.FD86][.1C9F.0020.0017.FD86][.1D0C.0020.001F.FD86] # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
-FD85 ; [.1D05.0020.0019.FD85][.1C9F.0020.0019.FD85][.1D0C.0020.001F.FD85] # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
-FCCC ; [.1D05.0020.0017.FCCC][.1D0C.0020.0017.FCCC] # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
-FCED ; [.1D05.0020.0018.FCED][.1D0C.0020.0018.FCED] # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
-FC85 ; [.1D05.0020.0019.FC85][.1D0C.0020.0019.FC85] # ARABIC LIGATURE LAM WITH MEEM FINAL FORM
-FC42 ; [.1D05.0020.001A.FC42][.1D0C.0020.001A.FC42] # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
-FD88 ; [.1D05.0020.0017.FD88][.1D0C.0020.0017.FD88][.1C9E.0020.001F.FD88] # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
-FD87 ; [.1D05.0020.0019.FD87][.1D0C.0020.0019.FD87][.1C9E.0020.001F.FD87] # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
-FDAD ; [.1D05.0020.0019.FDAD][.1D0C.0020.0019.FDAD][.1D2D.0020.001F.FDAD] # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
-FCCD ; [.1D05.0020.0017.FCCD][.1D19.0020.0017.FCCD] # ARABIC LIGATURE LAM WITH HEH INITIAL FORM
-FC86 ; [.1D05.0020.0019.FC86][.1D2C.0020.0019.FC86] # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
-FC43 ; [.1D05.0020.001A.FC43][.1D2C.0020.001A.FC43] # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
-FC87 ; [.1D05.0020.0019.FC87][.1D2D.0020.0019.FC87] # ARABIC LIGATURE LAM WITH YEH FINAL FORM
-FC44 ; [.1D05.0020.001A.FC44][.1D2D.0020.001A.FC44] # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
-06B5 ; [.1D06.0020.0002.06B5] # ARABIC LETTER LAM WITH SMALL V
-06B6 ; [.1D07.0020.0002.06B6] # ARABIC LETTER LAM WITH DOT ABOVE
-06B7 ; [.1D08.0020.0002.06B7] # ARABIC LETTER LAM WITH THREE DOTS ABOVE
-06B8 ; [.1D09.0020.0002.06B8] # ARABIC LETTER LAM WITH THREE DOTS BELOW
-076A ; [.1D0A.0020.0002.076A] # ARABIC LETTER LAM WITH BAR
-08A6 ; [.1D0B.0020.0002.08A6] # ARABIC LETTER LAM WITH DOUBLE BAR
-0645 ; [.1D0C.0020.0002.0645] # ARABIC LETTER MEEM
-1EE0C ; [.1D0C.0020.0005.1EE0C] # ARABIC MATHEMATICAL MEEM
-1EE2C ; [.1D0C.0020.0005.1EE2C] # ARABIC MATHEMATICAL INITIAL MEEM
-1EE6C ; [.1D0C.0020.0005.1EE6C] # ARABIC MATHEMATICAL STRETCHED MEEM
-1EE8C ; [.1D0C.0020.0005.1EE8C] # ARABIC MATHEMATICAL LOOPED MEEM
-1EEAC ; [.1D0C.0020.0005.1EEAC] # ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM
-FEE3 ; [.1D0C.0020.0017.FEE3] # ARABIC LETTER MEEM INITIAL FORM
-FEE4 ; [.1D0C.0020.0018.FEE4] # ARABIC LETTER MEEM MEDIAL FORM
-FEE2 ; [.1D0C.0020.0019.FEE2] # ARABIC LETTER MEEM FINAL FORM
-FEE1 ; [.1D0C.0020.001A.FEE1] # ARABIC LETTER MEEM ISOLATED FORM
-06FE ; [.1D0C.0020.0004.06FE][.0000.013A.0004.06FE] # ARABIC SIGN SINDHI POSTPOSITION MEN
-FC88 ; [.1D0C.0020.0019.FC88][.1C81.0020.0019.FC88] # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
-FCCE ; [.1D0C.0020.0017.FCCE][.1C97.0020.0017.FCCE] # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
-FC45 ; [.1D0C.0020.001A.FC45][.1C97.0020.001A.FC45] # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
-FD8C ; [.1D0C.0020.0017.FD8C][.1C97.0020.0017.FD8C][.1C9E.0020.001F.FD8C] # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
-FD92 ; [.1D0C.0020.0017.FD92][.1C97.0020.0017.FD92][.1C9F.0020.001F.FD92] # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
-FD8D ; [.1D0C.0020.0017.FD8D][.1C97.0020.0017.FD8D][.1D0C.0020.001F.FD8D] # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
-FDC0 ; [.1D0C.0020.0019.FDC0][.1C97.0020.0019.FDC0][.1D2D.0020.001F.FDC0] # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
-FCCF ; [.1D0C.0020.0017.FCCF][.1C9E.0020.0017.FCCF] # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
-FC46 ; [.1D0C.0020.001A.FC46][.1C9E.0020.001A.FC46] # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
-FD89 ; [.1D0C.0020.0017.FD89][.1C9E.0020.0017.FD89][.1C97.0020.001F.FD89] # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
-FD8A ; [.1D0C.0020.0017.FD8A][.1C9E.0020.0017.FD8A][.1D0C.0020.001F.FD8A] # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
-FDF4 ; [.1D0C.0020.001A.FDF4][.1C9E.0020.001A.FDF4][.1D0C.0020.001F.FDF4][.1CA9.0020.001F.FDF4] # ARABIC LIGATURE MOHAMMAD ISOLATED FORM
-FD8B ; [.1D0C.0020.0019.FD8B][.1C9E.0020.0019.FD8B][.1D2D.0020.001F.FD8B] # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
-FCD0 ; [.1D0C.0020.0017.FCD0][.1C9F.0020.0017.FCD0] # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
-FC47 ; [.1D0C.0020.001A.FC47][.1C9F.0020.001A.FC47] # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
-FD8E ; [.1D0C.0020.0017.FD8E][.1C9F.0020.0017.FD8E][.1C97.0020.001F.FD8E] # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
-FD8F ; [.1D0C.0020.0017.FD8F][.1C9F.0020.0017.FD8F][.1D0C.0020.001F.FD8F] # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
-FDB9 ; [.1D0C.0020.0019.FDB9][.1C9F.0020.0019.FDB9][.1D2D.0020.001F.FDB9] # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
-FCD1 ; [.1D0C.0020.0017.FCD1][.1D0C.0020.0017.FCD1] # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
-FC89 ; [.1D0C.0020.0019.FC89][.1D0C.0020.0019.FC89] # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
-FC48 ; [.1D0C.0020.001A.FC48][.1D0C.0020.001A.FC48] # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
-FDB1 ; [.1D0C.0020.0019.FDB1][.1D0C.0020.0019.FDB1][.1D2D.0020.001F.FDB1] # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
-FC49 ; [.1D0C.0020.001A.FC49][.1D2C.0020.001A.FC49] # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
-FC4A ; [.1D0C.0020.001A.FC4A][.1D2D.0020.001A.FC4A] # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
-0765 ; [.1D0D.0020.0002.0765] # ARABIC LETTER MEEM WITH DOT ABOVE
-0766 ; [.1D0E.0020.0002.0766] # ARABIC LETTER MEEM WITH DOT BELOW
-08A7 ; [.1D0F.0020.0002.08A7] # ARABIC LETTER MEEM WITH THREE DOTS ABOVE
-0646 ; [.1D10.0020.0002.0646] # ARABIC LETTER NOON
-1EE0D ; [.1D10.0020.0005.1EE0D] # ARABIC MATHEMATICAL NOON
-1EE2D ; [.1D10.0020.0005.1EE2D] # ARABIC MATHEMATICAL INITIAL NOON
-1EE4D ; [.1D10.0020.0005.1EE4D] # ARABIC MATHEMATICAL TAILED NOON
-1EE6D ; [.1D10.0020.0005.1EE6D] # ARABIC MATHEMATICAL STRETCHED NOON
-1EE8D ; [.1D10.0020.0005.1EE8D] # ARABIC MATHEMATICAL LOOPED NOON
-1EEAD ; [.1D10.0020.0005.1EEAD] # ARABIC MATHEMATICAL DOUBLE-STRUCK NOON
-FEE7 ; [.1D10.0020.0017.FEE7] # ARABIC LETTER NOON INITIAL FORM
-FEE8 ; [.1D10.0020.0018.FEE8] # ARABIC LETTER NOON MEDIAL FORM
-FEE6 ; [.1D10.0020.0019.FEE6] # ARABIC LETTER NOON FINAL FORM
-FEE5 ; [.1D10.0020.001A.FEE5] # ARABIC LETTER NOON ISOLATED FORM
-FCD2 ; [.1D10.0020.0017.FCD2][.1C97.0020.0017.FCD2] # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
-FC4B ; [.1D10.0020.001A.FC4B][.1C97.0020.001A.FC4B] # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
-FDB8 ; [.1D10.0020.0017.FDB8][.1C97.0020.0017.FDB8][.1C9E.0020.001F.FDB8] # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
-FDBD ; [.1D10.0020.0019.FDBD][.1C97.0020.0019.FDBD][.1C9E.0020.001F.FDBD] # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
-FD98 ; [.1D10.0020.0017.FD98][.1C97.0020.0017.FD98][.1D0C.0020.001F.FD98] # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
-FD97 ; [.1D10.0020.0019.FD97][.1C97.0020.0019.FD97][.1D0C.0020.001F.FD97] # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
-FD99 ; [.1D10.0020.0019.FD99][.1C97.0020.0019.FD99][.1D2C.0020.001F.FD99] # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FDC7 ; [.1D10.0020.0019.FDC7][.1C97.0020.0019.FDC7][.1D2D.0020.001F.FDC7] # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
-FCD3 ; [.1D10.0020.0017.FCD3][.1C9E.0020.0017.FCD3] # ARABIC LIGATURE NOON WITH HAH INITIAL FORM
-FC4C ; [.1D10.0020.001A.FC4C][.1C9E.0020.001A.FC4C] # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
-FD95 ; [.1D10.0020.0017.FD95][.1C9E.0020.0017.FD95][.1D0C.0020.001F.FD95] # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
-FD96 ; [.1D10.0020.0019.FD96][.1C9E.0020.0019.FD96][.1D2C.0020.001F.FD96] # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
-FDB3 ; [.1D10.0020.0019.FDB3][.1C9E.0020.0019.FDB3][.1D2D.0020.001F.FDB3] # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
-FCD4 ; [.1D10.0020.0017.FCD4][.1C9F.0020.0017.FCD4] # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
-FC4D ; [.1D10.0020.001A.FC4D][.1C9F.0020.001A.FC4D] # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
-FC8A ; [.1D10.0020.0019.FC8A][.1CB7.0020.0019.FC8A] # ARABIC LIGATURE NOON WITH REH FINAL FORM
-FC8B ; [.1D10.0020.0019.FC8B][.1CB8.0020.0019.FC8B] # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
-FCD5 ; [.1D10.0020.0017.FCD5][.1D0C.0020.0017.FCD5] # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
-FCEE ; [.1D10.0020.0018.FCEE][.1D0C.0020.0018.FCEE] # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
-FC8C ; [.1D10.0020.0019.FC8C][.1D0C.0020.0019.FC8C] # ARABIC LIGATURE NOON WITH MEEM FINAL FORM
-FC4E ; [.1D10.0020.001A.FC4E][.1D0C.0020.001A.FC4E] # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
-FD9B ; [.1D10.0020.0019.FD9B][.1D0C.0020.0019.FD9B][.1D2C.0020.001F.FD9B] # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD9A ; [.1D10.0020.0019.FD9A][.1D0C.0020.0019.FD9A][.1D2D.0020.001F.FD9A] # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
-FC8D ; [.1D10.0020.0019.FC8D][.1D10.0020.0019.FC8D] # ARABIC LIGATURE NOON WITH NOON FINAL FORM
-FCD6 ; [.1D10.0020.0017.FCD6][.1D19.0020.0017.FCD6] # ARABIC LIGATURE NOON WITH HEH INITIAL FORM
-FCEF ; [.1D10.0020.0018.FCEF][.1D19.0020.0018.FCEF] # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
-FC8E ; [.1D10.0020.0019.FC8E][.1D2C.0020.0019.FC8E] # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
-FC4F ; [.1D10.0020.001A.FC4F][.1D2C.0020.001A.FC4F] # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
-FC8F ; [.1D10.0020.0019.FC8F][.1D2D.0020.0019.FC8F] # ARABIC LIGATURE NOON WITH YEH FINAL FORM
-FC50 ; [.1D10.0020.001A.FC50][.1D2D.0020.001A.FC50] # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
-06BA ; [.1D11.0020.0002.06BA] # ARABIC LETTER NOON GHUNNA
-1EE1D ; [.1D11.0020.0005.1EE1D] # ARABIC MATHEMATICAL DOTLESS NOON
-1EE5D ; [.1D11.0020.0005.1EE5D] # ARABIC MATHEMATICAL TAILED DOTLESS NOON
-FB9F ; [.1D11.0020.0019.FB9F] # ARABIC LETTER NOON GHUNNA FINAL FORM
-FB9E ; [.1D11.0020.001A.FB9E] # ARABIC LETTER NOON GHUNNA ISOLATED FORM
-06BB ; [.1D12.0020.0002.06BB] # ARABIC LETTER RNOON
-FBA2 ; [.1D12.0020.0017.FBA2] # ARABIC LETTER RNOON INITIAL FORM
-FBA3 ; [.1D12.0020.0018.FBA3] # ARABIC LETTER RNOON MEDIAL FORM
-FBA1 ; [.1D12.0020.0019.FBA1] # ARABIC LETTER RNOON FINAL FORM
-FBA0 ; [.1D12.0020.001A.FBA0] # ARABIC LETTER RNOON ISOLATED FORM
-06BC ; [.1D13.0020.0002.06BC] # ARABIC LETTER NOON WITH RING
-06BD ; [.1D14.0020.0002.06BD] # ARABIC LETTER NOON WITH THREE DOTS ABOVE
-06B9 ; [.1D15.0020.0002.06B9] # ARABIC LETTER NOON WITH DOT BELOW
-0767 ; [.1D16.0020.0002.0767] # ARABIC LETTER NOON WITH TWO DOTS BELOW
-0768 ; [.1D17.0020.0002.0768] # ARABIC LETTER NOON WITH SMALL TAH
-0769 ; [.1D18.0020.0002.0769] # ARABIC LETTER NOON WITH SMALL V
-0647 ; [.1D19.0020.0002.0647] # ARABIC LETTER HEH
-1EE24 ; [.1D19.0020.0005.1EE24] # ARABIC MATHEMATICAL INITIAL HEH
-1EE64 ; [.1D19.0020.0005.1EE64] # ARABIC MATHEMATICAL STRETCHED HEH
-1EE84 ; [.1D19.0020.0005.1EE84] # ARABIC MATHEMATICAL LOOPED HEH
-FEEB ; [.1D19.0020.0017.FEEB] # ARABIC LETTER HEH INITIAL FORM
-FEEC ; [.1D19.0020.0018.FEEC] # ARABIC LETTER HEH MEDIAL FORM
-FEEA ; [.1D19.0020.0019.FEEA] # ARABIC LETTER HEH FINAL FORM
-FEE9 ; [.1D19.0020.001A.FEE9] # ARABIC LETTER HEH ISOLATED FORM
-FCD9 ; [.1D19.0020.0017.FCD9][.0000.00D1.0017.FCD9] # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
-FCD7 ; [.1D19.0020.0017.FCD7][.1C97.0020.0017.FCD7] # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
-FC51 ; [.1D19.0020.001A.FC51][.1C97.0020.001A.FC51] # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
-FCD8 ; [.1D19.0020.0017.FCD8][.1D0C.0020.0017.FCD8] # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
-FC52 ; [.1D19.0020.001A.FC52][.1D0C.0020.001A.FC52] # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
-FD93 ; [.1D19.0020.0017.FD93][.1D0C.0020.0017.FD93][.1C97.0020.001F.FD93] # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
-FD94 ; [.1D19.0020.0017.FD94][.1D0C.0020.0017.FD94][.1D0C.0020.001F.FD94] # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
-FC53 ; [.1D19.0020.001A.FC53][.1D2C.0020.001A.FC53] # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
-FC54 ; [.1D19.0020.001A.FC54][.1D2D.0020.001A.FC54] # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
-06BE ; [.1D1A.0020.0002.06BE] # ARABIC LETTER HEH DOACHASHMEE
-FBAC ; [.1D1A.0020.0017.FBAC] # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
-FBAD ; [.1D1A.0020.0018.FBAD] # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
-FBAB ; [.1D1A.0020.0019.FBAB] # ARABIC LETTER HEH DOACHASHMEE FINAL FORM
-FBAA ; [.1D1A.0020.001A.FBAA] # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
-06C1 ; [.1D1B.0020.0002.06C1] # ARABIC LETTER HEH GOAL
-FBA8 ; [.1D1B.0020.0017.FBA8] # ARABIC LETTER HEH GOAL INITIAL FORM
-FBA9 ; [.1D1B.0020.0018.FBA9] # ARABIC LETTER HEH GOAL MEDIAL FORM
-FBA7 ; [.1D1B.0020.0019.FBA7] # ARABIC LETTER HEH GOAL FINAL FORM
-FBA6 ; [.1D1B.0020.001A.FBA6] # ARABIC LETTER HEH GOAL ISOLATED FORM
-06C2 ; [.1D1B.0020.0002.06C1][.0000.00BE.0002.0654] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
-06C3 ; [.1D1C.0020.0002.06C3] # ARABIC LETTER TEH MARBUTA GOAL
-06FF ; [.1D1D.0020.0002.06FF] # ARABIC LETTER HEH WITH INVERTED V
-06D5 ; [.1D1E.0020.0002.06D5] # ARABIC LETTER AE
-06C0 ; [.1D1E.0020.0002.06D5][.0000.00BE.0002.0654] # ARABIC LETTER HEH WITH YEH ABOVE
-FBA5 ; [.1D1E.0020.0019.FBA5][.0000.00BE.0019.FBA5] # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
-FBA4 ; [.1D1E.0020.001A.FBA4][.0000.00BE.001A.FBA4] # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
-0648 ; [.1D1F.0020.0002.0648] # ARABIC LETTER WAW
-06E5 ; [.1D1F.0020.0004.06E5] # ARABIC SMALL WAW
-1EE05 ; [.1D1F.0020.0005.1EE05] # ARABIC MATHEMATICAL WAW
-1EE85 ; [.1D1F.0020.0005.1EE85] # ARABIC MATHEMATICAL LOOPED WAW
-1EEA5 ; [.1D1F.0020.0005.1EEA5] # ARABIC MATHEMATICAL DOUBLE-STRUCK WAW
-FEEE ; [.1D1F.0020.0019.FEEE] # ARABIC LETTER WAW FINAL FORM
-FEED ; [.1D1F.0020.001A.FEED] # ARABIC LETTER WAW ISOLATED FORM
-0676 ; [.1D1F.0020.0004.0676][.1C73.0020.0004.0676] # ARABIC LETTER HIGH HAMZA WAW
-FDF8 ; [.1D1F.0020.001A.FDF8][.1CC8.0020.001A.FDF8][.1D05.0020.001F.FDF8][.1D0C.0020.001F.FDF8] # ARABIC LIGATURE WASALLAM ISOLATED FORM
-06C4 ; [.1D20.0020.0002.06C4] # ARABIC LETTER WAW WITH RING
-06C5 ; [.1D21.0020.0002.06C5] # ARABIC LETTER KIRGHIZ OE
-FBE1 ; [.1D21.0020.0019.FBE1] # ARABIC LETTER KIRGHIZ OE FINAL FORM
-FBE0 ; [.1D21.0020.001A.FBE0] # ARABIC LETTER KIRGHIZ OE ISOLATED FORM
-06C6 ; [.1D22.0020.0002.06C6] # ARABIC LETTER OE
-FBDA ; [.1D22.0020.0019.FBDA] # ARABIC LETTER OE FINAL FORM
-FBD9 ; [.1D22.0020.001A.FBD9] # ARABIC LETTER OE ISOLATED FORM
-06C7 ; [.1D23.0020.0002.06C7] # ARABIC LETTER U
-FBD8 ; [.1D23.0020.0019.FBD8] # ARABIC LETTER U FINAL FORM
-FBD7 ; [.1D23.0020.001A.FBD7] # ARABIC LETTER U ISOLATED FORM
-0677 ; [.1D23.0020.0004.0677][.1C73.0020.0004.0677] # ARABIC LETTER U WITH HAMZA ABOVE
-FBDD ; [.1D23.0020.001A.FBDD][.1C73.0020.001A.FBDD] # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
-06C8 ; [.1D24.0020.0002.06C8] # ARABIC LETTER YU
-FBDC ; [.1D24.0020.0019.FBDC] # ARABIC LETTER YU FINAL FORM
-FBDB ; [.1D24.0020.001A.FBDB] # ARABIC LETTER YU ISOLATED FORM
-06C9 ; [.1D25.0020.0002.06C9] # ARABIC LETTER KIRGHIZ YU
-FBE3 ; [.1D25.0020.0019.FBE3] # ARABIC LETTER KIRGHIZ YU FINAL FORM
-FBE2 ; [.1D25.0020.001A.FBE2] # ARABIC LETTER KIRGHIZ YU ISOLATED FORM
-06CA ; [.1D26.0020.0002.06CA] # ARABIC LETTER WAW WITH TWO DOTS ABOVE
-06CB ; [.1D27.0020.0002.06CB] # ARABIC LETTER VE
-FBDF ; [.1D27.0020.0019.FBDF] # ARABIC LETTER VE FINAL FORM
-FBDE ; [.1D27.0020.001A.FBDE] # ARABIC LETTER VE ISOLATED FORM
-06CF ; [.1D28.0020.0002.06CF] # ARABIC LETTER WAW WITH DOT ABOVE
-0778 ; [.1D29.0020.0002.0778] # ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
-0779 ; [.1D2A.0020.0002.0779] # ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
-08AB ; [.1D2B.0020.0002.08AB] # ARABIC LETTER WAW WITH DOT WITHIN
-0649 ; [.1D2C.0020.0002.0649] # ARABIC LETTER ALEF MAKSURA
-FBE8 ; [.1D2C.0020.0017.FBE8] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
-FBE9 ; [.1D2C.0020.0018.FBE9] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
-FEF0 ; [.1D2C.0020.0019.FEF0] # ARABIC LETTER ALEF MAKSURA FINAL FORM
-FEEF ; [.1D2C.0020.001A.FEEF] # ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-FC90 ; [.1D2C.0020.0019.FC90][.0000.00D1.0019.FC90] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
-FC5D ; [.1D2C.0020.001A.FC5D][.0000.00D1.001A.FC5D] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
-064A ; [.1D2D.0020.0002.064A] # ARABIC LETTER YEH
-06E6 ; [.1D2D.0020.0004.06E6] # ARABIC SMALL YEH
-1EE09 ; [.1D2D.0020.0005.1EE09] # ARABIC MATHEMATICAL YEH
-1EE29 ; [.1D2D.0020.0005.1EE29] # ARABIC MATHEMATICAL INITIAL YEH
-1EE49 ; [.1D2D.0020.0005.1EE49] # ARABIC MATHEMATICAL TAILED YEH
-1EE69 ; [.1D2D.0020.0005.1EE69] # ARABIC MATHEMATICAL STRETCHED YEH
-1EE89 ; [.1D2D.0020.0005.1EE89] # ARABIC MATHEMATICAL LOOPED YEH
-1EEA9 ; [.1D2D.0020.0005.1EEA9] # ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
-FEF3 ; [.1D2D.0020.0017.FEF3] # ARABIC LETTER YEH INITIAL FORM
-FEF4 ; [.1D2D.0020.0018.FEF4] # ARABIC LETTER YEH MEDIAL FORM
-FEF2 ; [.1D2D.0020.0019.FEF2] # ARABIC LETTER YEH FINAL FORM
-FEF1 ; [.1D2D.0020.001A.FEF1] # ARABIC LETTER YEH ISOLATED FORM
-0678 ; [.1D2D.0020.0004.0678][.1C73.0020.0004.0678] # ARABIC LETTER HIGH HAMZA YEH
-FCDA ; [.1D2D.0020.0017.FCDA][.1C97.0020.0017.FCDA] # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
-FC55 ; [.1D2D.0020.001A.FC55][.1C97.0020.001A.FC55] # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
-FDAF ; [.1D2D.0020.0019.FDAF][.1C97.0020.0019.FDAF][.1D2D.0020.001F.FDAF] # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
-FCDB ; [.1D2D.0020.0017.FCDB][.1C9E.0020.0017.FCDB] # ARABIC LIGATURE YEH WITH HAH INITIAL FORM
-FC56 ; [.1D2D.0020.001A.FC56][.1C9E.0020.001A.FC56] # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
-FDAE ; [.1D2D.0020.0019.FDAE][.1C9E.0020.0019.FDAE][.1D2D.0020.001F.FDAE] # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
-FCDC ; [.1D2D.0020.0017.FCDC][.1C9F.0020.0017.FCDC] # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
-FC57 ; [.1D2D.0020.001A.FC57][.1C9F.0020.001A.FC57] # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
-FC91 ; [.1D2D.0020.0019.FC91][.1CB7.0020.0019.FC91] # ARABIC LIGATURE YEH WITH REH FINAL FORM
-FC92 ; [.1D2D.0020.0019.FC92][.1CB8.0020.0019.FC92] # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
-FCDD ; [.1D2D.0020.0017.FCDD][.1D0C.0020.0017.FCDD] # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
-FCF0 ; [.1D2D.0020.0018.FCF0][.1D0C.0020.0018.FCF0] # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
-FC93 ; [.1D2D.0020.0019.FC93][.1D0C.0020.0019.FC93] # ARABIC LIGATURE YEH WITH MEEM FINAL FORM
-FC58 ; [.1D2D.0020.001A.FC58][.1D0C.0020.001A.FC58] # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
-FD9D ; [.1D2D.0020.0017.FD9D][.1D0C.0020.0017.FD9D][.1D0C.0020.001F.FD9D] # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
-FD9C ; [.1D2D.0020.0019.FD9C][.1D0C.0020.0019.FD9C][.1D0C.0020.001F.FD9C] # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
-FDB0 ; [.1D2D.0020.0019.FDB0][.1D0C.0020.0019.FDB0][.1D2D.0020.001F.FDB0] # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
-FC94 ; [.1D2D.0020.0019.FC94][.1D10.0020.0019.FC94] # ARABIC LIGATURE YEH WITH NOON FINAL FORM
-FCDE ; [.1D2D.0020.0017.FCDE][.1D19.0020.0017.FCDE] # ARABIC LIGATURE YEH WITH HEH INITIAL FORM
-FCF1 ; [.1D2D.0020.0018.FCF1][.1D19.0020.0018.FCF1] # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
-FC95 ; [.1D2D.0020.0019.FC95][.1D2C.0020.0019.FC95] # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
-FC59 ; [.1D2D.0020.001A.FC59][.1D2C.0020.001A.FC59] # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
-FC96 ; [.1D2D.0020.0019.FC96][.1D2D.0020.0019.FC96] # ARABIC LIGATURE YEH WITH YEH FINAL FORM
-FC5A ; [.1D2D.0020.001A.FC5A][.1D2D.0020.001A.FC5A] # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
-06CC ; [.1D2E.0020.0002.06CC] # ARABIC LETTER FARSI YEH
-FBFE ; [.1D2E.0020.0017.FBFE] # ARABIC LETTER FARSI YEH INITIAL FORM
-FBFF ; [.1D2E.0020.0018.FBFF] # ARABIC LETTER FARSI YEH MEDIAL FORM
-FBFD ; [.1D2E.0020.0019.FBFD] # ARABIC LETTER FARSI YEH FINAL FORM
-FBFC ; [.1D2E.0020.001A.FBFC] # ARABIC LETTER FARSI YEH ISOLATED FORM
-06CD ; [.1D2F.0020.0002.06CD] # ARABIC LETTER YEH WITH TAIL
-06CE ; [.1D30.0020.0002.06CE] # ARABIC LETTER YEH WITH SMALL V
-06D0 ; [.1D31.0020.0002.06D0] # ARABIC LETTER E
-FBE6 ; [.1D31.0020.0017.FBE6] # ARABIC LETTER E INITIAL FORM
-FBE7 ; [.1D31.0020.0018.FBE7] # ARABIC LETTER E MEDIAL FORM
-FBE5 ; [.1D31.0020.0019.FBE5] # ARABIC LETTER E FINAL FORM
-FBE4 ; [.1D31.0020.001A.FBE4] # ARABIC LETTER E ISOLATED FORM
-06D1 ; [.1D32.0020.0002.06D1] # ARABIC LETTER YEH WITH THREE DOTS BELOW
-063D ; [.1D33.0020.0002.063D] # ARABIC LETTER FARSI YEH WITH INVERTED V
-063E ; [.1D34.0020.0002.063E] # ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE
-063F ; [.1D35.0020.0002.063F] # ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
-0620 ; [.1D36.0020.0002.0620] # ARABIC LETTER KASHMIRI YEH
-0775 ; [.1D37.0020.0002.0775] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
-0776 ; [.1D38.0020.0002.0776] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
-0777 ; [.1D39.0020.0002.0777] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW
-06D2 ; [.1D3A.0020.0002.06D2] # ARABIC LETTER YEH BARREE
-FBAF ; [.1D3A.0020.0019.FBAF] # ARABIC LETTER YEH BARREE FINAL FORM
-FBAE ; [.1D3A.0020.001A.FBAE] # ARABIC LETTER YEH BARREE ISOLATED FORM
-06D3 ; [.1D3A.0020.0002.06D2][.0000.00BE.0002.0654] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
-FBB1 ; [.1D3A.0020.0019.FBB1][.0000.00BE.0019.FBB1] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
-FBB0 ; [.1D3A.0020.001A.FBB0][.0000.00BE.001A.FBB0] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
-077A ; [.1D3B.0020.0002.077A] # ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
-077B ; [.1D3C.0020.0002.077B] # ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
-0710 ; [.1D3D.0020.0002.0710] # SYRIAC LETTER ALAPH
-0712 ; [.1D3E.0020.0002.0712] # SYRIAC LETTER BETH
-072D ; [.1D3E.0020.0004.072D][.0000.013C.0004.072D] # SYRIAC LETTER PERSIAN BHETH
-0713 ; [.1D3F.0020.0002.0713] # SYRIAC LETTER GAMAL
-0714 ; [.1D3F.0020.0004.0714][.0000.013A.0004.0714] # SYRIAC LETTER GAMAL GARSHUNI
-072E ; [.1D3F.0020.0004.072E][.0000.013C.0004.072E] # SYRIAC LETTER PERSIAN GHAMAL
-0716 ; [.1D40.0020.0002.0716] # SYRIAC LETTER DOTLESS DALATH RISH
-0715 ; [.1D41.0020.0002.0715] # SYRIAC LETTER DALATH
-072F ; [.1D41.0020.0004.072F][.0000.013C.0004.072F] # SYRIAC LETTER PERSIAN DHALATH
-0717 ; [.1D42.0020.0002.0717] # SYRIAC LETTER HE
-0718 ; [.1D43.0020.0002.0718] # SYRIAC LETTER WAW
-0719 ; [.1D44.0020.0002.0719] # SYRIAC LETTER ZAIN
-074D ; [.1D45.0020.0002.074D] # SYRIAC LETTER SOGDIAN ZHAIN
-071A ; [.1D46.0020.0002.071A] # SYRIAC LETTER HETH
-071B ; [.1D47.0020.0002.071B] # SYRIAC LETTER TETH
-071C ; [.1D47.0020.0004.071C][.0000.013A.0004.071C] # SYRIAC LETTER TETH GARSHUNI
-071D ; [.1D48.0020.0002.071D] # SYRIAC LETTER YUDH
-071E ; [.1D49.0020.0002.071E] # SYRIAC LETTER YUDH HE
-071F ; [.1D4A.0020.0002.071F] # SYRIAC LETTER KAPH
-074E ; [.1D4B.0020.0002.074E] # SYRIAC LETTER SOGDIAN KHAPH
-0720 ; [.1D4C.0020.0002.0720] # SYRIAC LETTER LAMADH
-0721 ; [.1D4D.0020.0002.0721] # SYRIAC LETTER MIM
-0722 ; [.1D4E.0020.0002.0722] # SYRIAC LETTER NUN
-0723 ; [.1D4F.0020.0002.0723] # SYRIAC LETTER SEMKATH
-0724 ; [.1D4F.0020.0019.0724] # SYRIAC LETTER FINAL SEMKATH
-0725 ; [.1D50.0020.0002.0725] # SYRIAC LETTER E
-0726 ; [.1D51.0020.0002.0726] # SYRIAC LETTER PE
-0727 ; [.1D51.0020.0004.0727][.0000.013A.0004.0727] # SYRIAC LETTER REVERSED PE
-074F ; [.1D52.0020.0002.074F] # SYRIAC LETTER SOGDIAN FE
-0728 ; [.1D53.0020.0002.0728] # SYRIAC LETTER SADHE
-0729 ; [.1D54.0020.0002.0729] # SYRIAC LETTER QAPH
-072A ; [.1D55.0020.0002.072A] # SYRIAC LETTER RISH
-072B ; [.1D56.0020.0002.072B] # SYRIAC LETTER SHIN
-072C ; [.1D57.0020.0002.072C] # SYRIAC LETTER TAW
-0840 ; [.1D58.0020.0002.0840] # MANDAIC LETTER HALQA
-0841 ; [.1D59.0020.0002.0841] # MANDAIC LETTER AB
-0842 ; [.1D5A.0020.0002.0842] # MANDAIC LETTER AG
-0843 ; [.1D5B.0020.0002.0843] # MANDAIC LETTER AD
-0844 ; [.1D5C.0020.0002.0844] # MANDAIC LETTER AH
-0845 ; [.1D5D.0020.0002.0845] # MANDAIC LETTER USHENNA
-0846 ; [.1D5E.0020.0002.0846] # MANDAIC LETTER AZ
-0847 ; [.1D5F.0020.0002.0847] # MANDAIC LETTER IT
-0848 ; [.1D60.0020.0002.0848] # MANDAIC LETTER ATT
-0849 ; [.1D61.0020.0002.0849] # MANDAIC LETTER AKSA
-084A ; [.1D62.0020.0002.084A] # MANDAIC LETTER AK
-084B ; [.1D63.0020.0002.084B] # MANDAIC LETTER AL
-084C ; [.1D64.0020.0002.084C] # MANDAIC LETTER AM
-084D ; [.1D65.0020.0002.084D] # MANDAIC LETTER AN
-084E ; [.1D66.0020.0002.084E] # MANDAIC LETTER AS
-084F ; [.1D67.0020.0002.084F] # MANDAIC LETTER IN
-0850 ; [.1D68.0020.0002.0850] # MANDAIC LETTER AP
-0851 ; [.1D69.0020.0002.0851] # MANDAIC LETTER ASZ
-0852 ; [.1D6A.0020.0002.0852] # MANDAIC LETTER AQ
-0853 ; [.1D6B.0020.0002.0853] # MANDAIC LETTER AR
-0854 ; [.1D6C.0020.0002.0854] # MANDAIC LETTER ASH
-0855 ; [.1D6D.0020.0002.0855] # MANDAIC LETTER AT
-0856 ; [.1D6E.0020.0002.0856] # MANDAIC LETTER DUSHENNA
-0857 ; [.1D6F.0020.0002.0857] # MANDAIC LETTER KAD
-0858 ; [.1D70.0020.0002.0858] # MANDAIC LETTER AIN
-0780 ; [.1D71.0020.0002.0780] # THAANA LETTER HAA
-0799 ; [.1D72.0020.0002.0799] # THAANA LETTER HHAA
-079A ; [.1D73.0020.0002.079A] # THAANA LETTER KHAA
-0781 ; [.1D74.0020.0002.0781] # THAANA LETTER SHAVIYANI
-0782 ; [.1D75.0020.0002.0782] # THAANA LETTER NOONU
-0783 ; [.1D76.0020.0002.0783] # THAANA LETTER RAA
-079C ; [.1D77.0020.0002.079C] # THAANA LETTER ZAA
-0784 ; [.1D78.0020.0002.0784] # THAANA LETTER BAA
-0785 ; [.1D79.0020.0002.0785] # THAANA LETTER LHAVIYANI
-0786 ; [.1D7A.0020.0002.0786] # THAANA LETTER KAAFU
-0787 ; [.1D7B.0020.0002.0787] # THAANA LETTER ALIFU
-07A2 ; [.1D7C.0020.0002.07A2] # THAANA LETTER AINU
-07A3 ; [.1D7D.0020.0002.07A3] # THAANA LETTER GHAINU
-0788 ; [.1D7E.0020.0002.0788] # THAANA LETTER VAAVU
-07A5 ; [.1D7F.0020.0002.07A5] # THAANA LETTER WAAVU
-0789 ; [.1D80.0020.0002.0789] # THAANA LETTER MEEMU
-078A ; [.1D81.0020.0002.078A] # THAANA LETTER FAAFU
-078B ; [.1D82.0020.0002.078B] # THAANA LETTER DHAALU
-079B ; [.1D83.0020.0002.079B] # THAANA LETTER THAALU
-078C ; [.1D84.0020.0002.078C] # THAANA LETTER THAA
-0798 ; [.1D85.0020.0002.0798] # THAANA LETTER TTAA
-07A0 ; [.1D86.0020.0002.07A0] # THAANA LETTER TO
-07A1 ; [.1D87.0020.0002.07A1] # THAANA LETTER ZO
-078D ; [.1D88.0020.0002.078D] # THAANA LETTER LAAMU
-078E ; [.1D89.0020.0002.078E] # THAANA LETTER GAAFU
-07A4 ; [.1D8A.0020.0002.07A4] # THAANA LETTER QAAFU
-078F ; [.1D8B.0020.0002.078F] # THAANA LETTER GNAVIYANI
-0790 ; [.1D8C.0020.0002.0790] # THAANA LETTER SEENU
-079D ; [.1D8D.0020.0002.079D] # THAANA LETTER SHEENU
-079E ; [.1D8E.0020.0002.079E] # THAANA LETTER SAADHU
-079F ; [.1D8F.0020.0002.079F] # THAANA LETTER DAADHU
-0791 ; [.1D90.0020.0002.0791] # THAANA LETTER DAVIYANI
-0792 ; [.1D91.0020.0002.0792] # THAANA LETTER ZAVIYANI
-0793 ; [.1D92.0020.0002.0793] # THAANA LETTER TAVIYANI
-0794 ; [.1D93.0020.0002.0794] # THAANA LETTER YAA
-0795 ; [.1D94.0020.0002.0795] # THAANA LETTER PAVIYANI
-0796 ; [.1D95.0020.0002.0796] # THAANA LETTER JAVIYANI
-0797 ; [.1D96.0020.0002.0797] # THAANA LETTER CHAVIYANI
-07B1 ; [.1D97.0020.0002.07B1] # THAANA LETTER NAA
-07A6 ; [.1D98.0020.0002.07A6] # THAANA ABAFILI
-07A7 ; [.1D99.0020.0002.07A7] # THAANA AABAAFILI
-07A8 ; [.1D9A.0020.0002.07A8] # THAANA IBIFILI
-07A9 ; [.1D9B.0020.0002.07A9] # THAANA EEBEEFILI
-07AA ; [.1D9C.0020.0002.07AA] # THAANA UBUFILI
-07AB ; [.1D9D.0020.0002.07AB] # THAANA OOBOOFILI
-07AC ; [.1D9E.0020.0002.07AC] # THAANA EBEFILI
-07AD ; [.1D9F.0020.0002.07AD] # THAANA EYBEYFILI
-07AE ; [.1DA0.0020.0002.07AE] # THAANA OBOFILI
-07AF ; [.1DA1.0020.0002.07AF] # THAANA OABOAFILI
-07B0 ; [.1DA2.0020.0002.07B0] # THAANA SUKUN
-07CA ; [.1DA3.0020.0002.07CA] # NKO LETTER A
-07CB ; [.1DA4.0020.0002.07CB] # NKO LETTER EE
-07CC ; [.1DA5.0020.0002.07CC] # NKO LETTER I
-07CD ; [.1DA6.0020.0002.07CD] # NKO LETTER E
-07CE ; [.1DA7.0020.0002.07CE] # NKO LETTER U
-07CF ; [.1DA8.0020.0002.07CF] # NKO LETTER OO
-07D0 ; [.1DA9.0020.0002.07D0] # NKO LETTER O
-07D1 ; [.1DAA.0020.0002.07D1] # NKO LETTER DAGBASINNA
-07D2 ; [.1DAB.0020.0002.07D2] # NKO LETTER N
-07D3 ; [.1DAC.0020.0002.07D3] # NKO LETTER BA
-07D4 ; [.1DAD.0020.0002.07D4] # NKO LETTER PA
-07D5 ; [.1DAE.0020.0002.07D5] # NKO LETTER TA
-07D6 ; [.1DAF.0020.0002.07D6] # NKO LETTER JA
-07E8 ; [.1DAF.0020.0004.07E8][.0000.0139.0004.07E8] # NKO LETTER JONA JA
-07D7 ; [.1DB0.0020.0002.07D7] # NKO LETTER CHA
-07E9 ; [.1DB0.0020.0004.07E9][.0000.0139.0004.07E9] # NKO LETTER JONA CHA
-07D8 ; [.1DB1.0020.0002.07D8] # NKO LETTER DA
-07D9 ; [.1DB2.0020.0002.07D9] # NKO LETTER RA
-07EA ; [.1DB2.0020.0004.07EA][.0000.0139.0004.07EA] # NKO LETTER JONA RA
-07DA ; [.1DB3.0020.0002.07DA] # NKO LETTER RRA
-07DB ; [.1DB4.0020.0002.07DB] # NKO LETTER SA
-07DC ; [.1DB5.0020.0002.07DC] # NKO LETTER GBA
-07DD ; [.1DB6.0020.0002.07DD] # NKO LETTER FA
-07DE ; [.1DB7.0020.0002.07DE] # NKO LETTER KA
-07DF ; [.1DB8.0020.0002.07DF] # NKO LETTER LA
-07E0 ; [.1DB9.0020.0002.07E0] # NKO LETTER NA WOLOSO
-07E1 ; [.1DBA.0020.0002.07E1] # NKO LETTER MA
-07E2 ; [.1DBB.0020.0002.07E2] # NKO LETTER NYA
-07E3 ; [.1DBC.0020.0002.07E3] # NKO LETTER NA
-07E4 ; [.1DBD.0020.0002.07E4] # NKO LETTER HA
-07E5 ; [.1DBE.0020.0002.07E5] # NKO LETTER WA
-07E6 ; [.1DBF.0020.0002.07E6] # NKO LETTER YA
-07E7 ; [.1DC0.0020.0002.07E7] # NKO LETTER NYA WOLOSO
-07F4 ; [.1DC1.0020.0002.07F4] # NKO HIGH TONE APOSTROPHE
-07F5 ; [.1DC2.0020.0002.07F5] # NKO LOW TONE APOSTROPHE
-2D30 ; [.1DC3.0020.0002.2D30] # TIFINAGH LETTER YA
-2D31 ; [.1DC4.0020.0002.2D31] # TIFINAGH LETTER YAB
-2D32 ; [.1DC5.0020.0002.2D32] # TIFINAGH LETTER YABH
-2D33 ; [.1DC6.0020.0002.2D33] # TIFINAGH LETTER YAG
-2D34 ; [.1DC7.0020.0002.2D34] # TIFINAGH LETTER YAGHH
-2D35 ; [.1DC8.0020.0002.2D35] # TIFINAGH LETTER BERBER ACADEMY YAJ
-2D36 ; [.1DC9.0020.0002.2D36] # TIFINAGH LETTER YAJ
-2D37 ; [.1DCA.0020.0002.2D37] # TIFINAGH LETTER YAD
-2D38 ; [.1DCB.0020.0002.2D38] # TIFINAGH LETTER YADH
-2D39 ; [.1DCC.0020.0002.2D39] # TIFINAGH LETTER YADD
-2D3A ; [.1DCD.0020.0002.2D3A] # TIFINAGH LETTER YADDH
-2D3B ; [.1DCE.0020.0002.2D3B] # TIFINAGH LETTER YEY
-2D66 ; [.1DCF.0020.0002.2D66] # TIFINAGH LETTER YE
-2D3C ; [.1DD0.0020.0002.2D3C] # TIFINAGH LETTER YAF
-2D3D ; [.1DD1.0020.0002.2D3D] # TIFINAGH LETTER YAK
-2D3E ; [.1DD2.0020.0002.2D3E] # TIFINAGH LETTER TUAREG YAK
-2D3F ; [.1DD3.0020.0002.2D3F] # TIFINAGH LETTER YAKHH
-2D40 ; [.1DD4.0020.0002.2D40] # TIFINAGH LETTER YAH
-2D41 ; [.1DD5.0020.0002.2D41] # TIFINAGH LETTER BERBER ACADEMY YAH
-2D42 ; [.1DD6.0020.0002.2D42] # TIFINAGH LETTER TUAREG YAH
-2D43 ; [.1DD7.0020.0002.2D43] # TIFINAGH LETTER YAHH
-2D44 ; [.1DD8.0020.0002.2D44] # TIFINAGH LETTER YAA
-2D45 ; [.1DD9.0020.0002.2D45] # TIFINAGH LETTER YAKH
-2D46 ; [.1DDA.0020.0002.2D46] # TIFINAGH LETTER TUAREG YAKH
-2D47 ; [.1DDB.0020.0002.2D47] # TIFINAGH LETTER YAQ
-2D48 ; [.1DDC.0020.0002.2D48] # TIFINAGH LETTER TUAREG YAQ
-2D49 ; [.1DDD.0020.0002.2D49] # TIFINAGH LETTER YI
-2D4A ; [.1DDE.0020.0002.2D4A] # TIFINAGH LETTER YAZH
-2D4B ; [.1DDF.0020.0002.2D4B] # TIFINAGH LETTER AHAGGAR YAZH
-2D4C ; [.1DE0.0020.0002.2D4C] # TIFINAGH LETTER TUAREG YAZH
-2D4D ; [.1DE1.0020.0002.2D4D] # TIFINAGH LETTER YAL
-2D4E ; [.1DE2.0020.0002.2D4E] # TIFINAGH LETTER YAM
-2D4F ; [.1DE3.0020.0002.2D4F] # TIFINAGH LETTER YAN
-2D50 ; [.1DE4.0020.0002.2D50] # TIFINAGH LETTER TUAREG YAGN
-2D51 ; [.1DE5.0020.0002.2D51] # TIFINAGH LETTER TUAREG YANG
-2D52 ; [.1DE6.0020.0002.2D52] # TIFINAGH LETTER YAP
-2D53 ; [.1DE7.0020.0002.2D53] # TIFINAGH LETTER YU
-2D67 ; [.1DE8.0020.0002.2D67] # TIFINAGH LETTER YO
-2D54 ; [.1DE9.0020.0002.2D54] # TIFINAGH LETTER YAR
-2D55 ; [.1DEA.0020.0002.2D55] # TIFINAGH LETTER YARR
-2D56 ; [.1DEB.0020.0002.2D56] # TIFINAGH LETTER YAGH
-2D57 ; [.1DEC.0020.0002.2D57] # TIFINAGH LETTER TUAREG YAGH
-2D58 ; [.1DED.0020.0002.2D58] # TIFINAGH LETTER AYER YAGH
-2D59 ; [.1DEE.0020.0002.2D59] # TIFINAGH LETTER YAS
-2D5A ; [.1DEF.0020.0002.2D5A] # TIFINAGH LETTER YASS
-2D5B ; [.1DF0.0020.0002.2D5B] # TIFINAGH LETTER YASH
-2D5C ; [.1DF1.0020.0002.2D5C] # TIFINAGH LETTER YAT
-2D5D ; [.1DF2.0020.0002.2D5D] # TIFINAGH LETTER YATH
-2D5E ; [.1DF3.0020.0002.2D5E] # TIFINAGH LETTER YACH
-2D5F ; [.1DF4.0020.0002.2D5F] # TIFINAGH LETTER YATT
-2D60 ; [.1DF5.0020.0002.2D60] # TIFINAGH LETTER YAV
-2D61 ; [.1DF6.0020.0002.2D61] # TIFINAGH LETTER YAW
-2D62 ; [.1DF7.0020.0002.2D62] # TIFINAGH LETTER YAY
-2D63 ; [.1DF8.0020.0002.2D63] # TIFINAGH LETTER YAZ
-2D64 ; [.1DF9.0020.0002.2D64] # TIFINAGH LETTER TAWELLEMET YAZ
-2D65 ; [.1DFA.0020.0002.2D65] # TIFINAGH LETTER YAZZ
-2D6F ; [.1DFB.0020.0002.2D6F] # TIFINAGH MODIFIER LETTER LABIALIZATION MARK
-1200 ; [.1DFC.0020.0002.1200] # ETHIOPIC SYLLABLE HA
-1201 ; [.1DFD.0020.0002.1201] # ETHIOPIC SYLLABLE HU
-1202 ; [.1DFE.0020.0002.1202] # ETHIOPIC SYLLABLE HI
-1203 ; [.1DFF.0020.0002.1203] # ETHIOPIC SYLLABLE HAA
-1204 ; [.1E00.0020.0002.1204] # ETHIOPIC SYLLABLE HEE
-1205 ; [.1E01.0020.0002.1205] # ETHIOPIC SYLLABLE HE
-1206 ; [.1E02.0020.0002.1206] # ETHIOPIC SYLLABLE HO
-1207 ; [.1E03.0020.0002.1207] # ETHIOPIC SYLLABLE HOA
-1208 ; [.1E04.0020.0002.1208] # ETHIOPIC SYLLABLE LA
-1209 ; [.1E05.0020.0002.1209] # ETHIOPIC SYLLABLE LU
-120A ; [.1E06.0020.0002.120A] # ETHIOPIC SYLLABLE LI
-120B ; [.1E07.0020.0002.120B] # ETHIOPIC SYLLABLE LAA
-120C ; [.1E08.0020.0002.120C] # ETHIOPIC SYLLABLE LEE
-120D ; [.1E09.0020.0002.120D] # ETHIOPIC SYLLABLE LE
-120E ; [.1E0A.0020.0002.120E] # ETHIOPIC SYLLABLE LO
-120F ; [.1E0B.0020.0002.120F] # ETHIOPIC SYLLABLE LWA
-2D80 ; [.1E0C.0020.0002.2D80] # ETHIOPIC SYLLABLE LOA
-1210 ; [.1E0D.0020.0002.1210] # ETHIOPIC SYLLABLE HHA
-1211 ; [.1E0E.0020.0002.1211] # ETHIOPIC SYLLABLE HHU
-1212 ; [.1E0F.0020.0002.1212] # ETHIOPIC SYLLABLE HHI
-1213 ; [.1E10.0020.0002.1213] # ETHIOPIC SYLLABLE HHAA
-1214 ; [.1E11.0020.0002.1214] # ETHIOPIC SYLLABLE HHEE
-1215 ; [.1E12.0020.0002.1215] # ETHIOPIC SYLLABLE HHE
-1216 ; [.1E13.0020.0002.1216] # ETHIOPIC SYLLABLE HHO
-1217 ; [.1E14.0020.0002.1217] # ETHIOPIC SYLLABLE HHWA
-1218 ; [.1E15.0020.0002.1218] # ETHIOPIC SYLLABLE MA
-1219 ; [.1E16.0020.0002.1219] # ETHIOPIC SYLLABLE MU
-121A ; [.1E17.0020.0002.121A] # ETHIOPIC SYLLABLE MI
-121B ; [.1E18.0020.0002.121B] # ETHIOPIC SYLLABLE MAA
-121C ; [.1E19.0020.0002.121C] # ETHIOPIC SYLLABLE MEE
-121D ; [.1E1A.0020.0002.121D] # ETHIOPIC SYLLABLE ME
-121E ; [.1E1B.0020.0002.121E] # ETHIOPIC SYLLABLE MO
-121F ; [.1E1C.0020.0002.121F] # ETHIOPIC SYLLABLE MWA
-1380 ; [.1E1D.0020.0002.1380] # ETHIOPIC SYLLABLE SEBATBEIT MWA
-1381 ; [.1E1E.0020.0002.1381] # ETHIOPIC SYLLABLE MWI
-1382 ; [.1E1F.0020.0002.1382] # ETHIOPIC SYLLABLE MWEE
-1383 ; [.1E20.0020.0002.1383] # ETHIOPIC SYLLABLE MWE
-2D81 ; [.1E21.0020.0002.2D81] # ETHIOPIC SYLLABLE MOA
-1220 ; [.1E22.0020.0002.1220] # ETHIOPIC SYLLABLE SZA
-1221 ; [.1E23.0020.0002.1221] # ETHIOPIC SYLLABLE SZU
-1222 ; [.1E24.0020.0002.1222] # ETHIOPIC SYLLABLE SZI
-1223 ; [.1E25.0020.0002.1223] # ETHIOPIC SYLLABLE SZAA
-1224 ; [.1E26.0020.0002.1224] # ETHIOPIC SYLLABLE SZEE
-1225 ; [.1E27.0020.0002.1225] # ETHIOPIC SYLLABLE SZE
-1226 ; [.1E28.0020.0002.1226] # ETHIOPIC SYLLABLE SZO
-1227 ; [.1E29.0020.0002.1227] # ETHIOPIC SYLLABLE SZWA
-1228 ; [.1E2A.0020.0002.1228] # ETHIOPIC SYLLABLE RA
-1229 ; [.1E2B.0020.0002.1229] # ETHIOPIC SYLLABLE RU
-122A ; [.1E2C.0020.0002.122A] # ETHIOPIC SYLLABLE RI
-122B ; [.1E2D.0020.0002.122B] # ETHIOPIC SYLLABLE RAA
-122C ; [.1E2E.0020.0002.122C] # ETHIOPIC SYLLABLE REE
-122D ; [.1E2F.0020.0002.122D] # ETHIOPIC SYLLABLE RE
-122E ; [.1E30.0020.0002.122E] # ETHIOPIC SYLLABLE RO
-122F ; [.1E31.0020.0002.122F] # ETHIOPIC SYLLABLE RWA
-2D82 ; [.1E32.0020.0002.2D82] # ETHIOPIC SYLLABLE ROA
-1230 ; [.1E33.0020.0002.1230] # ETHIOPIC SYLLABLE SA
-1231 ; [.1E34.0020.0002.1231] # ETHIOPIC SYLLABLE SU
-1232 ; [.1E35.0020.0002.1232] # ETHIOPIC SYLLABLE SI
-1233 ; [.1E36.0020.0002.1233] # ETHIOPIC SYLLABLE SAA
-1234 ; [.1E37.0020.0002.1234] # ETHIOPIC SYLLABLE SEE
-1235 ; [.1E38.0020.0002.1235] # ETHIOPIC SYLLABLE SE
-1236 ; [.1E39.0020.0002.1236] # ETHIOPIC SYLLABLE SO
-1237 ; [.1E3A.0020.0002.1237] # ETHIOPIC SYLLABLE SWA
-2D83 ; [.1E3B.0020.0002.2D83] # ETHIOPIC SYLLABLE SOA
-AB01 ; [.1E3C.0020.0002.AB01] # ETHIOPIC SYLLABLE TTHU
-AB02 ; [.1E3D.0020.0002.AB02] # ETHIOPIC SYLLABLE TTHI
-AB03 ; [.1E3E.0020.0002.AB03] # ETHIOPIC SYLLABLE TTHAA
-AB04 ; [.1E3F.0020.0002.AB04] # ETHIOPIC SYLLABLE TTHEE
-AB05 ; [.1E40.0020.0002.AB05] # ETHIOPIC SYLLABLE TTHE
-AB06 ; [.1E41.0020.0002.AB06] # ETHIOPIC SYLLABLE TTHO
-1238 ; [.1E42.0020.0002.1238] # ETHIOPIC SYLLABLE SHA
-1239 ; [.1E43.0020.0002.1239] # ETHIOPIC SYLLABLE SHU
-123A ; [.1E44.0020.0002.123A] # ETHIOPIC SYLLABLE SHI
-123B ; [.1E45.0020.0002.123B] # ETHIOPIC SYLLABLE SHAA
-123C ; [.1E46.0020.0002.123C] # ETHIOPIC SYLLABLE SHEE
-123D ; [.1E47.0020.0002.123D] # ETHIOPIC SYLLABLE SHE
-123E ; [.1E48.0020.0002.123E] # ETHIOPIC SYLLABLE SHO
-123F ; [.1E49.0020.0002.123F] # ETHIOPIC SYLLABLE SHWA
-2D84 ; [.1E4A.0020.0002.2D84] # ETHIOPIC SYLLABLE SHOA
-1240 ; [.1E4B.0020.0002.1240] # ETHIOPIC SYLLABLE QA
-1241 ; [.1E4C.0020.0002.1241] # ETHIOPIC SYLLABLE QU
-1242 ; [.1E4D.0020.0002.1242] # ETHIOPIC SYLLABLE QI
-1243 ; [.1E4E.0020.0002.1243] # ETHIOPIC SYLLABLE QAA
-1244 ; [.1E4F.0020.0002.1244] # ETHIOPIC SYLLABLE QEE
-1245 ; [.1E50.0020.0002.1245] # ETHIOPIC SYLLABLE QE
-1246 ; [.1E51.0020.0002.1246] # ETHIOPIC SYLLABLE QO
-1247 ; [.1E52.0020.0002.1247] # ETHIOPIC SYLLABLE QOA
-1248 ; [.1E53.0020.0002.1248] # ETHIOPIC SYLLABLE QWA
-124A ; [.1E54.0020.0002.124A] # ETHIOPIC SYLLABLE QWI
-124B ; [.1E55.0020.0002.124B] # ETHIOPIC SYLLABLE QWAA
-124C ; [.1E56.0020.0002.124C] # ETHIOPIC SYLLABLE QWEE
-124D ; [.1E57.0020.0002.124D] # ETHIOPIC SYLLABLE QWE
-1250 ; [.1E58.0020.0002.1250] # ETHIOPIC SYLLABLE QHA
-1251 ; [.1E59.0020.0002.1251] # ETHIOPIC SYLLABLE QHU
-1252 ; [.1E5A.0020.0002.1252] # ETHIOPIC SYLLABLE QHI
-1253 ; [.1E5B.0020.0002.1253] # ETHIOPIC SYLLABLE QHAA
-1254 ; [.1E5C.0020.0002.1254] # ETHIOPIC SYLLABLE QHEE
-1255 ; [.1E5D.0020.0002.1255] # ETHIOPIC SYLLABLE QHE
-1256 ; [.1E5E.0020.0002.1256] # ETHIOPIC SYLLABLE QHO
-1258 ; [.1E5F.0020.0002.1258] # ETHIOPIC SYLLABLE QHWA
-125A ; [.1E60.0020.0002.125A] # ETHIOPIC SYLLABLE QHWI
-125B ; [.1E61.0020.0002.125B] # ETHIOPIC SYLLABLE QHWAA
-125C ; [.1E62.0020.0002.125C] # ETHIOPIC SYLLABLE QHWEE
-125D ; [.1E63.0020.0002.125D] # ETHIOPIC SYLLABLE QHWE
-1260 ; [.1E64.0020.0002.1260] # ETHIOPIC SYLLABLE BA
-1261 ; [.1E65.0020.0002.1261] # ETHIOPIC SYLLABLE BU
-1262 ; [.1E66.0020.0002.1262] # ETHIOPIC SYLLABLE BI
-1263 ; [.1E67.0020.0002.1263] # ETHIOPIC SYLLABLE BAA
-1264 ; [.1E68.0020.0002.1264] # ETHIOPIC SYLLABLE BEE
-1265 ; [.1E69.0020.0002.1265] # ETHIOPIC SYLLABLE BE
-1266 ; [.1E6A.0020.0002.1266] # ETHIOPIC SYLLABLE BO
-1267 ; [.1E6B.0020.0002.1267] # ETHIOPIC SYLLABLE BWA
-1384 ; [.1E6C.0020.0002.1384] # ETHIOPIC SYLLABLE SEBATBEIT BWA
-1385 ; [.1E6D.0020.0002.1385] # ETHIOPIC SYLLABLE BWI
-1386 ; [.1E6E.0020.0002.1386] # ETHIOPIC SYLLABLE BWEE
-1387 ; [.1E6F.0020.0002.1387] # ETHIOPIC SYLLABLE BWE
-2D85 ; [.1E70.0020.0002.2D85] # ETHIOPIC SYLLABLE BOA
-1268 ; [.1E71.0020.0002.1268] # ETHIOPIC SYLLABLE VA
-1269 ; [.1E72.0020.0002.1269] # ETHIOPIC SYLLABLE VU
-126A ; [.1E73.0020.0002.126A] # ETHIOPIC SYLLABLE VI
-126B ; [.1E74.0020.0002.126B] # ETHIOPIC SYLLABLE VAA
-126C ; [.1E75.0020.0002.126C] # ETHIOPIC SYLLABLE VEE
-126D ; [.1E76.0020.0002.126D] # ETHIOPIC SYLLABLE VE
-126E ; [.1E77.0020.0002.126E] # ETHIOPIC SYLLABLE VO
-126F ; [.1E78.0020.0002.126F] # ETHIOPIC SYLLABLE VWA
-1270 ; [.1E79.0020.0002.1270] # ETHIOPIC SYLLABLE TA
-1271 ; [.1E7A.0020.0002.1271] # ETHIOPIC SYLLABLE TU
-1272 ; [.1E7B.0020.0002.1272] # ETHIOPIC SYLLABLE TI
-1273 ; [.1E7C.0020.0002.1273] # ETHIOPIC SYLLABLE TAA
-1274 ; [.1E7D.0020.0002.1274] # ETHIOPIC SYLLABLE TEE
-1275 ; [.1E7E.0020.0002.1275] # ETHIOPIC SYLLABLE TE
-1276 ; [.1E7F.0020.0002.1276] # ETHIOPIC SYLLABLE TO
-1277 ; [.1E80.0020.0002.1277] # ETHIOPIC SYLLABLE TWA
-2D86 ; [.1E81.0020.0002.2D86] # ETHIOPIC SYLLABLE TOA
-1278 ; [.1E82.0020.0002.1278] # ETHIOPIC SYLLABLE CA
-1279 ; [.1E83.0020.0002.1279] # ETHIOPIC SYLLABLE CU
-127A ; [.1E84.0020.0002.127A] # ETHIOPIC SYLLABLE CI
-127B ; [.1E85.0020.0002.127B] # ETHIOPIC SYLLABLE CAA
-127C ; [.1E86.0020.0002.127C] # ETHIOPIC SYLLABLE CEE
-127D ; [.1E87.0020.0002.127D] # ETHIOPIC SYLLABLE CE
-127E ; [.1E88.0020.0002.127E] # ETHIOPIC SYLLABLE CO
-127F ; [.1E89.0020.0002.127F] # ETHIOPIC SYLLABLE CWA
-2D87 ; [.1E8A.0020.0002.2D87] # ETHIOPIC SYLLABLE COA
-1280 ; [.1E8B.0020.0002.1280] # ETHIOPIC SYLLABLE XA
-1281 ; [.1E8C.0020.0002.1281] # ETHIOPIC SYLLABLE XU
-1282 ; [.1E8D.0020.0002.1282] # ETHIOPIC SYLLABLE XI
-1283 ; [.1E8E.0020.0002.1283] # ETHIOPIC SYLLABLE XAA
-1284 ; [.1E8F.0020.0002.1284] # ETHIOPIC SYLLABLE XEE
-1285 ; [.1E90.0020.0002.1285] # ETHIOPIC SYLLABLE XE
-1286 ; [.1E91.0020.0002.1286] # ETHIOPIC SYLLABLE XO
-1287 ; [.1E92.0020.0002.1287] # ETHIOPIC SYLLABLE XOA
-1288 ; [.1E93.0020.0002.1288] # ETHIOPIC SYLLABLE XWA
-128A ; [.1E94.0020.0002.128A] # ETHIOPIC SYLLABLE XWI
-128B ; [.1E95.0020.0002.128B] # ETHIOPIC SYLLABLE XWAA
-128C ; [.1E96.0020.0002.128C] # ETHIOPIC SYLLABLE XWEE
-128D ; [.1E97.0020.0002.128D] # ETHIOPIC SYLLABLE XWE
-1290 ; [.1E98.0020.0002.1290] # ETHIOPIC SYLLABLE NA
-1291 ; [.1E99.0020.0002.1291] # ETHIOPIC SYLLABLE NU
-1292 ; [.1E9A.0020.0002.1292] # ETHIOPIC SYLLABLE NI
-1293 ; [.1E9B.0020.0002.1293] # ETHIOPIC SYLLABLE NAA
-1294 ; [.1E9C.0020.0002.1294] # ETHIOPIC SYLLABLE NEE
-1295 ; [.1E9D.0020.0002.1295] # ETHIOPIC SYLLABLE NE
-1296 ; [.1E9E.0020.0002.1296] # ETHIOPIC SYLLABLE NO
-1297 ; [.1E9F.0020.0002.1297] # ETHIOPIC SYLLABLE NWA
-2D88 ; [.1EA0.0020.0002.2D88] # ETHIOPIC SYLLABLE NOA
-1298 ; [.1EA1.0020.0002.1298] # ETHIOPIC SYLLABLE NYA
-1299 ; [.1EA2.0020.0002.1299] # ETHIOPIC SYLLABLE NYU
-129A ; [.1EA3.0020.0002.129A] # ETHIOPIC SYLLABLE NYI
-129B ; [.1EA4.0020.0002.129B] # ETHIOPIC SYLLABLE NYAA
-129C ; [.1EA5.0020.0002.129C] # ETHIOPIC SYLLABLE NYEE
-129D ; [.1EA6.0020.0002.129D] # ETHIOPIC SYLLABLE NYE
-129E ; [.1EA7.0020.0002.129E] # ETHIOPIC SYLLABLE NYO
-129F ; [.1EA8.0020.0002.129F] # ETHIOPIC SYLLABLE NYWA
-2D89 ; [.1EA9.0020.0002.2D89] # ETHIOPIC SYLLABLE NYOA
-12A0 ; [.1EAA.0020.0002.12A0] # ETHIOPIC SYLLABLE GLOTTAL A
-12A1 ; [.1EAB.0020.0002.12A1] # ETHIOPIC SYLLABLE GLOTTAL U
-12A2 ; [.1EAC.0020.0002.12A2] # ETHIOPIC SYLLABLE GLOTTAL I
-12A3 ; [.1EAD.0020.0002.12A3] # ETHIOPIC SYLLABLE GLOTTAL AA
-12A4 ; [.1EAE.0020.0002.12A4] # ETHIOPIC SYLLABLE GLOTTAL EE
-12A5 ; [.1EAF.0020.0002.12A5] # ETHIOPIC SYLLABLE GLOTTAL E
-12A6 ; [.1EB0.0020.0002.12A6] # ETHIOPIC SYLLABLE GLOTTAL O
-12A7 ; [.1EB1.0020.0002.12A7] # ETHIOPIC SYLLABLE GLOTTAL WA
-2D8A ; [.1EB2.0020.0002.2D8A] # ETHIOPIC SYLLABLE GLOTTAL OA
-12A8 ; [.1EB3.0020.0002.12A8] # ETHIOPIC SYLLABLE KA
-12A9 ; [.1EB4.0020.0002.12A9] # ETHIOPIC SYLLABLE KU
-12AA ; [.1EB5.0020.0002.12AA] # ETHIOPIC SYLLABLE KI
-12AB ; [.1EB6.0020.0002.12AB] # ETHIOPIC SYLLABLE KAA
-12AC ; [.1EB7.0020.0002.12AC] # ETHIOPIC SYLLABLE KEE
-12AD ; [.1EB8.0020.0002.12AD] # ETHIOPIC SYLLABLE KE
-12AE ; [.1EB9.0020.0002.12AE] # ETHIOPIC SYLLABLE KO
-12AF ; [.1EBA.0020.0002.12AF] # ETHIOPIC SYLLABLE KOA
-12B0 ; [.1EBB.0020.0002.12B0] # ETHIOPIC SYLLABLE KWA
-12B2 ; [.1EBC.0020.0002.12B2] # ETHIOPIC SYLLABLE KWI
-12B3 ; [.1EBD.0020.0002.12B3] # ETHIOPIC SYLLABLE KWAA
-12B4 ; [.1EBE.0020.0002.12B4] # ETHIOPIC SYLLABLE KWEE
-12B5 ; [.1EBF.0020.0002.12B5] # ETHIOPIC SYLLABLE KWE
-12B8 ; [.1EC0.0020.0002.12B8] # ETHIOPIC SYLLABLE KXA
-12B9 ; [.1EC1.0020.0002.12B9] # ETHIOPIC SYLLABLE KXU
-12BA ; [.1EC2.0020.0002.12BA] # ETHIOPIC SYLLABLE KXI
-12BB ; [.1EC3.0020.0002.12BB] # ETHIOPIC SYLLABLE KXAA
-12BC ; [.1EC4.0020.0002.12BC] # ETHIOPIC SYLLABLE KXEE
-12BD ; [.1EC5.0020.0002.12BD] # ETHIOPIC SYLLABLE KXE
-12BE ; [.1EC6.0020.0002.12BE] # ETHIOPIC SYLLABLE KXO
-12C0 ; [.1EC7.0020.0002.12C0] # ETHIOPIC SYLLABLE KXWA
-12C2 ; [.1EC8.0020.0002.12C2] # ETHIOPIC SYLLABLE KXWI
-12C3 ; [.1EC9.0020.0002.12C3] # ETHIOPIC SYLLABLE KXWAA
-12C4 ; [.1ECA.0020.0002.12C4] # ETHIOPIC SYLLABLE KXWEE
-12C5 ; [.1ECB.0020.0002.12C5] # ETHIOPIC SYLLABLE KXWE
-12C8 ; [.1ECC.0020.0002.12C8] # ETHIOPIC SYLLABLE WA
-12C9 ; [.1ECD.0020.0002.12C9] # ETHIOPIC SYLLABLE WU
-12CA ; [.1ECE.0020.0002.12CA] # ETHIOPIC SYLLABLE WI
-12CB ; [.1ECF.0020.0002.12CB] # ETHIOPIC SYLLABLE WAA
-12CC ; [.1ED0.0020.0002.12CC] # ETHIOPIC SYLLABLE WEE
-12CD ; [.1ED1.0020.0002.12CD] # ETHIOPIC SYLLABLE WE
-12CE ; [.1ED2.0020.0002.12CE] # ETHIOPIC SYLLABLE WO
-12CF ; [.1ED3.0020.0002.12CF] # ETHIOPIC SYLLABLE WOA
-12D0 ; [.1ED4.0020.0002.12D0] # ETHIOPIC SYLLABLE PHARYNGEAL A
-12D1 ; [.1ED5.0020.0002.12D1] # ETHIOPIC SYLLABLE PHARYNGEAL U
-12D2 ; [.1ED6.0020.0002.12D2] # ETHIOPIC SYLLABLE PHARYNGEAL I
-12D3 ; [.1ED7.0020.0002.12D3] # ETHIOPIC SYLLABLE PHARYNGEAL AA
-12D4 ; [.1ED8.0020.0002.12D4] # ETHIOPIC SYLLABLE PHARYNGEAL EE
-12D5 ; [.1ED9.0020.0002.12D5] # ETHIOPIC SYLLABLE PHARYNGEAL E
-12D6 ; [.1EDA.0020.0002.12D6] # ETHIOPIC SYLLABLE PHARYNGEAL O
-12D8 ; [.1EDB.0020.0002.12D8] # ETHIOPIC SYLLABLE ZA
-12D9 ; [.1EDC.0020.0002.12D9] # ETHIOPIC SYLLABLE ZU
-12DA ; [.1EDD.0020.0002.12DA] # ETHIOPIC SYLLABLE ZI
-12DB ; [.1EDE.0020.0002.12DB] # ETHIOPIC SYLLABLE ZAA
-12DC ; [.1EDF.0020.0002.12DC] # ETHIOPIC SYLLABLE ZEE
-12DD ; [.1EE0.0020.0002.12DD] # ETHIOPIC SYLLABLE ZE
-12DE ; [.1EE1.0020.0002.12DE] # ETHIOPIC SYLLABLE ZO
-12DF ; [.1EE2.0020.0002.12DF] # ETHIOPIC SYLLABLE ZWA
-2D8B ; [.1EE3.0020.0002.2D8B] # ETHIOPIC SYLLABLE ZOA
-AB11 ; [.1EE4.0020.0002.AB11] # ETHIOPIC SYLLABLE DZU
-AB12 ; [.1EE5.0020.0002.AB12] # ETHIOPIC SYLLABLE DZI
-AB13 ; [.1EE6.0020.0002.AB13] # ETHIOPIC SYLLABLE DZAA
-AB14 ; [.1EE7.0020.0002.AB14] # ETHIOPIC SYLLABLE DZEE
-AB15 ; [.1EE8.0020.0002.AB15] # ETHIOPIC SYLLABLE DZE
-AB16 ; [.1EE9.0020.0002.AB16] # ETHIOPIC SYLLABLE DZO
-12E0 ; [.1EEA.0020.0002.12E0] # ETHIOPIC SYLLABLE ZHA
-12E1 ; [.1EEB.0020.0002.12E1] # ETHIOPIC SYLLABLE ZHU
-12E2 ; [.1EEC.0020.0002.12E2] # ETHIOPIC SYLLABLE ZHI
-12E3 ; [.1EED.0020.0002.12E3] # ETHIOPIC SYLLABLE ZHAA
-12E4 ; [.1EEE.0020.0002.12E4] # ETHIOPIC SYLLABLE ZHEE
-12E5 ; [.1EEF.0020.0002.12E5] # ETHIOPIC SYLLABLE ZHE
-12E6 ; [.1EF0.0020.0002.12E6] # ETHIOPIC SYLLABLE ZHO
-12E7 ; [.1EF1.0020.0002.12E7] # ETHIOPIC SYLLABLE ZHWA
-12E8 ; [.1EF2.0020.0002.12E8] # ETHIOPIC SYLLABLE YA
-12E9 ; [.1EF3.0020.0002.12E9] # ETHIOPIC SYLLABLE YU
-12EA ; [.1EF4.0020.0002.12EA] # ETHIOPIC SYLLABLE YI
-12EB ; [.1EF5.0020.0002.12EB] # ETHIOPIC SYLLABLE YAA
-12EC ; [.1EF6.0020.0002.12EC] # ETHIOPIC SYLLABLE YEE
-12ED ; [.1EF7.0020.0002.12ED] # ETHIOPIC SYLLABLE YE
-12EE ; [.1EF8.0020.0002.12EE] # ETHIOPIC SYLLABLE YO
-12EF ; [.1EF9.0020.0002.12EF] # ETHIOPIC SYLLABLE YOA
-12F0 ; [.1EFA.0020.0002.12F0] # ETHIOPIC SYLLABLE DA
-12F1 ; [.1EFB.0020.0002.12F1] # ETHIOPIC SYLLABLE DU
-12F2 ; [.1EFC.0020.0002.12F2] # ETHIOPIC SYLLABLE DI
-12F3 ; [.1EFD.0020.0002.12F3] # ETHIOPIC SYLLABLE DAA
-12F4 ; [.1EFE.0020.0002.12F4] # ETHIOPIC SYLLABLE DEE
-12F5 ; [.1EFF.0020.0002.12F5] # ETHIOPIC SYLLABLE DE
-12F6 ; [.1F00.0020.0002.12F6] # ETHIOPIC SYLLABLE DO
-12F7 ; [.1F01.0020.0002.12F7] # ETHIOPIC SYLLABLE DWA
-2D8C ; [.1F02.0020.0002.2D8C] # ETHIOPIC SYLLABLE DOA
-AB09 ; [.1F03.0020.0002.AB09] # ETHIOPIC SYLLABLE DDHU
-AB0A ; [.1F04.0020.0002.AB0A] # ETHIOPIC SYLLABLE DDHI
-AB0B ; [.1F05.0020.0002.AB0B] # ETHIOPIC SYLLABLE DDHAA
-AB0C ; [.1F06.0020.0002.AB0C] # ETHIOPIC SYLLABLE DDHEE
-AB0D ; [.1F07.0020.0002.AB0D] # ETHIOPIC SYLLABLE DDHE
-AB0E ; [.1F08.0020.0002.AB0E] # ETHIOPIC SYLLABLE DDHO
-12F8 ; [.1F09.0020.0002.12F8] # ETHIOPIC SYLLABLE DDA
-12F9 ; [.1F0A.0020.0002.12F9] # ETHIOPIC SYLLABLE DDU
-12FA ; [.1F0B.0020.0002.12FA] # ETHIOPIC SYLLABLE DDI
-12FB ; [.1F0C.0020.0002.12FB] # ETHIOPIC SYLLABLE DDAA
-12FC ; [.1F0D.0020.0002.12FC] # ETHIOPIC SYLLABLE DDEE
-12FD ; [.1F0E.0020.0002.12FD] # ETHIOPIC SYLLABLE DDE
-12FE ; [.1F0F.0020.0002.12FE] # ETHIOPIC SYLLABLE DDO
-12FF ; [.1F10.0020.0002.12FF] # ETHIOPIC SYLLABLE DDWA
-2D8D ; [.1F11.0020.0002.2D8D] # ETHIOPIC SYLLABLE DDOA
-1300 ; [.1F12.0020.0002.1300] # ETHIOPIC SYLLABLE JA
-1301 ; [.1F13.0020.0002.1301] # ETHIOPIC SYLLABLE JU
-1302 ; [.1F14.0020.0002.1302] # ETHIOPIC SYLLABLE JI
-1303 ; [.1F15.0020.0002.1303] # ETHIOPIC SYLLABLE JAA
-1304 ; [.1F16.0020.0002.1304] # ETHIOPIC SYLLABLE JEE
-1305 ; [.1F17.0020.0002.1305] # ETHIOPIC SYLLABLE JE
-1306 ; [.1F18.0020.0002.1306] # ETHIOPIC SYLLABLE JO
-1307 ; [.1F19.0020.0002.1307] # ETHIOPIC SYLLABLE JWA
-2D8E ; [.1F1A.0020.0002.2D8E] # ETHIOPIC SYLLABLE JOA
-1308 ; [.1F1B.0020.0002.1308] # ETHIOPIC SYLLABLE GA
-1309 ; [.1F1C.0020.0002.1309] # ETHIOPIC SYLLABLE GU
-130A ; [.1F1D.0020.0002.130A] # ETHIOPIC SYLLABLE GI
-130B ; [.1F1E.0020.0002.130B] # ETHIOPIC SYLLABLE GAA
-130C ; [.1F1F.0020.0002.130C] # ETHIOPIC SYLLABLE GEE
-130D ; [.1F20.0020.0002.130D] # ETHIOPIC SYLLABLE GE
-130E ; [.1F21.0020.0002.130E] # ETHIOPIC SYLLABLE GO
-130F ; [.1F22.0020.0002.130F] # ETHIOPIC SYLLABLE GOA
-1310 ; [.1F23.0020.0002.1310] # ETHIOPIC SYLLABLE GWA
-1312 ; [.1F24.0020.0002.1312] # ETHIOPIC SYLLABLE GWI
-1313 ; [.1F25.0020.0002.1313] # ETHIOPIC SYLLABLE GWAA
-1314 ; [.1F26.0020.0002.1314] # ETHIOPIC SYLLABLE GWEE
-1315 ; [.1F27.0020.0002.1315] # ETHIOPIC SYLLABLE GWE
-1318 ; [.1F28.0020.0002.1318] # ETHIOPIC SYLLABLE GGA
-1319 ; [.1F29.0020.0002.1319] # ETHIOPIC SYLLABLE GGU
-131A ; [.1F2A.0020.0002.131A] # ETHIOPIC SYLLABLE GGI
-131B ; [.1F2B.0020.0002.131B] # ETHIOPIC SYLLABLE GGAA
-131C ; [.1F2C.0020.0002.131C] # ETHIOPIC SYLLABLE GGEE
-131D ; [.1F2D.0020.0002.131D] # ETHIOPIC SYLLABLE GGE
-131E ; [.1F2E.0020.0002.131E] # ETHIOPIC SYLLABLE GGO
-131F ; [.1F2F.0020.0002.131F] # ETHIOPIC SYLLABLE GGWAA
-2D93 ; [.1F30.0020.0002.2D93] # ETHIOPIC SYLLABLE GGWA
-2D94 ; [.1F31.0020.0002.2D94] # ETHIOPIC SYLLABLE GGWI
-2D95 ; [.1F32.0020.0002.2D95] # ETHIOPIC SYLLABLE GGWEE
-2D96 ; [.1F33.0020.0002.2D96] # ETHIOPIC SYLLABLE GGWE
-1320 ; [.1F34.0020.0002.1320] # ETHIOPIC SYLLABLE THA
-1321 ; [.1F35.0020.0002.1321] # ETHIOPIC SYLLABLE THU
-1322 ; [.1F36.0020.0002.1322] # ETHIOPIC SYLLABLE THI
-1323 ; [.1F37.0020.0002.1323] # ETHIOPIC SYLLABLE THAA
-1324 ; [.1F38.0020.0002.1324] # ETHIOPIC SYLLABLE THEE
-1325 ; [.1F39.0020.0002.1325] # ETHIOPIC SYLLABLE THE
-1326 ; [.1F3A.0020.0002.1326] # ETHIOPIC SYLLABLE THO
-1327 ; [.1F3B.0020.0002.1327] # ETHIOPIC SYLLABLE THWA
-2D8F ; [.1F3C.0020.0002.2D8F] # ETHIOPIC SYLLABLE THOA
-1328 ; [.1F3D.0020.0002.1328] # ETHIOPIC SYLLABLE CHA
-1329 ; [.1F3E.0020.0002.1329] # ETHIOPIC SYLLABLE CHU
-132A ; [.1F3F.0020.0002.132A] # ETHIOPIC SYLLABLE CHI
-132B ; [.1F40.0020.0002.132B] # ETHIOPIC SYLLABLE CHAA
-132C ; [.1F41.0020.0002.132C] # ETHIOPIC SYLLABLE CHEE
-132D ; [.1F42.0020.0002.132D] # ETHIOPIC SYLLABLE CHE
-132E ; [.1F43.0020.0002.132E] # ETHIOPIC SYLLABLE CHO
-132F ; [.1F44.0020.0002.132F] # ETHIOPIC SYLLABLE CHWA
-2D90 ; [.1F45.0020.0002.2D90] # ETHIOPIC SYLLABLE CHOA
-AB20 ; [.1F46.0020.0002.AB20] # ETHIOPIC SYLLABLE CCHHA
-AB21 ; [.1F47.0020.0002.AB21] # ETHIOPIC SYLLABLE CCHHU
-AB22 ; [.1F48.0020.0002.AB22] # ETHIOPIC SYLLABLE CCHHI
-AB23 ; [.1F49.0020.0002.AB23] # ETHIOPIC SYLLABLE CCHHAA
-AB24 ; [.1F4A.0020.0002.AB24] # ETHIOPIC SYLLABLE CCHHEE
-AB25 ; [.1F4B.0020.0002.AB25] # ETHIOPIC SYLLABLE CCHHE
-AB26 ; [.1F4C.0020.0002.AB26] # ETHIOPIC SYLLABLE CCHHO
-1330 ; [.1F4D.0020.0002.1330] # ETHIOPIC SYLLABLE PHA
-1331 ; [.1F4E.0020.0002.1331] # ETHIOPIC SYLLABLE PHU
-1332 ; [.1F4F.0020.0002.1332] # ETHIOPIC SYLLABLE PHI
-1333 ; [.1F50.0020.0002.1333] # ETHIOPIC SYLLABLE PHAA
-1334 ; [.1F51.0020.0002.1334] # ETHIOPIC SYLLABLE PHEE
-1335 ; [.1F52.0020.0002.1335] # ETHIOPIC SYLLABLE PHE
-1336 ; [.1F53.0020.0002.1336] # ETHIOPIC SYLLABLE PHO
-1337 ; [.1F54.0020.0002.1337] # ETHIOPIC SYLLABLE PHWA
-2D91 ; [.1F55.0020.0002.2D91] # ETHIOPIC SYLLABLE PHOA
-1338 ; [.1F56.0020.0002.1338] # ETHIOPIC SYLLABLE TSA
-1339 ; [.1F57.0020.0002.1339] # ETHIOPIC SYLLABLE TSU
-133A ; [.1F58.0020.0002.133A] # ETHIOPIC SYLLABLE TSI
-133B ; [.1F59.0020.0002.133B] # ETHIOPIC SYLLABLE TSAA
-133C ; [.1F5A.0020.0002.133C] # ETHIOPIC SYLLABLE TSEE
-133D ; [.1F5B.0020.0002.133D] # ETHIOPIC SYLLABLE TSE
-133E ; [.1F5C.0020.0002.133E] # ETHIOPIC SYLLABLE TSO
-133F ; [.1F5D.0020.0002.133F] # ETHIOPIC SYLLABLE TSWA
-AB28 ; [.1F5E.0020.0002.AB28] # ETHIOPIC SYLLABLE BBA
-AB29 ; [.1F5F.0020.0002.AB29] # ETHIOPIC SYLLABLE BBU
-AB2A ; [.1F60.0020.0002.AB2A] # ETHIOPIC SYLLABLE BBI
-AB2B ; [.1F61.0020.0002.AB2B] # ETHIOPIC SYLLABLE BBAA
-AB2C ; [.1F62.0020.0002.AB2C] # ETHIOPIC SYLLABLE BBEE
-AB2D ; [.1F63.0020.0002.AB2D] # ETHIOPIC SYLLABLE BBE
-AB2E ; [.1F64.0020.0002.AB2E] # ETHIOPIC SYLLABLE BBO
-1340 ; [.1F65.0020.0002.1340] # ETHIOPIC SYLLABLE TZA
-1341 ; [.1F66.0020.0002.1341] # ETHIOPIC SYLLABLE TZU
-1342 ; [.1F67.0020.0002.1342] # ETHIOPIC SYLLABLE TZI
-1343 ; [.1F68.0020.0002.1343] # ETHIOPIC SYLLABLE TZAA
-1344 ; [.1F69.0020.0002.1344] # ETHIOPIC SYLLABLE TZEE
-1345 ; [.1F6A.0020.0002.1345] # ETHIOPIC SYLLABLE TZE
-1346 ; [.1F6B.0020.0002.1346] # ETHIOPIC SYLLABLE TZO
-1347 ; [.1F6C.0020.0002.1347] # ETHIOPIC SYLLABLE TZOA
-1348 ; [.1F6D.0020.0002.1348] # ETHIOPIC SYLLABLE FA
-1349 ; [.1F6E.0020.0002.1349] # ETHIOPIC SYLLABLE FU
-134A ; [.1F6F.0020.0002.134A] # ETHIOPIC SYLLABLE FI
-134B ; [.1F70.0020.0002.134B] # ETHIOPIC SYLLABLE FAA
-134C ; [.1F71.0020.0002.134C] # ETHIOPIC SYLLABLE FEE
-134D ; [.1F72.0020.0002.134D] # ETHIOPIC SYLLABLE FE
-134E ; [.1F73.0020.0002.134E] # ETHIOPIC SYLLABLE FO
-134F ; [.1F74.0020.0002.134F] # ETHIOPIC SYLLABLE FWA
-1388 ; [.1F75.0020.0002.1388] # ETHIOPIC SYLLABLE SEBATBEIT FWA
-1389 ; [.1F76.0020.0002.1389] # ETHIOPIC SYLLABLE FWI
-138A ; [.1F77.0020.0002.138A] # ETHIOPIC SYLLABLE FWEE
-138B ; [.1F78.0020.0002.138B] # ETHIOPIC SYLLABLE FWE
-1350 ; [.1F79.0020.0002.1350] # ETHIOPIC SYLLABLE PA
-1351 ; [.1F7A.0020.0002.1351] # ETHIOPIC SYLLABLE PU
-1352 ; [.1F7B.0020.0002.1352] # ETHIOPIC SYLLABLE PI
-1353 ; [.1F7C.0020.0002.1353] # ETHIOPIC SYLLABLE PAA
-1354 ; [.1F7D.0020.0002.1354] # ETHIOPIC SYLLABLE PEE
-1355 ; [.1F7E.0020.0002.1355] # ETHIOPIC SYLLABLE PE
-1356 ; [.1F7F.0020.0002.1356] # ETHIOPIC SYLLABLE PO
-1357 ; [.1F80.0020.0002.1357] # ETHIOPIC SYLLABLE PWA
-138C ; [.1F81.0020.0002.138C] # ETHIOPIC SYLLABLE SEBATBEIT PWA
-138D ; [.1F82.0020.0002.138D] # ETHIOPIC SYLLABLE PWI
-138E ; [.1F83.0020.0002.138E] # ETHIOPIC SYLLABLE PWEE
-138F ; [.1F84.0020.0002.138F] # ETHIOPIC SYLLABLE PWE
-2D92 ; [.1F85.0020.0002.2D92] # ETHIOPIC SYLLABLE POA
-1358 ; [.1F86.0020.0002.1358] # ETHIOPIC SYLLABLE RYA
-1359 ; [.1F87.0020.0002.1359] # ETHIOPIC SYLLABLE MYA
-135A ; [.1F88.0020.0002.135A] # ETHIOPIC SYLLABLE FYA
-2DA0 ; [.1F89.0020.0002.2DA0] # ETHIOPIC SYLLABLE SSA
-2DA1 ; [.1F8A.0020.0002.2DA1] # ETHIOPIC SYLLABLE SSU
-2DA2 ; [.1F8B.0020.0002.2DA2] # ETHIOPIC SYLLABLE SSI
-2DA3 ; [.1F8C.0020.0002.2DA3] # ETHIOPIC SYLLABLE SSAA
-2DA4 ; [.1F8D.0020.0002.2DA4] # ETHIOPIC SYLLABLE SSEE
-2DA5 ; [.1F8E.0020.0002.2DA5] # ETHIOPIC SYLLABLE SSE
-2DA6 ; [.1F8F.0020.0002.2DA6] # ETHIOPIC SYLLABLE SSO
-2DA8 ; [.1F90.0020.0002.2DA8] # ETHIOPIC SYLLABLE CCA
-2DA9 ; [.1F91.0020.0002.2DA9] # ETHIOPIC SYLLABLE CCU
-2DAA ; [.1F92.0020.0002.2DAA] # ETHIOPIC SYLLABLE CCI
-2DAB ; [.1F93.0020.0002.2DAB] # ETHIOPIC SYLLABLE CCAA
-2DAC ; [.1F94.0020.0002.2DAC] # ETHIOPIC SYLLABLE CCEE
-2DAD ; [.1F95.0020.0002.2DAD] # ETHIOPIC SYLLABLE CCE
-2DAE ; [.1F96.0020.0002.2DAE] # ETHIOPIC SYLLABLE CCO
-2DB0 ; [.1F97.0020.0002.2DB0] # ETHIOPIC SYLLABLE ZZA
-2DB1 ; [.1F98.0020.0002.2DB1] # ETHIOPIC SYLLABLE ZZU
-2DB2 ; [.1F99.0020.0002.2DB2] # ETHIOPIC SYLLABLE ZZI
-2DB3 ; [.1F9A.0020.0002.2DB3] # ETHIOPIC SYLLABLE ZZAA
-2DB4 ; [.1F9B.0020.0002.2DB4] # ETHIOPIC SYLLABLE ZZEE
-2DB5 ; [.1F9C.0020.0002.2DB5] # ETHIOPIC SYLLABLE ZZE
-2DB6 ; [.1F9D.0020.0002.2DB6] # ETHIOPIC SYLLABLE ZZO
-2DB8 ; [.1F9E.0020.0002.2DB8] # ETHIOPIC SYLLABLE CCHA
-2DB9 ; [.1F9F.0020.0002.2DB9] # ETHIOPIC SYLLABLE CCHU
-2DBA ; [.1FA0.0020.0002.2DBA] # ETHIOPIC SYLLABLE CCHI
-2DBB ; [.1FA1.0020.0002.2DBB] # ETHIOPIC SYLLABLE CCHAA
-2DBC ; [.1FA2.0020.0002.2DBC] # ETHIOPIC SYLLABLE CCHEE
-2DBD ; [.1FA3.0020.0002.2DBD] # ETHIOPIC SYLLABLE CCHE
-2DBE ; [.1FA4.0020.0002.2DBE] # ETHIOPIC SYLLABLE CCHO
-2DC0 ; [.1FA5.0020.0002.2DC0] # ETHIOPIC SYLLABLE QYA
-2DC1 ; [.1FA6.0020.0002.2DC1] # ETHIOPIC SYLLABLE QYU
-2DC2 ; [.1FA7.0020.0002.2DC2] # ETHIOPIC SYLLABLE QYI
-2DC3 ; [.1FA8.0020.0002.2DC3] # ETHIOPIC SYLLABLE QYAA
-2DC4 ; [.1FA9.0020.0002.2DC4] # ETHIOPIC SYLLABLE QYEE
-2DC5 ; [.1FAA.0020.0002.2DC5] # ETHIOPIC SYLLABLE QYE
-2DC6 ; [.1FAB.0020.0002.2DC6] # ETHIOPIC SYLLABLE QYO
-2DC8 ; [.1FAC.0020.0002.2DC8] # ETHIOPIC SYLLABLE KYA
-2DC9 ; [.1FAD.0020.0002.2DC9] # ETHIOPIC SYLLABLE KYU
-2DCA ; [.1FAE.0020.0002.2DCA] # ETHIOPIC SYLLABLE KYI
-2DCB ; [.1FAF.0020.0002.2DCB] # ETHIOPIC SYLLABLE KYAA
-2DCC ; [.1FB0.0020.0002.2DCC] # ETHIOPIC SYLLABLE KYEE
-2DCD ; [.1FB1.0020.0002.2DCD] # ETHIOPIC SYLLABLE KYE
-2DCE ; [.1FB2.0020.0002.2DCE] # ETHIOPIC SYLLABLE KYO
-2DD0 ; [.1FB3.0020.0002.2DD0] # ETHIOPIC SYLLABLE XYA
-2DD1 ; [.1FB4.0020.0002.2DD1] # ETHIOPIC SYLLABLE XYU
-2DD2 ; [.1FB5.0020.0002.2DD2] # ETHIOPIC SYLLABLE XYI
-2DD3 ; [.1FB6.0020.0002.2DD3] # ETHIOPIC SYLLABLE XYAA
-2DD4 ; [.1FB7.0020.0002.2DD4] # ETHIOPIC SYLLABLE XYEE
-2DD5 ; [.1FB8.0020.0002.2DD5] # ETHIOPIC SYLLABLE XYE
-2DD6 ; [.1FB9.0020.0002.2DD6] # ETHIOPIC SYLLABLE XYO
-2DD8 ; [.1FBA.0020.0002.2DD8] # ETHIOPIC SYLLABLE GYA
-2DD9 ; [.1FBB.0020.0002.2DD9] # ETHIOPIC SYLLABLE GYU
-2DDA ; [.1FBC.0020.0002.2DDA] # ETHIOPIC SYLLABLE GYI
-2DDB ; [.1FBD.0020.0002.2DDB] # ETHIOPIC SYLLABLE GYAA
-2DDC ; [.1FBE.0020.0002.2DDC] # ETHIOPIC SYLLABLE GYEE
-2DDD ; [.1FBF.0020.0002.2DDD] # ETHIOPIC SYLLABLE GYE
-2DDE ; [.1FC0.0020.0002.2DDE] # ETHIOPIC SYLLABLE GYO
-0950 ; [.1FC1.0020.0002.0950] # DEVANAGARI OM
-0972 ; [.1FC2.0020.0002.0972] # DEVANAGARI LETTER CANDRA A
-0904 ; [.1FC3.0020.0002.0904] # DEVANAGARI LETTER SHORT A
-0905 ; [.1FC4.0020.0002.0905] # DEVANAGARI LETTER A
-0906 ; [.1FC5.0020.0002.0906] # DEVANAGARI LETTER AA
-0973 ; [.1FC6.0020.0002.0973] # DEVANAGARI LETTER OE
-0974 ; [.1FC7.0020.0002.0974] # DEVANAGARI LETTER OOE
-0975 ; [.1FC8.0020.0002.0975] # DEVANAGARI LETTER AW
-0976 ; [.1FC9.0020.0002.0976] # DEVANAGARI LETTER UE
-0977 ; [.1FCA.0020.0002.0977] # DEVANAGARI LETTER UUE
-0907 ; [.1FCB.0020.0002.0907] # DEVANAGARI LETTER I
-0908 ; [.1FCC.0020.0002.0908] # DEVANAGARI LETTER II
-0909 ; [.1FCD.0020.0002.0909] # DEVANAGARI LETTER U
-090A ; [.1FCE.0020.0002.090A] # DEVANAGARI LETTER UU
-090B ; [.1FCF.0020.0002.090B] # DEVANAGARI LETTER VOCALIC R
-0960 ; [.1FD0.0020.0002.0960] # DEVANAGARI LETTER VOCALIC RR
-090C ; [.1FD1.0020.0002.090C] # DEVANAGARI LETTER VOCALIC L
-0961 ; [.1FD2.0020.0002.0961] # DEVANAGARI LETTER VOCALIC LL
-090D ; [.1FD3.0020.0002.090D] # DEVANAGARI LETTER CANDRA E
-090E ; [.1FD4.0020.0002.090E] # DEVANAGARI LETTER SHORT E
-090F ; [.1FD5.0020.0002.090F] # DEVANAGARI LETTER E
-0910 ; [.1FD6.0020.0002.0910] # DEVANAGARI LETTER AI
-0911 ; [.1FD7.0020.0002.0911] # DEVANAGARI LETTER CANDRA O
-0912 ; [.1FD8.0020.0002.0912] # DEVANAGARI LETTER SHORT O
-0913 ; [.1FD9.0020.0002.0913] # DEVANAGARI LETTER O
-0914 ; [.1FDA.0020.0002.0914] # DEVANAGARI LETTER AU
-0915 ; [.1FDB.0020.0002.0915] # DEVANAGARI LETTER KA
-0958 ; [.1FDB.0020.0002.0915][.0000.00F1.0002.093C] # DEVANAGARI LETTER QA
-0916 ; [.1FDC.0020.0002.0916] # DEVANAGARI LETTER KHA
-0959 ; [.1FDC.0020.0002.0916][.0000.00F1.0002.093C] # DEVANAGARI LETTER KHHA
-0917 ; [.1FDD.0020.0002.0917] # DEVANAGARI LETTER GA
-095A ; [.1FDD.0020.0002.0917][.0000.00F1.0002.093C] # DEVANAGARI LETTER GHHA
-097B ; [.1FDE.0020.0002.097B] # DEVANAGARI LETTER GGA
-0918 ; [.1FDF.0020.0002.0918] # DEVANAGARI LETTER GHA
-0919 ; [.1FE0.0020.0002.0919] # DEVANAGARI LETTER NGA
-091A ; [.1FE1.0020.0002.091A] # DEVANAGARI LETTER CA
-091B ; [.1FE2.0020.0002.091B] # DEVANAGARI LETTER CHA
-091C ; [.1FE3.0020.0002.091C] # DEVANAGARI LETTER JA
-095B ; [.1FE3.0020.0002.091C][.0000.00F1.0002.093C] # DEVANAGARI LETTER ZA
-0979 ; [.1FE4.0020.0002.0979] # DEVANAGARI LETTER ZHA
-097C ; [.1FE5.0020.0002.097C] # DEVANAGARI LETTER JJA
-091D ; [.1FE6.0020.0002.091D] # DEVANAGARI LETTER JHA
-091E ; [.1FE7.0020.0002.091E] # DEVANAGARI LETTER NYA
-091F ; [.1FE8.0020.0002.091F] # DEVANAGARI LETTER TTA
-0920 ; [.1FE9.0020.0002.0920] # DEVANAGARI LETTER TTHA
-0921 ; [.1FEA.0020.0002.0921] # DEVANAGARI LETTER DDA
-095C ; [.1FEA.0020.0002.0921][.0000.00F1.0002.093C] # DEVANAGARI LETTER DDDHA
-097E ; [.1FEB.0020.0002.097E] # DEVANAGARI LETTER DDDA
-0922 ; [.1FEC.0020.0002.0922] # DEVANAGARI LETTER DDHA
-095D ; [.1FEC.0020.0002.0922][.0000.00F1.0002.093C] # DEVANAGARI LETTER RHA
-0923 ; [.1FED.0020.0002.0923] # DEVANAGARI LETTER NNA
-0924 ; [.1FEE.0020.0002.0924] # DEVANAGARI LETTER TA
-0925 ; [.1FEF.0020.0002.0925] # DEVANAGARI LETTER THA
-0926 ; [.1FF0.0020.0002.0926] # DEVANAGARI LETTER DA
-0927 ; [.1FF1.0020.0002.0927] # DEVANAGARI LETTER DHA
-0928 ; [.1FF2.0020.0002.0928] # DEVANAGARI LETTER NA
-0929 ; [.1FF2.0020.0002.0928][.0000.00F1.0002.093C] # DEVANAGARI LETTER NNNA
-092A ; [.1FF3.0020.0002.092A] # DEVANAGARI LETTER PA
-092B ; [.1FF4.0020.0002.092B] # DEVANAGARI LETTER PHA
-095E ; [.1FF4.0020.0002.092B][.0000.00F1.0002.093C] # DEVANAGARI LETTER FA
-092C ; [.1FF5.0020.0002.092C] # DEVANAGARI LETTER BA
-097F ; [.1FF6.0020.0002.097F] # DEVANAGARI LETTER BBA
-092D ; [.1FF7.0020.0002.092D] # DEVANAGARI LETTER BHA
-092E ; [.1FF8.0020.0002.092E] # DEVANAGARI LETTER MA
-092F ; [.1FF9.0020.0002.092F] # DEVANAGARI LETTER YA
-095F ; [.1FF9.0020.0002.092F][.0000.00F1.0002.093C] # DEVANAGARI LETTER YYA
-097A ; [.1FFA.0020.0002.097A] # DEVANAGARI LETTER HEAVY YA
-0930 ; [.1FFB.0020.0002.0930] # DEVANAGARI LETTER RA
-0931 ; [.1FFB.0020.0002.0930][.0000.00F1.0002.093C] # DEVANAGARI LETTER RRA
-0932 ; [.1FFC.0020.0002.0932] # DEVANAGARI LETTER LA
-0933 ; [.1FFD.0020.0002.0933] # DEVANAGARI LETTER LLA
-0934 ; [.1FFD.0020.0002.0933][.0000.00F1.0002.093C] # DEVANAGARI LETTER LLLA
-0935 ; [.1FFE.0020.0002.0935] # DEVANAGARI LETTER VA
-0936 ; [.1FFF.0020.0002.0936] # DEVANAGARI LETTER SHA
-0937 ; [.2000.0020.0002.0937] # DEVANAGARI LETTER SSA
-0938 ; [.2001.0020.0002.0938] # DEVANAGARI LETTER SA
-0939 ; [.2002.0020.0002.0939] # DEVANAGARI LETTER HA
-093D ; [.2003.0020.0002.093D] # DEVANAGARI SIGN AVAGRAHA
-097D ; [.2004.0020.0002.097D] # DEVANAGARI LETTER GLOTTAL STOP
-1CE9 ; [.2005.0020.0002.1CE9] # VEDIC SIGN ANUSVARA ANTARGOMUKHA
-1CEA ; [.2005.0020.0004.1CEA] # VEDIC SIGN ANUSVARA BAHIRGOMUKHA
-1CEB ; [.2005.0020.0004.1CEB] # VEDIC SIGN ANUSVARA VAMAGOMUKHA
-1CEC ; [.2005.0020.0004.1CEC] # VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
-1CEE ; [.2005.0020.0004.1CEE] # VEDIC SIGN HEXIFORM LONG ANUSVARA
-1CEF ; [.2005.0020.0004.1CEF] # VEDIC SIGN LONG ANUSVARA
-1CF0 ; [.2005.0020.0004.1CF0] # VEDIC SIGN RTHANG LONG ANUSVARA
-1CF1 ; [.2005.0020.0004.1CF1] # VEDIC SIGN ANUSVARA UBHAYATO MUKHA
-1CF5 ; [.2006.0020.0002.1CF5] # VEDIC SIGN JIHVAMULIYA
-1CF6 ; [.2007.0020.0002.1CF6] # VEDIC SIGN UPADHMANIYA
-A8F2 ; [.2008.0020.0002.A8F2] # DEVANAGARI SIGN SPACING CANDRABINDU
-A8F3 ; [.2008.0020.0004.A8F3] # DEVANAGARI SIGN CANDRABINDU VIRAMA
-A8F4 ; [.2008.0020.0004.A8F4] # DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA
-A8F5 ; [.2008.0020.0004.A8F5] # DEVANAGARI SIGN CANDRABINDU TWO
-A8F6 ; [.2008.0020.0004.A8F6] # DEVANAGARI SIGN CANDRABINDU THREE
-A8F7 ; [.2008.0020.0004.A8F7] # DEVANAGARI SIGN CANDRABINDU AVAGRAHA
-A8FB ; [.2009.0020.0002.A8FB] # DEVANAGARI HEADSTROKE
-093E ; [.200A.0020.0002.093E] # DEVANAGARI VOWEL SIGN AA
-093A ; [.200B.0020.0002.093A] # DEVANAGARI VOWEL SIGN OE
-093B ; [.200C.0020.0002.093B] # DEVANAGARI VOWEL SIGN OOE
-094F ; [.200D.0020.0002.094F] # DEVANAGARI VOWEL SIGN AW
-0956 ; [.200E.0020.0002.0956] # DEVANAGARI VOWEL SIGN UE
-0957 ; [.200F.0020.0002.0957] # DEVANAGARI VOWEL SIGN UUE
-093F ; [.2010.0020.0002.093F] # DEVANAGARI VOWEL SIGN I
-0940 ; [.2011.0020.0002.0940] # DEVANAGARI VOWEL SIGN II
-0941 ; [.2012.0020.0002.0941] # DEVANAGARI VOWEL SIGN U
-0942 ; [.2013.0020.0002.0942] # DEVANAGARI VOWEL SIGN UU
-0943 ; [.2014.0020.0002.0943] # DEVANAGARI VOWEL SIGN VOCALIC R
-0944 ; [.2015.0020.0002.0944] # DEVANAGARI VOWEL SIGN VOCALIC RR
-0962 ; [.2016.0020.0002.0962] # DEVANAGARI VOWEL SIGN VOCALIC L
-0963 ; [.2017.0020.0002.0963] # DEVANAGARI VOWEL SIGN VOCALIC LL
-0945 ; [.2018.0020.0002.0945] # DEVANAGARI VOWEL SIGN CANDRA E
-0955 ; [.2019.0020.0002.0955] # DEVANAGARI VOWEL SIGN CANDRA LONG E
-0946 ; [.201A.0020.0002.0946] # DEVANAGARI VOWEL SIGN SHORT E
-0947 ; [.201B.0020.0002.0947] # DEVANAGARI VOWEL SIGN E
-094E ; [.201C.0020.0002.094E] # DEVANAGARI VOWEL SIGN PRISHTHAMATRA E
-0948 ; [.201D.0020.0002.0948] # DEVANAGARI VOWEL SIGN AI
-0949 ; [.201E.0020.0002.0949] # DEVANAGARI VOWEL SIGN CANDRA O
-094A ; [.201F.0020.0002.094A] # DEVANAGARI VOWEL SIGN SHORT O
-094B ; [.2020.0020.0002.094B] # DEVANAGARI VOWEL SIGN O
-094C ; [.2021.0020.0002.094C] # DEVANAGARI VOWEL SIGN AU
-094D ; [.2022.0020.0002.094D] # DEVANAGARI SIGN VIRAMA
-0985 ; [.2023.0020.0002.0985] # BENGALI LETTER A
-0986 ; [.2024.0020.0002.0986] # BENGALI LETTER AA
-0987 ; [.2025.0020.0002.0987] # BENGALI LETTER I
-0988 ; [.2026.0020.0002.0988] # BENGALI LETTER II
-0989 ; [.2027.0020.0002.0989] # BENGALI LETTER U
-098A ; [.2028.0020.0002.098A] # BENGALI LETTER UU
-098B ; [.2029.0020.0002.098B] # BENGALI LETTER VOCALIC R
-09E0 ; [.202A.0020.0002.09E0] # BENGALI LETTER VOCALIC RR
-098C ; [.202B.0020.0002.098C] # BENGALI LETTER VOCALIC L
-09E1 ; [.202C.0020.0002.09E1] # BENGALI LETTER VOCALIC LL
-098F ; [.202D.0020.0002.098F] # BENGALI LETTER E
-0990 ; [.202E.0020.0002.0990] # BENGALI LETTER AI
-0993 ; [.202F.0020.0002.0993] # BENGALI LETTER O
-0994 ; [.2030.0020.0002.0994] # BENGALI LETTER AU
-0995 ; [.2031.0020.0002.0995] # BENGALI LETTER KA
-0996 ; [.2032.0020.0002.0996] # BENGALI LETTER KHA
-0997 ; [.2033.0020.0002.0997] # BENGALI LETTER GA
-0998 ; [.2034.0020.0002.0998] # BENGALI LETTER GHA
-0999 ; [.2035.0020.0002.0999] # BENGALI LETTER NGA
-099A ; [.2036.0020.0002.099A] # BENGALI LETTER CA
-099B ; [.2037.0020.0002.099B] # BENGALI LETTER CHA
-099C ; [.2038.0020.0002.099C] # BENGALI LETTER JA
-099D ; [.2039.0020.0002.099D] # BENGALI LETTER JHA
-099E ; [.203A.0020.0002.099E] # BENGALI LETTER NYA
-099F ; [.203B.0020.0002.099F] # BENGALI LETTER TTA
-09A0 ; [.203C.0020.0002.09A0] # BENGALI LETTER TTHA
-09A1 ; [.203D.0020.0002.09A1] # BENGALI LETTER DDA
-09DC ; [.203D.0020.0002.09A1][.0000.00F1.0002.093C] # BENGALI LETTER RRA
-09A2 ; [.203E.0020.0002.09A2] # BENGALI LETTER DDHA
-09DD ; [.203E.0020.0002.09A2][.0000.00F1.0002.093C] # BENGALI LETTER RHA
-09A3 ; [.203F.0020.0002.09A3] # BENGALI LETTER NNA
-09A4 ; [.2040.0020.0002.09A4] # BENGALI LETTER TA
-09CE ; [.2040.0020.0004.09CE][.2061.0020.0004.09CE] # BENGALI LETTER KHANDA TA
-09A5 ; [.2041.0020.0002.09A5] # BENGALI LETTER THA
-09A6 ; [.2042.0020.0002.09A6] # BENGALI LETTER DA
-09A7 ; [.2043.0020.0002.09A7] # BENGALI LETTER DHA
-09A8 ; [.2044.0020.0002.09A8] # BENGALI LETTER NA
-09AA ; [.2045.0020.0002.09AA] # BENGALI LETTER PA
-09AB ; [.2046.0020.0002.09AB] # BENGALI LETTER PHA
-09AC ; [.2047.0020.0002.09AC] # BENGALI LETTER BA
-09AD ; [.2048.0020.0002.09AD] # BENGALI LETTER BHA
-09AE ; [.2049.0020.0002.09AE] # BENGALI LETTER MA
-09AF ; [.204A.0020.0002.09AF] # BENGALI LETTER YA
-09DF ; [.204A.0020.0002.09AF][.0000.00F1.0002.093C] # BENGALI LETTER YYA
-09B0 ; [.204B.0020.0002.09B0] # BENGALI LETTER RA
-09F0 ; [.204C.0020.0002.09F0] # BENGALI LETTER RA WITH MIDDLE DIAGONAL
-09B2 ; [.204D.0020.0002.09B2] # BENGALI LETTER LA
-09F1 ; [.204E.0020.0002.09F1] # BENGALI LETTER RA WITH LOWER DIAGONAL
-09B6 ; [.204F.0020.0002.09B6] # BENGALI LETTER SHA
-09B7 ; [.2050.0020.0002.09B7] # BENGALI LETTER SSA
-09B8 ; [.2051.0020.0002.09B8] # BENGALI LETTER SA
-09B9 ; [.2052.0020.0002.09B9] # BENGALI LETTER HA
-09BD ; [.2053.0020.0002.09BD] # BENGALI SIGN AVAGRAHA
-09BE ; [.2054.0020.0002.09BE] # BENGALI VOWEL SIGN AA
-09BF ; [.2055.0020.0002.09BF] # BENGALI VOWEL SIGN I
-09C0 ; [.2056.0020.0002.09C0] # BENGALI VOWEL SIGN II
-09C1 ; [.2057.0020.0002.09C1] # BENGALI VOWEL SIGN U
-09C2 ; [.2058.0020.0002.09C2] # BENGALI VOWEL SIGN UU
-09C3 ; [.2059.0020.0002.09C3] # BENGALI VOWEL SIGN VOCALIC R
-09C4 ; [.205A.0020.0002.09C4] # BENGALI VOWEL SIGN VOCALIC RR
-09E2 ; [.205B.0020.0002.09E2] # BENGALI VOWEL SIGN VOCALIC L
-09E3 ; [.205C.0020.0002.09E3] # BENGALI VOWEL SIGN VOCALIC LL
-09C7 ; [.205D.0020.0002.09C7] # BENGALI VOWEL SIGN E
-09C8 ; [.205E.0020.0002.09C8] # BENGALI VOWEL SIGN AI
-09CB ; [.205F.0020.0002.09CB] # BENGALI VOWEL SIGN O
-09C7 09BE ; [.205F.0020.0002.09CB] # BENGALI VOWEL SIGN O
-09CC ; [.2060.0020.0002.09CC] # BENGALI VOWEL SIGN AU
-09C7 09D7 ; [.2060.0020.0002.09CC] # BENGALI VOWEL SIGN AU
-09CD ; [.2061.0020.0002.09CD] # BENGALI SIGN VIRAMA
-09D7 ; [.2062.0020.0002.09D7] # BENGALI AU LENGTH MARK
-0A74 ; [.2063.0020.0002.0A74] # GURMUKHI EK ONKAR
-0A73 ; [.2064.0020.0002.0A73] # GURMUKHI URA
-0A09 ; [.2065.0020.0002.0A09] # GURMUKHI LETTER U
-0A0A ; [.2066.0020.0002.0A0A] # GURMUKHI LETTER UU
-0A13 ; [.2067.0020.0002.0A13] # GURMUKHI LETTER OO
-0A05 ; [.2068.0020.0002.0A05] # GURMUKHI LETTER A
-0A06 ; [.2069.0020.0002.0A06] # GURMUKHI LETTER AA
-0A10 ; [.206A.0020.0002.0A10] # GURMUKHI LETTER AI
-0A14 ; [.206B.0020.0002.0A14] # GURMUKHI LETTER AU
-0A72 ; [.206C.0020.0002.0A72] # GURMUKHI IRI
-0A07 ; [.206D.0020.0002.0A07] # GURMUKHI LETTER I
-0A08 ; [.206E.0020.0002.0A08] # GURMUKHI LETTER II
-0A0F ; [.206F.0020.0002.0A0F] # GURMUKHI LETTER EE
-0A38 ; [.2070.0020.0002.0A38] # GURMUKHI LETTER SA
-0A36 ; [.2070.0020.0002.0A38][.0000.00F1.0002.093C] # GURMUKHI LETTER SHA
-0A39 ; [.2071.0020.0002.0A39] # GURMUKHI LETTER HA
-0A51 ; [.2072.0020.0002.0A51] # GURMUKHI SIGN UDAAT
-0A15 ; [.2073.0020.0002.0A15] # GURMUKHI LETTER KA
-0A16 ; [.2074.0020.0002.0A16] # GURMUKHI LETTER KHA
-0A59 ; [.2074.0020.0002.0A16][.0000.00F1.0002.093C] # GURMUKHI LETTER KHHA
-0A17 ; [.2075.0020.0002.0A17] # GURMUKHI LETTER GA
-0A5A ; [.2075.0020.0002.0A17][.0000.00F1.0002.093C] # GURMUKHI LETTER GHHA
-0A18 ; [.2076.0020.0002.0A18] # GURMUKHI LETTER GHA
-0A19 ; [.2077.0020.0002.0A19] # GURMUKHI LETTER NGA
-0A1A ; [.2078.0020.0002.0A1A] # GURMUKHI LETTER CA
-0A1B ; [.2079.0020.0002.0A1B] # GURMUKHI LETTER CHA
-0A1C ; [.207A.0020.0002.0A1C] # GURMUKHI LETTER JA
-0A5B ; [.207A.0020.0002.0A1C][.0000.00F1.0002.093C] # GURMUKHI LETTER ZA
-0A1D ; [.207B.0020.0002.0A1D] # GURMUKHI LETTER JHA
-0A1E ; [.207C.0020.0002.0A1E] # GURMUKHI LETTER NYA
-0A1F ; [.207D.0020.0002.0A1F] # GURMUKHI LETTER TTA
-0A20 ; [.207E.0020.0002.0A20] # GURMUKHI LETTER TTHA
-0A21 ; [.207F.0020.0002.0A21] # GURMUKHI LETTER DDA
-0A22 ; [.2080.0020.0002.0A22] # GURMUKHI LETTER DDHA
-0A23 ; [.2081.0020.0002.0A23] # GURMUKHI LETTER NNA
-0A24 ; [.2082.0020.0002.0A24] # GURMUKHI LETTER TA
-0A25 ; [.2083.0020.0002.0A25] # GURMUKHI LETTER THA
-0A26 ; [.2084.0020.0002.0A26] # GURMUKHI LETTER DA
-0A27 ; [.2085.0020.0002.0A27] # GURMUKHI LETTER DHA
-0A28 ; [.2086.0020.0002.0A28] # GURMUKHI LETTER NA
-0A2A ; [.2087.0020.0002.0A2A] # GURMUKHI LETTER PA
-0A2B ; [.2088.0020.0002.0A2B] # GURMUKHI LETTER PHA
-0A5E ; [.2088.0020.0002.0A2B][.0000.00F1.0002.093C] # GURMUKHI LETTER FA
-0A2C ; [.2089.0020.0002.0A2C] # GURMUKHI LETTER BA
-0A2D ; [.208A.0020.0002.0A2D] # GURMUKHI LETTER BHA
-0A2E ; [.208B.0020.0002.0A2E] # GURMUKHI LETTER MA
-0A2F ; [.208C.0020.0002.0A2F] # GURMUKHI LETTER YA
-0A75 ; [.208D.0020.0002.0A75] # GURMUKHI SIGN YAKASH
-0A30 ; [.208E.0020.0002.0A30] # GURMUKHI LETTER RA
-0A32 ; [.208F.0020.0002.0A32] # GURMUKHI LETTER LA
-0A33 ; [.208F.0020.0002.0A32][.0000.00F1.0002.093C] # GURMUKHI LETTER LLA
-0A35 ; [.2090.0020.0002.0A35] # GURMUKHI LETTER VA
-0A5C ; [.2091.0020.0002.0A5C] # GURMUKHI LETTER RRA
-0A3E ; [.2092.0020.0002.0A3E] # GURMUKHI VOWEL SIGN AA
-0A3F ; [.2093.0020.0002.0A3F] # GURMUKHI VOWEL SIGN I
-0A40 ; [.2094.0020.0002.0A40] # GURMUKHI VOWEL SIGN II
-0A41 ; [.2095.0020.0002.0A41] # GURMUKHI VOWEL SIGN U
-0A42 ; [.2096.0020.0002.0A42] # GURMUKHI VOWEL SIGN UU
-0A47 ; [.2097.0020.0002.0A47] # GURMUKHI VOWEL SIGN EE
-0A48 ; [.2098.0020.0002.0A48] # GURMUKHI VOWEL SIGN AI
-0A4B ; [.2099.0020.0002.0A4B] # GURMUKHI VOWEL SIGN OO
-0A4C ; [.209A.0020.0002.0A4C] # GURMUKHI VOWEL SIGN AU
-0A4D ; [.209B.0020.0002.0A4D] # GURMUKHI SIGN VIRAMA
-0AD0 ; [.209C.0020.0002.0AD0] # GUJARATI OM
-0A85 ; [.209D.0020.0002.0A85] # GUJARATI LETTER A
-0A86 ; [.209E.0020.0002.0A86] # GUJARATI LETTER AA
-0A87 ; [.209F.0020.0002.0A87] # GUJARATI LETTER I
-0A88 ; [.20A0.0020.0002.0A88] # GUJARATI LETTER II
-0A89 ; [.20A1.0020.0002.0A89] # GUJARATI LETTER U
-0A8A ; [.20A2.0020.0002.0A8A] # GUJARATI LETTER UU
-0A8B ; [.20A3.0020.0002.0A8B] # GUJARATI LETTER VOCALIC R
-0AE0 ; [.20A4.0020.0002.0AE0] # GUJARATI LETTER VOCALIC RR
-0A8C ; [.20A5.0020.0002.0A8C] # GUJARATI LETTER VOCALIC L
-0AE1 ; [.20A6.0020.0002.0AE1] # GUJARATI LETTER VOCALIC LL
-0A8D ; [.20A7.0020.0002.0A8D] # GUJARATI VOWEL CANDRA E
-0A8F ; [.20A8.0020.0002.0A8F] # GUJARATI LETTER E
-0A90 ; [.20A9.0020.0002.0A90] # GUJARATI LETTER AI
-0A91 ; [.20AA.0020.0002.0A91] # GUJARATI VOWEL CANDRA O
-0A93 ; [.20AB.0020.0002.0A93] # GUJARATI LETTER O
-0A94 ; [.20AC.0020.0002.0A94] # GUJARATI LETTER AU
-0A95 ; [.20AD.0020.0002.0A95] # GUJARATI LETTER KA
-0A96 ; [.20AE.0020.0002.0A96] # GUJARATI LETTER KHA
-0A97 ; [.20AF.0020.0002.0A97] # GUJARATI LETTER GA
-0A98 ; [.20B0.0020.0002.0A98] # GUJARATI LETTER GHA
-0A99 ; [.20B1.0020.0002.0A99] # GUJARATI LETTER NGA
-0A9A ; [.20B2.0020.0002.0A9A] # GUJARATI LETTER CA
-0A9B ; [.20B3.0020.0002.0A9B] # GUJARATI LETTER CHA
-0A9C ; [.20B4.0020.0002.0A9C] # GUJARATI LETTER JA
-0A9D ; [.20B5.0020.0002.0A9D] # GUJARATI LETTER JHA
-0A9E ; [.20B6.0020.0002.0A9E] # GUJARATI LETTER NYA
-0A9F ; [.20B7.0020.0002.0A9F] # GUJARATI LETTER TTA
-0AA0 ; [.20B8.0020.0002.0AA0] # GUJARATI LETTER TTHA
-0AA1 ; [.20B9.0020.0002.0AA1] # GUJARATI LETTER DDA
-0AA2 ; [.20BA.0020.0002.0AA2] # GUJARATI LETTER DDHA
-0AA3 ; [.20BB.0020.0002.0AA3] # GUJARATI LETTER NNA
-0AA4 ; [.20BC.0020.0002.0AA4] # GUJARATI LETTER TA
-0AA5 ; [.20BD.0020.0002.0AA5] # GUJARATI LETTER THA
-0AA6 ; [.20BE.0020.0002.0AA6] # GUJARATI LETTER DA
-0AA7 ; [.20BF.0020.0002.0AA7] # GUJARATI LETTER DHA
-0AA8 ; [.20C0.0020.0002.0AA8] # GUJARATI LETTER NA
-0AAA ; [.20C1.0020.0002.0AAA] # GUJARATI LETTER PA
-0AAB ; [.20C2.0020.0002.0AAB] # GUJARATI LETTER PHA
-0AAC ; [.20C3.0020.0002.0AAC] # GUJARATI LETTER BA
-0AAD ; [.20C4.0020.0002.0AAD] # GUJARATI LETTER BHA
-0AAE ; [.20C5.0020.0002.0AAE] # GUJARATI LETTER MA
-0AAF ; [.20C6.0020.0002.0AAF] # GUJARATI LETTER YA
-0AB0 ; [.20C7.0020.0002.0AB0] # GUJARATI LETTER RA
-0AB2 ; [.20C8.0020.0002.0AB2] # GUJARATI LETTER LA
-0AB5 ; [.20C9.0020.0002.0AB5] # GUJARATI LETTER VA
-0AB6 ; [.20CA.0020.0002.0AB6] # GUJARATI LETTER SHA
-0AB7 ; [.20CB.0020.0002.0AB7] # GUJARATI LETTER SSA
-0AB8 ; [.20CC.0020.0002.0AB8] # GUJARATI LETTER SA
-0AB9 ; [.20CD.0020.0002.0AB9] # GUJARATI LETTER HA
-0AB3 ; [.20CE.0020.0002.0AB3] # GUJARATI LETTER LLA
-0ABD ; [.20CF.0020.0002.0ABD] # GUJARATI SIGN AVAGRAHA
-0ABE ; [.20D0.0020.0002.0ABE] # GUJARATI VOWEL SIGN AA
-0ABF ; [.20D1.0020.0002.0ABF] # GUJARATI VOWEL SIGN I
-0AC0 ; [.20D2.0020.0002.0AC0] # GUJARATI VOWEL SIGN II
-0AC1 ; [.20D3.0020.0002.0AC1] # GUJARATI VOWEL SIGN U
-0AC2 ; [.20D4.0020.0002.0AC2] # GUJARATI VOWEL SIGN UU
-0AC3 ; [.20D5.0020.0002.0AC3] # GUJARATI VOWEL SIGN VOCALIC R
-0AC4 ; [.20D6.0020.0002.0AC4] # GUJARATI VOWEL SIGN VOCALIC RR
-0AE2 ; [.20D7.0020.0002.0AE2] # GUJARATI VOWEL SIGN VOCALIC L
-0AE3 ; [.20D8.0020.0002.0AE3] # GUJARATI VOWEL SIGN VOCALIC LL
-0AC5 ; [.20D9.0020.0002.0AC5] # GUJARATI VOWEL SIGN CANDRA E
-0AC7 ; [.20DA.0020.0002.0AC7] # GUJARATI VOWEL SIGN E
-0AC8 ; [.20DB.0020.0002.0AC8] # GUJARATI VOWEL SIGN AI
-0AC9 ; [.20DC.0020.0002.0AC9] # GUJARATI VOWEL SIGN CANDRA O
-0ACB ; [.20DD.0020.0002.0ACB] # GUJARATI VOWEL SIGN O
-0ACC ; [.20DE.0020.0002.0ACC] # GUJARATI VOWEL SIGN AU
-0ACD ; [.20DF.0020.0002.0ACD] # GUJARATI SIGN VIRAMA
-0B05 ; [.20E0.0020.0002.0B05] # ORIYA LETTER A
-0B06 ; [.20E1.0020.0002.0B06] # ORIYA LETTER AA
-0B07 ; [.20E2.0020.0002.0B07] # ORIYA LETTER I
-0B08 ; [.20E3.0020.0002.0B08] # ORIYA LETTER II
-0B09 ; [.20E4.0020.0002.0B09] # ORIYA LETTER U
-0B0A ; [.20E5.0020.0002.0B0A] # ORIYA LETTER UU
-0B0B ; [.20E6.0020.0002.0B0B] # ORIYA LETTER VOCALIC R
-0B60 ; [.20E7.0020.0002.0B60] # ORIYA LETTER VOCALIC RR
-0B0C ; [.20E8.0020.0002.0B0C] # ORIYA LETTER VOCALIC L
-0B61 ; [.20E9.0020.0002.0B61] # ORIYA LETTER VOCALIC LL
-0B0F ; [.20EA.0020.0002.0B0F] # ORIYA LETTER E
-0B10 ; [.20EB.0020.0002.0B10] # ORIYA LETTER AI
-0B13 ; [.20EC.0020.0002.0B13] # ORIYA LETTER O
-0B14 ; [.20ED.0020.0002.0B14] # ORIYA LETTER AU
-0B15 ; [.20EE.0020.0002.0B15] # ORIYA LETTER KA
-0B16 ; [.20EF.0020.0002.0B16] # ORIYA LETTER KHA
-0B17 ; [.20F0.0020.0002.0B17] # ORIYA LETTER GA
-0B18 ; [.20F1.0020.0002.0B18] # ORIYA LETTER GHA
-0B19 ; [.20F2.0020.0002.0B19] # ORIYA LETTER NGA
-0B1A ; [.20F3.0020.0002.0B1A] # ORIYA LETTER CA
-0B1B ; [.20F4.0020.0002.0B1B] # ORIYA LETTER CHA
-0B1C ; [.20F5.0020.0002.0B1C] # ORIYA LETTER JA
-0B1D ; [.20F6.0020.0002.0B1D] # ORIYA LETTER JHA
-0B1E ; [.20F7.0020.0002.0B1E] # ORIYA LETTER NYA
-0B1F ; [.20F8.0020.0002.0B1F] # ORIYA LETTER TTA
-0B20 ; [.20F9.0020.0002.0B20] # ORIYA LETTER TTHA
-0B21 ; [.20FA.0020.0002.0B21] # ORIYA LETTER DDA
-0B5C ; [.20FA.0020.0002.0B21][.0000.00F1.0002.093C] # ORIYA LETTER RRA
-0B22 ; [.20FB.0020.0002.0B22] # ORIYA LETTER DDHA
-0B5D ; [.20FB.0020.0002.0B22][.0000.00F1.0002.093C] # ORIYA LETTER RHA
-0B23 ; [.20FC.0020.0002.0B23] # ORIYA LETTER NNA
-0B24 ; [.20FD.0020.0002.0B24] # ORIYA LETTER TA
-0B25 ; [.20FE.0020.0002.0B25] # ORIYA LETTER THA
-0B26 ; [.20FF.0020.0002.0B26] # ORIYA LETTER DA
-0B27 ; [.2100.0020.0002.0B27] # ORIYA LETTER DHA
-0B28 ; [.2101.0020.0002.0B28] # ORIYA LETTER NA
-0B2A ; [.2102.0020.0002.0B2A] # ORIYA LETTER PA
-0B2B ; [.2103.0020.0002.0B2B] # ORIYA LETTER PHA
-0B2C ; [.2104.0020.0002.0B2C] # ORIYA LETTER BA
-0B2D ; [.2105.0020.0002.0B2D] # ORIYA LETTER BHA
-0B2E ; [.2106.0020.0002.0B2E] # ORIYA LETTER MA
-0B2F ; [.2107.0020.0002.0B2F] # ORIYA LETTER YA
-0B5F ; [.2108.0020.0002.0B5F] # ORIYA LETTER YYA
-0B30 ; [.2109.0020.0002.0B30] # ORIYA LETTER RA
-0B32 ; [.210A.0020.0002.0B32] # ORIYA LETTER LA
-0B33 ; [.210B.0020.0002.0B33] # ORIYA LETTER LLA
-0B35 ; [.210C.0020.0002.0B35] # ORIYA LETTER VA
-0B71 ; [.210D.0020.0002.0B71] # ORIYA LETTER WA
-0B36 ; [.210E.0020.0002.0B36] # ORIYA LETTER SHA
-0B37 ; [.210F.0020.0002.0B37] # ORIYA LETTER SSA
-0B38 ; [.2110.0020.0002.0B38] # ORIYA LETTER SA
-0B39 ; [.2111.0020.0002.0B39] # ORIYA LETTER HA
-0B3D ; [.2112.0020.0002.0B3D] # ORIYA SIGN AVAGRAHA
-0B3E ; [.2113.0020.0002.0B3E] # ORIYA VOWEL SIGN AA
-0B3F ; [.2114.0020.0002.0B3F] # ORIYA VOWEL SIGN I
-0B40 ; [.2115.0020.0002.0B40] # ORIYA VOWEL SIGN II
-0B41 ; [.2116.0020.0002.0B41] # ORIYA VOWEL SIGN U
-0B42 ; [.2117.0020.0002.0B42] # ORIYA VOWEL SIGN UU
-0B43 ; [.2118.0020.0002.0B43] # ORIYA VOWEL SIGN VOCALIC R
-0B44 ; [.2119.0020.0002.0B44] # ORIYA VOWEL SIGN VOCALIC RR
-0B62 ; [.211A.0020.0002.0B62] # ORIYA VOWEL SIGN VOCALIC L
-0B63 ; [.211B.0020.0002.0B63] # ORIYA VOWEL SIGN VOCALIC LL
-0B47 ; [.211C.0020.0002.0B47] # ORIYA VOWEL SIGN E
-0B48 ; [.211D.0020.0002.0B48] # ORIYA VOWEL SIGN AI
-0B47 0B56 ; [.211D.0020.0002.0B48] # ORIYA VOWEL SIGN AI
-0B4B ; [.211E.0020.0002.0B4B] # ORIYA VOWEL SIGN O
-0B47 0B3E ; [.211E.0020.0002.0B4B] # ORIYA VOWEL SIGN O
-0B4C ; [.211F.0020.0002.0B4C] # ORIYA VOWEL SIGN AU
-0B47 0B57 ; [.211F.0020.0002.0B4C] # ORIYA VOWEL SIGN AU
-0B4D ; [.2120.0020.0002.0B4D] # ORIYA SIGN VIRAMA
-0B56 ; [.2121.0020.0002.0B56] # ORIYA AI LENGTH MARK
-0B57 ; [.2122.0020.0002.0B57] # ORIYA AU LENGTH MARK
-0BD0 ; [.2123.0020.0002.0BD0] # TAMIL OM
-0B85 ; [.2124.0020.0002.0B85] # TAMIL LETTER A
-0B86 ; [.2125.0020.0002.0B86] # TAMIL LETTER AA
-0B87 ; [.2126.0020.0002.0B87] # TAMIL LETTER I
-0B88 ; [.2127.0020.0002.0B88] # TAMIL LETTER II
-0B89 ; [.2128.0020.0002.0B89] # TAMIL LETTER U
-0B8A ; [.2129.0020.0002.0B8A] # TAMIL LETTER UU
-0B8E ; [.212A.0020.0002.0B8E] # TAMIL LETTER E
-0B8F ; [.212B.0020.0002.0B8F] # TAMIL LETTER EE
-0B90 ; [.212C.0020.0002.0B90] # TAMIL LETTER AI
-0B92 ; [.212D.0020.0002.0B92] # TAMIL LETTER O
-0B93 ; [.212E.0020.0002.0B93] # TAMIL LETTER OO
-0B94 ; [.212F.0020.0002.0B94] # TAMIL LETTER AU
-0B92 0BD7 ; [.212F.0020.0002.0B94] # TAMIL LETTER AU
-0B83 ; [.2130.0020.0002.0B83] # TAMIL SIGN VISARGA
-0B95 ; [.2131.0020.0002.0B95] # TAMIL LETTER KA
-0B99 ; [.2132.0020.0002.0B99] # TAMIL LETTER NGA
-0B9A ; [.2133.0020.0002.0B9A] # TAMIL LETTER CA
-0B9E ; [.2134.0020.0002.0B9E] # TAMIL LETTER NYA
-0B9F ; [.2135.0020.0002.0B9F] # TAMIL LETTER TTA
-0BA3 ; [.2136.0020.0002.0BA3] # TAMIL LETTER NNA
-0BA4 ; [.2137.0020.0002.0BA4] # TAMIL LETTER TA
-0BA8 ; [.2138.0020.0002.0BA8] # TAMIL LETTER NA
-0BAA ; [.2139.0020.0002.0BAA] # TAMIL LETTER PA
-0BAE ; [.213A.0020.0002.0BAE] # TAMIL LETTER MA
-0BAF ; [.213B.0020.0002.0BAF] # TAMIL LETTER YA
-0BB0 ; [.213C.0020.0002.0BB0] # TAMIL LETTER RA
-0BB2 ; [.213D.0020.0002.0BB2] # TAMIL LETTER LA
-0BB5 ; [.213E.0020.0002.0BB5] # TAMIL LETTER VA
-0BB4 ; [.213F.0020.0002.0BB4] # TAMIL LETTER LLLA
-0BB3 ; [.2140.0020.0002.0BB3] # TAMIL LETTER LLA
-0BB1 ; [.2141.0020.0002.0BB1] # TAMIL LETTER RRA
-0BA9 ; [.2142.0020.0002.0BA9] # TAMIL LETTER NNNA
-0B9C ; [.2143.0020.0002.0B9C] # TAMIL LETTER JA
-0BB6 ; [.2144.0020.0002.0BB6] # TAMIL LETTER SHA
-0BB7 ; [.2145.0020.0002.0BB7] # TAMIL LETTER SSA
-0BB8 ; [.2146.0020.0002.0BB8] # TAMIL LETTER SA
-0BB9 ; [.2147.0020.0002.0BB9] # TAMIL LETTER HA
-0BBE ; [.2148.0020.0002.0BBE] # TAMIL VOWEL SIGN AA
-0BBF ; [.2149.0020.0002.0BBF] # TAMIL VOWEL SIGN I
-0BC0 ; [.214A.0020.0002.0BC0] # TAMIL VOWEL SIGN II
-0BC1 ; [.214B.0020.0002.0BC1] # TAMIL VOWEL SIGN U
-0BC2 ; [.214C.0020.0002.0BC2] # TAMIL VOWEL SIGN UU
-0BC6 ; [.214D.0020.0002.0BC6] # TAMIL VOWEL SIGN E
-0BC7 ; [.214E.0020.0002.0BC7] # TAMIL VOWEL SIGN EE
-0BC8 ; [.214F.0020.0002.0BC8] # TAMIL VOWEL SIGN AI
-0BCA ; [.2150.0020.0002.0BCA] # TAMIL VOWEL SIGN O
-0BC6 0BBE ; [.2150.0020.0002.0BCA] # TAMIL VOWEL SIGN O
-0BCB ; [.2151.0020.0002.0BCB] # TAMIL VOWEL SIGN OO
-0BC7 0BBE ; [.2151.0020.0002.0BCB] # TAMIL VOWEL SIGN OO
-0BCC ; [.2152.0020.0002.0BCC] # TAMIL VOWEL SIGN AU
-0BC6 0BD7 ; [.2152.0020.0002.0BCC] # TAMIL VOWEL SIGN AU
-0BCD ; [.2153.0020.0002.0BCD] # TAMIL SIGN VIRAMA
-0BD7 ; [.2154.0020.0002.0BD7] # TAMIL AU LENGTH MARK
-0C05 ; [.2155.0020.0002.0C05] # TELUGU LETTER A
-0C06 ; [.2156.0020.0002.0C06] # TELUGU LETTER AA
-0C07 ; [.2157.0020.0002.0C07] # TELUGU LETTER I
-0C08 ; [.2158.0020.0002.0C08] # TELUGU LETTER II
-0C09 ; [.2159.0020.0002.0C09] # TELUGU LETTER U
-0C0A ; [.215A.0020.0002.0C0A] # TELUGU LETTER UU
-0C0B ; [.215B.0020.0002.0C0B] # TELUGU LETTER VOCALIC R
-0C60 ; [.215C.0020.0002.0C60] # TELUGU LETTER VOCALIC RR
-0C0C ; [.215D.0020.0002.0C0C] # TELUGU LETTER VOCALIC L
-0C61 ; [.215E.0020.0002.0C61] # TELUGU LETTER VOCALIC LL
-0C0E ; [.215F.0020.0002.0C0E] # TELUGU LETTER E
-0C0F ; [.2160.0020.0002.0C0F] # TELUGU LETTER EE
-0C10 ; [.2161.0020.0002.0C10] # TELUGU LETTER AI
-0C12 ; [.2162.0020.0002.0C12] # TELUGU LETTER O
-0C13 ; [.2163.0020.0002.0C13] # TELUGU LETTER OO
-0C14 ; [.2164.0020.0002.0C14] # TELUGU LETTER AU
-0C15 ; [.2165.0020.0002.0C15] # TELUGU LETTER KA
-0C16 ; [.2166.0020.0002.0C16] # TELUGU LETTER KHA
-0C17 ; [.2167.0020.0002.0C17] # TELUGU LETTER GA
-0C18 ; [.2168.0020.0002.0C18] # TELUGU LETTER GHA
-0C19 ; [.2169.0020.0002.0C19] # TELUGU LETTER NGA
-0C1A ; [.216A.0020.0002.0C1A] # TELUGU LETTER CA
-0C58 ; [.216B.0020.0002.0C58] # TELUGU LETTER TSA
-0C1B ; [.216C.0020.0002.0C1B] # TELUGU LETTER CHA
-0C1C ; [.216D.0020.0002.0C1C] # TELUGU LETTER JA
-0C59 ; [.216E.0020.0002.0C59] # TELUGU LETTER DZA
-0C1D ; [.216F.0020.0002.0C1D] # TELUGU LETTER JHA
-0C1E ; [.2170.0020.0002.0C1E] # TELUGU LETTER NYA
-0C1F ; [.2171.0020.0002.0C1F] # TELUGU LETTER TTA
-0C20 ; [.2172.0020.0002.0C20] # TELUGU LETTER TTHA
-0C21 ; [.2173.0020.0002.0C21] # TELUGU LETTER DDA
-0C22 ; [.2174.0020.0002.0C22] # TELUGU LETTER DDHA
-0C23 ; [.2175.0020.0002.0C23] # TELUGU LETTER NNA
-0C24 ; [.2176.0020.0002.0C24] # TELUGU LETTER TA
-0C25 ; [.2177.0020.0002.0C25] # TELUGU LETTER THA
-0C26 ; [.2178.0020.0002.0C26] # TELUGU LETTER DA
-0C27 ; [.2179.0020.0002.0C27] # TELUGU LETTER DHA
-0C28 ; [.217A.0020.0002.0C28] # TELUGU LETTER NA
-0C2A ; [.217B.0020.0002.0C2A] # TELUGU LETTER PA
-0C2B ; [.217C.0020.0002.0C2B] # TELUGU LETTER PHA
-0C2C ; [.217D.0020.0002.0C2C] # TELUGU LETTER BA
-0C2D ; [.217E.0020.0002.0C2D] # TELUGU LETTER BHA
-0C2E ; [.217F.0020.0002.0C2E] # TELUGU LETTER MA
-0C2F ; [.2180.0020.0002.0C2F] # TELUGU LETTER YA
-0C30 ; [.2181.0020.0002.0C30] # TELUGU LETTER RA
-0C31 ; [.2182.0020.0002.0C31] # TELUGU LETTER RRA
-0C32 ; [.2183.0020.0002.0C32] # TELUGU LETTER LA
-0C35 ; [.2184.0020.0002.0C35] # TELUGU LETTER VA
-0C36 ; [.2185.0020.0002.0C36] # TELUGU LETTER SHA
-0C37 ; [.2186.0020.0002.0C37] # TELUGU LETTER SSA
-0C38 ; [.2187.0020.0002.0C38] # TELUGU LETTER SA
-0C39 ; [.2188.0020.0002.0C39] # TELUGU LETTER HA
-0C33 ; [.2189.0020.0002.0C33] # TELUGU LETTER LLA
-0C3D ; [.218A.0020.0002.0C3D] # TELUGU SIGN AVAGRAHA
-0C3E ; [.218B.0020.0002.0C3E] # TELUGU VOWEL SIGN AA
-0C3F ; [.218C.0020.0002.0C3F] # TELUGU VOWEL SIGN I
-0C40 ; [.218D.0020.0002.0C40] # TELUGU VOWEL SIGN II
-0C41 ; [.218E.0020.0002.0C41] # TELUGU VOWEL SIGN U
-0C42 ; [.218F.0020.0002.0C42] # TELUGU VOWEL SIGN UU
-0C43 ; [.2190.0020.0002.0C43] # TELUGU VOWEL SIGN VOCALIC R
-0C44 ; [.2191.0020.0002.0C44] # TELUGU VOWEL SIGN VOCALIC RR
-0C62 ; [.2192.0020.0002.0C62] # TELUGU VOWEL SIGN VOCALIC L
-0C63 ; [.2193.0020.0002.0C63] # TELUGU VOWEL SIGN VOCALIC LL
-0C46 ; [.2194.0020.0002.0C46] # TELUGU VOWEL SIGN E
-0C47 ; [.2195.0020.0002.0C47] # TELUGU VOWEL SIGN EE
-0C48 ; [.2196.0020.0002.0C48] # TELUGU VOWEL SIGN AI
-0C46 0C56 ; [.2196.0020.0002.0C48] # TELUGU VOWEL SIGN AI
-0C4A ; [.2197.0020.0002.0C4A] # TELUGU VOWEL SIGN O
-0C4B ; [.2198.0020.0002.0C4B] # TELUGU VOWEL SIGN OO
-0C4C ; [.2199.0020.0002.0C4C] # TELUGU VOWEL SIGN AU
-0C4D ; [.219A.0020.0002.0C4D] # TELUGU SIGN VIRAMA
-0C55 ; [.219B.0020.0002.0C55] # TELUGU LENGTH MARK
-0C56 ; [.219C.0020.0002.0C56] # TELUGU AI LENGTH MARK
-0C85 ; [.219D.0020.0002.0C85] # KANNADA LETTER A
-0C86 ; [.219E.0020.0002.0C86] # KANNADA LETTER AA
-0C87 ; [.219F.0020.0002.0C87] # KANNADA LETTER I
-0C88 ; [.21A0.0020.0002.0C88] # KANNADA LETTER II
-0C89 ; [.21A1.0020.0002.0C89] # KANNADA LETTER U
-0C8A ; [.21A2.0020.0002.0C8A] # KANNADA LETTER UU
-0C8B ; [.21A3.0020.0002.0C8B] # KANNADA LETTER VOCALIC R
-0CE0 ; [.21A4.0020.0002.0CE0] # KANNADA LETTER VOCALIC RR
-0C8C ; [.21A5.0020.0002.0C8C] # KANNADA LETTER VOCALIC L
-0CE1 ; [.21A6.0020.0002.0CE1] # KANNADA LETTER VOCALIC LL
-0C8E ; [.21A7.0020.0002.0C8E] # KANNADA LETTER E
-0C8F ; [.21A8.0020.0002.0C8F] # KANNADA LETTER EE
-0C90 ; [.21A9.0020.0002.0C90] # KANNADA LETTER AI
-0C92 ; [.21AA.0020.0002.0C92] # KANNADA LETTER O
-0C93 ; [.21AB.0020.0002.0C93] # KANNADA LETTER OO
-0C94 ; [.21AC.0020.0002.0C94] # KANNADA LETTER AU
-0C95 ; [.21AD.0020.0002.0C95] # KANNADA LETTER KA
-0C96 ; [.21AE.0020.0002.0C96] # KANNADA LETTER KHA
-0C97 ; [.21AF.0020.0002.0C97] # KANNADA LETTER GA
-0C98 ; [.21B0.0020.0002.0C98] # KANNADA LETTER GHA
-0C99 ; [.21B1.0020.0002.0C99] # KANNADA LETTER NGA
-0C9A ; [.21B2.0020.0002.0C9A] # KANNADA LETTER CA
-0C9B ; [.21B3.0020.0002.0C9B] # KANNADA LETTER CHA
-0C9C ; [.21B4.0020.0002.0C9C] # KANNADA LETTER JA
-0C9D ; [.21B5.0020.0002.0C9D] # KANNADA LETTER JHA
-0C9E ; [.21B6.0020.0002.0C9E] # KANNADA LETTER NYA
-0C9F ; [.21B7.0020.0002.0C9F] # KANNADA LETTER TTA
-0CA0 ; [.21B8.0020.0002.0CA0] # KANNADA LETTER TTHA
-0CA1 ; [.21B9.0020.0002.0CA1] # KANNADA LETTER DDA
-0CA2 ; [.21BA.0020.0002.0CA2] # KANNADA LETTER DDHA
-0CA3 ; [.21BB.0020.0002.0CA3] # KANNADA LETTER NNA
-0CA4 ; [.21BC.0020.0002.0CA4] # KANNADA LETTER TA
-0CA5 ; [.21BD.0020.0002.0CA5] # KANNADA LETTER THA
-0CA6 ; [.21BE.0020.0002.0CA6] # KANNADA LETTER DA
-0CA7 ; [.21BF.0020.0002.0CA7] # KANNADA LETTER DHA
-0CA8 ; [.21C0.0020.0002.0CA8] # KANNADA LETTER NA
-0CAA ; [.21C1.0020.0002.0CAA] # KANNADA LETTER PA
-0CAB ; [.21C2.0020.0002.0CAB] # KANNADA LETTER PHA
-0CAC ; [.21C3.0020.0002.0CAC] # KANNADA LETTER BA
-0CAD ; [.21C4.0020.0002.0CAD] # KANNADA LETTER BHA
-0CAE ; [.21C5.0020.0002.0CAE] # KANNADA LETTER MA
-0CAF ; [.21C6.0020.0002.0CAF] # KANNADA LETTER YA
-0CB0 ; [.21C7.0020.0002.0CB0] # KANNADA LETTER RA
-0CB1 ; [.21C8.0020.0002.0CB1] # KANNADA LETTER RRA
-0CB2 ; [.21C9.0020.0002.0CB2] # KANNADA LETTER LA
-0CB5 ; [.21CA.0020.0002.0CB5] # KANNADA LETTER VA
-0CB6 ; [.21CB.0020.0002.0CB6] # KANNADA LETTER SHA
-0CB7 ; [.21CC.0020.0002.0CB7] # KANNADA LETTER SSA
-0CB8 ; [.21CD.0020.0002.0CB8] # KANNADA LETTER SA
-0CB9 ; [.21CE.0020.0002.0CB9] # KANNADA LETTER HA
-0CB3 ; [.21CF.0020.0002.0CB3] # KANNADA LETTER LLA
-0CDE ; [.21D0.0020.0002.0CDE] # KANNADA LETTER FA
-0CBD ; [.21D1.0020.0002.0CBD] # KANNADA SIGN AVAGRAHA
-0CF1 ; [.21D2.0020.0002.0CF1] # KANNADA SIGN JIHVAMULIYA
-0CF2 ; [.21D3.0020.0002.0CF2] # KANNADA SIGN UPADHMANIYA
-0CBE ; [.21D4.0020.0002.0CBE] # KANNADA VOWEL SIGN AA
-0CBF ; [.21D5.0020.0002.0CBF] # KANNADA VOWEL SIGN I
-0CC0 ; [.21D6.0020.0002.0CC0] # KANNADA VOWEL SIGN II
-0CBF 0CD5 ; [.21D6.0020.0002.0CC0] # KANNADA VOWEL SIGN II
-0CC1 ; [.21D7.0020.0002.0CC1] # KANNADA VOWEL SIGN U
-0CC2 ; [.21D8.0020.0002.0CC2] # KANNADA VOWEL SIGN UU
-0CC3 ; [.21D9.0020.0002.0CC3] # KANNADA VOWEL SIGN VOCALIC R
-0CC4 ; [.21DA.0020.0002.0CC4] # KANNADA VOWEL SIGN VOCALIC RR
-0CE2 ; [.21DB.0020.0002.0CE2] # KANNADA VOWEL SIGN VOCALIC L
-0CE3 ; [.21DC.0020.0002.0CE3] # KANNADA VOWEL SIGN VOCALIC LL
-0CC6 ; [.21DD.0020.0002.0CC6] # KANNADA VOWEL SIGN E
-0CC7 ; [.21DE.0020.0002.0CC7] # KANNADA VOWEL SIGN EE
-0CC6 0CD5 ; [.21DE.0020.0002.0CC7] # KANNADA VOWEL SIGN EE
-0CC8 ; [.21DF.0020.0002.0CC8] # KANNADA VOWEL SIGN AI
-0CC6 0CD6 ; [.21DF.0020.0002.0CC8] # KANNADA VOWEL SIGN AI
-0CCA ; [.21E0.0020.0002.0CCA] # KANNADA VOWEL SIGN O
-0CC6 0CC2 ; [.21E0.0020.0002.0CCA] # KANNADA VOWEL SIGN O
-0CCB ; [.21E1.0020.0002.0CCB] # KANNADA VOWEL SIGN OO
-0CC6 0CC2 0CD5 ; [.21E1.0020.0002.0CCB] # KANNADA VOWEL SIGN OO
-0CCA 0CD5 ; [.21E1.0020.0002.0CCB] # KANNADA VOWEL SIGN OO
-0CCC ; [.21E2.0020.0002.0CCC] # KANNADA VOWEL SIGN AU
-0CCD ; [.21E3.0020.0002.0CCD] # KANNADA SIGN VIRAMA
-0CD5 ; [.21E4.0020.0002.0CD5] # KANNADA LENGTH MARK
-0CD6 ; [.21E5.0020.0002.0CD6] # KANNADA AI LENGTH MARK
-0D05 ; [.21E6.0020.0002.0D05] # MALAYALAM LETTER A
-0D06 ; [.21E7.0020.0002.0D06] # MALAYALAM LETTER AA
-0D07 ; [.21E8.0020.0002.0D07] # MALAYALAM LETTER I
-0D08 ; [.21E9.0020.0002.0D08] # MALAYALAM LETTER II
-0D09 ; [.21EA.0020.0002.0D09] # MALAYALAM LETTER U
-0D0A ; [.21EB.0020.0002.0D0A] # MALAYALAM LETTER UU
-0D0B ; [.21EC.0020.0002.0D0B] # MALAYALAM LETTER VOCALIC R
-0D60 ; [.21ED.0020.0002.0D60] # MALAYALAM LETTER VOCALIC RR
-0D0C ; [.21EE.0020.0002.0D0C] # MALAYALAM LETTER VOCALIC L
-0D61 ; [.21EF.0020.0002.0D61] # MALAYALAM LETTER VOCALIC LL
-0D0E ; [.21F0.0020.0002.0D0E] # MALAYALAM LETTER E
-0D0F ; [.21F1.0020.0002.0D0F] # MALAYALAM LETTER EE
-0D10 ; [.21F2.0020.0002.0D10] # MALAYALAM LETTER AI
-0D12 ; [.21F3.0020.0002.0D12] # MALAYALAM LETTER O
-0D13 ; [.21F4.0020.0002.0D13] # MALAYALAM LETTER OO
-0D14 ; [.21F5.0020.0002.0D14] # MALAYALAM LETTER AU
-0D15 ; [.21F6.0020.0002.0D15] # MALAYALAM LETTER KA
-0D7F ; [.21F6.0020.0004.0D7F][.222D.0020.0004.0D7F] # MALAYALAM LETTER CHILLU K
-0D16 ; [.21F7.0020.0002.0D16] # MALAYALAM LETTER KHA
-0D17 ; [.21F8.0020.0002.0D17] # MALAYALAM LETTER GA
-0D18 ; [.21F9.0020.0002.0D18] # MALAYALAM LETTER GHA
-0D19 ; [.21FA.0020.0002.0D19] # MALAYALAM LETTER NGA
-0D1A ; [.21FB.0020.0002.0D1A] # MALAYALAM LETTER CA
-0D1B ; [.21FC.0020.0002.0D1B] # MALAYALAM LETTER CHA
-0D1C ; [.21FD.0020.0002.0D1C] # MALAYALAM LETTER JA
-0D1D ; [.21FE.0020.0002.0D1D] # MALAYALAM LETTER JHA
-0D1E ; [.21FF.0020.0002.0D1E] # MALAYALAM LETTER NYA
-0D1F ; [.2200.0020.0002.0D1F] # MALAYALAM LETTER TTA
-0D20 ; [.2201.0020.0002.0D20] # MALAYALAM LETTER TTHA
-0D21 ; [.2202.0020.0002.0D21] # MALAYALAM LETTER DDA
-0D22 ; [.2203.0020.0002.0D22] # MALAYALAM LETTER DDHA
-0D23 ; [.2204.0020.0002.0D23] # MALAYALAM LETTER NNA
-0D7A ; [.2204.0020.0004.0D7A][.222D.0020.0004.0D7A] # MALAYALAM LETTER CHILLU NN
-0D24 ; [.2205.0020.0002.0D24] # MALAYALAM LETTER TA
-0D25 ; [.2206.0020.0002.0D25] # MALAYALAM LETTER THA
-0D26 ; [.2207.0020.0002.0D26] # MALAYALAM LETTER DA
-0D27 ; [.2208.0020.0002.0D27] # MALAYALAM LETTER DHA
-0D28 ; [.2209.0020.0002.0D28] # MALAYALAM LETTER NA
-0D7B ; [.2209.0020.0004.0D7B][.222D.0020.0004.0D7B] # MALAYALAM LETTER CHILLU N
-0D29 ; [.220A.0020.0002.0D29] # MALAYALAM LETTER NNNA
-0D2A ; [.220B.0020.0002.0D2A] # MALAYALAM LETTER PA
-0D2B ; [.220C.0020.0002.0D2B] # MALAYALAM LETTER PHA
-0D2C ; [.220D.0020.0002.0D2C] # MALAYALAM LETTER BA
-0D2D ; [.220E.0020.0002.0D2D] # MALAYALAM LETTER BHA
-0D2E ; [.220F.0020.0002.0D2E] # MALAYALAM LETTER MA
-0D2F ; [.2210.0020.0002.0D2F] # MALAYALAM LETTER YA
-0D30 ; [.2211.0020.0002.0D30] # MALAYALAM LETTER RA
-0D4E ; [.2211.0020.0004.0D4E][.222D.0020.0004.0D4E] # MALAYALAM LETTER DOT REPH
-0D7C ; [.2211.0020.0004.0D7C][.222D.0020.0004.0D7C] # MALAYALAM LETTER CHILLU RR
-0D32 ; [.2212.0020.0002.0D32] # MALAYALAM LETTER LA
-0D7D ; [.2212.0020.0004.0D7D][.222D.0020.0004.0D7D] # MALAYALAM LETTER CHILLU L
-0D35 ; [.2213.0020.0002.0D35] # MALAYALAM LETTER VA
-0D36 ; [.2214.0020.0002.0D36] # MALAYALAM LETTER SHA
-0D37 ; [.2215.0020.0002.0D37] # MALAYALAM LETTER SSA
-0D38 ; [.2216.0020.0002.0D38] # MALAYALAM LETTER SA
-0D39 ; [.2217.0020.0002.0D39] # MALAYALAM LETTER HA
-0D33 ; [.2218.0020.0002.0D33] # MALAYALAM LETTER LLA
-0D7E ; [.2218.0020.0004.0D7E][.222D.0020.0004.0D7E] # MALAYALAM LETTER CHILLU LL
-0D34 ; [.2219.0020.0002.0D34] # MALAYALAM LETTER LLLA
-0D31 ; [.221A.0020.0002.0D31] # MALAYALAM LETTER RRA
-0D3A ; [.221B.0020.0002.0D3A] # MALAYALAM LETTER TTTA
-0D3D ; [.221C.0020.0002.0D3D] # MALAYALAM SIGN AVAGRAHA
-0D3E ; [.221D.0020.0002.0D3E] # MALAYALAM VOWEL SIGN AA
-0D3F ; [.221E.0020.0002.0D3F] # MALAYALAM VOWEL SIGN I
-0D40 ; [.221F.0020.0002.0D40] # MALAYALAM VOWEL SIGN II
-0D41 ; [.2220.0020.0002.0D41] # MALAYALAM VOWEL SIGN U
-0D42 ; [.2221.0020.0002.0D42] # MALAYALAM VOWEL SIGN UU
-0D43 ; [.2222.0020.0002.0D43] # MALAYALAM VOWEL SIGN VOCALIC R
-0D44 ; [.2223.0020.0002.0D44] # MALAYALAM VOWEL SIGN VOCALIC RR
-0D62 ; [.2224.0020.0002.0D62] # MALAYALAM VOWEL SIGN VOCALIC L
-0D63 ; [.2225.0020.0002.0D63] # MALAYALAM VOWEL SIGN VOCALIC LL
-0D46 ; [.2226.0020.0002.0D46] # MALAYALAM VOWEL SIGN E
-0D47 ; [.2227.0020.0002.0D47] # MALAYALAM VOWEL SIGN EE
-0D48 ; [.2228.0020.0002.0D48] # MALAYALAM VOWEL SIGN AI
-0D4A ; [.2229.0020.0002.0D4A] # MALAYALAM VOWEL SIGN O
-0D46 0D3E ; [.2229.0020.0002.0D4A] # MALAYALAM VOWEL SIGN O
-0D4B ; [.222A.0020.0002.0D4B] # MALAYALAM VOWEL SIGN OO
-0D47 0D3E ; [.222A.0020.0002.0D4B] # MALAYALAM VOWEL SIGN OO
-0D4C ; [.222B.0020.0002.0D4C] # MALAYALAM VOWEL SIGN AU
-0D46 0D57 ; [.222B.0020.0002.0D4C] # MALAYALAM VOWEL SIGN AU
-0D57 ; [.222C.0020.0002.0D57] # MALAYALAM AU LENGTH MARK
-0D4D ; [.222D.0020.0002.0D4D] # MALAYALAM SIGN VIRAMA
-0D85 ; [.222E.0020.0002.0D85] # SINHALA LETTER AYANNA
-0D86 ; [.222F.0020.0002.0D86] # SINHALA LETTER AAYANNA
-0D87 ; [.2230.0020.0002.0D87] # SINHALA LETTER AEYANNA
-0D88 ; [.2231.0020.0002.0D88] # SINHALA LETTER AEEYANNA
-0D89 ; [.2232.0020.0002.0D89] # SINHALA LETTER IYANNA
-0D8A ; [.2233.0020.0002.0D8A] # SINHALA LETTER IIYANNA
-0D8B ; [.2234.0020.0002.0D8B] # SINHALA LETTER UYANNA
-0D8C ; [.2235.0020.0002.0D8C] # SINHALA LETTER UUYANNA
-0D8D ; [.2236.0020.0002.0D8D] # SINHALA LETTER IRUYANNA
-0D8E ; [.2237.0020.0002.0D8E] # SINHALA LETTER IRUUYANNA
-0D8F ; [.2238.0020.0002.0D8F] # SINHALA LETTER ILUYANNA
-0D90 ; [.2239.0020.0002.0D90] # SINHALA LETTER ILUUYANNA
-0D91 ; [.223A.0020.0002.0D91] # SINHALA LETTER EYANNA
-0D92 ; [.223B.0020.0002.0D92] # SINHALA LETTER EEYANNA
-0D93 ; [.223C.0020.0002.0D93] # SINHALA LETTER AIYANNA
-0D94 ; [.223D.0020.0002.0D94] # SINHALA LETTER OYANNA
-0D95 ; [.223E.0020.0002.0D95] # SINHALA LETTER OOYANNA
-0D96 ; [.223F.0020.0002.0D96] # SINHALA LETTER AUYANNA
-0D9A ; [.2240.0020.0002.0D9A] # SINHALA LETTER ALPAPRAANA KAYANNA
-0D9B ; [.2241.0020.0002.0D9B] # SINHALA LETTER MAHAAPRAANA KAYANNA
-0D9C ; [.2242.0020.0002.0D9C] # SINHALA LETTER ALPAPRAANA GAYANNA
-0D9D ; [.2243.0020.0002.0D9D] # SINHALA LETTER MAHAAPRAANA GAYANNA
-0D9E ; [.2244.0020.0002.0D9E] # SINHALA LETTER KANTAJA NAASIKYAYA
-0D9F ; [.2245.0020.0002.0D9F] # SINHALA LETTER SANYAKA GAYANNA
-0DA0 ; [.2246.0020.0002.0DA0] # SINHALA LETTER ALPAPRAANA CAYANNA
-0DA1 ; [.2247.0020.0002.0DA1] # SINHALA LETTER MAHAAPRAANA CAYANNA
-0DA2 ; [.2248.0020.0002.0DA2] # SINHALA LETTER ALPAPRAANA JAYANNA
-0DA3 ; [.2249.0020.0002.0DA3] # SINHALA LETTER MAHAAPRAANA JAYANNA
-0DA4 ; [.224A.0020.0002.0DA4] # SINHALA LETTER TAALUJA NAASIKYAYA
-0DA5 ; [.224B.0020.0002.0DA5] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
-0DA6 ; [.224C.0020.0002.0DA6] # SINHALA LETTER SANYAKA JAYANNA
-0DA7 ; [.224D.0020.0002.0DA7] # SINHALA LETTER ALPAPRAANA TTAYANNA
-0DA8 ; [.224E.0020.0002.0DA8] # SINHALA LETTER MAHAAPRAANA TTAYANNA
-0DA9 ; [.224F.0020.0002.0DA9] # SINHALA LETTER ALPAPRAANA DDAYANNA
-0DAA ; [.2250.0020.0002.0DAA] # SINHALA LETTER MAHAAPRAANA DDAYANNA
-0DAB ; [.2251.0020.0002.0DAB] # SINHALA LETTER MUURDHAJA NAYANNA
-0DAC ; [.2252.0020.0002.0DAC] # SINHALA LETTER SANYAKA DDAYANNA
-0DAD ; [.2253.0020.0002.0DAD] # SINHALA LETTER ALPAPRAANA TAYANNA
-0DAE ; [.2254.0020.0002.0DAE] # SINHALA LETTER MAHAAPRAANA TAYANNA
-0DAF ; [.2255.0020.0002.0DAF] # SINHALA LETTER ALPAPRAANA DAYANNA
-0DB0 ; [.2256.0020.0002.0DB0] # SINHALA LETTER MAHAAPRAANA DAYANNA
-0DB1 ; [.2257.0020.0002.0DB1] # SINHALA LETTER DANTAJA NAYANNA
-0DB3 ; [.2258.0020.0002.0DB3] # SINHALA LETTER SANYAKA DAYANNA
-0DB4 ; [.2259.0020.0002.0DB4] # SINHALA LETTER ALPAPRAANA PAYANNA
-0DB5 ; [.225A.0020.0002.0DB5] # SINHALA LETTER MAHAAPRAANA PAYANNA
-0DB6 ; [.225B.0020.0002.0DB6] # SINHALA LETTER ALPAPRAANA BAYANNA
-0DB7 ; [.225C.0020.0002.0DB7] # SINHALA LETTER MAHAAPRAANA BAYANNA
-0DB8 ; [.225D.0020.0002.0DB8] # SINHALA LETTER MAYANNA
-0DB9 ; [.225E.0020.0002.0DB9] # SINHALA LETTER AMBA BAYANNA
-0DBA ; [.225F.0020.0002.0DBA] # SINHALA LETTER YAYANNA
-0DBB ; [.2260.0020.0002.0DBB] # SINHALA LETTER RAYANNA
-0DBD ; [.2261.0020.0002.0DBD] # SINHALA LETTER DANTAJA LAYANNA
-0DC0 ; [.2262.0020.0002.0DC0] # SINHALA LETTER VAYANNA
-0DC1 ; [.2263.0020.0002.0DC1] # SINHALA LETTER TAALUJA SAYANNA
-0DC2 ; [.2264.0020.0002.0DC2] # SINHALA LETTER MUURDHAJA SAYANNA
-0DC3 ; [.2265.0020.0002.0DC3] # SINHALA LETTER DANTAJA SAYANNA
-0DC4 ; [.2266.0020.0002.0DC4] # SINHALA LETTER HAYANNA
-0DC5 ; [.2267.0020.0002.0DC5] # SINHALA LETTER MUURDHAJA LAYANNA
-0DC6 ; [.2268.0020.0002.0DC6] # SINHALA LETTER FAYANNA
-0DCF ; [.2269.0020.0002.0DCF] # SINHALA VOWEL SIGN AELA-PILLA
-0DD0 ; [.226A.0020.0002.0DD0] # SINHALA VOWEL SIGN KETTI AEDA-PILLA
-0DD1 ; [.226B.0020.0002.0DD1] # SINHALA VOWEL SIGN DIGA AEDA-PILLA
-0DD2 ; [.226C.0020.0002.0DD2] # SINHALA VOWEL SIGN KETTI IS-PILLA
-0DD3 ; [.226D.0020.0002.0DD3] # SINHALA VOWEL SIGN DIGA IS-PILLA
-0DD4 ; [.226E.0020.0002.0DD4] # SINHALA VOWEL SIGN KETTI PAA-PILLA
-0DD6 ; [.226F.0020.0002.0DD6] # SINHALA VOWEL SIGN DIGA PAA-PILLA
-0DD8 ; [.2270.0020.0002.0DD8] # SINHALA VOWEL SIGN GAETTA-PILLA
-0DF2 ; [.2271.0020.0002.0DF2] # SINHALA VOWEL SIGN DIGA GAETTA-PILLA
-0DDF ; [.2272.0020.0002.0DDF] # SINHALA VOWEL SIGN GAYANUKITTA
-0DF3 ; [.2273.0020.0002.0DF3] # SINHALA VOWEL SIGN DIGA GAYANUKITTA
-0DD9 ; [.2274.0020.0002.0DD9] # SINHALA VOWEL SIGN KOMBUVA
-0DDA ; [.2275.0020.0002.0DDA] # SINHALA VOWEL SIGN DIGA KOMBUVA
-0DD9 0DCA ; [.2275.0020.0002.0DDA] # SINHALA VOWEL SIGN DIGA KOMBUVA
-0DDB ; [.2276.0020.0002.0DDB] # SINHALA VOWEL SIGN KOMBU DEKA
-0DDC ; [.2277.0020.0002.0DDC] # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
-0DD9 0DCF ; [.2277.0020.0002.0DDC] # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
-0DDD ; [.2278.0020.0002.0DDD] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
-0DD9 0DCF 0DCA ; [.2278.0020.0002.0DDD] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
-0DDC 0DCA ; [.2278.0020.0002.0DDD] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
-0DDE ; [.2279.0020.0002.0DDE] # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
-0DD9 0DDF ; [.2279.0020.0002.0DDE] # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
-0DCA ; [.227A.0020.0002.0DCA] # SINHALA SIGN AL-LAKUNA
-AAF2 ; [.227B.0020.0002.AAF2] # MEETEI MAYEK ANJI
-ABC0 ; [.227C.0020.0002.ABC0] # MEETEI MAYEK LETTER KOK
-ABC1 ; [.227D.0020.0002.ABC1] # MEETEI MAYEK LETTER SAM
-ABC2 ; [.227E.0020.0002.ABC2] # MEETEI MAYEK LETTER LAI
-ABC3 ; [.227F.0020.0002.ABC3] # MEETEI MAYEK LETTER MIT
-ABC4 ; [.2280.0020.0002.ABC4] # MEETEI MAYEK LETTER PA
-ABC5 ; [.2281.0020.0002.ABC5] # MEETEI MAYEK LETTER NA
-ABC6 ; [.2282.0020.0002.ABC6] # MEETEI MAYEK LETTER CHIL
-ABC7 ; [.2283.0020.0002.ABC7] # MEETEI MAYEK LETTER TIL
-ABC8 ; [.2284.0020.0002.ABC8] # MEETEI MAYEK LETTER KHOU
-ABC9 ; [.2285.0020.0002.ABC9] # MEETEI MAYEK LETTER NGOU
-ABCA ; [.2286.0020.0002.ABCA] # MEETEI MAYEK LETTER THOU
-ABCB ; [.2287.0020.0002.ABCB] # MEETEI MAYEK LETTER WAI
-ABCC ; [.2288.0020.0002.ABCC] # MEETEI MAYEK LETTER YANG
-ABCD ; [.2289.0020.0002.ABCD] # MEETEI MAYEK LETTER HUK
-ABCE ; [.228A.0020.0002.ABCE] # MEETEI MAYEK LETTER UN
-ABCF ; [.228B.0020.0002.ABCF] # MEETEI MAYEK LETTER I
-ABD0 ; [.228C.0020.0002.ABD0] # MEETEI MAYEK LETTER PHAM
-ABD1 ; [.228D.0020.0002.ABD1] # MEETEI MAYEK LETTER ATIYA
-ABD2 ; [.228E.0020.0002.ABD2] # MEETEI MAYEK LETTER GOK
-ABD3 ; [.228F.0020.0002.ABD3] # MEETEI MAYEK LETTER JHAM
-ABD4 ; [.2290.0020.0002.ABD4] # MEETEI MAYEK LETTER RAI
-ABD5 ; [.2291.0020.0002.ABD5] # MEETEI MAYEK LETTER BA
-ABD6 ; [.2292.0020.0002.ABD6] # MEETEI MAYEK LETTER JIL
-ABD7 ; [.2293.0020.0002.ABD7] # MEETEI MAYEK LETTER DIL
-ABD8 ; [.2294.0020.0002.ABD8] # MEETEI MAYEK LETTER GHOU
-ABD9 ; [.2295.0020.0002.ABD9] # MEETEI MAYEK LETTER DHOU
-ABDA ; [.2296.0020.0002.ABDA] # MEETEI MAYEK LETTER BHAM
-AAE0 ; [.2297.0020.0002.AAE0] # MEETEI MAYEK LETTER E
-AAE1 ; [.2298.0020.0002.AAE1] # MEETEI MAYEK LETTER O
-AAE2 ; [.2299.0020.0002.AAE2] # MEETEI MAYEK LETTER CHA
-AAE3 ; [.229A.0020.0002.AAE3] # MEETEI MAYEK LETTER NYA
-AAE4 ; [.229B.0020.0002.AAE4] # MEETEI MAYEK LETTER TTA
-AAE5 ; [.229C.0020.0002.AAE5] # MEETEI MAYEK LETTER TTHA
-AAE6 ; [.229D.0020.0002.AAE6] # MEETEI MAYEK LETTER DDA
-AAE7 ; [.229E.0020.0002.AAE7] # MEETEI MAYEK LETTER DDHA
-AAE8 ; [.229F.0020.0002.AAE8] # MEETEI MAYEK LETTER NNA
-AAE9 ; [.22A0.0020.0002.AAE9] # MEETEI MAYEK LETTER SHA
-AAEA ; [.22A1.0020.0002.AAEA] # MEETEI MAYEK LETTER SSA
-ABE3 ; [.22A2.0020.0002.ABE3] # MEETEI MAYEK VOWEL SIGN ONAP
-ABE4 ; [.22A3.0020.0002.ABE4] # MEETEI MAYEK VOWEL SIGN INAP
-ABE5 ; [.22A4.0020.0002.ABE5] # MEETEI MAYEK VOWEL SIGN ANAP
-ABE6 ; [.22A5.0020.0002.ABE6] # MEETEI MAYEK VOWEL SIGN YENAP
-ABE7 ; [.22A6.0020.0002.ABE7] # MEETEI MAYEK VOWEL SIGN SOUNAP
-ABE8 ; [.22A7.0020.0002.ABE8] # MEETEI MAYEK VOWEL SIGN UNAP
-ABE9 ; [.22A8.0020.0002.ABE9] # MEETEI MAYEK VOWEL SIGN CHEINAP
-ABEA ; [.22A9.0020.0002.ABEA] # MEETEI MAYEK VOWEL SIGN NUNG
-AAEB ; [.22AA.0020.0002.AAEB] # MEETEI MAYEK VOWEL SIGN II
-AAEC ; [.22AB.0020.0002.AAEC] # MEETEI MAYEK VOWEL SIGN UU
-AAED ; [.22AC.0020.0002.AAED] # MEETEI MAYEK VOWEL SIGN AAI
-AAEE ; [.22AD.0020.0002.AAEE] # MEETEI MAYEK VOWEL SIGN AU
-AAEF ; [.22AE.0020.0002.AAEF] # MEETEI MAYEK VOWEL SIGN AAU
-AAF5 ; [.22AF.0020.0002.AAF5] # MEETEI MAYEK VOWEL SIGN VISARGA
-ABDB ; [.22B0.0020.0002.ABDB] # MEETEI MAYEK LETTER KOK LONSUM
-ABDC ; [.22B1.0020.0002.ABDC] # MEETEI MAYEK LETTER LAI LONSUM
-ABDD ; [.22B2.0020.0002.ABDD] # MEETEI MAYEK LETTER MIT LONSUM
-ABDE ; [.22B3.0020.0002.ABDE] # MEETEI MAYEK LETTER PA LONSUM
-ABDF ; [.22B4.0020.0002.ABDF] # MEETEI MAYEK LETTER NA LONSUM
-ABE0 ; [.22B5.0020.0002.ABE0] # MEETEI MAYEK LETTER TIL LONSUM
-ABE1 ; [.22B6.0020.0002.ABE1] # MEETEI MAYEK LETTER NGOU LONSUM
-ABE2 ; [.22B7.0020.0002.ABE2] # MEETEI MAYEK LETTER I LONSUM
-ABED ; [.22B8.0020.0002.ABED] # MEETEI MAYEK APUN IYEK
-AAF6 ; [.22B9.0020.0002.AAF6] # MEETEI MAYEK VIRAMA
-A800 ; [.22BA.0020.0002.A800] # SYLOTI NAGRI LETTER A
-A801 ; [.22BB.0020.0002.A801] # SYLOTI NAGRI LETTER I
-A802 ; [.22BC.0020.0002.A802] # SYLOTI NAGRI SIGN DVISVARA
-A803 ; [.22BD.0020.0002.A803] # SYLOTI NAGRI LETTER U
-A804 ; [.22BE.0020.0002.A804] # SYLOTI NAGRI LETTER E
-A805 ; [.22BF.0020.0002.A805] # SYLOTI NAGRI LETTER O
-A806 ; [.22C0.0020.0002.A806] # SYLOTI NAGRI SIGN HASANTA
-A807 ; [.22C1.0020.0002.A807] # SYLOTI NAGRI LETTER KO
-A808 ; [.22C2.0020.0002.A808] # SYLOTI NAGRI LETTER KHO
-A809 ; [.22C3.0020.0002.A809] # SYLOTI NAGRI LETTER GO
-A80A ; [.22C4.0020.0002.A80A] # SYLOTI NAGRI LETTER GHO
-A80C ; [.22C5.0020.0002.A80C] # SYLOTI NAGRI LETTER CO
-A80D ; [.22C6.0020.0002.A80D] # SYLOTI NAGRI LETTER CHO
-A80E ; [.22C7.0020.0002.A80E] # SYLOTI NAGRI LETTER JO
-A80F ; [.22C8.0020.0002.A80F] # SYLOTI NAGRI LETTER JHO
-A810 ; [.22C9.0020.0002.A810] # SYLOTI NAGRI LETTER TTO
-A811 ; [.22CA.0020.0002.A811] # SYLOTI NAGRI LETTER TTHO
-A812 ; [.22CB.0020.0002.A812] # SYLOTI NAGRI LETTER DDO
-A813 ; [.22CC.0020.0002.A813] # SYLOTI NAGRI LETTER DDHO
-A814 ; [.22CD.0020.0002.A814] # SYLOTI NAGRI LETTER TO
-A815 ; [.22CE.0020.0002.A815] # SYLOTI NAGRI LETTER THO
-A816 ; [.22CF.0020.0002.A816] # SYLOTI NAGRI LETTER DO
-A817 ; [.22D0.0020.0002.A817] # SYLOTI NAGRI LETTER DHO
-A818 ; [.22D1.0020.0002.A818] # SYLOTI NAGRI LETTER NO
-A819 ; [.22D2.0020.0002.A819] # SYLOTI NAGRI LETTER PO
-A81A ; [.22D3.0020.0002.A81A] # SYLOTI NAGRI LETTER PHO
-A81B ; [.22D4.0020.0002.A81B] # SYLOTI NAGRI LETTER BO
-A81C ; [.22D5.0020.0002.A81C] # SYLOTI NAGRI LETTER BHO
-A81D ; [.22D6.0020.0002.A81D] # SYLOTI NAGRI LETTER MO
-A81E ; [.22D7.0020.0002.A81E] # SYLOTI NAGRI LETTER RO
-A81F ; [.22D8.0020.0002.A81F] # SYLOTI NAGRI LETTER LO
-A820 ; [.22D9.0020.0002.A820] # SYLOTI NAGRI LETTER RRO
-A821 ; [.22DA.0020.0002.A821] # SYLOTI NAGRI LETTER SO
-A822 ; [.22DB.0020.0002.A822] # SYLOTI NAGRI LETTER HO
-A823 ; [.22DC.0020.0002.A823] # SYLOTI NAGRI VOWEL SIGN A
-A824 ; [.22DD.0020.0002.A824] # SYLOTI NAGRI VOWEL SIGN I
-A825 ; [.22DE.0020.0002.A825] # SYLOTI NAGRI VOWEL SIGN U
-A826 ; [.22DF.0020.0002.A826] # SYLOTI NAGRI VOWEL SIGN E
-A827 ; [.22E0.0020.0002.A827] # SYLOTI NAGRI VOWEL SIGN OO
-A882 ; [.22E1.0020.0002.A882] # SAURASHTRA LETTER A
-A883 ; [.22E2.0020.0002.A883] # SAURASHTRA LETTER AA
-A884 ; [.22E3.0020.0002.A884] # SAURASHTRA LETTER I
-A885 ; [.22E4.0020.0002.A885] # SAURASHTRA LETTER II
-A886 ; [.22E5.0020.0002.A886] # SAURASHTRA LETTER U
-A887 ; [.22E6.0020.0002.A887] # SAURASHTRA LETTER UU
-A888 ; [.22E7.0020.0002.A888] # SAURASHTRA LETTER VOCALIC R
-A889 ; [.22E8.0020.0002.A889] # SAURASHTRA LETTER VOCALIC RR
-A88A ; [.22E9.0020.0002.A88A] # SAURASHTRA LETTER VOCALIC L
-A88B ; [.22EA.0020.0002.A88B] # SAURASHTRA LETTER VOCALIC LL
-A88C ; [.22EB.0020.0002.A88C] # SAURASHTRA LETTER E
-A88D ; [.22EC.0020.0002.A88D] # SAURASHTRA LETTER EE
-A88E ; [.22ED.0020.0002.A88E] # SAURASHTRA LETTER AI
-A88F ; [.22EE.0020.0002.A88F] # SAURASHTRA LETTER O
-A890 ; [.22EF.0020.0002.A890] # SAURASHTRA LETTER OO
-A891 ; [.22F0.0020.0002.A891] # SAURASHTRA LETTER AU
-A892 ; [.22F1.0020.0002.A892] # SAURASHTRA LETTER KA
-A893 ; [.22F2.0020.0002.A893] # SAURASHTRA LETTER KHA
-A894 ; [.22F3.0020.0002.A894] # SAURASHTRA LETTER GA
-A895 ; [.22F4.0020.0002.A895] # SAURASHTRA LETTER GHA
-A896 ; [.22F5.0020.0002.A896] # SAURASHTRA LETTER NGA
-A897 ; [.22F6.0020.0002.A897] # SAURASHTRA LETTER CA
-A898 ; [.22F7.0020.0002.A898] # SAURASHTRA LETTER CHA
-A899 ; [.22F8.0020.0002.A899] # SAURASHTRA LETTER JA
-A89A ; [.22F9.0020.0002.A89A] # SAURASHTRA LETTER JHA
-A89B ; [.22FA.0020.0002.A89B] # SAURASHTRA LETTER NYA
-A89C ; [.22FB.0020.0002.A89C] # SAURASHTRA LETTER TTA
-A89D ; [.22FC.0020.0002.A89D] # SAURASHTRA LETTER TTHA
-A89E ; [.22FD.0020.0002.A89E] # SAURASHTRA LETTER DDA
-A89F ; [.22FE.0020.0002.A89F] # SAURASHTRA LETTER DDHA
-A8A0 ; [.22FF.0020.0002.A8A0] # SAURASHTRA LETTER NNA
-A8A1 ; [.2300.0020.0002.A8A1] # SAURASHTRA LETTER TA
-A8A2 ; [.2301.0020.0002.A8A2] # SAURASHTRA LETTER THA
-A8A3 ; [.2302.0020.0002.A8A3] # SAURASHTRA LETTER DA
-A8A4 ; [.2303.0020.0002.A8A4] # SAURASHTRA LETTER DHA
-A8A5 ; [.2304.0020.0002.A8A5] # SAURASHTRA LETTER NA
-A8A6 ; [.2305.0020.0002.A8A6] # SAURASHTRA LETTER PA
-A8A7 ; [.2306.0020.0002.A8A7] # SAURASHTRA LETTER PHA
-A8A8 ; [.2307.0020.0002.A8A8] # SAURASHTRA LETTER BA
-A8A9 ; [.2308.0020.0002.A8A9] # SAURASHTRA LETTER BHA
-A8AA ; [.2309.0020.0002.A8AA] # SAURASHTRA LETTER MA
-A8AB ; [.230A.0020.0002.A8AB] # SAURASHTRA LETTER YA
-A8AC ; [.230B.0020.0002.A8AC] # SAURASHTRA LETTER RA
-A8AD ; [.230C.0020.0002.A8AD] # SAURASHTRA LETTER LA
-A8AE ; [.230D.0020.0002.A8AE] # SAURASHTRA LETTER VA
-A8AF ; [.230E.0020.0002.A8AF] # SAURASHTRA LETTER SHA
-A8B0 ; [.230F.0020.0002.A8B0] # SAURASHTRA LETTER SSA
-A8B1 ; [.2310.0020.0002.A8B1] # SAURASHTRA LETTER SA
-A8B2 ; [.2311.0020.0002.A8B2] # SAURASHTRA LETTER HA
-A8B3 ; [.2312.0020.0002.A8B3] # SAURASHTRA LETTER LLA
-A8B4 ; [.2313.0020.0002.A8B4] # SAURASHTRA CONSONANT SIGN HAARU
-A8B5 ; [.2314.0020.0002.A8B5] # SAURASHTRA VOWEL SIGN AA
-A8B6 ; [.2315.0020.0002.A8B6] # SAURASHTRA VOWEL SIGN I
-A8B7 ; [.2316.0020.0002.A8B7] # SAURASHTRA VOWEL SIGN II
-A8B8 ; [.2317.0020.0002.A8B8] # SAURASHTRA VOWEL SIGN U
-A8B9 ; [.2318.0020.0002.A8B9] # SAURASHTRA VOWEL SIGN UU
-A8BA ; [.2319.0020.0002.A8BA] # SAURASHTRA VOWEL SIGN VOCALIC R
-A8BB ; [.231A.0020.0002.A8BB] # SAURASHTRA VOWEL SIGN VOCALIC RR
-A8BC ; [.231B.0020.0002.A8BC] # SAURASHTRA VOWEL SIGN VOCALIC L
-A8BD ; [.231C.0020.0002.A8BD] # SAURASHTRA VOWEL SIGN VOCALIC LL
-A8BE ; [.231D.0020.0002.A8BE] # SAURASHTRA VOWEL SIGN E
-A8BF ; [.231E.0020.0002.A8BF] # SAURASHTRA VOWEL SIGN EE
-A8C0 ; [.231F.0020.0002.A8C0] # SAURASHTRA VOWEL SIGN AI
-A8C1 ; [.2320.0020.0002.A8C1] # SAURASHTRA VOWEL SIGN O
-A8C2 ; [.2321.0020.0002.A8C2] # SAURASHTRA VOWEL SIGN OO
-A8C3 ; [.2322.0020.0002.A8C3] # SAURASHTRA VOWEL SIGN AU
-A8C4 ; [.2323.0020.0002.A8C4] # SAURASHTRA SIGN VIRAMA
-11083 ; [.2324.0020.0002.11083] # KAITHI LETTER A
-11084 ; [.2325.0020.0002.11084] # KAITHI LETTER AA
-11085 ; [.2326.0020.0002.11085] # KAITHI LETTER I
-11086 ; [.2327.0020.0002.11086] # KAITHI LETTER II
-11087 ; [.2328.0020.0002.11087] # KAITHI LETTER U
-11088 ; [.2329.0020.0002.11088] # KAITHI LETTER UU
-11089 ; [.232A.0020.0002.11089] # KAITHI LETTER E
-1108A ; [.232B.0020.0002.1108A] # KAITHI LETTER AI
-1108B ; [.232C.0020.0002.1108B] # KAITHI LETTER O
-1108C ; [.232D.0020.0002.1108C] # KAITHI LETTER AU
-1108D ; [.232E.0020.0002.1108D] # KAITHI LETTER KA
-1108E ; [.232F.0020.0002.1108E] # KAITHI LETTER KHA
-1108F ; [.2330.0020.0002.1108F] # KAITHI LETTER GA
-11090 ; [.2331.0020.0002.11090] # KAITHI LETTER GHA
-11091 ; [.2332.0020.0002.11091] # KAITHI LETTER NGA
-11092 ; [.2333.0020.0002.11092] # KAITHI LETTER CA
-11093 ; [.2334.0020.0002.11093] # KAITHI LETTER CHA
-11094 ; [.2335.0020.0002.11094] # KAITHI LETTER JA
-11095 ; [.2336.0020.0002.11095] # KAITHI LETTER JHA
-11096 ; [.2337.0020.0002.11096] # KAITHI LETTER NYA
-11097 ; [.2338.0020.0002.11097] # KAITHI LETTER TTA
-11098 ; [.2339.0020.0002.11098] # KAITHI LETTER TTHA
-11099 ; [.233A.0020.0002.11099] # KAITHI LETTER DDA
-1109A ; [.233A.0020.0002.11099][.0000.00F1.0002.093C] # KAITHI LETTER DDDHA
-1109B ; [.233B.0020.0002.1109B] # KAITHI LETTER DDHA
-1109C ; [.233B.0020.0002.1109B][.0000.00F1.0002.093C] # KAITHI LETTER RHA
-1109D ; [.233C.0020.0002.1109D] # KAITHI LETTER NNA
-1109E ; [.233D.0020.0002.1109E] # KAITHI LETTER TA
-1109F ; [.233E.0020.0002.1109F] # KAITHI LETTER THA
-110A0 ; [.233F.0020.0002.110A0] # KAITHI LETTER DA
-110A1 ; [.2340.0020.0002.110A1] # KAITHI LETTER DHA
-110A2 ; [.2341.0020.0002.110A2] # KAITHI LETTER NA
-110A3 ; [.2342.0020.0002.110A3] # KAITHI LETTER PA
-110A4 ; [.2343.0020.0002.110A4] # KAITHI LETTER PHA
-110A5 ; [.2344.0020.0002.110A5] # KAITHI LETTER BA
-110AB ; [.2344.0020.0002.110A5][.0000.00F1.0002.093C] # KAITHI LETTER VA
-110A6 ; [.2345.0020.0002.110A6] # KAITHI LETTER BHA
-110A7 ; [.2346.0020.0002.110A7] # KAITHI LETTER MA
-110A8 ; [.2347.0020.0002.110A8] # KAITHI LETTER YA
-110A9 ; [.2348.0020.0002.110A9] # KAITHI LETTER RA
-110AA ; [.2349.0020.0002.110AA] # KAITHI LETTER LA
-110AC ; [.234A.0020.0002.110AC] # KAITHI LETTER SHA
-110AD ; [.234B.0020.0002.110AD] # KAITHI LETTER SSA
-110AE ; [.234C.0020.0002.110AE] # KAITHI LETTER SA
-110AF ; [.234D.0020.0002.110AF] # KAITHI LETTER HA
-110B0 ; [.234E.0020.0002.110B0] # KAITHI VOWEL SIGN AA
-110B1 ; [.234F.0020.0002.110B1] # KAITHI VOWEL SIGN I
-110B2 ; [.2350.0020.0002.110B2] # KAITHI VOWEL SIGN II
-110B3 ; [.2351.0020.0002.110B3] # KAITHI VOWEL SIGN U
-110B4 ; [.2352.0020.0002.110B4] # KAITHI VOWEL SIGN UU
-110B5 ; [.2353.0020.0002.110B5] # KAITHI VOWEL SIGN E
-110B6 ; [.2354.0020.0002.110B6] # KAITHI VOWEL SIGN AI
-110B7 ; [.2355.0020.0002.110B7] # KAITHI VOWEL SIGN O
-110B8 ; [.2356.0020.0002.110B8] # KAITHI VOWEL SIGN AU
-110B9 ; [.2357.0020.0002.110B9] # KAITHI SIGN VIRAMA
-111C4 ; [.2358.0020.0002.111C4] # SHARADA OM
-11183 ; [.2359.0020.0002.11183] # SHARADA LETTER A
-11184 ; [.235A.0020.0002.11184] # SHARADA LETTER AA
-11185 ; [.235B.0020.0002.11185] # SHARADA LETTER I
-11186 ; [.235C.0020.0002.11186] # SHARADA LETTER II
-11187 ; [.235D.0020.0002.11187] # SHARADA LETTER U
-11188 ; [.235E.0020.0002.11188] # SHARADA LETTER UU
-11189 ; [.235F.0020.0002.11189] # SHARADA LETTER VOCALIC R
-1118A ; [.2360.0020.0002.1118A] # SHARADA LETTER VOCALIC RR
-1118B ; [.2361.0020.0002.1118B] # SHARADA LETTER VOCALIC L
-1118C ; [.2362.0020.0002.1118C] # SHARADA LETTER VOCALIC LL
-1118D ; [.2363.0020.0002.1118D] # SHARADA LETTER E
-1118E ; [.2364.0020.0002.1118E] # SHARADA LETTER AI
-1118F ; [.2365.0020.0002.1118F] # SHARADA LETTER O
-11190 ; [.2366.0020.0002.11190] # SHARADA LETTER AU
-11191 ; [.2367.0020.0002.11191] # SHARADA LETTER KA
-11192 ; [.2368.0020.0002.11192] # SHARADA LETTER KHA
-11193 ; [.2369.0020.0002.11193] # SHARADA LETTER GA
-11194 ; [.236A.0020.0002.11194] # SHARADA LETTER GHA
-11195 ; [.236B.0020.0002.11195] # SHARADA LETTER NGA
-11196 ; [.236C.0020.0002.11196] # SHARADA LETTER CA
-11197 ; [.236D.0020.0002.11197] # SHARADA LETTER CHA
-11198 ; [.236E.0020.0002.11198] # SHARADA LETTER JA
-11199 ; [.236F.0020.0002.11199] # SHARADA LETTER JHA
-1119A ; [.2370.0020.0002.1119A] # SHARADA LETTER NYA
-1119B ; [.2371.0020.0002.1119B] # SHARADA LETTER TTA
-1119C ; [.2372.0020.0002.1119C] # SHARADA LETTER TTHA
-1119D ; [.2373.0020.0002.1119D] # SHARADA LETTER DDA
-1119E ; [.2374.0020.0002.1119E] # SHARADA LETTER DDHA
-1119F ; [.2375.0020.0002.1119F] # SHARADA LETTER NNA
-111A0 ; [.2376.0020.0002.111A0] # SHARADA LETTER TA
-111A1 ; [.2377.0020.0002.111A1] # SHARADA LETTER THA
-111A2 ; [.2378.0020.0002.111A2] # SHARADA LETTER DA
-111A3 ; [.2379.0020.0002.111A3] # SHARADA LETTER DHA
-111A4 ; [.237A.0020.0002.111A4] # SHARADA LETTER NA
-111A5 ; [.237B.0020.0002.111A5] # SHARADA LETTER PA
-111A6 ; [.237C.0020.0002.111A6] # SHARADA LETTER PHA
-111A7 ; [.237D.0020.0002.111A7] # SHARADA LETTER BA
-111A8 ; [.237E.0020.0002.111A8] # SHARADA LETTER BHA
-111A9 ; [.237F.0020.0002.111A9] # SHARADA LETTER MA
-111AA ; [.2380.0020.0002.111AA] # SHARADA LETTER YA
-111AB ; [.2381.0020.0002.111AB] # SHARADA LETTER RA
-111AC ; [.2382.0020.0002.111AC] # SHARADA LETTER LA
-111AD ; [.2383.0020.0002.111AD] # SHARADA LETTER LLA
-111AE ; [.2384.0020.0002.111AE] # SHARADA LETTER VA
-111AF ; [.2385.0020.0002.111AF] # SHARADA LETTER SHA
-111B0 ; [.2386.0020.0002.111B0] # SHARADA LETTER SSA
-111B1 ; [.2387.0020.0002.111B1] # SHARADA LETTER SA
-111B2 ; [.2388.0020.0002.111B2] # SHARADA LETTER HA
-111B3 ; [.2389.0020.0002.111B3] # SHARADA VOWEL SIGN AA
-111B4 ; [.238A.0020.0002.111B4] # SHARADA VOWEL SIGN I
-111B5 ; [.238B.0020.0002.111B5] # SHARADA VOWEL SIGN II
-111B6 ; [.238C.0020.0002.111B6] # SHARADA VOWEL SIGN U
-111B7 ; [.238D.0020.0002.111B7] # SHARADA VOWEL SIGN UU
-111B8 ; [.238E.0020.0002.111B8] # SHARADA VOWEL SIGN VOCALIC R
-111B9 ; [.238F.0020.0002.111B9] # SHARADA VOWEL SIGN VOCALIC RR
-111BA ; [.2390.0020.0002.111BA] # SHARADA VOWEL SIGN VOCALIC L
-111BB ; [.2391.0020.0002.111BB] # SHARADA VOWEL SIGN VOCALIC LL
-111BC ; [.2392.0020.0002.111BC] # SHARADA VOWEL SIGN E
-111BD ; [.2393.0020.0002.111BD] # SHARADA VOWEL SIGN AI
-111BE ; [.2394.0020.0002.111BE] # SHARADA VOWEL SIGN O
-111BF ; [.2395.0020.0002.111BF] # SHARADA VOWEL SIGN AU
-111C0 ; [.2396.0020.0002.111C0] # SHARADA SIGN VIRAMA
-111C1 ; [.2397.0020.0002.111C1] # SHARADA SIGN AVAGRAHA
-111C2 ; [.2398.0020.0002.111C2] # SHARADA SIGN JIHVAMULIYA
-111C3 ; [.2399.0020.0002.111C3] # SHARADA SIGN UPADHMANIYA
-11680 ; [.239A.0020.0002.11680] # TAKRI LETTER A
-11681 ; [.239B.0020.0002.11681] # TAKRI LETTER AA
-11682 ; [.239C.0020.0002.11682] # TAKRI LETTER I
-11683 ; [.239D.0020.0002.11683] # TAKRI LETTER II
-11684 ; [.239E.0020.0002.11684] # TAKRI LETTER U
-11685 ; [.239F.0020.0002.11685] # TAKRI LETTER UU
-11686 ; [.23A0.0020.0002.11686] # TAKRI LETTER E
-11687 ; [.23A1.0020.0002.11687] # TAKRI LETTER AI
-11688 ; [.23A2.0020.0002.11688] # TAKRI LETTER O
-11689 ; [.23A3.0020.0002.11689] # TAKRI LETTER AU
-116A8 ; [.23A4.0020.0002.116A8] # TAKRI LETTER SA
-116A7 ; [.23A5.0020.0002.116A7] # TAKRI LETTER SHA
-116A9 ; [.23A6.0020.0002.116A9] # TAKRI LETTER HA
-1168A ; [.23A7.0020.0002.1168A] # TAKRI LETTER KA
-1168B ; [.23A8.0020.0002.1168B] # TAKRI LETTER KHA
-1168C ; [.23A9.0020.0002.1168C] # TAKRI LETTER GA
-1168D ; [.23AA.0020.0002.1168D] # TAKRI LETTER GHA
-1168E ; [.23AB.0020.0002.1168E] # TAKRI LETTER NGA
-1168F ; [.23AC.0020.0002.1168F] # TAKRI LETTER CA
-11690 ; [.23AD.0020.0002.11690] # TAKRI LETTER CHA
-11691 ; [.23AE.0020.0002.11691] # TAKRI LETTER JA
-11692 ; [.23AF.0020.0002.11692] # TAKRI LETTER JHA
-11693 ; [.23B0.0020.0002.11693] # TAKRI LETTER NYA
-11694 ; [.23B1.0020.0002.11694] # TAKRI LETTER TTA
-11695 ; [.23B2.0020.0002.11695] # TAKRI LETTER TTHA
-11696 ; [.23B3.0020.0002.11696] # TAKRI LETTER DDA
-11697 ; [.23B4.0020.0002.11697] # TAKRI LETTER DDHA
-11698 ; [.23B5.0020.0002.11698] # TAKRI LETTER NNA
-11699 ; [.23B6.0020.0002.11699] # TAKRI LETTER TA
-1169A ; [.23B7.0020.0002.1169A] # TAKRI LETTER THA
-1169B ; [.23B8.0020.0002.1169B] # TAKRI LETTER DA
-1169C ; [.23B9.0020.0002.1169C] # TAKRI LETTER DHA
-1169D ; [.23BA.0020.0002.1169D] # TAKRI LETTER NA
-1169E ; [.23BB.0020.0002.1169E] # TAKRI LETTER PA
-1169F ; [.23BC.0020.0002.1169F] # TAKRI LETTER PHA
-116A0 ; [.23BD.0020.0002.116A0] # TAKRI LETTER BA
-116A1 ; [.23BE.0020.0002.116A1] # TAKRI LETTER BHA
-116A2 ; [.23BF.0020.0002.116A2] # TAKRI LETTER MA
-116A3 ; [.23C0.0020.0002.116A3] # TAKRI LETTER YA
-116A4 ; [.23C1.0020.0002.116A4] # TAKRI LETTER RA
-116A5 ; [.23C2.0020.0002.116A5] # TAKRI LETTER LA
-116A6 ; [.23C3.0020.0002.116A6] # TAKRI LETTER VA
-116AA ; [.23C4.0020.0002.116AA] # TAKRI LETTER RRA
-116AD ; [.23C5.0020.0002.116AD] # TAKRI VOWEL SIGN AA
-116AE ; [.23C6.0020.0002.116AE] # TAKRI VOWEL SIGN I
-116AF ; [.23C7.0020.0002.116AF] # TAKRI VOWEL SIGN II
-116B0 ; [.23C8.0020.0002.116B0] # TAKRI VOWEL SIGN U
-116B1 ; [.23C9.0020.0002.116B1] # TAKRI VOWEL SIGN UU
-116B2 ; [.23CA.0020.0002.116B2] # TAKRI VOWEL SIGN E
-116B3 ; [.23CB.0020.0002.116B3] # TAKRI VOWEL SIGN AI
-116B4 ; [.23CC.0020.0002.116B4] # TAKRI VOWEL SIGN O
-116B5 ; [.23CD.0020.0002.116B5] # TAKRI VOWEL SIGN AU
-116B6 ; [.23CE.0020.0002.116B6] # TAKRI SIGN VIRAMA
-1B83 ; [.23CF.0020.0002.1B83] # SUNDANESE LETTER A
-1BBA ; [.23CF.0020.0004.1BBA] # SUNDANESE AVAGRAHA
-1B84 ; [.23D0.0020.0002.1B84] # SUNDANESE LETTER I
-1B85 ; [.23D1.0020.0002.1B85] # SUNDANESE LETTER U
-1B86 ; [.23D2.0020.0002.1B86] # SUNDANESE LETTER AE
-1B87 ; [.23D3.0020.0002.1B87] # SUNDANESE LETTER O
-1B88 ; [.23D4.0020.0002.1B88] # SUNDANESE LETTER E
-1B89 ; [.23D5.0020.0002.1B89] # SUNDANESE LETTER EU
-1B8A ; [.23D6.0020.0002.1B8A] # SUNDANESE LETTER KA
-1BBE ; [.23D6.0020.0019.1BBE] # SUNDANESE LETTER FINAL K
-1BAE ; [.23D7.0020.0002.1BAE] # SUNDANESE LETTER KHA
-1B8B ; [.23D8.0020.0002.1B8B] # SUNDANESE LETTER QA
-1B8C ; [.23D9.0020.0002.1B8C] # SUNDANESE LETTER GA
-1B8D ; [.23DA.0020.0002.1B8D] # SUNDANESE LETTER NGA
-1B8E ; [.23DB.0020.0002.1B8E] # SUNDANESE LETTER CA
-1B8F ; [.23DC.0020.0002.1B8F] # SUNDANESE LETTER JA
-1B90 ; [.23DD.0020.0002.1B90] # SUNDANESE LETTER ZA
-1B91 ; [.23DE.0020.0002.1B91] # SUNDANESE LETTER NYA
-1B92 ; [.23DF.0020.0002.1B92] # SUNDANESE LETTER TA
-1B93 ; [.23E0.0020.0002.1B93] # SUNDANESE LETTER DA
-1B94 ; [.23E1.0020.0002.1B94] # SUNDANESE LETTER NA
-1B95 ; [.23E2.0020.0002.1B95] # SUNDANESE LETTER PA
-1B96 ; [.23E3.0020.0002.1B96] # SUNDANESE LETTER FA
-1B97 ; [.23E4.0020.0002.1B97] # SUNDANESE LETTER VA
-1B98 ; [.23E5.0020.0002.1B98] # SUNDANESE LETTER BA
-1BBD ; [.23E6.0020.0002.1BBD] # SUNDANESE LETTER BHA
-1B99 ; [.23E7.0020.0002.1B99] # SUNDANESE LETTER MA
-1BBF ; [.23E7.0020.0019.1BBF] # SUNDANESE LETTER FINAL M
-1BAC ; [.23E8.0020.0002.1BAC] # SUNDANESE CONSONANT SIGN PASANGAN MA
-1B9A ; [.23E9.0020.0002.1B9A] # SUNDANESE LETTER YA
-1BA1 ; [.23EA.0020.0002.1BA1] # SUNDANESE CONSONANT SIGN PAMINGKAL
-1B9B ; [.23EB.0020.0002.1B9B] # SUNDANESE LETTER RA
-1BA2 ; [.23EC.0020.0002.1BA2] # SUNDANESE CONSONANT SIGN PANYAKRA
-1BBB ; [.23ED.0020.0002.1BBB] # SUNDANESE LETTER REU
-1B9C ; [.23EE.0020.0002.1B9C] # SUNDANESE LETTER LA
-1BA3 ; [.23EF.0020.0002.1BA3] # SUNDANESE CONSONANT SIGN PANYIKU
-1BBC ; [.23F0.0020.0002.1BBC] # SUNDANESE LETTER LEU
-1B9D ; [.23F1.0020.0002.1B9D] # SUNDANESE LETTER WA
-1BAD ; [.23F2.0020.0002.1BAD] # SUNDANESE CONSONANT SIGN PASANGAN WA
-1B9E ; [.23F3.0020.0002.1B9E] # SUNDANESE LETTER SA
-1B9F ; [.23F4.0020.0002.1B9F] # SUNDANESE LETTER XA
-1BAF ; [.23F5.0020.0002.1BAF] # SUNDANESE LETTER SYA
-1BA0 ; [.23F6.0020.0002.1BA0] # SUNDANESE LETTER HA
-1BA4 ; [.23F7.0020.0002.1BA4] # SUNDANESE VOWEL SIGN PANGHULU
-1BA5 ; [.23F8.0020.0002.1BA5] # SUNDANESE VOWEL SIGN PANYUKU
-1BA6 ; [.23F9.0020.0002.1BA6] # SUNDANESE VOWEL SIGN PANAELAENG
-1BA7 ; [.23FA.0020.0002.1BA7] # SUNDANESE VOWEL SIGN PANOLONG
-1BA8 ; [.23FB.0020.0002.1BA8] # SUNDANESE VOWEL SIGN PAMEPET
-1BA9 ; [.23FC.0020.0002.1BA9] # SUNDANESE VOWEL SIGN PANEULEUNG
-1BAA ; [.23FD.0020.0002.1BAA] # SUNDANESE SIGN PAMAAEH
-1BAB ; [.23FE.0020.0002.1BAB] # SUNDANESE SIGN VIRAMA
-11005 ; [.23FF.0020.0002.11005] # BRAHMI LETTER A
-11006 ; [.2400.0020.0002.11006] # BRAHMI LETTER AA
-11007 ; [.2401.0020.0002.11007] # BRAHMI LETTER I
-11008 ; [.2402.0020.0002.11008] # BRAHMI LETTER II
-11009 ; [.2403.0020.0002.11009] # BRAHMI LETTER U
-1100A ; [.2404.0020.0002.1100A] # BRAHMI LETTER UU
-1100B ; [.2405.0020.0002.1100B] # BRAHMI LETTER VOCALIC R
-1100C ; [.2406.0020.0002.1100C] # BRAHMI LETTER VOCALIC RR
-1100D ; [.2407.0020.0002.1100D] # BRAHMI LETTER VOCALIC L
-1100E ; [.2408.0020.0002.1100E] # BRAHMI LETTER VOCALIC LL
-1100F ; [.2409.0020.0002.1100F] # BRAHMI LETTER E
-11010 ; [.240A.0020.0002.11010] # BRAHMI LETTER AI
-11011 ; [.240B.0020.0002.11011] # BRAHMI LETTER O
-11012 ; [.240C.0020.0002.11012] # BRAHMI LETTER AU
-11013 ; [.240D.0020.0002.11013] # BRAHMI LETTER KA
-11014 ; [.240E.0020.0002.11014] # BRAHMI LETTER KHA
-11015 ; [.240F.0020.0002.11015] # BRAHMI LETTER GA
-11016 ; [.2410.0020.0002.11016] # BRAHMI LETTER GHA
-11017 ; [.2411.0020.0002.11017] # BRAHMI LETTER NGA
-11018 ; [.2412.0020.0002.11018] # BRAHMI LETTER CA
-11019 ; [.2413.0020.0002.11019] # BRAHMI LETTER CHA
-1101A ; [.2414.0020.0002.1101A] # BRAHMI LETTER JA
-1101B ; [.2415.0020.0002.1101B] # BRAHMI LETTER JHA
-1101C ; [.2416.0020.0002.1101C] # BRAHMI LETTER NYA
-1101D ; [.2417.0020.0002.1101D] # BRAHMI LETTER TTA
-1101E ; [.2418.0020.0002.1101E] # BRAHMI LETTER TTHA
-1101F ; [.2419.0020.0002.1101F] # BRAHMI LETTER DDA
-11020 ; [.241A.0020.0002.11020] # BRAHMI LETTER DDHA
-11021 ; [.241B.0020.0002.11021] # BRAHMI LETTER NNA
-11022 ; [.241C.0020.0002.11022] # BRAHMI LETTER TA
-11023 ; [.241D.0020.0002.11023] # BRAHMI LETTER THA
-11024 ; [.241E.0020.0002.11024] # BRAHMI LETTER DA
-11025 ; [.241F.0020.0002.11025] # BRAHMI LETTER DHA
-11026 ; [.2420.0020.0002.11026] # BRAHMI LETTER NA
-11027 ; [.2421.0020.0002.11027] # BRAHMI LETTER PA
-11028 ; [.2422.0020.0002.11028] # BRAHMI LETTER PHA
-11029 ; [.2423.0020.0002.11029] # BRAHMI LETTER BA
-1102A ; [.2424.0020.0002.1102A] # BRAHMI LETTER BHA
-1102B ; [.2425.0020.0002.1102B] # BRAHMI LETTER MA
-1102C ; [.2426.0020.0002.1102C] # BRAHMI LETTER YA
-1102D ; [.2427.0020.0002.1102D] # BRAHMI LETTER RA
-1102E ; [.2428.0020.0002.1102E] # BRAHMI LETTER LA
-1102F ; [.2429.0020.0002.1102F] # BRAHMI LETTER VA
-11030 ; [.242A.0020.0002.11030] # BRAHMI LETTER SHA
-11031 ; [.242B.0020.0002.11031] # BRAHMI LETTER SSA
-11032 ; [.242C.0020.0002.11032] # BRAHMI LETTER SA
-11033 ; [.242D.0020.0002.11033] # BRAHMI LETTER HA
-11003 ; [.242E.0020.0002.11003] # BRAHMI SIGN JIHVAMULIYA
-11004 ; [.242F.0020.0002.11004] # BRAHMI SIGN UPADHMANIYA
-11034 ; [.2430.0020.0002.11034] # BRAHMI LETTER LLA
-11035 ; [.2431.0020.0002.11035] # BRAHMI LETTER OLD TAMIL LLLA
-11036 ; [.2432.0020.0002.11036] # BRAHMI LETTER OLD TAMIL RRA
-11037 ; [.2433.0020.0002.11037] # BRAHMI LETTER OLD TAMIL NNNA
-11038 ; [.2434.0020.0002.11038] # BRAHMI VOWEL SIGN AA
-11039 ; [.2435.0020.0002.11039] # BRAHMI VOWEL SIGN BHATTIPROLU AA
-1103A ; [.2436.0020.0002.1103A] # BRAHMI VOWEL SIGN I
-1103B ; [.2437.0020.0002.1103B] # BRAHMI VOWEL SIGN II
-1103C ; [.2438.0020.0002.1103C] # BRAHMI VOWEL SIGN U
-1103D ; [.2439.0020.0002.1103D] # BRAHMI VOWEL SIGN UU
-1103E ; [.243A.0020.0002.1103E] # BRAHMI VOWEL SIGN VOCALIC R
-1103F ; [.243B.0020.0002.1103F] # BRAHMI VOWEL SIGN VOCALIC RR
-11040 ; [.243C.0020.0002.11040] # BRAHMI VOWEL SIGN VOCALIC L
-11041 ; [.243D.0020.0002.11041] # BRAHMI VOWEL SIGN VOCALIC LL
-11042 ; [.243E.0020.0002.11042] # BRAHMI VOWEL SIGN E
-11043 ; [.243F.0020.0002.11043] # BRAHMI VOWEL SIGN AI
-11044 ; [.2440.0020.0002.11044] # BRAHMI VOWEL SIGN O
-11045 ; [.2441.0020.0002.11045] # BRAHMI VOWEL SIGN AU
-11046 ; [.2442.0020.0002.11046] # BRAHMI VIRAMA
-10A00 ; [.2443.0020.0002.10A00] # KHAROSHTHI LETTER A
-10A01 ; [.2444.0020.0002.10A01] # KHAROSHTHI VOWEL SIGN I
-10A02 ; [.2445.0020.0002.10A02] # KHAROSHTHI VOWEL SIGN U
-10A03 ; [.2446.0020.0002.10A03] # KHAROSHTHI VOWEL SIGN VOCALIC R
-10A05 ; [.2447.0020.0002.10A05] # KHAROSHTHI VOWEL SIGN E
-10A06 ; [.2448.0020.0002.10A06] # KHAROSHTHI VOWEL SIGN O
-10A0C ; [.2449.0020.0002.10A0C] # KHAROSHTHI VOWEL LENGTH MARK
-10A10 ; [.244A.0020.0002.10A10] # KHAROSHTHI LETTER KA
-10A11 ; [.244B.0020.0002.10A11] # KHAROSHTHI LETTER KHA
-10A12 ; [.244C.0020.0002.10A12] # KHAROSHTHI LETTER GA
-10A13 ; [.244D.0020.0002.10A13] # KHAROSHTHI LETTER GHA
-10A15 ; [.244E.0020.0002.10A15] # KHAROSHTHI LETTER CA
-10A16 ; [.244F.0020.0002.10A16] # KHAROSHTHI LETTER CHA
-10A17 ; [.2450.0020.0002.10A17] # KHAROSHTHI LETTER JA
-10A19 ; [.2451.0020.0002.10A19] # KHAROSHTHI LETTER NYA
-10A1A ; [.2452.0020.0002.10A1A] # KHAROSHTHI LETTER TTA
-10A1B ; [.2453.0020.0002.10A1B] # KHAROSHTHI LETTER TTHA
-10A1C ; [.2454.0020.0002.10A1C] # KHAROSHTHI LETTER DDA
-10A1D ; [.2455.0020.0002.10A1D] # KHAROSHTHI LETTER DDHA
-10A1E ; [.2456.0020.0002.10A1E] # KHAROSHTHI LETTER NNA
-10A1F ; [.2457.0020.0002.10A1F] # KHAROSHTHI LETTER TA
-10A20 ; [.2458.0020.0002.10A20] # KHAROSHTHI LETTER THA
-10A21 ; [.2459.0020.0002.10A21] # KHAROSHTHI LETTER DA
-10A22 ; [.245A.0020.0002.10A22] # KHAROSHTHI LETTER DHA
-10A23 ; [.245B.0020.0002.10A23] # KHAROSHTHI LETTER NA
-10A24 ; [.245C.0020.0002.10A24] # KHAROSHTHI LETTER PA
-10A25 ; [.245D.0020.0002.10A25] # KHAROSHTHI LETTER PHA
-10A26 ; [.245E.0020.0002.10A26] # KHAROSHTHI LETTER BA
-10A27 ; [.245F.0020.0002.10A27] # KHAROSHTHI LETTER BHA
-10A28 ; [.2460.0020.0002.10A28] # KHAROSHTHI LETTER MA
-10A29 ; [.2461.0020.0002.10A29] # KHAROSHTHI LETTER YA
-10A2A ; [.2462.0020.0002.10A2A] # KHAROSHTHI LETTER RA
-10A2B ; [.2463.0020.0002.10A2B] # KHAROSHTHI LETTER LA
-10A2C ; [.2464.0020.0002.10A2C] # KHAROSHTHI LETTER VA
-10A2D ; [.2465.0020.0002.10A2D] # KHAROSHTHI LETTER SHA
-10A2E ; [.2466.0020.0002.10A2E] # KHAROSHTHI LETTER SSA
-10A2F ; [.2467.0020.0002.10A2F] # KHAROSHTHI LETTER SA
-10A30 ; [.2468.0020.0002.10A30] # KHAROSHTHI LETTER ZA
-10A31 ; [.2469.0020.0002.10A31] # KHAROSHTHI LETTER HA
-10A32 ; [.246A.0020.0002.10A32] # KHAROSHTHI LETTER KKA
-10A33 ; [.246B.0020.0002.10A33] # KHAROSHTHI LETTER TTTHA
-10A3F ; [.246C.0020.0002.10A3F] # KHAROSHTHI VIRAMA
-0E01 ; [.246D.0020.0002.0E01] # THAI CHARACTER KO KAI
-0E40 0E01 ; [.246D.0020.0002.0E01][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KO KAI>
-0E41 0E01 ; [.246D.0020.0002.0E01][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KO KAI>
-0E42 0E01 ; [.246D.0020.0002.0E01][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KO KAI>
-0E43 0E01 ; [.246D.0020.0002.0E01][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KO KAI>
-0E44 0E01 ; [.246D.0020.0002.0E01][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KO KAI>
-0E02 ; [.246E.0020.0002.0E02] # THAI CHARACTER KHO KHAI
-0E40 0E02 ; [.246E.0020.0002.0E02][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHAI>
-0E41 0E02 ; [.246E.0020.0002.0E02][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHAI>
-0E42 0E02 ; [.246E.0020.0002.0E02][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHAI>
-0E43 0E02 ; [.246E.0020.0002.0E02][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHAI>
-0E44 0E02 ; [.246E.0020.0002.0E02][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHAI>
-0E03 ; [.246F.0020.0002.0E03] # THAI CHARACTER KHO KHUAT
-0E40 0E03 ; [.246F.0020.0002.0E03][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHUAT>
-0E41 0E03 ; [.246F.0020.0002.0E03][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHUAT>
-0E42 0E03 ; [.246F.0020.0002.0E03][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHUAT>
-0E43 0E03 ; [.246F.0020.0002.0E03][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHUAT>
-0E44 0E03 ; [.246F.0020.0002.0E03][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHUAT>
-0E04 ; [.2470.0020.0002.0E04] # THAI CHARACTER KHO KHWAI
-0E40 0E04 ; [.2470.0020.0002.0E04][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHWAI>
-0E41 0E04 ; [.2470.0020.0002.0E04][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHWAI>
-0E42 0E04 ; [.2470.0020.0002.0E04][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHWAI>
-0E43 0E04 ; [.2470.0020.0002.0E04][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHWAI>
-0E44 0E04 ; [.2470.0020.0002.0E04][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHWAI>
-0E05 ; [.2471.0020.0002.0E05] # THAI CHARACTER KHO KHON
-0E40 0E05 ; [.2471.0020.0002.0E05][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHON>
-0E41 0E05 ; [.2471.0020.0002.0E05][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHON>
-0E42 0E05 ; [.2471.0020.0002.0E05][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHON>
-0E43 0E05 ; [.2471.0020.0002.0E05][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHON>
-0E44 0E05 ; [.2471.0020.0002.0E05][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHON>
-0E06 ; [.2472.0020.0002.0E06] # THAI CHARACTER KHO RAKHANG
-0E40 0E06 ; [.2472.0020.0002.0E06][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KHO RAKHANG>
-0E41 0E06 ; [.2472.0020.0002.0E06][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO RAKHANG>
-0E42 0E06 ; [.2472.0020.0002.0E06][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KHO RAKHANG>
-0E43 0E06 ; [.2472.0020.0002.0E06][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO RAKHANG>
-0E44 0E06 ; [.2472.0020.0002.0E06][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO RAKHANG>
-0E07 ; [.2473.0020.0002.0E07] # THAI CHARACTER NGO NGU
-0E40 0E07 ; [.2473.0020.0002.0E07][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER NGO NGU>
-0E41 0E07 ; [.2473.0020.0002.0E07][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER NGO NGU>
-0E42 0E07 ; [.2473.0020.0002.0E07][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER NGO NGU>
-0E43 0E07 ; [.2473.0020.0002.0E07][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER NGO NGU>
-0E44 0E07 ; [.2473.0020.0002.0E07][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER NGO NGU>
-0E08 ; [.2474.0020.0002.0E08] # THAI CHARACTER CHO CHAN
-0E40 0E08 ; [.2474.0020.0002.0E08][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHAN>
-0E41 0E08 ; [.2474.0020.0002.0E08][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHAN>
-0E42 0E08 ; [.2474.0020.0002.0E08][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHAN>
-0E43 0E08 ; [.2474.0020.0002.0E08][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHAN>
-0E44 0E08 ; [.2474.0020.0002.0E08][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHAN>
-0E09 ; [.2475.0020.0002.0E09] # THAI CHARACTER CHO CHING
-0E40 0E09 ; [.2475.0020.0002.0E09][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHING>
-0E41 0E09 ; [.2475.0020.0002.0E09][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHING>
-0E42 0E09 ; [.2475.0020.0002.0E09][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHING>
-0E43 0E09 ; [.2475.0020.0002.0E09][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHING>
-0E44 0E09 ; [.2475.0020.0002.0E09][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHING>
-0E0A ; [.2476.0020.0002.0E0A] # THAI CHARACTER CHO CHANG
-0E40 0E0A ; [.2476.0020.0002.0E0A][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHANG>
-0E41 0E0A ; [.2476.0020.0002.0E0A][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHANG>
-0E42 0E0A ; [.2476.0020.0002.0E0A][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHANG>
-0E43 0E0A ; [.2476.0020.0002.0E0A][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHANG>
-0E44 0E0A ; [.2476.0020.0002.0E0A][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHANG>
-0E0B ; [.2477.0020.0002.0E0B] # THAI CHARACTER SO SO
-0E40 0E0B ; [.2477.0020.0002.0E0B][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER SO SO>
-0E41 0E0B ; [.2477.0020.0002.0E0B][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER SO SO>
-0E42 0E0B ; [.2477.0020.0002.0E0B][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER SO SO>
-0E43 0E0B ; [.2477.0020.0002.0E0B][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO SO>
-0E44 0E0B ; [.2477.0020.0002.0E0B][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO SO>
-0E0C ; [.2478.0020.0002.0E0C] # THAI CHARACTER CHO CHOE
-0E40 0E0C ; [.2478.0020.0002.0E0C][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHOE>
-0E41 0E0C ; [.2478.0020.0002.0E0C][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHOE>
-0E42 0E0C ; [.2478.0020.0002.0E0C][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHOE>
-0E43 0E0C ; [.2478.0020.0002.0E0C][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHOE>
-0E44 0E0C ; [.2478.0020.0002.0E0C][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHOE>
-0E0D ; [.2479.0020.0002.0E0D] # THAI CHARACTER YO YING
-0E40 0E0D ; [.2479.0020.0002.0E0D][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER YO YING>
-0E41 0E0D ; [.2479.0020.0002.0E0D][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER YO YING>
-0E42 0E0D ; [.2479.0020.0002.0E0D][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER YO YING>
-0E43 0E0D ; [.2479.0020.0002.0E0D][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER YO YING>
-0E44 0E0D ; [.2479.0020.0002.0E0D][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER YO YING>
-0E0E ; [.247A.0020.0002.0E0E] # THAI CHARACTER DO CHADA
-0E40 0E0E ; [.247A.0020.0002.0E0E][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER DO CHADA>
-0E41 0E0E ; [.247A.0020.0002.0E0E][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER DO CHADA>
-0E42 0E0E ; [.247A.0020.0002.0E0E][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER DO CHADA>
-0E43 0E0E ; [.247A.0020.0002.0E0E][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER DO CHADA>
-0E44 0E0E ; [.247A.0020.0002.0E0E][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER DO CHADA>
-0E0F ; [.247B.0020.0002.0E0F] # THAI CHARACTER TO PATAK
-0E40 0E0F ; [.247B.0020.0002.0E0F][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER TO PATAK>
-0E41 0E0F ; [.247B.0020.0002.0E0F][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER TO PATAK>
-0E42 0E0F ; [.247B.0020.0002.0E0F][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER TO PATAK>
-0E43 0E0F ; [.247B.0020.0002.0E0F][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER TO PATAK>
-0E44 0E0F ; [.247B.0020.0002.0E0F][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER TO PATAK>
-0E10 ; [.247C.0020.0002.0E10] # THAI CHARACTER THO THAN
-0E40 0E10 ; [.247C.0020.0002.0E10][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO THAN>
-0E41 0E10 ; [.247C.0020.0002.0E10][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THAN>
-0E42 0E10 ; [.247C.0020.0002.0E10][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO THAN>
-0E43 0E10 ; [.247C.0020.0002.0E10][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THAN>
-0E44 0E10 ; [.247C.0020.0002.0E10][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THAN>
-0E11 ; [.247D.0020.0002.0E11] # THAI CHARACTER THO NANGMONTHO
-0E40 0E11 ; [.247D.0020.0002.0E11][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO NANGMONTHO>
-0E41 0E11 ; [.247D.0020.0002.0E11][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO NANGMONTHO>
-0E42 0E11 ; [.247D.0020.0002.0E11][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO NANGMONTHO>
-0E43 0E11 ; [.247D.0020.0002.0E11][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO NANGMONTHO>
-0E44 0E11 ; [.247D.0020.0002.0E11][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO NANGMONTHO>
-0E12 ; [.247E.0020.0002.0E12] # THAI CHARACTER THO PHUTHAO
-0E40 0E12 ; [.247E.0020.0002.0E12][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO PHUTHAO>
-0E41 0E12 ; [.247E.0020.0002.0E12][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO PHUTHAO>
-0E42 0E12 ; [.247E.0020.0002.0E12][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO PHUTHAO>
-0E43 0E12 ; [.247E.0020.0002.0E12][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO PHUTHAO>
-0E44 0E12 ; [.247E.0020.0002.0E12][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO PHUTHAO>
-0E13 ; [.247F.0020.0002.0E13] # THAI CHARACTER NO NEN
-0E40 0E13 ; [.247F.0020.0002.0E13][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER NO NEN>
-0E41 0E13 ; [.247F.0020.0002.0E13][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER NO NEN>
-0E42 0E13 ; [.247F.0020.0002.0E13][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER NO NEN>
-0E43 0E13 ; [.247F.0020.0002.0E13][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER NO NEN>
-0E44 0E13 ; [.247F.0020.0002.0E13][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER NO NEN>
-0E14 ; [.2480.0020.0002.0E14] # THAI CHARACTER DO DEK
-0E40 0E14 ; [.2480.0020.0002.0E14][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER DO DEK>
-0E41 0E14 ; [.2480.0020.0002.0E14][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER DO DEK>
-0E42 0E14 ; [.2480.0020.0002.0E14][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER DO DEK>
-0E43 0E14 ; [.2480.0020.0002.0E14][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER DO DEK>
-0E44 0E14 ; [.2480.0020.0002.0E14][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER DO DEK>
-0E15 ; [.2481.0020.0002.0E15] # THAI CHARACTER TO TAO
-0E40 0E15 ; [.2481.0020.0002.0E15][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER TO TAO>
-0E41 0E15 ; [.2481.0020.0002.0E15][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER TO TAO>
-0E42 0E15 ; [.2481.0020.0002.0E15][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER TO TAO>
-0E43 0E15 ; [.2481.0020.0002.0E15][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER TO TAO>
-0E44 0E15 ; [.2481.0020.0002.0E15][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER TO TAO>
-0E16 ; [.2482.0020.0002.0E16] # THAI CHARACTER THO THUNG
-0E40 0E16 ; [.2482.0020.0002.0E16][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO THUNG>
-0E41 0E16 ; [.2482.0020.0002.0E16][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THUNG>
-0E42 0E16 ; [.2482.0020.0002.0E16][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO THUNG>
-0E43 0E16 ; [.2482.0020.0002.0E16][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THUNG>
-0E44 0E16 ; [.2482.0020.0002.0E16][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THUNG>
-0E17 ; [.2483.0020.0002.0E17] # THAI CHARACTER THO THAHAN
-0E40 0E17 ; [.2483.0020.0002.0E17][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO THAHAN>
-0E41 0E17 ; [.2483.0020.0002.0E17][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THAHAN>
-0E42 0E17 ; [.2483.0020.0002.0E17][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO THAHAN>
-0E43 0E17 ; [.2483.0020.0002.0E17][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THAHAN>
-0E44 0E17 ; [.2483.0020.0002.0E17][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THAHAN>
-0E18 ; [.2484.0020.0002.0E18] # THAI CHARACTER THO THONG
-0E40 0E18 ; [.2484.0020.0002.0E18][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO THONG>
-0E41 0E18 ; [.2484.0020.0002.0E18][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THONG>
-0E42 0E18 ; [.2484.0020.0002.0E18][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO THONG>
-0E43 0E18 ; [.2484.0020.0002.0E18][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THONG>
-0E44 0E18 ; [.2484.0020.0002.0E18][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THONG>
-0E19 ; [.2485.0020.0002.0E19] # THAI CHARACTER NO NU
-0E40 0E19 ; [.2485.0020.0002.0E19][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER NO NU>
-0E41 0E19 ; [.2485.0020.0002.0E19][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER NO NU>
-0E42 0E19 ; [.2485.0020.0002.0E19][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER NO NU>
-0E43 0E19 ; [.2485.0020.0002.0E19][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER NO NU>
-0E44 0E19 ; [.2485.0020.0002.0E19][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER NO NU>
-0E1A ; [.2486.0020.0002.0E1A] # THAI CHARACTER BO BAIMAI
-0E40 0E1A ; [.2486.0020.0002.0E1A][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER BO BAIMAI>
-0E41 0E1A ; [.2486.0020.0002.0E1A][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER BO BAIMAI>
-0E42 0E1A ; [.2486.0020.0002.0E1A][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER BO BAIMAI>
-0E43 0E1A ; [.2486.0020.0002.0E1A][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER BO BAIMAI>
-0E44 0E1A ; [.2486.0020.0002.0E1A][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER BO BAIMAI>
-0E1B ; [.2487.0020.0002.0E1B] # THAI CHARACTER PO PLA
-0E40 0E1B ; [.2487.0020.0002.0E1B][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER PO PLA>
-0E41 0E1B ; [.2487.0020.0002.0E1B][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER PO PLA>
-0E42 0E1B ; [.2487.0020.0002.0E1B][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER PO PLA>
-0E43 0E1B ; [.2487.0020.0002.0E1B][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PO PLA>
-0E44 0E1B ; [.2487.0020.0002.0E1B][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PO PLA>
-0E1C ; [.2488.0020.0002.0E1C] # THAI CHARACTER PHO PHUNG
-0E40 0E1C ; [.2488.0020.0002.0E1C][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER PHO PHUNG>
-0E41 0E1C ; [.2488.0020.0002.0E1C][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER PHO PHUNG>
-0E42 0E1C ; [.2488.0020.0002.0E1C][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER PHO PHUNG>
-0E43 0E1C ; [.2488.0020.0002.0E1C][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PHO PHUNG>
-0E44 0E1C ; [.2488.0020.0002.0E1C][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PHO PHUNG>
-0E1D ; [.2489.0020.0002.0E1D] # THAI CHARACTER FO FA
-0E40 0E1D ; [.2489.0020.0002.0E1D][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER FO FA>
-0E41 0E1D ; [.2489.0020.0002.0E1D][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER FO FA>
-0E42 0E1D ; [.2489.0020.0002.0E1D][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER FO FA>
-0E43 0E1D ; [.2489.0020.0002.0E1D][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER FO FA>
-0E44 0E1D ; [.2489.0020.0002.0E1D][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER FO FA>
-0E1E ; [.248A.0020.0002.0E1E] # THAI CHARACTER PHO PHAN
-0E40 0E1E ; [.248A.0020.0002.0E1E][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER PHO PHAN>
-0E41 0E1E ; [.248A.0020.0002.0E1E][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER PHO PHAN>
-0E42 0E1E ; [.248A.0020.0002.0E1E][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER PHO PHAN>
-0E43 0E1E ; [.248A.0020.0002.0E1E][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PHO PHAN>
-0E44 0E1E ; [.248A.0020.0002.0E1E][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PHO PHAN>
-0E1F ; [.248B.0020.0002.0E1F] # THAI CHARACTER FO FAN
-0E40 0E1F ; [.248B.0020.0002.0E1F][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER FO FAN>
-0E41 0E1F ; [.248B.0020.0002.0E1F][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER FO FAN>
-0E42 0E1F ; [.248B.0020.0002.0E1F][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER FO FAN>
-0E43 0E1F ; [.248B.0020.0002.0E1F][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER FO FAN>
-0E44 0E1F ; [.248B.0020.0002.0E1F][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER FO FAN>
-0E20 ; [.248C.0020.0002.0E20] # THAI CHARACTER PHO SAMPHAO
-0E40 0E20 ; [.248C.0020.0002.0E20][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER PHO SAMPHAO>
-0E41 0E20 ; [.248C.0020.0002.0E20][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER PHO SAMPHAO>
-0E42 0E20 ; [.248C.0020.0002.0E20][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER PHO SAMPHAO>
-0E43 0E20 ; [.248C.0020.0002.0E20][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PHO SAMPHAO>
-0E44 0E20 ; [.248C.0020.0002.0E20][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PHO SAMPHAO>
-0E21 ; [.248D.0020.0002.0E21] # THAI CHARACTER MO MA
-0E40 0E21 ; [.248D.0020.0002.0E21][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER MO MA>
-0E41 0E21 ; [.248D.0020.0002.0E21][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER MO MA>
-0E42 0E21 ; [.248D.0020.0002.0E21][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER MO MA>
-0E43 0E21 ; [.248D.0020.0002.0E21][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER MO MA>
-0E44 0E21 ; [.248D.0020.0002.0E21][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER MO MA>
-0E22 ; [.248E.0020.0002.0E22] # THAI CHARACTER YO YAK
-0E40 0E22 ; [.248E.0020.0002.0E22][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER YO YAK>
-0E41 0E22 ; [.248E.0020.0002.0E22][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER YO YAK>
-0E42 0E22 ; [.248E.0020.0002.0E22][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER YO YAK>
-0E43 0E22 ; [.248E.0020.0002.0E22][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER YO YAK>
-0E44 0E22 ; [.248E.0020.0002.0E22][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER YO YAK>
-0E23 ; [.248F.0020.0002.0E23] # THAI CHARACTER RO RUA
-0E40 0E23 ; [.248F.0020.0002.0E23][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER RO RUA>
-0E41 0E23 ; [.248F.0020.0002.0E23][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER RO RUA>
-0E42 0E23 ; [.248F.0020.0002.0E23][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER RO RUA>
-0E43 0E23 ; [.248F.0020.0002.0E23][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER RO RUA>
-0E44 0E23 ; [.248F.0020.0002.0E23][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER RO RUA>
-0E24 ; [.2490.0020.0002.0E24] # THAI CHARACTER RU
-0E40 0E24 ; [.2490.0020.0002.0E24][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER RU>
-0E41 0E24 ; [.2490.0020.0002.0E24][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER RU>
-0E42 0E24 ; [.2490.0020.0002.0E24][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER RU>
-0E43 0E24 ; [.2490.0020.0002.0E24][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER RU>
-0E44 0E24 ; [.2490.0020.0002.0E24][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER RU>
-0E25 ; [.2491.0020.0002.0E25] # THAI CHARACTER LO LING
-0E40 0E25 ; [.2491.0020.0002.0E25][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER LO LING>
-0E41 0E25 ; [.2491.0020.0002.0E25][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER LO LING>
-0E42 0E25 ; [.2491.0020.0002.0E25][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER LO LING>
-0E43 0E25 ; [.2491.0020.0002.0E25][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER LO LING>
-0E44 0E25 ; [.2491.0020.0002.0E25][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER LO LING>
-0E26 ; [.2492.0020.0002.0E26] # THAI CHARACTER LU
-0E40 0E26 ; [.2492.0020.0002.0E26][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER LU>
-0E41 0E26 ; [.2492.0020.0002.0E26][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER LU>
-0E42 0E26 ; [.2492.0020.0002.0E26][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER LU>
-0E43 0E26 ; [.2492.0020.0002.0E26][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER LU>
-0E44 0E26 ; [.2492.0020.0002.0E26][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER LU>
-0E27 ; [.2493.0020.0002.0E27] # THAI CHARACTER WO WAEN
-0E40 0E27 ; [.2493.0020.0002.0E27][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER WO WAEN>
-0E41 0E27 ; [.2493.0020.0002.0E27][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER WO WAEN>
-0E42 0E27 ; [.2493.0020.0002.0E27][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER WO WAEN>
-0E43 0E27 ; [.2493.0020.0002.0E27][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER WO WAEN>
-0E44 0E27 ; [.2493.0020.0002.0E27][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER WO WAEN>
-0E28 ; [.2494.0020.0002.0E28] # THAI CHARACTER SO SALA
-0E40 0E28 ; [.2494.0020.0002.0E28][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER SO SALA>
-0E41 0E28 ; [.2494.0020.0002.0E28][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER SO SALA>
-0E42 0E28 ; [.2494.0020.0002.0E28][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER SO SALA>
-0E43 0E28 ; [.2494.0020.0002.0E28][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO SALA>
-0E44 0E28 ; [.2494.0020.0002.0E28][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO SALA>
-0E29 ; [.2495.0020.0002.0E29] # THAI CHARACTER SO RUSI
-0E40 0E29 ; [.2495.0020.0002.0E29][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER SO RUSI>
-0E41 0E29 ; [.2495.0020.0002.0E29][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER SO RUSI>
-0E42 0E29 ; [.2495.0020.0002.0E29][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER SO RUSI>
-0E43 0E29 ; [.2495.0020.0002.0E29][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO RUSI>
-0E44 0E29 ; [.2495.0020.0002.0E29][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO RUSI>
-0E2A ; [.2496.0020.0002.0E2A] # THAI CHARACTER SO SUA
-0E40 0E2A ; [.2496.0020.0002.0E2A][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER SO SUA>
-0E41 0E2A ; [.2496.0020.0002.0E2A][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER SO SUA>
-0E42 0E2A ; [.2496.0020.0002.0E2A][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER SO SUA>
-0E43 0E2A ; [.2496.0020.0002.0E2A][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO SUA>
-0E44 0E2A ; [.2496.0020.0002.0E2A][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO SUA>
-0E2B ; [.2497.0020.0002.0E2B] # THAI CHARACTER HO HIP
-0E40 0E2B ; [.2497.0020.0002.0E2B][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER HO HIP>
-0E41 0E2B ; [.2497.0020.0002.0E2B][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER HO HIP>
-0E42 0E2B ; [.2497.0020.0002.0E2B][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER HO HIP>
-0E43 0E2B ; [.2497.0020.0002.0E2B][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER HO HIP>
-0E44 0E2B ; [.2497.0020.0002.0E2B][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER HO HIP>
-0E2C ; [.2498.0020.0002.0E2C] # THAI CHARACTER LO CHULA
-0E40 0E2C ; [.2498.0020.0002.0E2C][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER LO CHULA>
-0E41 0E2C ; [.2498.0020.0002.0E2C][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER LO CHULA>
-0E42 0E2C ; [.2498.0020.0002.0E2C][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER LO CHULA>
-0E43 0E2C ; [.2498.0020.0002.0E2C][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER LO CHULA>
-0E44 0E2C ; [.2498.0020.0002.0E2C][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER LO CHULA>
-0E2D ; [.2499.0020.0002.0E2D] # THAI CHARACTER O ANG
-0E40 0E2D ; [.2499.0020.0002.0E2D][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER O ANG>
-0E41 0E2D ; [.2499.0020.0002.0E2D][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER O ANG>
-0E42 0E2D ; [.2499.0020.0002.0E2D][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER O ANG>
-0E43 0E2D ; [.2499.0020.0002.0E2D][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER O ANG>
-0E44 0E2D ; [.2499.0020.0002.0E2D][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER O ANG>
-0E2E ; [.249A.0020.0002.0E2E] # THAI CHARACTER HO NOKHUK
-0E40 0E2E ; [.249A.0020.0002.0E2E][.24A7.0020.001F.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER HO NOKHUK>
-0E41 0E2E ; [.249A.0020.0002.0E2E][.24A8.0020.001F.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER HO NOKHUK>
-0E42 0E2E ; [.249A.0020.0002.0E2E][.24A9.0020.001F.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER HO NOKHUK>
-0E43 0E2E ; [.249A.0020.0002.0E2E][.24AA.0020.001F.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER HO NOKHUK>
-0E44 0E2E ; [.249A.0020.0002.0E2E][.24AB.0020.001F.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER HO NOKHUK>
-0E2F ; [.249B.0020.0002.0E2F] # THAI CHARACTER PAIYANNOI
-0E30 ; [.249C.0020.0002.0E30] # THAI CHARACTER SARA A
-0E31 ; [.249D.0020.0002.0E31] # THAI CHARACTER MAI HAN-AKAT
-0E32 ; [.249E.0020.0002.0E32] # THAI CHARACTER SARA AA
-0E33 ; [.249F.0020.0002.0E33] # THAI CHARACTER SARA AM
-0E4D 0E32 ; [.249F.0020.0002.0E33] # THAI CHARACTER SARA AM
-0E34 ; [.24A0.0020.0002.0E34] # THAI CHARACTER SARA I
-0E35 ; [.24A1.0020.0002.0E35] # THAI CHARACTER SARA II
-0E36 ; [.24A2.0020.0002.0E36] # THAI CHARACTER SARA UE
-0E37 ; [.24A3.0020.0002.0E37] # THAI CHARACTER SARA UEE
-0E38 ; [.24A4.0020.0002.0E38] # THAI CHARACTER SARA U
-0E39 ; [.24A5.0020.0002.0E39] # THAI CHARACTER SARA UU
-0E3A ; [.24A6.0020.0002.0E3A] # THAI CHARACTER PHINTHU
-0E40 ; [.24A7.0020.0002.0E40] # THAI CHARACTER SARA E
-0E41 ; [.24A8.0020.0002.0E41] # THAI CHARACTER SARA AE
-0E42 ; [.24A9.0020.0002.0E42] # THAI CHARACTER SARA O
-0E43 ; [.24AA.0020.0002.0E43] # THAI CHARACTER SARA AI MAIMUAN
-0E44 ; [.24AB.0020.0002.0E44] # THAI CHARACTER SARA AI MAIMALAI
-0E45 ; [.24AC.0020.0002.0E45] # THAI CHARACTER LAKKHANGYAO
-0EDE ; [.24AD.0020.0002.0EDE] # LAO LETTER KHMU GO
-0E81 ; [.24AE.0020.0002.0E81] # LAO LETTER KO
-0EC0 0E81 ; [.24AE.0020.0002.0E81][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER KO>
-0EC1 0E81 ; [.24AE.0020.0002.0E81][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER KO>
-0EC2 0E81 ; [.24AE.0020.0002.0E81][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER KO>
-0EC3 0E81 ; [.24AE.0020.0002.0E81][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER KO>
-0EC4 0E81 ; [.24AE.0020.0002.0E81][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER KO>
-0E82 ; [.24AF.0020.0002.0E82] # LAO LETTER KHO SUNG
-0EC0 0E82 ; [.24AF.0020.0002.0E82][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER KHO SUNG>
-0EC1 0E82 ; [.24AF.0020.0002.0E82][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER KHO SUNG>
-0EC2 0E82 ; [.24AF.0020.0002.0E82][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER KHO SUNG>
-0EC3 0E82 ; [.24AF.0020.0002.0E82][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER KHO SUNG>
-0EC4 0E82 ; [.24AF.0020.0002.0E82][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER KHO SUNG>
-0E84 ; [.24B0.0020.0002.0E84] # LAO LETTER KHO TAM
-0EC0 0E84 ; [.24B0.0020.0002.0E84][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER KHO TAM>
-0EC1 0E84 ; [.24B0.0020.0002.0E84][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER KHO TAM>
-0EC2 0E84 ; [.24B0.0020.0002.0E84][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER KHO TAM>
-0EC3 0E84 ; [.24B0.0020.0002.0E84][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER KHO TAM>
-0EC4 0E84 ; [.24B0.0020.0002.0E84][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER KHO TAM>
-0E87 ; [.24B1.0020.0002.0E87] # LAO LETTER NGO
-0EC0 0E87 ; [.24B1.0020.0002.0E87][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER NGO>
-0EC1 0E87 ; [.24B1.0020.0002.0E87][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER NGO>
-0EC2 0E87 ; [.24B1.0020.0002.0E87][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER NGO>
-0EC3 0E87 ; [.24B1.0020.0002.0E87][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER NGO>
-0EC4 0E87 ; [.24B1.0020.0002.0E87][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER NGO>
-0E88 ; [.24B2.0020.0002.0E88] # LAO LETTER CO
-0EC0 0E88 ; [.24B2.0020.0002.0E88][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER CO>
-0EC1 0E88 ; [.24B2.0020.0002.0E88][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER CO>
-0EC2 0E88 ; [.24B2.0020.0002.0E88][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER CO>
-0EC3 0E88 ; [.24B2.0020.0002.0E88][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER CO>
-0EC4 0E88 ; [.24B2.0020.0002.0E88][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER CO>
-0EAA ; [.24B3.0020.0002.0EAA] # LAO LETTER SO SUNG
-0EC0 0EAA ; [.24B3.0020.0002.0EAA][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER SO SUNG>
-0EC1 0EAA ; [.24B3.0020.0002.0EAA][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER SO SUNG>
-0EC2 0EAA ; [.24B3.0020.0002.0EAA][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER SO SUNG>
-0EC3 0EAA ; [.24B3.0020.0002.0EAA][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER SO SUNG>
-0EC4 0EAA ; [.24B3.0020.0002.0EAA][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER SO SUNG>
-0E8A ; [.24B4.0020.0002.0E8A] # LAO LETTER SO TAM
-0EC0 0E8A ; [.24B4.0020.0002.0E8A][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER SO TAM>
-0EC1 0E8A ; [.24B4.0020.0002.0E8A][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER SO TAM>
-0EC2 0E8A ; [.24B4.0020.0002.0E8A][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER SO TAM>
-0EC3 0E8A ; [.24B4.0020.0002.0E8A][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER SO TAM>
-0EC4 0E8A ; [.24B4.0020.0002.0E8A][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER SO TAM>
-0EDF ; [.24B5.0020.0002.0EDF] # LAO LETTER KHMU NYO
-0E8D ; [.24B6.0020.0002.0E8D] # LAO LETTER NYO
-0EC0 0E8D ; [.24B6.0020.0002.0E8D][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER NYO>
-0EC1 0E8D ; [.24B6.0020.0002.0E8D][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER NYO>
-0EC2 0E8D ; [.24B6.0020.0002.0E8D][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER NYO>
-0EC3 0E8D ; [.24B6.0020.0002.0E8D][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER NYO>
-0EC4 0E8D ; [.24B6.0020.0002.0E8D][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER NYO>
-0E94 ; [.24B7.0020.0002.0E94] # LAO LETTER DO
-0EC0 0E94 ; [.24B7.0020.0002.0E94][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER DO>
-0EC1 0E94 ; [.24B7.0020.0002.0E94][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER DO>
-0EC2 0E94 ; [.24B7.0020.0002.0E94][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER DO>
-0EC3 0E94 ; [.24B7.0020.0002.0E94][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER DO>
-0EC4 0E94 ; [.24B7.0020.0002.0E94][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER DO>
-0E95 ; [.24B8.0020.0002.0E95] # LAO LETTER TO
-0EC0 0E95 ; [.24B8.0020.0002.0E95][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER TO>
-0EC1 0E95 ; [.24B8.0020.0002.0E95][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER TO>
-0EC2 0E95 ; [.24B8.0020.0002.0E95][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER TO>
-0EC3 0E95 ; [.24B8.0020.0002.0E95][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER TO>
-0EC4 0E95 ; [.24B8.0020.0002.0E95][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER TO>
-0E96 ; [.24B9.0020.0002.0E96] # LAO LETTER THO SUNG
-0EC0 0E96 ; [.24B9.0020.0002.0E96][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER THO SUNG>
-0EC1 0E96 ; [.24B9.0020.0002.0E96][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER THO SUNG>
-0EC2 0E96 ; [.24B9.0020.0002.0E96][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER THO SUNG>
-0EC3 0E96 ; [.24B9.0020.0002.0E96][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER THO SUNG>
-0EC4 0E96 ; [.24B9.0020.0002.0E96][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER THO SUNG>
-0E97 ; [.24BA.0020.0002.0E97] # LAO LETTER THO TAM
-0EC0 0E97 ; [.24BA.0020.0002.0E97][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER THO TAM>
-0EC1 0E97 ; [.24BA.0020.0002.0E97][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER THO TAM>
-0EC2 0E97 ; [.24BA.0020.0002.0E97][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER THO TAM>
-0EC3 0E97 ; [.24BA.0020.0002.0E97][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER THO TAM>
-0EC4 0E97 ; [.24BA.0020.0002.0E97][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER THO TAM>
-0E99 ; [.24BB.0020.0002.0E99] # LAO LETTER NO
-0EC0 0E99 ; [.24BB.0020.0002.0E99][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER NO>
-0EC1 0E99 ; [.24BB.0020.0002.0E99][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER NO>
-0EC2 0E99 ; [.24BB.0020.0002.0E99][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER NO>
-0EC3 0E99 ; [.24BB.0020.0002.0E99][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER NO>
-0EC4 0E99 ; [.24BB.0020.0002.0E99][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER NO>
-0E9A ; [.24BC.0020.0002.0E9A] # LAO LETTER BO
-0EC0 0E9A ; [.24BC.0020.0002.0E9A][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER BO>
-0EC1 0E9A ; [.24BC.0020.0002.0E9A][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER BO>
-0EC2 0E9A ; [.24BC.0020.0002.0E9A][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER BO>
-0EC3 0E9A ; [.24BC.0020.0002.0E9A][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER BO>
-0EC4 0E9A ; [.24BC.0020.0002.0E9A][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER BO>
-0E9B ; [.24BD.0020.0002.0E9B] # LAO LETTER PO
-0EC0 0E9B ; [.24BD.0020.0002.0E9B][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER PO>
-0EC1 0E9B ; [.24BD.0020.0002.0E9B][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER PO>
-0EC2 0E9B ; [.24BD.0020.0002.0E9B][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER PO>
-0EC3 0E9B ; [.24BD.0020.0002.0E9B][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER PO>
-0EC4 0E9B ; [.24BD.0020.0002.0E9B][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER PO>
-0E9C ; [.24BE.0020.0002.0E9C] # LAO LETTER PHO SUNG
-0EC0 0E9C ; [.24BE.0020.0002.0E9C][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER PHO SUNG>
-0EC1 0E9C ; [.24BE.0020.0002.0E9C][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER PHO SUNG>
-0EC2 0E9C ; [.24BE.0020.0002.0E9C][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER PHO SUNG>
-0EC3 0E9C ; [.24BE.0020.0002.0E9C][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER PHO SUNG>
-0EC4 0E9C ; [.24BE.0020.0002.0E9C][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER PHO SUNG>
-0E9D ; [.24BF.0020.0002.0E9D] # LAO LETTER FO TAM
-0EC0 0E9D ; [.24BF.0020.0002.0E9D][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER FO TAM>
-0EC1 0E9D ; [.24BF.0020.0002.0E9D][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER FO TAM>
-0EC2 0E9D ; [.24BF.0020.0002.0E9D][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER FO TAM>
-0EC3 0E9D ; [.24BF.0020.0002.0E9D][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER FO TAM>
-0EC4 0E9D ; [.24BF.0020.0002.0E9D][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER FO TAM>
-0E9E ; [.24C0.0020.0002.0E9E] # LAO LETTER PHO TAM
-0EC0 0E9E ; [.24C0.0020.0002.0E9E][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER PHO TAM>
-0EC1 0E9E ; [.24C0.0020.0002.0E9E][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER PHO TAM>
-0EC2 0E9E ; [.24C0.0020.0002.0E9E][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER PHO TAM>
-0EC3 0E9E ; [.24C0.0020.0002.0E9E][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER PHO TAM>
-0EC4 0E9E ; [.24C0.0020.0002.0E9E][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER PHO TAM>
-0E9F ; [.24C1.0020.0002.0E9F] # LAO LETTER FO SUNG
-0EC0 0E9F ; [.24C1.0020.0002.0E9F][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER FO SUNG>
-0EC1 0E9F ; [.24C1.0020.0002.0E9F][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER FO SUNG>
-0EC2 0E9F ; [.24C1.0020.0002.0E9F][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER FO SUNG>
-0EC3 0E9F ; [.24C1.0020.0002.0E9F][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER FO SUNG>
-0EC4 0E9F ; [.24C1.0020.0002.0E9F][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER FO SUNG>
-0EA1 ; [.24C2.0020.0002.0EA1] # LAO LETTER MO
-0EC0 0EA1 ; [.24C2.0020.0002.0EA1][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER MO>
-0EC1 0EA1 ; [.24C2.0020.0002.0EA1][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER MO>
-0EC2 0EA1 ; [.24C2.0020.0002.0EA1][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER MO>
-0EC3 0EA1 ; [.24C2.0020.0002.0EA1][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER MO>
-0EC4 0EA1 ; [.24C2.0020.0002.0EA1][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER MO>
-0EA2 ; [.24C3.0020.0002.0EA2] # LAO LETTER YO
-0EC0 0EA2 ; [.24C3.0020.0002.0EA2][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER YO>
-0EC1 0EA2 ; [.24C3.0020.0002.0EA2][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER YO>
-0EC2 0EA2 ; [.24C3.0020.0002.0EA2][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER YO>
-0EC3 0EA2 ; [.24C3.0020.0002.0EA2][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER YO>
-0EC4 0EA2 ; [.24C3.0020.0002.0EA2][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER YO>
-0EA3 ; [.24C4.0020.0002.0EA3] # LAO LETTER LO LING
-0EC0 0EA3 ; [.24C4.0020.0002.0EA3][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER LO LING>
-0EC1 0EA3 ; [.24C4.0020.0002.0EA3][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER LO LING>
-0EC2 0EA3 ; [.24C4.0020.0002.0EA3][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER LO LING>
-0EC3 0EA3 ; [.24C4.0020.0002.0EA3][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER LO LING>
-0EC4 0EA3 ; [.24C4.0020.0002.0EA3][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER LO LING>
-0EA5 ; [.24C5.0020.0002.0EA5] # LAO LETTER LO LOOT
-0EC0 0EA5 ; [.24C5.0020.0002.0EA5][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER LO LOOT>
-0EC1 0EA5 ; [.24C5.0020.0002.0EA5][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER LO LOOT>
-0EC2 0EA5 ; [.24C5.0020.0002.0EA5][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER LO LOOT>
-0EC3 0EA5 ; [.24C5.0020.0002.0EA5][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER LO LOOT>
-0EC4 0EA5 ; [.24C5.0020.0002.0EA5][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER LO LOOT>
-0EA7 ; [.24C6.0020.0002.0EA7] # LAO LETTER WO
-0EC0 0EA7 ; [.24C6.0020.0002.0EA7][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER WO>
-0EC1 0EA7 ; [.24C6.0020.0002.0EA7][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER WO>
-0EC2 0EA7 ; [.24C6.0020.0002.0EA7][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER WO>
-0EC3 0EA7 ; [.24C6.0020.0002.0EA7][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER WO>
-0EC4 0EA7 ; [.24C6.0020.0002.0EA7][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER WO>
-0EAB ; [.24C7.0020.0002.0EAB] # LAO LETTER HO SUNG
-0EDC ; [.24C7.0020.0004.0EDC][.24BB.0020.0004.0EDC] # LAO HO NO
-0EC0 0EDC ; [.24C7.0020.0004.0EDC][.24BB.0020.0004.0EDC][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO HO NO>
-0EC1 0EDC ; [.24C7.0020.0004.0EDC][.24BB.0020.0004.0EDC][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO HO NO>
-0EC2 0EDC ; [.24C7.0020.0004.0EDC][.24BB.0020.0004.0EDC][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO HO NO>
-0EC3 0EDC ; [.24C7.0020.0004.0EDC][.24BB.0020.0004.0EDC][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO HO NO>
-0EC4 0EDC ; [.24C7.0020.0004.0EDC][.24BB.0020.0004.0EDC][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO HO NO>
-0EDD ; [.24C7.0020.0004.0EDD][.24C2.0020.0004.0EDD] # LAO HO MO
-0EC0 0EDD ; [.24C7.0020.0004.0EDD][.24C2.0020.0004.0EDD][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO HO MO>
-0EC1 0EDD ; [.24C7.0020.0004.0EDD][.24C2.0020.0004.0EDD][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO HO MO>
-0EC2 0EDD ; [.24C7.0020.0004.0EDD][.24C2.0020.0004.0EDD][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO HO MO>
-0EC3 0EDD ; [.24C7.0020.0004.0EDD][.24C2.0020.0004.0EDD][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO HO MO>
-0EC4 0EDD ; [.24C7.0020.0004.0EDD][.24C2.0020.0004.0EDD][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO HO MO>
-0EC0 0EAB ; [.24C7.0020.0002.0EAB][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER HO SUNG>
-0EC1 0EAB ; [.24C7.0020.0002.0EAB][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER HO SUNG>
-0EC2 0EAB ; [.24C7.0020.0002.0EAB][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER HO SUNG>
-0EC3 0EAB ; [.24C7.0020.0002.0EAB][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER HO SUNG>
-0EC4 0EAB ; [.24C7.0020.0002.0EAB][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER HO SUNG>
-0EAD ; [.24C8.0020.0002.0EAD] # LAO LETTER O
-0EC0 0EAD ; [.24C8.0020.0002.0EAD][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER O>
-0EC1 0EAD ; [.24C8.0020.0002.0EAD][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER O>
-0EC2 0EAD ; [.24C8.0020.0002.0EAD][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER O>
-0EC3 0EAD ; [.24C8.0020.0002.0EAD][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER O>
-0EC4 0EAD ; [.24C8.0020.0002.0EAD][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER O>
-0EAE ; [.24C9.0020.0002.0EAE] # LAO LETTER HO TAM
-0EC0 0EAE ; [.24C9.0020.0002.0EAE][.24D8.0020.001F.0EC0] # <LAO VOWEL SIGN E, LAO LETTER HO TAM>
-0EC1 0EAE ; [.24C9.0020.0002.0EAE][.24D9.0020.001F.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER HO TAM>
-0EC2 0EAE ; [.24C9.0020.0002.0EAE][.24DA.0020.001F.0EC2] # <LAO VOWEL SIGN O, LAO LETTER HO TAM>
-0EC3 0EAE ; [.24C9.0020.0002.0EAE][.24DB.0020.001F.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER HO TAM>
-0EC4 0EAE ; [.24C9.0020.0002.0EAE][.24DC.0020.001F.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER HO TAM>
-0EAF ; [.24CA.0020.0002.0EAF] # LAO ELLIPSIS
-0EB0 ; [.24CB.0020.0002.0EB0] # LAO VOWEL SIGN A
-0EB1 ; [.24CC.0020.0002.0EB1] # LAO VOWEL SIGN MAI KAN
-0EB2 ; [.24CD.0020.0002.0EB2] # LAO VOWEL SIGN AA
-0EB3 ; [.24CE.0020.0002.0EB3] # LAO VOWEL SIGN AM
-0ECD 0EB2 ; [.24CE.0020.0002.0EB3] # LAO VOWEL SIGN AM
-0EB4 ; [.24CF.0020.0002.0EB4] # LAO VOWEL SIGN I
-0EB5 ; [.24D0.0020.0002.0EB5] # LAO VOWEL SIGN II
-0EB6 ; [.24D1.0020.0002.0EB6] # LAO VOWEL SIGN Y
-0EB7 ; [.24D2.0020.0002.0EB7] # LAO VOWEL SIGN YY
-0EB8 ; [.24D3.0020.0002.0EB8] # LAO VOWEL SIGN U
-0EB9 ; [.24D4.0020.0002.0EB9] # LAO VOWEL SIGN UU
-0EBB ; [.24D5.0020.0002.0EBB] # LAO VOWEL SIGN MAI KON
-0EBC ; [.24D6.0020.0002.0EBC] # LAO SEMIVOWEL SIGN LO
-0EBD ; [.24D7.0020.0002.0EBD] # LAO SEMIVOWEL SIGN NYO
-0EC0 ; [.24D8.0020.0002.0EC0] # LAO VOWEL SIGN E
-0EC1 ; [.24D9.0020.0002.0EC1] # LAO VOWEL SIGN EI
-0EC2 ; [.24DA.0020.0002.0EC2] # LAO VOWEL SIGN O
-0EC3 ; [.24DB.0020.0002.0EC3] # LAO VOWEL SIGN AY
-0EC4 ; [.24DC.0020.0002.0EC4] # LAO VOWEL SIGN AI
-AA80 ; [.24DD.0020.0002.AA80] # TAI VIET LETTER LOW KO
-AAB5 AA80 ; [.24DD.0020.0002.AA80][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW KO>
-AAB6 AA80 ; [.24DD.0020.0002.AA80][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW KO>
-AAB9 AA80 ; [.24DD.0020.0002.AA80][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW KO>
-AABB AA80 ; [.24DD.0020.0002.AA80][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW KO>
-AABC AA80 ; [.24DD.0020.0002.AA80][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW KO>
-AA81 ; [.24DE.0020.0002.AA81] # TAI VIET LETTER HIGH KO
-AAB5 AA81 ; [.24DE.0020.0002.AA81][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH KO>
-AAB6 AA81 ; [.24DE.0020.0002.AA81][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH KO>
-AAB9 AA81 ; [.24DE.0020.0002.AA81][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH KO>
-AABB AA81 ; [.24DE.0020.0002.AA81][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH KO>
-AABC AA81 ; [.24DE.0020.0002.AA81][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH KO>
-AA82 ; [.24DF.0020.0002.AA82] # TAI VIET LETTER LOW KHO
-AAB5 AA82 ; [.24DF.0020.0002.AA82][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW KHO>
-AAB6 AA82 ; [.24DF.0020.0002.AA82][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW KHO>
-AAB9 AA82 ; [.24DF.0020.0002.AA82][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW KHO>
-AABB AA82 ; [.24DF.0020.0002.AA82][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW KHO>
-AABC AA82 ; [.24DF.0020.0002.AA82][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW KHO>
-AA83 ; [.24E0.0020.0002.AA83] # TAI VIET LETTER HIGH KHO
-AAB5 AA83 ; [.24E0.0020.0002.AA83][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH KHO>
-AAB6 AA83 ; [.24E0.0020.0002.AA83][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH KHO>
-AAB9 AA83 ; [.24E0.0020.0002.AA83][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH KHO>
-AABB AA83 ; [.24E0.0020.0002.AA83][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH KHO>
-AABC AA83 ; [.24E0.0020.0002.AA83][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH KHO>
-AA84 ; [.24E1.0020.0002.AA84] # TAI VIET LETTER LOW KHHO
-AAB5 AA84 ; [.24E1.0020.0002.AA84][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW KHHO>
-AAB6 AA84 ; [.24E1.0020.0002.AA84][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW KHHO>
-AAB9 AA84 ; [.24E1.0020.0002.AA84][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW KHHO>
-AABB AA84 ; [.24E1.0020.0002.AA84][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW KHHO>
-AABC AA84 ; [.24E1.0020.0002.AA84][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW KHHO>
-AA85 ; [.24E2.0020.0002.AA85] # TAI VIET LETTER HIGH KHHO
-AAB5 AA85 ; [.24E2.0020.0002.AA85][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH KHHO>
-AAB6 AA85 ; [.24E2.0020.0002.AA85][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH KHHO>
-AAB9 AA85 ; [.24E2.0020.0002.AA85][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH KHHO>
-AABB AA85 ; [.24E2.0020.0002.AA85][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH KHHO>
-AABC AA85 ; [.24E2.0020.0002.AA85][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH KHHO>
-AA86 ; [.24E3.0020.0002.AA86] # TAI VIET LETTER LOW GO
-AAB5 AA86 ; [.24E3.0020.0002.AA86][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW GO>
-AAB6 AA86 ; [.24E3.0020.0002.AA86][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW GO>
-AAB9 AA86 ; [.24E3.0020.0002.AA86][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW GO>
-AABB AA86 ; [.24E3.0020.0002.AA86][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW GO>
-AABC AA86 ; [.24E3.0020.0002.AA86][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW GO>
-AA87 ; [.24E4.0020.0002.AA87] # TAI VIET LETTER HIGH GO
-AAB5 AA87 ; [.24E4.0020.0002.AA87][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH GO>
-AAB6 AA87 ; [.24E4.0020.0002.AA87][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH GO>
-AAB9 AA87 ; [.24E4.0020.0002.AA87][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH GO>
-AABB AA87 ; [.24E4.0020.0002.AA87][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH GO>
-AABC AA87 ; [.24E4.0020.0002.AA87][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH GO>
-AA88 ; [.24E5.0020.0002.AA88] # TAI VIET LETTER LOW NGO
-AAB5 AA88 ; [.24E5.0020.0002.AA88][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW NGO>
-AAB6 AA88 ; [.24E5.0020.0002.AA88][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW NGO>
-AAB9 AA88 ; [.24E5.0020.0002.AA88][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW NGO>
-AABB AA88 ; [.24E5.0020.0002.AA88][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW NGO>
-AABC AA88 ; [.24E5.0020.0002.AA88][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW NGO>
-AA89 ; [.24E6.0020.0002.AA89] # TAI VIET LETTER HIGH NGO
-AAB5 AA89 ; [.24E6.0020.0002.AA89][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH NGO>
-AAB6 AA89 ; [.24E6.0020.0002.AA89][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH NGO>
-AAB9 AA89 ; [.24E6.0020.0002.AA89][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH NGO>
-AABB AA89 ; [.24E6.0020.0002.AA89][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH NGO>
-AABC AA89 ; [.24E6.0020.0002.AA89][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH NGO>
-AA8A ; [.24E7.0020.0002.AA8A] # TAI VIET LETTER LOW CO
-AAB5 AA8A ; [.24E7.0020.0002.AA8A][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW CO>
-AAB6 AA8A ; [.24E7.0020.0002.AA8A][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW CO>
-AAB9 AA8A ; [.24E7.0020.0002.AA8A][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW CO>
-AABB AA8A ; [.24E7.0020.0002.AA8A][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW CO>
-AABC AA8A ; [.24E7.0020.0002.AA8A][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW CO>
-AA8B ; [.24E8.0020.0002.AA8B] # TAI VIET LETTER HIGH CO
-AAB5 AA8B ; [.24E8.0020.0002.AA8B][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH CO>
-AAB6 AA8B ; [.24E8.0020.0002.AA8B][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH CO>
-AAB9 AA8B ; [.24E8.0020.0002.AA8B][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH CO>
-AABB AA8B ; [.24E8.0020.0002.AA8B][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH CO>
-AABC AA8B ; [.24E8.0020.0002.AA8B][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH CO>
-AA8C ; [.24E9.0020.0002.AA8C] # TAI VIET LETTER LOW CHO
-AAB5 AA8C ; [.24E9.0020.0002.AA8C][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW CHO>
-AAB6 AA8C ; [.24E9.0020.0002.AA8C][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW CHO>
-AAB9 AA8C ; [.24E9.0020.0002.AA8C][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW CHO>
-AABB AA8C ; [.24E9.0020.0002.AA8C][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW CHO>
-AABC AA8C ; [.24E9.0020.0002.AA8C][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW CHO>
-AA8D ; [.24EA.0020.0002.AA8D] # TAI VIET LETTER HIGH CHO
-AAB5 AA8D ; [.24EA.0020.0002.AA8D][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH CHO>
-AAB6 AA8D ; [.24EA.0020.0002.AA8D][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH CHO>
-AAB9 AA8D ; [.24EA.0020.0002.AA8D][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH CHO>
-AABB AA8D ; [.24EA.0020.0002.AA8D][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH CHO>
-AABC AA8D ; [.24EA.0020.0002.AA8D][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH CHO>
-AA8E ; [.24EB.0020.0002.AA8E] # TAI VIET LETTER LOW SO
-AAB5 AA8E ; [.24EB.0020.0002.AA8E][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW SO>
-AAB6 AA8E ; [.24EB.0020.0002.AA8E][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW SO>
-AAB9 AA8E ; [.24EB.0020.0002.AA8E][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW SO>
-AABB AA8E ; [.24EB.0020.0002.AA8E][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW SO>
-AABC AA8E ; [.24EB.0020.0002.AA8E][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW SO>
-AA8F ; [.24EC.0020.0002.AA8F] # TAI VIET LETTER HIGH SO
-AAB5 AA8F ; [.24EC.0020.0002.AA8F][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH SO>
-AAB6 AA8F ; [.24EC.0020.0002.AA8F][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH SO>
-AAB9 AA8F ; [.24EC.0020.0002.AA8F][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH SO>
-AABB AA8F ; [.24EC.0020.0002.AA8F][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH SO>
-AABC AA8F ; [.24EC.0020.0002.AA8F][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH SO>
-AA90 ; [.24ED.0020.0002.AA90] # TAI VIET LETTER LOW NYO
-AAB5 AA90 ; [.24ED.0020.0002.AA90][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW NYO>
-AAB6 AA90 ; [.24ED.0020.0002.AA90][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW NYO>
-AAB9 AA90 ; [.24ED.0020.0002.AA90][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW NYO>
-AABB AA90 ; [.24ED.0020.0002.AA90][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW NYO>
-AABC AA90 ; [.24ED.0020.0002.AA90][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW NYO>
-AA91 ; [.24EE.0020.0002.AA91] # TAI VIET LETTER HIGH NYO
-AAB5 AA91 ; [.24EE.0020.0002.AA91][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH NYO>
-AAB6 AA91 ; [.24EE.0020.0002.AA91][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH NYO>
-AAB9 AA91 ; [.24EE.0020.0002.AA91][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH NYO>
-AABB AA91 ; [.24EE.0020.0002.AA91][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH NYO>
-AABC AA91 ; [.24EE.0020.0002.AA91][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH NYO>
-AA92 ; [.24EF.0020.0002.AA92] # TAI VIET LETTER LOW DO
-AAB5 AA92 ; [.24EF.0020.0002.AA92][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW DO>
-AAB6 AA92 ; [.24EF.0020.0002.AA92][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW DO>
-AAB9 AA92 ; [.24EF.0020.0002.AA92][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW DO>
-AABB AA92 ; [.24EF.0020.0002.AA92][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW DO>
-AABC AA92 ; [.24EF.0020.0002.AA92][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW DO>
-AA93 ; [.24F0.0020.0002.AA93] # TAI VIET LETTER HIGH DO
-AAB5 AA93 ; [.24F0.0020.0002.AA93][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH DO>
-AAB6 AA93 ; [.24F0.0020.0002.AA93][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH DO>
-AAB9 AA93 ; [.24F0.0020.0002.AA93][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH DO>
-AABB AA93 ; [.24F0.0020.0002.AA93][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH DO>
-AABC AA93 ; [.24F0.0020.0002.AA93][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH DO>
-AA94 ; [.24F1.0020.0002.AA94] # TAI VIET LETTER LOW TO
-AAB5 AA94 ; [.24F1.0020.0002.AA94][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW TO>
-AAB6 AA94 ; [.24F1.0020.0002.AA94][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW TO>
-AAB9 AA94 ; [.24F1.0020.0002.AA94][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW TO>
-AABB AA94 ; [.24F1.0020.0002.AA94][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW TO>
-AABC AA94 ; [.24F1.0020.0002.AA94][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW TO>
-AA95 ; [.24F2.0020.0002.AA95] # TAI VIET LETTER HIGH TO
-AAB5 AA95 ; [.24F2.0020.0002.AA95][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH TO>
-AAB6 AA95 ; [.24F2.0020.0002.AA95][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH TO>
-AAB9 AA95 ; [.24F2.0020.0002.AA95][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH TO>
-AABB AA95 ; [.24F2.0020.0002.AA95][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH TO>
-AABC AA95 ; [.24F2.0020.0002.AA95][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH TO>
-AA96 ; [.24F3.0020.0002.AA96] # TAI VIET LETTER LOW THO
-AAB5 AA96 ; [.24F3.0020.0002.AA96][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW THO>
-AAB6 AA96 ; [.24F3.0020.0002.AA96][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW THO>
-AAB9 AA96 ; [.24F3.0020.0002.AA96][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW THO>
-AABB AA96 ; [.24F3.0020.0002.AA96][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW THO>
-AABC AA96 ; [.24F3.0020.0002.AA96][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW THO>
-AA97 ; [.24F4.0020.0002.AA97] # TAI VIET LETTER HIGH THO
-AAB5 AA97 ; [.24F4.0020.0002.AA97][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH THO>
-AAB6 AA97 ; [.24F4.0020.0002.AA97][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH THO>
-AAB9 AA97 ; [.24F4.0020.0002.AA97][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH THO>
-AABB AA97 ; [.24F4.0020.0002.AA97][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH THO>
-AABC AA97 ; [.24F4.0020.0002.AA97][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH THO>
-AA98 ; [.24F5.0020.0002.AA98] # TAI VIET LETTER LOW NO
-AAB5 AA98 ; [.24F5.0020.0002.AA98][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW NO>
-AAB6 AA98 ; [.24F5.0020.0002.AA98][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW NO>
-AAB9 AA98 ; [.24F5.0020.0002.AA98][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW NO>
-AABB AA98 ; [.24F5.0020.0002.AA98][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW NO>
-AABC AA98 ; [.24F5.0020.0002.AA98][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW NO>
-AA99 ; [.24F6.0020.0002.AA99] # TAI VIET LETTER HIGH NO
-AAB5 AA99 ; [.24F6.0020.0002.AA99][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH NO>
-AAB6 AA99 ; [.24F6.0020.0002.AA99][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH NO>
-AAB9 AA99 ; [.24F6.0020.0002.AA99][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH NO>
-AABB AA99 ; [.24F6.0020.0002.AA99][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH NO>
-AABC AA99 ; [.24F6.0020.0002.AA99][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH NO>
-AA9A ; [.24F7.0020.0002.AA9A] # TAI VIET LETTER LOW BO
-AAB5 AA9A ; [.24F7.0020.0002.AA9A][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW BO>
-AAB6 AA9A ; [.24F7.0020.0002.AA9A][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW BO>
-AAB9 AA9A ; [.24F7.0020.0002.AA9A][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW BO>
-AABB AA9A ; [.24F7.0020.0002.AA9A][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW BO>
-AABC AA9A ; [.24F7.0020.0002.AA9A][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW BO>
-AA9B ; [.24F8.0020.0002.AA9B] # TAI VIET LETTER HIGH BO
-AAB5 AA9B ; [.24F8.0020.0002.AA9B][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH BO>
-AAB6 AA9B ; [.24F8.0020.0002.AA9B][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH BO>
-AAB9 AA9B ; [.24F8.0020.0002.AA9B][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH BO>
-AABB AA9B ; [.24F8.0020.0002.AA9B][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH BO>
-AABC AA9B ; [.24F8.0020.0002.AA9B][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH BO>
-AA9C ; [.24F9.0020.0002.AA9C] # TAI VIET LETTER LOW PO
-AAB5 AA9C ; [.24F9.0020.0002.AA9C][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW PO>
-AAB6 AA9C ; [.24F9.0020.0002.AA9C][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW PO>
-AAB9 AA9C ; [.24F9.0020.0002.AA9C][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW PO>
-AABB AA9C ; [.24F9.0020.0002.AA9C][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW PO>
-AABC AA9C ; [.24F9.0020.0002.AA9C][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW PO>
-AA9D ; [.24FA.0020.0002.AA9D] # TAI VIET LETTER HIGH PO
-AAB5 AA9D ; [.24FA.0020.0002.AA9D][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH PO>
-AAB6 AA9D ; [.24FA.0020.0002.AA9D][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH PO>
-AAB9 AA9D ; [.24FA.0020.0002.AA9D][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH PO>
-AABB AA9D ; [.24FA.0020.0002.AA9D][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH PO>
-AABC AA9D ; [.24FA.0020.0002.AA9D][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH PO>
-AA9E ; [.24FB.0020.0002.AA9E] # TAI VIET LETTER LOW PHO
-AAB5 AA9E ; [.24FB.0020.0002.AA9E][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW PHO>
-AAB6 AA9E ; [.24FB.0020.0002.AA9E][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW PHO>
-AAB9 AA9E ; [.24FB.0020.0002.AA9E][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW PHO>
-AABB AA9E ; [.24FB.0020.0002.AA9E][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW PHO>
-AABC AA9E ; [.24FB.0020.0002.AA9E][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW PHO>
-AA9F ; [.24FC.0020.0002.AA9F] # TAI VIET LETTER HIGH PHO
-AAB5 AA9F ; [.24FC.0020.0002.AA9F][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH PHO>
-AAB6 AA9F ; [.24FC.0020.0002.AA9F][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH PHO>
-AAB9 AA9F ; [.24FC.0020.0002.AA9F][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH PHO>
-AABB AA9F ; [.24FC.0020.0002.AA9F][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH PHO>
-AABC AA9F ; [.24FC.0020.0002.AA9F][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH PHO>
-AAA0 ; [.24FD.0020.0002.AAA0] # TAI VIET LETTER LOW FO
-AAB5 AAA0 ; [.24FD.0020.0002.AAA0][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW FO>
-AAB6 AAA0 ; [.24FD.0020.0002.AAA0][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW FO>
-AAB9 AAA0 ; [.24FD.0020.0002.AAA0][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW FO>
-AABB AAA0 ; [.24FD.0020.0002.AAA0][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW FO>
-AABC AAA0 ; [.24FD.0020.0002.AAA0][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW FO>
-AAA1 ; [.24FE.0020.0002.AAA1] # TAI VIET LETTER HIGH FO
-AAB5 AAA1 ; [.24FE.0020.0002.AAA1][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH FO>
-AAB6 AAA1 ; [.24FE.0020.0002.AAA1][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH FO>
-AAB9 AAA1 ; [.24FE.0020.0002.AAA1][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH FO>
-AABB AAA1 ; [.24FE.0020.0002.AAA1][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH FO>
-AABC AAA1 ; [.24FE.0020.0002.AAA1][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH FO>
-AAA2 ; [.24FF.0020.0002.AAA2] # TAI VIET LETTER LOW MO
-AAB5 AAA2 ; [.24FF.0020.0002.AAA2][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW MO>
-AAB6 AAA2 ; [.24FF.0020.0002.AAA2][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW MO>
-AAB9 AAA2 ; [.24FF.0020.0002.AAA2][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW MO>
-AABB AAA2 ; [.24FF.0020.0002.AAA2][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW MO>
-AABC AAA2 ; [.24FF.0020.0002.AAA2][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW MO>
-AAA3 ; [.2500.0020.0002.AAA3] # TAI VIET LETTER HIGH MO
-AAB5 AAA3 ; [.2500.0020.0002.AAA3][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH MO>
-AAB6 AAA3 ; [.2500.0020.0002.AAA3][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH MO>
-AAB9 AAA3 ; [.2500.0020.0002.AAA3][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH MO>
-AABB AAA3 ; [.2500.0020.0002.AAA3][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH MO>
-AABC AAA3 ; [.2500.0020.0002.AAA3][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH MO>
-AAA4 ; [.2501.0020.0002.AAA4] # TAI VIET LETTER LOW YO
-AAB5 AAA4 ; [.2501.0020.0002.AAA4][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW YO>
-AAB6 AAA4 ; [.2501.0020.0002.AAA4][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW YO>
-AAB9 AAA4 ; [.2501.0020.0002.AAA4][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW YO>
-AABB AAA4 ; [.2501.0020.0002.AAA4][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW YO>
-AABC AAA4 ; [.2501.0020.0002.AAA4][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW YO>
-AAA5 ; [.2502.0020.0002.AAA5] # TAI VIET LETTER HIGH YO
-AAB5 AAA5 ; [.2502.0020.0002.AAA5][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH YO>
-AAB6 AAA5 ; [.2502.0020.0002.AAA5][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH YO>
-AAB9 AAA5 ; [.2502.0020.0002.AAA5][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH YO>
-AABB AAA5 ; [.2502.0020.0002.AAA5][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH YO>
-AABC AAA5 ; [.2502.0020.0002.AAA5][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH YO>
-AAA6 ; [.2503.0020.0002.AAA6] # TAI VIET LETTER LOW RO
-AAB5 AAA6 ; [.2503.0020.0002.AAA6][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW RO>
-AAB6 AAA6 ; [.2503.0020.0002.AAA6][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW RO>
-AAB9 AAA6 ; [.2503.0020.0002.AAA6][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW RO>
-AABB AAA6 ; [.2503.0020.0002.AAA6][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW RO>
-AABC AAA6 ; [.2503.0020.0002.AAA6][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW RO>
-AAA7 ; [.2504.0020.0002.AAA7] # TAI VIET LETTER HIGH RO
-AAB5 AAA7 ; [.2504.0020.0002.AAA7][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH RO>
-AAB6 AAA7 ; [.2504.0020.0002.AAA7][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH RO>
-AAB9 AAA7 ; [.2504.0020.0002.AAA7][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH RO>
-AABB AAA7 ; [.2504.0020.0002.AAA7][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH RO>
-AABC AAA7 ; [.2504.0020.0002.AAA7][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH RO>
-AAA8 ; [.2505.0020.0002.AAA8] # TAI VIET LETTER LOW LO
-AAB5 AAA8 ; [.2505.0020.0002.AAA8][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW LO>
-AAB6 AAA8 ; [.2505.0020.0002.AAA8][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW LO>
-AAB9 AAA8 ; [.2505.0020.0002.AAA8][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW LO>
-AABB AAA8 ; [.2505.0020.0002.AAA8][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW LO>
-AABC AAA8 ; [.2505.0020.0002.AAA8][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW LO>
-AAA9 ; [.2506.0020.0002.AAA9] # TAI VIET LETTER HIGH LO
-AAB5 AAA9 ; [.2506.0020.0002.AAA9][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH LO>
-AAB6 AAA9 ; [.2506.0020.0002.AAA9][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH LO>
-AAB9 AAA9 ; [.2506.0020.0002.AAA9][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH LO>
-AABB AAA9 ; [.2506.0020.0002.AAA9][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH LO>
-AABC AAA9 ; [.2506.0020.0002.AAA9][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH LO>
-AAAA ; [.2507.0020.0002.AAAA] # TAI VIET LETTER LOW VO
-AAB5 AAAA ; [.2507.0020.0002.AAAA][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW VO>
-AAB6 AAAA ; [.2507.0020.0002.AAAA][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW VO>
-AAB9 AAAA ; [.2507.0020.0002.AAAA][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW VO>
-AABB AAAA ; [.2507.0020.0002.AAAA][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW VO>
-AABC AAAA ; [.2507.0020.0002.AAAA][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW VO>
-AAAB ; [.2508.0020.0002.AAAB] # TAI VIET LETTER HIGH VO
-AAB5 AAAB ; [.2508.0020.0002.AAAB][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH VO>
-AAB6 AAAB ; [.2508.0020.0002.AAAB][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH VO>
-AAB9 AAAB ; [.2508.0020.0002.AAAB][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH VO>
-AABB AAAB ; [.2508.0020.0002.AAAB][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH VO>
-AABC AAAB ; [.2508.0020.0002.AAAB][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH VO>
-AAAC ; [.2509.0020.0002.AAAC] # TAI VIET LETTER LOW HO
-AAB5 AAAC ; [.2509.0020.0002.AAAC][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW HO>
-AAB6 AAAC ; [.2509.0020.0002.AAAC][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW HO>
-AAB9 AAAC ; [.2509.0020.0002.AAAC][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW HO>
-AABB AAAC ; [.2509.0020.0002.AAAC][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW HO>
-AABC AAAC ; [.2509.0020.0002.AAAC][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW HO>
-AAAD ; [.250A.0020.0002.AAAD] # TAI VIET LETTER HIGH HO
-AAB5 AAAD ; [.250A.0020.0002.AAAD][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH HO>
-AAB6 AAAD ; [.250A.0020.0002.AAAD][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH HO>
-AAB9 AAAD ; [.250A.0020.0002.AAAD][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH HO>
-AABB AAAD ; [.250A.0020.0002.AAAD][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH HO>
-AABC AAAD ; [.250A.0020.0002.AAAD][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH HO>
-AAAE ; [.250B.0020.0002.AAAE] # TAI VIET LETTER LOW O
-AAB5 AAAE ; [.250B.0020.0002.AAAE][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW O>
-AAB6 AAAE ; [.250B.0020.0002.AAAE][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW O>
-AAB9 AAAE ; [.250B.0020.0002.AAAE][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW O>
-AABB AAAE ; [.250B.0020.0002.AAAE][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW O>
-AABC AAAE ; [.250B.0020.0002.AAAE][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW O>
-AAAF ; [.250C.0020.0002.AAAF] # TAI VIET LETTER HIGH O
-AAB5 AAAF ; [.250C.0020.0002.AAAF][.2512.0020.001F.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH O>
-AAB6 AAAF ; [.250C.0020.0002.AAAF][.2513.0020.001F.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH O>
-AAB9 AAAF ; [.250C.0020.0002.AAAF][.2516.0020.001F.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH O>
-AABB AAAF ; [.250C.0020.0002.AAAF][.2518.0020.001F.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH O>
-AABC AAAF ; [.250C.0020.0002.AAAF][.2519.0020.001F.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH O>
-AAB0 ; [.250D.0020.0002.AAB0] # TAI VIET MAI KANG
-AAB1 ; [.250E.0020.0002.AAB1] # TAI VIET VOWEL AA
-AAB2 ; [.250F.0020.0002.AAB2] # TAI VIET VOWEL I
-AAB3 ; [.2510.0020.0002.AAB3] # TAI VIET VOWEL UE
-AAB4 ; [.2511.0020.0002.AAB4] # TAI VIET VOWEL U
-AAB5 ; [.2512.0020.0002.AAB5] # TAI VIET VOWEL E
-AAB6 ; [.2513.0020.0002.AAB6] # TAI VIET VOWEL O
-AAB7 ; [.2514.0020.0002.AAB7] # TAI VIET MAY KHIT
-AAB8 ; [.2515.0020.0002.AAB8] # TAI VIET VOWEL IA
-AAB9 ; [.2516.0020.0002.AAB9] # TAI VIET VOWEL UEA
-AABA ; [.2517.0020.0002.AABA] # TAI VIET VOWEL UA
-AABB ; [.2518.0020.0002.AABB] # TAI VIET VOWEL AUE
-AABC ; [.2519.0020.0002.AABC] # TAI VIET VOWEL AY
-AABD ; [.251A.0020.0002.AABD] # TAI VIET VOWEL AN
-AABE ; [.251B.0020.0002.AABE] # TAI VIET VOWEL AM
-AAC0 ; [.251C.0020.0002.AAC0] # TAI VIET TONE MAI NUENG
-AAC2 ; [.251D.0020.0002.AAC2] # TAI VIET TONE MAI SONG
-AADB ; [.251E.0020.0002.AADB] # TAI VIET SYMBOL KON
-AADC ; [.251F.0020.0002.AADC] # TAI VIET SYMBOL NUENG
-0F40 ; [.2520.0020.0002.0F40] # TIBETAN LETTER KA
-0F69 ; [.2520.0020.0002.0F40][.2561.0020.0002.0FB5] # TIBETAN LETTER KSSA
-0F90 ; [.2521.0020.0002.0F90] # TIBETAN SUBJOINED LETTER KA
-0FB9 ; [.2521.0020.0002.0F90][.2561.0020.0002.0FB5] # TIBETAN SUBJOINED LETTER KSSA
-0F6B ; [.2522.0020.0002.0F6B] # TIBETAN LETTER KKA
-0F41 ; [.2523.0020.0002.0F41] # TIBETAN LETTER KHA
-0F91 ; [.2524.0020.0002.0F91] # TIBETAN SUBJOINED LETTER KHA
-0F42 ; [.2525.0020.0002.0F42] # TIBETAN LETTER GA
-0F43 ; [.2525.0020.0002.0F42][.2565.0020.0002.0FB7] # TIBETAN LETTER GHA
-0F92 ; [.2526.0020.0002.0F92] # TIBETAN SUBJOINED LETTER GA
-0F93 ; [.2526.0020.0002.0F92][.2565.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER GHA
-0F44 ; [.2527.0020.0002.0F44] # TIBETAN LETTER NGA
-0F94 ; [.2528.0020.0002.0F94] # TIBETAN SUBJOINED LETTER NGA
-0F45 ; [.2529.0020.0002.0F45] # TIBETAN LETTER CA
-0F95 ; [.252A.0020.0002.0F95] # TIBETAN SUBJOINED LETTER CA
-0F46 ; [.252B.0020.0002.0F46] # TIBETAN LETTER CHA
-0F96 ; [.252C.0020.0002.0F96] # TIBETAN SUBJOINED LETTER CHA
-0F47 ; [.252D.0020.0002.0F47] # TIBETAN LETTER JA
-0F97 ; [.252E.0020.0002.0F97] # TIBETAN SUBJOINED LETTER JA
-0F49 ; [.252F.0020.0002.0F49] # TIBETAN LETTER NYA
-0F99 ; [.2530.0020.0002.0F99] # TIBETAN SUBJOINED LETTER NYA
-0F4A ; [.2531.0020.0002.0F4A] # TIBETAN LETTER TTA
-0F9A ; [.2532.0020.0002.0F9A] # TIBETAN SUBJOINED LETTER TTA
-0F4B ; [.2533.0020.0002.0F4B] # TIBETAN LETTER TTHA
-0F9B ; [.2534.0020.0002.0F9B] # TIBETAN SUBJOINED LETTER TTHA
-0F4C ; [.2535.0020.0002.0F4C] # TIBETAN LETTER DDA
-0F4D ; [.2535.0020.0002.0F4C][.2565.0020.0002.0FB7] # TIBETAN LETTER DDHA
-0F9C ; [.2536.0020.0002.0F9C] # TIBETAN SUBJOINED LETTER DDA
-0F9D ; [.2536.0020.0002.0F9C][.2565.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER DDHA
-0F4E ; [.2537.0020.0002.0F4E] # TIBETAN LETTER NNA
-0F9E ; [.2538.0020.0002.0F9E] # TIBETAN SUBJOINED LETTER NNA
-0F4F ; [.2539.0020.0002.0F4F] # TIBETAN LETTER TA
-0F9F ; [.253A.0020.0002.0F9F] # TIBETAN SUBJOINED LETTER TA
-0F50 ; [.253B.0020.0002.0F50] # TIBETAN LETTER THA
-0FA0 ; [.253C.0020.0002.0FA0] # TIBETAN SUBJOINED LETTER THA
-0F51 ; [.253D.0020.0002.0F51] # TIBETAN LETTER DA
-0F52 ; [.253D.0020.0002.0F51][.2565.0020.0002.0FB7] # TIBETAN LETTER DHA
-0FA1 ; [.253E.0020.0002.0FA1] # TIBETAN SUBJOINED LETTER DA
-0FA2 ; [.253E.0020.0002.0FA1][.2565.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER DHA
-0F53 ; [.253F.0020.0002.0F53] # TIBETAN LETTER NA
-0FA3 ; [.2540.0020.0002.0FA3] # TIBETAN SUBJOINED LETTER NA
-0F54 ; [.2541.0020.0002.0F54] # TIBETAN LETTER PA
-0FA4 ; [.2542.0020.0002.0FA4] # TIBETAN SUBJOINED LETTER PA
-0F55 ; [.2543.0020.0002.0F55] # TIBETAN LETTER PHA
-0FA5 ; [.2544.0020.0002.0FA5] # TIBETAN SUBJOINED LETTER PHA
-0F56 ; [.2545.0020.0002.0F56] # TIBETAN LETTER BA
-0F57 ; [.2545.0020.0002.0F56][.2565.0020.0002.0FB7] # TIBETAN LETTER BHA
-0FA6 ; [.2546.0020.0002.0FA6] # TIBETAN SUBJOINED LETTER BA
-0FA7 ; [.2546.0020.0002.0FA6][.2565.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER BHA
-0F58 ; [.2547.0020.0002.0F58] # TIBETAN LETTER MA
-0FA8 ; [.2548.0020.0002.0FA8] # TIBETAN SUBJOINED LETTER MA
-0F59 ; [.2549.0020.0002.0F59] # TIBETAN LETTER TSA
-0FA9 ; [.254A.0020.0002.0FA9] # TIBETAN SUBJOINED LETTER TSA
-0F5A ; [.254B.0020.0002.0F5A] # TIBETAN LETTER TSHA
-0FAA ; [.254C.0020.0002.0FAA] # TIBETAN SUBJOINED LETTER TSHA
-0F5B ; [.254D.0020.0002.0F5B] # TIBETAN LETTER DZA
-0F5C ; [.254D.0020.0002.0F5B][.2565.0020.0002.0FB7] # TIBETAN LETTER DZHA
-0FAB ; [.254E.0020.0002.0FAB] # TIBETAN SUBJOINED LETTER DZA
-0FAC ; [.254E.0020.0002.0FAB][.2565.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER DZHA
-0F5D ; [.254F.0020.0002.0F5D] # TIBETAN LETTER WA
-0FAD ; [.2550.0020.0002.0FAD] # TIBETAN SUBJOINED LETTER WA
-0FBA ; [.2550.0020.0004.0FBA][.0000.013A.0004.0FBA] # TIBETAN SUBJOINED LETTER FIXED-FORM WA
-0F5E ; [.2551.0020.0002.0F5E] # TIBETAN LETTER ZHA
-0FAE ; [.2552.0020.0002.0FAE] # TIBETAN SUBJOINED LETTER ZHA
-0F5F ; [.2553.0020.0002.0F5F] # TIBETAN LETTER ZA
-0FAF ; [.2554.0020.0002.0FAF] # TIBETAN SUBJOINED LETTER ZA
-0F60 ; [.2555.0020.0002.0F60] # TIBETAN LETTER -A
-0FB0 ; [.2556.0020.0002.0FB0] # TIBETAN SUBJOINED LETTER -A
-0F61 ; [.2557.0020.0002.0F61] # TIBETAN LETTER YA
-0FB1 ; [.2558.0020.0002.0FB1] # TIBETAN SUBJOINED LETTER YA
-0FBB ; [.2558.0020.0004.0FBB][.0000.013A.0004.0FBB] # TIBETAN SUBJOINED LETTER FIXED-FORM YA
-0F62 ; [.2559.0020.0002.0F62] # TIBETAN LETTER RA
-0F6A ; [.2559.0020.0004.0F6A][.0000.013A.0004.0F6A] # TIBETAN LETTER FIXED-FORM RA
-0FB2 ; [.255A.0020.0002.0FB2] # TIBETAN SUBJOINED LETTER RA
-0FBC ; [.255A.0020.0004.0FBC][.0000.013A.0004.0FBC] # TIBETAN SUBJOINED LETTER FIXED-FORM RA
-0F6C ; [.255B.0020.0002.0F6C] # TIBETAN LETTER RRA
-0F63 ; [.255C.0020.0002.0F63] # TIBETAN LETTER LA
-0FB3 ; [.255D.0020.0002.0FB3] # TIBETAN SUBJOINED LETTER LA
-0F64 ; [.255E.0020.0002.0F64] # TIBETAN LETTER SHA
-0FB4 ; [.255F.0020.0002.0FB4] # TIBETAN SUBJOINED LETTER SHA
-0F65 ; [.2560.0020.0002.0F65] # TIBETAN LETTER SSA
-0FB5 ; [.2561.0020.0002.0FB5] # TIBETAN SUBJOINED LETTER SSA
-0F66 ; [.2562.0020.0002.0F66] # TIBETAN LETTER SA
-0FB6 ; [.2563.0020.0002.0FB6] # TIBETAN SUBJOINED LETTER SA
-0F67 ; [.2564.0020.0002.0F67] # TIBETAN LETTER HA
-0FB7 ; [.2565.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER HA
-0F68 ; [.2566.0020.0002.0F68] # TIBETAN LETTER A
-0F00 ; [.2566.0020.0004.0F00][.257D.0020.0004.0F00][.0000.00F3.001F.0F00] # TIBETAN SYLLABLE OM
-0FB8 ; [.2567.0020.0002.0FB8] # TIBETAN SUBJOINED LETTER A
-0F88 ; [.2568.0020.0002.0F88] # TIBETAN SIGN LCE TSA CAN
-0F8D ; [.2569.0020.0002.0F8D] # TIBETAN SUBJOINED SIGN LCE TSA CAN
-0F89 ; [.256A.0020.0002.0F89] # TIBETAN SIGN MCHU CAN
-0F8E ; [.256B.0020.0002.0F8E] # TIBETAN SUBJOINED SIGN MCHU CAN
-0F8C ; [.256C.0020.0002.0F8C] # TIBETAN SIGN INVERTED MCHU CAN
-0F8F ; [.256D.0020.0002.0F8F] # TIBETAN SUBJOINED SIGN INVERTED MCHU CAN
-0F8A ; [.256E.0020.0002.0F8A] # TIBETAN SIGN GRU CAN RGYINGS
-0F8B ; [.256F.0020.0002.0F8B] # TIBETAN SIGN GRU MED RGYINGS
-0F71 ; [.2570.0020.0002.0F71] # TIBETAN VOWEL SIGN AA
-0F72 ; [.2571.0020.0002.0F72] # TIBETAN VOWEL SIGN I
-0F73 ; [.2572.0020.0002.0F73] # TIBETAN VOWEL SIGN II
-0F71 0F72 ; [.2572.0020.0002.0F73] # TIBETAN VOWEL SIGN II
-0F80 ; [.2573.0020.0002.0F80] # TIBETAN VOWEL SIGN REVERSED I
-0F81 ; [.2574.0020.0002.0F81] # TIBETAN VOWEL SIGN REVERSED II
-0F71 0F80 ; [.2574.0020.0002.0F81] # TIBETAN VOWEL SIGN REVERSED II
-0F74 ; [.2575.0020.0002.0F74] # TIBETAN VOWEL SIGN U
-0F75 ; [.2576.0020.0002.0F75] # TIBETAN VOWEL SIGN UU
-0F71 0F74 ; [.2576.0020.0002.0F75] # TIBETAN VOWEL SIGN UU
-0F76 ; [.2577.0020.0002.0F76] # TIBETAN VOWEL SIGN VOCALIC R
-0FB2 0F80 ; [.2577.0020.0002.0F76] # TIBETAN VOWEL SIGN VOCALIC R
-0F77 ; [.2578.0020.0002.0F77] # TIBETAN VOWEL SIGN VOCALIC RR
-0FB2 0F71 0F80 ; [.2578.0020.0002.0F77] # TIBETAN VOWEL SIGN VOCALIC RR
-0FB2 0F81 ; [.2578.0020.0002.0F77] # TIBETAN VOWEL SIGN VOCALIC RR
-0F78 ; [.2579.0020.0002.0F78] # TIBETAN VOWEL SIGN VOCALIC L
-0FB3 0F80 ; [.2579.0020.0002.0F78] # TIBETAN VOWEL SIGN VOCALIC L
-0F79 ; [.257A.0020.0002.0F79] # TIBETAN VOWEL SIGN VOCALIC LL
-0FB3 0F71 0F80 ; [.257A.0020.0002.0F79] # TIBETAN VOWEL SIGN VOCALIC LL
-0FB3 0F81 ; [.257A.0020.0002.0F79] # TIBETAN VOWEL SIGN VOCALIC LL
-0F7A ; [.257B.0020.0002.0F7A] # TIBETAN VOWEL SIGN E
-0F7B ; [.257C.0020.0002.0F7B] # TIBETAN VOWEL SIGN EE
-0F7C ; [.257D.0020.0002.0F7C] # TIBETAN VOWEL SIGN O
-0F7D ; [.257E.0020.0002.0F7D] # TIBETAN VOWEL SIGN OO
-0F84 ; [.257F.0020.0002.0F84] # TIBETAN MARK HALANTA
-1C00 ; [.2580.0020.0002.1C00] # LEPCHA LETTER KA
-1C01 ; [.2581.0020.0002.1C01] # LEPCHA LETTER KLA
-1C02 ; [.2582.0020.0002.1C02] # LEPCHA LETTER KHA
-1C03 ; [.2583.0020.0002.1C03] # LEPCHA LETTER GA
-1C04 ; [.2584.0020.0002.1C04] # LEPCHA LETTER GLA
-1C05 ; [.2585.0020.0002.1C05] # LEPCHA LETTER NGA
-1C06 ; [.2586.0020.0002.1C06] # LEPCHA LETTER CA
-1C07 ; [.2587.0020.0002.1C07] # LEPCHA LETTER CHA
-1C08 ; [.2588.0020.0002.1C08] # LEPCHA LETTER JA
-1C09 ; [.2589.0020.0002.1C09] # LEPCHA LETTER NYA
-1C4D ; [.258A.0020.0002.1C4D] # LEPCHA LETTER TTA
-1C4E ; [.258B.0020.0002.1C4E] # LEPCHA LETTER TTHA
-1C4F ; [.258C.0020.0002.1C4F] # LEPCHA LETTER DDA
-1C0A ; [.258D.0020.0002.1C0A] # LEPCHA LETTER TA
-1C0B ; [.258E.0020.0002.1C0B] # LEPCHA LETTER THA
-1C0C ; [.258F.0020.0002.1C0C] # LEPCHA LETTER DA
-1C0D ; [.2590.0020.0002.1C0D] # LEPCHA LETTER NA
-1C0E ; [.2591.0020.0002.1C0E] # LEPCHA LETTER PA
-1C0F ; [.2592.0020.0002.1C0F] # LEPCHA LETTER PLA
-1C10 ; [.2593.0020.0002.1C10] # LEPCHA LETTER PHA
-1C11 ; [.2594.0020.0002.1C11] # LEPCHA LETTER FA
-1C12 ; [.2595.0020.0002.1C12] # LEPCHA LETTER FLA
-1C13 ; [.2596.0020.0002.1C13] # LEPCHA LETTER BA
-1C14 ; [.2597.0020.0002.1C14] # LEPCHA LETTER BLA
-1C15 ; [.2598.0020.0002.1C15] # LEPCHA LETTER MA
-1C16 ; [.2599.0020.0002.1C16] # LEPCHA LETTER MLA
-1C17 ; [.259A.0020.0002.1C17] # LEPCHA LETTER TSA
-1C18 ; [.259B.0020.0002.1C18] # LEPCHA LETTER TSHA
-1C19 ; [.259C.0020.0002.1C19] # LEPCHA LETTER DZA
-1C1A ; [.259D.0020.0002.1C1A] # LEPCHA LETTER YA
-1C24 ; [.259E.0020.0002.1C24] # LEPCHA SUBJOINED LETTER YA
-1C1B ; [.259F.0020.0002.1C1B] # LEPCHA LETTER RA
-1C25 ; [.25A0.0020.0002.1C25] # LEPCHA SUBJOINED LETTER RA
-1C1C ; [.25A1.0020.0002.1C1C] # LEPCHA LETTER LA
-1C1D ; [.25A2.0020.0002.1C1D] # LEPCHA LETTER HA
-1C1E ; [.25A3.0020.0002.1C1E] # LEPCHA LETTER HLA
-1C1F ; [.25A4.0020.0002.1C1F] # LEPCHA LETTER VA
-1C20 ; [.25A5.0020.0002.1C20] # LEPCHA LETTER SA
-1C21 ; [.25A6.0020.0002.1C21] # LEPCHA LETTER SHA
-1C22 ; [.25A7.0020.0002.1C22] # LEPCHA LETTER WA
-1C23 ; [.25A8.0020.0002.1C23] # LEPCHA LETTER A
-1C36 ; [.25A9.0020.0002.1C36] # LEPCHA SIGN RAN
-1C26 ; [.25AA.0020.0002.1C26] # LEPCHA VOWEL SIGN AA
-1C27 ; [.25AB.0020.0002.1C27] # LEPCHA VOWEL SIGN I
-1C28 ; [.25AC.0020.0002.1C28] # LEPCHA VOWEL SIGN O
-1C29 ; [.25AD.0020.0002.1C29] # LEPCHA VOWEL SIGN OO
-1C2A ; [.25AE.0020.0002.1C2A] # LEPCHA VOWEL SIGN U
-1C2B ; [.25AF.0020.0002.1C2B] # LEPCHA VOWEL SIGN UU
-1C2C ; [.25B0.0020.0002.1C2C] # LEPCHA VOWEL SIGN E
-1C2D ; [.25B1.0020.0002.1C2D] # LEPCHA CONSONANT SIGN K
-1C2E ; [.25B2.0020.0002.1C2E] # LEPCHA CONSONANT SIGN M
-1C2F ; [.25B3.0020.0002.1C2F] # LEPCHA CONSONANT SIGN L
-1C30 ; [.25B4.0020.0002.1C30] # LEPCHA CONSONANT SIGN N
-1C31 ; [.25B5.0020.0002.1C31] # LEPCHA CONSONANT SIGN P
-1C32 ; [.25B6.0020.0002.1C32] # LEPCHA CONSONANT SIGN R
-1C33 ; [.25B7.0020.0002.1C33] # LEPCHA CONSONANT SIGN T
-1C34 ; [.25B8.0020.0002.1C34] # LEPCHA CONSONANT SIGN NYIN-DO
-1C35 ; [.25B9.0020.0002.1C35] # LEPCHA CONSONANT SIGN KANG
-A840 ; [.25BA.0020.0002.A840] # PHAGS-PA LETTER KA
-A841 ; [.25BB.0020.0002.A841] # PHAGS-PA LETTER KHA
-A842 ; [.25BC.0020.0002.A842] # PHAGS-PA LETTER GA
-A843 ; [.25BD.0020.0002.A843] # PHAGS-PA LETTER NGA
-A844 ; [.25BE.0020.0002.A844] # PHAGS-PA LETTER CA
-A845 ; [.25BF.0020.0002.A845] # PHAGS-PA LETTER CHA
-A846 ; [.25C0.0020.0002.A846] # PHAGS-PA LETTER JA
-A847 ; [.25C1.0020.0002.A847] # PHAGS-PA LETTER NYA
-A869 ; [.25C2.0020.0002.A869] # PHAGS-PA LETTER TTA
-A86A ; [.25C3.0020.0002.A86A] # PHAGS-PA LETTER TTHA
-A86B ; [.25C4.0020.0002.A86B] # PHAGS-PA LETTER DDA
-A86C ; [.25C5.0020.0002.A86C] # PHAGS-PA LETTER NNA
-A848 ; [.25C6.0020.0002.A848] # PHAGS-PA LETTER TA
-A849 ; [.25C7.0020.0002.A849] # PHAGS-PA LETTER THA
-A84A ; [.25C8.0020.0002.A84A] # PHAGS-PA LETTER DA
-A84B ; [.25C9.0020.0002.A84B] # PHAGS-PA LETTER NA
-A84C ; [.25CA.0020.0002.A84C] # PHAGS-PA LETTER PA
-A84D ; [.25CB.0020.0002.A84D] # PHAGS-PA LETTER PHA
-A84E ; [.25CC.0020.0002.A84E] # PHAGS-PA LETTER BA
-A84F ; [.25CD.0020.0002.A84F] # PHAGS-PA LETTER MA
-A850 ; [.25CE.0020.0002.A850] # PHAGS-PA LETTER TSA
-A851 ; [.25CF.0020.0002.A851] # PHAGS-PA LETTER TSHA
-A852 ; [.25D0.0020.0002.A852] # PHAGS-PA LETTER DZA
-A853 ; [.25D1.0020.0002.A853] # PHAGS-PA LETTER WA
-A867 ; [.25D2.0020.0002.A867] # PHAGS-PA SUBJOINED LETTER WA
-A854 ; [.25D3.0020.0002.A854] # PHAGS-PA LETTER ZHA
-A855 ; [.25D4.0020.0002.A855] # PHAGS-PA LETTER ZA
-A856 ; [.25D5.0020.0002.A856] # PHAGS-PA LETTER SMALL A
-A857 ; [.25D6.0020.0002.A857] # PHAGS-PA LETTER YA
-A868 ; [.25D7.0020.0002.A868] # PHAGS-PA SUBJOINED LETTER YA
-A86D ; [.25D8.0020.0002.A86D] # PHAGS-PA LETTER ALTERNATE YA
-A858 ; [.25D9.0020.0002.A858] # PHAGS-PA LETTER RA
-A871 ; [.25DA.0020.0002.A871] # PHAGS-PA SUBJOINED LETTER RA
-A872 ; [.25DB.0020.0002.A872] # PHAGS-PA SUPERFIXED LETTER RA
-A859 ; [.25DC.0020.0002.A859] # PHAGS-PA LETTER LA
-A85A ; [.25DD.0020.0002.A85A] # PHAGS-PA LETTER SHA
-A86E ; [.25DE.0020.0002.A86E] # PHAGS-PA LETTER VOICELESS SHA
-A85B ; [.25DF.0020.0002.A85B] # PHAGS-PA LETTER SA
-A85C ; [.25E0.0020.0002.A85C] # PHAGS-PA LETTER HA
-A86F ; [.25E1.0020.0002.A86F] # PHAGS-PA LETTER VOICED HA
-A870 ; [.25E2.0020.0002.A870] # PHAGS-PA LETTER ASPIRATED FA
-A85D ; [.25E3.0020.0002.A85D] # PHAGS-PA LETTER A
-A862 ; [.25E4.0020.0002.A862] # PHAGS-PA LETTER QA
-A863 ; [.25E5.0020.0002.A863] # PHAGS-PA LETTER XA
-A864 ; [.25E6.0020.0002.A864] # PHAGS-PA LETTER FA
-A865 ; [.25E7.0020.0002.A865] # PHAGS-PA LETTER GGA
-A85E ; [.25E8.0020.0002.A85E] # PHAGS-PA LETTER I
-A85F ; [.25E9.0020.0002.A85F] # PHAGS-PA LETTER U
-A860 ; [.25EA.0020.0002.A860] # PHAGS-PA LETTER E
-A861 ; [.25EB.0020.0002.A861] # PHAGS-PA LETTER O
-A866 ; [.25EC.0020.0002.A866] # PHAGS-PA LETTER EE
-A873 ; [.25ED.0020.0002.A873] # PHAGS-PA LETTER CANDRABINDU
-1900 ; [.25EE.0020.0002.1900] # LIMBU VOWEL-CARRIER LETTER
-1901 ; [.25EF.0020.0002.1901] # LIMBU LETTER KA
-1902 ; [.25F0.0020.0002.1902] # LIMBU LETTER KHA
-1903 ; [.25F1.0020.0002.1903] # LIMBU LETTER GA
-1904 ; [.25F2.0020.0002.1904] # LIMBU LETTER GHA
-1905 ; [.25F3.0020.0002.1905] # LIMBU LETTER NGA
-1906 ; [.25F4.0020.0002.1906] # LIMBU LETTER CA
-1907 ; [.25F5.0020.0002.1907] # LIMBU LETTER CHA
-1908 ; [.25F6.0020.0002.1908] # LIMBU LETTER JA
-1909 ; [.25F7.0020.0002.1909] # LIMBU LETTER JHA
-190A ; [.25F8.0020.0002.190A] # LIMBU LETTER YAN
-190B ; [.25F9.0020.0002.190B] # LIMBU LETTER TA
-190C ; [.25FA.0020.0002.190C] # LIMBU LETTER THA
-190D ; [.25FB.0020.0002.190D] # LIMBU LETTER DA
-190E ; [.25FC.0020.0002.190E] # LIMBU LETTER DHA
-190F ; [.25FD.0020.0002.190F] # LIMBU LETTER NA
-1910 ; [.25FE.0020.0002.1910] # LIMBU LETTER PA
-1911 ; [.25FF.0020.0002.1911] # LIMBU LETTER PHA
-1912 ; [.2600.0020.0002.1912] # LIMBU LETTER BA
-1913 ; [.2601.0020.0002.1913] # LIMBU LETTER BHA
-1914 ; [.2602.0020.0002.1914] # LIMBU LETTER MA
-1915 ; [.2603.0020.0002.1915] # LIMBU LETTER YA
-1916 ; [.2604.0020.0002.1916] # LIMBU LETTER RA
-1917 ; [.2605.0020.0002.1917] # LIMBU LETTER LA
-1918 ; [.2606.0020.0002.1918] # LIMBU LETTER WA
-1919 ; [.2607.0020.0002.1919] # LIMBU LETTER SHA
-191A ; [.2608.0020.0002.191A] # LIMBU LETTER SSA
-191B ; [.2609.0020.0002.191B] # LIMBU LETTER SA
-191C ; [.260A.0020.0002.191C] # LIMBU LETTER HA
-1920 ; [.260B.0020.0002.1920] # LIMBU VOWEL SIGN A
-1921 ; [.260C.0020.0002.1921] # LIMBU VOWEL SIGN I
-1922 ; [.260D.0020.0002.1922] # LIMBU VOWEL SIGN U
-1923 ; [.260E.0020.0002.1923] # LIMBU VOWEL SIGN EE
-1924 ; [.260F.0020.0002.1924] # LIMBU VOWEL SIGN AI
-1925 ; [.2610.0020.0002.1925] # LIMBU VOWEL SIGN OO
-1926 ; [.2611.0020.0002.1926] # LIMBU VOWEL SIGN AU
-1927 ; [.2612.0020.0002.1927] # LIMBU VOWEL SIGN E
-1928 ; [.2613.0020.0002.1928] # LIMBU VOWEL SIGN O
-1929 ; [.2614.0020.0002.1929] # LIMBU SUBJOINED LETTER YA
-192A ; [.2615.0020.0002.192A] # LIMBU SUBJOINED LETTER RA
-192B ; [.2616.0020.0002.192B] # LIMBU SUBJOINED LETTER WA
-1930 ; [.2617.0020.0002.1930] # LIMBU SMALL LETTER KA
-1931 ; [.2618.0020.0002.1931] # LIMBU SMALL LETTER NGA
-1932 ; [.2619.0020.0002.1932] # LIMBU SMALL LETTER ANUSVARA
-1933 ; [.261A.0020.0002.1933] # LIMBU SMALL LETTER TA
-1934 ; [.261B.0020.0002.1934] # LIMBU SMALL LETTER NA
-1935 ; [.261C.0020.0002.1935] # LIMBU SMALL LETTER PA
-1936 ; [.261D.0020.0002.1936] # LIMBU SMALL LETTER MA
-1937 ; [.261E.0020.0002.1937] # LIMBU SMALL LETTER RA
-1938 ; [.261F.0020.0002.1938] # LIMBU SMALL LETTER LA
-1700 ; [.2620.0020.0002.1700] # TAGALOG LETTER A
-1701 ; [.2621.0020.0002.1701] # TAGALOG LETTER I
-1702 ; [.2622.0020.0002.1702] # TAGALOG LETTER U
-1703 ; [.2623.0020.0002.1703] # TAGALOG LETTER KA
-1704 ; [.2624.0020.0002.1704] # TAGALOG LETTER GA
-1705 ; [.2625.0020.0002.1705] # TAGALOG LETTER NGA
-1706 ; [.2626.0020.0002.1706] # TAGALOG LETTER TA
-1707 ; [.2627.0020.0002.1707] # TAGALOG LETTER DA
-1708 ; [.2628.0020.0002.1708] # TAGALOG LETTER NA
-1709 ; [.2629.0020.0002.1709] # TAGALOG LETTER PA
-170A ; [.262A.0020.0002.170A] # TAGALOG LETTER BA
-170B ; [.262B.0020.0002.170B] # TAGALOG LETTER MA
-170C ; [.262C.0020.0002.170C] # TAGALOG LETTER YA
-170E ; [.262D.0020.0002.170E] # TAGALOG LETTER LA
-170F ; [.262E.0020.0002.170F] # TAGALOG LETTER WA
-1710 ; [.262F.0020.0002.1710] # TAGALOG LETTER SA
-1711 ; [.2630.0020.0002.1711] # TAGALOG LETTER HA
-1712 ; [.2631.0020.0002.1712] # TAGALOG VOWEL SIGN I
-1713 ; [.2632.0020.0002.1713] # TAGALOG VOWEL SIGN U
-1714 ; [.2633.0020.0002.1714] # TAGALOG SIGN VIRAMA
-1720 ; [.2634.0020.0002.1720] # HANUNOO LETTER A
-1721 ; [.2635.0020.0002.1721] # HANUNOO LETTER I
-1722 ; [.2636.0020.0002.1722] # HANUNOO LETTER U
-1723 ; [.2637.0020.0002.1723] # HANUNOO LETTER KA
-1724 ; [.2638.0020.0002.1724] # HANUNOO LETTER GA
-1725 ; [.2639.0020.0002.1725] # HANUNOO LETTER NGA
-1726 ; [.263A.0020.0002.1726] # HANUNOO LETTER TA
-1727 ; [.263B.0020.0002.1727] # HANUNOO LETTER DA
-1728 ; [.263C.0020.0002.1728] # HANUNOO LETTER NA
-1729 ; [.263D.0020.0002.1729] # HANUNOO LETTER PA
-172A ; [.263E.0020.0002.172A] # HANUNOO LETTER BA
-172B ; [.263F.0020.0002.172B] # HANUNOO LETTER MA
-172C ; [.2640.0020.0002.172C] # HANUNOO LETTER YA
-172D ; [.2641.0020.0002.172D] # HANUNOO LETTER RA
-172E ; [.2642.0020.0002.172E] # HANUNOO LETTER LA
-172F ; [.2643.0020.0002.172F] # HANUNOO LETTER WA
-1730 ; [.2644.0020.0002.1730] # HANUNOO LETTER SA
-1731 ; [.2645.0020.0002.1731] # HANUNOO LETTER HA
-1732 ; [.2646.0020.0002.1732] # HANUNOO VOWEL SIGN I
-1733 ; [.2647.0020.0002.1733] # HANUNOO VOWEL SIGN U
-1734 ; [.2648.0020.0002.1734] # HANUNOO SIGN PAMUDPOD
-1740 ; [.2649.0020.0002.1740] # BUHID LETTER A
-1741 ; [.264A.0020.0002.1741] # BUHID LETTER I
-1742 ; [.264B.0020.0002.1742] # BUHID LETTER U
-1743 ; [.264C.0020.0002.1743] # BUHID LETTER KA
-1744 ; [.264D.0020.0002.1744] # BUHID LETTER GA
-1745 ; [.264E.0020.0002.1745] # BUHID LETTER NGA
-1746 ; [.264F.0020.0002.1746] # BUHID LETTER TA
-1747 ; [.2650.0020.0002.1747] # BUHID LETTER DA
-1748 ; [.2651.0020.0002.1748] # BUHID LETTER NA
-1749 ; [.2652.0020.0002.1749] # BUHID LETTER PA
-174A ; [.2653.0020.0002.174A] # BUHID LETTER BA
-174B ; [.2654.0020.0002.174B] # BUHID LETTER MA
-174C ; [.2655.0020.0002.174C] # BUHID LETTER YA
-174D ; [.2656.0020.0002.174D] # BUHID LETTER RA
-174E ; [.2657.0020.0002.174E] # BUHID LETTER LA
-174F ; [.2658.0020.0002.174F] # BUHID LETTER WA
-1750 ; [.2659.0020.0002.1750] # BUHID LETTER SA
-1751 ; [.265A.0020.0002.1751] # BUHID LETTER HA
-1752 ; [.265B.0020.0002.1752] # BUHID VOWEL SIGN I
-1753 ; [.265C.0020.0002.1753] # BUHID VOWEL SIGN U
-1760 ; [.265D.0020.0002.1760] # TAGBANWA LETTER A
-1761 ; [.265E.0020.0002.1761] # TAGBANWA LETTER I
-1762 ; [.265F.0020.0002.1762] # TAGBANWA LETTER U
-1763 ; [.2660.0020.0002.1763] # TAGBANWA LETTER KA
-1764 ; [.2661.0020.0002.1764] # TAGBANWA LETTER GA
-1765 ; [.2662.0020.0002.1765] # TAGBANWA LETTER NGA
-1766 ; [.2663.0020.0002.1766] # TAGBANWA LETTER TA
-1767 ; [.2664.0020.0002.1767] # TAGBANWA LETTER DA
-1768 ; [.2665.0020.0002.1768] # TAGBANWA LETTER NA
-1769 ; [.2666.0020.0002.1769] # TAGBANWA LETTER PA
-176A ; [.2667.0020.0002.176A] # TAGBANWA LETTER BA
-176B ; [.2668.0020.0002.176B] # TAGBANWA LETTER MA
-176C ; [.2669.0020.0002.176C] # TAGBANWA LETTER YA
-176E ; [.266A.0020.0002.176E] # TAGBANWA LETTER LA
-176F ; [.266B.0020.0002.176F] # TAGBANWA LETTER WA
-1770 ; [.266C.0020.0002.1770] # TAGBANWA LETTER SA
-1772 ; [.266D.0020.0002.1772] # TAGBANWA VOWEL SIGN I
-1773 ; [.266E.0020.0002.1773] # TAGBANWA VOWEL SIGN U
-1A00 ; [.266F.0020.0002.1A00] # BUGINESE LETTER KA
-1A01 ; [.2670.0020.0002.1A01] # BUGINESE LETTER GA
-1A02 ; [.2671.0020.0002.1A02] # BUGINESE LETTER NGA
-1A03 ; [.2672.0020.0002.1A03] # BUGINESE LETTER NGKA
-1A04 ; [.2673.0020.0002.1A04] # BUGINESE LETTER PA
-1A05 ; [.2674.0020.0002.1A05] # BUGINESE LETTER BA
-1A06 ; [.2675.0020.0002.1A06] # BUGINESE LETTER MA
-1A07 ; [.2676.0020.0002.1A07] # BUGINESE LETTER MPA
-1A08 ; [.2677.0020.0002.1A08] # BUGINESE LETTER TA
-1A09 ; [.2678.0020.0002.1A09] # BUGINESE LETTER DA
-1A0A ; [.2679.0020.0002.1A0A] # BUGINESE LETTER NA
-1A0B ; [.267A.0020.0002.1A0B] # BUGINESE LETTER NRA
-1A0C ; [.267B.0020.0002.1A0C] # BUGINESE LETTER CA
-1A0D ; [.267C.0020.0002.1A0D] # BUGINESE LETTER JA
-1A0E ; [.267D.0020.0002.1A0E] # BUGINESE LETTER NYA
-1A0F ; [.267E.0020.0002.1A0F] # BUGINESE LETTER NYCA
-1A10 ; [.267F.0020.0002.1A10] # BUGINESE LETTER YA
-1A11 ; [.2680.0020.0002.1A11] # BUGINESE LETTER RA
-1A12 ; [.2681.0020.0002.1A12] # BUGINESE LETTER LA
-1A13 ; [.2682.0020.0002.1A13] # BUGINESE LETTER VA
-1A14 ; [.2683.0020.0002.1A14] # BUGINESE LETTER SA
-1A15 ; [.2684.0020.0002.1A15] # BUGINESE LETTER A
-1A16 ; [.2685.0020.0002.1A16] # BUGINESE LETTER HA
-1A17 ; [.2686.0020.0002.1A17] # BUGINESE VOWEL SIGN I
-1A18 ; [.2687.0020.0002.1A18] # BUGINESE VOWEL SIGN U
-1A19 ; [.2688.0020.0002.1A19] # BUGINESE VOWEL SIGN E
-1A1A ; [.2689.0020.0002.1A1A] # BUGINESE VOWEL SIGN O
-1A1B ; [.268A.0020.0002.1A1B] # BUGINESE VOWEL SIGN AE
-1BC0 ; [.268B.0020.0002.1BC0] # BATAK LETTER A
-1BC1 ; [.268B.0020.0004.1BC1] # BATAK LETTER SIMALUNGUN A
-1BC2 ; [.268C.0020.0002.1BC2] # BATAK LETTER HA
-1BC3 ; [.268C.0020.0004.1BC3] # BATAK LETTER SIMALUNGUN HA
-1BC4 ; [.268C.0020.0004.1BC4] # BATAK LETTER MANDAILING HA
-1BC5 ; [.268D.0020.0002.1BC5] # BATAK LETTER BA
-1BC6 ; [.268D.0020.0004.1BC6] # BATAK LETTER KARO BA
-1BC7 ; [.268E.0020.0002.1BC7] # BATAK LETTER PA
-1BC8 ; [.268E.0020.0004.1BC8] # BATAK LETTER SIMALUNGUN PA
-1BC9 ; [.268F.0020.0002.1BC9] # BATAK LETTER NA
-1BCA ; [.268F.0020.0004.1BCA] # BATAK LETTER MANDAILING NA
-1BCB ; [.2690.0020.0002.1BCB] # BATAK LETTER WA
-1BCC ; [.2690.0020.0004.1BCC] # BATAK LETTER SIMALUNGUN WA
-1BCD ; [.2690.0020.0004.1BCD] # BATAK LETTER PAKPAK WA
-1BCE ; [.2691.0020.0002.1BCE] # BATAK LETTER GA
-1BCF ; [.2691.0020.0004.1BCF] # BATAK LETTER SIMALUNGUN GA
-1BD0 ; [.2692.0020.0002.1BD0] # BATAK LETTER JA
-1BD1 ; [.2693.0020.0002.1BD1] # BATAK LETTER DA
-1BD2 ; [.2694.0020.0002.1BD2] # BATAK LETTER RA
-1BD3 ; [.2694.0020.0004.1BD3] # BATAK LETTER SIMALUNGUN RA
-1BD4 ; [.2695.0020.0002.1BD4] # BATAK LETTER MA
-1BD5 ; [.2695.0020.0004.1BD5] # BATAK LETTER SIMALUNGUN MA
-1BD6 ; [.2696.0020.0002.1BD6] # BATAK LETTER SOUTHERN TA
-1BD7 ; [.2696.0020.0004.1BD7] # BATAK LETTER NORTHERN TA
-1BD8 ; [.2697.0020.0002.1BD8] # BATAK LETTER SA
-1BD9 ; [.2697.0020.0004.1BD9] # BATAK LETTER SIMALUNGUN SA
-1BDA ; [.2697.0020.0004.1BDA] # BATAK LETTER MANDAILING SA
-1BDB ; [.2698.0020.0002.1BDB] # BATAK LETTER YA
-1BDC ; [.2698.0020.0004.1BDC] # BATAK LETTER SIMALUNGUN YA
-1BDD ; [.2699.0020.0002.1BDD] # BATAK LETTER NGA
-1BDE ; [.269A.0020.0002.1BDE] # BATAK LETTER LA
-1BDF ; [.269A.0020.0004.1BDF] # BATAK LETTER SIMALUNGUN LA
-1BE0 ; [.269B.0020.0002.1BE0] # BATAK LETTER NYA
-1BE1 ; [.269C.0020.0002.1BE1] # BATAK LETTER CA
-1BE2 ; [.269D.0020.0002.1BE2] # BATAK LETTER NDA
-1BE3 ; [.269E.0020.0002.1BE3] # BATAK LETTER MBA
-1BE4 ; [.269F.0020.0002.1BE4] # BATAK LETTER I
-1BE5 ; [.26A0.0020.0002.1BE5] # BATAK LETTER U
-1BE7 ; [.26A1.0020.0002.1BE7] # BATAK VOWEL SIGN E
-1BE8 ; [.26A1.0020.0004.1BE8] # BATAK VOWEL SIGN PAKPAK E
-1BE9 ; [.26A2.0020.0002.1BE9] # BATAK VOWEL SIGN EE
-1BEA ; [.26A3.0020.0002.1BEA] # BATAK VOWEL SIGN I
-1BEB ; [.26A3.0020.0004.1BEB] # BATAK VOWEL SIGN KARO I
-1BEC ; [.26A4.0020.0002.1BEC] # BATAK VOWEL SIGN O
-1BED ; [.26A4.0020.0004.1BED] # BATAK VOWEL SIGN KARO O
-1BEE ; [.26A5.0020.0002.1BEE] # BATAK VOWEL SIGN U
-1BEF ; [.26A5.0020.0004.1BEF] # BATAK VOWEL SIGN U FOR SIMALUNGUN SA
-1BF0 ; [.26A6.0020.0002.1BF0] # BATAK CONSONANT SIGN NG
-1BF1 ; [.26A7.0020.0002.1BF1] # BATAK CONSONANT SIGN H
-1BF2 ; [.26A8.0020.0002.1BF2] # BATAK PANGOLAT
-1BF3 ; [.26A9.0020.0002.1BF3] # BATAK PANONGONAN
-A930 ; [.26AA.0020.0002.A930] # REJANG LETTER KA
-A931 ; [.26AB.0020.0002.A931] # REJANG LETTER GA
-A932 ; [.26AC.0020.0002.A932] # REJANG LETTER NGA
-A933 ; [.26AD.0020.0002.A933] # REJANG LETTER TA
-A934 ; [.26AE.0020.0002.A934] # REJANG LETTER DA
-A935 ; [.26AF.0020.0002.A935] # REJANG LETTER NA
-A936 ; [.26B0.0020.0002.A936] # REJANG LETTER PA
-A937 ; [.26B1.0020.0002.A937] # REJANG LETTER BA
-A938 ; [.26B2.0020.0002.A938] # REJANG LETTER MA
-A939 ; [.26B3.0020.0002.A939] # REJANG LETTER CA
-A93A ; [.26B4.0020.0002.A93A] # REJANG LETTER JA
-A93B ; [.26B5.0020.0002.A93B] # REJANG LETTER NYA
-A93C ; [.26B6.0020.0002.A93C] # REJANG LETTER SA
-A93D ; [.26B7.0020.0002.A93D] # REJANG LETTER RA
-A93E ; [.26B8.0020.0002.A93E] # REJANG LETTER LA
-A93F ; [.26B9.0020.0002.A93F] # REJANG LETTER YA
-A940 ; [.26BA.0020.0002.A940] # REJANG LETTER WA
-A941 ; [.26BB.0020.0002.A941] # REJANG LETTER HA
-A942 ; [.26BC.0020.0002.A942] # REJANG LETTER MBA
-A943 ; [.26BD.0020.0002.A943] # REJANG LETTER NGGA
-A944 ; [.26BE.0020.0002.A944] # REJANG LETTER NDA
-A945 ; [.26BF.0020.0002.A945] # REJANG LETTER NYJA
-A946 ; [.26C0.0020.0002.A946] # REJANG LETTER A
-A947 ; [.26C1.0020.0002.A947] # REJANG VOWEL SIGN I
-A948 ; [.26C2.0020.0002.A948] # REJANG VOWEL SIGN U
-A949 ; [.26C3.0020.0002.A949] # REJANG VOWEL SIGN E
-A94A ; [.26C4.0020.0002.A94A] # REJANG VOWEL SIGN AI
-A94B ; [.26C5.0020.0002.A94B] # REJANG VOWEL SIGN O
-A94C ; [.26C6.0020.0002.A94C] # REJANG VOWEL SIGN AU
-A94D ; [.26C7.0020.0002.A94D] # REJANG VOWEL SIGN EU
-A94E ; [.26C8.0020.0002.A94E] # REJANG VOWEL SIGN EA
-A94F ; [.26C9.0020.0002.A94F] # REJANG CONSONANT SIGN NG
-A950 ; [.26CA.0020.0002.A950] # REJANG CONSONANT SIGN N
-A951 ; [.26CB.0020.0002.A951] # REJANG CONSONANT SIGN R
-A952 ; [.26CC.0020.0002.A952] # REJANG CONSONANT SIGN H
-A953 ; [.26CD.0020.0002.A953] # REJANG VIRAMA
-A90A ; [.26CE.0020.0002.A90A] # KAYAH LI LETTER KA
-A90B ; [.26CF.0020.0002.A90B] # KAYAH LI LETTER KHA
-A90C ; [.26D0.0020.0002.A90C] # KAYAH LI LETTER GA
-A90D ; [.26D1.0020.0002.A90D] # KAYAH LI LETTER NGA
-A90E ; [.26D2.0020.0002.A90E] # KAYAH LI LETTER SA
-A90F ; [.26D3.0020.0002.A90F] # KAYAH LI LETTER SHA
-A910 ; [.26D4.0020.0002.A910] # KAYAH LI LETTER ZA
-A911 ; [.26D5.0020.0002.A911] # KAYAH LI LETTER NYA
-A912 ; [.26D6.0020.0002.A912] # KAYAH LI LETTER TA
-A913 ; [.26D7.0020.0002.A913] # KAYAH LI LETTER HTA
-A914 ; [.26D8.0020.0002.A914] # KAYAH LI LETTER NA
-A915 ; [.26D9.0020.0002.A915] # KAYAH LI LETTER PA
-A916 ; [.26DA.0020.0002.A916] # KAYAH LI LETTER PHA
-A917 ; [.26DB.0020.0002.A917] # KAYAH LI LETTER MA
-A918 ; [.26DC.0020.0002.A918] # KAYAH LI LETTER DA
-A919 ; [.26DD.0020.0002.A919] # KAYAH LI LETTER BA
-A91A ; [.26DE.0020.0002.A91A] # KAYAH LI LETTER RA
-A91B ; [.26DF.0020.0002.A91B] # KAYAH LI LETTER YA
-A91C ; [.26E0.0020.0002.A91C] # KAYAH LI LETTER LA
-A91D ; [.26E1.0020.0002.A91D] # KAYAH LI LETTER WA
-A91E ; [.26E2.0020.0002.A91E] # KAYAH LI LETTER THA
-A91F ; [.26E3.0020.0002.A91F] # KAYAH LI LETTER HA
-A920 ; [.26E4.0020.0002.A920] # KAYAH LI LETTER VA
-A921 ; [.26E5.0020.0002.A921] # KAYAH LI LETTER CA
-A922 ; [.26E6.0020.0002.A922] # KAYAH LI LETTER A
-A923 ; [.26E7.0020.0002.A923] # KAYAH LI LETTER OE
-A924 ; [.26E8.0020.0002.A924] # KAYAH LI LETTER I
-A925 ; [.26E9.0020.0002.A925] # KAYAH LI LETTER OO
-A926 ; [.26EA.0020.0002.A926] # KAYAH LI VOWEL UE
-A927 ; [.26EB.0020.0002.A927] # KAYAH LI VOWEL E
-A928 ; [.26EC.0020.0002.A928] # KAYAH LI VOWEL U
-A929 ; [.26ED.0020.0002.A929] # KAYAH LI VOWEL EE
-A92A ; [.26EE.0020.0002.A92A] # KAYAH LI VOWEL O
-1000 ; [.26EF.0020.0002.1000] # MYANMAR LETTER KA
-1075 ; [.26F0.0020.0002.1075] # MYANMAR LETTER SHAN KA
-1001 ; [.26F1.0020.0002.1001] # MYANMAR LETTER KHA
-1076 ; [.26F2.0020.0002.1076] # MYANMAR LETTER SHAN KHA
-1002 ; [.26F3.0020.0002.1002] # MYANMAR LETTER GA
-1077 ; [.26F4.0020.0002.1077] # MYANMAR LETTER SHAN GA
-AA60 ; [.26F5.0020.0002.AA60] # MYANMAR LETTER KHAMTI GA
-1003 ; [.26F6.0020.0002.1003] # MYANMAR LETTER GHA
-1004 ; [.26F7.0020.0002.1004] # MYANMAR LETTER NGA
-105A ; [.26F8.0020.0002.105A] # MYANMAR LETTER MON NGA
-1005 ; [.26F9.0020.0002.1005] # MYANMAR LETTER CA
-1078 ; [.26FA.0020.0002.1078] # MYANMAR LETTER SHAN CA
-AA61 ; [.26FB.0020.0002.AA61] # MYANMAR LETTER KHAMTI CA
-1006 ; [.26FC.0020.0002.1006] # MYANMAR LETTER CHA
-AA62 ; [.26FD.0020.0002.AA62] # MYANMAR LETTER KHAMTI CHA
-1007 ; [.26FE.0020.0002.1007] # MYANMAR LETTER JA
-AA63 ; [.26FF.0020.0002.AA63] # MYANMAR LETTER KHAMTI JA
-1079 ; [.2700.0020.0002.1079] # MYANMAR LETTER SHAN ZA
-AA72 ; [.2701.0020.0002.AA72] # MYANMAR LETTER KHAMTI ZA
-1008 ; [.2702.0020.0002.1008] # MYANMAR LETTER JHA
-105B ; [.2703.0020.0002.105B] # MYANMAR LETTER MON JHA
-AA64 ; [.2704.0020.0002.AA64] # MYANMAR LETTER KHAMTI JHA
-1061 ; [.2705.0020.0002.1061] # MYANMAR LETTER SGAW KAREN SHA
-1009 ; [.2706.0020.0002.1009] # MYANMAR LETTER NYA
-107A ; [.2707.0020.0002.107A] # MYANMAR LETTER SHAN NYA
-AA65 ; [.2708.0020.0002.AA65] # MYANMAR LETTER KHAMTI NYA
-100A ; [.2709.0020.0002.100A] # MYANMAR LETTER NNYA
-100B ; [.270A.0020.0002.100B] # MYANMAR LETTER TTA
-AA66 ; [.270B.0020.0002.AA66] # MYANMAR LETTER KHAMTI TTA
-100C ; [.270C.0020.0002.100C] # MYANMAR LETTER TTHA
-AA67 ; [.270D.0020.0002.AA67] # MYANMAR LETTER KHAMTI TTHA
-100D ; [.270E.0020.0002.100D] # MYANMAR LETTER DDA
-AA68 ; [.270F.0020.0002.AA68] # MYANMAR LETTER KHAMTI DDA
-100E ; [.2710.0020.0002.100E] # MYANMAR LETTER DDHA
-AA69 ; [.2711.0020.0002.AA69] # MYANMAR LETTER KHAMTI DDHA
-100F ; [.2712.0020.0002.100F] # MYANMAR LETTER NNA
-106E ; [.2713.0020.0002.106E] # MYANMAR LETTER EASTERN PWO KAREN NNA
-1010 ; [.2714.0020.0002.1010] # MYANMAR LETTER TA
-1011 ; [.2715.0020.0002.1011] # MYANMAR LETTER THA
-1012 ; [.2716.0020.0002.1012] # MYANMAR LETTER DA
-107B ; [.2717.0020.0002.107B] # MYANMAR LETTER SHAN DA
-1013 ; [.2718.0020.0002.1013] # MYANMAR LETTER DHA
-AA6A ; [.2719.0020.0002.AA6A] # MYANMAR LETTER KHAMTI DHA
-1014 ; [.271A.0020.0002.1014] # MYANMAR LETTER NA
-107C ; [.271B.0020.0002.107C] # MYANMAR LETTER SHAN NA
-AA6B ; [.271C.0020.0002.AA6B] # MYANMAR LETTER KHAMTI NA
-105E ; [.271D.0020.0002.105E] # MYANMAR CONSONANT SIGN MON MEDIAL NA
-1015 ; [.271E.0020.0002.1015] # MYANMAR LETTER PA
-1016 ; [.271F.0020.0002.1016] # MYANMAR LETTER PHA
-107D ; [.2720.0020.0002.107D] # MYANMAR LETTER SHAN PHA
-107E ; [.2721.0020.0002.107E] # MYANMAR LETTER SHAN FA
-AA6F ; [.2722.0020.0002.AA6F] # MYANMAR LETTER KHAMTI FA
-108E ; [.2723.0020.0002.108E] # MYANMAR LETTER RUMAI PALAUNG FA
-1017 ; [.2724.0020.0002.1017] # MYANMAR LETTER BA
-107F ; [.2725.0020.0002.107F] # MYANMAR LETTER SHAN BA
-1018 ; [.2726.0020.0002.1018] # MYANMAR LETTER BHA
-1019 ; [.2727.0020.0002.1019] # MYANMAR LETTER MA
-105F ; [.2728.0020.0002.105F] # MYANMAR CONSONANT SIGN MON MEDIAL MA
-101A ; [.2729.0020.0002.101A] # MYANMAR LETTER YA
-103B ; [.272A.0020.0002.103B] # MYANMAR CONSONANT SIGN MEDIAL YA
-101B ; [.272B.0020.0002.101B] # MYANMAR LETTER RA
-AA73 ; [.272C.0020.0002.AA73] # MYANMAR LETTER KHAMTI RA
-AA7A ; [.272D.0020.0002.AA7A] # MYANMAR LETTER AITON RA
-103C ; [.272E.0020.0002.103C] # MYANMAR CONSONANT SIGN MEDIAL RA
-101C ; [.272F.0020.0002.101C] # MYANMAR LETTER LA
-1060 ; [.2730.0020.0002.1060] # MYANMAR CONSONANT SIGN MON MEDIAL LA
-101D ; [.2731.0020.0002.101D] # MYANMAR LETTER WA
-103D ; [.2732.0020.0002.103D] # MYANMAR CONSONANT SIGN MEDIAL WA
-1082 ; [.2733.0020.0002.1082] # MYANMAR CONSONANT SIGN SHAN MEDIAL WA
-1080 ; [.2734.0020.0002.1080] # MYANMAR LETTER SHAN THA
-1050 ; [.2735.0020.0002.1050] # MYANMAR LETTER SHA
-1051 ; [.2736.0020.0002.1051] # MYANMAR LETTER SSA
-1065 ; [.2737.0020.0002.1065] # MYANMAR LETTER WESTERN PWO KAREN THA
-101E ; [.2738.0020.0002.101E] # MYANMAR LETTER SA
-103F ; [.2738.0020.0004.103F][.276F.0020.0004.103F][.2738.0020.001F.103F] # MYANMAR LETTER GREAT SA
-AA6C ; [.2739.0020.0002.AA6C] # MYANMAR LETTER KHAMTI SA
-101F ; [.273A.0020.0002.101F] # MYANMAR LETTER HA
-1081 ; [.273B.0020.0002.1081] # MYANMAR LETTER SHAN HA
-AA6D ; [.273C.0020.0002.AA6D] # MYANMAR LETTER KHAMTI HA
-103E ; [.273D.0020.0002.103E] # MYANMAR CONSONANT SIGN MEDIAL HA
-AA6E ; [.273E.0020.0002.AA6E] # MYANMAR LETTER KHAMTI HHA
-AA71 ; [.273F.0020.0002.AA71] # MYANMAR LETTER KHAMTI XA
-1020 ; [.2740.0020.0002.1020] # MYANMAR LETTER LLA
-105C ; [.2741.0020.0002.105C] # MYANMAR LETTER MON BBA
-105D ; [.2742.0020.0002.105D] # MYANMAR LETTER MON BBE
-106F ; [.2743.0020.0002.106F] # MYANMAR LETTER EASTERN PWO KAREN YWA
-1070 ; [.2744.0020.0002.1070] # MYANMAR LETTER EASTERN PWO KAREN GHWA
-1066 ; [.2745.0020.0002.1066] # MYANMAR LETTER WESTERN PWO KAREN PWA
-1021 ; [.2746.0020.0002.1021] # MYANMAR LETTER A
-1022 ; [.2747.0020.0002.1022] # MYANMAR LETTER SHAN A
-1023 ; [.2748.0020.0002.1023] # MYANMAR LETTER I
-1024 ; [.2749.0020.0002.1024] # MYANMAR LETTER II
-1025 ; [.274A.0020.0002.1025] # MYANMAR LETTER U
-1026 ; [.274B.0020.0002.1026] # MYANMAR LETTER UU
-1025 102E ; [.274B.0020.0002.1026] # MYANMAR LETTER UU
-1052 ; [.274C.0020.0002.1052] # MYANMAR LETTER VOCALIC R
-1053 ; [.274D.0020.0002.1053] # MYANMAR LETTER VOCALIC RR
-1054 ; [.274E.0020.0002.1054] # MYANMAR LETTER VOCALIC L
-1055 ; [.274F.0020.0002.1055] # MYANMAR LETTER VOCALIC LL
-1027 ; [.2750.0020.0002.1027] # MYANMAR LETTER E
-1028 ; [.2751.0020.0002.1028] # MYANMAR LETTER MON E
-1029 ; [.2752.0020.0002.1029] # MYANMAR LETTER O
-102A ; [.2753.0020.0002.102A] # MYANMAR LETTER AU
-102C ; [.2754.0020.0002.102C] # MYANMAR VOWEL SIGN AA
-102B ; [.2754.0020.0004.102B] # MYANMAR VOWEL SIGN TALL AA
-1083 ; [.2755.0020.0002.1083] # MYANMAR VOWEL SIGN SHAN AA
-1072 ; [.2756.0020.0002.1072] # MYANMAR VOWEL SIGN KAYAH OE
-109C ; [.2757.0020.0002.109C] # MYANMAR VOWEL SIGN AITON A
-102D ; [.2758.0020.0002.102D] # MYANMAR VOWEL SIGN I
-1071 ; [.2759.0020.0002.1071] # MYANMAR VOWEL SIGN GEBA KAREN I
-102E ; [.275A.0020.0002.102E] # MYANMAR VOWEL SIGN II
-1033 ; [.275B.0020.0002.1033] # MYANMAR VOWEL SIGN MON II
-102F ; [.275C.0020.0002.102F] # MYANMAR VOWEL SIGN U
-1073 ; [.275D.0020.0002.1073] # MYANMAR VOWEL SIGN KAYAH U
-1074 ; [.275E.0020.0002.1074] # MYANMAR VOWEL SIGN KAYAH EE
-1030 ; [.275F.0020.0002.1030] # MYANMAR VOWEL SIGN UU
-1056 ; [.2760.0020.0002.1056] # MYANMAR VOWEL SIGN VOCALIC R
-1057 ; [.2761.0020.0002.1057] # MYANMAR VOWEL SIGN VOCALIC RR
-1058 ; [.2762.0020.0002.1058] # MYANMAR VOWEL SIGN VOCALIC L
-1059 ; [.2763.0020.0002.1059] # MYANMAR VOWEL SIGN VOCALIC LL
-1031 ; [.2764.0020.0002.1031] # MYANMAR VOWEL SIGN E
-1084 ; [.2765.0020.0002.1084] # MYANMAR VOWEL SIGN SHAN E
-1035 ; [.2766.0020.0002.1035] # MYANMAR VOWEL SIGN E ABOVE
-1085 ; [.2767.0020.0002.1085] # MYANMAR VOWEL SIGN SHAN E ABOVE
-1032 ; [.2768.0020.0002.1032] # MYANMAR VOWEL SIGN AI
-109D ; [.2769.0020.0002.109D] # MYANMAR VOWEL SIGN AITON AI
-1034 ; [.276A.0020.0002.1034] # MYANMAR VOWEL SIGN MON O
-1062 ; [.276B.0020.0002.1062] # MYANMAR VOWEL SIGN SGAW KAREN EU
-1067 ; [.276C.0020.0002.1067] # MYANMAR VOWEL SIGN WESTERN PWO KAREN EU
-1068 ; [.276D.0020.0002.1068] # MYANMAR VOWEL SIGN WESTERN PWO KAREN UE
-1086 ; [.276E.0020.0002.1086] # MYANMAR VOWEL SIGN SHAN FINAL Y
-1039 ; [.276F.0020.0002.1039] # MYANMAR SIGN VIRAMA
-103A ; [.2770.0020.0002.103A] # MYANMAR SIGN ASAT
-1063 ; [.2771.0020.0002.1063] # MYANMAR TONE MARK SGAW KAREN HATHI
-1064 ; [.2772.0020.0002.1064] # MYANMAR TONE MARK SGAW KAREN KE PHO
-1069 ; [.2773.0020.0002.1069] # MYANMAR SIGN WESTERN PWO KAREN TONE-1
-106A ; [.2774.0020.0002.106A] # MYANMAR SIGN WESTERN PWO KAREN TONE-2
-106B ; [.2775.0020.0002.106B] # MYANMAR SIGN WESTERN PWO KAREN TONE-3
-106C ; [.2776.0020.0002.106C] # MYANMAR SIGN WESTERN PWO KAREN TONE-4
-106D ; [.2777.0020.0002.106D] # MYANMAR SIGN WESTERN PWO KAREN TONE-5
-1087 ; [.2778.0020.0002.1087] # MYANMAR SIGN SHAN TONE-2
-108B ; [.2779.0020.0002.108B] # MYANMAR SIGN SHAN COUNCIL TONE-2
-1088 ; [.277A.0020.0002.1088] # MYANMAR SIGN SHAN TONE-3
-108C ; [.277B.0020.0002.108C] # MYANMAR SIGN SHAN COUNCIL TONE-3
-1089 ; [.277C.0020.0002.1089] # MYANMAR SIGN SHAN TONE-5
-108A ; [.277D.0020.0002.108A] # MYANMAR SIGN SHAN TONE-6
-108F ; [.277E.0020.0002.108F] # MYANMAR SIGN RUMAI PALAUNG TONE-5
-109A ; [.277F.0020.0002.109A] # MYANMAR SIGN KHAMTI TONE-1
-109B ; [.2780.0020.0002.109B] # MYANMAR SIGN KHAMTI TONE-3
-AA7B ; [.2781.0020.0002.AA7B] # MYANMAR SIGN PAO KAREN TONE
-AA74 ; [.2782.0020.0002.AA74] # MYANMAR LOGOGRAM KHAMTI OAY
-AA75 ; [.2783.0020.0002.AA75] # MYANMAR LOGOGRAM KHAMTI QN
-AA76 ; [.2784.0020.0002.AA76] # MYANMAR LOGOGRAM KHAMTI HM
-11103 ; [.2785.0020.0002.11103] # CHAKMA LETTER AA
-11104 ; [.2786.0020.0002.11104] # CHAKMA LETTER I
-11105 ; [.2787.0020.0002.11105] # CHAKMA LETTER U
-11106 ; [.2788.0020.0002.11106] # CHAKMA LETTER E
-11107 ; [.2789.0020.0002.11107] # CHAKMA LETTER KAA
-11108 ; [.278A.0020.0002.11108] # CHAKMA LETTER KHAA
-11109 ; [.278B.0020.0002.11109] # CHAKMA LETTER GAA
-1110A ; [.278C.0020.0002.1110A] # CHAKMA LETTER GHAA
-1110B ; [.278D.0020.0002.1110B] # CHAKMA LETTER NGAA
-1110C ; [.278E.0020.0002.1110C] # CHAKMA LETTER CAA
-1110D ; [.278F.0020.0002.1110D] # CHAKMA LETTER CHAA
-1110E ; [.2790.0020.0002.1110E] # CHAKMA LETTER JAA
-1110F ; [.2791.0020.0002.1110F] # CHAKMA LETTER JHAA
-11110 ; [.2792.0020.0002.11110] # CHAKMA LETTER NYAA
-11111 ; [.2793.0020.0002.11111] # CHAKMA LETTER TTAA
-11112 ; [.2794.0020.0002.11112] # CHAKMA LETTER TTHAA
-11113 ; [.2795.0020.0002.11113] # CHAKMA LETTER DDAA
-11114 ; [.2796.0020.0002.11114] # CHAKMA LETTER DDHAA
-11115 ; [.2797.0020.0002.11115] # CHAKMA LETTER NNAA
-11116 ; [.2798.0020.0002.11116] # CHAKMA LETTER TAA
-11117 ; [.2799.0020.0002.11117] # CHAKMA LETTER THAA
-11118 ; [.279A.0020.0002.11118] # CHAKMA LETTER DAA
-11119 ; [.279B.0020.0002.11119] # CHAKMA LETTER DHAA
-1111A ; [.279C.0020.0002.1111A] # CHAKMA LETTER NAA
-1111B ; [.279D.0020.0002.1111B] # CHAKMA LETTER PAA
-1111C ; [.279E.0020.0002.1111C] # CHAKMA LETTER PHAA
-1111D ; [.279F.0020.0002.1111D] # CHAKMA LETTER BAA
-1111E ; [.27A0.0020.0002.1111E] # CHAKMA LETTER BHAA
-1111F ; [.27A1.0020.0002.1111F] # CHAKMA LETTER MAA
-11120 ; [.27A2.0020.0002.11120] # CHAKMA LETTER YYAA
-11121 ; [.27A3.0020.0002.11121] # CHAKMA LETTER YAA
-11122 ; [.27A4.0020.0002.11122] # CHAKMA LETTER RAA
-11123 ; [.27A5.0020.0002.11123] # CHAKMA LETTER LAA
-11124 ; [.27A6.0020.0002.11124] # CHAKMA LETTER WAA
-11125 ; [.27A7.0020.0002.11125] # CHAKMA LETTER SAA
-11126 ; [.27A8.0020.0002.11126] # CHAKMA LETTER HAA
-11127 ; [.27A9.0020.0002.11127] # CHAKMA VOWEL SIGN A
-11128 ; [.27AA.0020.0002.11128] # CHAKMA VOWEL SIGN I
-11129 ; [.27AB.0020.0002.11129] # CHAKMA VOWEL SIGN II
-1112A ; [.27AC.0020.0002.1112A] # CHAKMA VOWEL SIGN U
-1112B ; [.27AD.0020.0002.1112B] # CHAKMA VOWEL SIGN UU
-1112C ; [.27AE.0020.0002.1112C] # CHAKMA VOWEL SIGN E
-1112D ; [.27AF.0020.0002.1112D] # CHAKMA VOWEL SIGN AI
-1112E ; [.27B0.0020.0002.1112E] # CHAKMA VOWEL SIGN O
-11131 11127 ; [.27B0.0020.0002.1112E] # CHAKMA VOWEL SIGN O
-1112F ; [.27B1.0020.0002.1112F] # CHAKMA VOWEL SIGN AU
-11132 11127 ; [.27B1.0020.0002.1112F] # CHAKMA VOWEL SIGN AU
-11130 ; [.27B2.0020.0002.11130] # CHAKMA VOWEL SIGN OI
-11131 ; [.27B3.0020.0002.11131] # CHAKMA O MARK
-11132 ; [.27B4.0020.0002.11132] # CHAKMA AU MARK
-11133 ; [.27B5.0020.0002.11133] # CHAKMA VIRAMA
-11134 ; [.27B6.0020.0002.11134] # CHAKMA MAAYYAA
-1780 ; [.27B7.0020.0002.1780] # KHMER LETTER KA
-1781 ; [.27B8.0020.0002.1781] # KHMER LETTER KHA
-1782 ; [.27B9.0020.0002.1782] # KHMER LETTER KO
-1783 ; [.27BA.0020.0002.1783] # KHMER LETTER KHO
-1784 ; [.27BB.0020.0002.1784] # KHMER LETTER NGO
-1785 ; [.27BC.0020.0002.1785] # KHMER LETTER CA
-1786 ; [.27BD.0020.0002.1786] # KHMER LETTER CHA
-1787 ; [.27BE.0020.0002.1787] # KHMER LETTER CO
-1788 ; [.27BF.0020.0002.1788] # KHMER LETTER CHO
-1789 ; [.27C0.0020.0002.1789] # KHMER LETTER NYO
-178A ; [.27C1.0020.0002.178A] # KHMER LETTER DA
-178B ; [.27C2.0020.0002.178B] # KHMER LETTER TTHA
-178C ; [.27C3.0020.0002.178C] # KHMER LETTER DO
-178D ; [.27C4.0020.0002.178D] # KHMER LETTER TTHO
-178E ; [.27C5.0020.0002.178E] # KHMER LETTER NNO
-178F ; [.27C6.0020.0002.178F] # KHMER LETTER TA
-1790 ; [.27C7.0020.0002.1790] # KHMER LETTER THA
-1791 ; [.27C8.0020.0002.1791] # KHMER LETTER TO
-1792 ; [.27C9.0020.0002.1792] # KHMER LETTER THO
-1793 ; [.27CA.0020.0002.1793] # KHMER LETTER NO
-1794 ; [.27CB.0020.0002.1794] # KHMER LETTER BA
-1795 ; [.27CC.0020.0002.1795] # KHMER LETTER PHA
-1796 ; [.27CD.0020.0002.1796] # KHMER LETTER PO
-1797 ; [.27CE.0020.0002.1797] # KHMER LETTER PHO
-1798 ; [.27CF.0020.0002.1798] # KHMER LETTER MO
-1799 ; [.27D0.0020.0002.1799] # KHMER LETTER YO
-179A ; [.27D1.0020.0002.179A] # KHMER LETTER RO
-179B ; [.27D2.0020.0002.179B] # KHMER LETTER LO
-179C ; [.27D3.0020.0002.179C] # KHMER LETTER VO
-179D ; [.27D4.0020.0002.179D] # KHMER LETTER SHA
-179E ; [.27D5.0020.0002.179E] # KHMER LETTER SSO
-179F ; [.27D6.0020.0002.179F] # KHMER LETTER SA
-17A0 ; [.27D7.0020.0002.17A0] # KHMER LETTER HA
-17A1 ; [.27D8.0020.0002.17A1] # KHMER LETTER LA
-17A2 ; [.27D9.0020.0002.17A2] # KHMER LETTER QA
-17DC ; [.27DA.0020.0002.17DC] # KHMER SIGN AVAKRAHASANYA
-17A3 ; [.27DB.0020.0002.17A3] # KHMER INDEPENDENT VOWEL QAQ
-17A4 ; [.27DC.0020.0002.17A4] # KHMER INDEPENDENT VOWEL QAA
-17A5 ; [.27DD.0020.0002.17A5] # KHMER INDEPENDENT VOWEL QI
-17A6 ; [.27DE.0020.0002.17A6] # KHMER INDEPENDENT VOWEL QII
-17A7 ; [.27DF.0020.0002.17A7] # KHMER INDEPENDENT VOWEL QU
-17A8 ; [.27E0.0020.0002.17A8] # KHMER INDEPENDENT VOWEL QUK
-17A9 ; [.27E1.0020.0002.17A9] # KHMER INDEPENDENT VOWEL QUU
-17AA ; [.27E2.0020.0002.17AA] # KHMER INDEPENDENT VOWEL QUUV
-17AB ; [.27E3.0020.0002.17AB] # KHMER INDEPENDENT VOWEL RY
-17AC ; [.27E4.0020.0002.17AC] # KHMER INDEPENDENT VOWEL RYY
-17AD ; [.27E5.0020.0002.17AD] # KHMER INDEPENDENT VOWEL LY
-17AE ; [.27E6.0020.0002.17AE] # KHMER INDEPENDENT VOWEL LYY
-17AF ; [.27E7.0020.0002.17AF] # KHMER INDEPENDENT VOWEL QE
-17B0 ; [.27E8.0020.0002.17B0] # KHMER INDEPENDENT VOWEL QAI
-17B1 ; [.27E9.0020.0002.17B1] # KHMER INDEPENDENT VOWEL QOO TYPE ONE
-17B2 ; [.27EA.0020.0002.17B2] # KHMER INDEPENDENT VOWEL QOO TYPE TWO
-17B3 ; [.27EB.0020.0002.17B3] # KHMER INDEPENDENT VOWEL QAU
-17B6 ; [.27EC.0020.0002.17B6] # KHMER VOWEL SIGN AA
-17B7 ; [.27ED.0020.0002.17B7] # KHMER VOWEL SIGN I
-17B8 ; [.27EE.0020.0002.17B8] # KHMER VOWEL SIGN II
-17B9 ; [.27EF.0020.0002.17B9] # KHMER VOWEL SIGN Y
-17BA ; [.27F0.0020.0002.17BA] # KHMER VOWEL SIGN YY
-17BB ; [.27F1.0020.0002.17BB] # KHMER VOWEL SIGN U
-17BC ; [.27F2.0020.0002.17BC] # KHMER VOWEL SIGN UU
-17BD ; [.27F3.0020.0002.17BD] # KHMER VOWEL SIGN UA
-17BE ; [.27F4.0020.0002.17BE] # KHMER VOWEL SIGN OE
-17BF ; [.27F5.0020.0002.17BF] # KHMER VOWEL SIGN YA
-17C0 ; [.27F6.0020.0002.17C0] # KHMER VOWEL SIGN IE
-17C1 ; [.27F7.0020.0002.17C1] # KHMER VOWEL SIGN E
-17C2 ; [.27F8.0020.0002.17C2] # KHMER VOWEL SIGN AE
-17C3 ; [.27F9.0020.0002.17C3] # KHMER VOWEL SIGN AI
-17C4 ; [.27FA.0020.0002.17C4] # KHMER VOWEL SIGN OO
-17C5 ; [.27FB.0020.0002.17C5] # KHMER VOWEL SIGN AU
-17D2 ; [.27FC.0020.0002.17D2] # KHMER SIGN COENG
-1950 ; [.27FD.0020.0002.1950] # TAI LE LETTER KA
-1951 ; [.27FE.0020.0002.1951] # TAI LE LETTER XA
-1952 ; [.27FF.0020.0002.1952] # TAI LE LETTER NGA
-1953 ; [.2800.0020.0002.1953] # TAI LE LETTER TSA
-1954 ; [.2801.0020.0002.1954] # TAI LE LETTER SA
-1955 ; [.2802.0020.0002.1955] # TAI LE LETTER YA
-1956 ; [.2803.0020.0002.1956] # TAI LE LETTER TA
-1957 ; [.2804.0020.0002.1957] # TAI LE LETTER THA
-1958 ; [.2805.0020.0002.1958] # TAI LE LETTER LA
-1959 ; [.2806.0020.0002.1959] # TAI LE LETTER PA
-195A ; [.2807.0020.0002.195A] # TAI LE LETTER PHA
-195B ; [.2808.0020.0002.195B] # TAI LE LETTER MA
-195C ; [.2809.0020.0002.195C] # TAI LE LETTER FA
-195D ; [.280A.0020.0002.195D] # TAI LE LETTER VA
-195E ; [.280B.0020.0002.195E] # TAI LE LETTER HA
-195F ; [.280C.0020.0002.195F] # TAI LE LETTER QA
-1960 ; [.280D.0020.0002.1960] # TAI LE LETTER KHA
-1961 ; [.280E.0020.0002.1961] # TAI LE LETTER TSHA
-1962 ; [.280F.0020.0002.1962] # TAI LE LETTER NA
-1963 ; [.2810.0020.0002.1963] # TAI LE LETTER A
-1964 ; [.2811.0020.0002.1964] # TAI LE LETTER I
-1965 ; [.2812.0020.0002.1965] # TAI LE LETTER EE
-1966 ; [.2813.0020.0002.1966] # TAI LE LETTER EH
-1967 ; [.2814.0020.0002.1967] # TAI LE LETTER U
-1968 ; [.2815.0020.0002.1968] # TAI LE LETTER OO
-1969 ; [.2816.0020.0002.1969] # TAI LE LETTER O
-196A ; [.2817.0020.0002.196A] # TAI LE LETTER UE
-196B ; [.2818.0020.0002.196B] # TAI LE LETTER E
-196C ; [.2819.0020.0002.196C] # TAI LE LETTER AUE
-196D ; [.281A.0020.0002.196D] # TAI LE LETTER AI
-1970 ; [.281B.0020.0002.1970] # TAI LE LETTER TONE-2
-1971 ; [.281C.0020.0002.1971] # TAI LE LETTER TONE-3
-1972 ; [.281D.0020.0002.1972] # TAI LE LETTER TONE-4
-1973 ; [.281E.0020.0002.1973] # TAI LE LETTER TONE-5
-1974 ; [.281F.0020.0002.1974] # TAI LE LETTER TONE-6
-1980 ; [.2820.0020.0002.1980] # NEW TAI LUE LETTER HIGH QA
-1981 ; [.2821.0020.0002.1981] # NEW TAI LUE LETTER LOW QA
-1982 ; [.2822.0020.0002.1982] # NEW TAI LUE LETTER HIGH KA
-1983 ; [.2823.0020.0002.1983] # NEW TAI LUE LETTER HIGH XA
-1984 ; [.2824.0020.0002.1984] # NEW TAI LUE LETTER HIGH NGA
-1985 ; [.2825.0020.0002.1985] # NEW TAI LUE LETTER LOW KA
-1986 ; [.2826.0020.0002.1986] # NEW TAI LUE LETTER LOW XA
-1987 ; [.2827.0020.0002.1987] # NEW TAI LUE LETTER LOW NGA
-1988 ; [.2828.0020.0002.1988] # NEW TAI LUE LETTER HIGH TSA
-1989 ; [.2829.0020.0002.1989] # NEW TAI LUE LETTER HIGH SA
-198A ; [.282A.0020.0002.198A] # NEW TAI LUE LETTER HIGH YA
-198B ; [.282B.0020.0002.198B] # NEW TAI LUE LETTER LOW TSA
-198C ; [.282C.0020.0002.198C] # NEW TAI LUE LETTER LOW SA
-198D ; [.282D.0020.0002.198D] # NEW TAI LUE LETTER LOW YA
-198E ; [.282E.0020.0002.198E] # NEW TAI LUE LETTER HIGH TA
-198F ; [.282F.0020.0002.198F] # NEW TAI LUE LETTER HIGH THA
-1990 ; [.2830.0020.0002.1990] # NEW TAI LUE LETTER HIGH NA
-1991 ; [.2831.0020.0002.1991] # NEW TAI LUE LETTER LOW TA
-1992 ; [.2832.0020.0002.1992] # NEW TAI LUE LETTER LOW THA
-1993 ; [.2833.0020.0002.1993] # NEW TAI LUE LETTER LOW NA
-1994 ; [.2834.0020.0002.1994] # NEW TAI LUE LETTER HIGH PA
-1995 ; [.2835.0020.0002.1995] # NEW TAI LUE LETTER HIGH PHA
-1996 ; [.2836.0020.0002.1996] # NEW TAI LUE LETTER HIGH MA
-1997 ; [.2837.0020.0002.1997] # NEW TAI LUE LETTER LOW PA
-1998 ; [.2838.0020.0002.1998] # NEW TAI LUE LETTER LOW PHA
-1999 ; [.2839.0020.0002.1999] # NEW TAI LUE LETTER LOW MA
-199A ; [.283A.0020.0002.199A] # NEW TAI LUE LETTER HIGH FA
-199B ; [.283B.0020.0002.199B] # NEW TAI LUE LETTER HIGH VA
-199C ; [.283C.0020.0002.199C] # NEW TAI LUE LETTER HIGH LA
-19DE ; [.283C.0020.0004.19DE][.2852.0020.0004.19DE] # NEW TAI LUE SIGN LAE
-19DF ; [.283C.0020.0004.19DF][.2852.0020.0004.19DF][.285D.0020.001F.19DF] # NEW TAI LUE SIGN LAEV
-199D ; [.283D.0020.0002.199D] # NEW TAI LUE LETTER LOW FA
-199E ; [.283E.0020.0002.199E] # NEW TAI LUE LETTER LOW VA
-199F ; [.283F.0020.0002.199F] # NEW TAI LUE LETTER LOW LA
-19A0 ; [.2840.0020.0002.19A0] # NEW TAI LUE LETTER HIGH HA
-19A1 ; [.2841.0020.0002.19A1] # NEW TAI LUE LETTER HIGH DA
-19A2 ; [.2842.0020.0002.19A2] # NEW TAI LUE LETTER HIGH BA
-19A3 ; [.2843.0020.0002.19A3] # NEW TAI LUE LETTER LOW HA
-19A4 ; [.2844.0020.0002.19A4] # NEW TAI LUE LETTER LOW DA
-19A5 ; [.2845.0020.0002.19A5] # NEW TAI LUE LETTER LOW BA
-19A6 ; [.2846.0020.0002.19A6] # NEW TAI LUE LETTER HIGH KVA
-19A7 ; [.2847.0020.0002.19A7] # NEW TAI LUE LETTER HIGH XVA
-19A8 ; [.2848.0020.0002.19A8] # NEW TAI LUE LETTER LOW KVA
-19A9 ; [.2849.0020.0002.19A9] # NEW TAI LUE LETTER LOW XVA
-19AA ; [.284A.0020.0002.19AA] # NEW TAI LUE LETTER HIGH SUA
-19AB ; [.284B.0020.0002.19AB] # NEW TAI LUE LETTER LOW SUA
-19B0 ; [.284C.0020.0002.19B0] # NEW TAI LUE VOWEL SIGN VOWEL SHORTENER
-19B1 ; [.284D.0020.0002.19B1] # NEW TAI LUE VOWEL SIGN AA
-19B2 ; [.284E.0020.0002.19B2] # NEW TAI LUE VOWEL SIGN II
-19B3 ; [.284F.0020.0002.19B3] # NEW TAI LUE VOWEL SIGN U
-19B4 ; [.2850.0020.0002.19B4] # NEW TAI LUE VOWEL SIGN UU
-19B5 ; [.2851.0020.0002.19B5] # NEW TAI LUE VOWEL SIGN E
-19B6 ; [.2852.0020.0002.19B6] # NEW TAI LUE VOWEL SIGN AE
-19B7 ; [.2853.0020.0002.19B7] # NEW TAI LUE VOWEL SIGN O
-19B8 ; [.2854.0020.0002.19B8] # NEW TAI LUE VOWEL SIGN OA
-19B9 ; [.2855.0020.0002.19B9] # NEW TAI LUE VOWEL SIGN UE
-19BA ; [.2856.0020.0002.19BA] # NEW TAI LUE VOWEL SIGN AY
-19BB ; [.2857.0020.0002.19BB] # NEW TAI LUE VOWEL SIGN AAY
-19BC ; [.2858.0020.0002.19BC] # NEW TAI LUE VOWEL SIGN UY
-19BD ; [.2859.0020.0002.19BD] # NEW TAI LUE VOWEL SIGN OY
-19BE ; [.285A.0020.0002.19BE] # NEW TAI LUE VOWEL SIGN OAY
-19BF ; [.285B.0020.0002.19BF] # NEW TAI LUE VOWEL SIGN UEY
-19C0 ; [.285C.0020.0002.19C0] # NEW TAI LUE VOWEL SIGN IY
-19C1 ; [.285D.0020.0002.19C1] # NEW TAI LUE LETTER FINAL V
-19C2 ; [.285E.0020.0002.19C2] # NEW TAI LUE LETTER FINAL NG
-19C3 ; [.285F.0020.0002.19C3] # NEW TAI LUE LETTER FINAL N
-19C4 ; [.2860.0020.0002.19C4] # NEW TAI LUE LETTER FINAL M
-19C5 ; [.2861.0020.0002.19C5] # NEW TAI LUE LETTER FINAL K
-19C6 ; [.2862.0020.0002.19C6] # NEW TAI LUE LETTER FINAL D
-19C7 ; [.2863.0020.0002.19C7] # NEW TAI LUE LETTER FINAL B
-19C8 ; [.2864.0020.0002.19C8] # NEW TAI LUE TONE MARK-1
-19C9 ; [.2865.0020.0002.19C9] # NEW TAI LUE TONE MARK-2
-1A20 ; [.2866.0020.0002.1A20] # TAI THAM LETTER HIGH KA
-1A21 ; [.2867.0020.0002.1A21] # TAI THAM LETTER HIGH KHA
-1A22 ; [.2868.0020.0002.1A22] # TAI THAM LETTER HIGH KXA
-1A23 ; [.2869.0020.0002.1A23] # TAI THAM LETTER LOW KA
-1A24 ; [.286A.0020.0002.1A24] # TAI THAM LETTER LOW KXA
-1A25 ; [.286B.0020.0002.1A25] # TAI THAM LETTER LOW KHA
-1A26 ; [.286C.0020.0002.1A26] # TAI THAM LETTER NGA
-1A58 ; [.286C.0020.0004.1A58] # TAI THAM SIGN MAI KANG LAI
-1A59 ; [.286C.0020.0004.1A59] # TAI THAM CONSONANT SIGN FINAL NGA
-1A27 ; [.286D.0020.0002.1A27] # TAI THAM LETTER HIGH CA
-1A28 ; [.286E.0020.0002.1A28] # TAI THAM LETTER HIGH CHA
-1A29 ; [.286F.0020.0002.1A29] # TAI THAM LETTER LOW CA
-1A2A ; [.2870.0020.0002.1A2A] # TAI THAM LETTER LOW SA
-1A2B ; [.2871.0020.0002.1A2B] # TAI THAM LETTER LOW CHA
-1A2C ; [.2872.0020.0002.1A2C] # TAI THAM LETTER NYA
-1A2D ; [.2873.0020.0002.1A2D] # TAI THAM LETTER RATA
-1A2E ; [.2874.0020.0002.1A2E] # TAI THAM LETTER HIGH RATHA
-1A2F ; [.2875.0020.0002.1A2F] # TAI THAM LETTER DA
-1A30 ; [.2876.0020.0002.1A30] # TAI THAM LETTER LOW RATHA
-1A31 ; [.2877.0020.0002.1A31] # TAI THAM LETTER RANA
-1A32 ; [.2878.0020.0002.1A32] # TAI THAM LETTER HIGH TA
-1A33 ; [.2879.0020.0002.1A33] # TAI THAM LETTER HIGH THA
-1A34 ; [.287A.0020.0002.1A34] # TAI THAM LETTER LOW TA
-1A35 ; [.287B.0020.0002.1A35] # TAI THAM LETTER LOW THA
-1A36 ; [.287C.0020.0002.1A36] # TAI THAM LETTER NA
-1A37 ; [.287D.0020.0002.1A37] # TAI THAM LETTER BA
-1A38 ; [.287E.0020.0002.1A38] # TAI THAM LETTER HIGH PA
-1A39 ; [.287F.0020.0002.1A39] # TAI THAM LETTER HIGH PHA
-1A3A ; [.2880.0020.0002.1A3A] # TAI THAM LETTER HIGH FA
-1A3B ; [.2881.0020.0002.1A3B] # TAI THAM LETTER LOW PA
-1A5A ; [.2881.0020.0004.1A5A] # TAI THAM CONSONANT SIGN LOW PA
-1A5B ; [.2881.0020.0004.1A5B] # TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA
-1A3C ; [.2882.0020.0002.1A3C] # TAI THAM LETTER LOW FA
-1A3D ; [.2883.0020.0002.1A3D] # TAI THAM LETTER LOW PHA
-1A3E ; [.2884.0020.0002.1A3E] # TAI THAM LETTER MA
-1A3F ; [.2885.0020.0002.1A3F] # TAI THAM LETTER LOW YA
-1A40 ; [.2886.0020.0002.1A40] # TAI THAM LETTER HIGH YA
-1A41 ; [.2887.0020.0002.1A41] # TAI THAM LETTER RA
-1A42 ; [.2888.0020.0002.1A42] # TAI THAM LETTER RUE
-1A43 ; [.2889.0020.0002.1A43] # TAI THAM LETTER LA
-1A44 ; [.288A.0020.0002.1A44] # TAI THAM LETTER LUE
-1A45 ; [.288B.0020.0002.1A45] # TAI THAM LETTER WA
-1A46 ; [.288C.0020.0002.1A46] # TAI THAM LETTER HIGH SHA
-1A54 ; [.288C.0020.0004.1A54][.28B2.0020.0004.1A54][.288C.0020.001F.1A54] # TAI THAM LETTER GREAT SA
-1A47 ; [.288D.0020.0002.1A47] # TAI THAM LETTER HIGH SSA
-1A48 ; [.288E.0020.0002.1A48] # TAI THAM LETTER HIGH SA
-1A49 ; [.288F.0020.0002.1A49] # TAI THAM LETTER HIGH HA
-1A4A ; [.2890.0020.0002.1A4A] # TAI THAM LETTER LLA
-1A4B ; [.2891.0020.0002.1A4B] # TAI THAM LETTER A
-1A4C ; [.2892.0020.0002.1A4C] # TAI THAM LETTER LOW HA
-1A53 ; [.2893.0020.0002.1A53] # TAI THAM LETTER LAE
-1A6B ; [.2894.0020.0002.1A6B] # TAI THAM VOWEL SIGN O
-1A55 ; [.2895.0020.0002.1A55] # TAI THAM CONSONANT SIGN MEDIAL RA
-1A56 ; [.2896.0020.0002.1A56] # TAI THAM CONSONANT SIGN MEDIAL LA
-1A57 ; [.2897.0020.0002.1A57] # TAI THAM CONSONANT SIGN LA TANG LAI
-1A5C ; [.2898.0020.0002.1A5C] # TAI THAM CONSONANT SIGN MA
-1A5D ; [.2899.0020.0002.1A5D] # TAI THAM CONSONANT SIGN BA
-1A5E ; [.289A.0020.0002.1A5E] # TAI THAM CONSONANT SIGN SA
-1A4D ; [.289B.0020.0002.1A4D] # TAI THAM LETTER I
-1A4E ; [.289C.0020.0002.1A4E] # TAI THAM LETTER II
-1A4F ; [.289D.0020.0002.1A4F] # TAI THAM LETTER U
-1A50 ; [.289E.0020.0002.1A50] # TAI THAM LETTER UU
-1A51 ; [.289F.0020.0002.1A51] # TAI THAM LETTER EE
-1A52 ; [.28A0.0020.0002.1A52] # TAI THAM LETTER OO
-1A61 ; [.28A1.0020.0002.1A61] # TAI THAM VOWEL SIGN A
-1A6C ; [.28A2.0020.0002.1A6C] # TAI THAM VOWEL SIGN OA BELOW
-1A62 ; [.28A3.0020.0002.1A62] # TAI THAM VOWEL SIGN MAI SAT
-1A63 ; [.28A4.0020.0002.1A63] # TAI THAM VOWEL SIGN AA
-1A64 ; [.28A4.0020.0004.1A64] # TAI THAM VOWEL SIGN TALL AA
-1A65 ; [.28A5.0020.0002.1A65] # TAI THAM VOWEL SIGN I
-1A66 ; [.28A6.0020.0002.1A66] # TAI THAM VOWEL SIGN II
-1A67 ; [.28A7.0020.0002.1A67] # TAI THAM VOWEL SIGN UE
-1A68 ; [.28A8.0020.0002.1A68] # TAI THAM VOWEL SIGN UUE
-1A69 ; [.28A9.0020.0002.1A69] # TAI THAM VOWEL SIGN U
-1A6A ; [.28AA.0020.0002.1A6A] # TAI THAM VOWEL SIGN UU
-1A6E ; [.28AB.0020.0002.1A6E] # TAI THAM VOWEL SIGN E
-1A6F ; [.28AC.0020.0002.1A6F] # TAI THAM VOWEL SIGN AE
-1A73 ; [.28AD.0020.0002.1A73] # TAI THAM VOWEL SIGN OA ABOVE
-1A70 ; [.28AE.0020.0002.1A70] # TAI THAM VOWEL SIGN OO
-1A71 ; [.28AF.0020.0002.1A71] # TAI THAM VOWEL SIGN AI
-1A72 ; [.28B0.0020.0002.1A72] # TAI THAM VOWEL SIGN THAM AI
-1A6D ; [.28B1.0020.0002.1A6D] # TAI THAM VOWEL SIGN OY
-1A60 ; [.28B2.0020.0002.1A60] # TAI THAM SIGN SAKOT
-AA00 ; [.28B3.0020.0002.AA00] # CHAM LETTER A
-AA01 ; [.28B4.0020.0002.AA01] # CHAM LETTER I
-AA02 ; [.28B5.0020.0002.AA02] # CHAM LETTER U
-AA03 ; [.28B6.0020.0002.AA03] # CHAM LETTER E
-AA04 ; [.28B7.0020.0002.AA04] # CHAM LETTER AI
-AA05 ; [.28B8.0020.0002.AA05] # CHAM LETTER O
-AA06 ; [.28B9.0020.0002.AA06] # CHAM LETTER KA
-AA07 ; [.28BA.0020.0002.AA07] # CHAM LETTER KHA
-AA08 ; [.28BB.0020.0002.AA08] # CHAM LETTER GA
-AA09 ; [.28BC.0020.0002.AA09] # CHAM LETTER GHA
-AA0A ; [.28BD.0020.0002.AA0A] # CHAM LETTER NGUE
-AA0B ; [.28BE.0020.0002.AA0B] # CHAM LETTER NGA
-AA0C ; [.28BF.0020.0002.AA0C] # CHAM LETTER CHA
-AA0D ; [.28C0.0020.0002.AA0D] # CHAM LETTER CHHA
-AA0E ; [.28C1.0020.0002.AA0E] # CHAM LETTER JA
-AA0F ; [.28C2.0020.0002.AA0F] # CHAM LETTER JHA
-AA10 ; [.28C3.0020.0002.AA10] # CHAM LETTER NHUE
-AA11 ; [.28C4.0020.0002.AA11] # CHAM LETTER NHA
-AA12 ; [.28C5.0020.0002.AA12] # CHAM LETTER NHJA
-AA13 ; [.28C6.0020.0002.AA13] # CHAM LETTER TA
-AA14 ; [.28C7.0020.0002.AA14] # CHAM LETTER THA
-AA15 ; [.28C8.0020.0002.AA15] # CHAM LETTER DA
-AA16 ; [.28C9.0020.0002.AA16] # CHAM LETTER DHA
-AA17 ; [.28CA.0020.0002.AA17] # CHAM LETTER NUE
-AA18 ; [.28CB.0020.0002.AA18] # CHAM LETTER NA
-AA19 ; [.28CC.0020.0002.AA19] # CHAM LETTER DDA
-AA1A ; [.28CD.0020.0002.AA1A] # CHAM LETTER PA
-AA1B ; [.28CE.0020.0002.AA1B] # CHAM LETTER PPA
-AA1C ; [.28CF.0020.0002.AA1C] # CHAM LETTER PHA
-AA1D ; [.28D0.0020.0002.AA1D] # CHAM LETTER BA
-AA1E ; [.28D1.0020.0002.AA1E] # CHAM LETTER BHA
-AA1F ; [.28D2.0020.0002.AA1F] # CHAM LETTER MUE
-AA20 ; [.28D3.0020.0002.AA20] # CHAM LETTER MA
-AA21 ; [.28D4.0020.0002.AA21] # CHAM LETTER BBA
-AA22 ; [.28D5.0020.0002.AA22] # CHAM LETTER YA
-AA23 ; [.28D6.0020.0002.AA23] # CHAM LETTER RA
-AA24 ; [.28D7.0020.0002.AA24] # CHAM LETTER LA
-AA25 ; [.28D8.0020.0002.AA25] # CHAM LETTER VA
-AA26 ; [.28D9.0020.0002.AA26] # CHAM LETTER SSA
-AA27 ; [.28DA.0020.0002.AA27] # CHAM LETTER SA
-AA28 ; [.28DB.0020.0002.AA28] # CHAM LETTER HA
-AA33 ; [.28DC.0020.0002.AA33] # CHAM CONSONANT SIGN YA
-AA34 ; [.28DD.0020.0002.AA34] # CHAM CONSONANT SIGN RA
-AA35 ; [.28DE.0020.0002.AA35] # CHAM CONSONANT SIGN LA
-AA36 ; [.28DF.0020.0002.AA36] # CHAM CONSONANT SIGN WA
-AA29 ; [.28E0.0020.0002.AA29] # CHAM VOWEL SIGN AA
-AA2A ; [.28E1.0020.0002.AA2A] # CHAM VOWEL SIGN I
-AA2B ; [.28E2.0020.0002.AA2B] # CHAM VOWEL SIGN II
-AA2C ; [.28E3.0020.0002.AA2C] # CHAM VOWEL SIGN EI
-AA2D ; [.28E4.0020.0002.AA2D] # CHAM VOWEL SIGN U
-AA2E ; [.28E5.0020.0002.AA2E] # CHAM VOWEL SIGN OE
-AA2F ; [.28E6.0020.0002.AA2F] # CHAM VOWEL SIGN O
-AA30 ; [.28E7.0020.0002.AA30] # CHAM VOWEL SIGN AI
-AA31 ; [.28E8.0020.0002.AA31] # CHAM VOWEL SIGN AU
-AA32 ; [.28E9.0020.0002.AA32] # CHAM VOWEL SIGN UE
-AA40 ; [.28EA.0020.0002.AA40] # CHAM LETTER FINAL K
-AA41 ; [.28EB.0020.0002.AA41] # CHAM LETTER FINAL G
-AA42 ; [.28EC.0020.0002.AA42] # CHAM LETTER FINAL NG
-AA43 ; [.28ED.0020.0002.AA43] # CHAM CONSONANT SIGN FINAL NG
-AA44 ; [.28EE.0020.0002.AA44] # CHAM LETTER FINAL CH
-AA45 ; [.28EF.0020.0002.AA45] # CHAM LETTER FINAL T
-AA46 ; [.28F0.0020.0002.AA46] # CHAM LETTER FINAL N
-AA47 ; [.28F1.0020.0002.AA47] # CHAM LETTER FINAL P
-AA48 ; [.28F2.0020.0002.AA48] # CHAM LETTER FINAL Y
-AA49 ; [.28F3.0020.0002.AA49] # CHAM LETTER FINAL R
-AA4A ; [.28F4.0020.0002.AA4A] # CHAM LETTER FINAL L
-AA4B ; [.28F5.0020.0002.AA4B] # CHAM LETTER FINAL SS
-AA4C ; [.28F6.0020.0002.AA4C] # CHAM CONSONANT SIGN FINAL M
-AA4D ; [.28F7.0020.0002.AA4D] # CHAM CONSONANT SIGN FINAL H
-1B05 ; [.28F8.0020.0002.1B05] # BALINESE LETTER AKARA
-1B06 ; [.28F9.0020.0002.1B06] # BALINESE LETTER AKARA TEDUNG
-1B05 1B35 ; [.28F9.0020.0002.1B06] # BALINESE LETTER AKARA TEDUNG
-1B07 ; [.28FA.0020.0002.1B07] # BALINESE LETTER IKARA
-1B08 ; [.28FB.0020.0002.1B08] # BALINESE LETTER IKARA TEDUNG
-1B07 1B35 ; [.28FB.0020.0002.1B08] # BALINESE LETTER IKARA TEDUNG
-1B09 ; [.28FC.0020.0002.1B09] # BALINESE LETTER UKARA
-1B0A ; [.28FD.0020.0002.1B0A] # BALINESE LETTER UKARA TEDUNG
-1B09 1B35 ; [.28FD.0020.0002.1B0A] # BALINESE LETTER UKARA TEDUNG
-1B0B ; [.28FE.0020.0002.1B0B] # BALINESE LETTER RA REPA
-1B0C ; [.28FF.0020.0002.1B0C] # BALINESE LETTER RA REPA TEDUNG
-1B0B 1B35 ; [.28FF.0020.0002.1B0C] # BALINESE LETTER RA REPA TEDUNG
-1B0D ; [.2900.0020.0002.1B0D] # BALINESE LETTER LA LENGA
-1B0E ; [.2901.0020.0002.1B0E] # BALINESE LETTER LA LENGA TEDUNG
-1B0D 1B35 ; [.2901.0020.0002.1B0E] # BALINESE LETTER LA LENGA TEDUNG
-1B0F ; [.2902.0020.0002.1B0F] # BALINESE LETTER EKARA
-1B10 ; [.2903.0020.0002.1B10] # BALINESE LETTER AIKARA
-1B11 ; [.2904.0020.0002.1B11] # BALINESE LETTER OKARA
-1B12 ; [.2905.0020.0002.1B12] # BALINESE LETTER OKARA TEDUNG
-1B11 1B35 ; [.2905.0020.0002.1B12] # BALINESE LETTER OKARA TEDUNG
-1B13 ; [.2906.0020.0002.1B13] # BALINESE LETTER KA
-1B45 ; [.2907.0020.0002.1B45] # BALINESE LETTER KAF SASAK
-1B46 ; [.2908.0020.0002.1B46] # BALINESE LETTER KHOT SASAK
-1B14 ; [.2909.0020.0002.1B14] # BALINESE LETTER KA MAHAPRANA
-1B15 ; [.290A.0020.0002.1B15] # BALINESE LETTER GA
-1B16 ; [.290B.0020.0002.1B16] # BALINESE LETTER GA GORA
-1B17 ; [.290C.0020.0002.1B17] # BALINESE LETTER NGA
-1B18 ; [.290D.0020.0002.1B18] # BALINESE LETTER CA
-1B19 ; [.290E.0020.0002.1B19] # BALINESE LETTER CA LACA
-1B1A ; [.290F.0020.0002.1B1A] # BALINESE LETTER JA
-1B1B ; [.2910.0020.0002.1B1B] # BALINESE LETTER JA JERA
-1B1C ; [.2911.0020.0002.1B1C] # BALINESE LETTER NYA
-1B1D ; [.2912.0020.0002.1B1D] # BALINESE LETTER TA LATIK
-1B1E ; [.2913.0020.0002.1B1E] # BALINESE LETTER TA MURDA MAHAPRANA
-1B1F ; [.2914.0020.0002.1B1F] # BALINESE LETTER DA MURDA ALPAPRANA
-1B20 ; [.2915.0020.0002.1B20] # BALINESE LETTER DA MURDA MAHAPRANA
-1B21 ; [.2916.0020.0002.1B21] # BALINESE LETTER NA RAMBAT
-1B22 ; [.2917.0020.0002.1B22] # BALINESE LETTER TA
-1B47 ; [.2918.0020.0002.1B47] # BALINESE LETTER TZIR SASAK
-1B23 ; [.2919.0020.0002.1B23] # BALINESE LETTER TA TAWA
-1B24 ; [.291A.0020.0002.1B24] # BALINESE LETTER DA
-1B25 ; [.291B.0020.0002.1B25] # BALINESE LETTER DA MADU
-1B26 ; [.291C.0020.0002.1B26] # BALINESE LETTER NA
-1B27 ; [.291D.0020.0002.1B27] # BALINESE LETTER PA
-1B48 ; [.291E.0020.0002.1B48] # BALINESE LETTER EF SASAK
-1B28 ; [.291F.0020.0002.1B28] # BALINESE LETTER PA KAPAL
-1B29 ; [.2920.0020.0002.1B29] # BALINESE LETTER BA
-1B2A ; [.2921.0020.0002.1B2A] # BALINESE LETTER BA KEMBANG
-1B2B ; [.2922.0020.0002.1B2B] # BALINESE LETTER MA
-1B2C ; [.2923.0020.0002.1B2C] # BALINESE LETTER YA
-1B2D ; [.2924.0020.0002.1B2D] # BALINESE LETTER RA
-1B2E ; [.2925.0020.0002.1B2E] # BALINESE LETTER LA
-1B2F ; [.2926.0020.0002.1B2F] # BALINESE LETTER WA
-1B49 ; [.2927.0020.0002.1B49] # BALINESE LETTER VE SASAK
-1B30 ; [.2928.0020.0002.1B30] # BALINESE LETTER SA SAGA
-1B31 ; [.2929.0020.0002.1B31] # BALINESE LETTER SA SAPA
-1B32 ; [.292A.0020.0002.1B32] # BALINESE LETTER SA
-1B4A ; [.292B.0020.0002.1B4A] # BALINESE LETTER ZAL SASAK
-1B4B ; [.292C.0020.0002.1B4B] # BALINESE LETTER ASYURA SASAK
-1B33 ; [.292D.0020.0002.1B33] # BALINESE LETTER HA
-1B35 ; [.292E.0020.0002.1B35] # BALINESE VOWEL SIGN TEDUNG
-1B36 ; [.292F.0020.0002.1B36] # BALINESE VOWEL SIGN ULU
-1B37 ; [.2930.0020.0002.1B37] # BALINESE VOWEL SIGN ULU SARI
-1B38 ; [.2931.0020.0002.1B38] # BALINESE VOWEL SIGN SUKU
-1B39 ; [.2932.0020.0002.1B39] # BALINESE VOWEL SIGN SUKU ILUT
-1B3A ; [.2933.0020.0002.1B3A] # BALINESE VOWEL SIGN RA REPA
-1B3B ; [.2934.0020.0002.1B3B] # BALINESE VOWEL SIGN RA REPA TEDUNG
-1B3A 1B35 ; [.2934.0020.0002.1B3B] # BALINESE VOWEL SIGN RA REPA TEDUNG
-1B3C ; [.2935.0020.0002.1B3C] # BALINESE VOWEL SIGN LA LENGA
-1B3D ; [.2936.0020.0002.1B3D] # BALINESE VOWEL SIGN LA LENGA TEDUNG
-1B3C 1B35 ; [.2936.0020.0002.1B3D] # BALINESE VOWEL SIGN LA LENGA TEDUNG
-1B3E ; [.2937.0020.0002.1B3E] # BALINESE VOWEL SIGN TALING
-1B3F ; [.2938.0020.0002.1B3F] # BALINESE VOWEL SIGN TALING REPA
-1B40 ; [.2939.0020.0002.1B40] # BALINESE VOWEL SIGN TALING TEDUNG
-1B3E 1B35 ; [.2939.0020.0002.1B40] # BALINESE VOWEL SIGN TALING TEDUNG
-1B41 ; [.293A.0020.0002.1B41] # BALINESE VOWEL SIGN TALING REPA TEDUNG
-1B3F 1B35 ; [.293A.0020.0002.1B41] # BALINESE VOWEL SIGN TALING REPA TEDUNG
-1B42 ; [.293B.0020.0002.1B42] # BALINESE VOWEL SIGN PEPET
-1B43 ; [.293C.0020.0002.1B43] # BALINESE VOWEL SIGN PEPET TEDUNG
-1B42 1B35 ; [.293C.0020.0002.1B43] # BALINESE VOWEL SIGN PEPET TEDUNG
-1B44 ; [.293D.0020.0002.1B44] # BALINESE ADEG ADEG
-A984 ; [.293E.0020.0002.A984] # JAVANESE LETTER A
-A985 ; [.293F.0020.0002.A985] # JAVANESE LETTER I KAWI
-A986 ; [.2940.0020.0002.A986] # JAVANESE LETTER I
-A987 ; [.2941.0020.0002.A987] # JAVANESE LETTER II
-A988 ; [.2942.0020.0002.A988] # JAVANESE LETTER U
-A989 ; [.2943.0020.0002.A989] # JAVANESE LETTER PA CEREK
-A98A ; [.2944.0020.0002.A98A] # JAVANESE LETTER NGA LELET
-A98B ; [.2945.0020.0002.A98B] # JAVANESE LETTER NGA LELET RASWADI
-A98C ; [.2946.0020.0002.A98C] # JAVANESE LETTER E
-A98D ; [.2947.0020.0002.A98D] # JAVANESE LETTER AI
-A98E ; [.2948.0020.0002.A98E] # JAVANESE LETTER O
-A98F ; [.2949.0020.0002.A98F] # JAVANESE LETTER KA
-A990 ; [.294A.0020.0002.A990] # JAVANESE LETTER KA SASAK
-A991 ; [.294B.0020.0002.A991] # JAVANESE LETTER KA MURDA
-A992 ; [.294C.0020.0002.A992] # JAVANESE LETTER GA
-A993 ; [.294D.0020.0002.A993] # JAVANESE LETTER GA MURDA
-A994 ; [.294E.0020.0002.A994] # JAVANESE LETTER NGA
-A995 ; [.294F.0020.0002.A995] # JAVANESE LETTER CA
-A996 ; [.2950.0020.0002.A996] # JAVANESE LETTER CA MURDA
-A997 ; [.2951.0020.0002.A997] # JAVANESE LETTER JA
-A998 ; [.2952.0020.0002.A998] # JAVANESE LETTER NYA MURDA
-A999 ; [.2953.0020.0002.A999] # JAVANESE LETTER JA MAHAPRANA
-A99A ; [.2954.0020.0002.A99A] # JAVANESE LETTER NYA
-A99B ; [.2955.0020.0002.A99B] # JAVANESE LETTER TTA
-A99C ; [.2956.0020.0002.A99C] # JAVANESE LETTER TTA MAHAPRANA
-A99D ; [.2957.0020.0002.A99D] # JAVANESE LETTER DDA
-A99E ; [.2958.0020.0002.A99E] # JAVANESE LETTER DDA MAHAPRANA
-A99F ; [.2959.0020.0002.A99F] # JAVANESE LETTER NA MURDA
-A9A0 ; [.295A.0020.0002.A9A0] # JAVANESE LETTER TA
-A9A1 ; [.295B.0020.0002.A9A1] # JAVANESE LETTER TA MURDA
-A9A2 ; [.295C.0020.0002.A9A2] # JAVANESE LETTER DA
-A9A3 ; [.295D.0020.0002.A9A3] # JAVANESE LETTER DA MAHAPRANA
-A9A4 ; [.295E.0020.0002.A9A4] # JAVANESE LETTER NA
-A9A5 ; [.295F.0020.0002.A9A5] # JAVANESE LETTER PA
-A9A6 ; [.2960.0020.0002.A9A6] # JAVANESE LETTER PA MURDA
-A9A7 ; [.2961.0020.0002.A9A7] # JAVANESE LETTER BA
-A9A8 ; [.2962.0020.0002.A9A8] # JAVANESE LETTER BA MURDA
-A9A9 ; [.2963.0020.0002.A9A9] # JAVANESE LETTER MA
-A9AA ; [.2964.0020.0002.A9AA] # JAVANESE LETTER YA
-A9BE ; [.2965.0020.0002.A9BE] # JAVANESE CONSONANT SIGN PENGKAL
-A9AB ; [.2966.0020.0002.A9AB] # JAVANESE LETTER RA
-A9AC ; [.2966.0020.0004.A9AC] # JAVANESE LETTER RA AGUNG
-A9BF ; [.2967.0020.0002.A9BF] # JAVANESE CONSONANT SIGN CAKRA
-A9AD ; [.2968.0020.0002.A9AD] # JAVANESE LETTER LA
-A9AE ; [.2969.0020.0002.A9AE] # JAVANESE LETTER WA
-A9AF ; [.296A.0020.0002.A9AF] # JAVANESE LETTER SA MURDA
-A9B0 ; [.296B.0020.0002.A9B0] # JAVANESE LETTER SA MAHAPRANA
-A9B1 ; [.296C.0020.0002.A9B1] # JAVANESE LETTER SA
-A9B2 ; [.296D.0020.0002.A9B2] # JAVANESE LETTER HA
-A9B4 ; [.296E.0020.0002.A9B4] # JAVANESE VOWEL SIGN TARUNG
-A9BC ; [.296F.0020.0002.A9BC] # JAVANESE VOWEL SIGN PEPET
-A9B6 ; [.2970.0020.0002.A9B6] # JAVANESE VOWEL SIGN WULU
-A9B7 ; [.2971.0020.0002.A9B7] # JAVANESE VOWEL SIGN WULU MELIK
-A9B8 ; [.2972.0020.0002.A9B8] # JAVANESE VOWEL SIGN SUKU
-A9B9 ; [.2973.0020.0002.A9B9] # JAVANESE VOWEL SIGN SUKU MENDUT
-A9BD ; [.2974.0020.0002.A9BD] # JAVANESE CONSONANT SIGN KERET
-A9BA ; [.2975.0020.0002.A9BA] # JAVANESE VOWEL SIGN TALING
-A9BB ; [.2976.0020.0002.A9BB] # JAVANESE VOWEL SIGN DIRGA MURE
-A9B5 ; [.2977.0020.0002.A9B5] # JAVANESE VOWEL SIGN TOLONG
-A9C0 ; [.2978.0020.0002.A9C0] # JAVANESE PANGKON
-1880 ; [.2979.0020.0002.1880] # MONGOLIAN LETTER ALI GALI ANUSVARA ONE
-1881 ; [.297A.0020.0002.1881] # MONGOLIAN LETTER ALI GALI VISARGA ONE
-1882 ; [.297B.0020.0002.1882] # MONGOLIAN LETTER ALI GALI DAMARU
-1883 ; [.297C.0020.0002.1883] # MONGOLIAN LETTER ALI GALI UBADAMA
-1884 ; [.297D.0020.0002.1884] # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
-1885 ; [.297E.0020.0002.1885] # MONGOLIAN LETTER ALI GALI BALUDA
-1886 ; [.297F.0020.0002.1886] # MONGOLIAN LETTER ALI GALI THREE BALUDA
-1843 ; [.2980.0020.0002.1843] # MONGOLIAN LETTER TODO LONG VOWEL SIGN
-1820 ; [.2981.0020.0002.1820] # MONGOLIAN LETTER A
-1887 ; [.2982.0020.0002.1887] # MONGOLIAN LETTER ALI GALI A
-1821 ; [.2983.0020.0002.1821] # MONGOLIAN LETTER E
-1844 ; [.2984.0020.0002.1844] # MONGOLIAN LETTER TODO E
-185D ; [.2985.0020.0002.185D] # MONGOLIAN LETTER SIBE E
-1822 ; [.2986.0020.0002.1822] # MONGOLIAN LETTER I
-1845 ; [.2987.0020.0002.1845] # MONGOLIAN LETTER TODO I
-185E ; [.2988.0020.0002.185E] # MONGOLIAN LETTER SIBE I
-1873 ; [.2989.0020.0002.1873] # MONGOLIAN LETTER MANCHU I
-1888 ; [.298A.0020.0002.1888] # MONGOLIAN LETTER ALI GALI I
-185F ; [.298B.0020.0002.185F] # MONGOLIAN LETTER SIBE IY
-1823 ; [.298C.0020.0002.1823] # MONGOLIAN LETTER O
-1846 ; [.298D.0020.0002.1846] # MONGOLIAN LETTER TODO O
-1824 ; [.298E.0020.0002.1824] # MONGOLIAN LETTER U
-1847 ; [.298F.0020.0002.1847] # MONGOLIAN LETTER TODO U
-1861 ; [.2990.0020.0002.1861] # MONGOLIAN LETTER SIBE U
-1825 ; [.2991.0020.0002.1825] # MONGOLIAN LETTER OE
-1848 ; [.2992.0020.0002.1848] # MONGOLIAN LETTER TODO OE
-1826 ; [.2993.0020.0002.1826] # MONGOLIAN LETTER UE
-1849 ; [.2994.0020.0002.1849] # MONGOLIAN LETTER TODO UE
-1860 ; [.2995.0020.0002.1860] # MONGOLIAN LETTER SIBE UE
-1827 ; [.2996.0020.0002.1827] # MONGOLIAN LETTER EE
-1828 ; [.2997.0020.0002.1828] # MONGOLIAN LETTER NA
-1829 ; [.2998.0020.0002.1829] # MONGOLIAN LETTER ANG
-184A ; [.2999.0020.0002.184A] # MONGOLIAN LETTER TODO ANG
-1862 ; [.299A.0020.0002.1862] # MONGOLIAN LETTER SIBE ANG
-188A ; [.299B.0020.0002.188A] # MONGOLIAN LETTER ALI GALI NGA
-189B ; [.299C.0020.0002.189B] # MONGOLIAN LETTER MANCHU ALI GALI NGA
-182A ; [.299D.0020.0002.182A] # MONGOLIAN LETTER BA
-184B ; [.299E.0020.0002.184B] # MONGOLIAN LETTER TODO BA
-182B ; [.299F.0020.0002.182B] # MONGOLIAN LETTER PA
-184C ; [.29A0.0020.0002.184C] # MONGOLIAN LETTER TODO PA
-1866 ; [.29A1.0020.0002.1866] # MONGOLIAN LETTER SIBE PA
-182C ; [.29A2.0020.0002.182C] # MONGOLIAN LETTER QA
-184D ; [.29A3.0020.0002.184D] # MONGOLIAN LETTER TODO QA
-182D ; [.29A4.0020.0002.182D] # MONGOLIAN LETTER GA
-184E ; [.29A5.0020.0002.184E] # MONGOLIAN LETTER TODO GA
-1864 ; [.29A6.0020.0002.1864] # MONGOLIAN LETTER SIBE GA
-189A ; [.29A7.0020.0002.189A] # MONGOLIAN LETTER MANCHU ALI GALI GHA
-1865 ; [.29A8.0020.0002.1865] # MONGOLIAN LETTER SIBE HA
-182E ; [.29A9.0020.0002.182E] # MONGOLIAN LETTER MA
-184F ; [.29AA.0020.0002.184F] # MONGOLIAN LETTER TODO MA
-182F ; [.29AB.0020.0002.182F] # MONGOLIAN LETTER LA
-1830 ; [.29AC.0020.0002.1830] # MONGOLIAN LETTER SA
-1831 ; [.29AD.0020.0002.1831] # MONGOLIAN LETTER SHA
-1867 ; [.29AE.0020.0002.1867] # MONGOLIAN LETTER SIBE SHA
-189C ; [.29AF.0020.0002.189C] # MONGOLIAN LETTER MANCHU ALI GALI CA
-189D ; [.29B0.0020.0002.189D] # MONGOLIAN LETTER MANCHU ALI GALI JHA
-18A2 ; [.29B1.0020.0002.18A2] # MONGOLIAN LETTER MANCHU ALI GALI SSA
-18A4 ; [.29B2.0020.0002.18A4] # MONGOLIAN LETTER MANCHU ALI GALI ZHA
-18A5 ; [.29B3.0020.0002.18A5] # MONGOLIAN LETTER MANCHU ALI GALI ZA
-1832 ; [.29B4.0020.0002.1832] # MONGOLIAN LETTER TA
-1850 ; [.29B5.0020.0002.1850] # MONGOLIAN LETTER TODO TA
-1868 ; [.29B6.0020.0002.1868] # MONGOLIAN LETTER SIBE TA
-1833 ; [.29B7.0020.0002.1833] # MONGOLIAN LETTER DA
-1851 ; [.29B8.0020.0002.1851] # MONGOLIAN LETTER TODO DA
-1869 ; [.29B9.0020.0002.1869] # MONGOLIAN LETTER SIBE DA
-1834 ; [.29BA.0020.0002.1834] # MONGOLIAN LETTER CHA
-1852 ; [.29BB.0020.0002.1852] # MONGOLIAN LETTER TODO CHA
-1871 ; [.29BC.0020.0002.1871] # MONGOLIAN LETTER SIBE CHA
-185C ; [.29BD.0020.0002.185C] # MONGOLIAN LETTER TODO DZA
-188B ; [.29BE.0020.0002.188B] # MONGOLIAN LETTER ALI GALI CA
-1835 ; [.29BF.0020.0002.1835] # MONGOLIAN LETTER JA
-1853 ; [.29C0.0020.0002.1853] # MONGOLIAN LETTER TODO JA
-186A ; [.29C1.0020.0002.186A] # MONGOLIAN LETTER SIBE JA
-1877 ; [.29C2.0020.0002.1877] # MONGOLIAN LETTER MANCHU ZHA
-1836 ; [.29C3.0020.0002.1836] # MONGOLIAN LETTER YA
-1855 ; [.29C4.0020.0002.1855] # MONGOLIAN LETTER TODO YA
-1872 ; [.29C5.0020.0002.1872] # MONGOLIAN LETTER SIBE ZHA
-1837 ; [.29C6.0020.0002.1837] # MONGOLIAN LETTER RA
-1875 ; [.29C7.0020.0002.1875] # MONGOLIAN LETTER MANCHU RA
-1838 ; [.29C8.0020.0002.1838] # MONGOLIAN LETTER WA
-1856 ; [.29C9.0020.0002.1856] # MONGOLIAN LETTER TODO WA
-1839 ; [.29CA.0020.0002.1839] # MONGOLIAN LETTER FA
-186B ; [.29CB.0020.0002.186B] # MONGOLIAN LETTER SIBE FA
-1876 ; [.29CC.0020.0002.1876] # MONGOLIAN LETTER MANCHU FA
-183A ; [.29CD.0020.0002.183A] # MONGOLIAN LETTER KA
-1857 ; [.29CE.0020.0002.1857] # MONGOLIAN LETTER TODO KA
-1863 ; [.29CF.0020.0002.1863] # MONGOLIAN LETTER SIBE KA
-1874 ; [.29D0.0020.0002.1874] # MONGOLIAN LETTER MANCHU KA
-1889 ; [.29D1.0020.0002.1889] # MONGOLIAN LETTER ALI GALI KA
-183B ; [.29D2.0020.0002.183B] # MONGOLIAN LETTER KHA
-183C ; [.29D3.0020.0002.183C] # MONGOLIAN LETTER TSA
-1854 ; [.29D4.0020.0002.1854] # MONGOLIAN LETTER TODO TSA
-186E ; [.29D5.0020.0002.186E] # MONGOLIAN LETTER SIBE TSA
-183D ; [.29D6.0020.0002.183D] # MONGOLIAN LETTER ZA
-186F ; [.29D7.0020.0002.186F] # MONGOLIAN LETTER SIBE ZA
-1858 ; [.29D8.0020.0002.1858] # MONGOLIAN LETTER TODO GAA
-186C ; [.29D9.0020.0002.186C] # MONGOLIAN LETTER SIBE GAA
-183E ; [.29DA.0020.0002.183E] # MONGOLIAN LETTER HAA
-1859 ; [.29DB.0020.0002.1859] # MONGOLIAN LETTER TODO HAA
-186D ; [.29DC.0020.0002.186D] # MONGOLIAN LETTER SIBE HAA
-183F ; [.29DD.0020.0002.183F] # MONGOLIAN LETTER ZRA
-1840 ; [.29DE.0020.0002.1840] # MONGOLIAN LETTER LHA
-1841 ; [.29DF.0020.0002.1841] # MONGOLIAN LETTER ZHI
-1842 ; [.29E0.0020.0002.1842] # MONGOLIAN LETTER CHI
-185A ; [.29E1.0020.0002.185A] # MONGOLIAN LETTER TODO JIA
-185B ; [.29E2.0020.0002.185B] # MONGOLIAN LETTER TODO NIA
-1870 ; [.29E3.0020.0002.1870] # MONGOLIAN LETTER SIBE RAA
-188C ; [.29E4.0020.0002.188C] # MONGOLIAN LETTER ALI GALI TTA
-189E ; [.29E5.0020.0002.189E] # MONGOLIAN LETTER MANCHU ALI GALI TTA
-188D ; [.29E6.0020.0002.188D] # MONGOLIAN LETTER ALI GALI TTHA
-188E ; [.29E7.0020.0002.188E] # MONGOLIAN LETTER ALI GALI DDA
-189F ; [.29E8.0020.0002.189F] # MONGOLIAN LETTER MANCHU ALI GALI DDHA
-188F ; [.29E9.0020.0002.188F] # MONGOLIAN LETTER ALI GALI NNA
-1890 ; [.29EA.0020.0002.1890] # MONGOLIAN LETTER ALI GALI TA
-1898 ; [.29EB.0020.0002.1898] # MONGOLIAN LETTER TODO ALI GALI TA
-18A0 ; [.29EC.0020.0002.18A0] # MONGOLIAN LETTER MANCHU ALI GALI TA
-1891 ; [.29ED.0020.0002.1891] # MONGOLIAN LETTER ALI GALI DA
-18A1 ; [.29EE.0020.0002.18A1] # MONGOLIAN LETTER MANCHU ALI GALI DHA
-1892 ; [.29EF.0020.0002.1892] # MONGOLIAN LETTER ALI GALI PA
-1893 ; [.29F0.0020.0002.1893] # MONGOLIAN LETTER ALI GALI PHA
-18A8 ; [.29F1.0020.0002.18A8] # MONGOLIAN LETTER MANCHU ALI GALI BHA
-1894 ; [.29F2.0020.0002.1894] # MONGOLIAN LETTER ALI GALI SSA
-18A3 ; [.29F3.0020.0002.18A3] # MONGOLIAN LETTER MANCHU ALI GALI CYA
-1895 ; [.29F4.0020.0002.1895] # MONGOLIAN LETTER ALI GALI ZHA
-1899 ; [.29F5.0020.0002.1899] # MONGOLIAN LETTER TODO ALI GALI ZHA
-1896 ; [.29F6.0020.0002.1896] # MONGOLIAN LETTER ALI GALI ZA
-1897 ; [.29F7.0020.0002.1897] # MONGOLIAN LETTER ALI GALI AH
-18A6 ; [.29F8.0020.0002.18A6] # MONGOLIAN LETTER ALI GALI HALF U
-18A7 ; [.29F9.0020.0002.18A7] # MONGOLIAN LETTER ALI GALI HALF YA
-18AA ; [.29FA.0020.0002.18AA] # MONGOLIAN LETTER MANCHU ALI GALI LHA
-18A9 ; [.29FB.0020.0002.18A9] # MONGOLIAN LETTER ALI GALI DAGALGA
-1C5A ; [.29FC.0020.0002.1C5A] # OL CHIKI LETTER LA
-1C5B ; [.29FD.0020.0002.1C5B] # OL CHIKI LETTER AT
-1C5C ; [.29FE.0020.0002.1C5C] # OL CHIKI LETTER AG
-1C5D ; [.29FF.0020.0002.1C5D] # OL CHIKI LETTER ANG
-1C5E ; [.2A00.0020.0002.1C5E] # OL CHIKI LETTER AL
-1C5F ; [.2A01.0020.0002.1C5F] # OL CHIKI LETTER LAA
-1C60 ; [.2A02.0020.0002.1C60] # OL CHIKI LETTER AAK
-1C61 ; [.2A03.0020.0002.1C61] # OL CHIKI LETTER AAJ
-1C62 ; [.2A04.0020.0002.1C62] # OL CHIKI LETTER AAM
-1C63 ; [.2A05.0020.0002.1C63] # OL CHIKI LETTER AAW
-1C64 ; [.2A06.0020.0002.1C64] # OL CHIKI LETTER LI
-1C65 ; [.2A07.0020.0002.1C65] # OL CHIKI LETTER IS
-1C66 ; [.2A08.0020.0002.1C66] # OL CHIKI LETTER IH
-1C67 ; [.2A09.0020.0002.1C67] # OL CHIKI LETTER INY
-1C68 ; [.2A0A.0020.0002.1C68] # OL CHIKI LETTER IR
-1C69 ; [.2A0B.0020.0002.1C69] # OL CHIKI LETTER LU
-1C6A ; [.2A0C.0020.0002.1C6A] # OL CHIKI LETTER UC
-1C6B ; [.2A0D.0020.0002.1C6B] # OL CHIKI LETTER UD
-1C6C ; [.2A0E.0020.0002.1C6C] # OL CHIKI LETTER UNN
-1C6D ; [.2A0F.0020.0002.1C6D] # OL CHIKI LETTER UY
-1C6E ; [.2A10.0020.0002.1C6E] # OL CHIKI LETTER LE
-1C6F ; [.2A11.0020.0002.1C6F] # OL CHIKI LETTER EP
-1C70 ; [.2A12.0020.0002.1C70] # OL CHIKI LETTER EDD
-1C71 ; [.2A13.0020.0002.1C71] # OL CHIKI LETTER EN
-1C72 ; [.2A14.0020.0002.1C72] # OL CHIKI LETTER ERR
-1C73 ; [.2A15.0020.0002.1C73] # OL CHIKI LETTER LO
-1C74 ; [.2A16.0020.0002.1C74] # OL CHIKI LETTER OTT
-1C75 ; [.2A17.0020.0002.1C75] # OL CHIKI LETTER OB
-1C76 ; [.2A18.0020.0002.1C76] # OL CHIKI LETTER OV
-1C77 ; [.2A19.0020.0002.1C77] # OL CHIKI LETTER OH
-1C78 ; [.2A1A.0020.0002.1C78] # OL CHIKI MU TTUDDAG
-1C79 ; [.2A1B.0020.0002.1C79] # OL CHIKI GAAHLAA TTUDDAAG
-1C7A ; [.2A1C.0020.0002.1C7A] # OL CHIKI MU-GAAHLAA TTUDDAAG
-1C7B ; [.2A1D.0020.0002.1C7B] # OL CHIKI RELAA
-1C7C ; [.2A1E.0020.0002.1C7C] # OL CHIKI PHAARKAA
-1C7D ; [.2A1F.0020.0002.1C7D] # OL CHIKI AHAD
-13A0 ; [.2A20.0020.0002.13A0] # CHEROKEE LETTER A
-13A1 ; [.2A21.0020.0002.13A1] # CHEROKEE LETTER E
-13A2 ; [.2A22.0020.0002.13A2] # CHEROKEE LETTER I
-13A3 ; [.2A23.0020.0002.13A3] # CHEROKEE LETTER O
-13A4 ; [.2A24.0020.0002.13A4] # CHEROKEE LETTER U
-13A5 ; [.2A25.0020.0002.13A5] # CHEROKEE LETTER V
-13A6 ; [.2A26.0020.0002.13A6] # CHEROKEE LETTER GA
-13A7 ; [.2A27.0020.0002.13A7] # CHEROKEE LETTER KA
-13A8 ; [.2A28.0020.0002.13A8] # CHEROKEE LETTER GE
-13A9 ; [.2A29.0020.0002.13A9] # CHEROKEE LETTER GI
-13AA ; [.2A2A.0020.0002.13AA] # CHEROKEE LETTER GO
-13AB ; [.2A2B.0020.0002.13AB] # CHEROKEE LETTER GU
-13AC ; [.2A2C.0020.0002.13AC] # CHEROKEE LETTER GV
-13AD ; [.2A2D.0020.0002.13AD] # CHEROKEE LETTER HA
-13AE ; [.2A2E.0020.0002.13AE] # CHEROKEE LETTER HE
-13AF ; [.2A2F.0020.0002.13AF] # CHEROKEE LETTER HI
-13B0 ; [.2A30.0020.0002.13B0] # CHEROKEE LETTER HO
-13B1 ; [.2A31.0020.0002.13B1] # CHEROKEE LETTER HU
-13B2 ; [.2A32.0020.0002.13B2] # CHEROKEE LETTER HV
-13B3 ; [.2A33.0020.0002.13B3] # CHEROKEE LETTER LA
-13B4 ; [.2A34.0020.0002.13B4] # CHEROKEE LETTER LE
-13B5 ; [.2A35.0020.0002.13B5] # CHEROKEE LETTER LI
-13B6 ; [.2A36.0020.0002.13B6] # CHEROKEE LETTER LO
-13B7 ; [.2A37.0020.0002.13B7] # CHEROKEE LETTER LU
-13B8 ; [.2A38.0020.0002.13B8] # CHEROKEE LETTER LV
-13B9 ; [.2A39.0020.0002.13B9] # CHEROKEE LETTER MA
-13BA ; [.2A3A.0020.0002.13BA] # CHEROKEE LETTER ME
-13BB ; [.2A3B.0020.0002.13BB] # CHEROKEE LETTER MI
-13BC ; [.2A3C.0020.0002.13BC] # CHEROKEE LETTER MO
-13BD ; [.2A3D.0020.0002.13BD] # CHEROKEE LETTER MU
-13BE ; [.2A3E.0020.0002.13BE] # CHEROKEE LETTER NA
-13BF ; [.2A3F.0020.0002.13BF] # CHEROKEE LETTER HNA
-13C0 ; [.2A40.0020.0002.13C0] # CHEROKEE LETTER NAH
-13C1 ; [.2A41.0020.0002.13C1] # CHEROKEE LETTER NE
-13C2 ; [.2A42.0020.0002.13C2] # CHEROKEE LETTER NI
-13C3 ; [.2A43.0020.0002.13C3] # CHEROKEE LETTER NO
-13C4 ; [.2A44.0020.0002.13C4] # CHEROKEE LETTER NU
-13C5 ; [.2A45.0020.0002.13C5] # CHEROKEE LETTER NV
-13C6 ; [.2A46.0020.0002.13C6] # CHEROKEE LETTER QUA
-13C7 ; [.2A47.0020.0002.13C7] # CHEROKEE LETTER QUE
-13C8 ; [.2A48.0020.0002.13C8] # CHEROKEE LETTER QUI
-13C9 ; [.2A49.0020.0002.13C9] # CHEROKEE LETTER QUO
-13CA ; [.2A4A.0020.0002.13CA] # CHEROKEE LETTER QUU
-13CB ; [.2A4B.0020.0002.13CB] # CHEROKEE LETTER QUV
-13CC ; [.2A4C.0020.0002.13CC] # CHEROKEE LETTER SA
-13CD ; [.2A4D.0020.0002.13CD] # CHEROKEE LETTER S
-13CE ; [.2A4E.0020.0002.13CE] # CHEROKEE LETTER SE
-13CF ; [.2A4F.0020.0002.13CF] # CHEROKEE LETTER SI
-13D0 ; [.2A50.0020.0002.13D0] # CHEROKEE LETTER SO
-13D1 ; [.2A51.0020.0002.13D1] # CHEROKEE LETTER SU
-13D2 ; [.2A52.0020.0002.13D2] # CHEROKEE LETTER SV
-13D3 ; [.2A53.0020.0002.13D3] # CHEROKEE LETTER DA
-13D4 ; [.2A54.0020.0002.13D4] # CHEROKEE LETTER TA
-13D5 ; [.2A55.0020.0002.13D5] # CHEROKEE LETTER DE
-13D6 ; [.2A56.0020.0002.13D6] # CHEROKEE LETTER TE
-13D7 ; [.2A57.0020.0002.13D7] # CHEROKEE LETTER DI
-13D8 ; [.2A58.0020.0002.13D8] # CHEROKEE LETTER TI
-13D9 ; [.2A59.0020.0002.13D9] # CHEROKEE LETTER DO
-13DA ; [.2A5A.0020.0002.13DA] # CHEROKEE LETTER DU
-13DB ; [.2A5B.0020.0002.13DB] # CHEROKEE LETTER DV
-13DC ; [.2A5C.0020.0002.13DC] # CHEROKEE LETTER DLA
-13DD ; [.2A5D.0020.0002.13DD] # CHEROKEE LETTER TLA
-13DE ; [.2A5E.0020.0002.13DE] # CHEROKEE LETTER TLE
-13DF ; [.2A5F.0020.0002.13DF] # CHEROKEE LETTER TLI
-13E0 ; [.2A60.0020.0002.13E0] # CHEROKEE LETTER TLO
-13E1 ; [.2A61.0020.0002.13E1] # CHEROKEE LETTER TLU
-13E2 ; [.2A62.0020.0002.13E2] # CHEROKEE LETTER TLV
-13E3 ; [.2A63.0020.0002.13E3] # CHEROKEE LETTER TSA
-13E4 ; [.2A64.0020.0002.13E4] # CHEROKEE LETTER TSE
-13E5 ; [.2A65.0020.0002.13E5] # CHEROKEE LETTER TSI
-13E6 ; [.2A66.0020.0002.13E6] # CHEROKEE LETTER TSO
-13E7 ; [.2A67.0020.0002.13E7] # CHEROKEE LETTER TSU
-13E8 ; [.2A68.0020.0002.13E8] # CHEROKEE LETTER TSV
-13E9 ; [.2A69.0020.0002.13E9] # CHEROKEE LETTER WA
-13EA ; [.2A6A.0020.0002.13EA] # CHEROKEE LETTER WE
-13EB ; [.2A6B.0020.0002.13EB] # CHEROKEE LETTER WI
-13EC ; [.2A6C.0020.0002.13EC] # CHEROKEE LETTER WO
-13ED ; [.2A6D.0020.0002.13ED] # CHEROKEE LETTER WU
-13EE ; [.2A6E.0020.0002.13EE] # CHEROKEE LETTER WV
-13EF ; [.2A6F.0020.0002.13EF] # CHEROKEE LETTER YA
-13F0 ; [.2A70.0020.0002.13F0] # CHEROKEE LETTER YE
-13F1 ; [.2A71.0020.0002.13F1] # CHEROKEE LETTER YI
-13F2 ; [.2A72.0020.0002.13F2] # CHEROKEE LETTER YO
-13F3 ; [.2A73.0020.0002.13F3] # CHEROKEE LETTER YU
-13F4 ; [.2A74.0020.0002.13F4] # CHEROKEE LETTER YV
-1401 ; [.2A75.0020.0002.1401] # CANADIAN SYLLABICS E
-1402 ; [.2A76.0020.0002.1402] # CANADIAN SYLLABICS AAI
-1403 ; [.2A77.0020.0002.1403] # CANADIAN SYLLABICS I
-1404 ; [.2A78.0020.0002.1404] # CANADIAN SYLLABICS II
-1405 ; [.2A79.0020.0002.1405] # CANADIAN SYLLABICS O
-1406 ; [.2A7A.0020.0002.1406] # CANADIAN SYLLABICS OO
-1407 ; [.2A7B.0020.0002.1407] # CANADIAN SYLLABICS Y-CREE OO
-1408 ; [.2A7C.0020.0002.1408] # CANADIAN SYLLABICS CARRIER EE
-1409 ; [.2A7D.0020.0002.1409] # CANADIAN SYLLABICS CARRIER I
-140A ; [.2A7E.0020.0002.140A] # CANADIAN SYLLABICS A
-140B ; [.2A7F.0020.0002.140B] # CANADIAN SYLLABICS AA
-140C ; [.2A80.0020.0002.140C] # CANADIAN SYLLABICS WE
-140D ; [.2A81.0020.0002.140D] # CANADIAN SYLLABICS WEST-CREE WE
-140E ; [.2A82.0020.0002.140E] # CANADIAN SYLLABICS WI
-140F ; [.2A83.0020.0002.140F] # CANADIAN SYLLABICS WEST-CREE WI
-1410 ; [.2A84.0020.0002.1410] # CANADIAN SYLLABICS WII
-1411 ; [.2A85.0020.0002.1411] # CANADIAN SYLLABICS WEST-CREE WII
-1412 ; [.2A86.0020.0002.1412] # CANADIAN SYLLABICS WO
-1413 ; [.2A87.0020.0002.1413] # CANADIAN SYLLABICS WEST-CREE WO
-1414 ; [.2A88.0020.0002.1414] # CANADIAN SYLLABICS WOO
-1415 ; [.2A89.0020.0002.1415] # CANADIAN SYLLABICS WEST-CREE WOO
-1416 ; [.2A8A.0020.0002.1416] # CANADIAN SYLLABICS NASKAPI WOO
-1417 ; [.2A8B.0020.0002.1417] # CANADIAN SYLLABICS WA
-1418 ; [.2A8C.0020.0002.1418] # CANADIAN SYLLABICS WEST-CREE WA
-1419 ; [.2A8D.0020.0002.1419] # CANADIAN SYLLABICS WAA
-141A ; [.2A8E.0020.0002.141A] # CANADIAN SYLLABICS WEST-CREE WAA
-141B ; [.2A8F.0020.0002.141B] # CANADIAN SYLLABICS NASKAPI WAA
-141C ; [.2A90.0020.0002.141C] # CANADIAN SYLLABICS AI
-141D ; [.2A91.0020.0002.141D] # CANADIAN SYLLABICS Y-CREE W
-141E ; [.2A92.0020.0002.141E] # CANADIAN SYLLABICS GLOTTAL STOP
-141F ; [.2A93.0020.0002.141F] # CANADIAN SYLLABICS FINAL ACUTE
-1420 ; [.2A94.0020.0002.1420] # CANADIAN SYLLABICS FINAL GRAVE
-1421 ; [.2A95.0020.0002.1421] # CANADIAN SYLLABICS FINAL BOTTOM HALF RING
-1422 ; [.2A96.0020.0002.1422] # CANADIAN SYLLABICS FINAL TOP HALF RING
-1423 ; [.2A97.0020.0002.1423] # CANADIAN SYLLABICS FINAL RIGHT HALF RING
-1424 ; [.2A98.0020.0002.1424] # CANADIAN SYLLABICS FINAL RING
-1425 ; [.2A99.0020.0002.1425] # CANADIAN SYLLABICS FINAL DOUBLE ACUTE
-1426 ; [.2A9A.0020.0002.1426] # CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
-1427 ; [.2A9B.0020.0002.1427] # CANADIAN SYLLABICS FINAL MIDDLE DOT
-1428 ; [.2A9C.0020.0002.1428] # CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
-1429 ; [.2A9D.0020.0002.1429] # CANADIAN SYLLABICS FINAL PLUS
-142A ; [.2A9E.0020.0002.142A] # CANADIAN SYLLABICS FINAL DOWN TACK
-142B ; [.2A9F.0020.0002.142B] # CANADIAN SYLLABICS EN
-142C ; [.2AA0.0020.0002.142C] # CANADIAN SYLLABICS IN
-142D ; [.2AA1.0020.0002.142D] # CANADIAN SYLLABICS ON
-142E ; [.2AA2.0020.0002.142E] # CANADIAN SYLLABICS AN
-142F ; [.2AA3.0020.0002.142F] # CANADIAN SYLLABICS PE
-1430 ; [.2AA4.0020.0002.1430] # CANADIAN SYLLABICS PAAI
-1431 ; [.2AA5.0020.0002.1431] # CANADIAN SYLLABICS PI
-1432 ; [.2AA6.0020.0002.1432] # CANADIAN SYLLABICS PII
-1433 ; [.2AA7.0020.0002.1433] # CANADIAN SYLLABICS PO
-1434 ; [.2AA8.0020.0002.1434] # CANADIAN SYLLABICS POO
-1435 ; [.2AA9.0020.0002.1435] # CANADIAN SYLLABICS Y-CREE POO
-1436 ; [.2AAA.0020.0002.1436] # CANADIAN SYLLABICS CARRIER HEE
-1437 ; [.2AAB.0020.0002.1437] # CANADIAN SYLLABICS CARRIER HI
-1438 ; [.2AAC.0020.0002.1438] # CANADIAN SYLLABICS PA
-1439 ; [.2AAD.0020.0002.1439] # CANADIAN SYLLABICS PAA
-143A ; [.2AAE.0020.0002.143A] # CANADIAN SYLLABICS PWE
-143B ; [.2AAF.0020.0002.143B] # CANADIAN SYLLABICS WEST-CREE PWE
-143C ; [.2AB0.0020.0002.143C] # CANADIAN SYLLABICS PWI
-143D ; [.2AB1.0020.0002.143D] # CANADIAN SYLLABICS WEST-CREE PWI
-143E ; [.2AB2.0020.0002.143E] # CANADIAN SYLLABICS PWII
-143F ; [.2AB3.0020.0002.143F] # CANADIAN SYLLABICS WEST-CREE PWII
-1440 ; [.2AB4.0020.0002.1440] # CANADIAN SYLLABICS PWO
-1441 ; [.2AB5.0020.0002.1441] # CANADIAN SYLLABICS WEST-CREE PWO
-1442 ; [.2AB6.0020.0002.1442] # CANADIAN SYLLABICS PWOO
-1443 ; [.2AB7.0020.0002.1443] # CANADIAN SYLLABICS WEST-CREE PWOO
-1444 ; [.2AB8.0020.0002.1444] # CANADIAN SYLLABICS PWA
-1445 ; [.2AB9.0020.0002.1445] # CANADIAN SYLLABICS WEST-CREE PWA
-1446 ; [.2ABA.0020.0002.1446] # CANADIAN SYLLABICS PWAA
-1447 ; [.2ABB.0020.0002.1447] # CANADIAN SYLLABICS WEST-CREE PWAA
-1448 ; [.2ABC.0020.0002.1448] # CANADIAN SYLLABICS Y-CREE PWAA
-1449 ; [.2ABD.0020.0002.1449] # CANADIAN SYLLABICS P
-144A ; [.2ABE.0020.0002.144A] # CANADIAN SYLLABICS WEST-CREE P
-144B ; [.2ABF.0020.0002.144B] # CANADIAN SYLLABICS CARRIER H
-144C ; [.2AC0.0020.0002.144C] # CANADIAN SYLLABICS TE
-144D ; [.2AC1.0020.0002.144D] # CANADIAN SYLLABICS TAAI
-144E ; [.2AC2.0020.0002.144E] # CANADIAN SYLLABICS TI
-144F ; [.2AC3.0020.0002.144F] # CANADIAN SYLLABICS TII
-1450 ; [.2AC4.0020.0002.1450] # CANADIAN SYLLABICS TO
-1451 ; [.2AC5.0020.0002.1451] # CANADIAN SYLLABICS TOO
-1452 ; [.2AC6.0020.0002.1452] # CANADIAN SYLLABICS Y-CREE TOO
-1453 ; [.2AC7.0020.0002.1453] # CANADIAN SYLLABICS CARRIER DEE
-1454 ; [.2AC8.0020.0002.1454] # CANADIAN SYLLABICS CARRIER DI
-1455 ; [.2AC9.0020.0002.1455] # CANADIAN SYLLABICS TA
-1456 ; [.2ACA.0020.0002.1456] # CANADIAN SYLLABICS TAA
-1457 ; [.2ACB.0020.0002.1457] # CANADIAN SYLLABICS TWE
-1458 ; [.2ACC.0020.0002.1458] # CANADIAN SYLLABICS WEST-CREE TWE
-1459 ; [.2ACD.0020.0002.1459] # CANADIAN SYLLABICS TWI
-145A ; [.2ACE.0020.0002.145A] # CANADIAN SYLLABICS WEST-CREE TWI
-145B ; [.2ACF.0020.0002.145B] # CANADIAN SYLLABICS TWII
-145C ; [.2AD0.0020.0002.145C] # CANADIAN SYLLABICS WEST-CREE TWII
-145D ; [.2AD1.0020.0002.145D] # CANADIAN SYLLABICS TWO
-145E ; [.2AD2.0020.0002.145E] # CANADIAN SYLLABICS WEST-CREE TWO
-145F ; [.2AD3.0020.0002.145F] # CANADIAN SYLLABICS TWOO
-1460 ; [.2AD4.0020.0002.1460] # CANADIAN SYLLABICS WEST-CREE TWOO
-1461 ; [.2AD5.0020.0002.1461] # CANADIAN SYLLABICS TWA
-1462 ; [.2AD6.0020.0002.1462] # CANADIAN SYLLABICS WEST-CREE TWA
-1463 ; [.2AD7.0020.0002.1463] # CANADIAN SYLLABICS TWAA
-1464 ; [.2AD8.0020.0002.1464] # CANADIAN SYLLABICS WEST-CREE TWAA
-1465 ; [.2AD9.0020.0002.1465] # CANADIAN SYLLABICS NASKAPI TWAA
-1466 ; [.2ADA.0020.0002.1466] # CANADIAN SYLLABICS T
-1467 ; [.2ADB.0020.0002.1467] # CANADIAN SYLLABICS TTE
-1468 ; [.2ADC.0020.0002.1468] # CANADIAN SYLLABICS TTI
-1469 ; [.2ADD.0020.0002.1469] # CANADIAN SYLLABICS TTO
-146A ; [.2ADE.0020.0002.146A] # CANADIAN SYLLABICS TTA
-146B ; [.2ADF.0020.0002.146B] # CANADIAN SYLLABICS KE
-146C ; [.2AE0.0020.0002.146C] # CANADIAN SYLLABICS KAAI
-146D ; [.2AE1.0020.0002.146D] # CANADIAN SYLLABICS KI
-146E ; [.2AE2.0020.0002.146E] # CANADIAN SYLLABICS KII
-146F ; [.2AE3.0020.0002.146F] # CANADIAN SYLLABICS KO
-1470 ; [.2AE4.0020.0002.1470] # CANADIAN SYLLABICS KOO
-1471 ; [.2AE5.0020.0002.1471] # CANADIAN SYLLABICS Y-CREE KOO
-1472 ; [.2AE6.0020.0002.1472] # CANADIAN SYLLABICS KA
-1473 ; [.2AE7.0020.0002.1473] # CANADIAN SYLLABICS KAA
-1474 ; [.2AE8.0020.0002.1474] # CANADIAN SYLLABICS KWE
-1475 ; [.2AE9.0020.0002.1475] # CANADIAN SYLLABICS WEST-CREE KWE
-1476 ; [.2AEA.0020.0002.1476] # CANADIAN SYLLABICS KWI
-1477 ; [.2AEB.0020.0002.1477] # CANADIAN SYLLABICS WEST-CREE KWI
-1478 ; [.2AEC.0020.0002.1478] # CANADIAN SYLLABICS KWII
-1479 ; [.2AED.0020.0002.1479] # CANADIAN SYLLABICS WEST-CREE KWII
-147A ; [.2AEE.0020.0002.147A] # CANADIAN SYLLABICS KWO
-147B ; [.2AEF.0020.0002.147B] # CANADIAN SYLLABICS WEST-CREE KWO
-147C ; [.2AF0.0020.0002.147C] # CANADIAN SYLLABICS KWOO
-147D ; [.2AF1.0020.0002.147D] # CANADIAN SYLLABICS WEST-CREE KWOO
-147E ; [.2AF2.0020.0002.147E] # CANADIAN SYLLABICS KWA
-147F ; [.2AF3.0020.0002.147F] # CANADIAN SYLLABICS WEST-CREE KWA
-1480 ; [.2AF4.0020.0002.1480] # CANADIAN SYLLABICS KWAA
-1481 ; [.2AF5.0020.0002.1481] # CANADIAN SYLLABICS WEST-CREE KWAA
-1482 ; [.2AF6.0020.0002.1482] # CANADIAN SYLLABICS NASKAPI KWAA
-1483 ; [.2AF7.0020.0002.1483] # CANADIAN SYLLABICS K
-1484 ; [.2AF8.0020.0002.1484] # CANADIAN SYLLABICS KW
-1485 ; [.2AF9.0020.0002.1485] # CANADIAN SYLLABICS SOUTH-SLAVEY KEH
-1486 ; [.2AFA.0020.0002.1486] # CANADIAN SYLLABICS SOUTH-SLAVEY KIH
-1487 ; [.2AFB.0020.0002.1487] # CANADIAN SYLLABICS SOUTH-SLAVEY KOH
-1488 ; [.2AFC.0020.0002.1488] # CANADIAN SYLLABICS SOUTH-SLAVEY KAH
-1489 ; [.2AFD.0020.0002.1489] # CANADIAN SYLLABICS CE
-148A ; [.2AFE.0020.0002.148A] # CANADIAN SYLLABICS CAAI
-148B ; [.2AFF.0020.0002.148B] # CANADIAN SYLLABICS CI
-148C ; [.2B00.0020.0002.148C] # CANADIAN SYLLABICS CII
-148D ; [.2B01.0020.0002.148D] # CANADIAN SYLLABICS CO
-148E ; [.2B02.0020.0002.148E] # CANADIAN SYLLABICS COO
-148F ; [.2B03.0020.0002.148F] # CANADIAN SYLLABICS Y-CREE COO
-1490 ; [.2B04.0020.0002.1490] # CANADIAN SYLLABICS CA
-1491 ; [.2B05.0020.0002.1491] # CANADIAN SYLLABICS CAA
-1492 ; [.2B06.0020.0002.1492] # CANADIAN SYLLABICS CWE
-1493 ; [.2B07.0020.0002.1493] # CANADIAN SYLLABICS WEST-CREE CWE
-1494 ; [.2B08.0020.0002.1494] # CANADIAN SYLLABICS CWI
-1495 ; [.2B09.0020.0002.1495] # CANADIAN SYLLABICS WEST-CREE CWI
-1496 ; [.2B0A.0020.0002.1496] # CANADIAN SYLLABICS CWII
-1497 ; [.2B0B.0020.0002.1497] # CANADIAN SYLLABICS WEST-CREE CWII
-1498 ; [.2B0C.0020.0002.1498] # CANADIAN SYLLABICS CWO
-1499 ; [.2B0D.0020.0002.1499] # CANADIAN SYLLABICS WEST-CREE CWO
-149A ; [.2B0E.0020.0002.149A] # CANADIAN SYLLABICS CWOO
-149B ; [.2B0F.0020.0002.149B] # CANADIAN SYLLABICS WEST-CREE CWOO
-149C ; [.2B10.0020.0002.149C] # CANADIAN SYLLABICS CWA
-149D ; [.2B11.0020.0002.149D] # CANADIAN SYLLABICS WEST-CREE CWA
-149E ; [.2B12.0020.0002.149E] # CANADIAN SYLLABICS CWAA
-149F ; [.2B13.0020.0002.149F] # CANADIAN SYLLABICS WEST-CREE CWAA
-14A0 ; [.2B14.0020.0002.14A0] # CANADIAN SYLLABICS NASKAPI CWAA
-14A1 ; [.2B15.0020.0002.14A1] # CANADIAN SYLLABICS C
-14A2 ; [.2B16.0020.0002.14A2] # CANADIAN SYLLABICS SAYISI TH
-14A3 ; [.2B17.0020.0002.14A3] # CANADIAN SYLLABICS ME
-14A4 ; [.2B18.0020.0002.14A4] # CANADIAN SYLLABICS MAAI
-14A5 ; [.2B19.0020.0002.14A5] # CANADIAN SYLLABICS MI
-14A6 ; [.2B1A.0020.0002.14A6] # CANADIAN SYLLABICS MII
-14A7 ; [.2B1B.0020.0002.14A7] # CANADIAN SYLLABICS MO
-14A8 ; [.2B1C.0020.0002.14A8] # CANADIAN SYLLABICS MOO
-14A9 ; [.2B1D.0020.0002.14A9] # CANADIAN SYLLABICS Y-CREE MOO
-14AA ; [.2B1E.0020.0002.14AA] # CANADIAN SYLLABICS MA
-14AB ; [.2B1F.0020.0002.14AB] # CANADIAN SYLLABICS MAA
-14AC ; [.2B20.0020.0002.14AC] # CANADIAN SYLLABICS MWE
-14AD ; [.2B21.0020.0002.14AD] # CANADIAN SYLLABICS WEST-CREE MWE
-14AE ; [.2B22.0020.0002.14AE] # CANADIAN SYLLABICS MWI
-14AF ; [.2B23.0020.0002.14AF] # CANADIAN SYLLABICS WEST-CREE MWI
-14B0 ; [.2B24.0020.0002.14B0] # CANADIAN SYLLABICS MWII
-14B1 ; [.2B25.0020.0002.14B1] # CANADIAN SYLLABICS WEST-CREE MWII
-14B2 ; [.2B26.0020.0002.14B2] # CANADIAN SYLLABICS MWO
-14B3 ; [.2B27.0020.0002.14B3] # CANADIAN SYLLABICS WEST-CREE MWO
-14B4 ; [.2B28.0020.0002.14B4] # CANADIAN SYLLABICS MWOO
-14B5 ; [.2B29.0020.0002.14B5] # CANADIAN SYLLABICS WEST-CREE MWOO
-14B6 ; [.2B2A.0020.0002.14B6] # CANADIAN SYLLABICS MWA
-14B7 ; [.2B2B.0020.0002.14B7] # CANADIAN SYLLABICS WEST-CREE MWA
-14B8 ; [.2B2C.0020.0002.14B8] # CANADIAN SYLLABICS MWAA
-14B9 ; [.2B2D.0020.0002.14B9] # CANADIAN SYLLABICS WEST-CREE MWAA
-14BA ; [.2B2E.0020.0002.14BA] # CANADIAN SYLLABICS NASKAPI MWAA
-14BB ; [.2B2F.0020.0002.14BB] # CANADIAN SYLLABICS M
-14BC ; [.2B30.0020.0002.14BC] # CANADIAN SYLLABICS WEST-CREE M
-14BD ; [.2B31.0020.0002.14BD] # CANADIAN SYLLABICS MH
-14BE ; [.2B32.0020.0002.14BE] # CANADIAN SYLLABICS ATHAPASCAN M
-14BF ; [.2B33.0020.0002.14BF] # CANADIAN SYLLABICS SAYISI M
-14C0 ; [.2B34.0020.0002.14C0] # CANADIAN SYLLABICS NE
-14C1 ; [.2B35.0020.0002.14C1] # CANADIAN SYLLABICS NAAI
-14C2 ; [.2B36.0020.0002.14C2] # CANADIAN SYLLABICS NI
-14C3 ; [.2B37.0020.0002.14C3] # CANADIAN SYLLABICS NII
-14C4 ; [.2B38.0020.0002.14C4] # CANADIAN SYLLABICS NO
-14C5 ; [.2B39.0020.0002.14C5] # CANADIAN SYLLABICS NOO
-14C6 ; [.2B3A.0020.0002.14C6] # CANADIAN SYLLABICS Y-CREE NOO
-14C7 ; [.2B3B.0020.0002.14C7] # CANADIAN SYLLABICS NA
-14C8 ; [.2B3C.0020.0002.14C8] # CANADIAN SYLLABICS NAA
-14C9 ; [.2B3D.0020.0002.14C9] # CANADIAN SYLLABICS NWE
-14CA ; [.2B3E.0020.0002.14CA] # CANADIAN SYLLABICS WEST-CREE NWE
-14CB ; [.2B3F.0020.0002.14CB] # CANADIAN SYLLABICS NWA
-14CC ; [.2B40.0020.0002.14CC] # CANADIAN SYLLABICS WEST-CREE NWA
-14CD ; [.2B41.0020.0002.14CD] # CANADIAN SYLLABICS NWAA
-14CE ; [.2B42.0020.0002.14CE] # CANADIAN SYLLABICS WEST-CREE NWAA
-14CF ; [.2B43.0020.0002.14CF] # CANADIAN SYLLABICS NASKAPI NWAA
-14D0 ; [.2B44.0020.0002.14D0] # CANADIAN SYLLABICS N
-14D1 ; [.2B45.0020.0002.14D1] # CANADIAN SYLLABICS CARRIER NG
-14D2 ; [.2B46.0020.0002.14D2] # CANADIAN SYLLABICS NH
-14D3 ; [.2B47.0020.0002.14D3] # CANADIAN SYLLABICS LE
-14D4 ; [.2B48.0020.0002.14D4] # CANADIAN SYLLABICS LAAI
-14D5 ; [.2B49.0020.0002.14D5] # CANADIAN SYLLABICS LI
-14D6 ; [.2B4A.0020.0002.14D6] # CANADIAN SYLLABICS LII
-14D7 ; [.2B4B.0020.0002.14D7] # CANADIAN SYLLABICS LO
-14D8 ; [.2B4C.0020.0002.14D8] # CANADIAN SYLLABICS LOO
-14D9 ; [.2B4D.0020.0002.14D9] # CANADIAN SYLLABICS Y-CREE LOO
-14DA ; [.2B4E.0020.0002.14DA] # CANADIAN SYLLABICS LA
-14DB ; [.2B4F.0020.0002.14DB] # CANADIAN SYLLABICS LAA
-14DC ; [.2B50.0020.0002.14DC] # CANADIAN SYLLABICS LWE
-14DD ; [.2B51.0020.0002.14DD] # CANADIAN SYLLABICS WEST-CREE LWE
-14DE ; [.2B52.0020.0002.14DE] # CANADIAN SYLLABICS LWI
-14DF ; [.2B53.0020.0002.14DF] # CANADIAN SYLLABICS WEST-CREE LWI
-14E0 ; [.2B54.0020.0002.14E0] # CANADIAN SYLLABICS LWII
-14E1 ; [.2B55.0020.0002.14E1] # CANADIAN SYLLABICS WEST-CREE LWII
-14E2 ; [.2B56.0020.0002.14E2] # CANADIAN SYLLABICS LWO
-14E3 ; [.2B57.0020.0002.14E3] # CANADIAN SYLLABICS WEST-CREE LWO
-14E4 ; [.2B58.0020.0002.14E4] # CANADIAN SYLLABICS LWOO
-14E5 ; [.2B59.0020.0002.14E5] # CANADIAN SYLLABICS WEST-CREE LWOO
-14E6 ; [.2B5A.0020.0002.14E6] # CANADIAN SYLLABICS LWA
-14E7 ; [.2B5B.0020.0002.14E7] # CANADIAN SYLLABICS WEST-CREE LWA
-14E8 ; [.2B5C.0020.0002.14E8] # CANADIAN SYLLABICS LWAA
-14E9 ; [.2B5D.0020.0002.14E9] # CANADIAN SYLLABICS WEST-CREE LWAA
-14EA ; [.2B5E.0020.0002.14EA] # CANADIAN SYLLABICS L
-14EB ; [.2B5F.0020.0002.14EB] # CANADIAN SYLLABICS WEST-CREE L
-14EC ; [.2B60.0020.0002.14EC] # CANADIAN SYLLABICS MEDIAL L
-14ED ; [.2B61.0020.0002.14ED] # CANADIAN SYLLABICS SE
-14EE ; [.2B62.0020.0002.14EE] # CANADIAN SYLLABICS SAAI
-14EF ; [.2B63.0020.0002.14EF] # CANADIAN SYLLABICS SI
-14F0 ; [.2B64.0020.0002.14F0] # CANADIAN SYLLABICS SII
-14F1 ; [.2B65.0020.0002.14F1] # CANADIAN SYLLABICS SO
-14F2 ; [.2B66.0020.0002.14F2] # CANADIAN SYLLABICS SOO
-14F3 ; [.2B67.0020.0002.14F3] # CANADIAN SYLLABICS Y-CREE SOO
-14F4 ; [.2B68.0020.0002.14F4] # CANADIAN SYLLABICS SA
-14F5 ; [.2B69.0020.0002.14F5] # CANADIAN SYLLABICS SAA
-14F6 ; [.2B6A.0020.0002.14F6] # CANADIAN SYLLABICS SWE
-14F7 ; [.2B6B.0020.0002.14F7] # CANADIAN SYLLABICS WEST-CREE SWE
-14F8 ; [.2B6C.0020.0002.14F8] # CANADIAN SYLLABICS SWI
-14F9 ; [.2B6D.0020.0002.14F9] # CANADIAN SYLLABICS WEST-CREE SWI
-14FA ; [.2B6E.0020.0002.14FA] # CANADIAN SYLLABICS SWII
-14FB ; [.2B6F.0020.0002.14FB] # CANADIAN SYLLABICS WEST-CREE SWII
-14FC ; [.2B70.0020.0002.14FC] # CANADIAN SYLLABICS SWO
-14FD ; [.2B71.0020.0002.14FD] # CANADIAN SYLLABICS WEST-CREE SWO
-14FE ; [.2B72.0020.0002.14FE] # CANADIAN SYLLABICS SWOO
-14FF ; [.2B73.0020.0002.14FF] # CANADIAN SYLLABICS WEST-CREE SWOO
-1500 ; [.2B74.0020.0002.1500] # CANADIAN SYLLABICS SWA
-1501 ; [.2B75.0020.0002.1501] # CANADIAN SYLLABICS WEST-CREE SWA
-1502 ; [.2B76.0020.0002.1502] # CANADIAN SYLLABICS SWAA
-1503 ; [.2B77.0020.0002.1503] # CANADIAN SYLLABICS WEST-CREE SWAA
-1504 ; [.2B78.0020.0002.1504] # CANADIAN SYLLABICS NASKAPI SWAA
-1505 ; [.2B79.0020.0002.1505] # CANADIAN SYLLABICS S
-1506 ; [.2B7A.0020.0002.1506] # CANADIAN SYLLABICS ATHAPASCAN S
-1507 ; [.2B7B.0020.0002.1507] # CANADIAN SYLLABICS SW
-1508 ; [.2B7C.0020.0002.1508] # CANADIAN SYLLABICS BLACKFOOT S
-1509 ; [.2B7D.0020.0002.1509] # CANADIAN SYLLABICS MOOSE-CREE SK
-150A ; [.2B7E.0020.0002.150A] # CANADIAN SYLLABICS NASKAPI SKW
-150B ; [.2B7F.0020.0002.150B] # CANADIAN SYLLABICS NASKAPI S-W
-150C ; [.2B80.0020.0002.150C] # CANADIAN SYLLABICS NASKAPI SPWA
-150D ; [.2B81.0020.0002.150D] # CANADIAN SYLLABICS NASKAPI STWA
-150E ; [.2B82.0020.0002.150E] # CANADIAN SYLLABICS NASKAPI SKWA
-150F ; [.2B83.0020.0002.150F] # CANADIAN SYLLABICS NASKAPI SCWA
-1510 ; [.2B84.0020.0002.1510] # CANADIAN SYLLABICS SHE
-1511 ; [.2B85.0020.0002.1511] # CANADIAN SYLLABICS SHI
-1512 ; [.2B86.0020.0002.1512] # CANADIAN SYLLABICS SHII
-1513 ; [.2B87.0020.0002.1513] # CANADIAN SYLLABICS SHO
-1514 ; [.2B88.0020.0002.1514] # CANADIAN SYLLABICS SHOO
-1515 ; [.2B89.0020.0002.1515] # CANADIAN SYLLABICS SHA
-1516 ; [.2B8A.0020.0002.1516] # CANADIAN SYLLABICS SHAA
-1517 ; [.2B8B.0020.0002.1517] # CANADIAN SYLLABICS SHWE
-1518 ; [.2B8C.0020.0002.1518] # CANADIAN SYLLABICS WEST-CREE SHWE
-1519 ; [.2B8D.0020.0002.1519] # CANADIAN SYLLABICS SHWI
-151A ; [.2B8E.0020.0002.151A] # CANADIAN SYLLABICS WEST-CREE SHWI
-151B ; [.2B8F.0020.0002.151B] # CANADIAN SYLLABICS SHWII
-151C ; [.2B90.0020.0002.151C] # CANADIAN SYLLABICS WEST-CREE SHWII
-151D ; [.2B91.0020.0002.151D] # CANADIAN SYLLABICS SHWO
-151E ; [.2B92.0020.0002.151E] # CANADIAN SYLLABICS WEST-CREE SHWO
-151F ; [.2B93.0020.0002.151F] # CANADIAN SYLLABICS SHWOO
-1520 ; [.2B94.0020.0002.1520] # CANADIAN SYLLABICS WEST-CREE SHWOO
-1521 ; [.2B95.0020.0002.1521] # CANADIAN SYLLABICS SHWA
-1522 ; [.2B96.0020.0002.1522] # CANADIAN SYLLABICS WEST-CREE SHWA
-1523 ; [.2B97.0020.0002.1523] # CANADIAN SYLLABICS SHWAA
-1524 ; [.2B98.0020.0002.1524] # CANADIAN SYLLABICS WEST-CREE SHWAA
-1525 ; [.2B99.0020.0002.1525] # CANADIAN SYLLABICS SH
-1526 ; [.2B9A.0020.0002.1526] # CANADIAN SYLLABICS YE
-1527 ; [.2B9B.0020.0002.1527] # CANADIAN SYLLABICS YAAI
-1528 ; [.2B9C.0020.0002.1528] # CANADIAN SYLLABICS YI
-1529 ; [.2B9D.0020.0002.1529] # CANADIAN SYLLABICS YII
-152A ; [.2B9E.0020.0002.152A] # CANADIAN SYLLABICS YO
-152B ; [.2B9F.0020.0002.152B] # CANADIAN SYLLABICS YOO
-152C ; [.2BA0.0020.0002.152C] # CANADIAN SYLLABICS Y-CREE YOO
-152D ; [.2BA1.0020.0002.152D] # CANADIAN SYLLABICS YA
-152E ; [.2BA2.0020.0002.152E] # CANADIAN SYLLABICS YAA
-152F ; [.2BA3.0020.0002.152F] # CANADIAN SYLLABICS YWE
-1530 ; [.2BA4.0020.0002.1530] # CANADIAN SYLLABICS WEST-CREE YWE
-1531 ; [.2BA5.0020.0002.1531] # CANADIAN SYLLABICS YWI
-1532 ; [.2BA6.0020.0002.1532] # CANADIAN SYLLABICS WEST-CREE YWI
-1533 ; [.2BA7.0020.0002.1533] # CANADIAN SYLLABICS YWII
-1534 ; [.2BA8.0020.0002.1534] # CANADIAN SYLLABICS WEST-CREE YWII
-1535 ; [.2BA9.0020.0002.1535] # CANADIAN SYLLABICS YWO
-1536 ; [.2BAA.0020.0002.1536] # CANADIAN SYLLABICS WEST-CREE YWO
-1537 ; [.2BAB.0020.0002.1537] # CANADIAN SYLLABICS YWOO
-1538 ; [.2BAC.0020.0002.1538] # CANADIAN SYLLABICS WEST-CREE YWOO
-1539 ; [.2BAD.0020.0002.1539] # CANADIAN SYLLABICS YWA
-153A ; [.2BAE.0020.0002.153A] # CANADIAN SYLLABICS WEST-CREE YWA
-153B ; [.2BAF.0020.0002.153B] # CANADIAN SYLLABICS YWAA
-153C ; [.2BB0.0020.0002.153C] # CANADIAN SYLLABICS WEST-CREE YWAA
-153D ; [.2BB1.0020.0002.153D] # CANADIAN SYLLABICS NASKAPI YWAA
-153E ; [.2BB2.0020.0002.153E] # CANADIAN SYLLABICS Y
-153F ; [.2BB3.0020.0002.153F] # CANADIAN SYLLABICS BIBLE-CREE Y
-1540 ; [.2BB4.0020.0002.1540] # CANADIAN SYLLABICS WEST-CREE Y
-1541 ; [.2BB5.0020.0002.1541] # CANADIAN SYLLABICS SAYISI YI
-1542 ; [.2BB6.0020.0002.1542] # CANADIAN SYLLABICS RE
-1543 ; [.2BB7.0020.0002.1543] # CANADIAN SYLLABICS R-CREE RE
-1544 ; [.2BB8.0020.0002.1544] # CANADIAN SYLLABICS WEST-CREE LE
-1545 ; [.2BB9.0020.0002.1545] # CANADIAN SYLLABICS RAAI
-1546 ; [.2BBA.0020.0002.1546] # CANADIAN SYLLABICS RI
-1547 ; [.2BBB.0020.0002.1547] # CANADIAN SYLLABICS RII
-1548 ; [.2BBC.0020.0002.1548] # CANADIAN SYLLABICS RO
-1549 ; [.2BBD.0020.0002.1549] # CANADIAN SYLLABICS ROO
-154A ; [.2BBE.0020.0002.154A] # CANADIAN SYLLABICS WEST-CREE LO
-154B ; [.2BBF.0020.0002.154B] # CANADIAN SYLLABICS RA
-154C ; [.2BC0.0020.0002.154C] # CANADIAN SYLLABICS RAA
-154D ; [.2BC1.0020.0002.154D] # CANADIAN SYLLABICS WEST-CREE LA
-154E ; [.2BC2.0020.0002.154E] # CANADIAN SYLLABICS RWAA
-154F ; [.2BC3.0020.0002.154F] # CANADIAN SYLLABICS WEST-CREE RWAA
-1550 ; [.2BC4.0020.0002.1550] # CANADIAN SYLLABICS R
-1551 ; [.2BC5.0020.0002.1551] # CANADIAN SYLLABICS WEST-CREE R
-1552 ; [.2BC6.0020.0002.1552] # CANADIAN SYLLABICS MEDIAL R
-1553 ; [.2BC7.0020.0002.1553] # CANADIAN SYLLABICS FE
-1554 ; [.2BC8.0020.0002.1554] # CANADIAN SYLLABICS FAAI
-1555 ; [.2BC9.0020.0002.1555] # CANADIAN SYLLABICS FI
-1556 ; [.2BCA.0020.0002.1556] # CANADIAN SYLLABICS FII
-1557 ; [.2BCB.0020.0002.1557] # CANADIAN SYLLABICS FO
-1558 ; [.2BCC.0020.0002.1558] # CANADIAN SYLLABICS FOO
-1559 ; [.2BCD.0020.0002.1559] # CANADIAN SYLLABICS FA
-155A ; [.2BCE.0020.0002.155A] # CANADIAN SYLLABICS FAA
-155B ; [.2BCF.0020.0002.155B] # CANADIAN SYLLABICS FWAA
-155C ; [.2BD0.0020.0002.155C] # CANADIAN SYLLABICS WEST-CREE FWAA
-155D ; [.2BD1.0020.0002.155D] # CANADIAN SYLLABICS F
-155E ; [.2BD2.0020.0002.155E] # CANADIAN SYLLABICS THE
-155F ; [.2BD3.0020.0002.155F] # CANADIAN SYLLABICS N-CREE THE
-1560 ; [.2BD4.0020.0002.1560] # CANADIAN SYLLABICS THI
-1561 ; [.2BD5.0020.0002.1561] # CANADIAN SYLLABICS N-CREE THI
-1562 ; [.2BD6.0020.0002.1562] # CANADIAN SYLLABICS THII
-1563 ; [.2BD7.0020.0002.1563] # CANADIAN SYLLABICS N-CREE THII
-1564 ; [.2BD8.0020.0002.1564] # CANADIAN SYLLABICS THO
-1565 ; [.2BD9.0020.0002.1565] # CANADIAN SYLLABICS THOO
-1566 ; [.2BDA.0020.0002.1566] # CANADIAN SYLLABICS THA
-1567 ; [.2BDB.0020.0002.1567] # CANADIAN SYLLABICS THAA
-1568 ; [.2BDC.0020.0002.1568] # CANADIAN SYLLABICS THWAA
-1569 ; [.2BDD.0020.0002.1569] # CANADIAN SYLLABICS WEST-CREE THWAA
-156A ; [.2BDE.0020.0002.156A] # CANADIAN SYLLABICS TH
-156B ; [.2BDF.0020.0002.156B] # CANADIAN SYLLABICS TTHE
-156C ; [.2BE0.0020.0002.156C] # CANADIAN SYLLABICS TTHI
-156D ; [.2BE1.0020.0002.156D] # CANADIAN SYLLABICS TTHO
-156E ; [.2BE2.0020.0002.156E] # CANADIAN SYLLABICS TTHA
-156F ; [.2BE3.0020.0002.156F] # CANADIAN SYLLABICS TTH
-1570 ; [.2BE4.0020.0002.1570] # CANADIAN SYLLABICS TYE
-1571 ; [.2BE5.0020.0002.1571] # CANADIAN SYLLABICS TYI
-1572 ; [.2BE6.0020.0002.1572] # CANADIAN SYLLABICS TYO
-1573 ; [.2BE7.0020.0002.1573] # CANADIAN SYLLABICS TYA
-1574 ; [.2BE8.0020.0002.1574] # CANADIAN SYLLABICS NUNAVIK HE
-1575 ; [.2BE9.0020.0002.1575] # CANADIAN SYLLABICS NUNAVIK HI
-1576 ; [.2BEA.0020.0002.1576] # CANADIAN SYLLABICS NUNAVIK HII
-1577 ; [.2BEB.0020.0002.1577] # CANADIAN SYLLABICS NUNAVIK HO
-1578 ; [.2BEC.0020.0002.1578] # CANADIAN SYLLABICS NUNAVIK HOO
-1579 ; [.2BED.0020.0002.1579] # CANADIAN SYLLABICS NUNAVIK HA
-157A ; [.2BEE.0020.0002.157A] # CANADIAN SYLLABICS NUNAVIK HAA
-157B ; [.2BEF.0020.0002.157B] # CANADIAN SYLLABICS NUNAVIK H
-157D ; [.2BF0.0020.0002.157D] # CANADIAN SYLLABICS HK
-166F ; [.2BF1.0020.0002.166F] # CANADIAN SYLLABICS QAI
-157E ; [.2BF2.0020.0002.157E] # CANADIAN SYLLABICS QAAI
-157F ; [.2BF3.0020.0002.157F] # CANADIAN SYLLABICS QI
-1580 ; [.2BF4.0020.0002.1580] # CANADIAN SYLLABICS QII
-1581 ; [.2BF5.0020.0002.1581] # CANADIAN SYLLABICS QO
-1582 ; [.2BF6.0020.0002.1582] # CANADIAN SYLLABICS QOO
-1583 ; [.2BF7.0020.0002.1583] # CANADIAN SYLLABICS QA
-1584 ; [.2BF8.0020.0002.1584] # CANADIAN SYLLABICS QAA
-1585 ; [.2BF9.0020.0002.1585] # CANADIAN SYLLABICS Q
-1586 ; [.2BFA.0020.0002.1586] # CANADIAN SYLLABICS TLHE
-1587 ; [.2BFB.0020.0002.1587] # CANADIAN SYLLABICS TLHI
-1588 ; [.2BFC.0020.0002.1588] # CANADIAN SYLLABICS TLHO
-1589 ; [.2BFD.0020.0002.1589] # CANADIAN SYLLABICS TLHA
-158A ; [.2BFE.0020.0002.158A] # CANADIAN SYLLABICS WEST-CREE RE
-158B ; [.2BFF.0020.0002.158B] # CANADIAN SYLLABICS WEST-CREE RI
-158C ; [.2C00.0020.0002.158C] # CANADIAN SYLLABICS WEST-CREE RO
-158D ; [.2C01.0020.0002.158D] # CANADIAN SYLLABICS WEST-CREE RA
-1670 ; [.2C02.0020.0002.1670] # CANADIAN SYLLABICS NGAI
-158E ; [.2C03.0020.0002.158E] # CANADIAN SYLLABICS NGAAI
-158F ; [.2C04.0020.0002.158F] # CANADIAN SYLLABICS NGI
-1590 ; [.2C05.0020.0002.1590] # CANADIAN SYLLABICS NGII
-1591 ; [.2C06.0020.0002.1591] # CANADIAN SYLLABICS NGO
-1592 ; [.2C07.0020.0002.1592] # CANADIAN SYLLABICS NGOO
-1593 ; [.2C08.0020.0002.1593] # CANADIAN SYLLABICS NGA
-1594 ; [.2C09.0020.0002.1594] # CANADIAN SYLLABICS NGAA
-1595 ; [.2C0A.0020.0002.1595] # CANADIAN SYLLABICS NG
-1671 ; [.2C0B.0020.0002.1671] # CANADIAN SYLLABICS NNGI
-1672 ; [.2C0C.0020.0002.1672] # CANADIAN SYLLABICS NNGII
-1673 ; [.2C0D.0020.0002.1673] # CANADIAN SYLLABICS NNGO
-1674 ; [.2C0E.0020.0002.1674] # CANADIAN SYLLABICS NNGOO
-1675 ; [.2C0F.0020.0002.1675] # CANADIAN SYLLABICS NNGA
-1676 ; [.2C10.0020.0002.1676] # CANADIAN SYLLABICS NNGAA
-1596 ; [.2C11.0020.0002.1596] # CANADIAN SYLLABICS NNG
-1597 ; [.2C12.0020.0002.1597] # CANADIAN SYLLABICS SAYISI SHE
-1598 ; [.2C13.0020.0002.1598] # CANADIAN SYLLABICS SAYISI SHI
-1599 ; [.2C14.0020.0002.1599] # CANADIAN SYLLABICS SAYISI SHO
-159A ; [.2C15.0020.0002.159A] # CANADIAN SYLLABICS SAYISI SHA
-159B ; [.2C16.0020.0002.159B] # CANADIAN SYLLABICS WOODS-CREE THE
-159C ; [.2C17.0020.0002.159C] # CANADIAN SYLLABICS WOODS-CREE THI
-159D ; [.2C18.0020.0002.159D] # CANADIAN SYLLABICS WOODS-CREE THO
-159E ; [.2C19.0020.0002.159E] # CANADIAN SYLLABICS WOODS-CREE THA
-159F ; [.2C1A.0020.0002.159F] # CANADIAN SYLLABICS WOODS-CREE TH
-15A0 ; [.2C1B.0020.0002.15A0] # CANADIAN SYLLABICS LHI
-15A1 ; [.2C1C.0020.0002.15A1] # CANADIAN SYLLABICS LHII
-15A2 ; [.2C1D.0020.0002.15A2] # CANADIAN SYLLABICS LHO
-15A3 ; [.2C1E.0020.0002.15A3] # CANADIAN SYLLABICS LHOO
-15A4 ; [.2C1F.0020.0002.15A4] # CANADIAN SYLLABICS LHA
-15A5 ; [.2C20.0020.0002.15A5] # CANADIAN SYLLABICS LHAA
-15A6 ; [.2C21.0020.0002.15A6] # CANADIAN SYLLABICS LH
-157C ; [.2C22.0020.0002.157C] # CANADIAN SYLLABICS NUNAVUT H
-15A7 ; [.2C23.0020.0002.15A7] # CANADIAN SYLLABICS TH-CREE THE
-15A8 ; [.2C24.0020.0002.15A8] # CANADIAN SYLLABICS TH-CREE THI
-15A9 ; [.2C25.0020.0002.15A9] # CANADIAN SYLLABICS TH-CREE THII
-15AA ; [.2C26.0020.0002.15AA] # CANADIAN SYLLABICS TH-CREE THO
-15AB ; [.2C27.0020.0002.15AB] # CANADIAN SYLLABICS TH-CREE THOO
-15AC ; [.2C28.0020.0002.15AC] # CANADIAN SYLLABICS TH-CREE THA
-15AD ; [.2C29.0020.0002.15AD] # CANADIAN SYLLABICS TH-CREE THAA
-15AE ; [.2C2A.0020.0002.15AE] # CANADIAN SYLLABICS TH-CREE TH
-15AF ; [.2C2B.0020.0002.15AF] # CANADIAN SYLLABICS AIVILIK B
-15B0 ; [.2C2C.0020.0002.15B0] # CANADIAN SYLLABICS BLACKFOOT E
-15B1 ; [.2C2D.0020.0002.15B1] # CANADIAN SYLLABICS BLACKFOOT I
-15B2 ; [.2C2E.0020.0002.15B2] # CANADIAN SYLLABICS BLACKFOOT O
-15B3 ; [.2C2F.0020.0002.15B3] # CANADIAN SYLLABICS BLACKFOOT A
-15B4 ; [.2C30.0020.0002.15B4] # CANADIAN SYLLABICS BLACKFOOT WE
-15B5 ; [.2C31.0020.0002.15B5] # CANADIAN SYLLABICS BLACKFOOT WI
-15B6 ; [.2C32.0020.0002.15B6] # CANADIAN SYLLABICS BLACKFOOT WO
-15B7 ; [.2C33.0020.0002.15B7] # CANADIAN SYLLABICS BLACKFOOT WA
-15B8 ; [.2C34.0020.0002.15B8] # CANADIAN SYLLABICS BLACKFOOT NE
-15B9 ; [.2C35.0020.0002.15B9] # CANADIAN SYLLABICS BLACKFOOT NI
-15BA ; [.2C36.0020.0002.15BA] # CANADIAN SYLLABICS BLACKFOOT NO
-15BB ; [.2C37.0020.0002.15BB] # CANADIAN SYLLABICS BLACKFOOT NA
-15BC ; [.2C38.0020.0002.15BC] # CANADIAN SYLLABICS BLACKFOOT KE
-15BD ; [.2C39.0020.0002.15BD] # CANADIAN SYLLABICS BLACKFOOT KI
-15BE ; [.2C3A.0020.0002.15BE] # CANADIAN SYLLABICS BLACKFOOT KO
-15BF ; [.2C3B.0020.0002.15BF] # CANADIAN SYLLABICS BLACKFOOT KA
-15C0 ; [.2C3C.0020.0002.15C0] # CANADIAN SYLLABICS SAYISI HE
-15C1 ; [.2C3D.0020.0002.15C1] # CANADIAN SYLLABICS SAYISI HI
-15C2 ; [.2C3E.0020.0002.15C2] # CANADIAN SYLLABICS SAYISI HO
-15C3 ; [.2C3F.0020.0002.15C3] # CANADIAN SYLLABICS SAYISI HA
-15C4 ; [.2C40.0020.0002.15C4] # CANADIAN SYLLABICS CARRIER GHU
-15C5 ; [.2C41.0020.0002.15C5] # CANADIAN SYLLABICS CARRIER GHO
-15C6 ; [.2C42.0020.0002.15C6] # CANADIAN SYLLABICS CARRIER GHE
-15C7 ; [.2C43.0020.0002.15C7] # CANADIAN SYLLABICS CARRIER GHEE
-15C8 ; [.2C44.0020.0002.15C8] # CANADIAN SYLLABICS CARRIER GHI
-15C9 ; [.2C45.0020.0002.15C9] # CANADIAN SYLLABICS CARRIER GHA
-15CA ; [.2C46.0020.0002.15CA] # CANADIAN SYLLABICS CARRIER RU
-15CB ; [.2C47.0020.0002.15CB] # CANADIAN SYLLABICS CARRIER RO
-15CC ; [.2C48.0020.0002.15CC] # CANADIAN SYLLABICS CARRIER RE
-15CD ; [.2C49.0020.0002.15CD] # CANADIAN SYLLABICS CARRIER REE
-15CE ; [.2C4A.0020.0002.15CE] # CANADIAN SYLLABICS CARRIER RI
-15CF ; [.2C4B.0020.0002.15CF] # CANADIAN SYLLABICS CARRIER RA
-15D0 ; [.2C4C.0020.0002.15D0] # CANADIAN SYLLABICS CARRIER WU
-15D1 ; [.2C4D.0020.0002.15D1] # CANADIAN SYLLABICS CARRIER WO
-15D2 ; [.2C4E.0020.0002.15D2] # CANADIAN SYLLABICS CARRIER WE
-15D3 ; [.2C4F.0020.0002.15D3] # CANADIAN SYLLABICS CARRIER WEE
-15D4 ; [.2C50.0020.0002.15D4] # CANADIAN SYLLABICS CARRIER WI
-15D5 ; [.2C51.0020.0002.15D5] # CANADIAN SYLLABICS CARRIER WA
-15D6 ; [.2C52.0020.0002.15D6] # CANADIAN SYLLABICS CARRIER HWU
-15D7 ; [.2C53.0020.0002.15D7] # CANADIAN SYLLABICS CARRIER HWO
-15D8 ; [.2C54.0020.0002.15D8] # CANADIAN SYLLABICS CARRIER HWE
-15D9 ; [.2C55.0020.0002.15D9] # CANADIAN SYLLABICS CARRIER HWEE
-15DA ; [.2C56.0020.0002.15DA] # CANADIAN SYLLABICS CARRIER HWI
-15DB ; [.2C57.0020.0002.15DB] # CANADIAN SYLLABICS CARRIER HWA
-15DC ; [.2C58.0020.0002.15DC] # CANADIAN SYLLABICS CARRIER THU
-15DD ; [.2C59.0020.0002.15DD] # CANADIAN SYLLABICS CARRIER THO
-15DE ; [.2C5A.0020.0002.15DE] # CANADIAN SYLLABICS CARRIER THE
-15DF ; [.2C5B.0020.0002.15DF] # CANADIAN SYLLABICS CARRIER THEE
-15E0 ; [.2C5C.0020.0002.15E0] # CANADIAN SYLLABICS CARRIER THI
-15E1 ; [.2C5D.0020.0002.15E1] # CANADIAN SYLLABICS CARRIER THA
-15E2 ; [.2C5E.0020.0002.15E2] # CANADIAN SYLLABICS CARRIER TTU
-15E3 ; [.2C5F.0020.0002.15E3] # CANADIAN SYLLABICS CARRIER TTO
-15E4 ; [.2C60.0020.0002.15E4] # CANADIAN SYLLABICS CARRIER TTE
-15E5 ; [.2C61.0020.0002.15E5] # CANADIAN SYLLABICS CARRIER TTEE
-15E6 ; [.2C62.0020.0002.15E6] # CANADIAN SYLLABICS CARRIER TTI
-15E7 ; [.2C63.0020.0002.15E7] # CANADIAN SYLLABICS CARRIER TTA
-15E8 ; [.2C64.0020.0002.15E8] # CANADIAN SYLLABICS CARRIER PU
-15E9 ; [.2C65.0020.0002.15E9] # CANADIAN SYLLABICS CARRIER PO
-15EA ; [.2C66.0020.0002.15EA] # CANADIAN SYLLABICS CARRIER PE
-15EB ; [.2C67.0020.0002.15EB] # CANADIAN SYLLABICS CARRIER PEE
-15EC ; [.2C68.0020.0002.15EC] # CANADIAN SYLLABICS CARRIER PI
-15ED ; [.2C69.0020.0002.15ED] # CANADIAN SYLLABICS CARRIER PA
-15EE ; [.2C6A.0020.0002.15EE] # CANADIAN SYLLABICS CARRIER P
-15EF ; [.2C6B.0020.0002.15EF] # CANADIAN SYLLABICS CARRIER GU
-15F0 ; [.2C6C.0020.0002.15F0] # CANADIAN SYLLABICS CARRIER GO
-15F1 ; [.2C6D.0020.0002.15F1] # CANADIAN SYLLABICS CARRIER GE
-15F2 ; [.2C6E.0020.0002.15F2] # CANADIAN SYLLABICS CARRIER GEE
-15F3 ; [.2C6F.0020.0002.15F3] # CANADIAN SYLLABICS CARRIER GI
-15F4 ; [.2C70.0020.0002.15F4] # CANADIAN SYLLABICS CARRIER GA
-15F5 ; [.2C71.0020.0002.15F5] # CANADIAN SYLLABICS CARRIER KHU
-15F6 ; [.2C72.0020.0002.15F6] # CANADIAN SYLLABICS CARRIER KHO
-15F7 ; [.2C73.0020.0002.15F7] # CANADIAN SYLLABICS CARRIER KHE
-15F8 ; [.2C74.0020.0002.15F8] # CANADIAN SYLLABICS CARRIER KHEE
-15F9 ; [.2C75.0020.0002.15F9] # CANADIAN SYLLABICS CARRIER KHI
-15FA ; [.2C76.0020.0002.15FA] # CANADIAN SYLLABICS CARRIER KHA
-15FB ; [.2C77.0020.0002.15FB] # CANADIAN SYLLABICS CARRIER KKU
-15FC ; [.2C78.0020.0002.15FC] # CANADIAN SYLLABICS CARRIER KKO
-15FD ; [.2C79.0020.0002.15FD] # CANADIAN SYLLABICS CARRIER KKE
-15FE ; [.2C7A.0020.0002.15FE] # CANADIAN SYLLABICS CARRIER KKEE
-15FF ; [.2C7B.0020.0002.15FF] # CANADIAN SYLLABICS CARRIER KKI
-1600 ; [.2C7C.0020.0002.1600] # CANADIAN SYLLABICS CARRIER KKA
-1601 ; [.2C7D.0020.0002.1601] # CANADIAN SYLLABICS CARRIER KK
-1602 ; [.2C7E.0020.0002.1602] # CANADIAN SYLLABICS CARRIER NU
-1603 ; [.2C7F.0020.0002.1603] # CANADIAN SYLLABICS CARRIER NO
-1604 ; [.2C80.0020.0002.1604] # CANADIAN SYLLABICS CARRIER NE
-1605 ; [.2C81.0020.0002.1605] # CANADIAN SYLLABICS CARRIER NEE
-1606 ; [.2C82.0020.0002.1606] # CANADIAN SYLLABICS CARRIER NI
-1607 ; [.2C83.0020.0002.1607] # CANADIAN SYLLABICS CARRIER NA
-1608 ; [.2C84.0020.0002.1608] # CANADIAN SYLLABICS CARRIER MU
-1609 ; [.2C85.0020.0002.1609] # CANADIAN SYLLABICS CARRIER MO
-160A ; [.2C86.0020.0002.160A] # CANADIAN SYLLABICS CARRIER ME
-160B ; [.2C87.0020.0002.160B] # CANADIAN SYLLABICS CARRIER MEE
-160C ; [.2C88.0020.0002.160C] # CANADIAN SYLLABICS CARRIER MI
-160D ; [.2C89.0020.0002.160D] # CANADIAN SYLLABICS CARRIER MA
-160E ; [.2C8A.0020.0002.160E] # CANADIAN SYLLABICS CARRIER YU
-160F ; [.2C8B.0020.0002.160F] # CANADIAN SYLLABICS CARRIER YO
-1610 ; [.2C8C.0020.0002.1610] # CANADIAN SYLLABICS CARRIER YE
-1611 ; [.2C8D.0020.0002.1611] # CANADIAN SYLLABICS CARRIER YEE
-1612 ; [.2C8E.0020.0002.1612] # CANADIAN SYLLABICS CARRIER YI
-1613 ; [.2C8F.0020.0002.1613] # CANADIAN SYLLABICS CARRIER YA
-1614 ; [.2C90.0020.0002.1614] # CANADIAN SYLLABICS CARRIER JU
-1615 ; [.2C91.0020.0002.1615] # CANADIAN SYLLABICS SAYISI JU
-1616 ; [.2C92.0020.0002.1616] # CANADIAN SYLLABICS CARRIER JO
-1617 ; [.2C93.0020.0002.1617] # CANADIAN SYLLABICS CARRIER JE
-1618 ; [.2C94.0020.0002.1618] # CANADIAN SYLLABICS CARRIER JEE
-1619 ; [.2C95.0020.0002.1619] # CANADIAN SYLLABICS CARRIER JI
-161A ; [.2C96.0020.0002.161A] # CANADIAN SYLLABICS SAYISI JI
-161B ; [.2C97.0020.0002.161B] # CANADIAN SYLLABICS CARRIER JA
-161C ; [.2C98.0020.0002.161C] # CANADIAN SYLLABICS CARRIER JJU
-161D ; [.2C99.0020.0002.161D] # CANADIAN SYLLABICS CARRIER JJO
-161E ; [.2C9A.0020.0002.161E] # CANADIAN SYLLABICS CARRIER JJE
-161F ; [.2C9B.0020.0002.161F] # CANADIAN SYLLABICS CARRIER JJEE
-1620 ; [.2C9C.0020.0002.1620] # CANADIAN SYLLABICS CARRIER JJI
-1621 ; [.2C9D.0020.0002.1621] # CANADIAN SYLLABICS CARRIER JJA
-1622 ; [.2C9E.0020.0002.1622] # CANADIAN SYLLABICS CARRIER LU
-1623 ; [.2C9F.0020.0002.1623] # CANADIAN SYLLABICS CARRIER LO
-1624 ; [.2CA0.0020.0002.1624] # CANADIAN SYLLABICS CARRIER LE
-1625 ; [.2CA1.0020.0002.1625] # CANADIAN SYLLABICS CARRIER LEE
-1626 ; [.2CA2.0020.0002.1626] # CANADIAN SYLLABICS CARRIER LI
-1627 ; [.2CA3.0020.0002.1627] # CANADIAN SYLLABICS CARRIER LA
-1628 ; [.2CA4.0020.0002.1628] # CANADIAN SYLLABICS CARRIER DLU
-1629 ; [.2CA5.0020.0002.1629] # CANADIAN SYLLABICS CARRIER DLO
-162A ; [.2CA6.0020.0002.162A] # CANADIAN SYLLABICS CARRIER DLE
-162B ; [.2CA7.0020.0002.162B] # CANADIAN SYLLABICS CARRIER DLEE
-162C ; [.2CA8.0020.0002.162C] # CANADIAN SYLLABICS CARRIER DLI
-162D ; [.2CA9.0020.0002.162D] # CANADIAN SYLLABICS CARRIER DLA
-162E ; [.2CAA.0020.0002.162E] # CANADIAN SYLLABICS CARRIER LHU
-162F ; [.2CAB.0020.0002.162F] # CANADIAN SYLLABICS CARRIER LHO
-1630 ; [.2CAC.0020.0002.1630] # CANADIAN SYLLABICS CARRIER LHE
-1631 ; [.2CAD.0020.0002.1631] # CANADIAN SYLLABICS CARRIER LHEE
-1632 ; [.2CAE.0020.0002.1632] # CANADIAN SYLLABICS CARRIER LHI
-1633 ; [.2CAF.0020.0002.1633] # CANADIAN SYLLABICS CARRIER LHA
-1634 ; [.2CB0.0020.0002.1634] # CANADIAN SYLLABICS CARRIER TLHU
-1635 ; [.2CB1.0020.0002.1635] # CANADIAN SYLLABICS CARRIER TLHO
-1636 ; [.2CB2.0020.0002.1636] # CANADIAN SYLLABICS CARRIER TLHE
-1637 ; [.2CB3.0020.0002.1637] # CANADIAN SYLLABICS CARRIER TLHEE
-1638 ; [.2CB4.0020.0002.1638] # CANADIAN SYLLABICS CARRIER TLHI
-1639 ; [.2CB5.0020.0002.1639] # CANADIAN SYLLABICS CARRIER TLHA
-163A ; [.2CB6.0020.0002.163A] # CANADIAN SYLLABICS CARRIER TLU
-163B ; [.2CB7.0020.0002.163B] # CANADIAN SYLLABICS CARRIER TLO
-163C ; [.2CB8.0020.0002.163C] # CANADIAN SYLLABICS CARRIER TLE
-163D ; [.2CB9.0020.0002.163D] # CANADIAN SYLLABICS CARRIER TLEE
-163E ; [.2CBA.0020.0002.163E] # CANADIAN SYLLABICS CARRIER TLI
-163F ; [.2CBB.0020.0002.163F] # CANADIAN SYLLABICS CARRIER TLA
-1640 ; [.2CBC.0020.0002.1640] # CANADIAN SYLLABICS CARRIER ZU
-1641 ; [.2CBD.0020.0002.1641] # CANADIAN SYLLABICS CARRIER ZO
-1642 ; [.2CBE.0020.0002.1642] # CANADIAN SYLLABICS CARRIER ZE
-1643 ; [.2CBF.0020.0002.1643] # CANADIAN SYLLABICS CARRIER ZEE
-1644 ; [.2CC0.0020.0002.1644] # CANADIAN SYLLABICS CARRIER ZI
-1645 ; [.2CC1.0020.0002.1645] # CANADIAN SYLLABICS CARRIER ZA
-1646 ; [.2CC2.0020.0002.1646] # CANADIAN SYLLABICS CARRIER Z
-1647 ; [.2CC3.0020.0002.1647] # CANADIAN SYLLABICS CARRIER INITIAL Z
-1648 ; [.2CC4.0020.0002.1648] # CANADIAN SYLLABICS CARRIER DZU
-1649 ; [.2CC5.0020.0002.1649] # CANADIAN SYLLABICS CARRIER DZO
-164A ; [.2CC6.0020.0002.164A] # CANADIAN SYLLABICS CARRIER DZE
-164B ; [.2CC7.0020.0002.164B] # CANADIAN SYLLABICS CARRIER DZEE
-164C ; [.2CC8.0020.0002.164C] # CANADIAN SYLLABICS CARRIER DZI
-164D ; [.2CC9.0020.0002.164D] # CANADIAN SYLLABICS CARRIER DZA
-164E ; [.2CCA.0020.0002.164E] # CANADIAN SYLLABICS CARRIER SU
-164F ; [.2CCB.0020.0002.164F] # CANADIAN SYLLABICS CARRIER SO
-1650 ; [.2CCC.0020.0002.1650] # CANADIAN SYLLABICS CARRIER SE
-1651 ; [.2CCD.0020.0002.1651] # CANADIAN SYLLABICS CARRIER SEE
-1652 ; [.2CCE.0020.0002.1652] # CANADIAN SYLLABICS CARRIER SI
-1653 ; [.2CCF.0020.0002.1653] # CANADIAN SYLLABICS CARRIER SA
-1654 ; [.2CD0.0020.0002.1654] # CANADIAN SYLLABICS CARRIER SHU
-1655 ; [.2CD1.0020.0002.1655] # CANADIAN SYLLABICS CARRIER SHO
-1656 ; [.2CD2.0020.0002.1656] # CANADIAN SYLLABICS CARRIER SHE
-1657 ; [.2CD3.0020.0002.1657] # CANADIAN SYLLABICS CARRIER SHEE
-1658 ; [.2CD4.0020.0002.1658] # CANADIAN SYLLABICS CARRIER SHI
-1659 ; [.2CD5.0020.0002.1659] # CANADIAN SYLLABICS CARRIER SHA
-165A ; [.2CD6.0020.0002.165A] # CANADIAN SYLLABICS CARRIER SH
-165B ; [.2CD7.0020.0002.165B] # CANADIAN SYLLABICS CARRIER TSU
-165C ; [.2CD8.0020.0002.165C] # CANADIAN SYLLABICS CARRIER TSO
-165D ; [.2CD9.0020.0002.165D] # CANADIAN SYLLABICS CARRIER TSE
-165E ; [.2CDA.0020.0002.165E] # CANADIAN SYLLABICS CARRIER TSEE
-165F ; [.2CDB.0020.0002.165F] # CANADIAN SYLLABICS CARRIER TSI
-1660 ; [.2CDC.0020.0002.1660] # CANADIAN SYLLABICS CARRIER TSA
-1661 ; [.2CDD.0020.0002.1661] # CANADIAN SYLLABICS CARRIER CHU
-1662 ; [.2CDE.0020.0002.1662] # CANADIAN SYLLABICS CARRIER CHO
-1663 ; [.2CDF.0020.0002.1663] # CANADIAN SYLLABICS CARRIER CHE
-1664 ; [.2CE0.0020.0002.1664] # CANADIAN SYLLABICS CARRIER CHEE
-1665 ; [.2CE1.0020.0002.1665] # CANADIAN SYLLABICS CARRIER CHI
-1666 ; [.2CE2.0020.0002.1666] # CANADIAN SYLLABICS CARRIER CHA
-1667 ; [.2CE3.0020.0002.1667] # CANADIAN SYLLABICS CARRIER TTSU
-1668 ; [.2CE4.0020.0002.1668] # CANADIAN SYLLABICS CARRIER TTSO
-1669 ; [.2CE5.0020.0002.1669] # CANADIAN SYLLABICS CARRIER TTSE
-166A ; [.2CE6.0020.0002.166A] # CANADIAN SYLLABICS CARRIER TTSEE
-166B ; [.2CE7.0020.0002.166B] # CANADIAN SYLLABICS CARRIER TTSI
-166C ; [.2CE8.0020.0002.166C] # CANADIAN SYLLABICS CARRIER TTSA
-1677 ; [.2CE9.0020.0002.1677] # CANADIAN SYLLABICS WOODS-CREE THWEE
-1678 ; [.2CEA.0020.0002.1678] # CANADIAN SYLLABICS WOODS-CREE THWI
-1679 ; [.2CEB.0020.0002.1679] # CANADIAN SYLLABICS WOODS-CREE THWII
-167A ; [.2CEC.0020.0002.167A] # CANADIAN SYLLABICS WOODS-CREE THWO
-167B ; [.2CED.0020.0002.167B] # CANADIAN SYLLABICS WOODS-CREE THWOO
-167C ; [.2CEE.0020.0002.167C] # CANADIAN SYLLABICS WOODS-CREE THWA
-167D ; [.2CEF.0020.0002.167D] # CANADIAN SYLLABICS WOODS-CREE THWAA
-167E ; [.2CF0.0020.0002.167E] # CANADIAN SYLLABICS WOODS-CREE FINAL TH
-167F ; [.2CF1.0020.0002.167F] # CANADIAN SYLLABICS BLACKFOOT W
-18B0 ; [.2CF2.0020.0002.18B0] # CANADIAN SYLLABICS OY
-18B1 ; [.2CF3.0020.0002.18B1] # CANADIAN SYLLABICS AY
-18B2 ; [.2CF4.0020.0002.18B2] # CANADIAN SYLLABICS AAY
-18B3 ; [.2CF5.0020.0002.18B3] # CANADIAN SYLLABICS WAY
-18B4 ; [.2CF6.0020.0002.18B4] # CANADIAN SYLLABICS POY
-18B5 ; [.2CF7.0020.0002.18B5] # CANADIAN SYLLABICS PAY
-18B6 ; [.2CF8.0020.0002.18B6] # CANADIAN SYLLABICS PWOY
-18B7 ; [.2CF9.0020.0002.18B7] # CANADIAN SYLLABICS TAY
-18B8 ; [.2CFA.0020.0002.18B8] # CANADIAN SYLLABICS KAY
-18B9 ; [.2CFB.0020.0002.18B9] # CANADIAN SYLLABICS KWAY
-18BA ; [.2CFC.0020.0002.18BA] # CANADIAN SYLLABICS MAY
-18BB ; [.2CFD.0020.0002.18BB] # CANADIAN SYLLABICS NOY
-18BC ; [.2CFE.0020.0002.18BC] # CANADIAN SYLLABICS NAY
-18BD ; [.2CFF.0020.0002.18BD] # CANADIAN SYLLABICS LAY
-18BE ; [.2D00.0020.0002.18BE] # CANADIAN SYLLABICS SOY
-18BF ; [.2D01.0020.0002.18BF] # CANADIAN SYLLABICS SAY
-18C0 ; [.2D02.0020.0002.18C0] # CANADIAN SYLLABICS SHOY
-18C1 ; [.2D03.0020.0002.18C1] # CANADIAN SYLLABICS SHAY
-18C2 ; [.2D04.0020.0002.18C2] # CANADIAN SYLLABICS SHWOY
-18C3 ; [.2D05.0020.0002.18C3] # CANADIAN SYLLABICS YOY
-18C4 ; [.2D06.0020.0002.18C4] # CANADIAN SYLLABICS YAY
-18C5 ; [.2D07.0020.0002.18C5] # CANADIAN SYLLABICS RAY
-18C6 ; [.2D08.0020.0002.18C6] # CANADIAN SYLLABICS NWI
-18C7 ; [.2D09.0020.0002.18C7] # CANADIAN SYLLABICS OJIBWAY NWI
-18C8 ; [.2D0A.0020.0002.18C8] # CANADIAN SYLLABICS NWII
-18C9 ; [.2D0B.0020.0002.18C9] # CANADIAN SYLLABICS OJIBWAY NWII
-18CA ; [.2D0C.0020.0002.18CA] # CANADIAN SYLLABICS NWO
-18CB ; [.2D0D.0020.0002.18CB] # CANADIAN SYLLABICS OJIBWAY NWO
-18CC ; [.2D0E.0020.0002.18CC] # CANADIAN SYLLABICS NWOO
-18CD ; [.2D0F.0020.0002.18CD] # CANADIAN SYLLABICS OJIBWAY NWOO
-18CE ; [.2D10.0020.0002.18CE] # CANADIAN SYLLABICS RWEE
-18CF ; [.2D11.0020.0002.18CF] # CANADIAN SYLLABICS RWI
-18D0 ; [.2D12.0020.0002.18D0] # CANADIAN SYLLABICS RWII
-18D1 ; [.2D13.0020.0002.18D1] # CANADIAN SYLLABICS RWO
-18D2 ; [.2D14.0020.0002.18D2] # CANADIAN SYLLABICS RWOO
-18D3 ; [.2D15.0020.0002.18D3] # CANADIAN SYLLABICS RWA
-18D4 ; [.2D16.0020.0002.18D4] # CANADIAN SYLLABICS OJIBWAY P
-18D5 ; [.2D17.0020.0002.18D5] # CANADIAN SYLLABICS OJIBWAY T
-18D6 ; [.2D18.0020.0002.18D6] # CANADIAN SYLLABICS OJIBWAY K
-18D7 ; [.2D19.0020.0002.18D7] # CANADIAN SYLLABICS OJIBWAY C
-18D8 ; [.2D1A.0020.0002.18D8] # CANADIAN SYLLABICS OJIBWAY M
-18D9 ; [.2D1B.0020.0002.18D9] # CANADIAN SYLLABICS OJIBWAY N
-18DA ; [.2D1C.0020.0002.18DA] # CANADIAN SYLLABICS OJIBWAY S
-18DB ; [.2D1D.0020.0002.18DB] # CANADIAN SYLLABICS OJIBWAY SH
-18DC ; [.2D1E.0020.0002.18DC] # CANADIAN SYLLABICS EASTERN W
-18DD ; [.2D1F.0020.0002.18DD] # CANADIAN SYLLABICS WESTERN W
-18DE ; [.2D20.0020.0002.18DE] # CANADIAN SYLLABICS FINAL SMALL RING
-18DF ; [.2D21.0020.0002.18DF] # CANADIAN SYLLABICS FINAL RAISED DOT
-18E0 ; [.2D22.0020.0002.18E0] # CANADIAN SYLLABICS R-CREE RWE
-18E1 ; [.2D23.0020.0002.18E1] # CANADIAN SYLLABICS WEST-CREE LOO
-18E2 ; [.2D24.0020.0002.18E2] # CANADIAN SYLLABICS WEST-CREE LAA
-18E3 ; [.2D25.0020.0002.18E3] # CANADIAN SYLLABICS THWE
-18E4 ; [.2D26.0020.0002.18E4] # CANADIAN SYLLABICS THWA
-18E5 ; [.2D27.0020.0002.18E5] # CANADIAN SYLLABICS TTHWE
-18E6 ; [.2D28.0020.0002.18E6] # CANADIAN SYLLABICS TTHOO
-18E7 ; [.2D29.0020.0002.18E7] # CANADIAN SYLLABICS TTHAA
-18E8 ; [.2D2A.0020.0002.18E8] # CANADIAN SYLLABICS TLHWE
-18E9 ; [.2D2B.0020.0002.18E9] # CANADIAN SYLLABICS TLHOO
-18EA ; [.2D2C.0020.0002.18EA] # CANADIAN SYLLABICS SAYISI SHWE
-18EB ; [.2D2D.0020.0002.18EB] # CANADIAN SYLLABICS SAYISI SHOO
-18EC ; [.2D2E.0020.0002.18EC] # CANADIAN SYLLABICS SAYISI HOO
-18ED ; [.2D2F.0020.0002.18ED] # CANADIAN SYLLABICS CARRIER GWU
-18EE ; [.2D30.0020.0002.18EE] # CANADIAN SYLLABICS CARRIER DENE GEE
-18EF ; [.2D31.0020.0002.18EF] # CANADIAN SYLLABICS CARRIER GAA
-18F0 ; [.2D32.0020.0002.18F0] # CANADIAN SYLLABICS CARRIER GWA
-18F1 ; [.2D33.0020.0002.18F1] # CANADIAN SYLLABICS SAYISI JUU
-18F2 ; [.2D34.0020.0002.18F2] # CANADIAN SYLLABICS CARRIER JWA
-18F3 ; [.2D35.0020.0002.18F3] # CANADIAN SYLLABICS BEAVER DENE L
-18F4 ; [.2D36.0020.0002.18F4] # CANADIAN SYLLABICS BEAVER DENE R
-18F5 ; [.2D37.0020.0002.18F5] # CANADIAN SYLLABICS CARRIER DENTAL S
-1681 ; [.2D38.0020.0002.1681] # OGHAM LETTER BEITH
-1682 ; [.2D39.0020.0002.1682] # OGHAM LETTER LUIS
-1683 ; [.2D3A.0020.0002.1683] # OGHAM LETTER FEARN
-1684 ; [.2D3B.0020.0002.1684] # OGHAM LETTER SAIL
-1685 ; [.2D3C.0020.0002.1685] # OGHAM LETTER NION
-1686 ; [.2D3D.0020.0002.1686] # OGHAM LETTER UATH
-1687 ; [.2D3E.0020.0002.1687] # OGHAM LETTER DAIR
-1688 ; [.2D3F.0020.0002.1688] # OGHAM LETTER TINNE
-1689 ; [.2D40.0020.0002.1689] # OGHAM LETTER COLL
-168A ; [.2D41.0020.0002.168A] # OGHAM LETTER CEIRT
-168B ; [.2D42.0020.0002.168B] # OGHAM LETTER MUIN
-168C ; [.2D43.0020.0002.168C] # OGHAM LETTER GORT
-168D ; [.2D44.0020.0002.168D] # OGHAM LETTER NGEADAL
-168E ; [.2D45.0020.0002.168E] # OGHAM LETTER STRAIF
-168F ; [.2D46.0020.0002.168F] # OGHAM LETTER RUIS
-1690 ; [.2D47.0020.0002.1690] # OGHAM LETTER AILM
-1691 ; [.2D48.0020.0002.1691] # OGHAM LETTER ONN
-1692 ; [.2D49.0020.0002.1692] # OGHAM LETTER UR
-1693 ; [.2D4A.0020.0002.1693] # OGHAM LETTER EADHADH
-1694 ; [.2D4B.0020.0002.1694] # OGHAM LETTER IODHADH
-1695 ; [.2D4C.0020.0002.1695] # OGHAM LETTER EABHADH
-1696 ; [.2D4D.0020.0002.1696] # OGHAM LETTER OR
-1697 ; [.2D4E.0020.0002.1697] # OGHAM LETTER UILLEANN
-1698 ; [.2D4F.0020.0002.1698] # OGHAM LETTER IFIN
-1699 ; [.2D50.0020.0002.1699] # OGHAM LETTER EAMHANCHOLL
-169A ; [.2D51.0020.0002.169A] # OGHAM LETTER PEITH
-16A0 ; [.2D52.0020.0002.16A0] # RUNIC LETTER FEHU FEOH FE F
-16A1 ; [.2D52.0020.0004.16A1][.0000.0139.0004.16A1] # RUNIC LETTER V
-16A2 ; [.2D53.0020.0002.16A2] # RUNIC LETTER URUZ UR U
-16A4 ; [.2D53.0020.0004.16A4][.0000.0139.0004.16A4] # RUNIC LETTER Y
-16A5 ; [.2D53.0020.0004.16A5][.0000.013A.0004.16A5] # RUNIC LETTER W
-16A6 ; [.2D54.0020.0002.16A6] # RUNIC LETTER THURISAZ THURS THORN
-16A7 ; [.2D54.0020.0004.16A7][.0000.0139.0004.16A7] # RUNIC LETTER ETH
-16F0 ; [.2D54.0020.0004.16F0][.2D54.0020.0004.16F0] # RUNIC BELGTHOR SYMBOL
-16A8 ; [.2D55.0020.0002.16A8] # RUNIC LETTER ANSUZ A
-16A9 ; [.2D55.0020.0004.16A9][.0000.0139.0004.16A9] # RUNIC LETTER OS O
-16AC ; [.2D55.0020.0004.16AC][.0000.013A.0004.16AC] # RUNIC LETTER LONG-BRANCH-OSS O
-16AD ; [.2D55.0020.0004.16AD][.0000.013C.0004.16AD] # RUNIC LETTER SHORT-TWIG-OSS O
-16AE ; [.2D55.0020.0004.16AE][.0000.013D.0004.16AE] # RUNIC LETTER O
-16AF ; [.2D56.0020.0002.16AF] # RUNIC LETTER OE
-16B0 ; [.2D57.0020.0002.16B0] # RUNIC LETTER ON
-16B1 ; [.2D58.0020.0002.16B1] # RUNIC LETTER RAIDO RAD REID R
-16B2 ; [.2D59.0020.0002.16B2] # RUNIC LETTER KAUNA
-16B3 ; [.2D59.0020.0004.16B3][.0000.0139.0004.16B3] # RUNIC LETTER CEN
-16B4 ; [.2D59.0020.0004.16B4][.0000.013A.0004.16B4] # RUNIC LETTER KAUN K
-16B5 ; [.2D59.0020.0004.16B5][.0000.013C.0004.16B5] # RUNIC LETTER G
-16B6 ; [.2D59.0020.0004.16B6][.0000.013D.0004.16B6] # RUNIC LETTER ENG
-16B7 ; [.2D5A.0020.0002.16B7] # RUNIC LETTER GEBO GYFU G
-16B9 ; [.2D5B.0020.0002.16B9] # RUNIC LETTER WUNJO WYNN W
-16E9 ; [.2D5B.0020.0004.16E9][.0000.0139.0004.16E9] # RUNIC LETTER Q
-16BA ; [.2D5C.0020.0002.16BA] # RUNIC LETTER HAGLAZ H
-16BB ; [.2D5C.0020.0004.16BB][.0000.0139.0004.16BB] # RUNIC LETTER HAEGL H
-16BC ; [.2D5C.0020.0004.16BC][.0000.013A.0004.16BC] # RUNIC LETTER LONG-BRANCH-HAGALL H
-16BD ; [.2D5C.0020.0004.16BD][.0000.013C.0004.16BD] # RUNIC LETTER SHORT-TWIG-HAGALL H
-16BE ; [.2D5D.0020.0002.16BE] # RUNIC LETTER NAUDIZ NYD NAUD N
-16BF ; [.2D5D.0020.0004.16BF][.0000.0139.0004.16BF] # RUNIC LETTER SHORT-TWIG-NAUD N
-16C0 ; [.2D5D.0020.0004.16C0][.0000.013A.0004.16C0] # RUNIC LETTER DOTTED-N
-16C1 ; [.2D5E.0020.0002.16C1] # RUNIC LETTER ISAZ IS ISS I
-16C2 ; [.2D5E.0020.0004.16C2][.0000.0139.0004.16C2] # RUNIC LETTER E
-16C3 ; [.2D5F.0020.0002.16C3] # RUNIC LETTER JERAN J
-16C4 ; [.2D5F.0020.0004.16C4][.0000.0139.0004.16C4] # RUNIC LETTER GER
-16C5 ; [.2D60.0020.0002.16C5] # RUNIC LETTER LONG-BRANCH-AR AE
-16C6 ; [.2D60.0020.0004.16C6][.0000.0139.0004.16C6] # RUNIC LETTER SHORT-TWIG-AR A
-16EE ; [.2D60.0020.0004.16EE][.2D69.0020.0004.16EE] # RUNIC ARLAUG SYMBOL
-16C7 ; [.2D61.0020.0002.16C7] # RUNIC LETTER IWAZ EOH
-16C8 ; [.2D62.0020.0002.16C8] # RUNIC LETTER PERTHO PEORTH P
-16D5 ; [.2D62.0020.0004.16D5][.0000.0139.0004.16D5] # RUNIC LETTER OPEN-P
-16C9 ; [.2D63.0020.0002.16C9] # RUNIC LETTER ALGIZ EOLHX
-16CA ; [.2D64.0020.0002.16CA] # RUNIC LETTER SOWILO S
-16CB ; [.2D64.0020.0004.16CB][.0000.0139.0004.16CB] # RUNIC LETTER SIGEL LONG-BRANCH-SOL S
-16EA ; [.2D64.0020.0004.16EA][.0000.013A.0004.16EA] # RUNIC LETTER X
-16CC ; [.2D64.0020.0004.16CC][.0000.013C.0004.16CC] # RUNIC LETTER SHORT-TWIG-SOL S
-16CD ; [.2D64.0020.0004.16CD][.0000.013D.0004.16CD] # RUNIC LETTER C
-16CE ; [.2D64.0020.0004.16CE][.0000.013E.0004.16CE] # RUNIC LETTER Z
-16CF ; [.2D65.0020.0002.16CF] # RUNIC LETTER TIWAZ TIR TYR T
-16D0 ; [.2D65.0020.0004.16D0][.0000.0139.0004.16D0] # RUNIC LETTER SHORT-TWIG-TYR T
-16D1 ; [.2D65.0020.0004.16D1][.0000.013A.0004.16D1] # RUNIC LETTER D
-16D2 ; [.2D66.0020.0002.16D2] # RUNIC LETTER BERKANAN BEORC BJARKAN B
-16D3 ; [.2D66.0020.0004.16D3][.0000.0139.0004.16D3] # RUNIC LETTER SHORT-TWIG-BJARKAN B
-16D4 ; [.2D66.0020.0004.16D4][.0000.013A.0004.16D4] # RUNIC LETTER DOTTED-P
-16D6 ; [.2D67.0020.0002.16D6] # RUNIC LETTER EHWAZ EH E
-16D7 ; [.2D68.0020.0002.16D7] # RUNIC LETTER MANNAZ MAN M
-16D8 ; [.2D68.0020.0004.16D8][.0000.0139.0004.16D8] # RUNIC LETTER LONG-BRANCH-MADR M
-16D9 ; [.2D68.0020.0004.16D9][.0000.013A.0004.16D9] # RUNIC LETTER SHORT-TWIG-MADR M
-16EF ; [.2D68.0020.0004.16EF][.0000.0139.0004.16EF][.2D68.0020.001F.16EF][.0000.0139.001F.16EF] # RUNIC TVIMADUR SYMBOL
-16DA ; [.2D69.0020.0002.16DA] # RUNIC LETTER LAUKAZ LAGU LOGR L
-16DB ; [.2D69.0020.0004.16DB][.0000.0139.0004.16DB] # RUNIC LETTER DOTTED-L
-16DC ; [.2D6A.0020.0002.16DC] # RUNIC LETTER INGWAZ
-16DD ; [.2D6A.0020.0004.16DD][.0000.0139.0004.16DD] # RUNIC LETTER ING
-16DE ; [.2D6B.0020.0002.16DE] # RUNIC LETTER DAGAZ DAEG D
-16DF ; [.2D6C.0020.0002.16DF] # RUNIC LETTER OTHALAN ETHEL O
-16AA ; [.2D6D.0020.0002.16AA] # RUNIC LETTER AC A
-16AB ; [.2D6E.0020.0002.16AB] # RUNIC LETTER AESC
-16A3 ; [.2D6F.0020.0002.16A3] # RUNIC LETTER YR
-16E0 ; [.2D70.0020.0002.16E0] # RUNIC LETTER EAR
-16E3 ; [.2D71.0020.0002.16E3] # RUNIC LETTER CALC
-16B8 ; [.2D72.0020.0002.16B8] # RUNIC LETTER GAR
-16E4 ; [.2D73.0020.0002.16E4] # RUNIC LETTER CEALC
-16E1 ; [.2D74.0020.0002.16E1] # RUNIC LETTER IOR
-16E2 ; [.2D75.0020.0002.16E2] # RUNIC LETTER CWEORTH
-16E5 ; [.2D76.0020.0002.16E5] # RUNIC LETTER STAN
-16E6 ; [.2D77.0020.0002.16E6] # RUNIC LETTER LONG-BRANCH-YR
-16E7 ; [.2D77.0020.0004.16E7][.0000.0139.0004.16E7] # RUNIC LETTER SHORT-TWIG-YR
-16E8 ; [.2D77.0020.0004.16E8][.0000.013A.0004.16E8] # RUNIC LETTER ICELANDIC-YR
-10C00 ; [.2D78.0020.0002.10C00] # OLD TURKIC LETTER ORKHON A
-10C01 ; [.2D78.0020.0004.10C01][.0000.0139.0004.10C01] # OLD TURKIC LETTER YENISEI A
-10C02 ; [.2D79.0020.0002.10C02] # OLD TURKIC LETTER YENISEI AE
-10C03 ; [.2D7A.0020.0002.10C03] # OLD TURKIC LETTER ORKHON I
-10C04 ; [.2D7A.0020.0004.10C04][.0000.0139.0004.10C04] # OLD TURKIC LETTER YENISEI I
-10C05 ; [.2D7B.0020.0002.10C05] # OLD TURKIC LETTER YENISEI E
-10C06 ; [.2D7C.0020.0002.10C06] # OLD TURKIC LETTER ORKHON O
-10C07 ; [.2D7D.0020.0002.10C07] # OLD TURKIC LETTER ORKHON OE
-10C08 ; [.2D7D.0020.0004.10C08][.0000.0139.0004.10C08] # OLD TURKIC LETTER YENISEI OE
-10C09 ; [.2D7E.0020.0002.10C09] # OLD TURKIC LETTER ORKHON AB
-10C0A ; [.2D7E.0020.0004.10C0A][.0000.0139.0004.10C0A] # OLD TURKIC LETTER YENISEI AB
-10C0B ; [.2D7F.0020.0002.10C0B] # OLD TURKIC LETTER ORKHON AEB
-10C0C ; [.2D7F.0020.0004.10C0C][.0000.0139.0004.10C0C] # OLD TURKIC LETTER YENISEI AEB
-10C0D ; [.2D80.0020.0002.10C0D] # OLD TURKIC LETTER ORKHON AG
-10C0E ; [.2D80.0020.0004.10C0E][.0000.0139.0004.10C0E] # OLD TURKIC LETTER YENISEI AG
-10C0F ; [.2D81.0020.0002.10C0F] # OLD TURKIC LETTER ORKHON AEG
-10C10 ; [.2D81.0020.0004.10C10][.0000.0139.0004.10C10] # OLD TURKIC LETTER YENISEI AEG
-10C11 ; [.2D82.0020.0002.10C11] # OLD TURKIC LETTER ORKHON AD
-10C12 ; [.2D82.0020.0004.10C12][.0000.0139.0004.10C12] # OLD TURKIC LETTER YENISEI AD
-10C13 ; [.2D83.0020.0002.10C13] # OLD TURKIC LETTER ORKHON AED
-10C14 ; [.2D84.0020.0002.10C14] # OLD TURKIC LETTER ORKHON EZ
-10C15 ; [.2D84.0020.0004.10C15][.0000.0139.0004.10C15] # OLD TURKIC LETTER YENISEI EZ
-10C16 ; [.2D85.0020.0002.10C16] # OLD TURKIC LETTER ORKHON AY
-10C17 ; [.2D85.0020.0004.10C17][.0000.0139.0004.10C17] # OLD TURKIC LETTER YENISEI AY
-10C18 ; [.2D86.0020.0002.10C18] # OLD TURKIC LETTER ORKHON AEY
-10C19 ; [.2D86.0020.0004.10C19][.0000.0139.0004.10C19] # OLD TURKIC LETTER YENISEI AEY
-10C1A ; [.2D87.0020.0002.10C1A] # OLD TURKIC LETTER ORKHON AEK
-10C1B ; [.2D87.0020.0004.10C1B][.0000.0139.0004.10C1B] # OLD TURKIC LETTER YENISEI AEK
-10C1C ; [.2D88.0020.0002.10C1C] # OLD TURKIC LETTER ORKHON OEK
-10C1D ; [.2D88.0020.0004.10C1D][.0000.0139.0004.10C1D] # OLD TURKIC LETTER YENISEI OEK
-10C1E ; [.2D89.0020.0002.10C1E] # OLD TURKIC LETTER ORKHON AL
-10C1F ; [.2D89.0020.0004.10C1F][.0000.0139.0004.10C1F] # OLD TURKIC LETTER YENISEI AL
-10C20 ; [.2D8A.0020.0002.10C20] # OLD TURKIC LETTER ORKHON AEL
-10C21 ; [.2D8B.0020.0002.10C21] # OLD TURKIC LETTER ORKHON ELT
-10C22 ; [.2D8C.0020.0002.10C22] # OLD TURKIC LETTER ORKHON EM
-10C23 ; [.2D8D.0020.0002.10C23] # OLD TURKIC LETTER ORKHON AN
-10C24 ; [.2D8E.0020.0002.10C24] # OLD TURKIC LETTER ORKHON AEN
-10C25 ; [.2D8E.0020.0004.10C25][.0000.0139.0004.10C25] # OLD TURKIC LETTER YENISEI AEN
-10C26 ; [.2D8F.0020.0002.10C26] # OLD TURKIC LETTER ORKHON ENT
-10C27 ; [.2D8F.0020.0004.10C27][.0000.0139.0004.10C27] # OLD TURKIC LETTER YENISEI ENT
-10C28 ; [.2D90.0020.0002.10C28] # OLD TURKIC LETTER ORKHON ENC
-10C29 ; [.2D90.0020.0004.10C29][.0000.0139.0004.10C29] # OLD TURKIC LETTER YENISEI ENC
-10C2A ; [.2D91.0020.0002.10C2A] # OLD TURKIC LETTER ORKHON ENY
-10C2B ; [.2D91.0020.0004.10C2B][.0000.0139.0004.10C2B] # OLD TURKIC LETTER YENISEI ENY
-10C2C ; [.2D92.0020.0002.10C2C] # OLD TURKIC LETTER YENISEI ANG
-10C2D ; [.2D93.0020.0002.10C2D] # OLD TURKIC LETTER ORKHON ENG
-10C2E ; [.2D93.0020.0004.10C2E][.0000.0139.0004.10C2E] # OLD TURKIC LETTER YENISEI AENG
-10C2F ; [.2D94.0020.0002.10C2F] # OLD TURKIC LETTER ORKHON EP
-10C30 ; [.2D95.0020.0002.10C30] # OLD TURKIC LETTER ORKHON OP
-10C31 ; [.2D96.0020.0002.10C31] # OLD TURKIC LETTER ORKHON IC
-10C32 ; [.2D97.0020.0002.10C32] # OLD TURKIC LETTER ORKHON EC
-10C33 ; [.2D97.0020.0004.10C33][.0000.0139.0004.10C33] # OLD TURKIC LETTER YENISEI EC
-10C34 ; [.2D98.0020.0002.10C34] # OLD TURKIC LETTER ORKHON AQ
-10C35 ; [.2D98.0020.0004.10C35][.0000.0139.0004.10C35] # OLD TURKIC LETTER YENISEI AQ
-10C36 ; [.2D99.0020.0002.10C36] # OLD TURKIC LETTER ORKHON IQ
-10C37 ; [.2D99.0020.0004.10C37][.0000.0139.0004.10C37] # OLD TURKIC LETTER YENISEI IQ
-10C38 ; [.2D9A.0020.0002.10C38] # OLD TURKIC LETTER ORKHON OQ
-10C39 ; [.2D9A.0020.0004.10C39][.0000.0139.0004.10C39] # OLD TURKIC LETTER YENISEI OQ
-10C3A ; [.2D9B.0020.0002.10C3A] # OLD TURKIC LETTER ORKHON AR
-10C3B ; [.2D9B.0020.0004.10C3B][.0000.0139.0004.10C3B] # OLD TURKIC LETTER YENISEI AR
-10C3C ; [.2D9C.0020.0002.10C3C] # OLD TURKIC LETTER ORKHON AER
-10C3D ; [.2D9D.0020.0002.10C3D] # OLD TURKIC LETTER ORKHON AS
-10C3E ; [.2D9E.0020.0002.10C3E] # OLD TURKIC LETTER ORKHON AES
-10C3F ; [.2D9F.0020.0002.10C3F] # OLD TURKIC LETTER ORKHON ASH
-10C40 ; [.2D9F.0020.0004.10C40][.0000.0139.0004.10C40] # OLD TURKIC LETTER YENISEI ASH
-10C41 ; [.2DA0.0020.0002.10C41] # OLD TURKIC LETTER ORKHON ESH
-10C42 ; [.2DA0.0020.0004.10C42][.0000.0139.0004.10C42] # OLD TURKIC LETTER YENISEI ESH
-10C43 ; [.2DA1.0020.0002.10C43] # OLD TURKIC LETTER ORKHON AT
-10C44 ; [.2DA1.0020.0004.10C44][.0000.0139.0004.10C44] # OLD TURKIC LETTER YENISEI AT
-10C45 ; [.2DA2.0020.0002.10C45] # OLD TURKIC LETTER ORKHON AET
-10C46 ; [.2DA2.0020.0004.10C46][.0000.0139.0004.10C46] # OLD TURKIC LETTER YENISEI AET
-10C47 ; [.2DA3.0020.0002.10C47] # OLD TURKIC LETTER ORKHON OT
-10C48 ; [.2DA4.0020.0002.10C48] # OLD TURKIC LETTER ORKHON BASH
-A500 ; [.2DA5.0020.0002.A500] # VAI SYLLABLE EE
-A501 ; [.2DA6.0020.0002.A501] # VAI SYLLABLE EEN
-A502 ; [.2DA7.0020.0002.A502] # VAI SYLLABLE HEE
-A503 ; [.2DA8.0020.0002.A503] # VAI SYLLABLE WEE
-A504 ; [.2DA9.0020.0002.A504] # VAI SYLLABLE WEEN
-A505 ; [.2DAA.0020.0002.A505] # VAI SYLLABLE PEE
-A506 ; [.2DAB.0020.0002.A506] # VAI SYLLABLE BHEE
-A507 ; [.2DAC.0020.0002.A507] # VAI SYLLABLE BEE
-A508 ; [.2DAD.0020.0002.A508] # VAI SYLLABLE MBEE
-A509 ; [.2DAE.0020.0002.A509] # VAI SYLLABLE KPEE
-A50A ; [.2DAF.0020.0002.A50A] # VAI SYLLABLE MGBEE
-A50B ; [.2DB0.0020.0002.A50B] # VAI SYLLABLE GBEE
-A50C ; [.2DB1.0020.0002.A50C] # VAI SYLLABLE FEE
-A613 ; [.2DB1.0020.0004.A613][.2EB0.0020.0004.A613] # VAI SYMBOL FEENG
-A50D ; [.2DB2.0020.0002.A50D] # VAI SYLLABLE VEE
-A50E ; [.2DB3.0020.0002.A50E] # VAI SYLLABLE TEE
-A50F ; [.2DB4.0020.0002.A50F] # VAI SYLLABLE THEE
-A510 ; [.2DB5.0020.0002.A510] # VAI SYLLABLE DHEE
-A511 ; [.2DB6.0020.0002.A511] # VAI SYLLABLE DHHEE
-A512 ; [.2DB7.0020.0002.A512] # VAI SYLLABLE LEE
-A513 ; [.2DB8.0020.0002.A513] # VAI SYLLABLE REE
-A514 ; [.2DB9.0020.0002.A514] # VAI SYLLABLE DEE
-A515 ; [.2DBA.0020.0002.A515] # VAI SYLLABLE NDEE
-A516 ; [.2DBB.0020.0002.A516] # VAI SYLLABLE SEE
-A517 ; [.2DBC.0020.0002.A517] # VAI SYLLABLE SHEE
-A518 ; [.2DBD.0020.0002.A518] # VAI SYLLABLE ZEE
-A519 ; [.2DBE.0020.0002.A519] # VAI SYLLABLE ZHEE
-A51A ; [.2DBF.0020.0002.A51A] # VAI SYLLABLE CEE
-A51B ; [.2DC0.0020.0002.A51B] # VAI SYLLABLE JEE
-A51C ; [.2DC1.0020.0002.A51C] # VAI SYLLABLE NJEE
-A51D ; [.2DC2.0020.0002.A51D] # VAI SYLLABLE YEE
-A51E ; [.2DC3.0020.0002.A51E] # VAI SYLLABLE KEE
-A614 ; [.2DC3.0020.0004.A614][.2EB0.0020.0004.A614] # VAI SYMBOL KEENG
-A51F ; [.2DC4.0020.0002.A51F] # VAI SYLLABLE NGGEE
-A520 ; [.2DC5.0020.0002.A520] # VAI SYLLABLE GEE
-A521 ; [.2DC6.0020.0002.A521] # VAI SYLLABLE MEE
-A522 ; [.2DC7.0020.0002.A522] # VAI SYLLABLE NEE
-A523 ; [.2DC8.0020.0002.A523] # VAI SYLLABLE NYEE
-A524 ; [.2DC9.0020.0002.A524] # VAI SYLLABLE I
-A525 ; [.2DCA.0020.0002.A525] # VAI SYLLABLE IN
-A526 ; [.2DCB.0020.0002.A526] # VAI SYLLABLE HI
-A527 ; [.2DCC.0020.0002.A527] # VAI SYLLABLE HIN
-A528 ; [.2DCD.0020.0002.A528] # VAI SYLLABLE WI
-A529 ; [.2DCE.0020.0002.A529] # VAI SYLLABLE WIN
-A52A ; [.2DCF.0020.0002.A52A] # VAI SYLLABLE PI
-A52B ; [.2DD0.0020.0002.A52B] # VAI SYLLABLE BHI
-A52C ; [.2DD1.0020.0002.A52C] # VAI SYLLABLE BI
-A52D ; [.2DD2.0020.0002.A52D] # VAI SYLLABLE MBI
-A52E ; [.2DD3.0020.0002.A52E] # VAI SYLLABLE KPI
-A52F ; [.2DD4.0020.0002.A52F] # VAI SYLLABLE MGBI
-A530 ; [.2DD5.0020.0002.A530] # VAI SYLLABLE GBI
-A531 ; [.2DD6.0020.0002.A531] # VAI SYLLABLE FI
-A532 ; [.2DD7.0020.0002.A532] # VAI SYLLABLE VI
-A533 ; [.2DD8.0020.0002.A533] # VAI SYLLABLE TI
-A615 ; [.2DD8.0020.0004.A615][.2EB0.0020.0004.A615] # VAI SYMBOL TING
-A534 ; [.2DD9.0020.0002.A534] # VAI SYLLABLE THI
-A535 ; [.2DDA.0020.0002.A535] # VAI SYLLABLE DHI
-A536 ; [.2DDB.0020.0002.A536] # VAI SYLLABLE DHHI
-A537 ; [.2DDC.0020.0002.A537] # VAI SYLLABLE LI
-A538 ; [.2DDD.0020.0002.A538] # VAI SYLLABLE RI
-A539 ; [.2DDE.0020.0002.A539] # VAI SYLLABLE DI
-A53A ; [.2DDF.0020.0002.A53A] # VAI SYLLABLE NDI
-A53B ; [.2DE0.0020.0002.A53B] # VAI SYLLABLE SI
-A53C ; [.2DE1.0020.0002.A53C] # VAI SYLLABLE SHI
-A53D ; [.2DE2.0020.0002.A53D] # VAI SYLLABLE ZI
-A53E ; [.2DE3.0020.0002.A53E] # VAI SYLLABLE ZHI
-A53F ; [.2DE4.0020.0002.A53F] # VAI SYLLABLE CI
-A540 ; [.2DE5.0020.0002.A540] # VAI SYLLABLE JI
-A541 ; [.2DE6.0020.0002.A541] # VAI SYLLABLE NJI
-A542 ; [.2DE7.0020.0002.A542] # VAI SYLLABLE YI
-A543 ; [.2DE8.0020.0002.A543] # VAI SYLLABLE KI
-A544 ; [.2DE9.0020.0002.A544] # VAI SYLLABLE NGGI
-A545 ; [.2DEA.0020.0002.A545] # VAI SYLLABLE GI
-A546 ; [.2DEB.0020.0002.A546] # VAI SYLLABLE MI
-A547 ; [.2DEC.0020.0002.A547] # VAI SYLLABLE NI
-A616 ; [.2DEC.0020.0004.A616][.2EB1.0020.0004.A616] # VAI SYMBOL NII
-A548 ; [.2DED.0020.0002.A548] # VAI SYLLABLE NYI
-A549 ; [.2DEE.0020.0002.A549] # VAI SYLLABLE A
-A54A ; [.2DEF.0020.0002.A54A] # VAI SYLLABLE AN
-A54B ; [.2DF0.0020.0002.A54B] # VAI SYLLABLE NGAN
-A54C ; [.2DF1.0020.0002.A54C] # VAI SYLLABLE HA
-A54D ; [.2DF2.0020.0002.A54D] # VAI SYLLABLE HAN
-A54E ; [.2DF3.0020.0002.A54E] # VAI SYLLABLE WA
-A54F ; [.2DF4.0020.0002.A54F] # VAI SYLLABLE WAN
-A550 ; [.2DF5.0020.0002.A550] # VAI SYLLABLE PA
-A551 ; [.2DF6.0020.0002.A551] # VAI SYLLABLE BHA
-A552 ; [.2DF7.0020.0002.A552] # VAI SYLLABLE BA
-A617 ; [.2DF7.0020.0004.A617][.2EB0.0020.0004.A617] # VAI SYMBOL BANG
-A553 ; [.2DF8.0020.0002.A553] # VAI SYLLABLE MBA
-A554 ; [.2DF9.0020.0002.A554] # VAI SYLLABLE KPA
-A555 ; [.2DFA.0020.0002.A555] # VAI SYLLABLE KPAN
-A556 ; [.2DFB.0020.0002.A556] # VAI SYLLABLE MGBA
-A557 ; [.2DFC.0020.0002.A557] # VAI SYLLABLE GBA
-A558 ; [.2DFD.0020.0002.A558] # VAI SYLLABLE FA
-A610 ; [.2DFD.0020.0004.A610] # VAI SYLLABLE NDOLE FA
-A618 ; [.2DFD.0020.0004.A618][.2EB1.0020.0004.A618] # VAI SYMBOL FAA
-A559 ; [.2DFE.0020.0002.A559] # VAI SYLLABLE VA
-A55A ; [.2DFF.0020.0002.A55A] # VAI SYLLABLE TA
-A619 ; [.2DFF.0020.0004.A619][.2EB1.0020.0004.A619] # VAI SYMBOL TAA
-A55B ; [.2E00.0020.0002.A55B] # VAI SYLLABLE THA
-A55C ; [.2E01.0020.0002.A55C] # VAI SYLLABLE DHA
-A55D ; [.2E02.0020.0002.A55D] # VAI SYLLABLE DHHA
-A55E ; [.2E03.0020.0002.A55E] # VAI SYLLABLE LA
-A55F ; [.2E04.0020.0002.A55F] # VAI SYLLABLE RA
-A560 ; [.2E05.0020.0002.A560] # VAI SYLLABLE DA
-A61A ; [.2E05.0020.0004.A61A][.2EB0.0020.0004.A61A] # VAI SYMBOL DANG
-A561 ; [.2E06.0020.0002.A561] # VAI SYLLABLE NDA
-A562 ; [.2E07.0020.0002.A562] # VAI SYLLABLE SA
-A563 ; [.2E08.0020.0002.A563] # VAI SYLLABLE SHA
-A564 ; [.2E09.0020.0002.A564] # VAI SYLLABLE ZA
-A565 ; [.2E0A.0020.0002.A565] # VAI SYLLABLE ZHA
-A566 ; [.2E0B.0020.0002.A566] # VAI SYLLABLE CA
-A567 ; [.2E0C.0020.0002.A567] # VAI SYLLABLE JA
-A568 ; [.2E0D.0020.0002.A568] # VAI SYLLABLE NJA
-A569 ; [.2E0E.0020.0002.A569] # VAI SYLLABLE YA
-A56A ; [.2E0F.0020.0002.A56A] # VAI SYLLABLE KA
-A611 ; [.2E0F.0020.0004.A611] # VAI SYLLABLE NDOLE KA
-A56B ; [.2E10.0020.0002.A56B] # VAI SYLLABLE KAN
-A56C ; [.2E11.0020.0002.A56C] # VAI SYLLABLE NGGA
-A56D ; [.2E12.0020.0002.A56D] # VAI SYLLABLE GA
-A56E ; [.2E13.0020.0002.A56E] # VAI SYLLABLE MA
-A62A ; [.2E13.0020.0004.A62A] # VAI SYLLABLE NDOLE MA
-A56F ; [.2E14.0020.0002.A56F] # VAI SYLLABLE NA
-A570 ; [.2E15.0020.0002.A570] # VAI SYLLABLE NYA
-A571 ; [.2E16.0020.0002.A571] # VAI SYLLABLE OO
-A572 ; [.2E17.0020.0002.A572] # VAI SYLLABLE OON
-A573 ; [.2E18.0020.0002.A573] # VAI SYLLABLE HOO
-A574 ; [.2E19.0020.0002.A574] # VAI SYLLABLE WOO
-A575 ; [.2E1A.0020.0002.A575] # VAI SYLLABLE WOON
-A576 ; [.2E1B.0020.0002.A576] # VAI SYLLABLE POO
-A577 ; [.2E1C.0020.0002.A577] # VAI SYLLABLE BHOO
-A578 ; [.2E1D.0020.0002.A578] # VAI SYLLABLE BOO
-A579 ; [.2E1E.0020.0002.A579] # VAI SYLLABLE MBOO
-A57A ; [.2E1F.0020.0002.A57A] # VAI SYLLABLE KPOO
-A57B ; [.2E20.0020.0002.A57B] # VAI SYLLABLE MGBOO
-A57C ; [.2E21.0020.0002.A57C] # VAI SYLLABLE GBOO
-A57D ; [.2E22.0020.0002.A57D] # VAI SYLLABLE FOO
-A57E ; [.2E23.0020.0002.A57E] # VAI SYLLABLE VOO
-A57F ; [.2E24.0020.0002.A57F] # VAI SYLLABLE TOO
-A580 ; [.2E25.0020.0002.A580] # VAI SYLLABLE THOO
-A581 ; [.2E26.0020.0002.A581] # VAI SYLLABLE DHOO
-A582 ; [.2E27.0020.0002.A582] # VAI SYLLABLE DHHOO
-A583 ; [.2E28.0020.0002.A583] # VAI SYLLABLE LOO
-A584 ; [.2E29.0020.0002.A584] # VAI SYLLABLE ROO
-A585 ; [.2E2A.0020.0002.A585] # VAI SYLLABLE DOO
-A61B ; [.2E2A.0020.0004.A61B][.2EB0.0020.0004.A61B] # VAI SYMBOL DOONG
-A586 ; [.2E2B.0020.0002.A586] # VAI SYLLABLE NDOO
-A587 ; [.2E2C.0020.0002.A587] # VAI SYLLABLE SOO
-A612 ; [.2E2C.0020.0004.A612] # VAI SYLLABLE NDOLE SOO
-A588 ; [.2E2D.0020.0002.A588] # VAI SYLLABLE SHOO
-A589 ; [.2E2E.0020.0002.A589] # VAI SYLLABLE ZOO
-A58A ; [.2E2F.0020.0002.A58A] # VAI SYLLABLE ZHOO
-A58B ; [.2E30.0020.0002.A58B] # VAI SYLLABLE COO
-A58C ; [.2E31.0020.0002.A58C] # VAI SYLLABLE JOO
-A58D ; [.2E32.0020.0002.A58D] # VAI SYLLABLE NJOO
-A58E ; [.2E33.0020.0002.A58E] # VAI SYLLABLE YOO
-A58F ; [.2E34.0020.0002.A58F] # VAI SYLLABLE KOO
-A590 ; [.2E35.0020.0002.A590] # VAI SYLLABLE NGGOO
-A591 ; [.2E36.0020.0002.A591] # VAI SYLLABLE GOO
-A592 ; [.2E37.0020.0002.A592] # VAI SYLLABLE MOO
-A593 ; [.2E38.0020.0002.A593] # VAI SYLLABLE NOO
-A594 ; [.2E39.0020.0002.A594] # VAI SYLLABLE NYOO
-A595 ; [.2E3A.0020.0002.A595] # VAI SYLLABLE U
-A596 ; [.2E3B.0020.0002.A596] # VAI SYLLABLE UN
-A597 ; [.2E3C.0020.0002.A597] # VAI SYLLABLE HU
-A598 ; [.2E3D.0020.0002.A598] # VAI SYLLABLE HUN
-A599 ; [.2E3E.0020.0002.A599] # VAI SYLLABLE WU
-A59A ; [.2E3F.0020.0002.A59A] # VAI SYLLABLE WUN
-A59B ; [.2E40.0020.0002.A59B] # VAI SYLLABLE PU
-A59C ; [.2E41.0020.0002.A59C] # VAI SYLLABLE BHU
-A59D ; [.2E42.0020.0002.A59D] # VAI SYLLABLE BU
-A59E ; [.2E43.0020.0002.A59E] # VAI SYLLABLE MBU
-A59F ; [.2E44.0020.0002.A59F] # VAI SYLLABLE KPU
-A5A0 ; [.2E45.0020.0002.A5A0] # VAI SYLLABLE MGBU
-A5A1 ; [.2E46.0020.0002.A5A1] # VAI SYLLABLE GBU
-A5A2 ; [.2E47.0020.0002.A5A2] # VAI SYLLABLE FU
-A5A3 ; [.2E48.0020.0002.A5A3] # VAI SYLLABLE VU
-A5A4 ; [.2E49.0020.0002.A5A4] # VAI SYLLABLE TU
-A5A5 ; [.2E4A.0020.0002.A5A5] # VAI SYLLABLE THU
-A5A6 ; [.2E4B.0020.0002.A5A6] # VAI SYLLABLE DHU
-A5A7 ; [.2E4C.0020.0002.A5A7] # VAI SYLLABLE DHHU
-A5A8 ; [.2E4D.0020.0002.A5A8] # VAI SYLLABLE LU
-A5A9 ; [.2E4E.0020.0002.A5A9] # VAI SYLLABLE RU
-A5AA ; [.2E4F.0020.0002.A5AA] # VAI SYLLABLE DU
-A5AB ; [.2E50.0020.0002.A5AB] # VAI SYLLABLE NDU
-A5AC ; [.2E51.0020.0002.A5AC] # VAI SYLLABLE SU
-A5AD ; [.2E52.0020.0002.A5AD] # VAI SYLLABLE SHU
-A5AE ; [.2E53.0020.0002.A5AE] # VAI SYLLABLE ZU
-A5AF ; [.2E54.0020.0002.A5AF] # VAI SYLLABLE ZHU
-A5B0 ; [.2E55.0020.0002.A5B0] # VAI SYLLABLE CU
-A5B1 ; [.2E56.0020.0002.A5B1] # VAI SYLLABLE JU
-A5B2 ; [.2E57.0020.0002.A5B2] # VAI SYLLABLE NJU
-A5B3 ; [.2E58.0020.0002.A5B3] # VAI SYLLABLE YU
-A5B4 ; [.2E59.0020.0002.A5B4] # VAI SYLLABLE KU
-A61C ; [.2E59.0020.0004.A61C][.2EB0.0020.0004.A61C] # VAI SYMBOL KUNG
-A5B5 ; [.2E5A.0020.0002.A5B5] # VAI SYLLABLE NGGU
-A5B6 ; [.2E5B.0020.0002.A5B6] # VAI SYLLABLE GU
-A5B7 ; [.2E5C.0020.0002.A5B7] # VAI SYLLABLE MU
-A5B8 ; [.2E5D.0020.0002.A5B8] # VAI SYLLABLE NU
-A5B9 ; [.2E5E.0020.0002.A5B9] # VAI SYLLABLE NYU
-A5BA ; [.2E5F.0020.0002.A5BA] # VAI SYLLABLE O
-A5BB ; [.2E60.0020.0002.A5BB] # VAI SYLLABLE ON
-A5BC ; [.2E61.0020.0002.A5BC] # VAI SYLLABLE NGON
-A5BD ; [.2E62.0020.0002.A5BD] # VAI SYLLABLE HO
-A5BE ; [.2E63.0020.0002.A5BE] # VAI SYLLABLE HON
-A5BF ; [.2E64.0020.0002.A5BF] # VAI SYLLABLE WO
-A5C0 ; [.2E65.0020.0002.A5C0] # VAI SYLLABLE WON
-A5C1 ; [.2E66.0020.0002.A5C1] # VAI SYLLABLE PO
-A5C2 ; [.2E67.0020.0002.A5C2] # VAI SYLLABLE BHO
-A5C3 ; [.2E68.0020.0002.A5C3] # VAI SYLLABLE BO
-A5C4 ; [.2E69.0020.0002.A5C4] # VAI SYLLABLE MBO
-A5C5 ; [.2E6A.0020.0002.A5C5] # VAI SYLLABLE KPO
-A5C6 ; [.2E6B.0020.0002.A5C6] # VAI SYLLABLE MGBO
-A5C7 ; [.2E6C.0020.0002.A5C7] # VAI SYLLABLE GBO
-A5C8 ; [.2E6D.0020.0002.A5C8] # VAI SYLLABLE GBON
-A5C9 ; [.2E6E.0020.0002.A5C9] # VAI SYLLABLE FO
-A5CA ; [.2E6F.0020.0002.A5CA] # VAI SYLLABLE VO
-A5CB ; [.2E70.0020.0002.A5CB] # VAI SYLLABLE TO
-A61D ; [.2E70.0020.0004.A61D][.2EB0.0020.0004.A61D] # VAI SYMBOL TONG
-A5CC ; [.2E71.0020.0002.A5CC] # VAI SYLLABLE THO
-A5CD ; [.2E72.0020.0002.A5CD] # VAI SYLLABLE DHO
-A5CE ; [.2E73.0020.0002.A5CE] # VAI SYLLABLE DHHO
-A5CF ; [.2E74.0020.0002.A5CF] # VAI SYLLABLE LO
-A5D0 ; [.2E75.0020.0002.A5D0] # VAI SYLLABLE RO
-A5D1 ; [.2E76.0020.0002.A5D1] # VAI SYLLABLE DO
-A62B ; [.2E76.0020.0004.A62B] # VAI SYLLABLE NDOLE DO
-A61E ; [.2E76.0020.0004.A61E][.2EB1.0020.0004.A61E] # VAI SYMBOL DO-O
-A5D2 ; [.2E77.0020.0002.A5D2] # VAI SYLLABLE NDO
-A5D3 ; [.2E78.0020.0002.A5D3] # VAI SYLLABLE SO
-A5D4 ; [.2E79.0020.0002.A5D4] # VAI SYLLABLE SHO
-A5D5 ; [.2E7A.0020.0002.A5D5] # VAI SYLLABLE ZO
-A5D6 ; [.2E7B.0020.0002.A5D6] # VAI SYLLABLE ZHO
-A5D7 ; [.2E7C.0020.0002.A5D7] # VAI SYLLABLE CO
-A5D8 ; [.2E7D.0020.0002.A5D8] # VAI SYLLABLE JO
-A61F ; [.2E7D.0020.0004.A61F][.2EB0.0020.0004.A61F] # VAI SYMBOL JONG
-A5D9 ; [.2E7E.0020.0002.A5D9] # VAI SYLLABLE NJO
-A5DA ; [.2E7F.0020.0002.A5DA] # VAI SYLLABLE YO
-A5DB ; [.2E80.0020.0002.A5DB] # VAI SYLLABLE KO
-A5DC ; [.2E81.0020.0002.A5DC] # VAI SYLLABLE NGGO
-A5DD ; [.2E82.0020.0002.A5DD] # VAI SYLLABLE GO
-A5DE ; [.2E83.0020.0002.A5DE] # VAI SYLLABLE MO
-A5DF ; [.2E84.0020.0002.A5DF] # VAI SYLLABLE NO
-A5E0 ; [.2E85.0020.0002.A5E0] # VAI SYLLABLE NYO
-A5E1 ; [.2E86.0020.0002.A5E1] # VAI SYLLABLE E
-A5E2 ; [.2E87.0020.0002.A5E2] # VAI SYLLABLE EN
-A5E3 ; [.2E88.0020.0002.A5E3] # VAI SYLLABLE NGEN
-A5E4 ; [.2E89.0020.0002.A5E4] # VAI SYLLABLE HE
-A5E5 ; [.2E8A.0020.0002.A5E5] # VAI SYLLABLE HEN
-A5E6 ; [.2E8B.0020.0002.A5E6] # VAI SYLLABLE WE
-A5E7 ; [.2E8C.0020.0002.A5E7] # VAI SYLLABLE WEN
-A5E8 ; [.2E8D.0020.0002.A5E8] # VAI SYLLABLE PE
-A5E9 ; [.2E8E.0020.0002.A5E9] # VAI SYLLABLE BHE
-A5EA ; [.2E8F.0020.0002.A5EA] # VAI SYLLABLE BE
-A5EB ; [.2E90.0020.0002.A5EB] # VAI SYLLABLE MBE
-A5EC ; [.2E91.0020.0002.A5EC] # VAI SYLLABLE KPE
-A5ED ; [.2E92.0020.0002.A5ED] # VAI SYLLABLE KPEN
-A5EE ; [.2E93.0020.0002.A5EE] # VAI SYLLABLE MGBE
-A5EF ; [.2E94.0020.0002.A5EF] # VAI SYLLABLE GBE
-A5F0 ; [.2E95.0020.0002.A5F0] # VAI SYLLABLE GBEN
-A5F1 ; [.2E96.0020.0002.A5F1] # VAI SYLLABLE FE
-A5F2 ; [.2E97.0020.0002.A5F2] # VAI SYLLABLE VE
-A5F3 ; [.2E98.0020.0002.A5F3] # VAI SYLLABLE TE
-A5F4 ; [.2E99.0020.0002.A5F4] # VAI SYLLABLE THE
-A5F5 ; [.2E9A.0020.0002.A5F5] # VAI SYLLABLE DHE
-A5F6 ; [.2E9B.0020.0002.A5F6] # VAI SYLLABLE DHHE
-A5F7 ; [.2E9C.0020.0002.A5F7] # VAI SYLLABLE LE
-A5F8 ; [.2E9D.0020.0002.A5F8] # VAI SYLLABLE RE
-A5F9 ; [.2E9E.0020.0002.A5F9] # VAI SYLLABLE DE
-A5FA ; [.2E9F.0020.0002.A5FA] # VAI SYLLABLE NDE
-A5FB ; [.2EA0.0020.0002.A5FB] # VAI SYLLABLE SE
-A5FC ; [.2EA1.0020.0002.A5FC] # VAI SYLLABLE SHE
-A5FD ; [.2EA2.0020.0002.A5FD] # VAI SYLLABLE ZE
-A5FE ; [.2EA3.0020.0002.A5FE] # VAI SYLLABLE ZHE
-A5FF ; [.2EA4.0020.0002.A5FF] # VAI SYLLABLE CE
-A600 ; [.2EA5.0020.0002.A600] # VAI SYLLABLE JE
-A601 ; [.2EA6.0020.0002.A601] # VAI SYLLABLE NJE
-A602 ; [.2EA7.0020.0002.A602] # VAI SYLLABLE YE
-A603 ; [.2EA8.0020.0002.A603] # VAI SYLLABLE KE
-A604 ; [.2EA9.0020.0002.A604] # VAI SYLLABLE NGGE
-A605 ; [.2EAA.0020.0002.A605] # VAI SYLLABLE NGGEN
-A606 ; [.2EAB.0020.0002.A606] # VAI SYLLABLE GE
-A607 ; [.2EAC.0020.0002.A607] # VAI SYLLABLE GEN
-A608 ; [.2EAD.0020.0002.A608] # VAI SYLLABLE ME
-A609 ; [.2EAE.0020.0002.A609] # VAI SYLLABLE NE
-A60A ; [.2EAF.0020.0002.A60A] # VAI SYLLABLE NYE
-A60B ; [.2EB0.0020.0002.A60B] # VAI SYLLABLE NG
-A60C ; [.2EB1.0020.0002.A60C] # VAI SYLLABLE LENGTHENER
-A6A0 ; [.2EB2.0020.0002.A6A0] # BAMUM LETTER A
-A6A1 ; [.2EB3.0020.0002.A6A1] # BAMUM LETTER KA
-A6A2 ; [.2EB4.0020.0002.A6A2] # BAMUM LETTER U
-A6A3 ; [.2EB5.0020.0002.A6A3] # BAMUM LETTER KU
-A6A4 ; [.2EB6.0020.0002.A6A4] # BAMUM LETTER EE
-A6A5 ; [.2EB7.0020.0002.A6A5] # BAMUM LETTER REE
-A6A6 ; [.2EB8.0020.0002.A6A6] # BAMUM LETTER TAE
-A6A7 ; [.2EB9.0020.0002.A6A7] # BAMUM LETTER O
-A6A8 ; [.2EBA.0020.0002.A6A8] # BAMUM LETTER NYI
-A6A9 ; [.2EBB.0020.0002.A6A9] # BAMUM LETTER I
-A6AA ; [.2EBC.0020.0002.A6AA] # BAMUM LETTER LA
-A6AB ; [.2EBD.0020.0002.A6AB] # BAMUM LETTER PA
-A6AC ; [.2EBE.0020.0002.A6AC] # BAMUM LETTER RII
-A6AD ; [.2EBF.0020.0002.A6AD] # BAMUM LETTER RIEE
-A6AE ; [.2EC0.0020.0002.A6AE] # BAMUM LETTER LEEEE
-A6AF ; [.2EC1.0020.0002.A6AF] # BAMUM LETTER MEEEE
-A6B0 ; [.2EC2.0020.0002.A6B0] # BAMUM LETTER TAA
-A6B1 ; [.2EC3.0020.0002.A6B1] # BAMUM LETTER NDAA
-A6B2 ; [.2EC4.0020.0002.A6B2] # BAMUM LETTER NJAEM
-A6B3 ; [.2EC5.0020.0002.A6B3] # BAMUM LETTER M
-A6B4 ; [.2EC6.0020.0002.A6B4] # BAMUM LETTER SUU
-A6B5 ; [.2EC7.0020.0002.A6B5] # BAMUM LETTER MU
-A6B6 ; [.2EC8.0020.0002.A6B6] # BAMUM LETTER SHII
-A6B7 ; [.2EC9.0020.0002.A6B7] # BAMUM LETTER SI
-A6B8 ; [.2ECA.0020.0002.A6B8] # BAMUM LETTER SHEUX
-A6B9 ; [.2ECB.0020.0002.A6B9] # BAMUM LETTER SEUX
-A6BA ; [.2ECC.0020.0002.A6BA] # BAMUM LETTER KYEE
-A6BB ; [.2ECD.0020.0002.A6BB] # BAMUM LETTER KET
-A6BC ; [.2ECE.0020.0002.A6BC] # BAMUM LETTER NUAE
-A6BD ; [.2ECF.0020.0002.A6BD] # BAMUM LETTER NU
-A6BE ; [.2ED0.0020.0002.A6BE] # BAMUM LETTER NJUAE
-A6BF ; [.2ED1.0020.0002.A6BF] # BAMUM LETTER YOQ
-A6C0 ; [.2ED2.0020.0002.A6C0] # BAMUM LETTER SHU
-A6C1 ; [.2ED3.0020.0002.A6C1] # BAMUM LETTER YUQ
-A6C2 ; [.2ED4.0020.0002.A6C2] # BAMUM LETTER YA
-A6C3 ; [.2ED5.0020.0002.A6C3] # BAMUM LETTER NSHA
-A6C4 ; [.2ED6.0020.0002.A6C4] # BAMUM LETTER KEUX
-A6C5 ; [.2ED7.0020.0002.A6C5] # BAMUM LETTER PEUX
-A6C6 ; [.2ED8.0020.0002.A6C6] # BAMUM LETTER NJEE
-A6C7 ; [.2ED9.0020.0002.A6C7] # BAMUM LETTER NTEE
-A6C8 ; [.2EDA.0020.0002.A6C8] # BAMUM LETTER PUE
-A6C9 ; [.2EDB.0020.0002.A6C9] # BAMUM LETTER WUE
-A6CA ; [.2EDC.0020.0002.A6CA] # BAMUM LETTER PEE
-A6CB ; [.2EDD.0020.0002.A6CB] # BAMUM LETTER FEE
-A6CC ; [.2EDE.0020.0002.A6CC] # BAMUM LETTER RU
-A6CD ; [.2EDF.0020.0002.A6CD] # BAMUM LETTER LU
-A6CE ; [.2EE0.0020.0002.A6CE] # BAMUM LETTER MI
-A6CF ; [.2EE1.0020.0002.A6CF] # BAMUM LETTER NI
-A6D0 ; [.2EE2.0020.0002.A6D0] # BAMUM LETTER REUX
-A6D1 ; [.2EE3.0020.0002.A6D1] # BAMUM LETTER RAE
-A6D2 ; [.2EE4.0020.0002.A6D2] # BAMUM LETTER KEN
-A6D3 ; [.2EE5.0020.0002.A6D3] # BAMUM LETTER NGKWAEN
-A6D4 ; [.2EE6.0020.0002.A6D4] # BAMUM LETTER NGGA
-A6D5 ; [.2EE7.0020.0002.A6D5] # BAMUM LETTER NGA
-A6D6 ; [.2EE8.0020.0002.A6D6] # BAMUM LETTER SHO
-A6D7 ; [.2EE9.0020.0002.A6D7] # BAMUM LETTER PUAE
-A6D8 ; [.2EEA.0020.0002.A6D8] # BAMUM LETTER FU
-A6D9 ; [.2EEB.0020.0002.A6D9] # BAMUM LETTER FOM
-A6DA ; [.2EEC.0020.0002.A6DA] # BAMUM LETTER WA
-A6DB ; [.2EED.0020.0002.A6DB] # BAMUM LETTER NA
-A6DC ; [.2EEE.0020.0002.A6DC] # BAMUM LETTER LI
-A6DD ; [.2EEF.0020.0002.A6DD] # BAMUM LETTER PI
-A6DE ; [.2EF0.0020.0002.A6DE] # BAMUM LETTER LOQ
-A6DF ; [.2EF1.0020.0002.A6DF] # BAMUM LETTER KO
-A6E0 ; [.2EF2.0020.0002.A6E0] # BAMUM LETTER MBEN
-A6E1 ; [.2EF3.0020.0002.A6E1] # BAMUM LETTER REN
-A6E2 ; [.2EF4.0020.0002.A6E2] # BAMUM LETTER MEN
-A6E3 ; [.2EF5.0020.0002.A6E3] # BAMUM LETTER MA
-A6E4 ; [.2EF6.0020.0002.A6E4] # BAMUM LETTER TI
-A6E5 ; [.2EF7.0020.0002.A6E5] # BAMUM LETTER KI
-A6E6 ; [.2EF8.0020.0002.A6E6] # BAMUM LETTER MO
-A6E7 ; [.2EF9.0020.0002.A6E7] # BAMUM LETTER MBAA
-A6E8 ; [.2EFA.0020.0002.A6E8] # BAMUM LETTER TET
-A6E9 ; [.2EFB.0020.0002.A6E9] # BAMUM LETTER KPA
-A6EA ; [.2EFC.0020.0002.A6EA] # BAMUM LETTER TEN
-A6EB ; [.2EFD.0020.0002.A6EB] # BAMUM LETTER NTUU
-A6EC ; [.2EFE.0020.0002.A6EC] # BAMUM LETTER SAMBA
-A6ED ; [.2EFF.0020.0002.A6ED] # BAMUM LETTER FAAMAE
-A6EE ; [.2F00.0020.0002.A6EE] # BAMUM LETTER KOVUU
-A6EF ; [.2F01.0020.0002.A6EF] # BAMUM LETTER KOGHOM
-16800 ; [.2F02.0020.0002.16800] # BAMUM LETTER PHASE-A NGKUE MFON
-16801 ; [.2F03.0020.0002.16801] # BAMUM LETTER PHASE-A GBIEE FON
-16802 ; [.2F04.0020.0002.16802] # BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE
-16803 ; [.2F05.0020.0002.16803] # BAMUM LETTER PHASE-A PON MFON PIPAEMBA
-16804 ; [.2F06.0020.0002.16804] # BAMUM LETTER PHASE-A NAA MFON
-16805 ; [.2F07.0020.0002.16805] # BAMUM LETTER PHASE-A SHUENSHUET
-16806 ; [.2F08.0020.0002.16806] # BAMUM LETTER PHASE-A TITA MFON
-16807 ; [.2F09.0020.0002.16807] # BAMUM LETTER PHASE-A NZA MFON
-16808 ; [.2F0A.0020.0002.16808] # BAMUM LETTER PHASE-A SHINDA PA NJI
-16809 ; [.2F0B.0020.0002.16809] # BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE
-1680A ; [.2F0C.0020.0002.1680A] # BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA
-1680B ; [.2F0D.0020.0002.1680B] # BAMUM LETTER PHASE-A MAEMBGBIEE
-1680C ; [.2F0E.0020.0002.1680C] # BAMUM LETTER PHASE-A TU MAEMBA
-1680D ; [.2F0F.0020.0002.1680D] # BAMUM LETTER PHASE-A NGANGU
-1680E ; [.2F10.0020.0002.1680E] # BAMUM LETTER PHASE-A MAEMVEUX
-1680F ; [.2F11.0020.0002.1680F] # BAMUM LETTER PHASE-A MANSUAE
-16810 ; [.2F12.0020.0002.16810] # BAMUM LETTER PHASE-A MVEUAENGAM
-16811 ; [.2F13.0020.0002.16811] # BAMUM LETTER PHASE-A SEUNYAM
-16812 ; [.2F14.0020.0002.16812] # BAMUM LETTER PHASE-A NTOQPEN
-16813 ; [.2F15.0020.0002.16813] # BAMUM LETTER PHASE-A KEUKEUTNDA
-16814 ; [.2F16.0020.0002.16814] # BAMUM LETTER PHASE-A NKINDI
-16815 ; [.2F17.0020.0002.16815] # BAMUM LETTER PHASE-A SUU
-16816 ; [.2F18.0020.0002.16816] # BAMUM LETTER PHASE-A NGKUENZEUM
-16817 ; [.2F19.0020.0002.16817] # BAMUM LETTER PHASE-A LAPAQ
-16818 ; [.2F1A.0020.0002.16818] # BAMUM LETTER PHASE-A LET KUT
-16819 ; [.2F1B.0020.0002.16819] # BAMUM LETTER PHASE-A NTAP MFAA
-1681A ; [.2F1C.0020.0002.1681A] # BAMUM LETTER PHASE-A MAEKEUP
-1681B ; [.2F1D.0020.0002.1681B] # BAMUM LETTER PHASE-A PASHAE
-1681C ; [.2F1E.0020.0002.1681C] # BAMUM LETTER PHASE-A GHEUAERAE
-1681D ; [.2F1F.0020.0002.1681D] # BAMUM LETTER PHASE-A PAMSHAE
-1681E ; [.2F20.0020.0002.1681E] # BAMUM LETTER PHASE-A MON NGGEUAET
-1681F ; [.2F21.0020.0002.1681F] # BAMUM LETTER PHASE-A NZUN MEUT
-16820 ; [.2F22.0020.0002.16820] # BAMUM LETTER PHASE-A U YUQ NAE
-16821 ; [.2F23.0020.0002.16821] # BAMUM LETTER PHASE-A GHEUAEGHEUAE
-16822 ; [.2F24.0020.0002.16822] # BAMUM LETTER PHASE-A NTAP NTAA
-16823 ; [.2F25.0020.0002.16823] # BAMUM LETTER PHASE-A SISA
-16824 ; [.2F26.0020.0002.16824] # BAMUM LETTER PHASE-A MGBASA
-16825 ; [.2F27.0020.0002.16825] # BAMUM LETTER PHASE-A MEUNJOMNDEUQ
-16826 ; [.2F28.0020.0002.16826] # BAMUM LETTER PHASE-A MOOMPUQ
-16827 ; [.2F29.0020.0002.16827] # BAMUM LETTER PHASE-A KAFA
-16828 ; [.2F2A.0020.0002.16828] # BAMUM LETTER PHASE-A PA LEERAEWA
-16829 ; [.2F2B.0020.0002.16829] # BAMUM LETTER PHASE-A NDA LEERAEWA
-1682A ; [.2F2C.0020.0002.1682A] # BAMUM LETTER PHASE-A PET
-1682B ; [.2F2D.0020.0002.1682B] # BAMUM LETTER PHASE-A MAEMKPEN
-1682C ; [.2F2E.0020.0002.1682C] # BAMUM LETTER PHASE-A NIKA
-1682D ; [.2F2F.0020.0002.1682D] # BAMUM LETTER PHASE-A PUP
-1682E ; [.2F30.0020.0002.1682E] # BAMUM LETTER PHASE-A TUAEP
-1682F ; [.2F31.0020.0002.1682F] # BAMUM LETTER PHASE-A LUAEP
-16830 ; [.2F32.0020.0002.16830] # BAMUM LETTER PHASE-A SONJAM
-16831 ; [.2F33.0020.0002.16831] # BAMUM LETTER PHASE-A TEUTEUWEN
-16832 ; [.2F34.0020.0002.16832] # BAMUM LETTER PHASE-A MAENYI
-16833 ; [.2F35.0020.0002.16833] # BAMUM LETTER PHASE-A KET
-16834 ; [.2F36.0020.0002.16834] # BAMUM LETTER PHASE-A NDAANGGEUAET
-16835 ; [.2F37.0020.0002.16835] # BAMUM LETTER PHASE-A KUOQ
-16836 ; [.2F38.0020.0002.16836] # BAMUM LETTER PHASE-A MOOMEUT
-16837 ; [.2F39.0020.0002.16837] # BAMUM LETTER PHASE-A SHUM
-16838 ; [.2F3A.0020.0002.16838] # BAMUM LETTER PHASE-A LOMMAE
-16839 ; [.2F3B.0020.0002.16839] # BAMUM LETTER PHASE-A FIRI
-1683A ; [.2F3C.0020.0002.1683A] # BAMUM LETTER PHASE-A ROM
-1683B ; [.2F3D.0020.0002.1683B] # BAMUM LETTER PHASE-A KPOQ
-1683C ; [.2F3E.0020.0002.1683C] # BAMUM LETTER PHASE-A SOQ
-1683D ; [.2F3F.0020.0002.1683D] # BAMUM LETTER PHASE-A MAP PIEET
-1683E ; [.2F40.0020.0002.1683E] # BAMUM LETTER PHASE-A SHIRAE
-1683F ; [.2F41.0020.0002.1683F] # BAMUM LETTER PHASE-A NTAP
-16840 ; [.2F42.0020.0002.16840] # BAMUM LETTER PHASE-A SHOQ NSHUT YUM
-16841 ; [.2F43.0020.0002.16841] # BAMUM LETTER PHASE-A NYIT MONGKEUAEQ
-16842 ; [.2F44.0020.0002.16842] # BAMUM LETTER PHASE-A PAARAE
-16843 ; [.2F45.0020.0002.16843] # BAMUM LETTER PHASE-A NKAARAE
-16844 ; [.2F46.0020.0002.16844] # BAMUM LETTER PHASE-A UNKNOWN
-16845 ; [.2F47.0020.0002.16845] # BAMUM LETTER PHASE-A NGGEN
-16846 ; [.2F48.0020.0002.16846] # BAMUM LETTER PHASE-A MAESI
-16847 ; [.2F49.0020.0002.16847] # BAMUM LETTER PHASE-A NJAM
-16848 ; [.2F4A.0020.0002.16848] # BAMUM LETTER PHASE-A MBANYI
-16849 ; [.2F4B.0020.0002.16849] # BAMUM LETTER PHASE-A NYET
-1684A ; [.2F4C.0020.0002.1684A] # BAMUM LETTER PHASE-A TEUAEN
-1684B ; [.2F4D.0020.0002.1684B] # BAMUM LETTER PHASE-A SOT
-1684C ; [.2F4E.0020.0002.1684C] # BAMUM LETTER PHASE-A PAAM
-1684D ; [.2F4F.0020.0002.1684D] # BAMUM LETTER PHASE-A NSHIEE
-1684E ; [.2F50.0020.0002.1684E] # BAMUM LETTER PHASE-A MAEM
-1684F ; [.2F51.0020.0002.1684F] # BAMUM LETTER PHASE-A NYI
-16850 ; [.2F52.0020.0002.16850] # BAMUM LETTER PHASE-A KAQ
-16851 ; [.2F53.0020.0002.16851] # BAMUM LETTER PHASE-A NSHA
-16852 ; [.2F54.0020.0002.16852] # BAMUM LETTER PHASE-A VEE
-16853 ; [.2F55.0020.0002.16853] # BAMUM LETTER PHASE-A LU
-16854 ; [.2F56.0020.0002.16854] # BAMUM LETTER PHASE-A NEN
-16855 ; [.2F57.0020.0002.16855] # BAMUM LETTER PHASE-A NAQ
-16856 ; [.2F58.0020.0002.16856] # BAMUM LETTER PHASE-A MBAQ
-16857 ; [.2F59.0020.0002.16857] # BAMUM LETTER PHASE-B NSHUET
-16858 ; [.2F5A.0020.0002.16858] # BAMUM LETTER PHASE-B TU MAEMGBIEE
-16859 ; [.2F5B.0020.0002.16859] # BAMUM LETTER PHASE-B SIEE
-1685A ; [.2F5C.0020.0002.1685A] # BAMUM LETTER PHASE-B SET TU
-1685B ; [.2F5D.0020.0002.1685B] # BAMUM LETTER PHASE-B LOM NTEUM
-1685C ; [.2F5E.0020.0002.1685C] # BAMUM LETTER PHASE-B MBA MAELEE
-1685D ; [.2F5F.0020.0002.1685D] # BAMUM LETTER PHASE-B KIEEM
-1685E ; [.2F60.0020.0002.1685E] # BAMUM LETTER PHASE-B YEURAE
-1685F ; [.2F61.0020.0002.1685F] # BAMUM LETTER PHASE-B MBAARAE
-16860 ; [.2F62.0020.0002.16860] # BAMUM LETTER PHASE-B KAM
-16861 ; [.2F63.0020.0002.16861] # BAMUM LETTER PHASE-B PEESHI
-16862 ; [.2F64.0020.0002.16862] # BAMUM LETTER PHASE-B YAFU LEERAEWA
-16863 ; [.2F65.0020.0002.16863] # BAMUM LETTER PHASE-B LAM NSHUT NYAM
-16864 ; [.2F66.0020.0002.16864] # BAMUM LETTER PHASE-B NTIEE SHEUOQ
-16865 ; [.2F67.0020.0002.16865] # BAMUM LETTER PHASE-B NDU NJAA
-16866 ; [.2F68.0020.0002.16866] # BAMUM LETTER PHASE-B GHEUGHEUAEM
-16867 ; [.2F69.0020.0002.16867] # BAMUM LETTER PHASE-B PIT
-16868 ; [.2F6A.0020.0002.16868] # BAMUM LETTER PHASE-B TU NSIEE
-16869 ; [.2F6B.0020.0002.16869] # BAMUM LETTER PHASE-B SHET NJAQ
-1686A ; [.2F6C.0020.0002.1686A] # BAMUM LETTER PHASE-B SHEUAEQTU
-1686B ; [.2F6D.0020.0002.1686B] # BAMUM LETTER PHASE-B MFON TEUAEQ
-1686C ; [.2F6E.0020.0002.1686C] # BAMUM LETTER PHASE-B MBIT MBAAKET
-1686D ; [.2F6F.0020.0002.1686D] # BAMUM LETTER PHASE-B NYI NTEUM
-1686E ; [.2F70.0020.0002.1686E] # BAMUM LETTER PHASE-B KEUPUQ
-1686F ; [.2F71.0020.0002.1686F] # BAMUM LETTER PHASE-B GHEUGHEN
-16870 ; [.2F72.0020.0002.16870] # BAMUM LETTER PHASE-B KEUYEUX
-16871 ; [.2F73.0020.0002.16871] # BAMUM LETTER PHASE-B LAANAE
-16872 ; [.2F74.0020.0002.16872] # BAMUM LETTER PHASE-B PARUM
-16873 ; [.2F75.0020.0002.16873] # BAMUM LETTER PHASE-B VEUM
-16874 ; [.2F76.0020.0002.16874] # BAMUM LETTER PHASE-B NGKINDI MVOP
-16875 ; [.2F77.0020.0002.16875] # BAMUM LETTER PHASE-B NGGEU MBU
-16876 ; [.2F78.0020.0002.16876] # BAMUM LETTER PHASE-B WUAET
-16877 ; [.2F79.0020.0002.16877] # BAMUM LETTER PHASE-B SAKEUAE
-16878 ; [.2F7A.0020.0002.16878] # BAMUM LETTER PHASE-B TAAM
-16879 ; [.2F7B.0020.0002.16879] # BAMUM LETTER PHASE-B MEUQ
-1687A ; [.2F7C.0020.0002.1687A] # BAMUM LETTER PHASE-B NGGUOQ
-1687B ; [.2F7D.0020.0002.1687B] # BAMUM LETTER PHASE-B NGGUOQ LARGE
-1687C ; [.2F7E.0020.0002.1687C] # BAMUM LETTER PHASE-B MFIYAQ
-1687D ; [.2F7F.0020.0002.1687D] # BAMUM LETTER PHASE-B SUE
-1687E ; [.2F80.0020.0002.1687E] # BAMUM LETTER PHASE-B MBEURI
-1687F ; [.2F81.0020.0002.1687F] # BAMUM LETTER PHASE-B MONTIEEN
-16880 ; [.2F82.0020.0002.16880] # BAMUM LETTER PHASE-B NYAEMAE
-16881 ; [.2F83.0020.0002.16881] # BAMUM LETTER PHASE-B PUNGAAM
-16882 ; [.2F84.0020.0002.16882] # BAMUM LETTER PHASE-B MEUT NGGEET
-16883 ; [.2F85.0020.0002.16883] # BAMUM LETTER PHASE-B FEUX
-16884 ; [.2F86.0020.0002.16884] # BAMUM LETTER PHASE-B MBUOQ
-16885 ; [.2F87.0020.0002.16885] # BAMUM LETTER PHASE-B FEE
-16886 ; [.2F88.0020.0002.16886] # BAMUM LETTER PHASE-B KEUAEM
-16887 ; [.2F89.0020.0002.16887] # BAMUM LETTER PHASE-B MA NJEUAENA
-16888 ; [.2F8A.0020.0002.16888] # BAMUM LETTER PHASE-B MA NJUQA
-16889 ; [.2F8B.0020.0002.16889] # BAMUM LETTER PHASE-B LET
-1688A ; [.2F8C.0020.0002.1688A] # BAMUM LETTER PHASE-B NGGAAM
-1688B ; [.2F8D.0020.0002.1688B] # BAMUM LETTER PHASE-B NSEN
-1688C ; [.2F8E.0020.0002.1688C] # BAMUM LETTER PHASE-B MA
-1688D ; [.2F8F.0020.0002.1688D] # BAMUM LETTER PHASE-B KIQ
-1688E ; [.2F90.0020.0002.1688E] # BAMUM LETTER PHASE-B NGOM
-1688F ; [.2F91.0020.0002.1688F] # BAMUM LETTER PHASE-C NGKUE MAEMBA
-16890 ; [.2F92.0020.0002.16890] # BAMUM LETTER PHASE-C NZA
-16891 ; [.2F93.0020.0002.16891] # BAMUM LETTER PHASE-C YUM
-16892 ; [.2F94.0020.0002.16892] # BAMUM LETTER PHASE-C WANGKUOQ
-16893 ; [.2F95.0020.0002.16893] # BAMUM LETTER PHASE-C NGGEN
-16894 ; [.2F96.0020.0002.16894] # BAMUM LETTER PHASE-C NDEUAEREE
-16895 ; [.2F97.0020.0002.16895] # BAMUM LETTER PHASE-C NGKAQ
-16896 ; [.2F98.0020.0002.16896] # BAMUM LETTER PHASE-C GHARAE
-16897 ; [.2F99.0020.0002.16897] # BAMUM LETTER PHASE-C MBEEKEET
-16898 ; [.2F9A.0020.0002.16898] # BAMUM LETTER PHASE-C GBAYI
-16899 ; [.2F9B.0020.0002.16899] # BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN
-1689A ; [.2F9C.0020.0002.1689A] # BAMUM LETTER PHASE-C NTU MBIT
-1689B ; [.2F9D.0020.0002.1689B] # BAMUM LETTER PHASE-C MBEUM
-1689C ; [.2F9E.0020.0002.1689C] # BAMUM LETTER PHASE-C PIRIEEN
-1689D ; [.2F9F.0020.0002.1689D] # BAMUM LETTER PHASE-C NDOMBU
-1689E ; [.2FA0.0020.0002.1689E] # BAMUM LETTER PHASE-C MBAA CABBAGE-TREE
-1689F ; [.2FA1.0020.0002.1689F] # BAMUM LETTER PHASE-C KEUSHEUAEP
-168A0 ; [.2FA2.0020.0002.168A0] # BAMUM LETTER PHASE-C GHAP
-168A1 ; [.2FA3.0020.0002.168A1] # BAMUM LETTER PHASE-C KEUKAQ
-168A2 ; [.2FA4.0020.0002.168A2] # BAMUM LETTER PHASE-C YU MUOMAE
-168A3 ; [.2FA5.0020.0002.168A3] # BAMUM LETTER PHASE-C NZEUM
-168A4 ; [.2FA6.0020.0002.168A4] # BAMUM LETTER PHASE-C MBUE
-168A5 ; [.2FA7.0020.0002.168A5] # BAMUM LETTER PHASE-C NSEUAEN
-168A6 ; [.2FA8.0020.0002.168A6] # BAMUM LETTER PHASE-C MBIT
-168A7 ; [.2FA9.0020.0002.168A7] # BAMUM LETTER PHASE-C YEUQ
-168A8 ; [.2FAA.0020.0002.168A8] # BAMUM LETTER PHASE-C KPARAQ
-168A9 ; [.2FAB.0020.0002.168A9] # BAMUM LETTER PHASE-C KAA
-168AA ; [.2FAC.0020.0002.168AA] # BAMUM LETTER PHASE-C SEUX
-168AB ; [.2FAD.0020.0002.168AB] # BAMUM LETTER PHASE-C NDIDA
-168AC ; [.2FAE.0020.0002.168AC] # BAMUM LETTER PHASE-C TAASHAE
-168AD ; [.2FAF.0020.0002.168AD] # BAMUM LETTER PHASE-C NJUEQ
-168AE ; [.2FB0.0020.0002.168AE] # BAMUM LETTER PHASE-C TITA YUE
-168AF ; [.2FB1.0020.0002.168AF] # BAMUM LETTER PHASE-C SUAET
-168B0 ; [.2FB2.0020.0002.168B0] # BAMUM LETTER PHASE-C NGGUAEN NYAM
-168B1 ; [.2FB3.0020.0002.168B1] # BAMUM LETTER PHASE-C VEUX
-168B2 ; [.2FB4.0020.0002.168B2] # BAMUM LETTER PHASE-C NANSANAQ
-168B3 ; [.2FB5.0020.0002.168B3] # BAMUM LETTER PHASE-C MA KEUAERI
-168B4 ; [.2FB6.0020.0002.168B4] # BAMUM LETTER PHASE-C NTAA
-168B5 ; [.2FB7.0020.0002.168B5] # BAMUM LETTER PHASE-C NGGUON
-168B6 ; [.2FB8.0020.0002.168B6] # BAMUM LETTER PHASE-C LAP
-168B7 ; [.2FB9.0020.0002.168B7] # BAMUM LETTER PHASE-C MBIRIEEN
-168B8 ; [.2FBA.0020.0002.168B8] # BAMUM LETTER PHASE-C MGBASAQ
-168B9 ; [.2FBB.0020.0002.168B9] # BAMUM LETTER PHASE-C NTEUNGBA
-168BA ; [.2FBC.0020.0002.168BA] # BAMUM LETTER PHASE-C TEUTEUX
-168BB ; [.2FBD.0020.0002.168BB] # BAMUM LETTER PHASE-C NGGUM
-168BC ; [.2FBE.0020.0002.168BC] # BAMUM LETTER PHASE-C FUE
-168BD ; [.2FBF.0020.0002.168BD] # BAMUM LETTER PHASE-C NDEUT
-168BE ; [.2FC0.0020.0002.168BE] # BAMUM LETTER PHASE-C NSA
-168BF ; [.2FC1.0020.0002.168BF] # BAMUM LETTER PHASE-C NSHAQ
-168C0 ; [.2FC2.0020.0002.168C0] # BAMUM LETTER PHASE-C BUNG
-168C1 ; [.2FC3.0020.0002.168C1] # BAMUM LETTER PHASE-C VEUAEPEN
-168C2 ; [.2FC4.0020.0002.168C2] # BAMUM LETTER PHASE-C MBERAE
-168C3 ; [.2FC5.0020.0002.168C3] # BAMUM LETTER PHASE-C RU
-168C4 ; [.2FC6.0020.0002.168C4] # BAMUM LETTER PHASE-C NJAEM
-168C5 ; [.2FC7.0020.0002.168C5] # BAMUM LETTER PHASE-C LAM
-168C6 ; [.2FC8.0020.0002.168C6] # BAMUM LETTER PHASE-C TITUAEP
-168C7 ; [.2FC9.0020.0002.168C7] # BAMUM LETTER PHASE-C NSUOT NGOM
-168C8 ; [.2FCA.0020.0002.168C8] # BAMUM LETTER PHASE-C NJEEEE
-168C9 ; [.2FCB.0020.0002.168C9] # BAMUM LETTER PHASE-C KET
-168CA ; [.2FCC.0020.0002.168CA] # BAMUM LETTER PHASE-C NGGU
-168CB ; [.2FCD.0020.0002.168CB] # BAMUM LETTER PHASE-C MAESI
-168CC ; [.2FCE.0020.0002.168CC] # BAMUM LETTER PHASE-C MBUAEM
-168CD ; [.2FCF.0020.0002.168CD] # BAMUM LETTER PHASE-C LU
-168CE ; [.2FD0.0020.0002.168CE] # BAMUM LETTER PHASE-C KUT
-168CF ; [.2FD1.0020.0002.168CF] # BAMUM LETTER PHASE-C NJAM
-168D0 ; [.2FD2.0020.0002.168D0] # BAMUM LETTER PHASE-C NGOM
-168D1 ; [.2FD3.0020.0002.168D1] # BAMUM LETTER PHASE-C WUP
-168D2 ; [.2FD4.0020.0002.168D2] # BAMUM LETTER PHASE-C NGGUEET
-168D3 ; [.2FD5.0020.0002.168D3] # BAMUM LETTER PHASE-C NSOM
-168D4 ; [.2FD6.0020.0002.168D4] # BAMUM LETTER PHASE-C NTEN
-168D5 ; [.2FD7.0020.0002.168D5] # BAMUM LETTER PHASE-C KUOP NKAARAE
-168D6 ; [.2FD8.0020.0002.168D6] # BAMUM LETTER PHASE-C NSUN
-168D7 ; [.2FD9.0020.0002.168D7] # BAMUM LETTER PHASE-C NDAM
-168D8 ; [.2FDA.0020.0002.168D8] # BAMUM LETTER PHASE-C MA NSIEE
-168D9 ; [.2FDB.0020.0002.168D9] # BAMUM LETTER PHASE-C YAA
-168DA ; [.2FDC.0020.0002.168DA] # BAMUM LETTER PHASE-C NDAP
-168DB ; [.2FDD.0020.0002.168DB] # BAMUM LETTER PHASE-C SHUEQ
-168DC ; [.2FDE.0020.0002.168DC] # BAMUM LETTER PHASE-C SETFON
-168DD ; [.2FDF.0020.0002.168DD] # BAMUM LETTER PHASE-C MBI
-168DE ; [.2FE0.0020.0002.168DE] # BAMUM LETTER PHASE-C MAEMBA
-168DF ; [.2FE1.0020.0002.168DF] # BAMUM LETTER PHASE-C MBANYI
-168E0 ; [.2FE2.0020.0002.168E0] # BAMUM LETTER PHASE-C KEUSEUX
-168E1 ; [.2FE3.0020.0002.168E1] # BAMUM LETTER PHASE-C MBEUX
-168E2 ; [.2FE4.0020.0002.168E2] # BAMUM LETTER PHASE-C KEUM
-168E3 ; [.2FE5.0020.0002.168E3] # BAMUM LETTER PHASE-C MBAA PICKET
-168E4 ; [.2FE6.0020.0002.168E4] # BAMUM LETTER PHASE-C YUWOQ
-168E5 ; [.2FE7.0020.0002.168E5] # BAMUM LETTER PHASE-C NJEUX
-168E6 ; [.2FE8.0020.0002.168E6] # BAMUM LETTER PHASE-C MIEE
-168E7 ; [.2FE9.0020.0002.168E7] # BAMUM LETTER PHASE-C MUAE
-168E8 ; [.2FEA.0020.0002.168E8] # BAMUM LETTER PHASE-C SHIQ
-168E9 ; [.2FEB.0020.0002.168E9] # BAMUM LETTER PHASE-C KEN LAW
-168EA ; [.2FEC.0020.0002.168EA] # BAMUM LETTER PHASE-C KEN FATIGUE
-168EB ; [.2FED.0020.0002.168EB] # BAMUM LETTER PHASE-C NGAQ
-168EC ; [.2FEE.0020.0002.168EC] # BAMUM LETTER PHASE-C NAQ
-168ED ; [.2FEF.0020.0002.168ED] # BAMUM LETTER PHASE-C LIQ
-168EE ; [.2FF0.0020.0002.168EE] # BAMUM LETTER PHASE-C PIN
-168EF ; [.2FF1.0020.0002.168EF] # BAMUM LETTER PHASE-C PEN
-168F0 ; [.2FF2.0020.0002.168F0] # BAMUM LETTER PHASE-C TET
-168F1 ; [.2FF3.0020.0002.168F1] # BAMUM LETTER PHASE-D MBUO
-168F2 ; [.2FF4.0020.0002.168F2] # BAMUM LETTER PHASE-D WAP
-168F3 ; [.2FF5.0020.0002.168F3] # BAMUM LETTER PHASE-D NJI
-168F4 ; [.2FF6.0020.0002.168F4] # BAMUM LETTER PHASE-D MFON
-168F5 ; [.2FF7.0020.0002.168F5] # BAMUM LETTER PHASE-D NJIEE
-168F6 ; [.2FF8.0020.0002.168F6] # BAMUM LETTER PHASE-D LIEE
-168F7 ; [.2FF9.0020.0002.168F7] # BAMUM LETTER PHASE-D NJEUT
-168F8 ; [.2FFA.0020.0002.168F8] # BAMUM LETTER PHASE-D NSHEE
-168F9 ; [.2FFB.0020.0002.168F9] # BAMUM LETTER PHASE-D NGGAAMAE
-168FA ; [.2FFC.0020.0002.168FA] # BAMUM LETTER PHASE-D NYAM
-168FB ; [.2FFD.0020.0002.168FB] # BAMUM LETTER PHASE-D WUAEN
-168FC ; [.2FFE.0020.0002.168FC] # BAMUM LETTER PHASE-D NGKUN
-168FD ; [.2FFF.0020.0002.168FD] # BAMUM LETTER PHASE-D SHEE
-168FE ; [.3000.0020.0002.168FE] # BAMUM LETTER PHASE-D NGKAP
-168FF ; [.3001.0020.0002.168FF] # BAMUM LETTER PHASE-D KEUAETMEUN
-16900 ; [.3002.0020.0002.16900] # BAMUM LETTER PHASE-D TEUT
-16901 ; [.3003.0020.0002.16901] # BAMUM LETTER PHASE-D SHEUAE
-16902 ; [.3004.0020.0002.16902] # BAMUM LETTER PHASE-D NJAP
-16903 ; [.3005.0020.0002.16903] # BAMUM LETTER PHASE-D SUE
-16904 ; [.3006.0020.0002.16904] # BAMUM LETTER PHASE-D KET
-16905 ; [.3007.0020.0002.16905] # BAMUM LETTER PHASE-D YAEMMAE
-16906 ; [.3008.0020.0002.16906] # BAMUM LETTER PHASE-D KUOM
-16907 ; [.3009.0020.0002.16907] # BAMUM LETTER PHASE-D SAP
-16908 ; [.300A.0020.0002.16908] # BAMUM LETTER PHASE-D MFEUT
-16909 ; [.300B.0020.0002.16909] # BAMUM LETTER PHASE-D NDEUX
-1690A ; [.300C.0020.0002.1690A] # BAMUM LETTER PHASE-D MALEERI
-1690B ; [.300D.0020.0002.1690B] # BAMUM LETTER PHASE-D MEUT
-1690C ; [.300E.0020.0002.1690C] # BAMUM LETTER PHASE-D SEUAEQ
-1690D ; [.300F.0020.0002.1690D] # BAMUM LETTER PHASE-D YEN
-1690E ; [.3010.0020.0002.1690E] # BAMUM LETTER PHASE-D NJEUAEM
-1690F ; [.3011.0020.0002.1690F] # BAMUM LETTER PHASE-D KEUOT MBUAE
-16910 ; [.3012.0020.0002.16910] # BAMUM LETTER PHASE-D NGKEURI
-16911 ; [.3013.0020.0002.16911] # BAMUM LETTER PHASE-D TU
-16912 ; [.3014.0020.0002.16912] # BAMUM LETTER PHASE-D GHAA
-16913 ; [.3015.0020.0002.16913] # BAMUM LETTER PHASE-D NGKYEE
-16914 ; [.3016.0020.0002.16914] # BAMUM LETTER PHASE-D FEUFEUAET
-16915 ; [.3017.0020.0002.16915] # BAMUM LETTER PHASE-D NDEE
-16916 ; [.3018.0020.0002.16916] # BAMUM LETTER PHASE-D MGBOFUM
-16917 ; [.3019.0020.0002.16917] # BAMUM LETTER PHASE-D LEUAEP
-16918 ; [.301A.0020.0002.16918] # BAMUM LETTER PHASE-D NDON
-16919 ; [.301B.0020.0002.16919] # BAMUM LETTER PHASE-D MONI
-1691A ; [.301C.0020.0002.1691A] # BAMUM LETTER PHASE-D MGBEUN
-1691B ; [.301D.0020.0002.1691B] # BAMUM LETTER PHASE-D PUUT
-1691C ; [.301E.0020.0002.1691C] # BAMUM LETTER PHASE-D MGBIEE
-1691D ; [.301F.0020.0002.1691D] # BAMUM LETTER PHASE-D MFO
-1691E ; [.3020.0020.0002.1691E] # BAMUM LETTER PHASE-D LUM
-1691F ; [.3021.0020.0002.1691F] # BAMUM LETTER PHASE-D NSIEEP
-16920 ; [.3022.0020.0002.16920] # BAMUM LETTER PHASE-D MBAA
-16921 ; [.3023.0020.0002.16921] # BAMUM LETTER PHASE-D KWAET
-16922 ; [.3024.0020.0002.16922] # BAMUM LETTER PHASE-D NYET
-16923 ; [.3025.0020.0002.16923] # BAMUM LETTER PHASE-D TEUAEN
-16924 ; [.3026.0020.0002.16924] # BAMUM LETTER PHASE-D SOT
-16925 ; [.3027.0020.0002.16925] # BAMUM LETTER PHASE-D YUWOQ
-16926 ; [.3028.0020.0002.16926] # BAMUM LETTER PHASE-D KEUM
-16927 ; [.3029.0020.0002.16927] # BAMUM LETTER PHASE-D RAEM
-16928 ; [.302A.0020.0002.16928] # BAMUM LETTER PHASE-D TEEEE
-16929 ; [.302B.0020.0002.16929] # BAMUM LETTER PHASE-D NGKEUAEQ
-1692A ; [.302C.0020.0002.1692A] # BAMUM LETTER PHASE-D MFEUAE
-1692B ; [.302D.0020.0002.1692B] # BAMUM LETTER PHASE-D NSIEET
-1692C ; [.302E.0020.0002.1692C] # BAMUM LETTER PHASE-D KEUP
-1692D ; [.302F.0020.0002.1692D] # BAMUM LETTER PHASE-D PIP
-1692E ; [.3030.0020.0002.1692E] # BAMUM LETTER PHASE-D PEUTAE
-1692F ; [.3031.0020.0002.1692F] # BAMUM LETTER PHASE-D NYUE
-16930 ; [.3032.0020.0002.16930] # BAMUM LETTER PHASE-D LET
-16931 ; [.3033.0020.0002.16931] # BAMUM LETTER PHASE-D NGGAAM
-16932 ; [.3034.0020.0002.16932] # BAMUM LETTER PHASE-D MFIEE
-16933 ; [.3035.0020.0002.16933] # BAMUM LETTER PHASE-D NGGWAEN
-16934 ; [.3036.0020.0002.16934] # BAMUM LETTER PHASE-D YUOM
-16935 ; [.3037.0020.0002.16935] # BAMUM LETTER PHASE-D PAP
-16936 ; [.3038.0020.0002.16936] # BAMUM LETTER PHASE-D YUOP
-16937 ; [.3039.0020.0002.16937] # BAMUM LETTER PHASE-D NDAM
-16938 ; [.303A.0020.0002.16938] # BAMUM LETTER PHASE-D NTEUM
-16939 ; [.303B.0020.0002.16939] # BAMUM LETTER PHASE-D SUAE
-1693A ; [.303C.0020.0002.1693A] # BAMUM LETTER PHASE-D KUN
-1693B ; [.303D.0020.0002.1693B] # BAMUM LETTER PHASE-D NGGEUX
-1693C ; [.303E.0020.0002.1693C] # BAMUM LETTER PHASE-D NGKIEE
-1693D ; [.303F.0020.0002.1693D] # BAMUM LETTER PHASE-D TUOT
-1693E ; [.3040.0020.0002.1693E] # BAMUM LETTER PHASE-D MEUN
-1693F ; [.3041.0020.0002.1693F] # BAMUM LETTER PHASE-D KUQ
-16940 ; [.3042.0020.0002.16940] # BAMUM LETTER PHASE-D NSUM
-16941 ; [.3043.0020.0002.16941] # BAMUM LETTER PHASE-D TEUN
-16942 ; [.3044.0020.0002.16942] # BAMUM LETTER PHASE-D MAENJET
-16943 ; [.3045.0020.0002.16943] # BAMUM LETTER PHASE-D NGGAP
-16944 ; [.3046.0020.0002.16944] # BAMUM LETTER PHASE-D LEUM
-16945 ; [.3047.0020.0002.16945] # BAMUM LETTER PHASE-D NGGUOM
-16946 ; [.3048.0020.0002.16946] # BAMUM LETTER PHASE-D NSHUT
-16947 ; [.3049.0020.0002.16947] # BAMUM LETTER PHASE-D NJUEQ
-16948 ; [.304A.0020.0002.16948] # BAMUM LETTER PHASE-D GHEUAE
-16949 ; [.304B.0020.0002.16949] # BAMUM LETTER PHASE-D KU
-1694A ; [.304C.0020.0002.1694A] # BAMUM LETTER PHASE-D REN OLD
-1694B ; [.304D.0020.0002.1694B] # BAMUM LETTER PHASE-D TAE
-1694C ; [.304E.0020.0002.1694C] # BAMUM LETTER PHASE-D TOQ
-1694D ; [.304F.0020.0002.1694D] # BAMUM LETTER PHASE-D NYI
-1694E ; [.3050.0020.0002.1694E] # BAMUM LETTER PHASE-D RII
-1694F ; [.3051.0020.0002.1694F] # BAMUM LETTER PHASE-D LEEEE
-16950 ; [.3052.0020.0002.16950] # BAMUM LETTER PHASE-D MEEEE
-16951 ; [.3053.0020.0002.16951] # BAMUM LETTER PHASE-D M
-16952 ; [.3054.0020.0002.16952] # BAMUM LETTER PHASE-D SUU
-16953 ; [.3055.0020.0002.16953] # BAMUM LETTER PHASE-D MU
-16954 ; [.3056.0020.0002.16954] # BAMUM LETTER PHASE-D SHII
-16955 ; [.3057.0020.0002.16955] # BAMUM LETTER PHASE-D SHEUX
-16956 ; [.3058.0020.0002.16956] # BAMUM LETTER PHASE-D KYEE
-16957 ; [.3059.0020.0002.16957] # BAMUM LETTER PHASE-D NU
-16958 ; [.305A.0020.0002.16958] # BAMUM LETTER PHASE-D SHU
-16959 ; [.305B.0020.0002.16959] # BAMUM LETTER PHASE-D NTEE
-1695A ; [.305C.0020.0002.1695A] # BAMUM LETTER PHASE-D PEE
-1695B ; [.305D.0020.0002.1695B] # BAMUM LETTER PHASE-D NI
-1695C ; [.305E.0020.0002.1695C] # BAMUM LETTER PHASE-D SHOQ
-1695D ; [.305F.0020.0002.1695D] # BAMUM LETTER PHASE-D PUQ
-1695E ; [.3060.0020.0002.1695E] # BAMUM LETTER PHASE-D MVOP
-1695F ; [.3061.0020.0002.1695F] # BAMUM LETTER PHASE-D LOQ
-16960 ; [.3062.0020.0002.16960] # BAMUM LETTER PHASE-D REN MUCH
-16961 ; [.3063.0020.0002.16961] # BAMUM LETTER PHASE-D TI
-16962 ; [.3064.0020.0002.16962] # BAMUM LETTER PHASE-D NTUU
-16963 ; [.3065.0020.0002.16963] # BAMUM LETTER PHASE-D MBAA SEVEN
-16964 ; [.3066.0020.0002.16964] # BAMUM LETTER PHASE-D SAQ
-16965 ; [.3067.0020.0002.16965] # BAMUM LETTER PHASE-D FAA
-16966 ; [.3068.0020.0002.16966] # BAMUM LETTER PHASE-E NDAP
-16967 ; [.3069.0020.0002.16967] # BAMUM LETTER PHASE-E TOON
-16968 ; [.306A.0020.0002.16968] # BAMUM LETTER PHASE-E MBEUM
-16969 ; [.306B.0020.0002.16969] # BAMUM LETTER PHASE-E LAP
-1696A ; [.306C.0020.0002.1696A] # BAMUM LETTER PHASE-E VOM
-1696B ; [.306D.0020.0002.1696B] # BAMUM LETTER PHASE-E LOON
-1696C ; [.306E.0020.0002.1696C] # BAMUM LETTER PHASE-E PAA
-1696D ; [.306F.0020.0002.1696D] # BAMUM LETTER PHASE-E SOM
-1696E ; [.3070.0020.0002.1696E] # BAMUM LETTER PHASE-E RAQ
-1696F ; [.3071.0020.0002.1696F] # BAMUM LETTER PHASE-E NSHUOP
-16970 ; [.3072.0020.0002.16970] # BAMUM LETTER PHASE-E NDUN
-16971 ; [.3073.0020.0002.16971] # BAMUM LETTER PHASE-E PUAE
-16972 ; [.3074.0020.0002.16972] # BAMUM LETTER PHASE-E TAM
-16973 ; [.3075.0020.0002.16973] # BAMUM LETTER PHASE-E NGKA
-16974 ; [.3076.0020.0002.16974] # BAMUM LETTER PHASE-E KPEUX
-16975 ; [.3077.0020.0002.16975] # BAMUM LETTER PHASE-E WUO
-16976 ; [.3078.0020.0002.16976] # BAMUM LETTER PHASE-E SEE
-16977 ; [.3079.0020.0002.16977] # BAMUM LETTER PHASE-E NGGEUAET
-16978 ; [.307A.0020.0002.16978] # BAMUM LETTER PHASE-E PAAM
-16979 ; [.307B.0020.0002.16979] # BAMUM LETTER PHASE-E TOO
-1697A ; [.307C.0020.0002.1697A] # BAMUM LETTER PHASE-E KUOP
-1697B ; [.307D.0020.0002.1697B] # BAMUM LETTER PHASE-E LOM
-1697C ; [.307E.0020.0002.1697C] # BAMUM LETTER PHASE-E NSHIEE
-1697D ; [.307F.0020.0002.1697D] # BAMUM LETTER PHASE-E NGOP
-1697E ; [.3080.0020.0002.1697E] # BAMUM LETTER PHASE-E MAEM
-1697F ; [.3081.0020.0002.1697F] # BAMUM LETTER PHASE-E NGKEUX
-16980 ; [.3082.0020.0002.16980] # BAMUM LETTER PHASE-E NGOQ
-16981 ; [.3083.0020.0002.16981] # BAMUM LETTER PHASE-E NSHUE
-16982 ; [.3084.0020.0002.16982] # BAMUM LETTER PHASE-E RIMGBA
-16983 ; [.3085.0020.0002.16983] # BAMUM LETTER PHASE-E NJEUX
-16984 ; [.3086.0020.0002.16984] # BAMUM LETTER PHASE-E PEEM
-16985 ; [.3087.0020.0002.16985] # BAMUM LETTER PHASE-E SAA
-16986 ; [.3088.0020.0002.16986] # BAMUM LETTER PHASE-E NGGURAE
-16987 ; [.3089.0020.0002.16987] # BAMUM LETTER PHASE-E MGBA
-16988 ; [.308A.0020.0002.16988] # BAMUM LETTER PHASE-E GHEUX
-16989 ; [.308B.0020.0002.16989] # BAMUM LETTER PHASE-E NGKEUAEM
-1698A ; [.308C.0020.0002.1698A] # BAMUM LETTER PHASE-E NJAEMLI
-1698B ; [.308D.0020.0002.1698B] # BAMUM LETTER PHASE-E MAP
-1698C ; [.308E.0020.0002.1698C] # BAMUM LETTER PHASE-E LOOT
-1698D ; [.308F.0020.0002.1698D] # BAMUM LETTER PHASE-E NGGEEEE
-1698E ; [.3090.0020.0002.1698E] # BAMUM LETTER PHASE-E NDIQ
-1698F ; [.3091.0020.0002.1698F] # BAMUM LETTER PHASE-E TAEN NTEUM
-16990 ; [.3092.0020.0002.16990] # BAMUM LETTER PHASE-E SET
-16991 ; [.3093.0020.0002.16991] # BAMUM LETTER PHASE-E PUM
-16992 ; [.3094.0020.0002.16992] # BAMUM LETTER PHASE-E NDAA SOFTNESS
-16993 ; [.3095.0020.0002.16993] # BAMUM LETTER PHASE-E NGGUAESHAE NYAM
-16994 ; [.3096.0020.0002.16994] # BAMUM LETTER PHASE-E YIEE
-16995 ; [.3097.0020.0002.16995] # BAMUM LETTER PHASE-E GHEUN
-16996 ; [.3098.0020.0002.16996] # BAMUM LETTER PHASE-E TUAE
-16997 ; [.3099.0020.0002.16997] # BAMUM LETTER PHASE-E YEUAE
-16998 ; [.309A.0020.0002.16998] # BAMUM LETTER PHASE-E PO
-16999 ; [.309B.0020.0002.16999] # BAMUM LETTER PHASE-E TUMAE
-1699A ; [.309C.0020.0002.1699A] # BAMUM LETTER PHASE-E KEUAE
-1699B ; [.309D.0020.0002.1699B] # BAMUM LETTER PHASE-E SUAEN
-1699C ; [.309E.0020.0002.1699C] # BAMUM LETTER PHASE-E TEUAEQ
-1699D ; [.309F.0020.0002.1699D] # BAMUM LETTER PHASE-E VEUAE
-1699E ; [.30A0.0020.0002.1699E] # BAMUM LETTER PHASE-E WEUX
-1699F ; [.30A1.0020.0002.1699F] # BAMUM LETTER PHASE-E LAAM
-169A0 ; [.30A2.0020.0002.169A0] # BAMUM LETTER PHASE-E PU
-169A1 ; [.30A3.0020.0002.169A1] # BAMUM LETTER PHASE-E TAAQ
-169A2 ; [.30A4.0020.0002.169A2] # BAMUM LETTER PHASE-E GHAAMAE
-169A3 ; [.30A5.0020.0002.169A3] # BAMUM LETTER PHASE-E NGEUREUT
-169A4 ; [.30A6.0020.0002.169A4] # BAMUM LETTER PHASE-E SHEUAEQ
-169A5 ; [.30A7.0020.0002.169A5] # BAMUM LETTER PHASE-E MGBEN
-169A6 ; [.30A8.0020.0002.169A6] # BAMUM LETTER PHASE-E MBEE
-169A7 ; [.30A9.0020.0002.169A7] # BAMUM LETTER PHASE-E NZAQ
-169A8 ; [.30AA.0020.0002.169A8] # BAMUM LETTER PHASE-E NKOM
-169A9 ; [.30AB.0020.0002.169A9] # BAMUM LETTER PHASE-E GBET
-169AA ; [.30AC.0020.0002.169AA] # BAMUM LETTER PHASE-E TUM
-169AB ; [.30AD.0020.0002.169AB] # BAMUM LETTER PHASE-E KUET
-169AC ; [.30AE.0020.0002.169AC] # BAMUM LETTER PHASE-E YAP
-169AD ; [.30AF.0020.0002.169AD] # BAMUM LETTER PHASE-E NYI CLEAVER
-169AE ; [.30B0.0020.0002.169AE] # BAMUM LETTER PHASE-E YIT
-169AF ; [.30B1.0020.0002.169AF] # BAMUM LETTER PHASE-E MFEUQ
-169B0 ; [.30B2.0020.0002.169B0] # BAMUM LETTER PHASE-E NDIAQ
-169B1 ; [.30B3.0020.0002.169B1] # BAMUM LETTER PHASE-E PIEEQ
-169B2 ; [.30B4.0020.0002.169B2] # BAMUM LETTER PHASE-E YUEQ
-169B3 ; [.30B5.0020.0002.169B3] # BAMUM LETTER PHASE-E LEUAEM
-169B4 ; [.30B6.0020.0002.169B4] # BAMUM LETTER PHASE-E FUE
-169B5 ; [.30B7.0020.0002.169B5] # BAMUM LETTER PHASE-E GBEUX
-169B6 ; [.30B8.0020.0002.169B6] # BAMUM LETTER PHASE-E NGKUP
-169B7 ; [.30B9.0020.0002.169B7] # BAMUM LETTER PHASE-E KET
-169B8 ; [.30BA.0020.0002.169B8] # BAMUM LETTER PHASE-E MAE
-169B9 ; [.30BB.0020.0002.169B9] # BAMUM LETTER PHASE-E NGKAAMI
-169BA ; [.30BC.0020.0002.169BA] # BAMUM LETTER PHASE-E GHET
-169BB ; [.30BD.0020.0002.169BB] # BAMUM LETTER PHASE-E FA
-169BC ; [.30BE.0020.0002.169BC] # BAMUM LETTER PHASE-E NTUM
-169BD ; [.30BF.0020.0002.169BD] # BAMUM LETTER PHASE-E PEUT
-169BE ; [.30C0.0020.0002.169BE] # BAMUM LETTER PHASE-E YEUM
-169BF ; [.30C1.0020.0002.169BF] # BAMUM LETTER PHASE-E NGGEUAE
-169C0 ; [.30C2.0020.0002.169C0] # BAMUM LETTER PHASE-E NYI BETWEEN
-169C1 ; [.30C3.0020.0002.169C1] # BAMUM LETTER PHASE-E NZUQ
-169C2 ; [.30C4.0020.0002.169C2] # BAMUM LETTER PHASE-E POON
-169C3 ; [.30C5.0020.0002.169C3] # BAMUM LETTER PHASE-E MIEE
-169C4 ; [.30C6.0020.0002.169C4] # BAMUM LETTER PHASE-E FUET
-169C5 ; [.30C7.0020.0002.169C5] # BAMUM LETTER PHASE-E NAE
-169C6 ; [.30C8.0020.0002.169C6] # BAMUM LETTER PHASE-E MUAE
-169C7 ; [.30C9.0020.0002.169C7] # BAMUM LETTER PHASE-E GHEUAE
-169C8 ; [.30CA.0020.0002.169C8] # BAMUM LETTER PHASE-E FU I
-169C9 ; [.30CB.0020.0002.169C9] # BAMUM LETTER PHASE-E MVI
-169CA ; [.30CC.0020.0002.169CA] # BAMUM LETTER PHASE-E PUAQ
-169CB ; [.30CD.0020.0002.169CB] # BAMUM LETTER PHASE-E NGKUM
-169CC ; [.30CE.0020.0002.169CC] # BAMUM LETTER PHASE-E KUT
-169CD ; [.30CF.0020.0002.169CD] # BAMUM LETTER PHASE-E PIET
-169CE ; [.30D0.0020.0002.169CE] # BAMUM LETTER PHASE-E NTAP
-169CF ; [.30D1.0020.0002.169CF] # BAMUM LETTER PHASE-E YEUAET
-169D0 ; [.30D2.0020.0002.169D0] # BAMUM LETTER PHASE-E NGGUP
-169D1 ; [.30D3.0020.0002.169D1] # BAMUM LETTER PHASE-E PA PEOPLE
-169D2 ; [.30D4.0020.0002.169D2] # BAMUM LETTER PHASE-E FU CALL
-169D3 ; [.30D5.0020.0002.169D3] # BAMUM LETTER PHASE-E FOM
-169D4 ; [.30D6.0020.0002.169D4] # BAMUM LETTER PHASE-E NJEE
-169D5 ; [.30D7.0020.0002.169D5] # BAMUM LETTER PHASE-E A
-169D6 ; [.30D8.0020.0002.169D6] # BAMUM LETTER PHASE-E TOQ
-169D7 ; [.30D9.0020.0002.169D7] # BAMUM LETTER PHASE-E O
-169D8 ; [.30DA.0020.0002.169D8] # BAMUM LETTER PHASE-E I
-169D9 ; [.30DB.0020.0002.169D9] # BAMUM LETTER PHASE-E LAQ
-169DA ; [.30DC.0020.0002.169DA] # BAMUM LETTER PHASE-E PA PLURAL
-169DB ; [.30DD.0020.0002.169DB] # BAMUM LETTER PHASE-E TAA
-169DC ; [.30DE.0020.0002.169DC] # BAMUM LETTER PHASE-E TAQ
-169DD ; [.30DF.0020.0002.169DD] # BAMUM LETTER PHASE-E NDAA MY HOUSE
-169DE ; [.30E0.0020.0002.169DE] # BAMUM LETTER PHASE-E SHIQ
-169DF ; [.30E1.0020.0002.169DF] # BAMUM LETTER PHASE-E YEUX
-169E0 ; [.30E2.0020.0002.169E0] # BAMUM LETTER PHASE-E NGUAE
-169E1 ; [.30E3.0020.0002.169E1] # BAMUM LETTER PHASE-E YUAEN
-169E2 ; [.30E4.0020.0002.169E2] # BAMUM LETTER PHASE-E YOQ SWIMMING
-169E3 ; [.30E5.0020.0002.169E3] # BAMUM LETTER PHASE-E YOQ COVER
-169E4 ; [.30E6.0020.0002.169E4] # BAMUM LETTER PHASE-E YUQ
-169E5 ; [.30E7.0020.0002.169E5] # BAMUM LETTER PHASE-E YUN
-169E6 ; [.30E8.0020.0002.169E6] # BAMUM LETTER PHASE-E KEUX
-169E7 ; [.30E9.0020.0002.169E7] # BAMUM LETTER PHASE-E PEUX
-169E8 ; [.30EA.0020.0002.169E8] # BAMUM LETTER PHASE-E NJEE EPOCH
-169E9 ; [.30EB.0020.0002.169E9] # BAMUM LETTER PHASE-E PUE
-169EA ; [.30EC.0020.0002.169EA] # BAMUM LETTER PHASE-E WUE
-169EB ; [.30ED.0020.0002.169EB] # BAMUM LETTER PHASE-E FEE
-169EC ; [.30EE.0020.0002.169EC] # BAMUM LETTER PHASE-E VEE
-169ED ; [.30EF.0020.0002.169ED] # BAMUM LETTER PHASE-E LU
-169EE ; [.30F0.0020.0002.169EE] # BAMUM LETTER PHASE-E MI
-169EF ; [.30F1.0020.0002.169EF] # BAMUM LETTER PHASE-E REUX
-169F0 ; [.30F2.0020.0002.169F0] # BAMUM LETTER PHASE-E RAE
-169F1 ; [.30F3.0020.0002.169F1] # BAMUM LETTER PHASE-E NGUAET
-169F2 ; [.30F4.0020.0002.169F2] # BAMUM LETTER PHASE-E NGA
-169F3 ; [.30F5.0020.0002.169F3] # BAMUM LETTER PHASE-E SHO
-169F4 ; [.30F6.0020.0002.169F4] # BAMUM LETTER PHASE-E SHOQ
-169F5 ; [.30F7.0020.0002.169F5] # BAMUM LETTER PHASE-E FU REMEDY
-169F6 ; [.30F8.0020.0002.169F6] # BAMUM LETTER PHASE-E NA
-169F7 ; [.30F9.0020.0002.169F7] # BAMUM LETTER PHASE-E PI
-169F8 ; [.30FA.0020.0002.169F8] # BAMUM LETTER PHASE-E LOQ
-169F9 ; [.30FB.0020.0002.169F9] # BAMUM LETTER PHASE-E KO
-169FA ; [.30FC.0020.0002.169FA] # BAMUM LETTER PHASE-E MEN
-169FB ; [.30FD.0020.0002.169FB] # BAMUM LETTER PHASE-E MA
-169FC ; [.30FE.0020.0002.169FC] # BAMUM LETTER PHASE-E MAQ
-169FD ; [.30FF.0020.0002.169FD] # BAMUM LETTER PHASE-E TEU
-169FE ; [.3100.0020.0002.169FE] # BAMUM LETTER PHASE-E KI
-169FF ; [.3101.0020.0002.169FF] # BAMUM LETTER PHASE-E MON
-16A00 ; [.3102.0020.0002.16A00] # BAMUM LETTER PHASE-E TEN
-16A01 ; [.3103.0020.0002.16A01] # BAMUM LETTER PHASE-E FAQ
-16A02 ; [.3104.0020.0002.16A02] # BAMUM LETTER PHASE-E GHOM
-16A03 ; [.3105.0020.0002.16A03] # BAMUM LETTER PHASE-F KA
-16A04 ; [.3106.0020.0002.16A04] # BAMUM LETTER PHASE-F U
-16A05 ; [.3107.0020.0002.16A05] # BAMUM LETTER PHASE-F KU
-16A06 ; [.3108.0020.0002.16A06] # BAMUM LETTER PHASE-F EE
-16A07 ; [.3109.0020.0002.16A07] # BAMUM LETTER PHASE-F REE
-16A08 ; [.310A.0020.0002.16A08] # BAMUM LETTER PHASE-F TAE
-16A09 ; [.310B.0020.0002.16A09] # BAMUM LETTER PHASE-F NYI
-16A0A ; [.310C.0020.0002.16A0A] # BAMUM LETTER PHASE-F LA
-16A0B ; [.310D.0020.0002.16A0B] # BAMUM LETTER PHASE-F RII
-16A0C ; [.310E.0020.0002.16A0C] # BAMUM LETTER PHASE-F RIEE
-16A0D ; [.310F.0020.0002.16A0D] # BAMUM LETTER PHASE-F MEEEE
-16A0E ; [.3110.0020.0002.16A0E] # BAMUM LETTER PHASE-F TAA
-16A0F ; [.3111.0020.0002.16A0F] # BAMUM LETTER PHASE-F NDAA
-16A10 ; [.3112.0020.0002.16A10] # BAMUM LETTER PHASE-F NJAEM
-16A11 ; [.3113.0020.0002.16A11] # BAMUM LETTER PHASE-F M
-16A12 ; [.3114.0020.0002.16A12] # BAMUM LETTER PHASE-F SUU
-16A13 ; [.3115.0020.0002.16A13] # BAMUM LETTER PHASE-F SHII
-16A14 ; [.3116.0020.0002.16A14] # BAMUM LETTER PHASE-F SI
-16A15 ; [.3117.0020.0002.16A15] # BAMUM LETTER PHASE-F SEUX
-16A16 ; [.3118.0020.0002.16A16] # BAMUM LETTER PHASE-F KYEE
-16A17 ; [.3119.0020.0002.16A17] # BAMUM LETTER PHASE-F KET
-16A18 ; [.311A.0020.0002.16A18] # BAMUM LETTER PHASE-F NUAE
-16A19 ; [.311B.0020.0002.16A19] # BAMUM LETTER PHASE-F NU
-16A1A ; [.311C.0020.0002.16A1A] # BAMUM LETTER PHASE-F NJUAE
-16A1B ; [.311D.0020.0002.16A1B] # BAMUM LETTER PHASE-F YOQ
-16A1C ; [.311E.0020.0002.16A1C] # BAMUM LETTER PHASE-F SHU
-16A1D ; [.311F.0020.0002.16A1D] # BAMUM LETTER PHASE-F YA
-16A1E ; [.3120.0020.0002.16A1E] # BAMUM LETTER PHASE-F NSHA
-16A1F ; [.3121.0020.0002.16A1F] # BAMUM LETTER PHASE-F PEUX
-16A20 ; [.3122.0020.0002.16A20] # BAMUM LETTER PHASE-F NTEE
-16A21 ; [.3123.0020.0002.16A21] # BAMUM LETTER PHASE-F WUE
-16A22 ; [.3124.0020.0002.16A22] # BAMUM LETTER PHASE-F PEE
-16A23 ; [.3125.0020.0002.16A23] # BAMUM LETTER PHASE-F RU
-16A24 ; [.3126.0020.0002.16A24] # BAMUM LETTER PHASE-F NI
-16A25 ; [.3127.0020.0002.16A25] # BAMUM LETTER PHASE-F REUX
-16A26 ; [.3128.0020.0002.16A26] # BAMUM LETTER PHASE-F KEN
-16A27 ; [.3129.0020.0002.16A27] # BAMUM LETTER PHASE-F NGKWAEN
-16A28 ; [.312A.0020.0002.16A28] # BAMUM LETTER PHASE-F NGGA
-16A29 ; [.312B.0020.0002.16A29] # BAMUM LETTER PHASE-F SHO
-16A2A ; [.312C.0020.0002.16A2A] # BAMUM LETTER PHASE-F PUAE
-16A2B ; [.312D.0020.0002.16A2B] # BAMUM LETTER PHASE-F FOM
-16A2C ; [.312E.0020.0002.16A2C] # BAMUM LETTER PHASE-F WA
-16A2D ; [.312F.0020.0002.16A2D] # BAMUM LETTER PHASE-F LI
-16A2E ; [.3130.0020.0002.16A2E] # BAMUM LETTER PHASE-F LOQ
-16A2F ; [.3131.0020.0002.16A2F] # BAMUM LETTER PHASE-F KO
-16A30 ; [.3132.0020.0002.16A30] # BAMUM LETTER PHASE-F MBEN
-16A31 ; [.3133.0020.0002.16A31] # BAMUM LETTER PHASE-F REN
-16A32 ; [.3134.0020.0002.16A32] # BAMUM LETTER PHASE-F MA
-16A33 ; [.3135.0020.0002.16A33] # BAMUM LETTER PHASE-F MO
-16A34 ; [.3136.0020.0002.16A34] # BAMUM LETTER PHASE-F MBAA
-16A35 ; [.3137.0020.0002.16A35] # BAMUM LETTER PHASE-F TET
-16A36 ; [.3138.0020.0002.16A36] # BAMUM LETTER PHASE-F KPA
-16A37 ; [.3139.0020.0002.16A37] # BAMUM LETTER PHASE-F SAMBA
-16A38 ; [.313A.0020.0002.16A38] # BAMUM LETTER PHASE-F VUEQ
-1100 ; [.313B.0020.0002.1100] # HANGUL CHOSEONG KIYEOK
-3131 ; [.313B.0020.0004.3131] # HANGUL LETTER KIYEOK
-3200 ; [*02FB.0020.0004.3200][.313B.0020.0004.3200][*02FC.0020.001F.3200] # PARENTHESIZED HANGUL KIYEOK
-3260 ; [.313B.0020.0006.3260] # CIRCLED HANGUL KIYEOK
-FFA1 ; [.313B.0020.0012.FFA1] # HALFWIDTH HANGUL LETTER KIYEOK
-320E ; [*02FB.0020.0004.320E][.313B.0020.0004.320E][.31B9.0020.001F.320E][*02FC.0020.001F.320E] # PARENTHESIZED HANGUL KIYEOK A
-326E ; [.313B.0020.0006.326E][.31B9.0020.0006.326E] # CIRCLED HANGUL KIYEOK A
-1101 ; [.313C.0020.0002.1101] # HANGUL CHOSEONG SSANGKIYEOK
-3132 ; [.313C.0020.0004.3132] # HANGUL LETTER SSANGKIYEOK
-FFA2 ; [.313C.0020.0012.FFA2] # HALFWIDTH HANGUL LETTER SSANGKIYEOK
-1102 ; [.313D.0020.0002.1102] # HANGUL CHOSEONG NIEUN
-3134 ; [.313D.0020.0004.3134] # HANGUL LETTER NIEUN
-3201 ; [*02FB.0020.0004.3201][.313D.0020.0004.3201][*02FC.0020.001F.3201] # PARENTHESIZED HANGUL NIEUN
-3261 ; [.313D.0020.0006.3261] # CIRCLED HANGUL NIEUN
-FFA4 ; [.313D.0020.0012.FFA4] # HALFWIDTH HANGUL LETTER NIEUN
-320F ; [*02FB.0020.0004.320F][.313D.0020.0004.320F][.31B9.0020.001F.320F][*02FC.0020.001F.320F] # PARENTHESIZED HANGUL NIEUN A
-326F ; [.313D.0020.0006.326F][.31B9.0020.0006.326F] # CIRCLED HANGUL NIEUN A
-1103 ; [.313E.0020.0002.1103] # HANGUL CHOSEONG TIKEUT
-3137 ; [.313E.0020.0004.3137] # HANGUL LETTER TIKEUT
-3202 ; [*02FB.0020.0004.3202][.313E.0020.0004.3202][*02FC.0020.001F.3202] # PARENTHESIZED HANGUL TIKEUT
-3262 ; [.313E.0020.0006.3262] # CIRCLED HANGUL TIKEUT
-FFA7 ; [.313E.0020.0012.FFA7] # HALFWIDTH HANGUL LETTER TIKEUT
-3210 ; [*02FB.0020.0004.3210][.313E.0020.0004.3210][.31B9.0020.001F.3210][*02FC.0020.001F.3210] # PARENTHESIZED HANGUL TIKEUT A
-3270 ; [.313E.0020.0006.3270][.31B9.0020.0006.3270] # CIRCLED HANGUL TIKEUT A
-1104 ; [.313F.0020.0002.1104] # HANGUL CHOSEONG SSANGTIKEUT
-3138 ; [.313F.0020.0004.3138] # HANGUL LETTER SSANGTIKEUT
-FFA8 ; [.313F.0020.0012.FFA8] # HALFWIDTH HANGUL LETTER SSANGTIKEUT
-1105 ; [.3140.0020.0002.1105] # HANGUL CHOSEONG RIEUL
-3139 ; [.3140.0020.0004.3139] # HANGUL LETTER RIEUL
-3203 ; [*02FB.0020.0004.3203][.3140.0020.0004.3203][*02FC.0020.001F.3203] # PARENTHESIZED HANGUL RIEUL
-3263 ; [.3140.0020.0006.3263] # CIRCLED HANGUL RIEUL
-FFA9 ; [.3140.0020.0012.FFA9] # HALFWIDTH HANGUL LETTER RIEUL
-3211 ; [*02FB.0020.0004.3211][.3140.0020.0004.3211][.31B9.0020.001F.3211][*02FC.0020.001F.3211] # PARENTHESIZED HANGUL RIEUL A
-3271 ; [.3140.0020.0006.3271][.31B9.0020.0006.3271] # CIRCLED HANGUL RIEUL A
-1106 ; [.3141.0020.0002.1106] # HANGUL CHOSEONG MIEUM
-3141 ; [.3141.0020.0004.3141] # HANGUL LETTER MIEUM
-3204 ; [*02FB.0020.0004.3204][.3141.0020.0004.3204][*02FC.0020.001F.3204] # PARENTHESIZED HANGUL MIEUM
-3264 ; [.3141.0020.0006.3264] # CIRCLED HANGUL MIEUM
-FFB1 ; [.3141.0020.0012.FFB1] # HALFWIDTH HANGUL LETTER MIEUM
-3212 ; [*02FB.0020.0004.3212][.3141.0020.0004.3212][.31B9.0020.001F.3212][*02FC.0020.001F.3212] # PARENTHESIZED HANGUL MIEUM A
-3272 ; [.3141.0020.0006.3272][.31B9.0020.0006.3272] # CIRCLED HANGUL MIEUM A
-1107 ; [.3142.0020.0002.1107] # HANGUL CHOSEONG PIEUP
-3142 ; [.3142.0020.0004.3142] # HANGUL LETTER PIEUP
-3205 ; [*02FB.0020.0004.3205][.3142.0020.0004.3205][*02FC.0020.001F.3205] # PARENTHESIZED HANGUL PIEUP
-3265 ; [.3142.0020.0006.3265] # CIRCLED HANGUL PIEUP
-FFB2 ; [.3142.0020.0012.FFB2] # HALFWIDTH HANGUL LETTER PIEUP
-3213 ; [*02FB.0020.0004.3213][.3142.0020.0004.3213][.31B9.0020.001F.3213][*02FC.0020.001F.3213] # PARENTHESIZED HANGUL PIEUP A
-3273 ; [.3142.0020.0006.3273][.31B9.0020.0006.3273] # CIRCLED HANGUL PIEUP A
-1108 ; [.3143.0020.0002.1108] # HANGUL CHOSEONG SSANGPIEUP
-3143 ; [.3143.0020.0004.3143] # HANGUL LETTER SSANGPIEUP
-FFB3 ; [.3143.0020.0012.FFB3] # HALFWIDTH HANGUL LETTER SSANGPIEUP
-1109 ; [.3144.0020.0002.1109] # HANGUL CHOSEONG SIOS
-3145 ; [.3144.0020.0004.3145] # HANGUL LETTER SIOS
-3206 ; [*02FB.0020.0004.3206][.3144.0020.0004.3206][*02FC.0020.001F.3206] # PARENTHESIZED HANGUL SIOS
-3266 ; [.3144.0020.0006.3266] # CIRCLED HANGUL SIOS
-FFB5 ; [.3144.0020.0012.FFB5] # HALFWIDTH HANGUL LETTER SIOS
-3214 ; [*02FB.0020.0004.3214][.3144.0020.0004.3214][.31B9.0020.001F.3214][*02FC.0020.001F.3214] # PARENTHESIZED HANGUL SIOS A
-3274 ; [.3144.0020.0006.3274][.31B9.0020.0006.3274] # CIRCLED HANGUL SIOS A
-110A ; [.3145.0020.0002.110A] # HANGUL CHOSEONG SSANGSIOS
-3146 ; [.3145.0020.0004.3146] # HANGUL LETTER SSANGSIOS
-FFB6 ; [.3145.0020.0012.FFB6] # HALFWIDTH HANGUL LETTER SSANGSIOS
-110B ; [.3146.0020.0002.110B] # HANGUL CHOSEONG IEUNG
-3147 ; [.3146.0020.0004.3147] # HANGUL LETTER IEUNG
-3207 ; [*02FB.0020.0004.3207][.3146.0020.0004.3207][*02FC.0020.001F.3207] # PARENTHESIZED HANGUL IEUNG
-3267 ; [.3146.0020.0006.3267] # CIRCLED HANGUL IEUNG
-FFB7 ; [.3146.0020.0012.FFB7] # HALFWIDTH HANGUL LETTER IEUNG
-3215 ; [*02FB.0020.0004.3215][.3146.0020.0004.3215][.31B9.0020.001F.3215][*02FC.0020.001F.3215] # PARENTHESIZED HANGUL IEUNG A
-3275 ; [.3146.0020.0006.3275][.31B9.0020.0006.3275] # CIRCLED HANGUL IEUNG A
-321D ; [*02FB.0020.0004.321D][.3146.0020.0004.321D][.31C1.0020.001F.321D][.3147.0020.001F.321D][.31BD.0020.001F.321D][.321A.0020.001F.321D][*02FC.0020.001F.321D] # PARENTHESIZED KOREAN CHARACTER OJEON
-321E ; [*02FB.0020.0004.321E][.3146.0020.0004.321E][.31C1.0020.001F.321E][.314D.0020.001F.321E][.31C6.0020.001F.321E][*02FC.0020.001F.321E] # PARENTHESIZED KOREAN CHARACTER O HU
-327E ; [.3146.0020.0006.327E][.31C6.0020.0006.327E] # CIRCLED HANGUL IEUNG U
-110C ; [.3147.0020.0002.110C] # HANGUL CHOSEONG CIEUC
-3148 ; [.3147.0020.0004.3148] # HANGUL LETTER CIEUC
-3208 ; [*02FB.0020.0004.3208][.3147.0020.0004.3208][*02FC.0020.001F.3208] # PARENTHESIZED HANGUL CIEUC
-3268 ; [.3147.0020.0006.3268] # CIRCLED HANGUL CIEUC
-FFB8 ; [.3147.0020.0012.FFB8] # HALFWIDTH HANGUL LETTER CIEUC
-3216 ; [*02FB.0020.0004.3216][.3147.0020.0004.3216][.31B9.0020.001F.3216][*02FC.0020.001F.3216] # PARENTHESIZED HANGUL CIEUC A
-3276 ; [.3147.0020.0006.3276][.31B9.0020.0006.3276] # CIRCLED HANGUL CIEUC A
-321C ; [*02FB.0020.0004.321C][.3147.0020.0004.321C][.31C6.0020.001F.321C][*02FC.0020.001F.321C] # PARENTHESIZED HANGUL CIEUC U
-327D ; [.3147.0020.0006.327D][.31C6.0020.0006.327D][.3146.0020.001F.327D][.31CC.0020.001F.327D] # CIRCLED KOREAN CHARACTER JUEUI
-110D ; [.3148.0020.0002.110D] # HANGUL CHOSEONG SSANGCIEUC
-3149 ; [.3148.0020.0004.3149] # HANGUL LETTER SSANGCIEUC
-FFB9 ; [.3148.0020.0012.FFB9] # HALFWIDTH HANGUL LETTER SSANGCIEUC
-110E ; [.3149.0020.0002.110E] # HANGUL CHOSEONG CHIEUCH
-314A ; [.3149.0020.0004.314A] # HANGUL LETTER CHIEUCH
-3209 ; [*02FB.0020.0004.3209][.3149.0020.0004.3209][*02FC.0020.001F.3209] # PARENTHESIZED HANGUL CHIEUCH
-3269 ; [.3149.0020.0006.3269] # CIRCLED HANGUL CHIEUCH
-FFBA ; [.3149.0020.0012.FFBA] # HALFWIDTH HANGUL LETTER CHIEUCH
-3217 ; [*02FB.0020.0004.3217][.3149.0020.0004.3217][.31B9.0020.001F.3217][*02FC.0020.001F.3217] # PARENTHESIZED HANGUL CHIEUCH A
-3277 ; [.3149.0020.0006.3277][.31B9.0020.0006.3277] # CIRCLED HANGUL CHIEUCH A
-327C ; [.3149.0020.0006.327C][.31B9.0020.0006.327C][.3226.0020.001F.327C][.313B.0020.001F.327C][.31C1.0020.001F.327C] # CIRCLED KOREAN CHARACTER CHAMKO
-110F ; [.314A.0020.0002.110F] # HANGUL CHOSEONG KHIEUKH
-314B ; [.314A.0020.0004.314B] # HANGUL LETTER KHIEUKH
-320A ; [*02FB.0020.0004.320A][.314A.0020.0004.320A][*02FC.0020.001F.320A] # PARENTHESIZED HANGUL KHIEUKH
-326A ; [.314A.0020.0006.326A] # CIRCLED HANGUL KHIEUKH
-FFBB ; [.314A.0020.0012.FFBB] # HALFWIDTH HANGUL LETTER KHIEUKH
-3218 ; [*02FB.0020.0004.3218][.314A.0020.0004.3218][.31B9.0020.001F.3218][*02FC.0020.001F.3218] # PARENTHESIZED HANGUL KHIEUKH A
-3278 ; [.314A.0020.0006.3278][.31B9.0020.0006.3278] # CIRCLED HANGUL KHIEUKH A
-1110 ; [.314B.0020.0002.1110] # HANGUL CHOSEONG THIEUTH
-314C ; [.314B.0020.0004.314C] # HANGUL LETTER THIEUTH
-320B ; [*02FB.0020.0004.320B][.314B.0020.0004.320B][*02FC.0020.001F.320B] # PARENTHESIZED HANGUL THIEUTH
-326B ; [.314B.0020.0006.326B] # CIRCLED HANGUL THIEUTH
-FFBC ; [.314B.0020.0012.FFBC] # HALFWIDTH HANGUL LETTER THIEUTH
-3219 ; [*02FB.0020.0004.3219][.314B.0020.0004.3219][.31B9.0020.001F.3219][*02FC.0020.001F.3219] # PARENTHESIZED HANGUL THIEUTH A
-3279 ; [.314B.0020.0006.3279][.31B9.0020.0006.3279] # CIRCLED HANGUL THIEUTH A
-1111 ; [.314C.0020.0002.1111] # HANGUL CHOSEONG PHIEUPH
-314D ; [.314C.0020.0004.314D] # HANGUL LETTER PHIEUPH
-320C ; [*02FB.0020.0004.320C][.314C.0020.0004.320C][*02FC.0020.001F.320C] # PARENTHESIZED HANGUL PHIEUPH
-326C ; [.314C.0020.0006.326C] # CIRCLED HANGUL PHIEUPH
-FFBD ; [.314C.0020.0012.FFBD] # HALFWIDTH HANGUL LETTER PHIEUPH
-321A ; [*02FB.0020.0004.321A][.314C.0020.0004.321A][.31B9.0020.001F.321A][*02FC.0020.001F.321A] # PARENTHESIZED HANGUL PHIEUPH A
-327A ; [.314C.0020.0006.327A][.31B9.0020.0006.327A] # CIRCLED HANGUL PHIEUPH A
-1112 ; [.314D.0020.0002.1112] # HANGUL CHOSEONG HIEUH
-314E ; [.314D.0020.0004.314E] # HANGUL LETTER HIEUH
-320D ; [*02FB.0020.0004.320D][.314D.0020.0004.320D][*02FC.0020.001F.320D] # PARENTHESIZED HANGUL HIEUH
-326D ; [.314D.0020.0006.326D] # CIRCLED HANGUL HIEUH
-FFBE ; [.314D.0020.0012.FFBE] # HALFWIDTH HANGUL LETTER HIEUH
-321B ; [*02FB.0020.0004.321B][.314D.0020.0004.321B][.31B9.0020.001F.321B][*02FC.0020.001F.321B] # PARENTHESIZED HANGUL HIEUH A
-327B ; [.314D.0020.0006.327B][.31B9.0020.0006.327B] # CIRCLED HANGUL HIEUH A
-1113 ; [.314E.0020.0002.1113] # HANGUL CHOSEONG NIEUN-KIYEOK
-1114 ; [.314F.0020.0002.1114] # HANGUL CHOSEONG SSANGNIEUN
-3165 ; [.314F.0020.0004.3165] # HANGUL LETTER SSANGNIEUN
-1115 ; [.3150.0020.0002.1115] # HANGUL CHOSEONG NIEUN-TIKEUT
-3166 ; [.3150.0020.0004.3166] # HANGUL LETTER NIEUN-TIKEUT
-1116 ; [.3151.0020.0002.1116] # HANGUL CHOSEONG NIEUN-PIEUP
-1117 ; [.3152.0020.0002.1117] # HANGUL CHOSEONG TIKEUT-KIYEOK
-1118 ; [.3153.0020.0002.1118] # HANGUL CHOSEONG RIEUL-NIEUN
-1119 ; [.3154.0020.0002.1119] # HANGUL CHOSEONG SSANGRIEUL
-111A ; [.3155.0020.0002.111A] # HANGUL CHOSEONG RIEUL-HIEUH
-3140 ; [.3155.0020.0004.3140] # HANGUL LETTER RIEUL-HIEUH
-FFB0 ; [.3155.0020.0012.FFB0] # HALFWIDTH HANGUL LETTER RIEUL-HIEUH
-111B ; [.3156.0020.0002.111B] # HANGUL CHOSEONG KAPYEOUNRIEUL
-111C ; [.3157.0020.0002.111C] # HANGUL CHOSEONG MIEUM-PIEUP
-316E ; [.3157.0020.0004.316E] # HANGUL LETTER MIEUM-PIEUP
-111D ; [.3158.0020.0002.111D] # HANGUL CHOSEONG KAPYEOUNMIEUM
-3171 ; [.3158.0020.0004.3171] # HANGUL LETTER KAPYEOUNMIEUM
-111E ; [.3159.0020.0002.111E] # HANGUL CHOSEONG PIEUP-KIYEOK
-3172 ; [.3159.0020.0004.3172] # HANGUL LETTER PIEUP-KIYEOK
-111F ; [.315A.0020.0002.111F] # HANGUL CHOSEONG PIEUP-NIEUN
-1120 ; [.315B.0020.0002.1120] # HANGUL CHOSEONG PIEUP-TIKEUT
-3173 ; [.315B.0020.0004.3173] # HANGUL LETTER PIEUP-TIKEUT
-1121 ; [.315C.0020.0002.1121] # HANGUL CHOSEONG PIEUP-SIOS
-3144 ; [.315C.0020.0004.3144] # HANGUL LETTER PIEUP-SIOS
-FFB4 ; [.315C.0020.0012.FFB4] # HALFWIDTH HANGUL LETTER PIEUP-SIOS
-1122 ; [.315D.0020.0002.1122] # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
-3174 ; [.315D.0020.0004.3174] # HANGUL LETTER PIEUP-SIOS-KIYEOK
-1123 ; [.315E.0020.0002.1123] # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
-3175 ; [.315E.0020.0004.3175] # HANGUL LETTER PIEUP-SIOS-TIKEUT
-1124 ; [.315F.0020.0002.1124] # HANGUL CHOSEONG PIEUP-SIOS-PIEUP
-1125 ; [.3160.0020.0002.1125] # HANGUL CHOSEONG PIEUP-SSANGSIOS
-1126 ; [.3161.0020.0002.1126] # HANGUL CHOSEONG PIEUP-SIOS-CIEUC
-1127 ; [.3162.0020.0002.1127] # HANGUL CHOSEONG PIEUP-CIEUC
-3176 ; [.3162.0020.0004.3176] # HANGUL LETTER PIEUP-CIEUC
-1128 ; [.3163.0020.0002.1128] # HANGUL CHOSEONG PIEUP-CHIEUCH
-1129 ; [.3164.0020.0002.1129] # HANGUL CHOSEONG PIEUP-THIEUTH
-3177 ; [.3164.0020.0004.3177] # HANGUL LETTER PIEUP-THIEUTH
-112A ; [.3165.0020.0002.112A] # HANGUL CHOSEONG PIEUP-PHIEUPH
-112B ; [.3166.0020.0002.112B] # HANGUL CHOSEONG KAPYEOUNPIEUP
-3178 ; [.3166.0020.0004.3178] # HANGUL LETTER KAPYEOUNPIEUP
-112C ; [.3167.0020.0002.112C] # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
-3179 ; [.3167.0020.0004.3179] # HANGUL LETTER KAPYEOUNSSANGPIEUP
-112D ; [.3168.0020.0002.112D] # HANGUL CHOSEONG SIOS-KIYEOK
-317A ; [.3168.0020.0004.317A] # HANGUL LETTER SIOS-KIYEOK
-112E ; [.3169.0020.0002.112E] # HANGUL CHOSEONG SIOS-NIEUN
-317B ; [.3169.0020.0004.317B] # HANGUL LETTER SIOS-NIEUN
-112F ; [.316A.0020.0002.112F] # HANGUL CHOSEONG SIOS-TIKEUT
-317C ; [.316A.0020.0004.317C] # HANGUL LETTER SIOS-TIKEUT
-1130 ; [.316B.0020.0002.1130] # HANGUL CHOSEONG SIOS-RIEUL
-1131 ; [.316C.0020.0002.1131] # HANGUL CHOSEONG SIOS-MIEUM
-1132 ; [.316D.0020.0002.1132] # HANGUL CHOSEONG SIOS-PIEUP
-317D ; [.316D.0020.0004.317D] # HANGUL LETTER SIOS-PIEUP
-1133 ; [.316E.0020.0002.1133] # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
-1134 ; [.316F.0020.0002.1134] # HANGUL CHOSEONG SIOS-SSANGSIOS
-1135 ; [.3170.0020.0002.1135] # HANGUL CHOSEONG SIOS-IEUNG
-1136 ; [.3171.0020.0002.1136] # HANGUL CHOSEONG SIOS-CIEUC
-317E ; [.3171.0020.0004.317E] # HANGUL LETTER SIOS-CIEUC
-1137 ; [.3172.0020.0002.1137] # HANGUL CHOSEONG SIOS-CHIEUCH
-1138 ; [.3173.0020.0002.1138] # HANGUL CHOSEONG SIOS-KHIEUKH
-1139 ; [.3174.0020.0002.1139] # HANGUL CHOSEONG SIOS-THIEUTH
-113A ; [.3175.0020.0002.113A] # HANGUL CHOSEONG SIOS-PHIEUPH
-113B ; [.3176.0020.0002.113B] # HANGUL CHOSEONG SIOS-HIEUH
-113C ; [.3177.0020.0002.113C] # HANGUL CHOSEONG CHITUEUMSIOS
-113D ; [.3178.0020.0002.113D] # HANGUL CHOSEONG CHITUEUMSSANGSIOS
-113E ; [.3179.0020.0002.113E] # HANGUL CHOSEONG CEONGCHIEUMSIOS
-113F ; [.317A.0020.0002.113F] # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
-1140 ; [.317B.0020.0002.1140] # HANGUL CHOSEONG PANSIOS
-317F ; [.317B.0020.0004.317F] # HANGUL LETTER PANSIOS
-1141 ; [.317C.0020.0002.1141] # HANGUL CHOSEONG IEUNG-KIYEOK
-1142 ; [.317D.0020.0002.1142] # HANGUL CHOSEONG IEUNG-TIKEUT
-1143 ; [.317E.0020.0002.1143] # HANGUL CHOSEONG IEUNG-MIEUM
-1144 ; [.317F.0020.0002.1144] # HANGUL CHOSEONG IEUNG-PIEUP
-1145 ; [.3180.0020.0002.1145] # HANGUL CHOSEONG IEUNG-SIOS
-1146 ; [.3181.0020.0002.1146] # HANGUL CHOSEONG IEUNG-PANSIOS
-1147 ; [.3182.0020.0002.1147] # HANGUL CHOSEONG SSANGIEUNG
-3180 ; [.3182.0020.0004.3180] # HANGUL LETTER SSANGIEUNG
-1148 ; [.3183.0020.0002.1148] # HANGUL CHOSEONG IEUNG-CIEUC
-1149 ; [.3184.0020.0002.1149] # HANGUL CHOSEONG IEUNG-CHIEUCH
-114A ; [.3185.0020.0002.114A] # HANGUL CHOSEONG IEUNG-THIEUTH
-114B ; [.3186.0020.0002.114B] # HANGUL CHOSEONG IEUNG-PHIEUPH
-114C ; [.3187.0020.0002.114C] # HANGUL CHOSEONG YESIEUNG
-3181 ; [.3187.0020.0004.3181] # HANGUL LETTER YESIEUNG
-114D ; [.3188.0020.0002.114D] # HANGUL CHOSEONG CIEUC-IEUNG
-114E ; [.3189.0020.0002.114E] # HANGUL CHOSEONG CHITUEUMCIEUC
-114F ; [.318A.0020.0002.114F] # HANGUL CHOSEONG CHITUEUMSSANGCIEUC
-1150 ; [.318B.0020.0002.1150] # HANGUL CHOSEONG CEONGCHIEUMCIEUC
-1151 ; [.318C.0020.0002.1151] # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
-1152 ; [.318D.0020.0002.1152] # HANGUL CHOSEONG CHIEUCH-KHIEUKH
-1153 ; [.318E.0020.0002.1153] # HANGUL CHOSEONG CHIEUCH-HIEUH
-1154 ; [.318F.0020.0002.1154] # HANGUL CHOSEONG CHITUEUMCHIEUCH
-1155 ; [.3190.0020.0002.1155] # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
-1156 ; [.3191.0020.0002.1156] # HANGUL CHOSEONG PHIEUPH-PIEUP
-1157 ; [.3192.0020.0002.1157] # HANGUL CHOSEONG KAPYEOUNPHIEUPH
-3184 ; [.3192.0020.0004.3184] # HANGUL LETTER KAPYEOUNPHIEUPH
-1158 ; [.3193.0020.0002.1158] # HANGUL CHOSEONG SSANGHIEUH
-3185 ; [.3193.0020.0004.3185] # HANGUL LETTER SSANGHIEUH
-1159 ; [.3194.0020.0002.1159] # HANGUL CHOSEONG YEORINHIEUH
-3186 ; [.3194.0020.0004.3186] # HANGUL LETTER YEORINHIEUH
-115A ; [.3195.0020.0002.115A] # HANGUL CHOSEONG KIYEOK-TIKEUT
-115B ; [.3196.0020.0002.115B] # HANGUL CHOSEONG NIEUN-SIOS
-115C ; [.3197.0020.0002.115C] # HANGUL CHOSEONG NIEUN-CIEUC
-115D ; [.3198.0020.0002.115D] # HANGUL CHOSEONG NIEUN-HIEUH
-115E ; [.3199.0020.0002.115E] # HANGUL CHOSEONG TIKEUT-RIEUL
-A960 ; [.319A.0020.0002.A960] # HANGUL CHOSEONG TIKEUT-MIEUM
-A961 ; [.319B.0020.0002.A961] # HANGUL CHOSEONG TIKEUT-PIEUP
-A962 ; [.319C.0020.0002.A962] # HANGUL CHOSEONG TIKEUT-SIOS
-A963 ; [.319D.0020.0002.A963] # HANGUL CHOSEONG TIKEUT-CIEUC
-A964 ; [.319E.0020.0002.A964] # HANGUL CHOSEONG RIEUL-KIYEOK
-A965 ; [.319F.0020.0002.A965] # HANGUL CHOSEONG RIEUL-SSANGKIYEOK
-A966 ; [.31A0.0020.0002.A966] # HANGUL CHOSEONG RIEUL-TIKEUT
-A967 ; [.31A1.0020.0002.A967] # HANGUL CHOSEONG RIEUL-SSANGTIKEUT
-A968 ; [.31A2.0020.0002.A968] # HANGUL CHOSEONG RIEUL-MIEUM
-A969 ; [.31A3.0020.0002.A969] # HANGUL CHOSEONG RIEUL-PIEUP
-A96A ; [.31A4.0020.0002.A96A] # HANGUL CHOSEONG RIEUL-SSANGPIEUP
-A96B ; [.31A5.0020.0002.A96B] # HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP
-A96C ; [.31A6.0020.0002.A96C] # HANGUL CHOSEONG RIEUL-SIOS
-A96D ; [.31A7.0020.0002.A96D] # HANGUL CHOSEONG RIEUL-CIEUC
-A96E ; [.31A8.0020.0002.A96E] # HANGUL CHOSEONG RIEUL-KHIEUKH
-A96F ; [.31A9.0020.0002.A96F] # HANGUL CHOSEONG MIEUM-KIYEOK
-A970 ; [.31AA.0020.0002.A970] # HANGUL CHOSEONG MIEUM-TIKEUT
-A971 ; [.31AB.0020.0002.A971] # HANGUL CHOSEONG MIEUM-SIOS
-A972 ; [.31AC.0020.0002.A972] # HANGUL CHOSEONG PIEUP-SIOS-THIEUTH
-A973 ; [.31AD.0020.0002.A973] # HANGUL CHOSEONG PIEUP-KHIEUKH
-A974 ; [.31AE.0020.0002.A974] # HANGUL CHOSEONG PIEUP-HIEUH
-A975 ; [.31AF.0020.0002.A975] # HANGUL CHOSEONG SSANGSIOS-PIEUP
-A976 ; [.31B0.0020.0002.A976] # HANGUL CHOSEONG IEUNG-RIEUL
-A977 ; [.31B1.0020.0002.A977] # HANGUL CHOSEONG IEUNG-HIEUH
-A978 ; [.31B2.0020.0002.A978] # HANGUL CHOSEONG SSANGCIEUC-HIEUH
-A979 ; [.31B3.0020.0002.A979] # HANGUL CHOSEONG SSANGTHIEUTH
-A97A ; [.31B4.0020.0002.A97A] # HANGUL CHOSEONG PHIEUPH-HIEUH
-A97B ; [.31B5.0020.0002.A97B] # HANGUL CHOSEONG HIEUH-SIOS
-A97C ; [.31B6.0020.0002.A97C] # HANGUL CHOSEONG SSANGYEORINHIEUH
-115F ; [.31B7.0020.0002.115F] # HANGUL CHOSEONG FILLER
-1160 ; [.31B8.0020.0002.1160] # HANGUL JUNGSEONG FILLER
-3164 ; [.31B8.0020.0004.3164] # HANGUL FILLER
-FFA0 ; [.31B8.0020.0012.FFA0] # HALFWIDTH HANGUL FILLER
-1161 ; [.31B9.0020.0002.1161] # HANGUL JUNGSEONG A
-314F ; [.31B9.0020.0004.314F] # HANGUL LETTER A
-FFC2 ; [.31B9.0020.0012.FFC2] # HALFWIDTH HANGUL LETTER A
-1162 ; [.31BA.0020.0002.1162] # HANGUL JUNGSEONG AE
-3150 ; [.31BA.0020.0004.3150] # HANGUL LETTER AE
-FFC3 ; [.31BA.0020.0012.FFC3] # HALFWIDTH HANGUL LETTER AE
-1163 ; [.31BB.0020.0002.1163] # HANGUL JUNGSEONG YA
-3151 ; [.31BB.0020.0004.3151] # HANGUL LETTER YA
-FFC4 ; [.31BB.0020.0012.FFC4] # HALFWIDTH HANGUL LETTER YA
-1164 ; [.31BC.0020.0002.1164] # HANGUL JUNGSEONG YAE
-3152 ; [.31BC.0020.0004.3152] # HANGUL LETTER YAE
-FFC5 ; [.31BC.0020.0012.FFC5] # HALFWIDTH HANGUL LETTER YAE
-1165 ; [.31BD.0020.0002.1165] # HANGUL JUNGSEONG EO
-3153 ; [.31BD.0020.0004.3153] # HANGUL LETTER EO
-FFC6 ; [.31BD.0020.0012.FFC6] # HALFWIDTH HANGUL LETTER EO
-1166 ; [.31BE.0020.0002.1166] # HANGUL JUNGSEONG E
-3154 ; [.31BE.0020.0004.3154] # HANGUL LETTER E
-FFC7 ; [.31BE.0020.0012.FFC7] # HALFWIDTH HANGUL LETTER E
-1167 ; [.31BF.0020.0002.1167] # HANGUL JUNGSEONG YEO
-3155 ; [.31BF.0020.0004.3155] # HANGUL LETTER YEO
-FFCA ; [.31BF.0020.0012.FFCA] # HALFWIDTH HANGUL LETTER YEO
-1168 ; [.31C0.0020.0002.1168] # HANGUL JUNGSEONG YE
-3156 ; [.31C0.0020.0004.3156] # HANGUL LETTER YE
-FFCB ; [.31C0.0020.0012.FFCB] # HALFWIDTH HANGUL LETTER YE
-1169 ; [.31C1.0020.0002.1169] # HANGUL JUNGSEONG O
-3157 ; [.31C1.0020.0004.3157] # HANGUL LETTER O
-FFCC ; [.31C1.0020.0012.FFCC] # HALFWIDTH HANGUL LETTER O
-116A ; [.31C2.0020.0002.116A] # HANGUL JUNGSEONG WA
-3158 ; [.31C2.0020.0004.3158] # HANGUL LETTER WA
-FFCD ; [.31C2.0020.0012.FFCD] # HALFWIDTH HANGUL LETTER WA
-116B ; [.31C3.0020.0002.116B] # HANGUL JUNGSEONG WAE
-3159 ; [.31C3.0020.0004.3159] # HANGUL LETTER WAE
-FFCE ; [.31C3.0020.0012.FFCE] # HALFWIDTH HANGUL LETTER WAE
-116C ; [.31C4.0020.0002.116C] # HANGUL JUNGSEONG OE
-315A ; [.31C4.0020.0004.315A] # HANGUL LETTER OE
-FFCF ; [.31C4.0020.0012.FFCF] # HALFWIDTH HANGUL LETTER OE
-116D ; [.31C5.0020.0002.116D] # HANGUL JUNGSEONG YO
-315B ; [.31C5.0020.0004.315B] # HANGUL LETTER YO
-FFD2 ; [.31C5.0020.0012.FFD2] # HALFWIDTH HANGUL LETTER YO
-116E ; [.31C6.0020.0002.116E] # HANGUL JUNGSEONG U
-315C ; [.31C6.0020.0004.315C] # HANGUL LETTER U
-FFD3 ; [.31C6.0020.0012.FFD3] # HALFWIDTH HANGUL LETTER U
-116F ; [.31C7.0020.0002.116F] # HANGUL JUNGSEONG WEO
-315D ; [.31C7.0020.0004.315D] # HANGUL LETTER WEO
-FFD4 ; [.31C7.0020.0012.FFD4] # HALFWIDTH HANGUL LETTER WEO
-1170 ; [.31C8.0020.0002.1170] # HANGUL JUNGSEONG WE
-315E ; [.31C8.0020.0004.315E] # HANGUL LETTER WE
-FFD5 ; [.31C8.0020.0012.FFD5] # HALFWIDTH HANGUL LETTER WE
-1171 ; [.31C9.0020.0002.1171] # HANGUL JUNGSEONG WI
-315F ; [.31C9.0020.0004.315F] # HANGUL LETTER WI
-FFD6 ; [.31C9.0020.0012.FFD6] # HALFWIDTH HANGUL LETTER WI
-1172 ; [.31CA.0020.0002.1172] # HANGUL JUNGSEONG YU
-3160 ; [.31CA.0020.0004.3160] # HANGUL LETTER YU
-FFD7 ; [.31CA.0020.0012.FFD7] # HALFWIDTH HANGUL LETTER YU
-1173 ; [.31CB.0020.0002.1173] # HANGUL JUNGSEONG EU
-3161 ; [.31CB.0020.0004.3161] # HANGUL LETTER EU
-FFDA ; [.31CB.0020.0012.FFDA] # HALFWIDTH HANGUL LETTER EU
-1174 ; [.31CC.0020.0002.1174] # HANGUL JUNGSEONG YI
-3162 ; [.31CC.0020.0004.3162] # HANGUL LETTER YI
-FFDB ; [.31CC.0020.0012.FFDB] # HALFWIDTH HANGUL LETTER YI
-1175 ; [.31CD.0020.0002.1175] # HANGUL JUNGSEONG I
-3163 ; [.31CD.0020.0004.3163] # HANGUL LETTER I
-FFDC ; [.31CD.0020.0012.FFDC] # HALFWIDTH HANGUL LETTER I
-1176 ; [.31CE.0020.0002.1176] # HANGUL JUNGSEONG A-O
-1177 ; [.31CF.0020.0002.1177] # HANGUL JUNGSEONG A-U
-1178 ; [.31D0.0020.0002.1178] # HANGUL JUNGSEONG YA-O
-1179 ; [.31D1.0020.0002.1179] # HANGUL JUNGSEONG YA-YO
-117A ; [.31D2.0020.0002.117A] # HANGUL JUNGSEONG EO-O
-117B ; [.31D3.0020.0002.117B] # HANGUL JUNGSEONG EO-U
-117C ; [.31D4.0020.0002.117C] # HANGUL JUNGSEONG EO-EU
-117D ; [.31D5.0020.0002.117D] # HANGUL JUNGSEONG YEO-O
-117E ; [.31D6.0020.0002.117E] # HANGUL JUNGSEONG YEO-U
-117F ; [.31D7.0020.0002.117F] # HANGUL JUNGSEONG O-EO
-1180 ; [.31D8.0020.0002.1180] # HANGUL JUNGSEONG O-E
-1181 ; [.31D9.0020.0002.1181] # HANGUL JUNGSEONG O-YE
-1182 ; [.31DA.0020.0002.1182] # HANGUL JUNGSEONG O-O
-1183 ; [.31DB.0020.0002.1183] # HANGUL JUNGSEONG O-U
-1184 ; [.31DC.0020.0002.1184] # HANGUL JUNGSEONG YO-YA
-3187 ; [.31DC.0020.0004.3187] # HANGUL LETTER YO-YA
-1185 ; [.31DD.0020.0002.1185] # HANGUL JUNGSEONG YO-YAE
-3188 ; [.31DD.0020.0004.3188] # HANGUL LETTER YO-YAE
-1186 ; [.31DE.0020.0002.1186] # HANGUL JUNGSEONG YO-YEO
-1187 ; [.31DF.0020.0002.1187] # HANGUL JUNGSEONG YO-O
-1188 ; [.31E0.0020.0002.1188] # HANGUL JUNGSEONG YO-I
-3189 ; [.31E0.0020.0004.3189] # HANGUL LETTER YO-I
-1189 ; [.31E1.0020.0002.1189] # HANGUL JUNGSEONG U-A
-118A ; [.31E2.0020.0002.118A] # HANGUL JUNGSEONG U-AE
-118B ; [.31E3.0020.0002.118B] # HANGUL JUNGSEONG U-EO-EU
-118C ; [.31E4.0020.0002.118C] # HANGUL JUNGSEONG U-YE
-118D ; [.31E5.0020.0002.118D] # HANGUL JUNGSEONG U-U
-118E ; [.31E6.0020.0002.118E] # HANGUL JUNGSEONG YU-A
-118F ; [.31E7.0020.0002.118F] # HANGUL JUNGSEONG YU-EO
-1190 ; [.31E8.0020.0002.1190] # HANGUL JUNGSEONG YU-E
-1191 ; [.31E9.0020.0002.1191] # HANGUL JUNGSEONG YU-YEO
-318A ; [.31E9.0020.0004.318A] # HANGUL LETTER YU-YEO
-1192 ; [.31EA.0020.0002.1192] # HANGUL JUNGSEONG YU-YE
-318B ; [.31EA.0020.0004.318B] # HANGUL LETTER YU-YE
-1193 ; [.31EB.0020.0002.1193] # HANGUL JUNGSEONG YU-U
-1194 ; [.31EC.0020.0002.1194] # HANGUL JUNGSEONG YU-I
-318C ; [.31EC.0020.0004.318C] # HANGUL LETTER YU-I
-1195 ; [.31ED.0020.0002.1195] # HANGUL JUNGSEONG EU-U
-1196 ; [.31EE.0020.0002.1196] # HANGUL JUNGSEONG EU-EU
-1197 ; [.31EF.0020.0002.1197] # HANGUL JUNGSEONG YI-U
-1198 ; [.31F0.0020.0002.1198] # HANGUL JUNGSEONG I-A
-1199 ; [.31F1.0020.0002.1199] # HANGUL JUNGSEONG I-YA
-119A ; [.31F2.0020.0002.119A] # HANGUL JUNGSEONG I-O
-119B ; [.31F3.0020.0002.119B] # HANGUL JUNGSEONG I-U
-119C ; [.31F4.0020.0002.119C] # HANGUL JUNGSEONG I-EU
-119D ; [.31F5.0020.0002.119D] # HANGUL JUNGSEONG I-ARAEA
-119E ; [.31F6.0020.0002.119E] # HANGUL JUNGSEONG ARAEA
-318D ; [.31F6.0020.0004.318D] # HANGUL LETTER ARAEA
-119F ; [.31F7.0020.0002.119F] # HANGUL JUNGSEONG ARAEA-EO
-11A0 ; [.31F8.0020.0002.11A0] # HANGUL JUNGSEONG ARAEA-U
-11A1 ; [.31F9.0020.0002.11A1] # HANGUL JUNGSEONG ARAEA-I
-318E ; [.31F9.0020.0004.318E] # HANGUL LETTER ARAEAE
-11A2 ; [.31FA.0020.0002.11A2] # HANGUL JUNGSEONG SSANGARAEA
-11A3 ; [.31FB.0020.0002.11A3] # HANGUL JUNGSEONG A-EU
-11A4 ; [.31FC.0020.0002.11A4] # HANGUL JUNGSEONG YA-U
-11A5 ; [.31FD.0020.0002.11A5] # HANGUL JUNGSEONG YEO-YA
-11A6 ; [.31FE.0020.0002.11A6] # HANGUL JUNGSEONG O-YA
-11A7 ; [.31FF.0020.0002.11A7] # HANGUL JUNGSEONG O-YAE
-D7B0 ; [.3200.0020.0002.D7B0] # HANGUL JUNGSEONG O-YEO
-D7B1 ; [.3201.0020.0002.D7B1] # HANGUL JUNGSEONG O-O-I
-D7B2 ; [.3202.0020.0002.D7B2] # HANGUL JUNGSEONG YO-A
-D7B3 ; [.3203.0020.0002.D7B3] # HANGUL JUNGSEONG YO-AE
-D7B4 ; [.3204.0020.0002.D7B4] # HANGUL JUNGSEONG YO-EO
-D7B5 ; [.3205.0020.0002.D7B5] # HANGUL JUNGSEONG U-YEO
-D7B6 ; [.3206.0020.0002.D7B6] # HANGUL JUNGSEONG U-I-I
-D7B7 ; [.3207.0020.0002.D7B7] # HANGUL JUNGSEONG YU-AE
-D7B8 ; [.3208.0020.0002.D7B8] # HANGUL JUNGSEONG YU-O
-D7B9 ; [.3209.0020.0002.D7B9] # HANGUL JUNGSEONG EU-A
-D7BA ; [.320A.0020.0002.D7BA] # HANGUL JUNGSEONG EU-EO
-D7BB ; [.320B.0020.0002.D7BB] # HANGUL JUNGSEONG EU-E
-D7BC ; [.320C.0020.0002.D7BC] # HANGUL JUNGSEONG EU-O
-D7BD ; [.320D.0020.0002.D7BD] # HANGUL JUNGSEONG I-YA-O
-D7BE ; [.320E.0020.0002.D7BE] # HANGUL JUNGSEONG I-YAE
-D7BF ; [.320F.0020.0002.D7BF] # HANGUL JUNGSEONG I-YEO
-D7C0 ; [.3210.0020.0002.D7C0] # HANGUL JUNGSEONG I-YE
-D7C1 ; [.3211.0020.0002.D7C1] # HANGUL JUNGSEONG I-O-I
-D7C2 ; [.3212.0020.0002.D7C2] # HANGUL JUNGSEONG I-YO
-D7C3 ; [.3213.0020.0002.D7C3] # HANGUL JUNGSEONG I-YU
-D7C4 ; [.3214.0020.0002.D7C4] # HANGUL JUNGSEONG I-I
-D7C5 ; [.3215.0020.0002.D7C5] # HANGUL JUNGSEONG ARAEA-A
-D7C6 ; [.3216.0020.0002.D7C6] # HANGUL JUNGSEONG ARAEA-E
-11A8 ; [.3217.0020.0002.11A8] # HANGUL JONGSEONG KIYEOK
-11A9 ; [.3218.0020.0002.11A9] # HANGUL JONGSEONG SSANGKIYEOK
-11AA ; [.3219.0020.0002.11AA] # HANGUL JONGSEONG KIYEOK-SIOS
-3133 ; [.3219.0020.0004.3133] # HANGUL LETTER KIYEOK-SIOS
-FFA3 ; [.3219.0020.0012.FFA3] # HALFWIDTH HANGUL LETTER KIYEOK-SIOS
-11AB ; [.321A.0020.0002.11AB] # HANGUL JONGSEONG NIEUN
-11AC ; [.321B.0020.0002.11AC] # HANGUL JONGSEONG NIEUN-CIEUC
-3135 ; [.321B.0020.0004.3135] # HANGUL LETTER NIEUN-CIEUC
-FFA5 ; [.321B.0020.0012.FFA5] # HALFWIDTH HANGUL LETTER NIEUN-CIEUC
-11AD ; [.321C.0020.0002.11AD] # HANGUL JONGSEONG NIEUN-HIEUH
-3136 ; [.321C.0020.0004.3136] # HANGUL LETTER NIEUN-HIEUH
-FFA6 ; [.321C.0020.0012.FFA6] # HALFWIDTH HANGUL LETTER NIEUN-HIEUH
-11AE ; [.321D.0020.0002.11AE] # HANGUL JONGSEONG TIKEUT
-11AF ; [.321E.0020.0002.11AF] # HANGUL JONGSEONG RIEUL
-11B0 ; [.321F.0020.0002.11B0] # HANGUL JONGSEONG RIEUL-KIYEOK
-313A ; [.321F.0020.0004.313A] # HANGUL LETTER RIEUL-KIYEOK
-FFAA ; [.321F.0020.0012.FFAA] # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
-11B1 ; [.3220.0020.0002.11B1] # HANGUL JONGSEONG RIEUL-MIEUM
-313B ; [.3220.0020.0004.313B] # HANGUL LETTER RIEUL-MIEUM
-FFAB ; [.3220.0020.0012.FFAB] # HALFWIDTH HANGUL LETTER RIEUL-MIEUM
-11B2 ; [.3221.0020.0002.11B2] # HANGUL JONGSEONG RIEUL-PIEUP
-313C ; [.3221.0020.0004.313C] # HANGUL LETTER RIEUL-PIEUP
-FFAC ; [.3221.0020.0012.FFAC] # HALFWIDTH HANGUL LETTER RIEUL-PIEUP
-11B3 ; [.3222.0020.0002.11B3] # HANGUL JONGSEONG RIEUL-SIOS
-313D ; [.3222.0020.0004.313D] # HANGUL LETTER RIEUL-SIOS
-FFAD ; [.3222.0020.0012.FFAD] # HALFWIDTH HANGUL LETTER RIEUL-SIOS
-11B4 ; [.3223.0020.0002.11B4] # HANGUL JONGSEONG RIEUL-THIEUTH
-313E ; [.3223.0020.0004.313E] # HANGUL LETTER RIEUL-THIEUTH
-FFAE ; [.3223.0020.0012.FFAE] # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
-11B5 ; [.3224.0020.0002.11B5] # HANGUL JONGSEONG RIEUL-PHIEUPH
-313F ; [.3224.0020.0004.313F] # HANGUL LETTER RIEUL-PHIEUPH
-FFAF ; [.3224.0020.0012.FFAF] # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
-11B6 ; [.3225.0020.0002.11B6] # HANGUL JONGSEONG RIEUL-HIEUH
-11B7 ; [.3226.0020.0002.11B7] # HANGUL JONGSEONG MIEUM
-11B8 ; [.3227.0020.0002.11B8] # HANGUL JONGSEONG PIEUP
-11B9 ; [.3228.0020.0002.11B9] # HANGUL JONGSEONG PIEUP-SIOS
-11BA ; [.3229.0020.0002.11BA] # HANGUL JONGSEONG SIOS
-11BB ; [.322A.0020.0002.11BB] # HANGUL JONGSEONG SSANGSIOS
-11BC ; [.322B.0020.0002.11BC] # HANGUL JONGSEONG IEUNG
-11BD ; [.322C.0020.0002.11BD] # HANGUL JONGSEONG CIEUC
-11BE ; [.322D.0020.0002.11BE] # HANGUL JONGSEONG CHIEUCH
-11BF ; [.322E.0020.0002.11BF] # HANGUL JONGSEONG KHIEUKH
-11C0 ; [.322F.0020.0002.11C0] # HANGUL JONGSEONG THIEUTH
-11C1 ; [.3230.0020.0002.11C1] # HANGUL JONGSEONG PHIEUPH
-11C2 ; [.3231.0020.0002.11C2] # HANGUL JONGSEONG HIEUH
-11C3 ; [.3232.0020.0002.11C3] # HANGUL JONGSEONG KIYEOK-RIEUL
-11C4 ; [.3233.0020.0002.11C4] # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
-11C5 ; [.3234.0020.0002.11C5] # HANGUL JONGSEONG NIEUN-KIYEOK
-11C6 ; [.3235.0020.0002.11C6] # HANGUL JONGSEONG NIEUN-TIKEUT
-11C7 ; [.3236.0020.0002.11C7] # HANGUL JONGSEONG NIEUN-SIOS
-3167 ; [.3236.0020.0004.3167] # HANGUL LETTER NIEUN-SIOS
-11C8 ; [.3237.0020.0002.11C8] # HANGUL JONGSEONG NIEUN-PANSIOS
-3168 ; [.3237.0020.0004.3168] # HANGUL LETTER NIEUN-PANSIOS
-11C9 ; [.3238.0020.0002.11C9] # HANGUL JONGSEONG NIEUN-THIEUTH
-11CA ; [.3239.0020.0002.11CA] # HANGUL JONGSEONG TIKEUT-KIYEOK
-11CB ; [.323A.0020.0002.11CB] # HANGUL JONGSEONG TIKEUT-RIEUL
-11CC ; [.323B.0020.0002.11CC] # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
-3169 ; [.323B.0020.0004.3169] # HANGUL LETTER RIEUL-KIYEOK-SIOS
-11CD ; [.323C.0020.0002.11CD] # HANGUL JONGSEONG RIEUL-NIEUN
-11CE ; [.323D.0020.0002.11CE] # HANGUL JONGSEONG RIEUL-TIKEUT
-316A ; [.323D.0020.0004.316A] # HANGUL LETTER RIEUL-TIKEUT
-11CF ; [.323E.0020.0002.11CF] # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
-11D0 ; [.323F.0020.0002.11D0] # HANGUL JONGSEONG SSANGRIEUL
-11D1 ; [.3240.0020.0002.11D1] # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
-11D2 ; [.3241.0020.0002.11D2] # HANGUL JONGSEONG RIEUL-MIEUM-SIOS
-11D3 ; [.3242.0020.0002.11D3] # HANGUL JONGSEONG RIEUL-PIEUP-SIOS
-316B ; [.3242.0020.0004.316B] # HANGUL LETTER RIEUL-PIEUP-SIOS
-11D4 ; [.3243.0020.0002.11D4] # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
-11D5 ; [.3244.0020.0002.11D5] # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
-11D6 ; [.3245.0020.0002.11D6] # HANGUL JONGSEONG RIEUL-SSANGSIOS
-11D7 ; [.3246.0020.0002.11D7] # HANGUL JONGSEONG RIEUL-PANSIOS
-316C ; [.3246.0020.0004.316C] # HANGUL LETTER RIEUL-PANSIOS
-11D8 ; [.3247.0020.0002.11D8] # HANGUL JONGSEONG RIEUL-KHIEUKH
-11D9 ; [.3248.0020.0002.11D9] # HANGUL JONGSEONG RIEUL-YEORINHIEUH
-316D ; [.3248.0020.0004.316D] # HANGUL LETTER RIEUL-YEORINHIEUH
-11DA ; [.3249.0020.0002.11DA] # HANGUL JONGSEONG MIEUM-KIYEOK
-11DB ; [.324A.0020.0002.11DB] # HANGUL JONGSEONG MIEUM-RIEUL
-11DC ; [.324B.0020.0002.11DC] # HANGUL JONGSEONG MIEUM-PIEUP
-11DD ; [.324C.0020.0002.11DD] # HANGUL JONGSEONG MIEUM-SIOS
-316F ; [.324C.0020.0004.316F] # HANGUL LETTER MIEUM-SIOS
-11DE ; [.324D.0020.0002.11DE] # HANGUL JONGSEONG MIEUM-SSANGSIOS
-11DF ; [.324E.0020.0002.11DF] # HANGUL JONGSEONG MIEUM-PANSIOS
-3170 ; [.324E.0020.0004.3170] # HANGUL LETTER MIEUM-PANSIOS
-11E0 ; [.324F.0020.0002.11E0] # HANGUL JONGSEONG MIEUM-CHIEUCH
-11E1 ; [.3250.0020.0002.11E1] # HANGUL JONGSEONG MIEUM-HIEUH
-11E2 ; [.3251.0020.0002.11E2] # HANGUL JONGSEONG KAPYEOUNMIEUM
-11E3 ; [.3252.0020.0002.11E3] # HANGUL JONGSEONG PIEUP-RIEUL
-11E4 ; [.3253.0020.0002.11E4] # HANGUL JONGSEONG PIEUP-PHIEUPH
-11E5 ; [.3254.0020.0002.11E5] # HANGUL JONGSEONG PIEUP-HIEUH
-11E6 ; [.3255.0020.0002.11E6] # HANGUL JONGSEONG KAPYEOUNPIEUP
-11E7 ; [.3256.0020.0002.11E7] # HANGUL JONGSEONG SIOS-KIYEOK
-11E8 ; [.3257.0020.0002.11E8] # HANGUL JONGSEONG SIOS-TIKEUT
-11E9 ; [.3258.0020.0002.11E9] # HANGUL JONGSEONG SIOS-RIEUL
-11EA ; [.3259.0020.0002.11EA] # HANGUL JONGSEONG SIOS-PIEUP
-11EB ; [.325A.0020.0002.11EB] # HANGUL JONGSEONG PANSIOS
-11EC ; [.325B.0020.0002.11EC] # HANGUL JONGSEONG IEUNG-KIYEOK
-11ED ; [.325C.0020.0002.11ED] # HANGUL JONGSEONG IEUNG-SSANGKIYEOK
-11EE ; [.325D.0020.0002.11EE] # HANGUL JONGSEONG SSANGIEUNG
-11EF ; [.325E.0020.0002.11EF] # HANGUL JONGSEONG IEUNG-KHIEUKH
-11F0 ; [.325F.0020.0002.11F0] # HANGUL JONGSEONG YESIEUNG
-11F1 ; [.3260.0020.0002.11F1] # HANGUL JONGSEONG YESIEUNG-SIOS
-3182 ; [.3260.0020.0004.3182] # HANGUL LETTER YESIEUNG-SIOS
-11F2 ; [.3261.0020.0002.11F2] # HANGUL JONGSEONG YESIEUNG-PANSIOS
-3183 ; [.3261.0020.0004.3183] # HANGUL LETTER YESIEUNG-PANSIOS
-11F3 ; [.3262.0020.0002.11F3] # HANGUL JONGSEONG PHIEUPH-PIEUP
-11F4 ; [.3263.0020.0002.11F4] # HANGUL JONGSEONG KAPYEOUNPHIEUPH
-11F5 ; [.3264.0020.0002.11F5] # HANGUL JONGSEONG HIEUH-NIEUN
-11F6 ; [.3265.0020.0002.11F6] # HANGUL JONGSEONG HIEUH-RIEUL
-11F7 ; [.3266.0020.0002.11F7] # HANGUL JONGSEONG HIEUH-MIEUM
-11F8 ; [.3267.0020.0002.11F8] # HANGUL JONGSEONG HIEUH-PIEUP
-11F9 ; [.3268.0020.0002.11F9] # HANGUL JONGSEONG YEORINHIEUH
-11FA ; [.3269.0020.0002.11FA] # HANGUL JONGSEONG KIYEOK-NIEUN
-11FB ; [.326A.0020.0002.11FB] # HANGUL JONGSEONG KIYEOK-PIEUP
-11FC ; [.326B.0020.0002.11FC] # HANGUL JONGSEONG KIYEOK-CHIEUCH
-11FD ; [.326C.0020.0002.11FD] # HANGUL JONGSEONG KIYEOK-KHIEUKH
-11FE ; [.326D.0020.0002.11FE] # HANGUL JONGSEONG KIYEOK-HIEUH
-11FF ; [.326E.0020.0002.11FF] # HANGUL JONGSEONG SSANGNIEUN
-D7CB ; [.326F.0020.0002.D7CB] # HANGUL JONGSEONG NIEUN-RIEUL
-D7CC ; [.3270.0020.0002.D7CC] # HANGUL JONGSEONG NIEUN-CHIEUCH
-D7CD ; [.3271.0020.0002.D7CD] # HANGUL JONGSEONG SSANGTIKEUT
-D7CE ; [.3272.0020.0002.D7CE] # HANGUL JONGSEONG SSANGTIKEUT-PIEUP
-D7CF ; [.3273.0020.0002.D7CF] # HANGUL JONGSEONG TIKEUT-PIEUP
-D7D0 ; [.3274.0020.0002.D7D0] # HANGUL JONGSEONG TIKEUT-SIOS
-D7D1 ; [.3275.0020.0002.D7D1] # HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK
-D7D2 ; [.3276.0020.0002.D7D2] # HANGUL JONGSEONG TIKEUT-CIEUC
-D7D3 ; [.3277.0020.0002.D7D3] # HANGUL JONGSEONG TIKEUT-CHIEUCH
-D7D4 ; [.3278.0020.0002.D7D4] # HANGUL JONGSEONG TIKEUT-THIEUTH
-D7D5 ; [.3279.0020.0002.D7D5] # HANGUL JONGSEONG RIEUL-SSANGKIYEOK
-D7D6 ; [.327A.0020.0002.D7D6] # HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH
-D7D7 ; [.327B.0020.0002.D7D7] # HANGUL JONGSEONG SSANGRIEUL-KHIEUKH
-D7D8 ; [.327C.0020.0002.D7D8] # HANGUL JONGSEONG RIEUL-MIEUM-HIEUH
-D7D9 ; [.327D.0020.0002.D7D9] # HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT
-D7DA ; [.327E.0020.0002.D7DA] # HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH
-D7DB ; [.327F.0020.0002.D7DB] # HANGUL JONGSEONG RIEUL-YESIEUNG
-D7DC ; [.3280.0020.0002.D7DC] # HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH
-D7DD ; [.3281.0020.0002.D7DD] # HANGUL JONGSEONG KAPYEOUNRIEUL
-D7DE ; [.3282.0020.0002.D7DE] # HANGUL JONGSEONG MIEUM-NIEUN
-D7DF ; [.3283.0020.0002.D7DF] # HANGUL JONGSEONG MIEUM-SSANGNIEUN
-D7E0 ; [.3284.0020.0002.D7E0] # HANGUL JONGSEONG SSANGMIEUM
-D7E1 ; [.3285.0020.0002.D7E1] # HANGUL JONGSEONG MIEUM-PIEUP-SIOS
-D7E2 ; [.3286.0020.0002.D7E2] # HANGUL JONGSEONG MIEUM-CIEUC
-D7E3 ; [.3287.0020.0002.D7E3] # HANGUL JONGSEONG PIEUP-TIKEUT
-D7E4 ; [.3288.0020.0002.D7E4] # HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH
-D7E5 ; [.3289.0020.0002.D7E5] # HANGUL JONGSEONG PIEUP-MIEUM
-D7E6 ; [.328A.0020.0002.D7E6] # HANGUL JONGSEONG SSANGPIEUP
-D7E7 ; [.328B.0020.0002.D7E7] # HANGUL JONGSEONG PIEUP-SIOS-TIKEUT
-D7E8 ; [.328C.0020.0002.D7E8] # HANGUL JONGSEONG PIEUP-CIEUC
-D7E9 ; [.328D.0020.0002.D7E9] # HANGUL JONGSEONG PIEUP-CHIEUCH
-D7EA ; [.328E.0020.0002.D7EA] # HANGUL JONGSEONG SIOS-MIEUM
-D7EB ; [.328F.0020.0002.D7EB] # HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP
-D7EC ; [.3290.0020.0002.D7EC] # HANGUL JONGSEONG SSANGSIOS-KIYEOK
-D7ED ; [.3291.0020.0002.D7ED] # HANGUL JONGSEONG SSANGSIOS-TIKEUT
-D7EE ; [.3292.0020.0002.D7EE] # HANGUL JONGSEONG SIOS-PANSIOS
-D7EF ; [.3293.0020.0002.D7EF] # HANGUL JONGSEONG SIOS-CIEUC
-D7F0 ; [.3294.0020.0002.D7F0] # HANGUL JONGSEONG SIOS-CHIEUCH
-D7F1 ; [.3295.0020.0002.D7F1] # HANGUL JONGSEONG SIOS-THIEUTH
-D7F2 ; [.3296.0020.0002.D7F2] # HANGUL JONGSEONG SIOS-HIEUH
-D7F3 ; [.3297.0020.0002.D7F3] # HANGUL JONGSEONG PANSIOS-PIEUP
-D7F4 ; [.3298.0020.0002.D7F4] # HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP
-D7F5 ; [.3299.0020.0002.D7F5] # HANGUL JONGSEONG YESIEUNG-MIEUM
-D7F6 ; [.329A.0020.0002.D7F6] # HANGUL JONGSEONG YESIEUNG-HIEUH
-D7F7 ; [.329B.0020.0002.D7F7] # HANGUL JONGSEONG CIEUC-PIEUP
-D7F8 ; [.329C.0020.0002.D7F8] # HANGUL JONGSEONG CIEUC-SSANGPIEUP
-D7F9 ; [.329D.0020.0002.D7F9] # HANGUL JONGSEONG SSANGCIEUC
-D7FA ; [.329E.0020.0002.D7FA] # HANGUL JONGSEONG PHIEUPH-SIOS
-D7FB ; [.329F.0020.0002.D7FB] # HANGUL JONGSEONG PHIEUPH-THIEUTH
-3041 ; [.32A0.0020.000D.3041] # HIRAGANA LETTER SMALL A
-3042 ; [.32A0.0020.000E.3042] # HIRAGANA LETTER A
-30A1 ; [.32A0.0020.000F.30A1] # KATAKANA LETTER SMALL A
-FF67 ; [.32A0.0020.0010.FF67] # HALFWIDTH KATAKANA LETTER SMALL A
-30A2 ; [.32A0.0020.0011.30A2] # KATAKANA LETTER A
-FF71 ; [.32A0.0020.0012.FF71] # HALFWIDTH KATAKANA LETTER A
-32D0 ; [.32A0.0020.0013.32D0] # CIRCLED KATAKANA A
-3303 ; [.32A0.0020.001C.3303][.15A0.0020.001C.3303][.32CA.0020.001F.3303] # SQUARE AARU
-3300 ; [.32A0.0020.001C.3300][.32BA.0020.001C.3300][.0000.0129.001F.3300][.15A0.0020.001F.3300][.32B4.0020.001F.3300] # SQUARE APAATO
-3301 ; [.32A0.0020.001C.3301][.32CA.0020.001C.3301][.32BC.0020.001F.3301][.32A0.0020.001F.3301] # SQUARE ARUHUA
-3302 ; [.32A0.0020.001C.3302][.32D1.0020.001C.3302][.32BD.0020.001F.3302][.0000.0129.001F.3302][.32A0.0020.001F.3302] # SQUARE ANPEA
-3043 ; [.32A1.0020.000D.3043] # HIRAGANA LETTER SMALL I
-3044 ; [.32A1.0020.000E.3044] # HIRAGANA LETTER I
-30A3 ; [.32A1.0020.000F.30A3] # KATAKANA LETTER SMALL I
-FF68 ; [.32A1.0020.0010.FF68] # HALFWIDTH KATAKANA LETTER SMALL I
-30A4 ; [.32A1.0020.0011.30A4] # KATAKANA LETTER I
-FF72 ; [.32A1.0020.0012.FF72] # HALFWIDTH KATAKANA LETTER I
-32D1 ; [.32A1.0020.0013.32D1] # CIRCLED KATAKANA I
-3304 ; [.32A1.0020.001C.3304][.32B6.0020.001C.3304][.32D1.0020.001F.3304][.32A8.0020.001F.3304][.0000.0128.001F.3304] # SQUARE ININGU
-3305 ; [.32A1.0020.001C.3305][.32D1.0020.001C.3305][.32B1.0020.001F.3305] # SQUARE INTI
-3045 ; [.32A2.0020.000D.3045] # HIRAGANA LETTER SMALL U
-3046 ; [.32A2.0020.000E.3046] # HIRAGANA LETTER U
-30A5 ; [.32A2.0020.000F.30A5] # KATAKANA LETTER SMALL U
-FF69 ; [.32A2.0020.0010.FF69] # HALFWIDTH KATAKANA LETTER SMALL U
-30A6 ; [.32A2.0020.0011.30A6] # KATAKANA LETTER U
-FF73 ; [.32A2.0020.0012.FF73] # HALFWIDTH KATAKANA LETTER U
-32D2 ; [.32A2.0020.0013.32D2] # CIRCLED KATAKANA U
-3094 ; [.32A2.0020.000E.3046][.0000.0128.0002.3099] # HIRAGANA LETTER VU
-30F4 ; [.32A2.0020.0011.30A6][.0000.0128.0002.3099] # KATAKANA LETTER VU
-3306 ; [.32A2.0020.001C.3306][.32A5.0020.001C.3306][.32D1.0020.001F.3306] # SQUARE UON
-1B000 ; [.32A3.0020.0002.1B000] # KATAKANA LETTER ARCHAIC E
-3047 ; [.32A4.0020.000D.3047] # HIRAGANA LETTER SMALL E
-3048 ; [.32A4.0020.000E.3048] # HIRAGANA LETTER E
-30A7 ; [.32A4.0020.000F.30A7] # KATAKANA LETTER SMALL E
-FF6A ; [.32A4.0020.0010.FF6A] # HALFWIDTH KATAKANA LETTER SMALL E
-30A8 ; [.32A4.0020.0011.30A8] # KATAKANA LETTER E
-FF74 ; [.32A4.0020.0012.FF74] # HALFWIDTH KATAKANA LETTER E
-32D3 ; [.32A4.0020.0013.32D3] # CIRCLED KATAKANA E
-3308 ; [.32A4.0020.001C.3308][.15A0.0020.001C.3308][.32A6.0020.001F.3308][.15A0.0020.001F.3308] # SQUARE EEKAA
-3307 ; [.32A4.0020.001C.3307][.32AD.0020.001C.3307][.32A8.0020.001F.3307][.15A0.0020.001F.3307][.32B4.0020.001F.3307][.0000.0128.001F.3307] # SQUARE ESUKUUDO
-3049 ; [.32A5.0020.000D.3049] # HIRAGANA LETTER SMALL O
-304A ; [.32A5.0020.000E.304A] # HIRAGANA LETTER O
-30A9 ; [.32A5.0020.000F.30A9] # KATAKANA LETTER SMALL O
-FF6B ; [.32A5.0020.0010.FF6B] # HALFWIDTH KATAKANA LETTER SMALL O
-30AA ; [.32A5.0020.0011.30AA] # KATAKANA LETTER O
-FF75 ; [.32A5.0020.0012.FF75] # HALFWIDTH KATAKANA LETTER O
-32D4 ; [.32A5.0020.0013.32D4] # CIRCLED KATAKANA O
-330A ; [.32A5.0020.001C.330A][.15A0.0020.001C.330A][.32C1.0020.001F.330A] # SQUARE OOMU
-3309 ; [.32A5.0020.001C.3309][.32D1.0020.001C.3309][.32AD.0020.001F.3309] # SQUARE ONSU
-3095 ; [.32A6.0020.000D.3095] # HIRAGANA LETTER SMALL KA
-304B ; [.32A6.0020.000E.304B] # HIRAGANA LETTER KA
-30F5 ; [.32A6.0020.000F.30F5] # KATAKANA LETTER SMALL KA
-30AB ; [.32A6.0020.0011.30AB] # KATAKANA LETTER KA
-FF76 ; [.32A6.0020.0012.FF76] # HALFWIDTH KATAKANA LETTER KA
-32D5 ; [.32A6.0020.0013.32D5] # CIRCLED KATAKANA KA
-304C ; [.32A6.0020.000E.304B][.0000.0128.0002.3099] # HIRAGANA LETTER GA
-30AC ; [.32A6.0020.0011.30AB][.0000.0128.0002.3099] # KATAKANA LETTER GA
-330B ; [.32A6.0020.001C.330B][.32A1.0020.001C.330B][.32C9.0020.001F.330B] # SQUARE KAIRI
-330C ; [.32A6.0020.001C.330C][.32C8.0020.001C.330C][.32B2.0020.001F.330C][.32B4.0020.001F.330C] # SQUARE KARATTO
-330D ; [.32A6.0020.001C.330D][.32CC.0020.001C.330D][.32C9.0020.001F.330D][.15A0.0020.001F.330D] # SQUARE KARORII
-330E ; [.32A6.0020.001C.330E][.0000.0128.001C.330E][.32CC.0020.001F.330E][.32D1.0020.001F.330E] # SQUARE GARON
-330F ; [.32A6.0020.001C.330F][.0000.0128.001C.330F][.32D1.0020.001F.330F][.32BF.0020.001F.330F] # SQUARE GANMA
-304D ; [.32A7.0020.000E.304D] # HIRAGANA LETTER KI
-30AD ; [.32A7.0020.0011.30AD] # KATAKANA LETTER KI
-FF77 ; [.32A7.0020.0012.FF77] # HALFWIDTH KATAKANA LETTER KI
-32D6 ; [.32A7.0020.0013.32D6] # CIRCLED KATAKANA KI
-304E ; [.32A7.0020.000E.304D][.0000.0128.0002.3099] # HIRAGANA LETTER GI
-30AE ; [.32A7.0020.0011.30AD][.0000.0128.0002.3099] # KATAKANA LETTER GI
-3310 ; [.32A7.0020.001C.3310][.0000.0128.001C.3310][.32A6.0020.001F.3310][.0000.0128.001F.3310] # SQUARE GIGA
-3311 ; [.32A7.0020.001C.3311][.0000.0128.001C.3311][.32B6.0020.001F.3311][.15A0.0020.001F.3311] # SQUARE GINII
-3312 ; [.32A7.0020.001C.3312][.32C5.0020.001C.3312][.32C9.0020.001F.3312][.15A0.0020.001F.3312] # SQUARE KYURII
-3313 ; [.32A7.0020.001C.3313][.0000.0128.001C.3313][.32CA.0020.001F.3313][.32B0.0020.001F.3313][.0000.0128.001F.3313][.15A0.0020.001F.3313] # SQUARE GIRUDAA
-3314 ; [.32A7.0020.001C.3314][.32CC.0020.001C.3314] # SQUARE KIRO
-3315 ; [.32A7.0020.001C.3315][.32CC.0020.001C.3315][.32A8.0020.001F.3315][.0000.0128.001F.3315][.32C8.0020.001F.3315][.32C1.0020.001F.3315] # SQUARE KIROGURAMU
-3316 ; [.32A7.0020.001C.3316][.32CC.0020.001C.3316][.32C2.0020.001F.3316][.15A0.0020.001F.3316][.32B4.0020.001F.3316][.32CA.0020.001F.3316] # SQUARE KIROMEETORU
-3317 ; [.32A7.0020.001C.3317][.32CC.0020.001C.3317][.32CD.0020.001F.3317][.32B2.0020.001F.3317][.32B4.0020.001F.3317] # SQUARE KIROWATTO
-304F ; [.32A8.0020.000E.304F] # HIRAGANA LETTER KU
-31F0 ; [.32A8.0020.000F.31F0] # KATAKANA LETTER SMALL KU
-30AF ; [.32A8.0020.0011.30AF] # KATAKANA LETTER KU
-FF78 ; [.32A8.0020.0012.FF78] # HALFWIDTH KATAKANA LETTER KU
-32D7 ; [.32A8.0020.0013.32D7] # CIRCLED KATAKANA KU
-3050 ; [.32A8.0020.000E.304F][.0000.0128.0002.3099] # HIRAGANA LETTER GU
-30B0 ; [.32A8.0020.0011.30AF][.0000.0128.0002.3099] # KATAKANA LETTER GU
-3318 ; [.32A8.0020.001C.3318][.0000.0128.001C.3318][.32C8.0020.001F.3318][.32C1.0020.001F.3318] # SQUARE GURAMU
-3319 ; [.32A8.0020.001C.3319][.0000.0128.001C.3319][.32C8.0020.001F.3319][.32C1.0020.001F.3319][.32B4.0020.001F.3319][.32D1.0020.001F.3319] # SQUARE GURAMUTON
-331A ; [.32A8.0020.001C.331A][.32CA.0020.001C.331A][.32AE.0020.001F.331A][.0000.0128.001F.331A][.32A1.0020.001F.331A][.32CC.0020.001F.331A] # SQUARE KURUZEIRO
-331B ; [.32A8.0020.001C.331B][.32CC.0020.001C.331B][.15A0.0020.001F.331B][.32B8.0020.001F.331B] # SQUARE KUROONE
-3096 ; [.32A9.0020.000D.3096] # HIRAGANA LETTER SMALL KE
-3051 ; [.32A9.0020.000E.3051] # HIRAGANA LETTER KE
-30F6 ; [.32A9.0020.000F.30F6] # KATAKANA LETTER SMALL KE
-30B1 ; [.32A9.0020.0011.30B1] # KATAKANA LETTER KE
-FF79 ; [.32A9.0020.0012.FF79] # HALFWIDTH KATAKANA LETTER KE
-32D8 ; [.32A9.0020.0013.32D8] # CIRCLED KATAKANA KE
-3052 ; [.32A9.0020.000E.3051][.0000.0128.0002.3099] # HIRAGANA LETTER GE
-30B2 ; [.32A9.0020.0011.30B1][.0000.0128.0002.3099] # KATAKANA LETTER GE
-331C ; [.32A9.0020.001C.331C][.15A0.0020.001C.331C][.32AD.0020.001F.331C] # SQUARE KEESU
-3053 ; [.32AA.0020.000E.3053] # HIRAGANA LETTER KO
-30B3 ; [.32AA.0020.0011.30B3] # KATAKANA LETTER KO
-FF7A ; [.32AA.0020.0012.FF7A] # HALFWIDTH KATAKANA LETTER KO
-32D9 ; [.32AA.0020.0013.32D9] # CIRCLED KATAKANA KO
-3054 ; [.32AA.0020.000E.3053][.0000.0128.0002.3099] # HIRAGANA LETTER GO
-30B4 ; [.32AA.0020.0011.30B3][.0000.0128.0002.3099] # KATAKANA LETTER GO
-331E ; [.32AA.0020.001C.331E][.15A0.0020.001C.331E][.32BE.0020.001F.331E][.0000.0129.001F.331E] # SQUARE KOOPO
-1F201 ; [.32AA.0020.001C.1F201][.32AA.0020.001C.1F201] # SQUARED KATAKANA KOKO
-30FF ; [.32AA.0020.0016.30FF][.32B4.0020.0016.30FF] # KATAKANA DIGRAPH KOTO
-331D ; [.32AA.0020.001C.331D][.32CA.0020.001C.331D][.32B5.0020.001F.331D] # SQUARE KORUNA
-3055 ; [.32AB.0020.000E.3055] # HIRAGANA LETTER SA
-30B5 ; [.32AB.0020.0011.30B5] # KATAKANA LETTER SA
-FF7B ; [.32AB.0020.0012.FF7B] # HALFWIDTH KATAKANA LETTER SA
-32DA ; [.32AB.0020.0013.32DA] # CIRCLED KATAKANA SA
-1F202 ; [.32AB.0020.001C.1F202] # SQUARED KATAKANA SA
-3056 ; [.32AB.0020.000E.3055][.0000.0128.0002.3099] # HIRAGANA LETTER ZA
-30B6 ; [.32AB.0020.0011.30B5][.0000.0128.0002.3099] # KATAKANA LETTER ZA
-331F ; [.32AB.0020.001C.331F][.32A1.0020.001C.331F][.32A8.0020.001F.331F][.32CA.0020.001F.331F] # SQUARE SAIKURU
-3320 ; [.32AB.0020.001C.3320][.32D1.0020.001C.3320][.32B1.0020.001F.3320][.15A0.0020.001F.3320][.32C1.0020.001F.3320] # SQUARE SANTIIMU
-3057 ; [.32AC.0020.000E.3057] # HIRAGANA LETTER SI
-31F1 ; [.32AC.0020.000F.31F1] # KATAKANA LETTER SMALL SI
-30B7 ; [.32AC.0020.0011.30B7] # KATAKANA LETTER SI
-FF7C ; [.32AC.0020.0012.FF7C] # HALFWIDTH KATAKANA LETTER SI
-32DB ; [.32AC.0020.0013.32DB] # CIRCLED KATAKANA SI
-3058 ; [.32AC.0020.000E.3057][.0000.0128.0002.3099] # HIRAGANA LETTER ZI
-30B8 ; [.32AC.0020.0011.30B7][.0000.0128.0002.3099] # KATAKANA LETTER ZI
-3006 ; [.32AC.0020.0004.3006][.32C2.0020.0004.3006] # IDEOGRAPHIC CLOSING MARK
-3321 ; [.32AC.0020.001C.3321][.32C9.0020.001C.3321][.32D1.0020.001F.3321][.32A8.0020.001F.3321][.0000.0128.001F.3321] # SQUARE SIRINGU
-3059 ; [.32AD.0020.000E.3059] # HIRAGANA LETTER SU
-31F2 ; [.32AD.0020.000F.31F2] # KATAKANA LETTER SMALL SU
-30B9 ; [.32AD.0020.0011.30B9] # KATAKANA LETTER SU
-FF7D ; [.32AD.0020.0012.FF7D] # HALFWIDTH KATAKANA LETTER SU
-32DC ; [.32AD.0020.0013.32DC] # CIRCLED KATAKANA SU
-305A ; [.32AD.0020.000E.3059][.0000.0128.0002.3099] # HIRAGANA LETTER ZU
-30BA ; [.32AD.0020.0011.30B9][.0000.0128.0002.3099] # KATAKANA LETTER ZU
-305B ; [.32AE.0020.000E.305B] # HIRAGANA LETTER SE
-30BB ; [.32AE.0020.0011.30BB] # KATAKANA LETTER SE
-FF7E ; [.32AE.0020.0012.FF7E] # HALFWIDTH KATAKANA LETTER SE
-32DD ; [.32AE.0020.0013.32DD] # CIRCLED KATAKANA SE
-305C ; [.32AE.0020.000E.305B][.0000.0128.0002.3099] # HIRAGANA LETTER ZE
-30BC ; [.32AE.0020.0011.30BB][.0000.0128.0002.3099] # KATAKANA LETTER ZE
-3322 ; [.32AE.0020.001C.3322][.32D1.0020.001C.3322][.32B1.0020.001F.3322] # SQUARE SENTI
-3323 ; [.32AE.0020.001C.3323][.32D1.0020.001C.3323][.32B4.0020.001F.3323] # SQUARE SENTO
-305D ; [.32AF.0020.000E.305D] # HIRAGANA LETTER SO
-30BD ; [.32AF.0020.0011.30BD] # KATAKANA LETTER SO
-FF7F ; [.32AF.0020.0012.FF7F] # HALFWIDTH KATAKANA LETTER SO
-32DE ; [.32AF.0020.0013.32DE] # CIRCLED KATAKANA SO
-305E ; [.32AF.0020.000E.305D][.0000.0128.0002.3099] # HIRAGANA LETTER ZO
-30BE ; [.32AF.0020.0011.30BD][.0000.0128.0002.3099] # KATAKANA LETTER ZO
-305F ; [.32B0.0020.000E.305F] # HIRAGANA LETTER TA
-30BF ; [.32B0.0020.0011.30BF] # KATAKANA LETTER TA
-FF80 ; [.32B0.0020.0012.FF80] # HALFWIDTH KATAKANA LETTER TA
-32DF ; [.32B0.0020.0013.32DF] # CIRCLED KATAKANA TA
-3060 ; [.32B0.0020.000E.305F][.0000.0128.0002.3099] # HIRAGANA LETTER DA
-30C0 ; [.32B0.0020.0011.30BF][.0000.0128.0002.3099] # KATAKANA LETTER DA
-3324 ; [.32B0.0020.001C.3324][.0000.0128.001C.3324][.15A0.0020.001F.3324][.32AD.0020.001F.3324] # SQUARE DAASU
-3061 ; [.32B1.0020.000E.3061] # HIRAGANA LETTER TI
-30C1 ; [.32B1.0020.0011.30C1] # KATAKANA LETTER TI
-FF81 ; [.32B1.0020.0012.FF81] # HALFWIDTH KATAKANA LETTER TI
-32E0 ; [.32B1.0020.0013.32E0] # CIRCLED KATAKANA TI
-3062 ; [.32B1.0020.000E.3061][.0000.0128.0002.3099] # HIRAGANA LETTER DI
-30C2 ; [.32B1.0020.0011.30C1][.0000.0128.0002.3099] # KATAKANA LETTER DI
-3063 ; [.32B2.0020.000D.3063] # HIRAGANA LETTER SMALL TU
-3064 ; [.32B2.0020.000E.3064] # HIRAGANA LETTER TU
-30C3 ; [.32B2.0020.000F.30C3] # KATAKANA LETTER SMALL TU
-FF6F ; [.32B2.0020.0010.FF6F] # HALFWIDTH KATAKANA LETTER SMALL TU
-30C4 ; [.32B2.0020.0011.30C4] # KATAKANA LETTER TU
-FF82 ; [.32B2.0020.0012.FF82] # HALFWIDTH KATAKANA LETTER TU
-32E1 ; [.32B2.0020.0013.32E1] # CIRCLED KATAKANA TU
-3065 ; [.32B2.0020.000E.3064][.0000.0128.0002.3099] # HIRAGANA LETTER DU
-30C5 ; [.32B2.0020.0011.30C4][.0000.0128.0002.3099] # KATAKANA LETTER DU
-3066 ; [.32B3.0020.000E.3066] # HIRAGANA LETTER TE
-30C6 ; [.32B3.0020.0011.30C6] # KATAKANA LETTER TE
-FF83 ; [.32B3.0020.0012.FF83] # HALFWIDTH KATAKANA LETTER TE
-32E2 ; [.32B3.0020.0013.32E2] # CIRCLED KATAKANA TE
-3067 ; [.32B3.0020.000E.3066][.0000.0128.0002.3099] # HIRAGANA LETTER DE
-30C7 ; [.32B3.0020.0011.30C6][.0000.0128.0002.3099] # KATAKANA LETTER DE
-1F213 ; [.32B3.0020.001C.1F213][.0000.0128.001C.1F213] # SQUARED KATAKANA DE
-3325 ; [.32B3.0020.001C.3325][.0000.0128.001C.3325][.32AC.0020.001F.3325] # SQUARE DESI
-3068 ; [.32B4.0020.000E.3068] # HIRAGANA LETTER TO
-31F3 ; [.32B4.0020.000F.31F3] # KATAKANA LETTER SMALL TO
-30C8 ; [.32B4.0020.0011.30C8] # KATAKANA LETTER TO
-FF84 ; [.32B4.0020.0012.FF84] # HALFWIDTH KATAKANA LETTER TO
-32E3 ; [.32B4.0020.0013.32E3] # CIRCLED KATAKANA TO
-3069 ; [.32B4.0020.000E.3068][.0000.0128.0002.3099] # HIRAGANA LETTER DO
-30C9 ; [.32B4.0020.0011.30C8][.0000.0128.0002.3099] # KATAKANA LETTER DO
-3326 ; [.32B4.0020.001C.3326][.0000.0128.001C.3326][.32CA.0020.001F.3326] # SQUARE DORU
-3327 ; [.32B4.0020.001C.3327][.32D1.0020.001C.3327] # SQUARE TON
-306A ; [.32B5.0020.000E.306A] # HIRAGANA LETTER NA
-30CA ; [.32B5.0020.0011.30CA] # KATAKANA LETTER NA
-FF85 ; [.32B5.0020.0012.FF85] # HALFWIDTH KATAKANA LETTER NA
-32E4 ; [.32B5.0020.0013.32E4] # CIRCLED KATAKANA NA
-3328 ; [.32B5.0020.001C.3328][.32B9.0020.001C.3328] # SQUARE NANO
-306B ; [.32B6.0020.000E.306B] # HIRAGANA LETTER NI
-30CB ; [.32B6.0020.0011.30CB] # KATAKANA LETTER NI
-FF86 ; [.32B6.0020.0012.FF86] # HALFWIDTH KATAKANA LETTER NI
-32E5 ; [.32B6.0020.0013.32E5] # CIRCLED KATAKANA NI
-306C ; [.32B7.0020.000E.306C] # HIRAGANA LETTER NU
-31F4 ; [.32B7.0020.000F.31F4] # KATAKANA LETTER SMALL NU
-30CC ; [.32B7.0020.0011.30CC] # KATAKANA LETTER NU
-FF87 ; [.32B7.0020.0012.FF87] # HALFWIDTH KATAKANA LETTER NU
-32E6 ; [.32B7.0020.0013.32E6] # CIRCLED KATAKANA NU
-306D ; [.32B8.0020.000E.306D] # HIRAGANA LETTER NE
-30CD ; [.32B8.0020.0011.30CD] # KATAKANA LETTER NE
-FF88 ; [.32B8.0020.0012.FF88] # HALFWIDTH KATAKANA LETTER NE
-32E7 ; [.32B8.0020.0013.32E7] # CIRCLED KATAKANA NE
-306E ; [.32B9.0020.000E.306E] # HIRAGANA LETTER NO
-30CE ; [.32B9.0020.0011.30CE] # KATAKANA LETTER NO
-FF89 ; [.32B9.0020.0012.FF89] # HALFWIDTH KATAKANA LETTER NO
-32E8 ; [.32B9.0020.0013.32E8] # CIRCLED KATAKANA NO
-3329 ; [.32B9.0020.001C.3329][.32B2.0020.001C.3329][.32B4.0020.001F.3329] # SQUARE NOTTO
-306F ; [.32BA.0020.000E.306F] # HIRAGANA LETTER HA
-31F5 ; [.32BA.0020.000F.31F5] # KATAKANA LETTER SMALL HA
-30CF ; [.32BA.0020.0011.30CF] # KATAKANA LETTER HA
-FF8A ; [.32BA.0020.0012.FF8A] # HALFWIDTH KATAKANA LETTER HA
-32E9 ; [.32BA.0020.0013.32E9] # CIRCLED KATAKANA HA
-3070 ; [.32BA.0020.000E.306F][.0000.0128.0002.3099] # HIRAGANA LETTER BA
-30D0 ; [.32BA.0020.0011.30CF][.0000.0128.0002.3099] # KATAKANA LETTER BA
-3071 ; [.32BA.0020.000E.306F][.0000.0129.0002.309A] # HIRAGANA LETTER PA
-30D1 ; [.32BA.0020.0011.30CF][.0000.0129.0002.309A] # KATAKANA LETTER PA
-332B ; [.32BA.0020.001C.332B][.0000.0129.001C.332B][.15A0.0020.001F.332B][.32AE.0020.001F.332B][.32D1.0020.001F.332B][.32B4.0020.001F.332B] # SQUARE PAASENTO
-332C ; [.32BA.0020.001C.332C][.0000.0129.001C.332C][.15A0.0020.001F.332C][.32B2.0020.001F.332C] # SQUARE PAATU
-332D ; [.32BA.0020.001C.332D][.0000.0128.001C.332D][.15A0.0020.001F.332D][.32CB.0020.001F.332D][.32CA.0020.001F.332D] # SQUARE BAARERU
-332A ; [.32BA.0020.001C.332A][.32A1.0020.001C.332A][.32B2.0020.001F.332A] # SQUARE HAITU
-3072 ; [.32BB.0020.000E.3072] # HIRAGANA LETTER HI
-31F6 ; [.32BB.0020.000F.31F6] # KATAKANA LETTER SMALL HI
-30D2 ; [.32BB.0020.0011.30D2] # KATAKANA LETTER HI
-FF8B ; [.32BB.0020.0012.FF8B] # HALFWIDTH KATAKANA LETTER HI
-32EA ; [.32BB.0020.0013.32EA] # CIRCLED KATAKANA HI
-3073 ; [.32BB.0020.000E.3072][.0000.0128.0002.3099] # HIRAGANA LETTER BI
-30D3 ; [.32BB.0020.0011.30D2][.0000.0128.0002.3099] # KATAKANA LETTER BI
-3074 ; [.32BB.0020.000E.3072][.0000.0129.0002.309A] # HIRAGANA LETTER PI
-30D4 ; [.32BB.0020.0011.30D2][.0000.0129.0002.309A] # KATAKANA LETTER PI
-332E ; [.32BB.0020.001C.332E][.0000.0129.001C.332E][.32A0.0020.001F.332E][.32AD.0020.001F.332E][.32B4.0020.001F.332E][.32CA.0020.001F.332E] # SQUARE PIASUTORU
-332F ; [.32BB.0020.001C.332F][.0000.0129.001C.332F][.32A8.0020.001F.332F][.32CA.0020.001F.332F] # SQUARE PIKURU
-3330 ; [.32BB.0020.001C.3330][.0000.0129.001C.3330][.32AA.0020.001F.3330] # SQUARE PIKO
-3331 ; [.32BB.0020.001C.3331][.0000.0128.001C.3331][.32CA.0020.001F.3331] # SQUARE BIRU
-3075 ; [.32BC.0020.000E.3075] # HIRAGANA LETTER HU
-31F7 ; [.32BC.0020.000F.31F7] # KATAKANA LETTER SMALL HU
-30D5 ; [.32BC.0020.0011.30D5] # KATAKANA LETTER HU
-FF8C ; [.32BC.0020.0012.FF8C] # HALFWIDTH KATAKANA LETTER HU
-32EB ; [.32BC.0020.0013.32EB] # CIRCLED KATAKANA HU
-3076 ; [.32BC.0020.000E.3075][.0000.0128.0002.3099] # HIRAGANA LETTER BU
-30D6 ; [.32BC.0020.0011.30D5][.0000.0128.0002.3099] # KATAKANA LETTER BU
-3077 ; [.32BC.0020.000E.3075][.0000.0129.0002.309A] # HIRAGANA LETTER PU
-30D7 ; [.32BC.0020.0011.30D5][.0000.0129.0002.309A] # KATAKANA LETTER PU
-3332 ; [.32BC.0020.001C.3332][.32A0.0020.001C.3332][.32C8.0020.001F.3332][.32B2.0020.001F.3332][.32B4.0020.001F.3332][.0000.0128.001F.3332] # SQUARE HUARADDO
-3333 ; [.32BC.0020.001C.3333][.32A1.0020.001C.3333][.15A0.0020.001F.3333][.32B4.0020.001F.3333] # SQUARE HUIITO
-3334 ; [.32BC.0020.001C.3334][.0000.0128.001C.3334][.32B2.0020.001F.3334][.32AC.0020.001F.3334][.32A4.0020.001F.3334][.32CA.0020.001F.3334] # SQUARE BUSSYERU
-3335 ; [.32BC.0020.001C.3335][.32C8.0020.001C.3335][.32D1.0020.001F.3335] # SQUARE HURAN
-3078 ; [.32BD.0020.000E.3078] # HIRAGANA LETTER HE
-31F8 ; [.32BD.0020.000F.31F8] # KATAKANA LETTER SMALL HE
-30D8 ; [.32BD.0020.0011.30D8] # KATAKANA LETTER HE
-FF8D ; [.32BD.0020.0012.FF8D] # HALFWIDTH KATAKANA LETTER HE
-32EC ; [.32BD.0020.0013.32EC] # CIRCLED KATAKANA HE
-3079 ; [.32BD.0020.000E.3078][.0000.0128.0002.3099] # HIRAGANA LETTER BE
-30D9 ; [.32BD.0020.0011.30D8][.0000.0128.0002.3099] # KATAKANA LETTER BE
-307A ; [.32BD.0020.000E.3078][.0000.0129.0002.309A] # HIRAGANA LETTER PE
-30DA ; [.32BD.0020.0011.30D8][.0000.0129.0002.309A] # KATAKANA LETTER PE
-333B ; [.32BD.0020.001C.333B][.0000.0129.001C.333B][.15A0.0020.001F.333B][.32AC.0020.001F.333B][.0000.0128.001F.333B] # SQUARE PEEZI
-333C ; [.32BD.0020.001C.333C][.0000.0128.001C.333C][.15A0.0020.001F.333C][.32B0.0020.001F.333C] # SQUARE BEETA
-3336 ; [.32BD.0020.001C.3336][.32A8.0020.001C.3336][.32B0.0020.001F.3336][.15A0.0020.001F.3336][.32CA.0020.001F.3336] # SQUARE HEKUTAARU
-3337 ; [.32BD.0020.001C.3337][.0000.0129.001C.3337][.32AF.0020.001F.3337] # SQUARE PESO
-3338 ; [.32BD.0020.001C.3338][.0000.0129.001C.3338][.32B6.0020.001F.3338][.32BB.0020.001F.3338] # SQUARE PENIHI
-3339 ; [.32BD.0020.001C.3339][.32CA.0020.001C.3339][.32B2.0020.001F.3339] # SQUARE HERUTU
-333A ; [.32BD.0020.001C.333A][.0000.0129.001C.333A][.32D1.0020.001F.333A][.32AD.0020.001F.333A] # SQUARE PENSU
-307B ; [.32BE.0020.000E.307B] # HIRAGANA LETTER HO
-31F9 ; [.32BE.0020.000F.31F9] # KATAKANA LETTER SMALL HO
-30DB ; [.32BE.0020.0011.30DB] # KATAKANA LETTER HO
-FF8E ; [.32BE.0020.0012.FF8E] # HALFWIDTH KATAKANA LETTER HO
-32ED ; [.32BE.0020.0013.32ED] # CIRCLED KATAKANA HO
-307C ; [.32BE.0020.000E.307B][.0000.0128.0002.3099] # HIRAGANA LETTER BO
-30DC ; [.32BE.0020.0011.30DB][.0000.0128.0002.3099] # KATAKANA LETTER BO
-307D ; [.32BE.0020.000E.307B][.0000.0129.0002.309A] # HIRAGANA LETTER PO
-30DD ; [.32BE.0020.0011.30DB][.0000.0129.0002.309A] # KATAKANA LETTER PO
-3341 ; [.32BE.0020.001C.3341][.15A0.0020.001C.3341][.32CA.0020.001F.3341] # SQUARE HOORU
-3342 ; [.32BE.0020.001C.3342][.15A0.0020.001C.3342][.32D1.0020.001F.3342] # SQUARE HOON
-333D ; [.32BE.0020.001C.333D][.0000.0129.001C.333D][.32A1.0020.001F.333D][.32D1.0020.001F.333D][.32B4.0020.001F.333D] # SQUARE POINTO
-1F200 ; [.32BE.0020.001C.1F200][.32A6.0020.001C.1F200] # SQUARE HIRAGANA HOKA
-333E ; [.32BE.0020.001C.333E][.0000.0128.001C.333E][.32CA.0020.001F.333E][.32B4.0020.001F.333E] # SQUARE BORUTO
-333F ; [.32BE.0020.001C.333F][.32D1.0020.001C.333F] # SQUARE HON
-3340 ; [.32BE.0020.001C.3340][.0000.0129.001C.3340][.32D1.0020.001F.3340][.32B4.0020.001F.3340][.0000.0128.001F.3340] # SQUARE PONDO
-307E ; [.32BF.0020.000E.307E] # HIRAGANA LETTER MA
-30DE ; [.32BF.0020.0011.30DE] # KATAKANA LETTER MA
-FF8F ; [.32BF.0020.0012.FF8F] # HALFWIDTH KATAKANA LETTER MA
-32EE ; [.32BF.0020.0013.32EE] # CIRCLED KATAKANA MA
-3343 ; [.32BF.0020.001C.3343][.32A1.0020.001C.3343][.32A8.0020.001F.3343][.32CC.0020.001F.3343] # SQUARE MAIKURO
-3344 ; [.32BF.0020.001C.3344][.32A1.0020.001C.3344][.32CA.0020.001F.3344] # SQUARE MAIRU
-303C ; [.32BF.0020.0004.303C][.32AD.0020.0004.303C] # MASU MARK
-3345 ; [.32BF.0020.001C.3345][.32B2.0020.001C.3345][.32BA.0020.001F.3345] # SQUARE MAHHA
-3346 ; [.32BF.0020.001C.3346][.32CA.0020.001C.3346][.32A8.0020.001F.3346] # SQUARE MARUKU
-3347 ; [.32BF.0020.001C.3347][.32D1.0020.001C.3347][.32AC.0020.001F.3347][.32C7.0020.001F.3347][.32D1.0020.001F.3347] # SQUARE MANSYON
-307F ; [.32C0.0020.000E.307F] # HIRAGANA LETTER MI
-30DF ; [.32C0.0020.0011.30DF] # KATAKANA LETTER MI
-FF90 ; [.32C0.0020.0012.FF90] # HALFWIDTH KATAKANA LETTER MI
-32EF ; [.32C0.0020.0013.32EF] # CIRCLED KATAKANA MI
-3348 ; [.32C0.0020.001C.3348][.32A8.0020.001C.3348][.32CC.0020.001F.3348][.32D1.0020.001F.3348] # SQUARE MIKURON
-3349 ; [.32C0.0020.001C.3349][.32C9.0020.001C.3349] # SQUARE MIRI
-334A ; [.32C0.0020.001C.334A][.32C9.0020.001C.334A][.32BA.0020.001F.334A][.0000.0128.001F.334A][.15A0.0020.001F.334A][.32CA.0020.001F.334A] # SQUARE MIRIBAARU
-3080 ; [.32C1.0020.000E.3080] # HIRAGANA LETTER MU
-31FA ; [.32C1.0020.000F.31FA] # KATAKANA LETTER SMALL MU
-30E0 ; [.32C1.0020.0011.30E0] # KATAKANA LETTER MU
-FF91 ; [.32C1.0020.0012.FF91] # HALFWIDTH KATAKANA LETTER MU
-32F0 ; [.32C1.0020.0013.32F0] # CIRCLED KATAKANA MU
-3081 ; [.32C2.0020.000E.3081] # HIRAGANA LETTER ME
-30E1 ; [.32C2.0020.0011.30E1] # KATAKANA LETTER ME
-FF92 ; [.32C2.0020.0012.FF92] # HALFWIDTH KATAKANA LETTER ME
-32F1 ; [.32C2.0020.0013.32F1] # CIRCLED KATAKANA ME
-334D ; [.32C2.0020.001C.334D][.15A0.0020.001C.334D][.32B4.0020.001F.334D][.32CA.0020.001F.334D] # SQUARE MEETORU
-334B ; [.32C2.0020.001C.334B][.32A6.0020.001C.334B][.0000.0128.001F.334B] # SQUARE MEGA
-334C ; [.32C2.0020.001C.334C][.32A6.0020.001C.334C][.0000.0128.001F.334C][.32B4.0020.001F.334C][.32D1.0020.001F.334C] # SQUARE MEGATON
-3082 ; [.32C3.0020.000E.3082] # HIRAGANA LETTER MO
-30E2 ; [.32C3.0020.0011.30E2] # KATAKANA LETTER MO
-FF93 ; [.32C3.0020.0012.FF93] # HALFWIDTH KATAKANA LETTER MO
-32F2 ; [.32C3.0020.0013.32F2] # CIRCLED KATAKANA MO
-3083 ; [.32C4.0020.000D.3083] # HIRAGANA LETTER SMALL YA
-3084 ; [.32C4.0020.000E.3084] # HIRAGANA LETTER YA
-30E3 ; [.32C4.0020.000F.30E3] # KATAKANA LETTER SMALL YA
-FF6C ; [.32C4.0020.0010.FF6C] # HALFWIDTH KATAKANA LETTER SMALL YA
-30E4 ; [.32C4.0020.0011.30E4] # KATAKANA LETTER YA
-FF94 ; [.32C4.0020.0012.FF94] # HALFWIDTH KATAKANA LETTER YA
-32F3 ; [.32C4.0020.0013.32F3] # CIRCLED KATAKANA YA
-334E ; [.32C4.0020.001C.334E][.15A0.0020.001C.334E][.32B4.0020.001F.334E][.0000.0128.001F.334E] # SQUARE YAADO
-334F ; [.32C4.0020.001C.334F][.15A0.0020.001C.334F][.32CA.0020.001F.334F] # SQUARE YAARU
-3085 ; [.32C5.0020.000D.3085] # HIRAGANA LETTER SMALL YU
-3086 ; [.32C5.0020.000E.3086] # HIRAGANA LETTER YU
-30E5 ; [.32C5.0020.000F.30E5] # KATAKANA LETTER SMALL YU
-FF6D ; [.32C5.0020.0010.FF6D] # HALFWIDTH KATAKANA LETTER SMALL YU
-30E6 ; [.32C5.0020.0011.30E6] # KATAKANA LETTER YU
-FF95 ; [.32C5.0020.0012.FF95] # HALFWIDTH KATAKANA LETTER YU
-32F4 ; [.32C5.0020.0013.32F4] # CIRCLED KATAKANA YU
-3350 ; [.32C5.0020.001C.3350][.32A0.0020.001C.3350][.32D1.0020.001F.3350] # SQUARE YUAN
-1B001 ; [.32C6.0020.0002.1B001] # HIRAGANA LETTER ARCHAIC YE
-3087 ; [.32C7.0020.000D.3087] # HIRAGANA LETTER SMALL YO
-3088 ; [.32C7.0020.000E.3088] # HIRAGANA LETTER YO
-30E7 ; [.32C7.0020.000F.30E7] # KATAKANA LETTER SMALL YO
-FF6E ; [.32C7.0020.0010.FF6E] # HALFWIDTH KATAKANA LETTER SMALL YO
-30E8 ; [.32C7.0020.0011.30E8] # KATAKANA LETTER YO
-FF96 ; [.32C7.0020.0012.FF96] # HALFWIDTH KATAKANA LETTER YO
-32F5 ; [.32C7.0020.0013.32F5] # CIRCLED KATAKANA YO
-309F ; [.32C7.0020.0016.309F][.32C9.0020.0016.309F] # HIRAGANA DIGRAPH YORI
-3089 ; [.32C8.0020.000E.3089] # HIRAGANA LETTER RA
-31FB ; [.32C8.0020.000F.31FB] # KATAKANA LETTER SMALL RA
-30E9 ; [.32C8.0020.0011.30E9] # KATAKANA LETTER RA
-FF97 ; [.32C8.0020.0012.FF97] # HALFWIDTH KATAKANA LETTER RA
-32F6 ; [.32C8.0020.0013.32F6] # CIRCLED KATAKANA RA
-308A ; [.32C9.0020.000E.308A] # HIRAGANA LETTER RI
-31FC ; [.32C9.0020.000F.31FC] # KATAKANA LETTER SMALL RI
-30EA ; [.32C9.0020.0011.30EA] # KATAKANA LETTER RI
-FF98 ; [.32C9.0020.0012.FF98] # HALFWIDTH KATAKANA LETTER RI
-32F7 ; [.32C9.0020.0013.32F7] # CIRCLED KATAKANA RI
-3351 ; [.32C9.0020.001C.3351][.32B2.0020.001C.3351][.32B4.0020.001F.3351][.32CA.0020.001F.3351] # SQUARE RITTORU
-3352 ; [.32C9.0020.001C.3352][.32C8.0020.001C.3352] # SQUARE RIRA
-308B ; [.32CA.0020.000E.308B] # HIRAGANA LETTER RU
-31FD ; [.32CA.0020.000F.31FD] # KATAKANA LETTER SMALL RU
-30EB ; [.32CA.0020.0011.30EB] # KATAKANA LETTER RU
-FF99 ; [.32CA.0020.0012.FF99] # HALFWIDTH KATAKANA LETTER RU
-32F8 ; [.32CA.0020.0013.32F8] # CIRCLED KATAKANA RU
-3354 ; [.32CA.0020.001C.3354][.15A0.0020.001C.3354][.32BC.0020.001F.3354][.0000.0128.001F.3354][.32CA.0020.001F.3354] # SQUARE RUUBURU
-3353 ; [.32CA.0020.001C.3353][.32BB.0020.001C.3353][.0000.0129.001F.3353][.15A0.0020.001F.3353] # SQUARE RUPII
-308C ; [.32CB.0020.000E.308C] # HIRAGANA LETTER RE
-31FE ; [.32CB.0020.000F.31FE] # KATAKANA LETTER SMALL RE
-30EC ; [.32CB.0020.0011.30EC] # KATAKANA LETTER RE
-FF9A ; [.32CB.0020.0012.FF9A] # HALFWIDTH KATAKANA LETTER RE
-32F9 ; [.32CB.0020.0013.32F9] # CIRCLED KATAKANA RE
-3355 ; [.32CB.0020.001C.3355][.32C1.0020.001C.3355] # SQUARE REMU
-3356 ; [.32CB.0020.001C.3356][.32D1.0020.001C.3356][.32B4.0020.001F.3356][.32A9.0020.001F.3356][.0000.0128.001F.3356][.32D1.0020.001F.3356] # SQUARE RENTOGEN
-308D ; [.32CC.0020.000E.308D] # HIRAGANA LETTER RO
-31FF ; [.32CC.0020.000F.31FF] # KATAKANA LETTER SMALL RO
-30ED ; [.32CC.0020.0011.30ED] # KATAKANA LETTER RO
-FF9B ; [.32CC.0020.0012.FF9B] # HALFWIDTH KATAKANA LETTER RO
-32FA ; [.32CC.0020.0013.32FA] # CIRCLED KATAKANA RO
-308E ; [.32CD.0020.000D.308E] # HIRAGANA LETTER SMALL WA
-308F ; [.32CD.0020.000E.308F] # HIRAGANA LETTER WA
-30EE ; [.32CD.0020.000F.30EE] # KATAKANA LETTER SMALL WA
-30EF ; [.32CD.0020.0011.30EF] # KATAKANA LETTER WA
-FF9C ; [.32CD.0020.0012.FF9C] # HALFWIDTH KATAKANA LETTER WA
-32FB ; [.32CD.0020.0013.32FB] # CIRCLED KATAKANA WA
-30F7 ; [.32CD.0020.0011.30EF][.0000.0128.0002.3099] # KATAKANA LETTER VA
-3357 ; [.32CD.0020.001C.3357][.32B2.0020.001C.3357][.32B4.0020.001F.3357] # SQUARE WATTO
-3090 ; [.32CE.0020.000E.3090] # HIRAGANA LETTER WI
-30F0 ; [.32CE.0020.0011.30F0] # KATAKANA LETTER WI
-32FC ; [.32CE.0020.0013.32FC] # CIRCLED KATAKANA WI
-30F8 ; [.32CE.0020.0011.30F0][.0000.0128.0002.3099] # KATAKANA LETTER VI
-3091 ; [.32CF.0020.000E.3091] # HIRAGANA LETTER WE
-30F1 ; [.32CF.0020.0011.30F1] # KATAKANA LETTER WE
-32FD ; [.32CF.0020.0013.32FD] # CIRCLED KATAKANA WE
-30F9 ; [.32CF.0020.0011.30F1][.0000.0128.0002.3099] # KATAKANA LETTER VE
-3092 ; [.32D0.0020.000E.3092] # HIRAGANA LETTER WO
-30F2 ; [.32D0.0020.0011.30F2] # KATAKANA LETTER WO
-FF66 ; [.32D0.0020.0012.FF66] # HALFWIDTH KATAKANA LETTER WO
-32FE ; [.32D0.0020.0013.32FE] # CIRCLED KATAKANA WO
-30FA ; [.32D0.0020.0011.30F2][.0000.0128.0002.3099] # KATAKANA LETTER VO
-3093 ; [.32D1.0020.000E.3093] # HIRAGANA LETTER N
-30F3 ; [.32D1.0020.0011.30F3] # KATAKANA LETTER N
-FF9D ; [.32D1.0020.0012.FF9D] # HALFWIDTH KATAKANA LETTER N
-3105 ; [.32D2.0020.0002.3105] # BOPOMOFO LETTER B
-31A0 ; [.32D2.0020.0004.31A0][.0000.013A.0004.31A0] # BOPOMOFO LETTER BU
-3106 ; [.32D3.0020.0002.3106] # BOPOMOFO LETTER P
-31B4 ; [.32D3.0020.0019.31B4] # BOPOMOFO FINAL LETTER P
-3107 ; [.32D4.0020.0002.3107] # BOPOMOFO LETTER M
-3108 ; [.32D5.0020.0002.3108] # BOPOMOFO LETTER F
-312A ; [.32D6.0020.0002.312A] # BOPOMOFO LETTER V
-3109 ; [.32D7.0020.0002.3109] # BOPOMOFO LETTER D
-310A ; [.32D8.0020.0002.310A] # BOPOMOFO LETTER T
-31B5 ; [.32D8.0020.0019.31B5] # BOPOMOFO FINAL LETTER T
-310B ; [.32D9.0020.0002.310B] # BOPOMOFO LETTER N
-310C ; [.32DA.0020.0002.310C] # BOPOMOFO LETTER L
-310D ; [.32DB.0020.0002.310D] # BOPOMOFO LETTER G
-31A3 ; [.32DB.0020.0004.31A3][.0000.013A.0004.31A3] # BOPOMOFO LETTER GU
-310E ; [.32DC.0020.0002.310E] # BOPOMOFO LETTER K
-31B6 ; [.32DC.0020.0019.31B6] # BOPOMOFO FINAL LETTER K
-312B ; [.32DD.0020.0002.312B] # BOPOMOFO LETTER NG
-31AD ; [.32DE.0020.0002.31AD] # BOPOMOFO LETTER NGG
-310F ; [.32DF.0020.0002.310F] # BOPOMOFO LETTER H
-31B7 ; [.32DF.0020.0019.31B7] # BOPOMOFO FINAL LETTER H
-3110 ; [.32E0.0020.0002.3110] # BOPOMOFO LETTER J
-31A2 ; [.32E0.0020.0004.31A2][.0000.013A.0004.31A2] # BOPOMOFO LETTER JI
-3111 ; [.32E1.0020.0002.3111] # BOPOMOFO LETTER Q
-3112 ; [.32E2.0020.0002.3112] # BOPOMOFO LETTER X
-312C ; [.32E3.0020.0002.312C] # BOPOMOFO LETTER GN
-3113 ; [.32E4.0020.0002.3113] # BOPOMOFO LETTER ZH
-3114 ; [.32E5.0020.0002.3114] # BOPOMOFO LETTER CH
-3115 ; [.32E6.0020.0002.3115] # BOPOMOFO LETTER SH
-3116 ; [.32E7.0020.0002.3116] # BOPOMOFO LETTER R
-3117 ; [.32E8.0020.0002.3117] # BOPOMOFO LETTER Z
-31A1 ; [.32E8.0020.0004.31A1][.0000.013A.0004.31A1] # BOPOMOFO LETTER ZI
-3118 ; [.32E9.0020.0002.3118] # BOPOMOFO LETTER C
-3119 ; [.32EA.0020.0002.3119] # BOPOMOFO LETTER S
-31B8 ; [.32EB.0020.0002.31B8] # BOPOMOFO LETTER GH
-31B9 ; [.32EC.0020.0002.31B9] # BOPOMOFO LETTER LH
-31BA ; [.32ED.0020.0002.31BA] # BOPOMOFO LETTER ZY
-311A ; [.32EE.0020.0002.311A] # BOPOMOFO LETTER A
-31A9 ; [.32EE.0020.0004.31A9][.0000.013A.0004.31A9] # BOPOMOFO LETTER ANN
-311B ; [.32EF.0020.0002.311B] # BOPOMOFO LETTER O
-31A7 ; [.32EF.0020.0004.31A7][.0000.013A.0004.31A7] # BOPOMOFO LETTER ONN
-31A6 ; [.32F0.0020.0002.31A6] # BOPOMOFO LETTER OO
-311C ; [.32F1.0020.0002.311C] # BOPOMOFO LETTER E
-311D ; [.32F2.0020.0002.311D] # BOPOMOFO LETTER EH
-31A4 ; [.32F3.0020.0002.31A4] # BOPOMOFO LETTER EE
-31A5 ; [.32F3.0020.0004.31A5][.0000.013A.0004.31A5] # BOPOMOFO LETTER ENN
-311E ; [.32F4.0020.0002.311E] # BOPOMOFO LETTER AI
-31AE ; [.32F4.0020.0004.31AE][.0000.013A.0004.31AE] # BOPOMOFO LETTER AINN
-311F ; [.32F5.0020.0002.311F] # BOPOMOFO LETTER EI
-3120 ; [.32F6.0020.0002.3120] # BOPOMOFO LETTER AU
-31AF ; [.32F6.0020.0004.31AF][.0000.013A.0004.31AF] # BOPOMOFO LETTER AUNN
-3121 ; [.32F7.0020.0002.3121] # BOPOMOFO LETTER OU
-3122 ; [.32F8.0020.0002.3122] # BOPOMOFO LETTER AN
-3123 ; [.32F9.0020.0002.3123] # BOPOMOFO LETTER EN
-3124 ; [.32FA.0020.0002.3124] # BOPOMOFO LETTER ANG
-31B2 ; [.32FB.0020.0002.31B2] # BOPOMOFO LETTER ONG
-3125 ; [.32FC.0020.0002.3125] # BOPOMOFO LETTER ENG
-31B0 ; [.32FD.0020.0002.31B0] # BOPOMOFO LETTER AM
-31B1 ; [.32FE.0020.0002.31B1] # BOPOMOFO LETTER OM
-31AC ; [.32FF.0020.0002.31AC] # BOPOMOFO LETTER IM
-3126 ; [.3300.0020.0002.3126] # BOPOMOFO LETTER ER
-3127 ; [.3301.0020.0002.3127] # BOPOMOFO LETTER I
-31AA ; [.3301.0020.0004.31AA][.0000.013A.0004.31AA] # BOPOMOFO LETTER INN
-31B3 ; [.3301.0020.0016.31B3][.0000.013A.0016.31B3] # BOPOMOFO LETTER INNN
-3128 ; [.3302.0020.0002.3128] # BOPOMOFO LETTER U
-31AB ; [.3302.0020.0004.31AB][.0000.013A.0004.31AB] # BOPOMOFO LETTER UNN
-31A8 ; [.3302.0020.0004.31A8][.0000.013C.0004.31A8] # BOPOMOFO LETTER IR
-3129 ; [.3303.0020.0002.3129] # BOPOMOFO LETTER IU
-312D ; [.3304.0020.0002.312D] # BOPOMOFO LETTER IH
-A000 ; [.3305.0020.0002.A000] # YI SYLLABLE IT
-A001 ; [.3306.0020.0002.A001] # YI SYLLABLE IX
-A002 ; [.3307.0020.0002.A002] # YI SYLLABLE I
-A003 ; [.3308.0020.0002.A003] # YI SYLLABLE IP
-A004 ; [.3309.0020.0002.A004] # YI SYLLABLE IET
-A005 ; [.330A.0020.0002.A005] # YI SYLLABLE IEX
-A006 ; [.330B.0020.0002.A006] # YI SYLLABLE IE
-A007 ; [.330C.0020.0002.A007] # YI SYLLABLE IEP
-A008 ; [.330D.0020.0002.A008] # YI SYLLABLE AT
-A009 ; [.330E.0020.0002.A009] # YI SYLLABLE AX
-A00A ; [.330F.0020.0002.A00A] # YI SYLLABLE A
-A00B ; [.3310.0020.0002.A00B] # YI SYLLABLE AP
-A00C ; [.3311.0020.0002.A00C] # YI SYLLABLE UOX
-A00D ; [.3312.0020.0002.A00D] # YI SYLLABLE UO
-A00E ; [.3313.0020.0002.A00E] # YI SYLLABLE UOP
-A00F ; [.3314.0020.0002.A00F] # YI SYLLABLE OT
-A010 ; [.3315.0020.0002.A010] # YI SYLLABLE OX
-A011 ; [.3316.0020.0002.A011] # YI SYLLABLE O
-A012 ; [.3317.0020.0002.A012] # YI SYLLABLE OP
-A013 ; [.3318.0020.0002.A013] # YI SYLLABLE EX
-A014 ; [.3319.0020.0002.A014] # YI SYLLABLE E
-A015 ; [.331A.0020.0002.A015] # YI SYLLABLE WU
-A016 ; [.331B.0020.0002.A016] # YI SYLLABLE BIT
-A017 ; [.331C.0020.0002.A017] # YI SYLLABLE BIX
-A018 ; [.331D.0020.0002.A018] # YI SYLLABLE BI
-A019 ; [.331E.0020.0002.A019] # YI SYLLABLE BIP
-A01A ; [.331F.0020.0002.A01A] # YI SYLLABLE BIET
-A01B ; [.3320.0020.0002.A01B] # YI SYLLABLE BIEX
-A01C ; [.3321.0020.0002.A01C] # YI SYLLABLE BIE
-A01D ; [.3322.0020.0002.A01D] # YI SYLLABLE BIEP
-A01E ; [.3323.0020.0002.A01E] # YI SYLLABLE BAT
-A01F ; [.3324.0020.0002.A01F] # YI SYLLABLE BAX
-A020 ; [.3325.0020.0002.A020] # YI SYLLABLE BA
-A021 ; [.3326.0020.0002.A021] # YI SYLLABLE BAP
-A022 ; [.3327.0020.0002.A022] # YI SYLLABLE BUOX
-A023 ; [.3328.0020.0002.A023] # YI SYLLABLE BUO
-A024 ; [.3329.0020.0002.A024] # YI SYLLABLE BUOP
-A025 ; [.332A.0020.0002.A025] # YI SYLLABLE BOT
-A026 ; [.332B.0020.0002.A026] # YI SYLLABLE BOX
-A027 ; [.332C.0020.0002.A027] # YI SYLLABLE BO
-A028 ; [.332D.0020.0002.A028] # YI SYLLABLE BOP
-A029 ; [.332E.0020.0002.A029] # YI SYLLABLE BEX
-A02A ; [.332F.0020.0002.A02A] # YI SYLLABLE BE
-A02B ; [.3330.0020.0002.A02B] # YI SYLLABLE BEP
-A02C ; [.3331.0020.0002.A02C] # YI SYLLABLE BUT
-A02D ; [.3332.0020.0002.A02D] # YI SYLLABLE BUX
-A02E ; [.3333.0020.0002.A02E] # YI SYLLABLE BU
-A02F ; [.3334.0020.0002.A02F] # YI SYLLABLE BUP
-A030 ; [.3335.0020.0002.A030] # YI SYLLABLE BURX
-A031 ; [.3336.0020.0002.A031] # YI SYLLABLE BUR
-A032 ; [.3337.0020.0002.A032] # YI SYLLABLE BYT
-A033 ; [.3338.0020.0002.A033] # YI SYLLABLE BYX
-A034 ; [.3339.0020.0002.A034] # YI SYLLABLE BY
-A035 ; [.333A.0020.0002.A035] # YI SYLLABLE BYP
-A036 ; [.333B.0020.0002.A036] # YI SYLLABLE BYRX
-A037 ; [.333C.0020.0002.A037] # YI SYLLABLE BYR
-A038 ; [.333D.0020.0002.A038] # YI SYLLABLE PIT
-A039 ; [.333E.0020.0002.A039] # YI SYLLABLE PIX
-A03A ; [.333F.0020.0002.A03A] # YI SYLLABLE PI
-A03B ; [.3340.0020.0002.A03B] # YI SYLLABLE PIP
-A03C ; [.3341.0020.0002.A03C] # YI SYLLABLE PIEX
-A03D ; [.3342.0020.0002.A03D] # YI SYLLABLE PIE
-A03E ; [.3343.0020.0002.A03E] # YI SYLLABLE PIEP
-A03F ; [.3344.0020.0002.A03F] # YI SYLLABLE PAT
-A040 ; [.3345.0020.0002.A040] # YI SYLLABLE PAX
-A041 ; [.3346.0020.0002.A041] # YI SYLLABLE PA
-A042 ; [.3347.0020.0002.A042] # YI SYLLABLE PAP
-A043 ; [.3348.0020.0002.A043] # YI SYLLABLE PUOX
-A044 ; [.3349.0020.0002.A044] # YI SYLLABLE PUO
-A045 ; [.334A.0020.0002.A045] # YI SYLLABLE PUOP
-A046 ; [.334B.0020.0002.A046] # YI SYLLABLE POT
-A047 ; [.334C.0020.0002.A047] # YI SYLLABLE POX
-A048 ; [.334D.0020.0002.A048] # YI SYLLABLE PO
-A049 ; [.334E.0020.0002.A049] # YI SYLLABLE POP
-A04A ; [.334F.0020.0002.A04A] # YI SYLLABLE PUT
-A04B ; [.3350.0020.0002.A04B] # YI SYLLABLE PUX
-A04C ; [.3351.0020.0002.A04C] # YI SYLLABLE PU
-A04D ; [.3352.0020.0002.A04D] # YI SYLLABLE PUP
-A04E ; [.3353.0020.0002.A04E] # YI SYLLABLE PURX
-A04F ; [.3354.0020.0002.A04F] # YI SYLLABLE PUR
-A050 ; [.3355.0020.0002.A050] # YI SYLLABLE PYT
-A051 ; [.3356.0020.0002.A051] # YI SYLLABLE PYX
-A052 ; [.3357.0020.0002.A052] # YI SYLLABLE PY
-A053 ; [.3358.0020.0002.A053] # YI SYLLABLE PYP
-A054 ; [.3359.0020.0002.A054] # YI SYLLABLE PYRX
-A055 ; [.335A.0020.0002.A055] # YI SYLLABLE PYR
-A056 ; [.335B.0020.0002.A056] # YI SYLLABLE BBIT
-A057 ; [.335C.0020.0002.A057] # YI SYLLABLE BBIX
-A058 ; [.335D.0020.0002.A058] # YI SYLLABLE BBI
-A059 ; [.335E.0020.0002.A059] # YI SYLLABLE BBIP
-A05A ; [.335F.0020.0002.A05A] # YI SYLLABLE BBIET
-A05B ; [.3360.0020.0002.A05B] # YI SYLLABLE BBIEX
-A05C ; [.3361.0020.0002.A05C] # YI SYLLABLE BBIE
-A05D ; [.3362.0020.0002.A05D] # YI SYLLABLE BBIEP
-A05E ; [.3363.0020.0002.A05E] # YI SYLLABLE BBAT
-A05F ; [.3364.0020.0002.A05F] # YI SYLLABLE BBAX
-A060 ; [.3365.0020.0002.A060] # YI SYLLABLE BBA
-A061 ; [.3366.0020.0002.A061] # YI SYLLABLE BBAP
-A062 ; [.3367.0020.0002.A062] # YI SYLLABLE BBUOX
-A063 ; [.3368.0020.0002.A063] # YI SYLLABLE BBUO
-A064 ; [.3369.0020.0002.A064] # YI SYLLABLE BBUOP
-A065 ; [.336A.0020.0002.A065] # YI SYLLABLE BBOT
-A066 ; [.336B.0020.0002.A066] # YI SYLLABLE BBOX
-A067 ; [.336C.0020.0002.A067] # YI SYLLABLE BBO
-A068 ; [.336D.0020.0002.A068] # YI SYLLABLE BBOP
-A069 ; [.336E.0020.0002.A069] # YI SYLLABLE BBEX
-A06A ; [.336F.0020.0002.A06A] # YI SYLLABLE BBE
-A06B ; [.3370.0020.0002.A06B] # YI SYLLABLE BBEP
-A06C ; [.3371.0020.0002.A06C] # YI SYLLABLE BBUT
-A06D ; [.3372.0020.0002.A06D] # YI SYLLABLE BBUX
-A06E ; [.3373.0020.0002.A06E] # YI SYLLABLE BBU
-A06F ; [.3374.0020.0002.A06F] # YI SYLLABLE BBUP
-A070 ; [.3375.0020.0002.A070] # YI SYLLABLE BBURX
-A071 ; [.3376.0020.0002.A071] # YI SYLLABLE BBUR
-A072 ; [.3377.0020.0002.A072] # YI SYLLABLE BBYT
-A073 ; [.3378.0020.0002.A073] # YI SYLLABLE BBYX
-A074 ; [.3379.0020.0002.A074] # YI SYLLABLE BBY
-A075 ; [.337A.0020.0002.A075] # YI SYLLABLE BBYP
-A076 ; [.337B.0020.0002.A076] # YI SYLLABLE NBIT
-A077 ; [.337C.0020.0002.A077] # YI SYLLABLE NBIX
-A078 ; [.337D.0020.0002.A078] # YI SYLLABLE NBI
-A079 ; [.337E.0020.0002.A079] # YI SYLLABLE NBIP
-A07A ; [.337F.0020.0002.A07A] # YI SYLLABLE NBIEX
-A07B ; [.3380.0020.0002.A07B] # YI SYLLABLE NBIE
-A07C ; [.3381.0020.0002.A07C] # YI SYLLABLE NBIEP
-A07D ; [.3382.0020.0002.A07D] # YI SYLLABLE NBAT
-A07E ; [.3383.0020.0002.A07E] # YI SYLLABLE NBAX
-A07F ; [.3384.0020.0002.A07F] # YI SYLLABLE NBA
-A080 ; [.3385.0020.0002.A080] # YI SYLLABLE NBAP
-A081 ; [.3386.0020.0002.A081] # YI SYLLABLE NBOT
-A082 ; [.3387.0020.0002.A082] # YI SYLLABLE NBOX
-A083 ; [.3388.0020.0002.A083] # YI SYLLABLE NBO
-A084 ; [.3389.0020.0002.A084] # YI SYLLABLE NBOP
-A085 ; [.338A.0020.0002.A085] # YI SYLLABLE NBUT
-A086 ; [.338B.0020.0002.A086] # YI SYLLABLE NBUX
-A087 ; [.338C.0020.0002.A087] # YI SYLLABLE NBU
-A088 ; [.338D.0020.0002.A088] # YI SYLLABLE NBUP
-A089 ; [.338E.0020.0002.A089] # YI SYLLABLE NBURX
-A08A ; [.338F.0020.0002.A08A] # YI SYLLABLE NBUR
-A08B ; [.3390.0020.0002.A08B] # YI SYLLABLE NBYT
-A08C ; [.3391.0020.0002.A08C] # YI SYLLABLE NBYX
-A08D ; [.3392.0020.0002.A08D] # YI SYLLABLE NBY
-A08E ; [.3393.0020.0002.A08E] # YI SYLLABLE NBYP
-A08F ; [.3394.0020.0002.A08F] # YI SYLLABLE NBYRX
-A090 ; [.3395.0020.0002.A090] # YI SYLLABLE NBYR
-A091 ; [.3396.0020.0002.A091] # YI SYLLABLE HMIT
-A092 ; [.3397.0020.0002.A092] # YI SYLLABLE HMIX
-A093 ; [.3398.0020.0002.A093] # YI SYLLABLE HMI
-A094 ; [.3399.0020.0002.A094] # YI SYLLABLE HMIP
-A095 ; [.339A.0020.0002.A095] # YI SYLLABLE HMIEX
-A096 ; [.339B.0020.0002.A096] # YI SYLLABLE HMIE
-A097 ; [.339C.0020.0002.A097] # YI SYLLABLE HMIEP
-A098 ; [.339D.0020.0002.A098] # YI SYLLABLE HMAT
-A099 ; [.339E.0020.0002.A099] # YI SYLLABLE HMAX
-A09A ; [.339F.0020.0002.A09A] # YI SYLLABLE HMA
-A09B ; [.33A0.0020.0002.A09B] # YI SYLLABLE HMAP
-A09C ; [.33A1.0020.0002.A09C] # YI SYLLABLE HMUOX
-A09D ; [.33A2.0020.0002.A09D] # YI SYLLABLE HMUO
-A09E ; [.33A3.0020.0002.A09E] # YI SYLLABLE HMUOP
-A09F ; [.33A4.0020.0002.A09F] # YI SYLLABLE HMOT
-A0A0 ; [.33A5.0020.0002.A0A0] # YI SYLLABLE HMOX
-A0A1 ; [.33A6.0020.0002.A0A1] # YI SYLLABLE HMO
-A0A2 ; [.33A7.0020.0002.A0A2] # YI SYLLABLE HMOP
-A0A3 ; [.33A8.0020.0002.A0A3] # YI SYLLABLE HMUT
-A0A4 ; [.33A9.0020.0002.A0A4] # YI SYLLABLE HMUX
-A0A5 ; [.33AA.0020.0002.A0A5] # YI SYLLABLE HMU
-A0A6 ; [.33AB.0020.0002.A0A6] # YI SYLLABLE HMUP
-A0A7 ; [.33AC.0020.0002.A0A7] # YI SYLLABLE HMURX
-A0A8 ; [.33AD.0020.0002.A0A8] # YI SYLLABLE HMUR
-A0A9 ; [.33AE.0020.0002.A0A9] # YI SYLLABLE HMYX
-A0AA ; [.33AF.0020.0002.A0AA] # YI SYLLABLE HMY
-A0AB ; [.33B0.0020.0002.A0AB] # YI SYLLABLE HMYP
-A0AC ; [.33B1.0020.0002.A0AC] # YI SYLLABLE HMYRX
-A0AD ; [.33B2.0020.0002.A0AD] # YI SYLLABLE HMYR
-A0AE ; [.33B3.0020.0002.A0AE] # YI SYLLABLE MIT
-A0AF ; [.33B4.0020.0002.A0AF] # YI SYLLABLE MIX
-A0B0 ; [.33B5.0020.0002.A0B0] # YI SYLLABLE MI
-A0B1 ; [.33B6.0020.0002.A0B1] # YI SYLLABLE MIP
-A0B2 ; [.33B7.0020.0002.A0B2] # YI SYLLABLE MIEX
-A0B3 ; [.33B8.0020.0002.A0B3] # YI SYLLABLE MIE
-A0B4 ; [.33B9.0020.0002.A0B4] # YI SYLLABLE MIEP
-A0B5 ; [.33BA.0020.0002.A0B5] # YI SYLLABLE MAT
-A0B6 ; [.33BB.0020.0002.A0B6] # YI SYLLABLE MAX
-A0B7 ; [.33BC.0020.0002.A0B7] # YI SYLLABLE MA
-A0B8 ; [.33BD.0020.0002.A0B8] # YI SYLLABLE MAP
-A0B9 ; [.33BE.0020.0002.A0B9] # YI SYLLABLE MUOT
-A0BA ; [.33BF.0020.0002.A0BA] # YI SYLLABLE MUOX
-A0BB ; [.33C0.0020.0002.A0BB] # YI SYLLABLE MUO
-A0BC ; [.33C1.0020.0002.A0BC] # YI SYLLABLE MUOP
-A0BD ; [.33C2.0020.0002.A0BD] # YI SYLLABLE MOT
-A0BE ; [.33C3.0020.0002.A0BE] # YI SYLLABLE MOX
-A0BF ; [.33C4.0020.0002.A0BF] # YI SYLLABLE MO
-A0C0 ; [.33C5.0020.0002.A0C0] # YI SYLLABLE MOP
-A0C1 ; [.33C6.0020.0002.A0C1] # YI SYLLABLE MEX
-A0C2 ; [.33C7.0020.0002.A0C2] # YI SYLLABLE ME
-A0C3 ; [.33C8.0020.0002.A0C3] # YI SYLLABLE MUT
-A0C4 ; [.33C9.0020.0002.A0C4] # YI SYLLABLE MUX
-A0C5 ; [.33CA.0020.0002.A0C5] # YI SYLLABLE MU
-A0C6 ; [.33CB.0020.0002.A0C6] # YI SYLLABLE MUP
-A0C7 ; [.33CC.0020.0002.A0C7] # YI SYLLABLE MURX
-A0C8 ; [.33CD.0020.0002.A0C8] # YI SYLLABLE MUR
-A0C9 ; [.33CE.0020.0002.A0C9] # YI SYLLABLE MYT
-A0CA ; [.33CF.0020.0002.A0CA] # YI SYLLABLE MYX
-A0CB ; [.33D0.0020.0002.A0CB] # YI SYLLABLE MY
-A0CC ; [.33D1.0020.0002.A0CC] # YI SYLLABLE MYP
-A0CD ; [.33D2.0020.0002.A0CD] # YI SYLLABLE FIT
-A0CE ; [.33D3.0020.0002.A0CE] # YI SYLLABLE FIX
-A0CF ; [.33D4.0020.0002.A0CF] # YI SYLLABLE FI
-A0D0 ; [.33D5.0020.0002.A0D0] # YI SYLLABLE FIP
-A0D1 ; [.33D6.0020.0002.A0D1] # YI SYLLABLE FAT
-A0D2 ; [.33D7.0020.0002.A0D2] # YI SYLLABLE FAX
-A0D3 ; [.33D8.0020.0002.A0D3] # YI SYLLABLE FA
-A0D4 ; [.33D9.0020.0002.A0D4] # YI SYLLABLE FAP
-A0D5 ; [.33DA.0020.0002.A0D5] # YI SYLLABLE FOX
-A0D6 ; [.33DB.0020.0002.A0D6] # YI SYLLABLE FO
-A0D7 ; [.33DC.0020.0002.A0D7] # YI SYLLABLE FOP
-A0D8 ; [.33DD.0020.0002.A0D8] # YI SYLLABLE FUT
-A0D9 ; [.33DE.0020.0002.A0D9] # YI SYLLABLE FUX
-A0DA ; [.33DF.0020.0002.A0DA] # YI SYLLABLE FU
-A0DB ; [.33E0.0020.0002.A0DB] # YI SYLLABLE FUP
-A0DC ; [.33E1.0020.0002.A0DC] # YI SYLLABLE FURX
-A0DD ; [.33E2.0020.0002.A0DD] # YI SYLLABLE FUR
-A0DE ; [.33E3.0020.0002.A0DE] # YI SYLLABLE FYT
-A0DF ; [.33E4.0020.0002.A0DF] # YI SYLLABLE FYX
-A0E0 ; [.33E5.0020.0002.A0E0] # YI SYLLABLE FY
-A0E1 ; [.33E6.0020.0002.A0E1] # YI SYLLABLE FYP
-A0E2 ; [.33E7.0020.0002.A0E2] # YI SYLLABLE VIT
-A0E3 ; [.33E8.0020.0002.A0E3] # YI SYLLABLE VIX
-A0E4 ; [.33E9.0020.0002.A0E4] # YI SYLLABLE VI
-A0E5 ; [.33EA.0020.0002.A0E5] # YI SYLLABLE VIP
-A0E6 ; [.33EB.0020.0002.A0E6] # YI SYLLABLE VIET
-A0E7 ; [.33EC.0020.0002.A0E7] # YI SYLLABLE VIEX
-A0E8 ; [.33ED.0020.0002.A0E8] # YI SYLLABLE VIE
-A0E9 ; [.33EE.0020.0002.A0E9] # YI SYLLABLE VIEP
-A0EA ; [.33EF.0020.0002.A0EA] # YI SYLLABLE VAT
-A0EB ; [.33F0.0020.0002.A0EB] # YI SYLLABLE VAX
-A0EC ; [.33F1.0020.0002.A0EC] # YI SYLLABLE VA
-A0ED ; [.33F2.0020.0002.A0ED] # YI SYLLABLE VAP
-A0EE ; [.33F3.0020.0002.A0EE] # YI SYLLABLE VOT
-A0EF ; [.33F4.0020.0002.A0EF] # YI SYLLABLE VOX
-A0F0 ; [.33F5.0020.0002.A0F0] # YI SYLLABLE VO
-A0F1 ; [.33F6.0020.0002.A0F1] # YI SYLLABLE VOP
-A0F2 ; [.33F7.0020.0002.A0F2] # YI SYLLABLE VEX
-A0F3 ; [.33F8.0020.0002.A0F3] # YI SYLLABLE VEP
-A0F4 ; [.33F9.0020.0002.A0F4] # YI SYLLABLE VUT
-A0F5 ; [.33FA.0020.0002.A0F5] # YI SYLLABLE VUX
-A0F6 ; [.33FB.0020.0002.A0F6] # YI SYLLABLE VU
-A0F7 ; [.33FC.0020.0002.A0F7] # YI SYLLABLE VUP
-A0F8 ; [.33FD.0020.0002.A0F8] # YI SYLLABLE VURX
-A0F9 ; [.33FE.0020.0002.A0F9] # YI SYLLABLE VUR
-A0FA ; [.33FF.0020.0002.A0FA] # YI SYLLABLE VYT
-A0FB ; [.3400.0020.0002.A0FB] # YI SYLLABLE VYX
-A0FC ; [.3401.0020.0002.A0FC] # YI SYLLABLE VY
-A0FD ; [.3402.0020.0002.A0FD] # YI SYLLABLE VYP
-A0FE ; [.3403.0020.0002.A0FE] # YI SYLLABLE VYRX
-A0FF ; [.3404.0020.0002.A0FF] # YI SYLLABLE VYR
-A100 ; [.3405.0020.0002.A100] # YI SYLLABLE DIT
-A101 ; [.3406.0020.0002.A101] # YI SYLLABLE DIX
-A102 ; [.3407.0020.0002.A102] # YI SYLLABLE DI
-A103 ; [.3408.0020.0002.A103] # YI SYLLABLE DIP
-A104 ; [.3409.0020.0002.A104] # YI SYLLABLE DIEX
-A105 ; [.340A.0020.0002.A105] # YI SYLLABLE DIE
-A106 ; [.340B.0020.0002.A106] # YI SYLLABLE DIEP
-A107 ; [.340C.0020.0002.A107] # YI SYLLABLE DAT
-A108 ; [.340D.0020.0002.A108] # YI SYLLABLE DAX
-A109 ; [.340E.0020.0002.A109] # YI SYLLABLE DA
-A10A ; [.340F.0020.0002.A10A] # YI SYLLABLE DAP
-A10B ; [.3410.0020.0002.A10B] # YI SYLLABLE DUOX
-A10C ; [.3411.0020.0002.A10C] # YI SYLLABLE DUO
-A10D ; [.3412.0020.0002.A10D] # YI SYLLABLE DOT
-A10E ; [.3413.0020.0002.A10E] # YI SYLLABLE DOX
-A10F ; [.3414.0020.0002.A10F] # YI SYLLABLE DO
-A110 ; [.3415.0020.0002.A110] # YI SYLLABLE DOP
-A111 ; [.3416.0020.0002.A111] # YI SYLLABLE DEX
-A112 ; [.3417.0020.0002.A112] # YI SYLLABLE DE
-A113 ; [.3418.0020.0002.A113] # YI SYLLABLE DEP
-A114 ; [.3419.0020.0002.A114] # YI SYLLABLE DUT
-A115 ; [.341A.0020.0002.A115] # YI SYLLABLE DUX
-A116 ; [.341B.0020.0002.A116] # YI SYLLABLE DU
-A117 ; [.341C.0020.0002.A117] # YI SYLLABLE DUP
-A118 ; [.341D.0020.0002.A118] # YI SYLLABLE DURX
-A119 ; [.341E.0020.0002.A119] # YI SYLLABLE DUR
-A11A ; [.341F.0020.0002.A11A] # YI SYLLABLE TIT
-A11B ; [.3420.0020.0002.A11B] # YI SYLLABLE TIX
-A11C ; [.3421.0020.0002.A11C] # YI SYLLABLE TI
-A11D ; [.3422.0020.0002.A11D] # YI SYLLABLE TIP
-A11E ; [.3423.0020.0002.A11E] # YI SYLLABLE TIEX
-A11F ; [.3424.0020.0002.A11F] # YI SYLLABLE TIE
-A120 ; [.3425.0020.0002.A120] # YI SYLLABLE TIEP
-A121 ; [.3426.0020.0002.A121] # YI SYLLABLE TAT
-A122 ; [.3427.0020.0002.A122] # YI SYLLABLE TAX
-A123 ; [.3428.0020.0002.A123] # YI SYLLABLE TA
-A124 ; [.3429.0020.0002.A124] # YI SYLLABLE TAP
-A125 ; [.342A.0020.0002.A125] # YI SYLLABLE TUOT
-A126 ; [.342B.0020.0002.A126] # YI SYLLABLE TUOX
-A127 ; [.342C.0020.0002.A127] # YI SYLLABLE TUO
-A128 ; [.342D.0020.0002.A128] # YI SYLLABLE TUOP
-A129 ; [.342E.0020.0002.A129] # YI SYLLABLE TOT
-A12A ; [.342F.0020.0002.A12A] # YI SYLLABLE TOX
-A12B ; [.3430.0020.0002.A12B] # YI SYLLABLE TO
-A12C ; [.3431.0020.0002.A12C] # YI SYLLABLE TOP
-A12D ; [.3432.0020.0002.A12D] # YI SYLLABLE TEX
-A12E ; [.3433.0020.0002.A12E] # YI SYLLABLE TE
-A12F ; [.3434.0020.0002.A12F] # YI SYLLABLE TEP
-A130 ; [.3435.0020.0002.A130] # YI SYLLABLE TUT
-A131 ; [.3436.0020.0002.A131] # YI SYLLABLE TUX
-A132 ; [.3437.0020.0002.A132] # YI SYLLABLE TU
-A133 ; [.3438.0020.0002.A133] # YI SYLLABLE TUP
-A134 ; [.3439.0020.0002.A134] # YI SYLLABLE TURX
-A135 ; [.343A.0020.0002.A135] # YI SYLLABLE TUR
-A136 ; [.343B.0020.0002.A136] # YI SYLLABLE DDIT
-A137 ; [.343C.0020.0002.A137] # YI SYLLABLE DDIX
-A138 ; [.343D.0020.0002.A138] # YI SYLLABLE DDI
-A139 ; [.343E.0020.0002.A139] # YI SYLLABLE DDIP
-A13A ; [.343F.0020.0002.A13A] # YI SYLLABLE DDIEX
-A13B ; [.3440.0020.0002.A13B] # YI SYLLABLE DDIE
-A13C ; [.3441.0020.0002.A13C] # YI SYLLABLE DDIEP
-A13D ; [.3442.0020.0002.A13D] # YI SYLLABLE DDAT
-A13E ; [.3443.0020.0002.A13E] # YI SYLLABLE DDAX
-A13F ; [.3444.0020.0002.A13F] # YI SYLLABLE DDA
-A140 ; [.3445.0020.0002.A140] # YI SYLLABLE DDAP
-A141 ; [.3446.0020.0002.A141] # YI SYLLABLE DDUOX
-A142 ; [.3447.0020.0002.A142] # YI SYLLABLE DDUO
-A143 ; [.3448.0020.0002.A143] # YI SYLLABLE DDUOP
-A144 ; [.3449.0020.0002.A144] # YI SYLLABLE DDOT
-A145 ; [.344A.0020.0002.A145] # YI SYLLABLE DDOX
-A146 ; [.344B.0020.0002.A146] # YI SYLLABLE DDO
-A147 ; [.344C.0020.0002.A147] # YI SYLLABLE DDOP
-A148 ; [.344D.0020.0002.A148] # YI SYLLABLE DDEX
-A149 ; [.344E.0020.0002.A149] # YI SYLLABLE DDE
-A14A ; [.344F.0020.0002.A14A] # YI SYLLABLE DDEP
-A14B ; [.3450.0020.0002.A14B] # YI SYLLABLE DDUT
-A14C ; [.3451.0020.0002.A14C] # YI SYLLABLE DDUX
-A14D ; [.3452.0020.0002.A14D] # YI SYLLABLE DDU
-A14E ; [.3453.0020.0002.A14E] # YI SYLLABLE DDUP
-A14F ; [.3454.0020.0002.A14F] # YI SYLLABLE DDURX
-A150 ; [.3455.0020.0002.A150] # YI SYLLABLE DDUR
-A151 ; [.3456.0020.0002.A151] # YI SYLLABLE NDIT
-A152 ; [.3457.0020.0002.A152] # YI SYLLABLE NDIX
-A153 ; [.3458.0020.0002.A153] # YI SYLLABLE NDI
-A154 ; [.3459.0020.0002.A154] # YI SYLLABLE NDIP
-A155 ; [.345A.0020.0002.A155] # YI SYLLABLE NDIEX
-A156 ; [.345B.0020.0002.A156] # YI SYLLABLE NDIE
-A157 ; [.345C.0020.0002.A157] # YI SYLLABLE NDAT
-A158 ; [.345D.0020.0002.A158] # YI SYLLABLE NDAX
-A159 ; [.345E.0020.0002.A159] # YI SYLLABLE NDA
-A15A ; [.345F.0020.0002.A15A] # YI SYLLABLE NDAP
-A15B ; [.3460.0020.0002.A15B] # YI SYLLABLE NDOT
-A15C ; [.3461.0020.0002.A15C] # YI SYLLABLE NDOX
-A15D ; [.3462.0020.0002.A15D] # YI SYLLABLE NDO
-A15E ; [.3463.0020.0002.A15E] # YI SYLLABLE NDOP
-A15F ; [.3464.0020.0002.A15F] # YI SYLLABLE NDEX
-A160 ; [.3465.0020.0002.A160] # YI SYLLABLE NDE
-A161 ; [.3466.0020.0002.A161] # YI SYLLABLE NDEP
-A162 ; [.3467.0020.0002.A162] # YI SYLLABLE NDUT
-A163 ; [.3468.0020.0002.A163] # YI SYLLABLE NDUX
-A164 ; [.3469.0020.0002.A164] # YI SYLLABLE NDU
-A165 ; [.346A.0020.0002.A165] # YI SYLLABLE NDUP
-A166 ; [.346B.0020.0002.A166] # YI SYLLABLE NDURX
-A167 ; [.346C.0020.0002.A167] # YI SYLLABLE NDUR
-A168 ; [.346D.0020.0002.A168] # YI SYLLABLE HNIT
-A169 ; [.346E.0020.0002.A169] # YI SYLLABLE HNIX
-A16A ; [.346F.0020.0002.A16A] # YI SYLLABLE HNI
-A16B ; [.3470.0020.0002.A16B] # YI SYLLABLE HNIP
-A16C ; [.3471.0020.0002.A16C] # YI SYLLABLE HNIET
-A16D ; [.3472.0020.0002.A16D] # YI SYLLABLE HNIEX
-A16E ; [.3473.0020.0002.A16E] # YI SYLLABLE HNIE
-A16F ; [.3474.0020.0002.A16F] # YI SYLLABLE HNIEP
-A170 ; [.3475.0020.0002.A170] # YI SYLLABLE HNAT
-A171 ; [.3476.0020.0002.A171] # YI SYLLABLE HNAX
-A172 ; [.3477.0020.0002.A172] # YI SYLLABLE HNA
-A173 ; [.3478.0020.0002.A173] # YI SYLLABLE HNAP
-A174 ; [.3479.0020.0002.A174] # YI SYLLABLE HNUOX
-A175 ; [.347A.0020.0002.A175] # YI SYLLABLE HNUO
-A176 ; [.347B.0020.0002.A176] # YI SYLLABLE HNOT
-A177 ; [.347C.0020.0002.A177] # YI SYLLABLE HNOX
-A178 ; [.347D.0020.0002.A178] # YI SYLLABLE HNOP
-A179 ; [.347E.0020.0002.A179] # YI SYLLABLE HNEX
-A17A ; [.347F.0020.0002.A17A] # YI SYLLABLE HNE
-A17B ; [.3480.0020.0002.A17B] # YI SYLLABLE HNEP
-A17C ; [.3481.0020.0002.A17C] # YI SYLLABLE HNUT
-A17D ; [.3482.0020.0002.A17D] # YI SYLLABLE NIT
-A17E ; [.3483.0020.0002.A17E] # YI SYLLABLE NIX
-A17F ; [.3484.0020.0002.A17F] # YI SYLLABLE NI
-A180 ; [.3485.0020.0002.A180] # YI SYLLABLE NIP
-A181 ; [.3486.0020.0002.A181] # YI SYLLABLE NIEX
-A182 ; [.3487.0020.0002.A182] # YI SYLLABLE NIE
-A183 ; [.3488.0020.0002.A183] # YI SYLLABLE NIEP
-A184 ; [.3489.0020.0002.A184] # YI SYLLABLE NAX
-A185 ; [.348A.0020.0002.A185] # YI SYLLABLE NA
-A186 ; [.348B.0020.0002.A186] # YI SYLLABLE NAP
-A187 ; [.348C.0020.0002.A187] # YI SYLLABLE NUOX
-A188 ; [.348D.0020.0002.A188] # YI SYLLABLE NUO
-A189 ; [.348E.0020.0002.A189] # YI SYLLABLE NUOP
-A18A ; [.348F.0020.0002.A18A] # YI SYLLABLE NOT
-A18B ; [.3490.0020.0002.A18B] # YI SYLLABLE NOX
-A18C ; [.3491.0020.0002.A18C] # YI SYLLABLE NO
-A18D ; [.3492.0020.0002.A18D] # YI SYLLABLE NOP
-A18E ; [.3493.0020.0002.A18E] # YI SYLLABLE NEX
-A18F ; [.3494.0020.0002.A18F] # YI SYLLABLE NE
-A190 ; [.3495.0020.0002.A190] # YI SYLLABLE NEP
-A191 ; [.3496.0020.0002.A191] # YI SYLLABLE NUT
-A192 ; [.3497.0020.0002.A192] # YI SYLLABLE NUX
-A193 ; [.3498.0020.0002.A193] # YI SYLLABLE NU
-A194 ; [.3499.0020.0002.A194] # YI SYLLABLE NUP
-A195 ; [.349A.0020.0002.A195] # YI SYLLABLE NURX
-A196 ; [.349B.0020.0002.A196] # YI SYLLABLE NUR
-A197 ; [.349C.0020.0002.A197] # YI SYLLABLE HLIT
-A198 ; [.349D.0020.0002.A198] # YI SYLLABLE HLIX
-A199 ; [.349E.0020.0002.A199] # YI SYLLABLE HLI
-A19A ; [.349F.0020.0002.A19A] # YI SYLLABLE HLIP
-A19B ; [.34A0.0020.0002.A19B] # YI SYLLABLE HLIEX
-A19C ; [.34A1.0020.0002.A19C] # YI SYLLABLE HLIE
-A19D ; [.34A2.0020.0002.A19D] # YI SYLLABLE HLIEP
-A19E ; [.34A3.0020.0002.A19E] # YI SYLLABLE HLAT
-A19F ; [.34A4.0020.0002.A19F] # YI SYLLABLE HLAX
-A1A0 ; [.34A5.0020.0002.A1A0] # YI SYLLABLE HLA
-A1A1 ; [.34A6.0020.0002.A1A1] # YI SYLLABLE HLAP
-A1A2 ; [.34A7.0020.0002.A1A2] # YI SYLLABLE HLUOX
-A1A3 ; [.34A8.0020.0002.A1A3] # YI SYLLABLE HLUO
-A1A4 ; [.34A9.0020.0002.A1A4] # YI SYLLABLE HLUOP
-A1A5 ; [.34AA.0020.0002.A1A5] # YI SYLLABLE HLOX
-A1A6 ; [.34AB.0020.0002.A1A6] # YI SYLLABLE HLO
-A1A7 ; [.34AC.0020.0002.A1A7] # YI SYLLABLE HLOP
-A1A8 ; [.34AD.0020.0002.A1A8] # YI SYLLABLE HLEX
-A1A9 ; [.34AE.0020.0002.A1A9] # YI SYLLABLE HLE
-A1AA ; [.34AF.0020.0002.A1AA] # YI SYLLABLE HLEP
-A1AB ; [.34B0.0020.0002.A1AB] # YI SYLLABLE HLUT
-A1AC ; [.34B1.0020.0002.A1AC] # YI SYLLABLE HLUX
-A1AD ; [.34B2.0020.0002.A1AD] # YI SYLLABLE HLU
-A1AE ; [.34B3.0020.0002.A1AE] # YI SYLLABLE HLUP
-A1AF ; [.34B4.0020.0002.A1AF] # YI SYLLABLE HLURX
-A1B0 ; [.34B5.0020.0002.A1B0] # YI SYLLABLE HLUR
-A1B1 ; [.34B6.0020.0002.A1B1] # YI SYLLABLE HLYT
-A1B2 ; [.34B7.0020.0002.A1B2] # YI SYLLABLE HLYX
-A1B3 ; [.34B8.0020.0002.A1B3] # YI SYLLABLE HLY
-A1B4 ; [.34B9.0020.0002.A1B4] # YI SYLLABLE HLYP
-A1B5 ; [.34BA.0020.0002.A1B5] # YI SYLLABLE HLYRX
-A1B6 ; [.34BB.0020.0002.A1B6] # YI SYLLABLE HLYR
-A1B7 ; [.34BC.0020.0002.A1B7] # YI SYLLABLE LIT
-A1B8 ; [.34BD.0020.0002.A1B8] # YI SYLLABLE LIX
-A1B9 ; [.34BE.0020.0002.A1B9] # YI SYLLABLE LI
-A1BA ; [.34BF.0020.0002.A1BA] # YI SYLLABLE LIP
-A1BB ; [.34C0.0020.0002.A1BB] # YI SYLLABLE LIET
-A1BC ; [.34C1.0020.0002.A1BC] # YI SYLLABLE LIEX
-A1BD ; [.34C2.0020.0002.A1BD] # YI SYLLABLE LIE
-A1BE ; [.34C3.0020.0002.A1BE] # YI SYLLABLE LIEP
-A1BF ; [.34C4.0020.0002.A1BF] # YI SYLLABLE LAT
-A1C0 ; [.34C5.0020.0002.A1C0] # YI SYLLABLE LAX
-A1C1 ; [.34C6.0020.0002.A1C1] # YI SYLLABLE LA
-A1C2 ; [.34C7.0020.0002.A1C2] # YI SYLLABLE LAP
-A1C3 ; [.34C8.0020.0002.A1C3] # YI SYLLABLE LUOT
-A1C4 ; [.34C9.0020.0002.A1C4] # YI SYLLABLE LUOX
-A1C5 ; [.34CA.0020.0002.A1C5] # YI SYLLABLE LUO
-A1C6 ; [.34CB.0020.0002.A1C6] # YI SYLLABLE LUOP
-A1C7 ; [.34CC.0020.0002.A1C7] # YI SYLLABLE LOT
-A1C8 ; [.34CD.0020.0002.A1C8] # YI SYLLABLE LOX
-A1C9 ; [.34CE.0020.0002.A1C9] # YI SYLLABLE LO
-A1CA ; [.34CF.0020.0002.A1CA] # YI SYLLABLE LOP
-A1CB ; [.34D0.0020.0002.A1CB] # YI SYLLABLE LEX
-A1CC ; [.34D1.0020.0002.A1CC] # YI SYLLABLE LE
-A1CD ; [.34D2.0020.0002.A1CD] # YI SYLLABLE LEP
-A1CE ; [.34D3.0020.0002.A1CE] # YI SYLLABLE LUT
-A1CF ; [.34D4.0020.0002.A1CF] # YI SYLLABLE LUX
-A1D0 ; [.34D5.0020.0002.A1D0] # YI SYLLABLE LU
-A1D1 ; [.34D6.0020.0002.A1D1] # YI SYLLABLE LUP
-A1D2 ; [.34D7.0020.0002.A1D2] # YI SYLLABLE LURX
-A1D3 ; [.34D8.0020.0002.A1D3] # YI SYLLABLE LUR
-A1D4 ; [.34D9.0020.0002.A1D4] # YI SYLLABLE LYT
-A1D5 ; [.34DA.0020.0002.A1D5] # YI SYLLABLE LYX
-A1D6 ; [.34DB.0020.0002.A1D6] # YI SYLLABLE LY
-A1D7 ; [.34DC.0020.0002.A1D7] # YI SYLLABLE LYP
-A1D8 ; [.34DD.0020.0002.A1D8] # YI SYLLABLE LYRX
-A1D9 ; [.34DE.0020.0002.A1D9] # YI SYLLABLE LYR
-A1DA ; [.34DF.0020.0002.A1DA] # YI SYLLABLE GIT
-A1DB ; [.34E0.0020.0002.A1DB] # YI SYLLABLE GIX
-A1DC ; [.34E1.0020.0002.A1DC] # YI SYLLABLE GI
-A1DD ; [.34E2.0020.0002.A1DD] # YI SYLLABLE GIP
-A1DE ; [.34E3.0020.0002.A1DE] # YI SYLLABLE GIET
-A1DF ; [.34E4.0020.0002.A1DF] # YI SYLLABLE GIEX
-A1E0 ; [.34E5.0020.0002.A1E0] # YI SYLLABLE GIE
-A1E1 ; [.34E6.0020.0002.A1E1] # YI SYLLABLE GIEP
-A1E2 ; [.34E7.0020.0002.A1E2] # YI SYLLABLE GAT
-A1E3 ; [.34E8.0020.0002.A1E3] # YI SYLLABLE GAX
-A1E4 ; [.34E9.0020.0002.A1E4] # YI SYLLABLE GA
-A1E5 ; [.34EA.0020.0002.A1E5] # YI SYLLABLE GAP
-A1E6 ; [.34EB.0020.0002.A1E6] # YI SYLLABLE GUOT
-A1E7 ; [.34EC.0020.0002.A1E7] # YI SYLLABLE GUOX
-A1E8 ; [.34ED.0020.0002.A1E8] # YI SYLLABLE GUO
-A1E9 ; [.34EE.0020.0002.A1E9] # YI SYLLABLE GUOP
-A1EA ; [.34EF.0020.0002.A1EA] # YI SYLLABLE GOT
-A1EB ; [.34F0.0020.0002.A1EB] # YI SYLLABLE GOX
-A1EC ; [.34F1.0020.0002.A1EC] # YI SYLLABLE GO
-A1ED ; [.34F2.0020.0002.A1ED] # YI SYLLABLE GOP
-A1EE ; [.34F3.0020.0002.A1EE] # YI SYLLABLE GET
-A1EF ; [.34F4.0020.0002.A1EF] # YI SYLLABLE GEX
-A1F0 ; [.34F5.0020.0002.A1F0] # YI SYLLABLE GE
-A1F1 ; [.34F6.0020.0002.A1F1] # YI SYLLABLE GEP
-A1F2 ; [.34F7.0020.0002.A1F2] # YI SYLLABLE GUT
-A1F3 ; [.34F8.0020.0002.A1F3] # YI SYLLABLE GUX
-A1F4 ; [.34F9.0020.0002.A1F4] # YI SYLLABLE GU
-A1F5 ; [.34FA.0020.0002.A1F5] # YI SYLLABLE GUP
-A1F6 ; [.34FB.0020.0002.A1F6] # YI SYLLABLE GURX
-A1F7 ; [.34FC.0020.0002.A1F7] # YI SYLLABLE GUR
-A1F8 ; [.34FD.0020.0002.A1F8] # YI SYLLABLE KIT
-A1F9 ; [.34FE.0020.0002.A1F9] # YI SYLLABLE KIX
-A1FA ; [.34FF.0020.0002.A1FA] # YI SYLLABLE KI
-A1FB ; [.3500.0020.0002.A1FB] # YI SYLLABLE KIP
-A1FC ; [.3501.0020.0002.A1FC] # YI SYLLABLE KIEX
-A1FD ; [.3502.0020.0002.A1FD] # YI SYLLABLE KIE
-A1FE ; [.3503.0020.0002.A1FE] # YI SYLLABLE KIEP
-A1FF ; [.3504.0020.0002.A1FF] # YI SYLLABLE KAT
-A200 ; [.3505.0020.0002.A200] # YI SYLLABLE KAX
-A201 ; [.3506.0020.0002.A201] # YI SYLLABLE KA
-A202 ; [.3507.0020.0002.A202] # YI SYLLABLE KAP
-A203 ; [.3508.0020.0002.A203] # YI SYLLABLE KUOX
-A204 ; [.3509.0020.0002.A204] # YI SYLLABLE KUO
-A205 ; [.350A.0020.0002.A205] # YI SYLLABLE KUOP
-A206 ; [.350B.0020.0002.A206] # YI SYLLABLE KOT
-A207 ; [.350C.0020.0002.A207] # YI SYLLABLE KOX
-A208 ; [.350D.0020.0002.A208] # YI SYLLABLE KO
-A209 ; [.350E.0020.0002.A209] # YI SYLLABLE KOP
-A20A ; [.350F.0020.0002.A20A] # YI SYLLABLE KET
-A20B ; [.3510.0020.0002.A20B] # YI SYLLABLE KEX
-A20C ; [.3511.0020.0002.A20C] # YI SYLLABLE KE
-A20D ; [.3512.0020.0002.A20D] # YI SYLLABLE KEP
-A20E ; [.3513.0020.0002.A20E] # YI SYLLABLE KUT
-A20F ; [.3514.0020.0002.A20F] # YI SYLLABLE KUX
-A210 ; [.3515.0020.0002.A210] # YI SYLLABLE KU
-A211 ; [.3516.0020.0002.A211] # YI SYLLABLE KUP
-A212 ; [.3517.0020.0002.A212] # YI SYLLABLE KURX
-A213 ; [.3518.0020.0002.A213] # YI SYLLABLE KUR
-A214 ; [.3519.0020.0002.A214] # YI SYLLABLE GGIT
-A215 ; [.351A.0020.0002.A215] # YI SYLLABLE GGIX
-A216 ; [.351B.0020.0002.A216] # YI SYLLABLE GGI
-A217 ; [.351C.0020.0002.A217] # YI SYLLABLE GGIEX
-A218 ; [.351D.0020.0002.A218] # YI SYLLABLE GGIE
-A219 ; [.351E.0020.0002.A219] # YI SYLLABLE GGIEP
-A21A ; [.351F.0020.0002.A21A] # YI SYLLABLE GGAT
-A21B ; [.3520.0020.0002.A21B] # YI SYLLABLE GGAX
-A21C ; [.3521.0020.0002.A21C] # YI SYLLABLE GGA
-A21D ; [.3522.0020.0002.A21D] # YI SYLLABLE GGAP
-A21E ; [.3523.0020.0002.A21E] # YI SYLLABLE GGUOT
-A21F ; [.3524.0020.0002.A21F] # YI SYLLABLE GGUOX
-A220 ; [.3525.0020.0002.A220] # YI SYLLABLE GGUO
-A221 ; [.3526.0020.0002.A221] # YI SYLLABLE GGUOP
-A222 ; [.3527.0020.0002.A222] # YI SYLLABLE GGOT
-A223 ; [.3528.0020.0002.A223] # YI SYLLABLE GGOX
-A224 ; [.3529.0020.0002.A224] # YI SYLLABLE GGO
-A225 ; [.352A.0020.0002.A225] # YI SYLLABLE GGOP
-A226 ; [.352B.0020.0002.A226] # YI SYLLABLE GGET
-A227 ; [.352C.0020.0002.A227] # YI SYLLABLE GGEX
-A228 ; [.352D.0020.0002.A228] # YI SYLLABLE GGE
-A229 ; [.352E.0020.0002.A229] # YI SYLLABLE GGEP
-A22A ; [.352F.0020.0002.A22A] # YI SYLLABLE GGUT
-A22B ; [.3530.0020.0002.A22B] # YI SYLLABLE GGUX
-A22C ; [.3531.0020.0002.A22C] # YI SYLLABLE GGU
-A22D ; [.3532.0020.0002.A22D] # YI SYLLABLE GGUP
-A22E ; [.3533.0020.0002.A22E] # YI SYLLABLE GGURX
-A22F ; [.3534.0020.0002.A22F] # YI SYLLABLE GGUR
-A230 ; [.3535.0020.0002.A230] # YI SYLLABLE MGIEX
-A231 ; [.3536.0020.0002.A231] # YI SYLLABLE MGIE
-A232 ; [.3537.0020.0002.A232] # YI SYLLABLE MGAT
-A233 ; [.3538.0020.0002.A233] # YI SYLLABLE MGAX
-A234 ; [.3539.0020.0002.A234] # YI SYLLABLE MGA
-A235 ; [.353A.0020.0002.A235] # YI SYLLABLE MGAP
-A236 ; [.353B.0020.0002.A236] # YI SYLLABLE MGUOX
-A237 ; [.353C.0020.0002.A237] # YI SYLLABLE MGUO
-A238 ; [.353D.0020.0002.A238] # YI SYLLABLE MGUOP
-A239 ; [.353E.0020.0002.A239] # YI SYLLABLE MGOT
-A23A ; [.353F.0020.0002.A23A] # YI SYLLABLE MGOX
-A23B ; [.3540.0020.0002.A23B] # YI SYLLABLE MGO
-A23C ; [.3541.0020.0002.A23C] # YI SYLLABLE MGOP
-A23D ; [.3542.0020.0002.A23D] # YI SYLLABLE MGEX
-A23E ; [.3543.0020.0002.A23E] # YI SYLLABLE MGE
-A23F ; [.3544.0020.0002.A23F] # YI SYLLABLE MGEP
-A240 ; [.3545.0020.0002.A240] # YI SYLLABLE MGUT
-A241 ; [.3546.0020.0002.A241] # YI SYLLABLE MGUX
-A242 ; [.3547.0020.0002.A242] # YI SYLLABLE MGU
-A243 ; [.3548.0020.0002.A243] # YI SYLLABLE MGUP
-A244 ; [.3549.0020.0002.A244] # YI SYLLABLE MGURX
-A245 ; [.354A.0020.0002.A245] # YI SYLLABLE MGUR
-A246 ; [.354B.0020.0002.A246] # YI SYLLABLE HXIT
-A247 ; [.354C.0020.0002.A247] # YI SYLLABLE HXIX
-A248 ; [.354D.0020.0002.A248] # YI SYLLABLE HXI
-A249 ; [.354E.0020.0002.A249] # YI SYLLABLE HXIP
-A24A ; [.354F.0020.0002.A24A] # YI SYLLABLE HXIET
-A24B ; [.3550.0020.0002.A24B] # YI SYLLABLE HXIEX
-A24C ; [.3551.0020.0002.A24C] # YI SYLLABLE HXIE
-A24D ; [.3552.0020.0002.A24D] # YI SYLLABLE HXIEP
-A24E ; [.3553.0020.0002.A24E] # YI SYLLABLE HXAT
-A24F ; [.3554.0020.0002.A24F] # YI SYLLABLE HXAX
-A250 ; [.3555.0020.0002.A250] # YI SYLLABLE HXA
-A251 ; [.3556.0020.0002.A251] # YI SYLLABLE HXAP
-A252 ; [.3557.0020.0002.A252] # YI SYLLABLE HXUOT
-A253 ; [.3558.0020.0002.A253] # YI SYLLABLE HXUOX
-A254 ; [.3559.0020.0002.A254] # YI SYLLABLE HXUO
-A255 ; [.355A.0020.0002.A255] # YI SYLLABLE HXUOP
-A256 ; [.355B.0020.0002.A256] # YI SYLLABLE HXOT
-A257 ; [.355C.0020.0002.A257] # YI SYLLABLE HXOX
-A258 ; [.355D.0020.0002.A258] # YI SYLLABLE HXO
-A259 ; [.355E.0020.0002.A259] # YI SYLLABLE HXOP
-A25A ; [.355F.0020.0002.A25A] # YI SYLLABLE HXEX
-A25B ; [.3560.0020.0002.A25B] # YI SYLLABLE HXE
-A25C ; [.3561.0020.0002.A25C] # YI SYLLABLE HXEP
-A25D ; [.3562.0020.0002.A25D] # YI SYLLABLE NGIEX
-A25E ; [.3563.0020.0002.A25E] # YI SYLLABLE NGIE
-A25F ; [.3564.0020.0002.A25F] # YI SYLLABLE NGIEP
-A260 ; [.3565.0020.0002.A260] # YI SYLLABLE NGAT
-A261 ; [.3566.0020.0002.A261] # YI SYLLABLE NGAX
-A262 ; [.3567.0020.0002.A262] # YI SYLLABLE NGA
-A263 ; [.3568.0020.0002.A263] # YI SYLLABLE NGAP
-A264 ; [.3569.0020.0002.A264] # YI SYLLABLE NGUOT
-A265 ; [.356A.0020.0002.A265] # YI SYLLABLE NGUOX
-A266 ; [.356B.0020.0002.A266] # YI SYLLABLE NGUO
-A267 ; [.356C.0020.0002.A267] # YI SYLLABLE NGOT
-A268 ; [.356D.0020.0002.A268] # YI SYLLABLE NGOX
-A269 ; [.356E.0020.0002.A269] # YI SYLLABLE NGO
-A26A ; [.356F.0020.0002.A26A] # YI SYLLABLE NGOP
-A26B ; [.3570.0020.0002.A26B] # YI SYLLABLE NGEX
-A26C ; [.3571.0020.0002.A26C] # YI SYLLABLE NGE
-A26D ; [.3572.0020.0002.A26D] # YI SYLLABLE NGEP
-A26E ; [.3573.0020.0002.A26E] # YI SYLLABLE HIT
-A26F ; [.3574.0020.0002.A26F] # YI SYLLABLE HIEX
-A270 ; [.3575.0020.0002.A270] # YI SYLLABLE HIE
-A271 ; [.3576.0020.0002.A271] # YI SYLLABLE HAT
-A272 ; [.3577.0020.0002.A272] # YI SYLLABLE HAX
-A273 ; [.3578.0020.0002.A273] # YI SYLLABLE HA
-A274 ; [.3579.0020.0002.A274] # YI SYLLABLE HAP
-A275 ; [.357A.0020.0002.A275] # YI SYLLABLE HUOT
-A276 ; [.357B.0020.0002.A276] # YI SYLLABLE HUOX
-A277 ; [.357C.0020.0002.A277] # YI SYLLABLE HUO
-A278 ; [.357D.0020.0002.A278] # YI SYLLABLE HUOP
-A279 ; [.357E.0020.0002.A279] # YI SYLLABLE HOT
-A27A ; [.357F.0020.0002.A27A] # YI SYLLABLE HOX
-A27B ; [.3580.0020.0002.A27B] # YI SYLLABLE HO
-A27C ; [.3581.0020.0002.A27C] # YI SYLLABLE HOP
-A27D ; [.3582.0020.0002.A27D] # YI SYLLABLE HEX
-A27E ; [.3583.0020.0002.A27E] # YI SYLLABLE HE
-A27F ; [.3584.0020.0002.A27F] # YI SYLLABLE HEP
-A280 ; [.3585.0020.0002.A280] # YI SYLLABLE WAT
-A281 ; [.3586.0020.0002.A281] # YI SYLLABLE WAX
-A282 ; [.3587.0020.0002.A282] # YI SYLLABLE WA
-A283 ; [.3588.0020.0002.A283] # YI SYLLABLE WAP
-A284 ; [.3589.0020.0002.A284] # YI SYLLABLE WUOX
-A285 ; [.358A.0020.0002.A285] # YI SYLLABLE WUO
-A286 ; [.358B.0020.0002.A286] # YI SYLLABLE WUOP
-A287 ; [.358C.0020.0002.A287] # YI SYLLABLE WOX
-A288 ; [.358D.0020.0002.A288] # YI SYLLABLE WO
-A289 ; [.358E.0020.0002.A289] # YI SYLLABLE WOP
-A28A ; [.358F.0020.0002.A28A] # YI SYLLABLE WEX
-A28B ; [.3590.0020.0002.A28B] # YI SYLLABLE WE
-A28C ; [.3591.0020.0002.A28C] # YI SYLLABLE WEP
-A28D ; [.3592.0020.0002.A28D] # YI SYLLABLE ZIT
-A28E ; [.3593.0020.0002.A28E] # YI SYLLABLE ZIX
-A28F ; [.3594.0020.0002.A28F] # YI SYLLABLE ZI
-A290 ; [.3595.0020.0002.A290] # YI SYLLABLE ZIP
-A291 ; [.3596.0020.0002.A291] # YI SYLLABLE ZIEX
-A292 ; [.3597.0020.0002.A292] # YI SYLLABLE ZIE
-A293 ; [.3598.0020.0002.A293] # YI SYLLABLE ZIEP
-A294 ; [.3599.0020.0002.A294] # YI SYLLABLE ZAT
-A295 ; [.359A.0020.0002.A295] # YI SYLLABLE ZAX
-A296 ; [.359B.0020.0002.A296] # YI SYLLABLE ZA
-A297 ; [.359C.0020.0002.A297] # YI SYLLABLE ZAP
-A298 ; [.359D.0020.0002.A298] # YI SYLLABLE ZUOX
-A299 ; [.359E.0020.0002.A299] # YI SYLLABLE ZUO
-A29A ; [.359F.0020.0002.A29A] # YI SYLLABLE ZUOP
-A29B ; [.35A0.0020.0002.A29B] # YI SYLLABLE ZOT
-A29C ; [.35A1.0020.0002.A29C] # YI SYLLABLE ZOX
-A29D ; [.35A2.0020.0002.A29D] # YI SYLLABLE ZO
-A29E ; [.35A3.0020.0002.A29E] # YI SYLLABLE ZOP
-A29F ; [.35A4.0020.0002.A29F] # YI SYLLABLE ZEX
-A2A0 ; [.35A5.0020.0002.A2A0] # YI SYLLABLE ZE
-A2A1 ; [.35A6.0020.0002.A2A1] # YI SYLLABLE ZEP
-A2A2 ; [.35A7.0020.0002.A2A2] # YI SYLLABLE ZUT
-A2A3 ; [.35A8.0020.0002.A2A3] # YI SYLLABLE ZUX
-A2A4 ; [.35A9.0020.0002.A2A4] # YI SYLLABLE ZU
-A2A5 ; [.35AA.0020.0002.A2A5] # YI SYLLABLE ZUP
-A2A6 ; [.35AB.0020.0002.A2A6] # YI SYLLABLE ZURX
-A2A7 ; [.35AC.0020.0002.A2A7] # YI SYLLABLE ZUR
-A2A8 ; [.35AD.0020.0002.A2A8] # YI SYLLABLE ZYT
-A2A9 ; [.35AE.0020.0002.A2A9] # YI SYLLABLE ZYX
-A2AA ; [.35AF.0020.0002.A2AA] # YI SYLLABLE ZY
-A2AB ; [.35B0.0020.0002.A2AB] # YI SYLLABLE ZYP
-A2AC ; [.35B1.0020.0002.A2AC] # YI SYLLABLE ZYRX
-A2AD ; [.35B2.0020.0002.A2AD] # YI SYLLABLE ZYR
-A2AE ; [.35B3.0020.0002.A2AE] # YI SYLLABLE CIT
-A2AF ; [.35B4.0020.0002.A2AF] # YI SYLLABLE CIX
-A2B0 ; [.35B5.0020.0002.A2B0] # YI SYLLABLE CI
-A2B1 ; [.35B6.0020.0002.A2B1] # YI SYLLABLE CIP
-A2B2 ; [.35B7.0020.0002.A2B2] # YI SYLLABLE CIET
-A2B3 ; [.35B8.0020.0002.A2B3] # YI SYLLABLE CIEX
-A2B4 ; [.35B9.0020.0002.A2B4] # YI SYLLABLE CIE
-A2B5 ; [.35BA.0020.0002.A2B5] # YI SYLLABLE CIEP
-A2B6 ; [.35BB.0020.0002.A2B6] # YI SYLLABLE CAT
-A2B7 ; [.35BC.0020.0002.A2B7] # YI SYLLABLE CAX
-A2B8 ; [.35BD.0020.0002.A2B8] # YI SYLLABLE CA
-A2B9 ; [.35BE.0020.0002.A2B9] # YI SYLLABLE CAP
-A2BA ; [.35BF.0020.0002.A2BA] # YI SYLLABLE CUOX
-A2BB ; [.35C0.0020.0002.A2BB] # YI SYLLABLE CUO
-A2BC ; [.35C1.0020.0002.A2BC] # YI SYLLABLE CUOP
-A2BD ; [.35C2.0020.0002.A2BD] # YI SYLLABLE COT
-A2BE ; [.35C3.0020.0002.A2BE] # YI SYLLABLE COX
-A2BF ; [.35C4.0020.0002.A2BF] # YI SYLLABLE CO
-A2C0 ; [.35C5.0020.0002.A2C0] # YI SYLLABLE COP
-A2C1 ; [.35C6.0020.0002.A2C1] # YI SYLLABLE CEX
-A2C2 ; [.35C7.0020.0002.A2C2] # YI SYLLABLE CE
-A2C3 ; [.35C8.0020.0002.A2C3] # YI SYLLABLE CEP
-A2C4 ; [.35C9.0020.0002.A2C4] # YI SYLLABLE CUT
-A2C5 ; [.35CA.0020.0002.A2C5] # YI SYLLABLE CUX
-A2C6 ; [.35CB.0020.0002.A2C6] # YI SYLLABLE CU
-A2C7 ; [.35CC.0020.0002.A2C7] # YI SYLLABLE CUP
-A2C8 ; [.35CD.0020.0002.A2C8] # YI SYLLABLE CURX
-A2C9 ; [.35CE.0020.0002.A2C9] # YI SYLLABLE CUR
-A2CA ; [.35CF.0020.0002.A2CA] # YI SYLLABLE CYT
-A2CB ; [.35D0.0020.0002.A2CB] # YI SYLLABLE CYX
-A2CC ; [.35D1.0020.0002.A2CC] # YI SYLLABLE CY
-A2CD ; [.35D2.0020.0002.A2CD] # YI SYLLABLE CYP
-A2CE ; [.35D3.0020.0002.A2CE] # YI SYLLABLE CYRX
-A2CF ; [.35D4.0020.0002.A2CF] # YI SYLLABLE CYR
-A2D0 ; [.35D5.0020.0002.A2D0] # YI SYLLABLE ZZIT
-A2D1 ; [.35D6.0020.0002.A2D1] # YI SYLLABLE ZZIX
-A2D2 ; [.35D7.0020.0002.A2D2] # YI SYLLABLE ZZI
-A2D3 ; [.35D8.0020.0002.A2D3] # YI SYLLABLE ZZIP
-A2D4 ; [.35D9.0020.0002.A2D4] # YI SYLLABLE ZZIET
-A2D5 ; [.35DA.0020.0002.A2D5] # YI SYLLABLE ZZIEX
-A2D6 ; [.35DB.0020.0002.A2D6] # YI SYLLABLE ZZIE
-A2D7 ; [.35DC.0020.0002.A2D7] # YI SYLLABLE ZZIEP
-A2D8 ; [.35DD.0020.0002.A2D8] # YI SYLLABLE ZZAT
-A2D9 ; [.35DE.0020.0002.A2D9] # YI SYLLABLE ZZAX
-A2DA ; [.35DF.0020.0002.A2DA] # YI SYLLABLE ZZA
-A2DB ; [.35E0.0020.0002.A2DB] # YI SYLLABLE ZZAP
-A2DC ; [.35E1.0020.0002.A2DC] # YI SYLLABLE ZZOX
-A2DD ; [.35E2.0020.0002.A2DD] # YI SYLLABLE ZZO
-A2DE ; [.35E3.0020.0002.A2DE] # YI SYLLABLE ZZOP
-A2DF ; [.35E4.0020.0002.A2DF] # YI SYLLABLE ZZEX
-A2E0 ; [.35E5.0020.0002.A2E0] # YI SYLLABLE ZZE
-A2E1 ; [.35E6.0020.0002.A2E1] # YI SYLLABLE ZZEP
-A2E2 ; [.35E7.0020.0002.A2E2] # YI SYLLABLE ZZUX
-A2E3 ; [.35E8.0020.0002.A2E3] # YI SYLLABLE ZZU
-A2E4 ; [.35E9.0020.0002.A2E4] # YI SYLLABLE ZZUP
-A2E5 ; [.35EA.0020.0002.A2E5] # YI SYLLABLE ZZURX
-A2E6 ; [.35EB.0020.0002.A2E6] # YI SYLLABLE ZZUR
-A2E7 ; [.35EC.0020.0002.A2E7] # YI SYLLABLE ZZYT
-A2E8 ; [.35ED.0020.0002.A2E8] # YI SYLLABLE ZZYX
-A2E9 ; [.35EE.0020.0002.A2E9] # YI SYLLABLE ZZY
-A2EA ; [.35EF.0020.0002.A2EA] # YI SYLLABLE ZZYP
-A2EB ; [.35F0.0020.0002.A2EB] # YI SYLLABLE ZZYRX
-A2EC ; [.35F1.0020.0002.A2EC] # YI SYLLABLE ZZYR
-A2ED ; [.35F2.0020.0002.A2ED] # YI SYLLABLE NZIT
-A2EE ; [.35F3.0020.0002.A2EE] # YI SYLLABLE NZIX
-A2EF ; [.35F4.0020.0002.A2EF] # YI SYLLABLE NZI
-A2F0 ; [.35F5.0020.0002.A2F0] # YI SYLLABLE NZIP
-A2F1 ; [.35F6.0020.0002.A2F1] # YI SYLLABLE NZIEX
-A2F2 ; [.35F7.0020.0002.A2F2] # YI SYLLABLE NZIE
-A2F3 ; [.35F8.0020.0002.A2F3] # YI SYLLABLE NZIEP
-A2F4 ; [.35F9.0020.0002.A2F4] # YI SYLLABLE NZAT
-A2F5 ; [.35FA.0020.0002.A2F5] # YI SYLLABLE NZAX
-A2F6 ; [.35FB.0020.0002.A2F6] # YI SYLLABLE NZA
-A2F7 ; [.35FC.0020.0002.A2F7] # YI SYLLABLE NZAP
-A2F8 ; [.35FD.0020.0002.A2F8] # YI SYLLABLE NZUOX
-A2F9 ; [.35FE.0020.0002.A2F9] # YI SYLLABLE NZUO
-A2FA ; [.35FF.0020.0002.A2FA] # YI SYLLABLE NZOX
-A2FB ; [.3600.0020.0002.A2FB] # YI SYLLABLE NZOP
-A2FC ; [.3601.0020.0002.A2FC] # YI SYLLABLE NZEX
-A2FD ; [.3602.0020.0002.A2FD] # YI SYLLABLE NZE
-A2FE ; [.3603.0020.0002.A2FE] # YI SYLLABLE NZUX
-A2FF ; [.3604.0020.0002.A2FF] # YI SYLLABLE NZU
-A300 ; [.3605.0020.0002.A300] # YI SYLLABLE NZUP
-A301 ; [.3606.0020.0002.A301] # YI SYLLABLE NZURX
-A302 ; [.3607.0020.0002.A302] # YI SYLLABLE NZUR
-A303 ; [.3608.0020.0002.A303] # YI SYLLABLE NZYT
-A304 ; [.3609.0020.0002.A304] # YI SYLLABLE NZYX
-A305 ; [.360A.0020.0002.A305] # YI SYLLABLE NZY
-A306 ; [.360B.0020.0002.A306] # YI SYLLABLE NZYP
-A307 ; [.360C.0020.0002.A307] # YI SYLLABLE NZYRX
-A308 ; [.360D.0020.0002.A308] # YI SYLLABLE NZYR
-A309 ; [.360E.0020.0002.A309] # YI SYLLABLE SIT
-A30A ; [.360F.0020.0002.A30A] # YI SYLLABLE SIX
-A30B ; [.3610.0020.0002.A30B] # YI SYLLABLE SI
-A30C ; [.3611.0020.0002.A30C] # YI SYLLABLE SIP
-A30D ; [.3612.0020.0002.A30D] # YI SYLLABLE SIEX
-A30E ; [.3613.0020.0002.A30E] # YI SYLLABLE SIE
-A30F ; [.3614.0020.0002.A30F] # YI SYLLABLE SIEP
-A310 ; [.3615.0020.0002.A310] # YI SYLLABLE SAT
-A311 ; [.3616.0020.0002.A311] # YI SYLLABLE SAX
-A312 ; [.3617.0020.0002.A312] # YI SYLLABLE SA
-A313 ; [.3618.0020.0002.A313] # YI SYLLABLE SAP
-A314 ; [.3619.0020.0002.A314] # YI SYLLABLE SUOX
-A315 ; [.361A.0020.0002.A315] # YI SYLLABLE SUO
-A316 ; [.361B.0020.0002.A316] # YI SYLLABLE SUOP
-A317 ; [.361C.0020.0002.A317] # YI SYLLABLE SOT
-A318 ; [.361D.0020.0002.A318] # YI SYLLABLE SOX
-A319 ; [.361E.0020.0002.A319] # YI SYLLABLE SO
-A31A ; [.361F.0020.0002.A31A] # YI SYLLABLE SOP
-A31B ; [.3620.0020.0002.A31B] # YI SYLLABLE SEX
-A31C ; [.3621.0020.0002.A31C] # YI SYLLABLE SE
-A31D ; [.3622.0020.0002.A31D] # YI SYLLABLE SEP
-A31E ; [.3623.0020.0002.A31E] # YI SYLLABLE SUT
-A31F ; [.3624.0020.0002.A31F] # YI SYLLABLE SUX
-A320 ; [.3625.0020.0002.A320] # YI SYLLABLE SU
-A321 ; [.3626.0020.0002.A321] # YI SYLLABLE SUP
-A322 ; [.3627.0020.0002.A322] # YI SYLLABLE SURX
-A323 ; [.3628.0020.0002.A323] # YI SYLLABLE SUR
-A324 ; [.3629.0020.0002.A324] # YI SYLLABLE SYT
-A325 ; [.362A.0020.0002.A325] # YI SYLLABLE SYX
-A326 ; [.362B.0020.0002.A326] # YI SYLLABLE SY
-A327 ; [.362C.0020.0002.A327] # YI SYLLABLE SYP
-A328 ; [.362D.0020.0002.A328] # YI SYLLABLE SYRX
-A329 ; [.362E.0020.0002.A329] # YI SYLLABLE SYR
-A32A ; [.362F.0020.0002.A32A] # YI SYLLABLE SSIT
-A32B ; [.3630.0020.0002.A32B] # YI SYLLABLE SSIX
-A32C ; [.3631.0020.0002.A32C] # YI SYLLABLE SSI
-A32D ; [.3632.0020.0002.A32D] # YI SYLLABLE SSIP
-A32E ; [.3633.0020.0002.A32E] # YI SYLLABLE SSIEX
-A32F ; [.3634.0020.0002.A32F] # YI SYLLABLE SSIE
-A330 ; [.3635.0020.0002.A330] # YI SYLLABLE SSIEP
-A331 ; [.3636.0020.0002.A331] # YI SYLLABLE SSAT
-A332 ; [.3637.0020.0002.A332] # YI SYLLABLE SSAX
-A333 ; [.3638.0020.0002.A333] # YI SYLLABLE SSA
-A334 ; [.3639.0020.0002.A334] # YI SYLLABLE SSAP
-A335 ; [.363A.0020.0002.A335] # YI SYLLABLE SSOT
-A336 ; [.363B.0020.0002.A336] # YI SYLLABLE SSOX
-A337 ; [.363C.0020.0002.A337] # YI SYLLABLE SSO
-A338 ; [.363D.0020.0002.A338] # YI SYLLABLE SSOP
-A339 ; [.363E.0020.0002.A339] # YI SYLLABLE SSEX
-A33A ; [.363F.0020.0002.A33A] # YI SYLLABLE SSE
-A33B ; [.3640.0020.0002.A33B] # YI SYLLABLE SSEP
-A33C ; [.3641.0020.0002.A33C] # YI SYLLABLE SSUT
-A33D ; [.3642.0020.0002.A33D] # YI SYLLABLE SSUX
-A33E ; [.3643.0020.0002.A33E] # YI SYLLABLE SSU
-A33F ; [.3644.0020.0002.A33F] # YI SYLLABLE SSUP
-A340 ; [.3645.0020.0002.A340] # YI SYLLABLE SSYT
-A341 ; [.3646.0020.0002.A341] # YI SYLLABLE SSYX
-A342 ; [.3647.0020.0002.A342] # YI SYLLABLE SSY
-A343 ; [.3648.0020.0002.A343] # YI SYLLABLE SSYP
-A344 ; [.3649.0020.0002.A344] # YI SYLLABLE SSYRX
-A345 ; [.364A.0020.0002.A345] # YI SYLLABLE SSYR
-A346 ; [.364B.0020.0002.A346] # YI SYLLABLE ZHAT
-A347 ; [.364C.0020.0002.A347] # YI SYLLABLE ZHAX
-A348 ; [.364D.0020.0002.A348] # YI SYLLABLE ZHA
-A349 ; [.364E.0020.0002.A349] # YI SYLLABLE ZHAP
-A34A ; [.364F.0020.0002.A34A] # YI SYLLABLE ZHUOX
-A34B ; [.3650.0020.0002.A34B] # YI SYLLABLE ZHUO
-A34C ; [.3651.0020.0002.A34C] # YI SYLLABLE ZHUOP
-A34D ; [.3652.0020.0002.A34D] # YI SYLLABLE ZHOT
-A34E ; [.3653.0020.0002.A34E] # YI SYLLABLE ZHOX
-A34F ; [.3654.0020.0002.A34F] # YI SYLLABLE ZHO
-A350 ; [.3655.0020.0002.A350] # YI SYLLABLE ZHOP
-A351 ; [.3656.0020.0002.A351] # YI SYLLABLE ZHET
-A352 ; [.3657.0020.0002.A352] # YI SYLLABLE ZHEX
-A353 ; [.3658.0020.0002.A353] # YI SYLLABLE ZHE
-A354 ; [.3659.0020.0002.A354] # YI SYLLABLE ZHEP
-A355 ; [.365A.0020.0002.A355] # YI SYLLABLE ZHUT
-A356 ; [.365B.0020.0002.A356] # YI SYLLABLE ZHUX
-A357 ; [.365C.0020.0002.A357] # YI SYLLABLE ZHU
-A358 ; [.365D.0020.0002.A358] # YI SYLLABLE ZHUP
-A359 ; [.365E.0020.0002.A359] # YI SYLLABLE ZHURX
-A35A ; [.365F.0020.0002.A35A] # YI SYLLABLE ZHUR
-A35B ; [.3660.0020.0002.A35B] # YI SYLLABLE ZHYT
-A35C ; [.3661.0020.0002.A35C] # YI SYLLABLE ZHYX
-A35D ; [.3662.0020.0002.A35D] # YI SYLLABLE ZHY
-A35E ; [.3663.0020.0002.A35E] # YI SYLLABLE ZHYP
-A35F ; [.3664.0020.0002.A35F] # YI SYLLABLE ZHYRX
-A360 ; [.3665.0020.0002.A360] # YI SYLLABLE ZHYR
-A361 ; [.3666.0020.0002.A361] # YI SYLLABLE CHAT
-A362 ; [.3667.0020.0002.A362] # YI SYLLABLE CHAX
-A363 ; [.3668.0020.0002.A363] # YI SYLLABLE CHA
-A364 ; [.3669.0020.0002.A364] # YI SYLLABLE CHAP
-A365 ; [.366A.0020.0002.A365] # YI SYLLABLE CHUOT
-A366 ; [.366B.0020.0002.A366] # YI SYLLABLE CHUOX
-A367 ; [.366C.0020.0002.A367] # YI SYLLABLE CHUO
-A368 ; [.366D.0020.0002.A368] # YI SYLLABLE CHUOP
-A369 ; [.366E.0020.0002.A369] # YI SYLLABLE CHOT
-A36A ; [.366F.0020.0002.A36A] # YI SYLLABLE CHOX
-A36B ; [.3670.0020.0002.A36B] # YI SYLLABLE CHO
-A36C ; [.3671.0020.0002.A36C] # YI SYLLABLE CHOP
-A36D ; [.3672.0020.0002.A36D] # YI SYLLABLE CHET
-A36E ; [.3673.0020.0002.A36E] # YI SYLLABLE CHEX
-A36F ; [.3674.0020.0002.A36F] # YI SYLLABLE CHE
-A370 ; [.3675.0020.0002.A370] # YI SYLLABLE CHEP
-A371 ; [.3676.0020.0002.A371] # YI SYLLABLE CHUX
-A372 ; [.3677.0020.0002.A372] # YI SYLLABLE CHU
-A373 ; [.3678.0020.0002.A373] # YI SYLLABLE CHUP
-A374 ; [.3679.0020.0002.A374] # YI SYLLABLE CHURX
-A375 ; [.367A.0020.0002.A375] # YI SYLLABLE CHUR
-A376 ; [.367B.0020.0002.A376] # YI SYLLABLE CHYT
-A377 ; [.367C.0020.0002.A377] # YI SYLLABLE CHYX
-A378 ; [.367D.0020.0002.A378] # YI SYLLABLE CHY
-A379 ; [.367E.0020.0002.A379] # YI SYLLABLE CHYP
-A37A ; [.367F.0020.0002.A37A] # YI SYLLABLE CHYRX
-A37B ; [.3680.0020.0002.A37B] # YI SYLLABLE CHYR
-A37C ; [.3681.0020.0002.A37C] # YI SYLLABLE RRAX
-A37D ; [.3682.0020.0002.A37D] # YI SYLLABLE RRA
-A37E ; [.3683.0020.0002.A37E] # YI SYLLABLE RRUOX
-A37F ; [.3684.0020.0002.A37F] # YI SYLLABLE RRUO
-A380 ; [.3685.0020.0002.A380] # YI SYLLABLE RROT
-A381 ; [.3686.0020.0002.A381] # YI SYLLABLE RROX
-A382 ; [.3687.0020.0002.A382] # YI SYLLABLE RRO
-A383 ; [.3688.0020.0002.A383] # YI SYLLABLE RROP
-A384 ; [.3689.0020.0002.A384] # YI SYLLABLE RRET
-A385 ; [.368A.0020.0002.A385] # YI SYLLABLE RREX
-A386 ; [.368B.0020.0002.A386] # YI SYLLABLE RRE
-A387 ; [.368C.0020.0002.A387] # YI SYLLABLE RREP
-A388 ; [.368D.0020.0002.A388] # YI SYLLABLE RRUT
-A389 ; [.368E.0020.0002.A389] # YI SYLLABLE RRUX
-A38A ; [.368F.0020.0002.A38A] # YI SYLLABLE RRU
-A38B ; [.3690.0020.0002.A38B] # YI SYLLABLE RRUP
-A38C ; [.3691.0020.0002.A38C] # YI SYLLABLE RRURX
-A38D ; [.3692.0020.0002.A38D] # YI SYLLABLE RRUR
-A38E ; [.3693.0020.0002.A38E] # YI SYLLABLE RRYT
-A38F ; [.3694.0020.0002.A38F] # YI SYLLABLE RRYX
-A390 ; [.3695.0020.0002.A390] # YI SYLLABLE RRY
-A391 ; [.3696.0020.0002.A391] # YI SYLLABLE RRYP
-A392 ; [.3697.0020.0002.A392] # YI SYLLABLE RRYRX
-A393 ; [.3698.0020.0002.A393] # YI SYLLABLE RRYR
-A394 ; [.3699.0020.0002.A394] # YI SYLLABLE NRAT
-A395 ; [.369A.0020.0002.A395] # YI SYLLABLE NRAX
-A396 ; [.369B.0020.0002.A396] # YI SYLLABLE NRA
-A397 ; [.369C.0020.0002.A397] # YI SYLLABLE NRAP
-A398 ; [.369D.0020.0002.A398] # YI SYLLABLE NROX
-A399 ; [.369E.0020.0002.A399] # YI SYLLABLE NRO
-A39A ; [.369F.0020.0002.A39A] # YI SYLLABLE NROP
-A39B ; [.36A0.0020.0002.A39B] # YI SYLLABLE NRET
-A39C ; [.36A1.0020.0002.A39C] # YI SYLLABLE NREX
-A39D ; [.36A2.0020.0002.A39D] # YI SYLLABLE NRE
-A39E ; [.36A3.0020.0002.A39E] # YI SYLLABLE NREP
-A39F ; [.36A4.0020.0002.A39F] # YI SYLLABLE NRUT
-A3A0 ; [.36A5.0020.0002.A3A0] # YI SYLLABLE NRUX
-A3A1 ; [.36A6.0020.0002.A3A1] # YI SYLLABLE NRU
-A3A2 ; [.36A7.0020.0002.A3A2] # YI SYLLABLE NRUP
-A3A3 ; [.36A8.0020.0002.A3A3] # YI SYLLABLE NRURX
-A3A4 ; [.36A9.0020.0002.A3A4] # YI SYLLABLE NRUR
-A3A5 ; [.36AA.0020.0002.A3A5] # YI SYLLABLE NRYT
-A3A6 ; [.36AB.0020.0002.A3A6] # YI SYLLABLE NRYX
-A3A7 ; [.36AC.0020.0002.A3A7] # YI SYLLABLE NRY
-A3A8 ; [.36AD.0020.0002.A3A8] # YI SYLLABLE NRYP
-A3A9 ; [.36AE.0020.0002.A3A9] # YI SYLLABLE NRYRX
-A3AA ; [.36AF.0020.0002.A3AA] # YI SYLLABLE NRYR
-A3AB ; [.36B0.0020.0002.A3AB] # YI SYLLABLE SHAT
-A3AC ; [.36B1.0020.0002.A3AC] # YI SYLLABLE SHAX
-A3AD ; [.36B2.0020.0002.A3AD] # YI SYLLABLE SHA
-A3AE ; [.36B3.0020.0002.A3AE] # YI SYLLABLE SHAP
-A3AF ; [.36B4.0020.0002.A3AF] # YI SYLLABLE SHUOX
-A3B0 ; [.36B5.0020.0002.A3B0] # YI SYLLABLE SHUO
-A3B1 ; [.36B6.0020.0002.A3B1] # YI SYLLABLE SHUOP
-A3B2 ; [.36B7.0020.0002.A3B2] # YI SYLLABLE SHOT
-A3B3 ; [.36B8.0020.0002.A3B3] # YI SYLLABLE SHOX
-A3B4 ; [.36B9.0020.0002.A3B4] # YI SYLLABLE SHO
-A3B5 ; [.36BA.0020.0002.A3B5] # YI SYLLABLE SHOP
-A3B6 ; [.36BB.0020.0002.A3B6] # YI SYLLABLE SHET
-A3B7 ; [.36BC.0020.0002.A3B7] # YI SYLLABLE SHEX
-A3B8 ; [.36BD.0020.0002.A3B8] # YI SYLLABLE SHE
-A3B9 ; [.36BE.0020.0002.A3B9] # YI SYLLABLE SHEP
-A3BA ; [.36BF.0020.0002.A3BA] # YI SYLLABLE SHUT
-A3BB ; [.36C0.0020.0002.A3BB] # YI SYLLABLE SHUX
-A3BC ; [.36C1.0020.0002.A3BC] # YI SYLLABLE SHU
-A3BD ; [.36C2.0020.0002.A3BD] # YI SYLLABLE SHUP
-A3BE ; [.36C3.0020.0002.A3BE] # YI SYLLABLE SHURX
-A3BF ; [.36C4.0020.0002.A3BF] # YI SYLLABLE SHUR
-A3C0 ; [.36C5.0020.0002.A3C0] # YI SYLLABLE SHYT
-A3C1 ; [.36C6.0020.0002.A3C1] # YI SYLLABLE SHYX
-A3C2 ; [.36C7.0020.0002.A3C2] # YI SYLLABLE SHY
-A3C3 ; [.36C8.0020.0002.A3C3] # YI SYLLABLE SHYP
-A3C4 ; [.36C9.0020.0002.A3C4] # YI SYLLABLE SHYRX
-A3C5 ; [.36CA.0020.0002.A3C5] # YI SYLLABLE SHYR
-A3C6 ; [.36CB.0020.0002.A3C6] # YI SYLLABLE RAT
-A3C7 ; [.36CC.0020.0002.A3C7] # YI SYLLABLE RAX
-A3C8 ; [.36CD.0020.0002.A3C8] # YI SYLLABLE RA
-A3C9 ; [.36CE.0020.0002.A3C9] # YI SYLLABLE RAP
-A3CA ; [.36CF.0020.0002.A3CA] # YI SYLLABLE RUOX
-A3CB ; [.36D0.0020.0002.A3CB] # YI SYLLABLE RUO
-A3CC ; [.36D1.0020.0002.A3CC] # YI SYLLABLE RUOP
-A3CD ; [.36D2.0020.0002.A3CD] # YI SYLLABLE ROT
-A3CE ; [.36D3.0020.0002.A3CE] # YI SYLLABLE ROX
-A3CF ; [.36D4.0020.0002.A3CF] # YI SYLLABLE RO
-A3D0 ; [.36D5.0020.0002.A3D0] # YI SYLLABLE ROP
-A3D1 ; [.36D6.0020.0002.A3D1] # YI SYLLABLE REX
-A3D2 ; [.36D7.0020.0002.A3D2] # YI SYLLABLE RE
-A3D3 ; [.36D8.0020.0002.A3D3] # YI SYLLABLE REP
-A3D4 ; [.36D9.0020.0002.A3D4] # YI SYLLABLE RUT
-A3D5 ; [.36DA.0020.0002.A3D5] # YI SYLLABLE RUX
-A3D6 ; [.36DB.0020.0002.A3D6] # YI SYLLABLE RU
-A3D7 ; [.36DC.0020.0002.A3D7] # YI SYLLABLE RUP
-A3D8 ; [.36DD.0020.0002.A3D8] # YI SYLLABLE RURX
-A3D9 ; [.36DE.0020.0002.A3D9] # YI SYLLABLE RUR
-A3DA ; [.36DF.0020.0002.A3DA] # YI SYLLABLE RYT
-A3DB ; [.36E0.0020.0002.A3DB] # YI SYLLABLE RYX
-A3DC ; [.36E1.0020.0002.A3DC] # YI SYLLABLE RY
-A3DD ; [.36E2.0020.0002.A3DD] # YI SYLLABLE RYP
-A3DE ; [.36E3.0020.0002.A3DE] # YI SYLLABLE RYRX
-A3DF ; [.36E4.0020.0002.A3DF] # YI SYLLABLE RYR
-A3E0 ; [.36E5.0020.0002.A3E0] # YI SYLLABLE JIT
-A3E1 ; [.36E6.0020.0002.A3E1] # YI SYLLABLE JIX
-A3E2 ; [.36E7.0020.0002.A3E2] # YI SYLLABLE JI
-A3E3 ; [.36E8.0020.0002.A3E3] # YI SYLLABLE JIP
-A3E4 ; [.36E9.0020.0002.A3E4] # YI SYLLABLE JIET
-A3E5 ; [.36EA.0020.0002.A3E5] # YI SYLLABLE JIEX
-A3E6 ; [.36EB.0020.0002.A3E6] # YI SYLLABLE JIE
-A3E7 ; [.36EC.0020.0002.A3E7] # YI SYLLABLE JIEP
-A3E8 ; [.36ED.0020.0002.A3E8] # YI SYLLABLE JUOT
-A3E9 ; [.36EE.0020.0002.A3E9] # YI SYLLABLE JUOX
-A3EA ; [.36EF.0020.0002.A3EA] # YI SYLLABLE JUO
-A3EB ; [.36F0.0020.0002.A3EB] # YI SYLLABLE JUOP
-A3EC ; [.36F1.0020.0002.A3EC] # YI SYLLABLE JOT
-A3ED ; [.36F2.0020.0002.A3ED] # YI SYLLABLE JOX
-A3EE ; [.36F3.0020.0002.A3EE] # YI SYLLABLE JO
-A3EF ; [.36F4.0020.0002.A3EF] # YI SYLLABLE JOP
-A3F0 ; [.36F5.0020.0002.A3F0] # YI SYLLABLE JUT
-A3F1 ; [.36F6.0020.0002.A3F1] # YI SYLLABLE JUX
-A3F2 ; [.36F7.0020.0002.A3F2] # YI SYLLABLE JU
-A3F3 ; [.36F8.0020.0002.A3F3] # YI SYLLABLE JUP
-A3F4 ; [.36F9.0020.0002.A3F4] # YI SYLLABLE JURX
-A3F5 ; [.36FA.0020.0002.A3F5] # YI SYLLABLE JUR
-A3F6 ; [.36FB.0020.0002.A3F6] # YI SYLLABLE JYT
-A3F7 ; [.36FC.0020.0002.A3F7] # YI SYLLABLE JYX
-A3F8 ; [.36FD.0020.0002.A3F8] # YI SYLLABLE JY
-A3F9 ; [.36FE.0020.0002.A3F9] # YI SYLLABLE JYP
-A3FA ; [.36FF.0020.0002.A3FA] # YI SYLLABLE JYRX
-A3FB ; [.3700.0020.0002.A3FB] # YI SYLLABLE JYR
-A3FC ; [.3701.0020.0002.A3FC] # YI SYLLABLE QIT
-A3FD ; [.3702.0020.0002.A3FD] # YI SYLLABLE QIX
-A3FE ; [.3703.0020.0002.A3FE] # YI SYLLABLE QI
-A3FF ; [.3704.0020.0002.A3FF] # YI SYLLABLE QIP
-A400 ; [.3705.0020.0002.A400] # YI SYLLABLE QIET
-A401 ; [.3706.0020.0002.A401] # YI SYLLABLE QIEX
-A402 ; [.3707.0020.0002.A402] # YI SYLLABLE QIE
-A403 ; [.3708.0020.0002.A403] # YI SYLLABLE QIEP
-A404 ; [.3709.0020.0002.A404] # YI SYLLABLE QUOT
-A405 ; [.370A.0020.0002.A405] # YI SYLLABLE QUOX
-A406 ; [.370B.0020.0002.A406] # YI SYLLABLE QUO
-A407 ; [.370C.0020.0002.A407] # YI SYLLABLE QUOP
-A408 ; [.370D.0020.0002.A408] # YI SYLLABLE QOT
-A409 ; [.370E.0020.0002.A409] # YI SYLLABLE QOX
-A40A ; [.370F.0020.0002.A40A] # YI SYLLABLE QO
-A40B ; [.3710.0020.0002.A40B] # YI SYLLABLE QOP
-A40C ; [.3711.0020.0002.A40C] # YI SYLLABLE QUT
-A40D ; [.3712.0020.0002.A40D] # YI SYLLABLE QUX
-A40E ; [.3713.0020.0002.A40E] # YI SYLLABLE QU
-A40F ; [.3714.0020.0002.A40F] # YI SYLLABLE QUP
-A410 ; [.3715.0020.0002.A410] # YI SYLLABLE QURX
-A411 ; [.3716.0020.0002.A411] # YI SYLLABLE QUR
-A412 ; [.3717.0020.0002.A412] # YI SYLLABLE QYT
-A413 ; [.3718.0020.0002.A413] # YI SYLLABLE QYX
-A414 ; [.3719.0020.0002.A414] # YI SYLLABLE QY
-A415 ; [.371A.0020.0002.A415] # YI SYLLABLE QYP
-A416 ; [.371B.0020.0002.A416] # YI SYLLABLE QYRX
-A417 ; [.371C.0020.0002.A417] # YI SYLLABLE QYR
-A418 ; [.371D.0020.0002.A418] # YI SYLLABLE JJIT
-A419 ; [.371E.0020.0002.A419] # YI SYLLABLE JJIX
-A41A ; [.371F.0020.0002.A41A] # YI SYLLABLE JJI
-A41B ; [.3720.0020.0002.A41B] # YI SYLLABLE JJIP
-A41C ; [.3721.0020.0002.A41C] # YI SYLLABLE JJIET
-A41D ; [.3722.0020.0002.A41D] # YI SYLLABLE JJIEX
-A41E ; [.3723.0020.0002.A41E] # YI SYLLABLE JJIE
-A41F ; [.3724.0020.0002.A41F] # YI SYLLABLE JJIEP
-A420 ; [.3725.0020.0002.A420] # YI SYLLABLE JJUOX
-A421 ; [.3726.0020.0002.A421] # YI SYLLABLE JJUO
-A422 ; [.3727.0020.0002.A422] # YI SYLLABLE JJUOP
-A423 ; [.3728.0020.0002.A423] # YI SYLLABLE JJOT
-A424 ; [.3729.0020.0002.A424] # YI SYLLABLE JJOX
-A425 ; [.372A.0020.0002.A425] # YI SYLLABLE JJO
-A426 ; [.372B.0020.0002.A426] # YI SYLLABLE JJOP
-A427 ; [.372C.0020.0002.A427] # YI SYLLABLE JJUT
-A428 ; [.372D.0020.0002.A428] # YI SYLLABLE JJUX
-A429 ; [.372E.0020.0002.A429] # YI SYLLABLE JJU
-A42A ; [.372F.0020.0002.A42A] # YI SYLLABLE JJUP
-A42B ; [.3730.0020.0002.A42B] # YI SYLLABLE JJURX
-A42C ; [.3731.0020.0002.A42C] # YI SYLLABLE JJUR
-A42D ; [.3732.0020.0002.A42D] # YI SYLLABLE JJYT
-A42E ; [.3733.0020.0002.A42E] # YI SYLLABLE JJYX
-A42F ; [.3734.0020.0002.A42F] # YI SYLLABLE JJY
-A430 ; [.3735.0020.0002.A430] # YI SYLLABLE JJYP
-A431 ; [.3736.0020.0002.A431] # YI SYLLABLE NJIT
-A432 ; [.3737.0020.0002.A432] # YI SYLLABLE NJIX
-A433 ; [.3738.0020.0002.A433] # YI SYLLABLE NJI
-A434 ; [.3739.0020.0002.A434] # YI SYLLABLE NJIP
-A435 ; [.373A.0020.0002.A435] # YI SYLLABLE NJIET
-A436 ; [.373B.0020.0002.A436] # YI SYLLABLE NJIEX
-A437 ; [.373C.0020.0002.A437] # YI SYLLABLE NJIE
-A438 ; [.373D.0020.0002.A438] # YI SYLLABLE NJIEP
-A439 ; [.373E.0020.0002.A439] # YI SYLLABLE NJUOX
-A43A ; [.373F.0020.0002.A43A] # YI SYLLABLE NJUO
-A43B ; [.3740.0020.0002.A43B] # YI SYLLABLE NJOT
-A43C ; [.3741.0020.0002.A43C] # YI SYLLABLE NJOX
-A43D ; [.3742.0020.0002.A43D] # YI SYLLABLE NJO
-A43E ; [.3743.0020.0002.A43E] # YI SYLLABLE NJOP
-A43F ; [.3744.0020.0002.A43F] # YI SYLLABLE NJUX
-A440 ; [.3745.0020.0002.A440] # YI SYLLABLE NJU
-A441 ; [.3746.0020.0002.A441] # YI SYLLABLE NJUP
-A442 ; [.3747.0020.0002.A442] # YI SYLLABLE NJURX
-A443 ; [.3748.0020.0002.A443] # YI SYLLABLE NJUR
-A444 ; [.3749.0020.0002.A444] # YI SYLLABLE NJYT
-A445 ; [.374A.0020.0002.A445] # YI SYLLABLE NJYX
-A446 ; [.374B.0020.0002.A446] # YI SYLLABLE NJY
-A447 ; [.374C.0020.0002.A447] # YI SYLLABLE NJYP
-A448 ; [.374D.0020.0002.A448] # YI SYLLABLE NJYRX
-A449 ; [.374E.0020.0002.A449] # YI SYLLABLE NJYR
-A44A ; [.374F.0020.0002.A44A] # YI SYLLABLE NYIT
-A44B ; [.3750.0020.0002.A44B] # YI SYLLABLE NYIX
-A44C ; [.3751.0020.0002.A44C] # YI SYLLABLE NYI
-A44D ; [.3752.0020.0002.A44D] # YI SYLLABLE NYIP
-A44E ; [.3753.0020.0002.A44E] # YI SYLLABLE NYIET
-A44F ; [.3754.0020.0002.A44F] # YI SYLLABLE NYIEX
-A450 ; [.3755.0020.0002.A450] # YI SYLLABLE NYIE
-A451 ; [.3756.0020.0002.A451] # YI SYLLABLE NYIEP
-A452 ; [.3757.0020.0002.A452] # YI SYLLABLE NYUOX
-A453 ; [.3758.0020.0002.A453] # YI SYLLABLE NYUO
-A454 ; [.3759.0020.0002.A454] # YI SYLLABLE NYUOP
-A455 ; [.375A.0020.0002.A455] # YI SYLLABLE NYOT
-A456 ; [.375B.0020.0002.A456] # YI SYLLABLE NYOX
-A457 ; [.375C.0020.0002.A457] # YI SYLLABLE NYO
-A458 ; [.375D.0020.0002.A458] # YI SYLLABLE NYOP
-A459 ; [.375E.0020.0002.A459] # YI SYLLABLE NYUT
-A45A ; [.375F.0020.0002.A45A] # YI SYLLABLE NYUX
-A45B ; [.3760.0020.0002.A45B] # YI SYLLABLE NYU
-A45C ; [.3761.0020.0002.A45C] # YI SYLLABLE NYUP
-A45D ; [.3762.0020.0002.A45D] # YI SYLLABLE XIT
-A45E ; [.3763.0020.0002.A45E] # YI SYLLABLE XIX
-A45F ; [.3764.0020.0002.A45F] # YI SYLLABLE XI
-A460 ; [.3765.0020.0002.A460] # YI SYLLABLE XIP
-A461 ; [.3766.0020.0002.A461] # YI SYLLABLE XIET
-A462 ; [.3767.0020.0002.A462] # YI SYLLABLE XIEX
-A463 ; [.3768.0020.0002.A463] # YI SYLLABLE XIE
-A464 ; [.3769.0020.0002.A464] # YI SYLLABLE XIEP
-A465 ; [.376A.0020.0002.A465] # YI SYLLABLE XUOX
-A466 ; [.376B.0020.0002.A466] # YI SYLLABLE XUO
-A467 ; [.376C.0020.0002.A467] # YI SYLLABLE XOT
-A468 ; [.376D.0020.0002.A468] # YI SYLLABLE XOX
-A469 ; [.376E.0020.0002.A469] # YI SYLLABLE XO
-A46A ; [.376F.0020.0002.A46A] # YI SYLLABLE XOP
-A46B ; [.3770.0020.0002.A46B] # YI SYLLABLE XYT
-A46C ; [.3771.0020.0002.A46C] # YI SYLLABLE XYX
-A46D ; [.3772.0020.0002.A46D] # YI SYLLABLE XY
-A46E ; [.3773.0020.0002.A46E] # YI SYLLABLE XYP
-A46F ; [.3774.0020.0002.A46F] # YI SYLLABLE XYRX
-A470 ; [.3775.0020.0002.A470] # YI SYLLABLE XYR
-A471 ; [.3776.0020.0002.A471] # YI SYLLABLE YIT
-A472 ; [.3777.0020.0002.A472] # YI SYLLABLE YIX
-A473 ; [.3778.0020.0002.A473] # YI SYLLABLE YI
-A474 ; [.3779.0020.0002.A474] # YI SYLLABLE YIP
-A475 ; [.377A.0020.0002.A475] # YI SYLLABLE YIET
-A476 ; [.377B.0020.0002.A476] # YI SYLLABLE YIEX
-A477 ; [.377C.0020.0002.A477] # YI SYLLABLE YIE
-A478 ; [.377D.0020.0002.A478] # YI SYLLABLE YIEP
-A479 ; [.377E.0020.0002.A479] # YI SYLLABLE YUOT
-A47A ; [.377F.0020.0002.A47A] # YI SYLLABLE YUOX
-A47B ; [.3780.0020.0002.A47B] # YI SYLLABLE YUO
-A47C ; [.3781.0020.0002.A47C] # YI SYLLABLE YUOP
-A47D ; [.3782.0020.0002.A47D] # YI SYLLABLE YOT
-A47E ; [.3783.0020.0002.A47E] # YI SYLLABLE YOX
-A47F ; [.3784.0020.0002.A47F] # YI SYLLABLE YO
-A480 ; [.3785.0020.0002.A480] # YI SYLLABLE YOP
-A481 ; [.3786.0020.0002.A481] # YI SYLLABLE YUT
-A482 ; [.3787.0020.0002.A482] # YI SYLLABLE YUX
-A483 ; [.3788.0020.0002.A483] # YI SYLLABLE YU
-A484 ; [.3789.0020.0002.A484] # YI SYLLABLE YUP
-A485 ; [.378A.0020.0002.A485] # YI SYLLABLE YURX
-A486 ; [.378B.0020.0002.A486] # YI SYLLABLE YUR
-A487 ; [.378C.0020.0002.A487] # YI SYLLABLE YYT
-A488 ; [.378D.0020.0002.A488] # YI SYLLABLE YYX
-A489 ; [.378E.0020.0002.A489] # YI SYLLABLE YY
-A48A ; [.378F.0020.0002.A48A] # YI SYLLABLE YYP
-A48B ; [.3790.0020.0002.A48B] # YI SYLLABLE YYRX
-A48C ; [.3791.0020.0002.A48C] # YI SYLLABLE YYR
-A4F8 ; [.3792.0020.0002.A4F8] # LISU LETTER TONE MYA TI
-A4F9 ; [.3793.0020.0002.A4F9] # LISU LETTER TONE NA PO
-A4FA ; [.3794.0020.0002.A4FA] # LISU LETTER TONE MYA CYA
-A4FB ; [.3795.0020.0002.A4FB] # LISU LETTER TONE MYA BO
-A4FD ; [.3796.0020.0002.A4FD] # LISU LETTER TONE MYA JEU
-A4FC ; [.3797.0020.0002.A4FC] # LISU LETTER TONE MYA NA
-A4D0 ; [.3798.0020.0002.A4D0] # LISU LETTER BA
-A4D1 ; [.3799.0020.0002.A4D1] # LISU LETTER PA
-A4D2 ; [.379A.0020.0002.A4D2] # LISU LETTER PHA
-A4D3 ; [.379B.0020.0002.A4D3] # LISU LETTER DA
-A4D4 ; [.379C.0020.0002.A4D4] # LISU LETTER TA
-A4D5 ; [.379D.0020.0002.A4D5] # LISU LETTER THA
-A4D6 ; [.379E.0020.0002.A4D6] # LISU LETTER GA
-A4D7 ; [.379F.0020.0002.A4D7] # LISU LETTER KA
-A4D8 ; [.37A0.0020.0002.A4D8] # LISU LETTER KHA
-A4D9 ; [.37A1.0020.0002.A4D9] # LISU LETTER JA
-A4DA ; [.37A2.0020.0002.A4DA] # LISU LETTER CA
-A4DB ; [.37A3.0020.0002.A4DB] # LISU LETTER CHA
-A4DC ; [.37A4.0020.0002.A4DC] # LISU LETTER DZA
-A4DD ; [.37A5.0020.0002.A4DD] # LISU LETTER TSA
-A4DE ; [.37A6.0020.0002.A4DE] # LISU LETTER TSHA
-A4DF ; [.37A7.0020.0002.A4DF] # LISU LETTER MA
-A4E0 ; [.37A8.0020.0002.A4E0] # LISU LETTER NA
-A4E1 ; [.37A9.0020.0002.A4E1] # LISU LETTER LA
-A4E2 ; [.37AA.0020.0002.A4E2] # LISU LETTER SA
-A4E3 ; [.37AB.0020.0002.A4E3] # LISU LETTER ZHA
-A4E4 ; [.37AC.0020.0002.A4E4] # LISU LETTER ZA
-A4E5 ; [.37AD.0020.0002.A4E5] # LISU LETTER NGA
-A4E6 ; [.37AE.0020.0002.A4E6] # LISU LETTER HA
-A4E7 ; [.37AF.0020.0002.A4E7] # LISU LETTER XA
-A4E8 ; [.37B0.0020.0002.A4E8] # LISU LETTER HHA
-A4E9 ; [.37B1.0020.0002.A4E9] # LISU LETTER FA
-A4EB ; [.37B2.0020.0002.A4EB] # LISU LETTER SHA
-A4ED ; [.37B3.0020.0002.A4ED] # LISU LETTER GHA
-A4EA ; [.37B4.0020.0002.A4EA] # LISU LETTER WA
-A4EC ; [.37B5.0020.0002.A4EC] # LISU LETTER YA
-A4EE ; [.37B6.0020.0002.A4EE] # LISU LETTER A
-A4EF ; [.37B7.0020.0002.A4EF] # LISU LETTER AE
-A4F0 ; [.37B8.0020.0002.A4F0] # LISU LETTER E
-A4F1 ; [.37B9.0020.0002.A4F1] # LISU LETTER EU
-A4F2 ; [.37BA.0020.0002.A4F2] # LISU LETTER I
-A4F3 ; [.37BB.0020.0002.A4F3] # LISU LETTER O
-A4F4 ; [.37BC.0020.0002.A4F4] # LISU LETTER U
-A4F5 ; [.37BD.0020.0002.A4F5] # LISU LETTER UE
-A4F6 ; [.37BE.0020.0002.A4F6] # LISU LETTER UH
-A4F7 ; [.37BF.0020.0002.A4F7] # LISU LETTER OE
-16F00 ; [.37C0.0020.0002.16F00] # MIAO LETTER PA
-16F01 ; [.37C1.0020.0002.16F01] # MIAO LETTER BA
-16F02 ; [.37C2.0020.0002.16F02] # MIAO LETTER YI PA
-16F03 ; [.37C3.0020.0002.16F03] # MIAO LETTER PLA
-16F04 ; [.37C4.0020.0002.16F04] # MIAO LETTER MA
-16F06 ; [.37C4.0020.0004.16F06] # MIAO LETTER ARCHAIC MA
-16F05 ; [.37C5.0020.0002.16F05] # MIAO LETTER MHA
-16F07 ; [.37C6.0020.0002.16F07] # MIAO LETTER FA
-16F08 ; [.37C7.0020.0002.16F08] # MIAO LETTER VA
-16F09 ; [.37C8.0020.0002.16F09] # MIAO LETTER VFA
-16F0A ; [.37C9.0020.0002.16F0A] # MIAO LETTER TA
-16F0B ; [.37CA.0020.0002.16F0B] # MIAO LETTER DA
-16F0C ; [.37CB.0020.0002.16F0C] # MIAO LETTER YI TTA
-16F0D ; [.37CC.0020.0002.16F0D] # MIAO LETTER YI TA
-16F0E ; [.37CD.0020.0002.16F0E] # MIAO LETTER TTA
-16F0F ; [.37CE.0020.0002.16F0F] # MIAO LETTER DDA
-16F10 ; [.37CF.0020.0002.16F10] # MIAO LETTER NA
-16F13 ; [.37CF.0020.0004.16F13] # MIAO LETTER ARCHAIC NA
-16F11 ; [.37D0.0020.0002.16F11] # MIAO LETTER NHA
-16F12 ; [.37D1.0020.0002.16F12] # MIAO LETTER YI NNA
-16F14 ; [.37D2.0020.0002.16F14] # MIAO LETTER NNA
-16F15 ; [.37D3.0020.0002.16F15] # MIAO LETTER NNHA
-16F16 ; [.37D4.0020.0002.16F16] # MIAO LETTER LA
-16F17 ; [.37D5.0020.0002.16F17] # MIAO LETTER LYA
-16F18 ; [.37D6.0020.0002.16F18] # MIAO LETTER LHA
-16F19 ; [.37D7.0020.0002.16F19] # MIAO LETTER LHYA
-16F1A ; [.37D8.0020.0002.16F1A] # MIAO LETTER TLHA
-16F1B ; [.37D9.0020.0002.16F1B] # MIAO LETTER DLHA
-16F1C ; [.37DA.0020.0002.16F1C] # MIAO LETTER TLHYA
-16F1D ; [.37DB.0020.0002.16F1D] # MIAO LETTER DLHYA
-16F1E ; [.37DC.0020.0002.16F1E] # MIAO LETTER KA
-16F1F ; [.37DD.0020.0002.16F1F] # MIAO LETTER GA
-16F20 ; [.37DE.0020.0002.16F20] # MIAO LETTER YI KA
-16F21 ; [.37DF.0020.0002.16F21] # MIAO LETTER QA
-16F22 ; [.37E0.0020.0002.16F22] # MIAO LETTER QGA
-16F23 ; [.37E1.0020.0002.16F23] # MIAO LETTER NGA
-16F25 ; [.37E1.0020.0004.16F25] # MIAO LETTER ARCHAIC NGA
-16F24 ; [.37E2.0020.0002.16F24] # MIAO LETTER NGHA
-16F26 ; [.37E3.0020.0002.16F26] # MIAO LETTER HA
-16F27 ; [.37E4.0020.0002.16F27] # MIAO LETTER XA
-16F28 ; [.37E5.0020.0002.16F28] # MIAO LETTER GHA
-16F29 ; [.37E6.0020.0002.16F29] # MIAO LETTER GHHA
-16F2A ; [.37E7.0020.0002.16F2A] # MIAO LETTER TSSA
-16F2B ; [.37E8.0020.0002.16F2B] # MIAO LETTER DZZA
-16F2C ; [.37E9.0020.0002.16F2C] # MIAO LETTER NYA
-16F2D ; [.37EA.0020.0002.16F2D] # MIAO LETTER NYHA
-16F2E ; [.37EB.0020.0002.16F2E] # MIAO LETTER TSHA
-16F2F ; [.37EC.0020.0002.16F2F] # MIAO LETTER DZHA
-16F30 ; [.37ED.0020.0002.16F30] # MIAO LETTER YI TSHA
-16F31 ; [.37EE.0020.0002.16F31] # MIAO LETTER YI DZHA
-16F32 ; [.37EF.0020.0002.16F32] # MIAO LETTER REFORMED TSHA
-16F33 ; [.37F0.0020.0002.16F33] # MIAO LETTER SHA
-16F34 ; [.37F1.0020.0002.16F34] # MIAO LETTER SSA
-16F35 ; [.37F2.0020.0002.16F35] # MIAO LETTER ZHA
-16F36 ; [.37F3.0020.0002.16F36] # MIAO LETTER ZSHA
-16F37 ; [.37F4.0020.0002.16F37] # MIAO LETTER TSA
-16F38 ; [.37F5.0020.0002.16F38] # MIAO LETTER DZA
-16F39 ; [.37F6.0020.0002.16F39] # MIAO LETTER YI TSA
-16F3A ; [.37F7.0020.0002.16F3A] # MIAO LETTER SA
-16F3B ; [.37F8.0020.0002.16F3B] # MIAO LETTER ZA
-16F3C ; [.37F9.0020.0002.16F3C] # MIAO LETTER ZSA
-16F3D ; [.37FA.0020.0002.16F3D] # MIAO LETTER ZZA
-16F3F ; [.37FA.0020.0004.16F3F] # MIAO LETTER ARCHAIC ZZA
-16F3E ; [.37FB.0020.0002.16F3E] # MIAO LETTER ZZSA
-16F40 ; [.37FC.0020.0002.16F40] # MIAO LETTER ZZYA
-16F41 ; [.37FD.0020.0002.16F41] # MIAO LETTER ZZSYA
-16F42 ; [.37FE.0020.0002.16F42] # MIAO LETTER WA
-16F43 ; [.37FF.0020.0002.16F43] # MIAO LETTER AH
-16F44 ; [.3800.0020.0002.16F44] # MIAO LETTER HHA
-16F50 ; [.3801.0020.0002.16F50] # MIAO LETTER NASALIZATION
-16F51 ; [.3802.0020.0002.16F51] # MIAO SIGN ASPIRATION
-16F52 ; [.3803.0020.0002.16F52] # MIAO SIGN REFORMED VOICING
-16F53 ; [.3804.0020.0002.16F53] # MIAO SIGN REFORMED ASPIRATION
-16F54 ; [.3805.0020.0002.16F54] # MIAO VOWEL SIGN A
-16F55 ; [.3806.0020.0002.16F55] # MIAO VOWEL SIGN AA
-16F56 ; [.3807.0020.0002.16F56] # MIAO VOWEL SIGN AHH
-16F57 ; [.3808.0020.0002.16F57] # MIAO VOWEL SIGN AN
-16F58 ; [.3809.0020.0002.16F58] # MIAO VOWEL SIGN ANG
-16F59 ; [.380A.0020.0002.16F59] # MIAO VOWEL SIGN O
-16F5A ; [.380B.0020.0002.16F5A] # MIAO VOWEL SIGN OO
-16F5B ; [.380C.0020.0002.16F5B] # MIAO VOWEL SIGN WO
-16F5C ; [.380D.0020.0002.16F5C] # MIAO VOWEL SIGN W
-16F5D ; [.380E.0020.0002.16F5D] # MIAO VOWEL SIGN E
-16F5E ; [.380F.0020.0002.16F5E] # MIAO VOWEL SIGN EN
-16F5F ; [.3810.0020.0002.16F5F] # MIAO VOWEL SIGN ENG
-16F60 ; [.3811.0020.0002.16F60] # MIAO VOWEL SIGN OEY
-16F61 ; [.3812.0020.0002.16F61] # MIAO VOWEL SIGN I
-16F62 ; [.3813.0020.0002.16F62] # MIAO VOWEL SIGN IA
-16F63 ; [.3814.0020.0002.16F63] # MIAO VOWEL SIGN IAN
-16F64 ; [.3815.0020.0002.16F64] # MIAO VOWEL SIGN IANG
-16F65 ; [.3816.0020.0002.16F65] # MIAO VOWEL SIGN IO
-16F66 ; [.3817.0020.0002.16F66] # MIAO VOWEL SIGN IE
-16F67 ; [.3818.0020.0002.16F67] # MIAO VOWEL SIGN II
-16F68 ; [.3819.0020.0002.16F68] # MIAO VOWEL SIGN IU
-16F69 ; [.381A.0020.0002.16F69] # MIAO VOWEL SIGN ING
-16F6A ; [.381B.0020.0002.16F6A] # MIAO VOWEL SIGN U
-16F6B ; [.381C.0020.0002.16F6B] # MIAO VOWEL SIGN UA
-16F6C ; [.381D.0020.0002.16F6C] # MIAO VOWEL SIGN UAN
-16F6D ; [.381E.0020.0002.16F6D] # MIAO VOWEL SIGN UANG
-16F6E ; [.381F.0020.0002.16F6E] # MIAO VOWEL SIGN UU
-16F6F ; [.3820.0020.0002.16F6F] # MIAO VOWEL SIGN UEI
-16F70 ; [.3821.0020.0002.16F70] # MIAO VOWEL SIGN UNG
-16F71 ; [.3822.0020.0002.16F71] # MIAO VOWEL SIGN Y
-16F72 ; [.3823.0020.0002.16F72] # MIAO VOWEL SIGN YI
-16F73 ; [.3824.0020.0002.16F73] # MIAO VOWEL SIGN AE
-16F74 ; [.3825.0020.0002.16F74] # MIAO VOWEL SIGN AEE
-16F75 ; [.3826.0020.0002.16F75] # MIAO VOWEL SIGN ERR
-16F76 ; [.3827.0020.0002.16F76] # MIAO VOWEL SIGN ROUNDED ERR
-16F77 ; [.3828.0020.0002.16F77] # MIAO VOWEL SIGN ER
-16F78 ; [.3829.0020.0002.16F78] # MIAO VOWEL SIGN ROUNDED ER
-16F79 ; [.382A.0020.0002.16F79] # MIAO VOWEL SIGN AI
-16F7A ; [.382B.0020.0002.16F7A] # MIAO VOWEL SIGN EI
-16F7B ; [.382C.0020.0002.16F7B] # MIAO VOWEL SIGN AU
-16F7C ; [.382D.0020.0002.16F7C] # MIAO VOWEL SIGN OU
-16F7D ; [.382E.0020.0002.16F7D] # MIAO VOWEL SIGN N
-16F7E ; [.382F.0020.0002.16F7E] # MIAO VOWEL SIGN NG
-16F8F ; [.3830.0020.0002.16F8F] # MIAO TONE RIGHT
-16F90 ; [.3831.0020.0002.16F90] # MIAO TONE TOP RIGHT
-16F91 ; [.3832.0020.0002.16F91] # MIAO TONE ABOVE
-16F92 ; [.3833.0020.0002.16F92] # MIAO TONE BELOW
-16F93 ; [.3834.0020.0002.16F93] # MIAO LETTER TONE-2
-16F94 ; [.3835.0020.0002.16F94] # MIAO LETTER TONE-3
-16F95 ; [.3836.0020.0002.16F95] # MIAO LETTER TONE-4
-16F96 ; [.3837.0020.0002.16F96] # MIAO LETTER TONE-5
-16F97 ; [.3838.0020.0002.16F97] # MIAO LETTER TONE-6
-16F98 ; [.3839.0020.0002.16F98] # MIAO LETTER TONE-7
-16F99 ; [.383A.0020.0002.16F99] # MIAO LETTER TONE-8
-16F9A ; [.383B.0020.0002.16F9A] # MIAO LETTER REFORMED TONE-1
-16F9B ; [.383C.0020.0002.16F9B] # MIAO LETTER REFORMED TONE-2
-16F9C ; [.383D.0020.0002.16F9C] # MIAO LETTER REFORMED TONE-4
-16F9D ; [.383E.0020.0002.16F9D] # MIAO LETTER REFORMED TONE-5
-16F9E ; [.383F.0020.0002.16F9E] # MIAO LETTER REFORMED TONE-6
-16F9F ; [.3840.0020.0002.16F9F] # MIAO LETTER REFORMED TONE-8
-10280 ; [.3841.0020.0002.10280] # LYCIAN LETTER A
-10281 ; [.3842.0020.0002.10281] # LYCIAN LETTER E
-10282 ; [.3843.0020.0002.10282] # LYCIAN LETTER B
-10283 ; [.3844.0020.0002.10283] # LYCIAN LETTER BH
-10284 ; [.3845.0020.0002.10284] # LYCIAN LETTER G
-10285 ; [.3846.0020.0002.10285] # LYCIAN LETTER D
-10286 ; [.3847.0020.0002.10286] # LYCIAN LETTER I
-10287 ; [.3848.0020.0002.10287] # LYCIAN LETTER W
-10288 ; [.3849.0020.0002.10288] # LYCIAN LETTER Z
-10289 ; [.384A.0020.0002.10289] # LYCIAN LETTER TH
-1028A ; [.384B.0020.0002.1028A] # LYCIAN LETTER J
-1028B ; [.384C.0020.0002.1028B] # LYCIAN LETTER K
-1028C ; [.384D.0020.0002.1028C] # LYCIAN LETTER Q
-1028D ; [.384E.0020.0002.1028D] # LYCIAN LETTER L
-1028E ; [.384F.0020.0002.1028E] # LYCIAN LETTER M
-1028F ; [.3850.0020.0002.1028F] # LYCIAN LETTER N
-10290 ; [.3851.0020.0002.10290] # LYCIAN LETTER MM
-10291 ; [.3852.0020.0002.10291] # LYCIAN LETTER NN
-10292 ; [.3853.0020.0002.10292] # LYCIAN LETTER U
-10293 ; [.3854.0020.0002.10293] # LYCIAN LETTER P
-10294 ; [.3855.0020.0002.10294] # LYCIAN LETTER KK
-10295 ; [.3856.0020.0002.10295] # LYCIAN LETTER R
-10296 ; [.3857.0020.0002.10296] # LYCIAN LETTER S
-10297 ; [.3858.0020.0002.10297] # LYCIAN LETTER T
-10298 ; [.3859.0020.0002.10298] # LYCIAN LETTER TT
-10299 ; [.385A.0020.0002.10299] # LYCIAN LETTER AN
-1029A ; [.385B.0020.0002.1029A] # LYCIAN LETTER EN
-1029B ; [.385C.0020.0002.1029B] # LYCIAN LETTER H
-1029C ; [.385D.0020.0002.1029C] # LYCIAN LETTER X
-102A0 ; [.385E.0020.0002.102A0] # CARIAN LETTER A
-102A1 ; [.385F.0020.0002.102A1] # CARIAN LETTER P2
-102A2 ; [.3860.0020.0002.102A2] # CARIAN LETTER D
-102A3 ; [.3861.0020.0002.102A3] # CARIAN LETTER L
-102A4 ; [.3862.0020.0002.102A4] # CARIAN LETTER UUU
-102A5 ; [.3863.0020.0002.102A5] # CARIAN LETTER R
-102A6 ; [.3864.0020.0002.102A6] # CARIAN LETTER LD
-102A7 ; [.3865.0020.0002.102A7] # CARIAN LETTER A2
-102A8 ; [.3866.0020.0002.102A8] # CARIAN LETTER Q
-102A9 ; [.3867.0020.0002.102A9] # CARIAN LETTER B
-102AA ; [.3868.0020.0002.102AA] # CARIAN LETTER M
-102AB ; [.3869.0020.0002.102AB] # CARIAN LETTER O
-102AC ; [.386A.0020.0002.102AC] # CARIAN LETTER D2
-102AD ; [.386B.0020.0002.102AD] # CARIAN LETTER T
-102AE ; [.386C.0020.0002.102AE] # CARIAN LETTER SH
-102AF ; [.386D.0020.0002.102AF] # CARIAN LETTER SH2
-102B0 ; [.386E.0020.0002.102B0] # CARIAN LETTER S
-102B1 ; [.386F.0020.0002.102B1] # CARIAN LETTER C-18
-102B2 ; [.3870.0020.0002.102B2] # CARIAN LETTER U
-102B3 ; [.3871.0020.0002.102B3] # CARIAN LETTER NN
-102B4 ; [.3872.0020.0002.102B4] # CARIAN LETTER X
-102B5 ; [.3873.0020.0002.102B5] # CARIAN LETTER N
-102B6 ; [.3874.0020.0002.102B6] # CARIAN LETTER TT2
-102B7 ; [.3875.0020.0002.102B7] # CARIAN LETTER P
-102B8 ; [.3876.0020.0002.102B8] # CARIAN LETTER SS
-102B9 ; [.3877.0020.0002.102B9] # CARIAN LETTER I
-102BA ; [.3878.0020.0002.102BA] # CARIAN LETTER E
-102BB ; [.3879.0020.0002.102BB] # CARIAN LETTER UUUU
-102BC ; [.387A.0020.0002.102BC] # CARIAN LETTER K
-102BD ; [.387B.0020.0002.102BD] # CARIAN LETTER K2
-102BE ; [.387C.0020.0002.102BE] # CARIAN LETTER ND
-102BF ; [.387D.0020.0002.102BF] # CARIAN LETTER UU
-102C0 ; [.387E.0020.0002.102C0] # CARIAN LETTER G
-102C1 ; [.387F.0020.0002.102C1] # CARIAN LETTER G2
-102C2 ; [.3880.0020.0002.102C2] # CARIAN LETTER ST
-102C3 ; [.3881.0020.0002.102C3] # CARIAN LETTER ST2
-102C4 ; [.3882.0020.0002.102C4] # CARIAN LETTER NG
-102C5 ; [.3883.0020.0002.102C5] # CARIAN LETTER II
-102C6 ; [.3884.0020.0002.102C6] # CARIAN LETTER C-39
-102C7 ; [.3885.0020.0002.102C7] # CARIAN LETTER TT
-102C8 ; [.3886.0020.0002.102C8] # CARIAN LETTER UUU2
-102C9 ; [.3887.0020.0002.102C9] # CARIAN LETTER RR
-102CA ; [.3888.0020.0002.102CA] # CARIAN LETTER MB
-102CB ; [.3889.0020.0002.102CB] # CARIAN LETTER MB2
-102CC ; [.388A.0020.0002.102CC] # CARIAN LETTER MB3
-102CD ; [.388B.0020.0002.102CD] # CARIAN LETTER MB4
-102CE ; [.388C.0020.0002.102CE] # CARIAN LETTER LD2
-102CF ; [.388D.0020.0002.102CF] # CARIAN LETTER E2
-102D0 ; [.388E.0020.0002.102D0] # CARIAN LETTER UUU3
-10920 ; [.388F.0020.0002.10920] # LYDIAN LETTER A
-10921 ; [.3890.0020.0002.10921] # LYDIAN LETTER B
-10922 ; [.3891.0020.0002.10922] # LYDIAN LETTER G
-10923 ; [.3892.0020.0002.10923] # LYDIAN LETTER D
-10924 ; [.3893.0020.0002.10924] # LYDIAN LETTER E
-10925 ; [.3894.0020.0002.10925] # LYDIAN LETTER V
-10926 ; [.3895.0020.0002.10926] # LYDIAN LETTER I
-10927 ; [.3896.0020.0002.10927] # LYDIAN LETTER Y
-10928 ; [.3897.0020.0002.10928] # LYDIAN LETTER K
-10929 ; [.3898.0020.0002.10929] # LYDIAN LETTER L
-1092A ; [.3899.0020.0002.1092A] # LYDIAN LETTER M
-1092B ; [.389A.0020.0002.1092B] # LYDIAN LETTER N
-1092C ; [.389B.0020.0002.1092C] # LYDIAN LETTER O
-1092D ; [.389C.0020.0002.1092D] # LYDIAN LETTER R
-1092E ; [.389D.0020.0002.1092E] # LYDIAN LETTER SS
-1092F ; [.389E.0020.0002.1092F] # LYDIAN LETTER T
-10930 ; [.389F.0020.0002.10930] # LYDIAN LETTER U
-10931 ; [.38A0.0020.0002.10931] # LYDIAN LETTER F
-10932 ; [.38A1.0020.0002.10932] # LYDIAN LETTER Q
-10933 ; [.38A2.0020.0002.10933] # LYDIAN LETTER S
-10934 ; [.38A3.0020.0002.10934] # LYDIAN LETTER TT
-10935 ; [.38A4.0020.0002.10935] # LYDIAN LETTER AN
-10936 ; [.38A5.0020.0002.10936] # LYDIAN LETTER EN
-10937 ; [.38A6.0020.0002.10937] # LYDIAN LETTER LY
-10938 ; [.38A7.0020.0002.10938] # LYDIAN LETTER NN
-10939 ; [.38A8.0020.0002.10939] # LYDIAN LETTER C
-10300 ; [.38A9.0020.0002.10300] # OLD ITALIC LETTER A
-10301 ; [.38AA.0020.0002.10301] # OLD ITALIC LETTER BE
-10302 ; [.38AB.0020.0002.10302] # OLD ITALIC LETTER KE
-10303 ; [.38AC.0020.0002.10303] # OLD ITALIC LETTER DE
-10304 ; [.38AD.0020.0002.10304] # OLD ITALIC LETTER E
-10305 ; [.38AE.0020.0002.10305] # OLD ITALIC LETTER VE
-10306 ; [.38AF.0020.0002.10306] # OLD ITALIC LETTER ZE
-10307 ; [.38B0.0020.0002.10307] # OLD ITALIC LETTER HE
-10308 ; [.38B1.0020.0002.10308] # OLD ITALIC LETTER THE
-10309 ; [.38B2.0020.0002.10309] # OLD ITALIC LETTER I
-1030A ; [.38B3.0020.0002.1030A] # OLD ITALIC LETTER KA
-1030B ; [.38B4.0020.0002.1030B] # OLD ITALIC LETTER EL
-1030C ; [.38B5.0020.0002.1030C] # OLD ITALIC LETTER EM
-1030D ; [.38B6.0020.0002.1030D] # OLD ITALIC LETTER EN
-1030E ; [.38B7.0020.0002.1030E] # OLD ITALIC LETTER ESH
-1030F ; [.38B8.0020.0002.1030F] # OLD ITALIC LETTER O
-10310 ; [.38B9.0020.0002.10310] # OLD ITALIC LETTER PE
-10311 ; [.38BA.0020.0002.10311] # OLD ITALIC LETTER SHE
-10312 ; [.38BB.0020.0002.10312] # OLD ITALIC LETTER KU
-10313 ; [.38BC.0020.0002.10313] # OLD ITALIC LETTER ER
-10314 ; [.38BD.0020.0002.10314] # OLD ITALIC LETTER ES
-10315 ; [.38BE.0020.0002.10315] # OLD ITALIC LETTER TE
-10316 ; [.38BF.0020.0002.10316] # OLD ITALIC LETTER U
-10317 ; [.38C0.0020.0002.10317] # OLD ITALIC LETTER EKS
-10318 ; [.38C1.0020.0002.10318] # OLD ITALIC LETTER PHE
-10319 ; [.38C2.0020.0002.10319] # OLD ITALIC LETTER KHE
-1031A ; [.38C3.0020.0002.1031A] # OLD ITALIC LETTER EF
-1031B ; [.38C4.0020.0002.1031B] # OLD ITALIC LETTER ERS
-1031C ; [.38C5.0020.0002.1031C] # OLD ITALIC LETTER CHE
-1031D ; [.38C6.0020.0002.1031D] # OLD ITALIC LETTER II
-1031E ; [.38C7.0020.0002.1031E] # OLD ITALIC LETTER UU
-10330 ; [.38C8.0020.0002.10330] # GOTHIC LETTER AHSA
-10331 ; [.38C9.0020.0002.10331] # GOTHIC LETTER BAIRKAN
-10332 ; [.38CA.0020.0002.10332] # GOTHIC LETTER GIBA
-10333 ; [.38CB.0020.0002.10333] # GOTHIC LETTER DAGS
-10334 ; [.38CC.0020.0002.10334] # GOTHIC LETTER AIHVUS
-10335 ; [.38CD.0020.0002.10335] # GOTHIC LETTER QAIRTHRA
-10336 ; [.38CE.0020.0002.10336] # GOTHIC LETTER IUJA
-10337 ; [.38CF.0020.0002.10337] # GOTHIC LETTER HAGL
-10338 ; [.38D0.0020.0002.10338] # GOTHIC LETTER THIUTH
-10339 ; [.38D1.0020.0002.10339] # GOTHIC LETTER EIS
-1033A ; [.38D2.0020.0002.1033A] # GOTHIC LETTER KUSMA
-1033B ; [.38D3.0020.0002.1033B] # GOTHIC LETTER LAGUS
-1033C ; [.38D4.0020.0002.1033C] # GOTHIC LETTER MANNA
-1033D ; [.38D5.0020.0002.1033D] # GOTHIC LETTER NAUTHS
-1033E ; [.38D6.0020.0002.1033E] # GOTHIC LETTER JER
-1033F ; [.38D7.0020.0002.1033F] # GOTHIC LETTER URUS
-10340 ; [.38D8.0020.0002.10340] # GOTHIC LETTER PAIRTHRA
-10341 ; [.38D9.0020.0002.10341] # GOTHIC LETTER NINETY
-10342 ; [.38DA.0020.0002.10342] # GOTHIC LETTER RAIDA
-10343 ; [.38DB.0020.0002.10343] # GOTHIC LETTER SAUIL
-10344 ; [.38DC.0020.0002.10344] # GOTHIC LETTER TEIWS
-10345 ; [.38DD.0020.0002.10345] # GOTHIC LETTER WINJA
-10346 ; [.38DE.0020.0002.10346] # GOTHIC LETTER FAIHU
-10347 ; [.38DF.0020.0002.10347] # GOTHIC LETTER IGGWS
-10348 ; [.38E0.0020.0002.10348] # GOTHIC LETTER HWAIR
-10349 ; [.38E1.0020.0002.10349] # GOTHIC LETTER OTHAL
-1034A ; [.38E2.0020.0002.1034A] # GOTHIC LETTER NINE HUNDRED
-10428 ; [.38E3.0020.0002.10428] # DESERET SMALL LETTER LONG I
-10400 ; [.38E3.0020.0008.10400] # DESERET CAPITAL LETTER LONG I
-10429 ; [.38E4.0020.0002.10429] # DESERET SMALL LETTER LONG E
-10401 ; [.38E4.0020.0008.10401] # DESERET CAPITAL LETTER LONG E
-1042A ; [.38E5.0020.0002.1042A] # DESERET SMALL LETTER LONG A
-10402 ; [.38E5.0020.0008.10402] # DESERET CAPITAL LETTER LONG A
-1042B ; [.38E6.0020.0002.1042B] # DESERET SMALL LETTER LONG AH
-10403 ; [.38E6.0020.0008.10403] # DESERET CAPITAL LETTER LONG AH
-1042C ; [.38E7.0020.0002.1042C] # DESERET SMALL LETTER LONG O
-10404 ; [.38E7.0020.0008.10404] # DESERET CAPITAL LETTER LONG O
-1042D ; [.38E8.0020.0002.1042D] # DESERET SMALL LETTER LONG OO
-10405 ; [.38E8.0020.0008.10405] # DESERET CAPITAL LETTER LONG OO
-1042E ; [.38E9.0020.0002.1042E] # DESERET SMALL LETTER SHORT I
-10406 ; [.38E9.0020.0008.10406] # DESERET CAPITAL LETTER SHORT I
-1042F ; [.38EA.0020.0002.1042F] # DESERET SMALL LETTER SHORT E
-10407 ; [.38EA.0020.0008.10407] # DESERET CAPITAL LETTER SHORT E
-10430 ; [.38EB.0020.0002.10430] # DESERET SMALL LETTER SHORT A
-10408 ; [.38EB.0020.0008.10408] # DESERET CAPITAL LETTER SHORT A
-10431 ; [.38EC.0020.0002.10431] # DESERET SMALL LETTER SHORT AH
-10409 ; [.38EC.0020.0008.10409] # DESERET CAPITAL LETTER SHORT AH
-10432 ; [.38ED.0020.0002.10432] # DESERET SMALL LETTER SHORT O
-1040A ; [.38ED.0020.0008.1040A] # DESERET CAPITAL LETTER SHORT O
-10433 ; [.38EE.0020.0002.10433] # DESERET SMALL LETTER SHORT OO
-1040B ; [.38EE.0020.0008.1040B] # DESERET CAPITAL LETTER SHORT OO
-10434 ; [.38EF.0020.0002.10434] # DESERET SMALL LETTER AY
-1040C ; [.38EF.0020.0008.1040C] # DESERET CAPITAL LETTER AY
-10435 ; [.38F0.0020.0002.10435] # DESERET SMALL LETTER OW
-1040D ; [.38F0.0020.0008.1040D] # DESERET CAPITAL LETTER OW
-10436 ; [.38F1.0020.0002.10436] # DESERET SMALL LETTER WU
-1040E ; [.38F1.0020.0008.1040E] # DESERET CAPITAL LETTER WU
-10437 ; [.38F2.0020.0002.10437] # DESERET SMALL LETTER YEE
-1040F ; [.38F2.0020.0008.1040F] # DESERET CAPITAL LETTER YEE
-10438 ; [.38F3.0020.0002.10438] # DESERET SMALL LETTER H
-10410 ; [.38F3.0020.0008.10410] # DESERET CAPITAL LETTER H
-10439 ; [.38F4.0020.0002.10439] # DESERET SMALL LETTER PEE
-10411 ; [.38F4.0020.0008.10411] # DESERET CAPITAL LETTER PEE
-1043A ; [.38F5.0020.0002.1043A] # DESERET SMALL LETTER BEE
-10412 ; [.38F5.0020.0008.10412] # DESERET CAPITAL LETTER BEE
-1043B ; [.38F6.0020.0002.1043B] # DESERET SMALL LETTER TEE
-10413 ; [.38F6.0020.0008.10413] # DESERET CAPITAL LETTER TEE
-1043C ; [.38F7.0020.0002.1043C] # DESERET SMALL LETTER DEE
-10414 ; [.38F7.0020.0008.10414] # DESERET CAPITAL LETTER DEE
-1043D ; [.38F8.0020.0002.1043D] # DESERET SMALL LETTER CHEE
-10415 ; [.38F8.0020.0008.10415] # DESERET CAPITAL LETTER CHEE
-1043E ; [.38F9.0020.0002.1043E] # DESERET SMALL LETTER JEE
-10416 ; [.38F9.0020.0008.10416] # DESERET CAPITAL LETTER JEE
-1043F ; [.38FA.0020.0002.1043F] # DESERET SMALL LETTER KAY
-10417 ; [.38FA.0020.0008.10417] # DESERET CAPITAL LETTER KAY
-10440 ; [.38FB.0020.0002.10440] # DESERET SMALL LETTER GAY
-10418 ; [.38FB.0020.0008.10418] # DESERET CAPITAL LETTER GAY
-10441 ; [.38FC.0020.0002.10441] # DESERET SMALL LETTER EF
-10419 ; [.38FC.0020.0008.10419] # DESERET CAPITAL LETTER EF
-10442 ; [.38FD.0020.0002.10442] # DESERET SMALL LETTER VEE
-1041A ; [.38FD.0020.0008.1041A] # DESERET CAPITAL LETTER VEE
-10443 ; [.38FE.0020.0002.10443] # DESERET SMALL LETTER ETH
-1041B ; [.38FE.0020.0008.1041B] # DESERET CAPITAL LETTER ETH
-10444 ; [.38FF.0020.0002.10444] # DESERET SMALL LETTER THEE
-1041C ; [.38FF.0020.0008.1041C] # DESERET CAPITAL LETTER THEE
-10445 ; [.3900.0020.0002.10445] # DESERET SMALL LETTER ES
-1041D ; [.3900.0020.0008.1041D] # DESERET CAPITAL LETTER ES
-10446 ; [.3901.0020.0002.10446] # DESERET SMALL LETTER ZEE
-1041E ; [.3901.0020.0008.1041E] # DESERET CAPITAL LETTER ZEE
-10447 ; [.3902.0020.0002.10447] # DESERET SMALL LETTER ESH
-1041F ; [.3902.0020.0008.1041F] # DESERET CAPITAL LETTER ESH
-10448 ; [.3903.0020.0002.10448] # DESERET SMALL LETTER ZHEE
-10420 ; [.3903.0020.0008.10420] # DESERET CAPITAL LETTER ZHEE
-10449 ; [.3904.0020.0002.10449] # DESERET SMALL LETTER ER
-10421 ; [.3904.0020.0008.10421] # DESERET CAPITAL LETTER ER
-1044A ; [.3905.0020.0002.1044A] # DESERET SMALL LETTER EL
-10422 ; [.3905.0020.0008.10422] # DESERET CAPITAL LETTER EL
-1044B ; [.3906.0020.0002.1044B] # DESERET SMALL LETTER EM
-10423 ; [.3906.0020.0008.10423] # DESERET CAPITAL LETTER EM
-1044C ; [.3907.0020.0002.1044C] # DESERET SMALL LETTER EN
-10424 ; [.3907.0020.0008.10424] # DESERET CAPITAL LETTER EN
-1044D ; [.3908.0020.0002.1044D] # DESERET SMALL LETTER ENG
-10425 ; [.3908.0020.0008.10425] # DESERET CAPITAL LETTER ENG
-1044E ; [.3909.0020.0002.1044E] # DESERET SMALL LETTER OI
-10426 ; [.3909.0020.0008.10426] # DESERET CAPITAL LETTER OI
-1044F ; [.390A.0020.0002.1044F] # DESERET SMALL LETTER EW
-10427 ; [.390A.0020.0008.10427] # DESERET CAPITAL LETTER EW
-10450 ; [.390B.0020.0002.10450] # SHAVIAN LETTER PEEP
-10451 ; [.390C.0020.0002.10451] # SHAVIAN LETTER TOT
-10452 ; [.390D.0020.0002.10452] # SHAVIAN LETTER KICK
-10453 ; [.390E.0020.0002.10453] # SHAVIAN LETTER FEE
-10454 ; [.390F.0020.0002.10454] # SHAVIAN LETTER THIGH
-10455 ; [.3910.0020.0002.10455] # SHAVIAN LETTER SO
-10456 ; [.3911.0020.0002.10456] # SHAVIAN LETTER SURE
-10457 ; [.3912.0020.0002.10457] # SHAVIAN LETTER CHURCH
-10458 ; [.3913.0020.0002.10458] # SHAVIAN LETTER YEA
-10459 ; [.3914.0020.0002.10459] # SHAVIAN LETTER HUNG
-1045A ; [.3915.0020.0002.1045A] # SHAVIAN LETTER BIB
-1045B ; [.3916.0020.0002.1045B] # SHAVIAN LETTER DEAD
-1045C ; [.3917.0020.0002.1045C] # SHAVIAN LETTER GAG
-1045D ; [.3918.0020.0002.1045D] # SHAVIAN LETTER VOW
-1045E ; [.3919.0020.0002.1045E] # SHAVIAN LETTER THEY
-1045F ; [.391A.0020.0002.1045F] # SHAVIAN LETTER ZOO
-10460 ; [.391B.0020.0002.10460] # SHAVIAN LETTER MEASURE
-10461 ; [.391C.0020.0002.10461] # SHAVIAN LETTER JUDGE
-10462 ; [.391D.0020.0002.10462] # SHAVIAN LETTER WOE
-10463 ; [.391E.0020.0002.10463] # SHAVIAN LETTER HA-HA
-10464 ; [.391F.0020.0002.10464] # SHAVIAN LETTER LOLL
-10465 ; [.3920.0020.0002.10465] # SHAVIAN LETTER MIME
-10466 ; [.3921.0020.0002.10466] # SHAVIAN LETTER IF
-10467 ; [.3922.0020.0002.10467] # SHAVIAN LETTER EGG
-10468 ; [.3923.0020.0002.10468] # SHAVIAN LETTER ASH
-10469 ; [.3924.0020.0002.10469] # SHAVIAN LETTER ADO
-1046A ; [.3925.0020.0002.1046A] # SHAVIAN LETTER ON
-1046B ; [.3926.0020.0002.1046B] # SHAVIAN LETTER WOOL
-1046C ; [.3927.0020.0002.1046C] # SHAVIAN LETTER OUT
-1046D ; [.3928.0020.0002.1046D] # SHAVIAN LETTER AH
-1046E ; [.3929.0020.0002.1046E] # SHAVIAN LETTER ROAR
-1046F ; [.392A.0020.0002.1046F] # SHAVIAN LETTER NUN
-10470 ; [.392B.0020.0002.10470] # SHAVIAN LETTER EAT
-10471 ; [.392C.0020.0002.10471] # SHAVIAN LETTER AGE
-10472 ; [.392D.0020.0002.10472] # SHAVIAN LETTER ICE
-10473 ; [.392E.0020.0002.10473] # SHAVIAN LETTER UP
-10474 ; [.392F.0020.0002.10474] # SHAVIAN LETTER OAK
-10475 ; [.3930.0020.0002.10475] # SHAVIAN LETTER OOZE
-10476 ; [.3931.0020.0002.10476] # SHAVIAN LETTER OIL
-10477 ; [.3932.0020.0002.10477] # SHAVIAN LETTER AWE
-10478 ; [.3933.0020.0002.10478] # SHAVIAN LETTER ARE
-10479 ; [.3934.0020.0002.10479] # SHAVIAN LETTER OR
-1047A ; [.3935.0020.0002.1047A] # SHAVIAN LETTER AIR
-1047B ; [.3936.0020.0002.1047B] # SHAVIAN LETTER ERR
-1047C ; [.3937.0020.0002.1047C] # SHAVIAN LETTER ARRAY
-1047D ; [.3938.0020.0002.1047D] # SHAVIAN LETTER EAR
-1047E ; [.3939.0020.0002.1047E] # SHAVIAN LETTER IAN
-1047F ; [.393A.0020.0002.1047F] # SHAVIAN LETTER YEW
-10480 ; [.393B.0020.0002.10480] # OSMANYA LETTER ALEF
-10481 ; [.393C.0020.0002.10481] # OSMANYA LETTER BA
-10482 ; [.393D.0020.0002.10482] # OSMANYA LETTER TA
-10483 ; [.393E.0020.0002.10483] # OSMANYA LETTER JA
-10484 ; [.393F.0020.0002.10484] # OSMANYA LETTER XA
-10485 ; [.3940.0020.0002.10485] # OSMANYA LETTER KHA
-10486 ; [.3941.0020.0002.10486] # OSMANYA LETTER DEEL
-10487 ; [.3942.0020.0002.10487] # OSMANYA LETTER RA
-10488 ; [.3943.0020.0002.10488] # OSMANYA LETTER SA
-10489 ; [.3944.0020.0002.10489] # OSMANYA LETTER SHIIN
-1048A ; [.3945.0020.0002.1048A] # OSMANYA LETTER DHA
-1048B ; [.3946.0020.0002.1048B] # OSMANYA LETTER CAYN
-1048C ; [.3947.0020.0002.1048C] # OSMANYA LETTER GA
-1048D ; [.3948.0020.0002.1048D] # OSMANYA LETTER FA
-1048E ; [.3949.0020.0002.1048E] # OSMANYA LETTER QAAF
-1048F ; [.394A.0020.0002.1048F] # OSMANYA LETTER KAAF
-10490 ; [.394B.0020.0002.10490] # OSMANYA LETTER LAAN
-10491 ; [.394C.0020.0002.10491] # OSMANYA LETTER MIIN
-10492 ; [.394D.0020.0002.10492] # OSMANYA LETTER NUUN
-10493 ; [.394E.0020.0002.10493] # OSMANYA LETTER WAW
-10494 ; [.394F.0020.0002.10494] # OSMANYA LETTER HA
-10495 ; [.3950.0020.0002.10495] # OSMANYA LETTER YA
-10496 ; [.3951.0020.0002.10496] # OSMANYA LETTER A
-10497 ; [.3952.0020.0002.10497] # OSMANYA LETTER E
-10498 ; [.3953.0020.0002.10498] # OSMANYA LETTER I
-10499 ; [.3954.0020.0002.10499] # OSMANYA LETTER O
-1049A ; [.3955.0020.0002.1049A] # OSMANYA LETTER U
-1049B ; [.3956.0020.0002.1049B] # OSMANYA LETTER AA
-1049C ; [.3957.0020.0002.1049C] # OSMANYA LETTER EE
-1049D ; [.3958.0020.0002.1049D] # OSMANYA LETTER OO
-110D0 ; [.3959.0020.0002.110D0] # SORA SOMPENG LETTER SAH
-110D1 ; [.395A.0020.0002.110D1] # SORA SOMPENG LETTER TAH
-110D2 ; [.395B.0020.0002.110D2] # SORA SOMPENG LETTER BAH
-110D3 ; [.395C.0020.0002.110D3] # SORA SOMPENG LETTER CAH
-110D4 ; [.395D.0020.0002.110D4] # SORA SOMPENG LETTER DAH
-110D5 ; [.395E.0020.0002.110D5] # SORA SOMPENG LETTER GAH
-110D6 ; [.395F.0020.0002.110D6] # SORA SOMPENG LETTER MAH
-110D7 ; [.3960.0020.0002.110D7] # SORA SOMPENG LETTER NGAH
-110D8 ; [.3961.0020.0002.110D8] # SORA SOMPENG LETTER LAH
-110D9 ; [.3962.0020.0002.110D9] # SORA SOMPENG LETTER NAH
-110DA ; [.3963.0020.0002.110DA] # SORA SOMPENG LETTER VAH
-110DB ; [.3964.0020.0002.110DB] # SORA SOMPENG LETTER PAH
-110DC ; [.3965.0020.0002.110DC] # SORA SOMPENG LETTER YAH
-110DD ; [.3966.0020.0002.110DD] # SORA SOMPENG LETTER RAH
-110DE ; [.3967.0020.0002.110DE] # SORA SOMPENG LETTER HAH
-110DF ; [.3968.0020.0002.110DF] # SORA SOMPENG LETTER KAH
-110E0 ; [.3969.0020.0002.110E0] # SORA SOMPENG LETTER JAH
-110E1 ; [.396A.0020.0002.110E1] # SORA SOMPENG LETTER NYAH
-110E2 ; [.396B.0020.0002.110E2] # SORA SOMPENG LETTER AH
-110E3 ; [.396C.0020.0002.110E3] # SORA SOMPENG LETTER EEH
-110E4 ; [.396D.0020.0002.110E4] # SORA SOMPENG LETTER IH
-110E5 ; [.396E.0020.0002.110E5] # SORA SOMPENG LETTER UH
-110E6 ; [.396F.0020.0002.110E6] # SORA SOMPENG LETTER OH
-110E7 ; [.3970.0020.0002.110E7] # SORA SOMPENG LETTER EH
-110E8 ; [.3971.0020.0002.110E8] # SORA SOMPENG LETTER MAE
-10000 ; [.3972.0020.0002.10000] # LINEAR B SYLLABLE B008 A
-10001 ; [.3973.0020.0002.10001] # LINEAR B SYLLABLE B038 E
-10002 ; [.3974.0020.0002.10002] # LINEAR B SYLLABLE B028 I
-10003 ; [.3975.0020.0002.10003] # LINEAR B SYLLABLE B061 O
-10004 ; [.3976.0020.0002.10004] # LINEAR B SYLLABLE B010 U
-10005 ; [.3977.0020.0002.10005] # LINEAR B SYLLABLE B001 DA
-10006 ; [.3978.0020.0002.10006] # LINEAR B SYLLABLE B045 DE
-10007 ; [.3979.0020.0002.10007] # LINEAR B SYLLABLE B007 DI
-10008 ; [.397A.0020.0002.10008] # LINEAR B SYLLABLE B014 DO
-10009 ; [.397B.0020.0002.10009] # LINEAR B SYLLABLE B051 DU
-1000A ; [.397C.0020.0002.1000A] # LINEAR B SYLLABLE B057 JA
-1000B ; [.397D.0020.0002.1000B] # LINEAR B SYLLABLE B046 JE
-1000D ; [.397E.0020.0002.1000D] # LINEAR B SYLLABLE B036 JO
-1000E ; [.397F.0020.0002.1000E] # LINEAR B SYLLABLE B065 JU
-1000F ; [.3980.0020.0002.1000F] # LINEAR B SYLLABLE B077 KA
-10010 ; [.3981.0020.0002.10010] # LINEAR B SYLLABLE B044 KE
-10011 ; [.3982.0020.0002.10011] # LINEAR B SYLLABLE B067 KI
-10012 ; [.3983.0020.0002.10012] # LINEAR B SYLLABLE B070 KO
-10013 ; [.3984.0020.0002.10013] # LINEAR B SYLLABLE B081 KU
-10014 ; [.3985.0020.0002.10014] # LINEAR B SYLLABLE B080 MA
-10015 ; [.3986.0020.0002.10015] # LINEAR B SYLLABLE B013 ME
-10016 ; [.3987.0020.0002.10016] # LINEAR B SYLLABLE B073 MI
-10017 ; [.3988.0020.0002.10017] # LINEAR B SYLLABLE B015 MO
-10018 ; [.3989.0020.0002.10018] # LINEAR B SYLLABLE B023 MU
-10019 ; [.398A.0020.0002.10019] # LINEAR B SYLLABLE B006 NA
-1001A ; [.398B.0020.0002.1001A] # LINEAR B SYLLABLE B024 NE
-1001B ; [.398C.0020.0002.1001B] # LINEAR B SYLLABLE B030 NI
-1001C ; [.398D.0020.0002.1001C] # LINEAR B SYLLABLE B052 NO
-1001D ; [.398E.0020.0002.1001D] # LINEAR B SYLLABLE B055 NU
-1001E ; [.398F.0020.0002.1001E] # LINEAR B SYLLABLE B003 PA
-1001F ; [.3990.0020.0002.1001F] # LINEAR B SYLLABLE B072 PE
-10020 ; [.3991.0020.0002.10020] # LINEAR B SYLLABLE B039 PI
-10021 ; [.3992.0020.0002.10021] # LINEAR B SYLLABLE B011 PO
-10022 ; [.3993.0020.0002.10022] # LINEAR B SYLLABLE B050 PU
-10023 ; [.3994.0020.0002.10023] # LINEAR B SYLLABLE B016 QA
-10024 ; [.3995.0020.0002.10024] # LINEAR B SYLLABLE B078 QE
-10025 ; [.3996.0020.0002.10025] # LINEAR B SYLLABLE B021 QI
-10026 ; [.3997.0020.0002.10026] # LINEAR B SYLLABLE B032 QO
-10028 ; [.3998.0020.0002.10028] # LINEAR B SYLLABLE B060 RA
-10029 ; [.3999.0020.0002.10029] # LINEAR B SYLLABLE B027 RE
-1002A ; [.399A.0020.0002.1002A] # LINEAR B SYLLABLE B053 RI
-1002B ; [.399B.0020.0002.1002B] # LINEAR B SYLLABLE B002 RO
-1002C ; [.399C.0020.0002.1002C] # LINEAR B SYLLABLE B026 RU
-1002D ; [.399D.0020.0002.1002D] # LINEAR B SYLLABLE B031 SA
-1002E ; [.399E.0020.0002.1002E] # LINEAR B SYLLABLE B009 SE
-1002F ; [.399F.0020.0002.1002F] # LINEAR B SYLLABLE B041 SI
-10030 ; [.39A0.0020.0002.10030] # LINEAR B SYLLABLE B012 SO
-10031 ; [.39A1.0020.0002.10031] # LINEAR B SYLLABLE B058 SU
-10032 ; [.39A2.0020.0002.10032] # LINEAR B SYLLABLE B059 TA
-10033 ; [.39A3.0020.0002.10033] # LINEAR B SYLLABLE B004 TE
-10034 ; [.39A4.0020.0002.10034] # LINEAR B SYLLABLE B037 TI
-10035 ; [.39A5.0020.0002.10035] # LINEAR B SYLLABLE B005 TO
-10036 ; [.39A6.0020.0002.10036] # LINEAR B SYLLABLE B069 TU
-10037 ; [.39A7.0020.0002.10037] # LINEAR B SYLLABLE B054 WA
-10038 ; [.39A8.0020.0002.10038] # LINEAR B SYLLABLE B075 WE
-10039 ; [.39A9.0020.0002.10039] # LINEAR B SYLLABLE B040 WI
-1003A ; [.39AA.0020.0002.1003A] # LINEAR B SYLLABLE B042 WO
-1003C ; [.39AB.0020.0002.1003C] # LINEAR B SYLLABLE B017 ZA
-1003D ; [.39AC.0020.0002.1003D] # LINEAR B SYLLABLE B074 ZE
-1003F ; [.39AD.0020.0002.1003F] # LINEAR B SYLLABLE B020 ZO
-10040 ; [.39AE.0020.0002.10040] # LINEAR B SYLLABLE B025 A2
-10041 ; [.39AF.0020.0002.10041] # LINEAR B SYLLABLE B043 A3
-10042 ; [.39B0.0020.0002.10042] # LINEAR B SYLLABLE B085 AU
-10043 ; [.39B1.0020.0002.10043] # LINEAR B SYLLABLE B071 DWE
-10044 ; [.39B2.0020.0002.10044] # LINEAR B SYLLABLE B090 DWO
-10045 ; [.39B3.0020.0002.10045] # LINEAR B SYLLABLE B048 NWA
-10046 ; [.39B4.0020.0002.10046] # LINEAR B SYLLABLE B029 PU2
-10047 ; [.39B5.0020.0002.10047] # LINEAR B SYLLABLE B062 PTE
-10048 ; [.39B6.0020.0002.10048] # LINEAR B SYLLABLE B076 RA2
-10049 ; [.39B7.0020.0002.10049] # LINEAR B SYLLABLE B033 RA3
-1004A ; [.39B8.0020.0002.1004A] # LINEAR B SYLLABLE B068 RO2
-1004B ; [.39B9.0020.0002.1004B] # LINEAR B SYLLABLE B066 TA2
-1004C ; [.39BA.0020.0002.1004C] # LINEAR B SYLLABLE B087 TWE
-1004D ; [.39BB.0020.0002.1004D] # LINEAR B SYLLABLE B091 TWO
-10050 ; [.39BC.0020.0002.10050] # LINEAR B SYMBOL B018
-10051 ; [.39BD.0020.0002.10051] # LINEAR B SYMBOL B019
-10052 ; [.39BE.0020.0002.10052] # LINEAR B SYMBOL B022
-10053 ; [.39BF.0020.0002.10053] # LINEAR B SYMBOL B034
-10054 ; [.39C0.0020.0002.10054] # LINEAR B SYMBOL B047
-10055 ; [.39C1.0020.0002.10055] # LINEAR B SYMBOL B049
-10056 ; [.39C2.0020.0002.10056] # LINEAR B SYMBOL B056
-10057 ; [.39C3.0020.0002.10057] # LINEAR B SYMBOL B063
-10058 ; [.39C4.0020.0002.10058] # LINEAR B SYMBOL B064
-10059 ; [.39C5.0020.0002.10059] # LINEAR B SYMBOL B079
-1005A ; [.39C6.0020.0002.1005A] # LINEAR B SYMBOL B082
-1005B ; [.39C7.0020.0002.1005B] # LINEAR B SYMBOL B083
-1005C ; [.39C8.0020.0002.1005C] # LINEAR B SYMBOL B086
-1005D ; [.39C9.0020.0002.1005D] # LINEAR B SYMBOL B089
-10080 ; [.39CA.0020.0002.10080] # LINEAR B IDEOGRAM B100 MAN
-10081 ; [.39CB.0020.0002.10081] # LINEAR B IDEOGRAM B102 WOMAN
-10082 ; [.39CC.0020.0002.10082] # LINEAR B IDEOGRAM B104 DEER
-10083 ; [.39CD.0020.0002.10083] # LINEAR B IDEOGRAM B105 EQUID
-10084 ; [.39CE.0020.0002.10084] # LINEAR B IDEOGRAM B105F MARE
-10085 ; [.39CF.0020.0002.10085] # LINEAR B IDEOGRAM B105M STALLION
-10086 ; [.39D0.0020.0002.10086] # LINEAR B IDEOGRAM B106F EWE
-10087 ; [.39D1.0020.0002.10087] # LINEAR B IDEOGRAM B106M RAM
-10088 ; [.39D2.0020.0002.10088] # LINEAR B IDEOGRAM B107F SHE-GOAT
-10089 ; [.39D3.0020.0002.10089] # LINEAR B IDEOGRAM B107M HE-GOAT
-1008A ; [.39D4.0020.0002.1008A] # LINEAR B IDEOGRAM B108F SOW
-1008B ; [.39D5.0020.0002.1008B] # LINEAR B IDEOGRAM B108M BOAR
-1008C ; [.39D6.0020.0002.1008C] # LINEAR B IDEOGRAM B109F COW
-1008D ; [.39D7.0020.0002.1008D] # LINEAR B IDEOGRAM B109M BULL
-1008E ; [.39D8.0020.0002.1008E] # LINEAR B IDEOGRAM B120 WHEAT
-1008F ; [.39D9.0020.0002.1008F] # LINEAR B IDEOGRAM B121 BARLEY
-10090 ; [.39DA.0020.0002.10090] # LINEAR B IDEOGRAM B122 OLIVE
-10091 ; [.39DB.0020.0002.10091] # LINEAR B IDEOGRAM B123 SPICE
-10092 ; [.39DC.0020.0002.10092] # LINEAR B IDEOGRAM B125 CYPERUS
-10093 ; [.39DD.0020.0002.10093] # LINEAR B MONOGRAM B127 KAPO
-10094 ; [.39DE.0020.0002.10094] # LINEAR B MONOGRAM B128 KANAKO
-10095 ; [.39DF.0020.0002.10095] # LINEAR B IDEOGRAM B130 OIL
-10096 ; [.39E0.0020.0002.10096] # LINEAR B IDEOGRAM B131 WINE
-10097 ; [.39E1.0020.0002.10097] # LINEAR B IDEOGRAM B132
-10098 ; [.39E2.0020.0002.10098] # LINEAR B MONOGRAM B133 AREPA
-10099 ; [.39E3.0020.0002.10099] # LINEAR B MONOGRAM B135 MERI
-1009A ; [.39E4.0020.0002.1009A] # LINEAR B IDEOGRAM B140 BRONZE
-1009B ; [.39E5.0020.0002.1009B] # LINEAR B IDEOGRAM B141 GOLD
-1009C ; [.39E6.0020.0002.1009C] # LINEAR B IDEOGRAM B142
-1009D ; [.39E7.0020.0002.1009D] # LINEAR B IDEOGRAM B145 WOOL
-1009E ; [.39E8.0020.0002.1009E] # LINEAR B IDEOGRAM B146
-1009F ; [.39E9.0020.0002.1009F] # LINEAR B IDEOGRAM B150
-100A0 ; [.39EA.0020.0002.100A0] # LINEAR B IDEOGRAM B151 HORN
-100A1 ; [.39EB.0020.0002.100A1] # LINEAR B IDEOGRAM B152
-100A2 ; [.39EC.0020.0002.100A2] # LINEAR B IDEOGRAM B153
-100A3 ; [.39ED.0020.0002.100A3] # LINEAR B IDEOGRAM B154
-100A4 ; [.39EE.0020.0002.100A4] # LINEAR B MONOGRAM B156 TURO2
-100A5 ; [.39EF.0020.0002.100A5] # LINEAR B IDEOGRAM B157
-100A6 ; [.39F0.0020.0002.100A6] # LINEAR B IDEOGRAM B158
-100A7 ; [.39F1.0020.0002.100A7] # LINEAR B IDEOGRAM B159 CLOTH
-100A8 ; [.39F2.0020.0002.100A8] # LINEAR B IDEOGRAM B160
-100A9 ; [.39F3.0020.0002.100A9] # LINEAR B IDEOGRAM B161
-100AA ; [.39F4.0020.0002.100AA] # LINEAR B IDEOGRAM B162 GARMENT
-100AB ; [.39F5.0020.0002.100AB] # LINEAR B IDEOGRAM B163 ARMOUR
-100AC ; [.39F6.0020.0002.100AC] # LINEAR B IDEOGRAM B164
-100AD ; [.39F7.0020.0002.100AD] # LINEAR B IDEOGRAM B165
-100AE ; [.39F8.0020.0002.100AE] # LINEAR B IDEOGRAM B166
-100AF ; [.39F9.0020.0002.100AF] # LINEAR B IDEOGRAM B167
-100B0 ; [.39FA.0020.0002.100B0] # LINEAR B IDEOGRAM B168
-100B1 ; [.39FB.0020.0002.100B1] # LINEAR B IDEOGRAM B169
-100B2 ; [.39FC.0020.0002.100B2] # LINEAR B IDEOGRAM B170
-100B3 ; [.39FD.0020.0002.100B3] # LINEAR B IDEOGRAM B171
-100B4 ; [.39FE.0020.0002.100B4] # LINEAR B IDEOGRAM B172
-100B5 ; [.39FF.0020.0002.100B5] # LINEAR B IDEOGRAM B173 MONTH
-100B6 ; [.3A00.0020.0002.100B6] # LINEAR B IDEOGRAM B174
-100B7 ; [.3A01.0020.0002.100B7] # LINEAR B IDEOGRAM B176 TREE
-100B8 ; [.3A02.0020.0002.100B8] # LINEAR B IDEOGRAM B177
-100B9 ; [.3A03.0020.0002.100B9] # LINEAR B IDEOGRAM B178
-100BA ; [.3A04.0020.0002.100BA] # LINEAR B IDEOGRAM B179
-100BB ; [.3A05.0020.0002.100BB] # LINEAR B IDEOGRAM B180
-100BC ; [.3A06.0020.0002.100BC] # LINEAR B IDEOGRAM B181
-100BD ; [.3A07.0020.0002.100BD] # LINEAR B IDEOGRAM B182
-100BE ; [.3A08.0020.0002.100BE] # LINEAR B IDEOGRAM B183
-100BF ; [.3A09.0020.0002.100BF] # LINEAR B IDEOGRAM B184
-100C0 ; [.3A0A.0020.0002.100C0] # LINEAR B IDEOGRAM B185
-100C1 ; [.3A0B.0020.0002.100C1] # LINEAR B IDEOGRAM B189
-100C2 ; [.3A0C.0020.0002.100C2] # LINEAR B IDEOGRAM B190
-100C3 ; [.3A0D.0020.0002.100C3] # LINEAR B IDEOGRAM B191 HELMET
-100C4 ; [.3A0E.0020.0002.100C4] # LINEAR B IDEOGRAM B220 FOOTSTOOL
-100C5 ; [.3A0F.0020.0002.100C5] # LINEAR B IDEOGRAM B225 BATHTUB
-100C6 ; [.3A10.0020.0002.100C6] # LINEAR B IDEOGRAM B230 SPEAR
-100C7 ; [.3A11.0020.0002.100C7] # LINEAR B IDEOGRAM B231 ARROW
-100C8 ; [.3A12.0020.0002.100C8] # LINEAR B IDEOGRAM B232
-100C9 ; [.3A13.0020.0002.100C9] # LINEAR B IDEOGRAM B233 SWORD
-100CA ; [.3A14.0020.0002.100CA] # LINEAR B IDEOGRAM B234
-100CB ; [.3A15.0020.0002.100CB] # LINEAR B IDEOGRAM B236
-100CC ; [.3A16.0020.0002.100CC] # LINEAR B IDEOGRAM B240 WHEELED CHARIOT
-100CD ; [.3A17.0020.0002.100CD] # LINEAR B IDEOGRAM B241 CHARIOT
-100CE ; [.3A18.0020.0002.100CE] # LINEAR B IDEOGRAM B242 CHARIOT FRAME
-100CF ; [.3A19.0020.0002.100CF] # LINEAR B IDEOGRAM B243 WHEEL
-100D0 ; [.3A1A.0020.0002.100D0] # LINEAR B IDEOGRAM B245
-100D1 ; [.3A1B.0020.0002.100D1] # LINEAR B IDEOGRAM B246
-100D2 ; [.3A1C.0020.0002.100D2] # LINEAR B MONOGRAM B247 DIPTE
-100D3 ; [.3A1D.0020.0002.100D3] # LINEAR B IDEOGRAM B248
-100D4 ; [.3A1E.0020.0002.100D4] # LINEAR B IDEOGRAM B249
-100D5 ; [.3A1F.0020.0002.100D5] # LINEAR B IDEOGRAM B251
-100D6 ; [.3A20.0020.0002.100D6] # LINEAR B IDEOGRAM B252
-100D7 ; [.3A21.0020.0002.100D7] # LINEAR B IDEOGRAM B253
-100D8 ; [.3A22.0020.0002.100D8] # LINEAR B IDEOGRAM B254 DART
-100D9 ; [.3A23.0020.0002.100D9] # LINEAR B IDEOGRAM B255
-100DA ; [.3A24.0020.0002.100DA] # LINEAR B IDEOGRAM B256
-100DB ; [.3A25.0020.0002.100DB] # LINEAR B IDEOGRAM B257
-100DC ; [.3A26.0020.0002.100DC] # LINEAR B IDEOGRAM B258
-100DD ; [.3A27.0020.0002.100DD] # LINEAR B IDEOGRAM B259
-100DE ; [.3A28.0020.0002.100DE] # LINEAR B IDEOGRAM VESSEL B155
-100DF ; [.3A29.0020.0002.100DF] # LINEAR B IDEOGRAM VESSEL B200
-100E0 ; [.3A2A.0020.0002.100E0] # LINEAR B IDEOGRAM VESSEL B201
-100E1 ; [.3A2B.0020.0002.100E1] # LINEAR B IDEOGRAM VESSEL B202
-100E2 ; [.3A2C.0020.0002.100E2] # LINEAR B IDEOGRAM VESSEL B203
-100E3 ; [.3A2D.0020.0002.100E3] # LINEAR B IDEOGRAM VESSEL B204
-100E4 ; [.3A2E.0020.0002.100E4] # LINEAR B IDEOGRAM VESSEL B205
-100E5 ; [.3A2F.0020.0002.100E5] # LINEAR B IDEOGRAM VESSEL B206
-100E6 ; [.3A30.0020.0002.100E6] # LINEAR B IDEOGRAM VESSEL B207
-100E7 ; [.3A31.0020.0002.100E7] # LINEAR B IDEOGRAM VESSEL B208
-100E8 ; [.3A32.0020.0002.100E8] # LINEAR B IDEOGRAM VESSEL B209
-100E9 ; [.3A33.0020.0002.100E9] # LINEAR B IDEOGRAM VESSEL B210
-100EA ; [.3A34.0020.0002.100EA] # LINEAR B IDEOGRAM VESSEL B211
-100EB ; [.3A35.0020.0002.100EB] # LINEAR B IDEOGRAM VESSEL B212
-100EC ; [.3A36.0020.0002.100EC] # LINEAR B IDEOGRAM VESSEL B213
-100ED ; [.3A37.0020.0002.100ED] # LINEAR B IDEOGRAM VESSEL B214
-100EE ; [.3A38.0020.0002.100EE] # LINEAR B IDEOGRAM VESSEL B215
-100EF ; [.3A39.0020.0002.100EF] # LINEAR B IDEOGRAM VESSEL B216
-100F0 ; [.3A3A.0020.0002.100F0] # LINEAR B IDEOGRAM VESSEL B217
-100F1 ; [.3A3B.0020.0002.100F1] # LINEAR B IDEOGRAM VESSEL B218
-100F2 ; [.3A3C.0020.0002.100F2] # LINEAR B IDEOGRAM VESSEL B219
-100F3 ; [.3A3D.0020.0002.100F3] # LINEAR B IDEOGRAM VESSEL B221
-100F4 ; [.3A3E.0020.0002.100F4] # LINEAR B IDEOGRAM VESSEL B222
-100F5 ; [.3A3F.0020.0002.100F5] # LINEAR B IDEOGRAM VESSEL B226
-100F6 ; [.3A40.0020.0002.100F6] # LINEAR B IDEOGRAM VESSEL B227
-100F7 ; [.3A41.0020.0002.100F7] # LINEAR B IDEOGRAM VESSEL B228
-100F8 ; [.3A42.0020.0002.100F8] # LINEAR B IDEOGRAM VESSEL B229
-100F9 ; [.3A43.0020.0002.100F9] # LINEAR B IDEOGRAM VESSEL B250
-100FA ; [.3A44.0020.0002.100FA] # LINEAR B IDEOGRAM VESSEL B305
-10800 ; [.3A45.0020.0002.10800] # CYPRIOT SYLLABLE A
-10801 ; [.3A46.0020.0002.10801] # CYPRIOT SYLLABLE E
-10802 ; [.3A47.0020.0002.10802] # CYPRIOT SYLLABLE I
-10803 ; [.3A48.0020.0002.10803] # CYPRIOT SYLLABLE O
-10804 ; [.3A49.0020.0002.10804] # CYPRIOT SYLLABLE U
-10805 ; [.3A4A.0020.0002.10805] # CYPRIOT SYLLABLE JA
-10808 ; [.3A4B.0020.0002.10808] # CYPRIOT SYLLABLE JO
-1080A ; [.3A4C.0020.0002.1080A] # CYPRIOT SYLLABLE KA
-1080B ; [.3A4D.0020.0002.1080B] # CYPRIOT SYLLABLE KE
-1080C ; [.3A4E.0020.0002.1080C] # CYPRIOT SYLLABLE KI
-1080D ; [.3A4F.0020.0002.1080D] # CYPRIOT SYLLABLE KO
-1080E ; [.3A50.0020.0002.1080E] # CYPRIOT SYLLABLE KU
-1080F ; [.3A51.0020.0002.1080F] # CYPRIOT SYLLABLE LA
-10810 ; [.3A52.0020.0002.10810] # CYPRIOT SYLLABLE LE
-10811 ; [.3A53.0020.0002.10811] # CYPRIOT SYLLABLE LI
-10812 ; [.3A54.0020.0002.10812] # CYPRIOT SYLLABLE LO
-10813 ; [.3A55.0020.0002.10813] # CYPRIOT SYLLABLE LU
-10814 ; [.3A56.0020.0002.10814] # CYPRIOT SYLLABLE MA
-10815 ; [.3A57.0020.0002.10815] # CYPRIOT SYLLABLE ME
-10816 ; [.3A58.0020.0002.10816] # CYPRIOT SYLLABLE MI
-10817 ; [.3A59.0020.0002.10817] # CYPRIOT SYLLABLE MO
-10818 ; [.3A5A.0020.0002.10818] # CYPRIOT SYLLABLE MU
-10819 ; [.3A5B.0020.0002.10819] # CYPRIOT SYLLABLE NA
-1081A ; [.3A5C.0020.0002.1081A] # CYPRIOT SYLLABLE NE
-1081B ; [.3A5D.0020.0002.1081B] # CYPRIOT SYLLABLE NI
-1081C ; [.3A5E.0020.0002.1081C] # CYPRIOT SYLLABLE NO
-1081D ; [.3A5F.0020.0002.1081D] # CYPRIOT SYLLABLE NU
-1081E ; [.3A60.0020.0002.1081E] # CYPRIOT SYLLABLE PA
-1081F ; [.3A61.0020.0002.1081F] # CYPRIOT SYLLABLE PE
-10820 ; [.3A62.0020.0002.10820] # CYPRIOT SYLLABLE PI
-10821 ; [.3A63.0020.0002.10821] # CYPRIOT SYLLABLE PO
-10822 ; [.3A64.0020.0002.10822] # CYPRIOT SYLLABLE PU
-10823 ; [.3A65.0020.0002.10823] # CYPRIOT SYLLABLE RA
-10824 ; [.3A66.0020.0002.10824] # CYPRIOT SYLLABLE RE
-10825 ; [.3A67.0020.0002.10825] # CYPRIOT SYLLABLE RI
-10826 ; [.3A68.0020.0002.10826] # CYPRIOT SYLLABLE RO
-10827 ; [.3A69.0020.0002.10827] # CYPRIOT SYLLABLE RU
-10828 ; [.3A6A.0020.0002.10828] # CYPRIOT SYLLABLE SA
-10829 ; [.3A6B.0020.0002.10829] # CYPRIOT SYLLABLE SE
-1082A ; [.3A6C.0020.0002.1082A] # CYPRIOT SYLLABLE SI
-1082B ; [.3A6D.0020.0002.1082B] # CYPRIOT SYLLABLE SO
-1082C ; [.3A6E.0020.0002.1082C] # CYPRIOT SYLLABLE SU
-1082D ; [.3A6F.0020.0002.1082D] # CYPRIOT SYLLABLE TA
-1082E ; [.3A70.0020.0002.1082E] # CYPRIOT SYLLABLE TE
-1082F ; [.3A71.0020.0002.1082F] # CYPRIOT SYLLABLE TI
-10830 ; [.3A72.0020.0002.10830] # CYPRIOT SYLLABLE TO
-10831 ; [.3A73.0020.0002.10831] # CYPRIOT SYLLABLE TU
-10832 ; [.3A74.0020.0002.10832] # CYPRIOT SYLLABLE WA
-10833 ; [.3A75.0020.0002.10833] # CYPRIOT SYLLABLE WE
-10834 ; [.3A76.0020.0002.10834] # CYPRIOT SYLLABLE WI
-10835 ; [.3A77.0020.0002.10835] # CYPRIOT SYLLABLE WO
-10837 ; [.3A78.0020.0002.10837] # CYPRIOT SYLLABLE XA
-10838 ; [.3A79.0020.0002.10838] # CYPRIOT SYLLABLE XE
-1083C ; [.3A7A.0020.0002.1083C] # CYPRIOT SYLLABLE ZA
-1083F ; [.3A7B.0020.0002.1083F] # CYPRIOT SYLLABLE ZO
-10A60 ; [.3A7C.0020.0002.10A60] # OLD SOUTH ARABIAN LETTER HE
-10A61 ; [.3A7D.0020.0002.10A61] # OLD SOUTH ARABIAN LETTER LAMEDH
-10A62 ; [.3A7E.0020.0002.10A62] # OLD SOUTH ARABIAN LETTER HETH
-10A63 ; [.3A7F.0020.0002.10A63] # OLD SOUTH ARABIAN LETTER MEM
-10A64 ; [.3A80.0020.0002.10A64] # OLD SOUTH ARABIAN LETTER QOPH
-10A65 ; [.3A81.0020.0002.10A65] # OLD SOUTH ARABIAN LETTER WAW
-10A66 ; [.3A82.0020.0002.10A66] # OLD SOUTH ARABIAN LETTER SHIN
-10A67 ; [.3A83.0020.0002.10A67] # OLD SOUTH ARABIAN LETTER RESH
-10A68 ; [.3A84.0020.0002.10A68] # OLD SOUTH ARABIAN LETTER BETH
-10A69 ; [.3A85.0020.0002.10A69] # OLD SOUTH ARABIAN LETTER TAW
-10A6A ; [.3A86.0020.0002.10A6A] # OLD SOUTH ARABIAN LETTER SAT
-10A6B ; [.3A87.0020.0002.10A6B] # OLD SOUTH ARABIAN LETTER KAPH
-10A6C ; [.3A88.0020.0002.10A6C] # OLD SOUTH ARABIAN LETTER NUN
-10A6D ; [.3A89.0020.0002.10A6D] # OLD SOUTH ARABIAN LETTER KHETH
-10A6E ; [.3A8A.0020.0002.10A6E] # OLD SOUTH ARABIAN LETTER SADHE
-10A6F ; [.3A8B.0020.0002.10A6F] # OLD SOUTH ARABIAN LETTER SAMEKH
-10A70 ; [.3A8C.0020.0002.10A70] # OLD SOUTH ARABIAN LETTER FE
-10A71 ; [.3A8D.0020.0002.10A71] # OLD SOUTH ARABIAN LETTER ALEF
-10A72 ; [.3A8E.0020.0002.10A72] # OLD SOUTH ARABIAN LETTER AYN
-10A73 ; [.3A8F.0020.0002.10A73] # OLD SOUTH ARABIAN LETTER DHADHE
-10A74 ; [.3A90.0020.0002.10A74] # OLD SOUTH ARABIAN LETTER GIMEL
-10A75 ; [.3A91.0020.0002.10A75] # OLD SOUTH ARABIAN LETTER DALETH
-10A76 ; [.3A92.0020.0002.10A76] # OLD SOUTH ARABIAN LETTER GHAYN
-10A77 ; [.3A93.0020.0002.10A77] # OLD SOUTH ARABIAN LETTER TETH
-10A78 ; [.3A94.0020.0002.10A78] # OLD SOUTH ARABIAN LETTER ZAYN
-10A79 ; [.3A95.0020.0002.10A79] # OLD SOUTH ARABIAN LETTER DHALETH
-10A7A ; [.3A96.0020.0002.10A7A] # OLD SOUTH ARABIAN LETTER YODH
-10A7B ; [.3A97.0020.0002.10A7B] # OLD SOUTH ARABIAN LETTER THAW
-10A7C ; [.3A98.0020.0002.10A7C] # OLD SOUTH ARABIAN LETTER THETH
-10B00 ; [.3A99.0020.0002.10B00] # AVESTAN LETTER A
-10B01 ; [.3A9A.0020.0002.10B01] # AVESTAN LETTER AA
-10B02 ; [.3A9B.0020.0002.10B02] # AVESTAN LETTER AO
-10B03 ; [.3A9C.0020.0002.10B03] # AVESTAN LETTER AAO
-10B04 ; [.3A9D.0020.0002.10B04] # AVESTAN LETTER AN
-10B05 ; [.3A9E.0020.0002.10B05] # AVESTAN LETTER AAN
-10B06 ; [.3A9F.0020.0002.10B06] # AVESTAN LETTER AE
-10B07 ; [.3AA0.0020.0002.10B07] # AVESTAN LETTER AEE
-10B08 ; [.3AA1.0020.0002.10B08] # AVESTAN LETTER E
-10B09 ; [.3AA2.0020.0002.10B09] # AVESTAN LETTER EE
-10B0A ; [.3AA3.0020.0002.10B0A] # AVESTAN LETTER O
-10B0B ; [.3AA4.0020.0002.10B0B] # AVESTAN LETTER OO
-10B0C ; [.3AA5.0020.0002.10B0C] # AVESTAN LETTER I
-10B0D ; [.3AA6.0020.0002.10B0D] # AVESTAN LETTER II
-10B0E ; [.3AA7.0020.0002.10B0E] # AVESTAN LETTER U
-10B0F ; [.3AA8.0020.0002.10B0F] # AVESTAN LETTER UU
-10B10 ; [.3AA9.0020.0002.10B10] # AVESTAN LETTER KE
-10B11 ; [.3AAA.0020.0002.10B11] # AVESTAN LETTER XE
-10B12 ; [.3AAB.0020.0002.10B12] # AVESTAN LETTER XYE
-10B13 ; [.3AAC.0020.0002.10B13] # AVESTAN LETTER XVE
-10B14 ; [.3AAD.0020.0002.10B14] # AVESTAN LETTER GE
-10B15 ; [.3AAE.0020.0002.10B15] # AVESTAN LETTER GGE
-10B16 ; [.3AAF.0020.0002.10B16] # AVESTAN LETTER GHE
-10B17 ; [.3AB0.0020.0002.10B17] # AVESTAN LETTER CE
-10B18 ; [.3AB1.0020.0002.10B18] # AVESTAN LETTER JE
-10B19 ; [.3AB2.0020.0002.10B19] # AVESTAN LETTER TE
-10B1A ; [.3AB3.0020.0002.10B1A] # AVESTAN LETTER THE
-10B1B ; [.3AB4.0020.0002.10B1B] # AVESTAN LETTER DE
-10B1C ; [.3AB5.0020.0002.10B1C] # AVESTAN LETTER DHE
-10B1D ; [.3AB6.0020.0002.10B1D] # AVESTAN LETTER TTE
-10B1E ; [.3AB7.0020.0002.10B1E] # AVESTAN LETTER PE
-10B1F ; [.3AB8.0020.0002.10B1F] # AVESTAN LETTER FE
-10B20 ; [.3AB9.0020.0002.10B20] # AVESTAN LETTER BE
-10B21 ; [.3ABA.0020.0002.10B21] # AVESTAN LETTER BHE
-10B22 ; [.3ABB.0020.0002.10B22] # AVESTAN LETTER NGE
-10B23 ; [.3ABC.0020.0002.10B23] # AVESTAN LETTER NGYE
-10B24 ; [.3ABD.0020.0002.10B24] # AVESTAN LETTER NGVE
-10B25 ; [.3ABE.0020.0002.10B25] # AVESTAN LETTER NE
-10B26 ; [.3ABF.0020.0002.10B26] # AVESTAN LETTER NYE
-10B27 ; [.3AC0.0020.0002.10B27] # AVESTAN LETTER NNE
-10B28 ; [.3AC1.0020.0002.10B28] # AVESTAN LETTER ME
-10B29 ; [.3AC2.0020.0002.10B29] # AVESTAN LETTER HME
-10B2A ; [.3AC3.0020.0002.10B2A] # AVESTAN LETTER YYE
-10B2B ; [.3AC4.0020.0002.10B2B] # AVESTAN LETTER YE
-10B2C ; [.3AC5.0020.0002.10B2C] # AVESTAN LETTER VE
-10B2D ; [.3AC6.0020.0002.10B2D] # AVESTAN LETTER RE
-10B2E ; [.3AC6.0020.0004.10B2E][.0000.0139.0004.10B2E] # AVESTAN LETTER LE
-10B2F ; [.3AC7.0020.0002.10B2F] # AVESTAN LETTER SE
-10B30 ; [.3AC8.0020.0002.10B30] # AVESTAN LETTER ZE
-10B31 ; [.3AC9.0020.0002.10B31] # AVESTAN LETTER SHE
-10B32 ; [.3ACA.0020.0002.10B32] # AVESTAN LETTER ZHE
-10B33 ; [.3ACB.0020.0002.10B33] # AVESTAN LETTER SHYE
-10B34 ; [.3ACC.0020.0002.10B34] # AVESTAN LETTER SSHE
-10B35 ; [.3ACD.0020.0002.10B35] # AVESTAN LETTER HE
-10840 ; [.3ACE.0020.0002.10840] # IMPERIAL ARAMAIC LETTER ALEPH
-10841 ; [.3ACF.0020.0002.10841] # IMPERIAL ARAMAIC LETTER BETH
-10842 ; [.3AD0.0020.0002.10842] # IMPERIAL ARAMAIC LETTER GIMEL
-10843 ; [.3AD1.0020.0002.10843] # IMPERIAL ARAMAIC LETTER DALETH
-10844 ; [.3AD2.0020.0002.10844] # IMPERIAL ARAMAIC LETTER HE
-10845 ; [.3AD3.0020.0002.10845] # IMPERIAL ARAMAIC LETTER WAW
-10846 ; [.3AD4.0020.0002.10846] # IMPERIAL ARAMAIC LETTER ZAYIN
-10847 ; [.3AD5.0020.0002.10847] # IMPERIAL ARAMAIC LETTER HETH
-10848 ; [.3AD6.0020.0002.10848] # IMPERIAL ARAMAIC LETTER TETH
-10849 ; [.3AD7.0020.0002.10849] # IMPERIAL ARAMAIC LETTER YODH
-1084A ; [.3AD8.0020.0002.1084A] # IMPERIAL ARAMAIC LETTER KAPH
-1084B ; [.3AD9.0020.0002.1084B] # IMPERIAL ARAMAIC LETTER LAMEDH
-1084C ; [.3ADA.0020.0002.1084C] # IMPERIAL ARAMAIC LETTER MEM
-1084D ; [.3ADB.0020.0002.1084D] # IMPERIAL ARAMAIC LETTER NUN
-1084E ; [.3ADC.0020.0002.1084E] # IMPERIAL ARAMAIC LETTER SAMEKH
-1084F ; [.3ADD.0020.0002.1084F] # IMPERIAL ARAMAIC LETTER AYIN
-10850 ; [.3ADE.0020.0002.10850] # IMPERIAL ARAMAIC LETTER PE
-10851 ; [.3ADF.0020.0002.10851] # IMPERIAL ARAMAIC LETTER SADHE
-10852 ; [.3AE0.0020.0002.10852] # IMPERIAL ARAMAIC LETTER QOPH
-10853 ; [.3AE1.0020.0002.10853] # IMPERIAL ARAMAIC LETTER RESH
-10854 ; [.3AE2.0020.0002.10854] # IMPERIAL ARAMAIC LETTER SHIN
-10855 ; [.3AE3.0020.0002.10855] # IMPERIAL ARAMAIC LETTER TAW
-10B40 ; [.3AE4.0020.0002.10B40] # INSCRIPTIONAL PARTHIAN LETTER ALEPH
-10B41 ; [.3AE5.0020.0002.10B41] # INSCRIPTIONAL PARTHIAN LETTER BETH
-10B42 ; [.3AE6.0020.0002.10B42] # INSCRIPTIONAL PARTHIAN LETTER GIMEL
-10B43 ; [.3AE7.0020.0002.10B43] # INSCRIPTIONAL PARTHIAN LETTER DALETH
-10B44 ; [.3AE8.0020.0002.10B44] # INSCRIPTIONAL PARTHIAN LETTER HE
-10B45 ; [.3AE9.0020.0002.10B45] # INSCRIPTIONAL PARTHIAN LETTER WAW
-10B46 ; [.3AEA.0020.0002.10B46] # INSCRIPTIONAL PARTHIAN LETTER ZAYIN
-10B47 ; [.3AEB.0020.0002.10B47] # INSCRIPTIONAL PARTHIAN LETTER HETH
-10B48 ; [.3AEC.0020.0002.10B48] # INSCRIPTIONAL PARTHIAN LETTER TETH
-10B49 ; [.3AED.0020.0002.10B49] # INSCRIPTIONAL PARTHIAN LETTER YODH
-10B4A ; [.3AEE.0020.0002.10B4A] # INSCRIPTIONAL PARTHIAN LETTER KAPH
-10B4B ; [.3AEF.0020.0002.10B4B] # INSCRIPTIONAL PARTHIAN LETTER LAMEDH
-10B4C ; [.3AF0.0020.0002.10B4C] # INSCRIPTIONAL PARTHIAN LETTER MEM
-10B4D ; [.3AF1.0020.0002.10B4D] # INSCRIPTIONAL PARTHIAN LETTER NUN
-10B4E ; [.3AF2.0020.0002.10B4E] # INSCRIPTIONAL PARTHIAN LETTER SAMEKH
-10B4F ; [.3AF3.0020.0002.10B4F] # INSCRIPTIONAL PARTHIAN LETTER AYIN
-10B50 ; [.3AF4.0020.0002.10B50] # INSCRIPTIONAL PARTHIAN LETTER PE
-10B51 ; [.3AF5.0020.0002.10B51] # INSCRIPTIONAL PARTHIAN LETTER SADHE
-10B52 ; [.3AF6.0020.0002.10B52] # INSCRIPTIONAL PARTHIAN LETTER QOPH
-10B53 ; [.3AF7.0020.0002.10B53] # INSCRIPTIONAL PARTHIAN LETTER RESH
-10B54 ; [.3AF8.0020.0002.10B54] # INSCRIPTIONAL PARTHIAN LETTER SHIN
-10B55 ; [.3AF9.0020.0002.10B55] # INSCRIPTIONAL PARTHIAN LETTER TAW
-10B60 ; [.3AFA.0020.0002.10B60] # INSCRIPTIONAL PAHLAVI LETTER ALEPH
-10B61 ; [.3AFB.0020.0002.10B61] # INSCRIPTIONAL PAHLAVI LETTER BETH
-10B62 ; [.3AFC.0020.0002.10B62] # INSCRIPTIONAL PAHLAVI LETTER GIMEL
-10B63 ; [.3AFD.0020.0002.10B63] # INSCRIPTIONAL PAHLAVI LETTER DALETH
-10B64 ; [.3AFE.0020.0002.10B64] # INSCRIPTIONAL PAHLAVI LETTER HE
-10B65 ; [.3AFF.0020.0002.10B65] # INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH
-10B66 ; [.3B00.0020.0002.10B66] # INSCRIPTIONAL PAHLAVI LETTER ZAYIN
-10B67 ; [.3B01.0020.0002.10B67] # INSCRIPTIONAL PAHLAVI LETTER HETH
-10B68 ; [.3B02.0020.0002.10B68] # INSCRIPTIONAL PAHLAVI LETTER TETH
-10B69 ; [.3B03.0020.0002.10B69] # INSCRIPTIONAL PAHLAVI LETTER YODH
-10B6A ; [.3B04.0020.0002.10B6A] # INSCRIPTIONAL PAHLAVI LETTER KAPH
-10B6B ; [.3B05.0020.0002.10B6B] # INSCRIPTIONAL PAHLAVI LETTER LAMEDH
-10B6C ; [.3B06.0020.0002.10B6C] # INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH
-10B6D ; [.3B07.0020.0002.10B6D] # INSCRIPTIONAL PAHLAVI LETTER NUN
-10B6E ; [.3B08.0020.0002.10B6E] # INSCRIPTIONAL PAHLAVI LETTER SAMEKH
-10B6F ; [.3B09.0020.0002.10B6F] # INSCRIPTIONAL PAHLAVI LETTER PE
-10B70 ; [.3B0A.0020.0002.10B70] # INSCRIPTIONAL PAHLAVI LETTER SADHE
-10B71 ; [.3B0B.0020.0002.10B71] # INSCRIPTIONAL PAHLAVI LETTER SHIN
-10B72 ; [.3B0C.0020.0002.10B72] # INSCRIPTIONAL PAHLAVI LETTER TAW
-10380 ; [.3B0D.0020.0002.10380] # UGARITIC LETTER ALPA
-10381 ; [.3B0E.0020.0002.10381] # UGARITIC LETTER BETA
-10382 ; [.3B0F.0020.0002.10382] # UGARITIC LETTER GAMLA
-10383 ; [.3B10.0020.0002.10383] # UGARITIC LETTER KHA
-10384 ; [.3B11.0020.0002.10384] # UGARITIC LETTER DELTA
-10385 ; [.3B12.0020.0002.10385] # UGARITIC LETTER HO
-10386 ; [.3B13.0020.0002.10386] # UGARITIC LETTER WO
-10387 ; [.3B14.0020.0002.10387] # UGARITIC LETTER ZETA
-10388 ; [.3B15.0020.0002.10388] # UGARITIC LETTER HOTA
-10389 ; [.3B16.0020.0002.10389] # UGARITIC LETTER TET
-1038A ; [.3B17.0020.0002.1038A] # UGARITIC LETTER YOD
-1038B ; [.3B18.0020.0002.1038B] # UGARITIC LETTER KAF
-1038C ; [.3B19.0020.0002.1038C] # UGARITIC LETTER SHIN
-1038D ; [.3B1A.0020.0002.1038D] # UGARITIC LETTER LAMDA
-1038E ; [.3B1B.0020.0002.1038E] # UGARITIC LETTER MEM
-1038F ; [.3B1C.0020.0002.1038F] # UGARITIC LETTER DHAL
-10390 ; [.3B1D.0020.0002.10390] # UGARITIC LETTER NUN
-10391 ; [.3B1E.0020.0002.10391] # UGARITIC LETTER ZU
-10392 ; [.3B1F.0020.0002.10392] # UGARITIC LETTER SAMKA
-10393 ; [.3B20.0020.0002.10393] # UGARITIC LETTER AIN
-10394 ; [.3B21.0020.0002.10394] # UGARITIC LETTER PU
-10395 ; [.3B22.0020.0002.10395] # UGARITIC LETTER SADE
-10396 ; [.3B23.0020.0002.10396] # UGARITIC LETTER QOPA
-10397 ; [.3B24.0020.0002.10397] # UGARITIC LETTER RASHA
-10398 ; [.3B25.0020.0002.10398] # UGARITIC LETTER THANNA
-10399 ; [.3B26.0020.0002.10399] # UGARITIC LETTER GHAIN
-1039A ; [.3B27.0020.0002.1039A] # UGARITIC LETTER TO
-1039B ; [.3B28.0020.0002.1039B] # UGARITIC LETTER I
-1039C ; [.3B29.0020.0002.1039C] # UGARITIC LETTER U
-1039D ; [.3B2A.0020.0002.1039D] # UGARITIC LETTER SSU
-103A0 ; [.3B2B.0020.0002.103A0] # OLD PERSIAN SIGN A
-103A1 ; [.3B2C.0020.0002.103A1] # OLD PERSIAN SIGN I
-103A2 ; [.3B2D.0020.0002.103A2] # OLD PERSIAN SIGN U
-103A3 ; [.3B2E.0020.0002.103A3] # OLD PERSIAN SIGN KA
-103A4 ; [.3B2F.0020.0002.103A4] # OLD PERSIAN SIGN KU
-103A5 ; [.3B30.0020.0002.103A5] # OLD PERSIAN SIGN GA
-103A6 ; [.3B31.0020.0002.103A6] # OLD PERSIAN SIGN GU
-103A7 ; [.3B32.0020.0002.103A7] # OLD PERSIAN SIGN XA
-103A8 ; [.3B33.0020.0002.103A8] # OLD PERSIAN SIGN CA
-103A9 ; [.3B34.0020.0002.103A9] # OLD PERSIAN SIGN JA
-103AA ; [.3B35.0020.0002.103AA] # OLD PERSIAN SIGN JI
-103AB ; [.3B36.0020.0002.103AB] # OLD PERSIAN SIGN TA
-103AC ; [.3B37.0020.0002.103AC] # OLD PERSIAN SIGN TU
-103AD ; [.3B38.0020.0002.103AD] # OLD PERSIAN SIGN DA
-103AE ; [.3B39.0020.0002.103AE] # OLD PERSIAN SIGN DI
-103AF ; [.3B3A.0020.0002.103AF] # OLD PERSIAN SIGN DU
-103B0 ; [.3B3B.0020.0002.103B0] # OLD PERSIAN SIGN THA
-103B1 ; [.3B3C.0020.0002.103B1] # OLD PERSIAN SIGN PA
-103B2 ; [.3B3D.0020.0002.103B2] # OLD PERSIAN SIGN BA
-103B3 ; [.3B3E.0020.0002.103B3] # OLD PERSIAN SIGN FA
-103B4 ; [.3B3F.0020.0002.103B4] # OLD PERSIAN SIGN NA
-103B5 ; [.3B40.0020.0002.103B5] # OLD PERSIAN SIGN NU
-103B6 ; [.3B41.0020.0002.103B6] # OLD PERSIAN SIGN MA
-103B7 ; [.3B42.0020.0002.103B7] # OLD PERSIAN SIGN MI
-103B8 ; [.3B43.0020.0002.103B8] # OLD PERSIAN SIGN MU
-103B9 ; [.3B44.0020.0002.103B9] # OLD PERSIAN SIGN YA
-103BA ; [.3B45.0020.0002.103BA] # OLD PERSIAN SIGN VA
-103BB ; [.3B46.0020.0002.103BB] # OLD PERSIAN SIGN VI
-103BC ; [.3B47.0020.0002.103BC] # OLD PERSIAN SIGN RA
-103BD ; [.3B48.0020.0002.103BD] # OLD PERSIAN SIGN RU
-103BE ; [.3B49.0020.0002.103BE] # OLD PERSIAN SIGN LA
-103BF ; [.3B4A.0020.0002.103BF] # OLD PERSIAN SIGN SA
-103C0 ; [.3B4B.0020.0002.103C0] # OLD PERSIAN SIGN ZA
-103C1 ; [.3B4C.0020.0002.103C1] # OLD PERSIAN SIGN SHA
-103C2 ; [.3B4D.0020.0002.103C2] # OLD PERSIAN SIGN SSA
-103C3 ; [.3B4E.0020.0002.103C3] # OLD PERSIAN SIGN HA
-103C8 ; [.3B4F.0020.0002.103C8] # OLD PERSIAN SIGN AURAMAZDAA
-103C9 ; [.3B50.0020.0002.103C9] # OLD PERSIAN SIGN AURAMAZDAA-2
-103CA ; [.3B51.0020.0002.103CA] # OLD PERSIAN SIGN AURAMAZDAAHA
-103CB ; [.3B52.0020.0002.103CB] # OLD PERSIAN SIGN XSHAAYATHIYA
-103CC ; [.3B53.0020.0002.103CC] # OLD PERSIAN SIGN DAHYAAUSH
-103CD ; [.3B54.0020.0002.103CD] # OLD PERSIAN SIGN DAHYAAUSH-2
-103CE ; [.3B55.0020.0002.103CE] # OLD PERSIAN SIGN BAGA
-103CF ; [.3B56.0020.0002.103CF] # OLD PERSIAN SIGN BUUMISH
-12000 ; [.3B57.0020.0002.12000] # CUNEIFORM SIGN A
-12001 ; [.3B58.0020.0002.12001] # CUNEIFORM SIGN A TIMES A
-12002 ; [.3B59.0020.0002.12002] # CUNEIFORM SIGN A TIMES BAD
-12003 ; [.3B5A.0020.0002.12003] # CUNEIFORM SIGN A TIMES GAN2 TENU
-12004 ; [.3B5B.0020.0002.12004] # CUNEIFORM SIGN A TIMES HA
-12005 ; [.3B5C.0020.0002.12005] # CUNEIFORM SIGN A TIMES IGI
-12006 ; [.3B5D.0020.0002.12006] # CUNEIFORM SIGN A TIMES LAGAR GUNU
-12007 ; [.3B5E.0020.0002.12007] # CUNEIFORM SIGN A TIMES MUSH
-12008 ; [.3B5F.0020.0002.12008] # CUNEIFORM SIGN A TIMES SAG
-12009 ; [.3B60.0020.0002.12009] # CUNEIFORM SIGN A2
-1200A ; [.3B61.0020.0002.1200A] # CUNEIFORM SIGN AB
-1200B ; [.3B62.0020.0002.1200B] # CUNEIFORM SIGN AB TIMES ASH2
-1200C ; [.3B63.0020.0002.1200C] # CUNEIFORM SIGN AB TIMES DUN3 GUNU
-1200D ; [.3B64.0020.0002.1200D] # CUNEIFORM SIGN AB TIMES GAL
-1200E ; [.3B65.0020.0002.1200E] # CUNEIFORM SIGN AB TIMES GAN2 TENU
-1200F ; [.3B66.0020.0002.1200F] # CUNEIFORM SIGN AB TIMES HA
-12010 ; [.3B67.0020.0002.12010] # CUNEIFORM SIGN AB TIMES IGI GUNU
-12011 ; [.3B68.0020.0002.12011] # CUNEIFORM SIGN AB TIMES IMIN
-12012 ; [.3B69.0020.0002.12012] # CUNEIFORM SIGN AB TIMES LAGAB
-12013 ; [.3B6A.0020.0002.12013] # CUNEIFORM SIGN AB TIMES SHESH
-12014 ; [.3B6B.0020.0002.12014] # CUNEIFORM SIGN AB TIMES U PLUS U PLUS U
-12015 ; [.3B6C.0020.0002.12015] # CUNEIFORM SIGN AB GUNU
-12016 ; [.3B6D.0020.0002.12016] # CUNEIFORM SIGN AB2
-12017 ; [.3B6E.0020.0002.12017] # CUNEIFORM SIGN AB2 TIMES BALAG
-12018 ; [.3B6F.0020.0002.12018] # CUNEIFORM SIGN AB2 TIMES GAN2 TENU
-12019 ; [.3B70.0020.0002.12019] # CUNEIFORM SIGN AB2 TIMES ME PLUS EN
-1201A ; [.3B71.0020.0002.1201A] # CUNEIFORM SIGN AB2 TIMES SHA3
-1201B ; [.3B72.0020.0002.1201B] # CUNEIFORM SIGN AB2 TIMES TAK4
-1201C ; [.3B73.0020.0002.1201C] # CUNEIFORM SIGN AD
-1201D ; [.3B74.0020.0002.1201D] # CUNEIFORM SIGN AK
-1201E ; [.3B75.0020.0002.1201E] # CUNEIFORM SIGN AK TIMES ERIN2
-1201F ; [.3B76.0020.0002.1201F] # CUNEIFORM SIGN AK TIMES SHITA PLUS GISH
-12020 ; [.3B77.0020.0002.12020] # CUNEIFORM SIGN AL
-12021 ; [.3B78.0020.0002.12021] # CUNEIFORM SIGN AL TIMES AL
-12022 ; [.3B79.0020.0002.12022] # CUNEIFORM SIGN AL TIMES DIM2
-12023 ; [.3B7A.0020.0002.12023] # CUNEIFORM SIGN AL TIMES GISH
-12024 ; [.3B7B.0020.0002.12024] # CUNEIFORM SIGN AL TIMES HA
-12025 ; [.3B7C.0020.0002.12025] # CUNEIFORM SIGN AL TIMES KAD3
-12026 ; [.3B7D.0020.0002.12026] # CUNEIFORM SIGN AL TIMES KI
-12027 ; [.3B7E.0020.0002.12027] # CUNEIFORM SIGN AL TIMES SHE
-12028 ; [.3B7F.0020.0002.12028] # CUNEIFORM SIGN AL TIMES USH
-12029 ; [.3B80.0020.0002.12029] # CUNEIFORM SIGN ALAN
-1202A ; [.3B81.0020.0002.1202A] # CUNEIFORM SIGN ALEPH
-1202B ; [.3B82.0020.0002.1202B] # CUNEIFORM SIGN AMAR
-1202C ; [.3B83.0020.0002.1202C] # CUNEIFORM SIGN AMAR TIMES SHE
-1202D ; [.3B84.0020.0002.1202D] # CUNEIFORM SIGN AN
-1202E ; [.3B85.0020.0002.1202E] # CUNEIFORM SIGN AN OVER AN
-1202F ; [.3B86.0020.0002.1202F] # CUNEIFORM SIGN AN THREE TIMES
-12030 ; [.3B87.0020.0002.12030] # CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA
-12031 ; [.3B88.0020.0002.12031] # CUNEIFORM SIGN AN PLUS NAGA SQUARED
-12032 ; [.3B89.0020.0002.12032] # CUNEIFORM SIGN ANSHE
-12033 ; [.3B8A.0020.0002.12033] # CUNEIFORM SIGN APIN
-12034 ; [.3B8B.0020.0002.12034] # CUNEIFORM SIGN ARAD
-12035 ; [.3B8C.0020.0002.12035] # CUNEIFORM SIGN ARAD TIMES KUR
-12036 ; [.3B8D.0020.0002.12036] # CUNEIFORM SIGN ARKAB
-12037 ; [.3B8E.0020.0002.12037] # CUNEIFORM SIGN ASAL2
-12038 ; [.3B8F.0020.0002.12038] # CUNEIFORM SIGN ASH
-12039 ; [.3B90.0020.0002.12039] # CUNEIFORM SIGN ASH ZIDA TENU
-1203A ; [.3B91.0020.0002.1203A] # CUNEIFORM SIGN ASH KABA TENU
-1203B ; [.3B92.0020.0002.1203B] # CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP
-1203C ; [.3B93.0020.0002.1203C] # CUNEIFORM SIGN ASH OVER ASH OVER ASH
-1203D ; [.3B94.0020.0002.1203D] # CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH
-1203E ; [.3B95.0020.0002.1203E] # CUNEIFORM SIGN ASH2
-1203F ; [.3B96.0020.0002.1203F] # CUNEIFORM SIGN ASHGAB
-12040 ; [.3B97.0020.0002.12040] # CUNEIFORM SIGN BA
-12041 ; [.3B98.0020.0002.12041] # CUNEIFORM SIGN BAD
-12042 ; [.3B99.0020.0002.12042] # CUNEIFORM SIGN BAG3
-12043 ; [.3B9A.0020.0002.12043] # CUNEIFORM SIGN BAHAR2
-12044 ; [.3B9B.0020.0002.12044] # CUNEIFORM SIGN BAL
-12045 ; [.3B9C.0020.0002.12045] # CUNEIFORM SIGN BAL OVER BAL
-12046 ; [.3B9D.0020.0002.12046] # CUNEIFORM SIGN BALAG
-12047 ; [.3B9E.0020.0002.12047] # CUNEIFORM SIGN BAR
-12048 ; [.3B9F.0020.0002.12048] # CUNEIFORM SIGN BARA2
-12049 ; [.3BA0.0020.0002.12049] # CUNEIFORM SIGN BI
-1204A ; [.3BA1.0020.0002.1204A] # CUNEIFORM SIGN BI TIMES A
-1204B ; [.3BA2.0020.0002.1204B] # CUNEIFORM SIGN BI TIMES GAR
-1204C ; [.3BA3.0020.0002.1204C] # CUNEIFORM SIGN BI TIMES IGI GUNU
-1204D ; [.3BA4.0020.0002.1204D] # CUNEIFORM SIGN BU
-1204E ; [.3BA5.0020.0002.1204E] # CUNEIFORM SIGN BU OVER BU AB
-1204F ; [.3BA6.0020.0002.1204F] # CUNEIFORM SIGN BU OVER BU UN
-12050 ; [.3BA7.0020.0002.12050] # CUNEIFORM SIGN BU CROSSING BU
-12051 ; [.3BA8.0020.0002.12051] # CUNEIFORM SIGN BULUG
-12052 ; [.3BA9.0020.0002.12052] # CUNEIFORM SIGN BULUG OVER BULUG
-12053 ; [.3BAA.0020.0002.12053] # CUNEIFORM SIGN BUR
-12054 ; [.3BAB.0020.0002.12054] # CUNEIFORM SIGN BUR2
-12055 ; [.3BAC.0020.0002.12055] # CUNEIFORM SIGN DA
-12056 ; [.3BAD.0020.0002.12056] # CUNEIFORM SIGN DAG
-12057 ; [.3BAE.0020.0002.12057] # CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH
-12058 ; [.3BAF.0020.0002.12058] # CUNEIFORM SIGN DAG KISIM5 TIMES AMAR
-12059 ; [.3BB0.0020.0002.12059] # CUNEIFORM SIGN DAG KISIM5 TIMES BALAG
-1205A ; [.3BB1.0020.0002.1205A] # CUNEIFORM SIGN DAG KISIM5 TIMES BI
-1205B ; [.3BB2.0020.0002.1205B] # CUNEIFORM SIGN DAG KISIM5 TIMES GA
-1205C ; [.3BB3.0020.0002.1205C] # CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH
-1205D ; [.3BB4.0020.0002.1205D] # CUNEIFORM SIGN DAG KISIM5 TIMES GI
-1205E ; [.3BB5.0020.0002.1205E] # CUNEIFORM SIGN DAG KISIM5 TIMES GIR2
-1205F ; [.3BB6.0020.0002.1205F] # CUNEIFORM SIGN DAG KISIM5 TIMES GUD
-12060 ; [.3BB7.0020.0002.12060] # CUNEIFORM SIGN DAG KISIM5 TIMES HA
-12061 ; [.3BB8.0020.0002.12061] # CUNEIFORM SIGN DAG KISIM5 TIMES IR
-12062 ; [.3BB9.0020.0002.12062] # CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU
-12063 ; [.3BBA.0020.0002.12063] # CUNEIFORM SIGN DAG KISIM5 TIMES KAK
-12064 ; [.3BBB.0020.0002.12064] # CUNEIFORM SIGN DAG KISIM5 TIMES LA
-12065 ; [.3BBC.0020.0002.12065] # CUNEIFORM SIGN DAG KISIM5 TIMES LU
-12066 ; [.3BBD.0020.0002.12066] # CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2
-12067 ; [.3BBE.0020.0002.12067] # CUNEIFORM SIGN DAG KISIM5 TIMES LUM
-12068 ; [.3BBF.0020.0002.12068] # CUNEIFORM SIGN DAG KISIM5 TIMES NE
-12069 ; [.3BC0.0020.0002.12069] # CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP
-1206A ; [.3BC1.0020.0002.1206A] # CUNEIFORM SIGN DAG KISIM5 TIMES SI
-1206B ; [.3BC2.0020.0002.1206B] # CUNEIFORM SIGN DAG KISIM5 TIMES TAK4
-1206C ; [.3BC3.0020.0002.1206C] # CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2
-1206D ; [.3BC4.0020.0002.1206D] # CUNEIFORM SIGN DAG KISIM5 TIMES USH
-1206E ; [.3BC5.0020.0002.1206E] # CUNEIFORM SIGN DAM
-1206F ; [.3BC6.0020.0002.1206F] # CUNEIFORM SIGN DAR
-12070 ; [.3BC7.0020.0002.12070] # CUNEIFORM SIGN DARA3
-12071 ; [.3BC8.0020.0002.12071] # CUNEIFORM SIGN DARA4
-12072 ; [.3BC9.0020.0002.12072] # CUNEIFORM SIGN DI
-12073 ; [.3BCA.0020.0002.12073] # CUNEIFORM SIGN DIB
-12074 ; [.3BCB.0020.0002.12074] # CUNEIFORM SIGN DIM
-12075 ; [.3BCC.0020.0002.12075] # CUNEIFORM SIGN DIM TIMES SHE
-12076 ; [.3BCD.0020.0002.12076] # CUNEIFORM SIGN DIM2
-12077 ; [.3BCE.0020.0002.12077] # CUNEIFORM SIGN DIN
-12078 ; [.3BCF.0020.0002.12078] # CUNEIFORM SIGN DIN KASKAL U GUNU DISH
-12079 ; [.3BD0.0020.0002.12079] # CUNEIFORM SIGN DISH
-1207A ; [.3BD1.0020.0002.1207A] # CUNEIFORM SIGN DU
-1207B ; [.3BD2.0020.0002.1207B] # CUNEIFORM SIGN DU OVER DU
-1207C ; [.3BD3.0020.0002.1207C] # CUNEIFORM SIGN DU GUNU
-1207D ; [.3BD4.0020.0002.1207D] # CUNEIFORM SIGN DU SHESHIG
-1207E ; [.3BD5.0020.0002.1207E] # CUNEIFORM SIGN DUB
-1207F ; [.3BD6.0020.0002.1207F] # CUNEIFORM SIGN DUB TIMES ESH2
-12080 ; [.3BD7.0020.0002.12080] # CUNEIFORM SIGN DUB2
-12081 ; [.3BD8.0020.0002.12081] # CUNEIFORM SIGN DUG
-12082 ; [.3BD9.0020.0002.12082] # CUNEIFORM SIGN DUGUD
-12083 ; [.3BDA.0020.0002.12083] # CUNEIFORM SIGN DUH
-12084 ; [.3BDB.0020.0002.12084] # CUNEIFORM SIGN DUN
-12085 ; [.3BDC.0020.0002.12085] # CUNEIFORM SIGN DUN3
-12086 ; [.3BDD.0020.0002.12086] # CUNEIFORM SIGN DUN3 GUNU
-12087 ; [.3BDE.0020.0002.12087] # CUNEIFORM SIGN DUN3 GUNU GUNU
-12088 ; [.3BDF.0020.0002.12088] # CUNEIFORM SIGN DUN4
-12089 ; [.3BE0.0020.0002.12089] # CUNEIFORM SIGN DUR2
-1208A ; [.3BE1.0020.0002.1208A] # CUNEIFORM SIGN E
-1208B ; [.3BE2.0020.0002.1208B] # CUNEIFORM SIGN E TIMES PAP
-1208C ; [.3BE3.0020.0002.1208C] # CUNEIFORM SIGN E OVER E NUN OVER NUN
-1208D ; [.3BE4.0020.0002.1208D] # CUNEIFORM SIGN E2
-1208E ; [.3BE5.0020.0002.1208E] # CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA
-1208F ; [.3BE6.0020.0002.1208F] # CUNEIFORM SIGN E2 TIMES GAR
-12090 ; [.3BE7.0020.0002.12090] # CUNEIFORM SIGN E2 TIMES MI
-12091 ; [.3BE8.0020.0002.12091] # CUNEIFORM SIGN E2 TIMES SAL
-12092 ; [.3BE9.0020.0002.12092] # CUNEIFORM SIGN E2 TIMES SHE
-12093 ; [.3BEA.0020.0002.12093] # CUNEIFORM SIGN E2 TIMES U
-12094 ; [.3BEB.0020.0002.12094] # CUNEIFORM SIGN EDIN
-12095 ; [.3BEC.0020.0002.12095] # CUNEIFORM SIGN EGIR
-12096 ; [.3BED.0020.0002.12096] # CUNEIFORM SIGN EL
-12097 ; [.3BEE.0020.0002.12097] # CUNEIFORM SIGN EN
-12098 ; [.3BEF.0020.0002.12098] # CUNEIFORM SIGN EN TIMES GAN2
-12099 ; [.3BF0.0020.0002.12099] # CUNEIFORM SIGN EN TIMES GAN2 TENU
-1209A ; [.3BF1.0020.0002.1209A] # CUNEIFORM SIGN EN TIMES ME
-1209B ; [.3BF2.0020.0002.1209B] # CUNEIFORM SIGN EN CROSSING EN
-1209C ; [.3BF3.0020.0002.1209C] # CUNEIFORM SIGN EN OPPOSING EN
-1209D ; [.3BF4.0020.0002.1209D] # CUNEIFORM SIGN EN SQUARED
-1209E ; [.3BF5.0020.0002.1209E] # CUNEIFORM SIGN EREN
-1209F ; [.3BF6.0020.0002.1209F] # CUNEIFORM SIGN ERIN2
-120A0 ; [.3BF7.0020.0002.120A0] # CUNEIFORM SIGN ESH2
-120A1 ; [.3BF8.0020.0002.120A1] # CUNEIFORM SIGN EZEN
-120A2 ; [.3BF9.0020.0002.120A2] # CUNEIFORM SIGN EZEN TIMES A
-120A3 ; [.3BFA.0020.0002.120A3] # CUNEIFORM SIGN EZEN TIMES A PLUS LAL
-120A4 ; [.3BFB.0020.0002.120A4] # CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL
-120A5 ; [.3BFC.0020.0002.120A5] # CUNEIFORM SIGN EZEN TIMES AN
-120A6 ; [.3BFD.0020.0002.120A6] # CUNEIFORM SIGN EZEN TIMES BAD
-120A7 ; [.3BFE.0020.0002.120A7] # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU
-120A8 ; [.3BFF.0020.0002.120A8] # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU
-120A9 ; [.3C00.0020.0002.120A9] # CUNEIFORM SIGN EZEN TIMES HA
-120AA ; [.3C01.0020.0002.120AA] # CUNEIFORM SIGN EZEN TIMES HA GUNU
-120AB ; [.3C02.0020.0002.120AB] # CUNEIFORM SIGN EZEN TIMES IGI GUNU
-120AC ; [.3C03.0020.0002.120AC] # CUNEIFORM SIGN EZEN TIMES KASKAL
-120AD ; [.3C04.0020.0002.120AD] # CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED
-120AE ; [.3C05.0020.0002.120AE] # CUNEIFORM SIGN EZEN TIMES KU3
-120AF ; [.3C06.0020.0002.120AF] # CUNEIFORM SIGN EZEN TIMES LA
-120B0 ; [.3C07.0020.0002.120B0] # CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL
-120B1 ; [.3C08.0020.0002.120B1] # CUNEIFORM SIGN EZEN TIMES LI
-120B2 ; [.3C09.0020.0002.120B2] # CUNEIFORM SIGN EZEN TIMES LU
-120B3 ; [.3C0A.0020.0002.120B3] # CUNEIFORM SIGN EZEN TIMES U2
-120B4 ; [.3C0B.0020.0002.120B4] # CUNEIFORM SIGN EZEN TIMES UD
-120B5 ; [.3C0C.0020.0002.120B5] # CUNEIFORM SIGN GA
-120B6 ; [.3C0D.0020.0002.120B6] # CUNEIFORM SIGN GA GUNU
-120B7 ; [.3C0E.0020.0002.120B7] # CUNEIFORM SIGN GA2
-120B8 ; [.3C0F.0020.0002.120B8] # CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA
-120B9 ; [.3C10.0020.0002.120B9] # CUNEIFORM SIGN GA2 TIMES A PLUS HA
-120BA ; [.3C11.0020.0002.120BA] # CUNEIFORM SIGN GA2 TIMES A PLUS IGI
-120BB ; [.3C12.0020.0002.120BB] # CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB
-120BC ; [.3C13.0020.0002.120BC] # CUNEIFORM SIGN GA2 TIMES AN
-120BD ; [.3C14.0020.0002.120BD] # CUNEIFORM SIGN GA2 TIMES ASH
-120BE ; [.3C15.0020.0002.120BE] # CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL
-120BF ; [.3C16.0020.0002.120BF] # CUNEIFORM SIGN GA2 TIMES BAD
-120C0 ; [.3C17.0020.0002.120C0] # CUNEIFORM SIGN GA2 TIMES BAR PLUS RA
-120C1 ; [.3C18.0020.0002.120C1] # CUNEIFORM SIGN GA2 TIMES BUR
-120C2 ; [.3C19.0020.0002.120C2] # CUNEIFORM SIGN GA2 TIMES BUR PLUS RA
-120C3 ; [.3C1A.0020.0002.120C3] # CUNEIFORM SIGN GA2 TIMES DA
-120C4 ; [.3C1B.0020.0002.120C4] # CUNEIFORM SIGN GA2 TIMES DI
-120C5 ; [.3C1C.0020.0002.120C5] # CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE
-120C6 ; [.3C1D.0020.0002.120C6] # CUNEIFORM SIGN GA2 TIMES DUB
-120C7 ; [.3C1E.0020.0002.120C7] # CUNEIFORM SIGN GA2 TIMES EL
-120C8 ; [.3C1F.0020.0002.120C8] # CUNEIFORM SIGN GA2 TIMES EL PLUS LA
-120C9 ; [.3C20.0020.0002.120C9] # CUNEIFORM SIGN GA2 TIMES EN
-120CA ; [.3C21.0020.0002.120CA] # CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU
-120CB ; [.3C22.0020.0002.120CB] # CUNEIFORM SIGN GA2 TIMES GAN2 TENU
-120CC ; [.3C23.0020.0002.120CC] # CUNEIFORM SIGN GA2 TIMES GAR
-120CD ; [.3C24.0020.0002.120CD] # CUNEIFORM SIGN GA2 TIMES GI
-120CE ; [.3C25.0020.0002.120CE] # CUNEIFORM SIGN GA2 TIMES GI4
-120CF ; [.3C26.0020.0002.120CF] # CUNEIFORM SIGN GA2 TIMES GI4 PLUS A
-120D0 ; [.3C27.0020.0002.120D0] # CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU
-120D1 ; [.3C28.0020.0002.120D1] # CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2
-120D2 ; [.3C29.0020.0002.120D2] # CUNEIFORM SIGN GA2 TIMES HAL
-120D3 ; [.3C2A.0020.0002.120D3] # CUNEIFORM SIGN GA2 TIMES HAL PLUS LA
-120D4 ; [.3C2B.0020.0002.120D4] # CUNEIFORM SIGN GA2 TIMES HI PLUS LI
-120D5 ; [.3C2C.0020.0002.120D5] # CUNEIFORM SIGN GA2 TIMES HUB2
-120D6 ; [.3C2D.0020.0002.120D6] # CUNEIFORM SIGN GA2 TIMES IGI GUNU
-120D7 ; [.3C2E.0020.0002.120D7] # CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH
-120D8 ; [.3C2F.0020.0002.120D8] # CUNEIFORM SIGN GA2 TIMES KAK
-120D9 ; [.3C30.0020.0002.120D9] # CUNEIFORM SIGN GA2 TIMES KASKAL
-120DA ; [.3C31.0020.0002.120DA] # CUNEIFORM SIGN GA2 TIMES KID
-120DB ; [.3C32.0020.0002.120DB] # CUNEIFORM SIGN GA2 TIMES KID PLUS LAL
-120DC ; [.3C33.0020.0002.120DC] # CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN
-120DD ; [.3C34.0020.0002.120DD] # CUNEIFORM SIGN GA2 TIMES LA
-120DE ; [.3C35.0020.0002.120DE] # CUNEIFORM SIGN GA2 TIMES ME PLUS EN
-120DF ; [.3C36.0020.0002.120DF] # CUNEIFORM SIGN GA2 TIMES MI
-120E0 ; [.3C37.0020.0002.120E0] # CUNEIFORM SIGN GA2 TIMES NUN
-120E1 ; [.3C38.0020.0002.120E1] # CUNEIFORM SIGN GA2 TIMES NUN OVER NUN
-120E2 ; [.3C39.0020.0002.120E2] # CUNEIFORM SIGN GA2 TIMES PA
-120E3 ; [.3C3A.0020.0002.120E3] # CUNEIFORM SIGN GA2 TIMES SAL
-120E4 ; [.3C3B.0020.0002.120E4] # CUNEIFORM SIGN GA2 TIMES SAR
-120E5 ; [.3C3C.0020.0002.120E5] # CUNEIFORM SIGN GA2 TIMES SHE
-120E6 ; [.3C3D.0020.0002.120E6] # CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR
-120E7 ; [.3C3E.0020.0002.120E7] # CUNEIFORM SIGN GA2 TIMES SHID
-120E8 ; [.3C3F.0020.0002.120E8] # CUNEIFORM SIGN GA2 TIMES SUM
-120E9 ; [.3C40.0020.0002.120E9] # CUNEIFORM SIGN GA2 TIMES TAK4
-120EA ; [.3C41.0020.0002.120EA] # CUNEIFORM SIGN GA2 TIMES U
-120EB ; [.3C42.0020.0002.120EB] # CUNEIFORM SIGN GA2 TIMES UD
-120EC ; [.3C43.0020.0002.120EC] # CUNEIFORM SIGN GA2 TIMES UD PLUS DU
-120ED ; [.3C44.0020.0002.120ED] # CUNEIFORM SIGN GA2 OVER GA2
-120EE ; [.3C45.0020.0002.120EE] # CUNEIFORM SIGN GABA
-120EF ; [.3C46.0020.0002.120EF] # CUNEIFORM SIGN GABA CROSSING GABA
-120F0 ; [.3C47.0020.0002.120F0] # CUNEIFORM SIGN GAD
-120F1 ; [.3C48.0020.0002.120F1] # CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR
-120F2 ; [.3C49.0020.0002.120F2] # CUNEIFORM SIGN GAL
-120F3 ; [.3C4A.0020.0002.120F3] # CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR
-120F4 ; [.3C4B.0020.0002.120F4] # CUNEIFORM SIGN GALAM
-120F5 ; [.3C4C.0020.0002.120F5] # CUNEIFORM SIGN GAM
-120F6 ; [.3C4D.0020.0002.120F6] # CUNEIFORM SIGN GAN
-120F7 ; [.3C4E.0020.0002.120F7] # CUNEIFORM SIGN GAN2
-120F8 ; [.3C4F.0020.0002.120F8] # CUNEIFORM SIGN GAN2 TENU
-120F9 ; [.3C50.0020.0002.120F9] # CUNEIFORM SIGN GAN2 OVER GAN2
-120FA ; [.3C51.0020.0002.120FA] # CUNEIFORM SIGN GAN2 CROSSING GAN2
-120FB ; [.3C52.0020.0002.120FB] # CUNEIFORM SIGN GAR
-120FC ; [.3C53.0020.0002.120FC] # CUNEIFORM SIGN GAR3
-120FD ; [.3C54.0020.0002.120FD] # CUNEIFORM SIGN GASHAN
-120FE ; [.3C55.0020.0002.120FE] # CUNEIFORM SIGN GESHTIN
-120FF ; [.3C56.0020.0002.120FF] # CUNEIFORM SIGN GESHTIN TIMES KUR
-12100 ; [.3C57.0020.0002.12100] # CUNEIFORM SIGN GI
-12101 ; [.3C58.0020.0002.12101] # CUNEIFORM SIGN GI TIMES E
-12102 ; [.3C59.0020.0002.12102] # CUNEIFORM SIGN GI TIMES U
-12103 ; [.3C5A.0020.0002.12103] # CUNEIFORM SIGN GI CROSSING GI
-12104 ; [.3C5B.0020.0002.12104] # CUNEIFORM SIGN GI4
-12105 ; [.3C5C.0020.0002.12105] # CUNEIFORM SIGN GI4 OVER GI4
-12106 ; [.3C5D.0020.0002.12106] # CUNEIFORM SIGN GI4 CROSSING GI4
-12107 ; [.3C5E.0020.0002.12107] # CUNEIFORM SIGN GIDIM
-12108 ; [.3C5F.0020.0002.12108] # CUNEIFORM SIGN GIR2
-12109 ; [.3C60.0020.0002.12109] # CUNEIFORM SIGN GIR2 GUNU
-1210A ; [.3C61.0020.0002.1210A] # CUNEIFORM SIGN GIR3
-1210B ; [.3C62.0020.0002.1210B] # CUNEIFORM SIGN GIR3 TIMES A PLUS IGI
-1210C ; [.3C63.0020.0002.1210C] # CUNEIFORM SIGN GIR3 TIMES GAN2 TENU
-1210D ; [.3C64.0020.0002.1210D] # CUNEIFORM SIGN GIR3 TIMES IGI
-1210E ; [.3C65.0020.0002.1210E] # CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI
-1210F ; [.3C66.0020.0002.1210F] # CUNEIFORM SIGN GIR3 TIMES PA
-12110 ; [.3C67.0020.0002.12110] # CUNEIFORM SIGN GISAL
-12111 ; [.3C68.0020.0002.12111] # CUNEIFORM SIGN GISH
-12112 ; [.3C69.0020.0002.12112] # CUNEIFORM SIGN GISH CROSSING GISH
-12113 ; [.3C6A.0020.0002.12113] # CUNEIFORM SIGN GISH TIMES BAD
-12114 ; [.3C6B.0020.0002.12114] # CUNEIFORM SIGN GISH TIMES TAK4
-12115 ; [.3C6C.0020.0002.12115] # CUNEIFORM SIGN GISH TENU
-12116 ; [.3C6D.0020.0002.12116] # CUNEIFORM SIGN GU
-12117 ; [.3C6E.0020.0002.12117] # CUNEIFORM SIGN GU CROSSING GU
-12118 ; [.3C6F.0020.0002.12118] # CUNEIFORM SIGN GU2
-12119 ; [.3C70.0020.0002.12119] # CUNEIFORM SIGN GU2 TIMES KAK
-1211A ; [.3C71.0020.0002.1211A] # CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU
-1211B ; [.3C72.0020.0002.1211B] # CUNEIFORM SIGN GU2 TIMES NUN
-1211C ; [.3C73.0020.0002.1211C] # CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2
-1211D ; [.3C74.0020.0002.1211D] # CUNEIFORM SIGN GU2 GUNU
-1211E ; [.3C75.0020.0002.1211E] # CUNEIFORM SIGN GUD
-1211F ; [.3C76.0020.0002.1211F] # CUNEIFORM SIGN GUD TIMES A PLUS KUR
-12120 ; [.3C77.0020.0002.12120] # CUNEIFORM SIGN GUD TIMES KUR
-12121 ; [.3C78.0020.0002.12121] # CUNEIFORM SIGN GUD OVER GUD LUGAL
-12122 ; [.3C79.0020.0002.12122] # CUNEIFORM SIGN GUL
-12123 ; [.3C7A.0020.0002.12123] # CUNEIFORM SIGN GUM
-12124 ; [.3C7B.0020.0002.12124] # CUNEIFORM SIGN GUM TIMES SHE
-12125 ; [.3C7C.0020.0002.12125] # CUNEIFORM SIGN GUR
-12126 ; [.3C7D.0020.0002.12126] # CUNEIFORM SIGN GUR7
-12127 ; [.3C7E.0020.0002.12127] # CUNEIFORM SIGN GURUN
-12128 ; [.3C7F.0020.0002.12128] # CUNEIFORM SIGN GURUSH
-12129 ; [.3C80.0020.0002.12129] # CUNEIFORM SIGN HA
-1212A ; [.3C81.0020.0002.1212A] # CUNEIFORM SIGN HA TENU
-1212B ; [.3C82.0020.0002.1212B] # CUNEIFORM SIGN HA GUNU
-1212C ; [.3C83.0020.0002.1212C] # CUNEIFORM SIGN HAL
-1212D ; [.3C84.0020.0002.1212D] # CUNEIFORM SIGN HI
-1212E ; [.3C85.0020.0002.1212E] # CUNEIFORM SIGN HI TIMES ASH
-1212F ; [.3C86.0020.0002.1212F] # CUNEIFORM SIGN HI TIMES ASH2
-12130 ; [.3C87.0020.0002.12130] # CUNEIFORM SIGN HI TIMES BAD
-12131 ; [.3C88.0020.0002.12131] # CUNEIFORM SIGN HI TIMES DISH
-12132 ; [.3C89.0020.0002.12132] # CUNEIFORM SIGN HI TIMES GAD
-12133 ; [.3C8A.0020.0002.12133] # CUNEIFORM SIGN HI TIMES KIN
-12134 ; [.3C8B.0020.0002.12134] # CUNEIFORM SIGN HI TIMES NUN
-12135 ; [.3C8C.0020.0002.12135] # CUNEIFORM SIGN HI TIMES SHE
-12136 ; [.3C8D.0020.0002.12136] # CUNEIFORM SIGN HI TIMES U
-12137 ; [.3C8E.0020.0002.12137] # CUNEIFORM SIGN HU
-12138 ; [.3C8F.0020.0002.12138] # CUNEIFORM SIGN HUB2
-12139 ; [.3C90.0020.0002.12139] # CUNEIFORM SIGN HUB2 TIMES AN
-1213A ; [.3C91.0020.0002.1213A] # CUNEIFORM SIGN HUB2 TIMES HAL
-1213B ; [.3C92.0020.0002.1213B] # CUNEIFORM SIGN HUB2 TIMES KASKAL
-1213C ; [.3C93.0020.0002.1213C] # CUNEIFORM SIGN HUB2 TIMES LISH
-1213D ; [.3C94.0020.0002.1213D] # CUNEIFORM SIGN HUB2 TIMES UD
-1213E ; [.3C95.0020.0002.1213E] # CUNEIFORM SIGN HUL2
-1213F ; [.3C96.0020.0002.1213F] # CUNEIFORM SIGN I
-12140 ; [.3C97.0020.0002.12140] # CUNEIFORM SIGN I A
-12141 ; [.3C98.0020.0002.12141] # CUNEIFORM SIGN IB
-12142 ; [.3C99.0020.0002.12142] # CUNEIFORM SIGN IDIM
-12143 ; [.3C9A.0020.0002.12143] # CUNEIFORM SIGN IDIM OVER IDIM BUR
-12144 ; [.3C9B.0020.0002.12144] # CUNEIFORM SIGN IDIM OVER IDIM SQUARED
-12145 ; [.3C9C.0020.0002.12145] # CUNEIFORM SIGN IG
-12146 ; [.3C9D.0020.0002.12146] # CUNEIFORM SIGN IGI
-12147 ; [.3C9E.0020.0002.12147] # CUNEIFORM SIGN IGI DIB
-12148 ; [.3C9F.0020.0002.12148] # CUNEIFORM SIGN IGI RI
-12149 ; [.3CA0.0020.0002.12149] # CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD
-1214A ; [.3CA1.0020.0002.1214A] # CUNEIFORM SIGN IGI GUNU
-1214B ; [.3CA2.0020.0002.1214B] # CUNEIFORM SIGN IL
-1214C ; [.3CA3.0020.0002.1214C] # CUNEIFORM SIGN IL TIMES GAN2 TENU
-1214D ; [.3CA4.0020.0002.1214D] # CUNEIFORM SIGN IL2
-1214E ; [.3CA5.0020.0002.1214E] # CUNEIFORM SIGN IM
-1214F ; [.3CA6.0020.0002.1214F] # CUNEIFORM SIGN IM TIMES TAK4
-12150 ; [.3CA7.0020.0002.12150] # CUNEIFORM SIGN IM CROSSING IM
-12151 ; [.3CA8.0020.0002.12151] # CUNEIFORM SIGN IM OPPOSING IM
-12152 ; [.3CA9.0020.0002.12152] # CUNEIFORM SIGN IM SQUARED
-12153 ; [.3CAA.0020.0002.12153] # CUNEIFORM SIGN IMIN
-12154 ; [.3CAB.0020.0002.12154] # CUNEIFORM SIGN IN
-12155 ; [.3CAC.0020.0002.12155] # CUNEIFORM SIGN IR
-12156 ; [.3CAD.0020.0002.12156] # CUNEIFORM SIGN ISH
-12157 ; [.3CAE.0020.0002.12157] # CUNEIFORM SIGN KA
-12158 ; [.3CAF.0020.0002.12158] # CUNEIFORM SIGN KA TIMES A
-12159 ; [.3CB0.0020.0002.12159] # CUNEIFORM SIGN KA TIMES AD
-1215A ; [.3CB1.0020.0002.1215A] # CUNEIFORM SIGN KA TIMES AD PLUS KU3
-1215B ; [.3CB2.0020.0002.1215B] # CUNEIFORM SIGN KA TIMES ASH2
-1215C ; [.3CB3.0020.0002.1215C] # CUNEIFORM SIGN KA TIMES BAD
-1215D ; [.3CB4.0020.0002.1215D] # CUNEIFORM SIGN KA TIMES BALAG
-1215E ; [.3CB5.0020.0002.1215E] # CUNEIFORM SIGN KA TIMES BAR
-1215F ; [.3CB6.0020.0002.1215F] # CUNEIFORM SIGN KA TIMES BI
-12160 ; [.3CB7.0020.0002.12160] # CUNEIFORM SIGN KA TIMES ERIN2
-12161 ; [.3CB8.0020.0002.12161] # CUNEIFORM SIGN KA TIMES ESH2
-12162 ; [.3CB9.0020.0002.12162] # CUNEIFORM SIGN KA TIMES GA
-12163 ; [.3CBA.0020.0002.12163] # CUNEIFORM SIGN KA TIMES GAL
-12164 ; [.3CBB.0020.0002.12164] # CUNEIFORM SIGN KA TIMES GAN2 TENU
-12165 ; [.3CBC.0020.0002.12165] # CUNEIFORM SIGN KA TIMES GAR
-12166 ; [.3CBD.0020.0002.12166] # CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A
-12167 ; [.3CBE.0020.0002.12167] # CUNEIFORM SIGN KA TIMES GI
-12168 ; [.3CBF.0020.0002.12168] # CUNEIFORM SIGN KA TIMES GIR2
-12169 ; [.3CC0.0020.0002.12169] # CUNEIFORM SIGN KA TIMES GISH PLUS SAR
-1216A ; [.3CC1.0020.0002.1216A] # CUNEIFORM SIGN KA TIMES GISH CROSSING GISH
-1216B ; [.3CC2.0020.0002.1216B] # CUNEIFORM SIGN KA TIMES GU
-1216C ; [.3CC3.0020.0002.1216C] # CUNEIFORM SIGN KA TIMES GUR7
-1216D ; [.3CC4.0020.0002.1216D] # CUNEIFORM SIGN KA TIMES IGI
-1216E ; [.3CC5.0020.0002.1216E] # CUNEIFORM SIGN KA TIMES IM
-1216F ; [.3CC6.0020.0002.1216F] # CUNEIFORM SIGN KA TIMES KAK
-12170 ; [.3CC7.0020.0002.12170] # CUNEIFORM SIGN KA TIMES KI
-12171 ; [.3CC8.0020.0002.12171] # CUNEIFORM SIGN KA TIMES KID
-12172 ; [.3CC9.0020.0002.12172] # CUNEIFORM SIGN KA TIMES LI
-12173 ; [.3CCA.0020.0002.12173] # CUNEIFORM SIGN KA TIMES LU
-12174 ; [.3CCB.0020.0002.12174] # CUNEIFORM SIGN KA TIMES ME
-12175 ; [.3CCC.0020.0002.12175] # CUNEIFORM SIGN KA TIMES ME PLUS DU
-12176 ; [.3CCD.0020.0002.12176] # CUNEIFORM SIGN KA TIMES ME PLUS GI
-12177 ; [.3CCE.0020.0002.12177] # CUNEIFORM SIGN KA TIMES ME PLUS TE
-12178 ; [.3CCF.0020.0002.12178] # CUNEIFORM SIGN KA TIMES MI
-12179 ; [.3CD0.0020.0002.12179] # CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ
-1217A ; [.3CD1.0020.0002.1217A] # CUNEIFORM SIGN KA TIMES NE
-1217B ; [.3CD2.0020.0002.1217B] # CUNEIFORM SIGN KA TIMES NUN
-1217C ; [.3CD3.0020.0002.1217C] # CUNEIFORM SIGN KA TIMES PI
-1217D ; [.3CD4.0020.0002.1217D] # CUNEIFORM SIGN KA TIMES RU
-1217E ; [.3CD5.0020.0002.1217E] # CUNEIFORM SIGN KA TIMES SA
-1217F ; [.3CD6.0020.0002.1217F] # CUNEIFORM SIGN KA TIMES SAR
-12180 ; [.3CD7.0020.0002.12180] # CUNEIFORM SIGN KA TIMES SHA
-12181 ; [.3CD8.0020.0002.12181] # CUNEIFORM SIGN KA TIMES SHE
-12182 ; [.3CD9.0020.0002.12182] # CUNEIFORM SIGN KA TIMES SHID
-12183 ; [.3CDA.0020.0002.12183] # CUNEIFORM SIGN KA TIMES SHU
-12184 ; [.3CDB.0020.0002.12184] # CUNEIFORM SIGN KA TIMES SIG
-12185 ; [.3CDC.0020.0002.12185] # CUNEIFORM SIGN KA TIMES SUHUR
-12186 ; [.3CDD.0020.0002.12186] # CUNEIFORM SIGN KA TIMES TAR
-12187 ; [.3CDE.0020.0002.12187] # CUNEIFORM SIGN KA TIMES U
-12188 ; [.3CDF.0020.0002.12188] # CUNEIFORM SIGN KA TIMES U2
-12189 ; [.3CE0.0020.0002.12189] # CUNEIFORM SIGN KA TIMES UD
-1218A ; [.3CE1.0020.0002.1218A] # CUNEIFORM SIGN KA TIMES UMUM TIMES PA
-1218B ; [.3CE2.0020.0002.1218B] # CUNEIFORM SIGN KA TIMES USH
-1218C ; [.3CE3.0020.0002.1218C] # CUNEIFORM SIGN KA TIMES ZI
-1218D ; [.3CE4.0020.0002.1218D] # CUNEIFORM SIGN KA2
-1218E ; [.3CE5.0020.0002.1218E] # CUNEIFORM SIGN KA2 CROSSING KA2
-1218F ; [.3CE6.0020.0002.1218F] # CUNEIFORM SIGN KAB
-12190 ; [.3CE7.0020.0002.12190] # CUNEIFORM SIGN KAD2
-12191 ; [.3CE8.0020.0002.12191] # CUNEIFORM SIGN KAD3
-12192 ; [.3CE9.0020.0002.12192] # CUNEIFORM SIGN KAD4
-12193 ; [.3CEA.0020.0002.12193] # CUNEIFORM SIGN KAD5
-12194 ; [.3CEB.0020.0002.12194] # CUNEIFORM SIGN KAD5 OVER KAD5
-12195 ; [.3CEC.0020.0002.12195] # CUNEIFORM SIGN KAK
-12196 ; [.3CED.0020.0002.12196] # CUNEIFORM SIGN KAK TIMES IGI GUNU
-12197 ; [.3CEE.0020.0002.12197] # CUNEIFORM SIGN KAL
-12198 ; [.3CEF.0020.0002.12198] # CUNEIFORM SIGN KAL TIMES BAD
-12199 ; [.3CF0.0020.0002.12199] # CUNEIFORM SIGN KAL CROSSING KAL
-1219A ; [.3CF1.0020.0002.1219A] # CUNEIFORM SIGN KAM2
-1219B ; [.3CF2.0020.0002.1219B] # CUNEIFORM SIGN KAM4
-1219C ; [.3CF3.0020.0002.1219C] # CUNEIFORM SIGN KASKAL
-1219D ; [.3CF4.0020.0002.1219D] # CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U
-1219E ; [.3CF5.0020.0002.1219E] # CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U
-1219F ; [.3CF6.0020.0002.1219F] # CUNEIFORM SIGN KESH2
-121A0 ; [.3CF7.0020.0002.121A0] # CUNEIFORM SIGN KI
-121A1 ; [.3CF8.0020.0002.121A1] # CUNEIFORM SIGN KI TIMES BAD
-121A2 ; [.3CF9.0020.0002.121A2] # CUNEIFORM SIGN KI TIMES U
-121A3 ; [.3CFA.0020.0002.121A3] # CUNEIFORM SIGN KI TIMES UD
-121A4 ; [.3CFB.0020.0002.121A4] # CUNEIFORM SIGN KID
-121A5 ; [.3CFC.0020.0002.121A5] # CUNEIFORM SIGN KIN
-121A6 ; [.3CFD.0020.0002.121A6] # CUNEIFORM SIGN KISAL
-121A7 ; [.3CFE.0020.0002.121A7] # CUNEIFORM SIGN KISH
-121A8 ; [.3CFF.0020.0002.121A8] # CUNEIFORM SIGN KISIM5
-121A9 ; [.3D00.0020.0002.121A9] # CUNEIFORM SIGN KISIM5 OVER KISIM5
-121AA ; [.3D01.0020.0002.121AA] # CUNEIFORM SIGN KU
-121AB ; [.3D02.0020.0002.121AB] # CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2
-121AC ; [.3D03.0020.0002.121AC] # CUNEIFORM SIGN KU3
-121AD ; [.3D04.0020.0002.121AD] # CUNEIFORM SIGN KU4
-121AE ; [.3D05.0020.0002.121AE] # CUNEIFORM SIGN KU4 VARIANT FORM
-121AF ; [.3D06.0020.0002.121AF] # CUNEIFORM SIGN KU7
-121B0 ; [.3D07.0020.0002.121B0] # CUNEIFORM SIGN KUL
-121B1 ; [.3D08.0020.0002.121B1] # CUNEIFORM SIGN KUL GUNU
-121B2 ; [.3D09.0020.0002.121B2] # CUNEIFORM SIGN KUN
-121B3 ; [.3D0A.0020.0002.121B3] # CUNEIFORM SIGN KUR
-121B4 ; [.3D0B.0020.0002.121B4] # CUNEIFORM SIGN KUR OPPOSING KUR
-121B5 ; [.3D0C.0020.0002.121B5] # CUNEIFORM SIGN KUSHU2
-121B6 ; [.3D0D.0020.0002.121B6] # CUNEIFORM SIGN KWU318
-121B7 ; [.3D0E.0020.0002.121B7] # CUNEIFORM SIGN LA
-121B8 ; [.3D0F.0020.0002.121B8] # CUNEIFORM SIGN LAGAB
-121B9 ; [.3D10.0020.0002.121B9] # CUNEIFORM SIGN LAGAB TIMES A
-121BA ; [.3D11.0020.0002.121BA] # CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA
-121BB ; [.3D12.0020.0002.121BB] # CUNEIFORM SIGN LAGAB TIMES A PLUS GAR
-121BC ; [.3D13.0020.0002.121BC] # CUNEIFORM SIGN LAGAB TIMES A PLUS LAL
-121BD ; [.3D14.0020.0002.121BD] # CUNEIFORM SIGN LAGAB TIMES AL
-121BE ; [.3D15.0020.0002.121BE] # CUNEIFORM SIGN LAGAB TIMES AN
-121BF ; [.3D16.0020.0002.121BF] # CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU
-121C0 ; [.3D17.0020.0002.121C0] # CUNEIFORM SIGN LAGAB TIMES BAD
-121C1 ; [.3D18.0020.0002.121C1] # CUNEIFORM SIGN LAGAB TIMES BI
-121C2 ; [.3D19.0020.0002.121C2] # CUNEIFORM SIGN LAGAB TIMES DAR
-121C3 ; [.3D1A.0020.0002.121C3] # CUNEIFORM SIGN LAGAB TIMES EN
-121C4 ; [.3D1B.0020.0002.121C4] # CUNEIFORM SIGN LAGAB TIMES GA
-121C5 ; [.3D1C.0020.0002.121C5] # CUNEIFORM SIGN LAGAB TIMES GAR
-121C6 ; [.3D1D.0020.0002.121C6] # CUNEIFORM SIGN LAGAB TIMES GUD
-121C7 ; [.3D1E.0020.0002.121C7] # CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD
-121C8 ; [.3D1F.0020.0002.121C8] # CUNEIFORM SIGN LAGAB TIMES HA
-121C9 ; [.3D20.0020.0002.121C9] # CUNEIFORM SIGN LAGAB TIMES HAL
-121CA ; [.3D21.0020.0002.121CA] # CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN
-121CB ; [.3D22.0020.0002.121CB] # CUNEIFORM SIGN LAGAB TIMES IGI GUNU
-121CC ; [.3D23.0020.0002.121CC] # CUNEIFORM SIGN LAGAB TIMES IM
-121CD ; [.3D24.0020.0002.121CD] # CUNEIFORM SIGN LAGAB TIMES IM PLUS HA
-121CE ; [.3D25.0020.0002.121CE] # CUNEIFORM SIGN LAGAB TIMES IM PLUS LU
-121CF ; [.3D26.0020.0002.121CF] # CUNEIFORM SIGN LAGAB TIMES KI
-121D0 ; [.3D27.0020.0002.121D0] # CUNEIFORM SIGN LAGAB TIMES KIN
-121D1 ; [.3D28.0020.0002.121D1] # CUNEIFORM SIGN LAGAB TIMES KU3
-121D2 ; [.3D29.0020.0002.121D2] # CUNEIFORM SIGN LAGAB TIMES KUL
-121D3 ; [.3D2A.0020.0002.121D3] # CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A
-121D4 ; [.3D2B.0020.0002.121D4] # CUNEIFORM SIGN LAGAB TIMES LAGAB
-121D5 ; [.3D2C.0020.0002.121D5] # CUNEIFORM SIGN LAGAB TIMES LISH
-121D6 ; [.3D2D.0020.0002.121D6] # CUNEIFORM SIGN LAGAB TIMES LU
-121D7 ; [.3D2E.0020.0002.121D7] # CUNEIFORM SIGN LAGAB TIMES LUL
-121D8 ; [.3D2F.0020.0002.121D8] # CUNEIFORM SIGN LAGAB TIMES ME
-121D9 ; [.3D30.0020.0002.121D9] # CUNEIFORM SIGN LAGAB TIMES ME PLUS EN
-121DA ; [.3D31.0020.0002.121DA] # CUNEIFORM SIGN LAGAB TIMES MUSH
-121DB ; [.3D32.0020.0002.121DB] # CUNEIFORM SIGN LAGAB TIMES NE
-121DC ; [.3D33.0020.0002.121DC] # CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM
-121DD ; [.3D34.0020.0002.121DD] # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2
-121DE ; [.3D35.0020.0002.121DE] # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU
-121DF ; [.3D36.0020.0002.121DF] # CUNEIFORM SIGN LAGAB TIMES SHU2
-121E0 ; [.3D37.0020.0002.121E0] # CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2
-121E1 ; [.3D38.0020.0002.121E1] # CUNEIFORM SIGN LAGAB TIMES SUM
-121E2 ; [.3D39.0020.0002.121E2] # CUNEIFORM SIGN LAGAB TIMES TAG
-121E3 ; [.3D3A.0020.0002.121E3] # CUNEIFORM SIGN LAGAB TIMES TAK4
-121E4 ; [.3D3B.0020.0002.121E4] # CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA
-121E5 ; [.3D3C.0020.0002.121E5] # CUNEIFORM SIGN LAGAB TIMES U
-121E6 ; [.3D3D.0020.0002.121E6] # CUNEIFORM SIGN LAGAB TIMES U PLUS A
-121E7 ; [.3D3E.0020.0002.121E7] # CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U
-121E8 ; [.3D3F.0020.0002.121E8] # CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH
-121E9 ; [.3D40.0020.0002.121E9] # CUNEIFORM SIGN LAGAB TIMES UD
-121EA ; [.3D41.0020.0002.121EA] # CUNEIFORM SIGN LAGAB TIMES USH
-121EB ; [.3D42.0020.0002.121EB] # CUNEIFORM SIGN LAGAB SQUARED
-121EC ; [.3D43.0020.0002.121EC] # CUNEIFORM SIGN LAGAR
-121ED ; [.3D44.0020.0002.121ED] # CUNEIFORM SIGN LAGAR TIMES SHE
-121EE ; [.3D45.0020.0002.121EE] # CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM
-121EF ; [.3D46.0020.0002.121EF] # CUNEIFORM SIGN LAGAR GUNU
-121F0 ; [.3D47.0020.0002.121F0] # CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE
-121F1 ; [.3D48.0020.0002.121F1] # CUNEIFORM SIGN LAHSHU
-121F2 ; [.3D49.0020.0002.121F2] # CUNEIFORM SIGN LAL
-121F3 ; [.3D4A.0020.0002.121F3] # CUNEIFORM SIGN LAL TIMES LAL
-121F4 ; [.3D4B.0020.0002.121F4] # CUNEIFORM SIGN LAM
-121F5 ; [.3D4C.0020.0002.121F5] # CUNEIFORM SIGN LAM TIMES KUR
-121F6 ; [.3D4D.0020.0002.121F6] # CUNEIFORM SIGN LAM TIMES KUR PLUS RU
-121F7 ; [.3D4E.0020.0002.121F7] # CUNEIFORM SIGN LI
-121F8 ; [.3D4F.0020.0002.121F8] # CUNEIFORM SIGN LIL
-121F9 ; [.3D50.0020.0002.121F9] # CUNEIFORM SIGN LIMMU2
-121FA ; [.3D51.0020.0002.121FA] # CUNEIFORM SIGN LISH
-121FB ; [.3D52.0020.0002.121FB] # CUNEIFORM SIGN LU
-121FC ; [.3D53.0020.0002.121FC] # CUNEIFORM SIGN LU TIMES BAD
-121FD ; [.3D54.0020.0002.121FD] # CUNEIFORM SIGN LU2
-121FE ; [.3D55.0020.0002.121FE] # CUNEIFORM SIGN LU2 TIMES AL
-121FF ; [.3D56.0020.0002.121FF] # CUNEIFORM SIGN LU2 TIMES BAD
-12200 ; [.3D57.0020.0002.12200] # CUNEIFORM SIGN LU2 TIMES ESH2
-12201 ; [.3D58.0020.0002.12201] # CUNEIFORM SIGN LU2 TIMES ESH2 TENU
-12202 ; [.3D59.0020.0002.12202] # CUNEIFORM SIGN LU2 TIMES GAN2 TENU
-12203 ; [.3D5A.0020.0002.12203] # CUNEIFORM SIGN LU2 TIMES HI TIMES BAD
-12204 ; [.3D5B.0020.0002.12204] # CUNEIFORM SIGN LU2 TIMES IM
-12205 ; [.3D5C.0020.0002.12205] # CUNEIFORM SIGN LU2 TIMES KAD2
-12206 ; [.3D5D.0020.0002.12206] # CUNEIFORM SIGN LU2 TIMES KAD3
-12207 ; [.3D5E.0020.0002.12207] # CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH
-12208 ; [.3D5F.0020.0002.12208] # CUNEIFORM SIGN LU2 TIMES KI
-12209 ; [.3D60.0020.0002.12209] # CUNEIFORM SIGN LU2 TIMES LA PLUS ASH
-1220A ; [.3D61.0020.0002.1220A] # CUNEIFORM SIGN LU2 TIMES LAGAB
-1220B ; [.3D62.0020.0002.1220B] # CUNEIFORM SIGN LU2 TIMES ME PLUS EN
-1220C ; [.3D63.0020.0002.1220C] # CUNEIFORM SIGN LU2 TIMES NE
-1220D ; [.3D64.0020.0002.1220D] # CUNEIFORM SIGN LU2 TIMES NU
-1220E ; [.3D65.0020.0002.1220E] # CUNEIFORM SIGN LU2 TIMES SI PLUS ASH
-1220F ; [.3D66.0020.0002.1220F] # CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU
-12210 ; [.3D67.0020.0002.12210] # CUNEIFORM SIGN LU2 TIMES TUG2
-12211 ; [.3D68.0020.0002.12211] # CUNEIFORM SIGN LU2 TENU
-12212 ; [.3D69.0020.0002.12212] # CUNEIFORM SIGN LU2 CROSSING LU2
-12213 ; [.3D6A.0020.0002.12213] # CUNEIFORM SIGN LU2 OPPOSING LU2
-12214 ; [.3D6B.0020.0002.12214] # CUNEIFORM SIGN LU2 SQUARED
-12215 ; [.3D6C.0020.0002.12215] # CUNEIFORM SIGN LU2 SHESHIG
-12216 ; [.3D6D.0020.0002.12216] # CUNEIFORM SIGN LU3
-12217 ; [.3D6E.0020.0002.12217] # CUNEIFORM SIGN LUGAL
-12218 ; [.3D6F.0020.0002.12218] # CUNEIFORM SIGN LUGAL OVER LUGAL
-12219 ; [.3D70.0020.0002.12219] # CUNEIFORM SIGN LUGAL OPPOSING LUGAL
-1221A ; [.3D71.0020.0002.1221A] # CUNEIFORM SIGN LUGAL SHESHIG
-1221B ; [.3D72.0020.0002.1221B] # CUNEIFORM SIGN LUH
-1221C ; [.3D73.0020.0002.1221C] # CUNEIFORM SIGN LUL
-1221D ; [.3D74.0020.0002.1221D] # CUNEIFORM SIGN LUM
-1221E ; [.3D75.0020.0002.1221E] # CUNEIFORM SIGN LUM OVER LUM
-1221F ; [.3D76.0020.0002.1221F] # CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR
-12220 ; [.3D77.0020.0002.12220] # CUNEIFORM SIGN MA
-12221 ; [.3D78.0020.0002.12221] # CUNEIFORM SIGN MA TIMES TAK4
-12222 ; [.3D79.0020.0002.12222] # CUNEIFORM SIGN MA GUNU
-12223 ; [.3D7A.0020.0002.12223] # CUNEIFORM SIGN MA2
-12224 ; [.3D7B.0020.0002.12224] # CUNEIFORM SIGN MAH
-12225 ; [.3D7C.0020.0002.12225] # CUNEIFORM SIGN MAR
-12226 ; [.3D7D.0020.0002.12226] # CUNEIFORM SIGN MASH
-12227 ; [.3D7E.0020.0002.12227] # CUNEIFORM SIGN MASH2
-12228 ; [.3D7F.0020.0002.12228] # CUNEIFORM SIGN ME
-12229 ; [.3D80.0020.0002.12229] # CUNEIFORM SIGN MES
-1222A ; [.3D81.0020.0002.1222A] # CUNEIFORM SIGN MI
-1222B ; [.3D82.0020.0002.1222B] # CUNEIFORM SIGN MIN
-1222C ; [.3D83.0020.0002.1222C] # CUNEIFORM SIGN MU
-1222D ; [.3D84.0020.0002.1222D] # CUNEIFORM SIGN MU OVER MU
-1222E ; [.3D85.0020.0002.1222E] # CUNEIFORM SIGN MUG
-1222F ; [.3D86.0020.0002.1222F] # CUNEIFORM SIGN MUG GUNU
-12230 ; [.3D87.0020.0002.12230] # CUNEIFORM SIGN MUNSUB
-12231 ; [.3D88.0020.0002.12231] # CUNEIFORM SIGN MURGU2
-12232 ; [.3D89.0020.0002.12232] # CUNEIFORM SIGN MUSH
-12233 ; [.3D8A.0020.0002.12233] # CUNEIFORM SIGN MUSH TIMES A
-12234 ; [.3D8B.0020.0002.12234] # CUNEIFORM SIGN MUSH TIMES KUR
-12235 ; [.3D8C.0020.0002.12235] # CUNEIFORM SIGN MUSH TIMES ZA
-12236 ; [.3D8D.0020.0002.12236] # CUNEIFORM SIGN MUSH OVER MUSH
-12237 ; [.3D8E.0020.0002.12237] # CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA
-12238 ; [.3D8F.0020.0002.12238] # CUNEIFORM SIGN MUSH CROSSING MUSH
-12239 ; [.3D90.0020.0002.12239] # CUNEIFORM SIGN MUSH3
-1223A ; [.3D91.0020.0002.1223A] # CUNEIFORM SIGN MUSH3 TIMES A
-1223B ; [.3D92.0020.0002.1223B] # CUNEIFORM SIGN MUSH3 TIMES A PLUS DI
-1223C ; [.3D93.0020.0002.1223C] # CUNEIFORM SIGN MUSH3 TIMES DI
-1223D ; [.3D94.0020.0002.1223D] # CUNEIFORM SIGN MUSH3 GUNU
-1223E ; [.3D95.0020.0002.1223E] # CUNEIFORM SIGN NA
-1223F ; [.3D96.0020.0002.1223F] # CUNEIFORM SIGN NA2
-12240 ; [.3D97.0020.0002.12240] # CUNEIFORM SIGN NAGA
-12241 ; [.3D98.0020.0002.12241] # CUNEIFORM SIGN NAGA INVERTED
-12242 ; [.3D99.0020.0002.12242] # CUNEIFORM SIGN NAGA TIMES SHU TENU
-12243 ; [.3D9A.0020.0002.12243] # CUNEIFORM SIGN NAGA OPPOSING NAGA
-12244 ; [.3D9B.0020.0002.12244] # CUNEIFORM SIGN NAGAR
-12245 ; [.3D9C.0020.0002.12245] # CUNEIFORM SIGN NAM NUTILLU
-12246 ; [.3D9D.0020.0002.12246] # CUNEIFORM SIGN NAM
-12247 ; [.3D9E.0020.0002.12247] # CUNEIFORM SIGN NAM2
-12248 ; [.3D9F.0020.0002.12248] # CUNEIFORM SIGN NE
-12249 ; [.3DA0.0020.0002.12249] # CUNEIFORM SIGN NE TIMES A
-1224A ; [.3DA1.0020.0002.1224A] # CUNEIFORM SIGN NE TIMES UD
-1224B ; [.3DA2.0020.0002.1224B] # CUNEIFORM SIGN NE SHESHIG
-1224C ; [.3DA3.0020.0002.1224C] # CUNEIFORM SIGN NI
-1224D ; [.3DA4.0020.0002.1224D] # CUNEIFORM SIGN NI TIMES E
-1224E ; [.3DA5.0020.0002.1224E] # CUNEIFORM SIGN NI2
-1224F ; [.3DA6.0020.0002.1224F] # CUNEIFORM SIGN NIM
-12250 ; [.3DA7.0020.0002.12250] # CUNEIFORM SIGN NIM TIMES GAN2 TENU
-12251 ; [.3DA8.0020.0002.12251] # CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU
-12252 ; [.3DA9.0020.0002.12252] # CUNEIFORM SIGN NINDA2
-12253 ; [.3DAA.0020.0002.12253] # CUNEIFORM SIGN NINDA2 TIMES AN
-12254 ; [.3DAB.0020.0002.12254] # CUNEIFORM SIGN NINDA2 TIMES ASH
-12255 ; [.3DAC.0020.0002.12255] # CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH
-12256 ; [.3DAD.0020.0002.12256] # CUNEIFORM SIGN NINDA2 TIMES GUD
-12257 ; [.3DAE.0020.0002.12257] # CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU
-12258 ; [.3DAF.0020.0002.12258] # CUNEIFORM SIGN NINDA2 TIMES NE
-12259 ; [.3DB0.0020.0002.12259] # CUNEIFORM SIGN NINDA2 TIMES NUN
-1225A ; [.3DB1.0020.0002.1225A] # CUNEIFORM SIGN NINDA2 TIMES SHE
-1225B ; [.3DB2.0020.0002.1225B] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN
-1225C ; [.3DB3.0020.0002.1225C] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH
-1225D ; [.3DB4.0020.0002.1225D] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH
-1225E ; [.3DB5.0020.0002.1225E] # CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH
-1225F ; [.3DB6.0020.0002.1225F] # CUNEIFORM SIGN NINDA2 TIMES USH
-12260 ; [.3DB7.0020.0002.12260] # CUNEIFORM SIGN NISAG
-12261 ; [.3DB8.0020.0002.12261] # CUNEIFORM SIGN NU
-12262 ; [.3DB9.0020.0002.12262] # CUNEIFORM SIGN NU11
-12263 ; [.3DBA.0020.0002.12263] # CUNEIFORM SIGN NUN
-12264 ; [.3DBB.0020.0002.12264] # CUNEIFORM SIGN NUN LAGAR TIMES GAR
-12265 ; [.3DBC.0020.0002.12265] # CUNEIFORM SIGN NUN LAGAR TIMES MASH
-12266 ; [.3DBD.0020.0002.12266] # CUNEIFORM SIGN NUN LAGAR TIMES SAL
-12267 ; [.3DBE.0020.0002.12267] # CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL
-12268 ; [.3DBF.0020.0002.12268] # CUNEIFORM SIGN NUN LAGAR TIMES USH
-12269 ; [.3DC0.0020.0002.12269] # CUNEIFORM SIGN NUN TENU
-1226A ; [.3DC1.0020.0002.1226A] # CUNEIFORM SIGN NUN OVER NUN
-1226B ; [.3DC2.0020.0002.1226B] # CUNEIFORM SIGN NUN CROSSING NUN
-1226C ; [.3DC3.0020.0002.1226C] # CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR
-1226D ; [.3DC4.0020.0002.1226D] # CUNEIFORM SIGN NUNUZ
-1226E ; [.3DC5.0020.0002.1226E] # CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB
-1226F ; [.3DC6.0020.0002.1226F] # CUNEIFORM SIGN NUNUZ AB2 TIMES BI
-12270 ; [.3DC7.0020.0002.12270] # CUNEIFORM SIGN NUNUZ AB2 TIMES DUG
-12271 ; [.3DC8.0020.0002.12271] # CUNEIFORM SIGN NUNUZ AB2 TIMES GUD
-12272 ; [.3DC9.0020.0002.12272] # CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU
-12273 ; [.3DCA.0020.0002.12273] # CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3
-12274 ; [.3DCB.0020.0002.12274] # CUNEIFORM SIGN NUNUZ AB2 TIMES LA
-12275 ; [.3DCC.0020.0002.12275] # CUNEIFORM SIGN NUNUZ AB2 TIMES NE
-12276 ; [.3DCD.0020.0002.12276] # CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3
-12277 ; [.3DCE.0020.0002.12277] # CUNEIFORM SIGN NUNUZ AB2 TIMES U2
-12278 ; [.3DCF.0020.0002.12278] # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI
-12279 ; [.3DD0.0020.0002.12279] # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U
-1227A ; [.3DD1.0020.0002.1227A] # CUNEIFORM SIGN PA
-1227B ; [.3DD2.0020.0002.1227B] # CUNEIFORM SIGN PAD
-1227C ; [.3DD3.0020.0002.1227C] # CUNEIFORM SIGN PAN
-1227D ; [.3DD4.0020.0002.1227D] # CUNEIFORM SIGN PAP
-1227E ; [.3DD5.0020.0002.1227E] # CUNEIFORM SIGN PESH2
-1227F ; [.3DD6.0020.0002.1227F] # CUNEIFORM SIGN PI
-12280 ; [.3DD7.0020.0002.12280] # CUNEIFORM SIGN PI TIMES A
-12281 ; [.3DD8.0020.0002.12281] # CUNEIFORM SIGN PI TIMES AB
-12282 ; [.3DD9.0020.0002.12282] # CUNEIFORM SIGN PI TIMES BI
-12283 ; [.3DDA.0020.0002.12283] # CUNEIFORM SIGN PI TIMES BU
-12284 ; [.3DDB.0020.0002.12284] # CUNEIFORM SIGN PI TIMES E
-12285 ; [.3DDC.0020.0002.12285] # CUNEIFORM SIGN PI TIMES I
-12286 ; [.3DDD.0020.0002.12286] # CUNEIFORM SIGN PI TIMES IB
-12287 ; [.3DDE.0020.0002.12287] # CUNEIFORM SIGN PI TIMES U
-12288 ; [.3DDF.0020.0002.12288] # CUNEIFORM SIGN PI TIMES U2
-12289 ; [.3DE0.0020.0002.12289] # CUNEIFORM SIGN PI CROSSING PI
-1228A ; [.3DE1.0020.0002.1228A] # CUNEIFORM SIGN PIRIG
-1228B ; [.3DE2.0020.0002.1228B] # CUNEIFORM SIGN PIRIG TIMES KAL
-1228C ; [.3DE3.0020.0002.1228C] # CUNEIFORM SIGN PIRIG TIMES UD
-1228D ; [.3DE4.0020.0002.1228D] # CUNEIFORM SIGN PIRIG TIMES ZA
-1228E ; [.3DE5.0020.0002.1228E] # CUNEIFORM SIGN PIRIG OPPOSING PIRIG
-1228F ; [.3DE6.0020.0002.1228F] # CUNEIFORM SIGN RA
-12290 ; [.3DE7.0020.0002.12290] # CUNEIFORM SIGN RAB
-12291 ; [.3DE8.0020.0002.12291] # CUNEIFORM SIGN RI
-12292 ; [.3DE9.0020.0002.12292] # CUNEIFORM SIGN RU
-12293 ; [.3DEA.0020.0002.12293] # CUNEIFORM SIGN SA
-12294 ; [.3DEB.0020.0002.12294] # CUNEIFORM SIGN SAG NUTILLU
-12295 ; [.3DEC.0020.0002.12295] # CUNEIFORM SIGN SAG
-12296 ; [.3DED.0020.0002.12296] # CUNEIFORM SIGN SAG TIMES A
-12297 ; [.3DEE.0020.0002.12297] # CUNEIFORM SIGN SAG TIMES DU
-12298 ; [.3DEF.0020.0002.12298] # CUNEIFORM SIGN SAG TIMES DUB
-12299 ; [.3DF0.0020.0002.12299] # CUNEIFORM SIGN SAG TIMES HA
-1229A ; [.3DF1.0020.0002.1229A] # CUNEIFORM SIGN SAG TIMES KAK
-1229B ; [.3DF2.0020.0002.1229B] # CUNEIFORM SIGN SAG TIMES KUR
-1229C ; [.3DF3.0020.0002.1229C] # CUNEIFORM SIGN SAG TIMES LUM
-1229D ; [.3DF4.0020.0002.1229D] # CUNEIFORM SIGN SAG TIMES MI
-1229E ; [.3DF5.0020.0002.1229E] # CUNEIFORM SIGN SAG TIMES NUN
-1229F ; [.3DF6.0020.0002.1229F] # CUNEIFORM SIGN SAG TIMES SAL
-122A0 ; [.3DF7.0020.0002.122A0] # CUNEIFORM SIGN SAG TIMES SHID
-122A1 ; [.3DF8.0020.0002.122A1] # CUNEIFORM SIGN SAG TIMES TAB
-122A2 ; [.3DF9.0020.0002.122A2] # CUNEIFORM SIGN SAG TIMES U2
-122A3 ; [.3DFA.0020.0002.122A3] # CUNEIFORM SIGN SAG TIMES UB
-122A4 ; [.3DFB.0020.0002.122A4] # CUNEIFORM SIGN SAG TIMES UM
-122A5 ; [.3DFC.0020.0002.122A5] # CUNEIFORM SIGN SAG TIMES UR
-122A6 ; [.3DFD.0020.0002.122A6] # CUNEIFORM SIGN SAG TIMES USH
-122A7 ; [.3DFE.0020.0002.122A7] # CUNEIFORM SIGN SAG OVER SAG
-122A8 ; [.3DFF.0020.0002.122A8] # CUNEIFORM SIGN SAG GUNU
-122A9 ; [.3E00.0020.0002.122A9] # CUNEIFORM SIGN SAL
-122AA ; [.3E01.0020.0002.122AA] # CUNEIFORM SIGN SAL LAGAB TIMES ASH2
-122AB ; [.3E02.0020.0002.122AB] # CUNEIFORM SIGN SANGA2
-122AC ; [.3E03.0020.0002.122AC] # CUNEIFORM SIGN SAR
-122AD ; [.3E04.0020.0002.122AD] # CUNEIFORM SIGN SHA
-122AE ; [.3E05.0020.0002.122AE] # CUNEIFORM SIGN SHA3
-122AF ; [.3E06.0020.0002.122AF] # CUNEIFORM SIGN SHA3 TIMES A
-122B0 ; [.3E07.0020.0002.122B0] # CUNEIFORM SIGN SHA3 TIMES BAD
-122B1 ; [.3E08.0020.0002.122B1] # CUNEIFORM SIGN SHA3 TIMES GISH
-122B2 ; [.3E09.0020.0002.122B2] # CUNEIFORM SIGN SHA3 TIMES NE
-122B3 ; [.3E0A.0020.0002.122B3] # CUNEIFORM SIGN SHA3 TIMES SHU2
-122B4 ; [.3E0B.0020.0002.122B4] # CUNEIFORM SIGN SHA3 TIMES TUR
-122B5 ; [.3E0C.0020.0002.122B5] # CUNEIFORM SIGN SHA3 TIMES U
-122B6 ; [.3E0D.0020.0002.122B6] # CUNEIFORM SIGN SHA3 TIMES U PLUS A
-122B7 ; [.3E0E.0020.0002.122B7] # CUNEIFORM SIGN SHA6
-122B8 ; [.3E0F.0020.0002.122B8] # CUNEIFORM SIGN SHAB6
-122B9 ; [.3E10.0020.0002.122B9] # CUNEIFORM SIGN SHAR2
-122BA ; [.3E11.0020.0002.122BA] # CUNEIFORM SIGN SHE
-122BB ; [.3E12.0020.0002.122BB] # CUNEIFORM SIGN SHE HU
-122BC ; [.3E13.0020.0002.122BC] # CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR
-122BD ; [.3E14.0020.0002.122BD] # CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR
-122BE ; [.3E15.0020.0002.122BE] # CUNEIFORM SIGN SHEG9
-122BF ; [.3E16.0020.0002.122BF] # CUNEIFORM SIGN SHEN
-122C0 ; [.3E17.0020.0002.122C0] # CUNEIFORM SIGN SHESH
-122C1 ; [.3E18.0020.0002.122C1] # CUNEIFORM SIGN SHESH2
-122C2 ; [.3E19.0020.0002.122C2] # CUNEIFORM SIGN SHESHLAM
-122C3 ; [.3E1A.0020.0002.122C3] # CUNEIFORM SIGN SHID
-122C4 ; [.3E1B.0020.0002.122C4] # CUNEIFORM SIGN SHID TIMES A
-122C5 ; [.3E1C.0020.0002.122C5] # CUNEIFORM SIGN SHID TIMES IM
-122C6 ; [.3E1D.0020.0002.122C6] # CUNEIFORM SIGN SHIM
-122C7 ; [.3E1E.0020.0002.122C7] # CUNEIFORM SIGN SHIM TIMES A
-122C8 ; [.3E1F.0020.0002.122C8] # CUNEIFORM SIGN SHIM TIMES BAL
-122C9 ; [.3E20.0020.0002.122C9] # CUNEIFORM SIGN SHIM TIMES BULUG
-122CA ; [.3E21.0020.0002.122CA] # CUNEIFORM SIGN SHIM TIMES DIN
-122CB ; [.3E22.0020.0002.122CB] # CUNEIFORM SIGN SHIM TIMES GAR
-122CC ; [.3E23.0020.0002.122CC] # CUNEIFORM SIGN SHIM TIMES IGI
-122CD ; [.3E24.0020.0002.122CD] # CUNEIFORM SIGN SHIM TIMES IGI GUNU
-122CE ; [.3E25.0020.0002.122CE] # CUNEIFORM SIGN SHIM TIMES KUSHU2
-122CF ; [.3E26.0020.0002.122CF] # CUNEIFORM SIGN SHIM TIMES LUL
-122D0 ; [.3E27.0020.0002.122D0] # CUNEIFORM SIGN SHIM TIMES MUG
-122D1 ; [.3E28.0020.0002.122D1] # CUNEIFORM SIGN SHIM TIMES SAL
-122D2 ; [.3E29.0020.0002.122D2] # CUNEIFORM SIGN SHINIG
-122D3 ; [.3E2A.0020.0002.122D3] # CUNEIFORM SIGN SHIR
-122D4 ; [.3E2B.0020.0002.122D4] # CUNEIFORM SIGN SHIR TENU
-122D5 ; [.3E2C.0020.0002.122D5] # CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR
-122D6 ; [.3E2D.0020.0002.122D6] # CUNEIFORM SIGN SHITA
-122D7 ; [.3E2E.0020.0002.122D7] # CUNEIFORM SIGN SHU
-122D8 ; [.3E2F.0020.0002.122D8] # CUNEIFORM SIGN SHU OVER INVERTED SHU
-122D9 ; [.3E30.0020.0002.122D9] # CUNEIFORM SIGN SHU2
-122DA ; [.3E31.0020.0002.122DA] # CUNEIFORM SIGN SHUBUR
-122DB ; [.3E32.0020.0002.122DB] # CUNEIFORM SIGN SI
-122DC ; [.3E33.0020.0002.122DC] # CUNEIFORM SIGN SI GUNU
-122DD ; [.3E34.0020.0002.122DD] # CUNEIFORM SIGN SIG
-122DE ; [.3E35.0020.0002.122DE] # CUNEIFORM SIGN SIG4
-122DF ; [.3E36.0020.0002.122DF] # CUNEIFORM SIGN SIG4 OVER SIG4 SHU2
-122E0 ; [.3E37.0020.0002.122E0] # CUNEIFORM SIGN SIK2
-122E1 ; [.3E38.0020.0002.122E1] # CUNEIFORM SIGN SILA3
-122E2 ; [.3E39.0020.0002.122E2] # CUNEIFORM SIGN SU
-122E3 ; [.3E3A.0020.0002.122E3] # CUNEIFORM SIGN SU OVER SU
-122E4 ; [.3E3B.0020.0002.122E4] # CUNEIFORM SIGN SUD
-122E5 ; [.3E3C.0020.0002.122E5] # CUNEIFORM SIGN SUD2
-122E6 ; [.3E3D.0020.0002.122E6] # CUNEIFORM SIGN SUHUR
-122E7 ; [.3E3E.0020.0002.122E7] # CUNEIFORM SIGN SUM
-122E8 ; [.3E3F.0020.0002.122E8] # CUNEIFORM SIGN SUMASH
-122E9 ; [.3E40.0020.0002.122E9] # CUNEIFORM SIGN SUR
-122EA ; [.3E41.0020.0002.122EA] # CUNEIFORM SIGN SUR9
-122EB ; [.3E42.0020.0002.122EB] # CUNEIFORM SIGN TA
-122EC ; [.3E43.0020.0002.122EC] # CUNEIFORM SIGN TA ASTERISK
-122ED ; [.3E44.0020.0002.122ED] # CUNEIFORM SIGN TA TIMES HI
-122EE ; [.3E45.0020.0002.122EE] # CUNEIFORM SIGN TA TIMES MI
-122EF ; [.3E46.0020.0002.122EF] # CUNEIFORM SIGN TA GUNU
-122F0 ; [.3E47.0020.0002.122F0] # CUNEIFORM SIGN TAB
-122F1 ; [.3E48.0020.0002.122F1] # CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH
-122F2 ; [.3E49.0020.0002.122F2] # CUNEIFORM SIGN TAB SQUARED
-122F3 ; [.3E4A.0020.0002.122F3] # CUNEIFORM SIGN TAG
-122F4 ; [.3E4B.0020.0002.122F4] # CUNEIFORM SIGN TAG TIMES BI
-122F5 ; [.3E4C.0020.0002.122F5] # CUNEIFORM SIGN TAG TIMES GUD
-122F6 ; [.3E4D.0020.0002.122F6] # CUNEIFORM SIGN TAG TIMES SHE
-122F7 ; [.3E4E.0020.0002.122F7] # CUNEIFORM SIGN TAG TIMES SHU
-122F8 ; [.3E4F.0020.0002.122F8] # CUNEIFORM SIGN TAG TIMES TUG2
-122F9 ; [.3E50.0020.0002.122F9] # CUNEIFORM SIGN TAG TIMES UD
-122FA ; [.3E51.0020.0002.122FA] # CUNEIFORM SIGN TAK4
-122FB ; [.3E52.0020.0002.122FB] # CUNEIFORM SIGN TAR
-122FC ; [.3E53.0020.0002.122FC] # CUNEIFORM SIGN TE
-122FD ; [.3E54.0020.0002.122FD] # CUNEIFORM SIGN TE GUNU
-122FE ; [.3E55.0020.0002.122FE] # CUNEIFORM SIGN TI
-122FF ; [.3E56.0020.0002.122FF] # CUNEIFORM SIGN TI TENU
-12300 ; [.3E57.0020.0002.12300] # CUNEIFORM SIGN TIL
-12301 ; [.3E58.0020.0002.12301] # CUNEIFORM SIGN TIR
-12302 ; [.3E59.0020.0002.12302] # CUNEIFORM SIGN TIR TIMES TAK4
-12303 ; [.3E5A.0020.0002.12303] # CUNEIFORM SIGN TIR OVER TIR
-12304 ; [.3E5B.0020.0002.12304] # CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR
-12305 ; [.3E5C.0020.0002.12305] # CUNEIFORM SIGN TU
-12306 ; [.3E5D.0020.0002.12306] # CUNEIFORM SIGN TUG2
-12307 ; [.3E5E.0020.0002.12307] # CUNEIFORM SIGN TUK
-12308 ; [.3E5F.0020.0002.12308] # CUNEIFORM SIGN TUM
-12309 ; [.3E60.0020.0002.12309] # CUNEIFORM SIGN TUR
-1230A ; [.3E61.0020.0002.1230A] # CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA
-1230B ; [.3E62.0020.0002.1230B] # CUNEIFORM SIGN U
-1230C ; [.3E63.0020.0002.1230C] # CUNEIFORM SIGN U GUD
-1230D ; [.3E64.0020.0002.1230D] # CUNEIFORM SIGN U U U
-1230E ; [.3E65.0020.0002.1230E] # CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR
-1230F ; [.3E66.0020.0002.1230F] # CUNEIFORM SIGN U OVER U SUR OVER SUR
-12310 ; [.3E67.0020.0002.12310] # CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED
-12311 ; [.3E68.0020.0002.12311] # CUNEIFORM SIGN U2
-12312 ; [.3E69.0020.0002.12312] # CUNEIFORM SIGN UB
-12313 ; [.3E6A.0020.0002.12313] # CUNEIFORM SIGN UD
-12314 ; [.3E6B.0020.0002.12314] # CUNEIFORM SIGN UD KUSHU2
-12315 ; [.3E6C.0020.0002.12315] # CUNEIFORM SIGN UD TIMES BAD
-12316 ; [.3E6D.0020.0002.12316] # CUNEIFORM SIGN UD TIMES MI
-12317 ; [.3E6E.0020.0002.12317] # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U
-12318 ; [.3E6F.0020.0002.12318] # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU
-12319 ; [.3E70.0020.0002.12319] # CUNEIFORM SIGN UD GUNU
-1231A ; [.3E71.0020.0002.1231A] # CUNEIFORM SIGN UD SHESHIG
-1231B ; [.3E72.0020.0002.1231B] # CUNEIFORM SIGN UD SHESHIG TIMES BAD
-1231C ; [.3E73.0020.0002.1231C] # CUNEIFORM SIGN UDUG
-1231D ; [.3E74.0020.0002.1231D] # CUNEIFORM SIGN UM
-1231E ; [.3E75.0020.0002.1231E] # CUNEIFORM SIGN UM TIMES LAGAB
-1231F ; [.3E76.0020.0002.1231F] # CUNEIFORM SIGN UM TIMES ME PLUS DA
-12320 ; [.3E77.0020.0002.12320] # CUNEIFORM SIGN UM TIMES SHA3
-12321 ; [.3E78.0020.0002.12321] # CUNEIFORM SIGN UM TIMES U
-12322 ; [.3E79.0020.0002.12322] # CUNEIFORM SIGN UMBIN
-12323 ; [.3E7A.0020.0002.12323] # CUNEIFORM SIGN UMUM
-12324 ; [.3E7B.0020.0002.12324] # CUNEIFORM SIGN UMUM TIMES KASKAL
-12325 ; [.3E7C.0020.0002.12325] # CUNEIFORM SIGN UMUM TIMES PA
-12326 ; [.3E7D.0020.0002.12326] # CUNEIFORM SIGN UN
-12327 ; [.3E7E.0020.0002.12327] # CUNEIFORM SIGN UN GUNU
-12328 ; [.3E7F.0020.0002.12328] # CUNEIFORM SIGN UR
-12329 ; [.3E80.0020.0002.12329] # CUNEIFORM SIGN UR CROSSING UR
-1232A ; [.3E81.0020.0002.1232A] # CUNEIFORM SIGN UR SHESHIG
-1232B ; [.3E82.0020.0002.1232B] # CUNEIFORM SIGN UR2
-1232C ; [.3E83.0020.0002.1232C] # CUNEIFORM SIGN UR2 TIMES A PLUS HA
-1232D ; [.3E84.0020.0002.1232D] # CUNEIFORM SIGN UR2 TIMES A PLUS NA
-1232E ; [.3E85.0020.0002.1232E] # CUNEIFORM SIGN UR2 TIMES AL
-1232F ; [.3E86.0020.0002.1232F] # CUNEIFORM SIGN UR2 TIMES HA
-12330 ; [.3E87.0020.0002.12330] # CUNEIFORM SIGN UR2 TIMES NUN
-12331 ; [.3E88.0020.0002.12331] # CUNEIFORM SIGN UR2 TIMES U2
-12332 ; [.3E89.0020.0002.12332] # CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH
-12333 ; [.3E8A.0020.0002.12333] # CUNEIFORM SIGN UR2 TIMES U2 PLUS BI
-12334 ; [.3E8B.0020.0002.12334] # CUNEIFORM SIGN UR4
-12335 ; [.3E8C.0020.0002.12335] # CUNEIFORM SIGN URI
-12336 ; [.3E8D.0020.0002.12336] # CUNEIFORM SIGN URI3
-12337 ; [.3E8E.0020.0002.12337] # CUNEIFORM SIGN URU
-12338 ; [.3E8F.0020.0002.12338] # CUNEIFORM SIGN URU TIMES A
-12339 ; [.3E90.0020.0002.12339] # CUNEIFORM SIGN URU TIMES ASHGAB
-1233A ; [.3E91.0020.0002.1233A] # CUNEIFORM SIGN URU TIMES BAR
-1233B ; [.3E92.0020.0002.1233B] # CUNEIFORM SIGN URU TIMES DUN
-1233C ; [.3E93.0020.0002.1233C] # CUNEIFORM SIGN URU TIMES GA
-1233D ; [.3E94.0020.0002.1233D] # CUNEIFORM SIGN URU TIMES GAL
-1233E ; [.3E95.0020.0002.1233E] # CUNEIFORM SIGN URU TIMES GAN2 TENU
-1233F ; [.3E96.0020.0002.1233F] # CUNEIFORM SIGN URU TIMES GAR
-12340 ; [.3E97.0020.0002.12340] # CUNEIFORM SIGN URU TIMES GU
-12341 ; [.3E98.0020.0002.12341] # CUNEIFORM SIGN URU TIMES HA
-12342 ; [.3E99.0020.0002.12342] # CUNEIFORM SIGN URU TIMES IGI
-12343 ; [.3E9A.0020.0002.12343] # CUNEIFORM SIGN URU TIMES IM
-12344 ; [.3E9B.0020.0002.12344] # CUNEIFORM SIGN URU TIMES ISH
-12345 ; [.3E9C.0020.0002.12345] # CUNEIFORM SIGN URU TIMES KI
-12346 ; [.3E9D.0020.0002.12346] # CUNEIFORM SIGN URU TIMES LUM
-12347 ; [.3E9E.0020.0002.12347] # CUNEIFORM SIGN URU TIMES MIN
-12348 ; [.3E9F.0020.0002.12348] # CUNEIFORM SIGN URU TIMES PA
-12349 ; [.3EA0.0020.0002.12349] # CUNEIFORM SIGN URU TIMES SHE
-1234A ; [.3EA1.0020.0002.1234A] # CUNEIFORM SIGN URU TIMES SIG4
-1234B ; [.3EA2.0020.0002.1234B] # CUNEIFORM SIGN URU TIMES TU
-1234C ; [.3EA3.0020.0002.1234C] # CUNEIFORM SIGN URU TIMES U PLUS GUD
-1234D ; [.3EA4.0020.0002.1234D] # CUNEIFORM SIGN URU TIMES UD
-1234E ; [.3EA5.0020.0002.1234E] # CUNEIFORM SIGN URU TIMES URUDA
-1234F ; [.3EA6.0020.0002.1234F] # CUNEIFORM SIGN URUDA
-12350 ; [.3EA7.0020.0002.12350] # CUNEIFORM SIGN URUDA TIMES U
-12351 ; [.3EA8.0020.0002.12351] # CUNEIFORM SIGN USH
-12352 ; [.3EA9.0020.0002.12352] # CUNEIFORM SIGN USH TIMES A
-12353 ; [.3EAA.0020.0002.12353] # CUNEIFORM SIGN USH TIMES KU
-12354 ; [.3EAB.0020.0002.12354] # CUNEIFORM SIGN USH TIMES KUR
-12355 ; [.3EAC.0020.0002.12355] # CUNEIFORM SIGN USH TIMES TAK4
-12356 ; [.3EAD.0020.0002.12356] # CUNEIFORM SIGN USHX
-12357 ; [.3EAE.0020.0002.12357] # CUNEIFORM SIGN USH2
-12358 ; [.3EAF.0020.0002.12358] # CUNEIFORM SIGN USHUMX
-12359 ; [.3EB0.0020.0002.12359] # CUNEIFORM SIGN UTUKI
-1235A ; [.3EB1.0020.0002.1235A] # CUNEIFORM SIGN UZ3
-1235B ; [.3EB2.0020.0002.1235B] # CUNEIFORM SIGN UZ3 TIMES KASKAL
-1235C ; [.3EB3.0020.0002.1235C] # CUNEIFORM SIGN UZU
-1235D ; [.3EB4.0020.0002.1235D] # CUNEIFORM SIGN ZA
-1235E ; [.3EB5.0020.0002.1235E] # CUNEIFORM SIGN ZA TENU
-1235F ; [.3EB6.0020.0002.1235F] # CUNEIFORM SIGN ZA SQUARED TIMES KUR
-12360 ; [.3EB7.0020.0002.12360] # CUNEIFORM SIGN ZAG
-12361 ; [.3EB8.0020.0002.12361] # CUNEIFORM SIGN ZAMX
-12362 ; [.3EB9.0020.0002.12362] # CUNEIFORM SIGN ZE2
-12363 ; [.3EBA.0020.0002.12363] # CUNEIFORM SIGN ZI
-12364 ; [.3EBB.0020.0002.12364] # CUNEIFORM SIGN ZI OVER ZI
-12365 ; [.3EBC.0020.0002.12365] # CUNEIFORM SIGN ZI3
-12366 ; [.3EBD.0020.0002.12366] # CUNEIFORM SIGN ZIB
-12367 ; [.3EBE.0020.0002.12367] # CUNEIFORM SIGN ZIB KABA TENU
-12368 ; [.3EBF.0020.0002.12368] # CUNEIFORM SIGN ZIG
-12369 ; [.3EC0.0020.0002.12369] # CUNEIFORM SIGN ZIZ2
-1236A ; [.3EC1.0020.0002.1236A] # CUNEIFORM SIGN ZU
-1236B ; [.3EC2.0020.0002.1236B] # CUNEIFORM SIGN ZU5
-1236C ; [.3EC3.0020.0002.1236C] # CUNEIFORM SIGN ZU5 TIMES A
-1236D ; [.3EC4.0020.0002.1236D] # CUNEIFORM SIGN ZUBUR
-1236E ; [.3EC5.0020.0002.1236E] # CUNEIFORM SIGN ZUM
-13000 ; [.3EC6.0020.0002.13000] # EGYPTIAN HIEROGLYPH A001
-13001 ; [.3EC7.0020.0002.13001] # EGYPTIAN HIEROGLYPH A002
-13002 ; [.3EC8.0020.0002.13002] # EGYPTIAN HIEROGLYPH A003
-13003 ; [.3EC9.0020.0002.13003] # EGYPTIAN HIEROGLYPH A004
-13004 ; [.3ECA.0020.0002.13004] # EGYPTIAN HIEROGLYPH A005
-13005 ; [.3ECB.0020.0002.13005] # EGYPTIAN HIEROGLYPH A005A
-13006 ; [.3ECC.0020.0002.13006] # EGYPTIAN HIEROGLYPH A006
-13007 ; [.3ECD.0020.0002.13007] # EGYPTIAN HIEROGLYPH A006A
-13008 ; [.3ECE.0020.0002.13008] # EGYPTIAN HIEROGLYPH A006B
-13009 ; [.3ECF.0020.0002.13009] # EGYPTIAN HIEROGLYPH A007
-1300A ; [.3ED0.0020.0002.1300A] # EGYPTIAN HIEROGLYPH A008
-1300B ; [.3ED1.0020.0002.1300B] # EGYPTIAN HIEROGLYPH A009
-1300C ; [.3ED2.0020.0002.1300C] # EGYPTIAN HIEROGLYPH A010
-1300D ; [.3ED3.0020.0002.1300D] # EGYPTIAN HIEROGLYPH A011
-1300E ; [.3ED4.0020.0002.1300E] # EGYPTIAN HIEROGLYPH A012
-1300F ; [.3ED5.0020.0002.1300F] # EGYPTIAN HIEROGLYPH A013
-13010 ; [.3ED6.0020.0002.13010] # EGYPTIAN HIEROGLYPH A014
-13011 ; [.3ED7.0020.0002.13011] # EGYPTIAN HIEROGLYPH A014A
-13012 ; [.3ED8.0020.0002.13012] # EGYPTIAN HIEROGLYPH A015
-13013 ; [.3ED9.0020.0002.13013] # EGYPTIAN HIEROGLYPH A016
-13014 ; [.3EDA.0020.0002.13014] # EGYPTIAN HIEROGLYPH A017
-13015 ; [.3EDB.0020.0002.13015] # EGYPTIAN HIEROGLYPH A017A
-13016 ; [.3EDC.0020.0002.13016] # EGYPTIAN HIEROGLYPH A018
-13017 ; [.3EDD.0020.0002.13017] # EGYPTIAN HIEROGLYPH A019
-13018 ; [.3EDE.0020.0002.13018] # EGYPTIAN HIEROGLYPH A020
-13019 ; [.3EDF.0020.0002.13019] # EGYPTIAN HIEROGLYPH A021
-1301A ; [.3EE0.0020.0002.1301A] # EGYPTIAN HIEROGLYPH A022
-1301B ; [.3EE1.0020.0002.1301B] # EGYPTIAN HIEROGLYPH A023
-1301C ; [.3EE2.0020.0002.1301C] # EGYPTIAN HIEROGLYPH A024
-1301D ; [.3EE3.0020.0002.1301D] # EGYPTIAN HIEROGLYPH A025
-1301E ; [.3EE4.0020.0002.1301E] # EGYPTIAN HIEROGLYPH A026
-1301F ; [.3EE5.0020.0002.1301F] # EGYPTIAN HIEROGLYPH A027
-13020 ; [.3EE6.0020.0002.13020] # EGYPTIAN HIEROGLYPH A028
-13021 ; [.3EE7.0020.0002.13021] # EGYPTIAN HIEROGLYPH A029
-13022 ; [.3EE8.0020.0002.13022] # EGYPTIAN HIEROGLYPH A030
-13023 ; [.3EE9.0020.0002.13023] # EGYPTIAN HIEROGLYPH A031
-13024 ; [.3EEA.0020.0002.13024] # EGYPTIAN HIEROGLYPH A032
-13025 ; [.3EEB.0020.0002.13025] # EGYPTIAN HIEROGLYPH A032A
-13026 ; [.3EEC.0020.0002.13026] # EGYPTIAN HIEROGLYPH A033
-13027 ; [.3EED.0020.0002.13027] # EGYPTIAN HIEROGLYPH A034
-13028 ; [.3EEE.0020.0002.13028] # EGYPTIAN HIEROGLYPH A035
-13029 ; [.3EEF.0020.0002.13029] # EGYPTIAN HIEROGLYPH A036
-1302A ; [.3EF0.0020.0002.1302A] # EGYPTIAN HIEROGLYPH A037
-1302B ; [.3EF1.0020.0002.1302B] # EGYPTIAN HIEROGLYPH A038
-1302C ; [.3EF2.0020.0002.1302C] # EGYPTIAN HIEROGLYPH A039
-1302D ; [.3EF3.0020.0002.1302D] # EGYPTIAN HIEROGLYPH A040
-1302E ; [.3EF4.0020.0002.1302E] # EGYPTIAN HIEROGLYPH A040A
-1302F ; [.3EF5.0020.0002.1302F] # EGYPTIAN HIEROGLYPH A041
-13030 ; [.3EF6.0020.0002.13030] # EGYPTIAN HIEROGLYPH A042
-13031 ; [.3EF7.0020.0002.13031] # EGYPTIAN HIEROGLYPH A042A
-13032 ; [.3EF8.0020.0002.13032] # EGYPTIAN HIEROGLYPH A043
-13033 ; [.3EF9.0020.0002.13033] # EGYPTIAN HIEROGLYPH A043A
-13034 ; [.3EFA.0020.0002.13034] # EGYPTIAN HIEROGLYPH A044
-13035 ; [.3EFB.0020.0002.13035] # EGYPTIAN HIEROGLYPH A045
-13036 ; [.3EFC.0020.0002.13036] # EGYPTIAN HIEROGLYPH A045A
-13037 ; [.3EFD.0020.0002.13037] # EGYPTIAN HIEROGLYPH A046
-13038 ; [.3EFE.0020.0002.13038] # EGYPTIAN HIEROGLYPH A047
-13039 ; [.3EFF.0020.0002.13039] # EGYPTIAN HIEROGLYPH A048
-1303A ; [.3F00.0020.0002.1303A] # EGYPTIAN HIEROGLYPH A049
-1303B ; [.3F01.0020.0002.1303B] # EGYPTIAN HIEROGLYPH A050
-1303C ; [.3F02.0020.0002.1303C] # EGYPTIAN HIEROGLYPH A051
-1303D ; [.3F03.0020.0002.1303D] # EGYPTIAN HIEROGLYPH A052
-1303E ; [.3F04.0020.0002.1303E] # EGYPTIAN HIEROGLYPH A053
-1303F ; [.3F05.0020.0002.1303F] # EGYPTIAN HIEROGLYPH A054
-13040 ; [.3F06.0020.0002.13040] # EGYPTIAN HIEROGLYPH A055
-13041 ; [.3F07.0020.0002.13041] # EGYPTIAN HIEROGLYPH A056
-13042 ; [.3F08.0020.0002.13042] # EGYPTIAN HIEROGLYPH A057
-13043 ; [.3F09.0020.0002.13043] # EGYPTIAN HIEROGLYPH A058
-13044 ; [.3F0A.0020.0002.13044] # EGYPTIAN HIEROGLYPH A059
-13045 ; [.3F0B.0020.0002.13045] # EGYPTIAN HIEROGLYPH A060
-13046 ; [.3F0C.0020.0002.13046] # EGYPTIAN HIEROGLYPH A061
-13047 ; [.3F0D.0020.0002.13047] # EGYPTIAN HIEROGLYPH A062
-13048 ; [.3F0E.0020.0002.13048] # EGYPTIAN HIEROGLYPH A063
-13049 ; [.3F0F.0020.0002.13049] # EGYPTIAN HIEROGLYPH A064
-1304A ; [.3F10.0020.0002.1304A] # EGYPTIAN HIEROGLYPH A065
-1304B ; [.3F11.0020.0002.1304B] # EGYPTIAN HIEROGLYPH A066
-1304C ; [.3F12.0020.0002.1304C] # EGYPTIAN HIEROGLYPH A067
-1304D ; [.3F13.0020.0002.1304D] # EGYPTIAN HIEROGLYPH A068
-1304E ; [.3F14.0020.0002.1304E] # EGYPTIAN HIEROGLYPH A069
-1304F ; [.3F15.0020.0002.1304F] # EGYPTIAN HIEROGLYPH A070
-13050 ; [.3F16.0020.0002.13050] # EGYPTIAN HIEROGLYPH B001
-13051 ; [.3F17.0020.0002.13051] # EGYPTIAN HIEROGLYPH B002
-13052 ; [.3F18.0020.0002.13052] # EGYPTIAN HIEROGLYPH B003
-13053 ; [.3F19.0020.0002.13053] # EGYPTIAN HIEROGLYPH B004
-13054 ; [.3F1A.0020.0002.13054] # EGYPTIAN HIEROGLYPH B005
-13055 ; [.3F1B.0020.0002.13055] # EGYPTIAN HIEROGLYPH B005A
-13056 ; [.3F1C.0020.0002.13056] # EGYPTIAN HIEROGLYPH B006
-13057 ; [.3F1D.0020.0002.13057] # EGYPTIAN HIEROGLYPH B007
-13058 ; [.3F1E.0020.0002.13058] # EGYPTIAN HIEROGLYPH B008
-13059 ; [.3F1F.0020.0002.13059] # EGYPTIAN HIEROGLYPH B009
-1305A ; [.3F20.0020.0002.1305A] # EGYPTIAN HIEROGLYPH C001
-1305B ; [.3F21.0020.0002.1305B] # EGYPTIAN HIEROGLYPH C002
-1305C ; [.3F22.0020.0002.1305C] # EGYPTIAN HIEROGLYPH C002A
-1305D ; [.3F23.0020.0002.1305D] # EGYPTIAN HIEROGLYPH C002B
-1305E ; [.3F24.0020.0002.1305E] # EGYPTIAN HIEROGLYPH C002C
-1305F ; [.3F25.0020.0002.1305F] # EGYPTIAN HIEROGLYPH C003
-13060 ; [.3F26.0020.0002.13060] # EGYPTIAN HIEROGLYPH C004
-13061 ; [.3F27.0020.0002.13061] # EGYPTIAN HIEROGLYPH C005
-13062 ; [.3F28.0020.0002.13062] # EGYPTIAN HIEROGLYPH C006
-13063 ; [.3F29.0020.0002.13063] # EGYPTIAN HIEROGLYPH C007
-13064 ; [.3F2A.0020.0002.13064] # EGYPTIAN HIEROGLYPH C008
-13065 ; [.3F2B.0020.0002.13065] # EGYPTIAN HIEROGLYPH C009
-13066 ; [.3F2C.0020.0002.13066] # EGYPTIAN HIEROGLYPH C010
-13067 ; [.3F2D.0020.0002.13067] # EGYPTIAN HIEROGLYPH C010A
-13068 ; [.3F2E.0020.0002.13068] # EGYPTIAN HIEROGLYPH C011
-13069 ; [.3F2F.0020.0002.13069] # EGYPTIAN HIEROGLYPH C012
-1306A ; [.3F30.0020.0002.1306A] # EGYPTIAN HIEROGLYPH C013
-1306B ; [.3F31.0020.0002.1306B] # EGYPTIAN HIEROGLYPH C014
-1306C ; [.3F32.0020.0002.1306C] # EGYPTIAN HIEROGLYPH C015
-1306D ; [.3F33.0020.0002.1306D] # EGYPTIAN HIEROGLYPH C016
-1306E ; [.3F34.0020.0002.1306E] # EGYPTIAN HIEROGLYPH C017
-1306F ; [.3F35.0020.0002.1306F] # EGYPTIAN HIEROGLYPH C018
-13070 ; [.3F36.0020.0002.13070] # EGYPTIAN HIEROGLYPH C019
-13071 ; [.3F37.0020.0002.13071] # EGYPTIAN HIEROGLYPH C020
-13072 ; [.3F38.0020.0002.13072] # EGYPTIAN HIEROGLYPH C021
-13073 ; [.3F39.0020.0002.13073] # EGYPTIAN HIEROGLYPH C022
-13074 ; [.3F3A.0020.0002.13074] # EGYPTIAN HIEROGLYPH C023
-13075 ; [.3F3B.0020.0002.13075] # EGYPTIAN HIEROGLYPH C024
-13076 ; [.3F3C.0020.0002.13076] # EGYPTIAN HIEROGLYPH D001
-13077 ; [.3F3D.0020.0002.13077] # EGYPTIAN HIEROGLYPH D002
-13078 ; [.3F3E.0020.0002.13078] # EGYPTIAN HIEROGLYPH D003
-13079 ; [.3F3F.0020.0002.13079] # EGYPTIAN HIEROGLYPH D004
-1307A ; [.3F40.0020.0002.1307A] # EGYPTIAN HIEROGLYPH D005
-1307B ; [.3F41.0020.0002.1307B] # EGYPTIAN HIEROGLYPH D006
-1307C ; [.3F42.0020.0002.1307C] # EGYPTIAN HIEROGLYPH D007
-1307D ; [.3F43.0020.0002.1307D] # EGYPTIAN HIEROGLYPH D008
-1307E ; [.3F44.0020.0002.1307E] # EGYPTIAN HIEROGLYPH D008A
-1307F ; [.3F45.0020.0002.1307F] # EGYPTIAN HIEROGLYPH D009
-13080 ; [.3F46.0020.0002.13080] # EGYPTIAN HIEROGLYPH D010
-13081 ; [.3F47.0020.0002.13081] # EGYPTIAN HIEROGLYPH D011
-13082 ; [.3F48.0020.0002.13082] # EGYPTIAN HIEROGLYPH D012
-13083 ; [.3F49.0020.0002.13083] # EGYPTIAN HIEROGLYPH D013
-13084 ; [.3F4A.0020.0002.13084] # EGYPTIAN HIEROGLYPH D014
-13085 ; [.3F4B.0020.0002.13085] # EGYPTIAN HIEROGLYPH D015
-13086 ; [.3F4C.0020.0002.13086] # EGYPTIAN HIEROGLYPH D016
-13087 ; [.3F4D.0020.0002.13087] # EGYPTIAN HIEROGLYPH D017
-13088 ; [.3F4E.0020.0002.13088] # EGYPTIAN HIEROGLYPH D018
-13089 ; [.3F4F.0020.0002.13089] # EGYPTIAN HIEROGLYPH D019
-1308A ; [.3F50.0020.0002.1308A] # EGYPTIAN HIEROGLYPH D020
-1308B ; [.3F51.0020.0002.1308B] # EGYPTIAN HIEROGLYPH D021
-1308C ; [.3F52.0020.0002.1308C] # EGYPTIAN HIEROGLYPH D022
-1308D ; [.3F53.0020.0002.1308D] # EGYPTIAN HIEROGLYPH D023
-1308E ; [.3F54.0020.0002.1308E] # EGYPTIAN HIEROGLYPH D024
-1308F ; [.3F55.0020.0002.1308F] # EGYPTIAN HIEROGLYPH D025
-13090 ; [.3F56.0020.0002.13090] # EGYPTIAN HIEROGLYPH D026
-13091 ; [.3F57.0020.0002.13091] # EGYPTIAN HIEROGLYPH D027
-13092 ; [.3F58.0020.0002.13092] # EGYPTIAN HIEROGLYPH D027A
-13093 ; [.3F59.0020.0002.13093] # EGYPTIAN HIEROGLYPH D028
-13094 ; [.3F5A.0020.0002.13094] # EGYPTIAN HIEROGLYPH D029
-13095 ; [.3F5B.0020.0002.13095] # EGYPTIAN HIEROGLYPH D030
-13096 ; [.3F5C.0020.0002.13096] # EGYPTIAN HIEROGLYPH D031
-13097 ; [.3F5D.0020.0002.13097] # EGYPTIAN HIEROGLYPH D031A
-13098 ; [.3F5E.0020.0002.13098] # EGYPTIAN HIEROGLYPH D032
-13099 ; [.3F5F.0020.0002.13099] # EGYPTIAN HIEROGLYPH D033
-1309A ; [.3F60.0020.0002.1309A] # EGYPTIAN HIEROGLYPH D034
-1309B ; [.3F61.0020.0002.1309B] # EGYPTIAN HIEROGLYPH D034A
-1309C ; [.3F62.0020.0002.1309C] # EGYPTIAN HIEROGLYPH D035
-1309D ; [.3F63.0020.0002.1309D] # EGYPTIAN HIEROGLYPH D036
-1309E ; [.3F64.0020.0002.1309E] # EGYPTIAN HIEROGLYPH D037
-1309F ; [.3F65.0020.0002.1309F] # EGYPTIAN HIEROGLYPH D038
-130A0 ; [.3F66.0020.0002.130A0] # EGYPTIAN HIEROGLYPH D039
-130A1 ; [.3F67.0020.0002.130A1] # EGYPTIAN HIEROGLYPH D040
-130A2 ; [.3F68.0020.0002.130A2] # EGYPTIAN HIEROGLYPH D041
-130A3 ; [.3F69.0020.0002.130A3] # EGYPTIAN HIEROGLYPH D042
-130A4 ; [.3F6A.0020.0002.130A4] # EGYPTIAN HIEROGLYPH D043
-130A5 ; [.3F6B.0020.0002.130A5] # EGYPTIAN HIEROGLYPH D044
-130A6 ; [.3F6C.0020.0002.130A6] # EGYPTIAN HIEROGLYPH D045
-130A7 ; [.3F6D.0020.0002.130A7] # EGYPTIAN HIEROGLYPH D046
-130A8 ; [.3F6E.0020.0002.130A8] # EGYPTIAN HIEROGLYPH D046A
-130A9 ; [.3F6F.0020.0002.130A9] # EGYPTIAN HIEROGLYPH D047
-130AA ; [.3F70.0020.0002.130AA] # EGYPTIAN HIEROGLYPH D048
-130AB ; [.3F71.0020.0002.130AB] # EGYPTIAN HIEROGLYPH D048A
-130AC ; [.3F72.0020.0002.130AC] # EGYPTIAN HIEROGLYPH D049
-130AD ; [.3F73.0020.0002.130AD] # EGYPTIAN HIEROGLYPH D050
-130AE ; [.3F74.0020.0002.130AE] # EGYPTIAN HIEROGLYPH D050A
-130AF ; [.3F75.0020.0002.130AF] # EGYPTIAN HIEROGLYPH D050B
-130B0 ; [.3F76.0020.0002.130B0] # EGYPTIAN HIEROGLYPH D050C
-130B1 ; [.3F77.0020.0002.130B1] # EGYPTIAN HIEROGLYPH D050D
-130B2 ; [.3F78.0020.0002.130B2] # EGYPTIAN HIEROGLYPH D050E
-130B3 ; [.3F79.0020.0002.130B3] # EGYPTIAN HIEROGLYPH D050F
-130B4 ; [.3F7A.0020.0002.130B4] # EGYPTIAN HIEROGLYPH D050G
-130B5 ; [.3F7B.0020.0002.130B5] # EGYPTIAN HIEROGLYPH D050H
-130B6 ; [.3F7C.0020.0002.130B6] # EGYPTIAN HIEROGLYPH D050I
-130B7 ; [.3F7D.0020.0002.130B7] # EGYPTIAN HIEROGLYPH D051
-130B8 ; [.3F7E.0020.0002.130B8] # EGYPTIAN HIEROGLYPH D052
-130B9 ; [.3F7F.0020.0002.130B9] # EGYPTIAN HIEROGLYPH D052A
-130BA ; [.3F80.0020.0002.130BA] # EGYPTIAN HIEROGLYPH D053
-130BB ; [.3F81.0020.0002.130BB] # EGYPTIAN HIEROGLYPH D054
-130BC ; [.3F82.0020.0002.130BC] # EGYPTIAN HIEROGLYPH D054A
-130BD ; [.3F83.0020.0002.130BD] # EGYPTIAN HIEROGLYPH D055
-130BE ; [.3F84.0020.0002.130BE] # EGYPTIAN HIEROGLYPH D056
-130BF ; [.3F85.0020.0002.130BF] # EGYPTIAN HIEROGLYPH D057
-130C0 ; [.3F86.0020.0002.130C0] # EGYPTIAN HIEROGLYPH D058
-130C1 ; [.3F87.0020.0002.130C1] # EGYPTIAN HIEROGLYPH D059
-130C2 ; [.3F88.0020.0002.130C2] # EGYPTIAN HIEROGLYPH D060
-130C3 ; [.3F89.0020.0002.130C3] # EGYPTIAN HIEROGLYPH D061
-130C4 ; [.3F8A.0020.0002.130C4] # EGYPTIAN HIEROGLYPH D062
-130C5 ; [.3F8B.0020.0002.130C5] # EGYPTIAN HIEROGLYPH D063
-130C6 ; [.3F8C.0020.0002.130C6] # EGYPTIAN HIEROGLYPH D064
-130C7 ; [.3F8D.0020.0002.130C7] # EGYPTIAN HIEROGLYPH D065
-130C8 ; [.3F8E.0020.0002.130C8] # EGYPTIAN HIEROGLYPH D066
-130C9 ; [.3F8F.0020.0002.130C9] # EGYPTIAN HIEROGLYPH D067
-130CA ; [.3F90.0020.0002.130CA] # EGYPTIAN HIEROGLYPH D067A
-130CB ; [.3F91.0020.0002.130CB] # EGYPTIAN HIEROGLYPH D067B
-130CC ; [.3F92.0020.0002.130CC] # EGYPTIAN HIEROGLYPH D067C
-130CD ; [.3F93.0020.0002.130CD] # EGYPTIAN HIEROGLYPH D067D
-130CE ; [.3F94.0020.0002.130CE] # EGYPTIAN HIEROGLYPH D067E
-130CF ; [.3F95.0020.0002.130CF] # EGYPTIAN HIEROGLYPH D067F
-130D0 ; [.3F96.0020.0002.130D0] # EGYPTIAN HIEROGLYPH D067G
-130D1 ; [.3F97.0020.0002.130D1] # EGYPTIAN HIEROGLYPH D067H
-130D2 ; [.3F98.0020.0002.130D2] # EGYPTIAN HIEROGLYPH E001
-130D3 ; [.3F99.0020.0002.130D3] # EGYPTIAN HIEROGLYPH E002
-130D4 ; [.3F9A.0020.0002.130D4] # EGYPTIAN HIEROGLYPH E003
-130D5 ; [.3F9B.0020.0002.130D5] # EGYPTIAN HIEROGLYPH E004
-130D6 ; [.3F9C.0020.0002.130D6] # EGYPTIAN HIEROGLYPH E005
-130D7 ; [.3F9D.0020.0002.130D7] # EGYPTIAN HIEROGLYPH E006
-130D8 ; [.3F9E.0020.0002.130D8] # EGYPTIAN HIEROGLYPH E007
-130D9 ; [.3F9F.0020.0002.130D9] # EGYPTIAN HIEROGLYPH E008
-130DA ; [.3FA0.0020.0002.130DA] # EGYPTIAN HIEROGLYPH E008A
-130DB ; [.3FA1.0020.0002.130DB] # EGYPTIAN HIEROGLYPH E009
-130DC ; [.3FA2.0020.0002.130DC] # EGYPTIAN HIEROGLYPH E009A
-130DD ; [.3FA3.0020.0002.130DD] # EGYPTIAN HIEROGLYPH E010
-130DE ; [.3FA4.0020.0002.130DE] # EGYPTIAN HIEROGLYPH E011
-130DF ; [.3FA5.0020.0002.130DF] # EGYPTIAN HIEROGLYPH E012
-130E0 ; [.3FA6.0020.0002.130E0] # EGYPTIAN HIEROGLYPH E013
-130E1 ; [.3FA7.0020.0002.130E1] # EGYPTIAN HIEROGLYPH E014
-130E2 ; [.3FA8.0020.0002.130E2] # EGYPTIAN HIEROGLYPH E015
-130E3 ; [.3FA9.0020.0002.130E3] # EGYPTIAN HIEROGLYPH E016
-130E4 ; [.3FAA.0020.0002.130E4] # EGYPTIAN HIEROGLYPH E016A
-130E5 ; [.3FAB.0020.0002.130E5] # EGYPTIAN HIEROGLYPH E017
-130E6 ; [.3FAC.0020.0002.130E6] # EGYPTIAN HIEROGLYPH E017A
-130E7 ; [.3FAD.0020.0002.130E7] # EGYPTIAN HIEROGLYPH E018
-130E8 ; [.3FAE.0020.0002.130E8] # EGYPTIAN HIEROGLYPH E019
-130E9 ; [.3FAF.0020.0002.130E9] # EGYPTIAN HIEROGLYPH E020
-130EA ; [.3FB0.0020.0002.130EA] # EGYPTIAN HIEROGLYPH E020A
-130EB ; [.3FB1.0020.0002.130EB] # EGYPTIAN HIEROGLYPH E021
-130EC ; [.3FB2.0020.0002.130EC] # EGYPTIAN HIEROGLYPH E022
-130ED ; [.3FB3.0020.0002.130ED] # EGYPTIAN HIEROGLYPH E023
-130EE ; [.3FB4.0020.0002.130EE] # EGYPTIAN HIEROGLYPH E024
-130EF ; [.3FB5.0020.0002.130EF] # EGYPTIAN HIEROGLYPH E025
-130F0 ; [.3FB6.0020.0002.130F0] # EGYPTIAN HIEROGLYPH E026
-130F1 ; [.3FB7.0020.0002.130F1] # EGYPTIAN HIEROGLYPH E027
-130F2 ; [.3FB8.0020.0002.130F2] # EGYPTIAN HIEROGLYPH E028
-130F3 ; [.3FB9.0020.0002.130F3] # EGYPTIAN HIEROGLYPH E028A
-130F4 ; [.3FBA.0020.0002.130F4] # EGYPTIAN HIEROGLYPH E029
-130F5 ; [.3FBB.0020.0002.130F5] # EGYPTIAN HIEROGLYPH E030
-130F6 ; [.3FBC.0020.0002.130F6] # EGYPTIAN HIEROGLYPH E031
-130F7 ; [.3FBD.0020.0002.130F7] # EGYPTIAN HIEROGLYPH E032
-130F8 ; [.3FBE.0020.0002.130F8] # EGYPTIAN HIEROGLYPH E033
-130F9 ; [.3FBF.0020.0002.130F9] # EGYPTIAN HIEROGLYPH E034
-130FA ; [.3FC0.0020.0002.130FA] # EGYPTIAN HIEROGLYPH E034A
-130FB ; [.3FC1.0020.0002.130FB] # EGYPTIAN HIEROGLYPH E036
-130FC ; [.3FC2.0020.0002.130FC] # EGYPTIAN HIEROGLYPH E037
-130FD ; [.3FC3.0020.0002.130FD] # EGYPTIAN HIEROGLYPH E038
-130FE ; [.3FC4.0020.0002.130FE] # EGYPTIAN HIEROGLYPH F001
-130FF ; [.3FC5.0020.0002.130FF] # EGYPTIAN HIEROGLYPH F001A
-13100 ; [.3FC6.0020.0002.13100] # EGYPTIAN HIEROGLYPH F002
-13101 ; [.3FC7.0020.0002.13101] # EGYPTIAN HIEROGLYPH F003
-13102 ; [.3FC8.0020.0002.13102] # EGYPTIAN HIEROGLYPH F004
-13103 ; [.3FC9.0020.0002.13103] # EGYPTIAN HIEROGLYPH F005
-13104 ; [.3FCA.0020.0002.13104] # EGYPTIAN HIEROGLYPH F006
-13105 ; [.3FCB.0020.0002.13105] # EGYPTIAN HIEROGLYPH F007
-13106 ; [.3FCC.0020.0002.13106] # EGYPTIAN HIEROGLYPH F008
-13107 ; [.3FCD.0020.0002.13107] # EGYPTIAN HIEROGLYPH F009
-13108 ; [.3FCE.0020.0002.13108] # EGYPTIAN HIEROGLYPH F010
-13109 ; [.3FCF.0020.0002.13109] # EGYPTIAN HIEROGLYPH F011
-1310A ; [.3FD0.0020.0002.1310A] # EGYPTIAN HIEROGLYPH F012
-1310B ; [.3FD1.0020.0002.1310B] # EGYPTIAN HIEROGLYPH F013
-1310C ; [.3FD2.0020.0002.1310C] # EGYPTIAN HIEROGLYPH F013A
-1310D ; [.3FD3.0020.0002.1310D] # EGYPTIAN HIEROGLYPH F014
-1310E ; [.3FD4.0020.0002.1310E] # EGYPTIAN HIEROGLYPH F015
-1310F ; [.3FD5.0020.0002.1310F] # EGYPTIAN HIEROGLYPH F016
-13110 ; [.3FD6.0020.0002.13110] # EGYPTIAN HIEROGLYPH F017
-13111 ; [.3FD7.0020.0002.13111] # EGYPTIAN HIEROGLYPH F018
-13112 ; [.3FD8.0020.0002.13112] # EGYPTIAN HIEROGLYPH F019
-13113 ; [.3FD9.0020.0002.13113] # EGYPTIAN HIEROGLYPH F020
-13114 ; [.3FDA.0020.0002.13114] # EGYPTIAN HIEROGLYPH F021
-13115 ; [.3FDB.0020.0002.13115] # EGYPTIAN HIEROGLYPH F021A
-13116 ; [.3FDC.0020.0002.13116] # EGYPTIAN HIEROGLYPH F022
-13117 ; [.3FDD.0020.0002.13117] # EGYPTIAN HIEROGLYPH F023
-13118 ; [.3FDE.0020.0002.13118] # EGYPTIAN HIEROGLYPH F024
-13119 ; [.3FDF.0020.0002.13119] # EGYPTIAN HIEROGLYPH F025
-1311A ; [.3FE0.0020.0002.1311A] # EGYPTIAN HIEROGLYPH F026
-1311B ; [.3FE1.0020.0002.1311B] # EGYPTIAN HIEROGLYPH F027
-1311C ; [.3FE2.0020.0002.1311C] # EGYPTIAN HIEROGLYPH F028
-1311D ; [.3FE3.0020.0002.1311D] # EGYPTIAN HIEROGLYPH F029
-1311E ; [.3FE4.0020.0002.1311E] # EGYPTIAN HIEROGLYPH F030
-1311F ; [.3FE5.0020.0002.1311F] # EGYPTIAN HIEROGLYPH F031
-13120 ; [.3FE6.0020.0002.13120] # EGYPTIAN HIEROGLYPH F031A
-13121 ; [.3FE7.0020.0002.13121] # EGYPTIAN HIEROGLYPH F032
-13122 ; [.3FE8.0020.0002.13122] # EGYPTIAN HIEROGLYPH F033
-13123 ; [.3FE9.0020.0002.13123] # EGYPTIAN HIEROGLYPH F034
-13124 ; [.3FEA.0020.0002.13124] # EGYPTIAN HIEROGLYPH F035
-13125 ; [.3FEB.0020.0002.13125] # EGYPTIAN HIEROGLYPH F036
-13126 ; [.3FEC.0020.0002.13126] # EGYPTIAN HIEROGLYPH F037
-13127 ; [.3FED.0020.0002.13127] # EGYPTIAN HIEROGLYPH F037A
-13128 ; [.3FEE.0020.0002.13128] # EGYPTIAN HIEROGLYPH F038
-13129 ; [.3FEF.0020.0002.13129] # EGYPTIAN HIEROGLYPH F038A
-1312A ; [.3FF0.0020.0002.1312A] # EGYPTIAN HIEROGLYPH F039
-1312B ; [.3FF1.0020.0002.1312B] # EGYPTIAN HIEROGLYPH F040
-1312C ; [.3FF2.0020.0002.1312C] # EGYPTIAN HIEROGLYPH F041
-1312D ; [.3FF3.0020.0002.1312D] # EGYPTIAN HIEROGLYPH F042
-1312E ; [.3FF4.0020.0002.1312E] # EGYPTIAN HIEROGLYPH F043
-1312F ; [.3FF5.0020.0002.1312F] # EGYPTIAN HIEROGLYPH F044
-13130 ; [.3FF6.0020.0002.13130] # EGYPTIAN HIEROGLYPH F045
-13131 ; [.3FF7.0020.0002.13131] # EGYPTIAN HIEROGLYPH F045A
-13132 ; [.3FF8.0020.0002.13132] # EGYPTIAN HIEROGLYPH F046
-13133 ; [.3FF9.0020.0002.13133] # EGYPTIAN HIEROGLYPH F046A
-13134 ; [.3FFA.0020.0002.13134] # EGYPTIAN HIEROGLYPH F047
-13135 ; [.3FFB.0020.0002.13135] # EGYPTIAN HIEROGLYPH F047A
-13136 ; [.3FFC.0020.0002.13136] # EGYPTIAN HIEROGLYPH F048
-13137 ; [.3FFD.0020.0002.13137] # EGYPTIAN HIEROGLYPH F049
-13138 ; [.3FFE.0020.0002.13138] # EGYPTIAN HIEROGLYPH F050
-13139 ; [.3FFF.0020.0002.13139] # EGYPTIAN HIEROGLYPH F051
-1313A ; [.4000.0020.0002.1313A] # EGYPTIAN HIEROGLYPH F051A
-1313B ; [.4001.0020.0002.1313B] # EGYPTIAN HIEROGLYPH F051B
-1313C ; [.4002.0020.0002.1313C] # EGYPTIAN HIEROGLYPH F051C
-1313D ; [.4003.0020.0002.1313D] # EGYPTIAN HIEROGLYPH F052
-1313E ; [.4004.0020.0002.1313E] # EGYPTIAN HIEROGLYPH F053
-1313F ; [.4005.0020.0002.1313F] # EGYPTIAN HIEROGLYPH G001
-13140 ; [.4006.0020.0002.13140] # EGYPTIAN HIEROGLYPH G002
-13141 ; [.4007.0020.0002.13141] # EGYPTIAN HIEROGLYPH G003
-13142 ; [.4008.0020.0002.13142] # EGYPTIAN HIEROGLYPH G004
-13143 ; [.4009.0020.0002.13143] # EGYPTIAN HIEROGLYPH G005
-13144 ; [.400A.0020.0002.13144] # EGYPTIAN HIEROGLYPH G006
-13145 ; [.400B.0020.0002.13145] # EGYPTIAN HIEROGLYPH G006A
-13146 ; [.400C.0020.0002.13146] # EGYPTIAN HIEROGLYPH G007
-13147 ; [.400D.0020.0002.13147] # EGYPTIAN HIEROGLYPH G007A
-13148 ; [.400E.0020.0002.13148] # EGYPTIAN HIEROGLYPH G007B
-13149 ; [.400F.0020.0002.13149] # EGYPTIAN HIEROGLYPH G008
-1314A ; [.4010.0020.0002.1314A] # EGYPTIAN HIEROGLYPH G009
-1314B ; [.4011.0020.0002.1314B] # EGYPTIAN HIEROGLYPH G010
-1314C ; [.4012.0020.0002.1314C] # EGYPTIAN HIEROGLYPH G011
-1314D ; [.4013.0020.0002.1314D] # EGYPTIAN HIEROGLYPH G011A
-1314E ; [.4014.0020.0002.1314E] # EGYPTIAN HIEROGLYPH G012
-1314F ; [.4015.0020.0002.1314F] # EGYPTIAN HIEROGLYPH G013
-13150 ; [.4016.0020.0002.13150] # EGYPTIAN HIEROGLYPH G014
-13151 ; [.4017.0020.0002.13151] # EGYPTIAN HIEROGLYPH G015
-13152 ; [.4018.0020.0002.13152] # EGYPTIAN HIEROGLYPH G016
-13153 ; [.4019.0020.0002.13153] # EGYPTIAN HIEROGLYPH G017
-13154 ; [.401A.0020.0002.13154] # EGYPTIAN HIEROGLYPH G018
-13155 ; [.401B.0020.0002.13155] # EGYPTIAN HIEROGLYPH G019
-13156 ; [.401C.0020.0002.13156] # EGYPTIAN HIEROGLYPH G020
-13157 ; [.401D.0020.0002.13157] # EGYPTIAN HIEROGLYPH G020A
-13158 ; [.401E.0020.0002.13158] # EGYPTIAN HIEROGLYPH G021
-13159 ; [.401F.0020.0002.13159] # EGYPTIAN HIEROGLYPH G022
-1315A ; [.4020.0020.0002.1315A] # EGYPTIAN HIEROGLYPH G023
-1315B ; [.4021.0020.0002.1315B] # EGYPTIAN HIEROGLYPH G024
-1315C ; [.4022.0020.0002.1315C] # EGYPTIAN HIEROGLYPH G025
-1315D ; [.4023.0020.0002.1315D] # EGYPTIAN HIEROGLYPH G026
-1315E ; [.4024.0020.0002.1315E] # EGYPTIAN HIEROGLYPH G026A
-1315F ; [.4025.0020.0002.1315F] # EGYPTIAN HIEROGLYPH G027
-13160 ; [.4026.0020.0002.13160] # EGYPTIAN HIEROGLYPH G028
-13161 ; [.4027.0020.0002.13161] # EGYPTIAN HIEROGLYPH G029
-13162 ; [.4028.0020.0002.13162] # EGYPTIAN HIEROGLYPH G030
-13163 ; [.4029.0020.0002.13163] # EGYPTIAN HIEROGLYPH G031
-13164 ; [.402A.0020.0002.13164] # EGYPTIAN HIEROGLYPH G032
-13165 ; [.402B.0020.0002.13165] # EGYPTIAN HIEROGLYPH G033
-13166 ; [.402C.0020.0002.13166] # EGYPTIAN HIEROGLYPH G034
-13167 ; [.402D.0020.0002.13167] # EGYPTIAN HIEROGLYPH G035
-13168 ; [.402E.0020.0002.13168] # EGYPTIAN HIEROGLYPH G036
-13169 ; [.402F.0020.0002.13169] # EGYPTIAN HIEROGLYPH G036A
-1316A ; [.4030.0020.0002.1316A] # EGYPTIAN HIEROGLYPH G037
-1316B ; [.4031.0020.0002.1316B] # EGYPTIAN HIEROGLYPH G037A
-1316C ; [.4032.0020.0002.1316C] # EGYPTIAN HIEROGLYPH G038
-1316D ; [.4033.0020.0002.1316D] # EGYPTIAN HIEROGLYPH G039
-1316E ; [.4034.0020.0002.1316E] # EGYPTIAN HIEROGLYPH G040
-1316F ; [.4035.0020.0002.1316F] # EGYPTIAN HIEROGLYPH G041
-13170 ; [.4036.0020.0002.13170] # EGYPTIAN HIEROGLYPH G042
-13171 ; [.4037.0020.0002.13171] # EGYPTIAN HIEROGLYPH G043
-13172 ; [.4038.0020.0002.13172] # EGYPTIAN HIEROGLYPH G043A
-13173 ; [.4039.0020.0002.13173] # EGYPTIAN HIEROGLYPH G044
-13174 ; [.403A.0020.0002.13174] # EGYPTIAN HIEROGLYPH G045
-13175 ; [.403B.0020.0002.13175] # EGYPTIAN HIEROGLYPH G045A
-13176 ; [.403C.0020.0002.13176] # EGYPTIAN HIEROGLYPH G046
-13177 ; [.403D.0020.0002.13177] # EGYPTIAN HIEROGLYPH G047
-13178 ; [.403E.0020.0002.13178] # EGYPTIAN HIEROGLYPH G048
-13179 ; [.403F.0020.0002.13179] # EGYPTIAN HIEROGLYPH G049
-1317A ; [.4040.0020.0002.1317A] # EGYPTIAN HIEROGLYPH G050
-1317B ; [.4041.0020.0002.1317B] # EGYPTIAN HIEROGLYPH G051
-1317C ; [.4042.0020.0002.1317C] # EGYPTIAN HIEROGLYPH G052
-1317D ; [.4043.0020.0002.1317D] # EGYPTIAN HIEROGLYPH G053
-1317E ; [.4044.0020.0002.1317E] # EGYPTIAN HIEROGLYPH G054
-1317F ; [.4045.0020.0002.1317F] # EGYPTIAN HIEROGLYPH H001
-13180 ; [.4046.0020.0002.13180] # EGYPTIAN HIEROGLYPH H002
-13181 ; [.4047.0020.0002.13181] # EGYPTIAN HIEROGLYPH H003
-13182 ; [.4048.0020.0002.13182] # EGYPTIAN HIEROGLYPH H004
-13183 ; [.4049.0020.0002.13183] # EGYPTIAN HIEROGLYPH H005
-13184 ; [.404A.0020.0002.13184] # EGYPTIAN HIEROGLYPH H006
-13185 ; [.404B.0020.0002.13185] # EGYPTIAN HIEROGLYPH H006A
-13186 ; [.404C.0020.0002.13186] # EGYPTIAN HIEROGLYPH H007
-13187 ; [.404D.0020.0002.13187] # EGYPTIAN HIEROGLYPH H008
-13188 ; [.404E.0020.0002.13188] # EGYPTIAN HIEROGLYPH I001
-13189 ; [.404F.0020.0002.13189] # EGYPTIAN HIEROGLYPH I002
-1318A ; [.4050.0020.0002.1318A] # EGYPTIAN HIEROGLYPH I003
-1318B ; [.4051.0020.0002.1318B] # EGYPTIAN HIEROGLYPH I004
-1318C ; [.4052.0020.0002.1318C] # EGYPTIAN HIEROGLYPH I005
-1318D ; [.4053.0020.0002.1318D] # EGYPTIAN HIEROGLYPH I005A
-1318E ; [.4054.0020.0002.1318E] # EGYPTIAN HIEROGLYPH I006
-1318F ; [.4055.0020.0002.1318F] # EGYPTIAN HIEROGLYPH I007
-13190 ; [.4056.0020.0002.13190] # EGYPTIAN HIEROGLYPH I008
-13191 ; [.4057.0020.0002.13191] # EGYPTIAN HIEROGLYPH I009
-13192 ; [.4058.0020.0002.13192] # EGYPTIAN HIEROGLYPH I009A
-13193 ; [.4059.0020.0002.13193] # EGYPTIAN HIEROGLYPH I010
-13194 ; [.405A.0020.0002.13194] # EGYPTIAN HIEROGLYPH I010A
-13195 ; [.405B.0020.0002.13195] # EGYPTIAN HIEROGLYPH I011
-13196 ; [.405C.0020.0002.13196] # EGYPTIAN HIEROGLYPH I011A
-13197 ; [.405D.0020.0002.13197] # EGYPTIAN HIEROGLYPH I012
-13198 ; [.405E.0020.0002.13198] # EGYPTIAN HIEROGLYPH I013
-13199 ; [.405F.0020.0002.13199] # EGYPTIAN HIEROGLYPH I014
-1319A ; [.4060.0020.0002.1319A] # EGYPTIAN HIEROGLYPH I015
-1319B ; [.4061.0020.0002.1319B] # EGYPTIAN HIEROGLYPH K001
-1319C ; [.4062.0020.0002.1319C] # EGYPTIAN HIEROGLYPH K002
-1319D ; [.4063.0020.0002.1319D] # EGYPTIAN HIEROGLYPH K003
-1319E ; [.4064.0020.0002.1319E] # EGYPTIAN HIEROGLYPH K004
-1319F ; [.4065.0020.0002.1319F] # EGYPTIAN HIEROGLYPH K005
-131A0 ; [.4066.0020.0002.131A0] # EGYPTIAN HIEROGLYPH K006
-131A1 ; [.4067.0020.0002.131A1] # EGYPTIAN HIEROGLYPH K007
-131A2 ; [.4068.0020.0002.131A2] # EGYPTIAN HIEROGLYPH K008
-131A3 ; [.4069.0020.0002.131A3] # EGYPTIAN HIEROGLYPH L001
-131A4 ; [.406A.0020.0002.131A4] # EGYPTIAN HIEROGLYPH L002
-131A5 ; [.406B.0020.0002.131A5] # EGYPTIAN HIEROGLYPH L002A
-131A6 ; [.406C.0020.0002.131A6] # EGYPTIAN HIEROGLYPH L003
-131A7 ; [.406D.0020.0002.131A7] # EGYPTIAN HIEROGLYPH L004
-131A8 ; [.406E.0020.0002.131A8] # EGYPTIAN HIEROGLYPH L005
-131A9 ; [.406F.0020.0002.131A9] # EGYPTIAN HIEROGLYPH L006
-131AA ; [.4070.0020.0002.131AA] # EGYPTIAN HIEROGLYPH L006A
-131AB ; [.4071.0020.0002.131AB] # EGYPTIAN HIEROGLYPH L007
-131AC ; [.4072.0020.0002.131AC] # EGYPTIAN HIEROGLYPH L008
-131AD ; [.4073.0020.0002.131AD] # EGYPTIAN HIEROGLYPH M001
-131AE ; [.4074.0020.0002.131AE] # EGYPTIAN HIEROGLYPH M001A
-131AF ; [.4075.0020.0002.131AF] # EGYPTIAN HIEROGLYPH M001B
-131B0 ; [.4076.0020.0002.131B0] # EGYPTIAN HIEROGLYPH M002
-131B1 ; [.4077.0020.0002.131B1] # EGYPTIAN HIEROGLYPH M003
-131B2 ; [.4078.0020.0002.131B2] # EGYPTIAN HIEROGLYPH M003A
-131B3 ; [.4079.0020.0002.131B3] # EGYPTIAN HIEROGLYPH M004
-131B4 ; [.407A.0020.0002.131B4] # EGYPTIAN HIEROGLYPH M005
-131B5 ; [.407B.0020.0002.131B5] # EGYPTIAN HIEROGLYPH M006
-131B6 ; [.407C.0020.0002.131B6] # EGYPTIAN HIEROGLYPH M007
-131B7 ; [.407D.0020.0002.131B7] # EGYPTIAN HIEROGLYPH M008
-131B8 ; [.407E.0020.0002.131B8] # EGYPTIAN HIEROGLYPH M009
-131B9 ; [.407F.0020.0002.131B9] # EGYPTIAN HIEROGLYPH M010
-131BA ; [.4080.0020.0002.131BA] # EGYPTIAN HIEROGLYPH M010A
-131BB ; [.4081.0020.0002.131BB] # EGYPTIAN HIEROGLYPH M011
-131BC ; [.4082.0020.0002.131BC] # EGYPTIAN HIEROGLYPH M012
-131BD ; [.4083.0020.0002.131BD] # EGYPTIAN HIEROGLYPH M012A
-131BE ; [.4084.0020.0002.131BE] # EGYPTIAN HIEROGLYPH M012B
-131BF ; [.4085.0020.0002.131BF] # EGYPTIAN HIEROGLYPH M012C
-131C0 ; [.4086.0020.0002.131C0] # EGYPTIAN HIEROGLYPH M012D
-131C1 ; [.4087.0020.0002.131C1] # EGYPTIAN HIEROGLYPH M012E
-131C2 ; [.4088.0020.0002.131C2] # EGYPTIAN HIEROGLYPH M012F
-131C3 ; [.4089.0020.0002.131C3] # EGYPTIAN HIEROGLYPH M012G
-131C4 ; [.408A.0020.0002.131C4] # EGYPTIAN HIEROGLYPH M012H
-131C5 ; [.408B.0020.0002.131C5] # EGYPTIAN HIEROGLYPH M013
-131C6 ; [.408C.0020.0002.131C6] # EGYPTIAN HIEROGLYPH M014
-131C7 ; [.408D.0020.0002.131C7] # EGYPTIAN HIEROGLYPH M015
-131C8 ; [.408E.0020.0002.131C8] # EGYPTIAN HIEROGLYPH M015A
-131C9 ; [.408F.0020.0002.131C9] # EGYPTIAN HIEROGLYPH M016
-131CA ; [.4090.0020.0002.131CA] # EGYPTIAN HIEROGLYPH M016A
-131CB ; [.4091.0020.0002.131CB] # EGYPTIAN HIEROGLYPH M017
-131CC ; [.4092.0020.0002.131CC] # EGYPTIAN HIEROGLYPH M017A
-131CD ; [.4093.0020.0002.131CD] # EGYPTIAN HIEROGLYPH M018
-131CE ; [.4094.0020.0002.131CE] # EGYPTIAN HIEROGLYPH M019
-131CF ; [.4095.0020.0002.131CF] # EGYPTIAN HIEROGLYPH M020
-131D0 ; [.4096.0020.0002.131D0] # EGYPTIAN HIEROGLYPH M021
-131D1 ; [.4097.0020.0002.131D1] # EGYPTIAN HIEROGLYPH M022
-131D2 ; [.4098.0020.0002.131D2] # EGYPTIAN HIEROGLYPH M022A
-131D3 ; [.4099.0020.0002.131D3] # EGYPTIAN HIEROGLYPH M023
-131D4 ; [.409A.0020.0002.131D4] # EGYPTIAN HIEROGLYPH M024
-131D5 ; [.409B.0020.0002.131D5] # EGYPTIAN HIEROGLYPH M024A
-131D6 ; [.409C.0020.0002.131D6] # EGYPTIAN HIEROGLYPH M025
-131D7 ; [.409D.0020.0002.131D7] # EGYPTIAN HIEROGLYPH M026
-131D8 ; [.409E.0020.0002.131D8] # EGYPTIAN HIEROGLYPH M027
-131D9 ; [.409F.0020.0002.131D9] # EGYPTIAN HIEROGLYPH M028
-131DA ; [.40A0.0020.0002.131DA] # EGYPTIAN HIEROGLYPH M028A
-131DB ; [.40A1.0020.0002.131DB] # EGYPTIAN HIEROGLYPH M029
-131DC ; [.40A2.0020.0002.131DC] # EGYPTIAN HIEROGLYPH M030
-131DD ; [.40A3.0020.0002.131DD] # EGYPTIAN HIEROGLYPH M031
-131DE ; [.40A4.0020.0002.131DE] # EGYPTIAN HIEROGLYPH M031A
-131DF ; [.40A5.0020.0002.131DF] # EGYPTIAN HIEROGLYPH M032
-131E0 ; [.40A6.0020.0002.131E0] # EGYPTIAN HIEROGLYPH M033
-131E1 ; [.40A7.0020.0002.131E1] # EGYPTIAN HIEROGLYPH M033A
-131E2 ; [.40A8.0020.0002.131E2] # EGYPTIAN HIEROGLYPH M033B
-131E3 ; [.40A9.0020.0002.131E3] # EGYPTIAN HIEROGLYPH M034
-131E4 ; [.40AA.0020.0002.131E4] # EGYPTIAN HIEROGLYPH M035
-131E5 ; [.40AB.0020.0002.131E5] # EGYPTIAN HIEROGLYPH M036
-131E6 ; [.40AC.0020.0002.131E6] # EGYPTIAN HIEROGLYPH M037
-131E7 ; [.40AD.0020.0002.131E7] # EGYPTIAN HIEROGLYPH M038
-131E8 ; [.40AE.0020.0002.131E8] # EGYPTIAN HIEROGLYPH M039
-131E9 ; [.40AF.0020.0002.131E9] # EGYPTIAN HIEROGLYPH M040
-131EA ; [.40B0.0020.0002.131EA] # EGYPTIAN HIEROGLYPH M040A
-131EB ; [.40B1.0020.0002.131EB] # EGYPTIAN HIEROGLYPH M041
-131EC ; [.40B2.0020.0002.131EC] # EGYPTIAN HIEROGLYPH M042
-131ED ; [.40B3.0020.0002.131ED] # EGYPTIAN HIEROGLYPH M043
-131EE ; [.40B4.0020.0002.131EE] # EGYPTIAN HIEROGLYPH M044
-131EF ; [.40B5.0020.0002.131EF] # EGYPTIAN HIEROGLYPH N001
-131F0 ; [.40B6.0020.0002.131F0] # EGYPTIAN HIEROGLYPH N002
-131F1 ; [.40B7.0020.0002.131F1] # EGYPTIAN HIEROGLYPH N003
-131F2 ; [.40B8.0020.0002.131F2] # EGYPTIAN HIEROGLYPH N004
-131F3 ; [.40B9.0020.0002.131F3] # EGYPTIAN HIEROGLYPH N005
-131F4 ; [.40BA.0020.0002.131F4] # EGYPTIAN HIEROGLYPH N006
-131F5 ; [.40BB.0020.0002.131F5] # EGYPTIAN HIEROGLYPH N007
-131F6 ; [.40BC.0020.0002.131F6] # EGYPTIAN HIEROGLYPH N008
-131F7 ; [.40BD.0020.0002.131F7] # EGYPTIAN HIEROGLYPH N009
-131F8 ; [.40BE.0020.0002.131F8] # EGYPTIAN HIEROGLYPH N010
-131F9 ; [.40BF.0020.0002.131F9] # EGYPTIAN HIEROGLYPH N011
-131FA ; [.40C0.0020.0002.131FA] # EGYPTIAN HIEROGLYPH N012
-131FB ; [.40C1.0020.0002.131FB] # EGYPTIAN HIEROGLYPH N013
-131FC ; [.40C2.0020.0002.131FC] # EGYPTIAN HIEROGLYPH N014
-131FD ; [.40C3.0020.0002.131FD] # EGYPTIAN HIEROGLYPH N015
-131FE ; [.40C4.0020.0002.131FE] # EGYPTIAN HIEROGLYPH N016
-131FF ; [.40C5.0020.0002.131FF] # EGYPTIAN HIEROGLYPH N017
-13200 ; [.40C6.0020.0002.13200] # EGYPTIAN HIEROGLYPH N018
-13201 ; [.40C7.0020.0002.13201] # EGYPTIAN HIEROGLYPH N018A
-13202 ; [.40C8.0020.0002.13202] # EGYPTIAN HIEROGLYPH N018B
-13203 ; [.40C9.0020.0002.13203] # EGYPTIAN HIEROGLYPH N019
-13204 ; [.40CA.0020.0002.13204] # EGYPTIAN HIEROGLYPH N020
-13205 ; [.40CB.0020.0002.13205] # EGYPTIAN HIEROGLYPH N021
-13206 ; [.40CC.0020.0002.13206] # EGYPTIAN HIEROGLYPH N022
-13207 ; [.40CD.0020.0002.13207] # EGYPTIAN HIEROGLYPH N023
-13208 ; [.40CE.0020.0002.13208] # EGYPTIAN HIEROGLYPH N024
-13209 ; [.40CF.0020.0002.13209] # EGYPTIAN HIEROGLYPH N025
-1320A ; [.40D0.0020.0002.1320A] # EGYPTIAN HIEROGLYPH N025A
-1320B ; [.40D1.0020.0002.1320B] # EGYPTIAN HIEROGLYPH N026
-1320C ; [.40D2.0020.0002.1320C] # EGYPTIAN HIEROGLYPH N027
-1320D ; [.40D3.0020.0002.1320D] # EGYPTIAN HIEROGLYPH N028
-1320E ; [.40D4.0020.0002.1320E] # EGYPTIAN HIEROGLYPH N029
-1320F ; [.40D5.0020.0002.1320F] # EGYPTIAN HIEROGLYPH N030
-13210 ; [.40D6.0020.0002.13210] # EGYPTIAN HIEROGLYPH N031
-13211 ; [.40D7.0020.0002.13211] # EGYPTIAN HIEROGLYPH N032
-13212 ; [.40D8.0020.0002.13212] # EGYPTIAN HIEROGLYPH N033
-13213 ; [.40D9.0020.0002.13213] # EGYPTIAN HIEROGLYPH N033A
-13214 ; [.40DA.0020.0002.13214] # EGYPTIAN HIEROGLYPH N034
-13215 ; [.40DB.0020.0002.13215] # EGYPTIAN HIEROGLYPH N034A
-13216 ; [.40DC.0020.0002.13216] # EGYPTIAN HIEROGLYPH N035
-13217 ; [.40DD.0020.0002.13217] # EGYPTIAN HIEROGLYPH N035A
-13218 ; [.40DE.0020.0002.13218] # EGYPTIAN HIEROGLYPH N036
-13219 ; [.40DF.0020.0002.13219] # EGYPTIAN HIEROGLYPH N037
-1321A ; [.40E0.0020.0002.1321A] # EGYPTIAN HIEROGLYPH N037A
-1321B ; [.40E1.0020.0002.1321B] # EGYPTIAN HIEROGLYPH N038
-1321C ; [.40E2.0020.0002.1321C] # EGYPTIAN HIEROGLYPH N039
-1321D ; [.40E3.0020.0002.1321D] # EGYPTIAN HIEROGLYPH N040
-1321E ; [.40E4.0020.0002.1321E] # EGYPTIAN HIEROGLYPH N041
-1321F ; [.40E5.0020.0002.1321F] # EGYPTIAN HIEROGLYPH N042
-13220 ; [.40E6.0020.0002.13220] # EGYPTIAN HIEROGLYPH NL001
-13221 ; [.40E7.0020.0002.13221] # EGYPTIAN HIEROGLYPH NL002
-13222 ; [.40E8.0020.0002.13222] # EGYPTIAN HIEROGLYPH NL003
-13223 ; [.40E9.0020.0002.13223] # EGYPTIAN HIEROGLYPH NL004
-13224 ; [.40EA.0020.0002.13224] # EGYPTIAN HIEROGLYPH NL005
-13225 ; [.40EB.0020.0002.13225] # EGYPTIAN HIEROGLYPH NL005A
-13226 ; [.40EC.0020.0002.13226] # EGYPTIAN HIEROGLYPH NL006
-13227 ; [.40ED.0020.0002.13227] # EGYPTIAN HIEROGLYPH NL007
-13228 ; [.40EE.0020.0002.13228] # EGYPTIAN HIEROGLYPH NL008
-13229 ; [.40EF.0020.0002.13229] # EGYPTIAN HIEROGLYPH NL009
-1322A ; [.40F0.0020.0002.1322A] # EGYPTIAN HIEROGLYPH NL010
-1322B ; [.40F1.0020.0002.1322B] # EGYPTIAN HIEROGLYPH NL011
-1322C ; [.40F2.0020.0002.1322C] # EGYPTIAN HIEROGLYPH NL012
-1322D ; [.40F3.0020.0002.1322D] # EGYPTIAN HIEROGLYPH NL013
-1322E ; [.40F4.0020.0002.1322E] # EGYPTIAN HIEROGLYPH NL014
-1322F ; [.40F5.0020.0002.1322F] # EGYPTIAN HIEROGLYPH NL015
-13230 ; [.40F6.0020.0002.13230] # EGYPTIAN HIEROGLYPH NL016
-13231 ; [.40F7.0020.0002.13231] # EGYPTIAN HIEROGLYPH NL017
-13232 ; [.40F8.0020.0002.13232] # EGYPTIAN HIEROGLYPH NL017A
-13233 ; [.40F9.0020.0002.13233] # EGYPTIAN HIEROGLYPH NL018
-13234 ; [.40FA.0020.0002.13234] # EGYPTIAN HIEROGLYPH NL019
-13235 ; [.40FB.0020.0002.13235] # EGYPTIAN HIEROGLYPH NL020
-13236 ; [.40FC.0020.0002.13236] # EGYPTIAN HIEROGLYPH NU001
-13237 ; [.40FD.0020.0002.13237] # EGYPTIAN HIEROGLYPH NU002
-13238 ; [.40FE.0020.0002.13238] # EGYPTIAN HIEROGLYPH NU003
-13239 ; [.40FF.0020.0002.13239] # EGYPTIAN HIEROGLYPH NU004
-1323A ; [.4100.0020.0002.1323A] # EGYPTIAN HIEROGLYPH NU005
-1323B ; [.4101.0020.0002.1323B] # EGYPTIAN HIEROGLYPH NU006
-1323C ; [.4102.0020.0002.1323C] # EGYPTIAN HIEROGLYPH NU007
-1323D ; [.4103.0020.0002.1323D] # EGYPTIAN HIEROGLYPH NU008
-1323E ; [.4104.0020.0002.1323E] # EGYPTIAN HIEROGLYPH NU009
-1323F ; [.4105.0020.0002.1323F] # EGYPTIAN HIEROGLYPH NU010
-13240 ; [.4106.0020.0002.13240] # EGYPTIAN HIEROGLYPH NU010A
-13241 ; [.4107.0020.0002.13241] # EGYPTIAN HIEROGLYPH NU011
-13242 ; [.4108.0020.0002.13242] # EGYPTIAN HIEROGLYPH NU011A
-13243 ; [.4109.0020.0002.13243] # EGYPTIAN HIEROGLYPH NU012
-13244 ; [.410A.0020.0002.13244] # EGYPTIAN HIEROGLYPH NU013
-13245 ; [.410B.0020.0002.13245] # EGYPTIAN HIEROGLYPH NU014
-13246 ; [.410C.0020.0002.13246] # EGYPTIAN HIEROGLYPH NU015
-13247 ; [.410D.0020.0002.13247] # EGYPTIAN HIEROGLYPH NU016
-13248 ; [.410E.0020.0002.13248] # EGYPTIAN HIEROGLYPH NU017
-13249 ; [.410F.0020.0002.13249] # EGYPTIAN HIEROGLYPH NU018
-1324A ; [.4110.0020.0002.1324A] # EGYPTIAN HIEROGLYPH NU018A
-1324B ; [.4111.0020.0002.1324B] # EGYPTIAN HIEROGLYPH NU019
-1324C ; [.4112.0020.0002.1324C] # EGYPTIAN HIEROGLYPH NU020
-1324D ; [.4113.0020.0002.1324D] # EGYPTIAN HIEROGLYPH NU021
-1324E ; [.4114.0020.0002.1324E] # EGYPTIAN HIEROGLYPH NU022
-1324F ; [.4115.0020.0002.1324F] # EGYPTIAN HIEROGLYPH NU022A
-13250 ; [.4116.0020.0002.13250] # EGYPTIAN HIEROGLYPH O001
-13251 ; [.4117.0020.0002.13251] # EGYPTIAN HIEROGLYPH O001A
-13252 ; [.4118.0020.0002.13252] # EGYPTIAN HIEROGLYPH O002
-13253 ; [.4119.0020.0002.13253] # EGYPTIAN HIEROGLYPH O003
-13254 ; [.411A.0020.0002.13254] # EGYPTIAN HIEROGLYPH O004
-13255 ; [.411B.0020.0002.13255] # EGYPTIAN HIEROGLYPH O005
-13256 ; [.411C.0020.0002.13256] # EGYPTIAN HIEROGLYPH O005A
-13257 ; [.411D.0020.0002.13257] # EGYPTIAN HIEROGLYPH O006
-13258 ; [.411E.0020.0002.13258] # EGYPTIAN HIEROGLYPH O006A
-13259 ; [.411F.0020.0002.13259] # EGYPTIAN HIEROGLYPH O006B
-1325A ; [.4120.0020.0002.1325A] # EGYPTIAN HIEROGLYPH O006C
-1325B ; [.4121.0020.0002.1325B] # EGYPTIAN HIEROGLYPH O006D
-1325C ; [.4122.0020.0002.1325C] # EGYPTIAN HIEROGLYPH O006E
-1325D ; [.4123.0020.0002.1325D] # EGYPTIAN HIEROGLYPH O006F
-1325E ; [.4124.0020.0002.1325E] # EGYPTIAN HIEROGLYPH O007
-1325F ; [.4125.0020.0002.1325F] # EGYPTIAN HIEROGLYPH O008
-13260 ; [.4126.0020.0002.13260] # EGYPTIAN HIEROGLYPH O009
-13261 ; [.4127.0020.0002.13261] # EGYPTIAN HIEROGLYPH O010
-13262 ; [.4128.0020.0002.13262] # EGYPTIAN HIEROGLYPH O010A
-13263 ; [.4129.0020.0002.13263] # EGYPTIAN HIEROGLYPH O010B
-13264 ; [.412A.0020.0002.13264] # EGYPTIAN HIEROGLYPH O010C
-13265 ; [.412B.0020.0002.13265] # EGYPTIAN HIEROGLYPH O011
-13266 ; [.412C.0020.0002.13266] # EGYPTIAN HIEROGLYPH O012
-13267 ; [.412D.0020.0002.13267] # EGYPTIAN HIEROGLYPH O013
-13268 ; [.412E.0020.0002.13268] # EGYPTIAN HIEROGLYPH O014
-13269 ; [.412F.0020.0002.13269] # EGYPTIAN HIEROGLYPH O015
-1326A ; [.4130.0020.0002.1326A] # EGYPTIAN HIEROGLYPH O016
-1326B ; [.4131.0020.0002.1326B] # EGYPTIAN HIEROGLYPH O017
-1326C ; [.4132.0020.0002.1326C] # EGYPTIAN HIEROGLYPH O018
-1326D ; [.4133.0020.0002.1326D] # EGYPTIAN HIEROGLYPH O019
-1326E ; [.4134.0020.0002.1326E] # EGYPTIAN HIEROGLYPH O019A
-1326F ; [.4135.0020.0002.1326F] # EGYPTIAN HIEROGLYPH O020
-13270 ; [.4136.0020.0002.13270] # EGYPTIAN HIEROGLYPH O020A
-13271 ; [.4137.0020.0002.13271] # EGYPTIAN HIEROGLYPH O021
-13272 ; [.4138.0020.0002.13272] # EGYPTIAN HIEROGLYPH O022
-13273 ; [.4139.0020.0002.13273] # EGYPTIAN HIEROGLYPH O023
-13274 ; [.413A.0020.0002.13274] # EGYPTIAN HIEROGLYPH O024
-13275 ; [.413B.0020.0002.13275] # EGYPTIAN HIEROGLYPH O024A
-13276 ; [.413C.0020.0002.13276] # EGYPTIAN HIEROGLYPH O025
-13277 ; [.413D.0020.0002.13277] # EGYPTIAN HIEROGLYPH O025A
-13278 ; [.413E.0020.0002.13278] # EGYPTIAN HIEROGLYPH O026
-13279 ; [.413F.0020.0002.13279] # EGYPTIAN HIEROGLYPH O027
-1327A ; [.4140.0020.0002.1327A] # EGYPTIAN HIEROGLYPH O028
-1327B ; [.4141.0020.0002.1327B] # EGYPTIAN HIEROGLYPH O029
-1327C ; [.4142.0020.0002.1327C] # EGYPTIAN HIEROGLYPH O029A
-1327D ; [.4143.0020.0002.1327D] # EGYPTIAN HIEROGLYPH O030
-1327E ; [.4144.0020.0002.1327E] # EGYPTIAN HIEROGLYPH O030A
-1327F ; [.4145.0020.0002.1327F] # EGYPTIAN HIEROGLYPH O031
-13280 ; [.4146.0020.0002.13280] # EGYPTIAN HIEROGLYPH O032
-13281 ; [.4147.0020.0002.13281] # EGYPTIAN HIEROGLYPH O033
-13282 ; [.4148.0020.0002.13282] # EGYPTIAN HIEROGLYPH O033A
-13283 ; [.4149.0020.0002.13283] # EGYPTIAN HIEROGLYPH O034
-13284 ; [.414A.0020.0002.13284] # EGYPTIAN HIEROGLYPH O035
-13285 ; [.414B.0020.0002.13285] # EGYPTIAN HIEROGLYPH O036
-13286 ; [.414C.0020.0002.13286] # EGYPTIAN HIEROGLYPH O036A
-13287 ; [.414D.0020.0002.13287] # EGYPTIAN HIEROGLYPH O036B
-13288 ; [.414E.0020.0002.13288] # EGYPTIAN HIEROGLYPH O036C
-13289 ; [.414F.0020.0002.13289] # EGYPTIAN HIEROGLYPH O036D
-1328A ; [.4150.0020.0002.1328A] # EGYPTIAN HIEROGLYPH O037
-1328B ; [.4151.0020.0002.1328B] # EGYPTIAN HIEROGLYPH O038
-1328C ; [.4152.0020.0002.1328C] # EGYPTIAN HIEROGLYPH O039
-1328D ; [.4153.0020.0002.1328D] # EGYPTIAN HIEROGLYPH O040
-1328E ; [.4154.0020.0002.1328E] # EGYPTIAN HIEROGLYPH O041
-1328F ; [.4155.0020.0002.1328F] # EGYPTIAN HIEROGLYPH O042
-13290 ; [.4156.0020.0002.13290] # EGYPTIAN HIEROGLYPH O043
-13291 ; [.4157.0020.0002.13291] # EGYPTIAN HIEROGLYPH O044
-13292 ; [.4158.0020.0002.13292] # EGYPTIAN HIEROGLYPH O045
-13293 ; [.4159.0020.0002.13293] # EGYPTIAN HIEROGLYPH O046
-13294 ; [.415A.0020.0002.13294] # EGYPTIAN HIEROGLYPH O047
-13295 ; [.415B.0020.0002.13295] # EGYPTIAN HIEROGLYPH O048
-13296 ; [.415C.0020.0002.13296] # EGYPTIAN HIEROGLYPH O049
-13297 ; [.415D.0020.0002.13297] # EGYPTIAN HIEROGLYPH O050
-13298 ; [.415E.0020.0002.13298] # EGYPTIAN HIEROGLYPH O050A
-13299 ; [.415F.0020.0002.13299] # EGYPTIAN HIEROGLYPH O050B
-1329A ; [.4160.0020.0002.1329A] # EGYPTIAN HIEROGLYPH O051
-1329B ; [.4161.0020.0002.1329B] # EGYPTIAN HIEROGLYPH P001
-1329C ; [.4162.0020.0002.1329C] # EGYPTIAN HIEROGLYPH P001A
-1329D ; [.4163.0020.0002.1329D] # EGYPTIAN HIEROGLYPH P002
-1329E ; [.4164.0020.0002.1329E] # EGYPTIAN HIEROGLYPH P003
-1329F ; [.4165.0020.0002.1329F] # EGYPTIAN HIEROGLYPH P003A
-132A0 ; [.4166.0020.0002.132A0] # EGYPTIAN HIEROGLYPH P004
-132A1 ; [.4167.0020.0002.132A1] # EGYPTIAN HIEROGLYPH P005
-132A2 ; [.4168.0020.0002.132A2] # EGYPTIAN HIEROGLYPH P006
-132A3 ; [.4169.0020.0002.132A3] # EGYPTIAN HIEROGLYPH P007
-132A4 ; [.416A.0020.0002.132A4] # EGYPTIAN HIEROGLYPH P008
-132A5 ; [.416B.0020.0002.132A5] # EGYPTIAN HIEROGLYPH P009
-132A6 ; [.416C.0020.0002.132A6] # EGYPTIAN HIEROGLYPH P010
-132A7 ; [.416D.0020.0002.132A7] # EGYPTIAN HIEROGLYPH P011
-132A8 ; [.416E.0020.0002.132A8] # EGYPTIAN HIEROGLYPH Q001
-132A9 ; [.416F.0020.0002.132A9] # EGYPTIAN HIEROGLYPH Q002
-132AA ; [.4170.0020.0002.132AA] # EGYPTIAN HIEROGLYPH Q003
-132AB ; [.4171.0020.0002.132AB] # EGYPTIAN HIEROGLYPH Q004
-132AC ; [.4172.0020.0002.132AC] # EGYPTIAN HIEROGLYPH Q005
-132AD ; [.4173.0020.0002.132AD] # EGYPTIAN HIEROGLYPH Q006
-132AE ; [.4174.0020.0002.132AE] # EGYPTIAN HIEROGLYPH Q007
-132AF ; [.4175.0020.0002.132AF] # EGYPTIAN HIEROGLYPH R001
-132B0 ; [.4176.0020.0002.132B0] # EGYPTIAN HIEROGLYPH R002
-132B1 ; [.4177.0020.0002.132B1] # EGYPTIAN HIEROGLYPH R002A
-132B2 ; [.4178.0020.0002.132B2] # EGYPTIAN HIEROGLYPH R003
-132B3 ; [.4179.0020.0002.132B3] # EGYPTIAN HIEROGLYPH R003A
-132B4 ; [.417A.0020.0002.132B4] # EGYPTIAN HIEROGLYPH R003B
-132B5 ; [.417B.0020.0002.132B5] # EGYPTIAN HIEROGLYPH R004
-132B6 ; [.417C.0020.0002.132B6] # EGYPTIAN HIEROGLYPH R005
-132B7 ; [.417D.0020.0002.132B7] # EGYPTIAN HIEROGLYPH R006
-132B8 ; [.417E.0020.0002.132B8] # EGYPTIAN HIEROGLYPH R007
-132B9 ; [.417F.0020.0002.132B9] # EGYPTIAN HIEROGLYPH R008
-132BA ; [.4180.0020.0002.132BA] # EGYPTIAN HIEROGLYPH R009
-132BB ; [.4181.0020.0002.132BB] # EGYPTIAN HIEROGLYPH R010
-132BC ; [.4182.0020.0002.132BC] # EGYPTIAN HIEROGLYPH R010A
-132BD ; [.4183.0020.0002.132BD] # EGYPTIAN HIEROGLYPH R011
-132BE ; [.4184.0020.0002.132BE] # EGYPTIAN HIEROGLYPH R012
-132BF ; [.4185.0020.0002.132BF] # EGYPTIAN HIEROGLYPH R013
-132C0 ; [.4186.0020.0002.132C0] # EGYPTIAN HIEROGLYPH R014
-132C1 ; [.4187.0020.0002.132C1] # EGYPTIAN HIEROGLYPH R015
-132C2 ; [.4188.0020.0002.132C2] # EGYPTIAN HIEROGLYPH R016
-132C3 ; [.4189.0020.0002.132C3] # EGYPTIAN HIEROGLYPH R016A
-132C4 ; [.418A.0020.0002.132C4] # EGYPTIAN HIEROGLYPH R017
-132C5 ; [.418B.0020.0002.132C5] # EGYPTIAN HIEROGLYPH R018
-132C6 ; [.418C.0020.0002.132C6] # EGYPTIAN HIEROGLYPH R019
-132C7 ; [.418D.0020.0002.132C7] # EGYPTIAN HIEROGLYPH R020
-132C8 ; [.418E.0020.0002.132C8] # EGYPTIAN HIEROGLYPH R021
-132C9 ; [.418F.0020.0002.132C9] # EGYPTIAN HIEROGLYPH R022
-132CA ; [.4190.0020.0002.132CA] # EGYPTIAN HIEROGLYPH R023
-132CB ; [.4191.0020.0002.132CB] # EGYPTIAN HIEROGLYPH R024
-132CC ; [.4192.0020.0002.132CC] # EGYPTIAN HIEROGLYPH R025
-132CD ; [.4193.0020.0002.132CD] # EGYPTIAN HIEROGLYPH R026
-132CE ; [.4194.0020.0002.132CE] # EGYPTIAN HIEROGLYPH R027
-132CF ; [.4195.0020.0002.132CF] # EGYPTIAN HIEROGLYPH R028
-132D0 ; [.4196.0020.0002.132D0] # EGYPTIAN HIEROGLYPH R029
-132D1 ; [.4197.0020.0002.132D1] # EGYPTIAN HIEROGLYPH S001
-132D2 ; [.4198.0020.0002.132D2] # EGYPTIAN HIEROGLYPH S002
-132D3 ; [.4199.0020.0002.132D3] # EGYPTIAN HIEROGLYPH S002A
-132D4 ; [.419A.0020.0002.132D4] # EGYPTIAN HIEROGLYPH S003
-132D5 ; [.419B.0020.0002.132D5] # EGYPTIAN HIEROGLYPH S004
-132D6 ; [.419C.0020.0002.132D6] # EGYPTIAN HIEROGLYPH S005
-132D7 ; [.419D.0020.0002.132D7] # EGYPTIAN HIEROGLYPH S006
-132D8 ; [.419E.0020.0002.132D8] # EGYPTIAN HIEROGLYPH S006A
-132D9 ; [.419F.0020.0002.132D9] # EGYPTIAN HIEROGLYPH S007
-132DA ; [.41A0.0020.0002.132DA] # EGYPTIAN HIEROGLYPH S008
-132DB ; [.41A1.0020.0002.132DB] # EGYPTIAN HIEROGLYPH S009
-132DC ; [.41A2.0020.0002.132DC] # EGYPTIAN HIEROGLYPH S010
-132DD ; [.41A3.0020.0002.132DD] # EGYPTIAN HIEROGLYPH S011
-132DE ; [.41A4.0020.0002.132DE] # EGYPTIAN HIEROGLYPH S012
-132DF ; [.41A5.0020.0002.132DF] # EGYPTIAN HIEROGLYPH S013
-132E0 ; [.41A6.0020.0002.132E0] # EGYPTIAN HIEROGLYPH S014
-132E1 ; [.41A7.0020.0002.132E1] # EGYPTIAN HIEROGLYPH S014A
-132E2 ; [.41A8.0020.0002.132E2] # EGYPTIAN HIEROGLYPH S014B
-132E3 ; [.41A9.0020.0002.132E3] # EGYPTIAN HIEROGLYPH S015
-132E4 ; [.41AA.0020.0002.132E4] # EGYPTIAN HIEROGLYPH S016
-132E5 ; [.41AB.0020.0002.132E5] # EGYPTIAN HIEROGLYPH S017
-132E6 ; [.41AC.0020.0002.132E6] # EGYPTIAN HIEROGLYPH S017A
-132E7 ; [.41AD.0020.0002.132E7] # EGYPTIAN HIEROGLYPH S018
-132E8 ; [.41AE.0020.0002.132E8] # EGYPTIAN HIEROGLYPH S019
-132E9 ; [.41AF.0020.0002.132E9] # EGYPTIAN HIEROGLYPH S020
-132EA ; [.41B0.0020.0002.132EA] # EGYPTIAN HIEROGLYPH S021
-132EB ; [.41B1.0020.0002.132EB] # EGYPTIAN HIEROGLYPH S022
-132EC ; [.41B2.0020.0002.132EC] # EGYPTIAN HIEROGLYPH S023
-132ED ; [.41B3.0020.0002.132ED] # EGYPTIAN HIEROGLYPH S024
-132EE ; [.41B4.0020.0002.132EE] # EGYPTIAN HIEROGLYPH S025
-132EF ; [.41B5.0020.0002.132EF] # EGYPTIAN HIEROGLYPH S026
-132F0 ; [.41B6.0020.0002.132F0] # EGYPTIAN HIEROGLYPH S026A
-132F1 ; [.41B7.0020.0002.132F1] # EGYPTIAN HIEROGLYPH S026B
-132F2 ; [.41B8.0020.0002.132F2] # EGYPTIAN HIEROGLYPH S027
-132F3 ; [.41B9.0020.0002.132F3] # EGYPTIAN HIEROGLYPH S028
-132F4 ; [.41BA.0020.0002.132F4] # EGYPTIAN HIEROGLYPH S029
-132F5 ; [.41BB.0020.0002.132F5] # EGYPTIAN HIEROGLYPH S030
-132F6 ; [.41BC.0020.0002.132F6] # EGYPTIAN HIEROGLYPH S031
-132F7 ; [.41BD.0020.0002.132F7] # EGYPTIAN HIEROGLYPH S032
-132F8 ; [.41BE.0020.0002.132F8] # EGYPTIAN HIEROGLYPH S033
-132F9 ; [.41BF.0020.0002.132F9] # EGYPTIAN HIEROGLYPH S034
-132FA ; [.41C0.0020.0002.132FA] # EGYPTIAN HIEROGLYPH S035
-132FB ; [.41C1.0020.0002.132FB] # EGYPTIAN HIEROGLYPH S035A
-132FC ; [.41C2.0020.0002.132FC] # EGYPTIAN HIEROGLYPH S036
-132FD ; [.41C3.0020.0002.132FD] # EGYPTIAN HIEROGLYPH S037
-132FE ; [.41C4.0020.0002.132FE] # EGYPTIAN HIEROGLYPH S038
-132FF ; [.41C5.0020.0002.132FF] # EGYPTIAN HIEROGLYPH S039
-13300 ; [.41C6.0020.0002.13300] # EGYPTIAN HIEROGLYPH S040
-13301 ; [.41C7.0020.0002.13301] # EGYPTIAN HIEROGLYPH S041
-13302 ; [.41C8.0020.0002.13302] # EGYPTIAN HIEROGLYPH S042
-13303 ; [.41C9.0020.0002.13303] # EGYPTIAN HIEROGLYPH S043
-13304 ; [.41CA.0020.0002.13304] # EGYPTIAN HIEROGLYPH S044
-13305 ; [.41CB.0020.0002.13305] # EGYPTIAN HIEROGLYPH S045
-13306 ; [.41CC.0020.0002.13306] # EGYPTIAN HIEROGLYPH S046
-13307 ; [.41CD.0020.0002.13307] # EGYPTIAN HIEROGLYPH T001
-13308 ; [.41CE.0020.0002.13308] # EGYPTIAN HIEROGLYPH T002
-13309 ; [.41CF.0020.0002.13309] # EGYPTIAN HIEROGLYPH T003
-1330A ; [.41D0.0020.0002.1330A] # EGYPTIAN HIEROGLYPH T003A
-1330B ; [.41D1.0020.0002.1330B] # EGYPTIAN HIEROGLYPH T004
-1330C ; [.41D2.0020.0002.1330C] # EGYPTIAN HIEROGLYPH T005
-1330D ; [.41D3.0020.0002.1330D] # EGYPTIAN HIEROGLYPH T006
-1330E ; [.41D4.0020.0002.1330E] # EGYPTIAN HIEROGLYPH T007
-1330F ; [.41D5.0020.0002.1330F] # EGYPTIAN HIEROGLYPH T007A
-13310 ; [.41D6.0020.0002.13310] # EGYPTIAN HIEROGLYPH T008
-13311 ; [.41D7.0020.0002.13311] # EGYPTIAN HIEROGLYPH T008A
-13312 ; [.41D8.0020.0002.13312] # EGYPTIAN HIEROGLYPH T009
-13313 ; [.41D9.0020.0002.13313] # EGYPTIAN HIEROGLYPH T009A
-13314 ; [.41DA.0020.0002.13314] # EGYPTIAN HIEROGLYPH T010
-13315 ; [.41DB.0020.0002.13315] # EGYPTIAN HIEROGLYPH T011
-13316 ; [.41DC.0020.0002.13316] # EGYPTIAN HIEROGLYPH T011A
-13317 ; [.41DD.0020.0002.13317] # EGYPTIAN HIEROGLYPH T012
-13318 ; [.41DE.0020.0002.13318] # EGYPTIAN HIEROGLYPH T013
-13319 ; [.41DF.0020.0002.13319] # EGYPTIAN HIEROGLYPH T014
-1331A ; [.41E0.0020.0002.1331A] # EGYPTIAN HIEROGLYPH T015
-1331B ; [.41E1.0020.0002.1331B] # EGYPTIAN HIEROGLYPH T016
-1331C ; [.41E2.0020.0002.1331C] # EGYPTIAN HIEROGLYPH T016A
-1331D ; [.41E3.0020.0002.1331D] # EGYPTIAN HIEROGLYPH T017
-1331E ; [.41E4.0020.0002.1331E] # EGYPTIAN HIEROGLYPH T018
-1331F ; [.41E5.0020.0002.1331F] # EGYPTIAN HIEROGLYPH T019
-13320 ; [.41E6.0020.0002.13320] # EGYPTIAN HIEROGLYPH T020
-13321 ; [.41E7.0020.0002.13321] # EGYPTIAN HIEROGLYPH T021
-13322 ; [.41E8.0020.0002.13322] # EGYPTIAN HIEROGLYPH T022
-13323 ; [.41E9.0020.0002.13323] # EGYPTIAN HIEROGLYPH T023
-13324 ; [.41EA.0020.0002.13324] # EGYPTIAN HIEROGLYPH T024
-13325 ; [.41EB.0020.0002.13325] # EGYPTIAN HIEROGLYPH T025
-13326 ; [.41EC.0020.0002.13326] # EGYPTIAN HIEROGLYPH T026
-13327 ; [.41ED.0020.0002.13327] # EGYPTIAN HIEROGLYPH T027
-13328 ; [.41EE.0020.0002.13328] # EGYPTIAN HIEROGLYPH T028
-13329 ; [.41EF.0020.0002.13329] # EGYPTIAN HIEROGLYPH T029
-1332A ; [.41F0.0020.0002.1332A] # EGYPTIAN HIEROGLYPH T030
-1332B ; [.41F1.0020.0002.1332B] # EGYPTIAN HIEROGLYPH T031
-1332C ; [.41F2.0020.0002.1332C] # EGYPTIAN HIEROGLYPH T032
-1332D ; [.41F3.0020.0002.1332D] # EGYPTIAN HIEROGLYPH T032A
-1332E ; [.41F4.0020.0002.1332E] # EGYPTIAN HIEROGLYPH T033
-1332F ; [.41F5.0020.0002.1332F] # EGYPTIAN HIEROGLYPH T033A
-13330 ; [.41F6.0020.0002.13330] # EGYPTIAN HIEROGLYPH T034
-13331 ; [.41F7.0020.0002.13331] # EGYPTIAN HIEROGLYPH T035
-13332 ; [.41F8.0020.0002.13332] # EGYPTIAN HIEROGLYPH T036
-13333 ; [.41F9.0020.0002.13333] # EGYPTIAN HIEROGLYPH U001
-13334 ; [.41FA.0020.0002.13334] # EGYPTIAN HIEROGLYPH U002
-13335 ; [.41FB.0020.0002.13335] # EGYPTIAN HIEROGLYPH U003
-13336 ; [.41FC.0020.0002.13336] # EGYPTIAN HIEROGLYPH U004
-13337 ; [.41FD.0020.0002.13337] # EGYPTIAN HIEROGLYPH U005
-13338 ; [.41FE.0020.0002.13338] # EGYPTIAN HIEROGLYPH U006
-13339 ; [.41FF.0020.0002.13339] # EGYPTIAN HIEROGLYPH U006A
-1333A ; [.4200.0020.0002.1333A] # EGYPTIAN HIEROGLYPH U006B
-1333B ; [.4201.0020.0002.1333B] # EGYPTIAN HIEROGLYPH U007
-1333C ; [.4202.0020.0002.1333C] # EGYPTIAN HIEROGLYPH U008
-1333D ; [.4203.0020.0002.1333D] # EGYPTIAN HIEROGLYPH U009
-1333E ; [.4204.0020.0002.1333E] # EGYPTIAN HIEROGLYPH U010
-1333F ; [.4205.0020.0002.1333F] # EGYPTIAN HIEROGLYPH U011
-13340 ; [.4206.0020.0002.13340] # EGYPTIAN HIEROGLYPH U012
-13341 ; [.4207.0020.0002.13341] # EGYPTIAN HIEROGLYPH U013
-13342 ; [.4208.0020.0002.13342] # EGYPTIAN HIEROGLYPH U014
-13343 ; [.4209.0020.0002.13343] # EGYPTIAN HIEROGLYPH U015
-13344 ; [.420A.0020.0002.13344] # EGYPTIAN HIEROGLYPH U016
-13345 ; [.420B.0020.0002.13345] # EGYPTIAN HIEROGLYPH U017
-13346 ; [.420C.0020.0002.13346] # EGYPTIAN HIEROGLYPH U018
-13347 ; [.420D.0020.0002.13347] # EGYPTIAN HIEROGLYPH U019
-13348 ; [.420E.0020.0002.13348] # EGYPTIAN HIEROGLYPH U020
-13349 ; [.420F.0020.0002.13349] # EGYPTIAN HIEROGLYPH U021
-1334A ; [.4210.0020.0002.1334A] # EGYPTIAN HIEROGLYPH U022
-1334B ; [.4211.0020.0002.1334B] # EGYPTIAN HIEROGLYPH U023
-1334C ; [.4212.0020.0002.1334C] # EGYPTIAN HIEROGLYPH U023A
-1334D ; [.4213.0020.0002.1334D] # EGYPTIAN HIEROGLYPH U024
-1334E ; [.4214.0020.0002.1334E] # EGYPTIAN HIEROGLYPH U025
-1334F ; [.4215.0020.0002.1334F] # EGYPTIAN HIEROGLYPH U026
-13350 ; [.4216.0020.0002.13350] # EGYPTIAN HIEROGLYPH U027
-13351 ; [.4217.0020.0002.13351] # EGYPTIAN HIEROGLYPH U028
-13352 ; [.4218.0020.0002.13352] # EGYPTIAN HIEROGLYPH U029
-13353 ; [.4219.0020.0002.13353] # EGYPTIAN HIEROGLYPH U029A
-13354 ; [.421A.0020.0002.13354] # EGYPTIAN HIEROGLYPH U030
-13355 ; [.421B.0020.0002.13355] # EGYPTIAN HIEROGLYPH U031
-13356 ; [.421C.0020.0002.13356] # EGYPTIAN HIEROGLYPH U032
-13357 ; [.421D.0020.0002.13357] # EGYPTIAN HIEROGLYPH U032A
-13358 ; [.421E.0020.0002.13358] # EGYPTIAN HIEROGLYPH U033
-13359 ; [.421F.0020.0002.13359] # EGYPTIAN HIEROGLYPH U034
-1335A ; [.4220.0020.0002.1335A] # EGYPTIAN HIEROGLYPH U035
-1335B ; [.4221.0020.0002.1335B] # EGYPTIAN HIEROGLYPH U036
-1335C ; [.4222.0020.0002.1335C] # EGYPTIAN HIEROGLYPH U037
-1335D ; [.4223.0020.0002.1335D] # EGYPTIAN HIEROGLYPH U038
-1335E ; [.4224.0020.0002.1335E] # EGYPTIAN HIEROGLYPH U039
-1335F ; [.4225.0020.0002.1335F] # EGYPTIAN HIEROGLYPH U040
-13360 ; [.4226.0020.0002.13360] # EGYPTIAN HIEROGLYPH U041
-13361 ; [.4227.0020.0002.13361] # EGYPTIAN HIEROGLYPH U042
-13362 ; [.4228.0020.0002.13362] # EGYPTIAN HIEROGLYPH V001
-13363 ; [.4229.0020.0002.13363] # EGYPTIAN HIEROGLYPH V001A
-13364 ; [.422A.0020.0002.13364] # EGYPTIAN HIEROGLYPH V001B
-13365 ; [.422B.0020.0002.13365] # EGYPTIAN HIEROGLYPH V001C
-13366 ; [.422C.0020.0002.13366] # EGYPTIAN HIEROGLYPH V001D
-13367 ; [.422D.0020.0002.13367] # EGYPTIAN HIEROGLYPH V001E
-13368 ; [.422E.0020.0002.13368] # EGYPTIAN HIEROGLYPH V001F
-13369 ; [.422F.0020.0002.13369] # EGYPTIAN HIEROGLYPH V001G
-1336A ; [.4230.0020.0002.1336A] # EGYPTIAN HIEROGLYPH V001H
-1336B ; [.4231.0020.0002.1336B] # EGYPTIAN HIEROGLYPH V001I
-1336C ; [.4232.0020.0002.1336C] # EGYPTIAN HIEROGLYPH V002
-1336D ; [.4233.0020.0002.1336D] # EGYPTIAN HIEROGLYPH V002A
-1336E ; [.4234.0020.0002.1336E] # EGYPTIAN HIEROGLYPH V003
-1336F ; [.4235.0020.0002.1336F] # EGYPTIAN HIEROGLYPH V004
-13370 ; [.4236.0020.0002.13370] # EGYPTIAN HIEROGLYPH V005
-13371 ; [.4237.0020.0002.13371] # EGYPTIAN HIEROGLYPH V006
-13372 ; [.4238.0020.0002.13372] # EGYPTIAN HIEROGLYPH V007
-13373 ; [.4239.0020.0002.13373] # EGYPTIAN HIEROGLYPH V007A
-13374 ; [.423A.0020.0002.13374] # EGYPTIAN HIEROGLYPH V007B
-13375 ; [.423B.0020.0002.13375] # EGYPTIAN HIEROGLYPH V008
-13376 ; [.423C.0020.0002.13376] # EGYPTIAN HIEROGLYPH V009
-13377 ; [.423D.0020.0002.13377] # EGYPTIAN HIEROGLYPH V010
-13378 ; [.423E.0020.0002.13378] # EGYPTIAN HIEROGLYPH V011
-13379 ; [.423F.0020.0002.13379] # EGYPTIAN HIEROGLYPH V011A
-1337A ; [.4240.0020.0002.1337A] # EGYPTIAN HIEROGLYPH V011B
-1337B ; [.4241.0020.0002.1337B] # EGYPTIAN HIEROGLYPH V011C
-1337C ; [.4242.0020.0002.1337C] # EGYPTIAN HIEROGLYPH V012
-1337D ; [.4243.0020.0002.1337D] # EGYPTIAN HIEROGLYPH V012A
-1337E ; [.4244.0020.0002.1337E] # EGYPTIAN HIEROGLYPH V012B
-1337F ; [.4245.0020.0002.1337F] # EGYPTIAN HIEROGLYPH V013
-13380 ; [.4246.0020.0002.13380] # EGYPTIAN HIEROGLYPH V014
-13381 ; [.4247.0020.0002.13381] # EGYPTIAN HIEROGLYPH V015
-13382 ; [.4248.0020.0002.13382] # EGYPTIAN HIEROGLYPH V016
-13383 ; [.4249.0020.0002.13383] # EGYPTIAN HIEROGLYPH V017
-13384 ; [.424A.0020.0002.13384] # EGYPTIAN HIEROGLYPH V018
-13385 ; [.424B.0020.0002.13385] # EGYPTIAN HIEROGLYPH V019
-13386 ; [.424C.0020.0002.13386] # EGYPTIAN HIEROGLYPH V020
-13387 ; [.424D.0020.0002.13387] # EGYPTIAN HIEROGLYPH V020A
-13388 ; [.424E.0020.0002.13388] # EGYPTIAN HIEROGLYPH V020B
-13389 ; [.424F.0020.0002.13389] # EGYPTIAN HIEROGLYPH V020C
-1338A ; [.4250.0020.0002.1338A] # EGYPTIAN HIEROGLYPH V020D
-1338B ; [.4251.0020.0002.1338B] # EGYPTIAN HIEROGLYPH V020E
-1338C ; [.4252.0020.0002.1338C] # EGYPTIAN HIEROGLYPH V020F
-1338D ; [.4253.0020.0002.1338D] # EGYPTIAN HIEROGLYPH V020G
-1338E ; [.4254.0020.0002.1338E] # EGYPTIAN HIEROGLYPH V020H
-1338F ; [.4255.0020.0002.1338F] # EGYPTIAN HIEROGLYPH V020I
-13390 ; [.4256.0020.0002.13390] # EGYPTIAN HIEROGLYPH V020J
-13391 ; [.4257.0020.0002.13391] # EGYPTIAN HIEROGLYPH V020K
-13392 ; [.4258.0020.0002.13392] # EGYPTIAN HIEROGLYPH V020L
-13393 ; [.4259.0020.0002.13393] # EGYPTIAN HIEROGLYPH V021
-13394 ; [.425A.0020.0002.13394] # EGYPTIAN HIEROGLYPH V022
-13395 ; [.425B.0020.0002.13395] # EGYPTIAN HIEROGLYPH V023
-13396 ; [.425C.0020.0002.13396] # EGYPTIAN HIEROGLYPH V023A
-13397 ; [.425D.0020.0002.13397] # EGYPTIAN HIEROGLYPH V024
-13398 ; [.425E.0020.0002.13398] # EGYPTIAN HIEROGLYPH V025
-13399 ; [.425F.0020.0002.13399] # EGYPTIAN HIEROGLYPH V026
-1339A ; [.4260.0020.0002.1339A] # EGYPTIAN HIEROGLYPH V027
-1339B ; [.4261.0020.0002.1339B] # EGYPTIAN HIEROGLYPH V028
-1339C ; [.4262.0020.0002.1339C] # EGYPTIAN HIEROGLYPH V028A
-1339D ; [.4263.0020.0002.1339D] # EGYPTIAN HIEROGLYPH V029
-1339E ; [.4264.0020.0002.1339E] # EGYPTIAN HIEROGLYPH V029A
-1339F ; [.4265.0020.0002.1339F] # EGYPTIAN HIEROGLYPH V030
-133A0 ; [.4266.0020.0002.133A0] # EGYPTIAN HIEROGLYPH V030A
-133A1 ; [.4267.0020.0002.133A1] # EGYPTIAN HIEROGLYPH V031
-133A2 ; [.4268.0020.0002.133A2] # EGYPTIAN HIEROGLYPH V031A
-133A3 ; [.4269.0020.0002.133A3] # EGYPTIAN HIEROGLYPH V032
-133A4 ; [.426A.0020.0002.133A4] # EGYPTIAN HIEROGLYPH V033
-133A5 ; [.426B.0020.0002.133A5] # EGYPTIAN HIEROGLYPH V033A
-133A6 ; [.426C.0020.0002.133A6] # EGYPTIAN HIEROGLYPH V034
-133A7 ; [.426D.0020.0002.133A7] # EGYPTIAN HIEROGLYPH V035
-133A8 ; [.426E.0020.0002.133A8] # EGYPTIAN HIEROGLYPH V036
-133A9 ; [.426F.0020.0002.133A9] # EGYPTIAN HIEROGLYPH V037
-133AA ; [.4270.0020.0002.133AA] # EGYPTIAN HIEROGLYPH V037A
-133AB ; [.4271.0020.0002.133AB] # EGYPTIAN HIEROGLYPH V038
-133AC ; [.4272.0020.0002.133AC] # EGYPTIAN HIEROGLYPH V039
-133AD ; [.4273.0020.0002.133AD] # EGYPTIAN HIEROGLYPH V040
-133AE ; [.4274.0020.0002.133AE] # EGYPTIAN HIEROGLYPH V040A
-133AF ; [.4275.0020.0002.133AF] # EGYPTIAN HIEROGLYPH W001
-133B0 ; [.4276.0020.0002.133B0] # EGYPTIAN HIEROGLYPH W002
-133B1 ; [.4277.0020.0002.133B1] # EGYPTIAN HIEROGLYPH W003
-133B2 ; [.4278.0020.0002.133B2] # EGYPTIAN HIEROGLYPH W003A
-133B3 ; [.4279.0020.0002.133B3] # EGYPTIAN HIEROGLYPH W004
-133B4 ; [.427A.0020.0002.133B4] # EGYPTIAN HIEROGLYPH W005
-133B5 ; [.427B.0020.0002.133B5] # EGYPTIAN HIEROGLYPH W006
-133B6 ; [.427C.0020.0002.133B6] # EGYPTIAN HIEROGLYPH W007
-133B7 ; [.427D.0020.0002.133B7] # EGYPTIAN HIEROGLYPH W008
-133B8 ; [.427E.0020.0002.133B8] # EGYPTIAN HIEROGLYPH W009
-133B9 ; [.427F.0020.0002.133B9] # EGYPTIAN HIEROGLYPH W009A
-133BA ; [.4280.0020.0002.133BA] # EGYPTIAN HIEROGLYPH W010
-133BB ; [.4281.0020.0002.133BB] # EGYPTIAN HIEROGLYPH W010A
-133BC ; [.4282.0020.0002.133BC] # EGYPTIAN HIEROGLYPH W011
-133BD ; [.4283.0020.0002.133BD] # EGYPTIAN HIEROGLYPH W012
-133BE ; [.4284.0020.0002.133BE] # EGYPTIAN HIEROGLYPH W013
-133BF ; [.4285.0020.0002.133BF] # EGYPTIAN HIEROGLYPH W014
-133C0 ; [.4286.0020.0002.133C0] # EGYPTIAN HIEROGLYPH W014A
-133C1 ; [.4287.0020.0002.133C1] # EGYPTIAN HIEROGLYPH W015
-133C2 ; [.4288.0020.0002.133C2] # EGYPTIAN HIEROGLYPH W016
-133C3 ; [.4289.0020.0002.133C3] # EGYPTIAN HIEROGLYPH W017
-133C4 ; [.428A.0020.0002.133C4] # EGYPTIAN HIEROGLYPH W017A
-133C5 ; [.428B.0020.0002.133C5] # EGYPTIAN HIEROGLYPH W018
-133C6 ; [.428C.0020.0002.133C6] # EGYPTIAN HIEROGLYPH W018A
-133C7 ; [.428D.0020.0002.133C7] # EGYPTIAN HIEROGLYPH W019
-133C8 ; [.428E.0020.0002.133C8] # EGYPTIAN HIEROGLYPH W020
-133C9 ; [.428F.0020.0002.133C9] # EGYPTIAN HIEROGLYPH W021
-133CA ; [.4290.0020.0002.133CA] # EGYPTIAN HIEROGLYPH W022
-133CB ; [.4291.0020.0002.133CB] # EGYPTIAN HIEROGLYPH W023
-133CC ; [.4292.0020.0002.133CC] # EGYPTIAN HIEROGLYPH W024
-133CD ; [.4293.0020.0002.133CD] # EGYPTIAN HIEROGLYPH W024A
-133CE ; [.4294.0020.0002.133CE] # EGYPTIAN HIEROGLYPH W025
-133CF ; [.4295.0020.0002.133CF] # EGYPTIAN HIEROGLYPH X001
-133D0 ; [.4296.0020.0002.133D0] # EGYPTIAN HIEROGLYPH X002
-133D1 ; [.4297.0020.0002.133D1] # EGYPTIAN HIEROGLYPH X003
-133D2 ; [.4298.0020.0002.133D2] # EGYPTIAN HIEROGLYPH X004
-133D3 ; [.4299.0020.0002.133D3] # EGYPTIAN HIEROGLYPH X004A
-133D4 ; [.429A.0020.0002.133D4] # EGYPTIAN HIEROGLYPH X004B
-133D5 ; [.429B.0020.0002.133D5] # EGYPTIAN HIEROGLYPH X005
-133D6 ; [.429C.0020.0002.133D6] # EGYPTIAN HIEROGLYPH X006
-133D7 ; [.429D.0020.0002.133D7] # EGYPTIAN HIEROGLYPH X006A
-133D8 ; [.429E.0020.0002.133D8] # EGYPTIAN HIEROGLYPH X007
-133D9 ; [.429F.0020.0002.133D9] # EGYPTIAN HIEROGLYPH X008
-133DA ; [.42A0.0020.0002.133DA] # EGYPTIAN HIEROGLYPH X008A
-133DB ; [.42A1.0020.0002.133DB] # EGYPTIAN HIEROGLYPH Y001
-133DC ; [.42A2.0020.0002.133DC] # EGYPTIAN HIEROGLYPH Y001A
-133DD ; [.42A3.0020.0002.133DD] # EGYPTIAN HIEROGLYPH Y002
-133DE ; [.42A4.0020.0002.133DE] # EGYPTIAN HIEROGLYPH Y003
-133DF ; [.42A5.0020.0002.133DF] # EGYPTIAN HIEROGLYPH Y004
-133E0 ; [.42A6.0020.0002.133E0] # EGYPTIAN HIEROGLYPH Y005
-133E1 ; [.42A7.0020.0002.133E1] # EGYPTIAN HIEROGLYPH Y006
-133E2 ; [.42A8.0020.0002.133E2] # EGYPTIAN HIEROGLYPH Y007
-133E3 ; [.42A9.0020.0002.133E3] # EGYPTIAN HIEROGLYPH Y008
-133E4 ; [.42AA.0020.0002.133E4] # EGYPTIAN HIEROGLYPH Z001
-133E5 ; [.42AB.0020.0002.133E5] # EGYPTIAN HIEROGLYPH Z002
-133E6 ; [.42AC.0020.0002.133E6] # EGYPTIAN HIEROGLYPH Z002A
-133E7 ; [.42AD.0020.0002.133E7] # EGYPTIAN HIEROGLYPH Z002B
-133E8 ; [.42AE.0020.0002.133E8] # EGYPTIAN HIEROGLYPH Z002C
-133E9 ; [.42AF.0020.0002.133E9] # EGYPTIAN HIEROGLYPH Z002D
-133EA ; [.42B0.0020.0002.133EA] # EGYPTIAN HIEROGLYPH Z003
-133EB ; [.42B1.0020.0002.133EB] # EGYPTIAN HIEROGLYPH Z003A
-133EC ; [.42B2.0020.0002.133EC] # EGYPTIAN HIEROGLYPH Z003B
-133ED ; [.42B3.0020.0002.133ED] # EGYPTIAN HIEROGLYPH Z004
-133EE ; [.42B4.0020.0002.133EE] # EGYPTIAN HIEROGLYPH Z004A
-133EF ; [.42B5.0020.0002.133EF] # EGYPTIAN HIEROGLYPH Z005
-133F0 ; [.42B6.0020.0002.133F0] # EGYPTIAN HIEROGLYPH Z005A
-133F1 ; [.42B7.0020.0002.133F1] # EGYPTIAN HIEROGLYPH Z006
-133F2 ; [.42B8.0020.0002.133F2] # EGYPTIAN HIEROGLYPH Z007
-133F3 ; [.42B9.0020.0002.133F3] # EGYPTIAN HIEROGLYPH Z008
-133F4 ; [.42BA.0020.0002.133F4] # EGYPTIAN HIEROGLYPH Z009
-133F5 ; [.42BB.0020.0002.133F5] # EGYPTIAN HIEROGLYPH Z010
-133F6 ; [.42BC.0020.0002.133F6] # EGYPTIAN HIEROGLYPH Z011
-133F7 ; [.42BD.0020.0002.133F7] # EGYPTIAN HIEROGLYPH Z012
-133F8 ; [.42BE.0020.0002.133F8] # EGYPTIAN HIEROGLYPH Z013
-133F9 ; [.42BF.0020.0002.133F9] # EGYPTIAN HIEROGLYPH Z014
-133FA ; [.42C0.0020.0002.133FA] # EGYPTIAN HIEROGLYPH Z015
-133FB ; [.42C1.0020.0002.133FB] # EGYPTIAN HIEROGLYPH Z015A
-133FC ; [.42C2.0020.0002.133FC] # EGYPTIAN HIEROGLYPH Z015B
-133FD ; [.42C3.0020.0002.133FD] # EGYPTIAN HIEROGLYPH Z015C
-133FE ; [.42C4.0020.0002.133FE] # EGYPTIAN HIEROGLYPH Z015D
-133FF ; [.42C5.0020.0002.133FF] # EGYPTIAN HIEROGLYPH Z015E
-13400 ; [.42C6.0020.0002.13400] # EGYPTIAN HIEROGLYPH Z015F
-13401 ; [.42C7.0020.0002.13401] # EGYPTIAN HIEROGLYPH Z015G
-13402 ; [.42C8.0020.0002.13402] # EGYPTIAN HIEROGLYPH Z015H
-13403 ; [.42C9.0020.0002.13403] # EGYPTIAN HIEROGLYPH Z015I
-13404 ; [.42CA.0020.0002.13404] # EGYPTIAN HIEROGLYPH Z016
-13405 ; [.42CB.0020.0002.13405] # EGYPTIAN HIEROGLYPH Z016A
-13406 ; [.42CC.0020.0002.13406] # EGYPTIAN HIEROGLYPH Z016B
-13407 ; [.42CD.0020.0002.13407] # EGYPTIAN HIEROGLYPH Z016C
-13408 ; [.42CE.0020.0002.13408] # EGYPTIAN HIEROGLYPH Z016D
-13409 ; [.42CF.0020.0002.13409] # EGYPTIAN HIEROGLYPH Z016E
-1340A ; [.42D0.0020.0002.1340A] # EGYPTIAN HIEROGLYPH Z016F
-1340B ; [.42D1.0020.0002.1340B] # EGYPTIAN HIEROGLYPH Z016G
-1340C ; [.42D2.0020.0002.1340C] # EGYPTIAN HIEROGLYPH Z016H
-1340D ; [.42D3.0020.0002.1340D] # EGYPTIAN HIEROGLYPH AA001
-1340E ; [.42D4.0020.0002.1340E] # EGYPTIAN HIEROGLYPH AA002
-1340F ; [.42D5.0020.0002.1340F] # EGYPTIAN HIEROGLYPH AA003
-13410 ; [.42D6.0020.0002.13410] # EGYPTIAN HIEROGLYPH AA004
-13411 ; [.42D7.0020.0002.13411] # EGYPTIAN HIEROGLYPH AA005
-13412 ; [.42D8.0020.0002.13412] # EGYPTIAN HIEROGLYPH AA006
-13413 ; [.42D9.0020.0002.13413] # EGYPTIAN HIEROGLYPH AA007
-13414 ; [.42DA.0020.0002.13414] # EGYPTIAN HIEROGLYPH AA007A
-13415 ; [.42DB.0020.0002.13415] # EGYPTIAN HIEROGLYPH AA007B
-13416 ; [.42DC.0020.0002.13416] # EGYPTIAN HIEROGLYPH AA008
-13417 ; [.42DD.0020.0002.13417] # EGYPTIAN HIEROGLYPH AA009
-13418 ; [.42DE.0020.0002.13418] # EGYPTIAN HIEROGLYPH AA010
-13419 ; [.42DF.0020.0002.13419] # EGYPTIAN HIEROGLYPH AA011
-1341A ; [.42E0.0020.0002.1341A] # EGYPTIAN HIEROGLYPH AA012
-1341B ; [.42E1.0020.0002.1341B] # EGYPTIAN HIEROGLYPH AA013
-1341C ; [.42E2.0020.0002.1341C] # EGYPTIAN HIEROGLYPH AA014
-1341D ; [.42E3.0020.0002.1341D] # EGYPTIAN HIEROGLYPH AA015
-1341E ; [.42E4.0020.0002.1341E] # EGYPTIAN HIEROGLYPH AA016
-1341F ; [.42E5.0020.0002.1341F] # EGYPTIAN HIEROGLYPH AA017
-13420 ; [.42E6.0020.0002.13420] # EGYPTIAN HIEROGLYPH AA018
-13421 ; [.42E7.0020.0002.13421] # EGYPTIAN HIEROGLYPH AA019
-13422 ; [.42E8.0020.0002.13422] # EGYPTIAN HIEROGLYPH AA020
-13423 ; [.42E9.0020.0002.13423] # EGYPTIAN HIEROGLYPH AA021
-13424 ; [.42EA.0020.0002.13424] # EGYPTIAN HIEROGLYPH AA022
-13425 ; [.42EB.0020.0002.13425] # EGYPTIAN HIEROGLYPH AA023
-13426 ; [.42EC.0020.0002.13426] # EGYPTIAN HIEROGLYPH AA024
-13427 ; [.42ED.0020.0002.13427] # EGYPTIAN HIEROGLYPH AA025
-13428 ; [.42EE.0020.0002.13428] # EGYPTIAN HIEROGLYPH AA026
-13429 ; [.42EF.0020.0002.13429] # EGYPTIAN HIEROGLYPH AA027
-1342A ; [.42F0.0020.0002.1342A] # EGYPTIAN HIEROGLYPH AA028
-1342B ; [.42F1.0020.0002.1342B] # EGYPTIAN HIEROGLYPH AA029
-1342C ; [.42F2.0020.0002.1342C] # EGYPTIAN HIEROGLYPH AA030
-1342D ; [.42F3.0020.0002.1342D] # EGYPTIAN HIEROGLYPH AA031
-1342E ; [.42F4.0020.0002.1342E] # EGYPTIAN HIEROGLYPH AA032
-109A0 ; [.42F5.0020.0002.109A0] # MEROITIC CURSIVE LETTER A
-10980 ; [.42F5.0020.0004.10980][.0000.0139.0004.10980] # MEROITIC HIEROGLYPHIC LETTER A
-109A1 ; [.42F6.0020.0002.109A1] # MEROITIC CURSIVE LETTER E
-10981 ; [.42F6.0020.0004.10981][.0000.0139.0004.10981] # MEROITIC HIEROGLYPHIC LETTER E
-109A2 ; [.42F7.0020.0002.109A2] # MEROITIC CURSIVE LETTER I
-10982 ; [.42F7.0020.0004.10982][.0000.0139.0004.10982] # MEROITIC HIEROGLYPHIC LETTER I
-109A3 ; [.42F8.0020.0002.109A3] # MEROITIC CURSIVE LETTER O
-10983 ; [.42F8.0020.0004.10983][.0000.0139.0004.10983] # MEROITIC HIEROGLYPHIC LETTER O
-109A4 ; [.42F9.0020.0002.109A4] # MEROITIC CURSIVE LETTER YA
-10984 ; [.42F9.0020.0004.10984][.0000.0139.0004.10984] # MEROITIC HIEROGLYPHIC LETTER YA
-109A5 ; [.42FA.0020.0002.109A5] # MEROITIC CURSIVE LETTER WA
-10985 ; [.42FA.0020.0004.10985][.0000.0139.0004.10985] # MEROITIC HIEROGLYPHIC LETTER WA
-109A6 ; [.42FB.0020.0002.109A6] # MEROITIC CURSIVE LETTER BA
-10986 ; [.42FB.0020.0004.10986][.0000.0139.0004.10986] # MEROITIC HIEROGLYPHIC LETTER BA
-10987 ; [.42FB.0020.0004.10987][.0000.013A.0004.10987] # MEROITIC HIEROGLYPHIC LETTER BA-2
-109A7 ; [.42FC.0020.0002.109A7] # MEROITIC CURSIVE LETTER PA
-10988 ; [.42FC.0020.0004.10988][.0000.0139.0004.10988] # MEROITIC HIEROGLYPHIC LETTER PA
-109A8 ; [.42FD.0020.0002.109A8] # MEROITIC CURSIVE LETTER MA
-10989 ; [.42FD.0020.0004.10989][.0000.0139.0004.10989] # MEROITIC HIEROGLYPHIC LETTER MA
-109A9 ; [.42FE.0020.0002.109A9] # MEROITIC CURSIVE LETTER NA
-1098A ; [.42FE.0020.0004.1098A][.0000.0139.0004.1098A] # MEROITIC HIEROGLYPHIC LETTER NA
-1098B ; [.42FE.0020.0004.1098B][.0000.013A.0004.1098B] # MEROITIC HIEROGLYPHIC LETTER NA-2
-109AA ; [.42FF.0020.0002.109AA] # MEROITIC CURSIVE LETTER NE
-1098C ; [.42FF.0020.0004.1098C][.0000.0139.0004.1098C] # MEROITIC HIEROGLYPHIC LETTER NE
-1098D ; [.42FF.0020.0004.1098D][.0000.013A.0004.1098D] # MEROITIC HIEROGLYPHIC LETTER NE-2
-109AB ; [.4300.0020.0002.109AB] # MEROITIC CURSIVE LETTER RA
-1098E ; [.4300.0020.0004.1098E][.0000.0139.0004.1098E] # MEROITIC HIEROGLYPHIC LETTER RA
-1098F ; [.4300.0020.0004.1098F][.0000.013A.0004.1098F] # MEROITIC HIEROGLYPHIC LETTER RA-2
-109AC ; [.4301.0020.0002.109AC] # MEROITIC CURSIVE LETTER LA
-10990 ; [.4301.0020.0004.10990][.0000.0139.0004.10990] # MEROITIC HIEROGLYPHIC LETTER LA
-109AD ; [.4302.0020.0002.109AD] # MEROITIC CURSIVE LETTER KHA
-10991 ; [.4302.0020.0004.10991][.0000.0139.0004.10991] # MEROITIC HIEROGLYPHIC LETTER KHA
-109AE ; [.4303.0020.0002.109AE] # MEROITIC CURSIVE LETTER HHA
-10992 ; [.4303.0020.0004.10992][.0000.0139.0004.10992] # MEROITIC HIEROGLYPHIC LETTER HHA
-109AF ; [.4304.0020.0002.109AF] # MEROITIC CURSIVE LETTER SA
-109B0 ; [.4304.0020.0004.109B0][.0000.0139.0004.109B0] # MEROITIC CURSIVE LETTER ARCHAIC SA
-10993 ; [.4304.0020.0004.10993][.0000.013A.0004.10993] # MEROITIC HIEROGLYPHIC LETTER SA
-10994 ; [.4304.0020.0004.10994][.0000.013C.0004.10994] # MEROITIC HIEROGLYPHIC LETTER SA-2
-109B1 ; [.4305.0020.0002.109B1] # MEROITIC CURSIVE LETTER SE
-10995 ; [.4305.0020.0004.10995][.0000.0139.0004.10995] # MEROITIC HIEROGLYPHIC LETTER SE
-109B2 ; [.4306.0020.0002.109B2] # MEROITIC CURSIVE LETTER KA
-10996 ; [.4306.0020.0004.10996][.0000.0139.0004.10996] # MEROITIC HIEROGLYPHIC LETTER KA
-109B3 ; [.4307.0020.0002.109B3] # MEROITIC CURSIVE LETTER QA
-10997 ; [.4307.0020.0004.10997][.0000.0139.0004.10997] # MEROITIC HIEROGLYPHIC LETTER QA
-109B4 ; [.4308.0020.0002.109B4] # MEROITIC CURSIVE LETTER TA
-10998 ; [.4308.0020.0004.10998][.0000.0139.0004.10998] # MEROITIC HIEROGLYPHIC LETTER TA
-10999 ; [.4308.0020.0004.10999][.0000.013A.0004.10999] # MEROITIC HIEROGLYPHIC LETTER TA-2
-109B5 ; [.4309.0020.0002.109B5] # MEROITIC CURSIVE LETTER TE
-1099A ; [.4309.0020.0004.1099A][.0000.0139.0004.1099A] # MEROITIC HIEROGLYPHIC LETTER TE
-1099B ; [.4309.0020.0004.1099B][.0000.013A.0004.1099B] # MEROITIC HIEROGLYPHIC LETTER TE-2
-109B6 ; [.430A.0020.0002.109B6] # MEROITIC CURSIVE LETTER TO
-1099C ; [.430A.0020.0004.1099C][.0000.0139.0004.1099C] # MEROITIC HIEROGLYPHIC LETTER TO
-109B7 ; [.430B.0020.0002.109B7] # MEROITIC CURSIVE LETTER DA
-1099D ; [.430B.0020.0004.1099D][.0000.0139.0004.1099D] # MEROITIC HIEROGLYPHIC LETTER DA
-109BE ; [.430C.0020.0002.109BE] # MEROITIC CURSIVE LOGOGRAM RMT
-109BF ; [.430D.0020.0002.109BF] # MEROITIC CURSIVE LOGOGRAM IMN
-1099E ; [.430E.0020.0002.1099E] # MEROITIC HIEROGLYPHIC SYMBOL VIDJ
-1099F ; [.430F.0020.0002.1099F] # MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2
+02D0 ; [.15A8.0020.0002.02D0] # MODIFIER LETTER TRIANGULAR COLON
+02D1 ; [.15A9.0020.0002.02D1] # MODIFIER LETTER HALF TRIANGULAR COLON
+0971 ; [.15AA.0020.0002.0971] # DEVANAGARI SIGN HIGH SPACING DOT
+0E46 ; [.15AB.0020.0002.0E46] # THAI CHARACTER MAIYAMOK
+0EC6 ; [.15AC.0020.0002.0EC6] # LAO KO LA
+17D7 ; [.15AD.0020.0002.17D7] # KHMER SIGN LEK TOO
+1AA7 ; [.15AE.0020.0002.1AA7] # TAI THAM SIGN MAI YAMOK
+A9CF ; [.15AF.0020.0002.A9CF] # JAVANESE PANGRANGKEP
+AA70 ; [.15B0.0020.0002.AA70] # MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
+AADD ; [.15B1.0020.0002.AADD] # TAI VIET SYMBOL SAM
+AAF3 ; [.15B2.0020.0002.AAF3] # MEETEI MAYEK SYLLABLE REPETITION MARK
+AAF4 ; [.15B3.0020.0002.AAF4] # MEETEI MAYEK WORD REPETITION MARK
+3005 ; [.15B4.0020.0002.3005] # IDEOGRAPHIC ITERATION MARK
+303B ; [.15B5.0020.0002.303B] # VERTICAL IDEOGRAPHIC ITERATION MARK
+3031 ; [.15B6.0020.0002.3031] # VERTICAL KANA REPEAT MARK
+3032 ; [.15B6.0020.0002.3031][.0000.0128.0002.3099] # VERTICAL KANA REPEAT WITH VOICED SOUND MARK
+3033 ; [.15B7.0020.0002.3033] # VERTICAL KANA REPEAT MARK UPPER HALF
+3034 ; [.15B7.0020.0002.3033][.0000.0128.0002.3099] # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
+3035 ; [.15B8.0020.0002.3035] # VERTICAL KANA REPEAT MARK LOWER HALF
+309D ; [.15B9.0020.0002.309D] # HIRAGANA ITERATION MARK
+309E ; [.15B9.0020.0002.309D][.0000.0128.0002.3099] # HIRAGANA VOICED ITERATION MARK
+30FC ; [.15BA.0020.0002.30FC] # KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF70 ; [.15BA.0020.0012.FF70] # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+30FD ; [.15BB.0020.0002.30FD] # KATAKANA ITERATION MARK
+30FE ; [.15BB.0020.0002.30FD][.0000.0128.0002.3099] # KATAKANA VOICED ITERATION MARK
+00A4 ; [.15BC.0020.0002.00A4] # CURRENCY SIGN
+00A2 ; [.15BD.0020.0002.00A2] # CENT SIGN
+FFE0 ; [.15BD.0020.0003.FFE0] # FULLWIDTH CENT SIGN
+0024 ; [.15BE.0020.0002.0024] # DOLLAR SIGN
+FF04 ; [.15BE.0020.0003.FF04] # FULLWIDTH DOLLAR SIGN
+FE69 ; [.15BE.0020.000F.FE69] # SMALL DOLLAR SIGN
+00A3 ; [.15BF.0020.0002.00A3] # POUND SIGN
+FFE1 ; [.15BF.0020.0003.FFE1] # FULLWIDTH POUND SIGN
+00A5 ; [.15C0.0020.0002.00A5] # YEN SIGN
+FFE5 ; [.15C0.0020.0003.FFE5] # FULLWIDTH YEN SIGN
+058F ; [.15C1.0020.0002.058F] # ARMENIAN DRAM SIGN
+060B ; [.15C2.0020.0002.060B] # AFGHANI SIGN
+09F2 ; [.15C3.0020.0002.09F2] # BENGALI RUPEE MARK
+09F3 ; [.15C4.0020.0002.09F3] # BENGALI RUPEE SIGN
+09FB ; [.15C5.0020.0002.09FB] # BENGALI GANDA MARK
+0AF1 ; [.15C6.0020.0002.0AF1] # GUJARATI RUPEE SIGN
+A838 ; [.15C7.0020.0002.A838] # NORTH INDIC RUPEE MARK
+0BF9 ; [.15C8.0020.0002.0BF9] # TAMIL RUPEE SIGN
+0E3F ; [.15C9.0020.0002.0E3F] # THAI CURRENCY SYMBOL BAHT
+17DB ; [.15CA.0020.0002.17DB] # KHMER CURRENCY SYMBOL RIEL
+20A0 ; [.15CB.0020.0002.20A0] # EURO-CURRENCY SIGN
+20A1 ; [.15CC.0020.0002.20A1] # COLON SIGN
+20A2 ; [.15CD.0020.0002.20A2] # CRUZEIRO SIGN
+20A3 ; [.15CE.0020.0002.20A3] # FRENCH FRANC SIGN
+20A4 ; [.15CF.0020.0002.20A4] # LIRA SIGN
+20A5 ; [.15D0.0020.0002.20A5] # MILL SIGN
+20A6 ; [.15D1.0020.0002.20A6] # NAIRA SIGN
+20A7 ; [.15D2.0020.0002.20A7] # PESETA SIGN
+20A9 ; [.15D3.0020.0002.20A9] # WON SIGN
+FFE6 ; [.15D3.0020.0003.FFE6] # FULLWIDTH WON SIGN
+20AA ; [.15D4.0020.0002.20AA] # NEW SHEQEL SIGN
+20AB ; [.15D5.0020.0002.20AB] # DONG SIGN
+20AC ; [.15D6.0020.0002.20AC] # EURO SIGN
+20AD ; [.15D7.0020.0002.20AD] # KIP SIGN
+20AE ; [.15D8.0020.0002.20AE] # TUGRIK SIGN
+20AF ; [.15D9.0020.0002.20AF] # DRACHMA SIGN
+20B0 ; [.15DA.0020.0002.20B0] # GERMAN PENNY SIGN
+20B1 ; [.15DB.0020.0002.20B1] # PESO SIGN
+20B2 ; [.15DC.0020.0002.20B2] # GUARANI SIGN
+20B3 ; [.15DD.0020.0002.20B3] # AUSTRAL SIGN
+20B4 ; [.15DE.0020.0002.20B4] # HRYVNIA SIGN
+20B5 ; [.15DF.0020.0002.20B5] # CEDI SIGN
+20B6 ; [.15E0.0020.0002.20B6] # LIVRE TOURNOIS SIGN
+20B7 ; [.15E1.0020.0002.20B7] # SPESMILO SIGN
+20B8 ; [.15E2.0020.0002.20B8] # TENGE SIGN
+20B9 ; [.15E3.0020.0002.20B9] # INDIAN RUPEE SIGN
+20BA ; [.15E4.0020.0002.20BA] # TURKISH LIRA SIGN
+0030 ; [.15E5.0020.0002.0030] # DIGIT ZERO
+FF10 ; [.15E5.0020.0003.FF10] # FULLWIDTH DIGIT ZERO
+1F100 ; [.15E5.0020.0004.1F100][*0273.0020.001F.1F100] # DIGIT ZERO FULL STOP
+1F101 ; [.15E5.0020.0004.1F101][*0221.0020.001F.1F101] # DIGIT ZERO COMMA
+1D7CE ; [.15E5.0020.0005.1D7CE] # MATHEMATICAL BOLD DIGIT ZERO
+1D7D8 ; [.15E5.0020.0005.1D7D8] # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
+1D7E2 ; [.15E5.0020.0005.1D7E2] # MATHEMATICAL SANS-SERIF DIGIT ZERO
+1D7EC ; [.15E5.0020.0005.1D7EC] # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
+1D7F6 ; [.15E5.0020.0005.1D7F6] # MATHEMATICAL MONOSPACE DIGIT ZERO
+24EA ; [.15E5.0020.0006.24EA] # CIRCLED DIGIT ZERO
+24FF ; [.15E5.0020.0006.24FF] # NEGATIVE CIRCLED DIGIT ZERO
+2070 ; [.15E5.0020.0014.2070] # SUPERSCRIPT ZERO
+2080 ; [.15E5.0020.0015.2080] # SUBSCRIPT ZERO
+0660 ; [.15E5.0020.0002.0660][.0000.013F.0002.0660] # ARABIC-INDIC DIGIT ZERO
+06F0 ; [.15E5.0020.0002.06F0][.0000.0140.0002.06F0] # EXTENDED ARABIC-INDIC DIGIT ZERO
+07C0 ; [.15E5.0020.0002.07C0][.0000.0142.0002.07C0] # NKO DIGIT ZERO
+104A0 ; [.15E5.0020.0002.104A0][.0000.0144.0002.104A0] # OSMANYA DIGIT ZERO
+0966 ; [.15E5.0020.0002.0966][.0000.0145.0002.0966] # DEVANAGARI DIGIT ZERO
+09E6 ; [.15E5.0020.0002.09E6][.0000.0146.0002.09E6] # BENGALI DIGIT ZERO
+0A66 ; [.15E5.0020.0002.0A66][.0000.0147.0002.0A66] # GURMUKHI DIGIT ZERO
+0AE6 ; [.15E5.0020.0002.0AE6][.0000.0148.0002.0AE6] # GUJARATI DIGIT ZERO
+0B66 ; [.15E5.0020.0002.0B66][.0000.0149.0002.0B66] # ORIYA DIGIT ZERO
+0BE6 ; [.15E5.0020.0002.0BE6][.0000.014A.0002.0BE6] # TAMIL DIGIT ZERO
+0C66 ; [.15E5.0020.0002.0C66][.0000.014B.0002.0C66] # TELUGU DIGIT ZERO
+0C78 ; [.15E5.0020.0002.0C78][.0000.014B.0002.0C78] # TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR
+0CE6 ; [.15E5.0020.0002.0CE6][.0000.014C.0002.0CE6] # KANNADA DIGIT ZERO
+0D66 ; [.15E5.0020.0002.0D66][.0000.014D.0002.0D66] # MALAYALAM DIGIT ZERO
+ABF0 ; [.15E5.0020.0002.ABF0][.0000.014E.0002.ABF0] # MEETEI MAYEK DIGIT ZERO
+A8D0 ; [.15E5.0020.0002.A8D0][.0000.014F.0002.A8D0] # SAURASHTRA DIGIT ZERO
+1946 ; [.15E5.0020.0002.1946][.0000.0150.0002.1946] # LIMBU DIGIT ZERO
+19D0 ; [.15E5.0020.0002.19D0][.0000.0151.0002.19D0] # NEW TAI LUE DIGIT ZERO
+1A80 ; [.15E5.0020.0002.1A80][.0000.0152.0002.1A80] # TAI THAM HORA DIGIT ZERO
+1A90 ; [.15E5.0020.0002.1A90][.0000.0153.0002.1A90] # TAI THAM THAM DIGIT ZERO
+0E50 ; [.15E5.0020.0002.0E50][.0000.0154.0002.0E50] # THAI DIGIT ZERO
+0ED0 ; [.15E5.0020.0002.0ED0][.0000.0155.0002.0ED0] # LAO DIGIT ZERO
+0F20 ; [.15E5.0020.0002.0F20][.0000.0156.0002.0F20] # TIBETAN DIGIT ZERO
+0F33 ; [.15E5.0020.0004.0F33][.0000.0156.0004.0F33] # TIBETAN DIGIT HALF ZERO
+1C40 ; [.15E5.0020.0002.1C40][.0000.0157.0002.1C40] # LEPCHA DIGIT ZERO
+A900 ; [.15E5.0020.0002.A900][.0000.0158.0002.A900] # KAYAH LI DIGIT ZERO
+1040 ; [.15E5.0020.0002.1040][.0000.0159.0002.1040] # MYANMAR DIGIT ZERO
+1090 ; [.15E5.0020.0002.1090][.0000.015A.0002.1090] # MYANMAR SHAN DIGIT ZERO
+11136 ; [.15E5.0020.0002.11136][.0000.015B.0002.11136] # CHAKMA DIGIT ZERO
+17E0 ; [.15E5.0020.0002.17E0][.0000.015C.0002.17E0] # KHMER DIGIT ZERO
+17F0 ; [.15E5.0020.0002.17F0][.0000.015D.0002.17F0] # KHMER SYMBOL LEK ATTAK SON
+AA50 ; [.15E5.0020.0002.AA50][.0000.015E.0002.AA50] # CHAM DIGIT ZERO
+1B50 ; [.15E5.0020.0002.1B50][.0000.015F.0002.1B50] # BALINESE DIGIT ZERO
+A9D0 ; [.15E5.0020.0002.A9D0][.0000.0160.0002.A9D0] # JAVANESE DIGIT ZERO
+1BB0 ; [.15E5.0020.0002.1BB0][.0000.0161.0002.1BB0] # SUNDANESE DIGIT ZERO
+1810 ; [.15E5.0020.0002.1810][.0000.0162.0002.1810] # MONGOLIAN DIGIT ZERO
+1C50 ; [.15E5.0020.0002.1C50][.0000.0163.0002.1C50] # OL CHIKI DIGIT ZERO
+A620 ; [.15E5.0020.0002.A620][.0000.0164.0002.A620] # VAI DIGIT ZERO
+110F0 ; [.15E5.0020.0002.110F0][.0000.0165.0002.110F0] # SORA SOMPENG DIGIT ZERO
+3007 ; [.15E5.0020.0002.3007][.0000.0166.0002.3007] # IDEOGRAPHIC NUMBER ZERO
+1018A ; [.15E5.0020.0002.1018A][.0000.0168.0002.1018A] # GREEK ZERO SIGN
+111D0 ; [.15E5.0020.0002.111D0][.0000.0172.0002.111D0] # SHARADA DIGIT ZERO
+116C0 ; [.15E5.0020.0002.116C0][.0000.0173.0002.116C0] # TAKRI DIGIT ZERO
+11066 ; [.15E5.0020.0002.11066][.0000.0174.0002.11066] # BRAHMI DIGIT ZERO
+2189 ; [.15E5.0020.001E.2189][*05AC.0020.001E.2189][.15E8.0020.001E.2189] # VULGAR FRACTION ZERO THIRDS
+3358 ; [.15E5.0020.0004.3358][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+0031 ; [.15E6.0020.0002.0031] # DIGIT ONE
+FF11 ; [.15E6.0020.0003.FF11] # FULLWIDTH DIGIT ONE
+2474 ; [*02FB.0020.0004.2474][.15E6.0020.0004.2474][*02FC.0020.001F.2474] # PARENTHESIZED DIGIT ONE
+2488 ; [.15E6.0020.0004.2488][*0273.0020.001F.2488] # DIGIT ONE FULL STOP
+1F102 ; [.15E6.0020.0004.1F102][*0221.0020.001F.1F102] # DIGIT ONE COMMA
+1D7CF ; [.15E6.0020.0005.1D7CF] # MATHEMATICAL BOLD DIGIT ONE
+1D7D9 ; [.15E6.0020.0005.1D7D9] # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
+1D7E3 ; [.15E6.0020.0005.1D7E3] # MATHEMATICAL SANS-SERIF DIGIT ONE
+1D7ED ; [.15E6.0020.0005.1D7ED] # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
+1D7F7 ; [.15E6.0020.0005.1D7F7] # MATHEMATICAL MONOSPACE DIGIT ONE
+2460 ; [.15E6.0020.0006.2460] # CIRCLED DIGIT ONE
+24F5 ; [.15E6.0020.0006.24F5] # DOUBLE CIRCLED DIGIT ONE
+2776 ; [.15E6.0020.0006.2776] # DINGBAT NEGATIVE CIRCLED DIGIT ONE
+2780 ; [.15E6.0020.0006.2780] # DINGBAT CIRCLED SANS-SERIF DIGIT ONE
+278A ; [.15E6.0020.0006.278A] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
+00B9 ; [.15E6.0020.0014.00B9] # SUPERSCRIPT ONE
+2081 ; [.15E6.0020.0015.2081] # SUBSCRIPT ONE
+215F ; [.15E6.0020.001E.215F][*05AC.0020.001E.215F] # FRACTION NUMERATOR ONE
+0661 ; [.15E6.0020.0002.0661][.0000.013F.0002.0661] # ARABIC-INDIC DIGIT ONE
+06F1 ; [.15E6.0020.0002.06F1][.0000.0140.0002.06F1] # EXTENDED ARABIC-INDIC DIGIT ONE
+10E60 ; [.15E6.0020.0002.10E60][.0000.0141.0002.10E60] # RUMI DIGIT ONE
+07C1 ; [.15E6.0020.0002.07C1][.0000.0142.0002.07C1] # NKO DIGIT ONE
+1369 ; [.15E6.0020.0002.1369][.0000.0143.0002.1369] # ETHIOPIC DIGIT ONE
+104A1 ; [.15E6.0020.0002.104A1][.0000.0144.0002.104A1] # OSMANYA DIGIT ONE
+0967 ; [.15E6.0020.0002.0967][.0000.0145.0002.0967] # DEVANAGARI DIGIT ONE
+09E7 ; [.15E6.0020.0002.09E7][.0000.0146.0002.09E7] # BENGALI DIGIT ONE
+0A67 ; [.15E6.0020.0002.0A67][.0000.0147.0002.0A67] # GURMUKHI DIGIT ONE
+0AE7 ; [.15E6.0020.0002.0AE7][.0000.0148.0002.0AE7] # GUJARATI DIGIT ONE
+0B67 ; [.15E6.0020.0002.0B67][.0000.0149.0002.0B67] # ORIYA DIGIT ONE
+0BE7 ; [.15E6.0020.0002.0BE7][.0000.014A.0002.0BE7] # TAMIL DIGIT ONE
+0C67 ; [.15E6.0020.0002.0C67][.0000.014B.0002.0C67] # TELUGU DIGIT ONE
+0C79 ; [.15E6.0020.0002.0C79][.0000.014B.0002.0C79] # TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR
+0C7C ; [.15E6.0020.0002.0C7C][.0000.014B.0002.0C7C] # TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR
+0CE7 ; [.15E6.0020.0002.0CE7][.0000.014C.0002.0CE7] # KANNADA DIGIT ONE
+0D67 ; [.15E6.0020.0002.0D67][.0000.014D.0002.0D67] # MALAYALAM DIGIT ONE
+ABF1 ; [.15E6.0020.0002.ABF1][.0000.014E.0002.ABF1] # MEETEI MAYEK DIGIT ONE
+A8D1 ; [.15E6.0020.0002.A8D1][.0000.014F.0002.A8D1] # SAURASHTRA DIGIT ONE
+1947 ; [.15E6.0020.0002.1947][.0000.0150.0002.1947] # LIMBU DIGIT ONE
+19D1 ; [.15E6.0020.0002.19D1][.0000.0151.0002.19D1] # NEW TAI LUE DIGIT ONE
+19DA ; [.15E6.0020.0002.19DA][.0000.0151.0002.19DA] # NEW TAI LUE THAM DIGIT ONE
+1A81 ; [.15E6.0020.0002.1A81][.0000.0152.0002.1A81] # TAI THAM HORA DIGIT ONE
+1A91 ; [.15E6.0020.0002.1A91][.0000.0153.0002.1A91] # TAI THAM THAM DIGIT ONE
+0E51 ; [.15E6.0020.0002.0E51][.0000.0154.0002.0E51] # THAI DIGIT ONE
+0ED1 ; [.15E6.0020.0002.0ED1][.0000.0155.0002.0ED1] # LAO DIGIT ONE
+0F21 ; [.15E6.0020.0002.0F21][.0000.0156.0002.0F21] # TIBETAN DIGIT ONE
+0F2A ; [.15E6.0020.0004.0F2A][.0000.0156.0004.0F2A] # TIBETAN DIGIT HALF ONE
+1C41 ; [.15E6.0020.0002.1C41][.0000.0157.0002.1C41] # LEPCHA DIGIT ONE
+A901 ; [.15E6.0020.0002.A901][.0000.0158.0002.A901] # KAYAH LI DIGIT ONE
+1041 ; [.15E6.0020.0002.1041][.0000.0159.0002.1041] # MYANMAR DIGIT ONE
+1091 ; [.15E6.0020.0002.1091][.0000.015A.0002.1091] # MYANMAR SHAN DIGIT ONE
+11137 ; [.15E6.0020.0002.11137][.0000.015B.0002.11137] # CHAKMA DIGIT ONE
+17E1 ; [.15E6.0020.0002.17E1][.0000.015C.0002.17E1] # KHMER DIGIT ONE
+17F1 ; [.15E6.0020.0002.17F1][.0000.015D.0002.17F1] # KHMER SYMBOL LEK ATTAK MUOY
+AA51 ; [.15E6.0020.0002.AA51][.0000.015E.0002.AA51] # CHAM DIGIT ONE
+1B51 ; [.15E6.0020.0002.1B51][.0000.015F.0002.1B51] # BALINESE DIGIT ONE
+A9D1 ; [.15E6.0020.0002.A9D1][.0000.0160.0002.A9D1] # JAVANESE DIGIT ONE
+1BB1 ; [.15E6.0020.0002.1BB1][.0000.0161.0002.1BB1] # SUNDANESE DIGIT ONE
+1811 ; [.15E6.0020.0002.1811][.0000.0162.0002.1811] # MONGOLIAN DIGIT ONE
+1C51 ; [.15E6.0020.0002.1C51][.0000.0163.0002.1C51] # OL CHIKI DIGIT ONE
+A621 ; [.15E6.0020.0002.A621][.0000.0164.0002.A621] # VAI DIGIT ONE
+110F1 ; [.15E6.0020.0002.110F1][.0000.0165.0002.110F1] # SORA SOMPENG DIGIT ONE
+3021 ; [.15E6.0020.0002.3021][.0000.0166.0002.3021] # HANGZHOU NUMERAL ONE
+10107 ; [.15E6.0020.0002.10107][.0000.0167.0002.10107] # AEGEAN NUMBER ONE
+10142 ; [.15E6.0020.0002.10142][.0000.0168.0002.10142] # GREEK ACROPHONIC ATTIC ONE DRACHMA
+10158 ; [.15E6.0020.0002.10158][.0000.0168.0002.10158] # GREEK ACROPHONIC HERAEUM ONE PLETHRON
+10159 ; [.15E6.0020.0002.10159][.0000.0168.0002.10159] # GREEK ACROPHONIC THESPIAN ONE
+1015A ; [.15E6.0020.0002.1015A][.0000.0168.0002.1015A] # GREEK ACROPHONIC HERMIONIAN ONE
+10320 ; [.15E6.0020.0002.10320][.0000.016A.0002.10320] # OLD ITALIC NUMERAL ONE
+103D1 ; [.15E6.0020.0002.103D1][.0000.016B.0002.103D1] # OLD PERSIAN NUMBER ONE
+12415 ; [.15E6.0020.0002.12415][.0000.016C.0002.12415] # CUNEIFORM NUMERIC SIGN ONE GESH2
+1241E ; [.15E6.0020.0002.1241E][.0000.016C.0002.1241E] # CUNEIFORM NUMERIC SIGN ONE GESHU
+1242C ; [.15E6.0020.0002.1242C][.0000.016C.0002.1242C] # CUNEIFORM NUMERIC SIGN ONE SHARU
+12434 ; [.15E6.0020.0002.12434][.0000.016C.0002.12434] # CUNEIFORM NUMERIC SIGN ONE BURU
+1244F ; [.15E6.0020.0002.1244F][.0000.016C.0002.1244F] # CUNEIFORM NUMERIC SIGN ONE BAN2
+12458 ; [.15E6.0020.0002.12458][.0000.016C.0002.12458] # CUNEIFORM NUMERIC SIGN ONE ESHE3
+10A7D ; [.15E6.0020.0002.10A7D][.0000.016D.0002.10A7D] # OLD SOUTH ARABIAN NUMBER ONE
+10916 ; [.15E6.0020.0002.10916][.0000.016E.0002.10916] # PHOENICIAN NUMBER ONE
+10858 ; [.15E6.0020.0002.10858][.0000.016F.0002.10858] # IMPERIAL ARAMAIC NUMBER ONE
+10B58 ; [.15E6.0020.0002.10B58][.0000.0170.0002.10B58] # INSCRIPTIONAL PARTHIAN NUMBER ONE
+10B78 ; [.15E6.0020.0002.10B78][.0000.0171.0002.10B78] # INSCRIPTIONAL PAHLAVI NUMBER ONE
+111D1 ; [.15E6.0020.0002.111D1][.0000.0172.0002.111D1] # SHARADA DIGIT ONE
+116C1 ; [.15E6.0020.0002.116C1][.0000.0173.0002.116C1] # TAKRI DIGIT ONE
+11067 ; [.15E6.0020.0002.11067][.0000.0174.0002.11067] # BRAHMI DIGIT ONE
+11052 ; [.15E6.0020.0002.11052][.0000.0175.0002.11052] # BRAHMI NUMBER ONE
+10A40 ; [.15E6.0020.0002.10A40][.0000.0176.0002.10A40] # KHAROSHTHI DIGIT ONE
+1D360 ; [.15E6.0020.0002.1D360][.0000.0177.0002.1D360] # COUNTING ROD UNIT DIGIT ONE
+247D ; [*02FB.0020.0004.247D][.15E6.0020.0004.247D][.15E5.0020.0004.247D][*02FC.0020.001F.247D] # PARENTHESIZED NUMBER TEN
+2491 ; [.15E6.0020.0004.2491][.15E5.0020.0004.2491][*0273.0020.001F.2491] # NUMBER TEN FULL STOP
+2469 ; [.15E6.0020.0006.2469][.15E5.0020.0006.2469] # CIRCLED NUMBER TEN
+24FE ; [.15E6.0020.0006.24FE][.15E5.0020.0006.24FE] # DOUBLE CIRCLED NUMBER TEN
+277F ; [.15E6.0020.0006.277F][.15E5.0020.0006.277F] # DINGBAT NEGATIVE CIRCLED NUMBER TEN
+2789 ; [.15E6.0020.0006.2789][.15E5.0020.0006.2789] # DINGBAT CIRCLED SANS-SERIF NUMBER TEN
+2793 ; [.15E6.0020.0006.2793][.15E5.0020.0006.2793] # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+3248 ; [.15E6.0020.0006.3248][.15E5.0020.0006.3248] # CIRCLED NUMBER TEN ON BLACK SQUARE
+33E9 ; [.15E6.0020.0004.33E9][.15E5.0020.0004.33E9][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+32C9 ; [.15E6.0020.0004.32C9][.15E5.0020.0004.32C9][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+3362 ; [.15E6.0020.0004.3362][.15E5.0020.0004.3362][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+247E ; [*02FB.0020.0004.247E][.15E6.0020.0004.247E][.15E6.0020.0004.247E][*02FC.0020.001F.247E] # PARENTHESIZED NUMBER ELEVEN
+2492 ; [.15E6.0020.0004.2492][.15E6.0020.0004.2492][*0273.0020.001F.2492] # NUMBER ELEVEN FULL STOP
+246A ; [.15E6.0020.0006.246A][.15E6.0020.0006.246A] # CIRCLED NUMBER ELEVEN
+24EB ; [.15E6.0020.0006.24EB][.15E6.0020.0006.24EB] # NEGATIVE CIRCLED NUMBER ELEVEN
+2152 ; [.15E6.0020.001E.2152][*05AC.0020.001E.2152][.15E6.0020.001E.2152][.15E5.0020.001E.2152] # VULGAR FRACTION ONE TENTH
+33EA ; [.15E6.0020.0004.33EA][.15E6.0020.0004.33EA][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+32CA ; [.15E6.0020.0004.32CA][.15E6.0020.0004.32CA][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+3363 ; [.15E6.0020.0004.3363][.15E6.0020.0004.3363][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+247F ; [*02FB.0020.0004.247F][.15E6.0020.0004.247F][.15E7.0020.0004.247F][*02FC.0020.001F.247F] # PARENTHESIZED NUMBER TWELVE
+2493 ; [.15E6.0020.0004.2493][.15E7.0020.0004.2493][*0273.0020.001F.2493] # NUMBER TWELVE FULL STOP
+246B ; [.15E6.0020.0006.246B][.15E7.0020.0006.246B] # CIRCLED NUMBER TWELVE
+24EC ; [.15E6.0020.0006.24EC][.15E7.0020.0006.24EC] # NEGATIVE CIRCLED NUMBER TWELVE
+00BD ; [.15E6.0020.001E.00BD][*05AC.0020.001E.00BD][.15E7.0020.001E.00BD] # VULGAR FRACTION ONE HALF
+33EB ; [.15E6.0020.0004.33EB][.15E7.0020.0004.33EB][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+32CB ; [.15E6.0020.0004.32CB][.15E7.0020.0004.32CB][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+3364 ; [.15E6.0020.0004.3364][.15E7.0020.0004.3364][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+2480 ; [*02FB.0020.0004.2480][.15E6.0020.0004.2480][.15E8.0020.0004.2480][*02FC.0020.001F.2480] # PARENTHESIZED NUMBER THIRTEEN
+2494 ; [.15E6.0020.0004.2494][.15E8.0020.0004.2494][*0273.0020.001F.2494] # NUMBER THIRTEEN FULL STOP
+246C ; [.15E6.0020.0006.246C][.15E8.0020.0006.246C] # CIRCLED NUMBER THIRTEEN
+24ED ; [.15E6.0020.0006.24ED][.15E8.0020.0006.24ED] # NEGATIVE CIRCLED NUMBER THIRTEEN
+2153 ; [.15E6.0020.001E.2153][*05AC.0020.001E.2153][.15E8.0020.001E.2153] # VULGAR FRACTION ONE THIRD
+33EC ; [.15E6.0020.0004.33EC][.15E8.0020.0004.33EC][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+3365 ; [.15E6.0020.0004.3365][.15E8.0020.0004.3365][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+2481 ; [*02FB.0020.0004.2481][.15E6.0020.0004.2481][.15E9.0020.0004.2481][*02FC.0020.001F.2481] # PARENTHESIZED NUMBER FOURTEEN
+2495 ; [.15E6.0020.0004.2495][.15E9.0020.0004.2495][*0273.0020.001F.2495] # NUMBER FOURTEEN FULL STOP
+246D ; [.15E6.0020.0006.246D][.15E9.0020.0006.246D] # CIRCLED NUMBER FOURTEEN
+24EE ; [.15E6.0020.0006.24EE][.15E9.0020.0006.24EE] # NEGATIVE CIRCLED NUMBER FOURTEEN
+00BC ; [.15E6.0020.001E.00BC][*05AC.0020.001E.00BC][.15E9.0020.001E.00BC] # VULGAR FRACTION ONE QUARTER
+33ED ; [.15E6.0020.0004.33ED][.15E9.0020.0004.33ED][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+3366 ; [.15E6.0020.0004.3366][.15E9.0020.0004.3366][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+2482 ; [*02FB.0020.0004.2482][.15E6.0020.0004.2482][.15EA.0020.0004.2482][*02FC.0020.001F.2482] # PARENTHESIZED NUMBER FIFTEEN
+2496 ; [.15E6.0020.0004.2496][.15EA.0020.0004.2496][*0273.0020.001F.2496] # NUMBER FIFTEEN FULL STOP
+246E ; [.15E6.0020.0006.246E][.15EA.0020.0006.246E] # CIRCLED NUMBER FIFTEEN
+24EF ; [.15E6.0020.0006.24EF][.15EA.0020.0006.24EF] # NEGATIVE CIRCLED NUMBER FIFTEEN
+2155 ; [.15E6.0020.001E.2155][*05AC.0020.001E.2155][.15EA.0020.001E.2155] # VULGAR FRACTION ONE FIFTH
+33EE ; [.15E6.0020.0004.33EE][.15EA.0020.0004.33EE][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+3367 ; [.15E6.0020.0004.3367][.15EA.0020.0004.3367][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+2483 ; [*02FB.0020.0004.2483][.15E6.0020.0004.2483][.15EB.0020.0004.2483][*02FC.0020.001F.2483] # PARENTHESIZED NUMBER SIXTEEN
+2497 ; [.15E6.0020.0004.2497][.15EB.0020.0004.2497][*0273.0020.001F.2497] # NUMBER SIXTEEN FULL STOP
+246F ; [.15E6.0020.0006.246F][.15EB.0020.0006.246F] # CIRCLED NUMBER SIXTEEN
+24F0 ; [.15E6.0020.0006.24F0][.15EB.0020.0006.24F0] # NEGATIVE CIRCLED NUMBER SIXTEEN
+2159 ; [.15E6.0020.001E.2159][*05AC.0020.001E.2159][.15EB.0020.001E.2159] # VULGAR FRACTION ONE SIXTH
+33EF ; [.15E6.0020.0004.33EF][.15EB.0020.0004.33EF][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+3368 ; [.15E6.0020.0004.3368][.15EB.0020.0004.3368][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+2484 ; [*02FB.0020.0004.2484][.15E6.0020.0004.2484][.15EC.0020.0004.2484][*02FC.0020.001F.2484] # PARENTHESIZED NUMBER SEVENTEEN
+2498 ; [.15E6.0020.0004.2498][.15EC.0020.0004.2498][*0273.0020.001F.2498] # NUMBER SEVENTEEN FULL STOP
+2470 ; [.15E6.0020.0006.2470][.15EC.0020.0006.2470] # CIRCLED NUMBER SEVENTEEN
+24F1 ; [.15E6.0020.0006.24F1][.15EC.0020.0006.24F1] # NEGATIVE CIRCLED NUMBER SEVENTEEN
+2150 ; [.15E6.0020.001E.2150][*05AC.0020.001E.2150][.15EC.0020.001E.2150] # VULGAR FRACTION ONE SEVENTH
+33F0 ; [.15E6.0020.0004.33F0][.15EC.0020.0004.33F0][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+3369 ; [.15E6.0020.0004.3369][.15EC.0020.0004.3369][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+2485 ; [*02FB.0020.0004.2485][.15E6.0020.0004.2485][.15ED.0020.0004.2485][*02FC.0020.001F.2485] # PARENTHESIZED NUMBER EIGHTEEN
+2499 ; [.15E6.0020.0004.2499][.15ED.0020.0004.2499][*0273.0020.001F.2499] # NUMBER EIGHTEEN FULL STOP
+2471 ; [.15E6.0020.0006.2471][.15ED.0020.0006.2471] # CIRCLED NUMBER EIGHTEEN
+24F2 ; [.15E6.0020.0006.24F2][.15ED.0020.0006.24F2] # NEGATIVE CIRCLED NUMBER EIGHTEEN
+215B ; [.15E6.0020.001E.215B][*05AC.0020.001E.215B][.15ED.0020.001E.215B] # VULGAR FRACTION ONE EIGHTH
+33F1 ; [.15E6.0020.0004.33F1][.15ED.0020.0004.33F1][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+336A ; [.15E6.0020.0004.336A][.15ED.0020.0004.336A][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+2486 ; [*02FB.0020.0004.2486][.15E6.0020.0004.2486][.15EE.0020.0004.2486][*02FC.0020.001F.2486] # PARENTHESIZED NUMBER NINETEEN
+249A ; [.15E6.0020.0004.249A][.15EE.0020.0004.249A][*0273.0020.001F.249A] # NUMBER NINETEEN FULL STOP
+2472 ; [.15E6.0020.0006.2472][.15EE.0020.0006.2472] # CIRCLED NUMBER NINETEEN
+24F3 ; [.15E6.0020.0006.24F3][.15EE.0020.0006.24F3] # NEGATIVE CIRCLED NUMBER NINETEEN
+2151 ; [.15E6.0020.001E.2151][*05AC.0020.001E.2151][.15EE.0020.001E.2151] # VULGAR FRACTION ONE NINTH
+33F2 ; [.15E6.0020.0004.33F2][.15EE.0020.0004.33F2][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+336B ; [.15E6.0020.0004.336B][.15EE.0020.0004.336B][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+33E0 ; [.15E6.0020.0004.33E0][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+32C0 ; [.15E6.0020.0004.32C0][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+3359 ; [.15E6.0020.0004.3359][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+0032 ; [.15E7.0020.0002.0032] # DIGIT TWO
+FF12 ; [.15E7.0020.0003.FF12] # FULLWIDTH DIGIT TWO
+2475 ; [*02FB.0020.0004.2475][.15E7.0020.0004.2475][*02FC.0020.001F.2475] # PARENTHESIZED DIGIT TWO
+2489 ; [.15E7.0020.0004.2489][*0273.0020.001F.2489] # DIGIT TWO FULL STOP
+1F103 ; [.15E7.0020.0004.1F103][*0221.0020.001F.1F103] # DIGIT TWO COMMA
+1D7D0 ; [.15E7.0020.0005.1D7D0] # MATHEMATICAL BOLD DIGIT TWO
+1D7DA ; [.15E7.0020.0005.1D7DA] # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
+1D7E4 ; [.15E7.0020.0005.1D7E4] # MATHEMATICAL SANS-SERIF DIGIT TWO
+1D7EE ; [.15E7.0020.0005.1D7EE] # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
+1D7F8 ; [.15E7.0020.0005.1D7F8] # MATHEMATICAL MONOSPACE DIGIT TWO
+2461 ; [.15E7.0020.0006.2461] # CIRCLED DIGIT TWO
+24F6 ; [.15E7.0020.0006.24F6] # DOUBLE CIRCLED DIGIT TWO
+2777 ; [.15E7.0020.0006.2777] # DINGBAT NEGATIVE CIRCLED DIGIT TWO
+2781 ; [.15E7.0020.0006.2781] # DINGBAT CIRCLED SANS-SERIF DIGIT TWO
+278B ; [.15E7.0020.0006.278B] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
+00B2 ; [.15E7.0020.0014.00B2] # SUPERSCRIPT TWO
+2082 ; [.15E7.0020.0015.2082] # SUBSCRIPT TWO
+0662 ; [.15E7.0020.0002.0662][.0000.013F.0002.0662] # ARABIC-INDIC DIGIT TWO
+06F2 ; [.15E7.0020.0002.06F2][.0000.0140.0002.06F2] # EXTENDED ARABIC-INDIC DIGIT TWO
+10E61 ; [.15E7.0020.0002.10E61][.0000.0141.0002.10E61] # RUMI DIGIT TWO
+07C2 ; [.15E7.0020.0002.07C2][.0000.0142.0002.07C2] # NKO DIGIT TWO
+136A ; [.15E7.0020.0002.136A][.0000.0143.0002.136A] # ETHIOPIC DIGIT TWO
+104A2 ; [.15E7.0020.0002.104A2][.0000.0144.0002.104A2] # OSMANYA DIGIT TWO
+0968 ; [.15E7.0020.0002.0968][.0000.0145.0002.0968] # DEVANAGARI DIGIT TWO
+09E8 ; [.15E7.0020.0002.09E8][.0000.0146.0002.09E8] # BENGALI DIGIT TWO
+0A68 ; [.15E7.0020.0002.0A68][.0000.0147.0002.0A68] # GURMUKHI DIGIT TWO
+0AE8 ; [.15E7.0020.0002.0AE8][.0000.0148.0002.0AE8] # GUJARATI DIGIT TWO
+0B68 ; [.15E7.0020.0002.0B68][.0000.0149.0002.0B68] # ORIYA DIGIT TWO
+0BE8 ; [.15E7.0020.0002.0BE8][.0000.014A.0002.0BE8] # TAMIL DIGIT TWO
+0C68 ; [.15E7.0020.0002.0C68][.0000.014B.0002.0C68] # TELUGU DIGIT TWO
+0C7A ; [.15E7.0020.0002.0C7A][.0000.014B.0002.0C7A] # TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR
+0C7D ; [.15E7.0020.0002.0C7D][.0000.014B.0002.0C7D] # TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR
+0CE8 ; [.15E7.0020.0002.0CE8][.0000.014C.0002.0CE8] # KANNADA DIGIT TWO
+0D68 ; [.15E7.0020.0002.0D68][.0000.014D.0002.0D68] # MALAYALAM DIGIT TWO
+ABF2 ; [.15E7.0020.0002.ABF2][.0000.014E.0002.ABF2] # MEETEI MAYEK DIGIT TWO
+A8D2 ; [.15E7.0020.0002.A8D2][.0000.014F.0002.A8D2] # SAURASHTRA DIGIT TWO
+1948 ; [.15E7.0020.0002.1948][.0000.0150.0002.1948] # LIMBU DIGIT TWO
+19D2 ; [.15E7.0020.0002.19D2][.0000.0151.0002.19D2] # NEW TAI LUE DIGIT TWO
+1A82 ; [.15E7.0020.0002.1A82][.0000.0152.0002.1A82] # TAI THAM HORA DIGIT TWO
+1A92 ; [.15E7.0020.0002.1A92][.0000.0153.0002.1A92] # TAI THAM THAM DIGIT TWO
+0E52 ; [.15E7.0020.0002.0E52][.0000.0154.0002.0E52] # THAI DIGIT TWO
+0ED2 ; [.15E7.0020.0002.0ED2][.0000.0155.0002.0ED2] # LAO DIGIT TWO
+0F22 ; [.15E7.0020.0002.0F22][.0000.0156.0002.0F22] # TIBETAN DIGIT TWO
+0F2B ; [.15E7.0020.0004.0F2B][.0000.0156.0004.0F2B] # TIBETAN DIGIT HALF TWO
+1C42 ; [.15E7.0020.0002.1C42][.0000.0157.0002.1C42] # LEPCHA DIGIT TWO
+A902 ; [.15E7.0020.0002.A902][.0000.0158.0002.A902] # KAYAH LI DIGIT TWO
+1042 ; [.15E7.0020.0002.1042][.0000.0159.0002.1042] # MYANMAR DIGIT TWO
+1092 ; [.15E7.0020.0002.1092][.0000.015A.0002.1092] # MYANMAR SHAN DIGIT TWO
+11138 ; [.15E7.0020.0002.11138][.0000.015B.0002.11138] # CHAKMA DIGIT TWO
+17E2 ; [.15E7.0020.0002.17E2][.0000.015C.0002.17E2] # KHMER DIGIT TWO
+17F2 ; [.15E7.0020.0002.17F2][.0000.015D.0002.17F2] # KHMER SYMBOL LEK ATTAK PII
+AA52 ; [.15E7.0020.0002.AA52][.0000.015E.0002.AA52] # CHAM DIGIT TWO
+1B52 ; [.15E7.0020.0002.1B52][.0000.015F.0002.1B52] # BALINESE DIGIT TWO
+A9D2 ; [.15E7.0020.0002.A9D2][.0000.0160.0002.A9D2] # JAVANESE DIGIT TWO
+1BB2 ; [.15E7.0020.0002.1BB2][.0000.0161.0002.1BB2] # SUNDANESE DIGIT TWO
+1812 ; [.15E7.0020.0002.1812][.0000.0162.0002.1812] # MONGOLIAN DIGIT TWO
+1C52 ; [.15E7.0020.0002.1C52][.0000.0163.0002.1C52] # OL CHIKI DIGIT TWO
+A622 ; [.15E7.0020.0002.A622][.0000.0164.0002.A622] # VAI DIGIT TWO
+110F2 ; [.15E7.0020.0002.110F2][.0000.0165.0002.110F2] # SORA SOMPENG DIGIT TWO
+3022 ; [.15E7.0020.0002.3022][.0000.0166.0002.3022] # HANGZHOU NUMERAL TWO
+10108 ; [.15E7.0020.0002.10108][.0000.0167.0002.10108] # AEGEAN NUMBER TWO
+1015B ; [.15E7.0020.0002.1015B][.0000.0168.0002.1015B] # GREEK ACROPHONIC EPIDAUREAN TWO
+1015C ; [.15E7.0020.0002.1015C][.0000.0168.0002.1015C] # GREEK ACROPHONIC THESPIAN TWO
+1015D ; [.15E7.0020.0002.1015D][.0000.0168.0002.1015D] # GREEK ACROPHONIC CYRENAIC TWO DRACHMAS
+1015E ; [.15E7.0020.0002.1015E][.0000.0168.0002.1015E] # GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS
+103D2 ; [.15E7.0020.0002.103D2][.0000.016B.0002.103D2] # OLD PERSIAN NUMBER TWO
+12400 ; [.15E7.0020.0002.12400][.0000.016C.0002.12400] # CUNEIFORM NUMERIC SIGN TWO ASH
+12416 ; [.15E7.0020.0002.12416][.0000.016C.0002.12416] # CUNEIFORM NUMERIC SIGN TWO GESH2
+1241F ; [.15E7.0020.0002.1241F][.0000.016C.0002.1241F] # CUNEIFORM NUMERIC SIGN TWO GESHU
+12423 ; [.15E7.0020.0002.12423][.0000.016C.0002.12423] # CUNEIFORM NUMERIC SIGN TWO SHAR2
+1242D ; [.15E7.0020.0002.1242D][.0000.016C.0002.1242D] # CUNEIFORM NUMERIC SIGN TWO SHARU
+12435 ; [.15E7.0020.0002.12435][.0000.016C.0002.12435] # CUNEIFORM NUMERIC SIGN TWO BURU
+1244A ; [.15E7.0020.0002.1244A][.0000.016C.0002.1244A] # CUNEIFORM NUMERIC SIGN TWO ASH TENU
+12450 ; [.15E7.0020.0002.12450][.0000.016C.0002.12450] # CUNEIFORM NUMERIC SIGN TWO BAN2
+12459 ; [.15E7.0020.0002.12459][.0000.016C.0002.12459] # CUNEIFORM NUMERIC SIGN TWO ESHE3
+1091A ; [.15E7.0020.0002.1091A][.0000.016E.0002.1091A] # PHOENICIAN NUMBER TWO
+10859 ; [.15E7.0020.0002.10859][.0000.016F.0002.10859] # IMPERIAL ARAMAIC NUMBER TWO
+10B59 ; [.15E7.0020.0002.10B59][.0000.0170.0002.10B59] # INSCRIPTIONAL PARTHIAN NUMBER TWO
+10B79 ; [.15E7.0020.0002.10B79][.0000.0171.0002.10B79] # INSCRIPTIONAL PAHLAVI NUMBER TWO
+111D2 ; [.15E7.0020.0002.111D2][.0000.0172.0002.111D2] # SHARADA DIGIT TWO
+116C2 ; [.15E7.0020.0002.116C2][.0000.0173.0002.116C2] # TAKRI DIGIT TWO
+11068 ; [.15E7.0020.0002.11068][.0000.0174.0002.11068] # BRAHMI DIGIT TWO
+11053 ; [.15E7.0020.0002.11053][.0000.0175.0002.11053] # BRAHMI NUMBER TWO
+10A41 ; [.15E7.0020.0002.10A41][.0000.0176.0002.10A41] # KHAROSHTHI DIGIT TWO
+1D361 ; [.15E7.0020.0002.1D361][.0000.0177.0002.1D361] # COUNTING ROD UNIT DIGIT TWO
+2487 ; [*02FB.0020.0004.2487][.15E7.0020.0004.2487][.15E5.0020.0004.2487][*02FC.0020.001F.2487] # PARENTHESIZED NUMBER TWENTY
+249B ; [.15E7.0020.0004.249B][.15E5.0020.0004.249B][*0273.0020.001F.249B] # NUMBER TWENTY FULL STOP
+2473 ; [.15E7.0020.0006.2473][.15E5.0020.0006.2473] # CIRCLED NUMBER TWENTY
+24F4 ; [.15E7.0020.0006.24F4][.15E5.0020.0006.24F4] # NEGATIVE CIRCLED NUMBER TWENTY
+3249 ; [.15E7.0020.0006.3249][.15E5.0020.0006.3249] # CIRCLED NUMBER TWENTY ON BLACK SQUARE
+33F3 ; [.15E7.0020.0004.33F3][.15E5.0020.0004.33F3][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+336C ; [.15E7.0020.0004.336C][.15E5.0020.0004.336C][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+3251 ; [.15E7.0020.0006.3251][.15E6.0020.0006.3251] # CIRCLED NUMBER TWENTY ONE
+33F4 ; [.15E7.0020.0004.33F4][.15E6.0020.0004.33F4][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+336D ; [.15E7.0020.0004.336D][.15E6.0020.0004.336D][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+3252 ; [.15E7.0020.0006.3252][.15E7.0020.0006.3252] # CIRCLED NUMBER TWENTY TWO
+33F5 ; [.15E7.0020.0004.33F5][.15E7.0020.0004.33F5][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+336E ; [.15E7.0020.0004.336E][.15E7.0020.0004.336E][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+3253 ; [.15E7.0020.0006.3253][.15E8.0020.0006.3253] # CIRCLED NUMBER TWENTY THREE
+2154 ; [.15E7.0020.001E.2154][*05AC.0020.001E.2154][.15E8.0020.001E.2154] # VULGAR FRACTION TWO THIRDS
+33F6 ; [.15E7.0020.0004.33F6][.15E8.0020.0004.33F6][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+336F ; [.15E7.0020.0004.336F][.15E8.0020.0004.336F][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+3254 ; [.15E7.0020.0006.3254][.15E9.0020.0006.3254] # CIRCLED NUMBER TWENTY FOUR
+33F7 ; [.15E7.0020.0004.33F7][.15E9.0020.0004.33F7][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+3370 ; [.15E7.0020.0004.3370][.15E9.0020.0004.3370][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+3255 ; [.15E7.0020.0006.3255][.15EA.0020.0006.3255] # CIRCLED NUMBER TWENTY FIVE
+2156 ; [.15E7.0020.001E.2156][*05AC.0020.001E.2156][.15EA.0020.001E.2156] # VULGAR FRACTION TWO FIFTHS
+33F8 ; [.15E7.0020.0004.33F8][.15EA.0020.0004.33F8][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+3256 ; [.15E7.0020.0006.3256][.15EB.0020.0006.3256] # CIRCLED NUMBER TWENTY SIX
+33F9 ; [.15E7.0020.0004.33F9][.15EB.0020.0004.33F9][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+3257 ; [.15E7.0020.0006.3257][.15EC.0020.0006.3257] # CIRCLED NUMBER TWENTY SEVEN
+33FA ; [.15E7.0020.0004.33FA][.15EC.0020.0004.33FA][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+3258 ; [.15E7.0020.0006.3258][.15ED.0020.0006.3258] # CIRCLED NUMBER TWENTY EIGHT
+33FB ; [.15E7.0020.0004.33FB][.15ED.0020.0004.33FB][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+3259 ; [.15E7.0020.0006.3259][.15EE.0020.0006.3259] # CIRCLED NUMBER TWENTY NINE
+33FC ; [.15E7.0020.0004.33FC][.15EE.0020.0004.33FC][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33E1 ; [.15E7.0020.0004.33E1][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+32C1 ; [.15E7.0020.0004.32C1][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+335A ; [.15E7.0020.0004.335A][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+0033 ; [.15E8.0020.0002.0033] # DIGIT THREE
+FF13 ; [.15E8.0020.0003.FF13] # FULLWIDTH DIGIT THREE
+2476 ; [*02FB.0020.0004.2476][.15E8.0020.0004.2476][*02FC.0020.001F.2476] # PARENTHESIZED DIGIT THREE
+248A ; [.15E8.0020.0004.248A][*0273.0020.001F.248A] # DIGIT THREE FULL STOP
+1F104 ; [.15E8.0020.0004.1F104][*0221.0020.001F.1F104] # DIGIT THREE COMMA
+1D7D1 ; [.15E8.0020.0005.1D7D1] # MATHEMATICAL BOLD DIGIT THREE
+1D7DB ; [.15E8.0020.0005.1D7DB] # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
+1D7E5 ; [.15E8.0020.0005.1D7E5] # MATHEMATICAL SANS-SERIF DIGIT THREE
+1D7EF ; [.15E8.0020.0005.1D7EF] # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
+1D7F9 ; [.15E8.0020.0005.1D7F9] # MATHEMATICAL MONOSPACE DIGIT THREE
+2462 ; [.15E8.0020.0006.2462] # CIRCLED DIGIT THREE
+24F7 ; [.15E8.0020.0006.24F7] # DOUBLE CIRCLED DIGIT THREE
+2778 ; [.15E8.0020.0006.2778] # DINGBAT NEGATIVE CIRCLED DIGIT THREE
+2782 ; [.15E8.0020.0006.2782] # DINGBAT CIRCLED SANS-SERIF DIGIT THREE
+278C ; [.15E8.0020.0006.278C] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
+00B3 ; [.15E8.0020.0014.00B3] # SUPERSCRIPT THREE
+2083 ; [.15E8.0020.0015.2083] # SUBSCRIPT THREE
+0663 ; [.15E8.0020.0002.0663][.0000.013F.0002.0663] # ARABIC-INDIC DIGIT THREE
+06F3 ; [.15E8.0020.0002.06F3][.0000.0140.0002.06F3] # EXTENDED ARABIC-INDIC DIGIT THREE
+10E62 ; [.15E8.0020.0002.10E62][.0000.0141.0002.10E62] # RUMI DIGIT THREE
+07C3 ; [.15E8.0020.0002.07C3][.0000.0142.0002.07C3] # NKO DIGIT THREE
+136B ; [.15E8.0020.0002.136B][.0000.0143.0002.136B] # ETHIOPIC DIGIT THREE
+104A3 ; [.15E8.0020.0002.104A3][.0000.0144.0002.104A3] # OSMANYA DIGIT THREE
+0969 ; [.15E8.0020.0002.0969][.0000.0145.0002.0969] # DEVANAGARI DIGIT THREE
+09E9 ; [.15E8.0020.0002.09E9][.0000.0146.0002.09E9] # BENGALI DIGIT THREE
+0A69 ; [.15E8.0020.0002.0A69][.0000.0147.0002.0A69] # GURMUKHI DIGIT THREE
+0AE9 ; [.15E8.0020.0002.0AE9][.0000.0148.0002.0AE9] # GUJARATI DIGIT THREE
+0B69 ; [.15E8.0020.0002.0B69][.0000.0149.0002.0B69] # ORIYA DIGIT THREE
+0BE9 ; [.15E8.0020.0002.0BE9][.0000.014A.0002.0BE9] # TAMIL DIGIT THREE
+0C69 ; [.15E8.0020.0002.0C69][.0000.014B.0002.0C69] # TELUGU DIGIT THREE
+0C7B ; [.15E8.0020.0002.0C7B][.0000.014B.0002.0C7B] # TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR
+0C7E ; [.15E8.0020.0002.0C7E][.0000.014B.0002.0C7E] # TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
+0CE9 ; [.15E8.0020.0002.0CE9][.0000.014C.0002.0CE9] # KANNADA DIGIT THREE
+0D69 ; [.15E8.0020.0002.0D69][.0000.014D.0002.0D69] # MALAYALAM DIGIT THREE
+ABF3 ; [.15E8.0020.0002.ABF3][.0000.014E.0002.ABF3] # MEETEI MAYEK DIGIT THREE
+A8D3 ; [.15E8.0020.0002.A8D3][.0000.014F.0002.A8D3] # SAURASHTRA DIGIT THREE
+1949 ; [.15E8.0020.0002.1949][.0000.0150.0002.1949] # LIMBU DIGIT THREE
+19D3 ; [.15E8.0020.0002.19D3][.0000.0151.0002.19D3] # NEW TAI LUE DIGIT THREE
+1A83 ; [.15E8.0020.0002.1A83][.0000.0152.0002.1A83] # TAI THAM HORA DIGIT THREE
+1A93 ; [.15E8.0020.0002.1A93][.0000.0153.0002.1A93] # TAI THAM THAM DIGIT THREE
+0E53 ; [.15E8.0020.0002.0E53][.0000.0154.0002.0E53] # THAI DIGIT THREE
+0ED3 ; [.15E8.0020.0002.0ED3][.0000.0155.0002.0ED3] # LAO DIGIT THREE
+0F23 ; [.15E8.0020.0002.0F23][.0000.0156.0002.0F23] # TIBETAN DIGIT THREE
+0F2C ; [.15E8.0020.0004.0F2C][.0000.0156.0004.0F2C] # TIBETAN DIGIT HALF THREE
+1C43 ; [.15E8.0020.0002.1C43][.0000.0157.0002.1C43] # LEPCHA DIGIT THREE
+A903 ; [.15E8.0020.0002.A903][.0000.0158.0002.A903] # KAYAH LI DIGIT THREE
+1043 ; [.15E8.0020.0002.1043][.0000.0159.0002.1043] # MYANMAR DIGIT THREE
+1093 ; [.15E8.0020.0002.1093][.0000.015A.0002.1093] # MYANMAR SHAN DIGIT THREE
+11139 ; [.15E8.0020.0002.11139][.0000.015B.0002.11139] # CHAKMA DIGIT THREE
+17E3 ; [.15E8.0020.0002.17E3][.0000.015C.0002.17E3] # KHMER DIGIT THREE
+17F3 ; [.15E8.0020.0002.17F3][.0000.015D.0002.17F3] # KHMER SYMBOL LEK ATTAK BEI
+AA53 ; [.15E8.0020.0002.AA53][.0000.015E.0002.AA53] # CHAM DIGIT THREE
+1B53 ; [.15E8.0020.0002.1B53][.0000.015F.0002.1B53] # BALINESE DIGIT THREE
+A9D3 ; [.15E8.0020.0002.A9D3][.0000.0160.0002.A9D3] # JAVANESE DIGIT THREE
+1BB3 ; [.15E8.0020.0002.1BB3][.0000.0161.0002.1BB3] # SUNDANESE DIGIT THREE
+1813 ; [.15E8.0020.0002.1813][.0000.0162.0002.1813] # MONGOLIAN DIGIT THREE
+1C53 ; [.15E8.0020.0002.1C53][.0000.0163.0002.1C53] # OL CHIKI DIGIT THREE
+A623 ; [.15E8.0020.0002.A623][.0000.0164.0002.A623] # VAI DIGIT THREE
+110F3 ; [.15E8.0020.0002.110F3][.0000.0165.0002.110F3] # SORA SOMPENG DIGIT THREE
+3023 ; [.15E8.0020.0002.3023][.0000.0166.0002.3023] # HANGZHOU NUMERAL THREE
+10109 ; [.15E8.0020.0002.10109][.0000.0167.0002.10109] # AEGEAN NUMBER THREE
+12401 ; [.15E8.0020.0002.12401][.0000.016C.0002.12401] # CUNEIFORM NUMERIC SIGN THREE ASH
+12408 ; [.15E8.0020.0002.12408][.0000.016C.0002.12408] # CUNEIFORM NUMERIC SIGN THREE DISH
+12417 ; [.15E8.0020.0002.12417][.0000.016C.0002.12417] # CUNEIFORM NUMERIC SIGN THREE GESH2
+12420 ; [.15E8.0020.0002.12420][.0000.016C.0002.12420] # CUNEIFORM NUMERIC SIGN THREE GESHU
+12424 ; [.15E8.0020.0002.12424][.0000.016C.0002.12424] # CUNEIFORM NUMERIC SIGN THREE SHAR2
+12425 ; [.15E8.0020.0002.12425][.0000.016C.0002.12425] # CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM
+1242E ; [.15E8.0020.0002.1242E][.0000.016C.0002.1242E] # CUNEIFORM NUMERIC SIGN THREE SHARU
+1242F ; [.15E8.0020.0002.1242F][.0000.016C.0002.1242F] # CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM
+12436 ; [.15E8.0020.0002.12436][.0000.016C.0002.12436] # CUNEIFORM NUMERIC SIGN THREE BURU
+12437 ; [.15E8.0020.0002.12437][.0000.016C.0002.12437] # CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM
+1243A ; [.15E8.0020.0002.1243A][.0000.016C.0002.1243A] # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16
+1243B ; [.15E8.0020.0002.1243B][.0000.016C.0002.1243B] # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21
+1244B ; [.15E8.0020.0002.1244B][.0000.016C.0002.1244B] # CUNEIFORM NUMERIC SIGN THREE ASH TENU
+12451 ; [.15E8.0020.0002.12451][.0000.016C.0002.12451] # CUNEIFORM NUMERIC SIGN THREE BAN2
+1091B ; [.15E8.0020.0002.1091B][.0000.016E.0002.1091B] # PHOENICIAN NUMBER THREE
+1085A ; [.15E8.0020.0002.1085A][.0000.016F.0002.1085A] # IMPERIAL ARAMAIC NUMBER THREE
+10B5A ; [.15E8.0020.0002.10B5A][.0000.0170.0002.10B5A] # INSCRIPTIONAL PARTHIAN NUMBER THREE
+10B7A ; [.15E8.0020.0002.10B7A][.0000.0171.0002.10B7A] # INSCRIPTIONAL PAHLAVI NUMBER THREE
+111D3 ; [.15E8.0020.0002.111D3][.0000.0172.0002.111D3] # SHARADA DIGIT THREE
+116C3 ; [.15E8.0020.0002.116C3][.0000.0173.0002.116C3] # TAKRI DIGIT THREE
+11069 ; [.15E8.0020.0002.11069][.0000.0174.0002.11069] # BRAHMI DIGIT THREE
+11054 ; [.15E8.0020.0002.11054][.0000.0175.0002.11054] # BRAHMI NUMBER THREE
+10A42 ; [.15E8.0020.0002.10A42][.0000.0176.0002.10A42] # KHAROSHTHI DIGIT THREE
+1D362 ; [.15E8.0020.0002.1D362][.0000.0177.0002.1D362] # COUNTING ROD UNIT DIGIT THREE
+324A ; [.15E8.0020.0006.324A][.15E5.0020.0006.324A] # CIRCLED NUMBER THIRTY ON BLACK SQUARE
+325A ; [.15E8.0020.0006.325A][.15E5.0020.0006.325A] # CIRCLED NUMBER THIRTY
+33FD ; [.15E8.0020.0004.33FD][.15E5.0020.0004.33FD][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+325B ; [.15E8.0020.0006.325B][.15E6.0020.0006.325B] # CIRCLED NUMBER THIRTY ONE
+33FE ; [.15E8.0020.0004.33FE][.15E6.0020.0004.33FE][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+325C ; [.15E8.0020.0006.325C][.15E7.0020.0006.325C] # CIRCLED NUMBER THIRTY TWO
+325D ; [.15E8.0020.0006.325D][.15E8.0020.0006.325D] # CIRCLED NUMBER THIRTY THREE
+325E ; [.15E8.0020.0006.325E][.15E9.0020.0006.325E] # CIRCLED NUMBER THIRTY FOUR
+00BE ; [.15E8.0020.001E.00BE][*05AC.0020.001E.00BE][.15E9.0020.001E.00BE] # VULGAR FRACTION THREE QUARTERS
+325F ; [.15E8.0020.0006.325F][.15EA.0020.0006.325F] # CIRCLED NUMBER THIRTY FIVE
+2157 ; [.15E8.0020.001E.2157][*05AC.0020.001E.2157][.15EA.0020.001E.2157] # VULGAR FRACTION THREE FIFTHS
+32B1 ; [.15E8.0020.0006.32B1][.15EB.0020.0006.32B1] # CIRCLED NUMBER THIRTY SIX
+32B2 ; [.15E8.0020.0006.32B2][.15EC.0020.0006.32B2] # CIRCLED NUMBER THIRTY SEVEN
+32B3 ; [.15E8.0020.0006.32B3][.15ED.0020.0006.32B3] # CIRCLED NUMBER THIRTY EIGHT
+215C ; [.15E8.0020.001E.215C][*05AC.0020.001E.215C][.15ED.0020.001E.215C] # VULGAR FRACTION THREE EIGHTHS
+32B4 ; [.15E8.0020.0006.32B4][.15EE.0020.0006.32B4] # CIRCLED NUMBER THIRTY NINE
+33E2 ; [.15E8.0020.0004.33E2][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+32C2 ; [.15E8.0020.0004.32C2][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+335B ; [.15E8.0020.0004.335B][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+0034 ; [.15E9.0020.0002.0034] # DIGIT FOUR
+FF14 ; [.15E9.0020.0003.FF14] # FULLWIDTH DIGIT FOUR
+2477 ; [*02FB.0020.0004.2477][.15E9.0020.0004.2477][*02FC.0020.001F.2477] # PARENTHESIZED DIGIT FOUR
+248B ; [.15E9.0020.0004.248B][*0273.0020.001F.248B] # DIGIT FOUR FULL STOP
+1F105 ; [.15E9.0020.0004.1F105][*0221.0020.001F.1F105] # DIGIT FOUR COMMA
+1D7D2 ; [.15E9.0020.0005.1D7D2] # MATHEMATICAL BOLD DIGIT FOUR
+1D7DC ; [.15E9.0020.0005.1D7DC] # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
+1D7E6 ; [.15E9.0020.0005.1D7E6] # MATHEMATICAL SANS-SERIF DIGIT FOUR
+1D7F0 ; [.15E9.0020.0005.1D7F0] # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
+1D7FA ; [.15E9.0020.0005.1D7FA] # MATHEMATICAL MONOSPACE DIGIT FOUR
+2463 ; [.15E9.0020.0006.2463] # CIRCLED DIGIT FOUR
+24F8 ; [.15E9.0020.0006.24F8] # DOUBLE CIRCLED DIGIT FOUR
+2779 ; [.15E9.0020.0006.2779] # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+2783 ; [.15E9.0020.0006.2783] # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
+278D ; [.15E9.0020.0006.278D] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
+2074 ; [.15E9.0020.0014.2074] # SUPERSCRIPT FOUR
+2084 ; [.15E9.0020.0015.2084] # SUBSCRIPT FOUR
+0664 ; [.15E9.0020.0002.0664][.0000.013F.0002.0664] # ARABIC-INDIC DIGIT FOUR
+06F4 ; [.15E9.0020.0002.06F4][.0000.0140.0002.06F4] # EXTENDED ARABIC-INDIC DIGIT FOUR
+10E63 ; [.15E9.0020.0002.10E63][.0000.0141.0002.10E63] # RUMI DIGIT FOUR
+07C4 ; [.15E9.0020.0002.07C4][.0000.0142.0002.07C4] # NKO DIGIT FOUR
+136C ; [.15E9.0020.0002.136C][.0000.0143.0002.136C] # ETHIOPIC DIGIT FOUR
+104A4 ; [.15E9.0020.0002.104A4][.0000.0144.0002.104A4] # OSMANYA DIGIT FOUR
+096A ; [.15E9.0020.0002.096A][.0000.0145.0002.096A] # DEVANAGARI DIGIT FOUR
+09EA ; [.15E9.0020.0002.09EA][.0000.0146.0002.09EA] # BENGALI DIGIT FOUR
+0A6A ; [.15E9.0020.0002.0A6A][.0000.0147.0002.0A6A] # GURMUKHI DIGIT FOUR
+0AEA ; [.15E9.0020.0002.0AEA][.0000.0148.0002.0AEA] # GUJARATI DIGIT FOUR
+0B6A ; [.15E9.0020.0002.0B6A][.0000.0149.0002.0B6A] # ORIYA DIGIT FOUR
+0BEA ; [.15E9.0020.0002.0BEA][.0000.014A.0002.0BEA] # TAMIL DIGIT FOUR
+0C6A ; [.15E9.0020.0002.0C6A][.0000.014B.0002.0C6A] # TELUGU DIGIT FOUR
+0CEA ; [.15E9.0020.0002.0CEA][.0000.014C.0002.0CEA] # KANNADA DIGIT FOUR
+0D6A ; [.15E9.0020.0002.0D6A][.0000.014D.0002.0D6A] # MALAYALAM DIGIT FOUR
+ABF4 ; [.15E9.0020.0002.ABF4][.0000.014E.0002.ABF4] # MEETEI MAYEK DIGIT FOUR
+A8D4 ; [.15E9.0020.0002.A8D4][.0000.014F.0002.A8D4] # SAURASHTRA DIGIT FOUR
+194A ; [.15E9.0020.0002.194A][.0000.0150.0002.194A] # LIMBU DIGIT FOUR
+19D4 ; [.15E9.0020.0002.19D4][.0000.0151.0002.19D4] # NEW TAI LUE DIGIT FOUR
+1A84 ; [.15E9.0020.0002.1A84][.0000.0152.0002.1A84] # TAI THAM HORA DIGIT FOUR
+1A94 ; [.15E9.0020.0002.1A94][.0000.0153.0002.1A94] # TAI THAM THAM DIGIT FOUR
+0E54 ; [.15E9.0020.0002.0E54][.0000.0154.0002.0E54] # THAI DIGIT FOUR
+0ED4 ; [.15E9.0020.0002.0ED4][.0000.0155.0002.0ED4] # LAO DIGIT FOUR
+0F24 ; [.15E9.0020.0002.0F24][.0000.0156.0002.0F24] # TIBETAN DIGIT FOUR
+0F2D ; [.15E9.0020.0004.0F2D][.0000.0156.0004.0F2D] # TIBETAN DIGIT HALF FOUR
+1C44 ; [.15E9.0020.0002.1C44][.0000.0157.0002.1C44] # LEPCHA DIGIT FOUR
+A904 ; [.15E9.0020.0002.A904][.0000.0158.0002.A904] # KAYAH LI DIGIT FOUR
+1044 ; [.15E9.0020.0002.1044][.0000.0159.0002.1044] # MYANMAR DIGIT FOUR
+1094 ; [.15E9.0020.0002.1094][.0000.015A.0002.1094] # MYANMAR SHAN DIGIT FOUR
+1113A ; [.15E9.0020.0002.1113A][.0000.015B.0002.1113A] # CHAKMA DIGIT FOUR
+17E4 ; [.15E9.0020.0002.17E4][.0000.015C.0002.17E4] # KHMER DIGIT FOUR
+17F4 ; [.15E9.0020.0002.17F4][.0000.015D.0002.17F4] # KHMER SYMBOL LEK ATTAK BUON
+AA54 ; [.15E9.0020.0002.AA54][.0000.015E.0002.AA54] # CHAM DIGIT FOUR
+1B54 ; [.15E9.0020.0002.1B54][.0000.015F.0002.1B54] # BALINESE DIGIT FOUR
+A9D4 ; [.15E9.0020.0002.A9D4][.0000.0160.0002.A9D4] # JAVANESE DIGIT FOUR
+1BB4 ; [.15E9.0020.0002.1BB4][.0000.0161.0002.1BB4] # SUNDANESE DIGIT FOUR
+1814 ; [.15E9.0020.0002.1814][.0000.0162.0002.1814] # MONGOLIAN DIGIT FOUR
+1C54 ; [.15E9.0020.0002.1C54][.0000.0163.0002.1C54] # OL CHIKI DIGIT FOUR
+A624 ; [.15E9.0020.0002.A624][.0000.0164.0002.A624] # VAI DIGIT FOUR
+110F4 ; [.15E9.0020.0002.110F4][.0000.0165.0002.110F4] # SORA SOMPENG DIGIT FOUR
+3024 ; [.15E9.0020.0002.3024][.0000.0166.0002.3024] # HANGZHOU NUMERAL FOUR
+1010A ; [.15E9.0020.0002.1010A][.0000.0167.0002.1010A] # AEGEAN NUMBER FOUR
+12402 ; [.15E9.0020.0002.12402][.0000.016C.0002.12402] # CUNEIFORM NUMERIC SIGN FOUR ASH
+12409 ; [.15E9.0020.0002.12409][.0000.016C.0002.12409] # CUNEIFORM NUMERIC SIGN FOUR DISH
+1240F ; [.15E9.0020.0002.1240F][.0000.016C.0002.1240F] # CUNEIFORM NUMERIC SIGN FOUR U
+12418 ; [.15E9.0020.0002.12418][.0000.016C.0002.12418] # CUNEIFORM NUMERIC SIGN FOUR GESH2
+12421 ; [.15E9.0020.0002.12421][.0000.016C.0002.12421] # CUNEIFORM NUMERIC SIGN FOUR GESHU
+12426 ; [.15E9.0020.0002.12426][.0000.016C.0002.12426] # CUNEIFORM NUMERIC SIGN FOUR SHAR2
+12430 ; [.15E9.0020.0002.12430][.0000.016C.0002.12430] # CUNEIFORM NUMERIC SIGN FOUR SHARU
+12438 ; [.15E9.0020.0002.12438][.0000.016C.0002.12438] # CUNEIFORM NUMERIC SIGN FOUR BURU
+1243C ; [.15E9.0020.0002.1243C][.0000.016C.0002.1243C] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU
+1243D ; [.15E9.0020.0002.1243D][.0000.016C.0002.1243D] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4
+1243E ; [.15E9.0020.0002.1243E][.0000.016C.0002.1243E] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A
+1243F ; [.15E9.0020.0002.1243F][.0000.016C.0002.1243F] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B
+1244C ; [.15E9.0020.0002.1244C][.0000.016C.0002.1244C] # CUNEIFORM NUMERIC SIGN FOUR ASH TENU
+12452 ; [.15E9.0020.0002.12452][.0000.016C.0002.12452] # CUNEIFORM NUMERIC SIGN FOUR BAN2
+12453 ; [.15E9.0020.0002.12453][.0000.016C.0002.12453] # CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM
+10B5B ; [.15E9.0020.0002.10B5B][.0000.0170.0002.10B5B] # INSCRIPTIONAL PARTHIAN NUMBER FOUR
+10B7B ; [.15E9.0020.0002.10B7B][.0000.0171.0002.10B7B] # INSCRIPTIONAL PAHLAVI NUMBER FOUR
+111D4 ; [.15E9.0020.0002.111D4][.0000.0172.0002.111D4] # SHARADA DIGIT FOUR
+116C4 ; [.15E9.0020.0002.116C4][.0000.0173.0002.116C4] # TAKRI DIGIT FOUR
+1106A ; [.15E9.0020.0002.1106A][.0000.0174.0002.1106A] # BRAHMI DIGIT FOUR
+11055 ; [.15E9.0020.0002.11055][.0000.0175.0002.11055] # BRAHMI NUMBER FOUR
+10A43 ; [.15E9.0020.0002.10A43][.0000.0176.0002.10A43] # KHAROSHTHI DIGIT FOUR
+1D363 ; [.15E9.0020.0002.1D363][.0000.0177.0002.1D363] # COUNTING ROD UNIT DIGIT FOUR
+324B ; [.15E9.0020.0006.324B][.15E5.0020.0006.324B] # CIRCLED NUMBER FORTY ON BLACK SQUARE
+32B5 ; [.15E9.0020.0006.32B5][.15E5.0020.0006.32B5] # CIRCLED NUMBER FORTY
+32B6 ; [.15E9.0020.0006.32B6][.15E6.0020.0006.32B6] # CIRCLED NUMBER FORTY ONE
+32B7 ; [.15E9.0020.0006.32B7][.15E7.0020.0006.32B7] # CIRCLED NUMBER FORTY TWO
+32B8 ; [.15E9.0020.0006.32B8][.15E8.0020.0006.32B8] # CIRCLED NUMBER FORTY THREE
+32B9 ; [.15E9.0020.0006.32B9][.15E9.0020.0006.32B9] # CIRCLED NUMBER FORTY FOUR
+32BA ; [.15E9.0020.0006.32BA][.15EA.0020.0006.32BA] # CIRCLED NUMBER FORTY FIVE
+2158 ; [.15E9.0020.001E.2158][*05AC.0020.001E.2158][.15EA.0020.001E.2158] # VULGAR FRACTION FOUR FIFTHS
+32BB ; [.15E9.0020.0006.32BB][.15EB.0020.0006.32BB] # CIRCLED NUMBER FORTY SIX
+32BC ; [.15E9.0020.0006.32BC][.15EC.0020.0006.32BC] # CIRCLED NUMBER FORTY SEVEN
+32BD ; [.15E9.0020.0006.32BD][.15ED.0020.0006.32BD] # CIRCLED NUMBER FORTY EIGHT
+32BE ; [.15E9.0020.0006.32BE][.15EE.0020.0006.32BE] # CIRCLED NUMBER FORTY NINE
+33E3 ; [.15E9.0020.0004.33E3][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+32C3 ; [.15E9.0020.0004.32C3][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+335C ; [.15E9.0020.0004.335C][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+0035 ; [.15EA.0020.0002.0035] # DIGIT FIVE
+FF15 ; [.15EA.0020.0003.FF15] # FULLWIDTH DIGIT FIVE
+2478 ; [*02FB.0020.0004.2478][.15EA.0020.0004.2478][*02FC.0020.001F.2478] # PARENTHESIZED DIGIT FIVE
+248C ; [.15EA.0020.0004.248C][*0273.0020.001F.248C] # DIGIT FIVE FULL STOP
+1F106 ; [.15EA.0020.0004.1F106][*0221.0020.001F.1F106] # DIGIT FIVE COMMA
+1D7D3 ; [.15EA.0020.0005.1D7D3] # MATHEMATICAL BOLD DIGIT FIVE
+1D7DD ; [.15EA.0020.0005.1D7DD] # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
+1D7E7 ; [.15EA.0020.0005.1D7E7] # MATHEMATICAL SANS-SERIF DIGIT FIVE
+1D7F1 ; [.15EA.0020.0005.1D7F1] # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
+1D7FB ; [.15EA.0020.0005.1D7FB] # MATHEMATICAL MONOSPACE DIGIT FIVE
+2464 ; [.15EA.0020.0006.2464] # CIRCLED DIGIT FIVE
+24F9 ; [.15EA.0020.0006.24F9] # DOUBLE CIRCLED DIGIT FIVE
+277A ; [.15EA.0020.0006.277A] # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+2784 ; [.15EA.0020.0006.2784] # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
+278E ; [.15EA.0020.0006.278E] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
+2075 ; [.15EA.0020.0014.2075] # SUPERSCRIPT FIVE
+2085 ; [.15EA.0020.0015.2085] # SUBSCRIPT FIVE
+0665 ; [.15EA.0020.0002.0665][.0000.013F.0002.0665] # ARABIC-INDIC DIGIT FIVE
+06F5 ; [.15EA.0020.0002.06F5][.0000.0140.0002.06F5] # EXTENDED ARABIC-INDIC DIGIT FIVE
+10E64 ; [.15EA.0020.0002.10E64][.0000.0141.0002.10E64] # RUMI DIGIT FIVE
+07C5 ; [.15EA.0020.0002.07C5][.0000.0142.0002.07C5] # NKO DIGIT FIVE
+136D ; [.15EA.0020.0002.136D][.0000.0143.0002.136D] # ETHIOPIC DIGIT FIVE
+104A5 ; [.15EA.0020.0002.104A5][.0000.0144.0002.104A5] # OSMANYA DIGIT FIVE
+096B ; [.15EA.0020.0002.096B][.0000.0145.0002.096B] # DEVANAGARI DIGIT FIVE
+09EB ; [.15EA.0020.0002.09EB][.0000.0146.0002.09EB] # BENGALI DIGIT FIVE
+0A6B ; [.15EA.0020.0002.0A6B][.0000.0147.0002.0A6B] # GURMUKHI DIGIT FIVE
+0AEB ; [.15EA.0020.0002.0AEB][.0000.0148.0002.0AEB] # GUJARATI DIGIT FIVE
+0B6B ; [.15EA.0020.0002.0B6B][.0000.0149.0002.0B6B] # ORIYA DIGIT FIVE
+0BEB ; [.15EA.0020.0002.0BEB][.0000.014A.0002.0BEB] # TAMIL DIGIT FIVE
+0C6B ; [.15EA.0020.0002.0C6B][.0000.014B.0002.0C6B] # TELUGU DIGIT FIVE
+0CEB ; [.15EA.0020.0002.0CEB][.0000.014C.0002.0CEB] # KANNADA DIGIT FIVE
+0D6B ; [.15EA.0020.0002.0D6B][.0000.014D.0002.0D6B] # MALAYALAM DIGIT FIVE
+ABF5 ; [.15EA.0020.0002.ABF5][.0000.014E.0002.ABF5] # MEETEI MAYEK DIGIT FIVE
+A8D5 ; [.15EA.0020.0002.A8D5][.0000.014F.0002.A8D5] # SAURASHTRA DIGIT FIVE
+194B ; [.15EA.0020.0002.194B][.0000.0150.0002.194B] # LIMBU DIGIT FIVE
+19D5 ; [.15EA.0020.0002.19D5][.0000.0151.0002.19D5] # NEW TAI LUE DIGIT FIVE
+1A85 ; [.15EA.0020.0002.1A85][.0000.0152.0002.1A85] # TAI THAM HORA DIGIT FIVE
+1A95 ; [.15EA.0020.0002.1A95][.0000.0153.0002.1A95] # TAI THAM THAM DIGIT FIVE
+0E55 ; [.15EA.0020.0002.0E55][.0000.0154.0002.0E55] # THAI DIGIT FIVE
+0ED5 ; [.15EA.0020.0002.0ED5][.0000.0155.0002.0ED5] # LAO DIGIT FIVE
+0F25 ; [.15EA.0020.0002.0F25][.0000.0156.0002.0F25] # TIBETAN DIGIT FIVE
+0F2E ; [.15EA.0020.0004.0F2E][.0000.0156.0004.0F2E] # TIBETAN DIGIT HALF FIVE
+1C45 ; [.15EA.0020.0002.1C45][.0000.0157.0002.1C45] # LEPCHA DIGIT FIVE
+A905 ; [.15EA.0020.0002.A905][.0000.0158.0002.A905] # KAYAH LI DIGIT FIVE
+1045 ; [.15EA.0020.0002.1045][.0000.0159.0002.1045] # MYANMAR DIGIT FIVE
+1095 ; [.15EA.0020.0002.1095][.0000.015A.0002.1095] # MYANMAR SHAN DIGIT FIVE
+1113B ; [.15EA.0020.0002.1113B][.0000.015B.0002.1113B] # CHAKMA DIGIT FIVE
+17E5 ; [.15EA.0020.0002.17E5][.0000.015C.0002.17E5] # KHMER DIGIT FIVE
+17F5 ; [.15EA.0020.0002.17F5][.0000.015D.0002.17F5] # KHMER SYMBOL LEK ATTAK PRAM
+AA55 ; [.15EA.0020.0002.AA55][.0000.015E.0002.AA55] # CHAM DIGIT FIVE
+1B55 ; [.15EA.0020.0002.1B55][.0000.015F.0002.1B55] # BALINESE DIGIT FIVE
+A9D5 ; [.15EA.0020.0002.A9D5][.0000.0160.0002.A9D5] # JAVANESE DIGIT FIVE
+1BB5 ; [.15EA.0020.0002.1BB5][.0000.0161.0002.1BB5] # SUNDANESE DIGIT FIVE
+1815 ; [.15EA.0020.0002.1815][.0000.0162.0002.1815] # MONGOLIAN DIGIT FIVE
+1C55 ; [.15EA.0020.0002.1C55][.0000.0163.0002.1C55] # OL CHIKI DIGIT FIVE
+A625 ; [.15EA.0020.0002.A625][.0000.0164.0002.A625] # VAI DIGIT FIVE
+110F5 ; [.15EA.0020.0002.110F5][.0000.0165.0002.110F5] # SORA SOMPENG DIGIT FIVE
+3025 ; [.15EA.0020.0002.3025][.0000.0166.0002.3025] # HANGZHOU NUMERAL FIVE
+1010B ; [.15EA.0020.0002.1010B][.0000.0167.0002.1010B] # AEGEAN NUMBER FIVE
+10143 ; [.15EA.0020.0002.10143][.0000.0168.0002.10143] # GREEK ACROPHONIC ATTIC FIVE
+10148 ; [.15EA.0020.0002.10148][.0000.0168.0002.10148] # GREEK ACROPHONIC ATTIC FIVE TALENTS
+1014F ; [.15EA.0020.0002.1014F][.0000.0168.0002.1014F] # GREEK ACROPHONIC ATTIC FIVE STATERS
+1015F ; [.15EA.0020.0002.1015F][.0000.0168.0002.1015F] # GREEK ACROPHONIC TROEZENIAN FIVE
+10173 ; [.15EA.0020.0002.10173][.0000.0168.0002.10173] # GREEK ACROPHONIC DELPHIC FIVE MNAS
+10321 ; [.15EA.0020.0002.10321][.0000.016A.0002.10321] # OLD ITALIC NUMERAL FIVE
+12403 ; [.15EA.0020.0002.12403][.0000.016C.0002.12403] # CUNEIFORM NUMERIC SIGN FIVE ASH
+1240A ; [.15EA.0020.0002.1240A][.0000.016C.0002.1240A] # CUNEIFORM NUMERIC SIGN FIVE DISH
+12410 ; [.15EA.0020.0002.12410][.0000.016C.0002.12410] # CUNEIFORM NUMERIC SIGN FIVE U
+12419 ; [.15EA.0020.0002.12419][.0000.016C.0002.12419] # CUNEIFORM NUMERIC SIGN FIVE GESH2
+12422 ; [.15EA.0020.0002.12422][.0000.016C.0002.12422] # CUNEIFORM NUMERIC SIGN FIVE GESHU
+12427 ; [.15EA.0020.0002.12427][.0000.016C.0002.12427] # CUNEIFORM NUMERIC SIGN FIVE SHAR2
+12431 ; [.15EA.0020.0002.12431][.0000.016C.0002.12431] # CUNEIFORM NUMERIC SIGN FIVE SHARU
+12439 ; [.15EA.0020.0002.12439][.0000.016C.0002.12439] # CUNEIFORM NUMERIC SIGN FIVE BURU
+1244D ; [.15EA.0020.0002.1244D][.0000.016C.0002.1244D] # CUNEIFORM NUMERIC SIGN FIVE ASH TENU
+12454 ; [.15EA.0020.0002.12454][.0000.016C.0002.12454] # CUNEIFORM NUMERIC SIGN FIVE BAN2
+12455 ; [.15EA.0020.0002.12455][.0000.016C.0002.12455] # CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM
+111D5 ; [.15EA.0020.0002.111D5][.0000.0172.0002.111D5] # SHARADA DIGIT FIVE
+116C5 ; [.15EA.0020.0002.116C5][.0000.0173.0002.116C5] # TAKRI DIGIT FIVE
+1106B ; [.15EA.0020.0002.1106B][.0000.0174.0002.1106B] # BRAHMI DIGIT FIVE
+11056 ; [.15EA.0020.0002.11056][.0000.0175.0002.11056] # BRAHMI NUMBER FIVE
+1D364 ; [.15EA.0020.0002.1D364][.0000.0177.0002.1D364] # COUNTING ROD UNIT DIGIT FIVE
+324C ; [.15EA.0020.0006.324C][.15E5.0020.0006.324C] # CIRCLED NUMBER FIFTY ON BLACK SQUARE
+32BF ; [.15EA.0020.0006.32BF][.15E5.0020.0006.32BF] # CIRCLED NUMBER FIFTY
+215A ; [.15EA.0020.001E.215A][*05AC.0020.001E.215A][.15EB.0020.001E.215A] # VULGAR FRACTION FIVE SIXTHS
+215D ; [.15EA.0020.001E.215D][*05AC.0020.001E.215D][.15ED.0020.001E.215D] # VULGAR FRACTION FIVE EIGHTHS
+33E4 ; [.15EA.0020.0004.33E4][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+32C4 ; [.15EA.0020.0004.32C4][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+335D ; [.15EA.0020.0004.335D][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+0036 ; [.15EB.0020.0002.0036] # DIGIT SIX
+FF16 ; [.15EB.0020.0003.FF16] # FULLWIDTH DIGIT SIX
+2479 ; [*02FB.0020.0004.2479][.15EB.0020.0004.2479][*02FC.0020.001F.2479] # PARENTHESIZED DIGIT SIX
+248D ; [.15EB.0020.0004.248D][*0273.0020.001F.248D] # DIGIT SIX FULL STOP
+1F107 ; [.15EB.0020.0004.1F107][*0221.0020.001F.1F107] # DIGIT SIX COMMA
+1D7D4 ; [.15EB.0020.0005.1D7D4] # MATHEMATICAL BOLD DIGIT SIX
+1D7DE ; [.15EB.0020.0005.1D7DE] # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
+1D7E8 ; [.15EB.0020.0005.1D7E8] # MATHEMATICAL SANS-SERIF DIGIT SIX
+1D7F2 ; [.15EB.0020.0005.1D7F2] # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
+1D7FC ; [.15EB.0020.0005.1D7FC] # MATHEMATICAL MONOSPACE DIGIT SIX
+2465 ; [.15EB.0020.0006.2465] # CIRCLED DIGIT SIX
+24FA ; [.15EB.0020.0006.24FA] # DOUBLE CIRCLED DIGIT SIX
+277B ; [.15EB.0020.0006.277B] # DINGBAT NEGATIVE CIRCLED DIGIT SIX
+2785 ; [.15EB.0020.0006.2785] # DINGBAT CIRCLED SANS-SERIF DIGIT SIX
+278F ; [.15EB.0020.0006.278F] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
+2076 ; [.15EB.0020.0014.2076] # SUPERSCRIPT SIX
+2086 ; [.15EB.0020.0015.2086] # SUBSCRIPT SIX
+0666 ; [.15EB.0020.0002.0666][.0000.013F.0002.0666] # ARABIC-INDIC DIGIT SIX
+06F6 ; [.15EB.0020.0002.06F6][.0000.0140.0002.06F6] # EXTENDED ARABIC-INDIC DIGIT SIX
+10E65 ; [.15EB.0020.0002.10E65][.0000.0141.0002.10E65] # RUMI DIGIT SIX
+07C6 ; [.15EB.0020.0002.07C6][.0000.0142.0002.07C6] # NKO DIGIT SIX
+136E ; [.15EB.0020.0002.136E][.0000.0143.0002.136E] # ETHIOPIC DIGIT SIX
+104A6 ; [.15EB.0020.0002.104A6][.0000.0144.0002.104A6] # OSMANYA DIGIT SIX
+096C ; [.15EB.0020.0002.096C][.0000.0145.0002.096C] # DEVANAGARI DIGIT SIX
+09EC ; [.15EB.0020.0002.09EC][.0000.0146.0002.09EC] # BENGALI DIGIT SIX
+0A6C ; [.15EB.0020.0002.0A6C][.0000.0147.0002.0A6C] # GURMUKHI DIGIT SIX
+0AEC ; [.15EB.0020.0002.0AEC][.0000.0148.0002.0AEC] # GUJARATI DIGIT SIX
+0B6C ; [.15EB.0020.0002.0B6C][.0000.0149.0002.0B6C] # ORIYA DIGIT SIX
+0BEC ; [.15EB.0020.0002.0BEC][.0000.014A.0002.0BEC] # TAMIL DIGIT SIX
+0C6C ; [.15EB.0020.0002.0C6C][.0000.014B.0002.0C6C] # TELUGU DIGIT SIX
+0CEC ; [.15EB.0020.0002.0CEC][.0000.014C.0002.0CEC] # KANNADA DIGIT SIX
+0D6C ; [.15EB.0020.0002.0D6C][.0000.014D.0002.0D6C] # MALAYALAM DIGIT SIX
+ABF6 ; [.15EB.0020.0002.ABF6][.0000.014E.0002.ABF6] # MEETEI MAYEK DIGIT SIX
+A8D6 ; [.15EB.0020.0002.A8D6][.0000.014F.0002.A8D6] # SAURASHTRA DIGIT SIX
+194C ; [.15EB.0020.0002.194C][.0000.0150.0002.194C] # LIMBU DIGIT SIX
+19D6 ; [.15EB.0020.0002.19D6][.0000.0151.0002.19D6] # NEW TAI LUE DIGIT SIX
+1A86 ; [.15EB.0020.0002.1A86][.0000.0152.0002.1A86] # TAI THAM HORA DIGIT SIX
+1A96 ; [.15EB.0020.0002.1A96][.0000.0153.0002.1A96] # TAI THAM THAM DIGIT SIX
+0E56 ; [.15EB.0020.0002.0E56][.0000.0154.0002.0E56] # THAI DIGIT SIX
+0ED6 ; [.15EB.0020.0002.0ED6][.0000.0155.0002.0ED6] # LAO DIGIT SIX
+0F26 ; [.15EB.0020.0002.0F26][.0000.0156.0002.0F26] # TIBETAN DIGIT SIX
+0F2F ; [.15EB.0020.0004.0F2F][.0000.0156.0004.0F2F] # TIBETAN DIGIT HALF SIX
+1C46 ; [.15EB.0020.0002.1C46][.0000.0157.0002.1C46] # LEPCHA DIGIT SIX
+A906 ; [.15EB.0020.0002.A906][.0000.0158.0002.A906] # KAYAH LI DIGIT SIX
+1046 ; [.15EB.0020.0002.1046][.0000.0159.0002.1046] # MYANMAR DIGIT SIX
+1096 ; [.15EB.0020.0002.1096][.0000.015A.0002.1096] # MYANMAR SHAN DIGIT SIX
+1113C ; [.15EB.0020.0002.1113C][.0000.015B.0002.1113C] # CHAKMA DIGIT SIX
+17E6 ; [.15EB.0020.0002.17E6][.0000.015C.0002.17E6] # KHMER DIGIT SIX
+17F6 ; [.15EB.0020.0002.17F6][.0000.015D.0002.17F6] # KHMER SYMBOL LEK ATTAK PRAM-MUOY
+AA56 ; [.15EB.0020.0002.AA56][.0000.015E.0002.AA56] # CHAM DIGIT SIX
+1B56 ; [.15EB.0020.0002.1B56][.0000.015F.0002.1B56] # BALINESE DIGIT SIX
+A9D6 ; [.15EB.0020.0002.A9D6][.0000.0160.0002.A9D6] # JAVANESE DIGIT SIX
+1BB6 ; [.15EB.0020.0002.1BB6][.0000.0161.0002.1BB6] # SUNDANESE DIGIT SIX
+1816 ; [.15EB.0020.0002.1816][.0000.0162.0002.1816] # MONGOLIAN DIGIT SIX
+1C56 ; [.15EB.0020.0002.1C56][.0000.0163.0002.1C56] # OL CHIKI DIGIT SIX
+A626 ; [.15EB.0020.0002.A626][.0000.0164.0002.A626] # VAI DIGIT SIX
+110F6 ; [.15EB.0020.0002.110F6][.0000.0165.0002.110F6] # SORA SOMPENG DIGIT SIX
+3026 ; [.15EB.0020.0002.3026][.0000.0166.0002.3026] # HANGZHOU NUMERAL SIX
+1010C ; [.15EB.0020.0002.1010C][.0000.0167.0002.1010C] # AEGEAN NUMBER SIX
+2185 ; [.15EB.0020.0002.2185][.0000.0169.0002.2185] # ROMAN NUMERAL SIX LATE FORM
+12404 ; [.15EB.0020.0002.12404][.0000.016C.0002.12404] # CUNEIFORM NUMERIC SIGN SIX ASH
+1240B ; [.15EB.0020.0002.1240B][.0000.016C.0002.1240B] # CUNEIFORM NUMERIC SIGN SIX DISH
+12411 ; [.15EB.0020.0002.12411][.0000.016C.0002.12411] # CUNEIFORM NUMERIC SIGN SIX U
+1241A ; [.15EB.0020.0002.1241A][.0000.016C.0002.1241A] # CUNEIFORM NUMERIC SIGN SIX GESH2
+12428 ; [.15EB.0020.0002.12428][.0000.016C.0002.12428] # CUNEIFORM NUMERIC SIGN SIX SHAR2
+12440 ; [.15EB.0020.0002.12440][.0000.016C.0002.12440] # CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9
+1244E ; [.15EB.0020.0002.1244E][.0000.016C.0002.1244E] # CUNEIFORM NUMERIC SIGN SIX ASH TENU
+111D6 ; [.15EB.0020.0002.111D6][.0000.0172.0002.111D6] # SHARADA DIGIT SIX
+116C6 ; [.15EB.0020.0002.116C6][.0000.0173.0002.116C6] # TAKRI DIGIT SIX
+1106C ; [.15EB.0020.0002.1106C][.0000.0174.0002.1106C] # BRAHMI DIGIT SIX
+11057 ; [.15EB.0020.0002.11057][.0000.0175.0002.11057] # BRAHMI NUMBER SIX
+1D365 ; [.15EB.0020.0002.1D365][.0000.0177.0002.1D365] # COUNTING ROD UNIT DIGIT SIX
+324D ; [.15EB.0020.0006.324D][.15E5.0020.0006.324D] # CIRCLED NUMBER SIXTY ON BLACK SQUARE
+33E5 ; [.15EB.0020.0004.33E5][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+32C5 ; [.15EB.0020.0004.32C5][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+335E ; [.15EB.0020.0004.335E][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+0037 ; [.15EC.0020.0002.0037] # DIGIT SEVEN
+FF17 ; [.15EC.0020.0003.FF17] # FULLWIDTH DIGIT SEVEN
+247A ; [*02FB.0020.0004.247A][.15EC.0020.0004.247A][*02FC.0020.001F.247A] # PARENTHESIZED DIGIT SEVEN
+248E ; [.15EC.0020.0004.248E][*0273.0020.001F.248E] # DIGIT SEVEN FULL STOP
+1F108 ; [.15EC.0020.0004.1F108][*0221.0020.001F.1F108] # DIGIT SEVEN COMMA
+1D7D5 ; [.15EC.0020.0005.1D7D5] # MATHEMATICAL BOLD DIGIT SEVEN
+1D7DF ; [.15EC.0020.0005.1D7DF] # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
+1D7E9 ; [.15EC.0020.0005.1D7E9] # MATHEMATICAL SANS-SERIF DIGIT SEVEN
+1D7F3 ; [.15EC.0020.0005.1D7F3] # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
+1D7FD ; [.15EC.0020.0005.1D7FD] # MATHEMATICAL MONOSPACE DIGIT SEVEN
+2466 ; [.15EC.0020.0006.2466] # CIRCLED DIGIT SEVEN
+24FB ; [.15EC.0020.0006.24FB] # DOUBLE CIRCLED DIGIT SEVEN
+277C ; [.15EC.0020.0006.277C] # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+2786 ; [.15EC.0020.0006.2786] # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
+2790 ; [.15EC.0020.0006.2790] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
+2077 ; [.15EC.0020.0014.2077] # SUPERSCRIPT SEVEN
+2087 ; [.15EC.0020.0015.2087] # SUBSCRIPT SEVEN
+0667 ; [.15EC.0020.0002.0667][.0000.013F.0002.0667] # ARABIC-INDIC DIGIT SEVEN
+06F7 ; [.15EC.0020.0002.06F7][.0000.0140.0002.06F7] # EXTENDED ARABIC-INDIC DIGIT SEVEN
+10E66 ; [.15EC.0020.0002.10E66][.0000.0141.0002.10E66] # RUMI DIGIT SEVEN
+07C7 ; [.15EC.0020.0002.07C7][.0000.0142.0002.07C7] # NKO DIGIT SEVEN
+136F ; [.15EC.0020.0002.136F][.0000.0143.0002.136F] # ETHIOPIC DIGIT SEVEN
+104A7 ; [.15EC.0020.0002.104A7][.0000.0144.0002.104A7] # OSMANYA DIGIT SEVEN
+096D ; [.15EC.0020.0002.096D][.0000.0145.0002.096D] # DEVANAGARI DIGIT SEVEN
+09ED ; [.15EC.0020.0002.09ED][.0000.0146.0002.09ED] # BENGALI DIGIT SEVEN
+0A6D ; [.15EC.0020.0002.0A6D][.0000.0147.0002.0A6D] # GURMUKHI DIGIT SEVEN
+0AED ; [.15EC.0020.0002.0AED][.0000.0148.0002.0AED] # GUJARATI DIGIT SEVEN
+0B6D ; [.15EC.0020.0002.0B6D][.0000.0149.0002.0B6D] # ORIYA DIGIT SEVEN
+0BED ; [.15EC.0020.0002.0BED][.0000.014A.0002.0BED] # TAMIL DIGIT SEVEN
+0C6D ; [.15EC.0020.0002.0C6D][.0000.014B.0002.0C6D] # TELUGU DIGIT SEVEN
+0CED ; [.15EC.0020.0002.0CED][.0000.014C.0002.0CED] # KANNADA DIGIT SEVEN
+0D6D ; [.15EC.0020.0002.0D6D][.0000.014D.0002.0D6D] # MALAYALAM DIGIT SEVEN
+ABF7 ; [.15EC.0020.0002.ABF7][.0000.014E.0002.ABF7] # MEETEI MAYEK DIGIT SEVEN
+A8D7 ; [.15EC.0020.0002.A8D7][.0000.014F.0002.A8D7] # SAURASHTRA DIGIT SEVEN
+194D ; [.15EC.0020.0002.194D][.0000.0150.0002.194D] # LIMBU DIGIT SEVEN
+19D7 ; [.15EC.0020.0002.19D7][.0000.0151.0002.19D7] # NEW TAI LUE DIGIT SEVEN
+1A87 ; [.15EC.0020.0002.1A87][.0000.0152.0002.1A87] # TAI THAM HORA DIGIT SEVEN
+1A97 ; [.15EC.0020.0002.1A97][.0000.0153.0002.1A97] # TAI THAM THAM DIGIT SEVEN
+0E57 ; [.15EC.0020.0002.0E57][.0000.0154.0002.0E57] # THAI DIGIT SEVEN
+0ED7 ; [.15EC.0020.0002.0ED7][.0000.0155.0002.0ED7] # LAO DIGIT SEVEN
+0F27 ; [.15EC.0020.0002.0F27][.0000.0156.0002.0F27] # TIBETAN DIGIT SEVEN
+0F30 ; [.15EC.0020.0004.0F30][.0000.0156.0004.0F30] # TIBETAN DIGIT HALF SEVEN
+1C47 ; [.15EC.0020.0002.1C47][.0000.0157.0002.1C47] # LEPCHA DIGIT SEVEN
+A907 ; [.15EC.0020.0002.A907][.0000.0158.0002.A907] # KAYAH LI DIGIT SEVEN
+1047 ; [.15EC.0020.0002.1047][.0000.0159.0002.1047] # MYANMAR DIGIT SEVEN
+1097 ; [.15EC.0020.0002.1097][.0000.015A.0002.1097] # MYANMAR SHAN DIGIT SEVEN
+1113D ; [.15EC.0020.0002.1113D][.0000.015B.0002.1113D] # CHAKMA DIGIT SEVEN
+17E7 ; [.15EC.0020.0002.17E7][.0000.015C.0002.17E7] # KHMER DIGIT SEVEN
+17F7 ; [.15EC.0020.0002.17F7][.0000.015D.0002.17F7] # KHMER SYMBOL LEK ATTAK PRAM-PII
+AA57 ; [.15EC.0020.0002.AA57][.0000.015E.0002.AA57] # CHAM DIGIT SEVEN
+1B57 ; [.15EC.0020.0002.1B57][.0000.015F.0002.1B57] # BALINESE DIGIT SEVEN
+A9D7 ; [.15EC.0020.0002.A9D7][.0000.0160.0002.A9D7] # JAVANESE DIGIT SEVEN
+1BB7 ; [.15EC.0020.0002.1BB7][.0000.0161.0002.1BB7] # SUNDANESE DIGIT SEVEN
+1817 ; [.15EC.0020.0002.1817][.0000.0162.0002.1817] # MONGOLIAN DIGIT SEVEN
+1C57 ; [.15EC.0020.0002.1C57][.0000.0163.0002.1C57] # OL CHIKI DIGIT SEVEN
+A627 ; [.15EC.0020.0002.A627][.0000.0164.0002.A627] # VAI DIGIT SEVEN
+110F7 ; [.15EC.0020.0002.110F7][.0000.0165.0002.110F7] # SORA SOMPENG DIGIT SEVEN
+3027 ; [.15EC.0020.0002.3027][.0000.0166.0002.3027] # HANGZHOU NUMERAL SEVEN
+1010D ; [.15EC.0020.0002.1010D][.0000.0167.0002.1010D] # AEGEAN NUMBER SEVEN
+12405 ; [.15EC.0020.0002.12405][.0000.016C.0002.12405] # CUNEIFORM NUMERIC SIGN SEVEN ASH
+1240C ; [.15EC.0020.0002.1240C][.0000.016C.0002.1240C] # CUNEIFORM NUMERIC SIGN SEVEN DISH
+12412 ; [.15EC.0020.0002.12412][.0000.016C.0002.12412] # CUNEIFORM NUMERIC SIGN SEVEN U
+1241B ; [.15EC.0020.0002.1241B][.0000.016C.0002.1241B] # CUNEIFORM NUMERIC SIGN SEVEN GESH2
+12429 ; [.15EC.0020.0002.12429][.0000.016C.0002.12429] # CUNEIFORM NUMERIC SIGN SEVEN SHAR2
+12441 ; [.15EC.0020.0002.12441][.0000.016C.0002.12441] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3
+12442 ; [.15EC.0020.0002.12442][.0000.016C.0002.12442] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A
+12443 ; [.15EC.0020.0002.12443][.0000.016C.0002.12443] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B
+111D7 ; [.15EC.0020.0002.111D7][.0000.0172.0002.111D7] # SHARADA DIGIT SEVEN
+116C7 ; [.15EC.0020.0002.116C7][.0000.0173.0002.116C7] # TAKRI DIGIT SEVEN
+1106D ; [.15EC.0020.0002.1106D][.0000.0174.0002.1106D] # BRAHMI DIGIT SEVEN
+11058 ; [.15EC.0020.0002.11058][.0000.0175.0002.11058] # BRAHMI NUMBER SEVEN
+1D366 ; [.15EC.0020.0002.1D366][.0000.0177.0002.1D366] # COUNTING ROD UNIT DIGIT SEVEN
+324E ; [.15EC.0020.0006.324E][.15E5.0020.0006.324E] # CIRCLED NUMBER SEVENTY ON BLACK SQUARE
+215E ; [.15EC.0020.001E.215E][*05AC.0020.001E.215E][.15ED.0020.001E.215E] # VULGAR FRACTION SEVEN EIGHTHS
+33E6 ; [.15EC.0020.0004.33E6][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+32C6 ; [.15EC.0020.0004.32C6][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+335F ; [.15EC.0020.0004.335F][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+0038 ; [.15ED.0020.0002.0038] # DIGIT EIGHT
+FF18 ; [.15ED.0020.0003.FF18] # FULLWIDTH DIGIT EIGHT
+247B ; [*02FB.0020.0004.247B][.15ED.0020.0004.247B][*02FC.0020.001F.247B] # PARENTHESIZED DIGIT EIGHT
+248F ; [.15ED.0020.0004.248F][*0273.0020.001F.248F] # DIGIT EIGHT FULL STOP
+1F109 ; [.15ED.0020.0004.1F109][*0221.0020.001F.1F109] # DIGIT EIGHT COMMA
+1D7D6 ; [.15ED.0020.0005.1D7D6] # MATHEMATICAL BOLD DIGIT EIGHT
+1D7E0 ; [.15ED.0020.0005.1D7E0] # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
+1D7EA ; [.15ED.0020.0005.1D7EA] # MATHEMATICAL SANS-SERIF DIGIT EIGHT
+1D7F4 ; [.15ED.0020.0005.1D7F4] # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
+1D7FE ; [.15ED.0020.0005.1D7FE] # MATHEMATICAL MONOSPACE DIGIT EIGHT
+2467 ; [.15ED.0020.0006.2467] # CIRCLED DIGIT EIGHT
+24FC ; [.15ED.0020.0006.24FC] # DOUBLE CIRCLED DIGIT EIGHT
+277D ; [.15ED.0020.0006.277D] # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+2787 ; [.15ED.0020.0006.2787] # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
+2791 ; [.15ED.0020.0006.2791] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
+2078 ; [.15ED.0020.0014.2078] # SUPERSCRIPT EIGHT
+2088 ; [.15ED.0020.0015.2088] # SUBSCRIPT EIGHT
+0668 ; [.15ED.0020.0002.0668][.0000.013F.0002.0668] # ARABIC-INDIC DIGIT EIGHT
+06F8 ; [.15ED.0020.0002.06F8][.0000.0140.0002.06F8] # EXTENDED ARABIC-INDIC DIGIT EIGHT
+10E67 ; [.15ED.0020.0002.10E67][.0000.0141.0002.10E67] # RUMI DIGIT EIGHT
+07C8 ; [.15ED.0020.0002.07C8][.0000.0142.0002.07C8] # NKO DIGIT EIGHT
+1370 ; [.15ED.0020.0002.1370][.0000.0143.0002.1370] # ETHIOPIC DIGIT EIGHT
+104A8 ; [.15ED.0020.0002.104A8][.0000.0144.0002.104A8] # OSMANYA DIGIT EIGHT
+096E ; [.15ED.0020.0002.096E][.0000.0145.0002.096E] # DEVANAGARI DIGIT EIGHT
+09EE ; [.15ED.0020.0002.09EE][.0000.0146.0002.09EE] # BENGALI DIGIT EIGHT
+0A6E ; [.15ED.0020.0002.0A6E][.0000.0147.0002.0A6E] # GURMUKHI DIGIT EIGHT
+0AEE ; [.15ED.0020.0002.0AEE][.0000.0148.0002.0AEE] # GUJARATI DIGIT EIGHT
+0B6E ; [.15ED.0020.0002.0B6E][.0000.0149.0002.0B6E] # ORIYA DIGIT EIGHT
+0BEE ; [.15ED.0020.0002.0BEE][.0000.014A.0002.0BEE] # TAMIL DIGIT EIGHT
+0C6E ; [.15ED.0020.0002.0C6E][.0000.014B.0002.0C6E] # TELUGU DIGIT EIGHT
+0CEE ; [.15ED.0020.0002.0CEE][.0000.014C.0002.0CEE] # KANNADA DIGIT EIGHT
+0D6E ; [.15ED.0020.0002.0D6E][.0000.014D.0002.0D6E] # MALAYALAM DIGIT EIGHT
+ABF8 ; [.15ED.0020.0002.ABF8][.0000.014E.0002.ABF8] # MEETEI MAYEK DIGIT EIGHT
+A8D8 ; [.15ED.0020.0002.A8D8][.0000.014F.0002.A8D8] # SAURASHTRA DIGIT EIGHT
+194E ; [.15ED.0020.0002.194E][.0000.0150.0002.194E] # LIMBU DIGIT EIGHT
+19D8 ; [.15ED.0020.0002.19D8][.0000.0151.0002.19D8] # NEW TAI LUE DIGIT EIGHT
+1A88 ; [.15ED.0020.0002.1A88][.0000.0152.0002.1A88] # TAI THAM HORA DIGIT EIGHT
+1A98 ; [.15ED.0020.0002.1A98][.0000.0153.0002.1A98] # TAI THAM THAM DIGIT EIGHT
+0E58 ; [.15ED.0020.0002.0E58][.0000.0154.0002.0E58] # THAI DIGIT EIGHT
+0ED8 ; [.15ED.0020.0002.0ED8][.0000.0155.0002.0ED8] # LAO DIGIT EIGHT
+0F28 ; [.15ED.0020.0002.0F28][.0000.0156.0002.0F28] # TIBETAN DIGIT EIGHT
+0F31 ; [.15ED.0020.0004.0F31][.0000.0156.0004.0F31] # TIBETAN DIGIT HALF EIGHT
+1C48 ; [.15ED.0020.0002.1C48][.0000.0157.0002.1C48] # LEPCHA DIGIT EIGHT
+A908 ; [.15ED.0020.0002.A908][.0000.0158.0002.A908] # KAYAH LI DIGIT EIGHT
+1048 ; [.15ED.0020.0002.1048][.0000.0159.0002.1048] # MYANMAR DIGIT EIGHT
+1098 ; [.15ED.0020.0002.1098][.0000.015A.0002.1098] # MYANMAR SHAN DIGIT EIGHT
+1113E ; [.15ED.0020.0002.1113E][.0000.015B.0002.1113E] # CHAKMA DIGIT EIGHT
+17E8 ; [.15ED.0020.0002.17E8][.0000.015C.0002.17E8] # KHMER DIGIT EIGHT
+17F8 ; [.15ED.0020.0002.17F8][.0000.015D.0002.17F8] # KHMER SYMBOL LEK ATTAK PRAM-BEI
+AA58 ; [.15ED.0020.0002.AA58][.0000.015E.0002.AA58] # CHAM DIGIT EIGHT
+1B58 ; [.15ED.0020.0002.1B58][.0000.015F.0002.1B58] # BALINESE DIGIT EIGHT
+A9D8 ; [.15ED.0020.0002.A9D8][.0000.0160.0002.A9D8] # JAVANESE DIGIT EIGHT
+1BB8 ; [.15ED.0020.0002.1BB8][.0000.0161.0002.1BB8] # SUNDANESE DIGIT EIGHT
+1818 ; [.15ED.0020.0002.1818][.0000.0162.0002.1818] # MONGOLIAN DIGIT EIGHT
+1C58 ; [.15ED.0020.0002.1C58][.0000.0163.0002.1C58] # OL CHIKI DIGIT EIGHT
+A628 ; [.15ED.0020.0002.A628][.0000.0164.0002.A628] # VAI DIGIT EIGHT
+110F8 ; [.15ED.0020.0002.110F8][.0000.0165.0002.110F8] # SORA SOMPENG DIGIT EIGHT
+3028 ; [.15ED.0020.0002.3028][.0000.0166.0002.3028] # HANGZHOU NUMERAL EIGHT
+1010E ; [.15ED.0020.0002.1010E][.0000.0167.0002.1010E] # AEGEAN NUMBER EIGHT
+12406 ; [.15ED.0020.0002.12406][.0000.016C.0002.12406] # CUNEIFORM NUMERIC SIGN EIGHT ASH
+1240D ; [.15ED.0020.0002.1240D][.0000.016C.0002.1240D] # CUNEIFORM NUMERIC SIGN EIGHT DISH
+12413 ; [.15ED.0020.0002.12413][.0000.016C.0002.12413] # CUNEIFORM NUMERIC SIGN EIGHT U
+1241C ; [.15ED.0020.0002.1241C][.0000.016C.0002.1241C] # CUNEIFORM NUMERIC SIGN EIGHT GESH2
+1242A ; [.15ED.0020.0002.1242A][.0000.016C.0002.1242A] # CUNEIFORM NUMERIC SIGN EIGHT SHAR2
+12444 ; [.15ED.0020.0002.12444][.0000.016C.0002.12444] # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU
+12445 ; [.15ED.0020.0002.12445][.0000.016C.0002.12445] # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3
+111D8 ; [.15ED.0020.0002.111D8][.0000.0172.0002.111D8] # SHARADA DIGIT EIGHT
+116C8 ; [.15ED.0020.0002.116C8][.0000.0173.0002.116C8] # TAKRI DIGIT EIGHT
+1106E ; [.15ED.0020.0002.1106E][.0000.0174.0002.1106E] # BRAHMI DIGIT EIGHT
+11059 ; [.15ED.0020.0002.11059][.0000.0175.0002.11059] # BRAHMI NUMBER EIGHT
+1D367 ; [.15ED.0020.0002.1D367][.0000.0177.0002.1D367] # COUNTING ROD UNIT DIGIT EIGHT
+324F ; [.15ED.0020.0006.324F][.15E5.0020.0006.324F] # CIRCLED NUMBER EIGHTY ON BLACK SQUARE
+33E7 ; [.15ED.0020.0004.33E7][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+32C7 ; [.15ED.0020.0004.32C7][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+3360 ; [.15ED.0020.0004.3360][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+0039 ; [.15EE.0020.0002.0039] # DIGIT NINE
+FF19 ; [.15EE.0020.0003.FF19] # FULLWIDTH DIGIT NINE
+247C ; [*02FB.0020.0004.247C][.15EE.0020.0004.247C][*02FC.0020.001F.247C] # PARENTHESIZED DIGIT NINE
+2490 ; [.15EE.0020.0004.2490][*0273.0020.001F.2490] # DIGIT NINE FULL STOP
+1F10A ; [.15EE.0020.0004.1F10A][*0221.0020.001F.1F10A] # DIGIT NINE COMMA
+1D7D7 ; [.15EE.0020.0005.1D7D7] # MATHEMATICAL BOLD DIGIT NINE
+1D7E1 ; [.15EE.0020.0005.1D7E1] # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
+1D7EB ; [.15EE.0020.0005.1D7EB] # MATHEMATICAL SANS-SERIF DIGIT NINE
+1D7F5 ; [.15EE.0020.0005.1D7F5] # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
+1D7FF ; [.15EE.0020.0005.1D7FF] # MATHEMATICAL MONOSPACE DIGIT NINE
+2468 ; [.15EE.0020.0006.2468] # CIRCLED DIGIT NINE
+24FD ; [.15EE.0020.0006.24FD] # DOUBLE CIRCLED DIGIT NINE
+277E ; [.15EE.0020.0006.277E] # DINGBAT NEGATIVE CIRCLED DIGIT NINE
+2788 ; [.15EE.0020.0006.2788] # DINGBAT CIRCLED SANS-SERIF DIGIT NINE
+2792 ; [.15EE.0020.0006.2792] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
+2079 ; [.15EE.0020.0014.2079] # SUPERSCRIPT NINE
+2089 ; [.15EE.0020.0015.2089] # SUBSCRIPT NINE
+0669 ; [.15EE.0020.0002.0669][.0000.013F.0002.0669] # ARABIC-INDIC DIGIT NINE
+06F9 ; [.15EE.0020.0002.06F9][.0000.0140.0002.06F9] # EXTENDED ARABIC-INDIC DIGIT NINE
+10E68 ; [.15EE.0020.0002.10E68][.0000.0141.0002.10E68] # RUMI DIGIT NINE
+07C9 ; [.15EE.0020.0002.07C9][.0000.0142.0002.07C9] # NKO DIGIT NINE
+1371 ; [.15EE.0020.0002.1371][.0000.0143.0002.1371] # ETHIOPIC DIGIT NINE
+104A9 ; [.15EE.0020.0002.104A9][.0000.0144.0002.104A9] # OSMANYA DIGIT NINE
+096F ; [.15EE.0020.0002.096F][.0000.0145.0002.096F] # DEVANAGARI DIGIT NINE
+09EF ; [.15EE.0020.0002.09EF][.0000.0146.0002.09EF] # BENGALI DIGIT NINE
+0A6F ; [.15EE.0020.0002.0A6F][.0000.0147.0002.0A6F] # GURMUKHI DIGIT NINE
+0AEF ; [.15EE.0020.0002.0AEF][.0000.0148.0002.0AEF] # GUJARATI DIGIT NINE
+0B6F ; [.15EE.0020.0002.0B6F][.0000.0149.0002.0B6F] # ORIYA DIGIT NINE
+0BEF ; [.15EE.0020.0002.0BEF][.0000.014A.0002.0BEF] # TAMIL DIGIT NINE
+0C6F ; [.15EE.0020.0002.0C6F][.0000.014B.0002.0C6F] # TELUGU DIGIT NINE
+0CEF ; [.15EE.0020.0002.0CEF][.0000.014C.0002.0CEF] # KANNADA DIGIT NINE
+0D6F ; [.15EE.0020.0002.0D6F][.0000.014D.0002.0D6F] # MALAYALAM DIGIT NINE
+ABF9 ; [.15EE.0020.0002.ABF9][.0000.014E.0002.ABF9] # MEETEI MAYEK DIGIT NINE
+A8D9 ; [.15EE.0020.0002.A8D9][.0000.014F.0002.A8D9] # SAURASHTRA DIGIT NINE
+194F ; [.15EE.0020.0002.194F][.0000.0150.0002.194F] # LIMBU DIGIT NINE
+19D9 ; [.15EE.0020.0002.19D9][.0000.0151.0002.19D9] # NEW TAI LUE DIGIT NINE
+1A89 ; [.15EE.0020.0002.1A89][.0000.0152.0002.1A89] # TAI THAM HORA DIGIT NINE
+1A99 ; [.15EE.0020.0002.1A99][.0000.0153.0002.1A99] # TAI THAM THAM DIGIT NINE
+0E59 ; [.15EE.0020.0002.0E59][.0000.0154.0002.0E59] # THAI DIGIT NINE
+0ED9 ; [.15EE.0020.0002.0ED9][.0000.0155.0002.0ED9] # LAO DIGIT NINE
+0F29 ; [.15EE.0020.0002.0F29][.0000.0156.0002.0F29] # TIBETAN DIGIT NINE
+0F32 ; [.15EE.0020.0004.0F32][.0000.0156.0004.0F32] # TIBETAN DIGIT HALF NINE
+1C49 ; [.15EE.0020.0002.1C49][.0000.0157.0002.1C49] # LEPCHA DIGIT NINE
+A909 ; [.15EE.0020.0002.A909][.0000.0158.0002.A909] # KAYAH LI DIGIT NINE
+1049 ; [.15EE.0020.0002.1049][.0000.0159.0002.1049] # MYANMAR DIGIT NINE
+1099 ; [.15EE.0020.0002.1099][.0000.015A.0002.1099] # MYANMAR SHAN DIGIT NINE
+1113F ; [.15EE.0020.0002.1113F][.0000.015B.0002.1113F] # CHAKMA DIGIT NINE
+17E9 ; [.15EE.0020.0002.17E9][.0000.015C.0002.17E9] # KHMER DIGIT NINE
+17F9 ; [.15EE.0020.0002.17F9][.0000.015D.0002.17F9] # KHMER SYMBOL LEK ATTAK PRAM-BUON
+AA59 ; [.15EE.0020.0002.AA59][.0000.015E.0002.AA59] # CHAM DIGIT NINE
+1B59 ; [.15EE.0020.0002.1B59][.0000.015F.0002.1B59] # BALINESE DIGIT NINE
+A9D9 ; [.15EE.0020.0002.A9D9][.0000.0160.0002.A9D9] # JAVANESE DIGIT NINE
+1BB9 ; [.15EE.0020.0002.1BB9][.0000.0161.0002.1BB9] # SUNDANESE DIGIT NINE
+1819 ; [.15EE.0020.0002.1819][.0000.0162.0002.1819] # MONGOLIAN DIGIT NINE
+1C59 ; [.15EE.0020.0002.1C59][.0000.0163.0002.1C59] # OL CHIKI DIGIT NINE
+A629 ; [.15EE.0020.0002.A629][.0000.0164.0002.A629] # VAI DIGIT NINE
+110F9 ; [.15EE.0020.0002.110F9][.0000.0165.0002.110F9] # SORA SOMPENG DIGIT NINE
+3029 ; [.15EE.0020.0002.3029][.0000.0166.0002.3029] # HANGZHOU NUMERAL NINE
+1010F ; [.15EE.0020.0002.1010F][.0000.0167.0002.1010F] # AEGEAN NUMBER NINE
+12407 ; [.15EE.0020.0002.12407][.0000.016C.0002.12407] # CUNEIFORM NUMERIC SIGN NINE ASH
+1240E ; [.15EE.0020.0002.1240E][.0000.016C.0002.1240E] # CUNEIFORM NUMERIC SIGN NINE DISH
+12414 ; [.15EE.0020.0002.12414][.0000.016C.0002.12414] # CUNEIFORM NUMERIC SIGN NINE U
+1241D ; [.15EE.0020.0002.1241D][.0000.016C.0002.1241D] # CUNEIFORM NUMERIC SIGN NINE GESH2
+1242B ; [.15EE.0020.0002.1242B][.0000.016C.0002.1242B] # CUNEIFORM NUMERIC SIGN NINE SHAR2
+12446 ; [.15EE.0020.0002.12446][.0000.016C.0002.12446] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU
+12447 ; [.15EE.0020.0002.12447][.0000.016C.0002.12447] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3
+12448 ; [.15EE.0020.0002.12448][.0000.016C.0002.12448] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4
+12449 ; [.15EE.0020.0002.12449][.0000.016C.0002.12449] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A
+111D9 ; [.15EE.0020.0002.111D9][.0000.0172.0002.111D9] # SHARADA DIGIT NINE
+116C9 ; [.15EE.0020.0002.116C9][.0000.0173.0002.116C9] # TAKRI DIGIT NINE
+1106F ; [.15EE.0020.0002.1106F][.0000.0174.0002.1106F] # BRAHMI DIGIT NINE
+1105A ; [.15EE.0020.0002.1105A][.0000.0175.0002.1105A] # BRAHMI NUMBER NINE
+1D368 ; [.15EE.0020.0002.1D368][.0000.0177.0002.1D368] # COUNTING ROD UNIT DIGIT NINE
+33E8 ; [.15EE.0020.0004.33E8][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+32C8 ; [.15EE.0020.0004.32C8][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+3361 ; [.15EE.0020.0004.3361][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+0061 ; [.15EF.0020.0002.0061] # LATIN SMALL LETTER A
+FF41 ; [.15EF.0020.0003.FF41] # FULLWIDTH LATIN SMALL LETTER A
+0363 ; [.15EF.0020.0004.0363] # COMBINING LATIN SMALL LETTER A
+249C ; [*02FB.0020.0004.249C][.15EF.0020.0004.249C][*02FC.0020.001F.249C] # PARENTHESIZED LATIN SMALL LETTER A
+1D41A ; [.15EF.0020.0005.1D41A] # MATHEMATICAL BOLD SMALL A
+1D44E ; [.15EF.0020.0005.1D44E] # MATHEMATICAL ITALIC SMALL A
+1D482 ; [.15EF.0020.0005.1D482] # MATHEMATICAL BOLD ITALIC SMALL A
+1D4B6 ; [.15EF.0020.0005.1D4B6] # MATHEMATICAL SCRIPT SMALL A
+1D4EA ; [.15EF.0020.0005.1D4EA] # MATHEMATICAL BOLD SCRIPT SMALL A
+1D51E ; [.15EF.0020.0005.1D51E] # MATHEMATICAL FRAKTUR SMALL A
+1D552 ; [.15EF.0020.0005.1D552] # MATHEMATICAL DOUBLE-STRUCK SMALL A
+1D586 ; [.15EF.0020.0005.1D586] # MATHEMATICAL BOLD FRAKTUR SMALL A
+1D5BA ; [.15EF.0020.0005.1D5BA] # MATHEMATICAL SANS-SERIF SMALL A
+1D5EE ; [.15EF.0020.0005.1D5EE] # MATHEMATICAL SANS-SERIF BOLD SMALL A
+1D622 ; [.15EF.0020.0005.1D622] # MATHEMATICAL SANS-SERIF ITALIC SMALL A
+1D656 ; [.15EF.0020.0005.1D656] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
+1D68A ; [.15EF.0020.0005.1D68A] # MATHEMATICAL MONOSPACE SMALL A
+24D0 ; [.15EF.0020.0006.24D0] # CIRCLED LATIN SMALL LETTER A
+0041 ; [.15EF.0020.0008.0041] # LATIN CAPITAL LETTER A
+FF21 ; [.15EF.0020.0009.FF21] # FULLWIDTH LATIN CAPITAL LETTER A
+1F110 ; [*02FB.0020.0004.1F110][.15EF.0020.000A.1F110][*02FC.0020.001F.1F110] # PARENTHESIZED LATIN CAPITAL LETTER A
+1D400 ; [.15EF.0020.000B.1D400] # MATHEMATICAL BOLD CAPITAL A
+1D434 ; [.15EF.0020.000B.1D434] # MATHEMATICAL ITALIC CAPITAL A
+1D468 ; [.15EF.0020.000B.1D468] # MATHEMATICAL BOLD ITALIC CAPITAL A
+1D49C ; [.15EF.0020.000B.1D49C] # MATHEMATICAL SCRIPT CAPITAL A
+1D4D0 ; [.15EF.0020.000B.1D4D0] # MATHEMATICAL BOLD SCRIPT CAPITAL A
+1D504 ; [.15EF.0020.000B.1D504] # MATHEMATICAL FRAKTUR CAPITAL A
+1D538 ; [.15EF.0020.000B.1D538] # MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+1D56C ; [.15EF.0020.000B.1D56C] # MATHEMATICAL BOLD FRAKTUR CAPITAL A
+1D5A0 ; [.15EF.0020.000B.1D5A0] # MATHEMATICAL SANS-SERIF CAPITAL A
+1D5D4 ; [.15EF.0020.000B.1D5D4] # MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+1D608 ; [.15EF.0020.000B.1D608] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+1D63C ; [.15EF.0020.000B.1D63C] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+1D670 ; [.15EF.0020.000B.1D670] # MATHEMATICAL MONOSPACE CAPITAL A
+24B6 ; [.15EF.0020.000C.24B6] # CIRCLED LATIN CAPITAL LETTER A
+1F150 ; [.15EF.0020.000C.1F150] # NEGATIVE CIRCLED LATIN CAPITAL LETTER A
+00AA ; [.15EF.0020.0014.00AA] # FEMININE ORDINAL INDICATOR
+1D43 ; [.15EF.0020.0014.1D43] # MODIFIER LETTER SMALL A
+2090 ; [.15EF.0020.0015.2090] # LATIN SUBSCRIPT SMALL LETTER A
+1D2C ; [.15EF.0020.001D.1D2C] # MODIFIER LETTER CAPITAL A
+1F130 ; [.15EF.0020.001D.1F130] # SQUARED LATIN CAPITAL LETTER A
+1F170 ; [.15EF.0020.001D.1F170] # NEGATIVE SQUARED LATIN CAPITAL LETTER A
+00E1 ; [.15EF.0020.0002.0061][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.15EF.0020.0008.0041][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH ACUTE
+00E0 ; [.15EF.0020.0002.0061][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH GRAVE
+00C0 ; [.15EF.0020.0008.0041][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH GRAVE
+0103 ; [.15EF.0020.0002.0061][.0000.0037.0002.0306] # LATIN SMALL LETTER A WITH BREVE
+0102 ; [.15EF.0020.0008.0041][.0000.0037.0002.0306] # LATIN CAPITAL LETTER A WITH BREVE
+1EAF ; [.15EF.0020.0002.0061][.0000.0037.0002.0306][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EAE ; [.15EF.0020.0008.0041][.0000.0037.0002.0306][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB1 ; [.15EF.0020.0002.0061][.0000.0037.0002.0306][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB0 ; [.15EF.0020.0008.0041][.0000.0037.0002.0306][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB5 ; [.15EF.0020.0002.0061][.0000.0037.0002.0306][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB4 ; [.15EF.0020.0008.0041][.0000.0037.0002.0306][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB3 ; [.15EF.0020.0002.0061][.0000.0037.0002.0306][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB2 ; [.15EF.0020.0008.0041][.0000.0037.0002.0306][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+00E2 ; [.15EF.0020.0002.0061][.0000.003C.0002.0302] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+00C2 ; [.15EF.0020.0008.0041][.0000.003C.0002.0302] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+1EA5 ; [.15EF.0020.0002.0061][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA4 ; [.15EF.0020.0008.0041][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA7 ; [.15EF.0020.0002.0061][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA6 ; [.15EF.0020.0008.0041][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EAB ; [.15EF.0020.0002.0061][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAA ; [.15EF.0020.0008.0041][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EA9 ; [.15EF.0020.0002.0061][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA8 ; [.15EF.0020.0008.0041][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+01CE ; [.15EF.0020.0002.0061][.0000.0041.0002.030C] # LATIN SMALL LETTER A WITH CARON
+01CD ; [.15EF.0020.0008.0041][.0000.0041.0002.030C] # LATIN CAPITAL LETTER A WITH CARON
+00E5 ; [.15EF.0020.0002.0061][.0000.0043.0002.030A] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.15EF.0020.0008.0041][.0000.0043.0002.030A] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.15EF.0020.0008.0041][.0000.0043.0002.030A] # ANGSTROM SIGN
+01FB ; [.15EF.0020.0002.0061][.0000.0043.0002.030A][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.15EF.0020.0008.0041][.0000.0043.0002.030A][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00E4 ; [.15EF.0020.0002.0061][.0000.0047.0002.0308] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.15EF.0020.0008.0041][.0000.0047.0002.0308] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.15EF.0020.0002.0061][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.15EF.0020.0008.0041][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00E3 ; [.15EF.0020.0002.0061][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH TILDE
+00C3 ; [.15EF.0020.0008.0041][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH TILDE
+0227 ; [.15EF.0020.0002.0061][.0000.0052.0002.0307] # LATIN SMALL LETTER A WITH DOT ABOVE
+0226 ; [.15EF.0020.0008.0041][.0000.0052.0002.0307] # LATIN CAPITAL LETTER A WITH DOT ABOVE
+01E1 ; [.15EF.0020.0002.0061][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E0 ; [.15EF.0020.0008.0041][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+0105 ; [.15EF.0020.0002.0061][.0000.0059.0002.0328] # LATIN SMALL LETTER A WITH OGONEK
+0104 ; [.15EF.0020.0008.0041][.0000.0059.0002.0328] # LATIN CAPITAL LETTER A WITH OGONEK
+0101 ; [.15EF.0020.0002.0061][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH MACRON
+0100 ; [.15EF.0020.0008.0041][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH MACRON
+1EA3 ; [.15EF.0020.0002.0061][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA2 ; [.15EF.0020.0008.0041][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+0201 ; [.15EF.0020.0002.0061][.0000.0065.0002.030F] # LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0200 ; [.15EF.0020.0008.0041][.0000.0065.0002.030F] # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0203 ; [.15EF.0020.0002.0061][.0000.0067.0002.0311] # LATIN SMALL LETTER A WITH INVERTED BREVE
+0202 ; [.15EF.0020.0008.0041][.0000.0067.0002.0311] # LATIN CAPITAL LETTER A WITH INVERTED BREVE
+1EA1 ; [.15EF.0020.0002.0061][.0000.0070.0002.0323] # LATIN SMALL LETTER A WITH DOT BELOW
+1EA0 ; [.15EF.0020.0008.0041][.0000.0070.0002.0323] # LATIN CAPITAL LETTER A WITH DOT BELOW
+1EB7 ; [.15EF.0020.0002.0061][.0000.0070.0002.0323][.0000.0037.0002.0306] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB6 ; [.15EF.0020.0008.0041][.0000.0070.0002.0323][.0000.0037.0002.0306] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EAD ; [.15EF.0020.0002.0061][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAC ; [.15EF.0020.0008.0041][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1E01 ; [.15EF.0020.0002.0061][.0000.0076.0002.0325] # LATIN SMALL LETTER A WITH RING BELOW
+1E00 ; [.15EF.0020.0008.0041][.0000.0076.0002.0325] # LATIN CAPITAL LETTER A WITH RING BELOW
+1DD3 ; [.15EF.0020.0004.1DD3][.0000.0139.0004.1DD3] # COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE
+A733 ; [.15EF.0020.0004.A733][.15EF.0020.0004.A733] # LATIN SMALL LETTER AA
+A732 ; [.15EF.0020.000A.A732][.15EF.0020.000A.A732] # LATIN CAPITAL LETTER AA
+1F18E ; [.15EF.0020.001D.1F18E][.1605.0020.001D.1F18E] # NEGATIVE SQUARED AB
+2100 ; [.15EF.0020.0004.2100][*0372.0020.0004.2100][.161D.0020.0004.2100] # ACCOUNT OF
+00E6 ; [.15EF.0020.0004.00E6][.0000.0139.0004.00E6][.164C.0020.0004.00E6] # LATIN SMALL LETTER AE
+1DD4 ; [.15EF.0020.0004.1DD4][.0000.0139.0004.1DD4][.164C.0020.0004.1DD4] # COMBINING LATIN SMALL LETTER AE
+00C6 ; [.15EF.0020.000A.00C6][.0000.0139.0004.00C6][.164C.0020.000A.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.15EF.0020.0014.1D2D][.0000.0139.0014.1D2D][.164C.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.15EF.0020.0004.01FD][.0000.0139.0004.01FD][.164C.0020.0004.01FD][.0000.0032.0002.01FD] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.15EF.0020.000A.01FC][.0000.0139.0004.01FC][.164C.0020.000A.01FC][.0000.0032.0002.01FC] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.15EF.0020.0004.01E3][.0000.0139.0004.01E3][.164C.0020.0004.01E3][.0000.005B.0002.01E3] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.15EF.0020.000A.01E2][.0000.0139.0004.01E2][.164C.0020.000A.01E2][.0000.005B.0002.01E2] # LATIN CAPITAL LETTER AE WITH MACRON
+33C2 ; [.15EF.0020.001C.33C2][*0273.0020.001C.33C2][.1741.0020.001C.33C2][*0273.0020.001C.33C2] # SQUARE AM
+33DF ; [.15EF.0020.001D.33DF][*05AB.0020.001C.33DF][.1741.0020.001C.33DF] # SQUARE A OVER M
+1DD5 ; [.15EF.0020.0004.1DD5][.1771.0020.0004.1DD5] # COMBINING LATIN SMALL LETTER AO
+A735 ; [.15EF.0020.0004.A735][.1771.0020.0004.A735] # LATIN SMALL LETTER AO
+A734 ; [.15EF.0020.000A.A734][.1771.0020.000A.A734] # LATIN CAPITAL LETTER AO
+2101 ; [.15EF.0020.0004.2101][*0372.0020.0004.2101][.17F3.0020.0004.2101] # ADDRESSED TO THE SUBJECT
+214D ; [.15EF.0020.000A.214D][*0372.0020.0004.214D][.17F3.0020.000A.214D] # AKTIESELSKAB
+A737 ; [.15EF.0020.0004.A737][.1836.0020.0004.A737] # LATIN SMALL LETTER AU
+A736 ; [.15EF.0020.000A.A736][.1836.0020.000A.A736] # LATIN CAPITAL LETTER AU
+3373 ; [.15EF.0020.001D.3373][.1836.0020.001D.3373] # SQUARE AU
+1DD6 ; [.15EF.0020.0004.1DD6][.185F.0020.0004.1DD6] # COMBINING LATIN SMALL LETTER AV
+A739 ; [.15EF.0020.0004.A739][.185F.0020.0004.A739] # LATIN SMALL LETTER AV
+A738 ; [.15EF.0020.000A.A738][.185F.0020.000A.A738] # LATIN CAPITAL LETTER AV
+A73B ; [.15EF.0020.0004.A73B][.0000.0139.0004.A73B][.185F.0020.0004.A73B] # LATIN SMALL LETTER AV WITH HORIZONTAL BAR
+A73A ; [.15EF.0020.000A.A73A][.0000.0139.0004.A73A][.185F.0020.000A.A73A] # LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
+A73D ; [.15EF.0020.0004.A73D][.1880.0020.0004.A73D] # LATIN SMALL LETTER AY
+A73C ; [.15EF.0020.000A.A73C][.1880.0020.000A.A73C] # LATIN CAPITAL LETTER AY
+1E9A ; [.15EF.0020.0004.1E9A][.18F1.0020.0004.1E9A] # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1D00 ; [.15F3.0020.0002.1D00] # LATIN LETTER SMALL CAPITAL A
+2C65 ; [.15F4.0020.0002.2C65] # LATIN SMALL LETTER A WITH STROKE
+023A ; [.15F4.0020.0008.023A] # LATIN CAPITAL LETTER A WITH STROKE
+1D8F ; [.15F5.0020.0002.1D8F] # LATIN SMALL LETTER A WITH RETROFLEX HOOK
+1D01 ; [.15F6.0020.0002.1D01] # LATIN LETTER SMALL CAPITAL AE
+1D02 ; [.15F7.0020.0002.1D02] # LATIN SMALL LETTER TURNED AE
+1D46 ; [.15F7.0020.0014.1D46] # MODIFIER LETTER SMALL TURNED AE
+0250 ; [.15F8.0020.0002.0250] # LATIN SMALL LETTER TURNED A
+2C6F ; [.15F8.0020.0008.2C6F] # LATIN CAPITAL LETTER TURNED A
+1D44 ; [.15F8.0020.0014.1D44] # MODIFIER LETTER SMALL TURNED A
+0251 ; [.15FC.0020.0002.0251] # LATIN SMALL LETTER ALPHA
+2C6D ; [.15FC.0020.0008.2C6D] # LATIN CAPITAL LETTER ALPHA
+1D45 ; [.15FC.0020.0014.1D45] # MODIFIER LETTER SMALL ALPHA
+1D90 ; [.1600.0020.0002.1D90] # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK
+0252 ; [.1601.0020.0002.0252] # LATIN SMALL LETTER TURNED ALPHA
+2C70 ; [.1601.0020.0008.2C70] # LATIN CAPITAL LETTER TURNED ALPHA
+1D9B ; [.1601.0020.0014.1D9B] # MODIFIER LETTER SMALL TURNED ALPHA
+0062 ; [.1605.0020.0002.0062] # LATIN SMALL LETTER B
+FF42 ; [.1605.0020.0003.FF42] # FULLWIDTH LATIN SMALL LETTER B
+249D ; [*02FB.0020.0004.249D][.1605.0020.0004.249D][*02FC.0020.001F.249D] # PARENTHESIZED LATIN SMALL LETTER B
+1D41B ; [.1605.0020.0005.1D41B] # MATHEMATICAL BOLD SMALL B
+1D44F ; [.1605.0020.0005.1D44F] # MATHEMATICAL ITALIC SMALL B
+1D483 ; [.1605.0020.0005.1D483] # MATHEMATICAL BOLD ITALIC SMALL B
+1D4B7 ; [.1605.0020.0005.1D4B7] # MATHEMATICAL SCRIPT SMALL B
+1D4EB ; [.1605.0020.0005.1D4EB] # MATHEMATICAL BOLD SCRIPT SMALL B
+1D51F ; [.1605.0020.0005.1D51F] # MATHEMATICAL FRAKTUR SMALL B
+1D553 ; [.1605.0020.0005.1D553] # MATHEMATICAL DOUBLE-STRUCK SMALL B
+1D587 ; [.1605.0020.0005.1D587] # MATHEMATICAL BOLD FRAKTUR SMALL B
+1D5BB ; [.1605.0020.0005.1D5BB] # MATHEMATICAL SANS-SERIF SMALL B
+1D5EF ; [.1605.0020.0005.1D5EF] # MATHEMATICAL SANS-SERIF BOLD SMALL B
+1D623 ; [.1605.0020.0005.1D623] # MATHEMATICAL SANS-SERIF ITALIC SMALL B
+1D657 ; [.1605.0020.0005.1D657] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
+1D68B ; [.1605.0020.0005.1D68B] # MATHEMATICAL MONOSPACE SMALL B
+24D1 ; [.1605.0020.0006.24D1] # CIRCLED LATIN SMALL LETTER B
+0042 ; [.1605.0020.0008.0042] # LATIN CAPITAL LETTER B
+FF22 ; [.1605.0020.0009.FF22] # FULLWIDTH LATIN CAPITAL LETTER B
+1F111 ; [*02FB.0020.0004.1F111][.1605.0020.000A.1F111][*02FC.0020.001F.1F111] # PARENTHESIZED LATIN CAPITAL LETTER B
+212C ; [.1605.0020.000B.212C] # SCRIPT CAPITAL B
+1D401 ; [.1605.0020.000B.1D401] # MATHEMATICAL BOLD CAPITAL B
+1D435 ; [.1605.0020.000B.1D435] # MATHEMATICAL ITALIC CAPITAL B
+1D469 ; [.1605.0020.000B.1D469] # MATHEMATICAL BOLD ITALIC CAPITAL B
+1D4D1 ; [.1605.0020.000B.1D4D1] # MATHEMATICAL BOLD SCRIPT CAPITAL B
+1D505 ; [.1605.0020.000B.1D505] # MATHEMATICAL FRAKTUR CAPITAL B
+1D539 ; [.1605.0020.000B.1D539] # MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D56D ; [.1605.0020.000B.1D56D] # MATHEMATICAL BOLD FRAKTUR CAPITAL B
+1D5A1 ; [.1605.0020.000B.1D5A1] # MATHEMATICAL SANS-SERIF CAPITAL B
+1D5D5 ; [.1605.0020.000B.1D5D5] # MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+1D609 ; [.1605.0020.000B.1D609] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+1D63D ; [.1605.0020.000B.1D63D] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+1D671 ; [.1605.0020.000B.1D671] # MATHEMATICAL MONOSPACE CAPITAL B
+24B7 ; [.1605.0020.000C.24B7] # CIRCLED LATIN CAPITAL LETTER B
+1F151 ; [.1605.0020.000C.1F151] # NEGATIVE CIRCLED LATIN CAPITAL LETTER B
+1D47 ; [.1605.0020.0014.1D47] # MODIFIER LETTER SMALL B
+1D2E ; [.1605.0020.001D.1D2E] # MODIFIER LETTER CAPITAL B
+1F131 ; [.1605.0020.001D.1F131] # SQUARED LATIN CAPITAL LETTER B
+1F171 ; [.1605.0020.001D.1F171] # NEGATIVE SQUARED LATIN CAPITAL LETTER B
+1E03 ; [.1605.0020.0002.0062][.0000.0052.0002.0307] # LATIN SMALL LETTER B WITH DOT ABOVE
+1E02 ; [.1605.0020.0008.0042][.0000.0052.0002.0307] # LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E05 ; [.1605.0020.0002.0062][.0000.0070.0002.0323] # LATIN SMALL LETTER B WITH DOT BELOW
+1E04 ; [.1605.0020.0008.0042][.0000.0070.0002.0323] # LATIN CAPITAL LETTER B WITH DOT BELOW
+1E07 ; [.1605.0020.0002.0062][.0000.007B.0002.0331] # LATIN SMALL LETTER B WITH LINE BELOW
+1E06 ; [.1605.0020.0008.0042][.0000.007B.0002.0331] # LATIN CAPITAL LETTER B WITH LINE BELOW
+3374 ; [.1605.0020.001C.3374][.15EF.0020.001C.3374][.17BD.0020.001C.3374] # SQUARE BAR
+33C3 ; [.1605.0020.001D.33C3][.17AB.0020.001C.33C3] # SQUARE BQ
+0299 ; [.1609.0020.0002.0299] # LATIN LETTER SMALL CAPITAL B
+0180 ; [.160D.0020.0002.0180] # LATIN SMALL LETTER B WITH STROKE
+0243 ; [.160D.0020.0008.0243] # LATIN CAPITAL LETTER B WITH STROKE
+1D2F ; [.1611.0020.0002.1D2F] # MODIFIER LETTER CAPITAL BARRED B
+1D03 ; [.1612.0020.0002.1D03] # LATIN LETTER SMALL CAPITAL BARRED B
+1D6C ; [.1613.0020.0002.1D6C] # LATIN SMALL LETTER B WITH MIDDLE TILDE
+1D80 ; [.1614.0020.0002.1D80] # LATIN SMALL LETTER B WITH PALATAL HOOK
+0253 ; [.1615.0020.0002.0253] # LATIN SMALL LETTER B WITH HOOK
+0181 ; [.1615.0020.0008.0181] # LATIN CAPITAL LETTER B WITH HOOK
+0183 ; [.1619.0020.0002.0183] # LATIN SMALL LETTER B WITH TOPBAR
+0182 ; [.1619.0020.0008.0182] # LATIN CAPITAL LETTER B WITH TOPBAR
+0063 ; [.161D.0020.0002.0063] # LATIN SMALL LETTER C
+FF43 ; [.161D.0020.0003.FF43] # FULLWIDTH LATIN SMALL LETTER C
+0368 ; [.161D.0020.0004.0368] # COMBINING LATIN SMALL LETTER C
+217D ; [.161D.0020.0004.217D] # SMALL ROMAN NUMERAL ONE HUNDRED
+249E ; [*02FB.0020.0004.249E][.161D.0020.0004.249E][*02FC.0020.001F.249E] # PARENTHESIZED LATIN SMALL LETTER C
+1D41C ; [.161D.0020.0005.1D41C] # MATHEMATICAL BOLD SMALL C
+1D450 ; [.161D.0020.0005.1D450] # MATHEMATICAL ITALIC SMALL C
+1D484 ; [.161D.0020.0005.1D484] # MATHEMATICAL BOLD ITALIC SMALL C
+1D4B8 ; [.161D.0020.0005.1D4B8] # MATHEMATICAL SCRIPT SMALL C
+1D4EC ; [.161D.0020.0005.1D4EC] # MATHEMATICAL BOLD SCRIPT SMALL C
+1D520 ; [.161D.0020.0005.1D520] # MATHEMATICAL FRAKTUR SMALL C
+1D554 ; [.161D.0020.0005.1D554] # MATHEMATICAL DOUBLE-STRUCK SMALL C
+1D588 ; [.161D.0020.0005.1D588] # MATHEMATICAL BOLD FRAKTUR SMALL C
+1D5BC ; [.161D.0020.0005.1D5BC] # MATHEMATICAL SANS-SERIF SMALL C
+1D5F0 ; [.161D.0020.0005.1D5F0] # MATHEMATICAL SANS-SERIF BOLD SMALL C
+1D624 ; [.161D.0020.0005.1D624] # MATHEMATICAL SANS-SERIF ITALIC SMALL C
+1D658 ; [.161D.0020.0005.1D658] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
+1D68C ; [.161D.0020.0005.1D68C] # MATHEMATICAL MONOSPACE SMALL C
+24D2 ; [.161D.0020.0006.24D2] # CIRCLED LATIN SMALL LETTER C
+0043 ; [.161D.0020.0008.0043] # LATIN CAPITAL LETTER C
+FF23 ; [.161D.0020.0009.FF23] # FULLWIDTH LATIN CAPITAL LETTER C
+2103 ; [*0482.0020.0004.2103][.161D.0020.000A.2103] # DEGREE CELSIUS
+216D ; [.161D.0020.000A.216D] # ROMAN NUMERAL ONE HUNDRED
+1F112 ; [*02FB.0020.0004.1F112][.161D.0020.000A.1F112][*02FC.0020.001F.1F112] # PARENTHESIZED LATIN CAPITAL LETTER C
+2102 ; [.161D.0020.000B.2102] # DOUBLE-STRUCK CAPITAL C
+212D ; [.161D.0020.000B.212D] # BLACK-LETTER CAPITAL C
+1D402 ; [.161D.0020.000B.1D402] # MATHEMATICAL BOLD CAPITAL C
+1D436 ; [.161D.0020.000B.1D436] # MATHEMATICAL ITALIC CAPITAL C
+1D46A ; [.161D.0020.000B.1D46A] # MATHEMATICAL BOLD ITALIC CAPITAL C
+1D49E ; [.161D.0020.000B.1D49E] # MATHEMATICAL SCRIPT CAPITAL C
+1D4D2 ; [.161D.0020.000B.1D4D2] # MATHEMATICAL BOLD SCRIPT CAPITAL C
+1D56E ; [.161D.0020.000B.1D56E] # MATHEMATICAL BOLD FRAKTUR CAPITAL C
+1D5A2 ; [.161D.0020.000B.1D5A2] # MATHEMATICAL SANS-SERIF CAPITAL C
+1D5D6 ; [.161D.0020.000B.1D5D6] # MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+1D60A ; [.161D.0020.000B.1D60A] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+1D63E ; [.161D.0020.000B.1D63E] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+1D672 ; [.161D.0020.000B.1D672] # MATHEMATICAL MONOSPACE CAPITAL C
+24B8 ; [.161D.0020.000C.24B8] # CIRCLED LATIN CAPITAL LETTER C
+1F12B ; [.161D.0020.000C.1F12B] # CIRCLED ITALIC LATIN CAPITAL LETTER C
+1F152 ; [.161D.0020.000C.1F152] # NEGATIVE CIRCLED LATIN CAPITAL LETTER C
+1D9C ; [.161D.0020.0014.1D9C] # MODIFIER LETTER SMALL C
+1F132 ; [.161D.0020.001D.1F132] # SQUARED LATIN CAPITAL LETTER C
+1F172 ; [.161D.0020.001D.1F172] # NEGATIVE SQUARED LATIN CAPITAL LETTER C
+0107 ; [.161D.0020.0002.0063][.0000.0032.0002.0301] # LATIN SMALL LETTER C WITH ACUTE
+0106 ; [.161D.0020.0008.0043][.0000.0032.0002.0301] # LATIN CAPITAL LETTER C WITH ACUTE
+0109 ; [.161D.0020.0002.0063][.0000.003C.0002.0302] # LATIN SMALL LETTER C WITH CIRCUMFLEX
+0108 ; [.161D.0020.0008.0043][.0000.003C.0002.0302] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+010D ; [.161D.0020.0002.0063][.0000.0041.0002.030C] # LATIN SMALL LETTER C WITH CARON
+010C ; [.161D.0020.0008.0043][.0000.0041.0002.030C] # LATIN CAPITAL LETTER C WITH CARON
+010B ; [.161D.0020.0002.0063][.0000.0052.0002.0307] # LATIN SMALL LETTER C WITH DOT ABOVE
+010A ; [.161D.0020.0008.0043][.0000.0052.0002.0307] # LATIN CAPITAL LETTER C WITH DOT ABOVE
+00E7 ; [.161D.0020.0002.0063][.0000.0056.0002.0327] # LATIN SMALL LETTER C WITH CEDILLA
+1DD7 ; [.161D.0020.0004.1DD7][.0000.0056.0004.1DD7] # COMBINING LATIN SMALL LETTER C CEDILLA
+00C7 ; [.161D.0020.0008.0043][.0000.0056.0002.0327] # LATIN CAPITAL LETTER C WITH CEDILLA
+1E09 ; [.161D.0020.0002.0063][.0000.0056.0002.0327][.0000.0032.0002.0301] # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E08 ; [.161D.0020.0008.0043][.0000.0056.0002.0327][.0000.0032.0002.0301] # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+3388 ; [.161D.0020.001C.3388][.15EF.0020.001C.3388][.1711.0020.001C.3388] # SQUARE CAL
+33C4 ; [.161D.0020.001C.33C4][.161D.0020.001C.33C4] # SQUARE CC
+1F12D ; [.161D.0020.000C.1F12D][.1631.0020.000C.1F12D] # CIRCLED CD
+33C5 ; [.161D.0020.001C.33C5][.1631.0020.001C.33C5] # SQUARE CD
+33C6 ; [.161D.0020.001D.33C6][*05AB.0020.001C.33C6][.16FF.0020.001C.33C6][.1691.0020.001C.33C6] # SQUARE C OVER KG
+1F191 ; [.161D.0020.001D.1F191][.1711.0020.001D.1F191] # SQUARED CL
+339D ; [.161D.0020.001C.339D][.1741.0020.001C.339D] # SQUARE CM
+33A0 ; [.161D.0020.001C.33A0][.1741.0020.001C.33A0][.15E7.0020.001C.33A0] # SQUARE CM SQUARED
+33A4 ; [.161D.0020.001C.33A4][.1741.0020.001C.33A4][.15E8.0020.001C.33A4] # SQUARE CM CUBED
+2105 ; [.161D.0020.0004.2105][*0372.0020.0004.2105][.1771.0020.0004.2105] # CARE OF
+33C7 ; [.161D.0020.001D.33C7][.1771.0020.001C.33C7][*0273.0020.001C.33C7] # SQUARE CO
+1F192 ; [.161D.0020.001D.1F192][.1771.0020.001D.1F192][.1771.0020.001D.1F192][.1711.0020.001D.1F192] # SQUARED COOL
+2106 ; [.161D.0020.0004.2106][*0372.0020.0004.2106][.1836.0020.0004.2106] # CADA UNA
+1D04 ; [.1621.0020.0002.1D04] # LATIN LETTER SMALL CAPITAL C
+023C ; [.1622.0020.0002.023C] # LATIN SMALL LETTER C WITH STROKE
+023B ; [.1622.0020.0008.023B] # LATIN CAPITAL LETTER C WITH STROKE
+A793 ; [.1626.0020.0002.A793] # LATIN SMALL LETTER C WITH BAR
+A792 ; [.1626.0020.0008.A792] # LATIN CAPITAL LETTER C WITH BAR
+0188 ; [.1627.0020.0002.0188] # LATIN SMALL LETTER C WITH HOOK
+0187 ; [.1627.0020.0008.0187] # LATIN CAPITAL LETTER C WITH HOOK
+0255 ; [.162B.0020.0002.0255] # LATIN SMALL LETTER C WITH CURL
+1D9D ; [.162B.0020.0014.1D9D] # MODIFIER LETTER SMALL C WITH CURL
+2184 ; [.162F.0020.0002.2184] # LATIN SMALL LETTER REVERSED C
+2183 ; [.162F.0020.0008.2183] # ROMAN NUMERAL REVERSED ONE HUNDRED
+A73F ; [.1630.0020.0002.A73F] # LATIN SMALL LETTER REVERSED C WITH DOT
+A73E ; [.1630.0020.0008.A73E] # LATIN CAPITAL LETTER REVERSED C WITH DOT
+0064 ; [.1631.0020.0002.0064] # LATIN SMALL LETTER D
+FF44 ; [.1631.0020.0003.FF44] # FULLWIDTH LATIN SMALL LETTER D
+0369 ; [.1631.0020.0004.0369] # COMBINING LATIN SMALL LETTER D
+217E ; [.1631.0020.0004.217E] # SMALL ROMAN NUMERAL FIVE HUNDRED
+249F ; [*02FB.0020.0004.249F][.1631.0020.0004.249F][*02FC.0020.001F.249F] # PARENTHESIZED LATIN SMALL LETTER D
+2146 ; [.1631.0020.0005.2146] # DOUBLE-STRUCK ITALIC SMALL D
+1D41D ; [.1631.0020.0005.1D41D] # MATHEMATICAL BOLD SMALL D
+1D451 ; [.1631.0020.0005.1D451] # MATHEMATICAL ITALIC SMALL D
+1D485 ; [.1631.0020.0005.1D485] # MATHEMATICAL BOLD ITALIC SMALL D
+1D4B9 ; [.1631.0020.0005.1D4B9] # MATHEMATICAL SCRIPT SMALL D
+1D4ED ; [.1631.0020.0005.1D4ED] # MATHEMATICAL BOLD SCRIPT SMALL D
+1D521 ; [.1631.0020.0005.1D521] # MATHEMATICAL FRAKTUR SMALL D
+1D555 ; [.1631.0020.0005.1D555] # MATHEMATICAL DOUBLE-STRUCK SMALL D
+1D589 ; [.1631.0020.0005.1D589] # MATHEMATICAL BOLD FRAKTUR SMALL D
+1D5BD ; [.1631.0020.0005.1D5BD] # MATHEMATICAL SANS-SERIF SMALL D
+1D5F1 ; [.1631.0020.0005.1D5F1] # MATHEMATICAL SANS-SERIF BOLD SMALL D
+1D625 ; [.1631.0020.0005.1D625] # MATHEMATICAL SANS-SERIF ITALIC SMALL D
+1D659 ; [.1631.0020.0005.1D659] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
+1D68D ; [.1631.0020.0005.1D68D] # MATHEMATICAL MONOSPACE SMALL D
+24D3 ; [.1631.0020.0006.24D3] # CIRCLED LATIN SMALL LETTER D
+0044 ; [.1631.0020.0008.0044] # LATIN CAPITAL LETTER D
+FF24 ; [.1631.0020.0009.FF24] # FULLWIDTH LATIN CAPITAL LETTER D
+216E ; [.1631.0020.000A.216E] # ROMAN NUMERAL FIVE HUNDRED
+1F113 ; [*02FB.0020.0004.1F113][.1631.0020.000A.1F113][*02FC.0020.001F.1F113] # PARENTHESIZED LATIN CAPITAL LETTER D
+2145 ; [.1631.0020.000B.2145] # DOUBLE-STRUCK ITALIC CAPITAL D
+1D403 ; [.1631.0020.000B.1D403] # MATHEMATICAL BOLD CAPITAL D
+1D437 ; [.1631.0020.000B.1D437] # MATHEMATICAL ITALIC CAPITAL D
+1D46B ; [.1631.0020.000B.1D46B] # MATHEMATICAL BOLD ITALIC CAPITAL D
+1D49F ; [.1631.0020.000B.1D49F] # MATHEMATICAL SCRIPT CAPITAL D
+1D4D3 ; [.1631.0020.000B.1D4D3] # MATHEMATICAL BOLD SCRIPT CAPITAL D
+1D507 ; [.1631.0020.000B.1D507] # MATHEMATICAL FRAKTUR CAPITAL D
+1D53B ; [.1631.0020.000B.1D53B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+1D56F ; [.1631.0020.000B.1D56F] # MATHEMATICAL BOLD FRAKTUR CAPITAL D
+1D5A3 ; [.1631.0020.000B.1D5A3] # MATHEMATICAL SANS-SERIF CAPITAL D
+1D5D7 ; [.1631.0020.000B.1D5D7] # MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+1D60B ; [.1631.0020.000B.1D60B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+1D63F ; [.1631.0020.000B.1D63F] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+1D673 ; [.1631.0020.000B.1D673] # MATHEMATICAL MONOSPACE CAPITAL D
+24B9 ; [.1631.0020.000C.24B9] # CIRCLED LATIN CAPITAL LETTER D
+1F153 ; [.1631.0020.000C.1F153] # NEGATIVE CIRCLED LATIN CAPITAL LETTER D
+1D48 ; [.1631.0020.0014.1D48] # MODIFIER LETTER SMALL D
+1D30 ; [.1631.0020.001D.1D30] # MODIFIER LETTER CAPITAL D
+1F133 ; [.1631.0020.001D.1F133] # SQUARED LATIN CAPITAL LETTER D
+1F173 ; [.1631.0020.001D.1F173] # NEGATIVE SQUARED LATIN CAPITAL LETTER D
+010F ; [.1631.0020.0002.0064][.0000.0041.0002.030C] # LATIN SMALL LETTER D WITH CARON
+010E ; [.1631.0020.0008.0044][.0000.0041.0002.030C] # LATIN CAPITAL LETTER D WITH CARON
+1E0B ; [.1631.0020.0002.0064][.0000.0052.0002.0307] # LATIN SMALL LETTER D WITH DOT ABOVE
+1E0A ; [.1631.0020.0008.0044][.0000.0052.0002.0307] # LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E11 ; [.1631.0020.0002.0064][.0000.0056.0002.0327] # LATIN SMALL LETTER D WITH CEDILLA
+1E10 ; [.1631.0020.0008.0044][.0000.0056.0002.0327] # LATIN CAPITAL LETTER D WITH CEDILLA
+1E0D ; [.1631.0020.0002.0064][.0000.0070.0002.0323] # LATIN SMALL LETTER D WITH DOT BELOW
+1E0C ; [.1631.0020.0008.0044][.0000.0070.0002.0323] # LATIN CAPITAL LETTER D WITH DOT BELOW
+1E13 ; [.1631.0020.0002.0064][.0000.0078.0002.032D] # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E12 ; [.1631.0020.0008.0044][.0000.0078.0002.032D] # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E0F ; [.1631.0020.0002.0064][.0000.007B.0002.0331] # LATIN SMALL LETTER D WITH LINE BELOW
+1E0E ; [.1631.0020.0008.0044][.0000.007B.0002.0331] # LATIN CAPITAL LETTER D WITH LINE BELOW
+0111 ; [.1631.0020.0002.0064][.0000.007D.0002.0335] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1631.0020.0008.0044][.0000.007D.0002.0335] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1631.0020.0004.00F0][.0000.0139.0004.00F0] # LATIN SMALL LETTER ETH
+1DD9 ; [.1631.0020.0004.1DD9][.0000.0139.0004.1DD9] # COMBINING LATIN SMALL LETTER ETH
+00D0 ; [.1631.0020.000A.00D0][.0000.0139.0004.00D0] # LATIN CAPITAL LETTER ETH
+1D9E ; [.1631.0020.0014.1D9E][.0000.0139.0014.1D9E] # MODIFIER LETTER SMALL ETH
+1DD8 ; [.1631.0020.0004.1DD8][.0000.013A.0004.1DD8] # COMBINING LATIN SMALL LETTER INSULAR D
+A77A ; [.1631.0020.0004.A77A][.0000.013A.0004.A77A] # LATIN SMALL LETTER INSULAR D
+A779 ; [.1631.0020.000A.A779][.0000.013A.0004.A779] # LATIN CAPITAL LETTER INSULAR D
+3372 ; [.1631.0020.001C.3372][.15EF.0020.001C.3372] # SQUARE DA
+0238 ; [.1631.0020.0004.0238][.1605.0020.0004.0238] # LATIN SMALL LETTER DB DIGRAPH
+33C8 ; [.1631.0020.001C.33C8][.1605.0020.001D.33C8] # SQUARE DB
+1F190 ; [.1631.0020.001D.1F190][.16E6.0020.001D.1F190] # SQUARE DJ
+3397 ; [.1631.0020.001C.3397][.1711.0020.001C.3397] # SQUARE DL
+3377 ; [.1631.0020.001C.3377][.1741.0020.001C.3377] # SQUARE DM
+3378 ; [.1631.0020.001C.3378][.1741.0020.001C.3378][.15E7.0020.001C.3378] # SQUARE DM SQUARED
+3379 ; [.1631.0020.001C.3379][.1741.0020.001C.3379][.15E8.0020.001C.3379] # SQUARE DM CUBED
+01F3 ; [.1631.0020.0004.01F3][.1895.0020.0004.01F3] # LATIN SMALL LETTER DZ
+02A3 ; [.1631.0020.0004.02A3][.1895.0020.0004.02A3] # LATIN SMALL LETTER DZ DIGRAPH
+01F2 ; [.1631.0020.000A.01F2][.1895.0020.0004.01F2] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F1 ; [.1631.0020.000A.01F1][.1895.0020.000A.01F1] # LATIN CAPITAL LETTER DZ
+01C6 ; [.1631.0020.0004.01C6][.1895.0020.0004.01C6][.0000.0041.0004.01C6] # LATIN SMALL LETTER DZ WITH CARON
+01C5 ; [.1631.0020.000A.01C5][.1895.0020.0004.01C5][.0000.0041.0004.01C5] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C4 ; [.1631.0020.000A.01C4][.1895.0020.000A.01C4][.0000.0041.0004.01C4] # LATIN CAPITAL LETTER DZ WITH CARON
+02A5 ; [.1631.0020.0004.02A5][.18A8.0020.0004.02A5] # LATIN SMALL LETTER DZ DIGRAPH WITH CURL
+02A4 ; [.1631.0020.0004.02A4][.18B2.0020.0004.02A4] # LATIN SMALL LETTER DEZH DIGRAPH
+1D05 ; [.1635.0020.0002.1D05] # LATIN LETTER SMALL CAPITAL D
+1D06 ; [.1636.0020.0002.1D06] # LATIN LETTER SMALL CAPITAL ETH
+1D6D ; [.1637.0020.0002.1D6D] # LATIN SMALL LETTER D WITH MIDDLE TILDE
+1D81 ; [.1638.0020.0002.1D81] # LATIN SMALL LETTER D WITH PALATAL HOOK
+0256 ; [.1639.0020.0002.0256] # LATIN SMALL LETTER D WITH TAIL
+0189 ; [.1639.0020.0008.0189] # LATIN CAPITAL LETTER AFRICAN D
+0257 ; [.163D.0020.0002.0257] # LATIN SMALL LETTER D WITH HOOK
+018A ; [.163D.0020.0008.018A] # LATIN CAPITAL LETTER D WITH HOOK
+1D91 ; [.1641.0020.0002.1D91] # LATIN SMALL LETTER D WITH HOOK AND TAIL
+018C ; [.1642.0020.0002.018C] # LATIN SMALL LETTER D WITH TOPBAR
+018B ; [.1642.0020.0008.018B] # LATIN CAPITAL LETTER D WITH TOPBAR
+0221 ; [.1646.0020.0002.0221] # LATIN SMALL LETTER D WITH CURL
+A771 ; [.164A.0020.0002.A771] # LATIN SMALL LETTER DUM
+1E9F ; [.164B.0020.0002.1E9F] # LATIN SMALL LETTER DELTA
+0065 ; [.164C.0020.0002.0065] # LATIN SMALL LETTER E
+FF45 ; [.164C.0020.0003.FF45] # FULLWIDTH LATIN SMALL LETTER E
+0364 ; [.164C.0020.0004.0364] # COMBINING LATIN SMALL LETTER E
+24A0 ; [*02FB.0020.0004.24A0][.164C.0020.0004.24A0][*02FC.0020.001F.24A0] # PARENTHESIZED LATIN SMALL LETTER E
+212F ; [.164C.0020.0005.212F] # SCRIPT SMALL E
+2147 ; [.164C.0020.0005.2147] # DOUBLE-STRUCK ITALIC SMALL E
+1D41E ; [.164C.0020.0005.1D41E] # MATHEMATICAL BOLD SMALL E
+1D452 ; [.164C.0020.0005.1D452] # MATHEMATICAL ITALIC SMALL E
+1D486 ; [.164C.0020.0005.1D486] # MATHEMATICAL BOLD ITALIC SMALL E
+1D4EE ; [.164C.0020.0005.1D4EE] # MATHEMATICAL BOLD SCRIPT SMALL E
+1D522 ; [.164C.0020.0005.1D522] # MATHEMATICAL FRAKTUR SMALL E
+1D556 ; [.164C.0020.0005.1D556] # MATHEMATICAL DOUBLE-STRUCK SMALL E
+1D58A ; [.164C.0020.0005.1D58A] # MATHEMATICAL BOLD FRAKTUR SMALL E
+1D5BE ; [.164C.0020.0005.1D5BE] # MATHEMATICAL SANS-SERIF SMALL E
+1D5F2 ; [.164C.0020.0005.1D5F2] # MATHEMATICAL SANS-SERIF BOLD SMALL E
+1D626 ; [.164C.0020.0005.1D626] # MATHEMATICAL SANS-SERIF ITALIC SMALL E
+1D65A ; [.164C.0020.0005.1D65A] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
+1D68E ; [.164C.0020.0005.1D68E] # MATHEMATICAL MONOSPACE SMALL E
+24D4 ; [.164C.0020.0006.24D4] # CIRCLED LATIN SMALL LETTER E
+0045 ; [.164C.0020.0008.0045] # LATIN CAPITAL LETTER E
+FF25 ; [.164C.0020.0009.FF25] # FULLWIDTH LATIN CAPITAL LETTER E
+1F114 ; [*02FB.0020.0004.1F114][.164C.0020.000A.1F114][*02FC.0020.001F.1F114] # PARENTHESIZED LATIN CAPITAL LETTER E
+2130 ; [.164C.0020.000B.2130] # SCRIPT CAPITAL E
+1D404 ; [.164C.0020.000B.1D404] # MATHEMATICAL BOLD CAPITAL E
+1D438 ; [.164C.0020.000B.1D438] # MATHEMATICAL ITALIC CAPITAL E
+1D46C ; [.164C.0020.000B.1D46C] # MATHEMATICAL BOLD ITALIC CAPITAL E
+1D4D4 ; [.164C.0020.000B.1D4D4] # MATHEMATICAL BOLD SCRIPT CAPITAL E
+1D508 ; [.164C.0020.000B.1D508] # MATHEMATICAL FRAKTUR CAPITAL E
+1D53C ; [.164C.0020.000B.1D53C] # MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+1D570 ; [.164C.0020.000B.1D570] # MATHEMATICAL BOLD FRAKTUR CAPITAL E
+1D5A4 ; [.164C.0020.000B.1D5A4] # MATHEMATICAL SANS-SERIF CAPITAL E
+1D5D8 ; [.164C.0020.000B.1D5D8] # MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+1D60C ; [.164C.0020.000B.1D60C] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+1D640 ; [.164C.0020.000B.1D640] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+1D674 ; [.164C.0020.000B.1D674] # MATHEMATICAL MONOSPACE CAPITAL E
+24BA ; [.164C.0020.000C.24BA] # CIRCLED LATIN CAPITAL LETTER E
+1F154 ; [.164C.0020.000C.1F154] # NEGATIVE CIRCLED LATIN CAPITAL LETTER E
+1D49 ; [.164C.0020.0014.1D49] # MODIFIER LETTER SMALL E
+2091 ; [.164C.0020.0015.2091] # LATIN SUBSCRIPT SMALL LETTER E
+1D31 ; [.164C.0020.001D.1D31] # MODIFIER LETTER CAPITAL E
+1F134 ; [.164C.0020.001D.1F134] # SQUARED LATIN CAPITAL LETTER E
+1F174 ; [.164C.0020.001D.1F174] # NEGATIVE SQUARED LATIN CAPITAL LETTER E
+00E9 ; [.164C.0020.0002.0065][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.164C.0020.0008.0045][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH ACUTE
+00E8 ; [.164C.0020.0002.0065][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH GRAVE
+00C8 ; [.164C.0020.0008.0045][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH GRAVE
+0115 ; [.164C.0020.0002.0065][.0000.0037.0002.0306] # LATIN SMALL LETTER E WITH BREVE
+0114 ; [.164C.0020.0008.0045][.0000.0037.0002.0306] # LATIN CAPITAL LETTER E WITH BREVE
+00EA ; [.164C.0020.0002.0065][.0000.003C.0002.0302] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.164C.0020.0008.0045][.0000.003C.0002.0302] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EBF ; [.164C.0020.0002.0065][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.164C.0020.0008.0045][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC1 ; [.164C.0020.0002.0065][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.164C.0020.0008.0045][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC5 ; [.164C.0020.0002.0065][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.164C.0020.0008.0045][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.164C.0020.0002.0065][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.164C.0020.0008.0045][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+011B ; [.164C.0020.0002.0065][.0000.0041.0002.030C] # LATIN SMALL LETTER E WITH CARON
+011A ; [.164C.0020.0008.0045][.0000.0041.0002.030C] # LATIN CAPITAL LETTER E WITH CARON
+00EB ; [.164C.0020.0002.0065][.0000.0047.0002.0308] # LATIN SMALL LETTER E WITH DIAERESIS
+00CB ; [.164C.0020.0008.0045][.0000.0047.0002.0308] # LATIN CAPITAL LETTER E WITH DIAERESIS
+1EBD ; [.164C.0020.0002.0065][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH TILDE
+1EBC ; [.164C.0020.0008.0045][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH TILDE
+0117 ; [.164C.0020.0002.0065][.0000.0052.0002.0307] # LATIN SMALL LETTER E WITH DOT ABOVE
+0116 ; [.164C.0020.0008.0045][.0000.0052.0002.0307] # LATIN CAPITAL LETTER E WITH DOT ABOVE
+0229 ; [.164C.0020.0002.0065][.0000.0056.0002.0327] # LATIN SMALL LETTER E WITH CEDILLA
+0228 ; [.164C.0020.0008.0045][.0000.0056.0002.0327] # LATIN CAPITAL LETTER E WITH CEDILLA
+1E1D ; [.164C.0020.0002.0065][.0000.0056.0002.0327][.0000.0037.0002.0306] # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1C ; [.164C.0020.0008.0045][.0000.0056.0002.0327][.0000.0037.0002.0306] # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+0119 ; [.164C.0020.0002.0065][.0000.0059.0002.0328] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.164C.0020.0008.0045][.0000.0059.0002.0328] # LATIN CAPITAL LETTER E WITH OGONEK
+0113 ; [.164C.0020.0002.0065][.0000.005B.0002.0304] # LATIN SMALL LETTER E WITH MACRON
+0112 ; [.164C.0020.0008.0045][.0000.005B.0002.0304] # LATIN CAPITAL LETTER E WITH MACRON
+1E17 ; [.164C.0020.0002.0065][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E16 ; [.164C.0020.0008.0045][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E15 ; [.164C.0020.0002.0065][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E14 ; [.164C.0020.0008.0045][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1EBB ; [.164C.0020.0002.0065][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBA ; [.164C.0020.0008.0045][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+0205 ; [.164C.0020.0002.0065][.0000.0065.0002.030F] # LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0204 ; [.164C.0020.0008.0045][.0000.0065.0002.030F] # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0207 ; [.164C.0020.0002.0065][.0000.0067.0002.0311] # LATIN SMALL LETTER E WITH INVERTED BREVE
+0206 ; [.164C.0020.0008.0045][.0000.0067.0002.0311] # LATIN CAPITAL LETTER E WITH INVERTED BREVE
+1EB9 ; [.164C.0020.0002.0065][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH DOT BELOW
+1EB8 ; [.164C.0020.0008.0045][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH DOT BELOW
+1EC7 ; [.164C.0020.0002.0065][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.164C.0020.0008.0045][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1E19 ; [.164C.0020.0002.0065][.0000.0078.0002.032D] # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E18 ; [.164C.0020.0008.0045][.0000.0078.0002.032D] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E1B ; [.164C.0020.0002.0065][.0000.007A.0002.0330] # LATIN SMALL LETTER E WITH TILDE BELOW
+1E1A ; [.164C.0020.0008.0045][.0000.007A.0002.0330] # LATIN CAPITAL LETTER E WITH TILDE BELOW
+32CD ; [.164C.0020.001C.32CD][.17BD.0020.001C.32CD][.1691.0020.001C.32CD] # SQUARE ERG
+32CE ; [.164C.0020.001C.32CE][.185F.0020.001D.32CE] # SQUARE EV
+1D07 ; [.1650.0020.0002.1D07] # LATIN LETTER SMALL CAPITAL E
+0247 ; [.1651.0020.0002.0247] # LATIN SMALL LETTER E WITH STROKE
+0246 ; [.1651.0020.0008.0246] # LATIN CAPITAL LETTER E WITH STROKE
+1D92 ; [.1655.0020.0002.1D92] # LATIN SMALL LETTER E WITH RETROFLEX HOOK
+2C78 ; [.1656.0020.0002.2C78] # LATIN SMALL LETTER E WITH NOTCH
+01DD ; [.1657.0020.0002.01DD] # LATIN SMALL LETTER TURNED E
+018E ; [.1657.0020.0008.018E] # LATIN CAPITAL LETTER REVERSED E
+1D32 ; [.1657.0020.001D.1D32] # MODIFIER LETTER CAPITAL REVERSED E
+2C7B ; [.165B.0020.0002.2C7B] # LATIN LETTER SMALL CAPITAL TURNED E
+0259 ; [.165C.0020.0002.0259] # LATIN SMALL LETTER SCHWA
+018F ; [.165C.0020.0008.018F] # LATIN CAPITAL LETTER SCHWA
+1D4A ; [.165C.0020.0014.1D4A] # MODIFIER LETTER SMALL SCHWA
+2094 ; [.165C.0020.0015.2094] # LATIN SUBSCRIPT SMALL LETTER SCHWA
+1D95 ; [.1660.0020.0002.1D95] # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK
+025B ; [.1661.0020.0002.025B] # LATIN SMALL LETTER OPEN E
+0190 ; [.1661.0020.0008.0190] # LATIN CAPITAL LETTER OPEN E
+2107 ; [.1661.0020.000A.2107] # EULER CONSTANT
+1D4B ; [.1661.0020.0014.1D4B] # MODIFIER LETTER SMALL OPEN E
+1D93 ; [.1665.0020.0002.1D93] # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK
+0258 ; [.1666.0020.0002.0258] # LATIN SMALL LETTER REVERSED E
+025A ; [.166A.0020.0002.025A] # LATIN SMALL LETTER SCHWA WITH HOOK
+025C ; [.166E.0020.0002.025C] # LATIN SMALL LETTER REVERSED OPEN E
+1D9F ; [.166E.0020.0014.1D9F] # MODIFIER LETTER SMALL REVERSED OPEN E
+1D94 ; [.1672.0020.0002.1D94] # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK
+1D08 ; [.1673.0020.0002.1D08] # LATIN SMALL LETTER TURNED OPEN E
+1D4C ; [.1673.0020.0014.1D4C] # MODIFIER LETTER SMALL TURNED OPEN E
+025D ; [.1674.0020.0002.025D] # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
+025E ; [.1678.0020.0002.025E] # LATIN SMALL LETTER CLOSED REVERSED OPEN E
+029A ; [.167C.0020.0002.029A] # LATIN SMALL LETTER CLOSED OPEN E
+0264 ; [.1680.0020.0002.0264] # LATIN SMALL LETTER RAMS HORN
+0066 ; [.1684.0020.0002.0066] # LATIN SMALL LETTER F
+FF46 ; [.1684.0020.0003.FF46] # FULLWIDTH LATIN SMALL LETTER F
+24A1 ; [*02FB.0020.0004.24A1][.1684.0020.0004.24A1][*02FC.0020.001F.24A1] # PARENTHESIZED LATIN SMALL LETTER F
+1D41F ; [.1684.0020.0005.1D41F] # MATHEMATICAL BOLD SMALL F
+1D453 ; [.1684.0020.0005.1D453] # MATHEMATICAL ITALIC SMALL F
+1D487 ; [.1684.0020.0005.1D487] # MATHEMATICAL BOLD ITALIC SMALL F
+1D4BB ; [.1684.0020.0005.1D4BB] # MATHEMATICAL SCRIPT SMALL F
+1D4EF ; [.1684.0020.0005.1D4EF] # MATHEMATICAL BOLD SCRIPT SMALL F
+1D523 ; [.1684.0020.0005.1D523] # MATHEMATICAL FRAKTUR SMALL F
+1D557 ; [.1684.0020.0005.1D557] # MATHEMATICAL DOUBLE-STRUCK SMALL F
+1D58B ; [.1684.0020.0005.1D58B] # MATHEMATICAL BOLD FRAKTUR SMALL F
+1D5BF ; [.1684.0020.0005.1D5BF] # MATHEMATICAL SANS-SERIF SMALL F
+1D5F3 ; [.1684.0020.0005.1D5F3] # MATHEMATICAL SANS-SERIF BOLD SMALL F
+1D627 ; [.1684.0020.0005.1D627] # MATHEMATICAL SANS-SERIF ITALIC SMALL F
+1D65B ; [.1684.0020.0005.1D65B] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
+1D68F ; [.1684.0020.0005.1D68F] # MATHEMATICAL MONOSPACE SMALL F
+24D5 ; [.1684.0020.0006.24D5] # CIRCLED LATIN SMALL LETTER F
+0046 ; [.1684.0020.0008.0046] # LATIN CAPITAL LETTER F
+FF26 ; [.1684.0020.0009.FF26] # FULLWIDTH LATIN CAPITAL LETTER F
+2109 ; [*0482.0020.0004.2109][.1684.0020.000A.2109] # DEGREE FAHRENHEIT
+1F115 ; [*02FB.0020.0004.1F115][.1684.0020.000A.1F115][*02FC.0020.001F.1F115] # PARENTHESIZED LATIN CAPITAL LETTER F
+2131 ; [.1684.0020.000B.2131] # SCRIPT CAPITAL F
+1D405 ; [.1684.0020.000B.1D405] # MATHEMATICAL BOLD CAPITAL F
+1D439 ; [.1684.0020.000B.1D439] # MATHEMATICAL ITALIC CAPITAL F
+1D46D ; [.1684.0020.000B.1D46D] # MATHEMATICAL BOLD ITALIC CAPITAL F
+1D4D5 ; [.1684.0020.000B.1D4D5] # MATHEMATICAL BOLD SCRIPT CAPITAL F
+1D509 ; [.1684.0020.000B.1D509] # MATHEMATICAL FRAKTUR CAPITAL F
+1D53D ; [.1684.0020.000B.1D53D] # MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+1D571 ; [.1684.0020.000B.1D571] # MATHEMATICAL BOLD FRAKTUR CAPITAL F
+1D5A5 ; [.1684.0020.000B.1D5A5] # MATHEMATICAL SANS-SERIF CAPITAL F
+1D5D9 ; [.1684.0020.000B.1D5D9] # MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+1D60D ; [.1684.0020.000B.1D60D] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+1D641 ; [.1684.0020.000B.1D641] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+1D675 ; [.1684.0020.000B.1D675] # MATHEMATICAL MONOSPACE CAPITAL F
+24BB ; [.1684.0020.000C.24BB] # CIRCLED LATIN CAPITAL LETTER F
+1F155 ; [.1684.0020.000C.1F155] # NEGATIVE CIRCLED LATIN CAPITAL LETTER F
+1DA0 ; [.1684.0020.0014.1DA0] # MODIFIER LETTER SMALL F
+1F135 ; [.1684.0020.001D.1F135] # SQUARED LATIN CAPITAL LETTER F
+1F175 ; [.1684.0020.001D.1F175] # NEGATIVE SQUARED LATIN CAPITAL LETTER F
+1E1F ; [.1684.0020.0002.0066][.0000.0052.0002.0307] # LATIN SMALL LETTER F WITH DOT ABOVE
+1E1E ; [.1684.0020.0008.0046][.0000.0052.0002.0307] # LATIN CAPITAL LETTER F WITH DOT ABOVE
+A77C ; [.1684.0020.0004.A77C][.0000.013A.0004.A77C] # LATIN SMALL LETTER INSULAR F
+A77B ; [.1684.0020.000A.A77B][.0000.013A.0004.A77B] # LATIN CAPITAL LETTER INSULAR F
+213B ; [.1684.0020.000A.213B][.15EF.0020.000A.213B][.187B.0020.000A.213B] # FACSIMILE SIGN
+FB00 ; [.1684.0020.0004.FB00][.1684.0020.0004.FB00] # LATIN SMALL LIGATURE FF
+FB03 ; [.1684.0020.0004.FB03][.1684.0020.0004.FB03][.16CD.0020.0004.FB03] # LATIN SMALL LIGATURE FFI
+FB04 ; [.1684.0020.0004.FB04][.1684.0020.0004.FB04][.1711.0020.0004.FB04] # LATIN SMALL LIGATURE FFL
+FB01 ; [.1684.0020.0004.FB01][.16CD.0020.0004.FB01] # LATIN SMALL LIGATURE FI
+FB02 ; [.1684.0020.0004.FB02][.1711.0020.0004.FB02] # LATIN SMALL LIGATURE FL
+3399 ; [.1684.0020.001C.3399][.1741.0020.001C.3399] # SQUARE FM
+02A9 ; [.1684.0020.0004.02A9][.176D.0020.0004.02A9] # LATIN SMALL LETTER FENG DIGRAPH
+1F193 ; [.1684.0020.001D.1F193][.17BD.0020.001D.1F193][.164C.0020.001D.1F193][.164C.0020.001D.1F193] # SQUARED FREE
+A730 ; [.1688.0020.0002.A730] # LATIN LETTER SMALL CAPITAL F
+1D6E ; [.1689.0020.0002.1D6E] # LATIN SMALL LETTER F WITH MIDDLE TILDE
+1D82 ; [.168A.0020.0002.1D82] # LATIN SMALL LETTER F WITH PALATAL HOOK
+0192 ; [.168B.0020.0002.0192] # LATIN SMALL LETTER F WITH HOOK
+0191 ; [.168B.0020.0008.0191] # LATIN CAPITAL LETTER F WITH HOOK
+214E ; [.168F.0020.0002.214E] # TURNED SMALL F
+2132 ; [.168F.0020.0008.2132] # TURNED CAPITAL F
+A7FB ; [.1690.0020.0002.A7FB] # LATIN EPIGRAPHIC LETTER REVERSED F
+0067 ; [.1691.0020.0002.0067] # LATIN SMALL LETTER G
+FF47 ; [.1691.0020.0003.FF47] # FULLWIDTH LATIN SMALL LETTER G
+1DDA ; [.1691.0020.0004.1DDA] # COMBINING LATIN SMALL LETTER G
+24A2 ; [*02FB.0020.0004.24A2][.1691.0020.0004.24A2][*02FC.0020.001F.24A2] # PARENTHESIZED LATIN SMALL LETTER G
+210A ; [.1691.0020.0005.210A] # SCRIPT SMALL G
+1D420 ; [.1691.0020.0005.1D420] # MATHEMATICAL BOLD SMALL G
+1D454 ; [.1691.0020.0005.1D454] # MATHEMATICAL ITALIC SMALL G
+1D488 ; [.1691.0020.0005.1D488] # MATHEMATICAL BOLD ITALIC SMALL G
+1D4F0 ; [.1691.0020.0005.1D4F0] # MATHEMATICAL BOLD SCRIPT SMALL G
+1D524 ; [.1691.0020.0005.1D524] # MATHEMATICAL FRAKTUR SMALL G
+1D558 ; [.1691.0020.0005.1D558] # MATHEMATICAL DOUBLE-STRUCK SMALL G
+1D58C ; [.1691.0020.0005.1D58C] # MATHEMATICAL BOLD FRAKTUR SMALL G
+1D5C0 ; [.1691.0020.0005.1D5C0] # MATHEMATICAL SANS-SERIF SMALL G
+1D5F4 ; [.1691.0020.0005.1D5F4] # MATHEMATICAL SANS-SERIF BOLD SMALL G
+1D628 ; [.1691.0020.0005.1D628] # MATHEMATICAL SANS-SERIF ITALIC SMALL G
+1D65C ; [.1691.0020.0005.1D65C] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
+1D690 ; [.1691.0020.0005.1D690] # MATHEMATICAL MONOSPACE SMALL G
+24D6 ; [.1691.0020.0006.24D6] # CIRCLED LATIN SMALL LETTER G
+0047 ; [.1691.0020.0008.0047] # LATIN CAPITAL LETTER G
+FF27 ; [.1691.0020.0009.FF27] # FULLWIDTH LATIN CAPITAL LETTER G
+1F116 ; [*02FB.0020.0004.1F116][.1691.0020.000A.1F116][*02FC.0020.001F.1F116] # PARENTHESIZED LATIN CAPITAL LETTER G
+1D406 ; [.1691.0020.000B.1D406] # MATHEMATICAL BOLD CAPITAL G
+1D43A ; [.1691.0020.000B.1D43A] # MATHEMATICAL ITALIC CAPITAL G
+1D46E ; [.1691.0020.000B.1D46E] # MATHEMATICAL BOLD ITALIC CAPITAL G
+1D4A2 ; [.1691.0020.000B.1D4A2] # MATHEMATICAL SCRIPT CAPITAL G
+1D4D6 ; [.1691.0020.000B.1D4D6] # MATHEMATICAL BOLD SCRIPT CAPITAL G
+1D50A ; [.1691.0020.000B.1D50A] # MATHEMATICAL FRAKTUR CAPITAL G
+1D53E ; [.1691.0020.000B.1D53E] # MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D572 ; [.1691.0020.000B.1D572] # MATHEMATICAL BOLD FRAKTUR CAPITAL G
+1D5A6 ; [.1691.0020.000B.1D5A6] # MATHEMATICAL SANS-SERIF CAPITAL G
+1D5DA ; [.1691.0020.000B.1D5DA] # MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+1D60E ; [.1691.0020.000B.1D60E] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+1D642 ; [.1691.0020.000B.1D642] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+1D676 ; [.1691.0020.000B.1D676] # MATHEMATICAL MONOSPACE CAPITAL G
+24BC ; [.1691.0020.000C.24BC] # CIRCLED LATIN CAPITAL LETTER G
+1F156 ; [.1691.0020.000C.1F156] # NEGATIVE CIRCLED LATIN CAPITAL LETTER G
+1D4D ; [.1691.0020.0014.1D4D] # MODIFIER LETTER SMALL G
+1D33 ; [.1691.0020.001D.1D33] # MODIFIER LETTER CAPITAL G
+1F136 ; [.1691.0020.001D.1F136] # SQUARED LATIN CAPITAL LETTER G
+1F176 ; [.1691.0020.001D.1F176] # NEGATIVE SQUARED LATIN CAPITAL LETTER G
+01F5 ; [.1691.0020.0002.0067][.0000.0032.0002.0301] # LATIN SMALL LETTER G WITH ACUTE
+01F4 ; [.1691.0020.0008.0047][.0000.0032.0002.0301] # LATIN CAPITAL LETTER G WITH ACUTE
+011F ; [.1691.0020.0002.0067][.0000.0037.0002.0306] # LATIN SMALL LETTER G WITH BREVE
+011E ; [.1691.0020.0008.0047][.0000.0037.0002.0306] # LATIN CAPITAL LETTER G WITH BREVE
+011D ; [.1691.0020.0002.0067][.0000.003C.0002.0302] # LATIN SMALL LETTER G WITH CIRCUMFLEX
+011C ; [.1691.0020.0008.0047][.0000.003C.0002.0302] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+01E7 ; [.1691.0020.0002.0067][.0000.0041.0002.030C] # LATIN SMALL LETTER G WITH CARON
+01E6 ; [.1691.0020.0008.0047][.0000.0041.0002.030C] # LATIN CAPITAL LETTER G WITH CARON
+0121 ; [.1691.0020.0002.0067][.0000.0052.0002.0307] # LATIN SMALL LETTER G WITH DOT ABOVE
+0120 ; [.1691.0020.0008.0047][.0000.0052.0002.0307] # LATIN CAPITAL LETTER G WITH DOT ABOVE
+0123 ; [.1691.0020.0002.0067][.0000.0056.0002.0327] # LATIN SMALL LETTER G WITH CEDILLA
+0122 ; [.1691.0020.0008.0047][.0000.0056.0002.0327] # LATIN CAPITAL LETTER G WITH CEDILLA
+1E21 ; [.1691.0020.0002.0067][.0000.005B.0002.0304] # LATIN SMALL LETTER G WITH MACRON
+1E20 ; [.1691.0020.0008.0047][.0000.005B.0002.0304] # LATIN CAPITAL LETTER G WITH MACRON
+A7A1 ; [.1691.0020.0004.A7A1][.0000.0061.0004.A7A1] # LATIN SMALL LETTER G WITH OBLIQUE STROKE
+A7A0 ; [.1691.0020.000A.A7A0][.0000.0061.0004.A7A0] # LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
+1D79 ; [.1691.0020.0004.1D79][.0000.013A.0004.1D79] # LATIN SMALL LETTER INSULAR G
+A77D ; [.1691.0020.000A.A77D][.0000.013A.0004.A77D] # LATIN CAPITAL LETTER INSULAR G
+33FF ; [.1691.0020.001C.33FF][.15EF.0020.001C.33FF][.1711.0020.001C.33FF] # SQUARE GAL
+3387 ; [.1691.0020.001D.3387][.1605.0020.001D.3387] # SQUARE GB
+3393 ; [.1691.0020.001D.3393][.16B4.0020.001D.3393][.1895.0020.001C.3393] # SQUARE GHZ
+33AC ; [.1691.0020.001D.33AC][.1796.0020.001D.33AC][.15EF.0020.001C.33AC] # SQUARE GPA
+33C9 ; [.1691.0020.001D.33C9][.1880.0020.001C.33C9] # SQUARE GY
+0261 ; [.1695.0020.0002.0261] # LATIN SMALL LETTER SCRIPT G
+1DA2 ; [.1695.0020.0014.1DA2] # MODIFIER LETTER SMALL SCRIPT G
+0262 ; [.1699.0020.0002.0262] # LATIN LETTER SMALL CAPITAL G
+1DDB ; [.1699.0020.0004.1DDB] # COMBINING LATIN LETTER SMALL CAPITAL G
+01E5 ; [.169D.0020.0002.01E5] # LATIN SMALL LETTER G WITH STROKE
+01E4 ; [.169D.0020.0008.01E4] # LATIN CAPITAL LETTER G WITH STROKE
+1D83 ; [.16A1.0020.0002.1D83] # LATIN SMALL LETTER G WITH PALATAL HOOK
+0260 ; [.16A2.0020.0002.0260] # LATIN SMALL LETTER G WITH HOOK
+0193 ; [.16A2.0020.0008.0193] # LATIN CAPITAL LETTER G WITH HOOK
+029B ; [.16A6.0020.0002.029B] # LATIN LETTER SMALL CAPITAL G WITH HOOK
+1D77 ; [.16AA.0020.0002.1D77] # LATIN SMALL LETTER TURNED G
+A77F ; [.16AB.0020.0002.A77F] # LATIN SMALL LETTER TURNED INSULAR G
+A77E ; [.16AB.0020.0008.A77E] # LATIN CAPITAL LETTER TURNED INSULAR G
+0263 ; [.16AC.0020.0002.0263] # LATIN SMALL LETTER GAMMA
+0194 ; [.16AC.0020.0008.0194] # LATIN CAPITAL LETTER GAMMA
+02E0 ; [.16AC.0020.0014.02E0] # MODIFIER LETTER SMALL GAMMA
+01A3 ; [.16B0.0020.0002.01A3] # LATIN SMALL LETTER OI
+01A2 ; [.16B0.0020.0008.01A2] # LATIN CAPITAL LETTER OI
+0068 ; [.16B4.0020.0002.0068] # LATIN SMALL LETTER H
+FF48 ; [.16B4.0020.0003.FF48] # FULLWIDTH LATIN SMALL LETTER H
+036A ; [.16B4.0020.0004.036A] # COMBINING LATIN SMALL LETTER H
+24A3 ; [*02FB.0020.0004.24A3][.16B4.0020.0004.24A3][*02FC.0020.001F.24A3] # PARENTHESIZED LATIN SMALL LETTER H
+210E ; [.16B4.0020.0005.210E] # PLANCK CONSTANT
+1D421 ; [.16B4.0020.0005.1D421] # MATHEMATICAL BOLD SMALL H
+1D489 ; [.16B4.0020.0005.1D489] # MATHEMATICAL BOLD ITALIC SMALL H
+1D4BD ; [.16B4.0020.0005.1D4BD] # MATHEMATICAL SCRIPT SMALL H
+1D4F1 ; [.16B4.0020.0005.1D4F1] # MATHEMATICAL BOLD SCRIPT SMALL H
+1D525 ; [.16B4.0020.0005.1D525] # MATHEMATICAL FRAKTUR SMALL H
+1D559 ; [.16B4.0020.0005.1D559] # MATHEMATICAL DOUBLE-STRUCK SMALL H
+1D58D ; [.16B4.0020.0005.1D58D] # MATHEMATICAL BOLD FRAKTUR SMALL H
+1D5C1 ; [.16B4.0020.0005.1D5C1] # MATHEMATICAL SANS-SERIF SMALL H
+1D5F5 ; [.16B4.0020.0005.1D5F5] # MATHEMATICAL SANS-SERIF BOLD SMALL H
+1D629 ; [.16B4.0020.0005.1D629] # MATHEMATICAL SANS-SERIF ITALIC SMALL H
+1D65D ; [.16B4.0020.0005.1D65D] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
+1D691 ; [.16B4.0020.0005.1D691] # MATHEMATICAL MONOSPACE SMALL H
+24D7 ; [.16B4.0020.0006.24D7] # CIRCLED LATIN SMALL LETTER H
+0048 ; [.16B4.0020.0008.0048] # LATIN CAPITAL LETTER H
+FF28 ; [.16B4.0020.0009.FF28] # FULLWIDTH LATIN CAPITAL LETTER H
+1F117 ; [*02FB.0020.0004.1F117][.16B4.0020.000A.1F117][*02FC.0020.001F.1F117] # PARENTHESIZED LATIN CAPITAL LETTER H
+210B ; [.16B4.0020.000B.210B] # SCRIPT CAPITAL H
+210C ; [.16B4.0020.000B.210C] # BLACK-LETTER CAPITAL H
+210D ; [.16B4.0020.000B.210D] # DOUBLE-STRUCK CAPITAL H
+1D407 ; [.16B4.0020.000B.1D407] # MATHEMATICAL BOLD CAPITAL H
+1D43B ; [.16B4.0020.000B.1D43B] # MATHEMATICAL ITALIC CAPITAL H
+1D46F ; [.16B4.0020.000B.1D46F] # MATHEMATICAL BOLD ITALIC CAPITAL H
+1D4D7 ; [.16B4.0020.000B.1D4D7] # MATHEMATICAL BOLD SCRIPT CAPITAL H
+1D573 ; [.16B4.0020.000B.1D573] # MATHEMATICAL BOLD FRAKTUR CAPITAL H
+1D5A7 ; [.16B4.0020.000B.1D5A7] # MATHEMATICAL SANS-SERIF CAPITAL H
+1D5DB ; [.16B4.0020.000B.1D5DB] # MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+1D60F ; [.16B4.0020.000B.1D60F] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+1D643 ; [.16B4.0020.000B.1D643] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+1D677 ; [.16B4.0020.000B.1D677] # MATHEMATICAL MONOSPACE CAPITAL H
+24BD ; [.16B4.0020.000C.24BD] # CIRCLED LATIN CAPITAL LETTER H
+1F157 ; [.16B4.0020.000C.1F157] # NEGATIVE CIRCLED LATIN CAPITAL LETTER H
+02B0 ; [.16B4.0020.0014.02B0] # MODIFIER LETTER SMALL H
+2095 ; [.16B4.0020.0015.2095] # LATIN SUBSCRIPT SMALL LETTER H
+1D34 ; [.16B4.0020.001D.1D34] # MODIFIER LETTER CAPITAL H
+1F137 ; [.16B4.0020.001D.1F137] # SQUARED LATIN CAPITAL LETTER H
+1F177 ; [.16B4.0020.001D.1F177] # NEGATIVE SQUARED LATIN CAPITAL LETTER H
+0125 ; [.16B4.0020.0002.0068][.0000.003C.0002.0302] # LATIN SMALL LETTER H WITH CIRCUMFLEX
+0124 ; [.16B4.0020.0008.0048][.0000.003C.0002.0302] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+021F ; [.16B4.0020.0002.0068][.0000.0041.0002.030C] # LATIN SMALL LETTER H WITH CARON
+021E ; [.16B4.0020.0008.0048][.0000.0041.0002.030C] # LATIN CAPITAL LETTER H WITH CARON
+1E27 ; [.16B4.0020.0002.0068][.0000.0047.0002.0308] # LATIN SMALL LETTER H WITH DIAERESIS
+1E26 ; [.16B4.0020.0008.0048][.0000.0047.0002.0308] # LATIN CAPITAL LETTER H WITH DIAERESIS
+1E23 ; [.16B4.0020.0002.0068][.0000.0052.0002.0307] # LATIN SMALL LETTER H WITH DOT ABOVE
+1E22 ; [.16B4.0020.0008.0048][.0000.0052.0002.0307] # LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E29 ; [.16B4.0020.0002.0068][.0000.0056.0002.0327] # LATIN SMALL LETTER H WITH CEDILLA
+1E28 ; [.16B4.0020.0008.0048][.0000.0056.0002.0327] # LATIN CAPITAL LETTER H WITH CEDILLA
+1E25 ; [.16B4.0020.0002.0068][.0000.0070.0002.0323] # LATIN SMALL LETTER H WITH DOT BELOW
+1E24 ; [.16B4.0020.0008.0048][.0000.0070.0002.0323] # LATIN CAPITAL LETTER H WITH DOT BELOW
+1E2B ; [.16B4.0020.0002.0068][.0000.0079.0002.032E] # LATIN SMALL LETTER H WITH BREVE BELOW
+1E2A ; [.16B4.0020.0008.0048][.0000.0079.0002.032E] # LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E96 ; [.16B4.0020.0002.0068][.0000.007B.0002.0331] # LATIN SMALL LETTER H WITH LINE BELOW
+0127 ; [.16B4.0020.0002.0068][.0000.007D.0002.0335] # LATIN SMALL LETTER H WITH STROKE
+210F ; [.16B4.0020.0002.210F][.0000.007D.0002.210F] # PLANCK CONSTANT OVER TWO PI
+0126 ; [.16B4.0020.0008.0048][.0000.007D.0002.0335] # LATIN CAPITAL LETTER H WITH STROKE
+A7F8 ; [.16B4.0020.0014.A7F8][.0000.007D.0014.A7F8] # MODIFIER LETTER CAPITAL H WITH STROKE
+33CA ; [.16B4.0020.001C.33CA][.15EF.0020.001C.33CA] # SQUARE HA
+32CC ; [.16B4.0020.001D.32CC][.1691.0020.001C.32CC] # SQUARE HG
+33CB ; [.16B4.0020.001D.33CB][.1796.0020.001D.33CB] # SQUARE HP
+3371 ; [.16B4.0020.001C.3371][.1796.0020.001D.3371][.15EF.0020.001C.3371] # SQUARE HPA
+1F14A ; [.16B4.0020.001D.1F14A][.185F.0020.001D.1F14A] # SQUARED HV
+3390 ; [.16B4.0020.001D.3390][.1895.0020.001C.3390] # SQUARE HZ
+029C ; [.16B8.0020.0002.029C] # LATIN LETTER SMALL CAPITAL H
+0195 ; [.16BC.0020.0002.0195] # LATIN SMALL LETTER HV
+01F6 ; [.16BC.0020.0008.01F6] # LATIN CAPITAL LETTER HWAIR
+0266 ; [.16C0.0020.0002.0266] # LATIN SMALL LETTER H WITH HOOK
+A7AA ; [.16C0.0020.0008.A7AA] # LATIN CAPITAL LETTER H WITH HOOK
+02B1 ; [.16C0.0020.0014.02B1] # MODIFIER LETTER SMALL H WITH HOOK
+2C68 ; [.16C4.0020.0002.2C68] # LATIN SMALL LETTER H WITH DESCENDER
+2C67 ; [.16C4.0020.0008.2C67] # LATIN CAPITAL LETTER H WITH DESCENDER
+2C76 ; [.16C5.0020.0002.2C76] # LATIN SMALL LETTER HALF H
+2C75 ; [.16C5.0020.0008.2C75] # LATIN CAPITAL LETTER HALF H
+A727 ; [.16C6.0020.0002.A727] # LATIN SMALL LETTER HENG
+A726 ; [.16C6.0020.0008.A726] # LATIN CAPITAL LETTER HENG
+0267 ; [.16C7.0020.0002.0267] # LATIN SMALL LETTER HENG WITH HOOK
+02BB ; [.16CB.0020.0002.02BB] # MODIFIER LETTER TURNED COMMA
+02BD ; [.16CC.0020.0002.02BD] # MODIFIER LETTER REVERSED COMMA
+0069 ; [.16CD.0020.0002.0069] # LATIN SMALL LETTER I
+FF49 ; [.16CD.0020.0003.FF49] # FULLWIDTH LATIN SMALL LETTER I
+0365 ; [.16CD.0020.0004.0365] # COMBINING LATIN SMALL LETTER I
+2170 ; [.16CD.0020.0004.2170] # SMALL ROMAN NUMERAL ONE
+24A4 ; [*02FB.0020.0004.24A4][.16CD.0020.0004.24A4][*02FC.0020.001F.24A4] # PARENTHESIZED LATIN SMALL LETTER I
+2139 ; [.16CD.0020.0005.2139] # INFORMATION SOURCE
+2148 ; [.16CD.0020.0005.2148] # DOUBLE-STRUCK ITALIC SMALL I
+1D422 ; [.16CD.0020.0005.1D422] # MATHEMATICAL BOLD SMALL I
+1D456 ; [.16CD.0020.0005.1D456] # MATHEMATICAL ITALIC SMALL I
+1D48A ; [.16CD.0020.0005.1D48A] # MATHEMATICAL BOLD ITALIC SMALL I
+1D4BE ; [.16CD.0020.0005.1D4BE] # MATHEMATICAL SCRIPT SMALL I
+1D4F2 ; [.16CD.0020.0005.1D4F2] # MATHEMATICAL BOLD SCRIPT SMALL I
+1D526 ; [.16CD.0020.0005.1D526] # MATHEMATICAL FRAKTUR SMALL I
+1D55A ; [.16CD.0020.0005.1D55A] # MATHEMATICAL DOUBLE-STRUCK SMALL I
+1D58E ; [.16CD.0020.0005.1D58E] # MATHEMATICAL BOLD FRAKTUR SMALL I
+1D5C2 ; [.16CD.0020.0005.1D5C2] # MATHEMATICAL SANS-SERIF SMALL I
+1D5F6 ; [.16CD.0020.0005.1D5F6] # MATHEMATICAL SANS-SERIF BOLD SMALL I
+1D62A ; [.16CD.0020.0005.1D62A] # MATHEMATICAL SANS-SERIF ITALIC SMALL I
+1D65E ; [.16CD.0020.0005.1D65E] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
+1D692 ; [.16CD.0020.0005.1D692] # MATHEMATICAL MONOSPACE SMALL I
+24D8 ; [.16CD.0020.0006.24D8] # CIRCLED LATIN SMALL LETTER I
+0049 ; [.16CD.0020.0008.0049] # LATIN CAPITAL LETTER I
+FF29 ; [.16CD.0020.0009.FF29] # FULLWIDTH LATIN CAPITAL LETTER I
+2160 ; [.16CD.0020.000A.2160] # ROMAN NUMERAL ONE
+1F118 ; [*02FB.0020.0004.1F118][.16CD.0020.000A.1F118][*02FC.0020.001F.1F118] # PARENTHESIZED LATIN CAPITAL LETTER I
+2110 ; [.16CD.0020.000B.2110] # SCRIPT CAPITAL I
+2111 ; [.16CD.0020.000B.2111] # BLACK-LETTER CAPITAL I
+1D408 ; [.16CD.0020.000B.1D408] # MATHEMATICAL BOLD CAPITAL I
+1D43C ; [.16CD.0020.000B.1D43C] # MATHEMATICAL ITALIC CAPITAL I
+1D470 ; [.16CD.0020.000B.1D470] # MATHEMATICAL BOLD ITALIC CAPITAL I
+1D4D8 ; [.16CD.0020.000B.1D4D8] # MATHEMATICAL BOLD SCRIPT CAPITAL I
+1D540 ; [.16CD.0020.000B.1D540] # MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+1D574 ; [.16CD.0020.000B.1D574] # MATHEMATICAL BOLD FRAKTUR CAPITAL I
+1D5A8 ; [.16CD.0020.000B.1D5A8] # MATHEMATICAL SANS-SERIF CAPITAL I
+1D5DC ; [.16CD.0020.000B.1D5DC] # MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+1D610 ; [.16CD.0020.000B.1D610] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+1D644 ; [.16CD.0020.000B.1D644] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+1D678 ; [.16CD.0020.000B.1D678] # MATHEMATICAL MONOSPACE CAPITAL I
+24BE ; [.16CD.0020.000C.24BE] # CIRCLED LATIN CAPITAL LETTER I
+1F158 ; [.16CD.0020.000C.1F158] # NEGATIVE CIRCLED LATIN CAPITAL LETTER I
+2071 ; [.16CD.0020.0014.2071] # SUPERSCRIPT LATIN SMALL LETTER I
+1D62 ; [.16CD.0020.0015.1D62] # LATIN SUBSCRIPT SMALL LETTER I
+1D35 ; [.16CD.0020.001D.1D35] # MODIFIER LETTER CAPITAL I
+1F138 ; [.16CD.0020.001D.1F138] # SQUARED LATIN CAPITAL LETTER I
+1F178 ; [.16CD.0020.001D.1F178] # NEGATIVE SQUARED LATIN CAPITAL LETTER I
+00ED ; [.16CD.0020.0002.0069][.0000.0032.0002.0301] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.16CD.0020.0008.0049][.0000.0032.0002.0301] # LATIN CAPITAL LETTER I WITH ACUTE
+00EC ; [.16CD.0020.0002.0069][.0000.0035.0002.0300] # LATIN SMALL LETTER I WITH GRAVE
+00CC ; [.16CD.0020.0008.0049][.0000.0035.0002.0300] # LATIN CAPITAL LETTER I WITH GRAVE
+012D ; [.16CD.0020.0002.0069][.0000.0037.0002.0306] # LATIN SMALL LETTER I WITH BREVE
+012C ; [.16CD.0020.0008.0049][.0000.0037.0002.0306] # LATIN CAPITAL LETTER I WITH BREVE
+00EE ; [.16CD.0020.0002.0069][.0000.003C.0002.0302] # LATIN SMALL LETTER I WITH CIRCUMFLEX
+00CE ; [.16CD.0020.0008.0049][.0000.003C.0002.0302] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+01D0 ; [.16CD.0020.0002.0069][.0000.0041.0002.030C] # LATIN SMALL LETTER I WITH CARON
+01CF ; [.16CD.0020.0008.0049][.0000.0041.0002.030C] # LATIN CAPITAL LETTER I WITH CARON
+00EF ; [.16CD.0020.0002.0069][.0000.0047.0002.0308] # LATIN SMALL LETTER I WITH DIAERESIS
+00CF ; [.16CD.0020.0008.0049][.0000.0047.0002.0308] # LATIN CAPITAL LETTER I WITH DIAERESIS
+1E2F ; [.16CD.0020.0002.0069][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E2E ; [.16CD.0020.0008.0049][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+0129 ; [.16CD.0020.0002.0069][.0000.004E.0002.0303] # LATIN SMALL LETTER I WITH TILDE
+0128 ; [.16CD.0020.0008.0049][.0000.004E.0002.0303] # LATIN CAPITAL LETTER I WITH TILDE
+0130 ; [.16CD.0020.0008.0049][.0000.0052.0002.0307] # LATIN CAPITAL LETTER I WITH DOT ABOVE
+012F ; [.16CD.0020.0002.0069][.0000.0059.0002.0328] # LATIN SMALL LETTER I WITH OGONEK
+012E ; [.16CD.0020.0008.0049][.0000.0059.0002.0328] # LATIN CAPITAL LETTER I WITH OGONEK
+012B ; [.16CD.0020.0002.0069][.0000.005B.0002.0304] # LATIN SMALL LETTER I WITH MACRON
+012A ; [.16CD.0020.0008.0049][.0000.005B.0002.0304] # LATIN CAPITAL LETTER I WITH MACRON
+1EC9 ; [.16CD.0020.0002.0069][.0000.0064.0002.0309] # LATIN SMALL LETTER I WITH HOOK ABOVE
+1EC8 ; [.16CD.0020.0008.0049][.0000.0064.0002.0309] # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+0209 ; [.16CD.0020.0002.0069][.0000.0065.0002.030F] # LATIN SMALL LETTER I WITH DOUBLE GRAVE
+0208 ; [.16CD.0020.0008.0049][.0000.0065.0002.030F] # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+020B ; [.16CD.0020.0002.0069][.0000.0067.0002.0311] # LATIN SMALL LETTER I WITH INVERTED BREVE
+020A ; [.16CD.0020.0008.0049][.0000.0067.0002.0311] # LATIN CAPITAL LETTER I WITH INVERTED BREVE
+1ECB ; [.16CD.0020.0002.0069][.0000.0070.0002.0323] # LATIN SMALL LETTER I WITH DOT BELOW
+1ECA ; [.16CD.0020.0008.0049][.0000.0070.0002.0323] # LATIN CAPITAL LETTER I WITH DOT BELOW
+1E2D ; [.16CD.0020.0002.0069][.0000.007A.0002.0330] # LATIN SMALL LETTER I WITH TILDE BELOW
+1E2C ; [.16CD.0020.0008.0049][.0000.007A.0002.0330] # LATIN CAPITAL LETTER I WITH TILDE BELOW
+1F18B ; [.16CD.0020.001D.1F18B][.161D.0020.001D.1F18B] # NEGATIVE SQUARED IC
+1F194 ; [.16CD.0020.001D.1F194][.1631.0020.001D.1F194] # SQUARED ID
+2171 ; [.16CD.0020.0004.2171][.16CD.0020.001F.2171] # SMALL ROMAN NUMERAL TWO
+2161 ; [.16CD.0020.000A.2161][.16CD.0020.001F.2161] # ROMAN NUMERAL TWO
+2172 ; [.16CD.0020.0004.2172][.16CD.0020.0004.2172][.16CD.0020.001F.2172] # SMALL ROMAN NUMERAL THREE
+2162 ; [.16CD.0020.000A.2162][.16CD.0020.000A.2162][.16CD.0020.001F.2162] # ROMAN NUMERAL THREE
+0133 ; [.16CD.0020.0004.0133][.16E6.0020.0004.0133] # LATIN SMALL LIGATURE IJ
+0132 ; [.16CD.0020.000A.0132][.16E6.0020.000A.0132] # LATIN CAPITAL LIGATURE IJ
+33CC ; [.16CD.0020.001C.33CC][.174F.0020.001C.33CC] # SQUARE IN
+337A ; [.16CD.0020.001D.337A][.1836.0020.001D.337A] # SQUARE IU
+2173 ; [.16CD.0020.0004.2173][.185F.0020.001F.2173] # SMALL ROMAN NUMERAL FOUR
+2163 ; [.16CD.0020.000A.2163][.185F.0020.001F.2163] # ROMAN NUMERAL FOUR
+2178 ; [.16CD.0020.0004.2178][.187B.0020.001F.2178] # SMALL ROMAN NUMERAL NINE
+2168 ; [.16CD.0020.000A.2168][.187B.0020.001F.2168] # ROMAN NUMERAL NINE
+0131 ; [.16D1.0020.0002.0131] # LATIN SMALL LETTER DOTLESS I
+1D6A4 ; [.16D1.0020.0005.1D6A4] # MATHEMATICAL ITALIC SMALL DOTLESS I
+026A ; [.16D5.0020.0002.026A] # LATIN LETTER SMALL CAPITAL I
+1DA6 ; [.16D5.0020.0014.1DA6] # MODIFIER LETTER SMALL CAPITAL I
+A7FE ; [.16D9.0020.0002.A7FE] # LATIN EPIGRAPHIC LETTER I LONGA
+1D09 ; [.16DA.0020.0002.1D09] # LATIN SMALL LETTER TURNED I
+1D4E ; [.16DA.0020.0014.1D4E] # MODIFIER LETTER SMALL TURNED I
+0268 ; [.16DB.0020.0002.0268] # LATIN SMALL LETTER I WITH STROKE
+0197 ; [.16DB.0020.0008.0197] # LATIN CAPITAL LETTER I WITH STROKE
+1DA4 ; [.16DB.0020.0014.1DA4] # MODIFIER LETTER SMALL I WITH STROKE
+1D7B ; [.16DF.0020.0002.1D7B] # LATIN SMALL CAPITAL LETTER I WITH STROKE
+1DA7 ; [.16DF.0020.0014.1DA7] # MODIFIER LETTER SMALL CAPITAL I WITH STROKE
+1D96 ; [.16E0.0020.0002.1D96] # LATIN SMALL LETTER I WITH RETROFLEX HOOK
+0269 ; [.16E1.0020.0002.0269] # LATIN SMALL LETTER IOTA
+0196 ; [.16E1.0020.0008.0196] # LATIN CAPITAL LETTER IOTA
+1DA5 ; [.16E1.0020.0014.1DA5] # MODIFIER LETTER SMALL IOTA
+1D7C ; [.16E5.0020.0002.1D7C] # LATIN SMALL LETTER IOTA WITH STROKE
+006A ; [.16E6.0020.0002.006A] # LATIN SMALL LETTER J
+FF4A ; [.16E6.0020.0003.FF4A] # FULLWIDTH LATIN SMALL LETTER J
+24A5 ; [*02FB.0020.0004.24A5][.16E6.0020.0004.24A5][*02FC.0020.001F.24A5] # PARENTHESIZED LATIN SMALL LETTER J
+2149 ; [.16E6.0020.0005.2149] # DOUBLE-STRUCK ITALIC SMALL J
+1D423 ; [.16E6.0020.0005.1D423] # MATHEMATICAL BOLD SMALL J
+1D457 ; [.16E6.0020.0005.1D457] # MATHEMATICAL ITALIC SMALL J
+1D48B ; [.16E6.0020.0005.1D48B] # MATHEMATICAL BOLD ITALIC SMALL J
+1D4BF ; [.16E6.0020.0005.1D4BF] # MATHEMATICAL SCRIPT SMALL J
+1D4F3 ; [.16E6.0020.0005.1D4F3] # MATHEMATICAL BOLD SCRIPT SMALL J
+1D527 ; [.16E6.0020.0005.1D527] # MATHEMATICAL FRAKTUR SMALL J
+1D55B ; [.16E6.0020.0005.1D55B] # MATHEMATICAL DOUBLE-STRUCK SMALL J
+1D58F ; [.16E6.0020.0005.1D58F] # MATHEMATICAL BOLD FRAKTUR SMALL J
+1D5C3 ; [.16E6.0020.0005.1D5C3] # MATHEMATICAL SANS-SERIF SMALL J
+1D5F7 ; [.16E6.0020.0005.1D5F7] # MATHEMATICAL SANS-SERIF BOLD SMALL J
+1D62B ; [.16E6.0020.0005.1D62B] # MATHEMATICAL SANS-SERIF ITALIC SMALL J
+1D65F ; [.16E6.0020.0005.1D65F] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
+1D693 ; [.16E6.0020.0005.1D693] # MATHEMATICAL MONOSPACE SMALL J
+24D9 ; [.16E6.0020.0006.24D9] # CIRCLED LATIN SMALL LETTER J
+004A ; [.16E6.0020.0008.004A] # LATIN CAPITAL LETTER J
+FF2A ; [.16E6.0020.0009.FF2A] # FULLWIDTH LATIN CAPITAL LETTER J
+1F119 ; [*02FB.0020.0004.1F119][.16E6.0020.000A.1F119][*02FC.0020.001F.1F119] # PARENTHESIZED LATIN CAPITAL LETTER J
+1D409 ; [.16E6.0020.000B.1D409] # MATHEMATICAL BOLD CAPITAL J
+1D43D ; [.16E6.0020.000B.1D43D] # MATHEMATICAL ITALIC CAPITAL J
+1D471 ; [.16E6.0020.000B.1D471] # MATHEMATICAL BOLD ITALIC CAPITAL J
+1D4A5 ; [.16E6.0020.000B.1D4A5] # MATHEMATICAL SCRIPT CAPITAL J
+1D4D9 ; [.16E6.0020.000B.1D4D9] # MATHEMATICAL BOLD SCRIPT CAPITAL J
+1D50D ; [.16E6.0020.000B.1D50D] # MATHEMATICAL FRAKTUR CAPITAL J
+1D541 ; [.16E6.0020.000B.1D541] # MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+1D575 ; [.16E6.0020.000B.1D575] # MATHEMATICAL BOLD FRAKTUR CAPITAL J
+1D5A9 ; [.16E6.0020.000B.1D5A9] # MATHEMATICAL SANS-SERIF CAPITAL J
+1D5DD ; [.16E6.0020.000B.1D5DD] # MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+1D611 ; [.16E6.0020.000B.1D611] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+1D645 ; [.16E6.0020.000B.1D645] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+1D679 ; [.16E6.0020.000B.1D679] # MATHEMATICAL MONOSPACE CAPITAL J
+24BF ; [.16E6.0020.000C.24BF] # CIRCLED LATIN CAPITAL LETTER J
+1F159 ; [.16E6.0020.000C.1F159] # NEGATIVE CIRCLED LATIN CAPITAL LETTER J
+02B2 ; [.16E6.0020.0014.02B2] # MODIFIER LETTER SMALL J
+2C7C ; [.16E6.0020.0015.2C7C] # LATIN SUBSCRIPT SMALL LETTER J
+1D36 ; [.16E6.0020.001D.1D36] # MODIFIER LETTER CAPITAL J
+1F139 ; [.16E6.0020.001D.1F139] # SQUARED LATIN CAPITAL LETTER J
+1F179 ; [.16E6.0020.001D.1F179] # NEGATIVE SQUARED LATIN CAPITAL LETTER J
+0135 ; [.16E6.0020.0002.006A][.0000.003C.0002.0302] # LATIN SMALL LETTER J WITH CIRCUMFLEX
+0134 ; [.16E6.0020.0008.004A][.0000.003C.0002.0302] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+01F0 ; [.16E6.0020.0002.006A][.0000.0041.0002.030C] # LATIN SMALL LETTER J WITH CARON
+0237 ; [.16EA.0020.0002.0237] # LATIN SMALL LETTER DOTLESS J
+1D6A5 ; [.16EA.0020.0005.1D6A5] # MATHEMATICAL ITALIC SMALL DOTLESS J
+1D0A ; [.16EE.0020.0002.1D0A] # LATIN LETTER SMALL CAPITAL J
+0249 ; [.16EF.0020.0002.0249] # LATIN SMALL LETTER J WITH STROKE
+0248 ; [.16EF.0020.0008.0248] # LATIN CAPITAL LETTER J WITH STROKE
+029D ; [.16F3.0020.0002.029D] # LATIN SMALL LETTER J WITH CROSSED-TAIL
+1DA8 ; [.16F3.0020.0014.1DA8] # MODIFIER LETTER SMALL J WITH CROSSED-TAIL
+025F ; [.16F7.0020.0002.025F] # LATIN SMALL LETTER DOTLESS J WITH STROKE
+1DA1 ; [.16F7.0020.0014.1DA1] # MODIFIER LETTER SMALL DOTLESS J WITH STROKE
+0284 ; [.16FB.0020.0002.0284] # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+006B ; [.16FF.0020.0002.006B] # LATIN SMALL LETTER K
+FF4B ; [.16FF.0020.0003.FF4B] # FULLWIDTH LATIN SMALL LETTER K
+1DDC ; [.16FF.0020.0004.1DDC] # COMBINING LATIN SMALL LETTER K
+24A6 ; [*02FB.0020.0004.24A6][.16FF.0020.0004.24A6][*02FC.0020.001F.24A6] # PARENTHESIZED LATIN SMALL LETTER K
+1D424 ; [.16FF.0020.0005.1D424] # MATHEMATICAL BOLD SMALL K
+1D458 ; [.16FF.0020.0005.1D458] # MATHEMATICAL ITALIC SMALL K
+1D48C ; [.16FF.0020.0005.1D48C] # MATHEMATICAL BOLD ITALIC SMALL K
+1D4C0 ; [.16FF.0020.0005.1D4C0] # MATHEMATICAL SCRIPT SMALL K
+1D4F4 ; [.16FF.0020.0005.1D4F4] # MATHEMATICAL BOLD SCRIPT SMALL K
+1D528 ; [.16FF.0020.0005.1D528] # MATHEMATICAL FRAKTUR SMALL K
+1D55C ; [.16FF.0020.0005.1D55C] # MATHEMATICAL DOUBLE-STRUCK SMALL K
+1D590 ; [.16FF.0020.0005.1D590] # MATHEMATICAL BOLD FRAKTUR SMALL K
+1D5C4 ; [.16FF.0020.0005.1D5C4] # MATHEMATICAL SANS-SERIF SMALL K
+1D5F8 ; [.16FF.0020.0005.1D5F8] # MATHEMATICAL SANS-SERIF BOLD SMALL K
+1D62C ; [.16FF.0020.0005.1D62C] # MATHEMATICAL SANS-SERIF ITALIC SMALL K
+1D660 ; [.16FF.0020.0005.1D660] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
+1D694 ; [.16FF.0020.0005.1D694] # MATHEMATICAL MONOSPACE SMALL K
+24DA ; [.16FF.0020.0006.24DA] # CIRCLED LATIN SMALL LETTER K
+004B ; [.16FF.0020.0008.004B] # LATIN CAPITAL LETTER K
+212A ; [.16FF.0020.0008.212A] # KELVIN SIGN
+FF2B ; [.16FF.0020.0009.FF2B] # FULLWIDTH LATIN CAPITAL LETTER K
+1F11A ; [*02FB.0020.0004.1F11A][.16FF.0020.000A.1F11A][*02FC.0020.001F.1F11A] # PARENTHESIZED LATIN CAPITAL LETTER K
+1D40A ; [.16FF.0020.000B.1D40A] # MATHEMATICAL BOLD CAPITAL K
+1D43E ; [.16FF.0020.000B.1D43E] # MATHEMATICAL ITALIC CAPITAL K
+1D472 ; [.16FF.0020.000B.1D472] # MATHEMATICAL BOLD ITALIC CAPITAL K
+1D4A6 ; [.16FF.0020.000B.1D4A6] # MATHEMATICAL SCRIPT CAPITAL K
+1D4DA ; [.16FF.0020.000B.1D4DA] # MATHEMATICAL BOLD SCRIPT CAPITAL K
+1D50E ; [.16FF.0020.000B.1D50E] # MATHEMATICAL FRAKTUR CAPITAL K
+1D542 ; [.16FF.0020.000B.1D542] # MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+1D576 ; [.16FF.0020.000B.1D576] # MATHEMATICAL BOLD FRAKTUR CAPITAL K
+1D5AA ; [.16FF.0020.000B.1D5AA] # MATHEMATICAL SANS-SERIF CAPITAL K
+1D5DE ; [.16FF.0020.000B.1D5DE] # MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+1D612 ; [.16FF.0020.000B.1D612] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+1D646 ; [.16FF.0020.000B.1D646] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+1D67A ; [.16FF.0020.000B.1D67A] # MATHEMATICAL MONOSPACE CAPITAL K
+24C0 ; [.16FF.0020.000C.24C0] # CIRCLED LATIN CAPITAL LETTER K
+1F15A ; [.16FF.0020.000C.1F15A] # NEGATIVE CIRCLED LATIN CAPITAL LETTER K
+1D4F ; [.16FF.0020.0014.1D4F] # MODIFIER LETTER SMALL K
+2096 ; [.16FF.0020.0015.2096] # LATIN SUBSCRIPT SMALL LETTER K
+1D37 ; [.16FF.0020.001D.1D37] # MODIFIER LETTER CAPITAL K
+1F13A ; [.16FF.0020.001D.1F13A] # SQUARED LATIN CAPITAL LETTER K
+1F17A ; [.16FF.0020.001D.1F17A] # NEGATIVE SQUARED LATIN CAPITAL LETTER K
+1E31 ; [.16FF.0020.0002.006B][.0000.0032.0002.0301] # LATIN SMALL LETTER K WITH ACUTE
+1E30 ; [.16FF.0020.0008.004B][.0000.0032.0002.0301] # LATIN CAPITAL LETTER K WITH ACUTE
+01E9 ; [.16FF.0020.0002.006B][.0000.0041.0002.030C] # LATIN SMALL LETTER K WITH CARON
+01E8 ; [.16FF.0020.0008.004B][.0000.0041.0002.030C] # LATIN CAPITAL LETTER K WITH CARON
+0137 ; [.16FF.0020.0002.006B][.0000.0056.0002.0327] # LATIN SMALL LETTER K WITH CEDILLA
+0136 ; [.16FF.0020.0008.004B][.0000.0056.0002.0327] # LATIN CAPITAL LETTER K WITH CEDILLA
+A7A3 ; [.16FF.0020.0004.A7A3][.0000.0061.0004.A7A3] # LATIN SMALL LETTER K WITH OBLIQUE STROKE
+A7A2 ; [.16FF.0020.000A.A7A2][.0000.0061.0004.A7A2] # LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
+1E33 ; [.16FF.0020.0002.006B][.0000.0070.0002.0323] # LATIN SMALL LETTER K WITH DOT BELOW
+1E32 ; [.16FF.0020.0008.004B][.0000.0070.0002.0323] # LATIN CAPITAL LETTER K WITH DOT BELOW
+1E35 ; [.16FF.0020.0002.006B][.0000.007B.0002.0331] # LATIN SMALL LETTER K WITH LINE BELOW
+1E34 ; [.16FF.0020.0008.004B][.0000.007B.0002.0331] # LATIN CAPITAL LETTER K WITH LINE BELOW
+3384 ; [.16FF.0020.001C.3384][.15EF.0020.001D.3384] # SQUARE KA
+3385 ; [.16FF.0020.001D.3385][.1605.0020.001D.3385] # SQUARE KB
+3389 ; [.16FF.0020.001C.3389][.161D.0020.001C.3389][.15EF.0020.001C.3389][.1711.0020.001C.3389] # SQUARE KCAL
+338F ; [.16FF.0020.001C.338F][.1691.0020.001C.338F] # SQUARE KG
+3391 ; [.16FF.0020.001C.3391][.16B4.0020.001D.3391][.1895.0020.001C.3391] # SQUARE KHZ
+33CD ; [.16FF.0020.001D.33CD][.16FF.0020.001D.33CD] # SQUARE KK
+3398 ; [.16FF.0020.001C.3398][.1711.0020.001C.3398] # SQUARE KL
+339E ; [.16FF.0020.001C.339E][.1741.0020.001C.339E] # SQUARE KM
+33CE ; [.16FF.0020.001D.33CE][.1741.0020.001D.33CE] # SQUARE KM CAPITAL
+33A2 ; [.16FF.0020.001C.33A2][.1741.0020.001C.33A2][.15E7.0020.001C.33A2] # SQUARE KM SQUARED
+33A6 ; [.16FF.0020.001C.33A6][.1741.0020.001C.33A6][.15E8.0020.001C.33A6] # SQUARE KM CUBED
+33AA ; [.16FF.0020.001C.33AA][.1796.0020.001D.33AA][.15EF.0020.001C.33AA] # SQUARE KPA
+33CF ; [.16FF.0020.001C.33CF][.1816.0020.001C.33CF] # SQUARE KT
+33B8 ; [.16FF.0020.001C.33B8][.185F.0020.001D.33B8] # SQUARE KV
+33BE ; [.16FF.0020.001C.33BE][.1871.0020.001D.33BE] # SQUARE KW
+33C0 ; [.16FF.0020.001C.33C0][.1951.0020.001D.33C0] # SQUARE K OHM
+1D0B ; [.1703.0020.0002.1D0B] # LATIN LETTER SMALL CAPITAL K
+1D84 ; [.1704.0020.0002.1D84] # LATIN SMALL LETTER K WITH PALATAL HOOK
+0199 ; [.1705.0020.0002.0199] # LATIN SMALL LETTER K WITH HOOK
+0198 ; [.1705.0020.0008.0198] # LATIN CAPITAL LETTER K WITH HOOK
+2C6A ; [.1709.0020.0002.2C6A] # LATIN SMALL LETTER K WITH DESCENDER
+2C69 ; [.1709.0020.0008.2C69] # LATIN CAPITAL LETTER K WITH DESCENDER
+A741 ; [.170A.0020.0002.A741] # LATIN SMALL LETTER K WITH STROKE
+A740 ; [.170A.0020.0008.A740] # LATIN CAPITAL LETTER K WITH STROKE
+A743 ; [.170B.0020.0002.A743] # LATIN SMALL LETTER K WITH DIAGONAL STROKE
+A742 ; [.170B.0020.0008.A742] # LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
+A745 ; [.170C.0020.0002.A745] # LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
+A744 ; [.170C.0020.0008.A744] # LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
+029E ; [.170D.0020.0002.029E] # LATIN SMALL LETTER TURNED K
+006C ; [.1711.0020.0002.006C] # LATIN SMALL LETTER L
+FF4C ; [.1711.0020.0003.FF4C] # FULLWIDTH LATIN SMALL LETTER L
+1DDD ; [.1711.0020.0004.1DDD] # COMBINING LATIN SMALL LETTER L
+217C ; [.1711.0020.0004.217C] # SMALL ROMAN NUMERAL FIFTY
+24A7 ; [*02FB.0020.0004.24A7][.1711.0020.0004.24A7][*02FC.0020.001F.24A7] # PARENTHESIZED LATIN SMALL LETTER L
+2113 ; [.1711.0020.0005.2113] # SCRIPT SMALL L
+1D425 ; [.1711.0020.0005.1D425] # MATHEMATICAL BOLD SMALL L
+1D459 ; [.1711.0020.0005.1D459] # MATHEMATICAL ITALIC SMALL L
+1D48D ; [.1711.0020.0005.1D48D] # MATHEMATICAL BOLD ITALIC SMALL L
+1D4C1 ; [.1711.0020.0005.1D4C1] # MATHEMATICAL SCRIPT SMALL L
+1D4F5 ; [.1711.0020.0005.1D4F5] # MATHEMATICAL BOLD SCRIPT SMALL L
+1D529 ; [.1711.0020.0005.1D529] # MATHEMATICAL FRAKTUR SMALL L
+1D55D ; [.1711.0020.0005.1D55D] # MATHEMATICAL DOUBLE-STRUCK SMALL L
+1D591 ; [.1711.0020.0005.1D591] # MATHEMATICAL BOLD FRAKTUR SMALL L
+1D5C5 ; [.1711.0020.0005.1D5C5] # MATHEMATICAL SANS-SERIF SMALL L
+1D5F9 ; [.1711.0020.0005.1D5F9] # MATHEMATICAL SANS-SERIF BOLD SMALL L
+1D62D ; [.1711.0020.0005.1D62D] # MATHEMATICAL SANS-SERIF ITALIC SMALL L
+1D661 ; [.1711.0020.0005.1D661] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
+1D695 ; [.1711.0020.0005.1D695] # MATHEMATICAL MONOSPACE SMALL L
+24DB ; [.1711.0020.0006.24DB] # CIRCLED LATIN SMALL LETTER L
+004C ; [.1711.0020.0008.004C] # LATIN CAPITAL LETTER L
+FF2C ; [.1711.0020.0009.FF2C] # FULLWIDTH LATIN CAPITAL LETTER L
+216C ; [.1711.0020.000A.216C] # ROMAN NUMERAL FIFTY
+1F11B ; [*02FB.0020.0004.1F11B][.1711.0020.000A.1F11B][*02FC.0020.001F.1F11B] # PARENTHESIZED LATIN CAPITAL LETTER L
+2112 ; [.1711.0020.000B.2112] # SCRIPT CAPITAL L
+1D40B ; [.1711.0020.000B.1D40B] # MATHEMATICAL BOLD CAPITAL L
+1D43F ; [.1711.0020.000B.1D43F] # MATHEMATICAL ITALIC CAPITAL L
+1D473 ; [.1711.0020.000B.1D473] # MATHEMATICAL BOLD ITALIC CAPITAL L
+1D4DB ; [.1711.0020.000B.1D4DB] # MATHEMATICAL BOLD SCRIPT CAPITAL L
+1D50F ; [.1711.0020.000B.1D50F] # MATHEMATICAL FRAKTUR CAPITAL L
+1D543 ; [.1711.0020.000B.1D543] # MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+1D577 ; [.1711.0020.000B.1D577] # MATHEMATICAL BOLD FRAKTUR CAPITAL L
+1D5AB ; [.1711.0020.000B.1D5AB] # MATHEMATICAL SANS-SERIF CAPITAL L
+1D5DF ; [.1711.0020.000B.1D5DF] # MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+1D613 ; [.1711.0020.000B.1D613] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+1D647 ; [.1711.0020.000B.1D647] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+1D67B ; [.1711.0020.000B.1D67B] # MATHEMATICAL MONOSPACE CAPITAL L
+24C1 ; [.1711.0020.000C.24C1] # CIRCLED LATIN CAPITAL LETTER L
+1F15B ; [.1711.0020.000C.1F15B] # NEGATIVE CIRCLED LATIN CAPITAL LETTER L
+02E1 ; [.1711.0020.0014.02E1] # MODIFIER LETTER SMALL L
+2097 ; [.1711.0020.0015.2097] # LATIN SUBSCRIPT SMALL LETTER L
+1D38 ; [.1711.0020.001D.1D38] # MODIFIER LETTER CAPITAL L
+1F13B ; [.1711.0020.001D.1F13B] # SQUARED LATIN CAPITAL LETTER L
+1F17B ; [.1711.0020.001D.1F17B] # NEGATIVE SQUARED LATIN CAPITAL LETTER L
+013A ; [.1711.0020.0002.006C][.0000.0032.0002.0301] # LATIN SMALL LETTER L WITH ACUTE
+0139 ; [.1711.0020.0008.004C][.0000.0032.0002.0301] # LATIN CAPITAL LETTER L WITH ACUTE
+013E ; [.1711.0020.0002.006C][.0000.0041.0002.030C] # LATIN SMALL LETTER L WITH CARON
+013D ; [.1711.0020.0008.004C][.0000.0041.0002.030C] # LATIN CAPITAL LETTER L WITH CARON
+013C ; [.1711.0020.0002.006C][.0000.0056.0002.0327] # LATIN SMALL LETTER L WITH CEDILLA
+013B ; [.1711.0020.0008.004C][.0000.0056.0002.0327] # LATIN CAPITAL LETTER L WITH CEDILLA
+1E37 ; [.1711.0020.0002.006C][.0000.0070.0002.0323] # LATIN SMALL LETTER L WITH DOT BELOW
+1E36 ; [.1711.0020.0008.004C][.0000.0070.0002.0323] # LATIN CAPITAL LETTER L WITH DOT BELOW
+1E39 ; [.1711.0020.0002.006C][.0000.0070.0002.0323][.0000.005B.0002.0304] # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E38 ; [.1711.0020.0008.004C][.0000.0070.0002.0323][.0000.005B.0002.0304] # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E3D ; [.1711.0020.0002.006C][.0000.0078.0002.032D] # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3C ; [.1711.0020.0008.004C][.0000.0078.0002.032D] # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3B ; [.1711.0020.0002.006C][.0000.007B.0002.0331] # LATIN SMALL LETTER L WITH LINE BELOW
+1E3A ; [.1711.0020.0008.004C][.0000.007B.0002.0331] # LATIN CAPITAL LETTER L WITH LINE BELOW
+0142 ; [.1711.0020.0002.006C][.0000.007D.0002.0335] # LATIN SMALL LETTER L WITH STROKE
+0141 ; [.1711.0020.0008.004C][.0000.007D.0002.0335] # LATIN CAPITAL LETTER L WITH STROKE
+0140 ; [.1711.0020.0002.0140][.0000.0139.0002.0140] # LATIN SMALL LETTER L WITH MIDDLE DOT
+006C 00B7 ; [.1711.0020.0002.0140][.0000.0139.0002.0140] # LATIN SMALL LETTER L WITH MIDDLE DOT
+006C 0387 ; [.1711.0020.0002.0140][.0000.0139.0002.0140] # LATIN SMALL LETTER L WITH MIDDLE DOT
+013F ; [.1711.0020.0008.013F][.0000.0139.0002.013F] # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+004C 00B7 ; [.1711.0020.0008.013F][.0000.0139.0002.013F] # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+004C 0387 ; [.1711.0020.0008.013F][.0000.0139.0002.013F] # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+01C9 ; [.1711.0020.0004.01C9][.16E6.0020.0004.01C9] # LATIN SMALL LETTER LJ
+01C8 ; [.1711.0020.000A.01C8][.16E6.0020.0004.01C8] # LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01C7 ; [.1711.0020.000A.01C7][.16E6.0020.000A.01C7] # LATIN CAPITAL LETTER LJ
+1EFB ; [.1711.0020.0004.1EFB][.1711.0020.0004.1EFB] # LATIN SMALL LETTER MIDDLE-WELSH LL
+1EFA ; [.1711.0020.000A.1EFA][.1711.0020.000A.1EFA] # LATIN CAPITAL LETTER MIDDLE-WELSH LL
+33D0 ; [.1711.0020.001C.33D0][.1741.0020.001C.33D0] # SQUARE LM
+33D1 ; [.1711.0020.001C.33D1][.174F.0020.001C.33D1] # SQUARE LN
+33D2 ; [.1711.0020.001C.33D2][.1771.0020.001C.33D2][.1691.0020.001C.33D2] # SQUARE LOG
+02AA ; [.1711.0020.0004.02AA][.17F3.0020.0004.02AA] # LATIN SMALL LETTER LS DIGRAPH
+32CF ; [.1711.0020.001D.32CF][.1816.0020.001D.32CF][.1631.0020.001D.32CF] # LIMITED LIABILITY SIGN
+33D3 ; [.1711.0020.001C.33D3][.187B.0020.001C.33D3] # SQUARE LX
+02AB ; [.1711.0020.0004.02AB][.1895.0020.0004.02AB] # LATIN SMALL LETTER LZ DIGRAPH
+029F ; [.1715.0020.0002.029F] # LATIN LETTER SMALL CAPITAL L
+1DDE ; [.1715.0020.0004.1DDE] # COMBINING LATIN LETTER SMALL CAPITAL L
+1DAB ; [.1715.0020.0014.1DAB] # MODIFIER LETTER SMALL CAPITAL L
+A747 ; [.1719.0020.0002.A747] # LATIN SMALL LETTER BROKEN L
+A746 ; [.1719.0020.0008.A746] # LATIN CAPITAL LETTER BROKEN L
+1D0C ; [.171A.0020.0002.1D0C] # LATIN LETTER SMALL CAPITAL L WITH STROKE
+A749 ; [.171B.0020.0002.A749] # LATIN SMALL LETTER L WITH HIGH STROKE
+A748 ; [.171B.0020.0008.A748] # LATIN CAPITAL LETTER L WITH HIGH STROKE
+019A ; [.171C.0020.0002.019A] # LATIN SMALL LETTER L WITH BAR
+023D ; [.171C.0020.0008.023D] # LATIN CAPITAL LETTER L WITH BAR
+2C61 ; [.1720.0020.0002.2C61] # LATIN SMALL LETTER L WITH DOUBLE BAR
+2C60 ; [.1720.0020.0008.2C60] # LATIN CAPITAL LETTER L WITH DOUBLE BAR
+026B ; [.1721.0020.0002.026B] # LATIN SMALL LETTER L WITH MIDDLE TILDE
+2C62 ; [.1721.0020.0008.2C62] # LATIN CAPITAL LETTER L WITH MIDDLE TILDE
+026C ; [.1725.0020.0002.026C] # LATIN SMALL LETTER L WITH BELT
+1D85 ; [.1729.0020.0002.1D85] # LATIN SMALL LETTER L WITH PALATAL HOOK
+1DAA ; [.1729.0020.0014.1DAA] # MODIFIER LETTER SMALL L WITH PALATAL HOOK
+026D ; [.172A.0020.0002.026D] # LATIN SMALL LETTER L WITH RETROFLEX HOOK
+1DA9 ; [.172A.0020.0014.1DA9] # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
+A78E ; [.172E.0020.0002.A78E] # LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+0234 ; [.172F.0020.0002.0234] # LATIN SMALL LETTER L WITH CURL
+A772 ; [.1733.0020.0002.A772] # LATIN SMALL LETTER LUM
+026E ; [.1734.0020.0002.026E] # LATIN SMALL LETTER LEZH
+A781 ; [.1738.0020.0002.A781] # LATIN SMALL LETTER TURNED L
+A780 ; [.1738.0020.0008.A780] # LATIN CAPITAL LETTER TURNED L
+019B ; [.1739.0020.0002.019B] # LATIN SMALL LETTER LAMBDA WITH STROKE
+028E ; [.173D.0020.0002.028E] # LATIN SMALL LETTER TURNED Y
+006D ; [.1741.0020.0002.006D] # LATIN SMALL LETTER M
+FF4D ; [.1741.0020.0003.FF4D] # FULLWIDTH LATIN SMALL LETTER M
+036B ; [.1741.0020.0004.036B] # COMBINING LATIN SMALL LETTER M
+217F ; [.1741.0020.0004.217F] # SMALL ROMAN NUMERAL ONE THOUSAND
+24A8 ; [*02FB.0020.0004.24A8][.1741.0020.0004.24A8][*02FC.0020.001F.24A8] # PARENTHESIZED LATIN SMALL LETTER M
+1D426 ; [.1741.0020.0005.1D426] # MATHEMATICAL BOLD SMALL M
+1D45A ; [.1741.0020.0005.1D45A] # MATHEMATICAL ITALIC SMALL M
+1D48E ; [.1741.0020.0005.1D48E] # MATHEMATICAL BOLD ITALIC SMALL M
+1D4C2 ; [.1741.0020.0005.1D4C2] # MATHEMATICAL SCRIPT SMALL M
+1D4F6 ; [.1741.0020.0005.1D4F6] # MATHEMATICAL BOLD SCRIPT SMALL M
+1D52A ; [.1741.0020.0005.1D52A] # MATHEMATICAL FRAKTUR SMALL M
+1D55E ; [.1741.0020.0005.1D55E] # MATHEMATICAL DOUBLE-STRUCK SMALL M
+1D592 ; [.1741.0020.0005.1D592] # MATHEMATICAL BOLD FRAKTUR SMALL M
+1D5C6 ; [.1741.0020.0005.1D5C6] # MATHEMATICAL SANS-SERIF SMALL M
+1D5FA ; [.1741.0020.0005.1D5FA] # MATHEMATICAL SANS-SERIF BOLD SMALL M
+1D62E ; [.1741.0020.0005.1D62E] # MATHEMATICAL SANS-SERIF ITALIC SMALL M
+1D662 ; [.1741.0020.0005.1D662] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
+1D696 ; [.1741.0020.0005.1D696] # MATHEMATICAL MONOSPACE SMALL M
+24DC ; [.1741.0020.0006.24DC] # CIRCLED LATIN SMALL LETTER M
+004D ; [.1741.0020.0008.004D] # LATIN CAPITAL LETTER M
+FF2D ; [.1741.0020.0009.FF2D] # FULLWIDTH LATIN CAPITAL LETTER M
+216F ; [.1741.0020.000A.216F] # ROMAN NUMERAL ONE THOUSAND
+1F11C ; [*02FB.0020.0004.1F11C][.1741.0020.000A.1F11C][*02FC.0020.001F.1F11C] # PARENTHESIZED LATIN CAPITAL LETTER M
+2133 ; [.1741.0020.000B.2133] # SCRIPT CAPITAL M
+1D40C ; [.1741.0020.000B.1D40C] # MATHEMATICAL BOLD CAPITAL M
+1D440 ; [.1741.0020.000B.1D440] # MATHEMATICAL ITALIC CAPITAL M
+1D474 ; [.1741.0020.000B.1D474] # MATHEMATICAL BOLD ITALIC CAPITAL M
+1D4DC ; [.1741.0020.000B.1D4DC] # MATHEMATICAL BOLD SCRIPT CAPITAL M
+1D510 ; [.1741.0020.000B.1D510] # MATHEMATICAL FRAKTUR CAPITAL M
+1D544 ; [.1741.0020.000B.1D544] # MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D578 ; [.1741.0020.000B.1D578] # MATHEMATICAL BOLD FRAKTUR CAPITAL M
+1D5AC ; [.1741.0020.000B.1D5AC] # MATHEMATICAL SANS-SERIF CAPITAL M
+1D5E0 ; [.1741.0020.000B.1D5E0] # MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+1D614 ; [.1741.0020.000B.1D614] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+1D648 ; [.1741.0020.000B.1D648] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+1D67C ; [.1741.0020.000B.1D67C] # MATHEMATICAL MONOSPACE CAPITAL M
+24C2 ; [.1741.0020.000C.24C2] # CIRCLED LATIN CAPITAL LETTER M
+1F15C ; [.1741.0020.000C.1F15C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER M
+1D50 ; [.1741.0020.0014.1D50] # MODIFIER LETTER SMALL M
+2098 ; [.1741.0020.0015.2098] # LATIN SUBSCRIPT SMALL LETTER M
+1D39 ; [.1741.0020.001D.1D39] # MODIFIER LETTER CAPITAL M
+1F13C ; [.1741.0020.001D.1F13C] # SQUARED LATIN CAPITAL LETTER M
+1F17C ; [.1741.0020.001D.1F17C] # NEGATIVE SQUARED LATIN CAPITAL LETTER M
+1E3F ; [.1741.0020.0002.006D][.0000.0032.0002.0301] # LATIN SMALL LETTER M WITH ACUTE
+1E3E ; [.1741.0020.0008.004D][.0000.0032.0002.0301] # LATIN CAPITAL LETTER M WITH ACUTE
+1E41 ; [.1741.0020.0002.006D][.0000.0052.0002.0307] # LATIN SMALL LETTER M WITH DOT ABOVE
+1E40 ; [.1741.0020.0008.004D][.0000.0052.0002.0307] # LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E43 ; [.1741.0020.0002.006D][.0000.0070.0002.0323] # LATIN SMALL LETTER M WITH DOT BELOW
+1E42 ; [.1741.0020.0008.004D][.0000.0070.0002.0323] # LATIN CAPITAL LETTER M WITH DOT BELOW
+33A1 ; [.1741.0020.001C.33A1][.15E7.0020.001C.33A1] # SQUARE M SQUARED
+33A5 ; [.1741.0020.001C.33A5][.15E8.0020.001C.33A5] # SQUARE M CUBED
+3383 ; [.1741.0020.001C.3383][.15EF.0020.001D.3383] # SQUARE MA
+33D4 ; [.1741.0020.001C.33D4][.1605.0020.001C.33D4] # SQUARE MB SMALL
+3386 ; [.1741.0020.001D.3386][.1605.0020.001D.3386] # SQUARE MB
+1F16A ; [.1741.0020.0014.1F16A][.161D.0020.0014.1F16A] # RAISED MC SIGN
+1F16B ; [.1741.0020.0014.1F16B][.1631.0020.0014.1F16B] # RAISED MD SIGN
+338E ; [.1741.0020.001C.338E][.1691.0020.001C.338E] # SQUARE MG
+3392 ; [.1741.0020.001D.3392][.16B4.0020.001D.3392][.1895.0020.001C.3392] # SQUARE MHZ
+33D5 ; [.1741.0020.001C.33D5][.16CD.0020.001C.33D5][.1711.0020.001C.33D5] # SQUARE MIL
+3396 ; [.1741.0020.001C.3396][.1711.0020.001C.3396] # SQUARE ML
+339C ; [.1741.0020.001C.339C][.1741.0020.001C.339C] # SQUARE MM
+339F ; [.1741.0020.001C.339F][.1741.0020.001C.339F][.15E7.0020.001C.339F] # SQUARE MM SQUARED
+33A3 ; [.1741.0020.001C.33A3][.1741.0020.001C.33A3][.15E8.0020.001C.33A3] # SQUARE MM CUBED
+33D6 ; [.1741.0020.001C.33D6][.1771.0020.001C.33D6][.1711.0020.001C.33D6] # SQUARE MOL
+33AB ; [.1741.0020.001D.33AB][.1796.0020.001D.33AB][.15EF.0020.001C.33AB] # SQUARE MPA
+33A7 ; [.1741.0020.001C.33A7][*05AB.0020.001C.33A7][.17F3.0020.001C.33A7] # SQUARE M OVER S
+33B3 ; [.1741.0020.001C.33B3][.17F3.0020.001C.33B3] # SQUARE MS
+33A8 ; [.1741.0020.001C.33A8][*05AB.0020.001C.33A8][.17F3.0020.001C.33A8][.15E7.0020.001C.33A8] # SQUARE M OVER S SQUARED
+33B7 ; [.1741.0020.001C.33B7][.185F.0020.001D.33B7] # SQUARE MV
+33B9 ; [.1741.0020.001D.33B9][.185F.0020.001D.33B9] # SQUARE MV MEGA
+1F14B ; [.1741.0020.001D.1F14B][.185F.0020.001D.1F14B] # SQUARED MV
+33BD ; [.1741.0020.001C.33BD][.1871.0020.001D.33BD] # SQUARE MW
+33BF ; [.1741.0020.001D.33BF][.1871.0020.001D.33BF] # SQUARE MW MEGA
+33C1 ; [.1741.0020.001D.33C1][.1951.0020.001D.33C1] # SQUARE M OHM
+1D0D ; [.1745.0020.0002.1D0D] # LATIN LETTER SMALL CAPITAL M
+1DDF ; [.1745.0020.0004.1DDF] # COMBINING LATIN LETTER SMALL CAPITAL M
+1D6F ; [.1746.0020.0002.1D6F] # LATIN SMALL LETTER M WITH MIDDLE TILDE
+1D86 ; [.1747.0020.0002.1D86] # LATIN SMALL LETTER M WITH PALATAL HOOK
+0271 ; [.1748.0020.0002.0271] # LATIN SMALL LETTER M WITH HOOK
+2C6E ; [.1748.0020.0008.2C6E] # LATIN CAPITAL LETTER M WITH HOOK
+1DAC ; [.1748.0020.0014.1DAC] # MODIFIER LETTER SMALL M WITH HOOK
+A7FD ; [.174C.0020.0002.A7FD] # LATIN EPIGRAPHIC LETTER INVERTED M
+A7FF ; [.174D.0020.0002.A7FF] # LATIN EPIGRAPHIC LETTER ARCHAIC M
+A773 ; [.174E.0020.0002.A773] # LATIN SMALL LETTER MUM
+006E ; [.174F.0020.0002.006E] # LATIN SMALL LETTER N
+FF4E ; [.174F.0020.0003.FF4E] # FULLWIDTH LATIN SMALL LETTER N
+1DE0 ; [.174F.0020.0004.1DE0] # COMBINING LATIN SMALL LETTER N
+24A9 ; [*02FB.0020.0004.24A9][.174F.0020.0004.24A9][*02FC.0020.001F.24A9] # PARENTHESIZED LATIN SMALL LETTER N
+1D427 ; [.174F.0020.0005.1D427] # MATHEMATICAL BOLD SMALL N
+1D45B ; [.174F.0020.0005.1D45B] # MATHEMATICAL ITALIC SMALL N
+1D48F ; [.174F.0020.0005.1D48F] # MATHEMATICAL BOLD ITALIC SMALL N
+1D4C3 ; [.174F.0020.0005.1D4C3] # MATHEMATICAL SCRIPT SMALL N
+1D4F7 ; [.174F.0020.0005.1D4F7] # MATHEMATICAL BOLD SCRIPT SMALL N
+1D52B ; [.174F.0020.0005.1D52B] # MATHEMATICAL FRAKTUR SMALL N
+1D55F ; [.174F.0020.0005.1D55F] # MATHEMATICAL DOUBLE-STRUCK SMALL N
+1D593 ; [.174F.0020.0005.1D593] # MATHEMATICAL BOLD FRAKTUR SMALL N
+1D5C7 ; [.174F.0020.0005.1D5C7] # MATHEMATICAL SANS-SERIF SMALL N
+1D5FB ; [.174F.0020.0005.1D5FB] # MATHEMATICAL SANS-SERIF BOLD SMALL N
+1D62F ; [.174F.0020.0005.1D62F] # MATHEMATICAL SANS-SERIF ITALIC SMALL N
+1D663 ; [.174F.0020.0005.1D663] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
+1D697 ; [.174F.0020.0005.1D697] # MATHEMATICAL MONOSPACE SMALL N
+24DD ; [.174F.0020.0006.24DD] # CIRCLED LATIN SMALL LETTER N
+004E ; [.174F.0020.0008.004E] # LATIN CAPITAL LETTER N
+FF2E ; [.174F.0020.0009.FF2E] # FULLWIDTH LATIN CAPITAL LETTER N
+1F11D ; [*02FB.0020.0004.1F11D][.174F.0020.000A.1F11D][*02FC.0020.001F.1F11D] # PARENTHESIZED LATIN CAPITAL LETTER N
+2115 ; [.174F.0020.000B.2115] # DOUBLE-STRUCK CAPITAL N
+1D40D ; [.174F.0020.000B.1D40D] # MATHEMATICAL BOLD CAPITAL N
+1D441 ; [.174F.0020.000B.1D441] # MATHEMATICAL ITALIC CAPITAL N
+1D475 ; [.174F.0020.000B.1D475] # MATHEMATICAL BOLD ITALIC CAPITAL N
+1D4A9 ; [.174F.0020.000B.1D4A9] # MATHEMATICAL SCRIPT CAPITAL N
+1D4DD ; [.174F.0020.000B.1D4DD] # MATHEMATICAL BOLD SCRIPT CAPITAL N
+1D511 ; [.174F.0020.000B.1D511] # MATHEMATICAL FRAKTUR CAPITAL N
+1D579 ; [.174F.0020.000B.1D579] # MATHEMATICAL BOLD FRAKTUR CAPITAL N
+1D5AD ; [.174F.0020.000B.1D5AD] # MATHEMATICAL SANS-SERIF CAPITAL N
+1D5E1 ; [.174F.0020.000B.1D5E1] # MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+1D615 ; [.174F.0020.000B.1D615] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+1D649 ; [.174F.0020.000B.1D649] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+1D67D ; [.174F.0020.000B.1D67D] # MATHEMATICAL MONOSPACE CAPITAL N
+24C3 ; [.174F.0020.000C.24C3] # CIRCLED LATIN CAPITAL LETTER N
+1F15D ; [.174F.0020.000C.1F15D] # NEGATIVE CIRCLED LATIN CAPITAL LETTER N
+207F ; [.174F.0020.0014.207F] # SUPERSCRIPT LATIN SMALL LETTER N
+2099 ; [.174F.0020.0015.2099] # LATIN SUBSCRIPT SMALL LETTER N
+1D3A ; [.174F.0020.001D.1D3A] # MODIFIER LETTER CAPITAL N
+1F13D ; [.174F.0020.001D.1F13D] # SQUARED LATIN CAPITAL LETTER N
+1F17D ; [.174F.0020.001D.1F17D] # NEGATIVE SQUARED LATIN CAPITAL LETTER N
+0144 ; [.174F.0020.0002.006E][.0000.0032.0002.0301] # LATIN SMALL LETTER N WITH ACUTE
+0143 ; [.174F.0020.0008.004E][.0000.0032.0002.0301] # LATIN CAPITAL LETTER N WITH ACUTE
+01F9 ; [.174F.0020.0002.006E][.0000.0035.0002.0300] # LATIN SMALL LETTER N WITH GRAVE
+01F8 ; [.174F.0020.0008.004E][.0000.0035.0002.0300] # LATIN CAPITAL LETTER N WITH GRAVE
+0148 ; [.174F.0020.0002.006E][.0000.0041.0002.030C] # LATIN SMALL LETTER N WITH CARON
+0147 ; [.174F.0020.0008.004E][.0000.0041.0002.030C] # LATIN CAPITAL LETTER N WITH CARON
+00F1 ; [.174F.0020.0002.006E][.0000.004E.0002.0303] # LATIN SMALL LETTER N WITH TILDE
+00D1 ; [.174F.0020.0008.004E][.0000.004E.0002.0303] # LATIN CAPITAL LETTER N WITH TILDE
+1E45 ; [.174F.0020.0002.006E][.0000.0052.0002.0307] # LATIN SMALL LETTER N WITH DOT ABOVE
+1E44 ; [.174F.0020.0008.004E][.0000.0052.0002.0307] # LATIN CAPITAL LETTER N WITH DOT ABOVE
+0146 ; [.174F.0020.0002.006E][.0000.0056.0002.0327] # LATIN SMALL LETTER N WITH CEDILLA
+0145 ; [.174F.0020.0008.004E][.0000.0056.0002.0327] # LATIN CAPITAL LETTER N WITH CEDILLA
+A7A5 ; [.174F.0020.0004.A7A5][.0000.0061.0004.A7A5] # LATIN SMALL LETTER N WITH OBLIQUE STROKE
+A7A4 ; [.174F.0020.000A.A7A4][.0000.0061.0004.A7A4] # LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
+1E47 ; [.174F.0020.0002.006E][.0000.0070.0002.0323] # LATIN SMALL LETTER N WITH DOT BELOW
+1E46 ; [.174F.0020.0008.004E][.0000.0070.0002.0323] # LATIN CAPITAL LETTER N WITH DOT BELOW
+1E4B ; [.174F.0020.0002.006E][.0000.0078.0002.032D] # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4A ; [.174F.0020.0008.004E][.0000.0078.0002.032D] # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E49 ; [.174F.0020.0002.006E][.0000.007B.0002.0331] # LATIN SMALL LETTER N WITH LINE BELOW
+1E48 ; [.174F.0020.0008.004E][.0000.007B.0002.0331] # LATIN CAPITAL LETTER N WITH LINE BELOW
+3381 ; [.174F.0020.001C.3381][.15EF.0020.001D.3381] # SQUARE NA
+1F195 ; [.174F.0020.001D.1F195][.164C.0020.001D.1F195][.1871.0020.001D.1F195] # SQUARED NEW
+338B ; [.174F.0020.001C.338B][.1684.0020.001D.338B] # SQUARE NF
+1F196 ; [.174F.0020.001D.1F196][.1691.0020.001D.1F196] # SQUARED NG
+01CC ; [.174F.0020.0004.01CC][.16E6.0020.0004.01CC] # LATIN SMALL LETTER NJ
+01CB ; [.174F.0020.000A.01CB][.16E6.0020.0004.01CB] # LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CA ; [.174F.0020.000A.01CA][.16E6.0020.000A.01CA] # LATIN CAPITAL LETTER NJ
+339A ; [.174F.0020.001C.339A][.1741.0020.001C.339A] # SQUARE NM
+2116 ; [.174F.0020.000A.2116][.1771.0020.0004.2116] # NUMERO SIGN
+33B1 ; [.174F.0020.001C.33B1][.17F3.0020.001C.33B1] # SQUARE NS
+33B5 ; [.174F.0020.001C.33B5][.185F.0020.001D.33B5] # SQUARE NV
+33BB ; [.174F.0020.001C.33BB][.1871.0020.001D.33BB] # SQUARE NW
+0274 ; [.1753.0020.0002.0274] # LATIN LETTER SMALL CAPITAL N
+1DE1 ; [.1753.0020.0004.1DE1] # COMBINING LATIN LETTER SMALL CAPITAL N
+1DB0 ; [.1753.0020.0014.1DB0] # MODIFIER LETTER SMALL CAPITAL N
+1D3B ; [.1757.0020.0002.1D3B] # MODIFIER LETTER CAPITAL REVERSED N
+1D0E ; [.1758.0020.0002.1D0E] # LATIN LETTER SMALL CAPITAL REVERSED N
+1D70 ; [.1759.0020.0002.1D70] # LATIN SMALL LETTER N WITH MIDDLE TILDE
+0272 ; [.175A.0020.0002.0272] # LATIN SMALL LETTER N WITH LEFT HOOK
+019D ; [.175A.0020.0008.019D] # LATIN CAPITAL LETTER N WITH LEFT HOOK
+1DAE ; [.175A.0020.0014.1DAE] # MODIFIER LETTER SMALL N WITH LEFT HOOK
+019E ; [.175E.0020.0002.019E] # LATIN SMALL LETTER N WITH LONG RIGHT LEG
+0220 ; [.175E.0020.0008.0220] # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+A791 ; [.1762.0020.0002.A791] # LATIN SMALL LETTER N WITH DESCENDER
+A790 ; [.1762.0020.0008.A790] # LATIN CAPITAL LETTER N WITH DESCENDER
+1D87 ; [.1763.0020.0002.1D87] # LATIN SMALL LETTER N WITH PALATAL HOOK
+0273 ; [.1764.0020.0002.0273] # LATIN SMALL LETTER N WITH RETROFLEX HOOK
+1DAF ; [.1764.0020.0014.1DAF] # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
+0235 ; [.1768.0020.0002.0235] # LATIN SMALL LETTER N WITH CURL
+A774 ; [.176C.0020.0002.A774] # LATIN SMALL LETTER NUM
+014B ; [.176D.0020.0002.014B] # LATIN SMALL LETTER ENG
+014A ; [.176D.0020.0008.014A] # LATIN CAPITAL LETTER ENG
+1D51 ; [.176D.0020.0014.1D51] # MODIFIER LETTER SMALL ENG
+006F ; [.1771.0020.0002.006F] # LATIN SMALL LETTER O
+FF4F ; [.1771.0020.0003.FF4F] # FULLWIDTH LATIN SMALL LETTER O
+0366 ; [.1771.0020.0004.0366] # COMBINING LATIN SMALL LETTER O
+24AA ; [*02FB.0020.0004.24AA][.1771.0020.0004.24AA][*02FC.0020.001F.24AA] # PARENTHESIZED LATIN SMALL LETTER O
+2134 ; [.1771.0020.0005.2134] # SCRIPT SMALL O
+1D428 ; [.1771.0020.0005.1D428] # MATHEMATICAL BOLD SMALL O
+1D45C ; [.1771.0020.0005.1D45C] # MATHEMATICAL ITALIC SMALL O
+1D490 ; [.1771.0020.0005.1D490] # MATHEMATICAL BOLD ITALIC SMALL O
+1D4F8 ; [.1771.0020.0005.1D4F8] # MATHEMATICAL BOLD SCRIPT SMALL O
+1D52C ; [.1771.0020.0005.1D52C] # MATHEMATICAL FRAKTUR SMALL O
+1D560 ; [.1771.0020.0005.1D560] # MATHEMATICAL DOUBLE-STRUCK SMALL O
+1D594 ; [.1771.0020.0005.1D594] # MATHEMATICAL BOLD FRAKTUR SMALL O
+1D5C8 ; [.1771.0020.0005.1D5C8] # MATHEMATICAL SANS-SERIF SMALL O
+1D5FC ; [.1771.0020.0005.1D5FC] # MATHEMATICAL SANS-SERIF BOLD SMALL O
+1D630 ; [.1771.0020.0005.1D630] # MATHEMATICAL SANS-SERIF ITALIC SMALL O
+1D664 ; [.1771.0020.0005.1D664] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
+1D698 ; [.1771.0020.0005.1D698] # MATHEMATICAL MONOSPACE SMALL O
+24DE ; [.1771.0020.0006.24DE] # CIRCLED LATIN SMALL LETTER O
+004F ; [.1771.0020.0008.004F] # LATIN CAPITAL LETTER O
+FF2F ; [.1771.0020.0009.FF2F] # FULLWIDTH LATIN CAPITAL LETTER O
+1F11E ; [*02FB.0020.0004.1F11E][.1771.0020.000A.1F11E][*02FC.0020.001F.1F11E] # PARENTHESIZED LATIN CAPITAL LETTER O
+1D40E ; [.1771.0020.000B.1D40E] # MATHEMATICAL BOLD CAPITAL O
+1D442 ; [.1771.0020.000B.1D442] # MATHEMATICAL ITALIC CAPITAL O
+1D476 ; [.1771.0020.000B.1D476] # MATHEMATICAL BOLD ITALIC CAPITAL O
+1D4AA ; [.1771.0020.000B.1D4AA] # MATHEMATICAL SCRIPT CAPITAL O
+1D4DE ; [.1771.0020.000B.1D4DE] # MATHEMATICAL BOLD SCRIPT CAPITAL O
+1D512 ; [.1771.0020.000B.1D512] # MATHEMATICAL FRAKTUR CAPITAL O
+1D546 ; [.1771.0020.000B.1D546] # MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D57A ; [.1771.0020.000B.1D57A] # MATHEMATICAL BOLD FRAKTUR CAPITAL O
+1D5AE ; [.1771.0020.000B.1D5AE] # MATHEMATICAL SANS-SERIF CAPITAL O
+1D5E2 ; [.1771.0020.000B.1D5E2] # MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+1D616 ; [.1771.0020.000B.1D616] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+1D64A ; [.1771.0020.000B.1D64A] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+1D67E ; [.1771.0020.000B.1D67E] # MATHEMATICAL MONOSPACE CAPITAL O
+24C4 ; [.1771.0020.000C.24C4] # CIRCLED LATIN CAPITAL LETTER O
+1F15E ; [.1771.0020.000C.1F15E] # NEGATIVE CIRCLED LATIN CAPITAL LETTER O
+00BA ; [.1771.0020.0014.00BA] # MASCULINE ORDINAL INDICATOR
+1D52 ; [.1771.0020.0014.1D52] # MODIFIER LETTER SMALL O
+2092 ; [.1771.0020.0015.2092] # LATIN SUBSCRIPT SMALL LETTER O
+1D3C ; [.1771.0020.001D.1D3C] # MODIFIER LETTER CAPITAL O
+1F13E ; [.1771.0020.001D.1F13E] # SQUARED LATIN CAPITAL LETTER O
+1F17E ; [.1771.0020.001D.1F17E] # NEGATIVE SQUARED LATIN CAPITAL LETTER O
+00F3 ; [.1771.0020.0002.006F][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.1771.0020.0008.004F][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH ACUTE
+00F2 ; [.1771.0020.0002.006F][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH GRAVE
+00D2 ; [.1771.0020.0008.004F][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH GRAVE
+014F ; [.1771.0020.0002.006F][.0000.0037.0002.0306] # LATIN SMALL LETTER O WITH BREVE
+014E ; [.1771.0020.0008.004F][.0000.0037.0002.0306] # LATIN CAPITAL LETTER O WITH BREVE
+00F4 ; [.1771.0020.0002.006F][.0000.003C.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.1771.0020.0008.004F][.0000.003C.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED1 ; [.1771.0020.0002.006F][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.1771.0020.0008.004F][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED3 ; [.1771.0020.0002.006F][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.1771.0020.0008.004F][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED7 ; [.1771.0020.0002.006F][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.1771.0020.0008.004F][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.1771.0020.0002.006F][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.1771.0020.0008.004F][.0000.003C.0002.0302][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+01D2 ; [.1771.0020.0002.006F][.0000.0041.0002.030C] # LATIN SMALL LETTER O WITH CARON
+01D1 ; [.1771.0020.0008.004F][.0000.0041.0002.030C] # LATIN CAPITAL LETTER O WITH CARON
+00F6 ; [.1771.0020.0002.006F][.0000.0047.0002.0308] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1771.0020.0008.004F][.0000.0047.0002.0308] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.1771.0020.0002.006F][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.1771.0020.0008.004F][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+0151 ; [.1771.0020.0002.006F][.0000.004D.0002.030B] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.1771.0020.0008.004F][.0000.004D.0002.030B] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+00F5 ; [.1771.0020.0002.006F][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH TILDE
+00D5 ; [.1771.0020.0008.004F][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH TILDE
+1E4D ; [.1771.0020.0002.006F][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4C ; [.1771.0020.0008.004F][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4F ; [.1771.0020.0002.006F][.0000.004E.0002.0303][.0000.0047.0002.0308] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E4E ; [.1771.0020.0008.004F][.0000.004E.0002.0303][.0000.0047.0002.0308] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+022D ; [.1771.0020.0002.006F][.0000.004E.0002.0303][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH TILDE AND MACRON
+022C ; [.1771.0020.0008.004F][.0000.004E.0002.0303][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022F ; [.1771.0020.0002.006F][.0000.0052.0002.0307] # LATIN SMALL LETTER O WITH DOT ABOVE
+022E ; [.1771.0020.0008.004F][.0000.0052.0002.0307] # LATIN CAPITAL LETTER O WITH DOT ABOVE
+0231 ; [.1771.0020.0002.006F][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0230 ; [.1771.0020.0008.004F][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+00F8 ; [.1771.0020.0002.006F][.0000.0054.0002.0338] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1771.0020.0008.004F][.0000.0054.0002.0338] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1771.0020.0002.006F][.0000.0054.0002.0338][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1771.0020.0008.004F][.0000.0054.0002.0338][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01EB ; [.1771.0020.0002.006F][.0000.0059.0002.0328] # LATIN SMALL LETTER O WITH OGONEK
+01EA ; [.1771.0020.0008.004F][.0000.0059.0002.0328] # LATIN CAPITAL LETTER O WITH OGONEK
+01ED ; [.1771.0020.0002.006F][.0000.0059.0002.0328][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EC ; [.1771.0020.0008.004F][.0000.0059.0002.0328][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+014D ; [.1771.0020.0002.006F][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH MACRON
+014C ; [.1771.0020.0008.004F][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH MACRON
+1E53 ; [.1771.0020.0002.006F][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E52 ; [.1771.0020.0008.004F][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E51 ; [.1771.0020.0002.006F][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E50 ; [.1771.0020.0008.004F][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1ECF ; [.1771.0020.0002.006F][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH HOOK ABOVE
+1ECE ; [.1771.0020.0008.004F][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+020D ; [.1771.0020.0002.006F][.0000.0065.0002.030F] # LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020C ; [.1771.0020.0008.004F][.0000.0065.0002.030F] # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020F ; [.1771.0020.0002.006F][.0000.0067.0002.0311] # LATIN SMALL LETTER O WITH INVERTED BREVE
+020E ; [.1771.0020.0008.004F][.0000.0067.0002.0311] # LATIN CAPITAL LETTER O WITH INVERTED BREVE
+01A1 ; [.1771.0020.0002.006F][.0000.0068.0002.031B] # LATIN SMALL LETTER O WITH HORN
+01A0 ; [.1771.0020.0008.004F][.0000.0068.0002.031B] # LATIN CAPITAL LETTER O WITH HORN
+1EDB ; [.1771.0020.0002.006F][.0000.0068.0002.031B][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDA ; [.1771.0020.0008.004F][.0000.0068.0002.031B][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDD ; [.1771.0020.0002.006F][.0000.0068.0002.031B][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDC ; [.1771.0020.0008.004F][.0000.0068.0002.031B][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EE1 ; [.1771.0020.0002.006F][.0000.0068.0002.031B][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE0 ; [.1771.0020.0008.004F][.0000.0068.0002.031B][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EDF ; [.1771.0020.0002.006F][.0000.0068.0002.031B][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EDE ; [.1771.0020.0008.004F][.0000.0068.0002.031B][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EE3 ; [.1771.0020.0002.006F][.0000.0068.0002.031B][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE2 ; [.1771.0020.0008.004F][.0000.0068.0002.031B][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1ECD ; [.1771.0020.0002.006F][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH DOT BELOW
+1ECC ; [.1771.0020.0008.004F][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH DOT BELOW
+1ED9 ; [.1771.0020.0002.006F][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.1771.0020.0008.004F][.0000.0070.0002.0323][.0000.003C.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+0153 ; [.1771.0020.0004.0153][.0000.0139.0004.0153][.164C.0020.0004.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.1771.0020.000A.0152][.0000.0139.0004.0152][.164C.0020.000A.0152] # LATIN CAPITAL LIGATURE OE
+A7F9 ; [.1771.0020.0014.A7F9][.0000.0139.0014.A7F9][.164C.0020.0014.A7F9] # MODIFIER LETTER SMALL LIGATURE OE
+1F197 ; [.1771.0020.001D.1F197][.16FF.0020.001D.1F197] # SQUARED OK
+A74F ; [.1771.0020.0004.A74F][.1771.0020.0004.A74F] # LATIN SMALL LETTER OO
+A74E ; [.1771.0020.000A.A74E][.1771.0020.000A.A74E] # LATIN CAPITAL LETTER OO
+3375 ; [.1771.0020.001C.3375][.185F.0020.001D.3375] # SQUARE OV
+1D0F ; [.1775.0020.0002.1D0F] # LATIN LETTER SMALL CAPITAL O
+1D11 ; [.1776.0020.0002.1D11] # LATIN SMALL LETTER SIDEWAYS O
+0276 ; [.1777.0020.0002.0276] # LATIN LETTER SMALL CAPITAL OE
+1D14 ; [.177B.0020.0002.1D14] # LATIN SMALL LETTER TURNED OE
+1D13 ; [.177C.0020.0002.1D13] # LATIN SMALL LETTER SIDEWAYS O WITH STROKE
+0254 ; [.177D.0020.0002.0254] # LATIN SMALL LETTER OPEN O
+0186 ; [.177D.0020.0008.0186] # LATIN CAPITAL LETTER OPEN O
+1D53 ; [.177D.0020.0014.1D53] # MODIFIER LETTER SMALL OPEN O
+1D10 ; [.1781.0020.0002.1D10] # LATIN LETTER SMALL CAPITAL OPEN O
+1D12 ; [.1782.0020.0002.1D12] # LATIN SMALL LETTER SIDEWAYS OPEN O
+1D97 ; [.1783.0020.0002.1D97] # LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK
+A74D ; [.1784.0020.0002.A74D] # LATIN SMALL LETTER O WITH LOOP
+A74C ; [.1784.0020.0008.A74C] # LATIN CAPITAL LETTER O WITH LOOP
+1D16 ; [.1785.0020.0002.1D16] # LATIN SMALL LETTER TOP HALF O
+1D54 ; [.1785.0020.0014.1D54] # MODIFIER LETTER SMALL TOP HALF O
+1D17 ; [.1786.0020.0002.1D17] # LATIN SMALL LETTER BOTTOM HALF O
+1D55 ; [.1786.0020.0014.1D55] # MODIFIER LETTER SMALL BOTTOM HALF O
+2C7A ; [.1787.0020.0002.2C7A] # LATIN SMALL LETTER O WITH LOW RING INSIDE
+0275 ; [.1788.0020.0002.0275] # LATIN SMALL LETTER BARRED O
+019F ; [.1788.0020.0008.019F] # LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+1DB1 ; [.1788.0020.0014.1DB1] # MODIFIER LETTER SMALL BARRED O
+A74B ; [.178C.0020.0002.A74B] # LATIN SMALL LETTER O WITH LONG STROKE OVERLAY
+A74A ; [.178C.0020.0008.A74A] # LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
+0277 ; [.178D.0020.0002.0277] # LATIN SMALL LETTER CLOSED OMEGA
+0223 ; [.1791.0020.0002.0223] # LATIN SMALL LETTER OU
+0222 ; [.1791.0020.0008.0222] # LATIN CAPITAL LETTER OU
+1D3D ; [.1791.0020.001D.1D3D] # MODIFIER LETTER CAPITAL OU
+1D15 ; [.1795.0020.0002.1D15] # LATIN LETTER SMALL CAPITAL OU
+0070 ; [.1796.0020.0002.0070] # LATIN SMALL LETTER P
+FF50 ; [.1796.0020.0003.FF50] # FULLWIDTH LATIN SMALL LETTER P
+24AB ; [*02FB.0020.0004.24AB][.1796.0020.0004.24AB][*02FC.0020.001F.24AB] # PARENTHESIZED LATIN SMALL LETTER P
+1D429 ; [.1796.0020.0005.1D429] # MATHEMATICAL BOLD SMALL P
+1D45D ; [.1796.0020.0005.1D45D] # MATHEMATICAL ITALIC SMALL P
+1D491 ; [.1796.0020.0005.1D491] # MATHEMATICAL BOLD ITALIC SMALL P
+1D4C5 ; [.1796.0020.0005.1D4C5] # MATHEMATICAL SCRIPT SMALL P
+1D4F9 ; [.1796.0020.0005.1D4F9] # MATHEMATICAL BOLD SCRIPT SMALL P
+1D52D ; [.1796.0020.0005.1D52D] # MATHEMATICAL FRAKTUR SMALL P
+1D561 ; [.1796.0020.0005.1D561] # MATHEMATICAL DOUBLE-STRUCK SMALL P
+1D595 ; [.1796.0020.0005.1D595] # MATHEMATICAL BOLD FRAKTUR SMALL P
+1D5C9 ; [.1796.0020.0005.1D5C9] # MATHEMATICAL SANS-SERIF SMALL P
+1D5FD ; [.1796.0020.0005.1D5FD] # MATHEMATICAL SANS-SERIF BOLD SMALL P
+1D631 ; [.1796.0020.0005.1D631] # MATHEMATICAL SANS-SERIF ITALIC SMALL P
+1D665 ; [.1796.0020.0005.1D665] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
+1D699 ; [.1796.0020.0005.1D699] # MATHEMATICAL MONOSPACE SMALL P
+24DF ; [.1796.0020.0006.24DF] # CIRCLED LATIN SMALL LETTER P
+0050 ; [.1796.0020.0008.0050] # LATIN CAPITAL LETTER P
+FF30 ; [.1796.0020.0009.FF30] # FULLWIDTH LATIN CAPITAL LETTER P
+1F11F ; [*02FB.0020.0004.1F11F][.1796.0020.000A.1F11F][*02FC.0020.001F.1F11F] # PARENTHESIZED LATIN CAPITAL LETTER P
+2119 ; [.1796.0020.000B.2119] # DOUBLE-STRUCK CAPITAL P
+1D40F ; [.1796.0020.000B.1D40F] # MATHEMATICAL BOLD CAPITAL P
+1D443 ; [.1796.0020.000B.1D443] # MATHEMATICAL ITALIC CAPITAL P
+1D477 ; [.1796.0020.000B.1D477] # MATHEMATICAL BOLD ITALIC CAPITAL P
+1D4AB ; [.1796.0020.000B.1D4AB] # MATHEMATICAL SCRIPT CAPITAL P
+1D4DF ; [.1796.0020.000B.1D4DF] # MATHEMATICAL BOLD SCRIPT CAPITAL P
+1D513 ; [.1796.0020.000B.1D513] # MATHEMATICAL FRAKTUR CAPITAL P
+1D57B ; [.1796.0020.000B.1D57B] # MATHEMATICAL BOLD FRAKTUR CAPITAL P
+1D5AF ; [.1796.0020.000B.1D5AF] # MATHEMATICAL SANS-SERIF CAPITAL P
+1D5E3 ; [.1796.0020.000B.1D5E3] # MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+1D617 ; [.1796.0020.000B.1D617] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+1D64B ; [.1796.0020.000B.1D64B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+1D67F ; [.1796.0020.000B.1D67F] # MATHEMATICAL MONOSPACE CAPITAL P
+24C5 ; [.1796.0020.000C.24C5] # CIRCLED LATIN CAPITAL LETTER P
+1F15F ; [.1796.0020.000C.1F15F] # NEGATIVE CIRCLED LATIN CAPITAL LETTER P
+1D56 ; [.1796.0020.0014.1D56] # MODIFIER LETTER SMALL P
+209A ; [.1796.0020.0015.209A] # LATIN SUBSCRIPT SMALL LETTER P
+1D3E ; [.1796.0020.001D.1D3E] # MODIFIER LETTER CAPITAL P
+1F13F ; [.1796.0020.001D.1F13F] # SQUARED LATIN CAPITAL LETTER P
+1F17F ; [.1796.0020.001D.1F17F] # NEGATIVE SQUARED LATIN CAPITAL LETTER P
+1F18A ; [.1796.0020.001D.1F18A] # CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P
+1E55 ; [.1796.0020.0002.0070][.0000.0032.0002.0301] # LATIN SMALL LETTER P WITH ACUTE
+1E54 ; [.1796.0020.0008.0050][.0000.0032.0002.0301] # LATIN CAPITAL LETTER P WITH ACUTE
+1E57 ; [.1796.0020.0002.0070][.0000.0052.0002.0307] # LATIN SMALL LETTER P WITH DOT ABOVE
+1E56 ; [.1796.0020.0008.0050][.0000.0052.0002.0307] # LATIN CAPITAL LETTER P WITH DOT ABOVE
+3380 ; [.1796.0020.001C.3380][.15EF.0020.001D.3380] # SQUARE PA AMPS
+33A9 ; [.1796.0020.001D.33A9][.15EF.0020.001C.33A9] # SQUARE PA
+1F18C ; [.1796.0020.001D.1F18C][.15EF.0020.001D.1F18C] # NEGATIVE SQUARED PA
+3376 ; [.1796.0020.001C.3376][.161D.0020.001C.3376] # SQUARE PC
+338A ; [.1796.0020.001C.338A][.1684.0020.001D.338A] # SQUARE PF
+33D7 ; [.1796.0020.001D.33D7][.16B4.0020.001D.33D7] # SQUARE PH
+33D8 ; [.1796.0020.001C.33D8][*0273.0020.001C.33D8][.1741.0020.001C.33D8][*0273.0020.001C.33D8] # SQUARE PM
+33D9 ; [.1796.0020.001D.33D9][.1796.0020.001D.33D9][.1741.0020.001D.33D9] # SQUARE PPM
+1F14E ; [.1796.0020.001D.1F14E][.1796.0020.001D.1F14E][.185F.0020.001D.1F14E] # SQUARED PPV
+33DA ; [.1796.0020.001D.33DA][.17BD.0020.001D.33DA] # SQUARE PR
+33B0 ; [.1796.0020.001C.33B0][.17F3.0020.001C.33B0] # SQUARE PS
+3250 ; [.1796.0020.001D.3250][.1816.0020.001D.3250][.164C.0020.001D.3250] # PARTNERSHIP SIGN
+33B4 ; [.1796.0020.001C.33B4][.185F.0020.001D.33B4] # SQUARE PV
+33BA ; [.1796.0020.001C.33BA][.1871.0020.001D.33BA] # SQUARE PW
+1D18 ; [.179A.0020.0002.1D18] # LATIN LETTER SMALL CAPITAL P
+1D7D ; [.179B.0020.0002.1D7D] # LATIN SMALL LETTER P WITH STROKE
+2C63 ; [.179B.0020.0008.2C63] # LATIN CAPITAL LETTER P WITH STROKE
+A751 ; [.179C.0020.0002.A751] # LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER
+A750 ; [.179C.0020.0008.A750] # LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
+1D71 ; [.179D.0020.0002.1D71] # LATIN SMALL LETTER P WITH MIDDLE TILDE
+1D88 ; [.179E.0020.0002.1D88] # LATIN SMALL LETTER P WITH PALATAL HOOK
+01A5 ; [.179F.0020.0002.01A5] # LATIN SMALL LETTER P WITH HOOK
+01A4 ; [.179F.0020.0008.01A4] # LATIN CAPITAL LETTER P WITH HOOK
+A753 ; [.17A3.0020.0002.A753] # LATIN SMALL LETTER P WITH FLOURISH
+A752 ; [.17A3.0020.0008.A752] # LATIN CAPITAL LETTER P WITH FLOURISH
+A755 ; [.17A4.0020.0002.A755] # LATIN SMALL LETTER P WITH SQUIRREL TAIL
+A754 ; [.17A4.0020.0008.A754] # LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
+A7FC ; [.17A5.0020.0002.A7FC] # LATIN EPIGRAPHIC LETTER REVERSED P
+0278 ; [.17A6.0020.0002.0278] # LATIN SMALL LETTER PHI
+1DB2 ; [.17A6.0020.0014.1DB2] # MODIFIER LETTER SMALL PHI
+2C77 ; [.17AA.0020.0002.2C77] # LATIN SMALL LETTER TAILLESS PHI
+0071 ; [.17AB.0020.0002.0071] # LATIN SMALL LETTER Q
+FF51 ; [.17AB.0020.0003.FF51] # FULLWIDTH LATIN SMALL LETTER Q
+24AC ; [*02FB.0020.0004.24AC][.17AB.0020.0004.24AC][*02FC.0020.001F.24AC] # PARENTHESIZED LATIN SMALL LETTER Q
+1D42A ; [.17AB.0020.0005.1D42A] # MATHEMATICAL BOLD SMALL Q
+1D45E ; [.17AB.0020.0005.1D45E] # MATHEMATICAL ITALIC SMALL Q
+1D492 ; [.17AB.0020.0005.1D492] # MATHEMATICAL BOLD ITALIC SMALL Q
+1D4C6 ; [.17AB.0020.0005.1D4C6] # MATHEMATICAL SCRIPT SMALL Q
+1D4FA ; [.17AB.0020.0005.1D4FA] # MATHEMATICAL BOLD SCRIPT SMALL Q
+1D52E ; [.17AB.0020.0005.1D52E] # MATHEMATICAL FRAKTUR SMALL Q
+1D562 ; [.17AB.0020.0005.1D562] # MATHEMATICAL DOUBLE-STRUCK SMALL Q
+1D596 ; [.17AB.0020.0005.1D596] # MATHEMATICAL BOLD FRAKTUR SMALL Q
+1D5CA ; [.17AB.0020.0005.1D5CA] # MATHEMATICAL SANS-SERIF SMALL Q
+1D5FE ; [.17AB.0020.0005.1D5FE] # MATHEMATICAL SANS-SERIF BOLD SMALL Q
+1D632 ; [.17AB.0020.0005.1D632] # MATHEMATICAL SANS-SERIF ITALIC SMALL Q
+1D666 ; [.17AB.0020.0005.1D666] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
+1D69A ; [.17AB.0020.0005.1D69A] # MATHEMATICAL MONOSPACE SMALL Q
+24E0 ; [.17AB.0020.0006.24E0] # CIRCLED LATIN SMALL LETTER Q
+0051 ; [.17AB.0020.0008.0051] # LATIN CAPITAL LETTER Q
+FF31 ; [.17AB.0020.0009.FF31] # FULLWIDTH LATIN CAPITAL LETTER Q
+1F120 ; [*02FB.0020.0004.1F120][.17AB.0020.000A.1F120][*02FC.0020.001F.1F120] # PARENTHESIZED LATIN CAPITAL LETTER Q
+211A ; [.17AB.0020.000B.211A] # DOUBLE-STRUCK CAPITAL Q
+1D410 ; [.17AB.0020.000B.1D410] # MATHEMATICAL BOLD CAPITAL Q
+1D444 ; [.17AB.0020.000B.1D444] # MATHEMATICAL ITALIC CAPITAL Q
+1D478 ; [.17AB.0020.000B.1D478] # MATHEMATICAL BOLD ITALIC CAPITAL Q
+1D4AC ; [.17AB.0020.000B.1D4AC] # MATHEMATICAL SCRIPT CAPITAL Q
+1D4E0 ; [.17AB.0020.000B.1D4E0] # MATHEMATICAL BOLD SCRIPT CAPITAL Q
+1D514 ; [.17AB.0020.000B.1D514] # MATHEMATICAL FRAKTUR CAPITAL Q
+1D57C ; [.17AB.0020.000B.1D57C] # MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+1D5B0 ; [.17AB.0020.000B.1D5B0] # MATHEMATICAL SANS-SERIF CAPITAL Q
+1D5E4 ; [.17AB.0020.000B.1D5E4] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+1D618 ; [.17AB.0020.000B.1D618] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+1D64C ; [.17AB.0020.000B.1D64C] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+1D680 ; [.17AB.0020.000B.1D680] # MATHEMATICAL MONOSPACE CAPITAL Q
+24C6 ; [.17AB.0020.000C.24C6] # CIRCLED LATIN CAPITAL LETTER Q
+1F160 ; [.17AB.0020.000C.1F160] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Q
+1F140 ; [.17AB.0020.001D.1F140] # SQUARED LATIN CAPITAL LETTER Q
+1F180 ; [.17AB.0020.001D.1F180] # NEGATIVE SQUARED LATIN CAPITAL LETTER Q
+0239 ; [.17AB.0020.0004.0239][.1796.0020.0004.0239] # LATIN SMALL LETTER QP DIGRAPH
+A757 ; [.17AF.0020.0002.A757] # LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
+A756 ; [.17AF.0020.0008.A756] # LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
+A759 ; [.17B0.0020.0002.A759] # LATIN SMALL LETTER Q WITH DIAGONAL STROKE
+A758 ; [.17B0.0020.0008.A758] # LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
+02A0 ; [.17B1.0020.0002.02A0] # LATIN SMALL LETTER Q WITH HOOK
+024B ; [.17B5.0020.0002.024B] # LATIN SMALL LETTER Q WITH HOOK TAIL
+024A ; [.17B5.0020.0008.024A] # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+0138 ; [.17B9.0020.0002.0138] # LATIN SMALL LETTER KRA
+0072 ; [.17BD.0020.0002.0072] # LATIN SMALL LETTER R
+FF52 ; [.17BD.0020.0003.FF52] # FULLWIDTH LATIN SMALL LETTER R
+036C ; [.17BD.0020.0004.036C] # COMBINING LATIN SMALL LETTER R
+1DCA ; [.17BD.0020.0004.1DCA] # COMBINING LATIN SMALL LETTER R BELOW
+24AD ; [*02FB.0020.0004.24AD][.17BD.0020.0004.24AD][*02FC.0020.001F.24AD] # PARENTHESIZED LATIN SMALL LETTER R
+1D42B ; [.17BD.0020.0005.1D42B] # MATHEMATICAL BOLD SMALL R
+1D45F ; [.17BD.0020.0005.1D45F] # MATHEMATICAL ITALIC SMALL R
+1D493 ; [.17BD.0020.0005.1D493] # MATHEMATICAL BOLD ITALIC SMALL R
+1D4C7 ; [.17BD.0020.0005.1D4C7] # MATHEMATICAL SCRIPT SMALL R
+1D4FB ; [.17BD.0020.0005.1D4FB] # MATHEMATICAL BOLD SCRIPT SMALL R
+1D52F ; [.17BD.0020.0005.1D52F] # MATHEMATICAL FRAKTUR SMALL R
+1D563 ; [.17BD.0020.0005.1D563] # MATHEMATICAL DOUBLE-STRUCK SMALL R
+1D597 ; [.17BD.0020.0005.1D597] # MATHEMATICAL BOLD FRAKTUR SMALL R
+1D5CB ; [.17BD.0020.0005.1D5CB] # MATHEMATICAL SANS-SERIF SMALL R
+1D5FF ; [.17BD.0020.0005.1D5FF] # MATHEMATICAL SANS-SERIF BOLD SMALL R
+1D633 ; [.17BD.0020.0005.1D633] # MATHEMATICAL SANS-SERIF ITALIC SMALL R
+1D667 ; [.17BD.0020.0005.1D667] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
+1D69B ; [.17BD.0020.0005.1D69B] # MATHEMATICAL MONOSPACE SMALL R
+24E1 ; [.17BD.0020.0006.24E1] # CIRCLED LATIN SMALL LETTER R
+0052 ; [.17BD.0020.0008.0052] # LATIN CAPITAL LETTER R
+FF32 ; [.17BD.0020.0009.FF32] # FULLWIDTH LATIN CAPITAL LETTER R
+1F121 ; [*02FB.0020.0004.1F121][.17BD.0020.000A.1F121][*02FC.0020.001F.1F121] # PARENTHESIZED LATIN CAPITAL LETTER R
+211B ; [.17BD.0020.000B.211B] # SCRIPT CAPITAL R
+211C ; [.17BD.0020.000B.211C] # BLACK-LETTER CAPITAL R
+211D ; [.17BD.0020.000B.211D] # DOUBLE-STRUCK CAPITAL R
+1D411 ; [.17BD.0020.000B.1D411] # MATHEMATICAL BOLD CAPITAL R
+1D445 ; [.17BD.0020.000B.1D445] # MATHEMATICAL ITALIC CAPITAL R
+1D479 ; [.17BD.0020.000B.1D479] # MATHEMATICAL BOLD ITALIC CAPITAL R
+1D4E1 ; [.17BD.0020.000B.1D4E1] # MATHEMATICAL BOLD SCRIPT CAPITAL R
+1D57D ; [.17BD.0020.000B.1D57D] # MATHEMATICAL BOLD FRAKTUR CAPITAL R
+1D5B1 ; [.17BD.0020.000B.1D5B1] # MATHEMATICAL SANS-SERIF CAPITAL R
+1D5E5 ; [.17BD.0020.000B.1D5E5] # MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+1D619 ; [.17BD.0020.000B.1D619] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+1D64D ; [.17BD.0020.000B.1D64D] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+1D681 ; [.17BD.0020.000B.1D681] # MATHEMATICAL MONOSPACE CAPITAL R
+24C7 ; [.17BD.0020.000C.24C7] # CIRCLED LATIN CAPITAL LETTER R
+1F12C ; [.17BD.0020.000C.1F12C] # CIRCLED ITALIC LATIN CAPITAL LETTER R
+1F161 ; [.17BD.0020.000C.1F161] # NEGATIVE CIRCLED LATIN CAPITAL LETTER R
+02B3 ; [.17BD.0020.0014.02B3] # MODIFIER LETTER SMALL R
+1D63 ; [.17BD.0020.0015.1D63] # LATIN SUBSCRIPT SMALL LETTER R
+1D3F ; [.17BD.0020.001D.1D3F] # MODIFIER LETTER CAPITAL R
+1F141 ; [.17BD.0020.001D.1F141] # SQUARED LATIN CAPITAL LETTER R
+1F181 ; [.17BD.0020.001D.1F181] # NEGATIVE SQUARED LATIN CAPITAL LETTER R
+0155 ; [.17BD.0020.0002.0072][.0000.0032.0002.0301] # LATIN SMALL LETTER R WITH ACUTE
+0154 ; [.17BD.0020.0008.0052][.0000.0032.0002.0301] # LATIN CAPITAL LETTER R WITH ACUTE
+0159 ; [.17BD.0020.0002.0072][.0000.0041.0002.030C] # LATIN SMALL LETTER R WITH CARON
+0158 ; [.17BD.0020.0008.0052][.0000.0041.0002.030C] # LATIN CAPITAL LETTER R WITH CARON
+1E59 ; [.17BD.0020.0002.0072][.0000.0052.0002.0307] # LATIN SMALL LETTER R WITH DOT ABOVE
+1E58 ; [.17BD.0020.0008.0052][.0000.0052.0002.0307] # LATIN CAPITAL LETTER R WITH DOT ABOVE
+0157 ; [.17BD.0020.0002.0072][.0000.0056.0002.0327] # LATIN SMALL LETTER R WITH CEDILLA
+0156 ; [.17BD.0020.0008.0052][.0000.0056.0002.0327] # LATIN CAPITAL LETTER R WITH CEDILLA
+A7A7 ; [.17BD.0020.0004.A7A7][.0000.0061.0004.A7A7] # LATIN SMALL LETTER R WITH OBLIQUE STROKE
+A7A6 ; [.17BD.0020.000A.A7A6][.0000.0061.0004.A7A6] # LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
+0211 ; [.17BD.0020.0002.0072][.0000.0065.0002.030F] # LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0210 ; [.17BD.0020.0008.0052][.0000.0065.0002.030F] # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0213 ; [.17BD.0020.0002.0072][.0000.0067.0002.0311] # LATIN SMALL LETTER R WITH INVERTED BREVE
+0212 ; [.17BD.0020.0008.0052][.0000.0067.0002.0311] # LATIN CAPITAL LETTER R WITH INVERTED BREVE
+1E5B ; [.17BD.0020.0002.0072][.0000.0070.0002.0323] # LATIN SMALL LETTER R WITH DOT BELOW
+1E5A ; [.17BD.0020.0008.0052][.0000.0070.0002.0323] # LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5D ; [.17BD.0020.0002.0072][.0000.0070.0002.0323][.0000.005B.0002.0304] # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5C ; [.17BD.0020.0008.0052][.0000.0070.0002.0323][.0000.005B.0002.0304] # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5F ; [.17BD.0020.0002.0072][.0000.007B.0002.0331] # LATIN SMALL LETTER R WITH LINE BELOW
+1E5E ; [.17BD.0020.0008.0052][.0000.007B.0002.0331] # LATIN CAPITAL LETTER R WITH LINE BELOW
+A783 ; [.17BD.0020.0004.A783][.0000.013A.0004.A783] # LATIN SMALL LETTER INSULAR R
+A782 ; [.17BD.0020.000A.A782][.0000.013A.0004.A782] # LATIN CAPITAL LETTER INSULAR R
+33AD ; [.17BD.0020.001C.33AD][.15EF.0020.001C.33AD][.1631.0020.001C.33AD] # SQUARE RAD
+33AE ; [.17BD.0020.001C.33AE][.15EF.0020.001C.33AE][.1631.0020.001C.33AE][*05AB.0020.001C.33AE][.17F3.0020.001C.33AE] # SQUARE RAD OVER S
+33AF ; [.17BD.0020.001C.33AF][.15EF.0020.001C.33AF][.1631.0020.001C.33AF][*05AB.0020.001C.33AF][.17F3.0020.001C.33AF][.15E7.0020.001C.33AF] # SQUARE RAD OVER S SQUARED
+20A8 ; [.17BD.0020.000A.20A8][.17F3.0020.0004.20A8] # RUPEE SIGN
+0280 ; [.17C1.0020.0002.0280] # LATIN LETTER SMALL CAPITAL R
+1DE2 ; [.17C1.0020.0004.1DE2] # COMBINING LATIN LETTER SMALL CAPITAL R
+01A6 ; [.17C1.0020.0008.01A6] # LATIN LETTER YR
+A75B ; [.17C5.0020.0002.A75B] # LATIN SMALL LETTER R ROTUNDA
+1DE3 ; [.17C5.0020.0004.1DE3] # COMBINING LATIN SMALL LETTER R ROTUNDA
+A75A ; [.17C5.0020.0008.A75A] # LATIN CAPITAL LETTER R ROTUNDA
+1D19 ; [.17C6.0020.0002.1D19] # LATIN LETTER SMALL CAPITAL REVERSED R
+024D ; [.17C7.0020.0002.024D] # LATIN SMALL LETTER R WITH STROKE
+024C ; [.17C7.0020.0008.024C] # LATIN CAPITAL LETTER R WITH STROKE
+1D72 ; [.17CB.0020.0002.1D72] # LATIN SMALL LETTER R WITH MIDDLE TILDE
+0279 ; [.17CC.0020.0002.0279] # LATIN SMALL LETTER TURNED R
+02B4 ; [.17CC.0020.0014.02B4] # MODIFIER LETTER SMALL TURNED R
+1D1A ; [.17D0.0020.0002.1D1A] # LATIN LETTER SMALL CAPITAL TURNED R
+027A ; [.17D1.0020.0002.027A] # LATIN SMALL LETTER TURNED R WITH LONG LEG
+1D89 ; [.17D5.0020.0002.1D89] # LATIN SMALL LETTER R WITH PALATAL HOOK
+027B ; [.17D6.0020.0002.027B] # LATIN SMALL LETTER TURNED R WITH HOOK
+02B5 ; [.17D6.0020.0014.02B5] # MODIFIER LETTER SMALL TURNED R WITH HOOK
+2C79 ; [.17DA.0020.0002.2C79] # LATIN SMALL LETTER TURNED R WITH TAIL
+027C ; [.17DB.0020.0002.027C] # LATIN SMALL LETTER R WITH LONG LEG
+027D ; [.17DF.0020.0002.027D] # LATIN SMALL LETTER R WITH TAIL
+2C64 ; [.17DF.0020.0008.2C64] # LATIN CAPITAL LETTER R WITH TAIL
+027E ; [.17E3.0020.0002.027E] # LATIN SMALL LETTER R WITH FISHHOOK
+1D73 ; [.17E7.0020.0002.1D73] # LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE
+027F ; [.17E8.0020.0002.027F] # LATIN SMALL LETTER REVERSED R WITH FISHHOOK
+0281 ; [.17EC.0020.0002.0281] # LATIN LETTER SMALL CAPITAL INVERTED R
+02B6 ; [.17EC.0020.0014.02B6] # MODIFIER LETTER SMALL CAPITAL INVERTED R
+A775 ; [.17F0.0020.0002.A775] # LATIN SMALL LETTER RUM
+A776 ; [.17F1.0020.0002.A776] # LATIN LETTER SMALL CAPITAL RUM
+A75D ; [.17F2.0020.0002.A75D] # LATIN SMALL LETTER RUM ROTUNDA
+A75C ; [.17F2.0020.0008.A75C] # LATIN CAPITAL LETTER RUM ROTUNDA
+0073 ; [.17F3.0020.0002.0073] # LATIN SMALL LETTER S
+FF53 ; [.17F3.0020.0003.FF53] # FULLWIDTH LATIN SMALL LETTER S
+1DE4 ; [.17F3.0020.0004.1DE4] # COMBINING LATIN SMALL LETTER S
+24AE ; [*02FB.0020.0004.24AE][.17F3.0020.0004.24AE][*02FC.0020.001F.24AE] # PARENTHESIZED LATIN SMALL LETTER S
+1D42C ; [.17F3.0020.0005.1D42C] # MATHEMATICAL BOLD SMALL S
+1D460 ; [.17F3.0020.0005.1D460] # MATHEMATICAL ITALIC SMALL S
+1D494 ; [.17F3.0020.0005.1D494] # MATHEMATICAL BOLD ITALIC SMALL S
+1D4C8 ; [.17F3.0020.0005.1D4C8] # MATHEMATICAL SCRIPT SMALL S
+1D4FC ; [.17F3.0020.0005.1D4FC] # MATHEMATICAL BOLD SCRIPT SMALL S
+1D530 ; [.17F3.0020.0005.1D530] # MATHEMATICAL FRAKTUR SMALL S
+1D564 ; [.17F3.0020.0005.1D564] # MATHEMATICAL DOUBLE-STRUCK SMALL S
+1D598 ; [.17F3.0020.0005.1D598] # MATHEMATICAL BOLD FRAKTUR SMALL S
+1D5CC ; [.17F3.0020.0005.1D5CC] # MATHEMATICAL SANS-SERIF SMALL S
+1D600 ; [.17F3.0020.0005.1D600] # MATHEMATICAL SANS-SERIF BOLD SMALL S
+1D634 ; [.17F3.0020.0005.1D634] # MATHEMATICAL SANS-SERIF ITALIC SMALL S
+1D668 ; [.17F3.0020.0005.1D668] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
+1D69C ; [.17F3.0020.0005.1D69C] # MATHEMATICAL MONOSPACE SMALL S
+24E2 ; [.17F3.0020.0006.24E2] # CIRCLED LATIN SMALL LETTER S
+0053 ; [.17F3.0020.0008.0053] # LATIN CAPITAL LETTER S
+FF33 ; [.17F3.0020.0009.FF33] # FULLWIDTH LATIN CAPITAL LETTER S
+1F122 ; [*02FB.0020.0004.1F122][.17F3.0020.000A.1F122][*02FC.0020.001F.1F122] # PARENTHESIZED LATIN CAPITAL LETTER S
+1F12A ; [*0359.0020.0004.1F12A][.17F3.0020.000A.1F12A][*035A.0020.001F.1F12A] # TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S
+1D412 ; [.17F3.0020.000B.1D412] # MATHEMATICAL BOLD CAPITAL S
+1D446 ; [.17F3.0020.000B.1D446] # MATHEMATICAL ITALIC CAPITAL S
+1D47A ; [.17F3.0020.000B.1D47A] # MATHEMATICAL BOLD ITALIC CAPITAL S
+1D4AE ; [.17F3.0020.000B.1D4AE] # MATHEMATICAL SCRIPT CAPITAL S
+1D4E2 ; [.17F3.0020.000B.1D4E2] # MATHEMATICAL BOLD SCRIPT CAPITAL S
+1D516 ; [.17F3.0020.000B.1D516] # MATHEMATICAL FRAKTUR CAPITAL S
+1D54A ; [.17F3.0020.000B.1D54A] # MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+1D57E ; [.17F3.0020.000B.1D57E] # MATHEMATICAL BOLD FRAKTUR CAPITAL S
+1D5B2 ; [.17F3.0020.000B.1D5B2] # MATHEMATICAL SANS-SERIF CAPITAL S
+1D5E6 ; [.17F3.0020.000B.1D5E6] # MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+1D61A ; [.17F3.0020.000B.1D61A] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+1D64E ; [.17F3.0020.000B.1D64E] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+1D682 ; [.17F3.0020.000B.1D682] # MATHEMATICAL MONOSPACE CAPITAL S
+24C8 ; [.17F3.0020.000C.24C8] # CIRCLED LATIN CAPITAL LETTER S
+1F162 ; [.17F3.0020.000C.1F162] # NEGATIVE CIRCLED LATIN CAPITAL LETTER S
+02E2 ; [.17F3.0020.0014.02E2] # MODIFIER LETTER SMALL S
+209B ; [.17F3.0020.0015.209B] # LATIN SUBSCRIPT SMALL LETTER S
+1F142 ; [.17F3.0020.001D.1F142] # SQUARED LATIN CAPITAL LETTER S
+1F182 ; [.17F3.0020.001D.1F182] # NEGATIVE SQUARED LATIN CAPITAL LETTER S
+015B ; [.17F3.0020.0002.0073][.0000.0032.0002.0301] # LATIN SMALL LETTER S WITH ACUTE
+015A ; [.17F3.0020.0008.0053][.0000.0032.0002.0301] # LATIN CAPITAL LETTER S WITH ACUTE
+1E65 ; [.17F3.0020.0002.0073][.0000.0032.0002.0301][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E64 ; [.17F3.0020.0008.0053][.0000.0032.0002.0301][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+015D ; [.17F3.0020.0002.0073][.0000.003C.0002.0302] # LATIN SMALL LETTER S WITH CIRCUMFLEX
+015C ; [.17F3.0020.0008.0053][.0000.003C.0002.0302] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+0161 ; [.17F3.0020.0002.0073][.0000.0041.0002.030C] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.17F3.0020.0008.0053][.0000.0041.0002.030C] # LATIN CAPITAL LETTER S WITH CARON
+1E67 ; [.17F3.0020.0002.0073][.0000.0041.0002.030C][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E66 ; [.17F3.0020.0008.0053][.0000.0041.0002.030C][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E61 ; [.17F3.0020.0002.0073][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH DOT ABOVE
+1E60 ; [.17F3.0020.0008.0053][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH DOT ABOVE
+015F ; [.17F3.0020.0002.0073][.0000.0056.0002.0327] # LATIN SMALL LETTER S WITH CEDILLA
+015E ; [.17F3.0020.0008.0053][.0000.0056.0002.0327] # LATIN CAPITAL LETTER S WITH CEDILLA
+A7A9 ; [.17F3.0020.0004.A7A9][.0000.0061.0004.A7A9] # LATIN SMALL LETTER S WITH OBLIQUE STROKE
+A7A8 ; [.17F3.0020.000A.A7A8][.0000.0061.0004.A7A8] # LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
+1E63 ; [.17F3.0020.0002.0073][.0000.0070.0002.0323] # LATIN SMALL LETTER S WITH DOT BELOW
+1E62 ; [.17F3.0020.0008.0053][.0000.0070.0002.0323] # LATIN CAPITAL LETTER S WITH DOT BELOW
+1E69 ; [.17F3.0020.0002.0073][.0000.0070.0002.0323][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E68 ; [.17F3.0020.0008.0053][.0000.0070.0002.0323][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+0219 ; [.17F3.0020.0002.0073][.0000.0077.0002.0326] # LATIN SMALL LETTER S WITH COMMA BELOW
+0218 ; [.17F3.0020.0008.0053][.0000.0077.0002.0326] # LATIN CAPITAL LETTER S WITH COMMA BELOW
+017F ; [.17F3.0020.0004.017F][.0000.013A.0004.017F] # LATIN SMALL LETTER LONG S
+1DE5 ; [.17F3.0020.0004.1DE5][.0000.013A.0004.1DE5] # COMBINING LATIN SMALL LETTER LONG S
+A785 ; [.17F3.0020.0004.A785][.0000.013A.0004.A785] # LATIN SMALL LETTER INSULAR S
+A784 ; [.17F3.0020.000A.A784][.0000.013A.0004.A784] # LATIN CAPITAL LETTER INSULAR S
+1E9B ; [.17F3.0020.0004.1E9B][.0000.013A.0004.1E9B][.0000.0052.0002.1E9B] # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1F18D ; [.17F3.0020.001D.1F18D][.15EF.0020.001D.1F18D] # NEGATIVE SQUARED SA
+1F14C ; [.17F3.0020.001D.1F14C][.1631.0020.001D.1F14C] # SQUARED SD
+2120 ; [.17F3.0020.0014.2120][.1741.0020.0014.2120] # SERVICE MARK
+1F198 ; [.17F3.0020.001D.1F198][.1771.0020.001D.1F198][.17F3.0020.001D.1F198] # SQUARED SOS
+33DB ; [.17F3.0020.001C.33DB][.17BD.0020.001C.33DB] # SQUARE SR
+1F14D ; [.17F3.0020.001D.1F14D][.17F3.0020.001D.1F14D] # SQUARED SS
+00DF ; [.17F3.0020.0004.00DF][.0000.0139.0004.00DF][.17F3.0020.0004.00DF] # LATIN SMALL LETTER SHARP S
+1E9E ; [.17F3.0020.000A.1E9E][.0000.0139.0004.1E9E][.17F3.0020.000A.1E9E] # LATIN CAPITAL LETTER SHARP S
+FB06 ; [.17F3.0020.0004.FB06][.1816.0020.0004.FB06] # LATIN SMALL LIGATURE ST
+FB05 ; [.17F3.0020.0004.FB05][.0000.013A.0004.FB05][.1816.0020.0004.FB05] # LATIN SMALL LIGATURE LONG S T
+33DC ; [.17F3.0020.001D.33DC][.185F.0020.001C.33DC] # SQUARE SV
+A731 ; [.17F7.0020.0002.A731] # LATIN LETTER SMALL CAPITAL S
+1D74 ; [.17F8.0020.0002.1D74] # LATIN SMALL LETTER S WITH MIDDLE TILDE
+1D8A ; [.17F9.0020.0002.1D8A] # LATIN SMALL LETTER S WITH PALATAL HOOK
+0282 ; [.17FA.0020.0002.0282] # LATIN SMALL LETTER S WITH HOOK
+1DB3 ; [.17FA.0020.0014.1DB3] # MODIFIER LETTER SMALL S WITH HOOK
+023F ; [.17FE.0020.0002.023F] # LATIN SMALL LETTER S WITH SWASH TAIL
+2C7E ; [.17FE.0020.0008.2C7E] # LATIN CAPITAL LETTER S WITH SWASH TAIL
+1E9C ; [.1802.0020.0002.1E9C] # LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE
+1E9D ; [.1803.0020.0002.1E9D] # LATIN SMALL LETTER LONG S WITH HIGH STROKE
+0283 ; [.1804.0020.0002.0283] # LATIN SMALL LETTER ESH
+01A9 ; [.1804.0020.0008.01A9] # LATIN CAPITAL LETTER ESH
+1DB4 ; [.1804.0020.0014.1DB4] # MODIFIER LETTER SMALL ESH
+1D8B ; [.1808.0020.0002.1D8B] # LATIN SMALL LETTER ESH WITH PALATAL HOOK
+01AA ; [.1809.0020.0002.01AA] # LATIN LETTER REVERSED ESH LOOP
+0285 ; [.180D.0020.0002.0285] # LATIN SMALL LETTER SQUAT REVERSED ESH
+1D98 ; [.1811.0020.0002.1D98] # LATIN SMALL LETTER ESH WITH RETROFLEX HOOK
+0286 ; [.1812.0020.0002.0286] # LATIN SMALL LETTER ESH WITH CURL
+0074 ; [.1816.0020.0002.0074] # LATIN SMALL LETTER T
+FF54 ; [.1816.0020.0003.FF54] # FULLWIDTH LATIN SMALL LETTER T
+036D ; [.1816.0020.0004.036D] # COMBINING LATIN SMALL LETTER T
+24AF ; [*02FB.0020.0004.24AF][.1816.0020.0004.24AF][*02FC.0020.001F.24AF] # PARENTHESIZED LATIN SMALL LETTER T
+1D42D ; [.1816.0020.0005.1D42D] # MATHEMATICAL BOLD SMALL T
+1D461 ; [.1816.0020.0005.1D461] # MATHEMATICAL ITALIC SMALL T
+1D495 ; [.1816.0020.0005.1D495] # MATHEMATICAL BOLD ITALIC SMALL T
+1D4C9 ; [.1816.0020.0005.1D4C9] # MATHEMATICAL SCRIPT SMALL T
+1D4FD ; [.1816.0020.0005.1D4FD] # MATHEMATICAL BOLD SCRIPT SMALL T
+1D531 ; [.1816.0020.0005.1D531] # MATHEMATICAL FRAKTUR SMALL T
+1D565 ; [.1816.0020.0005.1D565] # MATHEMATICAL DOUBLE-STRUCK SMALL T
+1D599 ; [.1816.0020.0005.1D599] # MATHEMATICAL BOLD FRAKTUR SMALL T
+1D5CD ; [.1816.0020.0005.1D5CD] # MATHEMATICAL SANS-SERIF SMALL T
+1D601 ; [.1816.0020.0005.1D601] # MATHEMATICAL SANS-SERIF BOLD SMALL T
+1D635 ; [.1816.0020.0005.1D635] # MATHEMATICAL SANS-SERIF ITALIC SMALL T
+1D669 ; [.1816.0020.0005.1D669] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
+1D69D ; [.1816.0020.0005.1D69D] # MATHEMATICAL MONOSPACE SMALL T
+24E3 ; [.1816.0020.0006.24E3] # CIRCLED LATIN SMALL LETTER T
+0054 ; [.1816.0020.0008.0054] # LATIN CAPITAL LETTER T
+FF34 ; [.1816.0020.0009.FF34] # FULLWIDTH LATIN CAPITAL LETTER T
+1F123 ; [*02FB.0020.0004.1F123][.1816.0020.000A.1F123][*02FC.0020.001F.1F123] # PARENTHESIZED LATIN CAPITAL LETTER T
+1D413 ; [.1816.0020.000B.1D413] # MATHEMATICAL BOLD CAPITAL T
+1D447 ; [.1816.0020.000B.1D447] # MATHEMATICAL ITALIC CAPITAL T
+1D47B ; [.1816.0020.000B.1D47B] # MATHEMATICAL BOLD ITALIC CAPITAL T
+1D4AF ; [.1816.0020.000B.1D4AF] # MATHEMATICAL SCRIPT CAPITAL T
+1D4E3 ; [.1816.0020.000B.1D4E3] # MATHEMATICAL BOLD SCRIPT CAPITAL T
+1D517 ; [.1816.0020.000B.1D517] # MATHEMATICAL FRAKTUR CAPITAL T
+1D54B ; [.1816.0020.000B.1D54B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+1D57F ; [.1816.0020.000B.1D57F] # MATHEMATICAL BOLD FRAKTUR CAPITAL T
+1D5B3 ; [.1816.0020.000B.1D5B3] # MATHEMATICAL SANS-SERIF CAPITAL T
+1D5E7 ; [.1816.0020.000B.1D5E7] # MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+1D61B ; [.1816.0020.000B.1D61B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+1D64F ; [.1816.0020.000B.1D64F] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+1D683 ; [.1816.0020.000B.1D683] # MATHEMATICAL MONOSPACE CAPITAL T
+24C9 ; [.1816.0020.000C.24C9] # CIRCLED LATIN CAPITAL LETTER T
+1F163 ; [.1816.0020.000C.1F163] # NEGATIVE CIRCLED LATIN CAPITAL LETTER T
+1D57 ; [.1816.0020.0014.1D57] # MODIFIER LETTER SMALL T
+209C ; [.1816.0020.0015.209C] # LATIN SUBSCRIPT SMALL LETTER T
+1D40 ; [.1816.0020.001D.1D40] # MODIFIER LETTER CAPITAL T
+1F143 ; [.1816.0020.001D.1F143] # SQUARED LATIN CAPITAL LETTER T
+1F183 ; [.1816.0020.001D.1F183] # NEGATIVE SQUARED LATIN CAPITAL LETTER T
+0165 ; [.1816.0020.0002.0074][.0000.0041.0002.030C] # LATIN SMALL LETTER T WITH CARON
+0164 ; [.1816.0020.0008.0054][.0000.0041.0002.030C] # LATIN CAPITAL LETTER T WITH CARON
+1E97 ; [.1816.0020.0002.0074][.0000.0047.0002.0308] # LATIN SMALL LETTER T WITH DIAERESIS
+1E6B ; [.1816.0020.0002.0074][.0000.0052.0002.0307] # LATIN SMALL LETTER T WITH DOT ABOVE
+1E6A ; [.1816.0020.0008.0054][.0000.0052.0002.0307] # LATIN CAPITAL LETTER T WITH DOT ABOVE
+0163 ; [.1816.0020.0002.0074][.0000.0056.0002.0327] # LATIN SMALL LETTER T WITH CEDILLA
+0162 ; [.1816.0020.0008.0054][.0000.0056.0002.0327] # LATIN CAPITAL LETTER T WITH CEDILLA
+1E6D ; [.1816.0020.0002.0074][.0000.0070.0002.0323] # LATIN SMALL LETTER T WITH DOT BELOW
+1E6C ; [.1816.0020.0008.0054][.0000.0070.0002.0323] # LATIN CAPITAL LETTER T WITH DOT BELOW
+021B ; [.1816.0020.0002.0074][.0000.0077.0002.0326] # LATIN SMALL LETTER T WITH COMMA BELOW
+021A ; [.1816.0020.0008.0054][.0000.0077.0002.0326] # LATIN CAPITAL LETTER T WITH COMMA BELOW
+1E71 ; [.1816.0020.0002.0074][.0000.0078.0002.032D] # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E70 ; [.1816.0020.0008.0054][.0000.0078.0002.032D] # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E6F ; [.1816.0020.0002.0074][.0000.007B.0002.0331] # LATIN SMALL LETTER T WITH LINE BELOW
+1E6E ; [.1816.0020.0008.0054][.0000.007B.0002.0331] # LATIN CAPITAL LETTER T WITH LINE BELOW
+A787 ; [.1816.0020.0004.A787][.0000.013A.0004.A787] # LATIN SMALL LETTER INSULAR T
+A786 ; [.1816.0020.000A.A786][.0000.013A.0004.A786] # LATIN CAPITAL LETTER INSULAR T
+02A8 ; [.1816.0020.0004.02A8][.162B.0020.0004.02A8] # LATIN SMALL LETTER TC DIGRAPH WITH CURL
+2121 ; [.1816.0020.000A.2121][.164C.0020.000A.2121][.1711.0020.000A.2121] # TELEPHONE SIGN
+1D7A ; [.1816.0020.0004.1D7A][.0000.0139.0004.1D7A][.16B4.0020.0004.1D7A] # LATIN SMALL LETTER TH WITH STRIKETHROUGH
+3394 ; [.1816.0020.001D.3394][.16B4.0020.001D.3394][.1895.0020.001C.3394] # SQUARE THZ
+2122 ; [.1816.0020.0014.2122][.1741.0020.0014.2122] # TRADE MARK SIGN
+01BE ; [.1816.0020.0004.01BE][.17F3.0020.0004.01BE] # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
+02A6 ; [.1816.0020.0004.02A6][.17F3.0020.0004.02A6] # LATIN SMALL LETTER TS DIGRAPH
+02A7 ; [.1816.0020.0004.02A7][.1804.0020.0004.02A7] # LATIN SMALL LETTER TESH DIGRAPH
+A729 ; [.1816.0020.0004.A729][.1895.0020.0004.A729] # LATIN SMALL LETTER TZ
+A728 ; [.1816.0020.000A.A728][.1895.0020.0004.A728] # LATIN CAPITAL LETTER TZ
+1D1B ; [.181A.0020.0002.1D1B] # LATIN LETTER SMALL CAPITAL T
+0167 ; [.181B.0020.0002.0167] # LATIN SMALL LETTER T WITH STROKE
+0166 ; [.181B.0020.0008.0166] # LATIN CAPITAL LETTER T WITH STROKE
+2C66 ; [.181F.0020.0002.2C66] # LATIN SMALL LETTER T WITH DIAGONAL STROKE
+023E ; [.181F.0020.0008.023E] # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+1D75 ; [.1820.0020.0002.1D75] # LATIN SMALL LETTER T WITH MIDDLE TILDE
+01AB ; [.1821.0020.0002.01AB] # LATIN SMALL LETTER T WITH PALATAL HOOK
+1DB5 ; [.1821.0020.0014.1DB5] # MODIFIER LETTER SMALL T WITH PALATAL HOOK
+01AD ; [.1825.0020.0002.01AD] # LATIN SMALL LETTER T WITH HOOK
+01AC ; [.1825.0020.0008.01AC] # LATIN CAPITAL LETTER T WITH HOOK
+0288 ; [.1829.0020.0002.0288] # LATIN SMALL LETTER T WITH RETROFLEX HOOK
+01AE ; [.1829.0020.0008.01AE] # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+0236 ; [.182D.0020.0002.0236] # LATIN SMALL LETTER T WITH CURL
+A777 ; [.1831.0020.0002.A777] # LATIN SMALL LETTER TUM
+0287 ; [.1832.0020.0002.0287] # LATIN SMALL LETTER TURNED T
+0075 ; [.1836.0020.0002.0075] # LATIN SMALL LETTER U
+FF55 ; [.1836.0020.0003.FF55] # FULLWIDTH LATIN SMALL LETTER U
+0367 ; [.1836.0020.0004.0367] # COMBINING LATIN SMALL LETTER U
+24B0 ; [*02FB.0020.0004.24B0][.1836.0020.0004.24B0][*02FC.0020.001F.24B0] # PARENTHESIZED LATIN SMALL LETTER U
+1D42E ; [.1836.0020.0005.1D42E] # MATHEMATICAL BOLD SMALL U
+1D462 ; [.1836.0020.0005.1D462] # MATHEMATICAL ITALIC SMALL U
+1D496 ; [.1836.0020.0005.1D496] # MATHEMATICAL BOLD ITALIC SMALL U
+1D4CA ; [.1836.0020.0005.1D4CA] # MATHEMATICAL SCRIPT SMALL U
+1D4FE ; [.1836.0020.0005.1D4FE] # MATHEMATICAL BOLD SCRIPT SMALL U
+1D532 ; [.1836.0020.0005.1D532] # MATHEMATICAL FRAKTUR SMALL U
+1D566 ; [.1836.0020.0005.1D566] # MATHEMATICAL DOUBLE-STRUCK SMALL U
+1D59A ; [.1836.0020.0005.1D59A] # MATHEMATICAL BOLD FRAKTUR SMALL U
+1D5CE ; [.1836.0020.0005.1D5CE] # MATHEMATICAL SANS-SERIF SMALL U
+1D602 ; [.1836.0020.0005.1D602] # MATHEMATICAL SANS-SERIF BOLD SMALL U
+1D636 ; [.1836.0020.0005.1D636] # MATHEMATICAL SANS-SERIF ITALIC SMALL U
+1D66A ; [.1836.0020.0005.1D66A] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
+1D69E ; [.1836.0020.0005.1D69E] # MATHEMATICAL MONOSPACE SMALL U
+24E4 ; [.1836.0020.0006.24E4] # CIRCLED LATIN SMALL LETTER U
+0055 ; [.1836.0020.0008.0055] # LATIN CAPITAL LETTER U
+FF35 ; [.1836.0020.0009.FF35] # FULLWIDTH LATIN CAPITAL LETTER U
+1F124 ; [*02FB.0020.0004.1F124][.1836.0020.000A.1F124][*02FC.0020.001F.1F124] # PARENTHESIZED LATIN CAPITAL LETTER U
+1D414 ; [.1836.0020.000B.1D414] # MATHEMATICAL BOLD CAPITAL U
+1D448 ; [.1836.0020.000B.1D448] # MATHEMATICAL ITALIC CAPITAL U
+1D47C ; [.1836.0020.000B.1D47C] # MATHEMATICAL BOLD ITALIC CAPITAL U
+1D4B0 ; [.1836.0020.000B.1D4B0] # MATHEMATICAL SCRIPT CAPITAL U
+1D4E4 ; [.1836.0020.000B.1D4E4] # MATHEMATICAL BOLD SCRIPT CAPITAL U
+1D518 ; [.1836.0020.000B.1D518] # MATHEMATICAL FRAKTUR CAPITAL U
+1D54C ; [.1836.0020.000B.1D54C] # MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+1D580 ; [.1836.0020.000B.1D580] # MATHEMATICAL BOLD FRAKTUR CAPITAL U
+1D5B4 ; [.1836.0020.000B.1D5B4] # MATHEMATICAL SANS-SERIF CAPITAL U
+1D5E8 ; [.1836.0020.000B.1D5E8] # MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+1D61C ; [.1836.0020.000B.1D61C] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+1D650 ; [.1836.0020.000B.1D650] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+1D684 ; [.1836.0020.000B.1D684] # MATHEMATICAL MONOSPACE CAPITAL U
+24CA ; [.1836.0020.000C.24CA] # CIRCLED LATIN CAPITAL LETTER U
+1F164 ; [.1836.0020.000C.1F164] # NEGATIVE CIRCLED LATIN CAPITAL LETTER U
+1D58 ; [.1836.0020.0014.1D58] # MODIFIER LETTER SMALL U
+1D64 ; [.1836.0020.0015.1D64] # LATIN SUBSCRIPT SMALL LETTER U
+1D41 ; [.1836.0020.001D.1D41] # MODIFIER LETTER CAPITAL U
+1F144 ; [.1836.0020.001D.1F144] # SQUARED LATIN CAPITAL LETTER U
+1F184 ; [.1836.0020.001D.1F184] # NEGATIVE SQUARED LATIN CAPITAL LETTER U
+00FA ; [.1836.0020.0002.0075][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.1836.0020.0008.0055][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH ACUTE
+00F9 ; [.1836.0020.0002.0075][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH GRAVE
+00D9 ; [.1836.0020.0008.0055][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH GRAVE
+016D ; [.1836.0020.0002.0075][.0000.0037.0002.0306] # LATIN SMALL LETTER U WITH BREVE
+016C ; [.1836.0020.0008.0055][.0000.0037.0002.0306] # LATIN CAPITAL LETTER U WITH BREVE
+00FB ; [.1836.0020.0002.0075][.0000.003C.0002.0302] # LATIN SMALL LETTER U WITH CIRCUMFLEX
+00DB ; [.1836.0020.0008.0055][.0000.003C.0002.0302] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+01D4 ; [.1836.0020.0002.0075][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH CARON
+01D3 ; [.1836.0020.0008.0055][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH CARON
+016F ; [.1836.0020.0002.0075][.0000.0043.0002.030A] # LATIN SMALL LETTER U WITH RING ABOVE
+016E ; [.1836.0020.0008.0055][.0000.0043.0002.030A] # LATIN CAPITAL LETTER U WITH RING ABOVE
+00FC ; [.1836.0020.0002.0075][.0000.0047.0002.0308] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1836.0020.0008.0055][.0000.0047.0002.0308] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01D8 ; [.1836.0020.0002.0075][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1836.0020.0008.0055][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01DC ; [.1836.0020.0002.0075][.0000.0047.0002.0308][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1836.0020.0008.0055][.0000.0047.0002.0308][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DA ; [.1836.0020.0002.0075][.0000.0047.0002.0308][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1836.0020.0008.0055][.0000.0047.0002.0308][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01D6 ; [.1836.0020.0002.0075][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1836.0020.0008.0055][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+0171 ; [.1836.0020.0002.0075][.0000.004D.0002.030B] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.1836.0020.0008.0055][.0000.004D.0002.030B] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0169 ; [.1836.0020.0002.0075][.0000.004E.0002.0303] # LATIN SMALL LETTER U WITH TILDE
+0168 ; [.1836.0020.0008.0055][.0000.004E.0002.0303] # LATIN CAPITAL LETTER U WITH TILDE
+1E79 ; [.1836.0020.0002.0075][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E78 ; [.1836.0020.0008.0055][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+0173 ; [.1836.0020.0002.0075][.0000.0059.0002.0328] # LATIN SMALL LETTER U WITH OGONEK
+0172 ; [.1836.0020.0008.0055][.0000.0059.0002.0328] # LATIN CAPITAL LETTER U WITH OGONEK
+016B ; [.1836.0020.0002.0075][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.1836.0020.0008.0055][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH MACRON
+1E7B ; [.1836.0020.0002.0075][.0000.005B.0002.0304][.0000.0047.0002.0308] # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7A ; [.1836.0020.0008.0055][.0000.005B.0002.0304][.0000.0047.0002.0308] # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1EE7 ; [.1836.0020.0002.0075][.0000.0064.0002.0309] # LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE6 ; [.1836.0020.0008.0055][.0000.0064.0002.0309] # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+0215 ; [.1836.0020.0002.0075][.0000.0065.0002.030F] # LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0214 ; [.1836.0020.0008.0055][.0000.0065.0002.030F] # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0217 ; [.1836.0020.0002.0075][.0000.0067.0002.0311] # LATIN SMALL LETTER U WITH INVERTED BREVE
+0216 ; [.1836.0020.0008.0055][.0000.0067.0002.0311] # LATIN CAPITAL LETTER U WITH INVERTED BREVE
+01B0 ; [.1836.0020.0002.0075][.0000.0068.0002.031B] # LATIN SMALL LETTER U WITH HORN
+01AF ; [.1836.0020.0008.0055][.0000.0068.0002.031B] # LATIN CAPITAL LETTER U WITH HORN
+1EE9 ; [.1836.0020.0002.0075][.0000.0068.0002.031B][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EE8 ; [.1836.0020.0008.0055][.0000.0068.0002.031B][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EEB ; [.1836.0020.0002.0075][.0000.0068.0002.031B][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEA ; [.1836.0020.0008.0055][.0000.0068.0002.031B][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEF ; [.1836.0020.0002.0075][.0000.0068.0002.031B][.0000.004E.0002.0303] # LATIN SMALL LETTER U WITH HORN AND TILDE
+1EEE ; [.1836.0020.0008.0055][.0000.0068.0002.031B][.0000.004E.0002.0303] # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EED ; [.1836.0020.0002.0075][.0000.0068.0002.031B][.0000.0064.0002.0309] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEC ; [.1836.0020.0008.0055][.0000.0068.0002.031B][.0000.0064.0002.0309] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EF1 ; [.1836.0020.0002.0075][.0000.0068.0002.031B][.0000.0070.0002.0323] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF0 ; [.1836.0020.0008.0055][.0000.0068.0002.031B][.0000.0070.0002.0323] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EE5 ; [.1836.0020.0002.0075][.0000.0070.0002.0323] # LATIN SMALL LETTER U WITH DOT BELOW
+1EE4 ; [.1836.0020.0008.0055][.0000.0070.0002.0323] # LATIN CAPITAL LETTER U WITH DOT BELOW
+1E73 ; [.1836.0020.0002.0075][.0000.0075.0002.0324] # LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E72 ; [.1836.0020.0008.0055][.0000.0075.0002.0324] # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E77 ; [.1836.0020.0002.0075][.0000.0078.0002.032D] # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E76 ; [.1836.0020.0008.0055][.0000.0078.0002.032D] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E75 ; [.1836.0020.0002.0075][.0000.007A.0002.0330] # LATIN SMALL LETTER U WITH TILDE BELOW
+1E74 ; [.1836.0020.0008.0055][.0000.007A.0002.0330] # LATIN CAPITAL LETTER U WITH TILDE BELOW
+1F199 ; [.1836.0020.001D.1F199][.1796.0020.001D.1F199][*025E.0020.001C.1F199] # SQUARED UP WITH EXCLAMATION MARK
+1D1C ; [.183A.0020.0002.1D1C] # LATIN LETTER SMALL CAPITAL U
+1DB8 ; [.183A.0020.0014.1DB8] # MODIFIER LETTER SMALL CAPITAL U
+1D1D ; [.183B.0020.0002.1D1D] # LATIN SMALL LETTER SIDEWAYS U
+1D59 ; [.183B.0020.0014.1D59] # MODIFIER LETTER SMALL SIDEWAYS U
+1D1E ; [.183C.0020.0002.1D1E] # LATIN SMALL LETTER SIDEWAYS DIAERESIZED U
+1D6B ; [.183D.0020.0002.1D6B] # LATIN SMALL LETTER UE
+0289 ; [.183E.0020.0002.0289] # LATIN SMALL LETTER U BAR
+0244 ; [.183E.0020.0008.0244] # LATIN CAPITAL LETTER U BAR
+1DB6 ; [.183E.0020.0014.1DB6] # MODIFIER LETTER SMALL U BAR
+1D7E ; [.1842.0020.0002.1D7E] # LATIN SMALL CAPITAL LETTER U WITH STROKE
+1D99 ; [.1843.0020.0002.1D99] # LATIN SMALL LETTER U WITH RETROFLEX HOOK
+0265 ; [.1844.0020.0002.0265] # LATIN SMALL LETTER TURNED H
+A78D ; [.1844.0020.0008.A78D] # LATIN CAPITAL LETTER TURNED H
+1DA3 ; [.1844.0020.0014.1DA3] # MODIFIER LETTER SMALL TURNED H
+02AE ; [.1848.0020.0002.02AE] # LATIN SMALL LETTER TURNED H WITH FISHHOOK
+02AF ; [.184C.0020.0002.02AF] # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+026F ; [.1850.0020.0002.026F] # LATIN SMALL LETTER TURNED M
+019C ; [.1850.0020.0008.019C] # LATIN CAPITAL LETTER TURNED M
+1D5A ; [.1850.0020.0014.1D5A] # MODIFIER LETTER SMALL TURNED M
+A7FA ; [.1854.0020.0002.A7FA] # LATIN LETTER SMALL CAPITAL TURNED M
+1D1F ; [.1855.0020.0002.1D1F] # LATIN SMALL LETTER SIDEWAYS TURNED M
+0270 ; [.1856.0020.0002.0270] # LATIN SMALL LETTER TURNED M WITH LONG LEG
+1DAD ; [.1856.0020.0014.1DAD] # MODIFIER LETTER SMALL TURNED M WITH LONG LEG
+028A ; [.185A.0020.0002.028A] # LATIN SMALL LETTER UPSILON
+01B1 ; [.185A.0020.0008.01B1] # LATIN CAPITAL LETTER UPSILON
+1DB7 ; [.185A.0020.0014.1DB7] # MODIFIER LETTER SMALL UPSILON
+1D7F ; [.185E.0020.0002.1D7F] # LATIN SMALL LETTER UPSILON WITH STROKE
+0076 ; [.185F.0020.0002.0076] # LATIN SMALL LETTER V
+FF56 ; [.185F.0020.0003.FF56] # FULLWIDTH LATIN SMALL LETTER V
+036E ; [.185F.0020.0004.036E] # COMBINING LATIN SMALL LETTER V
+2174 ; [.185F.0020.0004.2174] # SMALL ROMAN NUMERAL FIVE
+24B1 ; [*02FB.0020.0004.24B1][.185F.0020.0004.24B1][*02FC.0020.001F.24B1] # PARENTHESIZED LATIN SMALL LETTER V
+1D42F ; [.185F.0020.0005.1D42F] # MATHEMATICAL BOLD SMALL V
+1D463 ; [.185F.0020.0005.1D463] # MATHEMATICAL ITALIC SMALL V
+1D497 ; [.185F.0020.0005.1D497] # MATHEMATICAL BOLD ITALIC SMALL V
+1D4CB ; [.185F.0020.0005.1D4CB] # MATHEMATICAL SCRIPT SMALL V
+1D4FF ; [.185F.0020.0005.1D4FF] # MATHEMATICAL BOLD SCRIPT SMALL V
+1D533 ; [.185F.0020.0005.1D533] # MATHEMATICAL FRAKTUR SMALL V
+1D567 ; [.185F.0020.0005.1D567] # MATHEMATICAL DOUBLE-STRUCK SMALL V
+1D59B ; [.185F.0020.0005.1D59B] # MATHEMATICAL BOLD FRAKTUR SMALL V
+1D5CF ; [.185F.0020.0005.1D5CF] # MATHEMATICAL SANS-SERIF SMALL V
+1D603 ; [.185F.0020.0005.1D603] # MATHEMATICAL SANS-SERIF BOLD SMALL V
+1D637 ; [.185F.0020.0005.1D637] # MATHEMATICAL SANS-SERIF ITALIC SMALL V
+1D66B ; [.185F.0020.0005.1D66B] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
+1D69F ; [.185F.0020.0005.1D69F] # MATHEMATICAL MONOSPACE SMALL V
+24E5 ; [.185F.0020.0006.24E5] # CIRCLED LATIN SMALL LETTER V
+0056 ; [.185F.0020.0008.0056] # LATIN CAPITAL LETTER V
+FF36 ; [.185F.0020.0009.FF36] # FULLWIDTH LATIN CAPITAL LETTER V
+2164 ; [.185F.0020.000A.2164] # ROMAN NUMERAL FIVE
+1F125 ; [*02FB.0020.0004.1F125][.185F.0020.000A.1F125][*02FC.0020.001F.1F125] # PARENTHESIZED LATIN CAPITAL LETTER V
+1D415 ; [.185F.0020.000B.1D415] # MATHEMATICAL BOLD CAPITAL V
+1D449 ; [.185F.0020.000B.1D449] # MATHEMATICAL ITALIC CAPITAL V
+1D47D ; [.185F.0020.000B.1D47D] # MATHEMATICAL BOLD ITALIC CAPITAL V
+1D4B1 ; [.185F.0020.000B.1D4B1] # MATHEMATICAL SCRIPT CAPITAL V
+1D4E5 ; [.185F.0020.000B.1D4E5] # MATHEMATICAL BOLD SCRIPT CAPITAL V
+1D519 ; [.185F.0020.000B.1D519] # MATHEMATICAL FRAKTUR CAPITAL V
+1D54D ; [.185F.0020.000B.1D54D] # MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+1D581 ; [.185F.0020.000B.1D581] # MATHEMATICAL BOLD FRAKTUR CAPITAL V
+1D5B5 ; [.185F.0020.000B.1D5B5] # MATHEMATICAL SANS-SERIF CAPITAL V
+1D5E9 ; [.185F.0020.000B.1D5E9] # MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+1D61D ; [.185F.0020.000B.1D61D] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+1D651 ; [.185F.0020.000B.1D651] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+1D685 ; [.185F.0020.000B.1D685] # MATHEMATICAL MONOSPACE CAPITAL V
+24CB ; [.185F.0020.000C.24CB] # CIRCLED LATIN CAPITAL LETTER V
+1F165 ; [.185F.0020.000C.1F165] # NEGATIVE CIRCLED LATIN CAPITAL LETTER V
+1D5B ; [.185F.0020.0014.1D5B] # MODIFIER LETTER SMALL V
+1D65 ; [.185F.0020.0015.1D65] # LATIN SUBSCRIPT SMALL LETTER V
+2C7D ; [.185F.0020.001D.2C7D] # MODIFIER LETTER CAPITAL V
+1F145 ; [.185F.0020.001D.1F145] # SQUARED LATIN CAPITAL LETTER V
+1F185 ; [.185F.0020.001D.1F185] # NEGATIVE SQUARED LATIN CAPITAL LETTER V
+1E7D ; [.185F.0020.0002.0076][.0000.004E.0002.0303] # LATIN SMALL LETTER V WITH TILDE
+1E7C ; [.185F.0020.0008.0056][.0000.004E.0002.0303] # LATIN CAPITAL LETTER V WITH TILDE
+1E7F ; [.185F.0020.0002.0076][.0000.0070.0002.0323] # LATIN SMALL LETTER V WITH DOT BELOW
+1E7E ; [.185F.0020.0008.0056][.0000.0070.0002.0323] # LATIN CAPITAL LETTER V WITH DOT BELOW
+2175 ; [.185F.0020.0004.2175][.16CD.0020.001F.2175] # SMALL ROMAN NUMERAL SIX
+2165 ; [.185F.0020.000A.2165][.16CD.0020.001F.2165] # ROMAN NUMERAL SIX
+2176 ; [.185F.0020.0004.2176][.16CD.0020.0004.2176][.16CD.0020.001F.2176] # SMALL ROMAN NUMERAL SEVEN
+2166 ; [.185F.0020.000A.2166][.16CD.0020.000A.2166][.16CD.0020.001F.2166] # ROMAN NUMERAL SEVEN
+2177 ; [.185F.0020.0004.2177][.16CD.0020.0004.2177][.16CD.0020.0004.2177][.16CD.0020.001F.2177] # SMALL ROMAN NUMERAL EIGHT
+2167 ; [.185F.0020.000A.2167][.16CD.0020.000A.2167][.16CD.0020.000A.2167][.16CD.0020.001F.2167] # ROMAN NUMERAL EIGHT
+33DE ; [.185F.0020.001D.33DE][*05AB.0020.001C.33DE][.1741.0020.001C.33DE] # SQUARE V OVER M
+1F19A ; [.185F.0020.001D.1F19A][.17F3.0020.001D.1F19A] # SQUARED VS
+A761 ; [.185F.0020.0004.A761][.1880.0020.0004.A761] # LATIN SMALL LETTER VY
+A760 ; [.185F.0020.000A.A760][.1880.0020.000A.A760] # LATIN CAPITAL LETTER VY
+1D20 ; [.1863.0020.0002.1D20] # LATIN LETTER SMALL CAPITAL V
+A75F ; [.1864.0020.0002.A75F] # LATIN SMALL LETTER V WITH DIAGONAL STROKE
+A75E ; [.1864.0020.0008.A75E] # LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
+1D8C ; [.1865.0020.0002.1D8C] # LATIN SMALL LETTER V WITH PALATAL HOOK
+028B ; [.1866.0020.0002.028B] # LATIN SMALL LETTER V WITH HOOK
+01B2 ; [.1866.0020.0008.01B2] # LATIN CAPITAL LETTER V WITH HOOK
+1DB9 ; [.1866.0020.0014.1DB9] # MODIFIER LETTER SMALL V WITH HOOK
+2C71 ; [.186A.0020.0002.2C71] # LATIN SMALL LETTER V WITH RIGHT HOOK
+2C74 ; [.186B.0020.0002.2C74] # LATIN SMALL LETTER V WITH CURL
+1EFD ; [.186C.0020.0002.1EFD] # LATIN SMALL LETTER MIDDLE-WELSH V
+1EFC ; [.186C.0020.0008.1EFC] # LATIN CAPITAL LETTER MIDDLE-WELSH V
+028C ; [.186D.0020.0002.028C] # LATIN SMALL LETTER TURNED V
+0245 ; [.186D.0020.0008.0245] # LATIN CAPITAL LETTER TURNED V
+1DBA ; [.186D.0020.0014.1DBA] # MODIFIER LETTER SMALL TURNED V
+0077 ; [.1871.0020.0002.0077] # LATIN SMALL LETTER W
+FF57 ; [.1871.0020.0003.FF57] # FULLWIDTH LATIN SMALL LETTER W
+24B2 ; [*02FB.0020.0004.24B2][.1871.0020.0004.24B2][*02FC.0020.001F.24B2] # PARENTHESIZED LATIN SMALL LETTER W
+1D430 ; [.1871.0020.0005.1D430] # MATHEMATICAL BOLD SMALL W
+1D464 ; [.1871.0020.0005.1D464] # MATHEMATICAL ITALIC SMALL W
+1D498 ; [.1871.0020.0005.1D498] # MATHEMATICAL BOLD ITALIC SMALL W
+1D4CC ; [.1871.0020.0005.1D4CC] # MATHEMATICAL SCRIPT SMALL W
+1D500 ; [.1871.0020.0005.1D500] # MATHEMATICAL BOLD SCRIPT SMALL W
+1D534 ; [.1871.0020.0005.1D534] # MATHEMATICAL FRAKTUR SMALL W
+1D568 ; [.1871.0020.0005.1D568] # MATHEMATICAL DOUBLE-STRUCK SMALL W
+1D59C ; [.1871.0020.0005.1D59C] # MATHEMATICAL BOLD FRAKTUR SMALL W
+1D5D0 ; [.1871.0020.0005.1D5D0] # MATHEMATICAL SANS-SERIF SMALL W
+1D604 ; [.1871.0020.0005.1D604] # MATHEMATICAL SANS-SERIF BOLD SMALL W
+1D638 ; [.1871.0020.0005.1D638] # MATHEMATICAL SANS-SERIF ITALIC SMALL W
+1D66C ; [.1871.0020.0005.1D66C] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
+1D6A0 ; [.1871.0020.0005.1D6A0] # MATHEMATICAL MONOSPACE SMALL W
+24E6 ; [.1871.0020.0006.24E6] # CIRCLED LATIN SMALL LETTER W
+0057 ; [.1871.0020.0008.0057] # LATIN CAPITAL LETTER W
+FF37 ; [.1871.0020.0009.FF37] # FULLWIDTH LATIN CAPITAL LETTER W
+1F126 ; [*02FB.0020.0004.1F126][.1871.0020.000A.1F126][*02FC.0020.001F.1F126] # PARENTHESIZED LATIN CAPITAL LETTER W
+1D416 ; [.1871.0020.000B.1D416] # MATHEMATICAL BOLD CAPITAL W
+1D44A ; [.1871.0020.000B.1D44A] # MATHEMATICAL ITALIC CAPITAL W
+1D47E ; [.1871.0020.000B.1D47E] # MATHEMATICAL BOLD ITALIC CAPITAL W
+1D4B2 ; [.1871.0020.000B.1D4B2] # MATHEMATICAL SCRIPT CAPITAL W
+1D4E6 ; [.1871.0020.000B.1D4E6] # MATHEMATICAL BOLD SCRIPT CAPITAL W
+1D51A ; [.1871.0020.000B.1D51A] # MATHEMATICAL FRAKTUR CAPITAL W
+1D54E ; [.1871.0020.000B.1D54E] # MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+1D582 ; [.1871.0020.000B.1D582] # MATHEMATICAL BOLD FRAKTUR CAPITAL W
+1D5B6 ; [.1871.0020.000B.1D5B6] # MATHEMATICAL SANS-SERIF CAPITAL W
+1D5EA ; [.1871.0020.000B.1D5EA] # MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+1D61E ; [.1871.0020.000B.1D61E] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+1D652 ; [.1871.0020.000B.1D652] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+1D686 ; [.1871.0020.000B.1D686] # MATHEMATICAL MONOSPACE CAPITAL W
+24CC ; [.1871.0020.000C.24CC] # CIRCLED LATIN CAPITAL LETTER W
+1F166 ; [.1871.0020.000C.1F166] # NEGATIVE CIRCLED LATIN CAPITAL LETTER W
+02B7 ; [.1871.0020.0014.02B7] # MODIFIER LETTER SMALL W
+1D42 ; [.1871.0020.001D.1D42] # MODIFIER LETTER CAPITAL W
+1F146 ; [.1871.0020.001D.1F146] # SQUARED LATIN CAPITAL LETTER W
+1F186 ; [.1871.0020.001D.1F186] # NEGATIVE SQUARED LATIN CAPITAL LETTER W
+1E83 ; [.1871.0020.0002.0077][.0000.0032.0002.0301] # LATIN SMALL LETTER W WITH ACUTE
+1E82 ; [.1871.0020.0008.0057][.0000.0032.0002.0301] # LATIN CAPITAL LETTER W WITH ACUTE
+1E81 ; [.1871.0020.0002.0077][.0000.0035.0002.0300] # LATIN SMALL LETTER W WITH GRAVE
+1E80 ; [.1871.0020.0008.0057][.0000.0035.0002.0300] # LATIN CAPITAL LETTER W WITH GRAVE
+0175 ; [.1871.0020.0002.0077][.0000.003C.0002.0302] # LATIN SMALL LETTER W WITH CIRCUMFLEX
+0174 ; [.1871.0020.0008.0057][.0000.003C.0002.0302] # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+1E98 ; [.1871.0020.0002.0077][.0000.0043.0002.030A] # LATIN SMALL LETTER W WITH RING ABOVE
+1E85 ; [.1871.0020.0002.0077][.0000.0047.0002.0308] # LATIN SMALL LETTER W WITH DIAERESIS
+1E84 ; [.1871.0020.0008.0057][.0000.0047.0002.0308] # LATIN CAPITAL LETTER W WITH DIAERESIS
+1E87 ; [.1871.0020.0002.0077][.0000.0052.0002.0307] # LATIN SMALL LETTER W WITH DOT ABOVE
+1E86 ; [.1871.0020.0008.0057][.0000.0052.0002.0307] # LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E89 ; [.1871.0020.0002.0077][.0000.0070.0002.0323] # LATIN SMALL LETTER W WITH DOT BELOW
+1E88 ; [.1871.0020.0008.0057][.0000.0070.0002.0323] # LATIN CAPITAL LETTER W WITH DOT BELOW
+33DD ; [.1871.0020.001D.33DD][.1605.0020.001C.33DD] # SQUARE WB
+1F14F ; [.1871.0020.001D.1F14F][.161D.0020.001D.1F14F] # SQUARED WC
+1F18F ; [.1871.0020.001D.1F18F][.161D.0020.001D.1F18F] # NEGATIVE SQUARED WC
+1F12E ; [.1871.0020.000C.1F12E][.1895.0020.000C.1F12E] # CIRCLED WZ
+1D21 ; [.1875.0020.0002.1D21] # LATIN LETTER SMALL CAPITAL W
+2C73 ; [.1876.0020.0002.2C73] # LATIN SMALL LETTER W WITH HOOK
+2C72 ; [.1876.0020.0008.2C72] # LATIN CAPITAL LETTER W WITH HOOK
+028D ; [.1877.0020.0002.028D] # LATIN SMALL LETTER TURNED W
+0078 ; [.187B.0020.0002.0078] # LATIN SMALL LETTER X
+FF58 ; [.187B.0020.0003.FF58] # FULLWIDTH LATIN SMALL LETTER X
+036F ; [.187B.0020.0004.036F] # COMBINING LATIN SMALL LETTER X
+2179 ; [.187B.0020.0004.2179] # SMALL ROMAN NUMERAL TEN
+24B3 ; [*02FB.0020.0004.24B3][.187B.0020.0004.24B3][*02FC.0020.001F.24B3] # PARENTHESIZED LATIN SMALL LETTER X
+1D431 ; [.187B.0020.0005.1D431] # MATHEMATICAL BOLD SMALL X
+1D465 ; [.187B.0020.0005.1D465] # MATHEMATICAL ITALIC SMALL X
+1D499 ; [.187B.0020.0005.1D499] # MATHEMATICAL BOLD ITALIC SMALL X
+1D4CD ; [.187B.0020.0005.1D4CD] # MATHEMATICAL SCRIPT SMALL X
+1D501 ; [.187B.0020.0005.1D501] # MATHEMATICAL BOLD SCRIPT SMALL X
+1D535 ; [.187B.0020.0005.1D535] # MATHEMATICAL FRAKTUR SMALL X
+1D569 ; [.187B.0020.0005.1D569] # MATHEMATICAL DOUBLE-STRUCK SMALL X
+1D59D ; [.187B.0020.0005.1D59D] # MATHEMATICAL BOLD FRAKTUR SMALL X
+1D5D1 ; [.187B.0020.0005.1D5D1] # MATHEMATICAL SANS-SERIF SMALL X
+1D605 ; [.187B.0020.0005.1D605] # MATHEMATICAL SANS-SERIF BOLD SMALL X
+1D639 ; [.187B.0020.0005.1D639] # MATHEMATICAL SANS-SERIF ITALIC SMALL X
+1D66D ; [.187B.0020.0005.1D66D] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
+1D6A1 ; [.187B.0020.0005.1D6A1] # MATHEMATICAL MONOSPACE SMALL X
+24E7 ; [.187B.0020.0006.24E7] # CIRCLED LATIN SMALL LETTER X
+0058 ; [.187B.0020.0008.0058] # LATIN CAPITAL LETTER X
+FF38 ; [.187B.0020.0009.FF38] # FULLWIDTH LATIN CAPITAL LETTER X
+2169 ; [.187B.0020.000A.2169] # ROMAN NUMERAL TEN
+1F127 ; [*02FB.0020.0004.1F127][.187B.0020.000A.1F127][*02FC.0020.001F.1F127] # PARENTHESIZED LATIN CAPITAL LETTER X
+1D417 ; [.187B.0020.000B.1D417] # MATHEMATICAL BOLD CAPITAL X
+1D44B ; [.187B.0020.000B.1D44B] # MATHEMATICAL ITALIC CAPITAL X
+1D47F ; [.187B.0020.000B.1D47F] # MATHEMATICAL BOLD ITALIC CAPITAL X
+1D4B3 ; [.187B.0020.000B.1D4B3] # MATHEMATICAL SCRIPT CAPITAL X
+1D4E7 ; [.187B.0020.000B.1D4E7] # MATHEMATICAL BOLD SCRIPT CAPITAL X
+1D51B ; [.187B.0020.000B.1D51B] # MATHEMATICAL FRAKTUR CAPITAL X
+1D54F ; [.187B.0020.000B.1D54F] # MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+1D583 ; [.187B.0020.000B.1D583] # MATHEMATICAL BOLD FRAKTUR CAPITAL X
+1D5B7 ; [.187B.0020.000B.1D5B7] # MATHEMATICAL SANS-SERIF CAPITAL X
+1D5EB ; [.187B.0020.000B.1D5EB] # MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+1D61F ; [.187B.0020.000B.1D61F] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+1D653 ; [.187B.0020.000B.1D653] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+1D687 ; [.187B.0020.000B.1D687] # MATHEMATICAL MONOSPACE CAPITAL X
+24CD ; [.187B.0020.000C.24CD] # CIRCLED LATIN CAPITAL LETTER X
+1F167 ; [.187B.0020.000C.1F167] # NEGATIVE CIRCLED LATIN CAPITAL LETTER X
+02E3 ; [.187B.0020.0014.02E3] # MODIFIER LETTER SMALL X
+2093 ; [.187B.0020.0015.2093] # LATIN SUBSCRIPT SMALL LETTER X
+1F147 ; [.187B.0020.001D.1F147] # SQUARED LATIN CAPITAL LETTER X
+1F187 ; [.187B.0020.001D.1F187] # NEGATIVE SQUARED LATIN CAPITAL LETTER X
+1E8D ; [.187B.0020.0002.0078][.0000.0047.0002.0308] # LATIN SMALL LETTER X WITH DIAERESIS
+1E8C ; [.187B.0020.0008.0058][.0000.0047.0002.0308] # LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8B ; [.187B.0020.0002.0078][.0000.0052.0002.0307] # LATIN SMALL LETTER X WITH DOT ABOVE
+1E8A ; [.187B.0020.0008.0058][.0000.0052.0002.0307] # LATIN CAPITAL LETTER X WITH DOT ABOVE
+217A ; [.187B.0020.0004.217A][.16CD.0020.001F.217A] # SMALL ROMAN NUMERAL ELEVEN
+216A ; [.187B.0020.000A.216A][.16CD.0020.001F.216A] # ROMAN NUMERAL ELEVEN
+217B ; [.187B.0020.0004.217B][.16CD.0020.0004.217B][.16CD.0020.001F.217B] # SMALL ROMAN NUMERAL TWELVE
+216B ; [.187B.0020.000A.216B][.16CD.0020.000A.216B][.16CD.0020.001F.216B] # ROMAN NUMERAL TWELVE
+1D8D ; [.187F.0020.0002.1D8D] # LATIN SMALL LETTER X WITH PALATAL HOOK
+0079 ; [.1880.0020.0002.0079] # LATIN SMALL LETTER Y
+FF59 ; [.1880.0020.0003.FF59] # FULLWIDTH LATIN SMALL LETTER Y
+24B4 ; [*02FB.0020.0004.24B4][.1880.0020.0004.24B4][*02FC.0020.001F.24B4] # PARENTHESIZED LATIN SMALL LETTER Y
+1D432 ; [.1880.0020.0005.1D432] # MATHEMATICAL BOLD SMALL Y
+1D466 ; [.1880.0020.0005.1D466] # MATHEMATICAL ITALIC SMALL Y
+1D49A ; [.1880.0020.0005.1D49A] # MATHEMATICAL BOLD ITALIC SMALL Y
+1D4CE ; [.1880.0020.0005.1D4CE] # MATHEMATICAL SCRIPT SMALL Y
+1D502 ; [.1880.0020.0005.1D502] # MATHEMATICAL BOLD SCRIPT SMALL Y
+1D536 ; [.1880.0020.0005.1D536] # MATHEMATICAL FRAKTUR SMALL Y
+1D56A ; [.1880.0020.0005.1D56A] # MATHEMATICAL DOUBLE-STRUCK SMALL Y
+1D59E ; [.1880.0020.0005.1D59E] # MATHEMATICAL BOLD FRAKTUR SMALL Y
+1D5D2 ; [.1880.0020.0005.1D5D2] # MATHEMATICAL SANS-SERIF SMALL Y
+1D606 ; [.1880.0020.0005.1D606] # MATHEMATICAL SANS-SERIF BOLD SMALL Y
+1D63A ; [.1880.0020.0005.1D63A] # MATHEMATICAL SANS-SERIF ITALIC SMALL Y
+1D66E ; [.1880.0020.0005.1D66E] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
+1D6A2 ; [.1880.0020.0005.1D6A2] # MATHEMATICAL MONOSPACE SMALL Y
+24E8 ; [.1880.0020.0006.24E8] # CIRCLED LATIN SMALL LETTER Y
+0059 ; [.1880.0020.0008.0059] # LATIN CAPITAL LETTER Y
+FF39 ; [.1880.0020.0009.FF39] # FULLWIDTH LATIN CAPITAL LETTER Y
+1F128 ; [*02FB.0020.0004.1F128][.1880.0020.000A.1F128][*02FC.0020.001F.1F128] # PARENTHESIZED LATIN CAPITAL LETTER Y
+1D418 ; [.1880.0020.000B.1D418] # MATHEMATICAL BOLD CAPITAL Y
+1D44C ; [.1880.0020.000B.1D44C] # MATHEMATICAL ITALIC CAPITAL Y
+1D480 ; [.1880.0020.000B.1D480] # MATHEMATICAL BOLD ITALIC CAPITAL Y
+1D4B4 ; [.1880.0020.000B.1D4B4] # MATHEMATICAL SCRIPT CAPITAL Y
+1D4E8 ; [.1880.0020.000B.1D4E8] # MATHEMATICAL BOLD SCRIPT CAPITAL Y
+1D51C ; [.1880.0020.000B.1D51C] # MATHEMATICAL FRAKTUR CAPITAL Y
+1D550 ; [.1880.0020.000B.1D550] # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D584 ; [.1880.0020.000B.1D584] # MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+1D5B8 ; [.1880.0020.000B.1D5B8] # MATHEMATICAL SANS-SERIF CAPITAL Y
+1D5EC ; [.1880.0020.000B.1D5EC] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+1D620 ; [.1880.0020.000B.1D620] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+1D654 ; [.1880.0020.000B.1D654] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+1D688 ; [.1880.0020.000B.1D688] # MATHEMATICAL MONOSPACE CAPITAL Y
+24CE ; [.1880.0020.000C.24CE] # CIRCLED LATIN CAPITAL LETTER Y
+1F168 ; [.1880.0020.000C.1F168] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Y
+02B8 ; [.1880.0020.0014.02B8] # MODIFIER LETTER SMALL Y
+1F148 ; [.1880.0020.001D.1F148] # SQUARED LATIN CAPITAL LETTER Y
+1F188 ; [.1880.0020.001D.1F188] # NEGATIVE SQUARED LATIN CAPITAL LETTER Y
+00FD ; [.1880.0020.0002.0079][.0000.0032.0002.0301] # LATIN SMALL LETTER Y WITH ACUTE
+00DD ; [.1880.0020.0008.0059][.0000.0032.0002.0301] # LATIN CAPITAL LETTER Y WITH ACUTE
+1EF3 ; [.1880.0020.0002.0079][.0000.0035.0002.0300] # LATIN SMALL LETTER Y WITH GRAVE
+1EF2 ; [.1880.0020.0008.0059][.0000.0035.0002.0300] # LATIN CAPITAL LETTER Y WITH GRAVE
+0177 ; [.1880.0020.0002.0079][.0000.003C.0002.0302] # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0176 ; [.1880.0020.0008.0059][.0000.003C.0002.0302] # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+1E99 ; [.1880.0020.0002.0079][.0000.0043.0002.030A] # LATIN SMALL LETTER Y WITH RING ABOVE
+00FF ; [.1880.0020.0002.0079][.0000.0047.0002.0308] # LATIN SMALL LETTER Y WITH DIAERESIS
+0178 ; [.1880.0020.0008.0059][.0000.0047.0002.0308] # LATIN CAPITAL LETTER Y WITH DIAERESIS
+1EF9 ; [.1880.0020.0002.0079][.0000.004E.0002.0303] # LATIN SMALL LETTER Y WITH TILDE
+1EF8 ; [.1880.0020.0008.0059][.0000.004E.0002.0303] # LATIN CAPITAL LETTER Y WITH TILDE
+1E8F ; [.1880.0020.0002.0079][.0000.0052.0002.0307] # LATIN SMALL LETTER Y WITH DOT ABOVE
+1E8E ; [.1880.0020.0008.0059][.0000.0052.0002.0307] # LATIN CAPITAL LETTER Y WITH DOT ABOVE
+0233 ; [.1880.0020.0002.0079][.0000.005B.0002.0304] # LATIN SMALL LETTER Y WITH MACRON
+0232 ; [.1880.0020.0008.0059][.0000.005B.0002.0304] # LATIN CAPITAL LETTER Y WITH MACRON
+1EF7 ; [.1880.0020.0002.0079][.0000.0064.0002.0309] # LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF6 ; [.1880.0020.0008.0059][.0000.0064.0002.0309] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF5 ; [.1880.0020.0002.0079][.0000.0070.0002.0323] # LATIN SMALL LETTER Y WITH DOT BELOW
+1EF4 ; [.1880.0020.0008.0059][.0000.0070.0002.0323] # LATIN CAPITAL LETTER Y WITH DOT BELOW
+028F ; [.1884.0020.0002.028F] # LATIN LETTER SMALL CAPITAL Y
+024F ; [.1888.0020.0002.024F] # LATIN SMALL LETTER Y WITH STROKE
+024E ; [.1888.0020.0008.024E] # LATIN CAPITAL LETTER Y WITH STROKE
+01B4 ; [.188C.0020.0002.01B4] # LATIN SMALL LETTER Y WITH HOOK
+01B3 ; [.188C.0020.0008.01B3] # LATIN CAPITAL LETTER Y WITH HOOK
+1EFF ; [.1890.0020.0002.1EFF] # LATIN SMALL LETTER Y WITH LOOP
+1EFE ; [.1890.0020.0008.1EFE] # LATIN CAPITAL LETTER Y WITH LOOP
+021D ; [.1891.0020.0002.021D] # LATIN SMALL LETTER YOGH
+021C ; [.1891.0020.0008.021C] # LATIN CAPITAL LETTER YOGH
+007A ; [.1895.0020.0002.007A] # LATIN SMALL LETTER Z
+FF5A ; [.1895.0020.0003.FF5A] # FULLWIDTH LATIN SMALL LETTER Z
+1DE6 ; [.1895.0020.0004.1DE6] # COMBINING LATIN SMALL LETTER Z
+24B5 ; [*02FB.0020.0004.24B5][.1895.0020.0004.24B5][*02FC.0020.001F.24B5] # PARENTHESIZED LATIN SMALL LETTER Z
+1D433 ; [.1895.0020.0005.1D433] # MATHEMATICAL BOLD SMALL Z
+1D467 ; [.1895.0020.0005.1D467] # MATHEMATICAL ITALIC SMALL Z
+1D49B ; [.1895.0020.0005.1D49B] # MATHEMATICAL BOLD ITALIC SMALL Z
+1D4CF ; [.1895.0020.0005.1D4CF] # MATHEMATICAL SCRIPT SMALL Z
+1D503 ; [.1895.0020.0005.1D503] # MATHEMATICAL BOLD SCRIPT SMALL Z
+1D537 ; [.1895.0020.0005.1D537] # MATHEMATICAL FRAKTUR SMALL Z
+1D56B ; [.1895.0020.0005.1D56B] # MATHEMATICAL DOUBLE-STRUCK SMALL Z
+1D59F ; [.1895.0020.0005.1D59F] # MATHEMATICAL BOLD FRAKTUR SMALL Z
+1D5D3 ; [.1895.0020.0005.1D5D3] # MATHEMATICAL SANS-SERIF SMALL Z
+1D607 ; [.1895.0020.0005.1D607] # MATHEMATICAL SANS-SERIF BOLD SMALL Z
+1D63B ; [.1895.0020.0005.1D63B] # MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+1D66F ; [.1895.0020.0005.1D66F] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+1D6A3 ; [.1895.0020.0005.1D6A3] # MATHEMATICAL MONOSPACE SMALL Z
+24E9 ; [.1895.0020.0006.24E9] # CIRCLED LATIN SMALL LETTER Z
+005A ; [.1895.0020.0008.005A] # LATIN CAPITAL LETTER Z
+FF3A ; [.1895.0020.0009.FF3A] # FULLWIDTH LATIN CAPITAL LETTER Z
+1F129 ; [*02FB.0020.0004.1F129][.1895.0020.000A.1F129][*02FC.0020.001F.1F129] # PARENTHESIZED LATIN CAPITAL LETTER Z
+2124 ; [.1895.0020.000B.2124] # DOUBLE-STRUCK CAPITAL Z
+2128 ; [.1895.0020.000B.2128] # BLACK-LETTER CAPITAL Z
+1D419 ; [.1895.0020.000B.1D419] # MATHEMATICAL BOLD CAPITAL Z
+1D44D ; [.1895.0020.000B.1D44D] # MATHEMATICAL ITALIC CAPITAL Z
+1D481 ; [.1895.0020.000B.1D481] # MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D4B5 ; [.1895.0020.000B.1D4B5] # MATHEMATICAL SCRIPT CAPITAL Z
+1D4E9 ; [.1895.0020.000B.1D4E9] # MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D585 ; [.1895.0020.000B.1D585] # MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D5B9 ; [.1895.0020.000B.1D5B9] # MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5ED ; [.1895.0020.000B.1D5ED] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D621 ; [.1895.0020.000B.1D621] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D655 ; [.1895.0020.000B.1D655] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D689 ; [.1895.0020.000B.1D689] # MATHEMATICAL MONOSPACE CAPITAL Z
+24CF ; [.1895.0020.000C.24CF] # CIRCLED LATIN CAPITAL LETTER Z
+1F169 ; [.1895.0020.000C.1F169] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
+1DBB ; [.1895.0020.0014.1DBB] # MODIFIER LETTER SMALL Z
+1F149 ; [.1895.0020.001D.1F149] # SQUARED LATIN CAPITAL LETTER Z
+1F189 ; [.1895.0020.001D.1F189] # NEGATIVE SQUARED LATIN CAPITAL LETTER Z
+017A ; [.1895.0020.0002.007A][.0000.0032.0002.0301] # LATIN SMALL LETTER Z WITH ACUTE
+0179 ; [.1895.0020.0008.005A][.0000.0032.0002.0301] # LATIN CAPITAL LETTER Z WITH ACUTE
+1E91 ; [.1895.0020.0002.007A][.0000.003C.0002.0302] # LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E90 ; [.1895.0020.0008.005A][.0000.003C.0002.0302] # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+017E ; [.1895.0020.0002.007A][.0000.0041.0002.030C] # LATIN SMALL LETTER Z WITH CARON
+017D ; [.1895.0020.0008.005A][.0000.0041.0002.030C] # LATIN CAPITAL LETTER Z WITH CARON
+017C ; [.1895.0020.0002.007A][.0000.0052.0002.0307] # LATIN SMALL LETTER Z WITH DOT ABOVE
+017B ; [.1895.0020.0008.005A][.0000.0052.0002.0307] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+1E93 ; [.1895.0020.0002.007A][.0000.0070.0002.0323] # LATIN SMALL LETTER Z WITH DOT BELOW
+1E92 ; [.1895.0020.0008.005A][.0000.0070.0002.0323] # LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E95 ; [.1895.0020.0002.007A][.0000.007B.0002.0331] # LATIN SMALL LETTER Z WITH LINE BELOW
+1E94 ; [.1895.0020.0008.005A][.0000.007B.0002.0331] # LATIN CAPITAL LETTER Z WITH LINE BELOW
+018D ; [.1895.0020.0004.018D][.1871.0020.0004.018D] # LATIN SMALL LETTER TURNED DELTA
+1D22 ; [.1899.0020.0002.1D22] # LATIN LETTER SMALL CAPITAL Z
+01B6 ; [.189A.0020.0002.01B6] # LATIN SMALL LETTER Z WITH STROKE
+01B5 ; [.189A.0020.0008.01B5] # LATIN CAPITAL LETTER Z WITH STROKE
+1D76 ; [.189E.0020.0002.1D76] # LATIN SMALL LETTER Z WITH MIDDLE TILDE
+1D8E ; [.189F.0020.0002.1D8E] # LATIN SMALL LETTER Z WITH PALATAL HOOK
+0225 ; [.18A0.0020.0002.0225] # LATIN SMALL LETTER Z WITH HOOK
+0224 ; [.18A0.0020.0008.0224] # LATIN CAPITAL LETTER Z WITH HOOK
+0290 ; [.18A4.0020.0002.0290] # LATIN SMALL LETTER Z WITH RETROFLEX HOOK
+1DBC ; [.18A4.0020.0014.1DBC] # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
+0291 ; [.18A8.0020.0002.0291] # LATIN SMALL LETTER Z WITH CURL
+1DBD ; [.18A8.0020.0014.1DBD] # MODIFIER LETTER SMALL Z WITH CURL
+0240 ; [.18AC.0020.0002.0240] # LATIN SMALL LETTER Z WITH SWASH TAIL
+2C7F ; [.18AC.0020.0008.2C7F] # LATIN CAPITAL LETTER Z WITH SWASH TAIL
+2C6C ; [.18B0.0020.0002.2C6C] # LATIN SMALL LETTER Z WITH DESCENDER
+2C6B ; [.18B0.0020.0008.2C6B] # LATIN CAPITAL LETTER Z WITH DESCENDER
+A763 ; [.18B1.0020.0002.A763] # LATIN SMALL LETTER VISIGOTHIC Z
+A762 ; [.18B1.0020.0008.A762] # LATIN CAPITAL LETTER VISIGOTHIC Z
+0292 ; [.18B2.0020.0002.0292] # LATIN SMALL LETTER EZH
+01B7 ; [.18B2.0020.0008.01B7] # LATIN CAPITAL LETTER EZH
+1DBE ; [.18B2.0020.0014.1DBE] # MODIFIER LETTER SMALL EZH
+01EF ; [.18B2.0020.0002.0292][.0000.0041.0002.030C] # LATIN SMALL LETTER EZH WITH CARON
+01EE ; [.18B2.0020.0008.01B7][.0000.0041.0002.030C] # LATIN CAPITAL LETTER EZH WITH CARON
+1D23 ; [.18B6.0020.0002.1D23] # LATIN LETTER SMALL CAPITAL EZH
+01B9 ; [.18B7.0020.0002.01B9] # LATIN SMALL LETTER EZH REVERSED
+01B8 ; [.18B7.0020.0008.01B8] # LATIN CAPITAL LETTER EZH REVERSED
+1D9A ; [.18BB.0020.0002.1D9A] # LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+01BA ; [.18BC.0020.0002.01BA] # LATIN SMALL LETTER EZH WITH TAIL
+0293 ; [.18C0.0020.0002.0293] # LATIN SMALL LETTER EZH WITH CURL
+00FE ; [.18C4.0020.0002.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.18C4.0020.0008.00DE] # LATIN CAPITAL LETTER THORN
+A765 ; [.18C8.0020.0002.A765] # LATIN SMALL LETTER THORN WITH STROKE
+A764 ; [.18C8.0020.0008.A764] # LATIN CAPITAL LETTER THORN WITH STROKE
+A767 ; [.18C9.0020.0002.A767] # LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
+A766 ; [.18C9.0020.0008.A766] # LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
+01BF ; [.18CA.0020.0002.01BF] # LATIN LETTER WYNN
+01F7 ; [.18CA.0020.0008.01F7] # LATIN CAPITAL LETTER WYNN
+A769 ; [.18CE.0020.0002.A769] # LATIN SMALL LETTER VEND
+A768 ; [.18CE.0020.0008.A768] # LATIN CAPITAL LETTER VEND
+A76B ; [.18CF.0020.0002.A76B] # LATIN SMALL LETTER ET
+A76A ; [.18CF.0020.0008.A76A] # LATIN CAPITAL LETTER ET
+A76D ; [.18D0.0020.0002.A76D] # LATIN SMALL LETTER IS
+A76C ; [.18D0.0020.0008.A76C] # LATIN CAPITAL LETTER IS
+A76F ; [.18D1.0020.0002.A76F] # LATIN SMALL LETTER CON
+1DD2 ; [.18D1.0020.0004.1DD2] # COMBINING US ABOVE
+A76E ; [.18D1.0020.0008.A76E] # LATIN CAPITAL LETTER CON
+A770 ; [.18D1.0020.0014.A770] # MODIFIER LETTER US
+A778 ; [.18D2.0020.0002.A778] # LATIN SMALL LETTER UM
+01BB ; [.18D3.0020.0002.01BB] # LATIN LETTER TWO WITH STROKE
+A72B ; [.18D7.0020.0002.A72B] # LATIN SMALL LETTER TRESILLO
+A72A ; [.18D7.0020.0008.A72A] # LATIN CAPITAL LETTER TRESILLO
+A72D ; [.18D8.0020.0002.A72D] # LATIN SMALL LETTER CUATRILLO
+A72C ; [.18D8.0020.0008.A72C] # LATIN CAPITAL LETTER CUATRILLO
+A72F ; [.18D9.0020.0002.A72F] # LATIN SMALL LETTER CUATRILLO WITH COMMA
+A72E ; [.18D9.0020.0008.A72E] # LATIN CAPITAL LETTER CUATRILLO WITH COMMA
+01A8 ; [.18DA.0020.0002.01A8] # LATIN SMALL LETTER TONE TWO
+01A7 ; [.18DA.0020.0008.01A7] # LATIN CAPITAL LETTER TONE TWO
+01BD ; [.18DE.0020.0002.01BD] # LATIN SMALL LETTER TONE FIVE
+01BC ; [.18DE.0020.0008.01BC] # LATIN CAPITAL LETTER TONE FIVE
+0185 ; [.18E2.0020.0002.0185] # LATIN SMALL LETTER TONE SIX
+0184 ; [.18E2.0020.0008.0184] # LATIN CAPITAL LETTER TONE SIX
+0294 ; [.18E6.0020.0002.0294] # LATIN LETTER GLOTTAL STOP
+0242 ; [.18EA.0020.0002.0242] # LATIN SMALL LETTER GLOTTAL STOP
+0241 ; [.18EA.0020.0008.0241] # LATIN CAPITAL LETTER GLOTTAL STOP
+02C0 ; [.18EE.0020.0002.02C0] # MODIFIER LETTER GLOTTAL STOP
+02BC ; [.18EF.0020.0002.02BC] # MODIFIER LETTER APOSTROPHE
+0149 ; [.18EF.0020.0004.0149][.174F.0020.0004.0149] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+02EE ; [.18F0.0020.0002.02EE] # MODIFIER LETTER DOUBLE APOSTROPHE
+02BE ; [.18F1.0020.0002.02BE] # MODIFIER LETTER RIGHT HALF RING
+A723 ; [.18F2.0020.0002.A723] # LATIN SMALL LETTER EGYPTOLOGICAL ALEF
+A722 ; [.18F2.0020.0008.A722] # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
+A78C ; [.18F3.0020.0002.A78C] # LATIN SMALL LETTER SALTILLO
+A78B ; [.18F3.0020.0008.A78B] # LATIN CAPITAL LETTER SALTILLO
+0295 ; [.18F4.0020.0002.0295] # LATIN LETTER PHARYNGEAL VOICED FRICATIVE
+02E4 ; [.18F4.0020.0014.02E4] # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02BF ; [.18F8.0020.0002.02BF] # MODIFIER LETTER LEFT HALF RING
+02C1 ; [.18F9.0020.0002.02C1] # MODIFIER LETTER REVERSED GLOTTAL STOP
+1D24 ; [.18FA.0020.0002.1D24] # LATIN LETTER VOICED LARYNGEAL SPIRANT
+1D25 ; [.18FB.0020.0002.1D25] # LATIN LETTER AIN
+1D5C ; [.18FB.0020.0014.1D5C] # MODIFIER LETTER SMALL AIN
+A725 ; [.18FC.0020.0002.A725] # LATIN SMALL LETTER EGYPTOLOGICAL AIN
+A724 ; [.18FC.0020.0008.A724] # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
+02A1 ; [.18FD.0020.0002.02A1] # LATIN LETTER GLOTTAL STOP WITH STROKE
+02A2 ; [.1901.0020.0002.02A2] # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
+0296 ; [.1905.0020.0002.0296] # LATIN LETTER INVERTED GLOTTAL STOP
+01C0 ; [.1909.0020.0002.01C0] # LATIN LETTER DENTAL CLICK
+01C1 ; [.190D.0020.0002.01C1] # LATIN LETTER LATERAL CLICK
+01C2 ; [.1911.0020.0002.01C2] # LATIN LETTER ALVEOLAR CLICK
+01C3 ; [.1915.0020.0002.01C3] # LATIN LETTER RETROFLEX CLICK
+0297 ; [.1919.0020.0002.0297] # LATIN LETTER STRETCHED C
+0298 ; [.191D.0020.0002.0298] # LATIN LETTER BILABIAL CLICK
+02AC ; [.1921.0020.0002.02AC] # LATIN LETTER BILABIAL PERCUSSIVE
+02AD ; [.1925.0020.0002.02AD] # LATIN LETTER BIDENTAL PERCUSSIVE
+03B1 ; [.1929.0020.0002.03B1] # GREEK SMALL LETTER ALPHA
+1D6C2 ; [.1929.0020.0005.1D6C2] # MATHEMATICAL BOLD SMALL ALPHA
+1D6FC ; [.1929.0020.0005.1D6FC] # MATHEMATICAL ITALIC SMALL ALPHA
+1D736 ; [.1929.0020.0005.1D736] # MATHEMATICAL BOLD ITALIC SMALL ALPHA
+1D770 ; [.1929.0020.0005.1D770] # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
+1D7AA ; [.1929.0020.0005.1D7AA] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
+0391 ; [.1929.0020.0008.0391] # GREEK CAPITAL LETTER ALPHA
+1D6A8 ; [.1929.0020.000B.1D6A8] # MATHEMATICAL BOLD CAPITAL ALPHA
+1D6E2 ; [.1929.0020.000B.1D6E2] # MATHEMATICAL ITALIC CAPITAL ALPHA
+1D71C ; [.1929.0020.000B.1D71C] # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+1D756 ; [.1929.0020.000B.1D756] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+1D790 ; [.1929.0020.000B.1D790] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+1F00 ; [.1929.0020.0002.03B1][.0000.0022.0002.0313] # GREEK SMALL LETTER ALPHA WITH PSILI
+1F08 ; [.1929.0020.0008.0391][.0000.0022.0002.0313] # GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F04 ; [.1929.0020.0002.03B1][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+1F0C ; [.1929.0020.0008.0391][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F84 ; [.1929.0020.0002.03B1][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F8C ; [.1929.0020.0008.0391][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F02 ; [.1929.0020.0002.03B1][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+1F0A ; [.1929.0020.0008.0391][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F82 ; [.1929.0020.0002.03B1][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F8A ; [.1929.0020.0008.0391][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F06 ; [.1929.0020.0002.03B1][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0E ; [.1929.0020.0008.0391][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F86 ; [.1929.0020.0002.03B1][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F8E ; [.1929.0020.0008.0391][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F80 ; [.1929.0020.0002.03B1][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F88 ; [.1929.0020.0008.0391][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F01 ; [.1929.0020.0002.03B1][.0000.002A.0002.0314] # GREEK SMALL LETTER ALPHA WITH DASIA
+1F09 ; [.1929.0020.0008.0391][.0000.002A.0002.0314] # GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F05 ; [.1929.0020.0002.03B1][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+1F0D ; [.1929.0020.0008.0391][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F85 ; [.1929.0020.0002.03B1][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F8D ; [.1929.0020.0008.0391][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F03 ; [.1929.0020.0002.03B1][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+1F0B ; [.1929.0020.0008.0391][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F83 ; [.1929.0020.0002.03B1][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F8B ; [.1929.0020.0008.0391][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F07 ; [.1929.0020.0002.03B1][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F0F ; [.1929.0020.0008.0391][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F87 ; [.1929.0020.0002.03B1][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F8F ; [.1929.0020.0008.0391][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F81 ; [.1929.0020.0002.03B1][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F89 ; [.1929.0020.0008.0391][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+03AC ; [.1929.0020.0002.03B1][.0000.0032.0002.0301] # GREEK SMALL LETTER ALPHA WITH TONOS
+1F71 ; [.1929.0020.0002.03B1][.0000.0032.0002.0301] # GREEK SMALL LETTER ALPHA WITH OXIA
+0386 ; [.1929.0020.0008.0391][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ALPHA WITH TONOS
+1FBB ; [.1929.0020.0008.0391][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FB4 ; [.1929.0020.0002.03B1][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1F70 ; [.1929.0020.0002.03B1][.0000.0035.0002.0300] # GREEK SMALL LETTER ALPHA WITH VARIA
+1FBA ; [.1929.0020.0008.0391][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FB2 ; [.1929.0020.0002.03B1][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB0 ; [.1929.0020.0002.03B1][.0000.0037.0002.0306] # GREEK SMALL LETTER ALPHA WITH VRACHY
+1FB8 ; [.1929.0020.0008.0391][.0000.0037.0002.0306] # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB6 ; [.1929.0020.0002.03B1][.0000.0045.0002.0342] # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7 ; [.1929.0020.0002.03B1][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB1 ; [.1929.0020.0002.03B1][.0000.005B.0002.0304] # GREEK SMALL LETTER ALPHA WITH MACRON
+1FB9 ; [.1929.0020.0008.0391][.0000.005B.0002.0304] # GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FB3 ; [.1929.0020.0002.03B1][.0000.007F.0002.0345] # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FBC ; [.1929.0020.0008.0391][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+03B2 ; [.192A.0020.0002.03B2] # GREEK SMALL LETTER BETA
+03D0 ; [.192A.0020.0004.03D0] # GREEK BETA SYMBOL
+1D6C3 ; [.192A.0020.0005.1D6C3] # MATHEMATICAL BOLD SMALL BETA
+1D6FD ; [.192A.0020.0005.1D6FD] # MATHEMATICAL ITALIC SMALL BETA
+1D737 ; [.192A.0020.0005.1D737] # MATHEMATICAL BOLD ITALIC SMALL BETA
+1D771 ; [.192A.0020.0005.1D771] # MATHEMATICAL SANS-SERIF BOLD SMALL BETA
+1D7AB ; [.192A.0020.0005.1D7AB] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
+0392 ; [.192A.0020.0008.0392] # GREEK CAPITAL LETTER BETA
+1D6A9 ; [.192A.0020.000B.1D6A9] # MATHEMATICAL BOLD CAPITAL BETA
+1D6E3 ; [.192A.0020.000B.1D6E3] # MATHEMATICAL ITALIC CAPITAL BETA
+1D71D ; [.192A.0020.000B.1D71D] # MATHEMATICAL BOLD ITALIC CAPITAL BETA
+1D757 ; [.192A.0020.000B.1D757] # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+1D791 ; [.192A.0020.000B.1D791] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+1D5D ; [.192A.0020.0014.1D5D] # MODIFIER LETTER SMALL BETA
+1D66 ; [.192A.0020.0015.1D66] # GREEK SUBSCRIPT SMALL LETTER BETA
+03B3 ; [.192B.0020.0002.03B3] # GREEK SMALL LETTER GAMMA
+213D ; [.192B.0020.0005.213D] # DOUBLE-STRUCK SMALL GAMMA
+1D6C4 ; [.192B.0020.0005.1D6C4] # MATHEMATICAL BOLD SMALL GAMMA
+1D6FE ; [.192B.0020.0005.1D6FE] # MATHEMATICAL ITALIC SMALL GAMMA
+1D738 ; [.192B.0020.0005.1D738] # MATHEMATICAL BOLD ITALIC SMALL GAMMA
+1D772 ; [.192B.0020.0005.1D772] # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
+1D7AC ; [.192B.0020.0005.1D7AC] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
+0393 ; [.192B.0020.0008.0393] # GREEK CAPITAL LETTER GAMMA
+213E ; [.192B.0020.000B.213E] # DOUBLE-STRUCK CAPITAL GAMMA
+1D6AA ; [.192B.0020.000B.1D6AA] # MATHEMATICAL BOLD CAPITAL GAMMA
+1D6E4 ; [.192B.0020.000B.1D6E4] # MATHEMATICAL ITALIC CAPITAL GAMMA
+1D71E ; [.192B.0020.000B.1D71E] # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+1D758 ; [.192B.0020.000B.1D758] # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+1D792 ; [.192B.0020.000B.1D792] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+1D5E ; [.192B.0020.0014.1D5E] # MODIFIER LETTER SMALL GREEK GAMMA
+1D67 ; [.192B.0020.0015.1D67] # GREEK SUBSCRIPT SMALL LETTER GAMMA
+1D26 ; [.192C.0020.0002.1D26] # GREEK LETTER SMALL CAPITAL GAMMA
+03B4 ; [.192D.0020.0002.03B4] # GREEK SMALL LETTER DELTA
+1D6C5 ; [.192D.0020.0005.1D6C5] # MATHEMATICAL BOLD SMALL DELTA
+1D6FF ; [.192D.0020.0005.1D6FF] # MATHEMATICAL ITALIC SMALL DELTA
+1D739 ; [.192D.0020.0005.1D739] # MATHEMATICAL BOLD ITALIC SMALL DELTA
+1D773 ; [.192D.0020.0005.1D773] # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
+1D7AD ; [.192D.0020.0005.1D7AD] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
+0394 ; [.192D.0020.0008.0394] # GREEK CAPITAL LETTER DELTA
+1D6AB ; [.192D.0020.000B.1D6AB] # MATHEMATICAL BOLD CAPITAL DELTA
+1D6E5 ; [.192D.0020.000B.1D6E5] # MATHEMATICAL ITALIC CAPITAL DELTA
+1D71F ; [.192D.0020.000B.1D71F] # MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+1D759 ; [.192D.0020.000B.1D759] # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+1D793 ; [.192D.0020.000B.1D793] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+1D5F ; [.192D.0020.0014.1D5F] # MODIFIER LETTER SMALL DELTA
+03B5 ; [.192E.0020.0002.03B5] # GREEK SMALL LETTER EPSILON
+03F5 ; [.192E.0020.0004.03F5] # GREEK LUNATE EPSILON SYMBOL
+1D6C6 ; [.192E.0020.0005.1D6C6] # MATHEMATICAL BOLD SMALL EPSILON
+1D6DC ; [.192E.0020.0005.1D6DC] # MATHEMATICAL BOLD EPSILON SYMBOL
+1D700 ; [.192E.0020.0005.1D700] # MATHEMATICAL ITALIC SMALL EPSILON
+1D716 ; [.192E.0020.0005.1D716] # MATHEMATICAL ITALIC EPSILON SYMBOL
+1D73A ; [.192E.0020.0005.1D73A] # MATHEMATICAL BOLD ITALIC SMALL EPSILON
+1D750 ; [.192E.0020.0005.1D750] # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
+1D774 ; [.192E.0020.0005.1D774] # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
+1D78A ; [.192E.0020.0005.1D78A] # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
+1D7AE ; [.192E.0020.0005.1D7AE] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
+1D7C4 ; [.192E.0020.0005.1D7C4] # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
+0395 ; [.192E.0020.0008.0395] # GREEK CAPITAL LETTER EPSILON
+1D6AC ; [.192E.0020.000B.1D6AC] # MATHEMATICAL BOLD CAPITAL EPSILON
+1D6E6 ; [.192E.0020.000B.1D6E6] # MATHEMATICAL ITALIC CAPITAL EPSILON
+1D720 ; [.192E.0020.000B.1D720] # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+1D75A ; [.192E.0020.000B.1D75A] # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+1D794 ; [.192E.0020.000B.1D794] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+1F10 ; [.192E.0020.0002.03B5][.0000.0022.0002.0313] # GREEK SMALL LETTER EPSILON WITH PSILI
+1F18 ; [.192E.0020.0008.0395][.0000.0022.0002.0313] # GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F14 ; [.192E.0020.0002.03B5][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+1F1C ; [.192E.0020.0008.0395][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F12 ; [.192E.0020.0002.03B5][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+1F1A ; [.192E.0020.0008.0395][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F11 ; [.192E.0020.0002.03B5][.0000.002A.0002.0314] # GREEK SMALL LETTER EPSILON WITH DASIA
+1F19 ; [.192E.0020.0008.0395][.0000.002A.0002.0314] # GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F15 ; [.192E.0020.0002.03B5][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F1D ; [.192E.0020.0008.0395][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F13 ; [.192E.0020.0002.03B5][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+1F1B ; [.192E.0020.0008.0395][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+03AD ; [.192E.0020.0002.03B5][.0000.0032.0002.0301] # GREEK SMALL LETTER EPSILON WITH TONOS
+1F73 ; [.192E.0020.0002.03B5][.0000.0032.0002.0301] # GREEK SMALL LETTER EPSILON WITH OXIA
+0388 ; [.192E.0020.0008.0395][.0000.0032.0002.0301] # GREEK CAPITAL LETTER EPSILON WITH TONOS
+1FC9 ; [.192E.0020.0008.0395][.0000.0032.0002.0301] # GREEK CAPITAL LETTER EPSILON WITH OXIA
+1F72 ; [.192E.0020.0002.03B5][.0000.0035.0002.0300] # GREEK SMALL LETTER EPSILON WITH VARIA
+1FC8 ; [.192E.0020.0008.0395][.0000.0035.0002.0300] # GREEK CAPITAL LETTER EPSILON WITH VARIA
+03DD ; [.192F.0020.0002.03DD] # GREEK SMALL LETTER DIGAMMA
+1D7CB ; [.192F.0020.0005.1D7CB] # MATHEMATICAL BOLD SMALL DIGAMMA
+03DC ; [.192F.0020.0008.03DC] # GREEK LETTER DIGAMMA
+1D7CA ; [.192F.0020.000B.1D7CA] # MATHEMATICAL BOLD CAPITAL DIGAMMA
+0377 ; [.1930.0020.0002.0377] # GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+0376 ; [.1930.0020.0008.0376] # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
+03DB ; [.1931.0020.0002.03DB] # GREEK SMALL LETTER STIGMA
+03DA ; [.1931.0020.0008.03DA] # GREEK LETTER STIGMA
+03B6 ; [.1932.0020.0002.03B6] # GREEK SMALL LETTER ZETA
+1D6C7 ; [.1932.0020.0005.1D6C7] # MATHEMATICAL BOLD SMALL ZETA
+1D701 ; [.1932.0020.0005.1D701] # MATHEMATICAL ITALIC SMALL ZETA
+1D73B ; [.1932.0020.0005.1D73B] # MATHEMATICAL BOLD ITALIC SMALL ZETA
+1D775 ; [.1932.0020.0005.1D775] # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
+1D7AF ; [.1932.0020.0005.1D7AF] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
+0396 ; [.1932.0020.0008.0396] # GREEK CAPITAL LETTER ZETA
+1D6AD ; [.1932.0020.000B.1D6AD] # MATHEMATICAL BOLD CAPITAL ZETA
+1D6E7 ; [.1932.0020.000B.1D6E7] # MATHEMATICAL ITALIC CAPITAL ZETA
+1D721 ; [.1932.0020.000B.1D721] # MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+1D75B ; [.1932.0020.000B.1D75B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+1D795 ; [.1932.0020.000B.1D795] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+0371 ; [.1933.0020.0002.0371] # GREEK SMALL LETTER HETA
+0370 ; [.1933.0020.0008.0370] # GREEK CAPITAL LETTER HETA
+03B7 ; [.1934.0020.0002.03B7] # GREEK SMALL LETTER ETA
+1D6C8 ; [.1934.0020.0005.1D6C8] # MATHEMATICAL BOLD SMALL ETA
+1D702 ; [.1934.0020.0005.1D702] # MATHEMATICAL ITALIC SMALL ETA
+1D73C ; [.1934.0020.0005.1D73C] # MATHEMATICAL BOLD ITALIC SMALL ETA
+1D776 ; [.1934.0020.0005.1D776] # MATHEMATICAL SANS-SERIF BOLD SMALL ETA
+1D7B0 ; [.1934.0020.0005.1D7B0] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
+0397 ; [.1934.0020.0008.0397] # GREEK CAPITAL LETTER ETA
+1D6AE ; [.1934.0020.000B.1D6AE] # MATHEMATICAL BOLD CAPITAL ETA
+1D6E8 ; [.1934.0020.000B.1D6E8] # MATHEMATICAL ITALIC CAPITAL ETA
+1D722 ; [.1934.0020.000B.1D722] # MATHEMATICAL BOLD ITALIC CAPITAL ETA
+1D75C ; [.1934.0020.000B.1D75C] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+1D796 ; [.1934.0020.000B.1D796] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+1F20 ; [.1934.0020.0002.03B7][.0000.0022.0002.0313] # GREEK SMALL LETTER ETA WITH PSILI
+1F28 ; [.1934.0020.0008.0397][.0000.0022.0002.0313] # GREEK CAPITAL LETTER ETA WITH PSILI
+1F24 ; [.1934.0020.0002.03B7][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+1F2C ; [.1934.0020.0008.0397][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F94 ; [.1934.0020.0002.03B7][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F9C ; [.1934.0020.0008.0397][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F22 ; [.1934.0020.0002.03B7][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+1F2A ; [.1934.0020.0008.0397][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F92 ; [.1934.0020.0002.03B7][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F9A ; [.1934.0020.0008.0397][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F26 ; [.1934.0020.0002.03B7][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2E ; [.1934.0020.0008.0397][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F96 ; [.1934.0020.0002.03B7][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F9E ; [.1934.0020.0008.0397][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F90 ; [.1934.0020.0002.03B7][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F98 ; [.1934.0020.0008.0397][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F21 ; [.1934.0020.0002.03B7][.0000.002A.0002.0314] # GREEK SMALL LETTER ETA WITH DASIA
+1F29 ; [.1934.0020.0008.0397][.0000.002A.0002.0314] # GREEK CAPITAL LETTER ETA WITH DASIA
+1F25 ; [.1934.0020.0002.03B7][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+1F2D ; [.1934.0020.0008.0397][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F95 ; [.1934.0020.0002.03B7][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F9D ; [.1934.0020.0008.0397][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F23 ; [.1934.0020.0002.03B7][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+1F2B ; [.1934.0020.0008.0397][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F93 ; [.1934.0020.0002.03B7][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F9B ; [.1934.0020.0008.0397][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F27 ; [.1934.0020.0002.03B7][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F2F ; [.1934.0020.0008.0397][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F97 ; [.1934.0020.0002.03B7][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F9F ; [.1934.0020.0008.0397][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F91 ; [.1934.0020.0002.03B7][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F99 ; [.1934.0020.0008.0397][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+03AE ; [.1934.0020.0002.03B7][.0000.0032.0002.0301] # GREEK SMALL LETTER ETA WITH TONOS
+1F75 ; [.1934.0020.0002.03B7][.0000.0032.0002.0301] # GREEK SMALL LETTER ETA WITH OXIA
+0389 ; [.1934.0020.0008.0397][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ETA WITH TONOS
+1FCB ; [.1934.0020.0008.0397][.0000.0032.0002.0301] # GREEK CAPITAL LETTER ETA WITH OXIA
+1FC4 ; [.1934.0020.0002.03B7][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1F74 ; [.1934.0020.0002.03B7][.0000.0035.0002.0300] # GREEK SMALL LETTER ETA WITH VARIA
+1FCA ; [.1934.0020.0008.0397][.0000.0035.0002.0300] # GREEK CAPITAL LETTER ETA WITH VARIA
+1FC2 ; [.1934.0020.0002.03B7][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC6 ; [.1934.0020.0002.03B7][.0000.0045.0002.0342] # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7 ; [.1934.0020.0002.03B7][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC3 ; [.1934.0020.0002.03B7][.0000.007F.0002.0345] # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FCC ; [.1934.0020.0008.0397][.0000.007F.0002.0345] # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+03B8 ; [.1935.0020.0002.03B8] # GREEK SMALL LETTER THETA
+03D1 ; [.1935.0020.0004.03D1] # GREEK THETA SYMBOL
+1D6C9 ; [.1935.0020.0005.1D6C9] # MATHEMATICAL BOLD SMALL THETA
+1D6DD ; [.1935.0020.0005.1D6DD] # MATHEMATICAL BOLD THETA SYMBOL
+1D703 ; [.1935.0020.0005.1D703] # MATHEMATICAL ITALIC SMALL THETA
+1D717 ; [.1935.0020.0005.1D717] # MATHEMATICAL ITALIC THETA SYMBOL
+1D73D ; [.1935.0020.0005.1D73D] # MATHEMATICAL BOLD ITALIC SMALL THETA
+1D751 ; [.1935.0020.0005.1D751] # MATHEMATICAL BOLD ITALIC THETA SYMBOL
+1D777 ; [.1935.0020.0005.1D777] # MATHEMATICAL SANS-SERIF BOLD SMALL THETA
+1D78B ; [.1935.0020.0005.1D78B] # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
+1D7B1 ; [.1935.0020.0005.1D7B1] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
+1D7C5 ; [.1935.0020.0005.1D7C5] # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
+0398 ; [.1935.0020.0008.0398] # GREEK CAPITAL LETTER THETA
+03F4 ; [.1935.0020.000A.03F4] # GREEK CAPITAL THETA SYMBOL
+1D6AF ; [.1935.0020.000B.1D6AF] # MATHEMATICAL BOLD CAPITAL THETA
+1D6B9 ; [.1935.0020.000B.1D6B9] # MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+1D6E9 ; [.1935.0020.000B.1D6E9] # MATHEMATICAL ITALIC CAPITAL THETA
+1D6F3 ; [.1935.0020.000B.1D6F3] # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+1D723 ; [.1935.0020.000B.1D723] # MATHEMATICAL BOLD ITALIC CAPITAL THETA
+1D72D ; [.1935.0020.000B.1D72D] # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+1D75D ; [.1935.0020.000B.1D75D] # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+1D767 ; [.1935.0020.000B.1D767] # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+1D797 ; [.1935.0020.000B.1D797] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+1D7A1 ; [.1935.0020.000B.1D7A1] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+1DBF ; [.1935.0020.0014.1DBF] # MODIFIER LETTER SMALL THETA
+03B9 ; [.1936.0020.0002.03B9] # GREEK SMALL LETTER IOTA
+1FBE ; [.1936.0020.0002.1FBE] # GREEK PROSGEGRAMMENI
+037A ; [.1936.0020.0004.037A] # GREEK YPOGEGRAMMENI
+1D6CA ; [.1936.0020.0005.1D6CA] # MATHEMATICAL BOLD SMALL IOTA
+1D704 ; [.1936.0020.0005.1D704] # MATHEMATICAL ITALIC SMALL IOTA
+1D73E ; [.1936.0020.0005.1D73E] # MATHEMATICAL BOLD ITALIC SMALL IOTA
+1D778 ; [.1936.0020.0005.1D778] # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
+1D7B2 ; [.1936.0020.0005.1D7B2] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
+0399 ; [.1936.0020.0008.0399] # GREEK CAPITAL LETTER IOTA
+1D6B0 ; [.1936.0020.000B.1D6B0] # MATHEMATICAL BOLD CAPITAL IOTA
+1D6EA ; [.1936.0020.000B.1D6EA] # MATHEMATICAL ITALIC CAPITAL IOTA
+1D724 ; [.1936.0020.000B.1D724] # MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+1D75E ; [.1936.0020.000B.1D75E] # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+1D798 ; [.1936.0020.000B.1D798] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+1F30 ; [.1936.0020.0002.03B9][.0000.0022.0002.0313] # GREEK SMALL LETTER IOTA WITH PSILI
+1F38 ; [.1936.0020.0008.0399][.0000.0022.0002.0313] # GREEK CAPITAL LETTER IOTA WITH PSILI
+1F34 ; [.1936.0020.0002.03B9][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+1F3C ; [.1936.0020.0008.0399][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F32 ; [.1936.0020.0002.03B9][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+1F3A ; [.1936.0020.0008.0399][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F36 ; [.1936.0020.0002.03B9][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3E ; [.1936.0020.0008.0399][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F31 ; [.1936.0020.0002.03B9][.0000.002A.0002.0314] # GREEK SMALL LETTER IOTA WITH DASIA
+1F39 ; [.1936.0020.0008.0399][.0000.002A.0002.0314] # GREEK CAPITAL LETTER IOTA WITH DASIA
+1F35 ; [.1936.0020.0002.03B9][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+1F3D ; [.1936.0020.0008.0399][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F33 ; [.1936.0020.0002.03B9][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+1F3B ; [.1936.0020.0008.0399][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F37 ; [.1936.0020.0002.03B9][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F3F ; [.1936.0020.0008.0399][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+03AF ; [.1936.0020.0002.03B9][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH TONOS
+1F77 ; [.1936.0020.0002.03B9][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH OXIA
+038A ; [.1936.0020.0008.0399][.0000.0032.0002.0301] # GREEK CAPITAL LETTER IOTA WITH TONOS
+1FDB ; [.1936.0020.0008.0399][.0000.0032.0002.0301] # GREEK CAPITAL LETTER IOTA WITH OXIA
+1F76 ; [.1936.0020.0002.03B9][.0000.0035.0002.0300] # GREEK SMALL LETTER IOTA WITH VARIA
+1FDA ; [.1936.0020.0008.0399][.0000.0035.0002.0300] # GREEK CAPITAL LETTER IOTA WITH VARIA
+1FD0 ; [.1936.0020.0002.03B9][.0000.0037.0002.0306] # GREEK SMALL LETTER IOTA WITH VRACHY
+1FD8 ; [.1936.0020.0008.0399][.0000.0037.0002.0306] # GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD6 ; [.1936.0020.0002.03B9][.0000.0045.0002.0342] # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+03CA ; [.1936.0020.0002.03B9][.0000.0047.0002.0308] # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03AA ; [.1936.0020.0008.0399][.0000.0047.0002.0308] # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+0390 ; [.1936.0020.0002.03B9][.0000.0047.0002.0308][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+1FD3 ; [.1936.0020.0002.03B9][.0000.0047.0002.0308][.0000.0032.0002.0301] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD2 ; [.1936.0020.0002.03B9][.0000.0047.0002.0308][.0000.0035.0002.0300] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD7 ; [.1936.0020.0002.03B9][.0000.0047.0002.0308][.0000.0045.0002.0342] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD1 ; [.1936.0020.0002.03B9][.0000.005B.0002.0304] # GREEK SMALL LETTER IOTA WITH MACRON
+1FD9 ; [.1936.0020.0008.0399][.0000.005B.0002.0304] # GREEK CAPITAL LETTER IOTA WITH MACRON
+03F3 ; [.1937.0020.0002.03F3] # GREEK LETTER YOT
+03BA ; [.1938.0020.0002.03BA] # GREEK SMALL LETTER KAPPA
+03F0 ; [.1938.0020.0004.03F0] # GREEK KAPPA SYMBOL
+1D6CB ; [.1938.0020.0005.1D6CB] # MATHEMATICAL BOLD SMALL KAPPA
+1D6DE ; [.1938.0020.0005.1D6DE] # MATHEMATICAL BOLD KAPPA SYMBOL
+1D705 ; [.1938.0020.0005.1D705] # MATHEMATICAL ITALIC SMALL KAPPA
+1D718 ; [.1938.0020.0005.1D718] # MATHEMATICAL ITALIC KAPPA SYMBOL
+1D73F ; [.1938.0020.0005.1D73F] # MATHEMATICAL BOLD ITALIC SMALL KAPPA
+1D752 ; [.1938.0020.0005.1D752] # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
+1D779 ; [.1938.0020.0005.1D779] # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
+1D78C ; [.1938.0020.0005.1D78C] # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
+1D7B3 ; [.1938.0020.0005.1D7B3] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
+1D7C6 ; [.1938.0020.0005.1D7C6] # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
+039A ; [.1938.0020.0008.039A] # GREEK CAPITAL LETTER KAPPA
+1D6B1 ; [.1938.0020.000B.1D6B1] # MATHEMATICAL BOLD CAPITAL KAPPA
+1D6EB ; [.1938.0020.000B.1D6EB] # MATHEMATICAL ITALIC CAPITAL KAPPA
+1D725 ; [.1938.0020.000B.1D725] # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+1D75F ; [.1938.0020.000B.1D75F] # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+1D799 ; [.1938.0020.000B.1D799] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+03D7 ; [.1938.0020.0004.03D7][.1929.0020.0004.03D7][.1936.0020.0004.03D7] # GREEK KAI SYMBOL
+03CF ; [.1938.0020.000A.03CF][.1929.0020.0004.03CF][.1936.0020.0004.03CF] # GREEK CAPITAL KAI SYMBOL
+03BB ; [.1939.0020.0002.03BB] # GREEK SMALL LETTER LAMDA
+1D6CC ; [.1939.0020.0005.1D6CC] # MATHEMATICAL BOLD SMALL LAMDA
+1D706 ; [.1939.0020.0005.1D706] # MATHEMATICAL ITALIC SMALL LAMDA
+1D740 ; [.1939.0020.0005.1D740] # MATHEMATICAL BOLD ITALIC SMALL LAMDA
+1D77A ; [.1939.0020.0005.1D77A] # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
+1D7B4 ; [.1939.0020.0005.1D7B4] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
+039B ; [.1939.0020.0008.039B] # GREEK CAPITAL LETTER LAMDA
+1D6B2 ; [.1939.0020.000B.1D6B2] # MATHEMATICAL BOLD CAPITAL LAMDA
+1D6EC ; [.1939.0020.000B.1D6EC] # MATHEMATICAL ITALIC CAPITAL LAMDA
+1D726 ; [.1939.0020.000B.1D726] # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+1D760 ; [.1939.0020.000B.1D760] # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+1D79A ; [.1939.0020.000B.1D79A] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+1D27 ; [.193A.0020.0002.1D27] # GREEK LETTER SMALL CAPITAL LAMDA
+03BC ; [.193B.0020.0002.03BC] # GREEK SMALL LETTER MU
+00B5 ; [.193B.0020.0004.00B5] # MICRO SIGN
+1D6CD ; [.193B.0020.0005.1D6CD] # MATHEMATICAL BOLD SMALL MU
+1D707 ; [.193B.0020.0005.1D707] # MATHEMATICAL ITALIC SMALL MU
+1D741 ; [.193B.0020.0005.1D741] # MATHEMATICAL BOLD ITALIC SMALL MU
+1D77B ; [.193B.0020.0005.1D77B] # MATHEMATICAL SANS-SERIF BOLD SMALL MU
+1D7B5 ; [.193B.0020.0005.1D7B5] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
+039C ; [.193B.0020.0008.039C] # GREEK CAPITAL LETTER MU
+1D6B3 ; [.193B.0020.000B.1D6B3] # MATHEMATICAL BOLD CAPITAL MU
+1D6ED ; [.193B.0020.000B.1D6ED] # MATHEMATICAL ITALIC CAPITAL MU
+1D727 ; [.193B.0020.000B.1D727] # MATHEMATICAL BOLD ITALIC CAPITAL MU
+1D761 ; [.193B.0020.000B.1D761] # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+1D79B ; [.193B.0020.000B.1D79B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+3382 ; [.193B.0020.001C.3382][.15EF.0020.001D.3382] # SQUARE MU A
+338C ; [.193B.0020.001C.338C][.1684.0020.001D.338C] # SQUARE MU F
+338D ; [.193B.0020.001C.338D][.1691.0020.001C.338D] # SQUARE MU G
+3395 ; [.193B.0020.001C.3395][.1711.0020.001C.3395] # SQUARE MU L
+339B ; [.193B.0020.001C.339B][.1741.0020.001C.339B] # SQUARE MU M
+33B2 ; [.193B.0020.001C.33B2][.17F3.0020.001C.33B2] # SQUARE MU S
+33B6 ; [.193B.0020.001C.33B6][.185F.0020.001D.33B6] # SQUARE MU V
+33BC ; [.193B.0020.001C.33BC][.1871.0020.001D.33BC] # SQUARE MU W
+03BD ; [.193C.0020.0002.03BD] # GREEK SMALL LETTER NU
+1D6CE ; [.193C.0020.0005.1D6CE] # MATHEMATICAL BOLD SMALL NU
+1D708 ; [.193C.0020.0005.1D708] # MATHEMATICAL ITALIC SMALL NU
+1D742 ; [.193C.0020.0005.1D742] # MATHEMATICAL BOLD ITALIC SMALL NU
+1D77C ; [.193C.0020.0005.1D77C] # MATHEMATICAL SANS-SERIF BOLD SMALL NU
+1D7B6 ; [.193C.0020.0005.1D7B6] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
+039D ; [.193C.0020.0008.039D] # GREEK CAPITAL LETTER NU
+1D6B4 ; [.193C.0020.000B.1D6B4] # MATHEMATICAL BOLD CAPITAL NU
+1D6EE ; [.193C.0020.000B.1D6EE] # MATHEMATICAL ITALIC CAPITAL NU
+1D728 ; [.193C.0020.000B.1D728] # MATHEMATICAL BOLD ITALIC CAPITAL NU
+1D762 ; [.193C.0020.000B.1D762] # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+1D79C ; [.193C.0020.000B.1D79C] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+03BE ; [.193D.0020.0002.03BE] # GREEK SMALL LETTER XI
+1D6CF ; [.193D.0020.0005.1D6CF] # MATHEMATICAL BOLD SMALL XI
+1D709 ; [.193D.0020.0005.1D709] # MATHEMATICAL ITALIC SMALL XI
+1D743 ; [.193D.0020.0005.1D743] # MATHEMATICAL BOLD ITALIC SMALL XI
+1D77D ; [.193D.0020.0005.1D77D] # MATHEMATICAL SANS-SERIF BOLD SMALL XI
+1D7B7 ; [.193D.0020.0005.1D7B7] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
+039E ; [.193D.0020.0008.039E] # GREEK CAPITAL LETTER XI
+1D6B5 ; [.193D.0020.000B.1D6B5] # MATHEMATICAL BOLD CAPITAL XI
+1D6EF ; [.193D.0020.000B.1D6EF] # MATHEMATICAL ITALIC CAPITAL XI
+1D729 ; [.193D.0020.000B.1D729] # MATHEMATICAL BOLD ITALIC CAPITAL XI
+1D763 ; [.193D.0020.000B.1D763] # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+1D79D ; [.193D.0020.000B.1D79D] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+03BF ; [.193E.0020.0002.03BF] # GREEK SMALL LETTER OMICRON
+1D6D0 ; [.193E.0020.0005.1D6D0] # MATHEMATICAL BOLD SMALL OMICRON
+1D70A ; [.193E.0020.0005.1D70A] # MATHEMATICAL ITALIC SMALL OMICRON
+1D744 ; [.193E.0020.0005.1D744] # MATHEMATICAL BOLD ITALIC SMALL OMICRON
+1D77E ; [.193E.0020.0005.1D77E] # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
+1D7B8 ; [.193E.0020.0005.1D7B8] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
+039F ; [.193E.0020.0008.039F] # GREEK CAPITAL LETTER OMICRON
+1D6B6 ; [.193E.0020.000B.1D6B6] # MATHEMATICAL BOLD CAPITAL OMICRON
+1D6F0 ; [.193E.0020.000B.1D6F0] # MATHEMATICAL ITALIC CAPITAL OMICRON
+1D72A ; [.193E.0020.000B.1D72A] # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+1D764 ; [.193E.0020.000B.1D764] # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+1D79E ; [.193E.0020.000B.1D79E] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+1F40 ; [.193E.0020.0002.03BF][.0000.0022.0002.0313] # GREEK SMALL LETTER OMICRON WITH PSILI
+1F48 ; [.193E.0020.0008.039F][.0000.0022.0002.0313] # GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F44 ; [.193E.0020.0002.03BF][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+1F4C ; [.193E.0020.0008.039F][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F42 ; [.193E.0020.0002.03BF][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+1F4A ; [.193E.0020.0008.039F][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F41 ; [.193E.0020.0002.03BF][.0000.002A.0002.0314] # GREEK SMALL LETTER OMICRON WITH DASIA
+1F49 ; [.193E.0020.0008.039F][.0000.002A.0002.0314] # GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F45 ; [.193E.0020.0002.03BF][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F4D ; [.193E.0020.0008.039F][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F43 ; [.193E.0020.0002.03BF][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+1F4B ; [.193E.0020.0008.039F][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+03CC ; [.193E.0020.0002.03BF][.0000.0032.0002.0301] # GREEK SMALL LETTER OMICRON WITH TONOS
+1F79 ; [.193E.0020.0002.03BF][.0000.0032.0002.0301] # GREEK SMALL LETTER OMICRON WITH OXIA
+038C ; [.193E.0020.0008.039F][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMICRON WITH TONOS
+1FF9 ; [.193E.0020.0008.039F][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMICRON WITH OXIA
+1F78 ; [.193E.0020.0002.03BF][.0000.0035.0002.0300] # GREEK SMALL LETTER OMICRON WITH VARIA
+1FF8 ; [.193E.0020.0008.039F][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMICRON WITH VARIA
+03C0 ; [.193F.0020.0002.03C0] # GREEK SMALL LETTER PI
+03D6 ; [.193F.0020.0004.03D6] # GREEK PI SYMBOL
+213C ; [.193F.0020.0005.213C] # DOUBLE-STRUCK SMALL PI
+1D6D1 ; [.193F.0020.0005.1D6D1] # MATHEMATICAL BOLD SMALL PI
+1D6E1 ; [.193F.0020.0005.1D6E1] # MATHEMATICAL BOLD PI SYMBOL
+1D70B ; [.193F.0020.0005.1D70B] # MATHEMATICAL ITALIC SMALL PI
+1D71B ; [.193F.0020.0005.1D71B] # MATHEMATICAL ITALIC PI SYMBOL
+1D745 ; [.193F.0020.0005.1D745] # MATHEMATICAL BOLD ITALIC SMALL PI
+1D755 ; [.193F.0020.0005.1D755] # MATHEMATICAL BOLD ITALIC PI SYMBOL
+1D77F ; [.193F.0020.0005.1D77F] # MATHEMATICAL SANS-SERIF BOLD SMALL PI
+1D78F ; [.193F.0020.0005.1D78F] # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+1D7B9 ; [.193F.0020.0005.1D7B9] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
+1D7C9 ; [.193F.0020.0005.1D7C9] # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+03A0 ; [.193F.0020.0008.03A0] # GREEK CAPITAL LETTER PI
+213F ; [.193F.0020.000B.213F] # DOUBLE-STRUCK CAPITAL PI
+1D6B7 ; [.193F.0020.000B.1D6B7] # MATHEMATICAL BOLD CAPITAL PI
+1D6F1 ; [.193F.0020.000B.1D6F1] # MATHEMATICAL ITALIC CAPITAL PI
+1D72B ; [.193F.0020.000B.1D72B] # MATHEMATICAL BOLD ITALIC CAPITAL PI
+1D765 ; [.193F.0020.000B.1D765] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+1D79F ; [.193F.0020.000B.1D79F] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+1D28 ; [.1940.0020.0002.1D28] # GREEK LETTER SMALL CAPITAL PI
+03FB ; [.1941.0020.0002.03FB] # GREEK SMALL LETTER SAN
+03FA ; [.1941.0020.0008.03FA] # GREEK CAPITAL LETTER SAN
+03DF ; [.1942.0020.0002.03DF] # GREEK SMALL LETTER KOPPA
+03DE ; [.1942.0020.0008.03DE] # GREEK LETTER KOPPA
+03D9 ; [.1943.0020.0002.03D9] # GREEK SMALL LETTER ARCHAIC KOPPA
+03D8 ; [.1943.0020.0008.03D8] # GREEK LETTER ARCHAIC KOPPA
+03C1 ; [.1944.0020.0002.03C1] # GREEK SMALL LETTER RHO
+03F1 ; [.1944.0020.0004.03F1] # GREEK RHO SYMBOL
+1D6D2 ; [.1944.0020.0005.1D6D2] # MATHEMATICAL BOLD SMALL RHO
+1D6E0 ; [.1944.0020.0005.1D6E0] # MATHEMATICAL BOLD RHO SYMBOL
+1D70C ; [.1944.0020.0005.1D70C] # MATHEMATICAL ITALIC SMALL RHO
+1D71A ; [.1944.0020.0005.1D71A] # MATHEMATICAL ITALIC RHO SYMBOL
+1D746 ; [.1944.0020.0005.1D746] # MATHEMATICAL BOLD ITALIC SMALL RHO
+1D754 ; [.1944.0020.0005.1D754] # MATHEMATICAL BOLD ITALIC RHO SYMBOL
+1D780 ; [.1944.0020.0005.1D780] # MATHEMATICAL SANS-SERIF BOLD SMALL RHO
+1D78E ; [.1944.0020.0005.1D78E] # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
+1D7BA ; [.1944.0020.0005.1D7BA] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
+1D7C8 ; [.1944.0020.0005.1D7C8] # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
+03A1 ; [.1944.0020.0008.03A1] # GREEK CAPITAL LETTER RHO
+1D6B8 ; [.1944.0020.000B.1D6B8] # MATHEMATICAL BOLD CAPITAL RHO
+1D6F2 ; [.1944.0020.000B.1D6F2] # MATHEMATICAL ITALIC CAPITAL RHO
+1D72C ; [.1944.0020.000B.1D72C] # MATHEMATICAL BOLD ITALIC CAPITAL RHO
+1D766 ; [.1944.0020.000B.1D766] # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+1D7A0 ; [.1944.0020.000B.1D7A0] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+1D68 ; [.1944.0020.0015.1D68] # GREEK SUBSCRIPT SMALL LETTER RHO
+1FE4 ; [.1944.0020.0002.03C1][.0000.0022.0002.0313] # GREEK SMALL LETTER RHO WITH PSILI
+1FE5 ; [.1944.0020.0002.03C1][.0000.002A.0002.0314] # GREEK SMALL LETTER RHO WITH DASIA
+1FEC ; [.1944.0020.0008.03A1][.0000.002A.0002.0314] # GREEK CAPITAL LETTER RHO WITH DASIA
+1D29 ; [.1945.0020.0002.1D29] # GREEK LETTER SMALL CAPITAL RHO
+03FC ; [.1946.0020.0002.03FC] # GREEK RHO WITH STROKE SYMBOL
+03C3 ; [.1947.0020.0002.03C3] # GREEK SMALL LETTER SIGMA
+03F2 ; [.1947.0020.0004.03F2] # GREEK LUNATE SIGMA SYMBOL
+1D6D3 ; [.1947.0020.0005.1D6D3] # MATHEMATICAL BOLD SMALL FINAL SIGMA
+1D6D4 ; [.1947.0020.0005.1D6D4] # MATHEMATICAL BOLD SMALL SIGMA
+1D70D ; [.1947.0020.0005.1D70D] # MATHEMATICAL ITALIC SMALL FINAL SIGMA
+1D70E ; [.1947.0020.0005.1D70E] # MATHEMATICAL ITALIC SMALL SIGMA
+1D747 ; [.1947.0020.0005.1D747] # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+1D748 ; [.1947.0020.0005.1D748] # MATHEMATICAL BOLD ITALIC SMALL SIGMA
+1D781 ; [.1947.0020.0005.1D781] # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+1D782 ; [.1947.0020.0005.1D782] # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
+1D7BB ; [.1947.0020.0005.1D7BB] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+1D7BC ; [.1947.0020.0005.1D7BC] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
+03A3 ; [.1947.0020.0008.03A3] # GREEK CAPITAL LETTER SIGMA
+03F9 ; [.1947.0020.000A.03F9] # GREEK CAPITAL LUNATE SIGMA SYMBOL
+1D6BA ; [.1947.0020.000B.1D6BA] # MATHEMATICAL BOLD CAPITAL SIGMA
+1D6F4 ; [.1947.0020.000B.1D6F4] # MATHEMATICAL ITALIC CAPITAL SIGMA
+1D72E ; [.1947.0020.000B.1D72E] # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+1D768 ; [.1947.0020.000B.1D768] # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+1D7A2 ; [.1947.0020.000B.1D7A2] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+03C2 ; [.1947.0020.0019.03C2] # GREEK SMALL LETTER FINAL SIGMA
+037C ; [.1948.0020.0002.037C] # GREEK SMALL DOTTED LUNATE SIGMA SYMBOL
+03FE ; [.1948.0020.0008.03FE] # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
+037B ; [.1949.0020.0002.037B] # GREEK SMALL REVERSED LUNATE SIGMA SYMBOL
+03FD ; [.1949.0020.0008.03FD] # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
+037D ; [.194A.0020.0002.037D] # GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+03FF ; [.194A.0020.0008.03FF] # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
+03C4 ; [.194B.0020.0002.03C4] # GREEK SMALL LETTER TAU
+1D6D5 ; [.194B.0020.0005.1D6D5] # MATHEMATICAL BOLD SMALL TAU
+1D70F ; [.194B.0020.0005.1D70F] # MATHEMATICAL ITALIC SMALL TAU
+1D749 ; [.194B.0020.0005.1D749] # MATHEMATICAL BOLD ITALIC SMALL TAU
+1D783 ; [.194B.0020.0005.1D783] # MATHEMATICAL SANS-SERIF BOLD SMALL TAU
+1D7BD ; [.194B.0020.0005.1D7BD] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
+03A4 ; [.194B.0020.0008.03A4] # GREEK CAPITAL LETTER TAU
+1D6BB ; [.194B.0020.000B.1D6BB] # MATHEMATICAL BOLD CAPITAL TAU
+1D6F5 ; [.194B.0020.000B.1D6F5] # MATHEMATICAL ITALIC CAPITAL TAU
+1D72F ; [.194B.0020.000B.1D72F] # MATHEMATICAL BOLD ITALIC CAPITAL TAU
+1D769 ; [.194B.0020.000B.1D769] # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+1D7A3 ; [.194B.0020.000B.1D7A3] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+03C5 ; [.194C.0020.0002.03C5] # GREEK SMALL LETTER UPSILON
+1D6D6 ; [.194C.0020.0005.1D6D6] # MATHEMATICAL BOLD SMALL UPSILON
+1D710 ; [.194C.0020.0005.1D710] # MATHEMATICAL ITALIC SMALL UPSILON
+1D74A ; [.194C.0020.0005.1D74A] # MATHEMATICAL BOLD ITALIC SMALL UPSILON
+1D784 ; [.194C.0020.0005.1D784] # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
+1D7BE ; [.194C.0020.0005.1D7BE] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
+03A5 ; [.194C.0020.0008.03A5] # GREEK CAPITAL LETTER UPSILON
+03D2 ; [.194C.0020.000A.03D2] # GREEK UPSILON WITH HOOK SYMBOL
+1D6BC ; [.194C.0020.000B.1D6BC] # MATHEMATICAL BOLD CAPITAL UPSILON
+1D6F6 ; [.194C.0020.000B.1D6F6] # MATHEMATICAL ITALIC CAPITAL UPSILON
+1D730 ; [.194C.0020.000B.1D730] # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+1D76A ; [.194C.0020.000B.1D76A] # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+1D7A4 ; [.194C.0020.000B.1D7A4] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+1F50 ; [.194C.0020.0002.03C5][.0000.0022.0002.0313] # GREEK SMALL LETTER UPSILON WITH PSILI
+1F54 ; [.194C.0020.0002.03C5][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F52 ; [.194C.0020.0002.03C5][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F56 ; [.194C.0020.0002.03C5][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F51 ; [.194C.0020.0002.03C5][.0000.002A.0002.0314] # GREEK SMALL LETTER UPSILON WITH DASIA
+1F59 ; [.194C.0020.0008.03A5][.0000.002A.0002.0314] # GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F55 ; [.194C.0020.0002.03C5][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+1F5D ; [.194C.0020.0008.03A5][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F53 ; [.194C.0020.0002.03C5][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+1F5B ; [.194C.0020.0008.03A5][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F57 ; [.194C.0020.0002.03C5][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F5F ; [.194C.0020.0008.03A5][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+03CD ; [.194C.0020.0002.03C5][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH TONOS
+1F7B ; [.194C.0020.0002.03C5][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH OXIA
+038E ; [.194C.0020.0008.03A5][.0000.0032.0002.0301] # GREEK CAPITAL LETTER UPSILON WITH TONOS
+1FEB ; [.194C.0020.0008.03A5][.0000.0032.0002.0301] # GREEK CAPITAL LETTER UPSILON WITH OXIA
+03D3 ; [.194C.0020.000A.03D3][.0000.0032.0002.03D3] # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+1F7A ; [.194C.0020.0002.03C5][.0000.0035.0002.0300] # GREEK SMALL LETTER UPSILON WITH VARIA
+1FEA ; [.194C.0020.0008.03A5][.0000.0035.0002.0300] # GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FE0 ; [.194C.0020.0002.03C5][.0000.0037.0002.0306] # GREEK SMALL LETTER UPSILON WITH VRACHY
+1FE8 ; [.194C.0020.0008.03A5][.0000.0037.0002.0306] # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE6 ; [.194C.0020.0002.03C5][.0000.0045.0002.0342] # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+03CB ; [.194C.0020.0002.03C5][.0000.0047.0002.0308] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03AB ; [.194C.0020.0008.03A5][.0000.0047.0002.0308] # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03D4 ; [.194C.0020.000A.03D4][.0000.0047.0002.03D4] # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03B0 ; [.194C.0020.0002.03C5][.0000.0047.0002.0308][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+1FE3 ; [.194C.0020.0002.03C5][.0000.0047.0002.0308][.0000.0032.0002.0301] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE2 ; [.194C.0020.0002.03C5][.0000.0047.0002.0308][.0000.0035.0002.0300] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE7 ; [.194C.0020.0002.03C5][.0000.0047.0002.0308][.0000.0045.0002.0342] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE1 ; [.194C.0020.0002.03C5][.0000.005B.0002.0304] # GREEK SMALL LETTER UPSILON WITH MACRON
+1FE9 ; [.194C.0020.0008.03A5][.0000.005B.0002.0304] # GREEK CAPITAL LETTER UPSILON WITH MACRON
+03C6 ; [.194D.0020.0002.03C6] # GREEK SMALL LETTER PHI
+03D5 ; [.194D.0020.0004.03D5] # GREEK PHI SYMBOL
+1D6D7 ; [.194D.0020.0005.1D6D7] # MATHEMATICAL BOLD SMALL PHI
+1D6DF ; [.194D.0020.0005.1D6DF] # MATHEMATICAL BOLD PHI SYMBOL
+1D711 ; [.194D.0020.0005.1D711] # MATHEMATICAL ITALIC SMALL PHI
+1D719 ; [.194D.0020.0005.1D719] # MATHEMATICAL ITALIC PHI SYMBOL
+1D74B ; [.194D.0020.0005.1D74B] # MATHEMATICAL BOLD ITALIC SMALL PHI
+1D753 ; [.194D.0020.0005.1D753] # MATHEMATICAL BOLD ITALIC PHI SYMBOL
+1D785 ; [.194D.0020.0005.1D785] # MATHEMATICAL SANS-SERIF BOLD SMALL PHI
+1D78D ; [.194D.0020.0005.1D78D] # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
+1D7BF ; [.194D.0020.0005.1D7BF] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
+1D7C7 ; [.194D.0020.0005.1D7C7] # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
+03A6 ; [.194D.0020.0008.03A6] # GREEK CAPITAL LETTER PHI
+1D6BD ; [.194D.0020.000B.1D6BD] # MATHEMATICAL BOLD CAPITAL PHI
+1D6F7 ; [.194D.0020.000B.1D6F7] # MATHEMATICAL ITALIC CAPITAL PHI
+1D731 ; [.194D.0020.000B.1D731] # MATHEMATICAL BOLD ITALIC CAPITAL PHI
+1D76B ; [.194D.0020.000B.1D76B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+1D7A5 ; [.194D.0020.000B.1D7A5] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+1D60 ; [.194D.0020.0014.1D60] # MODIFIER LETTER SMALL GREEK PHI
+1D69 ; [.194D.0020.0015.1D69] # GREEK SUBSCRIPT SMALL LETTER PHI
+03C7 ; [.194E.0020.0002.03C7] # GREEK SMALL LETTER CHI
+1D6D8 ; [.194E.0020.0005.1D6D8] # MATHEMATICAL BOLD SMALL CHI
+1D712 ; [.194E.0020.0005.1D712] # MATHEMATICAL ITALIC SMALL CHI
+1D74C ; [.194E.0020.0005.1D74C] # MATHEMATICAL BOLD ITALIC SMALL CHI
+1D786 ; [.194E.0020.0005.1D786] # MATHEMATICAL SANS-SERIF BOLD SMALL CHI
+1D7C0 ; [.194E.0020.0005.1D7C0] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
+03A7 ; [.194E.0020.0008.03A7] # GREEK CAPITAL LETTER CHI
+1D6BE ; [.194E.0020.000B.1D6BE] # MATHEMATICAL BOLD CAPITAL CHI
+1D6F8 ; [.194E.0020.000B.1D6F8] # MATHEMATICAL ITALIC CAPITAL CHI
+1D732 ; [.194E.0020.000B.1D732] # MATHEMATICAL BOLD ITALIC CAPITAL CHI
+1D76C ; [.194E.0020.000B.1D76C] # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+1D7A6 ; [.194E.0020.000B.1D7A6] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+1D61 ; [.194E.0020.0014.1D61] # MODIFIER LETTER SMALL CHI
+1D6A ; [.194E.0020.0015.1D6A] # GREEK SUBSCRIPT SMALL LETTER CHI
+03C8 ; [.194F.0020.0002.03C8] # GREEK SMALL LETTER PSI
+1D6D9 ; [.194F.0020.0005.1D6D9] # MATHEMATICAL BOLD SMALL PSI
+1D713 ; [.194F.0020.0005.1D713] # MATHEMATICAL ITALIC SMALL PSI
+1D74D ; [.194F.0020.0005.1D74D] # MATHEMATICAL BOLD ITALIC SMALL PSI
+1D787 ; [.194F.0020.0005.1D787] # MATHEMATICAL SANS-SERIF BOLD SMALL PSI
+1D7C1 ; [.194F.0020.0005.1D7C1] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
+03A8 ; [.194F.0020.0008.03A8] # GREEK CAPITAL LETTER PSI
+1D6BF ; [.194F.0020.000B.1D6BF] # MATHEMATICAL BOLD CAPITAL PSI
+1D6F9 ; [.194F.0020.000B.1D6F9] # MATHEMATICAL ITALIC CAPITAL PSI
+1D733 ; [.194F.0020.000B.1D733] # MATHEMATICAL BOLD ITALIC CAPITAL PSI
+1D76D ; [.194F.0020.000B.1D76D] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+1D7A7 ; [.194F.0020.000B.1D7A7] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+1D2A ; [.1950.0020.0002.1D2A] # GREEK LETTER SMALL CAPITAL PSI
+03C9 ; [.1951.0020.0002.03C9] # GREEK SMALL LETTER OMEGA
+1D6DA ; [.1951.0020.0005.1D6DA] # MATHEMATICAL BOLD SMALL OMEGA
+1D714 ; [.1951.0020.0005.1D714] # MATHEMATICAL ITALIC SMALL OMEGA
+1D74E ; [.1951.0020.0005.1D74E] # MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D788 ; [.1951.0020.0005.1D788] # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D7C2 ; [.1951.0020.0005.1D7C2] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+03A9 ; [.1951.0020.0008.03A9] # GREEK CAPITAL LETTER OMEGA
+2126 ; [.1951.0020.0008.2126] # OHM SIGN
+1D6C0 ; [.1951.0020.000B.1D6C0] # MATHEMATICAL BOLD CAPITAL OMEGA
+1D6FA ; [.1951.0020.000B.1D6FA] # MATHEMATICAL ITALIC CAPITAL OMEGA
+1D734 ; [.1951.0020.000B.1D734] # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D76E ; [.1951.0020.000B.1D76E] # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D7A8 ; [.1951.0020.000B.1D7A8] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1F60 ; [.1951.0020.0002.03C9][.0000.0022.0002.0313] # GREEK SMALL LETTER OMEGA WITH PSILI
+1F68 ; [.1951.0020.0008.03A9][.0000.0022.0002.0313] # GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F64 ; [.1951.0020.0002.03C9][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+1F6C ; [.1951.0020.0008.03A9][.0000.0022.0002.0313][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1FA4 ; [.1951.0020.0002.03C9][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FAC ; [.1951.0020.0008.03A9][.0000.0022.0002.0313][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F62 ; [.1951.0020.0002.03C9][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+1F6A ; [.1951.0020.0008.03A9][.0000.0022.0002.0313][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1FA2 ; [.1951.0020.0002.03C9][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FAA ; [.1951.0020.0008.03A9][.0000.0022.0002.0313][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F66 ; [.1951.0020.0002.03C9][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6E ; [.1951.0020.0008.03A9][.0000.0022.0002.0313][.0000.0045.0002.0342] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1FA6 ; [.1951.0020.0002.03C9][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FAE ; [.1951.0020.0008.03A9][.0000.0022.0002.0313][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0 ; [.1951.0020.0002.03C9][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA8 ; [.1951.0020.0008.03A9][.0000.0022.0002.0313][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1F61 ; [.1951.0020.0002.03C9][.0000.002A.0002.0314] # GREEK SMALL LETTER OMEGA WITH DASIA
+1F69 ; [.1951.0020.0008.03A9][.0000.002A.0002.0314] # GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F65 ; [.1951.0020.0002.03C9][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+1F6D ; [.1951.0020.0008.03A9][.0000.002A.0002.0314][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1FA5 ; [.1951.0020.0002.03C9][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FAD ; [.1951.0020.0008.03A9][.0000.002A.0002.0314][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F63 ; [.1951.0020.0002.03C9][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+1F6B ; [.1951.0020.0008.03A9][.0000.002A.0002.0314][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1FA3 ; [.1951.0020.0002.03C9][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FAB ; [.1951.0020.0008.03A9][.0000.002A.0002.0314][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F67 ; [.1951.0020.0002.03C9][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F6F ; [.1951.0020.0008.03A9][.0000.002A.0002.0314][.0000.0045.0002.0342] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1FA7 ; [.1951.0020.0002.03C9][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FAF ; [.1951.0020.0008.03A9][.0000.002A.0002.0314][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA1 ; [.1951.0020.0002.03C9][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA9 ; [.1951.0020.0008.03A9][.0000.002A.0002.0314][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+03CE ; [.1951.0020.0002.03C9][.0000.0032.0002.0301] # GREEK SMALL LETTER OMEGA WITH TONOS
+1F7D ; [.1951.0020.0002.03C9][.0000.0032.0002.0301] # GREEK SMALL LETTER OMEGA WITH OXIA
+038F ; [.1951.0020.0008.03A9][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMEGA WITH TONOS
+1FFB ; [.1951.0020.0008.03A9][.0000.0032.0002.0301] # GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FF4 ; [.1951.0020.0002.03C9][.0000.0032.0002.0301][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1F7C ; [.1951.0020.0002.03C9][.0000.0035.0002.0300] # GREEK SMALL LETTER OMEGA WITH VARIA
+1FFA ; [.1951.0020.0008.03A9][.0000.0035.0002.0300] # GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FF2 ; [.1951.0020.0002.03C9][.0000.0035.0002.0300][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF6 ; [.1951.0020.0002.03C9][.0000.0045.0002.0342] # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7 ; [.1951.0020.0002.03C9][.0000.0045.0002.0342][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF3 ; [.1951.0020.0002.03C9][.0000.007F.0002.0345] # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FFC ; [.1951.0020.0008.03A9][.0000.007F.0002.0345] # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+03E1 ; [.1952.0020.0002.03E1] # GREEK SMALL LETTER SAMPI
+03E0 ; [.1952.0020.0008.03E0] # GREEK LETTER SAMPI
+0373 ; [.1953.0020.0002.0373] # GREEK SMALL LETTER ARCHAIC SAMPI
+0372 ; [.1953.0020.0008.0372] # GREEK CAPITAL LETTER ARCHAIC SAMPI
+03F8 ; [.1954.0020.0002.03F8] # GREEK SMALL LETTER SHO
+03F7 ; [.1954.0020.0008.03F7] # GREEK CAPITAL LETTER SHO
+2C81 ; [.1955.0020.0002.2C81] # COPTIC SMALL LETTER ALFA
+2C80 ; [.1955.0020.0008.2C80] # COPTIC CAPITAL LETTER ALFA
+2C83 ; [.1956.0020.0002.2C83] # COPTIC SMALL LETTER VIDA
+2C82 ; [.1956.0020.0008.2C82] # COPTIC CAPITAL LETTER VIDA
+2C85 ; [.1957.0020.0002.2C85] # COPTIC SMALL LETTER GAMMA
+2C84 ; [.1957.0020.0008.2C84] # COPTIC CAPITAL LETTER GAMMA
+2C87 ; [.1958.0020.0002.2C87] # COPTIC SMALL LETTER DALDA
+2C86 ; [.1958.0020.0008.2C86] # COPTIC CAPITAL LETTER DALDA
+2C89 ; [.1959.0020.0002.2C89] # COPTIC SMALL LETTER EIE
+2C88 ; [.1959.0020.0008.2C88] # COPTIC CAPITAL LETTER EIE
+2CB7 ; [.195A.0020.0002.2CB7] # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
+2CB6 ; [.195A.0020.0008.2CB6] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+2C8B ; [.195B.0020.0002.2C8B] # COPTIC SMALL LETTER SOU
+2C8A ; [.195B.0020.0008.2C8A] # COPTIC CAPITAL LETTER SOU
+2C8D ; [.195C.0020.0002.2C8D] # COPTIC SMALL LETTER ZATA
+2C8C ; [.195C.0020.0008.2C8C] # COPTIC CAPITAL LETTER ZATA
+2C8F ; [.195D.0020.0002.2C8F] # COPTIC SMALL LETTER HATE
+2C8E ; [.195D.0020.0008.2C8E] # COPTIC CAPITAL LETTER HATE
+2C91 ; [.195E.0020.0002.2C91] # COPTIC SMALL LETTER THETHE
+2C90 ; [.195E.0020.0008.2C90] # COPTIC CAPITAL LETTER THETHE
+2C93 ; [.195F.0020.0002.2C93] # COPTIC SMALL LETTER IAUDA
+2C92 ; [.195F.0020.0008.2C92] # COPTIC CAPITAL LETTER IAUDA
+2C95 ; [.1960.0020.0002.2C95] # COPTIC SMALL LETTER KAPA
+2C94 ; [.1960.0020.0008.2C94] # COPTIC CAPITAL LETTER KAPA
+2CE4 ; [.1960.0020.0004.2CE4][.1955.0020.0004.2CE4][.195F.0020.0004.2CE4] # COPTIC SYMBOL KAI
+2CB9 ; [.1961.0020.0002.2CB9] # COPTIC SMALL LETTER DIALECT-P KAPA
+2CB8 ; [.1961.0020.0008.2CB8] # COPTIC CAPITAL LETTER DIALECT-P KAPA
+2C97 ; [.1962.0020.0002.2C97] # COPTIC SMALL LETTER LAULA
+2C96 ; [.1962.0020.0008.2C96] # COPTIC CAPITAL LETTER LAULA
+2C99 ; [.1963.0020.0002.2C99] # COPTIC SMALL LETTER MI
+2C98 ; [.1963.0020.0008.2C98] # COPTIC CAPITAL LETTER MI
+2C9B ; [.1964.0020.0002.2C9B] # COPTIC SMALL LETTER NI
+2C9A ; [.1964.0020.0008.2C9A] # COPTIC CAPITAL LETTER NI
+2CBB ; [.1965.0020.0002.2CBB] # COPTIC SMALL LETTER DIALECT-P NI
+2CBA ; [.1965.0020.0008.2CBA] # COPTIC CAPITAL LETTER DIALECT-P NI
+2CBD ; [.1966.0020.0002.2CBD] # COPTIC SMALL LETTER CRYPTOGRAMMIC NI
+2CBC ; [.1966.0020.0008.2CBC] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+2C9D ; [.1967.0020.0002.2C9D] # COPTIC SMALL LETTER KSI
+2C9C ; [.1967.0020.0008.2C9C] # COPTIC CAPITAL LETTER KSI
+2C9F ; [.1968.0020.0002.2C9F] # COPTIC SMALL LETTER O
+2C9E ; [.1968.0020.0008.2C9E] # COPTIC CAPITAL LETTER O
+2CA1 ; [.1969.0020.0002.2CA1] # COPTIC SMALL LETTER PI
+2CA0 ; [.1969.0020.0008.2CA0] # COPTIC CAPITAL LETTER PI
+2CA3 ; [.196A.0020.0002.2CA3] # COPTIC SMALL LETTER RO
+2CA2 ; [.196A.0020.0008.2CA2] # COPTIC CAPITAL LETTER RO
+2CA5 ; [.196B.0020.0002.2CA5] # COPTIC SMALL LETTER SIMA
+2CA4 ; [.196B.0020.0008.2CA4] # COPTIC CAPITAL LETTER SIMA
+2CA7 ; [.196C.0020.0002.2CA7] # COPTIC SMALL LETTER TAU
+2CA6 ; [.196C.0020.0008.2CA6] # COPTIC CAPITAL LETTER TAU
+2CA9 ; [.196D.0020.0002.2CA9] # COPTIC SMALL LETTER UA
+2CA8 ; [.196D.0020.0008.2CA8] # COPTIC CAPITAL LETTER UA
+2CAB ; [.196E.0020.0002.2CAB] # COPTIC SMALL LETTER FI
+2CAA ; [.196E.0020.0008.2CAA] # COPTIC CAPITAL LETTER FI
+2CAD ; [.196F.0020.0002.2CAD] # COPTIC SMALL LETTER KHI
+2CAC ; [.196F.0020.0008.2CAC] # COPTIC CAPITAL LETTER KHI
+2CAF ; [.1970.0020.0002.2CAF] # COPTIC SMALL LETTER PSI
+2CAE ; [.1970.0020.0008.2CAE] # COPTIC CAPITAL LETTER PSI
+2CB1 ; [.1971.0020.0002.2CB1] # COPTIC SMALL LETTER OOU
+2CB0 ; [.1971.0020.0008.2CB0] # COPTIC CAPITAL LETTER OOU
+2CBF ; [.1972.0020.0002.2CBF] # COPTIC SMALL LETTER OLD COPTIC OOU
+2CBE ; [.1972.0020.0008.2CBE] # COPTIC CAPITAL LETTER OLD COPTIC OOU
+2CC1 ; [.1973.0020.0002.2CC1] # COPTIC SMALL LETTER SAMPI
+2CC0 ; [.1973.0020.0008.2CC0] # COPTIC CAPITAL LETTER SAMPI
+03E3 ; [.1974.0020.0002.03E3] # COPTIC SMALL LETTER SHEI
+03E2 ; [.1974.0020.0008.03E2] # COPTIC CAPITAL LETTER SHEI
+2CEC ; [.1975.0020.0002.2CEC] # COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI
+2CEB ; [.1975.0020.0008.2CEB] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
+2CC3 ; [.1976.0020.0002.2CC3] # COPTIC SMALL LETTER CROSSED SHEI
+2CC2 ; [.1976.0020.0008.2CC2] # COPTIC CAPITAL LETTER CROSSED SHEI
+2CC5 ; [.1977.0020.0002.2CC5] # COPTIC SMALL LETTER OLD COPTIC SHEI
+2CC4 ; [.1977.0020.0008.2CC4] # COPTIC CAPITAL LETTER OLD COPTIC SHEI
+2CC7 ; [.1978.0020.0002.2CC7] # COPTIC SMALL LETTER OLD COPTIC ESH
+2CC6 ; [.1978.0020.0008.2CC6] # COPTIC CAPITAL LETTER OLD COPTIC ESH
+03E5 ; [.1979.0020.0002.03E5] # COPTIC SMALL LETTER FEI
+03E4 ; [.1979.0020.0008.03E4] # COPTIC CAPITAL LETTER FEI
+03E7 ; [.197A.0020.0002.03E7] # COPTIC SMALL LETTER KHEI
+03E6 ; [.197A.0020.0008.03E6] # COPTIC CAPITAL LETTER KHEI
+2CF3 ; [.197B.0020.0002.2CF3] # COPTIC SMALL LETTER BOHAIRIC KHEI
+2CF2 ; [.197B.0020.0008.2CF2] # COPTIC CAPITAL LETTER BOHAIRIC KHEI
+2CC9 ; [.197C.0020.0002.2CC9] # COPTIC SMALL LETTER AKHMIMIC KHEI
+2CC8 ; [.197C.0020.0008.2CC8] # COPTIC CAPITAL LETTER AKHMIMIC KHEI
+03E9 ; [.197D.0020.0002.03E9] # COPTIC SMALL LETTER HORI
+03E8 ; [.197D.0020.0008.03E8] # COPTIC CAPITAL LETTER HORI
+2CCB ; [.197E.0020.0002.2CCB] # COPTIC SMALL LETTER DIALECT-P HORI
+2CCA ; [.197E.0020.0008.2CCA] # COPTIC CAPITAL LETTER DIALECT-P HORI
+2CCD ; [.197F.0020.0002.2CCD] # COPTIC SMALL LETTER OLD COPTIC HORI
+2CCC ; [.197F.0020.0008.2CCC] # COPTIC CAPITAL LETTER OLD COPTIC HORI
+2CCF ; [.1980.0020.0002.2CCF] # COPTIC SMALL LETTER OLD COPTIC HA
+2CCE ; [.1980.0020.0008.2CCE] # COPTIC CAPITAL LETTER OLD COPTIC HA
+2CD1 ; [.1981.0020.0002.2CD1] # COPTIC SMALL LETTER L-SHAPED HA
+2CD0 ; [.1981.0020.0008.2CD0] # COPTIC CAPITAL LETTER L-SHAPED HA
+2CD3 ; [.1982.0020.0002.2CD3] # COPTIC SMALL LETTER OLD COPTIC HEI
+2CD2 ; [.1982.0020.0008.2CD2] # COPTIC CAPITAL LETTER OLD COPTIC HEI
+2CD5 ; [.1983.0020.0002.2CD5] # COPTIC SMALL LETTER OLD COPTIC HAT
+2CD4 ; [.1983.0020.0008.2CD4] # COPTIC CAPITAL LETTER OLD COPTIC HAT
+03EB ; [.1984.0020.0002.03EB] # COPTIC SMALL LETTER GANGIA
+03EA ; [.1984.0020.0008.03EA] # COPTIC CAPITAL LETTER GANGIA
+2CEE ; [.1985.0020.0002.2CEE] # COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+2CED ; [.1985.0020.0008.2CED] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
+2CD7 ; [.1986.0020.0002.2CD7] # COPTIC SMALL LETTER OLD COPTIC GANGIA
+2CD6 ; [.1986.0020.0008.2CD6] # COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+03ED ; [.1987.0020.0002.03ED] # COPTIC SMALL LETTER SHIMA
+03EC ; [.1987.0020.0008.03EC] # COPTIC CAPITAL LETTER SHIMA
+2CD9 ; [.1988.0020.0002.2CD9] # COPTIC SMALL LETTER OLD COPTIC DJA
+2CD8 ; [.1988.0020.0008.2CD8] # COPTIC CAPITAL LETTER OLD COPTIC DJA
+2CDB ; [.1989.0020.0002.2CDB] # COPTIC SMALL LETTER OLD COPTIC SHIMA
+2CDA ; [.1989.0020.0008.2CDA] # COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+2CDD ; [.198A.0020.0002.2CDD] # COPTIC SMALL LETTER OLD NUBIAN SHIMA
+2CDC ; [.198A.0020.0008.2CDC] # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+03EF ; [.198B.0020.0002.03EF] # COPTIC SMALL LETTER DEI
+03EE ; [.198B.0020.0008.03EE] # COPTIC CAPITAL LETTER DEI
+2CB3 ; [.198C.0020.0002.2CB3] # COPTIC SMALL LETTER DIALECT-P ALEF
+2CB2 ; [.198C.0020.0008.2CB2] # COPTIC CAPITAL LETTER DIALECT-P ALEF
+2CB5 ; [.198D.0020.0002.2CB5] # COPTIC SMALL LETTER OLD COPTIC AIN
+2CB4 ; [.198D.0020.0008.2CB4] # COPTIC CAPITAL LETTER OLD COPTIC AIN
+2CDF ; [.198E.0020.0002.2CDF] # COPTIC SMALL LETTER OLD NUBIAN NGI
+2CDE ; [.198E.0020.0008.2CDE] # COPTIC CAPITAL LETTER OLD NUBIAN NGI
+2CE1 ; [.198F.0020.0002.2CE1] # COPTIC SMALL LETTER OLD NUBIAN NYI
+2CE0 ; [.198F.0020.0008.2CE0] # COPTIC CAPITAL LETTER OLD NUBIAN NYI
+2CE3 ; [.1990.0020.0002.2CE3] # COPTIC SMALL LETTER OLD NUBIAN WAU
+2CE2 ; [.1990.0020.0008.2CE2] # COPTIC CAPITAL LETTER OLD NUBIAN WAU
+0430 ; [.1991.0020.0002.0430] # CYRILLIC SMALL LETTER A
+2DF6 ; [.1991.0020.0004.2DF6] # COMBINING CYRILLIC LETTER A
+0410 ; [.1991.0020.0008.0410] # CYRILLIC CAPITAL LETTER A
+04D1 ; [.1995.0020.0002.04D1] # CYRILLIC SMALL LETTER A WITH BREVE
+0430 0306 ; [.1995.0020.0002.04D1] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1995.0020.0008.04D0] # CYRILLIC CAPITAL LETTER A WITH BREVE
+0410 0306 ; [.1995.0020.0008.04D0] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1999.0020.0002.04D3] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+0430 0308 ; [.1999.0020.0002.04D3] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1999.0020.0008.04D2] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+0410 0308 ; [.1999.0020.0008.04D2] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D9 ; [.199D.0020.0002.04D9] # CYRILLIC SMALL LETTER SCHWA
+04D8 ; [.199D.0020.0008.04D8] # CYRILLIC CAPITAL LETTER SCHWA
+04DB ; [.19A1.0020.0002.04DB] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04D9 0308 ; [.19A1.0020.0002.04DB] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.19A1.0020.0008.04DA] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04D8 0308 ; [.19A1.0020.0008.04DA] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04D5 ; [.19A5.0020.0002.04D5] # CYRILLIC SMALL LIGATURE A IE
+04D4 ; [.19A5.0020.0008.04D4] # CYRILLIC CAPITAL LIGATURE A IE
+0431 ; [.19A9.0020.0002.0431] # CYRILLIC SMALL LETTER BE
+2DE0 ; [.19A9.0020.0004.2DE0] # COMBINING CYRILLIC LETTER BE
+0411 ; [.19A9.0020.0008.0411] # CYRILLIC CAPITAL LETTER BE
+0432 ; [.19AD.0020.0002.0432] # CYRILLIC SMALL LETTER VE
+2DE1 ; [.19AD.0020.0004.2DE1] # COMBINING CYRILLIC LETTER VE
+0412 ; [.19AD.0020.0008.0412] # CYRILLIC CAPITAL LETTER VE
+0433 ; [.19B1.0020.0002.0433] # CYRILLIC SMALL LETTER GHE
+2DE2 ; [.19B1.0020.0004.2DE2] # COMBINING CYRILLIC LETTER GHE
+0413 ; [.19B1.0020.0008.0413] # CYRILLIC CAPITAL LETTER GHE
+0491 ; [.19B1.0020.0004.0491][.0000.013A.0004.0491] # CYRILLIC SMALL LETTER GHE WITH UPTURN
+0490 ; [.19B1.0020.000A.0490][.0000.013A.0004.0490] # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0493 ; [.19B5.0020.0002.0493] # CYRILLIC SMALL LETTER GHE WITH STROKE
+0492 ; [.19B5.0020.0008.0492] # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+04FB ; [.19B9.0020.0002.04FB] # CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
+04FA ; [.19B9.0020.0008.04FA] # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+0495 ; [.19BD.0020.0002.0495] # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0494 ; [.19BD.0020.0008.0494] # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+04F7 ; [.19C1.0020.0002.04F7] # CYRILLIC SMALL LETTER GHE WITH DESCENDER
+04F6 ; [.19C1.0020.0008.04F6] # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+0434 ; [.19C5.0020.0002.0434] # CYRILLIC SMALL LETTER DE
+2DE3 ; [.19C5.0020.0004.2DE3] # COMBINING CYRILLIC LETTER DE
+0414 ; [.19C5.0020.0008.0414] # CYRILLIC CAPITAL LETTER DE
+0501 ; [.19C9.0020.0002.0501] # CYRILLIC SMALL LETTER KOMI DE
+0500 ; [.19C9.0020.0008.0500] # CYRILLIC CAPITAL LETTER KOMI DE
+A681 ; [.19CA.0020.0002.A681] # CYRILLIC SMALL LETTER DWE
+A680 ; [.19CA.0020.0008.A680] # CYRILLIC CAPITAL LETTER DWE
+0452 ; [.19CB.0020.0002.0452] # CYRILLIC SMALL LETTER DJE
+0402 ; [.19CB.0020.0008.0402] # CYRILLIC CAPITAL LETTER DJE
+A663 ; [.19CF.0020.0002.A663] # CYRILLIC SMALL LETTER SOFT DE
+A662 ; [.19CF.0020.0008.A662] # CYRILLIC CAPITAL LETTER SOFT DE
+0503 ; [.19D0.0020.0002.0503] # CYRILLIC SMALL LETTER KOMI DJE
+0502 ; [.19D0.0020.0008.0502] # CYRILLIC CAPITAL LETTER KOMI DJE
+0453 ; [.19D1.0020.0002.0453] # CYRILLIC SMALL LETTER GJE
+0433 0301 ; [.19D1.0020.0002.0453] # CYRILLIC SMALL LETTER GJE
+0433 0341 ; [.19D1.0020.0002.0453] # CYRILLIC SMALL LETTER GJE
+0403 ; [.19D1.0020.0008.0403] # CYRILLIC CAPITAL LETTER GJE
+0413 0301 ; [.19D1.0020.0008.0403] # CYRILLIC CAPITAL LETTER GJE
+0413 0341 ; [.19D1.0020.0008.0403] # CYRILLIC CAPITAL LETTER GJE
+0499 ; [.19D5.0020.0002.0499] # CYRILLIC SMALL LETTER ZE WITH DESCENDER
+0498 ; [.19D5.0020.0008.0498] # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+0435 ; [.19D9.0020.0002.0435] # CYRILLIC SMALL LETTER IE
+2DF7 ; [.19D9.0020.0004.2DF7] # COMBINING CYRILLIC LETTER IE
+0415 ; [.19D9.0020.0008.0415] # CYRILLIC CAPITAL LETTER IE
+0450 ; [.19D9.0020.0002.0435][.0000.0035.0002.0300] # CYRILLIC SMALL LETTER IE WITH GRAVE
+0400 ; [.19D9.0020.0008.0415][.0000.0035.0002.0300] # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0451 ; [.19D9.0020.0002.0435][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER IO
+0401 ; [.19D9.0020.0008.0415][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER IO
+04D7 ; [.19DD.0020.0002.04D7] # CYRILLIC SMALL LETTER IE WITH BREVE
+0435 0306 ; [.19DD.0020.0002.04D7] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.19DD.0020.0008.04D6] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+0415 0306 ; [.19DD.0020.0008.04D6] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+0454 ; [.19E1.0020.0002.0454] # CYRILLIC SMALL LETTER UKRAINIAN IE
+A674 ; [.19E1.0020.0004.A674] # COMBINING CYRILLIC LETTER UKRAINIAN IE
+0404 ; [.19E1.0020.0008.0404] # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0436 ; [.19E5.0020.0002.0436] # CYRILLIC SMALL LETTER ZHE
+2DE4 ; [.19E5.0020.0004.2DE4] # COMBINING CYRILLIC LETTER ZHE
+0416 ; [.19E5.0020.0008.0416] # CYRILLIC CAPITAL LETTER ZHE
+04C2 ; [.19E5.0020.0002.0436][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER ZHE WITH BREVE
+04C1 ; [.19E5.0020.0008.0416][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+A685 ; [.19E9.0020.0002.A685] # CYRILLIC SMALL LETTER ZHWE
+A684 ; [.19E9.0020.0008.A684] # CYRILLIC CAPITAL LETTER ZHWE
+04DD ; [.19EA.0020.0002.04DD] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+0436 0308 ; [.19EA.0020.0002.04DD] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.19EA.0020.0008.04DC] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+0416 0308 ; [.19EA.0020.0008.04DC] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+0497 ; [.19EE.0020.0002.0497] # CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0496 ; [.19EE.0020.0008.0496] # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0437 ; [.19F2.0020.0002.0437] # CYRILLIC SMALL LETTER ZE
+2DE5 ; [.19F2.0020.0004.2DE5] # COMBINING CYRILLIC LETTER ZE
+0417 ; [.19F2.0020.0008.0417] # CYRILLIC CAPITAL LETTER ZE
+A641 ; [.19F6.0020.0002.A641] # CYRILLIC SMALL LETTER ZEMLYA
+A640 ; [.19F6.0020.0008.A640] # CYRILLIC CAPITAL LETTER ZEMLYA
+0505 ; [.19F7.0020.0002.0505] # CYRILLIC SMALL LETTER KOMI ZJE
+0504 ; [.19F7.0020.0008.0504] # CYRILLIC CAPITAL LETTER KOMI ZJE
+0511 ; [.19F8.0020.0002.0511] # CYRILLIC SMALL LETTER REVERSED ZE
+0510 ; [.19F8.0020.0008.0510] # CYRILLIC CAPITAL LETTER REVERSED ZE
+04DF ; [.19F9.0020.0002.04DF] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+0437 0308 ; [.19F9.0020.0002.04DF] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19F9.0020.0008.04DE] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+0417 0308 ; [.19F9.0020.0008.04DE] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+A643 ; [.19FD.0020.0002.A643] # CYRILLIC SMALL LETTER DZELO
+A642 ; [.19FD.0020.0008.A642] # CYRILLIC CAPITAL LETTER DZELO
+0455 ; [.19FE.0020.0002.0455] # CYRILLIC SMALL LETTER DZE
+0405 ; [.19FE.0020.0008.0405] # CYRILLIC CAPITAL LETTER DZE
+A645 ; [.1A02.0020.0002.A645] # CYRILLIC SMALL LETTER REVERSED DZE
+A644 ; [.1A02.0020.0008.A644] # CYRILLIC CAPITAL LETTER REVERSED DZE
+04E1 ; [.1A03.0020.0002.04E1] # CYRILLIC SMALL LETTER ABKHASIAN DZE
+04E0 ; [.1A03.0020.0008.04E0] # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+A689 ; [.1A07.0020.0002.A689] # CYRILLIC SMALL LETTER DZZE
+A688 ; [.1A07.0020.0008.A688] # CYRILLIC CAPITAL LETTER DZZE
+0507 ; [.1A08.0020.0002.0507] # CYRILLIC SMALL LETTER KOMI DZJE
+0506 ; [.1A08.0020.0008.0506] # CYRILLIC CAPITAL LETTER KOMI DZJE
+A683 ; [.1A09.0020.0002.A683] # CYRILLIC SMALL LETTER DZWE
+A682 ; [.1A09.0020.0008.A682] # CYRILLIC CAPITAL LETTER DZWE
+0438 ; [.1A0A.0020.0002.0438] # CYRILLIC SMALL LETTER I
+A675 ; [.1A0A.0020.0004.A675] # COMBINING CYRILLIC LETTER I
+0418 ; [.1A0A.0020.0008.0418] # CYRILLIC CAPITAL LETTER I
+045D ; [.1A0A.0020.0002.0438][.0000.0035.0002.0300] # CYRILLIC SMALL LETTER I WITH GRAVE
+040D ; [.1A0A.0020.0008.0418][.0000.0035.0002.0300] # CYRILLIC CAPITAL LETTER I WITH GRAVE
+04E3 ; [.1A0A.0020.0002.0438][.0000.005B.0002.0304] # CYRILLIC SMALL LETTER I WITH MACRON
+04E2 ; [.1A0A.0020.0008.0418][.0000.005B.0002.0304] # CYRILLIC CAPITAL LETTER I WITH MACRON
+048B ; [.1A0E.0020.0002.048B] # CYRILLIC SMALL LETTER SHORT I WITH TAIL
+048A ; [.1A0E.0020.0008.048A] # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+04E5 ; [.1A12.0020.0002.04E5] # CYRILLIC SMALL LETTER I WITH DIAERESIS
+0438 0308 ; [.1A12.0020.0002.04E5] # CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E4 ; [.1A12.0020.0008.04E4] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+0418 0308 ; [.1A12.0020.0008.04E4] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+0456 ; [.1A16.0020.0002.0456] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0406 ; [.1A16.0020.0008.0406] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+A647 ; [.1A1A.0020.0002.A647] # CYRILLIC SMALL LETTER IOTA
+A646 ; [.1A1A.0020.0008.A646] # CYRILLIC CAPITAL LETTER IOTA
+0457 ; [.1A1B.0020.0002.0457] # CYRILLIC SMALL LETTER YI
+0456 0308 ; [.1A1B.0020.0002.0457] # CYRILLIC SMALL LETTER YI
+A676 ; [.1A1B.0020.0004.A676] # COMBINING CYRILLIC LETTER YI
+0407 ; [.1A1B.0020.0008.0407] # CYRILLIC CAPITAL LETTER YI
+0406 0308 ; [.1A1B.0020.0008.0407] # CYRILLIC CAPITAL LETTER YI
+0439 ; [.1A1F.0020.0002.0439] # CYRILLIC SMALL LETTER SHORT I
+0438 0306 ; [.1A1F.0020.0002.0439] # CYRILLIC SMALL LETTER SHORT I
+0419 ; [.1A1F.0020.0008.0419] # CYRILLIC CAPITAL LETTER SHORT I
+0418 0306 ; [.1A1F.0020.0008.0419] # CYRILLIC CAPITAL LETTER SHORT I
+0458 ; [.1A23.0020.0002.0458] # CYRILLIC SMALL LETTER JE
+0408 ; [.1A23.0020.0008.0408] # CYRILLIC CAPITAL LETTER JE
+A649 ; [.1A27.0020.0002.A649] # CYRILLIC SMALL LETTER DJERV
+2DF8 ; [.1A27.0020.0004.2DF8] # COMBINING CYRILLIC LETTER DJERV
+A648 ; [.1A27.0020.0008.A648] # CYRILLIC CAPITAL LETTER DJERV
+043A ; [.1A28.0020.0002.043A] # CYRILLIC SMALL LETTER KA
+2DE6 ; [.1A28.0020.0004.2DE6] # COMBINING CYRILLIC LETTER KA
+041A ; [.1A28.0020.0008.041A] # CYRILLIC CAPITAL LETTER KA
+049B ; [.1A2C.0020.0002.049B] # CYRILLIC SMALL LETTER KA WITH DESCENDER
+049A ; [.1A2C.0020.0008.049A] # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+04C4 ; [.1A30.0020.0002.04C4] # CYRILLIC SMALL LETTER KA WITH HOOK
+04C3 ; [.1A30.0020.0008.04C3] # CYRILLIC CAPITAL LETTER KA WITH HOOK
+04A1 ; [.1A34.0020.0002.04A1] # CYRILLIC SMALL LETTER BASHKIR KA
+04A0 ; [.1A34.0020.0008.04A0] # CYRILLIC CAPITAL LETTER BASHKIR KA
+049F ; [.1A38.0020.0002.049F] # CYRILLIC SMALL LETTER KA WITH STROKE
+049E ; [.1A38.0020.0008.049E] # CYRILLIC CAPITAL LETTER KA WITH STROKE
+049D ; [.1A3C.0020.0002.049D] # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049C ; [.1A3C.0020.0008.049C] # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+051F ; [.1A40.0020.0002.051F] # CYRILLIC SMALL LETTER ALEUT KA
+051E ; [.1A40.0020.0008.051E] # CYRILLIC CAPITAL LETTER ALEUT KA
+051B ; [.1A41.0020.0002.051B] # CYRILLIC SMALL LETTER QA
+051A ; [.1A41.0020.0008.051A] # CYRILLIC CAPITAL LETTER QA
+043B ; [.1A42.0020.0002.043B] # CYRILLIC SMALL LETTER EL
+2DE7 ; [.1A42.0020.0004.2DE7] # COMBINING CYRILLIC LETTER EL
+041B ; [.1A42.0020.0008.041B] # CYRILLIC CAPITAL LETTER EL
+1D2B ; [.1A46.0020.0002.1D2B] # CYRILLIC LETTER SMALL CAPITAL EL
+04C6 ; [.1A47.0020.0002.04C6] # CYRILLIC SMALL LETTER EL WITH TAIL
+04C5 ; [.1A47.0020.0008.04C5] # CYRILLIC CAPITAL LETTER EL WITH TAIL
+0513 ; [.1A4B.0020.0002.0513] # CYRILLIC SMALL LETTER EL WITH HOOK
+0512 ; [.1A4B.0020.0008.0512] # CYRILLIC CAPITAL LETTER EL WITH HOOK
+0521 ; [.1A4C.0020.0002.0521] # CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK
+0520 ; [.1A4C.0020.0008.0520] # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
+0459 ; [.1A4D.0020.0002.0459] # CYRILLIC SMALL LETTER LJE
+0409 ; [.1A4D.0020.0008.0409] # CYRILLIC CAPITAL LETTER LJE
+A665 ; [.1A51.0020.0002.A665] # CYRILLIC SMALL LETTER SOFT EL
+A664 ; [.1A51.0020.0008.A664] # CYRILLIC CAPITAL LETTER SOFT EL
+0509 ; [.1A52.0020.0002.0509] # CYRILLIC SMALL LETTER KOMI LJE
+0508 ; [.1A52.0020.0008.0508] # CYRILLIC CAPITAL LETTER KOMI LJE
+0515 ; [.1A53.0020.0002.0515] # CYRILLIC SMALL LETTER LHA
+0514 ; [.1A53.0020.0008.0514] # CYRILLIC CAPITAL LETTER LHA
+043C ; [.1A54.0020.0002.043C] # CYRILLIC SMALL LETTER EM
+2DE8 ; [.1A54.0020.0004.2DE8] # COMBINING CYRILLIC LETTER EM
+041C ; [.1A54.0020.0008.041C] # CYRILLIC CAPITAL LETTER EM
+04CE ; [.1A58.0020.0002.04CE] # CYRILLIC SMALL LETTER EM WITH TAIL
+04CD ; [.1A58.0020.0008.04CD] # CYRILLIC CAPITAL LETTER EM WITH TAIL
+A667 ; [.1A5C.0020.0002.A667] # CYRILLIC SMALL LETTER SOFT EM
+A666 ; [.1A5C.0020.0008.A666] # CYRILLIC CAPITAL LETTER SOFT EM
+043D ; [.1A5D.0020.0002.043D] # CYRILLIC SMALL LETTER EN
+2DE9 ; [.1A5D.0020.0004.2DE9] # COMBINING CYRILLIC LETTER EN
+041D ; [.1A5D.0020.0008.041D] # CYRILLIC CAPITAL LETTER EN
+1D78 ; [.1A5D.0020.0014.1D78] # MODIFIER LETTER CYRILLIC EN
+04CA ; [.1A61.0020.0002.04CA] # CYRILLIC SMALL LETTER EN WITH TAIL
+04C9 ; [.1A61.0020.0008.04C9] # CYRILLIC CAPITAL LETTER EN WITH TAIL
+04A3 ; [.1A65.0020.0002.04A3] # CYRILLIC SMALL LETTER EN WITH DESCENDER
+04A2 ; [.1A65.0020.0008.04A2] # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04C8 ; [.1A69.0020.0002.04C8] # CYRILLIC SMALL LETTER EN WITH HOOK
+04C7 ; [.1A69.0020.0008.04C7] # CYRILLIC CAPITAL LETTER EN WITH HOOK
+0523 ; [.1A6D.0020.0002.0523] # CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
+0522 ; [.1A6D.0020.0008.0522] # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
+04A5 ; [.1A6E.0020.0002.04A5] # CYRILLIC SMALL LIGATURE EN GHE
+04A4 ; [.1A6E.0020.0008.04A4] # CYRILLIC CAPITAL LIGATURE EN GHE
+045A ; [.1A72.0020.0002.045A] # CYRILLIC SMALL LETTER NJE
+040A ; [.1A72.0020.0008.040A] # CYRILLIC CAPITAL LETTER NJE
+050B ; [.1A76.0020.0002.050B] # CYRILLIC SMALL LETTER KOMI NJE
+050A ; [.1A76.0020.0008.050A] # CYRILLIC CAPITAL LETTER KOMI NJE
+043E ; [.1A77.0020.0002.043E] # CYRILLIC SMALL LETTER O
+2DEA ; [.1A77.0020.0004.2DEA] # COMBINING CYRILLIC LETTER O
+A669 ; [.1A77.0020.0004.A669] # CYRILLIC SMALL LETTER MONOCULAR O
+A66B ; [.1A77.0020.0004.A66B] # CYRILLIC SMALL LETTER BINOCULAR O
+A66D ; [.1A77.0020.0004.A66D] # CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+A66E ; [.1A77.0020.0004.A66E] # CYRILLIC LETTER MULTIOCULAR O
+041E ; [.1A77.0020.0008.041E] # CYRILLIC CAPITAL LETTER O
+A668 ; [.1A77.0020.000A.A668] # CYRILLIC CAPITAL LETTER MONOCULAR O
+A66A ; [.1A77.0020.000A.A66A] # CYRILLIC CAPITAL LETTER BINOCULAR O
+A66C ; [.1A77.0020.000A.A66C] # CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
+04E7 ; [.1A7B.0020.0002.04E7] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+043E 0308 ; [.1A7B.0020.0002.04E7] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A7B.0020.0008.04E6] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+041E 0308 ; [.1A7B.0020.0008.04E6] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E9 ; [.1A7F.0020.0002.04E9] # CYRILLIC SMALL LETTER BARRED O
+04E8 ; [.1A7F.0020.0008.04E8] # CYRILLIC CAPITAL LETTER BARRED O
+04EB ; [.1A83.0020.0002.04EB] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04E9 0308 ; [.1A83.0020.0002.04EB] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A83.0020.0008.04EA] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04E8 0308 ; [.1A83.0020.0008.04EA] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+043F ; [.1A87.0020.0002.043F] # CYRILLIC SMALL LETTER PE
+2DEB ; [.1A87.0020.0004.2DEB] # COMBINING CYRILLIC LETTER PE
+041F ; [.1A87.0020.0008.041F] # CYRILLIC CAPITAL LETTER PE
+0525 ; [.1A8B.0020.0002.0525] # CYRILLIC SMALL LETTER PE WITH DESCENDER
+0524 ; [.1A8B.0020.0008.0524] # CYRILLIC CAPITAL LETTER PE WITH DESCENDER
+04A7 ; [.1A8C.0020.0002.04A7] # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04A6 ; [.1A8C.0020.0008.04A6] # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+0481 ; [.1A90.0020.0002.0481] # CYRILLIC SMALL LETTER KOPPA
+0480 ; [.1A90.0020.0008.0480] # CYRILLIC CAPITAL LETTER KOPPA
+0440 ; [.1A94.0020.0002.0440] # CYRILLIC SMALL LETTER ER
+2DEC ; [.1A94.0020.0004.2DEC] # COMBINING CYRILLIC LETTER ER
+0420 ; [.1A94.0020.0008.0420] # CYRILLIC CAPITAL LETTER ER
+048F ; [.1A98.0020.0002.048F] # CYRILLIC SMALL LETTER ER WITH TICK
+048E ; [.1A98.0020.0008.048E] # CYRILLIC CAPITAL LETTER ER WITH TICK
+0517 ; [.1A9C.0020.0002.0517] # CYRILLIC SMALL LETTER RHA
+0516 ; [.1A9C.0020.0008.0516] # CYRILLIC CAPITAL LETTER RHA
+0441 ; [.1A9D.0020.0002.0441] # CYRILLIC SMALL LETTER ES
+2DED ; [.1A9D.0020.0004.2DED] # COMBINING CYRILLIC LETTER ES
+0421 ; [.1A9D.0020.0008.0421] # CYRILLIC CAPITAL LETTER ES
+2DF5 ; [.1A9D.0020.0004.2DF5][.1AA6.0020.0004.2DF5] # COMBINING CYRILLIC LETTER ES-TE
+050D ; [.1AA1.0020.0002.050D] # CYRILLIC SMALL LETTER KOMI SJE
+050C ; [.1AA1.0020.0008.050C] # CYRILLIC CAPITAL LETTER KOMI SJE
+04AB ; [.1AA2.0020.0002.04AB] # CYRILLIC SMALL LETTER ES WITH DESCENDER
+04AA ; [.1AA2.0020.0008.04AA] # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+0442 ; [.1AA6.0020.0002.0442] # CYRILLIC SMALL LETTER TE
+2DEE ; [.1AA6.0020.0004.2DEE] # COMBINING CYRILLIC LETTER TE
+0422 ; [.1AA6.0020.0008.0422] # CYRILLIC CAPITAL LETTER TE
+A68D ; [.1AAA.0020.0002.A68D] # CYRILLIC SMALL LETTER TWE
+A68C ; [.1AAA.0020.0008.A68C] # CYRILLIC CAPITAL LETTER TWE
+050F ; [.1AAB.0020.0002.050F] # CYRILLIC SMALL LETTER KOMI TJE
+050E ; [.1AAB.0020.0008.050E] # CYRILLIC CAPITAL LETTER KOMI TJE
+04AD ; [.1AAC.0020.0002.04AD] # CYRILLIC SMALL LETTER TE WITH DESCENDER
+04AC ; [.1AAC.0020.0008.04AC] # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+A68B ; [.1AB0.0020.0002.A68B] # CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK
+A68A ; [.1AB0.0020.0008.A68A] # CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
+045B ; [.1AB1.0020.0002.045B] # CYRILLIC SMALL LETTER TSHE
+040B ; [.1AB1.0020.0008.040B] # CYRILLIC CAPITAL LETTER TSHE
+045C ; [.1AB5.0020.0002.045C] # CYRILLIC SMALL LETTER KJE
+043A 0301 ; [.1AB5.0020.0002.045C] # CYRILLIC SMALL LETTER KJE
+043A 0341 ; [.1AB5.0020.0002.045C] # CYRILLIC SMALL LETTER KJE
+040C ; [.1AB5.0020.0008.040C] # CYRILLIC CAPITAL LETTER KJE
+041A 0301 ; [.1AB5.0020.0008.040C] # CYRILLIC CAPITAL LETTER KJE
+041A 0341 ; [.1AB5.0020.0008.040C] # CYRILLIC CAPITAL LETTER KJE
+0443 ; [.1AB9.0020.0002.0443] # CYRILLIC SMALL LETTER U
+A677 ; [.1AB9.0020.0004.A677] # COMBINING CYRILLIC LETTER U
+0423 ; [.1AB9.0020.0008.0423] # CYRILLIC CAPITAL LETTER U
+04EF ; [.1AB9.0020.0002.0443][.0000.005B.0002.0304] # CYRILLIC SMALL LETTER U WITH MACRON
+04EE ; [.1AB9.0020.0008.0423][.0000.005B.0002.0304] # CYRILLIC CAPITAL LETTER U WITH MACRON
+045E ; [.1ABD.0020.0002.045E] # CYRILLIC SMALL LETTER SHORT U
+0443 0306 ; [.1ABD.0020.0002.045E] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.1ABD.0020.0008.040E] # CYRILLIC CAPITAL LETTER SHORT U
+0423 0306 ; [.1ABD.0020.0008.040E] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.1AC1.0020.0002.04F1] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+0443 0308 ; [.1AC1.0020.0002.04F1] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.1AC1.0020.0008.04F0] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+0423 0308 ; [.1AC1.0020.0008.04F0] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.1AC5.0020.0002.04F3] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+0443 030B ; [.1AC5.0020.0002.04F3] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.1AC5.0020.0008.04F2] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+0423 030B ; [.1AC5.0020.0008.04F2] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04AF ; [.1AC9.0020.0002.04AF] # CYRILLIC SMALL LETTER STRAIGHT U
+04AE ; [.1AC9.0020.0008.04AE] # CYRILLIC CAPITAL LETTER STRAIGHT U
+04B1 ; [.1ACD.0020.0002.04B1] # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B0 ; [.1ACD.0020.0008.04B0] # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+A64B ; [.1AD1.0020.0002.A64B] # CYRILLIC SMALL LETTER MONOGRAPH UK
+2DF9 ; [.1AD1.0020.0004.2DF9] # COMBINING CYRILLIC LETTER MONOGRAPH UK
+A64A ; [.1AD1.0020.0008.A64A] # CYRILLIC CAPITAL LETTER MONOGRAPH UK
+0479 ; [.1AD2.0020.0002.0479] # CYRILLIC SMALL LETTER UK
+0478 ; [.1AD2.0020.0008.0478] # CYRILLIC CAPITAL LETTER UK
+0444 ; [.1AD6.0020.0002.0444] # CYRILLIC SMALL LETTER EF
+0424 ; [.1AD6.0020.0008.0424] # CYRILLIC CAPITAL LETTER EF
+0445 ; [.1ADA.0020.0002.0445] # CYRILLIC SMALL LETTER HA
+2DEF ; [.1ADA.0020.0004.2DEF] # COMBINING CYRILLIC LETTER HA
+0425 ; [.1ADA.0020.0008.0425] # CYRILLIC CAPITAL LETTER HA
+04FD ; [.1ADE.0020.0002.04FD] # CYRILLIC SMALL LETTER HA WITH HOOK
+04FC ; [.1ADE.0020.0008.04FC] # CYRILLIC CAPITAL LETTER HA WITH HOOK
+04FF ; [.1AE2.0020.0002.04FF] # CYRILLIC SMALL LETTER HA WITH STROKE
+04FE ; [.1AE2.0020.0008.04FE] # CYRILLIC CAPITAL LETTER HA WITH STROKE
+04B3 ; [.1AE6.0020.0002.04B3] # CYRILLIC SMALL LETTER HA WITH DESCENDER
+04B2 ; [.1AE6.0020.0008.04B2] # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04BB ; [.1AEA.0020.0002.04BB] # CYRILLIC SMALL LETTER SHHA
+04BA ; [.1AEA.0020.0008.04BA] # CYRILLIC CAPITAL LETTER SHHA
+0527 ; [.1AEE.0020.0002.0527] # CYRILLIC SMALL LETTER SHHA WITH DESCENDER
+0526 ; [.1AEE.0020.0008.0526] # CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
+A695 ; [.1AEF.0020.0002.A695] # CYRILLIC SMALL LETTER HWE
+A694 ; [.1AEF.0020.0008.A694] # CYRILLIC CAPITAL LETTER HWE
+0461 ; [.1AF0.0020.0002.0461] # CYRILLIC SMALL LETTER OMEGA
+A67B ; [.1AF0.0020.0004.A67B] # COMBINING CYRILLIC LETTER OMEGA
+0460 ; [.1AF0.0020.0008.0460] # CYRILLIC CAPITAL LETTER OMEGA
+047F ; [.1AF4.0020.0002.047F] # CYRILLIC SMALL LETTER OT
+047E ; [.1AF4.0020.0008.047E] # CYRILLIC CAPITAL LETTER OT
+A64D ; [.1AF8.0020.0002.A64D] # CYRILLIC SMALL LETTER BROAD OMEGA
+A64C ; [.1AF8.0020.0008.A64C] # CYRILLIC CAPITAL LETTER BROAD OMEGA
+047D ; [.1AF9.0020.0002.047D] # CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047C ; [.1AF9.0020.0008.047C] # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047B ; [.1AFD.0020.0002.047B] # CYRILLIC SMALL LETTER ROUND OMEGA
+047A ; [.1AFD.0020.0008.047A] # CYRILLIC CAPITAL LETTER ROUND OMEGA
+0446 ; [.1B01.0020.0002.0446] # CYRILLIC SMALL LETTER TSE
+2DF0 ; [.1B01.0020.0004.2DF0] # COMBINING CYRILLIC LETTER TSE
+0426 ; [.1B01.0020.0008.0426] # CYRILLIC CAPITAL LETTER TSE
+A661 ; [.1B05.0020.0002.A661] # CYRILLIC SMALL LETTER REVERSED TSE
+A660 ; [.1B05.0020.0008.A660] # CYRILLIC CAPITAL LETTER REVERSED TSE
+A68F ; [.1B06.0020.0002.A68F] # CYRILLIC SMALL LETTER TSWE
+A68E ; [.1B06.0020.0008.A68E] # CYRILLIC CAPITAL LETTER TSWE
+04B5 ; [.1B07.0020.0002.04B5] # CYRILLIC SMALL LIGATURE TE TSE
+04B4 ; [.1B07.0020.0008.04B4] # CYRILLIC CAPITAL LIGATURE TE TSE
+A691 ; [.1B0B.0020.0002.A691] # CYRILLIC SMALL LETTER TSSE
+A690 ; [.1B0B.0020.0008.A690] # CYRILLIC CAPITAL LETTER TSSE
+0447 ; [.1B0C.0020.0002.0447] # CYRILLIC SMALL LETTER CHE
+2DF1 ; [.1B0C.0020.0004.2DF1] # COMBINING CYRILLIC LETTER CHE
+0427 ; [.1B0C.0020.0008.0427] # CYRILLIC CAPITAL LETTER CHE
+A693 ; [.1B10.0020.0002.A693] # CYRILLIC SMALL LETTER TCHE
+A692 ; [.1B10.0020.0008.A692] # CYRILLIC CAPITAL LETTER TCHE
+04F5 ; [.1B11.0020.0002.04F5] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+0447 0308 ; [.1B11.0020.0002.04F5] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1B11.0020.0008.04F4] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+0427 0308 ; [.1B11.0020.0008.04F4] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04B7 ; [.1B15.0020.0002.04B7] # CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04B6 ; [.1B15.0020.0008.04B6] # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04CC ; [.1B19.0020.0002.04CC] # CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04CB ; [.1B19.0020.0008.04CB] # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04B9 ; [.1B1D.0020.0002.04B9] # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04B8 ; [.1B1D.0020.0008.04B8] # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+A687 ; [.1B21.0020.0002.A687] # CYRILLIC SMALL LETTER CCHE
+A686 ; [.1B21.0020.0008.A686] # CYRILLIC CAPITAL LETTER CCHE
+04BD ; [.1B22.0020.0002.04BD] # CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BC ; [.1B22.0020.0008.04BC] # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BF ; [.1B26.0020.0002.04BF] # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04BE ; [.1B26.0020.0008.04BE] # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+045F ; [.1B2A.0020.0002.045F] # CYRILLIC SMALL LETTER DZHE
+040F ; [.1B2A.0020.0008.040F] # CYRILLIC CAPITAL LETTER DZHE
+0448 ; [.1B2E.0020.0002.0448] # CYRILLIC SMALL LETTER SHA
+2DF2 ; [.1B2E.0020.0004.2DF2] # COMBINING CYRILLIC LETTER SHA
+0428 ; [.1B2E.0020.0008.0428] # CYRILLIC CAPITAL LETTER SHA
+A697 ; [.1B32.0020.0002.A697] # CYRILLIC SMALL LETTER SHWE
+A696 ; [.1B32.0020.0008.A696] # CYRILLIC CAPITAL LETTER SHWE
+0449 ; [.1B33.0020.0002.0449] # CYRILLIC SMALL LETTER SHCHA
+2DF3 ; [.1B33.0020.0004.2DF3] # COMBINING CYRILLIC LETTER SHCHA
+0429 ; [.1B33.0020.0008.0429] # CYRILLIC CAPITAL LETTER SHCHA
+A64F ; [.1B37.0020.0002.A64F] # CYRILLIC SMALL LETTER NEUTRAL YER
+A64E ; [.1B37.0020.0008.A64E] # CYRILLIC CAPITAL LETTER NEUTRAL YER
+2E2F ; [.1B38.0020.0002.2E2F] # VERTICAL TILDE
+A67F ; [.1B39.0020.0002.A67F] # CYRILLIC PAYEROK
+044A ; [.1B3A.0020.0002.044A] # CYRILLIC SMALL LETTER HARD SIGN
+A678 ; [.1B3A.0020.0004.A678] # COMBINING CYRILLIC LETTER HARD SIGN
+042A ; [.1B3A.0020.0008.042A] # CYRILLIC CAPITAL LETTER HARD SIGN
+A651 ; [.1B3E.0020.0002.A651] # CYRILLIC SMALL LETTER YERU WITH BACK YER
+A650 ; [.1B3E.0020.0008.A650] # CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+044B ; [.1B3F.0020.0002.044B] # CYRILLIC SMALL LETTER YERU
+A679 ; [.1B3F.0020.0004.A679] # COMBINING CYRILLIC LETTER YERU
+042B ; [.1B3F.0020.0008.042B] # CYRILLIC CAPITAL LETTER YERU
+04F9 ; [.1B43.0020.0002.04F9] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+044B 0308 ; [.1B43.0020.0002.04F9] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1B43.0020.0008.04F8] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+042B 0308 ; [.1B43.0020.0008.04F8] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+044C ; [.1B47.0020.0002.044C] # CYRILLIC SMALL LETTER SOFT SIGN
+A67A ; [.1B47.0020.0004.A67A] # COMBINING CYRILLIC LETTER SOFT SIGN
+042C ; [.1B47.0020.0008.042C] # CYRILLIC CAPITAL LETTER SOFT SIGN
+048D ; [.1B4B.0020.0002.048D] # CYRILLIC SMALL LETTER SEMISOFT SIGN
+048C ; [.1B4B.0020.0008.048C] # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+0463 ; [.1B4F.0020.0002.0463] # CYRILLIC SMALL LETTER YAT
+2DFA ; [.1B4F.0020.0004.2DFA] # COMBINING CYRILLIC LETTER YAT
+0462 ; [.1B4F.0020.0008.0462] # CYRILLIC CAPITAL LETTER YAT
+A653 ; [.1B53.0020.0002.A653] # CYRILLIC SMALL LETTER IOTIFIED YAT
+A652 ; [.1B53.0020.0008.A652] # CYRILLIC CAPITAL LETTER IOTIFIED YAT
+044D ; [.1B54.0020.0002.044D] # CYRILLIC SMALL LETTER E
+042D ; [.1B54.0020.0008.042D] # CYRILLIC CAPITAL LETTER E
+04ED ; [.1B58.0020.0002.04ED] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+044D 0308 ; [.1B58.0020.0002.04ED] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B58.0020.0008.04EC] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+042D 0308 ; [.1B58.0020.0008.04EC] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+044E ; [.1B5C.0020.0002.044E] # CYRILLIC SMALL LETTER YU
+2DFB ; [.1B5C.0020.0004.2DFB] # COMBINING CYRILLIC LETTER YU
+042E ; [.1B5C.0020.0008.042E] # CYRILLIC CAPITAL LETTER YU
+A655 ; [.1B60.0020.0002.A655] # CYRILLIC SMALL LETTER REVERSED YU
+A654 ; [.1B60.0020.0008.A654] # CYRILLIC CAPITAL LETTER REVERSED YU
+A657 ; [.1B61.0020.0002.A657] # CYRILLIC SMALL LETTER IOTIFIED A
+2DFC ; [.1B61.0020.0004.2DFC] # COMBINING CYRILLIC LETTER IOTIFIED A
+A656 ; [.1B61.0020.0008.A656] # CYRILLIC CAPITAL LETTER IOTIFIED A
+044F ; [.1B62.0020.0002.044F] # CYRILLIC SMALL LETTER YA
+042F ; [.1B62.0020.0008.042F] # CYRILLIC CAPITAL LETTER YA
+0519 ; [.1B66.0020.0002.0519] # CYRILLIC SMALL LETTER YAE
+0518 ; [.1B66.0020.0008.0518] # CYRILLIC CAPITAL LETTER YAE
+0465 ; [.1B67.0020.0002.0465] # CYRILLIC SMALL LETTER IOTIFIED E
+A69F ; [.1B67.0020.0004.A69F] # COMBINING CYRILLIC LETTER IOTIFIED E
+0464 ; [.1B67.0020.0008.0464] # CYRILLIC CAPITAL LETTER IOTIFIED E
+0467 ; [.1B6B.0020.0002.0467] # CYRILLIC SMALL LETTER LITTLE YUS
+2DFD ; [.1B6B.0020.0004.2DFD] # COMBINING CYRILLIC LETTER LITTLE YUS
+0466 ; [.1B6B.0020.0008.0466] # CYRILLIC CAPITAL LETTER LITTLE YUS
+A659 ; [.1B6F.0020.0002.A659] # CYRILLIC SMALL LETTER CLOSED LITTLE YUS
+A658 ; [.1B6F.0020.0008.A658] # CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
+046B ; [.1B70.0020.0002.046B] # CYRILLIC SMALL LETTER BIG YUS
+2DFE ; [.1B70.0020.0004.2DFE] # COMBINING CYRILLIC LETTER BIG YUS
+046A ; [.1B70.0020.0008.046A] # CYRILLIC CAPITAL LETTER BIG YUS
+A65B ; [.1B74.0020.0002.A65B] # CYRILLIC SMALL LETTER BLENDED YUS
+A65A ; [.1B74.0020.0008.A65A] # CYRILLIC CAPITAL LETTER BLENDED YUS
+0469 ; [.1B75.0020.0002.0469] # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+0468 ; [.1B75.0020.0008.0468] # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+A65D ; [.1B79.0020.0002.A65D] # CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS
+A65C ; [.1B79.0020.0008.A65C] # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
+046D ; [.1B7A.0020.0002.046D] # CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+2DFF ; [.1B7A.0020.0004.2DFF] # COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+046C ; [.1B7A.0020.0008.046C] # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046F ; [.1B7E.0020.0002.046F] # CYRILLIC SMALL LETTER KSI
+046E ; [.1B7E.0020.0008.046E] # CYRILLIC CAPITAL LETTER KSI
+0471 ; [.1B82.0020.0002.0471] # CYRILLIC SMALL LETTER PSI
+0470 ; [.1B82.0020.0008.0470] # CYRILLIC CAPITAL LETTER PSI
+0473 ; [.1B86.0020.0002.0473] # CYRILLIC SMALL LETTER FITA
+2DF4 ; [.1B86.0020.0004.2DF4] # COMBINING CYRILLIC LETTER FITA
+0472 ; [.1B86.0020.0008.0472] # CYRILLIC CAPITAL LETTER FITA
+0475 ; [.1B8A.0020.0002.0475] # CYRILLIC SMALL LETTER IZHITSA
+0474 ; [.1B8A.0020.0008.0474] # CYRILLIC CAPITAL LETTER IZHITSA
+0477 ; [.1B8E.0020.0002.0477] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0475 030F ; [.1B8E.0020.0002.0477] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B8E.0020.0008.0476] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0474 030F ; [.1B8E.0020.0008.0476] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+A65F ; [.1B92.0020.0002.A65F] # CYRILLIC SMALL LETTER YN
+A65E ; [.1B92.0020.0008.A65E] # CYRILLIC CAPITAL LETTER YN
+04A9 ; [.1B93.0020.0002.04A9] # CYRILLIC SMALL LETTER ABKHASIAN HA
+04A8 ; [.1B93.0020.0008.04A8] # CYRILLIC CAPITAL LETTER ABKHASIAN HA
+051D ; [.1B97.0020.0002.051D] # CYRILLIC SMALL LETTER WE
+051C ; [.1B97.0020.0008.051C] # CYRILLIC CAPITAL LETTER WE
+04CF ; [.1B98.0020.0002.04CF] # CYRILLIC SMALL LETTER PALOCHKA
+04C0 ; [.1B98.0020.0008.04C0] # CYRILLIC LETTER PALOCHKA
+2C30 ; [.1B9C.0020.0002.2C30] # GLAGOLITIC SMALL LETTER AZU
+2C00 ; [.1B9C.0020.0008.2C00] # GLAGOLITIC CAPITAL LETTER AZU
+2C31 ; [.1B9D.0020.0002.2C31] # GLAGOLITIC SMALL LETTER BUKY
+2C01 ; [.1B9D.0020.0008.2C01] # GLAGOLITIC CAPITAL LETTER BUKY
+2C32 ; [.1B9E.0020.0002.2C32] # GLAGOLITIC SMALL LETTER VEDE
+2C02 ; [.1B9E.0020.0008.2C02] # GLAGOLITIC CAPITAL LETTER VEDE
+2C33 ; [.1B9F.0020.0002.2C33] # GLAGOLITIC SMALL LETTER GLAGOLI
+2C03 ; [.1B9F.0020.0008.2C03] # GLAGOLITIC CAPITAL LETTER GLAGOLI
+2C34 ; [.1BA0.0020.0002.2C34] # GLAGOLITIC SMALL LETTER DOBRO
+2C04 ; [.1BA0.0020.0008.2C04] # GLAGOLITIC CAPITAL LETTER DOBRO
+2C35 ; [.1BA1.0020.0002.2C35] # GLAGOLITIC SMALL LETTER YESTU
+2C05 ; [.1BA1.0020.0008.2C05] # GLAGOLITIC CAPITAL LETTER YESTU
+2C36 ; [.1BA2.0020.0002.2C36] # GLAGOLITIC SMALL LETTER ZHIVETE
+2C06 ; [.1BA2.0020.0008.2C06] # GLAGOLITIC CAPITAL LETTER ZHIVETE
+2C37 ; [.1BA3.0020.0002.2C37] # GLAGOLITIC SMALL LETTER DZELO
+2C07 ; [.1BA3.0020.0008.2C07] # GLAGOLITIC CAPITAL LETTER DZELO
+2C38 ; [.1BA4.0020.0002.2C38] # GLAGOLITIC SMALL LETTER ZEMLJA
+2C08 ; [.1BA4.0020.0008.2C08] # GLAGOLITIC CAPITAL LETTER ZEMLJA
+2C39 ; [.1BA5.0020.0002.2C39] # GLAGOLITIC SMALL LETTER IZHE
+2C09 ; [.1BA5.0020.0008.2C09] # GLAGOLITIC CAPITAL LETTER IZHE
+2C3A ; [.1BA6.0020.0002.2C3A] # GLAGOLITIC SMALL LETTER INITIAL IZHE
+2C0A ; [.1BA6.0020.0008.2C0A] # GLAGOLITIC CAPITAL LETTER INITIAL IZHE
+2C3B ; [.1BA7.0020.0002.2C3B] # GLAGOLITIC SMALL LETTER I
+2C0B ; [.1BA7.0020.0008.2C0B] # GLAGOLITIC CAPITAL LETTER I
+2C3C ; [.1BA8.0020.0002.2C3C] # GLAGOLITIC SMALL LETTER DJERVI
+2C0C ; [.1BA8.0020.0008.2C0C] # GLAGOLITIC CAPITAL LETTER DJERVI
+2C3D ; [.1BA9.0020.0002.2C3D] # GLAGOLITIC SMALL LETTER KAKO
+2C0D ; [.1BA9.0020.0008.2C0D] # GLAGOLITIC CAPITAL LETTER KAKO
+2C3E ; [.1BAA.0020.0002.2C3E] # GLAGOLITIC SMALL LETTER LJUDIJE
+2C0E ; [.1BAA.0020.0008.2C0E] # GLAGOLITIC CAPITAL LETTER LJUDIJE
+2C3F ; [.1BAB.0020.0002.2C3F] # GLAGOLITIC SMALL LETTER MYSLITE
+2C0F ; [.1BAB.0020.0008.2C0F] # GLAGOLITIC CAPITAL LETTER MYSLITE
+2C40 ; [.1BAC.0020.0002.2C40] # GLAGOLITIC SMALL LETTER NASHI
+2C10 ; [.1BAC.0020.0008.2C10] # GLAGOLITIC CAPITAL LETTER NASHI
+2C41 ; [.1BAD.0020.0002.2C41] # GLAGOLITIC SMALL LETTER ONU
+2C11 ; [.1BAD.0020.0008.2C11] # GLAGOLITIC CAPITAL LETTER ONU
+2C42 ; [.1BAE.0020.0002.2C42] # GLAGOLITIC SMALL LETTER POKOJI
+2C12 ; [.1BAE.0020.0008.2C12] # GLAGOLITIC CAPITAL LETTER POKOJI
+2C43 ; [.1BAF.0020.0002.2C43] # GLAGOLITIC SMALL LETTER RITSI
+2C13 ; [.1BAF.0020.0008.2C13] # GLAGOLITIC CAPITAL LETTER RITSI
+2C44 ; [.1BB0.0020.0002.2C44] # GLAGOLITIC SMALL LETTER SLOVO
+2C14 ; [.1BB0.0020.0008.2C14] # GLAGOLITIC CAPITAL LETTER SLOVO
+2C45 ; [.1BB1.0020.0002.2C45] # GLAGOLITIC SMALL LETTER TVRIDO
+2C15 ; [.1BB1.0020.0008.2C15] # GLAGOLITIC CAPITAL LETTER TVRIDO
+2C46 ; [.1BB2.0020.0002.2C46] # GLAGOLITIC SMALL LETTER UKU
+2C16 ; [.1BB2.0020.0008.2C16] # GLAGOLITIC CAPITAL LETTER UKU
+2C47 ; [.1BB3.0020.0002.2C47] # GLAGOLITIC SMALL LETTER FRITU
+2C17 ; [.1BB3.0020.0008.2C17] # GLAGOLITIC CAPITAL LETTER FRITU
+2C48 ; [.1BB4.0020.0002.2C48] # GLAGOLITIC SMALL LETTER HERU
+2C18 ; [.1BB4.0020.0008.2C18] # GLAGOLITIC CAPITAL LETTER HERU
+2C49 ; [.1BB5.0020.0002.2C49] # GLAGOLITIC SMALL LETTER OTU
+2C19 ; [.1BB5.0020.0008.2C19] # GLAGOLITIC CAPITAL LETTER OTU
+2C4A ; [.1BB6.0020.0002.2C4A] # GLAGOLITIC SMALL LETTER PE
+2C1A ; [.1BB6.0020.0008.2C1A] # GLAGOLITIC CAPITAL LETTER PE
+2C4B ; [.1BB7.0020.0002.2C4B] # GLAGOLITIC SMALL LETTER SHTA
+2C1B ; [.1BB7.0020.0008.2C1B] # GLAGOLITIC CAPITAL LETTER SHTA
+2C4C ; [.1BB8.0020.0002.2C4C] # GLAGOLITIC SMALL LETTER TSI
+2C1C ; [.1BB8.0020.0008.2C1C] # GLAGOLITIC CAPITAL LETTER TSI
+2C4D ; [.1BB9.0020.0002.2C4D] # GLAGOLITIC SMALL LETTER CHRIVI
+2C1D ; [.1BB9.0020.0008.2C1D] # GLAGOLITIC CAPITAL LETTER CHRIVI
+2C4E ; [.1BBA.0020.0002.2C4E] # GLAGOLITIC SMALL LETTER SHA
+2C1E ; [.1BBA.0020.0008.2C1E] # GLAGOLITIC CAPITAL LETTER SHA
+2C4F ; [.1BBB.0020.0002.2C4F] # GLAGOLITIC SMALL LETTER YERU
+2C1F ; [.1BBB.0020.0008.2C1F] # GLAGOLITIC CAPITAL LETTER YERU
+2C50 ; [.1BBC.0020.0002.2C50] # GLAGOLITIC SMALL LETTER YERI
+2C20 ; [.1BBC.0020.0008.2C20] # GLAGOLITIC CAPITAL LETTER YERI
+2C51 ; [.1BBD.0020.0002.2C51] # GLAGOLITIC SMALL LETTER YATI
+2C21 ; [.1BBD.0020.0008.2C21] # GLAGOLITIC CAPITAL LETTER YATI
+2C52 ; [.1BBE.0020.0002.2C52] # GLAGOLITIC SMALL LETTER SPIDERY HA
+2C22 ; [.1BBE.0020.0008.2C22] # GLAGOLITIC CAPITAL LETTER SPIDERY HA
+2C53 ; [.1BBF.0020.0002.2C53] # GLAGOLITIC SMALL LETTER YU
+2C23 ; [.1BBF.0020.0008.2C23] # GLAGOLITIC CAPITAL LETTER YU
+2C54 ; [.1BC0.0020.0002.2C54] # GLAGOLITIC SMALL LETTER SMALL YUS
+2C24 ; [.1BC0.0020.0008.2C24] # GLAGOLITIC CAPITAL LETTER SMALL YUS
+2C55 ; [.1BC1.0020.0002.2C55] # GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL
+2C25 ; [.1BC1.0020.0008.2C25] # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
+2C56 ; [.1BC2.0020.0002.2C56] # GLAGOLITIC SMALL LETTER YO
+2C26 ; [.1BC2.0020.0008.2C26] # GLAGOLITIC CAPITAL LETTER YO
+2C57 ; [.1BC3.0020.0002.2C57] # GLAGOLITIC SMALL LETTER IOTATED SMALL YUS
+2C27 ; [.1BC3.0020.0008.2C27] # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
+2C58 ; [.1BC4.0020.0002.2C58] # GLAGOLITIC SMALL LETTER BIG YUS
+2C28 ; [.1BC4.0020.0008.2C28] # GLAGOLITIC CAPITAL LETTER BIG YUS
+2C59 ; [.1BC5.0020.0002.2C59] # GLAGOLITIC SMALL LETTER IOTATED BIG YUS
+2C29 ; [.1BC5.0020.0008.2C29] # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
+2C5A ; [.1BC6.0020.0002.2C5A] # GLAGOLITIC SMALL LETTER FITA
+2C2A ; [.1BC6.0020.0008.2C2A] # GLAGOLITIC CAPITAL LETTER FITA
+2C5B ; [.1BC7.0020.0002.2C5B] # GLAGOLITIC SMALL LETTER IZHITSA
+2C2B ; [.1BC7.0020.0008.2C2B] # GLAGOLITIC CAPITAL LETTER IZHITSA
+2C5C ; [.1BC8.0020.0002.2C5C] # GLAGOLITIC SMALL LETTER SHTAPIC
+2C2C ; [.1BC8.0020.0008.2C2C] # GLAGOLITIC CAPITAL LETTER SHTAPIC
+2C5D ; [.1BC9.0020.0002.2C5D] # GLAGOLITIC SMALL LETTER TROKUTASTI A
+2C2D ; [.1BC9.0020.0008.2C2D] # GLAGOLITIC CAPITAL LETTER TROKUTASTI A
+2C5E ; [.1BCA.0020.0002.2C5E] # GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+2C2E ; [.1BCA.0020.0008.2C2E] # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+10D0 ; [.1BCB.0020.0002.10D0] # GEORGIAN LETTER AN
+2D00 ; [.1BCC.0020.0002.2D00] # GEORGIAN SMALL LETTER AN
+10A0 ; [.1BCC.0020.0008.10A0] # GEORGIAN CAPITAL LETTER AN
+10D1 ; [.1BCD.0020.0002.10D1] # GEORGIAN LETTER BAN
+2D01 ; [.1BCE.0020.0002.2D01] # GEORGIAN SMALL LETTER BAN
+10A1 ; [.1BCE.0020.0008.10A1] # GEORGIAN CAPITAL LETTER BAN
+10D2 ; [.1BCF.0020.0002.10D2] # GEORGIAN LETTER GAN
+2D02 ; [.1BD0.0020.0002.2D02] # GEORGIAN SMALL LETTER GAN
+10A2 ; [.1BD0.0020.0008.10A2] # GEORGIAN CAPITAL LETTER GAN
+10D3 ; [.1BD1.0020.0002.10D3] # GEORGIAN LETTER DON
+2D03 ; [.1BD2.0020.0002.2D03] # GEORGIAN SMALL LETTER DON
+10A3 ; [.1BD2.0020.0008.10A3] # GEORGIAN CAPITAL LETTER DON
+10D4 ; [.1BD3.0020.0002.10D4] # GEORGIAN LETTER EN
+2D04 ; [.1BD4.0020.0002.2D04] # GEORGIAN SMALL LETTER EN
+10A4 ; [.1BD4.0020.0008.10A4] # GEORGIAN CAPITAL LETTER EN
+10D5 ; [.1BD5.0020.0002.10D5] # GEORGIAN LETTER VIN
+2D05 ; [.1BD6.0020.0002.2D05] # GEORGIAN SMALL LETTER VIN
+10A5 ; [.1BD6.0020.0008.10A5] # GEORGIAN CAPITAL LETTER VIN
+10D6 ; [.1BD7.0020.0002.10D6] # GEORGIAN LETTER ZEN
+2D06 ; [.1BD8.0020.0002.2D06] # GEORGIAN SMALL LETTER ZEN
+10A6 ; [.1BD8.0020.0008.10A6] # GEORGIAN CAPITAL LETTER ZEN
+10F1 ; [.1BD9.0020.0002.10F1] # GEORGIAN LETTER HE
+2D21 ; [.1BDA.0020.0002.2D21] # GEORGIAN SMALL LETTER HE
+10C1 ; [.1BDA.0020.0008.10C1] # GEORGIAN CAPITAL LETTER HE
+10D7 ; [.1BDB.0020.0002.10D7] # GEORGIAN LETTER TAN
+2D07 ; [.1BDC.0020.0002.2D07] # GEORGIAN SMALL LETTER TAN
+10A7 ; [.1BDC.0020.0008.10A7] # GEORGIAN CAPITAL LETTER TAN
+10D8 ; [.1BDD.0020.0002.10D8] # GEORGIAN LETTER IN
+2D08 ; [.1BDE.0020.0002.2D08] # GEORGIAN SMALL LETTER IN
+10A8 ; [.1BDE.0020.0008.10A8] # GEORGIAN CAPITAL LETTER IN
+10D9 ; [.1BDF.0020.0002.10D9] # GEORGIAN LETTER KAN
+2D09 ; [.1BE0.0020.0002.2D09] # GEORGIAN SMALL LETTER KAN
+10A9 ; [.1BE0.0020.0008.10A9] # GEORGIAN CAPITAL LETTER KAN
+10DA ; [.1BE1.0020.0002.10DA] # GEORGIAN LETTER LAS
+2D0A ; [.1BE2.0020.0002.2D0A] # GEORGIAN SMALL LETTER LAS
+10AA ; [.1BE2.0020.0008.10AA] # GEORGIAN CAPITAL LETTER LAS
+10DB ; [.1BE3.0020.0002.10DB] # GEORGIAN LETTER MAN
+2D0B ; [.1BE4.0020.0002.2D0B] # GEORGIAN SMALL LETTER MAN
+10AB ; [.1BE4.0020.0008.10AB] # GEORGIAN CAPITAL LETTER MAN
+10DC ; [.1BE5.0020.0002.10DC] # GEORGIAN LETTER NAR
+10FC ; [.1BE5.0020.0014.10FC] # MODIFIER LETTER GEORGIAN NAR
+2D0C ; [.1BE6.0020.0002.2D0C] # GEORGIAN SMALL LETTER NAR
+10AC ; [.1BE6.0020.0008.10AC] # GEORGIAN CAPITAL LETTER NAR
+10F2 ; [.1BE7.0020.0002.10F2] # GEORGIAN LETTER HIE
+2D22 ; [.1BE8.0020.0002.2D22] # GEORGIAN SMALL LETTER HIE
+10C2 ; [.1BE8.0020.0008.10C2] # GEORGIAN CAPITAL LETTER HIE
+10DD ; [.1BE9.0020.0002.10DD] # GEORGIAN LETTER ON
+2D0D ; [.1BEA.0020.0002.2D0D] # GEORGIAN SMALL LETTER ON
+10AD ; [.1BEA.0020.0008.10AD] # GEORGIAN CAPITAL LETTER ON
+10DE ; [.1BEB.0020.0002.10DE] # GEORGIAN LETTER PAR
+2D0E ; [.1BEC.0020.0002.2D0E] # GEORGIAN SMALL LETTER PAR
+10AE ; [.1BEC.0020.0008.10AE] # GEORGIAN CAPITAL LETTER PAR
+10DF ; [.1BED.0020.0002.10DF] # GEORGIAN LETTER ZHAR
+2D0F ; [.1BEE.0020.0002.2D0F] # GEORGIAN SMALL LETTER ZHAR
+10AF ; [.1BEE.0020.0008.10AF] # GEORGIAN CAPITAL LETTER ZHAR
+10E0 ; [.1BEF.0020.0002.10E0] # GEORGIAN LETTER RAE
+2D10 ; [.1BF0.0020.0002.2D10] # GEORGIAN SMALL LETTER RAE
+10B0 ; [.1BF0.0020.0008.10B0] # GEORGIAN CAPITAL LETTER RAE
+10E1 ; [.1BF1.0020.0002.10E1] # GEORGIAN LETTER SAN
+2D11 ; [.1BF2.0020.0002.2D11] # GEORGIAN SMALL LETTER SAN
+10B1 ; [.1BF2.0020.0008.10B1] # GEORGIAN CAPITAL LETTER SAN
+10E2 ; [.1BF3.0020.0002.10E2] # GEORGIAN LETTER TAR
+2D12 ; [.1BF4.0020.0002.2D12] # GEORGIAN SMALL LETTER TAR
+10B2 ; [.1BF4.0020.0008.10B2] # GEORGIAN CAPITAL LETTER TAR
+10F3 ; [.1BF5.0020.0002.10F3] # GEORGIAN LETTER WE
+2D23 ; [.1BF6.0020.0002.2D23] # GEORGIAN SMALL LETTER WE
+10C3 ; [.1BF6.0020.0008.10C3] # GEORGIAN CAPITAL LETTER WE
+10E3 ; [.1BF7.0020.0002.10E3] # GEORGIAN LETTER UN
+2D13 ; [.1BF8.0020.0002.2D13] # GEORGIAN SMALL LETTER UN
+10B3 ; [.1BF8.0020.0008.10B3] # GEORGIAN CAPITAL LETTER UN
+10E4 ; [.1BF9.0020.0002.10E4] # GEORGIAN LETTER PHAR
+2D14 ; [.1BFA.0020.0002.2D14] # GEORGIAN SMALL LETTER PHAR
+10B4 ; [.1BFA.0020.0008.10B4] # GEORGIAN CAPITAL LETTER PHAR
+10E5 ; [.1BFB.0020.0002.10E5] # GEORGIAN LETTER KHAR
+2D15 ; [.1BFC.0020.0002.2D15] # GEORGIAN SMALL LETTER KHAR
+10B5 ; [.1BFC.0020.0008.10B5] # GEORGIAN CAPITAL LETTER KHAR
+10E6 ; [.1BFD.0020.0002.10E6] # GEORGIAN LETTER GHAN
+2D16 ; [.1BFE.0020.0002.2D16] # GEORGIAN SMALL LETTER GHAN
+10B6 ; [.1BFE.0020.0008.10B6] # GEORGIAN CAPITAL LETTER GHAN
+10E7 ; [.1BFF.0020.0002.10E7] # GEORGIAN LETTER QAR
+2D17 ; [.1C00.0020.0002.2D17] # GEORGIAN SMALL LETTER QAR
+10B7 ; [.1C00.0020.0008.10B7] # GEORGIAN CAPITAL LETTER QAR
+10E8 ; [.1C01.0020.0002.10E8] # GEORGIAN LETTER SHIN
+2D18 ; [.1C02.0020.0002.2D18] # GEORGIAN SMALL LETTER SHIN
+10B8 ; [.1C02.0020.0008.10B8] # GEORGIAN CAPITAL LETTER SHIN
+10E9 ; [.1C03.0020.0002.10E9] # GEORGIAN LETTER CHIN
+2D19 ; [.1C04.0020.0002.2D19] # GEORGIAN SMALL LETTER CHIN
+10B9 ; [.1C04.0020.0008.10B9] # GEORGIAN CAPITAL LETTER CHIN
+10EA ; [.1C05.0020.0002.10EA] # GEORGIAN LETTER CAN
+2D1A ; [.1C06.0020.0002.2D1A] # GEORGIAN SMALL LETTER CAN
+10BA ; [.1C06.0020.0008.10BA] # GEORGIAN CAPITAL LETTER CAN
+10EB ; [.1C07.0020.0002.10EB] # GEORGIAN LETTER JIL
+2D1B ; [.1C08.0020.0002.2D1B] # GEORGIAN SMALL LETTER JIL
+10BB ; [.1C08.0020.0008.10BB] # GEORGIAN CAPITAL LETTER JIL
+10EC ; [.1C09.0020.0002.10EC] # GEORGIAN LETTER CIL
+2D1C ; [.1C0A.0020.0002.2D1C] # GEORGIAN SMALL LETTER CIL
+10BC ; [.1C0A.0020.0008.10BC] # GEORGIAN CAPITAL LETTER CIL
+10ED ; [.1C0B.0020.0002.10ED] # GEORGIAN LETTER CHAR
+2D1D ; [.1C0C.0020.0002.2D1D] # GEORGIAN SMALL LETTER CHAR
+10BD ; [.1C0C.0020.0008.10BD] # GEORGIAN CAPITAL LETTER CHAR
+10EE ; [.1C0D.0020.0002.10EE] # GEORGIAN LETTER XAN
+2D1E ; [.1C0E.0020.0002.2D1E] # GEORGIAN SMALL LETTER XAN
+10BE ; [.1C0E.0020.0008.10BE] # GEORGIAN CAPITAL LETTER XAN
+10F4 ; [.1C0F.0020.0002.10F4] # GEORGIAN LETTER HAR
+2D24 ; [.1C10.0020.0002.2D24] # GEORGIAN SMALL LETTER HAR
+10C4 ; [.1C10.0020.0008.10C4] # GEORGIAN CAPITAL LETTER HAR
+10EF ; [.1C11.0020.0002.10EF] # GEORGIAN LETTER JHAN
+2D1F ; [.1C12.0020.0002.2D1F] # GEORGIAN SMALL LETTER JHAN
+10BF ; [.1C12.0020.0008.10BF] # GEORGIAN CAPITAL LETTER JHAN
+10F0 ; [.1C13.0020.0002.10F0] # GEORGIAN LETTER HAE
+2D20 ; [.1C14.0020.0002.2D20] # GEORGIAN SMALL LETTER HAE
+10C0 ; [.1C14.0020.0008.10C0] # GEORGIAN CAPITAL LETTER HAE
+10F5 ; [.1C15.0020.0002.10F5] # GEORGIAN LETTER HOE
+2D25 ; [.1C16.0020.0002.2D25] # GEORGIAN SMALL LETTER HOE
+10C5 ; [.1C16.0020.0008.10C5] # GEORGIAN CAPITAL LETTER HOE
+10F6 ; [.1C17.0020.0002.10F6] # GEORGIAN LETTER FI
+10F7 ; [.1C18.0020.0002.10F7] # GEORGIAN LETTER YN
+2D27 ; [.1C19.0020.0002.2D27] # GEORGIAN SMALL LETTER YN
+10C7 ; [.1C19.0020.0008.10C7] # GEORGIAN CAPITAL LETTER YN
+10F8 ; [.1C1A.0020.0002.10F8] # GEORGIAN LETTER ELIFI
+10F9 ; [.1C1B.0020.0002.10F9] # GEORGIAN LETTER TURNED GAN
+10FA ; [.1C1C.0020.0002.10FA] # GEORGIAN LETTER AIN
+10FD ; [.1C1D.0020.0002.10FD] # GEORGIAN LETTER AEN
+2D2D ; [.1C1E.0020.0002.2D2D] # GEORGIAN SMALL LETTER AEN
+10CD ; [.1C1E.0020.0008.10CD] # GEORGIAN CAPITAL LETTER AEN
+10FE ; [.1C1F.0020.0002.10FE] # GEORGIAN LETTER HARD SIGN
+10FF ; [.1C20.0020.0002.10FF] # GEORGIAN LETTER LABIAL SIGN
+0561 ; [.1C21.0020.0002.0561] # ARMENIAN SMALL LETTER AYB
+0531 ; [.1C21.0020.0008.0531] # ARMENIAN CAPITAL LETTER AYB
+0562 ; [.1C22.0020.0002.0562] # ARMENIAN SMALL LETTER BEN
+0532 ; [.1C22.0020.0008.0532] # ARMENIAN CAPITAL LETTER BEN
+0563 ; [.1C23.0020.0002.0563] # ARMENIAN SMALL LETTER GIM
+0533 ; [.1C23.0020.0008.0533] # ARMENIAN CAPITAL LETTER GIM
+0564 ; [.1C24.0020.0002.0564] # ARMENIAN SMALL LETTER DA
+0534 ; [.1C24.0020.0008.0534] # ARMENIAN CAPITAL LETTER DA
+0565 ; [.1C25.0020.0002.0565] # ARMENIAN SMALL LETTER ECH
+0535 ; [.1C25.0020.0008.0535] # ARMENIAN CAPITAL LETTER ECH
+0587 ; [.1C25.0020.0004.0587][.1C42.0020.0004.0587] # ARMENIAN SMALL LIGATURE ECH YIWN
+0566 ; [.1C26.0020.0002.0566] # ARMENIAN SMALL LETTER ZA
+0536 ; [.1C26.0020.0008.0536] # ARMENIAN CAPITAL LETTER ZA
+0567 ; [.1C27.0020.0002.0567] # ARMENIAN SMALL LETTER EH
+0537 ; [.1C27.0020.0008.0537] # ARMENIAN CAPITAL LETTER EH
+0568 ; [.1C28.0020.0002.0568] # ARMENIAN SMALL LETTER ET
+0538 ; [.1C28.0020.0008.0538] # ARMENIAN CAPITAL LETTER ET
+0569 ; [.1C29.0020.0002.0569] # ARMENIAN SMALL LETTER TO
+0539 ; [.1C29.0020.0008.0539] # ARMENIAN CAPITAL LETTER TO
+056A ; [.1C2A.0020.0002.056A] # ARMENIAN SMALL LETTER ZHE
+053A ; [.1C2A.0020.0008.053A] # ARMENIAN CAPITAL LETTER ZHE
+056B ; [.1C2B.0020.0002.056B] # ARMENIAN SMALL LETTER INI
+053B ; [.1C2B.0020.0008.053B] # ARMENIAN CAPITAL LETTER INI
+056C ; [.1C2C.0020.0002.056C] # ARMENIAN SMALL LETTER LIWN
+053C ; [.1C2C.0020.0008.053C] # ARMENIAN CAPITAL LETTER LIWN
+056D ; [.1C2D.0020.0002.056D] # ARMENIAN SMALL LETTER XEH
+053D ; [.1C2D.0020.0008.053D] # ARMENIAN CAPITAL LETTER XEH
+056E ; [.1C2E.0020.0002.056E] # ARMENIAN SMALL LETTER CA
+053E ; [.1C2E.0020.0008.053E] # ARMENIAN CAPITAL LETTER CA
+056F ; [.1C2F.0020.0002.056F] # ARMENIAN SMALL LETTER KEN
+053F ; [.1C2F.0020.0008.053F] # ARMENIAN CAPITAL LETTER KEN
+0570 ; [.1C30.0020.0002.0570] # ARMENIAN SMALL LETTER HO
+0540 ; [.1C30.0020.0008.0540] # ARMENIAN CAPITAL LETTER HO
+0571 ; [.1C31.0020.0002.0571] # ARMENIAN SMALL LETTER JA
+0541 ; [.1C31.0020.0008.0541] # ARMENIAN CAPITAL LETTER JA
+0572 ; [.1C32.0020.0002.0572] # ARMENIAN SMALL LETTER GHAD
+0542 ; [.1C32.0020.0008.0542] # ARMENIAN CAPITAL LETTER GHAD
+0573 ; [.1C33.0020.0002.0573] # ARMENIAN SMALL LETTER CHEH
+0543 ; [.1C33.0020.0008.0543] # ARMENIAN CAPITAL LETTER CHEH
+0574 ; [.1C34.0020.0002.0574] # ARMENIAN SMALL LETTER MEN
+0544 ; [.1C34.0020.0008.0544] # ARMENIAN CAPITAL LETTER MEN
+FB14 ; [.1C34.0020.0004.FB14][.1C25.0020.0004.FB14] # ARMENIAN SMALL LIGATURE MEN ECH
+FB15 ; [.1C34.0020.0004.FB15][.1C2B.0020.0004.FB15] # ARMENIAN SMALL LIGATURE MEN INI
+FB17 ; [.1C34.0020.0004.FB17][.1C2D.0020.0004.FB17] # ARMENIAN SMALL LIGATURE MEN XEH
+FB13 ; [.1C34.0020.0004.FB13][.1C36.0020.0004.FB13] # ARMENIAN SMALL LIGATURE MEN NOW
+0575 ; [.1C35.0020.0002.0575] # ARMENIAN SMALL LETTER YI
+0545 ; [.1C35.0020.0008.0545] # ARMENIAN CAPITAL LETTER YI
+0576 ; [.1C36.0020.0002.0576] # ARMENIAN SMALL LETTER NOW
+0546 ; [.1C36.0020.0008.0546] # ARMENIAN CAPITAL LETTER NOW
+0577 ; [.1C37.0020.0002.0577] # ARMENIAN SMALL LETTER SHA
+0547 ; [.1C37.0020.0008.0547] # ARMENIAN CAPITAL LETTER SHA
+0578 ; [.1C38.0020.0002.0578] # ARMENIAN SMALL LETTER VO
+0548 ; [.1C38.0020.0008.0548] # ARMENIAN CAPITAL LETTER VO
+0579 ; [.1C39.0020.0002.0579] # ARMENIAN SMALL LETTER CHA
+0549 ; [.1C39.0020.0008.0549] # ARMENIAN CAPITAL LETTER CHA
+057A ; [.1C3A.0020.0002.057A] # ARMENIAN SMALL LETTER PEH
+054A ; [.1C3A.0020.0008.054A] # ARMENIAN CAPITAL LETTER PEH
+057B ; [.1C3B.0020.0002.057B] # ARMENIAN SMALL LETTER JHEH
+054B ; [.1C3B.0020.0008.054B] # ARMENIAN CAPITAL LETTER JHEH
+057C ; [.1C3C.0020.0002.057C] # ARMENIAN SMALL LETTER RA
+054C ; [.1C3C.0020.0008.054C] # ARMENIAN CAPITAL LETTER RA
+057D ; [.1C3D.0020.0002.057D] # ARMENIAN SMALL LETTER SEH
+054D ; [.1C3D.0020.0008.054D] # ARMENIAN CAPITAL LETTER SEH
+057E ; [.1C3E.0020.0002.057E] # ARMENIAN SMALL LETTER VEW
+054E ; [.1C3E.0020.0008.054E] # ARMENIAN CAPITAL LETTER VEW
+FB16 ; [.1C3E.0020.0004.FB16][.1C36.0020.0004.FB16] # ARMENIAN SMALL LIGATURE VEW NOW
+057F ; [.1C3F.0020.0002.057F] # ARMENIAN SMALL LETTER TIWN
+054F ; [.1C3F.0020.0008.054F] # ARMENIAN CAPITAL LETTER TIWN
+0580 ; [.1C40.0020.0002.0580] # ARMENIAN SMALL LETTER REH
+0550 ; [.1C40.0020.0008.0550] # ARMENIAN CAPITAL LETTER REH
+0581 ; [.1C41.0020.0002.0581] # ARMENIAN SMALL LETTER CO
+0551 ; [.1C41.0020.0008.0551] # ARMENIAN CAPITAL LETTER CO
+0582 ; [.1C42.0020.0002.0582] # ARMENIAN SMALL LETTER YIWN
+0552 ; [.1C42.0020.0008.0552] # ARMENIAN CAPITAL LETTER YIWN
+0583 ; [.1C43.0020.0002.0583] # ARMENIAN SMALL LETTER PIWR
+0553 ; [.1C43.0020.0008.0553] # ARMENIAN CAPITAL LETTER PIWR
+0584 ; [.1C44.0020.0002.0584] # ARMENIAN SMALL LETTER KEH
+0554 ; [.1C44.0020.0008.0554] # ARMENIAN CAPITAL LETTER KEH
+0585 ; [.1C45.0020.0002.0585] # ARMENIAN SMALL LETTER OH
+0555 ; [.1C45.0020.0008.0555] # ARMENIAN CAPITAL LETTER OH
+0586 ; [.1C46.0020.0002.0586] # ARMENIAN SMALL LETTER FEH
+0556 ; [.1C46.0020.0008.0556] # ARMENIAN CAPITAL LETTER FEH
+0559 ; [.1C47.0020.0002.0559] # ARMENIAN MODIFIER LETTER LEFT HALF RING
+05D0 ; [.1C48.0020.0002.05D0] # HEBREW LETTER ALEF
+2135 ; [.1C48.0020.0004.2135] # ALEF SYMBOL
+FB21 ; [.1C48.0020.0005.FB21] # HEBREW LETTER WIDE ALEF
+FB2E ; [.1C48.0020.0002.05D0][.0000.008C.0002.05B7] # HEBREW LETTER ALEF WITH PATAH
+FB2F ; [.1C48.0020.0002.05D0][.0000.008D.0002.05B8] # HEBREW LETTER ALEF WITH QAMATS
+FB30 ; [.1C48.0020.0002.05D0][.0000.0092.0002.05BC] # HEBREW LETTER ALEF WITH MAPIQ
+FB4F ; [.1C48.0020.0004.FB4F][.1C53.0020.0004.FB4F] # HEBREW LIGATURE ALEF LAMED
+05D1 ; [.1C49.0020.0002.05D1] # HEBREW LETTER BET
+2136 ; [.1C49.0020.0004.2136] # BET SYMBOL
+FB31 ; [.1C49.0020.0002.05D1][.0000.0092.0002.05BC] # HEBREW LETTER BET WITH DAGESH
+FB4C ; [.1C49.0020.0002.05D1][.0000.0095.0002.05BF] # HEBREW LETTER BET WITH RAFE
+05D2 ; [.1C4A.0020.0002.05D2] # HEBREW LETTER GIMEL
+2137 ; [.1C4A.0020.0004.2137] # GIMEL SYMBOL
+FB32 ; [.1C4A.0020.0002.05D2][.0000.0092.0002.05BC] # HEBREW LETTER GIMEL WITH DAGESH
+05D3 ; [.1C4B.0020.0002.05D3] # HEBREW LETTER DALET
+2138 ; [.1C4B.0020.0004.2138] # DALET SYMBOL
+FB22 ; [.1C4B.0020.0005.FB22] # HEBREW LETTER WIDE DALET
+FB33 ; [.1C4B.0020.0002.05D3][.0000.0092.0002.05BC] # HEBREW LETTER DALET WITH DAGESH
+05D4 ; [.1C4C.0020.0002.05D4] # HEBREW LETTER HE
+FB23 ; [.1C4C.0020.0005.FB23] # HEBREW LETTER WIDE HE
+FB34 ; [.1C4C.0020.0002.05D4][.0000.0092.0002.05BC] # HEBREW LETTER HE WITH MAPIQ
+05D5 ; [.1C4D.0020.0002.05D5] # HEBREW LETTER VAV
+FB4B ; [.1C4D.0020.0002.05D5][.0000.008E.0002.05B9] # HEBREW LETTER VAV WITH HOLAM
+FB35 ; [.1C4D.0020.0002.05D5][.0000.0092.0002.05BC] # HEBREW LETTER VAV WITH DAGESH
+05F0 ; [.1C4D.0020.0004.05F0][.1C4D.0020.0004.05F0] # HEBREW LIGATURE YIDDISH DOUBLE VAV
+05F1 ; [.1C4D.0020.0004.05F1][.1C51.0020.0004.05F1] # HEBREW LIGATURE YIDDISH VAV YOD
+05D6 ; [.1C4E.0020.0002.05D6] # HEBREW LETTER ZAYIN
+FB36 ; [.1C4E.0020.0002.05D6][.0000.0092.0002.05BC] # HEBREW LETTER ZAYIN WITH DAGESH
+05D7 ; [.1C4F.0020.0002.05D7] # HEBREW LETTER HET
+05D8 ; [.1C50.0020.0002.05D8] # HEBREW LETTER TET
+FB38 ; [.1C50.0020.0002.05D8][.0000.0092.0002.05BC] # HEBREW LETTER TET WITH DAGESH
+05D9 ; [.1C51.0020.0002.05D9] # HEBREW LETTER YOD
+FB1D ; [.1C51.0020.0002.05D9][.0000.0089.0002.05B4] # HEBREW LETTER YOD WITH HIRIQ
+FB39 ; [.1C51.0020.0002.05D9][.0000.0092.0002.05BC] # HEBREW LETTER YOD WITH DAGESH
+05F2 ; [.1C51.0020.0004.05F2][.1C51.0020.0004.05F2] # HEBREW LIGATURE YIDDISH DOUBLE YOD
+FB1F ; [.1C51.0020.0004.FB1F][.1C51.0020.0004.FB1F][.0000.008C.0002.FB1F] # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+05DB ; [.1C52.0020.0002.05DB] # HEBREW LETTER KAF
+FB24 ; [.1C52.0020.0005.FB24] # HEBREW LETTER WIDE KAF
+05DA ; [.1C52.0020.0019.05DA] # HEBREW LETTER FINAL KAF
+FB3B ; [.1C52.0020.0002.05DB][.0000.0092.0002.05BC] # HEBREW LETTER KAF WITH DAGESH
+FB3A ; [.1C52.0020.0019.FB3A][.0000.0092.0002.FB3A] # HEBREW LETTER FINAL KAF WITH DAGESH
+FB4D ; [.1C52.0020.0002.05DB][.0000.0095.0002.05BF] # HEBREW LETTER KAF WITH RAFE
+05DC ; [.1C53.0020.0002.05DC] # HEBREW LETTER LAMED
+FB25 ; [.1C53.0020.0005.FB25] # HEBREW LETTER WIDE LAMED
+FB3C ; [.1C53.0020.0002.05DC][.0000.0092.0002.05BC] # HEBREW LETTER LAMED WITH DAGESH
+05DE ; [.1C54.0020.0002.05DE] # HEBREW LETTER MEM
+FB26 ; [.1C54.0020.0005.FB26] # HEBREW LETTER WIDE FINAL MEM
+05DD ; [.1C54.0020.0019.05DD] # HEBREW LETTER FINAL MEM
+FB3E ; [.1C54.0020.0002.05DE][.0000.0092.0002.05BC] # HEBREW LETTER MEM WITH DAGESH
+05E0 ; [.1C55.0020.0002.05E0] # HEBREW LETTER NUN
+05DF ; [.1C55.0020.0019.05DF] # HEBREW LETTER FINAL NUN
+FB40 ; [.1C55.0020.0002.05E0][.0000.0092.0002.05BC] # HEBREW LETTER NUN WITH DAGESH
+05E1 ; [.1C56.0020.0002.05E1] # HEBREW LETTER SAMEKH
+FB41 ; [.1C56.0020.0002.05E1][.0000.0092.0002.05BC] # HEBREW LETTER SAMEKH WITH DAGESH
+05E2 ; [.1C57.0020.0002.05E2] # HEBREW LETTER AYIN
+FB20 ; [.1C57.0020.0005.FB20] # HEBREW LETTER ALTERNATIVE AYIN
+05E4 ; [.1C58.0020.0002.05E4] # HEBREW LETTER PE
+05E3 ; [.1C58.0020.0019.05E3] # HEBREW LETTER FINAL PE
+FB44 ; [.1C58.0020.0002.05E4][.0000.0092.0002.05BC] # HEBREW LETTER PE WITH DAGESH
+FB43 ; [.1C58.0020.0019.FB43][.0000.0092.0002.FB43] # HEBREW LETTER FINAL PE WITH DAGESH
+FB4E ; [.1C58.0020.0002.05E4][.0000.0095.0002.05BF] # HEBREW LETTER PE WITH RAFE
+05E6 ; [.1C59.0020.0002.05E6] # HEBREW LETTER TSADI
+05E5 ; [.1C59.0020.0019.05E5] # HEBREW LETTER FINAL TSADI
+FB46 ; [.1C59.0020.0002.05E6][.0000.0092.0002.05BC] # HEBREW LETTER TSADI WITH DAGESH
+05E7 ; [.1C5A.0020.0002.05E7] # HEBREW LETTER QOF
+FB47 ; [.1C5A.0020.0002.05E7][.0000.0092.0002.05BC] # HEBREW LETTER QOF WITH DAGESH
+05E8 ; [.1C5B.0020.0002.05E8] # HEBREW LETTER RESH
+FB27 ; [.1C5B.0020.0005.FB27] # HEBREW LETTER WIDE RESH
+FB48 ; [.1C5B.0020.0002.05E8][.0000.0092.0002.05BC] # HEBREW LETTER RESH WITH DAGESH
+05E9 ; [.1C5C.0020.0002.05E9] # HEBREW LETTER SHIN
+FB2B ; [.1C5C.0020.0002.05E9][.0000.0090.0002.05C2] # HEBREW LETTER SHIN WITH SIN DOT
+FB2A ; [.1C5C.0020.0002.05E9][.0000.0091.0002.05C1] # HEBREW LETTER SHIN WITH SHIN DOT
+FB49 ; [.1C5C.0020.0002.05E9][.0000.0092.0002.05BC] # HEBREW LETTER SHIN WITH DAGESH
+FB2D ; [.1C5C.0020.0002.05E9][.0000.0092.0002.05BC][.0000.0090.0002.05C2] # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2C ; [.1C5C.0020.0002.05E9][.0000.0092.0002.05BC][.0000.0091.0002.05C1] # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+05EA ; [.1C5D.0020.0002.05EA] # HEBREW LETTER TAV
+FB28 ; [.1C5D.0020.0005.FB28] # HEBREW LETTER WIDE TAV
+FB4A ; [.1C5D.0020.0002.05EA][.0000.0092.0002.05BC] # HEBREW LETTER TAV WITH DAGESH
+10900 ; [.1C5E.0020.0002.10900] # PHOENICIAN LETTER ALF
+10901 ; [.1C5F.0020.0002.10901] # PHOENICIAN LETTER BET
+10902 ; [.1C60.0020.0002.10902] # PHOENICIAN LETTER GAML
+10903 ; [.1C61.0020.0002.10903] # PHOENICIAN LETTER DELT
+10904 ; [.1C62.0020.0002.10904] # PHOENICIAN LETTER HE
+10905 ; [.1C63.0020.0002.10905] # PHOENICIAN LETTER WAU
+10906 ; [.1C64.0020.0002.10906] # PHOENICIAN LETTER ZAI
+10907 ; [.1C65.0020.0002.10907] # PHOENICIAN LETTER HET
+10908 ; [.1C66.0020.0002.10908] # PHOENICIAN LETTER TET
+10909 ; [.1C67.0020.0002.10909] # PHOENICIAN LETTER YOD
+1090A ; [.1C68.0020.0002.1090A] # PHOENICIAN LETTER KAF
+1090B ; [.1C69.0020.0002.1090B] # PHOENICIAN LETTER LAMD
+1090C ; [.1C6A.0020.0002.1090C] # PHOENICIAN LETTER MEM
+1090D ; [.1C6B.0020.0002.1090D] # PHOENICIAN LETTER NUN
+1090E ; [.1C6C.0020.0002.1090E] # PHOENICIAN LETTER SEMK
+1090F ; [.1C6D.0020.0002.1090F] # PHOENICIAN LETTER AIN
+10910 ; [.1C6E.0020.0002.10910] # PHOENICIAN LETTER PE
+10911 ; [.1C6F.0020.0002.10911] # PHOENICIAN LETTER SADE
+10912 ; [.1C70.0020.0002.10912] # PHOENICIAN LETTER QOF
+10913 ; [.1C71.0020.0002.10913] # PHOENICIAN LETTER ROSH
+10914 ; [.1C72.0020.0002.10914] # PHOENICIAN LETTER SHIN
+10915 ; [.1C73.0020.0002.10915] # PHOENICIAN LETTER TAU
+0800 ; [.1C74.0020.0002.0800] # SAMARITAN LETTER ALAF
+0801 ; [.1C75.0020.0002.0801] # SAMARITAN LETTER BIT
+0802 ; [.1C76.0020.0002.0802] # SAMARITAN LETTER GAMAN
+0803 ; [.1C77.0020.0002.0803] # SAMARITAN LETTER DALAT
+0804 ; [.1C78.0020.0002.0804] # SAMARITAN LETTER IY
+0805 ; [.1C79.0020.0002.0805] # SAMARITAN LETTER BAA
+0806 ; [.1C7A.0020.0002.0806] # SAMARITAN LETTER ZEN
+0807 ; [.1C7B.0020.0002.0807] # SAMARITAN LETTER IT
+0808 ; [.1C7C.0020.0002.0808] # SAMARITAN LETTER TIT
+0809 ; [.1C7D.0020.0002.0809] # SAMARITAN LETTER YUT
+080A ; [.1C7E.0020.0002.080A] # SAMARITAN LETTER KAAF
+080B ; [.1C7F.0020.0002.080B] # SAMARITAN LETTER LABAT
+080C ; [.1C80.0020.0002.080C] # SAMARITAN LETTER MIM
+080D ; [.1C81.0020.0002.080D] # SAMARITAN LETTER NUN
+080E ; [.1C82.0020.0002.080E] # SAMARITAN LETTER SINGAAT
+080F ; [.1C83.0020.0002.080F] # SAMARITAN LETTER IN
+0810 ; [.1C84.0020.0002.0810] # SAMARITAN LETTER FI
+0811 ; [.1C85.0020.0002.0811] # SAMARITAN LETTER TSAADIY
+0812 ; [.1C86.0020.0002.0812] # SAMARITAN LETTER QUF
+0813 ; [.1C87.0020.0002.0813] # SAMARITAN LETTER RISH
+0814 ; [.1C88.0020.0002.0814] # SAMARITAN LETTER SHAN
+0815 ; [.1C89.0020.0002.0815] # SAMARITAN LETTER TAAF
+0816 ; [.1C8A.0020.0002.0816] # SAMARITAN MARK IN
+0817 ; [.1C8B.0020.0002.0817] # SAMARITAN MARK IN-ALAF
+081A ; [.1C8C.0020.0002.081A] # SAMARITAN MODIFIER LETTER EPENTHETIC YUT
+081B ; [.1C8D.0020.0002.081B] # SAMARITAN MARK EPENTHETIC YUT
+0621 ; [.1C8E.0020.0002.0621] # ARABIC LETTER HAMZA
+0674 ; [.1C8E.0020.0004.0674] # ARABIC LETTER HIGH HAMZA
+FE80 ; [.1C8E.0020.001A.FE80] # ARABIC LETTER HAMZA ISOLATED FORM
+06FD ; [.1C8E.0020.0004.06FD][.0000.013A.0004.06FD] # ARABIC SIGN SINDHI AMPERSAND
+0622 ; [.1C8F.0020.0002.0622] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0627 0653 ; [.1C8F.0020.0002.0622] # ARABIC LETTER ALEF WITH MADDA ABOVE
+FE82 ; [.1C8F.0020.0019.FE82] # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+FE81 ; [.1C8F.0020.001A.FE81] # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+0623 ; [.1C90.0020.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0627 0654 ; [.1C90.0020.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+FE84 ; [.1C90.0020.0019.FE84] # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+FE83 ; [.1C90.0020.001A.FE83] # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+0672 ; [.1C91.0020.0002.0672] # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+0671 ; [.1C92.0020.0002.0671] # ARABIC LETTER ALEF WASLA
+FB51 ; [.1C92.0020.0019.FB51] # ARABIC LETTER ALEF WASLA FINAL FORM
+FB50 ; [.1C92.0020.001A.FB50] # ARABIC LETTER ALEF WASLA ISOLATED FORM
+0624 ; [.1C93.0020.0002.0624] # ARABIC LETTER WAW WITH HAMZA ABOVE
+0648 0654 ; [.1C93.0020.0002.0624] # ARABIC LETTER WAW WITH HAMZA ABOVE
+FE86 ; [.1C93.0020.0019.FE86] # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
+FE85 ; [.1C93.0020.001A.FE85] # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+0625 ; [.1C94.0020.0002.0625] # ARABIC LETTER ALEF WITH HAMZA BELOW
+0627 0655 ; [.1C94.0020.0002.0625] # ARABIC LETTER ALEF WITH HAMZA BELOW
+FE88 ; [.1C94.0020.0019.FE88] # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
+FE87 ; [.1C94.0020.001A.FE87] # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
+0673 ; [.1C95.0020.0002.0673] # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+0773 ; [.1C96.0020.0002.0773] # ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
+0774 ; [.1C97.0020.0002.0774] # ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
+0626 ; [.1C98.0020.0002.0626] # ARABIC LETTER YEH WITH HAMZA ABOVE
+064A 0654 ; [.1C98.0020.0002.0626] # ARABIC LETTER YEH WITH HAMZA ABOVE
+FE8B ; [.1C98.0020.0017.FE8B] # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+FE8C ; [.1C98.0020.0018.FE8C] # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+FE8A ; [.1C98.0020.0019.FE8A] # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+FE89 ; [.1C98.0020.001A.FE89] # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+FBEB ; [.1C98.0020.0019.FBEB][.1C9C.0020.0019.FBEB] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
+FBEA ; [.1C98.0020.001A.FBEA][.1C9C.0020.001A.FBEA] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
+FC97 ; [.1C98.0020.0017.FC97][.1CB2.0020.0017.FC97] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
+FC00 ; [.1C98.0020.001A.FC00][.1CB2.0020.001A.FC00] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
+FC98 ; [.1C98.0020.0017.FC98][.1CB9.0020.0017.FC98] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
+FC01 ; [.1C98.0020.001A.FC01][.1CB9.0020.001A.FC01] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
+FC99 ; [.1C98.0020.0017.FC99][.1CBA.0020.0017.FC99] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
+FC64 ; [.1C98.0020.0019.FC64][.1CD2.0020.0019.FC64] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
+FC65 ; [.1C98.0020.0019.FC65][.1CD3.0020.0019.FC65] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
+FC9A ; [.1C98.0020.0017.FC9A][.1D27.0020.0017.FC9A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
+FCDF ; [.1C98.0020.0018.FCDF][.1D27.0020.0018.FCDF] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
+FC66 ; [.1C98.0020.0019.FC66][.1D27.0020.0019.FC66] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
+FC02 ; [.1C98.0020.001A.FC02][.1D27.0020.001A.FC02] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
+FC67 ; [.1C98.0020.0019.FC67][.1D2B.0020.0019.FC67] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
+FC9B ; [.1C98.0020.0017.FC9B][.1D34.0020.0017.FC9B] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
+FCE0 ; [.1C98.0020.0018.FCE0][.1D34.0020.0018.FCE0] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
+FBED ; [.1C98.0020.0019.FBED][.1D39.0020.0019.FBED] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
+FBEC ; [.1C98.0020.001A.FBEC][.1D39.0020.001A.FBEC] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
+FBEF ; [.1C98.0020.0019.FBEF][.1D3A.0020.0019.FBEF] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
+FBEE ; [.1C98.0020.001A.FBEE][.1D3A.0020.001A.FBEE] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
+FBF3 ; [.1C98.0020.0019.FBF3][.1D3D.0020.0019.FBF3] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
+FBF2 ; [.1C98.0020.001A.FBF2][.1D3D.0020.001A.FBF2] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
+FBF1 ; [.1C98.0020.0019.FBF1][.1D3E.0020.0019.FBF1] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
+FBF0 ; [.1C98.0020.001A.FBF0][.1D3E.0020.001A.FBF0] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
+FBF5 ; [.1C98.0020.0019.FBF5][.1D3F.0020.0019.FBF5] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
+FBF4 ; [.1C98.0020.001A.FBF4][.1D3F.0020.001A.FBF4] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
+FBFB ; [.1C98.0020.0017.FBFB][.1D47.0020.0017.FBFB] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FBFA ; [.1C98.0020.0019.FBFA][.1D47.0020.0019.FBFA] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FC68 ; [.1C98.0020.0019.FC68][.1D47.0020.0019.FC68] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FBF9 ; [.1C98.0020.001A.FBF9][.1D47.0020.001A.FBF9] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FC03 ; [.1C98.0020.001A.FC03][.1D47.0020.001A.FC03] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FC69 ; [.1C98.0020.0019.FC69][.1D48.0020.0019.FC69] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
+FC04 ; [.1C98.0020.001A.FC04][.1D48.0020.001A.FC04] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
+FBF8 ; [.1C98.0020.0017.FBF8][.1D4C.0020.0017.FBF8] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
+FBF7 ; [.1C98.0020.0019.FBF7][.1D4C.0020.0019.FBF7] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
+FBF6 ; [.1C98.0020.001A.FBF6][.1D4C.0020.001A.FBF6] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
+08A8 ; [.1C99.0020.0002.08A8] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE
+08A9 ; [.1C9A.0020.0002.08A9] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE
+08AC ; [.1C9B.0020.0002.08AC] # ARABIC LETTER ROHINGYA YEH
+0627 ; [.1C9C.0020.0002.0627] # ARABIC LETTER ALEF
+1EE00 ; [.1C9C.0020.0005.1EE00] # ARABIC MATHEMATICAL ALEF
+1EE80 ; [.1C9C.0020.0005.1EE80] # ARABIC MATHEMATICAL LOOPED ALEF
+FE8E ; [.1C9C.0020.0019.FE8E] # ARABIC LETTER ALEF FINAL FORM
+FE8D ; [.1C9C.0020.001A.FE8D] # ARABIC LETTER ALEF ISOLATED FORM
+FD3C ; [.1C9C.0020.0019.FD3C][.0000.00A2.0019.FD3C] # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
+FD3D ; [.1C9C.0020.001A.FD3D][.0000.00A2.001A.FD3D] # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+0675 ; [.1C9C.0020.0004.0675][.1C8E.0020.0004.0675] # ARABIC LETTER HIGH HAMZA ALEF
+FDF3 ; [.1C9C.0020.001A.FDF3][.1D0D.0020.001A.FDF3][.1C9E.0020.001A.FDF3][.1CD2.0020.001A.FDF3] # ARABIC LIGATURE AKBAR ISOLATED FORM
+FDF2 ; [.1C9C.0020.001A.FDF2][.1D20.0020.001A.FDF2][.1D20.0020.001A.FDF2][.1D34.0020.001A.FDF2] # ARABIC LIGATURE ALLAH ISOLATED FORM
+066E ; [.1C9D.0020.0002.066E] # ARABIC LETTER DOTLESS BEH
+1EE1C ; [.1C9D.0020.0005.1EE1C] # ARABIC MATHEMATICAL DOTLESS BEH
+1EE7C ; [.1C9D.0020.0005.1EE7C] # ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+0628 ; [.1C9E.0020.0002.0628] # ARABIC LETTER BEH
+1EE01 ; [.1C9E.0020.0005.1EE01] # ARABIC MATHEMATICAL BEH
+1EE21 ; [.1C9E.0020.0005.1EE21] # ARABIC MATHEMATICAL INITIAL BEH
+1EE61 ; [.1C9E.0020.0005.1EE61] # ARABIC MATHEMATICAL STRETCHED BEH
+1EE81 ; [.1C9E.0020.0005.1EE81] # ARABIC MATHEMATICAL LOOPED BEH
+1EEA1 ; [.1C9E.0020.0005.1EEA1] # ARABIC MATHEMATICAL DOUBLE-STRUCK BEH
+FE91 ; [.1C9E.0020.0017.FE91] # ARABIC LETTER BEH INITIAL FORM
+FE92 ; [.1C9E.0020.0018.FE92] # ARABIC LETTER BEH MEDIAL FORM
+FE90 ; [.1C9E.0020.0019.FE90] # ARABIC LETTER BEH FINAL FORM
+FE8F ; [.1C9E.0020.001A.FE8F] # ARABIC LETTER BEH ISOLATED FORM
+FC9C ; [.1C9E.0020.0017.FC9C][.1CB2.0020.0017.FC9C] # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
+FC05 ; [.1C9E.0020.001A.FC05][.1CB2.0020.001A.FC05] # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
+FC9D ; [.1C9E.0020.0017.FC9D][.1CB9.0020.0017.FC9D] # ARABIC LIGATURE BEH WITH HAH INITIAL FORM
+FC06 ; [.1C9E.0020.001A.FC06][.1CB9.0020.001A.FC06] # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
+FDC2 ; [.1C9E.0020.0019.FDC2][.1CB9.0020.0019.FDC2][.1D48.0020.0019.FDC2] # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
+FC9E ; [.1C9E.0020.0017.FC9E][.1CBA.0020.0017.FC9E] # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
+FC07 ; [.1C9E.0020.001A.FC07][.1CBA.0020.001A.FC07] # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
+FD9E ; [.1C9E.0020.0019.FD9E][.1CBA.0020.0019.FD9E][.1D48.0020.0019.FD9E] # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
+FC6A ; [.1C9E.0020.0019.FC6A][.1CD2.0020.0019.FC6A] # ARABIC LIGATURE BEH WITH REH FINAL FORM
+FC6B ; [.1C9E.0020.0019.FC6B][.1CD3.0020.0019.FC6B] # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
+FC9F ; [.1C9E.0020.0017.FC9F][.1D27.0020.0017.FC9F] # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
+FCE1 ; [.1C9E.0020.0018.FCE1][.1D27.0020.0018.FCE1] # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
+FC6C ; [.1C9E.0020.0019.FC6C][.1D27.0020.0019.FC6C] # ARABIC LIGATURE BEH WITH MEEM FINAL FORM
+FC08 ; [.1C9E.0020.001A.FC08][.1D27.0020.001A.FC08] # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
+FC6D ; [.1C9E.0020.0019.FC6D][.1D2B.0020.0019.FC6D] # ARABIC LIGATURE BEH WITH NOON FINAL FORM
+FCA0 ; [.1C9E.0020.0017.FCA0][.1D34.0020.0017.FCA0] # ARABIC LIGATURE BEH WITH HEH INITIAL FORM
+FCE2 ; [.1C9E.0020.0018.FCE2][.1D34.0020.0018.FCE2] # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
+FC6E ; [.1C9E.0020.0019.FC6E][.1D47.0020.0019.FC6E] # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
+FC09 ; [.1C9E.0020.001A.FC09][.1D47.0020.001A.FC09] # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
+FC6F ; [.1C9E.0020.0019.FC6F][.1D48.0020.0019.FC6F] # ARABIC LIGATURE BEH WITH YEH FINAL FORM
+FC0A ; [.1C9E.0020.001A.FC0A][.1D48.0020.001A.FC0A] # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
+067B ; [.1C9F.0020.0002.067B] # ARABIC LETTER BEEH
+FB54 ; [.1C9F.0020.0017.FB54] # ARABIC LETTER BEEH INITIAL FORM
+FB55 ; [.1C9F.0020.0018.FB55] # ARABIC LETTER BEEH MEDIAL FORM
+FB53 ; [.1C9F.0020.0019.FB53] # ARABIC LETTER BEEH FINAL FORM
+FB52 ; [.1C9F.0020.001A.FB52] # ARABIC LETTER BEEH ISOLATED FORM
+067E ; [.1CA0.0020.0002.067E] # ARABIC LETTER PEH
+FB58 ; [.1CA0.0020.0017.FB58] # ARABIC LETTER PEH INITIAL FORM
+FB59 ; [.1CA0.0020.0018.FB59] # ARABIC LETTER PEH MEDIAL FORM
+FB57 ; [.1CA0.0020.0019.FB57] # ARABIC LETTER PEH FINAL FORM
+FB56 ; [.1CA0.0020.001A.FB56] # ARABIC LETTER PEH ISOLATED FORM
+0680 ; [.1CA1.0020.0002.0680] # ARABIC LETTER BEHEH
+FB5C ; [.1CA1.0020.0017.FB5C] # ARABIC LETTER BEHEH INITIAL FORM
+FB5D ; [.1CA1.0020.0018.FB5D] # ARABIC LETTER BEHEH MEDIAL FORM
+FB5B ; [.1CA1.0020.0019.FB5B] # ARABIC LETTER BEHEH FINAL FORM
+FB5A ; [.1CA1.0020.001A.FB5A] # ARABIC LETTER BEHEH ISOLATED FORM
+0750 ; [.1CA2.0020.0002.0750] # ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW
+0751 ; [.1CA3.0020.0002.0751] # ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE
+0752 ; [.1CA4.0020.0002.0752] # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW
+0753 ; [.1CA5.0020.0002.0753] # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE
+0754 ; [.1CA6.0020.0002.0754] # ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE
+0755 ; [.1CA7.0020.0002.0755] # ARABIC LETTER BEH WITH INVERTED SMALL V BELOW
+08A0 ; [.1CA8.0020.0002.08A0] # ARABIC LETTER BEH WITH SMALL V BELOW
+0756 ; [.1CA9.0020.0002.0756] # ARABIC LETTER BEH WITH SMALL V
+0629 ; [.1CAA.0020.0002.0629] # ARABIC LETTER TEH MARBUTA
+FE94 ; [.1CAA.0020.0019.FE94] # ARABIC LETTER TEH MARBUTA FINAL FORM
+FE93 ; [.1CAA.0020.001A.FE93] # ARABIC LETTER TEH MARBUTA ISOLATED FORM
+062A ; [.1CAB.0020.0002.062A] # ARABIC LETTER TEH
+1EE15 ; [.1CAB.0020.0005.1EE15] # ARABIC MATHEMATICAL TEH
+1EE35 ; [.1CAB.0020.0005.1EE35] # ARABIC MATHEMATICAL INITIAL TEH
+1EE75 ; [.1CAB.0020.0005.1EE75] # ARABIC MATHEMATICAL STRETCHED TEH
+1EE95 ; [.1CAB.0020.0005.1EE95] # ARABIC MATHEMATICAL LOOPED TEH
+1EEB5 ; [.1CAB.0020.0005.1EEB5] # ARABIC MATHEMATICAL DOUBLE-STRUCK TEH
+FE97 ; [.1CAB.0020.0017.FE97] # ARABIC LETTER TEH INITIAL FORM
+FE98 ; [.1CAB.0020.0018.FE98] # ARABIC LETTER TEH MEDIAL FORM
+FE96 ; [.1CAB.0020.0019.FE96] # ARABIC LETTER TEH FINAL FORM
+FE95 ; [.1CAB.0020.001A.FE95] # ARABIC LETTER TEH ISOLATED FORM
+FCA1 ; [.1CAB.0020.0017.FCA1][.1CB2.0020.0017.FCA1] # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
+FC0B ; [.1CAB.0020.001A.FC0B][.1CB2.0020.001A.FC0B] # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
+FD50 ; [.1CAB.0020.0017.FD50][.1CB2.0020.0017.FD50][.1D27.0020.0017.FD50] # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
+FDA0 ; [.1CAB.0020.0019.FDA0][.1CB2.0020.0019.FDA0][.1D47.0020.0019.FDA0] # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD9F ; [.1CAB.0020.0019.FD9F][.1CB2.0020.0019.FD9F][.1D48.0020.0019.FD9F] # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
+FCA2 ; [.1CAB.0020.0017.FCA2][.1CB9.0020.0017.FCA2] # ARABIC LIGATURE TEH WITH HAH INITIAL FORM
+FC0C ; [.1CAB.0020.001A.FC0C][.1CB9.0020.001A.FC0C] # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
+FD52 ; [.1CAB.0020.0017.FD52][.1CB9.0020.0017.FD52][.1CB2.0020.0017.FD52] # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
+FD51 ; [.1CAB.0020.0019.FD51][.1CB9.0020.0019.FD51][.1CB2.0020.0019.FD51] # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
+FD53 ; [.1CAB.0020.0017.FD53][.1CB9.0020.0017.FD53][.1D27.0020.0017.FD53] # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
+FCA3 ; [.1CAB.0020.0017.FCA3][.1CBA.0020.0017.FCA3] # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
+FC0D ; [.1CAB.0020.001A.FC0D][.1CBA.0020.001A.FC0D] # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
+FD54 ; [.1CAB.0020.0017.FD54][.1CBA.0020.0017.FD54][.1D27.0020.0017.FD54] # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
+FDA2 ; [.1CAB.0020.0019.FDA2][.1CBA.0020.0019.FDA2][.1D47.0020.0019.FDA2] # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA1 ; [.1CAB.0020.0019.FDA1][.1CBA.0020.0019.FDA1][.1D48.0020.0019.FDA1] # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
+FC70 ; [.1CAB.0020.0019.FC70][.1CD2.0020.0019.FC70] # ARABIC LIGATURE TEH WITH REH FINAL FORM
+FC71 ; [.1CAB.0020.0019.FC71][.1CD3.0020.0019.FC71] # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
+FCA4 ; [.1CAB.0020.0017.FCA4][.1D27.0020.0017.FCA4] # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
+FCE3 ; [.1CAB.0020.0018.FCE3][.1D27.0020.0018.FCE3] # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
+FC72 ; [.1CAB.0020.0019.FC72][.1D27.0020.0019.FC72] # ARABIC LIGATURE TEH WITH MEEM FINAL FORM
+FC0E ; [.1CAB.0020.001A.FC0E][.1D27.0020.001A.FC0E] # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
+FD55 ; [.1CAB.0020.0017.FD55][.1D27.0020.0017.FD55][.1CB2.0020.0017.FD55] # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
+FD56 ; [.1CAB.0020.0017.FD56][.1D27.0020.0017.FD56][.1CB9.0020.0017.FD56] # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
+FD57 ; [.1CAB.0020.0017.FD57][.1D27.0020.0017.FD57][.1CBA.0020.0017.FD57] # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
+FDA4 ; [.1CAB.0020.0019.FDA4][.1D27.0020.0019.FDA4][.1D47.0020.0019.FDA4] # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA3 ; [.1CAB.0020.0019.FDA3][.1D27.0020.0019.FDA3][.1D48.0020.0019.FDA3] # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
+FC73 ; [.1CAB.0020.0019.FC73][.1D2B.0020.0019.FC73] # ARABIC LIGATURE TEH WITH NOON FINAL FORM
+FCA5 ; [.1CAB.0020.0017.FCA5][.1D34.0020.0017.FCA5] # ARABIC LIGATURE TEH WITH HEH INITIAL FORM
+FCE4 ; [.1CAB.0020.0018.FCE4][.1D34.0020.0018.FCE4] # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
+FC74 ; [.1CAB.0020.0019.FC74][.1D47.0020.0019.FC74] # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
+FC0F ; [.1CAB.0020.001A.FC0F][.1D47.0020.001A.FC0F] # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
+FC75 ; [.1CAB.0020.0019.FC75][.1D48.0020.0019.FC75] # ARABIC LIGATURE TEH WITH YEH FINAL FORM
+FC10 ; [.1CAB.0020.001A.FC10][.1D48.0020.001A.FC10] # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
+062B ; [.1CAC.0020.0002.062B] # ARABIC LETTER THEH
+1EE16 ; [.1CAC.0020.0005.1EE16] # ARABIC MATHEMATICAL THEH
+1EE36 ; [.1CAC.0020.0005.1EE36] # ARABIC MATHEMATICAL INITIAL THEH
+1EE76 ; [.1CAC.0020.0005.1EE76] # ARABIC MATHEMATICAL STRETCHED THEH
+1EE96 ; [.1CAC.0020.0005.1EE96] # ARABIC MATHEMATICAL LOOPED THEH
+1EEB6 ; [.1CAC.0020.0005.1EEB6] # ARABIC MATHEMATICAL DOUBLE-STRUCK THEH
+FE9B ; [.1CAC.0020.0017.FE9B] # ARABIC LETTER THEH INITIAL FORM
+FE9C ; [.1CAC.0020.0018.FE9C] # ARABIC LETTER THEH MEDIAL FORM
+FE9A ; [.1CAC.0020.0019.FE9A] # ARABIC LETTER THEH FINAL FORM
+FE99 ; [.1CAC.0020.001A.FE99] # ARABIC LETTER THEH ISOLATED FORM
+FC11 ; [.1CAC.0020.001A.FC11][.1CB2.0020.001A.FC11] # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
+FC76 ; [.1CAC.0020.0019.FC76][.1CD2.0020.0019.FC76] # ARABIC LIGATURE THEH WITH REH FINAL FORM
+FC77 ; [.1CAC.0020.0019.FC77][.1CD3.0020.0019.FC77] # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
+FCA6 ; [.1CAC.0020.0017.FCA6][.1D27.0020.0017.FCA6] # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
+FCE5 ; [.1CAC.0020.0018.FCE5][.1D27.0020.0018.FCE5] # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
+FC78 ; [.1CAC.0020.0019.FC78][.1D27.0020.0019.FC78] # ARABIC LIGATURE THEH WITH MEEM FINAL FORM
+FC12 ; [.1CAC.0020.001A.FC12][.1D27.0020.001A.FC12] # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
+FC79 ; [.1CAC.0020.0019.FC79][.1D2B.0020.0019.FC79] # ARABIC LIGATURE THEH WITH NOON FINAL FORM
+FCE6 ; [.1CAC.0020.0018.FCE6][.1D34.0020.0018.FCE6] # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
+FC7A ; [.1CAC.0020.0019.FC7A][.1D47.0020.0019.FC7A] # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
+FC13 ; [.1CAC.0020.001A.FC13][.1D47.0020.001A.FC13] # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
+FC7B ; [.1CAC.0020.0019.FC7B][.1D48.0020.0019.FC7B] # ARABIC LIGATURE THEH WITH YEH FINAL FORM
+FC14 ; [.1CAC.0020.001A.FC14][.1D48.0020.001A.FC14] # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
+0679 ; [.1CAD.0020.0002.0679] # ARABIC LETTER TTEH
+FB68 ; [.1CAD.0020.0017.FB68] # ARABIC LETTER TTEH INITIAL FORM
+FB69 ; [.1CAD.0020.0018.FB69] # ARABIC LETTER TTEH MEDIAL FORM
+FB67 ; [.1CAD.0020.0019.FB67] # ARABIC LETTER TTEH FINAL FORM
+FB66 ; [.1CAD.0020.001A.FB66] # ARABIC LETTER TTEH ISOLATED FORM
+067A ; [.1CAE.0020.0002.067A] # ARABIC LETTER TTEHEH
+FB60 ; [.1CAE.0020.0017.FB60] # ARABIC LETTER TTEHEH INITIAL FORM
+FB61 ; [.1CAE.0020.0018.FB61] # ARABIC LETTER TTEHEH MEDIAL FORM
+FB5F ; [.1CAE.0020.0019.FB5F] # ARABIC LETTER TTEHEH FINAL FORM
+FB5E ; [.1CAE.0020.001A.FB5E] # ARABIC LETTER TTEHEH ISOLATED FORM
+067C ; [.1CAF.0020.0002.067C] # ARABIC LETTER TEH WITH RING
+067D ; [.1CB0.0020.0002.067D] # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
+067F ; [.1CB1.0020.0002.067F] # ARABIC LETTER TEHEH
+FB64 ; [.1CB1.0020.0017.FB64] # ARABIC LETTER TEHEH INITIAL FORM
+FB65 ; [.1CB1.0020.0018.FB65] # ARABIC LETTER TEHEH MEDIAL FORM
+FB63 ; [.1CB1.0020.0019.FB63] # ARABIC LETTER TEHEH FINAL FORM
+FB62 ; [.1CB1.0020.001A.FB62] # ARABIC LETTER TEHEH ISOLATED FORM
+062C ; [.1CB2.0020.0002.062C] # ARABIC LETTER JEEM
+1EE02 ; [.1CB2.0020.0005.1EE02] # ARABIC MATHEMATICAL JEEM
+1EE22 ; [.1CB2.0020.0005.1EE22] # ARABIC MATHEMATICAL INITIAL JEEM
+1EE42 ; [.1CB2.0020.0005.1EE42] # ARABIC MATHEMATICAL TAILED JEEM
+1EE62 ; [.1CB2.0020.0005.1EE62] # ARABIC MATHEMATICAL STRETCHED JEEM
+1EE82 ; [.1CB2.0020.0005.1EE82] # ARABIC MATHEMATICAL LOOPED JEEM
+1EEA2 ; [.1CB2.0020.0005.1EEA2] # ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM
+FE9F ; [.1CB2.0020.0017.FE9F] # ARABIC LETTER JEEM INITIAL FORM
+FEA0 ; [.1CB2.0020.0018.FEA0] # ARABIC LETTER JEEM MEDIAL FORM
+FE9E ; [.1CB2.0020.0019.FE9E] # ARABIC LETTER JEEM FINAL FORM
+FE9D ; [.1CB2.0020.001A.FE9D] # ARABIC LETTER JEEM ISOLATED FORM
+FCA7 ; [.1CB2.0020.0017.FCA7][.1CB9.0020.0017.FCA7] # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
+FC15 ; [.1CB2.0020.001A.FC15][.1CB9.0020.001A.FC15] # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
+FDA6 ; [.1CB2.0020.0019.FDA6][.1CB9.0020.0019.FDA6][.1D47.0020.0019.FDA6] # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDBE ; [.1CB2.0020.0019.FDBE][.1CB9.0020.0019.FDBE][.1D48.0020.0019.FDBE] # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
+FDFB ; [.1CB2.0020.001A.FDFB][.1D20.0020.001A.FDFB][*020A.0020.001A.FDFB][.1CB2.0020.001A.FDFB][.1D20.0020.001A.FDFB][.1C9C.0020.001A.FDFB][.1D20.0020.001A.FDFB][.1D34.0020.001A.FDFB] # ARABIC LIGATURE JALLAJALALOUHOU
+FCA8 ; [.1CB2.0020.0017.FCA8][.1D27.0020.0017.FCA8] # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
+FC16 ; [.1CB2.0020.001A.FC16][.1D27.0020.001A.FC16] # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
+FD59 ; [.1CB2.0020.0017.FD59][.1D27.0020.0017.FD59][.1CB9.0020.0017.FD59] # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
+FD58 ; [.1CB2.0020.0019.FD58][.1D27.0020.0019.FD58][.1CB9.0020.0019.FD58] # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
+FDA7 ; [.1CB2.0020.0019.FDA7][.1D27.0020.0019.FDA7][.1D47.0020.0019.FDA7] # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA5 ; [.1CB2.0020.0019.FDA5][.1D27.0020.0019.FDA5][.1D48.0020.0019.FDA5] # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
+FD1D ; [.1CB2.0020.0019.FD1D][.1D47.0020.0019.FD1D] # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
+FD01 ; [.1CB2.0020.001A.FD01][.1D47.0020.001A.FD01] # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
+FD1E ; [.1CB2.0020.0019.FD1E][.1D48.0020.0019.FD1E] # ARABIC LIGATURE JEEM WITH YEH FINAL FORM
+FD02 ; [.1CB2.0020.001A.FD02][.1D48.0020.001A.FD02] # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
+0683 ; [.1CB3.0020.0002.0683] # ARABIC LETTER NYEH
+FB78 ; [.1CB3.0020.0017.FB78] # ARABIC LETTER NYEH INITIAL FORM
+FB79 ; [.1CB3.0020.0018.FB79] # ARABIC LETTER NYEH MEDIAL FORM
+FB77 ; [.1CB3.0020.0019.FB77] # ARABIC LETTER NYEH FINAL FORM
+FB76 ; [.1CB3.0020.001A.FB76] # ARABIC LETTER NYEH ISOLATED FORM
+0684 ; [.1CB4.0020.0002.0684] # ARABIC LETTER DYEH
+FB74 ; [.1CB4.0020.0017.FB74] # ARABIC LETTER DYEH INITIAL FORM
+FB75 ; [.1CB4.0020.0018.FB75] # ARABIC LETTER DYEH MEDIAL FORM
+FB73 ; [.1CB4.0020.0019.FB73] # ARABIC LETTER DYEH FINAL FORM
+FB72 ; [.1CB4.0020.001A.FB72] # ARABIC LETTER DYEH ISOLATED FORM
+0686 ; [.1CB5.0020.0002.0686] # ARABIC LETTER TCHEH
+FB7C ; [.1CB5.0020.0017.FB7C] # ARABIC LETTER TCHEH INITIAL FORM
+FB7D ; [.1CB5.0020.0018.FB7D] # ARABIC LETTER TCHEH MEDIAL FORM
+FB7B ; [.1CB5.0020.0019.FB7B] # ARABIC LETTER TCHEH FINAL FORM
+FB7A ; [.1CB5.0020.001A.FB7A] # ARABIC LETTER TCHEH ISOLATED FORM
+06BF ; [.1CB6.0020.0002.06BF] # ARABIC LETTER TCHEH WITH DOT ABOVE
+0687 ; [.1CB7.0020.0002.0687] # ARABIC LETTER TCHEHEH
+FB80 ; [.1CB7.0020.0017.FB80] # ARABIC LETTER TCHEHEH INITIAL FORM
+FB81 ; [.1CB7.0020.0018.FB81] # ARABIC LETTER TCHEHEH MEDIAL FORM
+FB7F ; [.1CB7.0020.0019.FB7F] # ARABIC LETTER TCHEHEH FINAL FORM
+FB7E ; [.1CB7.0020.001A.FB7E] # ARABIC LETTER TCHEHEH ISOLATED FORM
+08A2 ; [.1CB8.0020.0002.08A2] # ARABIC LETTER JEEM WITH TWO DOTS ABOVE
+062D ; [.1CB9.0020.0002.062D] # ARABIC LETTER HAH
+1EE07 ; [.1CB9.0020.0005.1EE07] # ARABIC MATHEMATICAL HAH
+1EE27 ; [.1CB9.0020.0005.1EE27] # ARABIC MATHEMATICAL INITIAL HAH
+1EE47 ; [.1CB9.0020.0005.1EE47] # ARABIC MATHEMATICAL TAILED HAH
+1EE67 ; [.1CB9.0020.0005.1EE67] # ARABIC MATHEMATICAL STRETCHED HAH
+1EE87 ; [.1CB9.0020.0005.1EE87] # ARABIC MATHEMATICAL LOOPED HAH
+1EEA7 ; [.1CB9.0020.0005.1EEA7] # ARABIC MATHEMATICAL DOUBLE-STRUCK HAH
+FEA3 ; [.1CB9.0020.0017.FEA3] # ARABIC LETTER HAH INITIAL FORM
+FEA4 ; [.1CB9.0020.0018.FEA4] # ARABIC LETTER HAH MEDIAL FORM
+FEA2 ; [.1CB9.0020.0019.FEA2] # ARABIC LETTER HAH FINAL FORM
+FEA1 ; [.1CB9.0020.001A.FEA1] # ARABIC LETTER HAH ISOLATED FORM
+FCA9 ; [.1CB9.0020.0017.FCA9][.1CB2.0020.0017.FCA9] # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
+FC17 ; [.1CB9.0020.001A.FC17][.1CB2.0020.001A.FC17] # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
+FDBF ; [.1CB9.0020.0019.FDBF][.1CB2.0020.0019.FDBF][.1D48.0020.0019.FDBF] # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
+FCAA ; [.1CB9.0020.0017.FCAA][.1D27.0020.0017.FCAA] # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
+FC18 ; [.1CB9.0020.001A.FC18][.1D27.0020.001A.FC18] # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
+FD5B ; [.1CB9.0020.0019.FD5B][.1D27.0020.0019.FD5B][.1D47.0020.0019.FD5B] # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD5A ; [.1CB9.0020.0019.FD5A][.1D27.0020.0019.FD5A][.1D48.0020.0019.FD5A] # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
+FD1B ; [.1CB9.0020.0019.FD1B][.1D47.0020.0019.FD1B] # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
+FCFF ; [.1CB9.0020.001A.FCFF][.1D47.0020.001A.FCFF] # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
+FD1C ; [.1CB9.0020.0019.FD1C][.1D48.0020.0019.FD1C] # ARABIC LIGATURE HAH WITH YEH FINAL FORM
+FD00 ; [.1CB9.0020.001A.FD00][.1D48.0020.001A.FD00] # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
+062E ; [.1CBA.0020.0002.062E] # ARABIC LETTER KHAH
+1EE17 ; [.1CBA.0020.0005.1EE17] # ARABIC MATHEMATICAL KHAH
+1EE37 ; [.1CBA.0020.0005.1EE37] # ARABIC MATHEMATICAL INITIAL KHAH
+1EE57 ; [.1CBA.0020.0005.1EE57] # ARABIC MATHEMATICAL TAILED KHAH
+1EE77 ; [.1CBA.0020.0005.1EE77] # ARABIC MATHEMATICAL STRETCHED KHAH
+1EE97 ; [.1CBA.0020.0005.1EE97] # ARABIC MATHEMATICAL LOOPED KHAH
+1EEB7 ; [.1CBA.0020.0005.1EEB7] # ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH
+FEA7 ; [.1CBA.0020.0017.FEA7] # ARABIC LETTER KHAH INITIAL FORM
+FEA8 ; [.1CBA.0020.0018.FEA8] # ARABIC LETTER KHAH MEDIAL FORM
+FEA6 ; [.1CBA.0020.0019.FEA6] # ARABIC LETTER KHAH FINAL FORM
+FEA5 ; [.1CBA.0020.001A.FEA5] # ARABIC LETTER KHAH ISOLATED FORM
+FCAB ; [.1CBA.0020.0017.FCAB][.1CB2.0020.0017.FCAB] # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
+FC19 ; [.1CBA.0020.001A.FC19][.1CB2.0020.001A.FC19] # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
+FC1A ; [.1CBA.0020.001A.FC1A][.1CB9.0020.001A.FC1A] # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
+FCAC ; [.1CBA.0020.0017.FCAC][.1D27.0020.0017.FCAC] # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
+FC1B ; [.1CBA.0020.001A.FC1B][.1D27.0020.001A.FC1B] # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
+FD1F ; [.1CBA.0020.0019.FD1F][.1D47.0020.0019.FD1F] # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
+FD03 ; [.1CBA.0020.001A.FD03][.1D47.0020.001A.FD03] # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
+FD20 ; [.1CBA.0020.0019.FD20][.1D48.0020.0019.FD20] # ARABIC LIGATURE KHAH WITH YEH FINAL FORM
+FD04 ; [.1CBA.0020.001A.FD04][.1D48.0020.001A.FD04] # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
+0681 ; [.1CBB.0020.0002.0681] # ARABIC LETTER HAH WITH HAMZA ABOVE
+0682 ; [.1CBC.0020.0002.0682] # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
+0685 ; [.1CBD.0020.0002.0685] # ARABIC LETTER HAH WITH THREE DOTS ABOVE
+0757 ; [.1CBE.0020.0002.0757] # ARABIC LETTER HAH WITH TWO DOTS ABOVE
+0758 ; [.1CBF.0020.0002.0758] # ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW
+076E ; [.1CC0.0020.0002.076E] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW
+076F ; [.1CC1.0020.0002.076F] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS
+0772 ; [.1CC2.0020.0002.0772] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE
+077C ; [.1CC3.0020.0002.077C] # ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW
+062F ; [.1CC4.0020.0002.062F] # ARABIC LETTER DAL
+1EE03 ; [.1CC4.0020.0005.1EE03] # ARABIC MATHEMATICAL DAL
+1EE83 ; [.1CC4.0020.0005.1EE83] # ARABIC MATHEMATICAL LOOPED DAL
+1EEA3 ; [.1CC4.0020.0005.1EEA3] # ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+FEAA ; [.1CC4.0020.0019.FEAA] # ARABIC LETTER DAL FINAL FORM
+FEA9 ; [.1CC4.0020.001A.FEA9] # ARABIC LETTER DAL ISOLATED FORM
+0630 ; [.1CC5.0020.0002.0630] # ARABIC LETTER THAL
+1EE18 ; [.1CC5.0020.0005.1EE18] # ARABIC MATHEMATICAL THAL
+1EE98 ; [.1CC5.0020.0005.1EE98] # ARABIC MATHEMATICAL LOOPED THAL
+1EEB8 ; [.1CC5.0020.0005.1EEB8] # ARABIC MATHEMATICAL DOUBLE-STRUCK THAL
+FEAC ; [.1CC5.0020.0019.FEAC] # ARABIC LETTER THAL FINAL FORM
+FEAB ; [.1CC5.0020.001A.FEAB] # ARABIC LETTER THAL ISOLATED FORM
+FC5B ; [.1CC5.0020.001A.FC5B][.0000.00D1.001A.FC5B] # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
+0688 ; [.1CC6.0020.0002.0688] # ARABIC LETTER DDAL
+FB89 ; [.1CC6.0020.0019.FB89] # ARABIC LETTER DDAL FINAL FORM
+FB88 ; [.1CC6.0020.001A.FB88] # ARABIC LETTER DDAL ISOLATED FORM
+0689 ; [.1CC7.0020.0002.0689] # ARABIC LETTER DAL WITH RING
+068A ; [.1CC8.0020.0002.068A] # ARABIC LETTER DAL WITH DOT BELOW
+068B ; [.1CC9.0020.0002.068B] # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
+068C ; [.1CCA.0020.0002.068C] # ARABIC LETTER DAHAL
+FB85 ; [.1CCA.0020.0019.FB85] # ARABIC LETTER DAHAL FINAL FORM
+FB84 ; [.1CCA.0020.001A.FB84] # ARABIC LETTER DAHAL ISOLATED FORM
+068D ; [.1CCB.0020.0002.068D] # ARABIC LETTER DDAHAL
+FB83 ; [.1CCB.0020.0019.FB83] # ARABIC LETTER DDAHAL FINAL FORM
+FB82 ; [.1CCB.0020.001A.FB82] # ARABIC LETTER DDAHAL ISOLATED FORM
+068E ; [.1CCC.0020.0002.068E] # ARABIC LETTER DUL
+FB87 ; [.1CCC.0020.0019.FB87] # ARABIC LETTER DUL FINAL FORM
+FB86 ; [.1CCC.0020.001A.FB86] # ARABIC LETTER DUL ISOLATED FORM
+068F ; [.1CCD.0020.0002.068F] # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
+0690 ; [.1CCE.0020.0002.0690] # ARABIC LETTER DAL WITH FOUR DOTS ABOVE
+06EE ; [.1CCF.0020.0002.06EE] # ARABIC LETTER DAL WITH INVERTED V
+0759 ; [.1CD0.0020.0002.0759] # ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH
+075A ; [.1CD1.0020.0002.075A] # ARABIC LETTER DAL WITH INVERTED SMALL V BELOW
+0631 ; [.1CD2.0020.0002.0631] # ARABIC LETTER REH
+1EE13 ; [.1CD2.0020.0005.1EE13] # ARABIC MATHEMATICAL REH
+1EE93 ; [.1CD2.0020.0005.1EE93] # ARABIC MATHEMATICAL LOOPED REH
+1EEB3 ; [.1CD2.0020.0005.1EEB3] # ARABIC MATHEMATICAL DOUBLE-STRUCK REH
+FEAE ; [.1CD2.0020.0019.FEAE] # ARABIC LETTER REH FINAL FORM
+FEAD ; [.1CD2.0020.001A.FEAD] # ARABIC LETTER REH ISOLATED FORM
+FC5C ; [.1CD2.0020.001A.FC5C][.0000.00D1.001A.FC5C] # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
+FDF6 ; [.1CD2.0020.001A.FDF6][.1CE3.0020.001A.FDF6][.1D3A.0020.001A.FDF6][.1D20.0020.001A.FDF6] # ARABIC LIGATURE RASOUL ISOLATED FORM
+FDFC ; [.1CD2.0020.001A.FDFC][.1D49.0020.001A.FDFC][.1C9C.0020.001A.FDFC][.1D20.0020.001A.FDFC] # RIAL SIGN
+0632 ; [.1CD3.0020.0002.0632] # ARABIC LETTER ZAIN
+1EE06 ; [.1CD3.0020.0005.1EE06] # ARABIC MATHEMATICAL ZAIN
+1EE86 ; [.1CD3.0020.0005.1EE86] # ARABIC MATHEMATICAL LOOPED ZAIN
+1EEA6 ; [.1CD3.0020.0005.1EEA6] # ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN
+FEB0 ; [.1CD3.0020.0019.FEB0] # ARABIC LETTER ZAIN FINAL FORM
+FEAF ; [.1CD3.0020.001A.FEAF] # ARABIC LETTER ZAIN ISOLATED FORM
+0691 ; [.1CD4.0020.0002.0691] # ARABIC LETTER RREH
+FB8D ; [.1CD4.0020.0019.FB8D] # ARABIC LETTER RREH FINAL FORM
+FB8C ; [.1CD4.0020.001A.FB8C] # ARABIC LETTER RREH ISOLATED FORM
+0692 ; [.1CD5.0020.0002.0692] # ARABIC LETTER REH WITH SMALL V
+0693 ; [.1CD6.0020.0002.0693] # ARABIC LETTER REH WITH RING
+0694 ; [.1CD7.0020.0002.0694] # ARABIC LETTER REH WITH DOT BELOW
+0695 ; [.1CD8.0020.0002.0695] # ARABIC LETTER REH WITH SMALL V BELOW
+0696 ; [.1CD9.0020.0002.0696] # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
+0697 ; [.1CDA.0020.0002.0697] # ARABIC LETTER REH WITH TWO DOTS ABOVE
+0698 ; [.1CDB.0020.0002.0698] # ARABIC LETTER JEH
+FB8B ; [.1CDB.0020.0019.FB8B] # ARABIC LETTER JEH FINAL FORM
+FB8A ; [.1CDB.0020.001A.FB8A] # ARABIC LETTER JEH ISOLATED FORM
+0699 ; [.1CDC.0020.0002.0699] # ARABIC LETTER REH WITH FOUR DOTS ABOVE
+06EF ; [.1CDD.0020.0002.06EF] # ARABIC LETTER REH WITH INVERTED V
+075B ; [.1CDE.0020.0002.075B] # ARABIC LETTER REH WITH STROKE
+076B ; [.1CDF.0020.0002.076B] # ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE
+076C ; [.1CE0.0020.0002.076C] # ARABIC LETTER REH WITH HAMZA ABOVE
+0771 ; [.1CE1.0020.0002.0771] # ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS
+08AA ; [.1CE2.0020.0002.08AA] # ARABIC LETTER REH WITH LOOP
+0633 ; [.1CE3.0020.0002.0633] # ARABIC LETTER SEEN
+1EE0E ; [.1CE3.0020.0005.1EE0E] # ARABIC MATHEMATICAL SEEN
+1EE2E ; [.1CE3.0020.0005.1EE2E] # ARABIC MATHEMATICAL INITIAL SEEN
+1EE4E ; [.1CE3.0020.0005.1EE4E] # ARABIC MATHEMATICAL TAILED SEEN
+1EE6E ; [.1CE3.0020.0005.1EE6E] # ARABIC MATHEMATICAL STRETCHED SEEN
+1EE8E ; [.1CE3.0020.0005.1EE8E] # ARABIC MATHEMATICAL LOOPED SEEN
+1EEAE ; [.1CE3.0020.0005.1EEAE] # ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN
+FEB3 ; [.1CE3.0020.0017.FEB3] # ARABIC LETTER SEEN INITIAL FORM
+FEB4 ; [.1CE3.0020.0018.FEB4] # ARABIC LETTER SEEN MEDIAL FORM
+FEB2 ; [.1CE3.0020.0019.FEB2] # ARABIC LETTER SEEN FINAL FORM
+FEB1 ; [.1CE3.0020.001A.FEB1] # ARABIC LETTER SEEN ISOLATED FORM
+FCAD ; [.1CE3.0020.0017.FCAD][.1CB2.0020.0017.FCAD] # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
+FD34 ; [.1CE3.0020.0018.FD34][.1CB2.0020.0018.FD34] # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
+FC1C ; [.1CE3.0020.001A.FC1C][.1CB2.0020.001A.FC1C] # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
+FD5D ; [.1CE3.0020.0017.FD5D][.1CB2.0020.0017.FD5D][.1CB9.0020.0017.FD5D] # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
+FD5E ; [.1CE3.0020.0019.FD5E][.1CB2.0020.0019.FD5E][.1D47.0020.0019.FD5E] # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FCAE ; [.1CE3.0020.0017.FCAE][.1CB9.0020.0017.FCAE] # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
+FD35 ; [.1CE3.0020.0018.FD35][.1CB9.0020.0018.FD35] # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
+FC1D ; [.1CE3.0020.001A.FC1D][.1CB9.0020.001A.FC1D] # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
+FD5C ; [.1CE3.0020.0017.FD5C][.1CB9.0020.0017.FD5C][.1CB2.0020.0017.FD5C] # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
+FCAF ; [.1CE3.0020.0017.FCAF][.1CBA.0020.0017.FCAF] # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
+FD36 ; [.1CE3.0020.0018.FD36][.1CBA.0020.0018.FD36] # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
+FC1E ; [.1CE3.0020.001A.FC1E][.1CBA.0020.001A.FC1E] # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
+FDA8 ; [.1CE3.0020.0019.FDA8][.1CBA.0020.0019.FDA8][.1D47.0020.0019.FDA8] # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDC6 ; [.1CE3.0020.0019.FDC6][.1CBA.0020.0019.FDC6][.1D48.0020.0019.FDC6] # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
+FD2A ; [.1CE3.0020.0019.FD2A][.1CD2.0020.0019.FD2A] # ARABIC LIGATURE SEEN WITH REH FINAL FORM
+FD0E ; [.1CE3.0020.001A.FD0E][.1CD2.0020.001A.FD0E] # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
+FCB0 ; [.1CE3.0020.0017.FCB0][.1D27.0020.0017.FCB0] # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
+FCE7 ; [.1CE3.0020.0018.FCE7][.1D27.0020.0018.FCE7] # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
+FC1F ; [.1CE3.0020.001A.FC1F][.1D27.0020.001A.FC1F] # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
+FD61 ; [.1CE3.0020.0017.FD61][.1D27.0020.0017.FD61][.1CB2.0020.0017.FD61] # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
+FD60 ; [.1CE3.0020.0017.FD60][.1D27.0020.0017.FD60][.1CB9.0020.0017.FD60] # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
+FD5F ; [.1CE3.0020.0019.FD5F][.1D27.0020.0019.FD5F][.1CB9.0020.0019.FD5F] # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
+FD63 ; [.1CE3.0020.0017.FD63][.1D27.0020.0017.FD63][.1D27.0020.0017.FD63] # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
+FD62 ; [.1CE3.0020.0019.FD62][.1D27.0020.0019.FD62][.1D27.0020.0019.FD62] # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
+FD31 ; [.1CE3.0020.0017.FD31][.1D34.0020.0017.FD31] # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
+FCE8 ; [.1CE3.0020.0018.FCE8][.1D34.0020.0018.FCE8] # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
+FD17 ; [.1CE3.0020.0019.FD17][.1D47.0020.0019.FD17] # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
+FCFB ; [.1CE3.0020.001A.FCFB][.1D47.0020.001A.FCFB] # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
+FD18 ; [.1CE3.0020.0019.FD18][.1D48.0020.0019.FD18] # ARABIC LIGATURE SEEN WITH YEH FINAL FORM
+FCFC ; [.1CE3.0020.001A.FCFC][.1D48.0020.001A.FCFC] # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
+0634 ; [.1CE4.0020.0002.0634] # ARABIC LETTER SHEEN
+1EE14 ; [.1CE4.0020.0005.1EE14] # ARABIC MATHEMATICAL SHEEN
+1EE34 ; [.1CE4.0020.0005.1EE34] # ARABIC MATHEMATICAL INITIAL SHEEN
+1EE54 ; [.1CE4.0020.0005.1EE54] # ARABIC MATHEMATICAL TAILED SHEEN
+1EE74 ; [.1CE4.0020.0005.1EE74] # ARABIC MATHEMATICAL STRETCHED SHEEN
+1EE94 ; [.1CE4.0020.0005.1EE94] # ARABIC MATHEMATICAL LOOPED SHEEN
+1EEB4 ; [.1CE4.0020.0005.1EEB4] # ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN
+FEB7 ; [.1CE4.0020.0017.FEB7] # ARABIC LETTER SHEEN INITIAL FORM
+FEB8 ; [.1CE4.0020.0018.FEB8] # ARABIC LETTER SHEEN MEDIAL FORM
+FEB6 ; [.1CE4.0020.0019.FEB6] # ARABIC LETTER SHEEN FINAL FORM
+FEB5 ; [.1CE4.0020.001A.FEB5] # ARABIC LETTER SHEEN ISOLATED FORM
+FD2D ; [.1CE4.0020.0017.FD2D][.1CB2.0020.0017.FD2D] # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
+FD37 ; [.1CE4.0020.0018.FD37][.1CB2.0020.0018.FD37] # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
+FD25 ; [.1CE4.0020.0019.FD25][.1CB2.0020.0019.FD25] # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
+FD09 ; [.1CE4.0020.001A.FD09][.1CB2.0020.001A.FD09] # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
+FD69 ; [.1CE4.0020.0019.FD69][.1CB2.0020.0019.FD69][.1D48.0020.0019.FD69] # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
+FD2E ; [.1CE4.0020.0017.FD2E][.1CB9.0020.0017.FD2E] # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
+FD38 ; [.1CE4.0020.0018.FD38][.1CB9.0020.0018.FD38] # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
+FD26 ; [.1CE4.0020.0019.FD26][.1CB9.0020.0019.FD26] # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
+FD0A ; [.1CE4.0020.001A.FD0A][.1CB9.0020.001A.FD0A] # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
+FD68 ; [.1CE4.0020.0017.FD68][.1CB9.0020.0017.FD68][.1D27.0020.0017.FD68] # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
+FD67 ; [.1CE4.0020.0019.FD67][.1CB9.0020.0019.FD67][.1D27.0020.0019.FD67] # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
+FDAA ; [.1CE4.0020.0019.FDAA][.1CB9.0020.0019.FDAA][.1D48.0020.0019.FDAA] # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
+FD2F ; [.1CE4.0020.0017.FD2F][.1CBA.0020.0017.FD2F] # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
+FD39 ; [.1CE4.0020.0018.FD39][.1CBA.0020.0018.FD39] # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
+FD27 ; [.1CE4.0020.0019.FD27][.1CBA.0020.0019.FD27] # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
+FD0B ; [.1CE4.0020.001A.FD0B][.1CBA.0020.001A.FD0B] # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
+FD29 ; [.1CE4.0020.0019.FD29][.1CD2.0020.0019.FD29] # ARABIC LIGATURE SHEEN WITH REH FINAL FORM
+FD0D ; [.1CE4.0020.001A.FD0D][.1CD2.0020.001A.FD0D] # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
+FD30 ; [.1CE4.0020.0017.FD30][.1D27.0020.0017.FD30] # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
+FCE9 ; [.1CE4.0020.0018.FCE9][.1D27.0020.0018.FCE9] # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
+FD28 ; [.1CE4.0020.0019.FD28][.1D27.0020.0019.FD28] # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
+FD0C ; [.1CE4.0020.001A.FD0C][.1D27.0020.001A.FD0C] # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
+FD6B ; [.1CE4.0020.0017.FD6B][.1D27.0020.0017.FD6B][.1CBA.0020.0017.FD6B] # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
+FD6A ; [.1CE4.0020.0019.FD6A][.1D27.0020.0019.FD6A][.1CBA.0020.0019.FD6A] # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
+FD6D ; [.1CE4.0020.0017.FD6D][.1D27.0020.0017.FD6D][.1D27.0020.0017.FD6D] # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
+FD6C ; [.1CE4.0020.0019.FD6C][.1D27.0020.0019.FD6C][.1D27.0020.0019.FD6C] # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
+FD32 ; [.1CE4.0020.0017.FD32][.1D34.0020.0017.FD32] # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
+FCEA ; [.1CE4.0020.0018.FCEA][.1D34.0020.0018.FCEA] # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
+FD19 ; [.1CE4.0020.0019.FD19][.1D47.0020.0019.FD19] # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
+FCFD ; [.1CE4.0020.001A.FCFD][.1D47.0020.001A.FCFD] # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
+FD1A ; [.1CE4.0020.0019.FD1A][.1D48.0020.0019.FD1A] # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
+FCFE ; [.1CE4.0020.001A.FCFE][.1D48.0020.001A.FCFE] # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
+069A ; [.1CE5.0020.0002.069A] # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
+069B ; [.1CE6.0020.0002.069B] # ARABIC LETTER SEEN WITH THREE DOTS BELOW
+069C ; [.1CE7.0020.0002.069C] # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
+06FA ; [.1CE8.0020.0002.06FA] # ARABIC LETTER SHEEN WITH DOT BELOW
+075C ; [.1CE9.0020.0002.075C] # ARABIC LETTER SEEN WITH FOUR DOTS ABOVE
+076D ; [.1CEA.0020.0002.076D] # ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
+0770 ; [.1CEB.0020.0002.0770] # ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS
+077D ; [.1CEC.0020.0002.077D] # ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE
+077E ; [.1CED.0020.0002.077E] # ARABIC LETTER SEEN WITH INVERTED V
+0635 ; [.1CEE.0020.0002.0635] # ARABIC LETTER SAD
+1EE11 ; [.1CEE.0020.0005.1EE11] # ARABIC MATHEMATICAL SAD
+1EE31 ; [.1CEE.0020.0005.1EE31] # ARABIC MATHEMATICAL INITIAL SAD
+1EE51 ; [.1CEE.0020.0005.1EE51] # ARABIC MATHEMATICAL TAILED SAD
+1EE71 ; [.1CEE.0020.0005.1EE71] # ARABIC MATHEMATICAL STRETCHED SAD
+1EE91 ; [.1CEE.0020.0005.1EE91] # ARABIC MATHEMATICAL LOOPED SAD
+1EEB1 ; [.1CEE.0020.0005.1EEB1] # ARABIC MATHEMATICAL DOUBLE-STRUCK SAD
+FEBB ; [.1CEE.0020.0017.FEBB] # ARABIC LETTER SAD INITIAL FORM
+FEBC ; [.1CEE.0020.0018.FEBC] # ARABIC LETTER SAD MEDIAL FORM
+FEBA ; [.1CEE.0020.0019.FEBA] # ARABIC LETTER SAD FINAL FORM
+FEB9 ; [.1CEE.0020.001A.FEB9] # ARABIC LETTER SAD ISOLATED FORM
+FCB1 ; [.1CEE.0020.0017.FCB1][.1CB9.0020.0017.FCB1] # ARABIC LIGATURE SAD WITH HAH INITIAL FORM
+FC20 ; [.1CEE.0020.001A.FC20][.1CB9.0020.001A.FC20] # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
+FD65 ; [.1CEE.0020.0017.FD65][.1CB9.0020.0017.FD65][.1CB9.0020.0017.FD65] # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
+FD64 ; [.1CEE.0020.0019.FD64][.1CB9.0020.0019.FD64][.1CB9.0020.0019.FD64] # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
+FDA9 ; [.1CEE.0020.0019.FDA9][.1CB9.0020.0019.FDA9][.1D48.0020.0019.FDA9] # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
+FCB2 ; [.1CEE.0020.0017.FCB2][.1CBA.0020.0017.FCB2] # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
+FD2B ; [.1CEE.0020.0019.FD2B][.1CD2.0020.0019.FD2B] # ARABIC LIGATURE SAD WITH REH FINAL FORM
+FD0F ; [.1CEE.0020.001A.FD0F][.1CD2.0020.001A.FD0F] # ARABIC LIGATURE SAD WITH REH ISOLATED FORM
+FDF5 ; [.1CEE.0020.001A.FDF5][.1D20.0020.001A.FDF5][.1CF7.0020.001A.FDF5][.1D27.0020.001A.FDF5] # ARABIC LIGATURE SALAM ISOLATED FORM
+FDF9 ; [.1CEE.0020.001A.FDF9][.1D20.0020.001A.FDF9][.1D47.0020.001A.FDF9] # ARABIC LIGATURE SALLA ISOLATED FORM
+FDFA ; [.1CEE.0020.001A.FDFA][.1D20.0020.001A.FDFA][.1D47.0020.001A.FDFA][*020A.0020.001A.FDFA][.1C9C.0020.001A.FDFA][.1D20.0020.001A.FDFA][.1D20.0020.001A.FDFA][.1D34.0020.001A.FDFA][*020A.0020.001A.FDFA][.1CF7.0020.001A.FDFA][.1D20.0020.001A.FDFA][.1D48.0020.001A.FDFA][.1D34.0020.001A.FDFA][*020A.0020.001A.FDFA][.1D3A.0020.001A.FDFA][.1CE3.0020.001A.FDFA][.1D20.0020.001A.FDFA][.1D27.0020.001A.FDFA] # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+FDF0 ; [.1CEE.0020.001A.FDF0][.1D20.0020.001A.FDF0][.1D55.0020.001A.FDF0] # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+FCB3 ; [.1CEE.0020.0017.FCB3][.1D27.0020.0017.FCB3] # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
+FC21 ; [.1CEE.0020.001A.FC21][.1D27.0020.001A.FC21] # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
+FDC5 ; [.1CEE.0020.0017.FDC5][.1D27.0020.0017.FDC5][.1D27.0020.0017.FDC5] # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
+FD66 ; [.1CEE.0020.0019.FD66][.1D27.0020.0019.FD66][.1D27.0020.0019.FD66] # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
+FD21 ; [.1CEE.0020.0019.FD21][.1D47.0020.0019.FD21] # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
+FD05 ; [.1CEE.0020.001A.FD05][.1D47.0020.001A.FD05] # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
+FD22 ; [.1CEE.0020.0019.FD22][.1D48.0020.0019.FD22] # ARABIC LIGATURE SAD WITH YEH FINAL FORM
+FD06 ; [.1CEE.0020.001A.FD06][.1D48.0020.001A.FD06] # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
+0636 ; [.1CEF.0020.0002.0636] # ARABIC LETTER DAD
+1EE19 ; [.1CEF.0020.0005.1EE19] # ARABIC MATHEMATICAL DAD
+1EE39 ; [.1CEF.0020.0005.1EE39] # ARABIC MATHEMATICAL INITIAL DAD
+1EE59 ; [.1CEF.0020.0005.1EE59] # ARABIC MATHEMATICAL TAILED DAD
+1EE79 ; [.1CEF.0020.0005.1EE79] # ARABIC MATHEMATICAL STRETCHED DAD
+1EE99 ; [.1CEF.0020.0005.1EE99] # ARABIC MATHEMATICAL LOOPED DAD
+1EEB9 ; [.1CEF.0020.0005.1EEB9] # ARABIC MATHEMATICAL DOUBLE-STRUCK DAD
+FEBF ; [.1CEF.0020.0017.FEBF] # ARABIC LETTER DAD INITIAL FORM
+FEC0 ; [.1CEF.0020.0018.FEC0] # ARABIC LETTER DAD MEDIAL FORM
+FEBE ; [.1CEF.0020.0019.FEBE] # ARABIC LETTER DAD FINAL FORM
+FEBD ; [.1CEF.0020.001A.FEBD] # ARABIC LETTER DAD ISOLATED FORM
+FCB4 ; [.1CEF.0020.0017.FCB4][.1CB2.0020.0017.FCB4] # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
+FC22 ; [.1CEF.0020.001A.FC22][.1CB2.0020.001A.FC22] # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
+FCB5 ; [.1CEF.0020.0017.FCB5][.1CB9.0020.0017.FCB5] # ARABIC LIGATURE DAD WITH HAH INITIAL FORM
+FC23 ; [.1CEF.0020.001A.FC23][.1CB9.0020.001A.FC23] # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
+FD6E ; [.1CEF.0020.0019.FD6E][.1CB9.0020.0019.FD6E][.1D47.0020.0019.FD6E] # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDAB ; [.1CEF.0020.0019.FDAB][.1CB9.0020.0019.FDAB][.1D48.0020.0019.FDAB] # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
+FCB6 ; [.1CEF.0020.0017.FCB6][.1CBA.0020.0017.FCB6] # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
+FC24 ; [.1CEF.0020.001A.FC24][.1CBA.0020.001A.FC24] # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
+FD70 ; [.1CEF.0020.0017.FD70][.1CBA.0020.0017.FD70][.1D27.0020.0017.FD70] # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
+FD6F ; [.1CEF.0020.0019.FD6F][.1CBA.0020.0019.FD6F][.1D27.0020.0019.FD6F] # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
+FD2C ; [.1CEF.0020.0019.FD2C][.1CD2.0020.0019.FD2C] # ARABIC LIGATURE DAD WITH REH FINAL FORM
+FD10 ; [.1CEF.0020.001A.FD10][.1CD2.0020.001A.FD10] # ARABIC LIGATURE DAD WITH REH ISOLATED FORM
+FCB7 ; [.1CEF.0020.0017.FCB7][.1D27.0020.0017.FCB7] # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
+FC25 ; [.1CEF.0020.001A.FC25][.1D27.0020.001A.FC25] # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
+FD23 ; [.1CEF.0020.0019.FD23][.1D47.0020.0019.FD23] # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
+FD07 ; [.1CEF.0020.001A.FD07][.1D47.0020.001A.FD07] # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
+FD24 ; [.1CEF.0020.0019.FD24][.1D48.0020.0019.FD24] # ARABIC LIGATURE DAD WITH YEH FINAL FORM
+FD08 ; [.1CEF.0020.001A.FD08][.1D48.0020.001A.FD08] # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
+069D ; [.1CF0.0020.0002.069D] # ARABIC LETTER SAD WITH TWO DOTS BELOW
+069E ; [.1CF1.0020.0002.069E] # ARABIC LETTER SAD WITH THREE DOTS ABOVE
+06FB ; [.1CF2.0020.0002.06FB] # ARABIC LETTER DAD WITH DOT BELOW
+0637 ; [.1CF3.0020.0002.0637] # ARABIC LETTER TAH
+1EE08 ; [.1CF3.0020.0005.1EE08] # ARABIC MATHEMATICAL TAH
+1EE68 ; [.1CF3.0020.0005.1EE68] # ARABIC MATHEMATICAL STRETCHED TAH
+1EE88 ; [.1CF3.0020.0005.1EE88] # ARABIC MATHEMATICAL LOOPED TAH
+1EEA8 ; [.1CF3.0020.0005.1EEA8] # ARABIC MATHEMATICAL DOUBLE-STRUCK TAH
+FEC3 ; [.1CF3.0020.0017.FEC3] # ARABIC LETTER TAH INITIAL FORM
+FEC4 ; [.1CF3.0020.0018.FEC4] # ARABIC LETTER TAH MEDIAL FORM
+FEC2 ; [.1CF3.0020.0019.FEC2] # ARABIC LETTER TAH FINAL FORM
+FEC1 ; [.1CF3.0020.001A.FEC1] # ARABIC LETTER TAH ISOLATED FORM
+FCB8 ; [.1CF3.0020.0017.FCB8][.1CB9.0020.0017.FCB8] # ARABIC LIGATURE TAH WITH HAH INITIAL FORM
+FC26 ; [.1CF3.0020.001A.FC26][.1CB9.0020.001A.FC26] # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
+FD33 ; [.1CF3.0020.0017.FD33][.1D27.0020.0017.FD33] # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
+FD3A ; [.1CF3.0020.0018.FD3A][.1D27.0020.0018.FD3A] # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
+FC27 ; [.1CF3.0020.001A.FC27][.1D27.0020.001A.FC27] # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
+FD72 ; [.1CF3.0020.0017.FD72][.1D27.0020.0017.FD72][.1CB9.0020.0017.FD72] # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
+FD71 ; [.1CF3.0020.0019.FD71][.1D27.0020.0019.FD71][.1CB9.0020.0019.FD71] # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
+FD73 ; [.1CF3.0020.0017.FD73][.1D27.0020.0017.FD73][.1D27.0020.0017.FD73] # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
+FD74 ; [.1CF3.0020.0019.FD74][.1D27.0020.0019.FD74][.1D48.0020.0019.FD74] # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
+FD11 ; [.1CF3.0020.0019.FD11][.1D47.0020.0019.FD11] # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
+FCF5 ; [.1CF3.0020.001A.FCF5][.1D47.0020.001A.FCF5] # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
+FD12 ; [.1CF3.0020.0019.FD12][.1D48.0020.0019.FD12] # ARABIC LIGATURE TAH WITH YEH FINAL FORM
+FCF6 ; [.1CF3.0020.001A.FCF6][.1D48.0020.001A.FCF6] # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
+0638 ; [.1CF4.0020.0002.0638] # ARABIC LETTER ZAH
+1EE1A ; [.1CF4.0020.0005.1EE1A] # ARABIC MATHEMATICAL ZAH
+1EE7A ; [.1CF4.0020.0005.1EE7A] # ARABIC MATHEMATICAL STRETCHED ZAH
+1EE9A ; [.1CF4.0020.0005.1EE9A] # ARABIC MATHEMATICAL LOOPED ZAH
+1EEBA ; [.1CF4.0020.0005.1EEBA] # ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH
+FEC7 ; [.1CF4.0020.0017.FEC7] # ARABIC LETTER ZAH INITIAL FORM
+FEC8 ; [.1CF4.0020.0018.FEC8] # ARABIC LETTER ZAH MEDIAL FORM
+FEC6 ; [.1CF4.0020.0019.FEC6] # ARABIC LETTER ZAH FINAL FORM
+FEC5 ; [.1CF4.0020.001A.FEC5] # ARABIC LETTER ZAH ISOLATED FORM
+FCB9 ; [.1CF4.0020.0017.FCB9][.1D27.0020.0017.FCB9] # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
+FD3B ; [.1CF4.0020.0018.FD3B][.1D27.0020.0018.FD3B] # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
+FC28 ; [.1CF4.0020.001A.FC28][.1D27.0020.001A.FC28] # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
+069F ; [.1CF5.0020.0002.069F] # ARABIC LETTER TAH WITH THREE DOTS ABOVE
+08A3 ; [.1CF6.0020.0002.08A3] # ARABIC LETTER TAH WITH TWO DOTS ABOVE
+0639 ; [.1CF7.0020.0002.0639] # ARABIC LETTER AIN
+1EE0F ; [.1CF7.0020.0005.1EE0F] # ARABIC MATHEMATICAL AIN
+1EE2F ; [.1CF7.0020.0005.1EE2F] # ARABIC MATHEMATICAL INITIAL AIN
+1EE4F ; [.1CF7.0020.0005.1EE4F] # ARABIC MATHEMATICAL TAILED AIN
+1EE6F ; [.1CF7.0020.0005.1EE6F] # ARABIC MATHEMATICAL STRETCHED AIN
+1EE8F ; [.1CF7.0020.0005.1EE8F] # ARABIC MATHEMATICAL LOOPED AIN
+1EEAF ; [.1CF7.0020.0005.1EEAF] # ARABIC MATHEMATICAL DOUBLE-STRUCK AIN
+FECB ; [.1CF7.0020.0017.FECB] # ARABIC LETTER AIN INITIAL FORM
+FECC ; [.1CF7.0020.0018.FECC] # ARABIC LETTER AIN MEDIAL FORM
+FECA ; [.1CF7.0020.0019.FECA] # ARABIC LETTER AIN FINAL FORM
+FEC9 ; [.1CF7.0020.001A.FEC9] # ARABIC LETTER AIN ISOLATED FORM
+FCBA ; [.1CF7.0020.0017.FCBA][.1CB2.0020.0017.FCBA] # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
+FC29 ; [.1CF7.0020.001A.FC29][.1CB2.0020.001A.FC29] # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
+FDC4 ; [.1CF7.0020.0017.FDC4][.1CB2.0020.0017.FDC4][.1D27.0020.0017.FDC4] # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
+FD75 ; [.1CF7.0020.0019.FD75][.1CB2.0020.0019.FD75][.1D27.0020.0019.FD75] # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
+FDF7 ; [.1CF7.0020.001A.FDF7][.1D20.0020.001A.FDF7][.1D48.0020.001A.FDF7][.1D34.0020.001A.FDF7] # ARABIC LIGATURE ALAYHE ISOLATED FORM
+FCBB ; [.1CF7.0020.0017.FCBB][.1D27.0020.0017.FCBB] # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
+FC2A ; [.1CF7.0020.001A.FC2A][.1D27.0020.001A.FC2A] # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
+FD77 ; [.1CF7.0020.0017.FD77][.1D27.0020.0017.FD77][.1D27.0020.0017.FD77] # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
+FD76 ; [.1CF7.0020.0019.FD76][.1D27.0020.0019.FD76][.1D27.0020.0019.FD76] # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
+FD78 ; [.1CF7.0020.0019.FD78][.1D27.0020.0019.FD78][.1D47.0020.0019.FD78] # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDB6 ; [.1CF7.0020.0019.FDB6][.1D27.0020.0019.FDB6][.1D48.0020.0019.FDB6] # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
+FD13 ; [.1CF7.0020.0019.FD13][.1D47.0020.0019.FD13] # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
+FCF7 ; [.1CF7.0020.001A.FCF7][.1D47.0020.001A.FCF7] # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
+FD14 ; [.1CF7.0020.0019.FD14][.1D48.0020.0019.FD14] # ARABIC LIGATURE AIN WITH YEH FINAL FORM
+FCF8 ; [.1CF7.0020.001A.FCF8][.1D48.0020.001A.FCF8] # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
+063A ; [.1CF8.0020.0002.063A] # ARABIC LETTER GHAIN
+1EE1B ; [.1CF8.0020.0005.1EE1B] # ARABIC MATHEMATICAL GHAIN
+1EE3B ; [.1CF8.0020.0005.1EE3B] # ARABIC MATHEMATICAL INITIAL GHAIN
+1EE5B ; [.1CF8.0020.0005.1EE5B] # ARABIC MATHEMATICAL TAILED GHAIN
+1EE7B ; [.1CF8.0020.0005.1EE7B] # ARABIC MATHEMATICAL STRETCHED GHAIN
+1EE9B ; [.1CF8.0020.0005.1EE9B] # ARABIC MATHEMATICAL LOOPED GHAIN
+1EEBB ; [.1CF8.0020.0005.1EEBB] # ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+FECF ; [.1CF8.0020.0017.FECF] # ARABIC LETTER GHAIN INITIAL FORM
+FED0 ; [.1CF8.0020.0018.FED0] # ARABIC LETTER GHAIN MEDIAL FORM
+FECE ; [.1CF8.0020.0019.FECE] # ARABIC LETTER GHAIN FINAL FORM
+FECD ; [.1CF8.0020.001A.FECD] # ARABIC LETTER GHAIN ISOLATED FORM
+FCBC ; [.1CF8.0020.0017.FCBC][.1CB2.0020.0017.FCBC] # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
+FC2B ; [.1CF8.0020.001A.FC2B][.1CB2.0020.001A.FC2B] # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
+FCBD ; [.1CF8.0020.0017.FCBD][.1D27.0020.0017.FCBD] # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
+FC2C ; [.1CF8.0020.001A.FC2C][.1D27.0020.001A.FC2C] # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
+FD79 ; [.1CF8.0020.0019.FD79][.1D27.0020.0019.FD79][.1D27.0020.0019.FD79] # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
+FD7B ; [.1CF8.0020.0019.FD7B][.1D27.0020.0019.FD7B][.1D47.0020.0019.FD7B] # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD7A ; [.1CF8.0020.0019.FD7A][.1D27.0020.0019.FD7A][.1D48.0020.0019.FD7A] # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
+FD15 ; [.1CF8.0020.0019.FD15][.1D47.0020.0019.FD15] # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
+FCF9 ; [.1CF8.0020.001A.FCF9][.1D47.0020.001A.FCF9] # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
+FD16 ; [.1CF8.0020.0019.FD16][.1D48.0020.0019.FD16] # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
+FCFA ; [.1CF8.0020.001A.FCFA][.1D48.0020.001A.FCFA] # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
+06A0 ; [.1CF9.0020.0002.06A0] # ARABIC LETTER AIN WITH THREE DOTS ABOVE
+06FC ; [.1CFA.0020.0002.06FC] # ARABIC LETTER GHAIN WITH DOT BELOW
+075D ; [.1CFB.0020.0002.075D] # ARABIC LETTER AIN WITH TWO DOTS ABOVE
+075E ; [.1CFC.0020.0002.075E] # ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE
+075F ; [.1CFD.0020.0002.075F] # ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE
+0641 ; [.1CFE.0020.0002.0641] # ARABIC LETTER FEH
+1EE10 ; [.1CFE.0020.0005.1EE10] # ARABIC MATHEMATICAL FEH
+1EE30 ; [.1CFE.0020.0005.1EE30] # ARABIC MATHEMATICAL INITIAL FEH
+1EE70 ; [.1CFE.0020.0005.1EE70] # ARABIC MATHEMATICAL STRETCHED FEH
+1EE90 ; [.1CFE.0020.0005.1EE90] # ARABIC MATHEMATICAL LOOPED FEH
+1EEB0 ; [.1CFE.0020.0005.1EEB0] # ARABIC MATHEMATICAL DOUBLE-STRUCK FEH
+FED3 ; [.1CFE.0020.0017.FED3] # ARABIC LETTER FEH INITIAL FORM
+FED4 ; [.1CFE.0020.0018.FED4] # ARABIC LETTER FEH MEDIAL FORM
+FED2 ; [.1CFE.0020.0019.FED2] # ARABIC LETTER FEH FINAL FORM
+FED1 ; [.1CFE.0020.001A.FED1] # ARABIC LETTER FEH ISOLATED FORM
+FCBE ; [.1CFE.0020.0017.FCBE][.1CB2.0020.0017.FCBE] # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
+FC2D ; [.1CFE.0020.001A.FC2D][.1CB2.0020.001A.FC2D] # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
+FCBF ; [.1CFE.0020.0017.FCBF][.1CB9.0020.0017.FCBF] # ARABIC LIGATURE FEH WITH HAH INITIAL FORM
+FC2E ; [.1CFE.0020.001A.FC2E][.1CB9.0020.001A.FC2E] # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
+FCC0 ; [.1CFE.0020.0017.FCC0][.1CBA.0020.0017.FCC0] # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
+FC2F ; [.1CFE.0020.001A.FC2F][.1CBA.0020.001A.FC2F] # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
+FD7D ; [.1CFE.0020.0017.FD7D][.1CBA.0020.0017.FD7D][.1D27.0020.0017.FD7D] # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
+FD7C ; [.1CFE.0020.0019.FD7C][.1CBA.0020.0019.FD7C][.1D27.0020.0019.FD7C] # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
+FCC1 ; [.1CFE.0020.0017.FCC1][.1D27.0020.0017.FCC1] # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
+FC30 ; [.1CFE.0020.001A.FC30][.1D27.0020.001A.FC30] # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
+FDC1 ; [.1CFE.0020.0019.FDC1][.1D27.0020.0019.FDC1][.1D48.0020.0019.FDC1] # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
+FC7C ; [.1CFE.0020.0019.FC7C][.1D47.0020.0019.FC7C] # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
+FC31 ; [.1CFE.0020.001A.FC31][.1D47.0020.001A.FC31] # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
+FC7D ; [.1CFE.0020.0019.FC7D][.1D48.0020.0019.FC7D] # ARABIC LIGATURE FEH WITH YEH FINAL FORM
+FC32 ; [.1CFE.0020.001A.FC32][.1D48.0020.001A.FC32] # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
+06A1 ; [.1CFF.0020.0002.06A1] # ARABIC LETTER DOTLESS FEH
+1EE1E ; [.1CFF.0020.0005.1EE1E] # ARABIC MATHEMATICAL DOTLESS FEH
+1EE7E ; [.1CFF.0020.0005.1EE7E] # ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+06A2 ; [.1D00.0020.0002.06A2] # ARABIC LETTER FEH WITH DOT MOVED BELOW
+06A3 ; [.1D01.0020.0002.06A3] # ARABIC LETTER FEH WITH DOT BELOW
+06A4 ; [.1D02.0020.0002.06A4] # ARABIC LETTER VEH
+FB6C ; [.1D02.0020.0017.FB6C] # ARABIC LETTER VEH INITIAL FORM
+FB6D ; [.1D02.0020.0018.FB6D] # ARABIC LETTER VEH MEDIAL FORM
+FB6B ; [.1D02.0020.0019.FB6B] # ARABIC LETTER VEH FINAL FORM
+FB6A ; [.1D02.0020.001A.FB6A] # ARABIC LETTER VEH ISOLATED FORM
+08A4 ; [.1D03.0020.0002.08A4] # ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE
+06A5 ; [.1D04.0020.0002.06A5] # ARABIC LETTER FEH WITH THREE DOTS BELOW
+06A6 ; [.1D05.0020.0002.06A6] # ARABIC LETTER PEHEH
+FB70 ; [.1D05.0020.0017.FB70] # ARABIC LETTER PEHEH INITIAL FORM
+FB71 ; [.1D05.0020.0018.FB71] # ARABIC LETTER PEHEH MEDIAL FORM
+FB6F ; [.1D05.0020.0019.FB6F] # ARABIC LETTER PEHEH FINAL FORM
+FB6E ; [.1D05.0020.001A.FB6E] # ARABIC LETTER PEHEH ISOLATED FORM
+0760 ; [.1D06.0020.0002.0760] # ARABIC LETTER FEH WITH TWO DOTS BELOW
+0761 ; [.1D07.0020.0002.0761] # ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW
+066F ; [.1D08.0020.0002.066F] # ARABIC LETTER DOTLESS QAF
+1EE1F ; [.1D08.0020.0005.1EE1F] # ARABIC MATHEMATICAL DOTLESS QAF
+1EE5F ; [.1D08.0020.0005.1EE5F] # ARABIC MATHEMATICAL TAILED DOTLESS QAF
+0642 ; [.1D09.0020.0002.0642] # ARABIC LETTER QAF
+1EE12 ; [.1D09.0020.0005.1EE12] # ARABIC MATHEMATICAL QAF
+1EE32 ; [.1D09.0020.0005.1EE32] # ARABIC MATHEMATICAL INITIAL QAF
+1EE52 ; [.1D09.0020.0005.1EE52] # ARABIC MATHEMATICAL TAILED QAF
+1EE72 ; [.1D09.0020.0005.1EE72] # ARABIC MATHEMATICAL STRETCHED QAF
+1EE92 ; [.1D09.0020.0005.1EE92] # ARABIC MATHEMATICAL LOOPED QAF
+1EEB2 ; [.1D09.0020.0005.1EEB2] # ARABIC MATHEMATICAL DOUBLE-STRUCK QAF
+FED7 ; [.1D09.0020.0017.FED7] # ARABIC LETTER QAF INITIAL FORM
+FED8 ; [.1D09.0020.0018.FED8] # ARABIC LETTER QAF MEDIAL FORM
+FED6 ; [.1D09.0020.0019.FED6] # ARABIC LETTER QAF FINAL FORM
+FED5 ; [.1D09.0020.001A.FED5] # ARABIC LETTER QAF ISOLATED FORM
+FCC2 ; [.1D09.0020.0017.FCC2][.1CB9.0020.0017.FCC2] # ARABIC LIGATURE QAF WITH HAH INITIAL FORM
+FC33 ; [.1D09.0020.001A.FC33][.1CB9.0020.001A.FC33] # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
+FDF1 ; [.1D09.0020.001A.FDF1][.1D20.0020.001A.FDF1][.1D55.0020.001A.FDF1] # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+FCC3 ; [.1D09.0020.0017.FCC3][.1D27.0020.0017.FCC3] # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
+FC34 ; [.1D09.0020.001A.FC34][.1D27.0020.001A.FC34] # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
+FDB4 ; [.1D09.0020.0017.FDB4][.1D27.0020.0017.FDB4][.1CB9.0020.0017.FDB4] # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
+FD7E ; [.1D09.0020.0019.FD7E][.1D27.0020.0019.FD7E][.1CB9.0020.0019.FD7E] # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
+FD7F ; [.1D09.0020.0019.FD7F][.1D27.0020.0019.FD7F][.1D27.0020.0019.FD7F] # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
+FDB2 ; [.1D09.0020.0019.FDB2][.1D27.0020.0019.FDB2][.1D48.0020.0019.FDB2] # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
+FC7E ; [.1D09.0020.0019.FC7E][.1D47.0020.0019.FC7E] # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
+FC35 ; [.1D09.0020.001A.FC35][.1D47.0020.001A.FC35] # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
+FC7F ; [.1D09.0020.0019.FC7F][.1D48.0020.0019.FC7F] # ARABIC LIGATURE QAF WITH YEH FINAL FORM
+FC36 ; [.1D09.0020.001A.FC36][.1D48.0020.001A.FC36] # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
+06A7 ; [.1D0A.0020.0002.06A7] # ARABIC LETTER QAF WITH DOT ABOVE
+06A8 ; [.1D0B.0020.0002.06A8] # ARABIC LETTER QAF WITH THREE DOTS ABOVE
+08A5 ; [.1D0C.0020.0002.08A5] # ARABIC LETTER QAF WITH DOT BELOW
+0643 ; [.1D0D.0020.0002.0643] # ARABIC LETTER KAF
+1EE0A ; [.1D0D.0020.0005.1EE0A] # ARABIC MATHEMATICAL KAF
+1EE2A ; [.1D0D.0020.0005.1EE2A] # ARABIC MATHEMATICAL INITIAL KAF
+1EE6A ; [.1D0D.0020.0005.1EE6A] # ARABIC MATHEMATICAL STRETCHED KAF
+FEDB ; [.1D0D.0020.0017.FEDB] # ARABIC LETTER KAF INITIAL FORM
+FEDC ; [.1D0D.0020.0018.FEDC] # ARABIC LETTER KAF MEDIAL FORM
+FEDA ; [.1D0D.0020.0019.FEDA] # ARABIC LETTER KAF FINAL FORM
+FED9 ; [.1D0D.0020.001A.FED9] # ARABIC LETTER KAF ISOLATED FORM
+FC80 ; [.1D0D.0020.0019.FC80][.1C9C.0020.0019.FC80] # ARABIC LIGATURE KAF WITH ALEF FINAL FORM
+FC37 ; [.1D0D.0020.001A.FC37][.1C9C.0020.001A.FC37] # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
+FCC4 ; [.1D0D.0020.0017.FCC4][.1CB2.0020.0017.FCC4] # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
+FC38 ; [.1D0D.0020.001A.FC38][.1CB2.0020.001A.FC38] # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
+FCC5 ; [.1D0D.0020.0017.FCC5][.1CB9.0020.0017.FCC5] # ARABIC LIGATURE KAF WITH HAH INITIAL FORM
+FC39 ; [.1D0D.0020.001A.FC39][.1CB9.0020.001A.FC39] # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
+FCC6 ; [.1D0D.0020.0017.FCC6][.1CBA.0020.0017.FCC6] # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
+FC3A ; [.1D0D.0020.001A.FC3A][.1CBA.0020.001A.FC3A] # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
+FCC7 ; [.1D0D.0020.0017.FCC7][.1D20.0020.0017.FCC7] # ARABIC LIGATURE KAF WITH LAM INITIAL FORM
+FCEB ; [.1D0D.0020.0018.FCEB][.1D20.0020.0018.FCEB] # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
+FC81 ; [.1D0D.0020.0019.FC81][.1D20.0020.0019.FC81] # ARABIC LIGATURE KAF WITH LAM FINAL FORM
+FC3B ; [.1D0D.0020.001A.FC3B][.1D20.0020.001A.FC3B] # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
+FCC8 ; [.1D0D.0020.0017.FCC8][.1D27.0020.0017.FCC8] # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
+FCEC ; [.1D0D.0020.0018.FCEC][.1D27.0020.0018.FCEC] # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
+FC82 ; [.1D0D.0020.0019.FC82][.1D27.0020.0019.FC82] # ARABIC LIGATURE KAF WITH MEEM FINAL FORM
+FC3C ; [.1D0D.0020.001A.FC3C][.1D27.0020.001A.FC3C] # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
+FDC3 ; [.1D0D.0020.0017.FDC3][.1D27.0020.0017.FDC3][.1D27.0020.0017.FDC3] # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
+FDBB ; [.1D0D.0020.0019.FDBB][.1D27.0020.0019.FDBB][.1D27.0020.0019.FDBB] # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
+FDB7 ; [.1D0D.0020.0019.FDB7][.1D27.0020.0019.FDB7][.1D48.0020.0019.FDB7] # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
+FC83 ; [.1D0D.0020.0019.FC83][.1D47.0020.0019.FC83] # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
+FC3D ; [.1D0D.0020.001A.FC3D][.1D47.0020.001A.FC3D] # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
+FC84 ; [.1D0D.0020.0019.FC84][.1D48.0020.0019.FC84] # ARABIC LIGATURE KAF WITH YEH FINAL FORM
+FC3E ; [.1D0D.0020.001A.FC3E][.1D48.0020.001A.FC3E] # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
+06A9 ; [.1D0E.0020.0002.06A9] # ARABIC LETTER KEHEH
+FB90 ; [.1D0E.0020.0017.FB90] # ARABIC LETTER KEHEH INITIAL FORM
+FB91 ; [.1D0E.0020.0018.FB91] # ARABIC LETTER KEHEH MEDIAL FORM
+FB8F ; [.1D0E.0020.0019.FB8F] # ARABIC LETTER KEHEH FINAL FORM
+FB8E ; [.1D0E.0020.001A.FB8E] # ARABIC LETTER KEHEH ISOLATED FORM
+06AA ; [.1D0F.0020.0002.06AA] # ARABIC LETTER SWASH KAF
+06AB ; [.1D10.0020.0002.06AB] # ARABIC LETTER KAF WITH RING
+06AC ; [.1D11.0020.0002.06AC] # ARABIC LETTER KAF WITH DOT ABOVE
+077F ; [.1D12.0020.0002.077F] # ARABIC LETTER KAF WITH TWO DOTS ABOVE
+06AD ; [.1D13.0020.0002.06AD] # ARABIC LETTER NG
+FBD5 ; [.1D13.0020.0017.FBD5] # ARABIC LETTER NG INITIAL FORM
+FBD6 ; [.1D13.0020.0018.FBD6] # ARABIC LETTER NG MEDIAL FORM
+FBD4 ; [.1D13.0020.0019.FBD4] # ARABIC LETTER NG FINAL FORM
+FBD3 ; [.1D13.0020.001A.FBD3] # ARABIC LETTER NG ISOLATED FORM
+06AE ; [.1D14.0020.0002.06AE] # ARABIC LETTER KAF WITH THREE DOTS BELOW
+06AF ; [.1D15.0020.0002.06AF] # ARABIC LETTER GAF
+FB94 ; [.1D15.0020.0017.FB94] # ARABIC LETTER GAF INITIAL FORM
+FB95 ; [.1D15.0020.0018.FB95] # ARABIC LETTER GAF MEDIAL FORM
+FB93 ; [.1D15.0020.0019.FB93] # ARABIC LETTER GAF FINAL FORM
+FB92 ; [.1D15.0020.001A.FB92] # ARABIC LETTER GAF ISOLATED FORM
+06B0 ; [.1D16.0020.0002.06B0] # ARABIC LETTER GAF WITH RING
+06B1 ; [.1D17.0020.0002.06B1] # ARABIC LETTER NGOEH
+FB9C ; [.1D17.0020.0017.FB9C] # ARABIC LETTER NGOEH INITIAL FORM
+FB9D ; [.1D17.0020.0018.FB9D] # ARABIC LETTER NGOEH MEDIAL FORM
+FB9B ; [.1D17.0020.0019.FB9B] # ARABIC LETTER NGOEH FINAL FORM
+FB9A ; [.1D17.0020.001A.FB9A] # ARABIC LETTER NGOEH ISOLATED FORM
+06B2 ; [.1D18.0020.0002.06B2] # ARABIC LETTER GAF WITH TWO DOTS BELOW
+06B3 ; [.1D19.0020.0002.06B3] # ARABIC LETTER GUEH
+FB98 ; [.1D19.0020.0017.FB98] # ARABIC LETTER GUEH INITIAL FORM
+FB99 ; [.1D19.0020.0018.FB99] # ARABIC LETTER GUEH MEDIAL FORM
+FB97 ; [.1D19.0020.0019.FB97] # ARABIC LETTER GUEH FINAL FORM
+FB96 ; [.1D19.0020.001A.FB96] # ARABIC LETTER GUEH ISOLATED FORM
+06B4 ; [.1D1A.0020.0002.06B4] # ARABIC LETTER GAF WITH THREE DOTS ABOVE
+0762 ; [.1D1B.0020.0002.0762] # ARABIC LETTER KEHEH WITH DOT ABOVE
+063B ; [.1D1C.0020.0002.063B] # ARABIC LETTER KEHEH WITH TWO DOTS ABOVE
+063C ; [.1D1D.0020.0002.063C] # ARABIC LETTER KEHEH WITH THREE DOTS BELOW
+0763 ; [.1D1E.0020.0002.0763] # ARABIC LETTER KEHEH WITH THREE DOTS ABOVE
+0764 ; [.1D1F.0020.0002.0764] # ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW
+0644 ; [.1D20.0020.0002.0644] # ARABIC LETTER LAM
+1EE0B ; [.1D20.0020.0005.1EE0B] # ARABIC MATHEMATICAL LAM
+1EE2B ; [.1D20.0020.0005.1EE2B] # ARABIC MATHEMATICAL INITIAL LAM
+1EE4B ; [.1D20.0020.0005.1EE4B] # ARABIC MATHEMATICAL TAILED LAM
+1EE8B ; [.1D20.0020.0005.1EE8B] # ARABIC MATHEMATICAL LOOPED LAM
+1EEAB ; [.1D20.0020.0005.1EEAB] # ARABIC MATHEMATICAL DOUBLE-STRUCK LAM
+FEDF ; [.1D20.0020.0017.FEDF] # ARABIC LETTER LAM INITIAL FORM
+FEE0 ; [.1D20.0020.0018.FEE0] # ARABIC LETTER LAM MEDIAL FORM
+FEDE ; [.1D20.0020.0019.FEDE] # ARABIC LETTER LAM FINAL FORM
+FEDD ; [.1D20.0020.001A.FEDD] # ARABIC LETTER LAM ISOLATED FORM
+FEF6 ; [.1D20.0020.0019.FEF6][.1C8F.0020.0019.FEF6] # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+FEF5 ; [.1D20.0020.001A.FEF5][.1C8F.0020.001A.FEF5] # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+FEF8 ; [.1D20.0020.0019.FEF8][.1C90.0020.0019.FEF8] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+FEF7 ; [.1D20.0020.001A.FEF7][.1C90.0020.001A.FEF7] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+FEFA ; [.1D20.0020.0019.FEFA][.1C94.0020.0019.FEFA] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
+FEF9 ; [.1D20.0020.001A.FEF9][.1C94.0020.001A.FEF9] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+FEFC ; [.1D20.0020.0019.FEFC][.1C9C.0020.0019.FEFC] # ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FEFB ; [.1D20.0020.001A.FEFB][.1C9C.0020.001A.FEFB] # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+FCC9 ; [.1D20.0020.0017.FCC9][.1CB2.0020.0017.FCC9] # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
+FC3F ; [.1D20.0020.001A.FC3F][.1CB2.0020.001A.FC3F] # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
+FD83 ; [.1D20.0020.0017.FD83][.1CB2.0020.0017.FD83][.1CB2.0020.0017.FD83] # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
+FD84 ; [.1D20.0020.0019.FD84][.1CB2.0020.0019.FD84][.1CB2.0020.0019.FD84] # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
+FDBA ; [.1D20.0020.0017.FDBA][.1CB2.0020.0017.FDBA][.1D27.0020.0017.FDBA] # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
+FDBC ; [.1D20.0020.0019.FDBC][.1CB2.0020.0019.FDBC][.1D27.0020.0019.FDBC] # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
+FDAC ; [.1D20.0020.0019.FDAC][.1CB2.0020.0019.FDAC][.1D48.0020.0019.FDAC] # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
+FCCA ; [.1D20.0020.0017.FCCA][.1CB9.0020.0017.FCCA] # ARABIC LIGATURE LAM WITH HAH INITIAL FORM
+FC40 ; [.1D20.0020.001A.FC40][.1CB9.0020.001A.FC40] # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
+FDB5 ; [.1D20.0020.0017.FDB5][.1CB9.0020.0017.FDB5][.1D27.0020.0017.FDB5] # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
+FD80 ; [.1D20.0020.0019.FD80][.1CB9.0020.0019.FD80][.1D27.0020.0019.FD80] # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
+FD82 ; [.1D20.0020.0019.FD82][.1CB9.0020.0019.FD82][.1D47.0020.0019.FD82] # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD81 ; [.1D20.0020.0019.FD81][.1CB9.0020.0019.FD81][.1D48.0020.0019.FD81] # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
+FCCB ; [.1D20.0020.0017.FCCB][.1CBA.0020.0017.FCCB] # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
+FC41 ; [.1D20.0020.001A.FC41][.1CBA.0020.001A.FC41] # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
+FD86 ; [.1D20.0020.0017.FD86][.1CBA.0020.0017.FD86][.1D27.0020.0017.FD86] # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
+FD85 ; [.1D20.0020.0019.FD85][.1CBA.0020.0019.FD85][.1D27.0020.0019.FD85] # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
+FCCC ; [.1D20.0020.0017.FCCC][.1D27.0020.0017.FCCC] # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
+FCED ; [.1D20.0020.0018.FCED][.1D27.0020.0018.FCED] # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
+FC85 ; [.1D20.0020.0019.FC85][.1D27.0020.0019.FC85] # ARABIC LIGATURE LAM WITH MEEM FINAL FORM
+FC42 ; [.1D20.0020.001A.FC42][.1D27.0020.001A.FC42] # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
+FD88 ; [.1D20.0020.0017.FD88][.1D27.0020.0017.FD88][.1CB9.0020.0017.FD88] # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
+FD87 ; [.1D20.0020.0019.FD87][.1D27.0020.0019.FD87][.1CB9.0020.0019.FD87] # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
+FDAD ; [.1D20.0020.0019.FDAD][.1D27.0020.0019.FDAD][.1D48.0020.0019.FDAD] # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
+FCCD ; [.1D20.0020.0017.FCCD][.1D34.0020.0017.FCCD] # ARABIC LIGATURE LAM WITH HEH INITIAL FORM
+FC86 ; [.1D20.0020.0019.FC86][.1D47.0020.0019.FC86] # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
+FC43 ; [.1D20.0020.001A.FC43][.1D47.0020.001A.FC43] # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
+FC87 ; [.1D20.0020.0019.FC87][.1D48.0020.0019.FC87] # ARABIC LIGATURE LAM WITH YEH FINAL FORM
+FC44 ; [.1D20.0020.001A.FC44][.1D48.0020.001A.FC44] # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
+06B5 ; [.1D21.0020.0002.06B5] # ARABIC LETTER LAM WITH SMALL V
+06B6 ; [.1D22.0020.0002.06B6] # ARABIC LETTER LAM WITH DOT ABOVE
+06B7 ; [.1D23.0020.0002.06B7] # ARABIC LETTER LAM WITH THREE DOTS ABOVE
+06B8 ; [.1D24.0020.0002.06B8] # ARABIC LETTER LAM WITH THREE DOTS BELOW
+076A ; [.1D25.0020.0002.076A] # ARABIC LETTER LAM WITH BAR
+08A6 ; [.1D26.0020.0002.08A6] # ARABIC LETTER LAM WITH DOUBLE BAR
+0645 ; [.1D27.0020.0002.0645] # ARABIC LETTER MEEM
+1EE0C ; [.1D27.0020.0005.1EE0C] # ARABIC MATHEMATICAL MEEM
+1EE2C ; [.1D27.0020.0005.1EE2C] # ARABIC MATHEMATICAL INITIAL MEEM
+1EE6C ; [.1D27.0020.0005.1EE6C] # ARABIC MATHEMATICAL STRETCHED MEEM
+1EE8C ; [.1D27.0020.0005.1EE8C] # ARABIC MATHEMATICAL LOOPED MEEM
+1EEAC ; [.1D27.0020.0005.1EEAC] # ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM
+FEE3 ; [.1D27.0020.0017.FEE3] # ARABIC LETTER MEEM INITIAL FORM
+FEE4 ; [.1D27.0020.0018.FEE4] # ARABIC LETTER MEEM MEDIAL FORM
+FEE2 ; [.1D27.0020.0019.FEE2] # ARABIC LETTER MEEM FINAL FORM
+FEE1 ; [.1D27.0020.001A.FEE1] # ARABIC LETTER MEEM ISOLATED FORM
+06FE ; [.1D27.0020.0004.06FE][.0000.013A.0004.06FE] # ARABIC SIGN SINDHI POSTPOSITION MEN
+FC88 ; [.1D27.0020.0019.FC88][.1C9C.0020.0019.FC88] # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
+FCCE ; [.1D27.0020.0017.FCCE][.1CB2.0020.0017.FCCE] # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
+FC45 ; [.1D27.0020.001A.FC45][.1CB2.0020.001A.FC45] # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
+FD8C ; [.1D27.0020.0017.FD8C][.1CB2.0020.0017.FD8C][.1CB9.0020.0017.FD8C] # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
+FD92 ; [.1D27.0020.0017.FD92][.1CB2.0020.0017.FD92][.1CBA.0020.0017.FD92] # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
+FD8D ; [.1D27.0020.0017.FD8D][.1CB2.0020.0017.FD8D][.1D27.0020.0017.FD8D] # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
+FDC0 ; [.1D27.0020.0019.FDC0][.1CB2.0020.0019.FDC0][.1D48.0020.0019.FDC0] # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
+FCCF ; [.1D27.0020.0017.FCCF][.1CB9.0020.0017.FCCF] # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
+FC46 ; [.1D27.0020.001A.FC46][.1CB9.0020.001A.FC46] # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
+FD89 ; [.1D27.0020.0017.FD89][.1CB9.0020.0017.FD89][.1CB2.0020.0017.FD89] # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
+FD8A ; [.1D27.0020.0017.FD8A][.1CB9.0020.0017.FD8A][.1D27.0020.0017.FD8A] # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
+FDF4 ; [.1D27.0020.001A.FDF4][.1CB9.0020.001A.FDF4][.1D27.0020.001A.FDF4][.1CC4.0020.001A.FDF4] # ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+FD8B ; [.1D27.0020.0019.FD8B][.1CB9.0020.0019.FD8B][.1D48.0020.0019.FD8B] # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
+FCD0 ; [.1D27.0020.0017.FCD0][.1CBA.0020.0017.FCD0] # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
+FC47 ; [.1D27.0020.001A.FC47][.1CBA.0020.001A.FC47] # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
+FD8E ; [.1D27.0020.0017.FD8E][.1CBA.0020.0017.FD8E][.1CB2.0020.0017.FD8E] # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
+FD8F ; [.1D27.0020.0017.FD8F][.1CBA.0020.0017.FD8F][.1D27.0020.0017.FD8F] # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FDB9 ; [.1D27.0020.0019.FDB9][.1CBA.0020.0019.FDB9][.1D48.0020.0019.FDB9] # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
+FCD1 ; [.1D27.0020.0017.FCD1][.1D27.0020.0017.FCD1] # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
+FC89 ; [.1D27.0020.0019.FC89][.1D27.0020.0019.FC89] # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
+FC48 ; [.1D27.0020.001A.FC48][.1D27.0020.001A.FC48] # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
+FDB1 ; [.1D27.0020.0019.FDB1][.1D27.0020.0019.FDB1][.1D48.0020.0019.FDB1] # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
+FC49 ; [.1D27.0020.001A.FC49][.1D47.0020.001A.FC49] # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
+FC4A ; [.1D27.0020.001A.FC4A][.1D48.0020.001A.FC4A] # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
+0765 ; [.1D28.0020.0002.0765] # ARABIC LETTER MEEM WITH DOT ABOVE
+0766 ; [.1D29.0020.0002.0766] # ARABIC LETTER MEEM WITH DOT BELOW
+08A7 ; [.1D2A.0020.0002.08A7] # ARABIC LETTER MEEM WITH THREE DOTS ABOVE
+0646 ; [.1D2B.0020.0002.0646] # ARABIC LETTER NOON
+1EE0D ; [.1D2B.0020.0005.1EE0D] # ARABIC MATHEMATICAL NOON
+1EE2D ; [.1D2B.0020.0005.1EE2D] # ARABIC MATHEMATICAL INITIAL NOON
+1EE4D ; [.1D2B.0020.0005.1EE4D] # ARABIC MATHEMATICAL TAILED NOON
+1EE6D ; [.1D2B.0020.0005.1EE6D] # ARABIC MATHEMATICAL STRETCHED NOON
+1EE8D ; [.1D2B.0020.0005.1EE8D] # ARABIC MATHEMATICAL LOOPED NOON
+1EEAD ; [.1D2B.0020.0005.1EEAD] # ARABIC MATHEMATICAL DOUBLE-STRUCK NOON
+FEE7 ; [.1D2B.0020.0017.FEE7] # ARABIC LETTER NOON INITIAL FORM
+FEE8 ; [.1D2B.0020.0018.FEE8] # ARABIC LETTER NOON MEDIAL FORM
+FEE6 ; [.1D2B.0020.0019.FEE6] # ARABIC LETTER NOON FINAL FORM
+FEE5 ; [.1D2B.0020.001A.FEE5] # ARABIC LETTER NOON ISOLATED FORM
+FCD2 ; [.1D2B.0020.0017.FCD2][.1CB2.0020.0017.FCD2] # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
+FC4B ; [.1D2B.0020.001A.FC4B][.1CB2.0020.001A.FC4B] # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
+FDB8 ; [.1D2B.0020.0017.FDB8][.1CB2.0020.0017.FDB8][.1CB9.0020.0017.FDB8] # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
+FDBD ; [.1D2B.0020.0019.FDBD][.1CB2.0020.0019.FDBD][.1CB9.0020.0019.FDBD] # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
+FD98 ; [.1D2B.0020.0017.FD98][.1CB2.0020.0017.FD98][.1D27.0020.0017.FD98] # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
+FD97 ; [.1D2B.0020.0019.FD97][.1CB2.0020.0019.FD97][.1D27.0020.0019.FD97] # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
+FD99 ; [.1D2B.0020.0019.FD99][.1CB2.0020.0019.FD99][.1D47.0020.0019.FD99] # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FDC7 ; [.1D2B.0020.0019.FDC7][.1CB2.0020.0019.FDC7][.1D48.0020.0019.FDC7] # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FCD3 ; [.1D2B.0020.0017.FCD3][.1CB9.0020.0017.FCD3] # ARABIC LIGATURE NOON WITH HAH INITIAL FORM
+FC4C ; [.1D2B.0020.001A.FC4C][.1CB9.0020.001A.FC4C] # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
+FD95 ; [.1D2B.0020.0017.FD95][.1CB9.0020.0017.FD95][.1D27.0020.0017.FD95] # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
+FD96 ; [.1D2B.0020.0019.FD96][.1CB9.0020.0019.FD96][.1D47.0020.0019.FD96] # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDB3 ; [.1D2B.0020.0019.FDB3][.1CB9.0020.0019.FDB3][.1D48.0020.0019.FDB3] # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
+FCD4 ; [.1D2B.0020.0017.FCD4][.1CBA.0020.0017.FCD4] # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
+FC4D ; [.1D2B.0020.001A.FC4D][.1CBA.0020.001A.FC4D] # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
+FC8A ; [.1D2B.0020.0019.FC8A][.1CD2.0020.0019.FC8A] # ARABIC LIGATURE NOON WITH REH FINAL FORM
+FC8B ; [.1D2B.0020.0019.FC8B][.1CD3.0020.0019.FC8B] # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
+FCD5 ; [.1D2B.0020.0017.FCD5][.1D27.0020.0017.FCD5] # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
+FCEE ; [.1D2B.0020.0018.FCEE][.1D27.0020.0018.FCEE] # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
+FC8C ; [.1D2B.0020.0019.FC8C][.1D27.0020.0019.FC8C] # ARABIC LIGATURE NOON WITH MEEM FINAL FORM
+FC4E ; [.1D2B.0020.001A.FC4E][.1D27.0020.001A.FC4E] # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
+FD9B ; [.1D2B.0020.0019.FD9B][.1D27.0020.0019.FD9B][.1D47.0020.0019.FD9B] # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD9A ; [.1D2B.0020.0019.FD9A][.1D27.0020.0019.FD9A][.1D48.0020.0019.FD9A] # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
+FC8D ; [.1D2B.0020.0019.FC8D][.1D2B.0020.0019.FC8D] # ARABIC LIGATURE NOON WITH NOON FINAL FORM
+FCD6 ; [.1D2B.0020.0017.FCD6][.1D34.0020.0017.FCD6] # ARABIC LIGATURE NOON WITH HEH INITIAL FORM
+FCEF ; [.1D2B.0020.0018.FCEF][.1D34.0020.0018.FCEF] # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
+FC8E ; [.1D2B.0020.0019.FC8E][.1D47.0020.0019.FC8E] # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
+FC4F ; [.1D2B.0020.001A.FC4F][.1D47.0020.001A.FC4F] # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
+FC8F ; [.1D2B.0020.0019.FC8F][.1D48.0020.0019.FC8F] # ARABIC LIGATURE NOON WITH YEH FINAL FORM
+FC50 ; [.1D2B.0020.001A.FC50][.1D48.0020.001A.FC50] # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
+06BA ; [.1D2C.0020.0002.06BA] # ARABIC LETTER NOON GHUNNA
+1EE1D ; [.1D2C.0020.0005.1EE1D] # ARABIC MATHEMATICAL DOTLESS NOON
+1EE5D ; [.1D2C.0020.0005.1EE5D] # ARABIC MATHEMATICAL TAILED DOTLESS NOON
+FB9F ; [.1D2C.0020.0019.FB9F] # ARABIC LETTER NOON GHUNNA FINAL FORM
+FB9E ; [.1D2C.0020.001A.FB9E] # ARABIC LETTER NOON GHUNNA ISOLATED FORM
+06BB ; [.1D2D.0020.0002.06BB] # ARABIC LETTER RNOON
+FBA2 ; [.1D2D.0020.0017.FBA2] # ARABIC LETTER RNOON INITIAL FORM
+FBA3 ; [.1D2D.0020.0018.FBA3] # ARABIC LETTER RNOON MEDIAL FORM
+FBA1 ; [.1D2D.0020.0019.FBA1] # ARABIC LETTER RNOON FINAL FORM
+FBA0 ; [.1D2D.0020.001A.FBA0] # ARABIC LETTER RNOON ISOLATED FORM
+06BC ; [.1D2E.0020.0002.06BC] # ARABIC LETTER NOON WITH RING
+06BD ; [.1D2F.0020.0002.06BD] # ARABIC LETTER NOON WITH THREE DOTS ABOVE
+06B9 ; [.1D30.0020.0002.06B9] # ARABIC LETTER NOON WITH DOT BELOW
+0767 ; [.1D31.0020.0002.0767] # ARABIC LETTER NOON WITH TWO DOTS BELOW
+0768 ; [.1D32.0020.0002.0768] # ARABIC LETTER NOON WITH SMALL TAH
+0769 ; [.1D33.0020.0002.0769] # ARABIC LETTER NOON WITH SMALL V
+0647 ; [.1D34.0020.0002.0647] # ARABIC LETTER HEH
+1EE24 ; [.1D34.0020.0005.1EE24] # ARABIC MATHEMATICAL INITIAL HEH
+1EE64 ; [.1D34.0020.0005.1EE64] # ARABIC MATHEMATICAL STRETCHED HEH
+1EE84 ; [.1D34.0020.0005.1EE84] # ARABIC MATHEMATICAL LOOPED HEH
+FEEB ; [.1D34.0020.0017.FEEB] # ARABIC LETTER HEH INITIAL FORM
+FEEC ; [.1D34.0020.0018.FEEC] # ARABIC LETTER HEH MEDIAL FORM
+FEEA ; [.1D34.0020.0019.FEEA] # ARABIC LETTER HEH FINAL FORM
+FEE9 ; [.1D34.0020.001A.FEE9] # ARABIC LETTER HEH ISOLATED FORM
+FCD9 ; [.1D34.0020.0017.FCD9][.0000.00D1.0017.FCD9] # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
+FCD7 ; [.1D34.0020.0017.FCD7][.1CB2.0020.0017.FCD7] # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
+FC51 ; [.1D34.0020.001A.FC51][.1CB2.0020.001A.FC51] # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
+FCD8 ; [.1D34.0020.0017.FCD8][.1D27.0020.0017.FCD8] # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
+FC52 ; [.1D34.0020.001A.FC52][.1D27.0020.001A.FC52] # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
+FD93 ; [.1D34.0020.0017.FD93][.1D27.0020.0017.FD93][.1CB2.0020.0017.FD93] # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
+FD94 ; [.1D34.0020.0017.FD94][.1D27.0020.0017.FD94][.1D27.0020.0017.FD94] # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
+FC53 ; [.1D34.0020.001A.FC53][.1D47.0020.001A.FC53] # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
+FC54 ; [.1D34.0020.001A.FC54][.1D48.0020.001A.FC54] # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
+06BE ; [.1D35.0020.0002.06BE] # ARABIC LETTER HEH DOACHASHMEE
+FBAC ; [.1D35.0020.0017.FBAC] # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
+FBAD ; [.1D35.0020.0018.FBAD] # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
+FBAB ; [.1D35.0020.0019.FBAB] # ARABIC LETTER HEH DOACHASHMEE FINAL FORM
+FBAA ; [.1D35.0020.001A.FBAA] # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+06C1 ; [.1D36.0020.0002.06C1] # ARABIC LETTER HEH GOAL
+FBA8 ; [.1D36.0020.0017.FBA8] # ARABIC LETTER HEH GOAL INITIAL FORM
+FBA9 ; [.1D36.0020.0018.FBA9] # ARABIC LETTER HEH GOAL MEDIAL FORM
+FBA7 ; [.1D36.0020.0019.FBA7] # ARABIC LETTER HEH GOAL FINAL FORM
+FBA6 ; [.1D36.0020.001A.FBA6] # ARABIC LETTER HEH GOAL ISOLATED FORM
+06C2 ; [.1D36.0020.0002.06C1][.0000.00BE.0002.0654] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06C3 ; [.1D37.0020.0002.06C3] # ARABIC LETTER TEH MARBUTA GOAL
+06FF ; [.1D38.0020.0002.06FF] # ARABIC LETTER HEH WITH INVERTED V
+06D5 ; [.1D39.0020.0002.06D5] # ARABIC LETTER AE
+06C0 ; [.1D39.0020.0002.06D5][.0000.00BE.0002.0654] # ARABIC LETTER HEH WITH YEH ABOVE
+FBA5 ; [.1D39.0020.0019.FBA5][.0000.00BE.0019.FBA5] # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+FBA4 ; [.1D39.0020.001A.FBA4][.0000.00BE.001A.FBA4] # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
+0648 ; [.1D3A.0020.0002.0648] # ARABIC LETTER WAW
+06E5 ; [.1D3A.0020.0004.06E5] # ARABIC SMALL WAW
+1EE05 ; [.1D3A.0020.0005.1EE05] # ARABIC MATHEMATICAL WAW
+1EE85 ; [.1D3A.0020.0005.1EE85] # ARABIC MATHEMATICAL LOOPED WAW
+1EEA5 ; [.1D3A.0020.0005.1EEA5] # ARABIC MATHEMATICAL DOUBLE-STRUCK WAW
+FEEE ; [.1D3A.0020.0019.FEEE] # ARABIC LETTER WAW FINAL FORM
+FEED ; [.1D3A.0020.001A.FEED] # ARABIC LETTER WAW ISOLATED FORM
+0676 ; [.1D3A.0020.0004.0676][.1C8E.0020.0004.0676] # ARABIC LETTER HIGH HAMZA WAW
+FDF8 ; [.1D3A.0020.001A.FDF8][.1CE3.0020.001A.FDF8][.1D20.0020.001A.FDF8][.1D27.0020.001A.FDF8] # ARABIC LIGATURE WASALLAM ISOLATED FORM
+06C4 ; [.1D3B.0020.0002.06C4] # ARABIC LETTER WAW WITH RING
+06C5 ; [.1D3C.0020.0002.06C5] # ARABIC LETTER KIRGHIZ OE
+FBE1 ; [.1D3C.0020.0019.FBE1] # ARABIC LETTER KIRGHIZ OE FINAL FORM
+FBE0 ; [.1D3C.0020.001A.FBE0] # ARABIC LETTER KIRGHIZ OE ISOLATED FORM
+06C6 ; [.1D3D.0020.0002.06C6] # ARABIC LETTER OE
+FBDA ; [.1D3D.0020.0019.FBDA] # ARABIC LETTER OE FINAL FORM
+FBD9 ; [.1D3D.0020.001A.FBD9] # ARABIC LETTER OE ISOLATED FORM
+06C7 ; [.1D3E.0020.0002.06C7] # ARABIC LETTER U
+FBD8 ; [.1D3E.0020.0019.FBD8] # ARABIC LETTER U FINAL FORM
+FBD7 ; [.1D3E.0020.001A.FBD7] # ARABIC LETTER U ISOLATED FORM
+0677 ; [.1D3E.0020.0004.0677][.1C8E.0020.0004.0677] # ARABIC LETTER U WITH HAMZA ABOVE
+FBDD ; [.1D3E.0020.001A.FBDD][.1C8E.0020.001A.FBDD] # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+06C8 ; [.1D3F.0020.0002.06C8] # ARABIC LETTER YU
+FBDC ; [.1D3F.0020.0019.FBDC] # ARABIC LETTER YU FINAL FORM
+FBDB ; [.1D3F.0020.001A.FBDB] # ARABIC LETTER YU ISOLATED FORM
+06C9 ; [.1D40.0020.0002.06C9] # ARABIC LETTER KIRGHIZ YU
+FBE3 ; [.1D40.0020.0019.FBE3] # ARABIC LETTER KIRGHIZ YU FINAL FORM
+FBE2 ; [.1D40.0020.001A.FBE2] # ARABIC LETTER KIRGHIZ YU ISOLATED FORM
+06CA ; [.1D41.0020.0002.06CA] # ARABIC LETTER WAW WITH TWO DOTS ABOVE
+06CB ; [.1D42.0020.0002.06CB] # ARABIC LETTER VE
+FBDF ; [.1D42.0020.0019.FBDF] # ARABIC LETTER VE FINAL FORM
+FBDE ; [.1D42.0020.001A.FBDE] # ARABIC LETTER VE ISOLATED FORM
+06CF ; [.1D43.0020.0002.06CF] # ARABIC LETTER WAW WITH DOT ABOVE
+0778 ; [.1D44.0020.0002.0778] # ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
+0779 ; [.1D45.0020.0002.0779] # ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
+08AB ; [.1D46.0020.0002.08AB] # ARABIC LETTER WAW WITH DOT WITHIN
+0649 ; [.1D47.0020.0002.0649] # ARABIC LETTER ALEF MAKSURA
+FBE8 ; [.1D47.0020.0017.FBE8] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+FBE9 ; [.1D47.0020.0018.FBE9] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+FEF0 ; [.1D47.0020.0019.FEF0] # ARABIC LETTER ALEF MAKSURA FINAL FORM
+FEEF ; [.1D47.0020.001A.FEEF] # ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+FC90 ; [.1D47.0020.0019.FC90][.0000.00D1.0019.FC90] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+FC5D ; [.1D47.0020.001A.FC5D][.0000.00D1.001A.FC5D] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+064A ; [.1D48.0020.0002.064A] # ARABIC LETTER YEH
+06E6 ; [.1D48.0020.0004.06E6] # ARABIC SMALL YEH
+1EE09 ; [.1D48.0020.0005.1EE09] # ARABIC MATHEMATICAL YEH
+1EE29 ; [.1D48.0020.0005.1EE29] # ARABIC MATHEMATICAL INITIAL YEH
+1EE49 ; [.1D48.0020.0005.1EE49] # ARABIC MATHEMATICAL TAILED YEH
+1EE69 ; [.1D48.0020.0005.1EE69] # ARABIC MATHEMATICAL STRETCHED YEH
+1EE89 ; [.1D48.0020.0005.1EE89] # ARABIC MATHEMATICAL LOOPED YEH
+1EEA9 ; [.1D48.0020.0005.1EEA9] # ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+FEF3 ; [.1D48.0020.0017.FEF3] # ARABIC LETTER YEH INITIAL FORM
+FEF4 ; [.1D48.0020.0018.FEF4] # ARABIC LETTER YEH MEDIAL FORM
+FEF2 ; [.1D48.0020.0019.FEF2] # ARABIC LETTER YEH FINAL FORM
+FEF1 ; [.1D48.0020.001A.FEF1] # ARABIC LETTER YEH ISOLATED FORM
+0678 ; [.1D48.0020.0004.0678][.1C8E.0020.0004.0678] # ARABIC LETTER HIGH HAMZA YEH
+FCDA ; [.1D48.0020.0017.FCDA][.1CB2.0020.0017.FCDA] # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
+FC55 ; [.1D48.0020.001A.FC55][.1CB2.0020.001A.FC55] # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
+FDAF ; [.1D48.0020.0019.FDAF][.1CB2.0020.0019.FDAF][.1D48.0020.0019.FDAF] # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
+FCDB ; [.1D48.0020.0017.FCDB][.1CB9.0020.0017.FCDB] # ARABIC LIGATURE YEH WITH HAH INITIAL FORM
+FC56 ; [.1D48.0020.001A.FC56][.1CB9.0020.001A.FC56] # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
+FDAE ; [.1D48.0020.0019.FDAE][.1CB9.0020.0019.FDAE][.1D48.0020.0019.FDAE] # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
+FCDC ; [.1D48.0020.0017.FCDC][.1CBA.0020.0017.FCDC] # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
+FC57 ; [.1D48.0020.001A.FC57][.1CBA.0020.001A.FC57] # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
+FC91 ; [.1D48.0020.0019.FC91][.1CD2.0020.0019.FC91] # ARABIC LIGATURE YEH WITH REH FINAL FORM
+FC92 ; [.1D48.0020.0019.FC92][.1CD3.0020.0019.FC92] # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
+FCDD ; [.1D48.0020.0017.FCDD][.1D27.0020.0017.FCDD] # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
+FCF0 ; [.1D48.0020.0018.FCF0][.1D27.0020.0018.FCF0] # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
+FC93 ; [.1D48.0020.0019.FC93][.1D27.0020.0019.FC93] # ARABIC LIGATURE YEH WITH MEEM FINAL FORM
+FC58 ; [.1D48.0020.001A.FC58][.1D27.0020.001A.FC58] # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
+FD9D ; [.1D48.0020.0017.FD9D][.1D27.0020.0017.FD9D][.1D27.0020.0017.FD9D] # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
+FD9C ; [.1D48.0020.0019.FD9C][.1D27.0020.0019.FD9C][.1D27.0020.0019.FD9C] # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
+FDB0 ; [.1D48.0020.0019.FDB0][.1D27.0020.0019.FDB0][.1D48.0020.0019.FDB0] # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
+FC94 ; [.1D48.0020.0019.FC94][.1D2B.0020.0019.FC94] # ARABIC LIGATURE YEH WITH NOON FINAL FORM
+FCDE ; [.1D48.0020.0017.FCDE][.1D34.0020.0017.FCDE] # ARABIC LIGATURE YEH WITH HEH INITIAL FORM
+FCF1 ; [.1D48.0020.0018.FCF1][.1D34.0020.0018.FCF1] # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
+FC95 ; [.1D48.0020.0019.FC95][.1D47.0020.0019.FC95] # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
+FC59 ; [.1D48.0020.001A.FC59][.1D47.0020.001A.FC59] # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
+FC96 ; [.1D48.0020.0019.FC96][.1D48.0020.0019.FC96] # ARABIC LIGATURE YEH WITH YEH FINAL FORM
+FC5A ; [.1D48.0020.001A.FC5A][.1D48.0020.001A.FC5A] # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
+06CC ; [.1D49.0020.0002.06CC] # ARABIC LETTER FARSI YEH
+FBFE ; [.1D49.0020.0017.FBFE] # ARABIC LETTER FARSI YEH INITIAL FORM
+FBFF ; [.1D49.0020.0018.FBFF] # ARABIC LETTER FARSI YEH MEDIAL FORM
+FBFD ; [.1D49.0020.0019.FBFD] # ARABIC LETTER FARSI YEH FINAL FORM
+FBFC ; [.1D49.0020.001A.FBFC] # ARABIC LETTER FARSI YEH ISOLATED FORM
+06CD ; [.1D4A.0020.0002.06CD] # ARABIC LETTER YEH WITH TAIL
+06CE ; [.1D4B.0020.0002.06CE] # ARABIC LETTER YEH WITH SMALL V
+06D0 ; [.1D4C.0020.0002.06D0] # ARABIC LETTER E
+FBE6 ; [.1D4C.0020.0017.FBE6] # ARABIC LETTER E INITIAL FORM
+FBE7 ; [.1D4C.0020.0018.FBE7] # ARABIC LETTER E MEDIAL FORM
+FBE5 ; [.1D4C.0020.0019.FBE5] # ARABIC LETTER E FINAL FORM
+FBE4 ; [.1D4C.0020.001A.FBE4] # ARABIC LETTER E ISOLATED FORM
+06D1 ; [.1D4D.0020.0002.06D1] # ARABIC LETTER YEH WITH THREE DOTS BELOW
+063D ; [.1D4E.0020.0002.063D] # ARABIC LETTER FARSI YEH WITH INVERTED V
+063E ; [.1D4F.0020.0002.063E] # ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE
+063F ; [.1D50.0020.0002.063F] # ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+0620 ; [.1D51.0020.0002.0620] # ARABIC LETTER KASHMIRI YEH
+0775 ; [.1D52.0020.0002.0775] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
+0776 ; [.1D53.0020.0002.0776] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
+0777 ; [.1D54.0020.0002.0777] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW
+06D2 ; [.1D55.0020.0002.06D2] # ARABIC LETTER YEH BARREE
+FBAF ; [.1D55.0020.0019.FBAF] # ARABIC LETTER YEH BARREE FINAL FORM
+FBAE ; [.1D55.0020.001A.FBAE] # ARABIC LETTER YEH BARREE ISOLATED FORM
+06D3 ; [.1D55.0020.0002.06D2][.0000.00BE.0002.0654] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+FBB1 ; [.1D55.0020.0019.FBB1][.0000.00BE.0019.FBB1] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBB0 ; [.1D55.0020.001A.FBB0][.0000.00BE.001A.FBB0] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+077A ; [.1D56.0020.0002.077A] # ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
+077B ; [.1D57.0020.0002.077B] # ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
+0710 ; [.1D58.0020.0002.0710] # SYRIAC LETTER ALAPH
+0712 ; [.1D59.0020.0002.0712] # SYRIAC LETTER BETH
+072D ; [.1D59.0020.0004.072D][.0000.013C.0004.072D] # SYRIAC LETTER PERSIAN BHETH
+0713 ; [.1D5A.0020.0002.0713] # SYRIAC LETTER GAMAL
+0714 ; [.1D5A.0020.0004.0714][.0000.013A.0004.0714] # SYRIAC LETTER GAMAL GARSHUNI
+072E ; [.1D5A.0020.0004.072E][.0000.013C.0004.072E] # SYRIAC LETTER PERSIAN GHAMAL
+0716 ; [.1D5B.0020.0002.0716] # SYRIAC LETTER DOTLESS DALATH RISH
+0715 ; [.1D5C.0020.0002.0715] # SYRIAC LETTER DALATH
+072F ; [.1D5C.0020.0004.072F][.0000.013C.0004.072F] # SYRIAC LETTER PERSIAN DHALATH
+0717 ; [.1D5D.0020.0002.0717] # SYRIAC LETTER HE
+0718 ; [.1D5E.0020.0002.0718] # SYRIAC LETTER WAW
+0719 ; [.1D5F.0020.0002.0719] # SYRIAC LETTER ZAIN
+074D ; [.1D60.0020.0002.074D] # SYRIAC LETTER SOGDIAN ZHAIN
+071A ; [.1D61.0020.0002.071A] # SYRIAC LETTER HETH
+071B ; [.1D62.0020.0002.071B] # SYRIAC LETTER TETH
+071C ; [.1D62.0020.0004.071C][.0000.013A.0004.071C] # SYRIAC LETTER TETH GARSHUNI
+071D ; [.1D63.0020.0002.071D] # SYRIAC LETTER YUDH
+071E ; [.1D64.0020.0002.071E] # SYRIAC LETTER YUDH HE
+071F ; [.1D65.0020.0002.071F] # SYRIAC LETTER KAPH
+074E ; [.1D66.0020.0002.074E] # SYRIAC LETTER SOGDIAN KHAPH
+0720 ; [.1D67.0020.0002.0720] # SYRIAC LETTER LAMADH
+0721 ; [.1D68.0020.0002.0721] # SYRIAC LETTER MIM
+0722 ; [.1D69.0020.0002.0722] # SYRIAC LETTER NUN
+0723 ; [.1D6A.0020.0002.0723] # SYRIAC LETTER SEMKATH
+0724 ; [.1D6A.0020.0019.0724] # SYRIAC LETTER FINAL SEMKATH
+0725 ; [.1D6B.0020.0002.0725] # SYRIAC LETTER E
+0726 ; [.1D6C.0020.0002.0726] # SYRIAC LETTER PE
+0727 ; [.1D6C.0020.0004.0727][.0000.013A.0004.0727] # SYRIAC LETTER REVERSED PE
+074F ; [.1D6D.0020.0002.074F] # SYRIAC LETTER SOGDIAN FE
+0728 ; [.1D6E.0020.0002.0728] # SYRIAC LETTER SADHE
+0729 ; [.1D6F.0020.0002.0729] # SYRIAC LETTER QAPH
+072A ; [.1D70.0020.0002.072A] # SYRIAC LETTER RISH
+072B ; [.1D71.0020.0002.072B] # SYRIAC LETTER SHIN
+072C ; [.1D72.0020.0002.072C] # SYRIAC LETTER TAW
+0840 ; [.1D73.0020.0002.0840] # MANDAIC LETTER HALQA
+0841 ; [.1D74.0020.0002.0841] # MANDAIC LETTER AB
+0842 ; [.1D75.0020.0002.0842] # MANDAIC LETTER AG
+0843 ; [.1D76.0020.0002.0843] # MANDAIC LETTER AD
+0844 ; [.1D77.0020.0002.0844] # MANDAIC LETTER AH
+0845 ; [.1D78.0020.0002.0845] # MANDAIC LETTER USHENNA
+0846 ; [.1D79.0020.0002.0846] # MANDAIC LETTER AZ
+0847 ; [.1D7A.0020.0002.0847] # MANDAIC LETTER IT
+0848 ; [.1D7B.0020.0002.0848] # MANDAIC LETTER ATT
+0849 ; [.1D7C.0020.0002.0849] # MANDAIC LETTER AKSA
+084A ; [.1D7D.0020.0002.084A] # MANDAIC LETTER AK
+084B ; [.1D7E.0020.0002.084B] # MANDAIC LETTER AL
+084C ; [.1D7F.0020.0002.084C] # MANDAIC LETTER AM
+084D ; [.1D80.0020.0002.084D] # MANDAIC LETTER AN
+084E ; [.1D81.0020.0002.084E] # MANDAIC LETTER AS
+084F ; [.1D82.0020.0002.084F] # MANDAIC LETTER IN
+0850 ; [.1D83.0020.0002.0850] # MANDAIC LETTER AP
+0851 ; [.1D84.0020.0002.0851] # MANDAIC LETTER ASZ
+0852 ; [.1D85.0020.0002.0852] # MANDAIC LETTER AQ
+0853 ; [.1D86.0020.0002.0853] # MANDAIC LETTER AR
+0854 ; [.1D87.0020.0002.0854] # MANDAIC LETTER ASH
+0855 ; [.1D88.0020.0002.0855] # MANDAIC LETTER AT
+0856 ; [.1D89.0020.0002.0856] # MANDAIC LETTER DUSHENNA
+0857 ; [.1D8A.0020.0002.0857] # MANDAIC LETTER KAD
+0858 ; [.1D8B.0020.0002.0858] # MANDAIC LETTER AIN
+0780 ; [.1D8C.0020.0002.0780] # THAANA LETTER HAA
+0799 ; [.1D8D.0020.0002.0799] # THAANA LETTER HHAA
+079A ; [.1D8E.0020.0002.079A] # THAANA LETTER KHAA
+0781 ; [.1D8F.0020.0002.0781] # THAANA LETTER SHAVIYANI
+0782 ; [.1D90.0020.0002.0782] # THAANA LETTER NOONU
+0783 ; [.1D91.0020.0002.0783] # THAANA LETTER RAA
+079C ; [.1D92.0020.0002.079C] # THAANA LETTER ZAA
+0784 ; [.1D93.0020.0002.0784] # THAANA LETTER BAA
+0785 ; [.1D94.0020.0002.0785] # THAANA LETTER LHAVIYANI
+0786 ; [.1D95.0020.0002.0786] # THAANA LETTER KAAFU
+0787 ; [.1D96.0020.0002.0787] # THAANA LETTER ALIFU
+07A2 ; [.1D97.0020.0002.07A2] # THAANA LETTER AINU
+07A3 ; [.1D98.0020.0002.07A3] # THAANA LETTER GHAINU
+0788 ; [.1D99.0020.0002.0788] # THAANA LETTER VAAVU
+07A5 ; [.1D9A.0020.0002.07A5] # THAANA LETTER WAAVU
+0789 ; [.1D9B.0020.0002.0789] # THAANA LETTER MEEMU
+078A ; [.1D9C.0020.0002.078A] # THAANA LETTER FAAFU
+078B ; [.1D9D.0020.0002.078B] # THAANA LETTER DHAALU
+079B ; [.1D9E.0020.0002.079B] # THAANA LETTER THAALU
+078C ; [.1D9F.0020.0002.078C] # THAANA LETTER THAA
+0798 ; [.1DA0.0020.0002.0798] # THAANA LETTER TTAA
+07A0 ; [.1DA1.0020.0002.07A0] # THAANA LETTER TO
+07A1 ; [.1DA2.0020.0002.07A1] # THAANA LETTER ZO
+078D ; [.1DA3.0020.0002.078D] # THAANA LETTER LAAMU
+078E ; [.1DA4.0020.0002.078E] # THAANA LETTER GAAFU
+07A4 ; [.1DA5.0020.0002.07A4] # THAANA LETTER QAAFU
+078F ; [.1DA6.0020.0002.078F] # THAANA LETTER GNAVIYANI
+0790 ; [.1DA7.0020.0002.0790] # THAANA LETTER SEENU
+079D ; [.1DA8.0020.0002.079D] # THAANA LETTER SHEENU
+079E ; [.1DA9.0020.0002.079E] # THAANA LETTER SAADHU
+079F ; [.1DAA.0020.0002.079F] # THAANA LETTER DAADHU
+0791 ; [.1DAB.0020.0002.0791] # THAANA LETTER DAVIYANI
+0792 ; [.1DAC.0020.0002.0792] # THAANA LETTER ZAVIYANI
+0793 ; [.1DAD.0020.0002.0793] # THAANA LETTER TAVIYANI
+0794 ; [.1DAE.0020.0002.0794] # THAANA LETTER YAA
+0795 ; [.1DAF.0020.0002.0795] # THAANA LETTER PAVIYANI
+0796 ; [.1DB0.0020.0002.0796] # THAANA LETTER JAVIYANI
+0797 ; [.1DB1.0020.0002.0797] # THAANA LETTER CHAVIYANI
+07B1 ; [.1DB2.0020.0002.07B1] # THAANA LETTER NAA
+07A6 ; [.1DB3.0020.0002.07A6] # THAANA ABAFILI
+07A7 ; [.1DB4.0020.0002.07A7] # THAANA AABAAFILI
+07A8 ; [.1DB5.0020.0002.07A8] # THAANA IBIFILI
+07A9 ; [.1DB6.0020.0002.07A9] # THAANA EEBEEFILI
+07AA ; [.1DB7.0020.0002.07AA] # THAANA UBUFILI
+07AB ; [.1DB8.0020.0002.07AB] # THAANA OOBOOFILI
+07AC ; [.1DB9.0020.0002.07AC] # THAANA EBEFILI
+07AD ; [.1DBA.0020.0002.07AD] # THAANA EYBEYFILI
+07AE ; [.1DBB.0020.0002.07AE] # THAANA OBOFILI
+07AF ; [.1DBC.0020.0002.07AF] # THAANA OABOAFILI
+07B0 ; [.1DBD.0020.0002.07B0] # THAANA SUKUN
+07CA ; [.1DBE.0020.0002.07CA] # NKO LETTER A
+07CB ; [.1DBF.0020.0002.07CB] # NKO LETTER EE
+07CC ; [.1DC0.0020.0002.07CC] # NKO LETTER I
+07CD ; [.1DC1.0020.0002.07CD] # NKO LETTER E
+07CE ; [.1DC2.0020.0002.07CE] # NKO LETTER U
+07CF ; [.1DC3.0020.0002.07CF] # NKO LETTER OO
+07D0 ; [.1DC4.0020.0002.07D0] # NKO LETTER O
+07D1 ; [.1DC5.0020.0002.07D1] # NKO LETTER DAGBASINNA
+07D2 ; [.1DC6.0020.0002.07D2] # NKO LETTER N
+07D3 ; [.1DC7.0020.0002.07D3] # NKO LETTER BA
+07D4 ; [.1DC8.0020.0002.07D4] # NKO LETTER PA
+07D5 ; [.1DC9.0020.0002.07D5] # NKO LETTER TA
+07D6 ; [.1DCA.0020.0002.07D6] # NKO LETTER JA
+07E8 ; [.1DCA.0020.0004.07E8][.0000.0139.0004.07E8] # NKO LETTER JONA JA
+07D7 ; [.1DCB.0020.0002.07D7] # NKO LETTER CHA
+07E9 ; [.1DCB.0020.0004.07E9][.0000.0139.0004.07E9] # NKO LETTER JONA CHA
+07D8 ; [.1DCC.0020.0002.07D8] # NKO LETTER DA
+07D9 ; [.1DCD.0020.0002.07D9] # NKO LETTER RA
+07EA ; [.1DCD.0020.0004.07EA][.0000.0139.0004.07EA] # NKO LETTER JONA RA
+07DA ; [.1DCE.0020.0002.07DA] # NKO LETTER RRA
+07DB ; [.1DCF.0020.0002.07DB] # NKO LETTER SA
+07DC ; [.1DD0.0020.0002.07DC] # NKO LETTER GBA
+07DD ; [.1DD1.0020.0002.07DD] # NKO LETTER FA
+07DE ; [.1DD2.0020.0002.07DE] # NKO LETTER KA
+07DF ; [.1DD3.0020.0002.07DF] # NKO LETTER LA
+07E0 ; [.1DD4.0020.0002.07E0] # NKO LETTER NA WOLOSO
+07E1 ; [.1DD5.0020.0002.07E1] # NKO LETTER MA
+07E2 ; [.1DD6.0020.0002.07E2] # NKO LETTER NYA
+07E3 ; [.1DD7.0020.0002.07E3] # NKO LETTER NA
+07E4 ; [.1DD8.0020.0002.07E4] # NKO LETTER HA
+07E5 ; [.1DD9.0020.0002.07E5] # NKO LETTER WA
+07E6 ; [.1DDA.0020.0002.07E6] # NKO LETTER YA
+07E7 ; [.1DDB.0020.0002.07E7] # NKO LETTER NYA WOLOSO
+07F4 ; [.1DDC.0020.0002.07F4] # NKO HIGH TONE APOSTROPHE
+07F5 ; [.1DDD.0020.0002.07F5] # NKO LOW TONE APOSTROPHE
+2D30 ; [.1DDE.0020.0002.2D30] # TIFINAGH LETTER YA
+2D31 ; [.1DDF.0020.0002.2D31] # TIFINAGH LETTER YAB
+2D32 ; [.1DE0.0020.0002.2D32] # TIFINAGH LETTER YABH
+2D33 ; [.1DE1.0020.0002.2D33] # TIFINAGH LETTER YAG
+2D34 ; [.1DE2.0020.0002.2D34] # TIFINAGH LETTER YAGHH
+2D35 ; [.1DE3.0020.0002.2D35] # TIFINAGH LETTER BERBER ACADEMY YAJ
+2D36 ; [.1DE4.0020.0002.2D36] # TIFINAGH LETTER YAJ
+2D37 ; [.1DE5.0020.0002.2D37] # TIFINAGH LETTER YAD
+2D38 ; [.1DE6.0020.0002.2D38] # TIFINAGH LETTER YADH
+2D39 ; [.1DE7.0020.0002.2D39] # TIFINAGH LETTER YADD
+2D3A ; [.1DE8.0020.0002.2D3A] # TIFINAGH LETTER YADDH
+2D3B ; [.1DE9.0020.0002.2D3B] # TIFINAGH LETTER YEY
+2D66 ; [.1DEA.0020.0002.2D66] # TIFINAGH LETTER YE
+2D3C ; [.1DEB.0020.0002.2D3C] # TIFINAGH LETTER YAF
+2D3D ; [.1DEC.0020.0002.2D3D] # TIFINAGH LETTER YAK
+2D3E ; [.1DED.0020.0002.2D3E] # TIFINAGH LETTER TUAREG YAK
+2D3F ; [.1DEE.0020.0002.2D3F] # TIFINAGH LETTER YAKHH
+2D40 ; [.1DEF.0020.0002.2D40] # TIFINAGH LETTER YAH
+2D41 ; [.1DF0.0020.0002.2D41] # TIFINAGH LETTER BERBER ACADEMY YAH
+2D42 ; [.1DF1.0020.0002.2D42] # TIFINAGH LETTER TUAREG YAH
+2D43 ; [.1DF2.0020.0002.2D43] # TIFINAGH LETTER YAHH
+2D44 ; [.1DF3.0020.0002.2D44] # TIFINAGH LETTER YAA
+2D45 ; [.1DF4.0020.0002.2D45] # TIFINAGH LETTER YAKH
+2D46 ; [.1DF5.0020.0002.2D46] # TIFINAGH LETTER TUAREG YAKH
+2D47 ; [.1DF6.0020.0002.2D47] # TIFINAGH LETTER YAQ
+2D48 ; [.1DF7.0020.0002.2D48] # TIFINAGH LETTER TUAREG YAQ
+2D49 ; [.1DF8.0020.0002.2D49] # TIFINAGH LETTER YI
+2D4A ; [.1DF9.0020.0002.2D4A] # TIFINAGH LETTER YAZH
+2D4B ; [.1DFA.0020.0002.2D4B] # TIFINAGH LETTER AHAGGAR YAZH
+2D4C ; [.1DFB.0020.0002.2D4C] # TIFINAGH LETTER TUAREG YAZH
+2D4D ; [.1DFC.0020.0002.2D4D] # TIFINAGH LETTER YAL
+2D4E ; [.1DFD.0020.0002.2D4E] # TIFINAGH LETTER YAM
+2D4F ; [.1DFE.0020.0002.2D4F] # TIFINAGH LETTER YAN
+2D50 ; [.1DFF.0020.0002.2D50] # TIFINAGH LETTER TUAREG YAGN
+2D51 ; [.1E00.0020.0002.2D51] # TIFINAGH LETTER TUAREG YANG
+2D52 ; [.1E01.0020.0002.2D52] # TIFINAGH LETTER YAP
+2D53 ; [.1E02.0020.0002.2D53] # TIFINAGH LETTER YU
+2D67 ; [.1E03.0020.0002.2D67] # TIFINAGH LETTER YO
+2D54 ; [.1E04.0020.0002.2D54] # TIFINAGH LETTER YAR
+2D55 ; [.1E05.0020.0002.2D55] # TIFINAGH LETTER YARR
+2D56 ; [.1E06.0020.0002.2D56] # TIFINAGH LETTER YAGH
+2D57 ; [.1E07.0020.0002.2D57] # TIFINAGH LETTER TUAREG YAGH
+2D58 ; [.1E08.0020.0002.2D58] # TIFINAGH LETTER AYER YAGH
+2D59 ; [.1E09.0020.0002.2D59] # TIFINAGH LETTER YAS
+2D5A ; [.1E0A.0020.0002.2D5A] # TIFINAGH LETTER YASS
+2D5B ; [.1E0B.0020.0002.2D5B] # TIFINAGH LETTER YASH
+2D5C ; [.1E0C.0020.0002.2D5C] # TIFINAGH LETTER YAT
+2D5D ; [.1E0D.0020.0002.2D5D] # TIFINAGH LETTER YATH
+2D5E ; [.1E0E.0020.0002.2D5E] # TIFINAGH LETTER YACH
+2D5F ; [.1E0F.0020.0002.2D5F] # TIFINAGH LETTER YATT
+2D60 ; [.1E10.0020.0002.2D60] # TIFINAGH LETTER YAV
+2D61 ; [.1E11.0020.0002.2D61] # TIFINAGH LETTER YAW
+2D62 ; [.1E12.0020.0002.2D62] # TIFINAGH LETTER YAY
+2D63 ; [.1E13.0020.0002.2D63] # TIFINAGH LETTER YAZ
+2D64 ; [.1E14.0020.0002.2D64] # TIFINAGH LETTER TAWELLEMET YAZ
+2D65 ; [.1E15.0020.0002.2D65] # TIFINAGH LETTER YAZZ
+2D6F ; [.1E16.0020.0002.2D6F] # TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+1200 ; [.1E17.0020.0002.1200] # ETHIOPIC SYLLABLE HA
+1201 ; [.1E18.0020.0002.1201] # ETHIOPIC SYLLABLE HU
+1202 ; [.1E19.0020.0002.1202] # ETHIOPIC SYLLABLE HI
+1203 ; [.1E1A.0020.0002.1203] # ETHIOPIC SYLLABLE HAA
+1204 ; [.1E1B.0020.0002.1204] # ETHIOPIC SYLLABLE HEE
+1205 ; [.1E1C.0020.0002.1205] # ETHIOPIC SYLLABLE HE
+1206 ; [.1E1D.0020.0002.1206] # ETHIOPIC SYLLABLE HO
+1207 ; [.1E1E.0020.0002.1207] # ETHIOPIC SYLLABLE HOA
+1208 ; [.1E1F.0020.0002.1208] # ETHIOPIC SYLLABLE LA
+1209 ; [.1E20.0020.0002.1209] # ETHIOPIC SYLLABLE LU
+120A ; [.1E21.0020.0002.120A] # ETHIOPIC SYLLABLE LI
+120B ; [.1E22.0020.0002.120B] # ETHIOPIC SYLLABLE LAA
+120C ; [.1E23.0020.0002.120C] # ETHIOPIC SYLLABLE LEE
+120D ; [.1E24.0020.0002.120D] # ETHIOPIC SYLLABLE LE
+120E ; [.1E25.0020.0002.120E] # ETHIOPIC SYLLABLE LO
+120F ; [.1E26.0020.0002.120F] # ETHIOPIC SYLLABLE LWA
+2D80 ; [.1E27.0020.0002.2D80] # ETHIOPIC SYLLABLE LOA
+1210 ; [.1E28.0020.0002.1210] # ETHIOPIC SYLLABLE HHA
+1211 ; [.1E29.0020.0002.1211] # ETHIOPIC SYLLABLE HHU
+1212 ; [.1E2A.0020.0002.1212] # ETHIOPIC SYLLABLE HHI
+1213 ; [.1E2B.0020.0002.1213] # ETHIOPIC SYLLABLE HHAA
+1214 ; [.1E2C.0020.0002.1214] # ETHIOPIC SYLLABLE HHEE
+1215 ; [.1E2D.0020.0002.1215] # ETHIOPIC SYLLABLE HHE
+1216 ; [.1E2E.0020.0002.1216] # ETHIOPIC SYLLABLE HHO
+1217 ; [.1E2F.0020.0002.1217] # ETHIOPIC SYLLABLE HHWA
+1218 ; [.1E30.0020.0002.1218] # ETHIOPIC SYLLABLE MA
+1219 ; [.1E31.0020.0002.1219] # ETHIOPIC SYLLABLE MU
+121A ; [.1E32.0020.0002.121A] # ETHIOPIC SYLLABLE MI
+121B ; [.1E33.0020.0002.121B] # ETHIOPIC SYLLABLE MAA
+121C ; [.1E34.0020.0002.121C] # ETHIOPIC SYLLABLE MEE
+121D ; [.1E35.0020.0002.121D] # ETHIOPIC SYLLABLE ME
+121E ; [.1E36.0020.0002.121E] # ETHIOPIC SYLLABLE MO
+121F ; [.1E37.0020.0002.121F] # ETHIOPIC SYLLABLE MWA
+1380 ; [.1E38.0020.0002.1380] # ETHIOPIC SYLLABLE SEBATBEIT MWA
+1381 ; [.1E39.0020.0002.1381] # ETHIOPIC SYLLABLE MWI
+1382 ; [.1E3A.0020.0002.1382] # ETHIOPIC SYLLABLE MWEE
+1383 ; [.1E3B.0020.0002.1383] # ETHIOPIC SYLLABLE MWE
+2D81 ; [.1E3C.0020.0002.2D81] # ETHIOPIC SYLLABLE MOA
+1220 ; [.1E3D.0020.0002.1220] # ETHIOPIC SYLLABLE SZA
+1221 ; [.1E3E.0020.0002.1221] # ETHIOPIC SYLLABLE SZU
+1222 ; [.1E3F.0020.0002.1222] # ETHIOPIC SYLLABLE SZI
+1223 ; [.1E40.0020.0002.1223] # ETHIOPIC SYLLABLE SZAA
+1224 ; [.1E41.0020.0002.1224] # ETHIOPIC SYLLABLE SZEE
+1225 ; [.1E42.0020.0002.1225] # ETHIOPIC SYLLABLE SZE
+1226 ; [.1E43.0020.0002.1226] # ETHIOPIC SYLLABLE SZO
+1227 ; [.1E44.0020.0002.1227] # ETHIOPIC SYLLABLE SZWA
+1228 ; [.1E45.0020.0002.1228] # ETHIOPIC SYLLABLE RA
+1229 ; [.1E46.0020.0002.1229] # ETHIOPIC SYLLABLE RU
+122A ; [.1E47.0020.0002.122A] # ETHIOPIC SYLLABLE RI
+122B ; [.1E48.0020.0002.122B] # ETHIOPIC SYLLABLE RAA
+122C ; [.1E49.0020.0002.122C] # ETHIOPIC SYLLABLE REE
+122D ; [.1E4A.0020.0002.122D] # ETHIOPIC SYLLABLE RE
+122E ; [.1E4B.0020.0002.122E] # ETHIOPIC SYLLABLE RO
+122F ; [.1E4C.0020.0002.122F] # ETHIOPIC SYLLABLE RWA
+2D82 ; [.1E4D.0020.0002.2D82] # ETHIOPIC SYLLABLE ROA
+1230 ; [.1E4E.0020.0002.1230] # ETHIOPIC SYLLABLE SA
+1231 ; [.1E4F.0020.0002.1231] # ETHIOPIC SYLLABLE SU
+1232 ; [.1E50.0020.0002.1232] # ETHIOPIC SYLLABLE SI
+1233 ; [.1E51.0020.0002.1233] # ETHIOPIC SYLLABLE SAA
+1234 ; [.1E52.0020.0002.1234] # ETHIOPIC SYLLABLE SEE
+1235 ; [.1E53.0020.0002.1235] # ETHIOPIC SYLLABLE SE
+1236 ; [.1E54.0020.0002.1236] # ETHIOPIC SYLLABLE SO
+1237 ; [.1E55.0020.0002.1237] # ETHIOPIC SYLLABLE SWA
+2D83 ; [.1E56.0020.0002.2D83] # ETHIOPIC SYLLABLE SOA
+AB01 ; [.1E57.0020.0002.AB01] # ETHIOPIC SYLLABLE TTHU
+AB02 ; [.1E58.0020.0002.AB02] # ETHIOPIC SYLLABLE TTHI
+AB03 ; [.1E59.0020.0002.AB03] # ETHIOPIC SYLLABLE TTHAA
+AB04 ; [.1E5A.0020.0002.AB04] # ETHIOPIC SYLLABLE TTHEE
+AB05 ; [.1E5B.0020.0002.AB05] # ETHIOPIC SYLLABLE TTHE
+AB06 ; [.1E5C.0020.0002.AB06] # ETHIOPIC SYLLABLE TTHO
+1238 ; [.1E5D.0020.0002.1238] # ETHIOPIC SYLLABLE SHA
+1239 ; [.1E5E.0020.0002.1239] # ETHIOPIC SYLLABLE SHU
+123A ; [.1E5F.0020.0002.123A] # ETHIOPIC SYLLABLE SHI
+123B ; [.1E60.0020.0002.123B] # ETHIOPIC SYLLABLE SHAA
+123C ; [.1E61.0020.0002.123C] # ETHIOPIC SYLLABLE SHEE
+123D ; [.1E62.0020.0002.123D] # ETHIOPIC SYLLABLE SHE
+123E ; [.1E63.0020.0002.123E] # ETHIOPIC SYLLABLE SHO
+123F ; [.1E64.0020.0002.123F] # ETHIOPIC SYLLABLE SHWA
+2D84 ; [.1E65.0020.0002.2D84] # ETHIOPIC SYLLABLE SHOA
+1240 ; [.1E66.0020.0002.1240] # ETHIOPIC SYLLABLE QA
+1241 ; [.1E67.0020.0002.1241] # ETHIOPIC SYLLABLE QU
+1242 ; [.1E68.0020.0002.1242] # ETHIOPIC SYLLABLE QI
+1243 ; [.1E69.0020.0002.1243] # ETHIOPIC SYLLABLE QAA
+1244 ; [.1E6A.0020.0002.1244] # ETHIOPIC SYLLABLE QEE
+1245 ; [.1E6B.0020.0002.1245] # ETHIOPIC SYLLABLE QE
+1246 ; [.1E6C.0020.0002.1246] # ETHIOPIC SYLLABLE QO
+1247 ; [.1E6D.0020.0002.1247] # ETHIOPIC SYLLABLE QOA
+1248 ; [.1E6E.0020.0002.1248] # ETHIOPIC SYLLABLE QWA
+124A ; [.1E6F.0020.0002.124A] # ETHIOPIC SYLLABLE QWI
+124B ; [.1E70.0020.0002.124B] # ETHIOPIC SYLLABLE QWAA
+124C ; [.1E71.0020.0002.124C] # ETHIOPIC SYLLABLE QWEE
+124D ; [.1E72.0020.0002.124D] # ETHIOPIC SYLLABLE QWE
+1250 ; [.1E73.0020.0002.1250] # ETHIOPIC SYLLABLE QHA
+1251 ; [.1E74.0020.0002.1251] # ETHIOPIC SYLLABLE QHU
+1252 ; [.1E75.0020.0002.1252] # ETHIOPIC SYLLABLE QHI
+1253 ; [.1E76.0020.0002.1253] # ETHIOPIC SYLLABLE QHAA
+1254 ; [.1E77.0020.0002.1254] # ETHIOPIC SYLLABLE QHEE
+1255 ; [.1E78.0020.0002.1255] # ETHIOPIC SYLLABLE QHE
+1256 ; [.1E79.0020.0002.1256] # ETHIOPIC SYLLABLE QHO
+1258 ; [.1E7A.0020.0002.1258] # ETHIOPIC SYLLABLE QHWA
+125A ; [.1E7B.0020.0002.125A] # ETHIOPIC SYLLABLE QHWI
+125B ; [.1E7C.0020.0002.125B] # ETHIOPIC SYLLABLE QHWAA
+125C ; [.1E7D.0020.0002.125C] # ETHIOPIC SYLLABLE QHWEE
+125D ; [.1E7E.0020.0002.125D] # ETHIOPIC SYLLABLE QHWE
+1260 ; [.1E7F.0020.0002.1260] # ETHIOPIC SYLLABLE BA
+1261 ; [.1E80.0020.0002.1261] # ETHIOPIC SYLLABLE BU
+1262 ; [.1E81.0020.0002.1262] # ETHIOPIC SYLLABLE BI
+1263 ; [.1E82.0020.0002.1263] # ETHIOPIC SYLLABLE BAA
+1264 ; [.1E83.0020.0002.1264] # ETHIOPIC SYLLABLE BEE
+1265 ; [.1E84.0020.0002.1265] # ETHIOPIC SYLLABLE BE
+1266 ; [.1E85.0020.0002.1266] # ETHIOPIC SYLLABLE BO
+1267 ; [.1E86.0020.0002.1267] # ETHIOPIC SYLLABLE BWA
+1384 ; [.1E87.0020.0002.1384] # ETHIOPIC SYLLABLE SEBATBEIT BWA
+1385 ; [.1E88.0020.0002.1385] # ETHIOPIC SYLLABLE BWI
+1386 ; [.1E89.0020.0002.1386] # ETHIOPIC SYLLABLE BWEE
+1387 ; [.1E8A.0020.0002.1387] # ETHIOPIC SYLLABLE BWE
+2D85 ; [.1E8B.0020.0002.2D85] # ETHIOPIC SYLLABLE BOA
+1268 ; [.1E8C.0020.0002.1268] # ETHIOPIC SYLLABLE VA
+1269 ; [.1E8D.0020.0002.1269] # ETHIOPIC SYLLABLE VU
+126A ; [.1E8E.0020.0002.126A] # ETHIOPIC SYLLABLE VI
+126B ; [.1E8F.0020.0002.126B] # ETHIOPIC SYLLABLE VAA
+126C ; [.1E90.0020.0002.126C] # ETHIOPIC SYLLABLE VEE
+126D ; [.1E91.0020.0002.126D] # ETHIOPIC SYLLABLE VE
+126E ; [.1E92.0020.0002.126E] # ETHIOPIC SYLLABLE VO
+126F ; [.1E93.0020.0002.126F] # ETHIOPIC SYLLABLE VWA
+1270 ; [.1E94.0020.0002.1270] # ETHIOPIC SYLLABLE TA
+1271 ; [.1E95.0020.0002.1271] # ETHIOPIC SYLLABLE TU
+1272 ; [.1E96.0020.0002.1272] # ETHIOPIC SYLLABLE TI
+1273 ; [.1E97.0020.0002.1273] # ETHIOPIC SYLLABLE TAA
+1274 ; [.1E98.0020.0002.1274] # ETHIOPIC SYLLABLE TEE
+1275 ; [.1E99.0020.0002.1275] # ETHIOPIC SYLLABLE TE
+1276 ; [.1E9A.0020.0002.1276] # ETHIOPIC SYLLABLE TO
+1277 ; [.1E9B.0020.0002.1277] # ETHIOPIC SYLLABLE TWA
+2D86 ; [.1E9C.0020.0002.2D86] # ETHIOPIC SYLLABLE TOA
+1278 ; [.1E9D.0020.0002.1278] # ETHIOPIC SYLLABLE CA
+1279 ; [.1E9E.0020.0002.1279] # ETHIOPIC SYLLABLE CU
+127A ; [.1E9F.0020.0002.127A] # ETHIOPIC SYLLABLE CI
+127B ; [.1EA0.0020.0002.127B] # ETHIOPIC SYLLABLE CAA
+127C ; [.1EA1.0020.0002.127C] # ETHIOPIC SYLLABLE CEE
+127D ; [.1EA2.0020.0002.127D] # ETHIOPIC SYLLABLE CE
+127E ; [.1EA3.0020.0002.127E] # ETHIOPIC SYLLABLE CO
+127F ; [.1EA4.0020.0002.127F] # ETHIOPIC SYLLABLE CWA
+2D87 ; [.1EA5.0020.0002.2D87] # ETHIOPIC SYLLABLE COA
+1280 ; [.1EA6.0020.0002.1280] # ETHIOPIC SYLLABLE XA
+1281 ; [.1EA7.0020.0002.1281] # ETHIOPIC SYLLABLE XU
+1282 ; [.1EA8.0020.0002.1282] # ETHIOPIC SYLLABLE XI
+1283 ; [.1EA9.0020.0002.1283] # ETHIOPIC SYLLABLE XAA
+1284 ; [.1EAA.0020.0002.1284] # ETHIOPIC SYLLABLE XEE
+1285 ; [.1EAB.0020.0002.1285] # ETHIOPIC SYLLABLE XE
+1286 ; [.1EAC.0020.0002.1286] # ETHIOPIC SYLLABLE XO
+1287 ; [.1EAD.0020.0002.1287] # ETHIOPIC SYLLABLE XOA
+1288 ; [.1EAE.0020.0002.1288] # ETHIOPIC SYLLABLE XWA
+128A ; [.1EAF.0020.0002.128A] # ETHIOPIC SYLLABLE XWI
+128B ; [.1EB0.0020.0002.128B] # ETHIOPIC SYLLABLE XWAA
+128C ; [.1EB1.0020.0002.128C] # ETHIOPIC SYLLABLE XWEE
+128D ; [.1EB2.0020.0002.128D] # ETHIOPIC SYLLABLE XWE
+1290 ; [.1EB3.0020.0002.1290] # ETHIOPIC SYLLABLE NA
+1291 ; [.1EB4.0020.0002.1291] # ETHIOPIC SYLLABLE NU
+1292 ; [.1EB5.0020.0002.1292] # ETHIOPIC SYLLABLE NI
+1293 ; [.1EB6.0020.0002.1293] # ETHIOPIC SYLLABLE NAA
+1294 ; [.1EB7.0020.0002.1294] # ETHIOPIC SYLLABLE NEE
+1295 ; [.1EB8.0020.0002.1295] # ETHIOPIC SYLLABLE NE
+1296 ; [.1EB9.0020.0002.1296] # ETHIOPIC SYLLABLE NO
+1297 ; [.1EBA.0020.0002.1297] # ETHIOPIC SYLLABLE NWA
+2D88 ; [.1EBB.0020.0002.2D88] # ETHIOPIC SYLLABLE NOA
+1298 ; [.1EBC.0020.0002.1298] # ETHIOPIC SYLLABLE NYA
+1299 ; [.1EBD.0020.0002.1299] # ETHIOPIC SYLLABLE NYU
+129A ; [.1EBE.0020.0002.129A] # ETHIOPIC SYLLABLE NYI
+129B ; [.1EBF.0020.0002.129B] # ETHIOPIC SYLLABLE NYAA
+129C ; [.1EC0.0020.0002.129C] # ETHIOPIC SYLLABLE NYEE
+129D ; [.1EC1.0020.0002.129D] # ETHIOPIC SYLLABLE NYE
+129E ; [.1EC2.0020.0002.129E] # ETHIOPIC SYLLABLE NYO
+129F ; [.1EC3.0020.0002.129F] # ETHIOPIC SYLLABLE NYWA
+2D89 ; [.1EC4.0020.0002.2D89] # ETHIOPIC SYLLABLE NYOA
+12A0 ; [.1EC5.0020.0002.12A0] # ETHIOPIC SYLLABLE GLOTTAL A
+12A1 ; [.1EC6.0020.0002.12A1] # ETHIOPIC SYLLABLE GLOTTAL U
+12A2 ; [.1EC7.0020.0002.12A2] # ETHIOPIC SYLLABLE GLOTTAL I
+12A3 ; [.1EC8.0020.0002.12A3] # ETHIOPIC SYLLABLE GLOTTAL AA
+12A4 ; [.1EC9.0020.0002.12A4] # ETHIOPIC SYLLABLE GLOTTAL EE
+12A5 ; [.1ECA.0020.0002.12A5] # ETHIOPIC SYLLABLE GLOTTAL E
+12A6 ; [.1ECB.0020.0002.12A6] # ETHIOPIC SYLLABLE GLOTTAL O
+12A7 ; [.1ECC.0020.0002.12A7] # ETHIOPIC SYLLABLE GLOTTAL WA
+2D8A ; [.1ECD.0020.0002.2D8A] # ETHIOPIC SYLLABLE GLOTTAL OA
+12A8 ; [.1ECE.0020.0002.12A8] # ETHIOPIC SYLLABLE KA
+12A9 ; [.1ECF.0020.0002.12A9] # ETHIOPIC SYLLABLE KU
+12AA ; [.1ED0.0020.0002.12AA] # ETHIOPIC SYLLABLE KI
+12AB ; [.1ED1.0020.0002.12AB] # ETHIOPIC SYLLABLE KAA
+12AC ; [.1ED2.0020.0002.12AC] # ETHIOPIC SYLLABLE KEE
+12AD ; [.1ED3.0020.0002.12AD] # ETHIOPIC SYLLABLE KE
+12AE ; [.1ED4.0020.0002.12AE] # ETHIOPIC SYLLABLE KO
+12AF ; [.1ED5.0020.0002.12AF] # ETHIOPIC SYLLABLE KOA
+12B0 ; [.1ED6.0020.0002.12B0] # ETHIOPIC SYLLABLE KWA
+12B2 ; [.1ED7.0020.0002.12B2] # ETHIOPIC SYLLABLE KWI
+12B3 ; [.1ED8.0020.0002.12B3] # ETHIOPIC SYLLABLE KWAA
+12B4 ; [.1ED9.0020.0002.12B4] # ETHIOPIC SYLLABLE KWEE
+12B5 ; [.1EDA.0020.0002.12B5] # ETHIOPIC SYLLABLE KWE
+12B8 ; [.1EDB.0020.0002.12B8] # ETHIOPIC SYLLABLE KXA
+12B9 ; [.1EDC.0020.0002.12B9] # ETHIOPIC SYLLABLE KXU
+12BA ; [.1EDD.0020.0002.12BA] # ETHIOPIC SYLLABLE KXI
+12BB ; [.1EDE.0020.0002.12BB] # ETHIOPIC SYLLABLE KXAA
+12BC ; [.1EDF.0020.0002.12BC] # ETHIOPIC SYLLABLE KXEE
+12BD ; [.1EE0.0020.0002.12BD] # ETHIOPIC SYLLABLE KXE
+12BE ; [.1EE1.0020.0002.12BE] # ETHIOPIC SYLLABLE KXO
+12C0 ; [.1EE2.0020.0002.12C0] # ETHIOPIC SYLLABLE KXWA
+12C2 ; [.1EE3.0020.0002.12C2] # ETHIOPIC SYLLABLE KXWI
+12C3 ; [.1EE4.0020.0002.12C3] # ETHIOPIC SYLLABLE KXWAA
+12C4 ; [.1EE5.0020.0002.12C4] # ETHIOPIC SYLLABLE KXWEE
+12C5 ; [.1EE6.0020.0002.12C5] # ETHIOPIC SYLLABLE KXWE
+12C8 ; [.1EE7.0020.0002.12C8] # ETHIOPIC SYLLABLE WA
+12C9 ; [.1EE8.0020.0002.12C9] # ETHIOPIC SYLLABLE WU
+12CA ; [.1EE9.0020.0002.12CA] # ETHIOPIC SYLLABLE WI
+12CB ; [.1EEA.0020.0002.12CB] # ETHIOPIC SYLLABLE WAA
+12CC ; [.1EEB.0020.0002.12CC] # ETHIOPIC SYLLABLE WEE
+12CD ; [.1EEC.0020.0002.12CD] # ETHIOPIC SYLLABLE WE
+12CE ; [.1EED.0020.0002.12CE] # ETHIOPIC SYLLABLE WO
+12CF ; [.1EEE.0020.0002.12CF] # ETHIOPIC SYLLABLE WOA
+12D0 ; [.1EEF.0020.0002.12D0] # ETHIOPIC SYLLABLE PHARYNGEAL A
+12D1 ; [.1EF0.0020.0002.12D1] # ETHIOPIC SYLLABLE PHARYNGEAL U
+12D2 ; [.1EF1.0020.0002.12D2] # ETHIOPIC SYLLABLE PHARYNGEAL I
+12D3 ; [.1EF2.0020.0002.12D3] # ETHIOPIC SYLLABLE PHARYNGEAL AA
+12D4 ; [.1EF3.0020.0002.12D4] # ETHIOPIC SYLLABLE PHARYNGEAL EE
+12D5 ; [.1EF4.0020.0002.12D5] # ETHIOPIC SYLLABLE PHARYNGEAL E
+12D6 ; [.1EF5.0020.0002.12D6] # ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8 ; [.1EF6.0020.0002.12D8] # ETHIOPIC SYLLABLE ZA
+12D9 ; [.1EF7.0020.0002.12D9] # ETHIOPIC SYLLABLE ZU
+12DA ; [.1EF8.0020.0002.12DA] # ETHIOPIC SYLLABLE ZI
+12DB ; [.1EF9.0020.0002.12DB] # ETHIOPIC SYLLABLE ZAA
+12DC ; [.1EFA.0020.0002.12DC] # ETHIOPIC SYLLABLE ZEE
+12DD ; [.1EFB.0020.0002.12DD] # ETHIOPIC SYLLABLE ZE
+12DE ; [.1EFC.0020.0002.12DE] # ETHIOPIC SYLLABLE ZO
+12DF ; [.1EFD.0020.0002.12DF] # ETHIOPIC SYLLABLE ZWA
+2D8B ; [.1EFE.0020.0002.2D8B] # ETHIOPIC SYLLABLE ZOA
+AB11 ; [.1EFF.0020.0002.AB11] # ETHIOPIC SYLLABLE DZU
+AB12 ; [.1F00.0020.0002.AB12] # ETHIOPIC SYLLABLE DZI
+AB13 ; [.1F01.0020.0002.AB13] # ETHIOPIC SYLLABLE DZAA
+AB14 ; [.1F02.0020.0002.AB14] # ETHIOPIC SYLLABLE DZEE
+AB15 ; [.1F03.0020.0002.AB15] # ETHIOPIC SYLLABLE DZE
+AB16 ; [.1F04.0020.0002.AB16] # ETHIOPIC SYLLABLE DZO
+12E0 ; [.1F05.0020.0002.12E0] # ETHIOPIC SYLLABLE ZHA
+12E1 ; [.1F06.0020.0002.12E1] # ETHIOPIC SYLLABLE ZHU
+12E2 ; [.1F07.0020.0002.12E2] # ETHIOPIC SYLLABLE ZHI
+12E3 ; [.1F08.0020.0002.12E3] # ETHIOPIC SYLLABLE ZHAA
+12E4 ; [.1F09.0020.0002.12E4] # ETHIOPIC SYLLABLE ZHEE
+12E5 ; [.1F0A.0020.0002.12E5] # ETHIOPIC SYLLABLE ZHE
+12E6 ; [.1F0B.0020.0002.12E6] # ETHIOPIC SYLLABLE ZHO
+12E7 ; [.1F0C.0020.0002.12E7] # ETHIOPIC SYLLABLE ZHWA
+12E8 ; [.1F0D.0020.0002.12E8] # ETHIOPIC SYLLABLE YA
+12E9 ; [.1F0E.0020.0002.12E9] # ETHIOPIC SYLLABLE YU
+12EA ; [.1F0F.0020.0002.12EA] # ETHIOPIC SYLLABLE YI
+12EB ; [.1F10.0020.0002.12EB] # ETHIOPIC SYLLABLE YAA
+12EC ; [.1F11.0020.0002.12EC] # ETHIOPIC SYLLABLE YEE
+12ED ; [.1F12.0020.0002.12ED] # ETHIOPIC SYLLABLE YE
+12EE ; [.1F13.0020.0002.12EE] # ETHIOPIC SYLLABLE YO
+12EF ; [.1F14.0020.0002.12EF] # ETHIOPIC SYLLABLE YOA
+12F0 ; [.1F15.0020.0002.12F0] # ETHIOPIC SYLLABLE DA
+12F1 ; [.1F16.0020.0002.12F1] # ETHIOPIC SYLLABLE DU
+12F2 ; [.1F17.0020.0002.12F2] # ETHIOPIC SYLLABLE DI
+12F3 ; [.1F18.0020.0002.12F3] # ETHIOPIC SYLLABLE DAA
+12F4 ; [.1F19.0020.0002.12F4] # ETHIOPIC SYLLABLE DEE
+12F5 ; [.1F1A.0020.0002.12F5] # ETHIOPIC SYLLABLE DE
+12F6 ; [.1F1B.0020.0002.12F6] # ETHIOPIC SYLLABLE DO
+12F7 ; [.1F1C.0020.0002.12F7] # ETHIOPIC SYLLABLE DWA
+2D8C ; [.1F1D.0020.0002.2D8C] # ETHIOPIC SYLLABLE DOA
+AB09 ; [.1F1E.0020.0002.AB09] # ETHIOPIC SYLLABLE DDHU
+AB0A ; [.1F1F.0020.0002.AB0A] # ETHIOPIC SYLLABLE DDHI
+AB0B ; [.1F20.0020.0002.AB0B] # ETHIOPIC SYLLABLE DDHAA
+AB0C ; [.1F21.0020.0002.AB0C] # ETHIOPIC SYLLABLE DDHEE
+AB0D ; [.1F22.0020.0002.AB0D] # ETHIOPIC SYLLABLE DDHE
+AB0E ; [.1F23.0020.0002.AB0E] # ETHIOPIC SYLLABLE DDHO
+12F8 ; [.1F24.0020.0002.12F8] # ETHIOPIC SYLLABLE DDA
+12F9 ; [.1F25.0020.0002.12F9] # ETHIOPIC SYLLABLE DDU
+12FA ; [.1F26.0020.0002.12FA] # ETHIOPIC SYLLABLE DDI
+12FB ; [.1F27.0020.0002.12FB] # ETHIOPIC SYLLABLE DDAA
+12FC ; [.1F28.0020.0002.12FC] # ETHIOPIC SYLLABLE DDEE
+12FD ; [.1F29.0020.0002.12FD] # ETHIOPIC SYLLABLE DDE
+12FE ; [.1F2A.0020.0002.12FE] # ETHIOPIC SYLLABLE DDO
+12FF ; [.1F2B.0020.0002.12FF] # ETHIOPIC SYLLABLE DDWA
+2D8D ; [.1F2C.0020.0002.2D8D] # ETHIOPIC SYLLABLE DDOA
+1300 ; [.1F2D.0020.0002.1300] # ETHIOPIC SYLLABLE JA
+1301 ; [.1F2E.0020.0002.1301] # ETHIOPIC SYLLABLE JU
+1302 ; [.1F2F.0020.0002.1302] # ETHIOPIC SYLLABLE JI
+1303 ; [.1F30.0020.0002.1303] # ETHIOPIC SYLLABLE JAA
+1304 ; [.1F31.0020.0002.1304] # ETHIOPIC SYLLABLE JEE
+1305 ; [.1F32.0020.0002.1305] # ETHIOPIC SYLLABLE JE
+1306 ; [.1F33.0020.0002.1306] # ETHIOPIC SYLLABLE JO
+1307 ; [.1F34.0020.0002.1307] # ETHIOPIC SYLLABLE JWA
+2D8E ; [.1F35.0020.0002.2D8E] # ETHIOPIC SYLLABLE JOA
+1308 ; [.1F36.0020.0002.1308] # ETHIOPIC SYLLABLE GA
+1309 ; [.1F37.0020.0002.1309] # ETHIOPIC SYLLABLE GU
+130A ; [.1F38.0020.0002.130A] # ETHIOPIC SYLLABLE GI
+130B ; [.1F39.0020.0002.130B] # ETHIOPIC SYLLABLE GAA
+130C ; [.1F3A.0020.0002.130C] # ETHIOPIC SYLLABLE GEE
+130D ; [.1F3B.0020.0002.130D] # ETHIOPIC SYLLABLE GE
+130E ; [.1F3C.0020.0002.130E] # ETHIOPIC SYLLABLE GO
+130F ; [.1F3D.0020.0002.130F] # ETHIOPIC SYLLABLE GOA
+1310 ; [.1F3E.0020.0002.1310] # ETHIOPIC SYLLABLE GWA
+1312 ; [.1F3F.0020.0002.1312] # ETHIOPIC SYLLABLE GWI
+1313 ; [.1F40.0020.0002.1313] # ETHIOPIC SYLLABLE GWAA
+1314 ; [.1F41.0020.0002.1314] # ETHIOPIC SYLLABLE GWEE
+1315 ; [.1F42.0020.0002.1315] # ETHIOPIC SYLLABLE GWE
+1318 ; [.1F43.0020.0002.1318] # ETHIOPIC SYLLABLE GGA
+1319 ; [.1F44.0020.0002.1319] # ETHIOPIC SYLLABLE GGU
+131A ; [.1F45.0020.0002.131A] # ETHIOPIC SYLLABLE GGI
+131B ; [.1F46.0020.0002.131B] # ETHIOPIC SYLLABLE GGAA
+131C ; [.1F47.0020.0002.131C] # ETHIOPIC SYLLABLE GGEE
+131D ; [.1F48.0020.0002.131D] # ETHIOPIC SYLLABLE GGE
+131E ; [.1F49.0020.0002.131E] # ETHIOPIC SYLLABLE GGO
+131F ; [.1F4A.0020.0002.131F] # ETHIOPIC SYLLABLE GGWAA
+2D93 ; [.1F4B.0020.0002.2D93] # ETHIOPIC SYLLABLE GGWA
+2D94 ; [.1F4C.0020.0002.2D94] # ETHIOPIC SYLLABLE GGWI
+2D95 ; [.1F4D.0020.0002.2D95] # ETHIOPIC SYLLABLE GGWEE
+2D96 ; [.1F4E.0020.0002.2D96] # ETHIOPIC SYLLABLE GGWE
+1320 ; [.1F4F.0020.0002.1320] # ETHIOPIC SYLLABLE THA
+1321 ; [.1F50.0020.0002.1321] # ETHIOPIC SYLLABLE THU
+1322 ; [.1F51.0020.0002.1322] # ETHIOPIC SYLLABLE THI
+1323 ; [.1F52.0020.0002.1323] # ETHIOPIC SYLLABLE THAA
+1324 ; [.1F53.0020.0002.1324] # ETHIOPIC SYLLABLE THEE
+1325 ; [.1F54.0020.0002.1325] # ETHIOPIC SYLLABLE THE
+1326 ; [.1F55.0020.0002.1326] # ETHIOPIC SYLLABLE THO
+1327 ; [.1F56.0020.0002.1327] # ETHIOPIC SYLLABLE THWA
+2D8F ; [.1F57.0020.0002.2D8F] # ETHIOPIC SYLLABLE THOA
+1328 ; [.1F58.0020.0002.1328] # ETHIOPIC SYLLABLE CHA
+1329 ; [.1F59.0020.0002.1329] # ETHIOPIC SYLLABLE CHU
+132A ; [.1F5A.0020.0002.132A] # ETHIOPIC SYLLABLE CHI
+132B ; [.1F5B.0020.0002.132B] # ETHIOPIC SYLLABLE CHAA
+132C ; [.1F5C.0020.0002.132C] # ETHIOPIC SYLLABLE CHEE
+132D ; [.1F5D.0020.0002.132D] # ETHIOPIC SYLLABLE CHE
+132E ; [.1F5E.0020.0002.132E] # ETHIOPIC SYLLABLE CHO
+132F ; [.1F5F.0020.0002.132F] # ETHIOPIC SYLLABLE CHWA
+2D90 ; [.1F60.0020.0002.2D90] # ETHIOPIC SYLLABLE CHOA
+AB20 ; [.1F61.0020.0002.AB20] # ETHIOPIC SYLLABLE CCHHA
+AB21 ; [.1F62.0020.0002.AB21] # ETHIOPIC SYLLABLE CCHHU
+AB22 ; [.1F63.0020.0002.AB22] # ETHIOPIC SYLLABLE CCHHI
+AB23 ; [.1F64.0020.0002.AB23] # ETHIOPIC SYLLABLE CCHHAA
+AB24 ; [.1F65.0020.0002.AB24] # ETHIOPIC SYLLABLE CCHHEE
+AB25 ; [.1F66.0020.0002.AB25] # ETHIOPIC SYLLABLE CCHHE
+AB26 ; [.1F67.0020.0002.AB26] # ETHIOPIC SYLLABLE CCHHO
+1330 ; [.1F68.0020.0002.1330] # ETHIOPIC SYLLABLE PHA
+1331 ; [.1F69.0020.0002.1331] # ETHIOPIC SYLLABLE PHU
+1332 ; [.1F6A.0020.0002.1332] # ETHIOPIC SYLLABLE PHI
+1333 ; [.1F6B.0020.0002.1333] # ETHIOPIC SYLLABLE PHAA
+1334 ; [.1F6C.0020.0002.1334] # ETHIOPIC SYLLABLE PHEE
+1335 ; [.1F6D.0020.0002.1335] # ETHIOPIC SYLLABLE PHE
+1336 ; [.1F6E.0020.0002.1336] # ETHIOPIC SYLLABLE PHO
+1337 ; [.1F6F.0020.0002.1337] # ETHIOPIC SYLLABLE PHWA
+2D91 ; [.1F70.0020.0002.2D91] # ETHIOPIC SYLLABLE PHOA
+1338 ; [.1F71.0020.0002.1338] # ETHIOPIC SYLLABLE TSA
+1339 ; [.1F72.0020.0002.1339] # ETHIOPIC SYLLABLE TSU
+133A ; [.1F73.0020.0002.133A] # ETHIOPIC SYLLABLE TSI
+133B ; [.1F74.0020.0002.133B] # ETHIOPIC SYLLABLE TSAA
+133C ; [.1F75.0020.0002.133C] # ETHIOPIC SYLLABLE TSEE
+133D ; [.1F76.0020.0002.133D] # ETHIOPIC SYLLABLE TSE
+133E ; [.1F77.0020.0002.133E] # ETHIOPIC SYLLABLE TSO
+133F ; [.1F78.0020.0002.133F] # ETHIOPIC SYLLABLE TSWA
+AB28 ; [.1F79.0020.0002.AB28] # ETHIOPIC SYLLABLE BBA
+AB29 ; [.1F7A.0020.0002.AB29] # ETHIOPIC SYLLABLE BBU
+AB2A ; [.1F7B.0020.0002.AB2A] # ETHIOPIC SYLLABLE BBI
+AB2B ; [.1F7C.0020.0002.AB2B] # ETHIOPIC SYLLABLE BBAA
+AB2C ; [.1F7D.0020.0002.AB2C] # ETHIOPIC SYLLABLE BBEE
+AB2D ; [.1F7E.0020.0002.AB2D] # ETHIOPIC SYLLABLE BBE
+AB2E ; [.1F7F.0020.0002.AB2E] # ETHIOPIC SYLLABLE BBO
+1340 ; [.1F80.0020.0002.1340] # ETHIOPIC SYLLABLE TZA
+1341 ; [.1F81.0020.0002.1341] # ETHIOPIC SYLLABLE TZU
+1342 ; [.1F82.0020.0002.1342] # ETHIOPIC SYLLABLE TZI
+1343 ; [.1F83.0020.0002.1343] # ETHIOPIC SYLLABLE TZAA
+1344 ; [.1F84.0020.0002.1344] # ETHIOPIC SYLLABLE TZEE
+1345 ; [.1F85.0020.0002.1345] # ETHIOPIC SYLLABLE TZE
+1346 ; [.1F86.0020.0002.1346] # ETHIOPIC SYLLABLE TZO
+1347 ; [.1F87.0020.0002.1347] # ETHIOPIC SYLLABLE TZOA
+1348 ; [.1F88.0020.0002.1348] # ETHIOPIC SYLLABLE FA
+1349 ; [.1F89.0020.0002.1349] # ETHIOPIC SYLLABLE FU
+134A ; [.1F8A.0020.0002.134A] # ETHIOPIC SYLLABLE FI
+134B ; [.1F8B.0020.0002.134B] # ETHIOPIC SYLLABLE FAA
+134C ; [.1F8C.0020.0002.134C] # ETHIOPIC SYLLABLE FEE
+134D ; [.1F8D.0020.0002.134D] # ETHIOPIC SYLLABLE FE
+134E ; [.1F8E.0020.0002.134E] # ETHIOPIC SYLLABLE FO
+134F ; [.1F8F.0020.0002.134F] # ETHIOPIC SYLLABLE FWA
+1388 ; [.1F90.0020.0002.1388] # ETHIOPIC SYLLABLE SEBATBEIT FWA
+1389 ; [.1F91.0020.0002.1389] # ETHIOPIC SYLLABLE FWI
+138A ; [.1F92.0020.0002.138A] # ETHIOPIC SYLLABLE FWEE
+138B ; [.1F93.0020.0002.138B] # ETHIOPIC SYLLABLE FWE
+1350 ; [.1F94.0020.0002.1350] # ETHIOPIC SYLLABLE PA
+1351 ; [.1F95.0020.0002.1351] # ETHIOPIC SYLLABLE PU
+1352 ; [.1F96.0020.0002.1352] # ETHIOPIC SYLLABLE PI
+1353 ; [.1F97.0020.0002.1353] # ETHIOPIC SYLLABLE PAA
+1354 ; [.1F98.0020.0002.1354] # ETHIOPIC SYLLABLE PEE
+1355 ; [.1F99.0020.0002.1355] # ETHIOPIC SYLLABLE PE
+1356 ; [.1F9A.0020.0002.1356] # ETHIOPIC SYLLABLE PO
+1357 ; [.1F9B.0020.0002.1357] # ETHIOPIC SYLLABLE PWA
+138C ; [.1F9C.0020.0002.138C] # ETHIOPIC SYLLABLE SEBATBEIT PWA
+138D ; [.1F9D.0020.0002.138D] # ETHIOPIC SYLLABLE PWI
+138E ; [.1F9E.0020.0002.138E] # ETHIOPIC SYLLABLE PWEE
+138F ; [.1F9F.0020.0002.138F] # ETHIOPIC SYLLABLE PWE
+2D92 ; [.1FA0.0020.0002.2D92] # ETHIOPIC SYLLABLE POA
+1358 ; [.1FA1.0020.0002.1358] # ETHIOPIC SYLLABLE RYA
+1359 ; [.1FA2.0020.0002.1359] # ETHIOPIC SYLLABLE MYA
+135A ; [.1FA3.0020.0002.135A] # ETHIOPIC SYLLABLE FYA
+2DA0 ; [.1FA4.0020.0002.2DA0] # ETHIOPIC SYLLABLE SSA
+2DA1 ; [.1FA5.0020.0002.2DA1] # ETHIOPIC SYLLABLE SSU
+2DA2 ; [.1FA6.0020.0002.2DA2] # ETHIOPIC SYLLABLE SSI
+2DA3 ; [.1FA7.0020.0002.2DA3] # ETHIOPIC SYLLABLE SSAA
+2DA4 ; [.1FA8.0020.0002.2DA4] # ETHIOPIC SYLLABLE SSEE
+2DA5 ; [.1FA9.0020.0002.2DA5] # ETHIOPIC SYLLABLE SSE
+2DA6 ; [.1FAA.0020.0002.2DA6] # ETHIOPIC SYLLABLE SSO
+2DA8 ; [.1FAB.0020.0002.2DA8] # ETHIOPIC SYLLABLE CCA
+2DA9 ; [.1FAC.0020.0002.2DA9] # ETHIOPIC SYLLABLE CCU
+2DAA ; [.1FAD.0020.0002.2DAA] # ETHIOPIC SYLLABLE CCI
+2DAB ; [.1FAE.0020.0002.2DAB] # ETHIOPIC SYLLABLE CCAA
+2DAC ; [.1FAF.0020.0002.2DAC] # ETHIOPIC SYLLABLE CCEE
+2DAD ; [.1FB0.0020.0002.2DAD] # ETHIOPIC SYLLABLE CCE
+2DAE ; [.1FB1.0020.0002.2DAE] # ETHIOPIC SYLLABLE CCO
+2DB0 ; [.1FB2.0020.0002.2DB0] # ETHIOPIC SYLLABLE ZZA
+2DB1 ; [.1FB3.0020.0002.2DB1] # ETHIOPIC SYLLABLE ZZU
+2DB2 ; [.1FB4.0020.0002.2DB2] # ETHIOPIC SYLLABLE ZZI
+2DB3 ; [.1FB5.0020.0002.2DB3] # ETHIOPIC SYLLABLE ZZAA
+2DB4 ; [.1FB6.0020.0002.2DB4] # ETHIOPIC SYLLABLE ZZEE
+2DB5 ; [.1FB7.0020.0002.2DB5] # ETHIOPIC SYLLABLE ZZE
+2DB6 ; [.1FB8.0020.0002.2DB6] # ETHIOPIC SYLLABLE ZZO
+2DB8 ; [.1FB9.0020.0002.2DB8] # ETHIOPIC SYLLABLE CCHA
+2DB9 ; [.1FBA.0020.0002.2DB9] # ETHIOPIC SYLLABLE CCHU
+2DBA ; [.1FBB.0020.0002.2DBA] # ETHIOPIC SYLLABLE CCHI
+2DBB ; [.1FBC.0020.0002.2DBB] # ETHIOPIC SYLLABLE CCHAA
+2DBC ; [.1FBD.0020.0002.2DBC] # ETHIOPIC SYLLABLE CCHEE
+2DBD ; [.1FBE.0020.0002.2DBD] # ETHIOPIC SYLLABLE CCHE
+2DBE ; [.1FBF.0020.0002.2DBE] # ETHIOPIC SYLLABLE CCHO
+2DC0 ; [.1FC0.0020.0002.2DC0] # ETHIOPIC SYLLABLE QYA
+2DC1 ; [.1FC1.0020.0002.2DC1] # ETHIOPIC SYLLABLE QYU
+2DC2 ; [.1FC2.0020.0002.2DC2] # ETHIOPIC SYLLABLE QYI
+2DC3 ; [.1FC3.0020.0002.2DC3] # ETHIOPIC SYLLABLE QYAA
+2DC4 ; [.1FC4.0020.0002.2DC4] # ETHIOPIC SYLLABLE QYEE
+2DC5 ; [.1FC5.0020.0002.2DC5] # ETHIOPIC SYLLABLE QYE
+2DC6 ; [.1FC6.0020.0002.2DC6] # ETHIOPIC SYLLABLE QYO
+2DC8 ; [.1FC7.0020.0002.2DC8] # ETHIOPIC SYLLABLE KYA
+2DC9 ; [.1FC8.0020.0002.2DC9] # ETHIOPIC SYLLABLE KYU
+2DCA ; [.1FC9.0020.0002.2DCA] # ETHIOPIC SYLLABLE KYI
+2DCB ; [.1FCA.0020.0002.2DCB] # ETHIOPIC SYLLABLE KYAA
+2DCC ; [.1FCB.0020.0002.2DCC] # ETHIOPIC SYLLABLE KYEE
+2DCD ; [.1FCC.0020.0002.2DCD] # ETHIOPIC SYLLABLE KYE
+2DCE ; [.1FCD.0020.0002.2DCE] # ETHIOPIC SYLLABLE KYO
+2DD0 ; [.1FCE.0020.0002.2DD0] # ETHIOPIC SYLLABLE XYA
+2DD1 ; [.1FCF.0020.0002.2DD1] # ETHIOPIC SYLLABLE XYU
+2DD2 ; [.1FD0.0020.0002.2DD2] # ETHIOPIC SYLLABLE XYI
+2DD3 ; [.1FD1.0020.0002.2DD3] # ETHIOPIC SYLLABLE XYAA
+2DD4 ; [.1FD2.0020.0002.2DD4] # ETHIOPIC SYLLABLE XYEE
+2DD5 ; [.1FD3.0020.0002.2DD5] # ETHIOPIC SYLLABLE XYE
+2DD6 ; [.1FD4.0020.0002.2DD6] # ETHIOPIC SYLLABLE XYO
+2DD8 ; [.1FD5.0020.0002.2DD8] # ETHIOPIC SYLLABLE GYA
+2DD9 ; [.1FD6.0020.0002.2DD9] # ETHIOPIC SYLLABLE GYU
+2DDA ; [.1FD7.0020.0002.2DDA] # ETHIOPIC SYLLABLE GYI
+2DDB ; [.1FD8.0020.0002.2DDB] # ETHIOPIC SYLLABLE GYAA
+2DDC ; [.1FD9.0020.0002.2DDC] # ETHIOPIC SYLLABLE GYEE
+2DDD ; [.1FDA.0020.0002.2DDD] # ETHIOPIC SYLLABLE GYE
+2DDE ; [.1FDB.0020.0002.2DDE] # ETHIOPIC SYLLABLE GYO
+0950 ; [.1FDC.0020.0002.0950] # DEVANAGARI OM
+0972 ; [.1FDD.0020.0002.0972] # DEVANAGARI LETTER CANDRA A
+0904 ; [.1FDE.0020.0002.0904] # DEVANAGARI LETTER SHORT A
+0905 ; [.1FDF.0020.0002.0905] # DEVANAGARI LETTER A
+0906 ; [.1FE0.0020.0002.0906] # DEVANAGARI LETTER AA
+0973 ; [.1FE1.0020.0002.0973] # DEVANAGARI LETTER OE
+0974 ; [.1FE2.0020.0002.0974] # DEVANAGARI LETTER OOE
+0975 ; [.1FE3.0020.0002.0975] # DEVANAGARI LETTER AW
+0976 ; [.1FE4.0020.0002.0976] # DEVANAGARI LETTER UE
+0977 ; [.1FE5.0020.0002.0977] # DEVANAGARI LETTER UUE
+0907 ; [.1FE6.0020.0002.0907] # DEVANAGARI LETTER I
+0908 ; [.1FE7.0020.0002.0908] # DEVANAGARI LETTER II
+0909 ; [.1FE8.0020.0002.0909] # DEVANAGARI LETTER U
+090A ; [.1FE9.0020.0002.090A] # DEVANAGARI LETTER UU
+090B ; [.1FEA.0020.0002.090B] # DEVANAGARI LETTER VOCALIC R
+0960 ; [.1FEB.0020.0002.0960] # DEVANAGARI LETTER VOCALIC RR
+090C ; [.1FEC.0020.0002.090C] # DEVANAGARI LETTER VOCALIC L
+0961 ; [.1FED.0020.0002.0961] # DEVANAGARI LETTER VOCALIC LL
+090D ; [.1FEE.0020.0002.090D] # DEVANAGARI LETTER CANDRA E
+090E ; [.1FEF.0020.0002.090E] # DEVANAGARI LETTER SHORT E
+090F ; [.1FF0.0020.0002.090F] # DEVANAGARI LETTER E
+0910 ; [.1FF1.0020.0002.0910] # DEVANAGARI LETTER AI
+0911 ; [.1FF2.0020.0002.0911] # DEVANAGARI LETTER CANDRA O
+0912 ; [.1FF3.0020.0002.0912] # DEVANAGARI LETTER SHORT O
+0913 ; [.1FF4.0020.0002.0913] # DEVANAGARI LETTER O
+0914 ; [.1FF5.0020.0002.0914] # DEVANAGARI LETTER AU
+0915 ; [.1FF6.0020.0002.0915] # DEVANAGARI LETTER KA
+0958 ; [.1FF6.0020.0002.0915][.0000.00F1.0002.093C] # DEVANAGARI LETTER QA
+0916 ; [.1FF7.0020.0002.0916] # DEVANAGARI LETTER KHA
+0959 ; [.1FF7.0020.0002.0916][.0000.00F1.0002.093C] # DEVANAGARI LETTER KHHA
+0917 ; [.1FF8.0020.0002.0917] # DEVANAGARI LETTER GA
+095A ; [.1FF8.0020.0002.0917][.0000.00F1.0002.093C] # DEVANAGARI LETTER GHHA
+097B ; [.1FF9.0020.0002.097B] # DEVANAGARI LETTER GGA
+0918 ; [.1FFA.0020.0002.0918] # DEVANAGARI LETTER GHA
+0919 ; [.1FFB.0020.0002.0919] # DEVANAGARI LETTER NGA
+091A ; [.1FFC.0020.0002.091A] # DEVANAGARI LETTER CA
+091B ; [.1FFD.0020.0002.091B] # DEVANAGARI LETTER CHA
+091C ; [.1FFE.0020.0002.091C] # DEVANAGARI LETTER JA
+095B ; [.1FFE.0020.0002.091C][.0000.00F1.0002.093C] # DEVANAGARI LETTER ZA
+0979 ; [.1FFF.0020.0002.0979] # DEVANAGARI LETTER ZHA
+097C ; [.2000.0020.0002.097C] # DEVANAGARI LETTER JJA
+091D ; [.2001.0020.0002.091D] # DEVANAGARI LETTER JHA
+091E ; [.2002.0020.0002.091E] # DEVANAGARI LETTER NYA
+091F ; [.2003.0020.0002.091F] # DEVANAGARI LETTER TTA
+0920 ; [.2004.0020.0002.0920] # DEVANAGARI LETTER TTHA
+0921 ; [.2005.0020.0002.0921] # DEVANAGARI LETTER DDA
+095C ; [.2005.0020.0002.0921][.0000.00F1.0002.093C] # DEVANAGARI LETTER DDDHA
+097E ; [.2006.0020.0002.097E] # DEVANAGARI LETTER DDDA
+0922 ; [.2007.0020.0002.0922] # DEVANAGARI LETTER DDHA
+095D ; [.2007.0020.0002.0922][.0000.00F1.0002.093C] # DEVANAGARI LETTER RHA
+0923 ; [.2008.0020.0002.0923] # DEVANAGARI LETTER NNA
+0924 ; [.2009.0020.0002.0924] # DEVANAGARI LETTER TA
+0925 ; [.200A.0020.0002.0925] # DEVANAGARI LETTER THA
+0926 ; [.200B.0020.0002.0926] # DEVANAGARI LETTER DA
+0927 ; [.200C.0020.0002.0927] # DEVANAGARI LETTER DHA
+0928 ; [.200D.0020.0002.0928] # DEVANAGARI LETTER NA
+0929 ; [.200D.0020.0002.0928][.0000.00F1.0002.093C] # DEVANAGARI LETTER NNNA
+092A ; [.200E.0020.0002.092A] # DEVANAGARI LETTER PA
+092B ; [.200F.0020.0002.092B] # DEVANAGARI LETTER PHA
+095E ; [.200F.0020.0002.092B][.0000.00F1.0002.093C] # DEVANAGARI LETTER FA
+092C ; [.2010.0020.0002.092C] # DEVANAGARI LETTER BA
+097F ; [.2011.0020.0002.097F] # DEVANAGARI LETTER BBA
+092D ; [.2012.0020.0002.092D] # DEVANAGARI LETTER BHA
+092E ; [.2013.0020.0002.092E] # DEVANAGARI LETTER MA
+092F ; [.2014.0020.0002.092F] # DEVANAGARI LETTER YA
+095F ; [.2014.0020.0002.092F][.0000.00F1.0002.093C] # DEVANAGARI LETTER YYA
+097A ; [.2015.0020.0002.097A] # DEVANAGARI LETTER HEAVY YA
+0930 ; [.2016.0020.0002.0930] # DEVANAGARI LETTER RA
+0931 ; [.2016.0020.0002.0930][.0000.00F1.0002.093C] # DEVANAGARI LETTER RRA
+0932 ; [.2017.0020.0002.0932] # DEVANAGARI LETTER LA
+0933 ; [.2018.0020.0002.0933] # DEVANAGARI LETTER LLA
+0934 ; [.2018.0020.0002.0933][.0000.00F1.0002.093C] # DEVANAGARI LETTER LLLA
+0935 ; [.2019.0020.0002.0935] # DEVANAGARI LETTER VA
+0936 ; [.201A.0020.0002.0936] # DEVANAGARI LETTER SHA
+0937 ; [.201B.0020.0002.0937] # DEVANAGARI LETTER SSA
+0938 ; [.201C.0020.0002.0938] # DEVANAGARI LETTER SA
+0939 ; [.201D.0020.0002.0939] # DEVANAGARI LETTER HA
+093D ; [.201E.0020.0002.093D] # DEVANAGARI SIGN AVAGRAHA
+097D ; [.201F.0020.0002.097D] # DEVANAGARI LETTER GLOTTAL STOP
+1CE9 ; [.2020.0020.0002.1CE9] # VEDIC SIGN ANUSVARA ANTARGOMUKHA
+1CEA ; [.2020.0020.0004.1CEA] # VEDIC SIGN ANUSVARA BAHIRGOMUKHA
+1CEB ; [.2020.0020.0004.1CEB] # VEDIC SIGN ANUSVARA VAMAGOMUKHA
+1CEC ; [.2020.0020.0004.1CEC] # VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
+1CEE ; [.2020.0020.0004.1CEE] # VEDIC SIGN HEXIFORM LONG ANUSVARA
+1CEF ; [.2020.0020.0004.1CEF] # VEDIC SIGN LONG ANUSVARA
+1CF0 ; [.2020.0020.0004.1CF0] # VEDIC SIGN RTHANG LONG ANUSVARA
+1CF1 ; [.2020.0020.0004.1CF1] # VEDIC SIGN ANUSVARA UBHAYATO MUKHA
+1CF5 ; [.2021.0020.0002.1CF5] # VEDIC SIGN JIHVAMULIYA
+1CF6 ; [.2022.0020.0002.1CF6] # VEDIC SIGN UPADHMANIYA
+A8F2 ; [.2023.0020.0002.A8F2] # DEVANAGARI SIGN SPACING CANDRABINDU
+A8F3 ; [.2023.0020.0004.A8F3] # DEVANAGARI SIGN CANDRABINDU VIRAMA
+A8F4 ; [.2023.0020.0004.A8F4] # DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA
+A8F5 ; [.2023.0020.0004.A8F5] # DEVANAGARI SIGN CANDRABINDU TWO
+A8F6 ; [.2023.0020.0004.A8F6] # DEVANAGARI SIGN CANDRABINDU THREE
+A8F7 ; [.2023.0020.0004.A8F7] # DEVANAGARI SIGN CANDRABINDU AVAGRAHA
+A8FB ; [.2024.0020.0002.A8FB] # DEVANAGARI HEADSTROKE
+093E ; [.2025.0020.0002.093E] # DEVANAGARI VOWEL SIGN AA
+093A ; [.2026.0020.0002.093A] # DEVANAGARI VOWEL SIGN OE
+093B ; [.2027.0020.0002.093B] # DEVANAGARI VOWEL SIGN OOE
+094F ; [.2028.0020.0002.094F] # DEVANAGARI VOWEL SIGN AW
+0956 ; [.2029.0020.0002.0956] # DEVANAGARI VOWEL SIGN UE
+0957 ; [.202A.0020.0002.0957] # DEVANAGARI VOWEL SIGN UUE
+093F ; [.202B.0020.0002.093F] # DEVANAGARI VOWEL SIGN I
+0940 ; [.202C.0020.0002.0940] # DEVANAGARI VOWEL SIGN II
+0941 ; [.202D.0020.0002.0941] # DEVANAGARI VOWEL SIGN U
+0942 ; [.202E.0020.0002.0942] # DEVANAGARI VOWEL SIGN UU
+0943 ; [.202F.0020.0002.0943] # DEVANAGARI VOWEL SIGN VOCALIC R
+0944 ; [.2030.0020.0002.0944] # DEVANAGARI VOWEL SIGN VOCALIC RR
+0962 ; [.2031.0020.0002.0962] # DEVANAGARI VOWEL SIGN VOCALIC L
+0963 ; [.2032.0020.0002.0963] # DEVANAGARI VOWEL SIGN VOCALIC LL
+0945 ; [.2033.0020.0002.0945] # DEVANAGARI VOWEL SIGN CANDRA E
+0955 ; [.2034.0020.0002.0955] # DEVANAGARI VOWEL SIGN CANDRA LONG E
+0946 ; [.2035.0020.0002.0946] # DEVANAGARI VOWEL SIGN SHORT E
+0947 ; [.2036.0020.0002.0947] # DEVANAGARI VOWEL SIGN E
+094E ; [.2037.0020.0002.094E] # DEVANAGARI VOWEL SIGN PRISHTHAMATRA E
+0948 ; [.2038.0020.0002.0948] # DEVANAGARI VOWEL SIGN AI
+0949 ; [.2039.0020.0002.0949] # DEVANAGARI VOWEL SIGN CANDRA O
+094A ; [.203A.0020.0002.094A] # DEVANAGARI VOWEL SIGN SHORT O
+094B ; [.203B.0020.0002.094B] # DEVANAGARI VOWEL SIGN O
+094C ; [.203C.0020.0002.094C] # DEVANAGARI VOWEL SIGN AU
+094D ; [.203D.0020.0002.094D] # DEVANAGARI SIGN VIRAMA
+0985 ; [.203E.0020.0002.0985] # BENGALI LETTER A
+0986 ; [.203F.0020.0002.0986] # BENGALI LETTER AA
+0987 ; [.2040.0020.0002.0987] # BENGALI LETTER I
+0988 ; [.2041.0020.0002.0988] # BENGALI LETTER II
+0989 ; [.2042.0020.0002.0989] # BENGALI LETTER U
+098A ; [.2043.0020.0002.098A] # BENGALI LETTER UU
+098B ; [.2044.0020.0002.098B] # BENGALI LETTER VOCALIC R
+09E0 ; [.2045.0020.0002.09E0] # BENGALI LETTER VOCALIC RR
+098C ; [.2046.0020.0002.098C] # BENGALI LETTER VOCALIC L
+09E1 ; [.2047.0020.0002.09E1] # BENGALI LETTER VOCALIC LL
+098F ; [.2048.0020.0002.098F] # BENGALI LETTER E
+0990 ; [.2049.0020.0002.0990] # BENGALI LETTER AI
+0993 ; [.204A.0020.0002.0993] # BENGALI LETTER O
+0994 ; [.204B.0020.0002.0994] # BENGALI LETTER AU
+0995 ; [.204C.0020.0002.0995] # BENGALI LETTER KA
+0996 ; [.204D.0020.0002.0996] # BENGALI LETTER KHA
+0997 ; [.204E.0020.0002.0997] # BENGALI LETTER GA
+0998 ; [.204F.0020.0002.0998] # BENGALI LETTER GHA
+0999 ; [.2050.0020.0002.0999] # BENGALI LETTER NGA
+099A ; [.2051.0020.0002.099A] # BENGALI LETTER CA
+099B ; [.2052.0020.0002.099B] # BENGALI LETTER CHA
+099C ; [.2053.0020.0002.099C] # BENGALI LETTER JA
+099D ; [.2054.0020.0002.099D] # BENGALI LETTER JHA
+099E ; [.2055.0020.0002.099E] # BENGALI LETTER NYA
+099F ; [.2056.0020.0002.099F] # BENGALI LETTER TTA
+09A0 ; [.2057.0020.0002.09A0] # BENGALI LETTER TTHA
+09A1 ; [.2058.0020.0002.09A1] # BENGALI LETTER DDA
+09DC ; [.2058.0020.0002.09A1][.0000.00F1.0002.093C] # BENGALI LETTER RRA
+09A2 ; [.2059.0020.0002.09A2] # BENGALI LETTER DDHA
+09DD ; [.2059.0020.0002.09A2][.0000.00F1.0002.093C] # BENGALI LETTER RHA
+09A3 ; [.205A.0020.0002.09A3] # BENGALI LETTER NNA
+09A4 ; [.205B.0020.0002.09A4] # BENGALI LETTER TA
+09CE ; [.205B.0020.0004.09CE][.207C.0020.0004.09CE] # BENGALI LETTER KHANDA TA
+09A5 ; [.205C.0020.0002.09A5] # BENGALI LETTER THA
+09A6 ; [.205D.0020.0002.09A6] # BENGALI LETTER DA
+09A7 ; [.205E.0020.0002.09A7] # BENGALI LETTER DHA
+09A8 ; [.205F.0020.0002.09A8] # BENGALI LETTER NA
+09AA ; [.2060.0020.0002.09AA] # BENGALI LETTER PA
+09AB ; [.2061.0020.0002.09AB] # BENGALI LETTER PHA
+09AC ; [.2062.0020.0002.09AC] # BENGALI LETTER BA
+09AD ; [.2063.0020.0002.09AD] # BENGALI LETTER BHA
+09AE ; [.2064.0020.0002.09AE] # BENGALI LETTER MA
+09AF ; [.2065.0020.0002.09AF] # BENGALI LETTER YA
+09DF ; [.2065.0020.0002.09AF][.0000.00F1.0002.093C] # BENGALI LETTER YYA
+09B0 ; [.2066.0020.0002.09B0] # BENGALI LETTER RA
+09F0 ; [.2067.0020.0002.09F0] # BENGALI LETTER RA WITH MIDDLE DIAGONAL
+09B2 ; [.2068.0020.0002.09B2] # BENGALI LETTER LA
+09F1 ; [.2069.0020.0002.09F1] # BENGALI LETTER RA WITH LOWER DIAGONAL
+09B6 ; [.206A.0020.0002.09B6] # BENGALI LETTER SHA
+09B7 ; [.206B.0020.0002.09B7] # BENGALI LETTER SSA
+09B8 ; [.206C.0020.0002.09B8] # BENGALI LETTER SA
+09B9 ; [.206D.0020.0002.09B9] # BENGALI LETTER HA
+09BD ; [.206E.0020.0002.09BD] # BENGALI SIGN AVAGRAHA
+09BE ; [.206F.0020.0002.09BE] # BENGALI VOWEL SIGN AA
+09BF ; [.2070.0020.0002.09BF] # BENGALI VOWEL SIGN I
+09C0 ; [.2071.0020.0002.09C0] # BENGALI VOWEL SIGN II
+09C1 ; [.2072.0020.0002.09C1] # BENGALI VOWEL SIGN U
+09C2 ; [.2073.0020.0002.09C2] # BENGALI VOWEL SIGN UU
+09C3 ; [.2074.0020.0002.09C3] # BENGALI VOWEL SIGN VOCALIC R
+09C4 ; [.2075.0020.0002.09C4] # BENGALI VOWEL SIGN VOCALIC RR
+09E2 ; [.2076.0020.0002.09E2] # BENGALI VOWEL SIGN VOCALIC L
+09E3 ; [.2077.0020.0002.09E3] # BENGALI VOWEL SIGN VOCALIC LL
+09C7 ; [.2078.0020.0002.09C7] # BENGALI VOWEL SIGN E
+09C8 ; [.2079.0020.0002.09C8] # BENGALI VOWEL SIGN AI
+09CB ; [.207A.0020.0002.09CB] # BENGALI VOWEL SIGN O
+09C7 09BE ; [.207A.0020.0002.09CB] # BENGALI VOWEL SIGN O
+09CC ; [.207B.0020.0002.09CC] # BENGALI VOWEL SIGN AU
+09C7 09D7 ; [.207B.0020.0002.09CC] # BENGALI VOWEL SIGN AU
+09CD ; [.207C.0020.0002.09CD] # BENGALI SIGN VIRAMA
+09D7 ; [.207D.0020.0002.09D7] # BENGALI AU LENGTH MARK
+0A74 ; [.207E.0020.0002.0A74] # GURMUKHI EK ONKAR
+0A73 ; [.207F.0020.0002.0A73] # GURMUKHI URA
+0A09 ; [.2080.0020.0002.0A09] # GURMUKHI LETTER U
+0A0A ; [.2081.0020.0002.0A0A] # GURMUKHI LETTER UU
+0A13 ; [.2082.0020.0002.0A13] # GURMUKHI LETTER OO
+0A05 ; [.2083.0020.0002.0A05] # GURMUKHI LETTER A
+0A06 ; [.2084.0020.0002.0A06] # GURMUKHI LETTER AA
+0A10 ; [.2085.0020.0002.0A10] # GURMUKHI LETTER AI
+0A14 ; [.2086.0020.0002.0A14] # GURMUKHI LETTER AU
+0A72 ; [.2087.0020.0002.0A72] # GURMUKHI IRI
+0A07 ; [.2088.0020.0002.0A07] # GURMUKHI LETTER I
+0A08 ; [.2089.0020.0002.0A08] # GURMUKHI LETTER II
+0A0F ; [.208A.0020.0002.0A0F] # GURMUKHI LETTER EE
+0A38 ; [.208B.0020.0002.0A38] # GURMUKHI LETTER SA
+0A36 ; [.208B.0020.0002.0A38][.0000.00F1.0002.093C] # GURMUKHI LETTER SHA
+0A39 ; [.208C.0020.0002.0A39] # GURMUKHI LETTER HA
+0A51 ; [.208D.0020.0002.0A51] # GURMUKHI SIGN UDAAT
+0A15 ; [.208E.0020.0002.0A15] # GURMUKHI LETTER KA
+0A16 ; [.208F.0020.0002.0A16] # GURMUKHI LETTER KHA
+0A59 ; [.208F.0020.0002.0A16][.0000.00F1.0002.093C] # GURMUKHI LETTER KHHA
+0A17 ; [.2090.0020.0002.0A17] # GURMUKHI LETTER GA
+0A5A ; [.2090.0020.0002.0A17][.0000.00F1.0002.093C] # GURMUKHI LETTER GHHA
+0A18 ; [.2091.0020.0002.0A18] # GURMUKHI LETTER GHA
+0A19 ; [.2092.0020.0002.0A19] # GURMUKHI LETTER NGA
+0A1A ; [.2093.0020.0002.0A1A] # GURMUKHI LETTER CA
+0A1B ; [.2094.0020.0002.0A1B] # GURMUKHI LETTER CHA
+0A1C ; [.2095.0020.0002.0A1C] # GURMUKHI LETTER JA
+0A5B ; [.2095.0020.0002.0A1C][.0000.00F1.0002.093C] # GURMUKHI LETTER ZA
+0A1D ; [.2096.0020.0002.0A1D] # GURMUKHI LETTER JHA
+0A1E ; [.2097.0020.0002.0A1E] # GURMUKHI LETTER NYA
+0A1F ; [.2098.0020.0002.0A1F] # GURMUKHI LETTER TTA
+0A20 ; [.2099.0020.0002.0A20] # GURMUKHI LETTER TTHA
+0A21 ; [.209A.0020.0002.0A21] # GURMUKHI LETTER DDA
+0A22 ; [.209B.0020.0002.0A22] # GURMUKHI LETTER DDHA
+0A23 ; [.209C.0020.0002.0A23] # GURMUKHI LETTER NNA
+0A24 ; [.209D.0020.0002.0A24] # GURMUKHI LETTER TA
+0A25 ; [.209E.0020.0002.0A25] # GURMUKHI LETTER THA
+0A26 ; [.209F.0020.0002.0A26] # GURMUKHI LETTER DA
+0A27 ; [.20A0.0020.0002.0A27] # GURMUKHI LETTER DHA
+0A28 ; [.20A1.0020.0002.0A28] # GURMUKHI LETTER NA
+0A2A ; [.20A2.0020.0002.0A2A] # GURMUKHI LETTER PA
+0A2B ; [.20A3.0020.0002.0A2B] # GURMUKHI LETTER PHA
+0A5E ; [.20A3.0020.0002.0A2B][.0000.00F1.0002.093C] # GURMUKHI LETTER FA
+0A2C ; [.20A4.0020.0002.0A2C] # GURMUKHI LETTER BA
+0A2D ; [.20A5.0020.0002.0A2D] # GURMUKHI LETTER BHA
+0A2E ; [.20A6.0020.0002.0A2E] # GURMUKHI LETTER MA
+0A2F ; [.20A7.0020.0002.0A2F] # GURMUKHI LETTER YA
+0A75 ; [.20A8.0020.0002.0A75] # GURMUKHI SIGN YAKASH
+0A30 ; [.20A9.0020.0002.0A30] # GURMUKHI LETTER RA
+0A32 ; [.20AA.0020.0002.0A32] # GURMUKHI LETTER LA
+0A33 ; [.20AA.0020.0002.0A32][.0000.00F1.0002.093C] # GURMUKHI LETTER LLA
+0A35 ; [.20AB.0020.0002.0A35] # GURMUKHI LETTER VA
+0A5C ; [.20AC.0020.0002.0A5C] # GURMUKHI LETTER RRA
+0A3E ; [.20AD.0020.0002.0A3E] # GURMUKHI VOWEL SIGN AA
+0A3F ; [.20AE.0020.0002.0A3F] # GURMUKHI VOWEL SIGN I
+0A40 ; [.20AF.0020.0002.0A40] # GURMUKHI VOWEL SIGN II
+0A41 ; [.20B0.0020.0002.0A41] # GURMUKHI VOWEL SIGN U
+0A42 ; [.20B1.0020.0002.0A42] # GURMUKHI VOWEL SIGN UU
+0A47 ; [.20B2.0020.0002.0A47] # GURMUKHI VOWEL SIGN EE
+0A48 ; [.20B3.0020.0002.0A48] # GURMUKHI VOWEL SIGN AI
+0A4B ; [.20B4.0020.0002.0A4B] # GURMUKHI VOWEL SIGN OO
+0A4C ; [.20B5.0020.0002.0A4C] # GURMUKHI VOWEL SIGN AU
+0A4D ; [.20B6.0020.0002.0A4D] # GURMUKHI SIGN VIRAMA
+0AD0 ; [.20B7.0020.0002.0AD0] # GUJARATI OM
+0A85 ; [.20B8.0020.0002.0A85] # GUJARATI LETTER A
+0A86 ; [.20B9.0020.0002.0A86] # GUJARATI LETTER AA
+0A87 ; [.20BA.0020.0002.0A87] # GUJARATI LETTER I
+0A88 ; [.20BB.0020.0002.0A88] # GUJARATI LETTER II
+0A89 ; [.20BC.0020.0002.0A89] # GUJARATI LETTER U
+0A8A ; [.20BD.0020.0002.0A8A] # GUJARATI LETTER UU
+0A8B ; [.20BE.0020.0002.0A8B] # GUJARATI LETTER VOCALIC R
+0AE0 ; [.20BF.0020.0002.0AE0] # GUJARATI LETTER VOCALIC RR
+0A8C ; [.20C0.0020.0002.0A8C] # GUJARATI LETTER VOCALIC L
+0AE1 ; [.20C1.0020.0002.0AE1] # GUJARATI LETTER VOCALIC LL
+0A8D ; [.20C2.0020.0002.0A8D] # GUJARATI VOWEL CANDRA E
+0A8F ; [.20C3.0020.0002.0A8F] # GUJARATI LETTER E
+0A90 ; [.20C4.0020.0002.0A90] # GUJARATI LETTER AI
+0A91 ; [.20C5.0020.0002.0A91] # GUJARATI VOWEL CANDRA O
+0A93 ; [.20C6.0020.0002.0A93] # GUJARATI LETTER O
+0A94 ; [.20C7.0020.0002.0A94] # GUJARATI LETTER AU
+0A95 ; [.20C8.0020.0002.0A95] # GUJARATI LETTER KA
+0A96 ; [.20C9.0020.0002.0A96] # GUJARATI LETTER KHA
+0A97 ; [.20CA.0020.0002.0A97] # GUJARATI LETTER GA
+0A98 ; [.20CB.0020.0002.0A98] # GUJARATI LETTER GHA
+0A99 ; [.20CC.0020.0002.0A99] # GUJARATI LETTER NGA
+0A9A ; [.20CD.0020.0002.0A9A] # GUJARATI LETTER CA
+0A9B ; [.20CE.0020.0002.0A9B] # GUJARATI LETTER CHA
+0A9C ; [.20CF.0020.0002.0A9C] # GUJARATI LETTER JA
+0A9D ; [.20D0.0020.0002.0A9D] # GUJARATI LETTER JHA
+0A9E ; [.20D1.0020.0002.0A9E] # GUJARATI LETTER NYA
+0A9F ; [.20D2.0020.0002.0A9F] # GUJARATI LETTER TTA
+0AA0 ; [.20D3.0020.0002.0AA0] # GUJARATI LETTER TTHA
+0AA1 ; [.20D4.0020.0002.0AA1] # GUJARATI LETTER DDA
+0AA2 ; [.20D5.0020.0002.0AA2] # GUJARATI LETTER DDHA
+0AA3 ; [.20D6.0020.0002.0AA3] # GUJARATI LETTER NNA
+0AA4 ; [.20D7.0020.0002.0AA4] # GUJARATI LETTER TA
+0AA5 ; [.20D8.0020.0002.0AA5] # GUJARATI LETTER THA
+0AA6 ; [.20D9.0020.0002.0AA6] # GUJARATI LETTER DA
+0AA7 ; [.20DA.0020.0002.0AA7] # GUJARATI LETTER DHA
+0AA8 ; [.20DB.0020.0002.0AA8] # GUJARATI LETTER NA
+0AAA ; [.20DC.0020.0002.0AAA] # GUJARATI LETTER PA
+0AAB ; [.20DD.0020.0002.0AAB] # GUJARATI LETTER PHA
+0AAC ; [.20DE.0020.0002.0AAC] # GUJARATI LETTER BA
+0AAD ; [.20DF.0020.0002.0AAD] # GUJARATI LETTER BHA
+0AAE ; [.20E0.0020.0002.0AAE] # GUJARATI LETTER MA
+0AAF ; [.20E1.0020.0002.0AAF] # GUJARATI LETTER YA
+0AB0 ; [.20E2.0020.0002.0AB0] # GUJARATI LETTER RA
+0AB2 ; [.20E3.0020.0002.0AB2] # GUJARATI LETTER LA
+0AB5 ; [.20E4.0020.0002.0AB5] # GUJARATI LETTER VA
+0AB6 ; [.20E5.0020.0002.0AB6] # GUJARATI LETTER SHA
+0AB7 ; [.20E6.0020.0002.0AB7] # GUJARATI LETTER SSA
+0AB8 ; [.20E7.0020.0002.0AB8] # GUJARATI LETTER SA
+0AB9 ; [.20E8.0020.0002.0AB9] # GUJARATI LETTER HA
+0AB3 ; [.20E9.0020.0002.0AB3] # GUJARATI LETTER LLA
+0ABD ; [.20EA.0020.0002.0ABD] # GUJARATI SIGN AVAGRAHA
+0ABE ; [.20EB.0020.0002.0ABE] # GUJARATI VOWEL SIGN AA
+0ABF ; [.20EC.0020.0002.0ABF] # GUJARATI VOWEL SIGN I
+0AC0 ; [.20ED.0020.0002.0AC0] # GUJARATI VOWEL SIGN II
+0AC1 ; [.20EE.0020.0002.0AC1] # GUJARATI VOWEL SIGN U
+0AC2 ; [.20EF.0020.0002.0AC2] # GUJARATI VOWEL SIGN UU
+0AC3 ; [.20F0.0020.0002.0AC3] # GUJARATI VOWEL SIGN VOCALIC R
+0AC4 ; [.20F1.0020.0002.0AC4] # GUJARATI VOWEL SIGN VOCALIC RR
+0AE2 ; [.20F2.0020.0002.0AE2] # GUJARATI VOWEL SIGN VOCALIC L
+0AE3 ; [.20F3.0020.0002.0AE3] # GUJARATI VOWEL SIGN VOCALIC LL
+0AC5 ; [.20F4.0020.0002.0AC5] # GUJARATI VOWEL SIGN CANDRA E
+0AC7 ; [.20F5.0020.0002.0AC7] # GUJARATI VOWEL SIGN E
+0AC8 ; [.20F6.0020.0002.0AC8] # GUJARATI VOWEL SIGN AI
+0AC9 ; [.20F7.0020.0002.0AC9] # GUJARATI VOWEL SIGN CANDRA O
+0ACB ; [.20F8.0020.0002.0ACB] # GUJARATI VOWEL SIGN O
+0ACC ; [.20F9.0020.0002.0ACC] # GUJARATI VOWEL SIGN AU
+0ACD ; [.20FA.0020.0002.0ACD] # GUJARATI SIGN VIRAMA
+0B05 ; [.20FB.0020.0002.0B05] # ORIYA LETTER A
+0B06 ; [.20FC.0020.0002.0B06] # ORIYA LETTER AA
+0B07 ; [.20FD.0020.0002.0B07] # ORIYA LETTER I
+0B08 ; [.20FE.0020.0002.0B08] # ORIYA LETTER II
+0B09 ; [.20FF.0020.0002.0B09] # ORIYA LETTER U
+0B0A ; [.2100.0020.0002.0B0A] # ORIYA LETTER UU
+0B0B ; [.2101.0020.0002.0B0B] # ORIYA LETTER VOCALIC R
+0B60 ; [.2102.0020.0002.0B60] # ORIYA LETTER VOCALIC RR
+0B0C ; [.2103.0020.0002.0B0C] # ORIYA LETTER VOCALIC L
+0B61 ; [.2104.0020.0002.0B61] # ORIYA LETTER VOCALIC LL
+0B0F ; [.2105.0020.0002.0B0F] # ORIYA LETTER E
+0B10 ; [.2106.0020.0002.0B10] # ORIYA LETTER AI
+0B13 ; [.2107.0020.0002.0B13] # ORIYA LETTER O
+0B14 ; [.2108.0020.0002.0B14] # ORIYA LETTER AU
+0B15 ; [.2109.0020.0002.0B15] # ORIYA LETTER KA
+0B16 ; [.210A.0020.0002.0B16] # ORIYA LETTER KHA
+0B17 ; [.210B.0020.0002.0B17] # ORIYA LETTER GA
+0B18 ; [.210C.0020.0002.0B18] # ORIYA LETTER GHA
+0B19 ; [.210D.0020.0002.0B19] # ORIYA LETTER NGA
+0B1A ; [.210E.0020.0002.0B1A] # ORIYA LETTER CA
+0B1B ; [.210F.0020.0002.0B1B] # ORIYA LETTER CHA
+0B1C ; [.2110.0020.0002.0B1C] # ORIYA LETTER JA
+0B1D ; [.2111.0020.0002.0B1D] # ORIYA LETTER JHA
+0B1E ; [.2112.0020.0002.0B1E] # ORIYA LETTER NYA
+0B1F ; [.2113.0020.0002.0B1F] # ORIYA LETTER TTA
+0B20 ; [.2114.0020.0002.0B20] # ORIYA LETTER TTHA
+0B21 ; [.2115.0020.0002.0B21] # ORIYA LETTER DDA
+0B5C ; [.2115.0020.0002.0B21][.0000.00F1.0002.093C] # ORIYA LETTER RRA
+0B22 ; [.2116.0020.0002.0B22] # ORIYA LETTER DDHA
+0B5D ; [.2116.0020.0002.0B22][.0000.00F1.0002.093C] # ORIYA LETTER RHA
+0B23 ; [.2117.0020.0002.0B23] # ORIYA LETTER NNA
+0B24 ; [.2118.0020.0002.0B24] # ORIYA LETTER TA
+0B25 ; [.2119.0020.0002.0B25] # ORIYA LETTER THA
+0B26 ; [.211A.0020.0002.0B26] # ORIYA LETTER DA
+0B27 ; [.211B.0020.0002.0B27] # ORIYA LETTER DHA
+0B28 ; [.211C.0020.0002.0B28] # ORIYA LETTER NA
+0B2A ; [.211D.0020.0002.0B2A] # ORIYA LETTER PA
+0B2B ; [.211E.0020.0002.0B2B] # ORIYA LETTER PHA
+0B2C ; [.211F.0020.0002.0B2C] # ORIYA LETTER BA
+0B2D ; [.2120.0020.0002.0B2D] # ORIYA LETTER BHA
+0B2E ; [.2121.0020.0002.0B2E] # ORIYA LETTER MA
+0B2F ; [.2122.0020.0002.0B2F] # ORIYA LETTER YA
+0B5F ; [.2123.0020.0002.0B5F] # ORIYA LETTER YYA
+0B30 ; [.2124.0020.0002.0B30] # ORIYA LETTER RA
+0B32 ; [.2125.0020.0002.0B32] # ORIYA LETTER LA
+0B33 ; [.2126.0020.0002.0B33] # ORIYA LETTER LLA
+0B35 ; [.2127.0020.0002.0B35] # ORIYA LETTER VA
+0B71 ; [.2128.0020.0002.0B71] # ORIYA LETTER WA
+0B36 ; [.2129.0020.0002.0B36] # ORIYA LETTER SHA
+0B37 ; [.212A.0020.0002.0B37] # ORIYA LETTER SSA
+0B38 ; [.212B.0020.0002.0B38] # ORIYA LETTER SA
+0B39 ; [.212C.0020.0002.0B39] # ORIYA LETTER HA
+0B3D ; [.212D.0020.0002.0B3D] # ORIYA SIGN AVAGRAHA
+0B3E ; [.212E.0020.0002.0B3E] # ORIYA VOWEL SIGN AA
+0B3F ; [.212F.0020.0002.0B3F] # ORIYA VOWEL SIGN I
+0B40 ; [.2130.0020.0002.0B40] # ORIYA VOWEL SIGN II
+0B41 ; [.2131.0020.0002.0B41] # ORIYA VOWEL SIGN U
+0B42 ; [.2132.0020.0002.0B42] # ORIYA VOWEL SIGN UU
+0B43 ; [.2133.0020.0002.0B43] # ORIYA VOWEL SIGN VOCALIC R
+0B44 ; [.2134.0020.0002.0B44] # ORIYA VOWEL SIGN VOCALIC RR
+0B62 ; [.2135.0020.0002.0B62] # ORIYA VOWEL SIGN VOCALIC L
+0B63 ; [.2136.0020.0002.0B63] # ORIYA VOWEL SIGN VOCALIC LL
+0B47 ; [.2137.0020.0002.0B47] # ORIYA VOWEL SIGN E
+0B48 ; [.2138.0020.0002.0B48] # ORIYA VOWEL SIGN AI
+0B47 0B56 ; [.2138.0020.0002.0B48] # ORIYA VOWEL SIGN AI
+0B4B ; [.2139.0020.0002.0B4B] # ORIYA VOWEL SIGN O
+0B47 0B3E ; [.2139.0020.0002.0B4B] # ORIYA VOWEL SIGN O
+0B4C ; [.213A.0020.0002.0B4C] # ORIYA VOWEL SIGN AU
+0B47 0B57 ; [.213A.0020.0002.0B4C] # ORIYA VOWEL SIGN AU
+0B4D ; [.213B.0020.0002.0B4D] # ORIYA SIGN VIRAMA
+0B56 ; [.213C.0020.0002.0B56] # ORIYA AI LENGTH MARK
+0B57 ; [.213D.0020.0002.0B57] # ORIYA AU LENGTH MARK
+0BD0 ; [.213E.0020.0002.0BD0] # TAMIL OM
+0B85 ; [.213F.0020.0002.0B85] # TAMIL LETTER A
+0B86 ; [.2140.0020.0002.0B86] # TAMIL LETTER AA
+0B87 ; [.2141.0020.0002.0B87] # TAMIL LETTER I
+0B88 ; [.2142.0020.0002.0B88] # TAMIL LETTER II
+0B89 ; [.2143.0020.0002.0B89] # TAMIL LETTER U
+0B8A ; [.2144.0020.0002.0B8A] # TAMIL LETTER UU
+0B8E ; [.2145.0020.0002.0B8E] # TAMIL LETTER E
+0B8F ; [.2146.0020.0002.0B8F] # TAMIL LETTER EE
+0B90 ; [.2147.0020.0002.0B90] # TAMIL LETTER AI
+0B92 ; [.2148.0020.0002.0B92] # TAMIL LETTER O
+0B93 ; [.2149.0020.0002.0B93] # TAMIL LETTER OO
+0B94 ; [.214A.0020.0002.0B94] # TAMIL LETTER AU
+0B92 0BD7 ; [.214A.0020.0002.0B94] # TAMIL LETTER AU
+0B83 ; [.214B.0020.0002.0B83] # TAMIL SIGN VISARGA
+0B95 ; [.214C.0020.0002.0B95] # TAMIL LETTER KA
+0B99 ; [.214D.0020.0002.0B99] # TAMIL LETTER NGA
+0B9A ; [.214E.0020.0002.0B9A] # TAMIL LETTER CA
+0B9E ; [.214F.0020.0002.0B9E] # TAMIL LETTER NYA
+0B9F ; [.2150.0020.0002.0B9F] # TAMIL LETTER TTA
+0BA3 ; [.2151.0020.0002.0BA3] # TAMIL LETTER NNA
+0BA4 ; [.2152.0020.0002.0BA4] # TAMIL LETTER TA
+0BA8 ; [.2153.0020.0002.0BA8] # TAMIL LETTER NA
+0BAA ; [.2154.0020.0002.0BAA] # TAMIL LETTER PA
+0BAE ; [.2155.0020.0002.0BAE] # TAMIL LETTER MA
+0BAF ; [.2156.0020.0002.0BAF] # TAMIL LETTER YA
+0BB0 ; [.2157.0020.0002.0BB0] # TAMIL LETTER RA
+0BB2 ; [.2158.0020.0002.0BB2] # TAMIL LETTER LA
+0BB5 ; [.2159.0020.0002.0BB5] # TAMIL LETTER VA
+0BB4 ; [.215A.0020.0002.0BB4] # TAMIL LETTER LLLA
+0BB3 ; [.215B.0020.0002.0BB3] # TAMIL LETTER LLA
+0BB1 ; [.215C.0020.0002.0BB1] # TAMIL LETTER RRA
+0BA9 ; [.215D.0020.0002.0BA9] # TAMIL LETTER NNNA
+0B9C ; [.215E.0020.0002.0B9C] # TAMIL LETTER JA
+0BB6 ; [.215F.0020.0002.0BB6] # TAMIL LETTER SHA
+0BB7 ; [.2160.0020.0002.0BB7] # TAMIL LETTER SSA
+0BB8 ; [.2161.0020.0002.0BB8] # TAMIL LETTER SA
+0BB9 ; [.2162.0020.0002.0BB9] # TAMIL LETTER HA
+0BBE ; [.2163.0020.0002.0BBE] # TAMIL VOWEL SIGN AA
+0BBF ; [.2164.0020.0002.0BBF] # TAMIL VOWEL SIGN I
+0BC0 ; [.2165.0020.0002.0BC0] # TAMIL VOWEL SIGN II
+0BC1 ; [.2166.0020.0002.0BC1] # TAMIL VOWEL SIGN U
+0BC2 ; [.2167.0020.0002.0BC2] # TAMIL VOWEL SIGN UU
+0BC6 ; [.2168.0020.0002.0BC6] # TAMIL VOWEL SIGN E
+0BC7 ; [.2169.0020.0002.0BC7] # TAMIL VOWEL SIGN EE
+0BC8 ; [.216A.0020.0002.0BC8] # TAMIL VOWEL SIGN AI
+0BCA ; [.216B.0020.0002.0BCA] # TAMIL VOWEL SIGN O
+0BC6 0BBE ; [.216B.0020.0002.0BCA] # TAMIL VOWEL SIGN O
+0BCB ; [.216C.0020.0002.0BCB] # TAMIL VOWEL SIGN OO
+0BC7 0BBE ; [.216C.0020.0002.0BCB] # TAMIL VOWEL SIGN OO
+0BCC ; [.216D.0020.0002.0BCC] # TAMIL VOWEL SIGN AU
+0BC6 0BD7 ; [.216D.0020.0002.0BCC] # TAMIL VOWEL SIGN AU
+0BCD ; [.216E.0020.0002.0BCD] # TAMIL SIGN VIRAMA
+0BD7 ; [.216F.0020.0002.0BD7] # TAMIL AU LENGTH MARK
+0C05 ; [.2170.0020.0002.0C05] # TELUGU LETTER A
+0C06 ; [.2171.0020.0002.0C06] # TELUGU LETTER AA
+0C07 ; [.2172.0020.0002.0C07] # TELUGU LETTER I
+0C08 ; [.2173.0020.0002.0C08] # TELUGU LETTER II
+0C09 ; [.2174.0020.0002.0C09] # TELUGU LETTER U
+0C0A ; [.2175.0020.0002.0C0A] # TELUGU LETTER UU
+0C0B ; [.2176.0020.0002.0C0B] # TELUGU LETTER VOCALIC R
+0C60 ; [.2177.0020.0002.0C60] # TELUGU LETTER VOCALIC RR
+0C0C ; [.2178.0020.0002.0C0C] # TELUGU LETTER VOCALIC L
+0C61 ; [.2179.0020.0002.0C61] # TELUGU LETTER VOCALIC LL
+0C0E ; [.217A.0020.0002.0C0E] # TELUGU LETTER E
+0C0F ; [.217B.0020.0002.0C0F] # TELUGU LETTER EE
+0C10 ; [.217C.0020.0002.0C10] # TELUGU LETTER AI
+0C12 ; [.217D.0020.0002.0C12] # TELUGU LETTER O
+0C13 ; [.217E.0020.0002.0C13] # TELUGU LETTER OO
+0C14 ; [.217F.0020.0002.0C14] # TELUGU LETTER AU
+0C15 ; [.2180.0020.0002.0C15] # TELUGU LETTER KA
+0C16 ; [.2181.0020.0002.0C16] # TELUGU LETTER KHA
+0C17 ; [.2182.0020.0002.0C17] # TELUGU LETTER GA
+0C18 ; [.2183.0020.0002.0C18] # TELUGU LETTER GHA
+0C19 ; [.2184.0020.0002.0C19] # TELUGU LETTER NGA
+0C1A ; [.2185.0020.0002.0C1A] # TELUGU LETTER CA
+0C58 ; [.2186.0020.0002.0C58] # TELUGU LETTER TSA
+0C1B ; [.2187.0020.0002.0C1B] # TELUGU LETTER CHA
+0C1C ; [.2188.0020.0002.0C1C] # TELUGU LETTER JA
+0C59 ; [.2189.0020.0002.0C59] # TELUGU LETTER DZA
+0C1D ; [.218A.0020.0002.0C1D] # TELUGU LETTER JHA
+0C1E ; [.218B.0020.0002.0C1E] # TELUGU LETTER NYA
+0C1F ; [.218C.0020.0002.0C1F] # TELUGU LETTER TTA
+0C20 ; [.218D.0020.0002.0C20] # TELUGU LETTER TTHA
+0C21 ; [.218E.0020.0002.0C21] # TELUGU LETTER DDA
+0C22 ; [.218F.0020.0002.0C22] # TELUGU LETTER DDHA
+0C23 ; [.2190.0020.0002.0C23] # TELUGU LETTER NNA
+0C24 ; [.2191.0020.0002.0C24] # TELUGU LETTER TA
+0C25 ; [.2192.0020.0002.0C25] # TELUGU LETTER THA
+0C26 ; [.2193.0020.0002.0C26] # TELUGU LETTER DA
+0C27 ; [.2194.0020.0002.0C27] # TELUGU LETTER DHA
+0C28 ; [.2195.0020.0002.0C28] # TELUGU LETTER NA
+0C2A ; [.2196.0020.0002.0C2A] # TELUGU LETTER PA
+0C2B ; [.2197.0020.0002.0C2B] # TELUGU LETTER PHA
+0C2C ; [.2198.0020.0002.0C2C] # TELUGU LETTER BA
+0C2D ; [.2199.0020.0002.0C2D] # TELUGU LETTER BHA
+0C2E ; [.219A.0020.0002.0C2E] # TELUGU LETTER MA
+0C2F ; [.219B.0020.0002.0C2F] # TELUGU LETTER YA
+0C30 ; [.219C.0020.0002.0C30] # TELUGU LETTER RA
+0C31 ; [.219D.0020.0002.0C31] # TELUGU LETTER RRA
+0C32 ; [.219E.0020.0002.0C32] # TELUGU LETTER LA
+0C35 ; [.219F.0020.0002.0C35] # TELUGU LETTER VA
+0C36 ; [.21A0.0020.0002.0C36] # TELUGU LETTER SHA
+0C37 ; [.21A1.0020.0002.0C37] # TELUGU LETTER SSA
+0C38 ; [.21A2.0020.0002.0C38] # TELUGU LETTER SA
+0C39 ; [.21A3.0020.0002.0C39] # TELUGU LETTER HA
+0C33 ; [.21A4.0020.0002.0C33] # TELUGU LETTER LLA
+0C3D ; [.21A5.0020.0002.0C3D] # TELUGU SIGN AVAGRAHA
+0C3E ; [.21A6.0020.0002.0C3E] # TELUGU VOWEL SIGN AA
+0C3F ; [.21A7.0020.0002.0C3F] # TELUGU VOWEL SIGN I
+0C40 ; [.21A8.0020.0002.0C40] # TELUGU VOWEL SIGN II
+0C41 ; [.21A9.0020.0002.0C41] # TELUGU VOWEL SIGN U
+0C42 ; [.21AA.0020.0002.0C42] # TELUGU VOWEL SIGN UU
+0C43 ; [.21AB.0020.0002.0C43] # TELUGU VOWEL SIGN VOCALIC R
+0C44 ; [.21AC.0020.0002.0C44] # TELUGU VOWEL SIGN VOCALIC RR
+0C62 ; [.21AD.0020.0002.0C62] # TELUGU VOWEL SIGN VOCALIC L
+0C63 ; [.21AE.0020.0002.0C63] # TELUGU VOWEL SIGN VOCALIC LL
+0C46 ; [.21AF.0020.0002.0C46] # TELUGU VOWEL SIGN E
+0C47 ; [.21B0.0020.0002.0C47] # TELUGU VOWEL SIGN EE
+0C48 ; [.21B1.0020.0002.0C48] # TELUGU VOWEL SIGN AI
+0C46 0C56 ; [.21B1.0020.0002.0C48] # TELUGU VOWEL SIGN AI
+0C4A ; [.21B2.0020.0002.0C4A] # TELUGU VOWEL SIGN O
+0C4B ; [.21B3.0020.0002.0C4B] # TELUGU VOWEL SIGN OO
+0C4C ; [.21B4.0020.0002.0C4C] # TELUGU VOWEL SIGN AU
+0C4D ; [.21B5.0020.0002.0C4D] # TELUGU SIGN VIRAMA
+0C55 ; [.21B6.0020.0002.0C55] # TELUGU LENGTH MARK
+0C56 ; [.21B7.0020.0002.0C56] # TELUGU AI LENGTH MARK
+0C85 ; [.21B8.0020.0002.0C85] # KANNADA LETTER A
+0C86 ; [.21B9.0020.0002.0C86] # KANNADA LETTER AA
+0C87 ; [.21BA.0020.0002.0C87] # KANNADA LETTER I
+0C88 ; [.21BB.0020.0002.0C88] # KANNADA LETTER II
+0C89 ; [.21BC.0020.0002.0C89] # KANNADA LETTER U
+0C8A ; [.21BD.0020.0002.0C8A] # KANNADA LETTER UU
+0C8B ; [.21BE.0020.0002.0C8B] # KANNADA LETTER VOCALIC R
+0CE0 ; [.21BF.0020.0002.0CE0] # KANNADA LETTER VOCALIC RR
+0C8C ; [.21C0.0020.0002.0C8C] # KANNADA LETTER VOCALIC L
+0CE1 ; [.21C1.0020.0002.0CE1] # KANNADA LETTER VOCALIC LL
+0C8E ; [.21C2.0020.0002.0C8E] # KANNADA LETTER E
+0C8F ; [.21C3.0020.0002.0C8F] # KANNADA LETTER EE
+0C90 ; [.21C4.0020.0002.0C90] # KANNADA LETTER AI
+0C92 ; [.21C5.0020.0002.0C92] # KANNADA LETTER O
+0C93 ; [.21C6.0020.0002.0C93] # KANNADA LETTER OO
+0C94 ; [.21C7.0020.0002.0C94] # KANNADA LETTER AU
+0C95 ; [.21C8.0020.0002.0C95] # KANNADA LETTER KA
+0C96 ; [.21C9.0020.0002.0C96] # KANNADA LETTER KHA
+0C97 ; [.21CA.0020.0002.0C97] # KANNADA LETTER GA
+0C98 ; [.21CB.0020.0002.0C98] # KANNADA LETTER GHA
+0C99 ; [.21CC.0020.0002.0C99] # KANNADA LETTER NGA
+0C9A ; [.21CD.0020.0002.0C9A] # KANNADA LETTER CA
+0C9B ; [.21CE.0020.0002.0C9B] # KANNADA LETTER CHA
+0C9C ; [.21CF.0020.0002.0C9C] # KANNADA LETTER JA
+0C9D ; [.21D0.0020.0002.0C9D] # KANNADA LETTER JHA
+0C9E ; [.21D1.0020.0002.0C9E] # KANNADA LETTER NYA
+0C9F ; [.21D2.0020.0002.0C9F] # KANNADA LETTER TTA
+0CA0 ; [.21D3.0020.0002.0CA0] # KANNADA LETTER TTHA
+0CA1 ; [.21D4.0020.0002.0CA1] # KANNADA LETTER DDA
+0CA2 ; [.21D5.0020.0002.0CA2] # KANNADA LETTER DDHA
+0CA3 ; [.21D6.0020.0002.0CA3] # KANNADA LETTER NNA
+0CA4 ; [.21D7.0020.0002.0CA4] # KANNADA LETTER TA
+0CA5 ; [.21D8.0020.0002.0CA5] # KANNADA LETTER THA
+0CA6 ; [.21D9.0020.0002.0CA6] # KANNADA LETTER DA
+0CA7 ; [.21DA.0020.0002.0CA7] # KANNADA LETTER DHA
+0CA8 ; [.21DB.0020.0002.0CA8] # KANNADA LETTER NA
+0CAA ; [.21DC.0020.0002.0CAA] # KANNADA LETTER PA
+0CAB ; [.21DD.0020.0002.0CAB] # KANNADA LETTER PHA
+0CAC ; [.21DE.0020.0002.0CAC] # KANNADA LETTER BA
+0CAD ; [.21DF.0020.0002.0CAD] # KANNADA LETTER BHA
+0CAE ; [.21E0.0020.0002.0CAE] # KANNADA LETTER MA
+0CAF ; [.21E1.0020.0002.0CAF] # KANNADA LETTER YA
+0CB0 ; [.21E2.0020.0002.0CB0] # KANNADA LETTER RA
+0CB1 ; [.21E3.0020.0002.0CB1] # KANNADA LETTER RRA
+0CB2 ; [.21E4.0020.0002.0CB2] # KANNADA LETTER LA
+0CB5 ; [.21E5.0020.0002.0CB5] # KANNADA LETTER VA
+0CB6 ; [.21E6.0020.0002.0CB6] # KANNADA LETTER SHA
+0CB7 ; [.21E7.0020.0002.0CB7] # KANNADA LETTER SSA
+0CB8 ; [.21E8.0020.0002.0CB8] # KANNADA LETTER SA
+0CB9 ; [.21E9.0020.0002.0CB9] # KANNADA LETTER HA
+0CB3 ; [.21EA.0020.0002.0CB3] # KANNADA LETTER LLA
+0CDE ; [.21EB.0020.0002.0CDE] # KANNADA LETTER FA
+0CBD ; [.21EC.0020.0002.0CBD] # KANNADA SIGN AVAGRAHA
+0CF1 ; [.21ED.0020.0002.0CF1] # KANNADA SIGN JIHVAMULIYA
+0CF2 ; [.21EE.0020.0002.0CF2] # KANNADA SIGN UPADHMANIYA
+0CBE ; [.21EF.0020.0002.0CBE] # KANNADA VOWEL SIGN AA
+0CBF ; [.21F0.0020.0002.0CBF] # KANNADA VOWEL SIGN I
+0CC0 ; [.21F1.0020.0002.0CC0] # KANNADA VOWEL SIGN II
+0CBF 0CD5 ; [.21F1.0020.0002.0CC0] # KANNADA VOWEL SIGN II
+0CC1 ; [.21F2.0020.0002.0CC1] # KANNADA VOWEL SIGN U
+0CC2 ; [.21F3.0020.0002.0CC2] # KANNADA VOWEL SIGN UU
+0CC3 ; [.21F4.0020.0002.0CC3] # KANNADA VOWEL SIGN VOCALIC R
+0CC4 ; [.21F5.0020.0002.0CC4] # KANNADA VOWEL SIGN VOCALIC RR
+0CE2 ; [.21F6.0020.0002.0CE2] # KANNADA VOWEL SIGN VOCALIC L
+0CE3 ; [.21F7.0020.0002.0CE3] # KANNADA VOWEL SIGN VOCALIC LL
+0CC6 ; [.21F8.0020.0002.0CC6] # KANNADA VOWEL SIGN E
+0CC7 ; [.21F9.0020.0002.0CC7] # KANNADA VOWEL SIGN EE
+0CC6 0CD5 ; [.21F9.0020.0002.0CC7] # KANNADA VOWEL SIGN EE
+0CC8 ; [.21FA.0020.0002.0CC8] # KANNADA VOWEL SIGN AI
+0CC6 0CD6 ; [.21FA.0020.0002.0CC8] # KANNADA VOWEL SIGN AI
+0CCA ; [.21FB.0020.0002.0CCA] # KANNADA VOWEL SIGN O
+0CC6 0CC2 ; [.21FB.0020.0002.0CCA] # KANNADA VOWEL SIGN O
+0CCB ; [.21FC.0020.0002.0CCB] # KANNADA VOWEL SIGN OO
+0CC6 0CC2 0CD5 ; [.21FC.0020.0002.0CCB] # KANNADA VOWEL SIGN OO
+0CCA 0CD5 ; [.21FC.0020.0002.0CCB] # KANNADA VOWEL SIGN OO
+0CCC ; [.21FD.0020.0002.0CCC] # KANNADA VOWEL SIGN AU
+0CCD ; [.21FE.0020.0002.0CCD] # KANNADA SIGN VIRAMA
+0CD5 ; [.21FF.0020.0002.0CD5] # KANNADA LENGTH MARK
+0CD6 ; [.2200.0020.0002.0CD6] # KANNADA AI LENGTH MARK
+0D05 ; [.2201.0020.0002.0D05] # MALAYALAM LETTER A
+0D06 ; [.2202.0020.0002.0D06] # MALAYALAM LETTER AA
+0D07 ; [.2203.0020.0002.0D07] # MALAYALAM LETTER I
+0D08 ; [.2204.0020.0002.0D08] # MALAYALAM LETTER II
+0D09 ; [.2205.0020.0002.0D09] # MALAYALAM LETTER U
+0D0A ; [.2206.0020.0002.0D0A] # MALAYALAM LETTER UU
+0D0B ; [.2207.0020.0002.0D0B] # MALAYALAM LETTER VOCALIC R
+0D60 ; [.2208.0020.0002.0D60] # MALAYALAM LETTER VOCALIC RR
+0D0C ; [.2209.0020.0002.0D0C] # MALAYALAM LETTER VOCALIC L
+0D61 ; [.220A.0020.0002.0D61] # MALAYALAM LETTER VOCALIC LL
+0D0E ; [.220B.0020.0002.0D0E] # MALAYALAM LETTER E
+0D0F ; [.220C.0020.0002.0D0F] # MALAYALAM LETTER EE
+0D10 ; [.220D.0020.0002.0D10] # MALAYALAM LETTER AI
+0D12 ; [.220E.0020.0002.0D12] # MALAYALAM LETTER O
+0D13 ; [.220F.0020.0002.0D13] # MALAYALAM LETTER OO
+0D14 ; [.2210.0020.0002.0D14] # MALAYALAM LETTER AU
+0D15 ; [.2211.0020.0002.0D15] # MALAYALAM LETTER KA
+0D7F ; [.2211.0020.0004.0D7F][.2248.0020.0004.0D7F] # MALAYALAM LETTER CHILLU K
+0D16 ; [.2212.0020.0002.0D16] # MALAYALAM LETTER KHA
+0D17 ; [.2213.0020.0002.0D17] # MALAYALAM LETTER GA
+0D18 ; [.2214.0020.0002.0D18] # MALAYALAM LETTER GHA
+0D19 ; [.2215.0020.0002.0D19] # MALAYALAM LETTER NGA
+0D1A ; [.2216.0020.0002.0D1A] # MALAYALAM LETTER CA
+0D1B ; [.2217.0020.0002.0D1B] # MALAYALAM LETTER CHA
+0D1C ; [.2218.0020.0002.0D1C] # MALAYALAM LETTER JA
+0D1D ; [.2219.0020.0002.0D1D] # MALAYALAM LETTER JHA
+0D1E ; [.221A.0020.0002.0D1E] # MALAYALAM LETTER NYA
+0D1F ; [.221B.0020.0002.0D1F] # MALAYALAM LETTER TTA
+0D20 ; [.221C.0020.0002.0D20] # MALAYALAM LETTER TTHA
+0D21 ; [.221D.0020.0002.0D21] # MALAYALAM LETTER DDA
+0D22 ; [.221E.0020.0002.0D22] # MALAYALAM LETTER DDHA
+0D23 ; [.221F.0020.0002.0D23] # MALAYALAM LETTER NNA
+0D7A ; [.221F.0020.0004.0D7A][.2248.0020.0004.0D7A] # MALAYALAM LETTER CHILLU NN
+0D24 ; [.2220.0020.0002.0D24] # MALAYALAM LETTER TA
+0D25 ; [.2221.0020.0002.0D25] # MALAYALAM LETTER THA
+0D26 ; [.2222.0020.0002.0D26] # MALAYALAM LETTER DA
+0D27 ; [.2223.0020.0002.0D27] # MALAYALAM LETTER DHA
+0D28 ; [.2224.0020.0002.0D28] # MALAYALAM LETTER NA
+0D7B ; [.2224.0020.0004.0D7B][.2248.0020.0004.0D7B] # MALAYALAM LETTER CHILLU N
+0D29 ; [.2225.0020.0002.0D29] # MALAYALAM LETTER NNNA
+0D2A ; [.2226.0020.0002.0D2A] # MALAYALAM LETTER PA
+0D2B ; [.2227.0020.0002.0D2B] # MALAYALAM LETTER PHA
+0D2C ; [.2228.0020.0002.0D2C] # MALAYALAM LETTER BA
+0D2D ; [.2229.0020.0002.0D2D] # MALAYALAM LETTER BHA
+0D2E ; [.222A.0020.0002.0D2E] # MALAYALAM LETTER MA
+0D2F ; [.222B.0020.0002.0D2F] # MALAYALAM LETTER YA
+0D30 ; [.222C.0020.0002.0D30] # MALAYALAM LETTER RA
+0D4E ; [.222C.0020.0004.0D4E][.2248.0020.0004.0D4E] # MALAYALAM LETTER DOT REPH
+0D7C ; [.222C.0020.0004.0D7C][.2248.0020.0004.0D7C] # MALAYALAM LETTER CHILLU RR
+0D32 ; [.222D.0020.0002.0D32] # MALAYALAM LETTER LA
+0D7D ; [.222D.0020.0004.0D7D][.2248.0020.0004.0D7D] # MALAYALAM LETTER CHILLU L
+0D35 ; [.222E.0020.0002.0D35] # MALAYALAM LETTER VA
+0D36 ; [.222F.0020.0002.0D36] # MALAYALAM LETTER SHA
+0D37 ; [.2230.0020.0002.0D37] # MALAYALAM LETTER SSA
+0D38 ; [.2231.0020.0002.0D38] # MALAYALAM LETTER SA
+0D39 ; [.2232.0020.0002.0D39] # MALAYALAM LETTER HA
+0D33 ; [.2233.0020.0002.0D33] # MALAYALAM LETTER LLA
+0D7E ; [.2233.0020.0004.0D7E][.2248.0020.0004.0D7E] # MALAYALAM LETTER CHILLU LL
+0D34 ; [.2234.0020.0002.0D34] # MALAYALAM LETTER LLLA
+0D31 ; [.2235.0020.0002.0D31] # MALAYALAM LETTER RRA
+0D3A ; [.2236.0020.0002.0D3A] # MALAYALAM LETTER TTTA
+0D3D ; [.2237.0020.0002.0D3D] # MALAYALAM SIGN AVAGRAHA
+0D3E ; [.2238.0020.0002.0D3E] # MALAYALAM VOWEL SIGN AA
+0D3F ; [.2239.0020.0002.0D3F] # MALAYALAM VOWEL SIGN I
+0D40 ; [.223A.0020.0002.0D40] # MALAYALAM VOWEL SIGN II
+0D41 ; [.223B.0020.0002.0D41] # MALAYALAM VOWEL SIGN U
+0D42 ; [.223C.0020.0002.0D42] # MALAYALAM VOWEL SIGN UU
+0D43 ; [.223D.0020.0002.0D43] # MALAYALAM VOWEL SIGN VOCALIC R
+0D44 ; [.223E.0020.0002.0D44] # MALAYALAM VOWEL SIGN VOCALIC RR
+0D62 ; [.223F.0020.0002.0D62] # MALAYALAM VOWEL SIGN VOCALIC L
+0D63 ; [.2240.0020.0002.0D63] # MALAYALAM VOWEL SIGN VOCALIC LL
+0D46 ; [.2241.0020.0002.0D46] # MALAYALAM VOWEL SIGN E
+0D47 ; [.2242.0020.0002.0D47] # MALAYALAM VOWEL SIGN EE
+0D48 ; [.2243.0020.0002.0D48] # MALAYALAM VOWEL SIGN AI
+0D4A ; [.2244.0020.0002.0D4A] # MALAYALAM VOWEL SIGN O
+0D46 0D3E ; [.2244.0020.0002.0D4A] # MALAYALAM VOWEL SIGN O
+0D4B ; [.2245.0020.0002.0D4B] # MALAYALAM VOWEL SIGN OO
+0D47 0D3E ; [.2245.0020.0002.0D4B] # MALAYALAM VOWEL SIGN OO
+0D4C ; [.2246.0020.0002.0D4C] # MALAYALAM VOWEL SIGN AU
+0D46 0D57 ; [.2246.0020.0002.0D4C] # MALAYALAM VOWEL SIGN AU
+0D57 ; [.2247.0020.0002.0D57] # MALAYALAM AU LENGTH MARK
+0D4D ; [.2248.0020.0002.0D4D] # MALAYALAM SIGN VIRAMA
+0D85 ; [.2249.0020.0002.0D85] # SINHALA LETTER AYANNA
+0D86 ; [.224A.0020.0002.0D86] # SINHALA LETTER AAYANNA
+0D87 ; [.224B.0020.0002.0D87] # SINHALA LETTER AEYANNA
+0D88 ; [.224C.0020.0002.0D88] # SINHALA LETTER AEEYANNA
+0D89 ; [.224D.0020.0002.0D89] # SINHALA LETTER IYANNA
+0D8A ; [.224E.0020.0002.0D8A] # SINHALA LETTER IIYANNA
+0D8B ; [.224F.0020.0002.0D8B] # SINHALA LETTER UYANNA
+0D8C ; [.2250.0020.0002.0D8C] # SINHALA LETTER UUYANNA
+0D8D ; [.2251.0020.0002.0D8D] # SINHALA LETTER IRUYANNA
+0D8E ; [.2252.0020.0002.0D8E] # SINHALA LETTER IRUUYANNA
+0D8F ; [.2253.0020.0002.0D8F] # SINHALA LETTER ILUYANNA
+0D90 ; [.2254.0020.0002.0D90] # SINHALA LETTER ILUUYANNA
+0D91 ; [.2255.0020.0002.0D91] # SINHALA LETTER EYANNA
+0D92 ; [.2256.0020.0002.0D92] # SINHALA LETTER EEYANNA
+0D93 ; [.2257.0020.0002.0D93] # SINHALA LETTER AIYANNA
+0D94 ; [.2258.0020.0002.0D94] # SINHALA LETTER OYANNA
+0D95 ; [.2259.0020.0002.0D95] # SINHALA LETTER OOYANNA
+0D96 ; [.225A.0020.0002.0D96] # SINHALA LETTER AUYANNA
+0D9A ; [.225B.0020.0002.0D9A] # SINHALA LETTER ALPAPRAANA KAYANNA
+0D9B ; [.225C.0020.0002.0D9B] # SINHALA LETTER MAHAAPRAANA KAYANNA
+0D9C ; [.225D.0020.0002.0D9C] # SINHALA LETTER ALPAPRAANA GAYANNA
+0D9D ; [.225E.0020.0002.0D9D] # SINHALA LETTER MAHAAPRAANA GAYANNA
+0D9E ; [.225F.0020.0002.0D9E] # SINHALA LETTER KANTAJA NAASIKYAYA
+0D9F ; [.2260.0020.0002.0D9F] # SINHALA LETTER SANYAKA GAYANNA
+0DA0 ; [.2261.0020.0002.0DA0] # SINHALA LETTER ALPAPRAANA CAYANNA
+0DA1 ; [.2262.0020.0002.0DA1] # SINHALA LETTER MAHAAPRAANA CAYANNA
+0DA2 ; [.2263.0020.0002.0DA2] # SINHALA LETTER ALPAPRAANA JAYANNA
+0DA3 ; [.2264.0020.0002.0DA3] # SINHALA LETTER MAHAAPRAANA JAYANNA
+0DA4 ; [.2265.0020.0002.0DA4] # SINHALA LETTER TAALUJA NAASIKYAYA
+0DA5 ; [.2266.0020.0002.0DA5] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+0DA6 ; [.2267.0020.0002.0DA6] # SINHALA LETTER SANYAKA JAYANNA
+0DA7 ; [.2268.0020.0002.0DA7] # SINHALA LETTER ALPAPRAANA TTAYANNA
+0DA8 ; [.2269.0020.0002.0DA8] # SINHALA LETTER MAHAAPRAANA TTAYANNA
+0DA9 ; [.226A.0020.0002.0DA9] # SINHALA LETTER ALPAPRAANA DDAYANNA
+0DAA ; [.226B.0020.0002.0DAA] # SINHALA LETTER MAHAAPRAANA DDAYANNA
+0DAB ; [.226C.0020.0002.0DAB] # SINHALA LETTER MUURDHAJA NAYANNA
+0DAC ; [.226D.0020.0002.0DAC] # SINHALA LETTER SANYAKA DDAYANNA
+0DAD ; [.226E.0020.0002.0DAD] # SINHALA LETTER ALPAPRAANA TAYANNA
+0DAE ; [.226F.0020.0002.0DAE] # SINHALA LETTER MAHAAPRAANA TAYANNA
+0DAF ; [.2270.0020.0002.0DAF] # SINHALA LETTER ALPAPRAANA DAYANNA
+0DB0 ; [.2271.0020.0002.0DB0] # SINHALA LETTER MAHAAPRAANA DAYANNA
+0DB1 ; [.2272.0020.0002.0DB1] # SINHALA LETTER DANTAJA NAYANNA
+0DB3 ; [.2273.0020.0002.0DB3] # SINHALA LETTER SANYAKA DAYANNA
+0DB4 ; [.2274.0020.0002.0DB4] # SINHALA LETTER ALPAPRAANA PAYANNA
+0DB5 ; [.2275.0020.0002.0DB5] # SINHALA LETTER MAHAAPRAANA PAYANNA
+0DB6 ; [.2276.0020.0002.0DB6] # SINHALA LETTER ALPAPRAANA BAYANNA
+0DB7 ; [.2277.0020.0002.0DB7] # SINHALA LETTER MAHAAPRAANA BAYANNA
+0DB8 ; [.2278.0020.0002.0DB8] # SINHALA LETTER MAYANNA
+0DB9 ; [.2279.0020.0002.0DB9] # SINHALA LETTER AMBA BAYANNA
+0DBA ; [.227A.0020.0002.0DBA] # SINHALA LETTER YAYANNA
+0DBB ; [.227B.0020.0002.0DBB] # SINHALA LETTER RAYANNA
+0DBD ; [.227C.0020.0002.0DBD] # SINHALA LETTER DANTAJA LAYANNA
+0DC0 ; [.227D.0020.0002.0DC0] # SINHALA LETTER VAYANNA
+0DC1 ; [.227E.0020.0002.0DC1] # SINHALA LETTER TAALUJA SAYANNA
+0DC2 ; [.227F.0020.0002.0DC2] # SINHALA LETTER MUURDHAJA SAYANNA
+0DC3 ; [.2280.0020.0002.0DC3] # SINHALA LETTER DANTAJA SAYANNA
+0DC4 ; [.2281.0020.0002.0DC4] # SINHALA LETTER HAYANNA
+0DC5 ; [.2282.0020.0002.0DC5] # SINHALA LETTER MUURDHAJA LAYANNA
+0DC6 ; [.2283.0020.0002.0DC6] # SINHALA LETTER FAYANNA
+0DCF ; [.2284.0020.0002.0DCF] # SINHALA VOWEL SIGN AELA-PILLA
+0DD0 ; [.2285.0020.0002.0DD0] # SINHALA VOWEL SIGN KETTI AEDA-PILLA
+0DD1 ; [.2286.0020.0002.0DD1] # SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD2 ; [.2287.0020.0002.0DD2] # SINHALA VOWEL SIGN KETTI IS-PILLA
+0DD3 ; [.2288.0020.0002.0DD3] # SINHALA VOWEL SIGN DIGA IS-PILLA
+0DD4 ; [.2289.0020.0002.0DD4] # SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; [.228A.0020.0002.0DD6] # SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DD8 ; [.228B.0020.0002.0DD8] # SINHALA VOWEL SIGN GAETTA-PILLA
+0DF2 ; [.228C.0020.0002.0DF2] # SINHALA VOWEL SIGN DIGA GAETTA-PILLA
+0DDF ; [.228D.0020.0002.0DDF] # SINHALA VOWEL SIGN GAYANUKITTA
+0DF3 ; [.228E.0020.0002.0DF3] # SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0DD9 ; [.228F.0020.0002.0DD9] # SINHALA VOWEL SIGN KOMBUVA
+0DDA ; [.2290.0020.0002.0DDA] # SINHALA VOWEL SIGN DIGA KOMBUVA
+0DD9 0DCA ; [.2290.0020.0002.0DDA] # SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDB ; [.2291.0020.0002.0DDB] # SINHALA VOWEL SIGN KOMBU DEKA
+0DDC ; [.2292.0020.0002.0DDC] # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+0DD9 0DCF ; [.2292.0020.0002.0DDC] # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+0DDD ; [.2293.0020.0002.0DDD] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DD9 0DCF 0DCA ; [.2293.0020.0002.0DDD] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DDC 0DCA ; [.2293.0020.0002.0DDD] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DDE ; [.2294.0020.0002.0DDE] # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DD9 0DDF ; [.2294.0020.0002.0DDE] # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DCA ; [.2295.0020.0002.0DCA] # SINHALA SIGN AL-LAKUNA
+AAF2 ; [.2296.0020.0002.AAF2] # MEETEI MAYEK ANJI
+ABC0 ; [.2297.0020.0002.ABC0] # MEETEI MAYEK LETTER KOK
+ABC1 ; [.2298.0020.0002.ABC1] # MEETEI MAYEK LETTER SAM
+ABC2 ; [.2299.0020.0002.ABC2] # MEETEI MAYEK LETTER LAI
+ABC3 ; [.229A.0020.0002.ABC3] # MEETEI MAYEK LETTER MIT
+ABC4 ; [.229B.0020.0002.ABC4] # MEETEI MAYEK LETTER PA
+ABC5 ; [.229C.0020.0002.ABC5] # MEETEI MAYEK LETTER NA
+ABC6 ; [.229D.0020.0002.ABC6] # MEETEI MAYEK LETTER CHIL
+ABC7 ; [.229E.0020.0002.ABC7] # MEETEI MAYEK LETTER TIL
+ABC8 ; [.229F.0020.0002.ABC8] # MEETEI MAYEK LETTER KHOU
+ABC9 ; [.22A0.0020.0002.ABC9] # MEETEI MAYEK LETTER NGOU
+ABCA ; [.22A1.0020.0002.ABCA] # MEETEI MAYEK LETTER THOU
+ABCB ; [.22A2.0020.0002.ABCB] # MEETEI MAYEK LETTER WAI
+ABCC ; [.22A3.0020.0002.ABCC] # MEETEI MAYEK LETTER YANG
+ABCD ; [.22A4.0020.0002.ABCD] # MEETEI MAYEK LETTER HUK
+ABCE ; [.22A5.0020.0002.ABCE] # MEETEI MAYEK LETTER UN
+ABCF ; [.22A6.0020.0002.ABCF] # MEETEI MAYEK LETTER I
+ABD0 ; [.22A7.0020.0002.ABD0] # MEETEI MAYEK LETTER PHAM
+ABD1 ; [.22A8.0020.0002.ABD1] # MEETEI MAYEK LETTER ATIYA
+ABD2 ; [.22A9.0020.0002.ABD2] # MEETEI MAYEK LETTER GOK
+ABD3 ; [.22AA.0020.0002.ABD3] # MEETEI MAYEK LETTER JHAM
+ABD4 ; [.22AB.0020.0002.ABD4] # MEETEI MAYEK LETTER RAI
+ABD5 ; [.22AC.0020.0002.ABD5] # MEETEI MAYEK LETTER BA
+ABD6 ; [.22AD.0020.0002.ABD6] # MEETEI MAYEK LETTER JIL
+ABD7 ; [.22AE.0020.0002.ABD7] # MEETEI MAYEK LETTER DIL
+ABD8 ; [.22AF.0020.0002.ABD8] # MEETEI MAYEK LETTER GHOU
+ABD9 ; [.22B0.0020.0002.ABD9] # MEETEI MAYEK LETTER DHOU
+ABDA ; [.22B1.0020.0002.ABDA] # MEETEI MAYEK LETTER BHAM
+AAE0 ; [.22B2.0020.0002.AAE0] # MEETEI MAYEK LETTER E
+AAE1 ; [.22B3.0020.0002.AAE1] # MEETEI MAYEK LETTER O
+AAE2 ; [.22B4.0020.0002.AAE2] # MEETEI MAYEK LETTER CHA
+AAE3 ; [.22B5.0020.0002.AAE3] # MEETEI MAYEK LETTER NYA
+AAE4 ; [.22B6.0020.0002.AAE4] # MEETEI MAYEK LETTER TTA
+AAE5 ; [.22B7.0020.0002.AAE5] # MEETEI MAYEK LETTER TTHA
+AAE6 ; [.22B8.0020.0002.AAE6] # MEETEI MAYEK LETTER DDA
+AAE7 ; [.22B9.0020.0002.AAE7] # MEETEI MAYEK LETTER DDHA
+AAE8 ; [.22BA.0020.0002.AAE8] # MEETEI MAYEK LETTER NNA
+AAE9 ; [.22BB.0020.0002.AAE9] # MEETEI MAYEK LETTER SHA
+AAEA ; [.22BC.0020.0002.AAEA] # MEETEI MAYEK LETTER SSA
+ABE3 ; [.22BD.0020.0002.ABE3] # MEETEI MAYEK VOWEL SIGN ONAP
+ABE4 ; [.22BE.0020.0002.ABE4] # MEETEI MAYEK VOWEL SIGN INAP
+ABE5 ; [.22BF.0020.0002.ABE5] # MEETEI MAYEK VOWEL SIGN ANAP
+ABE6 ; [.22C0.0020.0002.ABE6] # MEETEI MAYEK VOWEL SIGN YENAP
+ABE7 ; [.22C1.0020.0002.ABE7] # MEETEI MAYEK VOWEL SIGN SOUNAP
+ABE8 ; [.22C2.0020.0002.ABE8] # MEETEI MAYEK VOWEL SIGN UNAP
+ABE9 ; [.22C3.0020.0002.ABE9] # MEETEI MAYEK VOWEL SIGN CHEINAP
+ABEA ; [.22C4.0020.0002.ABEA] # MEETEI MAYEK VOWEL SIGN NUNG
+AAEB ; [.22C5.0020.0002.AAEB] # MEETEI MAYEK VOWEL SIGN II
+AAEC ; [.22C6.0020.0002.AAEC] # MEETEI MAYEK VOWEL SIGN UU
+AAED ; [.22C7.0020.0002.AAED] # MEETEI MAYEK VOWEL SIGN AAI
+AAEE ; [.22C8.0020.0002.AAEE] # MEETEI MAYEK VOWEL SIGN AU
+AAEF ; [.22C9.0020.0002.AAEF] # MEETEI MAYEK VOWEL SIGN AAU
+AAF5 ; [.22CA.0020.0002.AAF5] # MEETEI MAYEK VOWEL SIGN VISARGA
+ABDB ; [.22CB.0020.0002.ABDB] # MEETEI MAYEK LETTER KOK LONSUM
+ABDC ; [.22CC.0020.0002.ABDC] # MEETEI MAYEK LETTER LAI LONSUM
+ABDD ; [.22CD.0020.0002.ABDD] # MEETEI MAYEK LETTER MIT LONSUM
+ABDE ; [.22CE.0020.0002.ABDE] # MEETEI MAYEK LETTER PA LONSUM
+ABDF ; [.22CF.0020.0002.ABDF] # MEETEI MAYEK LETTER NA LONSUM
+ABE0 ; [.22D0.0020.0002.ABE0] # MEETEI MAYEK LETTER TIL LONSUM
+ABE1 ; [.22D1.0020.0002.ABE1] # MEETEI MAYEK LETTER NGOU LONSUM
+ABE2 ; [.22D2.0020.0002.ABE2] # MEETEI MAYEK LETTER I LONSUM
+ABED ; [.22D3.0020.0002.ABED] # MEETEI MAYEK APUN IYEK
+AAF6 ; [.22D4.0020.0002.AAF6] # MEETEI MAYEK VIRAMA
+A800 ; [.22D5.0020.0002.A800] # SYLOTI NAGRI LETTER A
+A801 ; [.22D6.0020.0002.A801] # SYLOTI NAGRI LETTER I
+A802 ; [.22D7.0020.0002.A802] # SYLOTI NAGRI SIGN DVISVARA
+A803 ; [.22D8.0020.0002.A803] # SYLOTI NAGRI LETTER U
+A804 ; [.22D9.0020.0002.A804] # SYLOTI NAGRI LETTER E
+A805 ; [.22DA.0020.0002.A805] # SYLOTI NAGRI LETTER O
+A806 ; [.22DB.0020.0002.A806] # SYLOTI NAGRI SIGN HASANTA
+A807 ; [.22DC.0020.0002.A807] # SYLOTI NAGRI LETTER KO
+A808 ; [.22DD.0020.0002.A808] # SYLOTI NAGRI LETTER KHO
+A809 ; [.22DE.0020.0002.A809] # SYLOTI NAGRI LETTER GO
+A80A ; [.22DF.0020.0002.A80A] # SYLOTI NAGRI LETTER GHO
+A80C ; [.22E0.0020.0002.A80C] # SYLOTI NAGRI LETTER CO
+A80D ; [.22E1.0020.0002.A80D] # SYLOTI NAGRI LETTER CHO
+A80E ; [.22E2.0020.0002.A80E] # SYLOTI NAGRI LETTER JO
+A80F ; [.22E3.0020.0002.A80F] # SYLOTI NAGRI LETTER JHO
+A810 ; [.22E4.0020.0002.A810] # SYLOTI NAGRI LETTER TTO
+A811 ; [.22E5.0020.0002.A811] # SYLOTI NAGRI LETTER TTHO
+A812 ; [.22E6.0020.0002.A812] # SYLOTI NAGRI LETTER DDO
+A813 ; [.22E7.0020.0002.A813] # SYLOTI NAGRI LETTER DDHO
+A814 ; [.22E8.0020.0002.A814] # SYLOTI NAGRI LETTER TO
+A815 ; [.22E9.0020.0002.A815] # SYLOTI NAGRI LETTER THO
+A816 ; [.22EA.0020.0002.A816] # SYLOTI NAGRI LETTER DO
+A817 ; [.22EB.0020.0002.A817] # SYLOTI NAGRI LETTER DHO
+A818 ; [.22EC.0020.0002.A818] # SYLOTI NAGRI LETTER NO
+A819 ; [.22ED.0020.0002.A819] # SYLOTI NAGRI LETTER PO
+A81A ; [.22EE.0020.0002.A81A] # SYLOTI NAGRI LETTER PHO
+A81B ; [.22EF.0020.0002.A81B] # SYLOTI NAGRI LETTER BO
+A81C ; [.22F0.0020.0002.A81C] # SYLOTI NAGRI LETTER BHO
+A81D ; [.22F1.0020.0002.A81D] # SYLOTI NAGRI LETTER MO
+A81E ; [.22F2.0020.0002.A81E] # SYLOTI NAGRI LETTER RO
+A81F ; [.22F3.0020.0002.A81F] # SYLOTI NAGRI LETTER LO
+A820 ; [.22F4.0020.0002.A820] # SYLOTI NAGRI LETTER RRO
+A821 ; [.22F5.0020.0002.A821] # SYLOTI NAGRI LETTER SO
+A822 ; [.22F6.0020.0002.A822] # SYLOTI NAGRI LETTER HO
+A823 ; [.22F7.0020.0002.A823] # SYLOTI NAGRI VOWEL SIGN A
+A824 ; [.22F8.0020.0002.A824] # SYLOTI NAGRI VOWEL SIGN I
+A825 ; [.22F9.0020.0002.A825] # SYLOTI NAGRI VOWEL SIGN U
+A826 ; [.22FA.0020.0002.A826] # SYLOTI NAGRI VOWEL SIGN E
+A827 ; [.22FB.0020.0002.A827] # SYLOTI NAGRI VOWEL SIGN OO
+A882 ; [.22FC.0020.0002.A882] # SAURASHTRA LETTER A
+A883 ; [.22FD.0020.0002.A883] # SAURASHTRA LETTER AA
+A884 ; [.22FE.0020.0002.A884] # SAURASHTRA LETTER I
+A885 ; [.22FF.0020.0002.A885] # SAURASHTRA LETTER II
+A886 ; [.2300.0020.0002.A886] # SAURASHTRA LETTER U
+A887 ; [.2301.0020.0002.A887] # SAURASHTRA LETTER UU
+A888 ; [.2302.0020.0002.A888] # SAURASHTRA LETTER VOCALIC R
+A889 ; [.2303.0020.0002.A889] # SAURASHTRA LETTER VOCALIC RR
+A88A ; [.2304.0020.0002.A88A] # SAURASHTRA LETTER VOCALIC L
+A88B ; [.2305.0020.0002.A88B] # SAURASHTRA LETTER VOCALIC LL
+A88C ; [.2306.0020.0002.A88C] # SAURASHTRA LETTER E
+A88D ; [.2307.0020.0002.A88D] # SAURASHTRA LETTER EE
+A88E ; [.2308.0020.0002.A88E] # SAURASHTRA LETTER AI
+A88F ; [.2309.0020.0002.A88F] # SAURASHTRA LETTER O
+A890 ; [.230A.0020.0002.A890] # SAURASHTRA LETTER OO
+A891 ; [.230B.0020.0002.A891] # SAURASHTRA LETTER AU
+A892 ; [.230C.0020.0002.A892] # SAURASHTRA LETTER KA
+A893 ; [.230D.0020.0002.A893] # SAURASHTRA LETTER KHA
+A894 ; [.230E.0020.0002.A894] # SAURASHTRA LETTER GA
+A895 ; [.230F.0020.0002.A895] # SAURASHTRA LETTER GHA
+A896 ; [.2310.0020.0002.A896] # SAURASHTRA LETTER NGA
+A897 ; [.2311.0020.0002.A897] # SAURASHTRA LETTER CA
+A898 ; [.2312.0020.0002.A898] # SAURASHTRA LETTER CHA
+A899 ; [.2313.0020.0002.A899] # SAURASHTRA LETTER JA
+A89A ; [.2314.0020.0002.A89A] # SAURASHTRA LETTER JHA
+A89B ; [.2315.0020.0002.A89B] # SAURASHTRA LETTER NYA
+A89C ; [.2316.0020.0002.A89C] # SAURASHTRA LETTER TTA
+A89D ; [.2317.0020.0002.A89D] # SAURASHTRA LETTER TTHA
+A89E ; [.2318.0020.0002.A89E] # SAURASHTRA LETTER DDA
+A89F ; [.2319.0020.0002.A89F] # SAURASHTRA LETTER DDHA
+A8A0 ; [.231A.0020.0002.A8A0] # SAURASHTRA LETTER NNA
+A8A1 ; [.231B.0020.0002.A8A1] # SAURASHTRA LETTER TA
+A8A2 ; [.231C.0020.0002.A8A2] # SAURASHTRA LETTER THA
+A8A3 ; [.231D.0020.0002.A8A3] # SAURASHTRA LETTER DA
+A8A4 ; [.231E.0020.0002.A8A4] # SAURASHTRA LETTER DHA
+A8A5 ; [.231F.0020.0002.A8A5] # SAURASHTRA LETTER NA
+A8A6 ; [.2320.0020.0002.A8A6] # SAURASHTRA LETTER PA
+A8A7 ; [.2321.0020.0002.A8A7] # SAURASHTRA LETTER PHA
+A8A8 ; [.2322.0020.0002.A8A8] # SAURASHTRA LETTER BA
+A8A9 ; [.2323.0020.0002.A8A9] # SAURASHTRA LETTER BHA
+A8AA ; [.2324.0020.0002.A8AA] # SAURASHTRA LETTER MA
+A8AB ; [.2325.0020.0002.A8AB] # SAURASHTRA LETTER YA
+A8AC ; [.2326.0020.0002.A8AC] # SAURASHTRA LETTER RA
+A8AD ; [.2327.0020.0002.A8AD] # SAURASHTRA LETTER LA
+A8AE ; [.2328.0020.0002.A8AE] # SAURASHTRA LETTER VA
+A8AF ; [.2329.0020.0002.A8AF] # SAURASHTRA LETTER SHA
+A8B0 ; [.232A.0020.0002.A8B0] # SAURASHTRA LETTER SSA
+A8B1 ; [.232B.0020.0002.A8B1] # SAURASHTRA LETTER SA
+A8B2 ; [.232C.0020.0002.A8B2] # SAURASHTRA LETTER HA
+A8B3 ; [.232D.0020.0002.A8B3] # SAURASHTRA LETTER LLA
+A8B4 ; [.232E.0020.0002.A8B4] # SAURASHTRA CONSONANT SIGN HAARU
+A8B5 ; [.232F.0020.0002.A8B5] # SAURASHTRA VOWEL SIGN AA
+A8B6 ; [.2330.0020.0002.A8B6] # SAURASHTRA VOWEL SIGN I
+A8B7 ; [.2331.0020.0002.A8B7] # SAURASHTRA VOWEL SIGN II
+A8B8 ; [.2332.0020.0002.A8B8] # SAURASHTRA VOWEL SIGN U
+A8B9 ; [.2333.0020.0002.A8B9] # SAURASHTRA VOWEL SIGN UU
+A8BA ; [.2334.0020.0002.A8BA] # SAURASHTRA VOWEL SIGN VOCALIC R
+A8BB ; [.2335.0020.0002.A8BB] # SAURASHTRA VOWEL SIGN VOCALIC RR
+A8BC ; [.2336.0020.0002.A8BC] # SAURASHTRA VOWEL SIGN VOCALIC L
+A8BD ; [.2337.0020.0002.A8BD] # SAURASHTRA VOWEL SIGN VOCALIC LL
+A8BE ; [.2338.0020.0002.A8BE] # SAURASHTRA VOWEL SIGN E
+A8BF ; [.2339.0020.0002.A8BF] # SAURASHTRA VOWEL SIGN EE
+A8C0 ; [.233A.0020.0002.A8C0] # SAURASHTRA VOWEL SIGN AI
+A8C1 ; [.233B.0020.0002.A8C1] # SAURASHTRA VOWEL SIGN O
+A8C2 ; [.233C.0020.0002.A8C2] # SAURASHTRA VOWEL SIGN OO
+A8C3 ; [.233D.0020.0002.A8C3] # SAURASHTRA VOWEL SIGN AU
+A8C4 ; [.233E.0020.0002.A8C4] # SAURASHTRA SIGN VIRAMA
+11083 ; [.233F.0020.0002.11083] # KAITHI LETTER A
+11084 ; [.2340.0020.0002.11084] # KAITHI LETTER AA
+11085 ; [.2341.0020.0002.11085] # KAITHI LETTER I
+11086 ; [.2342.0020.0002.11086] # KAITHI LETTER II
+11087 ; [.2343.0020.0002.11087] # KAITHI LETTER U
+11088 ; [.2344.0020.0002.11088] # KAITHI LETTER UU
+11089 ; [.2345.0020.0002.11089] # KAITHI LETTER E
+1108A ; [.2346.0020.0002.1108A] # KAITHI LETTER AI
+1108B ; [.2347.0020.0002.1108B] # KAITHI LETTER O
+1108C ; [.2348.0020.0002.1108C] # KAITHI LETTER AU
+1108D ; [.2349.0020.0002.1108D] # KAITHI LETTER KA
+1108E ; [.234A.0020.0002.1108E] # KAITHI LETTER KHA
+1108F ; [.234B.0020.0002.1108F] # KAITHI LETTER GA
+11090 ; [.234C.0020.0002.11090] # KAITHI LETTER GHA
+11091 ; [.234D.0020.0002.11091] # KAITHI LETTER NGA
+11092 ; [.234E.0020.0002.11092] # KAITHI LETTER CA
+11093 ; [.234F.0020.0002.11093] # KAITHI LETTER CHA
+11094 ; [.2350.0020.0002.11094] # KAITHI LETTER JA
+11095 ; [.2351.0020.0002.11095] # KAITHI LETTER JHA
+11096 ; [.2352.0020.0002.11096] # KAITHI LETTER NYA
+11097 ; [.2353.0020.0002.11097] # KAITHI LETTER TTA
+11098 ; [.2354.0020.0002.11098] # KAITHI LETTER TTHA
+11099 ; [.2355.0020.0002.11099] # KAITHI LETTER DDA
+1109A ; [.2355.0020.0002.11099][.0000.00F1.0002.093C] # KAITHI LETTER DDDHA
+1109B ; [.2356.0020.0002.1109B] # KAITHI LETTER DDHA
+1109C ; [.2356.0020.0002.1109B][.0000.00F1.0002.093C] # KAITHI LETTER RHA
+1109D ; [.2357.0020.0002.1109D] # KAITHI LETTER NNA
+1109E ; [.2358.0020.0002.1109E] # KAITHI LETTER TA
+1109F ; [.2359.0020.0002.1109F] # KAITHI LETTER THA
+110A0 ; [.235A.0020.0002.110A0] # KAITHI LETTER DA
+110A1 ; [.235B.0020.0002.110A1] # KAITHI LETTER DHA
+110A2 ; [.235C.0020.0002.110A2] # KAITHI LETTER NA
+110A3 ; [.235D.0020.0002.110A3] # KAITHI LETTER PA
+110A4 ; [.235E.0020.0002.110A4] # KAITHI LETTER PHA
+110A5 ; [.235F.0020.0002.110A5] # KAITHI LETTER BA
+110AB ; [.235F.0020.0002.110A5][.0000.00F1.0002.093C] # KAITHI LETTER VA
+110A6 ; [.2360.0020.0002.110A6] # KAITHI LETTER BHA
+110A7 ; [.2361.0020.0002.110A7] # KAITHI LETTER MA
+110A8 ; [.2362.0020.0002.110A8] # KAITHI LETTER YA
+110A9 ; [.2363.0020.0002.110A9] # KAITHI LETTER RA
+110AA ; [.2364.0020.0002.110AA] # KAITHI LETTER LA
+110AC ; [.2365.0020.0002.110AC] # KAITHI LETTER SHA
+110AD ; [.2366.0020.0002.110AD] # KAITHI LETTER SSA
+110AE ; [.2367.0020.0002.110AE] # KAITHI LETTER SA
+110AF ; [.2368.0020.0002.110AF] # KAITHI LETTER HA
+110B0 ; [.2369.0020.0002.110B0] # KAITHI VOWEL SIGN AA
+110B1 ; [.236A.0020.0002.110B1] # KAITHI VOWEL SIGN I
+110B2 ; [.236B.0020.0002.110B2] # KAITHI VOWEL SIGN II
+110B3 ; [.236C.0020.0002.110B3] # KAITHI VOWEL SIGN U
+110B4 ; [.236D.0020.0002.110B4] # KAITHI VOWEL SIGN UU
+110B5 ; [.236E.0020.0002.110B5] # KAITHI VOWEL SIGN E
+110B6 ; [.236F.0020.0002.110B6] # KAITHI VOWEL SIGN AI
+110B7 ; [.2370.0020.0002.110B7] # KAITHI VOWEL SIGN O
+110B8 ; [.2371.0020.0002.110B8] # KAITHI VOWEL SIGN AU
+110B9 ; [.2372.0020.0002.110B9] # KAITHI SIGN VIRAMA
+111C4 ; [.2373.0020.0002.111C4] # SHARADA OM
+11183 ; [.2374.0020.0002.11183] # SHARADA LETTER A
+11184 ; [.2375.0020.0002.11184] # SHARADA LETTER AA
+11185 ; [.2376.0020.0002.11185] # SHARADA LETTER I
+11186 ; [.2377.0020.0002.11186] # SHARADA LETTER II
+11187 ; [.2378.0020.0002.11187] # SHARADA LETTER U
+11188 ; [.2379.0020.0002.11188] # SHARADA LETTER UU
+11189 ; [.237A.0020.0002.11189] # SHARADA LETTER VOCALIC R
+1118A ; [.237B.0020.0002.1118A] # SHARADA LETTER VOCALIC RR
+1118B ; [.237C.0020.0002.1118B] # SHARADA LETTER VOCALIC L
+1118C ; [.237D.0020.0002.1118C] # SHARADA LETTER VOCALIC LL
+1118D ; [.237E.0020.0002.1118D] # SHARADA LETTER E
+1118E ; [.237F.0020.0002.1118E] # SHARADA LETTER AI
+1118F ; [.2380.0020.0002.1118F] # SHARADA LETTER O
+11190 ; [.2381.0020.0002.11190] # SHARADA LETTER AU
+11191 ; [.2382.0020.0002.11191] # SHARADA LETTER KA
+11192 ; [.2383.0020.0002.11192] # SHARADA LETTER KHA
+11193 ; [.2384.0020.0002.11193] # SHARADA LETTER GA
+11194 ; [.2385.0020.0002.11194] # SHARADA LETTER GHA
+11195 ; [.2386.0020.0002.11195] # SHARADA LETTER NGA
+11196 ; [.2387.0020.0002.11196] # SHARADA LETTER CA
+11197 ; [.2388.0020.0002.11197] # SHARADA LETTER CHA
+11198 ; [.2389.0020.0002.11198] # SHARADA LETTER JA
+11199 ; [.238A.0020.0002.11199] # SHARADA LETTER JHA
+1119A ; [.238B.0020.0002.1119A] # SHARADA LETTER NYA
+1119B ; [.238C.0020.0002.1119B] # SHARADA LETTER TTA
+1119C ; [.238D.0020.0002.1119C] # SHARADA LETTER TTHA
+1119D ; [.238E.0020.0002.1119D] # SHARADA LETTER DDA
+1119E ; [.238F.0020.0002.1119E] # SHARADA LETTER DDHA
+1119F ; [.2390.0020.0002.1119F] # SHARADA LETTER NNA
+111A0 ; [.2391.0020.0002.111A0] # SHARADA LETTER TA
+111A1 ; [.2392.0020.0002.111A1] # SHARADA LETTER THA
+111A2 ; [.2393.0020.0002.111A2] # SHARADA LETTER DA
+111A3 ; [.2394.0020.0002.111A3] # SHARADA LETTER DHA
+111A4 ; [.2395.0020.0002.111A4] # SHARADA LETTER NA
+111A5 ; [.2396.0020.0002.111A5] # SHARADA LETTER PA
+111A6 ; [.2397.0020.0002.111A6] # SHARADA LETTER PHA
+111A7 ; [.2398.0020.0002.111A7] # SHARADA LETTER BA
+111A8 ; [.2399.0020.0002.111A8] # SHARADA LETTER BHA
+111A9 ; [.239A.0020.0002.111A9] # SHARADA LETTER MA
+111AA ; [.239B.0020.0002.111AA] # SHARADA LETTER YA
+111AB ; [.239C.0020.0002.111AB] # SHARADA LETTER RA
+111AC ; [.239D.0020.0002.111AC] # SHARADA LETTER LA
+111AD ; [.239E.0020.0002.111AD] # SHARADA LETTER LLA
+111AE ; [.239F.0020.0002.111AE] # SHARADA LETTER VA
+111AF ; [.23A0.0020.0002.111AF] # SHARADA LETTER SHA
+111B0 ; [.23A1.0020.0002.111B0] # SHARADA LETTER SSA
+111B1 ; [.23A2.0020.0002.111B1] # SHARADA LETTER SA
+111B2 ; [.23A3.0020.0002.111B2] # SHARADA LETTER HA
+111B3 ; [.23A4.0020.0002.111B3] # SHARADA VOWEL SIGN AA
+111B4 ; [.23A5.0020.0002.111B4] # SHARADA VOWEL SIGN I
+111B5 ; [.23A6.0020.0002.111B5] # SHARADA VOWEL SIGN II
+111B6 ; [.23A7.0020.0002.111B6] # SHARADA VOWEL SIGN U
+111B7 ; [.23A8.0020.0002.111B7] # SHARADA VOWEL SIGN UU
+111B8 ; [.23A9.0020.0002.111B8] # SHARADA VOWEL SIGN VOCALIC R
+111B9 ; [.23AA.0020.0002.111B9] # SHARADA VOWEL SIGN VOCALIC RR
+111BA ; [.23AB.0020.0002.111BA] # SHARADA VOWEL SIGN VOCALIC L
+111BB ; [.23AC.0020.0002.111BB] # SHARADA VOWEL SIGN VOCALIC LL
+111BC ; [.23AD.0020.0002.111BC] # SHARADA VOWEL SIGN E
+111BD ; [.23AE.0020.0002.111BD] # SHARADA VOWEL SIGN AI
+111BE ; [.23AF.0020.0002.111BE] # SHARADA VOWEL SIGN O
+111BF ; [.23B0.0020.0002.111BF] # SHARADA VOWEL SIGN AU
+111C0 ; [.23B1.0020.0002.111C0] # SHARADA SIGN VIRAMA
+111C1 ; [.23B2.0020.0002.111C1] # SHARADA SIGN AVAGRAHA
+111C2 ; [.23B3.0020.0002.111C2] # SHARADA SIGN JIHVAMULIYA
+111C3 ; [.23B4.0020.0002.111C3] # SHARADA SIGN UPADHMANIYA
+11680 ; [.23B5.0020.0002.11680] # TAKRI LETTER A
+11681 ; [.23B6.0020.0002.11681] # TAKRI LETTER AA
+11682 ; [.23B7.0020.0002.11682] # TAKRI LETTER I
+11683 ; [.23B8.0020.0002.11683] # TAKRI LETTER II
+11684 ; [.23B9.0020.0002.11684] # TAKRI LETTER U
+11685 ; [.23BA.0020.0002.11685] # TAKRI LETTER UU
+11686 ; [.23BB.0020.0002.11686] # TAKRI LETTER E
+11687 ; [.23BC.0020.0002.11687] # TAKRI LETTER AI
+11688 ; [.23BD.0020.0002.11688] # TAKRI LETTER O
+11689 ; [.23BE.0020.0002.11689] # TAKRI LETTER AU
+116A8 ; [.23BF.0020.0002.116A8] # TAKRI LETTER SA
+116A7 ; [.23C0.0020.0002.116A7] # TAKRI LETTER SHA
+116A9 ; [.23C1.0020.0002.116A9] # TAKRI LETTER HA
+1168A ; [.23C2.0020.0002.1168A] # TAKRI LETTER KA
+1168B ; [.23C3.0020.0002.1168B] # TAKRI LETTER KHA
+1168C ; [.23C4.0020.0002.1168C] # TAKRI LETTER GA
+1168D ; [.23C5.0020.0002.1168D] # TAKRI LETTER GHA
+1168E ; [.23C6.0020.0002.1168E] # TAKRI LETTER NGA
+1168F ; [.23C7.0020.0002.1168F] # TAKRI LETTER CA
+11690 ; [.23C8.0020.0002.11690] # TAKRI LETTER CHA
+11691 ; [.23C9.0020.0002.11691] # TAKRI LETTER JA
+11692 ; [.23CA.0020.0002.11692] # TAKRI LETTER JHA
+11693 ; [.23CB.0020.0002.11693] # TAKRI LETTER NYA
+11694 ; [.23CC.0020.0002.11694] # TAKRI LETTER TTA
+11695 ; [.23CD.0020.0002.11695] # TAKRI LETTER TTHA
+11696 ; [.23CE.0020.0002.11696] # TAKRI LETTER DDA
+11697 ; [.23CF.0020.0002.11697] # TAKRI LETTER DDHA
+11698 ; [.23D0.0020.0002.11698] # TAKRI LETTER NNA
+11699 ; [.23D1.0020.0002.11699] # TAKRI LETTER TA
+1169A ; [.23D2.0020.0002.1169A] # TAKRI LETTER THA
+1169B ; [.23D3.0020.0002.1169B] # TAKRI LETTER DA
+1169C ; [.23D4.0020.0002.1169C] # TAKRI LETTER DHA
+1169D ; [.23D5.0020.0002.1169D] # TAKRI LETTER NA
+1169E ; [.23D6.0020.0002.1169E] # TAKRI LETTER PA
+1169F ; [.23D7.0020.0002.1169F] # TAKRI LETTER PHA
+116A0 ; [.23D8.0020.0002.116A0] # TAKRI LETTER BA
+116A1 ; [.23D9.0020.0002.116A1] # TAKRI LETTER BHA
+116A2 ; [.23DA.0020.0002.116A2] # TAKRI LETTER MA
+116A3 ; [.23DB.0020.0002.116A3] # TAKRI LETTER YA
+116A4 ; [.23DC.0020.0002.116A4] # TAKRI LETTER RA
+116A5 ; [.23DD.0020.0002.116A5] # TAKRI LETTER LA
+116A6 ; [.23DE.0020.0002.116A6] # TAKRI LETTER VA
+116AA ; [.23DF.0020.0002.116AA] # TAKRI LETTER RRA
+116AD ; [.23E0.0020.0002.116AD] # TAKRI VOWEL SIGN AA
+116AE ; [.23E1.0020.0002.116AE] # TAKRI VOWEL SIGN I
+116AF ; [.23E2.0020.0002.116AF] # TAKRI VOWEL SIGN II
+116B0 ; [.23E3.0020.0002.116B0] # TAKRI VOWEL SIGN U
+116B1 ; [.23E4.0020.0002.116B1] # TAKRI VOWEL SIGN UU
+116B2 ; [.23E5.0020.0002.116B2] # TAKRI VOWEL SIGN E
+116B3 ; [.23E6.0020.0002.116B3] # TAKRI VOWEL SIGN AI
+116B4 ; [.23E7.0020.0002.116B4] # TAKRI VOWEL SIGN O
+116B5 ; [.23E8.0020.0002.116B5] # TAKRI VOWEL SIGN AU
+116B6 ; [.23E9.0020.0002.116B6] # TAKRI SIGN VIRAMA
+1B83 ; [.23EA.0020.0002.1B83] # SUNDANESE LETTER A
+1BBA ; [.23EA.0020.0004.1BBA] # SUNDANESE AVAGRAHA
+1B84 ; [.23EB.0020.0002.1B84] # SUNDANESE LETTER I
+1B85 ; [.23EC.0020.0002.1B85] # SUNDANESE LETTER U
+1B86 ; [.23ED.0020.0002.1B86] # SUNDANESE LETTER AE
+1B87 ; [.23EE.0020.0002.1B87] # SUNDANESE LETTER O
+1B88 ; [.23EF.0020.0002.1B88] # SUNDANESE LETTER E
+1B89 ; [.23F0.0020.0002.1B89] # SUNDANESE LETTER EU
+1B8A ; [.23F1.0020.0002.1B8A] # SUNDANESE LETTER KA
+1BBE ; [.23F1.0020.0019.1BBE] # SUNDANESE LETTER FINAL K
+1BAE ; [.23F2.0020.0002.1BAE] # SUNDANESE LETTER KHA
+1B8B ; [.23F3.0020.0002.1B8B] # SUNDANESE LETTER QA
+1B8C ; [.23F4.0020.0002.1B8C] # SUNDANESE LETTER GA
+1B8D ; [.23F5.0020.0002.1B8D] # SUNDANESE LETTER NGA
+1B8E ; [.23F6.0020.0002.1B8E] # SUNDANESE LETTER CA
+1B8F ; [.23F7.0020.0002.1B8F] # SUNDANESE LETTER JA
+1B90 ; [.23F8.0020.0002.1B90] # SUNDANESE LETTER ZA
+1B91 ; [.23F9.0020.0002.1B91] # SUNDANESE LETTER NYA
+1B92 ; [.23FA.0020.0002.1B92] # SUNDANESE LETTER TA
+1B93 ; [.23FB.0020.0002.1B93] # SUNDANESE LETTER DA
+1B94 ; [.23FC.0020.0002.1B94] # SUNDANESE LETTER NA
+1B95 ; [.23FD.0020.0002.1B95] # SUNDANESE LETTER PA
+1B96 ; [.23FE.0020.0002.1B96] # SUNDANESE LETTER FA
+1B97 ; [.23FF.0020.0002.1B97] # SUNDANESE LETTER VA
+1B98 ; [.2400.0020.0002.1B98] # SUNDANESE LETTER BA
+1BBD ; [.2401.0020.0002.1BBD] # SUNDANESE LETTER BHA
+1B99 ; [.2402.0020.0002.1B99] # SUNDANESE LETTER MA
+1BBF ; [.2402.0020.0019.1BBF] # SUNDANESE LETTER FINAL M
+1BAC ; [.2403.0020.0002.1BAC] # SUNDANESE CONSONANT SIGN PASANGAN MA
+1B9A ; [.2404.0020.0002.1B9A] # SUNDANESE LETTER YA
+1BA1 ; [.2405.0020.0002.1BA1] # SUNDANESE CONSONANT SIGN PAMINGKAL
+1B9B ; [.2406.0020.0002.1B9B] # SUNDANESE LETTER RA
+1BA2 ; [.2407.0020.0002.1BA2] # SUNDANESE CONSONANT SIGN PANYAKRA
+1BBB ; [.2408.0020.0002.1BBB] # SUNDANESE LETTER REU
+1B9C ; [.2409.0020.0002.1B9C] # SUNDANESE LETTER LA
+1BA3 ; [.240A.0020.0002.1BA3] # SUNDANESE CONSONANT SIGN PANYIKU
+1BBC ; [.240B.0020.0002.1BBC] # SUNDANESE LETTER LEU
+1B9D ; [.240C.0020.0002.1B9D] # SUNDANESE LETTER WA
+1BAD ; [.240D.0020.0002.1BAD] # SUNDANESE CONSONANT SIGN PASANGAN WA
+1B9E ; [.240E.0020.0002.1B9E] # SUNDANESE LETTER SA
+1B9F ; [.240F.0020.0002.1B9F] # SUNDANESE LETTER XA
+1BAF ; [.2410.0020.0002.1BAF] # SUNDANESE LETTER SYA
+1BA0 ; [.2411.0020.0002.1BA0] # SUNDANESE LETTER HA
+1BA4 ; [.2412.0020.0002.1BA4] # SUNDANESE VOWEL SIGN PANGHULU
+1BA5 ; [.2413.0020.0002.1BA5] # SUNDANESE VOWEL SIGN PANYUKU
+1BA6 ; [.2414.0020.0002.1BA6] # SUNDANESE VOWEL SIGN PANAELAENG
+1BA7 ; [.2415.0020.0002.1BA7] # SUNDANESE VOWEL SIGN PANOLONG
+1BA8 ; [.2416.0020.0002.1BA8] # SUNDANESE VOWEL SIGN PAMEPET
+1BA9 ; [.2417.0020.0002.1BA9] # SUNDANESE VOWEL SIGN PANEULEUNG
+1BAA ; [.2418.0020.0002.1BAA] # SUNDANESE SIGN PAMAAEH
+1BAB ; [.2419.0020.0002.1BAB] # SUNDANESE SIGN VIRAMA
+11005 ; [.241A.0020.0002.11005] # BRAHMI LETTER A
+11006 ; [.241B.0020.0002.11006] # BRAHMI LETTER AA
+11007 ; [.241C.0020.0002.11007] # BRAHMI LETTER I
+11008 ; [.241D.0020.0002.11008] # BRAHMI LETTER II
+11009 ; [.241E.0020.0002.11009] # BRAHMI LETTER U
+1100A ; [.241F.0020.0002.1100A] # BRAHMI LETTER UU
+1100B ; [.2420.0020.0002.1100B] # BRAHMI LETTER VOCALIC R
+1100C ; [.2421.0020.0002.1100C] # BRAHMI LETTER VOCALIC RR
+1100D ; [.2422.0020.0002.1100D] # BRAHMI LETTER VOCALIC L
+1100E ; [.2423.0020.0002.1100E] # BRAHMI LETTER VOCALIC LL
+1100F ; [.2424.0020.0002.1100F] # BRAHMI LETTER E
+11010 ; [.2425.0020.0002.11010] # BRAHMI LETTER AI
+11011 ; [.2426.0020.0002.11011] # BRAHMI LETTER O
+11012 ; [.2427.0020.0002.11012] # BRAHMI LETTER AU
+11013 ; [.2428.0020.0002.11013] # BRAHMI LETTER KA
+11014 ; [.2429.0020.0002.11014] # BRAHMI LETTER KHA
+11015 ; [.242A.0020.0002.11015] # BRAHMI LETTER GA
+11016 ; [.242B.0020.0002.11016] # BRAHMI LETTER GHA
+11017 ; [.242C.0020.0002.11017] # BRAHMI LETTER NGA
+11018 ; [.242D.0020.0002.11018] # BRAHMI LETTER CA
+11019 ; [.242E.0020.0002.11019] # BRAHMI LETTER CHA
+1101A ; [.242F.0020.0002.1101A] # BRAHMI LETTER JA
+1101B ; [.2430.0020.0002.1101B] # BRAHMI LETTER JHA
+1101C ; [.2431.0020.0002.1101C] # BRAHMI LETTER NYA
+1101D ; [.2432.0020.0002.1101D] # BRAHMI LETTER TTA
+1101E ; [.2433.0020.0002.1101E] # BRAHMI LETTER TTHA
+1101F ; [.2434.0020.0002.1101F] # BRAHMI LETTER DDA
+11020 ; [.2435.0020.0002.11020] # BRAHMI LETTER DDHA
+11021 ; [.2436.0020.0002.11021] # BRAHMI LETTER NNA
+11022 ; [.2437.0020.0002.11022] # BRAHMI LETTER TA
+11023 ; [.2438.0020.0002.11023] # BRAHMI LETTER THA
+11024 ; [.2439.0020.0002.11024] # BRAHMI LETTER DA
+11025 ; [.243A.0020.0002.11025] # BRAHMI LETTER DHA
+11026 ; [.243B.0020.0002.11026] # BRAHMI LETTER NA
+11027 ; [.243C.0020.0002.11027] # BRAHMI LETTER PA
+11028 ; [.243D.0020.0002.11028] # BRAHMI LETTER PHA
+11029 ; [.243E.0020.0002.11029] # BRAHMI LETTER BA
+1102A ; [.243F.0020.0002.1102A] # BRAHMI LETTER BHA
+1102B ; [.2440.0020.0002.1102B] # BRAHMI LETTER MA
+1102C ; [.2441.0020.0002.1102C] # BRAHMI LETTER YA
+1102D ; [.2442.0020.0002.1102D] # BRAHMI LETTER RA
+1102E ; [.2443.0020.0002.1102E] # BRAHMI LETTER LA
+1102F ; [.2444.0020.0002.1102F] # BRAHMI LETTER VA
+11030 ; [.2445.0020.0002.11030] # BRAHMI LETTER SHA
+11031 ; [.2446.0020.0002.11031] # BRAHMI LETTER SSA
+11032 ; [.2447.0020.0002.11032] # BRAHMI LETTER SA
+11033 ; [.2448.0020.0002.11033] # BRAHMI LETTER HA
+11003 ; [.2449.0020.0002.11003] # BRAHMI SIGN JIHVAMULIYA
+11004 ; [.244A.0020.0002.11004] # BRAHMI SIGN UPADHMANIYA
+11034 ; [.244B.0020.0002.11034] # BRAHMI LETTER LLA
+11035 ; [.244C.0020.0002.11035] # BRAHMI LETTER OLD TAMIL LLLA
+11036 ; [.244D.0020.0002.11036] # BRAHMI LETTER OLD TAMIL RRA
+11037 ; [.244E.0020.0002.11037] # BRAHMI LETTER OLD TAMIL NNNA
+11038 ; [.244F.0020.0002.11038] # BRAHMI VOWEL SIGN AA
+11039 ; [.2450.0020.0002.11039] # BRAHMI VOWEL SIGN BHATTIPROLU AA
+1103A ; [.2451.0020.0002.1103A] # BRAHMI VOWEL SIGN I
+1103B ; [.2452.0020.0002.1103B] # BRAHMI VOWEL SIGN II
+1103C ; [.2453.0020.0002.1103C] # BRAHMI VOWEL SIGN U
+1103D ; [.2454.0020.0002.1103D] # BRAHMI VOWEL SIGN UU
+1103E ; [.2455.0020.0002.1103E] # BRAHMI VOWEL SIGN VOCALIC R
+1103F ; [.2456.0020.0002.1103F] # BRAHMI VOWEL SIGN VOCALIC RR
+11040 ; [.2457.0020.0002.11040] # BRAHMI VOWEL SIGN VOCALIC L
+11041 ; [.2458.0020.0002.11041] # BRAHMI VOWEL SIGN VOCALIC LL
+11042 ; [.2459.0020.0002.11042] # BRAHMI VOWEL SIGN E
+11043 ; [.245A.0020.0002.11043] # BRAHMI VOWEL SIGN AI
+11044 ; [.245B.0020.0002.11044] # BRAHMI VOWEL SIGN O
+11045 ; [.245C.0020.0002.11045] # BRAHMI VOWEL SIGN AU
+11046 ; [.245D.0020.0002.11046] # BRAHMI VIRAMA
+10A00 ; [.245E.0020.0002.10A00] # KHAROSHTHI LETTER A
+10A01 ; [.245F.0020.0002.10A01] # KHAROSHTHI VOWEL SIGN I
+10A02 ; [.2460.0020.0002.10A02] # KHAROSHTHI VOWEL SIGN U
+10A03 ; [.2461.0020.0002.10A03] # KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05 ; [.2462.0020.0002.10A05] # KHAROSHTHI VOWEL SIGN E
+10A06 ; [.2463.0020.0002.10A06] # KHAROSHTHI VOWEL SIGN O
+10A0C ; [.2464.0020.0002.10A0C] # KHAROSHTHI VOWEL LENGTH MARK
+10A10 ; [.2465.0020.0002.10A10] # KHAROSHTHI LETTER KA
+10A11 ; [.2466.0020.0002.10A11] # KHAROSHTHI LETTER KHA
+10A12 ; [.2467.0020.0002.10A12] # KHAROSHTHI LETTER GA
+10A13 ; [.2468.0020.0002.10A13] # KHAROSHTHI LETTER GHA
+10A15 ; [.2469.0020.0002.10A15] # KHAROSHTHI LETTER CA
+10A16 ; [.246A.0020.0002.10A16] # KHAROSHTHI LETTER CHA
+10A17 ; [.246B.0020.0002.10A17] # KHAROSHTHI LETTER JA
+10A19 ; [.246C.0020.0002.10A19] # KHAROSHTHI LETTER NYA
+10A1A ; [.246D.0020.0002.10A1A] # KHAROSHTHI LETTER TTA
+10A1B ; [.246E.0020.0002.10A1B] # KHAROSHTHI LETTER TTHA
+10A1C ; [.246F.0020.0002.10A1C] # KHAROSHTHI LETTER DDA
+10A1D ; [.2470.0020.0002.10A1D] # KHAROSHTHI LETTER DDHA
+10A1E ; [.2471.0020.0002.10A1E] # KHAROSHTHI LETTER NNA
+10A1F ; [.2472.0020.0002.10A1F] # KHAROSHTHI LETTER TA
+10A20 ; [.2473.0020.0002.10A20] # KHAROSHTHI LETTER THA
+10A21 ; [.2474.0020.0002.10A21] # KHAROSHTHI LETTER DA
+10A22 ; [.2475.0020.0002.10A22] # KHAROSHTHI LETTER DHA
+10A23 ; [.2476.0020.0002.10A23] # KHAROSHTHI LETTER NA
+10A24 ; [.2477.0020.0002.10A24] # KHAROSHTHI LETTER PA
+10A25 ; [.2478.0020.0002.10A25] # KHAROSHTHI LETTER PHA
+10A26 ; [.2479.0020.0002.10A26] # KHAROSHTHI LETTER BA
+10A27 ; [.247A.0020.0002.10A27] # KHAROSHTHI LETTER BHA
+10A28 ; [.247B.0020.0002.10A28] # KHAROSHTHI LETTER MA
+10A29 ; [.247C.0020.0002.10A29] # KHAROSHTHI LETTER YA
+10A2A ; [.247D.0020.0002.10A2A] # KHAROSHTHI LETTER RA
+10A2B ; [.247E.0020.0002.10A2B] # KHAROSHTHI LETTER LA
+10A2C ; [.247F.0020.0002.10A2C] # KHAROSHTHI LETTER VA
+10A2D ; [.2480.0020.0002.10A2D] # KHAROSHTHI LETTER SHA
+10A2E ; [.2481.0020.0002.10A2E] # KHAROSHTHI LETTER SSA
+10A2F ; [.2482.0020.0002.10A2F] # KHAROSHTHI LETTER SA
+10A30 ; [.2483.0020.0002.10A30] # KHAROSHTHI LETTER ZA
+10A31 ; [.2484.0020.0002.10A31] # KHAROSHTHI LETTER HA
+10A32 ; [.2485.0020.0002.10A32] # KHAROSHTHI LETTER KKA
+10A33 ; [.2486.0020.0002.10A33] # KHAROSHTHI LETTER TTTHA
+10A3F ; [.2487.0020.0002.10A3F] # KHAROSHTHI VIRAMA
+0E01 ; [.2488.0020.0002.0E01] # THAI CHARACTER KO KAI
+0E40 0E01 ; [.2488.0020.0002.0E01][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KO KAI>
+0E41 0E01 ; [.2488.0020.0002.0E01][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KO KAI>
+0E42 0E01 ; [.2488.0020.0002.0E01][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KO KAI>
+0E43 0E01 ; [.2488.0020.0002.0E01][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KO KAI>
+0E44 0E01 ; [.2488.0020.0002.0E01][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KO KAI>
+0E02 ; [.2489.0020.0002.0E02] # THAI CHARACTER KHO KHAI
+0E40 0E02 ; [.2489.0020.0002.0E02][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHAI>
+0E41 0E02 ; [.2489.0020.0002.0E02][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHAI>
+0E42 0E02 ; [.2489.0020.0002.0E02][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHAI>
+0E43 0E02 ; [.2489.0020.0002.0E02][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHAI>
+0E44 0E02 ; [.2489.0020.0002.0E02][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHAI>
+0E03 ; [.248A.0020.0002.0E03] # THAI CHARACTER KHO KHUAT
+0E40 0E03 ; [.248A.0020.0002.0E03][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHUAT>
+0E41 0E03 ; [.248A.0020.0002.0E03][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHUAT>
+0E42 0E03 ; [.248A.0020.0002.0E03][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHUAT>
+0E43 0E03 ; [.248A.0020.0002.0E03][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHUAT>
+0E44 0E03 ; [.248A.0020.0002.0E03][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHUAT>
+0E04 ; [.248B.0020.0002.0E04] # THAI CHARACTER KHO KHWAI
+0E40 0E04 ; [.248B.0020.0002.0E04][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHWAI>
+0E41 0E04 ; [.248B.0020.0002.0E04][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHWAI>
+0E42 0E04 ; [.248B.0020.0002.0E04][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHWAI>
+0E43 0E04 ; [.248B.0020.0002.0E04][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHWAI>
+0E44 0E04 ; [.248B.0020.0002.0E04][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHWAI>
+0E05 ; [.248C.0020.0002.0E05] # THAI CHARACTER KHO KHON
+0E40 0E05 ; [.248C.0020.0002.0E05][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHON>
+0E41 0E05 ; [.248C.0020.0002.0E05][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHON>
+0E42 0E05 ; [.248C.0020.0002.0E05][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHON>
+0E43 0E05 ; [.248C.0020.0002.0E05][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHON>
+0E44 0E05 ; [.248C.0020.0002.0E05][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHON>
+0E06 ; [.248D.0020.0002.0E06] # THAI CHARACTER KHO RAKHANG
+0E40 0E06 ; [.248D.0020.0002.0E06][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER KHO RAKHANG>
+0E41 0E06 ; [.248D.0020.0002.0E06][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO RAKHANG>
+0E42 0E06 ; [.248D.0020.0002.0E06][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER KHO RAKHANG>
+0E43 0E06 ; [.248D.0020.0002.0E06][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO RAKHANG>
+0E44 0E06 ; [.248D.0020.0002.0E06][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO RAKHANG>
+0E07 ; [.248E.0020.0002.0E07] # THAI CHARACTER NGO NGU
+0E40 0E07 ; [.248E.0020.0002.0E07][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER NGO NGU>
+0E41 0E07 ; [.248E.0020.0002.0E07][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER NGO NGU>
+0E42 0E07 ; [.248E.0020.0002.0E07][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER NGO NGU>
+0E43 0E07 ; [.248E.0020.0002.0E07][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER NGO NGU>
+0E44 0E07 ; [.248E.0020.0002.0E07][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER NGO NGU>
+0E08 ; [.248F.0020.0002.0E08] # THAI CHARACTER CHO CHAN
+0E40 0E08 ; [.248F.0020.0002.0E08][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHAN>
+0E41 0E08 ; [.248F.0020.0002.0E08][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHAN>
+0E42 0E08 ; [.248F.0020.0002.0E08][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHAN>
+0E43 0E08 ; [.248F.0020.0002.0E08][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHAN>
+0E44 0E08 ; [.248F.0020.0002.0E08][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHAN>
+0E09 ; [.2490.0020.0002.0E09] # THAI CHARACTER CHO CHING
+0E40 0E09 ; [.2490.0020.0002.0E09][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHING>
+0E41 0E09 ; [.2490.0020.0002.0E09][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHING>
+0E42 0E09 ; [.2490.0020.0002.0E09][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHING>
+0E43 0E09 ; [.2490.0020.0002.0E09][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHING>
+0E44 0E09 ; [.2490.0020.0002.0E09][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHING>
+0E0A ; [.2491.0020.0002.0E0A] # THAI CHARACTER CHO CHANG
+0E40 0E0A ; [.2491.0020.0002.0E0A][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHANG>
+0E41 0E0A ; [.2491.0020.0002.0E0A][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHANG>
+0E42 0E0A ; [.2491.0020.0002.0E0A][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHANG>
+0E43 0E0A ; [.2491.0020.0002.0E0A][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHANG>
+0E44 0E0A ; [.2491.0020.0002.0E0A][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHANG>
+0E0B ; [.2492.0020.0002.0E0B] # THAI CHARACTER SO SO
+0E40 0E0B ; [.2492.0020.0002.0E0B][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER SO SO>
+0E41 0E0B ; [.2492.0020.0002.0E0B][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER SO SO>
+0E42 0E0B ; [.2492.0020.0002.0E0B][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER SO SO>
+0E43 0E0B ; [.2492.0020.0002.0E0B][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO SO>
+0E44 0E0B ; [.2492.0020.0002.0E0B][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO SO>
+0E0C ; [.2493.0020.0002.0E0C] # THAI CHARACTER CHO CHOE
+0E40 0E0C ; [.2493.0020.0002.0E0C][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHOE>
+0E41 0E0C ; [.2493.0020.0002.0E0C][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHOE>
+0E42 0E0C ; [.2493.0020.0002.0E0C][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHOE>
+0E43 0E0C ; [.2493.0020.0002.0E0C][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHOE>
+0E44 0E0C ; [.2493.0020.0002.0E0C][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHOE>
+0E0D ; [.2494.0020.0002.0E0D] # THAI CHARACTER YO YING
+0E40 0E0D ; [.2494.0020.0002.0E0D][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER YO YING>
+0E41 0E0D ; [.2494.0020.0002.0E0D][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER YO YING>
+0E42 0E0D ; [.2494.0020.0002.0E0D][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER YO YING>
+0E43 0E0D ; [.2494.0020.0002.0E0D][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER YO YING>
+0E44 0E0D ; [.2494.0020.0002.0E0D][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER YO YING>
+0E0E ; [.2495.0020.0002.0E0E] # THAI CHARACTER DO CHADA
+0E40 0E0E ; [.2495.0020.0002.0E0E][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER DO CHADA>
+0E41 0E0E ; [.2495.0020.0002.0E0E][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER DO CHADA>
+0E42 0E0E ; [.2495.0020.0002.0E0E][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER DO CHADA>
+0E43 0E0E ; [.2495.0020.0002.0E0E][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER DO CHADA>
+0E44 0E0E ; [.2495.0020.0002.0E0E][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER DO CHADA>
+0E0F ; [.2496.0020.0002.0E0F] # THAI CHARACTER TO PATAK
+0E40 0E0F ; [.2496.0020.0002.0E0F][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER TO PATAK>
+0E41 0E0F ; [.2496.0020.0002.0E0F][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER TO PATAK>
+0E42 0E0F ; [.2496.0020.0002.0E0F][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER TO PATAK>
+0E43 0E0F ; [.2496.0020.0002.0E0F][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER TO PATAK>
+0E44 0E0F ; [.2496.0020.0002.0E0F][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER TO PATAK>
+0E10 ; [.2497.0020.0002.0E10] # THAI CHARACTER THO THAN
+0E40 0E10 ; [.2497.0020.0002.0E10][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO THAN>
+0E41 0E10 ; [.2497.0020.0002.0E10][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THAN>
+0E42 0E10 ; [.2497.0020.0002.0E10][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO THAN>
+0E43 0E10 ; [.2497.0020.0002.0E10][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THAN>
+0E44 0E10 ; [.2497.0020.0002.0E10][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THAN>
+0E11 ; [.2498.0020.0002.0E11] # THAI CHARACTER THO NANGMONTHO
+0E40 0E11 ; [.2498.0020.0002.0E11][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO NANGMONTHO>
+0E41 0E11 ; [.2498.0020.0002.0E11][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO NANGMONTHO>
+0E42 0E11 ; [.2498.0020.0002.0E11][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO NANGMONTHO>
+0E43 0E11 ; [.2498.0020.0002.0E11][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO NANGMONTHO>
+0E44 0E11 ; [.2498.0020.0002.0E11][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO NANGMONTHO>
+0E12 ; [.2499.0020.0002.0E12] # THAI CHARACTER THO PHUTHAO
+0E40 0E12 ; [.2499.0020.0002.0E12][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO PHUTHAO>
+0E41 0E12 ; [.2499.0020.0002.0E12][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO PHUTHAO>
+0E42 0E12 ; [.2499.0020.0002.0E12][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO PHUTHAO>
+0E43 0E12 ; [.2499.0020.0002.0E12][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO PHUTHAO>
+0E44 0E12 ; [.2499.0020.0002.0E12][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO PHUTHAO>
+0E13 ; [.249A.0020.0002.0E13] # THAI CHARACTER NO NEN
+0E40 0E13 ; [.249A.0020.0002.0E13][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER NO NEN>
+0E41 0E13 ; [.249A.0020.0002.0E13][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER NO NEN>
+0E42 0E13 ; [.249A.0020.0002.0E13][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER NO NEN>
+0E43 0E13 ; [.249A.0020.0002.0E13][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER NO NEN>
+0E44 0E13 ; [.249A.0020.0002.0E13][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER NO NEN>
+0E14 ; [.249B.0020.0002.0E14] # THAI CHARACTER DO DEK
+0E40 0E14 ; [.249B.0020.0002.0E14][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER DO DEK>
+0E41 0E14 ; [.249B.0020.0002.0E14][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER DO DEK>
+0E42 0E14 ; [.249B.0020.0002.0E14][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER DO DEK>
+0E43 0E14 ; [.249B.0020.0002.0E14][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER DO DEK>
+0E44 0E14 ; [.249B.0020.0002.0E14][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER DO DEK>
+0E15 ; [.249C.0020.0002.0E15] # THAI CHARACTER TO TAO
+0E40 0E15 ; [.249C.0020.0002.0E15][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER TO TAO>
+0E41 0E15 ; [.249C.0020.0002.0E15][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER TO TAO>
+0E42 0E15 ; [.249C.0020.0002.0E15][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER TO TAO>
+0E43 0E15 ; [.249C.0020.0002.0E15][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER TO TAO>
+0E44 0E15 ; [.249C.0020.0002.0E15][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER TO TAO>
+0E16 ; [.249D.0020.0002.0E16] # THAI CHARACTER THO THUNG
+0E40 0E16 ; [.249D.0020.0002.0E16][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO THUNG>
+0E41 0E16 ; [.249D.0020.0002.0E16][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THUNG>
+0E42 0E16 ; [.249D.0020.0002.0E16][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO THUNG>
+0E43 0E16 ; [.249D.0020.0002.0E16][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THUNG>
+0E44 0E16 ; [.249D.0020.0002.0E16][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THUNG>
+0E17 ; [.249E.0020.0002.0E17] # THAI CHARACTER THO THAHAN
+0E40 0E17 ; [.249E.0020.0002.0E17][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO THAHAN>
+0E41 0E17 ; [.249E.0020.0002.0E17][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THAHAN>
+0E42 0E17 ; [.249E.0020.0002.0E17][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO THAHAN>
+0E43 0E17 ; [.249E.0020.0002.0E17][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THAHAN>
+0E44 0E17 ; [.249E.0020.0002.0E17][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THAHAN>
+0E18 ; [.249F.0020.0002.0E18] # THAI CHARACTER THO THONG
+0E40 0E18 ; [.249F.0020.0002.0E18][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER THO THONG>
+0E41 0E18 ; [.249F.0020.0002.0E18][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THONG>
+0E42 0E18 ; [.249F.0020.0002.0E18][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER THO THONG>
+0E43 0E18 ; [.249F.0020.0002.0E18][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THONG>
+0E44 0E18 ; [.249F.0020.0002.0E18][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THONG>
+0E19 ; [.24A0.0020.0002.0E19] # THAI CHARACTER NO NU
+0E40 0E19 ; [.24A0.0020.0002.0E19][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER NO NU>
+0E41 0E19 ; [.24A0.0020.0002.0E19][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER NO NU>
+0E42 0E19 ; [.24A0.0020.0002.0E19][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER NO NU>
+0E43 0E19 ; [.24A0.0020.0002.0E19][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER NO NU>
+0E44 0E19 ; [.24A0.0020.0002.0E19][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER NO NU>
+0E1A ; [.24A1.0020.0002.0E1A] # THAI CHARACTER BO BAIMAI
+0E40 0E1A ; [.24A1.0020.0002.0E1A][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER BO BAIMAI>
+0E41 0E1A ; [.24A1.0020.0002.0E1A][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER BO BAIMAI>
+0E42 0E1A ; [.24A1.0020.0002.0E1A][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER BO BAIMAI>
+0E43 0E1A ; [.24A1.0020.0002.0E1A][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER BO BAIMAI>
+0E44 0E1A ; [.24A1.0020.0002.0E1A][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER BO BAIMAI>
+0E1B ; [.24A2.0020.0002.0E1B] # THAI CHARACTER PO PLA
+0E40 0E1B ; [.24A2.0020.0002.0E1B][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER PO PLA>
+0E41 0E1B ; [.24A2.0020.0002.0E1B][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER PO PLA>
+0E42 0E1B ; [.24A2.0020.0002.0E1B][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER PO PLA>
+0E43 0E1B ; [.24A2.0020.0002.0E1B][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PO PLA>
+0E44 0E1B ; [.24A2.0020.0002.0E1B][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PO PLA>
+0E1C ; [.24A3.0020.0002.0E1C] # THAI CHARACTER PHO PHUNG
+0E40 0E1C ; [.24A3.0020.0002.0E1C][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER PHO PHUNG>
+0E41 0E1C ; [.24A3.0020.0002.0E1C][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER PHO PHUNG>
+0E42 0E1C ; [.24A3.0020.0002.0E1C][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER PHO PHUNG>
+0E43 0E1C ; [.24A3.0020.0002.0E1C][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PHO PHUNG>
+0E44 0E1C ; [.24A3.0020.0002.0E1C][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PHO PHUNG>
+0E1D ; [.24A4.0020.0002.0E1D] # THAI CHARACTER FO FA
+0E40 0E1D ; [.24A4.0020.0002.0E1D][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER FO FA>
+0E41 0E1D ; [.24A4.0020.0002.0E1D][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER FO FA>
+0E42 0E1D ; [.24A4.0020.0002.0E1D][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER FO FA>
+0E43 0E1D ; [.24A4.0020.0002.0E1D][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER FO FA>
+0E44 0E1D ; [.24A4.0020.0002.0E1D][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER FO FA>
+0E1E ; [.24A5.0020.0002.0E1E] # THAI CHARACTER PHO PHAN
+0E40 0E1E ; [.24A5.0020.0002.0E1E][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER PHO PHAN>
+0E41 0E1E ; [.24A5.0020.0002.0E1E][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER PHO PHAN>
+0E42 0E1E ; [.24A5.0020.0002.0E1E][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER PHO PHAN>
+0E43 0E1E ; [.24A5.0020.0002.0E1E][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PHO PHAN>
+0E44 0E1E ; [.24A5.0020.0002.0E1E][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PHO PHAN>
+0E1F ; [.24A6.0020.0002.0E1F] # THAI CHARACTER FO FAN
+0E40 0E1F ; [.24A6.0020.0002.0E1F][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER FO FAN>
+0E41 0E1F ; [.24A6.0020.0002.0E1F][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER FO FAN>
+0E42 0E1F ; [.24A6.0020.0002.0E1F][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER FO FAN>
+0E43 0E1F ; [.24A6.0020.0002.0E1F][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER FO FAN>
+0E44 0E1F ; [.24A6.0020.0002.0E1F][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER FO FAN>
+0E20 ; [.24A7.0020.0002.0E20] # THAI CHARACTER PHO SAMPHAO
+0E40 0E20 ; [.24A7.0020.0002.0E20][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER PHO SAMPHAO>
+0E41 0E20 ; [.24A7.0020.0002.0E20][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER PHO SAMPHAO>
+0E42 0E20 ; [.24A7.0020.0002.0E20][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER PHO SAMPHAO>
+0E43 0E20 ; [.24A7.0020.0002.0E20][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PHO SAMPHAO>
+0E44 0E20 ; [.24A7.0020.0002.0E20][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PHO SAMPHAO>
+0E21 ; [.24A8.0020.0002.0E21] # THAI CHARACTER MO MA
+0E40 0E21 ; [.24A8.0020.0002.0E21][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER MO MA>
+0E41 0E21 ; [.24A8.0020.0002.0E21][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER MO MA>
+0E42 0E21 ; [.24A8.0020.0002.0E21][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER MO MA>
+0E43 0E21 ; [.24A8.0020.0002.0E21][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER MO MA>
+0E44 0E21 ; [.24A8.0020.0002.0E21][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER MO MA>
+0E22 ; [.24A9.0020.0002.0E22] # THAI CHARACTER YO YAK
+0E40 0E22 ; [.24A9.0020.0002.0E22][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER YO YAK>
+0E41 0E22 ; [.24A9.0020.0002.0E22][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER YO YAK>
+0E42 0E22 ; [.24A9.0020.0002.0E22][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER YO YAK>
+0E43 0E22 ; [.24A9.0020.0002.0E22][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER YO YAK>
+0E44 0E22 ; [.24A9.0020.0002.0E22][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER YO YAK>
+0E23 ; [.24AA.0020.0002.0E23] # THAI CHARACTER RO RUA
+0E40 0E23 ; [.24AA.0020.0002.0E23][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER RO RUA>
+0E41 0E23 ; [.24AA.0020.0002.0E23][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER RO RUA>
+0E42 0E23 ; [.24AA.0020.0002.0E23][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER RO RUA>
+0E43 0E23 ; [.24AA.0020.0002.0E23][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER RO RUA>
+0E44 0E23 ; [.24AA.0020.0002.0E23][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER RO RUA>
+0E24 ; [.24AB.0020.0002.0E24] # THAI CHARACTER RU
+0E40 0E24 ; [.24AB.0020.0002.0E24][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER RU>
+0E41 0E24 ; [.24AB.0020.0002.0E24][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER RU>
+0E42 0E24 ; [.24AB.0020.0002.0E24][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER RU>
+0E43 0E24 ; [.24AB.0020.0002.0E24][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER RU>
+0E44 0E24 ; [.24AB.0020.0002.0E24][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER RU>
+0E25 ; [.24AC.0020.0002.0E25] # THAI CHARACTER LO LING
+0E40 0E25 ; [.24AC.0020.0002.0E25][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER LO LING>
+0E41 0E25 ; [.24AC.0020.0002.0E25][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER LO LING>
+0E42 0E25 ; [.24AC.0020.0002.0E25][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER LO LING>
+0E43 0E25 ; [.24AC.0020.0002.0E25][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER LO LING>
+0E44 0E25 ; [.24AC.0020.0002.0E25][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER LO LING>
+0E26 ; [.24AD.0020.0002.0E26] # THAI CHARACTER LU
+0E40 0E26 ; [.24AD.0020.0002.0E26][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER LU>
+0E41 0E26 ; [.24AD.0020.0002.0E26][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER LU>
+0E42 0E26 ; [.24AD.0020.0002.0E26][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER LU>
+0E43 0E26 ; [.24AD.0020.0002.0E26][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER LU>
+0E44 0E26 ; [.24AD.0020.0002.0E26][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER LU>
+0E27 ; [.24AE.0020.0002.0E27] # THAI CHARACTER WO WAEN
+0E40 0E27 ; [.24AE.0020.0002.0E27][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER WO WAEN>
+0E41 0E27 ; [.24AE.0020.0002.0E27][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER WO WAEN>
+0E42 0E27 ; [.24AE.0020.0002.0E27][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER WO WAEN>
+0E43 0E27 ; [.24AE.0020.0002.0E27][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER WO WAEN>
+0E44 0E27 ; [.24AE.0020.0002.0E27][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER WO WAEN>
+0E28 ; [.24AF.0020.0002.0E28] # THAI CHARACTER SO SALA
+0E40 0E28 ; [.24AF.0020.0002.0E28][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER SO SALA>
+0E41 0E28 ; [.24AF.0020.0002.0E28][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER SO SALA>
+0E42 0E28 ; [.24AF.0020.0002.0E28][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER SO SALA>
+0E43 0E28 ; [.24AF.0020.0002.0E28][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO SALA>
+0E44 0E28 ; [.24AF.0020.0002.0E28][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO SALA>
+0E29 ; [.24B0.0020.0002.0E29] # THAI CHARACTER SO RUSI
+0E40 0E29 ; [.24B0.0020.0002.0E29][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER SO RUSI>
+0E41 0E29 ; [.24B0.0020.0002.0E29][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER SO RUSI>
+0E42 0E29 ; [.24B0.0020.0002.0E29][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER SO RUSI>
+0E43 0E29 ; [.24B0.0020.0002.0E29][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO RUSI>
+0E44 0E29 ; [.24B0.0020.0002.0E29][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO RUSI>
+0E2A ; [.24B1.0020.0002.0E2A] # THAI CHARACTER SO SUA
+0E40 0E2A ; [.24B1.0020.0002.0E2A][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER SO SUA>
+0E41 0E2A ; [.24B1.0020.0002.0E2A][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER SO SUA>
+0E42 0E2A ; [.24B1.0020.0002.0E2A][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER SO SUA>
+0E43 0E2A ; [.24B1.0020.0002.0E2A][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO SUA>
+0E44 0E2A ; [.24B1.0020.0002.0E2A][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO SUA>
+0E2B ; [.24B2.0020.0002.0E2B] # THAI CHARACTER HO HIP
+0E40 0E2B ; [.24B2.0020.0002.0E2B][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER HO HIP>
+0E41 0E2B ; [.24B2.0020.0002.0E2B][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER HO HIP>
+0E42 0E2B ; [.24B2.0020.0002.0E2B][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER HO HIP>
+0E43 0E2B ; [.24B2.0020.0002.0E2B][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER HO HIP>
+0E44 0E2B ; [.24B2.0020.0002.0E2B][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER HO HIP>
+0E2C ; [.24B3.0020.0002.0E2C] # THAI CHARACTER LO CHULA
+0E40 0E2C ; [.24B3.0020.0002.0E2C][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER LO CHULA>
+0E41 0E2C ; [.24B3.0020.0002.0E2C][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER LO CHULA>
+0E42 0E2C ; [.24B3.0020.0002.0E2C][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER LO CHULA>
+0E43 0E2C ; [.24B3.0020.0002.0E2C][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER LO CHULA>
+0E44 0E2C ; [.24B3.0020.0002.0E2C][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER LO CHULA>
+0E2D ; [.24B4.0020.0002.0E2D] # THAI CHARACTER O ANG
+0E40 0E2D ; [.24B4.0020.0002.0E2D][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER O ANG>
+0E41 0E2D ; [.24B4.0020.0002.0E2D][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER O ANG>
+0E42 0E2D ; [.24B4.0020.0002.0E2D][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER O ANG>
+0E43 0E2D ; [.24B4.0020.0002.0E2D][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER O ANG>
+0E44 0E2D ; [.24B4.0020.0002.0E2D][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER O ANG>
+0E2E ; [.24B5.0020.0002.0E2E] # THAI CHARACTER HO NOKHUK
+0E40 0E2E ; [.24B5.0020.0002.0E2E][.24C2.0020.0002.0E40] # <THAI CHARACTER SARA E, THAI CHARACTER HO NOKHUK>
+0E41 0E2E ; [.24B5.0020.0002.0E2E][.24C3.0020.0002.0E41] # <THAI CHARACTER SARA AE, THAI CHARACTER HO NOKHUK>
+0E42 0E2E ; [.24B5.0020.0002.0E2E][.24C4.0020.0002.0E42] # <THAI CHARACTER SARA O, THAI CHARACTER HO NOKHUK>
+0E43 0E2E ; [.24B5.0020.0002.0E2E][.24C5.0020.0002.0E43] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER HO NOKHUK>
+0E44 0E2E ; [.24B5.0020.0002.0E2E][.24C6.0020.0002.0E44] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER HO NOKHUK>
+0E2F ; [.24B6.0020.0002.0E2F] # THAI CHARACTER PAIYANNOI
+0E30 ; [.24B7.0020.0002.0E30] # THAI CHARACTER SARA A
+0E31 ; [.24B8.0020.0002.0E31] # THAI CHARACTER MAI HAN-AKAT
+0E32 ; [.24B9.0020.0002.0E32] # THAI CHARACTER SARA AA
+0E33 ; [.24BA.0020.0002.0E33] # THAI CHARACTER SARA AM
+0E4D 0E32 ; [.24BA.0020.0002.0E33] # THAI CHARACTER SARA AM
+0E34 ; [.24BB.0020.0002.0E34] # THAI CHARACTER SARA I
+0E35 ; [.24BC.0020.0002.0E35] # THAI CHARACTER SARA II
+0E36 ; [.24BD.0020.0002.0E36] # THAI CHARACTER SARA UE
+0E37 ; [.24BE.0020.0002.0E37] # THAI CHARACTER SARA UEE
+0E38 ; [.24BF.0020.0002.0E38] # THAI CHARACTER SARA U
+0E39 ; [.24C0.0020.0002.0E39] # THAI CHARACTER SARA UU
+0E3A ; [.24C1.0020.0002.0E3A] # THAI CHARACTER PHINTHU
+0E40 ; [.24C2.0020.0002.0E40] # THAI CHARACTER SARA E
+0E41 ; [.24C3.0020.0002.0E41] # THAI CHARACTER SARA AE
+0E42 ; [.24C4.0020.0002.0E42] # THAI CHARACTER SARA O
+0E43 ; [.24C5.0020.0002.0E43] # THAI CHARACTER SARA AI MAIMUAN
+0E44 ; [.24C6.0020.0002.0E44] # THAI CHARACTER SARA AI MAIMALAI
+0E45 ; [.24C7.0020.0002.0E45] # THAI CHARACTER LAKKHANGYAO
+0EDE ; [.24C8.0020.0002.0EDE] # LAO LETTER KHMU GO
+0EC0 0EDE ; [.24C8.0020.0002.0EDE][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER KHMU GO>
+0EC1 0EDE ; [.24C8.0020.0002.0EDE][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER KHMU GO>
+0EC2 0EDE ; [.24C8.0020.0002.0EDE][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER KHMU GO>
+0EC3 0EDE ; [.24C8.0020.0002.0EDE][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER KHMU GO>
+0EC4 0EDE ; [.24C8.0020.0002.0EDE][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER KHMU GO>
+0E81 ; [.24C9.0020.0002.0E81] # LAO LETTER KO
+0EC0 0E81 ; [.24C9.0020.0002.0E81][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER KO>
+0EC1 0E81 ; [.24C9.0020.0002.0E81][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER KO>
+0EC2 0E81 ; [.24C9.0020.0002.0E81][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER KO>
+0EC3 0E81 ; [.24C9.0020.0002.0E81][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER KO>
+0EC4 0E81 ; [.24C9.0020.0002.0E81][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER KO>
+0E82 ; [.24CA.0020.0002.0E82] # LAO LETTER KHO SUNG
+0EC0 0E82 ; [.24CA.0020.0002.0E82][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER KHO SUNG>
+0EC1 0E82 ; [.24CA.0020.0002.0E82][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER KHO SUNG>
+0EC2 0E82 ; [.24CA.0020.0002.0E82][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER KHO SUNG>
+0EC3 0E82 ; [.24CA.0020.0002.0E82][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER KHO SUNG>
+0EC4 0E82 ; [.24CA.0020.0002.0E82][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER KHO SUNG>
+0E84 ; [.24CB.0020.0002.0E84] # LAO LETTER KHO TAM
+0EC0 0E84 ; [.24CB.0020.0002.0E84][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER KHO TAM>
+0EC1 0E84 ; [.24CB.0020.0002.0E84][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER KHO TAM>
+0EC2 0E84 ; [.24CB.0020.0002.0E84][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER KHO TAM>
+0EC3 0E84 ; [.24CB.0020.0002.0E84][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER KHO TAM>
+0EC4 0E84 ; [.24CB.0020.0002.0E84][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER KHO TAM>
+0E87 ; [.24CC.0020.0002.0E87] # LAO LETTER NGO
+0EC0 0E87 ; [.24CC.0020.0002.0E87][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER NGO>
+0EC1 0E87 ; [.24CC.0020.0002.0E87][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER NGO>
+0EC2 0E87 ; [.24CC.0020.0002.0E87][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER NGO>
+0EC3 0E87 ; [.24CC.0020.0002.0E87][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER NGO>
+0EC4 0E87 ; [.24CC.0020.0002.0E87][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER NGO>
+0E88 ; [.24CD.0020.0002.0E88] # LAO LETTER CO
+0EC0 0E88 ; [.24CD.0020.0002.0E88][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER CO>
+0EC1 0E88 ; [.24CD.0020.0002.0E88][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER CO>
+0EC2 0E88 ; [.24CD.0020.0002.0E88][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER CO>
+0EC3 0E88 ; [.24CD.0020.0002.0E88][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER CO>
+0EC4 0E88 ; [.24CD.0020.0002.0E88][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER CO>
+0EAA ; [.24CE.0020.0002.0EAA] # LAO LETTER SO SUNG
+0EC0 0EAA ; [.24CE.0020.0002.0EAA][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER SO SUNG>
+0EC1 0EAA ; [.24CE.0020.0002.0EAA][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER SO SUNG>
+0EC2 0EAA ; [.24CE.0020.0002.0EAA][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER SO SUNG>
+0EC3 0EAA ; [.24CE.0020.0002.0EAA][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER SO SUNG>
+0EC4 0EAA ; [.24CE.0020.0002.0EAA][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER SO SUNG>
+0E8A ; [.24CF.0020.0002.0E8A] # LAO LETTER SO TAM
+0EC0 0E8A ; [.24CF.0020.0002.0E8A][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER SO TAM>
+0EC1 0E8A ; [.24CF.0020.0002.0E8A][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER SO TAM>
+0EC2 0E8A ; [.24CF.0020.0002.0E8A][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER SO TAM>
+0EC3 0E8A ; [.24CF.0020.0002.0E8A][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER SO TAM>
+0EC4 0E8A ; [.24CF.0020.0002.0E8A][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER SO TAM>
+0EDF ; [.24D0.0020.0002.0EDF] # LAO LETTER KHMU NYO
+0EC0 0EDF ; [.24D0.0020.0002.0EDF][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER KHMU NYO>
+0EC1 0EDF ; [.24D0.0020.0002.0EDF][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER KHMU NYO>
+0EC2 0EDF ; [.24D0.0020.0002.0EDF][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER KHMU NYO>
+0EC3 0EDF ; [.24D0.0020.0002.0EDF][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER KHMU NYO>
+0EC4 0EDF ; [.24D0.0020.0002.0EDF][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER KHMU NYO>
+0E8D ; [.24D1.0020.0002.0E8D] # LAO LETTER NYO
+0EC0 0E8D ; [.24D1.0020.0002.0E8D][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER NYO>
+0EC1 0E8D ; [.24D1.0020.0002.0E8D][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER NYO>
+0EC2 0E8D ; [.24D1.0020.0002.0E8D][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER NYO>
+0EC3 0E8D ; [.24D1.0020.0002.0E8D][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER NYO>
+0EC4 0E8D ; [.24D1.0020.0002.0E8D][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER NYO>
+0E94 ; [.24D2.0020.0002.0E94] # LAO LETTER DO
+0EC0 0E94 ; [.24D2.0020.0002.0E94][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER DO>
+0EC1 0E94 ; [.24D2.0020.0002.0E94][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER DO>
+0EC2 0E94 ; [.24D2.0020.0002.0E94][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER DO>
+0EC3 0E94 ; [.24D2.0020.0002.0E94][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER DO>
+0EC4 0E94 ; [.24D2.0020.0002.0E94][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER DO>
+0E95 ; [.24D3.0020.0002.0E95] # LAO LETTER TO
+0EC0 0E95 ; [.24D3.0020.0002.0E95][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER TO>
+0EC1 0E95 ; [.24D3.0020.0002.0E95][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER TO>
+0EC2 0E95 ; [.24D3.0020.0002.0E95][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER TO>
+0EC3 0E95 ; [.24D3.0020.0002.0E95][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER TO>
+0EC4 0E95 ; [.24D3.0020.0002.0E95][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER TO>
+0E96 ; [.24D4.0020.0002.0E96] # LAO LETTER THO SUNG
+0EC0 0E96 ; [.24D4.0020.0002.0E96][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER THO SUNG>
+0EC1 0E96 ; [.24D4.0020.0002.0E96][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER THO SUNG>
+0EC2 0E96 ; [.24D4.0020.0002.0E96][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER THO SUNG>
+0EC3 0E96 ; [.24D4.0020.0002.0E96][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER THO SUNG>
+0EC4 0E96 ; [.24D4.0020.0002.0E96][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER THO SUNG>
+0E97 ; [.24D5.0020.0002.0E97] # LAO LETTER THO TAM
+0EC0 0E97 ; [.24D5.0020.0002.0E97][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER THO TAM>
+0EC1 0E97 ; [.24D5.0020.0002.0E97][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER THO TAM>
+0EC2 0E97 ; [.24D5.0020.0002.0E97][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER THO TAM>
+0EC3 0E97 ; [.24D5.0020.0002.0E97][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER THO TAM>
+0EC4 0E97 ; [.24D5.0020.0002.0E97][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER THO TAM>
+0E99 ; [.24D6.0020.0002.0E99] # LAO LETTER NO
+0EC0 0E99 ; [.24D6.0020.0002.0E99][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER NO>
+0EC1 0E99 ; [.24D6.0020.0002.0E99][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER NO>
+0EC2 0E99 ; [.24D6.0020.0002.0E99][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER NO>
+0EC3 0E99 ; [.24D6.0020.0002.0E99][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER NO>
+0EC4 0E99 ; [.24D6.0020.0002.0E99][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER NO>
+0E9A ; [.24D7.0020.0002.0E9A] # LAO LETTER BO
+0EC0 0E9A ; [.24D7.0020.0002.0E9A][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER BO>
+0EC1 0E9A ; [.24D7.0020.0002.0E9A][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER BO>
+0EC2 0E9A ; [.24D7.0020.0002.0E9A][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER BO>
+0EC3 0E9A ; [.24D7.0020.0002.0E9A][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER BO>
+0EC4 0E9A ; [.24D7.0020.0002.0E9A][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER BO>
+0E9B ; [.24D8.0020.0002.0E9B] # LAO LETTER PO
+0EC0 0E9B ; [.24D8.0020.0002.0E9B][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER PO>
+0EC1 0E9B ; [.24D8.0020.0002.0E9B][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER PO>
+0EC2 0E9B ; [.24D8.0020.0002.0E9B][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER PO>
+0EC3 0E9B ; [.24D8.0020.0002.0E9B][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER PO>
+0EC4 0E9B ; [.24D8.0020.0002.0E9B][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER PO>
+0E9C ; [.24D9.0020.0002.0E9C] # LAO LETTER PHO SUNG
+0EC0 0E9C ; [.24D9.0020.0002.0E9C][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER PHO SUNG>
+0EC1 0E9C ; [.24D9.0020.0002.0E9C][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER PHO SUNG>
+0EC2 0E9C ; [.24D9.0020.0002.0E9C][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER PHO SUNG>
+0EC3 0E9C ; [.24D9.0020.0002.0E9C][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER PHO SUNG>
+0EC4 0E9C ; [.24D9.0020.0002.0E9C][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER PHO SUNG>
+0E9D ; [.24DA.0020.0002.0E9D] # LAO LETTER FO TAM
+0EC0 0E9D ; [.24DA.0020.0002.0E9D][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER FO TAM>
+0EC1 0E9D ; [.24DA.0020.0002.0E9D][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER FO TAM>
+0EC2 0E9D ; [.24DA.0020.0002.0E9D][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER FO TAM>
+0EC3 0E9D ; [.24DA.0020.0002.0E9D][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER FO TAM>
+0EC4 0E9D ; [.24DA.0020.0002.0E9D][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER FO TAM>
+0E9E ; [.24DB.0020.0002.0E9E] # LAO LETTER PHO TAM
+0EC0 0E9E ; [.24DB.0020.0002.0E9E][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER PHO TAM>
+0EC1 0E9E ; [.24DB.0020.0002.0E9E][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER PHO TAM>
+0EC2 0E9E ; [.24DB.0020.0002.0E9E][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER PHO TAM>
+0EC3 0E9E ; [.24DB.0020.0002.0E9E][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER PHO TAM>
+0EC4 0E9E ; [.24DB.0020.0002.0E9E][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER PHO TAM>
+0E9F ; [.24DC.0020.0002.0E9F] # LAO LETTER FO SUNG
+0EC0 0E9F ; [.24DC.0020.0002.0E9F][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER FO SUNG>
+0EC1 0E9F ; [.24DC.0020.0002.0E9F][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER FO SUNG>
+0EC2 0E9F ; [.24DC.0020.0002.0E9F][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER FO SUNG>
+0EC3 0E9F ; [.24DC.0020.0002.0E9F][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER FO SUNG>
+0EC4 0E9F ; [.24DC.0020.0002.0E9F][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER FO SUNG>
+0EA1 ; [.24DD.0020.0002.0EA1] # LAO LETTER MO
+0EC0 0EA1 ; [.24DD.0020.0002.0EA1][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER MO>
+0EC1 0EA1 ; [.24DD.0020.0002.0EA1][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER MO>
+0EC2 0EA1 ; [.24DD.0020.0002.0EA1][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER MO>
+0EC3 0EA1 ; [.24DD.0020.0002.0EA1][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER MO>
+0EC4 0EA1 ; [.24DD.0020.0002.0EA1][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER MO>
+0EA2 ; [.24DE.0020.0002.0EA2] # LAO LETTER YO
+0EC0 0EA2 ; [.24DE.0020.0002.0EA2][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER YO>
+0EC1 0EA2 ; [.24DE.0020.0002.0EA2][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER YO>
+0EC2 0EA2 ; [.24DE.0020.0002.0EA2][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER YO>
+0EC3 0EA2 ; [.24DE.0020.0002.0EA2][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER YO>
+0EC4 0EA2 ; [.24DE.0020.0002.0EA2][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER YO>
+0EA3 ; [.24DF.0020.0002.0EA3] # LAO LETTER LO LING
+0EC0 0EA3 ; [.24DF.0020.0002.0EA3][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER LO LING>
+0EC1 0EA3 ; [.24DF.0020.0002.0EA3][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER LO LING>
+0EC2 0EA3 ; [.24DF.0020.0002.0EA3][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER LO LING>
+0EC3 0EA3 ; [.24DF.0020.0002.0EA3][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER LO LING>
+0EC4 0EA3 ; [.24DF.0020.0002.0EA3][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER LO LING>
+0EA5 ; [.24E0.0020.0002.0EA5] # LAO LETTER LO LOOT
+0EC0 0EA5 ; [.24E0.0020.0002.0EA5][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER LO LOOT>
+0EC1 0EA5 ; [.24E0.0020.0002.0EA5][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER LO LOOT>
+0EC2 0EA5 ; [.24E0.0020.0002.0EA5][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER LO LOOT>
+0EC3 0EA5 ; [.24E0.0020.0002.0EA5][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER LO LOOT>
+0EC4 0EA5 ; [.24E0.0020.0002.0EA5][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER LO LOOT>
+0EA7 ; [.24E1.0020.0002.0EA7] # LAO LETTER WO
+0EC0 0EA7 ; [.24E1.0020.0002.0EA7][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER WO>
+0EC1 0EA7 ; [.24E1.0020.0002.0EA7][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER WO>
+0EC2 0EA7 ; [.24E1.0020.0002.0EA7][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER WO>
+0EC3 0EA7 ; [.24E1.0020.0002.0EA7][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER WO>
+0EC4 0EA7 ; [.24E1.0020.0002.0EA7][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER WO>
+0EAB ; [.24E2.0020.0002.0EAB] # LAO LETTER HO SUNG
+0EDC ; [.24E2.0020.0004.0EDC][.24D6.0020.0004.0EDC] # LAO HO NO
+0EC0 0EDC ; [.24E2.0020.0004.0EDC][.24D6.0020.0004.0EDC][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO HO NO>
+0EC1 0EDC ; [.24E2.0020.0004.0EDC][.24D6.0020.0004.0EDC][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO HO NO>
+0EC2 0EDC ; [.24E2.0020.0004.0EDC][.24D6.0020.0004.0EDC][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO HO NO>
+0EC3 0EDC ; [.24E2.0020.0004.0EDC][.24D6.0020.0004.0EDC][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO HO NO>
+0EC4 0EDC ; [.24E2.0020.0004.0EDC][.24D6.0020.0004.0EDC][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO HO NO>
+0EDD ; [.24E2.0020.0004.0EDD][.24DD.0020.0004.0EDD] # LAO HO MO
+0EC0 0EDD ; [.24E2.0020.0004.0EDD][.24DD.0020.0004.0EDD][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO HO MO>
+0EC1 0EDD ; [.24E2.0020.0004.0EDD][.24DD.0020.0004.0EDD][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO HO MO>
+0EC2 0EDD ; [.24E2.0020.0004.0EDD][.24DD.0020.0004.0EDD][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO HO MO>
+0EC3 0EDD ; [.24E2.0020.0004.0EDD][.24DD.0020.0004.0EDD][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO HO MO>
+0EC4 0EDD ; [.24E2.0020.0004.0EDD][.24DD.0020.0004.0EDD][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO HO MO>
+0EC0 0EAB ; [.24E2.0020.0002.0EAB][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER HO SUNG>
+0EC1 0EAB ; [.24E2.0020.0002.0EAB][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER HO SUNG>
+0EC2 0EAB ; [.24E2.0020.0002.0EAB][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER HO SUNG>
+0EC3 0EAB ; [.24E2.0020.0002.0EAB][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER HO SUNG>
+0EC4 0EAB ; [.24E2.0020.0002.0EAB][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER HO SUNG>
+0EAD ; [.24E3.0020.0002.0EAD] # LAO LETTER O
+0EC0 0EAD ; [.24E3.0020.0002.0EAD][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER O>
+0EC1 0EAD ; [.24E3.0020.0002.0EAD][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER O>
+0EC2 0EAD ; [.24E3.0020.0002.0EAD][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER O>
+0EC3 0EAD ; [.24E3.0020.0002.0EAD][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER O>
+0EC4 0EAD ; [.24E3.0020.0002.0EAD][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER O>
+0EAE ; [.24E4.0020.0002.0EAE] # LAO LETTER HO TAM
+0EC0 0EAE ; [.24E4.0020.0002.0EAE][.24F3.0020.0002.0EC0] # <LAO VOWEL SIGN E, LAO LETTER HO TAM>
+0EC1 0EAE ; [.24E4.0020.0002.0EAE][.24F4.0020.0002.0EC1] # <LAO VOWEL SIGN EI, LAO LETTER HO TAM>
+0EC2 0EAE ; [.24E4.0020.0002.0EAE][.24F5.0020.0002.0EC2] # <LAO VOWEL SIGN O, LAO LETTER HO TAM>
+0EC3 0EAE ; [.24E4.0020.0002.0EAE][.24F6.0020.0002.0EC3] # <LAO VOWEL SIGN AY, LAO LETTER HO TAM>
+0EC4 0EAE ; [.24E4.0020.0002.0EAE][.24F7.0020.0002.0EC4] # <LAO VOWEL SIGN AI, LAO LETTER HO TAM>
+0EAF ; [.24E5.0020.0002.0EAF] # LAO ELLIPSIS
+0EB0 ; [.24E6.0020.0002.0EB0] # LAO VOWEL SIGN A
+0EB1 ; [.24E7.0020.0002.0EB1] # LAO VOWEL SIGN MAI KAN
+0EB2 ; [.24E8.0020.0002.0EB2] # LAO VOWEL SIGN AA
+0EB3 ; [.24E9.0020.0002.0EB3] # LAO VOWEL SIGN AM
+0ECD 0EB2 ; [.24E9.0020.0002.0EB3] # LAO VOWEL SIGN AM
+0EB4 ; [.24EA.0020.0002.0EB4] # LAO VOWEL SIGN I
+0EB5 ; [.24EB.0020.0002.0EB5] # LAO VOWEL SIGN II
+0EB6 ; [.24EC.0020.0002.0EB6] # LAO VOWEL SIGN Y
+0EB7 ; [.24ED.0020.0002.0EB7] # LAO VOWEL SIGN YY
+0EB8 ; [.24EE.0020.0002.0EB8] # LAO VOWEL SIGN U
+0EB9 ; [.24EF.0020.0002.0EB9] # LAO VOWEL SIGN UU
+0EBB ; [.24F0.0020.0002.0EBB] # LAO VOWEL SIGN MAI KON
+0EBC ; [.24F1.0020.0002.0EBC] # LAO SEMIVOWEL SIGN LO
+0EBD ; [.24F2.0020.0002.0EBD] # LAO SEMIVOWEL SIGN NYO
+0EC0 ; [.24F3.0020.0002.0EC0] # LAO VOWEL SIGN E
+0EC1 ; [.24F4.0020.0002.0EC1] # LAO VOWEL SIGN EI
+0EC2 ; [.24F5.0020.0002.0EC2] # LAO VOWEL SIGN O
+0EC3 ; [.24F6.0020.0002.0EC3] # LAO VOWEL SIGN AY
+0EC4 ; [.24F7.0020.0002.0EC4] # LAO VOWEL SIGN AI
+AA80 ; [.24F8.0020.0002.AA80] # TAI VIET LETTER LOW KO
+AAB5 AA80 ; [.24F8.0020.0002.AA80][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW KO>
+AAB6 AA80 ; [.24F8.0020.0002.AA80][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW KO>
+AAB9 AA80 ; [.24F8.0020.0002.AA80][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW KO>
+AABB AA80 ; [.24F8.0020.0002.AA80][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW KO>
+AABC AA80 ; [.24F8.0020.0002.AA80][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW KO>
+AA81 ; [.24F9.0020.0002.AA81] # TAI VIET LETTER HIGH KO
+AAB5 AA81 ; [.24F9.0020.0002.AA81][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH KO>
+AAB6 AA81 ; [.24F9.0020.0002.AA81][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH KO>
+AAB9 AA81 ; [.24F9.0020.0002.AA81][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH KO>
+AABB AA81 ; [.24F9.0020.0002.AA81][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH KO>
+AABC AA81 ; [.24F9.0020.0002.AA81][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH KO>
+AA82 ; [.24FA.0020.0002.AA82] # TAI VIET LETTER LOW KHO
+AAB5 AA82 ; [.24FA.0020.0002.AA82][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW KHO>
+AAB6 AA82 ; [.24FA.0020.0002.AA82][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW KHO>
+AAB9 AA82 ; [.24FA.0020.0002.AA82][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW KHO>
+AABB AA82 ; [.24FA.0020.0002.AA82][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW KHO>
+AABC AA82 ; [.24FA.0020.0002.AA82][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW KHO>
+AA83 ; [.24FB.0020.0002.AA83] # TAI VIET LETTER HIGH KHO
+AAB5 AA83 ; [.24FB.0020.0002.AA83][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH KHO>
+AAB6 AA83 ; [.24FB.0020.0002.AA83][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH KHO>
+AAB9 AA83 ; [.24FB.0020.0002.AA83][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH KHO>
+AABB AA83 ; [.24FB.0020.0002.AA83][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH KHO>
+AABC AA83 ; [.24FB.0020.0002.AA83][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH KHO>
+AA84 ; [.24FC.0020.0002.AA84] # TAI VIET LETTER LOW KHHO
+AAB5 AA84 ; [.24FC.0020.0002.AA84][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW KHHO>
+AAB6 AA84 ; [.24FC.0020.0002.AA84][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW KHHO>
+AAB9 AA84 ; [.24FC.0020.0002.AA84][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW KHHO>
+AABB AA84 ; [.24FC.0020.0002.AA84][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW KHHO>
+AABC AA84 ; [.24FC.0020.0002.AA84][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW KHHO>
+AA85 ; [.24FD.0020.0002.AA85] # TAI VIET LETTER HIGH KHHO
+AAB5 AA85 ; [.24FD.0020.0002.AA85][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH KHHO>
+AAB6 AA85 ; [.24FD.0020.0002.AA85][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH KHHO>
+AAB9 AA85 ; [.24FD.0020.0002.AA85][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH KHHO>
+AABB AA85 ; [.24FD.0020.0002.AA85][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH KHHO>
+AABC AA85 ; [.24FD.0020.0002.AA85][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH KHHO>
+AA86 ; [.24FE.0020.0002.AA86] # TAI VIET LETTER LOW GO
+AAB5 AA86 ; [.24FE.0020.0002.AA86][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW GO>
+AAB6 AA86 ; [.24FE.0020.0002.AA86][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW GO>
+AAB9 AA86 ; [.24FE.0020.0002.AA86][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW GO>
+AABB AA86 ; [.24FE.0020.0002.AA86][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW GO>
+AABC AA86 ; [.24FE.0020.0002.AA86][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW GO>
+AA87 ; [.24FF.0020.0002.AA87] # TAI VIET LETTER HIGH GO
+AAB5 AA87 ; [.24FF.0020.0002.AA87][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH GO>
+AAB6 AA87 ; [.24FF.0020.0002.AA87][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH GO>
+AAB9 AA87 ; [.24FF.0020.0002.AA87][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH GO>
+AABB AA87 ; [.24FF.0020.0002.AA87][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH GO>
+AABC AA87 ; [.24FF.0020.0002.AA87][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH GO>
+AA88 ; [.2500.0020.0002.AA88] # TAI VIET LETTER LOW NGO
+AAB5 AA88 ; [.2500.0020.0002.AA88][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW NGO>
+AAB6 AA88 ; [.2500.0020.0002.AA88][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW NGO>
+AAB9 AA88 ; [.2500.0020.0002.AA88][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW NGO>
+AABB AA88 ; [.2500.0020.0002.AA88][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW NGO>
+AABC AA88 ; [.2500.0020.0002.AA88][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW NGO>
+AA89 ; [.2501.0020.0002.AA89] # TAI VIET LETTER HIGH NGO
+AAB5 AA89 ; [.2501.0020.0002.AA89][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH NGO>
+AAB6 AA89 ; [.2501.0020.0002.AA89][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH NGO>
+AAB9 AA89 ; [.2501.0020.0002.AA89][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH NGO>
+AABB AA89 ; [.2501.0020.0002.AA89][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH NGO>
+AABC AA89 ; [.2501.0020.0002.AA89][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH NGO>
+AA8A ; [.2502.0020.0002.AA8A] # TAI VIET LETTER LOW CO
+AAB5 AA8A ; [.2502.0020.0002.AA8A][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW CO>
+AAB6 AA8A ; [.2502.0020.0002.AA8A][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW CO>
+AAB9 AA8A ; [.2502.0020.0002.AA8A][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW CO>
+AABB AA8A ; [.2502.0020.0002.AA8A][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW CO>
+AABC AA8A ; [.2502.0020.0002.AA8A][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW CO>
+AA8B ; [.2503.0020.0002.AA8B] # TAI VIET LETTER HIGH CO
+AAB5 AA8B ; [.2503.0020.0002.AA8B][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH CO>
+AAB6 AA8B ; [.2503.0020.0002.AA8B][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH CO>
+AAB9 AA8B ; [.2503.0020.0002.AA8B][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH CO>
+AABB AA8B ; [.2503.0020.0002.AA8B][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH CO>
+AABC AA8B ; [.2503.0020.0002.AA8B][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH CO>
+AA8C ; [.2504.0020.0002.AA8C] # TAI VIET LETTER LOW CHO
+AAB5 AA8C ; [.2504.0020.0002.AA8C][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW CHO>
+AAB6 AA8C ; [.2504.0020.0002.AA8C][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW CHO>
+AAB9 AA8C ; [.2504.0020.0002.AA8C][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW CHO>
+AABB AA8C ; [.2504.0020.0002.AA8C][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW CHO>
+AABC AA8C ; [.2504.0020.0002.AA8C][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW CHO>
+AA8D ; [.2505.0020.0002.AA8D] # TAI VIET LETTER HIGH CHO
+AAB5 AA8D ; [.2505.0020.0002.AA8D][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH CHO>
+AAB6 AA8D ; [.2505.0020.0002.AA8D][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH CHO>
+AAB9 AA8D ; [.2505.0020.0002.AA8D][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH CHO>
+AABB AA8D ; [.2505.0020.0002.AA8D][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH CHO>
+AABC AA8D ; [.2505.0020.0002.AA8D][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH CHO>
+AA8E ; [.2506.0020.0002.AA8E] # TAI VIET LETTER LOW SO
+AAB5 AA8E ; [.2506.0020.0002.AA8E][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW SO>
+AAB6 AA8E ; [.2506.0020.0002.AA8E][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW SO>
+AAB9 AA8E ; [.2506.0020.0002.AA8E][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW SO>
+AABB AA8E ; [.2506.0020.0002.AA8E][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW SO>
+AABC AA8E ; [.2506.0020.0002.AA8E][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW SO>
+AA8F ; [.2507.0020.0002.AA8F] # TAI VIET LETTER HIGH SO
+AAB5 AA8F ; [.2507.0020.0002.AA8F][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH SO>
+AAB6 AA8F ; [.2507.0020.0002.AA8F][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH SO>
+AAB9 AA8F ; [.2507.0020.0002.AA8F][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH SO>
+AABB AA8F ; [.2507.0020.0002.AA8F][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH SO>
+AABC AA8F ; [.2507.0020.0002.AA8F][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH SO>
+AA90 ; [.2508.0020.0002.AA90] # TAI VIET LETTER LOW NYO
+AAB5 AA90 ; [.2508.0020.0002.AA90][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW NYO>
+AAB6 AA90 ; [.2508.0020.0002.AA90][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW NYO>
+AAB9 AA90 ; [.2508.0020.0002.AA90][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW NYO>
+AABB AA90 ; [.2508.0020.0002.AA90][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW NYO>
+AABC AA90 ; [.2508.0020.0002.AA90][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW NYO>
+AA91 ; [.2509.0020.0002.AA91] # TAI VIET LETTER HIGH NYO
+AAB5 AA91 ; [.2509.0020.0002.AA91][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH NYO>
+AAB6 AA91 ; [.2509.0020.0002.AA91][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH NYO>
+AAB9 AA91 ; [.2509.0020.0002.AA91][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH NYO>
+AABB AA91 ; [.2509.0020.0002.AA91][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH NYO>
+AABC AA91 ; [.2509.0020.0002.AA91][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH NYO>
+AA92 ; [.250A.0020.0002.AA92] # TAI VIET LETTER LOW DO
+AAB5 AA92 ; [.250A.0020.0002.AA92][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW DO>
+AAB6 AA92 ; [.250A.0020.0002.AA92][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW DO>
+AAB9 AA92 ; [.250A.0020.0002.AA92][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW DO>
+AABB AA92 ; [.250A.0020.0002.AA92][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW DO>
+AABC AA92 ; [.250A.0020.0002.AA92][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW DO>
+AA93 ; [.250B.0020.0002.AA93] # TAI VIET LETTER HIGH DO
+AAB5 AA93 ; [.250B.0020.0002.AA93][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH DO>
+AAB6 AA93 ; [.250B.0020.0002.AA93][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH DO>
+AAB9 AA93 ; [.250B.0020.0002.AA93][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH DO>
+AABB AA93 ; [.250B.0020.0002.AA93][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH DO>
+AABC AA93 ; [.250B.0020.0002.AA93][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH DO>
+AA94 ; [.250C.0020.0002.AA94] # TAI VIET LETTER LOW TO
+AAB5 AA94 ; [.250C.0020.0002.AA94][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW TO>
+AAB6 AA94 ; [.250C.0020.0002.AA94][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW TO>
+AAB9 AA94 ; [.250C.0020.0002.AA94][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW TO>
+AABB AA94 ; [.250C.0020.0002.AA94][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW TO>
+AABC AA94 ; [.250C.0020.0002.AA94][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW TO>
+AA95 ; [.250D.0020.0002.AA95] # TAI VIET LETTER HIGH TO
+AAB5 AA95 ; [.250D.0020.0002.AA95][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH TO>
+AAB6 AA95 ; [.250D.0020.0002.AA95][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH TO>
+AAB9 AA95 ; [.250D.0020.0002.AA95][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH TO>
+AABB AA95 ; [.250D.0020.0002.AA95][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH TO>
+AABC AA95 ; [.250D.0020.0002.AA95][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH TO>
+AA96 ; [.250E.0020.0002.AA96] # TAI VIET LETTER LOW THO
+AAB5 AA96 ; [.250E.0020.0002.AA96][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW THO>
+AAB6 AA96 ; [.250E.0020.0002.AA96][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW THO>
+AAB9 AA96 ; [.250E.0020.0002.AA96][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW THO>
+AABB AA96 ; [.250E.0020.0002.AA96][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW THO>
+AABC AA96 ; [.250E.0020.0002.AA96][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW THO>
+AA97 ; [.250F.0020.0002.AA97] # TAI VIET LETTER HIGH THO
+AAB5 AA97 ; [.250F.0020.0002.AA97][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH THO>
+AAB6 AA97 ; [.250F.0020.0002.AA97][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH THO>
+AAB9 AA97 ; [.250F.0020.0002.AA97][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH THO>
+AABB AA97 ; [.250F.0020.0002.AA97][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH THO>
+AABC AA97 ; [.250F.0020.0002.AA97][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH THO>
+AA98 ; [.2510.0020.0002.AA98] # TAI VIET LETTER LOW NO
+AAB5 AA98 ; [.2510.0020.0002.AA98][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW NO>
+AAB6 AA98 ; [.2510.0020.0002.AA98][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW NO>
+AAB9 AA98 ; [.2510.0020.0002.AA98][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW NO>
+AABB AA98 ; [.2510.0020.0002.AA98][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW NO>
+AABC AA98 ; [.2510.0020.0002.AA98][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW NO>
+AA99 ; [.2511.0020.0002.AA99] # TAI VIET LETTER HIGH NO
+AAB5 AA99 ; [.2511.0020.0002.AA99][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH NO>
+AAB6 AA99 ; [.2511.0020.0002.AA99][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH NO>
+AAB9 AA99 ; [.2511.0020.0002.AA99][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH NO>
+AABB AA99 ; [.2511.0020.0002.AA99][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH NO>
+AABC AA99 ; [.2511.0020.0002.AA99][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH NO>
+AA9A ; [.2512.0020.0002.AA9A] # TAI VIET LETTER LOW BO
+AAB5 AA9A ; [.2512.0020.0002.AA9A][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW BO>
+AAB6 AA9A ; [.2512.0020.0002.AA9A][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW BO>
+AAB9 AA9A ; [.2512.0020.0002.AA9A][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW BO>
+AABB AA9A ; [.2512.0020.0002.AA9A][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW BO>
+AABC AA9A ; [.2512.0020.0002.AA9A][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW BO>
+AA9B ; [.2513.0020.0002.AA9B] # TAI VIET LETTER HIGH BO
+AAB5 AA9B ; [.2513.0020.0002.AA9B][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH BO>
+AAB6 AA9B ; [.2513.0020.0002.AA9B][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH BO>
+AAB9 AA9B ; [.2513.0020.0002.AA9B][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH BO>
+AABB AA9B ; [.2513.0020.0002.AA9B][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH BO>
+AABC AA9B ; [.2513.0020.0002.AA9B][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH BO>
+AA9C ; [.2514.0020.0002.AA9C] # TAI VIET LETTER LOW PO
+AAB5 AA9C ; [.2514.0020.0002.AA9C][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW PO>
+AAB6 AA9C ; [.2514.0020.0002.AA9C][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW PO>
+AAB9 AA9C ; [.2514.0020.0002.AA9C][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW PO>
+AABB AA9C ; [.2514.0020.0002.AA9C][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW PO>
+AABC AA9C ; [.2514.0020.0002.AA9C][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW PO>
+AA9D ; [.2515.0020.0002.AA9D] # TAI VIET LETTER HIGH PO
+AAB5 AA9D ; [.2515.0020.0002.AA9D][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH PO>
+AAB6 AA9D ; [.2515.0020.0002.AA9D][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH PO>
+AAB9 AA9D ; [.2515.0020.0002.AA9D][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH PO>
+AABB AA9D ; [.2515.0020.0002.AA9D][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH PO>
+AABC AA9D ; [.2515.0020.0002.AA9D][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH PO>
+AA9E ; [.2516.0020.0002.AA9E] # TAI VIET LETTER LOW PHO
+AAB5 AA9E ; [.2516.0020.0002.AA9E][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW PHO>
+AAB6 AA9E ; [.2516.0020.0002.AA9E][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW PHO>
+AAB9 AA9E ; [.2516.0020.0002.AA9E][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW PHO>
+AABB AA9E ; [.2516.0020.0002.AA9E][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW PHO>
+AABC AA9E ; [.2516.0020.0002.AA9E][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW PHO>
+AA9F ; [.2517.0020.0002.AA9F] # TAI VIET LETTER HIGH PHO
+AAB5 AA9F ; [.2517.0020.0002.AA9F][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH PHO>
+AAB6 AA9F ; [.2517.0020.0002.AA9F][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH PHO>
+AAB9 AA9F ; [.2517.0020.0002.AA9F][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH PHO>
+AABB AA9F ; [.2517.0020.0002.AA9F][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH PHO>
+AABC AA9F ; [.2517.0020.0002.AA9F][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH PHO>
+AAA0 ; [.2518.0020.0002.AAA0] # TAI VIET LETTER LOW FO
+AAB5 AAA0 ; [.2518.0020.0002.AAA0][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW FO>
+AAB6 AAA0 ; [.2518.0020.0002.AAA0][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW FO>
+AAB9 AAA0 ; [.2518.0020.0002.AAA0][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW FO>
+AABB AAA0 ; [.2518.0020.0002.AAA0][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW FO>
+AABC AAA0 ; [.2518.0020.0002.AAA0][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW FO>
+AAA1 ; [.2519.0020.0002.AAA1] # TAI VIET LETTER HIGH FO
+AAB5 AAA1 ; [.2519.0020.0002.AAA1][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH FO>
+AAB6 AAA1 ; [.2519.0020.0002.AAA1][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH FO>
+AAB9 AAA1 ; [.2519.0020.0002.AAA1][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH FO>
+AABB AAA1 ; [.2519.0020.0002.AAA1][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH FO>
+AABC AAA1 ; [.2519.0020.0002.AAA1][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH FO>
+AAA2 ; [.251A.0020.0002.AAA2] # TAI VIET LETTER LOW MO
+AAB5 AAA2 ; [.251A.0020.0002.AAA2][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW MO>
+AAB6 AAA2 ; [.251A.0020.0002.AAA2][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW MO>
+AAB9 AAA2 ; [.251A.0020.0002.AAA2][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW MO>
+AABB AAA2 ; [.251A.0020.0002.AAA2][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW MO>
+AABC AAA2 ; [.251A.0020.0002.AAA2][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW MO>
+AAA3 ; [.251B.0020.0002.AAA3] # TAI VIET LETTER HIGH MO
+AAB5 AAA3 ; [.251B.0020.0002.AAA3][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH MO>
+AAB6 AAA3 ; [.251B.0020.0002.AAA3][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH MO>
+AAB9 AAA3 ; [.251B.0020.0002.AAA3][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH MO>
+AABB AAA3 ; [.251B.0020.0002.AAA3][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH MO>
+AABC AAA3 ; [.251B.0020.0002.AAA3][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH MO>
+AAA4 ; [.251C.0020.0002.AAA4] # TAI VIET LETTER LOW YO
+AAB5 AAA4 ; [.251C.0020.0002.AAA4][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW YO>
+AAB6 AAA4 ; [.251C.0020.0002.AAA4][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW YO>
+AAB9 AAA4 ; [.251C.0020.0002.AAA4][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW YO>
+AABB AAA4 ; [.251C.0020.0002.AAA4][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW YO>
+AABC AAA4 ; [.251C.0020.0002.AAA4][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW YO>
+AAA5 ; [.251D.0020.0002.AAA5] # TAI VIET LETTER HIGH YO
+AAB5 AAA5 ; [.251D.0020.0002.AAA5][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH YO>
+AAB6 AAA5 ; [.251D.0020.0002.AAA5][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH YO>
+AAB9 AAA5 ; [.251D.0020.0002.AAA5][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH YO>
+AABB AAA5 ; [.251D.0020.0002.AAA5][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH YO>
+AABC AAA5 ; [.251D.0020.0002.AAA5][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH YO>
+AAA6 ; [.251E.0020.0002.AAA6] # TAI VIET LETTER LOW RO
+AAB5 AAA6 ; [.251E.0020.0002.AAA6][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW RO>
+AAB6 AAA6 ; [.251E.0020.0002.AAA6][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW RO>
+AAB9 AAA6 ; [.251E.0020.0002.AAA6][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW RO>
+AABB AAA6 ; [.251E.0020.0002.AAA6][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW RO>
+AABC AAA6 ; [.251E.0020.0002.AAA6][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW RO>
+AAA7 ; [.251F.0020.0002.AAA7] # TAI VIET LETTER HIGH RO
+AAB5 AAA7 ; [.251F.0020.0002.AAA7][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH RO>
+AAB6 AAA7 ; [.251F.0020.0002.AAA7][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH RO>
+AAB9 AAA7 ; [.251F.0020.0002.AAA7][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH RO>
+AABB AAA7 ; [.251F.0020.0002.AAA7][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH RO>
+AABC AAA7 ; [.251F.0020.0002.AAA7][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH RO>
+AAA8 ; [.2520.0020.0002.AAA8] # TAI VIET LETTER LOW LO
+AAB5 AAA8 ; [.2520.0020.0002.AAA8][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW LO>
+AAB6 AAA8 ; [.2520.0020.0002.AAA8][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW LO>
+AAB9 AAA8 ; [.2520.0020.0002.AAA8][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW LO>
+AABB AAA8 ; [.2520.0020.0002.AAA8][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW LO>
+AABC AAA8 ; [.2520.0020.0002.AAA8][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW LO>
+AAA9 ; [.2521.0020.0002.AAA9] # TAI VIET LETTER HIGH LO
+AAB5 AAA9 ; [.2521.0020.0002.AAA9][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH LO>
+AAB6 AAA9 ; [.2521.0020.0002.AAA9][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH LO>
+AAB9 AAA9 ; [.2521.0020.0002.AAA9][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH LO>
+AABB AAA9 ; [.2521.0020.0002.AAA9][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH LO>
+AABC AAA9 ; [.2521.0020.0002.AAA9][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH LO>
+AAAA ; [.2522.0020.0002.AAAA] # TAI VIET LETTER LOW VO
+AAB5 AAAA ; [.2522.0020.0002.AAAA][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW VO>
+AAB6 AAAA ; [.2522.0020.0002.AAAA][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW VO>
+AAB9 AAAA ; [.2522.0020.0002.AAAA][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW VO>
+AABB AAAA ; [.2522.0020.0002.AAAA][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW VO>
+AABC AAAA ; [.2522.0020.0002.AAAA][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW VO>
+AAAB ; [.2523.0020.0002.AAAB] # TAI VIET LETTER HIGH VO
+AAB5 AAAB ; [.2523.0020.0002.AAAB][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH VO>
+AAB6 AAAB ; [.2523.0020.0002.AAAB][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH VO>
+AAB9 AAAB ; [.2523.0020.0002.AAAB][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH VO>
+AABB AAAB ; [.2523.0020.0002.AAAB][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH VO>
+AABC AAAB ; [.2523.0020.0002.AAAB][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH VO>
+AAAC ; [.2524.0020.0002.AAAC] # TAI VIET LETTER LOW HO
+AAB5 AAAC ; [.2524.0020.0002.AAAC][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW HO>
+AAB6 AAAC ; [.2524.0020.0002.AAAC][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW HO>
+AAB9 AAAC ; [.2524.0020.0002.AAAC][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW HO>
+AABB AAAC ; [.2524.0020.0002.AAAC][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW HO>
+AABC AAAC ; [.2524.0020.0002.AAAC][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW HO>
+AAAD ; [.2525.0020.0002.AAAD] # TAI VIET LETTER HIGH HO
+AAB5 AAAD ; [.2525.0020.0002.AAAD][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH HO>
+AAB6 AAAD ; [.2525.0020.0002.AAAD][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH HO>
+AAB9 AAAD ; [.2525.0020.0002.AAAD][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH HO>
+AABB AAAD ; [.2525.0020.0002.AAAD][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH HO>
+AABC AAAD ; [.2525.0020.0002.AAAD][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH HO>
+AAAE ; [.2526.0020.0002.AAAE] # TAI VIET LETTER LOW O
+AAB5 AAAE ; [.2526.0020.0002.AAAE][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER LOW O>
+AAB6 AAAE ; [.2526.0020.0002.AAAE][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER LOW O>
+AAB9 AAAE ; [.2526.0020.0002.AAAE][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW O>
+AABB AAAE ; [.2526.0020.0002.AAAE][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW O>
+AABC AAAE ; [.2526.0020.0002.AAAE][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW O>
+AAAF ; [.2527.0020.0002.AAAF] # TAI VIET LETTER HIGH O
+AAB5 AAAF ; [.2527.0020.0002.AAAF][.252D.0020.0002.AAB5] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH O>
+AAB6 AAAF ; [.2527.0020.0002.AAAF][.252E.0020.0002.AAB6] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH O>
+AAB9 AAAF ; [.2527.0020.0002.AAAF][.2531.0020.0002.AAB9] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH O>
+AABB AAAF ; [.2527.0020.0002.AAAF][.2533.0020.0002.AABB] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH O>
+AABC AAAF ; [.2527.0020.0002.AAAF][.2534.0020.0002.AABC] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH O>
+AAB0 ; [.2528.0020.0002.AAB0] # TAI VIET MAI KANG
+AAB1 ; [.2529.0020.0002.AAB1] # TAI VIET VOWEL AA
+AAB2 ; [.252A.0020.0002.AAB2] # TAI VIET VOWEL I
+AAB3 ; [.252B.0020.0002.AAB3] # TAI VIET VOWEL UE
+AAB4 ; [.252C.0020.0002.AAB4] # TAI VIET VOWEL U
+AAB5 ; [.252D.0020.0002.AAB5] # TAI VIET VOWEL E
+AAB6 ; [.252E.0020.0002.AAB6] # TAI VIET VOWEL O
+AAB7 ; [.252F.0020.0002.AAB7] # TAI VIET MAY KHIT
+AAB8 ; [.2530.0020.0002.AAB8] # TAI VIET VOWEL IA
+AAB9 ; [.2531.0020.0002.AAB9] # TAI VIET VOWEL UEA
+AABA ; [.2532.0020.0002.AABA] # TAI VIET VOWEL UA
+AABB ; [.2533.0020.0002.AABB] # TAI VIET VOWEL AUE
+AABC ; [.2534.0020.0002.AABC] # TAI VIET VOWEL AY
+AABD ; [.2535.0020.0002.AABD] # TAI VIET VOWEL AN
+AABE ; [.2536.0020.0002.AABE] # TAI VIET VOWEL AM
+AAC0 ; [.2537.0020.0002.AAC0] # TAI VIET TONE MAI NUENG
+AAC2 ; [.2538.0020.0002.AAC2] # TAI VIET TONE MAI SONG
+AADB ; [.2539.0020.0002.AADB] # TAI VIET SYMBOL KON
+AADC ; [.253A.0020.0002.AADC] # TAI VIET SYMBOL NUENG
+0F40 ; [.253B.0020.0002.0F40] # TIBETAN LETTER KA
+0F69 ; [.253B.0020.0002.0F40][.257C.0020.0002.0FB5] # TIBETAN LETTER KSSA
+0F90 ; [.253C.0020.0002.0F90] # TIBETAN SUBJOINED LETTER KA
+0FB9 ; [.253C.0020.0002.0F90][.257C.0020.0002.0FB5] # TIBETAN SUBJOINED LETTER KSSA
+0F6B ; [.253D.0020.0002.0F6B] # TIBETAN LETTER KKA
+0F41 ; [.253E.0020.0002.0F41] # TIBETAN LETTER KHA
+0F91 ; [.253F.0020.0002.0F91] # TIBETAN SUBJOINED LETTER KHA
+0F42 ; [.2540.0020.0002.0F42] # TIBETAN LETTER GA
+0F43 ; [.2540.0020.0002.0F42][.2580.0020.0002.0FB7] # TIBETAN LETTER GHA
+0F92 ; [.2541.0020.0002.0F92] # TIBETAN SUBJOINED LETTER GA
+0F93 ; [.2541.0020.0002.0F92][.2580.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER GHA
+0F44 ; [.2542.0020.0002.0F44] # TIBETAN LETTER NGA
+0F94 ; [.2543.0020.0002.0F94] # TIBETAN SUBJOINED LETTER NGA
+0F45 ; [.2544.0020.0002.0F45] # TIBETAN LETTER CA
+0F95 ; [.2545.0020.0002.0F95] # TIBETAN SUBJOINED LETTER CA
+0F46 ; [.2546.0020.0002.0F46] # TIBETAN LETTER CHA
+0F96 ; [.2547.0020.0002.0F96] # TIBETAN SUBJOINED LETTER CHA
+0F47 ; [.2548.0020.0002.0F47] # TIBETAN LETTER JA
+0F97 ; [.2549.0020.0002.0F97] # TIBETAN SUBJOINED LETTER JA
+0F49 ; [.254A.0020.0002.0F49] # TIBETAN LETTER NYA
+0F99 ; [.254B.0020.0002.0F99] # TIBETAN SUBJOINED LETTER NYA
+0F4A ; [.254C.0020.0002.0F4A] # TIBETAN LETTER TTA
+0F9A ; [.254D.0020.0002.0F9A] # TIBETAN SUBJOINED LETTER TTA
+0F4B ; [.254E.0020.0002.0F4B] # TIBETAN LETTER TTHA
+0F9B ; [.254F.0020.0002.0F9B] # TIBETAN SUBJOINED LETTER TTHA
+0F4C ; [.2550.0020.0002.0F4C] # TIBETAN LETTER DDA
+0F4D ; [.2550.0020.0002.0F4C][.2580.0020.0002.0FB7] # TIBETAN LETTER DDHA
+0F9C ; [.2551.0020.0002.0F9C] # TIBETAN SUBJOINED LETTER DDA
+0F9D ; [.2551.0020.0002.0F9C][.2580.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER DDHA
+0F4E ; [.2552.0020.0002.0F4E] # TIBETAN LETTER NNA
+0F9E ; [.2553.0020.0002.0F9E] # TIBETAN SUBJOINED LETTER NNA
+0F4F ; [.2554.0020.0002.0F4F] # TIBETAN LETTER TA
+0F9F ; [.2555.0020.0002.0F9F] # TIBETAN SUBJOINED LETTER TA
+0F50 ; [.2556.0020.0002.0F50] # TIBETAN LETTER THA
+0FA0 ; [.2557.0020.0002.0FA0] # TIBETAN SUBJOINED LETTER THA
+0F51 ; [.2558.0020.0002.0F51] # TIBETAN LETTER DA
+0F52 ; [.2558.0020.0002.0F51][.2580.0020.0002.0FB7] # TIBETAN LETTER DHA
+0FA1 ; [.2559.0020.0002.0FA1] # TIBETAN SUBJOINED LETTER DA
+0FA2 ; [.2559.0020.0002.0FA1][.2580.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER DHA
+0F53 ; [.255A.0020.0002.0F53] # TIBETAN LETTER NA
+0FA3 ; [.255B.0020.0002.0FA3] # TIBETAN SUBJOINED LETTER NA
+0F54 ; [.255C.0020.0002.0F54] # TIBETAN LETTER PA
+0FA4 ; [.255D.0020.0002.0FA4] # TIBETAN SUBJOINED LETTER PA
+0F55 ; [.255E.0020.0002.0F55] # TIBETAN LETTER PHA
+0FA5 ; [.255F.0020.0002.0FA5] # TIBETAN SUBJOINED LETTER PHA
+0F56 ; [.2560.0020.0002.0F56] # TIBETAN LETTER BA
+0F57 ; [.2560.0020.0002.0F56][.2580.0020.0002.0FB7] # TIBETAN LETTER BHA
+0FA6 ; [.2561.0020.0002.0FA6] # TIBETAN SUBJOINED LETTER BA
+0FA7 ; [.2561.0020.0002.0FA6][.2580.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER BHA
+0F58 ; [.2562.0020.0002.0F58] # TIBETAN LETTER MA
+0FA8 ; [.2563.0020.0002.0FA8] # TIBETAN SUBJOINED LETTER MA
+0F59 ; [.2564.0020.0002.0F59] # TIBETAN LETTER TSA
+0FA9 ; [.2565.0020.0002.0FA9] # TIBETAN SUBJOINED LETTER TSA
+0F5A ; [.2566.0020.0002.0F5A] # TIBETAN LETTER TSHA
+0FAA ; [.2567.0020.0002.0FAA] # TIBETAN SUBJOINED LETTER TSHA
+0F5B ; [.2568.0020.0002.0F5B] # TIBETAN LETTER DZA
+0F5C ; [.2568.0020.0002.0F5B][.2580.0020.0002.0FB7] # TIBETAN LETTER DZHA
+0FAB ; [.2569.0020.0002.0FAB] # TIBETAN SUBJOINED LETTER DZA
+0FAC ; [.2569.0020.0002.0FAB][.2580.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER DZHA
+0F5D ; [.256A.0020.0002.0F5D] # TIBETAN LETTER WA
+0FAD ; [.256B.0020.0002.0FAD] # TIBETAN SUBJOINED LETTER WA
+0FBA ; [.256B.0020.0004.0FBA][.0000.013A.0004.0FBA] # TIBETAN SUBJOINED LETTER FIXED-FORM WA
+0F5E ; [.256C.0020.0002.0F5E] # TIBETAN LETTER ZHA
+0FAE ; [.256D.0020.0002.0FAE] # TIBETAN SUBJOINED LETTER ZHA
+0F5F ; [.256E.0020.0002.0F5F] # TIBETAN LETTER ZA
+0FAF ; [.256F.0020.0002.0FAF] # TIBETAN SUBJOINED LETTER ZA
+0F60 ; [.2570.0020.0002.0F60] # TIBETAN LETTER -A
+0FB0 ; [.2571.0020.0002.0FB0] # TIBETAN SUBJOINED LETTER -A
+0F61 ; [.2572.0020.0002.0F61] # TIBETAN LETTER YA
+0FB1 ; [.2573.0020.0002.0FB1] # TIBETAN SUBJOINED LETTER YA
+0FBB ; [.2573.0020.0004.0FBB][.0000.013A.0004.0FBB] # TIBETAN SUBJOINED LETTER FIXED-FORM YA
+0F62 ; [.2574.0020.0002.0F62] # TIBETAN LETTER RA
+0F6A ; [.2574.0020.0004.0F6A][.0000.013A.0004.0F6A] # TIBETAN LETTER FIXED-FORM RA
+0FB2 ; [.2575.0020.0002.0FB2] # TIBETAN SUBJOINED LETTER RA
+0FBC ; [.2575.0020.0004.0FBC][.0000.013A.0004.0FBC] # TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0F6C ; [.2576.0020.0002.0F6C] # TIBETAN LETTER RRA
+0F63 ; [.2577.0020.0002.0F63] # TIBETAN LETTER LA
+0FB3 ; [.2578.0020.0002.0FB3] # TIBETAN SUBJOINED LETTER LA
+0F64 ; [.2579.0020.0002.0F64] # TIBETAN LETTER SHA
+0FB4 ; [.257A.0020.0002.0FB4] # TIBETAN SUBJOINED LETTER SHA
+0F65 ; [.257B.0020.0002.0F65] # TIBETAN LETTER SSA
+0FB5 ; [.257C.0020.0002.0FB5] # TIBETAN SUBJOINED LETTER SSA
+0F66 ; [.257D.0020.0002.0F66] # TIBETAN LETTER SA
+0FB6 ; [.257E.0020.0002.0FB6] # TIBETAN SUBJOINED LETTER SA
+0F67 ; [.257F.0020.0002.0F67] # TIBETAN LETTER HA
+0FB7 ; [.2580.0020.0002.0FB7] # TIBETAN SUBJOINED LETTER HA
+0F68 ; [.2581.0020.0002.0F68] # TIBETAN LETTER A
+0F00 ; [.2581.0020.0004.0F00][.2598.0020.0004.0F00][.0000.00F3.0004.0F00] # TIBETAN SYLLABLE OM
+0FB8 ; [.2582.0020.0002.0FB8] # TIBETAN SUBJOINED LETTER A
+0F88 ; [.2583.0020.0002.0F88] # TIBETAN SIGN LCE TSA CAN
+0F8D ; [.2584.0020.0002.0F8D] # TIBETAN SUBJOINED SIGN LCE TSA CAN
+0F89 ; [.2585.0020.0002.0F89] # TIBETAN SIGN MCHU CAN
+0F8E ; [.2586.0020.0002.0F8E] # TIBETAN SUBJOINED SIGN MCHU CAN
+0F8C ; [.2587.0020.0002.0F8C] # TIBETAN SIGN INVERTED MCHU CAN
+0F8F ; [.2588.0020.0002.0F8F] # TIBETAN SUBJOINED SIGN INVERTED MCHU CAN
+0F8A ; [.2589.0020.0002.0F8A] # TIBETAN SIGN GRU CAN RGYINGS
+0F8B ; [.258A.0020.0002.0F8B] # TIBETAN SIGN GRU MED RGYINGS
+0F71 ; [.258B.0020.0002.0F71] # TIBETAN VOWEL SIGN AA
+0F72 ; [.258C.0020.0002.0F72] # TIBETAN VOWEL SIGN I
+0F73 ; [.258D.0020.0002.0F73] # TIBETAN VOWEL SIGN II
+0F71 0F72 ; [.258D.0020.0002.0F73] # TIBETAN VOWEL SIGN II
+0F80 ; [.258E.0020.0002.0F80] # TIBETAN VOWEL SIGN REVERSED I
+0F81 ; [.258F.0020.0002.0F81] # TIBETAN VOWEL SIGN REVERSED II
+0F71 0F80 ; [.258F.0020.0002.0F81] # TIBETAN VOWEL SIGN REVERSED II
+0F74 ; [.2590.0020.0002.0F74] # TIBETAN VOWEL SIGN U
+0F75 ; [.2591.0020.0002.0F75] # TIBETAN VOWEL SIGN UU
+0F71 0F74 ; [.2591.0020.0002.0F75] # TIBETAN VOWEL SIGN UU
+0F76 ; [.2592.0020.0002.0F76] # TIBETAN VOWEL SIGN VOCALIC R
+0FB2 0F80 ; [.2592.0020.0002.0F76] # TIBETAN VOWEL SIGN VOCALIC R
+0F77 ; [.2593.0020.0002.0F77] # TIBETAN VOWEL SIGN VOCALIC RR
+0FB2 0F71 0F80 ; [.2593.0020.0002.0F77] # TIBETAN VOWEL SIGN VOCALIC RR
+0FB2 0F81 ; [.2593.0020.0002.0F77] # TIBETAN VOWEL SIGN VOCALIC RR
+0F78 ; [.2594.0020.0002.0F78] # TIBETAN VOWEL SIGN VOCALIC L
+0FB3 0F80 ; [.2594.0020.0002.0F78] # TIBETAN VOWEL SIGN VOCALIC L
+0F79 ; [.2595.0020.0002.0F79] # TIBETAN VOWEL SIGN VOCALIC LL
+0FB3 0F71 0F80 ; [.2595.0020.0002.0F79] # TIBETAN VOWEL SIGN VOCALIC LL
+0FB3 0F81 ; [.2595.0020.0002.0F79] # TIBETAN VOWEL SIGN VOCALIC LL
+0F7A ; [.2596.0020.0002.0F7A] # TIBETAN VOWEL SIGN E
+0F7B ; [.2597.0020.0002.0F7B] # TIBETAN VOWEL SIGN EE
+0F7C ; [.2598.0020.0002.0F7C] # TIBETAN VOWEL SIGN O
+0F7D ; [.2599.0020.0002.0F7D] # TIBETAN VOWEL SIGN OO
+0F84 ; [.259A.0020.0002.0F84] # TIBETAN MARK HALANTA
+1C00 ; [.259B.0020.0002.1C00] # LEPCHA LETTER KA
+1C01 ; [.259C.0020.0002.1C01] # LEPCHA LETTER KLA
+1C02 ; [.259D.0020.0002.1C02] # LEPCHA LETTER KHA
+1C03 ; [.259E.0020.0002.1C03] # LEPCHA LETTER GA
+1C04 ; [.259F.0020.0002.1C04] # LEPCHA LETTER GLA
+1C05 ; [.25A0.0020.0002.1C05] # LEPCHA LETTER NGA
+1C06 ; [.25A1.0020.0002.1C06] # LEPCHA LETTER CA
+1C07 ; [.25A2.0020.0002.1C07] # LEPCHA LETTER CHA
+1C08 ; [.25A3.0020.0002.1C08] # LEPCHA LETTER JA
+1C09 ; [.25A4.0020.0002.1C09] # LEPCHA LETTER NYA
+1C4D ; [.25A5.0020.0002.1C4D] # LEPCHA LETTER TTA
+1C4E ; [.25A6.0020.0002.1C4E] # LEPCHA LETTER TTHA
+1C4F ; [.25A7.0020.0002.1C4F] # LEPCHA LETTER DDA
+1C0A ; [.25A8.0020.0002.1C0A] # LEPCHA LETTER TA
+1C0B ; [.25A9.0020.0002.1C0B] # LEPCHA LETTER THA
+1C0C ; [.25AA.0020.0002.1C0C] # LEPCHA LETTER DA
+1C0D ; [.25AB.0020.0002.1C0D] # LEPCHA LETTER NA
+1C0E ; [.25AC.0020.0002.1C0E] # LEPCHA LETTER PA
+1C0F ; [.25AD.0020.0002.1C0F] # LEPCHA LETTER PLA
+1C10 ; [.25AE.0020.0002.1C10] # LEPCHA LETTER PHA
+1C11 ; [.25AF.0020.0002.1C11] # LEPCHA LETTER FA
+1C12 ; [.25B0.0020.0002.1C12] # LEPCHA LETTER FLA
+1C13 ; [.25B1.0020.0002.1C13] # LEPCHA LETTER BA
+1C14 ; [.25B2.0020.0002.1C14] # LEPCHA LETTER BLA
+1C15 ; [.25B3.0020.0002.1C15] # LEPCHA LETTER MA
+1C16 ; [.25B4.0020.0002.1C16] # LEPCHA LETTER MLA
+1C17 ; [.25B5.0020.0002.1C17] # LEPCHA LETTER TSA
+1C18 ; [.25B6.0020.0002.1C18] # LEPCHA LETTER TSHA
+1C19 ; [.25B7.0020.0002.1C19] # LEPCHA LETTER DZA
+1C1A ; [.25B8.0020.0002.1C1A] # LEPCHA LETTER YA
+1C24 ; [.25B9.0020.0002.1C24] # LEPCHA SUBJOINED LETTER YA
+1C1B ; [.25BA.0020.0002.1C1B] # LEPCHA LETTER RA
+1C25 ; [.25BB.0020.0002.1C25] # LEPCHA SUBJOINED LETTER RA
+1C1C ; [.25BC.0020.0002.1C1C] # LEPCHA LETTER LA
+1C1D ; [.25BD.0020.0002.1C1D] # LEPCHA LETTER HA
+1C1E ; [.25BE.0020.0002.1C1E] # LEPCHA LETTER HLA
+1C1F ; [.25BF.0020.0002.1C1F] # LEPCHA LETTER VA
+1C20 ; [.25C0.0020.0002.1C20] # LEPCHA LETTER SA
+1C21 ; [.25C1.0020.0002.1C21] # LEPCHA LETTER SHA
+1C22 ; [.25C2.0020.0002.1C22] # LEPCHA LETTER WA
+1C23 ; [.25C3.0020.0002.1C23] # LEPCHA LETTER A
+1C36 ; [.25C4.0020.0002.1C36] # LEPCHA SIGN RAN
+1C26 ; [.25C5.0020.0002.1C26] # LEPCHA VOWEL SIGN AA
+1C27 ; [.25C6.0020.0002.1C27] # LEPCHA VOWEL SIGN I
+1C28 ; [.25C7.0020.0002.1C28] # LEPCHA VOWEL SIGN O
+1C29 ; [.25C8.0020.0002.1C29] # LEPCHA VOWEL SIGN OO
+1C2A ; [.25C9.0020.0002.1C2A] # LEPCHA VOWEL SIGN U
+1C2B ; [.25CA.0020.0002.1C2B] # LEPCHA VOWEL SIGN UU
+1C2C ; [.25CB.0020.0002.1C2C] # LEPCHA VOWEL SIGN E
+1C2D ; [.25CC.0020.0002.1C2D] # LEPCHA CONSONANT SIGN K
+1C2E ; [.25CD.0020.0002.1C2E] # LEPCHA CONSONANT SIGN M
+1C2F ; [.25CE.0020.0002.1C2F] # LEPCHA CONSONANT SIGN L
+1C30 ; [.25CF.0020.0002.1C30] # LEPCHA CONSONANT SIGN N
+1C31 ; [.25D0.0020.0002.1C31] # LEPCHA CONSONANT SIGN P
+1C32 ; [.25D1.0020.0002.1C32] # LEPCHA CONSONANT SIGN R
+1C33 ; [.25D2.0020.0002.1C33] # LEPCHA CONSONANT SIGN T
+1C34 ; [.25D3.0020.0002.1C34] # LEPCHA CONSONANT SIGN NYIN-DO
+1C35 ; [.25D4.0020.0002.1C35] # LEPCHA CONSONANT SIGN KANG
+A840 ; [.25D5.0020.0002.A840] # PHAGS-PA LETTER KA
+A841 ; [.25D6.0020.0002.A841] # PHAGS-PA LETTER KHA
+A842 ; [.25D7.0020.0002.A842] # PHAGS-PA LETTER GA
+A843 ; [.25D8.0020.0002.A843] # PHAGS-PA LETTER NGA
+A844 ; [.25D9.0020.0002.A844] # PHAGS-PA LETTER CA
+A845 ; [.25DA.0020.0002.A845] # PHAGS-PA LETTER CHA
+A846 ; [.25DB.0020.0002.A846] # PHAGS-PA LETTER JA
+A847 ; [.25DC.0020.0002.A847] # PHAGS-PA LETTER NYA
+A869 ; [.25DD.0020.0002.A869] # PHAGS-PA LETTER TTA
+A86A ; [.25DE.0020.0002.A86A] # PHAGS-PA LETTER TTHA
+A86B ; [.25DF.0020.0002.A86B] # PHAGS-PA LETTER DDA
+A86C ; [.25E0.0020.0002.A86C] # PHAGS-PA LETTER NNA
+A848 ; [.25E1.0020.0002.A848] # PHAGS-PA LETTER TA
+A849 ; [.25E2.0020.0002.A849] # PHAGS-PA LETTER THA
+A84A ; [.25E3.0020.0002.A84A] # PHAGS-PA LETTER DA
+A84B ; [.25E4.0020.0002.A84B] # PHAGS-PA LETTER NA
+A84C ; [.25E5.0020.0002.A84C] # PHAGS-PA LETTER PA
+A84D ; [.25E6.0020.0002.A84D] # PHAGS-PA LETTER PHA
+A84E ; [.25E7.0020.0002.A84E] # PHAGS-PA LETTER BA
+A84F ; [.25E8.0020.0002.A84F] # PHAGS-PA LETTER MA
+A850 ; [.25E9.0020.0002.A850] # PHAGS-PA LETTER TSA
+A851 ; [.25EA.0020.0002.A851] # PHAGS-PA LETTER TSHA
+A852 ; [.25EB.0020.0002.A852] # PHAGS-PA LETTER DZA
+A853 ; [.25EC.0020.0002.A853] # PHAGS-PA LETTER WA
+A867 ; [.25ED.0020.0002.A867] # PHAGS-PA SUBJOINED LETTER WA
+A854 ; [.25EE.0020.0002.A854] # PHAGS-PA LETTER ZHA
+A855 ; [.25EF.0020.0002.A855] # PHAGS-PA LETTER ZA
+A856 ; [.25F0.0020.0002.A856] # PHAGS-PA LETTER SMALL A
+A857 ; [.25F1.0020.0002.A857] # PHAGS-PA LETTER YA
+A868 ; [.25F2.0020.0002.A868] # PHAGS-PA SUBJOINED LETTER YA
+A86D ; [.25F3.0020.0002.A86D] # PHAGS-PA LETTER ALTERNATE YA
+A858 ; [.25F4.0020.0002.A858] # PHAGS-PA LETTER RA
+A871 ; [.25F5.0020.0002.A871] # PHAGS-PA SUBJOINED LETTER RA
+A872 ; [.25F6.0020.0002.A872] # PHAGS-PA SUPERFIXED LETTER RA
+A859 ; [.25F7.0020.0002.A859] # PHAGS-PA LETTER LA
+A85A ; [.25F8.0020.0002.A85A] # PHAGS-PA LETTER SHA
+A86E ; [.25F9.0020.0002.A86E] # PHAGS-PA LETTER VOICELESS SHA
+A85B ; [.25FA.0020.0002.A85B] # PHAGS-PA LETTER SA
+A85C ; [.25FB.0020.0002.A85C] # PHAGS-PA LETTER HA
+A86F ; [.25FC.0020.0002.A86F] # PHAGS-PA LETTER VOICED HA
+A870 ; [.25FD.0020.0002.A870] # PHAGS-PA LETTER ASPIRATED FA
+A85D ; [.25FE.0020.0002.A85D] # PHAGS-PA LETTER A
+A862 ; [.25FF.0020.0002.A862] # PHAGS-PA LETTER QA
+A863 ; [.2600.0020.0002.A863] # PHAGS-PA LETTER XA
+A864 ; [.2601.0020.0002.A864] # PHAGS-PA LETTER FA
+A865 ; [.2602.0020.0002.A865] # PHAGS-PA LETTER GGA
+A85E ; [.2603.0020.0002.A85E] # PHAGS-PA LETTER I
+A85F ; [.2604.0020.0002.A85F] # PHAGS-PA LETTER U
+A860 ; [.2605.0020.0002.A860] # PHAGS-PA LETTER E
+A861 ; [.2606.0020.0002.A861] # PHAGS-PA LETTER O
+A866 ; [.2607.0020.0002.A866] # PHAGS-PA LETTER EE
+A873 ; [.2608.0020.0002.A873] # PHAGS-PA LETTER CANDRABINDU
+1900 ; [.2609.0020.0002.1900] # LIMBU VOWEL-CARRIER LETTER
+1901 ; [.260A.0020.0002.1901] # LIMBU LETTER KA
+1902 ; [.260B.0020.0002.1902] # LIMBU LETTER KHA
+1903 ; [.260C.0020.0002.1903] # LIMBU LETTER GA
+1904 ; [.260D.0020.0002.1904] # LIMBU LETTER GHA
+1905 ; [.260E.0020.0002.1905] # LIMBU LETTER NGA
+1906 ; [.260F.0020.0002.1906] # LIMBU LETTER CA
+1907 ; [.2610.0020.0002.1907] # LIMBU LETTER CHA
+1908 ; [.2611.0020.0002.1908] # LIMBU LETTER JA
+1909 ; [.2612.0020.0002.1909] # LIMBU LETTER JHA
+190A ; [.2613.0020.0002.190A] # LIMBU LETTER YAN
+190B ; [.2614.0020.0002.190B] # LIMBU LETTER TA
+190C ; [.2615.0020.0002.190C] # LIMBU LETTER THA
+190D ; [.2616.0020.0002.190D] # LIMBU LETTER DA
+190E ; [.2617.0020.0002.190E] # LIMBU LETTER DHA
+190F ; [.2618.0020.0002.190F] # LIMBU LETTER NA
+1910 ; [.2619.0020.0002.1910] # LIMBU LETTER PA
+1911 ; [.261A.0020.0002.1911] # LIMBU LETTER PHA
+1912 ; [.261B.0020.0002.1912] # LIMBU LETTER BA
+1913 ; [.261C.0020.0002.1913] # LIMBU LETTER BHA
+1914 ; [.261D.0020.0002.1914] # LIMBU LETTER MA
+1915 ; [.261E.0020.0002.1915] # LIMBU LETTER YA
+1916 ; [.261F.0020.0002.1916] # LIMBU LETTER RA
+1917 ; [.2620.0020.0002.1917] # LIMBU LETTER LA
+1918 ; [.2621.0020.0002.1918] # LIMBU LETTER WA
+1919 ; [.2622.0020.0002.1919] # LIMBU LETTER SHA
+191A ; [.2623.0020.0002.191A] # LIMBU LETTER SSA
+191B ; [.2624.0020.0002.191B] # LIMBU LETTER SA
+191C ; [.2625.0020.0002.191C] # LIMBU LETTER HA
+1920 ; [.2626.0020.0002.1920] # LIMBU VOWEL SIGN A
+1921 ; [.2627.0020.0002.1921] # LIMBU VOWEL SIGN I
+1922 ; [.2628.0020.0002.1922] # LIMBU VOWEL SIGN U
+1923 ; [.2629.0020.0002.1923] # LIMBU VOWEL SIGN EE
+1924 ; [.262A.0020.0002.1924] # LIMBU VOWEL SIGN AI
+1925 ; [.262B.0020.0002.1925] # LIMBU VOWEL SIGN OO
+1926 ; [.262C.0020.0002.1926] # LIMBU VOWEL SIGN AU
+1927 ; [.262D.0020.0002.1927] # LIMBU VOWEL SIGN E
+1928 ; [.262E.0020.0002.1928] # LIMBU VOWEL SIGN O
+1929 ; [.262F.0020.0002.1929] # LIMBU SUBJOINED LETTER YA
+192A ; [.2630.0020.0002.192A] # LIMBU SUBJOINED LETTER RA
+192B ; [.2631.0020.0002.192B] # LIMBU SUBJOINED LETTER WA
+1930 ; [.2632.0020.0002.1930] # LIMBU SMALL LETTER KA
+1931 ; [.2633.0020.0002.1931] # LIMBU SMALL LETTER NGA
+1932 ; [.2634.0020.0002.1932] # LIMBU SMALL LETTER ANUSVARA
+1933 ; [.2635.0020.0002.1933] # LIMBU SMALL LETTER TA
+1934 ; [.2636.0020.0002.1934] # LIMBU SMALL LETTER NA
+1935 ; [.2637.0020.0002.1935] # LIMBU SMALL LETTER PA
+1936 ; [.2638.0020.0002.1936] # LIMBU SMALL LETTER MA
+1937 ; [.2639.0020.0002.1937] # LIMBU SMALL LETTER RA
+1938 ; [.263A.0020.0002.1938] # LIMBU SMALL LETTER LA
+1700 ; [.263B.0020.0002.1700] # TAGALOG LETTER A
+1701 ; [.263C.0020.0002.1701] # TAGALOG LETTER I
+1702 ; [.263D.0020.0002.1702] # TAGALOG LETTER U
+1703 ; [.263E.0020.0002.1703] # TAGALOG LETTER KA
+1704 ; [.263F.0020.0002.1704] # TAGALOG LETTER GA
+1705 ; [.2640.0020.0002.1705] # TAGALOG LETTER NGA
+1706 ; [.2641.0020.0002.1706] # TAGALOG LETTER TA
+1707 ; [.2642.0020.0002.1707] # TAGALOG LETTER DA
+1708 ; [.2643.0020.0002.1708] # TAGALOG LETTER NA
+1709 ; [.2644.0020.0002.1709] # TAGALOG LETTER PA
+170A ; [.2645.0020.0002.170A] # TAGALOG LETTER BA
+170B ; [.2646.0020.0002.170B] # TAGALOG LETTER MA
+170C ; [.2647.0020.0002.170C] # TAGALOG LETTER YA
+170E ; [.2648.0020.0002.170E] # TAGALOG LETTER LA
+170F ; [.2649.0020.0002.170F] # TAGALOG LETTER WA
+1710 ; [.264A.0020.0002.1710] # TAGALOG LETTER SA
+1711 ; [.264B.0020.0002.1711] # TAGALOG LETTER HA
+1712 ; [.264C.0020.0002.1712] # TAGALOG VOWEL SIGN I
+1713 ; [.264D.0020.0002.1713] # TAGALOG VOWEL SIGN U
+1714 ; [.264E.0020.0002.1714] # TAGALOG SIGN VIRAMA
+1720 ; [.264F.0020.0002.1720] # HANUNOO LETTER A
+1721 ; [.2650.0020.0002.1721] # HANUNOO LETTER I
+1722 ; [.2651.0020.0002.1722] # HANUNOO LETTER U
+1723 ; [.2652.0020.0002.1723] # HANUNOO LETTER KA
+1724 ; [.2653.0020.0002.1724] # HANUNOO LETTER GA
+1725 ; [.2654.0020.0002.1725] # HANUNOO LETTER NGA
+1726 ; [.2655.0020.0002.1726] # HANUNOO LETTER TA
+1727 ; [.2656.0020.0002.1727] # HANUNOO LETTER DA
+1728 ; [.2657.0020.0002.1728] # HANUNOO LETTER NA
+1729 ; [.2658.0020.0002.1729] # HANUNOO LETTER PA
+172A ; [.2659.0020.0002.172A] # HANUNOO LETTER BA
+172B ; [.265A.0020.0002.172B] # HANUNOO LETTER MA
+172C ; [.265B.0020.0002.172C] # HANUNOO LETTER YA
+172D ; [.265C.0020.0002.172D] # HANUNOO LETTER RA
+172E ; [.265D.0020.0002.172E] # HANUNOO LETTER LA
+172F ; [.265E.0020.0002.172F] # HANUNOO LETTER WA
+1730 ; [.265F.0020.0002.1730] # HANUNOO LETTER SA
+1731 ; [.2660.0020.0002.1731] # HANUNOO LETTER HA
+1732 ; [.2661.0020.0002.1732] # HANUNOO VOWEL SIGN I
+1733 ; [.2662.0020.0002.1733] # HANUNOO VOWEL SIGN U
+1734 ; [.2663.0020.0002.1734] # HANUNOO SIGN PAMUDPOD
+1740 ; [.2664.0020.0002.1740] # BUHID LETTER A
+1741 ; [.2665.0020.0002.1741] # BUHID LETTER I
+1742 ; [.2666.0020.0002.1742] # BUHID LETTER U
+1743 ; [.2667.0020.0002.1743] # BUHID LETTER KA
+1744 ; [.2668.0020.0002.1744] # BUHID LETTER GA
+1745 ; [.2669.0020.0002.1745] # BUHID LETTER NGA
+1746 ; [.266A.0020.0002.1746] # BUHID LETTER TA
+1747 ; [.266B.0020.0002.1747] # BUHID LETTER DA
+1748 ; [.266C.0020.0002.1748] # BUHID LETTER NA
+1749 ; [.266D.0020.0002.1749] # BUHID LETTER PA
+174A ; [.266E.0020.0002.174A] # BUHID LETTER BA
+174B ; [.266F.0020.0002.174B] # BUHID LETTER MA
+174C ; [.2670.0020.0002.174C] # BUHID LETTER YA
+174D ; [.2671.0020.0002.174D] # BUHID LETTER RA
+174E ; [.2672.0020.0002.174E] # BUHID LETTER LA
+174F ; [.2673.0020.0002.174F] # BUHID LETTER WA
+1750 ; [.2674.0020.0002.1750] # BUHID LETTER SA
+1751 ; [.2675.0020.0002.1751] # BUHID LETTER HA
+1752 ; [.2676.0020.0002.1752] # BUHID VOWEL SIGN I
+1753 ; [.2677.0020.0002.1753] # BUHID VOWEL SIGN U
+1760 ; [.2678.0020.0002.1760] # TAGBANWA LETTER A
+1761 ; [.2679.0020.0002.1761] # TAGBANWA LETTER I
+1762 ; [.267A.0020.0002.1762] # TAGBANWA LETTER U
+1763 ; [.267B.0020.0002.1763] # TAGBANWA LETTER KA
+1764 ; [.267C.0020.0002.1764] # TAGBANWA LETTER GA
+1765 ; [.267D.0020.0002.1765] # TAGBANWA LETTER NGA
+1766 ; [.267E.0020.0002.1766] # TAGBANWA LETTER TA
+1767 ; [.267F.0020.0002.1767] # TAGBANWA LETTER DA
+1768 ; [.2680.0020.0002.1768] # TAGBANWA LETTER NA
+1769 ; [.2681.0020.0002.1769] # TAGBANWA LETTER PA
+176A ; [.2682.0020.0002.176A] # TAGBANWA LETTER BA
+176B ; [.2683.0020.0002.176B] # TAGBANWA LETTER MA
+176C ; [.2684.0020.0002.176C] # TAGBANWA LETTER YA
+176E ; [.2685.0020.0002.176E] # TAGBANWA LETTER LA
+176F ; [.2686.0020.0002.176F] # TAGBANWA LETTER WA
+1770 ; [.2687.0020.0002.1770] # TAGBANWA LETTER SA
+1772 ; [.2688.0020.0002.1772] # TAGBANWA VOWEL SIGN I
+1773 ; [.2689.0020.0002.1773] # TAGBANWA VOWEL SIGN U
+1A00 ; [.268A.0020.0002.1A00] # BUGINESE LETTER KA
+1A01 ; [.268B.0020.0002.1A01] # BUGINESE LETTER GA
+1A02 ; [.268C.0020.0002.1A02] # BUGINESE LETTER NGA
+1A03 ; [.268D.0020.0002.1A03] # BUGINESE LETTER NGKA
+1A04 ; [.268E.0020.0002.1A04] # BUGINESE LETTER PA
+1A05 ; [.268F.0020.0002.1A05] # BUGINESE LETTER BA
+1A06 ; [.2690.0020.0002.1A06] # BUGINESE LETTER MA
+1A07 ; [.2691.0020.0002.1A07] # BUGINESE LETTER MPA
+1A08 ; [.2692.0020.0002.1A08] # BUGINESE LETTER TA
+1A09 ; [.2693.0020.0002.1A09] # BUGINESE LETTER DA
+1A0A ; [.2694.0020.0002.1A0A] # BUGINESE LETTER NA
+1A0B ; [.2695.0020.0002.1A0B] # BUGINESE LETTER NRA
+1A0C ; [.2696.0020.0002.1A0C] # BUGINESE LETTER CA
+1A0D ; [.2697.0020.0002.1A0D] # BUGINESE LETTER JA
+1A0E ; [.2698.0020.0002.1A0E] # BUGINESE LETTER NYA
+1A0F ; [.2699.0020.0002.1A0F] # BUGINESE LETTER NYCA
+1A10 ; [.269A.0020.0002.1A10] # BUGINESE LETTER YA
+1A11 ; [.269B.0020.0002.1A11] # BUGINESE LETTER RA
+1A12 ; [.269C.0020.0002.1A12] # BUGINESE LETTER LA
+1A13 ; [.269D.0020.0002.1A13] # BUGINESE LETTER VA
+1A14 ; [.269E.0020.0002.1A14] # BUGINESE LETTER SA
+1A15 ; [.269F.0020.0002.1A15] # BUGINESE LETTER A
+1A16 ; [.26A0.0020.0002.1A16] # BUGINESE LETTER HA
+1A17 ; [.26A1.0020.0002.1A17] # BUGINESE VOWEL SIGN I
+1A18 ; [.26A2.0020.0002.1A18] # BUGINESE VOWEL SIGN U
+1A19 ; [.26A3.0020.0002.1A19] # BUGINESE VOWEL SIGN E
+1A1A ; [.26A4.0020.0002.1A1A] # BUGINESE VOWEL SIGN O
+1A1B ; [.26A5.0020.0002.1A1B] # BUGINESE VOWEL SIGN AE
+1BC0 ; [.26A6.0020.0002.1BC0] # BATAK LETTER A
+1BC1 ; [.26A6.0020.0004.1BC1] # BATAK LETTER SIMALUNGUN A
+1BC2 ; [.26A7.0020.0002.1BC2] # BATAK LETTER HA
+1BC3 ; [.26A7.0020.0004.1BC3] # BATAK LETTER SIMALUNGUN HA
+1BC4 ; [.26A7.0020.0004.1BC4] # BATAK LETTER MANDAILING HA
+1BC5 ; [.26A8.0020.0002.1BC5] # BATAK LETTER BA
+1BC6 ; [.26A8.0020.0004.1BC6] # BATAK LETTER KARO BA
+1BC7 ; [.26A9.0020.0002.1BC7] # BATAK LETTER PA
+1BC8 ; [.26A9.0020.0004.1BC8] # BATAK LETTER SIMALUNGUN PA
+1BC9 ; [.26AA.0020.0002.1BC9] # BATAK LETTER NA
+1BCA ; [.26AA.0020.0004.1BCA] # BATAK LETTER MANDAILING NA
+1BCB ; [.26AB.0020.0002.1BCB] # BATAK LETTER WA
+1BCC ; [.26AB.0020.0004.1BCC] # BATAK LETTER SIMALUNGUN WA
+1BCD ; [.26AB.0020.0004.1BCD] # BATAK LETTER PAKPAK WA
+1BCE ; [.26AC.0020.0002.1BCE] # BATAK LETTER GA
+1BCF ; [.26AC.0020.0004.1BCF] # BATAK LETTER SIMALUNGUN GA
+1BD0 ; [.26AD.0020.0002.1BD0] # BATAK LETTER JA
+1BD1 ; [.26AE.0020.0002.1BD1] # BATAK LETTER DA
+1BD2 ; [.26AF.0020.0002.1BD2] # BATAK LETTER RA
+1BD3 ; [.26AF.0020.0004.1BD3] # BATAK LETTER SIMALUNGUN RA
+1BD4 ; [.26B0.0020.0002.1BD4] # BATAK LETTER MA
+1BD5 ; [.26B0.0020.0004.1BD5] # BATAK LETTER SIMALUNGUN MA
+1BD6 ; [.26B1.0020.0002.1BD6] # BATAK LETTER SOUTHERN TA
+1BD7 ; [.26B1.0020.0004.1BD7] # BATAK LETTER NORTHERN TA
+1BD8 ; [.26B2.0020.0002.1BD8] # BATAK LETTER SA
+1BD9 ; [.26B2.0020.0004.1BD9] # BATAK LETTER SIMALUNGUN SA
+1BDA ; [.26B2.0020.0004.1BDA] # BATAK LETTER MANDAILING SA
+1BDB ; [.26B3.0020.0002.1BDB] # BATAK LETTER YA
+1BDC ; [.26B3.0020.0004.1BDC] # BATAK LETTER SIMALUNGUN YA
+1BDD ; [.26B4.0020.0002.1BDD] # BATAK LETTER NGA
+1BDE ; [.26B5.0020.0002.1BDE] # BATAK LETTER LA
+1BDF ; [.26B5.0020.0004.1BDF] # BATAK LETTER SIMALUNGUN LA
+1BE0 ; [.26B6.0020.0002.1BE0] # BATAK LETTER NYA
+1BE1 ; [.26B7.0020.0002.1BE1] # BATAK LETTER CA
+1BE2 ; [.26B8.0020.0002.1BE2] # BATAK LETTER NDA
+1BE3 ; [.26B9.0020.0002.1BE3] # BATAK LETTER MBA
+1BE4 ; [.26BA.0020.0002.1BE4] # BATAK LETTER I
+1BE5 ; [.26BB.0020.0002.1BE5] # BATAK LETTER U
+1BE7 ; [.26BC.0020.0002.1BE7] # BATAK VOWEL SIGN E
+1BE8 ; [.26BC.0020.0004.1BE8] # BATAK VOWEL SIGN PAKPAK E
+1BE9 ; [.26BD.0020.0002.1BE9] # BATAK VOWEL SIGN EE
+1BEA ; [.26BE.0020.0002.1BEA] # BATAK VOWEL SIGN I
+1BEB ; [.26BE.0020.0004.1BEB] # BATAK VOWEL SIGN KARO I
+1BEC ; [.26BF.0020.0002.1BEC] # BATAK VOWEL SIGN O
+1BED ; [.26BF.0020.0004.1BED] # BATAK VOWEL SIGN KARO O
+1BEE ; [.26C0.0020.0002.1BEE] # BATAK VOWEL SIGN U
+1BEF ; [.26C0.0020.0004.1BEF] # BATAK VOWEL SIGN U FOR SIMALUNGUN SA
+1BF0 ; [.26C1.0020.0002.1BF0] # BATAK CONSONANT SIGN NG
+1BF1 ; [.26C2.0020.0002.1BF1] # BATAK CONSONANT SIGN H
+1BF2 ; [.26C3.0020.0002.1BF2] # BATAK PANGOLAT
+1BF3 ; [.26C4.0020.0002.1BF3] # BATAK PANONGONAN
+A930 ; [.26C5.0020.0002.A930] # REJANG LETTER KA
+A931 ; [.26C6.0020.0002.A931] # REJANG LETTER GA
+A932 ; [.26C7.0020.0002.A932] # REJANG LETTER NGA
+A933 ; [.26C8.0020.0002.A933] # REJANG LETTER TA
+A934 ; [.26C9.0020.0002.A934] # REJANG LETTER DA
+A935 ; [.26CA.0020.0002.A935] # REJANG LETTER NA
+A936 ; [.26CB.0020.0002.A936] # REJANG LETTER PA
+A937 ; [.26CC.0020.0002.A937] # REJANG LETTER BA
+A938 ; [.26CD.0020.0002.A938] # REJANG LETTER MA
+A939 ; [.26CE.0020.0002.A939] # REJANG LETTER CA
+A93A ; [.26CF.0020.0002.A93A] # REJANG LETTER JA
+A93B ; [.26D0.0020.0002.A93B] # REJANG LETTER NYA
+A93C ; [.26D1.0020.0002.A93C] # REJANG LETTER SA
+A93D ; [.26D2.0020.0002.A93D] # REJANG LETTER RA
+A93E ; [.26D3.0020.0002.A93E] # REJANG LETTER LA
+A93F ; [.26D4.0020.0002.A93F] # REJANG LETTER YA
+A940 ; [.26D5.0020.0002.A940] # REJANG LETTER WA
+A941 ; [.26D6.0020.0002.A941] # REJANG LETTER HA
+A942 ; [.26D7.0020.0002.A942] # REJANG LETTER MBA
+A943 ; [.26D8.0020.0002.A943] # REJANG LETTER NGGA
+A944 ; [.26D9.0020.0002.A944] # REJANG LETTER NDA
+A945 ; [.26DA.0020.0002.A945] # REJANG LETTER NYJA
+A946 ; [.26DB.0020.0002.A946] # REJANG LETTER A
+A947 ; [.26DC.0020.0002.A947] # REJANG VOWEL SIGN I
+A948 ; [.26DD.0020.0002.A948] # REJANG VOWEL SIGN U
+A949 ; [.26DE.0020.0002.A949] # REJANG VOWEL SIGN E
+A94A ; [.26DF.0020.0002.A94A] # REJANG VOWEL SIGN AI
+A94B ; [.26E0.0020.0002.A94B] # REJANG VOWEL SIGN O
+A94C ; [.26E1.0020.0002.A94C] # REJANG VOWEL SIGN AU
+A94D ; [.26E2.0020.0002.A94D] # REJANG VOWEL SIGN EU
+A94E ; [.26E3.0020.0002.A94E] # REJANG VOWEL SIGN EA
+A94F ; [.26E4.0020.0002.A94F] # REJANG CONSONANT SIGN NG
+A950 ; [.26E5.0020.0002.A950] # REJANG CONSONANT SIGN N
+A951 ; [.26E6.0020.0002.A951] # REJANG CONSONANT SIGN R
+A952 ; [.26E7.0020.0002.A952] # REJANG CONSONANT SIGN H
+A953 ; [.26E8.0020.0002.A953] # REJANG VIRAMA
+A90A ; [.26E9.0020.0002.A90A] # KAYAH LI LETTER KA
+A90B ; [.26EA.0020.0002.A90B] # KAYAH LI LETTER KHA
+A90C ; [.26EB.0020.0002.A90C] # KAYAH LI LETTER GA
+A90D ; [.26EC.0020.0002.A90D] # KAYAH LI LETTER NGA
+A90E ; [.26ED.0020.0002.A90E] # KAYAH LI LETTER SA
+A90F ; [.26EE.0020.0002.A90F] # KAYAH LI LETTER SHA
+A910 ; [.26EF.0020.0002.A910] # KAYAH LI LETTER ZA
+A911 ; [.26F0.0020.0002.A911] # KAYAH LI LETTER NYA
+A912 ; [.26F1.0020.0002.A912] # KAYAH LI LETTER TA
+A913 ; [.26F2.0020.0002.A913] # KAYAH LI LETTER HTA
+A914 ; [.26F3.0020.0002.A914] # KAYAH LI LETTER NA
+A915 ; [.26F4.0020.0002.A915] # KAYAH LI LETTER PA
+A916 ; [.26F5.0020.0002.A916] # KAYAH LI LETTER PHA
+A917 ; [.26F6.0020.0002.A917] # KAYAH LI LETTER MA
+A918 ; [.26F7.0020.0002.A918] # KAYAH LI LETTER DA
+A919 ; [.26F8.0020.0002.A919] # KAYAH LI LETTER BA
+A91A ; [.26F9.0020.0002.A91A] # KAYAH LI LETTER RA
+A91B ; [.26FA.0020.0002.A91B] # KAYAH LI LETTER YA
+A91C ; [.26FB.0020.0002.A91C] # KAYAH LI LETTER LA
+A91D ; [.26FC.0020.0002.A91D] # KAYAH LI LETTER WA
+A91E ; [.26FD.0020.0002.A91E] # KAYAH LI LETTER THA
+A91F ; [.26FE.0020.0002.A91F] # KAYAH LI LETTER HA
+A920 ; [.26FF.0020.0002.A920] # KAYAH LI LETTER VA
+A921 ; [.2700.0020.0002.A921] # KAYAH LI LETTER CA
+A922 ; [.2701.0020.0002.A922] # KAYAH LI LETTER A
+A923 ; [.2702.0020.0002.A923] # KAYAH LI LETTER OE
+A924 ; [.2703.0020.0002.A924] # KAYAH LI LETTER I
+A925 ; [.2704.0020.0002.A925] # KAYAH LI LETTER OO
+A926 ; [.2705.0020.0002.A926] # KAYAH LI VOWEL UE
+A927 ; [.2706.0020.0002.A927] # KAYAH LI VOWEL E
+A928 ; [.2707.0020.0002.A928] # KAYAH LI VOWEL U
+A929 ; [.2708.0020.0002.A929] # KAYAH LI VOWEL EE
+A92A ; [.2709.0020.0002.A92A] # KAYAH LI VOWEL O
+1000 ; [.270A.0020.0002.1000] # MYANMAR LETTER KA
+1075 ; [.270B.0020.0002.1075] # MYANMAR LETTER SHAN KA
+1001 ; [.270C.0020.0002.1001] # MYANMAR LETTER KHA
+1076 ; [.270D.0020.0002.1076] # MYANMAR LETTER SHAN KHA
+1002 ; [.270E.0020.0002.1002] # MYANMAR LETTER GA
+1077 ; [.270F.0020.0002.1077] # MYANMAR LETTER SHAN GA
+AA60 ; [.2710.0020.0002.AA60] # MYANMAR LETTER KHAMTI GA
+1003 ; [.2711.0020.0002.1003] # MYANMAR LETTER GHA
+1004 ; [.2712.0020.0002.1004] # MYANMAR LETTER NGA
+105A ; [.2713.0020.0002.105A] # MYANMAR LETTER MON NGA
+1005 ; [.2714.0020.0002.1005] # MYANMAR LETTER CA
+1078 ; [.2715.0020.0002.1078] # MYANMAR LETTER SHAN CA
+AA61 ; [.2716.0020.0002.AA61] # MYANMAR LETTER KHAMTI CA
+1006 ; [.2717.0020.0002.1006] # MYANMAR LETTER CHA
+AA62 ; [.2718.0020.0002.AA62] # MYANMAR LETTER KHAMTI CHA
+1007 ; [.2719.0020.0002.1007] # MYANMAR LETTER JA
+AA63 ; [.271A.0020.0002.AA63] # MYANMAR LETTER KHAMTI JA
+1079 ; [.271B.0020.0002.1079] # MYANMAR LETTER SHAN ZA
+AA72 ; [.271C.0020.0002.AA72] # MYANMAR LETTER KHAMTI ZA
+1008 ; [.271D.0020.0002.1008] # MYANMAR LETTER JHA
+105B ; [.271E.0020.0002.105B] # MYANMAR LETTER MON JHA
+AA64 ; [.271F.0020.0002.AA64] # MYANMAR LETTER KHAMTI JHA
+1061 ; [.2720.0020.0002.1061] # MYANMAR LETTER SGAW KAREN SHA
+1009 ; [.2721.0020.0002.1009] # MYANMAR LETTER NYA
+107A ; [.2722.0020.0002.107A] # MYANMAR LETTER SHAN NYA
+AA65 ; [.2723.0020.0002.AA65] # MYANMAR LETTER KHAMTI NYA
+100A ; [.2724.0020.0002.100A] # MYANMAR LETTER NNYA
+100B ; [.2725.0020.0002.100B] # MYANMAR LETTER TTA
+AA66 ; [.2726.0020.0002.AA66] # MYANMAR LETTER KHAMTI TTA
+100C ; [.2727.0020.0002.100C] # MYANMAR LETTER TTHA
+AA67 ; [.2728.0020.0002.AA67] # MYANMAR LETTER KHAMTI TTHA
+100D ; [.2729.0020.0002.100D] # MYANMAR LETTER DDA
+AA68 ; [.272A.0020.0002.AA68] # MYANMAR LETTER KHAMTI DDA
+100E ; [.272B.0020.0002.100E] # MYANMAR LETTER DDHA
+AA69 ; [.272C.0020.0002.AA69] # MYANMAR LETTER KHAMTI DDHA
+100F ; [.272D.0020.0002.100F] # MYANMAR LETTER NNA
+106E ; [.272E.0020.0002.106E] # MYANMAR LETTER EASTERN PWO KAREN NNA
+1010 ; [.272F.0020.0002.1010] # MYANMAR LETTER TA
+1011 ; [.2730.0020.0002.1011] # MYANMAR LETTER THA
+1012 ; [.2731.0020.0002.1012] # MYANMAR LETTER DA
+107B ; [.2732.0020.0002.107B] # MYANMAR LETTER SHAN DA
+1013 ; [.2733.0020.0002.1013] # MYANMAR LETTER DHA
+AA6A ; [.2734.0020.0002.AA6A] # MYANMAR LETTER KHAMTI DHA
+1014 ; [.2735.0020.0002.1014] # MYANMAR LETTER NA
+107C ; [.2736.0020.0002.107C] # MYANMAR LETTER SHAN NA
+AA6B ; [.2737.0020.0002.AA6B] # MYANMAR LETTER KHAMTI NA
+105E ; [.2738.0020.0002.105E] # MYANMAR CONSONANT SIGN MON MEDIAL NA
+1015 ; [.2739.0020.0002.1015] # MYANMAR LETTER PA
+1016 ; [.273A.0020.0002.1016] # MYANMAR LETTER PHA
+107D ; [.273B.0020.0002.107D] # MYANMAR LETTER SHAN PHA
+107E ; [.273C.0020.0002.107E] # MYANMAR LETTER SHAN FA
+AA6F ; [.273D.0020.0002.AA6F] # MYANMAR LETTER KHAMTI FA
+108E ; [.273E.0020.0002.108E] # MYANMAR LETTER RUMAI PALAUNG FA
+1017 ; [.273F.0020.0002.1017] # MYANMAR LETTER BA
+107F ; [.2740.0020.0002.107F] # MYANMAR LETTER SHAN BA
+1018 ; [.2741.0020.0002.1018] # MYANMAR LETTER BHA
+1019 ; [.2742.0020.0002.1019] # MYANMAR LETTER MA
+105F ; [.2743.0020.0002.105F] # MYANMAR CONSONANT SIGN MON MEDIAL MA
+101A ; [.2744.0020.0002.101A] # MYANMAR LETTER YA
+103B ; [.2745.0020.0002.103B] # MYANMAR CONSONANT SIGN MEDIAL YA
+101B ; [.2746.0020.0002.101B] # MYANMAR LETTER RA
+AA73 ; [.2747.0020.0002.AA73] # MYANMAR LETTER KHAMTI RA
+AA7A ; [.2748.0020.0002.AA7A] # MYANMAR LETTER AITON RA
+103C ; [.2749.0020.0002.103C] # MYANMAR CONSONANT SIGN MEDIAL RA
+101C ; [.274A.0020.0002.101C] # MYANMAR LETTER LA
+1060 ; [.274B.0020.0002.1060] # MYANMAR CONSONANT SIGN MON MEDIAL LA
+101D ; [.274C.0020.0002.101D] # MYANMAR LETTER WA
+103D ; [.274D.0020.0002.103D] # MYANMAR CONSONANT SIGN MEDIAL WA
+1082 ; [.274E.0020.0002.1082] # MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+1080 ; [.274F.0020.0002.1080] # MYANMAR LETTER SHAN THA
+1050 ; [.2750.0020.0002.1050] # MYANMAR LETTER SHA
+1051 ; [.2751.0020.0002.1051] # MYANMAR LETTER SSA
+1065 ; [.2752.0020.0002.1065] # MYANMAR LETTER WESTERN PWO KAREN THA
+101E ; [.2753.0020.0002.101E] # MYANMAR LETTER SA
+103F ; [.2753.0020.0004.103F][.278A.0020.0004.103F][.2753.0020.0004.103F] # MYANMAR LETTER GREAT SA
+AA6C ; [.2754.0020.0002.AA6C] # MYANMAR LETTER KHAMTI SA
+101F ; [.2755.0020.0002.101F] # MYANMAR LETTER HA
+1081 ; [.2756.0020.0002.1081] # MYANMAR LETTER SHAN HA
+AA6D ; [.2757.0020.0002.AA6D] # MYANMAR LETTER KHAMTI HA
+103E ; [.2758.0020.0002.103E] # MYANMAR CONSONANT SIGN MEDIAL HA
+AA6E ; [.2759.0020.0002.AA6E] # MYANMAR LETTER KHAMTI HHA
+AA71 ; [.275A.0020.0002.AA71] # MYANMAR LETTER KHAMTI XA
+1020 ; [.275B.0020.0002.1020] # MYANMAR LETTER LLA
+105C ; [.275C.0020.0002.105C] # MYANMAR LETTER MON BBA
+105D ; [.275D.0020.0002.105D] # MYANMAR LETTER MON BBE
+106F ; [.275E.0020.0002.106F] # MYANMAR LETTER EASTERN PWO KAREN YWA
+1070 ; [.275F.0020.0002.1070] # MYANMAR LETTER EASTERN PWO KAREN GHWA
+1066 ; [.2760.0020.0002.1066] # MYANMAR LETTER WESTERN PWO KAREN PWA
+1021 ; [.2761.0020.0002.1021] # MYANMAR LETTER A
+1022 ; [.2762.0020.0002.1022] # MYANMAR LETTER SHAN A
+1023 ; [.2763.0020.0002.1023] # MYANMAR LETTER I
+1024 ; [.2764.0020.0002.1024] # MYANMAR LETTER II
+1025 ; [.2765.0020.0002.1025] # MYANMAR LETTER U
+1026 ; [.2766.0020.0002.1026] # MYANMAR LETTER UU
+1025 102E ; [.2766.0020.0002.1026] # MYANMAR LETTER UU
+1052 ; [.2767.0020.0002.1052] # MYANMAR LETTER VOCALIC R
+1053 ; [.2768.0020.0002.1053] # MYANMAR LETTER VOCALIC RR
+1054 ; [.2769.0020.0002.1054] # MYANMAR LETTER VOCALIC L
+1055 ; [.276A.0020.0002.1055] # MYANMAR LETTER VOCALIC LL
+1027 ; [.276B.0020.0002.1027] # MYANMAR LETTER E
+1028 ; [.276C.0020.0002.1028] # MYANMAR LETTER MON E
+1029 ; [.276D.0020.0002.1029] # MYANMAR LETTER O
+102A ; [.276E.0020.0002.102A] # MYANMAR LETTER AU
+102C ; [.276F.0020.0002.102C] # MYANMAR VOWEL SIGN AA
+102B ; [.276F.0020.0004.102B] # MYANMAR VOWEL SIGN TALL AA
+1083 ; [.2770.0020.0002.1083] # MYANMAR VOWEL SIGN SHAN AA
+1072 ; [.2771.0020.0002.1072] # MYANMAR VOWEL SIGN KAYAH OE
+109C ; [.2772.0020.0002.109C] # MYANMAR VOWEL SIGN AITON A
+102D ; [.2773.0020.0002.102D] # MYANMAR VOWEL SIGN I
+1071 ; [.2774.0020.0002.1071] # MYANMAR VOWEL SIGN GEBA KAREN I
+102E ; [.2775.0020.0002.102E] # MYANMAR VOWEL SIGN II
+1033 ; [.2776.0020.0002.1033] # MYANMAR VOWEL SIGN MON II
+102F ; [.2777.0020.0002.102F] # MYANMAR VOWEL SIGN U
+1073 ; [.2778.0020.0002.1073] # MYANMAR VOWEL SIGN KAYAH U
+1074 ; [.2779.0020.0002.1074] # MYANMAR VOWEL SIGN KAYAH EE
+1030 ; [.277A.0020.0002.1030] # MYANMAR VOWEL SIGN UU
+1056 ; [.277B.0020.0002.1056] # MYANMAR VOWEL SIGN VOCALIC R
+1057 ; [.277C.0020.0002.1057] # MYANMAR VOWEL SIGN VOCALIC RR
+1058 ; [.277D.0020.0002.1058] # MYANMAR VOWEL SIGN VOCALIC L
+1059 ; [.277E.0020.0002.1059] # MYANMAR VOWEL SIGN VOCALIC LL
+1031 ; [.277F.0020.0002.1031] # MYANMAR VOWEL SIGN E
+1084 ; [.2780.0020.0002.1084] # MYANMAR VOWEL SIGN SHAN E
+1035 ; [.2781.0020.0002.1035] # MYANMAR VOWEL SIGN E ABOVE
+1085 ; [.2782.0020.0002.1085] # MYANMAR VOWEL SIGN SHAN E ABOVE
+1032 ; [.2783.0020.0002.1032] # MYANMAR VOWEL SIGN AI
+109D ; [.2784.0020.0002.109D] # MYANMAR VOWEL SIGN AITON AI
+1034 ; [.2785.0020.0002.1034] # MYANMAR VOWEL SIGN MON O
+1062 ; [.2786.0020.0002.1062] # MYANMAR VOWEL SIGN SGAW KAREN EU
+1067 ; [.2787.0020.0002.1067] # MYANMAR VOWEL SIGN WESTERN PWO KAREN EU
+1068 ; [.2788.0020.0002.1068] # MYANMAR VOWEL SIGN WESTERN PWO KAREN UE
+1086 ; [.2789.0020.0002.1086] # MYANMAR VOWEL SIGN SHAN FINAL Y
+1039 ; [.278A.0020.0002.1039] # MYANMAR SIGN VIRAMA
+103A ; [.278B.0020.0002.103A] # MYANMAR SIGN ASAT
+1063 ; [.278C.0020.0002.1063] # MYANMAR TONE MARK SGAW KAREN HATHI
+1064 ; [.278D.0020.0002.1064] # MYANMAR TONE MARK SGAW KAREN KE PHO
+1069 ; [.278E.0020.0002.1069] # MYANMAR SIGN WESTERN PWO KAREN TONE-1
+106A ; [.278F.0020.0002.106A] # MYANMAR SIGN WESTERN PWO KAREN TONE-2
+106B ; [.2790.0020.0002.106B] # MYANMAR SIGN WESTERN PWO KAREN TONE-3
+106C ; [.2791.0020.0002.106C] # MYANMAR SIGN WESTERN PWO KAREN TONE-4
+106D ; [.2792.0020.0002.106D] # MYANMAR SIGN WESTERN PWO KAREN TONE-5
+1087 ; [.2793.0020.0002.1087] # MYANMAR SIGN SHAN TONE-2
+108B ; [.2794.0020.0002.108B] # MYANMAR SIGN SHAN COUNCIL TONE-2
+1088 ; [.2795.0020.0002.1088] # MYANMAR SIGN SHAN TONE-3
+108C ; [.2796.0020.0002.108C] # MYANMAR SIGN SHAN COUNCIL TONE-3
+1089 ; [.2797.0020.0002.1089] # MYANMAR SIGN SHAN TONE-5
+108A ; [.2798.0020.0002.108A] # MYANMAR SIGN SHAN TONE-6
+108F ; [.2799.0020.0002.108F] # MYANMAR SIGN RUMAI PALAUNG TONE-5
+109A ; [.279A.0020.0002.109A] # MYANMAR SIGN KHAMTI TONE-1
+109B ; [.279B.0020.0002.109B] # MYANMAR SIGN KHAMTI TONE-3
+AA7B ; [.279C.0020.0002.AA7B] # MYANMAR SIGN PAO KAREN TONE
+AA74 ; [.279D.0020.0002.AA74] # MYANMAR LOGOGRAM KHAMTI OAY
+AA75 ; [.279E.0020.0002.AA75] # MYANMAR LOGOGRAM KHAMTI QN
+AA76 ; [.279F.0020.0002.AA76] # MYANMAR LOGOGRAM KHAMTI HM
+11103 ; [.27A0.0020.0002.11103] # CHAKMA LETTER AA
+11104 ; [.27A1.0020.0002.11104] # CHAKMA LETTER I
+11105 ; [.27A2.0020.0002.11105] # CHAKMA LETTER U
+11106 ; [.27A3.0020.0002.11106] # CHAKMA LETTER E
+11107 ; [.27A4.0020.0002.11107] # CHAKMA LETTER KAA
+11108 ; [.27A5.0020.0002.11108] # CHAKMA LETTER KHAA
+11109 ; [.27A6.0020.0002.11109] # CHAKMA LETTER GAA
+1110A ; [.27A7.0020.0002.1110A] # CHAKMA LETTER GHAA
+1110B ; [.27A8.0020.0002.1110B] # CHAKMA LETTER NGAA
+1110C ; [.27A9.0020.0002.1110C] # CHAKMA LETTER CAA
+1110D ; [.27AA.0020.0002.1110D] # CHAKMA LETTER CHAA
+1110E ; [.27AB.0020.0002.1110E] # CHAKMA LETTER JAA
+1110F ; [.27AC.0020.0002.1110F] # CHAKMA LETTER JHAA
+11110 ; [.27AD.0020.0002.11110] # CHAKMA LETTER NYAA
+11111 ; [.27AE.0020.0002.11111] # CHAKMA LETTER TTAA
+11112 ; [.27AF.0020.0002.11112] # CHAKMA LETTER TTHAA
+11113 ; [.27B0.0020.0002.11113] # CHAKMA LETTER DDAA
+11114 ; [.27B1.0020.0002.11114] # CHAKMA LETTER DDHAA
+11115 ; [.27B2.0020.0002.11115] # CHAKMA LETTER NNAA
+11116 ; [.27B3.0020.0002.11116] # CHAKMA LETTER TAA
+11117 ; [.27B4.0020.0002.11117] # CHAKMA LETTER THAA
+11118 ; [.27B5.0020.0002.11118] # CHAKMA LETTER DAA
+11119 ; [.27B6.0020.0002.11119] # CHAKMA LETTER DHAA
+1111A ; [.27B7.0020.0002.1111A] # CHAKMA LETTER NAA
+1111B ; [.27B8.0020.0002.1111B] # CHAKMA LETTER PAA
+1111C ; [.27B9.0020.0002.1111C] # CHAKMA LETTER PHAA
+1111D ; [.27BA.0020.0002.1111D] # CHAKMA LETTER BAA
+1111E ; [.27BB.0020.0002.1111E] # CHAKMA LETTER BHAA
+1111F ; [.27BC.0020.0002.1111F] # CHAKMA LETTER MAA
+11120 ; [.27BD.0020.0002.11120] # CHAKMA LETTER YYAA
+11121 ; [.27BE.0020.0002.11121] # CHAKMA LETTER YAA
+11122 ; [.27BF.0020.0002.11122] # CHAKMA LETTER RAA
+11123 ; [.27C0.0020.0002.11123] # CHAKMA LETTER LAA
+11124 ; [.27C1.0020.0002.11124] # CHAKMA LETTER WAA
+11125 ; [.27C2.0020.0002.11125] # CHAKMA LETTER SAA
+11126 ; [.27C3.0020.0002.11126] # CHAKMA LETTER HAA
+11127 ; [.27C4.0020.0002.11127] # CHAKMA VOWEL SIGN A
+11128 ; [.27C5.0020.0002.11128] # CHAKMA VOWEL SIGN I
+11129 ; [.27C6.0020.0002.11129] # CHAKMA VOWEL SIGN II
+1112A ; [.27C7.0020.0002.1112A] # CHAKMA VOWEL SIGN U
+1112B ; [.27C8.0020.0002.1112B] # CHAKMA VOWEL SIGN UU
+1112C ; [.27C9.0020.0002.1112C] # CHAKMA VOWEL SIGN E
+1112D ; [.27CA.0020.0002.1112D] # CHAKMA VOWEL SIGN AI
+1112E ; [.27CB.0020.0002.1112E] # CHAKMA VOWEL SIGN O
+11131 11127 ; [.27CB.0020.0002.1112E] # CHAKMA VOWEL SIGN O
+1112F ; [.27CC.0020.0002.1112F] # CHAKMA VOWEL SIGN AU
+11132 11127 ; [.27CC.0020.0002.1112F] # CHAKMA VOWEL SIGN AU
+11130 ; [.27CD.0020.0002.11130] # CHAKMA VOWEL SIGN OI
+11131 ; [.27CE.0020.0002.11131] # CHAKMA O MARK
+11132 ; [.27CF.0020.0002.11132] # CHAKMA AU MARK
+11133 ; [.27D0.0020.0002.11133] # CHAKMA VIRAMA
+11134 ; [.27D1.0020.0002.11134] # CHAKMA MAAYYAA
+1780 ; [.27D2.0020.0002.1780] # KHMER LETTER KA
+1781 ; [.27D3.0020.0002.1781] # KHMER LETTER KHA
+1782 ; [.27D4.0020.0002.1782] # KHMER LETTER KO
+1783 ; [.27D5.0020.0002.1783] # KHMER LETTER KHO
+1784 ; [.27D6.0020.0002.1784] # KHMER LETTER NGO
+1785 ; [.27D7.0020.0002.1785] # KHMER LETTER CA
+1786 ; [.27D8.0020.0002.1786] # KHMER LETTER CHA
+1787 ; [.27D9.0020.0002.1787] # KHMER LETTER CO
+1788 ; [.27DA.0020.0002.1788] # KHMER LETTER CHO
+1789 ; [.27DB.0020.0002.1789] # KHMER LETTER NYO
+178A ; [.27DC.0020.0002.178A] # KHMER LETTER DA
+178B ; [.27DD.0020.0002.178B] # KHMER LETTER TTHA
+178C ; [.27DE.0020.0002.178C] # KHMER LETTER DO
+178D ; [.27DF.0020.0002.178D] # KHMER LETTER TTHO
+178E ; [.27E0.0020.0002.178E] # KHMER LETTER NNO
+178F ; [.27E1.0020.0002.178F] # KHMER LETTER TA
+1790 ; [.27E2.0020.0002.1790] # KHMER LETTER THA
+1791 ; [.27E3.0020.0002.1791] # KHMER LETTER TO
+1792 ; [.27E4.0020.0002.1792] # KHMER LETTER THO
+1793 ; [.27E5.0020.0002.1793] # KHMER LETTER NO
+1794 ; [.27E6.0020.0002.1794] # KHMER LETTER BA
+1795 ; [.27E7.0020.0002.1795] # KHMER LETTER PHA
+1796 ; [.27E8.0020.0002.1796] # KHMER LETTER PO
+1797 ; [.27E9.0020.0002.1797] # KHMER LETTER PHO
+1798 ; [.27EA.0020.0002.1798] # KHMER LETTER MO
+1799 ; [.27EB.0020.0002.1799] # KHMER LETTER YO
+179A ; [.27EC.0020.0002.179A] # KHMER LETTER RO
+179B ; [.27ED.0020.0002.179B] # KHMER LETTER LO
+179C ; [.27EE.0020.0002.179C] # KHMER LETTER VO
+179D ; [.27EF.0020.0002.179D] # KHMER LETTER SHA
+179E ; [.27F0.0020.0002.179E] # KHMER LETTER SSO
+179F ; [.27F1.0020.0002.179F] # KHMER LETTER SA
+17A0 ; [.27F2.0020.0002.17A0] # KHMER LETTER HA
+17A1 ; [.27F3.0020.0002.17A1] # KHMER LETTER LA
+17A2 ; [.27F4.0020.0002.17A2] # KHMER LETTER QA
+17DC ; [.27F5.0020.0002.17DC] # KHMER SIGN AVAKRAHASANYA
+17A3 ; [.27F6.0020.0002.17A3] # KHMER INDEPENDENT VOWEL QAQ
+17A4 ; [.27F7.0020.0002.17A4] # KHMER INDEPENDENT VOWEL QAA
+17A5 ; [.27F8.0020.0002.17A5] # KHMER INDEPENDENT VOWEL QI
+17A6 ; [.27F9.0020.0002.17A6] # KHMER INDEPENDENT VOWEL QII
+17A7 ; [.27FA.0020.0002.17A7] # KHMER INDEPENDENT VOWEL QU
+17A8 ; [.27FB.0020.0002.17A8] # KHMER INDEPENDENT VOWEL QUK
+17A9 ; [.27FC.0020.0002.17A9] # KHMER INDEPENDENT VOWEL QUU
+17AA ; [.27FD.0020.0002.17AA] # KHMER INDEPENDENT VOWEL QUUV
+17AB ; [.27FE.0020.0002.17AB] # KHMER INDEPENDENT VOWEL RY
+17AC ; [.27FF.0020.0002.17AC] # KHMER INDEPENDENT VOWEL RYY
+17AD ; [.2800.0020.0002.17AD] # KHMER INDEPENDENT VOWEL LY
+17AE ; [.2801.0020.0002.17AE] # KHMER INDEPENDENT VOWEL LYY
+17AF ; [.2802.0020.0002.17AF] # KHMER INDEPENDENT VOWEL QE
+17B0 ; [.2803.0020.0002.17B0] # KHMER INDEPENDENT VOWEL QAI
+17B1 ; [.2804.0020.0002.17B1] # KHMER INDEPENDENT VOWEL QOO TYPE ONE
+17B2 ; [.2805.0020.0002.17B2] # KHMER INDEPENDENT VOWEL QOO TYPE TWO
+17B3 ; [.2806.0020.0002.17B3] # KHMER INDEPENDENT VOWEL QAU
+17B6 ; [.2807.0020.0002.17B6] # KHMER VOWEL SIGN AA
+17B7 ; [.2808.0020.0002.17B7] # KHMER VOWEL SIGN I
+17B8 ; [.2809.0020.0002.17B8] # KHMER VOWEL SIGN II
+17B9 ; [.280A.0020.0002.17B9] # KHMER VOWEL SIGN Y
+17BA ; [.280B.0020.0002.17BA] # KHMER VOWEL SIGN YY
+17BB ; [.280C.0020.0002.17BB] # KHMER VOWEL SIGN U
+17BC ; [.280D.0020.0002.17BC] # KHMER VOWEL SIGN UU
+17BD ; [.280E.0020.0002.17BD] # KHMER VOWEL SIGN UA
+17BE ; [.280F.0020.0002.17BE] # KHMER VOWEL SIGN OE
+17BF ; [.2810.0020.0002.17BF] # KHMER VOWEL SIGN YA
+17C0 ; [.2811.0020.0002.17C0] # KHMER VOWEL SIGN IE
+17C1 ; [.2812.0020.0002.17C1] # KHMER VOWEL SIGN E
+17C2 ; [.2813.0020.0002.17C2] # KHMER VOWEL SIGN AE
+17C3 ; [.2814.0020.0002.17C3] # KHMER VOWEL SIGN AI
+17C4 ; [.2815.0020.0002.17C4] # KHMER VOWEL SIGN OO
+17C5 ; [.2816.0020.0002.17C5] # KHMER VOWEL SIGN AU
+17D2 ; [.2817.0020.0002.17D2] # KHMER SIGN COENG
+1950 ; [.2818.0020.0002.1950] # TAI LE LETTER KA
+1951 ; [.2819.0020.0002.1951] # TAI LE LETTER XA
+1952 ; [.281A.0020.0002.1952] # TAI LE LETTER NGA
+1953 ; [.281B.0020.0002.1953] # TAI LE LETTER TSA
+1954 ; [.281C.0020.0002.1954] # TAI LE LETTER SA
+1955 ; [.281D.0020.0002.1955] # TAI LE LETTER YA
+1956 ; [.281E.0020.0002.1956] # TAI LE LETTER TA
+1957 ; [.281F.0020.0002.1957] # TAI LE LETTER THA
+1958 ; [.2820.0020.0002.1958] # TAI LE LETTER LA
+1959 ; [.2821.0020.0002.1959] # TAI LE LETTER PA
+195A ; [.2822.0020.0002.195A] # TAI LE LETTER PHA
+195B ; [.2823.0020.0002.195B] # TAI LE LETTER MA
+195C ; [.2824.0020.0002.195C] # TAI LE LETTER FA
+195D ; [.2825.0020.0002.195D] # TAI LE LETTER VA
+195E ; [.2826.0020.0002.195E] # TAI LE LETTER HA
+195F ; [.2827.0020.0002.195F] # TAI LE LETTER QA
+1960 ; [.2828.0020.0002.1960] # TAI LE LETTER KHA
+1961 ; [.2829.0020.0002.1961] # TAI LE LETTER TSHA
+1962 ; [.282A.0020.0002.1962] # TAI LE LETTER NA
+1963 ; [.282B.0020.0002.1963] # TAI LE LETTER A
+1964 ; [.282C.0020.0002.1964] # TAI LE LETTER I
+1965 ; [.282D.0020.0002.1965] # TAI LE LETTER EE
+1966 ; [.282E.0020.0002.1966] # TAI LE LETTER EH
+1967 ; [.282F.0020.0002.1967] # TAI LE LETTER U
+1968 ; [.2830.0020.0002.1968] # TAI LE LETTER OO
+1969 ; [.2831.0020.0002.1969] # TAI LE LETTER O
+196A ; [.2832.0020.0002.196A] # TAI LE LETTER UE
+196B ; [.2833.0020.0002.196B] # TAI LE LETTER E
+196C ; [.2834.0020.0002.196C] # TAI LE LETTER AUE
+196D ; [.2835.0020.0002.196D] # TAI LE LETTER AI
+1970 ; [.2836.0020.0002.1970] # TAI LE LETTER TONE-2
+1971 ; [.2837.0020.0002.1971] # TAI LE LETTER TONE-3
+1972 ; [.2838.0020.0002.1972] # TAI LE LETTER TONE-4
+1973 ; [.2839.0020.0002.1973] # TAI LE LETTER TONE-5
+1974 ; [.283A.0020.0002.1974] # TAI LE LETTER TONE-6
+1980 ; [.283B.0020.0002.1980] # NEW TAI LUE LETTER HIGH QA
+1981 ; [.283C.0020.0002.1981] # NEW TAI LUE LETTER LOW QA
+1982 ; [.283D.0020.0002.1982] # NEW TAI LUE LETTER HIGH KA
+1983 ; [.283E.0020.0002.1983] # NEW TAI LUE LETTER HIGH XA
+1984 ; [.283F.0020.0002.1984] # NEW TAI LUE LETTER HIGH NGA
+1985 ; [.2840.0020.0002.1985] # NEW TAI LUE LETTER LOW KA
+1986 ; [.2841.0020.0002.1986] # NEW TAI LUE LETTER LOW XA
+1987 ; [.2842.0020.0002.1987] # NEW TAI LUE LETTER LOW NGA
+1988 ; [.2843.0020.0002.1988] # NEW TAI LUE LETTER HIGH TSA
+1989 ; [.2844.0020.0002.1989] # NEW TAI LUE LETTER HIGH SA
+198A ; [.2845.0020.0002.198A] # NEW TAI LUE LETTER HIGH YA
+198B ; [.2846.0020.0002.198B] # NEW TAI LUE LETTER LOW TSA
+198C ; [.2847.0020.0002.198C] # NEW TAI LUE LETTER LOW SA
+198D ; [.2848.0020.0002.198D] # NEW TAI LUE LETTER LOW YA
+198E ; [.2849.0020.0002.198E] # NEW TAI LUE LETTER HIGH TA
+198F ; [.284A.0020.0002.198F] # NEW TAI LUE LETTER HIGH THA
+1990 ; [.284B.0020.0002.1990] # NEW TAI LUE LETTER HIGH NA
+1991 ; [.284C.0020.0002.1991] # NEW TAI LUE LETTER LOW TA
+1992 ; [.284D.0020.0002.1992] # NEW TAI LUE LETTER LOW THA
+1993 ; [.284E.0020.0002.1993] # NEW TAI LUE LETTER LOW NA
+1994 ; [.284F.0020.0002.1994] # NEW TAI LUE LETTER HIGH PA
+1995 ; [.2850.0020.0002.1995] # NEW TAI LUE LETTER HIGH PHA
+1996 ; [.2851.0020.0002.1996] # NEW TAI LUE LETTER HIGH MA
+1997 ; [.2852.0020.0002.1997] # NEW TAI LUE LETTER LOW PA
+1998 ; [.2853.0020.0002.1998] # NEW TAI LUE LETTER LOW PHA
+1999 ; [.2854.0020.0002.1999] # NEW TAI LUE LETTER LOW MA
+199A ; [.2855.0020.0002.199A] # NEW TAI LUE LETTER HIGH FA
+199B ; [.2856.0020.0002.199B] # NEW TAI LUE LETTER HIGH VA
+199C ; [.2857.0020.0002.199C] # NEW TAI LUE LETTER HIGH LA
+19DE ; [.2857.0020.0004.19DE][.286D.0020.0004.19DE] # NEW TAI LUE SIGN LAE
+19DF ; [.2857.0020.0004.19DF][.286D.0020.0004.19DF][.2878.0020.0004.19DF] # NEW TAI LUE SIGN LAEV
+199D ; [.2858.0020.0002.199D] # NEW TAI LUE LETTER LOW FA
+199E ; [.2859.0020.0002.199E] # NEW TAI LUE LETTER LOW VA
+199F ; [.285A.0020.0002.199F] # NEW TAI LUE LETTER LOW LA
+19A0 ; [.285B.0020.0002.19A0] # NEW TAI LUE LETTER HIGH HA
+19A1 ; [.285C.0020.0002.19A1] # NEW TAI LUE LETTER HIGH DA
+19A2 ; [.285D.0020.0002.19A2] # NEW TAI LUE LETTER HIGH BA
+19A3 ; [.285E.0020.0002.19A3] # NEW TAI LUE LETTER LOW HA
+19A4 ; [.285F.0020.0002.19A4] # NEW TAI LUE LETTER LOW DA
+19A5 ; [.2860.0020.0002.19A5] # NEW TAI LUE LETTER LOW BA
+19A6 ; [.2861.0020.0002.19A6] # NEW TAI LUE LETTER HIGH KVA
+19A7 ; [.2862.0020.0002.19A7] # NEW TAI LUE LETTER HIGH XVA
+19A8 ; [.2863.0020.0002.19A8] # NEW TAI LUE LETTER LOW KVA
+19A9 ; [.2864.0020.0002.19A9] # NEW TAI LUE LETTER LOW XVA
+19AA ; [.2865.0020.0002.19AA] # NEW TAI LUE LETTER HIGH SUA
+19AB ; [.2866.0020.0002.19AB] # NEW TAI LUE LETTER LOW SUA
+19B0 ; [.2867.0020.0002.19B0] # NEW TAI LUE VOWEL SIGN VOWEL SHORTENER
+19B1 ; [.2868.0020.0002.19B1] # NEW TAI LUE VOWEL SIGN AA
+19B2 ; [.2869.0020.0002.19B2] # NEW TAI LUE VOWEL SIGN II
+19B3 ; [.286A.0020.0002.19B3] # NEW TAI LUE VOWEL SIGN U
+19B4 ; [.286B.0020.0002.19B4] # NEW TAI LUE VOWEL SIGN UU
+19B5 ; [.286C.0020.0002.19B5] # NEW TAI LUE VOWEL SIGN E
+19B6 ; [.286D.0020.0002.19B6] # NEW TAI LUE VOWEL SIGN AE
+19B7 ; [.286E.0020.0002.19B7] # NEW TAI LUE VOWEL SIGN O
+19B8 ; [.286F.0020.0002.19B8] # NEW TAI LUE VOWEL SIGN OA
+19B9 ; [.2870.0020.0002.19B9] # NEW TAI LUE VOWEL SIGN UE
+19BA ; [.2871.0020.0002.19BA] # NEW TAI LUE VOWEL SIGN AY
+19BB ; [.2872.0020.0002.19BB] # NEW TAI LUE VOWEL SIGN AAY
+19BC ; [.2873.0020.0002.19BC] # NEW TAI LUE VOWEL SIGN UY
+19BD ; [.2874.0020.0002.19BD] # NEW TAI LUE VOWEL SIGN OY
+19BE ; [.2875.0020.0002.19BE] # NEW TAI LUE VOWEL SIGN OAY
+19BF ; [.2876.0020.0002.19BF] # NEW TAI LUE VOWEL SIGN UEY
+19C0 ; [.2877.0020.0002.19C0] # NEW TAI LUE VOWEL SIGN IY
+19C1 ; [.2878.0020.0002.19C1] # NEW TAI LUE LETTER FINAL V
+19C2 ; [.2879.0020.0002.19C2] # NEW TAI LUE LETTER FINAL NG
+19C3 ; [.287A.0020.0002.19C3] # NEW TAI LUE LETTER FINAL N
+19C4 ; [.287B.0020.0002.19C4] # NEW TAI LUE LETTER FINAL M
+19C5 ; [.287C.0020.0002.19C5] # NEW TAI LUE LETTER FINAL K
+19C6 ; [.287D.0020.0002.19C6] # NEW TAI LUE LETTER FINAL D
+19C7 ; [.287E.0020.0002.19C7] # NEW TAI LUE LETTER FINAL B
+19C8 ; [.287F.0020.0002.19C8] # NEW TAI LUE TONE MARK-1
+19C9 ; [.2880.0020.0002.19C9] # NEW TAI LUE TONE MARK-2
+1A20 ; [.2881.0020.0002.1A20] # TAI THAM LETTER HIGH KA
+1A21 ; [.2882.0020.0002.1A21] # TAI THAM LETTER HIGH KHA
+1A22 ; [.2883.0020.0002.1A22] # TAI THAM LETTER HIGH KXA
+1A23 ; [.2884.0020.0002.1A23] # TAI THAM LETTER LOW KA
+1A24 ; [.2885.0020.0002.1A24] # TAI THAM LETTER LOW KXA
+1A25 ; [.2886.0020.0002.1A25] # TAI THAM LETTER LOW KHA
+1A26 ; [.2887.0020.0002.1A26] # TAI THAM LETTER NGA
+1A58 ; [.2887.0020.0004.1A58] # TAI THAM SIGN MAI KANG LAI
+1A59 ; [.2887.0020.0004.1A59] # TAI THAM CONSONANT SIGN FINAL NGA
+1A27 ; [.2888.0020.0002.1A27] # TAI THAM LETTER HIGH CA
+1A28 ; [.2889.0020.0002.1A28] # TAI THAM LETTER HIGH CHA
+1A29 ; [.288A.0020.0002.1A29] # TAI THAM LETTER LOW CA
+1A2A ; [.288B.0020.0002.1A2A] # TAI THAM LETTER LOW SA
+1A2B ; [.288C.0020.0002.1A2B] # TAI THAM LETTER LOW CHA
+1A2C ; [.288D.0020.0002.1A2C] # TAI THAM LETTER NYA
+1A2D ; [.288E.0020.0002.1A2D] # TAI THAM LETTER RATA
+1A2E ; [.288F.0020.0002.1A2E] # TAI THAM LETTER HIGH RATHA
+1A2F ; [.2890.0020.0002.1A2F] # TAI THAM LETTER DA
+1A30 ; [.2891.0020.0002.1A30] # TAI THAM LETTER LOW RATHA
+1A31 ; [.2892.0020.0002.1A31] # TAI THAM LETTER RANA
+1A32 ; [.2893.0020.0002.1A32] # TAI THAM LETTER HIGH TA
+1A33 ; [.2894.0020.0002.1A33] # TAI THAM LETTER HIGH THA
+1A34 ; [.2895.0020.0002.1A34] # TAI THAM LETTER LOW TA
+1A35 ; [.2896.0020.0002.1A35] # TAI THAM LETTER LOW THA
+1A36 ; [.2897.0020.0002.1A36] # TAI THAM LETTER NA
+1A37 ; [.2898.0020.0002.1A37] # TAI THAM LETTER BA
+1A38 ; [.2899.0020.0002.1A38] # TAI THAM LETTER HIGH PA
+1A39 ; [.289A.0020.0002.1A39] # TAI THAM LETTER HIGH PHA
+1A3A ; [.289B.0020.0002.1A3A] # TAI THAM LETTER HIGH FA
+1A3B ; [.289C.0020.0002.1A3B] # TAI THAM LETTER LOW PA
+1A5A ; [.289C.0020.0004.1A5A] # TAI THAM CONSONANT SIGN LOW PA
+1A5B ; [.289C.0020.0004.1A5B] # TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA
+1A3C ; [.289D.0020.0002.1A3C] # TAI THAM LETTER LOW FA
+1A3D ; [.289E.0020.0002.1A3D] # TAI THAM LETTER LOW PHA
+1A3E ; [.289F.0020.0002.1A3E] # TAI THAM LETTER MA
+1A3F ; [.28A0.0020.0002.1A3F] # TAI THAM LETTER LOW YA
+1A40 ; [.28A1.0020.0002.1A40] # TAI THAM LETTER HIGH YA
+1A41 ; [.28A2.0020.0002.1A41] # TAI THAM LETTER RA
+1A42 ; [.28A3.0020.0002.1A42] # TAI THAM LETTER RUE
+1A43 ; [.28A4.0020.0002.1A43] # TAI THAM LETTER LA
+1A44 ; [.28A5.0020.0002.1A44] # TAI THAM LETTER LUE
+1A45 ; [.28A6.0020.0002.1A45] # TAI THAM LETTER WA
+1A46 ; [.28A7.0020.0002.1A46] # TAI THAM LETTER HIGH SHA
+1A54 ; [.28A7.0020.0004.1A54][.28CD.0020.0004.1A54][.28A7.0020.0004.1A54] # TAI THAM LETTER GREAT SA
+1A47 ; [.28A8.0020.0002.1A47] # TAI THAM LETTER HIGH SSA
+1A48 ; [.28A9.0020.0002.1A48] # TAI THAM LETTER HIGH SA
+1A49 ; [.28AA.0020.0002.1A49] # TAI THAM LETTER HIGH HA
+1A4A ; [.28AB.0020.0002.1A4A] # TAI THAM LETTER LLA
+1A4B ; [.28AC.0020.0002.1A4B] # TAI THAM LETTER A
+1A4C ; [.28AD.0020.0002.1A4C] # TAI THAM LETTER LOW HA
+1A53 ; [.28AE.0020.0002.1A53] # TAI THAM LETTER LAE
+1A6B ; [.28AF.0020.0002.1A6B] # TAI THAM VOWEL SIGN O
+1A55 ; [.28B0.0020.0002.1A55] # TAI THAM CONSONANT SIGN MEDIAL RA
+1A56 ; [.28B1.0020.0002.1A56] # TAI THAM CONSONANT SIGN MEDIAL LA
+1A57 ; [.28B2.0020.0002.1A57] # TAI THAM CONSONANT SIGN LA TANG LAI
+1A5C ; [.28B3.0020.0002.1A5C] # TAI THAM CONSONANT SIGN MA
+1A5D ; [.28B4.0020.0002.1A5D] # TAI THAM CONSONANT SIGN BA
+1A5E ; [.28B5.0020.0002.1A5E] # TAI THAM CONSONANT SIGN SA
+1A4D ; [.28B6.0020.0002.1A4D] # TAI THAM LETTER I
+1A4E ; [.28B7.0020.0002.1A4E] # TAI THAM LETTER II
+1A4F ; [.28B8.0020.0002.1A4F] # TAI THAM LETTER U
+1A50 ; [.28B9.0020.0002.1A50] # TAI THAM LETTER UU
+1A51 ; [.28BA.0020.0002.1A51] # TAI THAM LETTER EE
+1A52 ; [.28BB.0020.0002.1A52] # TAI THAM LETTER OO
+1A61 ; [.28BC.0020.0002.1A61] # TAI THAM VOWEL SIGN A
+1A6C ; [.28BD.0020.0002.1A6C] # TAI THAM VOWEL SIGN OA BELOW
+1A62 ; [.28BE.0020.0002.1A62] # TAI THAM VOWEL SIGN MAI SAT
+1A63 ; [.28BF.0020.0002.1A63] # TAI THAM VOWEL SIGN AA
+1A64 ; [.28BF.0020.0004.1A64] # TAI THAM VOWEL SIGN TALL AA
+1A65 ; [.28C0.0020.0002.1A65] # TAI THAM VOWEL SIGN I
+1A66 ; [.28C1.0020.0002.1A66] # TAI THAM VOWEL SIGN II
+1A67 ; [.28C2.0020.0002.1A67] # TAI THAM VOWEL SIGN UE
+1A68 ; [.28C3.0020.0002.1A68] # TAI THAM VOWEL SIGN UUE
+1A69 ; [.28C4.0020.0002.1A69] # TAI THAM VOWEL SIGN U
+1A6A ; [.28C5.0020.0002.1A6A] # TAI THAM VOWEL SIGN UU
+1A6E ; [.28C6.0020.0002.1A6E] # TAI THAM VOWEL SIGN E
+1A6F ; [.28C7.0020.0002.1A6F] # TAI THAM VOWEL SIGN AE
+1A73 ; [.28C8.0020.0002.1A73] # TAI THAM VOWEL SIGN OA ABOVE
+1A70 ; [.28C9.0020.0002.1A70] # TAI THAM VOWEL SIGN OO
+1A71 ; [.28CA.0020.0002.1A71] # TAI THAM VOWEL SIGN AI
+1A72 ; [.28CB.0020.0002.1A72] # TAI THAM VOWEL SIGN THAM AI
+1A6D ; [.28CC.0020.0002.1A6D] # TAI THAM VOWEL SIGN OY
+1A60 ; [.28CD.0020.0002.1A60] # TAI THAM SIGN SAKOT
+AA00 ; [.28CE.0020.0002.AA00] # CHAM LETTER A
+AA01 ; [.28CF.0020.0002.AA01] # CHAM LETTER I
+AA02 ; [.28D0.0020.0002.AA02] # CHAM LETTER U
+AA03 ; [.28D1.0020.0002.AA03] # CHAM LETTER E
+AA04 ; [.28D2.0020.0002.AA04] # CHAM LETTER AI
+AA05 ; [.28D3.0020.0002.AA05] # CHAM LETTER O
+AA06 ; [.28D4.0020.0002.AA06] # CHAM LETTER KA
+AA07 ; [.28D5.0020.0002.AA07] # CHAM LETTER KHA
+AA08 ; [.28D6.0020.0002.AA08] # CHAM LETTER GA
+AA09 ; [.28D7.0020.0002.AA09] # CHAM LETTER GHA
+AA0A ; [.28D8.0020.0002.AA0A] # CHAM LETTER NGUE
+AA0B ; [.28D9.0020.0002.AA0B] # CHAM LETTER NGA
+AA0C ; [.28DA.0020.0002.AA0C] # CHAM LETTER CHA
+AA0D ; [.28DB.0020.0002.AA0D] # CHAM LETTER CHHA
+AA0E ; [.28DC.0020.0002.AA0E] # CHAM LETTER JA
+AA0F ; [.28DD.0020.0002.AA0F] # CHAM LETTER JHA
+AA10 ; [.28DE.0020.0002.AA10] # CHAM LETTER NHUE
+AA11 ; [.28DF.0020.0002.AA11] # CHAM LETTER NHA
+AA12 ; [.28E0.0020.0002.AA12] # CHAM LETTER NHJA
+AA13 ; [.28E1.0020.0002.AA13] # CHAM LETTER TA
+AA14 ; [.28E2.0020.0002.AA14] # CHAM LETTER THA
+AA15 ; [.28E3.0020.0002.AA15] # CHAM LETTER DA
+AA16 ; [.28E4.0020.0002.AA16] # CHAM LETTER DHA
+AA17 ; [.28E5.0020.0002.AA17] # CHAM LETTER NUE
+AA18 ; [.28E6.0020.0002.AA18] # CHAM LETTER NA
+AA19 ; [.28E7.0020.0002.AA19] # CHAM LETTER DDA
+AA1A ; [.28E8.0020.0002.AA1A] # CHAM LETTER PA
+AA1B ; [.28E9.0020.0002.AA1B] # CHAM LETTER PPA
+AA1C ; [.28EA.0020.0002.AA1C] # CHAM LETTER PHA
+AA1D ; [.28EB.0020.0002.AA1D] # CHAM LETTER BA
+AA1E ; [.28EC.0020.0002.AA1E] # CHAM LETTER BHA
+AA1F ; [.28ED.0020.0002.AA1F] # CHAM LETTER MUE
+AA20 ; [.28EE.0020.0002.AA20] # CHAM LETTER MA
+AA21 ; [.28EF.0020.0002.AA21] # CHAM LETTER BBA
+AA22 ; [.28F0.0020.0002.AA22] # CHAM LETTER YA
+AA23 ; [.28F1.0020.0002.AA23] # CHAM LETTER RA
+AA24 ; [.28F2.0020.0002.AA24] # CHAM LETTER LA
+AA25 ; [.28F3.0020.0002.AA25] # CHAM LETTER VA
+AA26 ; [.28F4.0020.0002.AA26] # CHAM LETTER SSA
+AA27 ; [.28F5.0020.0002.AA27] # CHAM LETTER SA
+AA28 ; [.28F6.0020.0002.AA28] # CHAM LETTER HA
+AA33 ; [.28F7.0020.0002.AA33] # CHAM CONSONANT SIGN YA
+AA34 ; [.28F8.0020.0002.AA34] # CHAM CONSONANT SIGN RA
+AA35 ; [.28F9.0020.0002.AA35] # CHAM CONSONANT SIGN LA
+AA36 ; [.28FA.0020.0002.AA36] # CHAM CONSONANT SIGN WA
+AA29 ; [.28FB.0020.0002.AA29] # CHAM VOWEL SIGN AA
+AA2A ; [.28FC.0020.0002.AA2A] # CHAM VOWEL SIGN I
+AA2B ; [.28FD.0020.0002.AA2B] # CHAM VOWEL SIGN II
+AA2C ; [.28FE.0020.0002.AA2C] # CHAM VOWEL SIGN EI
+AA2D ; [.28FF.0020.0002.AA2D] # CHAM VOWEL SIGN U
+AA2E ; [.2900.0020.0002.AA2E] # CHAM VOWEL SIGN OE
+AA2F ; [.2901.0020.0002.AA2F] # CHAM VOWEL SIGN O
+AA30 ; [.2902.0020.0002.AA30] # CHAM VOWEL SIGN AI
+AA31 ; [.2903.0020.0002.AA31] # CHAM VOWEL SIGN AU
+AA32 ; [.2904.0020.0002.AA32] # CHAM VOWEL SIGN UE
+AA40 ; [.2905.0020.0002.AA40] # CHAM LETTER FINAL K
+AA41 ; [.2906.0020.0002.AA41] # CHAM LETTER FINAL G
+AA42 ; [.2907.0020.0002.AA42] # CHAM LETTER FINAL NG
+AA43 ; [.2908.0020.0002.AA43] # CHAM CONSONANT SIGN FINAL NG
+AA44 ; [.2909.0020.0002.AA44] # CHAM LETTER FINAL CH
+AA45 ; [.290A.0020.0002.AA45] # CHAM LETTER FINAL T
+AA46 ; [.290B.0020.0002.AA46] # CHAM LETTER FINAL N
+AA47 ; [.290C.0020.0002.AA47] # CHAM LETTER FINAL P
+AA48 ; [.290D.0020.0002.AA48] # CHAM LETTER FINAL Y
+AA49 ; [.290E.0020.0002.AA49] # CHAM LETTER FINAL R
+AA4A ; [.290F.0020.0002.AA4A] # CHAM LETTER FINAL L
+AA4B ; [.2910.0020.0002.AA4B] # CHAM LETTER FINAL SS
+AA4C ; [.2911.0020.0002.AA4C] # CHAM CONSONANT SIGN FINAL M
+AA4D ; [.2912.0020.0002.AA4D] # CHAM CONSONANT SIGN FINAL H
+1B05 ; [.2913.0020.0002.1B05] # BALINESE LETTER AKARA
+1B06 ; [.2914.0020.0002.1B06] # BALINESE LETTER AKARA TEDUNG
+1B05 1B35 ; [.2914.0020.0002.1B06] # BALINESE LETTER AKARA TEDUNG
+1B07 ; [.2915.0020.0002.1B07] # BALINESE LETTER IKARA
+1B08 ; [.2916.0020.0002.1B08] # BALINESE LETTER IKARA TEDUNG
+1B07 1B35 ; [.2916.0020.0002.1B08] # BALINESE LETTER IKARA TEDUNG
+1B09 ; [.2917.0020.0002.1B09] # BALINESE LETTER UKARA
+1B0A ; [.2918.0020.0002.1B0A] # BALINESE LETTER UKARA TEDUNG
+1B09 1B35 ; [.2918.0020.0002.1B0A] # BALINESE LETTER UKARA TEDUNG
+1B0B ; [.2919.0020.0002.1B0B] # BALINESE LETTER RA REPA
+1B0C ; [.291A.0020.0002.1B0C] # BALINESE LETTER RA REPA TEDUNG
+1B0B 1B35 ; [.291A.0020.0002.1B0C] # BALINESE LETTER RA REPA TEDUNG
+1B0D ; [.291B.0020.0002.1B0D] # BALINESE LETTER LA LENGA
+1B0E ; [.291C.0020.0002.1B0E] # BALINESE LETTER LA LENGA TEDUNG
+1B0D 1B35 ; [.291C.0020.0002.1B0E] # BALINESE LETTER LA LENGA TEDUNG
+1B0F ; [.291D.0020.0002.1B0F] # BALINESE LETTER EKARA
+1B10 ; [.291E.0020.0002.1B10] # BALINESE LETTER AIKARA
+1B11 ; [.291F.0020.0002.1B11] # BALINESE LETTER OKARA
+1B12 ; [.2920.0020.0002.1B12] # BALINESE LETTER OKARA TEDUNG
+1B11 1B35 ; [.2920.0020.0002.1B12] # BALINESE LETTER OKARA TEDUNG
+1B13 ; [.2921.0020.0002.1B13] # BALINESE LETTER KA
+1B45 ; [.2922.0020.0002.1B45] # BALINESE LETTER KAF SASAK
+1B46 ; [.2923.0020.0002.1B46] # BALINESE LETTER KHOT SASAK
+1B14 ; [.2924.0020.0002.1B14] # BALINESE LETTER KA MAHAPRANA
+1B15 ; [.2925.0020.0002.1B15] # BALINESE LETTER GA
+1B16 ; [.2926.0020.0002.1B16] # BALINESE LETTER GA GORA
+1B17 ; [.2927.0020.0002.1B17] # BALINESE LETTER NGA
+1B18 ; [.2928.0020.0002.1B18] # BALINESE LETTER CA
+1B19 ; [.2929.0020.0002.1B19] # BALINESE LETTER CA LACA
+1B1A ; [.292A.0020.0002.1B1A] # BALINESE LETTER JA
+1B1B ; [.292B.0020.0002.1B1B] # BALINESE LETTER JA JERA
+1B1C ; [.292C.0020.0002.1B1C] # BALINESE LETTER NYA
+1B1D ; [.292D.0020.0002.1B1D] # BALINESE LETTER TA LATIK
+1B1E ; [.292E.0020.0002.1B1E] # BALINESE LETTER TA MURDA MAHAPRANA
+1B1F ; [.292F.0020.0002.1B1F] # BALINESE LETTER DA MURDA ALPAPRANA
+1B20 ; [.2930.0020.0002.1B20] # BALINESE LETTER DA MURDA MAHAPRANA
+1B21 ; [.2931.0020.0002.1B21] # BALINESE LETTER NA RAMBAT
+1B22 ; [.2932.0020.0002.1B22] # BALINESE LETTER TA
+1B47 ; [.2933.0020.0002.1B47] # BALINESE LETTER TZIR SASAK
+1B23 ; [.2934.0020.0002.1B23] # BALINESE LETTER TA TAWA
+1B24 ; [.2935.0020.0002.1B24] # BALINESE LETTER DA
+1B25 ; [.2936.0020.0002.1B25] # BALINESE LETTER DA MADU
+1B26 ; [.2937.0020.0002.1B26] # BALINESE LETTER NA
+1B27 ; [.2938.0020.0002.1B27] # BALINESE LETTER PA
+1B48 ; [.2939.0020.0002.1B48] # BALINESE LETTER EF SASAK
+1B28 ; [.293A.0020.0002.1B28] # BALINESE LETTER PA KAPAL
+1B29 ; [.293B.0020.0002.1B29] # BALINESE LETTER BA
+1B2A ; [.293C.0020.0002.1B2A] # BALINESE LETTER BA KEMBANG
+1B2B ; [.293D.0020.0002.1B2B] # BALINESE LETTER MA
+1B2C ; [.293E.0020.0002.1B2C] # BALINESE LETTER YA
+1B2D ; [.293F.0020.0002.1B2D] # BALINESE LETTER RA
+1B2E ; [.2940.0020.0002.1B2E] # BALINESE LETTER LA
+1B2F ; [.2941.0020.0002.1B2F] # BALINESE LETTER WA
+1B49 ; [.2942.0020.0002.1B49] # BALINESE LETTER VE SASAK
+1B30 ; [.2943.0020.0002.1B30] # BALINESE LETTER SA SAGA
+1B31 ; [.2944.0020.0002.1B31] # BALINESE LETTER SA SAPA
+1B32 ; [.2945.0020.0002.1B32] # BALINESE LETTER SA
+1B4A ; [.2946.0020.0002.1B4A] # BALINESE LETTER ZAL SASAK
+1B4B ; [.2947.0020.0002.1B4B] # BALINESE LETTER ASYURA SASAK
+1B33 ; [.2948.0020.0002.1B33] # BALINESE LETTER HA
+1B35 ; [.2949.0020.0002.1B35] # BALINESE VOWEL SIGN TEDUNG
+1B36 ; [.294A.0020.0002.1B36] # BALINESE VOWEL SIGN ULU
+1B37 ; [.294B.0020.0002.1B37] # BALINESE VOWEL SIGN ULU SARI
+1B38 ; [.294C.0020.0002.1B38] # BALINESE VOWEL SIGN SUKU
+1B39 ; [.294D.0020.0002.1B39] # BALINESE VOWEL SIGN SUKU ILUT
+1B3A ; [.294E.0020.0002.1B3A] # BALINESE VOWEL SIGN RA REPA
+1B3B ; [.294F.0020.0002.1B3B] # BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3A 1B35 ; [.294F.0020.0002.1B3B] # BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3C ; [.2950.0020.0002.1B3C] # BALINESE VOWEL SIGN LA LENGA
+1B3D ; [.2951.0020.0002.1B3D] # BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B3C 1B35 ; [.2951.0020.0002.1B3D] # BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B3E ; [.2952.0020.0002.1B3E] # BALINESE VOWEL SIGN TALING
+1B3F ; [.2953.0020.0002.1B3F] # BALINESE VOWEL SIGN TALING REPA
+1B40 ; [.2954.0020.0002.1B40] # BALINESE VOWEL SIGN TALING TEDUNG
+1B3E 1B35 ; [.2954.0020.0002.1B40] # BALINESE VOWEL SIGN TALING TEDUNG
+1B41 ; [.2955.0020.0002.1B41] # BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B3F 1B35 ; [.2955.0020.0002.1B41] # BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B42 ; [.2956.0020.0002.1B42] # BALINESE VOWEL SIGN PEPET
+1B43 ; [.2957.0020.0002.1B43] # BALINESE VOWEL SIGN PEPET TEDUNG
+1B42 1B35 ; [.2957.0020.0002.1B43] # BALINESE VOWEL SIGN PEPET TEDUNG
+1B44 ; [.2958.0020.0002.1B44] # BALINESE ADEG ADEG
+A984 ; [.2959.0020.0002.A984] # JAVANESE LETTER A
+A985 ; [.295A.0020.0002.A985] # JAVANESE LETTER I KAWI
+A986 ; [.295B.0020.0002.A986] # JAVANESE LETTER I
+A987 ; [.295C.0020.0002.A987] # JAVANESE LETTER II
+A988 ; [.295D.0020.0002.A988] # JAVANESE LETTER U
+A989 ; [.295E.0020.0002.A989] # JAVANESE LETTER PA CEREK
+A98A ; [.295F.0020.0002.A98A] # JAVANESE LETTER NGA LELET
+A98B ; [.2960.0020.0002.A98B] # JAVANESE LETTER NGA LELET RASWADI
+A98C ; [.2961.0020.0002.A98C] # JAVANESE LETTER E
+A98D ; [.2962.0020.0002.A98D] # JAVANESE LETTER AI
+A98E ; [.2963.0020.0002.A98E] # JAVANESE LETTER O
+A98F ; [.2964.0020.0002.A98F] # JAVANESE LETTER KA
+A990 ; [.2965.0020.0002.A990] # JAVANESE LETTER KA SASAK
+A991 ; [.2966.0020.0002.A991] # JAVANESE LETTER KA MURDA
+A992 ; [.2967.0020.0002.A992] # JAVANESE LETTER GA
+A993 ; [.2968.0020.0002.A993] # JAVANESE LETTER GA MURDA
+A994 ; [.2969.0020.0002.A994] # JAVANESE LETTER NGA
+A995 ; [.296A.0020.0002.A995] # JAVANESE LETTER CA
+A996 ; [.296B.0020.0002.A996] # JAVANESE LETTER CA MURDA
+A997 ; [.296C.0020.0002.A997] # JAVANESE LETTER JA
+A998 ; [.296D.0020.0002.A998] # JAVANESE LETTER NYA MURDA
+A999 ; [.296E.0020.0002.A999] # JAVANESE LETTER JA MAHAPRANA
+A99A ; [.296F.0020.0002.A99A] # JAVANESE LETTER NYA
+A99B ; [.2970.0020.0002.A99B] # JAVANESE LETTER TTA
+A99C ; [.2971.0020.0002.A99C] # JAVANESE LETTER TTA MAHAPRANA
+A99D ; [.2972.0020.0002.A99D] # JAVANESE LETTER DDA
+A99E ; [.2973.0020.0002.A99E] # JAVANESE LETTER DDA MAHAPRANA
+A99F ; [.2974.0020.0002.A99F] # JAVANESE LETTER NA MURDA
+A9A0 ; [.2975.0020.0002.A9A0] # JAVANESE LETTER TA
+A9A1 ; [.2976.0020.0002.A9A1] # JAVANESE LETTER TA MURDA
+A9A2 ; [.2977.0020.0002.A9A2] # JAVANESE LETTER DA
+A9A3 ; [.2978.0020.0002.A9A3] # JAVANESE LETTER DA MAHAPRANA
+A9A4 ; [.2979.0020.0002.A9A4] # JAVANESE LETTER NA
+A9A5 ; [.297A.0020.0002.A9A5] # JAVANESE LETTER PA
+A9A6 ; [.297B.0020.0002.A9A6] # JAVANESE LETTER PA MURDA
+A9A7 ; [.297C.0020.0002.A9A7] # JAVANESE LETTER BA
+A9A8 ; [.297D.0020.0002.A9A8] # JAVANESE LETTER BA MURDA
+A9A9 ; [.297E.0020.0002.A9A9] # JAVANESE LETTER MA
+A9AA ; [.297F.0020.0002.A9AA] # JAVANESE LETTER YA
+A9BE ; [.2980.0020.0002.A9BE] # JAVANESE CONSONANT SIGN PENGKAL
+A9AB ; [.2981.0020.0002.A9AB] # JAVANESE LETTER RA
+A9AC ; [.2981.0020.0004.A9AC] # JAVANESE LETTER RA AGUNG
+A9BF ; [.2982.0020.0002.A9BF] # JAVANESE CONSONANT SIGN CAKRA
+A9AD ; [.2983.0020.0002.A9AD] # JAVANESE LETTER LA
+A9AE ; [.2984.0020.0002.A9AE] # JAVANESE LETTER WA
+A9AF ; [.2985.0020.0002.A9AF] # JAVANESE LETTER SA MURDA
+A9B0 ; [.2986.0020.0002.A9B0] # JAVANESE LETTER SA MAHAPRANA
+A9B1 ; [.2987.0020.0002.A9B1] # JAVANESE LETTER SA
+A9B2 ; [.2988.0020.0002.A9B2] # JAVANESE LETTER HA
+A9B4 ; [.2989.0020.0002.A9B4] # JAVANESE VOWEL SIGN TARUNG
+A9BC ; [.298A.0020.0002.A9BC] # JAVANESE VOWEL SIGN PEPET
+A9B6 ; [.298B.0020.0002.A9B6] # JAVANESE VOWEL SIGN WULU
+A9B7 ; [.298C.0020.0002.A9B7] # JAVANESE VOWEL SIGN WULU MELIK
+A9B8 ; [.298D.0020.0002.A9B8] # JAVANESE VOWEL SIGN SUKU
+A9B9 ; [.298E.0020.0002.A9B9] # JAVANESE VOWEL SIGN SUKU MENDUT
+A9BD ; [.298F.0020.0002.A9BD] # JAVANESE CONSONANT SIGN KERET
+A9BA ; [.2990.0020.0002.A9BA] # JAVANESE VOWEL SIGN TALING
+A9BB ; [.2991.0020.0002.A9BB] # JAVANESE VOWEL SIGN DIRGA MURE
+A9B5 ; [.2992.0020.0002.A9B5] # JAVANESE VOWEL SIGN TOLONG
+A9C0 ; [.2993.0020.0002.A9C0] # JAVANESE PANGKON
+1880 ; [.2994.0020.0002.1880] # MONGOLIAN LETTER ALI GALI ANUSVARA ONE
+1881 ; [.2995.0020.0002.1881] # MONGOLIAN LETTER ALI GALI VISARGA ONE
+1882 ; [.2996.0020.0002.1882] # MONGOLIAN LETTER ALI GALI DAMARU
+1883 ; [.2997.0020.0002.1883] # MONGOLIAN LETTER ALI GALI UBADAMA
+1884 ; [.2998.0020.0002.1884] # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885 ; [.2999.0020.0002.1885] # MONGOLIAN LETTER ALI GALI BALUDA
+1886 ; [.299A.0020.0002.1886] # MONGOLIAN LETTER ALI GALI THREE BALUDA
+1843 ; [.299B.0020.0002.1843] # MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1820 ; [.299C.0020.0002.1820] # MONGOLIAN LETTER A
+1887 ; [.299D.0020.0002.1887] # MONGOLIAN LETTER ALI GALI A
+1821 ; [.299E.0020.0002.1821] # MONGOLIAN LETTER E
+1844 ; [.299F.0020.0002.1844] # MONGOLIAN LETTER TODO E
+185D ; [.29A0.0020.0002.185D] # MONGOLIAN LETTER SIBE E
+1822 ; [.29A1.0020.0002.1822] # MONGOLIAN LETTER I
+1845 ; [.29A2.0020.0002.1845] # MONGOLIAN LETTER TODO I
+185E ; [.29A3.0020.0002.185E] # MONGOLIAN LETTER SIBE I
+1873 ; [.29A4.0020.0002.1873] # MONGOLIAN LETTER MANCHU I
+1888 ; [.29A5.0020.0002.1888] # MONGOLIAN LETTER ALI GALI I
+185F ; [.29A6.0020.0002.185F] # MONGOLIAN LETTER SIBE IY
+1823 ; [.29A7.0020.0002.1823] # MONGOLIAN LETTER O
+1846 ; [.29A8.0020.0002.1846] # MONGOLIAN LETTER TODO O
+1824 ; [.29A9.0020.0002.1824] # MONGOLIAN LETTER U
+1847 ; [.29AA.0020.0002.1847] # MONGOLIAN LETTER TODO U
+1861 ; [.29AB.0020.0002.1861] # MONGOLIAN LETTER SIBE U
+1825 ; [.29AC.0020.0002.1825] # MONGOLIAN LETTER OE
+1848 ; [.29AD.0020.0002.1848] # MONGOLIAN LETTER TODO OE
+1826 ; [.29AE.0020.0002.1826] # MONGOLIAN LETTER UE
+1849 ; [.29AF.0020.0002.1849] # MONGOLIAN LETTER TODO UE
+1860 ; [.29B0.0020.0002.1860] # MONGOLIAN LETTER SIBE UE
+1827 ; [.29B1.0020.0002.1827] # MONGOLIAN LETTER EE
+1828 ; [.29B2.0020.0002.1828] # MONGOLIAN LETTER NA
+1829 ; [.29B3.0020.0002.1829] # MONGOLIAN LETTER ANG
+184A ; [.29B4.0020.0002.184A] # MONGOLIAN LETTER TODO ANG
+1862 ; [.29B5.0020.0002.1862] # MONGOLIAN LETTER SIBE ANG
+188A ; [.29B6.0020.0002.188A] # MONGOLIAN LETTER ALI GALI NGA
+189B ; [.29B7.0020.0002.189B] # MONGOLIAN LETTER MANCHU ALI GALI NGA
+182A ; [.29B8.0020.0002.182A] # MONGOLIAN LETTER BA
+184B ; [.29B9.0020.0002.184B] # MONGOLIAN LETTER TODO BA
+182B ; [.29BA.0020.0002.182B] # MONGOLIAN LETTER PA
+184C ; [.29BB.0020.0002.184C] # MONGOLIAN LETTER TODO PA
+1866 ; [.29BC.0020.0002.1866] # MONGOLIAN LETTER SIBE PA
+182C ; [.29BD.0020.0002.182C] # MONGOLIAN LETTER QA
+184D ; [.29BE.0020.0002.184D] # MONGOLIAN LETTER TODO QA
+182D ; [.29BF.0020.0002.182D] # MONGOLIAN LETTER GA
+184E ; [.29C0.0020.0002.184E] # MONGOLIAN LETTER TODO GA
+1864 ; [.29C1.0020.0002.1864] # MONGOLIAN LETTER SIBE GA
+189A ; [.29C2.0020.0002.189A] # MONGOLIAN LETTER MANCHU ALI GALI GHA
+1865 ; [.29C3.0020.0002.1865] # MONGOLIAN LETTER SIBE HA
+182E ; [.29C4.0020.0002.182E] # MONGOLIAN LETTER MA
+184F ; [.29C5.0020.0002.184F] # MONGOLIAN LETTER TODO MA
+182F ; [.29C6.0020.0002.182F] # MONGOLIAN LETTER LA
+1830 ; [.29C7.0020.0002.1830] # MONGOLIAN LETTER SA
+1831 ; [.29C8.0020.0002.1831] # MONGOLIAN LETTER SHA
+1867 ; [.29C9.0020.0002.1867] # MONGOLIAN LETTER SIBE SHA
+189C ; [.29CA.0020.0002.189C] # MONGOLIAN LETTER MANCHU ALI GALI CA
+189D ; [.29CB.0020.0002.189D] # MONGOLIAN LETTER MANCHU ALI GALI JHA
+18A2 ; [.29CC.0020.0002.18A2] # MONGOLIAN LETTER MANCHU ALI GALI SSA
+18A4 ; [.29CD.0020.0002.18A4] # MONGOLIAN LETTER MANCHU ALI GALI ZHA
+18A5 ; [.29CE.0020.0002.18A5] # MONGOLIAN LETTER MANCHU ALI GALI ZA
+1832 ; [.29CF.0020.0002.1832] # MONGOLIAN LETTER TA
+1850 ; [.29D0.0020.0002.1850] # MONGOLIAN LETTER TODO TA
+1868 ; [.29D1.0020.0002.1868] # MONGOLIAN LETTER SIBE TA
+1833 ; [.29D2.0020.0002.1833] # MONGOLIAN LETTER DA
+1851 ; [.29D3.0020.0002.1851] # MONGOLIAN LETTER TODO DA
+1869 ; [.29D4.0020.0002.1869] # MONGOLIAN LETTER SIBE DA
+1834 ; [.29D5.0020.0002.1834] # MONGOLIAN LETTER CHA
+1852 ; [.29D6.0020.0002.1852] # MONGOLIAN LETTER TODO CHA
+1871 ; [.29D7.0020.0002.1871] # MONGOLIAN LETTER SIBE CHA
+185C ; [.29D8.0020.0002.185C] # MONGOLIAN LETTER TODO DZA
+188B ; [.29D9.0020.0002.188B] # MONGOLIAN LETTER ALI GALI CA
+1835 ; [.29DA.0020.0002.1835] # MONGOLIAN LETTER JA
+1853 ; [.29DB.0020.0002.1853] # MONGOLIAN LETTER TODO JA
+186A ; [.29DC.0020.0002.186A] # MONGOLIAN LETTER SIBE JA
+1877 ; [.29DD.0020.0002.1877] # MONGOLIAN LETTER MANCHU ZHA
+1836 ; [.29DE.0020.0002.1836] # MONGOLIAN LETTER YA
+1855 ; [.29DF.0020.0002.1855] # MONGOLIAN LETTER TODO YA
+1872 ; [.29E0.0020.0002.1872] # MONGOLIAN LETTER SIBE ZHA
+1837 ; [.29E1.0020.0002.1837] # MONGOLIAN LETTER RA
+1875 ; [.29E2.0020.0002.1875] # MONGOLIAN LETTER MANCHU RA
+1838 ; [.29E3.0020.0002.1838] # MONGOLIAN LETTER WA
+1856 ; [.29E4.0020.0002.1856] # MONGOLIAN LETTER TODO WA
+1839 ; [.29E5.0020.0002.1839] # MONGOLIAN LETTER FA
+186B ; [.29E6.0020.0002.186B] # MONGOLIAN LETTER SIBE FA
+1876 ; [.29E7.0020.0002.1876] # MONGOLIAN LETTER MANCHU FA
+183A ; [.29E8.0020.0002.183A] # MONGOLIAN LETTER KA
+1857 ; [.29E9.0020.0002.1857] # MONGOLIAN LETTER TODO KA
+1863 ; [.29EA.0020.0002.1863] # MONGOLIAN LETTER SIBE KA
+1874 ; [.29EB.0020.0002.1874] # MONGOLIAN LETTER MANCHU KA
+1889 ; [.29EC.0020.0002.1889] # MONGOLIAN LETTER ALI GALI KA
+183B ; [.29ED.0020.0002.183B] # MONGOLIAN LETTER KHA
+183C ; [.29EE.0020.0002.183C] # MONGOLIAN LETTER TSA
+1854 ; [.29EF.0020.0002.1854] # MONGOLIAN LETTER TODO TSA
+186E ; [.29F0.0020.0002.186E] # MONGOLIAN LETTER SIBE TSA
+183D ; [.29F1.0020.0002.183D] # MONGOLIAN LETTER ZA
+186F ; [.29F2.0020.0002.186F] # MONGOLIAN LETTER SIBE ZA
+1858 ; [.29F3.0020.0002.1858] # MONGOLIAN LETTER TODO GAA
+186C ; [.29F4.0020.0002.186C] # MONGOLIAN LETTER SIBE GAA
+183E ; [.29F5.0020.0002.183E] # MONGOLIAN LETTER HAA
+1859 ; [.29F6.0020.0002.1859] # MONGOLIAN LETTER TODO HAA
+186D ; [.29F7.0020.0002.186D] # MONGOLIAN LETTER SIBE HAA
+183F ; [.29F8.0020.0002.183F] # MONGOLIAN LETTER ZRA
+1840 ; [.29F9.0020.0002.1840] # MONGOLIAN LETTER LHA
+1841 ; [.29FA.0020.0002.1841] # MONGOLIAN LETTER ZHI
+1842 ; [.29FB.0020.0002.1842] # MONGOLIAN LETTER CHI
+185A ; [.29FC.0020.0002.185A] # MONGOLIAN LETTER TODO JIA
+185B ; [.29FD.0020.0002.185B] # MONGOLIAN LETTER TODO NIA
+1870 ; [.29FE.0020.0002.1870] # MONGOLIAN LETTER SIBE RAA
+188C ; [.29FF.0020.0002.188C] # MONGOLIAN LETTER ALI GALI TTA
+189E ; [.2A00.0020.0002.189E] # MONGOLIAN LETTER MANCHU ALI GALI TTA
+188D ; [.2A01.0020.0002.188D] # MONGOLIAN LETTER ALI GALI TTHA
+188E ; [.2A02.0020.0002.188E] # MONGOLIAN LETTER ALI GALI DDA
+189F ; [.2A03.0020.0002.189F] # MONGOLIAN LETTER MANCHU ALI GALI DDHA
+188F ; [.2A04.0020.0002.188F] # MONGOLIAN LETTER ALI GALI NNA
+1890 ; [.2A05.0020.0002.1890] # MONGOLIAN LETTER ALI GALI TA
+1898 ; [.2A06.0020.0002.1898] # MONGOLIAN LETTER TODO ALI GALI TA
+18A0 ; [.2A07.0020.0002.18A0] # MONGOLIAN LETTER MANCHU ALI GALI TA
+1891 ; [.2A08.0020.0002.1891] # MONGOLIAN LETTER ALI GALI DA
+18A1 ; [.2A09.0020.0002.18A1] # MONGOLIAN LETTER MANCHU ALI GALI DHA
+1892 ; [.2A0A.0020.0002.1892] # MONGOLIAN LETTER ALI GALI PA
+1893 ; [.2A0B.0020.0002.1893] # MONGOLIAN LETTER ALI GALI PHA
+18A8 ; [.2A0C.0020.0002.18A8] # MONGOLIAN LETTER MANCHU ALI GALI BHA
+1894 ; [.2A0D.0020.0002.1894] # MONGOLIAN LETTER ALI GALI SSA
+18A3 ; [.2A0E.0020.0002.18A3] # MONGOLIAN LETTER MANCHU ALI GALI CYA
+1895 ; [.2A0F.0020.0002.1895] # MONGOLIAN LETTER ALI GALI ZHA
+1899 ; [.2A10.0020.0002.1899] # MONGOLIAN LETTER TODO ALI GALI ZHA
+1896 ; [.2A11.0020.0002.1896] # MONGOLIAN LETTER ALI GALI ZA
+1897 ; [.2A12.0020.0002.1897] # MONGOLIAN LETTER ALI GALI AH
+18A6 ; [.2A13.0020.0002.18A6] # MONGOLIAN LETTER ALI GALI HALF U
+18A7 ; [.2A14.0020.0002.18A7] # MONGOLIAN LETTER ALI GALI HALF YA
+18AA ; [.2A15.0020.0002.18AA] # MONGOLIAN LETTER MANCHU ALI GALI LHA
+18A9 ; [.2A16.0020.0002.18A9] # MONGOLIAN LETTER ALI GALI DAGALGA
+1C5A ; [.2A17.0020.0002.1C5A] # OL CHIKI LETTER LA
+1C5B ; [.2A18.0020.0002.1C5B] # OL CHIKI LETTER AT
+1C5C ; [.2A19.0020.0002.1C5C] # OL CHIKI LETTER AG
+1C5D ; [.2A1A.0020.0002.1C5D] # OL CHIKI LETTER ANG
+1C5E ; [.2A1B.0020.0002.1C5E] # OL CHIKI LETTER AL
+1C5F ; [.2A1C.0020.0002.1C5F] # OL CHIKI LETTER LAA
+1C60 ; [.2A1D.0020.0002.1C60] # OL CHIKI LETTER AAK
+1C61 ; [.2A1E.0020.0002.1C61] # OL CHIKI LETTER AAJ
+1C62 ; [.2A1F.0020.0002.1C62] # OL CHIKI LETTER AAM
+1C63 ; [.2A20.0020.0002.1C63] # OL CHIKI LETTER AAW
+1C64 ; [.2A21.0020.0002.1C64] # OL CHIKI LETTER LI
+1C65 ; [.2A22.0020.0002.1C65] # OL CHIKI LETTER IS
+1C66 ; [.2A23.0020.0002.1C66] # OL CHIKI LETTER IH
+1C67 ; [.2A24.0020.0002.1C67] # OL CHIKI LETTER INY
+1C68 ; [.2A25.0020.0002.1C68] # OL CHIKI LETTER IR
+1C69 ; [.2A26.0020.0002.1C69] # OL CHIKI LETTER LU
+1C6A ; [.2A27.0020.0002.1C6A] # OL CHIKI LETTER UC
+1C6B ; [.2A28.0020.0002.1C6B] # OL CHIKI LETTER UD
+1C6C ; [.2A29.0020.0002.1C6C] # OL CHIKI LETTER UNN
+1C6D ; [.2A2A.0020.0002.1C6D] # OL CHIKI LETTER UY
+1C6E ; [.2A2B.0020.0002.1C6E] # OL CHIKI LETTER LE
+1C6F ; [.2A2C.0020.0002.1C6F] # OL CHIKI LETTER EP
+1C70 ; [.2A2D.0020.0002.1C70] # OL CHIKI LETTER EDD
+1C71 ; [.2A2E.0020.0002.1C71] # OL CHIKI LETTER EN
+1C72 ; [.2A2F.0020.0002.1C72] # OL CHIKI LETTER ERR
+1C73 ; [.2A30.0020.0002.1C73] # OL CHIKI LETTER LO
+1C74 ; [.2A31.0020.0002.1C74] # OL CHIKI LETTER OTT
+1C75 ; [.2A32.0020.0002.1C75] # OL CHIKI LETTER OB
+1C76 ; [.2A33.0020.0002.1C76] # OL CHIKI LETTER OV
+1C77 ; [.2A34.0020.0002.1C77] # OL CHIKI LETTER OH
+1C78 ; [.2A35.0020.0002.1C78] # OL CHIKI MU TTUDDAG
+1C79 ; [.2A36.0020.0002.1C79] # OL CHIKI GAAHLAA TTUDDAAG
+1C7A ; [.2A37.0020.0002.1C7A] # OL CHIKI MU-GAAHLAA TTUDDAAG
+1C7B ; [.2A38.0020.0002.1C7B] # OL CHIKI RELAA
+1C7C ; [.2A39.0020.0002.1C7C] # OL CHIKI PHAARKAA
+1C7D ; [.2A3A.0020.0002.1C7D] # OL CHIKI AHAD
+13A0 ; [.2A3B.0020.0002.13A0] # CHEROKEE LETTER A
+13A1 ; [.2A3C.0020.0002.13A1] # CHEROKEE LETTER E
+13A2 ; [.2A3D.0020.0002.13A2] # CHEROKEE LETTER I
+13A3 ; [.2A3E.0020.0002.13A3] # CHEROKEE LETTER O
+13A4 ; [.2A3F.0020.0002.13A4] # CHEROKEE LETTER U
+13A5 ; [.2A40.0020.0002.13A5] # CHEROKEE LETTER V
+13A6 ; [.2A41.0020.0002.13A6] # CHEROKEE LETTER GA
+13A7 ; [.2A42.0020.0002.13A7] # CHEROKEE LETTER KA
+13A8 ; [.2A43.0020.0002.13A8] # CHEROKEE LETTER GE
+13A9 ; [.2A44.0020.0002.13A9] # CHEROKEE LETTER GI
+13AA ; [.2A45.0020.0002.13AA] # CHEROKEE LETTER GO
+13AB ; [.2A46.0020.0002.13AB] # CHEROKEE LETTER GU
+13AC ; [.2A47.0020.0002.13AC] # CHEROKEE LETTER GV
+13AD ; [.2A48.0020.0002.13AD] # CHEROKEE LETTER HA
+13AE ; [.2A49.0020.0002.13AE] # CHEROKEE LETTER HE
+13AF ; [.2A4A.0020.0002.13AF] # CHEROKEE LETTER HI
+13B0 ; [.2A4B.0020.0002.13B0] # CHEROKEE LETTER HO
+13B1 ; [.2A4C.0020.0002.13B1] # CHEROKEE LETTER HU
+13B2 ; [.2A4D.0020.0002.13B2] # CHEROKEE LETTER HV
+13B3 ; [.2A4E.0020.0002.13B3] # CHEROKEE LETTER LA
+13B4 ; [.2A4F.0020.0002.13B4] # CHEROKEE LETTER LE
+13B5 ; [.2A50.0020.0002.13B5] # CHEROKEE LETTER LI
+13B6 ; [.2A51.0020.0002.13B6] # CHEROKEE LETTER LO
+13B7 ; [.2A52.0020.0002.13B7] # CHEROKEE LETTER LU
+13B8 ; [.2A53.0020.0002.13B8] # CHEROKEE LETTER LV
+13B9 ; [.2A54.0020.0002.13B9] # CHEROKEE LETTER MA
+13BA ; [.2A55.0020.0002.13BA] # CHEROKEE LETTER ME
+13BB ; [.2A56.0020.0002.13BB] # CHEROKEE LETTER MI
+13BC ; [.2A57.0020.0002.13BC] # CHEROKEE LETTER MO
+13BD ; [.2A58.0020.0002.13BD] # CHEROKEE LETTER MU
+13BE ; [.2A59.0020.0002.13BE] # CHEROKEE LETTER NA
+13BF ; [.2A5A.0020.0002.13BF] # CHEROKEE LETTER HNA
+13C0 ; [.2A5B.0020.0002.13C0] # CHEROKEE LETTER NAH
+13C1 ; [.2A5C.0020.0002.13C1] # CHEROKEE LETTER NE
+13C2 ; [.2A5D.0020.0002.13C2] # CHEROKEE LETTER NI
+13C3 ; [.2A5E.0020.0002.13C3] # CHEROKEE LETTER NO
+13C4 ; [.2A5F.0020.0002.13C4] # CHEROKEE LETTER NU
+13C5 ; [.2A60.0020.0002.13C5] # CHEROKEE LETTER NV
+13C6 ; [.2A61.0020.0002.13C6] # CHEROKEE LETTER QUA
+13C7 ; [.2A62.0020.0002.13C7] # CHEROKEE LETTER QUE
+13C8 ; [.2A63.0020.0002.13C8] # CHEROKEE LETTER QUI
+13C9 ; [.2A64.0020.0002.13C9] # CHEROKEE LETTER QUO
+13CA ; [.2A65.0020.0002.13CA] # CHEROKEE LETTER QUU
+13CB ; [.2A66.0020.0002.13CB] # CHEROKEE LETTER QUV
+13CC ; [.2A67.0020.0002.13CC] # CHEROKEE LETTER SA
+13CD ; [.2A68.0020.0002.13CD] # CHEROKEE LETTER S
+13CE ; [.2A69.0020.0002.13CE] # CHEROKEE LETTER SE
+13CF ; [.2A6A.0020.0002.13CF] # CHEROKEE LETTER SI
+13D0 ; [.2A6B.0020.0002.13D0] # CHEROKEE LETTER SO
+13D1 ; [.2A6C.0020.0002.13D1] # CHEROKEE LETTER SU
+13D2 ; [.2A6D.0020.0002.13D2] # CHEROKEE LETTER SV
+13D3 ; [.2A6E.0020.0002.13D3] # CHEROKEE LETTER DA
+13D4 ; [.2A6F.0020.0002.13D4] # CHEROKEE LETTER TA
+13D5 ; [.2A70.0020.0002.13D5] # CHEROKEE LETTER DE
+13D6 ; [.2A71.0020.0002.13D6] # CHEROKEE LETTER TE
+13D7 ; [.2A72.0020.0002.13D7] # CHEROKEE LETTER DI
+13D8 ; [.2A73.0020.0002.13D8] # CHEROKEE LETTER TI
+13D9 ; [.2A74.0020.0002.13D9] # CHEROKEE LETTER DO
+13DA ; [.2A75.0020.0002.13DA] # CHEROKEE LETTER DU
+13DB ; [.2A76.0020.0002.13DB] # CHEROKEE LETTER DV
+13DC ; [.2A77.0020.0002.13DC] # CHEROKEE LETTER DLA
+13DD ; [.2A78.0020.0002.13DD] # CHEROKEE LETTER TLA
+13DE ; [.2A79.0020.0002.13DE] # CHEROKEE LETTER TLE
+13DF ; [.2A7A.0020.0002.13DF] # CHEROKEE LETTER TLI
+13E0 ; [.2A7B.0020.0002.13E0] # CHEROKEE LETTER TLO
+13E1 ; [.2A7C.0020.0002.13E1] # CHEROKEE LETTER TLU
+13E2 ; [.2A7D.0020.0002.13E2] # CHEROKEE LETTER TLV
+13E3 ; [.2A7E.0020.0002.13E3] # CHEROKEE LETTER TSA
+13E4 ; [.2A7F.0020.0002.13E4] # CHEROKEE LETTER TSE
+13E5 ; [.2A80.0020.0002.13E5] # CHEROKEE LETTER TSI
+13E6 ; [.2A81.0020.0002.13E6] # CHEROKEE LETTER TSO
+13E7 ; [.2A82.0020.0002.13E7] # CHEROKEE LETTER TSU
+13E8 ; [.2A83.0020.0002.13E8] # CHEROKEE LETTER TSV
+13E9 ; [.2A84.0020.0002.13E9] # CHEROKEE LETTER WA
+13EA ; [.2A85.0020.0002.13EA] # CHEROKEE LETTER WE
+13EB ; [.2A86.0020.0002.13EB] # CHEROKEE LETTER WI
+13EC ; [.2A87.0020.0002.13EC] # CHEROKEE LETTER WO
+13ED ; [.2A88.0020.0002.13ED] # CHEROKEE LETTER WU
+13EE ; [.2A89.0020.0002.13EE] # CHEROKEE LETTER WV
+13EF ; [.2A8A.0020.0002.13EF] # CHEROKEE LETTER YA
+13F0 ; [.2A8B.0020.0002.13F0] # CHEROKEE LETTER YE
+13F1 ; [.2A8C.0020.0002.13F1] # CHEROKEE LETTER YI
+13F2 ; [.2A8D.0020.0002.13F2] # CHEROKEE LETTER YO
+13F3 ; [.2A8E.0020.0002.13F3] # CHEROKEE LETTER YU
+13F4 ; [.2A8F.0020.0002.13F4] # CHEROKEE LETTER YV
+1401 ; [.2A90.0020.0002.1401] # CANADIAN SYLLABICS E
+1402 ; [.2A91.0020.0002.1402] # CANADIAN SYLLABICS AAI
+1403 ; [.2A92.0020.0002.1403] # CANADIAN SYLLABICS I
+1404 ; [.2A93.0020.0002.1404] # CANADIAN SYLLABICS II
+1405 ; [.2A94.0020.0002.1405] # CANADIAN SYLLABICS O
+1406 ; [.2A95.0020.0002.1406] # CANADIAN SYLLABICS OO
+1407 ; [.2A96.0020.0002.1407] # CANADIAN SYLLABICS Y-CREE OO
+1408 ; [.2A97.0020.0002.1408] # CANADIAN SYLLABICS CARRIER EE
+1409 ; [.2A98.0020.0002.1409] # CANADIAN SYLLABICS CARRIER I
+140A ; [.2A99.0020.0002.140A] # CANADIAN SYLLABICS A
+140B ; [.2A9A.0020.0002.140B] # CANADIAN SYLLABICS AA
+140C ; [.2A9B.0020.0002.140C] # CANADIAN SYLLABICS WE
+140D ; [.2A9C.0020.0002.140D] # CANADIAN SYLLABICS WEST-CREE WE
+140E ; [.2A9D.0020.0002.140E] # CANADIAN SYLLABICS WI
+140F ; [.2A9E.0020.0002.140F] # CANADIAN SYLLABICS WEST-CREE WI
+1410 ; [.2A9F.0020.0002.1410] # CANADIAN SYLLABICS WII
+1411 ; [.2AA0.0020.0002.1411] # CANADIAN SYLLABICS WEST-CREE WII
+1412 ; [.2AA1.0020.0002.1412] # CANADIAN SYLLABICS WO
+1413 ; [.2AA2.0020.0002.1413] # CANADIAN SYLLABICS WEST-CREE WO
+1414 ; [.2AA3.0020.0002.1414] # CANADIAN SYLLABICS WOO
+1415 ; [.2AA4.0020.0002.1415] # CANADIAN SYLLABICS WEST-CREE WOO
+1416 ; [.2AA5.0020.0002.1416] # CANADIAN SYLLABICS NASKAPI WOO
+1417 ; [.2AA6.0020.0002.1417] # CANADIAN SYLLABICS WA
+1418 ; [.2AA7.0020.0002.1418] # CANADIAN SYLLABICS WEST-CREE WA
+1419 ; [.2AA8.0020.0002.1419] # CANADIAN SYLLABICS WAA
+141A ; [.2AA9.0020.0002.141A] # CANADIAN SYLLABICS WEST-CREE WAA
+141B ; [.2AAA.0020.0002.141B] # CANADIAN SYLLABICS NASKAPI WAA
+141C ; [.2AAB.0020.0002.141C] # CANADIAN SYLLABICS AI
+141D ; [.2AAC.0020.0002.141D] # CANADIAN SYLLABICS Y-CREE W
+141E ; [.2AAD.0020.0002.141E] # CANADIAN SYLLABICS GLOTTAL STOP
+141F ; [.2AAE.0020.0002.141F] # CANADIAN SYLLABICS FINAL ACUTE
+1420 ; [.2AAF.0020.0002.1420] # CANADIAN SYLLABICS FINAL GRAVE
+1421 ; [.2AB0.0020.0002.1421] # CANADIAN SYLLABICS FINAL BOTTOM HALF RING
+1422 ; [.2AB1.0020.0002.1422] # CANADIAN SYLLABICS FINAL TOP HALF RING
+1423 ; [.2AB2.0020.0002.1423] # CANADIAN SYLLABICS FINAL RIGHT HALF RING
+1424 ; [.2AB3.0020.0002.1424] # CANADIAN SYLLABICS FINAL RING
+1425 ; [.2AB4.0020.0002.1425] # CANADIAN SYLLABICS FINAL DOUBLE ACUTE
+1426 ; [.2AB5.0020.0002.1426] # CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
+1427 ; [.2AB6.0020.0002.1427] # CANADIAN SYLLABICS FINAL MIDDLE DOT
+1428 ; [.2AB7.0020.0002.1428] # CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
+1429 ; [.2AB8.0020.0002.1429] # CANADIAN SYLLABICS FINAL PLUS
+142A ; [.2AB9.0020.0002.142A] # CANADIAN SYLLABICS FINAL DOWN TACK
+142B ; [.2ABA.0020.0002.142B] # CANADIAN SYLLABICS EN
+142C ; [.2ABB.0020.0002.142C] # CANADIAN SYLLABICS IN
+142D ; [.2ABC.0020.0002.142D] # CANADIAN SYLLABICS ON
+142E ; [.2ABD.0020.0002.142E] # CANADIAN SYLLABICS AN
+142F ; [.2ABE.0020.0002.142F] # CANADIAN SYLLABICS PE
+1430 ; [.2ABF.0020.0002.1430] # CANADIAN SYLLABICS PAAI
+1431 ; [.2AC0.0020.0002.1431] # CANADIAN SYLLABICS PI
+1432 ; [.2AC1.0020.0002.1432] # CANADIAN SYLLABICS PII
+1433 ; [.2AC2.0020.0002.1433] # CANADIAN SYLLABICS PO
+1434 ; [.2AC3.0020.0002.1434] # CANADIAN SYLLABICS POO
+1435 ; [.2AC4.0020.0002.1435] # CANADIAN SYLLABICS Y-CREE POO
+1436 ; [.2AC5.0020.0002.1436] # CANADIAN SYLLABICS CARRIER HEE
+1437 ; [.2AC6.0020.0002.1437] # CANADIAN SYLLABICS CARRIER HI
+1438 ; [.2AC7.0020.0002.1438] # CANADIAN SYLLABICS PA
+1439 ; [.2AC8.0020.0002.1439] # CANADIAN SYLLABICS PAA
+143A ; [.2AC9.0020.0002.143A] # CANADIAN SYLLABICS PWE
+143B ; [.2ACA.0020.0002.143B] # CANADIAN SYLLABICS WEST-CREE PWE
+143C ; [.2ACB.0020.0002.143C] # CANADIAN SYLLABICS PWI
+143D ; [.2ACC.0020.0002.143D] # CANADIAN SYLLABICS WEST-CREE PWI
+143E ; [.2ACD.0020.0002.143E] # CANADIAN SYLLABICS PWII
+143F ; [.2ACE.0020.0002.143F] # CANADIAN SYLLABICS WEST-CREE PWII
+1440 ; [.2ACF.0020.0002.1440] # CANADIAN SYLLABICS PWO
+1441 ; [.2AD0.0020.0002.1441] # CANADIAN SYLLABICS WEST-CREE PWO
+1442 ; [.2AD1.0020.0002.1442] # CANADIAN SYLLABICS PWOO
+1443 ; [.2AD2.0020.0002.1443] # CANADIAN SYLLABICS WEST-CREE PWOO
+1444 ; [.2AD3.0020.0002.1444] # CANADIAN SYLLABICS PWA
+1445 ; [.2AD4.0020.0002.1445] # CANADIAN SYLLABICS WEST-CREE PWA
+1446 ; [.2AD5.0020.0002.1446] # CANADIAN SYLLABICS PWAA
+1447 ; [.2AD6.0020.0002.1447] # CANADIAN SYLLABICS WEST-CREE PWAA
+1448 ; [.2AD7.0020.0002.1448] # CANADIAN SYLLABICS Y-CREE PWAA
+1449 ; [.2AD8.0020.0002.1449] # CANADIAN SYLLABICS P
+144A ; [.2AD9.0020.0002.144A] # CANADIAN SYLLABICS WEST-CREE P
+144B ; [.2ADA.0020.0002.144B] # CANADIAN SYLLABICS CARRIER H
+144C ; [.2ADB.0020.0002.144C] # CANADIAN SYLLABICS TE
+144D ; [.2ADC.0020.0002.144D] # CANADIAN SYLLABICS TAAI
+144E ; [.2ADD.0020.0002.144E] # CANADIAN SYLLABICS TI
+144F ; [.2ADE.0020.0002.144F] # CANADIAN SYLLABICS TII
+1450 ; [.2ADF.0020.0002.1450] # CANADIAN SYLLABICS TO
+1451 ; [.2AE0.0020.0002.1451] # CANADIAN SYLLABICS TOO
+1452 ; [.2AE1.0020.0002.1452] # CANADIAN SYLLABICS Y-CREE TOO
+1453 ; [.2AE2.0020.0002.1453] # CANADIAN SYLLABICS CARRIER DEE
+1454 ; [.2AE3.0020.0002.1454] # CANADIAN SYLLABICS CARRIER DI
+1455 ; [.2AE4.0020.0002.1455] # CANADIAN SYLLABICS TA
+1456 ; [.2AE5.0020.0002.1456] # CANADIAN SYLLABICS TAA
+1457 ; [.2AE6.0020.0002.1457] # CANADIAN SYLLABICS TWE
+1458 ; [.2AE7.0020.0002.1458] # CANADIAN SYLLABICS WEST-CREE TWE
+1459 ; [.2AE8.0020.0002.1459] # CANADIAN SYLLABICS TWI
+145A ; [.2AE9.0020.0002.145A] # CANADIAN SYLLABICS WEST-CREE TWI
+145B ; [.2AEA.0020.0002.145B] # CANADIAN SYLLABICS TWII
+145C ; [.2AEB.0020.0002.145C] # CANADIAN SYLLABICS WEST-CREE TWII
+145D ; [.2AEC.0020.0002.145D] # CANADIAN SYLLABICS TWO
+145E ; [.2AED.0020.0002.145E] # CANADIAN SYLLABICS WEST-CREE TWO
+145F ; [.2AEE.0020.0002.145F] # CANADIAN SYLLABICS TWOO
+1460 ; [.2AEF.0020.0002.1460] # CANADIAN SYLLABICS WEST-CREE TWOO
+1461 ; [.2AF0.0020.0002.1461] # CANADIAN SYLLABICS TWA
+1462 ; [.2AF1.0020.0002.1462] # CANADIAN SYLLABICS WEST-CREE TWA
+1463 ; [.2AF2.0020.0002.1463] # CANADIAN SYLLABICS TWAA
+1464 ; [.2AF3.0020.0002.1464] # CANADIAN SYLLABICS WEST-CREE TWAA
+1465 ; [.2AF4.0020.0002.1465] # CANADIAN SYLLABICS NASKAPI TWAA
+1466 ; [.2AF5.0020.0002.1466] # CANADIAN SYLLABICS T
+1467 ; [.2AF6.0020.0002.1467] # CANADIAN SYLLABICS TTE
+1468 ; [.2AF7.0020.0002.1468] # CANADIAN SYLLABICS TTI
+1469 ; [.2AF8.0020.0002.1469] # CANADIAN SYLLABICS TTO
+146A ; [.2AF9.0020.0002.146A] # CANADIAN SYLLABICS TTA
+146B ; [.2AFA.0020.0002.146B] # CANADIAN SYLLABICS KE
+146C ; [.2AFB.0020.0002.146C] # CANADIAN SYLLABICS KAAI
+146D ; [.2AFC.0020.0002.146D] # CANADIAN SYLLABICS KI
+146E ; [.2AFD.0020.0002.146E] # CANADIAN SYLLABICS KII
+146F ; [.2AFE.0020.0002.146F] # CANADIAN SYLLABICS KO
+1470 ; [.2AFF.0020.0002.1470] # CANADIAN SYLLABICS KOO
+1471 ; [.2B00.0020.0002.1471] # CANADIAN SYLLABICS Y-CREE KOO
+1472 ; [.2B01.0020.0002.1472] # CANADIAN SYLLABICS KA
+1473 ; [.2B02.0020.0002.1473] # CANADIAN SYLLABICS KAA
+1474 ; [.2B03.0020.0002.1474] # CANADIAN SYLLABICS KWE
+1475 ; [.2B04.0020.0002.1475] # CANADIAN SYLLABICS WEST-CREE KWE
+1476 ; [.2B05.0020.0002.1476] # CANADIAN SYLLABICS KWI
+1477 ; [.2B06.0020.0002.1477] # CANADIAN SYLLABICS WEST-CREE KWI
+1478 ; [.2B07.0020.0002.1478] # CANADIAN SYLLABICS KWII
+1479 ; [.2B08.0020.0002.1479] # CANADIAN SYLLABICS WEST-CREE KWII
+147A ; [.2B09.0020.0002.147A] # CANADIAN SYLLABICS KWO
+147B ; [.2B0A.0020.0002.147B] # CANADIAN SYLLABICS WEST-CREE KWO
+147C ; [.2B0B.0020.0002.147C] # CANADIAN SYLLABICS KWOO
+147D ; [.2B0C.0020.0002.147D] # CANADIAN SYLLABICS WEST-CREE KWOO
+147E ; [.2B0D.0020.0002.147E] # CANADIAN SYLLABICS KWA
+147F ; [.2B0E.0020.0002.147F] # CANADIAN SYLLABICS WEST-CREE KWA
+1480 ; [.2B0F.0020.0002.1480] # CANADIAN SYLLABICS KWAA
+1481 ; [.2B10.0020.0002.1481] # CANADIAN SYLLABICS WEST-CREE KWAA
+1482 ; [.2B11.0020.0002.1482] # CANADIAN SYLLABICS NASKAPI KWAA
+1483 ; [.2B12.0020.0002.1483] # CANADIAN SYLLABICS K
+1484 ; [.2B13.0020.0002.1484] # CANADIAN SYLLABICS KW
+1485 ; [.2B14.0020.0002.1485] # CANADIAN SYLLABICS SOUTH-SLAVEY KEH
+1486 ; [.2B15.0020.0002.1486] # CANADIAN SYLLABICS SOUTH-SLAVEY KIH
+1487 ; [.2B16.0020.0002.1487] # CANADIAN SYLLABICS SOUTH-SLAVEY KOH
+1488 ; [.2B17.0020.0002.1488] # CANADIAN SYLLABICS SOUTH-SLAVEY KAH
+1489 ; [.2B18.0020.0002.1489] # CANADIAN SYLLABICS CE
+148A ; [.2B19.0020.0002.148A] # CANADIAN SYLLABICS CAAI
+148B ; [.2B1A.0020.0002.148B] # CANADIAN SYLLABICS CI
+148C ; [.2B1B.0020.0002.148C] # CANADIAN SYLLABICS CII
+148D ; [.2B1C.0020.0002.148D] # CANADIAN SYLLABICS CO
+148E ; [.2B1D.0020.0002.148E] # CANADIAN SYLLABICS COO
+148F ; [.2B1E.0020.0002.148F] # CANADIAN SYLLABICS Y-CREE COO
+1490 ; [.2B1F.0020.0002.1490] # CANADIAN SYLLABICS CA
+1491 ; [.2B20.0020.0002.1491] # CANADIAN SYLLABICS CAA
+1492 ; [.2B21.0020.0002.1492] # CANADIAN SYLLABICS CWE
+1493 ; [.2B22.0020.0002.1493] # CANADIAN SYLLABICS WEST-CREE CWE
+1494 ; [.2B23.0020.0002.1494] # CANADIAN SYLLABICS CWI
+1495 ; [.2B24.0020.0002.1495] # CANADIAN SYLLABICS WEST-CREE CWI
+1496 ; [.2B25.0020.0002.1496] # CANADIAN SYLLABICS CWII
+1497 ; [.2B26.0020.0002.1497] # CANADIAN SYLLABICS WEST-CREE CWII
+1498 ; [.2B27.0020.0002.1498] # CANADIAN SYLLABICS CWO
+1499 ; [.2B28.0020.0002.1499] # CANADIAN SYLLABICS WEST-CREE CWO
+149A ; [.2B29.0020.0002.149A] # CANADIAN SYLLABICS CWOO
+149B ; [.2B2A.0020.0002.149B] # CANADIAN SYLLABICS WEST-CREE CWOO
+149C ; [.2B2B.0020.0002.149C] # CANADIAN SYLLABICS CWA
+149D ; [.2B2C.0020.0002.149D] # CANADIAN SYLLABICS WEST-CREE CWA
+149E ; [.2B2D.0020.0002.149E] # CANADIAN SYLLABICS CWAA
+149F ; [.2B2E.0020.0002.149F] # CANADIAN SYLLABICS WEST-CREE CWAA
+14A0 ; [.2B2F.0020.0002.14A0] # CANADIAN SYLLABICS NASKAPI CWAA
+14A1 ; [.2B30.0020.0002.14A1] # CANADIAN SYLLABICS C
+14A2 ; [.2B31.0020.0002.14A2] # CANADIAN SYLLABICS SAYISI TH
+14A3 ; [.2B32.0020.0002.14A3] # CANADIAN SYLLABICS ME
+14A4 ; [.2B33.0020.0002.14A4] # CANADIAN SYLLABICS MAAI
+14A5 ; [.2B34.0020.0002.14A5] # CANADIAN SYLLABICS MI
+14A6 ; [.2B35.0020.0002.14A6] # CANADIAN SYLLABICS MII
+14A7 ; [.2B36.0020.0002.14A7] # CANADIAN SYLLABICS MO
+14A8 ; [.2B37.0020.0002.14A8] # CANADIAN SYLLABICS MOO
+14A9 ; [.2B38.0020.0002.14A9] # CANADIAN SYLLABICS Y-CREE MOO
+14AA ; [.2B39.0020.0002.14AA] # CANADIAN SYLLABICS MA
+14AB ; [.2B3A.0020.0002.14AB] # CANADIAN SYLLABICS MAA
+14AC ; [.2B3B.0020.0002.14AC] # CANADIAN SYLLABICS MWE
+14AD ; [.2B3C.0020.0002.14AD] # CANADIAN SYLLABICS WEST-CREE MWE
+14AE ; [.2B3D.0020.0002.14AE] # CANADIAN SYLLABICS MWI
+14AF ; [.2B3E.0020.0002.14AF] # CANADIAN SYLLABICS WEST-CREE MWI
+14B0 ; [.2B3F.0020.0002.14B0] # CANADIAN SYLLABICS MWII
+14B1 ; [.2B40.0020.0002.14B1] # CANADIAN SYLLABICS WEST-CREE MWII
+14B2 ; [.2B41.0020.0002.14B2] # CANADIAN SYLLABICS MWO
+14B3 ; [.2B42.0020.0002.14B3] # CANADIAN SYLLABICS WEST-CREE MWO
+14B4 ; [.2B43.0020.0002.14B4] # CANADIAN SYLLABICS MWOO
+14B5 ; [.2B44.0020.0002.14B5] # CANADIAN SYLLABICS WEST-CREE MWOO
+14B6 ; [.2B45.0020.0002.14B6] # CANADIAN SYLLABICS MWA
+14B7 ; [.2B46.0020.0002.14B7] # CANADIAN SYLLABICS WEST-CREE MWA
+14B8 ; [.2B47.0020.0002.14B8] # CANADIAN SYLLABICS MWAA
+14B9 ; [.2B48.0020.0002.14B9] # CANADIAN SYLLABICS WEST-CREE MWAA
+14BA ; [.2B49.0020.0002.14BA] # CANADIAN SYLLABICS NASKAPI MWAA
+14BB ; [.2B4A.0020.0002.14BB] # CANADIAN SYLLABICS M
+14BC ; [.2B4B.0020.0002.14BC] # CANADIAN SYLLABICS WEST-CREE M
+14BD ; [.2B4C.0020.0002.14BD] # CANADIAN SYLLABICS MH
+14BE ; [.2B4D.0020.0002.14BE] # CANADIAN SYLLABICS ATHAPASCAN M
+14BF ; [.2B4E.0020.0002.14BF] # CANADIAN SYLLABICS SAYISI M
+14C0 ; [.2B4F.0020.0002.14C0] # CANADIAN SYLLABICS NE
+14C1 ; [.2B50.0020.0002.14C1] # CANADIAN SYLLABICS NAAI
+14C2 ; [.2B51.0020.0002.14C2] # CANADIAN SYLLABICS NI
+14C3 ; [.2B52.0020.0002.14C3] # CANADIAN SYLLABICS NII
+14C4 ; [.2B53.0020.0002.14C4] # CANADIAN SYLLABICS NO
+14C5 ; [.2B54.0020.0002.14C5] # CANADIAN SYLLABICS NOO
+14C6 ; [.2B55.0020.0002.14C6] # CANADIAN SYLLABICS Y-CREE NOO
+14C7 ; [.2B56.0020.0002.14C7] # CANADIAN SYLLABICS NA
+14C8 ; [.2B57.0020.0002.14C8] # CANADIAN SYLLABICS NAA
+14C9 ; [.2B58.0020.0002.14C9] # CANADIAN SYLLABICS NWE
+14CA ; [.2B59.0020.0002.14CA] # CANADIAN SYLLABICS WEST-CREE NWE
+14CB ; [.2B5A.0020.0002.14CB] # CANADIAN SYLLABICS NWA
+14CC ; [.2B5B.0020.0002.14CC] # CANADIAN SYLLABICS WEST-CREE NWA
+14CD ; [.2B5C.0020.0002.14CD] # CANADIAN SYLLABICS NWAA
+14CE ; [.2B5D.0020.0002.14CE] # CANADIAN SYLLABICS WEST-CREE NWAA
+14CF ; [.2B5E.0020.0002.14CF] # CANADIAN SYLLABICS NASKAPI NWAA
+14D0 ; [.2B5F.0020.0002.14D0] # CANADIAN SYLLABICS N
+14D1 ; [.2B60.0020.0002.14D1] # CANADIAN SYLLABICS CARRIER NG
+14D2 ; [.2B61.0020.0002.14D2] # CANADIAN SYLLABICS NH
+14D3 ; [.2B62.0020.0002.14D3] # CANADIAN SYLLABICS LE
+14D4 ; [.2B63.0020.0002.14D4] # CANADIAN SYLLABICS LAAI
+14D5 ; [.2B64.0020.0002.14D5] # CANADIAN SYLLABICS LI
+14D6 ; [.2B65.0020.0002.14D6] # CANADIAN SYLLABICS LII
+14D7 ; [.2B66.0020.0002.14D7] # CANADIAN SYLLABICS LO
+14D8 ; [.2B67.0020.0002.14D8] # CANADIAN SYLLABICS LOO
+14D9 ; [.2B68.0020.0002.14D9] # CANADIAN SYLLABICS Y-CREE LOO
+14DA ; [.2B69.0020.0002.14DA] # CANADIAN SYLLABICS LA
+14DB ; [.2B6A.0020.0002.14DB] # CANADIAN SYLLABICS LAA
+14DC ; [.2B6B.0020.0002.14DC] # CANADIAN SYLLABICS LWE
+14DD ; [.2B6C.0020.0002.14DD] # CANADIAN SYLLABICS WEST-CREE LWE
+14DE ; [.2B6D.0020.0002.14DE] # CANADIAN SYLLABICS LWI
+14DF ; [.2B6E.0020.0002.14DF] # CANADIAN SYLLABICS WEST-CREE LWI
+14E0 ; [.2B6F.0020.0002.14E0] # CANADIAN SYLLABICS LWII
+14E1 ; [.2B70.0020.0002.14E1] # CANADIAN SYLLABICS WEST-CREE LWII
+14E2 ; [.2B71.0020.0002.14E2] # CANADIAN SYLLABICS LWO
+14E3 ; [.2B72.0020.0002.14E3] # CANADIAN SYLLABICS WEST-CREE LWO
+14E4 ; [.2B73.0020.0002.14E4] # CANADIAN SYLLABICS LWOO
+14E5 ; [.2B74.0020.0002.14E5] # CANADIAN SYLLABICS WEST-CREE LWOO
+14E6 ; [.2B75.0020.0002.14E6] # CANADIAN SYLLABICS LWA
+14E7 ; [.2B76.0020.0002.14E7] # CANADIAN SYLLABICS WEST-CREE LWA
+14E8 ; [.2B77.0020.0002.14E8] # CANADIAN SYLLABICS LWAA
+14E9 ; [.2B78.0020.0002.14E9] # CANADIAN SYLLABICS WEST-CREE LWAA
+14EA ; [.2B79.0020.0002.14EA] # CANADIAN SYLLABICS L
+14EB ; [.2B7A.0020.0002.14EB] # CANADIAN SYLLABICS WEST-CREE L
+14EC ; [.2B7B.0020.0002.14EC] # CANADIAN SYLLABICS MEDIAL L
+14ED ; [.2B7C.0020.0002.14ED] # CANADIAN SYLLABICS SE
+14EE ; [.2B7D.0020.0002.14EE] # CANADIAN SYLLABICS SAAI
+14EF ; [.2B7E.0020.0002.14EF] # CANADIAN SYLLABICS SI
+14F0 ; [.2B7F.0020.0002.14F0] # CANADIAN SYLLABICS SII
+14F1 ; [.2B80.0020.0002.14F1] # CANADIAN SYLLABICS SO
+14F2 ; [.2B81.0020.0002.14F2] # CANADIAN SYLLABICS SOO
+14F3 ; [.2B82.0020.0002.14F3] # CANADIAN SYLLABICS Y-CREE SOO
+14F4 ; [.2B83.0020.0002.14F4] # CANADIAN SYLLABICS SA
+14F5 ; [.2B84.0020.0002.14F5] # CANADIAN SYLLABICS SAA
+14F6 ; [.2B85.0020.0002.14F6] # CANADIAN SYLLABICS SWE
+14F7 ; [.2B86.0020.0002.14F7] # CANADIAN SYLLABICS WEST-CREE SWE
+14F8 ; [.2B87.0020.0002.14F8] # CANADIAN SYLLABICS SWI
+14F9 ; [.2B88.0020.0002.14F9] # CANADIAN SYLLABICS WEST-CREE SWI
+14FA ; [.2B89.0020.0002.14FA] # CANADIAN SYLLABICS SWII
+14FB ; [.2B8A.0020.0002.14FB] # CANADIAN SYLLABICS WEST-CREE SWII
+14FC ; [.2B8B.0020.0002.14FC] # CANADIAN SYLLABICS SWO
+14FD ; [.2B8C.0020.0002.14FD] # CANADIAN SYLLABICS WEST-CREE SWO
+14FE ; [.2B8D.0020.0002.14FE] # CANADIAN SYLLABICS SWOO
+14FF ; [.2B8E.0020.0002.14FF] # CANADIAN SYLLABICS WEST-CREE SWOO
+1500 ; [.2B8F.0020.0002.1500] # CANADIAN SYLLABICS SWA
+1501 ; [.2B90.0020.0002.1501] # CANADIAN SYLLABICS WEST-CREE SWA
+1502 ; [.2B91.0020.0002.1502] # CANADIAN SYLLABICS SWAA
+1503 ; [.2B92.0020.0002.1503] # CANADIAN SYLLABICS WEST-CREE SWAA
+1504 ; [.2B93.0020.0002.1504] # CANADIAN SYLLABICS NASKAPI SWAA
+1505 ; [.2B94.0020.0002.1505] # CANADIAN SYLLABICS S
+1506 ; [.2B95.0020.0002.1506] # CANADIAN SYLLABICS ATHAPASCAN S
+1507 ; [.2B96.0020.0002.1507] # CANADIAN SYLLABICS SW
+1508 ; [.2B97.0020.0002.1508] # CANADIAN SYLLABICS BLACKFOOT S
+1509 ; [.2B98.0020.0002.1509] # CANADIAN SYLLABICS MOOSE-CREE SK
+150A ; [.2B99.0020.0002.150A] # CANADIAN SYLLABICS NASKAPI SKW
+150B ; [.2B9A.0020.0002.150B] # CANADIAN SYLLABICS NASKAPI S-W
+150C ; [.2B9B.0020.0002.150C] # CANADIAN SYLLABICS NASKAPI SPWA
+150D ; [.2B9C.0020.0002.150D] # CANADIAN SYLLABICS NASKAPI STWA
+150E ; [.2B9D.0020.0002.150E] # CANADIAN SYLLABICS NASKAPI SKWA
+150F ; [.2B9E.0020.0002.150F] # CANADIAN SYLLABICS NASKAPI SCWA
+1510 ; [.2B9F.0020.0002.1510] # CANADIAN SYLLABICS SHE
+1511 ; [.2BA0.0020.0002.1511] # CANADIAN SYLLABICS SHI
+1512 ; [.2BA1.0020.0002.1512] # CANADIAN SYLLABICS SHII
+1513 ; [.2BA2.0020.0002.1513] # CANADIAN SYLLABICS SHO
+1514 ; [.2BA3.0020.0002.1514] # CANADIAN SYLLABICS SHOO
+1515 ; [.2BA4.0020.0002.1515] # CANADIAN SYLLABICS SHA
+1516 ; [.2BA5.0020.0002.1516] # CANADIAN SYLLABICS SHAA
+1517 ; [.2BA6.0020.0002.1517] # CANADIAN SYLLABICS SHWE
+1518 ; [.2BA7.0020.0002.1518] # CANADIAN SYLLABICS WEST-CREE SHWE
+1519 ; [.2BA8.0020.0002.1519] # CANADIAN SYLLABICS SHWI
+151A ; [.2BA9.0020.0002.151A] # CANADIAN SYLLABICS WEST-CREE SHWI
+151B ; [.2BAA.0020.0002.151B] # CANADIAN SYLLABICS SHWII
+151C ; [.2BAB.0020.0002.151C] # CANADIAN SYLLABICS WEST-CREE SHWII
+151D ; [.2BAC.0020.0002.151D] # CANADIAN SYLLABICS SHWO
+151E ; [.2BAD.0020.0002.151E] # CANADIAN SYLLABICS WEST-CREE SHWO
+151F ; [.2BAE.0020.0002.151F] # CANADIAN SYLLABICS SHWOO
+1520 ; [.2BAF.0020.0002.1520] # CANADIAN SYLLABICS WEST-CREE SHWOO
+1521 ; [.2BB0.0020.0002.1521] # CANADIAN SYLLABICS SHWA
+1522 ; [.2BB1.0020.0002.1522] # CANADIAN SYLLABICS WEST-CREE SHWA
+1523 ; [.2BB2.0020.0002.1523] # CANADIAN SYLLABICS SHWAA
+1524 ; [.2BB3.0020.0002.1524] # CANADIAN SYLLABICS WEST-CREE SHWAA
+1525 ; [.2BB4.0020.0002.1525] # CANADIAN SYLLABICS SH
+1526 ; [.2BB5.0020.0002.1526] # CANADIAN SYLLABICS YE
+1527 ; [.2BB6.0020.0002.1527] # CANADIAN SYLLABICS YAAI
+1528 ; [.2BB7.0020.0002.1528] # CANADIAN SYLLABICS YI
+1529 ; [.2BB8.0020.0002.1529] # CANADIAN SYLLABICS YII
+152A ; [.2BB9.0020.0002.152A] # CANADIAN SYLLABICS YO
+152B ; [.2BBA.0020.0002.152B] # CANADIAN SYLLABICS YOO
+152C ; [.2BBB.0020.0002.152C] # CANADIAN SYLLABICS Y-CREE YOO
+152D ; [.2BBC.0020.0002.152D] # CANADIAN SYLLABICS YA
+152E ; [.2BBD.0020.0002.152E] # CANADIAN SYLLABICS YAA
+152F ; [.2BBE.0020.0002.152F] # CANADIAN SYLLABICS YWE
+1530 ; [.2BBF.0020.0002.1530] # CANADIAN SYLLABICS WEST-CREE YWE
+1531 ; [.2BC0.0020.0002.1531] # CANADIAN SYLLABICS YWI
+1532 ; [.2BC1.0020.0002.1532] # CANADIAN SYLLABICS WEST-CREE YWI
+1533 ; [.2BC2.0020.0002.1533] # CANADIAN SYLLABICS YWII
+1534 ; [.2BC3.0020.0002.1534] # CANADIAN SYLLABICS WEST-CREE YWII
+1535 ; [.2BC4.0020.0002.1535] # CANADIAN SYLLABICS YWO
+1536 ; [.2BC5.0020.0002.1536] # CANADIAN SYLLABICS WEST-CREE YWO
+1537 ; [.2BC6.0020.0002.1537] # CANADIAN SYLLABICS YWOO
+1538 ; [.2BC7.0020.0002.1538] # CANADIAN SYLLABICS WEST-CREE YWOO
+1539 ; [.2BC8.0020.0002.1539] # CANADIAN SYLLABICS YWA
+153A ; [.2BC9.0020.0002.153A] # CANADIAN SYLLABICS WEST-CREE YWA
+153B ; [.2BCA.0020.0002.153B] # CANADIAN SYLLABICS YWAA
+153C ; [.2BCB.0020.0002.153C] # CANADIAN SYLLABICS WEST-CREE YWAA
+153D ; [.2BCC.0020.0002.153D] # CANADIAN SYLLABICS NASKAPI YWAA
+153E ; [.2BCD.0020.0002.153E] # CANADIAN SYLLABICS Y
+153F ; [.2BCE.0020.0002.153F] # CANADIAN SYLLABICS BIBLE-CREE Y
+1540 ; [.2BCF.0020.0002.1540] # CANADIAN SYLLABICS WEST-CREE Y
+1541 ; [.2BD0.0020.0002.1541] # CANADIAN SYLLABICS SAYISI YI
+1542 ; [.2BD1.0020.0002.1542] # CANADIAN SYLLABICS RE
+1543 ; [.2BD2.0020.0002.1543] # CANADIAN SYLLABICS R-CREE RE
+1544 ; [.2BD3.0020.0002.1544] # CANADIAN SYLLABICS WEST-CREE LE
+1545 ; [.2BD4.0020.0002.1545] # CANADIAN SYLLABICS RAAI
+1546 ; [.2BD5.0020.0002.1546] # CANADIAN SYLLABICS RI
+1547 ; [.2BD6.0020.0002.1547] # CANADIAN SYLLABICS RII
+1548 ; [.2BD7.0020.0002.1548] # CANADIAN SYLLABICS RO
+1549 ; [.2BD8.0020.0002.1549] # CANADIAN SYLLABICS ROO
+154A ; [.2BD9.0020.0002.154A] # CANADIAN SYLLABICS WEST-CREE LO
+154B ; [.2BDA.0020.0002.154B] # CANADIAN SYLLABICS RA
+154C ; [.2BDB.0020.0002.154C] # CANADIAN SYLLABICS RAA
+154D ; [.2BDC.0020.0002.154D] # CANADIAN SYLLABICS WEST-CREE LA
+154E ; [.2BDD.0020.0002.154E] # CANADIAN SYLLABICS RWAA
+154F ; [.2BDE.0020.0002.154F] # CANADIAN SYLLABICS WEST-CREE RWAA
+1550 ; [.2BDF.0020.0002.1550] # CANADIAN SYLLABICS R
+1551 ; [.2BE0.0020.0002.1551] # CANADIAN SYLLABICS WEST-CREE R
+1552 ; [.2BE1.0020.0002.1552] # CANADIAN SYLLABICS MEDIAL R
+1553 ; [.2BE2.0020.0002.1553] # CANADIAN SYLLABICS FE
+1554 ; [.2BE3.0020.0002.1554] # CANADIAN SYLLABICS FAAI
+1555 ; [.2BE4.0020.0002.1555] # CANADIAN SYLLABICS FI
+1556 ; [.2BE5.0020.0002.1556] # CANADIAN SYLLABICS FII
+1557 ; [.2BE6.0020.0002.1557] # CANADIAN SYLLABICS FO
+1558 ; [.2BE7.0020.0002.1558] # CANADIAN SYLLABICS FOO
+1559 ; [.2BE8.0020.0002.1559] # CANADIAN SYLLABICS FA
+155A ; [.2BE9.0020.0002.155A] # CANADIAN SYLLABICS FAA
+155B ; [.2BEA.0020.0002.155B] # CANADIAN SYLLABICS FWAA
+155C ; [.2BEB.0020.0002.155C] # CANADIAN SYLLABICS WEST-CREE FWAA
+155D ; [.2BEC.0020.0002.155D] # CANADIAN SYLLABICS F
+155E ; [.2BED.0020.0002.155E] # CANADIAN SYLLABICS THE
+155F ; [.2BEE.0020.0002.155F] # CANADIAN SYLLABICS N-CREE THE
+1560 ; [.2BEF.0020.0002.1560] # CANADIAN SYLLABICS THI
+1561 ; [.2BF0.0020.0002.1561] # CANADIAN SYLLABICS N-CREE THI
+1562 ; [.2BF1.0020.0002.1562] # CANADIAN SYLLABICS THII
+1563 ; [.2BF2.0020.0002.1563] # CANADIAN SYLLABICS N-CREE THII
+1564 ; [.2BF3.0020.0002.1564] # CANADIAN SYLLABICS THO
+1565 ; [.2BF4.0020.0002.1565] # CANADIAN SYLLABICS THOO
+1566 ; [.2BF5.0020.0002.1566] # CANADIAN SYLLABICS THA
+1567 ; [.2BF6.0020.0002.1567] # CANADIAN SYLLABICS THAA
+1568 ; [.2BF7.0020.0002.1568] # CANADIAN SYLLABICS THWAA
+1569 ; [.2BF8.0020.0002.1569] # CANADIAN SYLLABICS WEST-CREE THWAA
+156A ; [.2BF9.0020.0002.156A] # CANADIAN SYLLABICS TH
+156B ; [.2BFA.0020.0002.156B] # CANADIAN SYLLABICS TTHE
+156C ; [.2BFB.0020.0002.156C] # CANADIAN SYLLABICS TTHI
+156D ; [.2BFC.0020.0002.156D] # CANADIAN SYLLABICS TTHO
+156E ; [.2BFD.0020.0002.156E] # CANADIAN SYLLABICS TTHA
+156F ; [.2BFE.0020.0002.156F] # CANADIAN SYLLABICS TTH
+1570 ; [.2BFF.0020.0002.1570] # CANADIAN SYLLABICS TYE
+1571 ; [.2C00.0020.0002.1571] # CANADIAN SYLLABICS TYI
+1572 ; [.2C01.0020.0002.1572] # CANADIAN SYLLABICS TYO
+1573 ; [.2C02.0020.0002.1573] # CANADIAN SYLLABICS TYA
+1574 ; [.2C03.0020.0002.1574] # CANADIAN SYLLABICS NUNAVIK HE
+1575 ; [.2C04.0020.0002.1575] # CANADIAN SYLLABICS NUNAVIK HI
+1576 ; [.2C05.0020.0002.1576] # CANADIAN SYLLABICS NUNAVIK HII
+1577 ; [.2C06.0020.0002.1577] # CANADIAN SYLLABICS NUNAVIK HO
+1578 ; [.2C07.0020.0002.1578] # CANADIAN SYLLABICS NUNAVIK HOO
+1579 ; [.2C08.0020.0002.1579] # CANADIAN SYLLABICS NUNAVIK HA
+157A ; [.2C09.0020.0002.157A] # CANADIAN SYLLABICS NUNAVIK HAA
+157B ; [.2C0A.0020.0002.157B] # CANADIAN SYLLABICS NUNAVIK H
+157D ; [.2C0B.0020.0002.157D] # CANADIAN SYLLABICS HK
+166F ; [.2C0C.0020.0002.166F] # CANADIAN SYLLABICS QAI
+157E ; [.2C0D.0020.0002.157E] # CANADIAN SYLLABICS QAAI
+157F ; [.2C0E.0020.0002.157F] # CANADIAN SYLLABICS QI
+1580 ; [.2C0F.0020.0002.1580] # CANADIAN SYLLABICS QII
+1581 ; [.2C10.0020.0002.1581] # CANADIAN SYLLABICS QO
+1582 ; [.2C11.0020.0002.1582] # CANADIAN SYLLABICS QOO
+1583 ; [.2C12.0020.0002.1583] # CANADIAN SYLLABICS QA
+1584 ; [.2C13.0020.0002.1584] # CANADIAN SYLLABICS QAA
+1585 ; [.2C14.0020.0002.1585] # CANADIAN SYLLABICS Q
+1586 ; [.2C15.0020.0002.1586] # CANADIAN SYLLABICS TLHE
+1587 ; [.2C16.0020.0002.1587] # CANADIAN SYLLABICS TLHI
+1588 ; [.2C17.0020.0002.1588] # CANADIAN SYLLABICS TLHO
+1589 ; [.2C18.0020.0002.1589] # CANADIAN SYLLABICS TLHA
+158A ; [.2C19.0020.0002.158A] # CANADIAN SYLLABICS WEST-CREE RE
+158B ; [.2C1A.0020.0002.158B] # CANADIAN SYLLABICS WEST-CREE RI
+158C ; [.2C1B.0020.0002.158C] # CANADIAN SYLLABICS WEST-CREE RO
+158D ; [.2C1C.0020.0002.158D] # CANADIAN SYLLABICS WEST-CREE RA
+1670 ; [.2C1D.0020.0002.1670] # CANADIAN SYLLABICS NGAI
+158E ; [.2C1E.0020.0002.158E] # CANADIAN SYLLABICS NGAAI
+158F ; [.2C1F.0020.0002.158F] # CANADIAN SYLLABICS NGI
+1590 ; [.2C20.0020.0002.1590] # CANADIAN SYLLABICS NGII
+1591 ; [.2C21.0020.0002.1591] # CANADIAN SYLLABICS NGO
+1592 ; [.2C22.0020.0002.1592] # CANADIAN SYLLABICS NGOO
+1593 ; [.2C23.0020.0002.1593] # CANADIAN SYLLABICS NGA
+1594 ; [.2C24.0020.0002.1594] # CANADIAN SYLLABICS NGAA
+1595 ; [.2C25.0020.0002.1595] # CANADIAN SYLLABICS NG
+1671 ; [.2C26.0020.0002.1671] # CANADIAN SYLLABICS NNGI
+1672 ; [.2C27.0020.0002.1672] # CANADIAN SYLLABICS NNGII
+1673 ; [.2C28.0020.0002.1673] # CANADIAN SYLLABICS NNGO
+1674 ; [.2C29.0020.0002.1674] # CANADIAN SYLLABICS NNGOO
+1675 ; [.2C2A.0020.0002.1675] # CANADIAN SYLLABICS NNGA
+1676 ; [.2C2B.0020.0002.1676] # CANADIAN SYLLABICS NNGAA
+1596 ; [.2C2C.0020.0002.1596] # CANADIAN SYLLABICS NNG
+1597 ; [.2C2D.0020.0002.1597] # CANADIAN SYLLABICS SAYISI SHE
+1598 ; [.2C2E.0020.0002.1598] # CANADIAN SYLLABICS SAYISI SHI
+1599 ; [.2C2F.0020.0002.1599] # CANADIAN SYLLABICS SAYISI SHO
+159A ; [.2C30.0020.0002.159A] # CANADIAN SYLLABICS SAYISI SHA
+159B ; [.2C31.0020.0002.159B] # CANADIAN SYLLABICS WOODS-CREE THE
+159C ; [.2C32.0020.0002.159C] # CANADIAN SYLLABICS WOODS-CREE THI
+159D ; [.2C33.0020.0002.159D] # CANADIAN SYLLABICS WOODS-CREE THO
+159E ; [.2C34.0020.0002.159E] # CANADIAN SYLLABICS WOODS-CREE THA
+159F ; [.2C35.0020.0002.159F] # CANADIAN SYLLABICS WOODS-CREE TH
+15A0 ; [.2C36.0020.0002.15A0] # CANADIAN SYLLABICS LHI
+15A1 ; [.2C37.0020.0002.15A1] # CANADIAN SYLLABICS LHII
+15A2 ; [.2C38.0020.0002.15A2] # CANADIAN SYLLABICS LHO
+15A3 ; [.2C39.0020.0002.15A3] # CANADIAN SYLLABICS LHOO
+15A4 ; [.2C3A.0020.0002.15A4] # CANADIAN SYLLABICS LHA
+15A5 ; [.2C3B.0020.0002.15A5] # CANADIAN SYLLABICS LHAA
+15A6 ; [.2C3C.0020.0002.15A6] # CANADIAN SYLLABICS LH
+157C ; [.2C3D.0020.0002.157C] # CANADIAN SYLLABICS NUNAVUT H
+15A7 ; [.2C3E.0020.0002.15A7] # CANADIAN SYLLABICS TH-CREE THE
+15A8 ; [.2C3F.0020.0002.15A8] # CANADIAN SYLLABICS TH-CREE THI
+15A9 ; [.2C40.0020.0002.15A9] # CANADIAN SYLLABICS TH-CREE THII
+15AA ; [.2C41.0020.0002.15AA] # CANADIAN SYLLABICS TH-CREE THO
+15AB ; [.2C42.0020.0002.15AB] # CANADIAN SYLLABICS TH-CREE THOO
+15AC ; [.2C43.0020.0002.15AC] # CANADIAN SYLLABICS TH-CREE THA
+15AD ; [.2C44.0020.0002.15AD] # CANADIAN SYLLABICS TH-CREE THAA
+15AE ; [.2C45.0020.0002.15AE] # CANADIAN SYLLABICS TH-CREE TH
+15AF ; [.2C46.0020.0002.15AF] # CANADIAN SYLLABICS AIVILIK B
+15B0 ; [.2C47.0020.0002.15B0] # CANADIAN SYLLABICS BLACKFOOT E
+15B1 ; [.2C48.0020.0002.15B1] # CANADIAN SYLLABICS BLACKFOOT I
+15B2 ; [.2C49.0020.0002.15B2] # CANADIAN SYLLABICS BLACKFOOT O
+15B3 ; [.2C4A.0020.0002.15B3] # CANADIAN SYLLABICS BLACKFOOT A
+15B4 ; [.2C4B.0020.0002.15B4] # CANADIAN SYLLABICS BLACKFOOT WE
+15B5 ; [.2C4C.0020.0002.15B5] # CANADIAN SYLLABICS BLACKFOOT WI
+15B6 ; [.2C4D.0020.0002.15B6] # CANADIAN SYLLABICS BLACKFOOT WO
+15B7 ; [.2C4E.0020.0002.15B7] # CANADIAN SYLLABICS BLACKFOOT WA
+15B8 ; [.2C4F.0020.0002.15B8] # CANADIAN SYLLABICS BLACKFOOT NE
+15B9 ; [.2C50.0020.0002.15B9] # CANADIAN SYLLABICS BLACKFOOT NI
+15BA ; [.2C51.0020.0002.15BA] # CANADIAN SYLLABICS BLACKFOOT NO
+15BB ; [.2C52.0020.0002.15BB] # CANADIAN SYLLABICS BLACKFOOT NA
+15BC ; [.2C53.0020.0002.15BC] # CANADIAN SYLLABICS BLACKFOOT KE
+15BD ; [.2C54.0020.0002.15BD] # CANADIAN SYLLABICS BLACKFOOT KI
+15BE ; [.2C55.0020.0002.15BE] # CANADIAN SYLLABICS BLACKFOOT KO
+15BF ; [.2C56.0020.0002.15BF] # CANADIAN SYLLABICS BLACKFOOT KA
+15C0 ; [.2C57.0020.0002.15C0] # CANADIAN SYLLABICS SAYISI HE
+15C1 ; [.2C58.0020.0002.15C1] # CANADIAN SYLLABICS SAYISI HI
+15C2 ; [.2C59.0020.0002.15C2] # CANADIAN SYLLABICS SAYISI HO
+15C3 ; [.2C5A.0020.0002.15C3] # CANADIAN SYLLABICS SAYISI HA
+15C4 ; [.2C5B.0020.0002.15C4] # CANADIAN SYLLABICS CARRIER GHU
+15C5 ; [.2C5C.0020.0002.15C5] # CANADIAN SYLLABICS CARRIER GHO
+15C6 ; [.2C5D.0020.0002.15C6] # CANADIAN SYLLABICS CARRIER GHE
+15C7 ; [.2C5E.0020.0002.15C7] # CANADIAN SYLLABICS CARRIER GHEE
+15C8 ; [.2C5F.0020.0002.15C8] # CANADIAN SYLLABICS CARRIER GHI
+15C9 ; [.2C60.0020.0002.15C9] # CANADIAN SYLLABICS CARRIER GHA
+15CA ; [.2C61.0020.0002.15CA] # CANADIAN SYLLABICS CARRIER RU
+15CB ; [.2C62.0020.0002.15CB] # CANADIAN SYLLABICS CARRIER RO
+15CC ; [.2C63.0020.0002.15CC] # CANADIAN SYLLABICS CARRIER RE
+15CD ; [.2C64.0020.0002.15CD] # CANADIAN SYLLABICS CARRIER REE
+15CE ; [.2C65.0020.0002.15CE] # CANADIAN SYLLABICS CARRIER RI
+15CF ; [.2C66.0020.0002.15CF] # CANADIAN SYLLABICS CARRIER RA
+15D0 ; [.2C67.0020.0002.15D0] # CANADIAN SYLLABICS CARRIER WU
+15D1 ; [.2C68.0020.0002.15D1] # CANADIAN SYLLABICS CARRIER WO
+15D2 ; [.2C69.0020.0002.15D2] # CANADIAN SYLLABICS CARRIER WE
+15D3 ; [.2C6A.0020.0002.15D3] # CANADIAN SYLLABICS CARRIER WEE
+15D4 ; [.2C6B.0020.0002.15D4] # CANADIAN SYLLABICS CARRIER WI
+15D5 ; [.2C6C.0020.0002.15D5] # CANADIAN SYLLABICS CARRIER WA
+15D6 ; [.2C6D.0020.0002.15D6] # CANADIAN SYLLABICS CARRIER HWU
+15D7 ; [.2C6E.0020.0002.15D7] # CANADIAN SYLLABICS CARRIER HWO
+15D8 ; [.2C6F.0020.0002.15D8] # CANADIAN SYLLABICS CARRIER HWE
+15D9 ; [.2C70.0020.0002.15D9] # CANADIAN SYLLABICS CARRIER HWEE
+15DA ; [.2C71.0020.0002.15DA] # CANADIAN SYLLABICS CARRIER HWI
+15DB ; [.2C72.0020.0002.15DB] # CANADIAN SYLLABICS CARRIER HWA
+15DC ; [.2C73.0020.0002.15DC] # CANADIAN SYLLABICS CARRIER THU
+15DD ; [.2C74.0020.0002.15DD] # CANADIAN SYLLABICS CARRIER THO
+15DE ; [.2C75.0020.0002.15DE] # CANADIAN SYLLABICS CARRIER THE
+15DF ; [.2C76.0020.0002.15DF] # CANADIAN SYLLABICS CARRIER THEE
+15E0 ; [.2C77.0020.0002.15E0] # CANADIAN SYLLABICS CARRIER THI
+15E1 ; [.2C78.0020.0002.15E1] # CANADIAN SYLLABICS CARRIER THA
+15E2 ; [.2C79.0020.0002.15E2] # CANADIAN SYLLABICS CARRIER TTU
+15E3 ; [.2C7A.0020.0002.15E3] # CANADIAN SYLLABICS CARRIER TTO
+15E4 ; [.2C7B.0020.0002.15E4] # CANADIAN SYLLABICS CARRIER TTE
+15E5 ; [.2C7C.0020.0002.15E5] # CANADIAN SYLLABICS CARRIER TTEE
+15E6 ; [.2C7D.0020.0002.15E6] # CANADIAN SYLLABICS CARRIER TTI
+15E7 ; [.2C7E.0020.0002.15E7] # CANADIAN SYLLABICS CARRIER TTA
+15E8 ; [.2C7F.0020.0002.15E8] # CANADIAN SYLLABICS CARRIER PU
+15E9 ; [.2C80.0020.0002.15E9] # CANADIAN SYLLABICS CARRIER PO
+15EA ; [.2C81.0020.0002.15EA] # CANADIAN SYLLABICS CARRIER PE
+15EB ; [.2C82.0020.0002.15EB] # CANADIAN SYLLABICS CARRIER PEE
+15EC ; [.2C83.0020.0002.15EC] # CANADIAN SYLLABICS CARRIER PI
+15ED ; [.2C84.0020.0002.15ED] # CANADIAN SYLLABICS CARRIER PA
+15EE ; [.2C85.0020.0002.15EE] # CANADIAN SYLLABICS CARRIER P
+15EF ; [.2C86.0020.0002.15EF] # CANADIAN SYLLABICS CARRIER GU
+15F0 ; [.2C87.0020.0002.15F0] # CANADIAN SYLLABICS CARRIER GO
+15F1 ; [.2C88.0020.0002.15F1] # CANADIAN SYLLABICS CARRIER GE
+15F2 ; [.2C89.0020.0002.15F2] # CANADIAN SYLLABICS CARRIER GEE
+15F3 ; [.2C8A.0020.0002.15F3] # CANADIAN SYLLABICS CARRIER GI
+15F4 ; [.2C8B.0020.0002.15F4] # CANADIAN SYLLABICS CARRIER GA
+15F5 ; [.2C8C.0020.0002.15F5] # CANADIAN SYLLABICS CARRIER KHU
+15F6 ; [.2C8D.0020.0002.15F6] # CANADIAN SYLLABICS CARRIER KHO
+15F7 ; [.2C8E.0020.0002.15F7] # CANADIAN SYLLABICS CARRIER KHE
+15F8 ; [.2C8F.0020.0002.15F8] # CANADIAN SYLLABICS CARRIER KHEE
+15F9 ; [.2C90.0020.0002.15F9] # CANADIAN SYLLABICS CARRIER KHI
+15FA ; [.2C91.0020.0002.15FA] # CANADIAN SYLLABICS CARRIER KHA
+15FB ; [.2C92.0020.0002.15FB] # CANADIAN SYLLABICS CARRIER KKU
+15FC ; [.2C93.0020.0002.15FC] # CANADIAN SYLLABICS CARRIER KKO
+15FD ; [.2C94.0020.0002.15FD] # CANADIAN SYLLABICS CARRIER KKE
+15FE ; [.2C95.0020.0002.15FE] # CANADIAN SYLLABICS CARRIER KKEE
+15FF ; [.2C96.0020.0002.15FF] # CANADIAN SYLLABICS CARRIER KKI
+1600 ; [.2C97.0020.0002.1600] # CANADIAN SYLLABICS CARRIER KKA
+1601 ; [.2C98.0020.0002.1601] # CANADIAN SYLLABICS CARRIER KK
+1602 ; [.2C99.0020.0002.1602] # CANADIAN SYLLABICS CARRIER NU
+1603 ; [.2C9A.0020.0002.1603] # CANADIAN SYLLABICS CARRIER NO
+1604 ; [.2C9B.0020.0002.1604] # CANADIAN SYLLABICS CARRIER NE
+1605 ; [.2C9C.0020.0002.1605] # CANADIAN SYLLABICS CARRIER NEE
+1606 ; [.2C9D.0020.0002.1606] # CANADIAN SYLLABICS CARRIER NI
+1607 ; [.2C9E.0020.0002.1607] # CANADIAN SYLLABICS CARRIER NA
+1608 ; [.2C9F.0020.0002.1608] # CANADIAN SYLLABICS CARRIER MU
+1609 ; [.2CA0.0020.0002.1609] # CANADIAN SYLLABICS CARRIER MO
+160A ; [.2CA1.0020.0002.160A] # CANADIAN SYLLABICS CARRIER ME
+160B ; [.2CA2.0020.0002.160B] # CANADIAN SYLLABICS CARRIER MEE
+160C ; [.2CA3.0020.0002.160C] # CANADIAN SYLLABICS CARRIER MI
+160D ; [.2CA4.0020.0002.160D] # CANADIAN SYLLABICS CARRIER MA
+160E ; [.2CA5.0020.0002.160E] # CANADIAN SYLLABICS CARRIER YU
+160F ; [.2CA6.0020.0002.160F] # CANADIAN SYLLABICS CARRIER YO
+1610 ; [.2CA7.0020.0002.1610] # CANADIAN SYLLABICS CARRIER YE
+1611 ; [.2CA8.0020.0002.1611] # CANADIAN SYLLABICS CARRIER YEE
+1612 ; [.2CA9.0020.0002.1612] # CANADIAN SYLLABICS CARRIER YI
+1613 ; [.2CAA.0020.0002.1613] # CANADIAN SYLLABICS CARRIER YA
+1614 ; [.2CAB.0020.0002.1614] # CANADIAN SYLLABICS CARRIER JU
+1615 ; [.2CAC.0020.0002.1615] # CANADIAN SYLLABICS SAYISI JU
+1616 ; [.2CAD.0020.0002.1616] # CANADIAN SYLLABICS CARRIER JO
+1617 ; [.2CAE.0020.0002.1617] # CANADIAN SYLLABICS CARRIER JE
+1618 ; [.2CAF.0020.0002.1618] # CANADIAN SYLLABICS CARRIER JEE
+1619 ; [.2CB0.0020.0002.1619] # CANADIAN SYLLABICS CARRIER JI
+161A ; [.2CB1.0020.0002.161A] # CANADIAN SYLLABICS SAYISI JI
+161B ; [.2CB2.0020.0002.161B] # CANADIAN SYLLABICS CARRIER JA
+161C ; [.2CB3.0020.0002.161C] # CANADIAN SYLLABICS CARRIER JJU
+161D ; [.2CB4.0020.0002.161D] # CANADIAN SYLLABICS CARRIER JJO
+161E ; [.2CB5.0020.0002.161E] # CANADIAN SYLLABICS CARRIER JJE
+161F ; [.2CB6.0020.0002.161F] # CANADIAN SYLLABICS CARRIER JJEE
+1620 ; [.2CB7.0020.0002.1620] # CANADIAN SYLLABICS CARRIER JJI
+1621 ; [.2CB8.0020.0002.1621] # CANADIAN SYLLABICS CARRIER JJA
+1622 ; [.2CB9.0020.0002.1622] # CANADIAN SYLLABICS CARRIER LU
+1623 ; [.2CBA.0020.0002.1623] # CANADIAN SYLLABICS CARRIER LO
+1624 ; [.2CBB.0020.0002.1624] # CANADIAN SYLLABICS CARRIER LE
+1625 ; [.2CBC.0020.0002.1625] # CANADIAN SYLLABICS CARRIER LEE
+1626 ; [.2CBD.0020.0002.1626] # CANADIAN SYLLABICS CARRIER LI
+1627 ; [.2CBE.0020.0002.1627] # CANADIAN SYLLABICS CARRIER LA
+1628 ; [.2CBF.0020.0002.1628] # CANADIAN SYLLABICS CARRIER DLU
+1629 ; [.2CC0.0020.0002.1629] # CANADIAN SYLLABICS CARRIER DLO
+162A ; [.2CC1.0020.0002.162A] # CANADIAN SYLLABICS CARRIER DLE
+162B ; [.2CC2.0020.0002.162B] # CANADIAN SYLLABICS CARRIER DLEE
+162C ; [.2CC3.0020.0002.162C] # CANADIAN SYLLABICS CARRIER DLI
+162D ; [.2CC4.0020.0002.162D] # CANADIAN SYLLABICS CARRIER DLA
+162E ; [.2CC5.0020.0002.162E] # CANADIAN SYLLABICS CARRIER LHU
+162F ; [.2CC6.0020.0002.162F] # CANADIAN SYLLABICS CARRIER LHO
+1630 ; [.2CC7.0020.0002.1630] # CANADIAN SYLLABICS CARRIER LHE
+1631 ; [.2CC8.0020.0002.1631] # CANADIAN SYLLABICS CARRIER LHEE
+1632 ; [.2CC9.0020.0002.1632] # CANADIAN SYLLABICS CARRIER LHI
+1633 ; [.2CCA.0020.0002.1633] # CANADIAN SYLLABICS CARRIER LHA
+1634 ; [.2CCB.0020.0002.1634] # CANADIAN SYLLABICS CARRIER TLHU
+1635 ; [.2CCC.0020.0002.1635] # CANADIAN SYLLABICS CARRIER TLHO
+1636 ; [.2CCD.0020.0002.1636] # CANADIAN SYLLABICS CARRIER TLHE
+1637 ; [.2CCE.0020.0002.1637] # CANADIAN SYLLABICS CARRIER TLHEE
+1638 ; [.2CCF.0020.0002.1638] # CANADIAN SYLLABICS CARRIER TLHI
+1639 ; [.2CD0.0020.0002.1639] # CANADIAN SYLLABICS CARRIER TLHA
+163A ; [.2CD1.0020.0002.163A] # CANADIAN SYLLABICS CARRIER TLU
+163B ; [.2CD2.0020.0002.163B] # CANADIAN SYLLABICS CARRIER TLO
+163C ; [.2CD3.0020.0002.163C] # CANADIAN SYLLABICS CARRIER TLE
+163D ; [.2CD4.0020.0002.163D] # CANADIAN SYLLABICS CARRIER TLEE
+163E ; [.2CD5.0020.0002.163E] # CANADIAN SYLLABICS CARRIER TLI
+163F ; [.2CD6.0020.0002.163F] # CANADIAN SYLLABICS CARRIER TLA
+1640 ; [.2CD7.0020.0002.1640] # CANADIAN SYLLABICS CARRIER ZU
+1641 ; [.2CD8.0020.0002.1641] # CANADIAN SYLLABICS CARRIER ZO
+1642 ; [.2CD9.0020.0002.1642] # CANADIAN SYLLABICS CARRIER ZE
+1643 ; [.2CDA.0020.0002.1643] # CANADIAN SYLLABICS CARRIER ZEE
+1644 ; [.2CDB.0020.0002.1644] # CANADIAN SYLLABICS CARRIER ZI
+1645 ; [.2CDC.0020.0002.1645] # CANADIAN SYLLABICS CARRIER ZA
+1646 ; [.2CDD.0020.0002.1646] # CANADIAN SYLLABICS CARRIER Z
+1647 ; [.2CDE.0020.0002.1647] # CANADIAN SYLLABICS CARRIER INITIAL Z
+1648 ; [.2CDF.0020.0002.1648] # CANADIAN SYLLABICS CARRIER DZU
+1649 ; [.2CE0.0020.0002.1649] # CANADIAN SYLLABICS CARRIER DZO
+164A ; [.2CE1.0020.0002.164A] # CANADIAN SYLLABICS CARRIER DZE
+164B ; [.2CE2.0020.0002.164B] # CANADIAN SYLLABICS CARRIER DZEE
+164C ; [.2CE3.0020.0002.164C] # CANADIAN SYLLABICS CARRIER DZI
+164D ; [.2CE4.0020.0002.164D] # CANADIAN SYLLABICS CARRIER DZA
+164E ; [.2CE5.0020.0002.164E] # CANADIAN SYLLABICS CARRIER SU
+164F ; [.2CE6.0020.0002.164F] # CANADIAN SYLLABICS CARRIER SO
+1650 ; [.2CE7.0020.0002.1650] # CANADIAN SYLLABICS CARRIER SE
+1651 ; [.2CE8.0020.0002.1651] # CANADIAN SYLLABICS CARRIER SEE
+1652 ; [.2CE9.0020.0002.1652] # CANADIAN SYLLABICS CARRIER SI
+1653 ; [.2CEA.0020.0002.1653] # CANADIAN SYLLABICS CARRIER SA
+1654 ; [.2CEB.0020.0002.1654] # CANADIAN SYLLABICS CARRIER SHU
+1655 ; [.2CEC.0020.0002.1655] # CANADIAN SYLLABICS CARRIER SHO
+1656 ; [.2CED.0020.0002.1656] # CANADIAN SYLLABICS CARRIER SHE
+1657 ; [.2CEE.0020.0002.1657] # CANADIAN SYLLABICS CARRIER SHEE
+1658 ; [.2CEF.0020.0002.1658] # CANADIAN SYLLABICS CARRIER SHI
+1659 ; [.2CF0.0020.0002.1659] # CANADIAN SYLLABICS CARRIER SHA
+165A ; [.2CF1.0020.0002.165A] # CANADIAN SYLLABICS CARRIER SH
+165B ; [.2CF2.0020.0002.165B] # CANADIAN SYLLABICS CARRIER TSU
+165C ; [.2CF3.0020.0002.165C] # CANADIAN SYLLABICS CARRIER TSO
+165D ; [.2CF4.0020.0002.165D] # CANADIAN SYLLABICS CARRIER TSE
+165E ; [.2CF5.0020.0002.165E] # CANADIAN SYLLABICS CARRIER TSEE
+165F ; [.2CF6.0020.0002.165F] # CANADIAN SYLLABICS CARRIER TSI
+1660 ; [.2CF7.0020.0002.1660] # CANADIAN SYLLABICS CARRIER TSA
+1661 ; [.2CF8.0020.0002.1661] # CANADIAN SYLLABICS CARRIER CHU
+1662 ; [.2CF9.0020.0002.1662] # CANADIAN SYLLABICS CARRIER CHO
+1663 ; [.2CFA.0020.0002.1663] # CANADIAN SYLLABICS CARRIER CHE
+1664 ; [.2CFB.0020.0002.1664] # CANADIAN SYLLABICS CARRIER CHEE
+1665 ; [.2CFC.0020.0002.1665] # CANADIAN SYLLABICS CARRIER CHI
+1666 ; [.2CFD.0020.0002.1666] # CANADIAN SYLLABICS CARRIER CHA
+1667 ; [.2CFE.0020.0002.1667] # CANADIAN SYLLABICS CARRIER TTSU
+1668 ; [.2CFF.0020.0002.1668] # CANADIAN SYLLABICS CARRIER TTSO
+1669 ; [.2D00.0020.0002.1669] # CANADIAN SYLLABICS CARRIER TTSE
+166A ; [.2D01.0020.0002.166A] # CANADIAN SYLLABICS CARRIER TTSEE
+166B ; [.2D02.0020.0002.166B] # CANADIAN SYLLABICS CARRIER TTSI
+166C ; [.2D03.0020.0002.166C] # CANADIAN SYLLABICS CARRIER TTSA
+1677 ; [.2D04.0020.0002.1677] # CANADIAN SYLLABICS WOODS-CREE THWEE
+1678 ; [.2D05.0020.0002.1678] # CANADIAN SYLLABICS WOODS-CREE THWI
+1679 ; [.2D06.0020.0002.1679] # CANADIAN SYLLABICS WOODS-CREE THWII
+167A ; [.2D07.0020.0002.167A] # CANADIAN SYLLABICS WOODS-CREE THWO
+167B ; [.2D08.0020.0002.167B] # CANADIAN SYLLABICS WOODS-CREE THWOO
+167C ; [.2D09.0020.0002.167C] # CANADIAN SYLLABICS WOODS-CREE THWA
+167D ; [.2D0A.0020.0002.167D] # CANADIAN SYLLABICS WOODS-CREE THWAA
+167E ; [.2D0B.0020.0002.167E] # CANADIAN SYLLABICS WOODS-CREE FINAL TH
+167F ; [.2D0C.0020.0002.167F] # CANADIAN SYLLABICS BLACKFOOT W
+18B0 ; [.2D0D.0020.0002.18B0] # CANADIAN SYLLABICS OY
+18B1 ; [.2D0E.0020.0002.18B1] # CANADIAN SYLLABICS AY
+18B2 ; [.2D0F.0020.0002.18B2] # CANADIAN SYLLABICS AAY
+18B3 ; [.2D10.0020.0002.18B3] # CANADIAN SYLLABICS WAY
+18B4 ; [.2D11.0020.0002.18B4] # CANADIAN SYLLABICS POY
+18B5 ; [.2D12.0020.0002.18B5] # CANADIAN SYLLABICS PAY
+18B6 ; [.2D13.0020.0002.18B6] # CANADIAN SYLLABICS PWOY
+18B7 ; [.2D14.0020.0002.18B7] # CANADIAN SYLLABICS TAY
+18B8 ; [.2D15.0020.0002.18B8] # CANADIAN SYLLABICS KAY
+18B9 ; [.2D16.0020.0002.18B9] # CANADIAN SYLLABICS KWAY
+18BA ; [.2D17.0020.0002.18BA] # CANADIAN SYLLABICS MAY
+18BB ; [.2D18.0020.0002.18BB] # CANADIAN SYLLABICS NOY
+18BC ; [.2D19.0020.0002.18BC] # CANADIAN SYLLABICS NAY
+18BD ; [.2D1A.0020.0002.18BD] # CANADIAN SYLLABICS LAY
+18BE ; [.2D1B.0020.0002.18BE] # CANADIAN SYLLABICS SOY
+18BF ; [.2D1C.0020.0002.18BF] # CANADIAN SYLLABICS SAY
+18C0 ; [.2D1D.0020.0002.18C0] # CANADIAN SYLLABICS SHOY
+18C1 ; [.2D1E.0020.0002.18C1] # CANADIAN SYLLABICS SHAY
+18C2 ; [.2D1F.0020.0002.18C2] # CANADIAN SYLLABICS SHWOY
+18C3 ; [.2D20.0020.0002.18C3] # CANADIAN SYLLABICS YOY
+18C4 ; [.2D21.0020.0002.18C4] # CANADIAN SYLLABICS YAY
+18C5 ; [.2D22.0020.0002.18C5] # CANADIAN SYLLABICS RAY
+18C6 ; [.2D23.0020.0002.18C6] # CANADIAN SYLLABICS NWI
+18C7 ; [.2D24.0020.0002.18C7] # CANADIAN SYLLABICS OJIBWAY NWI
+18C8 ; [.2D25.0020.0002.18C8] # CANADIAN SYLLABICS NWII
+18C9 ; [.2D26.0020.0002.18C9] # CANADIAN SYLLABICS OJIBWAY NWII
+18CA ; [.2D27.0020.0002.18CA] # CANADIAN SYLLABICS NWO
+18CB ; [.2D28.0020.0002.18CB] # CANADIAN SYLLABICS OJIBWAY NWO
+18CC ; [.2D29.0020.0002.18CC] # CANADIAN SYLLABICS NWOO
+18CD ; [.2D2A.0020.0002.18CD] # CANADIAN SYLLABICS OJIBWAY NWOO
+18CE ; [.2D2B.0020.0002.18CE] # CANADIAN SYLLABICS RWEE
+18CF ; [.2D2C.0020.0002.18CF] # CANADIAN SYLLABICS RWI
+18D0 ; [.2D2D.0020.0002.18D0] # CANADIAN SYLLABICS RWII
+18D1 ; [.2D2E.0020.0002.18D1] # CANADIAN SYLLABICS RWO
+18D2 ; [.2D2F.0020.0002.18D2] # CANADIAN SYLLABICS RWOO
+18D3 ; [.2D30.0020.0002.18D3] # CANADIAN SYLLABICS RWA
+18D4 ; [.2D31.0020.0002.18D4] # CANADIAN SYLLABICS OJIBWAY P
+18D5 ; [.2D32.0020.0002.18D5] # CANADIAN SYLLABICS OJIBWAY T
+18D6 ; [.2D33.0020.0002.18D6] # CANADIAN SYLLABICS OJIBWAY K
+18D7 ; [.2D34.0020.0002.18D7] # CANADIAN SYLLABICS OJIBWAY C
+18D8 ; [.2D35.0020.0002.18D8] # CANADIAN SYLLABICS OJIBWAY M
+18D9 ; [.2D36.0020.0002.18D9] # CANADIAN SYLLABICS OJIBWAY N
+18DA ; [.2D37.0020.0002.18DA] # CANADIAN SYLLABICS OJIBWAY S
+18DB ; [.2D38.0020.0002.18DB] # CANADIAN SYLLABICS OJIBWAY SH
+18DC ; [.2D39.0020.0002.18DC] # CANADIAN SYLLABICS EASTERN W
+18DD ; [.2D3A.0020.0002.18DD] # CANADIAN SYLLABICS WESTERN W
+18DE ; [.2D3B.0020.0002.18DE] # CANADIAN SYLLABICS FINAL SMALL RING
+18DF ; [.2D3C.0020.0002.18DF] # CANADIAN SYLLABICS FINAL RAISED DOT
+18E0 ; [.2D3D.0020.0002.18E0] # CANADIAN SYLLABICS R-CREE RWE
+18E1 ; [.2D3E.0020.0002.18E1] # CANADIAN SYLLABICS WEST-CREE LOO
+18E2 ; [.2D3F.0020.0002.18E2] # CANADIAN SYLLABICS WEST-CREE LAA
+18E3 ; [.2D40.0020.0002.18E3] # CANADIAN SYLLABICS THWE
+18E4 ; [.2D41.0020.0002.18E4] # CANADIAN SYLLABICS THWA
+18E5 ; [.2D42.0020.0002.18E5] # CANADIAN SYLLABICS TTHWE
+18E6 ; [.2D43.0020.0002.18E6] # CANADIAN SYLLABICS TTHOO
+18E7 ; [.2D44.0020.0002.18E7] # CANADIAN SYLLABICS TTHAA
+18E8 ; [.2D45.0020.0002.18E8] # CANADIAN SYLLABICS TLHWE
+18E9 ; [.2D46.0020.0002.18E9] # CANADIAN SYLLABICS TLHOO
+18EA ; [.2D47.0020.0002.18EA] # CANADIAN SYLLABICS SAYISI SHWE
+18EB ; [.2D48.0020.0002.18EB] # CANADIAN SYLLABICS SAYISI SHOO
+18EC ; [.2D49.0020.0002.18EC] # CANADIAN SYLLABICS SAYISI HOO
+18ED ; [.2D4A.0020.0002.18ED] # CANADIAN SYLLABICS CARRIER GWU
+18EE ; [.2D4B.0020.0002.18EE] # CANADIAN SYLLABICS CARRIER DENE GEE
+18EF ; [.2D4C.0020.0002.18EF] # CANADIAN SYLLABICS CARRIER GAA
+18F0 ; [.2D4D.0020.0002.18F0] # CANADIAN SYLLABICS CARRIER GWA
+18F1 ; [.2D4E.0020.0002.18F1] # CANADIAN SYLLABICS SAYISI JUU
+18F2 ; [.2D4F.0020.0002.18F2] # CANADIAN SYLLABICS CARRIER JWA
+18F3 ; [.2D50.0020.0002.18F3] # CANADIAN SYLLABICS BEAVER DENE L
+18F4 ; [.2D51.0020.0002.18F4] # CANADIAN SYLLABICS BEAVER DENE R
+18F5 ; [.2D52.0020.0002.18F5] # CANADIAN SYLLABICS CARRIER DENTAL S
+1681 ; [.2D53.0020.0002.1681] # OGHAM LETTER BEITH
+1682 ; [.2D54.0020.0002.1682] # OGHAM LETTER LUIS
+1683 ; [.2D55.0020.0002.1683] # OGHAM LETTER FEARN
+1684 ; [.2D56.0020.0002.1684] # OGHAM LETTER SAIL
+1685 ; [.2D57.0020.0002.1685] # OGHAM LETTER NION
+1686 ; [.2D58.0020.0002.1686] # OGHAM LETTER UATH
+1687 ; [.2D59.0020.0002.1687] # OGHAM LETTER DAIR
+1688 ; [.2D5A.0020.0002.1688] # OGHAM LETTER TINNE
+1689 ; [.2D5B.0020.0002.1689] # OGHAM LETTER COLL
+168A ; [.2D5C.0020.0002.168A] # OGHAM LETTER CEIRT
+168B ; [.2D5D.0020.0002.168B] # OGHAM LETTER MUIN
+168C ; [.2D5E.0020.0002.168C] # OGHAM LETTER GORT
+168D ; [.2D5F.0020.0002.168D] # OGHAM LETTER NGEADAL
+168E ; [.2D60.0020.0002.168E] # OGHAM LETTER STRAIF
+168F ; [.2D61.0020.0002.168F] # OGHAM LETTER RUIS
+1690 ; [.2D62.0020.0002.1690] # OGHAM LETTER AILM
+1691 ; [.2D63.0020.0002.1691] # OGHAM LETTER ONN
+1692 ; [.2D64.0020.0002.1692] # OGHAM LETTER UR
+1693 ; [.2D65.0020.0002.1693] # OGHAM LETTER EADHADH
+1694 ; [.2D66.0020.0002.1694] # OGHAM LETTER IODHADH
+1695 ; [.2D67.0020.0002.1695] # OGHAM LETTER EABHADH
+1696 ; [.2D68.0020.0002.1696] # OGHAM LETTER OR
+1697 ; [.2D69.0020.0002.1697] # OGHAM LETTER UILLEANN
+1698 ; [.2D6A.0020.0002.1698] # OGHAM LETTER IFIN
+1699 ; [.2D6B.0020.0002.1699] # OGHAM LETTER EAMHANCHOLL
+169A ; [.2D6C.0020.0002.169A] # OGHAM LETTER PEITH
+16A0 ; [.2D6D.0020.0002.16A0] # RUNIC LETTER FEHU FEOH FE F
+16A1 ; [.2D6D.0020.0004.16A1][.0000.0139.0004.16A1] # RUNIC LETTER V
+16A2 ; [.2D6E.0020.0002.16A2] # RUNIC LETTER URUZ UR U
+16A4 ; [.2D6E.0020.0004.16A4][.0000.0139.0004.16A4] # RUNIC LETTER Y
+16A5 ; [.2D6E.0020.0004.16A5][.0000.013A.0004.16A5] # RUNIC LETTER W
+16A6 ; [.2D6F.0020.0002.16A6] # RUNIC LETTER THURISAZ THURS THORN
+16A7 ; [.2D6F.0020.0004.16A7][.0000.0139.0004.16A7] # RUNIC LETTER ETH
+16F0 ; [.2D6F.0020.0004.16F0][.2D6F.0020.0004.16F0] # RUNIC BELGTHOR SYMBOL
+16A8 ; [.2D70.0020.0002.16A8] # RUNIC LETTER ANSUZ A
+16A9 ; [.2D70.0020.0004.16A9][.0000.0139.0004.16A9] # RUNIC LETTER OS O
+16AC ; [.2D70.0020.0004.16AC][.0000.013A.0004.16AC] # RUNIC LETTER LONG-BRANCH-OSS O
+16AD ; [.2D70.0020.0004.16AD][.0000.013C.0004.16AD] # RUNIC LETTER SHORT-TWIG-OSS O
+16AE ; [.2D70.0020.0004.16AE][.0000.013D.0004.16AE] # RUNIC LETTER O
+16AF ; [.2D71.0020.0002.16AF] # RUNIC LETTER OE
+16B0 ; [.2D72.0020.0002.16B0] # RUNIC LETTER ON
+16B1 ; [.2D73.0020.0002.16B1] # RUNIC LETTER RAIDO RAD REID R
+16B2 ; [.2D74.0020.0002.16B2] # RUNIC LETTER KAUNA
+16B3 ; [.2D74.0020.0004.16B3][.0000.0139.0004.16B3] # RUNIC LETTER CEN
+16B4 ; [.2D74.0020.0004.16B4][.0000.013A.0004.16B4] # RUNIC LETTER KAUN K
+16B5 ; [.2D74.0020.0004.16B5][.0000.013C.0004.16B5] # RUNIC LETTER G
+16B6 ; [.2D74.0020.0004.16B6][.0000.013D.0004.16B6] # RUNIC LETTER ENG
+16B7 ; [.2D75.0020.0002.16B7] # RUNIC LETTER GEBO GYFU G
+16B9 ; [.2D76.0020.0002.16B9] # RUNIC LETTER WUNJO WYNN W
+16E9 ; [.2D76.0020.0004.16E9][.0000.0139.0004.16E9] # RUNIC LETTER Q
+16BA ; [.2D77.0020.0002.16BA] # RUNIC LETTER HAGLAZ H
+16BB ; [.2D77.0020.0004.16BB][.0000.0139.0004.16BB] # RUNIC LETTER HAEGL H
+16BC ; [.2D77.0020.0004.16BC][.0000.013A.0004.16BC] # RUNIC LETTER LONG-BRANCH-HAGALL H
+16BD ; [.2D77.0020.0004.16BD][.0000.013C.0004.16BD] # RUNIC LETTER SHORT-TWIG-HAGALL H
+16BE ; [.2D78.0020.0002.16BE] # RUNIC LETTER NAUDIZ NYD NAUD N
+16BF ; [.2D78.0020.0004.16BF][.0000.0139.0004.16BF] # RUNIC LETTER SHORT-TWIG-NAUD N
+16C0 ; [.2D78.0020.0004.16C0][.0000.013A.0004.16C0] # RUNIC LETTER DOTTED-N
+16C1 ; [.2D79.0020.0002.16C1] # RUNIC LETTER ISAZ IS ISS I
+16C2 ; [.2D79.0020.0004.16C2][.0000.0139.0004.16C2] # RUNIC LETTER E
+16C3 ; [.2D7A.0020.0002.16C3] # RUNIC LETTER JERAN J
+16C4 ; [.2D7A.0020.0004.16C4][.0000.0139.0004.16C4] # RUNIC LETTER GER
+16C5 ; [.2D7B.0020.0002.16C5] # RUNIC LETTER LONG-BRANCH-AR AE
+16C6 ; [.2D7B.0020.0004.16C6][.0000.0139.0004.16C6] # RUNIC LETTER SHORT-TWIG-AR A
+16EE ; [.2D7B.0020.0004.16EE][.2D84.0020.0004.16EE] # RUNIC ARLAUG SYMBOL
+16C7 ; [.2D7C.0020.0002.16C7] # RUNIC LETTER IWAZ EOH
+16C8 ; [.2D7D.0020.0002.16C8] # RUNIC LETTER PERTHO PEORTH P
+16D5 ; [.2D7D.0020.0004.16D5][.0000.0139.0004.16D5] # RUNIC LETTER OPEN-P
+16C9 ; [.2D7E.0020.0002.16C9] # RUNIC LETTER ALGIZ EOLHX
+16CA ; [.2D7F.0020.0002.16CA] # RUNIC LETTER SOWILO S
+16CB ; [.2D7F.0020.0004.16CB][.0000.0139.0004.16CB] # RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+16EA ; [.2D7F.0020.0004.16EA][.0000.013A.0004.16EA] # RUNIC LETTER X
+16CC ; [.2D7F.0020.0004.16CC][.0000.013C.0004.16CC] # RUNIC LETTER SHORT-TWIG-SOL S
+16CD ; [.2D7F.0020.0004.16CD][.0000.013D.0004.16CD] # RUNIC LETTER C
+16CE ; [.2D7F.0020.0004.16CE][.0000.013E.0004.16CE] # RUNIC LETTER Z
+16CF ; [.2D80.0020.0002.16CF] # RUNIC LETTER TIWAZ TIR TYR T
+16D0 ; [.2D80.0020.0004.16D0][.0000.0139.0004.16D0] # RUNIC LETTER SHORT-TWIG-TYR T
+16D1 ; [.2D80.0020.0004.16D1][.0000.013A.0004.16D1] # RUNIC LETTER D
+16D2 ; [.2D81.0020.0002.16D2] # RUNIC LETTER BERKANAN BEORC BJARKAN B
+16D3 ; [.2D81.0020.0004.16D3][.0000.0139.0004.16D3] # RUNIC LETTER SHORT-TWIG-BJARKAN B
+16D4 ; [.2D81.0020.0004.16D4][.0000.013A.0004.16D4] # RUNIC LETTER DOTTED-P
+16D6 ; [.2D82.0020.0002.16D6] # RUNIC LETTER EHWAZ EH E
+16D7 ; [.2D83.0020.0002.16D7] # RUNIC LETTER MANNAZ MAN M
+16D8 ; [.2D83.0020.0004.16D8][.0000.0139.0004.16D8] # RUNIC LETTER LONG-BRANCH-MADR M
+16D9 ; [.2D83.0020.0004.16D9][.0000.013A.0004.16D9] # RUNIC LETTER SHORT-TWIG-MADR M
+16EF ; [.2D83.0020.0004.16EF][.0000.0139.0004.16EF][.2D83.0020.0004.16EF][.0000.0139.0004.16EF] # RUNIC TVIMADUR SYMBOL
+16DA ; [.2D84.0020.0002.16DA] # RUNIC LETTER LAUKAZ LAGU LOGR L
+16DB ; [.2D84.0020.0004.16DB][.0000.0139.0004.16DB] # RUNIC LETTER DOTTED-L
+16DC ; [.2D85.0020.0002.16DC] # RUNIC LETTER INGWAZ
+16DD ; [.2D85.0020.0004.16DD][.0000.0139.0004.16DD] # RUNIC LETTER ING
+16DE ; [.2D86.0020.0002.16DE] # RUNIC LETTER DAGAZ DAEG D
+16DF ; [.2D87.0020.0002.16DF] # RUNIC LETTER OTHALAN ETHEL O
+16AA ; [.2D88.0020.0002.16AA] # RUNIC LETTER AC A
+16AB ; [.2D89.0020.0002.16AB] # RUNIC LETTER AESC
+16A3 ; [.2D8A.0020.0002.16A3] # RUNIC LETTER YR
+16E0 ; [.2D8B.0020.0002.16E0] # RUNIC LETTER EAR
+16E3 ; [.2D8C.0020.0002.16E3] # RUNIC LETTER CALC
+16B8 ; [.2D8D.0020.0002.16B8] # RUNIC LETTER GAR
+16E4 ; [.2D8E.0020.0002.16E4] # RUNIC LETTER CEALC
+16E1 ; [.2D8F.0020.0002.16E1] # RUNIC LETTER IOR
+16E2 ; [.2D90.0020.0002.16E2] # RUNIC LETTER CWEORTH
+16E5 ; [.2D91.0020.0002.16E5] # RUNIC LETTER STAN
+16E6 ; [.2D92.0020.0002.16E6] # RUNIC LETTER LONG-BRANCH-YR
+16E7 ; [.2D92.0020.0004.16E7][.0000.0139.0004.16E7] # RUNIC LETTER SHORT-TWIG-YR
+16E8 ; [.2D92.0020.0004.16E8][.0000.013A.0004.16E8] # RUNIC LETTER ICELANDIC-YR
+10C00 ; [.2D93.0020.0002.10C00] # OLD TURKIC LETTER ORKHON A
+10C01 ; [.2D93.0020.0004.10C01][.0000.0139.0004.10C01] # OLD TURKIC LETTER YENISEI A
+10C02 ; [.2D94.0020.0002.10C02] # OLD TURKIC LETTER YENISEI AE
+10C03 ; [.2D95.0020.0002.10C03] # OLD TURKIC LETTER ORKHON I
+10C04 ; [.2D95.0020.0004.10C04][.0000.0139.0004.10C04] # OLD TURKIC LETTER YENISEI I
+10C05 ; [.2D96.0020.0002.10C05] # OLD TURKIC LETTER YENISEI E
+10C06 ; [.2D97.0020.0002.10C06] # OLD TURKIC LETTER ORKHON O
+10C07 ; [.2D98.0020.0002.10C07] # OLD TURKIC LETTER ORKHON OE
+10C08 ; [.2D98.0020.0004.10C08][.0000.0139.0004.10C08] # OLD TURKIC LETTER YENISEI OE
+10C09 ; [.2D99.0020.0002.10C09] # OLD TURKIC LETTER ORKHON AB
+10C0A ; [.2D99.0020.0004.10C0A][.0000.0139.0004.10C0A] # OLD TURKIC LETTER YENISEI AB
+10C0B ; [.2D9A.0020.0002.10C0B] # OLD TURKIC LETTER ORKHON AEB
+10C0C ; [.2D9A.0020.0004.10C0C][.0000.0139.0004.10C0C] # OLD TURKIC LETTER YENISEI AEB
+10C0D ; [.2D9B.0020.0002.10C0D] # OLD TURKIC LETTER ORKHON AG
+10C0E ; [.2D9B.0020.0004.10C0E][.0000.0139.0004.10C0E] # OLD TURKIC LETTER YENISEI AG
+10C0F ; [.2D9C.0020.0002.10C0F] # OLD TURKIC LETTER ORKHON AEG
+10C10 ; [.2D9C.0020.0004.10C10][.0000.0139.0004.10C10] # OLD TURKIC LETTER YENISEI AEG
+10C11 ; [.2D9D.0020.0002.10C11] # OLD TURKIC LETTER ORKHON AD
+10C12 ; [.2D9D.0020.0004.10C12][.0000.0139.0004.10C12] # OLD TURKIC LETTER YENISEI AD
+10C13 ; [.2D9E.0020.0002.10C13] # OLD TURKIC LETTER ORKHON AED
+10C14 ; [.2D9F.0020.0002.10C14] # OLD TURKIC LETTER ORKHON EZ
+10C15 ; [.2D9F.0020.0004.10C15][.0000.0139.0004.10C15] # OLD TURKIC LETTER YENISEI EZ
+10C16 ; [.2DA0.0020.0002.10C16] # OLD TURKIC LETTER ORKHON AY
+10C17 ; [.2DA0.0020.0004.10C17][.0000.0139.0004.10C17] # OLD TURKIC LETTER YENISEI AY
+10C18 ; [.2DA1.0020.0002.10C18] # OLD TURKIC LETTER ORKHON AEY
+10C19 ; [.2DA1.0020.0004.10C19][.0000.0139.0004.10C19] # OLD TURKIC LETTER YENISEI AEY
+10C1A ; [.2DA2.0020.0002.10C1A] # OLD TURKIC LETTER ORKHON AEK
+10C1B ; [.2DA2.0020.0004.10C1B][.0000.0139.0004.10C1B] # OLD TURKIC LETTER YENISEI AEK
+10C1C ; [.2DA3.0020.0002.10C1C] # OLD TURKIC LETTER ORKHON OEK
+10C1D ; [.2DA3.0020.0004.10C1D][.0000.0139.0004.10C1D] # OLD TURKIC LETTER YENISEI OEK
+10C1E ; [.2DA4.0020.0002.10C1E] # OLD TURKIC LETTER ORKHON AL
+10C1F ; [.2DA4.0020.0004.10C1F][.0000.0139.0004.10C1F] # OLD TURKIC LETTER YENISEI AL
+10C20 ; [.2DA5.0020.0002.10C20] # OLD TURKIC LETTER ORKHON AEL
+10C21 ; [.2DA6.0020.0002.10C21] # OLD TURKIC LETTER ORKHON ELT
+10C22 ; [.2DA7.0020.0002.10C22] # OLD TURKIC LETTER ORKHON EM
+10C23 ; [.2DA8.0020.0002.10C23] # OLD TURKIC LETTER ORKHON AN
+10C24 ; [.2DA9.0020.0002.10C24] # OLD TURKIC LETTER ORKHON AEN
+10C25 ; [.2DA9.0020.0004.10C25][.0000.0139.0004.10C25] # OLD TURKIC LETTER YENISEI AEN
+10C26 ; [.2DAA.0020.0002.10C26] # OLD TURKIC LETTER ORKHON ENT
+10C27 ; [.2DAA.0020.0004.10C27][.0000.0139.0004.10C27] # OLD TURKIC LETTER YENISEI ENT
+10C28 ; [.2DAB.0020.0002.10C28] # OLD TURKIC LETTER ORKHON ENC
+10C29 ; [.2DAB.0020.0004.10C29][.0000.0139.0004.10C29] # OLD TURKIC LETTER YENISEI ENC
+10C2A ; [.2DAC.0020.0002.10C2A] # OLD TURKIC LETTER ORKHON ENY
+10C2B ; [.2DAC.0020.0004.10C2B][.0000.0139.0004.10C2B] # OLD TURKIC LETTER YENISEI ENY
+10C2C ; [.2DAD.0020.0002.10C2C] # OLD TURKIC LETTER YENISEI ANG
+10C2D ; [.2DAE.0020.0002.10C2D] # OLD TURKIC LETTER ORKHON ENG
+10C2E ; [.2DAE.0020.0004.10C2E][.0000.0139.0004.10C2E] # OLD TURKIC LETTER YENISEI AENG
+10C2F ; [.2DAF.0020.0002.10C2F] # OLD TURKIC LETTER ORKHON EP
+10C30 ; [.2DB0.0020.0002.10C30] # OLD TURKIC LETTER ORKHON OP
+10C31 ; [.2DB1.0020.0002.10C31] # OLD TURKIC LETTER ORKHON IC
+10C32 ; [.2DB2.0020.0002.10C32] # OLD TURKIC LETTER ORKHON EC
+10C33 ; [.2DB2.0020.0004.10C33][.0000.0139.0004.10C33] # OLD TURKIC LETTER YENISEI EC
+10C34 ; [.2DB3.0020.0002.10C34] # OLD TURKIC LETTER ORKHON AQ
+10C35 ; [.2DB3.0020.0004.10C35][.0000.0139.0004.10C35] # OLD TURKIC LETTER YENISEI AQ
+10C36 ; [.2DB4.0020.0002.10C36] # OLD TURKIC LETTER ORKHON IQ
+10C37 ; [.2DB4.0020.0004.10C37][.0000.0139.0004.10C37] # OLD TURKIC LETTER YENISEI IQ
+10C38 ; [.2DB5.0020.0002.10C38] # OLD TURKIC LETTER ORKHON OQ
+10C39 ; [.2DB5.0020.0004.10C39][.0000.0139.0004.10C39] # OLD TURKIC LETTER YENISEI OQ
+10C3A ; [.2DB6.0020.0002.10C3A] # OLD TURKIC LETTER ORKHON AR
+10C3B ; [.2DB6.0020.0004.10C3B][.0000.0139.0004.10C3B] # OLD TURKIC LETTER YENISEI AR
+10C3C ; [.2DB7.0020.0002.10C3C] # OLD TURKIC LETTER ORKHON AER
+10C3D ; [.2DB8.0020.0002.10C3D] # OLD TURKIC LETTER ORKHON AS
+10C3E ; [.2DB9.0020.0002.10C3E] # OLD TURKIC LETTER ORKHON AES
+10C3F ; [.2DBA.0020.0002.10C3F] # OLD TURKIC LETTER ORKHON ASH
+10C40 ; [.2DBA.0020.0004.10C40][.0000.0139.0004.10C40] # OLD TURKIC LETTER YENISEI ASH
+10C41 ; [.2DBB.0020.0002.10C41] # OLD TURKIC LETTER ORKHON ESH
+10C42 ; [.2DBB.0020.0004.10C42][.0000.0139.0004.10C42] # OLD TURKIC LETTER YENISEI ESH
+10C43 ; [.2DBC.0020.0002.10C43] # OLD TURKIC LETTER ORKHON AT
+10C44 ; [.2DBC.0020.0004.10C44][.0000.0139.0004.10C44] # OLD TURKIC LETTER YENISEI AT
+10C45 ; [.2DBD.0020.0002.10C45] # OLD TURKIC LETTER ORKHON AET
+10C46 ; [.2DBD.0020.0004.10C46][.0000.0139.0004.10C46] # OLD TURKIC LETTER YENISEI AET
+10C47 ; [.2DBE.0020.0002.10C47] # OLD TURKIC LETTER ORKHON OT
+10C48 ; [.2DBF.0020.0002.10C48] # OLD TURKIC LETTER ORKHON BASH
+A500 ; [.2DC0.0020.0002.A500] # VAI SYLLABLE EE
+A501 ; [.2DC1.0020.0002.A501] # VAI SYLLABLE EEN
+A502 ; [.2DC2.0020.0002.A502] # VAI SYLLABLE HEE
+A503 ; [.2DC3.0020.0002.A503] # VAI SYLLABLE WEE
+A504 ; [.2DC4.0020.0002.A504] # VAI SYLLABLE WEEN
+A505 ; [.2DC5.0020.0002.A505] # VAI SYLLABLE PEE
+A506 ; [.2DC6.0020.0002.A506] # VAI SYLLABLE BHEE
+A507 ; [.2DC7.0020.0002.A507] # VAI SYLLABLE BEE
+A508 ; [.2DC8.0020.0002.A508] # VAI SYLLABLE MBEE
+A509 ; [.2DC9.0020.0002.A509] # VAI SYLLABLE KPEE
+A50A ; [.2DCA.0020.0002.A50A] # VAI SYLLABLE MGBEE
+A50B ; [.2DCB.0020.0002.A50B] # VAI SYLLABLE GBEE
+A50C ; [.2DCC.0020.0002.A50C] # VAI SYLLABLE FEE
+A613 ; [.2DCC.0020.0004.A613][.2ECB.0020.0004.A613] # VAI SYMBOL FEENG
+A50D ; [.2DCD.0020.0002.A50D] # VAI SYLLABLE VEE
+A50E ; [.2DCE.0020.0002.A50E] # VAI SYLLABLE TEE
+A50F ; [.2DCF.0020.0002.A50F] # VAI SYLLABLE THEE
+A510 ; [.2DD0.0020.0002.A510] # VAI SYLLABLE DHEE
+A511 ; [.2DD1.0020.0002.A511] # VAI SYLLABLE DHHEE
+A512 ; [.2DD2.0020.0002.A512] # VAI SYLLABLE LEE
+A513 ; [.2DD3.0020.0002.A513] # VAI SYLLABLE REE
+A514 ; [.2DD4.0020.0002.A514] # VAI SYLLABLE DEE
+A515 ; [.2DD5.0020.0002.A515] # VAI SYLLABLE NDEE
+A516 ; [.2DD6.0020.0002.A516] # VAI SYLLABLE SEE
+A517 ; [.2DD7.0020.0002.A517] # VAI SYLLABLE SHEE
+A518 ; [.2DD8.0020.0002.A518] # VAI SYLLABLE ZEE
+A519 ; [.2DD9.0020.0002.A519] # VAI SYLLABLE ZHEE
+A51A ; [.2DDA.0020.0002.A51A] # VAI SYLLABLE CEE
+A51B ; [.2DDB.0020.0002.A51B] # VAI SYLLABLE JEE
+A51C ; [.2DDC.0020.0002.A51C] # VAI SYLLABLE NJEE
+A51D ; [.2DDD.0020.0002.A51D] # VAI SYLLABLE YEE
+A51E ; [.2DDE.0020.0002.A51E] # VAI SYLLABLE KEE
+A614 ; [.2DDE.0020.0004.A614][.2ECB.0020.0004.A614] # VAI SYMBOL KEENG
+A51F ; [.2DDF.0020.0002.A51F] # VAI SYLLABLE NGGEE
+A520 ; [.2DE0.0020.0002.A520] # VAI SYLLABLE GEE
+A521 ; [.2DE1.0020.0002.A521] # VAI SYLLABLE MEE
+A522 ; [.2DE2.0020.0002.A522] # VAI SYLLABLE NEE
+A523 ; [.2DE3.0020.0002.A523] # VAI SYLLABLE NYEE
+A524 ; [.2DE4.0020.0002.A524] # VAI SYLLABLE I
+A525 ; [.2DE5.0020.0002.A525] # VAI SYLLABLE IN
+A526 ; [.2DE6.0020.0002.A526] # VAI SYLLABLE HI
+A527 ; [.2DE7.0020.0002.A527] # VAI SYLLABLE HIN
+A528 ; [.2DE8.0020.0002.A528] # VAI SYLLABLE WI
+A529 ; [.2DE9.0020.0002.A529] # VAI SYLLABLE WIN
+A52A ; [.2DEA.0020.0002.A52A] # VAI SYLLABLE PI
+A52B ; [.2DEB.0020.0002.A52B] # VAI SYLLABLE BHI
+A52C ; [.2DEC.0020.0002.A52C] # VAI SYLLABLE BI
+A52D ; [.2DED.0020.0002.A52D] # VAI SYLLABLE MBI
+A52E ; [.2DEE.0020.0002.A52E] # VAI SYLLABLE KPI
+A52F ; [.2DEF.0020.0002.A52F] # VAI SYLLABLE MGBI
+A530 ; [.2DF0.0020.0002.A530] # VAI SYLLABLE GBI
+A531 ; [.2DF1.0020.0002.A531] # VAI SYLLABLE FI
+A532 ; [.2DF2.0020.0002.A532] # VAI SYLLABLE VI
+A533 ; [.2DF3.0020.0002.A533] # VAI SYLLABLE TI
+A615 ; [.2DF3.0020.0004.A615][.2ECB.0020.0004.A615] # VAI SYMBOL TING
+A534 ; [.2DF4.0020.0002.A534] # VAI SYLLABLE THI
+A535 ; [.2DF5.0020.0002.A535] # VAI SYLLABLE DHI
+A536 ; [.2DF6.0020.0002.A536] # VAI SYLLABLE DHHI
+A537 ; [.2DF7.0020.0002.A537] # VAI SYLLABLE LI
+A538 ; [.2DF8.0020.0002.A538] # VAI SYLLABLE RI
+A539 ; [.2DF9.0020.0002.A539] # VAI SYLLABLE DI
+A53A ; [.2DFA.0020.0002.A53A] # VAI SYLLABLE NDI
+A53B ; [.2DFB.0020.0002.A53B] # VAI SYLLABLE SI
+A53C ; [.2DFC.0020.0002.A53C] # VAI SYLLABLE SHI
+A53D ; [.2DFD.0020.0002.A53D] # VAI SYLLABLE ZI
+A53E ; [.2DFE.0020.0002.A53E] # VAI SYLLABLE ZHI
+A53F ; [.2DFF.0020.0002.A53F] # VAI SYLLABLE CI
+A540 ; [.2E00.0020.0002.A540] # VAI SYLLABLE JI
+A541 ; [.2E01.0020.0002.A541] # VAI SYLLABLE NJI
+A542 ; [.2E02.0020.0002.A542] # VAI SYLLABLE YI
+A543 ; [.2E03.0020.0002.A543] # VAI SYLLABLE KI
+A544 ; [.2E04.0020.0002.A544] # VAI SYLLABLE NGGI
+A545 ; [.2E05.0020.0002.A545] # VAI SYLLABLE GI
+A546 ; [.2E06.0020.0002.A546] # VAI SYLLABLE MI
+A547 ; [.2E07.0020.0002.A547] # VAI SYLLABLE NI
+A616 ; [.2E07.0020.0004.A616][.2ECC.0020.0004.A616] # VAI SYMBOL NII
+A548 ; [.2E08.0020.0002.A548] # VAI SYLLABLE NYI
+A549 ; [.2E09.0020.0002.A549] # VAI SYLLABLE A
+A54A ; [.2E0A.0020.0002.A54A] # VAI SYLLABLE AN
+A54B ; [.2E0B.0020.0002.A54B] # VAI SYLLABLE NGAN
+A54C ; [.2E0C.0020.0002.A54C] # VAI SYLLABLE HA
+A54D ; [.2E0D.0020.0002.A54D] # VAI SYLLABLE HAN
+A54E ; [.2E0E.0020.0002.A54E] # VAI SYLLABLE WA
+A54F ; [.2E0F.0020.0002.A54F] # VAI SYLLABLE WAN
+A550 ; [.2E10.0020.0002.A550] # VAI SYLLABLE PA
+A551 ; [.2E11.0020.0002.A551] # VAI SYLLABLE BHA
+A552 ; [.2E12.0020.0002.A552] # VAI SYLLABLE BA
+A617 ; [.2E12.0020.0004.A617][.2ECB.0020.0004.A617] # VAI SYMBOL BANG
+A553 ; [.2E13.0020.0002.A553] # VAI SYLLABLE MBA
+A554 ; [.2E14.0020.0002.A554] # VAI SYLLABLE KPA
+A555 ; [.2E15.0020.0002.A555] # VAI SYLLABLE KPAN
+A556 ; [.2E16.0020.0002.A556] # VAI SYLLABLE MGBA
+A557 ; [.2E17.0020.0002.A557] # VAI SYLLABLE GBA
+A558 ; [.2E18.0020.0002.A558] # VAI SYLLABLE FA
+A610 ; [.2E18.0020.0004.A610] # VAI SYLLABLE NDOLE FA
+A618 ; [.2E18.0020.0004.A618][.2ECC.0020.0004.A618] # VAI SYMBOL FAA
+A559 ; [.2E19.0020.0002.A559] # VAI SYLLABLE VA
+A55A ; [.2E1A.0020.0002.A55A] # VAI SYLLABLE TA
+A619 ; [.2E1A.0020.0004.A619][.2ECC.0020.0004.A619] # VAI SYMBOL TAA
+A55B ; [.2E1B.0020.0002.A55B] # VAI SYLLABLE THA
+A55C ; [.2E1C.0020.0002.A55C] # VAI SYLLABLE DHA
+A55D ; [.2E1D.0020.0002.A55D] # VAI SYLLABLE DHHA
+A55E ; [.2E1E.0020.0002.A55E] # VAI SYLLABLE LA
+A55F ; [.2E1F.0020.0002.A55F] # VAI SYLLABLE RA
+A560 ; [.2E20.0020.0002.A560] # VAI SYLLABLE DA
+A61A ; [.2E20.0020.0004.A61A][.2ECB.0020.0004.A61A] # VAI SYMBOL DANG
+A561 ; [.2E21.0020.0002.A561] # VAI SYLLABLE NDA
+A562 ; [.2E22.0020.0002.A562] # VAI SYLLABLE SA
+A563 ; [.2E23.0020.0002.A563] # VAI SYLLABLE SHA
+A564 ; [.2E24.0020.0002.A564] # VAI SYLLABLE ZA
+A565 ; [.2E25.0020.0002.A565] # VAI SYLLABLE ZHA
+A566 ; [.2E26.0020.0002.A566] # VAI SYLLABLE CA
+A567 ; [.2E27.0020.0002.A567] # VAI SYLLABLE JA
+A568 ; [.2E28.0020.0002.A568] # VAI SYLLABLE NJA
+A569 ; [.2E29.0020.0002.A569] # VAI SYLLABLE YA
+A56A ; [.2E2A.0020.0002.A56A] # VAI SYLLABLE KA
+A611 ; [.2E2A.0020.0004.A611] # VAI SYLLABLE NDOLE KA
+A56B ; [.2E2B.0020.0002.A56B] # VAI SYLLABLE KAN
+A56C ; [.2E2C.0020.0002.A56C] # VAI SYLLABLE NGGA
+A56D ; [.2E2D.0020.0002.A56D] # VAI SYLLABLE GA
+A56E ; [.2E2E.0020.0002.A56E] # VAI SYLLABLE MA
+A62A ; [.2E2E.0020.0004.A62A] # VAI SYLLABLE NDOLE MA
+A56F ; [.2E2F.0020.0002.A56F] # VAI SYLLABLE NA
+A570 ; [.2E30.0020.0002.A570] # VAI SYLLABLE NYA
+A571 ; [.2E31.0020.0002.A571] # VAI SYLLABLE OO
+A572 ; [.2E32.0020.0002.A572] # VAI SYLLABLE OON
+A573 ; [.2E33.0020.0002.A573] # VAI SYLLABLE HOO
+A574 ; [.2E34.0020.0002.A574] # VAI SYLLABLE WOO
+A575 ; [.2E35.0020.0002.A575] # VAI SYLLABLE WOON
+A576 ; [.2E36.0020.0002.A576] # VAI SYLLABLE POO
+A577 ; [.2E37.0020.0002.A577] # VAI SYLLABLE BHOO
+A578 ; [.2E38.0020.0002.A578] # VAI SYLLABLE BOO
+A579 ; [.2E39.0020.0002.A579] # VAI SYLLABLE MBOO
+A57A ; [.2E3A.0020.0002.A57A] # VAI SYLLABLE KPOO
+A57B ; [.2E3B.0020.0002.A57B] # VAI SYLLABLE MGBOO
+A57C ; [.2E3C.0020.0002.A57C] # VAI SYLLABLE GBOO
+A57D ; [.2E3D.0020.0002.A57D] # VAI SYLLABLE FOO
+A57E ; [.2E3E.0020.0002.A57E] # VAI SYLLABLE VOO
+A57F ; [.2E3F.0020.0002.A57F] # VAI SYLLABLE TOO
+A580 ; [.2E40.0020.0002.A580] # VAI SYLLABLE THOO
+A581 ; [.2E41.0020.0002.A581] # VAI SYLLABLE DHOO
+A582 ; [.2E42.0020.0002.A582] # VAI SYLLABLE DHHOO
+A583 ; [.2E43.0020.0002.A583] # VAI SYLLABLE LOO
+A584 ; [.2E44.0020.0002.A584] # VAI SYLLABLE ROO
+A585 ; [.2E45.0020.0002.A585] # VAI SYLLABLE DOO
+A61B ; [.2E45.0020.0004.A61B][.2ECB.0020.0004.A61B] # VAI SYMBOL DOONG
+A586 ; [.2E46.0020.0002.A586] # VAI SYLLABLE NDOO
+A587 ; [.2E47.0020.0002.A587] # VAI SYLLABLE SOO
+A612 ; [.2E47.0020.0004.A612] # VAI SYLLABLE NDOLE SOO
+A588 ; [.2E48.0020.0002.A588] # VAI SYLLABLE SHOO
+A589 ; [.2E49.0020.0002.A589] # VAI SYLLABLE ZOO
+A58A ; [.2E4A.0020.0002.A58A] # VAI SYLLABLE ZHOO
+A58B ; [.2E4B.0020.0002.A58B] # VAI SYLLABLE COO
+A58C ; [.2E4C.0020.0002.A58C] # VAI SYLLABLE JOO
+A58D ; [.2E4D.0020.0002.A58D] # VAI SYLLABLE NJOO
+A58E ; [.2E4E.0020.0002.A58E] # VAI SYLLABLE YOO
+A58F ; [.2E4F.0020.0002.A58F] # VAI SYLLABLE KOO
+A590 ; [.2E50.0020.0002.A590] # VAI SYLLABLE NGGOO
+A591 ; [.2E51.0020.0002.A591] # VAI SYLLABLE GOO
+A592 ; [.2E52.0020.0002.A592] # VAI SYLLABLE MOO
+A593 ; [.2E53.0020.0002.A593] # VAI SYLLABLE NOO
+A594 ; [.2E54.0020.0002.A594] # VAI SYLLABLE NYOO
+A595 ; [.2E55.0020.0002.A595] # VAI SYLLABLE U
+A596 ; [.2E56.0020.0002.A596] # VAI SYLLABLE UN
+A597 ; [.2E57.0020.0002.A597] # VAI SYLLABLE HU
+A598 ; [.2E58.0020.0002.A598] # VAI SYLLABLE HUN
+A599 ; [.2E59.0020.0002.A599] # VAI SYLLABLE WU
+A59A ; [.2E5A.0020.0002.A59A] # VAI SYLLABLE WUN
+A59B ; [.2E5B.0020.0002.A59B] # VAI SYLLABLE PU
+A59C ; [.2E5C.0020.0002.A59C] # VAI SYLLABLE BHU
+A59D ; [.2E5D.0020.0002.A59D] # VAI SYLLABLE BU
+A59E ; [.2E5E.0020.0002.A59E] # VAI SYLLABLE MBU
+A59F ; [.2E5F.0020.0002.A59F] # VAI SYLLABLE KPU
+A5A0 ; [.2E60.0020.0002.A5A0] # VAI SYLLABLE MGBU
+A5A1 ; [.2E61.0020.0002.A5A1] # VAI SYLLABLE GBU
+A5A2 ; [.2E62.0020.0002.A5A2] # VAI SYLLABLE FU
+A5A3 ; [.2E63.0020.0002.A5A3] # VAI SYLLABLE VU
+A5A4 ; [.2E64.0020.0002.A5A4] # VAI SYLLABLE TU
+A5A5 ; [.2E65.0020.0002.A5A5] # VAI SYLLABLE THU
+A5A6 ; [.2E66.0020.0002.A5A6] # VAI SYLLABLE DHU
+A5A7 ; [.2E67.0020.0002.A5A7] # VAI SYLLABLE DHHU
+A5A8 ; [.2E68.0020.0002.A5A8] # VAI SYLLABLE LU
+A5A9 ; [.2E69.0020.0002.A5A9] # VAI SYLLABLE RU
+A5AA ; [.2E6A.0020.0002.A5AA] # VAI SYLLABLE DU
+A5AB ; [.2E6B.0020.0002.A5AB] # VAI SYLLABLE NDU
+A5AC ; [.2E6C.0020.0002.A5AC] # VAI SYLLABLE SU
+A5AD ; [.2E6D.0020.0002.A5AD] # VAI SYLLABLE SHU
+A5AE ; [.2E6E.0020.0002.A5AE] # VAI SYLLABLE ZU
+A5AF ; [.2E6F.0020.0002.A5AF] # VAI SYLLABLE ZHU
+A5B0 ; [.2E70.0020.0002.A5B0] # VAI SYLLABLE CU
+A5B1 ; [.2E71.0020.0002.A5B1] # VAI SYLLABLE JU
+A5B2 ; [.2E72.0020.0002.A5B2] # VAI SYLLABLE NJU
+A5B3 ; [.2E73.0020.0002.A5B3] # VAI SYLLABLE YU
+A5B4 ; [.2E74.0020.0002.A5B4] # VAI SYLLABLE KU
+A61C ; [.2E74.0020.0004.A61C][.2ECB.0020.0004.A61C] # VAI SYMBOL KUNG
+A5B5 ; [.2E75.0020.0002.A5B5] # VAI SYLLABLE NGGU
+A5B6 ; [.2E76.0020.0002.A5B6] # VAI SYLLABLE GU
+A5B7 ; [.2E77.0020.0002.A5B7] # VAI SYLLABLE MU
+A5B8 ; [.2E78.0020.0002.A5B8] # VAI SYLLABLE NU
+A5B9 ; [.2E79.0020.0002.A5B9] # VAI SYLLABLE NYU
+A5BA ; [.2E7A.0020.0002.A5BA] # VAI SYLLABLE O
+A5BB ; [.2E7B.0020.0002.A5BB] # VAI SYLLABLE ON
+A5BC ; [.2E7C.0020.0002.A5BC] # VAI SYLLABLE NGON
+A5BD ; [.2E7D.0020.0002.A5BD] # VAI SYLLABLE HO
+A5BE ; [.2E7E.0020.0002.A5BE] # VAI SYLLABLE HON
+A5BF ; [.2E7F.0020.0002.A5BF] # VAI SYLLABLE WO
+A5C0 ; [.2E80.0020.0002.A5C0] # VAI SYLLABLE WON
+A5C1 ; [.2E81.0020.0002.A5C1] # VAI SYLLABLE PO
+A5C2 ; [.2E82.0020.0002.A5C2] # VAI SYLLABLE BHO
+A5C3 ; [.2E83.0020.0002.A5C3] # VAI SYLLABLE BO
+A5C4 ; [.2E84.0020.0002.A5C4] # VAI SYLLABLE MBO
+A5C5 ; [.2E85.0020.0002.A5C5] # VAI SYLLABLE KPO
+A5C6 ; [.2E86.0020.0002.A5C6] # VAI SYLLABLE MGBO
+A5C7 ; [.2E87.0020.0002.A5C7] # VAI SYLLABLE GBO
+A5C8 ; [.2E88.0020.0002.A5C8] # VAI SYLLABLE GBON
+A5C9 ; [.2E89.0020.0002.A5C9] # VAI SYLLABLE FO
+A5CA ; [.2E8A.0020.0002.A5CA] # VAI SYLLABLE VO
+A5CB ; [.2E8B.0020.0002.A5CB] # VAI SYLLABLE TO
+A61D ; [.2E8B.0020.0004.A61D][.2ECB.0020.0004.A61D] # VAI SYMBOL TONG
+A5CC ; [.2E8C.0020.0002.A5CC] # VAI SYLLABLE THO
+A5CD ; [.2E8D.0020.0002.A5CD] # VAI SYLLABLE DHO
+A5CE ; [.2E8E.0020.0002.A5CE] # VAI SYLLABLE DHHO
+A5CF ; [.2E8F.0020.0002.A5CF] # VAI SYLLABLE LO
+A5D0 ; [.2E90.0020.0002.A5D0] # VAI SYLLABLE RO
+A5D1 ; [.2E91.0020.0002.A5D1] # VAI SYLLABLE DO
+A62B ; [.2E91.0020.0004.A62B] # VAI SYLLABLE NDOLE DO
+A61E ; [.2E91.0020.0004.A61E][.2ECC.0020.0004.A61E] # VAI SYMBOL DO-O
+A5D2 ; [.2E92.0020.0002.A5D2] # VAI SYLLABLE NDO
+A5D3 ; [.2E93.0020.0002.A5D3] # VAI SYLLABLE SO
+A5D4 ; [.2E94.0020.0002.A5D4] # VAI SYLLABLE SHO
+A5D5 ; [.2E95.0020.0002.A5D5] # VAI SYLLABLE ZO
+A5D6 ; [.2E96.0020.0002.A5D6] # VAI SYLLABLE ZHO
+A5D7 ; [.2E97.0020.0002.A5D7] # VAI SYLLABLE CO
+A5D8 ; [.2E98.0020.0002.A5D8] # VAI SYLLABLE JO
+A61F ; [.2E98.0020.0004.A61F][.2ECB.0020.0004.A61F] # VAI SYMBOL JONG
+A5D9 ; [.2E99.0020.0002.A5D9] # VAI SYLLABLE NJO
+A5DA ; [.2E9A.0020.0002.A5DA] # VAI SYLLABLE YO
+A5DB ; [.2E9B.0020.0002.A5DB] # VAI SYLLABLE KO
+A5DC ; [.2E9C.0020.0002.A5DC] # VAI SYLLABLE NGGO
+A5DD ; [.2E9D.0020.0002.A5DD] # VAI SYLLABLE GO
+A5DE ; [.2E9E.0020.0002.A5DE] # VAI SYLLABLE MO
+A5DF ; [.2E9F.0020.0002.A5DF] # VAI SYLLABLE NO
+A5E0 ; [.2EA0.0020.0002.A5E0] # VAI SYLLABLE NYO
+A5E1 ; [.2EA1.0020.0002.A5E1] # VAI SYLLABLE E
+A5E2 ; [.2EA2.0020.0002.A5E2] # VAI SYLLABLE EN
+A5E3 ; [.2EA3.0020.0002.A5E3] # VAI SYLLABLE NGEN
+A5E4 ; [.2EA4.0020.0002.A5E4] # VAI SYLLABLE HE
+A5E5 ; [.2EA5.0020.0002.A5E5] # VAI SYLLABLE HEN
+A5E6 ; [.2EA6.0020.0002.A5E6] # VAI SYLLABLE WE
+A5E7 ; [.2EA7.0020.0002.A5E7] # VAI SYLLABLE WEN
+A5E8 ; [.2EA8.0020.0002.A5E8] # VAI SYLLABLE PE
+A5E9 ; [.2EA9.0020.0002.A5E9] # VAI SYLLABLE BHE
+A5EA ; [.2EAA.0020.0002.A5EA] # VAI SYLLABLE BE
+A5EB ; [.2EAB.0020.0002.A5EB] # VAI SYLLABLE MBE
+A5EC ; [.2EAC.0020.0002.A5EC] # VAI SYLLABLE KPE
+A5ED ; [.2EAD.0020.0002.A5ED] # VAI SYLLABLE KPEN
+A5EE ; [.2EAE.0020.0002.A5EE] # VAI SYLLABLE MGBE
+A5EF ; [.2EAF.0020.0002.A5EF] # VAI SYLLABLE GBE
+A5F0 ; [.2EB0.0020.0002.A5F0] # VAI SYLLABLE GBEN
+A5F1 ; [.2EB1.0020.0002.A5F1] # VAI SYLLABLE FE
+A5F2 ; [.2EB2.0020.0002.A5F2] # VAI SYLLABLE VE
+A5F3 ; [.2EB3.0020.0002.A5F3] # VAI SYLLABLE TE
+A5F4 ; [.2EB4.0020.0002.A5F4] # VAI SYLLABLE THE
+A5F5 ; [.2EB5.0020.0002.A5F5] # VAI SYLLABLE DHE
+A5F6 ; [.2EB6.0020.0002.A5F6] # VAI SYLLABLE DHHE
+A5F7 ; [.2EB7.0020.0002.A5F7] # VAI SYLLABLE LE
+A5F8 ; [.2EB8.0020.0002.A5F8] # VAI SYLLABLE RE
+A5F9 ; [.2EB9.0020.0002.A5F9] # VAI SYLLABLE DE
+A5FA ; [.2EBA.0020.0002.A5FA] # VAI SYLLABLE NDE
+A5FB ; [.2EBB.0020.0002.A5FB] # VAI SYLLABLE SE
+A5FC ; [.2EBC.0020.0002.A5FC] # VAI SYLLABLE SHE
+A5FD ; [.2EBD.0020.0002.A5FD] # VAI SYLLABLE ZE
+A5FE ; [.2EBE.0020.0002.A5FE] # VAI SYLLABLE ZHE
+A5FF ; [.2EBF.0020.0002.A5FF] # VAI SYLLABLE CE
+A600 ; [.2EC0.0020.0002.A600] # VAI SYLLABLE JE
+A601 ; [.2EC1.0020.0002.A601] # VAI SYLLABLE NJE
+A602 ; [.2EC2.0020.0002.A602] # VAI SYLLABLE YE
+A603 ; [.2EC3.0020.0002.A603] # VAI SYLLABLE KE
+A604 ; [.2EC4.0020.0002.A604] # VAI SYLLABLE NGGE
+A605 ; [.2EC5.0020.0002.A605] # VAI SYLLABLE NGGEN
+A606 ; [.2EC6.0020.0002.A606] # VAI SYLLABLE GE
+A607 ; [.2EC7.0020.0002.A607] # VAI SYLLABLE GEN
+A608 ; [.2EC8.0020.0002.A608] # VAI SYLLABLE ME
+A609 ; [.2EC9.0020.0002.A609] # VAI SYLLABLE NE
+A60A ; [.2ECA.0020.0002.A60A] # VAI SYLLABLE NYE
+A60B ; [.2ECB.0020.0002.A60B] # VAI SYLLABLE NG
+A60C ; [.2ECC.0020.0002.A60C] # VAI SYLLABLE LENGTHENER
+A6A0 ; [.2ECD.0020.0002.A6A0] # BAMUM LETTER A
+A6A1 ; [.2ECE.0020.0002.A6A1] # BAMUM LETTER KA
+A6A2 ; [.2ECF.0020.0002.A6A2] # BAMUM LETTER U
+A6A3 ; [.2ED0.0020.0002.A6A3] # BAMUM LETTER KU
+A6A4 ; [.2ED1.0020.0002.A6A4] # BAMUM LETTER EE
+A6A5 ; [.2ED2.0020.0002.A6A5] # BAMUM LETTER REE
+A6A6 ; [.2ED3.0020.0002.A6A6] # BAMUM LETTER TAE
+A6A7 ; [.2ED4.0020.0002.A6A7] # BAMUM LETTER O
+A6A8 ; [.2ED5.0020.0002.A6A8] # BAMUM LETTER NYI
+A6A9 ; [.2ED6.0020.0002.A6A9] # BAMUM LETTER I
+A6AA ; [.2ED7.0020.0002.A6AA] # BAMUM LETTER LA
+A6AB ; [.2ED8.0020.0002.A6AB] # BAMUM LETTER PA
+A6AC ; [.2ED9.0020.0002.A6AC] # BAMUM LETTER RII
+A6AD ; [.2EDA.0020.0002.A6AD] # BAMUM LETTER RIEE
+A6AE ; [.2EDB.0020.0002.A6AE] # BAMUM LETTER LEEEE
+A6AF ; [.2EDC.0020.0002.A6AF] # BAMUM LETTER MEEEE
+A6B0 ; [.2EDD.0020.0002.A6B0] # BAMUM LETTER TAA
+A6B1 ; [.2EDE.0020.0002.A6B1] # BAMUM LETTER NDAA
+A6B2 ; [.2EDF.0020.0002.A6B2] # BAMUM LETTER NJAEM
+A6B3 ; [.2EE0.0020.0002.A6B3] # BAMUM LETTER M
+A6B4 ; [.2EE1.0020.0002.A6B4] # BAMUM LETTER SUU
+A6B5 ; [.2EE2.0020.0002.A6B5] # BAMUM LETTER MU
+A6B6 ; [.2EE3.0020.0002.A6B6] # BAMUM LETTER SHII
+A6B7 ; [.2EE4.0020.0002.A6B7] # BAMUM LETTER SI
+A6B8 ; [.2EE5.0020.0002.A6B8] # BAMUM LETTER SHEUX
+A6B9 ; [.2EE6.0020.0002.A6B9] # BAMUM LETTER SEUX
+A6BA ; [.2EE7.0020.0002.A6BA] # BAMUM LETTER KYEE
+A6BB ; [.2EE8.0020.0002.A6BB] # BAMUM LETTER KET
+A6BC ; [.2EE9.0020.0002.A6BC] # BAMUM LETTER NUAE
+A6BD ; [.2EEA.0020.0002.A6BD] # BAMUM LETTER NU
+A6BE ; [.2EEB.0020.0002.A6BE] # BAMUM LETTER NJUAE
+A6BF ; [.2EEC.0020.0002.A6BF] # BAMUM LETTER YOQ
+A6C0 ; [.2EED.0020.0002.A6C0] # BAMUM LETTER SHU
+A6C1 ; [.2EEE.0020.0002.A6C1] # BAMUM LETTER YUQ
+A6C2 ; [.2EEF.0020.0002.A6C2] # BAMUM LETTER YA
+A6C3 ; [.2EF0.0020.0002.A6C3] # BAMUM LETTER NSHA
+A6C4 ; [.2EF1.0020.0002.A6C4] # BAMUM LETTER KEUX
+A6C5 ; [.2EF2.0020.0002.A6C5] # BAMUM LETTER PEUX
+A6C6 ; [.2EF3.0020.0002.A6C6] # BAMUM LETTER NJEE
+A6C7 ; [.2EF4.0020.0002.A6C7] # BAMUM LETTER NTEE
+A6C8 ; [.2EF5.0020.0002.A6C8] # BAMUM LETTER PUE
+A6C9 ; [.2EF6.0020.0002.A6C9] # BAMUM LETTER WUE
+A6CA ; [.2EF7.0020.0002.A6CA] # BAMUM LETTER PEE
+A6CB ; [.2EF8.0020.0002.A6CB] # BAMUM LETTER FEE
+A6CC ; [.2EF9.0020.0002.A6CC] # BAMUM LETTER RU
+A6CD ; [.2EFA.0020.0002.A6CD] # BAMUM LETTER LU
+A6CE ; [.2EFB.0020.0002.A6CE] # BAMUM LETTER MI
+A6CF ; [.2EFC.0020.0002.A6CF] # BAMUM LETTER NI
+A6D0 ; [.2EFD.0020.0002.A6D0] # BAMUM LETTER REUX
+A6D1 ; [.2EFE.0020.0002.A6D1] # BAMUM LETTER RAE
+A6D2 ; [.2EFF.0020.0002.A6D2] # BAMUM LETTER KEN
+A6D3 ; [.2F00.0020.0002.A6D3] # BAMUM LETTER NGKWAEN
+A6D4 ; [.2F01.0020.0002.A6D4] # BAMUM LETTER NGGA
+A6D5 ; [.2F02.0020.0002.A6D5] # BAMUM LETTER NGA
+A6D6 ; [.2F03.0020.0002.A6D6] # BAMUM LETTER SHO
+A6D7 ; [.2F04.0020.0002.A6D7] # BAMUM LETTER PUAE
+A6D8 ; [.2F05.0020.0002.A6D8] # BAMUM LETTER FU
+A6D9 ; [.2F06.0020.0002.A6D9] # BAMUM LETTER FOM
+A6DA ; [.2F07.0020.0002.A6DA] # BAMUM LETTER WA
+A6DB ; [.2F08.0020.0002.A6DB] # BAMUM LETTER NA
+A6DC ; [.2F09.0020.0002.A6DC] # BAMUM LETTER LI
+A6DD ; [.2F0A.0020.0002.A6DD] # BAMUM LETTER PI
+A6DE ; [.2F0B.0020.0002.A6DE] # BAMUM LETTER LOQ
+A6DF ; [.2F0C.0020.0002.A6DF] # BAMUM LETTER KO
+A6E0 ; [.2F0D.0020.0002.A6E0] # BAMUM LETTER MBEN
+A6E1 ; [.2F0E.0020.0002.A6E1] # BAMUM LETTER REN
+A6E2 ; [.2F0F.0020.0002.A6E2] # BAMUM LETTER MEN
+A6E3 ; [.2F10.0020.0002.A6E3] # BAMUM LETTER MA
+A6E4 ; [.2F11.0020.0002.A6E4] # BAMUM LETTER TI
+A6E5 ; [.2F12.0020.0002.A6E5] # BAMUM LETTER KI
+A6E6 ; [.2F13.0020.0002.A6E6] # BAMUM LETTER MO
+A6E7 ; [.2F14.0020.0002.A6E7] # BAMUM LETTER MBAA
+A6E8 ; [.2F15.0020.0002.A6E8] # BAMUM LETTER TET
+A6E9 ; [.2F16.0020.0002.A6E9] # BAMUM LETTER KPA
+A6EA ; [.2F17.0020.0002.A6EA] # BAMUM LETTER TEN
+A6EB ; [.2F18.0020.0002.A6EB] # BAMUM LETTER NTUU
+A6EC ; [.2F19.0020.0002.A6EC] # BAMUM LETTER SAMBA
+A6ED ; [.2F1A.0020.0002.A6ED] # BAMUM LETTER FAAMAE
+A6EE ; [.2F1B.0020.0002.A6EE] # BAMUM LETTER KOVUU
+A6EF ; [.2F1C.0020.0002.A6EF] # BAMUM LETTER KOGHOM
+16800 ; [.2F1D.0020.0002.16800] # BAMUM LETTER PHASE-A NGKUE MFON
+16801 ; [.2F1E.0020.0002.16801] # BAMUM LETTER PHASE-A GBIEE FON
+16802 ; [.2F1F.0020.0002.16802] # BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE
+16803 ; [.2F20.0020.0002.16803] # BAMUM LETTER PHASE-A PON MFON PIPAEMBA
+16804 ; [.2F21.0020.0002.16804] # BAMUM LETTER PHASE-A NAA MFON
+16805 ; [.2F22.0020.0002.16805] # BAMUM LETTER PHASE-A SHUENSHUET
+16806 ; [.2F23.0020.0002.16806] # BAMUM LETTER PHASE-A TITA MFON
+16807 ; [.2F24.0020.0002.16807] # BAMUM LETTER PHASE-A NZA MFON
+16808 ; [.2F25.0020.0002.16808] # BAMUM LETTER PHASE-A SHINDA PA NJI
+16809 ; [.2F26.0020.0002.16809] # BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE
+1680A ; [.2F27.0020.0002.1680A] # BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA
+1680B ; [.2F28.0020.0002.1680B] # BAMUM LETTER PHASE-A MAEMBGBIEE
+1680C ; [.2F29.0020.0002.1680C] # BAMUM LETTER PHASE-A TU MAEMBA
+1680D ; [.2F2A.0020.0002.1680D] # BAMUM LETTER PHASE-A NGANGU
+1680E ; [.2F2B.0020.0002.1680E] # BAMUM LETTER PHASE-A MAEMVEUX
+1680F ; [.2F2C.0020.0002.1680F] # BAMUM LETTER PHASE-A MANSUAE
+16810 ; [.2F2D.0020.0002.16810] # BAMUM LETTER PHASE-A MVEUAENGAM
+16811 ; [.2F2E.0020.0002.16811] # BAMUM LETTER PHASE-A SEUNYAM
+16812 ; [.2F2F.0020.0002.16812] # BAMUM LETTER PHASE-A NTOQPEN
+16813 ; [.2F30.0020.0002.16813] # BAMUM LETTER PHASE-A KEUKEUTNDA
+16814 ; [.2F31.0020.0002.16814] # BAMUM LETTER PHASE-A NKINDI
+16815 ; [.2F32.0020.0002.16815] # BAMUM LETTER PHASE-A SUU
+16816 ; [.2F33.0020.0002.16816] # BAMUM LETTER PHASE-A NGKUENZEUM
+16817 ; [.2F34.0020.0002.16817] # BAMUM LETTER PHASE-A LAPAQ
+16818 ; [.2F35.0020.0002.16818] # BAMUM LETTER PHASE-A LET KUT
+16819 ; [.2F36.0020.0002.16819] # BAMUM LETTER PHASE-A NTAP MFAA
+1681A ; [.2F37.0020.0002.1681A] # BAMUM LETTER PHASE-A MAEKEUP
+1681B ; [.2F38.0020.0002.1681B] # BAMUM LETTER PHASE-A PASHAE
+1681C ; [.2F39.0020.0002.1681C] # BAMUM LETTER PHASE-A GHEUAERAE
+1681D ; [.2F3A.0020.0002.1681D] # BAMUM LETTER PHASE-A PAMSHAE
+1681E ; [.2F3B.0020.0002.1681E] # BAMUM LETTER PHASE-A MON NGGEUAET
+1681F ; [.2F3C.0020.0002.1681F] # BAMUM LETTER PHASE-A NZUN MEUT
+16820 ; [.2F3D.0020.0002.16820] # BAMUM LETTER PHASE-A U YUQ NAE
+16821 ; [.2F3E.0020.0002.16821] # BAMUM LETTER PHASE-A GHEUAEGHEUAE
+16822 ; [.2F3F.0020.0002.16822] # BAMUM LETTER PHASE-A NTAP NTAA
+16823 ; [.2F40.0020.0002.16823] # BAMUM LETTER PHASE-A SISA
+16824 ; [.2F41.0020.0002.16824] # BAMUM LETTER PHASE-A MGBASA
+16825 ; [.2F42.0020.0002.16825] # BAMUM LETTER PHASE-A MEUNJOMNDEUQ
+16826 ; [.2F43.0020.0002.16826] # BAMUM LETTER PHASE-A MOOMPUQ
+16827 ; [.2F44.0020.0002.16827] # BAMUM LETTER PHASE-A KAFA
+16828 ; [.2F45.0020.0002.16828] # BAMUM LETTER PHASE-A PA LEERAEWA
+16829 ; [.2F46.0020.0002.16829] # BAMUM LETTER PHASE-A NDA LEERAEWA
+1682A ; [.2F47.0020.0002.1682A] # BAMUM LETTER PHASE-A PET
+1682B ; [.2F48.0020.0002.1682B] # BAMUM LETTER PHASE-A MAEMKPEN
+1682C ; [.2F49.0020.0002.1682C] # BAMUM LETTER PHASE-A NIKA
+1682D ; [.2F4A.0020.0002.1682D] # BAMUM LETTER PHASE-A PUP
+1682E ; [.2F4B.0020.0002.1682E] # BAMUM LETTER PHASE-A TUAEP
+1682F ; [.2F4C.0020.0002.1682F] # BAMUM LETTER PHASE-A LUAEP
+16830 ; [.2F4D.0020.0002.16830] # BAMUM LETTER PHASE-A SONJAM
+16831 ; [.2F4E.0020.0002.16831] # BAMUM LETTER PHASE-A TEUTEUWEN
+16832 ; [.2F4F.0020.0002.16832] # BAMUM LETTER PHASE-A MAENYI
+16833 ; [.2F50.0020.0002.16833] # BAMUM LETTER PHASE-A KET
+16834 ; [.2F51.0020.0002.16834] # BAMUM LETTER PHASE-A NDAANGGEUAET
+16835 ; [.2F52.0020.0002.16835] # BAMUM LETTER PHASE-A KUOQ
+16836 ; [.2F53.0020.0002.16836] # BAMUM LETTER PHASE-A MOOMEUT
+16837 ; [.2F54.0020.0002.16837] # BAMUM LETTER PHASE-A SHUM
+16838 ; [.2F55.0020.0002.16838] # BAMUM LETTER PHASE-A LOMMAE
+16839 ; [.2F56.0020.0002.16839] # BAMUM LETTER PHASE-A FIRI
+1683A ; [.2F57.0020.0002.1683A] # BAMUM LETTER PHASE-A ROM
+1683B ; [.2F58.0020.0002.1683B] # BAMUM LETTER PHASE-A KPOQ
+1683C ; [.2F59.0020.0002.1683C] # BAMUM LETTER PHASE-A SOQ
+1683D ; [.2F5A.0020.0002.1683D] # BAMUM LETTER PHASE-A MAP PIEET
+1683E ; [.2F5B.0020.0002.1683E] # BAMUM LETTER PHASE-A SHIRAE
+1683F ; [.2F5C.0020.0002.1683F] # BAMUM LETTER PHASE-A NTAP
+16840 ; [.2F5D.0020.0002.16840] # BAMUM LETTER PHASE-A SHOQ NSHUT YUM
+16841 ; [.2F5E.0020.0002.16841] # BAMUM LETTER PHASE-A NYIT MONGKEUAEQ
+16842 ; [.2F5F.0020.0002.16842] # BAMUM LETTER PHASE-A PAARAE
+16843 ; [.2F60.0020.0002.16843] # BAMUM LETTER PHASE-A NKAARAE
+16844 ; [.2F61.0020.0002.16844] # BAMUM LETTER PHASE-A UNKNOWN
+16845 ; [.2F62.0020.0002.16845] # BAMUM LETTER PHASE-A NGGEN
+16846 ; [.2F63.0020.0002.16846] # BAMUM LETTER PHASE-A MAESI
+16847 ; [.2F64.0020.0002.16847] # BAMUM LETTER PHASE-A NJAM
+16848 ; [.2F65.0020.0002.16848] # BAMUM LETTER PHASE-A MBANYI
+16849 ; [.2F66.0020.0002.16849] # BAMUM LETTER PHASE-A NYET
+1684A ; [.2F67.0020.0002.1684A] # BAMUM LETTER PHASE-A TEUAEN
+1684B ; [.2F68.0020.0002.1684B] # BAMUM LETTER PHASE-A SOT
+1684C ; [.2F69.0020.0002.1684C] # BAMUM LETTER PHASE-A PAAM
+1684D ; [.2F6A.0020.0002.1684D] # BAMUM LETTER PHASE-A NSHIEE
+1684E ; [.2F6B.0020.0002.1684E] # BAMUM LETTER PHASE-A MAEM
+1684F ; [.2F6C.0020.0002.1684F] # BAMUM LETTER PHASE-A NYI
+16850 ; [.2F6D.0020.0002.16850] # BAMUM LETTER PHASE-A KAQ
+16851 ; [.2F6E.0020.0002.16851] # BAMUM LETTER PHASE-A NSHA
+16852 ; [.2F6F.0020.0002.16852] # BAMUM LETTER PHASE-A VEE
+16853 ; [.2F70.0020.0002.16853] # BAMUM LETTER PHASE-A LU
+16854 ; [.2F71.0020.0002.16854] # BAMUM LETTER PHASE-A NEN
+16855 ; [.2F72.0020.0002.16855] # BAMUM LETTER PHASE-A NAQ
+16856 ; [.2F73.0020.0002.16856] # BAMUM LETTER PHASE-A MBAQ
+16857 ; [.2F74.0020.0002.16857] # BAMUM LETTER PHASE-B NSHUET
+16858 ; [.2F75.0020.0002.16858] # BAMUM LETTER PHASE-B TU MAEMGBIEE
+16859 ; [.2F76.0020.0002.16859] # BAMUM LETTER PHASE-B SIEE
+1685A ; [.2F77.0020.0002.1685A] # BAMUM LETTER PHASE-B SET TU
+1685B ; [.2F78.0020.0002.1685B] # BAMUM LETTER PHASE-B LOM NTEUM
+1685C ; [.2F79.0020.0002.1685C] # BAMUM LETTER PHASE-B MBA MAELEE
+1685D ; [.2F7A.0020.0002.1685D] # BAMUM LETTER PHASE-B KIEEM
+1685E ; [.2F7B.0020.0002.1685E] # BAMUM LETTER PHASE-B YEURAE
+1685F ; [.2F7C.0020.0002.1685F] # BAMUM LETTER PHASE-B MBAARAE
+16860 ; [.2F7D.0020.0002.16860] # BAMUM LETTER PHASE-B KAM
+16861 ; [.2F7E.0020.0002.16861] # BAMUM LETTER PHASE-B PEESHI
+16862 ; [.2F7F.0020.0002.16862] # BAMUM LETTER PHASE-B YAFU LEERAEWA
+16863 ; [.2F80.0020.0002.16863] # BAMUM LETTER PHASE-B LAM NSHUT NYAM
+16864 ; [.2F81.0020.0002.16864] # BAMUM LETTER PHASE-B NTIEE SHEUOQ
+16865 ; [.2F82.0020.0002.16865] # BAMUM LETTER PHASE-B NDU NJAA
+16866 ; [.2F83.0020.0002.16866] # BAMUM LETTER PHASE-B GHEUGHEUAEM
+16867 ; [.2F84.0020.0002.16867] # BAMUM LETTER PHASE-B PIT
+16868 ; [.2F85.0020.0002.16868] # BAMUM LETTER PHASE-B TU NSIEE
+16869 ; [.2F86.0020.0002.16869] # BAMUM LETTER PHASE-B SHET NJAQ
+1686A ; [.2F87.0020.0002.1686A] # BAMUM LETTER PHASE-B SHEUAEQTU
+1686B ; [.2F88.0020.0002.1686B] # BAMUM LETTER PHASE-B MFON TEUAEQ
+1686C ; [.2F89.0020.0002.1686C] # BAMUM LETTER PHASE-B MBIT MBAAKET
+1686D ; [.2F8A.0020.0002.1686D] # BAMUM LETTER PHASE-B NYI NTEUM
+1686E ; [.2F8B.0020.0002.1686E] # BAMUM LETTER PHASE-B KEUPUQ
+1686F ; [.2F8C.0020.0002.1686F] # BAMUM LETTER PHASE-B GHEUGHEN
+16870 ; [.2F8D.0020.0002.16870] # BAMUM LETTER PHASE-B KEUYEUX
+16871 ; [.2F8E.0020.0002.16871] # BAMUM LETTER PHASE-B LAANAE
+16872 ; [.2F8F.0020.0002.16872] # BAMUM LETTER PHASE-B PARUM
+16873 ; [.2F90.0020.0002.16873] # BAMUM LETTER PHASE-B VEUM
+16874 ; [.2F91.0020.0002.16874] # BAMUM LETTER PHASE-B NGKINDI MVOP
+16875 ; [.2F92.0020.0002.16875] # BAMUM LETTER PHASE-B NGGEU MBU
+16876 ; [.2F93.0020.0002.16876] # BAMUM LETTER PHASE-B WUAET
+16877 ; [.2F94.0020.0002.16877] # BAMUM LETTER PHASE-B SAKEUAE
+16878 ; [.2F95.0020.0002.16878] # BAMUM LETTER PHASE-B TAAM
+16879 ; [.2F96.0020.0002.16879] # BAMUM LETTER PHASE-B MEUQ
+1687A ; [.2F97.0020.0002.1687A] # BAMUM LETTER PHASE-B NGGUOQ
+1687B ; [.2F98.0020.0002.1687B] # BAMUM LETTER PHASE-B NGGUOQ LARGE
+1687C ; [.2F99.0020.0002.1687C] # BAMUM LETTER PHASE-B MFIYAQ
+1687D ; [.2F9A.0020.0002.1687D] # BAMUM LETTER PHASE-B SUE
+1687E ; [.2F9B.0020.0002.1687E] # BAMUM LETTER PHASE-B MBEURI
+1687F ; [.2F9C.0020.0002.1687F] # BAMUM LETTER PHASE-B MONTIEEN
+16880 ; [.2F9D.0020.0002.16880] # BAMUM LETTER PHASE-B NYAEMAE
+16881 ; [.2F9E.0020.0002.16881] # BAMUM LETTER PHASE-B PUNGAAM
+16882 ; [.2F9F.0020.0002.16882] # BAMUM LETTER PHASE-B MEUT NGGEET
+16883 ; [.2FA0.0020.0002.16883] # BAMUM LETTER PHASE-B FEUX
+16884 ; [.2FA1.0020.0002.16884] # BAMUM LETTER PHASE-B MBUOQ
+16885 ; [.2FA2.0020.0002.16885] # BAMUM LETTER PHASE-B FEE
+16886 ; [.2FA3.0020.0002.16886] # BAMUM LETTER PHASE-B KEUAEM
+16887 ; [.2FA4.0020.0002.16887] # BAMUM LETTER PHASE-B MA NJEUAENA
+16888 ; [.2FA5.0020.0002.16888] # BAMUM LETTER PHASE-B MA NJUQA
+16889 ; [.2FA6.0020.0002.16889] # BAMUM LETTER PHASE-B LET
+1688A ; [.2FA7.0020.0002.1688A] # BAMUM LETTER PHASE-B NGGAAM
+1688B ; [.2FA8.0020.0002.1688B] # BAMUM LETTER PHASE-B NSEN
+1688C ; [.2FA9.0020.0002.1688C] # BAMUM LETTER PHASE-B MA
+1688D ; [.2FAA.0020.0002.1688D] # BAMUM LETTER PHASE-B KIQ
+1688E ; [.2FAB.0020.0002.1688E] # BAMUM LETTER PHASE-B NGOM
+1688F ; [.2FAC.0020.0002.1688F] # BAMUM LETTER PHASE-C NGKUE MAEMBA
+16890 ; [.2FAD.0020.0002.16890] # BAMUM LETTER PHASE-C NZA
+16891 ; [.2FAE.0020.0002.16891] # BAMUM LETTER PHASE-C YUM
+16892 ; [.2FAF.0020.0002.16892] # BAMUM LETTER PHASE-C WANGKUOQ
+16893 ; [.2FB0.0020.0002.16893] # BAMUM LETTER PHASE-C NGGEN
+16894 ; [.2FB1.0020.0002.16894] # BAMUM LETTER PHASE-C NDEUAEREE
+16895 ; [.2FB2.0020.0002.16895] # BAMUM LETTER PHASE-C NGKAQ
+16896 ; [.2FB3.0020.0002.16896] # BAMUM LETTER PHASE-C GHARAE
+16897 ; [.2FB4.0020.0002.16897] # BAMUM LETTER PHASE-C MBEEKEET
+16898 ; [.2FB5.0020.0002.16898] # BAMUM LETTER PHASE-C GBAYI
+16899 ; [.2FB6.0020.0002.16899] # BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN
+1689A ; [.2FB7.0020.0002.1689A] # BAMUM LETTER PHASE-C NTU MBIT
+1689B ; [.2FB8.0020.0002.1689B] # BAMUM LETTER PHASE-C MBEUM
+1689C ; [.2FB9.0020.0002.1689C] # BAMUM LETTER PHASE-C PIRIEEN
+1689D ; [.2FBA.0020.0002.1689D] # BAMUM LETTER PHASE-C NDOMBU
+1689E ; [.2FBB.0020.0002.1689E] # BAMUM LETTER PHASE-C MBAA CABBAGE-TREE
+1689F ; [.2FBC.0020.0002.1689F] # BAMUM LETTER PHASE-C KEUSHEUAEP
+168A0 ; [.2FBD.0020.0002.168A0] # BAMUM LETTER PHASE-C GHAP
+168A1 ; [.2FBE.0020.0002.168A1] # BAMUM LETTER PHASE-C KEUKAQ
+168A2 ; [.2FBF.0020.0002.168A2] # BAMUM LETTER PHASE-C YU MUOMAE
+168A3 ; [.2FC0.0020.0002.168A3] # BAMUM LETTER PHASE-C NZEUM
+168A4 ; [.2FC1.0020.0002.168A4] # BAMUM LETTER PHASE-C MBUE
+168A5 ; [.2FC2.0020.0002.168A5] # BAMUM LETTER PHASE-C NSEUAEN
+168A6 ; [.2FC3.0020.0002.168A6] # BAMUM LETTER PHASE-C MBIT
+168A7 ; [.2FC4.0020.0002.168A7] # BAMUM LETTER PHASE-C YEUQ
+168A8 ; [.2FC5.0020.0002.168A8] # BAMUM LETTER PHASE-C KPARAQ
+168A9 ; [.2FC6.0020.0002.168A9] # BAMUM LETTER PHASE-C KAA
+168AA ; [.2FC7.0020.0002.168AA] # BAMUM LETTER PHASE-C SEUX
+168AB ; [.2FC8.0020.0002.168AB] # BAMUM LETTER PHASE-C NDIDA
+168AC ; [.2FC9.0020.0002.168AC] # BAMUM LETTER PHASE-C TAASHAE
+168AD ; [.2FCA.0020.0002.168AD] # BAMUM LETTER PHASE-C NJUEQ
+168AE ; [.2FCB.0020.0002.168AE] # BAMUM LETTER PHASE-C TITA YUE
+168AF ; [.2FCC.0020.0002.168AF] # BAMUM LETTER PHASE-C SUAET
+168B0 ; [.2FCD.0020.0002.168B0] # BAMUM LETTER PHASE-C NGGUAEN NYAM
+168B1 ; [.2FCE.0020.0002.168B1] # BAMUM LETTER PHASE-C VEUX
+168B2 ; [.2FCF.0020.0002.168B2] # BAMUM LETTER PHASE-C NANSANAQ
+168B3 ; [.2FD0.0020.0002.168B3] # BAMUM LETTER PHASE-C MA KEUAERI
+168B4 ; [.2FD1.0020.0002.168B4] # BAMUM LETTER PHASE-C NTAA
+168B5 ; [.2FD2.0020.0002.168B5] # BAMUM LETTER PHASE-C NGGUON
+168B6 ; [.2FD3.0020.0002.168B6] # BAMUM LETTER PHASE-C LAP
+168B7 ; [.2FD4.0020.0002.168B7] # BAMUM LETTER PHASE-C MBIRIEEN
+168B8 ; [.2FD5.0020.0002.168B8] # BAMUM LETTER PHASE-C MGBASAQ
+168B9 ; [.2FD6.0020.0002.168B9] # BAMUM LETTER PHASE-C NTEUNGBA
+168BA ; [.2FD7.0020.0002.168BA] # BAMUM LETTER PHASE-C TEUTEUX
+168BB ; [.2FD8.0020.0002.168BB] # BAMUM LETTER PHASE-C NGGUM
+168BC ; [.2FD9.0020.0002.168BC] # BAMUM LETTER PHASE-C FUE
+168BD ; [.2FDA.0020.0002.168BD] # BAMUM LETTER PHASE-C NDEUT
+168BE ; [.2FDB.0020.0002.168BE] # BAMUM LETTER PHASE-C NSA
+168BF ; [.2FDC.0020.0002.168BF] # BAMUM LETTER PHASE-C NSHAQ
+168C0 ; [.2FDD.0020.0002.168C0] # BAMUM LETTER PHASE-C BUNG
+168C1 ; [.2FDE.0020.0002.168C1] # BAMUM LETTER PHASE-C VEUAEPEN
+168C2 ; [.2FDF.0020.0002.168C2] # BAMUM LETTER PHASE-C MBERAE
+168C3 ; [.2FE0.0020.0002.168C3] # BAMUM LETTER PHASE-C RU
+168C4 ; [.2FE1.0020.0002.168C4] # BAMUM LETTER PHASE-C NJAEM
+168C5 ; [.2FE2.0020.0002.168C5] # BAMUM LETTER PHASE-C LAM
+168C6 ; [.2FE3.0020.0002.168C6] # BAMUM LETTER PHASE-C TITUAEP
+168C7 ; [.2FE4.0020.0002.168C7] # BAMUM LETTER PHASE-C NSUOT NGOM
+168C8 ; [.2FE5.0020.0002.168C8] # BAMUM LETTER PHASE-C NJEEEE
+168C9 ; [.2FE6.0020.0002.168C9] # BAMUM LETTER PHASE-C KET
+168CA ; [.2FE7.0020.0002.168CA] # BAMUM LETTER PHASE-C NGGU
+168CB ; [.2FE8.0020.0002.168CB] # BAMUM LETTER PHASE-C MAESI
+168CC ; [.2FE9.0020.0002.168CC] # BAMUM LETTER PHASE-C MBUAEM
+168CD ; [.2FEA.0020.0002.168CD] # BAMUM LETTER PHASE-C LU
+168CE ; [.2FEB.0020.0002.168CE] # BAMUM LETTER PHASE-C KUT
+168CF ; [.2FEC.0020.0002.168CF] # BAMUM LETTER PHASE-C NJAM
+168D0 ; [.2FED.0020.0002.168D0] # BAMUM LETTER PHASE-C NGOM
+168D1 ; [.2FEE.0020.0002.168D1] # BAMUM LETTER PHASE-C WUP
+168D2 ; [.2FEF.0020.0002.168D2] # BAMUM LETTER PHASE-C NGGUEET
+168D3 ; [.2FF0.0020.0002.168D3] # BAMUM LETTER PHASE-C NSOM
+168D4 ; [.2FF1.0020.0002.168D4] # BAMUM LETTER PHASE-C NTEN
+168D5 ; [.2FF2.0020.0002.168D5] # BAMUM LETTER PHASE-C KUOP NKAARAE
+168D6 ; [.2FF3.0020.0002.168D6] # BAMUM LETTER PHASE-C NSUN
+168D7 ; [.2FF4.0020.0002.168D7] # BAMUM LETTER PHASE-C NDAM
+168D8 ; [.2FF5.0020.0002.168D8] # BAMUM LETTER PHASE-C MA NSIEE
+168D9 ; [.2FF6.0020.0002.168D9] # BAMUM LETTER PHASE-C YAA
+168DA ; [.2FF7.0020.0002.168DA] # BAMUM LETTER PHASE-C NDAP
+168DB ; [.2FF8.0020.0002.168DB] # BAMUM LETTER PHASE-C SHUEQ
+168DC ; [.2FF9.0020.0002.168DC] # BAMUM LETTER PHASE-C SETFON
+168DD ; [.2FFA.0020.0002.168DD] # BAMUM LETTER PHASE-C MBI
+168DE ; [.2FFB.0020.0002.168DE] # BAMUM LETTER PHASE-C MAEMBA
+168DF ; [.2FFC.0020.0002.168DF] # BAMUM LETTER PHASE-C MBANYI
+168E0 ; [.2FFD.0020.0002.168E0] # BAMUM LETTER PHASE-C KEUSEUX
+168E1 ; [.2FFE.0020.0002.168E1] # BAMUM LETTER PHASE-C MBEUX
+168E2 ; [.2FFF.0020.0002.168E2] # BAMUM LETTER PHASE-C KEUM
+168E3 ; [.3000.0020.0002.168E3] # BAMUM LETTER PHASE-C MBAA PICKET
+168E4 ; [.3001.0020.0002.168E4] # BAMUM LETTER PHASE-C YUWOQ
+168E5 ; [.3002.0020.0002.168E5] # BAMUM LETTER PHASE-C NJEUX
+168E6 ; [.3003.0020.0002.168E6] # BAMUM LETTER PHASE-C MIEE
+168E7 ; [.3004.0020.0002.168E7] # BAMUM LETTER PHASE-C MUAE
+168E8 ; [.3005.0020.0002.168E8] # BAMUM LETTER PHASE-C SHIQ
+168E9 ; [.3006.0020.0002.168E9] # BAMUM LETTER PHASE-C KEN LAW
+168EA ; [.3007.0020.0002.168EA] # BAMUM LETTER PHASE-C KEN FATIGUE
+168EB ; [.3008.0020.0002.168EB] # BAMUM LETTER PHASE-C NGAQ
+168EC ; [.3009.0020.0002.168EC] # BAMUM LETTER PHASE-C NAQ
+168ED ; [.300A.0020.0002.168ED] # BAMUM LETTER PHASE-C LIQ
+168EE ; [.300B.0020.0002.168EE] # BAMUM LETTER PHASE-C PIN
+168EF ; [.300C.0020.0002.168EF] # BAMUM LETTER PHASE-C PEN
+168F0 ; [.300D.0020.0002.168F0] # BAMUM LETTER PHASE-C TET
+168F1 ; [.300E.0020.0002.168F1] # BAMUM LETTER PHASE-D MBUO
+168F2 ; [.300F.0020.0002.168F2] # BAMUM LETTER PHASE-D WAP
+168F3 ; [.3010.0020.0002.168F3] # BAMUM LETTER PHASE-D NJI
+168F4 ; [.3011.0020.0002.168F4] # BAMUM LETTER PHASE-D MFON
+168F5 ; [.3012.0020.0002.168F5] # BAMUM LETTER PHASE-D NJIEE
+168F6 ; [.3013.0020.0002.168F6] # BAMUM LETTER PHASE-D LIEE
+168F7 ; [.3014.0020.0002.168F7] # BAMUM LETTER PHASE-D NJEUT
+168F8 ; [.3015.0020.0002.168F8] # BAMUM LETTER PHASE-D NSHEE
+168F9 ; [.3016.0020.0002.168F9] # BAMUM LETTER PHASE-D NGGAAMAE
+168FA ; [.3017.0020.0002.168FA] # BAMUM LETTER PHASE-D NYAM
+168FB ; [.3018.0020.0002.168FB] # BAMUM LETTER PHASE-D WUAEN
+168FC ; [.3019.0020.0002.168FC] # BAMUM LETTER PHASE-D NGKUN
+168FD ; [.301A.0020.0002.168FD] # BAMUM LETTER PHASE-D SHEE
+168FE ; [.301B.0020.0002.168FE] # BAMUM LETTER PHASE-D NGKAP
+168FF ; [.301C.0020.0002.168FF] # BAMUM LETTER PHASE-D KEUAETMEUN
+16900 ; [.301D.0020.0002.16900] # BAMUM LETTER PHASE-D TEUT
+16901 ; [.301E.0020.0002.16901] # BAMUM LETTER PHASE-D SHEUAE
+16902 ; [.301F.0020.0002.16902] # BAMUM LETTER PHASE-D NJAP
+16903 ; [.3020.0020.0002.16903] # BAMUM LETTER PHASE-D SUE
+16904 ; [.3021.0020.0002.16904] # BAMUM LETTER PHASE-D KET
+16905 ; [.3022.0020.0002.16905] # BAMUM LETTER PHASE-D YAEMMAE
+16906 ; [.3023.0020.0002.16906] # BAMUM LETTER PHASE-D KUOM
+16907 ; [.3024.0020.0002.16907] # BAMUM LETTER PHASE-D SAP
+16908 ; [.3025.0020.0002.16908] # BAMUM LETTER PHASE-D MFEUT
+16909 ; [.3026.0020.0002.16909] # BAMUM LETTER PHASE-D NDEUX
+1690A ; [.3027.0020.0002.1690A] # BAMUM LETTER PHASE-D MALEERI
+1690B ; [.3028.0020.0002.1690B] # BAMUM LETTER PHASE-D MEUT
+1690C ; [.3029.0020.0002.1690C] # BAMUM LETTER PHASE-D SEUAEQ
+1690D ; [.302A.0020.0002.1690D] # BAMUM LETTER PHASE-D YEN
+1690E ; [.302B.0020.0002.1690E] # BAMUM LETTER PHASE-D NJEUAEM
+1690F ; [.302C.0020.0002.1690F] # BAMUM LETTER PHASE-D KEUOT MBUAE
+16910 ; [.302D.0020.0002.16910] # BAMUM LETTER PHASE-D NGKEURI
+16911 ; [.302E.0020.0002.16911] # BAMUM LETTER PHASE-D TU
+16912 ; [.302F.0020.0002.16912] # BAMUM LETTER PHASE-D GHAA
+16913 ; [.3030.0020.0002.16913] # BAMUM LETTER PHASE-D NGKYEE
+16914 ; [.3031.0020.0002.16914] # BAMUM LETTER PHASE-D FEUFEUAET
+16915 ; [.3032.0020.0002.16915] # BAMUM LETTER PHASE-D NDEE
+16916 ; [.3033.0020.0002.16916] # BAMUM LETTER PHASE-D MGBOFUM
+16917 ; [.3034.0020.0002.16917] # BAMUM LETTER PHASE-D LEUAEP
+16918 ; [.3035.0020.0002.16918] # BAMUM LETTER PHASE-D NDON
+16919 ; [.3036.0020.0002.16919] # BAMUM LETTER PHASE-D MONI
+1691A ; [.3037.0020.0002.1691A] # BAMUM LETTER PHASE-D MGBEUN
+1691B ; [.3038.0020.0002.1691B] # BAMUM LETTER PHASE-D PUUT
+1691C ; [.3039.0020.0002.1691C] # BAMUM LETTER PHASE-D MGBIEE
+1691D ; [.303A.0020.0002.1691D] # BAMUM LETTER PHASE-D MFO
+1691E ; [.303B.0020.0002.1691E] # BAMUM LETTER PHASE-D LUM
+1691F ; [.303C.0020.0002.1691F] # BAMUM LETTER PHASE-D NSIEEP
+16920 ; [.303D.0020.0002.16920] # BAMUM LETTER PHASE-D MBAA
+16921 ; [.303E.0020.0002.16921] # BAMUM LETTER PHASE-D KWAET
+16922 ; [.303F.0020.0002.16922] # BAMUM LETTER PHASE-D NYET
+16923 ; [.3040.0020.0002.16923] # BAMUM LETTER PHASE-D TEUAEN
+16924 ; [.3041.0020.0002.16924] # BAMUM LETTER PHASE-D SOT
+16925 ; [.3042.0020.0002.16925] # BAMUM LETTER PHASE-D YUWOQ
+16926 ; [.3043.0020.0002.16926] # BAMUM LETTER PHASE-D KEUM
+16927 ; [.3044.0020.0002.16927] # BAMUM LETTER PHASE-D RAEM
+16928 ; [.3045.0020.0002.16928] # BAMUM LETTER PHASE-D TEEEE
+16929 ; [.3046.0020.0002.16929] # BAMUM LETTER PHASE-D NGKEUAEQ
+1692A ; [.3047.0020.0002.1692A] # BAMUM LETTER PHASE-D MFEUAE
+1692B ; [.3048.0020.0002.1692B] # BAMUM LETTER PHASE-D NSIEET
+1692C ; [.3049.0020.0002.1692C] # BAMUM LETTER PHASE-D KEUP
+1692D ; [.304A.0020.0002.1692D] # BAMUM LETTER PHASE-D PIP
+1692E ; [.304B.0020.0002.1692E] # BAMUM LETTER PHASE-D PEUTAE
+1692F ; [.304C.0020.0002.1692F] # BAMUM LETTER PHASE-D NYUE
+16930 ; [.304D.0020.0002.16930] # BAMUM LETTER PHASE-D LET
+16931 ; [.304E.0020.0002.16931] # BAMUM LETTER PHASE-D NGGAAM
+16932 ; [.304F.0020.0002.16932] # BAMUM LETTER PHASE-D MFIEE
+16933 ; [.3050.0020.0002.16933] # BAMUM LETTER PHASE-D NGGWAEN
+16934 ; [.3051.0020.0002.16934] # BAMUM LETTER PHASE-D YUOM
+16935 ; [.3052.0020.0002.16935] # BAMUM LETTER PHASE-D PAP
+16936 ; [.3053.0020.0002.16936] # BAMUM LETTER PHASE-D YUOP
+16937 ; [.3054.0020.0002.16937] # BAMUM LETTER PHASE-D NDAM
+16938 ; [.3055.0020.0002.16938] # BAMUM LETTER PHASE-D NTEUM
+16939 ; [.3056.0020.0002.16939] # BAMUM LETTER PHASE-D SUAE
+1693A ; [.3057.0020.0002.1693A] # BAMUM LETTER PHASE-D KUN
+1693B ; [.3058.0020.0002.1693B] # BAMUM LETTER PHASE-D NGGEUX
+1693C ; [.3059.0020.0002.1693C] # BAMUM LETTER PHASE-D NGKIEE
+1693D ; [.305A.0020.0002.1693D] # BAMUM LETTER PHASE-D TUOT
+1693E ; [.305B.0020.0002.1693E] # BAMUM LETTER PHASE-D MEUN
+1693F ; [.305C.0020.0002.1693F] # BAMUM LETTER PHASE-D KUQ
+16940 ; [.305D.0020.0002.16940] # BAMUM LETTER PHASE-D NSUM
+16941 ; [.305E.0020.0002.16941] # BAMUM LETTER PHASE-D TEUN
+16942 ; [.305F.0020.0002.16942] # BAMUM LETTER PHASE-D MAENJET
+16943 ; [.3060.0020.0002.16943] # BAMUM LETTER PHASE-D NGGAP
+16944 ; [.3061.0020.0002.16944] # BAMUM LETTER PHASE-D LEUM
+16945 ; [.3062.0020.0002.16945] # BAMUM LETTER PHASE-D NGGUOM
+16946 ; [.3063.0020.0002.16946] # BAMUM LETTER PHASE-D NSHUT
+16947 ; [.3064.0020.0002.16947] # BAMUM LETTER PHASE-D NJUEQ
+16948 ; [.3065.0020.0002.16948] # BAMUM LETTER PHASE-D GHEUAE
+16949 ; [.3066.0020.0002.16949] # BAMUM LETTER PHASE-D KU
+1694A ; [.3067.0020.0002.1694A] # BAMUM LETTER PHASE-D REN OLD
+1694B ; [.3068.0020.0002.1694B] # BAMUM LETTER PHASE-D TAE
+1694C ; [.3069.0020.0002.1694C] # BAMUM LETTER PHASE-D TOQ
+1694D ; [.306A.0020.0002.1694D] # BAMUM LETTER PHASE-D NYI
+1694E ; [.306B.0020.0002.1694E] # BAMUM LETTER PHASE-D RII
+1694F ; [.306C.0020.0002.1694F] # BAMUM LETTER PHASE-D LEEEE
+16950 ; [.306D.0020.0002.16950] # BAMUM LETTER PHASE-D MEEEE
+16951 ; [.306E.0020.0002.16951] # BAMUM LETTER PHASE-D M
+16952 ; [.306F.0020.0002.16952] # BAMUM LETTER PHASE-D SUU
+16953 ; [.3070.0020.0002.16953] # BAMUM LETTER PHASE-D MU
+16954 ; [.3071.0020.0002.16954] # BAMUM LETTER PHASE-D SHII
+16955 ; [.3072.0020.0002.16955] # BAMUM LETTER PHASE-D SHEUX
+16956 ; [.3073.0020.0002.16956] # BAMUM LETTER PHASE-D KYEE
+16957 ; [.3074.0020.0002.16957] # BAMUM LETTER PHASE-D NU
+16958 ; [.3075.0020.0002.16958] # BAMUM LETTER PHASE-D SHU
+16959 ; [.3076.0020.0002.16959] # BAMUM LETTER PHASE-D NTEE
+1695A ; [.3077.0020.0002.1695A] # BAMUM LETTER PHASE-D PEE
+1695B ; [.3078.0020.0002.1695B] # BAMUM LETTER PHASE-D NI
+1695C ; [.3079.0020.0002.1695C] # BAMUM LETTER PHASE-D SHOQ
+1695D ; [.307A.0020.0002.1695D] # BAMUM LETTER PHASE-D PUQ
+1695E ; [.307B.0020.0002.1695E] # BAMUM LETTER PHASE-D MVOP
+1695F ; [.307C.0020.0002.1695F] # BAMUM LETTER PHASE-D LOQ
+16960 ; [.307D.0020.0002.16960] # BAMUM LETTER PHASE-D REN MUCH
+16961 ; [.307E.0020.0002.16961] # BAMUM LETTER PHASE-D TI
+16962 ; [.307F.0020.0002.16962] # BAMUM LETTER PHASE-D NTUU
+16963 ; [.3080.0020.0002.16963] # BAMUM LETTER PHASE-D MBAA SEVEN
+16964 ; [.3081.0020.0002.16964] # BAMUM LETTER PHASE-D SAQ
+16965 ; [.3082.0020.0002.16965] # BAMUM LETTER PHASE-D FAA
+16966 ; [.3083.0020.0002.16966] # BAMUM LETTER PHASE-E NDAP
+16967 ; [.3084.0020.0002.16967] # BAMUM LETTER PHASE-E TOON
+16968 ; [.3085.0020.0002.16968] # BAMUM LETTER PHASE-E MBEUM
+16969 ; [.3086.0020.0002.16969] # BAMUM LETTER PHASE-E LAP
+1696A ; [.3087.0020.0002.1696A] # BAMUM LETTER PHASE-E VOM
+1696B ; [.3088.0020.0002.1696B] # BAMUM LETTER PHASE-E LOON
+1696C ; [.3089.0020.0002.1696C] # BAMUM LETTER PHASE-E PAA
+1696D ; [.308A.0020.0002.1696D] # BAMUM LETTER PHASE-E SOM
+1696E ; [.308B.0020.0002.1696E] # BAMUM LETTER PHASE-E RAQ
+1696F ; [.308C.0020.0002.1696F] # BAMUM LETTER PHASE-E NSHUOP
+16970 ; [.308D.0020.0002.16970] # BAMUM LETTER PHASE-E NDUN
+16971 ; [.308E.0020.0002.16971] # BAMUM LETTER PHASE-E PUAE
+16972 ; [.308F.0020.0002.16972] # BAMUM LETTER PHASE-E TAM
+16973 ; [.3090.0020.0002.16973] # BAMUM LETTER PHASE-E NGKA
+16974 ; [.3091.0020.0002.16974] # BAMUM LETTER PHASE-E KPEUX
+16975 ; [.3092.0020.0002.16975] # BAMUM LETTER PHASE-E WUO
+16976 ; [.3093.0020.0002.16976] # BAMUM LETTER PHASE-E SEE
+16977 ; [.3094.0020.0002.16977] # BAMUM LETTER PHASE-E NGGEUAET
+16978 ; [.3095.0020.0002.16978] # BAMUM LETTER PHASE-E PAAM
+16979 ; [.3096.0020.0002.16979] # BAMUM LETTER PHASE-E TOO
+1697A ; [.3097.0020.0002.1697A] # BAMUM LETTER PHASE-E KUOP
+1697B ; [.3098.0020.0002.1697B] # BAMUM LETTER PHASE-E LOM
+1697C ; [.3099.0020.0002.1697C] # BAMUM LETTER PHASE-E NSHIEE
+1697D ; [.309A.0020.0002.1697D] # BAMUM LETTER PHASE-E NGOP
+1697E ; [.309B.0020.0002.1697E] # BAMUM LETTER PHASE-E MAEM
+1697F ; [.309C.0020.0002.1697F] # BAMUM LETTER PHASE-E NGKEUX
+16980 ; [.309D.0020.0002.16980] # BAMUM LETTER PHASE-E NGOQ
+16981 ; [.309E.0020.0002.16981] # BAMUM LETTER PHASE-E NSHUE
+16982 ; [.309F.0020.0002.16982] # BAMUM LETTER PHASE-E RIMGBA
+16983 ; [.30A0.0020.0002.16983] # BAMUM LETTER PHASE-E NJEUX
+16984 ; [.30A1.0020.0002.16984] # BAMUM LETTER PHASE-E PEEM
+16985 ; [.30A2.0020.0002.16985] # BAMUM LETTER PHASE-E SAA
+16986 ; [.30A3.0020.0002.16986] # BAMUM LETTER PHASE-E NGGURAE
+16987 ; [.30A4.0020.0002.16987] # BAMUM LETTER PHASE-E MGBA
+16988 ; [.30A5.0020.0002.16988] # BAMUM LETTER PHASE-E GHEUX
+16989 ; [.30A6.0020.0002.16989] # BAMUM LETTER PHASE-E NGKEUAEM
+1698A ; [.30A7.0020.0002.1698A] # BAMUM LETTER PHASE-E NJAEMLI
+1698B ; [.30A8.0020.0002.1698B] # BAMUM LETTER PHASE-E MAP
+1698C ; [.30A9.0020.0002.1698C] # BAMUM LETTER PHASE-E LOOT
+1698D ; [.30AA.0020.0002.1698D] # BAMUM LETTER PHASE-E NGGEEEE
+1698E ; [.30AB.0020.0002.1698E] # BAMUM LETTER PHASE-E NDIQ
+1698F ; [.30AC.0020.0002.1698F] # BAMUM LETTER PHASE-E TAEN NTEUM
+16990 ; [.30AD.0020.0002.16990] # BAMUM LETTER PHASE-E SET
+16991 ; [.30AE.0020.0002.16991] # BAMUM LETTER PHASE-E PUM
+16992 ; [.30AF.0020.0002.16992] # BAMUM LETTER PHASE-E NDAA SOFTNESS
+16993 ; [.30B0.0020.0002.16993] # BAMUM LETTER PHASE-E NGGUAESHAE NYAM
+16994 ; [.30B1.0020.0002.16994] # BAMUM LETTER PHASE-E YIEE
+16995 ; [.30B2.0020.0002.16995] # BAMUM LETTER PHASE-E GHEUN
+16996 ; [.30B3.0020.0002.16996] # BAMUM LETTER PHASE-E TUAE
+16997 ; [.30B4.0020.0002.16997] # BAMUM LETTER PHASE-E YEUAE
+16998 ; [.30B5.0020.0002.16998] # BAMUM LETTER PHASE-E PO
+16999 ; [.30B6.0020.0002.16999] # BAMUM LETTER PHASE-E TUMAE
+1699A ; [.30B7.0020.0002.1699A] # BAMUM LETTER PHASE-E KEUAE
+1699B ; [.30B8.0020.0002.1699B] # BAMUM LETTER PHASE-E SUAEN
+1699C ; [.30B9.0020.0002.1699C] # BAMUM LETTER PHASE-E TEUAEQ
+1699D ; [.30BA.0020.0002.1699D] # BAMUM LETTER PHASE-E VEUAE
+1699E ; [.30BB.0020.0002.1699E] # BAMUM LETTER PHASE-E WEUX
+1699F ; [.30BC.0020.0002.1699F] # BAMUM LETTER PHASE-E LAAM
+169A0 ; [.30BD.0020.0002.169A0] # BAMUM LETTER PHASE-E PU
+169A1 ; [.30BE.0020.0002.169A1] # BAMUM LETTER PHASE-E TAAQ
+169A2 ; [.30BF.0020.0002.169A2] # BAMUM LETTER PHASE-E GHAAMAE
+169A3 ; [.30C0.0020.0002.169A3] # BAMUM LETTER PHASE-E NGEUREUT
+169A4 ; [.30C1.0020.0002.169A4] # BAMUM LETTER PHASE-E SHEUAEQ
+169A5 ; [.30C2.0020.0002.169A5] # BAMUM LETTER PHASE-E MGBEN
+169A6 ; [.30C3.0020.0002.169A6] # BAMUM LETTER PHASE-E MBEE
+169A7 ; [.30C4.0020.0002.169A7] # BAMUM LETTER PHASE-E NZAQ
+169A8 ; [.30C5.0020.0002.169A8] # BAMUM LETTER PHASE-E NKOM
+169A9 ; [.30C6.0020.0002.169A9] # BAMUM LETTER PHASE-E GBET
+169AA ; [.30C7.0020.0002.169AA] # BAMUM LETTER PHASE-E TUM
+169AB ; [.30C8.0020.0002.169AB] # BAMUM LETTER PHASE-E KUET
+169AC ; [.30C9.0020.0002.169AC] # BAMUM LETTER PHASE-E YAP
+169AD ; [.30CA.0020.0002.169AD] # BAMUM LETTER PHASE-E NYI CLEAVER
+169AE ; [.30CB.0020.0002.169AE] # BAMUM LETTER PHASE-E YIT
+169AF ; [.30CC.0020.0002.169AF] # BAMUM LETTER PHASE-E MFEUQ
+169B0 ; [.30CD.0020.0002.169B0] # BAMUM LETTER PHASE-E NDIAQ
+169B1 ; [.30CE.0020.0002.169B1] # BAMUM LETTER PHASE-E PIEEQ
+169B2 ; [.30CF.0020.0002.169B2] # BAMUM LETTER PHASE-E YUEQ
+169B3 ; [.30D0.0020.0002.169B3] # BAMUM LETTER PHASE-E LEUAEM
+169B4 ; [.30D1.0020.0002.169B4] # BAMUM LETTER PHASE-E FUE
+169B5 ; [.30D2.0020.0002.169B5] # BAMUM LETTER PHASE-E GBEUX
+169B6 ; [.30D3.0020.0002.169B6] # BAMUM LETTER PHASE-E NGKUP
+169B7 ; [.30D4.0020.0002.169B7] # BAMUM LETTER PHASE-E KET
+169B8 ; [.30D5.0020.0002.169B8] # BAMUM LETTER PHASE-E MAE
+169B9 ; [.30D6.0020.0002.169B9] # BAMUM LETTER PHASE-E NGKAAMI
+169BA ; [.30D7.0020.0002.169BA] # BAMUM LETTER PHASE-E GHET
+169BB ; [.30D8.0020.0002.169BB] # BAMUM LETTER PHASE-E FA
+169BC ; [.30D9.0020.0002.169BC] # BAMUM LETTER PHASE-E NTUM
+169BD ; [.30DA.0020.0002.169BD] # BAMUM LETTER PHASE-E PEUT
+169BE ; [.30DB.0020.0002.169BE] # BAMUM LETTER PHASE-E YEUM
+169BF ; [.30DC.0020.0002.169BF] # BAMUM LETTER PHASE-E NGGEUAE
+169C0 ; [.30DD.0020.0002.169C0] # BAMUM LETTER PHASE-E NYI BETWEEN
+169C1 ; [.30DE.0020.0002.169C1] # BAMUM LETTER PHASE-E NZUQ
+169C2 ; [.30DF.0020.0002.169C2] # BAMUM LETTER PHASE-E POON
+169C3 ; [.30E0.0020.0002.169C3] # BAMUM LETTER PHASE-E MIEE
+169C4 ; [.30E1.0020.0002.169C4] # BAMUM LETTER PHASE-E FUET
+169C5 ; [.30E2.0020.0002.169C5] # BAMUM LETTER PHASE-E NAE
+169C6 ; [.30E3.0020.0002.169C6] # BAMUM LETTER PHASE-E MUAE
+169C7 ; [.30E4.0020.0002.169C7] # BAMUM LETTER PHASE-E GHEUAE
+169C8 ; [.30E5.0020.0002.169C8] # BAMUM LETTER PHASE-E FU I
+169C9 ; [.30E6.0020.0002.169C9] # BAMUM LETTER PHASE-E MVI
+169CA ; [.30E7.0020.0002.169CA] # BAMUM LETTER PHASE-E PUAQ
+169CB ; [.30E8.0020.0002.169CB] # BAMUM LETTER PHASE-E NGKUM
+169CC ; [.30E9.0020.0002.169CC] # BAMUM LETTER PHASE-E KUT
+169CD ; [.30EA.0020.0002.169CD] # BAMUM LETTER PHASE-E PIET
+169CE ; [.30EB.0020.0002.169CE] # BAMUM LETTER PHASE-E NTAP
+169CF ; [.30EC.0020.0002.169CF] # BAMUM LETTER PHASE-E YEUAET
+169D0 ; [.30ED.0020.0002.169D0] # BAMUM LETTER PHASE-E NGGUP
+169D1 ; [.30EE.0020.0002.169D1] # BAMUM LETTER PHASE-E PA PEOPLE
+169D2 ; [.30EF.0020.0002.169D2] # BAMUM LETTER PHASE-E FU CALL
+169D3 ; [.30F0.0020.0002.169D3] # BAMUM LETTER PHASE-E FOM
+169D4 ; [.30F1.0020.0002.169D4] # BAMUM LETTER PHASE-E NJEE
+169D5 ; [.30F2.0020.0002.169D5] # BAMUM LETTER PHASE-E A
+169D6 ; [.30F3.0020.0002.169D6] # BAMUM LETTER PHASE-E TOQ
+169D7 ; [.30F4.0020.0002.169D7] # BAMUM LETTER PHASE-E O
+169D8 ; [.30F5.0020.0002.169D8] # BAMUM LETTER PHASE-E I
+169D9 ; [.30F6.0020.0002.169D9] # BAMUM LETTER PHASE-E LAQ
+169DA ; [.30F7.0020.0002.169DA] # BAMUM LETTER PHASE-E PA PLURAL
+169DB ; [.30F8.0020.0002.169DB] # BAMUM LETTER PHASE-E TAA
+169DC ; [.30F9.0020.0002.169DC] # BAMUM LETTER PHASE-E TAQ
+169DD ; [.30FA.0020.0002.169DD] # BAMUM LETTER PHASE-E NDAA MY HOUSE
+169DE ; [.30FB.0020.0002.169DE] # BAMUM LETTER PHASE-E SHIQ
+169DF ; [.30FC.0020.0002.169DF] # BAMUM LETTER PHASE-E YEUX
+169E0 ; [.30FD.0020.0002.169E0] # BAMUM LETTER PHASE-E NGUAE
+169E1 ; [.30FE.0020.0002.169E1] # BAMUM LETTER PHASE-E YUAEN
+169E2 ; [.30FF.0020.0002.169E2] # BAMUM LETTER PHASE-E YOQ SWIMMING
+169E3 ; [.3100.0020.0002.169E3] # BAMUM LETTER PHASE-E YOQ COVER
+169E4 ; [.3101.0020.0002.169E4] # BAMUM LETTER PHASE-E YUQ
+169E5 ; [.3102.0020.0002.169E5] # BAMUM LETTER PHASE-E YUN
+169E6 ; [.3103.0020.0002.169E6] # BAMUM LETTER PHASE-E KEUX
+169E7 ; [.3104.0020.0002.169E7] # BAMUM LETTER PHASE-E PEUX
+169E8 ; [.3105.0020.0002.169E8] # BAMUM LETTER PHASE-E NJEE EPOCH
+169E9 ; [.3106.0020.0002.169E9] # BAMUM LETTER PHASE-E PUE
+169EA ; [.3107.0020.0002.169EA] # BAMUM LETTER PHASE-E WUE
+169EB ; [.3108.0020.0002.169EB] # BAMUM LETTER PHASE-E FEE
+169EC ; [.3109.0020.0002.169EC] # BAMUM LETTER PHASE-E VEE
+169ED ; [.310A.0020.0002.169ED] # BAMUM LETTER PHASE-E LU
+169EE ; [.310B.0020.0002.169EE] # BAMUM LETTER PHASE-E MI
+169EF ; [.310C.0020.0002.169EF] # BAMUM LETTER PHASE-E REUX
+169F0 ; [.310D.0020.0002.169F0] # BAMUM LETTER PHASE-E RAE
+169F1 ; [.310E.0020.0002.169F1] # BAMUM LETTER PHASE-E NGUAET
+169F2 ; [.310F.0020.0002.169F2] # BAMUM LETTER PHASE-E NGA
+169F3 ; [.3110.0020.0002.169F3] # BAMUM LETTER PHASE-E SHO
+169F4 ; [.3111.0020.0002.169F4] # BAMUM LETTER PHASE-E SHOQ
+169F5 ; [.3112.0020.0002.169F5] # BAMUM LETTER PHASE-E FU REMEDY
+169F6 ; [.3113.0020.0002.169F6] # BAMUM LETTER PHASE-E NA
+169F7 ; [.3114.0020.0002.169F7] # BAMUM LETTER PHASE-E PI
+169F8 ; [.3115.0020.0002.169F8] # BAMUM LETTER PHASE-E LOQ
+169F9 ; [.3116.0020.0002.169F9] # BAMUM LETTER PHASE-E KO
+169FA ; [.3117.0020.0002.169FA] # BAMUM LETTER PHASE-E MEN
+169FB ; [.3118.0020.0002.169FB] # BAMUM LETTER PHASE-E MA
+169FC ; [.3119.0020.0002.169FC] # BAMUM LETTER PHASE-E MAQ
+169FD ; [.311A.0020.0002.169FD] # BAMUM LETTER PHASE-E TEU
+169FE ; [.311B.0020.0002.169FE] # BAMUM LETTER PHASE-E KI
+169FF ; [.311C.0020.0002.169FF] # BAMUM LETTER PHASE-E MON
+16A00 ; [.311D.0020.0002.16A00] # BAMUM LETTER PHASE-E TEN
+16A01 ; [.311E.0020.0002.16A01] # BAMUM LETTER PHASE-E FAQ
+16A02 ; [.311F.0020.0002.16A02] # BAMUM LETTER PHASE-E GHOM
+16A03 ; [.3120.0020.0002.16A03] # BAMUM LETTER PHASE-F KA
+16A04 ; [.3121.0020.0002.16A04] # BAMUM LETTER PHASE-F U
+16A05 ; [.3122.0020.0002.16A05] # BAMUM LETTER PHASE-F KU
+16A06 ; [.3123.0020.0002.16A06] # BAMUM LETTER PHASE-F EE
+16A07 ; [.3124.0020.0002.16A07] # BAMUM LETTER PHASE-F REE
+16A08 ; [.3125.0020.0002.16A08] # BAMUM LETTER PHASE-F TAE
+16A09 ; [.3126.0020.0002.16A09] # BAMUM LETTER PHASE-F NYI
+16A0A ; [.3127.0020.0002.16A0A] # BAMUM LETTER PHASE-F LA
+16A0B ; [.3128.0020.0002.16A0B] # BAMUM LETTER PHASE-F RII
+16A0C ; [.3129.0020.0002.16A0C] # BAMUM LETTER PHASE-F RIEE
+16A0D ; [.312A.0020.0002.16A0D] # BAMUM LETTER PHASE-F MEEEE
+16A0E ; [.312B.0020.0002.16A0E] # BAMUM LETTER PHASE-F TAA
+16A0F ; [.312C.0020.0002.16A0F] # BAMUM LETTER PHASE-F NDAA
+16A10 ; [.312D.0020.0002.16A10] # BAMUM LETTER PHASE-F NJAEM
+16A11 ; [.312E.0020.0002.16A11] # BAMUM LETTER PHASE-F M
+16A12 ; [.312F.0020.0002.16A12] # BAMUM LETTER PHASE-F SUU
+16A13 ; [.3130.0020.0002.16A13] # BAMUM LETTER PHASE-F SHII
+16A14 ; [.3131.0020.0002.16A14] # BAMUM LETTER PHASE-F SI
+16A15 ; [.3132.0020.0002.16A15] # BAMUM LETTER PHASE-F SEUX
+16A16 ; [.3133.0020.0002.16A16] # BAMUM LETTER PHASE-F KYEE
+16A17 ; [.3134.0020.0002.16A17] # BAMUM LETTER PHASE-F KET
+16A18 ; [.3135.0020.0002.16A18] # BAMUM LETTER PHASE-F NUAE
+16A19 ; [.3136.0020.0002.16A19] # BAMUM LETTER PHASE-F NU
+16A1A ; [.3137.0020.0002.16A1A] # BAMUM LETTER PHASE-F NJUAE
+16A1B ; [.3138.0020.0002.16A1B] # BAMUM LETTER PHASE-F YOQ
+16A1C ; [.3139.0020.0002.16A1C] # BAMUM LETTER PHASE-F SHU
+16A1D ; [.313A.0020.0002.16A1D] # BAMUM LETTER PHASE-F YA
+16A1E ; [.313B.0020.0002.16A1E] # BAMUM LETTER PHASE-F NSHA
+16A1F ; [.313C.0020.0002.16A1F] # BAMUM LETTER PHASE-F PEUX
+16A20 ; [.313D.0020.0002.16A20] # BAMUM LETTER PHASE-F NTEE
+16A21 ; [.313E.0020.0002.16A21] # BAMUM LETTER PHASE-F WUE
+16A22 ; [.313F.0020.0002.16A22] # BAMUM LETTER PHASE-F PEE
+16A23 ; [.3140.0020.0002.16A23] # BAMUM LETTER PHASE-F RU
+16A24 ; [.3141.0020.0002.16A24] # BAMUM LETTER PHASE-F NI
+16A25 ; [.3142.0020.0002.16A25] # BAMUM LETTER PHASE-F REUX
+16A26 ; [.3143.0020.0002.16A26] # BAMUM LETTER PHASE-F KEN
+16A27 ; [.3144.0020.0002.16A27] # BAMUM LETTER PHASE-F NGKWAEN
+16A28 ; [.3145.0020.0002.16A28] # BAMUM LETTER PHASE-F NGGA
+16A29 ; [.3146.0020.0002.16A29] # BAMUM LETTER PHASE-F SHO
+16A2A ; [.3147.0020.0002.16A2A] # BAMUM LETTER PHASE-F PUAE
+16A2B ; [.3148.0020.0002.16A2B] # BAMUM LETTER PHASE-F FOM
+16A2C ; [.3149.0020.0002.16A2C] # BAMUM LETTER PHASE-F WA
+16A2D ; [.314A.0020.0002.16A2D] # BAMUM LETTER PHASE-F LI
+16A2E ; [.314B.0020.0002.16A2E] # BAMUM LETTER PHASE-F LOQ
+16A2F ; [.314C.0020.0002.16A2F] # BAMUM LETTER PHASE-F KO
+16A30 ; [.314D.0020.0002.16A30] # BAMUM LETTER PHASE-F MBEN
+16A31 ; [.314E.0020.0002.16A31] # BAMUM LETTER PHASE-F REN
+16A32 ; [.314F.0020.0002.16A32] # BAMUM LETTER PHASE-F MA
+16A33 ; [.3150.0020.0002.16A33] # BAMUM LETTER PHASE-F MO
+16A34 ; [.3151.0020.0002.16A34] # BAMUM LETTER PHASE-F MBAA
+16A35 ; [.3152.0020.0002.16A35] # BAMUM LETTER PHASE-F TET
+16A36 ; [.3153.0020.0002.16A36] # BAMUM LETTER PHASE-F KPA
+16A37 ; [.3154.0020.0002.16A37] # BAMUM LETTER PHASE-F SAMBA
+16A38 ; [.3155.0020.0002.16A38] # BAMUM LETTER PHASE-F VUEQ
+1100 ; [.3156.0020.0002.1100] # HANGUL CHOSEONG KIYEOK
+3131 ; [.3156.0020.0004.3131] # HANGUL LETTER KIYEOK
+3200 ; [*02FB.0020.0004.3200][.3156.0020.0004.3200][*02FC.0020.001F.3200] # PARENTHESIZED HANGUL KIYEOK
+3260 ; [.3156.0020.0006.3260] # CIRCLED HANGUL KIYEOK
+FFA1 ; [.3156.0020.0012.FFA1] # HALFWIDTH HANGUL LETTER KIYEOK
+320E ; [*02FB.0020.0004.320E][.3156.0020.0004.320E][.31D4.0020.0004.320E][*02FC.0020.001F.320E] # PARENTHESIZED HANGUL KIYEOK A
+326E ; [.3156.0020.0006.326E][.31D4.0020.0006.326E] # CIRCLED HANGUL KIYEOK A
+1101 ; [.3157.0020.0002.1101] # HANGUL CHOSEONG SSANGKIYEOK
+3132 ; [.3157.0020.0004.3132] # HANGUL LETTER SSANGKIYEOK
+FFA2 ; [.3157.0020.0012.FFA2] # HALFWIDTH HANGUL LETTER SSANGKIYEOK
+1102 ; [.3158.0020.0002.1102] # HANGUL CHOSEONG NIEUN
+3134 ; [.3158.0020.0004.3134] # HANGUL LETTER NIEUN
+3201 ; [*02FB.0020.0004.3201][.3158.0020.0004.3201][*02FC.0020.001F.3201] # PARENTHESIZED HANGUL NIEUN
+3261 ; [.3158.0020.0006.3261] # CIRCLED HANGUL NIEUN
+FFA4 ; [.3158.0020.0012.FFA4] # HALFWIDTH HANGUL LETTER NIEUN
+320F ; [*02FB.0020.0004.320F][.3158.0020.0004.320F][.31D4.0020.0004.320F][*02FC.0020.001F.320F] # PARENTHESIZED HANGUL NIEUN A
+326F ; [.3158.0020.0006.326F][.31D4.0020.0006.326F] # CIRCLED HANGUL NIEUN A
+1103 ; [.3159.0020.0002.1103] # HANGUL CHOSEONG TIKEUT
+3137 ; [.3159.0020.0004.3137] # HANGUL LETTER TIKEUT
+3202 ; [*02FB.0020.0004.3202][.3159.0020.0004.3202][*02FC.0020.001F.3202] # PARENTHESIZED HANGUL TIKEUT
+3262 ; [.3159.0020.0006.3262] # CIRCLED HANGUL TIKEUT
+FFA7 ; [.3159.0020.0012.FFA7] # HALFWIDTH HANGUL LETTER TIKEUT
+3210 ; [*02FB.0020.0004.3210][.3159.0020.0004.3210][.31D4.0020.0004.3210][*02FC.0020.001F.3210] # PARENTHESIZED HANGUL TIKEUT A
+3270 ; [.3159.0020.0006.3270][.31D4.0020.0006.3270] # CIRCLED HANGUL TIKEUT A
+1104 ; [.315A.0020.0002.1104] # HANGUL CHOSEONG SSANGTIKEUT
+3138 ; [.315A.0020.0004.3138] # HANGUL LETTER SSANGTIKEUT
+FFA8 ; [.315A.0020.0012.FFA8] # HALFWIDTH HANGUL LETTER SSANGTIKEUT
+1105 ; [.315B.0020.0002.1105] # HANGUL CHOSEONG RIEUL
+3139 ; [.315B.0020.0004.3139] # HANGUL LETTER RIEUL
+3203 ; [*02FB.0020.0004.3203][.315B.0020.0004.3203][*02FC.0020.001F.3203] # PARENTHESIZED HANGUL RIEUL
+3263 ; [.315B.0020.0006.3263] # CIRCLED HANGUL RIEUL
+FFA9 ; [.315B.0020.0012.FFA9] # HALFWIDTH HANGUL LETTER RIEUL
+3211 ; [*02FB.0020.0004.3211][.315B.0020.0004.3211][.31D4.0020.0004.3211][*02FC.0020.001F.3211] # PARENTHESIZED HANGUL RIEUL A
+3271 ; [.315B.0020.0006.3271][.31D4.0020.0006.3271] # CIRCLED HANGUL RIEUL A
+1106 ; [.315C.0020.0002.1106] # HANGUL CHOSEONG MIEUM
+3141 ; [.315C.0020.0004.3141] # HANGUL LETTER MIEUM
+3204 ; [*02FB.0020.0004.3204][.315C.0020.0004.3204][*02FC.0020.001F.3204] # PARENTHESIZED HANGUL MIEUM
+3264 ; [.315C.0020.0006.3264] # CIRCLED HANGUL MIEUM
+FFB1 ; [.315C.0020.0012.FFB1] # HALFWIDTH HANGUL LETTER MIEUM
+3212 ; [*02FB.0020.0004.3212][.315C.0020.0004.3212][.31D4.0020.0004.3212][*02FC.0020.001F.3212] # PARENTHESIZED HANGUL MIEUM A
+3272 ; [.315C.0020.0006.3272][.31D4.0020.0006.3272] # CIRCLED HANGUL MIEUM A
+1107 ; [.315D.0020.0002.1107] # HANGUL CHOSEONG PIEUP
+3142 ; [.315D.0020.0004.3142] # HANGUL LETTER PIEUP
+3205 ; [*02FB.0020.0004.3205][.315D.0020.0004.3205][*02FC.0020.001F.3205] # PARENTHESIZED HANGUL PIEUP
+3265 ; [.315D.0020.0006.3265] # CIRCLED HANGUL PIEUP
+FFB2 ; [.315D.0020.0012.FFB2] # HALFWIDTH HANGUL LETTER PIEUP
+3213 ; [*02FB.0020.0004.3213][.315D.0020.0004.3213][.31D4.0020.0004.3213][*02FC.0020.001F.3213] # PARENTHESIZED HANGUL PIEUP A
+3273 ; [.315D.0020.0006.3273][.31D4.0020.0006.3273] # CIRCLED HANGUL PIEUP A
+1108 ; [.315E.0020.0002.1108] # HANGUL CHOSEONG SSANGPIEUP
+3143 ; [.315E.0020.0004.3143] # HANGUL LETTER SSANGPIEUP
+FFB3 ; [.315E.0020.0012.FFB3] # HALFWIDTH HANGUL LETTER SSANGPIEUP
+1109 ; [.315F.0020.0002.1109] # HANGUL CHOSEONG SIOS
+3145 ; [.315F.0020.0004.3145] # HANGUL LETTER SIOS
+3206 ; [*02FB.0020.0004.3206][.315F.0020.0004.3206][*02FC.0020.001F.3206] # PARENTHESIZED HANGUL SIOS
+3266 ; [.315F.0020.0006.3266] # CIRCLED HANGUL SIOS
+FFB5 ; [.315F.0020.0012.FFB5] # HALFWIDTH HANGUL LETTER SIOS
+3214 ; [*02FB.0020.0004.3214][.315F.0020.0004.3214][.31D4.0020.0004.3214][*02FC.0020.001F.3214] # PARENTHESIZED HANGUL SIOS A
+3274 ; [.315F.0020.0006.3274][.31D4.0020.0006.3274] # CIRCLED HANGUL SIOS A
+110A ; [.3160.0020.0002.110A] # HANGUL CHOSEONG SSANGSIOS
+3146 ; [.3160.0020.0004.3146] # HANGUL LETTER SSANGSIOS
+FFB6 ; [.3160.0020.0012.FFB6] # HALFWIDTH HANGUL LETTER SSANGSIOS
+110B ; [.3161.0020.0002.110B] # HANGUL CHOSEONG IEUNG
+3147 ; [.3161.0020.0004.3147] # HANGUL LETTER IEUNG
+3207 ; [*02FB.0020.0004.3207][.3161.0020.0004.3207][*02FC.0020.001F.3207] # PARENTHESIZED HANGUL IEUNG
+3267 ; [.3161.0020.0006.3267] # CIRCLED HANGUL IEUNG
+FFB7 ; [.3161.0020.0012.FFB7] # HALFWIDTH HANGUL LETTER IEUNG
+3215 ; [*02FB.0020.0004.3215][.3161.0020.0004.3215][.31D4.0020.0004.3215][*02FC.0020.001F.3215] # PARENTHESIZED HANGUL IEUNG A
+3275 ; [.3161.0020.0006.3275][.31D4.0020.0006.3275] # CIRCLED HANGUL IEUNG A
+321D ; [*02FB.0020.0004.321D][.3161.0020.0004.321D][.31DC.0020.0004.321D][.3162.0020.0004.321D][.31D8.0020.0004.321D][.3235.0020.0004.321D][*02FC.0020.001F.321D] # PARENTHESIZED KOREAN CHARACTER OJEON
+321E ; [*02FB.0020.0004.321E][.3161.0020.0004.321E][.31DC.0020.0004.321E][.3168.0020.0004.321E][.31E1.0020.0004.321E][*02FC.0020.001F.321E] # PARENTHESIZED KOREAN CHARACTER O HU
+327E ; [.3161.0020.0006.327E][.31E1.0020.0006.327E] # CIRCLED HANGUL IEUNG U
+110C ; [.3162.0020.0002.110C] # HANGUL CHOSEONG CIEUC
+3148 ; [.3162.0020.0004.3148] # HANGUL LETTER CIEUC
+3208 ; [*02FB.0020.0004.3208][.3162.0020.0004.3208][*02FC.0020.001F.3208] # PARENTHESIZED HANGUL CIEUC
+3268 ; [.3162.0020.0006.3268] # CIRCLED HANGUL CIEUC
+FFB8 ; [.3162.0020.0012.FFB8] # HALFWIDTH HANGUL LETTER CIEUC
+3216 ; [*02FB.0020.0004.3216][.3162.0020.0004.3216][.31D4.0020.0004.3216][*02FC.0020.001F.3216] # PARENTHESIZED HANGUL CIEUC A
+3276 ; [.3162.0020.0006.3276][.31D4.0020.0006.3276] # CIRCLED HANGUL CIEUC A
+321C ; [*02FB.0020.0004.321C][.3162.0020.0004.321C][.31E1.0020.0004.321C][*02FC.0020.001F.321C] # PARENTHESIZED HANGUL CIEUC U
+327D ; [.3162.0020.0006.327D][.31E1.0020.0006.327D][.3161.0020.0006.327D][.31E7.0020.0006.327D] # CIRCLED KOREAN CHARACTER JUEUI
+110D ; [.3163.0020.0002.110D] # HANGUL CHOSEONG SSANGCIEUC
+3149 ; [.3163.0020.0004.3149] # HANGUL LETTER SSANGCIEUC
+FFB9 ; [.3163.0020.0012.FFB9] # HALFWIDTH HANGUL LETTER SSANGCIEUC
+110E ; [.3164.0020.0002.110E] # HANGUL CHOSEONG CHIEUCH
+314A ; [.3164.0020.0004.314A] # HANGUL LETTER CHIEUCH
+3209 ; [*02FB.0020.0004.3209][.3164.0020.0004.3209][*02FC.0020.001F.3209] # PARENTHESIZED HANGUL CHIEUCH
+3269 ; [.3164.0020.0006.3269] # CIRCLED HANGUL CHIEUCH
+FFBA ; [.3164.0020.0012.FFBA] # HALFWIDTH HANGUL LETTER CHIEUCH
+3217 ; [*02FB.0020.0004.3217][.3164.0020.0004.3217][.31D4.0020.0004.3217][*02FC.0020.001F.3217] # PARENTHESIZED HANGUL CHIEUCH A
+3277 ; [.3164.0020.0006.3277][.31D4.0020.0006.3277] # CIRCLED HANGUL CHIEUCH A
+327C ; [.3164.0020.0006.327C][.31D4.0020.0006.327C][.3241.0020.0006.327C][.3156.0020.0006.327C][.31DC.0020.0006.327C] # CIRCLED KOREAN CHARACTER CHAMKO
+110F ; [.3165.0020.0002.110F] # HANGUL CHOSEONG KHIEUKH
+314B ; [.3165.0020.0004.314B] # HANGUL LETTER KHIEUKH
+320A ; [*02FB.0020.0004.320A][.3165.0020.0004.320A][*02FC.0020.001F.320A] # PARENTHESIZED HANGUL KHIEUKH
+326A ; [.3165.0020.0006.326A] # CIRCLED HANGUL KHIEUKH
+FFBB ; [.3165.0020.0012.FFBB] # HALFWIDTH HANGUL LETTER KHIEUKH
+3218 ; [*02FB.0020.0004.3218][.3165.0020.0004.3218][.31D4.0020.0004.3218][*02FC.0020.001F.3218] # PARENTHESIZED HANGUL KHIEUKH A
+3278 ; [.3165.0020.0006.3278][.31D4.0020.0006.3278] # CIRCLED HANGUL KHIEUKH A
+1110 ; [.3166.0020.0002.1110] # HANGUL CHOSEONG THIEUTH
+314C ; [.3166.0020.0004.314C] # HANGUL LETTER THIEUTH
+320B ; [*02FB.0020.0004.320B][.3166.0020.0004.320B][*02FC.0020.001F.320B] # PARENTHESIZED HANGUL THIEUTH
+326B ; [.3166.0020.0006.326B] # CIRCLED HANGUL THIEUTH
+FFBC ; [.3166.0020.0012.FFBC] # HALFWIDTH HANGUL LETTER THIEUTH
+3219 ; [*02FB.0020.0004.3219][.3166.0020.0004.3219][.31D4.0020.0004.3219][*02FC.0020.001F.3219] # PARENTHESIZED HANGUL THIEUTH A
+3279 ; [.3166.0020.0006.3279][.31D4.0020.0006.3279] # CIRCLED HANGUL THIEUTH A
+1111 ; [.3167.0020.0002.1111] # HANGUL CHOSEONG PHIEUPH
+314D ; [.3167.0020.0004.314D] # HANGUL LETTER PHIEUPH
+320C ; [*02FB.0020.0004.320C][.3167.0020.0004.320C][*02FC.0020.001F.320C] # PARENTHESIZED HANGUL PHIEUPH
+326C ; [.3167.0020.0006.326C] # CIRCLED HANGUL PHIEUPH
+FFBD ; [.3167.0020.0012.FFBD] # HALFWIDTH HANGUL LETTER PHIEUPH
+321A ; [*02FB.0020.0004.321A][.3167.0020.0004.321A][.31D4.0020.0004.321A][*02FC.0020.001F.321A] # PARENTHESIZED HANGUL PHIEUPH A
+327A ; [.3167.0020.0006.327A][.31D4.0020.0006.327A] # CIRCLED HANGUL PHIEUPH A
+1112 ; [.3168.0020.0002.1112] # HANGUL CHOSEONG HIEUH
+314E ; [.3168.0020.0004.314E] # HANGUL LETTER HIEUH
+320D ; [*02FB.0020.0004.320D][.3168.0020.0004.320D][*02FC.0020.001F.320D] # PARENTHESIZED HANGUL HIEUH
+326D ; [.3168.0020.0006.326D] # CIRCLED HANGUL HIEUH
+FFBE ; [.3168.0020.0012.FFBE] # HALFWIDTH HANGUL LETTER HIEUH
+321B ; [*02FB.0020.0004.321B][.3168.0020.0004.321B][.31D4.0020.0004.321B][*02FC.0020.001F.321B] # PARENTHESIZED HANGUL HIEUH A
+327B ; [.3168.0020.0006.327B][.31D4.0020.0006.327B] # CIRCLED HANGUL HIEUH A
+1113 ; [.3169.0020.0002.1113] # HANGUL CHOSEONG NIEUN-KIYEOK
+1114 ; [.316A.0020.0002.1114] # HANGUL CHOSEONG SSANGNIEUN
+3165 ; [.316A.0020.0004.3165] # HANGUL LETTER SSANGNIEUN
+1115 ; [.316B.0020.0002.1115] # HANGUL CHOSEONG NIEUN-TIKEUT
+3166 ; [.316B.0020.0004.3166] # HANGUL LETTER NIEUN-TIKEUT
+1116 ; [.316C.0020.0002.1116] # HANGUL CHOSEONG NIEUN-PIEUP
+1117 ; [.316D.0020.0002.1117] # HANGUL CHOSEONG TIKEUT-KIYEOK
+1118 ; [.316E.0020.0002.1118] # HANGUL CHOSEONG RIEUL-NIEUN
+1119 ; [.316F.0020.0002.1119] # HANGUL CHOSEONG SSANGRIEUL
+111A ; [.3170.0020.0002.111A] # HANGUL CHOSEONG RIEUL-HIEUH
+3140 ; [.3170.0020.0004.3140] # HANGUL LETTER RIEUL-HIEUH
+FFB0 ; [.3170.0020.0012.FFB0] # HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+111B ; [.3171.0020.0002.111B] # HANGUL CHOSEONG KAPYEOUNRIEUL
+111C ; [.3172.0020.0002.111C] # HANGUL CHOSEONG MIEUM-PIEUP
+316E ; [.3172.0020.0004.316E] # HANGUL LETTER MIEUM-PIEUP
+111D ; [.3173.0020.0002.111D] # HANGUL CHOSEONG KAPYEOUNMIEUM
+3171 ; [.3173.0020.0004.3171] # HANGUL LETTER KAPYEOUNMIEUM
+111E ; [.3174.0020.0002.111E] # HANGUL CHOSEONG PIEUP-KIYEOK
+3172 ; [.3174.0020.0004.3172] # HANGUL LETTER PIEUP-KIYEOK
+111F ; [.3175.0020.0002.111F] # HANGUL CHOSEONG PIEUP-NIEUN
+1120 ; [.3176.0020.0002.1120] # HANGUL CHOSEONG PIEUP-TIKEUT
+3173 ; [.3176.0020.0004.3173] # HANGUL LETTER PIEUP-TIKEUT
+1121 ; [.3177.0020.0002.1121] # HANGUL CHOSEONG PIEUP-SIOS
+3144 ; [.3177.0020.0004.3144] # HANGUL LETTER PIEUP-SIOS
+FFB4 ; [.3177.0020.0012.FFB4] # HALFWIDTH HANGUL LETTER PIEUP-SIOS
+1122 ; [.3178.0020.0002.1122] # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
+3174 ; [.3178.0020.0004.3174] # HANGUL LETTER PIEUP-SIOS-KIYEOK
+1123 ; [.3179.0020.0002.1123] # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
+3175 ; [.3179.0020.0004.3175] # HANGUL LETTER PIEUP-SIOS-TIKEUT
+1124 ; [.317A.0020.0002.1124] # HANGUL CHOSEONG PIEUP-SIOS-PIEUP
+1125 ; [.317B.0020.0002.1125] # HANGUL CHOSEONG PIEUP-SSANGSIOS
+1126 ; [.317C.0020.0002.1126] # HANGUL CHOSEONG PIEUP-SIOS-CIEUC
+1127 ; [.317D.0020.0002.1127] # HANGUL CHOSEONG PIEUP-CIEUC
+3176 ; [.317D.0020.0004.3176] # HANGUL LETTER PIEUP-CIEUC
+1128 ; [.317E.0020.0002.1128] # HANGUL CHOSEONG PIEUP-CHIEUCH
+1129 ; [.317F.0020.0002.1129] # HANGUL CHOSEONG PIEUP-THIEUTH
+3177 ; [.317F.0020.0004.3177] # HANGUL LETTER PIEUP-THIEUTH
+112A ; [.3180.0020.0002.112A] # HANGUL CHOSEONG PIEUP-PHIEUPH
+112B ; [.3181.0020.0002.112B] # HANGUL CHOSEONG KAPYEOUNPIEUP
+3178 ; [.3181.0020.0004.3178] # HANGUL LETTER KAPYEOUNPIEUP
+112C ; [.3182.0020.0002.112C] # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
+3179 ; [.3182.0020.0004.3179] # HANGUL LETTER KAPYEOUNSSANGPIEUP
+112D ; [.3183.0020.0002.112D] # HANGUL CHOSEONG SIOS-KIYEOK
+317A ; [.3183.0020.0004.317A] # HANGUL LETTER SIOS-KIYEOK
+112E ; [.3184.0020.0002.112E] # HANGUL CHOSEONG SIOS-NIEUN
+317B ; [.3184.0020.0004.317B] # HANGUL LETTER SIOS-NIEUN
+112F ; [.3185.0020.0002.112F] # HANGUL CHOSEONG SIOS-TIKEUT
+317C ; [.3185.0020.0004.317C] # HANGUL LETTER SIOS-TIKEUT
+1130 ; [.3186.0020.0002.1130] # HANGUL CHOSEONG SIOS-RIEUL
+1131 ; [.3187.0020.0002.1131] # HANGUL CHOSEONG SIOS-MIEUM
+1132 ; [.3188.0020.0002.1132] # HANGUL CHOSEONG SIOS-PIEUP
+317D ; [.3188.0020.0004.317D] # HANGUL LETTER SIOS-PIEUP
+1133 ; [.3189.0020.0002.1133] # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
+1134 ; [.318A.0020.0002.1134] # HANGUL CHOSEONG SIOS-SSANGSIOS
+1135 ; [.318B.0020.0002.1135] # HANGUL CHOSEONG SIOS-IEUNG
+1136 ; [.318C.0020.0002.1136] # HANGUL CHOSEONG SIOS-CIEUC
+317E ; [.318C.0020.0004.317E] # HANGUL LETTER SIOS-CIEUC
+1137 ; [.318D.0020.0002.1137] # HANGUL CHOSEONG SIOS-CHIEUCH
+1138 ; [.318E.0020.0002.1138] # HANGUL CHOSEONG SIOS-KHIEUKH
+1139 ; [.318F.0020.0002.1139] # HANGUL CHOSEONG SIOS-THIEUTH
+113A ; [.3190.0020.0002.113A] # HANGUL CHOSEONG SIOS-PHIEUPH
+113B ; [.3191.0020.0002.113B] # HANGUL CHOSEONG SIOS-HIEUH
+113C ; [.3192.0020.0002.113C] # HANGUL CHOSEONG CHITUEUMSIOS
+113D ; [.3193.0020.0002.113D] # HANGUL CHOSEONG CHITUEUMSSANGSIOS
+113E ; [.3194.0020.0002.113E] # HANGUL CHOSEONG CEONGCHIEUMSIOS
+113F ; [.3195.0020.0002.113F] # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
+1140 ; [.3196.0020.0002.1140] # HANGUL CHOSEONG PANSIOS
+317F ; [.3196.0020.0004.317F] # HANGUL LETTER PANSIOS
+1141 ; [.3197.0020.0002.1141] # HANGUL CHOSEONG IEUNG-KIYEOK
+1142 ; [.3198.0020.0002.1142] # HANGUL CHOSEONG IEUNG-TIKEUT
+1143 ; [.3199.0020.0002.1143] # HANGUL CHOSEONG IEUNG-MIEUM
+1144 ; [.319A.0020.0002.1144] # HANGUL CHOSEONG IEUNG-PIEUP
+1145 ; [.319B.0020.0002.1145] # HANGUL CHOSEONG IEUNG-SIOS
+1146 ; [.319C.0020.0002.1146] # HANGUL CHOSEONG IEUNG-PANSIOS
+1147 ; [.319D.0020.0002.1147] # HANGUL CHOSEONG SSANGIEUNG
+3180 ; [.319D.0020.0004.3180] # HANGUL LETTER SSANGIEUNG
+1148 ; [.319E.0020.0002.1148] # HANGUL CHOSEONG IEUNG-CIEUC
+1149 ; [.319F.0020.0002.1149] # HANGUL CHOSEONG IEUNG-CHIEUCH
+114A ; [.31A0.0020.0002.114A] # HANGUL CHOSEONG IEUNG-THIEUTH
+114B ; [.31A1.0020.0002.114B] # HANGUL CHOSEONG IEUNG-PHIEUPH
+114C ; [.31A2.0020.0002.114C] # HANGUL CHOSEONG YESIEUNG
+3181 ; [.31A2.0020.0004.3181] # HANGUL LETTER YESIEUNG
+114D ; [.31A3.0020.0002.114D] # HANGUL CHOSEONG CIEUC-IEUNG
+114E ; [.31A4.0020.0002.114E] # HANGUL CHOSEONG CHITUEUMCIEUC
+114F ; [.31A5.0020.0002.114F] # HANGUL CHOSEONG CHITUEUMSSANGCIEUC
+1150 ; [.31A6.0020.0002.1150] # HANGUL CHOSEONG CEONGCHIEUMCIEUC
+1151 ; [.31A7.0020.0002.1151] # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
+1152 ; [.31A8.0020.0002.1152] # HANGUL CHOSEONG CHIEUCH-KHIEUKH
+1153 ; [.31A9.0020.0002.1153] # HANGUL CHOSEONG CHIEUCH-HIEUH
+1154 ; [.31AA.0020.0002.1154] # HANGUL CHOSEONG CHITUEUMCHIEUCH
+1155 ; [.31AB.0020.0002.1155] # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
+1156 ; [.31AC.0020.0002.1156] # HANGUL CHOSEONG PHIEUPH-PIEUP
+1157 ; [.31AD.0020.0002.1157] # HANGUL CHOSEONG KAPYEOUNPHIEUPH
+3184 ; [.31AD.0020.0004.3184] # HANGUL LETTER KAPYEOUNPHIEUPH
+1158 ; [.31AE.0020.0002.1158] # HANGUL CHOSEONG SSANGHIEUH
+3185 ; [.31AE.0020.0004.3185] # HANGUL LETTER SSANGHIEUH
+1159 ; [.31AF.0020.0002.1159] # HANGUL CHOSEONG YEORINHIEUH
+3186 ; [.31AF.0020.0004.3186] # HANGUL LETTER YEORINHIEUH
+115A ; [.31B0.0020.0002.115A] # HANGUL CHOSEONG KIYEOK-TIKEUT
+115B ; [.31B1.0020.0002.115B] # HANGUL CHOSEONG NIEUN-SIOS
+115C ; [.31B2.0020.0002.115C] # HANGUL CHOSEONG NIEUN-CIEUC
+115D ; [.31B3.0020.0002.115D] # HANGUL CHOSEONG NIEUN-HIEUH
+115E ; [.31B4.0020.0002.115E] # HANGUL CHOSEONG TIKEUT-RIEUL
+A960 ; [.31B5.0020.0002.A960] # HANGUL CHOSEONG TIKEUT-MIEUM
+A961 ; [.31B6.0020.0002.A961] # HANGUL CHOSEONG TIKEUT-PIEUP
+A962 ; [.31B7.0020.0002.A962] # HANGUL CHOSEONG TIKEUT-SIOS
+A963 ; [.31B8.0020.0002.A963] # HANGUL CHOSEONG TIKEUT-CIEUC
+A964 ; [.31B9.0020.0002.A964] # HANGUL CHOSEONG RIEUL-KIYEOK
+A965 ; [.31BA.0020.0002.A965] # HANGUL CHOSEONG RIEUL-SSANGKIYEOK
+A966 ; [.31BB.0020.0002.A966] # HANGUL CHOSEONG RIEUL-TIKEUT
+A967 ; [.31BC.0020.0002.A967] # HANGUL CHOSEONG RIEUL-SSANGTIKEUT
+A968 ; [.31BD.0020.0002.A968] # HANGUL CHOSEONG RIEUL-MIEUM
+A969 ; [.31BE.0020.0002.A969] # HANGUL CHOSEONG RIEUL-PIEUP
+A96A ; [.31BF.0020.0002.A96A] # HANGUL CHOSEONG RIEUL-SSANGPIEUP
+A96B ; [.31C0.0020.0002.A96B] # HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP
+A96C ; [.31C1.0020.0002.A96C] # HANGUL CHOSEONG RIEUL-SIOS
+A96D ; [.31C2.0020.0002.A96D] # HANGUL CHOSEONG RIEUL-CIEUC
+A96E ; [.31C3.0020.0002.A96E] # HANGUL CHOSEONG RIEUL-KHIEUKH
+A96F ; [.31C4.0020.0002.A96F] # HANGUL CHOSEONG MIEUM-KIYEOK
+A970 ; [.31C5.0020.0002.A970] # HANGUL CHOSEONG MIEUM-TIKEUT
+A971 ; [.31C6.0020.0002.A971] # HANGUL CHOSEONG MIEUM-SIOS
+A972 ; [.31C7.0020.0002.A972] # HANGUL CHOSEONG PIEUP-SIOS-THIEUTH
+A973 ; [.31C8.0020.0002.A973] # HANGUL CHOSEONG PIEUP-KHIEUKH
+A974 ; [.31C9.0020.0002.A974] # HANGUL CHOSEONG PIEUP-HIEUH
+A975 ; [.31CA.0020.0002.A975] # HANGUL CHOSEONG SSANGSIOS-PIEUP
+A976 ; [.31CB.0020.0002.A976] # HANGUL CHOSEONG IEUNG-RIEUL
+A977 ; [.31CC.0020.0002.A977] # HANGUL CHOSEONG IEUNG-HIEUH
+A978 ; [.31CD.0020.0002.A978] # HANGUL CHOSEONG SSANGCIEUC-HIEUH
+A979 ; [.31CE.0020.0002.A979] # HANGUL CHOSEONG SSANGTHIEUTH
+A97A ; [.31CF.0020.0002.A97A] # HANGUL CHOSEONG PHIEUPH-HIEUH
+A97B ; [.31D0.0020.0002.A97B] # HANGUL CHOSEONG HIEUH-SIOS
+A97C ; [.31D1.0020.0002.A97C] # HANGUL CHOSEONG SSANGYEORINHIEUH
+115F ; [.31D2.0020.0002.115F] # HANGUL CHOSEONG FILLER
+1160 ; [.31D3.0020.0002.1160] # HANGUL JUNGSEONG FILLER
+3164 ; [.31D3.0020.0004.3164] # HANGUL FILLER
+FFA0 ; [.31D3.0020.0012.FFA0] # HALFWIDTH HANGUL FILLER
+1161 ; [.31D4.0020.0002.1161] # HANGUL JUNGSEONG A
+314F ; [.31D4.0020.0004.314F] # HANGUL LETTER A
+FFC2 ; [.31D4.0020.0012.FFC2] # HALFWIDTH HANGUL LETTER A
+1162 ; [.31D5.0020.0002.1162] # HANGUL JUNGSEONG AE
+3150 ; [.31D5.0020.0004.3150] # HANGUL LETTER AE
+FFC3 ; [.31D5.0020.0012.FFC3] # HALFWIDTH HANGUL LETTER AE
+1163 ; [.31D6.0020.0002.1163] # HANGUL JUNGSEONG YA
+3151 ; [.31D6.0020.0004.3151] # HANGUL LETTER YA
+FFC4 ; [.31D6.0020.0012.FFC4] # HALFWIDTH HANGUL LETTER YA
+1164 ; [.31D7.0020.0002.1164] # HANGUL JUNGSEONG YAE
+3152 ; [.31D7.0020.0004.3152] # HANGUL LETTER YAE
+FFC5 ; [.31D7.0020.0012.FFC5] # HALFWIDTH HANGUL LETTER YAE
+1165 ; [.31D8.0020.0002.1165] # HANGUL JUNGSEONG EO
+3153 ; [.31D8.0020.0004.3153] # HANGUL LETTER EO
+FFC6 ; [.31D8.0020.0012.FFC6] # HALFWIDTH HANGUL LETTER EO
+1166 ; [.31D9.0020.0002.1166] # HANGUL JUNGSEONG E
+3154 ; [.31D9.0020.0004.3154] # HANGUL LETTER E
+FFC7 ; [.31D9.0020.0012.FFC7] # HALFWIDTH HANGUL LETTER E
+1167 ; [.31DA.0020.0002.1167] # HANGUL JUNGSEONG YEO
+3155 ; [.31DA.0020.0004.3155] # HANGUL LETTER YEO
+FFCA ; [.31DA.0020.0012.FFCA] # HALFWIDTH HANGUL LETTER YEO
+1168 ; [.31DB.0020.0002.1168] # HANGUL JUNGSEONG YE
+3156 ; [.31DB.0020.0004.3156] # HANGUL LETTER YE
+FFCB ; [.31DB.0020.0012.FFCB] # HALFWIDTH HANGUL LETTER YE
+1169 ; [.31DC.0020.0002.1169] # HANGUL JUNGSEONG O
+3157 ; [.31DC.0020.0004.3157] # HANGUL LETTER O
+FFCC ; [.31DC.0020.0012.FFCC] # HALFWIDTH HANGUL LETTER O
+116A ; [.31DD.0020.0002.116A] # HANGUL JUNGSEONG WA
+3158 ; [.31DD.0020.0004.3158] # HANGUL LETTER WA
+FFCD ; [.31DD.0020.0012.FFCD] # HALFWIDTH HANGUL LETTER WA
+116B ; [.31DE.0020.0002.116B] # HANGUL JUNGSEONG WAE
+3159 ; [.31DE.0020.0004.3159] # HANGUL LETTER WAE
+FFCE ; [.31DE.0020.0012.FFCE] # HALFWIDTH HANGUL LETTER WAE
+116C ; [.31DF.0020.0002.116C] # HANGUL JUNGSEONG OE
+315A ; [.31DF.0020.0004.315A] # HANGUL LETTER OE
+FFCF ; [.31DF.0020.0012.FFCF] # HALFWIDTH HANGUL LETTER OE
+116D ; [.31E0.0020.0002.116D] # HANGUL JUNGSEONG YO
+315B ; [.31E0.0020.0004.315B] # HANGUL LETTER YO
+FFD2 ; [.31E0.0020.0012.FFD2] # HALFWIDTH HANGUL LETTER YO
+116E ; [.31E1.0020.0002.116E] # HANGUL JUNGSEONG U
+315C ; [.31E1.0020.0004.315C] # HANGUL LETTER U
+FFD3 ; [.31E1.0020.0012.FFD3] # HALFWIDTH HANGUL LETTER U
+116F ; [.31E2.0020.0002.116F] # HANGUL JUNGSEONG WEO
+315D ; [.31E2.0020.0004.315D] # HANGUL LETTER WEO
+FFD4 ; [.31E2.0020.0012.FFD4] # HALFWIDTH HANGUL LETTER WEO
+1170 ; [.31E3.0020.0002.1170] # HANGUL JUNGSEONG WE
+315E ; [.31E3.0020.0004.315E] # HANGUL LETTER WE
+FFD5 ; [.31E3.0020.0012.FFD5] # HALFWIDTH HANGUL LETTER WE
+1171 ; [.31E4.0020.0002.1171] # HANGUL JUNGSEONG WI
+315F ; [.31E4.0020.0004.315F] # HANGUL LETTER WI
+FFD6 ; [.31E4.0020.0012.FFD6] # HALFWIDTH HANGUL LETTER WI
+1172 ; [.31E5.0020.0002.1172] # HANGUL JUNGSEONG YU
+3160 ; [.31E5.0020.0004.3160] # HANGUL LETTER YU
+FFD7 ; [.31E5.0020.0012.FFD7] # HALFWIDTH HANGUL LETTER YU
+1173 ; [.31E6.0020.0002.1173] # HANGUL JUNGSEONG EU
+3161 ; [.31E6.0020.0004.3161] # HANGUL LETTER EU
+FFDA ; [.31E6.0020.0012.FFDA] # HALFWIDTH HANGUL LETTER EU
+1174 ; [.31E7.0020.0002.1174] # HANGUL JUNGSEONG YI
+3162 ; [.31E7.0020.0004.3162] # HANGUL LETTER YI
+FFDB ; [.31E7.0020.0012.FFDB] # HALFWIDTH HANGUL LETTER YI
+1175 ; [.31E8.0020.0002.1175] # HANGUL JUNGSEONG I
+3163 ; [.31E8.0020.0004.3163] # HANGUL LETTER I
+FFDC ; [.31E8.0020.0012.FFDC] # HALFWIDTH HANGUL LETTER I
+1176 ; [.31E9.0020.0002.1176] # HANGUL JUNGSEONG A-O
+1177 ; [.31EA.0020.0002.1177] # HANGUL JUNGSEONG A-U
+1178 ; [.31EB.0020.0002.1178] # HANGUL JUNGSEONG YA-O
+1179 ; [.31EC.0020.0002.1179] # HANGUL JUNGSEONG YA-YO
+117A ; [.31ED.0020.0002.117A] # HANGUL JUNGSEONG EO-O
+117B ; [.31EE.0020.0002.117B] # HANGUL JUNGSEONG EO-U
+117C ; [.31EF.0020.0002.117C] # HANGUL JUNGSEONG EO-EU
+117D ; [.31F0.0020.0002.117D] # HANGUL JUNGSEONG YEO-O
+117E ; [.31F1.0020.0002.117E] # HANGUL JUNGSEONG YEO-U
+117F ; [.31F2.0020.0002.117F] # HANGUL JUNGSEONG O-EO
+1180 ; [.31F3.0020.0002.1180] # HANGUL JUNGSEONG O-E
+1181 ; [.31F4.0020.0002.1181] # HANGUL JUNGSEONG O-YE
+1182 ; [.31F5.0020.0002.1182] # HANGUL JUNGSEONG O-O
+1183 ; [.31F6.0020.0002.1183] # HANGUL JUNGSEONG O-U
+1184 ; [.31F7.0020.0002.1184] # HANGUL JUNGSEONG YO-YA
+3187 ; [.31F7.0020.0004.3187] # HANGUL LETTER YO-YA
+1185 ; [.31F8.0020.0002.1185] # HANGUL JUNGSEONG YO-YAE
+3188 ; [.31F8.0020.0004.3188] # HANGUL LETTER YO-YAE
+1186 ; [.31F9.0020.0002.1186] # HANGUL JUNGSEONG YO-YEO
+1187 ; [.31FA.0020.0002.1187] # HANGUL JUNGSEONG YO-O
+1188 ; [.31FB.0020.0002.1188] # HANGUL JUNGSEONG YO-I
+3189 ; [.31FB.0020.0004.3189] # HANGUL LETTER YO-I
+1189 ; [.31FC.0020.0002.1189] # HANGUL JUNGSEONG U-A
+118A ; [.31FD.0020.0002.118A] # HANGUL JUNGSEONG U-AE
+118B ; [.31FE.0020.0002.118B] # HANGUL JUNGSEONG U-EO-EU
+118C ; [.31FF.0020.0002.118C] # HANGUL JUNGSEONG U-YE
+118D ; [.3200.0020.0002.118D] # HANGUL JUNGSEONG U-U
+118E ; [.3201.0020.0002.118E] # HANGUL JUNGSEONG YU-A
+118F ; [.3202.0020.0002.118F] # HANGUL JUNGSEONG YU-EO
+1190 ; [.3203.0020.0002.1190] # HANGUL JUNGSEONG YU-E
+1191 ; [.3204.0020.0002.1191] # HANGUL JUNGSEONG YU-YEO
+318A ; [.3204.0020.0004.318A] # HANGUL LETTER YU-YEO
+1192 ; [.3205.0020.0002.1192] # HANGUL JUNGSEONG YU-YE
+318B ; [.3205.0020.0004.318B] # HANGUL LETTER YU-YE
+1193 ; [.3206.0020.0002.1193] # HANGUL JUNGSEONG YU-U
+1194 ; [.3207.0020.0002.1194] # HANGUL JUNGSEONG YU-I
+318C ; [.3207.0020.0004.318C] # HANGUL LETTER YU-I
+1195 ; [.3208.0020.0002.1195] # HANGUL JUNGSEONG EU-U
+1196 ; [.3209.0020.0002.1196] # HANGUL JUNGSEONG EU-EU
+1197 ; [.320A.0020.0002.1197] # HANGUL JUNGSEONG YI-U
+1198 ; [.320B.0020.0002.1198] # HANGUL JUNGSEONG I-A
+1199 ; [.320C.0020.0002.1199] # HANGUL JUNGSEONG I-YA
+119A ; [.320D.0020.0002.119A] # HANGUL JUNGSEONG I-O
+119B ; [.320E.0020.0002.119B] # HANGUL JUNGSEONG I-U
+119C ; [.320F.0020.0002.119C] # HANGUL JUNGSEONG I-EU
+119D ; [.3210.0020.0002.119D] # HANGUL JUNGSEONG I-ARAEA
+119E ; [.3211.0020.0002.119E] # HANGUL JUNGSEONG ARAEA
+318D ; [.3211.0020.0004.318D] # HANGUL LETTER ARAEA
+119F ; [.3212.0020.0002.119F] # HANGUL JUNGSEONG ARAEA-EO
+11A0 ; [.3213.0020.0002.11A0] # HANGUL JUNGSEONG ARAEA-U
+11A1 ; [.3214.0020.0002.11A1] # HANGUL JUNGSEONG ARAEA-I
+318E ; [.3214.0020.0004.318E] # HANGUL LETTER ARAEAE
+11A2 ; [.3215.0020.0002.11A2] # HANGUL JUNGSEONG SSANGARAEA
+11A3 ; [.3216.0020.0002.11A3] # HANGUL JUNGSEONG A-EU
+11A4 ; [.3217.0020.0002.11A4] # HANGUL JUNGSEONG YA-U
+11A5 ; [.3218.0020.0002.11A5] # HANGUL JUNGSEONG YEO-YA
+11A6 ; [.3219.0020.0002.11A6] # HANGUL JUNGSEONG O-YA
+11A7 ; [.321A.0020.0002.11A7] # HANGUL JUNGSEONG O-YAE
+D7B0 ; [.321B.0020.0002.D7B0] # HANGUL JUNGSEONG O-YEO
+D7B1 ; [.321C.0020.0002.D7B1] # HANGUL JUNGSEONG O-O-I
+D7B2 ; [.321D.0020.0002.D7B2] # HANGUL JUNGSEONG YO-A
+D7B3 ; [.321E.0020.0002.D7B3] # HANGUL JUNGSEONG YO-AE
+D7B4 ; [.321F.0020.0002.D7B4] # HANGUL JUNGSEONG YO-EO
+D7B5 ; [.3220.0020.0002.D7B5] # HANGUL JUNGSEONG U-YEO
+D7B6 ; [.3221.0020.0002.D7B6] # HANGUL JUNGSEONG U-I-I
+D7B7 ; [.3222.0020.0002.D7B7] # HANGUL JUNGSEONG YU-AE
+D7B8 ; [.3223.0020.0002.D7B8] # HANGUL JUNGSEONG YU-O
+D7B9 ; [.3224.0020.0002.D7B9] # HANGUL JUNGSEONG EU-A
+D7BA ; [.3225.0020.0002.D7BA] # HANGUL JUNGSEONG EU-EO
+D7BB ; [.3226.0020.0002.D7BB] # HANGUL JUNGSEONG EU-E
+D7BC ; [.3227.0020.0002.D7BC] # HANGUL JUNGSEONG EU-O
+D7BD ; [.3228.0020.0002.D7BD] # HANGUL JUNGSEONG I-YA-O
+D7BE ; [.3229.0020.0002.D7BE] # HANGUL JUNGSEONG I-YAE
+D7BF ; [.322A.0020.0002.D7BF] # HANGUL JUNGSEONG I-YEO
+D7C0 ; [.322B.0020.0002.D7C0] # HANGUL JUNGSEONG I-YE
+D7C1 ; [.322C.0020.0002.D7C1] # HANGUL JUNGSEONG I-O-I
+D7C2 ; [.322D.0020.0002.D7C2] # HANGUL JUNGSEONG I-YO
+D7C3 ; [.322E.0020.0002.D7C3] # HANGUL JUNGSEONG I-YU
+D7C4 ; [.322F.0020.0002.D7C4] # HANGUL JUNGSEONG I-I
+D7C5 ; [.3230.0020.0002.D7C5] # HANGUL JUNGSEONG ARAEA-A
+D7C6 ; [.3231.0020.0002.D7C6] # HANGUL JUNGSEONG ARAEA-E
+11A8 ; [.3232.0020.0002.11A8] # HANGUL JONGSEONG KIYEOK
+11A9 ; [.3233.0020.0002.11A9] # HANGUL JONGSEONG SSANGKIYEOK
+11AA ; [.3234.0020.0002.11AA] # HANGUL JONGSEONG KIYEOK-SIOS
+3133 ; [.3234.0020.0004.3133] # HANGUL LETTER KIYEOK-SIOS
+FFA3 ; [.3234.0020.0012.FFA3] # HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+11AB ; [.3235.0020.0002.11AB] # HANGUL JONGSEONG NIEUN
+11AC ; [.3236.0020.0002.11AC] # HANGUL JONGSEONG NIEUN-CIEUC
+3135 ; [.3236.0020.0004.3135] # HANGUL LETTER NIEUN-CIEUC
+FFA5 ; [.3236.0020.0012.FFA5] # HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+11AD ; [.3237.0020.0002.11AD] # HANGUL JONGSEONG NIEUN-HIEUH
+3136 ; [.3237.0020.0004.3136] # HANGUL LETTER NIEUN-HIEUH
+FFA6 ; [.3237.0020.0012.FFA6] # HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+11AE ; [.3238.0020.0002.11AE] # HANGUL JONGSEONG TIKEUT
+11AF ; [.3239.0020.0002.11AF] # HANGUL JONGSEONG RIEUL
+11B0 ; [.323A.0020.0002.11B0] # HANGUL JONGSEONG RIEUL-KIYEOK
+313A ; [.323A.0020.0004.313A] # HANGUL LETTER RIEUL-KIYEOK
+FFAA ; [.323A.0020.0012.FFAA] # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+11B1 ; [.323B.0020.0002.11B1] # HANGUL JONGSEONG RIEUL-MIEUM
+313B ; [.323B.0020.0004.313B] # HANGUL LETTER RIEUL-MIEUM
+FFAB ; [.323B.0020.0012.FFAB] # HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+11B2 ; [.323C.0020.0002.11B2] # HANGUL JONGSEONG RIEUL-PIEUP
+313C ; [.323C.0020.0004.313C] # HANGUL LETTER RIEUL-PIEUP
+FFAC ; [.323C.0020.0012.FFAC] # HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+11B3 ; [.323D.0020.0002.11B3] # HANGUL JONGSEONG RIEUL-SIOS
+313D ; [.323D.0020.0004.313D] # HANGUL LETTER RIEUL-SIOS
+FFAD ; [.323D.0020.0012.FFAD] # HALFWIDTH HANGUL LETTER RIEUL-SIOS
+11B4 ; [.323E.0020.0002.11B4] # HANGUL JONGSEONG RIEUL-THIEUTH
+313E ; [.323E.0020.0004.313E] # HANGUL LETTER RIEUL-THIEUTH
+FFAE ; [.323E.0020.0012.FFAE] # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+11B5 ; [.323F.0020.0002.11B5] # HANGUL JONGSEONG RIEUL-PHIEUPH
+313F ; [.323F.0020.0004.313F] # HANGUL LETTER RIEUL-PHIEUPH
+FFAF ; [.323F.0020.0012.FFAF] # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+11B6 ; [.3240.0020.0002.11B6] # HANGUL JONGSEONG RIEUL-HIEUH
+11B7 ; [.3241.0020.0002.11B7] # HANGUL JONGSEONG MIEUM
+11B8 ; [.3242.0020.0002.11B8] # HANGUL JONGSEONG PIEUP
+11B9 ; [.3243.0020.0002.11B9] # HANGUL JONGSEONG PIEUP-SIOS
+11BA ; [.3244.0020.0002.11BA] # HANGUL JONGSEONG SIOS
+11BB ; [.3245.0020.0002.11BB] # HANGUL JONGSEONG SSANGSIOS
+11BC ; [.3246.0020.0002.11BC] # HANGUL JONGSEONG IEUNG
+11BD ; [.3247.0020.0002.11BD] # HANGUL JONGSEONG CIEUC
+11BE ; [.3248.0020.0002.11BE] # HANGUL JONGSEONG CHIEUCH
+11BF ; [.3249.0020.0002.11BF] # HANGUL JONGSEONG KHIEUKH
+11C0 ; [.324A.0020.0002.11C0] # HANGUL JONGSEONG THIEUTH
+11C1 ; [.324B.0020.0002.11C1] # HANGUL JONGSEONG PHIEUPH
+11C2 ; [.324C.0020.0002.11C2] # HANGUL JONGSEONG HIEUH
+11C3 ; [.324D.0020.0002.11C3] # HANGUL JONGSEONG KIYEOK-RIEUL
+11C4 ; [.324E.0020.0002.11C4] # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
+11C5 ; [.324F.0020.0002.11C5] # HANGUL JONGSEONG NIEUN-KIYEOK
+11C6 ; [.3250.0020.0002.11C6] # HANGUL JONGSEONG NIEUN-TIKEUT
+11C7 ; [.3251.0020.0002.11C7] # HANGUL JONGSEONG NIEUN-SIOS
+3167 ; [.3251.0020.0004.3167] # HANGUL LETTER NIEUN-SIOS
+11C8 ; [.3252.0020.0002.11C8] # HANGUL JONGSEONG NIEUN-PANSIOS
+3168 ; [.3252.0020.0004.3168] # HANGUL LETTER NIEUN-PANSIOS
+11C9 ; [.3253.0020.0002.11C9] # HANGUL JONGSEONG NIEUN-THIEUTH
+11CA ; [.3254.0020.0002.11CA] # HANGUL JONGSEONG TIKEUT-KIYEOK
+11CB ; [.3255.0020.0002.11CB] # HANGUL JONGSEONG TIKEUT-RIEUL
+11CC ; [.3256.0020.0002.11CC] # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
+3169 ; [.3256.0020.0004.3169] # HANGUL LETTER RIEUL-KIYEOK-SIOS
+11CD ; [.3257.0020.0002.11CD] # HANGUL JONGSEONG RIEUL-NIEUN
+11CE ; [.3258.0020.0002.11CE] # HANGUL JONGSEONG RIEUL-TIKEUT
+316A ; [.3258.0020.0004.316A] # HANGUL LETTER RIEUL-TIKEUT
+11CF ; [.3259.0020.0002.11CF] # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
+11D0 ; [.325A.0020.0002.11D0] # HANGUL JONGSEONG SSANGRIEUL
+11D1 ; [.325B.0020.0002.11D1] # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
+11D2 ; [.325C.0020.0002.11D2] # HANGUL JONGSEONG RIEUL-MIEUM-SIOS
+11D3 ; [.325D.0020.0002.11D3] # HANGUL JONGSEONG RIEUL-PIEUP-SIOS
+316B ; [.325D.0020.0004.316B] # HANGUL LETTER RIEUL-PIEUP-SIOS
+11D4 ; [.325E.0020.0002.11D4] # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
+11D5 ; [.325F.0020.0002.11D5] # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
+11D6 ; [.3260.0020.0002.11D6] # HANGUL JONGSEONG RIEUL-SSANGSIOS
+11D7 ; [.3261.0020.0002.11D7] # HANGUL JONGSEONG RIEUL-PANSIOS
+316C ; [.3261.0020.0004.316C] # HANGUL LETTER RIEUL-PANSIOS
+11D8 ; [.3262.0020.0002.11D8] # HANGUL JONGSEONG RIEUL-KHIEUKH
+11D9 ; [.3263.0020.0002.11D9] # HANGUL JONGSEONG RIEUL-YEORINHIEUH
+316D ; [.3263.0020.0004.316D] # HANGUL LETTER RIEUL-YEORINHIEUH
+11DA ; [.3264.0020.0002.11DA] # HANGUL JONGSEONG MIEUM-KIYEOK
+11DB ; [.3265.0020.0002.11DB] # HANGUL JONGSEONG MIEUM-RIEUL
+11DC ; [.3266.0020.0002.11DC] # HANGUL JONGSEONG MIEUM-PIEUP
+11DD ; [.3267.0020.0002.11DD] # HANGUL JONGSEONG MIEUM-SIOS
+316F ; [.3267.0020.0004.316F] # HANGUL LETTER MIEUM-SIOS
+11DE ; [.3268.0020.0002.11DE] # HANGUL JONGSEONG MIEUM-SSANGSIOS
+11DF ; [.3269.0020.0002.11DF] # HANGUL JONGSEONG MIEUM-PANSIOS
+3170 ; [.3269.0020.0004.3170] # HANGUL LETTER MIEUM-PANSIOS
+11E0 ; [.326A.0020.0002.11E0] # HANGUL JONGSEONG MIEUM-CHIEUCH
+11E1 ; [.326B.0020.0002.11E1] # HANGUL JONGSEONG MIEUM-HIEUH
+11E2 ; [.326C.0020.0002.11E2] # HANGUL JONGSEONG KAPYEOUNMIEUM
+11E3 ; [.326D.0020.0002.11E3] # HANGUL JONGSEONG PIEUP-RIEUL
+11E4 ; [.326E.0020.0002.11E4] # HANGUL JONGSEONG PIEUP-PHIEUPH
+11E5 ; [.326F.0020.0002.11E5] # HANGUL JONGSEONG PIEUP-HIEUH
+11E6 ; [.3270.0020.0002.11E6] # HANGUL JONGSEONG KAPYEOUNPIEUP
+11E7 ; [.3271.0020.0002.11E7] # HANGUL JONGSEONG SIOS-KIYEOK
+11E8 ; [.3272.0020.0002.11E8] # HANGUL JONGSEONG SIOS-TIKEUT
+11E9 ; [.3273.0020.0002.11E9] # HANGUL JONGSEONG SIOS-RIEUL
+11EA ; [.3274.0020.0002.11EA] # HANGUL JONGSEONG SIOS-PIEUP
+11EB ; [.3275.0020.0002.11EB] # HANGUL JONGSEONG PANSIOS
+11EC ; [.3276.0020.0002.11EC] # HANGUL JONGSEONG IEUNG-KIYEOK
+11ED ; [.3277.0020.0002.11ED] # HANGUL JONGSEONG IEUNG-SSANGKIYEOK
+11EE ; [.3278.0020.0002.11EE] # HANGUL JONGSEONG SSANGIEUNG
+11EF ; [.3279.0020.0002.11EF] # HANGUL JONGSEONG IEUNG-KHIEUKH
+11F0 ; [.327A.0020.0002.11F0] # HANGUL JONGSEONG YESIEUNG
+11F1 ; [.327B.0020.0002.11F1] # HANGUL JONGSEONG YESIEUNG-SIOS
+3182 ; [.327B.0020.0004.3182] # HANGUL LETTER YESIEUNG-SIOS
+11F2 ; [.327C.0020.0002.11F2] # HANGUL JONGSEONG YESIEUNG-PANSIOS
+3183 ; [.327C.0020.0004.3183] # HANGUL LETTER YESIEUNG-PANSIOS
+11F3 ; [.327D.0020.0002.11F3] # HANGUL JONGSEONG PHIEUPH-PIEUP
+11F4 ; [.327E.0020.0002.11F4] # HANGUL JONGSEONG KAPYEOUNPHIEUPH
+11F5 ; [.327F.0020.0002.11F5] # HANGUL JONGSEONG HIEUH-NIEUN
+11F6 ; [.3280.0020.0002.11F6] # HANGUL JONGSEONG HIEUH-RIEUL
+11F7 ; [.3281.0020.0002.11F7] # HANGUL JONGSEONG HIEUH-MIEUM
+11F8 ; [.3282.0020.0002.11F8] # HANGUL JONGSEONG HIEUH-PIEUP
+11F9 ; [.3283.0020.0002.11F9] # HANGUL JONGSEONG YEORINHIEUH
+11FA ; [.3284.0020.0002.11FA] # HANGUL JONGSEONG KIYEOK-NIEUN
+11FB ; [.3285.0020.0002.11FB] # HANGUL JONGSEONG KIYEOK-PIEUP
+11FC ; [.3286.0020.0002.11FC] # HANGUL JONGSEONG KIYEOK-CHIEUCH
+11FD ; [.3287.0020.0002.11FD] # HANGUL JONGSEONG KIYEOK-KHIEUKH
+11FE ; [.3288.0020.0002.11FE] # HANGUL JONGSEONG KIYEOK-HIEUH
+11FF ; [.3289.0020.0002.11FF] # HANGUL JONGSEONG SSANGNIEUN
+D7CB ; [.328A.0020.0002.D7CB] # HANGUL JONGSEONG NIEUN-RIEUL
+D7CC ; [.328B.0020.0002.D7CC] # HANGUL JONGSEONG NIEUN-CHIEUCH
+D7CD ; [.328C.0020.0002.D7CD] # HANGUL JONGSEONG SSANGTIKEUT
+D7CE ; [.328D.0020.0002.D7CE] # HANGUL JONGSEONG SSANGTIKEUT-PIEUP
+D7CF ; [.328E.0020.0002.D7CF] # HANGUL JONGSEONG TIKEUT-PIEUP
+D7D0 ; [.328F.0020.0002.D7D0] # HANGUL JONGSEONG TIKEUT-SIOS
+D7D1 ; [.3290.0020.0002.D7D1] # HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK
+D7D2 ; [.3291.0020.0002.D7D2] # HANGUL JONGSEONG TIKEUT-CIEUC
+D7D3 ; [.3292.0020.0002.D7D3] # HANGUL JONGSEONG TIKEUT-CHIEUCH
+D7D4 ; [.3293.0020.0002.D7D4] # HANGUL JONGSEONG TIKEUT-THIEUTH
+D7D5 ; [.3294.0020.0002.D7D5] # HANGUL JONGSEONG RIEUL-SSANGKIYEOK
+D7D6 ; [.3295.0020.0002.D7D6] # HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH
+D7D7 ; [.3296.0020.0002.D7D7] # HANGUL JONGSEONG SSANGRIEUL-KHIEUKH
+D7D8 ; [.3297.0020.0002.D7D8] # HANGUL JONGSEONG RIEUL-MIEUM-HIEUH
+D7D9 ; [.3298.0020.0002.D7D9] # HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT
+D7DA ; [.3299.0020.0002.D7DA] # HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH
+D7DB ; [.329A.0020.0002.D7DB] # HANGUL JONGSEONG RIEUL-YESIEUNG
+D7DC ; [.329B.0020.0002.D7DC] # HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH
+D7DD ; [.329C.0020.0002.D7DD] # HANGUL JONGSEONG KAPYEOUNRIEUL
+D7DE ; [.329D.0020.0002.D7DE] # HANGUL JONGSEONG MIEUM-NIEUN
+D7DF ; [.329E.0020.0002.D7DF] # HANGUL JONGSEONG MIEUM-SSANGNIEUN
+D7E0 ; [.329F.0020.0002.D7E0] # HANGUL JONGSEONG SSANGMIEUM
+D7E1 ; [.32A0.0020.0002.D7E1] # HANGUL JONGSEONG MIEUM-PIEUP-SIOS
+D7E2 ; [.32A1.0020.0002.D7E2] # HANGUL JONGSEONG MIEUM-CIEUC
+D7E3 ; [.32A2.0020.0002.D7E3] # HANGUL JONGSEONG PIEUP-TIKEUT
+D7E4 ; [.32A3.0020.0002.D7E4] # HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH
+D7E5 ; [.32A4.0020.0002.D7E5] # HANGUL JONGSEONG PIEUP-MIEUM
+D7E6 ; [.32A5.0020.0002.D7E6] # HANGUL JONGSEONG SSANGPIEUP
+D7E7 ; [.32A6.0020.0002.D7E7] # HANGUL JONGSEONG PIEUP-SIOS-TIKEUT
+D7E8 ; [.32A7.0020.0002.D7E8] # HANGUL JONGSEONG PIEUP-CIEUC
+D7E9 ; [.32A8.0020.0002.D7E9] # HANGUL JONGSEONG PIEUP-CHIEUCH
+D7EA ; [.32A9.0020.0002.D7EA] # HANGUL JONGSEONG SIOS-MIEUM
+D7EB ; [.32AA.0020.0002.D7EB] # HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP
+D7EC ; [.32AB.0020.0002.D7EC] # HANGUL JONGSEONG SSANGSIOS-KIYEOK
+D7ED ; [.32AC.0020.0002.D7ED] # HANGUL JONGSEONG SSANGSIOS-TIKEUT
+D7EE ; [.32AD.0020.0002.D7EE] # HANGUL JONGSEONG SIOS-PANSIOS
+D7EF ; [.32AE.0020.0002.D7EF] # HANGUL JONGSEONG SIOS-CIEUC
+D7F0 ; [.32AF.0020.0002.D7F0] # HANGUL JONGSEONG SIOS-CHIEUCH
+D7F1 ; [.32B0.0020.0002.D7F1] # HANGUL JONGSEONG SIOS-THIEUTH
+D7F2 ; [.32B1.0020.0002.D7F2] # HANGUL JONGSEONG SIOS-HIEUH
+D7F3 ; [.32B2.0020.0002.D7F3] # HANGUL JONGSEONG PANSIOS-PIEUP
+D7F4 ; [.32B3.0020.0002.D7F4] # HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP
+D7F5 ; [.32B4.0020.0002.D7F5] # HANGUL JONGSEONG YESIEUNG-MIEUM
+D7F6 ; [.32B5.0020.0002.D7F6] # HANGUL JONGSEONG YESIEUNG-HIEUH
+D7F7 ; [.32B6.0020.0002.D7F7] # HANGUL JONGSEONG CIEUC-PIEUP
+D7F8 ; [.32B7.0020.0002.D7F8] # HANGUL JONGSEONG CIEUC-SSANGPIEUP
+D7F9 ; [.32B8.0020.0002.D7F9] # HANGUL JONGSEONG SSANGCIEUC
+D7FA ; [.32B9.0020.0002.D7FA] # HANGUL JONGSEONG PHIEUPH-SIOS
+D7FB ; [.32BA.0020.0002.D7FB] # HANGUL JONGSEONG PHIEUPH-THIEUTH
+3041 ; [.32BB.0020.000D.3041] # HIRAGANA LETTER SMALL A
+3042 ; [.32BB.0020.000E.3042] # HIRAGANA LETTER A
+30A1 ; [.32BB.0020.000F.30A1] # KATAKANA LETTER SMALL A
+FF67 ; [.32BB.0020.0010.FF67] # HALFWIDTH KATAKANA LETTER SMALL A
+30A2 ; [.32BB.0020.0011.30A2] # KATAKANA LETTER A
+FF71 ; [.32BB.0020.0012.FF71] # HALFWIDTH KATAKANA LETTER A
+32D0 ; [.32BB.0020.0013.32D0] # CIRCLED KATAKANA A
+3303 ; [.32BB.0020.001C.3303][.15BA.0020.001C.3303][.32E5.0020.001C.3303] # SQUARE AARU
+3300 ; [.32BB.0020.001C.3300][.32D5.0020.001C.3300][.0000.0129.001C.3300][.15BA.0020.001C.3300][.32CF.0020.001C.3300] # SQUARE APAATO
+3301 ; [.32BB.0020.001C.3301][.32E5.0020.001C.3301][.32D7.0020.001C.3301][.32BB.0020.001C.3301] # SQUARE ARUHUA
+3302 ; [.32BB.0020.001C.3302][.32EC.0020.001C.3302][.32D8.0020.001C.3302][.0000.0129.001C.3302][.32BB.0020.001C.3302] # SQUARE ANPEA
+3043 ; [.32BC.0020.000D.3043] # HIRAGANA LETTER SMALL I
+3044 ; [.32BC.0020.000E.3044] # HIRAGANA LETTER I
+30A3 ; [.32BC.0020.000F.30A3] # KATAKANA LETTER SMALL I
+FF68 ; [.32BC.0020.0010.FF68] # HALFWIDTH KATAKANA LETTER SMALL I
+30A4 ; [.32BC.0020.0011.30A4] # KATAKANA LETTER I
+FF72 ; [.32BC.0020.0012.FF72] # HALFWIDTH KATAKANA LETTER I
+32D1 ; [.32BC.0020.0013.32D1] # CIRCLED KATAKANA I
+3304 ; [.32BC.0020.001C.3304][.32D1.0020.001C.3304][.32EC.0020.001C.3304][.32C3.0020.001C.3304][.0000.0128.001C.3304] # SQUARE ININGU
+3305 ; [.32BC.0020.001C.3305][.32EC.0020.001C.3305][.32CC.0020.001C.3305] # SQUARE INTI
+3045 ; [.32BD.0020.000D.3045] # HIRAGANA LETTER SMALL U
+3046 ; [.32BD.0020.000E.3046] # HIRAGANA LETTER U
+30A5 ; [.32BD.0020.000F.30A5] # KATAKANA LETTER SMALL U
+FF69 ; [.32BD.0020.0010.FF69] # HALFWIDTH KATAKANA LETTER SMALL U
+30A6 ; [.32BD.0020.0011.30A6] # KATAKANA LETTER U
+FF73 ; [.32BD.0020.0012.FF73] # HALFWIDTH KATAKANA LETTER U
+32D2 ; [.32BD.0020.0013.32D2] # CIRCLED KATAKANA U
+3094 ; [.32BD.0020.000E.3046][.0000.0128.0002.3099] # HIRAGANA LETTER VU
+30F4 ; [.32BD.0020.0011.30A6][.0000.0128.0002.3099] # KATAKANA LETTER VU
+3306 ; [.32BD.0020.001C.3306][.32C0.0020.001C.3306][.32EC.0020.001C.3306] # SQUARE UON
+1B000 ; [.32BE.0020.0011.1B000] # KATAKANA LETTER ARCHAIC E
+3047 ; [.32BF.0020.000D.3047] # HIRAGANA LETTER SMALL E
+3048 ; [.32BF.0020.000E.3048] # HIRAGANA LETTER E
+30A7 ; [.32BF.0020.000F.30A7] # KATAKANA LETTER SMALL E
+FF6A ; [.32BF.0020.0010.FF6A] # HALFWIDTH KATAKANA LETTER SMALL E
+30A8 ; [.32BF.0020.0011.30A8] # KATAKANA LETTER E
+FF74 ; [.32BF.0020.0012.FF74] # HALFWIDTH KATAKANA LETTER E
+32D3 ; [.32BF.0020.0013.32D3] # CIRCLED KATAKANA E
+3308 ; [.32BF.0020.001C.3308][.15BA.0020.001C.3308][.32C1.0020.001C.3308][.15BA.0020.001C.3308] # SQUARE EEKAA
+3307 ; [.32BF.0020.001C.3307][.32C8.0020.001C.3307][.32C3.0020.001C.3307][.15BA.0020.001C.3307][.32CF.0020.001C.3307][.0000.0128.001C.3307] # SQUARE ESUKUUDO
+3049 ; [.32C0.0020.000D.3049] # HIRAGANA LETTER SMALL O
+304A ; [.32C0.0020.000E.304A] # HIRAGANA LETTER O
+30A9 ; [.32C0.0020.000F.30A9] # KATAKANA LETTER SMALL O
+FF6B ; [.32C0.0020.0010.FF6B] # HALFWIDTH KATAKANA LETTER SMALL O
+30AA ; [.32C0.0020.0011.30AA] # KATAKANA LETTER O
+FF75 ; [.32C0.0020.0012.FF75] # HALFWIDTH KATAKANA LETTER O
+32D4 ; [.32C0.0020.0013.32D4] # CIRCLED KATAKANA O
+330A ; [.32C0.0020.001C.330A][.15BA.0020.001C.330A][.32DC.0020.001C.330A] # SQUARE OOMU
+3309 ; [.32C0.0020.001C.3309][.32EC.0020.001C.3309][.32C8.0020.001C.3309] # SQUARE ONSU
+3095 ; [.32C1.0020.000D.3095] # HIRAGANA LETTER SMALL KA
+304B ; [.32C1.0020.000E.304B] # HIRAGANA LETTER KA
+30F5 ; [.32C1.0020.000F.30F5] # KATAKANA LETTER SMALL KA
+30AB ; [.32C1.0020.0011.30AB] # KATAKANA LETTER KA
+FF76 ; [.32C1.0020.0012.FF76] # HALFWIDTH KATAKANA LETTER KA
+32D5 ; [.32C1.0020.0013.32D5] # CIRCLED KATAKANA KA
+304C ; [.32C1.0020.000E.304B][.0000.0128.0002.3099] # HIRAGANA LETTER GA
+30AC ; [.32C1.0020.0011.30AB][.0000.0128.0002.3099] # KATAKANA LETTER GA
+330B ; [.32C1.0020.001C.330B][.32BC.0020.001C.330B][.32E4.0020.001C.330B] # SQUARE KAIRI
+330C ; [.32C1.0020.001C.330C][.32E3.0020.001C.330C][.32CD.0020.001C.330C][.32CF.0020.001C.330C] # SQUARE KARATTO
+330D ; [.32C1.0020.001C.330D][.32E7.0020.001C.330D][.32E4.0020.001C.330D][.15BA.0020.001C.330D] # SQUARE KARORII
+330E ; [.32C1.0020.001C.330E][.0000.0128.001C.330E][.32E7.0020.001C.330E][.32EC.0020.001C.330E] # SQUARE GARON
+330F ; [.32C1.0020.001C.330F][.0000.0128.001C.330F][.32EC.0020.001C.330F][.32DA.0020.001C.330F] # SQUARE GANMA
+304D ; [.32C2.0020.000E.304D] # HIRAGANA LETTER KI
+30AD ; [.32C2.0020.0011.30AD] # KATAKANA LETTER KI
+FF77 ; [.32C2.0020.0012.FF77] # HALFWIDTH KATAKANA LETTER KI
+32D6 ; [.32C2.0020.0013.32D6] # CIRCLED KATAKANA KI
+304E ; [.32C2.0020.000E.304D][.0000.0128.0002.3099] # HIRAGANA LETTER GI
+30AE ; [.32C2.0020.0011.30AD][.0000.0128.0002.3099] # KATAKANA LETTER GI
+3310 ; [.32C2.0020.001C.3310][.0000.0128.001C.3310][.32C1.0020.001C.3310][.0000.0128.001C.3310] # SQUARE GIGA
+3311 ; [.32C2.0020.001C.3311][.0000.0128.001C.3311][.32D1.0020.001C.3311][.15BA.0020.001C.3311] # SQUARE GINII
+3312 ; [.32C2.0020.001C.3312][.32E0.0020.001C.3312][.32E4.0020.001C.3312][.15BA.0020.001C.3312] # SQUARE KYURII
+3313 ; [.32C2.0020.001C.3313][.0000.0128.001C.3313][.32E5.0020.001C.3313][.32CB.0020.001C.3313][.0000.0128.001C.3313][.15BA.0020.001C.3313] # SQUARE GIRUDAA
+3314 ; [.32C2.0020.001C.3314][.32E7.0020.001C.3314] # SQUARE KIRO
+3315 ; [.32C2.0020.001C.3315][.32E7.0020.001C.3315][.32C3.0020.001C.3315][.0000.0128.001C.3315][.32E3.0020.001C.3315][.32DC.0020.001C.3315] # SQUARE KIROGURAMU
+3316 ; [.32C2.0020.001C.3316][.32E7.0020.001C.3316][.32DD.0020.001C.3316][.15BA.0020.001C.3316][.32CF.0020.001C.3316][.32E5.0020.001C.3316] # SQUARE KIROMEETORU
+3317 ; [.32C2.0020.001C.3317][.32E7.0020.001C.3317][.32E8.0020.001C.3317][.32CD.0020.001C.3317][.32CF.0020.001C.3317] # SQUARE KIROWATTO
+304F ; [.32C3.0020.000E.304F] # HIRAGANA LETTER KU
+31F0 ; [.32C3.0020.000F.31F0] # KATAKANA LETTER SMALL KU
+30AF ; [.32C3.0020.0011.30AF] # KATAKANA LETTER KU
+FF78 ; [.32C3.0020.0012.FF78] # HALFWIDTH KATAKANA LETTER KU
+32D7 ; [.32C3.0020.0013.32D7] # CIRCLED KATAKANA KU
+3050 ; [.32C3.0020.000E.304F][.0000.0128.0002.3099] # HIRAGANA LETTER GU
+30B0 ; [.32C3.0020.0011.30AF][.0000.0128.0002.3099] # KATAKANA LETTER GU
+3318 ; [.32C3.0020.001C.3318][.0000.0128.001C.3318][.32E3.0020.001C.3318][.32DC.0020.001C.3318] # SQUARE GURAMU
+3319 ; [.32C3.0020.001C.3319][.0000.0128.001C.3319][.32E3.0020.001C.3319][.32DC.0020.001C.3319][.32CF.0020.001C.3319][.32EC.0020.001C.3319] # SQUARE GURAMUTON
+331A ; [.32C3.0020.001C.331A][.32E5.0020.001C.331A][.32C9.0020.001C.331A][.0000.0128.001C.331A][.32BC.0020.001C.331A][.32E7.0020.001C.331A] # SQUARE KURUZEIRO
+331B ; [.32C3.0020.001C.331B][.32E7.0020.001C.331B][.15BA.0020.001C.331B][.32D3.0020.001C.331B] # SQUARE KUROONE
+3096 ; [.32C4.0020.000D.3096] # HIRAGANA LETTER SMALL KE
+3051 ; [.32C4.0020.000E.3051] # HIRAGANA LETTER KE
+30F6 ; [.32C4.0020.000F.30F6] # KATAKANA LETTER SMALL KE
+30B1 ; [.32C4.0020.0011.30B1] # KATAKANA LETTER KE
+FF79 ; [.32C4.0020.0012.FF79] # HALFWIDTH KATAKANA LETTER KE
+32D8 ; [.32C4.0020.0013.32D8] # CIRCLED KATAKANA KE
+3052 ; [.32C4.0020.000E.3051][.0000.0128.0002.3099] # HIRAGANA LETTER GE
+30B2 ; [.32C4.0020.0011.30B1][.0000.0128.0002.3099] # KATAKANA LETTER GE
+331C ; [.32C4.0020.001C.331C][.15BA.0020.001C.331C][.32C8.0020.001C.331C] # SQUARE KEESU
+3053 ; [.32C5.0020.000E.3053] # HIRAGANA LETTER KO
+30B3 ; [.32C5.0020.0011.30B3] # KATAKANA LETTER KO
+FF7A ; [.32C5.0020.0012.FF7A] # HALFWIDTH KATAKANA LETTER KO
+32D9 ; [.32C5.0020.0013.32D9] # CIRCLED KATAKANA KO
+3054 ; [.32C5.0020.000E.3053][.0000.0128.0002.3099] # HIRAGANA LETTER GO
+30B4 ; [.32C5.0020.0011.30B3][.0000.0128.0002.3099] # KATAKANA LETTER GO
+331E ; [.32C5.0020.001C.331E][.15BA.0020.001C.331E][.32D9.0020.001C.331E][.0000.0129.001C.331E] # SQUARE KOOPO
+1F201 ; [.32C5.0020.001C.1F201][.32C5.0020.001C.1F201] # SQUARED KATAKANA KOKO
+30FF ; [.32C5.0020.0016.30FF][.32CF.0020.0016.30FF] # KATAKANA DIGRAPH KOTO
+331D ; [.32C5.0020.001C.331D][.32E5.0020.001C.331D][.32D0.0020.001C.331D] # SQUARE KORUNA
+3055 ; [.32C6.0020.000E.3055] # HIRAGANA LETTER SA
+30B5 ; [.32C6.0020.0011.30B5] # KATAKANA LETTER SA
+FF7B ; [.32C6.0020.0012.FF7B] # HALFWIDTH KATAKANA LETTER SA
+32DA ; [.32C6.0020.0013.32DA] # CIRCLED KATAKANA SA
+1F202 ; [.32C6.0020.001C.1F202] # SQUARED KATAKANA SA
+3056 ; [.32C6.0020.000E.3055][.0000.0128.0002.3099] # HIRAGANA LETTER ZA
+30B6 ; [.32C6.0020.0011.30B5][.0000.0128.0002.3099] # KATAKANA LETTER ZA
+331F ; [.32C6.0020.001C.331F][.32BC.0020.001C.331F][.32C3.0020.001C.331F][.32E5.0020.001C.331F] # SQUARE SAIKURU
+3320 ; [.32C6.0020.001C.3320][.32EC.0020.001C.3320][.32CC.0020.001C.3320][.15BA.0020.001C.3320][.32DC.0020.001C.3320] # SQUARE SANTIIMU
+3057 ; [.32C7.0020.000E.3057] # HIRAGANA LETTER SI
+31F1 ; [.32C7.0020.000F.31F1] # KATAKANA LETTER SMALL SI
+30B7 ; [.32C7.0020.0011.30B7] # KATAKANA LETTER SI
+FF7C ; [.32C7.0020.0012.FF7C] # HALFWIDTH KATAKANA LETTER SI
+32DB ; [.32C7.0020.0013.32DB] # CIRCLED KATAKANA SI
+3058 ; [.32C7.0020.000E.3057][.0000.0128.0002.3099] # HIRAGANA LETTER ZI
+30B8 ; [.32C7.0020.0011.30B7][.0000.0128.0002.3099] # KATAKANA LETTER ZI
+3006 ; [.32C7.0020.0004.3006][.32DD.0020.0004.3006] # IDEOGRAPHIC CLOSING MARK
+3321 ; [.32C7.0020.001C.3321][.32E4.0020.001C.3321][.32EC.0020.001C.3321][.32C3.0020.001C.3321][.0000.0128.001C.3321] # SQUARE SIRINGU
+3059 ; [.32C8.0020.000E.3059] # HIRAGANA LETTER SU
+31F2 ; [.32C8.0020.000F.31F2] # KATAKANA LETTER SMALL SU
+30B9 ; [.32C8.0020.0011.30B9] # KATAKANA LETTER SU
+FF7D ; [.32C8.0020.0012.FF7D] # HALFWIDTH KATAKANA LETTER SU
+32DC ; [.32C8.0020.0013.32DC] # CIRCLED KATAKANA SU
+305A ; [.32C8.0020.000E.3059][.0000.0128.0002.3099] # HIRAGANA LETTER ZU
+30BA ; [.32C8.0020.0011.30B9][.0000.0128.0002.3099] # KATAKANA LETTER ZU
+305B ; [.32C9.0020.000E.305B] # HIRAGANA LETTER SE
+30BB ; [.32C9.0020.0011.30BB] # KATAKANA LETTER SE
+FF7E ; [.32C9.0020.0012.FF7E] # HALFWIDTH KATAKANA LETTER SE
+32DD ; [.32C9.0020.0013.32DD] # CIRCLED KATAKANA SE
+305C ; [.32C9.0020.000E.305B][.0000.0128.0002.3099] # HIRAGANA LETTER ZE
+30BC ; [.32C9.0020.0011.30BB][.0000.0128.0002.3099] # KATAKANA LETTER ZE
+3322 ; [.32C9.0020.001C.3322][.32EC.0020.001C.3322][.32CC.0020.001C.3322] # SQUARE SENTI
+3323 ; [.32C9.0020.001C.3323][.32EC.0020.001C.3323][.32CF.0020.001C.3323] # SQUARE SENTO
+305D ; [.32CA.0020.000E.305D] # HIRAGANA LETTER SO
+30BD ; [.32CA.0020.0011.30BD] # KATAKANA LETTER SO
+FF7F ; [.32CA.0020.0012.FF7F] # HALFWIDTH KATAKANA LETTER SO
+32DE ; [.32CA.0020.0013.32DE] # CIRCLED KATAKANA SO
+305E ; [.32CA.0020.000E.305D][.0000.0128.0002.3099] # HIRAGANA LETTER ZO
+30BE ; [.32CA.0020.0011.30BD][.0000.0128.0002.3099] # KATAKANA LETTER ZO
+305F ; [.32CB.0020.000E.305F] # HIRAGANA LETTER TA
+30BF ; [.32CB.0020.0011.30BF] # KATAKANA LETTER TA
+FF80 ; [.32CB.0020.0012.FF80] # HALFWIDTH KATAKANA LETTER TA
+32DF ; [.32CB.0020.0013.32DF] # CIRCLED KATAKANA TA
+3060 ; [.32CB.0020.000E.305F][.0000.0128.0002.3099] # HIRAGANA LETTER DA
+30C0 ; [.32CB.0020.0011.30BF][.0000.0128.0002.3099] # KATAKANA LETTER DA
+3324 ; [.32CB.0020.001C.3324][.0000.0128.001C.3324][.15BA.0020.001C.3324][.32C8.0020.001C.3324] # SQUARE DAASU
+3061 ; [.32CC.0020.000E.3061] # HIRAGANA LETTER TI
+30C1 ; [.32CC.0020.0011.30C1] # KATAKANA LETTER TI
+FF81 ; [.32CC.0020.0012.FF81] # HALFWIDTH KATAKANA LETTER TI
+32E0 ; [.32CC.0020.0013.32E0] # CIRCLED KATAKANA TI
+3062 ; [.32CC.0020.000E.3061][.0000.0128.0002.3099] # HIRAGANA LETTER DI
+30C2 ; [.32CC.0020.0011.30C1][.0000.0128.0002.3099] # KATAKANA LETTER DI
+3063 ; [.32CD.0020.000D.3063] # HIRAGANA LETTER SMALL TU
+3064 ; [.32CD.0020.000E.3064] # HIRAGANA LETTER TU
+30C3 ; [.32CD.0020.000F.30C3] # KATAKANA LETTER SMALL TU
+FF6F ; [.32CD.0020.0010.FF6F] # HALFWIDTH KATAKANA LETTER SMALL TU
+30C4 ; [.32CD.0020.0011.30C4] # KATAKANA LETTER TU
+FF82 ; [.32CD.0020.0012.FF82] # HALFWIDTH KATAKANA LETTER TU
+32E1 ; [.32CD.0020.0013.32E1] # CIRCLED KATAKANA TU
+3065 ; [.32CD.0020.000E.3064][.0000.0128.0002.3099] # HIRAGANA LETTER DU
+30C5 ; [.32CD.0020.0011.30C4][.0000.0128.0002.3099] # KATAKANA LETTER DU
+3066 ; [.32CE.0020.000E.3066] # HIRAGANA LETTER TE
+30C6 ; [.32CE.0020.0011.30C6] # KATAKANA LETTER TE
+FF83 ; [.32CE.0020.0012.FF83] # HALFWIDTH KATAKANA LETTER TE
+32E2 ; [.32CE.0020.0013.32E2] # CIRCLED KATAKANA TE
+3067 ; [.32CE.0020.000E.3066][.0000.0128.0002.3099] # HIRAGANA LETTER DE
+30C7 ; [.32CE.0020.0011.30C6][.0000.0128.0002.3099] # KATAKANA LETTER DE
+1F213 ; [.32CE.0020.001C.1F213][.0000.0128.001C.1F213] # SQUARED KATAKANA DE
+3325 ; [.32CE.0020.001C.3325][.0000.0128.001C.3325][.32C7.0020.001C.3325] # SQUARE DESI
+3068 ; [.32CF.0020.000E.3068] # HIRAGANA LETTER TO
+31F3 ; [.32CF.0020.000F.31F3] # KATAKANA LETTER SMALL TO
+30C8 ; [.32CF.0020.0011.30C8] # KATAKANA LETTER TO
+FF84 ; [.32CF.0020.0012.FF84] # HALFWIDTH KATAKANA LETTER TO
+32E3 ; [.32CF.0020.0013.32E3] # CIRCLED KATAKANA TO
+3069 ; [.32CF.0020.000E.3068][.0000.0128.0002.3099] # HIRAGANA LETTER DO
+30C9 ; [.32CF.0020.0011.30C8][.0000.0128.0002.3099] # KATAKANA LETTER DO
+3326 ; [.32CF.0020.001C.3326][.0000.0128.001C.3326][.32E5.0020.001C.3326] # SQUARE DORU
+3327 ; [.32CF.0020.001C.3327][.32EC.0020.001C.3327] # SQUARE TON
+306A ; [.32D0.0020.000E.306A] # HIRAGANA LETTER NA
+30CA ; [.32D0.0020.0011.30CA] # KATAKANA LETTER NA
+FF85 ; [.32D0.0020.0012.FF85] # HALFWIDTH KATAKANA LETTER NA
+32E4 ; [.32D0.0020.0013.32E4] # CIRCLED KATAKANA NA
+3328 ; [.32D0.0020.001C.3328][.32D4.0020.001C.3328] # SQUARE NANO
+306B ; [.32D1.0020.000E.306B] # HIRAGANA LETTER NI
+30CB ; [.32D1.0020.0011.30CB] # KATAKANA LETTER NI
+FF86 ; [.32D1.0020.0012.FF86] # HALFWIDTH KATAKANA LETTER NI
+32E5 ; [.32D1.0020.0013.32E5] # CIRCLED KATAKANA NI
+306C ; [.32D2.0020.000E.306C] # HIRAGANA LETTER NU
+31F4 ; [.32D2.0020.000F.31F4] # KATAKANA LETTER SMALL NU
+30CC ; [.32D2.0020.0011.30CC] # KATAKANA LETTER NU
+FF87 ; [.32D2.0020.0012.FF87] # HALFWIDTH KATAKANA LETTER NU
+32E6 ; [.32D2.0020.0013.32E6] # CIRCLED KATAKANA NU
+306D ; [.32D3.0020.000E.306D] # HIRAGANA LETTER NE
+30CD ; [.32D3.0020.0011.30CD] # KATAKANA LETTER NE
+FF88 ; [.32D3.0020.0012.FF88] # HALFWIDTH KATAKANA LETTER NE
+32E7 ; [.32D3.0020.0013.32E7] # CIRCLED KATAKANA NE
+306E ; [.32D4.0020.000E.306E] # HIRAGANA LETTER NO
+30CE ; [.32D4.0020.0011.30CE] # KATAKANA LETTER NO
+FF89 ; [.32D4.0020.0012.FF89] # HALFWIDTH KATAKANA LETTER NO
+32E8 ; [.32D4.0020.0013.32E8] # CIRCLED KATAKANA NO
+3329 ; [.32D4.0020.001C.3329][.32CD.0020.001C.3329][.32CF.0020.001C.3329] # SQUARE NOTTO
+306F ; [.32D5.0020.000E.306F] # HIRAGANA LETTER HA
+31F5 ; [.32D5.0020.000F.31F5] # KATAKANA LETTER SMALL HA
+30CF ; [.32D5.0020.0011.30CF] # KATAKANA LETTER HA
+FF8A ; [.32D5.0020.0012.FF8A] # HALFWIDTH KATAKANA LETTER HA
+32E9 ; [.32D5.0020.0013.32E9] # CIRCLED KATAKANA HA
+3070 ; [.32D5.0020.000E.306F][.0000.0128.0002.3099] # HIRAGANA LETTER BA
+30D0 ; [.32D5.0020.0011.30CF][.0000.0128.0002.3099] # KATAKANA LETTER BA
+3071 ; [.32D5.0020.000E.306F][.0000.0129.0002.309A] # HIRAGANA LETTER PA
+30D1 ; [.32D5.0020.0011.30CF][.0000.0129.0002.309A] # KATAKANA LETTER PA
+332B ; [.32D5.0020.001C.332B][.0000.0129.001C.332B][.15BA.0020.001C.332B][.32C9.0020.001C.332B][.32EC.0020.001C.332B][.32CF.0020.001C.332B] # SQUARE PAASENTO
+332C ; [.32D5.0020.001C.332C][.0000.0129.001C.332C][.15BA.0020.001C.332C][.32CD.0020.001C.332C] # SQUARE PAATU
+332D ; [.32D5.0020.001C.332D][.0000.0128.001C.332D][.15BA.0020.001C.332D][.32E6.0020.001C.332D][.32E5.0020.001C.332D] # SQUARE BAARERU
+332A ; [.32D5.0020.001C.332A][.32BC.0020.001C.332A][.32CD.0020.001C.332A] # SQUARE HAITU
+3072 ; [.32D6.0020.000E.3072] # HIRAGANA LETTER HI
+31F6 ; [.32D6.0020.000F.31F6] # KATAKANA LETTER SMALL HI
+30D2 ; [.32D6.0020.0011.30D2] # KATAKANA LETTER HI
+FF8B ; [.32D6.0020.0012.FF8B] # HALFWIDTH KATAKANA LETTER HI
+32EA ; [.32D6.0020.0013.32EA] # CIRCLED KATAKANA HI
+3073 ; [.32D6.0020.000E.3072][.0000.0128.0002.3099] # HIRAGANA LETTER BI
+30D3 ; [.32D6.0020.0011.30D2][.0000.0128.0002.3099] # KATAKANA LETTER BI
+3074 ; [.32D6.0020.000E.3072][.0000.0129.0002.309A] # HIRAGANA LETTER PI
+30D4 ; [.32D6.0020.0011.30D2][.0000.0129.0002.309A] # KATAKANA LETTER PI
+332E ; [.32D6.0020.001C.332E][.0000.0129.001C.332E][.32BB.0020.001C.332E][.32C8.0020.001C.332E][.32CF.0020.001C.332E][.32E5.0020.001C.332E] # SQUARE PIASUTORU
+332F ; [.32D6.0020.001C.332F][.0000.0129.001C.332F][.32C3.0020.001C.332F][.32E5.0020.001C.332F] # SQUARE PIKURU
+3330 ; [.32D6.0020.001C.3330][.0000.0129.001C.3330][.32C5.0020.001C.3330] # SQUARE PIKO
+3331 ; [.32D6.0020.001C.3331][.0000.0128.001C.3331][.32E5.0020.001C.3331] # SQUARE BIRU
+3075 ; [.32D7.0020.000E.3075] # HIRAGANA LETTER HU
+31F7 ; [.32D7.0020.000F.31F7] # KATAKANA LETTER SMALL HU
+30D5 ; [.32D7.0020.0011.30D5] # KATAKANA LETTER HU
+FF8C ; [.32D7.0020.0012.FF8C] # HALFWIDTH KATAKANA LETTER HU
+32EB ; [.32D7.0020.0013.32EB] # CIRCLED KATAKANA HU
+3076 ; [.32D7.0020.000E.3075][.0000.0128.0002.3099] # HIRAGANA LETTER BU
+30D6 ; [.32D7.0020.0011.30D5][.0000.0128.0002.3099] # KATAKANA LETTER BU
+3077 ; [.32D7.0020.000E.3075][.0000.0129.0002.309A] # HIRAGANA LETTER PU
+30D7 ; [.32D7.0020.0011.30D5][.0000.0129.0002.309A] # KATAKANA LETTER PU
+3332 ; [.32D7.0020.001C.3332][.32BB.0020.001C.3332][.32E3.0020.001C.3332][.32CD.0020.001C.3332][.32CF.0020.001C.3332][.0000.0128.001C.3332] # SQUARE HUARADDO
+3333 ; [.32D7.0020.001C.3333][.32BC.0020.001C.3333][.15BA.0020.001C.3333][.32CF.0020.001C.3333] # SQUARE HUIITO
+3334 ; [.32D7.0020.001C.3334][.0000.0128.001C.3334][.32CD.0020.001C.3334][.32C7.0020.001C.3334][.32BF.0020.001C.3334][.32E5.0020.001C.3334] # SQUARE BUSSYERU
+3335 ; [.32D7.0020.001C.3335][.32E3.0020.001C.3335][.32EC.0020.001C.3335] # SQUARE HURAN
+3078 ; [.32D8.0020.000E.3078] # HIRAGANA LETTER HE
+31F8 ; [.32D8.0020.000F.31F8] # KATAKANA LETTER SMALL HE
+30D8 ; [.32D8.0020.0011.30D8] # KATAKANA LETTER HE
+FF8D ; [.32D8.0020.0012.FF8D] # HALFWIDTH KATAKANA LETTER HE
+32EC ; [.32D8.0020.0013.32EC] # CIRCLED KATAKANA HE
+3079 ; [.32D8.0020.000E.3078][.0000.0128.0002.3099] # HIRAGANA LETTER BE
+30D9 ; [.32D8.0020.0011.30D8][.0000.0128.0002.3099] # KATAKANA LETTER BE
+307A ; [.32D8.0020.000E.3078][.0000.0129.0002.309A] # HIRAGANA LETTER PE
+30DA ; [.32D8.0020.0011.30D8][.0000.0129.0002.309A] # KATAKANA LETTER PE
+333B ; [.32D8.0020.001C.333B][.0000.0129.001C.333B][.15BA.0020.001C.333B][.32C7.0020.001C.333B][.0000.0128.001C.333B] # SQUARE PEEZI
+333C ; [.32D8.0020.001C.333C][.0000.0128.001C.333C][.15BA.0020.001C.333C][.32CB.0020.001C.333C] # SQUARE BEETA
+3336 ; [.32D8.0020.001C.3336][.32C3.0020.001C.3336][.32CB.0020.001C.3336][.15BA.0020.001C.3336][.32E5.0020.001C.3336] # SQUARE HEKUTAARU
+3337 ; [.32D8.0020.001C.3337][.0000.0129.001C.3337][.32CA.0020.001C.3337] # SQUARE PESO
+3338 ; [.32D8.0020.001C.3338][.0000.0129.001C.3338][.32D1.0020.001C.3338][.32D6.0020.001C.3338] # SQUARE PENIHI
+3339 ; [.32D8.0020.001C.3339][.32E5.0020.001C.3339][.32CD.0020.001C.3339] # SQUARE HERUTU
+333A ; [.32D8.0020.001C.333A][.0000.0129.001C.333A][.32EC.0020.001C.333A][.32C8.0020.001C.333A] # SQUARE PENSU
+307B ; [.32D9.0020.000E.307B] # HIRAGANA LETTER HO
+31F9 ; [.32D9.0020.000F.31F9] # KATAKANA LETTER SMALL HO
+30DB ; [.32D9.0020.0011.30DB] # KATAKANA LETTER HO
+FF8E ; [.32D9.0020.0012.FF8E] # HALFWIDTH KATAKANA LETTER HO
+32ED ; [.32D9.0020.0013.32ED] # CIRCLED KATAKANA HO
+307C ; [.32D9.0020.000E.307B][.0000.0128.0002.3099] # HIRAGANA LETTER BO
+30DC ; [.32D9.0020.0011.30DB][.0000.0128.0002.3099] # KATAKANA LETTER BO
+307D ; [.32D9.0020.000E.307B][.0000.0129.0002.309A] # HIRAGANA LETTER PO
+30DD ; [.32D9.0020.0011.30DB][.0000.0129.0002.309A] # KATAKANA LETTER PO
+3341 ; [.32D9.0020.001C.3341][.15BA.0020.001C.3341][.32E5.0020.001C.3341] # SQUARE HOORU
+3342 ; [.32D9.0020.001C.3342][.15BA.0020.001C.3342][.32EC.0020.001C.3342] # SQUARE HOON
+333D ; [.32D9.0020.001C.333D][.0000.0129.001C.333D][.32BC.0020.001C.333D][.32EC.0020.001C.333D][.32CF.0020.001C.333D] # SQUARE POINTO
+1F200 ; [.32D9.0020.001C.1F200][.32C1.0020.001C.1F200] # SQUARE HIRAGANA HOKA
+333E ; [.32D9.0020.001C.333E][.0000.0128.001C.333E][.32E5.0020.001C.333E][.32CF.0020.001C.333E] # SQUARE BORUTO
+333F ; [.32D9.0020.001C.333F][.32EC.0020.001C.333F] # SQUARE HON
+3340 ; [.32D9.0020.001C.3340][.0000.0129.001C.3340][.32EC.0020.001C.3340][.32CF.0020.001C.3340][.0000.0128.001C.3340] # SQUARE PONDO
+307E ; [.32DA.0020.000E.307E] # HIRAGANA LETTER MA
+30DE ; [.32DA.0020.0011.30DE] # KATAKANA LETTER MA
+FF8F ; [.32DA.0020.0012.FF8F] # HALFWIDTH KATAKANA LETTER MA
+32EE ; [.32DA.0020.0013.32EE] # CIRCLED KATAKANA MA
+3343 ; [.32DA.0020.001C.3343][.32BC.0020.001C.3343][.32C3.0020.001C.3343][.32E7.0020.001C.3343] # SQUARE MAIKURO
+3344 ; [.32DA.0020.001C.3344][.32BC.0020.001C.3344][.32E5.0020.001C.3344] # SQUARE MAIRU
+303C ; [.32DA.0020.0004.303C][.32C8.0020.0004.303C] # MASU MARK
+3345 ; [.32DA.0020.001C.3345][.32CD.0020.001C.3345][.32D5.0020.001C.3345] # SQUARE MAHHA
+3346 ; [.32DA.0020.001C.3346][.32E5.0020.001C.3346][.32C3.0020.001C.3346] # SQUARE MARUKU
+3347 ; [.32DA.0020.001C.3347][.32EC.0020.001C.3347][.32C7.0020.001C.3347][.32E2.0020.001C.3347][.32EC.0020.001C.3347] # SQUARE MANSYON
+307F ; [.32DB.0020.000E.307F] # HIRAGANA LETTER MI
+30DF ; [.32DB.0020.0011.30DF] # KATAKANA LETTER MI
+FF90 ; [.32DB.0020.0012.FF90] # HALFWIDTH KATAKANA LETTER MI
+32EF ; [.32DB.0020.0013.32EF] # CIRCLED KATAKANA MI
+3348 ; [.32DB.0020.001C.3348][.32C3.0020.001C.3348][.32E7.0020.001C.3348][.32EC.0020.001C.3348] # SQUARE MIKURON
+3349 ; [.32DB.0020.001C.3349][.32E4.0020.001C.3349] # SQUARE MIRI
+334A ; [.32DB.0020.001C.334A][.32E4.0020.001C.334A][.32D5.0020.001C.334A][.0000.0128.001C.334A][.15BA.0020.001C.334A][.32E5.0020.001C.334A] # SQUARE MIRIBAARU
+3080 ; [.32DC.0020.000E.3080] # HIRAGANA LETTER MU
+31FA ; [.32DC.0020.000F.31FA] # KATAKANA LETTER SMALL MU
+30E0 ; [.32DC.0020.0011.30E0] # KATAKANA LETTER MU
+FF91 ; [.32DC.0020.0012.FF91] # HALFWIDTH KATAKANA LETTER MU
+32F0 ; [.32DC.0020.0013.32F0] # CIRCLED KATAKANA MU
+3081 ; [.32DD.0020.000E.3081] # HIRAGANA LETTER ME
+30E1 ; [.32DD.0020.0011.30E1] # KATAKANA LETTER ME
+FF92 ; [.32DD.0020.0012.FF92] # HALFWIDTH KATAKANA LETTER ME
+32F1 ; [.32DD.0020.0013.32F1] # CIRCLED KATAKANA ME
+334D ; [.32DD.0020.001C.334D][.15BA.0020.001C.334D][.32CF.0020.001C.334D][.32E5.0020.001C.334D] # SQUARE MEETORU
+334B ; [.32DD.0020.001C.334B][.32C1.0020.001C.334B][.0000.0128.001C.334B] # SQUARE MEGA
+334C ; [.32DD.0020.001C.334C][.32C1.0020.001C.334C][.0000.0128.001C.334C][.32CF.0020.001C.334C][.32EC.0020.001C.334C] # SQUARE MEGATON
+3082 ; [.32DE.0020.000E.3082] # HIRAGANA LETTER MO
+30E2 ; [.32DE.0020.0011.30E2] # KATAKANA LETTER MO
+FF93 ; [.32DE.0020.0012.FF93] # HALFWIDTH KATAKANA LETTER MO
+32F2 ; [.32DE.0020.0013.32F2] # CIRCLED KATAKANA MO
+3083 ; [.32DF.0020.000D.3083] # HIRAGANA LETTER SMALL YA
+3084 ; [.32DF.0020.000E.3084] # HIRAGANA LETTER YA
+30E3 ; [.32DF.0020.000F.30E3] # KATAKANA LETTER SMALL YA
+FF6C ; [.32DF.0020.0010.FF6C] # HALFWIDTH KATAKANA LETTER SMALL YA
+30E4 ; [.32DF.0020.0011.30E4] # KATAKANA LETTER YA
+FF94 ; [.32DF.0020.0012.FF94] # HALFWIDTH KATAKANA LETTER YA
+32F3 ; [.32DF.0020.0013.32F3] # CIRCLED KATAKANA YA
+334E ; [.32DF.0020.001C.334E][.15BA.0020.001C.334E][.32CF.0020.001C.334E][.0000.0128.001C.334E] # SQUARE YAADO
+334F ; [.32DF.0020.001C.334F][.15BA.0020.001C.334F][.32E5.0020.001C.334F] # SQUARE YAARU
+3085 ; [.32E0.0020.000D.3085] # HIRAGANA LETTER SMALL YU
+3086 ; [.32E0.0020.000E.3086] # HIRAGANA LETTER YU
+30E5 ; [.32E0.0020.000F.30E5] # KATAKANA LETTER SMALL YU
+FF6D ; [.32E0.0020.0010.FF6D] # HALFWIDTH KATAKANA LETTER SMALL YU
+30E6 ; [.32E0.0020.0011.30E6] # KATAKANA LETTER YU
+FF95 ; [.32E0.0020.0012.FF95] # HALFWIDTH KATAKANA LETTER YU
+32F4 ; [.32E0.0020.0013.32F4] # CIRCLED KATAKANA YU
+3350 ; [.32E0.0020.001C.3350][.32BB.0020.001C.3350][.32EC.0020.001C.3350] # SQUARE YUAN
+1B001 ; [.32E1.0020.000E.1B001] # HIRAGANA LETTER ARCHAIC YE
+3087 ; [.32E2.0020.000D.3087] # HIRAGANA LETTER SMALL YO
+3088 ; [.32E2.0020.000E.3088] # HIRAGANA LETTER YO
+30E7 ; [.32E2.0020.000F.30E7] # KATAKANA LETTER SMALL YO
+FF6E ; [.32E2.0020.0010.FF6E] # HALFWIDTH KATAKANA LETTER SMALL YO
+30E8 ; [.32E2.0020.0011.30E8] # KATAKANA LETTER YO
+FF96 ; [.32E2.0020.0012.FF96] # HALFWIDTH KATAKANA LETTER YO
+32F5 ; [.32E2.0020.0013.32F5] # CIRCLED KATAKANA YO
+309F ; [.32E2.0020.0016.309F][.32E4.0020.0016.309F] # HIRAGANA DIGRAPH YORI
+3089 ; [.32E3.0020.000E.3089] # HIRAGANA LETTER RA
+31FB ; [.32E3.0020.000F.31FB] # KATAKANA LETTER SMALL RA
+30E9 ; [.32E3.0020.0011.30E9] # KATAKANA LETTER RA
+FF97 ; [.32E3.0020.0012.FF97] # HALFWIDTH KATAKANA LETTER RA
+32F6 ; [.32E3.0020.0013.32F6] # CIRCLED KATAKANA RA
+308A ; [.32E4.0020.000E.308A] # HIRAGANA LETTER RI
+31FC ; [.32E4.0020.000F.31FC] # KATAKANA LETTER SMALL RI
+30EA ; [.32E4.0020.0011.30EA] # KATAKANA LETTER RI
+FF98 ; [.32E4.0020.0012.FF98] # HALFWIDTH KATAKANA LETTER RI
+32F7 ; [.32E4.0020.0013.32F7] # CIRCLED KATAKANA RI
+3351 ; [.32E4.0020.001C.3351][.32CD.0020.001C.3351][.32CF.0020.001C.3351][.32E5.0020.001C.3351] # SQUARE RITTORU
+3352 ; [.32E4.0020.001C.3352][.32E3.0020.001C.3352] # SQUARE RIRA
+308B ; [.32E5.0020.000E.308B] # HIRAGANA LETTER RU
+31FD ; [.32E5.0020.000F.31FD] # KATAKANA LETTER SMALL RU
+30EB ; [.32E5.0020.0011.30EB] # KATAKANA LETTER RU
+FF99 ; [.32E5.0020.0012.FF99] # HALFWIDTH KATAKANA LETTER RU
+32F8 ; [.32E5.0020.0013.32F8] # CIRCLED KATAKANA RU
+3354 ; [.32E5.0020.001C.3354][.15BA.0020.001C.3354][.32D7.0020.001C.3354][.0000.0128.001C.3354][.32E5.0020.001C.3354] # SQUARE RUUBURU
+3353 ; [.32E5.0020.001C.3353][.32D6.0020.001C.3353][.0000.0129.001C.3353][.15BA.0020.001C.3353] # SQUARE RUPII
+308C ; [.32E6.0020.000E.308C] # HIRAGANA LETTER RE
+31FE ; [.32E6.0020.000F.31FE] # KATAKANA LETTER SMALL RE
+30EC ; [.32E6.0020.0011.30EC] # KATAKANA LETTER RE
+FF9A ; [.32E6.0020.0012.FF9A] # HALFWIDTH KATAKANA LETTER RE
+32F9 ; [.32E6.0020.0013.32F9] # CIRCLED KATAKANA RE
+3355 ; [.32E6.0020.001C.3355][.32DC.0020.001C.3355] # SQUARE REMU
+3356 ; [.32E6.0020.001C.3356][.32EC.0020.001C.3356][.32CF.0020.001C.3356][.32C4.0020.001C.3356][.0000.0128.001C.3356][.32EC.0020.001C.3356] # SQUARE RENTOGEN
+308D ; [.32E7.0020.000E.308D] # HIRAGANA LETTER RO
+31FF ; [.32E7.0020.000F.31FF] # KATAKANA LETTER SMALL RO
+30ED ; [.32E7.0020.0011.30ED] # KATAKANA LETTER RO
+FF9B ; [.32E7.0020.0012.FF9B] # HALFWIDTH KATAKANA LETTER RO
+32FA ; [.32E7.0020.0013.32FA] # CIRCLED KATAKANA RO
+308E ; [.32E8.0020.000D.308E] # HIRAGANA LETTER SMALL WA
+308F ; [.32E8.0020.000E.308F] # HIRAGANA LETTER WA
+30EE ; [.32E8.0020.000F.30EE] # KATAKANA LETTER SMALL WA
+30EF ; [.32E8.0020.0011.30EF] # KATAKANA LETTER WA
+FF9C ; [.32E8.0020.0012.FF9C] # HALFWIDTH KATAKANA LETTER WA
+32FB ; [.32E8.0020.0013.32FB] # CIRCLED KATAKANA WA
+30F7 ; [.32E8.0020.0011.30EF][.0000.0128.0002.3099] # KATAKANA LETTER VA
+3357 ; [.32E8.0020.001C.3357][.32CD.0020.001C.3357][.32CF.0020.001C.3357] # SQUARE WATTO
+3090 ; [.32E9.0020.000E.3090] # HIRAGANA LETTER WI
+30F0 ; [.32E9.0020.0011.30F0] # KATAKANA LETTER WI
+32FC ; [.32E9.0020.0013.32FC] # CIRCLED KATAKANA WI
+30F8 ; [.32E9.0020.0011.30F0][.0000.0128.0002.3099] # KATAKANA LETTER VI
+3091 ; [.32EA.0020.000E.3091] # HIRAGANA LETTER WE
+30F1 ; [.32EA.0020.0011.30F1] # KATAKANA LETTER WE
+32FD ; [.32EA.0020.0013.32FD] # CIRCLED KATAKANA WE
+30F9 ; [.32EA.0020.0011.30F1][.0000.0128.0002.3099] # KATAKANA LETTER VE
+3092 ; [.32EB.0020.000E.3092] # HIRAGANA LETTER WO
+30F2 ; [.32EB.0020.0011.30F2] # KATAKANA LETTER WO
+FF66 ; [.32EB.0020.0012.FF66] # HALFWIDTH KATAKANA LETTER WO
+32FE ; [.32EB.0020.0013.32FE] # CIRCLED KATAKANA WO
+30FA ; [.32EB.0020.0011.30F2][.0000.0128.0002.3099] # KATAKANA LETTER VO
+3093 ; [.32EC.0020.000E.3093] # HIRAGANA LETTER N
+30F3 ; [.32EC.0020.0011.30F3] # KATAKANA LETTER N
+FF9D ; [.32EC.0020.0012.FF9D] # HALFWIDTH KATAKANA LETTER N
+3105 ; [.32ED.0020.0002.3105] # BOPOMOFO LETTER B
+31A0 ; [.32ED.0020.0004.31A0][.0000.013A.0004.31A0] # BOPOMOFO LETTER BU
+3106 ; [.32EE.0020.0002.3106] # BOPOMOFO LETTER P
+31B4 ; [.32EE.0020.0019.31B4] # BOPOMOFO FINAL LETTER P
+3107 ; [.32EF.0020.0002.3107] # BOPOMOFO LETTER M
+3108 ; [.32F0.0020.0002.3108] # BOPOMOFO LETTER F
+312A ; [.32F1.0020.0002.312A] # BOPOMOFO LETTER V
+3109 ; [.32F2.0020.0002.3109] # BOPOMOFO LETTER D
+310A ; [.32F3.0020.0002.310A] # BOPOMOFO LETTER T
+31B5 ; [.32F3.0020.0019.31B5] # BOPOMOFO FINAL LETTER T
+310B ; [.32F4.0020.0002.310B] # BOPOMOFO LETTER N
+310C ; [.32F5.0020.0002.310C] # BOPOMOFO LETTER L
+310D ; [.32F6.0020.0002.310D] # BOPOMOFO LETTER G
+31A3 ; [.32F6.0020.0004.31A3][.0000.013A.0004.31A3] # BOPOMOFO LETTER GU
+310E ; [.32F7.0020.0002.310E] # BOPOMOFO LETTER K
+31B6 ; [.32F7.0020.0019.31B6] # BOPOMOFO FINAL LETTER K
+312B ; [.32F8.0020.0002.312B] # BOPOMOFO LETTER NG
+31AD ; [.32F9.0020.0002.31AD] # BOPOMOFO LETTER NGG
+310F ; [.32FA.0020.0002.310F] # BOPOMOFO LETTER H
+31B7 ; [.32FA.0020.0019.31B7] # BOPOMOFO FINAL LETTER H
+3110 ; [.32FB.0020.0002.3110] # BOPOMOFO LETTER J
+31A2 ; [.32FB.0020.0004.31A2][.0000.013A.0004.31A2] # BOPOMOFO LETTER JI
+3111 ; [.32FC.0020.0002.3111] # BOPOMOFO LETTER Q
+3112 ; [.32FD.0020.0002.3112] # BOPOMOFO LETTER X
+312C ; [.32FE.0020.0002.312C] # BOPOMOFO LETTER GN
+3113 ; [.32FF.0020.0002.3113] # BOPOMOFO LETTER ZH
+3114 ; [.3300.0020.0002.3114] # BOPOMOFO LETTER CH
+3115 ; [.3301.0020.0002.3115] # BOPOMOFO LETTER SH
+3116 ; [.3302.0020.0002.3116] # BOPOMOFO LETTER R
+3117 ; [.3303.0020.0002.3117] # BOPOMOFO LETTER Z
+31A1 ; [.3303.0020.0004.31A1][.0000.013A.0004.31A1] # BOPOMOFO LETTER ZI
+3118 ; [.3304.0020.0002.3118] # BOPOMOFO LETTER C
+3119 ; [.3305.0020.0002.3119] # BOPOMOFO LETTER S
+31B8 ; [.3306.0020.0002.31B8] # BOPOMOFO LETTER GH
+31B9 ; [.3307.0020.0002.31B9] # BOPOMOFO LETTER LH
+31BA ; [.3308.0020.0002.31BA] # BOPOMOFO LETTER ZY
+311A ; [.3309.0020.0002.311A] # BOPOMOFO LETTER A
+31A9 ; [.3309.0020.0004.31A9][.0000.013A.0004.31A9] # BOPOMOFO LETTER ANN
+311B ; [.330A.0020.0002.311B] # BOPOMOFO LETTER O
+31A7 ; [.330A.0020.0004.31A7][.0000.013A.0004.31A7] # BOPOMOFO LETTER ONN
+31A6 ; [.330B.0020.0002.31A6] # BOPOMOFO LETTER OO
+311C ; [.330C.0020.0002.311C] # BOPOMOFO LETTER E
+311D ; [.330D.0020.0002.311D] # BOPOMOFO LETTER EH
+31A4 ; [.330E.0020.0002.31A4] # BOPOMOFO LETTER EE
+31A5 ; [.330E.0020.0004.31A5][.0000.013A.0004.31A5] # BOPOMOFO LETTER ENN
+311E ; [.330F.0020.0002.311E] # BOPOMOFO LETTER AI
+31AE ; [.330F.0020.0004.31AE][.0000.013A.0004.31AE] # BOPOMOFO LETTER AINN
+311F ; [.3310.0020.0002.311F] # BOPOMOFO LETTER EI
+3120 ; [.3311.0020.0002.3120] # BOPOMOFO LETTER AU
+31AF ; [.3311.0020.0004.31AF][.0000.013A.0004.31AF] # BOPOMOFO LETTER AUNN
+3121 ; [.3312.0020.0002.3121] # BOPOMOFO LETTER OU
+3122 ; [.3313.0020.0002.3122] # BOPOMOFO LETTER AN
+3123 ; [.3314.0020.0002.3123] # BOPOMOFO LETTER EN
+3124 ; [.3315.0020.0002.3124] # BOPOMOFO LETTER ANG
+31B2 ; [.3316.0020.0002.31B2] # BOPOMOFO LETTER ONG
+3125 ; [.3317.0020.0002.3125] # BOPOMOFO LETTER ENG
+31B0 ; [.3318.0020.0002.31B0] # BOPOMOFO LETTER AM
+31B1 ; [.3319.0020.0002.31B1] # BOPOMOFO LETTER OM
+31AC ; [.331A.0020.0002.31AC] # BOPOMOFO LETTER IM
+3126 ; [.331B.0020.0002.3126] # BOPOMOFO LETTER ER
+3127 ; [.331C.0020.0002.3127] # BOPOMOFO LETTER I
+31AA ; [.331C.0020.0004.31AA][.0000.013A.0004.31AA] # BOPOMOFO LETTER INN
+31B3 ; [.331C.0020.0016.31B3][.0000.013A.0016.31B3] # BOPOMOFO LETTER INNN
+3128 ; [.331D.0020.0002.3128] # BOPOMOFO LETTER U
+31AB ; [.331D.0020.0004.31AB][.0000.013A.0004.31AB] # BOPOMOFO LETTER UNN
+31A8 ; [.331D.0020.0004.31A8][.0000.013C.0004.31A8] # BOPOMOFO LETTER IR
+3129 ; [.331E.0020.0002.3129] # BOPOMOFO LETTER IU
+312D ; [.331F.0020.0002.312D] # BOPOMOFO LETTER IH
+A000 ; [.3320.0020.0002.A000] # YI SYLLABLE IT
+A001 ; [.3321.0020.0002.A001] # YI SYLLABLE IX
+A002 ; [.3322.0020.0002.A002] # YI SYLLABLE I
+A003 ; [.3323.0020.0002.A003] # YI SYLLABLE IP
+A004 ; [.3324.0020.0002.A004] # YI SYLLABLE IET
+A005 ; [.3325.0020.0002.A005] # YI SYLLABLE IEX
+A006 ; [.3326.0020.0002.A006] # YI SYLLABLE IE
+A007 ; [.3327.0020.0002.A007] # YI SYLLABLE IEP
+A008 ; [.3328.0020.0002.A008] # YI SYLLABLE AT
+A009 ; [.3329.0020.0002.A009] # YI SYLLABLE AX
+A00A ; [.332A.0020.0002.A00A] # YI SYLLABLE A
+A00B ; [.332B.0020.0002.A00B] # YI SYLLABLE AP
+A00C ; [.332C.0020.0002.A00C] # YI SYLLABLE UOX
+A00D ; [.332D.0020.0002.A00D] # YI SYLLABLE UO
+A00E ; [.332E.0020.0002.A00E] # YI SYLLABLE UOP
+A00F ; [.332F.0020.0002.A00F] # YI SYLLABLE OT
+A010 ; [.3330.0020.0002.A010] # YI SYLLABLE OX
+A011 ; [.3331.0020.0002.A011] # YI SYLLABLE O
+A012 ; [.3332.0020.0002.A012] # YI SYLLABLE OP
+A013 ; [.3333.0020.0002.A013] # YI SYLLABLE EX
+A014 ; [.3334.0020.0002.A014] # YI SYLLABLE E
+A015 ; [.3335.0020.0002.A015] # YI SYLLABLE WU
+A016 ; [.3336.0020.0002.A016] # YI SYLLABLE BIT
+A017 ; [.3337.0020.0002.A017] # YI SYLLABLE BIX
+A018 ; [.3338.0020.0002.A018] # YI SYLLABLE BI
+A019 ; [.3339.0020.0002.A019] # YI SYLLABLE BIP
+A01A ; [.333A.0020.0002.A01A] # YI SYLLABLE BIET
+A01B ; [.333B.0020.0002.A01B] # YI SYLLABLE BIEX
+A01C ; [.333C.0020.0002.A01C] # YI SYLLABLE BIE
+A01D ; [.333D.0020.0002.A01D] # YI SYLLABLE BIEP
+A01E ; [.333E.0020.0002.A01E] # YI SYLLABLE BAT
+A01F ; [.333F.0020.0002.A01F] # YI SYLLABLE BAX
+A020 ; [.3340.0020.0002.A020] # YI SYLLABLE BA
+A021 ; [.3341.0020.0002.A021] # YI SYLLABLE BAP
+A022 ; [.3342.0020.0002.A022] # YI SYLLABLE BUOX
+A023 ; [.3343.0020.0002.A023] # YI SYLLABLE BUO
+A024 ; [.3344.0020.0002.A024] # YI SYLLABLE BUOP
+A025 ; [.3345.0020.0002.A025] # YI SYLLABLE BOT
+A026 ; [.3346.0020.0002.A026] # YI SYLLABLE BOX
+A027 ; [.3347.0020.0002.A027] # YI SYLLABLE BO
+A028 ; [.3348.0020.0002.A028] # YI SYLLABLE BOP
+A029 ; [.3349.0020.0002.A029] # YI SYLLABLE BEX
+A02A ; [.334A.0020.0002.A02A] # YI SYLLABLE BE
+A02B ; [.334B.0020.0002.A02B] # YI SYLLABLE BEP
+A02C ; [.334C.0020.0002.A02C] # YI SYLLABLE BUT
+A02D ; [.334D.0020.0002.A02D] # YI SYLLABLE BUX
+A02E ; [.334E.0020.0002.A02E] # YI SYLLABLE BU
+A02F ; [.334F.0020.0002.A02F] # YI SYLLABLE BUP
+A030 ; [.3350.0020.0002.A030] # YI SYLLABLE BURX
+A031 ; [.3351.0020.0002.A031] # YI SYLLABLE BUR
+A032 ; [.3352.0020.0002.A032] # YI SYLLABLE BYT
+A033 ; [.3353.0020.0002.A033] # YI SYLLABLE BYX
+A034 ; [.3354.0020.0002.A034] # YI SYLLABLE BY
+A035 ; [.3355.0020.0002.A035] # YI SYLLABLE BYP
+A036 ; [.3356.0020.0002.A036] # YI SYLLABLE BYRX
+A037 ; [.3357.0020.0002.A037] # YI SYLLABLE BYR
+A038 ; [.3358.0020.0002.A038] # YI SYLLABLE PIT
+A039 ; [.3359.0020.0002.A039] # YI SYLLABLE PIX
+A03A ; [.335A.0020.0002.A03A] # YI SYLLABLE PI
+A03B ; [.335B.0020.0002.A03B] # YI SYLLABLE PIP
+A03C ; [.335C.0020.0002.A03C] # YI SYLLABLE PIEX
+A03D ; [.335D.0020.0002.A03D] # YI SYLLABLE PIE
+A03E ; [.335E.0020.0002.A03E] # YI SYLLABLE PIEP
+A03F ; [.335F.0020.0002.A03F] # YI SYLLABLE PAT
+A040 ; [.3360.0020.0002.A040] # YI SYLLABLE PAX
+A041 ; [.3361.0020.0002.A041] # YI SYLLABLE PA
+A042 ; [.3362.0020.0002.A042] # YI SYLLABLE PAP
+A043 ; [.3363.0020.0002.A043] # YI SYLLABLE PUOX
+A044 ; [.3364.0020.0002.A044] # YI SYLLABLE PUO
+A045 ; [.3365.0020.0002.A045] # YI SYLLABLE PUOP
+A046 ; [.3366.0020.0002.A046] # YI SYLLABLE POT
+A047 ; [.3367.0020.0002.A047] # YI SYLLABLE POX
+A048 ; [.3368.0020.0002.A048] # YI SYLLABLE PO
+A049 ; [.3369.0020.0002.A049] # YI SYLLABLE POP
+A04A ; [.336A.0020.0002.A04A] # YI SYLLABLE PUT
+A04B ; [.336B.0020.0002.A04B] # YI SYLLABLE PUX
+A04C ; [.336C.0020.0002.A04C] # YI SYLLABLE PU
+A04D ; [.336D.0020.0002.A04D] # YI SYLLABLE PUP
+A04E ; [.336E.0020.0002.A04E] # YI SYLLABLE PURX
+A04F ; [.336F.0020.0002.A04F] # YI SYLLABLE PUR
+A050 ; [.3370.0020.0002.A050] # YI SYLLABLE PYT
+A051 ; [.3371.0020.0002.A051] # YI SYLLABLE PYX
+A052 ; [.3372.0020.0002.A052] # YI SYLLABLE PY
+A053 ; [.3373.0020.0002.A053] # YI SYLLABLE PYP
+A054 ; [.3374.0020.0002.A054] # YI SYLLABLE PYRX
+A055 ; [.3375.0020.0002.A055] # YI SYLLABLE PYR
+A056 ; [.3376.0020.0002.A056] # YI SYLLABLE BBIT
+A057 ; [.3377.0020.0002.A057] # YI SYLLABLE BBIX
+A058 ; [.3378.0020.0002.A058] # YI SYLLABLE BBI
+A059 ; [.3379.0020.0002.A059] # YI SYLLABLE BBIP
+A05A ; [.337A.0020.0002.A05A] # YI SYLLABLE BBIET
+A05B ; [.337B.0020.0002.A05B] # YI SYLLABLE BBIEX
+A05C ; [.337C.0020.0002.A05C] # YI SYLLABLE BBIE
+A05D ; [.337D.0020.0002.A05D] # YI SYLLABLE BBIEP
+A05E ; [.337E.0020.0002.A05E] # YI SYLLABLE BBAT
+A05F ; [.337F.0020.0002.A05F] # YI SYLLABLE BBAX
+A060 ; [.3380.0020.0002.A060] # YI SYLLABLE BBA
+A061 ; [.3381.0020.0002.A061] # YI SYLLABLE BBAP
+A062 ; [.3382.0020.0002.A062] # YI SYLLABLE BBUOX
+A063 ; [.3383.0020.0002.A063] # YI SYLLABLE BBUO
+A064 ; [.3384.0020.0002.A064] # YI SYLLABLE BBUOP
+A065 ; [.3385.0020.0002.A065] # YI SYLLABLE BBOT
+A066 ; [.3386.0020.0002.A066] # YI SYLLABLE BBOX
+A067 ; [.3387.0020.0002.A067] # YI SYLLABLE BBO
+A068 ; [.3388.0020.0002.A068] # YI SYLLABLE BBOP
+A069 ; [.3389.0020.0002.A069] # YI SYLLABLE BBEX
+A06A ; [.338A.0020.0002.A06A] # YI SYLLABLE BBE
+A06B ; [.338B.0020.0002.A06B] # YI SYLLABLE BBEP
+A06C ; [.338C.0020.0002.A06C] # YI SYLLABLE BBUT
+A06D ; [.338D.0020.0002.A06D] # YI SYLLABLE BBUX
+A06E ; [.338E.0020.0002.A06E] # YI SYLLABLE BBU
+A06F ; [.338F.0020.0002.A06F] # YI SYLLABLE BBUP
+A070 ; [.3390.0020.0002.A070] # YI SYLLABLE BBURX
+A071 ; [.3391.0020.0002.A071] # YI SYLLABLE BBUR
+A072 ; [.3392.0020.0002.A072] # YI SYLLABLE BBYT
+A073 ; [.3393.0020.0002.A073] # YI SYLLABLE BBYX
+A074 ; [.3394.0020.0002.A074] # YI SYLLABLE BBY
+A075 ; [.3395.0020.0002.A075] # YI SYLLABLE BBYP
+A076 ; [.3396.0020.0002.A076] # YI SYLLABLE NBIT
+A077 ; [.3397.0020.0002.A077] # YI SYLLABLE NBIX
+A078 ; [.3398.0020.0002.A078] # YI SYLLABLE NBI
+A079 ; [.3399.0020.0002.A079] # YI SYLLABLE NBIP
+A07A ; [.339A.0020.0002.A07A] # YI SYLLABLE NBIEX
+A07B ; [.339B.0020.0002.A07B] # YI SYLLABLE NBIE
+A07C ; [.339C.0020.0002.A07C] # YI SYLLABLE NBIEP
+A07D ; [.339D.0020.0002.A07D] # YI SYLLABLE NBAT
+A07E ; [.339E.0020.0002.A07E] # YI SYLLABLE NBAX
+A07F ; [.339F.0020.0002.A07F] # YI SYLLABLE NBA
+A080 ; [.33A0.0020.0002.A080] # YI SYLLABLE NBAP
+A081 ; [.33A1.0020.0002.A081] # YI SYLLABLE NBOT
+A082 ; [.33A2.0020.0002.A082] # YI SYLLABLE NBOX
+A083 ; [.33A3.0020.0002.A083] # YI SYLLABLE NBO
+A084 ; [.33A4.0020.0002.A084] # YI SYLLABLE NBOP
+A085 ; [.33A5.0020.0002.A085] # YI SYLLABLE NBUT
+A086 ; [.33A6.0020.0002.A086] # YI SYLLABLE NBUX
+A087 ; [.33A7.0020.0002.A087] # YI SYLLABLE NBU
+A088 ; [.33A8.0020.0002.A088] # YI SYLLABLE NBUP
+A089 ; [.33A9.0020.0002.A089] # YI SYLLABLE NBURX
+A08A ; [.33AA.0020.0002.A08A] # YI SYLLABLE NBUR
+A08B ; [.33AB.0020.0002.A08B] # YI SYLLABLE NBYT
+A08C ; [.33AC.0020.0002.A08C] # YI SYLLABLE NBYX
+A08D ; [.33AD.0020.0002.A08D] # YI SYLLABLE NBY
+A08E ; [.33AE.0020.0002.A08E] # YI SYLLABLE NBYP
+A08F ; [.33AF.0020.0002.A08F] # YI SYLLABLE NBYRX
+A090 ; [.33B0.0020.0002.A090] # YI SYLLABLE NBYR
+A091 ; [.33B1.0020.0002.A091] # YI SYLLABLE HMIT
+A092 ; [.33B2.0020.0002.A092] # YI SYLLABLE HMIX
+A093 ; [.33B3.0020.0002.A093] # YI SYLLABLE HMI
+A094 ; [.33B4.0020.0002.A094] # YI SYLLABLE HMIP
+A095 ; [.33B5.0020.0002.A095] # YI SYLLABLE HMIEX
+A096 ; [.33B6.0020.0002.A096] # YI SYLLABLE HMIE
+A097 ; [.33B7.0020.0002.A097] # YI SYLLABLE HMIEP
+A098 ; [.33B8.0020.0002.A098] # YI SYLLABLE HMAT
+A099 ; [.33B9.0020.0002.A099] # YI SYLLABLE HMAX
+A09A ; [.33BA.0020.0002.A09A] # YI SYLLABLE HMA
+A09B ; [.33BB.0020.0002.A09B] # YI SYLLABLE HMAP
+A09C ; [.33BC.0020.0002.A09C] # YI SYLLABLE HMUOX
+A09D ; [.33BD.0020.0002.A09D] # YI SYLLABLE HMUO
+A09E ; [.33BE.0020.0002.A09E] # YI SYLLABLE HMUOP
+A09F ; [.33BF.0020.0002.A09F] # YI SYLLABLE HMOT
+A0A0 ; [.33C0.0020.0002.A0A0] # YI SYLLABLE HMOX
+A0A1 ; [.33C1.0020.0002.A0A1] # YI SYLLABLE HMO
+A0A2 ; [.33C2.0020.0002.A0A2] # YI SYLLABLE HMOP
+A0A3 ; [.33C3.0020.0002.A0A3] # YI SYLLABLE HMUT
+A0A4 ; [.33C4.0020.0002.A0A4] # YI SYLLABLE HMUX
+A0A5 ; [.33C5.0020.0002.A0A5] # YI SYLLABLE HMU
+A0A6 ; [.33C6.0020.0002.A0A6] # YI SYLLABLE HMUP
+A0A7 ; [.33C7.0020.0002.A0A7] # YI SYLLABLE HMURX
+A0A8 ; [.33C8.0020.0002.A0A8] # YI SYLLABLE HMUR
+A0A9 ; [.33C9.0020.0002.A0A9] # YI SYLLABLE HMYX
+A0AA ; [.33CA.0020.0002.A0AA] # YI SYLLABLE HMY
+A0AB ; [.33CB.0020.0002.A0AB] # YI SYLLABLE HMYP
+A0AC ; [.33CC.0020.0002.A0AC] # YI SYLLABLE HMYRX
+A0AD ; [.33CD.0020.0002.A0AD] # YI SYLLABLE HMYR
+A0AE ; [.33CE.0020.0002.A0AE] # YI SYLLABLE MIT
+A0AF ; [.33CF.0020.0002.A0AF] # YI SYLLABLE MIX
+A0B0 ; [.33D0.0020.0002.A0B0] # YI SYLLABLE MI
+A0B1 ; [.33D1.0020.0002.A0B1] # YI SYLLABLE MIP
+A0B2 ; [.33D2.0020.0002.A0B2] # YI SYLLABLE MIEX
+A0B3 ; [.33D3.0020.0002.A0B3] # YI SYLLABLE MIE
+A0B4 ; [.33D4.0020.0002.A0B4] # YI SYLLABLE MIEP
+A0B5 ; [.33D5.0020.0002.A0B5] # YI SYLLABLE MAT
+A0B6 ; [.33D6.0020.0002.A0B6] # YI SYLLABLE MAX
+A0B7 ; [.33D7.0020.0002.A0B7] # YI SYLLABLE MA
+A0B8 ; [.33D8.0020.0002.A0B8] # YI SYLLABLE MAP
+A0B9 ; [.33D9.0020.0002.A0B9] # YI SYLLABLE MUOT
+A0BA ; [.33DA.0020.0002.A0BA] # YI SYLLABLE MUOX
+A0BB ; [.33DB.0020.0002.A0BB] # YI SYLLABLE MUO
+A0BC ; [.33DC.0020.0002.A0BC] # YI SYLLABLE MUOP
+A0BD ; [.33DD.0020.0002.A0BD] # YI SYLLABLE MOT
+A0BE ; [.33DE.0020.0002.A0BE] # YI SYLLABLE MOX
+A0BF ; [.33DF.0020.0002.A0BF] # YI SYLLABLE MO
+A0C0 ; [.33E0.0020.0002.A0C0] # YI SYLLABLE MOP
+A0C1 ; [.33E1.0020.0002.A0C1] # YI SYLLABLE MEX
+A0C2 ; [.33E2.0020.0002.A0C2] # YI SYLLABLE ME
+A0C3 ; [.33E3.0020.0002.A0C3] # YI SYLLABLE MUT
+A0C4 ; [.33E4.0020.0002.A0C4] # YI SYLLABLE MUX
+A0C5 ; [.33E5.0020.0002.A0C5] # YI SYLLABLE MU
+A0C6 ; [.33E6.0020.0002.A0C6] # YI SYLLABLE MUP
+A0C7 ; [.33E7.0020.0002.A0C7] # YI SYLLABLE MURX
+A0C8 ; [.33E8.0020.0002.A0C8] # YI SYLLABLE MUR
+A0C9 ; [.33E9.0020.0002.A0C9] # YI SYLLABLE MYT
+A0CA ; [.33EA.0020.0002.A0CA] # YI SYLLABLE MYX
+A0CB ; [.33EB.0020.0002.A0CB] # YI SYLLABLE MY
+A0CC ; [.33EC.0020.0002.A0CC] # YI SYLLABLE MYP
+A0CD ; [.33ED.0020.0002.A0CD] # YI SYLLABLE FIT
+A0CE ; [.33EE.0020.0002.A0CE] # YI SYLLABLE FIX
+A0CF ; [.33EF.0020.0002.A0CF] # YI SYLLABLE FI
+A0D0 ; [.33F0.0020.0002.A0D0] # YI SYLLABLE FIP
+A0D1 ; [.33F1.0020.0002.A0D1] # YI SYLLABLE FAT
+A0D2 ; [.33F2.0020.0002.A0D2] # YI SYLLABLE FAX
+A0D3 ; [.33F3.0020.0002.A0D3] # YI SYLLABLE FA
+A0D4 ; [.33F4.0020.0002.A0D4] # YI SYLLABLE FAP
+A0D5 ; [.33F5.0020.0002.A0D5] # YI SYLLABLE FOX
+A0D6 ; [.33F6.0020.0002.A0D6] # YI SYLLABLE FO
+A0D7 ; [.33F7.0020.0002.A0D7] # YI SYLLABLE FOP
+A0D8 ; [.33F8.0020.0002.A0D8] # YI SYLLABLE FUT
+A0D9 ; [.33F9.0020.0002.A0D9] # YI SYLLABLE FUX
+A0DA ; [.33FA.0020.0002.A0DA] # YI SYLLABLE FU
+A0DB ; [.33FB.0020.0002.A0DB] # YI SYLLABLE FUP
+A0DC ; [.33FC.0020.0002.A0DC] # YI SYLLABLE FURX
+A0DD ; [.33FD.0020.0002.A0DD] # YI SYLLABLE FUR
+A0DE ; [.33FE.0020.0002.A0DE] # YI SYLLABLE FYT
+A0DF ; [.33FF.0020.0002.A0DF] # YI SYLLABLE FYX
+A0E0 ; [.3400.0020.0002.A0E0] # YI SYLLABLE FY
+A0E1 ; [.3401.0020.0002.A0E1] # YI SYLLABLE FYP
+A0E2 ; [.3402.0020.0002.A0E2] # YI SYLLABLE VIT
+A0E3 ; [.3403.0020.0002.A0E3] # YI SYLLABLE VIX
+A0E4 ; [.3404.0020.0002.A0E4] # YI SYLLABLE VI
+A0E5 ; [.3405.0020.0002.A0E5] # YI SYLLABLE VIP
+A0E6 ; [.3406.0020.0002.A0E6] # YI SYLLABLE VIET
+A0E7 ; [.3407.0020.0002.A0E7] # YI SYLLABLE VIEX
+A0E8 ; [.3408.0020.0002.A0E8] # YI SYLLABLE VIE
+A0E9 ; [.3409.0020.0002.A0E9] # YI SYLLABLE VIEP
+A0EA ; [.340A.0020.0002.A0EA] # YI SYLLABLE VAT
+A0EB ; [.340B.0020.0002.A0EB] # YI SYLLABLE VAX
+A0EC ; [.340C.0020.0002.A0EC] # YI SYLLABLE VA
+A0ED ; [.340D.0020.0002.A0ED] # YI SYLLABLE VAP
+A0EE ; [.340E.0020.0002.A0EE] # YI SYLLABLE VOT
+A0EF ; [.340F.0020.0002.A0EF] # YI SYLLABLE VOX
+A0F0 ; [.3410.0020.0002.A0F0] # YI SYLLABLE VO
+A0F1 ; [.3411.0020.0002.A0F1] # YI SYLLABLE VOP
+A0F2 ; [.3412.0020.0002.A0F2] # YI SYLLABLE VEX
+A0F3 ; [.3413.0020.0002.A0F3] # YI SYLLABLE VEP
+A0F4 ; [.3414.0020.0002.A0F4] # YI SYLLABLE VUT
+A0F5 ; [.3415.0020.0002.A0F5] # YI SYLLABLE VUX
+A0F6 ; [.3416.0020.0002.A0F6] # YI SYLLABLE VU
+A0F7 ; [.3417.0020.0002.A0F7] # YI SYLLABLE VUP
+A0F8 ; [.3418.0020.0002.A0F8] # YI SYLLABLE VURX
+A0F9 ; [.3419.0020.0002.A0F9] # YI SYLLABLE VUR
+A0FA ; [.341A.0020.0002.A0FA] # YI SYLLABLE VYT
+A0FB ; [.341B.0020.0002.A0FB] # YI SYLLABLE VYX
+A0FC ; [.341C.0020.0002.A0FC] # YI SYLLABLE VY
+A0FD ; [.341D.0020.0002.A0FD] # YI SYLLABLE VYP
+A0FE ; [.341E.0020.0002.A0FE] # YI SYLLABLE VYRX
+A0FF ; [.341F.0020.0002.A0FF] # YI SYLLABLE VYR
+A100 ; [.3420.0020.0002.A100] # YI SYLLABLE DIT
+A101 ; [.3421.0020.0002.A101] # YI SYLLABLE DIX
+A102 ; [.3422.0020.0002.A102] # YI SYLLABLE DI
+A103 ; [.3423.0020.0002.A103] # YI SYLLABLE DIP
+A104 ; [.3424.0020.0002.A104] # YI SYLLABLE DIEX
+A105 ; [.3425.0020.0002.A105] # YI SYLLABLE DIE
+A106 ; [.3426.0020.0002.A106] # YI SYLLABLE DIEP
+A107 ; [.3427.0020.0002.A107] # YI SYLLABLE DAT
+A108 ; [.3428.0020.0002.A108] # YI SYLLABLE DAX
+A109 ; [.3429.0020.0002.A109] # YI SYLLABLE DA
+A10A ; [.342A.0020.0002.A10A] # YI SYLLABLE DAP
+A10B ; [.342B.0020.0002.A10B] # YI SYLLABLE DUOX
+A10C ; [.342C.0020.0002.A10C] # YI SYLLABLE DUO
+A10D ; [.342D.0020.0002.A10D] # YI SYLLABLE DOT
+A10E ; [.342E.0020.0002.A10E] # YI SYLLABLE DOX
+A10F ; [.342F.0020.0002.A10F] # YI SYLLABLE DO
+A110 ; [.3430.0020.0002.A110] # YI SYLLABLE DOP
+A111 ; [.3431.0020.0002.A111] # YI SYLLABLE DEX
+A112 ; [.3432.0020.0002.A112] # YI SYLLABLE DE
+A113 ; [.3433.0020.0002.A113] # YI SYLLABLE DEP
+A114 ; [.3434.0020.0002.A114] # YI SYLLABLE DUT
+A115 ; [.3435.0020.0002.A115] # YI SYLLABLE DUX
+A116 ; [.3436.0020.0002.A116] # YI SYLLABLE DU
+A117 ; [.3437.0020.0002.A117] # YI SYLLABLE DUP
+A118 ; [.3438.0020.0002.A118] # YI SYLLABLE DURX
+A119 ; [.3439.0020.0002.A119] # YI SYLLABLE DUR
+A11A ; [.343A.0020.0002.A11A] # YI SYLLABLE TIT
+A11B ; [.343B.0020.0002.A11B] # YI SYLLABLE TIX
+A11C ; [.343C.0020.0002.A11C] # YI SYLLABLE TI
+A11D ; [.343D.0020.0002.A11D] # YI SYLLABLE TIP
+A11E ; [.343E.0020.0002.A11E] # YI SYLLABLE TIEX
+A11F ; [.343F.0020.0002.A11F] # YI SYLLABLE TIE
+A120 ; [.3440.0020.0002.A120] # YI SYLLABLE TIEP
+A121 ; [.3441.0020.0002.A121] # YI SYLLABLE TAT
+A122 ; [.3442.0020.0002.A122] # YI SYLLABLE TAX
+A123 ; [.3443.0020.0002.A123] # YI SYLLABLE TA
+A124 ; [.3444.0020.0002.A124] # YI SYLLABLE TAP
+A125 ; [.3445.0020.0002.A125] # YI SYLLABLE TUOT
+A126 ; [.3446.0020.0002.A126] # YI SYLLABLE TUOX
+A127 ; [.3447.0020.0002.A127] # YI SYLLABLE TUO
+A128 ; [.3448.0020.0002.A128] # YI SYLLABLE TUOP
+A129 ; [.3449.0020.0002.A129] # YI SYLLABLE TOT
+A12A ; [.344A.0020.0002.A12A] # YI SYLLABLE TOX
+A12B ; [.344B.0020.0002.A12B] # YI SYLLABLE TO
+A12C ; [.344C.0020.0002.A12C] # YI SYLLABLE TOP
+A12D ; [.344D.0020.0002.A12D] # YI SYLLABLE TEX
+A12E ; [.344E.0020.0002.A12E] # YI SYLLABLE TE
+A12F ; [.344F.0020.0002.A12F] # YI SYLLABLE TEP
+A130 ; [.3450.0020.0002.A130] # YI SYLLABLE TUT
+A131 ; [.3451.0020.0002.A131] # YI SYLLABLE TUX
+A132 ; [.3452.0020.0002.A132] # YI SYLLABLE TU
+A133 ; [.3453.0020.0002.A133] # YI SYLLABLE TUP
+A134 ; [.3454.0020.0002.A134] # YI SYLLABLE TURX
+A135 ; [.3455.0020.0002.A135] # YI SYLLABLE TUR
+A136 ; [.3456.0020.0002.A136] # YI SYLLABLE DDIT
+A137 ; [.3457.0020.0002.A137] # YI SYLLABLE DDIX
+A138 ; [.3458.0020.0002.A138] # YI SYLLABLE DDI
+A139 ; [.3459.0020.0002.A139] # YI SYLLABLE DDIP
+A13A ; [.345A.0020.0002.A13A] # YI SYLLABLE DDIEX
+A13B ; [.345B.0020.0002.A13B] # YI SYLLABLE DDIE
+A13C ; [.345C.0020.0002.A13C] # YI SYLLABLE DDIEP
+A13D ; [.345D.0020.0002.A13D] # YI SYLLABLE DDAT
+A13E ; [.345E.0020.0002.A13E] # YI SYLLABLE DDAX
+A13F ; [.345F.0020.0002.A13F] # YI SYLLABLE DDA
+A140 ; [.3460.0020.0002.A140] # YI SYLLABLE DDAP
+A141 ; [.3461.0020.0002.A141] # YI SYLLABLE DDUOX
+A142 ; [.3462.0020.0002.A142] # YI SYLLABLE DDUO
+A143 ; [.3463.0020.0002.A143] # YI SYLLABLE DDUOP
+A144 ; [.3464.0020.0002.A144] # YI SYLLABLE DDOT
+A145 ; [.3465.0020.0002.A145] # YI SYLLABLE DDOX
+A146 ; [.3466.0020.0002.A146] # YI SYLLABLE DDO
+A147 ; [.3467.0020.0002.A147] # YI SYLLABLE DDOP
+A148 ; [.3468.0020.0002.A148] # YI SYLLABLE DDEX
+A149 ; [.3469.0020.0002.A149] # YI SYLLABLE DDE
+A14A ; [.346A.0020.0002.A14A] # YI SYLLABLE DDEP
+A14B ; [.346B.0020.0002.A14B] # YI SYLLABLE DDUT
+A14C ; [.346C.0020.0002.A14C] # YI SYLLABLE DDUX
+A14D ; [.346D.0020.0002.A14D] # YI SYLLABLE DDU
+A14E ; [.346E.0020.0002.A14E] # YI SYLLABLE DDUP
+A14F ; [.346F.0020.0002.A14F] # YI SYLLABLE DDURX
+A150 ; [.3470.0020.0002.A150] # YI SYLLABLE DDUR
+A151 ; [.3471.0020.0002.A151] # YI SYLLABLE NDIT
+A152 ; [.3472.0020.0002.A152] # YI SYLLABLE NDIX
+A153 ; [.3473.0020.0002.A153] # YI SYLLABLE NDI
+A154 ; [.3474.0020.0002.A154] # YI SYLLABLE NDIP
+A155 ; [.3475.0020.0002.A155] # YI SYLLABLE NDIEX
+A156 ; [.3476.0020.0002.A156] # YI SYLLABLE NDIE
+A157 ; [.3477.0020.0002.A157] # YI SYLLABLE NDAT
+A158 ; [.3478.0020.0002.A158] # YI SYLLABLE NDAX
+A159 ; [.3479.0020.0002.A159] # YI SYLLABLE NDA
+A15A ; [.347A.0020.0002.A15A] # YI SYLLABLE NDAP
+A15B ; [.347B.0020.0002.A15B] # YI SYLLABLE NDOT
+A15C ; [.347C.0020.0002.A15C] # YI SYLLABLE NDOX
+A15D ; [.347D.0020.0002.A15D] # YI SYLLABLE NDO
+A15E ; [.347E.0020.0002.A15E] # YI SYLLABLE NDOP
+A15F ; [.347F.0020.0002.A15F] # YI SYLLABLE NDEX
+A160 ; [.3480.0020.0002.A160] # YI SYLLABLE NDE
+A161 ; [.3481.0020.0002.A161] # YI SYLLABLE NDEP
+A162 ; [.3482.0020.0002.A162] # YI SYLLABLE NDUT
+A163 ; [.3483.0020.0002.A163] # YI SYLLABLE NDUX
+A164 ; [.3484.0020.0002.A164] # YI SYLLABLE NDU
+A165 ; [.3485.0020.0002.A165] # YI SYLLABLE NDUP
+A166 ; [.3486.0020.0002.A166] # YI SYLLABLE NDURX
+A167 ; [.3487.0020.0002.A167] # YI SYLLABLE NDUR
+A168 ; [.3488.0020.0002.A168] # YI SYLLABLE HNIT
+A169 ; [.3489.0020.0002.A169] # YI SYLLABLE HNIX
+A16A ; [.348A.0020.0002.A16A] # YI SYLLABLE HNI
+A16B ; [.348B.0020.0002.A16B] # YI SYLLABLE HNIP
+A16C ; [.348C.0020.0002.A16C] # YI SYLLABLE HNIET
+A16D ; [.348D.0020.0002.A16D] # YI SYLLABLE HNIEX
+A16E ; [.348E.0020.0002.A16E] # YI SYLLABLE HNIE
+A16F ; [.348F.0020.0002.A16F] # YI SYLLABLE HNIEP
+A170 ; [.3490.0020.0002.A170] # YI SYLLABLE HNAT
+A171 ; [.3491.0020.0002.A171] # YI SYLLABLE HNAX
+A172 ; [.3492.0020.0002.A172] # YI SYLLABLE HNA
+A173 ; [.3493.0020.0002.A173] # YI SYLLABLE HNAP
+A174 ; [.3494.0020.0002.A174] # YI SYLLABLE HNUOX
+A175 ; [.3495.0020.0002.A175] # YI SYLLABLE HNUO
+A176 ; [.3496.0020.0002.A176] # YI SYLLABLE HNOT
+A177 ; [.3497.0020.0002.A177] # YI SYLLABLE HNOX
+A178 ; [.3498.0020.0002.A178] # YI SYLLABLE HNOP
+A179 ; [.3499.0020.0002.A179] # YI SYLLABLE HNEX
+A17A ; [.349A.0020.0002.A17A] # YI SYLLABLE HNE
+A17B ; [.349B.0020.0002.A17B] # YI SYLLABLE HNEP
+A17C ; [.349C.0020.0002.A17C] # YI SYLLABLE HNUT
+A17D ; [.349D.0020.0002.A17D] # YI SYLLABLE NIT
+A17E ; [.349E.0020.0002.A17E] # YI SYLLABLE NIX
+A17F ; [.349F.0020.0002.A17F] # YI SYLLABLE NI
+A180 ; [.34A0.0020.0002.A180] # YI SYLLABLE NIP
+A181 ; [.34A1.0020.0002.A181] # YI SYLLABLE NIEX
+A182 ; [.34A2.0020.0002.A182] # YI SYLLABLE NIE
+A183 ; [.34A3.0020.0002.A183] # YI SYLLABLE NIEP
+A184 ; [.34A4.0020.0002.A184] # YI SYLLABLE NAX
+A185 ; [.34A5.0020.0002.A185] # YI SYLLABLE NA
+A186 ; [.34A6.0020.0002.A186] # YI SYLLABLE NAP
+A187 ; [.34A7.0020.0002.A187] # YI SYLLABLE NUOX
+A188 ; [.34A8.0020.0002.A188] # YI SYLLABLE NUO
+A189 ; [.34A9.0020.0002.A189] # YI SYLLABLE NUOP
+A18A ; [.34AA.0020.0002.A18A] # YI SYLLABLE NOT
+A18B ; [.34AB.0020.0002.A18B] # YI SYLLABLE NOX
+A18C ; [.34AC.0020.0002.A18C] # YI SYLLABLE NO
+A18D ; [.34AD.0020.0002.A18D] # YI SYLLABLE NOP
+A18E ; [.34AE.0020.0002.A18E] # YI SYLLABLE NEX
+A18F ; [.34AF.0020.0002.A18F] # YI SYLLABLE NE
+A190 ; [.34B0.0020.0002.A190] # YI SYLLABLE NEP
+A191 ; [.34B1.0020.0002.A191] # YI SYLLABLE NUT
+A192 ; [.34B2.0020.0002.A192] # YI SYLLABLE NUX
+A193 ; [.34B3.0020.0002.A193] # YI SYLLABLE NU
+A194 ; [.34B4.0020.0002.A194] # YI SYLLABLE NUP
+A195 ; [.34B5.0020.0002.A195] # YI SYLLABLE NURX
+A196 ; [.34B6.0020.0002.A196] # YI SYLLABLE NUR
+A197 ; [.34B7.0020.0002.A197] # YI SYLLABLE HLIT
+A198 ; [.34B8.0020.0002.A198] # YI SYLLABLE HLIX
+A199 ; [.34B9.0020.0002.A199] # YI SYLLABLE HLI
+A19A ; [.34BA.0020.0002.A19A] # YI SYLLABLE HLIP
+A19B ; [.34BB.0020.0002.A19B] # YI SYLLABLE HLIEX
+A19C ; [.34BC.0020.0002.A19C] # YI SYLLABLE HLIE
+A19D ; [.34BD.0020.0002.A19D] # YI SYLLABLE HLIEP
+A19E ; [.34BE.0020.0002.A19E] # YI SYLLABLE HLAT
+A19F ; [.34BF.0020.0002.A19F] # YI SYLLABLE HLAX
+A1A0 ; [.34C0.0020.0002.A1A0] # YI SYLLABLE HLA
+A1A1 ; [.34C1.0020.0002.A1A1] # YI SYLLABLE HLAP
+A1A2 ; [.34C2.0020.0002.A1A2] # YI SYLLABLE HLUOX
+A1A3 ; [.34C3.0020.0002.A1A3] # YI SYLLABLE HLUO
+A1A4 ; [.34C4.0020.0002.A1A4] # YI SYLLABLE HLUOP
+A1A5 ; [.34C5.0020.0002.A1A5] # YI SYLLABLE HLOX
+A1A6 ; [.34C6.0020.0002.A1A6] # YI SYLLABLE HLO
+A1A7 ; [.34C7.0020.0002.A1A7] # YI SYLLABLE HLOP
+A1A8 ; [.34C8.0020.0002.A1A8] # YI SYLLABLE HLEX
+A1A9 ; [.34C9.0020.0002.A1A9] # YI SYLLABLE HLE
+A1AA ; [.34CA.0020.0002.A1AA] # YI SYLLABLE HLEP
+A1AB ; [.34CB.0020.0002.A1AB] # YI SYLLABLE HLUT
+A1AC ; [.34CC.0020.0002.A1AC] # YI SYLLABLE HLUX
+A1AD ; [.34CD.0020.0002.A1AD] # YI SYLLABLE HLU
+A1AE ; [.34CE.0020.0002.A1AE] # YI SYLLABLE HLUP
+A1AF ; [.34CF.0020.0002.A1AF] # YI SYLLABLE HLURX
+A1B0 ; [.34D0.0020.0002.A1B0] # YI SYLLABLE HLUR
+A1B1 ; [.34D1.0020.0002.A1B1] # YI SYLLABLE HLYT
+A1B2 ; [.34D2.0020.0002.A1B2] # YI SYLLABLE HLYX
+A1B3 ; [.34D3.0020.0002.A1B3] # YI SYLLABLE HLY
+A1B4 ; [.34D4.0020.0002.A1B4] # YI SYLLABLE HLYP
+A1B5 ; [.34D5.0020.0002.A1B5] # YI SYLLABLE HLYRX
+A1B6 ; [.34D6.0020.0002.A1B6] # YI SYLLABLE HLYR
+A1B7 ; [.34D7.0020.0002.A1B7] # YI SYLLABLE LIT
+A1B8 ; [.34D8.0020.0002.A1B8] # YI SYLLABLE LIX
+A1B9 ; [.34D9.0020.0002.A1B9] # YI SYLLABLE LI
+A1BA ; [.34DA.0020.0002.A1BA] # YI SYLLABLE LIP
+A1BB ; [.34DB.0020.0002.A1BB] # YI SYLLABLE LIET
+A1BC ; [.34DC.0020.0002.A1BC] # YI SYLLABLE LIEX
+A1BD ; [.34DD.0020.0002.A1BD] # YI SYLLABLE LIE
+A1BE ; [.34DE.0020.0002.A1BE] # YI SYLLABLE LIEP
+A1BF ; [.34DF.0020.0002.A1BF] # YI SYLLABLE LAT
+A1C0 ; [.34E0.0020.0002.A1C0] # YI SYLLABLE LAX
+A1C1 ; [.34E1.0020.0002.A1C1] # YI SYLLABLE LA
+A1C2 ; [.34E2.0020.0002.A1C2] # YI SYLLABLE LAP
+A1C3 ; [.34E3.0020.0002.A1C3] # YI SYLLABLE LUOT
+A1C4 ; [.34E4.0020.0002.A1C4] # YI SYLLABLE LUOX
+A1C5 ; [.34E5.0020.0002.A1C5] # YI SYLLABLE LUO
+A1C6 ; [.34E6.0020.0002.A1C6] # YI SYLLABLE LUOP
+A1C7 ; [.34E7.0020.0002.A1C7] # YI SYLLABLE LOT
+A1C8 ; [.34E8.0020.0002.A1C8] # YI SYLLABLE LOX
+A1C9 ; [.34E9.0020.0002.A1C9] # YI SYLLABLE LO
+A1CA ; [.34EA.0020.0002.A1CA] # YI SYLLABLE LOP
+A1CB ; [.34EB.0020.0002.A1CB] # YI SYLLABLE LEX
+A1CC ; [.34EC.0020.0002.A1CC] # YI SYLLABLE LE
+A1CD ; [.34ED.0020.0002.A1CD] # YI SYLLABLE LEP
+A1CE ; [.34EE.0020.0002.A1CE] # YI SYLLABLE LUT
+A1CF ; [.34EF.0020.0002.A1CF] # YI SYLLABLE LUX
+A1D0 ; [.34F0.0020.0002.A1D0] # YI SYLLABLE LU
+A1D1 ; [.34F1.0020.0002.A1D1] # YI SYLLABLE LUP
+A1D2 ; [.34F2.0020.0002.A1D2] # YI SYLLABLE LURX
+A1D3 ; [.34F3.0020.0002.A1D3] # YI SYLLABLE LUR
+A1D4 ; [.34F4.0020.0002.A1D4] # YI SYLLABLE LYT
+A1D5 ; [.34F5.0020.0002.A1D5] # YI SYLLABLE LYX
+A1D6 ; [.34F6.0020.0002.A1D6] # YI SYLLABLE LY
+A1D7 ; [.34F7.0020.0002.A1D7] # YI SYLLABLE LYP
+A1D8 ; [.34F8.0020.0002.A1D8] # YI SYLLABLE LYRX
+A1D9 ; [.34F9.0020.0002.A1D9] # YI SYLLABLE LYR
+A1DA ; [.34FA.0020.0002.A1DA] # YI SYLLABLE GIT
+A1DB ; [.34FB.0020.0002.A1DB] # YI SYLLABLE GIX
+A1DC ; [.34FC.0020.0002.A1DC] # YI SYLLABLE GI
+A1DD ; [.34FD.0020.0002.A1DD] # YI SYLLABLE GIP
+A1DE ; [.34FE.0020.0002.A1DE] # YI SYLLABLE GIET
+A1DF ; [.34FF.0020.0002.A1DF] # YI SYLLABLE GIEX
+A1E0 ; [.3500.0020.0002.A1E0] # YI SYLLABLE GIE
+A1E1 ; [.3501.0020.0002.A1E1] # YI SYLLABLE GIEP
+A1E2 ; [.3502.0020.0002.A1E2] # YI SYLLABLE GAT
+A1E3 ; [.3503.0020.0002.A1E3] # YI SYLLABLE GAX
+A1E4 ; [.3504.0020.0002.A1E4] # YI SYLLABLE GA
+A1E5 ; [.3505.0020.0002.A1E5] # YI SYLLABLE GAP
+A1E6 ; [.3506.0020.0002.A1E6] # YI SYLLABLE GUOT
+A1E7 ; [.3507.0020.0002.A1E7] # YI SYLLABLE GUOX
+A1E8 ; [.3508.0020.0002.A1E8] # YI SYLLABLE GUO
+A1E9 ; [.3509.0020.0002.A1E9] # YI SYLLABLE GUOP
+A1EA ; [.350A.0020.0002.A1EA] # YI SYLLABLE GOT
+A1EB ; [.350B.0020.0002.A1EB] # YI SYLLABLE GOX
+A1EC ; [.350C.0020.0002.A1EC] # YI SYLLABLE GO
+A1ED ; [.350D.0020.0002.A1ED] # YI SYLLABLE GOP
+A1EE ; [.350E.0020.0002.A1EE] # YI SYLLABLE GET
+A1EF ; [.350F.0020.0002.A1EF] # YI SYLLABLE GEX
+A1F0 ; [.3510.0020.0002.A1F0] # YI SYLLABLE GE
+A1F1 ; [.3511.0020.0002.A1F1] # YI SYLLABLE GEP
+A1F2 ; [.3512.0020.0002.A1F2] # YI SYLLABLE GUT
+A1F3 ; [.3513.0020.0002.A1F3] # YI SYLLABLE GUX
+A1F4 ; [.3514.0020.0002.A1F4] # YI SYLLABLE GU
+A1F5 ; [.3515.0020.0002.A1F5] # YI SYLLABLE GUP
+A1F6 ; [.3516.0020.0002.A1F6] # YI SYLLABLE GURX
+A1F7 ; [.3517.0020.0002.A1F7] # YI SYLLABLE GUR
+A1F8 ; [.3518.0020.0002.A1F8] # YI SYLLABLE KIT
+A1F9 ; [.3519.0020.0002.A1F9] # YI SYLLABLE KIX
+A1FA ; [.351A.0020.0002.A1FA] # YI SYLLABLE KI
+A1FB ; [.351B.0020.0002.A1FB] # YI SYLLABLE KIP
+A1FC ; [.351C.0020.0002.A1FC] # YI SYLLABLE KIEX
+A1FD ; [.351D.0020.0002.A1FD] # YI SYLLABLE KIE
+A1FE ; [.351E.0020.0002.A1FE] # YI SYLLABLE KIEP
+A1FF ; [.351F.0020.0002.A1FF] # YI SYLLABLE KAT
+A200 ; [.3520.0020.0002.A200] # YI SYLLABLE KAX
+A201 ; [.3521.0020.0002.A201] # YI SYLLABLE KA
+A202 ; [.3522.0020.0002.A202] # YI SYLLABLE KAP
+A203 ; [.3523.0020.0002.A203] # YI SYLLABLE KUOX
+A204 ; [.3524.0020.0002.A204] # YI SYLLABLE KUO
+A205 ; [.3525.0020.0002.A205] # YI SYLLABLE KUOP
+A206 ; [.3526.0020.0002.A206] # YI SYLLABLE KOT
+A207 ; [.3527.0020.0002.A207] # YI SYLLABLE KOX
+A208 ; [.3528.0020.0002.A208] # YI SYLLABLE KO
+A209 ; [.3529.0020.0002.A209] # YI SYLLABLE KOP
+A20A ; [.352A.0020.0002.A20A] # YI SYLLABLE KET
+A20B ; [.352B.0020.0002.A20B] # YI SYLLABLE KEX
+A20C ; [.352C.0020.0002.A20C] # YI SYLLABLE KE
+A20D ; [.352D.0020.0002.A20D] # YI SYLLABLE KEP
+A20E ; [.352E.0020.0002.A20E] # YI SYLLABLE KUT
+A20F ; [.352F.0020.0002.A20F] # YI SYLLABLE KUX
+A210 ; [.3530.0020.0002.A210] # YI SYLLABLE KU
+A211 ; [.3531.0020.0002.A211] # YI SYLLABLE KUP
+A212 ; [.3532.0020.0002.A212] # YI SYLLABLE KURX
+A213 ; [.3533.0020.0002.A213] # YI SYLLABLE KUR
+A214 ; [.3534.0020.0002.A214] # YI SYLLABLE GGIT
+A215 ; [.3535.0020.0002.A215] # YI SYLLABLE GGIX
+A216 ; [.3536.0020.0002.A216] # YI SYLLABLE GGI
+A217 ; [.3537.0020.0002.A217] # YI SYLLABLE GGIEX
+A218 ; [.3538.0020.0002.A218] # YI SYLLABLE GGIE
+A219 ; [.3539.0020.0002.A219] # YI SYLLABLE GGIEP
+A21A ; [.353A.0020.0002.A21A] # YI SYLLABLE GGAT
+A21B ; [.353B.0020.0002.A21B] # YI SYLLABLE GGAX
+A21C ; [.353C.0020.0002.A21C] # YI SYLLABLE GGA
+A21D ; [.353D.0020.0002.A21D] # YI SYLLABLE GGAP
+A21E ; [.353E.0020.0002.A21E] # YI SYLLABLE GGUOT
+A21F ; [.353F.0020.0002.A21F] # YI SYLLABLE GGUOX
+A220 ; [.3540.0020.0002.A220] # YI SYLLABLE GGUO
+A221 ; [.3541.0020.0002.A221] # YI SYLLABLE GGUOP
+A222 ; [.3542.0020.0002.A222] # YI SYLLABLE GGOT
+A223 ; [.3543.0020.0002.A223] # YI SYLLABLE GGOX
+A224 ; [.3544.0020.0002.A224] # YI SYLLABLE GGO
+A225 ; [.3545.0020.0002.A225] # YI SYLLABLE GGOP
+A226 ; [.3546.0020.0002.A226] # YI SYLLABLE GGET
+A227 ; [.3547.0020.0002.A227] # YI SYLLABLE GGEX
+A228 ; [.3548.0020.0002.A228] # YI SYLLABLE GGE
+A229 ; [.3549.0020.0002.A229] # YI SYLLABLE GGEP
+A22A ; [.354A.0020.0002.A22A] # YI SYLLABLE GGUT
+A22B ; [.354B.0020.0002.A22B] # YI SYLLABLE GGUX
+A22C ; [.354C.0020.0002.A22C] # YI SYLLABLE GGU
+A22D ; [.354D.0020.0002.A22D] # YI SYLLABLE GGUP
+A22E ; [.354E.0020.0002.A22E] # YI SYLLABLE GGURX
+A22F ; [.354F.0020.0002.A22F] # YI SYLLABLE GGUR
+A230 ; [.3550.0020.0002.A230] # YI SYLLABLE MGIEX
+A231 ; [.3551.0020.0002.A231] # YI SYLLABLE MGIE
+A232 ; [.3552.0020.0002.A232] # YI SYLLABLE MGAT
+A233 ; [.3553.0020.0002.A233] # YI SYLLABLE MGAX
+A234 ; [.3554.0020.0002.A234] # YI SYLLABLE MGA
+A235 ; [.3555.0020.0002.A235] # YI SYLLABLE MGAP
+A236 ; [.3556.0020.0002.A236] # YI SYLLABLE MGUOX
+A237 ; [.3557.0020.0002.A237] # YI SYLLABLE MGUO
+A238 ; [.3558.0020.0002.A238] # YI SYLLABLE MGUOP
+A239 ; [.3559.0020.0002.A239] # YI SYLLABLE MGOT
+A23A ; [.355A.0020.0002.A23A] # YI SYLLABLE MGOX
+A23B ; [.355B.0020.0002.A23B] # YI SYLLABLE MGO
+A23C ; [.355C.0020.0002.A23C] # YI SYLLABLE MGOP
+A23D ; [.355D.0020.0002.A23D] # YI SYLLABLE MGEX
+A23E ; [.355E.0020.0002.A23E] # YI SYLLABLE MGE
+A23F ; [.355F.0020.0002.A23F] # YI SYLLABLE MGEP
+A240 ; [.3560.0020.0002.A240] # YI SYLLABLE MGUT
+A241 ; [.3561.0020.0002.A241] # YI SYLLABLE MGUX
+A242 ; [.3562.0020.0002.A242] # YI SYLLABLE MGU
+A243 ; [.3563.0020.0002.A243] # YI SYLLABLE MGUP
+A244 ; [.3564.0020.0002.A244] # YI SYLLABLE MGURX
+A245 ; [.3565.0020.0002.A245] # YI SYLLABLE MGUR
+A246 ; [.3566.0020.0002.A246] # YI SYLLABLE HXIT
+A247 ; [.3567.0020.0002.A247] # YI SYLLABLE HXIX
+A248 ; [.3568.0020.0002.A248] # YI SYLLABLE HXI
+A249 ; [.3569.0020.0002.A249] # YI SYLLABLE HXIP
+A24A ; [.356A.0020.0002.A24A] # YI SYLLABLE HXIET
+A24B ; [.356B.0020.0002.A24B] # YI SYLLABLE HXIEX
+A24C ; [.356C.0020.0002.A24C] # YI SYLLABLE HXIE
+A24D ; [.356D.0020.0002.A24D] # YI SYLLABLE HXIEP
+A24E ; [.356E.0020.0002.A24E] # YI SYLLABLE HXAT
+A24F ; [.356F.0020.0002.A24F] # YI SYLLABLE HXAX
+A250 ; [.3570.0020.0002.A250] # YI SYLLABLE HXA
+A251 ; [.3571.0020.0002.A251] # YI SYLLABLE HXAP
+A252 ; [.3572.0020.0002.A252] # YI SYLLABLE HXUOT
+A253 ; [.3573.0020.0002.A253] # YI SYLLABLE HXUOX
+A254 ; [.3574.0020.0002.A254] # YI SYLLABLE HXUO
+A255 ; [.3575.0020.0002.A255] # YI SYLLABLE HXUOP
+A256 ; [.3576.0020.0002.A256] # YI SYLLABLE HXOT
+A257 ; [.3577.0020.0002.A257] # YI SYLLABLE HXOX
+A258 ; [.3578.0020.0002.A258] # YI SYLLABLE HXO
+A259 ; [.3579.0020.0002.A259] # YI SYLLABLE HXOP
+A25A ; [.357A.0020.0002.A25A] # YI SYLLABLE HXEX
+A25B ; [.357B.0020.0002.A25B] # YI SYLLABLE HXE
+A25C ; [.357C.0020.0002.A25C] # YI SYLLABLE HXEP
+A25D ; [.357D.0020.0002.A25D] # YI SYLLABLE NGIEX
+A25E ; [.357E.0020.0002.A25E] # YI SYLLABLE NGIE
+A25F ; [.357F.0020.0002.A25F] # YI SYLLABLE NGIEP
+A260 ; [.3580.0020.0002.A260] # YI SYLLABLE NGAT
+A261 ; [.3581.0020.0002.A261] # YI SYLLABLE NGAX
+A262 ; [.3582.0020.0002.A262] # YI SYLLABLE NGA
+A263 ; [.3583.0020.0002.A263] # YI SYLLABLE NGAP
+A264 ; [.3584.0020.0002.A264] # YI SYLLABLE NGUOT
+A265 ; [.3585.0020.0002.A265] # YI SYLLABLE NGUOX
+A266 ; [.3586.0020.0002.A266] # YI SYLLABLE NGUO
+A267 ; [.3587.0020.0002.A267] # YI SYLLABLE NGOT
+A268 ; [.3588.0020.0002.A268] # YI SYLLABLE NGOX
+A269 ; [.3589.0020.0002.A269] # YI SYLLABLE NGO
+A26A ; [.358A.0020.0002.A26A] # YI SYLLABLE NGOP
+A26B ; [.358B.0020.0002.A26B] # YI SYLLABLE NGEX
+A26C ; [.358C.0020.0002.A26C] # YI SYLLABLE NGE
+A26D ; [.358D.0020.0002.A26D] # YI SYLLABLE NGEP
+A26E ; [.358E.0020.0002.A26E] # YI SYLLABLE HIT
+A26F ; [.358F.0020.0002.A26F] # YI SYLLABLE HIEX
+A270 ; [.3590.0020.0002.A270] # YI SYLLABLE HIE
+A271 ; [.3591.0020.0002.A271] # YI SYLLABLE HAT
+A272 ; [.3592.0020.0002.A272] # YI SYLLABLE HAX
+A273 ; [.3593.0020.0002.A273] # YI SYLLABLE HA
+A274 ; [.3594.0020.0002.A274] # YI SYLLABLE HAP
+A275 ; [.3595.0020.0002.A275] # YI SYLLABLE HUOT
+A276 ; [.3596.0020.0002.A276] # YI SYLLABLE HUOX
+A277 ; [.3597.0020.0002.A277] # YI SYLLABLE HUO
+A278 ; [.3598.0020.0002.A278] # YI SYLLABLE HUOP
+A279 ; [.3599.0020.0002.A279] # YI SYLLABLE HOT
+A27A ; [.359A.0020.0002.A27A] # YI SYLLABLE HOX
+A27B ; [.359B.0020.0002.A27B] # YI SYLLABLE HO
+A27C ; [.359C.0020.0002.A27C] # YI SYLLABLE HOP
+A27D ; [.359D.0020.0002.A27D] # YI SYLLABLE HEX
+A27E ; [.359E.0020.0002.A27E] # YI SYLLABLE HE
+A27F ; [.359F.0020.0002.A27F] # YI SYLLABLE HEP
+A280 ; [.35A0.0020.0002.A280] # YI SYLLABLE WAT
+A281 ; [.35A1.0020.0002.A281] # YI SYLLABLE WAX
+A282 ; [.35A2.0020.0002.A282] # YI SYLLABLE WA
+A283 ; [.35A3.0020.0002.A283] # YI SYLLABLE WAP
+A284 ; [.35A4.0020.0002.A284] # YI SYLLABLE WUOX
+A285 ; [.35A5.0020.0002.A285] # YI SYLLABLE WUO
+A286 ; [.35A6.0020.0002.A286] # YI SYLLABLE WUOP
+A287 ; [.35A7.0020.0002.A287] # YI SYLLABLE WOX
+A288 ; [.35A8.0020.0002.A288] # YI SYLLABLE WO
+A289 ; [.35A9.0020.0002.A289] # YI SYLLABLE WOP
+A28A ; [.35AA.0020.0002.A28A] # YI SYLLABLE WEX
+A28B ; [.35AB.0020.0002.A28B] # YI SYLLABLE WE
+A28C ; [.35AC.0020.0002.A28C] # YI SYLLABLE WEP
+A28D ; [.35AD.0020.0002.A28D] # YI SYLLABLE ZIT
+A28E ; [.35AE.0020.0002.A28E] # YI SYLLABLE ZIX
+A28F ; [.35AF.0020.0002.A28F] # YI SYLLABLE ZI
+A290 ; [.35B0.0020.0002.A290] # YI SYLLABLE ZIP
+A291 ; [.35B1.0020.0002.A291] # YI SYLLABLE ZIEX
+A292 ; [.35B2.0020.0002.A292] # YI SYLLABLE ZIE
+A293 ; [.35B3.0020.0002.A293] # YI SYLLABLE ZIEP
+A294 ; [.35B4.0020.0002.A294] # YI SYLLABLE ZAT
+A295 ; [.35B5.0020.0002.A295] # YI SYLLABLE ZAX
+A296 ; [.35B6.0020.0002.A296] # YI SYLLABLE ZA
+A297 ; [.35B7.0020.0002.A297] # YI SYLLABLE ZAP
+A298 ; [.35B8.0020.0002.A298] # YI SYLLABLE ZUOX
+A299 ; [.35B9.0020.0002.A299] # YI SYLLABLE ZUO
+A29A ; [.35BA.0020.0002.A29A] # YI SYLLABLE ZUOP
+A29B ; [.35BB.0020.0002.A29B] # YI SYLLABLE ZOT
+A29C ; [.35BC.0020.0002.A29C] # YI SYLLABLE ZOX
+A29D ; [.35BD.0020.0002.A29D] # YI SYLLABLE ZO
+A29E ; [.35BE.0020.0002.A29E] # YI SYLLABLE ZOP
+A29F ; [.35BF.0020.0002.A29F] # YI SYLLABLE ZEX
+A2A0 ; [.35C0.0020.0002.A2A0] # YI SYLLABLE ZE
+A2A1 ; [.35C1.0020.0002.A2A1] # YI SYLLABLE ZEP
+A2A2 ; [.35C2.0020.0002.A2A2] # YI SYLLABLE ZUT
+A2A3 ; [.35C3.0020.0002.A2A3] # YI SYLLABLE ZUX
+A2A4 ; [.35C4.0020.0002.A2A4] # YI SYLLABLE ZU
+A2A5 ; [.35C5.0020.0002.A2A5] # YI SYLLABLE ZUP
+A2A6 ; [.35C6.0020.0002.A2A6] # YI SYLLABLE ZURX
+A2A7 ; [.35C7.0020.0002.A2A7] # YI SYLLABLE ZUR
+A2A8 ; [.35C8.0020.0002.A2A8] # YI SYLLABLE ZYT
+A2A9 ; [.35C9.0020.0002.A2A9] # YI SYLLABLE ZYX
+A2AA ; [.35CA.0020.0002.A2AA] # YI SYLLABLE ZY
+A2AB ; [.35CB.0020.0002.A2AB] # YI SYLLABLE ZYP
+A2AC ; [.35CC.0020.0002.A2AC] # YI SYLLABLE ZYRX
+A2AD ; [.35CD.0020.0002.A2AD] # YI SYLLABLE ZYR
+A2AE ; [.35CE.0020.0002.A2AE] # YI SYLLABLE CIT
+A2AF ; [.35CF.0020.0002.A2AF] # YI SYLLABLE CIX
+A2B0 ; [.35D0.0020.0002.A2B0] # YI SYLLABLE CI
+A2B1 ; [.35D1.0020.0002.A2B1] # YI SYLLABLE CIP
+A2B2 ; [.35D2.0020.0002.A2B2] # YI SYLLABLE CIET
+A2B3 ; [.35D3.0020.0002.A2B3] # YI SYLLABLE CIEX
+A2B4 ; [.35D4.0020.0002.A2B4] # YI SYLLABLE CIE
+A2B5 ; [.35D5.0020.0002.A2B5] # YI SYLLABLE CIEP
+A2B6 ; [.35D6.0020.0002.A2B6] # YI SYLLABLE CAT
+A2B7 ; [.35D7.0020.0002.A2B7] # YI SYLLABLE CAX
+A2B8 ; [.35D8.0020.0002.A2B8] # YI SYLLABLE CA
+A2B9 ; [.35D9.0020.0002.A2B9] # YI SYLLABLE CAP
+A2BA ; [.35DA.0020.0002.A2BA] # YI SYLLABLE CUOX
+A2BB ; [.35DB.0020.0002.A2BB] # YI SYLLABLE CUO
+A2BC ; [.35DC.0020.0002.A2BC] # YI SYLLABLE CUOP
+A2BD ; [.35DD.0020.0002.A2BD] # YI SYLLABLE COT
+A2BE ; [.35DE.0020.0002.A2BE] # YI SYLLABLE COX
+A2BF ; [.35DF.0020.0002.A2BF] # YI SYLLABLE CO
+A2C0 ; [.35E0.0020.0002.A2C0] # YI SYLLABLE COP
+A2C1 ; [.35E1.0020.0002.A2C1] # YI SYLLABLE CEX
+A2C2 ; [.35E2.0020.0002.A2C2] # YI SYLLABLE CE
+A2C3 ; [.35E3.0020.0002.A2C3] # YI SYLLABLE CEP
+A2C4 ; [.35E4.0020.0002.A2C4] # YI SYLLABLE CUT
+A2C5 ; [.35E5.0020.0002.A2C5] # YI SYLLABLE CUX
+A2C6 ; [.35E6.0020.0002.A2C6] # YI SYLLABLE CU
+A2C7 ; [.35E7.0020.0002.A2C7] # YI SYLLABLE CUP
+A2C8 ; [.35E8.0020.0002.A2C8] # YI SYLLABLE CURX
+A2C9 ; [.35E9.0020.0002.A2C9] # YI SYLLABLE CUR
+A2CA ; [.35EA.0020.0002.A2CA] # YI SYLLABLE CYT
+A2CB ; [.35EB.0020.0002.A2CB] # YI SYLLABLE CYX
+A2CC ; [.35EC.0020.0002.A2CC] # YI SYLLABLE CY
+A2CD ; [.35ED.0020.0002.A2CD] # YI SYLLABLE CYP
+A2CE ; [.35EE.0020.0002.A2CE] # YI SYLLABLE CYRX
+A2CF ; [.35EF.0020.0002.A2CF] # YI SYLLABLE CYR
+A2D0 ; [.35F0.0020.0002.A2D0] # YI SYLLABLE ZZIT
+A2D1 ; [.35F1.0020.0002.A2D1] # YI SYLLABLE ZZIX
+A2D2 ; [.35F2.0020.0002.A2D2] # YI SYLLABLE ZZI
+A2D3 ; [.35F3.0020.0002.A2D3] # YI SYLLABLE ZZIP
+A2D4 ; [.35F4.0020.0002.A2D4] # YI SYLLABLE ZZIET
+A2D5 ; [.35F5.0020.0002.A2D5] # YI SYLLABLE ZZIEX
+A2D6 ; [.35F6.0020.0002.A2D6] # YI SYLLABLE ZZIE
+A2D7 ; [.35F7.0020.0002.A2D7] # YI SYLLABLE ZZIEP
+A2D8 ; [.35F8.0020.0002.A2D8] # YI SYLLABLE ZZAT
+A2D9 ; [.35F9.0020.0002.A2D9] # YI SYLLABLE ZZAX
+A2DA ; [.35FA.0020.0002.A2DA] # YI SYLLABLE ZZA
+A2DB ; [.35FB.0020.0002.A2DB] # YI SYLLABLE ZZAP
+A2DC ; [.35FC.0020.0002.A2DC] # YI SYLLABLE ZZOX
+A2DD ; [.35FD.0020.0002.A2DD] # YI SYLLABLE ZZO
+A2DE ; [.35FE.0020.0002.A2DE] # YI SYLLABLE ZZOP
+A2DF ; [.35FF.0020.0002.A2DF] # YI SYLLABLE ZZEX
+A2E0 ; [.3600.0020.0002.A2E0] # YI SYLLABLE ZZE
+A2E1 ; [.3601.0020.0002.A2E1] # YI SYLLABLE ZZEP
+A2E2 ; [.3602.0020.0002.A2E2] # YI SYLLABLE ZZUX
+A2E3 ; [.3603.0020.0002.A2E3] # YI SYLLABLE ZZU
+A2E4 ; [.3604.0020.0002.A2E4] # YI SYLLABLE ZZUP
+A2E5 ; [.3605.0020.0002.A2E5] # YI SYLLABLE ZZURX
+A2E6 ; [.3606.0020.0002.A2E6] # YI SYLLABLE ZZUR
+A2E7 ; [.3607.0020.0002.A2E7] # YI SYLLABLE ZZYT
+A2E8 ; [.3608.0020.0002.A2E8] # YI SYLLABLE ZZYX
+A2E9 ; [.3609.0020.0002.A2E9] # YI SYLLABLE ZZY
+A2EA ; [.360A.0020.0002.A2EA] # YI SYLLABLE ZZYP
+A2EB ; [.360B.0020.0002.A2EB] # YI SYLLABLE ZZYRX
+A2EC ; [.360C.0020.0002.A2EC] # YI SYLLABLE ZZYR
+A2ED ; [.360D.0020.0002.A2ED] # YI SYLLABLE NZIT
+A2EE ; [.360E.0020.0002.A2EE] # YI SYLLABLE NZIX
+A2EF ; [.360F.0020.0002.A2EF] # YI SYLLABLE NZI
+A2F0 ; [.3610.0020.0002.A2F0] # YI SYLLABLE NZIP
+A2F1 ; [.3611.0020.0002.A2F1] # YI SYLLABLE NZIEX
+A2F2 ; [.3612.0020.0002.A2F2] # YI SYLLABLE NZIE
+A2F3 ; [.3613.0020.0002.A2F3] # YI SYLLABLE NZIEP
+A2F4 ; [.3614.0020.0002.A2F4] # YI SYLLABLE NZAT
+A2F5 ; [.3615.0020.0002.A2F5] # YI SYLLABLE NZAX
+A2F6 ; [.3616.0020.0002.A2F6] # YI SYLLABLE NZA
+A2F7 ; [.3617.0020.0002.A2F7] # YI SYLLABLE NZAP
+A2F8 ; [.3618.0020.0002.A2F8] # YI SYLLABLE NZUOX
+A2F9 ; [.3619.0020.0002.A2F9] # YI SYLLABLE NZUO
+A2FA ; [.361A.0020.0002.A2FA] # YI SYLLABLE NZOX
+A2FB ; [.361B.0020.0002.A2FB] # YI SYLLABLE NZOP
+A2FC ; [.361C.0020.0002.A2FC] # YI SYLLABLE NZEX
+A2FD ; [.361D.0020.0002.A2FD] # YI SYLLABLE NZE
+A2FE ; [.361E.0020.0002.A2FE] # YI SYLLABLE NZUX
+A2FF ; [.361F.0020.0002.A2FF] # YI SYLLABLE NZU
+A300 ; [.3620.0020.0002.A300] # YI SYLLABLE NZUP
+A301 ; [.3621.0020.0002.A301] # YI SYLLABLE NZURX
+A302 ; [.3622.0020.0002.A302] # YI SYLLABLE NZUR
+A303 ; [.3623.0020.0002.A303] # YI SYLLABLE NZYT
+A304 ; [.3624.0020.0002.A304] # YI SYLLABLE NZYX
+A305 ; [.3625.0020.0002.A305] # YI SYLLABLE NZY
+A306 ; [.3626.0020.0002.A306] # YI SYLLABLE NZYP
+A307 ; [.3627.0020.0002.A307] # YI SYLLABLE NZYRX
+A308 ; [.3628.0020.0002.A308] # YI SYLLABLE NZYR
+A309 ; [.3629.0020.0002.A309] # YI SYLLABLE SIT
+A30A ; [.362A.0020.0002.A30A] # YI SYLLABLE SIX
+A30B ; [.362B.0020.0002.A30B] # YI SYLLABLE SI
+A30C ; [.362C.0020.0002.A30C] # YI SYLLABLE SIP
+A30D ; [.362D.0020.0002.A30D] # YI SYLLABLE SIEX
+A30E ; [.362E.0020.0002.A30E] # YI SYLLABLE SIE
+A30F ; [.362F.0020.0002.A30F] # YI SYLLABLE SIEP
+A310 ; [.3630.0020.0002.A310] # YI SYLLABLE SAT
+A311 ; [.3631.0020.0002.A311] # YI SYLLABLE SAX
+A312 ; [.3632.0020.0002.A312] # YI SYLLABLE SA
+A313 ; [.3633.0020.0002.A313] # YI SYLLABLE SAP
+A314 ; [.3634.0020.0002.A314] # YI SYLLABLE SUOX
+A315 ; [.3635.0020.0002.A315] # YI SYLLABLE SUO
+A316 ; [.3636.0020.0002.A316] # YI SYLLABLE SUOP
+A317 ; [.3637.0020.0002.A317] # YI SYLLABLE SOT
+A318 ; [.3638.0020.0002.A318] # YI SYLLABLE SOX
+A319 ; [.3639.0020.0002.A319] # YI SYLLABLE SO
+A31A ; [.363A.0020.0002.A31A] # YI SYLLABLE SOP
+A31B ; [.363B.0020.0002.A31B] # YI SYLLABLE SEX
+A31C ; [.363C.0020.0002.A31C] # YI SYLLABLE SE
+A31D ; [.363D.0020.0002.A31D] # YI SYLLABLE SEP
+A31E ; [.363E.0020.0002.A31E] # YI SYLLABLE SUT
+A31F ; [.363F.0020.0002.A31F] # YI SYLLABLE SUX
+A320 ; [.3640.0020.0002.A320] # YI SYLLABLE SU
+A321 ; [.3641.0020.0002.A321] # YI SYLLABLE SUP
+A322 ; [.3642.0020.0002.A322] # YI SYLLABLE SURX
+A323 ; [.3643.0020.0002.A323] # YI SYLLABLE SUR
+A324 ; [.3644.0020.0002.A324] # YI SYLLABLE SYT
+A325 ; [.3645.0020.0002.A325] # YI SYLLABLE SYX
+A326 ; [.3646.0020.0002.A326] # YI SYLLABLE SY
+A327 ; [.3647.0020.0002.A327] # YI SYLLABLE SYP
+A328 ; [.3648.0020.0002.A328] # YI SYLLABLE SYRX
+A329 ; [.3649.0020.0002.A329] # YI SYLLABLE SYR
+A32A ; [.364A.0020.0002.A32A] # YI SYLLABLE SSIT
+A32B ; [.364B.0020.0002.A32B] # YI SYLLABLE SSIX
+A32C ; [.364C.0020.0002.A32C] # YI SYLLABLE SSI
+A32D ; [.364D.0020.0002.A32D] # YI SYLLABLE SSIP
+A32E ; [.364E.0020.0002.A32E] # YI SYLLABLE SSIEX
+A32F ; [.364F.0020.0002.A32F] # YI SYLLABLE SSIE
+A330 ; [.3650.0020.0002.A330] # YI SYLLABLE SSIEP
+A331 ; [.3651.0020.0002.A331] # YI SYLLABLE SSAT
+A332 ; [.3652.0020.0002.A332] # YI SYLLABLE SSAX
+A333 ; [.3653.0020.0002.A333] # YI SYLLABLE SSA
+A334 ; [.3654.0020.0002.A334] # YI SYLLABLE SSAP
+A335 ; [.3655.0020.0002.A335] # YI SYLLABLE SSOT
+A336 ; [.3656.0020.0002.A336] # YI SYLLABLE SSOX
+A337 ; [.3657.0020.0002.A337] # YI SYLLABLE SSO
+A338 ; [.3658.0020.0002.A338] # YI SYLLABLE SSOP
+A339 ; [.3659.0020.0002.A339] # YI SYLLABLE SSEX
+A33A ; [.365A.0020.0002.A33A] # YI SYLLABLE SSE
+A33B ; [.365B.0020.0002.A33B] # YI SYLLABLE SSEP
+A33C ; [.365C.0020.0002.A33C] # YI SYLLABLE SSUT
+A33D ; [.365D.0020.0002.A33D] # YI SYLLABLE SSUX
+A33E ; [.365E.0020.0002.A33E] # YI SYLLABLE SSU
+A33F ; [.365F.0020.0002.A33F] # YI SYLLABLE SSUP
+A340 ; [.3660.0020.0002.A340] # YI SYLLABLE SSYT
+A341 ; [.3661.0020.0002.A341] # YI SYLLABLE SSYX
+A342 ; [.3662.0020.0002.A342] # YI SYLLABLE SSY
+A343 ; [.3663.0020.0002.A343] # YI SYLLABLE SSYP
+A344 ; [.3664.0020.0002.A344] # YI SYLLABLE SSYRX
+A345 ; [.3665.0020.0002.A345] # YI SYLLABLE SSYR
+A346 ; [.3666.0020.0002.A346] # YI SYLLABLE ZHAT
+A347 ; [.3667.0020.0002.A347] # YI SYLLABLE ZHAX
+A348 ; [.3668.0020.0002.A348] # YI SYLLABLE ZHA
+A349 ; [.3669.0020.0002.A349] # YI SYLLABLE ZHAP
+A34A ; [.366A.0020.0002.A34A] # YI SYLLABLE ZHUOX
+A34B ; [.366B.0020.0002.A34B] # YI SYLLABLE ZHUO
+A34C ; [.366C.0020.0002.A34C] # YI SYLLABLE ZHUOP
+A34D ; [.366D.0020.0002.A34D] # YI SYLLABLE ZHOT
+A34E ; [.366E.0020.0002.A34E] # YI SYLLABLE ZHOX
+A34F ; [.366F.0020.0002.A34F] # YI SYLLABLE ZHO
+A350 ; [.3670.0020.0002.A350] # YI SYLLABLE ZHOP
+A351 ; [.3671.0020.0002.A351] # YI SYLLABLE ZHET
+A352 ; [.3672.0020.0002.A352] # YI SYLLABLE ZHEX
+A353 ; [.3673.0020.0002.A353] # YI SYLLABLE ZHE
+A354 ; [.3674.0020.0002.A354] # YI SYLLABLE ZHEP
+A355 ; [.3675.0020.0002.A355] # YI SYLLABLE ZHUT
+A356 ; [.3676.0020.0002.A356] # YI SYLLABLE ZHUX
+A357 ; [.3677.0020.0002.A357] # YI SYLLABLE ZHU
+A358 ; [.3678.0020.0002.A358] # YI SYLLABLE ZHUP
+A359 ; [.3679.0020.0002.A359] # YI SYLLABLE ZHURX
+A35A ; [.367A.0020.0002.A35A] # YI SYLLABLE ZHUR
+A35B ; [.367B.0020.0002.A35B] # YI SYLLABLE ZHYT
+A35C ; [.367C.0020.0002.A35C] # YI SYLLABLE ZHYX
+A35D ; [.367D.0020.0002.A35D] # YI SYLLABLE ZHY
+A35E ; [.367E.0020.0002.A35E] # YI SYLLABLE ZHYP
+A35F ; [.367F.0020.0002.A35F] # YI SYLLABLE ZHYRX
+A360 ; [.3680.0020.0002.A360] # YI SYLLABLE ZHYR
+A361 ; [.3681.0020.0002.A361] # YI SYLLABLE CHAT
+A362 ; [.3682.0020.0002.A362] # YI SYLLABLE CHAX
+A363 ; [.3683.0020.0002.A363] # YI SYLLABLE CHA
+A364 ; [.3684.0020.0002.A364] # YI SYLLABLE CHAP
+A365 ; [.3685.0020.0002.A365] # YI SYLLABLE CHUOT
+A366 ; [.3686.0020.0002.A366] # YI SYLLABLE CHUOX
+A367 ; [.3687.0020.0002.A367] # YI SYLLABLE CHUO
+A368 ; [.3688.0020.0002.A368] # YI SYLLABLE CHUOP
+A369 ; [.3689.0020.0002.A369] # YI SYLLABLE CHOT
+A36A ; [.368A.0020.0002.A36A] # YI SYLLABLE CHOX
+A36B ; [.368B.0020.0002.A36B] # YI SYLLABLE CHO
+A36C ; [.368C.0020.0002.A36C] # YI SYLLABLE CHOP
+A36D ; [.368D.0020.0002.A36D] # YI SYLLABLE CHET
+A36E ; [.368E.0020.0002.A36E] # YI SYLLABLE CHEX
+A36F ; [.368F.0020.0002.A36F] # YI SYLLABLE CHE
+A370 ; [.3690.0020.0002.A370] # YI SYLLABLE CHEP
+A371 ; [.3691.0020.0002.A371] # YI SYLLABLE CHUX
+A372 ; [.3692.0020.0002.A372] # YI SYLLABLE CHU
+A373 ; [.3693.0020.0002.A373] # YI SYLLABLE CHUP
+A374 ; [.3694.0020.0002.A374] # YI SYLLABLE CHURX
+A375 ; [.3695.0020.0002.A375] # YI SYLLABLE CHUR
+A376 ; [.3696.0020.0002.A376] # YI SYLLABLE CHYT
+A377 ; [.3697.0020.0002.A377] # YI SYLLABLE CHYX
+A378 ; [.3698.0020.0002.A378] # YI SYLLABLE CHY
+A379 ; [.3699.0020.0002.A379] # YI SYLLABLE CHYP
+A37A ; [.369A.0020.0002.A37A] # YI SYLLABLE CHYRX
+A37B ; [.369B.0020.0002.A37B] # YI SYLLABLE CHYR
+A37C ; [.369C.0020.0002.A37C] # YI SYLLABLE RRAX
+A37D ; [.369D.0020.0002.A37D] # YI SYLLABLE RRA
+A37E ; [.369E.0020.0002.A37E] # YI SYLLABLE RRUOX
+A37F ; [.369F.0020.0002.A37F] # YI SYLLABLE RRUO
+A380 ; [.36A0.0020.0002.A380] # YI SYLLABLE RROT
+A381 ; [.36A1.0020.0002.A381] # YI SYLLABLE RROX
+A382 ; [.36A2.0020.0002.A382] # YI SYLLABLE RRO
+A383 ; [.36A3.0020.0002.A383] # YI SYLLABLE RROP
+A384 ; [.36A4.0020.0002.A384] # YI SYLLABLE RRET
+A385 ; [.36A5.0020.0002.A385] # YI SYLLABLE RREX
+A386 ; [.36A6.0020.0002.A386] # YI SYLLABLE RRE
+A387 ; [.36A7.0020.0002.A387] # YI SYLLABLE RREP
+A388 ; [.36A8.0020.0002.A388] # YI SYLLABLE RRUT
+A389 ; [.36A9.0020.0002.A389] # YI SYLLABLE RRUX
+A38A ; [.36AA.0020.0002.A38A] # YI SYLLABLE RRU
+A38B ; [.36AB.0020.0002.A38B] # YI SYLLABLE RRUP
+A38C ; [.36AC.0020.0002.A38C] # YI SYLLABLE RRURX
+A38D ; [.36AD.0020.0002.A38D] # YI SYLLABLE RRUR
+A38E ; [.36AE.0020.0002.A38E] # YI SYLLABLE RRYT
+A38F ; [.36AF.0020.0002.A38F] # YI SYLLABLE RRYX
+A390 ; [.36B0.0020.0002.A390] # YI SYLLABLE RRY
+A391 ; [.36B1.0020.0002.A391] # YI SYLLABLE RRYP
+A392 ; [.36B2.0020.0002.A392] # YI SYLLABLE RRYRX
+A393 ; [.36B3.0020.0002.A393] # YI SYLLABLE RRYR
+A394 ; [.36B4.0020.0002.A394] # YI SYLLABLE NRAT
+A395 ; [.36B5.0020.0002.A395] # YI SYLLABLE NRAX
+A396 ; [.36B6.0020.0002.A396] # YI SYLLABLE NRA
+A397 ; [.36B7.0020.0002.A397] # YI SYLLABLE NRAP
+A398 ; [.36B8.0020.0002.A398] # YI SYLLABLE NROX
+A399 ; [.36B9.0020.0002.A399] # YI SYLLABLE NRO
+A39A ; [.36BA.0020.0002.A39A] # YI SYLLABLE NROP
+A39B ; [.36BB.0020.0002.A39B] # YI SYLLABLE NRET
+A39C ; [.36BC.0020.0002.A39C] # YI SYLLABLE NREX
+A39D ; [.36BD.0020.0002.A39D] # YI SYLLABLE NRE
+A39E ; [.36BE.0020.0002.A39E] # YI SYLLABLE NREP
+A39F ; [.36BF.0020.0002.A39F] # YI SYLLABLE NRUT
+A3A0 ; [.36C0.0020.0002.A3A0] # YI SYLLABLE NRUX
+A3A1 ; [.36C1.0020.0002.A3A1] # YI SYLLABLE NRU
+A3A2 ; [.36C2.0020.0002.A3A2] # YI SYLLABLE NRUP
+A3A3 ; [.36C3.0020.0002.A3A3] # YI SYLLABLE NRURX
+A3A4 ; [.36C4.0020.0002.A3A4] # YI SYLLABLE NRUR
+A3A5 ; [.36C5.0020.0002.A3A5] # YI SYLLABLE NRYT
+A3A6 ; [.36C6.0020.0002.A3A6] # YI SYLLABLE NRYX
+A3A7 ; [.36C7.0020.0002.A3A7] # YI SYLLABLE NRY
+A3A8 ; [.36C8.0020.0002.A3A8] # YI SYLLABLE NRYP
+A3A9 ; [.36C9.0020.0002.A3A9] # YI SYLLABLE NRYRX
+A3AA ; [.36CA.0020.0002.A3AA] # YI SYLLABLE NRYR
+A3AB ; [.36CB.0020.0002.A3AB] # YI SYLLABLE SHAT
+A3AC ; [.36CC.0020.0002.A3AC] # YI SYLLABLE SHAX
+A3AD ; [.36CD.0020.0002.A3AD] # YI SYLLABLE SHA
+A3AE ; [.36CE.0020.0002.A3AE] # YI SYLLABLE SHAP
+A3AF ; [.36CF.0020.0002.A3AF] # YI SYLLABLE SHUOX
+A3B0 ; [.36D0.0020.0002.A3B0] # YI SYLLABLE SHUO
+A3B1 ; [.36D1.0020.0002.A3B1] # YI SYLLABLE SHUOP
+A3B2 ; [.36D2.0020.0002.A3B2] # YI SYLLABLE SHOT
+A3B3 ; [.36D3.0020.0002.A3B3] # YI SYLLABLE SHOX
+A3B4 ; [.36D4.0020.0002.A3B4] # YI SYLLABLE SHO
+A3B5 ; [.36D5.0020.0002.A3B5] # YI SYLLABLE SHOP
+A3B6 ; [.36D6.0020.0002.A3B6] # YI SYLLABLE SHET
+A3B7 ; [.36D7.0020.0002.A3B7] # YI SYLLABLE SHEX
+A3B8 ; [.36D8.0020.0002.A3B8] # YI SYLLABLE SHE
+A3B9 ; [.36D9.0020.0002.A3B9] # YI SYLLABLE SHEP
+A3BA ; [.36DA.0020.0002.A3BA] # YI SYLLABLE SHUT
+A3BB ; [.36DB.0020.0002.A3BB] # YI SYLLABLE SHUX
+A3BC ; [.36DC.0020.0002.A3BC] # YI SYLLABLE SHU
+A3BD ; [.36DD.0020.0002.A3BD] # YI SYLLABLE SHUP
+A3BE ; [.36DE.0020.0002.A3BE] # YI SYLLABLE SHURX
+A3BF ; [.36DF.0020.0002.A3BF] # YI SYLLABLE SHUR
+A3C0 ; [.36E0.0020.0002.A3C0] # YI SYLLABLE SHYT
+A3C1 ; [.36E1.0020.0002.A3C1] # YI SYLLABLE SHYX
+A3C2 ; [.36E2.0020.0002.A3C2] # YI SYLLABLE SHY
+A3C3 ; [.36E3.0020.0002.A3C3] # YI SYLLABLE SHYP
+A3C4 ; [.36E4.0020.0002.A3C4] # YI SYLLABLE SHYRX
+A3C5 ; [.36E5.0020.0002.A3C5] # YI SYLLABLE SHYR
+A3C6 ; [.36E6.0020.0002.A3C6] # YI SYLLABLE RAT
+A3C7 ; [.36E7.0020.0002.A3C7] # YI SYLLABLE RAX
+A3C8 ; [.36E8.0020.0002.A3C8] # YI SYLLABLE RA
+A3C9 ; [.36E9.0020.0002.A3C9] # YI SYLLABLE RAP
+A3CA ; [.36EA.0020.0002.A3CA] # YI SYLLABLE RUOX
+A3CB ; [.36EB.0020.0002.A3CB] # YI SYLLABLE RUO
+A3CC ; [.36EC.0020.0002.A3CC] # YI SYLLABLE RUOP
+A3CD ; [.36ED.0020.0002.A3CD] # YI SYLLABLE ROT
+A3CE ; [.36EE.0020.0002.A3CE] # YI SYLLABLE ROX
+A3CF ; [.36EF.0020.0002.A3CF] # YI SYLLABLE RO
+A3D0 ; [.36F0.0020.0002.A3D0] # YI SYLLABLE ROP
+A3D1 ; [.36F1.0020.0002.A3D1] # YI SYLLABLE REX
+A3D2 ; [.36F2.0020.0002.A3D2] # YI SYLLABLE RE
+A3D3 ; [.36F3.0020.0002.A3D3] # YI SYLLABLE REP
+A3D4 ; [.36F4.0020.0002.A3D4] # YI SYLLABLE RUT
+A3D5 ; [.36F5.0020.0002.A3D5] # YI SYLLABLE RUX
+A3D6 ; [.36F6.0020.0002.A3D6] # YI SYLLABLE RU
+A3D7 ; [.36F7.0020.0002.A3D7] # YI SYLLABLE RUP
+A3D8 ; [.36F8.0020.0002.A3D8] # YI SYLLABLE RURX
+A3D9 ; [.36F9.0020.0002.A3D9] # YI SYLLABLE RUR
+A3DA ; [.36FA.0020.0002.A3DA] # YI SYLLABLE RYT
+A3DB ; [.36FB.0020.0002.A3DB] # YI SYLLABLE RYX
+A3DC ; [.36FC.0020.0002.A3DC] # YI SYLLABLE RY
+A3DD ; [.36FD.0020.0002.A3DD] # YI SYLLABLE RYP
+A3DE ; [.36FE.0020.0002.A3DE] # YI SYLLABLE RYRX
+A3DF ; [.36FF.0020.0002.A3DF] # YI SYLLABLE RYR
+A3E0 ; [.3700.0020.0002.A3E0] # YI SYLLABLE JIT
+A3E1 ; [.3701.0020.0002.A3E1] # YI SYLLABLE JIX
+A3E2 ; [.3702.0020.0002.A3E2] # YI SYLLABLE JI
+A3E3 ; [.3703.0020.0002.A3E3] # YI SYLLABLE JIP
+A3E4 ; [.3704.0020.0002.A3E4] # YI SYLLABLE JIET
+A3E5 ; [.3705.0020.0002.A3E5] # YI SYLLABLE JIEX
+A3E6 ; [.3706.0020.0002.A3E6] # YI SYLLABLE JIE
+A3E7 ; [.3707.0020.0002.A3E7] # YI SYLLABLE JIEP
+A3E8 ; [.3708.0020.0002.A3E8] # YI SYLLABLE JUOT
+A3E9 ; [.3709.0020.0002.A3E9] # YI SYLLABLE JUOX
+A3EA ; [.370A.0020.0002.A3EA] # YI SYLLABLE JUO
+A3EB ; [.370B.0020.0002.A3EB] # YI SYLLABLE JUOP
+A3EC ; [.370C.0020.0002.A3EC] # YI SYLLABLE JOT
+A3ED ; [.370D.0020.0002.A3ED] # YI SYLLABLE JOX
+A3EE ; [.370E.0020.0002.A3EE] # YI SYLLABLE JO
+A3EF ; [.370F.0020.0002.A3EF] # YI SYLLABLE JOP
+A3F0 ; [.3710.0020.0002.A3F0] # YI SYLLABLE JUT
+A3F1 ; [.3711.0020.0002.A3F1] # YI SYLLABLE JUX
+A3F2 ; [.3712.0020.0002.A3F2] # YI SYLLABLE JU
+A3F3 ; [.3713.0020.0002.A3F3] # YI SYLLABLE JUP
+A3F4 ; [.3714.0020.0002.A3F4] # YI SYLLABLE JURX
+A3F5 ; [.3715.0020.0002.A3F5] # YI SYLLABLE JUR
+A3F6 ; [.3716.0020.0002.A3F6] # YI SYLLABLE JYT
+A3F7 ; [.3717.0020.0002.A3F7] # YI SYLLABLE JYX
+A3F8 ; [.3718.0020.0002.A3F8] # YI SYLLABLE JY
+A3F9 ; [.3719.0020.0002.A3F9] # YI SYLLABLE JYP
+A3FA ; [.371A.0020.0002.A3FA] # YI SYLLABLE JYRX
+A3FB ; [.371B.0020.0002.A3FB] # YI SYLLABLE JYR
+A3FC ; [.371C.0020.0002.A3FC] # YI SYLLABLE QIT
+A3FD ; [.371D.0020.0002.A3FD] # YI SYLLABLE QIX
+A3FE ; [.371E.0020.0002.A3FE] # YI SYLLABLE QI
+A3FF ; [.371F.0020.0002.A3FF] # YI SYLLABLE QIP
+A400 ; [.3720.0020.0002.A400] # YI SYLLABLE QIET
+A401 ; [.3721.0020.0002.A401] # YI SYLLABLE QIEX
+A402 ; [.3722.0020.0002.A402] # YI SYLLABLE QIE
+A403 ; [.3723.0020.0002.A403] # YI SYLLABLE QIEP
+A404 ; [.3724.0020.0002.A404] # YI SYLLABLE QUOT
+A405 ; [.3725.0020.0002.A405] # YI SYLLABLE QUOX
+A406 ; [.3726.0020.0002.A406] # YI SYLLABLE QUO
+A407 ; [.3727.0020.0002.A407] # YI SYLLABLE QUOP
+A408 ; [.3728.0020.0002.A408] # YI SYLLABLE QOT
+A409 ; [.3729.0020.0002.A409] # YI SYLLABLE QOX
+A40A ; [.372A.0020.0002.A40A] # YI SYLLABLE QO
+A40B ; [.372B.0020.0002.A40B] # YI SYLLABLE QOP
+A40C ; [.372C.0020.0002.A40C] # YI SYLLABLE QUT
+A40D ; [.372D.0020.0002.A40D] # YI SYLLABLE QUX
+A40E ; [.372E.0020.0002.A40E] # YI SYLLABLE QU
+A40F ; [.372F.0020.0002.A40F] # YI SYLLABLE QUP
+A410 ; [.3730.0020.0002.A410] # YI SYLLABLE QURX
+A411 ; [.3731.0020.0002.A411] # YI SYLLABLE QUR
+A412 ; [.3732.0020.0002.A412] # YI SYLLABLE QYT
+A413 ; [.3733.0020.0002.A413] # YI SYLLABLE QYX
+A414 ; [.3734.0020.0002.A414] # YI SYLLABLE QY
+A415 ; [.3735.0020.0002.A415] # YI SYLLABLE QYP
+A416 ; [.3736.0020.0002.A416] # YI SYLLABLE QYRX
+A417 ; [.3737.0020.0002.A417] # YI SYLLABLE QYR
+A418 ; [.3738.0020.0002.A418] # YI SYLLABLE JJIT
+A419 ; [.3739.0020.0002.A419] # YI SYLLABLE JJIX
+A41A ; [.373A.0020.0002.A41A] # YI SYLLABLE JJI
+A41B ; [.373B.0020.0002.A41B] # YI SYLLABLE JJIP
+A41C ; [.373C.0020.0002.A41C] # YI SYLLABLE JJIET
+A41D ; [.373D.0020.0002.A41D] # YI SYLLABLE JJIEX
+A41E ; [.373E.0020.0002.A41E] # YI SYLLABLE JJIE
+A41F ; [.373F.0020.0002.A41F] # YI SYLLABLE JJIEP
+A420 ; [.3740.0020.0002.A420] # YI SYLLABLE JJUOX
+A421 ; [.3741.0020.0002.A421] # YI SYLLABLE JJUO
+A422 ; [.3742.0020.0002.A422] # YI SYLLABLE JJUOP
+A423 ; [.3743.0020.0002.A423] # YI SYLLABLE JJOT
+A424 ; [.3744.0020.0002.A424] # YI SYLLABLE JJOX
+A425 ; [.3745.0020.0002.A425] # YI SYLLABLE JJO
+A426 ; [.3746.0020.0002.A426] # YI SYLLABLE JJOP
+A427 ; [.3747.0020.0002.A427] # YI SYLLABLE JJUT
+A428 ; [.3748.0020.0002.A428] # YI SYLLABLE JJUX
+A429 ; [.3749.0020.0002.A429] # YI SYLLABLE JJU
+A42A ; [.374A.0020.0002.A42A] # YI SYLLABLE JJUP
+A42B ; [.374B.0020.0002.A42B] # YI SYLLABLE JJURX
+A42C ; [.374C.0020.0002.A42C] # YI SYLLABLE JJUR
+A42D ; [.374D.0020.0002.A42D] # YI SYLLABLE JJYT
+A42E ; [.374E.0020.0002.A42E] # YI SYLLABLE JJYX
+A42F ; [.374F.0020.0002.A42F] # YI SYLLABLE JJY
+A430 ; [.3750.0020.0002.A430] # YI SYLLABLE JJYP
+A431 ; [.3751.0020.0002.A431] # YI SYLLABLE NJIT
+A432 ; [.3752.0020.0002.A432] # YI SYLLABLE NJIX
+A433 ; [.3753.0020.0002.A433] # YI SYLLABLE NJI
+A434 ; [.3754.0020.0002.A434] # YI SYLLABLE NJIP
+A435 ; [.3755.0020.0002.A435] # YI SYLLABLE NJIET
+A436 ; [.3756.0020.0002.A436] # YI SYLLABLE NJIEX
+A437 ; [.3757.0020.0002.A437] # YI SYLLABLE NJIE
+A438 ; [.3758.0020.0002.A438] # YI SYLLABLE NJIEP
+A439 ; [.3759.0020.0002.A439] # YI SYLLABLE NJUOX
+A43A ; [.375A.0020.0002.A43A] # YI SYLLABLE NJUO
+A43B ; [.375B.0020.0002.A43B] # YI SYLLABLE NJOT
+A43C ; [.375C.0020.0002.A43C] # YI SYLLABLE NJOX
+A43D ; [.375D.0020.0002.A43D] # YI SYLLABLE NJO
+A43E ; [.375E.0020.0002.A43E] # YI SYLLABLE NJOP
+A43F ; [.375F.0020.0002.A43F] # YI SYLLABLE NJUX
+A440 ; [.3760.0020.0002.A440] # YI SYLLABLE NJU
+A441 ; [.3761.0020.0002.A441] # YI SYLLABLE NJUP
+A442 ; [.3762.0020.0002.A442] # YI SYLLABLE NJURX
+A443 ; [.3763.0020.0002.A443] # YI SYLLABLE NJUR
+A444 ; [.3764.0020.0002.A444] # YI SYLLABLE NJYT
+A445 ; [.3765.0020.0002.A445] # YI SYLLABLE NJYX
+A446 ; [.3766.0020.0002.A446] # YI SYLLABLE NJY
+A447 ; [.3767.0020.0002.A447] # YI SYLLABLE NJYP
+A448 ; [.3768.0020.0002.A448] # YI SYLLABLE NJYRX
+A449 ; [.3769.0020.0002.A449] # YI SYLLABLE NJYR
+A44A ; [.376A.0020.0002.A44A] # YI SYLLABLE NYIT
+A44B ; [.376B.0020.0002.A44B] # YI SYLLABLE NYIX
+A44C ; [.376C.0020.0002.A44C] # YI SYLLABLE NYI
+A44D ; [.376D.0020.0002.A44D] # YI SYLLABLE NYIP
+A44E ; [.376E.0020.0002.A44E] # YI SYLLABLE NYIET
+A44F ; [.376F.0020.0002.A44F] # YI SYLLABLE NYIEX
+A450 ; [.3770.0020.0002.A450] # YI SYLLABLE NYIE
+A451 ; [.3771.0020.0002.A451] # YI SYLLABLE NYIEP
+A452 ; [.3772.0020.0002.A452] # YI SYLLABLE NYUOX
+A453 ; [.3773.0020.0002.A453] # YI SYLLABLE NYUO
+A454 ; [.3774.0020.0002.A454] # YI SYLLABLE NYUOP
+A455 ; [.3775.0020.0002.A455] # YI SYLLABLE NYOT
+A456 ; [.3776.0020.0002.A456] # YI SYLLABLE NYOX
+A457 ; [.3777.0020.0002.A457] # YI SYLLABLE NYO
+A458 ; [.3778.0020.0002.A458] # YI SYLLABLE NYOP
+A459 ; [.3779.0020.0002.A459] # YI SYLLABLE NYUT
+A45A ; [.377A.0020.0002.A45A] # YI SYLLABLE NYUX
+A45B ; [.377B.0020.0002.A45B] # YI SYLLABLE NYU
+A45C ; [.377C.0020.0002.A45C] # YI SYLLABLE NYUP
+A45D ; [.377D.0020.0002.A45D] # YI SYLLABLE XIT
+A45E ; [.377E.0020.0002.A45E] # YI SYLLABLE XIX
+A45F ; [.377F.0020.0002.A45F] # YI SYLLABLE XI
+A460 ; [.3780.0020.0002.A460] # YI SYLLABLE XIP
+A461 ; [.3781.0020.0002.A461] # YI SYLLABLE XIET
+A462 ; [.3782.0020.0002.A462] # YI SYLLABLE XIEX
+A463 ; [.3783.0020.0002.A463] # YI SYLLABLE XIE
+A464 ; [.3784.0020.0002.A464] # YI SYLLABLE XIEP
+A465 ; [.3785.0020.0002.A465] # YI SYLLABLE XUOX
+A466 ; [.3786.0020.0002.A466] # YI SYLLABLE XUO
+A467 ; [.3787.0020.0002.A467] # YI SYLLABLE XOT
+A468 ; [.3788.0020.0002.A468] # YI SYLLABLE XOX
+A469 ; [.3789.0020.0002.A469] # YI SYLLABLE XO
+A46A ; [.378A.0020.0002.A46A] # YI SYLLABLE XOP
+A46B ; [.378B.0020.0002.A46B] # YI SYLLABLE XYT
+A46C ; [.378C.0020.0002.A46C] # YI SYLLABLE XYX
+A46D ; [.378D.0020.0002.A46D] # YI SYLLABLE XY
+A46E ; [.378E.0020.0002.A46E] # YI SYLLABLE XYP
+A46F ; [.378F.0020.0002.A46F] # YI SYLLABLE XYRX
+A470 ; [.3790.0020.0002.A470] # YI SYLLABLE XYR
+A471 ; [.3791.0020.0002.A471] # YI SYLLABLE YIT
+A472 ; [.3792.0020.0002.A472] # YI SYLLABLE YIX
+A473 ; [.3793.0020.0002.A473] # YI SYLLABLE YI
+A474 ; [.3794.0020.0002.A474] # YI SYLLABLE YIP
+A475 ; [.3795.0020.0002.A475] # YI SYLLABLE YIET
+A476 ; [.3796.0020.0002.A476] # YI SYLLABLE YIEX
+A477 ; [.3797.0020.0002.A477] # YI SYLLABLE YIE
+A478 ; [.3798.0020.0002.A478] # YI SYLLABLE YIEP
+A479 ; [.3799.0020.0002.A479] # YI SYLLABLE YUOT
+A47A ; [.379A.0020.0002.A47A] # YI SYLLABLE YUOX
+A47B ; [.379B.0020.0002.A47B] # YI SYLLABLE YUO
+A47C ; [.379C.0020.0002.A47C] # YI SYLLABLE YUOP
+A47D ; [.379D.0020.0002.A47D] # YI SYLLABLE YOT
+A47E ; [.379E.0020.0002.A47E] # YI SYLLABLE YOX
+A47F ; [.379F.0020.0002.A47F] # YI SYLLABLE YO
+A480 ; [.37A0.0020.0002.A480] # YI SYLLABLE YOP
+A481 ; [.37A1.0020.0002.A481] # YI SYLLABLE YUT
+A482 ; [.37A2.0020.0002.A482] # YI SYLLABLE YUX
+A483 ; [.37A3.0020.0002.A483] # YI SYLLABLE YU
+A484 ; [.37A4.0020.0002.A484] # YI SYLLABLE YUP
+A485 ; [.37A5.0020.0002.A485] # YI SYLLABLE YURX
+A486 ; [.37A6.0020.0002.A486] # YI SYLLABLE YUR
+A487 ; [.37A7.0020.0002.A487] # YI SYLLABLE YYT
+A488 ; [.37A8.0020.0002.A488] # YI SYLLABLE YYX
+A489 ; [.37A9.0020.0002.A489] # YI SYLLABLE YY
+A48A ; [.37AA.0020.0002.A48A] # YI SYLLABLE YYP
+A48B ; [.37AB.0020.0002.A48B] # YI SYLLABLE YYRX
+A48C ; [.37AC.0020.0002.A48C] # YI SYLLABLE YYR
+A4F8 ; [.37AD.0020.0002.A4F8] # LISU LETTER TONE MYA TI
+A4F9 ; [.37AE.0020.0002.A4F9] # LISU LETTER TONE NA PO
+A4FA ; [.37AF.0020.0002.A4FA] # LISU LETTER TONE MYA CYA
+A4FB ; [.37B0.0020.0002.A4FB] # LISU LETTER TONE MYA BO
+A4FD ; [.37B1.0020.0002.A4FD] # LISU LETTER TONE MYA JEU
+A4FC ; [.37B2.0020.0002.A4FC] # LISU LETTER TONE MYA NA
+A4D0 ; [.37B3.0020.0002.A4D0] # LISU LETTER BA
+A4D1 ; [.37B4.0020.0002.A4D1] # LISU LETTER PA
+A4D2 ; [.37B5.0020.0002.A4D2] # LISU LETTER PHA
+A4D3 ; [.37B6.0020.0002.A4D3] # LISU LETTER DA
+A4D4 ; [.37B7.0020.0002.A4D4] # LISU LETTER TA
+A4D5 ; [.37B8.0020.0002.A4D5] # LISU LETTER THA
+A4D6 ; [.37B9.0020.0002.A4D6] # LISU LETTER GA
+A4D7 ; [.37BA.0020.0002.A4D7] # LISU LETTER KA
+A4D8 ; [.37BB.0020.0002.A4D8] # LISU LETTER KHA
+A4D9 ; [.37BC.0020.0002.A4D9] # LISU LETTER JA
+A4DA ; [.37BD.0020.0002.A4DA] # LISU LETTER CA
+A4DB ; [.37BE.0020.0002.A4DB] # LISU LETTER CHA
+A4DC ; [.37BF.0020.0002.A4DC] # LISU LETTER DZA
+A4DD ; [.37C0.0020.0002.A4DD] # LISU LETTER TSA
+A4DE ; [.37C1.0020.0002.A4DE] # LISU LETTER TSHA
+A4DF ; [.37C2.0020.0002.A4DF] # LISU LETTER MA
+A4E0 ; [.37C3.0020.0002.A4E0] # LISU LETTER NA
+A4E1 ; [.37C4.0020.0002.A4E1] # LISU LETTER LA
+A4E2 ; [.37C5.0020.0002.A4E2] # LISU LETTER SA
+A4E3 ; [.37C6.0020.0002.A4E3] # LISU LETTER ZHA
+A4E4 ; [.37C7.0020.0002.A4E4] # LISU LETTER ZA
+A4E5 ; [.37C8.0020.0002.A4E5] # LISU LETTER NGA
+A4E6 ; [.37C9.0020.0002.A4E6] # LISU LETTER HA
+A4E7 ; [.37CA.0020.0002.A4E7] # LISU LETTER XA
+A4E8 ; [.37CB.0020.0002.A4E8] # LISU LETTER HHA
+A4E9 ; [.37CC.0020.0002.A4E9] # LISU LETTER FA
+A4EB ; [.37CD.0020.0002.A4EB] # LISU LETTER SHA
+A4ED ; [.37CE.0020.0002.A4ED] # LISU LETTER GHA
+A4EA ; [.37CF.0020.0002.A4EA] # LISU LETTER WA
+A4EC ; [.37D0.0020.0002.A4EC] # LISU LETTER YA
+A4EE ; [.37D1.0020.0002.A4EE] # LISU LETTER A
+A4EF ; [.37D2.0020.0002.A4EF] # LISU LETTER AE
+A4F0 ; [.37D3.0020.0002.A4F0] # LISU LETTER E
+A4F1 ; [.37D4.0020.0002.A4F1] # LISU LETTER EU
+A4F2 ; [.37D5.0020.0002.A4F2] # LISU LETTER I
+A4F3 ; [.37D6.0020.0002.A4F3] # LISU LETTER O
+A4F4 ; [.37D7.0020.0002.A4F4] # LISU LETTER U
+A4F5 ; [.37D8.0020.0002.A4F5] # LISU LETTER UE
+A4F6 ; [.37D9.0020.0002.A4F6] # LISU LETTER UH
+A4F7 ; [.37DA.0020.0002.A4F7] # LISU LETTER OE
+16F00 ; [.37DB.0020.0002.16F00] # MIAO LETTER PA
+16F01 ; [.37DC.0020.0002.16F01] # MIAO LETTER BA
+16F02 ; [.37DD.0020.0002.16F02] # MIAO LETTER YI PA
+16F03 ; [.37DE.0020.0002.16F03] # MIAO LETTER PLA
+16F04 ; [.37DF.0020.0002.16F04] # MIAO LETTER MA
+16F06 ; [.37DF.0020.0004.16F06] # MIAO LETTER ARCHAIC MA
+16F05 ; [.37E0.0020.0002.16F05] # MIAO LETTER MHA
+16F07 ; [.37E1.0020.0002.16F07] # MIAO LETTER FA
+16F08 ; [.37E2.0020.0002.16F08] # MIAO LETTER VA
+16F09 ; [.37E3.0020.0002.16F09] # MIAO LETTER VFA
+16F0A ; [.37E4.0020.0002.16F0A] # MIAO LETTER TA
+16F0B ; [.37E5.0020.0002.16F0B] # MIAO LETTER DA
+16F0C ; [.37E6.0020.0002.16F0C] # MIAO LETTER YI TTA
+16F0D ; [.37E7.0020.0002.16F0D] # MIAO LETTER YI TA
+16F0E ; [.37E8.0020.0002.16F0E] # MIAO LETTER TTA
+16F0F ; [.37E9.0020.0002.16F0F] # MIAO LETTER DDA
+16F10 ; [.37EA.0020.0002.16F10] # MIAO LETTER NA
+16F13 ; [.37EA.0020.0004.16F13] # MIAO LETTER ARCHAIC NA
+16F11 ; [.37EB.0020.0002.16F11] # MIAO LETTER NHA
+16F12 ; [.37EC.0020.0002.16F12] # MIAO LETTER YI NNA
+16F14 ; [.37ED.0020.0002.16F14] # MIAO LETTER NNA
+16F15 ; [.37EE.0020.0002.16F15] # MIAO LETTER NNHA
+16F16 ; [.37EF.0020.0002.16F16] # MIAO LETTER LA
+16F17 ; [.37F0.0020.0002.16F17] # MIAO LETTER LYA
+16F18 ; [.37F1.0020.0002.16F18] # MIAO LETTER LHA
+16F19 ; [.37F2.0020.0002.16F19] # MIAO LETTER LHYA
+16F1A ; [.37F3.0020.0002.16F1A] # MIAO LETTER TLHA
+16F1B ; [.37F4.0020.0002.16F1B] # MIAO LETTER DLHA
+16F1C ; [.37F5.0020.0002.16F1C] # MIAO LETTER TLHYA
+16F1D ; [.37F6.0020.0002.16F1D] # MIAO LETTER DLHYA
+16F1E ; [.37F7.0020.0002.16F1E] # MIAO LETTER KA
+16F1F ; [.37F8.0020.0002.16F1F] # MIAO LETTER GA
+16F20 ; [.37F9.0020.0002.16F20] # MIAO LETTER YI KA
+16F21 ; [.37FA.0020.0002.16F21] # MIAO LETTER QA
+16F22 ; [.37FB.0020.0002.16F22] # MIAO LETTER QGA
+16F23 ; [.37FC.0020.0002.16F23] # MIAO LETTER NGA
+16F25 ; [.37FC.0020.0004.16F25] # MIAO LETTER ARCHAIC NGA
+16F24 ; [.37FD.0020.0002.16F24] # MIAO LETTER NGHA
+16F26 ; [.37FE.0020.0002.16F26] # MIAO LETTER HA
+16F27 ; [.37FF.0020.0002.16F27] # MIAO LETTER XA
+16F28 ; [.3800.0020.0002.16F28] # MIAO LETTER GHA
+16F29 ; [.3801.0020.0002.16F29] # MIAO LETTER GHHA
+16F2A ; [.3802.0020.0002.16F2A] # MIAO LETTER TSSA
+16F2B ; [.3803.0020.0002.16F2B] # MIAO LETTER DZZA
+16F2C ; [.3804.0020.0002.16F2C] # MIAO LETTER NYA
+16F2D ; [.3805.0020.0002.16F2D] # MIAO LETTER NYHA
+16F2E ; [.3806.0020.0002.16F2E] # MIAO LETTER TSHA
+16F2F ; [.3807.0020.0002.16F2F] # MIAO LETTER DZHA
+16F30 ; [.3808.0020.0002.16F30] # MIAO LETTER YI TSHA
+16F31 ; [.3809.0020.0002.16F31] # MIAO LETTER YI DZHA
+16F32 ; [.380A.0020.0002.16F32] # MIAO LETTER REFORMED TSHA
+16F33 ; [.380B.0020.0002.16F33] # MIAO LETTER SHA
+16F34 ; [.380C.0020.0002.16F34] # MIAO LETTER SSA
+16F35 ; [.380D.0020.0002.16F35] # MIAO LETTER ZHA
+16F36 ; [.380E.0020.0002.16F36] # MIAO LETTER ZSHA
+16F37 ; [.380F.0020.0002.16F37] # MIAO LETTER TSA
+16F38 ; [.3810.0020.0002.16F38] # MIAO LETTER DZA
+16F39 ; [.3811.0020.0002.16F39] # MIAO LETTER YI TSA
+16F3A ; [.3812.0020.0002.16F3A] # MIAO LETTER SA
+16F3B ; [.3813.0020.0002.16F3B] # MIAO LETTER ZA
+16F3C ; [.3814.0020.0002.16F3C] # MIAO LETTER ZSA
+16F3D ; [.3815.0020.0002.16F3D] # MIAO LETTER ZZA
+16F3F ; [.3815.0020.0004.16F3F] # MIAO LETTER ARCHAIC ZZA
+16F3E ; [.3816.0020.0002.16F3E] # MIAO LETTER ZZSA
+16F40 ; [.3817.0020.0002.16F40] # MIAO LETTER ZZYA
+16F41 ; [.3818.0020.0002.16F41] # MIAO LETTER ZZSYA
+16F42 ; [.3819.0020.0002.16F42] # MIAO LETTER WA
+16F43 ; [.381A.0020.0002.16F43] # MIAO LETTER AH
+16F44 ; [.381B.0020.0002.16F44] # MIAO LETTER HHA
+16F50 ; [.381C.0020.0002.16F50] # MIAO LETTER NASALIZATION
+16F51 ; [.381D.0020.0002.16F51] # MIAO SIGN ASPIRATION
+16F52 ; [.381E.0020.0002.16F52] # MIAO SIGN REFORMED VOICING
+16F53 ; [.381F.0020.0002.16F53] # MIAO SIGN REFORMED ASPIRATION
+16F54 ; [.3820.0020.0002.16F54] # MIAO VOWEL SIGN A
+16F55 ; [.3821.0020.0002.16F55] # MIAO VOWEL SIGN AA
+16F56 ; [.3822.0020.0002.16F56] # MIAO VOWEL SIGN AHH
+16F57 ; [.3823.0020.0002.16F57] # MIAO VOWEL SIGN AN
+16F58 ; [.3824.0020.0002.16F58] # MIAO VOWEL SIGN ANG
+16F59 ; [.3825.0020.0002.16F59] # MIAO VOWEL SIGN O
+16F5A ; [.3826.0020.0002.16F5A] # MIAO VOWEL SIGN OO
+16F5B ; [.3827.0020.0002.16F5B] # MIAO VOWEL SIGN WO
+16F5C ; [.3828.0020.0002.16F5C] # MIAO VOWEL SIGN W
+16F5D ; [.3829.0020.0002.16F5D] # MIAO VOWEL SIGN E
+16F5E ; [.382A.0020.0002.16F5E] # MIAO VOWEL SIGN EN
+16F5F ; [.382B.0020.0002.16F5F] # MIAO VOWEL SIGN ENG
+16F60 ; [.382C.0020.0002.16F60] # MIAO VOWEL SIGN OEY
+16F61 ; [.382D.0020.0002.16F61] # MIAO VOWEL SIGN I
+16F62 ; [.382E.0020.0002.16F62] # MIAO VOWEL SIGN IA
+16F63 ; [.382F.0020.0002.16F63] # MIAO VOWEL SIGN IAN
+16F64 ; [.3830.0020.0002.16F64] # MIAO VOWEL SIGN IANG
+16F65 ; [.3831.0020.0002.16F65] # MIAO VOWEL SIGN IO
+16F66 ; [.3832.0020.0002.16F66] # MIAO VOWEL SIGN IE
+16F67 ; [.3833.0020.0002.16F67] # MIAO VOWEL SIGN II
+16F68 ; [.3834.0020.0002.16F68] # MIAO VOWEL SIGN IU
+16F69 ; [.3835.0020.0002.16F69] # MIAO VOWEL SIGN ING
+16F6A ; [.3836.0020.0002.16F6A] # MIAO VOWEL SIGN U
+16F6B ; [.3837.0020.0002.16F6B] # MIAO VOWEL SIGN UA
+16F6C ; [.3838.0020.0002.16F6C] # MIAO VOWEL SIGN UAN
+16F6D ; [.3839.0020.0002.16F6D] # MIAO VOWEL SIGN UANG
+16F6E ; [.383A.0020.0002.16F6E] # MIAO VOWEL SIGN UU
+16F6F ; [.383B.0020.0002.16F6F] # MIAO VOWEL SIGN UEI
+16F70 ; [.383C.0020.0002.16F70] # MIAO VOWEL SIGN UNG
+16F71 ; [.383D.0020.0002.16F71] # MIAO VOWEL SIGN Y
+16F72 ; [.383E.0020.0002.16F72] # MIAO VOWEL SIGN YI
+16F73 ; [.383F.0020.0002.16F73] # MIAO VOWEL SIGN AE
+16F74 ; [.3840.0020.0002.16F74] # MIAO VOWEL SIGN AEE
+16F75 ; [.3841.0020.0002.16F75] # MIAO VOWEL SIGN ERR
+16F76 ; [.3842.0020.0002.16F76] # MIAO VOWEL SIGN ROUNDED ERR
+16F77 ; [.3843.0020.0002.16F77] # MIAO VOWEL SIGN ER
+16F78 ; [.3844.0020.0002.16F78] # MIAO VOWEL SIGN ROUNDED ER
+16F79 ; [.3845.0020.0002.16F79] # MIAO VOWEL SIGN AI
+16F7A ; [.3846.0020.0002.16F7A] # MIAO VOWEL SIGN EI
+16F7B ; [.3847.0020.0002.16F7B] # MIAO VOWEL SIGN AU
+16F7C ; [.3848.0020.0002.16F7C] # MIAO VOWEL SIGN OU
+16F7D ; [.3849.0020.0002.16F7D] # MIAO VOWEL SIGN N
+16F7E ; [.384A.0020.0002.16F7E] # MIAO VOWEL SIGN NG
+16F8F ; [.384B.0020.0002.16F8F] # MIAO TONE RIGHT
+16F90 ; [.384C.0020.0002.16F90] # MIAO TONE TOP RIGHT
+16F91 ; [.384D.0020.0002.16F91] # MIAO TONE ABOVE
+16F92 ; [.384E.0020.0002.16F92] # MIAO TONE BELOW
+16F93 ; [.384F.0020.0002.16F93] # MIAO LETTER TONE-2
+16F94 ; [.3850.0020.0002.16F94] # MIAO LETTER TONE-3
+16F95 ; [.3851.0020.0002.16F95] # MIAO LETTER TONE-4
+16F96 ; [.3852.0020.0002.16F96] # MIAO LETTER TONE-5
+16F97 ; [.3853.0020.0002.16F97] # MIAO LETTER TONE-6
+16F98 ; [.3854.0020.0002.16F98] # MIAO LETTER TONE-7
+16F99 ; [.3855.0020.0002.16F99] # MIAO LETTER TONE-8
+16F9A ; [.3856.0020.0002.16F9A] # MIAO LETTER REFORMED TONE-1
+16F9B ; [.3857.0020.0002.16F9B] # MIAO LETTER REFORMED TONE-2
+16F9C ; [.3858.0020.0002.16F9C] # MIAO LETTER REFORMED TONE-4
+16F9D ; [.3859.0020.0002.16F9D] # MIAO LETTER REFORMED TONE-5
+16F9E ; [.385A.0020.0002.16F9E] # MIAO LETTER REFORMED TONE-6
+16F9F ; [.385B.0020.0002.16F9F] # MIAO LETTER REFORMED TONE-8
+10280 ; [.385C.0020.0002.10280] # LYCIAN LETTER A
+10281 ; [.385D.0020.0002.10281] # LYCIAN LETTER E
+10282 ; [.385E.0020.0002.10282] # LYCIAN LETTER B
+10283 ; [.385F.0020.0002.10283] # LYCIAN LETTER BH
+10284 ; [.3860.0020.0002.10284] # LYCIAN LETTER G
+10285 ; [.3861.0020.0002.10285] # LYCIAN LETTER D
+10286 ; [.3862.0020.0002.10286] # LYCIAN LETTER I
+10287 ; [.3863.0020.0002.10287] # LYCIAN LETTER W
+10288 ; [.3864.0020.0002.10288] # LYCIAN LETTER Z
+10289 ; [.3865.0020.0002.10289] # LYCIAN LETTER TH
+1028A ; [.3866.0020.0002.1028A] # LYCIAN LETTER J
+1028B ; [.3867.0020.0002.1028B] # LYCIAN LETTER K
+1028C ; [.3868.0020.0002.1028C] # LYCIAN LETTER Q
+1028D ; [.3869.0020.0002.1028D] # LYCIAN LETTER L
+1028E ; [.386A.0020.0002.1028E] # LYCIAN LETTER M
+1028F ; [.386B.0020.0002.1028F] # LYCIAN LETTER N
+10290 ; [.386C.0020.0002.10290] # LYCIAN LETTER MM
+10291 ; [.386D.0020.0002.10291] # LYCIAN LETTER NN
+10292 ; [.386E.0020.0002.10292] # LYCIAN LETTER U
+10293 ; [.386F.0020.0002.10293] # LYCIAN LETTER P
+10294 ; [.3870.0020.0002.10294] # LYCIAN LETTER KK
+10295 ; [.3871.0020.0002.10295] # LYCIAN LETTER R
+10296 ; [.3872.0020.0002.10296] # LYCIAN LETTER S
+10297 ; [.3873.0020.0002.10297] # LYCIAN LETTER T
+10298 ; [.3874.0020.0002.10298] # LYCIAN LETTER TT
+10299 ; [.3875.0020.0002.10299] # LYCIAN LETTER AN
+1029A ; [.3876.0020.0002.1029A] # LYCIAN LETTER EN
+1029B ; [.3877.0020.0002.1029B] # LYCIAN LETTER H
+1029C ; [.3878.0020.0002.1029C] # LYCIAN LETTER X
+102A0 ; [.3879.0020.0002.102A0] # CARIAN LETTER A
+102A1 ; [.387A.0020.0002.102A1] # CARIAN LETTER P2
+102A2 ; [.387B.0020.0002.102A2] # CARIAN LETTER D
+102A3 ; [.387C.0020.0002.102A3] # CARIAN LETTER L
+102A4 ; [.387D.0020.0002.102A4] # CARIAN LETTER UUU
+102A5 ; [.387E.0020.0002.102A5] # CARIAN LETTER R
+102A6 ; [.387F.0020.0002.102A6] # CARIAN LETTER LD
+102A7 ; [.3880.0020.0002.102A7] # CARIAN LETTER A2
+102A8 ; [.3881.0020.0002.102A8] # CARIAN LETTER Q
+102A9 ; [.3882.0020.0002.102A9] # CARIAN LETTER B
+102AA ; [.3883.0020.0002.102AA] # CARIAN LETTER M
+102AB ; [.3884.0020.0002.102AB] # CARIAN LETTER O
+102AC ; [.3885.0020.0002.102AC] # CARIAN LETTER D2
+102AD ; [.3886.0020.0002.102AD] # CARIAN LETTER T
+102AE ; [.3887.0020.0002.102AE] # CARIAN LETTER SH
+102AF ; [.3888.0020.0002.102AF] # CARIAN LETTER SH2
+102B0 ; [.3889.0020.0002.102B0] # CARIAN LETTER S
+102B1 ; [.388A.0020.0002.102B1] # CARIAN LETTER C-18
+102B2 ; [.388B.0020.0002.102B2] # CARIAN LETTER U
+102B3 ; [.388C.0020.0002.102B3] # CARIAN LETTER NN
+102B4 ; [.388D.0020.0002.102B4] # CARIAN LETTER X
+102B5 ; [.388E.0020.0002.102B5] # CARIAN LETTER N
+102B6 ; [.388F.0020.0002.102B6] # CARIAN LETTER TT2
+102B7 ; [.3890.0020.0002.102B7] # CARIAN LETTER P
+102B8 ; [.3891.0020.0002.102B8] # CARIAN LETTER SS
+102B9 ; [.3892.0020.0002.102B9] # CARIAN LETTER I
+102BA ; [.3893.0020.0002.102BA] # CARIAN LETTER E
+102BB ; [.3894.0020.0002.102BB] # CARIAN LETTER UUUU
+102BC ; [.3895.0020.0002.102BC] # CARIAN LETTER K
+102BD ; [.3896.0020.0002.102BD] # CARIAN LETTER K2
+102BE ; [.3897.0020.0002.102BE] # CARIAN LETTER ND
+102BF ; [.3898.0020.0002.102BF] # CARIAN LETTER UU
+102C0 ; [.3899.0020.0002.102C0] # CARIAN LETTER G
+102C1 ; [.389A.0020.0002.102C1] # CARIAN LETTER G2
+102C2 ; [.389B.0020.0002.102C2] # CARIAN LETTER ST
+102C3 ; [.389C.0020.0002.102C3] # CARIAN LETTER ST2
+102C4 ; [.389D.0020.0002.102C4] # CARIAN LETTER NG
+102C5 ; [.389E.0020.0002.102C5] # CARIAN LETTER II
+102C6 ; [.389F.0020.0002.102C6] # CARIAN LETTER C-39
+102C7 ; [.38A0.0020.0002.102C7] # CARIAN LETTER TT
+102C8 ; [.38A1.0020.0002.102C8] # CARIAN LETTER UUU2
+102C9 ; [.38A2.0020.0002.102C9] # CARIAN LETTER RR
+102CA ; [.38A3.0020.0002.102CA] # CARIAN LETTER MB
+102CB ; [.38A4.0020.0002.102CB] # CARIAN LETTER MB2
+102CC ; [.38A5.0020.0002.102CC] # CARIAN LETTER MB3
+102CD ; [.38A6.0020.0002.102CD] # CARIAN LETTER MB4
+102CE ; [.38A7.0020.0002.102CE] # CARIAN LETTER LD2
+102CF ; [.38A8.0020.0002.102CF] # CARIAN LETTER E2
+102D0 ; [.38A9.0020.0002.102D0] # CARIAN LETTER UUU3
+10920 ; [.38AA.0020.0002.10920] # LYDIAN LETTER A
+10921 ; [.38AB.0020.0002.10921] # LYDIAN LETTER B
+10922 ; [.38AC.0020.0002.10922] # LYDIAN LETTER G
+10923 ; [.38AD.0020.0002.10923] # LYDIAN LETTER D
+10924 ; [.38AE.0020.0002.10924] # LYDIAN LETTER E
+10925 ; [.38AF.0020.0002.10925] # LYDIAN LETTER V
+10926 ; [.38B0.0020.0002.10926] # LYDIAN LETTER I
+10927 ; [.38B1.0020.0002.10927] # LYDIAN LETTER Y
+10928 ; [.38B2.0020.0002.10928] # LYDIAN LETTER K
+10929 ; [.38B3.0020.0002.10929] # LYDIAN LETTER L
+1092A ; [.38B4.0020.0002.1092A] # LYDIAN LETTER M
+1092B ; [.38B5.0020.0002.1092B] # LYDIAN LETTER N
+1092C ; [.38B6.0020.0002.1092C] # LYDIAN LETTER O
+1092D ; [.38B7.0020.0002.1092D] # LYDIAN LETTER R
+1092E ; [.38B8.0020.0002.1092E] # LYDIAN LETTER SS
+1092F ; [.38B9.0020.0002.1092F] # LYDIAN LETTER T
+10930 ; [.38BA.0020.0002.10930] # LYDIAN LETTER U
+10931 ; [.38BB.0020.0002.10931] # LYDIAN LETTER F
+10932 ; [.38BC.0020.0002.10932] # LYDIAN LETTER Q
+10933 ; [.38BD.0020.0002.10933] # LYDIAN LETTER S
+10934 ; [.38BE.0020.0002.10934] # LYDIAN LETTER TT
+10935 ; [.38BF.0020.0002.10935] # LYDIAN LETTER AN
+10936 ; [.38C0.0020.0002.10936] # LYDIAN LETTER EN
+10937 ; [.38C1.0020.0002.10937] # LYDIAN LETTER LY
+10938 ; [.38C2.0020.0002.10938] # LYDIAN LETTER NN
+10939 ; [.38C3.0020.0002.10939] # LYDIAN LETTER C
+10300 ; [.38C4.0020.0002.10300] # OLD ITALIC LETTER A
+10301 ; [.38C5.0020.0002.10301] # OLD ITALIC LETTER BE
+10302 ; [.38C6.0020.0002.10302] # OLD ITALIC LETTER KE
+10303 ; [.38C7.0020.0002.10303] # OLD ITALIC LETTER DE
+10304 ; [.38C8.0020.0002.10304] # OLD ITALIC LETTER E
+10305 ; [.38C9.0020.0002.10305] # OLD ITALIC LETTER VE
+10306 ; [.38CA.0020.0002.10306] # OLD ITALIC LETTER ZE
+10307 ; [.38CB.0020.0002.10307] # OLD ITALIC LETTER HE
+10308 ; [.38CC.0020.0002.10308] # OLD ITALIC LETTER THE
+10309 ; [.38CD.0020.0002.10309] # OLD ITALIC LETTER I
+1030A ; [.38CE.0020.0002.1030A] # OLD ITALIC LETTER KA
+1030B ; [.38CF.0020.0002.1030B] # OLD ITALIC LETTER EL
+1030C ; [.38D0.0020.0002.1030C] # OLD ITALIC LETTER EM
+1030D ; [.38D1.0020.0002.1030D] # OLD ITALIC LETTER EN
+1030E ; [.38D2.0020.0002.1030E] # OLD ITALIC LETTER ESH
+1030F ; [.38D3.0020.0002.1030F] # OLD ITALIC LETTER O
+10310 ; [.38D4.0020.0002.10310] # OLD ITALIC LETTER PE
+10311 ; [.38D5.0020.0002.10311] # OLD ITALIC LETTER SHE
+10312 ; [.38D6.0020.0002.10312] # OLD ITALIC LETTER KU
+10313 ; [.38D7.0020.0002.10313] # OLD ITALIC LETTER ER
+10314 ; [.38D8.0020.0002.10314] # OLD ITALIC LETTER ES
+10315 ; [.38D9.0020.0002.10315] # OLD ITALIC LETTER TE
+10316 ; [.38DA.0020.0002.10316] # OLD ITALIC LETTER U
+10317 ; [.38DB.0020.0002.10317] # OLD ITALIC LETTER EKS
+10318 ; [.38DC.0020.0002.10318] # OLD ITALIC LETTER PHE
+10319 ; [.38DD.0020.0002.10319] # OLD ITALIC LETTER KHE
+1031A ; [.38DE.0020.0002.1031A] # OLD ITALIC LETTER EF
+1031B ; [.38DF.0020.0002.1031B] # OLD ITALIC LETTER ERS
+1031C ; [.38E0.0020.0002.1031C] # OLD ITALIC LETTER CHE
+1031D ; [.38E1.0020.0002.1031D] # OLD ITALIC LETTER II
+1031E ; [.38E2.0020.0002.1031E] # OLD ITALIC LETTER UU
+10330 ; [.38E3.0020.0002.10330] # GOTHIC LETTER AHSA
+10331 ; [.38E4.0020.0002.10331] # GOTHIC LETTER BAIRKAN
+10332 ; [.38E5.0020.0002.10332] # GOTHIC LETTER GIBA
+10333 ; [.38E6.0020.0002.10333] # GOTHIC LETTER DAGS
+10334 ; [.38E7.0020.0002.10334] # GOTHIC LETTER AIHVUS
+10335 ; [.38E8.0020.0002.10335] # GOTHIC LETTER QAIRTHRA
+10336 ; [.38E9.0020.0002.10336] # GOTHIC LETTER IUJA
+10337 ; [.38EA.0020.0002.10337] # GOTHIC LETTER HAGL
+10338 ; [.38EB.0020.0002.10338] # GOTHIC LETTER THIUTH
+10339 ; [.38EC.0020.0002.10339] # GOTHIC LETTER EIS
+1033A ; [.38ED.0020.0002.1033A] # GOTHIC LETTER KUSMA
+1033B ; [.38EE.0020.0002.1033B] # GOTHIC LETTER LAGUS
+1033C ; [.38EF.0020.0002.1033C] # GOTHIC LETTER MANNA
+1033D ; [.38F0.0020.0002.1033D] # GOTHIC LETTER NAUTHS
+1033E ; [.38F1.0020.0002.1033E] # GOTHIC LETTER JER
+1033F ; [.38F2.0020.0002.1033F] # GOTHIC LETTER URUS
+10340 ; [.38F3.0020.0002.10340] # GOTHIC LETTER PAIRTHRA
+10341 ; [.38F4.0020.0002.10341] # GOTHIC LETTER NINETY
+10342 ; [.38F5.0020.0002.10342] # GOTHIC LETTER RAIDA
+10343 ; [.38F6.0020.0002.10343] # GOTHIC LETTER SAUIL
+10344 ; [.38F7.0020.0002.10344] # GOTHIC LETTER TEIWS
+10345 ; [.38F8.0020.0002.10345] # GOTHIC LETTER WINJA
+10346 ; [.38F9.0020.0002.10346] # GOTHIC LETTER FAIHU
+10347 ; [.38FA.0020.0002.10347] # GOTHIC LETTER IGGWS
+10348 ; [.38FB.0020.0002.10348] # GOTHIC LETTER HWAIR
+10349 ; [.38FC.0020.0002.10349] # GOTHIC LETTER OTHAL
+1034A ; [.38FD.0020.0002.1034A] # GOTHIC LETTER NINE HUNDRED
+10428 ; [.38FE.0020.0002.10428] # DESERET SMALL LETTER LONG I
+10400 ; [.38FE.0020.0008.10400] # DESERET CAPITAL LETTER LONG I
+10429 ; [.38FF.0020.0002.10429] # DESERET SMALL LETTER LONG E
+10401 ; [.38FF.0020.0008.10401] # DESERET CAPITAL LETTER LONG E
+1042A ; [.3900.0020.0002.1042A] # DESERET SMALL LETTER LONG A
+10402 ; [.3900.0020.0008.10402] # DESERET CAPITAL LETTER LONG A
+1042B ; [.3901.0020.0002.1042B] # DESERET SMALL LETTER LONG AH
+10403 ; [.3901.0020.0008.10403] # DESERET CAPITAL LETTER LONG AH
+1042C ; [.3902.0020.0002.1042C] # DESERET SMALL LETTER LONG O
+10404 ; [.3902.0020.0008.10404] # DESERET CAPITAL LETTER LONG O
+1042D ; [.3903.0020.0002.1042D] # DESERET SMALL LETTER LONG OO
+10405 ; [.3903.0020.0008.10405] # DESERET CAPITAL LETTER LONG OO
+1042E ; [.3904.0020.0002.1042E] # DESERET SMALL LETTER SHORT I
+10406 ; [.3904.0020.0008.10406] # DESERET CAPITAL LETTER SHORT I
+1042F ; [.3905.0020.0002.1042F] # DESERET SMALL LETTER SHORT E
+10407 ; [.3905.0020.0008.10407] # DESERET CAPITAL LETTER SHORT E
+10430 ; [.3906.0020.0002.10430] # DESERET SMALL LETTER SHORT A
+10408 ; [.3906.0020.0008.10408] # DESERET CAPITAL LETTER SHORT A
+10431 ; [.3907.0020.0002.10431] # DESERET SMALL LETTER SHORT AH
+10409 ; [.3907.0020.0008.10409] # DESERET CAPITAL LETTER SHORT AH
+10432 ; [.3908.0020.0002.10432] # DESERET SMALL LETTER SHORT O
+1040A ; [.3908.0020.0008.1040A] # DESERET CAPITAL LETTER SHORT O
+10433 ; [.3909.0020.0002.10433] # DESERET SMALL LETTER SHORT OO
+1040B ; [.3909.0020.0008.1040B] # DESERET CAPITAL LETTER SHORT OO
+10434 ; [.390A.0020.0002.10434] # DESERET SMALL LETTER AY
+1040C ; [.390A.0020.0008.1040C] # DESERET CAPITAL LETTER AY
+10435 ; [.390B.0020.0002.10435] # DESERET SMALL LETTER OW
+1040D ; [.390B.0020.0008.1040D] # DESERET CAPITAL LETTER OW
+10436 ; [.390C.0020.0002.10436] # DESERET SMALL LETTER WU
+1040E ; [.390C.0020.0008.1040E] # DESERET CAPITAL LETTER WU
+10437 ; [.390D.0020.0002.10437] # DESERET SMALL LETTER YEE
+1040F ; [.390D.0020.0008.1040F] # DESERET CAPITAL LETTER YEE
+10438 ; [.390E.0020.0002.10438] # DESERET SMALL LETTER H
+10410 ; [.390E.0020.0008.10410] # DESERET CAPITAL LETTER H
+10439 ; [.390F.0020.0002.10439] # DESERET SMALL LETTER PEE
+10411 ; [.390F.0020.0008.10411] # DESERET CAPITAL LETTER PEE
+1043A ; [.3910.0020.0002.1043A] # DESERET SMALL LETTER BEE
+10412 ; [.3910.0020.0008.10412] # DESERET CAPITAL LETTER BEE
+1043B ; [.3911.0020.0002.1043B] # DESERET SMALL LETTER TEE
+10413 ; [.3911.0020.0008.10413] # DESERET CAPITAL LETTER TEE
+1043C ; [.3912.0020.0002.1043C] # DESERET SMALL LETTER DEE
+10414 ; [.3912.0020.0008.10414] # DESERET CAPITAL LETTER DEE
+1043D ; [.3913.0020.0002.1043D] # DESERET SMALL LETTER CHEE
+10415 ; [.3913.0020.0008.10415] # DESERET CAPITAL LETTER CHEE
+1043E ; [.3914.0020.0002.1043E] # DESERET SMALL LETTER JEE
+10416 ; [.3914.0020.0008.10416] # DESERET CAPITAL LETTER JEE
+1043F ; [.3915.0020.0002.1043F] # DESERET SMALL LETTER KAY
+10417 ; [.3915.0020.0008.10417] # DESERET CAPITAL LETTER KAY
+10440 ; [.3916.0020.0002.10440] # DESERET SMALL LETTER GAY
+10418 ; [.3916.0020.0008.10418] # DESERET CAPITAL LETTER GAY
+10441 ; [.3917.0020.0002.10441] # DESERET SMALL LETTER EF
+10419 ; [.3917.0020.0008.10419] # DESERET CAPITAL LETTER EF
+10442 ; [.3918.0020.0002.10442] # DESERET SMALL LETTER VEE
+1041A ; [.3918.0020.0008.1041A] # DESERET CAPITAL LETTER VEE
+10443 ; [.3919.0020.0002.10443] # DESERET SMALL LETTER ETH
+1041B ; [.3919.0020.0008.1041B] # DESERET CAPITAL LETTER ETH
+10444 ; [.391A.0020.0002.10444] # DESERET SMALL LETTER THEE
+1041C ; [.391A.0020.0008.1041C] # DESERET CAPITAL LETTER THEE
+10445 ; [.391B.0020.0002.10445] # DESERET SMALL LETTER ES
+1041D ; [.391B.0020.0008.1041D] # DESERET CAPITAL LETTER ES
+10446 ; [.391C.0020.0002.10446] # DESERET SMALL LETTER ZEE
+1041E ; [.391C.0020.0008.1041E] # DESERET CAPITAL LETTER ZEE
+10447 ; [.391D.0020.0002.10447] # DESERET SMALL LETTER ESH
+1041F ; [.391D.0020.0008.1041F] # DESERET CAPITAL LETTER ESH
+10448 ; [.391E.0020.0002.10448] # DESERET SMALL LETTER ZHEE
+10420 ; [.391E.0020.0008.10420] # DESERET CAPITAL LETTER ZHEE
+10449 ; [.391F.0020.0002.10449] # DESERET SMALL LETTER ER
+10421 ; [.391F.0020.0008.10421] # DESERET CAPITAL LETTER ER
+1044A ; [.3920.0020.0002.1044A] # DESERET SMALL LETTER EL
+10422 ; [.3920.0020.0008.10422] # DESERET CAPITAL LETTER EL
+1044B ; [.3921.0020.0002.1044B] # DESERET SMALL LETTER EM
+10423 ; [.3921.0020.0008.10423] # DESERET CAPITAL LETTER EM
+1044C ; [.3922.0020.0002.1044C] # DESERET SMALL LETTER EN
+10424 ; [.3922.0020.0008.10424] # DESERET CAPITAL LETTER EN
+1044D ; [.3923.0020.0002.1044D] # DESERET SMALL LETTER ENG
+10425 ; [.3923.0020.0008.10425] # DESERET CAPITAL LETTER ENG
+1044E ; [.3924.0020.0002.1044E] # DESERET SMALL LETTER OI
+10426 ; [.3924.0020.0008.10426] # DESERET CAPITAL LETTER OI
+1044F ; [.3925.0020.0002.1044F] # DESERET SMALL LETTER EW
+10427 ; [.3925.0020.0008.10427] # DESERET CAPITAL LETTER EW
+10450 ; [.3926.0020.0002.10450] # SHAVIAN LETTER PEEP
+10451 ; [.3927.0020.0002.10451] # SHAVIAN LETTER TOT
+10452 ; [.3928.0020.0002.10452] # SHAVIAN LETTER KICK
+10453 ; [.3929.0020.0002.10453] # SHAVIAN LETTER FEE
+10454 ; [.392A.0020.0002.10454] # SHAVIAN LETTER THIGH
+10455 ; [.392B.0020.0002.10455] # SHAVIAN LETTER SO
+10456 ; [.392C.0020.0002.10456] # SHAVIAN LETTER SURE
+10457 ; [.392D.0020.0002.10457] # SHAVIAN LETTER CHURCH
+10458 ; [.392E.0020.0002.10458] # SHAVIAN LETTER YEA
+10459 ; [.392F.0020.0002.10459] # SHAVIAN LETTER HUNG
+1045A ; [.3930.0020.0002.1045A] # SHAVIAN LETTER BIB
+1045B ; [.3931.0020.0002.1045B] # SHAVIAN LETTER DEAD
+1045C ; [.3932.0020.0002.1045C] # SHAVIAN LETTER GAG
+1045D ; [.3933.0020.0002.1045D] # SHAVIAN LETTER VOW
+1045E ; [.3934.0020.0002.1045E] # SHAVIAN LETTER THEY
+1045F ; [.3935.0020.0002.1045F] # SHAVIAN LETTER ZOO
+10460 ; [.3936.0020.0002.10460] # SHAVIAN LETTER MEASURE
+10461 ; [.3937.0020.0002.10461] # SHAVIAN LETTER JUDGE
+10462 ; [.3938.0020.0002.10462] # SHAVIAN LETTER WOE
+10463 ; [.3939.0020.0002.10463] # SHAVIAN LETTER HA-HA
+10464 ; [.393A.0020.0002.10464] # SHAVIAN LETTER LOLL
+10465 ; [.393B.0020.0002.10465] # SHAVIAN LETTER MIME
+10466 ; [.393C.0020.0002.10466] # SHAVIAN LETTER IF
+10467 ; [.393D.0020.0002.10467] # SHAVIAN LETTER EGG
+10468 ; [.393E.0020.0002.10468] # SHAVIAN LETTER ASH
+10469 ; [.393F.0020.0002.10469] # SHAVIAN LETTER ADO
+1046A ; [.3940.0020.0002.1046A] # SHAVIAN LETTER ON
+1046B ; [.3941.0020.0002.1046B] # SHAVIAN LETTER WOOL
+1046C ; [.3942.0020.0002.1046C] # SHAVIAN LETTER OUT
+1046D ; [.3943.0020.0002.1046D] # SHAVIAN LETTER AH
+1046E ; [.3944.0020.0002.1046E] # SHAVIAN LETTER ROAR
+1046F ; [.3945.0020.0002.1046F] # SHAVIAN LETTER NUN
+10470 ; [.3946.0020.0002.10470] # SHAVIAN LETTER EAT
+10471 ; [.3947.0020.0002.10471] # SHAVIAN LETTER AGE
+10472 ; [.3948.0020.0002.10472] # SHAVIAN LETTER ICE
+10473 ; [.3949.0020.0002.10473] # SHAVIAN LETTER UP
+10474 ; [.394A.0020.0002.10474] # SHAVIAN LETTER OAK
+10475 ; [.394B.0020.0002.10475] # SHAVIAN LETTER OOZE
+10476 ; [.394C.0020.0002.10476] # SHAVIAN LETTER OIL
+10477 ; [.394D.0020.0002.10477] # SHAVIAN LETTER AWE
+10478 ; [.394E.0020.0002.10478] # SHAVIAN LETTER ARE
+10479 ; [.394F.0020.0002.10479] # SHAVIAN LETTER OR
+1047A ; [.3950.0020.0002.1047A] # SHAVIAN LETTER AIR
+1047B ; [.3951.0020.0002.1047B] # SHAVIAN LETTER ERR
+1047C ; [.3952.0020.0002.1047C] # SHAVIAN LETTER ARRAY
+1047D ; [.3953.0020.0002.1047D] # SHAVIAN LETTER EAR
+1047E ; [.3954.0020.0002.1047E] # SHAVIAN LETTER IAN
+1047F ; [.3955.0020.0002.1047F] # SHAVIAN LETTER YEW
+10480 ; [.3956.0020.0002.10480] # OSMANYA LETTER ALEF
+10481 ; [.3957.0020.0002.10481] # OSMANYA LETTER BA
+10482 ; [.3958.0020.0002.10482] # OSMANYA LETTER TA
+10483 ; [.3959.0020.0002.10483] # OSMANYA LETTER JA
+10484 ; [.395A.0020.0002.10484] # OSMANYA LETTER XA
+10485 ; [.395B.0020.0002.10485] # OSMANYA LETTER KHA
+10486 ; [.395C.0020.0002.10486] # OSMANYA LETTER DEEL
+10487 ; [.395D.0020.0002.10487] # OSMANYA LETTER RA
+10488 ; [.395E.0020.0002.10488] # OSMANYA LETTER SA
+10489 ; [.395F.0020.0002.10489] # OSMANYA LETTER SHIIN
+1048A ; [.3960.0020.0002.1048A] # OSMANYA LETTER DHA
+1048B ; [.3961.0020.0002.1048B] # OSMANYA LETTER CAYN
+1048C ; [.3962.0020.0002.1048C] # OSMANYA LETTER GA
+1048D ; [.3963.0020.0002.1048D] # OSMANYA LETTER FA
+1048E ; [.3964.0020.0002.1048E] # OSMANYA LETTER QAAF
+1048F ; [.3965.0020.0002.1048F] # OSMANYA LETTER KAAF
+10490 ; [.3966.0020.0002.10490] # OSMANYA LETTER LAAN
+10491 ; [.3967.0020.0002.10491] # OSMANYA LETTER MIIN
+10492 ; [.3968.0020.0002.10492] # OSMANYA LETTER NUUN
+10493 ; [.3969.0020.0002.10493] # OSMANYA LETTER WAW
+10494 ; [.396A.0020.0002.10494] # OSMANYA LETTER HA
+10495 ; [.396B.0020.0002.10495] # OSMANYA LETTER YA
+10496 ; [.396C.0020.0002.10496] # OSMANYA LETTER A
+10497 ; [.396D.0020.0002.10497] # OSMANYA LETTER E
+10498 ; [.396E.0020.0002.10498] # OSMANYA LETTER I
+10499 ; [.396F.0020.0002.10499] # OSMANYA LETTER O
+1049A ; [.3970.0020.0002.1049A] # OSMANYA LETTER U
+1049B ; [.3971.0020.0002.1049B] # OSMANYA LETTER AA
+1049C ; [.3972.0020.0002.1049C] # OSMANYA LETTER EE
+1049D ; [.3973.0020.0002.1049D] # OSMANYA LETTER OO
+110D0 ; [.3974.0020.0002.110D0] # SORA SOMPENG LETTER SAH
+110D1 ; [.3975.0020.0002.110D1] # SORA SOMPENG LETTER TAH
+110D2 ; [.3976.0020.0002.110D2] # SORA SOMPENG LETTER BAH
+110D3 ; [.3977.0020.0002.110D3] # SORA SOMPENG LETTER CAH
+110D4 ; [.3978.0020.0002.110D4] # SORA SOMPENG LETTER DAH
+110D5 ; [.3979.0020.0002.110D5] # SORA SOMPENG LETTER GAH
+110D6 ; [.397A.0020.0002.110D6] # SORA SOMPENG LETTER MAH
+110D7 ; [.397B.0020.0002.110D7] # SORA SOMPENG LETTER NGAH
+110D8 ; [.397C.0020.0002.110D8] # SORA SOMPENG LETTER LAH
+110D9 ; [.397D.0020.0002.110D9] # SORA SOMPENG LETTER NAH
+110DA ; [.397E.0020.0002.110DA] # SORA SOMPENG LETTER VAH
+110DB ; [.397F.0020.0002.110DB] # SORA SOMPENG LETTER PAH
+110DC ; [.3980.0020.0002.110DC] # SORA SOMPENG LETTER YAH
+110DD ; [.3981.0020.0002.110DD] # SORA SOMPENG LETTER RAH
+110DE ; [.3982.0020.0002.110DE] # SORA SOMPENG LETTER HAH
+110DF ; [.3983.0020.0002.110DF] # SORA SOMPENG LETTER KAH
+110E0 ; [.3984.0020.0002.110E0] # SORA SOMPENG LETTER JAH
+110E1 ; [.3985.0020.0002.110E1] # SORA SOMPENG LETTER NYAH
+110E2 ; [.3986.0020.0002.110E2] # SORA SOMPENG LETTER AH
+110E3 ; [.3987.0020.0002.110E3] # SORA SOMPENG LETTER EEH
+110E4 ; [.3988.0020.0002.110E4] # SORA SOMPENG LETTER IH
+110E5 ; [.3989.0020.0002.110E5] # SORA SOMPENG LETTER UH
+110E6 ; [.398A.0020.0002.110E6] # SORA SOMPENG LETTER OH
+110E7 ; [.398B.0020.0002.110E7] # SORA SOMPENG LETTER EH
+110E8 ; [.398C.0020.0002.110E8] # SORA SOMPENG LETTER MAE
+10000 ; [.398D.0020.0002.10000] # LINEAR B SYLLABLE B008 A
+10001 ; [.398E.0020.0002.10001] # LINEAR B SYLLABLE B038 E
+10002 ; [.398F.0020.0002.10002] # LINEAR B SYLLABLE B028 I
+10003 ; [.3990.0020.0002.10003] # LINEAR B SYLLABLE B061 O
+10004 ; [.3991.0020.0002.10004] # LINEAR B SYLLABLE B010 U
+10005 ; [.3992.0020.0002.10005] # LINEAR B SYLLABLE B001 DA
+10006 ; [.3993.0020.0002.10006] # LINEAR B SYLLABLE B045 DE
+10007 ; [.3994.0020.0002.10007] # LINEAR B SYLLABLE B007 DI
+10008 ; [.3995.0020.0002.10008] # LINEAR B SYLLABLE B014 DO
+10009 ; [.3996.0020.0002.10009] # LINEAR B SYLLABLE B051 DU
+1000A ; [.3997.0020.0002.1000A] # LINEAR B SYLLABLE B057 JA
+1000B ; [.3998.0020.0002.1000B] # LINEAR B SYLLABLE B046 JE
+1000D ; [.3999.0020.0002.1000D] # LINEAR B SYLLABLE B036 JO
+1000E ; [.399A.0020.0002.1000E] # LINEAR B SYLLABLE B065 JU
+1000F ; [.399B.0020.0002.1000F] # LINEAR B SYLLABLE B077 KA
+10010 ; [.399C.0020.0002.10010] # LINEAR B SYLLABLE B044 KE
+10011 ; [.399D.0020.0002.10011] # LINEAR B SYLLABLE B067 KI
+10012 ; [.399E.0020.0002.10012] # LINEAR B SYLLABLE B070 KO
+10013 ; [.399F.0020.0002.10013] # LINEAR B SYLLABLE B081 KU
+10014 ; [.39A0.0020.0002.10014] # LINEAR B SYLLABLE B080 MA
+10015 ; [.39A1.0020.0002.10015] # LINEAR B SYLLABLE B013 ME
+10016 ; [.39A2.0020.0002.10016] # LINEAR B SYLLABLE B073 MI
+10017 ; [.39A3.0020.0002.10017] # LINEAR B SYLLABLE B015 MO
+10018 ; [.39A4.0020.0002.10018] # LINEAR B SYLLABLE B023 MU
+10019 ; [.39A5.0020.0002.10019] # LINEAR B SYLLABLE B006 NA
+1001A ; [.39A6.0020.0002.1001A] # LINEAR B SYLLABLE B024 NE
+1001B ; [.39A7.0020.0002.1001B] # LINEAR B SYLLABLE B030 NI
+1001C ; [.39A8.0020.0002.1001C] # LINEAR B SYLLABLE B052 NO
+1001D ; [.39A9.0020.0002.1001D] # LINEAR B SYLLABLE B055 NU
+1001E ; [.39AA.0020.0002.1001E] # LINEAR B SYLLABLE B003 PA
+1001F ; [.39AB.0020.0002.1001F] # LINEAR B SYLLABLE B072 PE
+10020 ; [.39AC.0020.0002.10020] # LINEAR B SYLLABLE B039 PI
+10021 ; [.39AD.0020.0002.10021] # LINEAR B SYLLABLE B011 PO
+10022 ; [.39AE.0020.0002.10022] # LINEAR B SYLLABLE B050 PU
+10023 ; [.39AF.0020.0002.10023] # LINEAR B SYLLABLE B016 QA
+10024 ; [.39B0.0020.0002.10024] # LINEAR B SYLLABLE B078 QE
+10025 ; [.39B1.0020.0002.10025] # LINEAR B SYLLABLE B021 QI
+10026 ; [.39B2.0020.0002.10026] # LINEAR B SYLLABLE B032 QO
+10028 ; [.39B3.0020.0002.10028] # LINEAR B SYLLABLE B060 RA
+10029 ; [.39B4.0020.0002.10029] # LINEAR B SYLLABLE B027 RE
+1002A ; [.39B5.0020.0002.1002A] # LINEAR B SYLLABLE B053 RI
+1002B ; [.39B6.0020.0002.1002B] # LINEAR B SYLLABLE B002 RO
+1002C ; [.39B7.0020.0002.1002C] # LINEAR B SYLLABLE B026 RU
+1002D ; [.39B8.0020.0002.1002D] # LINEAR B SYLLABLE B031 SA
+1002E ; [.39B9.0020.0002.1002E] # LINEAR B SYLLABLE B009 SE
+1002F ; [.39BA.0020.0002.1002F] # LINEAR B SYLLABLE B041 SI
+10030 ; [.39BB.0020.0002.10030] # LINEAR B SYLLABLE B012 SO
+10031 ; [.39BC.0020.0002.10031] # LINEAR B SYLLABLE B058 SU
+10032 ; [.39BD.0020.0002.10032] # LINEAR B SYLLABLE B059 TA
+10033 ; [.39BE.0020.0002.10033] # LINEAR B SYLLABLE B004 TE
+10034 ; [.39BF.0020.0002.10034] # LINEAR B SYLLABLE B037 TI
+10035 ; [.39C0.0020.0002.10035] # LINEAR B SYLLABLE B005 TO
+10036 ; [.39C1.0020.0002.10036] # LINEAR B SYLLABLE B069 TU
+10037 ; [.39C2.0020.0002.10037] # LINEAR B SYLLABLE B054 WA
+10038 ; [.39C3.0020.0002.10038] # LINEAR B SYLLABLE B075 WE
+10039 ; [.39C4.0020.0002.10039] # LINEAR B SYLLABLE B040 WI
+1003A ; [.39C5.0020.0002.1003A] # LINEAR B SYLLABLE B042 WO
+1003C ; [.39C6.0020.0002.1003C] # LINEAR B SYLLABLE B017 ZA
+1003D ; [.39C7.0020.0002.1003D] # LINEAR B SYLLABLE B074 ZE
+1003F ; [.39C8.0020.0002.1003F] # LINEAR B SYLLABLE B020 ZO
+10040 ; [.39C9.0020.0002.10040] # LINEAR B SYLLABLE B025 A2
+10041 ; [.39CA.0020.0002.10041] # LINEAR B SYLLABLE B043 A3
+10042 ; [.39CB.0020.0002.10042] # LINEAR B SYLLABLE B085 AU
+10043 ; [.39CC.0020.0002.10043] # LINEAR B SYLLABLE B071 DWE
+10044 ; [.39CD.0020.0002.10044] # LINEAR B SYLLABLE B090 DWO
+10045 ; [.39CE.0020.0002.10045] # LINEAR B SYLLABLE B048 NWA
+10046 ; [.39CF.0020.0002.10046] # LINEAR B SYLLABLE B029 PU2
+10047 ; [.39D0.0020.0002.10047] # LINEAR B SYLLABLE B062 PTE
+10048 ; [.39D1.0020.0002.10048] # LINEAR B SYLLABLE B076 RA2
+10049 ; [.39D2.0020.0002.10049] # LINEAR B SYLLABLE B033 RA3
+1004A ; [.39D3.0020.0002.1004A] # LINEAR B SYLLABLE B068 RO2
+1004B ; [.39D4.0020.0002.1004B] # LINEAR B SYLLABLE B066 TA2
+1004C ; [.39D5.0020.0002.1004C] # LINEAR B SYLLABLE B087 TWE
+1004D ; [.39D6.0020.0002.1004D] # LINEAR B SYLLABLE B091 TWO
+10050 ; [.39D7.0020.0002.10050] # LINEAR B SYMBOL B018
+10051 ; [.39D8.0020.0002.10051] # LINEAR B SYMBOL B019
+10052 ; [.39D9.0020.0002.10052] # LINEAR B SYMBOL B022
+10053 ; [.39DA.0020.0002.10053] # LINEAR B SYMBOL B034
+10054 ; [.39DB.0020.0002.10054] # LINEAR B SYMBOL B047
+10055 ; [.39DC.0020.0002.10055] # LINEAR B SYMBOL B049
+10056 ; [.39DD.0020.0002.10056] # LINEAR B SYMBOL B056
+10057 ; [.39DE.0020.0002.10057] # LINEAR B SYMBOL B063
+10058 ; [.39DF.0020.0002.10058] # LINEAR B SYMBOL B064
+10059 ; [.39E0.0020.0002.10059] # LINEAR B SYMBOL B079
+1005A ; [.39E1.0020.0002.1005A] # LINEAR B SYMBOL B082
+1005B ; [.39E2.0020.0002.1005B] # LINEAR B SYMBOL B083
+1005C ; [.39E3.0020.0002.1005C] # LINEAR B SYMBOL B086
+1005D ; [.39E4.0020.0002.1005D] # LINEAR B SYMBOL B089
+10080 ; [.39E5.0020.0002.10080] # LINEAR B IDEOGRAM B100 MAN
+10081 ; [.39E6.0020.0002.10081] # LINEAR B IDEOGRAM B102 WOMAN
+10082 ; [.39E7.0020.0002.10082] # LINEAR B IDEOGRAM B104 DEER
+10083 ; [.39E8.0020.0002.10083] # LINEAR B IDEOGRAM B105 EQUID
+10084 ; [.39E9.0020.0002.10084] # LINEAR B IDEOGRAM B105F MARE
+10085 ; [.39EA.0020.0002.10085] # LINEAR B IDEOGRAM B105M STALLION
+10086 ; [.39EB.0020.0002.10086] # LINEAR B IDEOGRAM B106F EWE
+10087 ; [.39EC.0020.0002.10087] # LINEAR B IDEOGRAM B106M RAM
+10088 ; [.39ED.0020.0002.10088] # LINEAR B IDEOGRAM B107F SHE-GOAT
+10089 ; [.39EE.0020.0002.10089] # LINEAR B IDEOGRAM B107M HE-GOAT
+1008A ; [.39EF.0020.0002.1008A] # LINEAR B IDEOGRAM B108F SOW
+1008B ; [.39F0.0020.0002.1008B] # LINEAR B IDEOGRAM B108M BOAR
+1008C ; [.39F1.0020.0002.1008C] # LINEAR B IDEOGRAM B109F COW
+1008D ; [.39F2.0020.0002.1008D] # LINEAR B IDEOGRAM B109M BULL
+1008E ; [.39F3.0020.0002.1008E] # LINEAR B IDEOGRAM B120 WHEAT
+1008F ; [.39F4.0020.0002.1008F] # LINEAR B IDEOGRAM B121 BARLEY
+10090 ; [.39F5.0020.0002.10090] # LINEAR B IDEOGRAM B122 OLIVE
+10091 ; [.39F6.0020.0002.10091] # LINEAR B IDEOGRAM B123 SPICE
+10092 ; [.39F7.0020.0002.10092] # LINEAR B IDEOGRAM B125 CYPERUS
+10093 ; [.39F8.0020.0002.10093] # LINEAR B MONOGRAM B127 KAPO
+10094 ; [.39F9.0020.0002.10094] # LINEAR B MONOGRAM B128 KANAKO
+10095 ; [.39FA.0020.0002.10095] # LINEAR B IDEOGRAM B130 OIL
+10096 ; [.39FB.0020.0002.10096] # LINEAR B IDEOGRAM B131 WINE
+10097 ; [.39FC.0020.0002.10097] # LINEAR B IDEOGRAM B132
+10098 ; [.39FD.0020.0002.10098] # LINEAR B MONOGRAM B133 AREPA
+10099 ; [.39FE.0020.0002.10099] # LINEAR B MONOGRAM B135 MERI
+1009A ; [.39FF.0020.0002.1009A] # LINEAR B IDEOGRAM B140 BRONZE
+1009B ; [.3A00.0020.0002.1009B] # LINEAR B IDEOGRAM B141 GOLD
+1009C ; [.3A01.0020.0002.1009C] # LINEAR B IDEOGRAM B142
+1009D ; [.3A02.0020.0002.1009D] # LINEAR B IDEOGRAM B145 WOOL
+1009E ; [.3A03.0020.0002.1009E] # LINEAR B IDEOGRAM B146
+1009F ; [.3A04.0020.0002.1009F] # LINEAR B IDEOGRAM B150
+100A0 ; [.3A05.0020.0002.100A0] # LINEAR B IDEOGRAM B151 HORN
+100A1 ; [.3A06.0020.0002.100A1] # LINEAR B IDEOGRAM B152
+100A2 ; [.3A07.0020.0002.100A2] # LINEAR B IDEOGRAM B153
+100A3 ; [.3A08.0020.0002.100A3] # LINEAR B IDEOGRAM B154
+100A4 ; [.3A09.0020.0002.100A4] # LINEAR B MONOGRAM B156 TURO2
+100A5 ; [.3A0A.0020.0002.100A5] # LINEAR B IDEOGRAM B157
+100A6 ; [.3A0B.0020.0002.100A6] # LINEAR B IDEOGRAM B158
+100A7 ; [.3A0C.0020.0002.100A7] # LINEAR B IDEOGRAM B159 CLOTH
+100A8 ; [.3A0D.0020.0002.100A8] # LINEAR B IDEOGRAM B160
+100A9 ; [.3A0E.0020.0002.100A9] # LINEAR B IDEOGRAM B161
+100AA ; [.3A0F.0020.0002.100AA] # LINEAR B IDEOGRAM B162 GARMENT
+100AB ; [.3A10.0020.0002.100AB] # LINEAR B IDEOGRAM B163 ARMOUR
+100AC ; [.3A11.0020.0002.100AC] # LINEAR B IDEOGRAM B164
+100AD ; [.3A12.0020.0002.100AD] # LINEAR B IDEOGRAM B165
+100AE ; [.3A13.0020.0002.100AE] # LINEAR B IDEOGRAM B166
+100AF ; [.3A14.0020.0002.100AF] # LINEAR B IDEOGRAM B167
+100B0 ; [.3A15.0020.0002.100B0] # LINEAR B IDEOGRAM B168
+100B1 ; [.3A16.0020.0002.100B1] # LINEAR B IDEOGRAM B169
+100B2 ; [.3A17.0020.0002.100B2] # LINEAR B IDEOGRAM B170
+100B3 ; [.3A18.0020.0002.100B3] # LINEAR B IDEOGRAM B171
+100B4 ; [.3A19.0020.0002.100B4] # LINEAR B IDEOGRAM B172
+100B5 ; [.3A1A.0020.0002.100B5] # LINEAR B IDEOGRAM B173 MONTH
+100B6 ; [.3A1B.0020.0002.100B6] # LINEAR B IDEOGRAM B174
+100B7 ; [.3A1C.0020.0002.100B7] # LINEAR B IDEOGRAM B176 TREE
+100B8 ; [.3A1D.0020.0002.100B8] # LINEAR B IDEOGRAM B177
+100B9 ; [.3A1E.0020.0002.100B9] # LINEAR B IDEOGRAM B178
+100BA ; [.3A1F.0020.0002.100BA] # LINEAR B IDEOGRAM B179
+100BB ; [.3A20.0020.0002.100BB] # LINEAR B IDEOGRAM B180
+100BC ; [.3A21.0020.0002.100BC] # LINEAR B IDEOGRAM B181
+100BD ; [.3A22.0020.0002.100BD] # LINEAR B IDEOGRAM B182
+100BE ; [.3A23.0020.0002.100BE] # LINEAR B IDEOGRAM B183
+100BF ; [.3A24.0020.0002.100BF] # LINEAR B IDEOGRAM B184
+100C0 ; [.3A25.0020.0002.100C0] # LINEAR B IDEOGRAM B185
+100C1 ; [.3A26.0020.0002.100C1] # LINEAR B IDEOGRAM B189
+100C2 ; [.3A27.0020.0002.100C2] # LINEAR B IDEOGRAM B190
+100C3 ; [.3A28.0020.0002.100C3] # LINEAR B IDEOGRAM B191 HELMET
+100C4 ; [.3A29.0020.0002.100C4] # LINEAR B IDEOGRAM B220 FOOTSTOOL
+100C5 ; [.3A2A.0020.0002.100C5] # LINEAR B IDEOGRAM B225 BATHTUB
+100C6 ; [.3A2B.0020.0002.100C6] # LINEAR B IDEOGRAM B230 SPEAR
+100C7 ; [.3A2C.0020.0002.100C7] # LINEAR B IDEOGRAM B231 ARROW
+100C8 ; [.3A2D.0020.0002.100C8] # LINEAR B IDEOGRAM B232
+100C9 ; [.3A2E.0020.0002.100C9] # LINEAR B IDEOGRAM B233 SWORD
+100CA ; [.3A2F.0020.0002.100CA] # LINEAR B IDEOGRAM B234
+100CB ; [.3A30.0020.0002.100CB] # LINEAR B IDEOGRAM B236
+100CC ; [.3A31.0020.0002.100CC] # LINEAR B IDEOGRAM B240 WHEELED CHARIOT
+100CD ; [.3A32.0020.0002.100CD] # LINEAR B IDEOGRAM B241 CHARIOT
+100CE ; [.3A33.0020.0002.100CE] # LINEAR B IDEOGRAM B242 CHARIOT FRAME
+100CF ; [.3A34.0020.0002.100CF] # LINEAR B IDEOGRAM B243 WHEEL
+100D0 ; [.3A35.0020.0002.100D0] # LINEAR B IDEOGRAM B245
+100D1 ; [.3A36.0020.0002.100D1] # LINEAR B IDEOGRAM B246
+100D2 ; [.3A37.0020.0002.100D2] # LINEAR B MONOGRAM B247 DIPTE
+100D3 ; [.3A38.0020.0002.100D3] # LINEAR B IDEOGRAM B248
+100D4 ; [.3A39.0020.0002.100D4] # LINEAR B IDEOGRAM B249
+100D5 ; [.3A3A.0020.0002.100D5] # LINEAR B IDEOGRAM B251
+100D6 ; [.3A3B.0020.0002.100D6] # LINEAR B IDEOGRAM B252
+100D7 ; [.3A3C.0020.0002.100D7] # LINEAR B IDEOGRAM B253
+100D8 ; [.3A3D.0020.0002.100D8] # LINEAR B IDEOGRAM B254 DART
+100D9 ; [.3A3E.0020.0002.100D9] # LINEAR B IDEOGRAM B255
+100DA ; [.3A3F.0020.0002.100DA] # LINEAR B IDEOGRAM B256
+100DB ; [.3A40.0020.0002.100DB] # LINEAR B IDEOGRAM B257
+100DC ; [.3A41.0020.0002.100DC] # LINEAR B IDEOGRAM B258
+100DD ; [.3A42.0020.0002.100DD] # LINEAR B IDEOGRAM B259
+100DE ; [.3A43.0020.0002.100DE] # LINEAR B IDEOGRAM VESSEL B155
+100DF ; [.3A44.0020.0002.100DF] # LINEAR B IDEOGRAM VESSEL B200
+100E0 ; [.3A45.0020.0002.100E0] # LINEAR B IDEOGRAM VESSEL B201
+100E1 ; [.3A46.0020.0002.100E1] # LINEAR B IDEOGRAM VESSEL B202
+100E2 ; [.3A47.0020.0002.100E2] # LINEAR B IDEOGRAM VESSEL B203
+100E3 ; [.3A48.0020.0002.100E3] # LINEAR B IDEOGRAM VESSEL B204
+100E4 ; [.3A49.0020.0002.100E4] # LINEAR B IDEOGRAM VESSEL B205
+100E5 ; [.3A4A.0020.0002.100E5] # LINEAR B IDEOGRAM VESSEL B206
+100E6 ; [.3A4B.0020.0002.100E6] # LINEAR B IDEOGRAM VESSEL B207
+100E7 ; [.3A4C.0020.0002.100E7] # LINEAR B IDEOGRAM VESSEL B208
+100E8 ; [.3A4D.0020.0002.100E8] # LINEAR B IDEOGRAM VESSEL B209
+100E9 ; [.3A4E.0020.0002.100E9] # LINEAR B IDEOGRAM VESSEL B210
+100EA ; [.3A4F.0020.0002.100EA] # LINEAR B IDEOGRAM VESSEL B211
+100EB ; [.3A50.0020.0002.100EB] # LINEAR B IDEOGRAM VESSEL B212
+100EC ; [.3A51.0020.0002.100EC] # LINEAR B IDEOGRAM VESSEL B213
+100ED ; [.3A52.0020.0002.100ED] # LINEAR B IDEOGRAM VESSEL B214
+100EE ; [.3A53.0020.0002.100EE] # LINEAR B IDEOGRAM VESSEL B215
+100EF ; [.3A54.0020.0002.100EF] # LINEAR B IDEOGRAM VESSEL B216
+100F0 ; [.3A55.0020.0002.100F0] # LINEAR B IDEOGRAM VESSEL B217
+100F1 ; [.3A56.0020.0002.100F1] # LINEAR B IDEOGRAM VESSEL B218
+100F2 ; [.3A57.0020.0002.100F2] # LINEAR B IDEOGRAM VESSEL B219
+100F3 ; [.3A58.0020.0002.100F3] # LINEAR B IDEOGRAM VESSEL B221
+100F4 ; [.3A59.0020.0002.100F4] # LINEAR B IDEOGRAM VESSEL B222
+100F5 ; [.3A5A.0020.0002.100F5] # LINEAR B IDEOGRAM VESSEL B226
+100F6 ; [.3A5B.0020.0002.100F6] # LINEAR B IDEOGRAM VESSEL B227
+100F7 ; [.3A5C.0020.0002.100F7] # LINEAR B IDEOGRAM VESSEL B228
+100F8 ; [.3A5D.0020.0002.100F8] # LINEAR B IDEOGRAM VESSEL B229
+100F9 ; [.3A5E.0020.0002.100F9] # LINEAR B IDEOGRAM VESSEL B250
+100FA ; [.3A5F.0020.0002.100FA] # LINEAR B IDEOGRAM VESSEL B305
+10800 ; [.3A60.0020.0002.10800] # CYPRIOT SYLLABLE A
+10801 ; [.3A61.0020.0002.10801] # CYPRIOT SYLLABLE E
+10802 ; [.3A62.0020.0002.10802] # CYPRIOT SYLLABLE I
+10803 ; [.3A63.0020.0002.10803] # CYPRIOT SYLLABLE O
+10804 ; [.3A64.0020.0002.10804] # CYPRIOT SYLLABLE U
+10805 ; [.3A65.0020.0002.10805] # CYPRIOT SYLLABLE JA
+10808 ; [.3A66.0020.0002.10808] # CYPRIOT SYLLABLE JO
+1080A ; [.3A67.0020.0002.1080A] # CYPRIOT SYLLABLE KA
+1080B ; [.3A68.0020.0002.1080B] # CYPRIOT SYLLABLE KE
+1080C ; [.3A69.0020.0002.1080C] # CYPRIOT SYLLABLE KI
+1080D ; [.3A6A.0020.0002.1080D] # CYPRIOT SYLLABLE KO
+1080E ; [.3A6B.0020.0002.1080E] # CYPRIOT SYLLABLE KU
+1080F ; [.3A6C.0020.0002.1080F] # CYPRIOT SYLLABLE LA
+10810 ; [.3A6D.0020.0002.10810] # CYPRIOT SYLLABLE LE
+10811 ; [.3A6E.0020.0002.10811] # CYPRIOT SYLLABLE LI
+10812 ; [.3A6F.0020.0002.10812] # CYPRIOT SYLLABLE LO
+10813 ; [.3A70.0020.0002.10813] # CYPRIOT SYLLABLE LU
+10814 ; [.3A71.0020.0002.10814] # CYPRIOT SYLLABLE MA
+10815 ; [.3A72.0020.0002.10815] # CYPRIOT SYLLABLE ME
+10816 ; [.3A73.0020.0002.10816] # CYPRIOT SYLLABLE MI
+10817 ; [.3A74.0020.0002.10817] # CYPRIOT SYLLABLE MO
+10818 ; [.3A75.0020.0002.10818] # CYPRIOT SYLLABLE MU
+10819 ; [.3A76.0020.0002.10819] # CYPRIOT SYLLABLE NA
+1081A ; [.3A77.0020.0002.1081A] # CYPRIOT SYLLABLE NE
+1081B ; [.3A78.0020.0002.1081B] # CYPRIOT SYLLABLE NI
+1081C ; [.3A79.0020.0002.1081C] # CYPRIOT SYLLABLE NO
+1081D ; [.3A7A.0020.0002.1081D] # CYPRIOT SYLLABLE NU
+1081E ; [.3A7B.0020.0002.1081E] # CYPRIOT SYLLABLE PA
+1081F ; [.3A7C.0020.0002.1081F] # CYPRIOT SYLLABLE PE
+10820 ; [.3A7D.0020.0002.10820] # CYPRIOT SYLLABLE PI
+10821 ; [.3A7E.0020.0002.10821] # CYPRIOT SYLLABLE PO
+10822 ; [.3A7F.0020.0002.10822] # CYPRIOT SYLLABLE PU
+10823 ; [.3A80.0020.0002.10823] # CYPRIOT SYLLABLE RA
+10824 ; [.3A81.0020.0002.10824] # CYPRIOT SYLLABLE RE
+10825 ; [.3A82.0020.0002.10825] # CYPRIOT SYLLABLE RI
+10826 ; [.3A83.0020.0002.10826] # CYPRIOT SYLLABLE RO
+10827 ; [.3A84.0020.0002.10827] # CYPRIOT SYLLABLE RU
+10828 ; [.3A85.0020.0002.10828] # CYPRIOT SYLLABLE SA
+10829 ; [.3A86.0020.0002.10829] # CYPRIOT SYLLABLE SE
+1082A ; [.3A87.0020.0002.1082A] # CYPRIOT SYLLABLE SI
+1082B ; [.3A88.0020.0002.1082B] # CYPRIOT SYLLABLE SO
+1082C ; [.3A89.0020.0002.1082C] # CYPRIOT SYLLABLE SU
+1082D ; [.3A8A.0020.0002.1082D] # CYPRIOT SYLLABLE TA
+1082E ; [.3A8B.0020.0002.1082E] # CYPRIOT SYLLABLE TE
+1082F ; [.3A8C.0020.0002.1082F] # CYPRIOT SYLLABLE TI
+10830 ; [.3A8D.0020.0002.10830] # CYPRIOT SYLLABLE TO
+10831 ; [.3A8E.0020.0002.10831] # CYPRIOT SYLLABLE TU
+10832 ; [.3A8F.0020.0002.10832] # CYPRIOT SYLLABLE WA
+10833 ; [.3A90.0020.0002.10833] # CYPRIOT SYLLABLE WE
+10834 ; [.3A91.0020.0002.10834] # CYPRIOT SYLLABLE WI
+10835 ; [.3A92.0020.0002.10835] # CYPRIOT SYLLABLE WO
+10837 ; [.3A93.0020.0002.10837] # CYPRIOT SYLLABLE XA
+10838 ; [.3A94.0020.0002.10838] # CYPRIOT SYLLABLE XE
+1083C ; [.3A95.0020.0002.1083C] # CYPRIOT SYLLABLE ZA
+1083F ; [.3A96.0020.0002.1083F] # CYPRIOT SYLLABLE ZO
+10A60 ; [.3A97.0020.0002.10A60] # OLD SOUTH ARABIAN LETTER HE
+10A61 ; [.3A98.0020.0002.10A61] # OLD SOUTH ARABIAN LETTER LAMEDH
+10A62 ; [.3A99.0020.0002.10A62] # OLD SOUTH ARABIAN LETTER HETH
+10A63 ; [.3A9A.0020.0002.10A63] # OLD SOUTH ARABIAN LETTER MEM
+10A64 ; [.3A9B.0020.0002.10A64] # OLD SOUTH ARABIAN LETTER QOPH
+10A65 ; [.3A9C.0020.0002.10A65] # OLD SOUTH ARABIAN LETTER WAW
+10A66 ; [.3A9D.0020.0002.10A66] # OLD SOUTH ARABIAN LETTER SHIN
+10A67 ; [.3A9E.0020.0002.10A67] # OLD SOUTH ARABIAN LETTER RESH
+10A68 ; [.3A9F.0020.0002.10A68] # OLD SOUTH ARABIAN LETTER BETH
+10A69 ; [.3AA0.0020.0002.10A69] # OLD SOUTH ARABIAN LETTER TAW
+10A6A ; [.3AA1.0020.0002.10A6A] # OLD SOUTH ARABIAN LETTER SAT
+10A6B ; [.3AA2.0020.0002.10A6B] # OLD SOUTH ARABIAN LETTER KAPH
+10A6C ; [.3AA3.0020.0002.10A6C] # OLD SOUTH ARABIAN LETTER NUN
+10A6D ; [.3AA4.0020.0002.10A6D] # OLD SOUTH ARABIAN LETTER KHETH
+10A6E ; [.3AA5.0020.0002.10A6E] # OLD SOUTH ARABIAN LETTER SADHE
+10A6F ; [.3AA6.0020.0002.10A6F] # OLD SOUTH ARABIAN LETTER SAMEKH
+10A70 ; [.3AA7.0020.0002.10A70] # OLD SOUTH ARABIAN LETTER FE
+10A71 ; [.3AA8.0020.0002.10A71] # OLD SOUTH ARABIAN LETTER ALEF
+10A72 ; [.3AA9.0020.0002.10A72] # OLD SOUTH ARABIAN LETTER AYN
+10A73 ; [.3AAA.0020.0002.10A73] # OLD SOUTH ARABIAN LETTER DHADHE
+10A74 ; [.3AAB.0020.0002.10A74] # OLD SOUTH ARABIAN LETTER GIMEL
+10A75 ; [.3AAC.0020.0002.10A75] # OLD SOUTH ARABIAN LETTER DALETH
+10A76 ; [.3AAD.0020.0002.10A76] # OLD SOUTH ARABIAN LETTER GHAYN
+10A77 ; [.3AAE.0020.0002.10A77] # OLD SOUTH ARABIAN LETTER TETH
+10A78 ; [.3AAF.0020.0002.10A78] # OLD SOUTH ARABIAN LETTER ZAYN
+10A79 ; [.3AB0.0020.0002.10A79] # OLD SOUTH ARABIAN LETTER DHALETH
+10A7A ; [.3AB1.0020.0002.10A7A] # OLD SOUTH ARABIAN LETTER YODH
+10A7B ; [.3AB2.0020.0002.10A7B] # OLD SOUTH ARABIAN LETTER THAW
+10A7C ; [.3AB3.0020.0002.10A7C] # OLD SOUTH ARABIAN LETTER THETH
+10B00 ; [.3AB4.0020.0002.10B00] # AVESTAN LETTER A
+10B01 ; [.3AB5.0020.0002.10B01] # AVESTAN LETTER AA
+10B02 ; [.3AB6.0020.0002.10B02] # AVESTAN LETTER AO
+10B03 ; [.3AB7.0020.0002.10B03] # AVESTAN LETTER AAO
+10B04 ; [.3AB8.0020.0002.10B04] # AVESTAN LETTER AN
+10B05 ; [.3AB9.0020.0002.10B05] # AVESTAN LETTER AAN
+10B06 ; [.3ABA.0020.0002.10B06] # AVESTAN LETTER AE
+10B07 ; [.3ABB.0020.0002.10B07] # AVESTAN LETTER AEE
+10B08 ; [.3ABC.0020.0002.10B08] # AVESTAN LETTER E
+10B09 ; [.3ABD.0020.0002.10B09] # AVESTAN LETTER EE
+10B0A ; [.3ABE.0020.0002.10B0A] # AVESTAN LETTER O
+10B0B ; [.3ABF.0020.0002.10B0B] # AVESTAN LETTER OO
+10B0C ; [.3AC0.0020.0002.10B0C] # AVESTAN LETTER I
+10B0D ; [.3AC1.0020.0002.10B0D] # AVESTAN LETTER II
+10B0E ; [.3AC2.0020.0002.10B0E] # AVESTAN LETTER U
+10B0F ; [.3AC3.0020.0002.10B0F] # AVESTAN LETTER UU
+10B10 ; [.3AC4.0020.0002.10B10] # AVESTAN LETTER KE
+10B11 ; [.3AC5.0020.0002.10B11] # AVESTAN LETTER XE
+10B12 ; [.3AC6.0020.0002.10B12] # AVESTAN LETTER XYE
+10B13 ; [.3AC7.0020.0002.10B13] # AVESTAN LETTER XVE
+10B14 ; [.3AC8.0020.0002.10B14] # AVESTAN LETTER GE
+10B15 ; [.3AC9.0020.0002.10B15] # AVESTAN LETTER GGE
+10B16 ; [.3ACA.0020.0002.10B16] # AVESTAN LETTER GHE
+10B17 ; [.3ACB.0020.0002.10B17] # AVESTAN LETTER CE
+10B18 ; [.3ACC.0020.0002.10B18] # AVESTAN LETTER JE
+10B19 ; [.3ACD.0020.0002.10B19] # AVESTAN LETTER TE
+10B1A ; [.3ACE.0020.0002.10B1A] # AVESTAN LETTER THE
+10B1B ; [.3ACF.0020.0002.10B1B] # AVESTAN LETTER DE
+10B1C ; [.3AD0.0020.0002.10B1C] # AVESTAN LETTER DHE
+10B1D ; [.3AD1.0020.0002.10B1D] # AVESTAN LETTER TTE
+10B1E ; [.3AD2.0020.0002.10B1E] # AVESTAN LETTER PE
+10B1F ; [.3AD3.0020.0002.10B1F] # AVESTAN LETTER FE
+10B20 ; [.3AD4.0020.0002.10B20] # AVESTAN LETTER BE
+10B21 ; [.3AD5.0020.0002.10B21] # AVESTAN LETTER BHE
+10B22 ; [.3AD6.0020.0002.10B22] # AVESTAN LETTER NGE
+10B23 ; [.3AD7.0020.0002.10B23] # AVESTAN LETTER NGYE
+10B24 ; [.3AD8.0020.0002.10B24] # AVESTAN LETTER NGVE
+10B25 ; [.3AD9.0020.0002.10B25] # AVESTAN LETTER NE
+10B26 ; [.3ADA.0020.0002.10B26] # AVESTAN LETTER NYE
+10B27 ; [.3ADB.0020.0002.10B27] # AVESTAN LETTER NNE
+10B28 ; [.3ADC.0020.0002.10B28] # AVESTAN LETTER ME
+10B29 ; [.3ADD.0020.0002.10B29] # AVESTAN LETTER HME
+10B2A ; [.3ADE.0020.0002.10B2A] # AVESTAN LETTER YYE
+10B2B ; [.3ADF.0020.0002.10B2B] # AVESTAN LETTER YE
+10B2C ; [.3AE0.0020.0002.10B2C] # AVESTAN LETTER VE
+10B2D ; [.3AE1.0020.0002.10B2D] # AVESTAN LETTER RE
+10B2E ; [.3AE1.0020.0004.10B2E][.0000.0139.0004.10B2E] # AVESTAN LETTER LE
+10B2F ; [.3AE2.0020.0002.10B2F] # AVESTAN LETTER SE
+10B30 ; [.3AE3.0020.0002.10B30] # AVESTAN LETTER ZE
+10B31 ; [.3AE4.0020.0002.10B31] # AVESTAN LETTER SHE
+10B32 ; [.3AE5.0020.0002.10B32] # AVESTAN LETTER ZHE
+10B33 ; [.3AE6.0020.0002.10B33] # AVESTAN LETTER SHYE
+10B34 ; [.3AE7.0020.0002.10B34] # AVESTAN LETTER SSHE
+10B35 ; [.3AE8.0020.0002.10B35] # AVESTAN LETTER HE
+10840 ; [.3AE9.0020.0002.10840] # IMPERIAL ARAMAIC LETTER ALEPH
+10841 ; [.3AEA.0020.0002.10841] # IMPERIAL ARAMAIC LETTER BETH
+10842 ; [.3AEB.0020.0002.10842] # IMPERIAL ARAMAIC LETTER GIMEL
+10843 ; [.3AEC.0020.0002.10843] # IMPERIAL ARAMAIC LETTER DALETH
+10844 ; [.3AED.0020.0002.10844] # IMPERIAL ARAMAIC LETTER HE
+10845 ; [.3AEE.0020.0002.10845] # IMPERIAL ARAMAIC LETTER WAW
+10846 ; [.3AEF.0020.0002.10846] # IMPERIAL ARAMAIC LETTER ZAYIN
+10847 ; [.3AF0.0020.0002.10847] # IMPERIAL ARAMAIC LETTER HETH
+10848 ; [.3AF1.0020.0002.10848] # IMPERIAL ARAMAIC LETTER TETH
+10849 ; [.3AF2.0020.0002.10849] # IMPERIAL ARAMAIC LETTER YODH
+1084A ; [.3AF3.0020.0002.1084A] # IMPERIAL ARAMAIC LETTER KAPH
+1084B ; [.3AF4.0020.0002.1084B] # IMPERIAL ARAMAIC LETTER LAMEDH
+1084C ; [.3AF5.0020.0002.1084C] # IMPERIAL ARAMAIC LETTER MEM
+1084D ; [.3AF6.0020.0002.1084D] # IMPERIAL ARAMAIC LETTER NUN
+1084E ; [.3AF7.0020.0002.1084E] # IMPERIAL ARAMAIC LETTER SAMEKH
+1084F ; [.3AF8.0020.0002.1084F] # IMPERIAL ARAMAIC LETTER AYIN
+10850 ; [.3AF9.0020.0002.10850] # IMPERIAL ARAMAIC LETTER PE
+10851 ; [.3AFA.0020.0002.10851] # IMPERIAL ARAMAIC LETTER SADHE
+10852 ; [.3AFB.0020.0002.10852] # IMPERIAL ARAMAIC LETTER QOPH
+10853 ; [.3AFC.0020.0002.10853] # IMPERIAL ARAMAIC LETTER RESH
+10854 ; [.3AFD.0020.0002.10854] # IMPERIAL ARAMAIC LETTER SHIN
+10855 ; [.3AFE.0020.0002.10855] # IMPERIAL ARAMAIC LETTER TAW
+10B40 ; [.3AFF.0020.0002.10B40] # INSCRIPTIONAL PARTHIAN LETTER ALEPH
+10B41 ; [.3B00.0020.0002.10B41] # INSCRIPTIONAL PARTHIAN LETTER BETH
+10B42 ; [.3B01.0020.0002.10B42] # INSCRIPTIONAL PARTHIAN LETTER GIMEL
+10B43 ; [.3B02.0020.0002.10B43] # INSCRIPTIONAL PARTHIAN LETTER DALETH
+10B44 ; [.3B03.0020.0002.10B44] # INSCRIPTIONAL PARTHIAN LETTER HE
+10B45 ; [.3B04.0020.0002.10B45] # INSCRIPTIONAL PARTHIAN LETTER WAW
+10B46 ; [.3B05.0020.0002.10B46] # INSCRIPTIONAL PARTHIAN LETTER ZAYIN
+10B47 ; [.3B06.0020.0002.10B47] # INSCRIPTIONAL PARTHIAN LETTER HETH
+10B48 ; [.3B07.0020.0002.10B48] # INSCRIPTIONAL PARTHIAN LETTER TETH
+10B49 ; [.3B08.0020.0002.10B49] # INSCRIPTIONAL PARTHIAN LETTER YODH
+10B4A ; [.3B09.0020.0002.10B4A] # INSCRIPTIONAL PARTHIAN LETTER KAPH
+10B4B ; [.3B0A.0020.0002.10B4B] # INSCRIPTIONAL PARTHIAN LETTER LAMEDH
+10B4C ; [.3B0B.0020.0002.10B4C] # INSCRIPTIONAL PARTHIAN LETTER MEM
+10B4D ; [.3B0C.0020.0002.10B4D] # INSCRIPTIONAL PARTHIAN LETTER NUN
+10B4E ; [.3B0D.0020.0002.10B4E] # INSCRIPTIONAL PARTHIAN LETTER SAMEKH
+10B4F ; [.3B0E.0020.0002.10B4F] # INSCRIPTIONAL PARTHIAN LETTER AYIN
+10B50 ; [.3B0F.0020.0002.10B50] # INSCRIPTIONAL PARTHIAN LETTER PE
+10B51 ; [.3B10.0020.0002.10B51] # INSCRIPTIONAL PARTHIAN LETTER SADHE
+10B52 ; [.3B11.0020.0002.10B52] # INSCRIPTIONAL PARTHIAN LETTER QOPH
+10B53 ; [.3B12.0020.0002.10B53] # INSCRIPTIONAL PARTHIAN LETTER RESH
+10B54 ; [.3B13.0020.0002.10B54] # INSCRIPTIONAL PARTHIAN LETTER SHIN
+10B55 ; [.3B14.0020.0002.10B55] # INSCRIPTIONAL PARTHIAN LETTER TAW
+10B60 ; [.3B15.0020.0002.10B60] # INSCRIPTIONAL PAHLAVI LETTER ALEPH
+10B61 ; [.3B16.0020.0002.10B61] # INSCRIPTIONAL PAHLAVI LETTER BETH
+10B62 ; [.3B17.0020.0002.10B62] # INSCRIPTIONAL PAHLAVI LETTER GIMEL
+10B63 ; [.3B18.0020.0002.10B63] # INSCRIPTIONAL PAHLAVI LETTER DALETH
+10B64 ; [.3B19.0020.0002.10B64] # INSCRIPTIONAL PAHLAVI LETTER HE
+10B65 ; [.3B1A.0020.0002.10B65] # INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH
+10B66 ; [.3B1B.0020.0002.10B66] # INSCRIPTIONAL PAHLAVI LETTER ZAYIN
+10B67 ; [.3B1C.0020.0002.10B67] # INSCRIPTIONAL PAHLAVI LETTER HETH
+10B68 ; [.3B1D.0020.0002.10B68] # INSCRIPTIONAL PAHLAVI LETTER TETH
+10B69 ; [.3B1E.0020.0002.10B69] # INSCRIPTIONAL PAHLAVI LETTER YODH
+10B6A ; [.3B1F.0020.0002.10B6A] # INSCRIPTIONAL PAHLAVI LETTER KAPH
+10B6B ; [.3B20.0020.0002.10B6B] # INSCRIPTIONAL PAHLAVI LETTER LAMEDH
+10B6C ; [.3B21.0020.0002.10B6C] # INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH
+10B6D ; [.3B22.0020.0002.10B6D] # INSCRIPTIONAL PAHLAVI LETTER NUN
+10B6E ; [.3B23.0020.0002.10B6E] # INSCRIPTIONAL PAHLAVI LETTER SAMEKH
+10B6F ; [.3B24.0020.0002.10B6F] # INSCRIPTIONAL PAHLAVI LETTER PE
+10B70 ; [.3B25.0020.0002.10B70] # INSCRIPTIONAL PAHLAVI LETTER SADHE
+10B71 ; [.3B26.0020.0002.10B71] # INSCRIPTIONAL PAHLAVI LETTER SHIN
+10B72 ; [.3B27.0020.0002.10B72] # INSCRIPTIONAL PAHLAVI LETTER TAW
+10380 ; [.3B28.0020.0002.10380] # UGARITIC LETTER ALPA
+10381 ; [.3B29.0020.0002.10381] # UGARITIC LETTER BETA
+10382 ; [.3B2A.0020.0002.10382] # UGARITIC LETTER GAMLA
+10383 ; [.3B2B.0020.0002.10383] # UGARITIC LETTER KHA
+10384 ; [.3B2C.0020.0002.10384] # UGARITIC LETTER DELTA
+10385 ; [.3B2D.0020.0002.10385] # UGARITIC LETTER HO
+10386 ; [.3B2E.0020.0002.10386] # UGARITIC LETTER WO
+10387 ; [.3B2F.0020.0002.10387] # UGARITIC LETTER ZETA
+10388 ; [.3B30.0020.0002.10388] # UGARITIC LETTER HOTA
+10389 ; [.3B31.0020.0002.10389] # UGARITIC LETTER TET
+1038A ; [.3B32.0020.0002.1038A] # UGARITIC LETTER YOD
+1038B ; [.3B33.0020.0002.1038B] # UGARITIC LETTER KAF
+1038C ; [.3B34.0020.0002.1038C] # UGARITIC LETTER SHIN
+1038D ; [.3B35.0020.0002.1038D] # UGARITIC LETTER LAMDA
+1038E ; [.3B36.0020.0002.1038E] # UGARITIC LETTER MEM
+1038F ; [.3B37.0020.0002.1038F] # UGARITIC LETTER DHAL
+10390 ; [.3B38.0020.0002.10390] # UGARITIC LETTER NUN
+10391 ; [.3B39.0020.0002.10391] # UGARITIC LETTER ZU
+10392 ; [.3B3A.0020.0002.10392] # UGARITIC LETTER SAMKA
+10393 ; [.3B3B.0020.0002.10393] # UGARITIC LETTER AIN
+10394 ; [.3B3C.0020.0002.10394] # UGARITIC LETTER PU
+10395 ; [.3B3D.0020.0002.10395] # UGARITIC LETTER SADE
+10396 ; [.3B3E.0020.0002.10396] # UGARITIC LETTER QOPA
+10397 ; [.3B3F.0020.0002.10397] # UGARITIC LETTER RASHA
+10398 ; [.3B40.0020.0002.10398] # UGARITIC LETTER THANNA
+10399 ; [.3B41.0020.0002.10399] # UGARITIC LETTER GHAIN
+1039A ; [.3B42.0020.0002.1039A] # UGARITIC LETTER TO
+1039B ; [.3B43.0020.0002.1039B] # UGARITIC LETTER I
+1039C ; [.3B44.0020.0002.1039C] # UGARITIC LETTER U
+1039D ; [.3B45.0020.0002.1039D] # UGARITIC LETTER SSU
+103A0 ; [.3B46.0020.0002.103A0] # OLD PERSIAN SIGN A
+103A1 ; [.3B47.0020.0002.103A1] # OLD PERSIAN SIGN I
+103A2 ; [.3B48.0020.0002.103A2] # OLD PERSIAN SIGN U
+103A3 ; [.3B49.0020.0002.103A3] # OLD PERSIAN SIGN KA
+103A4 ; [.3B4A.0020.0002.103A4] # OLD PERSIAN SIGN KU
+103A5 ; [.3B4B.0020.0002.103A5] # OLD PERSIAN SIGN GA
+103A6 ; [.3B4C.0020.0002.103A6] # OLD PERSIAN SIGN GU
+103A7 ; [.3B4D.0020.0002.103A7] # OLD PERSIAN SIGN XA
+103A8 ; [.3B4E.0020.0002.103A8] # OLD PERSIAN SIGN CA
+103A9 ; [.3B4F.0020.0002.103A9] # OLD PERSIAN SIGN JA
+103AA ; [.3B50.0020.0002.103AA] # OLD PERSIAN SIGN JI
+103AB ; [.3B51.0020.0002.103AB] # OLD PERSIAN SIGN TA
+103AC ; [.3B52.0020.0002.103AC] # OLD PERSIAN SIGN TU
+103AD ; [.3B53.0020.0002.103AD] # OLD PERSIAN SIGN DA
+103AE ; [.3B54.0020.0002.103AE] # OLD PERSIAN SIGN DI
+103AF ; [.3B55.0020.0002.103AF] # OLD PERSIAN SIGN DU
+103B0 ; [.3B56.0020.0002.103B0] # OLD PERSIAN SIGN THA
+103B1 ; [.3B57.0020.0002.103B1] # OLD PERSIAN SIGN PA
+103B2 ; [.3B58.0020.0002.103B2] # OLD PERSIAN SIGN BA
+103B3 ; [.3B59.0020.0002.103B3] # OLD PERSIAN SIGN FA
+103B4 ; [.3B5A.0020.0002.103B4] # OLD PERSIAN SIGN NA
+103B5 ; [.3B5B.0020.0002.103B5] # OLD PERSIAN SIGN NU
+103B6 ; [.3B5C.0020.0002.103B6] # OLD PERSIAN SIGN MA
+103B7 ; [.3B5D.0020.0002.103B7] # OLD PERSIAN SIGN MI
+103B8 ; [.3B5E.0020.0002.103B8] # OLD PERSIAN SIGN MU
+103B9 ; [.3B5F.0020.0002.103B9] # OLD PERSIAN SIGN YA
+103BA ; [.3B60.0020.0002.103BA] # OLD PERSIAN SIGN VA
+103BB ; [.3B61.0020.0002.103BB] # OLD PERSIAN SIGN VI
+103BC ; [.3B62.0020.0002.103BC] # OLD PERSIAN SIGN RA
+103BD ; [.3B63.0020.0002.103BD] # OLD PERSIAN SIGN RU
+103BE ; [.3B64.0020.0002.103BE] # OLD PERSIAN SIGN LA
+103BF ; [.3B65.0020.0002.103BF] # OLD PERSIAN SIGN SA
+103C0 ; [.3B66.0020.0002.103C0] # OLD PERSIAN SIGN ZA
+103C1 ; [.3B67.0020.0002.103C1] # OLD PERSIAN SIGN SHA
+103C2 ; [.3B68.0020.0002.103C2] # OLD PERSIAN SIGN SSA
+103C3 ; [.3B69.0020.0002.103C3] # OLD PERSIAN SIGN HA
+103C8 ; [.3B6A.0020.0002.103C8] # OLD PERSIAN SIGN AURAMAZDAA
+103C9 ; [.3B6B.0020.0002.103C9] # OLD PERSIAN SIGN AURAMAZDAA-2
+103CA ; [.3B6C.0020.0002.103CA] # OLD PERSIAN SIGN AURAMAZDAAHA
+103CB ; [.3B6D.0020.0002.103CB] # OLD PERSIAN SIGN XSHAAYATHIYA
+103CC ; [.3B6E.0020.0002.103CC] # OLD PERSIAN SIGN DAHYAAUSH
+103CD ; [.3B6F.0020.0002.103CD] # OLD PERSIAN SIGN DAHYAAUSH-2
+103CE ; [.3B70.0020.0002.103CE] # OLD PERSIAN SIGN BAGA
+103CF ; [.3B71.0020.0002.103CF] # OLD PERSIAN SIGN BUUMISH
+12000 ; [.3B72.0020.0002.12000] # CUNEIFORM SIGN A
+12001 ; [.3B73.0020.0002.12001] # CUNEIFORM SIGN A TIMES A
+12002 ; [.3B74.0020.0002.12002] # CUNEIFORM SIGN A TIMES BAD
+12003 ; [.3B75.0020.0002.12003] # CUNEIFORM SIGN A TIMES GAN2 TENU
+12004 ; [.3B76.0020.0002.12004] # CUNEIFORM SIGN A TIMES HA
+12005 ; [.3B77.0020.0002.12005] # CUNEIFORM SIGN A TIMES IGI
+12006 ; [.3B78.0020.0002.12006] # CUNEIFORM SIGN A TIMES LAGAR GUNU
+12007 ; [.3B79.0020.0002.12007] # CUNEIFORM SIGN A TIMES MUSH
+12008 ; [.3B7A.0020.0002.12008] # CUNEIFORM SIGN A TIMES SAG
+12009 ; [.3B7B.0020.0002.12009] # CUNEIFORM SIGN A2
+1200A ; [.3B7C.0020.0002.1200A] # CUNEIFORM SIGN AB
+1200B ; [.3B7D.0020.0002.1200B] # CUNEIFORM SIGN AB TIMES ASH2
+1200C ; [.3B7E.0020.0002.1200C] # CUNEIFORM SIGN AB TIMES DUN3 GUNU
+1200D ; [.3B7F.0020.0002.1200D] # CUNEIFORM SIGN AB TIMES GAL
+1200E ; [.3B80.0020.0002.1200E] # CUNEIFORM SIGN AB TIMES GAN2 TENU
+1200F ; [.3B81.0020.0002.1200F] # CUNEIFORM SIGN AB TIMES HA
+12010 ; [.3B82.0020.0002.12010] # CUNEIFORM SIGN AB TIMES IGI GUNU
+12011 ; [.3B83.0020.0002.12011] # CUNEIFORM SIGN AB TIMES IMIN
+12012 ; [.3B84.0020.0002.12012] # CUNEIFORM SIGN AB TIMES LAGAB
+12013 ; [.3B85.0020.0002.12013] # CUNEIFORM SIGN AB TIMES SHESH
+12014 ; [.3B86.0020.0002.12014] # CUNEIFORM SIGN AB TIMES U PLUS U PLUS U
+12015 ; [.3B87.0020.0002.12015] # CUNEIFORM SIGN AB GUNU
+12016 ; [.3B88.0020.0002.12016] # CUNEIFORM SIGN AB2
+12017 ; [.3B89.0020.0002.12017] # CUNEIFORM SIGN AB2 TIMES BALAG
+12018 ; [.3B8A.0020.0002.12018] # CUNEIFORM SIGN AB2 TIMES GAN2 TENU
+12019 ; [.3B8B.0020.0002.12019] # CUNEIFORM SIGN AB2 TIMES ME PLUS EN
+1201A ; [.3B8C.0020.0002.1201A] # CUNEIFORM SIGN AB2 TIMES SHA3
+1201B ; [.3B8D.0020.0002.1201B] # CUNEIFORM SIGN AB2 TIMES TAK4
+1201C ; [.3B8E.0020.0002.1201C] # CUNEIFORM SIGN AD
+1201D ; [.3B8F.0020.0002.1201D] # CUNEIFORM SIGN AK
+1201E ; [.3B90.0020.0002.1201E] # CUNEIFORM SIGN AK TIMES ERIN2
+1201F ; [.3B91.0020.0002.1201F] # CUNEIFORM SIGN AK TIMES SHITA PLUS GISH
+12020 ; [.3B92.0020.0002.12020] # CUNEIFORM SIGN AL
+12021 ; [.3B93.0020.0002.12021] # CUNEIFORM SIGN AL TIMES AL
+12022 ; [.3B94.0020.0002.12022] # CUNEIFORM SIGN AL TIMES DIM2
+12023 ; [.3B95.0020.0002.12023] # CUNEIFORM SIGN AL TIMES GISH
+12024 ; [.3B96.0020.0002.12024] # CUNEIFORM SIGN AL TIMES HA
+12025 ; [.3B97.0020.0002.12025] # CUNEIFORM SIGN AL TIMES KAD3
+12026 ; [.3B98.0020.0002.12026] # CUNEIFORM SIGN AL TIMES KI
+12027 ; [.3B99.0020.0002.12027] # CUNEIFORM SIGN AL TIMES SHE
+12028 ; [.3B9A.0020.0002.12028] # CUNEIFORM SIGN AL TIMES USH
+12029 ; [.3B9B.0020.0002.12029] # CUNEIFORM SIGN ALAN
+1202A ; [.3B9C.0020.0002.1202A] # CUNEIFORM SIGN ALEPH
+1202B ; [.3B9D.0020.0002.1202B] # CUNEIFORM SIGN AMAR
+1202C ; [.3B9E.0020.0002.1202C] # CUNEIFORM SIGN AMAR TIMES SHE
+1202D ; [.3B9F.0020.0002.1202D] # CUNEIFORM SIGN AN
+1202E ; [.3BA0.0020.0002.1202E] # CUNEIFORM SIGN AN OVER AN
+1202F ; [.3BA1.0020.0002.1202F] # CUNEIFORM SIGN AN THREE TIMES
+12030 ; [.3BA2.0020.0002.12030] # CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA
+12031 ; [.3BA3.0020.0002.12031] # CUNEIFORM SIGN AN PLUS NAGA SQUARED
+12032 ; [.3BA4.0020.0002.12032] # CUNEIFORM SIGN ANSHE
+12033 ; [.3BA5.0020.0002.12033] # CUNEIFORM SIGN APIN
+12034 ; [.3BA6.0020.0002.12034] # CUNEIFORM SIGN ARAD
+12035 ; [.3BA7.0020.0002.12035] # CUNEIFORM SIGN ARAD TIMES KUR
+12036 ; [.3BA8.0020.0002.12036] # CUNEIFORM SIGN ARKAB
+12037 ; [.3BA9.0020.0002.12037] # CUNEIFORM SIGN ASAL2
+12038 ; [.3BAA.0020.0002.12038] # CUNEIFORM SIGN ASH
+12039 ; [.3BAB.0020.0002.12039] # CUNEIFORM SIGN ASH ZIDA TENU
+1203A ; [.3BAC.0020.0002.1203A] # CUNEIFORM SIGN ASH KABA TENU
+1203B ; [.3BAD.0020.0002.1203B] # CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP
+1203C ; [.3BAE.0020.0002.1203C] # CUNEIFORM SIGN ASH OVER ASH OVER ASH
+1203D ; [.3BAF.0020.0002.1203D] # CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH
+1203E ; [.3BB0.0020.0002.1203E] # CUNEIFORM SIGN ASH2
+1203F ; [.3BB1.0020.0002.1203F] # CUNEIFORM SIGN ASHGAB
+12040 ; [.3BB2.0020.0002.12040] # CUNEIFORM SIGN BA
+12041 ; [.3BB3.0020.0002.12041] # CUNEIFORM SIGN BAD
+12042 ; [.3BB4.0020.0002.12042] # CUNEIFORM SIGN BAG3
+12043 ; [.3BB5.0020.0002.12043] # CUNEIFORM SIGN BAHAR2
+12044 ; [.3BB6.0020.0002.12044] # CUNEIFORM SIGN BAL
+12045 ; [.3BB7.0020.0002.12045] # CUNEIFORM SIGN BAL OVER BAL
+12046 ; [.3BB8.0020.0002.12046] # CUNEIFORM SIGN BALAG
+12047 ; [.3BB9.0020.0002.12047] # CUNEIFORM SIGN BAR
+12048 ; [.3BBA.0020.0002.12048] # CUNEIFORM SIGN BARA2
+12049 ; [.3BBB.0020.0002.12049] # CUNEIFORM SIGN BI
+1204A ; [.3BBC.0020.0002.1204A] # CUNEIFORM SIGN BI TIMES A
+1204B ; [.3BBD.0020.0002.1204B] # CUNEIFORM SIGN BI TIMES GAR
+1204C ; [.3BBE.0020.0002.1204C] # CUNEIFORM SIGN BI TIMES IGI GUNU
+1204D ; [.3BBF.0020.0002.1204D] # CUNEIFORM SIGN BU
+1204E ; [.3BC0.0020.0002.1204E] # CUNEIFORM SIGN BU OVER BU AB
+1204F ; [.3BC1.0020.0002.1204F] # CUNEIFORM SIGN BU OVER BU UN
+12050 ; [.3BC2.0020.0002.12050] # CUNEIFORM SIGN BU CROSSING BU
+12051 ; [.3BC3.0020.0002.12051] # CUNEIFORM SIGN BULUG
+12052 ; [.3BC4.0020.0002.12052] # CUNEIFORM SIGN BULUG OVER BULUG
+12053 ; [.3BC5.0020.0002.12053] # CUNEIFORM SIGN BUR
+12054 ; [.3BC6.0020.0002.12054] # CUNEIFORM SIGN BUR2
+12055 ; [.3BC7.0020.0002.12055] # CUNEIFORM SIGN DA
+12056 ; [.3BC8.0020.0002.12056] # CUNEIFORM SIGN DAG
+12057 ; [.3BC9.0020.0002.12057] # CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH
+12058 ; [.3BCA.0020.0002.12058] # CUNEIFORM SIGN DAG KISIM5 TIMES AMAR
+12059 ; [.3BCB.0020.0002.12059] # CUNEIFORM SIGN DAG KISIM5 TIMES BALAG
+1205A ; [.3BCC.0020.0002.1205A] # CUNEIFORM SIGN DAG KISIM5 TIMES BI
+1205B ; [.3BCD.0020.0002.1205B] # CUNEIFORM SIGN DAG KISIM5 TIMES GA
+1205C ; [.3BCE.0020.0002.1205C] # CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH
+1205D ; [.3BCF.0020.0002.1205D] # CUNEIFORM SIGN DAG KISIM5 TIMES GI
+1205E ; [.3BD0.0020.0002.1205E] # CUNEIFORM SIGN DAG KISIM5 TIMES GIR2
+1205F ; [.3BD1.0020.0002.1205F] # CUNEIFORM SIGN DAG KISIM5 TIMES GUD
+12060 ; [.3BD2.0020.0002.12060] # CUNEIFORM SIGN DAG KISIM5 TIMES HA
+12061 ; [.3BD3.0020.0002.12061] # CUNEIFORM SIGN DAG KISIM5 TIMES IR
+12062 ; [.3BD4.0020.0002.12062] # CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU
+12063 ; [.3BD5.0020.0002.12063] # CUNEIFORM SIGN DAG KISIM5 TIMES KAK
+12064 ; [.3BD6.0020.0002.12064] # CUNEIFORM SIGN DAG KISIM5 TIMES LA
+12065 ; [.3BD7.0020.0002.12065] # CUNEIFORM SIGN DAG KISIM5 TIMES LU
+12066 ; [.3BD8.0020.0002.12066] # CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2
+12067 ; [.3BD9.0020.0002.12067] # CUNEIFORM SIGN DAG KISIM5 TIMES LUM
+12068 ; [.3BDA.0020.0002.12068] # CUNEIFORM SIGN DAG KISIM5 TIMES NE
+12069 ; [.3BDB.0020.0002.12069] # CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP
+1206A ; [.3BDC.0020.0002.1206A] # CUNEIFORM SIGN DAG KISIM5 TIMES SI
+1206B ; [.3BDD.0020.0002.1206B] # CUNEIFORM SIGN DAG KISIM5 TIMES TAK4
+1206C ; [.3BDE.0020.0002.1206C] # CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2
+1206D ; [.3BDF.0020.0002.1206D] # CUNEIFORM SIGN DAG KISIM5 TIMES USH
+1206E ; [.3BE0.0020.0002.1206E] # CUNEIFORM SIGN DAM
+1206F ; [.3BE1.0020.0002.1206F] # CUNEIFORM SIGN DAR
+12070 ; [.3BE2.0020.0002.12070] # CUNEIFORM SIGN DARA3
+12071 ; [.3BE3.0020.0002.12071] # CUNEIFORM SIGN DARA4
+12072 ; [.3BE4.0020.0002.12072] # CUNEIFORM SIGN DI
+12073 ; [.3BE5.0020.0002.12073] # CUNEIFORM SIGN DIB
+12074 ; [.3BE6.0020.0002.12074] # CUNEIFORM SIGN DIM
+12075 ; [.3BE7.0020.0002.12075] # CUNEIFORM SIGN DIM TIMES SHE
+12076 ; [.3BE8.0020.0002.12076] # CUNEIFORM SIGN DIM2
+12077 ; [.3BE9.0020.0002.12077] # CUNEIFORM SIGN DIN
+12078 ; [.3BEA.0020.0002.12078] # CUNEIFORM SIGN DIN KASKAL U GUNU DISH
+12079 ; [.3BEB.0020.0002.12079] # CUNEIFORM SIGN DISH
+1207A ; [.3BEC.0020.0002.1207A] # CUNEIFORM SIGN DU
+1207B ; [.3BED.0020.0002.1207B] # CUNEIFORM SIGN DU OVER DU
+1207C ; [.3BEE.0020.0002.1207C] # CUNEIFORM SIGN DU GUNU
+1207D ; [.3BEF.0020.0002.1207D] # CUNEIFORM SIGN DU SHESHIG
+1207E ; [.3BF0.0020.0002.1207E] # CUNEIFORM SIGN DUB
+1207F ; [.3BF1.0020.0002.1207F] # CUNEIFORM SIGN DUB TIMES ESH2
+12080 ; [.3BF2.0020.0002.12080] # CUNEIFORM SIGN DUB2
+12081 ; [.3BF3.0020.0002.12081] # CUNEIFORM SIGN DUG
+12082 ; [.3BF4.0020.0002.12082] # CUNEIFORM SIGN DUGUD
+12083 ; [.3BF5.0020.0002.12083] # CUNEIFORM SIGN DUH
+12084 ; [.3BF6.0020.0002.12084] # CUNEIFORM SIGN DUN
+12085 ; [.3BF7.0020.0002.12085] # CUNEIFORM SIGN DUN3
+12086 ; [.3BF8.0020.0002.12086] # CUNEIFORM SIGN DUN3 GUNU
+12087 ; [.3BF9.0020.0002.12087] # CUNEIFORM SIGN DUN3 GUNU GUNU
+12088 ; [.3BFA.0020.0002.12088] # CUNEIFORM SIGN DUN4
+12089 ; [.3BFB.0020.0002.12089] # CUNEIFORM SIGN DUR2
+1208A ; [.3BFC.0020.0002.1208A] # CUNEIFORM SIGN E
+1208B ; [.3BFD.0020.0002.1208B] # CUNEIFORM SIGN E TIMES PAP
+1208C ; [.3BFE.0020.0002.1208C] # CUNEIFORM SIGN E OVER E NUN OVER NUN
+1208D ; [.3BFF.0020.0002.1208D] # CUNEIFORM SIGN E2
+1208E ; [.3C00.0020.0002.1208E] # CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA
+1208F ; [.3C01.0020.0002.1208F] # CUNEIFORM SIGN E2 TIMES GAR
+12090 ; [.3C02.0020.0002.12090] # CUNEIFORM SIGN E2 TIMES MI
+12091 ; [.3C03.0020.0002.12091] # CUNEIFORM SIGN E2 TIMES SAL
+12092 ; [.3C04.0020.0002.12092] # CUNEIFORM SIGN E2 TIMES SHE
+12093 ; [.3C05.0020.0002.12093] # CUNEIFORM SIGN E2 TIMES U
+12094 ; [.3C06.0020.0002.12094] # CUNEIFORM SIGN EDIN
+12095 ; [.3C07.0020.0002.12095] # CUNEIFORM SIGN EGIR
+12096 ; [.3C08.0020.0002.12096] # CUNEIFORM SIGN EL
+12097 ; [.3C09.0020.0002.12097] # CUNEIFORM SIGN EN
+12098 ; [.3C0A.0020.0002.12098] # CUNEIFORM SIGN EN TIMES GAN2
+12099 ; [.3C0B.0020.0002.12099] # CUNEIFORM SIGN EN TIMES GAN2 TENU
+1209A ; [.3C0C.0020.0002.1209A] # CUNEIFORM SIGN EN TIMES ME
+1209B ; [.3C0D.0020.0002.1209B] # CUNEIFORM SIGN EN CROSSING EN
+1209C ; [.3C0E.0020.0002.1209C] # CUNEIFORM SIGN EN OPPOSING EN
+1209D ; [.3C0F.0020.0002.1209D] # CUNEIFORM SIGN EN SQUARED
+1209E ; [.3C10.0020.0002.1209E] # CUNEIFORM SIGN EREN
+1209F ; [.3C11.0020.0002.1209F] # CUNEIFORM SIGN ERIN2
+120A0 ; [.3C12.0020.0002.120A0] # CUNEIFORM SIGN ESH2
+120A1 ; [.3C13.0020.0002.120A1] # CUNEIFORM SIGN EZEN
+120A2 ; [.3C14.0020.0002.120A2] # CUNEIFORM SIGN EZEN TIMES A
+120A3 ; [.3C15.0020.0002.120A3] # CUNEIFORM SIGN EZEN TIMES A PLUS LAL
+120A4 ; [.3C16.0020.0002.120A4] # CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL
+120A5 ; [.3C17.0020.0002.120A5] # CUNEIFORM SIGN EZEN TIMES AN
+120A6 ; [.3C18.0020.0002.120A6] # CUNEIFORM SIGN EZEN TIMES BAD
+120A7 ; [.3C19.0020.0002.120A7] # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU
+120A8 ; [.3C1A.0020.0002.120A8] # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU
+120A9 ; [.3C1B.0020.0002.120A9] # CUNEIFORM SIGN EZEN TIMES HA
+120AA ; [.3C1C.0020.0002.120AA] # CUNEIFORM SIGN EZEN TIMES HA GUNU
+120AB ; [.3C1D.0020.0002.120AB] # CUNEIFORM SIGN EZEN TIMES IGI GUNU
+120AC ; [.3C1E.0020.0002.120AC] # CUNEIFORM SIGN EZEN TIMES KASKAL
+120AD ; [.3C1F.0020.0002.120AD] # CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED
+120AE ; [.3C20.0020.0002.120AE] # CUNEIFORM SIGN EZEN TIMES KU3
+120AF ; [.3C21.0020.0002.120AF] # CUNEIFORM SIGN EZEN TIMES LA
+120B0 ; [.3C22.0020.0002.120B0] # CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL
+120B1 ; [.3C23.0020.0002.120B1] # CUNEIFORM SIGN EZEN TIMES LI
+120B2 ; [.3C24.0020.0002.120B2] # CUNEIFORM SIGN EZEN TIMES LU
+120B3 ; [.3C25.0020.0002.120B3] # CUNEIFORM SIGN EZEN TIMES U2
+120B4 ; [.3C26.0020.0002.120B4] # CUNEIFORM SIGN EZEN TIMES UD
+120B5 ; [.3C27.0020.0002.120B5] # CUNEIFORM SIGN GA
+120B6 ; [.3C28.0020.0002.120B6] # CUNEIFORM SIGN GA GUNU
+120B7 ; [.3C29.0020.0002.120B7] # CUNEIFORM SIGN GA2
+120B8 ; [.3C2A.0020.0002.120B8] # CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA
+120B9 ; [.3C2B.0020.0002.120B9] # CUNEIFORM SIGN GA2 TIMES A PLUS HA
+120BA ; [.3C2C.0020.0002.120BA] # CUNEIFORM SIGN GA2 TIMES A PLUS IGI
+120BB ; [.3C2D.0020.0002.120BB] # CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB
+120BC ; [.3C2E.0020.0002.120BC] # CUNEIFORM SIGN GA2 TIMES AN
+120BD ; [.3C2F.0020.0002.120BD] # CUNEIFORM SIGN GA2 TIMES ASH
+120BE ; [.3C30.0020.0002.120BE] # CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL
+120BF ; [.3C31.0020.0002.120BF] # CUNEIFORM SIGN GA2 TIMES BAD
+120C0 ; [.3C32.0020.0002.120C0] # CUNEIFORM SIGN GA2 TIMES BAR PLUS RA
+120C1 ; [.3C33.0020.0002.120C1] # CUNEIFORM SIGN GA2 TIMES BUR
+120C2 ; [.3C34.0020.0002.120C2] # CUNEIFORM SIGN GA2 TIMES BUR PLUS RA
+120C3 ; [.3C35.0020.0002.120C3] # CUNEIFORM SIGN GA2 TIMES DA
+120C4 ; [.3C36.0020.0002.120C4] # CUNEIFORM SIGN GA2 TIMES DI
+120C5 ; [.3C37.0020.0002.120C5] # CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE
+120C6 ; [.3C38.0020.0002.120C6] # CUNEIFORM SIGN GA2 TIMES DUB
+120C7 ; [.3C39.0020.0002.120C7] # CUNEIFORM SIGN GA2 TIMES EL
+120C8 ; [.3C3A.0020.0002.120C8] # CUNEIFORM SIGN GA2 TIMES EL PLUS LA
+120C9 ; [.3C3B.0020.0002.120C9] # CUNEIFORM SIGN GA2 TIMES EN
+120CA ; [.3C3C.0020.0002.120CA] # CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU
+120CB ; [.3C3D.0020.0002.120CB] # CUNEIFORM SIGN GA2 TIMES GAN2 TENU
+120CC ; [.3C3E.0020.0002.120CC] # CUNEIFORM SIGN GA2 TIMES GAR
+120CD ; [.3C3F.0020.0002.120CD] # CUNEIFORM SIGN GA2 TIMES GI
+120CE ; [.3C40.0020.0002.120CE] # CUNEIFORM SIGN GA2 TIMES GI4
+120CF ; [.3C41.0020.0002.120CF] # CUNEIFORM SIGN GA2 TIMES GI4 PLUS A
+120D0 ; [.3C42.0020.0002.120D0] # CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU
+120D1 ; [.3C43.0020.0002.120D1] # CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2
+120D2 ; [.3C44.0020.0002.120D2] # CUNEIFORM SIGN GA2 TIMES HAL
+120D3 ; [.3C45.0020.0002.120D3] # CUNEIFORM SIGN GA2 TIMES HAL PLUS LA
+120D4 ; [.3C46.0020.0002.120D4] # CUNEIFORM SIGN GA2 TIMES HI PLUS LI
+120D5 ; [.3C47.0020.0002.120D5] # CUNEIFORM SIGN GA2 TIMES HUB2
+120D6 ; [.3C48.0020.0002.120D6] # CUNEIFORM SIGN GA2 TIMES IGI GUNU
+120D7 ; [.3C49.0020.0002.120D7] # CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH
+120D8 ; [.3C4A.0020.0002.120D8] # CUNEIFORM SIGN GA2 TIMES KAK
+120D9 ; [.3C4B.0020.0002.120D9] # CUNEIFORM SIGN GA2 TIMES KASKAL
+120DA ; [.3C4C.0020.0002.120DA] # CUNEIFORM SIGN GA2 TIMES KID
+120DB ; [.3C4D.0020.0002.120DB] # CUNEIFORM SIGN GA2 TIMES KID PLUS LAL
+120DC ; [.3C4E.0020.0002.120DC] # CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN
+120DD ; [.3C4F.0020.0002.120DD] # CUNEIFORM SIGN GA2 TIMES LA
+120DE ; [.3C50.0020.0002.120DE] # CUNEIFORM SIGN GA2 TIMES ME PLUS EN
+120DF ; [.3C51.0020.0002.120DF] # CUNEIFORM SIGN GA2 TIMES MI
+120E0 ; [.3C52.0020.0002.120E0] # CUNEIFORM SIGN GA2 TIMES NUN
+120E1 ; [.3C53.0020.0002.120E1] # CUNEIFORM SIGN GA2 TIMES NUN OVER NUN
+120E2 ; [.3C54.0020.0002.120E2] # CUNEIFORM SIGN GA2 TIMES PA
+120E3 ; [.3C55.0020.0002.120E3] # CUNEIFORM SIGN GA2 TIMES SAL
+120E4 ; [.3C56.0020.0002.120E4] # CUNEIFORM SIGN GA2 TIMES SAR
+120E5 ; [.3C57.0020.0002.120E5] # CUNEIFORM SIGN GA2 TIMES SHE
+120E6 ; [.3C58.0020.0002.120E6] # CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR
+120E7 ; [.3C59.0020.0002.120E7] # CUNEIFORM SIGN GA2 TIMES SHID
+120E8 ; [.3C5A.0020.0002.120E8] # CUNEIFORM SIGN GA2 TIMES SUM
+120E9 ; [.3C5B.0020.0002.120E9] # CUNEIFORM SIGN GA2 TIMES TAK4
+120EA ; [.3C5C.0020.0002.120EA] # CUNEIFORM SIGN GA2 TIMES U
+120EB ; [.3C5D.0020.0002.120EB] # CUNEIFORM SIGN GA2 TIMES UD
+120EC ; [.3C5E.0020.0002.120EC] # CUNEIFORM SIGN GA2 TIMES UD PLUS DU
+120ED ; [.3C5F.0020.0002.120ED] # CUNEIFORM SIGN GA2 OVER GA2
+120EE ; [.3C60.0020.0002.120EE] # CUNEIFORM SIGN GABA
+120EF ; [.3C61.0020.0002.120EF] # CUNEIFORM SIGN GABA CROSSING GABA
+120F0 ; [.3C62.0020.0002.120F0] # CUNEIFORM SIGN GAD
+120F1 ; [.3C63.0020.0002.120F1] # CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR
+120F2 ; [.3C64.0020.0002.120F2] # CUNEIFORM SIGN GAL
+120F3 ; [.3C65.0020.0002.120F3] # CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR
+120F4 ; [.3C66.0020.0002.120F4] # CUNEIFORM SIGN GALAM
+120F5 ; [.3C67.0020.0002.120F5] # CUNEIFORM SIGN GAM
+120F6 ; [.3C68.0020.0002.120F6] # CUNEIFORM SIGN GAN
+120F7 ; [.3C69.0020.0002.120F7] # CUNEIFORM SIGN GAN2
+120F8 ; [.3C6A.0020.0002.120F8] # CUNEIFORM SIGN GAN2 TENU
+120F9 ; [.3C6B.0020.0002.120F9] # CUNEIFORM SIGN GAN2 OVER GAN2
+120FA ; [.3C6C.0020.0002.120FA] # CUNEIFORM SIGN GAN2 CROSSING GAN2
+120FB ; [.3C6D.0020.0002.120FB] # CUNEIFORM SIGN GAR
+120FC ; [.3C6E.0020.0002.120FC] # CUNEIFORM SIGN GAR3
+120FD ; [.3C6F.0020.0002.120FD] # CUNEIFORM SIGN GASHAN
+120FE ; [.3C70.0020.0002.120FE] # CUNEIFORM SIGN GESHTIN
+120FF ; [.3C71.0020.0002.120FF] # CUNEIFORM SIGN GESHTIN TIMES KUR
+12100 ; [.3C72.0020.0002.12100] # CUNEIFORM SIGN GI
+12101 ; [.3C73.0020.0002.12101] # CUNEIFORM SIGN GI TIMES E
+12102 ; [.3C74.0020.0002.12102] # CUNEIFORM SIGN GI TIMES U
+12103 ; [.3C75.0020.0002.12103] # CUNEIFORM SIGN GI CROSSING GI
+12104 ; [.3C76.0020.0002.12104] # CUNEIFORM SIGN GI4
+12105 ; [.3C77.0020.0002.12105] # CUNEIFORM SIGN GI4 OVER GI4
+12106 ; [.3C78.0020.0002.12106] # CUNEIFORM SIGN GI4 CROSSING GI4
+12107 ; [.3C79.0020.0002.12107] # CUNEIFORM SIGN GIDIM
+12108 ; [.3C7A.0020.0002.12108] # CUNEIFORM SIGN GIR2
+12109 ; [.3C7B.0020.0002.12109] # CUNEIFORM SIGN GIR2 GUNU
+1210A ; [.3C7C.0020.0002.1210A] # CUNEIFORM SIGN GIR3
+1210B ; [.3C7D.0020.0002.1210B] # CUNEIFORM SIGN GIR3 TIMES A PLUS IGI
+1210C ; [.3C7E.0020.0002.1210C] # CUNEIFORM SIGN GIR3 TIMES GAN2 TENU
+1210D ; [.3C7F.0020.0002.1210D] # CUNEIFORM SIGN GIR3 TIMES IGI
+1210E ; [.3C80.0020.0002.1210E] # CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI
+1210F ; [.3C81.0020.0002.1210F] # CUNEIFORM SIGN GIR3 TIMES PA
+12110 ; [.3C82.0020.0002.12110] # CUNEIFORM SIGN GISAL
+12111 ; [.3C83.0020.0002.12111] # CUNEIFORM SIGN GISH
+12112 ; [.3C84.0020.0002.12112] # CUNEIFORM SIGN GISH CROSSING GISH
+12113 ; [.3C85.0020.0002.12113] # CUNEIFORM SIGN GISH TIMES BAD
+12114 ; [.3C86.0020.0002.12114] # CUNEIFORM SIGN GISH TIMES TAK4
+12115 ; [.3C87.0020.0002.12115] # CUNEIFORM SIGN GISH TENU
+12116 ; [.3C88.0020.0002.12116] # CUNEIFORM SIGN GU
+12117 ; [.3C89.0020.0002.12117] # CUNEIFORM SIGN GU CROSSING GU
+12118 ; [.3C8A.0020.0002.12118] # CUNEIFORM SIGN GU2
+12119 ; [.3C8B.0020.0002.12119] # CUNEIFORM SIGN GU2 TIMES KAK
+1211A ; [.3C8C.0020.0002.1211A] # CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU
+1211B ; [.3C8D.0020.0002.1211B] # CUNEIFORM SIGN GU2 TIMES NUN
+1211C ; [.3C8E.0020.0002.1211C] # CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2
+1211D ; [.3C8F.0020.0002.1211D] # CUNEIFORM SIGN GU2 GUNU
+1211E ; [.3C90.0020.0002.1211E] # CUNEIFORM SIGN GUD
+1211F ; [.3C91.0020.0002.1211F] # CUNEIFORM SIGN GUD TIMES A PLUS KUR
+12120 ; [.3C92.0020.0002.12120] # CUNEIFORM SIGN GUD TIMES KUR
+12121 ; [.3C93.0020.0002.12121] # CUNEIFORM SIGN GUD OVER GUD LUGAL
+12122 ; [.3C94.0020.0002.12122] # CUNEIFORM SIGN GUL
+12123 ; [.3C95.0020.0002.12123] # CUNEIFORM SIGN GUM
+12124 ; [.3C96.0020.0002.12124] # CUNEIFORM SIGN GUM TIMES SHE
+12125 ; [.3C97.0020.0002.12125] # CUNEIFORM SIGN GUR
+12126 ; [.3C98.0020.0002.12126] # CUNEIFORM SIGN GUR7
+12127 ; [.3C99.0020.0002.12127] # CUNEIFORM SIGN GURUN
+12128 ; [.3C9A.0020.0002.12128] # CUNEIFORM SIGN GURUSH
+12129 ; [.3C9B.0020.0002.12129] # CUNEIFORM SIGN HA
+1212A ; [.3C9C.0020.0002.1212A] # CUNEIFORM SIGN HA TENU
+1212B ; [.3C9D.0020.0002.1212B] # CUNEIFORM SIGN HA GUNU
+1212C ; [.3C9E.0020.0002.1212C] # CUNEIFORM SIGN HAL
+1212D ; [.3C9F.0020.0002.1212D] # CUNEIFORM SIGN HI
+1212E ; [.3CA0.0020.0002.1212E] # CUNEIFORM SIGN HI TIMES ASH
+1212F ; [.3CA1.0020.0002.1212F] # CUNEIFORM SIGN HI TIMES ASH2
+12130 ; [.3CA2.0020.0002.12130] # CUNEIFORM SIGN HI TIMES BAD
+12131 ; [.3CA3.0020.0002.12131] # CUNEIFORM SIGN HI TIMES DISH
+12132 ; [.3CA4.0020.0002.12132] # CUNEIFORM SIGN HI TIMES GAD
+12133 ; [.3CA5.0020.0002.12133] # CUNEIFORM SIGN HI TIMES KIN
+12134 ; [.3CA6.0020.0002.12134] # CUNEIFORM SIGN HI TIMES NUN
+12135 ; [.3CA7.0020.0002.12135] # CUNEIFORM SIGN HI TIMES SHE
+12136 ; [.3CA8.0020.0002.12136] # CUNEIFORM SIGN HI TIMES U
+12137 ; [.3CA9.0020.0002.12137] # CUNEIFORM SIGN HU
+12138 ; [.3CAA.0020.0002.12138] # CUNEIFORM SIGN HUB2
+12139 ; [.3CAB.0020.0002.12139] # CUNEIFORM SIGN HUB2 TIMES AN
+1213A ; [.3CAC.0020.0002.1213A] # CUNEIFORM SIGN HUB2 TIMES HAL
+1213B ; [.3CAD.0020.0002.1213B] # CUNEIFORM SIGN HUB2 TIMES KASKAL
+1213C ; [.3CAE.0020.0002.1213C] # CUNEIFORM SIGN HUB2 TIMES LISH
+1213D ; [.3CAF.0020.0002.1213D] # CUNEIFORM SIGN HUB2 TIMES UD
+1213E ; [.3CB0.0020.0002.1213E] # CUNEIFORM SIGN HUL2
+1213F ; [.3CB1.0020.0002.1213F] # CUNEIFORM SIGN I
+12140 ; [.3CB2.0020.0002.12140] # CUNEIFORM SIGN I A
+12141 ; [.3CB3.0020.0002.12141] # CUNEIFORM SIGN IB
+12142 ; [.3CB4.0020.0002.12142] # CUNEIFORM SIGN IDIM
+12143 ; [.3CB5.0020.0002.12143] # CUNEIFORM SIGN IDIM OVER IDIM BUR
+12144 ; [.3CB6.0020.0002.12144] # CUNEIFORM SIGN IDIM OVER IDIM SQUARED
+12145 ; [.3CB7.0020.0002.12145] # CUNEIFORM SIGN IG
+12146 ; [.3CB8.0020.0002.12146] # CUNEIFORM SIGN IGI
+12147 ; [.3CB9.0020.0002.12147] # CUNEIFORM SIGN IGI DIB
+12148 ; [.3CBA.0020.0002.12148] # CUNEIFORM SIGN IGI RI
+12149 ; [.3CBB.0020.0002.12149] # CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD
+1214A ; [.3CBC.0020.0002.1214A] # CUNEIFORM SIGN IGI GUNU
+1214B ; [.3CBD.0020.0002.1214B] # CUNEIFORM SIGN IL
+1214C ; [.3CBE.0020.0002.1214C] # CUNEIFORM SIGN IL TIMES GAN2 TENU
+1214D ; [.3CBF.0020.0002.1214D] # CUNEIFORM SIGN IL2
+1214E ; [.3CC0.0020.0002.1214E] # CUNEIFORM SIGN IM
+1214F ; [.3CC1.0020.0002.1214F] # CUNEIFORM SIGN IM TIMES TAK4
+12150 ; [.3CC2.0020.0002.12150] # CUNEIFORM SIGN IM CROSSING IM
+12151 ; [.3CC3.0020.0002.12151] # CUNEIFORM SIGN IM OPPOSING IM
+12152 ; [.3CC4.0020.0002.12152] # CUNEIFORM SIGN IM SQUARED
+12153 ; [.3CC5.0020.0002.12153] # CUNEIFORM SIGN IMIN
+12154 ; [.3CC6.0020.0002.12154] # CUNEIFORM SIGN IN
+12155 ; [.3CC7.0020.0002.12155] # CUNEIFORM SIGN IR
+12156 ; [.3CC8.0020.0002.12156] # CUNEIFORM SIGN ISH
+12157 ; [.3CC9.0020.0002.12157] # CUNEIFORM SIGN KA
+12158 ; [.3CCA.0020.0002.12158] # CUNEIFORM SIGN KA TIMES A
+12159 ; [.3CCB.0020.0002.12159] # CUNEIFORM SIGN KA TIMES AD
+1215A ; [.3CCC.0020.0002.1215A] # CUNEIFORM SIGN KA TIMES AD PLUS KU3
+1215B ; [.3CCD.0020.0002.1215B] # CUNEIFORM SIGN KA TIMES ASH2
+1215C ; [.3CCE.0020.0002.1215C] # CUNEIFORM SIGN KA TIMES BAD
+1215D ; [.3CCF.0020.0002.1215D] # CUNEIFORM SIGN KA TIMES BALAG
+1215E ; [.3CD0.0020.0002.1215E] # CUNEIFORM SIGN KA TIMES BAR
+1215F ; [.3CD1.0020.0002.1215F] # CUNEIFORM SIGN KA TIMES BI
+12160 ; [.3CD2.0020.0002.12160] # CUNEIFORM SIGN KA TIMES ERIN2
+12161 ; [.3CD3.0020.0002.12161] # CUNEIFORM SIGN KA TIMES ESH2
+12162 ; [.3CD4.0020.0002.12162] # CUNEIFORM SIGN KA TIMES GA
+12163 ; [.3CD5.0020.0002.12163] # CUNEIFORM SIGN KA TIMES GAL
+12164 ; [.3CD6.0020.0002.12164] # CUNEIFORM SIGN KA TIMES GAN2 TENU
+12165 ; [.3CD7.0020.0002.12165] # CUNEIFORM SIGN KA TIMES GAR
+12166 ; [.3CD8.0020.0002.12166] # CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A
+12167 ; [.3CD9.0020.0002.12167] # CUNEIFORM SIGN KA TIMES GI
+12168 ; [.3CDA.0020.0002.12168] # CUNEIFORM SIGN KA TIMES GIR2
+12169 ; [.3CDB.0020.0002.12169] # CUNEIFORM SIGN KA TIMES GISH PLUS SAR
+1216A ; [.3CDC.0020.0002.1216A] # CUNEIFORM SIGN KA TIMES GISH CROSSING GISH
+1216B ; [.3CDD.0020.0002.1216B] # CUNEIFORM SIGN KA TIMES GU
+1216C ; [.3CDE.0020.0002.1216C] # CUNEIFORM SIGN KA TIMES GUR7
+1216D ; [.3CDF.0020.0002.1216D] # CUNEIFORM SIGN KA TIMES IGI
+1216E ; [.3CE0.0020.0002.1216E] # CUNEIFORM SIGN KA TIMES IM
+1216F ; [.3CE1.0020.0002.1216F] # CUNEIFORM SIGN KA TIMES KAK
+12170 ; [.3CE2.0020.0002.12170] # CUNEIFORM SIGN KA TIMES KI
+12171 ; [.3CE3.0020.0002.12171] # CUNEIFORM SIGN KA TIMES KID
+12172 ; [.3CE4.0020.0002.12172] # CUNEIFORM SIGN KA TIMES LI
+12173 ; [.3CE5.0020.0002.12173] # CUNEIFORM SIGN KA TIMES LU
+12174 ; [.3CE6.0020.0002.12174] # CUNEIFORM SIGN KA TIMES ME
+12175 ; [.3CE7.0020.0002.12175] # CUNEIFORM SIGN KA TIMES ME PLUS DU
+12176 ; [.3CE8.0020.0002.12176] # CUNEIFORM SIGN KA TIMES ME PLUS GI
+12177 ; [.3CE9.0020.0002.12177] # CUNEIFORM SIGN KA TIMES ME PLUS TE
+12178 ; [.3CEA.0020.0002.12178] # CUNEIFORM SIGN KA TIMES MI
+12179 ; [.3CEB.0020.0002.12179] # CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ
+1217A ; [.3CEC.0020.0002.1217A] # CUNEIFORM SIGN KA TIMES NE
+1217B ; [.3CED.0020.0002.1217B] # CUNEIFORM SIGN KA TIMES NUN
+1217C ; [.3CEE.0020.0002.1217C] # CUNEIFORM SIGN KA TIMES PI
+1217D ; [.3CEF.0020.0002.1217D] # CUNEIFORM SIGN KA TIMES RU
+1217E ; [.3CF0.0020.0002.1217E] # CUNEIFORM SIGN KA TIMES SA
+1217F ; [.3CF1.0020.0002.1217F] # CUNEIFORM SIGN KA TIMES SAR
+12180 ; [.3CF2.0020.0002.12180] # CUNEIFORM SIGN KA TIMES SHA
+12181 ; [.3CF3.0020.0002.12181] # CUNEIFORM SIGN KA TIMES SHE
+12182 ; [.3CF4.0020.0002.12182] # CUNEIFORM SIGN KA TIMES SHID
+12183 ; [.3CF5.0020.0002.12183] # CUNEIFORM SIGN KA TIMES SHU
+12184 ; [.3CF6.0020.0002.12184] # CUNEIFORM SIGN KA TIMES SIG
+12185 ; [.3CF7.0020.0002.12185] # CUNEIFORM SIGN KA TIMES SUHUR
+12186 ; [.3CF8.0020.0002.12186] # CUNEIFORM SIGN KA TIMES TAR
+12187 ; [.3CF9.0020.0002.12187] # CUNEIFORM SIGN KA TIMES U
+12188 ; [.3CFA.0020.0002.12188] # CUNEIFORM SIGN KA TIMES U2
+12189 ; [.3CFB.0020.0002.12189] # CUNEIFORM SIGN KA TIMES UD
+1218A ; [.3CFC.0020.0002.1218A] # CUNEIFORM SIGN KA TIMES UMUM TIMES PA
+1218B ; [.3CFD.0020.0002.1218B] # CUNEIFORM SIGN KA TIMES USH
+1218C ; [.3CFE.0020.0002.1218C] # CUNEIFORM SIGN KA TIMES ZI
+1218D ; [.3CFF.0020.0002.1218D] # CUNEIFORM SIGN KA2
+1218E ; [.3D00.0020.0002.1218E] # CUNEIFORM SIGN KA2 CROSSING KA2
+1218F ; [.3D01.0020.0002.1218F] # CUNEIFORM SIGN KAB
+12190 ; [.3D02.0020.0002.12190] # CUNEIFORM SIGN KAD2
+12191 ; [.3D03.0020.0002.12191] # CUNEIFORM SIGN KAD3
+12192 ; [.3D04.0020.0002.12192] # CUNEIFORM SIGN KAD4
+12193 ; [.3D05.0020.0002.12193] # CUNEIFORM SIGN KAD5
+12194 ; [.3D06.0020.0002.12194] # CUNEIFORM SIGN KAD5 OVER KAD5
+12195 ; [.3D07.0020.0002.12195] # CUNEIFORM SIGN KAK
+12196 ; [.3D08.0020.0002.12196] # CUNEIFORM SIGN KAK TIMES IGI GUNU
+12197 ; [.3D09.0020.0002.12197] # CUNEIFORM SIGN KAL
+12198 ; [.3D0A.0020.0002.12198] # CUNEIFORM SIGN KAL TIMES BAD
+12199 ; [.3D0B.0020.0002.12199] # CUNEIFORM SIGN KAL CROSSING KAL
+1219A ; [.3D0C.0020.0002.1219A] # CUNEIFORM SIGN KAM2
+1219B ; [.3D0D.0020.0002.1219B] # CUNEIFORM SIGN KAM4
+1219C ; [.3D0E.0020.0002.1219C] # CUNEIFORM SIGN KASKAL
+1219D ; [.3D0F.0020.0002.1219D] # CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U
+1219E ; [.3D10.0020.0002.1219E] # CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U
+1219F ; [.3D11.0020.0002.1219F] # CUNEIFORM SIGN KESH2
+121A0 ; [.3D12.0020.0002.121A0] # CUNEIFORM SIGN KI
+121A1 ; [.3D13.0020.0002.121A1] # CUNEIFORM SIGN KI TIMES BAD
+121A2 ; [.3D14.0020.0002.121A2] # CUNEIFORM SIGN KI TIMES U
+121A3 ; [.3D15.0020.0002.121A3] # CUNEIFORM SIGN KI TIMES UD
+121A4 ; [.3D16.0020.0002.121A4] # CUNEIFORM SIGN KID
+121A5 ; [.3D17.0020.0002.121A5] # CUNEIFORM SIGN KIN
+121A6 ; [.3D18.0020.0002.121A6] # CUNEIFORM SIGN KISAL
+121A7 ; [.3D19.0020.0002.121A7] # CUNEIFORM SIGN KISH
+121A8 ; [.3D1A.0020.0002.121A8] # CUNEIFORM SIGN KISIM5
+121A9 ; [.3D1B.0020.0002.121A9] # CUNEIFORM SIGN KISIM5 OVER KISIM5
+121AA ; [.3D1C.0020.0002.121AA] # CUNEIFORM SIGN KU
+121AB ; [.3D1D.0020.0002.121AB] # CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2
+121AC ; [.3D1E.0020.0002.121AC] # CUNEIFORM SIGN KU3
+121AD ; [.3D1F.0020.0002.121AD] # CUNEIFORM SIGN KU4
+121AE ; [.3D20.0020.0002.121AE] # CUNEIFORM SIGN KU4 VARIANT FORM
+121AF ; [.3D21.0020.0002.121AF] # CUNEIFORM SIGN KU7
+121B0 ; [.3D22.0020.0002.121B0] # CUNEIFORM SIGN KUL
+121B1 ; [.3D23.0020.0002.121B1] # CUNEIFORM SIGN KUL GUNU
+121B2 ; [.3D24.0020.0002.121B2] # CUNEIFORM SIGN KUN
+121B3 ; [.3D25.0020.0002.121B3] # CUNEIFORM SIGN KUR
+121B4 ; [.3D26.0020.0002.121B4] # CUNEIFORM SIGN KUR OPPOSING KUR
+121B5 ; [.3D27.0020.0002.121B5] # CUNEIFORM SIGN KUSHU2
+121B6 ; [.3D28.0020.0002.121B6] # CUNEIFORM SIGN KWU318
+121B7 ; [.3D29.0020.0002.121B7] # CUNEIFORM SIGN LA
+121B8 ; [.3D2A.0020.0002.121B8] # CUNEIFORM SIGN LAGAB
+121B9 ; [.3D2B.0020.0002.121B9] # CUNEIFORM SIGN LAGAB TIMES A
+121BA ; [.3D2C.0020.0002.121BA] # CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA
+121BB ; [.3D2D.0020.0002.121BB] # CUNEIFORM SIGN LAGAB TIMES A PLUS GAR
+121BC ; [.3D2E.0020.0002.121BC] # CUNEIFORM SIGN LAGAB TIMES A PLUS LAL
+121BD ; [.3D2F.0020.0002.121BD] # CUNEIFORM SIGN LAGAB TIMES AL
+121BE ; [.3D30.0020.0002.121BE] # CUNEIFORM SIGN LAGAB TIMES AN
+121BF ; [.3D31.0020.0002.121BF] # CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU
+121C0 ; [.3D32.0020.0002.121C0] # CUNEIFORM SIGN LAGAB TIMES BAD
+121C1 ; [.3D33.0020.0002.121C1] # CUNEIFORM SIGN LAGAB TIMES BI
+121C2 ; [.3D34.0020.0002.121C2] # CUNEIFORM SIGN LAGAB TIMES DAR
+121C3 ; [.3D35.0020.0002.121C3] # CUNEIFORM SIGN LAGAB TIMES EN
+121C4 ; [.3D36.0020.0002.121C4] # CUNEIFORM SIGN LAGAB TIMES GA
+121C5 ; [.3D37.0020.0002.121C5] # CUNEIFORM SIGN LAGAB TIMES GAR
+121C6 ; [.3D38.0020.0002.121C6] # CUNEIFORM SIGN LAGAB TIMES GUD
+121C7 ; [.3D39.0020.0002.121C7] # CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD
+121C8 ; [.3D3A.0020.0002.121C8] # CUNEIFORM SIGN LAGAB TIMES HA
+121C9 ; [.3D3B.0020.0002.121C9] # CUNEIFORM SIGN LAGAB TIMES HAL
+121CA ; [.3D3C.0020.0002.121CA] # CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN
+121CB ; [.3D3D.0020.0002.121CB] # CUNEIFORM SIGN LAGAB TIMES IGI GUNU
+121CC ; [.3D3E.0020.0002.121CC] # CUNEIFORM SIGN LAGAB TIMES IM
+121CD ; [.3D3F.0020.0002.121CD] # CUNEIFORM SIGN LAGAB TIMES IM PLUS HA
+121CE ; [.3D40.0020.0002.121CE] # CUNEIFORM SIGN LAGAB TIMES IM PLUS LU
+121CF ; [.3D41.0020.0002.121CF] # CUNEIFORM SIGN LAGAB TIMES KI
+121D0 ; [.3D42.0020.0002.121D0] # CUNEIFORM SIGN LAGAB TIMES KIN
+121D1 ; [.3D43.0020.0002.121D1] # CUNEIFORM SIGN LAGAB TIMES KU3
+121D2 ; [.3D44.0020.0002.121D2] # CUNEIFORM SIGN LAGAB TIMES KUL
+121D3 ; [.3D45.0020.0002.121D3] # CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A
+121D4 ; [.3D46.0020.0002.121D4] # CUNEIFORM SIGN LAGAB TIMES LAGAB
+121D5 ; [.3D47.0020.0002.121D5] # CUNEIFORM SIGN LAGAB TIMES LISH
+121D6 ; [.3D48.0020.0002.121D6] # CUNEIFORM SIGN LAGAB TIMES LU
+121D7 ; [.3D49.0020.0002.121D7] # CUNEIFORM SIGN LAGAB TIMES LUL
+121D8 ; [.3D4A.0020.0002.121D8] # CUNEIFORM SIGN LAGAB TIMES ME
+121D9 ; [.3D4B.0020.0002.121D9] # CUNEIFORM SIGN LAGAB TIMES ME PLUS EN
+121DA ; [.3D4C.0020.0002.121DA] # CUNEIFORM SIGN LAGAB TIMES MUSH
+121DB ; [.3D4D.0020.0002.121DB] # CUNEIFORM SIGN LAGAB TIMES NE
+121DC ; [.3D4E.0020.0002.121DC] # CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM
+121DD ; [.3D4F.0020.0002.121DD] # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2
+121DE ; [.3D50.0020.0002.121DE] # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU
+121DF ; [.3D51.0020.0002.121DF] # CUNEIFORM SIGN LAGAB TIMES SHU2
+121E0 ; [.3D52.0020.0002.121E0] # CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2
+121E1 ; [.3D53.0020.0002.121E1] # CUNEIFORM SIGN LAGAB TIMES SUM
+121E2 ; [.3D54.0020.0002.121E2] # CUNEIFORM SIGN LAGAB TIMES TAG
+121E3 ; [.3D55.0020.0002.121E3] # CUNEIFORM SIGN LAGAB TIMES TAK4
+121E4 ; [.3D56.0020.0002.121E4] # CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA
+121E5 ; [.3D57.0020.0002.121E5] # CUNEIFORM SIGN LAGAB TIMES U
+121E6 ; [.3D58.0020.0002.121E6] # CUNEIFORM SIGN LAGAB TIMES U PLUS A
+121E7 ; [.3D59.0020.0002.121E7] # CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U
+121E8 ; [.3D5A.0020.0002.121E8] # CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH
+121E9 ; [.3D5B.0020.0002.121E9] # CUNEIFORM SIGN LAGAB TIMES UD
+121EA ; [.3D5C.0020.0002.121EA] # CUNEIFORM SIGN LAGAB TIMES USH
+121EB ; [.3D5D.0020.0002.121EB] # CUNEIFORM SIGN LAGAB SQUARED
+121EC ; [.3D5E.0020.0002.121EC] # CUNEIFORM SIGN LAGAR
+121ED ; [.3D5F.0020.0002.121ED] # CUNEIFORM SIGN LAGAR TIMES SHE
+121EE ; [.3D60.0020.0002.121EE] # CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM
+121EF ; [.3D61.0020.0002.121EF] # CUNEIFORM SIGN LAGAR GUNU
+121F0 ; [.3D62.0020.0002.121F0] # CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE
+121F1 ; [.3D63.0020.0002.121F1] # CUNEIFORM SIGN LAHSHU
+121F2 ; [.3D64.0020.0002.121F2] # CUNEIFORM SIGN LAL
+121F3 ; [.3D65.0020.0002.121F3] # CUNEIFORM SIGN LAL TIMES LAL
+121F4 ; [.3D66.0020.0002.121F4] # CUNEIFORM SIGN LAM
+121F5 ; [.3D67.0020.0002.121F5] # CUNEIFORM SIGN LAM TIMES KUR
+121F6 ; [.3D68.0020.0002.121F6] # CUNEIFORM SIGN LAM TIMES KUR PLUS RU
+121F7 ; [.3D69.0020.0002.121F7] # CUNEIFORM SIGN LI
+121F8 ; [.3D6A.0020.0002.121F8] # CUNEIFORM SIGN LIL
+121F9 ; [.3D6B.0020.0002.121F9] # CUNEIFORM SIGN LIMMU2
+121FA ; [.3D6C.0020.0002.121FA] # CUNEIFORM SIGN LISH
+121FB ; [.3D6D.0020.0002.121FB] # CUNEIFORM SIGN LU
+121FC ; [.3D6E.0020.0002.121FC] # CUNEIFORM SIGN LU TIMES BAD
+121FD ; [.3D6F.0020.0002.121FD] # CUNEIFORM SIGN LU2
+121FE ; [.3D70.0020.0002.121FE] # CUNEIFORM SIGN LU2 TIMES AL
+121FF ; [.3D71.0020.0002.121FF] # CUNEIFORM SIGN LU2 TIMES BAD
+12200 ; [.3D72.0020.0002.12200] # CUNEIFORM SIGN LU2 TIMES ESH2
+12201 ; [.3D73.0020.0002.12201] # CUNEIFORM SIGN LU2 TIMES ESH2 TENU
+12202 ; [.3D74.0020.0002.12202] # CUNEIFORM SIGN LU2 TIMES GAN2 TENU
+12203 ; [.3D75.0020.0002.12203] # CUNEIFORM SIGN LU2 TIMES HI TIMES BAD
+12204 ; [.3D76.0020.0002.12204] # CUNEIFORM SIGN LU2 TIMES IM
+12205 ; [.3D77.0020.0002.12205] # CUNEIFORM SIGN LU2 TIMES KAD2
+12206 ; [.3D78.0020.0002.12206] # CUNEIFORM SIGN LU2 TIMES KAD3
+12207 ; [.3D79.0020.0002.12207] # CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH
+12208 ; [.3D7A.0020.0002.12208] # CUNEIFORM SIGN LU2 TIMES KI
+12209 ; [.3D7B.0020.0002.12209] # CUNEIFORM SIGN LU2 TIMES LA PLUS ASH
+1220A ; [.3D7C.0020.0002.1220A] # CUNEIFORM SIGN LU2 TIMES LAGAB
+1220B ; [.3D7D.0020.0002.1220B] # CUNEIFORM SIGN LU2 TIMES ME PLUS EN
+1220C ; [.3D7E.0020.0002.1220C] # CUNEIFORM SIGN LU2 TIMES NE
+1220D ; [.3D7F.0020.0002.1220D] # CUNEIFORM SIGN LU2 TIMES NU
+1220E ; [.3D80.0020.0002.1220E] # CUNEIFORM SIGN LU2 TIMES SI PLUS ASH
+1220F ; [.3D81.0020.0002.1220F] # CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU
+12210 ; [.3D82.0020.0002.12210] # CUNEIFORM SIGN LU2 TIMES TUG2
+12211 ; [.3D83.0020.0002.12211] # CUNEIFORM SIGN LU2 TENU
+12212 ; [.3D84.0020.0002.12212] # CUNEIFORM SIGN LU2 CROSSING LU2
+12213 ; [.3D85.0020.0002.12213] # CUNEIFORM SIGN LU2 OPPOSING LU2
+12214 ; [.3D86.0020.0002.12214] # CUNEIFORM SIGN LU2 SQUARED
+12215 ; [.3D87.0020.0002.12215] # CUNEIFORM SIGN LU2 SHESHIG
+12216 ; [.3D88.0020.0002.12216] # CUNEIFORM SIGN LU3
+12217 ; [.3D89.0020.0002.12217] # CUNEIFORM SIGN LUGAL
+12218 ; [.3D8A.0020.0002.12218] # CUNEIFORM SIGN LUGAL OVER LUGAL
+12219 ; [.3D8B.0020.0002.12219] # CUNEIFORM SIGN LUGAL OPPOSING LUGAL
+1221A ; [.3D8C.0020.0002.1221A] # CUNEIFORM SIGN LUGAL SHESHIG
+1221B ; [.3D8D.0020.0002.1221B] # CUNEIFORM SIGN LUH
+1221C ; [.3D8E.0020.0002.1221C] # CUNEIFORM SIGN LUL
+1221D ; [.3D8F.0020.0002.1221D] # CUNEIFORM SIGN LUM
+1221E ; [.3D90.0020.0002.1221E] # CUNEIFORM SIGN LUM OVER LUM
+1221F ; [.3D91.0020.0002.1221F] # CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR
+12220 ; [.3D92.0020.0002.12220] # CUNEIFORM SIGN MA
+12221 ; [.3D93.0020.0002.12221] # CUNEIFORM SIGN MA TIMES TAK4
+12222 ; [.3D94.0020.0002.12222] # CUNEIFORM SIGN MA GUNU
+12223 ; [.3D95.0020.0002.12223] # CUNEIFORM SIGN MA2
+12224 ; [.3D96.0020.0002.12224] # CUNEIFORM SIGN MAH
+12225 ; [.3D97.0020.0002.12225] # CUNEIFORM SIGN MAR
+12226 ; [.3D98.0020.0002.12226] # CUNEIFORM SIGN MASH
+12227 ; [.3D99.0020.0002.12227] # CUNEIFORM SIGN MASH2
+12228 ; [.3D9A.0020.0002.12228] # CUNEIFORM SIGN ME
+12229 ; [.3D9B.0020.0002.12229] # CUNEIFORM SIGN MES
+1222A ; [.3D9C.0020.0002.1222A] # CUNEIFORM SIGN MI
+1222B ; [.3D9D.0020.0002.1222B] # CUNEIFORM SIGN MIN
+1222C ; [.3D9E.0020.0002.1222C] # CUNEIFORM SIGN MU
+1222D ; [.3D9F.0020.0002.1222D] # CUNEIFORM SIGN MU OVER MU
+1222E ; [.3DA0.0020.0002.1222E] # CUNEIFORM SIGN MUG
+1222F ; [.3DA1.0020.0002.1222F] # CUNEIFORM SIGN MUG GUNU
+12230 ; [.3DA2.0020.0002.12230] # CUNEIFORM SIGN MUNSUB
+12231 ; [.3DA3.0020.0002.12231] # CUNEIFORM SIGN MURGU2
+12232 ; [.3DA4.0020.0002.12232] # CUNEIFORM SIGN MUSH
+12233 ; [.3DA5.0020.0002.12233] # CUNEIFORM SIGN MUSH TIMES A
+12234 ; [.3DA6.0020.0002.12234] # CUNEIFORM SIGN MUSH TIMES KUR
+12235 ; [.3DA7.0020.0002.12235] # CUNEIFORM SIGN MUSH TIMES ZA
+12236 ; [.3DA8.0020.0002.12236] # CUNEIFORM SIGN MUSH OVER MUSH
+12237 ; [.3DA9.0020.0002.12237] # CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA
+12238 ; [.3DAA.0020.0002.12238] # CUNEIFORM SIGN MUSH CROSSING MUSH
+12239 ; [.3DAB.0020.0002.12239] # CUNEIFORM SIGN MUSH3
+1223A ; [.3DAC.0020.0002.1223A] # CUNEIFORM SIGN MUSH3 TIMES A
+1223B ; [.3DAD.0020.0002.1223B] # CUNEIFORM SIGN MUSH3 TIMES A PLUS DI
+1223C ; [.3DAE.0020.0002.1223C] # CUNEIFORM SIGN MUSH3 TIMES DI
+1223D ; [.3DAF.0020.0002.1223D] # CUNEIFORM SIGN MUSH3 GUNU
+1223E ; [.3DB0.0020.0002.1223E] # CUNEIFORM SIGN NA
+1223F ; [.3DB1.0020.0002.1223F] # CUNEIFORM SIGN NA2
+12240 ; [.3DB2.0020.0002.12240] # CUNEIFORM SIGN NAGA
+12241 ; [.3DB3.0020.0002.12241] # CUNEIFORM SIGN NAGA INVERTED
+12242 ; [.3DB4.0020.0002.12242] # CUNEIFORM SIGN NAGA TIMES SHU TENU
+12243 ; [.3DB5.0020.0002.12243] # CUNEIFORM SIGN NAGA OPPOSING NAGA
+12244 ; [.3DB6.0020.0002.12244] # CUNEIFORM SIGN NAGAR
+12245 ; [.3DB7.0020.0002.12245] # CUNEIFORM SIGN NAM NUTILLU
+12246 ; [.3DB8.0020.0002.12246] # CUNEIFORM SIGN NAM
+12247 ; [.3DB9.0020.0002.12247] # CUNEIFORM SIGN NAM2
+12248 ; [.3DBA.0020.0002.12248] # CUNEIFORM SIGN NE
+12249 ; [.3DBB.0020.0002.12249] # CUNEIFORM SIGN NE TIMES A
+1224A ; [.3DBC.0020.0002.1224A] # CUNEIFORM SIGN NE TIMES UD
+1224B ; [.3DBD.0020.0002.1224B] # CUNEIFORM SIGN NE SHESHIG
+1224C ; [.3DBE.0020.0002.1224C] # CUNEIFORM SIGN NI
+1224D ; [.3DBF.0020.0002.1224D] # CUNEIFORM SIGN NI TIMES E
+1224E ; [.3DC0.0020.0002.1224E] # CUNEIFORM SIGN NI2
+1224F ; [.3DC1.0020.0002.1224F] # CUNEIFORM SIGN NIM
+12250 ; [.3DC2.0020.0002.12250] # CUNEIFORM SIGN NIM TIMES GAN2 TENU
+12251 ; [.3DC3.0020.0002.12251] # CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU
+12252 ; [.3DC4.0020.0002.12252] # CUNEIFORM SIGN NINDA2
+12253 ; [.3DC5.0020.0002.12253] # CUNEIFORM SIGN NINDA2 TIMES AN
+12254 ; [.3DC6.0020.0002.12254] # CUNEIFORM SIGN NINDA2 TIMES ASH
+12255 ; [.3DC7.0020.0002.12255] # CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH
+12256 ; [.3DC8.0020.0002.12256] # CUNEIFORM SIGN NINDA2 TIMES GUD
+12257 ; [.3DC9.0020.0002.12257] # CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU
+12258 ; [.3DCA.0020.0002.12258] # CUNEIFORM SIGN NINDA2 TIMES NE
+12259 ; [.3DCB.0020.0002.12259] # CUNEIFORM SIGN NINDA2 TIMES NUN
+1225A ; [.3DCC.0020.0002.1225A] # CUNEIFORM SIGN NINDA2 TIMES SHE
+1225B ; [.3DCD.0020.0002.1225B] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN
+1225C ; [.3DCE.0020.0002.1225C] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH
+1225D ; [.3DCF.0020.0002.1225D] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH
+1225E ; [.3DD0.0020.0002.1225E] # CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH
+1225F ; [.3DD1.0020.0002.1225F] # CUNEIFORM SIGN NINDA2 TIMES USH
+12260 ; [.3DD2.0020.0002.12260] # CUNEIFORM SIGN NISAG
+12261 ; [.3DD3.0020.0002.12261] # CUNEIFORM SIGN NU
+12262 ; [.3DD4.0020.0002.12262] # CUNEIFORM SIGN NU11
+12263 ; [.3DD5.0020.0002.12263] # CUNEIFORM SIGN NUN
+12264 ; [.3DD6.0020.0002.12264] # CUNEIFORM SIGN NUN LAGAR TIMES GAR
+12265 ; [.3DD7.0020.0002.12265] # CUNEIFORM SIGN NUN LAGAR TIMES MASH
+12266 ; [.3DD8.0020.0002.12266] # CUNEIFORM SIGN NUN LAGAR TIMES SAL
+12267 ; [.3DD9.0020.0002.12267] # CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL
+12268 ; [.3DDA.0020.0002.12268] # CUNEIFORM SIGN NUN LAGAR TIMES USH
+12269 ; [.3DDB.0020.0002.12269] # CUNEIFORM SIGN NUN TENU
+1226A ; [.3DDC.0020.0002.1226A] # CUNEIFORM SIGN NUN OVER NUN
+1226B ; [.3DDD.0020.0002.1226B] # CUNEIFORM SIGN NUN CROSSING NUN
+1226C ; [.3DDE.0020.0002.1226C] # CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR
+1226D ; [.3DDF.0020.0002.1226D] # CUNEIFORM SIGN NUNUZ
+1226E ; [.3DE0.0020.0002.1226E] # CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB
+1226F ; [.3DE1.0020.0002.1226F] # CUNEIFORM SIGN NUNUZ AB2 TIMES BI
+12270 ; [.3DE2.0020.0002.12270] # CUNEIFORM SIGN NUNUZ AB2 TIMES DUG
+12271 ; [.3DE3.0020.0002.12271] # CUNEIFORM SIGN NUNUZ AB2 TIMES GUD
+12272 ; [.3DE4.0020.0002.12272] # CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU
+12273 ; [.3DE5.0020.0002.12273] # CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3
+12274 ; [.3DE6.0020.0002.12274] # CUNEIFORM SIGN NUNUZ AB2 TIMES LA
+12275 ; [.3DE7.0020.0002.12275] # CUNEIFORM SIGN NUNUZ AB2 TIMES NE
+12276 ; [.3DE8.0020.0002.12276] # CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3
+12277 ; [.3DE9.0020.0002.12277] # CUNEIFORM SIGN NUNUZ AB2 TIMES U2
+12278 ; [.3DEA.0020.0002.12278] # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI
+12279 ; [.3DEB.0020.0002.12279] # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U
+1227A ; [.3DEC.0020.0002.1227A] # CUNEIFORM SIGN PA
+1227B ; [.3DED.0020.0002.1227B] # CUNEIFORM SIGN PAD
+1227C ; [.3DEE.0020.0002.1227C] # CUNEIFORM SIGN PAN
+1227D ; [.3DEF.0020.0002.1227D] # CUNEIFORM SIGN PAP
+1227E ; [.3DF0.0020.0002.1227E] # CUNEIFORM SIGN PESH2
+1227F ; [.3DF1.0020.0002.1227F] # CUNEIFORM SIGN PI
+12280 ; [.3DF2.0020.0002.12280] # CUNEIFORM SIGN PI TIMES A
+12281 ; [.3DF3.0020.0002.12281] # CUNEIFORM SIGN PI TIMES AB
+12282 ; [.3DF4.0020.0002.12282] # CUNEIFORM SIGN PI TIMES BI
+12283 ; [.3DF5.0020.0002.12283] # CUNEIFORM SIGN PI TIMES BU
+12284 ; [.3DF6.0020.0002.12284] # CUNEIFORM SIGN PI TIMES E
+12285 ; [.3DF7.0020.0002.12285] # CUNEIFORM SIGN PI TIMES I
+12286 ; [.3DF8.0020.0002.12286] # CUNEIFORM SIGN PI TIMES IB
+12287 ; [.3DF9.0020.0002.12287] # CUNEIFORM SIGN PI TIMES U
+12288 ; [.3DFA.0020.0002.12288] # CUNEIFORM SIGN PI TIMES U2
+12289 ; [.3DFB.0020.0002.12289] # CUNEIFORM SIGN PI CROSSING PI
+1228A ; [.3DFC.0020.0002.1228A] # CUNEIFORM SIGN PIRIG
+1228B ; [.3DFD.0020.0002.1228B] # CUNEIFORM SIGN PIRIG TIMES KAL
+1228C ; [.3DFE.0020.0002.1228C] # CUNEIFORM SIGN PIRIG TIMES UD
+1228D ; [.3DFF.0020.0002.1228D] # CUNEIFORM SIGN PIRIG TIMES ZA
+1228E ; [.3E00.0020.0002.1228E] # CUNEIFORM SIGN PIRIG OPPOSING PIRIG
+1228F ; [.3E01.0020.0002.1228F] # CUNEIFORM SIGN RA
+12290 ; [.3E02.0020.0002.12290] # CUNEIFORM SIGN RAB
+12291 ; [.3E03.0020.0002.12291] # CUNEIFORM SIGN RI
+12292 ; [.3E04.0020.0002.12292] # CUNEIFORM SIGN RU
+12293 ; [.3E05.0020.0002.12293] # CUNEIFORM SIGN SA
+12294 ; [.3E06.0020.0002.12294] # CUNEIFORM SIGN SAG NUTILLU
+12295 ; [.3E07.0020.0002.12295] # CUNEIFORM SIGN SAG
+12296 ; [.3E08.0020.0002.12296] # CUNEIFORM SIGN SAG TIMES A
+12297 ; [.3E09.0020.0002.12297] # CUNEIFORM SIGN SAG TIMES DU
+12298 ; [.3E0A.0020.0002.12298] # CUNEIFORM SIGN SAG TIMES DUB
+12299 ; [.3E0B.0020.0002.12299] # CUNEIFORM SIGN SAG TIMES HA
+1229A ; [.3E0C.0020.0002.1229A] # CUNEIFORM SIGN SAG TIMES KAK
+1229B ; [.3E0D.0020.0002.1229B] # CUNEIFORM SIGN SAG TIMES KUR
+1229C ; [.3E0E.0020.0002.1229C] # CUNEIFORM SIGN SAG TIMES LUM
+1229D ; [.3E0F.0020.0002.1229D] # CUNEIFORM SIGN SAG TIMES MI
+1229E ; [.3E10.0020.0002.1229E] # CUNEIFORM SIGN SAG TIMES NUN
+1229F ; [.3E11.0020.0002.1229F] # CUNEIFORM SIGN SAG TIMES SAL
+122A0 ; [.3E12.0020.0002.122A0] # CUNEIFORM SIGN SAG TIMES SHID
+122A1 ; [.3E13.0020.0002.122A1] # CUNEIFORM SIGN SAG TIMES TAB
+122A2 ; [.3E14.0020.0002.122A2] # CUNEIFORM SIGN SAG TIMES U2
+122A3 ; [.3E15.0020.0002.122A3] # CUNEIFORM SIGN SAG TIMES UB
+122A4 ; [.3E16.0020.0002.122A4] # CUNEIFORM SIGN SAG TIMES UM
+122A5 ; [.3E17.0020.0002.122A5] # CUNEIFORM SIGN SAG TIMES UR
+122A6 ; [.3E18.0020.0002.122A6] # CUNEIFORM SIGN SAG TIMES USH
+122A7 ; [.3E19.0020.0002.122A7] # CUNEIFORM SIGN SAG OVER SAG
+122A8 ; [.3E1A.0020.0002.122A8] # CUNEIFORM SIGN SAG GUNU
+122A9 ; [.3E1B.0020.0002.122A9] # CUNEIFORM SIGN SAL
+122AA ; [.3E1C.0020.0002.122AA] # CUNEIFORM SIGN SAL LAGAB TIMES ASH2
+122AB ; [.3E1D.0020.0002.122AB] # CUNEIFORM SIGN SANGA2
+122AC ; [.3E1E.0020.0002.122AC] # CUNEIFORM SIGN SAR
+122AD ; [.3E1F.0020.0002.122AD] # CUNEIFORM SIGN SHA
+122AE ; [.3E20.0020.0002.122AE] # CUNEIFORM SIGN SHA3
+122AF ; [.3E21.0020.0002.122AF] # CUNEIFORM SIGN SHA3 TIMES A
+122B0 ; [.3E22.0020.0002.122B0] # CUNEIFORM SIGN SHA3 TIMES BAD
+122B1 ; [.3E23.0020.0002.122B1] # CUNEIFORM SIGN SHA3 TIMES GISH
+122B2 ; [.3E24.0020.0002.122B2] # CUNEIFORM SIGN SHA3 TIMES NE
+122B3 ; [.3E25.0020.0002.122B3] # CUNEIFORM SIGN SHA3 TIMES SHU2
+122B4 ; [.3E26.0020.0002.122B4] # CUNEIFORM SIGN SHA3 TIMES TUR
+122B5 ; [.3E27.0020.0002.122B5] # CUNEIFORM SIGN SHA3 TIMES U
+122B6 ; [.3E28.0020.0002.122B6] # CUNEIFORM SIGN SHA3 TIMES U PLUS A
+122B7 ; [.3E29.0020.0002.122B7] # CUNEIFORM SIGN SHA6
+122B8 ; [.3E2A.0020.0002.122B8] # CUNEIFORM SIGN SHAB6
+122B9 ; [.3E2B.0020.0002.122B9] # CUNEIFORM SIGN SHAR2
+122BA ; [.3E2C.0020.0002.122BA] # CUNEIFORM SIGN SHE
+122BB ; [.3E2D.0020.0002.122BB] # CUNEIFORM SIGN SHE HU
+122BC ; [.3E2E.0020.0002.122BC] # CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR
+122BD ; [.3E2F.0020.0002.122BD] # CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR
+122BE ; [.3E30.0020.0002.122BE] # CUNEIFORM SIGN SHEG9
+122BF ; [.3E31.0020.0002.122BF] # CUNEIFORM SIGN SHEN
+122C0 ; [.3E32.0020.0002.122C0] # CUNEIFORM SIGN SHESH
+122C1 ; [.3E33.0020.0002.122C1] # CUNEIFORM SIGN SHESH2
+122C2 ; [.3E34.0020.0002.122C2] # CUNEIFORM SIGN SHESHLAM
+122C3 ; [.3E35.0020.0002.122C3] # CUNEIFORM SIGN SHID
+122C4 ; [.3E36.0020.0002.122C4] # CUNEIFORM SIGN SHID TIMES A
+122C5 ; [.3E37.0020.0002.122C5] # CUNEIFORM SIGN SHID TIMES IM
+122C6 ; [.3E38.0020.0002.122C6] # CUNEIFORM SIGN SHIM
+122C7 ; [.3E39.0020.0002.122C7] # CUNEIFORM SIGN SHIM TIMES A
+122C8 ; [.3E3A.0020.0002.122C8] # CUNEIFORM SIGN SHIM TIMES BAL
+122C9 ; [.3E3B.0020.0002.122C9] # CUNEIFORM SIGN SHIM TIMES BULUG
+122CA ; [.3E3C.0020.0002.122CA] # CUNEIFORM SIGN SHIM TIMES DIN
+122CB ; [.3E3D.0020.0002.122CB] # CUNEIFORM SIGN SHIM TIMES GAR
+122CC ; [.3E3E.0020.0002.122CC] # CUNEIFORM SIGN SHIM TIMES IGI
+122CD ; [.3E3F.0020.0002.122CD] # CUNEIFORM SIGN SHIM TIMES IGI GUNU
+122CE ; [.3E40.0020.0002.122CE] # CUNEIFORM SIGN SHIM TIMES KUSHU2
+122CF ; [.3E41.0020.0002.122CF] # CUNEIFORM SIGN SHIM TIMES LUL
+122D0 ; [.3E42.0020.0002.122D0] # CUNEIFORM SIGN SHIM TIMES MUG
+122D1 ; [.3E43.0020.0002.122D1] # CUNEIFORM SIGN SHIM TIMES SAL
+122D2 ; [.3E44.0020.0002.122D2] # CUNEIFORM SIGN SHINIG
+122D3 ; [.3E45.0020.0002.122D3] # CUNEIFORM SIGN SHIR
+122D4 ; [.3E46.0020.0002.122D4] # CUNEIFORM SIGN SHIR TENU
+122D5 ; [.3E47.0020.0002.122D5] # CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR
+122D6 ; [.3E48.0020.0002.122D6] # CUNEIFORM SIGN SHITA
+122D7 ; [.3E49.0020.0002.122D7] # CUNEIFORM SIGN SHU
+122D8 ; [.3E4A.0020.0002.122D8] # CUNEIFORM SIGN SHU OVER INVERTED SHU
+122D9 ; [.3E4B.0020.0002.122D9] # CUNEIFORM SIGN SHU2
+122DA ; [.3E4C.0020.0002.122DA] # CUNEIFORM SIGN SHUBUR
+122DB ; [.3E4D.0020.0002.122DB] # CUNEIFORM SIGN SI
+122DC ; [.3E4E.0020.0002.122DC] # CUNEIFORM SIGN SI GUNU
+122DD ; [.3E4F.0020.0002.122DD] # CUNEIFORM SIGN SIG
+122DE ; [.3E50.0020.0002.122DE] # CUNEIFORM SIGN SIG4
+122DF ; [.3E51.0020.0002.122DF] # CUNEIFORM SIGN SIG4 OVER SIG4 SHU2
+122E0 ; [.3E52.0020.0002.122E0] # CUNEIFORM SIGN SIK2
+122E1 ; [.3E53.0020.0002.122E1] # CUNEIFORM SIGN SILA3
+122E2 ; [.3E54.0020.0002.122E2] # CUNEIFORM SIGN SU
+122E3 ; [.3E55.0020.0002.122E3] # CUNEIFORM SIGN SU OVER SU
+122E4 ; [.3E56.0020.0002.122E4] # CUNEIFORM SIGN SUD
+122E5 ; [.3E57.0020.0002.122E5] # CUNEIFORM SIGN SUD2
+122E6 ; [.3E58.0020.0002.122E6] # CUNEIFORM SIGN SUHUR
+122E7 ; [.3E59.0020.0002.122E7] # CUNEIFORM SIGN SUM
+122E8 ; [.3E5A.0020.0002.122E8] # CUNEIFORM SIGN SUMASH
+122E9 ; [.3E5B.0020.0002.122E9] # CUNEIFORM SIGN SUR
+122EA ; [.3E5C.0020.0002.122EA] # CUNEIFORM SIGN SUR9
+122EB ; [.3E5D.0020.0002.122EB] # CUNEIFORM SIGN TA
+122EC ; [.3E5E.0020.0002.122EC] # CUNEIFORM SIGN TA ASTERISK
+122ED ; [.3E5F.0020.0002.122ED] # CUNEIFORM SIGN TA TIMES HI
+122EE ; [.3E60.0020.0002.122EE] # CUNEIFORM SIGN TA TIMES MI
+122EF ; [.3E61.0020.0002.122EF] # CUNEIFORM SIGN TA GUNU
+122F0 ; [.3E62.0020.0002.122F0] # CUNEIFORM SIGN TAB
+122F1 ; [.3E63.0020.0002.122F1] # CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH
+122F2 ; [.3E64.0020.0002.122F2] # CUNEIFORM SIGN TAB SQUARED
+122F3 ; [.3E65.0020.0002.122F3] # CUNEIFORM SIGN TAG
+122F4 ; [.3E66.0020.0002.122F4] # CUNEIFORM SIGN TAG TIMES BI
+122F5 ; [.3E67.0020.0002.122F5] # CUNEIFORM SIGN TAG TIMES GUD
+122F6 ; [.3E68.0020.0002.122F6] # CUNEIFORM SIGN TAG TIMES SHE
+122F7 ; [.3E69.0020.0002.122F7] # CUNEIFORM SIGN TAG TIMES SHU
+122F8 ; [.3E6A.0020.0002.122F8] # CUNEIFORM SIGN TAG TIMES TUG2
+122F9 ; [.3E6B.0020.0002.122F9] # CUNEIFORM SIGN TAG TIMES UD
+122FA ; [.3E6C.0020.0002.122FA] # CUNEIFORM SIGN TAK4
+122FB ; [.3E6D.0020.0002.122FB] # CUNEIFORM SIGN TAR
+122FC ; [.3E6E.0020.0002.122FC] # CUNEIFORM SIGN TE
+122FD ; [.3E6F.0020.0002.122FD] # CUNEIFORM SIGN TE GUNU
+122FE ; [.3E70.0020.0002.122FE] # CUNEIFORM SIGN TI
+122FF ; [.3E71.0020.0002.122FF] # CUNEIFORM SIGN TI TENU
+12300 ; [.3E72.0020.0002.12300] # CUNEIFORM SIGN TIL
+12301 ; [.3E73.0020.0002.12301] # CUNEIFORM SIGN TIR
+12302 ; [.3E74.0020.0002.12302] # CUNEIFORM SIGN TIR TIMES TAK4
+12303 ; [.3E75.0020.0002.12303] # CUNEIFORM SIGN TIR OVER TIR
+12304 ; [.3E76.0020.0002.12304] # CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR
+12305 ; [.3E77.0020.0002.12305] # CUNEIFORM SIGN TU
+12306 ; [.3E78.0020.0002.12306] # CUNEIFORM SIGN TUG2
+12307 ; [.3E79.0020.0002.12307] # CUNEIFORM SIGN TUK
+12308 ; [.3E7A.0020.0002.12308] # CUNEIFORM SIGN TUM
+12309 ; [.3E7B.0020.0002.12309] # CUNEIFORM SIGN TUR
+1230A ; [.3E7C.0020.0002.1230A] # CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA
+1230B ; [.3E7D.0020.0002.1230B] # CUNEIFORM SIGN U
+1230C ; [.3E7E.0020.0002.1230C] # CUNEIFORM SIGN U GUD
+1230D ; [.3E7F.0020.0002.1230D] # CUNEIFORM SIGN U U U
+1230E ; [.3E80.0020.0002.1230E] # CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR
+1230F ; [.3E81.0020.0002.1230F] # CUNEIFORM SIGN U OVER U SUR OVER SUR
+12310 ; [.3E82.0020.0002.12310] # CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED
+12311 ; [.3E83.0020.0002.12311] # CUNEIFORM SIGN U2
+12312 ; [.3E84.0020.0002.12312] # CUNEIFORM SIGN UB
+12313 ; [.3E85.0020.0002.12313] # CUNEIFORM SIGN UD
+12314 ; [.3E86.0020.0002.12314] # CUNEIFORM SIGN UD KUSHU2
+12315 ; [.3E87.0020.0002.12315] # CUNEIFORM SIGN UD TIMES BAD
+12316 ; [.3E88.0020.0002.12316] # CUNEIFORM SIGN UD TIMES MI
+12317 ; [.3E89.0020.0002.12317] # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U
+12318 ; [.3E8A.0020.0002.12318] # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU
+12319 ; [.3E8B.0020.0002.12319] # CUNEIFORM SIGN UD GUNU
+1231A ; [.3E8C.0020.0002.1231A] # CUNEIFORM SIGN UD SHESHIG
+1231B ; [.3E8D.0020.0002.1231B] # CUNEIFORM SIGN UD SHESHIG TIMES BAD
+1231C ; [.3E8E.0020.0002.1231C] # CUNEIFORM SIGN UDUG
+1231D ; [.3E8F.0020.0002.1231D] # CUNEIFORM SIGN UM
+1231E ; [.3E90.0020.0002.1231E] # CUNEIFORM SIGN UM TIMES LAGAB
+1231F ; [.3E91.0020.0002.1231F] # CUNEIFORM SIGN UM TIMES ME PLUS DA
+12320 ; [.3E92.0020.0002.12320] # CUNEIFORM SIGN UM TIMES SHA3
+12321 ; [.3E93.0020.0002.12321] # CUNEIFORM SIGN UM TIMES U
+12322 ; [.3E94.0020.0002.12322] # CUNEIFORM SIGN UMBIN
+12323 ; [.3E95.0020.0002.12323] # CUNEIFORM SIGN UMUM
+12324 ; [.3E96.0020.0002.12324] # CUNEIFORM SIGN UMUM TIMES KASKAL
+12325 ; [.3E97.0020.0002.12325] # CUNEIFORM SIGN UMUM TIMES PA
+12326 ; [.3E98.0020.0002.12326] # CUNEIFORM SIGN UN
+12327 ; [.3E99.0020.0002.12327] # CUNEIFORM SIGN UN GUNU
+12328 ; [.3E9A.0020.0002.12328] # CUNEIFORM SIGN UR
+12329 ; [.3E9B.0020.0002.12329] # CUNEIFORM SIGN UR CROSSING UR
+1232A ; [.3E9C.0020.0002.1232A] # CUNEIFORM SIGN UR SHESHIG
+1232B ; [.3E9D.0020.0002.1232B] # CUNEIFORM SIGN UR2
+1232C ; [.3E9E.0020.0002.1232C] # CUNEIFORM SIGN UR2 TIMES A PLUS HA
+1232D ; [.3E9F.0020.0002.1232D] # CUNEIFORM SIGN UR2 TIMES A PLUS NA
+1232E ; [.3EA0.0020.0002.1232E] # CUNEIFORM SIGN UR2 TIMES AL
+1232F ; [.3EA1.0020.0002.1232F] # CUNEIFORM SIGN UR2 TIMES HA
+12330 ; [.3EA2.0020.0002.12330] # CUNEIFORM SIGN UR2 TIMES NUN
+12331 ; [.3EA3.0020.0002.12331] # CUNEIFORM SIGN UR2 TIMES U2
+12332 ; [.3EA4.0020.0002.12332] # CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH
+12333 ; [.3EA5.0020.0002.12333] # CUNEIFORM SIGN UR2 TIMES U2 PLUS BI
+12334 ; [.3EA6.0020.0002.12334] # CUNEIFORM SIGN UR4
+12335 ; [.3EA7.0020.0002.12335] # CUNEIFORM SIGN URI
+12336 ; [.3EA8.0020.0002.12336] # CUNEIFORM SIGN URI3
+12337 ; [.3EA9.0020.0002.12337] # CUNEIFORM SIGN URU
+12338 ; [.3EAA.0020.0002.12338] # CUNEIFORM SIGN URU TIMES A
+12339 ; [.3EAB.0020.0002.12339] # CUNEIFORM SIGN URU TIMES ASHGAB
+1233A ; [.3EAC.0020.0002.1233A] # CUNEIFORM SIGN URU TIMES BAR
+1233B ; [.3EAD.0020.0002.1233B] # CUNEIFORM SIGN URU TIMES DUN
+1233C ; [.3EAE.0020.0002.1233C] # CUNEIFORM SIGN URU TIMES GA
+1233D ; [.3EAF.0020.0002.1233D] # CUNEIFORM SIGN URU TIMES GAL
+1233E ; [.3EB0.0020.0002.1233E] # CUNEIFORM SIGN URU TIMES GAN2 TENU
+1233F ; [.3EB1.0020.0002.1233F] # CUNEIFORM SIGN URU TIMES GAR
+12340 ; [.3EB2.0020.0002.12340] # CUNEIFORM SIGN URU TIMES GU
+12341 ; [.3EB3.0020.0002.12341] # CUNEIFORM SIGN URU TIMES HA
+12342 ; [.3EB4.0020.0002.12342] # CUNEIFORM SIGN URU TIMES IGI
+12343 ; [.3EB5.0020.0002.12343] # CUNEIFORM SIGN URU TIMES IM
+12344 ; [.3EB6.0020.0002.12344] # CUNEIFORM SIGN URU TIMES ISH
+12345 ; [.3EB7.0020.0002.12345] # CUNEIFORM SIGN URU TIMES KI
+12346 ; [.3EB8.0020.0002.12346] # CUNEIFORM SIGN URU TIMES LUM
+12347 ; [.3EB9.0020.0002.12347] # CUNEIFORM SIGN URU TIMES MIN
+12348 ; [.3EBA.0020.0002.12348] # CUNEIFORM SIGN URU TIMES PA
+12349 ; [.3EBB.0020.0002.12349] # CUNEIFORM SIGN URU TIMES SHE
+1234A ; [.3EBC.0020.0002.1234A] # CUNEIFORM SIGN URU TIMES SIG4
+1234B ; [.3EBD.0020.0002.1234B] # CUNEIFORM SIGN URU TIMES TU
+1234C ; [.3EBE.0020.0002.1234C] # CUNEIFORM SIGN URU TIMES U PLUS GUD
+1234D ; [.3EBF.0020.0002.1234D] # CUNEIFORM SIGN URU TIMES UD
+1234E ; [.3EC0.0020.0002.1234E] # CUNEIFORM SIGN URU TIMES URUDA
+1234F ; [.3EC1.0020.0002.1234F] # CUNEIFORM SIGN URUDA
+12350 ; [.3EC2.0020.0002.12350] # CUNEIFORM SIGN URUDA TIMES U
+12351 ; [.3EC3.0020.0002.12351] # CUNEIFORM SIGN USH
+12352 ; [.3EC4.0020.0002.12352] # CUNEIFORM SIGN USH TIMES A
+12353 ; [.3EC5.0020.0002.12353] # CUNEIFORM SIGN USH TIMES KU
+12354 ; [.3EC6.0020.0002.12354] # CUNEIFORM SIGN USH TIMES KUR
+12355 ; [.3EC7.0020.0002.12355] # CUNEIFORM SIGN USH TIMES TAK4
+12356 ; [.3EC8.0020.0002.12356] # CUNEIFORM SIGN USHX
+12357 ; [.3EC9.0020.0002.12357] # CUNEIFORM SIGN USH2
+12358 ; [.3ECA.0020.0002.12358] # CUNEIFORM SIGN USHUMX
+12359 ; [.3ECB.0020.0002.12359] # CUNEIFORM SIGN UTUKI
+1235A ; [.3ECC.0020.0002.1235A] # CUNEIFORM SIGN UZ3
+1235B ; [.3ECD.0020.0002.1235B] # CUNEIFORM SIGN UZ3 TIMES KASKAL
+1235C ; [.3ECE.0020.0002.1235C] # CUNEIFORM SIGN UZU
+1235D ; [.3ECF.0020.0002.1235D] # CUNEIFORM SIGN ZA
+1235E ; [.3ED0.0020.0002.1235E] # CUNEIFORM SIGN ZA TENU
+1235F ; [.3ED1.0020.0002.1235F] # CUNEIFORM SIGN ZA SQUARED TIMES KUR
+12360 ; [.3ED2.0020.0002.12360] # CUNEIFORM SIGN ZAG
+12361 ; [.3ED3.0020.0002.12361] # CUNEIFORM SIGN ZAMX
+12362 ; [.3ED4.0020.0002.12362] # CUNEIFORM SIGN ZE2
+12363 ; [.3ED5.0020.0002.12363] # CUNEIFORM SIGN ZI
+12364 ; [.3ED6.0020.0002.12364] # CUNEIFORM SIGN ZI OVER ZI
+12365 ; [.3ED7.0020.0002.12365] # CUNEIFORM SIGN ZI3
+12366 ; [.3ED8.0020.0002.12366] # CUNEIFORM SIGN ZIB
+12367 ; [.3ED9.0020.0002.12367] # CUNEIFORM SIGN ZIB KABA TENU
+12368 ; [.3EDA.0020.0002.12368] # CUNEIFORM SIGN ZIG
+12369 ; [.3EDB.0020.0002.12369] # CUNEIFORM SIGN ZIZ2
+1236A ; [.3EDC.0020.0002.1236A] # CUNEIFORM SIGN ZU
+1236B ; [.3EDD.0020.0002.1236B] # CUNEIFORM SIGN ZU5
+1236C ; [.3EDE.0020.0002.1236C] # CUNEIFORM SIGN ZU5 TIMES A
+1236D ; [.3EDF.0020.0002.1236D] # CUNEIFORM SIGN ZUBUR
+1236E ; [.3EE0.0020.0002.1236E] # CUNEIFORM SIGN ZUM
+13000 ; [.3EE1.0020.0002.13000] # EGYPTIAN HIEROGLYPH A001
+13001 ; [.3EE2.0020.0002.13001] # EGYPTIAN HIEROGLYPH A002
+13002 ; [.3EE3.0020.0002.13002] # EGYPTIAN HIEROGLYPH A003
+13003 ; [.3EE4.0020.0002.13003] # EGYPTIAN HIEROGLYPH A004
+13004 ; [.3EE5.0020.0002.13004] # EGYPTIAN HIEROGLYPH A005
+13005 ; [.3EE6.0020.0002.13005] # EGYPTIAN HIEROGLYPH A005A
+13006 ; [.3EE7.0020.0002.13006] # EGYPTIAN HIEROGLYPH A006
+13007 ; [.3EE8.0020.0002.13007] # EGYPTIAN HIEROGLYPH A006A
+13008 ; [.3EE9.0020.0002.13008] # EGYPTIAN HIEROGLYPH A006B
+13009 ; [.3EEA.0020.0002.13009] # EGYPTIAN HIEROGLYPH A007
+1300A ; [.3EEB.0020.0002.1300A] # EGYPTIAN HIEROGLYPH A008
+1300B ; [.3EEC.0020.0002.1300B] # EGYPTIAN HIEROGLYPH A009
+1300C ; [.3EED.0020.0002.1300C] # EGYPTIAN HIEROGLYPH A010
+1300D ; [.3EEE.0020.0002.1300D] # EGYPTIAN HIEROGLYPH A011
+1300E ; [.3EEF.0020.0002.1300E] # EGYPTIAN HIEROGLYPH A012
+1300F ; [.3EF0.0020.0002.1300F] # EGYPTIAN HIEROGLYPH A013
+13010 ; [.3EF1.0020.0002.13010] # EGYPTIAN HIEROGLYPH A014
+13011 ; [.3EF2.0020.0002.13011] # EGYPTIAN HIEROGLYPH A014A
+13012 ; [.3EF3.0020.0002.13012] # EGYPTIAN HIEROGLYPH A015
+13013 ; [.3EF4.0020.0002.13013] # EGYPTIAN HIEROGLYPH A016
+13014 ; [.3EF5.0020.0002.13014] # EGYPTIAN HIEROGLYPH A017
+13015 ; [.3EF6.0020.0002.13015] # EGYPTIAN HIEROGLYPH A017A
+13016 ; [.3EF7.0020.0002.13016] # EGYPTIAN HIEROGLYPH A018
+13017 ; [.3EF8.0020.0002.13017] # EGYPTIAN HIEROGLYPH A019
+13018 ; [.3EF9.0020.0002.13018] # EGYPTIAN HIEROGLYPH A020
+13019 ; [.3EFA.0020.0002.13019] # EGYPTIAN HIEROGLYPH A021
+1301A ; [.3EFB.0020.0002.1301A] # EGYPTIAN HIEROGLYPH A022
+1301B ; [.3EFC.0020.0002.1301B] # EGYPTIAN HIEROGLYPH A023
+1301C ; [.3EFD.0020.0002.1301C] # EGYPTIAN HIEROGLYPH A024
+1301D ; [.3EFE.0020.0002.1301D] # EGYPTIAN HIEROGLYPH A025
+1301E ; [.3EFF.0020.0002.1301E] # EGYPTIAN HIEROGLYPH A026
+1301F ; [.3F00.0020.0002.1301F] # EGYPTIAN HIEROGLYPH A027
+13020 ; [.3F01.0020.0002.13020] # EGYPTIAN HIEROGLYPH A028
+13021 ; [.3F02.0020.0002.13021] # EGYPTIAN HIEROGLYPH A029
+13022 ; [.3F03.0020.0002.13022] # EGYPTIAN HIEROGLYPH A030
+13023 ; [.3F04.0020.0002.13023] # EGYPTIAN HIEROGLYPH A031
+13024 ; [.3F05.0020.0002.13024] # EGYPTIAN HIEROGLYPH A032
+13025 ; [.3F06.0020.0002.13025] # EGYPTIAN HIEROGLYPH A032A
+13026 ; [.3F07.0020.0002.13026] # EGYPTIAN HIEROGLYPH A033
+13027 ; [.3F08.0020.0002.13027] # EGYPTIAN HIEROGLYPH A034
+13028 ; [.3F09.0020.0002.13028] # EGYPTIAN HIEROGLYPH A035
+13029 ; [.3F0A.0020.0002.13029] # EGYPTIAN HIEROGLYPH A036
+1302A ; [.3F0B.0020.0002.1302A] # EGYPTIAN HIEROGLYPH A037
+1302B ; [.3F0C.0020.0002.1302B] # EGYPTIAN HIEROGLYPH A038
+1302C ; [.3F0D.0020.0002.1302C] # EGYPTIAN HIEROGLYPH A039
+1302D ; [.3F0E.0020.0002.1302D] # EGYPTIAN HIEROGLYPH A040
+1302E ; [.3F0F.0020.0002.1302E] # EGYPTIAN HIEROGLYPH A040A
+1302F ; [.3F10.0020.0002.1302F] # EGYPTIAN HIEROGLYPH A041
+13030 ; [.3F11.0020.0002.13030] # EGYPTIAN HIEROGLYPH A042
+13031 ; [.3F12.0020.0002.13031] # EGYPTIAN HIEROGLYPH A042A
+13032 ; [.3F13.0020.0002.13032] # EGYPTIAN HIEROGLYPH A043
+13033 ; [.3F14.0020.0002.13033] # EGYPTIAN HIEROGLYPH A043A
+13034 ; [.3F15.0020.0002.13034] # EGYPTIAN HIEROGLYPH A044
+13035 ; [.3F16.0020.0002.13035] # EGYPTIAN HIEROGLYPH A045
+13036 ; [.3F17.0020.0002.13036] # EGYPTIAN HIEROGLYPH A045A
+13037 ; [.3F18.0020.0002.13037] # EGYPTIAN HIEROGLYPH A046
+13038 ; [.3F19.0020.0002.13038] # EGYPTIAN HIEROGLYPH A047
+13039 ; [.3F1A.0020.0002.13039] # EGYPTIAN HIEROGLYPH A048
+1303A ; [.3F1B.0020.0002.1303A] # EGYPTIAN HIEROGLYPH A049
+1303B ; [.3F1C.0020.0002.1303B] # EGYPTIAN HIEROGLYPH A050
+1303C ; [.3F1D.0020.0002.1303C] # EGYPTIAN HIEROGLYPH A051
+1303D ; [.3F1E.0020.0002.1303D] # EGYPTIAN HIEROGLYPH A052
+1303E ; [.3F1F.0020.0002.1303E] # EGYPTIAN HIEROGLYPH A053
+1303F ; [.3F20.0020.0002.1303F] # EGYPTIAN HIEROGLYPH A054
+13040 ; [.3F21.0020.0002.13040] # EGYPTIAN HIEROGLYPH A055
+13041 ; [.3F22.0020.0002.13041] # EGYPTIAN HIEROGLYPH A056
+13042 ; [.3F23.0020.0002.13042] # EGYPTIAN HIEROGLYPH A057
+13043 ; [.3F24.0020.0002.13043] # EGYPTIAN HIEROGLYPH A058
+13044 ; [.3F25.0020.0002.13044] # EGYPTIAN HIEROGLYPH A059
+13045 ; [.3F26.0020.0002.13045] # EGYPTIAN HIEROGLYPH A060
+13046 ; [.3F27.0020.0002.13046] # EGYPTIAN HIEROGLYPH A061
+13047 ; [.3F28.0020.0002.13047] # EGYPTIAN HIEROGLYPH A062
+13048 ; [.3F29.0020.0002.13048] # EGYPTIAN HIEROGLYPH A063
+13049 ; [.3F2A.0020.0002.13049] # EGYPTIAN HIEROGLYPH A064
+1304A ; [.3F2B.0020.0002.1304A] # EGYPTIAN HIEROGLYPH A065
+1304B ; [.3F2C.0020.0002.1304B] # EGYPTIAN HIEROGLYPH A066
+1304C ; [.3F2D.0020.0002.1304C] # EGYPTIAN HIEROGLYPH A067
+1304D ; [.3F2E.0020.0002.1304D] # EGYPTIAN HIEROGLYPH A068
+1304E ; [.3F2F.0020.0002.1304E] # EGYPTIAN HIEROGLYPH A069
+1304F ; [.3F30.0020.0002.1304F] # EGYPTIAN HIEROGLYPH A070
+13050 ; [.3F31.0020.0002.13050] # EGYPTIAN HIEROGLYPH B001
+13051 ; [.3F32.0020.0002.13051] # EGYPTIAN HIEROGLYPH B002
+13052 ; [.3F33.0020.0002.13052] # EGYPTIAN HIEROGLYPH B003
+13053 ; [.3F34.0020.0002.13053] # EGYPTIAN HIEROGLYPH B004
+13054 ; [.3F35.0020.0002.13054] # EGYPTIAN HIEROGLYPH B005
+13055 ; [.3F36.0020.0002.13055] # EGYPTIAN HIEROGLYPH B005A
+13056 ; [.3F37.0020.0002.13056] # EGYPTIAN HIEROGLYPH B006
+13057 ; [.3F38.0020.0002.13057] # EGYPTIAN HIEROGLYPH B007
+13058 ; [.3F39.0020.0002.13058] # EGYPTIAN HIEROGLYPH B008
+13059 ; [.3F3A.0020.0002.13059] # EGYPTIAN HIEROGLYPH B009
+1305A ; [.3F3B.0020.0002.1305A] # EGYPTIAN HIEROGLYPH C001
+1305B ; [.3F3C.0020.0002.1305B] # EGYPTIAN HIEROGLYPH C002
+1305C ; [.3F3D.0020.0002.1305C] # EGYPTIAN HIEROGLYPH C002A
+1305D ; [.3F3E.0020.0002.1305D] # EGYPTIAN HIEROGLYPH C002B
+1305E ; [.3F3F.0020.0002.1305E] # EGYPTIAN HIEROGLYPH C002C
+1305F ; [.3F40.0020.0002.1305F] # EGYPTIAN HIEROGLYPH C003
+13060 ; [.3F41.0020.0002.13060] # EGYPTIAN HIEROGLYPH C004
+13061 ; [.3F42.0020.0002.13061] # EGYPTIAN HIEROGLYPH C005
+13062 ; [.3F43.0020.0002.13062] # EGYPTIAN HIEROGLYPH C006
+13063 ; [.3F44.0020.0002.13063] # EGYPTIAN HIEROGLYPH C007
+13064 ; [.3F45.0020.0002.13064] # EGYPTIAN HIEROGLYPH C008
+13065 ; [.3F46.0020.0002.13065] # EGYPTIAN HIEROGLYPH C009
+13066 ; [.3F47.0020.0002.13066] # EGYPTIAN HIEROGLYPH C010
+13067 ; [.3F48.0020.0002.13067] # EGYPTIAN HIEROGLYPH C010A
+13068 ; [.3F49.0020.0002.13068] # EGYPTIAN HIEROGLYPH C011
+13069 ; [.3F4A.0020.0002.13069] # EGYPTIAN HIEROGLYPH C012
+1306A ; [.3F4B.0020.0002.1306A] # EGYPTIAN HIEROGLYPH C013
+1306B ; [.3F4C.0020.0002.1306B] # EGYPTIAN HIEROGLYPH C014
+1306C ; [.3F4D.0020.0002.1306C] # EGYPTIAN HIEROGLYPH C015
+1306D ; [.3F4E.0020.0002.1306D] # EGYPTIAN HIEROGLYPH C016
+1306E ; [.3F4F.0020.0002.1306E] # EGYPTIAN HIEROGLYPH C017
+1306F ; [.3F50.0020.0002.1306F] # EGYPTIAN HIEROGLYPH C018
+13070 ; [.3F51.0020.0002.13070] # EGYPTIAN HIEROGLYPH C019
+13071 ; [.3F52.0020.0002.13071] # EGYPTIAN HIEROGLYPH C020
+13072 ; [.3F53.0020.0002.13072] # EGYPTIAN HIEROGLYPH C021
+13073 ; [.3F54.0020.0002.13073] # EGYPTIAN HIEROGLYPH C022
+13074 ; [.3F55.0020.0002.13074] # EGYPTIAN HIEROGLYPH C023
+13075 ; [.3F56.0020.0002.13075] # EGYPTIAN HIEROGLYPH C024
+13076 ; [.3F57.0020.0002.13076] # EGYPTIAN HIEROGLYPH D001
+13077 ; [.3F58.0020.0002.13077] # EGYPTIAN HIEROGLYPH D002
+13078 ; [.3F59.0020.0002.13078] # EGYPTIAN HIEROGLYPH D003
+13079 ; [.3F5A.0020.0002.13079] # EGYPTIAN HIEROGLYPH D004
+1307A ; [.3F5B.0020.0002.1307A] # EGYPTIAN HIEROGLYPH D005
+1307B ; [.3F5C.0020.0002.1307B] # EGYPTIAN HIEROGLYPH D006
+1307C ; [.3F5D.0020.0002.1307C] # EGYPTIAN HIEROGLYPH D007
+1307D ; [.3F5E.0020.0002.1307D] # EGYPTIAN HIEROGLYPH D008
+1307E ; [.3F5F.0020.0002.1307E] # EGYPTIAN HIEROGLYPH D008A
+1307F ; [.3F60.0020.0002.1307F] # EGYPTIAN HIEROGLYPH D009
+13080 ; [.3F61.0020.0002.13080] # EGYPTIAN HIEROGLYPH D010
+13081 ; [.3F62.0020.0002.13081] # EGYPTIAN HIEROGLYPH D011
+13082 ; [.3F63.0020.0002.13082] # EGYPTIAN HIEROGLYPH D012
+13083 ; [.3F64.0020.0002.13083] # EGYPTIAN HIEROGLYPH D013
+13084 ; [.3F65.0020.0002.13084] # EGYPTIAN HIEROGLYPH D014
+13085 ; [.3F66.0020.0002.13085] # EGYPTIAN HIEROGLYPH D015
+13086 ; [.3F67.0020.0002.13086] # EGYPTIAN HIEROGLYPH D016
+13087 ; [.3F68.0020.0002.13087] # EGYPTIAN HIEROGLYPH D017
+13088 ; [.3F69.0020.0002.13088] # EGYPTIAN HIEROGLYPH D018
+13089 ; [.3F6A.0020.0002.13089] # EGYPTIAN HIEROGLYPH D019
+1308A ; [.3F6B.0020.0002.1308A] # EGYPTIAN HIEROGLYPH D020
+1308B ; [.3F6C.0020.0002.1308B] # EGYPTIAN HIEROGLYPH D021
+1308C ; [.3F6D.0020.0002.1308C] # EGYPTIAN HIEROGLYPH D022
+1308D ; [.3F6E.0020.0002.1308D] # EGYPTIAN HIEROGLYPH D023
+1308E ; [.3F6F.0020.0002.1308E] # EGYPTIAN HIEROGLYPH D024
+1308F ; [.3F70.0020.0002.1308F] # EGYPTIAN HIEROGLYPH D025
+13090 ; [.3F71.0020.0002.13090] # EGYPTIAN HIEROGLYPH D026
+13091 ; [.3F72.0020.0002.13091] # EGYPTIAN HIEROGLYPH D027
+13092 ; [.3F73.0020.0002.13092] # EGYPTIAN HIEROGLYPH D027A
+13093 ; [.3F74.0020.0002.13093] # EGYPTIAN HIEROGLYPH D028
+13094 ; [.3F75.0020.0002.13094] # EGYPTIAN HIEROGLYPH D029
+13095 ; [.3F76.0020.0002.13095] # EGYPTIAN HIEROGLYPH D030
+13096 ; [.3F77.0020.0002.13096] # EGYPTIAN HIEROGLYPH D031
+13097 ; [.3F78.0020.0002.13097] # EGYPTIAN HIEROGLYPH D031A
+13098 ; [.3F79.0020.0002.13098] # EGYPTIAN HIEROGLYPH D032
+13099 ; [.3F7A.0020.0002.13099] # EGYPTIAN HIEROGLYPH D033
+1309A ; [.3F7B.0020.0002.1309A] # EGYPTIAN HIEROGLYPH D034
+1309B ; [.3F7C.0020.0002.1309B] # EGYPTIAN HIEROGLYPH D034A
+1309C ; [.3F7D.0020.0002.1309C] # EGYPTIAN HIEROGLYPH D035
+1309D ; [.3F7E.0020.0002.1309D] # EGYPTIAN HIEROGLYPH D036
+1309E ; [.3F7F.0020.0002.1309E] # EGYPTIAN HIEROGLYPH D037
+1309F ; [.3F80.0020.0002.1309F] # EGYPTIAN HIEROGLYPH D038
+130A0 ; [.3F81.0020.0002.130A0] # EGYPTIAN HIEROGLYPH D039
+130A1 ; [.3F82.0020.0002.130A1] # EGYPTIAN HIEROGLYPH D040
+130A2 ; [.3F83.0020.0002.130A2] # EGYPTIAN HIEROGLYPH D041
+130A3 ; [.3F84.0020.0002.130A3] # EGYPTIAN HIEROGLYPH D042
+130A4 ; [.3F85.0020.0002.130A4] # EGYPTIAN HIEROGLYPH D043
+130A5 ; [.3F86.0020.0002.130A5] # EGYPTIAN HIEROGLYPH D044
+130A6 ; [.3F87.0020.0002.130A6] # EGYPTIAN HIEROGLYPH D045
+130A7 ; [.3F88.0020.0002.130A7] # EGYPTIAN HIEROGLYPH D046
+130A8 ; [.3F89.0020.0002.130A8] # EGYPTIAN HIEROGLYPH D046A
+130A9 ; [.3F8A.0020.0002.130A9] # EGYPTIAN HIEROGLYPH D047
+130AA ; [.3F8B.0020.0002.130AA] # EGYPTIAN HIEROGLYPH D048
+130AB ; [.3F8C.0020.0002.130AB] # EGYPTIAN HIEROGLYPH D048A
+130AC ; [.3F8D.0020.0002.130AC] # EGYPTIAN HIEROGLYPH D049
+130AD ; [.3F8E.0020.0002.130AD] # EGYPTIAN HIEROGLYPH D050
+130AE ; [.3F8F.0020.0002.130AE] # EGYPTIAN HIEROGLYPH D050A
+130AF ; [.3F90.0020.0002.130AF] # EGYPTIAN HIEROGLYPH D050B
+130B0 ; [.3F91.0020.0002.130B0] # EGYPTIAN HIEROGLYPH D050C
+130B1 ; [.3F92.0020.0002.130B1] # EGYPTIAN HIEROGLYPH D050D
+130B2 ; [.3F93.0020.0002.130B2] # EGYPTIAN HIEROGLYPH D050E
+130B3 ; [.3F94.0020.0002.130B3] # EGYPTIAN HIEROGLYPH D050F
+130B4 ; [.3F95.0020.0002.130B4] # EGYPTIAN HIEROGLYPH D050G
+130B5 ; [.3F96.0020.0002.130B5] # EGYPTIAN HIEROGLYPH D050H
+130B6 ; [.3F97.0020.0002.130B6] # EGYPTIAN HIEROGLYPH D050I
+130B7 ; [.3F98.0020.0002.130B7] # EGYPTIAN HIEROGLYPH D051
+130B8 ; [.3F99.0020.0002.130B8] # EGYPTIAN HIEROGLYPH D052
+130B9 ; [.3F9A.0020.0002.130B9] # EGYPTIAN HIEROGLYPH D052A
+130BA ; [.3F9B.0020.0002.130BA] # EGYPTIAN HIEROGLYPH D053
+130BB ; [.3F9C.0020.0002.130BB] # EGYPTIAN HIEROGLYPH D054
+130BC ; [.3F9D.0020.0002.130BC] # EGYPTIAN HIEROGLYPH D054A
+130BD ; [.3F9E.0020.0002.130BD] # EGYPTIAN HIEROGLYPH D055
+130BE ; [.3F9F.0020.0002.130BE] # EGYPTIAN HIEROGLYPH D056
+130BF ; [.3FA0.0020.0002.130BF] # EGYPTIAN HIEROGLYPH D057
+130C0 ; [.3FA1.0020.0002.130C0] # EGYPTIAN HIEROGLYPH D058
+130C1 ; [.3FA2.0020.0002.130C1] # EGYPTIAN HIEROGLYPH D059
+130C2 ; [.3FA3.0020.0002.130C2] # EGYPTIAN HIEROGLYPH D060
+130C3 ; [.3FA4.0020.0002.130C3] # EGYPTIAN HIEROGLYPH D061
+130C4 ; [.3FA5.0020.0002.130C4] # EGYPTIAN HIEROGLYPH D062
+130C5 ; [.3FA6.0020.0002.130C5] # EGYPTIAN HIEROGLYPH D063
+130C6 ; [.3FA7.0020.0002.130C6] # EGYPTIAN HIEROGLYPH D064
+130C7 ; [.3FA8.0020.0002.130C7] # EGYPTIAN HIEROGLYPH D065
+130C8 ; [.3FA9.0020.0002.130C8] # EGYPTIAN HIEROGLYPH D066
+130C9 ; [.3FAA.0020.0002.130C9] # EGYPTIAN HIEROGLYPH D067
+130CA ; [.3FAB.0020.0002.130CA] # EGYPTIAN HIEROGLYPH D067A
+130CB ; [.3FAC.0020.0002.130CB] # EGYPTIAN HIEROGLYPH D067B
+130CC ; [.3FAD.0020.0002.130CC] # EGYPTIAN HIEROGLYPH D067C
+130CD ; [.3FAE.0020.0002.130CD] # EGYPTIAN HIEROGLYPH D067D
+130CE ; [.3FAF.0020.0002.130CE] # EGYPTIAN HIEROGLYPH D067E
+130CF ; [.3FB0.0020.0002.130CF] # EGYPTIAN HIEROGLYPH D067F
+130D0 ; [.3FB1.0020.0002.130D0] # EGYPTIAN HIEROGLYPH D067G
+130D1 ; [.3FB2.0020.0002.130D1] # EGYPTIAN HIEROGLYPH D067H
+130D2 ; [.3FB3.0020.0002.130D2] # EGYPTIAN HIEROGLYPH E001
+130D3 ; [.3FB4.0020.0002.130D3] # EGYPTIAN HIEROGLYPH E002
+130D4 ; [.3FB5.0020.0002.130D4] # EGYPTIAN HIEROGLYPH E003
+130D5 ; [.3FB6.0020.0002.130D5] # EGYPTIAN HIEROGLYPH E004
+130D6 ; [.3FB7.0020.0002.130D6] # EGYPTIAN HIEROGLYPH E005
+130D7 ; [.3FB8.0020.0002.130D7] # EGYPTIAN HIEROGLYPH E006
+130D8 ; [.3FB9.0020.0002.130D8] # EGYPTIAN HIEROGLYPH E007
+130D9 ; [.3FBA.0020.0002.130D9] # EGYPTIAN HIEROGLYPH E008
+130DA ; [.3FBB.0020.0002.130DA] # EGYPTIAN HIEROGLYPH E008A
+130DB ; [.3FBC.0020.0002.130DB] # EGYPTIAN HIEROGLYPH E009
+130DC ; [.3FBD.0020.0002.130DC] # EGYPTIAN HIEROGLYPH E009A
+130DD ; [.3FBE.0020.0002.130DD] # EGYPTIAN HIEROGLYPH E010
+130DE ; [.3FBF.0020.0002.130DE] # EGYPTIAN HIEROGLYPH E011
+130DF ; [.3FC0.0020.0002.130DF] # EGYPTIAN HIEROGLYPH E012
+130E0 ; [.3FC1.0020.0002.130E0] # EGYPTIAN HIEROGLYPH E013
+130E1 ; [.3FC2.0020.0002.130E1] # EGYPTIAN HIEROGLYPH E014
+130E2 ; [.3FC3.0020.0002.130E2] # EGYPTIAN HIEROGLYPH E015
+130E3 ; [.3FC4.0020.0002.130E3] # EGYPTIAN HIEROGLYPH E016
+130E4 ; [.3FC5.0020.0002.130E4] # EGYPTIAN HIEROGLYPH E016A
+130E5 ; [.3FC6.0020.0002.130E5] # EGYPTIAN HIEROGLYPH E017
+130E6 ; [.3FC7.0020.0002.130E6] # EGYPTIAN HIEROGLYPH E017A
+130E7 ; [.3FC8.0020.0002.130E7] # EGYPTIAN HIEROGLYPH E018
+130E8 ; [.3FC9.0020.0002.130E8] # EGYPTIAN HIEROGLYPH E019
+130E9 ; [.3FCA.0020.0002.130E9] # EGYPTIAN HIEROGLYPH E020
+130EA ; [.3FCB.0020.0002.130EA] # EGYPTIAN HIEROGLYPH E020A
+130EB ; [.3FCC.0020.0002.130EB] # EGYPTIAN HIEROGLYPH E021
+130EC ; [.3FCD.0020.0002.130EC] # EGYPTIAN HIEROGLYPH E022
+130ED ; [.3FCE.0020.0002.130ED] # EGYPTIAN HIEROGLYPH E023
+130EE ; [.3FCF.0020.0002.130EE] # EGYPTIAN HIEROGLYPH E024
+130EF ; [.3FD0.0020.0002.130EF] # EGYPTIAN HIEROGLYPH E025
+130F0 ; [.3FD1.0020.0002.130F0] # EGYPTIAN HIEROGLYPH E026
+130F1 ; [.3FD2.0020.0002.130F1] # EGYPTIAN HIEROGLYPH E027
+130F2 ; [.3FD3.0020.0002.130F2] # EGYPTIAN HIEROGLYPH E028
+130F3 ; [.3FD4.0020.0002.130F3] # EGYPTIAN HIEROGLYPH E028A
+130F4 ; [.3FD5.0020.0002.130F4] # EGYPTIAN HIEROGLYPH E029
+130F5 ; [.3FD6.0020.0002.130F5] # EGYPTIAN HIEROGLYPH E030
+130F6 ; [.3FD7.0020.0002.130F6] # EGYPTIAN HIEROGLYPH E031
+130F7 ; [.3FD8.0020.0002.130F7] # EGYPTIAN HIEROGLYPH E032
+130F8 ; [.3FD9.0020.0002.130F8] # EGYPTIAN HIEROGLYPH E033
+130F9 ; [.3FDA.0020.0002.130F9] # EGYPTIAN HIEROGLYPH E034
+130FA ; [.3FDB.0020.0002.130FA] # EGYPTIAN HIEROGLYPH E034A
+130FB ; [.3FDC.0020.0002.130FB] # EGYPTIAN HIEROGLYPH E036
+130FC ; [.3FDD.0020.0002.130FC] # EGYPTIAN HIEROGLYPH E037
+130FD ; [.3FDE.0020.0002.130FD] # EGYPTIAN HIEROGLYPH E038
+130FE ; [.3FDF.0020.0002.130FE] # EGYPTIAN HIEROGLYPH F001
+130FF ; [.3FE0.0020.0002.130FF] # EGYPTIAN HIEROGLYPH F001A
+13100 ; [.3FE1.0020.0002.13100] # EGYPTIAN HIEROGLYPH F002
+13101 ; [.3FE2.0020.0002.13101] # EGYPTIAN HIEROGLYPH F003
+13102 ; [.3FE3.0020.0002.13102] # EGYPTIAN HIEROGLYPH F004
+13103 ; [.3FE4.0020.0002.13103] # EGYPTIAN HIEROGLYPH F005
+13104 ; [.3FE5.0020.0002.13104] # EGYPTIAN HIEROGLYPH F006
+13105 ; [.3FE6.0020.0002.13105] # EGYPTIAN HIEROGLYPH F007
+13106 ; [.3FE7.0020.0002.13106] # EGYPTIAN HIEROGLYPH F008
+13107 ; [.3FE8.0020.0002.13107] # EGYPTIAN HIEROGLYPH F009
+13108 ; [.3FE9.0020.0002.13108] # EGYPTIAN HIEROGLYPH F010
+13109 ; [.3FEA.0020.0002.13109] # EGYPTIAN HIEROGLYPH F011
+1310A ; [.3FEB.0020.0002.1310A] # EGYPTIAN HIEROGLYPH F012
+1310B ; [.3FEC.0020.0002.1310B] # EGYPTIAN HIEROGLYPH F013
+1310C ; [.3FED.0020.0002.1310C] # EGYPTIAN HIEROGLYPH F013A
+1310D ; [.3FEE.0020.0002.1310D] # EGYPTIAN HIEROGLYPH F014
+1310E ; [.3FEF.0020.0002.1310E] # EGYPTIAN HIEROGLYPH F015
+1310F ; [.3FF0.0020.0002.1310F] # EGYPTIAN HIEROGLYPH F016
+13110 ; [.3FF1.0020.0002.13110] # EGYPTIAN HIEROGLYPH F017
+13111 ; [.3FF2.0020.0002.13111] # EGYPTIAN HIEROGLYPH F018
+13112 ; [.3FF3.0020.0002.13112] # EGYPTIAN HIEROGLYPH F019
+13113 ; [.3FF4.0020.0002.13113] # EGYPTIAN HIEROGLYPH F020
+13114 ; [.3FF5.0020.0002.13114] # EGYPTIAN HIEROGLYPH F021
+13115 ; [.3FF6.0020.0002.13115] # EGYPTIAN HIEROGLYPH F021A
+13116 ; [.3FF7.0020.0002.13116] # EGYPTIAN HIEROGLYPH F022
+13117 ; [.3FF8.0020.0002.13117] # EGYPTIAN HIEROGLYPH F023
+13118 ; [.3FF9.0020.0002.13118] # EGYPTIAN HIEROGLYPH F024
+13119 ; [.3FFA.0020.0002.13119] # EGYPTIAN HIEROGLYPH F025
+1311A ; [.3FFB.0020.0002.1311A] # EGYPTIAN HIEROGLYPH F026
+1311B ; [.3FFC.0020.0002.1311B] # EGYPTIAN HIEROGLYPH F027
+1311C ; [.3FFD.0020.0002.1311C] # EGYPTIAN HIEROGLYPH F028
+1311D ; [.3FFE.0020.0002.1311D] # EGYPTIAN HIEROGLYPH F029
+1311E ; [.3FFF.0020.0002.1311E] # EGYPTIAN HIEROGLYPH F030
+1311F ; [.4000.0020.0002.1311F] # EGYPTIAN HIEROGLYPH F031
+13120 ; [.4001.0020.0002.13120] # EGYPTIAN HIEROGLYPH F031A
+13121 ; [.4002.0020.0002.13121] # EGYPTIAN HIEROGLYPH F032
+13122 ; [.4003.0020.0002.13122] # EGYPTIAN HIEROGLYPH F033
+13123 ; [.4004.0020.0002.13123] # EGYPTIAN HIEROGLYPH F034
+13124 ; [.4005.0020.0002.13124] # EGYPTIAN HIEROGLYPH F035
+13125 ; [.4006.0020.0002.13125] # EGYPTIAN HIEROGLYPH F036
+13126 ; [.4007.0020.0002.13126] # EGYPTIAN HIEROGLYPH F037
+13127 ; [.4008.0020.0002.13127] # EGYPTIAN HIEROGLYPH F037A
+13128 ; [.4009.0020.0002.13128] # EGYPTIAN HIEROGLYPH F038
+13129 ; [.400A.0020.0002.13129] # EGYPTIAN HIEROGLYPH F038A
+1312A ; [.400B.0020.0002.1312A] # EGYPTIAN HIEROGLYPH F039
+1312B ; [.400C.0020.0002.1312B] # EGYPTIAN HIEROGLYPH F040
+1312C ; [.400D.0020.0002.1312C] # EGYPTIAN HIEROGLYPH F041
+1312D ; [.400E.0020.0002.1312D] # EGYPTIAN HIEROGLYPH F042
+1312E ; [.400F.0020.0002.1312E] # EGYPTIAN HIEROGLYPH F043
+1312F ; [.4010.0020.0002.1312F] # EGYPTIAN HIEROGLYPH F044
+13130 ; [.4011.0020.0002.13130] # EGYPTIAN HIEROGLYPH F045
+13131 ; [.4012.0020.0002.13131] # EGYPTIAN HIEROGLYPH F045A
+13132 ; [.4013.0020.0002.13132] # EGYPTIAN HIEROGLYPH F046
+13133 ; [.4014.0020.0002.13133] # EGYPTIAN HIEROGLYPH F046A
+13134 ; [.4015.0020.0002.13134] # EGYPTIAN HIEROGLYPH F047
+13135 ; [.4016.0020.0002.13135] # EGYPTIAN HIEROGLYPH F047A
+13136 ; [.4017.0020.0002.13136] # EGYPTIAN HIEROGLYPH F048
+13137 ; [.4018.0020.0002.13137] # EGYPTIAN HIEROGLYPH F049
+13138 ; [.4019.0020.0002.13138] # EGYPTIAN HIEROGLYPH F050
+13139 ; [.401A.0020.0002.13139] # EGYPTIAN HIEROGLYPH F051
+1313A ; [.401B.0020.0002.1313A] # EGYPTIAN HIEROGLYPH F051A
+1313B ; [.401C.0020.0002.1313B] # EGYPTIAN HIEROGLYPH F051B
+1313C ; [.401D.0020.0002.1313C] # EGYPTIAN HIEROGLYPH F051C
+1313D ; [.401E.0020.0002.1313D] # EGYPTIAN HIEROGLYPH F052
+1313E ; [.401F.0020.0002.1313E] # EGYPTIAN HIEROGLYPH F053
+1313F ; [.4020.0020.0002.1313F] # EGYPTIAN HIEROGLYPH G001
+13140 ; [.4021.0020.0002.13140] # EGYPTIAN HIEROGLYPH G002
+13141 ; [.4022.0020.0002.13141] # EGYPTIAN HIEROGLYPH G003
+13142 ; [.4023.0020.0002.13142] # EGYPTIAN HIEROGLYPH G004
+13143 ; [.4024.0020.0002.13143] # EGYPTIAN HIEROGLYPH G005
+13144 ; [.4025.0020.0002.13144] # EGYPTIAN HIEROGLYPH G006
+13145 ; [.4026.0020.0002.13145] # EGYPTIAN HIEROGLYPH G006A
+13146 ; [.4027.0020.0002.13146] # EGYPTIAN HIEROGLYPH G007
+13147 ; [.4028.0020.0002.13147] # EGYPTIAN HIEROGLYPH G007A
+13148 ; [.4029.0020.0002.13148] # EGYPTIAN HIEROGLYPH G007B
+13149 ; [.402A.0020.0002.13149] # EGYPTIAN HIEROGLYPH G008
+1314A ; [.402B.0020.0002.1314A] # EGYPTIAN HIEROGLYPH G009
+1314B ; [.402C.0020.0002.1314B] # EGYPTIAN HIEROGLYPH G010
+1314C ; [.402D.0020.0002.1314C] # EGYPTIAN HIEROGLYPH G011
+1314D ; [.402E.0020.0002.1314D] # EGYPTIAN HIEROGLYPH G011A
+1314E ; [.402F.0020.0002.1314E] # EGYPTIAN HIEROGLYPH G012
+1314F ; [.4030.0020.0002.1314F] # EGYPTIAN HIEROGLYPH G013
+13150 ; [.4031.0020.0002.13150] # EGYPTIAN HIEROGLYPH G014
+13151 ; [.4032.0020.0002.13151] # EGYPTIAN HIEROGLYPH G015
+13152 ; [.4033.0020.0002.13152] # EGYPTIAN HIEROGLYPH G016
+13153 ; [.4034.0020.0002.13153] # EGYPTIAN HIEROGLYPH G017
+13154 ; [.4035.0020.0002.13154] # EGYPTIAN HIEROGLYPH G018
+13155 ; [.4036.0020.0002.13155] # EGYPTIAN HIEROGLYPH G019
+13156 ; [.4037.0020.0002.13156] # EGYPTIAN HIEROGLYPH G020
+13157 ; [.4038.0020.0002.13157] # EGYPTIAN HIEROGLYPH G020A
+13158 ; [.4039.0020.0002.13158] # EGYPTIAN HIEROGLYPH G021
+13159 ; [.403A.0020.0002.13159] # EGYPTIAN HIEROGLYPH G022
+1315A ; [.403B.0020.0002.1315A] # EGYPTIAN HIEROGLYPH G023
+1315B ; [.403C.0020.0002.1315B] # EGYPTIAN HIEROGLYPH G024
+1315C ; [.403D.0020.0002.1315C] # EGYPTIAN HIEROGLYPH G025
+1315D ; [.403E.0020.0002.1315D] # EGYPTIAN HIEROGLYPH G026
+1315E ; [.403F.0020.0002.1315E] # EGYPTIAN HIEROGLYPH G026A
+1315F ; [.4040.0020.0002.1315F] # EGYPTIAN HIEROGLYPH G027
+13160 ; [.4041.0020.0002.13160] # EGYPTIAN HIEROGLYPH G028
+13161 ; [.4042.0020.0002.13161] # EGYPTIAN HIEROGLYPH G029
+13162 ; [.4043.0020.0002.13162] # EGYPTIAN HIEROGLYPH G030
+13163 ; [.4044.0020.0002.13163] # EGYPTIAN HIEROGLYPH G031
+13164 ; [.4045.0020.0002.13164] # EGYPTIAN HIEROGLYPH G032
+13165 ; [.4046.0020.0002.13165] # EGYPTIAN HIEROGLYPH G033
+13166 ; [.4047.0020.0002.13166] # EGYPTIAN HIEROGLYPH G034
+13167 ; [.4048.0020.0002.13167] # EGYPTIAN HIEROGLYPH G035
+13168 ; [.4049.0020.0002.13168] # EGYPTIAN HIEROGLYPH G036
+13169 ; [.404A.0020.0002.13169] # EGYPTIAN HIEROGLYPH G036A
+1316A ; [.404B.0020.0002.1316A] # EGYPTIAN HIEROGLYPH G037
+1316B ; [.404C.0020.0002.1316B] # EGYPTIAN HIEROGLYPH G037A
+1316C ; [.404D.0020.0002.1316C] # EGYPTIAN HIEROGLYPH G038
+1316D ; [.404E.0020.0002.1316D] # EGYPTIAN HIEROGLYPH G039
+1316E ; [.404F.0020.0002.1316E] # EGYPTIAN HIEROGLYPH G040
+1316F ; [.4050.0020.0002.1316F] # EGYPTIAN HIEROGLYPH G041
+13170 ; [.4051.0020.0002.13170] # EGYPTIAN HIEROGLYPH G042
+13171 ; [.4052.0020.0002.13171] # EGYPTIAN HIEROGLYPH G043
+13172 ; [.4053.0020.0002.13172] # EGYPTIAN HIEROGLYPH G043A
+13173 ; [.4054.0020.0002.13173] # EGYPTIAN HIEROGLYPH G044
+13174 ; [.4055.0020.0002.13174] # EGYPTIAN HIEROGLYPH G045
+13175 ; [.4056.0020.0002.13175] # EGYPTIAN HIEROGLYPH G045A
+13176 ; [.4057.0020.0002.13176] # EGYPTIAN HIEROGLYPH G046
+13177 ; [.4058.0020.0002.13177] # EGYPTIAN HIEROGLYPH G047
+13178 ; [.4059.0020.0002.13178] # EGYPTIAN HIEROGLYPH G048
+13179 ; [.405A.0020.0002.13179] # EGYPTIAN HIEROGLYPH G049
+1317A ; [.405B.0020.0002.1317A] # EGYPTIAN HIEROGLYPH G050
+1317B ; [.405C.0020.0002.1317B] # EGYPTIAN HIEROGLYPH G051
+1317C ; [.405D.0020.0002.1317C] # EGYPTIAN HIEROGLYPH G052
+1317D ; [.405E.0020.0002.1317D] # EGYPTIAN HIEROGLYPH G053
+1317E ; [.405F.0020.0002.1317E] # EGYPTIAN HIEROGLYPH G054
+1317F ; [.4060.0020.0002.1317F] # EGYPTIAN HIEROGLYPH H001
+13180 ; [.4061.0020.0002.13180] # EGYPTIAN HIEROGLYPH H002
+13181 ; [.4062.0020.0002.13181] # EGYPTIAN HIEROGLYPH H003
+13182 ; [.4063.0020.0002.13182] # EGYPTIAN HIEROGLYPH H004
+13183 ; [.4064.0020.0002.13183] # EGYPTIAN HIEROGLYPH H005
+13184 ; [.4065.0020.0002.13184] # EGYPTIAN HIEROGLYPH H006
+13185 ; [.4066.0020.0002.13185] # EGYPTIAN HIEROGLYPH H006A
+13186 ; [.4067.0020.0002.13186] # EGYPTIAN HIEROGLYPH H007
+13187 ; [.4068.0020.0002.13187] # EGYPTIAN HIEROGLYPH H008
+13188 ; [.4069.0020.0002.13188] # EGYPTIAN HIEROGLYPH I001
+13189 ; [.406A.0020.0002.13189] # EGYPTIAN HIEROGLYPH I002
+1318A ; [.406B.0020.0002.1318A] # EGYPTIAN HIEROGLYPH I003
+1318B ; [.406C.0020.0002.1318B] # EGYPTIAN HIEROGLYPH I004
+1318C ; [.406D.0020.0002.1318C] # EGYPTIAN HIEROGLYPH I005
+1318D ; [.406E.0020.0002.1318D] # EGYPTIAN HIEROGLYPH I005A
+1318E ; [.406F.0020.0002.1318E] # EGYPTIAN HIEROGLYPH I006
+1318F ; [.4070.0020.0002.1318F] # EGYPTIAN HIEROGLYPH I007
+13190 ; [.4071.0020.0002.13190] # EGYPTIAN HIEROGLYPH I008
+13191 ; [.4072.0020.0002.13191] # EGYPTIAN HIEROGLYPH I009
+13192 ; [.4073.0020.0002.13192] # EGYPTIAN HIEROGLYPH I009A
+13193 ; [.4074.0020.0002.13193] # EGYPTIAN HIEROGLYPH I010
+13194 ; [.4075.0020.0002.13194] # EGYPTIAN HIEROGLYPH I010A
+13195 ; [.4076.0020.0002.13195] # EGYPTIAN HIEROGLYPH I011
+13196 ; [.4077.0020.0002.13196] # EGYPTIAN HIEROGLYPH I011A
+13197 ; [.4078.0020.0002.13197] # EGYPTIAN HIEROGLYPH I012
+13198 ; [.4079.0020.0002.13198] # EGYPTIAN HIEROGLYPH I013
+13199 ; [.407A.0020.0002.13199] # EGYPTIAN HIEROGLYPH I014
+1319A ; [.407B.0020.0002.1319A] # EGYPTIAN HIEROGLYPH I015
+1319B ; [.407C.0020.0002.1319B] # EGYPTIAN HIEROGLYPH K001
+1319C ; [.407D.0020.0002.1319C] # EGYPTIAN HIEROGLYPH K002
+1319D ; [.407E.0020.0002.1319D] # EGYPTIAN HIEROGLYPH K003
+1319E ; [.407F.0020.0002.1319E] # EGYPTIAN HIEROGLYPH K004
+1319F ; [.4080.0020.0002.1319F] # EGYPTIAN HIEROGLYPH K005
+131A0 ; [.4081.0020.0002.131A0] # EGYPTIAN HIEROGLYPH K006
+131A1 ; [.4082.0020.0002.131A1] # EGYPTIAN HIEROGLYPH K007
+131A2 ; [.4083.0020.0002.131A2] # EGYPTIAN HIEROGLYPH K008
+131A3 ; [.4084.0020.0002.131A3] # EGYPTIAN HIEROGLYPH L001
+131A4 ; [.4085.0020.0002.131A4] # EGYPTIAN HIEROGLYPH L002
+131A5 ; [.4086.0020.0002.131A5] # EGYPTIAN HIEROGLYPH L002A
+131A6 ; [.4087.0020.0002.131A6] # EGYPTIAN HIEROGLYPH L003
+131A7 ; [.4088.0020.0002.131A7] # EGYPTIAN HIEROGLYPH L004
+131A8 ; [.4089.0020.0002.131A8] # EGYPTIAN HIEROGLYPH L005
+131A9 ; [.408A.0020.0002.131A9] # EGYPTIAN HIEROGLYPH L006
+131AA ; [.408B.0020.0002.131AA] # EGYPTIAN HIEROGLYPH L006A
+131AB ; [.408C.0020.0002.131AB] # EGYPTIAN HIEROGLYPH L007
+131AC ; [.408D.0020.0002.131AC] # EGYPTIAN HIEROGLYPH L008
+131AD ; [.408E.0020.0002.131AD] # EGYPTIAN HIEROGLYPH M001
+131AE ; [.408F.0020.0002.131AE] # EGYPTIAN HIEROGLYPH M001A
+131AF ; [.4090.0020.0002.131AF] # EGYPTIAN HIEROGLYPH M001B
+131B0 ; [.4091.0020.0002.131B0] # EGYPTIAN HIEROGLYPH M002
+131B1 ; [.4092.0020.0002.131B1] # EGYPTIAN HIEROGLYPH M003
+131B2 ; [.4093.0020.0002.131B2] # EGYPTIAN HIEROGLYPH M003A
+131B3 ; [.4094.0020.0002.131B3] # EGYPTIAN HIEROGLYPH M004
+131B4 ; [.4095.0020.0002.131B4] # EGYPTIAN HIEROGLYPH M005
+131B5 ; [.4096.0020.0002.131B5] # EGYPTIAN HIEROGLYPH M006
+131B6 ; [.4097.0020.0002.131B6] # EGYPTIAN HIEROGLYPH M007
+131B7 ; [.4098.0020.0002.131B7] # EGYPTIAN HIEROGLYPH M008
+131B8 ; [.4099.0020.0002.131B8] # EGYPTIAN HIEROGLYPH M009
+131B9 ; [.409A.0020.0002.131B9] # EGYPTIAN HIEROGLYPH M010
+131BA ; [.409B.0020.0002.131BA] # EGYPTIAN HIEROGLYPH M010A
+131BB ; [.409C.0020.0002.131BB] # EGYPTIAN HIEROGLYPH M011
+131BC ; [.409D.0020.0002.131BC] # EGYPTIAN HIEROGLYPH M012
+131BD ; [.409E.0020.0002.131BD] # EGYPTIAN HIEROGLYPH M012A
+131BE ; [.409F.0020.0002.131BE] # EGYPTIAN HIEROGLYPH M012B
+131BF ; [.40A0.0020.0002.131BF] # EGYPTIAN HIEROGLYPH M012C
+131C0 ; [.40A1.0020.0002.131C0] # EGYPTIAN HIEROGLYPH M012D
+131C1 ; [.40A2.0020.0002.131C1] # EGYPTIAN HIEROGLYPH M012E
+131C2 ; [.40A3.0020.0002.131C2] # EGYPTIAN HIEROGLYPH M012F
+131C3 ; [.40A4.0020.0002.131C3] # EGYPTIAN HIEROGLYPH M012G
+131C4 ; [.40A5.0020.0002.131C4] # EGYPTIAN HIEROGLYPH M012H
+131C5 ; [.40A6.0020.0002.131C5] # EGYPTIAN HIEROGLYPH M013
+131C6 ; [.40A7.0020.0002.131C6] # EGYPTIAN HIEROGLYPH M014
+131C7 ; [.40A8.0020.0002.131C7] # EGYPTIAN HIEROGLYPH M015
+131C8 ; [.40A9.0020.0002.131C8] # EGYPTIAN HIEROGLYPH M015A
+131C9 ; [.40AA.0020.0002.131C9] # EGYPTIAN HIEROGLYPH M016
+131CA ; [.40AB.0020.0002.131CA] # EGYPTIAN HIEROGLYPH M016A
+131CB ; [.40AC.0020.0002.131CB] # EGYPTIAN HIEROGLYPH M017
+131CC ; [.40AD.0020.0002.131CC] # EGYPTIAN HIEROGLYPH M017A
+131CD ; [.40AE.0020.0002.131CD] # EGYPTIAN HIEROGLYPH M018
+131CE ; [.40AF.0020.0002.131CE] # EGYPTIAN HIEROGLYPH M019
+131CF ; [.40B0.0020.0002.131CF] # EGYPTIAN HIEROGLYPH M020
+131D0 ; [.40B1.0020.0002.131D0] # EGYPTIAN HIEROGLYPH M021
+131D1 ; [.40B2.0020.0002.131D1] # EGYPTIAN HIEROGLYPH M022
+131D2 ; [.40B3.0020.0002.131D2] # EGYPTIAN HIEROGLYPH M022A
+131D3 ; [.40B4.0020.0002.131D3] # EGYPTIAN HIEROGLYPH M023
+131D4 ; [.40B5.0020.0002.131D4] # EGYPTIAN HIEROGLYPH M024
+131D5 ; [.40B6.0020.0002.131D5] # EGYPTIAN HIEROGLYPH M024A
+131D6 ; [.40B7.0020.0002.131D6] # EGYPTIAN HIEROGLYPH M025
+131D7 ; [.40B8.0020.0002.131D7] # EGYPTIAN HIEROGLYPH M026
+131D8 ; [.40B9.0020.0002.131D8] # EGYPTIAN HIEROGLYPH M027
+131D9 ; [.40BA.0020.0002.131D9] # EGYPTIAN HIEROGLYPH M028
+131DA ; [.40BB.0020.0002.131DA] # EGYPTIAN HIEROGLYPH M028A
+131DB ; [.40BC.0020.0002.131DB] # EGYPTIAN HIEROGLYPH M029
+131DC ; [.40BD.0020.0002.131DC] # EGYPTIAN HIEROGLYPH M030
+131DD ; [.40BE.0020.0002.131DD] # EGYPTIAN HIEROGLYPH M031
+131DE ; [.40BF.0020.0002.131DE] # EGYPTIAN HIEROGLYPH M031A
+131DF ; [.40C0.0020.0002.131DF] # EGYPTIAN HIEROGLYPH M032
+131E0 ; [.40C1.0020.0002.131E0] # EGYPTIAN HIEROGLYPH M033
+131E1 ; [.40C2.0020.0002.131E1] # EGYPTIAN HIEROGLYPH M033A
+131E2 ; [.40C3.0020.0002.131E2] # EGYPTIAN HIEROGLYPH M033B
+131E3 ; [.40C4.0020.0002.131E3] # EGYPTIAN HIEROGLYPH M034
+131E4 ; [.40C5.0020.0002.131E4] # EGYPTIAN HIEROGLYPH M035
+131E5 ; [.40C6.0020.0002.131E5] # EGYPTIAN HIEROGLYPH M036
+131E6 ; [.40C7.0020.0002.131E6] # EGYPTIAN HIEROGLYPH M037
+131E7 ; [.40C8.0020.0002.131E7] # EGYPTIAN HIEROGLYPH M038
+131E8 ; [.40C9.0020.0002.131E8] # EGYPTIAN HIEROGLYPH M039
+131E9 ; [.40CA.0020.0002.131E9] # EGYPTIAN HIEROGLYPH M040
+131EA ; [.40CB.0020.0002.131EA] # EGYPTIAN HIEROGLYPH M040A
+131EB ; [.40CC.0020.0002.131EB] # EGYPTIAN HIEROGLYPH M041
+131EC ; [.40CD.0020.0002.131EC] # EGYPTIAN HIEROGLYPH M042
+131ED ; [.40CE.0020.0002.131ED] # EGYPTIAN HIEROGLYPH M043
+131EE ; [.40CF.0020.0002.131EE] # EGYPTIAN HIEROGLYPH M044
+131EF ; [.40D0.0020.0002.131EF] # EGYPTIAN HIEROGLYPH N001
+131F0 ; [.40D1.0020.0002.131F0] # EGYPTIAN HIEROGLYPH N002
+131F1 ; [.40D2.0020.0002.131F1] # EGYPTIAN HIEROGLYPH N003
+131F2 ; [.40D3.0020.0002.131F2] # EGYPTIAN HIEROGLYPH N004
+131F3 ; [.40D4.0020.0002.131F3] # EGYPTIAN HIEROGLYPH N005
+131F4 ; [.40D5.0020.0002.131F4] # EGYPTIAN HIEROGLYPH N006
+131F5 ; [.40D6.0020.0002.131F5] # EGYPTIAN HIEROGLYPH N007
+131F6 ; [.40D7.0020.0002.131F6] # EGYPTIAN HIEROGLYPH N008
+131F7 ; [.40D8.0020.0002.131F7] # EGYPTIAN HIEROGLYPH N009
+131F8 ; [.40D9.0020.0002.131F8] # EGYPTIAN HIEROGLYPH N010
+131F9 ; [.40DA.0020.0002.131F9] # EGYPTIAN HIEROGLYPH N011
+131FA ; [.40DB.0020.0002.131FA] # EGYPTIAN HIEROGLYPH N012
+131FB ; [.40DC.0020.0002.131FB] # EGYPTIAN HIEROGLYPH N013
+131FC ; [.40DD.0020.0002.131FC] # EGYPTIAN HIEROGLYPH N014
+131FD ; [.40DE.0020.0002.131FD] # EGYPTIAN HIEROGLYPH N015
+131FE ; [.40DF.0020.0002.131FE] # EGYPTIAN HIEROGLYPH N016
+131FF ; [.40E0.0020.0002.131FF] # EGYPTIAN HIEROGLYPH N017
+13200 ; [.40E1.0020.0002.13200] # EGYPTIAN HIEROGLYPH N018
+13201 ; [.40E2.0020.0002.13201] # EGYPTIAN HIEROGLYPH N018A
+13202 ; [.40E3.0020.0002.13202] # EGYPTIAN HIEROGLYPH N018B
+13203 ; [.40E4.0020.0002.13203] # EGYPTIAN HIEROGLYPH N019
+13204 ; [.40E5.0020.0002.13204] # EGYPTIAN HIEROGLYPH N020
+13205 ; [.40E6.0020.0002.13205] # EGYPTIAN HIEROGLYPH N021
+13206 ; [.40E7.0020.0002.13206] # EGYPTIAN HIEROGLYPH N022
+13207 ; [.40E8.0020.0002.13207] # EGYPTIAN HIEROGLYPH N023
+13208 ; [.40E9.0020.0002.13208] # EGYPTIAN HIEROGLYPH N024
+13209 ; [.40EA.0020.0002.13209] # EGYPTIAN HIEROGLYPH N025
+1320A ; [.40EB.0020.0002.1320A] # EGYPTIAN HIEROGLYPH N025A
+1320B ; [.40EC.0020.0002.1320B] # EGYPTIAN HIEROGLYPH N026
+1320C ; [.40ED.0020.0002.1320C] # EGYPTIAN HIEROGLYPH N027
+1320D ; [.40EE.0020.0002.1320D] # EGYPTIAN HIEROGLYPH N028
+1320E ; [.40EF.0020.0002.1320E] # EGYPTIAN HIEROGLYPH N029
+1320F ; [.40F0.0020.0002.1320F] # EGYPTIAN HIEROGLYPH N030
+13210 ; [.40F1.0020.0002.13210] # EGYPTIAN HIEROGLYPH N031
+13211 ; [.40F2.0020.0002.13211] # EGYPTIAN HIEROGLYPH N032
+13212 ; [.40F3.0020.0002.13212] # EGYPTIAN HIEROGLYPH N033
+13213 ; [.40F4.0020.0002.13213] # EGYPTIAN HIEROGLYPH N033A
+13214 ; [.40F5.0020.0002.13214] # EGYPTIAN HIEROGLYPH N034
+13215 ; [.40F6.0020.0002.13215] # EGYPTIAN HIEROGLYPH N034A
+13216 ; [.40F7.0020.0002.13216] # EGYPTIAN HIEROGLYPH N035
+13217 ; [.40F8.0020.0002.13217] # EGYPTIAN HIEROGLYPH N035A
+13218 ; [.40F9.0020.0002.13218] # EGYPTIAN HIEROGLYPH N036
+13219 ; [.40FA.0020.0002.13219] # EGYPTIAN HIEROGLYPH N037
+1321A ; [.40FB.0020.0002.1321A] # EGYPTIAN HIEROGLYPH N037A
+1321B ; [.40FC.0020.0002.1321B] # EGYPTIAN HIEROGLYPH N038
+1321C ; [.40FD.0020.0002.1321C] # EGYPTIAN HIEROGLYPH N039
+1321D ; [.40FE.0020.0002.1321D] # EGYPTIAN HIEROGLYPH N040
+1321E ; [.40FF.0020.0002.1321E] # EGYPTIAN HIEROGLYPH N041
+1321F ; [.4100.0020.0002.1321F] # EGYPTIAN HIEROGLYPH N042
+13220 ; [.4101.0020.0002.13220] # EGYPTIAN HIEROGLYPH NL001
+13221 ; [.4102.0020.0002.13221] # EGYPTIAN HIEROGLYPH NL002
+13222 ; [.4103.0020.0002.13222] # EGYPTIAN HIEROGLYPH NL003
+13223 ; [.4104.0020.0002.13223] # EGYPTIAN HIEROGLYPH NL004
+13224 ; [.4105.0020.0002.13224] # EGYPTIAN HIEROGLYPH NL005
+13225 ; [.4106.0020.0002.13225] # EGYPTIAN HIEROGLYPH NL005A
+13226 ; [.4107.0020.0002.13226] # EGYPTIAN HIEROGLYPH NL006
+13227 ; [.4108.0020.0002.13227] # EGYPTIAN HIEROGLYPH NL007
+13228 ; [.4109.0020.0002.13228] # EGYPTIAN HIEROGLYPH NL008
+13229 ; [.410A.0020.0002.13229] # EGYPTIAN HIEROGLYPH NL009
+1322A ; [.410B.0020.0002.1322A] # EGYPTIAN HIEROGLYPH NL010
+1322B ; [.410C.0020.0002.1322B] # EGYPTIAN HIEROGLYPH NL011
+1322C ; [.410D.0020.0002.1322C] # EGYPTIAN HIEROGLYPH NL012
+1322D ; [.410E.0020.0002.1322D] # EGYPTIAN HIEROGLYPH NL013
+1322E ; [.410F.0020.0002.1322E] # EGYPTIAN HIEROGLYPH NL014
+1322F ; [.4110.0020.0002.1322F] # EGYPTIAN HIEROGLYPH NL015
+13230 ; [.4111.0020.0002.13230] # EGYPTIAN HIEROGLYPH NL016
+13231 ; [.4112.0020.0002.13231] # EGYPTIAN HIEROGLYPH NL017
+13232 ; [.4113.0020.0002.13232] # EGYPTIAN HIEROGLYPH NL017A
+13233 ; [.4114.0020.0002.13233] # EGYPTIAN HIEROGLYPH NL018
+13234 ; [.4115.0020.0002.13234] # EGYPTIAN HIEROGLYPH NL019
+13235 ; [.4116.0020.0002.13235] # EGYPTIAN HIEROGLYPH NL020
+13236 ; [.4117.0020.0002.13236] # EGYPTIAN HIEROGLYPH NU001
+13237 ; [.4118.0020.0002.13237] # EGYPTIAN HIEROGLYPH NU002
+13238 ; [.4119.0020.0002.13238] # EGYPTIAN HIEROGLYPH NU003
+13239 ; [.411A.0020.0002.13239] # EGYPTIAN HIEROGLYPH NU004
+1323A ; [.411B.0020.0002.1323A] # EGYPTIAN HIEROGLYPH NU005
+1323B ; [.411C.0020.0002.1323B] # EGYPTIAN HIEROGLYPH NU006
+1323C ; [.411D.0020.0002.1323C] # EGYPTIAN HIEROGLYPH NU007
+1323D ; [.411E.0020.0002.1323D] # EGYPTIAN HIEROGLYPH NU008
+1323E ; [.411F.0020.0002.1323E] # EGYPTIAN HIEROGLYPH NU009
+1323F ; [.4120.0020.0002.1323F] # EGYPTIAN HIEROGLYPH NU010
+13240 ; [.4121.0020.0002.13240] # EGYPTIAN HIEROGLYPH NU010A
+13241 ; [.4122.0020.0002.13241] # EGYPTIAN HIEROGLYPH NU011
+13242 ; [.4123.0020.0002.13242] # EGYPTIAN HIEROGLYPH NU011A
+13243 ; [.4124.0020.0002.13243] # EGYPTIAN HIEROGLYPH NU012
+13244 ; [.4125.0020.0002.13244] # EGYPTIAN HIEROGLYPH NU013
+13245 ; [.4126.0020.0002.13245] # EGYPTIAN HIEROGLYPH NU014
+13246 ; [.4127.0020.0002.13246] # EGYPTIAN HIEROGLYPH NU015
+13247 ; [.4128.0020.0002.13247] # EGYPTIAN HIEROGLYPH NU016
+13248 ; [.4129.0020.0002.13248] # EGYPTIAN HIEROGLYPH NU017
+13249 ; [.412A.0020.0002.13249] # EGYPTIAN HIEROGLYPH NU018
+1324A ; [.412B.0020.0002.1324A] # EGYPTIAN HIEROGLYPH NU018A
+1324B ; [.412C.0020.0002.1324B] # EGYPTIAN HIEROGLYPH NU019
+1324C ; [.412D.0020.0002.1324C] # EGYPTIAN HIEROGLYPH NU020
+1324D ; [.412E.0020.0002.1324D] # EGYPTIAN HIEROGLYPH NU021
+1324E ; [.412F.0020.0002.1324E] # EGYPTIAN HIEROGLYPH NU022
+1324F ; [.4130.0020.0002.1324F] # EGYPTIAN HIEROGLYPH NU022A
+13250 ; [.4131.0020.0002.13250] # EGYPTIAN HIEROGLYPH O001
+13251 ; [.4132.0020.0002.13251] # EGYPTIAN HIEROGLYPH O001A
+13252 ; [.4133.0020.0002.13252] # EGYPTIAN HIEROGLYPH O002
+13253 ; [.4134.0020.0002.13253] # EGYPTIAN HIEROGLYPH O003
+13254 ; [.4135.0020.0002.13254] # EGYPTIAN HIEROGLYPH O004
+13255 ; [.4136.0020.0002.13255] # EGYPTIAN HIEROGLYPH O005
+13256 ; [.4137.0020.0002.13256] # EGYPTIAN HIEROGLYPH O005A
+13257 ; [.4138.0020.0002.13257] # EGYPTIAN HIEROGLYPH O006
+13258 ; [.4139.0020.0002.13258] # EGYPTIAN HIEROGLYPH O006A
+13259 ; [.413A.0020.0002.13259] # EGYPTIAN HIEROGLYPH O006B
+1325A ; [.413B.0020.0002.1325A] # EGYPTIAN HIEROGLYPH O006C
+1325B ; [.413C.0020.0002.1325B] # EGYPTIAN HIEROGLYPH O006D
+1325C ; [.413D.0020.0002.1325C] # EGYPTIAN HIEROGLYPH O006E
+1325D ; [.413E.0020.0002.1325D] # EGYPTIAN HIEROGLYPH O006F
+1325E ; [.413F.0020.0002.1325E] # EGYPTIAN HIEROGLYPH O007
+1325F ; [.4140.0020.0002.1325F] # EGYPTIAN HIEROGLYPH O008
+13260 ; [.4141.0020.0002.13260] # EGYPTIAN HIEROGLYPH O009
+13261 ; [.4142.0020.0002.13261] # EGYPTIAN HIEROGLYPH O010
+13262 ; [.4143.0020.0002.13262] # EGYPTIAN HIEROGLYPH O010A
+13263 ; [.4144.0020.0002.13263] # EGYPTIAN HIEROGLYPH O010B
+13264 ; [.4145.0020.0002.13264] # EGYPTIAN HIEROGLYPH O010C
+13265 ; [.4146.0020.0002.13265] # EGYPTIAN HIEROGLYPH O011
+13266 ; [.4147.0020.0002.13266] # EGYPTIAN HIEROGLYPH O012
+13267 ; [.4148.0020.0002.13267] # EGYPTIAN HIEROGLYPH O013
+13268 ; [.4149.0020.0002.13268] # EGYPTIAN HIEROGLYPH O014
+13269 ; [.414A.0020.0002.13269] # EGYPTIAN HIEROGLYPH O015
+1326A ; [.414B.0020.0002.1326A] # EGYPTIAN HIEROGLYPH O016
+1326B ; [.414C.0020.0002.1326B] # EGYPTIAN HIEROGLYPH O017
+1326C ; [.414D.0020.0002.1326C] # EGYPTIAN HIEROGLYPH O018
+1326D ; [.414E.0020.0002.1326D] # EGYPTIAN HIEROGLYPH O019
+1326E ; [.414F.0020.0002.1326E] # EGYPTIAN HIEROGLYPH O019A
+1326F ; [.4150.0020.0002.1326F] # EGYPTIAN HIEROGLYPH O020
+13270 ; [.4151.0020.0002.13270] # EGYPTIAN HIEROGLYPH O020A
+13271 ; [.4152.0020.0002.13271] # EGYPTIAN HIEROGLYPH O021
+13272 ; [.4153.0020.0002.13272] # EGYPTIAN HIEROGLYPH O022
+13273 ; [.4154.0020.0002.13273] # EGYPTIAN HIEROGLYPH O023
+13274 ; [.4155.0020.0002.13274] # EGYPTIAN HIEROGLYPH O024
+13275 ; [.4156.0020.0002.13275] # EGYPTIAN HIEROGLYPH O024A
+13276 ; [.4157.0020.0002.13276] # EGYPTIAN HIEROGLYPH O025
+13277 ; [.4158.0020.0002.13277] # EGYPTIAN HIEROGLYPH O025A
+13278 ; [.4159.0020.0002.13278] # EGYPTIAN HIEROGLYPH O026
+13279 ; [.415A.0020.0002.13279] # EGYPTIAN HIEROGLYPH O027
+1327A ; [.415B.0020.0002.1327A] # EGYPTIAN HIEROGLYPH O028
+1327B ; [.415C.0020.0002.1327B] # EGYPTIAN HIEROGLYPH O029
+1327C ; [.415D.0020.0002.1327C] # EGYPTIAN HIEROGLYPH O029A
+1327D ; [.415E.0020.0002.1327D] # EGYPTIAN HIEROGLYPH O030
+1327E ; [.415F.0020.0002.1327E] # EGYPTIAN HIEROGLYPH O030A
+1327F ; [.4160.0020.0002.1327F] # EGYPTIAN HIEROGLYPH O031
+13280 ; [.4161.0020.0002.13280] # EGYPTIAN HIEROGLYPH O032
+13281 ; [.4162.0020.0002.13281] # EGYPTIAN HIEROGLYPH O033
+13282 ; [.4163.0020.0002.13282] # EGYPTIAN HIEROGLYPH O033A
+13283 ; [.4164.0020.0002.13283] # EGYPTIAN HIEROGLYPH O034
+13284 ; [.4165.0020.0002.13284] # EGYPTIAN HIEROGLYPH O035
+13285 ; [.4166.0020.0002.13285] # EGYPTIAN HIEROGLYPH O036
+13286 ; [.4167.0020.0002.13286] # EGYPTIAN HIEROGLYPH O036A
+13287 ; [.4168.0020.0002.13287] # EGYPTIAN HIEROGLYPH O036B
+13288 ; [.4169.0020.0002.13288] # EGYPTIAN HIEROGLYPH O036C
+13289 ; [.416A.0020.0002.13289] # EGYPTIAN HIEROGLYPH O036D
+1328A ; [.416B.0020.0002.1328A] # EGYPTIAN HIEROGLYPH O037
+1328B ; [.416C.0020.0002.1328B] # EGYPTIAN HIEROGLYPH O038
+1328C ; [.416D.0020.0002.1328C] # EGYPTIAN HIEROGLYPH O039
+1328D ; [.416E.0020.0002.1328D] # EGYPTIAN HIEROGLYPH O040
+1328E ; [.416F.0020.0002.1328E] # EGYPTIAN HIEROGLYPH O041
+1328F ; [.4170.0020.0002.1328F] # EGYPTIAN HIEROGLYPH O042
+13290 ; [.4171.0020.0002.13290] # EGYPTIAN HIEROGLYPH O043
+13291 ; [.4172.0020.0002.13291] # EGYPTIAN HIEROGLYPH O044
+13292 ; [.4173.0020.0002.13292] # EGYPTIAN HIEROGLYPH O045
+13293 ; [.4174.0020.0002.13293] # EGYPTIAN HIEROGLYPH O046
+13294 ; [.4175.0020.0002.13294] # EGYPTIAN HIEROGLYPH O047
+13295 ; [.4176.0020.0002.13295] # EGYPTIAN HIEROGLYPH O048
+13296 ; [.4177.0020.0002.13296] # EGYPTIAN HIEROGLYPH O049
+13297 ; [.4178.0020.0002.13297] # EGYPTIAN HIEROGLYPH O050
+13298 ; [.4179.0020.0002.13298] # EGYPTIAN HIEROGLYPH O050A
+13299 ; [.417A.0020.0002.13299] # EGYPTIAN HIEROGLYPH O050B
+1329A ; [.417B.0020.0002.1329A] # EGYPTIAN HIEROGLYPH O051
+1329B ; [.417C.0020.0002.1329B] # EGYPTIAN HIEROGLYPH P001
+1329C ; [.417D.0020.0002.1329C] # EGYPTIAN HIEROGLYPH P001A
+1329D ; [.417E.0020.0002.1329D] # EGYPTIAN HIEROGLYPH P002
+1329E ; [.417F.0020.0002.1329E] # EGYPTIAN HIEROGLYPH P003
+1329F ; [.4180.0020.0002.1329F] # EGYPTIAN HIEROGLYPH P003A
+132A0 ; [.4181.0020.0002.132A0] # EGYPTIAN HIEROGLYPH P004
+132A1 ; [.4182.0020.0002.132A1] # EGYPTIAN HIEROGLYPH P005
+132A2 ; [.4183.0020.0002.132A2] # EGYPTIAN HIEROGLYPH P006
+132A3 ; [.4184.0020.0002.132A3] # EGYPTIAN HIEROGLYPH P007
+132A4 ; [.4185.0020.0002.132A4] # EGYPTIAN HIEROGLYPH P008
+132A5 ; [.4186.0020.0002.132A5] # EGYPTIAN HIEROGLYPH P009
+132A6 ; [.4187.0020.0002.132A6] # EGYPTIAN HIEROGLYPH P010
+132A7 ; [.4188.0020.0002.132A7] # EGYPTIAN HIEROGLYPH P011
+132A8 ; [.4189.0020.0002.132A8] # EGYPTIAN HIEROGLYPH Q001
+132A9 ; [.418A.0020.0002.132A9] # EGYPTIAN HIEROGLYPH Q002
+132AA ; [.418B.0020.0002.132AA] # EGYPTIAN HIEROGLYPH Q003
+132AB ; [.418C.0020.0002.132AB] # EGYPTIAN HIEROGLYPH Q004
+132AC ; [.418D.0020.0002.132AC] # EGYPTIAN HIEROGLYPH Q005
+132AD ; [.418E.0020.0002.132AD] # EGYPTIAN HIEROGLYPH Q006
+132AE ; [.418F.0020.0002.132AE] # EGYPTIAN HIEROGLYPH Q007
+132AF ; [.4190.0020.0002.132AF] # EGYPTIAN HIEROGLYPH R001
+132B0 ; [.4191.0020.0002.132B0] # EGYPTIAN HIEROGLYPH R002
+132B1 ; [.4192.0020.0002.132B1] # EGYPTIAN HIEROGLYPH R002A
+132B2 ; [.4193.0020.0002.132B2] # EGYPTIAN HIEROGLYPH R003
+132B3 ; [.4194.0020.0002.132B3] # EGYPTIAN HIEROGLYPH R003A
+132B4 ; [.4195.0020.0002.132B4] # EGYPTIAN HIEROGLYPH R003B
+132B5 ; [.4196.0020.0002.132B5] # EGYPTIAN HIEROGLYPH R004
+132B6 ; [.4197.0020.0002.132B6] # EGYPTIAN HIEROGLYPH R005
+132B7 ; [.4198.0020.0002.132B7] # EGYPTIAN HIEROGLYPH R006
+132B8 ; [.4199.0020.0002.132B8] # EGYPTIAN HIEROGLYPH R007
+132B9 ; [.419A.0020.0002.132B9] # EGYPTIAN HIEROGLYPH R008
+132BA ; [.419B.0020.0002.132BA] # EGYPTIAN HIEROGLYPH R009
+132BB ; [.419C.0020.0002.132BB] # EGYPTIAN HIEROGLYPH R010
+132BC ; [.419D.0020.0002.132BC] # EGYPTIAN HIEROGLYPH R010A
+132BD ; [.419E.0020.0002.132BD] # EGYPTIAN HIEROGLYPH R011
+132BE ; [.419F.0020.0002.132BE] # EGYPTIAN HIEROGLYPH R012
+132BF ; [.41A0.0020.0002.132BF] # EGYPTIAN HIEROGLYPH R013
+132C0 ; [.41A1.0020.0002.132C0] # EGYPTIAN HIEROGLYPH R014
+132C1 ; [.41A2.0020.0002.132C1] # EGYPTIAN HIEROGLYPH R015
+132C2 ; [.41A3.0020.0002.132C2] # EGYPTIAN HIEROGLYPH R016
+132C3 ; [.41A4.0020.0002.132C3] # EGYPTIAN HIEROGLYPH R016A
+132C4 ; [.41A5.0020.0002.132C4] # EGYPTIAN HIEROGLYPH R017
+132C5 ; [.41A6.0020.0002.132C5] # EGYPTIAN HIEROGLYPH R018
+132C6 ; [.41A7.0020.0002.132C6] # EGYPTIAN HIEROGLYPH R019
+132C7 ; [.41A8.0020.0002.132C7] # EGYPTIAN HIEROGLYPH R020
+132C8 ; [.41A9.0020.0002.132C8] # EGYPTIAN HIEROGLYPH R021
+132C9 ; [.41AA.0020.0002.132C9] # EGYPTIAN HIEROGLYPH R022
+132CA ; [.41AB.0020.0002.132CA] # EGYPTIAN HIEROGLYPH R023
+132CB ; [.41AC.0020.0002.132CB] # EGYPTIAN HIEROGLYPH R024
+132CC ; [.41AD.0020.0002.132CC] # EGYPTIAN HIEROGLYPH R025
+132CD ; [.41AE.0020.0002.132CD] # EGYPTIAN HIEROGLYPH R026
+132CE ; [.41AF.0020.0002.132CE] # EGYPTIAN HIEROGLYPH R027
+132CF ; [.41B0.0020.0002.132CF] # EGYPTIAN HIEROGLYPH R028
+132D0 ; [.41B1.0020.0002.132D0] # EGYPTIAN HIEROGLYPH R029
+132D1 ; [.41B2.0020.0002.132D1] # EGYPTIAN HIEROGLYPH S001
+132D2 ; [.41B3.0020.0002.132D2] # EGYPTIAN HIEROGLYPH S002
+132D3 ; [.41B4.0020.0002.132D3] # EGYPTIAN HIEROGLYPH S002A
+132D4 ; [.41B5.0020.0002.132D4] # EGYPTIAN HIEROGLYPH S003
+132D5 ; [.41B6.0020.0002.132D5] # EGYPTIAN HIEROGLYPH S004
+132D6 ; [.41B7.0020.0002.132D6] # EGYPTIAN HIEROGLYPH S005
+132D7 ; [.41B8.0020.0002.132D7] # EGYPTIAN HIEROGLYPH S006
+132D8 ; [.41B9.0020.0002.132D8] # EGYPTIAN HIEROGLYPH S006A
+132D9 ; [.41BA.0020.0002.132D9] # EGYPTIAN HIEROGLYPH S007
+132DA ; [.41BB.0020.0002.132DA] # EGYPTIAN HIEROGLYPH S008
+132DB ; [.41BC.0020.0002.132DB] # EGYPTIAN HIEROGLYPH S009
+132DC ; [.41BD.0020.0002.132DC] # EGYPTIAN HIEROGLYPH S010
+132DD ; [.41BE.0020.0002.132DD] # EGYPTIAN HIEROGLYPH S011
+132DE ; [.41BF.0020.0002.132DE] # EGYPTIAN HIEROGLYPH S012
+132DF ; [.41C0.0020.0002.132DF] # EGYPTIAN HIEROGLYPH S013
+132E0 ; [.41C1.0020.0002.132E0] # EGYPTIAN HIEROGLYPH S014
+132E1 ; [.41C2.0020.0002.132E1] # EGYPTIAN HIEROGLYPH S014A
+132E2 ; [.41C3.0020.0002.132E2] # EGYPTIAN HIEROGLYPH S014B
+132E3 ; [.41C4.0020.0002.132E3] # EGYPTIAN HIEROGLYPH S015
+132E4 ; [.41C5.0020.0002.132E4] # EGYPTIAN HIEROGLYPH S016
+132E5 ; [.41C6.0020.0002.132E5] # EGYPTIAN HIEROGLYPH S017
+132E6 ; [.41C7.0020.0002.132E6] # EGYPTIAN HIEROGLYPH S017A
+132E7 ; [.41C8.0020.0002.132E7] # EGYPTIAN HIEROGLYPH S018
+132E8 ; [.41C9.0020.0002.132E8] # EGYPTIAN HIEROGLYPH S019
+132E9 ; [.41CA.0020.0002.132E9] # EGYPTIAN HIEROGLYPH S020
+132EA ; [.41CB.0020.0002.132EA] # EGYPTIAN HIEROGLYPH S021
+132EB ; [.41CC.0020.0002.132EB] # EGYPTIAN HIEROGLYPH S022
+132EC ; [.41CD.0020.0002.132EC] # EGYPTIAN HIEROGLYPH S023
+132ED ; [.41CE.0020.0002.132ED] # EGYPTIAN HIEROGLYPH S024
+132EE ; [.41CF.0020.0002.132EE] # EGYPTIAN HIEROGLYPH S025
+132EF ; [.41D0.0020.0002.132EF] # EGYPTIAN HIEROGLYPH S026
+132F0 ; [.41D1.0020.0002.132F0] # EGYPTIAN HIEROGLYPH S026A
+132F1 ; [.41D2.0020.0002.132F1] # EGYPTIAN HIEROGLYPH S026B
+132F2 ; [.41D3.0020.0002.132F2] # EGYPTIAN HIEROGLYPH S027
+132F3 ; [.41D4.0020.0002.132F3] # EGYPTIAN HIEROGLYPH S028
+132F4 ; [.41D5.0020.0002.132F4] # EGYPTIAN HIEROGLYPH S029
+132F5 ; [.41D6.0020.0002.132F5] # EGYPTIAN HIEROGLYPH S030
+132F6 ; [.41D7.0020.0002.132F6] # EGYPTIAN HIEROGLYPH S031
+132F7 ; [.41D8.0020.0002.132F7] # EGYPTIAN HIEROGLYPH S032
+132F8 ; [.41D9.0020.0002.132F8] # EGYPTIAN HIEROGLYPH S033
+132F9 ; [.41DA.0020.0002.132F9] # EGYPTIAN HIEROGLYPH S034
+132FA ; [.41DB.0020.0002.132FA] # EGYPTIAN HIEROGLYPH S035
+132FB ; [.41DC.0020.0002.132FB] # EGYPTIAN HIEROGLYPH S035A
+132FC ; [.41DD.0020.0002.132FC] # EGYPTIAN HIEROGLYPH S036
+132FD ; [.41DE.0020.0002.132FD] # EGYPTIAN HIEROGLYPH S037
+132FE ; [.41DF.0020.0002.132FE] # EGYPTIAN HIEROGLYPH S038
+132FF ; [.41E0.0020.0002.132FF] # EGYPTIAN HIEROGLYPH S039
+13300 ; [.41E1.0020.0002.13300] # EGYPTIAN HIEROGLYPH S040
+13301 ; [.41E2.0020.0002.13301] # EGYPTIAN HIEROGLYPH S041
+13302 ; [.41E3.0020.0002.13302] # EGYPTIAN HIEROGLYPH S042
+13303 ; [.41E4.0020.0002.13303] # EGYPTIAN HIEROGLYPH S043
+13304 ; [.41E5.0020.0002.13304] # EGYPTIAN HIEROGLYPH S044
+13305 ; [.41E6.0020.0002.13305] # EGYPTIAN HIEROGLYPH S045
+13306 ; [.41E7.0020.0002.13306] # EGYPTIAN HIEROGLYPH S046
+13307 ; [.41E8.0020.0002.13307] # EGYPTIAN HIEROGLYPH T001
+13308 ; [.41E9.0020.0002.13308] # EGYPTIAN HIEROGLYPH T002
+13309 ; [.41EA.0020.0002.13309] # EGYPTIAN HIEROGLYPH T003
+1330A ; [.41EB.0020.0002.1330A] # EGYPTIAN HIEROGLYPH T003A
+1330B ; [.41EC.0020.0002.1330B] # EGYPTIAN HIEROGLYPH T004
+1330C ; [.41ED.0020.0002.1330C] # EGYPTIAN HIEROGLYPH T005
+1330D ; [.41EE.0020.0002.1330D] # EGYPTIAN HIEROGLYPH T006
+1330E ; [.41EF.0020.0002.1330E] # EGYPTIAN HIEROGLYPH T007
+1330F ; [.41F0.0020.0002.1330F] # EGYPTIAN HIEROGLYPH T007A
+13310 ; [.41F1.0020.0002.13310] # EGYPTIAN HIEROGLYPH T008
+13311 ; [.41F2.0020.0002.13311] # EGYPTIAN HIEROGLYPH T008A
+13312 ; [.41F3.0020.0002.13312] # EGYPTIAN HIEROGLYPH T009
+13313 ; [.41F4.0020.0002.13313] # EGYPTIAN HIEROGLYPH T009A
+13314 ; [.41F5.0020.0002.13314] # EGYPTIAN HIEROGLYPH T010
+13315 ; [.41F6.0020.0002.13315] # EGYPTIAN HIEROGLYPH T011
+13316 ; [.41F7.0020.0002.13316] # EGYPTIAN HIEROGLYPH T011A
+13317 ; [.41F8.0020.0002.13317] # EGYPTIAN HIEROGLYPH T012
+13318 ; [.41F9.0020.0002.13318] # EGYPTIAN HIEROGLYPH T013
+13319 ; [.41FA.0020.0002.13319] # EGYPTIAN HIEROGLYPH T014
+1331A ; [.41FB.0020.0002.1331A] # EGYPTIAN HIEROGLYPH T015
+1331B ; [.41FC.0020.0002.1331B] # EGYPTIAN HIEROGLYPH T016
+1331C ; [.41FD.0020.0002.1331C] # EGYPTIAN HIEROGLYPH T016A
+1331D ; [.41FE.0020.0002.1331D] # EGYPTIAN HIEROGLYPH T017
+1331E ; [.41FF.0020.0002.1331E] # EGYPTIAN HIEROGLYPH T018
+1331F ; [.4200.0020.0002.1331F] # EGYPTIAN HIEROGLYPH T019
+13320 ; [.4201.0020.0002.13320] # EGYPTIAN HIEROGLYPH T020
+13321 ; [.4202.0020.0002.13321] # EGYPTIAN HIEROGLYPH T021
+13322 ; [.4203.0020.0002.13322] # EGYPTIAN HIEROGLYPH T022
+13323 ; [.4204.0020.0002.13323] # EGYPTIAN HIEROGLYPH T023
+13324 ; [.4205.0020.0002.13324] # EGYPTIAN HIEROGLYPH T024
+13325 ; [.4206.0020.0002.13325] # EGYPTIAN HIEROGLYPH T025
+13326 ; [.4207.0020.0002.13326] # EGYPTIAN HIEROGLYPH T026
+13327 ; [.4208.0020.0002.13327] # EGYPTIAN HIEROGLYPH T027
+13328 ; [.4209.0020.0002.13328] # EGYPTIAN HIEROGLYPH T028
+13329 ; [.420A.0020.0002.13329] # EGYPTIAN HIEROGLYPH T029
+1332A ; [.420B.0020.0002.1332A] # EGYPTIAN HIEROGLYPH T030
+1332B ; [.420C.0020.0002.1332B] # EGYPTIAN HIEROGLYPH T031
+1332C ; [.420D.0020.0002.1332C] # EGYPTIAN HIEROGLYPH T032
+1332D ; [.420E.0020.0002.1332D] # EGYPTIAN HIEROGLYPH T032A
+1332E ; [.420F.0020.0002.1332E] # EGYPTIAN HIEROGLYPH T033
+1332F ; [.4210.0020.0002.1332F] # EGYPTIAN HIEROGLYPH T033A
+13330 ; [.4211.0020.0002.13330] # EGYPTIAN HIEROGLYPH T034
+13331 ; [.4212.0020.0002.13331] # EGYPTIAN HIEROGLYPH T035
+13332 ; [.4213.0020.0002.13332] # EGYPTIAN HIEROGLYPH T036
+13333 ; [.4214.0020.0002.13333] # EGYPTIAN HIEROGLYPH U001
+13334 ; [.4215.0020.0002.13334] # EGYPTIAN HIEROGLYPH U002
+13335 ; [.4216.0020.0002.13335] # EGYPTIAN HIEROGLYPH U003
+13336 ; [.4217.0020.0002.13336] # EGYPTIAN HIEROGLYPH U004
+13337 ; [.4218.0020.0002.13337] # EGYPTIAN HIEROGLYPH U005
+13338 ; [.4219.0020.0002.13338] # EGYPTIAN HIEROGLYPH U006
+13339 ; [.421A.0020.0002.13339] # EGYPTIAN HIEROGLYPH U006A
+1333A ; [.421B.0020.0002.1333A] # EGYPTIAN HIEROGLYPH U006B
+1333B ; [.421C.0020.0002.1333B] # EGYPTIAN HIEROGLYPH U007
+1333C ; [.421D.0020.0002.1333C] # EGYPTIAN HIEROGLYPH U008
+1333D ; [.421E.0020.0002.1333D] # EGYPTIAN HIEROGLYPH U009
+1333E ; [.421F.0020.0002.1333E] # EGYPTIAN HIEROGLYPH U010
+1333F ; [.4220.0020.0002.1333F] # EGYPTIAN HIEROGLYPH U011
+13340 ; [.4221.0020.0002.13340] # EGYPTIAN HIEROGLYPH U012
+13341 ; [.4222.0020.0002.13341] # EGYPTIAN HIEROGLYPH U013
+13342 ; [.4223.0020.0002.13342] # EGYPTIAN HIEROGLYPH U014
+13343 ; [.4224.0020.0002.13343] # EGYPTIAN HIEROGLYPH U015
+13344 ; [.4225.0020.0002.13344] # EGYPTIAN HIEROGLYPH U016
+13345 ; [.4226.0020.0002.13345] # EGYPTIAN HIEROGLYPH U017
+13346 ; [.4227.0020.0002.13346] # EGYPTIAN HIEROGLYPH U018
+13347 ; [.4228.0020.0002.13347] # EGYPTIAN HIEROGLYPH U019
+13348 ; [.4229.0020.0002.13348] # EGYPTIAN HIEROGLYPH U020
+13349 ; [.422A.0020.0002.13349] # EGYPTIAN HIEROGLYPH U021
+1334A ; [.422B.0020.0002.1334A] # EGYPTIAN HIEROGLYPH U022
+1334B ; [.422C.0020.0002.1334B] # EGYPTIAN HIEROGLYPH U023
+1334C ; [.422D.0020.0002.1334C] # EGYPTIAN HIEROGLYPH U023A
+1334D ; [.422E.0020.0002.1334D] # EGYPTIAN HIEROGLYPH U024
+1334E ; [.422F.0020.0002.1334E] # EGYPTIAN HIEROGLYPH U025
+1334F ; [.4230.0020.0002.1334F] # EGYPTIAN HIEROGLYPH U026
+13350 ; [.4231.0020.0002.13350] # EGYPTIAN HIEROGLYPH U027
+13351 ; [.4232.0020.0002.13351] # EGYPTIAN HIEROGLYPH U028
+13352 ; [.4233.0020.0002.13352] # EGYPTIAN HIEROGLYPH U029
+13353 ; [.4234.0020.0002.13353] # EGYPTIAN HIEROGLYPH U029A
+13354 ; [.4235.0020.0002.13354] # EGYPTIAN HIEROGLYPH U030
+13355 ; [.4236.0020.0002.13355] # EGYPTIAN HIEROGLYPH U031
+13356 ; [.4237.0020.0002.13356] # EGYPTIAN HIEROGLYPH U032
+13357 ; [.4238.0020.0002.13357] # EGYPTIAN HIEROGLYPH U032A
+13358 ; [.4239.0020.0002.13358] # EGYPTIAN HIEROGLYPH U033
+13359 ; [.423A.0020.0002.13359] # EGYPTIAN HIEROGLYPH U034
+1335A ; [.423B.0020.0002.1335A] # EGYPTIAN HIEROGLYPH U035
+1335B ; [.423C.0020.0002.1335B] # EGYPTIAN HIEROGLYPH U036
+1335C ; [.423D.0020.0002.1335C] # EGYPTIAN HIEROGLYPH U037
+1335D ; [.423E.0020.0002.1335D] # EGYPTIAN HIEROGLYPH U038
+1335E ; [.423F.0020.0002.1335E] # EGYPTIAN HIEROGLYPH U039
+1335F ; [.4240.0020.0002.1335F] # EGYPTIAN HIEROGLYPH U040
+13360 ; [.4241.0020.0002.13360] # EGYPTIAN HIEROGLYPH U041
+13361 ; [.4242.0020.0002.13361] # EGYPTIAN HIEROGLYPH U042
+13362 ; [.4243.0020.0002.13362] # EGYPTIAN HIEROGLYPH V001
+13363 ; [.4244.0020.0002.13363] # EGYPTIAN HIEROGLYPH V001A
+13364 ; [.4245.0020.0002.13364] # EGYPTIAN HIEROGLYPH V001B
+13365 ; [.4246.0020.0002.13365] # EGYPTIAN HIEROGLYPH V001C
+13366 ; [.4247.0020.0002.13366] # EGYPTIAN HIEROGLYPH V001D
+13367 ; [.4248.0020.0002.13367] # EGYPTIAN HIEROGLYPH V001E
+13368 ; [.4249.0020.0002.13368] # EGYPTIAN HIEROGLYPH V001F
+13369 ; [.424A.0020.0002.13369] # EGYPTIAN HIEROGLYPH V001G
+1336A ; [.424B.0020.0002.1336A] # EGYPTIAN HIEROGLYPH V001H
+1336B ; [.424C.0020.0002.1336B] # EGYPTIAN HIEROGLYPH V001I
+1336C ; [.424D.0020.0002.1336C] # EGYPTIAN HIEROGLYPH V002
+1336D ; [.424E.0020.0002.1336D] # EGYPTIAN HIEROGLYPH V002A
+1336E ; [.424F.0020.0002.1336E] # EGYPTIAN HIEROGLYPH V003
+1336F ; [.4250.0020.0002.1336F] # EGYPTIAN HIEROGLYPH V004
+13370 ; [.4251.0020.0002.13370] # EGYPTIAN HIEROGLYPH V005
+13371 ; [.4252.0020.0002.13371] # EGYPTIAN HIEROGLYPH V006
+13372 ; [.4253.0020.0002.13372] # EGYPTIAN HIEROGLYPH V007
+13373 ; [.4254.0020.0002.13373] # EGYPTIAN HIEROGLYPH V007A
+13374 ; [.4255.0020.0002.13374] # EGYPTIAN HIEROGLYPH V007B
+13375 ; [.4256.0020.0002.13375] # EGYPTIAN HIEROGLYPH V008
+13376 ; [.4257.0020.0002.13376] # EGYPTIAN HIEROGLYPH V009
+13377 ; [.4258.0020.0002.13377] # EGYPTIAN HIEROGLYPH V010
+13378 ; [.4259.0020.0002.13378] # EGYPTIAN HIEROGLYPH V011
+13379 ; [.425A.0020.0002.13379] # EGYPTIAN HIEROGLYPH V011A
+1337A ; [.425B.0020.0002.1337A] # EGYPTIAN HIEROGLYPH V011B
+1337B ; [.425C.0020.0002.1337B] # EGYPTIAN HIEROGLYPH V011C
+1337C ; [.425D.0020.0002.1337C] # EGYPTIAN HIEROGLYPH V012
+1337D ; [.425E.0020.0002.1337D] # EGYPTIAN HIEROGLYPH V012A
+1337E ; [.425F.0020.0002.1337E] # EGYPTIAN HIEROGLYPH V012B
+1337F ; [.4260.0020.0002.1337F] # EGYPTIAN HIEROGLYPH V013
+13380 ; [.4261.0020.0002.13380] # EGYPTIAN HIEROGLYPH V014
+13381 ; [.4262.0020.0002.13381] # EGYPTIAN HIEROGLYPH V015
+13382 ; [.4263.0020.0002.13382] # EGYPTIAN HIEROGLYPH V016
+13383 ; [.4264.0020.0002.13383] # EGYPTIAN HIEROGLYPH V017
+13384 ; [.4265.0020.0002.13384] # EGYPTIAN HIEROGLYPH V018
+13385 ; [.4266.0020.0002.13385] # EGYPTIAN HIEROGLYPH V019
+13386 ; [.4267.0020.0002.13386] # EGYPTIAN HIEROGLYPH V020
+13387 ; [.4268.0020.0002.13387] # EGYPTIAN HIEROGLYPH V020A
+13388 ; [.4269.0020.0002.13388] # EGYPTIAN HIEROGLYPH V020B
+13389 ; [.426A.0020.0002.13389] # EGYPTIAN HIEROGLYPH V020C
+1338A ; [.426B.0020.0002.1338A] # EGYPTIAN HIEROGLYPH V020D
+1338B ; [.426C.0020.0002.1338B] # EGYPTIAN HIEROGLYPH V020E
+1338C ; [.426D.0020.0002.1338C] # EGYPTIAN HIEROGLYPH V020F
+1338D ; [.426E.0020.0002.1338D] # EGYPTIAN HIEROGLYPH V020G
+1338E ; [.426F.0020.0002.1338E] # EGYPTIAN HIEROGLYPH V020H
+1338F ; [.4270.0020.0002.1338F] # EGYPTIAN HIEROGLYPH V020I
+13390 ; [.4271.0020.0002.13390] # EGYPTIAN HIEROGLYPH V020J
+13391 ; [.4272.0020.0002.13391] # EGYPTIAN HIEROGLYPH V020K
+13392 ; [.4273.0020.0002.13392] # EGYPTIAN HIEROGLYPH V020L
+13393 ; [.4274.0020.0002.13393] # EGYPTIAN HIEROGLYPH V021
+13394 ; [.4275.0020.0002.13394] # EGYPTIAN HIEROGLYPH V022
+13395 ; [.4276.0020.0002.13395] # EGYPTIAN HIEROGLYPH V023
+13396 ; [.4277.0020.0002.13396] # EGYPTIAN HIEROGLYPH V023A
+13397 ; [.4278.0020.0002.13397] # EGYPTIAN HIEROGLYPH V024
+13398 ; [.4279.0020.0002.13398] # EGYPTIAN HIEROGLYPH V025
+13399 ; [.427A.0020.0002.13399] # EGYPTIAN HIEROGLYPH V026
+1339A ; [.427B.0020.0002.1339A] # EGYPTIAN HIEROGLYPH V027
+1339B ; [.427C.0020.0002.1339B] # EGYPTIAN HIEROGLYPH V028
+1339C ; [.427D.0020.0002.1339C] # EGYPTIAN HIEROGLYPH V028A
+1339D ; [.427E.0020.0002.1339D] # EGYPTIAN HIEROGLYPH V029
+1339E ; [.427F.0020.0002.1339E] # EGYPTIAN HIEROGLYPH V029A
+1339F ; [.4280.0020.0002.1339F] # EGYPTIAN HIEROGLYPH V030
+133A0 ; [.4281.0020.0002.133A0] # EGYPTIAN HIEROGLYPH V030A
+133A1 ; [.4282.0020.0002.133A1] # EGYPTIAN HIEROGLYPH V031
+133A2 ; [.4283.0020.0002.133A2] # EGYPTIAN HIEROGLYPH V031A
+133A3 ; [.4284.0020.0002.133A3] # EGYPTIAN HIEROGLYPH V032
+133A4 ; [.4285.0020.0002.133A4] # EGYPTIAN HIEROGLYPH V033
+133A5 ; [.4286.0020.0002.133A5] # EGYPTIAN HIEROGLYPH V033A
+133A6 ; [.4287.0020.0002.133A6] # EGYPTIAN HIEROGLYPH V034
+133A7 ; [.4288.0020.0002.133A7] # EGYPTIAN HIEROGLYPH V035
+133A8 ; [.4289.0020.0002.133A8] # EGYPTIAN HIEROGLYPH V036
+133A9 ; [.428A.0020.0002.133A9] # EGYPTIAN HIEROGLYPH V037
+133AA ; [.428B.0020.0002.133AA] # EGYPTIAN HIEROGLYPH V037A
+133AB ; [.428C.0020.0002.133AB] # EGYPTIAN HIEROGLYPH V038
+133AC ; [.428D.0020.0002.133AC] # EGYPTIAN HIEROGLYPH V039
+133AD ; [.428E.0020.0002.133AD] # EGYPTIAN HIEROGLYPH V040
+133AE ; [.428F.0020.0002.133AE] # EGYPTIAN HIEROGLYPH V040A
+133AF ; [.4290.0020.0002.133AF] # EGYPTIAN HIEROGLYPH W001
+133B0 ; [.4291.0020.0002.133B0] # EGYPTIAN HIEROGLYPH W002
+133B1 ; [.4292.0020.0002.133B1] # EGYPTIAN HIEROGLYPH W003
+133B2 ; [.4293.0020.0002.133B2] # EGYPTIAN HIEROGLYPH W003A
+133B3 ; [.4294.0020.0002.133B3] # EGYPTIAN HIEROGLYPH W004
+133B4 ; [.4295.0020.0002.133B4] # EGYPTIAN HIEROGLYPH W005
+133B5 ; [.4296.0020.0002.133B5] # EGYPTIAN HIEROGLYPH W006
+133B6 ; [.4297.0020.0002.133B6] # EGYPTIAN HIEROGLYPH W007
+133B7 ; [.4298.0020.0002.133B7] # EGYPTIAN HIEROGLYPH W008
+133B8 ; [.4299.0020.0002.133B8] # EGYPTIAN HIEROGLYPH W009
+133B9 ; [.429A.0020.0002.133B9] # EGYPTIAN HIEROGLYPH W009A
+133BA ; [.429B.0020.0002.133BA] # EGYPTIAN HIEROGLYPH W010
+133BB ; [.429C.0020.0002.133BB] # EGYPTIAN HIEROGLYPH W010A
+133BC ; [.429D.0020.0002.133BC] # EGYPTIAN HIEROGLYPH W011
+133BD ; [.429E.0020.0002.133BD] # EGYPTIAN HIEROGLYPH W012
+133BE ; [.429F.0020.0002.133BE] # EGYPTIAN HIEROGLYPH W013
+133BF ; [.42A0.0020.0002.133BF] # EGYPTIAN HIEROGLYPH W014
+133C0 ; [.42A1.0020.0002.133C0] # EGYPTIAN HIEROGLYPH W014A
+133C1 ; [.42A2.0020.0002.133C1] # EGYPTIAN HIEROGLYPH W015
+133C2 ; [.42A3.0020.0002.133C2] # EGYPTIAN HIEROGLYPH W016
+133C3 ; [.42A4.0020.0002.133C3] # EGYPTIAN HIEROGLYPH W017
+133C4 ; [.42A5.0020.0002.133C4] # EGYPTIAN HIEROGLYPH W017A
+133C5 ; [.42A6.0020.0002.133C5] # EGYPTIAN HIEROGLYPH W018
+133C6 ; [.42A7.0020.0002.133C6] # EGYPTIAN HIEROGLYPH W018A
+133C7 ; [.42A8.0020.0002.133C7] # EGYPTIAN HIEROGLYPH W019
+133C8 ; [.42A9.0020.0002.133C8] # EGYPTIAN HIEROGLYPH W020
+133C9 ; [.42AA.0020.0002.133C9] # EGYPTIAN HIEROGLYPH W021
+133CA ; [.42AB.0020.0002.133CA] # EGYPTIAN HIEROGLYPH W022
+133CB ; [.42AC.0020.0002.133CB] # EGYPTIAN HIEROGLYPH W023
+133CC ; [.42AD.0020.0002.133CC] # EGYPTIAN HIEROGLYPH W024
+133CD ; [.42AE.0020.0002.133CD] # EGYPTIAN HIEROGLYPH W024A
+133CE ; [.42AF.0020.0002.133CE] # EGYPTIAN HIEROGLYPH W025
+133CF ; [.42B0.0020.0002.133CF] # EGYPTIAN HIEROGLYPH X001
+133D0 ; [.42B1.0020.0002.133D0] # EGYPTIAN HIEROGLYPH X002
+133D1 ; [.42B2.0020.0002.133D1] # EGYPTIAN HIEROGLYPH X003
+133D2 ; [.42B3.0020.0002.133D2] # EGYPTIAN HIEROGLYPH X004
+133D3 ; [.42B4.0020.0002.133D3] # EGYPTIAN HIEROGLYPH X004A
+133D4 ; [.42B5.0020.0002.133D4] # EGYPTIAN HIEROGLYPH X004B
+133D5 ; [.42B6.0020.0002.133D5] # EGYPTIAN HIEROGLYPH X005
+133D6 ; [.42B7.0020.0002.133D6] # EGYPTIAN HIEROGLYPH X006
+133D7 ; [.42B8.0020.0002.133D7] # EGYPTIAN HIEROGLYPH X006A
+133D8 ; [.42B9.0020.0002.133D8] # EGYPTIAN HIEROGLYPH X007
+133D9 ; [.42BA.0020.0002.133D9] # EGYPTIAN HIEROGLYPH X008
+133DA ; [.42BB.0020.0002.133DA] # EGYPTIAN HIEROGLYPH X008A
+133DB ; [.42BC.0020.0002.133DB] # EGYPTIAN HIEROGLYPH Y001
+133DC ; [.42BD.0020.0002.133DC] # EGYPTIAN HIEROGLYPH Y001A
+133DD ; [.42BE.0020.0002.133DD] # EGYPTIAN HIEROGLYPH Y002
+133DE ; [.42BF.0020.0002.133DE] # EGYPTIAN HIEROGLYPH Y003
+133DF ; [.42C0.0020.0002.133DF] # EGYPTIAN HIEROGLYPH Y004
+133E0 ; [.42C1.0020.0002.133E0] # EGYPTIAN HIEROGLYPH Y005
+133E1 ; [.42C2.0020.0002.133E1] # EGYPTIAN HIEROGLYPH Y006
+133E2 ; [.42C3.0020.0002.133E2] # EGYPTIAN HIEROGLYPH Y007
+133E3 ; [.42C4.0020.0002.133E3] # EGYPTIAN HIEROGLYPH Y008
+133E4 ; [.42C5.0020.0002.133E4] # EGYPTIAN HIEROGLYPH Z001
+133E5 ; [.42C6.0020.0002.133E5] # EGYPTIAN HIEROGLYPH Z002
+133E6 ; [.42C7.0020.0002.133E6] # EGYPTIAN HIEROGLYPH Z002A
+133E7 ; [.42C8.0020.0002.133E7] # EGYPTIAN HIEROGLYPH Z002B
+133E8 ; [.42C9.0020.0002.133E8] # EGYPTIAN HIEROGLYPH Z002C
+133E9 ; [.42CA.0020.0002.133E9] # EGYPTIAN HIEROGLYPH Z002D
+133EA ; [.42CB.0020.0002.133EA] # EGYPTIAN HIEROGLYPH Z003
+133EB ; [.42CC.0020.0002.133EB] # EGYPTIAN HIEROGLYPH Z003A
+133EC ; [.42CD.0020.0002.133EC] # EGYPTIAN HIEROGLYPH Z003B
+133ED ; [.42CE.0020.0002.133ED] # EGYPTIAN HIEROGLYPH Z004
+133EE ; [.42CF.0020.0002.133EE] # EGYPTIAN HIEROGLYPH Z004A
+133EF ; [.42D0.0020.0002.133EF] # EGYPTIAN HIEROGLYPH Z005
+133F0 ; [.42D1.0020.0002.133F0] # EGYPTIAN HIEROGLYPH Z005A
+133F1 ; [.42D2.0020.0002.133F1] # EGYPTIAN HIEROGLYPH Z006
+133F2 ; [.42D3.0020.0002.133F2] # EGYPTIAN HIEROGLYPH Z007
+133F3 ; [.42D4.0020.0002.133F3] # EGYPTIAN HIEROGLYPH Z008
+133F4 ; [.42D5.0020.0002.133F4] # EGYPTIAN HIEROGLYPH Z009
+133F5 ; [.42D6.0020.0002.133F5] # EGYPTIAN HIEROGLYPH Z010
+133F6 ; [.42D7.0020.0002.133F6] # EGYPTIAN HIEROGLYPH Z011
+133F7 ; [.42D8.0020.0002.133F7] # EGYPTIAN HIEROGLYPH Z012
+133F8 ; [.42D9.0020.0002.133F8] # EGYPTIAN HIEROGLYPH Z013
+133F9 ; [.42DA.0020.0002.133F9] # EGYPTIAN HIEROGLYPH Z014
+133FA ; [.42DB.0020.0002.133FA] # EGYPTIAN HIEROGLYPH Z015
+133FB ; [.42DC.0020.0002.133FB] # EGYPTIAN HIEROGLYPH Z015A
+133FC ; [.42DD.0020.0002.133FC] # EGYPTIAN HIEROGLYPH Z015B
+133FD ; [.42DE.0020.0002.133FD] # EGYPTIAN HIEROGLYPH Z015C
+133FE ; [.42DF.0020.0002.133FE] # EGYPTIAN HIEROGLYPH Z015D
+133FF ; [.42E0.0020.0002.133FF] # EGYPTIAN HIEROGLYPH Z015E
+13400 ; [.42E1.0020.0002.13400] # EGYPTIAN HIEROGLYPH Z015F
+13401 ; [.42E2.0020.0002.13401] # EGYPTIAN HIEROGLYPH Z015G
+13402 ; [.42E3.0020.0002.13402] # EGYPTIAN HIEROGLYPH Z015H
+13403 ; [.42E4.0020.0002.13403] # EGYPTIAN HIEROGLYPH Z015I
+13404 ; [.42E5.0020.0002.13404] # EGYPTIAN HIEROGLYPH Z016
+13405 ; [.42E6.0020.0002.13405] # EGYPTIAN HIEROGLYPH Z016A
+13406 ; [.42E7.0020.0002.13406] # EGYPTIAN HIEROGLYPH Z016B
+13407 ; [.42E8.0020.0002.13407] # EGYPTIAN HIEROGLYPH Z016C
+13408 ; [.42E9.0020.0002.13408] # EGYPTIAN HIEROGLYPH Z016D
+13409 ; [.42EA.0020.0002.13409] # EGYPTIAN HIEROGLYPH Z016E
+1340A ; [.42EB.0020.0002.1340A] # EGYPTIAN HIEROGLYPH Z016F
+1340B ; [.42EC.0020.0002.1340B] # EGYPTIAN HIEROGLYPH Z016G
+1340C ; [.42ED.0020.0002.1340C] # EGYPTIAN HIEROGLYPH Z016H
+1340D ; [.42EE.0020.0002.1340D] # EGYPTIAN HIEROGLYPH AA001
+1340E ; [.42EF.0020.0002.1340E] # EGYPTIAN HIEROGLYPH AA002
+1340F ; [.42F0.0020.0002.1340F] # EGYPTIAN HIEROGLYPH AA003
+13410 ; [.42F1.0020.0002.13410] # EGYPTIAN HIEROGLYPH AA004
+13411 ; [.42F2.0020.0002.13411] # EGYPTIAN HIEROGLYPH AA005
+13412 ; [.42F3.0020.0002.13412] # EGYPTIAN HIEROGLYPH AA006
+13413 ; [.42F4.0020.0002.13413] # EGYPTIAN HIEROGLYPH AA007
+13414 ; [.42F5.0020.0002.13414] # EGYPTIAN HIEROGLYPH AA007A
+13415 ; [.42F6.0020.0002.13415] # EGYPTIAN HIEROGLYPH AA007B
+13416 ; [.42F7.0020.0002.13416] # EGYPTIAN HIEROGLYPH AA008
+13417 ; [.42F8.0020.0002.13417] # EGYPTIAN HIEROGLYPH AA009
+13418 ; [.42F9.0020.0002.13418] # EGYPTIAN HIEROGLYPH AA010
+13419 ; [.42FA.0020.0002.13419] # EGYPTIAN HIEROGLYPH AA011
+1341A ; [.42FB.0020.0002.1341A] # EGYPTIAN HIEROGLYPH AA012
+1341B ; [.42FC.0020.0002.1341B] # EGYPTIAN HIEROGLYPH AA013
+1341C ; [.42FD.0020.0002.1341C] # EGYPTIAN HIEROGLYPH AA014
+1341D ; [.42FE.0020.0002.1341D] # EGYPTIAN HIEROGLYPH AA015
+1341E ; [.42FF.0020.0002.1341E] # EGYPTIAN HIEROGLYPH AA016
+1341F ; [.4300.0020.0002.1341F] # EGYPTIAN HIEROGLYPH AA017
+13420 ; [.4301.0020.0002.13420] # EGYPTIAN HIEROGLYPH AA018
+13421 ; [.4302.0020.0002.13421] # EGYPTIAN HIEROGLYPH AA019
+13422 ; [.4303.0020.0002.13422] # EGYPTIAN HIEROGLYPH AA020
+13423 ; [.4304.0020.0002.13423] # EGYPTIAN HIEROGLYPH AA021
+13424 ; [.4305.0020.0002.13424] # EGYPTIAN HIEROGLYPH AA022
+13425 ; [.4306.0020.0002.13425] # EGYPTIAN HIEROGLYPH AA023
+13426 ; [.4307.0020.0002.13426] # EGYPTIAN HIEROGLYPH AA024
+13427 ; [.4308.0020.0002.13427] # EGYPTIAN HIEROGLYPH AA025
+13428 ; [.4309.0020.0002.13428] # EGYPTIAN HIEROGLYPH AA026
+13429 ; [.430A.0020.0002.13429] # EGYPTIAN HIEROGLYPH AA027
+1342A ; [.430B.0020.0002.1342A] # EGYPTIAN HIEROGLYPH AA028
+1342B ; [.430C.0020.0002.1342B] # EGYPTIAN HIEROGLYPH AA029
+1342C ; [.430D.0020.0002.1342C] # EGYPTIAN HIEROGLYPH AA030
+1342D ; [.430E.0020.0002.1342D] # EGYPTIAN HIEROGLYPH AA031
+1342E ; [.430F.0020.0002.1342E] # EGYPTIAN HIEROGLYPH AA032
+109A0 ; [.4310.0020.0002.109A0] # MEROITIC CURSIVE LETTER A
+10980 ; [.4310.0020.0004.10980][.0000.0139.0004.10980] # MEROITIC HIEROGLYPHIC LETTER A
+109A1 ; [.4311.0020.0002.109A1] # MEROITIC CURSIVE LETTER E
+10981 ; [.4311.0020.0004.10981][.0000.0139.0004.10981] # MEROITIC HIEROGLYPHIC LETTER E
+109A2 ; [.4312.0020.0002.109A2] # MEROITIC CURSIVE LETTER I
+10982 ; [.4312.0020.0004.10982][.0000.0139.0004.10982] # MEROITIC HIEROGLYPHIC LETTER I
+109A3 ; [.4313.0020.0002.109A3] # MEROITIC CURSIVE LETTER O
+10983 ; [.4313.0020.0004.10983][.0000.0139.0004.10983] # MEROITIC HIEROGLYPHIC LETTER O
+109A4 ; [.4314.0020.0002.109A4] # MEROITIC CURSIVE LETTER YA
+10984 ; [.4314.0020.0004.10984][.0000.0139.0004.10984] # MEROITIC HIEROGLYPHIC LETTER YA
+109A5 ; [.4315.0020.0002.109A5] # MEROITIC CURSIVE LETTER WA
+10985 ; [.4315.0020.0004.10985][.0000.0139.0004.10985] # MEROITIC HIEROGLYPHIC LETTER WA
+109A6 ; [.4316.0020.0002.109A6] # MEROITIC CURSIVE LETTER BA
+10986 ; [.4316.0020.0004.10986][.0000.0139.0004.10986] # MEROITIC HIEROGLYPHIC LETTER BA
+10987 ; [.4316.0020.0004.10987][.0000.013A.0004.10987] # MEROITIC HIEROGLYPHIC LETTER BA-2
+109A7 ; [.4317.0020.0002.109A7] # MEROITIC CURSIVE LETTER PA
+10988 ; [.4317.0020.0004.10988][.0000.0139.0004.10988] # MEROITIC HIEROGLYPHIC LETTER PA
+109A8 ; [.4318.0020.0002.109A8] # MEROITIC CURSIVE LETTER MA
+10989 ; [.4318.0020.0004.10989][.0000.0139.0004.10989] # MEROITIC HIEROGLYPHIC LETTER MA
+109A9 ; [.4319.0020.0002.109A9] # MEROITIC CURSIVE LETTER NA
+1098A ; [.4319.0020.0004.1098A][.0000.0139.0004.1098A] # MEROITIC HIEROGLYPHIC LETTER NA
+1098B ; [.4319.0020.0004.1098B][.0000.013A.0004.1098B] # MEROITIC HIEROGLYPHIC LETTER NA-2
+109AA ; [.431A.0020.0002.109AA] # MEROITIC CURSIVE LETTER NE
+1098C ; [.431A.0020.0004.1098C][.0000.0139.0004.1098C] # MEROITIC HIEROGLYPHIC LETTER NE
+1098D ; [.431A.0020.0004.1098D][.0000.013A.0004.1098D] # MEROITIC HIEROGLYPHIC LETTER NE-2
+109AB ; [.431B.0020.0002.109AB] # MEROITIC CURSIVE LETTER RA
+1098E ; [.431B.0020.0004.1098E][.0000.0139.0004.1098E] # MEROITIC HIEROGLYPHIC LETTER RA
+1098F ; [.431B.0020.0004.1098F][.0000.013A.0004.1098F] # MEROITIC HIEROGLYPHIC LETTER RA-2
+109AC ; [.431C.0020.0002.109AC] # MEROITIC CURSIVE LETTER LA
+10990 ; [.431C.0020.0004.10990][.0000.0139.0004.10990] # MEROITIC HIEROGLYPHIC LETTER LA
+109AD ; [.431D.0020.0002.109AD] # MEROITIC CURSIVE LETTER KHA
+10991 ; [.431D.0020.0004.10991][.0000.0139.0004.10991] # MEROITIC HIEROGLYPHIC LETTER KHA
+109AE ; [.431E.0020.0002.109AE] # MEROITIC CURSIVE LETTER HHA
+10992 ; [.431E.0020.0004.10992][.0000.0139.0004.10992] # MEROITIC HIEROGLYPHIC LETTER HHA
+109AF ; [.431F.0020.0002.109AF] # MEROITIC CURSIVE LETTER SA
+109B0 ; [.431F.0020.0004.109B0][.0000.0139.0004.109B0] # MEROITIC CURSIVE LETTER ARCHAIC SA
+10993 ; [.431F.0020.0004.10993][.0000.013A.0004.10993] # MEROITIC HIEROGLYPHIC LETTER SA
+10994 ; [.431F.0020.0004.10994][.0000.013C.0004.10994] # MEROITIC HIEROGLYPHIC LETTER SA-2
+109B1 ; [.4320.0020.0002.109B1] # MEROITIC CURSIVE LETTER SE
+10995 ; [.4320.0020.0004.10995][.0000.0139.0004.10995] # MEROITIC HIEROGLYPHIC LETTER SE
+109B2 ; [.4321.0020.0002.109B2] # MEROITIC CURSIVE LETTER KA
+10996 ; [.4321.0020.0004.10996][.0000.0139.0004.10996] # MEROITIC HIEROGLYPHIC LETTER KA
+109B3 ; [.4322.0020.0002.109B3] # MEROITIC CURSIVE LETTER QA
+10997 ; [.4322.0020.0004.10997][.0000.0139.0004.10997] # MEROITIC HIEROGLYPHIC LETTER QA
+109B4 ; [.4323.0020.0002.109B4] # MEROITIC CURSIVE LETTER TA
+10998 ; [.4323.0020.0004.10998][.0000.0139.0004.10998] # MEROITIC HIEROGLYPHIC LETTER TA
+10999 ; [.4323.0020.0004.10999][.0000.013A.0004.10999] # MEROITIC HIEROGLYPHIC LETTER TA-2
+109B5 ; [.4324.0020.0002.109B5] # MEROITIC CURSIVE LETTER TE
+1099A ; [.4324.0020.0004.1099A][.0000.0139.0004.1099A] # MEROITIC HIEROGLYPHIC LETTER TE
+1099B ; [.4324.0020.0004.1099B][.0000.013A.0004.1099B] # MEROITIC HIEROGLYPHIC LETTER TE-2
+109B6 ; [.4325.0020.0002.109B6] # MEROITIC CURSIVE LETTER TO
+1099C ; [.4325.0020.0004.1099C][.0000.0139.0004.1099C] # MEROITIC HIEROGLYPHIC LETTER TO
+109B7 ; [.4326.0020.0002.109B7] # MEROITIC CURSIVE LETTER DA
+1099D ; [.4326.0020.0004.1099D][.0000.0139.0004.1099D] # MEROITIC HIEROGLYPHIC LETTER DA
+109BE ; [.4327.0020.0002.109BE] # MEROITIC CURSIVE LOGOGRAM RMT
+109BF ; [.4328.0020.0002.109BF] # MEROITIC CURSIVE LOGOGRAM IMN
+1099E ; [.4329.0020.0002.1099E] # MEROITIC HIEROGLYPHIC SYMBOL VIDJ
+1099F ; [.432A.0020.0002.1099F] # MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2
2F00 ; [.FB40.0020.0004.4E00][.CE00.0000.0000.4E00] # KANGXI RADICAL ONE
3220 ; [*02FB.0020.0004.3220][.FB40.0020.0004.4E00][.CE00.0000.0000.4E00][*02FC.0020.001F.3220] # PARENTHESIZED IDEOGRAPH ONE
3280 ; [.FB40.0020.0006.4E00][.CE00.0000.0000.4E00] # CIRCLED IDEOGRAPH ONE
@@ -23659,7 +23670,7 @@ FA70 ; [.FB40.0020.0002.4E26][.CE26.0000.0000.4E26] # CJK COMPATIBILITY IDEOGRA
1F22D ; [.FB40.0020.001C.4E2D][.CE2D.0000.0000.4E2D] # SQUARED CJK UNIFIED IDEOGRAPH-4E2D
F905 ; [.FB40.0020.0002.4E32][.CE32.0000.0000.4E32] # CJK COMPATIBILITY IDEOGRAPH-F905
2F02 ; [.FB40.0020.0004.4E36][.CE36.0000.0000.4E36] # KANGXI RADICAL DOT
-2E80 ; [.FB40.0020.0004.4E36][.CE36.0000.0000.4E36][.0000.0139.001F.2E80] # CJK RADICAL REPEAT
+2E80 ; [.FB40.0020.0004.4E36][.CE36.0000.0000.4E36][.0000.0139.0004.2E80] # CJK RADICAL REPEAT
2F801 ; [.FB40.0020.0002.4E38][.CE38.0000.0000.4E38] # CJK COMPATIBILITY IDEOGRAPH-2F801
F95E ; [.FB40.0020.0002.4E39][.CE39.0000.0000.4E39] # CJK COMPATIBILITY IDEOGRAPH-F95E
2F800 ; [.FB40.0020.0002.4E3D][.CE3D.0000.0000.4E3D] # CJK COMPATIBILITY IDEOGRAPH-2F800
@@ -23667,7 +23678,7 @@ F95E ; [.FB40.0020.0002.4E39][.CE39.0000.0000.4E39] # CJK COMPATIBILITY IDEOGRA
2F802 ; [.FB40.0020.0002.4E41][.CE41.0000.0000.4E41] # CJK COMPATIBILITY IDEOGRAPH-2F802
2F04 ; [.FB40.0020.0004.4E59][.CE59.0000.0000.4E59] # KANGXI RADICAL SECOND
319A ; [.FB40.0020.0014.4E59][.CE59.0000.0000.4E59] # IDEOGRAPHIC ANNOTATION SECOND MARK
-2E84 ; [.FB40.0020.0004.4E59][.CE59.0000.0000.4E59][.0000.0139.001F.2E84] # CJK RADICAL SECOND THREE
+2E84 ; [.FB40.0020.0004.4E59][.CE59.0000.0000.4E59][.0000.0139.0004.2E84] # CJK RADICAL SECOND THREE
2E83 ; [.FB40.0020.0004.4E5A][.CE5A.0000.0000.4E5A] # CJK RADICAL SECOND TWO
2E82 ; [.FB40.0020.0004.4E5B][.CE5B.0000.0000.4E5B] # CJK RADICAL SECOND ONE
3228 ; [*02FB.0020.0004.3228][.FB40.0020.0004.4E5D][.CE5D.0000.0000.4E5D][*02FC.0020.001F.3228] # PARENTHESIZED IDEOGRAPH NINE
@@ -23734,7 +23745,7 @@ F9D1 ; [.FB40.0020.0002.516D][.D16D.0000.0000.516D] # CJK COMPATIBILITY IDEOGRA
2F811 ; [.FB40.0020.0002.5177][.D177.0000.0000.5177] # CJK COMPATIBILITY IDEOGRAPH-2F811
FA75 ; [.FB40.0020.0002.5180][.D180.0000.0000.5180] # CJK COMPATIBILITY IDEOGRAPH-FA75
2F0C ; [.FB40.0020.0004.5182][.D182.0000.0000.5182] # KANGXI RADICAL DOWN BOX
-2E86 ; [.FB40.0020.0004.5182][.D182.0000.0000.5182][.0000.0139.001F.2E86] # CJK RADICAL BOX
+2E86 ; [.FB40.0020.0004.5182][.D182.0000.0000.5182][.0000.0139.0004.2E86] # CJK RADICAL BOX
2F815 ; [.FB40.0020.0002.518D][.D18D.0000.0000.518D] # CJK COMPATIBILITY IDEOGRAPH-2F815
1F21E ; [.FB40.0020.001C.518D][.D18D.0000.0000.518D] # SQUARED CJK UNIFIED IDEOGRAPH-518D
2F8D2 ; [.FB40.0020.0002.5192][.D192.0000.0000.5192] # CJK COMPATIBILITY IDEOGRAPH-2F8D2
@@ -23753,11 +23764,11 @@ F955 ; [.FB40.0020.0002.51CC][.D1CC.0000.0000.51CC] # CJK COMPATIBILITY IDEOGRA
F954 ; [.FB40.0020.0002.51DC][.D1DC.0000.0000.51DC] # CJK COMPATIBILITY IDEOGRAPH-F954
FA15 ; [.FB40.0020.0002.51DE][.D1DE.0000.0000.51DE] # CJK COMPATIBILITY IDEOGRAPH-FA15
2F0F ; [.FB40.0020.0004.51E0][.D1E0.0000.0000.51E0] # KANGXI RADICAL TABLE
-2E87 ; [.FB40.0020.0004.51E0][.D1E0.0000.0000.51E0][.0000.0139.001F.2E87] # CJK RADICAL TABLE
+2E87 ; [.FB40.0020.0004.51E0][.D1E0.0000.0000.51E0][.0000.0139.0004.2E87] # CJK RADICAL TABLE
2F81D ; [.FB40.0020.0002.51F5][.D1F5.0000.0000.51F5] # CJK COMPATIBILITY IDEOGRAPH-2F81D
2F10 ; [.FB40.0020.0004.51F5][.D1F5.0000.0000.51F5] # KANGXI RADICAL OPEN BOX
2F11 ; [.FB40.0020.0004.5200][.D200.0000.0000.5200] # KANGXI RADICAL KNIFE
-2E88 ; [.FB40.0020.0004.5200][.D200.0000.0000.5200][.0000.0139.001F.2E88] # CJK RADICAL KNIFE ONE
+2E88 ; [.FB40.0020.0004.5200][.D200.0000.0000.5200][.0000.0139.0004.2E88] # CJK RADICAL KNIFE ONE
2E89 ; [.FB40.0020.0004.5202][.D202.0000.0000.5202] # CJK RADICAL KNIFE TWO
2F81E ; [.FB40.0020.0002.5203][.D203.0000.0000.5203] # CJK COMPATIBILITY IDEOGRAPH-2F81E
FA00 ; [.FB40.0020.0002.5207][.D207.0000.0000.5207] # CJK COMPATIBILITY IDEOGRAPH-FA00
@@ -23814,9 +23825,9 @@ FA35 ; [.FB40.0020.0002.5351][.D351.0000.0000.5351] # CJK COMPATIBILITY IDEOGRA
32AF ; [.FB40.0020.0006.5354][.D354.0000.0000.5354] # CIRCLED IDEOGRAPH ALLIANCE
2F82E ; [.FB40.0020.0002.535A][.D35A.0000.0000.535A] # CJK COMPATIBILITY IDEOGRAPH-2F82E
2F18 ; [.FB40.0020.0004.535C][.D35C.0000.0000.535C] # KANGXI RADICAL DIVINATION
-2E8A ; [.FB40.0020.0004.535C][.D35C.0000.0000.535C][.0000.0139.001F.2E8A] # CJK RADICAL DIVINATION
+2E8A ; [.FB40.0020.0004.535C][.D35C.0000.0000.535C][.0000.0139.0004.2E8A] # CJK RADICAL DIVINATION
2F19 ; [.FB40.0020.0004.5369][.D369.0000.0000.5369] # KANGXI RADICAL SEAL
-2E8B ; [.FB40.0020.0004.5369][.D369.0000.0000.5369][.0000.0139.001F.2E8B] # CJK RADICAL SEAL
+2E8B ; [.FB40.0020.0004.5369][.D369.0000.0000.5369][.0000.0139.0004.2E8B] # CJK RADICAL SEAL
329E ; [.FB40.0020.0006.5370][.D370.0000.0000.5370] # CIRCLED IDEOGRAPH PRINT
2F82F ; [.FB40.0020.0002.5373][.D373.0000.0000.5373] # CJK COMPATIBILITY IDEOGRAPH-2F82F
F91C ; [.FB40.0020.0002.5375][.D375.0000.0000.5375] # CJK COMPATIBILITY IDEOGRAPH-F91C
@@ -23825,7 +23836,7 @@ F91C ; [.FB40.0020.0002.5375][.D375.0000.0000.5375] # CJK COMPATIBILITY IDEOGRA
2F832 ; [.FB40.0020.0002.537F][.D37F.0000.0000.537F] # CJK COMPATIBILITY IDEOGRAPH-2F832
2F833 ; [.FB40.0020.0002.537F][.D37F.0000.0000.537F] # CJK COMPATIBILITY IDEOGRAPH-2F833
2F1A ; [.FB40.0020.0004.5382][.D382.0000.0000.5382] # KANGXI RADICAL CLIFF
-2E81 ; [.FB40.0020.0004.5382][.D382.0000.0000.5382][.0000.0139.001F.2E81] # CJK RADICAL CLIFF
+2E81 ; [.FB40.0020.0004.5382][.D382.0000.0000.5382][.0000.0139.0004.2E81] # CJK RADICAL CLIFF
2F1B ; [.FB40.0020.0004.53B6][.D3B6.0000.0000.53B6] # KANGXI RADICAL PRIVATE
F96B ; [.FB40.0020.0002.53C3][.D3C3.0000.0000.53C3] # CJK COMPATIBILITY IDEOGRAPH-F96B
2F1C ; [.FB40.0020.0004.53C8][.D3C8.0000.0000.53C8] # KANGXI RADICAL AGAIN
@@ -23918,7 +23929,7 @@ F942 ; [.FB40.0020.0002.58DF][.D8DF.0000.0000.58DF] # CJK COMPATIBILITY IDEOGRA
32B0 ; [.FB40.0020.0006.591C][.D91C.0000.0000.591C] # CIRCLED IDEOGRAPH NIGHT
2F85E ; [.FB40.0020.0002.5922][.D922.0000.0000.5922] # CJK COMPATIBILITY IDEOGRAPH-2F85E
2F24 ; [.FB40.0020.0004.5927][.D927.0000.0000.5927] # KANGXI RADICAL BIG
-337D ; [.FB40.0020.001C.5927][.D927.0000.0000.5927][.FB40.0020.001F.6B63][.EB63.0000.0000.6B63] # SQUARE ERA NAME TAISYOU
+337D ; [.FB40.0020.001C.5927][.D927.0000.0000.5927][.FB40.0020.001C.6B63][.EB63.0000.0000.6B63] # SQUARE ERA NAME TAISYOU
319D ; [.FB40.0020.0014.5929][.D929.0000.0000.5929] # IDEOGRAPHIC ANNOTATION HEAVEN MARK
1F217 ; [.FB40.0020.001C.5929][.D929.0000.0000.5929] # SQUARED CJK UNIFIED IDEOGRAPH-5929
FA7E ; [.FB40.0020.0002.5944][.D944.0000.0000.5944] # CJK COMPATIBILITY IDEOGRAPH-FA7E
@@ -23959,14 +23970,14 @@ F9BC ; [.FB40.0020.0002.5BEE][.DBEE.0000.0000.5BEE] # CJK COMPATIBILITY IDEOGRA
2F872 ; [.FB40.0020.0002.5BFF][.DBFF.0000.0000.5BFF] # CJK COMPATIBILITY IDEOGRAPH-2F872
2F873 ; [.FB40.0020.0002.5C06][.DC06.0000.0000.5C06] # CJK COMPATIBILITY IDEOGRAPH-2F873
2F29 ; [.FB40.0020.0004.5C0F][.DC0F.0000.0000.5C0F] # KANGXI RADICAL SMALL
-2E8C ; [.FB40.0020.0004.5C0F][.DC0F.0000.0000.5C0F][.0000.0139.001F.2E8C] # CJK RADICAL SMALL ONE
-2E8D ; [.FB40.0020.0004.5C0F][.DC0F.0000.0000.5C0F][.0000.013A.001F.2E8D] # CJK RADICAL SMALL TWO
+2E8C ; [.FB40.0020.0004.5C0F][.DC0F.0000.0000.5C0F][.0000.0139.0004.2E8C] # CJK RADICAL SMALL ONE
+2E8D ; [.FB40.0020.0004.5C0F][.DC0F.0000.0000.5C0F][.0000.013A.0004.2E8D] # CJK RADICAL SMALL TWO
2F875 ; [.FB40.0020.0002.5C22][.DC22.0000.0000.5C22] # CJK COMPATIBILITY IDEOGRAPH-2F875
2E90 ; [.FB40.0020.0004.5C22][.DC22.0000.0000.5C22] # CJK RADICAL LAME THREE
2F2A ; [.FB40.0020.0004.5C22][.DC22.0000.0000.5C22] # KANGXI RADICAL LAME
-2E8E ; [.FB40.0020.0004.5C22][.DC22.0000.0000.5C22][.0000.0139.001F.2E8E] # CJK RADICAL LAME ONE
+2E8E ; [.FB40.0020.0004.5C22][.DC22.0000.0000.5C22][.0000.0139.0004.2E8E] # CJK RADICAL LAME ONE
2E8F ; [.FB40.0020.0004.5C23][.DC23.0000.0000.5C23] # CJK RADICAL LAME TWO
-2E91 ; [.FB40.0020.0004.5C23][.DC23.0000.0000.5C23][.0000.0139.001F.2E91] # CJK RADICAL LAME FOUR
+2E91 ; [.FB40.0020.0004.5C23][.DC23.0000.0000.5C23][.0000.0139.0004.2E91] # CJK RADICAL LAME FOUR
2F2B ; [.FB40.0020.0004.5C38][.DC38.0000.0000.5C38] # KANGXI RADICAL CORPSE
F9BD ; [.FB40.0020.0002.5C3F][.DC3F.0000.0000.5C3F] # CJK COMPATIBILITY IDEOGRAPH-F9BD
2F877 ; [.FB40.0020.0002.5C60][.DC60.0000.0000.5C60] # CJK COMPATIBILITY IDEOGRAPH-2F877
@@ -24001,7 +24012,7 @@ F9AB ; [.FB40.0020.0002.5DBA][.DDBA.0000.0000.5DBA] # CJK COMPATIBILITY IDEOGRA
2F886 ; [.FB40.0020.0002.5E3D][.DE3D.0000.0000.5E3D] # CJK COMPATIBILITY IDEOGRAPH-2F886
2F887 ; [.FB40.0020.0002.5E69][.DE69.0000.0000.5E69] # CJK COMPATIBILITY IDEOGRAPH-2F887
2F32 ; [.FB40.0020.0004.5E72][.DE72.0000.0000.5E72] # KANGXI RADICAL DRY
-337B ; [.FB40.0020.001C.5E73][.DE73.0000.0000.5E73][.FB40.0020.001F.6210][.E210.0000.0000.6210] # SQUARE ERA NAME HEISEI
+337B ; [.FB40.0020.001C.5E73][.DE73.0000.0000.5E73][.FB40.0020.001C.6210][.E210.0000.0000.6210] # SQUARE ERA NAME HEISEI
F98E ; [.FB40.0020.0002.5E74][.DE74.0000.0000.5E74] # CJK COMPATIBILITY IDEOGRAPH-F98E
2E93 ; [.FB40.0020.0004.5E7A][.DE7A.0000.0000.5E7A] # CJK RADICAL THREAD
2F33 ; [.FB40.0020.0004.5E7A][.DE7A.0000.0000.5E7A] # KANGXI RADICAL SHORT THREAD
@@ -24027,7 +24038,7 @@ F943 ; [.FB40.0020.0002.5F04][.DF04.0000.0000.5F04] # CJK COMPATIBILITY IDEOGRA
2F894 ; [.FB40.0020.0002.5F22][.DF22.0000.0000.5F22] # CJK COMPATIBILITY IDEOGRAPH-2F894
2F895 ; [.FB40.0020.0002.5F22][.DF22.0000.0000.5F22] # CJK COMPATIBILITY IDEOGRAPH-2F895
2F39 ; [.FB40.0020.0004.5F50][.DF50.0000.0000.5F50] # KANGXI RADICAL SNOUT
-2E95 ; [.FB40.0020.0004.5F50][.DF50.0000.0000.5F50][.0000.0139.001F.2E95] # CJK RADICAL SNOUT TWO
+2E95 ; [.FB40.0020.0004.5F50][.DF50.0000.0000.5F50][.0000.0139.0004.2E95] # CJK RADICAL SNOUT TWO
2E94 ; [.FB40.0020.0004.5F51][.DF51.0000.0000.5F51] # CJK RADICAL SNOUT ONE
2F874 ; [.FB40.0020.0002.5F53][.DF53.0000.0000.5F53] # CJK COMPATIBILITY IDEOGRAPH-2F874
2F3A ; [.FB40.0020.0004.5F61][.DF61.0000.0000.5F61] # KANGXI RADICAL BRISTLE
@@ -24042,7 +24053,7 @@ F9D8 ; [.FB40.0020.0002.5F8B][.DF8B.0000.0000.5F8B] # CJK COMPATIBILITY IDEOGRA
F966 ; [.FB40.0020.0002.5FA9][.DFA9.0000.0000.5FA9] # CJK COMPATIBILITY IDEOGRAPH-F966
FA85 ; [.FB40.0020.0002.5FAD][.DFAD.0000.0000.5FAD] # CJK COMPATIBILITY IDEOGRAPH-FA85
2F3C ; [.FB40.0020.0004.5FC3][.DFC3.0000.0000.5FC3] # KANGXI RADICAL HEART
-2E97 ; [.FB40.0020.0004.5FC3][.DFC3.0000.0000.5FC3][.0000.0139.001F.2E97] # CJK RADICAL HEART TWO
+2E97 ; [.FB40.0020.0004.5FC3][.DFC3.0000.0000.5FC3][.0000.0139.0004.2E97] # CJK RADICAL HEART TWO
2E96 ; [.FB40.0020.0004.5FC4][.DFC4.0000.0000.5FC4] # CJK RADICAL HEART ONE
2F89D ; [.FB40.0020.0002.5FCD][.DFCD.0000.0000.5FCD] # CJK COMPATIBILITY IDEOGRAPH-2F89D
2F89E ; [.FB40.0020.0002.5FD7][.DFD7.0000.0000.5FD7] # CJK COMPATIBILITY IDEOGRAPH-2F89E
@@ -24147,11 +24158,11 @@ FA42 ; [.FB40.0020.0002.65E2][.E5E2.0000.0000.65E2] # CJK COMPATIBILITY IDEOGRA
2F47 ; [.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5] # KANGXI RADICAL SUN
3230 ; [*02FB.0020.0004.3230][.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5][*02FC.0020.001F.3230] # PARENTHESIZED IDEOGRAPH SUN
3290 ; [.FB40.0020.0006.65E5][.E5E5.0000.0000.65E5] # CIRCLED IDEOGRAPH SUN
-2E9C ; [.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5][.0000.0139.001F.2E9C] # CJK RADICAL SUN
-337E ; [.FB40.0020.001C.660E][.E60E.0000.0000.660E][.FB40.0020.001F.6CBB][.ECBB.0000.0000.6CBB] # SQUARE ERA NAME MEIZI
+2E9C ; [.FB40.0020.0004.65E5][.E5E5.0000.0000.65E5][.0000.0139.0004.2E9C] # CJK RADICAL SUN
+337E ; [.FB40.0020.001C.660E][.E60E.0000.0000.660E][.FB40.0020.001C.6CBB][.ECBB.0000.0000.6CBB] # SQUARE ERA NAME MEIZI
F9E0 ; [.FB40.0020.0002.6613][.E613.0000.0000.6613] # CJK COMPATIBILITY IDEOGRAPH-F9E0
1F219 ; [.FB40.0020.001C.6620][.E620.0000.0000.6620] # SQUARED CJK UNIFIED IDEOGRAPH-6620
-337C ; [.FB40.0020.001C.662D][.E62D.0000.0000.662D][.FB40.0020.001F.548C][.D48C.0000.0000.548C] # SQUARE ERA NAME SYOUWA
+337C ; [.FB40.0020.001C.662D][.E62D.0000.0000.662D][.FB40.0020.001C.548C][.D48C.0000.0000.548C] # SQUARE ERA NAME SYOUWA
2F8CD ; [.FB40.0020.0002.6649][.E649.0000.0000.6649] # CJK COMPATIBILITY IDEOGRAPH-2F8CD
FA12 ; [.FB40.0020.0002.6674][.E674.0000.0000.6674] # CJK COMPATIBILITY IDEOGRAPH-FA12
FA91 ; [.FB40.0020.0002.6674][.E674.0000.0000.6674] # CJK COMPATIBILITY IDEOGRAPH-FA91
@@ -24169,7 +24180,7 @@ F901 ; [.FB40.0020.0002.66F4][.E6F4.0000.0000.66F4] # CJK COMPATIBILITY IDEOGRA
322A ; [*02FB.0020.0004.322A][.FB40.0020.0004.6708][.E708.0000.0000.6708][*02FC.0020.001F.322A] # PARENTHESIZED IDEOGRAPH MOON
328A ; [.FB40.0020.0006.6708][.E708.0000.0000.6708] # CIRCLED IDEOGRAPH MOON
1F237 ; [.FB40.0020.001C.6708][.E708.0000.0000.6708] # SQUARED CJK UNIFIED IDEOGRAPH-6708
-2E9D ; [.FB40.0020.0004.6708][.E708.0000.0000.6708][.0000.0139.001F.2E9D] # CJK RADICAL MOON
+2E9D ; [.FB40.0020.0004.6708][.E708.0000.0000.6708][.0000.0139.0004.2E9D] # CJK RADICAL MOON
3232 ; [*02FB.0020.0004.3232][.FB40.0020.0004.6709][.E709.0000.0000.6709][*02FC.0020.001F.3232] # PARENTHESIZED IDEOGRAPH HAVE
3292 ; [.FB40.0020.0006.6709][.E709.0000.0000.6709] # CIRCLED IDEOGRAPH HAVE
1F236 ; [.FB40.0020.001C.6709][.E709.0000.0000.6709] # SQUARED CJK UNIFIED IDEOGRAPH-6709
@@ -24196,7 +24207,7 @@ F9DA ; [.FB40.0020.0002.6817][.E817.0000.0000.6817] # CJK COMPATIBILITY IDEOGRA
2F8E5 ; [.FB40.0020.0002.681F][.E81F.0000.0000.681F] # CJK COMPATIBILITY IDEOGRAPH-2F8E5
3231 ; [*02FB.0020.0004.3231][.FB40.0020.0004.682A][.E82A.0000.0000.682A][*02FC.0020.001F.3231] # PARENTHESIZED IDEOGRAPH STOCK
3291 ; [.FB40.0020.0006.682A][.E82A.0000.0000.682A] # CIRCLED IDEOGRAPH STOCK
-337F ; [.FB40.0020.001C.682A][.E82A.0000.0000.682A][.FB40.0020.001F.5F0F][.DF0F.0000.0000.5F0F][.FB40.0020.001F.4F1A][.CF1A.0000.0000.4F1A][.FB40.0020.001F.793E][.F93E.0000.0000.793E] # SQUARE CORPORATION
+337F ; [.FB40.0020.001C.682A][.E82A.0000.0000.682A][.FB40.0020.001C.5F0F][.DF0F.0000.0000.5F0F][.FB40.0020.001C.4F1A][.CF1A.0000.0000.4F1A][.FB40.0020.001C.793E][.F93E.0000.0000.793E] # SQUARE CORPORATION
2F8E1 ; [.FB40.0020.0002.6852][.E852.0000.0000.6852] # CJK COMPATIBILITY IDEOGRAPH-2F8E1
F97A ; [.FB40.0020.0002.6881][.E881.0000.0000.6881] # CJK COMPATIBILITY IDEOGRAPH-F97A
FA44 ; [.FB40.0020.0002.6885][.E885.0000.0000.6885] # CJK COMPATIBILITY IDEOGRAPH-FA44
@@ -24224,7 +24235,7 @@ F91D ; [.FB40.0020.0002.6B04][.EB04.0000.0000.6B04] # CJK COMPATIBILITY IDEOGRA
F98C ; [.FB40.0020.0002.6B77][.EB77.0000.0000.6B77] # CJK COMPATIBILITY IDEOGRAPH-F98C
FA95 ; [.FB40.0020.0002.6B79][.EB79.0000.0000.6B79] # CJK COMPATIBILITY IDEOGRAPH-FA95
2F4D ; [.FB40.0020.0004.6B79][.EB79.0000.0000.6B79] # KANGXI RADICAL DEATH
-2E9E ; [.FB40.0020.0004.6B7A][.EB7A.0000.0000.6B7A][.0000.0139.001F.2E9E] # CJK RADICAL DEATH
+2E9E ; [.FB40.0020.0004.6B7A][.EB7A.0000.0000.6B7A][.0000.0139.0004.2E9E] # CJK RADICAL DEATH
2F8F4 ; [.FB40.0020.0002.6B9F][.EB9F.0000.0000.6B9F] # CJK COMPATIBILITY IDEOGRAPH-2F8F4
F9A5 ; [.FB40.0020.0002.6BAE][.EBAE.0000.0000.6BAE] # CJK COMPATIBILITY IDEOGRAPH-F9A5
2F4E ; [.FB40.0020.0004.6BB3][.EBB3.0000.0000.6BB3] # KANGXI RADICAL WEAPON
@@ -24321,7 +24332,7 @@ F91E ; [.FB40.0020.0002.721B][.F21B.0000.0000.721B] # CJK COMPATIBILITY IDEOGRA
2F56 ; [.FB40.0020.0004.722A][.F22A.0000.0000.722A] # KANGXI RADICAL CLAW
FA49 ; [.FB40.0020.0002.722B][.F22B.0000.0000.722B] # CJK COMPATIBILITY IDEOGRAPH-FA49
2EA4 ; [.FB40.0020.0004.722B][.F22B.0000.0000.722B] # CJK RADICAL PAW ONE
-2EA5 ; [.FB40.0020.0004.722B][.F22B.0000.0000.722B][.0000.0139.001F.2EA5] # CJK RADICAL PAW TWO
+2EA5 ; [.FB40.0020.0004.722B][.F22B.0000.0000.722B][.0000.0139.0004.2EA5] # CJK RADICAL PAW TWO
FA9E ; [.FB40.0020.0002.7235][.F235.0000.0000.7235] # CJK COMPATIBILITY IDEOGRAPH-FA9E
2F921 ; [.FB40.0020.0002.7235][.F235.0000.0000.7235] # CJK COMPATIBILITY IDEOGRAPH-2F921
2F57 ; [.FB40.0020.0004.7236][.F236.0000.0000.7236] # KANGXI RADICAL FATHER
@@ -24331,7 +24342,7 @@ FA9E ; [.FB40.0020.0002.7235][.F235.0000.0000.7235] # CJK COMPATIBILITY IDEOGRA
2F922 ; [.FB40.0020.0002.7250][.F250.0000.0000.7250] # CJK COMPATIBILITY IDEOGRAPH-2F922
2F5B ; [.FB40.0020.0004.7259][.F259.0000.0000.7259] # KANGXI RADICAL FANG
2F5C ; [.FB40.0020.0004.725B][.F25B.0000.0000.725B] # KANGXI RADICAL COW
-2EA7 ; [.FB40.0020.0004.725B][.F25B.0000.0000.725B][.0000.0139.001F.2EA7] # CJK RADICAL COW
+2EA7 ; [.FB40.0020.0004.725B][.F25B.0000.0000.725B][.0000.0139.0004.2EA7] # CJK RADICAL COW
F946 ; [.FB40.0020.0002.7262][.F262.0000.0000.7262] # CJK COMPATIBILITY IDEOGRAPH-F946
3235 ; [*02FB.0020.0004.3235][.FB40.0020.0004.7279][.F279.0000.0000.7279][*02FC.0020.001F.3235] # PARENTHESIZED IDEOGRAPH SPECIAL
3295 ; [.FB40.0020.0006.7279][.F279.0000.0000.7279] # CIRCLED IDEOGRAPH SPECIAL
@@ -24351,7 +24362,7 @@ F961 ; [.FB40.0020.0002.7387][.F387.0000.0000.7387] # CJK COMPATIBILITY IDEOGRA
F9DB ; [.FB40.0020.0002.7387][.F387.0000.0000.7387] # CJK COMPATIBILITY IDEOGRAPH-F9DB
2F5F ; [.FB40.0020.0004.7389][.F389.0000.0000.7389] # KANGXI RADICAL JADE
2F929 ; [.FB40.0020.0002.738B][.F38B.0000.0000.738B] # CJK COMPATIBILITY IDEOGRAPH-2F929
-2EA9 ; [.FB40.0020.0004.738B][.F38B.0000.0000.738B][.0000.0139.001F.2EA9] # CJK RADICAL JADE
+2EA9 ; [.FB40.0020.0004.738B][.F38B.0000.0000.738B][.0000.0139.0004.2EA9] # CJK RADICAL JADE
2F92B ; [.FB40.0020.0002.73A5][.F3A5.0000.0000.73A5] # CJK COMPATIBILITY IDEOGRAPH-2F92B
F9AD ; [.FB40.0020.0002.73B2][.F3B2.0000.0000.73B2] # CJK COMPATIBILITY IDEOGRAPH-F9AD
F917 ; [.FB40.0020.0002.73DE][.F3DE.0000.0000.73DE] # CJK COMPATIBILITY IDEOGRAPH-F917
@@ -24386,7 +24397,7 @@ F976 ; [.FB40.0020.0002.7565][.F565.0000.0000.7565] # CJK COMPATIBILITY IDEOGRA
F962 ; [.FB40.0020.0002.7570][.F570.0000.0000.7570] # CJK COMPATIBILITY IDEOGRAPH-F962
2F938 ; [.FB40.0020.0002.7570][.F570.0000.0000.7570] # CJK COMPATIBILITY IDEOGRAPH-2F938
2F66 ; [.FB40.0020.0004.758B][.F58B.0000.0000.758B] # KANGXI RADICAL BOLT OF CLOTH
-2EAA ; [.FB40.0020.0004.758B][.F58B.0000.0000.758B][.0000.0139.001F.2EAA] # CJK RADICAL BOLT OF CLOTH
+2EAA ; [.FB40.0020.0004.758B][.F58B.0000.0000.758B][.0000.0139.0004.2EAA] # CJK RADICAL BOLT OF CLOTH
2F67 ; [.FB40.0020.0004.7592][.F592.0000.0000.7592] # KANGXI RADICAL SICKNESS
F9E5 ; [.FB40.0020.0002.75E2][.F5E2.0000.0000.75E2] # CJK COMPATIBILITY IDEOGRAPH-F9E5
2F93A ; [.FB40.0020.0002.7610][.F610.0000.0000.7610] # CJK COMPATIBILITY IDEOGRAPH-2F93A
@@ -24406,7 +24417,7 @@ FAA7 ; [.FB40.0020.0002.76DB][.F6DB.0000.0000.76DB] # CJK COMPATIBILITY IDEOGRA
32AC ; [.FB40.0020.0006.76E3][.F6E3.0000.0000.76E3] # CIRCLED IDEOGRAPH SUPERVISE
F933 ; [.FB40.0020.0002.76E7][.F6E7.0000.0000.76E7] # CJK COMPATIBILITY IDEOGRAPH-F933
2F6C ; [.FB40.0020.0004.76EE][.F6EE.0000.0000.76EE] # KANGXI RADICAL EYE
-2EAB ; [.FB40.0020.0004.76EE][.F6EE.0000.0000.76EE][.0000.0139.001F.2EAB] # CJK RADICAL EYE
+2EAB ; [.FB40.0020.0004.76EE][.F6EE.0000.0000.76EE][.0000.0139.0004.2EAB] # CJK RADICAL EYE
FAA8 ; [.FB40.0020.0002.76F4][.F6F4.0000.0000.76F4] # CJK COMPATIBILITY IDEOGRAPH-FAA8
2F940 ; [.FB40.0020.0002.76F4][.F6F4.0000.0000.76F4] # CJK COMPATIBILITY IDEOGRAPH-2F940
F96D ; [.FB40.0020.0002.7701][.F701.0000.0000.7701] # CJK COMPATIBILITY IDEOGRAPH-F96D
@@ -24432,7 +24443,7 @@ FAAB ; [.FB40.0020.0002.78CC][.F8CC.0000.0000.78CC] # CJK COMPATIBILITY IDEOGRA
F964 ; [.FB40.0020.0002.78FB][.F8FB.0000.0000.78FB] # CJK COMPATIBILITY IDEOGRAPH-F964
F985 ; [.FB40.0020.0002.792A][.F92A.0000.0000.792A] # CJK COMPATIBILITY IDEOGRAPH-F985
2F70 ; [.FB40.0020.0004.793A][.F93A.0000.0000.793A] # KANGXI RADICAL SPIRIT
-2EAC ; [.FB40.0020.0004.793A][.F93A.0000.0000.793A][.0000.0139.001F.2EAC] # CJK RADICAL SPIRIT ONE
+2EAC ; [.FB40.0020.0004.793A][.F93A.0000.0000.793A][.0000.0139.0004.2EAC] # CJK RADICAL SPIRIT ONE
2EAD ; [.FB40.0020.0004.793B][.F93B.0000.0000.793B] # CJK RADICAL SPIRIT TWO
FA18 ; [.FB40.0020.0002.793C][.F93C.0000.0000.793C] # CJK COMPATIBILITY IDEOGRAPH-FA18
FA4C ; [.FB40.0020.0002.793E][.F93E.0000.0000.793E] # CJK COMPATIBILITY IDEOGRAPH-FA4C
@@ -24474,7 +24485,7 @@ F9F7 ; [.FB40.0020.0002.7ACB][.FACB.0000.0000.7ACB] # CJK COMPATIBILITY IDEOGRA
2F74 ; [.FB40.0020.0004.7ACB][.FACB.0000.0000.7ACB] # KANGXI RADICAL STAND
2F95F ; [.FB40.0020.0002.7AEE][.FAEE.0000.0000.7AEE] # CJK COMPATIBILITY IDEOGRAPH-2F95F
2F75 ; [.FB40.0020.0004.7AF9][.FAF9.0000.0000.7AF9] # KANGXI RADICAL BAMBOO
-2EAE ; [.FB40.0020.0004.7AF9][.FAF9.0000.0000.7AF9][.0000.0139.001F.2EAE] # CJK RADICAL BAMBOO
+2EAE ; [.FB40.0020.0004.7AF9][.FAF9.0000.0000.7AF9][.0000.0139.0004.2EAE] # CJK RADICAL BAMBOO
F9F8 ; [.FB40.0020.0002.7B20][.FB20.0000.0000.7B20] # CJK COMPATIBILITY IDEOGRAPH-F9F8
3247 ; [.FB40.0020.0006.7B8F][.FB8F.0000.0000.7B8F] # CIRCLED IDEOGRAPH KOTO
FA56 ; [.FB40.0020.0002.7BC0][.FBC0.0000.0000.7BC0] # CJK COMPATIBILITY IDEOGRAPH-FA56
@@ -24517,17 +24528,17 @@ FA59 ; [.FB40.0020.0002.7E41][.FE41.0000.0000.7E41] # CJK COMPATIBILITY IDEOGRA
FAB1 ; [.FB40.0020.0002.7F3E][.FF3E.0000.0000.7F3E] # CJK COMPATIBILITY IDEOGRAPH-FAB1
2F79 ; [.FB40.0020.0004.7F51][.FF51.0000.0000.7F51] # KANGXI RADICAL NET
2EB2 ; [.FB40.0020.0004.7F52][.FF52.0000.0000.7F52] # CJK RADICAL NET TWO
-2EB5 ; [.FB40.0020.0004.7F52][.FF52.0000.0000.7F52][.0000.0139.001F.2EB5] # CJK RADICAL MESH
+2EB5 ; [.FB40.0020.0004.7F52][.FF52.0000.0000.7F52][.0000.0139.0004.2EB5] # CJK RADICAL MESH
2EB1 ; [.FB40.0020.0004.7F53][.FF53.0000.0000.7F53] # CJK RADICAL NET ONE
-2EB3 ; [.FB40.0020.0004.7F53][.FF53.0000.0000.7F53][.0000.0139.001F.2EB3] # CJK RADICAL NET THREE
-2EB4 ; [.FB40.0020.0004.7F53][.FF53.0000.0000.7F53][.0000.013A.001F.2EB4] # CJK RADICAL NET FOUR
+2EB3 ; [.FB40.0020.0004.7F53][.FF53.0000.0000.7F53][.0000.0139.0004.2EB3] # CJK RADICAL NET THREE
+2EB4 ; [.FB40.0020.0004.7F53][.FF53.0000.0000.7F53][.0000.013A.0004.2EB4] # CJK RADICAL NET FOUR
FA5A ; [.FB40.0020.0002.7F72][.FF72.0000.0000.7F72] # CJK COMPATIBILITY IDEOGRAPH-FA5A
F9E6 ; [.FB40.0020.0002.7F79][.FF79.0000.0000.7F79] # CJK COMPATIBILITY IDEOGRAPH-F9E6
2F976 ; [.FB40.0020.0002.7F7A][.FF7A.0000.0000.7F7A] # CJK COMPATIBILITY IDEOGRAPH-2F976
F90F ; [.FB40.0020.0002.7F85][.FF85.0000.0000.7F85] # CJK COMPATIBILITY IDEOGRAPH-F90F
2F7A ; [.FB40.0020.0004.7F8A][.FF8A.0000.0000.7F8A] # KANGXI RADICAL SHEEP
-2EB6 ; [.FB40.0020.0004.7F8A][.FF8A.0000.0000.7F8A][.0000.0139.001F.2EB6] # CJK RADICAL SHEEP
-2EB7 ; [.FB40.0020.0004.7F8A][.FF8A.0000.0000.7F8A][.0000.013A.001F.2EB7] # CJK RADICAL RAM
+2EB6 ; [.FB40.0020.0004.7F8A][.FF8A.0000.0000.7F8A][.0000.0139.0004.2EB6] # CJK RADICAL SHEEP
+2EB7 ; [.FB40.0020.0004.7F8A][.FF8A.0000.0000.7F8A][.0000.013A.0004.2EB7] # CJK RADICAL RAM
2EB8 ; [.FB40.0020.0004.7F8B][.FF8B.0000.0000.7F8B] # CJK RADICAL EWE
2F978 ; [.FB40.0020.0002.7F95][.FF95.0000.0000.7F95] # CJK COMPATIBILITY IDEOGRAPH-2F978
F9AF ; [.FB40.0020.0002.7F9A][.FF9A.0000.0000.7F9A] # CJK COMPATIBILITY IDEOGRAPH-F9AF
@@ -24549,10 +24560,10 @@ F997 ; [.FB41.0020.0002.806F][.806F.0000.0000.806F] # CJK COMPATIBILITY IDEOGRA
2F97F ; [.FB41.0020.0002.8070][.8070.0000.0000.8070] # CJK COMPATIBILITY IDEOGRAPH-2F97F
F945 ; [.FB41.0020.0002.807E][.807E.0000.0000.807E] # CJK COMPATIBILITY IDEOGRAPH-F945
2F80 ; [.FB41.0020.0004.807F][.807F.0000.0000.807F] # KANGXI RADICAL BRUSH
-2EBB ; [.FB41.0020.0004.807F][.807F.0000.0000.807F][.0000.0139.001F.2EBB] # CJK RADICAL BRUSH TWO
+2EBB ; [.FB41.0020.0004.807F][.807F.0000.0000.807F][.0000.0139.0004.2EBB] # CJK RADICAL BRUSH TWO
2EBA ; [.FB41.0020.0004.8080][.8080.0000.0000.8080] # CJK RADICAL BRUSH ONE
2F81 ; [.FB41.0020.0004.8089][.8089.0000.0000.8089] # KANGXI RADICAL MEAT
-2EBC ; [.FB41.0020.0004.8089][.8089.0000.0000.8089][.0000.0139.001F.2EBC] # CJK RADICAL MEAT
+2EBC ; [.FB41.0020.0004.8089][.8089.0000.0000.8089][.0000.0139.0004.2EBC] # CJK RADICAL MEAT
F953 ; [.FB41.0020.0002.808B][.808B.0000.0000.808B] # CJK COMPATIBILITY IDEOGRAPH-F953
2F8D6 ; [.FB41.0020.0002.80AD][.80AD.0000.0000.80AD] # CJK COMPATIBILITY IDEOGRAPH-2F8D6
2F982 ; [.FB41.0020.0002.80B2][.80B2.0000.0000.80B2] # CJK COMPATIBILITY IDEOGRAPH-2F982
@@ -24567,7 +24578,7 @@ FA5C ; [.FB41.0020.0002.81ED][.81ED.0000.0000.81ED] # CJK COMPATIBILITY IDEOGRA
2F84 ; [.FB41.0020.0004.81F3][.81F3.0000.0000.81F3] # KANGXI RADICAL ARRIVE
3243 ; [*02FB.0020.0004.3243][.FB41.0020.0004.81F3][.81F3.0000.0000.81F3][*02FC.0020.001F.3243] # PARENTHESIZED IDEOGRAPH REACH
2F85 ; [.FB41.0020.0004.81FC][.81FC.0000.0000.81FC] # KANGXI RADICAL MORTAR
-2EBD ; [.FB41.0020.0004.81FC][.81FC.0000.0000.81FC][.0000.0139.001F.2EBD] # CJK RADICAL MORTAR
+2EBD ; [.FB41.0020.0004.81FC][.81FC.0000.0000.81FC][.0000.0139.0004.2EBD] # CJK RADICAL MORTAR
2F893 ; [.FB41.0020.0002.8201][.8201.0000.0000.8201] # CJK COMPATIBILITY IDEOGRAPH-2F893
2F98B ; [.FB41.0020.0002.8201][.8201.0000.0000.8201] # CJK COMPATIBILITY IDEOGRAPH-2F98B
2F98C ; [.FB41.0020.0002.8204][.8204.0000.0000.8204] # CJK COMPATIBILITY IDEOGRAPH-2F98C
@@ -24582,8 +24593,8 @@ F97C ; [.FB41.0020.0002.826F][.826F.0000.0000.826F] # CJK COMPATIBILITY IDEOGRA
FA5D ; [.FB41.0020.0002.8279][.8279.0000.0000.8279] # CJK COMPATIBILITY IDEOGRAPH-FA5D
FA5E ; [.FB41.0020.0002.8279][.8279.0000.0000.8279] # CJK COMPATIBILITY IDEOGRAPH-FA5E
2EBE ; [.FB41.0020.0004.8279][.8279.0000.0000.8279] # CJK RADICAL GRASS ONE
-2EBF ; [.FB41.0020.0004.8279][.8279.0000.0000.8279][.0000.0139.001F.2EBF] # CJK RADICAL GRASS TWO
-2EC0 ; [.FB41.0020.0004.8279][.8279.0000.0000.8279][.0000.013A.001F.2EC0] # CJK RADICAL GRASS THREE
+2EBF ; [.FB41.0020.0004.8279][.8279.0000.0000.8279][.0000.0139.0004.2EBF] # CJK RADICAL GRASS TWO
+2EC0 ; [.FB41.0020.0004.8279][.8279.0000.0000.8279][.0000.013A.0004.2EC0] # CJK RADICAL GRASS THREE
2F990 ; [.FB41.0020.0002.828B][.828B.0000.0000.828B] # CJK COMPATIBILITY IDEOGRAPH-2F990
2F98F ; [.FB41.0020.0002.8291][.8291.0000.0000.8291] # CJK COMPATIBILITY IDEOGRAPH-2F98F
2F991 ; [.FB41.0020.0002.829D][.829D.0000.0000.829D] # CJK COMPATIBILITY IDEOGRAPH-2F991
@@ -24673,7 +24684,7 @@ FAB8 ; [.FB41.0020.0002.8996][.8996.0000.0000.8996] # CJK COMPATIBILITY IDEOGRA
2EC5 ; [.FB41.0020.0004.89C1][.89C1.0000.0000.89C1] # CJK RADICAL C-SIMPLIFIED SEE
2EC6 ; [.FB41.0020.0004.89D2][.89D2.0000.0000.89D2] # CJK RADICAL SIMPLIFIED HORN
2F93 ; [.FB41.0020.0004.89D2][.89D2.0000.0000.89D2] # KANGXI RADICAL HORN
-2EC7 ; [.FB41.0020.0004.89D2][.89D2.0000.0000.89D2][.0000.0139.001F.2EC7] # CJK RADICAL HORN
+2EC7 ; [.FB41.0020.0004.89D2][.89D2.0000.0000.89D2][.0000.0139.0004.2EC7] # CJK RADICAL HORN
1F216 ; [.FB41.0020.001C.89E3][.89E3.0000.0000.89E3] # SQUARED CJK UNIFIED IDEOGRAPH-89E3
2F94 ; [.FB41.0020.0004.8A00][.8A00.0000.0000.8A00] # KANGXI RADICAL SPEECH
2F9CF ; [.FB41.0020.0002.8AA0][.8AA0.0000.0000.8AA0] # CJK COMPATIBILITY IDEOGRAPH-2F9CF
@@ -24724,7 +24735,7 @@ FAC1 ; [.FB41.0020.0002.8D08][.8D08.0000.0000.8D08] # CJK COMPATIBILITY IDEOGRA
1F230 ; [.FB41.0020.001C.8D70][.8D70.0000.0000.8D70] # SQUARED CJK UNIFIED IDEOGRAPH-8D70
2F9D7 ; [.FB41.0020.0002.8D77][.8D77.0000.0000.8D77] # CJK COMPATIBILITY IDEOGRAPH-2F9D7
2F9C ; [.FB41.0020.0004.8DB3][.8DB3.0000.0000.8DB3] # KANGXI RADICAL FOOT
-2ECA ; [.FB41.0020.0004.8DB3][.8DB3.0000.0000.8DB3][.0000.0139.001F.2ECA] # CJK RADICAL FOOT
+2ECA ; [.FB41.0020.0004.8DB3][.8DB3.0000.0000.8DB3][.0000.0139.0004.2ECA] # CJK RADICAL FOOT
2F9DB ; [.FB41.0020.0002.8DBC][.8DBC.0000.0000.8DBC] # CJK COMPATIBILITY IDEOGRAPH-2F9DB
2F9DA ; [.FB41.0020.0002.8DCB][.8DCB.0000.0000.8DCB] # CJK COMPATIBILITY IDEOGRAPH-2F9DA
F937 ; [.FB41.0020.0002.8DEF][.8DEF.0000.0000.8DEF] # CJK COMPATIBILITY IDEOGRAPH-F937
@@ -24747,8 +24758,8 @@ F971 ; [.FB41.0020.0002.8FB0][.8FB0.0000.0000.8FB0] # CJK COMPATIBILITY IDEOGRA
2FA1 ; [.FB41.0020.0004.8FB5][.8FB5.0000.0000.8FB5] # KANGXI RADICAL WALK
FA66 ; [.FB41.0020.0002.8FB6][.8FB6.0000.0000.8FB6] # CJK COMPATIBILITY IDEOGRAPH-FA66
2ECC ; [.FB41.0020.0004.8FB6][.8FB6.0000.0000.8FB6] # CJK RADICAL SIMPLIFIED WALK
-2ECD ; [.FB41.0020.0004.8FB6][.8FB6.0000.0000.8FB6][.0000.0139.001F.2ECD] # CJK RADICAL WALK ONE
-2ECE ; [.FB41.0020.0004.8FB6][.8FB6.0000.0000.8FB6][.0000.013A.001F.2ECE] # CJK RADICAL WALK TWO
+2ECD ; [.FB41.0020.0004.8FB6][.8FB6.0000.0000.8FB6][.0000.0139.0004.2ECD] # CJK RADICAL WALK ONE
+2ECE ; [.FB41.0020.0004.8FB6][.8FB6.0000.0000.8FB6][.0000.013A.0004.2ECE] # CJK RADICAL WALK TWO
F99A ; [.FB41.0020.0002.9023][.9023.0000.0000.9023] # CJK COMPATIBILITY IDEOGRAPH-F99A
FA25 ; [.FB41.0020.0002.9038][.9038.0000.0000.9038] # CJK COMPATIBILITY IDEOGRAPH-FA25
FA67 ; [.FB41.0020.0002.9038][.9038.0000.0000.9038] # CJK COMPATIBILITY IDEOGRAPH-FA67
@@ -24758,7 +24769,7 @@ FAC3 ; [.FB41.0020.0002.9072][.9072.0000.0000.9072] # CJK COMPATIBILITY IDEOGRA
F9C3 ; [.FB41.0020.0002.907C][.907C.0000.0000.907C] # CJK COMPATIBILITY IDEOGRAPH-F9C3
F913 ; [.FB41.0020.0002.908F][.908F.0000.0000.908F] # CJK COMPATIBILITY IDEOGRAPH-F913
2FA2 ; [.FB41.0020.0004.9091][.9091.0000.0000.9091] # KANGXI RADICAL CITY
-2ECF ; [.FB41.0020.0004.9091][.9091.0000.0000.9091][.0000.0139.001F.2ECF] # CJK RADICAL CITY
+2ECF ; [.FB41.0020.0004.9091][.9091.0000.0000.9091][.0000.0139.0004.2ECF] # CJK RADICAL CITY
2F9E2 ; [.FB41.0020.0002.9094][.9094.0000.0000.9094] # CJK COMPATIBILITY IDEOGRAPH-2F9E2
F92C ; [.FB41.0020.0002.90CE][.90CE.0000.0000.90CE] # CJK COMPATIBILITY IDEOGRAPH-F92C
FA2E ; [.FB41.0020.0002.90DE][.90DE.0000.0000.90DE] # CJK COMPATIBILITY IDEOGRAPH-FA2E
@@ -24799,7 +24810,7 @@ F986 ; [.FB41.0020.0002.95AD][.95AD.0000.0000.95AD] # CJK COMPATIBILITY IDEOGRA
2F9F0 ; [.FB41.0020.0002.95B7][.95B7.0000.0000.95B7] # CJK COMPATIBILITY IDEOGRAPH-2F9F0
2ED4 ; [.FB41.0020.0004.95E8][.95E8.0000.0000.95E8] # CJK RADICAL C-SIMPLIFIED GATE
2FA9 ; [.FB41.0020.0004.961C][.961C.0000.0000.961C] # KANGXI RADICAL MOUND
-2ED5 ; [.FB41.0020.0004.961C][.961C.0000.0000.961C][.0000.0139.001F.2ED5] # CJK RADICAL MOUND ONE
+2ED5 ; [.FB41.0020.0004.961C][.961C.0000.0000.961C][.0000.0139.0004.2ED5] # CJK RADICAL MOUND ONE
2ED6 ; [.FB41.0020.0004.961D][.961D.0000.0000.961D] # CJK RADICAL MOUND TWO
F9C6 ; [.FB41.0020.0002.962E][.962E.0000.0000.962E] # CJK COMPATIBILITY IDEOGRAPH-F9C6
F951 ; [.FB41.0020.0002.964B][.964B.0000.0000.964B] # CJK COMPATIBILITY IDEOGRAPH-F951
@@ -24818,7 +24829,7 @@ F9EA ; [.FB41.0020.0002.96E2][.96E2.0000.0000.96E2] # CJK COMPATIBILITY IDEOGRA
FA68 ; [.FB41.0020.0002.96E3][.96E3.0000.0000.96E3] # CJK COMPATIBILITY IDEOGRAPH-FA68
FAC7 ; [.FB41.0020.0002.96E3][.96E3.0000.0000.96E3] # CJK COMPATIBILITY IDEOGRAPH-FAC7
2FAC ; [.FB41.0020.0004.96E8][.96E8.0000.0000.96E8] # KANGXI RADICAL RAIN
-2ED7 ; [.FB41.0020.0004.96E8][.96E8.0000.0000.96E8][.0000.0139.001F.2ED7] # CJK RADICAL RAIN
+2ED7 ; [.FB41.0020.0004.96E8][.96E8.0000.0000.96E8][.0000.0139.0004.2ED7] # CJK RADICAL RAIN
F9B2 ; [.FB41.0020.0002.96F6][.96F6.0000.0000.96F6] # CJK COMPATIBILITY IDEOGRAPH-F9B2
F949 ; [.FB41.0020.0002.96F7][.96F7.0000.0000.96F7] # CJK COMPATIBILITY IDEOGRAPH-F949
2F9F5 ; [.FB41.0020.0002.9723][.9723.0000.0000.9723] # CJK COMPATIBILITY IDEOGRAPH-2F9F5
@@ -24857,7 +24868,7 @@ F9D0 ; [.FB41.0020.0002.985E][.985E.0000.0000.985E] # CJK COMPATIBILITY IDEOGRA
2EDD ; [.FB41.0020.0004.98DF][.98DF.0000.0000.98DF] # CJK RADICAL EAT ONE
2FB7 ; [.FB41.0020.0004.98DF][.98DF.0000.0000.98DF] # KANGXI RADICAL EAT
2EDF ; [.FB41.0020.0004.98E0][.98E0.0000.0000.98E0] # CJK RADICAL EAT THREE
-2EDE ; [.FB41.0020.0004.98E0][.98E0.0000.0000.98E0][.0000.0139.001F.2EDE] # CJK RADICAL EAT TWO
+2EDE ; [.FB41.0020.0004.98E0][.98E0.0000.0000.98E0][.0000.0139.0004.2EDE] # CJK RADICAL EAT TWO
2FA02 ; [.FB41.0020.0002.98E2][.98E2.0000.0000.98E2] # CJK COMPATIBILITY IDEOGRAPH-2FA02
FA2A ; [.FB41.0020.0002.98EF][.98EF.0000.0000.98EF] # CJK COMPATIBILITY IDEOGRAPH-FA2A
FA2B ; [.FB41.0020.0002.98FC][.98FC.0000.0000.98FC] # CJK COMPATIBILITY IDEOGRAPH-FA2B
@@ -24865,7 +24876,7 @@ FA2C ; [.FB41.0020.0002.9928][.9928.0000.0000.9928] # CJK COMPATIBILITY IDEOGRA
2FA04 ; [.FB41.0020.0002.9929][.9929.0000.0000.9929] # CJK COMPATIBILITY IDEOGRAPH-2FA04
2EE0 ; [.FB41.0020.0004.9963][.9963.0000.0000.9963] # CJK RADICAL C-SIMPLIFIED EAT
2FB8 ; [.FB41.0020.0004.9996][.9996.0000.0000.9996] # KANGXI RADICAL HEAD
-2EE1 ; [.FB41.0020.0004.9996][.9996.0000.0000.9996][.0000.0139.001F.2EE1] # CJK RADICAL HEAD
+2EE1 ; [.FB41.0020.0004.9996][.9996.0000.0000.9996][.0000.0139.0004.2EE1] # CJK RADICAL HEAD
2FB9 ; [.FB41.0020.0004.9999][.9999.0000.0000.9999] # KANGXI RADICAL FRAGRANT
2FA05 ; [.FB41.0020.0002.99A7][.99A7.0000.0000.99A7] # CJK COMPATIBILITY IDEOGRAPH-2FA05
2FBA ; [.FB41.0020.0004.99AC][.99AC.0000.0000.99AC] # KANGXI RADICAL HORSE
@@ -24875,7 +24886,7 @@ F91A ; [.FB41.0020.0002.99F1][.99F1.0000.0000.99F1] # CJK COMPATIBILITY IDEOGRA
F987 ; [.FB41.0020.0002.9A6A][.9A6A.0000.0000.9A6A] # CJK COMPATIBILITY IDEOGRAPH-F987
2EE2 ; [.FB41.0020.0004.9A6C][.9A6C.0000.0000.9A6C] # CJK RADICAL C-SIMPLIFIED HORSE
2FBB ; [.FB41.0020.0004.9AA8][.9AA8.0000.0000.9AA8] # KANGXI RADICAL BONE
-2EE3 ; [.FB41.0020.0004.9AA8][.9AA8.0000.0000.9AA8][.0000.0139.001F.2EE3] # CJK RADICAL BONE
+2EE3 ; [.FB41.0020.0004.9AA8][.9AA8.0000.0000.9AA8][.0000.0139.0004.2EE3] # CJK RADICAL BONE
2FBC ; [.FB41.0020.0004.9AD8][.9AD8.0000.0000.9AD8] # KANGXI RADICAL TALL
2FBD ; [.FB41.0020.0004.9ADF][.9ADF.0000.0000.9ADF] # KANGXI RADICAL HAIR
FACD ; [.FB41.0020.0002.9B12][.9B12.0000.0000.9B12] # CJK COMPATIBILITY IDEOGRAPH-FACD
@@ -24884,7 +24895,7 @@ FACD ; [.FB41.0020.0002.9B12][.9B12.0000.0000.9B12] # CJK COMPATIBILITY IDEOGRA
2FBF ; [.FB41.0020.0004.9B2F][.9B2F.0000.0000.9B2F] # KANGXI RADICAL SACRIFICIAL WINE
2FC0 ; [.FB41.0020.0004.9B32][.9B32.0000.0000.9B32] # KANGXI RADICAL CAULDRON
2FC1 ; [.FB41.0020.0004.9B3C][.9B3C.0000.0000.9B3C] # KANGXI RADICAL GHOST
-2EE4 ; [.FB41.0020.0004.9B3C][.9B3C.0000.0000.9B3C][.0000.0139.001F.2EE4] # CJK RADICAL GHOST
+2EE4 ; [.FB41.0020.0004.9B3C][.9B3C.0000.0000.9B3C][.0000.0139.0004.2EE4] # CJK RADICAL GHOST
2FC2 ; [.FB41.0020.0004.9B5A][.9B5A.0000.0000.9B5A] # KANGXI RADICAL FISH
F939 ; [.FB41.0020.0002.9B6F][.9B6F.0000.0000.9B6F] # CJK COMPATIBILITY IDEOGRAPH-F939
2FA0B ; [.FB41.0020.0002.9C40][.9C40.0000.0000.9C40] # CJK COMPATIBILITY IDEOGRAPH-2FA0B
@@ -24898,7 +24909,7 @@ F93A ; [.FB41.0020.0002.9DFA][.9DFA.0000.0000.9DFA] # CJK COMPATIBILITY IDEOGRA
F920 ; [.FB41.0020.0002.9E1E][.9E1E.0000.0000.9E1E] # CJK COMPATIBILITY IDEOGRAPH-F920
2EE6 ; [.FB41.0020.0004.9E1F][.9E1F.0000.0000.9E1F] # CJK RADICAL C-SIMPLIFIED BIRD
2FC4 ; [.FB41.0020.0004.9E75][.9E75.0000.0000.9E75] # KANGXI RADICAL SALT
-2EE7 ; [.FB41.0020.0004.9E75][.9E75.0000.0000.9E75][.0000.0139.001F.2EE7] # CJK RADICAL C-SIMPLIFIED SALT
+2EE7 ; [.FB41.0020.0004.9E75][.9E75.0000.0000.9E75][.0000.0139.0004.2EE7] # CJK RADICAL C-SIMPLIFIED SALT
F940 ; [.FB41.0020.0002.9E7F][.9E7F.0000.0000.9E7F] # CJK COMPATIBILITY IDEOGRAPH-F940
2FC5 ; [.FB41.0020.0004.9E7F][.9E7F.0000.0000.9E7F] # KANGXI RADICAL DEER
F988 ; [.FB41.0020.0002.9E97][.9E97.0000.0000.9E97] # CJK COMPATIBILITY IDEOGRAPH-F988
@@ -24927,22 +24938,22 @@ F989 ; [.FB41.0020.0002.9ECE][.9ECE.0000.0000.9ECE] # CJK COMPATIBILITY IDEOGRA
2FD0 ; [.FB41.0020.0004.9F3B][.9F3B.0000.0000.9F3B] # KANGXI RADICAL NOSE
FAD8 ; [.FB41.0020.0002.9F43][.9F43.0000.0000.9F43] # CJK COMPATIBILITY IDEOGRAPH-FAD8
2FD1 ; [.FB41.0020.0004.9F4A][.9F4A.0000.0000.9F4A] # KANGXI RADICAL EVEN
-2EEB ; [.FB41.0020.0004.9F4A][.9F4A.0000.0000.9F4A][.0000.0139.001F.2EEB] # CJK RADICAL J-SIMPLIFIED EVEN
+2EEB ; [.FB41.0020.0004.9F4A][.9F4A.0000.0000.9F4A][.0000.0139.0004.2EEB] # CJK RADICAL J-SIMPLIFIED EVEN
2EEC ; [.FB41.0020.0004.9F50][.9F50.0000.0000.9F50] # CJK RADICAL C-SIMPLIFIED EVEN
2FD2 ; [.FB41.0020.0004.9F52][.9F52.0000.0000.9F52] # KANGXI RADICAL TOOTH
-2EED ; [.FB41.0020.0004.9F52][.9F52.0000.0000.9F52][.0000.0139.001F.2EED] # CJK RADICAL J-SIMPLIFIED TOOTH
+2EED ; [.FB41.0020.0004.9F52][.9F52.0000.0000.9F52][.0000.0139.0004.2EED] # CJK RADICAL J-SIMPLIFIED TOOTH
2EEE ; [.FB41.0020.0004.9F7F][.9F7F.0000.0000.9F7F] # CJK RADICAL C-SIMPLIFIED TOOTH
F9C4 ; [.FB41.0020.0002.9F8D][.9F8D.0000.0000.9F8D] # CJK COMPATIBILITY IDEOGRAPH-F9C4
2FD3 ; [.FB41.0020.0004.9F8D][.9F8D.0000.0000.9F8D] # KANGXI RADICAL DRAGON
-2EEF ; [.FB41.0020.0004.9F8D][.9F8D.0000.0000.9F8D][.0000.0139.001F.2EEF] # CJK RADICAL J-SIMPLIFIED DRAGON
+2EEF ; [.FB41.0020.0004.9F8D][.9F8D.0000.0000.9F8D][.0000.0139.0004.2EEF] # CJK RADICAL J-SIMPLIFIED DRAGON
FAD9 ; [.FB41.0020.0002.9F8E][.9F8E.0000.0000.9F8E] # CJK COMPATIBILITY IDEOGRAPH-FAD9
2EF0 ; [.FB41.0020.0004.9F99][.9F99.0000.0000.9F99] # CJK RADICAL C-SIMPLIFIED DRAGON
F907 ; [.FB41.0020.0002.9F9C][.9F9C.0000.0000.9F9C] # CJK COMPATIBILITY IDEOGRAPH-F907
F908 ; [.FB41.0020.0002.9F9C][.9F9C.0000.0000.9F9C] # CJK COMPATIBILITY IDEOGRAPH-F908
FACE ; [.FB41.0020.0002.9F9C][.9F9C.0000.0000.9F9C] # CJK COMPATIBILITY IDEOGRAPH-FACE
2FD4 ; [.FB41.0020.0004.9F9C][.9F9C.0000.0000.9F9C] # KANGXI RADICAL TURTLE
-2EF1 ; [.FB41.0020.0004.9F9C][.9F9C.0000.0000.9F9C][.0000.0139.001F.2EF1] # CJK RADICAL TURTLE
-2EF2 ; [.FB41.0020.0004.9F9C][.9F9C.0000.0000.9F9C][.0000.013A.001F.2EF2] # CJK RADICAL J-SIMPLIFIED TURTLE
+2EF1 ; [.FB41.0020.0004.9F9C][.9F9C.0000.0000.9F9C][.0000.0139.0004.2EF1] # CJK RADICAL TURTLE
+2EF2 ; [.FB41.0020.0004.9F9C][.9F9C.0000.0000.9F9C][.0000.013A.0004.2EF2] # CJK RADICAL J-SIMPLIFIED TURTLE
2EF3 ; [.FB41.0020.0004.9F9F][.9F9F.0000.0000.9F9F] # CJK RADICAL C-SIMPLIFIED TURTLE
2FD5 ; [.FB41.0020.0004.9FA0][.9FA0.0000.0000.9FA0] # KANGXI RADICAL FLUTE
FA0E ; [.FB41.0020.0002.FA0E][.FA0E.0000.0000.FA0E] # CJK COMPATIBILITY IDEOGRAPH-FA0E
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/Makefile.PL b/gnu/usr.bin/perl/cpan/Unicode-Collate/Makefile.PL
index 3703385e737..37e51487305 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/Makefile.PL
@@ -12,19 +12,20 @@ if (-f "Collate.xs") {
}
WriteMakefile(
- 'AUTHOR' => 'SADAHIRO Tomoyuki <SADAHIRO@cpan.org>',
- 'ABSTRACT' => 'Unicode Collation Algorithm',
- 'INSTALLDIRS' => $] >= 5.007002 ? 'perl' : 'site',
- 'LICENSE' => 'perl',
- 'NAME' => 'Unicode::Collate',
- 'VERSION_FROM' => 'Collate.pm', # finds $VERSION
- 'clean' => $clean,
- 'PREREQ_PM' => {
- Carp => 0,
- constant => 0,
- DynaLoader => 0,
- File::Spec => 0,
- strict => 0,
- warnings => 0,
+ 'AUTHOR' => 'SADAHIRO Tomoyuki <SADAHIRO@cpan.org>',
+ 'ABSTRACT' => 'Unicode Collation Algorithm',
+ 'INSTALLDIRS' => ($] >= 5.007002 && $] < 5.011) ? 'perl' : 'site',
+ # see perl5110delta, @INC reorganization
+ 'LICENSE' => 'perl',
+ 'NAME' => 'Unicode::Collate',
+ 'VERSION_FROM' => 'Collate.pm', # finds $VERSION
+ 'clean' => $clean,
+ 'PREREQ_PM' => {
+ Carp => 0,
+ constant => 0,
+ DynaLoader => 0,
+ File::Spec => 0,
+ strict => 0,
+ warnings => 0,
},
);
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/README b/gnu/usr.bin/perl/cpan/Unicode-Collate/README
index 166d7e47e91..fdd837b983e 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/README
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/README
@@ -1,4 +1,4 @@
-Unicode/Collate version 0.89
+Unicode/Collate version 0.97
===============================
NAME
@@ -115,6 +115,6 @@ This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
The file Unicode/Collate/allkeys.txt was copied verbatim
-from http://www.unicode.org/Public/UCA/6.1.0/allkeys.txt
-For this file, Copyright (c) 2001-2011 Unicode, Inc.
+from http://www.unicode.org/Public/UCA/6.2.0/allkeys.txt
+For this file, Copyright (c) 2001-2012 Unicode, Inc.
Distributed under the Terms of Use in http://www.unicode.org/copyright.html
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/cjk_zy.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/cjk_zy.t
new file mode 100644
index 00000000000..8d8e5e0266b
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/cjk_zy.t
@@ -0,0 +1,87 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use strict;
+use warnings;
+BEGIN { $| = 1; print "1..26\n"; }
+my $count = 0;
+sub ok ($;$) {
+ my $p = my $r = shift;
+ if (@_) {
+ my $x = shift;
+ $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
+ }
+ print $p ? "ok" : "not ok", ' ', ++$count, "\n";
+}
+
+use Unicode::Collate;
+
+ok(1);
+
+#########################
+
+use Unicode::Collate::CJK::Zhuyin;
+
+my $collator = Unicode::Collate->new(
+ table => undef,
+ normalization => undef,
+ overrideCJK => \&Unicode::Collate::CJK::Zhuyin::weightZhuyin
+);
+
+sub hex_sort {
+ my @source = map pack('U', hex $_), split ' ', shift;
+ my @sorted = $collator->sort(@source);
+ return join " ", map sprintf("%04X", unpack 'U', $_), @sorted;
+}
+
+# 1
+
+$collator->change(level => 1);
+
+ok($collator->lt("\x{516B}", "\x{628A}"));
+ok($collator->lt("\x{628A}", "\x{5DF4}"));
+ok($collator->lt("\x{5DF4}", "\x{767D}"));
+ok($collator->lt("\x{767D}", "\x{5317}"));
+ok($collator->lt("\x{5317}", "\x{9F3B}"));
+ok($collator->lt("\x{9F3B}", "\x{4E0D}"));
+ok($collator->lt("\x{4E0D}", "\x{547D}"));
+ok($collator->lt("\x{547D}", "\x{6BCD}"));
+ok($collator->lt("\x{6BCD}", "\x{6253}"));
+ok($collator->lt("\x{6253}", "\x{7530}"));
+ok($collator->lt("\x{7530}", "\x{52AA}"));
+ok($collator->lt("\x{52AA}", "\x{529B}"));
+ok($collator->lt("\x{529B}", "\x{5375}"));
+ok($collator->lt("\x{5375}", "\x{5149}"));
+ok($collator->lt("\x{5149}", "\x{5915}"));
+ok($collator->lt("\x{5915}", "\x{4E09}"));
+ok($collator->lt("\x{4E09}", "\x{4E00}"));
+ok($collator->lt("\x{4E00}", "\x{7528}"));
+
+# Ext.B
+ok($collator->lt("\x{20000}", "\x{20001}"));
+ok($collator->lt("\x{20001}", "\x{20002}"));
+ok($collator->lt("\x{20002}", "\x{20003}"));
+ok($collator->lt("\x{20003}", "\x{20004}"));
+ok($collator->lt("\x{20004}", "\x{20005}"));
+
+# 24
+
+ok(hex_sort('4E00 4E8C 4E09 56DB 4E94 516D 4E03 516B 4E5D 5341'),
+ '516B 516D 4E5D 4E03 5341 56DB 4E09 4E8C 4E00 4E94');
+
+
+
+ok(hex_sort('4E0C 4E8D 4F5C 5140 554A 5750 57C3 5EA7 963F 9F3D 9F3E 9F44'),
+ '9F3E 4E0C 9F3D 9F44 4E8D 4F5C 5750 5EA7 963F 554A 57C3 5140');
+
+# 26
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/cjkrange.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/cjkrange.t
index 37fb9fd2797..e3d4f38d738 100755
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/cjkrange.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/cjkrange.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..379\n"; } # 1 + 42 x @Versions
+BEGIN { $| = 1; print "1..421\n"; } # 1 + 42 x @Versions
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -49,7 +49,7 @@ my $coll = Unicode::Collate->new(
# 2A700..2B734 are CJK UI Ext.C since UCA_Version 20 (Unicode 5.2).
# 2B740..2B81D are CJK UI Ext.D since UCA_Version 22 (Unicode 6.0).
-my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24);
+my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26);
for my $v (@Versions) {
$coll->change(UCA_Version => $v);
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/compatui.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/compatui.t
index 6fb01b892c8..822743ed8fe 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/compatui.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/compatui.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..631\n"; } # 1 + 70 x @Versions
+BEGIN { $| = 1; print "1..701\n"; } # 1 + 70 x @Versions
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -30,7 +30,7 @@ ok(1);
#########################
-my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24);
+my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26);
# 12 compatibility ideographs are treated as unified ideographs:
# FA0E, FA0F, FA11, FA13, FA14, FA1F, FA21, FA23, FA24, FA27, FA28, FA29.
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/default.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/default.t
index bec9c294fd2..14a96937e68 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/default.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/default.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..60\n"; }
+BEGIN { $| = 1; print "1..70\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -40,8 +40,6 @@ my $acute = _pack_U(0x0301);
my $hiragana = "\x{3042}\x{3044}";
my $katakana = "\x{30A2}\x{30A4}";
-##### 2..11
-
my $Collator = Unicode::Collate->new(
normalization => undef,
);
@@ -53,6 +51,8 @@ ok($Collator->version(), Unicode::Collate->Base_Unicode_Version);
ok($Collator->version, $Collator->Base_Unicode_Version);
ok($Collator->version(), $Collator->Base_Unicode_Version());
+# 6
+
ok($Collator->cmp("", ""), 0);
ok($Collator->eq("", ""));
ok($Collator->cmp("", "perl"), -1);
@@ -67,7 +67,7 @@ ok(
join(':', qw/ ACA ACHA ACIA ACKA ADA / ),
);
-##### 12..22
+# 11
ok($Collator->cmp("A$acute", $A_acute), 0); # @version 3.1.1 (prev: -1)
ok($Collator->cmp($a_acute, $A_acute), -1);
@@ -85,7 +85,7 @@ ok($Collator->lt("A", $A_acute));
ok($Collator->lt("A", $a_acute));
ok($Collator->lt($a_acute, $A_acute));
-##### 23..29
+# 22
$Collator->change(level => 2);
@@ -98,7 +98,7 @@ ok( $Collator->cmp($hiragana, $katakana), 0);
ok( $Collator->eq($hiragana, $katakana) );
ok( $Collator->ge($hiragana, $katakana) );
-##### 30..35
+# 29
# hangul
ok( $Collator->eq("a\x{AC00}b", "a\x{1100}\x{1161}b") );
@@ -108,7 +108,7 @@ ok( $Collator->lt("a\x{AC00}b", "a\x{AE00}b") );
ok( $Collator->gt("a\x{D7A3}b", "a\x{C544}b") );
ok( $Collator->lt("a\x{C544}b", "a\x{30A2}b") ); # hangul < hiragana
-##### 36..44
+# 35
$Collator->change(%old_level, katakana_before_hiragana => 1);
@@ -123,7 +123,7 @@ ok( $Collator->ne($hiragana, $katakana) );
ok( $Collator->gt($hiragana, $katakana) );
ok( $Collator->ge($hiragana, $katakana) );
-##### 45..50
+# 44
$Collator->change(upper_before_lower => 1);
@@ -134,14 +134,14 @@ ok( $Collator->cmp($hiragana, $katakana), 1);
ok( $Collator->ge($hiragana, $katakana), 1);
ok( $Collator->gt($hiragana, $katakana), 1);
-##### 51..52
+# 50
$Collator->change(katakana_before_hiragana => 0);
ok( $Collator->cmp("abc", "ABC"), 1);
ok( $Collator->cmp($hiragana, $katakana), -1);
-##### 53..54
+# 52
$Collator->change(upper_before_lower => 0);
@@ -150,19 +150,44 @@ ok( $Collator->le("abc", "ABC") );
ok( $Collator->cmp($hiragana, $katakana), -1);
ok( $Collator->lt($hiragana, $katakana) );
-##### 55..60
+# 56
$Collator->change(level => 1);
-my $SupCyril = Unicode::Collate->new(
+my $Tailored = Unicode::Collate->new(
normalization => undef,
suppress => [0x400..0x4FF],
level => 1,
+ entry => '0000 ; [.FFFE.0020.0005.0000]',
);
# Ka vs Kje
ok($Collator->gt("\x{45C}", "\x{43A}"));
ok($Collator->gt("\x{40C}", "\x{41A}"));
-ok($SupCyril->gt("\x{45C}", "\x{43A}"));
-ok($SupCyril->gt("\x{40C}", "\x{41A}"));
+ok($Tailored->gt("\x{45C}", "\x{43A}"));
+ok($Tailored->gt("\x{40C}", "\x{41A}"));
+
+# 60
+
+ok($Collator->eq("abc\0", "abc"));
+ok($Tailored->gt("abc\0", "abc\x{4E00}"));
+ok($Tailored->gt("abc\0", "abc\x{FFFD}"));
+ok($Tailored->gt("abc\0", "abc\x{FFFD}"));
+
+# 64
+
+$Tailored->change(UCA_Version => 9);
+
+ok($Tailored->gt("abc\0", "abc\x{4E00}"));
+ok($Tailored->gt("abc\0", "abc\x{FFFD}"));
+ok($Tailored->gt("abc\0", "abc\x{FFFD}"));
+
+# 67
+
+$Tailored->change(UCA_Version => 8);
+
+ok($Tailored->gt("abc\0", "abc\x{4E00}"));
+ok($Tailored->gt("abc\0", "abc\x{FFFD}"));
+ok($Tailored->gt("abc\0", "abc\x{FFFD}"));
+# 70
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/hangtype.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/hangtype.t
index b85a308f120..5aa7d491533 100755
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/hangtype.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/hangtype.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..451\n"; } # 1 + 50 x @Versions
+BEGIN { $| = 1; print "1..501\n"; } # 1 + 50 x @Versions
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -30,7 +30,7 @@ ok(1);
#########################
-my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24);
+my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26);
for my $v (@Versions) {
ok(Unicode::Collate::getHST(0x0000, $v), '');
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/ident.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/ident.t
new file mode 100644
index 00000000000..4f132d4ec1f
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/ident.t
@@ -0,0 +1,161 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use strict;
+use warnings;
+BEGIN { $| = 1; print "1..45\n"; }
+my $count = 0;
+sub ok ($;$) {
+ my $p = my $r = shift;
+ if (@_) {
+ my $x = shift;
+ $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
+ }
+ print $p ? "ok" : "not ok", ' ', ++$count, "\n";
+}
+
+use Unicode::Collate;
+
+ok(1);
+
+#########################
+
+my $Collator = Unicode::Collate->new(
+ table => 'keys.txt',
+ normalization => undef,
+);
+
+# [001F] UNIT SEPARATOR
+{
+ ok($Collator->eq("\0", "\x1F"));
+ ok($Collator->eq("\x1F", "\x{200B}"));
+ ok($Collator->eq("\0", "\x{200B}"));
+ ok($Collator->eq("\x{313}", "\x{343}"));
+ ok($Collator->eq("\x{2000}", "\x{2001}"));
+ ok($Collator->eq("\x{200B}", "\x{200C}"));
+ ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
+
+ $Collator->change(identical => 1);
+
+ ok($Collator->lt("\0", "\x1F"));
+ ok($Collator->lt("\x1F", "\x{200B}"));
+ ok($Collator->lt("\0", "\x{200B}"));
+ ok($Collator->lt("\x{313}", "\x{343}"));
+ ok($Collator->lt("\x{2000}", "\x{2001}"));
+ ok($Collator->lt("\x{200B}", "\x{200C}"));
+ ok($Collator->gt("\x{304C}", "\x{304B}\x{3099}"));
+
+ $Collator->change(identical => 0);
+
+ ok($Collator->eq("\0", "\x1F"));
+ ok($Collator->eq("\x1F", "\x{200B}"));
+ ok($Collator->eq("\0", "\x{200B}"));
+ ok($Collator->eq("\x{313}", "\x{343}"));
+ ok($Collator->eq("\x{2000}", "\x{2001}"));
+ ok($Collator->eq("\x{200B}", "\x{200C}"));
+ ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
+}
+
+#### 22
+
+eval { require Unicode::Normalize };
+if (!$@) {
+ $Collator->change(normalization => "NFD");
+
+ $Collator->change(identical => 1);
+
+ ok($Collator->lt("\0", "\x{200B}"));
+ ok($Collator->eq("\x{313}", "\x{343}"));
+ ok($Collator->lt("\x{2000}", "\x{2001}"));
+ ok($Collator->lt("\x{200B}", "\x{200C}"));
+ ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
+
+ $Collator->change(identical => 0);
+
+ ok($Collator->eq("\0", "\x{200B}"));
+ ok($Collator->eq("\x{313}", "\x{343}"));
+ ok($Collator->eq("\x{2000}", "\x{2001}"));
+ ok($Collator->eq("\x{200B}", "\x{200C}"));
+ ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
+} else {
+ ok(1) for 1..10;
+}
+
+$Collator->change(normalization => undef, identical => 1);
+
+##### 32
+
+ok($Collator->viewSortKey("\0"), '[| | | | 0000 0000]');
+ok($Collator->viewSortKey("\x{200B}"), '[| | | | 0000 200B]');
+
+ok($Collator->viewSortKey('a'),
+ '[0A15 | 0020 | 0002 | FFFF | 0000 0061]');
+
+ok($Collator->viewSortKey("\x{304C}"),
+ '[1926 | 0020 013D | 000E 0002 | FFFF FFFF | 0000 304C]');
+
+ok($Collator->viewSortKey("\x{100000}"),
+ '[FBE0 8000 | 0020 | 0002 | FFFF FFFF | 0010 0000]');
+
+eval { require Unicode::Normalize };
+if (!$@) {
+ $Collator->change(normalization => "NFD");
+
+ ok($Collator->viewSortKey("\x{304C}"),
+ '[1926 | 0020 013D | 000E 0002 | FFFF FFFF | 0000 304B 0000 3099]');
+} else {
+ ok(1);
+}
+
+$Collator->change(normalization => undef);
+
+##### 38
+
+$Collator->change(level => 3);
+
+ok($Collator->viewSortKey("\x{304C}"),
+ '[1926 | 0020 013D | 000E 0002 | | 0000 304C]');
+
+$Collator->change(level => 2);
+
+ok($Collator->viewSortKey("\x{304C}"),
+ '[1926 | 0020 013D | | | 0000 304C]');
+
+$Collator->change(level => 1);
+
+ok($Collator->viewSortKey("\x{304C}"),
+ '[1926 | | | | 0000 304C]');
+
+##### 41
+
+$Collator->change(UCA_Version => 8);
+
+ok($Collator->viewSortKey("\x{304C}"),
+ '[1926||||0000 304C]');
+
+$Collator->change(level => 2);
+
+ok($Collator->viewSortKey("\x{304C}"),
+ '[1926|0020 013D|||0000 304C]');
+
+$Collator->change(level => 3);
+
+ok($Collator->viewSortKey("\x{304C}"),
+ '[1926|0020 013D|000E 0002||0000 304C]');
+
+$Collator->change(level => 4);
+
+ok($Collator->viewSortKey("\x{304C}"),
+ '[1926|0020 013D|000E 0002|FFFF FFFF|0000 304C]');
+
+##### 45
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/index.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/index.t
index b3433a9e5f5..11cf618f5a5 100755
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/index.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/index.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..71\n"; }
+BEGIN { $| = 1; print "1..91\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -28,8 +28,6 @@ use Unicode::Collate;
ok(1);
-#########################
-
our $IsEBCDIC = ord("A") != 0x41;
my $Collator = Unicode::Collate->new(
@@ -37,7 +35,7 @@ my $Collator = Unicode::Collate->new(
normalization => undef,
);
-##############
+##### 1
my %old_level = $Collator->change(level => 2);
@@ -64,7 +62,7 @@ if (my($pos,$len) = $Collator->index($str, $sub)) {
ok($str, $orig);
-##############
+##### 3
my $match;
@@ -126,7 +124,7 @@ if (my($pos, $len) = $Collator->index($str, $sub)) {
}
ok($match, $ret);
-##############
+##### 9
$Collator->change(level => 1);
@@ -165,7 +163,7 @@ if (my($pos,$len) = $Collator->index("", "abc")) {
}
ok($match, undef);
-##############
+##### 13
$Collator->change(level => 1);
@@ -201,7 +199,7 @@ if (my($pos, $len) = $Collator->index($str, $sub)) {
}
ok($match, $ret);
-##############
+##### 16
$Collator->change(level => 1);
@@ -246,7 +244,7 @@ ok($match, undef);
$Collator->change(%old_level);
-##############
+##### 22
my @ret;
@@ -318,7 +316,7 @@ ok($ret, undef);
$Collator->change(%old_level);
-##############
+##### 38
$Collator->change(level => 1);
@@ -349,6 +347,8 @@ $Collator->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
ok($str, "<b>Camel</b> donkey zebra <b>came\x{301}l</b> "
. "<b>CAMEL</b> horse <b>cAm\0E\0L</b>...");
+##### 47
+
# http://www.xray.mpe.mpg.de/mailing-lists/perl-unicode/2010-09/msg00014.html
# when the substring includes an ignorable element like a space...
@@ -376,6 +376,8 @@ $str = "Camel donkey zebra camex{301}l CAMEL horse cAmEL-horse...";
$Collator->gsubst($str, "ca\x{300}melho\x{302}rse", sub { "=$_[0]=" });
ok($str, "Camel donkey zebra camex{301}l =CAMEL horse= =cAmEL-horse=...");
+##### 53
+
$Collator->change(level => 3);
$str = "P\cBe\x{300}\cBrl and PERL.";
@@ -400,7 +402,7 @@ ok($str, "P\cBe\x{300}\cBrl and PERL.");
$Collator->change(%old_level);
-##############
+##### 61
$str = "Perl and Camel";
$ret = $Collator->gsubst($str, "\cA\cA\0", "AB");
@@ -422,7 +424,7 @@ $ret = $Collator->gsubst($str, 'PP', "ABC");
ok($ret, 2);
ok($str, "ABCABCP");
-##############
+##### 69
# Shifted; ignorable after variable
@@ -434,3 +436,99 @@ $Collator->change(alternate => 'Non-ignorable');
($ret) = $Collator->match("A?\x{300}!\x{301}B\x{315}", "?!");
ok($ret, undef);
+##### 71
+
+# Now preprocess is defined.
+
+$Collator->change(preprocess => sub {''});
+
+eval { $Collator->index("", "") };
+ok($@ && $@ =~ /Don't use Preprocess with index\(\)/);
+
+eval { $Collator->index("a", "a") };
+ok($@ && $@ =~ /Don't use Preprocess with index\(\)/);
+
+eval { $Collator->match("", "") };
+ok($@ && $@ =~ /Don't use Preprocess with.*match\(\)/);
+
+eval { $Collator->match("a", "a") };
+ok($@ && $@ =~ /Don't use Preprocess with.*match\(\)/);
+
+$Collator->change(preprocess => sub { uc shift });
+
+eval { $Collator->index("", "") };
+ok($@ && $@ =~ /Don't use Preprocess with index\(\)/);
+
+eval { $Collator->index("a", "a") };
+ok($@ && $@ =~ /Don't use Preprocess with index\(\)/);
+
+eval { $Collator->match("", "") };
+ok($@ && $@ =~ /Don't use Preprocess with.*match\(\)/);
+
+eval { $Collator->match("a", "a") };
+ok($@ && $@ =~ /Don't use Preprocess with.*match\(\)/);
+
+##### 79
+
+eval { require Unicode::Normalize };
+my $has_norm = !$@;
+
+if ($has_norm) {
+ # Now preprocess and normalization are defined.
+
+ $Collator->change(normalization => 'NFD');
+
+ eval { $Collator->index("", "") };
+ ok($@ && $@ =~ /Don't use Preprocess with index\(\)/);
+
+ eval { $Collator->index("a", "a") };
+ ok($@ && $@ =~ /Don't use Preprocess with index\(\)/);
+
+ eval { $Collator->match("", "") };
+ ok($@ && $@ =~ /Don't use Preprocess with.*match\(\)/);
+
+ eval { $Collator->match("a", "a") };
+ ok($@ && $@ =~ /Don't use Preprocess with.*match\(\)/);
+} else {
+ ok(1) for 1..4;
+}
+
+$Collator->change(preprocess => undef);
+
+if ($has_norm) {
+ # Now only normalization is defined.
+
+ eval { $Collator->index("", "") };
+ ok($@ && $@ =~ /Don't use Normalization with index\(\)/);
+
+ eval { $Collator->index("a", "a") };
+ ok($@ && $@ =~ /Don't use Normalization with index\(\)/);
+
+ eval { $Collator->match("", "") };
+ ok($@ && $@ =~ /Don't use Normalization with.*match\(\)/);
+
+ eval { $Collator->match("a", "a") };
+ ok($@ && $@ =~ /Don't use Normalization with.*match\(\)/);
+
+ $Collator->change(normalization => undef);
+} else {
+ ok(1) for 1..4;
+}
+
+##### 87
+
+# Now preprocess and normalization are undef.
+
+eval { $Collator->index("", "") };
+ok(!$@);
+
+eval { $Collator->index("a", "a") };
+ok(!$@);
+
+eval { $Collator->match("", "") };
+ok(!$@);
+
+eval { $Collator->match("a", "a") };
+ok(!$@);
+
+##### 91
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_as.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_as.t
index 5fc95275716..e188f640781 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_as.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_as.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..10\n"; }
+BEGIN { $| = 1; print "1..24\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -37,13 +37,22 @@ ok($objAs->getlocale, 'as');
$objAs->change(level => 1);
-ok($objAs->lt("\x{994}", "\x{982}"));
-ok($objAs->lt("\x{982}", "\x{981}"));
-ok($objAs->lt("\x{981}", "\x{983}"));
-ok($objAs->lt("\x{983}", "\x{995}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objAs->change(highestFFFF => 1) if $h;
-ok($objAs->lt("\x{9A3}","\x{9A4}\x{9CD}\x{200D}"));
-ok($objAs->lt("\x{9A4}\x{9CD}\x{200D}","\x{9A4}"));
+ ok($objAs->lt("\x{993}$t", "\x{994}"));
+ ok($objAs->lt("\x{994}$t", "\x{982}"));
+ ok($objAs->lt("\x{982}$t", "\x{981}"));
+ ok($objAs->lt("\x{981}$t", "\x{983}"));
+ ok($objAs->lt("\x{983}$t", "\x{995}"));
-ok($objAs->lt("\x{9B9}", "\x{995}\x{9CD}\x{9B7}"));
-ok($objAs->lt("\x{995}\x{9CD}\x{9B7}", "\x{9BD}"));
+ ok($objAs->lt("\x{9A2}$t", "\x{9A3}"));
+ ok($objAs->lt("\x{9A3}$t", "\x{9A4}\x{9CD}\x{200D}"));
+ ok($objAs->lt("\x{9A4}\x{9CD}\x{200D}$t", "\x{9A4}"));
+
+ ok($objAs->lt("\x{9B8}$t", "\x{9B9}"));
+ ok($objAs->lt("\x{9B9}$t", "\x{995}\x{9CD}\x{9B7}"));
+ ok($objAs->lt("\x{995}\x{9CD}\x{9B7}$t", "\x{9BD}"));
+}
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_bn.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_bn.t
index 50c6abc75c4..f0fd8268290 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_bn.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_bn.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..6\n"; }
+BEGIN { $| = 1; print "1..12\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -37,8 +37,14 @@ ok($objBn->getlocale, 'bn');
$objBn->change(level => 1);
-ok($objBn->lt("\x{994}", "\x{982}"));
-ok($objBn->lt("\x{982}", "\x{983}"));
-ok($objBn->lt("\x{983}", "\x{981}"));
-ok($objBn->lt("\x{981}", "\x{995}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objBn->change(highestFFFF => 1) if $h;
+ ok($objBn->lt("\x{993}$t", "\x{994}"));
+ ok($objBn->lt("\x{994}$t", "\x{982}"));
+ ok($objBn->lt("\x{982}$t", "\x{983}"));
+ ok($objBn->lt("\x{983}$t", "\x{981}"));
+ ok($objBn->lt("\x{981}$t", "\x{995}"));
+}
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_bscy.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_bscy.t
new file mode 100644
index 00000000000..b2283ddf501
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_bscy.t
@@ -0,0 +1,209 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use strict;
+use warnings;
+BEGIN { $| = 1; print "1..210\n"; }
+my $count = 0;
+sub ok ($;$) {
+ my $p = my $r = shift;
+ if (@_) {
+ my $x = shift;
+ $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
+ }
+ print $p ? "ok" : "not ok", ' ', ++$count, "\n";
+}
+
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objBsCyrl = Unicode::Collate::Locale->
+ new(locale => 'BS-CYRL', normalization => undef);
+
+ok($objBsCyrl->getlocale, 'bs_Cyrl');
+
+$objBsCyrl->change(level => 1);
+
+ok($objBsCyrl->eq("\x{4D1}", "\x{430}"));
+ok($objBsCyrl->eq("\x{4D0}", "\x{410}"));
+ok($objBsCyrl->eq("\x{4D3}", "\x{430}"));
+ok($objBsCyrl->eq("\x{4D2}", "\x{410}"));
+ok($objBsCyrl->eq("\x{4DB}", "\x{4D9}"));
+ok($objBsCyrl->eq("\x{4DA}", "\x{4D8}"));
+ok($objBsCyrl->eq("\x{453}", "\x{433}"));
+ok($objBsCyrl->eq("\x{403}", "\x{413}"));
+ok($objBsCyrl->eq("\x{450}", "\x{435}")); # not contraction
+ok($objBsCyrl->eq("\x{400}", "\x{415}")); # not contraction
+ok($objBsCyrl->eq("\x{451}", "\x{435}")); # not contraction
+ok($objBsCyrl->eq("\x{401}", "\x{415}")); # not contraction
+ok($objBsCyrl->eq("\x{4D7}", "\x{435}"));
+ok($objBsCyrl->eq("\x{4D6}", "\x{415}"));
+ok($objBsCyrl->eq("\x{4C2}", "\x{436}")); # not contraction
+ok($objBsCyrl->eq("\x{4C1}", "\x{416}")); # not contraction
+ok($objBsCyrl->eq("\x{4DD}", "\x{436}"));
+ok($objBsCyrl->eq("\x{4DC}", "\x{416}"));
+ok($objBsCyrl->eq("\x{4DF}", "\x{437}"));
+ok($objBsCyrl->eq("\x{4DE}", "\x{417}"));
+ok($objBsCyrl->eq("\x{45D}", "\x{438}")); # not contraction
+ok($objBsCyrl->eq("\x{40D}", "\x{418}")); # not contraction
+ok($objBsCyrl->eq("\x{4E3}", "\x{438}")); # not contraction
+ok($objBsCyrl->eq("\x{4E2}", "\x{418}")); # not contraction
+ok($objBsCyrl->eq("\x{4E5}", "\x{438}"));
+ok($objBsCyrl->eq("\x{4E4}", "\x{418}"));
+ok($objBsCyrl->eq("\x{457}", "\x{456}"));
+ok($objBsCyrl->eq("\x{407}", "\x{406}"));
+ok($objBsCyrl->eq("\x{439}", "\x{438}"));
+ok($objBsCyrl->eq("\x{419}", "\x{418}"));
+ok($objBsCyrl->eq("\x{4E7}", "\x{43E}"));
+ok($objBsCyrl->eq("\x{4E6}", "\x{41E}"));
+ok($objBsCyrl->eq("\x{4EB}", "\x{4E9}"));
+ok($objBsCyrl->eq("\x{4EA}", "\x{4E8}"));
+ok($objBsCyrl->eq("\x{45C}", "\x{43A}"));
+ok($objBsCyrl->eq("\x{40C}", "\x{41A}"));
+ok($objBsCyrl->eq("\x{4EF}", "\x{443}")); # not contraction
+ok($objBsCyrl->eq("\x{4EE}", "\x{423}")); # not contraction
+ok($objBsCyrl->eq("\x{45E}", "\x{443}"));
+ok($objBsCyrl->eq("\x{40E}", "\x{423}"));
+ok($objBsCyrl->eq("\x{4F1}", "\x{443}"));
+ok($objBsCyrl->eq("\x{4F0}", "\x{423}"));
+ok($objBsCyrl->eq("\x{4F3}", "\x{443}"));
+ok($objBsCyrl->eq("\x{4F2}", "\x{423}"));
+ok($objBsCyrl->eq("\x{4F5}", "\x{447}"));
+ok($objBsCyrl->eq("\x{4F4}", "\x{427}"));
+ok($objBsCyrl->eq("\x{4F9}", "\x{44B}"));
+ok($objBsCyrl->eq("\x{4F8}", "\x{42B}"));
+ok($objBsCyrl->eq("\x{4ED}", "\x{44D}"));
+ok($objBsCyrl->eq("\x{4EC}", "\x{42D}"));
+ok($objBsCyrl->eq("\x{477}", "\x{475}"));
+ok($objBsCyrl->eq("\x{476}", "\x{474}"));
+
+# 54
+
+$objBsCyrl->change(level => 2);
+
+ok($objBsCyrl->gt("\x{4D1}", "\x{430}"));
+ok($objBsCyrl->gt("\x{4D0}", "\x{410}"));
+ok($objBsCyrl->gt("\x{4D3}", "\x{430}"));
+ok($objBsCyrl->gt("\x{4D2}", "\x{410}"));
+ok($objBsCyrl->gt("\x{4DB}", "\x{4D9}"));
+ok($objBsCyrl->gt("\x{4DA}", "\x{4D8}"));
+ok($objBsCyrl->gt("\x{453}", "\x{433}"));
+ok($objBsCyrl->gt("\x{403}", "\x{413}"));
+ok($objBsCyrl->gt("\x{450}", "\x{435}")); # not contraction
+ok($objBsCyrl->gt("\x{400}", "\x{415}")); # not contraction
+ok($objBsCyrl->gt("\x{451}", "\x{435}")); # not contraction
+ok($objBsCyrl->gt("\x{401}", "\x{415}")); # not contraction
+ok($objBsCyrl->gt("\x{4D7}", "\x{435}"));
+ok($objBsCyrl->gt("\x{4D6}", "\x{415}"));
+ok($objBsCyrl->gt("\x{4C2}", "\x{436}")); # not contraction
+ok($objBsCyrl->gt("\x{4C1}", "\x{416}")); # not contraction
+ok($objBsCyrl->gt("\x{4DD}", "\x{436}"));
+ok($objBsCyrl->gt("\x{4DC}", "\x{416}"));
+ok($objBsCyrl->gt("\x{4DF}", "\x{437}"));
+ok($objBsCyrl->gt("\x{4DE}", "\x{417}"));
+ok($objBsCyrl->gt("\x{45D}", "\x{438}")); # not contraction
+ok($objBsCyrl->gt("\x{40D}", "\x{418}")); # not contraction
+ok($objBsCyrl->gt("\x{4E3}", "\x{438}")); # not contraction
+ok($objBsCyrl->gt("\x{4E2}", "\x{418}")); # not contraction
+ok($objBsCyrl->gt("\x{4E5}", "\x{438}"));
+ok($objBsCyrl->gt("\x{4E4}", "\x{418}"));
+ok($objBsCyrl->gt("\x{457}", "\x{456}"));
+ok($objBsCyrl->gt("\x{407}", "\x{406}"));
+ok($objBsCyrl->gt("\x{439}", "\x{438}"));
+ok($objBsCyrl->gt("\x{419}", "\x{418}"));
+ok($objBsCyrl->gt("\x{4E7}", "\x{43E}"));
+ok($objBsCyrl->gt("\x{4E6}", "\x{41E}"));
+ok($objBsCyrl->gt("\x{4EB}", "\x{4E9}"));
+ok($objBsCyrl->gt("\x{4EA}", "\x{4E8}"));
+ok($objBsCyrl->gt("\x{45C}", "\x{43A}"));
+ok($objBsCyrl->gt("\x{40C}", "\x{41A}"));
+ok($objBsCyrl->gt("\x{4EF}", "\x{443}")); # not contraction
+ok($objBsCyrl->gt("\x{4EE}", "\x{423}")); # not contraction
+ok($objBsCyrl->gt("\x{45E}", "\x{443}"));
+ok($objBsCyrl->gt("\x{40E}", "\x{423}"));
+ok($objBsCyrl->gt("\x{4F1}", "\x{443}"));
+ok($objBsCyrl->gt("\x{4F0}", "\x{423}"));
+ok($objBsCyrl->gt("\x{4F3}", "\x{443}"));
+ok($objBsCyrl->gt("\x{4F2}", "\x{423}"));
+ok($objBsCyrl->gt("\x{4F5}", "\x{447}"));
+ok($objBsCyrl->gt("\x{4F4}", "\x{427}"));
+ok($objBsCyrl->gt("\x{4F9}", "\x{44B}"));
+ok($objBsCyrl->gt("\x{4F8}", "\x{42B}"));
+ok($objBsCyrl->gt("\x{4ED}", "\x{44D}"));
+ok($objBsCyrl->gt("\x{4EC}", "\x{42D}"));
+ok($objBsCyrl->gt("\x{477}", "\x{475}"));
+ok($objBsCyrl->gt("\x{476}", "\x{474}"));
+
+# 106
+
+$objBsCyrl->change(level => 3);
+
+for my $i ("", "\0") {
+ ok($objBsCyrl->eq("\x{4D1}", "\x{430}$i\x{306}"));
+ ok($objBsCyrl->eq("\x{4D0}", "\x{410}$i\x{306}"));
+ ok($objBsCyrl->eq("\x{4D3}", "\x{430}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4D2}", "\x{410}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4DB}", "\x{4D9}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4DA}", "\x{4D8}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{453}", "\x{433}$i\x{301}"));
+ ok($objBsCyrl->eq("\x{403}", "\x{413}$i\x{301}"));
+ ok($objBsCyrl->eq("\x{450}", "\x{435}$i\x{300}")); # not contraction
+ ok($objBsCyrl->eq("\x{400}", "\x{415}$i\x{300}")); # not contraction
+ ok($objBsCyrl->eq("\x{451}", "\x{435}$i\x{308}")); # not contraction
+ ok($objBsCyrl->eq("\x{401}", "\x{415}$i\x{308}")); # not contraction
+ ok($objBsCyrl->eq("\x{4D7}", "\x{435}$i\x{306}"));
+ ok($objBsCyrl->eq("\x{4D6}", "\x{415}$i\x{306}"));
+ ok($objBsCyrl->eq("\x{4C2}", "\x{436}$i\x{306}")); # not contraction
+ ok($objBsCyrl->eq("\x{4C1}", "\x{416}$i\x{306}")); # not contraction
+ ok($objBsCyrl->eq("\x{4DD}", "\x{436}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4DC}", "\x{416}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4DF}", "\x{437}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4DE}", "\x{417}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{45D}", "\x{438}$i\x{300}")); # not contraction
+ ok($objBsCyrl->eq("\x{40D}", "\x{418}$i\x{300}")); # not contraction
+ ok($objBsCyrl->eq("\x{4E3}", "\x{438}$i\x{304}")); # not contraction
+ ok($objBsCyrl->eq("\x{4E2}", "\x{418}$i\x{304}")); # not contraction
+ ok($objBsCyrl->eq("\x{4E5}", "\x{438}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4E4}", "\x{418}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{457}", "\x{456}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{407}", "\x{406}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{439}", "\x{438}$i\x{306}"));
+ ok($objBsCyrl->eq("\x{419}", "\x{418}$i\x{306}"));
+ ok($objBsCyrl->eq("\x{4E7}", "\x{43E}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4E6}", "\x{41E}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4EB}", "\x{4E9}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4EA}", "\x{4E8}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{45C}", "\x{43A}$i\x{301}"));
+ ok($objBsCyrl->eq("\x{40C}", "\x{41A}$i\x{301}"));
+ ok($objBsCyrl->eq("\x{4EF}", "\x{443}$i\x{304}")); # not contraction
+ ok($objBsCyrl->eq("\x{4EE}", "\x{423}$i\x{304}")); # not contraction
+ ok($objBsCyrl->eq("\x{45E}", "\x{443}$i\x{306}"));
+ ok($objBsCyrl->eq("\x{40E}", "\x{423}$i\x{306}"));
+ ok($objBsCyrl->eq("\x{4F1}", "\x{443}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4F0}", "\x{423}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4F3}", "\x{443}$i\x{30B}"));
+ ok($objBsCyrl->eq("\x{4F2}", "\x{423}$i\x{30B}"));
+ ok($objBsCyrl->eq("\x{4F5}", "\x{447}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4F4}", "\x{427}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4F9}", "\x{44B}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4F8}", "\x{42B}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4ED}", "\x{44D}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{4EC}", "\x{42D}$i\x{308}"));
+ ok($objBsCyrl->eq("\x{477}", "\x{475}$i\x{30F}"));
+ ok($objBsCyrl->eq("\x{476}", "\x{474}$i\x{30F}"));
+}
+
+# 210
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cjk.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cjk.t
index 60881e6858e..79f0d6d3bef 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cjk.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cjk.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..2692\n"; }
+BEGIN { $| = 1; print "1..3589\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -45,7 +45,12 @@ my $objZhS = Unicode::Collate::Locale->
ok($objZhS->getlocale, 'zh__stroke');
-for my $obj ($objDefault, $objZhP, $objZhS) {
+my $objZhZ = Unicode::Collate::Locale->
+ new(locale => 'ZH__zhuyin', normalization => undef);
+
+ok($objZhZ->getlocale, 'zh__zhuyin');
+
+for my $obj ($objDefault, $objZhP, $objZhS, $objZhZ) {
for my $lev (2, 3) {
$obj->change(level => $lev);
my $r = $lev == 2 ? 0 : 1;
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cjkc.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cjkc.t
index 12f2afa0bbe..4f9f9e9152b 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cjkc.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_cjkc.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..7022\n"; }
+BEGIN { $| = 1; print "1..8025\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -65,7 +65,12 @@ my $objS = Unicode::Collate::Locale->
ok($objS->getlocale, 'zh__stroke');
-for my $obj ($objDefault, $objB, $objG, $objJ, $objK, $objP, $objS) {
+my $objZ = Unicode::Collate::Locale->
+ new(locale => 'ZH__zhuyin', normalization => undef);
+
+ok($objZ->getlocale, 'zh__zhuyin');
+
+for my $obj ($objDefault, $objB, $objG, $objJ, $objK, $objP, $objS, $objZ) {
$obj->change(level => 3);
ok($obj->eq("\x{4E0D}", "\x{F967}"));
ok($obj->eq("\x{4E26}", "\x{FA70}"));
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ee.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ee.t
new file mode 100644
index 00000000000..3b0ea274a79
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ee.t
@@ -0,0 +1,190 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use strict;
+use warnings;
+BEGIN { $| = 1; print "1..120\n"; }
+my $count = 0;
+sub ok ($;$) {
+ my $p = my $r = shift;
+ if (@_) {
+ my $x = shift;
+ $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
+ }
+ print $p ? "ok" : "not ok", ' ', ++$count, "\n";
+}
+
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objEe = Unicode::Collate::Locale->
+ new(locale => 'EE', normalization => undef);
+
+ok($objEe->getlocale, 'ee');
+
+# 2
+
+$objEe->change(level => 1);
+
+ok($objEe->lt("d", "d\x{292}"));
+ok($objEe->gt("dz","d\x{292}"));
+ok($objEe->lt("dz","\x{256}"));
+ok($objEe->gt("e", "\x{256}"));
+ok($objEe->lt("e", "\x{25B}"));
+ok($objEe->gt("f", "\x{25B}"));
+ok($objEe->lt("f", "\x{192}"));
+ok($objEe->gt("g", "\x{192}"));
+
+ok($objEe->lt("gz","gb"));
+ok($objEe->lt("gb","\x{263}"));
+ok($objEe->gt("h", "\x{263}"));
+ok($objEe->lt("h", "hz"));
+ok($objEe->lt("hz","x"));
+ok($objEe->lt("x", "i"));
+
+# 16
+
+ok($objEe->lt("kz","kp"));
+ok($objEe->lt("kp","l"));
+ok($objEe->lt("nz","ny"));
+ok($objEe->lt("ny","\x{14B}"));
+ok($objEe->gt("o", "\x{14B}"));
+ok($objEe->lt("o", "\x{254}"));
+ok($objEe->gt("p", "\x{254}"));
+
+ok($objEe->lt("tz","ts"));
+ok($objEe->lt("ts","u"));
+ok($objEe->lt("u", "v"));
+ok($objEe->lt("v", "\x{28B}"));
+ok($objEe->gt("w", "\x{28B}"));
+
+# 28
+
+ok($objEe->eq("\x{302}", "\x{30C}"));
+ok($objEe->eq("a\x{302}", "a\x{30C}"));
+ok($objEe->eq("A\x{302}", "A\x{30C}"));
+ok($objEe->eq("e\x{302}", "e\x{30C}"));
+ok($objEe->eq("E\x{302}", "E\x{30C}"));
+ok($objEe->eq("i\x{302}", "i\x{30C}"));
+ok($objEe->eq("I\x{302}", "I\x{30C}"));
+ok($objEe->eq("o\x{302}", "o\x{30C}"));
+ok($objEe->eq("O\x{302}", "O\x{30C}"));
+ok($objEe->eq("u\x{302}", "u\x{30C}"));
+ok($objEe->eq("U\x{302}", "U\x{30C}"));
+ok($objEe->eq("y\x{302}", "y\x{30C}"));
+ok($objEe->eq("Y\x{302}", "Y\x{30C}"));
+
+# 41
+
+$objEe->change(level => 2);
+
+ok($objEe->gt("\x{302}", "\x{30C}"));
+ok($objEe->gt("a\x{302}", "a\x{30C}"));
+ok($objEe->gt("A\x{302}", "A\x{30C}"));
+ok($objEe->gt("e\x{302}", "e\x{30C}"));
+ok($objEe->gt("E\x{302}", "E\x{30C}"));
+ok($objEe->gt("i\x{302}", "i\x{30C}"));
+ok($objEe->gt("I\x{302}", "I\x{30C}"));
+ok($objEe->gt("o\x{302}", "o\x{30C}"));
+ok($objEe->gt("O\x{302}", "O\x{30C}"));
+ok($objEe->gt("u\x{302}", "u\x{30C}"));
+ok($objEe->gt("U\x{302}", "U\x{30C}"));
+ok($objEe->gt("y\x{302}", "y\x{30C}"));
+ok($objEe->gt("Y\x{302}", "Y\x{30C}"));
+
+# 54
+
+ok($objEe->eq("dz", "Dz"));
+ok($objEe->eq("Dz", "DZ"));
+ok($objEe->eq("\x{256}", "\x{189}"));
+ok($objEe->eq("\x{25B}", "\x{190}"));
+ok($objEe->eq("\x{192}", "\x{191}"));
+ok($objEe->eq("gb", "Gb"));
+ok($objEe->eq("Gb", "GB"));
+ok($objEe->eq("\x{263}", "\x{194}"));
+ok($objEe->eq("x", "X"));
+ok($objEe->eq("kp", "Kp"));
+ok($objEe->eq("Kp", "KP"));
+ok($objEe->eq("ny", "Ny"));
+ok($objEe->eq("Ny", "NY"));
+ok($objEe->eq("\x{14B}", "\x{14A}"));
+ok($objEe->eq("\x{254}", "\x{186}"));
+ok($objEe->eq("ts", "Ts"));
+ok($objEe->eq("Ts", "TS"));
+ok($objEe->eq("\x{28B}", "\x{1B2}"));
+
+# 72
+
+$objEe->change(level => 3);
+
+ok($objEe->lt("dz", "Dz"));
+ok($objEe->lt("Dz", "DZ"));
+ok($objEe->lt("\x{256}", "\x{189}"));
+ok($objEe->lt("\x{25B}", "\x{190}"));
+ok($objEe->lt("\x{192}", "\x{191}"));
+ok($objEe->lt("gb", "Gb"));
+ok($objEe->lt("Gb", "GB"));
+ok($objEe->lt("\x{263}", "\x{194}"));
+ok($objEe->lt("x", "X"));
+ok($objEe->lt("kp", "Kp"));
+ok($objEe->lt("Kp", "KP"));
+ok($objEe->lt("ny", "Ny"));
+ok($objEe->lt("Ny", "NY"));
+ok($objEe->lt("\x{14B}", "\x{14A}"));
+ok($objEe->lt("\x{254}", "\x{186}"));
+ok($objEe->lt("ts", "Ts"));
+ok($objEe->lt("Ts", "TS"));
+ok($objEe->lt("\x{28B}", "\x{1B2}"));
+
+# 90
+
+ok($objEe->eq("a\x{302}", pack('U', 0xE2)));
+ok($objEe->eq("A\x{302}", pack('U', 0xC2)));
+ok($objEe->eq("e\x{302}", pack('U', 0xEA)));
+ok($objEe->eq("E\x{302}", pack('U', 0xCA)));
+ok($objEe->eq("i\x{302}", pack('U', 0xEE)));
+ok($objEe->eq("I\x{302}", pack('U', 0xCE)));
+ok($objEe->eq("o\x{302}", pack('U', 0xF4)));
+ok($objEe->eq("O\x{302}", pack('U', 0xD4)));
+ok($objEe->eq("u\x{302}", pack('U', 0xFB)));
+ok($objEe->eq("U\x{302}", pack('U', 0xDB)));
+ok($objEe->eq("y\x{302}", "\x{177}"));
+ok($objEe->eq("Y\x{302}", "\x{176}"));
+
+# 102
+
+$objEe->change(upper_before_lower => 1);
+
+ok($objEe->gt("dz", "Dz"));
+ok($objEe->gt("Dz", "DZ"));
+ok($objEe->gt("\x{256}", "\x{189}"));
+ok($objEe->gt("\x{25B}", "\x{190}"));
+ok($objEe->gt("\x{192}", "\x{191}"));
+ok($objEe->gt("gb", "Gb"));
+ok($objEe->gt("Gb", "GB"));
+ok($objEe->gt("\x{263}", "\x{194}"));
+ok($objEe->gt("x", "X"));
+ok($objEe->gt("kp", "Kp"));
+ok($objEe->gt("Kp", "KP"));
+ok($objEe->gt("ny", "Ny"));
+ok($objEe->gt("Ny", "NY"));
+ok($objEe->gt("\x{14B}", "\x{14A}"));
+ok($objEe->gt("\x{254}", "\x{186}"));
+ok($objEe->gt("ts", "Ts"));
+ok($objEe->gt("Ts", "TS"));
+ok($objEe->gt("\x{28B}", "\x{1B2}"));
+
+# 120
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_es.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_es.t
index 78bd39d9050..81665ac18ee 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_es.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_es.t
@@ -34,7 +34,7 @@ my $objEs = Unicode::Collate::Locale->
new(locale => 'ES', normalization => undef);
ok($objEs->getlocale, 'es');
-ok($objEs->locale_version, 0.88);
+ok($objEs->locale_version, 0.93);
$objEs->change(level => 1);
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_estr.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_estr.t
index 3e814179e1d..448923005b5 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_estr.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_estr.t
@@ -34,7 +34,7 @@ my $objEsTrad = Unicode::Collate::Locale->
new(locale => 'ES-trad', normalization => undef);
ok($objEsTrad->getlocale, 'es__traditional');
-ok($objEsTrad->locale_version, 0.88);
+ok($objEsTrad->locale_version, 0.93);
$objEsTrad->change(level => 1);
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_fa.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_fa.t
index 1ac1b044c38..94bcede172b 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_fa.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_fa.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..81\n"; }
+BEGIN { $| = 1; print "1..90\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -35,57 +35,28 @@ my $objFa = Unicode::Collate::Locale->
ok($objFa->getlocale, 'fa');
-$objFa->change(level => 1);
-
-ok($objFa->lt("\x{622}", "\x{627}"));
-ok($objFa->lt("\x{627}", "\x{621}"));
-ok($objFa->lt("\x{621}", "\x{66E}"));
-
-ok($objFa->lt("\x{6CF}", "\x{647}"));
-ok($objFa->lt("\x{647}", "\x{778}"));
-
-# 7
-
-ok($objFa->eq("\x{64E}", "\x{650}"));
-ok($objFa->eq("\x{650}", "\x{64F}"));
-ok($objFa->eq("\x{64F}", "\x{64B}"));
-ok($objFa->eq("\x{64B}", "\x{64D}"));
-ok($objFa->eq("\x{64D}", "\x{64C}"));
-
-ok($objFa->eq("\x{627}", "\x{671}"));
+$objFa->change(level => 3);
-ok($objFa->eq("\x{621}", "\x{623}"));
-ok($objFa->eq("\x{623}", "\x{672}"));
-ok($objFa->eq("\x{672}", "\x{625}"));
-ok($objFa->eq("\x{625}", "\x{673}"));
-ok($objFa->eq("\x{673}", "\x{624}"));
-ok($objFa->eq("\x{624}", "\x{6CC}\x{654}"));
+ok($objFa->eq("\x{622}", "\x{627}\x{653}"));
+ok($objFa->eq("\x{623}", "\x{627}\x{654}"));
+ok($objFa->eq("\x{625}", "\x{627}\x{655}"));
+ok($objFa->eq("\x{624}", "\x{648}\x{654}"));
+ok($objFa->eq("\x{626}", "\x{64A}\x{654}"));
+ok($objFa->eq("\x{6C2}", "\x{6C1}\x{654}"));
+ok($objFa->eq("\x{6C0}", "\x{6D5}\x{654}"));
+ok($objFa->eq("\x{6D3}", "\x{6D2}\x{654}"));
-ok($objFa->eq("\x{6A9}", "\x{6AA}"));
-ok($objFa->eq("\x{6AA}", "\x{6AB}"));
-ok($objFa->eq("\x{6AB}", "\x{643}"));
-ok($objFa->eq("\x{643}", "\x{6AC}"));
-ok($objFa->eq("\x{6AC}", "\x{6AD}"));
-ok($objFa->eq("\x{6AD}", "\x{6AE}"));
+# 10
-ok($objFa->eq("\x{647}", "\x{6D5}"));
-ok($objFa->eq("\x{6D5}", "\x{6C1}"));
-ok($objFa->eq("\x{6C1}", "\x{629}"));
-ok($objFa->eq("\x{629}", "\x{6C3}"));
-ok($objFa->eq("\x{6C3}", "\x{6C0}"));
-ok($objFa->eq("\x{6C0}", "\x{6BE}"));
+ok($objFa->lt("\x{6CC}\x{654}", "\x{649}\x{654}"));
+ok($objFa->lt("\x{649}\x{654}", "\x{626}"));
-ok($objFa->eq("\x{6CC}", "\x{649}"));
-ok($objFa->eq("\x{649}", "\x{6D2}"));
-ok($objFa->eq("\x{6D2}", "\x{64A}"));
-ok($objFa->eq("\x{64A}", "\x{6D0}"));
-ok($objFa->eq("\x{6D0}", "\x{6D1}"));
-ok($objFa->eq("\x{6D1}", "\x{6CD}"));
-ok($objFa->eq("\x{6CD}", "\x{6CE}"));
+$objFa->change(level => 2);
-# 38
+ok($objFa->eq("\x{6CC}\x{654}", "\x{649}\x{654}"));
+ok($objFa->eq("\x{649}\x{654}", "\x{626}"));
-$objFa->change(level => 2);
+# 14
ok($objFa->lt("\x{64E}", "\x{650}"));
ok($objFa->lt("\x{650}", "\x{64F}"));
@@ -124,27 +95,61 @@ ok($objFa->lt("\x{6D0}", "\x{6D1}"));
ok($objFa->lt("\x{6D1}", "\x{6CD}"));
ok($objFa->lt("\x{6CD}", "\x{6CE}"));
-# 69
+# 45
-ok($objFa->eq("\x{6CC}\x{654}", "\x{649}\x{654}"));
-ok($objFa->eq("\x{649}\x{654}", "\x{626}"));
+$objFa->change(level => 1);
-# 71
+ok($objFa->eq("\x{64E}", "\x{650}"));
+ok($objFa->eq("\x{650}", "\x{64F}"));
+ok($objFa->eq("\x{64F}", "\x{64B}"));
+ok($objFa->eq("\x{64B}", "\x{64D}"));
+ok($objFa->eq("\x{64D}", "\x{64C}"));
-$objFa->change(level => 3);
+ok($objFa->eq("\x{627}", "\x{671}"));
-ok($objFa->lt("\x{6CC}\x{654}", "\x{649}\x{654}"));
-ok($objFa->lt("\x{649}\x{654}", "\x{626}"));
+ok($objFa->eq("\x{621}", "\x{623}"));
+ok($objFa->eq("\x{623}", "\x{672}"));
+ok($objFa->eq("\x{672}", "\x{625}"));
+ok($objFa->eq("\x{625}", "\x{673}"));
+ok($objFa->eq("\x{673}", "\x{624}"));
+ok($objFa->eq("\x{624}", "\x{6CC}\x{654}"));
-# 73
+ok($objFa->eq("\x{6A9}", "\x{6AA}"));
+ok($objFa->eq("\x{6AA}", "\x{6AB}"));
+ok($objFa->eq("\x{6AB}", "\x{643}"));
+ok($objFa->eq("\x{643}", "\x{6AC}"));
+ok($objFa->eq("\x{6AC}", "\x{6AD}"));
+ok($objFa->eq("\x{6AD}", "\x{6AE}"));
-ok($objFa->eq("\x{622}", "\x{627}\x{653}"));
-ok($objFa->eq("\x{623}", "\x{627}\x{654}"));
-ok($objFa->eq("\x{625}", "\x{627}\x{655}"));
-ok($objFa->eq("\x{624}", "\x{648}\x{654}"));
-ok($objFa->eq("\x{626}", "\x{64A}\x{654}"));
-ok($objFa->eq("\x{6C2}", "\x{6C1}\x{654}"));
-ok($objFa->eq("\x{6C0}", "\x{6D5}\x{654}"));
-ok($objFa->eq("\x{6D3}", "\x{6D2}\x{654}"));
+ok($objFa->eq("\x{647}", "\x{6D5}"));
+ok($objFa->eq("\x{6D5}", "\x{6C1}"));
+ok($objFa->eq("\x{6C1}", "\x{629}"));
+ok($objFa->eq("\x{629}", "\x{6C3}"));
+ok($objFa->eq("\x{6C3}", "\x{6C0}"));
+ok($objFa->eq("\x{6C0}", "\x{6BE}"));
-# 81
+ok($objFa->eq("\x{6CC}", "\x{649}"));
+ok($objFa->eq("\x{649}", "\x{6D2}"));
+ok($objFa->eq("\x{6D2}", "\x{64A}"));
+ok($objFa->eq("\x{64A}", "\x{6D0}"));
+ok($objFa->eq("\x{6D0}", "\x{6D1}"));
+ok($objFa->eq("\x{6D1}", "\x{6CD}"));
+ok($objFa->eq("\x{6CD}", "\x{6CE}"));
+
+# 76
+
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objFa->change(highestFFFF => 1) if $h;
+
+ ok($objFa->lt("\x{8AC}$t", "\x{622}"));
+ ok($objFa->lt("\x{622}$t", "\x{627}"));
+ ok($objFa->lt("\x{627}$t", "\x{621}"));
+ ok($objFa->lt("\x{621}$t", "\x{66E}"));
+ ok($objFa->lt("\x{66E}$t", "\x{628}"));
+
+ ok($objFa->lt("\x{6CF}$t", "\x{647}"));
+ ok($objFa->lt("\x{647}$t", "\x{778}"));
+}
+# 90
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_gu.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_gu.t
index 7b986620a91..4b8732ab645 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_gu.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_gu.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..7\n"; }
+BEGIN { $| = 1; print "1..10\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -35,15 +35,24 @@ my $objGu = Unicode::Collate::Locale->
ok($objGu->getlocale, 'gu');
-$objGu->change(level => 1);
+$objGu->change(level => 2);
-ok($objGu->lt("\x{AD0}", "\x{A82}"));
-ok($objGu->lt("\x{A82}", "\x{A83}"));
-ok($objGu->lt("\x{A83}", "\x{A85}"));
+ok($objGu->lt("\x{A82}", "\x{A81}"));
+
+$objGu->change(level => 1);
ok($objGu->eq("\x{A82}", "\x{A81}"));
-$objGu->change(level => 2);
+# 4
-ok($objGu->lt("\x{A82}", "\x{A81}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objGu->change(highestFFFF => 1) if $h;
+
+ ok($objGu->lt("\x{AD0}$t", "\x{A82}"));
+ ok($objGu->lt("\x{A82}$t", "\x{A83}"));
+ ok($objGu->lt("\x{A83}$t", "\x{A85}"));
+}
+# 10
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_hi.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_hi.t
index eadca6fb350..847722d77ec 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_hi.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_hi.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..7\n"; }
+BEGIN { $| = 1; print "1..10\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -35,15 +35,24 @@ my $objHi = Unicode::Collate::Locale->
ok($objHi->getlocale, 'hi');
-$objHi->change(level => 1);
+$objHi->change(level => 2);
-ok($objHi->lt("\x{950}", "\x{902}"));
-ok($objHi->lt("\x{902}", "\x{903}"));
-ok($objHi->lt("\x{903}", "\x{972}"));
+ok($objHi->lt("\x{902}", "\x{901}"));
+
+$objHi->change(level => 1);
ok($objHi->eq("\x{902}", "\x{901}"));
-$objHi->change(level => 2);
+# 4
-ok($objHi->lt("\x{902}", "\x{901}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objHi->change(highestFFFF => 1) if $h;
+
+ ok($objHi->lt("\x{950}$t", "\x{902}"));
+ ok($objHi->lt("\x{902}$t", "\x{903}"));
+ ok($objHi->lt("\x{903}$t", "\x{972}"));
+}
+# 10
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_hy.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_hy.t
index 8719fa5d94c..3ff93e336c3 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_hy.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_hy.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..13\n"; }
+BEGIN { $| = 1; print "1..25\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -60,6 +60,8 @@ ok($objHy->gt("\x{587}", "\x{535}\x{582}"));
# 10
+$objHy->change(level => 1);
+
$objHy->change(UCA_Version => 8);
ok($objHy->lt("\x{584}\x{4E00}", "\x{587}"));
@@ -67,3 +69,21 @@ ok($objHy->lt("\x{584}\x{20000}", "\x{587}"));
ok($objHy->lt("\x{584}\x{10FFFD}","\x{587}"));
# 13
+
+$objHy->change(UCA_Version => 22);
+
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objHy->change(highestFFFF => 1) if $h;
+
+ ok($objHy->lt("\x{583}$t", "\x{584}"));
+ ok($objHy->lt("\x{584}$t", "\x{587}"));
+ ok($objHy->lt("\x{587}$t", "\x{585}"));
+
+ ok($objHy->lt("\x{553}$t", "\x{554}"));
+ ok($objHy->lt("\x{554}$t", "\x{535}\x{582}"));
+ ok($objHy->lt("\x{535}\x{582}$t", "\x{555}"));
+}
+
+# 25
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kn.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kn.t
index 6ac2f52a468..8d2f39eea3e 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kn.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kn.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..7\n"; }
+BEGIN { $| = 1; print "1..14\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -37,9 +37,16 @@ ok($objKn->getlocale, 'kn');
$objKn->change(level => 1);
-ok($objKn->lt("\x{C94}", "\x{C82}"));
-ok($objKn->lt("\x{C82}", "\x{C83}"));
-ok($objKn->lt("\x{C83}", "\x{CF1}"));
-ok($objKn->lt("\x{CF1}", "\x{CF2}"));
-ok($objKn->lt("\x{CF2}", "\x{C95}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objKn->change(highestFFFF => 1) if $h;
+
+ ok($objKn->lt("\x{C93}$t", "\x{C94}"));
+ ok($objKn->lt("\x{C94}$t", "\x{C82}"));
+ ok($objKn->lt("\x{C82}$t", "\x{C83}"));
+ ok($objKn->lt("\x{C83}$t", "\x{CF1}"));
+ ok($objKn->lt("\x{CF1}$t", "\x{CF2}"));
+ ok($objKn->lt("\x{CF2}$t", "\x{C95}"));
+}
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kok.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kok.t
index b2f23a18d3d..4581bdccf11 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kok.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_kok.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..13\n"; }
+BEGIN { $| = 1; print "1..21\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -35,29 +35,35 @@ my $objKok = Unicode::Collate::Locale->
ok($objKok->getlocale, 'kok');
-$objKok->change(level => 1);
+$objKok->change(level => 2);
-ok($objKok->lt("\x{950}", "\x{902}"));
-ok($objKok->lt("\x{902}", "\x{903}"));
-ok($objKok->lt("\x{903}", "\x{972}"));
+ok($objKok->lt("\x{902}", "\x{901}"));
+ok($objKok->lt("\x{933}", "\x{934}"));
-ok($objKok->eq("\x{902}", "\x{901}"));
+$objKok->change(level => 3);
-ok($objKok->lt("\x{939}", "\x{933}"));
-ok($objKok->lt("\x{933}", "\x{915}\x{94D}\x{937}"));
-ok($objKok->lt("\x{915}\x{94D}\x{937}", "\x{93D}"));
+ok($objKok->eq("\x{933}\x{93C}", "\x{934}"));
-ok($objKok->eq("\x{933}", "\x{934}"));
+$objKok->change(level => 1);
-# 10
+ok($objKok->eq("\x{902}", "\x{901}"));
+ok($objKok->eq("\x{933}", "\x{934}"));
-$objKok->change(level => 2);
+# 7
-ok($objKok->lt("\x{902}", "\x{901}"));
-ok($objKok->lt("\x{933}", "\x{934}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objKok->change(highestFFFF => 1) if $h;
-$objKok->change(level => 3);
+ ok($objKok->lt("\x{950}$t", "\x{902}"));
+ ok($objKok->lt("\x{902}$t", "\x{903}"));
+ ok($objKok->lt("\x{903}$t", "\x{972}"));
-ok($objKok->eq("\x{933}\x{93C}", "\x{934}"));
+ ok($objKok->lt("\x{938}$t", "\x{939}"));
+ ok($objKok->lt("\x{939}$t", "\x{933}"));
+ ok($objKok->lt("\x{933}$t", "\x{915}\x{94D}\x{937}"));
+ ok($objKok->lt("\x{915}\x{94D}\x{937}$t", "\x{93D}"));
+}
-# 13
+# 21
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_mr.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_mr.t
index dd66b4ee853..8c601f00271 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_mr.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_mr.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..14\n"; }
+BEGIN { $| = 1; print "1..23\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -35,30 +35,36 @@ my $objMr = Unicode::Collate::Locale->
ok($objMr->getlocale, 'mr');
-$objMr->change(level => 1);
+$objMr->change(level => 2);
-ok($objMr->lt("\x{950}", "\x{902}"));
-ok($objMr->lt("\x{902}", "\x{903}"));
-ok($objMr->lt("\x{903}", "\x{972}"));
+ok($objMr->lt("\x{902}", "\x{901}"));
+ok($objMr->lt("\x{933}", "\x{934}"));
-ok($objMr->eq("\x{902}", "\x{901}"));
+$objMr->change(level => 3);
-ok($objMr->lt("\x{939}", "\x{933}"));
-ok($objMr->lt("\x{933}", "\x{915}\x{94D}\x{937}"));
-ok($objMr->lt("\x{915}\x{94D}\x{937}", "\x{91C}\x{94D}\x{91E}"));
-ok($objMr->lt("\x{91C}\x{94D}\x{91E}", "\x{93D}"));
+ok($objMr->eq("\x{933}\x{93C}", "\x{934}"));
-ok($objMr->eq("\x{933}", "\x{934}"));
+$objMr->change(level => 1);
-# 11
+ok($objMr->eq("\x{902}", "\x{901}"));
+ok($objMr->eq("\x{933}", "\x{934}"));
-$objMr->change(level => 2);
+# 7
-ok($objMr->lt("\x{902}", "\x{901}"));
-ok($objMr->lt("\x{933}", "\x{934}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objMr->change(highestFFFF => 1) if $h;
-$objMr->change(level => 3);
+ ok($objMr->lt("\x{950}$t", "\x{902}"));
+ ok($objMr->lt("\x{902}$t", "\x{903}"));
+ ok($objMr->lt("\x{903}$t", "\x{972}"));
-ok($objMr->eq("\x{933}\x{93C}", "\x{934}"));
+ ok($objMr->lt("\x{938}$t", "\x{939}"));
+ ok($objMr->lt("\x{939}$t", "\x{933}"));
+ ok($objMr->lt("\x{933}$t", "\x{915}\x{94D}\x{937}"));
+ ok($objMr->lt("\x{915}\x{94D}\x{937}$t", "\x{91C}\x{94D}\x{91E}"));
+ ok($objMr->lt("\x{91C}\x{94D}\x{91E}$t", "\x{93D}"));
+}
-# 14
+# 23
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_or.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_or.t
index ef5bf6a6a8e..f29e615eed0 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_or.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_or.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..10\n"; }
+BEGIN { $| = 1; print "1..20\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -35,19 +35,30 @@ my $objOr = Unicode::Collate::Locale->
ok($objOr->getlocale, 'or');
-$objOr->change(level => 1);
+$objOr->change(level => 2);
-ok($objOr->lt("\x{B14}", "\x{B01}"));
-ok($objOr->lt("\x{B01}", "\x{B02}"));
-ok($objOr->lt("\x{B02}", "\x{B03}"));
-ok($objOr->lt("\x{B03}", "\x{B15}"));
+ok($objOr->lt("\x{B2F}", "\x{B5F}"));
-ok($objOr->lt("\x{B39}", "\x{B15}\x{B4D}\x{B37}"));
-ok($objOr->gt("\x{B3D}", "\x{B15}\x{B4D}\x{B37}"));
+$objOr->change(level => 1);
ok($objOr->eq("\x{B2F}", "\x{B5F}"));
-$objOr->change(level => 2);
+# 4
-ok($objOr->lt("\x{B2F}", "\x{B5F}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objOr->change(highestFFFF => 1) if $h;
+
+ ok($objOr->lt("\x{B13}$t", "\x{B14}"));
+ ok($objOr->lt("\x{B14}$t", "\x{B01}"));
+ ok($objOr->lt("\x{B01}$t", "\x{B02}"));
+ ok($objOr->lt("\x{B02}$t", "\x{B03}"));
+ ok($objOr->lt("\x{B03}$t", "\x{B15}"));
+
+ ok($objOr->lt("\x{B38}$t", "\x{B39}"));
+ ok($objOr->lt("\x{B39}$t", "\x{B15}\x{B4D}\x{B37}"));
+ ok($objOr->lt("\x{B15}\x{B4D}\x{B37}$t", "\x{B3D}"));
+}
+# 20
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sa.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sa.t
index 64e714bcbe8..41f344eacee 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sa.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sa.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..14\n"; }
+BEGIN { $| = 1; print "1..23\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -35,30 +35,36 @@ my $objSa = Unicode::Collate::Locale->
ok($objSa->getlocale, 'sa');
-$objSa->change(level => 1);
+$objSa->change(level => 2);
-ok($objSa->lt("\x{950}", "\x{902}"));
-ok($objSa->lt("\x{902}", "\x{903}"));
-ok($objSa->lt("\x{903}", "\x{972}"));
+ok($objSa->lt("\x{902}", "\x{901}"));
+ok($objSa->lt("\x{933}", "\x{934}"));
-ok($objSa->eq("\x{902}", "\x{901}"));
+$objSa->change(level => 3);
-ok($objSa->lt("\x{939}", "\x{933}"));
-ok($objSa->lt("\x{933}", "\x{915}\x{94D}\x{937}"));
-ok($objSa->lt("\x{915}\x{94D}\x{937}", "\x{91C}\x{94D}\x{91E}"));
-ok($objSa->lt("\x{91C}\x{94D}\x{91E}", "\x{93D}"));
+ok($objSa->eq("\x{933}\x{93C}", "\x{934}"));
-ok($objSa->eq("\x{933}", "\x{934}"));
+$objSa->change(level => 1);
-# 11
+ok($objSa->eq("\x{902}", "\x{901}"));
+ok($objSa->eq("\x{933}", "\x{934}"));
-$objSa->change(level => 2);
+# 7
-ok($objSa->lt("\x{902}", "\x{901}"));
-ok($objSa->lt("\x{933}", "\x{934}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objSa->change(highestFFFF => 1) if $h;
-$objSa->change(level => 3);
+ ok($objSa->lt("\x{950}$t", "\x{902}"));
+ ok($objSa->lt("\x{902}$t", "\x{903}"));
+ ok($objSa->lt("\x{903}$t", "\x{972}"));
-ok($objSa->eq("\x{933}\x{93C}", "\x{934}"));
+ ok($objSa->lt("\x{938}$t", "\x{939}"));
+ ok($objSa->lt("\x{939}$t", "\x{933}"));
+ ok($objSa->lt("\x{933}$t", "\x{915}\x{94D}\x{937}"));
+ ok($objSa->lt("\x{915}\x{94D}\x{937}$t", "\x{91C}\x{94D}\x{91E}"));
+ ok($objSa->lt("\x{91C}\x{94D}\x{91E}$t", "\x{93D}"));
+}
-# 14
+# 23
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_si.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_si.t
index 0a9d3bb5070..adbb40169bd 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_si.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_si.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..8\n"; }
+BEGIN { $| = 1; print "1..16\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -37,11 +37,18 @@ ok($objSi->getlocale, 'si');
$objSi->change(level => 1);
-ok($objSi->lt("\x{D96}", "\x{D82}"));
-ok($objSi->lt("\x{D82}", "\x{D83}"));
-ok($objSi->lt("\x{D83}", "\x{D9A}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objSi->change(highestFFFF => 1) if $h;
-ok($objSi->lt("\x{DA3}", "\x{DA5}"));
-ok($objSi->lt("\x{DA5}", "\x{DA4}"));
-ok($objSi->lt("\x{DA4}", "\x{DA6}"));
+ ok($objSi->lt("\x{D95}$t", "\x{D96}"));
+ ok($objSi->lt("\x{D96}$t", "\x{D82}"));
+ ok($objSi->lt("\x{D82}$t", "\x{D83}"));
+ ok($objSi->lt("\x{D83}$t", "\x{D9A}"));
+
+ ok($objSi->lt("\x{DA3}$t", "\x{DA5}"));
+ ok($objSi->lt("\x{DA5}$t", "\x{DA4}"));
+ ok($objSi->lt("\x{DA4}$t", "\x{DA6}"));
+}
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sidt.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sidt.t
index 980edd894a8..f5cbc54680d 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sidt.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sidt.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..9\n"; }
+BEGIN { $| = 1; print "1..14\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -35,17 +35,28 @@ my $objSiDict = Unicode::Collate::Locale->
ok($objSiDict->getlocale, 'si__dictionary');
-$objSiDict->change(level => 1);
+$objSiDict->change(level => 2);
-ok($objSiDict->lt("\x{D96}", "\x{D82}"));
-ok($objSiDict->lt("\x{D82}", "\x{D83}"));
-ok($objSiDict->lt("\x{D83}", "\x{D9A}"));
+ok($objSiDict->gt("\x{DA5}", "\x{DA2}\x{DCA}\x{DA4}"));
+
+$objSiDict->change(level => 1);
-ok($objSiDict->gt("\x{DA5}", "\x{DA2}"));
ok($objSiDict->eq("\x{DA5}", "\x{DA2}\x{DCA}\x{DA4}"));
+
+ok($objSiDict->lt("\x{DA2}", "\x{DA5}"));
ok($objSiDict->lt("\x{DA5}", "\x{DA3}"));
-$objSiDict->change(level => 2);
+# 6
-ok($objSiDict->gt("\x{DA5}", "\x{DA2}\x{DCA}\x{DA4}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objSiDict->change(highestFFFF => 1) if $h;
+
+ ok($objSiDict->lt("\x{D95}$t", "\x{D96}"));
+ ok($objSiDict->lt("\x{D96}$t", "\x{D82}"));
+ ok($objSiDict->lt("\x{D82}$t", "\x{D83}"));
+ ok($objSiDict->lt("\x{D83}$t", "\x{D9A}"));
+}
+# 14
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sq.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sq.t
index 6f29c4f0351..3582d3e5099 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sq.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_sq.t
@@ -69,7 +69,7 @@ ok($objSq->lt("xz","xh"));
ok($objSq->gt("y", "xh"));
ok($objSq->lt("z", "zh"));
ok($objSq->lt("zz","zh"));
-ok($objSq->lt("zh", "\x{1B7}"));
+ok($objSq->lt("zh","\x{1B7}"));
# 35
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ta.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ta.t
index 63418290380..fa84bd89fcf 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ta.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ta.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..52\n"; }
+BEGIN { $| = 1; print "1..104\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -31,6 +31,7 @@ ok(1);
#########################
my $Kssa = "\x{B95}\x{BCD}\x{BB7}";
+my $v = "\x{BCD}";
my $objTa = Unicode::Collate::Locale->
new(locale => 'TA', normalization => undef);
@@ -39,55 +40,60 @@ ok($objTa->getlocale, 'ta');
$objTa->change(level => 1);
-ok($objTa->lt("\x{B94}", "\x{B82}"));
-ok($objTa->gt("\x{B83}", "\x{B82}"));
-ok($objTa->lt("\x{B83}", "\x{B95}\x{BCD}"));
-ok($objTa->gt("\x{B95}", "\x{B95}\x{BCD}"));
-ok($objTa->lt("\x{B95}", "\x{B99}\x{BCD}"));
-ok($objTa->gt("\x{B99}", "\x{B99}\x{BCD}"));
-ok($objTa->lt("\x{B99}", "\x{B9A}\x{BCD}"));
-ok($objTa->gt("\x{B9A}", "\x{B9A}\x{BCD}"));
-ok($objTa->lt("\x{B9A}", "\x{B9E}\x{BCD}"));
-ok($objTa->gt("\x{B9E}", "\x{B9E}\x{BCD}"));
-ok($objTa->lt("\x{B9E}", "\x{B9F}\x{BCD}"));
-ok($objTa->gt("\x{B9F}", "\x{B9F}\x{BCD}"));
-ok($objTa->lt("\x{B9F}", "\x{BA3}\x{BCD}"));
-ok($objTa->gt("\x{BA3}", "\x{BA3}\x{BCD}"));
-ok($objTa->lt("\x{BA3}", "\x{BA4}\x{BCD}"));
-ok($objTa->gt("\x{BA4}", "\x{BA4}\x{BCD}"));
-ok($objTa->lt("\x{BA4}", "\x{BA8}\x{BCD}"));
-ok($objTa->gt("\x{BA8}", "\x{BA8}\x{BCD}"));
-ok($objTa->lt("\x{BA8}", "\x{BAA}\x{BCD}"));
-ok($objTa->gt("\x{BAA}", "\x{BAA}\x{BCD}"));
-ok($objTa->lt("\x{BAA}", "\x{BAE}\x{BCD}"));
-ok($objTa->gt("\x{BAE}", "\x{BAE}\x{BCD}"));
-ok($objTa->lt("\x{BAE}", "\x{BAF}\x{BCD}"));
-ok($objTa->gt("\x{BAF}", "\x{BAF}\x{BCD}"));
-ok($objTa->lt("\x{BAF}", "\x{BB0}\x{BCD}"));
-ok($objTa->gt("\x{BB0}", "\x{BB0}\x{BCD}"));
-ok($objTa->lt("\x{BB0}", "\x{BB2}\x{BCD}"));
-ok($objTa->gt("\x{BB2}", "\x{BB2}\x{BCD}"));
-ok($objTa->lt("\x{BB2}", "\x{BB5}\x{BCD}"));
-ok($objTa->gt("\x{BB5}", "\x{BB5}\x{BCD}"));
-ok($objTa->lt("\x{BB5}", "\x{BB4}\x{BCD}"));
-ok($objTa->gt("\x{BB4}", "\x{BB4}\x{BCD}"));
-ok($objTa->lt("\x{BB4}", "\x{BB3}\x{BCD}"));
-ok($objTa->gt("\x{BB3}", "\x{BB3}\x{BCD}"));
-ok($objTa->lt("\x{BB3}", "\x{BB1}\x{BCD}"));
-ok($objTa->gt("\x{BB1}", "\x{BB1}\x{BCD}"));
-ok($objTa->lt("\x{BB1}", "\x{BA9}\x{BCD}"));
-ok($objTa->gt("\x{BA9}", "\x{BA9}\x{BCD}"));
-ok($objTa->lt("\x{BA9}", "\x{B9C}\x{BCD}"));
-ok($objTa->gt("\x{B9C}", "\x{B9C}\x{BCD}"));
-ok($objTa->lt("\x{B9C}", "\x{BB6}\x{BCD}"));
-ok($objTa->gt("\x{BB6}", "\x{BB6}\x{BCD}"));
-ok($objTa->lt("\x{BB6}", "\x{BB7}\x{BCD}"));
-ok($objTa->gt("\x{BB7}", "\x{BB7}\x{BCD}"));
-ok($objTa->lt("\x{BB7}", "\x{BB8}\x{BCD}"));
-ok($objTa->gt("\x{BB8}", "\x{BB8}\x{BCD}"));
-ok($objTa->lt("\x{BB8}", "\x{BB9}\x{BCD}"));
-ok($objTa->gt("\x{BB9}", "\x{BB9}\x{BCD}"));
-ok($objTa->lt("\x{BB9}", "${Kssa}\x{BCD}"));
-ok($objTa->gt("${Kssa}", "${Kssa}\x{BCD}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objTa->change(highestFFFF => 1) if $h;
-# 52
+ ok($objTa->lt("\x{B94}$t", "\x{B82}"));
+ ok($objTa->lt("\x{B82}$t", "\x{B83}"));
+ ok($objTa->lt("\x{B83}$t", "\x{B95}$v"));
+ ok($objTa->lt("\x{B95}$v$t", "\x{B95}"));
+ ok($objTa->lt("\x{B95}$t", "\x{B99}$v"));
+ ok($objTa->lt("\x{B99}$v$t", "\x{B99}"));
+ ok($objTa->lt("\x{B99}$t", "\x{B9A}$v"));
+ ok($objTa->lt("\x{B9A}$v$t", "\x{B9A}"));
+ ok($objTa->lt("\x{B9A}$t", "\x{B9E}$v"));
+ ok($objTa->lt("\x{B9E}$v$t", "\x{B9E}"));
+ ok($objTa->lt("\x{B9E}$t", "\x{B9F}$v"));
+ ok($objTa->lt("\x{B9F}$v$t", "\x{B9F}"));
+ ok($objTa->lt("\x{B9F}$t", "\x{BA3}$v"));
+ ok($objTa->lt("\x{BA3}$v$t", "\x{BA3}"));
+ ok($objTa->lt("\x{BA3}$t", "\x{BA4}$v"));
+ ok($objTa->lt("\x{BA4}$v$t", "\x{BA4}"));
+ ok($objTa->lt("\x{BA4}$t", "\x{BA8}$v"));
+ ok($objTa->lt("\x{BA8}$v$t", "\x{BA8}"));
+ ok($objTa->lt("\x{BA8}$t", "\x{BAA}$v"));
+ ok($objTa->lt("\x{BAA}$v$t", "\x{BAA}"));
+ ok($objTa->lt("\x{BAA}$t", "\x{BAE}$v"));
+ ok($objTa->lt("\x{BAE}$v$t", "\x{BAE}"));
+ ok($objTa->lt("\x{BAE}$t", "\x{BAF}$v"));
+ ok($objTa->lt("\x{BAF}$v$t", "\x{BAF}"));
+ ok($objTa->lt("\x{BAF}$t", "\x{BB0}$v"));
+ ok($objTa->lt("\x{BB0}$v$t", "\x{BB0}"));
+ ok($objTa->lt("\x{BB0}$t", "\x{BB2}$v"));
+ ok($objTa->lt("\x{BB2}$v$t", "\x{BB2}"));
+ ok($objTa->lt("\x{BB2}$t", "\x{BB5}$v"));
+ ok($objTa->lt("\x{BB5}$v$t", "\x{BB5}"));
+ ok($objTa->lt("\x{BB5}$t", "\x{BB4}$v"));
+ ok($objTa->lt("\x{BB4}$v$t", "\x{BB4}"));
+ ok($objTa->lt("\x{BB4}$t", "\x{BB3}$v"));
+ ok($objTa->lt("\x{BB3}$v$t", "\x{BB3}"));
+ ok($objTa->lt("\x{BB3}$t", "\x{BB1}$v"));
+ ok($objTa->lt("\x{BB1}$v$t", "\x{BB1}"));
+ ok($objTa->lt("\x{BB1}$t", "\x{BA9}$v"));
+ ok($objTa->lt("\x{BA9}$v$t", "\x{BA9}"));
+ ok($objTa->lt("\x{BA9}$t", "\x{B9C}$v"));
+ ok($objTa->lt("\x{B9C}$v$t", "\x{B9C}"));
+ ok($objTa->lt("\x{B9C}$t", "\x{BB6}$v"));
+ ok($objTa->lt("\x{BB6}$v$t", "\x{BB6}"));
+ ok($objTa->lt("\x{BB6}$t", "\x{BB7}$v"));
+ ok($objTa->lt("\x{BB7}$v$t", "\x{BB7}"));
+ ok($objTa->lt("\x{BB7}$t", "\x{BB8}$v"));
+ ok($objTa->lt("\x{BB8}$v$t", "\x{BB8}"));
+ ok($objTa->lt("\x{BB8}$t", "\x{BB9}$v"));
+ ok($objTa->lt("\x{BB9}$v$t", "\x{BB9}"));
+ ok($objTa->lt("\x{BB9}$t", "${Kssa}$v"));
+ ok($objTa->lt("${Kssa}$v$t", "${Kssa}"));
+ ok($objTa->lt("${Kssa}$t", "\x{BBE}"));
+}
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_te.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_te.t
index 133cabfd31b..be11514fbbf 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_te.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_te.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..6\n"; }
+BEGIN { $| = 1; print "1..12\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -37,8 +37,14 @@ ok($objTe->getlocale, 'te');
$objTe->change(level => 1);
-ok($objTe->lt("\x{C14}", "\x{C01}"));
-ok($objTe->lt("\x{C01}", "\x{C02}"));
-ok($objTe->lt("\x{C02}", "\x{C03}"));
-ok($objTe->lt("\x{C03}", "\x{C15}"));
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objTe->change(highestFFFF => 1) if $h;
+ ok($objTe->lt("\x{C13}$t", "\x{C14}"));
+ ok($objTe->lt("\x{C14}$t", "\x{C01}"));
+ ok($objTe->lt("\x{C01}$t", "\x{C02}"));
+ ok($objTe->lt("\x{C02}$t", "\x{C03}"));
+ ok($objTe->lt("\x{C03}$t", "\x{C15}"));
+}
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_test.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_test.t
index ba643083c3b..191334402e0 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_test.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_test.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..130\n"; }
+BEGIN { $| = 1; print "1..134\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -159,3 +159,21 @@ ok(Unicode::Collate::Locale::_locale('de-phonebk'), 'de__phonebook');
ok(Unicode::Collate::Locale::_locale('de--phonebk'), 'de__phonebook');
# 130
+
+my $objEs2 = Unicode::Collate::Locale->new
+ (normalization => undef, locale => 'ES',
+ level => 1,
+ entry => << 'ENTRIES',
+0000 ; [.FFFE.0020.0005.0000]
+00F1 ; [.0010.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+006E 0303 ; [.0010.0020.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
+ENTRIES
+);
+
+ok($objEs2->lt("abc\x{4E00}", "abc\0"));
+ok($objEs2->lt("abc\x{FFFD}", "abc\0"));
+ok($objEs2->lt("abc\x{FFFD}", "abc\0"));
+ok($objEs2->lt("n\x{303}", "N\x{303}"));
+
+# 134
+
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_th.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_th.t
index 0c992f6aea0..727b70649a6 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_th.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_th.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..25\n"; }
+BEGIN { $| = 1; print "1..55\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -43,13 +43,10 @@ $objTh->change(level => 1);
ok($objTh->eq("\x{E2F}", ""));
ok($objTh->eq("\x{E46}", ""));
ok($objTh->eq("\x{E4F}", ""));
+ok($objTh->eq("\x{E5A}", ""));
+ok($objTh->eq("\x{E5B}", ""));
-# 5
-
-$objTh->change(variable => "non-ignorable");
-
-ok($objTh->lt("\x{E2F}", "\x{E46}"));
-ok($objTh->lt("\x{E46}", "\x{E4F}"));
+# 7
ok($objTh->lt("\x{E2E}", "\x{E4D}"));
ok($objTh->lt("\x{E4D}", "\x{E30}"));
@@ -64,8 +61,9 @@ ok($objTh->eq("\x{E47}", ""));
ok($objTh->eq("\x{E48}", ""));
ok($objTh->eq("\x{E49}", ""));
ok($objTh->eq("\x{E4A}", ""));
+ok($objTh->eq("\x{E4B}", ""));
-# 16
+# 17
$objTh->change(level => 2);
@@ -77,13 +75,57 @@ ok($objTh->lt("\x{E49}", "\x{E4A}"));
ok($objTh->lt("\x{E4A}", "\x{E4B}"));
ok($objTh->eq("\x{E32}", "\x{E45}"));
+ok($objTh->eq("\x{E32}\x{E4D}", "\x{E4D}\x{E32}"));
+ok($objTh->eq("\x{E4D}\x{E32}", "\x{E33}"));
+ok($objTh->eq("\x{E4D}\x{E45}", "\x{E45}\x{E4D}"));
-# 23
+# 27
$objTh->change(level => 3);
ok($objTh->lt("\x{E32}", "\x{E45}"));
+ok($objTh->lt("\x{E32}\x{E4D}", "\x{E4D}\x{E32}"));
+ok($objTh->lt("\x{E4D}\x{E32}", "\x{E33}"));
+ok($objTh->lt("\x{E4D}\x{E45}", "\x{E45}\x{E4D}"));
+
+ok($objTh->eq("\x{E4F}", "\x{E2F}"));
+ok($objTh->eq("\x{E2F}", "\x{E5A}"));
+ok($objTh->eq("\x{E5A}", "\x{E5B}"));
+ok($objTh->eq("\x{E5B}", "\x{E46}"));
+
+# 35
+
+$objTh->change(level => 4);
+
+for my $t ("", "\x{E01}") {
+ ok($objTh->lt("\x{E4F}$t", "\x{E2F}$t"));
+ ok($objTh->lt("\x{E2F}$t", "\x{E5A}$t"));
+ ok($objTh->lt("\x{E5A}$t", "\x{E5B}$t"));
+ ok($objTh->lt("\x{E5B}$t", "\x{E46}$t"));
+}
+
+# 43
-ok($objTh->eq("\x{E33}", "\x{E4D}\x{E32}"));
+$objTh->change(level => 1);
+
+ok($objTh->eq("\x{E4F}", "\x{E2F}"));
+ok($objTh->eq("\x{E2F}", "\x{E5A}"));
+ok($objTh->eq("\x{E5A}", "\x{E5B}"));
+ok($objTh->eq("\x{E5B}", "\x{E46}"));
+
+# 47
+
+$objTh->change(variable => "non-ignorable");
+
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objTh->change(highestFFFF => 1) if $h;
+
+ ok($objTh->lt("\x{E4F}$t", "\x{E2F}"));
+ ok($objTh->lt("\x{E2F}$t", "\x{E5A}"));
+ ok($objTh->lt("\x{E5A}$t", "\x{E5B}"));
+ ok($objTh->lt("\x{E5B}$t", "\x{E46}"));
+}
-# 25
+# 55
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_to.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_to.t
index 55aadde6e12..8fddb91f891 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_to.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_to.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..132\n"; }
+BEGIN { $| = 1; print "1..122\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -45,33 +45,55 @@ ok($objTo->lt("z", "\x{2BD}"));
# 7
-ok($objTo->eq("a", "a\x{304}"));
-ok($objTo->eq("A", "A\x{304}"));
-ok($objTo->eq("e", "e\x{304}"));
-ok($objTo->eq("E", "E\x{304}"));
-ok($objTo->eq("i", "i\x{304}"));
-ok($objTo->eq("I", "I\x{304}"));
-ok($objTo->eq("o", "o\x{304}"));
-ok($objTo->eq("O", "O\x{304}"));
-ok($objTo->eq("u", "u\x{304}"));
-ok($objTo->eq("U", "U\x{304}"));
+ok($objTo->eq("a", "a\x{301}"));
+ok($objTo->eq("A", "A\x{301}"));
+ok($objTo->eq("e", "e\x{301}"));
+ok($objTo->eq("E", "E\x{301}"));
+ok($objTo->eq("i", "i\x{301}"));
+ok($objTo->eq("I", "I\x{301}"));
+ok($objTo->eq("o", "o\x{301}"));
+ok($objTo->eq("O", "O\x{301}"));
+ok($objTo->eq("u", "u\x{301}"));
+ok($objTo->eq("U", "U\x{301}"));
+
+ok($objTo->eq("a\x{301}", "a\x{304}"));
+ok($objTo->eq("A\x{301}", "A\x{304}"));
+ok($objTo->eq("e\x{301}", "e\x{304}"));
+ok($objTo->eq("E\x{301}", "E\x{304}"));
+ok($objTo->eq("i\x{301}", "i\x{304}"));
+ok($objTo->eq("I\x{301}", "I\x{304}"));
+ok($objTo->eq("o\x{301}", "o\x{304}"));
+ok($objTo->eq("O\x{301}", "O\x{304}"));
+ok($objTo->eq("u\x{301}", "u\x{304}"));
+ok($objTo->eq("U\x{301}", "U\x{304}"));
-# 17
+# 27
$objTo->change(level => 2);
-ok($objTo->lt("a", "a\x{304}"));
-ok($objTo->lt("A", "A\x{304}"));
-ok($objTo->lt("e", "e\x{304}"));
-ok($objTo->lt("E", "E\x{304}"));
-ok($objTo->lt("i", "i\x{304}"));
-ok($objTo->lt("I", "I\x{304}"));
-ok($objTo->lt("o", "o\x{304}"));
-ok($objTo->lt("O", "O\x{304}"));
-ok($objTo->lt("u", "u\x{304}"));
-ok($objTo->lt("U", "U\x{304}"));
-
-# 27
+ok($objTo->lt("a", "a\x{301}"));
+ok($objTo->lt("A", "A\x{301}"));
+ok($objTo->lt("e", "e\x{301}"));
+ok($objTo->lt("E", "E\x{301}"));
+ok($objTo->lt("i", "i\x{301}"));
+ok($objTo->lt("I", "I\x{301}"));
+ok($objTo->lt("o", "o\x{301}"));
+ok($objTo->lt("O", "O\x{301}"));
+ok($objTo->lt("u", "u\x{301}"));
+ok($objTo->lt("U", "U\x{301}"));
+
+ok($objTo->lt("a\x{301}", "a\x{304}"));
+ok($objTo->lt("A\x{301}", "A\x{304}"));
+ok($objTo->lt("e\x{301}", "e\x{304}"));
+ok($objTo->lt("E\x{301}", "E\x{304}"));
+ok($objTo->lt("i\x{301}", "i\x{304}"));
+ok($objTo->lt("I\x{301}", "I\x{304}"));
+ok($objTo->lt("o\x{301}", "o\x{304}"));
+ok($objTo->lt("O\x{301}", "O\x{304}"));
+ok($objTo->lt("u\x{301}", "u\x{304}"));
+ok($objTo->lt("U\x{301}", "U\x{304}"));
+
+# 47
ok($objTo->eq("ng", "Ng"));
ok($objTo->eq("Ng", "NG"));
@@ -79,29 +101,18 @@ ok($objTo->eq("NG", "\x{14B}"));
ok($objTo->eq("\x{14B}", "\x{14A}"));
ok($objTo->eq("\x{2BB}", "\x{2BD}"));
-ok($objTo->eq("a\x{304}", "A\x{304}"));
ok($objTo->eq("a\x{301}", "A\x{301}"));
-ok($objTo->eq("e\x{304}", "E\x{304}"));
+ok($objTo->eq("a\x{304}", "A\x{304}"));
ok($objTo->eq("e\x{301}", "E\x{301}"));
-ok($objTo->eq("i\x{304}", "I\x{304}"));
+ok($objTo->eq("e\x{304}", "E\x{304}"));
ok($objTo->eq("i\x{301}", "I\x{301}"));
-ok($objTo->eq("o\x{304}", "O\x{304}"));
+ok($objTo->eq("i\x{304}", "I\x{304}"));
ok($objTo->eq("o\x{301}", "O\x{301}"));
-ok($objTo->eq("u\x{304}", "U\x{304}"));
+ok($objTo->eq("o\x{304}", "O\x{304}"));
ok($objTo->eq("u\x{301}", "U\x{301}"));
+ok($objTo->eq("u\x{304}", "U\x{304}"));
-ok($objTo->eq("a\x{304}", "a\x{301}"));
-ok($objTo->eq("A\x{304}", "A\x{301}"));
-ok($objTo->eq("e\x{304}", "e\x{301}"));
-ok($objTo->eq("E\x{304}", "E\x{301}"));
-ok($objTo->eq("i\x{304}", "i\x{301}"));
-ok($objTo->eq("I\x{304}", "I\x{301}"));
-ok($objTo->eq("o\x{304}", "o\x{301}"));
-ok($objTo->eq("O\x{304}", "O\x{301}"));
-ok($objTo->eq("u\x{304}", "u\x{301}"));
-ok($objTo->eq("U\x{304}", "U\x{301}"));
-
-# 52
+# 62
$objTo->change(level => 3);
@@ -111,41 +122,19 @@ ok($objTo->lt("NG", "\x{14B}"));
ok($objTo->lt("\x{14B}", "\x{14A}"));
ok($objTo->lt("\x{2BB}", "\x{2BD}"));
-ok($objTo->lt("a\x{304}", "A\x{304}"));
ok($objTo->lt("a\x{301}", "A\x{301}"));
-ok($objTo->lt("e\x{304}", "E\x{304}"));
+ok($objTo->lt("a\x{304}", "A\x{304}"));
ok($objTo->lt("e\x{301}", "E\x{301}"));
-ok($objTo->lt("i\x{304}", "I\x{304}"));
+ok($objTo->lt("e\x{304}", "E\x{304}"));
ok($objTo->lt("i\x{301}", "I\x{301}"));
-ok($objTo->lt("o\x{304}", "O\x{304}"));
+ok($objTo->lt("i\x{304}", "I\x{304}"));
ok($objTo->lt("o\x{301}", "O\x{301}"));
-ok($objTo->lt("u\x{304}", "U\x{304}"));
+ok($objTo->lt("o\x{304}", "O\x{304}"));
ok($objTo->lt("u\x{301}", "U\x{301}"));
-
-ok($objTo->lt("a\x{304}", "a\x{301}"));
-ok($objTo->lt("A\x{304}", "A\x{301}"));
-ok($objTo->lt("e\x{304}", "e\x{301}"));
-ok($objTo->lt("E\x{304}", "E\x{301}"));
-ok($objTo->lt("i\x{304}", "i\x{301}"));
-ok($objTo->lt("I\x{304}", "I\x{301}"));
-ok($objTo->lt("o\x{304}", "o\x{301}"));
-ok($objTo->lt("O\x{304}", "O\x{301}"));
-ok($objTo->lt("u\x{304}", "u\x{301}"));
-ok($objTo->lt("U\x{304}", "U\x{301}"));
+ok($objTo->lt("u\x{304}", "U\x{304}"));
# 77
-ok($objTo->eq("a\x{304}", "\x{101}"));
-ok($objTo->eq("A\x{304}", "\x{100}"));
-ok($objTo->eq("e\x{304}", "\x{113}"));
-ok($objTo->eq("E\x{304}", "\x{112}"));
-ok($objTo->eq("i\x{304}", "\x{12B}"));
-ok($objTo->eq("I\x{304}", "\x{12A}"));
-ok($objTo->eq("o\x{304}", "\x{14D}"));
-ok($objTo->eq("O\x{304}", "\x{14C}"));
-ok($objTo->eq("u\x{304}", "\x{16B}"));
-ok($objTo->eq("U\x{304}", "\x{16A}"));
-
ok($objTo->eq("a\x{301}", pack('U', 0xE1)));
ok($objTo->eq("a\x{341}", pack('U', 0xE1)));
ok($objTo->eq("A\x{301}", pack('U', 0xC1)));
@@ -167,6 +156,17 @@ ok($objTo->eq("u\x{341}", pack('U', 0xFA)));
ok($objTo->eq("U\x{301}", pack('U', 0xDA)));
ok($objTo->eq("U\x{341}", pack('U', 0xDA)));
+ok($objTo->eq("a\x{304}", "\x{101}"));
+ok($objTo->eq("A\x{304}", "\x{100}"));
+ok($objTo->eq("e\x{304}", "\x{113}"));
+ok($objTo->eq("E\x{304}", "\x{112}"));
+ok($objTo->eq("i\x{304}", "\x{12B}"));
+ok($objTo->eq("I\x{304}", "\x{12A}"));
+ok($objTo->eq("o\x{304}", "\x{14D}"));
+ok($objTo->eq("O\x{304}", "\x{14C}"));
+ok($objTo->eq("u\x{304}", "\x{16B}"));
+ok($objTo->eq("U\x{304}", "\x{16A}"));
+
# 107
$objTo->change(upper_before_lower => 1);
@@ -177,26 +177,15 @@ ok($objTo->lt("NG", "\x{14B}"));
ok($objTo->gt("\x{14B}", "\x{14A}"));
ok($objTo->lt("\x{2BB}", "\x{2BD}"));
-ok($objTo->gt("a\x{304}", "A\x{304}"));
ok($objTo->gt("a\x{301}", "A\x{301}"));
-ok($objTo->gt("e\x{304}", "E\x{304}"));
+ok($objTo->gt("a\x{304}", "A\x{304}"));
ok($objTo->gt("e\x{301}", "E\x{301}"));
-ok($objTo->gt("i\x{304}", "I\x{304}"));
+ok($objTo->gt("e\x{304}", "E\x{304}"));
ok($objTo->gt("i\x{301}", "I\x{301}"));
-ok($objTo->gt("o\x{304}", "O\x{304}"));
+ok($objTo->gt("i\x{304}", "I\x{304}"));
ok($objTo->gt("o\x{301}", "O\x{301}"));
-ok($objTo->gt("u\x{304}", "U\x{304}"));
+ok($objTo->gt("o\x{304}", "O\x{304}"));
ok($objTo->gt("u\x{301}", "U\x{301}"));
+ok($objTo->gt("u\x{304}", "U\x{304}"));
-ok($objTo->lt("a\x{304}", "a\x{301}"));
-ok($objTo->lt("A\x{304}", "A\x{301}"));
-ok($objTo->lt("e\x{304}", "e\x{301}"));
-ok($objTo->lt("E\x{304}", "E\x{301}"));
-ok($objTo->lt("i\x{304}", "i\x{301}"));
-ok($objTo->lt("I\x{304}", "I\x{301}"));
-ok($objTo->lt("o\x{304}", "o\x{301}"));
-ok($objTo->lt("O\x{304}", "O\x{301}"));
-ok($objTo->lt("u\x{304}", "u\x{301}"));
-ok($objTo->lt("U\x{304}", "U\x{301}"));
-
-# 132
+# 122
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_uk.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_uk.t
index df3a6e7be73..98670498301 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_uk.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_uk.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..208\n"; }
+BEGIN { $| = 1; print "1..203\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -39,10 +39,8 @@ $objUk->change(level => 1);
ok($objUk->gt("\x{491}", "\x{433}"));
ok($objUk->lt("\x{491}", "\x{434}"));
-ok($objUk->gt("\x{44C}", "\x{44F}"));
-ok($objUk->lt("\x{44C}", "\x{519}"));
-# 6
+# 4
ok($objUk->gt("\x{4E5}", "\x{438}")); # not suppressed
ok($objUk->gt("\x{4E4}", "\x{418}")); # not suppressed
@@ -51,7 +49,7 @@ ok($objUk->gt("\x{407}", "\x{406}")); # not suppressed
ok($objUk->gt("\x{439}", "\x{438}")); # not suppressed
ok($objUk->gt("\x{419}", "\x{418}")); # not suppressed
-# 12
+# 10
ok($objUk->eq("\x{4D1}", "\x{430}"));
ok($objUk->eq("\x{4D0}", "\x{410}"));
@@ -100,14 +98,13 @@ ok($objUk->eq("\x{4EC}", "\x{42D}"));
ok($objUk->eq("\x{477}", "\x{475}"));
ok($objUk->eq("\x{476}", "\x{474}"));
-# 58
+# 56
$objUk->change(level => 2);
ok($objUk->eq("\x{491}", "\x{490}"));
-ok($objUk->eq("\x{44C}", "\x{42C}"));
-# 60
+# 57
ok($objUk->gt("\x{4D1}", "\x{430}"));
ok($objUk->gt("\x{4D0}", "\x{410}"));
@@ -156,14 +153,13 @@ ok($objUk->gt("\x{4EC}", "\x{42D}"));
ok($objUk->gt("\x{477}", "\x{475}"));
ok($objUk->gt("\x{476}", "\x{474}"));
-# 106
+# 103
$objUk->change(level => 3);
ok($objUk->lt("\x{491}", "\x{490}"));
-ok($objUk->lt("\x{44C}", "\x{42C}"));
-# 108
+# 104
ok($objUk->eq("\x{4E5}", "\x{438}\x{308}")); # not suppressed
ok($objUk->eq("\x{4E4}", "\x{418}\x{308}")); # not suppressed
@@ -172,7 +168,7 @@ ok($objUk->eq("\x{407}", "\x{406}\x{308}")); # not suppressed
ok($objUk->eq("\x{439}", "\x{438}\x{306}")); # not suppressed
ok($objUk->eq("\x{419}", "\x{418}\x{306}")); # not suppressed
-# 114
+# 110
for my $i ("", "\0") {
ok($objUk->eq("\x{4D1}", "\x{430}$i\x{306}"));
@@ -223,11 +219,10 @@ for my $i ("", "\0") {
ok($objUk->eq("\x{476}", "\x{474}$i\x{30F}"));
}
-# 206
+# 202
$objUk->change(upper_before_lower => 1);
ok($objUk->gt("\x{491}", "\x{490}"));
-ok($objUk->gt("\x{44C}", "\x{42C}"));
-# 208
+# 203
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ur.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ur.t
index d614cd1e3c2..e9093e59939 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ur.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_ur.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..91\n"; }
+BEGIN { $| = 1; print "1..166\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -35,77 +35,16 @@ my $objUr = Unicode::Collate::Locale->
ok($objUr->getlocale, 'ur');
-$objUr->change(level => 1);
-
-ok($objUr->lt("\x{627}", "\x{622}"));
-ok($objUr->lt("\x{622}", "\x{628}"));
-ok($objUr->lt("\x{628}", "\x{628}\x{6BE}"));
-ok($objUr->lt("\x{628}\x{6BE}", "\x{67E}"));
-ok($objUr->lt("\x{67E}", "\x{67E}\x{6BE}"));
-ok($objUr->lt("\x{67E}\x{6BE}", "\x{62A}"));
-ok($objUr->lt("\x{62A}", "\x{62A}\x{6BE}"));
-ok($objUr->lt("\x{62A}\x{6BE}", "\x{679}"));
-ok($objUr->lt("\x{679}", "\x{679}\x{6BE}"));
-ok($objUr->lt("\x{679}\x{6BE}", "\x{62B}"));
-ok($objUr->lt("\x{62B}", "\x{62C}"));
-ok($objUr->lt("\x{62C}", "\x{62C}\x{6BE}"));
-ok($objUr->lt("\x{62C}\x{6BE}", "\x{686}"));
-ok($objUr->lt("\x{686}", "\x{686}\x{6BE}"));
-ok($objUr->lt("\x{686}\x{6BE}", "\x{62D}"));
-ok($objUr->lt("\x{62D}", "\x{62E}"));
-ok($objUr->lt("\x{62E}", "\x{62F}"));
-ok($objUr->lt("\x{62F}", "\x{62F}\x{6BE}"));
-ok($objUr->lt("\x{62F}\x{6BE}", "\x{688}"));
-ok($objUr->lt("\x{688}", "\x{688}\x{6BE}"));
-ok($objUr->lt("\x{688}\x{6BE}", "\x{630}"));
-ok($objUr->lt("\x{630}", "\x{631}"));
-ok($objUr->lt("\x{631}", "\x{631}\x{6BE}"));
-ok($objUr->lt("\x{631}\x{6BE}", "\x{691}"));
-ok($objUr->lt("\x{691}", "\x{691}\x{6BE}"));
-ok($objUr->lt("\x{691}\x{6BE}", "\x{632}"));
-ok($objUr->lt("\x{632}", "\x{698}"));
-ok($objUr->lt("\x{698}", "\x{633}"));
-ok($objUr->lt("\x{633}", "\x{634}"));
-ok($objUr->lt("\x{634}", "\x{635}"));
-ok($objUr->lt("\x{635}", "\x{636}"));
-ok($objUr->lt("\x{636}", "\x{637}"));
-ok($objUr->lt("\x{637}", "\x{638}"));
-ok($objUr->lt("\x{638}", "\x{639}"));
-ok($objUr->lt("\x{639}", "\x{63A}"));
-ok($objUr->lt("\x{63A}", "\x{641}"));
-ok($objUr->lt("\x{641}", "\x{642}"));
-ok($objUr->lt("\x{642}", "\x{6A9}"));
-ok($objUr->lt("\x{6A9}", "\x{6A9}\x{6BE}"));
-ok($objUr->lt("\x{6A9}\x{6BE}", "\x{6AF}"));
-ok($objUr->lt("\x{6AF}", "\x{6AF}\x{6BE}"));
-ok($objUr->lt("\x{6AF}\x{6BE}", "\x{644}"));
-ok($objUr->lt("\x{644}", "\x{644}\x{6BE}"));
-ok($objUr->lt("\x{644}\x{6BE}", "\x{645}"));
-ok($objUr->lt("\x{645}", "\x{645}\x{6BE}"));
-ok($objUr->lt("\x{645}\x{6BE}", "\x{646}"));
-ok($objUr->lt("\x{646}", "\x{646}\x{6BE}"));
-ok($objUr->lt("\x{646}\x{6BE}", "\x{6BA}"));
-ok($objUr->lt("\x{6BA}", "\x{6BA}\x{6BE}"));
-ok($objUr->lt("\x{6BA}\x{6BE}", "\x{648}"));
-ok($objUr->lt("\x{648}", "\x{648}\x{6BE}"));
-ok($objUr->lt("\x{648}\x{6BE}", "\x{6C1}"));
-ok($objUr->lt("\x{6C1}", "\x{6BE}"));
-ok($objUr->lt("\x{6BE}", "\x{6C3}"));
-ok($objUr->lt("\x{6C3}", "\x{621}"));
-ok($objUr->lt("\x{621}", "\x{6CC}"));
-ok($objUr->lt("\x{6CC}", "\x{6CC}\x{6BE}"));
-ok($objUr->lt("\x{6CC}\x{6BE}", "\x{6D2}"));
-ok($objUr->lt("\x{6D2}", "\x{67B}"));
-
-# 61
+$objUr->change(level => 3);
-ok($objUr->eq("\x{627}", "\x{623}"));
-ok($objUr->eq("\x{648}", "\x{624}"));
-ok($objUr->eq("\x{6C1}", "\x{6C2}"));
-ok($objUr->eq("\x{6CC}", "\x{626}"));
-ok($objUr->eq("\x{6D2}", "\x{6D3}"));
+ok($objUr->eq("\x{623}", "\x{627}\x{654}"));
+ok($objUr->eq("\x{622}", "\x{627}\x{653}"));
+ok($objUr->eq("\x{624}", "\x{648}\x{654}"));
+ok($objUr->eq("\x{6C2}", "\x{6C1}\x{654}"));
+ok($objUr->eq("\x{626}", "\x{64A}\x{654}"));
+ok($objUr->eq("\x{6D3}", "\x{6D2}\x{654}"));
-# 66
+# 8
$objUr->change(level => 2);
@@ -115,7 +54,7 @@ ok($objUr->lt("\x{6C1}", "\x{6C2}"));
ok($objUr->lt("\x{6CC}", "\x{626}"));
ok($objUr->lt("\x{6D2}", "\x{6D3}"));
-# 71
+# 13
ok($objUr->lt("\x{652}", "\x{64E}"));
ok($objUr->lt("\x{64E}", "\x{650}"));
@@ -132,13 +71,101 @@ ok($objUr->lt("\x{651}", "\x{658}"));
ok($objUr->lt("\x{658}", "\x{653}"));
ok($objUr->lt("\x{653}", "\x{655}"));
-# 85
+# 27
-ok($objUr->eq("\x{623}", "\x{627}\x{654}"));
-ok($objUr->eq("\x{622}", "\x{627}\x{653}"));
-ok($objUr->eq("\x{624}", "\x{648}\x{654}"));
-ok($objUr->eq("\x{6C2}", "\x{6C1}\x{654}"));
-ok($objUr->eq("\x{626}", "\x{64A}\x{654}"));
-ok($objUr->eq("\x{6D3}", "\x{6D2}\x{654}"));
+$objUr->change(level => 1);
+
+ok($objUr->eq("\x{627}", "\x{623}"));
+ok($objUr->eq("\x{648}", "\x{624}"));
+ok($objUr->eq("\x{6C1}", "\x{6C2}"));
+ok($objUr->eq("\x{6CC}", "\x{626}"));
+ok($objUr->eq("\x{6D2}", "\x{6D3}"));
+
+# 32
+
+ok($objUr->eq("\x{652}", "\x{64E}"));
+ok($objUr->eq("\x{64E}", "\x{650}"));
+ok($objUr->eq("\x{650}", "\x{64F}"));
+ok($objUr->eq("\x{64F}", "\x{670}"));
+ok($objUr->eq("\x{670}", "\x{656}"));
+ok($objUr->eq("\x{656}", "\x{657}"));
+ok($objUr->eq("\x{657}", "\x{64B}"));
+ok($objUr->eq("\x{64B}", "\x{64D}"));
+ok($objUr->eq("\x{64D}", "\x{64C}"));
+ok($objUr->eq("\x{64C}", "\x{654}"));
+ok($objUr->eq("\x{654}", "\x{651}"));
+ok($objUr->eq("\x{651}", "\x{658}"));
+ok($objUr->eq("\x{658}", "\x{653}"));
+ok($objUr->eq("\x{653}", "\x{655}"));
+
+# 46
+
+for my $h (0, 1) {
+ no warnings 'utf8';
+ my $t = $h ? pack('U', 0xFFFF) : "";
+ $objUr->change(highestFFFF => 1) if $h;
+
+ ok($objUr->lt("\x{627}$t", "\x{622}"));
+ ok($objUr->lt("\x{622}$t", "\x{628}"));
+ ok($objUr->lt("\x{628}$t", "\x{628}\x{6BE}"));
+ ok($objUr->lt("\x{628}\x{6BE}$t", "\x{67E}"));
+ ok($objUr->lt("\x{67E}$t", "\x{67E}\x{6BE}"));
+ ok($objUr->lt("\x{67E}\x{6BE}$t", "\x{62A}"));
+ ok($objUr->lt("\x{62A}$t", "\x{62A}\x{6BE}"));
+ ok($objUr->lt("\x{62A}\x{6BE}$t", "\x{679}"));
+ ok($objUr->lt("\x{679}$t", "\x{679}\x{6BE}"));
+ ok($objUr->lt("\x{679}\x{6BE}$t", "\x{62B}"));
+ ok($objUr->lt("\x{62B}$t", "\x{62C}"));
+ ok($objUr->lt("\x{62C}$t", "\x{62C}\x{6BE}"));
+ ok($objUr->lt("\x{62C}\x{6BE}$t", "\x{686}"));
+ ok($objUr->lt("\x{686}$t", "\x{686}\x{6BE}"));
+ ok($objUr->lt("\x{686}\x{6BE}$t", "\x{62D}"));
+ ok($objUr->lt("\x{62D}$t", "\x{62E}"));
+ ok($objUr->lt("\x{62E}$t", "\x{62F}"));
+ ok($objUr->lt("\x{62F}$t", "\x{62F}\x{6BE}"));
+ ok($objUr->lt("\x{62F}\x{6BE}$t", "\x{688}"));
+ ok($objUr->lt("\x{688}$t", "\x{688}\x{6BE}"));
+ ok($objUr->lt("\x{688}\x{6BE}$t", "\x{630}"));
+ ok($objUr->lt("\x{630}$t", "\x{631}"));
+ ok($objUr->lt("\x{631}$t", "\x{631}\x{6BE}"));
+ ok($objUr->lt("\x{631}\x{6BE}$t", "\x{691}"));
+ ok($objUr->lt("\x{691}$t", "\x{691}\x{6BE}"));
+ ok($objUr->lt("\x{691}\x{6BE}$t", "\x{632}"));
+ ok($objUr->lt("\x{632}$t", "\x{698}"));
+ ok($objUr->lt("\x{698}$t", "\x{633}"));
+ ok($objUr->lt("\x{633}$t", "\x{634}"));
+ ok($objUr->lt("\x{634}$t", "\x{635}"));
+ ok($objUr->lt("\x{635}$t", "\x{636}"));
+ ok($objUr->lt("\x{636}$t", "\x{637}"));
+ ok($objUr->lt("\x{637}$t", "\x{638}"));
+ ok($objUr->lt("\x{638}$t", "\x{639}"));
+ ok($objUr->lt("\x{639}$t", "\x{63A}"));
+ ok($objUr->lt("\x{63A}$t", "\x{641}"));
+ ok($objUr->lt("\x{641}$t", "\x{642}"));
+ ok($objUr->lt("\x{642}$t", "\x{6A9}"));
+ ok($objUr->lt("\x{6A9}$t", "\x{6A9}\x{6BE}"));
+ ok($objUr->lt("\x{6A9}\x{6BE}$t", "\x{6AF}"));
+ ok($objUr->lt("\x{6AF}$t", "\x{6AF}\x{6BE}"));
+ ok($objUr->lt("\x{6AF}\x{6BE}$t", "\x{644}"));
+ ok($objUr->lt("\x{644}$t", "\x{644}\x{6BE}"));
+ ok($objUr->lt("\x{644}\x{6BE}$t", "\x{645}"));
+ ok($objUr->lt("\x{645}$t", "\x{645}\x{6BE}"));
+ ok($objUr->lt("\x{645}\x{6BE}$t", "\x{646}"));
+ ok($objUr->lt("\x{646}$t", "\x{646}\x{6BE}"));
+ ok($objUr->lt("\x{646}\x{6BE}$t", "\x{6BA}"));
+ ok($objUr->lt("\x{6BA}$t", "\x{6BA}\x{6BE}"));
+ ok($objUr->lt("\x{6BA}\x{6BE}$t", "\x{648}"));
+ ok($objUr->lt("\x{648}$t", "\x{648}\x{6BE}"));
+ ok($objUr->lt("\x{648}\x{6BE}$t", "\x{6C1}"));
+ ok($objUr->lt("\x{6C1}$t", "\x{6BE}"));
+ ok($objUr->lt("\x{6BE}$t", "\x{6C3}"));
+ ok($objUr->lt("\x{6C3}$t", "\x{621}"));
+ ok($objUr->lt("\x{621}$t", "\x{6CC}"));
+ ok($objUr->lt("\x{6CC}$t", "\x{6CC}\x{6BE}"));
+ ok($objUr->lt("\x{6CC}\x{6BE}$t", "\x{6D2}"));
+ ok($objUr->lt("\x{6D2}$t", "\x{66E}"));
+ ok($objUr->lt("\x{66E}$t", "\x{67B}"));
+}
+
+# 166
-# 91
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_zhzy.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_zhzy.t
new file mode 100644
index 00000000000..bbbf41fb0cf
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/loc_zhzy.t
@@ -0,0 +1,381 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use strict;
+use warnings;
+BEGIN { $| = 1; print "1..308\n"; }
+my $count = 0;
+sub ok ($;$) {
+ my $p = my $r = shift;
+ if (@_) {
+ my $x = shift;
+ $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
+ }
+ print $p ? "ok" : "not ok", ' ', ++$count, "\n";
+}
+
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objZhZ = Unicode::Collate::Locale->
+ new(locale => 'ZH__zhuyin', normalization => undef);
+
+ok($objZhZ->getlocale, 'zh__zhuyin');
+
+$objZhZ->change(level => 1);
+
+ok($objZhZ->eq("a\x{304}", "a\x{301}"));
+ok($objZhZ->eq("a\x{301}", "a\x{30C}"));
+ok($objZhZ->eq("a\x{30C}", "a\x{300}"));
+ok($objZhZ->eq("a\x{300}", "a"));
+ok($objZhZ->eq("e\x{304}", "e\x{301}"));
+ok($objZhZ->eq("e\x{301}", "e\x{30C}"));
+ok($objZhZ->eq("e\x{30C}", "e\x{300}"));
+ok($objZhZ->eq("e\x{300}", "e"));
+ok($objZhZ->eq("e\x{302}\x{304}", "e\x{302}\x{301}"));
+ok($objZhZ->eq("e\x{302}\x{301}", "e\x{302}\x{30C}"));
+ok($objZhZ->eq("e\x{302}\x{30C}", "e\x{302}\x{300}"));
+ok($objZhZ->eq("e\x{302}\x{300}", "e\x{302}"));
+ok($objZhZ->eq("i\x{304}", "i\x{301}"));
+ok($objZhZ->eq("i\x{301}", "i\x{30C}"));
+ok($objZhZ->eq("i\x{30C}", "i\x{300}"));
+ok($objZhZ->eq("i\x{300}", "i"));
+ok($objZhZ->eq("m\x{304}", "m\x{301}"));
+ok($objZhZ->eq("m\x{301}", "m\x{30C}"));
+ok($objZhZ->eq("m\x{30C}", "m\x{300}"));
+ok($objZhZ->eq("m\x{300}", "m"));
+ok($objZhZ->eq("n\x{304}", "n\x{301}"));
+ok($objZhZ->eq("n\x{301}", "n\x{30C}"));
+ok($objZhZ->eq("n\x{30C}", "n\x{300}"));
+ok($objZhZ->eq("n\x{300}", "n"));
+ok($objZhZ->eq("o\x{304}", "o\x{301}"));
+ok($objZhZ->eq("o\x{301}", "o\x{30C}"));
+ok($objZhZ->eq("o\x{30C}", "o\x{300}"));
+ok($objZhZ->eq("o\x{300}", "o"));
+ok($objZhZ->eq("u\x{304}", "u\x{301}"));
+ok($objZhZ->eq("u\x{301}", "u\x{30C}"));
+ok($objZhZ->eq("u\x{30C}", "u\x{300}"));
+ok($objZhZ->eq("u\x{300}", "u"));
+ok($objZhZ->eq("u\x{308}\x{304}", "u\x{308}\x{301}"));
+ok($objZhZ->eq("u\x{308}\x{301}", "u\x{308}\x{30C}"));
+ok($objZhZ->eq("u\x{308}\x{30C}", "u\x{308}\x{300}"));
+ok($objZhZ->eq("u\x{308}\x{300}", "u\x{308}"));
+
+# 38
+
+$objZhZ->change(level => 2);
+
+ok($objZhZ->lt("a\x{304}", "a\x{301}"));
+ok($objZhZ->lt("a\x{301}", "a\x{30C}"));
+ok($objZhZ->lt("a\x{30C}", "a\x{300}"));
+ok($objZhZ->lt("a\x{300}", "a"));
+ok($objZhZ->lt("e\x{304}", "e\x{301}"));
+ok($objZhZ->lt("e\x{301}", "e\x{30C}"));
+ok($objZhZ->lt("e\x{30C}", "e\x{300}"));
+ok($objZhZ->lt("e\x{300}", "e"));
+ok($objZhZ->lt("e\x{302}\x{304}", "e\x{302}\x{301}"));
+ok($objZhZ->lt("e\x{302}\x{301}", "e\x{302}\x{30C}"));
+ok($objZhZ->lt("e\x{302}\x{30C}", "e\x{302}\x{300}"));
+ok($objZhZ->lt("e\x{302}\x{300}", "e\x{302}"));
+ok($objZhZ->lt("i\x{304}", "i\x{301}"));
+ok($objZhZ->lt("i\x{301}", "i\x{30C}"));
+ok($objZhZ->lt("i\x{30C}", "i\x{300}"));
+ok($objZhZ->lt("i\x{300}", "i"));
+ok($objZhZ->lt("m\x{304}", "m\x{301}"));
+ok($objZhZ->lt("m\x{301}", "m\x{30C}"));
+ok($objZhZ->lt("m\x{30C}", "m\x{300}"));
+ok($objZhZ->lt("m\x{300}", "m"));
+ok($objZhZ->lt("n\x{304}", "n\x{301}"));
+ok($objZhZ->lt("n\x{301}", "n\x{30C}"));
+ok($objZhZ->lt("n\x{30C}", "n\x{300}"));
+ok($objZhZ->lt("n\x{300}", "n"));
+ok($objZhZ->lt("o\x{304}", "o\x{301}"));
+ok($objZhZ->lt("o\x{301}", "o\x{30C}"));
+ok($objZhZ->lt("o\x{30C}", "o\x{300}"));
+ok($objZhZ->lt("o\x{300}", "o"));
+ok($objZhZ->lt("u\x{304}", "u\x{301}"));
+ok($objZhZ->lt("u\x{301}", "u\x{30C}"));
+ok($objZhZ->lt("u\x{30C}", "u\x{300}"));
+ok($objZhZ->lt("u\x{300}", "u"));
+ok($objZhZ->lt("u\x{308}\x{304}", "u\x{308}\x{301}"));
+ok($objZhZ->lt("u\x{308}\x{301}", "u\x{308}\x{30C}"));
+ok($objZhZ->lt("u\x{308}\x{30C}", "u\x{308}\x{300}"));
+ok($objZhZ->lt("u\x{308}\x{300}", "u\x{308}"));
+
+# 74
+
+ok($objZhZ->eq("a\x{304}", "A\x{304}"));
+ok($objZhZ->eq("a\x{301}", "A\x{301}"));
+ok($objZhZ->eq("a\x{30C}", "A\x{30C}"));
+ok($objZhZ->eq("a\x{300}", "A\x{300}"));
+ok($objZhZ->eq("e\x{304}", "E\x{304}"));
+ok($objZhZ->eq("e\x{301}", "E\x{301}"));
+ok($objZhZ->eq("e\x{30C}", "E\x{30C}"));
+ok($objZhZ->eq("e\x{300}", "E\x{300}"));
+ok($objZhZ->eq("e\x{302}\x{304}", "E\x{302}\x{304}"));
+ok($objZhZ->eq("e\x{302}\x{301}", "E\x{302}\x{301}"));
+ok($objZhZ->eq("e\x{302}\x{30C}", "E\x{302}\x{30C}"));
+ok($objZhZ->eq("e\x{302}\x{300}", "E\x{302}\x{300}"));
+ok($objZhZ->eq("e\x{302}", "E\x{302}"));
+ok($objZhZ->eq("i\x{304}", "I\x{304}"));
+ok($objZhZ->eq("i\x{301}", "I\x{301}"));
+ok($objZhZ->eq("i\x{30C}", "I\x{30C}"));
+ok($objZhZ->eq("i\x{300}", "I\x{300}"));
+ok($objZhZ->eq("m\x{304}", "M\x{304}"));
+ok($objZhZ->eq("m\x{301}", "M\x{301}"));
+ok($objZhZ->eq("m\x{30C}", "M\x{30C}"));
+ok($objZhZ->eq("m\x{300}", "M\x{300}"));
+ok($objZhZ->eq("n\x{304}", "N\x{304}"));
+ok($objZhZ->eq("n\x{301}", "N\x{301}"));
+ok($objZhZ->eq("n\x{30C}", "N\x{30C}"));
+ok($objZhZ->eq("n\x{300}", "N\x{300}"));
+ok($objZhZ->eq("o\x{304}", "O\x{304}"));
+ok($objZhZ->eq("o\x{301}", "O\x{301}"));
+ok($objZhZ->eq("o\x{30C}", "O\x{30C}"));
+ok($objZhZ->eq("o\x{300}", "O\x{300}"));
+ok($objZhZ->eq("u\x{304}", "U\x{304}"));
+ok($objZhZ->eq("u\x{301}", "U\x{301}"));
+ok($objZhZ->eq("u\x{30C}", "U\x{30C}"));
+ok($objZhZ->eq("u\x{300}", "U\x{300}"));
+ok($objZhZ->eq("u\x{308}\x{304}", "U\x{308}\x{304}"));
+ok($objZhZ->eq("u\x{308}\x{301}", "U\x{308}\x{301}"));
+ok($objZhZ->eq("u\x{308}\x{30C}", "U\x{308}\x{30C}"));
+ok($objZhZ->eq("u\x{308}\x{300}", "U\x{308}\x{300}"));
+ok($objZhZ->eq("u\x{308}", "U\x{308}"));
+
+# 112
+
+$objZhZ->change(level => 3);
+
+ok($objZhZ->lt("a\x{304}", "A\x{304}"));
+ok($objZhZ->lt("a\x{301}", "A\x{301}"));
+ok($objZhZ->lt("a\x{30C}", "A\x{30C}"));
+ok($objZhZ->lt("a\x{300}", "A\x{300}"));
+ok($objZhZ->lt("e\x{304}", "E\x{304}"));
+ok($objZhZ->lt("e\x{301}", "E\x{301}"));
+ok($objZhZ->lt("e\x{30C}", "E\x{30C}"));
+ok($objZhZ->lt("e\x{300}", "E\x{300}"));
+ok($objZhZ->lt("e\x{302}\x{304}", "E\x{302}\x{304}"));
+ok($objZhZ->lt("e\x{302}\x{301}", "E\x{302}\x{301}"));
+ok($objZhZ->lt("e\x{302}\x{30C}", "E\x{302}\x{30C}"));
+ok($objZhZ->lt("e\x{302}\x{300}", "E\x{302}\x{300}"));
+ok($objZhZ->lt("e\x{302}", "E\x{302}"));
+ok($objZhZ->lt("i\x{304}", "I\x{304}"));
+ok($objZhZ->lt("i\x{301}", "I\x{301}"));
+ok($objZhZ->lt("i\x{30C}", "I\x{30C}"));
+ok($objZhZ->lt("i\x{300}", "I\x{300}"));
+ok($objZhZ->lt("m\x{304}", "M\x{304}"));
+ok($objZhZ->lt("m\x{301}", "M\x{301}"));
+ok($objZhZ->lt("m\x{30C}", "M\x{30C}"));
+ok($objZhZ->lt("m\x{300}", "M\x{300}"));
+ok($objZhZ->lt("n\x{304}", "N\x{304}"));
+ok($objZhZ->lt("n\x{301}", "N\x{301}"));
+ok($objZhZ->lt("n\x{30C}", "N\x{30C}"));
+ok($objZhZ->lt("n\x{300}", "N\x{300}"));
+ok($objZhZ->lt("o\x{304}", "O\x{304}"));
+ok($objZhZ->lt("o\x{301}", "O\x{301}"));
+ok($objZhZ->lt("o\x{30C}", "O\x{30C}"));
+ok($objZhZ->lt("o\x{300}", "O\x{300}"));
+ok($objZhZ->lt("u\x{304}", "U\x{304}"));
+ok($objZhZ->lt("u\x{301}", "U\x{301}"));
+ok($objZhZ->lt("u\x{30C}", "U\x{30C}"));
+ok($objZhZ->lt("u\x{300}", "U\x{300}"));
+ok($objZhZ->lt("u\x{308}\x{304}", "U\x{308}\x{304}"));
+ok($objZhZ->lt("u\x{308}\x{301}", "U\x{308}\x{301}"));
+ok($objZhZ->lt("u\x{308}\x{30C}", "U\x{308}\x{30C}"));
+ok($objZhZ->lt("u\x{308}\x{300}", "U\x{308}\x{300}"));
+ok($objZhZ->lt("u\x{308}", "U\x{308}"));
+
+# 150
+
+ok($objZhZ->eq("a\x{304}", "\x{101}"));
+ok($objZhZ->eq("A\x{304}", "\x{100}"));
+ok($objZhZ->eq("a\x{301}", pack('U', 0xE1)));
+ok($objZhZ->eq("a\x{301}", "a\x{341}"));
+ok($objZhZ->eq("A\x{301}", pack('U', 0xC1)));
+ok($objZhZ->eq("A\x{301}", "A\x{341}"));
+ok($objZhZ->eq("a\x{30C}", "\x{1CE}"));
+ok($objZhZ->eq("A\x{30C}", "\x{1CD}"));
+ok($objZhZ->eq("a\x{300}", pack('U', 0xE0)));
+ok($objZhZ->eq("a\x{300}", "a\x{340}"));
+ok($objZhZ->eq("A\x{300}", pack('U', 0xC0)));
+ok($objZhZ->eq("A\x{300}", "A\x{340}"));
+ok($objZhZ->eq("e\x{304}", "\x{113}"));
+ok($objZhZ->eq("E\x{304}", "\x{112}"));
+ok($objZhZ->eq("e\x{301}", pack('U', 0xE9)));
+ok($objZhZ->eq("e\x{301}", "e\x{341}"));
+ok($objZhZ->eq("E\x{301}", pack('U', 0xC9)));
+ok($objZhZ->eq("E\x{301}", "E\x{341}"));
+ok($objZhZ->eq("e\x{30C}", "\x{11B}"));
+ok($objZhZ->eq("E\x{30C}", "\x{11A}"));
+ok($objZhZ->eq("e\x{300}", pack('U', 0xE8)));
+ok($objZhZ->eq("e\x{300}", "e\x{340}"));
+ok($objZhZ->eq("E\x{300}", pack('U', 0xC8)));
+ok($objZhZ->eq("E\x{300}", "E\x{340}"));
+ok($objZhZ->eq("e\x{302}\x{304}", pack('U*', 0xEA, 0x304)));
+ok($objZhZ->eq("E\x{302}\x{304}", pack('U*', 0xCA, 0x304)));
+ok($objZhZ->eq("e\x{302}\x{301}", "\x{1EBF}"));
+ok($objZhZ->eq("e\x{302}\x{301}", "e\x{302}\x{341}"));
+ok($objZhZ->eq("E\x{302}\x{301}", "\x{1EBE}"));
+ok($objZhZ->eq("E\x{302}\x{301}", "E\x{302}\x{341}"));
+ok($objZhZ->eq("e\x{302}\x{301}", pack('U*', 0xEA, 0x301)));
+ok($objZhZ->eq("e\x{302}\x{301}", pack('U*', 0xEA, 0x341)));
+ok($objZhZ->eq("E\x{302}\x{301}", pack('U*', 0xCA, 0x301)));
+ok($objZhZ->eq("E\x{302}\x{301}", pack('U*', 0xCA, 0x341)));
+ok($objZhZ->eq("e\x{302}\x{30C}", pack('U*', 0xEA, 0x30C)));
+ok($objZhZ->eq("E\x{302}\x{30C}", pack('U*', 0xCA, 0x30C)));
+ok($objZhZ->eq("e\x{302}\x{300}", "\x{1EC1}"));
+ok($objZhZ->eq("e\x{302}\x{300}", "e\x{302}\x{340}"));
+ok($objZhZ->eq("E\x{302}\x{300}", "\x{1EC0}"));
+ok($objZhZ->eq("E\x{302}\x{300}", "E\x{302}\x{340}"));
+ok($objZhZ->eq("e\x{302}\x{300}", pack('U*', 0xEA, 0x300)));
+ok($objZhZ->eq("e\x{302}\x{300}", pack('U*', 0xEA, 0x340)));
+ok($objZhZ->eq("E\x{302}\x{300}", pack('U*', 0xCA, 0x300)));
+ok($objZhZ->eq("E\x{302}\x{300}", pack('U*', 0xCA, 0x340)));
+ok($objZhZ->eq("e\x{302}", pack('U', 0xEA)));
+ok($objZhZ->eq("E\x{302}", pack('U', 0xCA)));
+ok($objZhZ->eq("i\x{304}", "\x{12B}"));
+ok($objZhZ->eq("I\x{304}", "\x{12A}"));
+ok($objZhZ->eq("i\x{301}", pack('U', 0xED)));
+ok($objZhZ->eq("i\x{301}", "i\x{341}"));
+ok($objZhZ->eq("I\x{301}", pack('U', 0xCD)));
+ok($objZhZ->eq("I\x{301}", "I\x{341}"));
+ok($objZhZ->eq("i\x{30C}", "\x{1D0}"));
+ok($objZhZ->eq("I\x{30C}", "\x{1CF}"));
+ok($objZhZ->eq("i\x{300}", pack('U', 0xEC)));
+ok($objZhZ->eq("i\x{300}", "i\x{340}"));
+ok($objZhZ->eq("I\x{300}", pack('U', 0xCC)));
+ok($objZhZ->eq("I\x{300}", "I\x{340}"));
+ok($objZhZ->eq("m\x{301}", "\x{1E3F}"));
+ok($objZhZ->eq("m\x{301}", "m\x{341}"));
+ok($objZhZ->eq("M\x{301}", "\x{1E3E}"));
+ok($objZhZ->eq("M\x{301}", "M\x{341}"));
+ok($objZhZ->eq("m\x{300}", "m\x{340}"));
+ok($objZhZ->eq("M\x{300}", "M\x{340}"));
+ok($objZhZ->eq("n\x{301}", "\x{144}"));
+ok($objZhZ->eq("n\x{301}", "n\x{341}"));
+ok($objZhZ->eq("N\x{301}", "\x{143}"));
+ok($objZhZ->eq("N\x{301}", "N\x{341}"));
+ok($objZhZ->eq("n\x{30C}", "\x{148}"));
+ok($objZhZ->eq("N\x{30C}", "\x{147}"));
+ok($objZhZ->eq("n\x{300}", "\x{1F9}"));
+ok($objZhZ->eq("n\x{300}", "n\x{340}"));
+ok($objZhZ->eq("N\x{300}", "\x{1F8}"));
+ok($objZhZ->eq("N\x{300}", "N\x{340}"));
+ok($objZhZ->eq("o\x{304}", "\x{14D}"));
+ok($objZhZ->eq("O\x{304}", "\x{14C}"));
+ok($objZhZ->eq("o\x{301}", pack('U', 0xF3)));
+ok($objZhZ->eq("o\x{301}", "o\x{341}"));
+ok($objZhZ->eq("O\x{301}", pack('U', 0xD3)));
+ok($objZhZ->eq("O\x{301}", "O\x{341}"));
+ok($objZhZ->eq("o\x{30C}", "\x{1D2}"));
+ok($objZhZ->eq("O\x{30C}", "\x{1D1}"));
+ok($objZhZ->eq("o\x{300}", pack('U', 0xF2)));
+ok($objZhZ->eq("o\x{300}", "o\x{340}"));
+ok($objZhZ->eq("O\x{300}", pack('U', 0xD2)));
+ok($objZhZ->eq("O\x{300}", "O\x{340}"));
+ok($objZhZ->eq("u\x{304}", "\x{16B}"));
+ok($objZhZ->eq("U\x{304}", "\x{16A}"));
+ok($objZhZ->eq("u\x{301}", pack('U', 0xFA)));
+ok($objZhZ->eq("u\x{301}", "u\x{341}"));
+ok($objZhZ->eq("U\x{301}", pack('U', 0xDA)));
+ok($objZhZ->eq("U\x{301}", "U\x{341}"));
+ok($objZhZ->eq("u\x{30C}", "\x{1D4}"));
+ok($objZhZ->eq("U\x{30C}", "\x{1D3}"));
+ok($objZhZ->eq("u\x{300}", pack('U', 0xF9)));
+ok($objZhZ->eq("u\x{300}", "u\x{340}"));
+ok($objZhZ->eq("U\x{300}", pack('U', 0xD9)));
+ok($objZhZ->eq("U\x{300}", "U\x{340}"));
+ok($objZhZ->eq("u\x{308}\x{304}", "\x{1D6}"));
+ok($objZhZ->eq("U\x{308}\x{304}", "\x{1D5}"));
+ok($objZhZ->eq("u\x{308}\x{304}", pack('U*', 0xFC, 0x304)));
+ok($objZhZ->eq("U\x{308}\x{304}", pack('U*', 0xDC, 0x304)));
+ok($objZhZ->eq("u\x{308}\x{301}", "\x{1D8}"));
+ok($objZhZ->eq("u\x{308}\x{301}", "u\x{308}\x{341}"));
+ok($objZhZ->eq("U\x{308}\x{301}", "\x{1D7}"));
+ok($objZhZ->eq("U\x{308}\x{301}", "U\x{308}\x{341}"));
+ok($objZhZ->eq("u\x{308}\x{301}", pack('U*', 0xFC, 0x301)));
+ok($objZhZ->eq("u\x{308}\x{301}", pack('U*', 0xFC, 0x341)));
+ok($objZhZ->eq("U\x{308}\x{301}", pack('U*', 0xDC, 0x301)));
+ok($objZhZ->eq("U\x{308}\x{301}", pack('U*', 0xDC, 0x341)));
+ok($objZhZ->eq("u\x{308}\x{30C}", "\x{1DA}"));
+ok($objZhZ->eq("U\x{308}\x{30C}", "\x{1D9}"));
+ok($objZhZ->eq("u\x{308}\x{30C}", pack('U*', 0xFC, 0x30C)));
+ok($objZhZ->eq("U\x{308}\x{30C}", pack('U*', 0xDC, 0x30C)));
+ok($objZhZ->eq("u\x{308}\x{300}", "\x{1DC}"));
+ok($objZhZ->eq("u\x{308}\x{300}", "u\x{308}\x{340}"));
+ok($objZhZ->eq("U\x{308}\x{300}", "\x{1DB}"));
+ok($objZhZ->eq("U\x{308}\x{300}", "U\x{308}\x{340}"));
+ok($objZhZ->eq("u\x{308}\x{300}", pack('U*', 0xFC, 0x300)));
+ok($objZhZ->eq("u\x{308}\x{300}", pack('U*', 0xFC, 0x340)));
+ok($objZhZ->eq("U\x{308}\x{300}", pack('U*', 0xDC, 0x300)));
+ok($objZhZ->eq("U\x{308}\x{300}", pack('U*', 0xDC, 0x340)));
+ok($objZhZ->eq("u\x{308}", pack('U', 0xFC)));
+ok($objZhZ->eq("U\x{308}", pack('U', 0xDC)));
+
+# 274
+
+ok($objZhZ->eq("e\x{302}\x{303}", "\x{1EC5}"));
+ok($objZhZ->eq("E\x{302}\x{303}", "\x{1EC4}"));
+ok($objZhZ->eq("e\x{302}\x{309}", "\x{1EC3}"));
+ok($objZhZ->eq("E\x{302}\x{309}", "\x{1EC2}"));
+ok($objZhZ->eq("e\x{302}\x{323}", "\x{1EC7}"));
+ok($objZhZ->eq("E\x{302}\x{323}", "\x{1EC6}"));
+
+# 280
+
+$objZhZ->change(level => 1);
+
+ok($objZhZ->lt("\x{A000}", "\x{516B}"));
+ok($objZhZ->lt("\x{516B}", "\x{628A}"));
+ok($objZhZ->lt("\x{628A}", "\x{5DF4}"));
+ok($objZhZ->lt("\x{5DF4}", "\x{767D}"));
+ok($objZhZ->lt("\x{767D}", "\x{5317}"));
+ok($objZhZ->lt("\x{5317}", "\x{9F3B}"));
+ok($objZhZ->lt("\x{9F3B}", "\x{4E0D}"));
+ok($objZhZ->lt("\x{4E0D}", "\x{547D}"));
+ok($objZhZ->lt("\x{547D}", "\x{6BCD}"));
+ok($objZhZ->lt("\x{6BCD}", "\x{6253}"));
+ok($objZhZ->lt("\x{6253}", "\x{7530}"));
+ok($objZhZ->lt("\x{7530}", "\x{52AA}"));
+ok($objZhZ->lt("\x{52AA}", "\x{529B}"));
+ok($objZhZ->lt("\x{529B}", "\x{5375}"));
+ok($objZhZ->lt("\x{5375}", "\x{5149}"));
+ok($objZhZ->lt("\x{5149}", "\x{5915}"));
+ok($objZhZ->lt("\x{5915}", "\x{4E09}"));
+ok($objZhZ->lt("\x{4E09}", "\x{4E00}"));
+ok($objZhZ->lt("\x{4E00}", "\x{7528}"));
+
+# 299
+
+$objZhZ->change(variable => 'non-ignorable');
+
+ok($objZhZ->eq("\x{300}", "\x{2C9}"));
+ok($objZhZ->lt("\x{2C9}", "\x{2CA}"));
+ok($objZhZ->lt("\x{2CA}", "\x{2C7}"));
+ok($objZhZ->lt("\x{2C7}", "\x{2CB}"));
+ok($objZhZ->lt("\x{2CB}", "\x{2D9}"));
+ok($objZhZ->lt("\x{2D9}", "\x{2EA}"));
+ok($objZhZ->lt("\x{2EA}", "\x{2EB}"));
+ok($objZhZ->lt("\x{2EB}", "\ "));
+
+# 307
+
+$objZhZ->change(level => 2);
+
+ok($objZhZ->lt("\x{300}", "\x{2C9}"));
+
+# 308
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/nonchar.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/nonchar.t
index 26a50e2b9a7..2b47b28043a 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/nonchar.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/nonchar.t
@@ -25,7 +25,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..61\n"; } # 1 + 30 * 2
+BEGIN { $| = 1; print "1..90\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -54,7 +54,7 @@ no warnings 'utf8';
# allowing "Disi\x{301}lva<LOW>John" to sort next to "Disilva<LOW>John".
my $entry = <<'ENTRIES';
-FFFE ; [*0001.0020.0005.FFFE] # <noncharacter-FFFE>
+FFFE ; [.0001.0020.0005.FFFE] # <noncharacter-FFFE>
FFFF ; [.FFFE.0020.0005.FFFF] # <noncharacter-FFFF>
ENTRIES
@@ -67,7 +67,7 @@ for my $norm (undef, 'NFD') {
if (defined $norm) {
eval { require Unicode::Normalize };
if ($@) {
- ok(1) for 1..30; # silent skip
+ ok(1) for 1..34; # silent skip
next;
}
}
@@ -114,9 +114,59 @@ for my $norm (undef, 'NFD') {
# 26
ok($coll->lt($dsf[-1], $dsj[0]));
- # 27..30
+ $coll->change(level => 1);
+
+ # 27..34
for my $i (0 .. $#disilva) {
+ ok($coll->lt($dsf[$i], $dsJ[$i]));
ok($coll->lt($dsj[$i], $dsJ[$i]));
}
}
+# 69
+
+{
+ my $coll = Unicode::Collate->new(
+ table => 'keys.txt',
+ normalization => undef,
+ highestFFFF => 1,
+ minimalFFFE => 1,
+ );
+
+ $coll->change(level => 1);
+ ok($coll->lt("perl\x{FFFD}", "perl\x{FFFF}"));
+ ok($coll->lt("perl\x{1FFFD}", "perl\x{FFFF}"));
+ ok($coll->lt("perl\x{1FFFE}", "perl\x{FFFF}"));
+ ok($coll->lt("perl\x{1FFFF}", "perl\x{FFFF}"));
+ ok($coll->lt("perl\x{2FFFD}", "perl\x{FFFF}"));
+ ok($coll->lt("perl\x{2FFFE}", "perl\x{FFFF}"));
+ ok($coll->lt("perl\x{2FFFF}", "perl\x{FFFF}"));
+ ok($coll->lt("perl\x{10FFFD}", "perl\x{FFFF}"));
+ ok($coll->lt("perl\x{10FFFE}", "perl\x{FFFF}"));
+ ok($coll->lt("perl\x{10FFFF}", "perl\x{FFFF}"));
+
+# 79
+
+ $coll->change(level => 3);
+ my @list = (
+ "ab\x{FFFE}a",
+ "Ab\x{FFFE}a",
+ "ab\x{FFFE}c",
+ "Ab\x{FFFE}c",
+ "ab\x{FFFE}xyz",
+ "abc\x{FFFE}def",
+ "abc\x{FFFE}xYz",
+ "aBc\x{FFFE}xyz",
+ "abcX\x{FFFE}def",
+ "abcx\x{FFFE}xyz",
+ "b\x{FFFE}aaa",
+ "bbb\x{FFFE}a",
+ );
+ my $p = shift @list;
+ for my $c (@list) {
+ ok($coll->lt($p, $c));
+ $p = $c;
+ }
+}
+
+# 90
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/notable.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/notable.t
new file mode 100644
index 00000000000..124351760ff
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/notable.t
@@ -0,0 +1,140 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use strict;
+use warnings;
+BEGIN { $| = 1; print "1..32\n"; }
+my $count = 0;
+sub ok ($;$) {
+ my $p = my $r = shift;
+ if (@_) {
+ my $x = shift;
+ $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
+ }
+ print $p ? "ok" : "not ok", ' ', ++$count, "\n";
+}
+
+use Unicode::Collate;
+
+ok(1);
+
+#########################
+
+{
+ # Table is undefined, then no entry is defined.
+ my $undef_table = Unicode::Collate->new(
+ table => undef,
+ normalization => undef,
+ level => 1,
+ );
+
+ # in the Unicode code point order
+ ok($undef_table->lt('', 'A'));
+ ok($undef_table->lt('ABC', 'B'));
+
+ # Hangul should be decomposed (even w/o Unicode::Normalize).
+ ok($undef_table->lt("Perl", "\x{AC00}"));
+ ok($undef_table->eq("\x{AC00}", "\x{1100}\x{1161}"));
+ ok($undef_table->eq("\x{AE00}", "\x{1100}\x{1173}\x{11AF}"));
+ ok($undef_table->lt("\x{AE00}", "\x{3042}"));
+
+ # U+AC00: Hangul GA
+ # U+AE00: Hangul GEUL
+ # U+3042: Hiragana A
+
+ # Weight for CJK Ideographs is defined, though.
+ ok($undef_table->lt("", "\x{4E00}"));
+ ok($undef_table->lt("\x{4E8C}","ABC"));
+ ok($undef_table->lt("\x{4E00}","\x{3042}"));
+ ok($undef_table->lt("\x{4E00}","\x{4E8C}"));
+
+# 11
+
+ # U+4E00: Ideograph "ONE"
+ # U+4E8C: Ideograph "TWO"
+
+ for my $v ('', 8, 9, 11, 14) {
+ $undef_table->change(UCA_Version => $v) if $v;
+ ok($undef_table->lt("\x{4E00}","\0"));
+ }
+}
+
+# 16
+
+{
+ my $onlyABC = Unicode::Collate->new(
+ table => undef,
+ normalization => undef,
+ entry => << 'ENTRIES',
+0061 ; [.0101.0020.0002.0061] # LATIN SMALL LETTER A
+0041 ; [.0101.0020.0008.0041] # LATIN CAPITAL LETTER A
+0062 ; [.0102.0020.0002.0062] # LATIN SMALL LETTER B
+0042 ; [.0102.0020.0008.0042] # LATIN CAPITAL LETTER B
+0063 ; [.0103.0020.0002.0063] # LATIN SMALL LETTER C
+0043 ; [.0103.0020.0008.0043] # LATIN CAPITAL LETTER C
+ENTRIES
+ );
+ ok(
+ join(':', $onlyABC->sort( qw/ ABA BAC cc A Ab cAc aB / ) ),
+ join(':', qw/ A aB Ab ABA BAC cAc cc / ),
+ );
+}
+
+# 17
+
+{
+ my $few_entries = Unicode::Collate->new(
+ entry => <<'ENTRIES',
+0050 ; [.0101.0020.0002.0050] # P
+0045 ; [.0102.0020.0002.0045] # E
+0052 ; [.0103.0020.0002.0052] # R
+004C ; [.0104.0020.0002.004C] # L
+1100 ; [.0105.0020.0002.1100] # Hangul Jamo initial G
+1175 ; [.0106.0020.0002.1175] # Hangul Jamo middle I
+5B57 ; [.0107.0020.0002.5B57] # CJK Ideograph "Letter"
+ENTRIES
+ table => undef,
+ normalization => undef,
+ );
+ # defined before undefined
+ my $sortABC = join '',
+ $few_entries->sort(split //, "ABCDEFGHIJKLMNOPQRSTUVWXYZ ");
+
+ ok($sortABC eq "PERL ABCDFGHIJKMNOQSTUVWXYZ");
+
+ ok($few_entries->lt('E', 'D'));
+ ok($few_entries->lt("\x{5B57}", "\x{4E00}"));
+ ok($few_entries->lt("\x{AE30}", "\x{AC00}"));
+
+ # Hangul must be decomposed.
+ ok($few_entries->eq("\x{AC00}", "\x{1100}\x{1161}"));
+}
+
+# 22
+
+{
+ my $highestNUL = Unicode::Collate->new(
+ table => undef,
+ normalization => undef,
+ level => 1,
+ entry => '0000 ; [.FFFE.0020.0005.0000]',
+ );
+
+ for my $v ('', 8, 9, 11, 14) {
+ $highestNUL->change(UCA_Version => $v) if $v;
+ ok($highestNUL->lt("abc\x{4E00}", "abc\0"));
+ ok($highestNUL->lt("abc\x{E0000}","abc\0"));
+ }
+}
+
+# 32
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/overcjk0.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/overcjk0.t
index 588e8a8c028..081f57b1585 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/overcjk0.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/overcjk0.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..285\n"; } # 6 + 31 x @Versions
+BEGIN { $| = 1; print "1..316\n"; } # 6 + 31 x @Versions
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -62,7 +62,7 @@ ok($ignoreCJK->lt("Pe\x{5B57}rl", "Perl")); # 'r' is unassigned.
# 2A700..2B734 are CJK UI Ext.C since UCA_Version 20 (Unicode 5.2).
# 2B740..2B81D are CJK UI Ext.D since UCA_Version 22 (Unicode 6.0).
-my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24);
+my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26);
for my $v (@Versions) {
$ignoreCJK->change(UCA_Version => $v);
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/overcjk1.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/overcjk1.t
index dc3ae8f23b3..7bee17658ae 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/overcjk1.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/overcjk1.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..155\n"; } # 11 + 16 x @Versions
+BEGIN { $| = 1; print "1..171\n"; } # 11 + 16 x @Versions
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -62,7 +62,7 @@ ok($overCJK->lt("a\x{4E03}", "A\x{4E01}"));
# 9FC4..9FCB are CJK UI since UCA_Version 20 (Unicode 5.2).
# 9FCC is CJK UI since UCA_Version 24 (Unicode 6.1).
-my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24);
+my @Versions = (8, 9, 11, 14, 16, 18, 20, 22, 24, 26);
for my $v (@Versions) {
$overCJK->change(UCA_Version => $v);
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/test.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/test.t
index 440c3a9da11..00feeadad9d 100755
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/test.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/test.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..107\n"; }
+BEGIN { $| = 1; print "1..96\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -40,7 +40,7 @@ my $acute = _pack_U(0x0301);
my $hiragana = "\x{3042}\x{3044}";
my $katakana = "\x{30A2}\x{30A4}";
-##### 2..7
+# 1
my $Collator = Unicode::Collate->new(
table => 'keys.txt',
@@ -63,7 +63,7 @@ ok(
join(':', qw/ ACA ACHA ACIA ACKA ADA / ),
);
-##### 8..18
+# 7
ok($Collator->cmp("A$acute", $A_acute), 0); # @version 3.1.1 (prev: -1)
ok($Collator->cmp($a_acute, $A_acute), -1);
@@ -81,7 +81,7 @@ ok($Collator->lt("A", $A_acute));
ok($Collator->lt("A", $a_acute));
ok($Collator->lt($a_acute, $A_acute));
-##### 19..25
+# 18
$Collator->change(level => 2);
@@ -94,7 +94,7 @@ ok( $Collator->cmp($hiragana, $katakana), 0);
ok( $Collator->eq($hiragana, $katakana) );
ok( $Collator->ge($hiragana, $katakana) );
-##### 26..31
+# 25
# hangul
ok( $Collator->eq("a\x{AC00}b", "a\x{1100}\x{1161}b") );
@@ -104,7 +104,7 @@ ok( $Collator->lt("a\x{AC00}b", "a\x{AE00}b") );
ok( $Collator->gt("a\x{D7A3}b", "a\x{C544}b") );
ok( $Collator->lt("a\x{C544}b", "a\x{30A2}b") ); # hangul < hiragana
-##### 32..40
+# 31
$Collator->change(%old_level, katakana_before_hiragana => 1);
@@ -119,7 +119,7 @@ ok( $Collator->ne($hiragana, $katakana) );
ok( $Collator->gt($hiragana, $katakana) );
ok( $Collator->ge($hiragana, $katakana) );
-##### 41..46
+# 40
$Collator->change(upper_before_lower => 1);
@@ -130,14 +130,14 @@ ok( $Collator->cmp($hiragana, $katakana), 1);
ok( $Collator->ge($hiragana, $katakana), 1);
ok( $Collator->gt($hiragana, $katakana), 1);
-##### 47..48
+# 46
$Collator->change(katakana_before_hiragana => 0);
ok( $Collator->cmp("abc", "ABC"), 1);
ok( $Collator->cmp($hiragana, $katakana), -1);
-##### 49..52
+# 48
$Collator->change(upper_before_lower => 0);
@@ -146,7 +146,8 @@ ok( $Collator->le("abc", "ABC") );
ok( $Collator->cmp($hiragana, $katakana), -1);
ok( $Collator->lt($hiragana, $katakana) );
-##### 53..54
+# 52
+
{
my $ignoreAE = Unicode::Collate->new(
table => 'keys.txt',
@@ -157,27 +158,8 @@ ok( $Collator->lt($hiragana, $katakana) );
ok($ignoreAE->eq("Perl","ePrl"));
}
-##### 55
-{
- my $onlyABC = Unicode::Collate->new(
- table => undef,
- normalization => undef,
- entry => << 'ENTRIES',
-0061 ; [.0101.0020.0002.0061] # LATIN SMALL LETTER A
-0041 ; [.0101.0020.0008.0041] # LATIN CAPITAL LETTER A
-0062 ; [.0102.0020.0002.0062] # LATIN SMALL LETTER B
-0042 ; [.0102.0020.0008.0042] # LATIN CAPITAL LETTER B
-0063 ; [.0103.0020.0002.0063] # LATIN SMALL LETTER C
-0043 ; [.0103.0020.0008.0043] # LATIN CAPITAL LETTER C
-ENTRIES
- );
- ok(
- join(':', $onlyABC->sort( qw/ ABA BAC cc A Ab cAc aB / ) ),
- join(':', qw/ A aB Ab ABA BAC cAc cc / ),
- );
-}
+# 54
-##### 56..59
{
my $undefAE = Unicode::Collate->new(
table => 'keys.txt',
@@ -190,69 +172,8 @@ ENTRIES
ok($Collator->lt("lake","like"));
}
-##### 60..69
-{
- # Table is undefined, then no entry is defined.
- my $undef_table = Unicode::Collate->new(
- table => undef,
- normalization => undef,
- level => 1,
- );
-
- # in the Unicode code point order
- ok($undef_table->lt('', 'A'));
- ok($undef_table->lt('ABC', 'B'));
-
- # Hangul should be decomposed (even w/o Unicode::Normalize).
- ok($undef_table->lt("Perl", "\x{AC00}"));
- ok($undef_table->eq("\x{AC00}", "\x{1100}\x{1161}"));
- ok($undef_table->eq("\x{AE00}", "\x{1100}\x{1173}\x{11AF}"));
- ok($undef_table->lt("\x{AE00}", "\x{3042}"));
-
- # U+AC00: Hangul GA
- # U+AE00: Hangul GEUL
- # U+3042: Hiragana A
-
- # Weight for CJK Ideographs is defined, though.
- ok($undef_table->lt("", "\x{4E00}"));
- ok($undef_table->lt("\x{4E8C}","ABC"));
- ok($undef_table->lt("\x{4E00}","\x{3042}"));
- ok($undef_table->lt("\x{4E00}","\x{4E8C}"));
-
- # U+4E00: Ideograph "ONE"
- # U+4E8C: Ideograph "TWO"
-}
-
-##### 70..74
-{
- my $few_entries = Unicode::Collate->new(
- entry => <<'ENTRIES',
-0050 ; [.0101.0020.0002.0050] # P
-0045 ; [.0102.0020.0002.0045] # E
-0052 ; [.0103.0020.0002.0052] # R
-004C ; [.0104.0020.0002.004C] # L
-1100 ; [.0105.0020.0002.1100] # Hangul Jamo initial G
-1175 ; [.0106.0020.0002.1175] # Hangul Jamo middle I
-5B57 ; [.0107.0020.0002.5B57] # CJK Ideograph "Letter"
-ENTRIES
- table => undef,
- normalization => undef,
- );
- # defined before undefined
- my $sortABC = join '',
- $few_entries->sort(split //, "ABCDEFGHIJKLMNOPQRSTUVWXYZ ");
-
- ok($sortABC eq "PERL ABCDFGHIJKMNOQSTUVWXYZ");
-
- ok($few_entries->lt('E', 'D'));
- ok($few_entries->lt("\x{5B57}", "\x{4E00}"));
- ok($few_entries->lt("\x{AE30}", "\x{AC00}"));
-
- # Hangul must be decomposed.
- ok($few_entries->eq("\x{AC00}", "\x{1100}\x{1161}"));
-}
+# 58
-##### 75..79
{
my $dropArticles = Unicode::Collate->new(
table => "keys.txt",
@@ -270,7 +191,8 @@ ENTRIES
ok($Collator->gt("the pen", "a pencil"));
}
-##### 80..83
+# 63
+
{
my $undefName = Unicode::Collate->new(
table => "keys.txt",
@@ -286,7 +208,8 @@ ENTRIES
ok($Collator ->gt("\x{4E03}", $katakana));
}
-##### 84..90
+# 67
+
{
my $O_str = Unicode::Collate->new(
table => "keys.txt",
@@ -321,7 +244,7 @@ ENTRIES
ok($O_str ->gt("\x{200B}", "A"));
}
-##### 91..101
+# 74
my %origVer = $Collator->change(UCA_Version => 8);
@@ -351,7 +274,7 @@ $Collator->change(level => 4);
ok($Collator->gt("!\x{300}", ""));
ok($Collator->eq("!\x{300}", "!"));
-##### 102..107
+# 85
$_ = 'Foo';
@@ -385,5 +308,37 @@ $_ = 'Foo';
@temp = $c->index("perl5", "LR");
ok($_, 'Foo');
-#####
+# 91
+
+{
+ my $caseless = Unicode::Collate->new(
+ table => "keys.txt",
+ normalization => undef,
+ preprocess => sub { uc shift },
+ );
+ ok( $Collator->gt("ABC","abc") );
+ ok( $caseless->eq("ABC","abc") );
+}
+
+# 93
+
+{
+ eval { require Unicode::Normalize; };
+ if ($@) {
+ eval { my $n1 = Unicode::Collate->new(table => "keys.txt"); };
+ ok($@ =~ /Unicode::Normalize is required/);
+
+ eval { my $n2 = Unicode::Collate->new
+ (table => "keys.txt", normalization => undef); };
+ ok(!$@);
+
+ eval { my $n3 = Unicode::Collate->new
+ (table => "keys.txt", normalization => 'prenormalized'); };
+ ok($@ =~ /Unicode::Normalize is required/);
+ } else {
+ ok(1) for 1..3;
+ }
+}
+
+# 96
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/version.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/version.t
index 26f62b7af47..2f0ab99c9c5 100755
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/version.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/version.t
@@ -31,8 +31,8 @@ ok(1);
#########################
# Fix me when UCA and/or keys.txt is upgraded.
-my $UCA_Version = "24";
-my $Base_Unicode_Version = "6.1.0";
+my $UCA_Version = "26";
+my $Base_Unicode_Version = "6.2.0";
my $Key_Version = "3.1.1";
ok(Unicode::Collate::UCA_Version, $UCA_Version);
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/view.t b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/view.t
index 6f7c0fb7ae8..47595338230 100755
--- a/gnu/usr.bin/perl/cpan/Unicode-Collate/t/view.t
+++ b/gnu/usr.bin/perl/cpan/Unicode-Collate/t/view.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
use warnings;
-BEGIN { $| = 1; print "1..53\n"; }
+BEGIN { $| = 1; print "1..89\n"; }
my $count = 0;
sub ok ($;$) {
my $p = my $r = shift;
@@ -28,15 +28,14 @@ use Unicode::Collate;
ok(1);
-#########################
+##### 1
my $Collator = Unicode::Collate->new(
table => 'keys.txt',
normalization => undef,
+ UCA_Version => 24,
);
-##############
-
ok($Collator->viewSortKey(""), "[| | |]");
ok($Collator->viewSortKey("A"), "[0A15 | 0020 | 0008 | FFFF]");
@@ -60,7 +59,7 @@ ok($Collator->viewSortKey("A"), "[0A15 | 0020 | |]");
$Collator->change(level => 1);
ok($Collator->viewSortKey("A"), "[0A15 | | |]");
-### Version 8
+##### 10
$Collator->change(level => 4, UCA_Version => 8);
@@ -87,7 +86,7 @@ ok($Collator->viewSortKey("A"), "[0A15|0020||]");
$Collator->change(level => 1);
ok($Collator->viewSortKey("A"), "[0A15|||]");
-# Version 9
+##### 19
$Collator->change(level => 3, UCA_Version => 9);
ok($Collator->viewSortKey("A\x{300}z\x{301}"),
@@ -156,7 +155,7 @@ ok($Collator->viewSortKey("?!."), '[| | | 024E 024B 0255]');
$Collator->change(%origVar);
-#####
+##### 37
# Level 3 weight
@@ -197,7 +196,7 @@ ok($Collator->viewSortKey("a\x{3042}"),
ok($Collator->viewSortKey("A\x{30A2}"),
'[0A15 1921 | 0020 0020 | 0008 0011 | FFFF FFFF]');
-#####
+##### 47
our $el = Unicode::Collate->new(
entry => <<'ENTRY',
@@ -214,6 +213,7 @@ FF2C ; [.0B03.0020.0009.FF2C] # FULLWIDTH LATIN CAPITAL LETTER L; QQK
ENTRY
table => undef,
normalization => undef,
+ UCA_Version => 24,
);
our $el12 = '0B03 0B03 0B03 0B03 0B03 | 0020 0020 0020 0020 0020';
@@ -240,5 +240,30 @@ ok($el->viewSortKey("l\x{FF4C}\x{217C}\x{2113}\x{24DB}"),
ok($el->viewSortKey("L\x{FF2C}\x{216C}\x{2112}\x{24C1}"),
"[$el12 | 0008 0009 000A 000B 000C | FFFF FFFF FFFF FFFF FFFF]");
-#####
+##### 53
+
+my @Versions = (9, 11, 14, 16, 18, 20, 22, 24, 26);
+
+for my $v (@Versions) {
+ $Collator->change(UCA_Version => $v);
+ my $app = $v >= 26 ? ' |]' : ']';
+
+ $Collator->change(variable => 'Shifted', level => 4);
+ ok($Collator->viewSortKey("1+2"),
+ '[0A0C 0A0D | 0020 0020 | 0002 0002 | FFFF 039F FFFF'.$app);
+
+ $Collator->change(variable => 'Shift-Trimmed');
+ ok($Collator->viewSortKey("1+2"),
+ '[0A0C 0A0D | 0020 0020 | 0002 0002 | 039F'.$app);
+
+ $Collator->change(variable => 'Non-ignorable', level => 3);
+ ok($Collator->viewSortKey("1+2"),
+ '[0A0C 039F 0A0D | 0020 0020 0020 | 0002 0002 0002 |]');
+
+ $Collator->change(variable => 'Blanked');
+ ok($Collator->viewSortKey("1+2"),
+ '[0A0C 0A0D | 0020 0020 | 0002 0002 |]');
+}
+
+##### 89
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Normalize/Changes b/gnu/usr.bin/perl/cpan/Unicode-Normalize/Changes
index 88df63cb4d7..fabd3c16a3e 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Normalize/Changes
+++ b/gnu/usr.bin/perl/cpan/Unicode-Normalize/Changes
@@ -1,5 +1,13 @@
Revision history for Perl extension Unicode::Normalize.
+1.16 Sun Nov 4 17:23:03 2012
+ - XSUB: use PERL_NO_GET_CONTEXT (see perlguts)
+ (see [rt.cpan.org #80312])
+
+1.15 Sun Sep 23 10:43:14 2012
+ - perl 5.11.0 or later: Install to 'site' instead of 'perl'
+ (see [rt.cpan.org #79801])
+
1.14 Sat Mar 10 13:34:53 2012
- avoid "use Test".
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Normalize/Makefile.PL b/gnu/usr.bin/perl/cpan/Unicode-Normalize/Makefile.PL
index f0b94e74963..c2bd32c937a 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Normalize/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Unicode-Normalize/Makefile.PL
@@ -12,22 +12,23 @@ if (-f "Normalize.xs") {
}
WriteMakefile(
- 'AUTHOR' => 'SADAHIRO Tomoyuki <SADAHIRO@cpan.org>',
- 'ABSTRACT' => 'Unicode Normalization Forms',
- 'INSTALLDIRS' => $] >= 5.007002 ? 'perl' : 'site',
- 'LICENSE' => 'perl',
- 'NAME' => 'Unicode::Normalize',
- 'VERSION_FROM' => 'Normalize.pm', # finds $VERSION
- 'clean' => $clean,
- 'PREREQ_PM' => {
- bytes => 0,
- Carp => 0,
- constant => 0,
- DynaLoader => 0,
- Exporter => 0,
- File::Copy => 0,
- File::Spec => 0,
- strict => 0,
- warnings => 0,
+ 'AUTHOR' => 'SADAHIRO Tomoyuki <SADAHIRO@cpan.org>',
+ 'ABSTRACT' => 'Unicode Normalization Forms',
+ 'INSTALLDIRS' => ($] >= 5.007002 && $] < 5.011) ? 'perl' : 'site',
+ # see perl5110delta, @INC reorganization
+ 'LICENSE' => 'perl',
+ 'NAME' => 'Unicode::Normalize',
+ 'VERSION_FROM' => 'Normalize.pm', # finds $VERSION
+ 'clean' => $clean,
+ 'PREREQ_PM' => {
+ bytes => 0,
+ Carp => 0,
+ constant => 0,
+ DynaLoader => 0,
+ Exporter => 0,
+ File::Copy => 0,
+ File::Spec => 0,
+ strict => 0,
+ warnings => 0,
},
);
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Normalize/Normalize.pm b/gnu/usr.bin/perl/cpan/Unicode-Normalize/Normalize.pm
index c580f4852c6..d0f35a914df 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Normalize/Normalize.pm
+++ b/gnu/usr.bin/perl/cpan/Unicode-Normalize/Normalize.pm
@@ -13,7 +13,7 @@ use Carp;
no warnings 'utf8';
-our $VERSION = '1.14';
+our $VERSION = '1.16';
our $PACKAGE = __PACKAGE__;
our @EXPORT = qw( NFC NFD NFKC NFKD );
@@ -549,8 +549,8 @@ normalization implemented by this module depends on your perl's version.
5.10.0 5.0.0
5.8.9, 5.10.1 5.1.0
5.12.0-5.12.3 5.2.0
- 5.14.0 6.0.0
- 5.16.0 (to be) 6.1.0
+ 5.14.x 6.0.0
+ 5.16.x 6.1.0
=item Correction of decomposition mapping
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Normalize/Normalize.xs b/gnu/usr.bin/perl/cpan/Unicode-Normalize/Normalize.xs
index b760dff0b3b..a189a5d38b8 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Normalize/Normalize.xs
+++ b/gnu/usr.bin/perl/cpan/Unicode-Normalize/Normalize.xs
@@ -1,4 +1,14 @@
+#define PERL_NO_GET_CONTEXT /* we want efficiency */
+
+/* private functions which need pTHX_ and aTHX_
+ pv_cat_decompHangul
+ sv_2pvunicode
+ pv_utf8_decompose
+ pv_utf8_reorder
+ pv_utf8_compose
+*/
+
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
@@ -177,7 +187,7 @@ static U8 getCombinClass(UV uv)
return row ? row[uv & 0xff] : 0;
}
-static U8* pv_cat_decompHangul(U8* d, UV uv)
+static U8* pv_cat_decompHangul(pTHX_ U8* d, UV uv)
{
UV sindex = uv - Hangul_SBase;
UV lindex = sindex / Hangul_NCount;
@@ -194,7 +204,7 @@ static U8* pv_cat_decompHangul(U8* d, UV uv)
return d;
}
-static char* sv_2pvunicode(SV *sv, STRLEN *lp)
+static char* sv_2pvunicode(pTHX_ SV *sv, STRLEN *lp)
{
char *s;
STRLEN len;
@@ -212,7 +222,7 @@ static char* sv_2pvunicode(SV *sv, STRLEN *lp)
}
static
-U8* pv_utf8_decompose(U8* s, STRLEN slen, U8** dp, STRLEN dlen, bool iscompat)
+U8* pv_utf8_decompose(pTHX_ U8* s, STRLEN slen, U8** dp, STRLEN dlen, bool iscompat)
{
U8* p = s;
U8* e = s + slen;
@@ -228,7 +238,7 @@ U8* pv_utf8_decompose(U8* s, STRLEN slen, U8** dp, STRLEN dlen, bool iscompat)
if (Hangul_IsS(uv)) {
Renew_d_if_not_enough_to(UTF8_MAXLEN * 3)
- d = pv_cat_decompHangul(d, uv);
+ d = pv_cat_decompHangul(aTHX_ d, uv);
}
else {
U8* r = iscompat ? dec_compat(uv) : dec_canonical(uv);
@@ -250,7 +260,7 @@ U8* pv_utf8_decompose(U8* s, STRLEN slen, U8** dp, STRLEN dlen, bool iscompat)
}
static
-U8* pv_utf8_reorder(U8* s, STRLEN slen, U8** dp, STRLEN dlen)
+U8* pv_utf8_reorder(pTHX_ U8* s, STRLEN slen, U8** dp, STRLEN dlen)
{
U8* p = s;
U8* e = s + slen;
@@ -323,7 +333,7 @@ U8* pv_utf8_reorder(U8* s, STRLEN slen, U8** dp, STRLEN dlen)
}
static
-U8* pv_utf8_compose(U8* s, STRLEN slen, U8** dp, STRLEN dlen, bool iscontig)
+U8* pv_utf8_compose(pTHX_ U8* s, STRLEN slen, U8** dp, STRLEN dlen, bool iscontig)
{
U8* p = s;
U8* e = s + slen;
@@ -451,11 +461,11 @@ decompose(src, compat = &PL_sv_no)
U8 *s, *d, *dend;
STRLEN slen, dlen;
CODE:
- s = (U8*)sv_2pvunicode(src,&slen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&slen);
dst = newSVpvn("", 0);
dlen = slen;
New(0, d, dlen+1, U8);
- dend = pv_utf8_decompose(s, slen, &d, dlen, (bool)SvTRUE(compat));
+ dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
sv_setpvn(dst, (char *)d, dend - d);
SvUTF8_on(dst);
Safefree(d);
@@ -473,11 +483,11 @@ reorder(src)
U8 *s, *d, *dend;
STRLEN slen, dlen;
CODE:
- s = (U8*)sv_2pvunicode(src,&slen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&slen);
dst = newSVpvn("", 0);
dlen = slen;
New(0, d, dlen+1, U8);
- dend = pv_utf8_reorder(s, slen, &d, dlen);
+ dend = pv_utf8_reorder(aTHX_ s, slen, &d, dlen);
sv_setpvn(dst, (char *)d, dend - d);
SvUTF8_on(dst);
Safefree(d);
@@ -497,11 +507,11 @@ compose(src)
U8 *s, *d, *dend;
STRLEN slen, dlen;
CODE:
- s = (U8*)sv_2pvunicode(src,&slen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&slen);
dst = newSVpvn("", 0);
dlen = slen;
New(0, d, dlen+1, U8);
- dend = pv_utf8_compose(s, slen, &d, dlen, (bool)ix);
+ dend = pv_utf8_compose(aTHX_ s, slen, &d, dlen, (bool)ix);
sv_setpvn(dst, (char *)d, dend - d);
SvUTF8_on(dst);
Safefree(d);
@@ -521,19 +531,19 @@ NFD(src)
U8 *s, *t, *tend, *d, *dend;
STRLEN slen, tlen, dlen;
CODE:
- s = (U8*)sv_2pvunicode(src,&slen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&slen);
/* decompose */
tlen = slen;
New(0, t, tlen+1, U8);
- tend = pv_utf8_decompose(s, slen, &t, tlen, (bool)(ix==1));
+ tend = pv_utf8_decompose(aTHX_ s, slen, &t, tlen, (bool)(ix==1));
*tend = '\0';
tlen = tend - t; /* no longer know real size of t */
/* reorder */
dlen = tlen;
New(0, d, dlen+1, U8);
- dend = pv_utf8_reorder(t, tlen, &d, dlen);
+ dend = pv_utf8_reorder(aTHX_ t, tlen, &d, dlen);
*dend = '\0';
dlen = dend - d; /* no longer know real size of d */
@@ -561,26 +571,26 @@ NFC(src)
U8 *s, *t, *tend, *u, *uend, *d, *dend;
STRLEN slen, tlen, ulen, dlen;
CODE:
- s = (U8*)sv_2pvunicode(src,&slen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&slen);
/* decompose */
tlen = slen;
New(0, t, tlen+1, U8);
- tend = pv_utf8_decompose(s, slen, &t, tlen, (bool)(ix==1));
+ tend = pv_utf8_decompose(aTHX_ s, slen, &t, tlen, (bool)(ix==1));
*tend = '\0';
tlen = tend - t; /* no longer know real size of t */
/* reorder */
ulen = tlen;
New(0, u, ulen+1, U8);
- uend = pv_utf8_reorder(t, tlen, &u, ulen);
+ uend = pv_utf8_reorder(aTHX_ t, tlen, &u, ulen);
*uend = '\0';
ulen = uend - u; /* no longer know real size of u */
/* compose */
dlen = ulen;
New(0, d, dlen+1, U8);
- dend = pv_utf8_compose(u, ulen, &d, dlen, (bool)(ix==2));
+ dend = pv_utf8_compose(aTHX_ u, ulen, &d, dlen, (bool)(ix==2));
*dend = '\0';
dlen = dend - d; /* no longer know real size of d */
@@ -608,7 +618,7 @@ checkNFD(src)
U8 *s, *e, *p, curCC, preCC;
bool result = TRUE;
CODE:
- s = (U8*)sv_2pvunicode(src,&srclen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&srclen);
e = s + srclen;
preCC = 0;
@@ -645,7 +655,7 @@ checkNFC(src)
bool result = TRUE;
bool isMAYBE = FALSE;
CODE:
- s = (U8*)sv_2pvunicode(src,&srclen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&srclen);
e = s + srclen;
preCC = 0;
@@ -701,7 +711,7 @@ checkFCD(src)
bool result = TRUE;
bool isMAYBE = FALSE;
CODE:
- s = (U8*)sv_2pvunicode(src,&srclen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&srclen);
e = s + srclen;
preCC = 0;
for (p = s; p < e; p += retlen) {
@@ -858,7 +868,7 @@ getCanon(uv)
if (Hangul_IsS(uv)) {
U8 tmp[3 * UTF8_MAXLEN + 1];
U8 *t = tmp;
- U8 *e = pv_cat_decompHangul(t, uv);
+ U8 *e = pv_cat_decompHangul(aTHX_ t, uv);
RETVAL = newSVpvn((char *)t, e - t);
} else {
U8* rstr = ix ? dec_compat(uv) : dec_canonical(uv);
@@ -879,7 +889,7 @@ splitOnLastStarter(src)
STRLEN srclen;
U8 *s, *e, *p;
PPCODE:
- s = (U8*)sv_2pvunicode(src,&srclen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&srclen);
e = s + srclen;
p = e;
while (s < p) {
diff --git a/gnu/usr.bin/perl/cpan/Unicode-Normalize/README b/gnu/usr.bin/perl/cpan/Unicode-Normalize/README
index 958df4e1bd8..1fcde2698e5 100644
--- a/gnu/usr.bin/perl/cpan/Unicode-Normalize/README
+++ b/gnu/usr.bin/perl/cpan/Unicode-Normalize/README
@@ -1,4 +1,4 @@
-Unicode/Normalize version 1.14
+Unicode/Normalize version 1.16
===================================
Unicode::Normalize - Unicode Normalization Forms
diff --git a/gnu/usr.bin/perl/cpan/Win32/Changes b/gnu/usr.bin/perl/cpan/Win32/Changes
index dbbb4ff94e8..f39250dcadb 100644
--- a/gnu/usr.bin/perl/cpan/Win32/Changes
+++ b/gnu/usr.bin/perl/cpan/Win32/Changes
@@ -1,176 +1,195 @@
-Revision history for the Perl extension Win32.
-
-0.44 [2011-01-12]
- - fix memory leak introduced in 0.43
-
-0.43 [2011-01-12]
- - fix a few potential buffer overrun bugs reported by Alex Davies.
- [perl#78710]
-
-0.42 [2011-01-06]
- - remove brittle test for Win32::GetLongPathName($ENV{SYSTEMROOT})
- which will fail if the case of the environment value doesn't
- exactly match the case of the directory name on the filesystem.
-
-0.41 [2010-12-10]
- - Fix Win32::GetChipName() to return the native processor type when
- running 32-bit Perl on 64-bit Windows (WOW64). This will also
- affect the values returned by Win32::GetOSDisplayName() and
- Win32::GetOSName(). [rt#63797]
- - Fix Win32::GetOSDisplayName() to return the correct values for
- all products even when a service pack has been installed. (This
- was only an issue for some "special" editions).
- - The display name for "Windows 7 Business Edition" is actually
- "Windows 7 Professional".
- - Fix t/GetOSName.t tests to avoid using the values returned by
- GetSystemMetrics() when the test template didn't specify any
- value at all.
-
-0.40 [2010-12-08]
- - Add Win32::GetSystemMetrics function.
- - Add Win32::GetProductInfo() function.
- - Add Win32::GetOSDisplayName() function.
- - Detect "Windows Server 2008 R2" as "Win2008" in Win32::GetOSName()
- (used to return "Win7" before). [rt#57172]
- - Detect "Windows Home Server" as "WinHomeSvr" in Win32::GetOSName()
- (used to return "Win2003" before).
- - Add "R2", "Media Center", "Tablet PC", "Starter Edition" etc.
- tags to the description returned by Win32::GetOSName() in
- list context.
- - Rewrite the t/GetOSName.t tests
-
-0.39 [2009-01-19]
- - Add support for Windows 2008 Server and Windows 7 in
- Win32::GetOSName() and in the documentation for
- Win32::GetOSVersion().
- - Make Win32::GetOSName() implementation testable.
- - Document that the OSName for Win32s is actually "WinWin32s".
-
-0.38 [2008-06-27]
- - Fix Cygwin releated problems in t/GetCurrentThreadId.t
- (Jerry D. Hedden).
-
-0.37 [2008-06-26]
- - Add Win32::GetCurrentProcessId() function
-
-0.36 [2008-04-17]
- - Add typecasts for Win64 compilation
-
-0.35 [2008-03-31]
- Integrate changes from bleadperl:
- - Silence Borland compiler warning (Steve Hay)
- - Fix memory leak in Win32::GetOSVersion (Vincent Pit)
- - Test Win32::GetCurrentThreadId on cygwin (Reini Urban, Steve Hay)
-
-0.34 [2007-11-21]
- - Document "WinVista" return value for Win32::GetOSName()
- (Steve Hay).
-
-0.33 [2007-11-12]
- - Update version to 0.33 for Perl 5.10 release
- - Add $^O test in Makefile.PL for CPAN Testers
- - Use Win32::GetLastError() instead of $^E in t/Names.t for
- cygwin compatibility (Jerry D. Hedden).
-
-0.32 [2007-09-20]
- - Additional #define's for older versions of VC++ (Dmitry Karasik).
- - Win32::DomainName() doesn't return anything when the Workstation
- service isn't running. Set $^E and adapt t/Names.t accordingly
- (Steve Hay & Jerry D. Hedden).
- - Fix t/Names.t to allow Win32::GetOSName() to return an empty
- description as the 2nd return value (e.g. Vista without SP).
- - Fix t/GetFileVersion.t for Perl 5.10
-
-0.31 [2007-09-10]
- - Apply Cygwin fixes from bleadperl (from Jerry D. Hedden).
- - Make sure Win32::GetLongPathName() always returns drive
- letters in uppercase (Jerry D. Hedden).
- - Use uppercase environment variable names in t/Unicode.t
- because the MSWin32 doesn't care, and Cygwin only works
- with the uppercased version.
- - new t/Names.t test (from Sébastien Aperghis-Tramoni)
-
-0.30 [2007-06-25]
- - Fixed t/Unicode.t test for Cygwin (with help from Jerry D. Hedden).
- - Fixed and documented Win32::GetShortPathName() to return undef
- when the pathname doesn't exist (thanks to Steve Hay).
- - Added t/GetShortPathName.t
-
-0.29 [2007-05-17]
- - Fixed to compile with Borland BCC (thanks to Steve Hay).
-
-0.28_01 [2007-05-16]
- - Increase version number as 0.28 was already used by an ActivePerl
- release (for essentially 0.27 plus the Win32::IsAdminUser() change).
-
- - Add MODULE and PROTOTYPES directives to silence warnings from
- newer versions of xsubpp.
-
- - Use the Cygwin codepath in Win32::GetFullPathName() when
- PERL_IMPLICIT_SYS is not defined, because the other code
- relies on the virtualization code in win32/vdir.h.
-
-0.27_02 [2007-05-15]
- - We need Windows 2000 or later for the Unicode support because
- WC_NO_BEST_FIT_CHARS is not supported on Windows NT.
-
- - Fix Win32::GetFullPathName() on Windows NT to return an
- empty file part if the original argument ends with a slash.
-
-0.27_01 [2007-04-18]
- - Update Win32::IsAdminUser() to use the IsUserAnAdmin() function
- in shell32.dll when available. On Windows Vista this will only
- return true if the process is running with elevated privileges
- and not just when the owner of the process is a member of the
- "Administrators" group.
-
- - Win32::ExpandEnvironmentStrings() may return a Unicode string
- (a string containing characters outside the system codepage)
-
- - new Win32::GetANSIPathName() function returns a pathname in
- a form containing only characters from the system codepage
-
- - Win32::GetCwd() will return an ANSI version of the directory
- name if the long name contains characters outside the system
- codepage.
-
- - Win32::GetFolderPath() will return an ANSI pathname. Call
- Win32::GetLongPathName() to get the canonical Unicode
- representation.
-
- - Win32::GetFullPathName() will return an ANSI pathname. Call
- Win32::GetLongPathName() to get the canonical Unicode
- representation.
-
- - Win32::GetLongPathName() may return a Unicode path name.
- Call Win32::GetANSIPathName() to get a representation using
- only characters from the system codepage.
-
- - Win32::LoginName() may return a Unicode string.
-
- - new Win32::OutputDebugString() function sends a string to
- the debugger.
-
- - new Win32::GetCurrentThreadId() function returns the thread
- id (to complement the process id in $$).
-
- - new Win32::CreateDirectory() creates a new directory. The
- name of the directory may contain Unicode characters outside
- the system codepage.
-
- - new Win32::CreateFile() creates a new file. The name of the
- file may contain Unicode characters outside the system codepage.
-
-
-0.27 [2007-03-07]
- - Extracted from the libwin32 distribution to simplify maintenance
- because Win32 is a dual-life core module since 5.8.4.
-
- - Win32.pm and Win32.xs updated to version in bleadperl.
- This includes all the Win32::* function from win32/win32.c
- in core Perl, except for Win32::SetChildShowWindows().
-
- - Install into 'perl' directory instead of 'site' for Perl 5.8.4
- and later.
-
- - Add some simple tests.
+Revision history for the Perl extension Win32.
+
+0.47 [2013-02-21]
+ - Make sure %PROCESSOR_ARCHITECTURE% is defined before calling
+ Win32::GetArchName() in t/Names.t. It may be undefined when
+ the test is running under Cygwin crond.
+ - In t/Names.t don't assume that LoginName or NodeName is at
+ least 2 characters long; it may just be 1.
+
+0.46 [2013-02-19]
+ - add Win2012/Win8 detection (thanks to Michiel Beijen) [rt#82572]
+ [perl#116352]
+
+0.45 [2012-08-07]
+ - add Win32::GetACP(), Win32::GetConsoleCP(),
+ Win32::GetConsoleOutputCP(), Win32::GetOEMCP(), Win32::SetConsoleCP()
+ and Win32::SetConsoleOutputCP(). [rt#78820] (Steve Hay)
+ - adjust t/Unicode.t for Cygwin 1.7, where readdir() returns
+ the utf8 encoded filename without setting the SvUTF8 flag [rt#66751]
+ [rt#74332]
+
+0.44 [2011-01-12]
+ - fix memory leak introduced in 0.43
+
+0.43 [2011-01-12]
+ - fix a few potential buffer overrun bugs reported by Alex Davies.
+ [perl#78710]
+
+0.42 [2011-01-06]
+ - remove brittle test for Win32::GetLongPathName($ENV{SYSTEMROOT})
+ which will fail if the case of the environment value doesn't
+ exactly match the case of the directory name on the filesystem.
+
+0.41 [2010-12-10]
+ - Fix Win32::GetChipName() to return the native processor type when
+ running 32-bit Perl on 64-bit Windows (WOW64). This will also
+ affect the values returned by Win32::GetOSDisplayName() and
+ Win32::GetOSName(). [rt#63797]
+ - Fix Win32::GetOSDisplayName() to return the correct values for
+ all products even when a service pack has been installed. (This
+ was only an issue for some "special" editions).
+ - The display name for "Windows 7 Business Edition" is actually
+ "Windows 7 Professional".
+ - Fix t/GetOSName.t tests to avoid using the values returned by
+ GetSystemMetrics() when the test template didn't specify any
+ value at all.
+
+0.40 [2010-12-08]
+ - Add Win32::GetSystemMetrics function.
+ - Add Win32::GetProductInfo() function.
+ - Add Win32::GetOSDisplayName() function.
+ - Detect "Windows Server 2008 R2" as "Win2008" in Win32::GetOSName()
+ (used to return "Win7" before). [rt#57172]
+ - Detect "Windows Home Server" as "WinHomeSvr" in Win32::GetOSName()
+ (used to return "Win2003" before).
+ - Add "R2", "Media Center", "Tablet PC", "Starter Edition" etc.
+ tags to the description returned by Win32::GetOSName() in
+ list context.
+ - Rewrite the t/GetOSName.t tests
+
+0.39 [2009-01-19]
+ - Add support for Windows 2008 Server and Windows 7 in
+ Win32::GetOSName() and in the documentation for
+ Win32::GetOSVersion().
+ - Make Win32::GetOSName() implementation testable.
+ - Document that the OSName for Win32s is actually "WinWin32s".
+
+0.38 [2008-06-27]
+ - Fix Cygwin releated problems in t/GetCurrentThreadId.t
+ (Jerry D. Hedden).
+
+0.37 [2008-06-26]
+ - Add Win32::GetCurrentProcessId() function
+
+0.36 [2008-04-17]
+ - Add typecasts for Win64 compilation
+
+0.35 [2008-03-31]
+ Integrate changes from bleadperl:
+ - Silence Borland compiler warning (Steve Hay)
+ - Fix memory leak in Win32::GetOSVersion (Vincent Pit)
+ - Test Win32::GetCurrentThreadId on cygwin (Reini Urban, Steve Hay)
+
+0.34 [2007-11-21]
+ - Document "WinVista" return value for Win32::GetOSName()
+ (Steve Hay).
+
+0.33 [2007-11-12]
+ - Update version to 0.33 for Perl 5.10 release
+ - Add $^O test in Makefile.PL for CPAN Testers
+ - Use Win32::GetLastError() instead of $^E in t/Names.t for
+ cygwin compatibility (Jerry D. Hedden).
+
+0.32 [2007-09-20]
+ - Additional #define's for older versions of VC++ (Dmitry Karasik).
+ - Win32::DomainName() doesn't return anything when the Workstation
+ service isn't running. Set $^E and adapt t/Names.t accordingly
+ (Steve Hay & Jerry D. Hedden).
+ - Fix t/Names.t to allow Win32::GetOSName() to return an empty
+ description as the 2nd return value (e.g. Vista without SP).
+ - Fix t/GetFileVersion.t for Perl 5.10
+
+0.31 [2007-09-10]
+ - Apply Cygwin fixes from bleadperl (from Jerry D. Hedden).
+ - Make sure Win32::GetLongPathName() always returns drive
+ letters in uppercase (Jerry D. Hedden).
+ - Use uppercase environment variable names in t/Unicode.t
+ because the MSWin32 doesn't care, and Cygwin only works
+ with the uppercased version.
+ - new t/Names.t test (from Sébastien Aperghis-Tramoni)
+
+0.30 [2007-06-25]
+ - Fixed t/Unicode.t test for Cygwin (with help from Jerry D. Hedden).
+ - Fixed and documented Win32::GetShortPathName() to return undef
+ when the pathname doesn't exist (thanks to Steve Hay).
+ - Added t/GetShortPathName.t
+
+0.29 [2007-05-17]
+ - Fixed to compile with Borland BCC (thanks to Steve Hay).
+
+0.28_01 [2007-05-16]
+ - Increase version number as 0.28 was already used by an ActivePerl
+ release (for essentially 0.27 plus the Win32::IsAdminUser() change).
+
+ - Add MODULE and PROTOTYPES directives to silence warnings from
+ newer versions of xsubpp.
+
+ - Use the Cygwin codepath in Win32::GetFullPathName() when
+ PERL_IMPLICIT_SYS is not defined, because the other code
+ relies on the virtualization code in win32/vdir.h.
+
+0.27_02 [2007-05-15]
+ - We need Windows 2000 or later for the Unicode support because
+ WC_NO_BEST_FIT_CHARS is not supported on Windows NT.
+
+ - Fix Win32::GetFullPathName() on Windows NT to return an
+ empty file part if the original argument ends with a slash.
+
+0.27_01 [2007-04-18]
+ - Update Win32::IsAdminUser() to use the IsUserAnAdmin() function
+ in shell32.dll when available. On Windows Vista this will only
+ return true if the process is running with elevated privileges
+ and not just when the owner of the process is a member of the
+ "Administrators" group.
+
+ - Win32::ExpandEnvironmentStrings() may return a Unicode string
+ (a string containing characters outside the system codepage)
+
+ - new Win32::GetANSIPathName() function returns a pathname in
+ a form containing only characters from the system codepage
+
+ - Win32::GetCwd() will return an ANSI version of the directory
+ name if the long name contains characters outside the system
+ codepage.
+
+ - Win32::GetFolderPath() will return an ANSI pathname. Call
+ Win32::GetLongPathName() to get the canonical Unicode
+ representation.
+
+ - Win32::GetFullPathName() will return an ANSI pathname. Call
+ Win32::GetLongPathName() to get the canonical Unicode
+ representation.
+
+ - Win32::GetLongPathName() may return a Unicode path name.
+ Call Win32::GetANSIPathName() to get a representation using
+ only characters from the system codepage.
+
+ - Win32::LoginName() may return a Unicode string.
+
+ - new Win32::OutputDebugString() function sends a string to
+ the debugger.
+
+ - new Win32::GetCurrentThreadId() function returns the thread
+ id (to complement the process id in $$).
+
+ - new Win32::CreateDirectory() creates a new directory. The
+ name of the directory may contain Unicode characters outside
+ the system codepage.
+
+ - new Win32::CreateFile() creates a new file. The name of the
+ file may contain Unicode characters outside the system codepage.
+
+
+0.27 [2007-03-07]
+ - Extracted from the libwin32 distribution to simplify maintenance
+ because Win32 is a dual-life core module since 5.8.4.
+
+ - Win32.pm and Win32.xs updated to version in bleadperl.
+ This includes all the Win32::* function from win32/win32.c
+ in core Perl, except for Win32::SetChildShowWindows().
+
+ - Install into 'perl' directory instead of 'site' for Perl 5.8.4
+ and later.
+
+ - Add some simple tests.
diff --git a/gnu/usr.bin/perl/cpan/Win32/Makefile.PL b/gnu/usr.bin/perl/cpan/Win32/Makefile.PL
index 89a568a5f6c..0f16594aad3 100644
--- a/gnu/usr.bin/perl/cpan/Win32/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Win32/Makefile.PL
@@ -1,18 +1,18 @@
-use 5.006;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-unless ($^O eq "MSWin32" || $^O eq "cygwin") {
- die "OS unsupported\n";
-}
-
-my %param = (
- NAME => 'Win32',
- VERSION_FROM => 'Win32.pm',
- INSTALLDIRS => ($] >= 5.008004 && $] < 5.012 ? 'perl' : 'site'),
-);
-$param{NO_META} = 1 if eval "$ExtUtils::MakeMaker::VERSION" >= 6.10_03;
-$param{LIBS} = ['-L/lib/w32api -lole32 -lversion'] if $^O eq "cygwin";
-
-WriteMakefile(%param);
+use 5.006;
+use strict;
+use warnings;
+use ExtUtils::MakeMaker;
+
+unless ($^O eq "MSWin32" || $^O eq "cygwin") {
+ die "OS unsupported\n";
+}
+
+my %param = (
+ NAME => 'Win32',
+ VERSION_FROM => 'Win32.pm',
+ INSTALLDIRS => ($] >= 5.008004 && $] < 5.012 ? 'perl' : 'site'),
+);
+$param{NO_META} = 1 if eval "$ExtUtils::MakeMaker::VERSION" >= 6.10_03;
+$param{LIBS} = ['-L/lib/w32api -lole32 -lversion'] if $^O eq "cygwin";
+
+WriteMakefile(%param);
diff --git a/gnu/usr.bin/perl/cpan/Win32/Win32.pm b/gnu/usr.bin/perl/cpan/Win32/Win32.pm
index d37352a41b1..4f6d1ff47d5 100644
--- a/gnu/usr.bin/perl/cpan/Win32/Win32.pm
+++ b/gnu/usr.bin/perl/cpan/Win32/Win32.pm
@@ -1,1201 +1,1254 @@
-package Win32;
-
-# BEGIN {
- use strict;
- use vars qw|$VERSION $XS_VERSION @ISA @EXPORT @EXPORT_OK|;
-
- require Exporter;
- require DynaLoader;
-
- @ISA = qw|Exporter DynaLoader|;
- $VERSION = '0.44';
- $XS_VERSION = $VERSION;
- $VERSION = eval $VERSION;
-
- @EXPORT = qw(
- NULL
- WIN31_CLASS
- OWNER_SECURITY_INFORMATION
- GROUP_SECURITY_INFORMATION
- DACL_SECURITY_INFORMATION
- SACL_SECURITY_INFORMATION
- MB_ICONHAND
- MB_ICONQUESTION
- MB_ICONEXCLAMATION
- MB_ICONASTERISK
- MB_ICONWARNING
- MB_ICONERROR
- MB_ICONINFORMATION
- MB_ICONSTOP
- );
- @EXPORT_OK = qw(
- GetOSName
- SW_HIDE
- SW_SHOWNORMAL
- SW_SHOWMINIMIZED
- SW_SHOWMAXIMIZED
- SW_SHOWNOACTIVATE
-
- CSIDL_DESKTOP
- CSIDL_PROGRAMS
- CSIDL_PERSONAL
- CSIDL_FAVORITES
- CSIDL_STARTUP
- CSIDL_RECENT
- CSIDL_SENDTO
- CSIDL_STARTMENU
- CSIDL_MYMUSIC
- CSIDL_MYVIDEO
- CSIDL_DESKTOPDIRECTORY
- CSIDL_NETHOOD
- CSIDL_FONTS
- CSIDL_TEMPLATES
- CSIDL_COMMON_STARTMENU
- CSIDL_COMMON_PROGRAMS
- CSIDL_COMMON_STARTUP
- CSIDL_COMMON_DESKTOPDIRECTORY
- CSIDL_APPDATA
- CSIDL_PRINTHOOD
- CSIDL_LOCAL_APPDATA
- CSIDL_COMMON_FAVORITES
- CSIDL_INTERNET_CACHE
- CSIDL_COOKIES
- CSIDL_HISTORY
- CSIDL_COMMON_APPDATA
- CSIDL_WINDOWS
- CSIDL_SYSTEM
- CSIDL_PROGRAM_FILES
- CSIDL_MYPICTURES
- CSIDL_PROFILE
- CSIDL_PROGRAM_FILES_COMMON
- CSIDL_COMMON_TEMPLATES
- CSIDL_COMMON_DOCUMENTS
- CSIDL_COMMON_ADMINTOOLS
- CSIDL_ADMINTOOLS
- CSIDL_COMMON_MUSIC
- CSIDL_COMMON_PICTURES
- CSIDL_COMMON_VIDEO
- CSIDL_RESOURCES
- CSIDL_RESOURCES_LOCALIZED
- CSIDL_CDBURN_AREA
- );
-# }
-
-# We won't bother with the constant stuff, too much of a hassle. Just hard
-# code it here.
-
-sub NULL { 0 }
-sub WIN31_CLASS { &NULL }
-
-sub OWNER_SECURITY_INFORMATION { 0x00000001 }
-sub GROUP_SECURITY_INFORMATION { 0x00000002 }
-sub DACL_SECURITY_INFORMATION { 0x00000004 }
-sub SACL_SECURITY_INFORMATION { 0x00000008 }
-
-sub MB_ICONHAND { 0x00000010 }
-sub MB_ICONQUESTION { 0x00000020 }
-sub MB_ICONEXCLAMATION { 0x00000030 }
-sub MB_ICONASTERISK { 0x00000040 }
-sub MB_ICONWARNING { 0x00000030 }
-sub MB_ICONERROR { 0x00000010 }
-sub MB_ICONINFORMATION { 0x00000040 }
-sub MB_ICONSTOP { 0x00000010 }
-
-#
-# Newly added constants. These have an empty prototype, unlike the
-# the ones above, which aren't prototyped for compatibility reasons.
-#
-sub SW_HIDE () { 0 }
-sub SW_SHOWNORMAL () { 1 }
-sub SW_SHOWMINIMIZED () { 2 }
-sub SW_SHOWMAXIMIZED () { 3 }
-sub SW_SHOWNOACTIVATE () { 4 }
-
-sub CSIDL_DESKTOP () { 0x0000 } # <desktop>
-sub CSIDL_PROGRAMS () { 0x0002 } # Start Menu\Programs
-sub CSIDL_PERSONAL () { 0x0005 } # "My Documents" folder
-sub CSIDL_FAVORITES () { 0x0006 } # <user name>\Favorites
-sub CSIDL_STARTUP () { 0x0007 } # Start Menu\Programs\Startup
-sub CSIDL_RECENT () { 0x0008 } # <user name>\Recent
-sub CSIDL_SENDTO () { 0x0009 } # <user name>\SendTo
-sub CSIDL_STARTMENU () { 0x000B } # <user name>\Start Menu
-sub CSIDL_MYMUSIC () { 0x000D } # "My Music" folder
-sub CSIDL_MYVIDEO () { 0x000E } # "My Videos" folder
-sub CSIDL_DESKTOPDIRECTORY () { 0x0010 } # <user name>\Desktop
-sub CSIDL_NETHOOD () { 0x0013 } # <user name>\nethood
-sub CSIDL_FONTS () { 0x0014 } # windows\fonts
-sub CSIDL_TEMPLATES () { 0x0015 }
-sub CSIDL_COMMON_STARTMENU () { 0x0016 } # All Users\Start Menu
-sub CSIDL_COMMON_PROGRAMS () { 0x0017 } # All Users\Start Menu\Programs
-sub CSIDL_COMMON_STARTUP () { 0x0018 } # All Users\Startup
-sub CSIDL_COMMON_DESKTOPDIRECTORY () { 0x0019 } # All Users\Desktop
-sub CSIDL_APPDATA () { 0x001A } # Application Data, new for NT4
-sub CSIDL_PRINTHOOD () { 0x001B } # <user name>\PrintHood
-sub CSIDL_LOCAL_APPDATA () { 0x001C } # non roaming, user\Local Settings\Application Data
-sub CSIDL_COMMON_FAVORITES () { 0x001F }
-sub CSIDL_INTERNET_CACHE () { 0x0020 }
-sub CSIDL_COOKIES () { 0x0021 }
-sub CSIDL_HISTORY () { 0x0022 }
-sub CSIDL_COMMON_APPDATA () { 0x0023 } # All Users\Application Data
-sub CSIDL_WINDOWS () { 0x0024 } # GetWindowsDirectory()
-sub CSIDL_SYSTEM () { 0x0025 } # GetSystemDirectory()
-sub CSIDL_PROGRAM_FILES () { 0x0026 } # C:\Program Files
-sub CSIDL_MYPICTURES () { 0x0027 } # "My Pictures", new for Win2K
-sub CSIDL_PROFILE () { 0x0028 } # USERPROFILE
-sub CSIDL_PROGRAM_FILES_COMMON () { 0x002B } # C:\Program Files\Common
-sub CSIDL_COMMON_TEMPLATES () { 0x002D } # All Users\Templates
-sub CSIDL_COMMON_DOCUMENTS () { 0x002E } # All Users\Documents
-sub CSIDL_COMMON_ADMINTOOLS () { 0x002F } # All Users\Start Menu\Programs\Administrative Tools
-sub CSIDL_ADMINTOOLS () { 0x0030 } # <user name>\Start Menu\Programs\Administrative Tools
-sub CSIDL_COMMON_MUSIC () { 0x0035 } # All Users\My Music
-sub CSIDL_COMMON_PICTURES () { 0x0036 } # All Users\My Pictures
-sub CSIDL_COMMON_VIDEO () { 0x0037 } # All Users\My Video
-sub CSIDL_RESOURCES () { 0x0038 } # %windir%\Resources\, For theme and other windows resources.
-sub CSIDL_RESOURCES_LOCALIZED () { 0x0039 } # %windir%\Resources\<LangID>, for theme and other windows specific resources.
-sub CSIDL_CDBURN_AREA () { 0x003B } # <user name>\Local Settings\Application Data\Microsoft\CD Burning
-
-sub VER_NT_DOMAIN_CONTROLLER () { 0x0000002 } # The system is a domain controller and the operating system is Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
-sub VER_NT_SERVER () { 0x0000003 } # The operating system is Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
-# Note that a server that is also a domain controller is reported as VER_NT_DOMAIN_CONTROLLER, not VER_NT_SERVER.
-sub VER_NT_WORKSTATION () { 0x0000001 } # The operating system is Windows Vista, Windows XP Professional, Windows XP Home Edition, or Windows 2000 Professional.
-
-
-sub VER_SUITE_BACKOFFICE () { 0x00000004 } # Microsoft BackOffice components are installed.
-sub VER_SUITE_BLADE () { 0x00000400 } # Windows Server 2003, Web Edition is installed.
-sub VER_SUITE_COMPUTE_SERVER () { 0x00004000 } # Windows Server 2003, Compute Cluster Edition is installed.
-sub VER_SUITE_DATACENTER () { 0x00000080 } # Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition, or Windows 2000 Datacenter Server is installed.
-sub VER_SUITE_ENTERPRISE () { 0x00000002 } # Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition, or Windows 2000 Advanced Server is installed. Refer to the Remarks section for more information about this bit flag.
-sub VER_SUITE_EMBEDDEDNT () { 0x00000040 } # Windows XP Embedded is installed.
-sub VER_SUITE_PERSONAL () { 0x00000200 } # Windows Vista Home Premium, Windows Vista Home Basic, or Windows XP Home Edition is installed.
-sub VER_SUITE_SINGLEUSERTS () { 0x00000100 } # Remote Desktop is supported, but only one interactive session is supported. This value is set unless the system is running in application server mode.
-sub VER_SUITE_SMALLBUSINESS () { 0x00000001 } # Microsoft Small Business Server was once installed on the system, but may have been upgraded to another version of Windows. Refer to the Remarks section for more information about this bit flag.
-sub VER_SUITE_SMALLBUSINESS_RESTRICTED () { 0x00000020 } # Microsoft Small Business Server is installed with the restrictive client license in force. Refer to the Remarks section for more information about this bit flag.
-sub VER_SUITE_STORAGE_SERVER () { 0x00002000 } # Windows Storage Server 2003 R2 or Windows Storage Server 2003 is installed.
-sub VER_SUITE_TERMINAL () { 0x00000010 } # Terminal Services is installed. This value is always set.
-# If VER_SUITE_TERMINAL is set but VER_SUITE_SINGLEUSERTS is not set, the system is running in application server mode.
-sub VER_SUITE_WH_SERVER () { 0x00008000 } # Windows Home Server is installed.
-
-
-sub SM_TABLETPC () { 86 }
-sub SM_MEDIACENTER () { 87 }
-sub SM_STARTER () { 88 }
-sub SM_SERVERR2 () { 89 }
-
-sub PRODUCT_UNDEFINED () { 0x000 } # An unknown product
-sub PRODUCT_ULTIMATE () { 0x001 } # Ultimate
-sub PRODUCT_HOME_BASIC () { 0x002 } # Home Basic
-sub PRODUCT_HOME_PREMIUM () { 0x003 } # Home Premium
-sub PRODUCT_ENTERPRISE () { 0x004 } # Enterprise
-sub PRODUCT_HOME_BASIC_N () { 0x005 } # Home Basic N
-sub PRODUCT_BUSINESS () { 0x006 } # Business
-sub PRODUCT_STANDARD_SERVER () { 0x007 } # Server Standard (full installation)
-sub PRODUCT_DATACENTER_SERVER () { 0x008 } # Server Datacenter (full installation)
-sub PRODUCT_SMALLBUSINESS_SERVER () { 0x009 } # Windows Small Business Server
-sub PRODUCT_ENTERPRISE_SERVER () { 0x00A } # Server Enterprise (full installation)
-sub PRODUCT_STARTER () { 0x00B } # Starter
-sub PRODUCT_DATACENTER_SERVER_CORE () { 0x00C } # Server Datacenter (core installation)
-sub PRODUCT_STANDARD_SERVER_CORE () { 0x00D } # Server Standard (core installation)
-sub PRODUCT_ENTERPRISE_SERVER_CORE () { 0x00E } # Server Enterprise (core installation)
-sub PRODUCT_ENTERPRISE_SERVER_IA64 () { 0x00F } # Server Enterprise for Itanium-based Systems
-sub PRODUCT_BUSINESS_N () { 0x010 } # Business N
-sub PRODUCT_WEB_SERVER () { 0x011 } # Web Server (full installation)
-sub PRODUCT_CLUSTER_SERVER () { 0x012 } # HPC Edition
-sub PRODUCT_HOME_SERVER () { 0x013 } # Home Server Edition
-sub PRODUCT_STORAGE_EXPRESS_SERVER () { 0x014 } # Storage Server Express
-sub PRODUCT_STORAGE_STANDARD_SERVER () { 0x015 } # Storage Server Standard
-sub PRODUCT_STORAGE_WORKGROUP_SERVER () { 0x016 } # Storage Server Workgroup
-sub PRODUCT_STORAGE_ENTERPRISE_SERVER () { 0x017 } # Storage Server Enterprise
-sub PRODUCT_SERVER_FOR_SMALLBUSINESS () { 0x018 } # Windows Server 2008 for Windows Essential Server Solutions
-sub PRODUCT_SMALLBUSINESS_SERVER_PREMIUM () { 0x019 } # Windows Small Business Server Premium
-sub PRODUCT_HOME_PREMIUM_N () { 0x01A } # Home Premium N
-sub PRODUCT_ENTERPRISE_N () { 0x01B } # Enterprise N
-sub PRODUCT_ULTIMATE_N () { 0x01C } # Ultimate N
-sub PRODUCT_WEB_SERVER_CORE () { 0x01D } # Web Server (core installation)
-sub PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT () { 0x01E } # Windows Essential Business Server Management Server
-sub PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY () { 0x01F } # Windows Essential Business Server Security Server
-sub PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING () { 0x020 } # Windows Essential Business Server Messaging Server
-sub PRODUCT_SERVER_FOUNDATION () { 0x021 } # Server Foundation
-
-sub PRODUCT_SERVER_FOR_SMALLBUSINESS_V () { 0x023 } # Windows Server 2008 without Hyper-V for Windows Essential Server Solutions
-sub PRODUCT_STANDARD_SERVER_V () { 0x024 } # Server Standard without Hyper-V (full installation)
-sub PRODUCT_DATACENTER_SERVER_V () { 0x025 } # Server Datacenter without Hyper-V (full installation)
-sub PRODUCT_ENTERPRISE_SERVER_V () { 0x026 } # Server Enterprise without Hyper-V (full installation)
-sub PRODUCT_DATACENTER_SERVER_CORE_V () { 0x027 } # Server Datacenter without Hyper-V (core installation)
-sub PRODUCT_STANDARD_SERVER_CORE_V () { 0x028 } # Server Standard without Hyper-V (core installation)
-sub PRODUCT_ENTERPRISE_SERVER_CORE_V () { 0x029 } # Server Enterprise without Hyper-V (core installation)
-sub PRODUCT_HYPERV () { 0x02A } # Microsoft Hyper-V Server
-
-sub PRODUCT_STARTER_N () { 0x02F } # Starter N
-sub PRODUCT_PROFESSIONAL () { 0x030 } # Professional
-sub PRODUCT_PROFESSIONAL_N () { 0x031 } # Professional N
-
-sub PRODUCT_STARTER_E () { 0x042 } # Starter E
-sub PRODUCT_HOME_BASIC_E () { 0x043 } # Home Basic E
-sub PRODUCT_HOME_PREMIUM_E () { 0x044 } # Home Premium E
-sub PRODUCT_PROFESSIONAL_E () { 0x045 } # Professional E
-sub PRODUCT_ENTERPRISE_E () { 0x046 } # Enterprise E
-sub PRODUCT_ULTIMATE_E () { 0x047 } # Ultimate E
-
-sub PRODUCT_UNLICENSED () { 0xABCDABCD } # product has not been activated and is no longer in the grace period
-
-sub PROCESSOR_ARCHITECTURE_AMD64 () { 9 } # x64 (AMD or Intel)
-sub PROCESSOR_ARCHITECTURE_IA64 () { 6 } # Intel Itanium Processor Family (IPF)
-sub PROCESSOR_ARCHITECTURE_INTEL () { 0 } # x86
-sub PROCESSOR_ARCHITECTURE_UNKNOWN () { 0xffff } # Unknown architecture.
-
-sub _GetProcessorArchitecture {
- my $arch = {
- 386 => PROCESSOR_ARCHITECTURE_INTEL,
- 486 => PROCESSOR_ARCHITECTURE_INTEL,
- 586 => PROCESSOR_ARCHITECTURE_INTEL,
- 2200 => PROCESSOR_ARCHITECTURE_IA64,
- 8664 => PROCESSOR_ARCHITECTURE_AMD64,
- }->{Win32::GetChipName()};
- return defined($arch) ? $arch : PROCESSOR_ARCHITECTURE_UNKNOWN;
-}
-
-### This method is just a simple interface into GetOSVersion(). More
-### specific or demanding situations should use that instead.
-
-my ($cached_os, $cached_desc);
-
-sub GetOSName {
- unless (defined $cached_os) {
- my($desc, $major, $minor, $build, $id, undef, undef, $suitemask, $producttype)
- = Win32::GetOSVersion();
- my $arch = _GetProcessorArchitecture();
- my $productinfo = Win32::GetProductInfo(6, 0, 0, 0);
- ($cached_os, $cached_desc) = _GetOSName($desc, $major, $minor, $build, $id,
- $suitemask, $producttype, $productinfo, $arch);
- }
- return wantarray ? ($cached_os, $cached_desc) : $cached_os;
-}
-
-sub GetOSDisplayName {
- # Calling GetOSDisplayName() with arguments is for the test suite only!
- my($name,$desc) = @_ ? @_ : GetOSName();
- $name =~ s/^Win//;
- if ($desc =~ /^Windows Home Server\b/ || $desc =~ /^Windows XP Professional x64 Edition\b/) {
- ($name, $desc) = ($desc, "");
- }
- elsif ($desc =~ s/\s*(Windows (.*) Server( \d+)?)//) {
- $name = "$1 $name";
- $desc =~ s/^\s+//;
- }
- else {
- for ($name) {
- s/^/Windows / unless /^Win32s$/;
- s/\/.Net//;
- s/NT(\d)/NT $1/;
- if ($desc =~ s/\s*(HPC|Small Business|Web) Server//) {
- my $name = $1;
- $desc =~ s/^\s*//;
- s/(200.)/$name Server $1/;
- }
- s/^Windows (200[38])/Windows Server $1/;
- }
- }
- $name .= " $desc" if length $desc;
- return $name;
-}
-
-sub _GetSystemMetrics {
- my($index,$metrics) = @_;
- return Win32::GetSystemMetrics($index) unless ref $metrics;
- return $metrics->{$index} if ref $metrics eq "HASH" && defined $metrics->{$index};
- return 1 if ref $metrics eq "ARRAY" && grep $_ == $index, @$metrics;
- return 0;
-}
-
-sub _GetOSName {
- # The $metrics argument only exists for the benefit of t/GetOSName.t
- my($csd, $major, $minor, $build, $id, $suitemask, $producttype, $productinfo, $arch, $metrics) = @_;
-
- my($os,@tags);
- my $desc = "";
- if ($id == 0) {
- $os = "Win32s";
- }
- elsif ($id == 1) {
- if ($minor == 0) {
- $os = "95";
- }
- elsif ($minor == 10) {
- $os = "98";
- }
- elsif ($minor == 90) {
- $os = "Me";
- }
- }
- elsif ($id == 2) {
- if ($major == 3) {
- $os = "NT3.51";
- }
- elsif ($major == 4) {
- $os = "NT4";
- }
- elsif ($major == 5) {
- if ($minor == 0) {
- $os = "2000";
- if ($producttype == VER_NT_WORKSTATION) {
- $desc = "Professional";
- }
- else {
- if ($suitemask & VER_SUITE_DATACENTER) {
- $desc = "Datacenter Server";
- }
- elsif ($suitemask & VER_SUITE_ENTERPRISE) {
- $desc = "Advanced Server";
- }
- elsif ($suitemask & VER_SUITE_SMALLBUSINESS_RESTRICTED) {
- $desc = "Small Business Server";
- }
- else {
- $desc = "Server";
- }
- }
- # XXX ignoring "Windows 2000 Advanced Server Limited Edition" for Itanium
- # XXX and "Windows 2000 Datacenter Server Limited Edition" for Itanium
- }
- elsif ($minor == 1) {
- $os = "XP/.Net";
- if (_GetSystemMetrics(SM_MEDIACENTER, $metrics)) {
- $desc = "Media Center Edition";
- }
- elsif (_GetSystemMetrics(SM_TABLETPC, $metrics)) {
- # Tablet PC Edition is based on XP Pro
- $desc = "Tablet PC Edition";
- }
- elsif (_GetSystemMetrics(SM_STARTER, $metrics)) {
- $desc = "Starter Edition";
- }
- elsif ($suitemask & VER_SUITE_PERSONAL) {
- $desc = "Home Edition";
- }
- else {
- $desc = "Professional";
- }
- # XXX ignoring all Windows XP Embedded and Fundamentals versions
- }
- elsif ($minor == 2) {
- $os = "2003";
-
- if (_GetSystemMetrics(SM_SERVERR2, $metrics)) {
- # XXX R2 was released for all x86 and x64 versions,
- # XXX but only Enterprise Edition for Itanium.
- $desc = "R2";
- }
-
- if ($suitemask == VER_SUITE_STORAGE_SERVER) {
- $desc .= " Windows Storage Server";
- }
- elsif ($suitemask == VER_SUITE_WH_SERVER) {
- $desc .= " Windows Home Server";
- }
- elsif ($producttype == VER_NT_WORKSTATION && $arch == PROCESSOR_ARCHITECTURE_AMD64) {
- $desc .= " Windows XP Professional x64 Edition";
- }
-
- # Test for the server type.
- if ($producttype != VER_NT_WORKSTATION) {
- if ($arch == PROCESSOR_ARCHITECTURE_IA64) {
- if ($suitemask & VER_SUITE_DATACENTER) {
- $desc .= " Datacenter Edition for Itanium-based Systems";
- }
- elsif ($suitemask & VER_SUITE_ENTERPRISE) {
- $desc .= " Enterprise Edition for Itanium-based Systems";
- }
- }
- elsif ($arch == PROCESSOR_ARCHITECTURE_AMD64) {
- if ($suitemask & VER_SUITE_DATACENTER) {
- $desc .= " Datacenter x64 Edition";
- }
- elsif ($suitemask & VER_SUITE_ENTERPRISE) {
- $desc .= " Enterprise x64 Edition";
- }
- else {
- $desc .= " Standard x64 Edition";
- }
- }
- else {
- if ($suitemask & VER_SUITE_COMPUTE_SERVER) {
- $desc .= " Windows Compute Cluster Server";
- }
- elsif ($suitemask & VER_SUITE_DATACENTER) {
- $desc .= " Datacenter Edition";
- }
- elsif ($suitemask & VER_SUITE_ENTERPRISE) {
- $desc .= " Enterprise Edition";
- }
- elsif ($suitemask & VER_SUITE_BLADE) {
- $desc .= " Web Edition";
- }
- elsif ($suitemask & VER_SUITE_SMALLBUSINESS_RESTRICTED) {
- $desc .= " Small Business Server";
- }
- else {
- if ($desc !~ /Windows (Home|Storage) Server/) {
- $desc .= " Standard Edition";
- }
- }
- }
- }
- }
- }
- elsif ($major == 6) {
- if ($minor == 0) {
- if ($producttype == VER_NT_WORKSTATION) {
- $os = "Vista";
- }
- else {
- $os = "2008";
- }
- }
- elsif ($minor == 1) {
- if ($producttype == VER_NT_WORKSTATION) {
- $os = "7";
- }
- else {
- $os = "2008";
- $desc = "R2";
- }
- }
-
- if ($productinfo == PRODUCT_ULTIMATE) {
- $desc .= " Ultimate";
- }
- elsif ($productinfo == PRODUCT_HOME_PREMIUM) {
- $desc .= " Home Premium";
- }
- elsif ($productinfo == PRODUCT_HOME_BASIC) {
- $desc .= " Home Basic";
- }
- elsif ($productinfo == PRODUCT_ENTERPRISE) {
- $desc .= " Enterprise";
- }
- elsif ($productinfo == PRODUCT_BUSINESS) {
- # "Windows 7 Business" had a name change to "Windows 7 Professional"
- $desc .= $minor == 0 ? " Business" : " Professional";
- }
- elsif ($productinfo == PRODUCT_STARTER) {
- $desc .= " Starter";
- }
- elsif ($productinfo == PRODUCT_CLUSTER_SERVER) {
- $desc .= " HPC Server";
- }
- elsif ($productinfo == PRODUCT_DATACENTER_SERVER) {
- $desc .= " Datacenter";
- }
- elsif ($productinfo == PRODUCT_DATACENTER_SERVER_CORE) {
- $desc .= " Datacenter Edition (core installation)";
- }
- elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER) {
- $desc .= " Enterprise";
- }
- elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER_CORE) {
- $desc .= " Enterprise Edition (core installation)";
- }
- elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER_IA64) {
- $desc .= " Enterprise Edition for Itanium-based Systems";
- }
- elsif ($productinfo == PRODUCT_SMALLBUSINESS_SERVER) {
- $desc .= " Small Business Server";
- }
- elsif ($productinfo == PRODUCT_SMALLBUSINESS_SERVER_PREMIUM) {
- $desc .= " Small Business Server Premium Edition";
- }
- elsif ($productinfo == PRODUCT_STANDARD_SERVER) {
- $desc .= " Standard";
- }
- elsif ($productinfo == PRODUCT_STANDARD_SERVER_CORE) {
- $desc .= " Standard Edition (core installation)";
- }
- elsif ($productinfo == PRODUCT_WEB_SERVER) {
- $desc .= " Web Server";
- }
- elsif ($productinfo == PRODUCT_PROFESSIONAL) {
- $desc .= " Professional";
- }
-
- if ($arch == PROCESSOR_ARCHITECTURE_INTEL) {
- $desc .= " (32-bit)";
- }
- elsif ($arch == PROCESSOR_ARCHITECTURE_AMD64) {
- $desc .= " (64-bit)";
- }
- }
- }
-
- unless (defined $os) {
- warn "Unknown Windows version [$id:$major:$minor]";
- return;
- }
-
- for ($desc) {
- s/\s\s+/ /g;
- s/^\s//;
- s/\s$//;
- }
-
- # XXX What about "Small Business Server"? NT, 200, 2003, 2008 editions...
-
- if ($major >= 5) {
- # XXX XP, Vista, 7 all have starter editions
- #push(@tags, "Starter Edition") if _GetSystemMetrics(SM_STARTER, $metrics);
- }
-
- if (@tags) {
- unshift(@tags, $desc) if length $desc;
- $desc = join(" ", @tags);
- }
-
- if (length $csd) {
- $desc .= " " if length $desc;
- $desc .= $csd;
- }
- return ("Win$os", $desc);
-}
-
-# "no warnings 'redefine';" doesn't work for 5.8.7 and earlier
-local $^W = 0;
-bootstrap Win32;
-
-1;
-
-__END__
-
-=head1 NAME
-
-Win32 - Interfaces to some Win32 API Functions
-
-=head1 DESCRIPTION
-
-The Win32 module contains functions to access Win32 APIs.
-
-=head2 Alphabetical Listing of Win32 Functions
-
-It is recommended to C<use Win32;> before any of these functions;
-however, for backwards compatibility, those marked as [CORE] will
-automatically do this for you.
-
-In the function descriptions below the term I<Unicode string> is used
-to indicate that the string may contain characters outside the system
-codepage. The caveat I<If supported by the core Perl version>
-generally means Perl 5.8.9 and later, though some Unicode pathname
-functionality may work on earlier versions.
-
-=over
-
-=item Win32::AbortSystemShutdown(MACHINE)
-
-Aborts a system shutdown (started by the
-InitiateSystemShutdown function) on the specified MACHINE.
-
-=item Win32::BuildNumber()
-
-[CORE] Returns the ActivePerl build number. This function is
-only available in the ActivePerl binary distribution.
-
-=item Win32::CopyFile(FROM, TO, OVERWRITE)
-
-[CORE] The Win32::CopyFile() function copies an existing file to a new
-file. All file information like creation time and file attributes will
-be copied to the new file. However it will B<not> copy the security
-information. If the destination file already exists it will only be
-overwritten when the OVERWRITE parameter is true. But even this will
-not overwrite a read-only file; you have to unlink() it first
-yourself.
-
-=item Win32::CreateDirectory(DIRECTORY)
-
-Creates the DIRECTORY and returns a true value on success. Check $^E
-on failure for extended error information.
-
-DIRECTORY may contain Unicode characters outside the system codepage.
-Once the directory has been created you can use
-Win32::GetANSIPathName() to get a name that can be passed to system
-calls and external programs.
-
-=item Win32::CreateFile(FILE)
-
-Creates the FILE and returns a true value on success. Check $^E on
-failure for extended error information.
-
-FILE may contain Unicode characters outside the system codepage. Once
-the file has been created you can use Win32::GetANSIPathName() to get
-a name that can be passed to system calls and external programs.
-
-=item Win32::DomainName()
-
-[CORE] Returns the name of the Microsoft Network domain or workgroup
-that the owner of the current perl process is logged into. The
-"Workstation" service must be running to determine this
-information. This function does B<not> work on Windows 9x.
-
-=item Win32::ExpandEnvironmentStrings(STRING)
-
-Takes STRING and replaces all referenced environment variable
-names with their defined values. References to environment variables
-take the form C<%VariableName%>. Case is ignored when looking up the
-VariableName in the environment. If the variable is not found then the
-original C<%VariableName%> text is retained. Has the same effect
-as the following:
-
- $string =~ s/%([^%]*)%/$ENV{$1} || "%$1%"/eg
-
-However, this function may return a Unicode string if the environment
-variable being expanded hasn't been assigned to via %ENV. Access
-to %ENV is currently always using byte semantics.
-
-=item Win32::FormatMessage(ERRORCODE)
-
-[CORE] Converts the supplied Win32 error number (e.g. returned by
-Win32::GetLastError()) to a descriptive string. Analogous to the
-perror() standard-C library function. Note that C<$^E> used
-in a string context has much the same effect.
-
- C:\> perl -e "$^E = 26; print $^E;"
- The specified disk or diskette cannot be accessed
-
-=item Win32::FsType()
-
-[CORE] Returns the name of the filesystem of the currently active
-drive (like 'FAT' or 'NTFS'). In list context it returns three values:
-(FSTYPE, FLAGS, MAXCOMPLEN). FSTYPE is the filesystem type as
-before. FLAGS is a combination of values of the following table:
-
- 0x00000001 supports case-sensitive filenames
- 0x00000002 preserves the case of filenames
- 0x00000004 supports Unicode in filenames
- 0x00000008 preserves and enforces ACLs
- 0x00000010 supports file-based compression
- 0x00000020 supports disk quotas
- 0x00000040 supports sparse files
- 0x00000080 supports reparse points
- 0x00000100 supports remote storage
- 0x00008000 is a compressed volume (e.g. DoubleSpace)
- 0x00010000 supports object identifiers
- 0x00020000 supports the Encrypted File System (EFS)
-
-MAXCOMPLEN is the maximum length of a filename component (the part
-between two backslashes) on this file system.
-
-=item Win32::FreeLibrary(HANDLE)
-
-Unloads a previously loaded dynamic-link library. The HANDLE is
-no longer valid after this call. See L<LoadLibrary|Win32::LoadLibrary(LIBNAME)>
-for information on dynamically loading a library.
-
-=item Win32::GetANSIPathName(FILENAME)
-
-Returns an ANSI version of FILENAME. This may be the short name
-if the long name cannot be represented in the system codepage.
-
-While not currently implemented, it is possible that in the future
-this function will convert only parts of the path to FILENAME to a
-short form.
-
-If FILENAME doesn't exist on the filesystem, or if the filesystem
-doesn't support short ANSI filenames, then this function will
-translate the Unicode name into the system codepage using replacement
-characters.
-
-=item Win32::GetArchName()
-
-Use of this function is deprecated. It is equivalent with
-$ENV{PROCESSOR_ARCHITECTURE}. This might not work on Win9X.
-
-=item Win32::GetChipName()
-
-Returns the processor type: 386, 486 or 586 for x86 processors, 8664
-for the x64 processor and 2200 for the Itanium. Since it returns the
-native processor type it will return a 64-bit processor type even when
-called from a 32-bit Perl running on 64-bit Windows.
-
-=item Win32::GetCwd()
-
-[CORE] Returns the current active drive and directory. This function
-does not return a UNC path, since the functionality required for such
-a feature is not available under Windows 95.
-
-If supported by the core Perl version, this function will return an
-ANSI path name for the current directory if the long pathname cannot
-be represented in the system codepage.
-
-=item Win32::GetCurrentProcessId()
-
-Returns the process identifier of the current process. Until the
-process terminates, the process identifier uniquely identifies the
-process throughout the system.
-
-The current process identifier is normally also available via the
-predefined $$ variable. Under fork() emulation however $$ may contain
-a pseudo-process identifier that is only meaningful to the Perl
-kill(), wait() and waitpid() functions. The
-Win32::GetCurrentProcessId() function will always return the regular
-Windows process id, even when called from inside a pseudo-process.
-
-=item Win32::GetCurrentThreadId()
-
-Returns the thread identifier of the calling thread. Until the thread
-terminates, the thread identifier uniquely identifies the thread
-throughout the system.
-
-=item Win32::GetFileVersion(FILENAME)
-
-Returns the file version number from the VERSIONINFO resource of
-the executable file or DLL. This is a tuple of four 16 bit numbers.
-In list context these four numbers will be returned. In scalar context
-they are concatenated into a string, separated by dots.
-
-=item Win32::GetFolderPath(FOLDER [, CREATE])
-
-Returns the full pathname of one of the Windows special folders.
-The folder will be created if it doesn't exist and the optional CREATE
-argument is true. The following FOLDER constants are defined by the
-Win32 module, but only exported on demand:
-
- CSIDL_ADMINTOOLS
- CSIDL_APPDATA
- CSIDL_CDBURN_AREA
- CSIDL_COMMON_ADMINTOOLS
- CSIDL_COMMON_APPDATA
- CSIDL_COMMON_DESKTOPDIRECTORY
- CSIDL_COMMON_DOCUMENTS
- CSIDL_COMMON_FAVORITES
- CSIDL_COMMON_MUSIC
- CSIDL_COMMON_PICTURES
- CSIDL_COMMON_PROGRAMS
- CSIDL_COMMON_STARTMENU
- CSIDL_COMMON_STARTUP
- CSIDL_COMMON_TEMPLATES
- CSIDL_COMMON_VIDEO
- CSIDL_COOKIES
- CSIDL_DESKTOP
- CSIDL_DESKTOPDIRECTORY
- CSIDL_FAVORITES
- CSIDL_FONTS
- CSIDL_HISTORY
- CSIDL_INTERNET_CACHE
- CSIDL_LOCAL_APPDATA
- CSIDL_MYMUSIC
- CSIDL_MYPICTURES
- CSIDL_MYVIDEO
- CSIDL_NETHOOD
- CSIDL_PERSONAL
- CSIDL_PRINTHOOD
- CSIDL_PROFILE
- CSIDL_PROGRAMS
- CSIDL_PROGRAM_FILES
- CSIDL_PROGRAM_FILES_COMMON
- CSIDL_RECENT
- CSIDL_RESOURCES
- CSIDL_RESOURCES_LOCALIZED
- CSIDL_SENDTO
- CSIDL_STARTMENU
- CSIDL_STARTUP
- CSIDL_SYSTEM
- CSIDL_TEMPLATES
- CSIDL_WINDOWS
-
-Note that not all folders are defined on all versions of Windows.
-
-Please refer to the MSDN documentation of the CSIDL constants,
-currently available at:
-
-http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp
-
-This function will return an ANSI folder path if the long name cannot
-be represented in the system codepage. Use Win32::GetLongPathName()
-on the result of Win32::GetFolderPath() if you want the Unicode
-version of the folder name.
-
-=item Win32::GetFullPathName(FILENAME)
-
-[CORE] GetFullPathName combines the FILENAME with the current drive
-and directory name and returns a fully qualified (aka, absolute)
-path name. In list context it returns two elements: (PATH, FILE) where
-PATH is the complete pathname component (including trailing backslash)
-and FILE is just the filename part. Note that no attempt is made to
-convert 8.3 components in the supplied FILENAME to longnames or
-vice-versa. Compare with Win32::GetShortPathName() and
-Win32::GetLongPathName().
-
-If supported by the core Perl version, this function will return an
-ANSI path name if the full pathname cannot be represented in the
-system codepage.
-
-=item Win32::GetLastError()
-
-[CORE] Returns the last error value generated by a call to a Win32 API
-function. Note that C<$^E> used in a numeric context amounts to the
-same value.
-
-=item Win32::GetLongPathName(PATHNAME)
-
-[CORE] Returns a representation of PATHNAME composed of longname
-components (if any). The result may not necessarily be longer
-than PATHNAME. No attempt is made to convert PATHNAME to the
-absolute path. Compare with Win32::GetShortPathName() and
-Win32::GetFullPathName().
-
-This function may return the pathname in Unicode if it cannot be
-represented in the system codepage. Use Win32::GetANSIPathName()
-before passing the path to a system call or another program.
-
-=item Win32::GetNextAvailDrive()
-
-[CORE] Returns a string in the form of "<d>:" where <d> is the first
-available drive letter.
-
-=item Win32::GetOSDisplayName()
-
-Returns the "marketing" name of the Windows operating system version
-being used. It returns names like these (random samples):
-
- Windows 2000 Datacenter Server
- Windows XP Professional
- Windows XP Tablet PC Edition
- Windows Home Server
- Windows Server 2003 Enterprise Edition for Itanium-based Systems
- Windows Vista Ultimate (32-bit)
- Windows Small Business Server 2008 R2 (64-bit)
-
-The display name describes the native Windows version, so even on a
-32-bit Perl this function may return a "Windows ... (64-bit)" name
-when running on a 64-bit Windows.
-
-This function should only be used to display the actual OS name to the
-user; it should not be used to determine the class of operating systems
-this system belongs to. The Win32::GetOSName(), Win32::GetOSVersion,
-Win32::GetProductInfo() and Win32::GetSystemMetrics() functions provide
-the base information to check for certain capabilities, or for families
-of OS releases.
-
-=item Win32::GetOSName()
-
-In scalar context returns the name of the Win32 operating system
-being used. In list context returns a two element list of the OS name
-and whatever edition information is known about the particular build
-(for Win9X boxes) and whatever service packs have been installed.
-The latter is roughly equivalent to the first item returned by
-GetOSVersion() in list context.
-
-The description will also include tags for other special editions,
-like "R2", "Media Center", "Tablet PC", or "Starter Edition".
-
-Currently the possible values for the OS name are
-
- WinWin32s
- Win95
- Win98
- WinMe
- WinNT3.51
- WinNT4
- Win2000
- WinXP/.Net
- Win2003
- WinHomeSvr
- WinVista
- Win2008
- Win7
-
-This routine is just a simple interface into GetOSVersion(). More
-specific or demanding situations should use that instead. Another
-option would be to use POSIX::uname(), however the latter appears to
-report only the OS family name and not the specific OS. In scalar
-context it returns just the ID.
-
-The name "WinXP/.Net" is used for historical reasons only, to maintain
-backwards compatibility of the Win32 module. Windows .NET Server has
-been renamed as Windows 2003 Server before final release and uses a
-different major/minor version number than Windows XP.
-
-Similarly the name "WinWin32s" should have been "Win32s" but has been
-kept as-is for backwards compatibility reasons too.
-
-=item Win32::GetOSVersion()
-
-[CORE] Returns the list (STRING, MAJOR, MINOR, BUILD, ID), where the
-elements are, respectively: An arbitrary descriptive string, the major
-version number of the operating system, the minor version number, the
-build number, and a digit indicating the actual operating system.
-For the ID, the values are 0 for Win32s, 1 for Windows 9X/Me and 2 for
-Windows NT/2000/XP/2003/Vista/2008/7. In scalar context it returns just
-the ID.
-
-Currently known values for ID MAJOR and MINOR are as follows:
-
- OS ID MAJOR MINOR
- Win32s 0 - -
- Windows 95 1 4 0
- Windows 98 1 4 10
- Windows Me 1 4 90
-
- Windows NT 3.51 2 3 51
- Windows NT 4 2 4 0
-
- Windows 2000 2 5 0
- Windows XP 2 5 1
- Windows Server 2003 2 5 2
- Windows Server 2003 R2 2 5 2
- Windows Home Server 2 5 2
-
- Windows Vista 2 6 0
- Windows Server 2008 2 6 0
- Windows 7 2 6 1
- Windows Server 2008 R2 2 6 1
-
-On Windows NT 4 SP6 and later this function returns the following
-additional values: SPMAJOR, SPMINOR, SUITEMASK, PRODUCTTYPE.
-
-The version numbers for Windows 2003 and Windows Home Server are
-identical; the SUITEMASK field must be used to differentiate between\
-them.
-
-The version numbers for Windows Vista and Windows Server 2008 are
-identical; the PRODUCTTYPE field must be used to differentiate between
-them.
-
-The version numbers for Windows 7 and Windows Server 2008 R2 are
-identical; the PRODUCTTYPE field must be used to differentiate between
-them.
-
-SPMAJOR and SPMINOR are are the version numbers of the latest
-installed service pack.
-
-SUITEMASK is a bitfield identifying the product suites available on
-the system. Known bits are:
-
- VER_SUITE_SMALLBUSINESS 0x00000001
- VER_SUITE_ENTERPRISE 0x00000002
- VER_SUITE_BACKOFFICE 0x00000004
- VER_SUITE_COMMUNICATIONS 0x00000008
- VER_SUITE_TERMINAL 0x00000010
- VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020
- VER_SUITE_EMBEDDEDNT 0x00000040
- VER_SUITE_DATACENTER 0x00000080
- VER_SUITE_SINGLEUSERTS 0x00000100
- VER_SUITE_PERSONAL 0x00000200
- VER_SUITE_BLADE 0x00000400
- VER_SUITE_EMBEDDED_RESTRICTED 0x00000800
- VER_SUITE_SECURITY_APPLIANCE 0x00001000
- VER_SUITE_STORAGE_SERVER 0x00002000
- VER_SUITE_COMPUTE_SERVER 0x00004000
- VER_SUITE_WH_SERVER 0x00008000
-
-The VER_SUITE_xxx names are listed here to crossreference the Microsoft
-documentation. The Win32 module does not provide symbolic names for these
-constants.
-
-PRODUCTTYPE provides additional information about the system. It should
-be one of the following integer values:
-
- 1 - Workstation (NT 4, 2000 Pro, XP Home, XP Pro, Vista)
- 2 - Domaincontroller
- 3 - Server (2000 Server, Server 2003, Server 2008)
-
-Note that a server that is also a domain controller is reported as
-PRODUCTTYPE 2 (Domaincontroller) and not PRODUCTTYPE 3 (Server).
-
-=item Win32::GetShortPathName(PATHNAME)
-
-[CORE] Returns a representation of PATHNAME that is composed of short
-(8.3) path components where available. For path components where the
-file system has not generated the short form the returned path will
-use the long form, so this function might still for instance return a
-path containing spaces. Returns C<undef> when the PATHNAME does not
-exist. Compare with Win32::GetFullPathName() and
-Win32::GetLongPathName().
-
-=item Win32::GetSystemMetrics(INDEX)
-
-Retrieves the specified system metric or system configuration setting.
-Please refer to the Microsoft documentation of the GetSystemMetrics()
-function for a reference of available INDEX values. All system
-metrics return integer values.
-
-=item Win32::GetProcAddress(INSTANCE, PROCNAME)
-
-Returns the address of a function inside a loaded library. The
-information about what you can do with this address has been lost in
-the mist of time. Use the Win32::API module instead of this deprecated
-function.
-
-=item Win32::GetProductInfo(OSMAJOR, OSMINOR, SPMAJOR, SPMINOR)
-
-Retrieves the product type for the operating system on the local
-computer, and maps the type to the product types supported by the
-specified operating system. Please refer to the Microsoft
-documentation of the GetProductInfo() function for more information
-about the parameters and return value. This function requires Windows
-Vista or later.
-
-See also the Win32::GetOSName() and Win32::GetOSDisplayName()
-functions which provide a higher level abstraction of the data
-returned by this function.
-
-=item Win32::GetTickCount()
-
-[CORE] Returns the number of milliseconds elapsed since the last
-system boot. Resolution is limited to system timer ticks (about 10ms
-on WinNT and 55ms on Win9X).
-
-=item Win32::GuidGen()
-
-Creates a globally unique 128 bit integer that can be used as a
-persistent identifier in a distributed setting. To a very high degree
-of certainty this function returns a unique value. No other
-invocation, on the same or any other system (networked or not), should
-return the same value.
-
-The return value is formatted according to OLE conventions, as groups
-of hex digits with surrounding braces. For example:
-
- {09531CF1-D0C7-4860-840C-1C8C8735E2AD}
-
-=item Win32::InitiateSystemShutdown
-
-(MACHINE, MESSAGE, TIMEOUT, FORCECLOSE, REBOOT)
-
-Shutsdown the specified MACHINE, notifying users with the
-supplied MESSAGE, within the specified TIMEOUT interval. Forces
-closing of all documents without prompting the user if FORCECLOSE is
-true, and reboots the machine if REBOOT is true. This function works
-only on WinNT.
-
-=item Win32::IsAdminUser()
-
-Returns non zero if the account in whose security context the
-current process/thread is running belongs to the local group of
-Administrators in the built-in system domain; returns 0 if not.
-On Windows Vista it will only return non-zero if the process is
-actually running with elevated privileges. Returns C<undef>
-and prints a warning if an error occurred. This function always
-returns 1 on Win9X.
-
-=item Win32::IsWinNT()
-
-[CORE] Returns non zero if the Win32 subsystem is Windows NT.
-
-=item Win32::IsWin95()
-
-[CORE] Returns non zero if the Win32 subsystem is Windows 95.
-
-=item Win32::LoadLibrary(LIBNAME)
-
-Loads a dynamic link library into memory and returns its module
-handle. This handle can be used with Win32::GetProcAddress() and
-Win32::FreeLibrary(). This function is deprecated. Use the Win32::API
-module instead.
-
-=item Win32::LoginName()
-
-[CORE] Returns the username of the owner of the current perl process.
-The return value may be a Unicode string.
-
-=item Win32::LookupAccountName(SYSTEM, ACCOUNT, DOMAIN, SID, SIDTYPE)
-
-Looks up ACCOUNT on SYSTEM and returns the domain name the SID and
-the SID type.
-
-=item Win32::LookupAccountSID(SYSTEM, SID, ACCOUNT, DOMAIN, SIDTYPE)
-
-Looks up SID on SYSTEM and returns the account name, domain name,
-and the SID type.
-
-=item Win32::MsgBox(MESSAGE [, FLAGS [, TITLE]])
-
-Create a dialogbox containing MESSAGE. FLAGS specifies the
-required icon and buttons according to the following table:
-
- 0 = OK
- 1 = OK and Cancel
- 2 = Abort, Retry, and Ignore
- 3 = Yes, No and Cancel
- 4 = Yes and No
- 5 = Retry and Cancel
-
- MB_ICONSTOP "X" in a red circle
- MB_ICONQUESTION question mark in a bubble
- MB_ICONEXCLAMATION exclamation mark in a yellow triangle
- MB_ICONINFORMATION "i" in a bubble
-
-TITLE specifies an optional window title. The default is "Perl".
-
-The function returns the menu id of the selected push button:
-
- 0 Error
-
- 1 OK
- 2 Cancel
- 3 Abort
- 4 Retry
- 5 Ignore
- 6 Yes
- 7 No
-
-=item Win32::NodeName()
-
-[CORE] Returns the Microsoft Network node-name of the current machine.
-
-=item Win32::OutputDebugString(STRING)
-
-Sends a string to the application or system debugger for display.
-The function does nothing if there is no active debugger.
-
-Alternatively one can use the I<Debug Viewer> application to
-watch the OutputDebugString() output:
-
-http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx
-
-=item Win32::RegisterServer(LIBRARYNAME)
-
-Loads the DLL LIBRARYNAME and calls the function DllRegisterServer.
-
-=item Win32::SetChildShowWindow(SHOWWINDOW)
-
-[CORE] Sets the I<ShowMode> of child processes started by system().
-By default system() will create a new console window for child
-processes if Perl itself is not running from a console. Calling
-SetChildShowWindow(0) will make these new console windows invisible.
-Calling SetChildShowWindow() without arguments reverts system() to the
-default behavior. The return value of SetChildShowWindow() is the
-previous setting or C<undef>.
-
-The following symbolic constants for SHOWWINDOW are available
-(but not exported) from the Win32 module: SW_HIDE, SW_SHOWNORMAL,
-SW_SHOWMINIMIZED, SW_SHOWMAXIMIZED and SW_SHOWNOACTIVATE.
-
-=item Win32::SetCwd(NEWDIRECTORY)
-
-[CORE] Sets the current active drive and directory. This function does not
-work with UNC paths, since the functionality required to required for
-such a feature is not available under Windows 95.
-
-=item Win32::SetLastError(ERROR)
-
-[CORE] Sets the value of the last error encountered to ERROR. This is
-that value that will be returned by the Win32::GetLastError()
-function.
-
-=item Win32::Sleep(TIME)
-
-[CORE] Pauses for TIME milliseconds. The timeslices are made available
-to other processes and threads.
-
-=item Win32::Spawn(COMMAND, ARGS, PID)
-
-[CORE] Spawns a new process using the supplied COMMAND, passing in
-arguments in the string ARGS. The pid of the new process is stored in
-PID. This function is deprecated. Please use the Win32::Process module
-instead.
-
-=item Win32::UnregisterServer(LIBRARYNAME)
-
-Loads the DLL LIBRARYNAME and calls the function
-DllUnregisterServer.
-
-=back
-
-=cut
+package Win32;
+
+# BEGIN {
+ use strict;
+ use vars qw|$VERSION $XS_VERSION @ISA @EXPORT @EXPORT_OK|;
+
+ require Exporter;
+ require DynaLoader;
+
+ @ISA = qw|Exporter DynaLoader|;
+ $VERSION = '0.47';
+ $XS_VERSION = $VERSION;
+ $VERSION = eval $VERSION;
+
+ @EXPORT = qw(
+ NULL
+ WIN31_CLASS
+ OWNER_SECURITY_INFORMATION
+ GROUP_SECURITY_INFORMATION
+ DACL_SECURITY_INFORMATION
+ SACL_SECURITY_INFORMATION
+ MB_ICONHAND
+ MB_ICONQUESTION
+ MB_ICONEXCLAMATION
+ MB_ICONASTERISK
+ MB_ICONWARNING
+ MB_ICONERROR
+ MB_ICONINFORMATION
+ MB_ICONSTOP
+ );
+ @EXPORT_OK = qw(
+ GetOSName
+ SW_HIDE
+ SW_SHOWNORMAL
+ SW_SHOWMINIMIZED
+ SW_SHOWMAXIMIZED
+ SW_SHOWNOACTIVATE
+
+ CSIDL_DESKTOP
+ CSIDL_PROGRAMS
+ CSIDL_PERSONAL
+ CSIDL_FAVORITES
+ CSIDL_STARTUP
+ CSIDL_RECENT
+ CSIDL_SENDTO
+ CSIDL_STARTMENU
+ CSIDL_MYMUSIC
+ CSIDL_MYVIDEO
+ CSIDL_DESKTOPDIRECTORY
+ CSIDL_NETHOOD
+ CSIDL_FONTS
+ CSIDL_TEMPLATES
+ CSIDL_COMMON_STARTMENU
+ CSIDL_COMMON_PROGRAMS
+ CSIDL_COMMON_STARTUP
+ CSIDL_COMMON_DESKTOPDIRECTORY
+ CSIDL_APPDATA
+ CSIDL_PRINTHOOD
+ CSIDL_LOCAL_APPDATA
+ CSIDL_COMMON_FAVORITES
+ CSIDL_INTERNET_CACHE
+ CSIDL_COOKIES
+ CSIDL_HISTORY
+ CSIDL_COMMON_APPDATA
+ CSIDL_WINDOWS
+ CSIDL_SYSTEM
+ CSIDL_PROGRAM_FILES
+ CSIDL_MYPICTURES
+ CSIDL_PROFILE
+ CSIDL_PROGRAM_FILES_COMMON
+ CSIDL_COMMON_TEMPLATES
+ CSIDL_COMMON_DOCUMENTS
+ CSIDL_COMMON_ADMINTOOLS
+ CSIDL_ADMINTOOLS
+ CSIDL_COMMON_MUSIC
+ CSIDL_COMMON_PICTURES
+ CSIDL_COMMON_VIDEO
+ CSIDL_RESOURCES
+ CSIDL_RESOURCES_LOCALIZED
+ CSIDL_CDBURN_AREA
+ );
+# }
+
+# We won't bother with the constant stuff, too much of a hassle. Just hard
+# code it here.
+
+sub NULL { 0 }
+sub WIN31_CLASS { &NULL }
+
+sub OWNER_SECURITY_INFORMATION { 0x00000001 }
+sub GROUP_SECURITY_INFORMATION { 0x00000002 }
+sub DACL_SECURITY_INFORMATION { 0x00000004 }
+sub SACL_SECURITY_INFORMATION { 0x00000008 }
+
+sub MB_ICONHAND { 0x00000010 }
+sub MB_ICONQUESTION { 0x00000020 }
+sub MB_ICONEXCLAMATION { 0x00000030 }
+sub MB_ICONASTERISK { 0x00000040 }
+sub MB_ICONWARNING { 0x00000030 }
+sub MB_ICONERROR { 0x00000010 }
+sub MB_ICONINFORMATION { 0x00000040 }
+sub MB_ICONSTOP { 0x00000010 }
+
+#
+# Newly added constants. These have an empty prototype, unlike the
+# the ones above, which aren't prototyped for compatibility reasons.
+#
+sub SW_HIDE () { 0 }
+sub SW_SHOWNORMAL () { 1 }
+sub SW_SHOWMINIMIZED () { 2 }
+sub SW_SHOWMAXIMIZED () { 3 }
+sub SW_SHOWNOACTIVATE () { 4 }
+
+sub CSIDL_DESKTOP () { 0x0000 } # <desktop>
+sub CSIDL_PROGRAMS () { 0x0002 } # Start Menu\Programs
+sub CSIDL_PERSONAL () { 0x0005 } # "My Documents" folder
+sub CSIDL_FAVORITES () { 0x0006 } # <user name>\Favorites
+sub CSIDL_STARTUP () { 0x0007 } # Start Menu\Programs\Startup
+sub CSIDL_RECENT () { 0x0008 } # <user name>\Recent
+sub CSIDL_SENDTO () { 0x0009 } # <user name>\SendTo
+sub CSIDL_STARTMENU () { 0x000B } # <user name>\Start Menu
+sub CSIDL_MYMUSIC () { 0x000D } # "My Music" folder
+sub CSIDL_MYVIDEO () { 0x000E } # "My Videos" folder
+sub CSIDL_DESKTOPDIRECTORY () { 0x0010 } # <user name>\Desktop
+sub CSIDL_NETHOOD () { 0x0013 } # <user name>\nethood
+sub CSIDL_FONTS () { 0x0014 } # windows\fonts
+sub CSIDL_TEMPLATES () { 0x0015 }
+sub CSIDL_COMMON_STARTMENU () { 0x0016 } # All Users\Start Menu
+sub CSIDL_COMMON_PROGRAMS () { 0x0017 } # All Users\Start Menu\Programs
+sub CSIDL_COMMON_STARTUP () { 0x0018 } # All Users\Startup
+sub CSIDL_COMMON_DESKTOPDIRECTORY () { 0x0019 } # All Users\Desktop
+sub CSIDL_APPDATA () { 0x001A } # Application Data, new for NT4
+sub CSIDL_PRINTHOOD () { 0x001B } # <user name>\PrintHood
+sub CSIDL_LOCAL_APPDATA () { 0x001C } # non roaming, user\Local Settings\Application Data
+sub CSIDL_COMMON_FAVORITES () { 0x001F }
+sub CSIDL_INTERNET_CACHE () { 0x0020 }
+sub CSIDL_COOKIES () { 0x0021 }
+sub CSIDL_HISTORY () { 0x0022 }
+sub CSIDL_COMMON_APPDATA () { 0x0023 } # All Users\Application Data
+sub CSIDL_WINDOWS () { 0x0024 } # GetWindowsDirectory()
+sub CSIDL_SYSTEM () { 0x0025 } # GetSystemDirectory()
+sub CSIDL_PROGRAM_FILES () { 0x0026 } # C:\Program Files
+sub CSIDL_MYPICTURES () { 0x0027 } # "My Pictures", new for Win2K
+sub CSIDL_PROFILE () { 0x0028 } # USERPROFILE
+sub CSIDL_PROGRAM_FILES_COMMON () { 0x002B } # C:\Program Files\Common
+sub CSIDL_COMMON_TEMPLATES () { 0x002D } # All Users\Templates
+sub CSIDL_COMMON_DOCUMENTS () { 0x002E } # All Users\Documents
+sub CSIDL_COMMON_ADMINTOOLS () { 0x002F } # All Users\Start Menu\Programs\Administrative Tools
+sub CSIDL_ADMINTOOLS () { 0x0030 } # <user name>\Start Menu\Programs\Administrative Tools
+sub CSIDL_COMMON_MUSIC () { 0x0035 } # All Users\My Music
+sub CSIDL_COMMON_PICTURES () { 0x0036 } # All Users\My Pictures
+sub CSIDL_COMMON_VIDEO () { 0x0037 } # All Users\My Video
+sub CSIDL_RESOURCES () { 0x0038 } # %windir%\Resources\, For theme and other windows resources.
+sub CSIDL_RESOURCES_LOCALIZED () { 0x0039 } # %windir%\Resources\<LangID>, for theme and other windows specific resources.
+sub CSIDL_CDBURN_AREA () { 0x003B } # <user name>\Local Settings\Application Data\Microsoft\CD Burning
+
+sub VER_NT_DOMAIN_CONTROLLER () { 0x0000002 } # The system is a domain controller and the operating system is Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
+sub VER_NT_SERVER () { 0x0000003 } # The operating system is Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
+# Note that a server that is also a domain controller is reported as VER_NT_DOMAIN_CONTROLLER, not VER_NT_SERVER.
+sub VER_NT_WORKSTATION () { 0x0000001 } # The operating system is Windows Vista, Windows XP Professional, Windows XP Home Edition, or Windows 2000 Professional.
+
+
+sub VER_SUITE_BACKOFFICE () { 0x00000004 } # Microsoft BackOffice components are installed.
+sub VER_SUITE_BLADE () { 0x00000400 } # Windows Server 2003, Web Edition is installed.
+sub VER_SUITE_COMPUTE_SERVER () { 0x00004000 } # Windows Server 2003, Compute Cluster Edition is installed.
+sub VER_SUITE_DATACENTER () { 0x00000080 } # Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition, or Windows 2000 Datacenter Server is installed.
+sub VER_SUITE_ENTERPRISE () { 0x00000002 } # Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition, or Windows 2000 Advanced Server is installed. Refer to the Remarks section for more information about this bit flag.
+sub VER_SUITE_EMBEDDEDNT () { 0x00000040 } # Windows XP Embedded is installed.
+sub VER_SUITE_PERSONAL () { 0x00000200 } # Windows Vista Home Premium, Windows Vista Home Basic, or Windows XP Home Edition is installed.
+sub VER_SUITE_SINGLEUSERTS () { 0x00000100 } # Remote Desktop is supported, but only one interactive session is supported. This value is set unless the system is running in application server mode.
+sub VER_SUITE_SMALLBUSINESS () { 0x00000001 } # Microsoft Small Business Server was once installed on the system, but may have been upgraded to another version of Windows. Refer to the Remarks section for more information about this bit flag.
+sub VER_SUITE_SMALLBUSINESS_RESTRICTED () { 0x00000020 } # Microsoft Small Business Server is installed with the restrictive client license in force. Refer to the Remarks section for more information about this bit flag.
+sub VER_SUITE_STORAGE_SERVER () { 0x00002000 } # Windows Storage Server 2003 R2 or Windows Storage Server 2003 is installed.
+sub VER_SUITE_TERMINAL () { 0x00000010 } # Terminal Services is installed. This value is always set.
+# If VER_SUITE_TERMINAL is set but VER_SUITE_SINGLEUSERTS is not set, the system is running in application server mode.
+sub VER_SUITE_WH_SERVER () { 0x00008000 } # Windows Home Server is installed.
+
+
+sub SM_TABLETPC () { 86 }
+sub SM_MEDIACENTER () { 87 }
+sub SM_STARTER () { 88 }
+sub SM_SERVERR2 () { 89 }
+
+sub PRODUCT_UNDEFINED () { 0x000 } # An unknown product
+sub PRODUCT_ULTIMATE () { 0x001 } # Ultimate
+sub PRODUCT_HOME_BASIC () { 0x002 } # Home Basic
+sub PRODUCT_HOME_PREMIUM () { 0x003 } # Home Premium
+sub PRODUCT_ENTERPRISE () { 0x004 } # Enterprise
+sub PRODUCT_HOME_BASIC_N () { 0x005 } # Home Basic N
+sub PRODUCT_BUSINESS () { 0x006 } # Business
+sub PRODUCT_STANDARD_SERVER () { 0x007 } # Server Standard (full installation)
+sub PRODUCT_DATACENTER_SERVER () { 0x008 } # Server Datacenter (full installation)
+sub PRODUCT_SMALLBUSINESS_SERVER () { 0x009 } # Windows Small Business Server
+sub PRODUCT_ENTERPRISE_SERVER () { 0x00A } # Server Enterprise (full installation)
+sub PRODUCT_STARTER () { 0x00B } # Starter
+sub PRODUCT_DATACENTER_SERVER_CORE () { 0x00C } # Server Datacenter (core installation)
+sub PRODUCT_STANDARD_SERVER_CORE () { 0x00D } # Server Standard (core installation)
+sub PRODUCT_ENTERPRISE_SERVER_CORE () { 0x00E } # Server Enterprise (core installation)
+sub PRODUCT_ENTERPRISE_SERVER_IA64 () { 0x00F } # Server Enterprise for Itanium-based Systems
+sub PRODUCT_BUSINESS_N () { 0x010 } # Business N
+sub PRODUCT_WEB_SERVER () { 0x011 } # Web Server (full installation)
+sub PRODUCT_CLUSTER_SERVER () { 0x012 } # HPC Edition
+sub PRODUCT_HOME_SERVER () { 0x013 } # Home Server Edition
+sub PRODUCT_STORAGE_EXPRESS_SERVER () { 0x014 } # Storage Server Express
+sub PRODUCT_STORAGE_STANDARD_SERVER () { 0x015 } # Storage Server Standard
+sub PRODUCT_STORAGE_WORKGROUP_SERVER () { 0x016 } # Storage Server Workgroup
+sub PRODUCT_STORAGE_ENTERPRISE_SERVER () { 0x017 } # Storage Server Enterprise
+sub PRODUCT_SERVER_FOR_SMALLBUSINESS () { 0x018 } # Windows Server 2008 for Windows Essential Server Solutions
+sub PRODUCT_SMALLBUSINESS_SERVER_PREMIUM () { 0x019 } # Windows Small Business Server Premium
+sub PRODUCT_HOME_PREMIUM_N () { 0x01A } # Home Premium N
+sub PRODUCT_ENTERPRISE_N () { 0x01B } # Enterprise N
+sub PRODUCT_ULTIMATE_N () { 0x01C } # Ultimate N
+sub PRODUCT_WEB_SERVER_CORE () { 0x01D } # Web Server (core installation)
+sub PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT () { 0x01E } # Windows Essential Business Server Management Server
+sub PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY () { 0x01F } # Windows Essential Business Server Security Server
+sub PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING () { 0x020 } # Windows Essential Business Server Messaging Server
+sub PRODUCT_SERVER_FOUNDATION () { 0x021 } # Server Foundation
+
+sub PRODUCT_SERVER_FOR_SMALLBUSINESS_V () { 0x023 } # Windows Server 2008 without Hyper-V for Windows Essential Server Solutions
+sub PRODUCT_STANDARD_SERVER_V () { 0x024 } # Server Standard without Hyper-V (full installation)
+sub PRODUCT_DATACENTER_SERVER_V () { 0x025 } # Server Datacenter without Hyper-V (full installation)
+sub PRODUCT_ENTERPRISE_SERVER_V () { 0x026 } # Server Enterprise without Hyper-V (full installation)
+sub PRODUCT_DATACENTER_SERVER_CORE_V () { 0x027 } # Server Datacenter without Hyper-V (core installation)
+sub PRODUCT_STANDARD_SERVER_CORE_V () { 0x028 } # Server Standard without Hyper-V (core installation)
+sub PRODUCT_ENTERPRISE_SERVER_CORE_V () { 0x029 } # Server Enterprise without Hyper-V (core installation)
+sub PRODUCT_HYPERV () { 0x02A } # Microsoft Hyper-V Server
+
+sub PRODUCT_STARTER_N () { 0x02F } # Starter N
+sub PRODUCT_PROFESSIONAL () { 0x030 } # Professional
+sub PRODUCT_PROFESSIONAL_N () { 0x031 } # Professional N
+
+sub PRODUCT_STARTER_E () { 0x042 } # Starter E
+sub PRODUCT_HOME_BASIC_E () { 0x043 } # Home Basic E
+sub PRODUCT_HOME_PREMIUM_E () { 0x044 } # Home Premium E
+sub PRODUCT_PROFESSIONAL_E () { 0x045 } # Professional E
+sub PRODUCT_ENTERPRISE_E () { 0x046 } # Enterprise E
+sub PRODUCT_ULTIMATE_E () { 0x047 } # Ultimate E
+
+sub PRODUCT_UNLICENSED () { 0xABCDABCD } # product has not been activated and is no longer in the grace period
+
+sub PROCESSOR_ARCHITECTURE_AMD64 () { 9 } # x64 (AMD or Intel)
+sub PROCESSOR_ARCHITECTURE_IA64 () { 6 } # Intel Itanium Processor Family (IPF)
+sub PROCESSOR_ARCHITECTURE_INTEL () { 0 } # x86
+sub PROCESSOR_ARCHITECTURE_UNKNOWN () { 0xffff } # Unknown architecture.
+
+sub _GetProcessorArchitecture {
+ my $arch = {
+ 386 => PROCESSOR_ARCHITECTURE_INTEL,
+ 486 => PROCESSOR_ARCHITECTURE_INTEL,
+ 586 => PROCESSOR_ARCHITECTURE_INTEL,
+ 2200 => PROCESSOR_ARCHITECTURE_IA64,
+ 8664 => PROCESSOR_ARCHITECTURE_AMD64,
+ }->{Win32::GetChipName()};
+ return defined($arch) ? $arch : PROCESSOR_ARCHITECTURE_UNKNOWN;
+}
+
+### This method is just a simple interface into GetOSVersion(). More
+### specific or demanding situations should use that instead.
+
+my ($cached_os, $cached_desc);
+
+sub GetOSName {
+ unless (defined $cached_os) {
+ my($desc, $major, $minor, $build, $id, undef, undef, $suitemask, $producttype)
+ = Win32::GetOSVersion();
+ my $arch = _GetProcessorArchitecture();
+ my $productinfo = Win32::GetProductInfo(6, 0, 0, 0);
+ ($cached_os, $cached_desc) = _GetOSName($desc, $major, $minor, $build, $id,
+ $suitemask, $producttype, $productinfo, $arch);
+ }
+ return wantarray ? ($cached_os, $cached_desc) : $cached_os;
+}
+
+sub GetOSDisplayName {
+ # Calling GetOSDisplayName() with arguments is for the test suite only!
+ my($name,$desc) = @_ ? @_ : GetOSName();
+ $name =~ s/^Win//;
+ if ($desc =~ /^Windows Home Server\b/ || $desc =~ /^Windows XP Professional x64 Edition\b/) {
+ ($name, $desc) = ($desc, "");
+ }
+ elsif ($desc =~ s/\s*(Windows (.*) Server( \d+)?)//) {
+ $name = "$1 $name";
+ $desc =~ s/^\s+//;
+ }
+ else {
+ for ($name) {
+ s/^/Windows / unless /^Win32s$/;
+ s/\/.Net//;
+ s/NT(\d)/NT $1/;
+ if ($desc =~ s/\s*(HPC|Small Business|Web) Server//) {
+ my $name = $1;
+ $desc =~ s/^\s*//;
+ s/(200.)/$name Server $1/;
+ }
+ s/^Windows (20(03|08|12))/Windows Server $1/;
+ }
+ }
+ $name .= " $desc" if length $desc;
+ return $name;
+}
+
+sub _GetSystemMetrics {
+ my($index,$metrics) = @_;
+ return Win32::GetSystemMetrics($index) unless ref $metrics;
+ return $metrics->{$index} if ref $metrics eq "HASH" && defined $metrics->{$index};
+ return 1 if ref $metrics eq "ARRAY" && grep $_ == $index, @$metrics;
+ return 0;
+}
+
+sub _GetOSName {
+ # The $metrics argument only exists for the benefit of t/GetOSName.t
+ my($csd, $major, $minor, $build, $id, $suitemask, $producttype, $productinfo, $arch, $metrics) = @_;
+
+ my($os,@tags);
+ my $desc = "";
+ if ($id == 0) {
+ $os = "Win32s";
+ }
+ elsif ($id == 1) {
+ if ($minor == 0) {
+ $os = "95";
+ }
+ elsif ($minor == 10) {
+ $os = "98";
+ }
+ elsif ($minor == 90) {
+ $os = "Me";
+ }
+ }
+ elsif ($id == 2) {
+ if ($major == 3) {
+ $os = "NT3.51";
+ }
+ elsif ($major == 4) {
+ $os = "NT4";
+ }
+ elsif ($major == 5) {
+ if ($minor == 0) {
+ $os = "2000";
+ if ($producttype == VER_NT_WORKSTATION) {
+ $desc = "Professional";
+ }
+ else {
+ if ($suitemask & VER_SUITE_DATACENTER) {
+ $desc = "Datacenter Server";
+ }
+ elsif ($suitemask & VER_SUITE_ENTERPRISE) {
+ $desc = "Advanced Server";
+ }
+ elsif ($suitemask & VER_SUITE_SMALLBUSINESS_RESTRICTED) {
+ $desc = "Small Business Server";
+ }
+ else {
+ $desc = "Server";
+ }
+ }
+ # XXX ignoring "Windows 2000 Advanced Server Limited Edition" for Itanium
+ # XXX and "Windows 2000 Datacenter Server Limited Edition" for Itanium
+ }
+ elsif ($minor == 1) {
+ $os = "XP/.Net";
+ if (_GetSystemMetrics(SM_MEDIACENTER, $metrics)) {
+ $desc = "Media Center Edition";
+ }
+ elsif (_GetSystemMetrics(SM_TABLETPC, $metrics)) {
+ # Tablet PC Edition is based on XP Pro
+ $desc = "Tablet PC Edition";
+ }
+ elsif (_GetSystemMetrics(SM_STARTER, $metrics)) {
+ $desc = "Starter Edition";
+ }
+ elsif ($suitemask & VER_SUITE_PERSONAL) {
+ $desc = "Home Edition";
+ }
+ else {
+ $desc = "Professional";
+ }
+ # XXX ignoring all Windows XP Embedded and Fundamentals versions
+ }
+ elsif ($minor == 2) {
+ $os = "2003";
+
+ if (_GetSystemMetrics(SM_SERVERR2, $metrics)) {
+ # XXX R2 was released for all x86 and x64 versions,
+ # XXX but only Enterprise Edition for Itanium.
+ $desc = "R2";
+ }
+
+ if ($suitemask == VER_SUITE_STORAGE_SERVER) {
+ $desc .= " Windows Storage Server";
+ }
+ elsif ($suitemask == VER_SUITE_WH_SERVER) {
+ $desc .= " Windows Home Server";
+ }
+ elsif ($producttype == VER_NT_WORKSTATION && $arch == PROCESSOR_ARCHITECTURE_AMD64) {
+ $desc .= " Windows XP Professional x64 Edition";
+ }
+
+ # Test for the server type.
+ if ($producttype != VER_NT_WORKSTATION) {
+ if ($arch == PROCESSOR_ARCHITECTURE_IA64) {
+ if ($suitemask & VER_SUITE_DATACENTER) {
+ $desc .= " Datacenter Edition for Itanium-based Systems";
+ }
+ elsif ($suitemask & VER_SUITE_ENTERPRISE) {
+ $desc .= " Enterprise Edition for Itanium-based Systems";
+ }
+ }
+ elsif ($arch == PROCESSOR_ARCHITECTURE_AMD64) {
+ if ($suitemask & VER_SUITE_DATACENTER) {
+ $desc .= " Datacenter x64 Edition";
+ }
+ elsif ($suitemask & VER_SUITE_ENTERPRISE) {
+ $desc .= " Enterprise x64 Edition";
+ }
+ else {
+ $desc .= " Standard x64 Edition";
+ }
+ }
+ else {
+ if ($suitemask & VER_SUITE_COMPUTE_SERVER) {
+ $desc .= " Windows Compute Cluster Server";
+ }
+ elsif ($suitemask & VER_SUITE_DATACENTER) {
+ $desc .= " Datacenter Edition";
+ }
+ elsif ($suitemask & VER_SUITE_ENTERPRISE) {
+ $desc .= " Enterprise Edition";
+ }
+ elsif ($suitemask & VER_SUITE_BLADE) {
+ $desc .= " Web Edition";
+ }
+ elsif ($suitemask & VER_SUITE_SMALLBUSINESS_RESTRICTED) {
+ $desc .= " Small Business Server";
+ }
+ else {
+ if ($desc !~ /Windows (Home|Storage) Server/) {
+ $desc .= " Standard Edition";
+ }
+ }
+ }
+ }
+ }
+ }
+ elsif ($major == 6) {
+ if ($minor == 0) {
+ if ($producttype == VER_NT_WORKSTATION) {
+ $os = "Vista";
+ }
+ else {
+ $os = "2008";
+ }
+ }
+ elsif ($minor == 1) {
+ if ($producttype == VER_NT_WORKSTATION) {
+ $os = "7";
+ }
+ else {
+ $os = "2008";
+ $desc = "R2";
+ }
+ }
+ elsif ($minor == 2) {
+ if ($producttype == VER_NT_WORKSTATION) {
+ $os = "8";
+ }
+ else {
+ $os = "2012";
+ }
+ }
+
+ if ($productinfo == PRODUCT_ULTIMATE) {
+ $desc .= " Ultimate";
+ }
+ elsif ($productinfo == PRODUCT_HOME_PREMIUM) {
+ $desc .= " Home Premium";
+ }
+ elsif ($productinfo == PRODUCT_HOME_BASIC) {
+ $desc .= " Home Basic";
+ }
+ elsif ($productinfo == PRODUCT_ENTERPRISE) {
+ $desc .= " Enterprise";
+ }
+ elsif ($productinfo == PRODUCT_BUSINESS) {
+ # "Windows 7 Business" had a name change to "Windows 7 Professional"
+ $desc .= $minor == 0 ? " Business" : " Professional";
+ }
+ elsif ($productinfo == PRODUCT_STARTER) {
+ $desc .= " Starter";
+ }
+ elsif ($productinfo == PRODUCT_CLUSTER_SERVER) {
+ $desc .= " HPC Server";
+ }
+ elsif ($productinfo == PRODUCT_DATACENTER_SERVER) {
+ $desc .= " Datacenter";
+ }
+ elsif ($productinfo == PRODUCT_DATACENTER_SERVER_CORE) {
+ $desc .= " Datacenter Edition (core installation)";
+ }
+ elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER) {
+ $desc .= " Enterprise";
+ }
+ elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER_CORE) {
+ $desc .= " Enterprise Edition (core installation)";
+ }
+ elsif ($productinfo == PRODUCT_ENTERPRISE_SERVER_IA64) {
+ $desc .= " Enterprise Edition for Itanium-based Systems";
+ }
+ elsif ($productinfo == PRODUCT_SMALLBUSINESS_SERVER) {
+ $desc .= " Small Business Server";
+ }
+ elsif ($productinfo == PRODUCT_SMALLBUSINESS_SERVER_PREMIUM) {
+ $desc .= " Small Business Server Premium Edition";
+ }
+ elsif ($productinfo == PRODUCT_STANDARD_SERVER) {
+ $desc .= " Standard";
+ }
+ elsif ($productinfo == PRODUCT_STANDARD_SERVER_CORE) {
+ $desc .= " Standard Edition (core installation)";
+ }
+ elsif ($productinfo == PRODUCT_WEB_SERVER) {
+ $desc .= " Web Server";
+ }
+ elsif ($productinfo == PRODUCT_PROFESSIONAL) {
+ $desc .= " Professional";
+ }
+
+ if ($arch == PROCESSOR_ARCHITECTURE_INTEL) {
+ $desc .= " (32-bit)";
+ }
+ elsif ($arch == PROCESSOR_ARCHITECTURE_AMD64) {
+ $desc .= " (64-bit)";
+ }
+ }
+ }
+
+ unless (defined $os) {
+ warn "Unknown Windows version [$id:$major:$minor]";
+ return;
+ }
+
+ for ($desc) {
+ s/\s\s+/ /g;
+ s/^\s//;
+ s/\s$//;
+ }
+
+ # XXX What about "Small Business Server"? NT, 200, 2003, 2008 editions...
+
+ if ($major >= 5) {
+ # XXX XP, Vista, 7 all have starter editions
+ #push(@tags, "Starter Edition") if _GetSystemMetrics(SM_STARTER, $metrics);
+ }
+
+ if (@tags) {
+ unshift(@tags, $desc) if length $desc;
+ $desc = join(" ", @tags);
+ }
+
+ if (length $csd) {
+ $desc .= " " if length $desc;
+ $desc .= $csd;
+ }
+ return ("Win$os", $desc);
+}
+
+# "no warnings 'redefine';" doesn't work for 5.8.7 and earlier
+local $^W = 0;
+bootstrap Win32;
+
+1;
+
+__END__
+
+=head1 NAME
+
+Win32 - Interfaces to some Win32 API Functions
+
+=head1 DESCRIPTION
+
+The Win32 module contains functions to access Win32 APIs.
+
+=head2 Alphabetical Listing of Win32 Functions
+
+It is recommended to C<use Win32;> before any of these functions;
+however, for backwards compatibility, those marked as [CORE] will
+automatically do this for you.
+
+In the function descriptions below the term I<Unicode string> is used
+to indicate that the string may contain characters outside the system
+codepage. The caveat I<If supported by the core Perl version>
+generally means Perl 5.8.9 and later, though some Unicode pathname
+functionality may work on earlier versions.
+
+=over
+
+=item Win32::AbortSystemShutdown(MACHINE)
+
+Aborts a system shutdown (started by the
+InitiateSystemShutdown function) on the specified MACHINE.
+
+=item Win32::BuildNumber()
+
+[CORE] Returns the ActivePerl build number. This function is
+only available in the ActivePerl binary distribution.
+
+=item Win32::CopyFile(FROM, TO, OVERWRITE)
+
+[CORE] The Win32::CopyFile() function copies an existing file to a new
+file. All file information like creation time and file attributes will
+be copied to the new file. However it will B<not> copy the security
+information. If the destination file already exists it will only be
+overwritten when the OVERWRITE parameter is true. But even this will
+not overwrite a read-only file; you have to unlink() it first
+yourself.
+
+=item Win32::CreateDirectory(DIRECTORY)
+
+Creates the DIRECTORY and returns a true value on success. Check $^E
+on failure for extended error information.
+
+DIRECTORY may contain Unicode characters outside the system codepage.
+Once the directory has been created you can use
+Win32::GetANSIPathName() to get a name that can be passed to system
+calls and external programs.
+
+=item Win32::CreateFile(FILE)
+
+Creates the FILE and returns a true value on success. Check $^E on
+failure for extended error information.
+
+FILE may contain Unicode characters outside the system codepage. Once
+the file has been created you can use Win32::GetANSIPathName() to get
+a name that can be passed to system calls and external programs.
+
+=item Win32::DomainName()
+
+[CORE] Returns the name of the Microsoft Network domain or workgroup
+that the owner of the current perl process is logged into. The
+"Workstation" service must be running to determine this
+information. This function does B<not> work on Windows 9x.
+
+=item Win32::ExpandEnvironmentStrings(STRING)
+
+Takes STRING and replaces all referenced environment variable
+names with their defined values. References to environment variables
+take the form C<%VariableName%>. Case is ignored when looking up the
+VariableName in the environment. If the variable is not found then the
+original C<%VariableName%> text is retained. Has the same effect
+as the following:
+
+ $string =~ s/%([^%]*)%/$ENV{$1} || "%$1%"/eg
+
+However, this function may return a Unicode string if the environment
+variable being expanded hasn't been assigned to via %ENV. Access
+to %ENV is currently always using byte semantics.
+
+=item Win32::FormatMessage(ERRORCODE)
+
+[CORE] Converts the supplied Win32 error number (e.g. returned by
+Win32::GetLastError()) to a descriptive string. Analogous to the
+perror() standard-C library function. Note that C<$^E> used
+in a string context has much the same effect.
+
+ C:\> perl -e "$^E = 26; print $^E;"
+ The specified disk or diskette cannot be accessed
+
+=item Win32::FsType()
+
+[CORE] Returns the name of the filesystem of the currently active
+drive (like 'FAT' or 'NTFS'). In list context it returns three values:
+(FSTYPE, FLAGS, MAXCOMPLEN). FSTYPE is the filesystem type as
+before. FLAGS is a combination of values of the following table:
+
+ 0x00000001 supports case-sensitive filenames
+ 0x00000002 preserves the case of filenames
+ 0x00000004 supports Unicode in filenames
+ 0x00000008 preserves and enforces ACLs
+ 0x00000010 supports file-based compression
+ 0x00000020 supports disk quotas
+ 0x00000040 supports sparse files
+ 0x00000080 supports reparse points
+ 0x00000100 supports remote storage
+ 0x00008000 is a compressed volume (e.g. DoubleSpace)
+ 0x00010000 supports object identifiers
+ 0x00020000 supports the Encrypted File System (EFS)
+
+MAXCOMPLEN is the maximum length of a filename component (the part
+between two backslashes) on this file system.
+
+=item Win32::FreeLibrary(HANDLE)
+
+Unloads a previously loaded dynamic-link library. The HANDLE is
+no longer valid after this call. See L<LoadLibrary|Win32::LoadLibrary(LIBNAME)>
+for information on dynamically loading a library.
+
+=item Win32::GetACP()
+
+Returns the current Windows ANSI code page identifier for the operating
+system. See also GetOEMCP(), GetConsoleCP() and GetConsoleOutputCP().
+
+=item Win32::GetANSIPathName(FILENAME)
+
+Returns an ANSI version of FILENAME. This may be the short name
+if the long name cannot be represented in the system codepage.
+
+While not currently implemented, it is possible that in the future
+this function will convert only parts of the path to FILENAME to a
+short form.
+
+If FILENAME doesn't exist on the filesystem, or if the filesystem
+doesn't support short ANSI filenames, then this function will
+translate the Unicode name into the system codepage using replacement
+characters.
+
+=item Win32::GetArchName()
+
+Use of this function is deprecated. It is equivalent with
+$ENV{PROCESSOR_ARCHITECTURE}. This might not work on Win9X.
+
+=item Win32::GetChipName()
+
+Returns the processor type: 386, 486 or 586 for x86 processors, 8664
+for the x64 processor and 2200 for the Itanium. Since it returns the
+native processor type it will return a 64-bit processor type even when
+called from a 32-bit Perl running on 64-bit Windows.
+
+=item Win32::GetConsoleCP()
+
+Returns the input code page used by the console associated with the
+calling process. To set the console's input code page, see
+SetConsoleCP(). See also GetConsoleOutputCP(), GetACP() and
+GetOEMCP().
+
+=item Win32::GetConsoleOutputCP()
+
+Returns the output code page used by the console associated with the
+calling process. To set the console's output code page, see
+SetConsoleOutputCP(). See also GetConsoleCP(), GetACP(), and
+GetOEMCP().
+
+=item Win32::GetCwd()
+
+[CORE] Returns the current active drive and directory. This function
+does not return a UNC path, since the functionality required for such
+a feature is not available under Windows 95.
+
+If supported by the core Perl version, this function will return an
+ANSI path name for the current directory if the long pathname cannot
+be represented in the system codepage.
+
+=item Win32::GetCurrentProcessId()
+
+Returns the process identifier of the current process. Until the
+process terminates, the process identifier uniquely identifies the
+process throughout the system.
+
+The current process identifier is normally also available via the
+predefined $$ variable. Under fork() emulation however $$ may contain
+a pseudo-process identifier that is only meaningful to the Perl
+kill(), wait() and waitpid() functions. The
+Win32::GetCurrentProcessId() function will always return the regular
+Windows process id, even when called from inside a pseudo-process.
+
+=item Win32::GetCurrentThreadId()
+
+Returns the thread identifier of the calling thread. Until the thread
+terminates, the thread identifier uniquely identifies the thread
+throughout the system.
+
+=item Win32::GetFileVersion(FILENAME)
+
+Returns the file version number from the VERSIONINFO resource of
+the executable file or DLL. This is a tuple of four 16 bit numbers.
+In list context these four numbers will be returned. In scalar context
+they are concatenated into a string, separated by dots.
+
+=item Win32::GetFolderPath(FOLDER [, CREATE])
+
+Returns the full pathname of one of the Windows special folders.
+The folder will be created if it doesn't exist and the optional CREATE
+argument is true. The following FOLDER constants are defined by the
+Win32 module, but only exported on demand:
+
+ CSIDL_ADMINTOOLS
+ CSIDL_APPDATA
+ CSIDL_CDBURN_AREA
+ CSIDL_COMMON_ADMINTOOLS
+ CSIDL_COMMON_APPDATA
+ CSIDL_COMMON_DESKTOPDIRECTORY
+ CSIDL_COMMON_DOCUMENTS
+ CSIDL_COMMON_FAVORITES
+ CSIDL_COMMON_MUSIC
+ CSIDL_COMMON_PICTURES
+ CSIDL_COMMON_PROGRAMS
+ CSIDL_COMMON_STARTMENU
+ CSIDL_COMMON_STARTUP
+ CSIDL_COMMON_TEMPLATES
+ CSIDL_COMMON_VIDEO
+ CSIDL_COOKIES
+ CSIDL_DESKTOP
+ CSIDL_DESKTOPDIRECTORY
+ CSIDL_FAVORITES
+ CSIDL_FONTS
+ CSIDL_HISTORY
+ CSIDL_INTERNET_CACHE
+ CSIDL_LOCAL_APPDATA
+ CSIDL_MYMUSIC
+ CSIDL_MYPICTURES
+ CSIDL_MYVIDEO
+ CSIDL_NETHOOD
+ CSIDL_PERSONAL
+ CSIDL_PRINTHOOD
+ CSIDL_PROFILE
+ CSIDL_PROGRAMS
+ CSIDL_PROGRAM_FILES
+ CSIDL_PROGRAM_FILES_COMMON
+ CSIDL_RECENT
+ CSIDL_RESOURCES
+ CSIDL_RESOURCES_LOCALIZED
+ CSIDL_SENDTO
+ CSIDL_STARTMENU
+ CSIDL_STARTUP
+ CSIDL_SYSTEM
+ CSIDL_TEMPLATES
+ CSIDL_WINDOWS
+
+Note that not all folders are defined on all versions of Windows.
+
+Please refer to the MSDN documentation of the CSIDL constants,
+currently available at:
+
+http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp
+
+This function will return an ANSI folder path if the long name cannot
+be represented in the system codepage. Use Win32::GetLongPathName()
+on the result of Win32::GetFolderPath() if you want the Unicode
+version of the folder name.
+
+=item Win32::GetFullPathName(FILENAME)
+
+[CORE] GetFullPathName combines the FILENAME with the current drive
+and directory name and returns a fully qualified (aka, absolute)
+path name. In list context it returns two elements: (PATH, FILE) where
+PATH is the complete pathname component (including trailing backslash)
+and FILE is just the filename part. Note that no attempt is made to
+convert 8.3 components in the supplied FILENAME to longnames or
+vice-versa. Compare with Win32::GetShortPathName() and
+Win32::GetLongPathName().
+
+If supported by the core Perl version, this function will return an
+ANSI path name if the full pathname cannot be represented in the
+system codepage.
+
+=item Win32::GetLastError()
+
+[CORE] Returns the last error value generated by a call to a Win32 API
+function. Note that C<$^E> used in a numeric context amounts to the
+same value.
+
+=item Win32::GetLongPathName(PATHNAME)
+
+[CORE] Returns a representation of PATHNAME composed of longname
+components (if any). The result may not necessarily be longer
+than PATHNAME. No attempt is made to convert PATHNAME to the
+absolute path. Compare with Win32::GetShortPathName() and
+Win32::GetFullPathName().
+
+This function may return the pathname in Unicode if it cannot be
+represented in the system codepage. Use Win32::GetANSIPathName()
+before passing the path to a system call or another program.
+
+=item Win32::GetNextAvailDrive()
+
+[CORE] Returns a string in the form of "<d>:" where <d> is the first
+available drive letter.
+
+=item Win32::GetOEMCP()
+
+Returns the current original equipment manufacturer (OEM) code page
+identifier for the operating system. See also GetACP(), GetConsoleCP()
+and GetConsoleOutputCP().
+
+=item Win32::GetOSDisplayName()
+
+Returns the "marketing" name of the Windows operating system version
+being used. It returns names like these (random samples):
+
+ Windows 2000 Datacenter Server
+ Windows XP Professional
+ Windows XP Tablet PC Edition
+ Windows Home Server
+ Windows Server 2003 Enterprise Edition for Itanium-based Systems
+ Windows Vista Ultimate (32-bit)
+ Windows Small Business Server 2008 R2 (64-bit)
+
+The display name describes the native Windows version, so even on a
+32-bit Perl this function may return a "Windows ... (64-bit)" name
+when running on a 64-bit Windows.
+
+This function should only be used to display the actual OS name to the
+user; it should not be used to determine the class of operating systems
+this system belongs to. The Win32::GetOSName(), Win32::GetOSVersion,
+Win32::GetProductInfo() and Win32::GetSystemMetrics() functions provide
+the base information to check for certain capabilities, or for families
+of OS releases.
+
+=item Win32::GetOSName()
+
+In scalar context returns the name of the Win32 operating system
+being used. In list context returns a two element list of the OS name
+and whatever edition information is known about the particular build
+(for Win9X boxes) and whatever service packs have been installed.
+The latter is roughly equivalent to the first item returned by
+GetOSVersion() in list context.
+
+The description will also include tags for other special editions,
+like "R2", "Media Center", "Tablet PC", or "Starter Edition".
+
+Currently the possible values for the OS name are
+
+ WinWin32s
+ Win95
+ Win98
+ WinMe
+ WinNT3.51
+ WinNT4
+ Win2000
+ WinXP/.Net
+ Win2003
+ WinHomeSvr
+ WinVista
+ Win2008
+ Win7
+
+This routine is just a simple interface into GetOSVersion(). More
+specific or demanding situations should use that instead. Another
+option would be to use POSIX::uname(), however the latter appears to
+report only the OS family name and not the specific OS. In scalar
+context it returns just the ID.
+
+The name "WinXP/.Net" is used for historical reasons only, to maintain
+backwards compatibility of the Win32 module. Windows .NET Server has
+been renamed as Windows 2003 Server before final release and uses a
+different major/minor version number than Windows XP.
+
+Similarly the name "WinWin32s" should have been "Win32s" but has been
+kept as-is for backwards compatibility reasons too.
+
+=item Win32::GetOSVersion()
+
+[CORE] Returns the list (STRING, MAJOR, MINOR, BUILD, ID), where the
+elements are, respectively: An arbitrary descriptive string, the major
+version number of the operating system, the minor version number, the
+build number, and a digit indicating the actual operating system.
+For the ID, the values are 0 for Win32s, 1 for Windows 9X/Me and 2 for
+Windows NT/2000/XP/2003/Vista/2008/7. In scalar context it returns just
+the ID.
+
+Currently known values for ID MAJOR and MINOR are as follows:
+
+ OS ID MAJOR MINOR
+ Win32s 0 - -
+ Windows 95 1 4 0
+ Windows 98 1 4 10
+ Windows Me 1 4 90
+
+ Windows NT 3.51 2 3 51
+ Windows NT 4 2 4 0
+
+ Windows 2000 2 5 0
+ Windows XP 2 5 1
+ Windows Server 2003 2 5 2
+ Windows Server 2003 R2 2 5 2
+ Windows Home Server 2 5 2
+
+ Windows Vista 2 6 0
+ Windows Server 2008 2 6 0
+ Windows 7 2 6 1
+ Windows Server 2008 R2 2 6 1
+ Windows 8 2 6 2
+ Windows Server 2012 2 6 2
+
+On Windows NT 4 SP6 and later this function returns the following
+additional values: SPMAJOR, SPMINOR, SUITEMASK, PRODUCTTYPE.
+
+The version numbers for Windows 2003 and Windows Home Server are
+identical; the SUITEMASK field must be used to differentiate between\
+them.
+
+The version numbers for Windows Vista and Windows Server 2008 are
+identical; the PRODUCTTYPE field must be used to differentiate between
+them.
+
+The version numbers for Windows 7 and Windows Server 2008 R2 are
+identical; the PRODUCTTYPE field must be used to differentiate between
+them.
+
+The version numbers for Windows 8 and Windows Server 2012 are
+identical; the PRODUCTTYPE field must be used to differentiate between
+them.
+
+SPMAJOR and SPMINOR are are the version numbers of the latest
+installed service pack.
+
+SUITEMASK is a bitfield identifying the product suites available on
+the system. Known bits are:
+
+ VER_SUITE_SMALLBUSINESS 0x00000001
+ VER_SUITE_ENTERPRISE 0x00000002
+ VER_SUITE_BACKOFFICE 0x00000004
+ VER_SUITE_COMMUNICATIONS 0x00000008
+ VER_SUITE_TERMINAL 0x00000010
+ VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020
+ VER_SUITE_EMBEDDEDNT 0x00000040
+ VER_SUITE_DATACENTER 0x00000080
+ VER_SUITE_SINGLEUSERTS 0x00000100
+ VER_SUITE_PERSONAL 0x00000200
+ VER_SUITE_BLADE 0x00000400
+ VER_SUITE_EMBEDDED_RESTRICTED 0x00000800
+ VER_SUITE_SECURITY_APPLIANCE 0x00001000
+ VER_SUITE_STORAGE_SERVER 0x00002000
+ VER_SUITE_COMPUTE_SERVER 0x00004000
+ VER_SUITE_WH_SERVER 0x00008000
+
+The VER_SUITE_xxx names are listed here to crossreference the Microsoft
+documentation. The Win32 module does not provide symbolic names for these
+constants.
+
+PRODUCTTYPE provides additional information about the system. It should
+be one of the following integer values:
+
+ 1 - Workstation (NT 4, 2000 Pro, XP Home, XP Pro, Vista, etc)
+ 2 - Domaincontroller
+ 3 - Server (2000 Server, Server 2003, Server 2008, etc)
+
+Note that a server that is also a domain controller is reported as
+PRODUCTTYPE 2 (Domaincontroller) and not PRODUCTTYPE 3 (Server).
+
+=item Win32::GetShortPathName(PATHNAME)
+
+[CORE] Returns a representation of PATHNAME that is composed of short
+(8.3) path components where available. For path components where the
+file system has not generated the short form the returned path will
+use the long form, so this function might still for instance return a
+path containing spaces. Returns C<undef> when the PATHNAME does not
+exist. Compare with Win32::GetFullPathName() and
+Win32::GetLongPathName().
+
+=item Win32::GetSystemMetrics(INDEX)
+
+Retrieves the specified system metric or system configuration setting.
+Please refer to the Microsoft documentation of the GetSystemMetrics()
+function for a reference of available INDEX values. All system
+metrics return integer values.
+
+=item Win32::GetProcAddress(INSTANCE, PROCNAME)
+
+Returns the address of a function inside a loaded library. The
+information about what you can do with this address has been lost in
+the mist of time. Use the Win32::API module instead of this deprecated
+function.
+
+=item Win32::GetProductInfo(OSMAJOR, OSMINOR, SPMAJOR, SPMINOR)
+
+Retrieves the product type for the operating system on the local
+computer, and maps the type to the product types supported by the
+specified operating system. Please refer to the Microsoft
+documentation of the GetProductInfo() function for more information
+about the parameters and return value. This function requires Windows
+Vista or later.
+
+See also the Win32::GetOSName() and Win32::GetOSDisplayName()
+functions which provide a higher level abstraction of the data
+returned by this function.
+
+=item Win32::GetTickCount()
+
+[CORE] Returns the number of milliseconds elapsed since the last
+system boot. Resolution is limited to system timer ticks (about 10ms
+on WinNT and 55ms on Win9X).
+
+=item Win32::GuidGen()
+
+Creates a globally unique 128 bit integer that can be used as a
+persistent identifier in a distributed setting. To a very high degree
+of certainty this function returns a unique value. No other
+invocation, on the same or any other system (networked or not), should
+return the same value.
+
+The return value is formatted according to OLE conventions, as groups
+of hex digits with surrounding braces. For example:
+
+ {09531CF1-D0C7-4860-840C-1C8C8735E2AD}
+
+=item Win32::InitiateSystemShutdown
+
+(MACHINE, MESSAGE, TIMEOUT, FORCECLOSE, REBOOT)
+
+Shutsdown the specified MACHINE, notifying users with the
+supplied MESSAGE, within the specified TIMEOUT interval. Forces
+closing of all documents without prompting the user if FORCECLOSE is
+true, and reboots the machine if REBOOT is true. This function works
+only on WinNT.
+
+=item Win32::IsAdminUser()
+
+Returns non zero if the account in whose security context the
+current process/thread is running belongs to the local group of
+Administrators in the built-in system domain; returns 0 if not.
+On Windows Vista it will only return non-zero if the process is
+actually running with elevated privileges. Returns C<undef>
+and prints a warning if an error occurred. This function always
+returns 1 on Win9X.
+
+=item Win32::IsWinNT()
+
+[CORE] Returns non zero if the Win32 subsystem is Windows NT.
+
+=item Win32::IsWin95()
+
+[CORE] Returns non zero if the Win32 subsystem is Windows 95.
+
+=item Win32::LoadLibrary(LIBNAME)
+
+Loads a dynamic link library into memory and returns its module
+handle. This handle can be used with Win32::GetProcAddress() and
+Win32::FreeLibrary(). This function is deprecated. Use the Win32::API
+module instead.
+
+=item Win32::LoginName()
+
+[CORE] Returns the username of the owner of the current perl process.
+The return value may be a Unicode string.
+
+=item Win32::LookupAccountName(SYSTEM, ACCOUNT, DOMAIN, SID, SIDTYPE)
+
+Looks up ACCOUNT on SYSTEM and returns the domain name the SID and
+the SID type.
+
+=item Win32::LookupAccountSID(SYSTEM, SID, ACCOUNT, DOMAIN, SIDTYPE)
+
+Looks up SID on SYSTEM and returns the account name, domain name,
+and the SID type.
+
+=item Win32::MsgBox(MESSAGE [, FLAGS [, TITLE]])
+
+Create a dialogbox containing MESSAGE. FLAGS specifies the
+required icon and buttons according to the following table:
+
+ 0 = OK
+ 1 = OK and Cancel
+ 2 = Abort, Retry, and Ignore
+ 3 = Yes, No and Cancel
+ 4 = Yes and No
+ 5 = Retry and Cancel
+
+ MB_ICONSTOP "X" in a red circle
+ MB_ICONQUESTION question mark in a bubble
+ MB_ICONEXCLAMATION exclamation mark in a yellow triangle
+ MB_ICONINFORMATION "i" in a bubble
+
+TITLE specifies an optional window title. The default is "Perl".
+
+The function returns the menu id of the selected push button:
+
+ 0 Error
+
+ 1 OK
+ 2 Cancel
+ 3 Abort
+ 4 Retry
+ 5 Ignore
+ 6 Yes
+ 7 No
+
+=item Win32::NodeName()
+
+[CORE] Returns the Microsoft Network node-name of the current machine.
+
+=item Win32::OutputDebugString(STRING)
+
+Sends a string to the application or system debugger for display.
+The function does nothing if there is no active debugger.
+
+Alternatively one can use the I<Debug Viewer> application to
+watch the OutputDebugString() output:
+
+http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx
+
+=item Win32::RegisterServer(LIBRARYNAME)
+
+Loads the DLL LIBRARYNAME and calls the function DllRegisterServer.
+
+=item Win32::SetChildShowWindow(SHOWWINDOW)
+
+[CORE] Sets the I<ShowMode> of child processes started by system().
+By default system() will create a new console window for child
+processes if Perl itself is not running from a console. Calling
+SetChildShowWindow(0) will make these new console windows invisible.
+Calling SetChildShowWindow() without arguments reverts system() to the
+default behavior. The return value of SetChildShowWindow() is the
+previous setting or C<undef>.
+
+The following symbolic constants for SHOWWINDOW are available
+(but not exported) from the Win32 module: SW_HIDE, SW_SHOWNORMAL,
+SW_SHOWMINIMIZED, SW_SHOWMAXIMIZED and SW_SHOWNOACTIVATE.
+
+=item Win32::SetConsoleCP(ID)
+
+Sets the input code page used by the console associated with the
+calling process. The return value of SetConsoleCP() is nonzero on
+success or zero on failure. To get the console's input code page, see
+GetConsoleCP().
+
+=item Win32::SetConsoleOutputCP(ID)
+
+Sets the output code page used by the console associated with the
+calling process. The return value of SetConsoleOutputCP() is nonzero on
+success or zero on failure. To get the console's output code page, see
+GetConsoleOutputCP().
+
+=item Win32::SetCwd(NEWDIRECTORY)
+
+[CORE] Sets the current active drive and directory. This function does not
+work with UNC paths, since the functionality required to required for
+such a feature is not available under Windows 95.
+
+=item Win32::SetLastError(ERROR)
+
+[CORE] Sets the value of the last error encountered to ERROR. This is
+that value that will be returned by the Win32::GetLastError()
+function.
+
+=item Win32::Sleep(TIME)
+
+[CORE] Pauses for TIME milliseconds. The timeslices are made available
+to other processes and threads.
+
+=item Win32::Spawn(COMMAND, ARGS, PID)
+
+[CORE] Spawns a new process using the supplied COMMAND, passing in
+arguments in the string ARGS. The pid of the new process is stored in
+PID. This function is deprecated. Please use the Win32::Process module
+instead.
+
+=item Win32::UnregisterServer(LIBRARYNAME)
+
+Loads the DLL LIBRARYNAME and calls the function
+DllUnregisterServer.
+
+=back
+
+=cut
diff --git a/gnu/usr.bin/perl/cpan/Win32/Win32.xs b/gnu/usr.bin/perl/cpan/Win32/Win32.xs
index 8af0e888c6a..1f573eb1b0d 100644
--- a/gnu/usr.bin/perl/cpan/Win32/Win32.xs
+++ b/gnu/usr.bin/perl/cpan/Win32/Win32.xs
@@ -1,1775 +1,1829 @@
-#include <wctype.h>
-#include <windows.h>
-#include <shlobj.h>
-
-#define PERL_NO_GET_CONTEXT
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#ifndef countof
-# define countof(array) (sizeof (array) / sizeof (*(array)))
-#endif
-
-#define SE_SHUTDOWN_NAMEA "SeShutdownPrivilege"
-
-#ifndef WC_NO_BEST_FIT_CHARS
-# define WC_NO_BEST_FIT_CHARS 0x00000400
-#endif
-
-#define GETPROC(fn) pfn##fn = (PFN##fn)GetProcAddress(module, #fn)
-
-typedef BOOL (WINAPI *PFNSHGetSpecialFolderPathA)(HWND, char*, int, BOOL);
-typedef BOOL (WINAPI *PFNSHGetSpecialFolderPathW)(HWND, WCHAR*, int, BOOL);
-typedef HRESULT (WINAPI *PFNSHGetFolderPathA)(HWND, int, HANDLE, DWORD, LPTSTR);
-typedef HRESULT (WINAPI *PFNSHGetFolderPathW)(HWND, int, HANDLE, DWORD, LPWSTR);
-typedef BOOL (WINAPI *PFNCreateEnvironmentBlock)(void**, HANDLE, BOOL);
-typedef BOOL (WINAPI *PFNDestroyEnvironmentBlock)(void*);
-typedef int (__stdcall *PFNDllRegisterServer)(void);
-typedef int (__stdcall *PFNDllUnregisterServer)(void);
-typedef DWORD (__stdcall *PFNNetApiBufferFree)(void*);
-typedef DWORD (__stdcall *PFNNetWkstaGetInfo)(LPWSTR, DWORD, void*);
-
-typedef BOOL (__stdcall *PFNOpenProcessToken)(HANDLE, DWORD, HANDLE*);
-typedef BOOL (__stdcall *PFNOpenThreadToken)(HANDLE, DWORD, BOOL, HANDLE*);
-typedef BOOL (__stdcall *PFNGetTokenInformation)(HANDLE, TOKEN_INFORMATION_CLASS, void*, DWORD, DWORD*);
-typedef BOOL (__stdcall *PFNAllocateAndInitializeSid)(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD,
- DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*);
-typedef BOOL (__stdcall *PFNEqualSid)(PSID, PSID);
-typedef void* (__stdcall *PFNFreeSid)(PSID);
-typedef BOOL (__stdcall *PFNIsUserAnAdmin)(void);
-typedef BOOL (WINAPI *PFNGetProductInfo)(DWORD, DWORD, DWORD, DWORD, DWORD*);
-typedef void (WINAPI *PFNGetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);
-
-#ifndef CSIDL_MYMUSIC
-# define CSIDL_MYMUSIC 0x000D
-#endif
-#ifndef CSIDL_MYVIDEO
-# define CSIDL_MYVIDEO 0x000E
-#endif
-#ifndef CSIDL_LOCAL_APPDATA
-# define CSIDL_LOCAL_APPDATA 0x001C
-#endif
-#ifndef CSIDL_COMMON_FAVORITES
-# define CSIDL_COMMON_FAVORITES 0x001F
-#endif
-#ifndef CSIDL_INTERNET_CACHE
-# define CSIDL_INTERNET_CACHE 0x0020
-#endif
-#ifndef CSIDL_COOKIES
-# define CSIDL_COOKIES 0x0021
-#endif
-#ifndef CSIDL_HISTORY
-# define CSIDL_HISTORY 0x0022
-#endif
-#ifndef CSIDL_COMMON_APPDATA
-# define CSIDL_COMMON_APPDATA 0x0023
-#endif
-#ifndef CSIDL_WINDOWS
-# define CSIDL_WINDOWS 0x0024
-#endif
-#ifndef CSIDL_PROGRAM_FILES
-# define CSIDL_PROGRAM_FILES 0x0026
-#endif
-#ifndef CSIDL_MYPICTURES
-# define CSIDL_MYPICTURES 0x0027
-#endif
-#ifndef CSIDL_PROFILE
-# define CSIDL_PROFILE 0x0028
-#endif
-#ifndef CSIDL_PROGRAM_FILES_COMMON
-# define CSIDL_PROGRAM_FILES_COMMON 0x002B
-#endif
-#ifndef CSIDL_COMMON_TEMPLATES
-# define CSIDL_COMMON_TEMPLATES 0x002D
-#endif
-#ifndef CSIDL_COMMON_DOCUMENTS
-# define CSIDL_COMMON_DOCUMENTS 0x002E
-#endif
-#ifndef CSIDL_COMMON_ADMINTOOLS
-# define CSIDL_COMMON_ADMINTOOLS 0x002F
-#endif
-#ifndef CSIDL_ADMINTOOLS
-# define CSIDL_ADMINTOOLS 0x0030
-#endif
-#ifndef CSIDL_COMMON_MUSIC
-# define CSIDL_COMMON_MUSIC 0x0035
-#endif
-#ifndef CSIDL_COMMON_PICTURES
-# define CSIDL_COMMON_PICTURES 0x0036
-#endif
-#ifndef CSIDL_COMMON_VIDEO
-# define CSIDL_COMMON_VIDEO 0x0037
-#endif
-#ifndef CSIDL_CDBURN_AREA
-# define CSIDL_CDBURN_AREA 0x003B
-#endif
-#ifndef CSIDL_FLAG_CREATE
-# define CSIDL_FLAG_CREATE 0x8000
-#endif
-
-/* Use explicit struct definition because wSuiteMask and
- * wProductType are not defined in the VC++ 6.0 headers.
- * WORD type has been replaced by unsigned short because
- * WORD is already used by Perl itself.
- */
-struct {
- DWORD dwOSVersionInfoSize;
- DWORD dwMajorVersion;
- DWORD dwMinorVersion;
- DWORD dwBuildNumber;
- DWORD dwPlatformId;
- CHAR szCSDVersion[128];
- unsigned short wServicePackMajor;
- unsigned short wServicePackMinor;
- unsigned short wSuiteMask;
- BYTE wProductType;
- BYTE wReserved;
-} g_osver = {0, 0, 0, 0, 0, "", 0, 0, 0, 0, 0};
-BOOL g_osver_ex = TRUE;
-
-#define ONE_K_BUFSIZE 1024
-
-int
-IsWin95(void)
-{
- return (g_osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS);
-}
-
-int
-IsWinNT(void)
-{
- return (g_osver.dwPlatformId == VER_PLATFORM_WIN32_NT);
-}
-
-int
-IsWin2000(void)
-{
- return (g_osver.dwMajorVersion > 4);
-}
-
-/* Convert SV to wide character string. The return value must be
- * freed using Safefree().
- */
-WCHAR*
-sv_to_wstr(pTHX_ SV *sv)
-{
- DWORD wlen;
- WCHAR *wstr;
- STRLEN len;
- char *str = SvPV(sv, len);
- UINT cp = SvUTF8(sv) ? CP_UTF8 : CP_ACP;
-
- wlen = MultiByteToWideChar(cp, 0, str, (int)(len+1), NULL, 0);
- New(0, wstr, wlen, WCHAR);
- MultiByteToWideChar(cp, 0, str, (int)(len+1), wstr, wlen);
-
- return wstr;
-}
-
-/* Convert wide character string to mortal SV. Use UTF8 encoding
- * if the string cannot be represented in the system codepage.
- */
-SV *
-wstr_to_sv(pTHX_ WCHAR *wstr)
-{
- int wlen = (int)wcslen(wstr)+1;
- BOOL use_default = FALSE;
- int len = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, wstr, wlen, NULL, 0, NULL, NULL);
- SV *sv = sv_2mortal(newSV(len));
-
- len = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, wstr, wlen, SvPVX(sv), len, NULL, &use_default);
- if (use_default) {
- len = WideCharToMultiByte(CP_UTF8, 0, wstr, wlen, NULL, 0, NULL, NULL);
- sv_grow(sv, len);
- len = WideCharToMultiByte(CP_UTF8, 0, wstr, wlen, SvPVX(sv), len, NULL, NULL);
- SvUTF8_on(sv);
- }
- /* Shouldn't really ever fail since we ask for the required length first, but who knows... */
- if (len) {
- SvPOK_on(sv);
- SvCUR_set(sv, len-1);
- }
- return sv;
-}
-
-/* Retrieve a variable from the Unicode environment in a mortal SV.
- *
- * Recreates the Unicode environment because a bug in earlier Perl versions
- * overwrites it with the ANSI version, which contains replacement
- * characters for the characters not in the ANSI codepage.
- */
-SV*
-get_unicode_env(pTHX_ WCHAR *name)
-{
- SV *sv = NULL;
- void *env;
- HANDLE token;
- HMODULE module;
- PFNOpenProcessToken pfnOpenProcessToken;
-
- /* Get security token for the current process owner */
- module = LoadLibrary("advapi32.dll");
- if (!module)
- return NULL;
-
- GETPROC(OpenProcessToken);
-
- if (pfnOpenProcessToken == NULL ||
- !pfnOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_DUPLICATE, &token))
- {
- FreeLibrary(module);
- return NULL;
- }
- FreeLibrary(module);
-
- /* Create a Unicode environment block for this process */
- module = LoadLibrary("userenv.dll");
- if (module) {
- PFNCreateEnvironmentBlock pfnCreateEnvironmentBlock;
- PFNDestroyEnvironmentBlock pfnDestroyEnvironmentBlock;
-
- GETPROC(CreateEnvironmentBlock);
- GETPROC(DestroyEnvironmentBlock);
-
- if (pfnCreateEnvironmentBlock && pfnDestroyEnvironmentBlock &&
- pfnCreateEnvironmentBlock(&env, token, FALSE))
- {
- size_t name_len = wcslen(name);
- WCHAR *entry = env;
- while (*entry) {
- size_t i;
- size_t entry_len = wcslen(entry);
- BOOL equal = (entry_len > name_len) && (entry[name_len] == '=');
-
- for (i=0; equal && i < name_len; ++i)
- equal = (towupper(entry[i]) == towupper(name[i]));
-
- if (equal) {
- sv = wstr_to_sv(aTHX_ entry+name_len+1);
- break;
- }
- entry += entry_len+1;
- }
- pfnDestroyEnvironmentBlock(env);
- }
- FreeLibrary(module);
- }
- CloseHandle(token);
- return sv;
-}
-
-/* Define both an ANSI and a Wide version of win32_longpath */
-
-#define CHAR_T char
-#define WIN32_FIND_DATA_T WIN32_FIND_DATAA
-#define FN_FINDFIRSTFILE FindFirstFileA
-#define FN_STRLEN strlen
-#define FN_STRCPY strcpy
-#define LONGPATH my_longpathA
-#include "longpath.inc"
-
-#define CHAR_T WCHAR
-#define WIN32_FIND_DATA_T WIN32_FIND_DATAW
-#define FN_FINDFIRSTFILE FindFirstFileW
-#define FN_STRLEN wcslen
-#define FN_STRCPY wcscpy
-#define LONGPATH my_longpathW
-#include "longpath.inc"
-
-/* The my_ansipath() function takes a Unicode filename and converts it
- * into the current Windows codepage. If some characters cannot be mapped,
- * then it will convert the short name instead.
- *
- * The buffer to the ansi pathname must be freed with Safefree() when it
- * it no longer needed.
- *
- * The argument to my_ansipath() must exist before this function is
- * called; otherwise there is no way to determine the short path name.
- *
- * Ideas for future refinement:
- * - Only convert those segments of the path that are not in the current
- * codepage, but leave the other segments in their long form.
- * - If the resulting name is longer than MAX_PATH, start converting
- * additional path segments into short names until the full name
- * is shorter than MAX_PATH. Shorten the filename part last!
- */
-
-/* This is a modified version of core Perl win32/win32.c(win32_ansipath).
- * It uses New() etc. instead of win32_malloc().
- */
-
-char *
-my_ansipath(const WCHAR *widename)
-{
- char *name;
- BOOL use_default = FALSE;
- int widelen = (int)wcslen(widename)+1;
- int len = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, widename, widelen,
- NULL, 0, NULL, NULL);
- New(0, name, len, char);
- WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, widename, widelen,
- name, len, NULL, &use_default);
- if (use_default) {
- DWORD shortlen = GetShortPathNameW(widename, NULL, 0);
- if (shortlen) {
- WCHAR *shortname;
- New(0, shortname, shortlen, WCHAR);
- shortlen = GetShortPathNameW(widename, shortname, shortlen)+1;
-
- len = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, shortname, shortlen,
- NULL, 0, NULL, NULL);
- Renew(name, len, char);
- WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, shortname, shortlen,
- name, len, NULL, NULL);
- Safefree(shortname);
- }
- }
- return name;
-}
-
-/* Convert wide character path to ANSI path and return as mortal SV. */
-SV*
-wstr_to_ansipath(pTHX_ WCHAR *wstr)
-{
- char *ansi = my_ansipath(wstr);
- SV *sv = sv_2mortal(newSVpvn(ansi, strlen(ansi)));
- Safefree(ansi);
- return sv;
-}
-
-#ifdef __CYGWIN__
-
-char*
-get_childdir(void)
-{
- dTHX;
- char* ptr;
-
- if (IsWin2000()) {
- WCHAR filename[MAX_PATH+1];
- GetCurrentDirectoryW(MAX_PATH+1, filename);
- ptr = my_ansipath(filename);
- }
- else {
- char filename[MAX_PATH+1];
- GetCurrentDirectoryA(MAX_PATH+1, filename);
- New(0, ptr, strlen(filename)+1, char);
- strcpy(ptr, filename);
- }
- return ptr;
-}
-
-void
-free_childdir(char *d)
-{
- dTHX;
- Safefree(d);
-}
-
-void*
-get_childenv(void)
-{
- return NULL;
-}
-
-void
-free_childenv(void *d)
-{
-}
-
-# define PerlDir_mapA(dir) (dir)
-
-#endif
-
-XS(w32_ExpandEnvironmentStrings)
-{
- dXSARGS;
-
- if (items != 1)
- croak("usage: Win32::ExpandEnvironmentStrings($String);\n");
-
- if (IsWin2000()) {
- WCHAR value[31*1024];
- WCHAR *source = sv_to_wstr(aTHX_ ST(0));
- ExpandEnvironmentStringsW(source, value, countof(value)-1);
- ST(0) = wstr_to_sv(aTHX_ value);
- Safefree(source);
- XSRETURN(1);
- }
- else {
- char value[31*1024];
- ExpandEnvironmentStringsA(SvPV_nolen(ST(0)), value, countof(value)-2);
- XSRETURN_PV(value);
- }
-}
-
-XS(w32_IsAdminUser)
-{
- dXSARGS;
- HMODULE module;
- PFNIsUserAnAdmin pfnIsUserAnAdmin;
- PFNOpenThreadToken pfnOpenThreadToken;
- PFNOpenProcessToken pfnOpenProcessToken;
- PFNGetTokenInformation pfnGetTokenInformation;
- PFNAllocateAndInitializeSid pfnAllocateAndInitializeSid;
- PFNEqualSid pfnEqualSid;
- PFNFreeSid pfnFreeSid;
- HANDLE hTok;
- DWORD dwTokInfoLen;
- TOKEN_GROUPS *lpTokInfo;
- SID_IDENTIFIER_AUTHORITY NtAuth = SECURITY_NT_AUTHORITY;
- PSID pAdminSid;
- int iRetVal;
- unsigned int i;
-
- if (items)
- croak("usage: Win32::IsAdminUser()");
-
- /* There is no concept of "Administrator" user accounts on Win9x systems,
- so just return true. */
- if (IsWin95())
- XSRETURN_YES;
-
- /* Use IsUserAnAdmin() when available. On Vista this will only return TRUE
- * if the process is running with elevated privileges and not just when the
- * process owner is a member of the "Administrators" group.
- */
- module = LoadLibrary("shell32.dll");
- if (module) {
- GETPROC(IsUserAnAdmin);
- if (pfnIsUserAnAdmin) {
- EXTEND(SP, 1);
- ST(0) = sv_2mortal(newSViv(pfnIsUserAnAdmin() ? 1 : 0));
- FreeLibrary(module);
- XSRETURN(1);
- }
- FreeLibrary(module);
- }
-
- module = LoadLibrary("advapi32.dll");
- if (!module) {
- warn("Cannot load advapi32.dll library");
- XSRETURN_UNDEF;
- }
-
- GETPROC(OpenThreadToken);
- GETPROC(OpenProcessToken);
- GETPROC(GetTokenInformation);
- GETPROC(AllocateAndInitializeSid);
- GETPROC(EqualSid);
- GETPROC(FreeSid);
-
- if (!(pfnOpenThreadToken && pfnOpenProcessToken &&
- pfnGetTokenInformation && pfnAllocateAndInitializeSid &&
- pfnEqualSid && pfnFreeSid))
- {
- warn("Cannot load functions from advapi32.dll library");
- FreeLibrary(module);
- XSRETURN_UNDEF;
- }
-
- if (!pfnOpenThreadToken(GetCurrentThread(), TOKEN_QUERY, FALSE, &hTok)) {
- if (!pfnOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hTok)) {
- warn("Cannot open thread token or process token");
- FreeLibrary(module);
- XSRETURN_UNDEF;
- }
- }
-
- pfnGetTokenInformation(hTok, TokenGroups, NULL, 0, &dwTokInfoLen);
- if (!New(1, lpTokInfo, dwTokInfoLen, TOKEN_GROUPS)) {
- warn("Cannot allocate token information structure");
- CloseHandle(hTok);
- FreeLibrary(module);
- XSRETURN_UNDEF;
- }
-
- if (!pfnGetTokenInformation(hTok, TokenGroups, lpTokInfo, dwTokInfoLen,
- &dwTokInfoLen))
- {
- warn("Cannot get token information");
- Safefree(lpTokInfo);
- CloseHandle(hTok);
- FreeLibrary(module);
- XSRETURN_UNDEF;
- }
-
- if (!pfnAllocateAndInitializeSid(&NtAuth, 2, SECURITY_BUILTIN_DOMAIN_RID,
- DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &pAdminSid))
- {
- warn("Cannot allocate administrators' SID");
- Safefree(lpTokInfo);
- CloseHandle(hTok);
- FreeLibrary(module);
- XSRETURN_UNDEF;
- }
-
- iRetVal = 0;
- for (i = 0; i < lpTokInfo->GroupCount; ++i) {
- if (pfnEqualSid(lpTokInfo->Groups[i].Sid, pAdminSid)) {
- iRetVal = 1;
- break;
- }
- }
-
- pfnFreeSid(pAdminSid);
- Safefree(lpTokInfo);
- CloseHandle(hTok);
- FreeLibrary(module);
-
- EXTEND(SP, 1);
- ST(0) = sv_2mortal(newSViv(iRetVal));
- XSRETURN(1);
-}
-
-XS(w32_LookupAccountName)
-{
- dXSARGS;
- char SID[400];
- DWORD SIDLen;
- SID_NAME_USE snu;
- char Domain[256];
- DWORD DomLen;
- BOOL bResult;
-
- if (items != 5)
- croak("usage: Win32::LookupAccountName($system, $account, $domain, "
- "$sid, $sidtype);\n");
-
- SIDLen = sizeof(SID);
- DomLen = sizeof(Domain);
-
- bResult = LookupAccountNameA(SvPV_nolen(ST(0)), /* System */
- SvPV_nolen(ST(1)), /* Account name */
- &SID, /* SID structure */
- &SIDLen, /* Size of SID buffer */
- Domain, /* Domain buffer */
- &DomLen, /* Domain buffer size */
- &snu); /* SID name type */
- if (bResult) {
- sv_setpv(ST(2), Domain);
- sv_setpvn(ST(3), SID, SIDLen);
- sv_setiv(ST(4), snu);
- XSRETURN_YES;
- }
- XSRETURN_NO;
-}
-
-
-XS(w32_LookupAccountSID)
-{
- dXSARGS;
- PSID sid;
- char Account[256];
- DWORD AcctLen = sizeof(Account);
- char Domain[256];
- DWORD DomLen = sizeof(Domain);
- SID_NAME_USE snu;
- BOOL bResult;
-
- if (items != 5)
- croak("usage: Win32::LookupAccountSID($system, $sid, $account, $domain, $sidtype);\n");
-
- sid = SvPV_nolen(ST(1));
- if (IsValidSid(sid)) {
- bResult = LookupAccountSidA(SvPV_nolen(ST(0)), /* System */
- sid, /* SID structure */
- Account, /* Account name buffer */
- &AcctLen, /* name buffer length */
- Domain, /* Domain buffer */
- &DomLen, /* Domain buffer length */
- &snu); /* SID name type */
- if (bResult) {
- sv_setpv(ST(2), Account);
- sv_setpv(ST(3), Domain);
- sv_setiv(ST(4), (IV)snu);
- XSRETURN_YES;
- }
- }
- XSRETURN_NO;
-}
-
-XS(w32_InitiateSystemShutdown)
-{
- dXSARGS;
- HANDLE hToken; /* handle to process token */
- TOKEN_PRIVILEGES tkp; /* pointer to token structure */
- BOOL bRet;
- char *machineName, *message;
-
- if (items != 5)
- croak("usage: Win32::InitiateSystemShutdown($machineName, $message, "
- "$timeOut, $forceClose, $reboot);\n");
-
- machineName = SvPV_nolen(ST(0));
-
- if (OpenProcessToken(GetCurrentProcess(),
- TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
- &hToken))
- {
- LookupPrivilegeValueA(machineName,
- SE_SHUTDOWN_NAMEA,
- &tkp.Privileges[0].Luid);
-
- tkp.PrivilegeCount = 1; /* only setting one */
- tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
-
- /* Get shutdown privilege for this process. */
- AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
- (PTOKEN_PRIVILEGES)NULL, 0);
- }
-
- message = SvPV_nolen(ST(1));
- bRet = InitiateSystemShutdownA(machineName, message, (DWORD)SvIV(ST(2)),
- (BOOL)SvIV(ST(3)), (BOOL)SvIV(ST(4)));
-
- /* Disable shutdown privilege. */
- tkp.Privileges[0].Attributes = 0;
- AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
- (PTOKEN_PRIVILEGES)NULL, 0);
- CloseHandle(hToken);
- XSRETURN_IV(bRet);
-}
-
-XS(w32_AbortSystemShutdown)
-{
- dXSARGS;
- HANDLE hToken; /* handle to process token */
- TOKEN_PRIVILEGES tkp; /* pointer to token structure */
- BOOL bRet;
- char *machineName;
-
- if (items != 1)
- croak("usage: Win32::AbortSystemShutdown($machineName);\n");
-
- machineName = SvPV_nolen(ST(0));
-
- if (OpenProcessToken(GetCurrentProcess(),
- TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
- &hToken))
- {
- LookupPrivilegeValueA(machineName,
- SE_SHUTDOWN_NAMEA,
- &tkp.Privileges[0].Luid);
-
- tkp.PrivilegeCount = 1; /* only setting one */
- tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
-
- /* Get shutdown privilege for this process. */
- AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
- (PTOKEN_PRIVILEGES)NULL, 0);
- }
-
- bRet = AbortSystemShutdownA(machineName);
-
- /* Disable shutdown privilege. */
- tkp.Privileges[0].Attributes = 0;
- AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
- (PTOKEN_PRIVILEGES)NULL, 0);
- CloseHandle(hToken);
- XSRETURN_IV(bRet);
-}
-
-
-XS(w32_MsgBox)
-{
- dXSARGS;
- DWORD flags = MB_ICONEXCLAMATION;
- I32 result;
-
- if (items < 1 || items > 3)
- croak("usage: Win32::MsgBox($message [, $flags [, $title]]);\n");
-
- if (items > 1)
- flags = (DWORD)SvIV(ST(1));
-
- if (IsWin2000()) {
- WCHAR *title = NULL;
- WCHAR *msg = sv_to_wstr(aTHX_ ST(0));
- if (items > 2)
- title = sv_to_wstr(aTHX_ ST(2));
- result = MessageBoxW(GetActiveWindow(), msg, title ? title : L"Perl", flags);
- Safefree(msg);
- if (title)
- Safefree(title);
- }
- else {
- char *title = "Perl";
- char *msg = SvPV_nolen(ST(0));
- if (items > 2)
- title = SvPV_nolen(ST(2));
- result = MessageBoxA(GetActiveWindow(), msg, title, flags);
- }
- XSRETURN_IV(result);
-}
-
-XS(w32_LoadLibrary)
-{
- dXSARGS;
- HANDLE hHandle;
-
- if (items != 1)
- croak("usage: Win32::LoadLibrary($libname)\n");
- hHandle = LoadLibraryA(SvPV_nolen(ST(0)));
-#ifdef _WIN64
- XSRETURN_IV((DWORD_PTR)hHandle);
-#else
- XSRETURN_IV((DWORD)hHandle);
-#endif
-}
-
-XS(w32_FreeLibrary)
-{
- dXSARGS;
-
- if (items != 1)
- croak("usage: Win32::FreeLibrary($handle)\n");
- if (FreeLibrary(INT2PTR(HINSTANCE, SvIV(ST(0))))) {
- XSRETURN_YES;
- }
- XSRETURN_NO;
-}
-
-XS(w32_GetProcAddress)
-{
- dXSARGS;
-
- if (items != 2)
- croak("usage: Win32::GetProcAddress($hinstance, $procname)\n");
- XSRETURN_IV(PTR2IV(GetProcAddress(INT2PTR(HINSTANCE, SvIV(ST(0))), SvPV_nolen(ST(1)))));
-}
-
-XS(w32_RegisterServer)
-{
- dXSARGS;
- BOOL result = FALSE;
- HMODULE module;
-
- if (items != 1)
- croak("usage: Win32::RegisterServer($libname)\n");
-
- module = LoadLibraryA(SvPV_nolen(ST(0)));
- if (module) {
- PFNDllRegisterServer pfnDllRegisterServer;
- GETPROC(DllRegisterServer);
- if (pfnDllRegisterServer && pfnDllRegisterServer() == 0)
- result = TRUE;
- FreeLibrary(module);
- }
- ST(0) = boolSV(result);
- XSRETURN(1);
-}
-
-XS(w32_UnregisterServer)
-{
- dXSARGS;
- BOOL result = FALSE;
- HINSTANCE module;
-
- if (items != 1)
- croak("usage: Win32::UnregisterServer($libname)\n");
-
- module = LoadLibraryA(SvPV_nolen(ST(0)));
- if (module) {
- PFNDllUnregisterServer pfnDllUnregisterServer;
- GETPROC(DllUnregisterServer);
- if (pfnDllUnregisterServer && pfnDllUnregisterServer() == 0)
- result = TRUE;
- FreeLibrary(module);
- }
- ST(0) = boolSV(result);
- XSRETURN(1);
-}
-
-/* XXX rather bogus */
-XS(w32_GetArchName)
-{
- dXSARGS;
- XSRETURN_PV(getenv("PROCESSOR_ARCHITECTURE"));
-}
-
-XS(w32_GetChipName)
-{
- dXSARGS;
- SYSTEM_INFO sysinfo;
- HMODULE module;
- PFNGetNativeSystemInfo pfnGetNativeSystemInfo;
-
- Zero(&sysinfo,1,SYSTEM_INFO);
- module = GetModuleHandle("kernel32.dll");
- GETPROC(GetNativeSystemInfo);
- if (pfnGetNativeSystemInfo)
- pfnGetNativeSystemInfo(&sysinfo);
- else
- GetSystemInfo(&sysinfo);
-
- /* XXX docs say dwProcessorType is deprecated on NT */
- XSRETURN_IV(sysinfo.dwProcessorType);
-}
-
-XS(w32_GuidGen)
-{
- dXSARGS;
- GUID guid;
- char szGUID[50] = {'\0'};
- HRESULT hr = CoCreateGuid(&guid);
-
- if (SUCCEEDED(hr)) {
- LPOLESTR pStr = NULL;
- if (SUCCEEDED(StringFromCLSID(&guid, &pStr))) {
- WideCharToMultiByte(CP_ACP, 0, pStr, (int)wcslen(pStr), szGUID,
- sizeof(szGUID), NULL, NULL);
- CoTaskMemFree(pStr);
- XSRETURN_PV(szGUID);
- }
- }
- XSRETURN_UNDEF;
-}
-
-XS(w32_GetFolderPath)
-{
- dXSARGS;
- char path[MAX_PATH+1];
- WCHAR wpath[MAX_PATH+1];
- int folder;
- int create = 0;
- HMODULE module;
-
- if (items != 1 && items != 2)
- croak("usage: Win32::GetFolderPath($csidl [, $create])\n");
-
- folder = (int)SvIV(ST(0));
- if (items == 2)
- create = SvTRUE(ST(1)) ? CSIDL_FLAG_CREATE : 0;
-
- module = LoadLibrary("shfolder.dll");
- if (module) {
- PFNSHGetFolderPathA pfna;
- if (IsWin2000()) {
- PFNSHGetFolderPathW pfnw;
- pfnw = (PFNSHGetFolderPathW)GetProcAddress(module, "SHGetFolderPathW");
- if (pfnw && SUCCEEDED(pfnw(NULL, folder|create, NULL, 0, wpath))) {
- FreeLibrary(module);
- ST(0) = wstr_to_ansipath(aTHX_ wpath);
- XSRETURN(1);
- }
- }
- pfna = (PFNSHGetFolderPathA)GetProcAddress(module, "SHGetFolderPathA");
- if (pfna && SUCCEEDED(pfna(NULL, folder|create, NULL, 0, path))) {
- FreeLibrary(module);
- XSRETURN_PV(path);
- }
- FreeLibrary(module);
- }
-
- module = LoadLibrary("shell32.dll");
- if (module) {
- PFNSHGetSpecialFolderPathA pfna;
- if (IsWin2000()) {
- PFNSHGetSpecialFolderPathW pfnw;
- pfnw = (PFNSHGetSpecialFolderPathW)GetProcAddress(module, "SHGetSpecialFolderPathW");
- if (pfnw && pfnw(NULL, wpath, folder, !!create)) {
- FreeLibrary(module);
- ST(0) = wstr_to_ansipath(aTHX_ wpath);
- XSRETURN(1);
- }
- }
- pfna = (PFNSHGetSpecialFolderPathA)GetProcAddress(module, "SHGetSpecialFolderPathA");
- if (pfna && pfna(NULL, path, folder, !!create)) {
- FreeLibrary(module);
- XSRETURN_PV(path);
- }
- FreeLibrary(module);
- }
-
- /* SHGetFolderPathW() and SHGetSpecialFolderPathW() may fail on older
- * Perl versions that have replaced the Unicode environment with an
- * ANSI version. Let's go spelunking in the registry now...
- */
- if (IsWin2000()) {
- SV *sv;
- HKEY hkey;
- HKEY root = HKEY_CURRENT_USER;
- WCHAR *name = NULL;
-
- switch (folder) {
- case CSIDL_ADMINTOOLS: name = L"Administrative Tools"; break;
- case CSIDL_APPDATA: name = L"AppData"; break;
- case CSIDL_CDBURN_AREA: name = L"CD Burning"; break;
- case CSIDL_COOKIES: name = L"Cookies"; break;
- case CSIDL_DESKTOP:
- case CSIDL_DESKTOPDIRECTORY: name = L"Desktop"; break;
- case CSIDL_FAVORITES: name = L"Favorites"; break;
- case CSIDL_FONTS: name = L"Fonts"; break;
- case CSIDL_HISTORY: name = L"History"; break;
- case CSIDL_INTERNET_CACHE: name = L"Cache"; break;
- case CSIDL_LOCAL_APPDATA: name = L"Local AppData"; break;
- case CSIDL_MYMUSIC: name = L"My Music"; break;
- case CSIDL_MYPICTURES: name = L"My Pictures"; break;
- case CSIDL_MYVIDEO: name = L"My Video"; break;
- case CSIDL_NETHOOD: name = L"NetHood"; break;
- case CSIDL_PERSONAL: name = L"Personal"; break;
- case CSIDL_PRINTHOOD: name = L"PrintHood"; break;
- case CSIDL_PROGRAMS: name = L"Programs"; break;
- case CSIDL_RECENT: name = L"Recent"; break;
- case CSIDL_SENDTO: name = L"SendTo"; break;
- case CSIDL_STARTMENU: name = L"Start Menu"; break;
- case CSIDL_STARTUP: name = L"Startup"; break;
- case CSIDL_TEMPLATES: name = L"Templates"; break;
- /* XXX L"Local Settings" */
- }
-
- if (!name) {
- root = HKEY_LOCAL_MACHINE;
- switch (folder) {
- case CSIDL_COMMON_ADMINTOOLS: name = L"Common Administrative Tools"; break;
- case CSIDL_COMMON_APPDATA: name = L"Common AppData"; break;
- case CSIDL_COMMON_DESKTOPDIRECTORY: name = L"Common Desktop"; break;
- case CSIDL_COMMON_DOCUMENTS: name = L"Common Documents"; break;
- case CSIDL_COMMON_FAVORITES: name = L"Common Favorites"; break;
- case CSIDL_COMMON_PROGRAMS: name = L"Common Programs"; break;
- case CSIDL_COMMON_STARTMENU: name = L"Common Start Menu"; break;
- case CSIDL_COMMON_STARTUP: name = L"Common Startup"; break;
- case CSIDL_COMMON_TEMPLATES: name = L"Common Templates"; break;
- case CSIDL_COMMON_MUSIC: name = L"CommonMusic"; break;
- case CSIDL_COMMON_PICTURES: name = L"CommonPictures"; break;
- case CSIDL_COMMON_VIDEO: name = L"CommonVideo"; break;
- }
- }
- /* XXX todo
- * case CSIDL_SYSTEM # GetSystemDirectory()
- * case CSIDL_RESOURCES # %windir%\Resources\, For theme and other windows resources.
- * case CSIDL_RESOURCES_LOCALIZED # %windir%\Resources\<LangID>, for theme and other windows specific resources.
- */
-
-#define SHELL_FOLDERS "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"
-
- if (name && RegOpenKeyEx(root, SHELL_FOLDERS, 0, KEY_QUERY_VALUE, &hkey) == ERROR_SUCCESS) {
- WCHAR data[MAX_PATH+1];
- DWORD cb = sizeof(data)-sizeof(WCHAR);
- DWORD type = REG_NONE;
- long rc = RegQueryValueExW(hkey, name, NULL, &type, (BYTE*)&data, &cb);
- RegCloseKey(hkey);
- if (rc == ERROR_SUCCESS && type == REG_SZ && cb > sizeof(WCHAR) && data[0]) {
- /* Make sure the string is properly terminated */
- data[cb/sizeof(WCHAR)] = '\0';
- ST(0) = wstr_to_ansipath(aTHX_ data);
- XSRETURN(1);
- }
- }
-
-#undef SHELL_FOLDERS
-
- /* Unders some circumstances the registry entries seem to have a null string
- * as their value even when the directory already exists. The environment
- * variables do get set though, so try re-create a Unicode environment and
- * check if they are there.
- */
- sv = NULL;
- switch (folder) {
- case CSIDL_APPDATA: sv = get_unicode_env(aTHX_ L"APPDATA"); break;
- case CSIDL_PROFILE: sv = get_unicode_env(aTHX_ L"USERPROFILE"); break;
- case CSIDL_PROGRAM_FILES: sv = get_unicode_env(aTHX_ L"ProgramFiles"); break;
- case CSIDL_PROGRAM_FILES_COMMON: sv = get_unicode_env(aTHX_ L"CommonProgramFiles"); break;
- case CSIDL_WINDOWS: sv = get_unicode_env(aTHX_ L"SystemRoot"); break;
- }
- if (sv) {
- ST(0) = sv;
- XSRETURN(1);
- }
- }
-
- XSRETURN_UNDEF;
-}
-
-XS(w32_GetFileVersion)
-{
- dXSARGS;
- DWORD size;
- DWORD handle;
- char *filename;
- char *data;
-
- if (items != 1)
- croak("usage: Win32::GetFileVersion($filename)\n");
-
- filename = SvPV_nolen(ST(0));
- size = GetFileVersionInfoSize(filename, &handle);
- if (!size)
- XSRETURN_UNDEF;
-
- New(0, data, size, char);
- if (!data)
- XSRETURN_UNDEF;
-
- if (GetFileVersionInfo(filename, handle, size, data)) {
- VS_FIXEDFILEINFO *info;
- UINT len;
- if (VerQueryValue(data, "\\", (void**)&info, &len)) {
- int dwValueMS1 = (info->dwFileVersionMS>>16);
- int dwValueMS2 = (info->dwFileVersionMS&0xffff);
- int dwValueLS1 = (info->dwFileVersionLS>>16);
- int dwValueLS2 = (info->dwFileVersionLS&0xffff);
-
- if (GIMME_V == G_ARRAY) {
- EXTEND(SP, 4);
- XST_mIV(0, dwValueMS1);
- XST_mIV(1, dwValueMS2);
- XST_mIV(2, dwValueLS1);
- XST_mIV(3, dwValueLS2);
- items = 4;
- }
- else {
- char version[50];
- sprintf(version, "%d.%d.%d.%d", dwValueMS1, dwValueMS2, dwValueLS1, dwValueLS2);
- XST_mPV(0, version);
- }
- }
- }
- else
- items = 0;
-
- Safefree(data);
- XSRETURN(items);
-}
-
-#ifdef __CYGWIN__
-XS(w32_SetChildShowWindow)
-{
- /* This function doesn't do anything useful for cygwin. In the
- * MSWin32 case it modifies w32_showwindow, which is used by
- * win32_spawnvp(). Since w32_showwindow is an internal variable
- * inside the thread_intern structure, the MSWin32 implementation
- * lives in win32/win32.c in the core Perl distribution.
- */
- dXSARGS;
- XSRETURN_UNDEF;
-}
-#endif
-
-XS(w32_GetCwd)
-{
- dXSARGS;
- /* Make the host for current directory */
- char* ptr = PerlEnv_get_childdir();
- /*
- * If ptr != Nullch
- * then it worked, set PV valid,
- * else return 'undef'
- */
- if (ptr) {
- SV *sv = sv_newmortal();
- sv_setpv(sv, ptr);
- PerlEnv_free_childdir(ptr);
-
-#ifndef INCOMPLETE_TAINTS
- SvTAINTED_on(sv);
-#endif
-
- EXTEND(SP,1);
- ST(0) = sv;
- XSRETURN(1);
- }
- XSRETURN_UNDEF;
-}
-
-XS(w32_SetCwd)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::SetCwd($cwd)");
-
- if (IsWin2000() && SvUTF8(ST(0))) {
- WCHAR *wide = sv_to_wstr(aTHX_ ST(0));
- char *ansi = my_ansipath(wide);
- int rc = PerlDir_chdir(ansi);
- Safefree(wide);
- Safefree(ansi);
- if (!rc)
- XSRETURN_YES;
- }
- else {
- if (!PerlDir_chdir(SvPV_nolen(ST(0))))
- XSRETURN_YES;
- }
-
- XSRETURN_NO;
-}
-
-XS(w32_GetNextAvailDrive)
-{
- dXSARGS;
- char ix = 'C';
- char root[] = "_:\\";
-
- EXTEND(SP,1);
- while (ix <= 'Z') {
- root[0] = ix++;
- if (GetDriveType(root) == 1) {
- root[2] = '\0';
- XSRETURN_PV(root);
- }
- }
- XSRETURN_UNDEF;
-}
-
-XS(w32_GetLastError)
-{
- dXSARGS;
- EXTEND(SP,1);
- XSRETURN_IV(GetLastError());
-}
-
-XS(w32_SetLastError)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::SetLastError($error)");
- SetLastError((DWORD)SvIV(ST(0)));
- XSRETURN_EMPTY;
-}
-
-XS(w32_LoginName)
-{
- dXSARGS;
- EXTEND(SP,1);
- if (IsWin2000()) {
- WCHAR name[128];
- DWORD size = countof(name);
- if (GetUserNameW(name, &size)) {
- ST(0) = wstr_to_sv(aTHX_ name);
- XSRETURN(1);
- }
- }
- else {
- char name[128];
- DWORD size = countof(name);
- if (GetUserNameA(name, &size)) {
- /* size includes NULL */
- ST(0) = sv_2mortal(newSVpvn(name, size-1));
- XSRETURN(1);
- }
- }
- XSRETURN_UNDEF;
-}
-
-XS(w32_NodeName)
-{
- dXSARGS;
- char name[MAX_COMPUTERNAME_LENGTH+1];
- DWORD size = sizeof(name);
- EXTEND(SP,1);
- if (GetComputerName(name,&size)) {
- /* size does NOT include NULL :-( */
- ST(0) = sv_2mortal(newSVpvn(name,size));
- XSRETURN(1);
- }
- XSRETURN_UNDEF;
-}
-
-
-XS(w32_DomainName)
-{
- dXSARGS;
- HMODULE module = LoadLibrary("netapi32.dll");
- PFNNetApiBufferFree pfnNetApiBufferFree;
- PFNNetWkstaGetInfo pfnNetWkstaGetInfo;
-
- if (module) {
- GETPROC(NetApiBufferFree);
- GETPROC(NetWkstaGetInfo);
- }
- EXTEND(SP,1);
- if (module && pfnNetWkstaGetInfo && pfnNetApiBufferFree) {
- /* this way is more reliable, in case user has a local account. */
- char dname[256];
- DWORD dnamelen = sizeof(dname);
- struct {
- DWORD wki100_platform_id;
- LPWSTR wki100_computername;
- LPWSTR wki100_langroup;
- DWORD wki100_ver_major;
- DWORD wki100_ver_minor;
- } *pwi;
- DWORD retval;
- retval = pfnNetWkstaGetInfo(NULL, 100, &pwi);
- /* NERR_Success *is* 0*/
- if (retval == 0) {
- if (pwi->wki100_langroup && *(pwi->wki100_langroup)) {
- WideCharToMultiByte(CP_ACP, 0, pwi->wki100_langroup,
- -1, (LPSTR)dname, dnamelen, NULL, NULL);
- }
- else {
- WideCharToMultiByte(CP_ACP, 0, pwi->wki100_computername,
- -1, (LPSTR)dname, dnamelen, NULL, NULL);
- }
- pfnNetApiBufferFree(pwi);
- FreeLibrary(module);
- XSRETURN_PV(dname);
- }
- FreeLibrary(module);
- SetLastError(retval);
- }
- else {
- /* Win95 doesn't have NetWksta*(), so do it the old way */
- char name[256];
- DWORD size = sizeof(name);
- if (module)
- FreeLibrary(module);
- if (GetUserName(name,&size)) {
- char sid[ONE_K_BUFSIZE];
- DWORD sidlen = sizeof(sid);
- char dname[256];
- DWORD dnamelen = sizeof(dname);
- SID_NAME_USE snu;
- if (LookupAccountName(NULL, name, (PSID)&sid, &sidlen,
- dname, &dnamelen, &snu)) {
- XSRETURN_PV(dname); /* all that for this */
- }
- }
- }
- XSRETURN_UNDEF;
-}
-
-XS(w32_FsType)
-{
- dXSARGS;
- char fsname[256];
- DWORD flags, filecomplen;
- if (GetVolumeInformation(NULL, NULL, 0, NULL, &filecomplen,
- &flags, fsname, sizeof(fsname))) {
- if (GIMME_V == G_ARRAY) {
- XPUSHs(sv_2mortal(newSVpvn(fsname,strlen(fsname))));
- XPUSHs(sv_2mortal(newSViv(flags)));
- XPUSHs(sv_2mortal(newSViv(filecomplen)));
- PUTBACK;
- return;
- }
- EXTEND(SP,1);
- XSRETURN_PV(fsname);
- }
- XSRETURN_EMPTY;
-}
-
-XS(w32_GetOSVersion)
-{
- dXSARGS;
-
- if (GIMME_V == G_SCALAR) {
- XSRETURN_IV(g_osver.dwPlatformId);
- }
- XPUSHs(sv_2mortal(newSVpvn(g_osver.szCSDVersion, strlen(g_osver.szCSDVersion))));
-
- XPUSHs(sv_2mortal(newSViv(g_osver.dwMajorVersion)));
- XPUSHs(sv_2mortal(newSViv(g_osver.dwMinorVersion)));
- XPUSHs(sv_2mortal(newSViv(g_osver.dwBuildNumber)));
- XPUSHs(sv_2mortal(newSViv(g_osver.dwPlatformId)));
- if (g_osver_ex) {
- XPUSHs(sv_2mortal(newSViv(g_osver.wServicePackMajor)));
- XPUSHs(sv_2mortal(newSViv(g_osver.wServicePackMinor)));
- XPUSHs(sv_2mortal(newSViv(g_osver.wSuiteMask)));
- XPUSHs(sv_2mortal(newSViv(g_osver.wProductType)));
- }
- PUTBACK;
-}
-
-XS(w32_IsWinNT)
-{
- dXSARGS;
- EXTEND(SP,1);
- XSRETURN_IV(IsWinNT());
-}
-
-XS(w32_IsWin95)
-{
- dXSARGS;
- EXTEND(SP,1);
- XSRETURN_IV(IsWin95());
-}
-
-XS(w32_FormatMessage)
-{
- dXSARGS;
- DWORD source = 0;
- char msgbuf[ONE_K_BUFSIZE];
-
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::FormatMessage($errno)");
-
- if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM,
- &source, (DWORD)SvIV(ST(0)), 0,
- msgbuf, sizeof(msgbuf)-1, NULL))
- {
- XSRETURN_PV(msgbuf);
- }
-
- XSRETURN_UNDEF;
-}
-
-XS(w32_Spawn)
-{
- dXSARGS;
- char *cmd, *args;
- void *env;
- char *dir;
- PROCESS_INFORMATION stProcInfo;
- STARTUPINFO stStartInfo;
- BOOL bSuccess = FALSE;
-
- if (items != 3)
- Perl_croak(aTHX_ "usage: Win32::Spawn($cmdName, $args, $PID)");
-
- cmd = SvPV_nolen(ST(0));
- args = SvPV_nolen(ST(1));
-
- env = PerlEnv_get_childenv();
- dir = PerlEnv_get_childdir();
-
- memset(&stStartInfo, 0, sizeof(stStartInfo)); /* Clear the block */
- stStartInfo.cb = sizeof(stStartInfo); /* Set the structure size */
- stStartInfo.dwFlags = STARTF_USESHOWWINDOW; /* Enable wShowWindow control */
- stStartInfo.wShowWindow = SW_SHOWMINNOACTIVE; /* Start min (normal) */
-
- if (CreateProcess(
- cmd, /* Image path */
- args, /* Arguments for command line */
- NULL, /* Default process security */
- NULL, /* Default thread security */
- FALSE, /* Must be TRUE to use std handles */
- NORMAL_PRIORITY_CLASS, /* No special scheduling */
- env, /* Inherit our environment block */
- dir, /* Inherit our currrent directory */
- &stStartInfo, /* -> Startup info */
- &stProcInfo)) /* <- Process info (if OK) */
- {
- int pid = (int)stProcInfo.dwProcessId;
- if (IsWin95() && pid < 0)
- pid = -pid;
- sv_setiv(ST(2), pid);
- CloseHandle(stProcInfo.hThread);/* library source code does this. */
- bSuccess = TRUE;
- }
- PerlEnv_free_childenv(env);
- PerlEnv_free_childdir(dir);
- XSRETURN_IV(bSuccess);
-}
-
-XS(w32_GetTickCount)
-{
- dXSARGS;
- DWORD msec = GetTickCount();
- EXTEND(SP,1);
- if ((IV)msec > 0)
- XSRETURN_IV(msec);
- XSRETURN_NV(msec);
-}
-
-XS(w32_GetShortPathName)
-{
- dXSARGS;
- SV *shortpath;
- DWORD len;
-
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::GetShortPathName($longPathName)");
-
- if (IsWin2000()) {
- WCHAR wshort[MAX_PATH+1];
- WCHAR *wlong = sv_to_wstr(aTHX_ ST(0));
- len = GetShortPathNameW(wlong, wshort, countof(wshort));
- Safefree(wlong);
- if (len && len < sizeof(wshort)) {
- ST(0) = wstr_to_sv(aTHX_ wshort);
- XSRETURN(1);
- }
- XSRETURN_UNDEF;
- }
-
- shortpath = sv_mortalcopy(ST(0));
- SvUPGRADE(shortpath, SVt_PV);
- if (!SvPVX(shortpath) || !SvLEN(shortpath))
- XSRETURN_UNDEF;
-
- /* src == target is allowed */
- do {
- len = GetShortPathName(SvPVX(shortpath),
- SvPVX(shortpath),
- (DWORD)SvLEN(shortpath));
- } while (len >= SvLEN(shortpath) && sv_grow(shortpath,len+1));
- if (len) {
- SvCUR_set(shortpath,len);
- *SvEND(shortpath) = '\0';
- ST(0) = shortpath;
- XSRETURN(1);
- }
- XSRETURN_UNDEF;
-}
-
-XS(w32_GetFullPathName)
-{
- dXSARGS;
- char *fullname;
- char *ansi = NULL;
-
-/* The code below relies on the fact that PerlDir_mapX() returns an
- * absolute path, which is only true under PERL_IMPLICIT_SYS when
- * we use the virtualization code from win32/vdir.h.
- * Without it PerlDir_mapX() is a no-op and we need to use the same
- * code as we use for Cygwin.
- */
-#if __CYGWIN__ || !defined(PERL_IMPLICIT_SYS)
- char buffer[2*MAX_PATH];
-#endif
-
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::GetFullPathName($filename)");
-
-#if __CYGWIN__ || !defined(PERL_IMPLICIT_SYS)
- if (IsWin2000()) {
- WCHAR *filename = sv_to_wstr(aTHX_ ST(0));
- WCHAR full[2*MAX_PATH];
- DWORD len = GetFullPathNameW(filename, countof(full), full, NULL);
- Safefree(filename);
- if (len == 0 || len >= countof(full))
- XSRETURN_EMPTY;
- ansi = fullname = my_ansipath(full);
- }
- else {
- DWORD len = GetFullPathNameA(SvPV_nolen(ST(0)), countof(buffer), buffer, NULL);
- if (len == 0 || len >= countof(buffer))
- XSRETURN_EMPTY;
- fullname = buffer;
- }
-#else
- /* Don't use my_ansipath() unless the $filename argument is in Unicode.
- * If the relative path doesn't exist, GetShortPathName() will fail and
- * my_ansipath() will use the long name with replacement characters.
- * In that case we will be better off using PerlDir_mapA(), which
- * already uses the ANSI name of the current directory.
- *
- * XXX The one missing case is where we could downgrade $filename
- * XXX from UTF8 into the current codepage.
- */
- if (IsWin2000() && SvUTF8(ST(0))) {
- WCHAR *filename = sv_to_wstr(aTHX_ ST(0));
- WCHAR *mappedname = PerlDir_mapW(filename);
- Safefree(filename);
- ansi = fullname = my_ansipath(mappedname);
- }
- else {
- fullname = PerlDir_mapA(SvPV_nolen(ST(0)));
- }
-# if PERL_VERSION < 8
- {
- /* PerlDir_mapX() in Perl 5.6 used to return forward slashes */
- char *str = fullname;
- while (*str) {
- if (*str == '/')
- *str = '\\';
- ++str;
- }
- }
-# endif
-#endif
-
- /* GetFullPathName() on Windows NT drops trailing backslash */
- if (g_osver.dwMajorVersion == 4 && *fullname) {
- STRLEN len;
- char *pv = SvPV(ST(0), len);
- char *lastchar = fullname + strlen(fullname) - 1;
- /* If ST(0) ends with a slash, but fullname doesn't ... */
- if (len && (pv[len-1] == '/' || pv[len-1] == '\\') && *lastchar != '\\') {
- /* fullname is the MAX_PATH+1 sized buffer returned from PerlDir_mapA()
- * or the 2*MAX_PATH sized local buffer in the __CYGWIN__ case.
- */
- if (lastchar - fullname < MAX_PATH - 1)
- strcpy(lastchar+1, "\\");
- }
- }
-
- if (GIMME_V == G_ARRAY) {
- char *filepart = strrchr(fullname, '\\');
-
- EXTEND(SP,1);
- if (filepart) {
- XST_mPV(1, ++filepart);
- *filepart = '\0';
- }
- else {
- XST_mPVN(1, "", 0);
- }
- items = 2;
- }
- XST_mPV(0, fullname);
-
- if (ansi)
- Safefree(ansi);
- XSRETURN(items);
-}
-
-XS(w32_GetLongPathName)
-{
- dXSARGS;
-
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::GetLongPathName($pathname)");
-
- if (IsWin2000()) {
- WCHAR *wstr = sv_to_wstr(aTHX_ ST(0));
- WCHAR wide_path[MAX_PATH+1];
- WCHAR *long_path;
-
- if (wcslen(wstr) < countof(wide_path)) {
- wcscpy(wide_path, wstr);
- long_path = my_longpathW(wide_path);
- if (long_path) {
- Safefree(wstr);
- ST(0) = wstr_to_sv(aTHX_ long_path);
- XSRETURN(1);
- }
- }
- Safefree(wstr);
- }
- else {
- SV *path;
- char tmpbuf[MAX_PATH+1];
- char *pathstr;
- STRLEN len;
-
- path = ST(0);
- pathstr = SvPV(path,len);
- if (len < sizeof(tmpbuf)) {
- strcpy(tmpbuf, pathstr);
- pathstr = my_longpathA(tmpbuf);
- if (pathstr) {
- ST(0) = sv_2mortal(newSVpvn(pathstr, strlen(pathstr)));
- XSRETURN(1);
- }
- }
- }
- XSRETURN_EMPTY;
-}
-
-XS(w32_GetANSIPathName)
-{
- dXSARGS;
- WCHAR *wide_path;
-
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::GetANSIPathName($pathname)");
-
- wide_path = sv_to_wstr(aTHX_ ST(0));
- ST(0) = wstr_to_ansipath(aTHX_ wide_path);
- Safefree(wide_path);
- XSRETURN(1);
-}
-
-XS(w32_Sleep)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::Sleep($milliseconds)");
- Sleep((DWORD)SvIV(ST(0)));
- XSRETURN_YES;
-}
-
-XS(w32_CopyFile)
-{
- dXSARGS;
- BOOL bResult;
- char *pszSourceFile;
- char szSourceFile[MAX_PATH+1];
-
- if (items != 3)
- Perl_croak(aTHX_ "usage: Win32::CopyFile($from, $to, $overwrite)");
-
- pszSourceFile = PerlDir_mapA(SvPV_nolen(ST(0)));
- if (strlen(pszSourceFile) < sizeof(szSourceFile)) {
- strcpy(szSourceFile, pszSourceFile);
- bResult = CopyFileA(szSourceFile, PerlDir_mapA(SvPV_nolen(ST(1))), !SvTRUE(ST(2)));
- if (bResult)
- XSRETURN_YES;
- }
- XSRETURN_NO;
-}
-
-XS(w32_OutputDebugString)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::OutputDebugString($string)");
-
- if (SvUTF8(ST(0))) {
- WCHAR *str = sv_to_wstr(aTHX_ ST(0));
- OutputDebugStringW(str);
- Safefree(str);
- }
- else
- OutputDebugStringA(SvPV_nolen(ST(0)));
-
- XSRETURN_EMPTY;
-}
-
-XS(w32_GetCurrentProcessId)
-{
- dXSARGS;
- EXTEND(SP,1);
- XSRETURN_IV(GetCurrentProcessId());
-}
-
-XS(w32_GetCurrentThreadId)
-{
- dXSARGS;
- EXTEND(SP,1);
- XSRETURN_IV(GetCurrentThreadId());
-}
-
-XS(w32_CreateDirectory)
-{
- dXSARGS;
- BOOL result;
-
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::CreateDirectory($dir)");
-
- if (IsWin2000() && SvUTF8(ST(0))) {
- WCHAR *dir = sv_to_wstr(aTHX_ ST(0));
- result = CreateDirectoryW(dir, NULL);
- Safefree(dir);
- }
- else {
- result = CreateDirectoryA(SvPV_nolen(ST(0)), NULL);
- }
-
- ST(0) = boolSV(result);
- XSRETURN(1);
-}
-
-XS(w32_CreateFile)
-{
- dXSARGS;
- HANDLE handle;
-
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::CreateFile($file)");
-
- if (IsWin2000() && SvUTF8(ST(0))) {
- WCHAR *file = sv_to_wstr(aTHX_ ST(0));
- handle = CreateFileW(file, GENERIC_WRITE, FILE_SHARE_WRITE,
- NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
- Safefree(file);
- }
- else {
- handle = CreateFileA(SvPV_nolen(ST(0)), GENERIC_WRITE, FILE_SHARE_WRITE,
- NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
- }
-
- if (handle != INVALID_HANDLE_VALUE)
- CloseHandle(handle);
-
- ST(0) = boolSV(handle != INVALID_HANDLE_VALUE);
- XSRETURN(1);
-}
-
-XS(w32_GetSystemMetrics)
-{
- dXSARGS;
-
- if (items != 1)
- Perl_croak(aTHX_ "usage: Win32::GetSystemMetrics($index)");
-
- XSRETURN_IV(GetSystemMetrics((int)SvIV(ST(0))));
-}
-
-XS(w32_GetProductInfo)
-{
- dXSARGS;
- DWORD type;
- HMODULE module;
- PFNGetProductInfo pfnGetProductInfo;
-
- if (items != 4)
- Perl_croak(aTHX_ "usage: Win32::GetProductInfo($major,$minor,$spmajor,$spminor)");
-
- module = GetModuleHandle("kernel32.dll");
- GETPROC(GetProductInfo);
- if (pfnGetProductInfo &&
- pfnGetProductInfo((DWORD)SvIV(ST(0)), (DWORD)SvIV(ST(1)),
- (DWORD)SvIV(ST(2)), (DWORD)SvIV(ST(3)), &type))
- {
- XSRETURN_IV(type);
- }
-
- /* PRODUCT_UNDEFINED */
- XSRETURN_IV(0);
-}
-
-MODULE = Win32 PACKAGE = Win32
-
-PROTOTYPES: DISABLE
-
-BOOT:
-{
- char *file = __FILE__;
-
- if (g_osver.dwOSVersionInfoSize == 0) {
- g_osver.dwOSVersionInfoSize = sizeof(g_osver);
- if (!GetVersionExA((OSVERSIONINFOA*)&g_osver)) {
- g_osver_ex = FALSE;
- g_osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
- GetVersionExA((OSVERSIONINFOA*)&g_osver);
- }
- }
-
- newXS("Win32::LookupAccountName", w32_LookupAccountName, file);
- newXS("Win32::LookupAccountSID", w32_LookupAccountSID, file);
- newXS("Win32::InitiateSystemShutdown", w32_InitiateSystemShutdown, file);
- newXS("Win32::AbortSystemShutdown", w32_AbortSystemShutdown, file);
- newXS("Win32::ExpandEnvironmentStrings", w32_ExpandEnvironmentStrings, file);
- newXS("Win32::MsgBox", w32_MsgBox, file);
- newXS("Win32::LoadLibrary", w32_LoadLibrary, file);
- newXS("Win32::FreeLibrary", w32_FreeLibrary, file);
- newXS("Win32::GetProcAddress", w32_GetProcAddress, file);
- newXS("Win32::RegisterServer", w32_RegisterServer, file);
- newXS("Win32::UnregisterServer", w32_UnregisterServer, file);
- newXS("Win32::GetArchName", w32_GetArchName, file);
- newXS("Win32::GetChipName", w32_GetChipName, file);
- newXS("Win32::GuidGen", w32_GuidGen, file);
- newXS("Win32::GetFolderPath", w32_GetFolderPath, file);
- newXS("Win32::IsAdminUser", w32_IsAdminUser, file);
- newXS("Win32::GetFileVersion", w32_GetFileVersion, file);
-
- newXS("Win32::GetCwd", w32_GetCwd, file);
- newXS("Win32::SetCwd", w32_SetCwd, file);
- newXS("Win32::GetNextAvailDrive", w32_GetNextAvailDrive, file);
- newXS("Win32::GetLastError", w32_GetLastError, file);
- newXS("Win32::SetLastError", w32_SetLastError, file);
- newXS("Win32::LoginName", w32_LoginName, file);
- newXS("Win32::NodeName", w32_NodeName, file);
- newXS("Win32::DomainName", w32_DomainName, file);
- newXS("Win32::FsType", w32_FsType, file);
- newXS("Win32::GetOSVersion", w32_GetOSVersion, file);
- newXS("Win32::IsWinNT", w32_IsWinNT, file);
- newXS("Win32::IsWin95", w32_IsWin95, file);
- newXS("Win32::FormatMessage", w32_FormatMessage, file);
- newXS("Win32::Spawn", w32_Spawn, file);
- newXS("Win32::GetTickCount", w32_GetTickCount, file);
- newXS("Win32::GetShortPathName", w32_GetShortPathName, file);
- newXS("Win32::GetFullPathName", w32_GetFullPathName, file);
- newXS("Win32::GetLongPathName", w32_GetLongPathName, file);
- newXS("Win32::GetANSIPathName", w32_GetANSIPathName, file);
- newXS("Win32::CopyFile", w32_CopyFile, file);
- newXS("Win32::Sleep", w32_Sleep, file);
- newXS("Win32::OutputDebugString", w32_OutputDebugString, file);
- newXS("Win32::GetCurrentProcessId", w32_GetCurrentProcessId, file);
- newXS("Win32::GetCurrentThreadId", w32_GetCurrentThreadId, file);
- newXS("Win32::CreateDirectory", w32_CreateDirectory, file);
- newXS("Win32::CreateFile", w32_CreateFile, file);
- newXS("Win32::GetSystemMetrics", w32_GetSystemMetrics, file);
- newXS("Win32::GetProductInfo", w32_GetProductInfo, file);
-#ifdef __CYGWIN__
- newXS("Win32::SetChildShowWindow", w32_SetChildShowWindow, file);
-#endif
- XSRETURN_YES;
-}
+#include <wctype.h>
+#include <windows.h>
+#include <shlobj.h>
+
+#define PERL_NO_GET_CONTEXT
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#ifndef countof
+# define countof(array) (sizeof (array) / sizeof (*(array)))
+#endif
+
+#define SE_SHUTDOWN_NAMEA "SeShutdownPrivilege"
+
+#ifndef WC_NO_BEST_FIT_CHARS
+# define WC_NO_BEST_FIT_CHARS 0x00000400
+#endif
+
+#define GETPROC(fn) pfn##fn = (PFN##fn)GetProcAddress(module, #fn)
+
+typedef BOOL (WINAPI *PFNSHGetSpecialFolderPathA)(HWND, char*, int, BOOL);
+typedef BOOL (WINAPI *PFNSHGetSpecialFolderPathW)(HWND, WCHAR*, int, BOOL);
+typedef HRESULT (WINAPI *PFNSHGetFolderPathA)(HWND, int, HANDLE, DWORD, LPTSTR);
+typedef HRESULT (WINAPI *PFNSHGetFolderPathW)(HWND, int, HANDLE, DWORD, LPWSTR);
+typedef BOOL (WINAPI *PFNCreateEnvironmentBlock)(void**, HANDLE, BOOL);
+typedef BOOL (WINAPI *PFNDestroyEnvironmentBlock)(void*);
+typedef int (__stdcall *PFNDllRegisterServer)(void);
+typedef int (__stdcall *PFNDllUnregisterServer)(void);
+typedef DWORD (__stdcall *PFNNetApiBufferFree)(void*);
+typedef DWORD (__stdcall *PFNNetWkstaGetInfo)(LPWSTR, DWORD, void*);
+
+typedef BOOL (__stdcall *PFNOpenProcessToken)(HANDLE, DWORD, HANDLE*);
+typedef BOOL (__stdcall *PFNOpenThreadToken)(HANDLE, DWORD, BOOL, HANDLE*);
+typedef BOOL (__stdcall *PFNGetTokenInformation)(HANDLE, TOKEN_INFORMATION_CLASS, void*, DWORD, DWORD*);
+typedef BOOL (__stdcall *PFNAllocateAndInitializeSid)(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD,
+ DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*);
+typedef BOOL (__stdcall *PFNEqualSid)(PSID, PSID);
+typedef void* (__stdcall *PFNFreeSid)(PSID);
+typedef BOOL (__stdcall *PFNIsUserAnAdmin)(void);
+typedef BOOL (WINAPI *PFNGetProductInfo)(DWORD, DWORD, DWORD, DWORD, DWORD*);
+typedef void (WINAPI *PFNGetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);
+
+#ifndef CSIDL_MYMUSIC
+# define CSIDL_MYMUSIC 0x000D
+#endif
+#ifndef CSIDL_MYVIDEO
+# define CSIDL_MYVIDEO 0x000E
+#endif
+#ifndef CSIDL_LOCAL_APPDATA
+# define CSIDL_LOCAL_APPDATA 0x001C
+#endif
+#ifndef CSIDL_COMMON_FAVORITES
+# define CSIDL_COMMON_FAVORITES 0x001F
+#endif
+#ifndef CSIDL_INTERNET_CACHE
+# define CSIDL_INTERNET_CACHE 0x0020
+#endif
+#ifndef CSIDL_COOKIES
+# define CSIDL_COOKIES 0x0021
+#endif
+#ifndef CSIDL_HISTORY
+# define CSIDL_HISTORY 0x0022
+#endif
+#ifndef CSIDL_COMMON_APPDATA
+# define CSIDL_COMMON_APPDATA 0x0023
+#endif
+#ifndef CSIDL_WINDOWS
+# define CSIDL_WINDOWS 0x0024
+#endif
+#ifndef CSIDL_PROGRAM_FILES
+# define CSIDL_PROGRAM_FILES 0x0026
+#endif
+#ifndef CSIDL_MYPICTURES
+# define CSIDL_MYPICTURES 0x0027
+#endif
+#ifndef CSIDL_PROFILE
+# define CSIDL_PROFILE 0x0028
+#endif
+#ifndef CSIDL_PROGRAM_FILES_COMMON
+# define CSIDL_PROGRAM_FILES_COMMON 0x002B
+#endif
+#ifndef CSIDL_COMMON_TEMPLATES
+# define CSIDL_COMMON_TEMPLATES 0x002D
+#endif
+#ifndef CSIDL_COMMON_DOCUMENTS
+# define CSIDL_COMMON_DOCUMENTS 0x002E
+#endif
+#ifndef CSIDL_COMMON_ADMINTOOLS
+# define CSIDL_COMMON_ADMINTOOLS 0x002F
+#endif
+#ifndef CSIDL_ADMINTOOLS
+# define CSIDL_ADMINTOOLS 0x0030
+#endif
+#ifndef CSIDL_COMMON_MUSIC
+# define CSIDL_COMMON_MUSIC 0x0035
+#endif
+#ifndef CSIDL_COMMON_PICTURES
+# define CSIDL_COMMON_PICTURES 0x0036
+#endif
+#ifndef CSIDL_COMMON_VIDEO
+# define CSIDL_COMMON_VIDEO 0x0037
+#endif
+#ifndef CSIDL_CDBURN_AREA
+# define CSIDL_CDBURN_AREA 0x003B
+#endif
+#ifndef CSIDL_FLAG_CREATE
+# define CSIDL_FLAG_CREATE 0x8000
+#endif
+
+/* Use explicit struct definition because wSuiteMask and
+ * wProductType are not defined in the VC++ 6.0 headers.
+ * WORD type has been replaced by unsigned short because
+ * WORD is already used by Perl itself.
+ */
+struct {
+ DWORD dwOSVersionInfoSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformId;
+ CHAR szCSDVersion[128];
+ unsigned short wServicePackMajor;
+ unsigned short wServicePackMinor;
+ unsigned short wSuiteMask;
+ BYTE wProductType;
+ BYTE wReserved;
+} g_osver = {0, 0, 0, 0, 0, "", 0, 0, 0, 0, 0};
+BOOL g_osver_ex = TRUE;
+
+#define ONE_K_BUFSIZE 1024
+
+int
+IsWin95(void)
+{
+ return (g_osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS);
+}
+
+int
+IsWinNT(void)
+{
+ return (g_osver.dwPlatformId == VER_PLATFORM_WIN32_NT);
+}
+
+int
+IsWin2000(void)
+{
+ return (g_osver.dwMajorVersion > 4);
+}
+
+/* Convert SV to wide character string. The return value must be
+ * freed using Safefree().
+ */
+WCHAR*
+sv_to_wstr(pTHX_ SV *sv)
+{
+ DWORD wlen;
+ WCHAR *wstr;
+ STRLEN len;
+ char *str = SvPV(sv, len);
+ UINT cp = SvUTF8(sv) ? CP_UTF8 : CP_ACP;
+
+ wlen = MultiByteToWideChar(cp, 0, str, (int)(len+1), NULL, 0);
+ New(0, wstr, wlen, WCHAR);
+ MultiByteToWideChar(cp, 0, str, (int)(len+1), wstr, wlen);
+
+ return wstr;
+}
+
+/* Convert wide character string to mortal SV. Use UTF8 encoding
+ * if the string cannot be represented in the system codepage.
+ */
+SV *
+wstr_to_sv(pTHX_ WCHAR *wstr)
+{
+ int wlen = (int)wcslen(wstr)+1;
+ BOOL use_default = FALSE;
+ int len = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, wstr, wlen, NULL, 0, NULL, NULL);
+ SV *sv = sv_2mortal(newSV(len));
+
+ len = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, wstr, wlen, SvPVX(sv), len, NULL, &use_default);
+ if (use_default) {
+ len = WideCharToMultiByte(CP_UTF8, 0, wstr, wlen, NULL, 0, NULL, NULL);
+ sv_grow(sv, len);
+ len = WideCharToMultiByte(CP_UTF8, 0, wstr, wlen, SvPVX(sv), len, NULL, NULL);
+ SvUTF8_on(sv);
+ }
+ /* Shouldn't really ever fail since we ask for the required length first, but who knows... */
+ if (len) {
+ SvPOK_on(sv);
+ SvCUR_set(sv, len-1);
+ }
+ return sv;
+}
+
+/* Retrieve a variable from the Unicode environment in a mortal SV.
+ *
+ * Recreates the Unicode environment because a bug in earlier Perl versions
+ * overwrites it with the ANSI version, which contains replacement
+ * characters for the characters not in the ANSI codepage.
+ */
+SV*
+get_unicode_env(pTHX_ WCHAR *name)
+{
+ SV *sv = NULL;
+ void *env;
+ HANDLE token;
+ HMODULE module;
+ PFNOpenProcessToken pfnOpenProcessToken;
+
+ /* Get security token for the current process owner */
+ module = LoadLibrary("advapi32.dll");
+ if (!module)
+ return NULL;
+
+ GETPROC(OpenProcessToken);
+
+ if (pfnOpenProcessToken == NULL ||
+ !pfnOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_DUPLICATE, &token))
+ {
+ FreeLibrary(module);
+ return NULL;
+ }
+ FreeLibrary(module);
+
+ /* Create a Unicode environment block for this process */
+ module = LoadLibrary("userenv.dll");
+ if (module) {
+ PFNCreateEnvironmentBlock pfnCreateEnvironmentBlock;
+ PFNDestroyEnvironmentBlock pfnDestroyEnvironmentBlock;
+
+ GETPROC(CreateEnvironmentBlock);
+ GETPROC(DestroyEnvironmentBlock);
+
+ if (pfnCreateEnvironmentBlock && pfnDestroyEnvironmentBlock &&
+ pfnCreateEnvironmentBlock(&env, token, FALSE))
+ {
+ size_t name_len = wcslen(name);
+ WCHAR *entry = env;
+ while (*entry) {
+ size_t i;
+ size_t entry_len = wcslen(entry);
+ BOOL equal = (entry_len > name_len) && (entry[name_len] == '=');
+
+ for (i=0; equal && i < name_len; ++i)
+ equal = (towupper(entry[i]) == towupper(name[i]));
+
+ if (equal) {
+ sv = wstr_to_sv(aTHX_ entry+name_len+1);
+ break;
+ }
+ entry += entry_len+1;
+ }
+ pfnDestroyEnvironmentBlock(env);
+ }
+ FreeLibrary(module);
+ }
+ CloseHandle(token);
+ return sv;
+}
+
+/* Define both an ANSI and a Wide version of win32_longpath */
+
+#define CHAR_T char
+#define WIN32_FIND_DATA_T WIN32_FIND_DATAA
+#define FN_FINDFIRSTFILE FindFirstFileA
+#define FN_STRLEN strlen
+#define FN_STRCPY strcpy
+#define LONGPATH my_longpathA
+#include "longpath.inc"
+
+#define CHAR_T WCHAR
+#define WIN32_FIND_DATA_T WIN32_FIND_DATAW
+#define FN_FINDFIRSTFILE FindFirstFileW
+#define FN_STRLEN wcslen
+#define FN_STRCPY wcscpy
+#define LONGPATH my_longpathW
+#include "longpath.inc"
+
+/* The my_ansipath() function takes a Unicode filename and converts it
+ * into the current Windows codepage. If some characters cannot be mapped,
+ * then it will convert the short name instead.
+ *
+ * The buffer to the ansi pathname must be freed with Safefree() when it
+ * it no longer needed.
+ *
+ * The argument to my_ansipath() must exist before this function is
+ * called; otherwise there is no way to determine the short path name.
+ *
+ * Ideas for future refinement:
+ * - Only convert those segments of the path that are not in the current
+ * codepage, but leave the other segments in their long form.
+ * - If the resulting name is longer than MAX_PATH, start converting
+ * additional path segments into short names until the full name
+ * is shorter than MAX_PATH. Shorten the filename part last!
+ */
+
+/* This is a modified version of core Perl win32/win32.c(win32_ansipath).
+ * It uses New() etc. instead of win32_malloc().
+ */
+
+char *
+my_ansipath(const WCHAR *widename)
+{
+ char *name;
+ BOOL use_default = FALSE;
+ int widelen = (int)wcslen(widename)+1;
+ int len = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, widename, widelen,
+ NULL, 0, NULL, NULL);
+ New(0, name, len, char);
+ WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, widename, widelen,
+ name, len, NULL, &use_default);
+ if (use_default) {
+ DWORD shortlen = GetShortPathNameW(widename, NULL, 0);
+ if (shortlen) {
+ WCHAR *shortname;
+ New(0, shortname, shortlen, WCHAR);
+ shortlen = GetShortPathNameW(widename, shortname, shortlen)+1;
+
+ len = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, shortname, shortlen,
+ NULL, 0, NULL, NULL);
+ Renew(name, len, char);
+ WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, shortname, shortlen,
+ name, len, NULL, NULL);
+ Safefree(shortname);
+ }
+ }
+ return name;
+}
+
+/* Convert wide character path to ANSI path and return as mortal SV. */
+SV*
+wstr_to_ansipath(pTHX_ WCHAR *wstr)
+{
+ char *ansi = my_ansipath(wstr);
+ SV *sv = sv_2mortal(newSVpvn(ansi, strlen(ansi)));
+ Safefree(ansi);
+ return sv;
+}
+
+#ifdef __CYGWIN__
+
+char*
+get_childdir(void)
+{
+ dTHX;
+ char* ptr;
+
+ if (IsWin2000()) {
+ WCHAR filename[MAX_PATH+1];
+ GetCurrentDirectoryW(MAX_PATH+1, filename);
+ ptr = my_ansipath(filename);
+ }
+ else {
+ char filename[MAX_PATH+1];
+ GetCurrentDirectoryA(MAX_PATH+1, filename);
+ New(0, ptr, strlen(filename)+1, char);
+ strcpy(ptr, filename);
+ }
+ return ptr;
+}
+
+void
+free_childdir(char *d)
+{
+ dTHX;
+ Safefree(d);
+}
+
+void*
+get_childenv(void)
+{
+ return NULL;
+}
+
+void
+free_childenv(void *d)
+{
+}
+
+# define PerlDir_mapA(dir) (dir)
+
+#endif
+
+XS(w32_ExpandEnvironmentStrings)
+{
+ dXSARGS;
+
+ if (items != 1)
+ croak("usage: Win32::ExpandEnvironmentStrings($String);\n");
+
+ if (IsWin2000()) {
+ WCHAR value[31*1024];
+ WCHAR *source = sv_to_wstr(aTHX_ ST(0));
+ ExpandEnvironmentStringsW(source, value, countof(value)-1);
+ ST(0) = wstr_to_sv(aTHX_ value);
+ Safefree(source);
+ XSRETURN(1);
+ }
+ else {
+ char value[31*1024];
+ ExpandEnvironmentStringsA(SvPV_nolen(ST(0)), value, countof(value)-2);
+ XSRETURN_PV(value);
+ }
+}
+
+XS(w32_IsAdminUser)
+{
+ dXSARGS;
+ HMODULE module;
+ PFNIsUserAnAdmin pfnIsUserAnAdmin;
+ PFNOpenThreadToken pfnOpenThreadToken;
+ PFNOpenProcessToken pfnOpenProcessToken;
+ PFNGetTokenInformation pfnGetTokenInformation;
+ PFNAllocateAndInitializeSid pfnAllocateAndInitializeSid;
+ PFNEqualSid pfnEqualSid;
+ PFNFreeSid pfnFreeSid;
+ HANDLE hTok;
+ DWORD dwTokInfoLen;
+ TOKEN_GROUPS *lpTokInfo;
+ SID_IDENTIFIER_AUTHORITY NtAuth = SECURITY_NT_AUTHORITY;
+ PSID pAdminSid;
+ int iRetVal;
+ unsigned int i;
+
+ if (items)
+ croak("usage: Win32::IsAdminUser()");
+
+ /* There is no concept of "Administrator" user accounts on Win9x systems,
+ so just return true. */
+ if (IsWin95())
+ XSRETURN_YES;
+
+ /* Use IsUserAnAdmin() when available. On Vista this will only return TRUE
+ * if the process is running with elevated privileges and not just when the
+ * process owner is a member of the "Administrators" group.
+ */
+ module = LoadLibrary("shell32.dll");
+ if (module) {
+ GETPROC(IsUserAnAdmin);
+ if (pfnIsUserAnAdmin) {
+ EXTEND(SP, 1);
+ ST(0) = sv_2mortal(newSViv(pfnIsUserAnAdmin() ? 1 : 0));
+ FreeLibrary(module);
+ XSRETURN(1);
+ }
+ FreeLibrary(module);
+ }
+
+ module = LoadLibrary("advapi32.dll");
+ if (!module) {
+ warn("Cannot load advapi32.dll library");
+ XSRETURN_UNDEF;
+ }
+
+ GETPROC(OpenThreadToken);
+ GETPROC(OpenProcessToken);
+ GETPROC(GetTokenInformation);
+ GETPROC(AllocateAndInitializeSid);
+ GETPROC(EqualSid);
+ GETPROC(FreeSid);
+
+ if (!(pfnOpenThreadToken && pfnOpenProcessToken &&
+ pfnGetTokenInformation && pfnAllocateAndInitializeSid &&
+ pfnEqualSid && pfnFreeSid))
+ {
+ warn("Cannot load functions from advapi32.dll library");
+ FreeLibrary(module);
+ XSRETURN_UNDEF;
+ }
+
+ if (!pfnOpenThreadToken(GetCurrentThread(), TOKEN_QUERY, FALSE, &hTok)) {
+ if (!pfnOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hTok)) {
+ warn("Cannot open thread token or process token");
+ FreeLibrary(module);
+ XSRETURN_UNDEF;
+ }
+ }
+
+ pfnGetTokenInformation(hTok, TokenGroups, NULL, 0, &dwTokInfoLen);
+ if (!New(1, lpTokInfo, dwTokInfoLen, TOKEN_GROUPS)) {
+ warn("Cannot allocate token information structure");
+ CloseHandle(hTok);
+ FreeLibrary(module);
+ XSRETURN_UNDEF;
+ }
+
+ if (!pfnGetTokenInformation(hTok, TokenGroups, lpTokInfo, dwTokInfoLen,
+ &dwTokInfoLen))
+ {
+ warn("Cannot get token information");
+ Safefree(lpTokInfo);
+ CloseHandle(hTok);
+ FreeLibrary(module);
+ XSRETURN_UNDEF;
+ }
+
+ if (!pfnAllocateAndInitializeSid(&NtAuth, 2, SECURITY_BUILTIN_DOMAIN_RID,
+ DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &pAdminSid))
+ {
+ warn("Cannot allocate administrators' SID");
+ Safefree(lpTokInfo);
+ CloseHandle(hTok);
+ FreeLibrary(module);
+ XSRETURN_UNDEF;
+ }
+
+ iRetVal = 0;
+ for (i = 0; i < lpTokInfo->GroupCount; ++i) {
+ if (pfnEqualSid(lpTokInfo->Groups[i].Sid, pAdminSid)) {
+ iRetVal = 1;
+ break;
+ }
+ }
+
+ pfnFreeSid(pAdminSid);
+ Safefree(lpTokInfo);
+ CloseHandle(hTok);
+ FreeLibrary(module);
+
+ EXTEND(SP, 1);
+ ST(0) = sv_2mortal(newSViv(iRetVal));
+ XSRETURN(1);
+}
+
+XS(w32_LookupAccountName)
+{
+ dXSARGS;
+ char SID[400];
+ DWORD SIDLen;
+ SID_NAME_USE snu;
+ char Domain[256];
+ DWORD DomLen;
+ BOOL bResult;
+
+ if (items != 5)
+ croak("usage: Win32::LookupAccountName($system, $account, $domain, "
+ "$sid, $sidtype);\n");
+
+ SIDLen = sizeof(SID);
+ DomLen = sizeof(Domain);
+
+ bResult = LookupAccountNameA(SvPV_nolen(ST(0)), /* System */
+ SvPV_nolen(ST(1)), /* Account name */
+ &SID, /* SID structure */
+ &SIDLen, /* Size of SID buffer */
+ Domain, /* Domain buffer */
+ &DomLen, /* Domain buffer size */
+ &snu); /* SID name type */
+ if (bResult) {
+ sv_setpv(ST(2), Domain);
+ sv_setpvn(ST(3), SID, SIDLen);
+ sv_setiv(ST(4), snu);
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+
+XS(w32_LookupAccountSID)
+{
+ dXSARGS;
+ PSID sid;
+ char Account[256];
+ DWORD AcctLen = sizeof(Account);
+ char Domain[256];
+ DWORD DomLen = sizeof(Domain);
+ SID_NAME_USE snu;
+ BOOL bResult;
+
+ if (items != 5)
+ croak("usage: Win32::LookupAccountSID($system, $sid, $account, $domain, $sidtype);\n");
+
+ sid = SvPV_nolen(ST(1));
+ if (IsValidSid(sid)) {
+ bResult = LookupAccountSidA(SvPV_nolen(ST(0)), /* System */
+ sid, /* SID structure */
+ Account, /* Account name buffer */
+ &AcctLen, /* name buffer length */
+ Domain, /* Domain buffer */
+ &DomLen, /* Domain buffer length */
+ &snu); /* SID name type */
+ if (bResult) {
+ sv_setpv(ST(2), Account);
+ sv_setpv(ST(3), Domain);
+ sv_setiv(ST(4), (IV)snu);
+ XSRETURN_YES;
+ }
+ }
+ XSRETURN_NO;
+}
+
+XS(w32_InitiateSystemShutdown)
+{
+ dXSARGS;
+ HANDLE hToken; /* handle to process token */
+ TOKEN_PRIVILEGES tkp; /* pointer to token structure */
+ BOOL bRet;
+ char *machineName, *message;
+
+ if (items != 5)
+ croak("usage: Win32::InitiateSystemShutdown($machineName, $message, "
+ "$timeOut, $forceClose, $reboot);\n");
+
+ machineName = SvPV_nolen(ST(0));
+
+ if (OpenProcessToken(GetCurrentProcess(),
+ TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
+ &hToken))
+ {
+ LookupPrivilegeValueA(machineName,
+ SE_SHUTDOWN_NAMEA,
+ &tkp.Privileges[0].Luid);
+
+ tkp.PrivilegeCount = 1; /* only setting one */
+ tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
+
+ /* Get shutdown privilege for this process. */
+ AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
+ (PTOKEN_PRIVILEGES)NULL, 0);
+ }
+
+ message = SvPV_nolen(ST(1));
+ bRet = InitiateSystemShutdownA(machineName, message, (DWORD)SvIV(ST(2)),
+ (BOOL)SvIV(ST(3)), (BOOL)SvIV(ST(4)));
+
+ /* Disable shutdown privilege. */
+ tkp.Privileges[0].Attributes = 0;
+ AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
+ (PTOKEN_PRIVILEGES)NULL, 0);
+ CloseHandle(hToken);
+ XSRETURN_IV(bRet);
+}
+
+XS(w32_AbortSystemShutdown)
+{
+ dXSARGS;
+ HANDLE hToken; /* handle to process token */
+ TOKEN_PRIVILEGES tkp; /* pointer to token structure */
+ BOOL bRet;
+ char *machineName;
+
+ if (items != 1)
+ croak("usage: Win32::AbortSystemShutdown($machineName);\n");
+
+ machineName = SvPV_nolen(ST(0));
+
+ if (OpenProcessToken(GetCurrentProcess(),
+ TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
+ &hToken))
+ {
+ LookupPrivilegeValueA(machineName,
+ SE_SHUTDOWN_NAMEA,
+ &tkp.Privileges[0].Luid);
+
+ tkp.PrivilegeCount = 1; /* only setting one */
+ tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
+
+ /* Get shutdown privilege for this process. */
+ AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
+ (PTOKEN_PRIVILEGES)NULL, 0);
+ }
+
+ bRet = AbortSystemShutdownA(machineName);
+
+ /* Disable shutdown privilege. */
+ tkp.Privileges[0].Attributes = 0;
+ AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
+ (PTOKEN_PRIVILEGES)NULL, 0);
+ CloseHandle(hToken);
+ XSRETURN_IV(bRet);
+}
+
+
+XS(w32_MsgBox)
+{
+ dXSARGS;
+ DWORD flags = MB_ICONEXCLAMATION;
+ I32 result;
+
+ if (items < 1 || items > 3)
+ croak("usage: Win32::MsgBox($message [, $flags [, $title]]);\n");
+
+ if (items > 1)
+ flags = (DWORD)SvIV(ST(1));
+
+ if (IsWin2000()) {
+ WCHAR *title = NULL;
+ WCHAR *msg = sv_to_wstr(aTHX_ ST(0));
+ if (items > 2)
+ title = sv_to_wstr(aTHX_ ST(2));
+ result = MessageBoxW(GetActiveWindow(), msg, title ? title : L"Perl", flags);
+ Safefree(msg);
+ if (title)
+ Safefree(title);
+ }
+ else {
+ char *title = "Perl";
+ char *msg = SvPV_nolen(ST(0));
+ if (items > 2)
+ title = SvPV_nolen(ST(2));
+ result = MessageBoxA(GetActiveWindow(), msg, title, flags);
+ }
+ XSRETURN_IV(result);
+}
+
+XS(w32_LoadLibrary)
+{
+ dXSARGS;
+ HANDLE hHandle;
+
+ if (items != 1)
+ croak("usage: Win32::LoadLibrary($libname)\n");
+ hHandle = LoadLibraryA(SvPV_nolen(ST(0)));
+#ifdef _WIN64
+ XSRETURN_IV((DWORD_PTR)hHandle);
+#else
+ XSRETURN_IV((DWORD)hHandle);
+#endif
+}
+
+XS(w32_FreeLibrary)
+{
+ dXSARGS;
+
+ if (items != 1)
+ croak("usage: Win32::FreeLibrary($handle)\n");
+ if (FreeLibrary(INT2PTR(HINSTANCE, SvIV(ST(0))))) {
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+XS(w32_GetProcAddress)
+{
+ dXSARGS;
+
+ if (items != 2)
+ croak("usage: Win32::GetProcAddress($hinstance, $procname)\n");
+ XSRETURN_IV(PTR2IV(GetProcAddress(INT2PTR(HINSTANCE, SvIV(ST(0))), SvPV_nolen(ST(1)))));
+}
+
+XS(w32_RegisterServer)
+{
+ dXSARGS;
+ BOOL result = FALSE;
+ HMODULE module;
+
+ if (items != 1)
+ croak("usage: Win32::RegisterServer($libname)\n");
+
+ module = LoadLibraryA(SvPV_nolen(ST(0)));
+ if (module) {
+ PFNDllRegisterServer pfnDllRegisterServer;
+ GETPROC(DllRegisterServer);
+ if (pfnDllRegisterServer && pfnDllRegisterServer() == 0)
+ result = TRUE;
+ FreeLibrary(module);
+ }
+ ST(0) = boolSV(result);
+ XSRETURN(1);
+}
+
+XS(w32_UnregisterServer)
+{
+ dXSARGS;
+ BOOL result = FALSE;
+ HINSTANCE module;
+
+ if (items != 1)
+ croak("usage: Win32::UnregisterServer($libname)\n");
+
+ module = LoadLibraryA(SvPV_nolen(ST(0)));
+ if (module) {
+ PFNDllUnregisterServer pfnDllUnregisterServer;
+ GETPROC(DllUnregisterServer);
+ if (pfnDllUnregisterServer && pfnDllUnregisterServer() == 0)
+ result = TRUE;
+ FreeLibrary(module);
+ }
+ ST(0) = boolSV(result);
+ XSRETURN(1);
+}
+
+/* XXX rather bogus */
+XS(w32_GetArchName)
+{
+ dXSARGS;
+ XSRETURN_PV(getenv("PROCESSOR_ARCHITECTURE"));
+}
+
+XS(w32_GetChipName)
+{
+ dXSARGS;
+ SYSTEM_INFO sysinfo;
+ HMODULE module;
+ PFNGetNativeSystemInfo pfnGetNativeSystemInfo;
+
+ Zero(&sysinfo,1,SYSTEM_INFO);
+ module = GetModuleHandle("kernel32.dll");
+ GETPROC(GetNativeSystemInfo);
+ if (pfnGetNativeSystemInfo)
+ pfnGetNativeSystemInfo(&sysinfo);
+ else
+ GetSystemInfo(&sysinfo);
+
+ /* XXX docs say dwProcessorType is deprecated on NT */
+ XSRETURN_IV(sysinfo.dwProcessorType);
+}
+
+XS(w32_GuidGen)
+{
+ dXSARGS;
+ GUID guid;
+ char szGUID[50] = {'\0'};
+ HRESULT hr = CoCreateGuid(&guid);
+
+ if (SUCCEEDED(hr)) {
+ LPOLESTR pStr = NULL;
+ if (SUCCEEDED(StringFromCLSID(&guid, &pStr))) {
+ WideCharToMultiByte(CP_ACP, 0, pStr, (int)wcslen(pStr), szGUID,
+ sizeof(szGUID), NULL, NULL);
+ CoTaskMemFree(pStr);
+ XSRETURN_PV(szGUID);
+ }
+ }
+ XSRETURN_UNDEF;
+}
+
+XS(w32_GetFolderPath)
+{
+ dXSARGS;
+ char path[MAX_PATH+1];
+ WCHAR wpath[MAX_PATH+1];
+ int folder;
+ int create = 0;
+ HMODULE module;
+
+ if (items != 1 && items != 2)
+ croak("usage: Win32::GetFolderPath($csidl [, $create])\n");
+
+ folder = (int)SvIV(ST(0));
+ if (items == 2)
+ create = SvTRUE(ST(1)) ? CSIDL_FLAG_CREATE : 0;
+
+ module = LoadLibrary("shfolder.dll");
+ if (module) {
+ PFNSHGetFolderPathA pfna;
+ if (IsWin2000()) {
+ PFNSHGetFolderPathW pfnw;
+ pfnw = (PFNSHGetFolderPathW)GetProcAddress(module, "SHGetFolderPathW");
+ if (pfnw && SUCCEEDED(pfnw(NULL, folder|create, NULL, 0, wpath))) {
+ FreeLibrary(module);
+ ST(0) = wstr_to_ansipath(aTHX_ wpath);
+ XSRETURN(1);
+ }
+ }
+ pfna = (PFNSHGetFolderPathA)GetProcAddress(module, "SHGetFolderPathA");
+ if (pfna && SUCCEEDED(pfna(NULL, folder|create, NULL, 0, path))) {
+ FreeLibrary(module);
+ XSRETURN_PV(path);
+ }
+ FreeLibrary(module);
+ }
+
+ module = LoadLibrary("shell32.dll");
+ if (module) {
+ PFNSHGetSpecialFolderPathA pfna;
+ if (IsWin2000()) {
+ PFNSHGetSpecialFolderPathW pfnw;
+ pfnw = (PFNSHGetSpecialFolderPathW)GetProcAddress(module, "SHGetSpecialFolderPathW");
+ if (pfnw && pfnw(NULL, wpath, folder, !!create)) {
+ FreeLibrary(module);
+ ST(0) = wstr_to_ansipath(aTHX_ wpath);
+ XSRETURN(1);
+ }
+ }
+ pfna = (PFNSHGetSpecialFolderPathA)GetProcAddress(module, "SHGetSpecialFolderPathA");
+ if (pfna && pfna(NULL, path, folder, !!create)) {
+ FreeLibrary(module);
+ XSRETURN_PV(path);
+ }
+ FreeLibrary(module);
+ }
+
+ /* SHGetFolderPathW() and SHGetSpecialFolderPathW() may fail on older
+ * Perl versions that have replaced the Unicode environment with an
+ * ANSI version. Let's go spelunking in the registry now...
+ */
+ if (IsWin2000()) {
+ SV *sv;
+ HKEY hkey;
+ HKEY root = HKEY_CURRENT_USER;
+ WCHAR *name = NULL;
+
+ switch (folder) {
+ case CSIDL_ADMINTOOLS: name = L"Administrative Tools"; break;
+ case CSIDL_APPDATA: name = L"AppData"; break;
+ case CSIDL_CDBURN_AREA: name = L"CD Burning"; break;
+ case CSIDL_COOKIES: name = L"Cookies"; break;
+ case CSIDL_DESKTOP:
+ case CSIDL_DESKTOPDIRECTORY: name = L"Desktop"; break;
+ case CSIDL_FAVORITES: name = L"Favorites"; break;
+ case CSIDL_FONTS: name = L"Fonts"; break;
+ case CSIDL_HISTORY: name = L"History"; break;
+ case CSIDL_INTERNET_CACHE: name = L"Cache"; break;
+ case CSIDL_LOCAL_APPDATA: name = L"Local AppData"; break;
+ case CSIDL_MYMUSIC: name = L"My Music"; break;
+ case CSIDL_MYPICTURES: name = L"My Pictures"; break;
+ case CSIDL_MYVIDEO: name = L"My Video"; break;
+ case CSIDL_NETHOOD: name = L"NetHood"; break;
+ case CSIDL_PERSONAL: name = L"Personal"; break;
+ case CSIDL_PRINTHOOD: name = L"PrintHood"; break;
+ case CSIDL_PROGRAMS: name = L"Programs"; break;
+ case CSIDL_RECENT: name = L"Recent"; break;
+ case CSIDL_SENDTO: name = L"SendTo"; break;
+ case CSIDL_STARTMENU: name = L"Start Menu"; break;
+ case CSIDL_STARTUP: name = L"Startup"; break;
+ case CSIDL_TEMPLATES: name = L"Templates"; break;
+ /* XXX L"Local Settings" */
+ }
+
+ if (!name) {
+ root = HKEY_LOCAL_MACHINE;
+ switch (folder) {
+ case CSIDL_COMMON_ADMINTOOLS: name = L"Common Administrative Tools"; break;
+ case CSIDL_COMMON_APPDATA: name = L"Common AppData"; break;
+ case CSIDL_COMMON_DESKTOPDIRECTORY: name = L"Common Desktop"; break;
+ case CSIDL_COMMON_DOCUMENTS: name = L"Common Documents"; break;
+ case CSIDL_COMMON_FAVORITES: name = L"Common Favorites"; break;
+ case CSIDL_COMMON_PROGRAMS: name = L"Common Programs"; break;
+ case CSIDL_COMMON_STARTMENU: name = L"Common Start Menu"; break;
+ case CSIDL_COMMON_STARTUP: name = L"Common Startup"; break;
+ case CSIDL_COMMON_TEMPLATES: name = L"Common Templates"; break;
+ case CSIDL_COMMON_MUSIC: name = L"CommonMusic"; break;
+ case CSIDL_COMMON_PICTURES: name = L"CommonPictures"; break;
+ case CSIDL_COMMON_VIDEO: name = L"CommonVideo"; break;
+ }
+ }
+ /* XXX todo
+ * case CSIDL_SYSTEM # GetSystemDirectory()
+ * case CSIDL_RESOURCES # %windir%\Resources\, For theme and other windows resources.
+ * case CSIDL_RESOURCES_LOCALIZED # %windir%\Resources\<LangID>, for theme and other windows specific resources.
+ */
+
+#define SHELL_FOLDERS "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"
+
+ if (name && RegOpenKeyEx(root, SHELL_FOLDERS, 0, KEY_QUERY_VALUE, &hkey) == ERROR_SUCCESS) {
+ WCHAR data[MAX_PATH+1];
+ DWORD cb = sizeof(data)-sizeof(WCHAR);
+ DWORD type = REG_NONE;
+ long rc = RegQueryValueExW(hkey, name, NULL, &type, (BYTE*)&data, &cb);
+ RegCloseKey(hkey);
+ if (rc == ERROR_SUCCESS && type == REG_SZ && cb > sizeof(WCHAR) && data[0]) {
+ /* Make sure the string is properly terminated */
+ data[cb/sizeof(WCHAR)] = '\0';
+ ST(0) = wstr_to_ansipath(aTHX_ data);
+ XSRETURN(1);
+ }
+ }
+
+#undef SHELL_FOLDERS
+
+ /* Unders some circumstances the registry entries seem to have a null string
+ * as their value even when the directory already exists. The environment
+ * variables do get set though, so try re-create a Unicode environment and
+ * check if they are there.
+ */
+ sv = NULL;
+ switch (folder) {
+ case CSIDL_APPDATA: sv = get_unicode_env(aTHX_ L"APPDATA"); break;
+ case CSIDL_PROFILE: sv = get_unicode_env(aTHX_ L"USERPROFILE"); break;
+ case CSIDL_PROGRAM_FILES: sv = get_unicode_env(aTHX_ L"ProgramFiles"); break;
+ case CSIDL_PROGRAM_FILES_COMMON: sv = get_unicode_env(aTHX_ L"CommonProgramFiles"); break;
+ case CSIDL_WINDOWS: sv = get_unicode_env(aTHX_ L"SystemRoot"); break;
+ }
+ if (sv) {
+ ST(0) = sv;
+ XSRETURN(1);
+ }
+ }
+
+ XSRETURN_UNDEF;
+}
+
+XS(w32_GetFileVersion)
+{
+ dXSARGS;
+ DWORD size;
+ DWORD handle;
+ char *filename;
+ char *data;
+
+ if (items != 1)
+ croak("usage: Win32::GetFileVersion($filename)\n");
+
+ filename = SvPV_nolen(ST(0));
+ size = GetFileVersionInfoSize(filename, &handle);
+ if (!size)
+ XSRETURN_UNDEF;
+
+ New(0, data, size, char);
+ if (!data)
+ XSRETURN_UNDEF;
+
+ if (GetFileVersionInfo(filename, handle, size, data)) {
+ VS_FIXEDFILEINFO *info;
+ UINT len;
+ if (VerQueryValue(data, "\\", (void**)&info, &len)) {
+ int dwValueMS1 = (info->dwFileVersionMS>>16);
+ int dwValueMS2 = (info->dwFileVersionMS&0xffff);
+ int dwValueLS1 = (info->dwFileVersionLS>>16);
+ int dwValueLS2 = (info->dwFileVersionLS&0xffff);
+
+ if (GIMME_V == G_ARRAY) {
+ EXTEND(SP, 4);
+ XST_mIV(0, dwValueMS1);
+ XST_mIV(1, dwValueMS2);
+ XST_mIV(2, dwValueLS1);
+ XST_mIV(3, dwValueLS2);
+ items = 4;
+ }
+ else {
+ char version[50];
+ sprintf(version, "%d.%d.%d.%d", dwValueMS1, dwValueMS2, dwValueLS1, dwValueLS2);
+ XST_mPV(0, version);
+ }
+ }
+ }
+ else
+ items = 0;
+
+ Safefree(data);
+ XSRETURN(items);
+}
+
+#ifdef __CYGWIN__
+XS(w32_SetChildShowWindow)
+{
+ /* This function doesn't do anything useful for cygwin. In the
+ * MSWin32 case it modifies w32_showwindow, which is used by
+ * win32_spawnvp(). Since w32_showwindow is an internal variable
+ * inside the thread_intern structure, the MSWin32 implementation
+ * lives in win32/win32.c in the core Perl distribution.
+ */
+ dXSARGS;
+ XSRETURN_UNDEF;
+}
+#endif
+
+XS(w32_GetCwd)
+{
+ dXSARGS;
+ /* Make the host for current directory */
+ char* ptr = PerlEnv_get_childdir();
+ /*
+ * If ptr != Nullch
+ * then it worked, set PV valid,
+ * else return 'undef'
+ */
+ if (ptr) {
+ SV *sv = sv_newmortal();
+ sv_setpv(sv, ptr);
+ PerlEnv_free_childdir(ptr);
+
+#ifndef INCOMPLETE_TAINTS
+ SvTAINTED_on(sv);
+#endif
+
+ EXTEND(SP,1);
+ ST(0) = sv;
+ XSRETURN(1);
+ }
+ XSRETURN_UNDEF;
+}
+
+XS(w32_SetCwd)
+{
+ dXSARGS;
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::SetCwd($cwd)");
+
+ if (IsWin2000() && SvUTF8(ST(0))) {
+ WCHAR *wide = sv_to_wstr(aTHX_ ST(0));
+ char *ansi = my_ansipath(wide);
+ int rc = PerlDir_chdir(ansi);
+ Safefree(wide);
+ Safefree(ansi);
+ if (!rc)
+ XSRETURN_YES;
+ }
+ else {
+ if (!PerlDir_chdir(SvPV_nolen(ST(0))))
+ XSRETURN_YES;
+ }
+
+ XSRETURN_NO;
+}
+
+XS(w32_GetNextAvailDrive)
+{
+ dXSARGS;
+ char ix = 'C';
+ char root[] = "_:\\";
+
+ EXTEND(SP,1);
+ while (ix <= 'Z') {
+ root[0] = ix++;
+ if (GetDriveType(root) == 1) {
+ root[2] = '\0';
+ XSRETURN_PV(root);
+ }
+ }
+ XSRETURN_UNDEF;
+}
+
+XS(w32_GetLastError)
+{
+ dXSARGS;
+ EXTEND(SP,1);
+ XSRETURN_IV(GetLastError());
+}
+
+XS(w32_SetLastError)
+{
+ dXSARGS;
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::SetLastError($error)");
+ SetLastError((DWORD)SvIV(ST(0)));
+ XSRETURN_EMPTY;
+}
+
+XS(w32_LoginName)
+{
+ dXSARGS;
+ EXTEND(SP,1);
+ if (IsWin2000()) {
+ WCHAR name[128];
+ DWORD size = countof(name);
+ if (GetUserNameW(name, &size)) {
+ ST(0) = wstr_to_sv(aTHX_ name);
+ XSRETURN(1);
+ }
+ }
+ else {
+ char name[128];
+ DWORD size = countof(name);
+ if (GetUserNameA(name, &size)) {
+ /* size includes NULL */
+ ST(0) = sv_2mortal(newSVpvn(name, size-1));
+ XSRETURN(1);
+ }
+ }
+ XSRETURN_UNDEF;
+}
+
+XS(w32_NodeName)
+{
+ dXSARGS;
+ char name[MAX_COMPUTERNAME_LENGTH+1];
+ DWORD size = sizeof(name);
+ EXTEND(SP,1);
+ if (GetComputerName(name,&size)) {
+ /* size does NOT include NULL :-( */
+ ST(0) = sv_2mortal(newSVpvn(name,size));
+ XSRETURN(1);
+ }
+ XSRETURN_UNDEF;
+}
+
+
+XS(w32_DomainName)
+{
+ dXSARGS;
+ HMODULE module = LoadLibrary("netapi32.dll");
+ PFNNetApiBufferFree pfnNetApiBufferFree;
+ PFNNetWkstaGetInfo pfnNetWkstaGetInfo;
+
+ if (module) {
+ GETPROC(NetApiBufferFree);
+ GETPROC(NetWkstaGetInfo);
+ }
+ EXTEND(SP,1);
+ if (module && pfnNetWkstaGetInfo && pfnNetApiBufferFree) {
+ /* this way is more reliable, in case user has a local account. */
+ char dname[256];
+ DWORD dnamelen = sizeof(dname);
+ struct {
+ DWORD wki100_platform_id;
+ LPWSTR wki100_computername;
+ LPWSTR wki100_langroup;
+ DWORD wki100_ver_major;
+ DWORD wki100_ver_minor;
+ } *pwi;
+ DWORD retval;
+ retval = pfnNetWkstaGetInfo(NULL, 100, &pwi);
+ /* NERR_Success *is* 0*/
+ if (retval == 0) {
+ if (pwi->wki100_langroup && *(pwi->wki100_langroup)) {
+ WideCharToMultiByte(CP_ACP, 0, pwi->wki100_langroup,
+ -1, (LPSTR)dname, dnamelen, NULL, NULL);
+ }
+ else {
+ WideCharToMultiByte(CP_ACP, 0, pwi->wki100_computername,
+ -1, (LPSTR)dname, dnamelen, NULL, NULL);
+ }
+ pfnNetApiBufferFree(pwi);
+ FreeLibrary(module);
+ XSRETURN_PV(dname);
+ }
+ FreeLibrary(module);
+ SetLastError(retval);
+ }
+ else {
+ /* Win95 doesn't have NetWksta*(), so do it the old way */
+ char name[256];
+ DWORD size = sizeof(name);
+ if (module)
+ FreeLibrary(module);
+ if (GetUserName(name,&size)) {
+ char sid[ONE_K_BUFSIZE];
+ DWORD sidlen = sizeof(sid);
+ char dname[256];
+ DWORD dnamelen = sizeof(dname);
+ SID_NAME_USE snu;
+ if (LookupAccountName(NULL, name, (PSID)&sid, &sidlen,
+ dname, &dnamelen, &snu)) {
+ XSRETURN_PV(dname); /* all that for this */
+ }
+ }
+ }
+ XSRETURN_UNDEF;
+}
+
+XS(w32_FsType)
+{
+ dXSARGS;
+ char fsname[256];
+ DWORD flags, filecomplen;
+ if (GetVolumeInformation(NULL, NULL, 0, NULL, &filecomplen,
+ &flags, fsname, sizeof(fsname))) {
+ if (GIMME_V == G_ARRAY) {
+ XPUSHs(sv_2mortal(newSVpvn(fsname,strlen(fsname))));
+ XPUSHs(sv_2mortal(newSViv(flags)));
+ XPUSHs(sv_2mortal(newSViv(filecomplen)));
+ PUTBACK;
+ return;
+ }
+ EXTEND(SP,1);
+ XSRETURN_PV(fsname);
+ }
+ XSRETURN_EMPTY;
+}
+
+XS(w32_GetOSVersion)
+{
+ dXSARGS;
+
+ if (GIMME_V == G_SCALAR) {
+ XSRETURN_IV(g_osver.dwPlatformId);
+ }
+ XPUSHs(sv_2mortal(newSVpvn(g_osver.szCSDVersion, strlen(g_osver.szCSDVersion))));
+
+ XPUSHs(sv_2mortal(newSViv(g_osver.dwMajorVersion)));
+ XPUSHs(sv_2mortal(newSViv(g_osver.dwMinorVersion)));
+ XPUSHs(sv_2mortal(newSViv(g_osver.dwBuildNumber)));
+ XPUSHs(sv_2mortal(newSViv(g_osver.dwPlatformId)));
+ if (g_osver_ex) {
+ XPUSHs(sv_2mortal(newSViv(g_osver.wServicePackMajor)));
+ XPUSHs(sv_2mortal(newSViv(g_osver.wServicePackMinor)));
+ XPUSHs(sv_2mortal(newSViv(g_osver.wSuiteMask)));
+ XPUSHs(sv_2mortal(newSViv(g_osver.wProductType)));
+ }
+ PUTBACK;
+}
+
+XS(w32_IsWinNT)
+{
+ dXSARGS;
+ EXTEND(SP,1);
+ XSRETURN_IV(IsWinNT());
+}
+
+XS(w32_IsWin95)
+{
+ dXSARGS;
+ EXTEND(SP,1);
+ XSRETURN_IV(IsWin95());
+}
+
+XS(w32_FormatMessage)
+{
+ dXSARGS;
+ DWORD source = 0;
+ char msgbuf[ONE_K_BUFSIZE];
+
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::FormatMessage($errno)");
+
+ if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM,
+ &source, (DWORD)SvIV(ST(0)), 0,
+ msgbuf, sizeof(msgbuf)-1, NULL))
+ {
+ XSRETURN_PV(msgbuf);
+ }
+
+ XSRETURN_UNDEF;
+}
+
+XS(w32_Spawn)
+{
+ dXSARGS;
+ char *cmd, *args;
+ void *env;
+ char *dir;
+ PROCESS_INFORMATION stProcInfo;
+ STARTUPINFO stStartInfo;
+ BOOL bSuccess = FALSE;
+
+ if (items != 3)
+ Perl_croak(aTHX_ "usage: Win32::Spawn($cmdName, $args, $PID)");
+
+ cmd = SvPV_nolen(ST(0));
+ args = SvPV_nolen(ST(1));
+
+ env = PerlEnv_get_childenv();
+ dir = PerlEnv_get_childdir();
+
+ memset(&stStartInfo, 0, sizeof(stStartInfo)); /* Clear the block */
+ stStartInfo.cb = sizeof(stStartInfo); /* Set the structure size */
+ stStartInfo.dwFlags = STARTF_USESHOWWINDOW; /* Enable wShowWindow control */
+ stStartInfo.wShowWindow = SW_SHOWMINNOACTIVE; /* Start min (normal) */
+
+ if (CreateProcess(
+ cmd, /* Image path */
+ args, /* Arguments for command line */
+ NULL, /* Default process security */
+ NULL, /* Default thread security */
+ FALSE, /* Must be TRUE to use std handles */
+ NORMAL_PRIORITY_CLASS, /* No special scheduling */
+ env, /* Inherit our environment block */
+ dir, /* Inherit our currrent directory */
+ &stStartInfo, /* -> Startup info */
+ &stProcInfo)) /* <- Process info (if OK) */
+ {
+ int pid = (int)stProcInfo.dwProcessId;
+ if (IsWin95() && pid < 0)
+ pid = -pid;
+ sv_setiv(ST(2), pid);
+ CloseHandle(stProcInfo.hThread);/* library source code does this. */
+ bSuccess = TRUE;
+ }
+ PerlEnv_free_childenv(env);
+ PerlEnv_free_childdir(dir);
+ XSRETURN_IV(bSuccess);
+}
+
+XS(w32_GetTickCount)
+{
+ dXSARGS;
+ DWORD msec = GetTickCount();
+ EXTEND(SP,1);
+ if ((IV)msec > 0)
+ XSRETURN_IV(msec);
+ XSRETURN_NV(msec);
+}
+
+XS(w32_GetShortPathName)
+{
+ dXSARGS;
+ SV *shortpath;
+ DWORD len;
+
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::GetShortPathName($longPathName)");
+
+ if (IsWin2000()) {
+ WCHAR wshort[MAX_PATH+1];
+ WCHAR *wlong = sv_to_wstr(aTHX_ ST(0));
+ len = GetShortPathNameW(wlong, wshort, countof(wshort));
+ Safefree(wlong);
+ if (len && len < sizeof(wshort)) {
+ ST(0) = wstr_to_sv(aTHX_ wshort);
+ XSRETURN(1);
+ }
+ XSRETURN_UNDEF;
+ }
+
+ shortpath = sv_mortalcopy(ST(0));
+ SvUPGRADE(shortpath, SVt_PV);
+ if (!SvPVX(shortpath) || !SvLEN(shortpath))
+ XSRETURN_UNDEF;
+
+ /* src == target is allowed */
+ do {
+ len = GetShortPathName(SvPVX(shortpath),
+ SvPVX(shortpath),
+ (DWORD)SvLEN(shortpath));
+ } while (len >= SvLEN(shortpath) && sv_grow(shortpath,len+1));
+ if (len) {
+ SvCUR_set(shortpath,len);
+ *SvEND(shortpath) = '\0';
+ ST(0) = shortpath;
+ XSRETURN(1);
+ }
+ XSRETURN_UNDEF;
+}
+
+XS(w32_GetFullPathName)
+{
+ dXSARGS;
+ char *fullname;
+ char *ansi = NULL;
+
+/* The code below relies on the fact that PerlDir_mapX() returns an
+ * absolute path, which is only true under PERL_IMPLICIT_SYS when
+ * we use the virtualization code from win32/vdir.h.
+ * Without it PerlDir_mapX() is a no-op and we need to use the same
+ * code as we use for Cygwin.
+ */
+#if __CYGWIN__ || !defined(PERL_IMPLICIT_SYS)
+ char buffer[2*MAX_PATH];
+#endif
+
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::GetFullPathName($filename)");
+
+#if __CYGWIN__ || !defined(PERL_IMPLICIT_SYS)
+ if (IsWin2000()) {
+ WCHAR *filename = sv_to_wstr(aTHX_ ST(0));
+ WCHAR full[2*MAX_PATH];
+ DWORD len = GetFullPathNameW(filename, countof(full), full, NULL);
+ Safefree(filename);
+ if (len == 0 || len >= countof(full))
+ XSRETURN_EMPTY;
+ ansi = fullname = my_ansipath(full);
+ }
+ else {
+ DWORD len = GetFullPathNameA(SvPV_nolen(ST(0)), countof(buffer), buffer, NULL);
+ if (len == 0 || len >= countof(buffer))
+ XSRETURN_EMPTY;
+ fullname = buffer;
+ }
+#else
+ /* Don't use my_ansipath() unless the $filename argument is in Unicode.
+ * If the relative path doesn't exist, GetShortPathName() will fail and
+ * my_ansipath() will use the long name with replacement characters.
+ * In that case we will be better off using PerlDir_mapA(), which
+ * already uses the ANSI name of the current directory.
+ *
+ * XXX The one missing case is where we could downgrade $filename
+ * XXX from UTF8 into the current codepage.
+ */
+ if (IsWin2000() && SvUTF8(ST(0))) {
+ WCHAR *filename = sv_to_wstr(aTHX_ ST(0));
+ WCHAR *mappedname = PerlDir_mapW(filename);
+ Safefree(filename);
+ ansi = fullname = my_ansipath(mappedname);
+ }
+ else {
+ fullname = PerlDir_mapA(SvPV_nolen(ST(0)));
+ }
+# if PERL_VERSION < 8
+ {
+ /* PerlDir_mapX() in Perl 5.6 used to return forward slashes */
+ char *str = fullname;
+ while (*str) {
+ if (*str == '/')
+ *str = '\\';
+ ++str;
+ }
+ }
+# endif
+#endif
+
+ /* GetFullPathName() on Windows NT drops trailing backslash */
+ if (g_osver.dwMajorVersion == 4 && *fullname) {
+ STRLEN len;
+ char *pv = SvPV(ST(0), len);
+ char *lastchar = fullname + strlen(fullname) - 1;
+ /* If ST(0) ends with a slash, but fullname doesn't ... */
+ if (len && (pv[len-1] == '/' || pv[len-1] == '\\') && *lastchar != '\\') {
+ /* fullname is the MAX_PATH+1 sized buffer returned from PerlDir_mapA()
+ * or the 2*MAX_PATH sized local buffer in the __CYGWIN__ case.
+ */
+ if (lastchar - fullname < MAX_PATH - 1)
+ strcpy(lastchar+1, "\\");
+ }
+ }
+
+ if (GIMME_V == G_ARRAY) {
+ char *filepart = strrchr(fullname, '\\');
+
+ EXTEND(SP,1);
+ if (filepart) {
+ XST_mPV(1, ++filepart);
+ *filepart = '\0';
+ }
+ else {
+ XST_mPVN(1, "", 0);
+ }
+ items = 2;
+ }
+ XST_mPV(0, fullname);
+
+ if (ansi)
+ Safefree(ansi);
+ XSRETURN(items);
+}
+
+XS(w32_GetLongPathName)
+{
+ dXSARGS;
+
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::GetLongPathName($pathname)");
+
+ if (IsWin2000()) {
+ WCHAR *wstr = sv_to_wstr(aTHX_ ST(0));
+ WCHAR wide_path[MAX_PATH+1];
+ WCHAR *long_path;
+
+ if (wcslen(wstr) < countof(wide_path)) {
+ wcscpy(wide_path, wstr);
+ long_path = my_longpathW(wide_path);
+ if (long_path) {
+ Safefree(wstr);
+ ST(0) = wstr_to_sv(aTHX_ long_path);
+ XSRETURN(1);
+ }
+ }
+ Safefree(wstr);
+ }
+ else {
+ SV *path;
+ char tmpbuf[MAX_PATH+1];
+ char *pathstr;
+ STRLEN len;
+
+ path = ST(0);
+ pathstr = SvPV(path,len);
+ if (len < sizeof(tmpbuf)) {
+ strcpy(tmpbuf, pathstr);
+ pathstr = my_longpathA(tmpbuf);
+ if (pathstr) {
+ ST(0) = sv_2mortal(newSVpvn(pathstr, strlen(pathstr)));
+ XSRETURN(1);
+ }
+ }
+ }
+ XSRETURN_EMPTY;
+}
+
+XS(w32_GetANSIPathName)
+{
+ dXSARGS;
+ WCHAR *wide_path;
+
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::GetANSIPathName($pathname)");
+
+ wide_path = sv_to_wstr(aTHX_ ST(0));
+ ST(0) = wstr_to_ansipath(aTHX_ wide_path);
+ Safefree(wide_path);
+ XSRETURN(1);
+}
+
+XS(w32_Sleep)
+{
+ dXSARGS;
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::Sleep($milliseconds)");
+ Sleep((DWORD)SvIV(ST(0)));
+ XSRETURN_YES;
+}
+
+XS(w32_CopyFile)
+{
+ dXSARGS;
+ BOOL bResult;
+ char *pszSourceFile;
+ char szSourceFile[MAX_PATH+1];
+
+ if (items != 3)
+ Perl_croak(aTHX_ "usage: Win32::CopyFile($from, $to, $overwrite)");
+
+ pszSourceFile = PerlDir_mapA(SvPV_nolen(ST(0)));
+ if (strlen(pszSourceFile) < sizeof(szSourceFile)) {
+ strcpy(szSourceFile, pszSourceFile);
+ bResult = CopyFileA(szSourceFile, PerlDir_mapA(SvPV_nolen(ST(1))), !SvTRUE(ST(2)));
+ if (bResult)
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+XS(w32_OutputDebugString)
+{
+ dXSARGS;
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::OutputDebugString($string)");
+
+ if (SvUTF8(ST(0))) {
+ WCHAR *str = sv_to_wstr(aTHX_ ST(0));
+ OutputDebugStringW(str);
+ Safefree(str);
+ }
+ else
+ OutputDebugStringA(SvPV_nolen(ST(0)));
+
+ XSRETURN_EMPTY;
+}
+
+XS(w32_GetCurrentProcessId)
+{
+ dXSARGS;
+ EXTEND(SP,1);
+ XSRETURN_IV(GetCurrentProcessId());
+}
+
+XS(w32_GetCurrentThreadId)
+{
+ dXSARGS;
+ EXTEND(SP,1);
+ XSRETURN_IV(GetCurrentThreadId());
+}
+
+XS(w32_CreateDirectory)
+{
+ dXSARGS;
+ BOOL result;
+
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::CreateDirectory($dir)");
+
+ if (IsWin2000() && SvUTF8(ST(0))) {
+ WCHAR *dir = sv_to_wstr(aTHX_ ST(0));
+ result = CreateDirectoryW(dir, NULL);
+ Safefree(dir);
+ }
+ else {
+ result = CreateDirectoryA(SvPV_nolen(ST(0)), NULL);
+ }
+
+ ST(0) = boolSV(result);
+ XSRETURN(1);
+}
+
+XS(w32_CreateFile)
+{
+ dXSARGS;
+ HANDLE handle;
+
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::CreateFile($file)");
+
+ if (IsWin2000() && SvUTF8(ST(0))) {
+ WCHAR *file = sv_to_wstr(aTHX_ ST(0));
+ handle = CreateFileW(file, GENERIC_WRITE, FILE_SHARE_WRITE,
+ NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
+ Safefree(file);
+ }
+ else {
+ handle = CreateFileA(SvPV_nolen(ST(0)), GENERIC_WRITE, FILE_SHARE_WRITE,
+ NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
+ }
+
+ if (handle != INVALID_HANDLE_VALUE)
+ CloseHandle(handle);
+
+ ST(0) = boolSV(handle != INVALID_HANDLE_VALUE);
+ XSRETURN(1);
+}
+
+XS(w32_GetSystemMetrics)
+{
+ dXSARGS;
+
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::GetSystemMetrics($index)");
+
+ XSRETURN_IV(GetSystemMetrics((int)SvIV(ST(0))));
+}
+
+XS(w32_GetProductInfo)
+{
+ dXSARGS;
+ DWORD type;
+ HMODULE module;
+ PFNGetProductInfo pfnGetProductInfo;
+
+ if (items != 4)
+ Perl_croak(aTHX_ "usage: Win32::GetProductInfo($major,$minor,$spmajor,$spminor)");
+
+ module = GetModuleHandle("kernel32.dll");
+ GETPROC(GetProductInfo);
+ if (pfnGetProductInfo &&
+ pfnGetProductInfo((DWORD)SvIV(ST(0)), (DWORD)SvIV(ST(1)),
+ (DWORD)SvIV(ST(2)), (DWORD)SvIV(ST(3)), &type))
+ {
+ XSRETURN_IV(type);
+ }
+
+ /* PRODUCT_UNDEFINED */
+ XSRETURN_IV(0);
+}
+
+XS(w32_GetACP)
+{
+ dXSARGS;
+ EXTEND(SP,1);
+ XSRETURN_IV(GetACP());
+}
+
+XS(w32_GetConsoleCP)
+{
+ dXSARGS;
+ EXTEND(SP,1);
+ XSRETURN_IV(GetConsoleCP());
+}
+
+XS(w32_GetConsoleOutputCP)
+{
+ dXSARGS;
+ EXTEND(SP,1);
+ XSRETURN_IV(GetConsoleOutputCP());
+}
+
+XS(w32_GetOEMCP)
+{
+ dXSARGS;
+ EXTEND(SP,1);
+ XSRETURN_IV(GetOEMCP());
+}
+
+XS(w32_SetConsoleCP)
+{
+ dXSARGS;
+
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::SetConsoleCP($id)");
+
+ XSRETURN_IV(SetConsoleCP((int)SvIV(ST(0))));
+}
+
+XS(w32_SetConsoleOutputCP)
+{
+ dXSARGS;
+
+ if (items != 1)
+ Perl_croak(aTHX_ "usage: Win32::SetConsoleOutputCP($id)");
+
+ XSRETURN_IV(SetConsoleOutputCP((int)SvIV(ST(0))));
+}
+
+MODULE = Win32 PACKAGE = Win32
+
+PROTOTYPES: DISABLE
+
+BOOT:
+{
+ char *file = __FILE__;
+
+ if (g_osver.dwOSVersionInfoSize == 0) {
+ g_osver.dwOSVersionInfoSize = sizeof(g_osver);
+ if (!GetVersionExA((OSVERSIONINFOA*)&g_osver)) {
+ g_osver_ex = FALSE;
+ g_osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
+ GetVersionExA((OSVERSIONINFOA*)&g_osver);
+ }
+ }
+
+ newXS("Win32::LookupAccountName", w32_LookupAccountName, file);
+ newXS("Win32::LookupAccountSID", w32_LookupAccountSID, file);
+ newXS("Win32::InitiateSystemShutdown", w32_InitiateSystemShutdown, file);
+ newXS("Win32::AbortSystemShutdown", w32_AbortSystemShutdown, file);
+ newXS("Win32::ExpandEnvironmentStrings", w32_ExpandEnvironmentStrings, file);
+ newXS("Win32::MsgBox", w32_MsgBox, file);
+ newXS("Win32::LoadLibrary", w32_LoadLibrary, file);
+ newXS("Win32::FreeLibrary", w32_FreeLibrary, file);
+ newXS("Win32::GetProcAddress", w32_GetProcAddress, file);
+ newXS("Win32::RegisterServer", w32_RegisterServer, file);
+ newXS("Win32::UnregisterServer", w32_UnregisterServer, file);
+ newXS("Win32::GetArchName", w32_GetArchName, file);
+ newXS("Win32::GetChipName", w32_GetChipName, file);
+ newXS("Win32::GuidGen", w32_GuidGen, file);
+ newXS("Win32::GetFolderPath", w32_GetFolderPath, file);
+ newXS("Win32::IsAdminUser", w32_IsAdminUser, file);
+ newXS("Win32::GetFileVersion", w32_GetFileVersion, file);
+
+ newXS("Win32::GetCwd", w32_GetCwd, file);
+ newXS("Win32::SetCwd", w32_SetCwd, file);
+ newXS("Win32::GetNextAvailDrive", w32_GetNextAvailDrive, file);
+ newXS("Win32::GetLastError", w32_GetLastError, file);
+ newXS("Win32::SetLastError", w32_SetLastError, file);
+ newXS("Win32::LoginName", w32_LoginName, file);
+ newXS("Win32::NodeName", w32_NodeName, file);
+ newXS("Win32::DomainName", w32_DomainName, file);
+ newXS("Win32::FsType", w32_FsType, file);
+ newXS("Win32::GetOSVersion", w32_GetOSVersion, file);
+ newXS("Win32::IsWinNT", w32_IsWinNT, file);
+ newXS("Win32::IsWin95", w32_IsWin95, file);
+ newXS("Win32::FormatMessage", w32_FormatMessage, file);
+ newXS("Win32::Spawn", w32_Spawn, file);
+ newXS("Win32::GetTickCount", w32_GetTickCount, file);
+ newXS("Win32::GetShortPathName", w32_GetShortPathName, file);
+ newXS("Win32::GetFullPathName", w32_GetFullPathName, file);
+ newXS("Win32::GetLongPathName", w32_GetLongPathName, file);
+ newXS("Win32::GetANSIPathName", w32_GetANSIPathName, file);
+ newXS("Win32::CopyFile", w32_CopyFile, file);
+ newXS("Win32::Sleep", w32_Sleep, file);
+ newXS("Win32::OutputDebugString", w32_OutputDebugString, file);
+ newXS("Win32::GetCurrentProcessId", w32_GetCurrentProcessId, file);
+ newXS("Win32::GetCurrentThreadId", w32_GetCurrentThreadId, file);
+ newXS("Win32::CreateDirectory", w32_CreateDirectory, file);
+ newXS("Win32::CreateFile", w32_CreateFile, file);
+ newXS("Win32::GetSystemMetrics", w32_GetSystemMetrics, file);
+ newXS("Win32::GetProductInfo", w32_GetProductInfo, file);
+ newXS("Win32::GetACP", w32_GetACP, file);
+ newXS("Win32::GetConsoleCP", w32_GetConsoleCP, file);
+ newXS("Win32::GetConsoleOutputCP", w32_GetConsoleOutputCP, file);
+ newXS("Win32::GetOEMCP", w32_GetOEMCP, file);
+ newXS("Win32::SetConsoleCP", w32_SetConsoleCP, file);
+ newXS("Win32::SetConsoleOutputCP", w32_SetConsoleOutputCP, file);
+#ifdef __CYGWIN__
+ newXS("Win32::SetChildShowWindow", w32_SetChildShowWindow, file);
+#endif
+ XSRETURN_YES;
+}
diff --git a/gnu/usr.bin/perl/cpan/Win32/longpath.inc b/gnu/usr.bin/perl/cpan/Win32/longpath.inc
index 2e5fd843a63..ea6c1de48ac 100644
--- a/gnu/usr.bin/perl/cpan/Win32/longpath.inc
+++ b/gnu/usr.bin/perl/cpan/Win32/longpath.inc
@@ -1,111 +1,111 @@
-#ifndef isSLASH
-#define isSLASH(c) ((c) == '/' || (c) == '\\')
-#define SKIP_SLASHES(s) \
- STMT_START { \
- while (*(s) && isSLASH(*(s))) \
- ++(s); \
- } STMT_END
-#define COPY_NONSLASHES(d,s) \
- STMT_START { \
- while (*(s) && !isSLASH(*(s))) \
- *(d)++ = *(s)++; \
- } STMT_END
-#endif
-
-/* Find the longname of a given path. path is destructively modified.
- * It should have space for at least MAX_PATH characters. */
-
-CHAR_T *
-LONGPATH(CHAR_T *path)
-{
- WIN32_FIND_DATA_T fdata;
- HANDLE fhand;
- CHAR_T tmpbuf[MAX_PATH+1];
- CHAR_T *tmpstart = tmpbuf;
- CHAR_T *start = path;
- CHAR_T sep;
- if (!path)
- return NULL;
-
- /* drive prefix */
- if (isALPHA(path[0]) && path[1] == ':') {
- start = path + 2;
- *tmpstart++ = toupper(path[0]);
- *tmpstart++ = ':';
- }
- /* UNC prefix */
- else if (isSLASH(path[0]) && isSLASH(path[1])) {
- start = path + 2;
- *tmpstart++ = path[0];
- *tmpstart++ = path[1];
- SKIP_SLASHES(start);
- COPY_NONSLASHES(tmpstart,start); /* copy machine name */
- if (*start) {
- *tmpstart++ = *start++;
- SKIP_SLASHES(start);
- COPY_NONSLASHES(tmpstart,start); /* copy share name */
- }
- }
- *tmpstart = '\0';
- while (*start) {
- /* copy initial slash, if any */
- if (isSLASH(*start)) {
- *tmpstart++ = *start++;
- *tmpstart = '\0';
- SKIP_SLASHES(start);
- }
-
- /* FindFirstFile() expands "." and "..", so we need to pass
- * those through unmolested */
- if (*start == '.'
- && (!start[1] || isSLASH(start[1])
- || (start[1] == '.' && (!start[2] || isSLASH(start[2])))))
- {
- COPY_NONSLASHES(tmpstart,start); /* copy "." or ".." */
- *tmpstart = '\0';
- continue;
- }
-
- /* if this is the end, bust outta here */
- if (!*start)
- break;
-
- /* now we're at a non-slash; walk up to next slash */
- while (*start && !isSLASH(*start))
- ++start;
-
- /* stop and find full name of component */
- sep = *start;
- *start = '\0';
- fhand = FN_FINDFIRSTFILE(path,&fdata);
- *start = sep;
- if (fhand != INVALID_HANDLE_VALUE) {
- STRLEN len = FN_STRLEN(fdata.cFileName);
- if ((STRLEN)(tmpbuf + sizeof(tmpbuf) - tmpstart) > len) {
- FN_STRCPY(tmpstart, fdata.cFileName);
- tmpstart += len;
- FindClose(fhand);
- }
- else {
- FindClose(fhand);
- errno = ERANGE;
- return NULL;
- }
- }
- else {
- /* failed a step, just return without side effects */
- /*PerlIO_printf(Perl_debug_log, "Failed to find %s\n", path);*/
- errno = EINVAL;
- return NULL;
- }
- }
- FN_STRCPY(path,tmpbuf);
- return path;
-}
-
-#undef CHAR_T
-#undef WIN32_FIND_DATA_T
-#undef FN_FINDFIRSTFILE
-#undef FN_STRLEN
-#undef FN_STRCPY
-#undef LONGPATH
+#ifndef isSLASH
+#define isSLASH(c) ((c) == '/' || (c) == '\\')
+#define SKIP_SLASHES(s) \
+ STMT_START { \
+ while (*(s) && isSLASH(*(s))) \
+ ++(s); \
+ } STMT_END
+#define COPY_NONSLASHES(d,s) \
+ STMT_START { \
+ while (*(s) && !isSLASH(*(s))) \
+ *(d)++ = *(s)++; \
+ } STMT_END
+#endif
+
+/* Find the longname of a given path. path is destructively modified.
+ * It should have space for at least MAX_PATH characters. */
+
+CHAR_T *
+LONGPATH(CHAR_T *path)
+{
+ WIN32_FIND_DATA_T fdata;
+ HANDLE fhand;
+ CHAR_T tmpbuf[MAX_PATH+1];
+ CHAR_T *tmpstart = tmpbuf;
+ CHAR_T *start = path;
+ CHAR_T sep;
+ if (!path)
+ return NULL;
+
+ /* drive prefix */
+ if (isALPHA(path[0]) && path[1] == ':') {
+ start = path + 2;
+ *tmpstart++ = toupper(path[0]);
+ *tmpstart++ = ':';
+ }
+ /* UNC prefix */
+ else if (isSLASH(path[0]) && isSLASH(path[1])) {
+ start = path + 2;
+ *tmpstart++ = path[0];
+ *tmpstart++ = path[1];
+ SKIP_SLASHES(start);
+ COPY_NONSLASHES(tmpstart,start); /* copy machine name */
+ if (*start) {
+ *tmpstart++ = *start++;
+ SKIP_SLASHES(start);
+ COPY_NONSLASHES(tmpstart,start); /* copy share name */
+ }
+ }
+ *tmpstart = '\0';
+ while (*start) {
+ /* copy initial slash, if any */
+ if (isSLASH(*start)) {
+ *tmpstart++ = *start++;
+ *tmpstart = '\0';
+ SKIP_SLASHES(start);
+ }
+
+ /* FindFirstFile() expands "." and "..", so we need to pass
+ * those through unmolested */
+ if (*start == '.'
+ && (!start[1] || isSLASH(start[1])
+ || (start[1] == '.' && (!start[2] || isSLASH(start[2])))))
+ {
+ COPY_NONSLASHES(tmpstart,start); /* copy "." or ".." */
+ *tmpstart = '\0';
+ continue;
+ }
+
+ /* if this is the end, bust outta here */
+ if (!*start)
+ break;
+
+ /* now we're at a non-slash; walk up to next slash */
+ while (*start && !isSLASH(*start))
+ ++start;
+
+ /* stop and find full name of component */
+ sep = *start;
+ *start = '\0';
+ fhand = FN_FINDFIRSTFILE(path,&fdata);
+ *start = sep;
+ if (fhand != INVALID_HANDLE_VALUE) {
+ STRLEN len = FN_STRLEN(fdata.cFileName);
+ if ((STRLEN)(tmpbuf + sizeof(tmpbuf) - tmpstart) > len) {
+ FN_STRCPY(tmpstart, fdata.cFileName);
+ tmpstart += len;
+ FindClose(fhand);
+ }
+ else {
+ FindClose(fhand);
+ errno = ERANGE;
+ return NULL;
+ }
+ }
+ else {
+ /* failed a step, just return without side effects */
+ /*PerlIO_printf(Perl_debug_log, "Failed to find %s\n", path);*/
+ errno = EINVAL;
+ return NULL;
+ }
+ }
+ FN_STRCPY(path,tmpbuf);
+ return path;
+}
+
+#undef CHAR_T
+#undef WIN32_FIND_DATA_T
+#undef FN_FINDFIRSTFILE
+#undef FN_STRLEN
+#undef FN_STRCPY
+#undef LONGPATH
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/CodePage.t b/gnu/usr.bin/perl/cpan/Win32/t/CodePage.t
new file mode 100644
index 00000000000..75741cc9749
--- /dev/null
+++ b/gnu/usr.bin/perl/cpan/Win32/t/CodePage.t
@@ -0,0 +1,27 @@
+use strict;
+use Test;
+use Win32;
+
+plan tests => 8;
+
+my $ansicp = Win32::GetACP();
+ok($ansicp > 0 && $ansicp <= 65001);
+
+my $inputcp = Win32::GetConsoleCP();
+ok($inputcp > 0 && $inputcp <= 65001);
+
+my $outputcp = Win32::GetConsoleOutputCP();
+ok($outputcp > 0 && $outputcp <= 65001);
+
+my $oemcp = Win32::GetOEMCP();
+ok($oemcp > 0 && $oemcp <= 65001);
+
+ok(Win32::SetConsoleCP($ansicp));
+ok(Win32::GetConsoleCP() == $ansicp);
+
+ok(Win32::SetConsoleOutputCP($ansicp));
+ok(Win32::GetConsoleOutputCP() == $ansicp);
+
+# Reset things when we're done.
+Win32::SetConsoleCP($inputcp);
+Win32::SetConsoleOutputCP($outputcp);
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/CreateFile.t b/gnu/usr.bin/perl/cpan/Win32/t/CreateFile.t
index 63ce31694cf..ee1bf46daf9 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/CreateFile.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/CreateFile.t
@@ -1,31 +1,31 @@
-use strict;
-use Test;
-use Win32;
-
-my $path = "testing-$$";
-rmdir($path) if -d $path;
-unlink($path) if -f $path;
-
-plan tests => 15;
-
-ok(!-d $path);
-ok(!-f $path);
-
-ok(Win32::CreateDirectory($path));
-ok(-d $path);
-
-ok(!Win32::CreateDirectory($path));
-ok(!Win32::CreateFile($path));
-
-ok(rmdir($path));
-ok(!-d $path);
-
-ok(Win32::CreateFile($path));
-ok(-f $path);
-ok(-s $path, 0);
-
-ok(!Win32::CreateDirectory($path));
-ok(!Win32::CreateFile($path));
-
-ok(unlink($path));
-ok(!-f $path);
+use strict;
+use Test;
+use Win32;
+
+my $path = "testing-$$";
+rmdir($path) if -d $path;
+unlink($path) if -f $path;
+
+plan tests => 15;
+
+ok(!-d $path);
+ok(!-f $path);
+
+ok(Win32::CreateDirectory($path));
+ok(-d $path);
+
+ok(!Win32::CreateDirectory($path));
+ok(!Win32::CreateFile($path));
+
+ok(rmdir($path));
+ok(!-d $path);
+
+ok(Win32::CreateFile($path));
+ok(-f $path);
+ok(-s $path, 0);
+
+ok(!Win32::CreateDirectory($path));
+ok(!Win32::CreateFile($path));
+
+ok(unlink($path));
+ok(!-f $path);
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/ExpandEnvironmentStrings.t b/gnu/usr.bin/perl/cpan/Win32/t/ExpandEnvironmentStrings.t
index 853be4aa0ed..b57b47cddd7 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/ExpandEnvironmentStrings.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/ExpandEnvironmentStrings.t
@@ -1,7 +1,7 @@
-use strict;
-use Test;
-use Win32;
-
-plan tests => 1;
-
-ok(Win32::ExpandEnvironmentStrings("%WINDIR%"), $ENV{WINDIR});
+use strict;
+use Test;
+use Win32;
+
+plan tests => 1;
+
+ok(Win32::ExpandEnvironmentStrings("%WINDIR%"), $ENV{WINDIR});
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/GetCurrentThreadId.t b/gnu/usr.bin/perl/cpan/Win32/t/GetCurrentThreadId.t
index 6117e3ef663..ce98f3e5626 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/GetCurrentThreadId.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/GetCurrentThreadId.t
@@ -1,38 +1,38 @@
-use strict;
-use Config qw(%Config);
-use Test;
-use Win32;
-
-my $fork_emulation = $Config{ccflags} =~ /PERL_IMPLICIT_SYS/;
-
-my $tests = $fork_emulation ? 4 : 2;
-plan tests => $tests;
-
-my $pid = $$+0; # make sure we don't copy any magic to $pid
-
-if ($^O eq "cygwin") {
- skip(!defined &Cygwin::pid_to_winpid,
- Cygwin::pid_to_winpid($pid),
- Win32::GetCurrentProcessId());
-}
-else {
- ok($pid, Win32::GetCurrentProcessId());
-}
-
-if ($fork_emulation) {
- # This test relies on the implementation detail that the fork() emulation
- # uses the negative value of the thread id as a pseudo process id.
- if (my $child = fork) {
- waitpid($child, 0);
- exit 0;
- }
- ok(-$$, Win32::GetCurrentThreadId());
-
- # GetCurrentProcessId() should still return the real PID
- ok($pid, Win32::GetCurrentProcessId());
- ok($$ != Win32::GetCurrentProcessId());
-}
-else {
- # here we just want to see something.
- ok(Win32::GetCurrentThreadId() > 0);
-}
+use strict;
+use Config qw(%Config);
+use Test;
+use Win32;
+
+my $fork_emulation = $Config{ccflags} =~ /PERL_IMPLICIT_SYS/;
+
+my $tests = $fork_emulation ? 4 : 2;
+plan tests => $tests;
+
+my $pid = $$+0; # make sure we don't copy any magic to $pid
+
+if ($^O eq "cygwin") {
+ skip(!defined &Cygwin::pid_to_winpid,
+ Cygwin::pid_to_winpid($pid),
+ Win32::GetCurrentProcessId());
+}
+else {
+ ok($pid, Win32::GetCurrentProcessId());
+}
+
+if ($fork_emulation) {
+ # This test relies on the implementation detail that the fork() emulation
+ # uses the negative value of the thread id as a pseudo process id.
+ if (my $child = fork) {
+ waitpid($child, 0);
+ exit 0;
+ }
+ ok(-$$, Win32::GetCurrentThreadId());
+
+ # GetCurrentProcessId() should still return the real PID
+ ok($pid, Win32::GetCurrentProcessId());
+ ok($$ != Win32::GetCurrentProcessId());
+}
+else {
+ # here we just want to see something.
+ ok(Win32::GetCurrentThreadId() > 0);
+}
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/GetFileVersion.t b/gnu/usr.bin/perl/cpan/Win32/t/GetFileVersion.t
index 6e42fb779f7..b9e51f821d9 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/GetFileVersion.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/GetFileVersion.t
@@ -1,18 +1,18 @@
-use strict;
-use Test;
-use Win32;
-
-unless (defined &Win32::BuildNumber) {
- print "1..0 # Skip: Only ActivePerl seems to set the perl.exe fileversion\n";
- exit;
-}
-
-plan tests => 2;
-
-my @version = Win32::GetFileVersion($^X);
-my $version = $version[0] + $version[1] / 1000 + $version[2] / 1000000;
-
-# numify $] because it is a version object in 5.10 which will stringify with trailing 0s
-ok($version, 0+$]);
-
-ok($version[3], int(Win32::BuildNumber()));
+use strict;
+use Test;
+use Win32;
+
+unless (defined &Win32::BuildNumber) {
+ print "1..0 # Skip: Only ActivePerl seems to set the perl.exe fileversion\n";
+ exit;
+}
+
+plan tests => 2;
+
+my @version = Win32::GetFileVersion($^X);
+my $version = $version[0] + $version[1] / 1000 + $version[2] / 1000000;
+
+# numify $] because it is a version object in 5.10 which will stringify with trailing 0s
+ok($version, 0+$]);
+
+ok($version[3], int(Win32::BuildNumber()));
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/GetFolderPath.t b/gnu/usr.bin/perl/cpan/Win32/t/GetFolderPath.t
index ad8df99ecc9..c010c25aa88 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/GetFolderPath.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/GetFolderPath.t
@@ -1,8 +1,8 @@
-use strict;
-use Test;
-use Win32;
-
-plan tests => 1;
-
-# "windir" exists back to Win9X; "SystemRoot" only exists on WinNT and later.
-ok(Win32::GetFolderPath(Win32::CSIDL_WINDOWS), $ENV{WINDIR});
+use strict;
+use Test;
+use Win32;
+
+plan tests => 1;
+
+# "windir" exists back to Win9X; "SystemRoot" only exists on WinNT and later.
+ok(Win32::GetFolderPath(Win32::CSIDL_WINDOWS), $ENV{WINDIR});
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/GetFullPathName.t b/gnu/usr.bin/perl/cpan/Win32/t/GetFullPathName.t
index 15542e5e658..ec716d15d24 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/GetFullPathName.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/GetFullPathName.t
@@ -1,34 +1,34 @@
-use strict;
-use Test;
-use Win32;
-
-plan tests => 16;
-
-my $cwd = Win32::GetCwd;
-my @cwd = split/\\/, $cwd;
-my $file = pop @cwd;
-my $dir = join('\\', @cwd);
-
-ok(scalar Win32::GetFullPathName('.'), $cwd);
-ok((Win32::GetFullPathName('.'))[0], "$dir\\");
-ok((Win32::GetFullPathName('.'))[1], $file);
-
-ok((Win32::GetFullPathName('./'))[0], "$cwd\\");
-ok((Win32::GetFullPathName('.\\'))[0], "$cwd\\");
-ok((Win32::GetFullPathName('./'))[1], "");
-
-ok(scalar Win32::GetFullPathName($cwd), $cwd);
-ok((Win32::GetFullPathName($cwd))[0], "$dir\\");
-ok((Win32::GetFullPathName($cwd))[1], $file);
-
-ok(scalar Win32::GetFullPathName(substr($cwd,2)), $cwd);
-ok((Win32::GetFullPathName(substr($cwd,2)))[0], "$dir\\");
-ok((Win32::GetFullPathName(substr($cwd,2)))[1], $file);
-
-ok(scalar Win32::GetFullPathName('/Foo Bar/'), substr($cwd,0,2)."\\Foo Bar\\");
-
-chdir($dir);
-ok(scalar Win32::GetFullPathName('.'), $dir);
-
-ok((Win32::GetFullPathName($file))[0], "$dir\\");
-ok((Win32::GetFullPathName($file))[1], $file);
+use strict;
+use Test;
+use Win32;
+
+plan tests => 16;
+
+my $cwd = Win32::GetCwd;
+my @cwd = split/\\/, $cwd;
+my $file = pop @cwd;
+my $dir = join('\\', @cwd);
+
+ok(scalar Win32::GetFullPathName('.'), $cwd);
+ok((Win32::GetFullPathName('.'))[0], "$dir\\");
+ok((Win32::GetFullPathName('.'))[1], $file);
+
+ok((Win32::GetFullPathName('./'))[0], "$cwd\\");
+ok((Win32::GetFullPathName('.\\'))[0], "$cwd\\");
+ok((Win32::GetFullPathName('./'))[1], "");
+
+ok(scalar Win32::GetFullPathName($cwd), $cwd);
+ok((Win32::GetFullPathName($cwd))[0], "$dir\\");
+ok((Win32::GetFullPathName($cwd))[1], $file);
+
+ok(scalar Win32::GetFullPathName(substr($cwd,2)), $cwd);
+ok((Win32::GetFullPathName(substr($cwd,2)))[0], "$dir\\");
+ok((Win32::GetFullPathName(substr($cwd,2)))[1], $file);
+
+ok(scalar Win32::GetFullPathName('/Foo Bar/'), substr($cwd,0,2)."\\Foo Bar\\");
+
+chdir($dir);
+ok(scalar Win32::GetFullPathName('.'), $dir);
+
+ok((Win32::GetFullPathName($file))[0], "$dir\\");
+ok((Win32::GetFullPathName($file))[1], $file);
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/GetLongPathName.t b/gnu/usr.bin/perl/cpan/Win32/t/GetLongPathName.t
index b7da71991ce..5019a2ba258 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/GetLongPathName.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/GetLongPathName.t
@@ -1,53 +1,53 @@
-use strict;
-use Test;
-use Win32;
-
-my @paths = qw(
- /
- //
- .
- ..
- c:
- c:/
- c:./
- c:/.
- c:/..
- c:./..
- //./
- //.
- //..
- //./..
-);
-push @paths, map { my $x = $_; $x =~ s,/,\\,g; $x } @paths;
-push @paths, qw(
- ../\
- c:.\\../\
- c:/\..//
- c://.\/./\
- \\.\\../\
- //\..//
- //.\/./\
-);
-
-my $drive = $ENV{SYSTEMDRIVE};
-if ($drive) {
- for (@paths) {
- s/^c:/$drive/;
- }
-}
-my %expect;
-@expect{@paths} = map { my $x = $_;
- $x =~ s,(.[/\\])[/\\]+,$1,g;
- $x =~ s,^(\w):,\U$1:,;
- $x } @paths;
-
-plan tests => scalar(@paths);
-
-my $i = 1;
-for (@paths) {
- my $got = Win32::GetLongPathName($_);
- print "# '$_' => expect '$expect{$_}' => got '$got'\n";
- print "not " unless $expect{$_} eq $got;
- print "ok $i\n";
- ++$i;
-}
+use strict;
+use Test;
+use Win32;
+
+my @paths = qw(
+ /
+ //
+ .
+ ..
+ c:
+ c:/
+ c:./
+ c:/.
+ c:/..
+ c:./..
+ //./
+ //.
+ //..
+ //./..
+);
+push @paths, map { my $x = $_; $x =~ s,/,\\,g; $x } @paths;
+push @paths, qw(
+ ../\
+ c:.\\../\
+ c:/\..//
+ c://.\/./\
+ \\.\\../\
+ //\..//
+ //.\/./\
+);
+
+my $drive = $ENV{SYSTEMDRIVE};
+if ($drive) {
+ for (@paths) {
+ s/^c:/$drive/;
+ }
+}
+my %expect;
+@expect{@paths} = map { my $x = $_;
+ $x =~ s,(.[/\\])[/\\]+,$1,g;
+ $x =~ s,^(\w):,\U$1:,;
+ $x } @paths;
+
+plan tests => scalar(@paths);
+
+my $i = 1;
+for (@paths) {
+ my $got = Win32::GetLongPathName($_);
+ print "# '$_' => expect '$expect{$_}' => got '$got'\n";
+ print "not " unless $expect{$_} eq $got;
+ print "ok $i\n";
+ ++$i;
+}
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/GetOSName.t b/gnu/usr.bin/perl/cpan/Win32/t/GetOSName.t
index 32a43df70e9..07fed88f400 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/GetOSName.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/GetOSName.t
@@ -99,8 +99,9 @@ my @dual_tests = (
["7 [Enterprise]", "7", 2, 6, 1, 0x04 ],
["7 [Ultimate]", "7", 2, 6, 1, 0x01 ],
-
+["8", "8", 2, 6, 2 ],
["2008 [R2]", "2008", 2, 6, 1, 0x00, 2, 89 ],
+["2012", "2012", 2, 6, 2, 0x00, 2, 89 ],
["[Small Business Server] 2008 R2", "2008", 2, 6, 1, 0x09, 2, 89 ],
);
@@ -127,7 +128,7 @@ sub check {
# and 2003/2008 start with "Windows Server"
unless ($pretty eq "Win32s") {
my $prefix = "Windows";
- $prefix .= " Server" if $pretty =~ /^200[38]/;
+ $prefix .= " Server" if $pretty =~ /^20(03|08|12)/;
$pretty = "$prefix $pretty";
}
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/GetOSVersion.t b/gnu/usr.bin/perl/cpan/Win32/t/GetOSVersion.t
index 0038ef70e69..cb3f36490ba 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/GetOSVersion.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/GetOSVersion.t
@@ -1,11 +1,11 @@
-use strict;
-use Test;
-use Win32;
-
-plan tests => 1;
-
-my $scalar = Win32::GetOSVersion();
-my @array = Win32::GetOSVersion();
-
-print "not " unless $scalar == $array[4];
-print "ok 1\n";
+use strict;
+use Test;
+use Win32;
+
+plan tests => 1;
+
+my $scalar = Win32::GetOSVersion();
+my @array = Win32::GetOSVersion();
+
+print "not " unless $scalar == $array[4];
+print "ok 1\n";
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/GetShortPathName.t b/gnu/usr.bin/perl/cpan/Win32/t/GetShortPathName.t
index 34adf965720..455385418c5 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/GetShortPathName.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/GetShortPathName.t
@@ -1,20 +1,20 @@
-use strict;
-use Test;
-use Win32;
-
-my $path = "Long Path $$";
-unlink($path);
-END { unlink $path }
-
-plan tests => 5;
-
-Win32::CreateFile($path);
-ok(-f $path);
-
-my $short = Win32::GetShortPathName($path);
-ok($short, qr/^\S{1,8}(\.\S{1,3})?$/);
-ok(-f $short);
-
-unlink($path);
-ok(!-f $path);
-ok(!defined Win32::GetShortPathName($path));
+use strict;
+use Test;
+use Win32;
+
+my $path = "Long Path $$";
+unlink($path);
+END { unlink $path }
+
+plan tests => 5;
+
+Win32::CreateFile($path);
+ok(-f $path);
+
+my $short = Win32::GetShortPathName($path);
+ok($short, qr/^\S{1,8}(\.\S{1,3})?$/);
+ok(-f $short);
+
+unlink($path);
+ok(!-f $path);
+ok(!defined Win32::GetShortPathName($path));
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/GuidGen.t b/gnu/usr.bin/perl/cpan/Win32/t/GuidGen.t
index 9ee8ede9340..7011e2f1492 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/GuidGen.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/GuidGen.t
@@ -1,15 +1,15 @@
-use strict;
-use Test;
-use Win32;
-
-plan tests => 3;
-
-my $guid1 = Win32::GuidGen();
-my $guid2 = Win32::GuidGen();
-
-# {FB9586CD-273B-43BE-A20C-485A6BD4FCD6}
-ok($guid1, qr/^{\w{8}(-\w{4}){3}-\w{12}}$/);
-ok($guid2, qr/^{\w{8}(-\w{4}){3}-\w{12}}$/);
-
-# Every GUID is unique
-ok($guid1 ne $guid2);
+use strict;
+use Test;
+use Win32;
+
+plan tests => 3;
+
+my $guid1 = Win32::GuidGen();
+my $guid2 = Win32::GuidGen();
+
+# {FB9586CD-273B-43BE-A20C-485A6BD4FCD6}
+ok($guid1, qr/^{\w{8}(-\w{4}){3}-\w{12}}$/);
+ok($guid2, qr/^{\w{8}(-\w{4}){3}-\w{12}}$/);
+
+# Every GUID is unique
+ok($guid1 ne $guid2);
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/Names.t b/gnu/usr.bin/perl/cpan/Win32/t/Names.t
index ecab79f78be..e28e4a46af3 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/Names.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/Names.t
@@ -1,56 +1,57 @@
-use strict;
-BEGIN {
- eval "use Test::More";
- return unless $@;
- print "1..0 # Skip: Test requires Test::More module\n";
- exit 0;
-}
-use Win32;
-
-my $tests = 14;
-$tests += 2 if Win32::IsWinNT();
-
-plan tests => $tests;
-
-# test Win32::DomainName()
-if (Win32::IsWinNT()) {
- my $domain = eval { Win32::DomainName() };
- SKIP: {
- skip('The Workstation service has not been started', 2) if (Win32::GetLastError() == 2138);
- is( $@, '', "Win32::DomainName()" );
- like( $domain, '/^[a-zA-Z0-9!@#$%^&()_\'{}.~-]+$/', " - checking returned domain" );
- }
-}
-
-# test Win32::GetArchName()
-my $archname = eval { Win32::GetArchName() };
-is( $@, '', "Win32::GetArchName()" );
-cmp_ok( length($archname), '>=', 3, " - checking returned architecture name" );
-
-# test Win32::GetChipName()
-my $chipname = eval { Win32::GetChipName() };
-is( $@, '', "Win32::GetChipName()" );
-cmp_ok( length($chipname), '>=', 3, " - checking returned chip name" );
-
-# test Win32::GetOSName()
-# - scalar context
-my $osname = eval { Win32::GetOSName() };
-is( $@, '', "Win32::GetOSName() in scalar context" );
-cmp_ok( length($osname), '>', 3, " - checking returned OS name" );
-
-# - list context
-my ($osname2, $desc) = eval { Win32::GetOSName() };
-is( $@, '', "Win32::GetOSName() in list context" );
-cmp_ok( length($osname2), '>', 3, " - checking returned OS name" );
-ok( defined($desc), " - checking returned description" );
-is( $osname2, $osname, " - checking that OS name is the same in both calls" );
-
-# test Win32::LoginName()
-my $login = eval { Win32::LoginName() };
-is( $@, '', "Win32::LoginName()" );
-cmp_ok( length($login), '>', 1, " - checking returned login name" );
-
-# test Win32::NodeName()
-my $nodename = eval { Win32::NodeName() };
-is( $@, '', "Win32::NodeName()" );
-cmp_ok( length($nodename), '>', 1, " - checking returned node name" );
+use strict;
+BEGIN {
+ eval "use Test::More";
+ return unless $@;
+ print "1..0 # Skip: Test requires Test::More module\n";
+ exit 0;
+}
+use Win32;
+
+my $tests = 14;
+$tests += 2 if Win32::IsWinNT();
+
+plan tests => $tests;
+
+# test Win32::DomainName()
+if (Win32::IsWinNT()) {
+ my $domain = eval { Win32::DomainName() };
+ SKIP: {
+ skip('The Workstation service has not been started', 2) if (Win32::GetLastError() == 2138);
+ is( $@, '', "Win32::DomainName()" );
+ like( $domain, '/^[a-zA-Z0-9!@#$%^&()_\'{}.~-]+$/', " - checking returned domain" );
+ }
+}
+
+# test Win32::GetArchName()
+$ENV{PROCESSOR_ARCHITECTURE} ||= "unknown";
+my $archname = eval { Win32::GetArchName() };
+is( $@, '', "Win32::GetArchName()" );
+cmp_ok( length($archname), '>=', 3, " - checking returned architecture name" );
+
+# test Win32::GetChipName()
+my $chipname = eval { Win32::GetChipName() };
+is( $@, '', "Win32::GetChipName()" );
+cmp_ok( length($chipname), '>=', 3, " - checking returned chip name" );
+
+# test Win32::GetOSName()
+# - scalar context
+my $osname = eval { Win32::GetOSName() };
+is( $@, '', "Win32::GetOSName() in scalar context" );
+cmp_ok( length($osname), '>', 3, " - checking returned OS name" );
+
+# - list context
+my ($osname2, $desc) = eval { Win32::GetOSName() };
+is( $@, '', "Win32::GetOSName() in list context" );
+cmp_ok( length($osname2), '>', 3, " - checking returned OS name" );
+ok( defined($desc), " - checking returned description" );
+is( $osname2, $osname, " - checking that OS name is the same in both calls" );
+
+# test Win32::LoginName()
+my $login = eval { Win32::LoginName() };
+is( $@, '', "Win32::LoginName()" );
+cmp_ok( length($login), '>', 0, " - checking returned login name" );
+
+# test Win32::NodeName()
+my $nodename = eval { Win32::NodeName() };
+is( $@, '', "Win32::NodeName()" );
+cmp_ok( length($nodename), '>', 0, " - checking returned node name" );
diff --git a/gnu/usr.bin/perl/cpan/Win32/t/Unicode.t b/gnu/usr.bin/perl/cpan/Win32/t/Unicode.t
index 35701426658..2d03fd6dcd2 100755
--- a/gnu/usr.bin/perl/cpan/Win32/t/Unicode.t
+++ b/gnu/usr.bin/perl/cpan/Win32/t/Unicode.t
@@ -1,85 +1,90 @@
-use strict;
-use Test;
-use Cwd qw(cwd);
-use Win32;
-
-BEGIN {
- unless (defined &Win32::BuildNumber && Win32::BuildNumber() >= 820 or $] >= 5.008009) {
- print "1..0 # Skip: Needs ActivePerl 820 or Perl 5.8.9 or later\n";
- exit 0;
- }
- if ((((Win32::FsType())[1] & 4) == 0) || (Win32::FsType() =~ /^FAT/)) {
- print "1..0 # Skip: Filesystem doesn't support Unicode\n";
- exit 0;
- }
- unless ((Win32::GetOSVersion())[1] > 4) {
- print "1..0 # Skip: Unicode support requires Windows 2000 or later\n";
- exit 0;
- }
-}
-
-my $home = Win32::GetCwd();
-my $cwd = cwd(); # may be a Cygwin path
-my $dir = "Foo \x{394}\x{419} Bar \x{5E7}\x{645} Baz";
-my $file = "$dir\\xyzzy \x{394}\x{419} plugh \x{5E7}\x{645}";
-
-sub cleanup {
- chdir($home);
- my $ansi = Win32::GetANSIPathName($file);
- unlink($ansi) if -f $ansi;
- $ansi = Win32::GetANSIPathName($dir);
- rmdir($ansi) if -d $ansi;
-}
-
-cleanup();
-END { cleanup() }
-
-plan test => 12;
-
-# Create Unicode directory
-Win32::CreateDirectory($dir);
-ok(-d Win32::GetANSIPathName($dir));
-
-# Create Unicode file
-Win32::CreateFile($file);
-ok(-f Win32::GetANSIPathName($file));
-
-# readdir() returns ANSI form of Unicode filename
-ok(opendir(my $dh, Win32::GetANSIPathName($dir)));
-while ($_ = readdir($dh)) {
- next if /^\./;
- ok($file, Win32::GetLongPathName("$dir\\$_"));
-}
-closedir($dh);
-
-# Win32::GetLongPathName() of the absolute path restores the Unicode dir name
-my $full = Win32::GetFullPathName($dir);
-my $long = Win32::GetLongPathName($full);
-
-ok($long, Win32::GetLongPathName($home)."\\$dir");
-
-# We can Win32::SetCwd() into the Unicode directory
-ok(Win32::SetCwd($dir));
-
-my $w32dir = Win32::GetCwd();
-# cwd() also returns a usable ANSI directory name
-my $subdir = cwd();
-
-# change back to home directory to make sure relative paths
-# in @INC continue to work
-ok(chdir($home));
-ok(Win32::GetCwd(), $home);
-
-ok(Win32::GetLongPathName($w32dir), $long);
-
-# cwd() on Cygwin returns a mapped path that we need to translate
-# back to a Windows path. Invoking `cygpath` on $subdir doesn't work.
-if ($^O eq "cygwin") {
- $subdir = Cygwin::posix_to_win_path($subdir, 1);
-}
-$subdir =~ s,/,\\,g;
-ok(Win32::GetLongPathName($subdir), $long);
-
-# We can chdir() into the Unicode directory if we use the ANSI name
-ok(chdir(Win32::GetANSIPathName($dir)));
-ok(Win32::GetLongPathName(Win32::GetCwd()), $long);
+use strict;
+use Test;
+use Config qw(%Config);
+use Cwd qw(cwd);
+use Encode qw();
+use Win32;
+
+BEGIN {
+ unless (defined &Win32::BuildNumber && Win32::BuildNumber() >= 820 or $] >= 5.008009) {
+ print "1..0 # Skip: Needs ActivePerl 820 or Perl 5.8.9 or later\n";
+ exit 0;
+ }
+ if ((((Win32::FsType())[1] & 4) == 0) || (Win32::FsType() =~ /^FAT/)) {
+ print "1..0 # Skip: Filesystem doesn't support Unicode\n";
+ exit 0;
+ }
+ unless ((Win32::GetOSVersion())[1] > 4) {
+ print "1..0 # Skip: Unicode support requires Windows 2000 or later\n";
+ exit 0;
+ }
+}
+
+my $home = Win32::GetCwd();
+my $cwd = cwd(); # may be a Cygwin path
+my $dir = "Foo \x{394}\x{419} Bar \x{5E7}\x{645} Baz";
+my $file = "$dir\\xyzzy \x{394}\x{419} plugh \x{5E7}\x{645}";
+
+sub cleanup {
+ chdir($home);
+ my $ansi = Win32::GetANSIPathName($file);
+ unlink($ansi) if -f $ansi;
+ $ansi = Win32::GetANSIPathName($dir);
+ rmdir($ansi) if -d $ansi;
+}
+
+cleanup();
+END { cleanup() }
+
+plan test => 12;
+
+# Create Unicode directory
+Win32::CreateDirectory($dir);
+ok(-d Win32::GetANSIPathName($dir));
+
+# Create Unicode file
+Win32::CreateFile($file);
+ok(-f Win32::GetANSIPathName($file));
+
+# readdir() returns ANSI form of Unicode filename
+ok(opendir(my $dh, Win32::GetANSIPathName($dir)));
+while ($_ = readdir($dh)) {
+ next if /^\./;
+ # On Cygwin 1.7 readdir() returns the utf8 representation of the
+ # filename but doesn't turn on the SvUTF8 bit
+ Encode::_utf8_on($_) if $^O eq "cygwin" && $Config{osvers} !~ /^1.5/;
+ ok($file, Win32::GetLongPathName("$dir\\$_"));
+}
+closedir($dh);
+
+# Win32::GetLongPathName() of the absolute path restores the Unicode dir name
+my $full = Win32::GetFullPathName($dir);
+my $long = Win32::GetLongPathName($full);
+
+ok($long, Win32::GetLongPathName($home)."\\$dir");
+
+# We can Win32::SetCwd() into the Unicode directory
+ok(Win32::SetCwd($dir));
+
+my $w32dir = Win32::GetCwd();
+# cwd() also returns a usable ANSI directory name
+my $subdir = cwd();
+
+# change back to home directory to make sure relative paths
+# in @INC continue to work
+ok(chdir($home));
+ok(Win32::GetCwd(), $home);
+
+ok(Win32::GetLongPathName($w32dir), $long);
+
+# cwd() on Cygwin returns a mapped path that we need to translate
+# back to a Windows path. Invoking `cygpath` on $subdir doesn't work.
+if ($^O eq "cygwin") {
+ $subdir = Cygwin::posix_to_win_path($subdir, 1);
+}
+$subdir =~ s,/,\\,g;
+ok(Win32::GetLongPathName($subdir), $long);
+
+# We can chdir() into the Unicode directory if we use the ANSI name
+ok(chdir(Win32::GetANSIPathName($dir)));
+ok(Win32::GetLongPathName(Win32::GetCwd()), $long);
diff --git a/gnu/usr.bin/perl/cpan/Win32API-File/Changes b/gnu/usr.bin/perl/cpan/Win32API-File/Changes
index 27e80d1a46d..bb149daf17e 100644
--- a/gnu/usr.bin/perl/cpan/Win32API-File/Changes
+++ b/gnu/usr.bin/perl/cpan/Win32API-File/Changes
@@ -1,5 +1,9 @@
Revision history for Perl extension Win32API::File.
+0.1201 by Alexandr Ciornii 2013-01-28
+ - Fix tests on Cygwin (RURBAN)
+ - Constants for GetStdHandle and SetStdHandle
+
0.1200 by Alexandr Ciornii 2011-07-01
- Spelling fixes by Peter John Acklam
- Upgraded Makefile.PL
diff --git a/gnu/usr.bin/perl/cpan/Win32API-File/File.pm b/gnu/usr.bin/perl/cpan/Win32API-File/File.pm
index cdaac67d23f..03b736eb77a 100644
--- a/gnu/usr.bin/perl/cpan/Win32API-File/File.pm
+++ b/gnu/usr.bin/perl/cpan/Win32API-File/File.pm
@@ -10,7 +10,7 @@ use Fcntl qw( O_RDONLY O_RDWR O_WRONLY O_APPEND O_BINARY O_TEXT );
use vars qw( $VERSION @ISA );
use vars qw( @EXPORT @EXPORT_OK @EXPORT_FAIL %EXPORT_TAGS );
-$VERSION= '0.1200';
+$VERSION= '0.1201';
use base qw( Exporter DynaLoader Tie::Handle IO::File );
@@ -146,6 +146,9 @@ my $FFFFFFFF = $_64BITINT ? 0xFFFFFFFF : Math::BigInt->new(0xFFFFFFFF);
PARTITION_XINT13 PARTITION_XINT13_EXTENDED
PARTITION_PREP PARTITION_UNIX
VALID_NTFT PARTITION_NTFT )],
+ STD_HANDLE_ => [qw(
+ STD_INPUT_HANDLE STD_OUTPUT_HANDLE
+ STD_ERROR_HANDLE )],
);
@EXPORT_OK= ();
{
@@ -3014,6 +3017,14 @@ Constants describing partition types.
PARTITION_PREP PARTITION_UNIX
VALID_NTFT PARTITION_NTFT
+=item C<":STD_HANDLE_">
+
+Constants for GetStdHandle and SetStdHandle
+
+ STD_ERROR_HANDLE
+ STD_INPUT_HANDLE
+ STD_OUTPUT_HANDLE
+
=item C<":ALL">
All of the above.
diff --git a/gnu/usr.bin/perl/cpan/Win32API-File/Makefile.PL b/gnu/usr.bin/perl/cpan/Win32API-File/Makefile.PL
index 7e31df764b4..4b5f959ac4f 100644
--- a/gnu/usr.bin/perl/cpan/Win32API-File/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Win32API-File/Makefile.PL
@@ -19,20 +19,24 @@ WriteMakefile1(
IFDEF => "!/[a-z\\d]/",
CPLUSPLUS => 1,
WRITE_PERL => 1,
+ #PERL_FILE_LIST => ['File.pm'], #added by Chorny
+ #C_FILE_LIST => ['File.xs'], #added by Chorny
# Comment out next line to rebuild constants defs:
NO_REBUILD => 1,
},
( ! $Config{libperl} ? () : ( LIBPERL_A => $Config{libperl} ) ),
- 'INSTALLDIRS' => ($] >= 5.008009 ? 'perl' : 'site'),
+ 'INSTALLDIRS' => (($] >= 5.008009 and $] < 5.012) ? 'perl' : 'site'),
'LICENSE' => 'perl',
'MIN_PERL_VERSION' => 5.001,
'PREREQ_PM' => {
'Math::BigInt' => 0,
'Win32' => 0,
- },
- BUILD_REQUIRES => {
+ 'Carp' => 0,
'IO::File' => 0,
+ },
+ TEST_REQUIRES => {
'File::Spec' => 0,
+ 'Test::More' => 0,
},
META_MERGE => {
@@ -91,7 +95,7 @@ $outfile: @perlfiles @cfiles Makefile" . '
$m[-1] =~ s/^/##/gm if $noreb;
my( $key, $value );
while( ( $key, $value )= each %{$hvAttr->{$module}} ) {
- push @m, '-e "$$attribs{' . $key . '}= '
+ push @m, '-e "$$attribs{' . $key . '}= ' # try {{ }} for dmake
. neatvalue($value) . qq[;" \\\n\t ];
$m[-1] =~ s/^/##/gm if $noreb;
}
@@ -155,12 +159,21 @@ realclean ::
return join('',@m);
}
-sub WriteMakefile1 { #Written by Alexandr Ciornii, version 0.21. Added by eumm-upgrade.
+
+sub WriteMakefile1 { #Compatibility code for old versions of EU::MM. Written by Alexandr Ciornii, version 0.23. Added by eumm-upgrade.
my %params=@_;
my $eumm_version=$ExtUtils::MakeMaker::VERSION;
$eumm_version=eval $eumm_version;
die "EXTRA_META is deprecated" if exists $params{EXTRA_META};
die "License not specified" if not exists $params{LICENSE};
+ if ($params{AUTHOR} and ref($params{AUTHOR}) eq 'ARRAY' and $eumm_version < 6.5705) {
+ $params{META_ADD}->{author}=$params{AUTHOR};
+ $params{AUTHOR}=join(', ',@{$params{AUTHOR}});
+ }
+ if ($params{TEST_REQUIRES} and $eumm_version < 6.64) {
+ $params{BUILD_REQUIRES}={ %{$params{BUILD_REQUIRES} || {}} , %{$params{TEST_REQUIRES}} };
+ delete $params{TEST_REQUIRES};
+ }
if ($params{BUILD_REQUIRES} and $eumm_version < 6.5503) {
#EUMM 6.5502 has problems with BUILD_REQUIRES
$params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{BUILD_REQUIRES}} };
diff --git a/gnu/usr.bin/perl/cpan/Win32API-File/cFile.pc b/gnu/usr.bin/perl/cpan/Win32API-File/cFile.pc
index da00f413aa2..b44fbe85741 100644
--- a/gnu/usr.bin/perl/cpan/Win32API-File/cFile.pc
+++ b/gnu/usr.bin/perl/cpan/Win32API-File/cFile.pc
@@ -162,4 +162,7 @@ sub SEM_NOOPENFILEERRORBOX () { 32768 }
sub TRUNCATE_EXISTING () { 5 }
sub Unknown () { 0 }
sub VALID_NTFT () { 192 }
+sub STD_ERROR_HANDLE () { 0xfffffff4 }
+sub STD_INPUT_HANDLE () { 0xfffffff6 }
+sub STD_OUTPUT_HANDLE () { 0xfffffff5 }
1;
diff --git a/gnu/usr.bin/perl/cpan/Win32API-File/t/file.t b/gnu/usr.bin/perl/cpan/Win32API-File/t/file.t
index 0039b57435d..cbc808c37ff 100755
--- a/gnu/usr.bin/perl/cpan/Win32API-File/t/file.t
+++ b/gnu/usr.bin/perl/cpan/Win32API-File/t/file.t
@@ -16,7 +16,7 @@ BEGIN {
}
}
- print "1..267\n";
+ print "1..270\n";
}
END {print "not ok 1\n" unless $loaded;}
@@ -24,7 +24,7 @@ END {print "not ok 1\n" unless $loaded;}
# the ../lib directory in @INC will no longer work once
# we chdir() into the TEMP directory.
-require Win32 unless defined &Win32::FormatMessage;
+use Win32;
use File::Spec;
use Carp;
use Carp::Heavy;
@@ -342,8 +342,9 @@ if( !$ok ) {
}
print $ok ? "" : "not ", "ok ", ++$test, "\n"; # ok 49
-$ok= -f $let.substr($ENV{WINDIR},3)."/win.ini";
-$ok or print "# ",fileLastError(),"\n";
+my $path = $ENV{WINDIR};
+$ok= -f $let.substr($path,$^O eq 'cygwin'?2:3)."/win.ini";
+$ok or print "# ",$let.substr($path,3)."/win.ini ",fileLastError(),"\n";
print $ok ? "" : "not ", "ok ", ++$test, "\n"; # ok 50
$ok= DefineDosDevice( DDD_REMOVE_DEFINITION|DDD_EXACT_MATCH_ON_REMOVE
@@ -351,7 +352,6 @@ $ok= DefineDosDevice( DDD_REMOVE_DEFINITION|DDD_EXACT_MATCH_ON_REMOVE
$ok or print "# $let,$dev: ",fileLastError(),"\n";
print $ok ? "" : "not ", "ok ", ++$test, "\n"; # ok 51
-my $path = $ENV{WINDIR};
my $attrs = GetFileAttributes( $path );
$ok= $attrs != INVALID_FILE_ATTRIBUTES;
$ok or print "# $path gave invalid attribute value, attrs=$attrs: ",fileLastError(),"\n";
diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/Fatal.pm b/gnu/usr.bin/perl/cpan/autodie/lib/Fatal.pm
index aabdf781de0..c6a3d1b3290 100644
--- a/gnu/usr.bin/perl/cpan/autodie/lib/Fatal.pm
+++ b/gnu/usr.bin/perl/cpan/autodie/lib/Fatal.pm
@@ -40,7 +40,7 @@ use constant ERROR_58_HINTS => q{Non-subroutine %s hints for %s are not supporte
use constant MIN_IPC_SYS_SIMPLE_VER => 0.12;
# All the Fatal/autodie modules share the same version number.
-our $VERSION = '2.10';
+our $VERSION = '2.13';
our $Debug ||= 0;
@@ -116,6 +116,9 @@ my %TAGS = (
':2.08' => [qw(:default)],
':2.09' => [qw(:default)],
':2.10' => [qw(:default)],
+ ':2.11' => [qw(:default)],
+ ':2.12' => [qw(:default)],
+ ':2.13' => [qw(:default)],
);
# chmod was only introduced in 2.07
@@ -144,6 +147,58 @@ my %Use_defined_or;
CORE::umask
)} = ();
+
+# A snippet of code to apply the open pragma to a handle
+
+
+
+# Optional actions to take on the return value before returning it.
+
+my %Retval_action = (
+ "CORE::open" => q{
+
+ # apply the open pragma from our caller
+ if( defined $retval ) {
+ # Get the caller's hint hash
+ my $hints = (caller 0)[10];
+
+ # Decide if we're reading or writing and apply the appropriate encoding
+ # These keys are undocumented.
+ # Match what PerlIO_context_layers() does. Read gets the read layer,
+ # everything else gets the write layer.
+ my $encoding = $_[1] =~ /^\+?>/ ? $hints->{"open>"} : $hints->{"open<"};
+
+ # Apply the encoding, if any.
+ if( $encoding ) {
+ binmode $_[0], $encoding;
+ }
+ }
+
+},
+ "CORE::sysopen" => q{
+
+ # apply the open pragma from our caller
+ if( defined $retval ) {
+ # Get the caller's hint hash
+ my $hints = (caller 0)[10];
+
+ require Fcntl;
+
+ # Decide if we're reading or writing and apply the appropriate encoding.
+ # Match what PerlIO_context_layers() does. Read gets the read layer,
+ # everything else gets the write layer.
+ my $open_read_only = !($_[2] ^ Fcntl::O_RDONLY());
+ my $encoding = $open_read_only ? $hints->{"open<"} : $hints->{"open>"};
+
+ # Apply the encoding, if any.
+ if( $encoding ) {
+ binmode $_[0], $encoding;
+ }
+ }
+
+},
+);
+
# Cached_fatalised_sub caches the various versions of our
# fatalised subs as they're produced. This means we don't
# have to build our own replacement of CORE::open and friends
@@ -355,7 +410,9 @@ sub _install_subs {
my $pkg_sym = "${pkg}::";
- while(my ($sub_name, $sub_ref) = each %$subs_to_reinstate) {
+ # It does not hurt to do this in a predictable order, and might help debugging.
+ foreach my $sub_name (sort keys %$subs_to_reinstate) {
+ my $sub_ref= $subs_to_reinstate->{$sub_name};
my $full_path = $pkg_sym.$sub_name;
@@ -802,6 +859,7 @@ sub _one_invocation {
my $code = qq[
no warnings qw(unopened uninitialized numeric);
+ no if \$\] >= 5.017011, warnings => "experimental::smartmatch";
if (wantarray) {
my \@results = $call(@argv);
@@ -810,6 +868,8 @@ sub _one_invocation {
];
+ my $retval_action = $Retval_action{$call} || '';
+
if ( $hints and ( ref($hints->{list} ) || "" ) eq 'CODE' ) {
# NB: Subroutine hints are passed as a full list.
@@ -862,6 +922,7 @@ sub _one_invocation {
return $code .= qq{
if ( \$hints->{scalar}->(\$retval) ) { $die };
+ $retval_action
return \$retval;
};
@@ -870,7 +931,7 @@ sub _one_invocation {
return $code . qq{
if ( \$retval ~~ \$hints->{scalar} ) { $die };
-
+ $retval_action
return \$retval;
};
}
@@ -882,11 +943,12 @@ sub _one_invocation {
( $use_defined_or ? qq{
$die if not defined \$retval;
-
+ $retval_action
return \$retval;
} : qq{
+ $retval_action
return \$retval || $die;
} ) ;
@@ -1238,7 +1300,9 @@ sub exception_class { return "autodie::exception" };
{
local $@; # We can't clobber $@, it's wrong!
- eval "require $exception_class"; ## no critic
+ my $pm_file = $exception_class . ".pm";
+ $pm_file =~ s{ (?: :: | ' ) }{/}gx;
+ eval { require $pm_file };
$E = $@; # Save $E despite ending our local.
}
diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie.pm
index cb14fb037b9..71a6a5e7616 100644
--- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie.pm
+++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie.pm
@@ -8,7 +8,7 @@ our @ISA = qw(Fatal);
our $VERSION;
BEGIN {
- $VERSION = '2.10';
+ $VERSION = '2.13';
}
use constant ERROR_WRONG_FATAL => q{
@@ -334,6 +334,10 @@ the end of the current block with C<no autodie>.
To disable autodie for only a single function (eg, open)
use C<no autodie qw(open)>.
+C<autodie> performs no checking of called context to determine whether to throw
+an exception; the explicitness of error handling with C<autodie> is a deliberate
+feature.
+
=item No user hints defined for %s
You've insisted on hints for user-subroutines, either by pre-pending
diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception.pm
index 14d5cb0f07e..45c723d56ac 100644
--- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception.pm
+++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception.pm
@@ -14,7 +14,7 @@ use overload
use if ($] >= 5.010), overload => '~~' => "matches";
-our $VERSION = '2.10';
+our $VERSION = '2.13';
my $PACKAGE = __PACKAGE__; # Useful to have a scalar for hash keys.
diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception/system.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception/system.pm
index 747fea7810e..0489b61d113 100644
--- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception/system.pm
+++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception/system.pm
@@ -5,7 +5,7 @@ use warnings;
use base 'autodie::exception';
use Carp qw(croak);
-our $VERSION = '2.10';
+our $VERSION = '2.13';
my $PACKAGE = __PACKAGE__;
diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/hints.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/hints.pm
index 89b3bc827b4..36715e979d1 100644
--- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/hints.pm
+++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/hints.pm
@@ -5,7 +5,7 @@ use warnings;
use constant PERL58 => ( $] < 5.009 );
-our $VERSION = '2.10';
+our $VERSION = '2.13';
=head1 NAME
diff --git a/gnu/usr.bin/perl/cpan/autodie/t/backcompat.t b/gnu/usr.bin/perl/cpan/autodie/t/backcompat.t
index 174d6da9b06..b26c421d796 100755
--- a/gnu/usr.bin/perl/cpan/autodie/t/backcompat.t
+++ b/gnu/usr.bin/perl/cpan/autodie/t/backcompat.t
@@ -8,7 +8,7 @@ eval {
open(my $fh, '<', NO_SUCH_FILE);
};
-my $old_msg = qr{Can't open\(GLOB\(0x[0-9a-f]+\), <, xyzzy_this_file_is_not_here\): .* at \(eval \d+\)(?:\[.*?\])? line \d+\.\s+main::__ANON__\('GLOB\(0x[0-9a-f]+\)',\s*'<',\s*'xyzzy_this_file_is_not_here'\) called at \S+ line \d+\s+eval \Q{...}\E called at \S+ line \d+};
+my $old_msg = qr{Can't open\(GLOB\(0x[0-9a-f]+\), <, xyzzy_this_file_is_not_here\): .* at \(eval \d+\)(?:\[.*?\])? line \d+\.?\s+main::__ANON__\('GLOB\(0x[0-9a-f]+\)',\s*'<',\s*'xyzzy_this_file_is_not_here'\) called at \S+ line \d+\s+eval \Q{...}\E called at \S+ line \d+};
like($@,$old_msg,"Backwards compat ugly messages");
is(ref($@),"", "Exception is a string, not an object");
diff --git a/gnu/usr.bin/perl/cpan/autodie/t/exceptions.t b/gnu/usr.bin/perl/cpan/autodie/t/exceptions.t
index 2f8c2382fcd..123cf8e8831 100755
--- a/gnu/usr.bin/perl/cpan/autodie/t/exceptions.t
+++ b/gnu/usr.bin/perl/cpan/autodie/t/exceptions.t
@@ -9,6 +9,7 @@ BEGIN { plan skip_all => "Perl 5.10 only tests" if $] < 5.010; }
use 5.010;
use constant NO_SUCH_FILE => 'this_file_had_better_not_exist_xyzzy';
+no if $] >= 5.017011, warnings => "experimental::smartmatch";
plan 'no_plan';
diff --git a/gnu/usr.bin/perl/cpan/autodie/t/hints_pod_examples.t b/gnu/usr.bin/perl/cpan/autodie/t/hints_pod_examples.t
index a3c6f0f5538..21a85fd474d 100755
--- a/gnu/usr.bin/perl/cpan/autodie/t/hints_pod_examples.t
+++ b/gnu/usr.bin/perl/cpan/autodie/t/hints_pod_examples.t
@@ -152,22 +152,43 @@ my $perl58_fix = (
);
# Some of the tests provide different hints for scalar or list context
-
-while (my ($test, $exception_expected) = each %scalar_tests) {
- eval "
+# NOTE: these tests are sensitive to order (not sure why) therefore
+# this loop must use a sorted list of keys . Otherwise there is an occasional
+# failure like this:
+#
+# Failed test 'scalar test - zero_scalar("")'
+# at cpan/autodie/t/hints_pod_examples.t line 168.
+# got: 'Can't zero_scalar(''): at cpan/autodie/t/hints_pod_examples.t line 157
+# '
+# expected: ''
+#
+#
+# my $scalar = zero_scalar("");
+# 1;
+
+
+foreach my $test (sort keys %scalar_tests) {
+ my $exception_expected= $scalar_tests{$test};
+ my $ok= eval(my $code= "
$perl58_fix
my \$scalar = $test;
- ";
+ 1;
+ ");
if ($exception_expected) {
- isnt("$@", "", "scalar test - $test");
+ isnt($ok ? "" : "$@", "", "scalar test - $test")
+ or diag($code);
}
else {
- is($@, "", "scalar test - $test");
+ is($ok ? "" : "$@", "", "scalar test - $test")
+ or diag($code);
}
}
-while (my ($test, $exception_expected) = each %list_tests) {
+
+# this set of test is not *known* to be order dependent however we sort it anyway out caution
+foreach my $test (sort keys %list_tests) {
+ my $exception_expected= $list_tests{$test};
eval "
$perl58_fix
my \@array = $test;
diff --git a/gnu/usr.bin/perl/cpan/autodie/t/recv.t b/gnu/usr.bin/perl/cpan/autodie/t/recv.t
index cfaa6791449..f67b2f81874 100755
--- a/gnu/usr.bin/perl/cpan/autodie/t/recv.t
+++ b/gnu/usr.bin/perl/cpan/autodie/t/recv.t
@@ -38,12 +38,15 @@ SKIP: {
}
eval {
- # STDIN isn't a socket, so this should fail.
- recv(STDIN,$buffer,1,0);
+ my $string = "now is the time...";
+ open(my $fh, '<', \$string) or die("Can't open \$string for read");
+ # $fh isn't a socket, so this should fail.
+ recv($fh,$buffer,1,0);
};
ok($@,'recv dies on returning undef');
-isa_ok($@,'autodie::exception');
+isa_ok($@,'autodie::exception')
+ or diag("$@");
$buffer = "# Not an empty string\n";
diff --git a/gnu/usr.bin/perl/cpan/parent/t/parent.t b/gnu/usr.bin/perl/cpan/parent/t/parent.t
index 401fe39d5dc..6ee4494e8a2 100755
--- a/gnu/usr.bin/perl/cpan/parent/t/parent.t
+++ b/gnu/usr.bin/perl/cpan/parent/t/parent.t
@@ -58,10 +58,10 @@ is( $Eval2::VERSION, '1.02' );
eval q{use parent 'reallyReAlLyNotexists'};
-like( $@, q{/^Can't locate reallyReAlLyNotexists.pm in \@INC \(\@INC contains:/}, 'baseclass that does not exist');
+like( $@, q{/^Can't locate reallyReAlLyNotexists.pm in \@INC \(you may need to install the reallyReAlLyNotexists module\) \(\@INC contains:/}, 'baseclass that does not exist');
eval q{use parent 'reallyReAlLyNotexists'};
-like( $@, q{/^Can't locate reallyReAlLyNotexists.pm in \@INC \(\@INC contains:/}, ' still failing on 2nd load');
+like( $@, q{/^Can't locate reallyReAlLyNotexists.pm in \@INC \(you may need to install the reallyReAlLyNotexists module\) \(\@INC contains:/}, ' still failing on 2nd load');
{
my $warning;
local $SIG{__WARN__} = sub { $warning = shift };
diff --git a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq.pm b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq.pm
index 1d5b4e4233f..976b525cb46 100644
--- a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq.pm
+++ b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq.pm
@@ -1,6 +1,6 @@
package perlfaq;
{
- $perlfaq::VERSION = '5.0150039';
+ $perlfaq::VERSION = '5.0150042';
}
0; # not is it supposed to be loaded
diff --git a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq2.pod b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq2.pod
index e890cc34a1a..ce7cd1b3b24 100644
--- a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq2.pod
+++ b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq2.pod
@@ -151,7 +151,7 @@ Perl user group.
CPAN, or the Comprehensive Perl Archive Network L<http://www.cpan.org/>,
is a replicated, worldwide repository of Perl software.
-See L<What is CPAN?|/"What modules and extensions are available for Perl? What is CPAN? What does CPANE<sol>srcE<sol>... mean?">.
+See L<What is CPAN?|/"What modules and extensions are available for Perl? What is CPAN?">.
=head2 Where can I post questions?
diff --git a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq3.pod b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq3.pod
index 9e9ae8d906f..84c6bff6534 100644
--- a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq3.pod
+++ b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq3.pod
@@ -366,6 +366,13 @@ Perl Editor by EngInSite is a complete integrated development
environment (IDE) for creating, testing, and debugging Perl scripts;
the tool runs on Windows 9x/NT/2000/XP or later.
+=item Kephra
+
+L<http://kephra.sf.net>
+
+GUI Editor written in Perl using wxWidgets and Scintilla with lots of smaller features.
+Aims for an UI based on Perls principles like TIMTWTDI and "easy thinkd should be ..".
+
=item Komodo
L<http://www.ActiveState.com/Products/Komodo/>
@@ -424,7 +431,7 @@ Visual Perl is a Visual Studio.NET plug-in from ActiveState.
L<http://www.zeusedit.com/lookmain.html>
-Zeus for Window is another Win32 multi-language editor/IDE
+Zeus for Windows is another Win32 multi-language editor/IDE
that comes with support for Perl.
=back
diff --git a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq4.pod b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq4.pod
index e5de15385a5..8378ba71761 100644
--- a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq4.pod
+++ b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq4.pod
@@ -1266,8 +1266,8 @@ for list operations, so list operations also work on arrays:
wash_animals( qw( dog cat bird ) );
wash_animals( @animals );
-Array operations, which change the scalars, rearranges them, or adds
-or subtracts some scalars, only work on arrays. These can't work on a
+Array operations, which change the scalars, rearrange them, or add
+or subtract some scalars, only work on arrays. These can't work on a
list, which is fixed. Array operations include C<shift>, C<unshift>,
C<push>, C<pop>, and C<splice>.
diff --git a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq5.pod b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq5.pod
index 60bd08306d5..c8cb64eafae 100644
--- a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq5.pod
+++ b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq5.pod
@@ -194,11 +194,11 @@ you can fit the whole thing in memory!):
open my $in, '<', $file or die "Can't read old file: $!"
open my $out, '>', "$file.new" or die "Can't write new file: $!";
- my @lines = do { local $/; <$in> }; # slurp!
+ my $content = do { local $/; <$in> }; # slurp!
# do your magic here
- print $out @lines;
+ print $out $content;
Modules such as L<File::Slurp> and L<Tie::File> can help with that
too. If you can, however, avoid reading the entire file at once. Perl
@@ -1373,7 +1373,7 @@ numeric descriptor as with C<MHCONTEXT> above. But if you really have
to, you may be able to do this:
require 'sys/syscall.ph';
- my $rc = syscall(&SYS_close, $fd + 0); # must force numeric
+ my $rc = syscall(SYS_close(), $fd + 0); # must force numeric
die "can't sysclose $fd: $!" unless $rc == -1;
Or, just use the fdopen(3S) feature of C<open()>:
diff --git a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq6.pod b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq6.pod
index 40c2b07c3dc..db1064302a8 100644
--- a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq6.pod
+++ b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq6.pod
@@ -231,7 +231,7 @@ properties of bitwise xor on ASCII strings.
And here it is as a subroutine, modeled after the above:
- sub preserve_case($$) {
+ sub preserve_case {
my ($old, $new) = @_;
my $mask = uc $old ^ $old;
@@ -271,7 +271,7 @@ the case of the last character is used for the rest of the substitution.
# Original by Nathan Torkington, massaged by Jeffrey Friedl
#
- sub preserve_case($$)
+ sub preserve_case
{
my ($old, $new) = @_;
my $state = 0; # 0 = no change; 1 = lc; 2 = uc
diff --git a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq7.pod b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq7.pod
index 35c9330f2dc..099ed6b8f55 100644
--- a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq7.pod
+++ b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq7.pod
@@ -414,7 +414,7 @@ Here's an example of how to pass in a string and a regular expression
for it to match against. You construct the pattern with the C<qr//>
operator:
- sub compare($$) {
+ sub compare {
my ($val1, $regex) = @_;
my $retval = $val1 =~ /$regex/;
return $retval;
@@ -868,7 +868,7 @@ comments). You end the comment with C<=cut>, ending the Pod section:
The quick-and-dirty method only works well when you don't plan to
leave the commented code in the source. If a Pod parser comes along,
-you're multiline comment is going to show up in the Pod translation.
+your multiline comment is going to show up in the Pod translation.
A better way hides it from Pod parsers as well.
The C<=begin> directive can mark a section for a particular purpose.
diff --git a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq8.pod b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq8.pod
index 1c7793e3558..fd9b20138b2 100644
--- a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq8.pod
+++ b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq8.pod
@@ -585,7 +585,7 @@ Perl source with L<Inline::C>.
Historically, these would be generated by the L<h2ph> tool, part of the
standard perl distribution. This program converts C<cpp(1)> directives
in C header files to files containing subroutine definitions, like
-C<&SYS_getitimer>, which you can use as arguments to your functions.
+C<SYS_getitimer()>, which you can use as arguments to your functions.
It doesn't work perfectly, but it usually gets most of the job done.
Simple files like F<errno.h>, F<syscall.h>, and F<socket.h> were fine,
but the hard ones like F<ioctl.h> nearly always need to be hand-edited.
diff --git a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq9.pod b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq9.pod
index b42755efe0a..41b9f066b20 100644
--- a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq9.pod
+++ b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlfaq9.pod
@@ -295,7 +295,7 @@ Use the L<Email::MIME> and L<Email::Sender::Simple> modules, like so:
],
attributes => {
encoding => 'quoted-printable',
- charset => 'ISO-8859-1',
+ charset => 'utf-8',
},
body_str => "Happy birthday to you!\n",
);
diff --git a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlglossary.pod b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlglossary.pod
index 5adef04b397..6d6f280c2bc 100644
--- a/gnu/usr.bin/perl/cpan/perlfaq/lib/perlglossary.pod
+++ b/gnu/usr.bin/perl/cpan/perlfaq/lib/perlglossary.pod
@@ -1,13 +1,21 @@
+
+=encoding utf8
+
=head1 NAME
perlglossary - Perl Glossary
=head1 DESCRIPTION
-A glossary of terms (technical and otherwise) used in the Perl documentation.
-Other useful sources include the Free On-Line Dictionary of Computing
-L<http://foldoc.org/>, the Jargon File
-L<http://catb.org/~esr/jargon/>, and Wikipedia L<http://www.wikipedia.org/>.
+A glossary of terms (technical and otherwise) used in the Perl
+documentation, derived from the Glossary of I<Programming
+Perl>, Fourth Edition. Words or phrases in bold are defined elsewhere in
+this glossary.
+
+Other useful sources include the Unicode Glossary L<http://unicode.org/glossary/>,
+the Free On-Line Dictionary of Computing L<http://foldoc.org/>,
+the Jargon File L<http://catb.org/~esr/jargon/>,
+and Wikipedia L<http://www.wikipedia.org/>.
=head2 A
@@ -15,215 +23,231 @@ L<http://catb.org/~esr/jargon/>, and Wikipedia L<http://www.wikipedia.org/>.
=item accessor methods
-A L</method> used to indirectly inspect or update an L</object>'s
-state (its L<instance variables|/instance variable>).
+A B<X<accessor methods, defined>X<methods, accessor>method> used to
+indirectly inspect or update an B<object>’s state (its B<instance
+variables>).
=item actual arguments
-The L<scalar values|/scalar value> that you supply to a L</function>
-or L</subroutine> when you call it. For instance, when you call
-C<power("puff")>, the string C<"puff"> is the actual argument. See
-also L</argument> and L</formal arguments>.
+The B<X<actual arguments>X<arguments, actual>scalar values> that you supply
+to a B<function> or B<subroutine> when you call it. For instance, when you
+call C<power("puff")>, the string C<"puff"> is the actual argument. See also
+B<argument> and B<formal arguments>.
=item address operator
-Some languages work directly with the memory addresses of values, but
-this can be like playing with fire. Perl provides a set of asbestos
-gloves for handling all memory management. The closest to an address
-operator in Perl is the backslash operator, but it gives you a L</hard
-reference>, which is much safer than a memory address.
+Some X<address operator>languages work directly with the memory addresses of
+values, but this can be like playing with fire. Perl provides a set of
+asbestos gloves for handling all memory management. The closest to an
+address operator in Perl is the backslash operator, but it gives you a
+B<hard reference>, which is much safer than a memory address.
=item algorithm
-A well-defined sequence of steps, clearly enough explained that even a
-computer could do them.
+A X<algorithms (term)>well-defined sequence of steps, explained clearly
+enough that even a computer could do them.
=item alias
-A nickname for something, which behaves in all ways as though you'd
-used the original name instead of the nickname. Temporary aliases are
-implicitly created in the loop variable for C<foreach> loops, in the
-C<$_> variable for L<map|perlfunc/map> or L<grep|perlfunc/grep>
-operators, in C<$a> and C<$b> during L<sort|perlfunc/sort>'s
-comparison function, and in each element of C<@_> for the L</actual
-arguments> of a subroutine call. Permanent aliases are explicitly
-created in L<packages|/package> by L<importing|/import> symbols or by
-assignment to L<typeglobs|/typeglob>. Lexically scoped aliases for
-package variables are explicitly created by the L<our|perlfunc/our>
-declaration.
+A X<aliases, defined>nickname for something, which behaves in all ways as
+though you’d used the original name instead of the nickname. Temporary
+aliases are implicitly created in the loop variable for C<foreach> loops, in
+the C<$_> variable for C<map> or C<grep> operators, in C<$a> and C<$b>
+during C<sort>’s comparison function, and in each element of C<@_> for the
+B<actual arguments> of a subroutine call. Permanent aliases are explicitly
+created in B<packages> by B<importing> symbols or by assignment to
+B<typeglobs>. Lexically scoped aliases for package variables are explicitly
+created by the C<our> declaration.
+
+=item alphabetic
+
+The X<alphabetic sort>sort of characters we put into words. In Unicode, this
+is all letters including all ideographs and certain diacritics, letter
+numbers like Roman numerals, and various combining marks.
=item alternatives
-A list of possible choices from which you may select only one, as in
-"Would you like door A, B, or C?" Alternatives in regular expressions
-are separated with a single vertical bar: C<|>. Alternatives in
-normal Perl expressions are separated with a double vertical bar:
-C<||>. Logical alternatives in L</Boolean> expressions are separated
+A X<alternative characters>list of possible choices from which you may
+select only one, as in, “Would you like door A, B, or C?†Alternatives in
+regular expressions are separated with a single vertical bar: C<|>.
+Alternatives in normal Perl expressions are separated with a double vertical
+bar: C<||>. Logical alternatives in B<Boolean> expressions are separated
with either C<||> or C<or>.
=item anonymous
-Used to describe a L</referent> that is not directly accessible
-through a named L</variable>. Such a referent must be indirectly
-accessible through at least one L</hard reference>. When the last
-hard reference goes away, the anonymous referent is destroyed without
-pity.
+Used to X<anonymous referents>X<referents, anonymous>describe a B<referent>
+that is not directly accessible through a named B<variable>. Such a referent
+must be indirectly accessible through at least one B<hard reference>. When
+the last hard reference goes away, the anonymous referent is destroyed
+without pity.
+
+=item application
+
+A X<applications (term)>bigger, fancier sort of B<program> with a fancier
+name so people don’t realize they are using a program.
=item architecture
-The kind of computer you're working on, where one "kind" of computer
-means all those computers sharing a compatible machine language.
+The kind of X<architecture>computer you’re working on, where one “kind of
+computer†means all those computers sharing a compatible machine language.
Since Perl programs are (typically) simple text files, not executable
-images, a Perl program is much less sensitive to the architecture it's
-running on than programs in other languages, such as C, that are
-compiled into machine code. See also L</platform> and L</operating
-system>.
+images, a Perl program is much less sensitive to the architecture it’s
+running on than programs in other languages, such as C, that are B<compiled>
+into machine code. See also B<platform> and B<operating system>.
=item argument
-A piece of data supplied to a L<program|/executable file>,
-L</subroutine>, L</function>, or L</method> to tell it what it's
-supposed to do. Also called a "parameter".
+A X<arguments, defined>piece of data supplied to a B<program>,
+B<subroutine>, B<function>, or B<method> to tell it what it’s supposed to
+do. Also called a “parameterâ€.
=item ARGV
-The name of the array containing the L</argument> L</vector> from the
-command line. If you use the empty C<< E<lt>E<gt> >> operator, L</ARGV> is
-the name of both the L</filehandle> used to traverse the arguments and
-the L</scalar> containing the name of the current input file.
+The name of the X<ARGV filehandle>array containing the B<argument> B<vector>
+from the command line. If you use the empty C<E<lt>E<gt>> operator, C<ARGV>
+is the name of both the B<filehandle> used to traverse the arguments and the
+B<scalar> containing the name of the current input file.
=item arithmetical operator
-A L</symbol> such as C<+> or C</> that tells Perl to do the arithmetic
-you were supposed to learn in grade school.
+A B<X<arithmetic operators, about>symbol> such as C<+> or C</> that tells
+Perl to do the arithmetic you were supposed to learn in grade school.
=item array
-An ordered sequence of L<values|/value>, stored such that you can
-easily access any of the values using an integer L</subscript>
-that specifies the value's L</offset> in the sequence.
+An X<arrays, defined>ordered sequence of B<values>, stored such that you can
+easily access any of the values using an I<integer subscript> that specifies
+the value’s B<offset> in the sequence.
=item array context
-An archaic expression for what is more correctly referred to as
-L</list context>.
+An archaic X<array context>expression for what is more correctly referred to
+as B<list context>.
+
+=item Artistic License
+
+The open X<Artistic License>source license that X<Wall, Larry>Larry Wall
+created for Perl, maximizing Perl’s usefulness, availability, and
+modifiability. The current version is 2. (L<http://www.opensource.org/licenses/artistic-license.php>).
=item ASCII
-The American Standard Code for Information Interchange (a 7-bit
-character set adequate only for poorly representing English text).
-Often used loosely to describe the lowest 128 values of the various
-ISO-8859-X character sets, a bunch of mutually incompatible 8-bit
-codes sometimes described as half ASCII. See also L</Unicode>.
+The X<ASCII (American Standard Code for Information Interchange)>X<American
+Standard Code for Information Interchange (ASCII)>American Standard Code for
+Information Interchange (a 7-bit character set adequate only for poorly
+representing English text). Often used loosely to describe the lowest 128
+values of the various ISO-8859-X character sets, a bunch of mutually
+incompatible 8-bit codes best described as half ASCII. See also B<Unicode>.
=item assertion
-A component of a L</regular expression> that must be true for the
-pattern to match but does not necessarily match any characters itself.
-Often used specifically to mean a L</zero width> assertion.
+A X<assertions (in regexes), defined>X<regular expressions, assertions
+in>component of a B<regular expression> that must be true for the pattern to
+match but does not necessarily match any characters itself. Often used
+specifically to mean a B<zero-width> assertion.
=item assignment
-An L</operator> whose assigned mission in life is to change the value
-of a L</variable>.
+An X<assignments, defined>B<operator> whose assigned mission in life is to
+change the value of a B<variable>.
=item assignment operator
-Either a regular L</assignment>, or a compound L</operator> composed
-of an ordinary assignment and some other operator, that changes the
-value of a variable in place, that is, relative to its old value. For
-example, C<$a += 2> adds C<2> to C<$a>.
+Either a X<assignment operators, about>regular B<assignment> or a compound
+B<operator> composed of an ordinary assignment and some other operator, that
+changes the value of a variable in place; that is, relative to its old
+value. For example, C<$a += 2> adds C<2> to C<$a>.
=item associative array
-See L</hash>. Please.
+See B<hash>. X<associative arrays>Please. The term associative array is the
+old Perl 4 term for a B<hash>. Some languages call it a dictionary.
=item associativity
-Determines whether you do the left L</operator> first or the right
-L</operator> first when you have "A L</operator> B L</operator> C" and
-the two operators are of the same precedence. Operators like C<+> are
-left associative, while operators like C<**> are right associative.
-See L<perlop> for a list of operators and their associativity.
+Determines X<associativity>whether you do the left B<operator> first or the
+right B<operator> first when you have “A B<operator> B B<operator> Câ€, and
+the two operators are of the same precedence. Operators like C<+> are left
+associative, while operators like C<**> are right associative. See Camel
+chapter 3, “Unary and Binary Operators†for a list of operators and their
+associativity.
=item asynchronous
-Said of events or activities whose relative temporal ordering is
-indeterminate because too many things are going on at once. Hence, an
-asynchronous event is one you didn't know when to expect.
+Said of X<asynchronous event processing>events or activities whose relative
+temporal ordering is indeterminate because too many things are going on at
+once. Hence, an asynchronous event is one you didn’t know when to expect.
=item atom
-A L</regular expression> component potentially matching a
-L</substring> containing one or more characters and treated as an
-indivisible syntactic unit by any following L</quantifier>. (Contrast
-with an L</assertion> that matches something of L</zero width> and may
-not be quantified.)
+A B<regular X<atoms>expression> component potentially matching a
+B<substring> containing one or more characters and treated as an indivisible
+syntactic unit by any following B<quantifier>. (Contrast with an
+B<assertion> that matches something of B<zero width> and may not be quantified.)
=item atomic operation
-When Democritus gave the word "atom" to the indivisible bits of
-matter, he meant literally something that could not be cut: I<a->
-(not) + I<tomos> (cuttable). An atomic operation is an action that
-can't be interrupted, not one forbidden in a nuclear-free zone.
+When X<atomic operation>Democritus gave the word “atom†to the indivisible
+bits of matter, he meant literally something that could not be cut: I<á¼€->
+(not) + I<-τομος> (cuttable). An atomic operation is an action that can’t be
+interrupted, not one forbidden in a nuclear-free zone.
=item attribute
-A new feature that allows the declaration of L<variables|/variable>
-and L<subroutines|/subroutine> with modifiers as in C<sub foo : locked
-method>. Also, another name for an L</instance variable> of an
-L</object>.
+A new X<attribute feature>feature that allows the declaration of
+B<variables> and B<subroutines> with modifiers, as in C<sub foo : locked
+method>. Also another name for an B<instance variable> of an B<object>.
=item autogeneration
-A feature of L</operator overloading> of L<objects|/object>, whereby
-the behavior of certain L<operators|/operator> can be reasonably
-deduced using more fundamental operators. This assumes that the
-overloaded operators will often have the same relationships as the
-regular operators. See L<perlop>.
+A X<autogeneration, about>feature of B<operator overloading> of B<objects>,
+whereby the behavior of certain B<operators> can be reasonably deduced using
+more fundamental operators. This assumes that the overloaded operators will
+often have the same relationships as the regular operators. See Camel
+chapter 13, “Overloadingâ€.
=item autoincrement
-To add one to something automatically, hence the name of the C<++>
-operator. To instead subtract one from something automatically is
-known as an "autodecrement".
+To X<autoincrement (term)>add one to something automatically, hence the name
+of the C<++> operator. To instead subtract one from something automatically
+is known as an “autodecrementâ€.
=item autoload
-To load on demand. (Also called "lazy" loading.) Specifically, to
-call an L<AUTOLOAD|perlsub/Autoloading> subroutine on behalf of an
-undefined subroutine.
+To X<autoloading, defined>load on demand. (Also called “lazy†loading.)
+Specifically, to call an C<AUTOLOAD> subroutine on behalf of an undefined
+subroutine.
=item autosplit
-To split a string automatically, as the B<-a> L</switch> does when
-running under B<-p> or B<-n> in order to emulate L</awk>. (See also
-the L<AutoSplit> module, which has nothing to do with the B<-a>
-switch, but a lot to do with autoloading.)
+To X<autosplit (term)>split a string automatically, as the I<–a> B<switch>
+does when running under I<–p> or I<–n> in order to emulate B<awk>. (See also
+the C<AutoSplit>X<AutoSplit module> module, which has nothing to do with the
+C<–a> switch but a lot to do with autoloading.)
=item autovivification
-A Greco-Roman word meaning "to bring oneself to life". In Perl,
-storage locations (L<lvalues|/lvalue>) spontaneously generate
-themselves as needed, including the creation of any L</hard reference>
-values to point to the next level of storage. The assignment
-C<$a[5][5][5][5][5] = "quintet"> potentially creates five scalar
-storage locations, plus four references (in the first four scalar
-locations) pointing to four new anonymous arrays (to hold the last
-four scalar locations). But the point of autovivification is that you
-don't have to worry about it.
+A X<autovivification>Graeco-Roman word meaning “to bring oneself to lifeâ€.
+In Perl, storage locations (B<lvalues>) spontaneously generate themselves as
+needed, including the creation of any B<hard reference> values to point to
+the next level of storage. The assignment C<$a[5][5][5][5][5] = "quintet">
+potentially creates five scalar storage locations, plus four references (in
+the first four scalar locations) pointing to four new anonymous arrays (to
+hold the last four scalar locations). But the point of autovivification is
+that you don’t have to worry about it.
=item AV
-Short for "array value", which refers to one of Perl's internal data
-types that holds an L</array>. The L</AV> type is a subclass of
-L</SV>.
+Short X<AV (array value)>X<array value (AV)>X<values, array>for “array
+valueâ€, which refers to one of Perl’s internal data types that holds an
+B<array>. The C<AV> type is a subclass of B<SV>.
=item awk
-Descriptive editing term--short for "awkward". Also coincidentally
-refers to a venerable text-processing language from which Perl derived
-some of its high-level ideas.
+Descriptive X<awk (editing term)>editing term—short for “awkwardâ€. Also
+coincidentally refers to a venerable text-processing language from which
+Perl derived some of its high-level ideas.
=back
@@ -233,185 +257,187 @@ some of its high-level ideas.
=item backreference
-A substring L<captured|/capturing> by a subpattern within
-unadorned parentheses in a L</regex>, also referred to as a capture group. The
-sequences (C<\g1>, C<\g2>, etc.) later in the same pattern refer back to
-the corresponding subpattern in the current match. Outside the pattern,
-the numbered variables (C<$1>, C<$2>, etc.) continue to refer to these
-same values, as long as the pattern was the last successful match of
-the current dynamic scope. C<\g{-1}> can be used to refer to a group by
-relative rather than absolute position; and groups can be also be named, and
-referred to later by name rather than number. See L<perlre/"Capture groups">.
+A X<backreferences, about>X<references, backreferences>substring B<captured>
+by a subpattern within unadorned parentheses in a B<regex>. Backslashed
+decimal numbers (C<\1>, C<\2>, etc.) later in the same pattern refer back to
+the corresponding subpattern in the current match. Outside the pattern, the
+numbered variables (C<$1>, C<$2>, etc.) continue to refer to these same
+values, as long as the pattern was the last successful match of the current
+B<dynamic scope>.
=item backtracking
-The practice of saying, "If I had to do it all over, I'd do it
-differently," and then actually going back and doing it all over
-differently. Mathematically speaking, it's returning from an
-unsuccessful recursion on a tree of possibilities. Perl backtracks
-when it attempts to match patterns with a L</regular expression>, and
-its earlier attempts don't pan out. See L<perlre/Backtracking>.
+The X<backtracking>practice of saying, “If I had to do it all over, I’d do
+it differently,†and then actually going back and doing it all over
+differently. Mathematically speaking, it’s returning from an unsuccessful
+recursion on a tree of possibilities. Perl backtracks when it attempts to
+match patterns with a B<regular expression>, and its earlier attempts don’t
+pan out. See the section “The Little Engine That /Couldn(n’t)†in Camel
+chapter 5, “Pattern Matchingâ€.
=item backward compatibility
-Means you can still run your old program because we didn't break any
-of the features or bugs it was relying on.
+Means X<backward compatibility, defined>you can still run your old program
+because we didn’t break any of the features or bugs it was relying on.
=item bareword
-A word sufficiently ambiguous to be deemed illegal under L<use strict
-'subs'|strict/strict subs>. In the absence of that stricture, a
-bareword is treated as if quotes were around it.
+A word X<barewords, about>sufficiently ambiguous to be deemed illegal under
+C<use strict 'subs'>. In the absence of that stricture, a bareword is
+treated as if quotes were around it.
=item base class
-A generic L</object> type; that is, a L</class> from which other, more
-specific classes are derived genetically by L</inheritance>. Also
-called a "superclass" by people who respect their ancestors.
+A X<base classes>X<classes, base>generic B<object> type; that is, a B<class>
+from which other, more specific classes are derived genetically by
+B<inheritance>. Also called aX<superclasses>X<classes, superclasses>
+“superclass†by people who respect their ancestors.
=item big-endian
-From Swift: someone who eats eggs big end first. Also used of
-computers that store the most significant L</byte> of a word at a
-lower byte address than the least significant byte. Often considered
-superior to little-endian machines. See also L</little-endian>.
+From X<big–endian, defined>X<endianness, big–endian>Swift: someone who
+eats eggs big end first. Also used of computers that store the most
+significant B<byte> of a word at a lower byte address than the least
+significant byte. Often considered superior to little-endian machines. See
+also B<little-endian>.
=item binary
-Having to do with numbers represented in base 2. That means there's
-basically two numbers, 0 and 1. Also used to describe a "non-text
-file", presumably because such a file makes full use of all the binary
-bits in its bytes. With the advent of L</Unicode>, this distinction,
-already suspect, loses even more of its meaning.
+Having X<binary (term)>to do with numbers represented in base 2. That means
+there’s basically two numbers: 0 and 1. Also used to describe a file of
+“nontextâ€, presumably because such a file makes full use of all the binary
+bits in its bytes. With the advent of B<Unicode>, this distinction, already
+suspect, loses even more of its meaning.
=item binary operator
-An L</operator> that takes two L<operands|/operand>.
+An B<X<binary operators, about>operator> that takes two B<operands>.
=item bind
-To assign a specific L</network address> to a L</socket>.
+To X<bind (term)>assign a specific B<network address> to a B<socket>.
=item bit
-An integer in the range from 0 to 1, inclusive. The smallest possible
-unit of information storage. An eighth of a L</byte> or of a dollar.
-(The term "Pieces of Eight" comes from being able to split the old
-Spanish dollar into 8 bits, each of which still counted for money.
-That's why a 25-cent piece today is still "two bits".)
+An X<bits, defined>integer in the range from 0 to 1, inclusive. The smallest
+possible unit of information storage. An eighth of a B<byte> or of a dollar.
+(The term “Pieces of Eight†comes from being able to split the old Spanish
+dollar into 8 bits, each of which still counted for money. That’s why a 25-
+cent piece today is still “two bitsâ€.)
=item bit shift
-The movement of bits left or right in a computer word, which has the
-effect of multiplying or dividing by a power of 2.
+The X<bit–shift operators, defined>movement of bits left or right in a
+computer word, which has the effect of multiplying or dividing by a
+power of 2.
=item bit string
-A sequence of L<bits|/bit> that is actually being thought of as a
+A X<bit string>sequence of B<bits> that is actually being thought of as a
sequence of bits, for once.
=item bless
-In corporate life, to grant official approval to a thing, as in, "The
-VP of Engineering has blessed our WebCruncher project." Similarly in
-Perl, to grant official approval to a L</referent> so that it can
-function as an L</object>, such as a WebCruncher object. See
-L<perlfunc/"bless">.
+In X<bless function, about>X<bless (term)>corporate life, to grant official
+approval to a thing, as in, “The VP of Engineering has blessed our
+WebCruncher project.†Similarly, in Perl, to grant official approval to a
+B<referent> so that it can function as an B<object>, such as a WebCruncher
+object. See the C<bless> function in Camel chapter 27, “Functionsâ€.
=item block
-What a L</process> does when it has to wait for something: "My process
-blocked waiting for the disk." As an unrelated noun, it refers to a
-large chunk of data, of a size that the L</operating system> likes to
-deal with (normally a power of two such as 512 or 8192). Typically
-refers to a chunk of data that's coming from or going to a disk file.
+What X<blocks, defined>a B<process> does when it has to wait for something:
+“My process blocked waiting for the disk.†As an unrelated noun, it refers
+to a large chunk of data, of a size that the B<operating system> likes to
+deal with (normally a power of 2 such as 512 or 8192). Typically refers to
+a chunk of data that’s coming from or going to a disk file.
=item BLOCK
-A syntactic construct consisting of a sequence of Perl
-L<statements|/statement> that is delimited by braces. The C<if> and
-C<while> statements are defined in terms of L<BLOCKs|/BLOCK>, for instance.
-Sometimes we also say "block" to mean a lexical scope; that is, a
-sequence of statements that act like a L</BLOCK>, such as within an
-L<eval|perlfunc/eval> or a file, even though the statements aren't
-delimited by braces.
+A X<BLOCK construct, about>X<constructs, BLOCK>syntactic construct
+consisting of a sequence of Perl B<statements> that is delimited by braces.
+The C<if> and C<while> statements are defined in terms of I<C<BLOCK>>s, for
+instance. Sometimes we also say “block†to mean a lexical scope; that is, a
+sequence of statements that acts like a I<C<BLOCK>>, such as within an
+C<eval> or a file, even though the statements aren’t delimited by braces.
=item block buffering
-A method of making input and output efficient by passing one L</block>
-at a time. By default, Perl does block buffering to disk files. See
-L</buffer> and L</command buffering>.
+A X<block buffering>X<buffering, block>method of making input and output
+efficient by passing one B<block> at a time. By default, Perl does block
+buffering to disk files. See B<buffer> and B<command buffering>.
=item Boolean
-A value that is either L</true> or L</false>.
+A X<Boolean values>X<values, Boolean>value that is either B<true> or
+B<false>.
=item Boolean context
-A special kind of L</scalar context> used in conditionals to decide
-whether the L</scalar value> returned by an expression is L</true> or
-L</false>. Does not evaluate as either a string or a number. See
-L</context>.
+A X<Boolean context, about>X<context, Boolean>special kind of B<scalar
+context> used in conditionals to decide whether the B<scalar value> returned
+by an expression is B<true> or B<false>. Does not evaluate as either a
+string or a number. See B<context>.
=item breakpoint
-A spot in your program where you've told the debugger to stop
-L<execution|/execute> so you can poke around and see whether anything
-is wrong yet.
+A X<breakpoints, defined>spot in your program where you’ve told the debugger
+to stop B<execution> so you can poke around and see whether anything is
+wrong yet.
=item broadcast
-To send a L</datagram> to multiple destinations simultaneously.
+To X<broadcast (networking term)>send a B<datagram> to multiple destinations
+simultaneously.
=item BSD
-A psychoactive drug, popular in the 80s, probably developed at
-U. C. Berkeley or thereabouts. Similar in many ways to the
-prescription-only medication called "System V", but infinitely more
-useful. (Or, at least, more fun.) The full chemical name is
-"Berkeley Standard Distribution".
+A X<BSD (Berkeley Standard Distribution)>X<Berkeley Standard Distribution
+(BSD)>psychoactive drug, popular in the ’80s, probably developed at UC
+Berkeley or thereabouts. Similar in many ways to the prescription-only
+medication called “System Vâ€, but infinitely more useful. (Or, at least,
+more fun.) The full chemical name is “Berkeley Standard Distributionâ€.
=item bucket
-A location in a L</hash table> containing (potentially) multiple
-entries whose keys "hash" to the same hash value according to its hash
-function. (As internal policy, you don't have to worry about it,
-unless you're into internals, or policy.)
+A X<buckets (term)>location in a B<hash table> containing (potentially)
+multiple entries whose keys “hash†to the same hash value according to its
+hash function. (As internal policy, you don’t have to worry about it unless
+you’re into internals, or policy.)
=item buffer
-A temporary holding location for data. L<Block buffering|/block
-buffering> means that the data is passed on to its destination
-whenever the buffer is full. L<Line buffering|/line buffering> means
-that it's passed on whenever a complete line is received. L<Command
-buffering|/command buffering> means that it's passed every time you do
-a L<print|perlfunc/print> command (or equivalent). If your output is
-unbuffered, the system processes it one byte at a time without the use
-of a holding area. This can be rather inefficient.
+A X<buffers, defined>temporary holding location for data. Data that are
+B<Block buffering> means that the data is passed on to its destination
+whenever the buffer is full. B<Line buffering> means that it’s passed on
+whenever a complete line is received. B<Command buffering> means that it’s
+passed every time you do a C<print> command (or equivalent). If your output
+is unbuffered, the system processes it one byte at a time without the use of
+a holding area. This can be rather inefficient.
=item built-in
-A L</function> that is predefined in the language. Even when hidden
-by L</overriding>, you can always get at a built-in function by
-L<qualifying|/qualified> its name with the C<CORE::> pseudo-package.
+A B<X<built–in functions, about>function> that is predefined in the
+language. Even when hidden by B<overriding>, you can always get at a built-
+in function by B<qualifying> its name with the C<CORE::> pseudopackage.
=item bundle
-A group of related modules on L</CPAN>. (Also, sometimes refers to a
-group of command-line switches grouped into one L</switch cluster>.)
+A X<bundles (term)>group of related modules on B<CPAN>. (Also sometimes
+refers to a group of command-line switches grouped into one B<switch
+cluster>.)
=item byte
-A piece of data worth eight L<bits|/bit> in most places.
+A X<bytes (term)>piece of data worth eight B<bits> in most places.
=item bytecode
-A pidgin-like language spoken among 'droids when they don't wish to
-reveal their orientation (see L</endian>). Named after some similar
-languages spoken (for similar reasons) between compilers and
-interpreters in the late 20th century. These languages are
-characterized by representing everything as a
-non-architecture-dependent sequence of bytes.
+A pidgin-like lingo spoken among ’droids when they don’t wish to reveal
+their orientation (see B<endian>). Named after some similar languages spoken
+(for similar reasons) between compilers and interpreters in the late 20ᵗʰ
+century. These languages are characterized by representing everything as a
+nonarchitecture-dependent sequence of bytes.
=back
@@ -421,312 +447,362 @@ non-architecture-dependent sequence of bytes.
=item C
-A language beloved by many for its inside-out L</type> definitions,
-inscrutable L</precedence> rules, and heavy L</overloading> of the
-function-call mechanism. (Well, actually, people first switched to C
-because they found lowercase identifiers easier to read than upper.)
-Perl is written in C, so it's not surprising that Perl borrowed a few
-ideas from it.
+A X<C language, about>language beloved by many for its inside-out B<type>
+definitions, inscrutable B<precedence> rules, and heavy B<overloading> of
+the function-call mechanism. (Well, actually, people first switched to C
+because they found lowercase identifiers easier to read than upper.) Perl is
+written in C, so it’s not surprising that Perl borrowed a few ideas from it.
-=item C preprocessor
+=item cache
-The typical C compiler's first pass, which processes lines beginning
-with C<#> for conditional compilation and macro definition and does
-various manipulations of the program text based on the current
-definitions. Also known as I<cpp>(1).
+A X<cache (term)>data repository. Instead of computing expensive answers
+several times, compute it once and save the result.
-=item call by reference
+=item callback
-An L</argument>-passing mechanism in which the L</formal arguments>
-refer directly to the L</actual arguments>, and the L</subroutine> can
-change the actual arguments by changing the formal arguments. That
-is, the formal argument is an L</alias> for the actual argument. See
-also L</call by value>.
+A B<X<callbacks>handler> that you register with some other part of your
+program in the hope that the other part of your program will B<trigger> your
+handler when some event of interest transpires.
-=item call by value
+=item call by reference
-An L</argument>-passing mechanism in which the L</formal arguments>
-refer to a copy of the L</actual arguments>, and the L</subroutine>
-cannot change the actual arguments by changing the formal arguments.
-See also L</call by reference>.
+An B<argument>-passing X<call by reference>X<references, call by reference
+mechanism>mechanism in which the B<formal arguments> refer directly to the
+B<actual arguments>, and the B<subroutine> can change the actual arguments
+by changing the formal arguments. That is, the formal argument is an
+B<alias> for the actual argument. See also B<call by value>.
-=item callback
+=item call by value
-A L</handler> that you register with some other part of your program
-in the hope that the other part of your program will L</trigger> your
-handler when some event of interest transpires.
+An B<X<call by value>argument>-passing mechanism in which the B<formal
+arguments> refer to a copy of the B<actual arguments>, and the
+B<subroutine> cannot change the actual arguments by changing the formal
+arguments. See also B<call by reference>.
=item canonical
-Reduced to a standard form to facilitate comparison.
+Reduced X<canonical (term)>to a standard form to facilitate comparison.
-=item capture buffer, capture group
+=item capture variables
-These two terms are synonymous:
-a L<captured substring|/capturing> by a regex subpattern.
+The X<capture variables>X<variables, capture>variables—such as C<$1> and
+C<$2>, and C<%+> and C<%– >—that hold the text remembered in a pattern
+match. See Camel chapter 5, “Pattern Matchingâ€.
=item capturing
-The use of parentheses around a L</subpattern> in a L</regular
-expression> to store the matched L</substring> as a L</backreference>
-or L<capture group|/capture buffer, capture group>.
-(Captured strings are also returned as a list in L</list context>.)
+The X<capturing in pattern matching>X<subpatterns, capturing>X<pattern
+matching, capturing in>use of parentheses around a B<subpattern> in a
+B<regular expression> to store the matched B<substring> as a
+B<backreference>. (Captured strings are also returned as a list in B<list
+context>.) See Camel chapter 5, “Pattern Matchingâ€.
+
+=item cargo cult
+
+Copying X<cargo cult>and pasting code without understanding it, while
+superstitiously believing in its value. This term originated from
+preindustrial cultures dealing with the detritus of explorers and colonizers
+of technologically advanced cultures. See I<The Gods Must Be Crazy>.
+
+=item case
+
+A X<case (character)>X<characters, case considerations>property of certain
+characters. Originally, typesetter stored capital letters in the upper of
+two cases and small letters in the lower one. Unicode recognizes three
+cases: B<lowercase> (B<character property> C<\p{lower}>), B<titlecase>
+(C<\p{title}>), and B<uppercase> (C<\p{upper}>). A fourth casemapping called
+B<foldcase> is not itself a distinct case, but it is used internally to
+implement B<casefolding>. Not all letters have case, and some nonletters
+have case.
+
+=item casefolding
+
+Comparing X<casefolding>or matching a string case-insensitively. In Perl, it
+is implemented with the C</i> pattern modifier, the C<fc> function, and the
+C<\F> double-quote translation escape.
+
+=item casemapping
+
+The X<casemapping>process of converting a string to one of the four Unicode
+B<casemaps>; in Perl, it is implemented with the C<fc>, C<lc>, C<ucfirst>,
+and C<uc> functions.
=item character
-A small integer representative of a unit of orthography.
-Historically, characters were usually stored as fixed-width integers
-(typically in a byte, or maybe two, depending on the character set),
-but with the advent of UTF-8, characters are often stored in a
-variable number of bytes depending on the size of the integer that
-represents the character. Perl manages this transparently for you,
-for the most part.
+The X<characters, defined>smallest individual element of a string. Computers
+store characters as integers, but Perl lets you operate on them as text. The
+integer used to represent a particular character is called that character’s
+B<codepoint>.
=item character class
-A square-bracketed list of characters used in a L</regular expression>
-to indicate that any character of the set may occur at a given point.
-Loosely, any predefined set of characters so used.
+A X<character classes, about>X<classes, character>square-bracketed list of
+characters used in a B<regular expression> to indicate that any character
+of the set may occur at a given point. Loosely, any predefined set of
+characters so used.
=item character property
-A predefined L</character class> matchable by the C<\p>
-L</metasymbol>. Many standard properties are defined for L</Unicode>.
+A X<character property>predefined B<character class> matchable by the C<\p>
+or C<\P> B<metasymbol>. B<Unicode> defines hundreds of standard properties
+for every possible codepoint, and Perl defines a few of its own, too.
=item circumfix operator
-An L</operator> that surrounds its L</operand>, like the angle
-operator, or parentheses, or a hug.
+An X<circumfix operator>B<operator> that surrounds its B<operand>, like the
+angle operator, or parentheses, or a hug.
=item class
-A user-defined L</type>, implemented in Perl via a L</package> that
-provides (either directly or by inheritance) L<methods|/method> (that
-is, L<subroutines|/subroutine>) to handle L<instances|/instance> of
-the class (its L<objects|/object>). See also L</inheritance>.
+A X<classes, defined>user-defined B<type>, implemented in Perl via a
+B<package> that provides (either directly or by inheritance) B<methods>
+(that is, B<subroutines>) to handle B<instances> of the class (its
+B<objects>). See also B<inheritance>.
=item class method
-A L</method> whose L</invocant> is a L</package> name, not an
-L</object> reference. A method associated with the class as a whole.
+A B<X<class methods>X<methods, class>method> whose B<invocant> is a
+B<package> name, not an B<object> reference. A method associated with the
+class as a whole. Also see B<instance method>.
=item client
-In networking, a L</process> that initiates contact with a L</server>
-process in order to exchange data and perhaps receive a service.
-
-=item cloister
-
-A L</cluster> used to restrict the scope of a L</regular expression
-modifier>.
+In X<clients, defined>X<processes, client>networking, a B<process> that
+initiates contact with a B<server> process in order to exchange data and
+perhaps receive a service.
=item closure
-An L</anonymous> subroutine that, when a reference to it is generated
-at run time, keeps track of the identities of externally visible
-L<lexical variables|/lexical variable> even after those lexical
-variables have supposedly gone out of L</scope>. They're called
-"closures" because this sort of behavior gives mathematicians a sense
-of closure.
+An B<X<closure subroutines>X<subroutines, closure>anonymous> subroutine
+that, when a reference to it is generated at runtime, keeps track of the
+identities of externally visible B<lexical variables>, even after those
+lexical variables have supposedly gone out of B<scope>. They’re called
+“closures†because this sort of behavior gives mathematicians a sense of
+closure.
=item cluster
-A parenthesized L</subpattern> used to group parts of a L</regular
-expression> into a single L</atom>.
+A X<clusters, defined>X<subpatterns, cluster>parenthesized B<subpattern>
+used to group parts of a B<regular expression> into a single B<atom>.
=item CODE
-The word returned by the L<ref|perlfunc/ref> function when you apply
-it to a reference to a subroutine. See also L</CV>.
+The X<CODE (ref function)>X<ref function, about>word returned by the C<ref>
+function when you apply it to a reference to a subroutine. See also B<CV>.
=item code generator
-A system that writes code for you in a low-level language, such as
-code to implement the backend of a compiler. See L</program
+A X<code generators, defined>system that writes code for you in a low-level
+language, such as code to implement the backend of a compiler. See B<program
generator>.
-=item code point
-
-The position of a character in a character set encoding. The character
-C<NULL> is almost certainly at the zeroth position in all character
-sets, so its code point is 0. The code point for the C<SPACE>
-character in the ASCII character set is 0x20, or 32 decimal; in EBCDIC
-it is 0x40, or 64 decimal. The L<ord|perlfunc/ord> function returns
-the code point of a character.
+=item codepoint
-"code position" and "ordinal" mean the same thing as "code point".
+The X<codepoints, about>integer a computer uses to represent a given
+character. ASCII codepoints are in the range 0 to 127; Unicode codepoints
+are in the range 0 to 0x1F_FFFF; and Perl codepoints are in the range 0 to
+2³²−1 or 0 to 2â¶â´âˆ’1, depending on your native integer size. In Perl Culture,
+sometimes called B<ordinals>.
=item code subpattern
-A L</regular expression> subpattern whose real purpose is to execute
-some Perl code, for example, the C<(?{...})> and C<(??{...})>
-subpatterns.
+A B<X<code subpatterns>X<subpatterns, code>regular expression> subpattern
+whose real purpose is to execute some Perl code—for example, the C<(?{...})>
+and C<(??{...})> subpatterns.
=item collating sequence
-The order into which L<characters|/character> sort. This is used by
-L</string> comparison routines to decide, for example, where in this
-glossary to put "collating sequence".
+The X<collating sequence>X<collating sequence>order into which B<characters>
+sort. This is used by B<string> comparison routines to decide, for example,
+where in this glossary to put “collating sequenceâ€.
+
+=item co-maintainer
+
+A X<co–maintainers>person with permissions to index a B<namespace> in
+B<PAUSE>. Anyone can upload any namespace, but only primary and
+co-maintainers get their contributions indexed.
+
+=item combining character
+
+Any X<combining characters>X<characters, combining>character with the
+General Category of Combining Mark (C<\p{GC=M}>), which may be spacing or
+nonspacing. Some are even invisible. A sequence of combining characters
+following a grapheme base character together make up a single user-visible
+character called a B<grapheme>. Most but not all diacritics are combining
+characters, and vice versa.
=item command
-In L</shell> programming, the syntactic combination of a program name
-and its arguments. More loosely, anything you type to a shell (a
-command interpreter) that starts it doing something. Even more
-loosely, a Perl L</statement>, which might start with a L</label> and
-typically ends with a semicolon.
+In B<shell> X<commands, defined>programming, the syntactic combination of a
+program name and its arguments. More loosely, anything you type to a shell
+(a command interpreter) that starts it doing something. Even more loosely, a
+Perl B<statement>, which might start with a B<label> and typically ends with
+a semicolon.
=item command buffering
-A mechanism in Perl that lets you store up the output of each Perl
-L</command> and then flush it out as a single request to the
-L</operating system>. It's enabled by setting the C<$|>
-(C<$AUTOFLUSH>) variable to a true value. It's used when you don't
-want data sitting around not going where it's supposed to, which may
-happen because the default on a L</file> or L</pipe> is to use
-L</block buffering>.
+A X<command buffering>X<buffering, command>mechanism in Perl that lets you
+store up the output of each Perl B<command> and then flush it out as a
+single request to the B<operating system>. It’s enabled by setting the C<$|>
+(C<$AUTOFLUSH>) variable to a true value. It’s used when you don’t want data
+sitting around, not going where it’s supposed to, which may happen because
+the default on a B<file> or B<pipe> is to use B<block buffering>.
-=item command name
+=item command-line arguments
-The name of the program currently executing, as typed on the command
-line. In C, the L</command> name is passed to the program as the
-first command-line argument. In Perl, it comes in separately as
-C<$0>.
+The X<command–line arguments>B<X<arguments, command–line>values> you supply
+along with a program name when you tell a B<shell> to execute a B<command>.
+These values are passed to a Perl program through C<@ARGV>.
-=item command-line arguments
+=item command name
-The L<values|/value> you supply along with a program name when you
-tell a L</shell> to execute a L</command>. These values are passed to
-a Perl program through C<@ARGV>.
+The X<command names>name of the program currently executing, as typed on the
+command line. In C, the B<command> name is passed to the program as the
+first command-line argument. In Perl, it comes in separately as C<$0>.
=item comment
-A remark that doesn't affect the meaning of the program. In Perl, a
-comment is introduced by a C<#> character and continues to the end of
-the line.
+A X<comments, defined>remark that doesn’t affect the meaning of the program.
+In Perl, a comment is introduced by a C<#> character and continues to the
+end of the line.
=item compilation unit
-The L</file> (or L</string>, in the case of L<eval|perlfunc/eval>)
-that is currently being compiled.
+The X<compilation units>B<file> (or B<string>, in the case of C<eval>) that
+is currently being B<compiled>.
-=item compile phase
+=item compile
-Any time before Perl starts running your main program. See also
-L</run phase>. Compile phase is mostly spent in L</compile time>, but
-may also be spent in L</run time> when C<BEGIN> blocks,
-L<use|perlfunc/use> declarations, or constant subexpressions are being
-evaluated. The startup and import code of any L<use|perlfunc/use>
-declaration is also run during compile phase.
+The process of turning source code into a machine-usable form. See B<compile
+phase>.
-=item compile time
+=item compile phase
-The time when Perl is trying to make sense of your code, as opposed to
-when it thinks it knows what your code means and is merely trying to
-do what it thinks your code says to do, which is L</run time>.
+Any X<compile phase, defined>time before Perl starts running your main
+program. See also B<run phase>. Compile phase is mostly spent in B<compile
+time>, but may also be spent in B<runtime> when C<BEGIN> blocks, C<use> or
+C<no> declarations, or constant subexpressions are being evaluated. The
+startup and import code of any C<use> declaration is also run during
+compile phase.
=item compiler
-Strictly speaking, a program that munches up another program and spits
-out yet another file containing the program in a "more executable"
-form, typically containing native machine instructions. The I<perl>
-program is not a compiler by this definition, but it does contain a
-kind of compiler that takes a program and turns it into a more
-executable form (L<syntax trees|/syntax tree>) within the I<perl>
-process itself, which the L</interpreter> then interprets. There are,
-however, extension L<modules|/module> to get Perl to act more like a
-"real" compiler. See L<O>.
+Strictly X<compilers and compiling, about>speaking, a program that munches
+up another program and spits out yet another file containing the program in
+a “more executable†form, typically containing native machine instructions.
+The I<perl> program is not a compiler by this definition, but it does
+contain a kind of compiler that takes a program and turns it into a more
+executable form (B<syntax trees>) within the I<perl> process itself, which
+the B<interpreter> then interprets. There are, however, extension B<modules>
+to get Perl to act more like a “real†compiler. See Camel chapter 16,
+“Compilingâ€.
+
+=item compile time
+
+The X<compile time, defined>time when Perl is trying to make sense of your
+code, as opposed to when it thinks it knows what your code means and is
+merely trying to do what it thinks your code says to do, which is B<runtime>.
=item composer
-A "constructor" for a L</referent> that isn't really an L</object>,
-like an anonymous array or a hash (or a sonata, for that matter). For
-example, a pair of braces acts as a composer for a hash, and a pair of
-brackets acts as a composer for an array. See L<perlref/Making
-References>.
+A “constructor†X<composers, about>for a B<referent> that isn’t really an
+B<object>, like an anonymous array or a hash (or a sonata, for that matter).
+For example, a pair of braces acts as a composer for a hash, and a pair of
+brackets acts as a composer for an array. See the section “Creating
+References†in Camel chapter 8, “Referencesâ€.
=item concatenation
-The process of gluing one cat's nose to another cat's tail. Also, a
-similar operation on two L<strings|/string>.
+The X<concatenating strings>X<strings, concatenating>process of gluing one
+cat’s nose to another cat’s tail. Also a similar operation on two
+B<strings>.
=item conditional
-Something "iffy". See L</Boolean context>.
+SomethingX<conditional (term)> “iffyâ€. See B<Boolean context>.
=item connection
-In telephony, the temporary electrical circuit between the caller's
-and the callee's phone. In networking, the same kind of temporary
-circuit between a L</client> and a L</server>.
+In X<connections (term)>telephony, the temporary electrical circuit between
+the caller’s and the callee’s phone. In networking, the same kind of
+temporary circuit between a B<client> and a B<server>.
=item construct
-As a noun, a piece of syntax made up of smaller pieces. As a
-transitive verb, to create an L</object> using a L</constructor>.
+As a X<constructs, defined>noun, a piece of syntax made up of smaller
+pieces. As a transitive verb, to create an B<object> using a B<constructor>.
=item constructor
-Any L</class method>, instance L</method>, or L</subroutine>
-that composes, initializes, blesses, and returns an L</object>.
-Sometimes we use the term loosely to mean a L</composer>.
+AnyX<constructors, defined> B<class method>, B<instance>, or B<subroutine>
+that composes, initializes, blesses, and returns an B<object>. Sometimes we
+use the term loosely to mean a B<composer>.
=item context
-The surroundings, or environment. The context given by the
-surrounding code determines what kind of data a particular
-L</expression> is expected to return. The three primary contexts are
-L</list context>, L</scalar context>, and L</void context>. Scalar
-context is sometimes subdivided into L</Boolean context>, L</numeric
-context>, L</string context>, and L</void context>. There's also a
-"don't care" scalar context (which is dealt with in Programming Perl,
-Third Edition, Chapter 2, "Bits and Pieces" if you care).
+The X<context, about>surroundings or environment. The context given by the
+surrounding code determines what kind of data a particular B<expression> is
+expected to return. The three primary contexts are B<list context>,
+B<scalar>, and B<void context>. Scalar context is sometimes subdivided into
+B<Boolean context>, B<numeric context>, B<string context>, and B<void
+context>. There’s also a “don’t care†context (which is dealt with in Camel
+chapter 2, “Bits and Piecesâ€, if you care).
=item continuation
-The treatment of more than one physical L</line> as a single logical
-line. L</Makefile> lines are continued by putting a backslash before
-the L</newline>. Mail headers as defined by RFC 822 are continued by
-putting a space or tab I<after> the newline. In general, lines in
-Perl do not need any form of continuation mark, because L</whitespace>
-(including newlines) is gleefully ignored. Usually.
+The X<continuation lines>treatment of more than one physical B<line> as a
+single logical line. B<Makefile> lines are continued by putting a backslash
+before the B<newline>. Mail headers, as defined by X<RFC 822>RFC 822, are
+continued by putting a space or tab I<after> the newline. In general, lines
+in Perl do not need any form of continuation mark, because B<whitespace>
+(including newlines) is gleefully ignored. Usually.
=item core dump
-The corpse of a L</process>, in the form of a file left in the
-L</working directory> of the process, usually as a result of certain
-kinds of fatal error.
+The X<core dump>corpse of a B<process>, in the form of a file left in the
+B<working directory> of the process, usually as a result of certain kinds
+of fatal errors.
=item CPAN
-The Comprehensive Perl Archive Network. (See L<perlfaq2/What modules and extensions are available for Perl? What is CPAN?>).
+The X<Comprehensive Perl Archive Network>X<CPAN (Comprehensive Perl Archive
+Network), about>Comprehensive Perl Archive Network. (See the Camel Preface
+and Camel chapter 19, “CPAN†for details.)
+
+=item C preprocessor
+
+The X<C preprocessor>typical C compiler’s first pass, which processes lines
+beginning with C<#> for conditional compilation and macro definition, and
+does various manipulations of the program text based on the current
+definitions. Also known as I<cpp>(1).
=item cracker
-Someone who breaks security on computer systems. A cracker may be a
-true L</hacker> or only a L</script kiddie>.
+Someone X<crackers>who breaks security on computer systems. A cracker may
+be a true B<hacker> or only a B<script kiddie>.
-=item current package
+=item currently selected output channel
-The L</package> in which the current statement is compiled. Scan
-backwards in the text of your program through the current L<lexical
-scope|/lexical scoping> or any enclosing lexical scopes till you find
-a package declaration. That's your current package name.
+The X<currently selected output channel>last B<filehandle> that was
+designated with C<select(FILEHANDLE)>; C<STDOUT>, if no filehandle has
+been selected.
-=item current working directory
+=item current package
-See L</working directory>.
+The B<package> X<current package>in which the current statement is
+B<compiled>. Scan backward in the text of your program through the current
+B<lexical scope> or any enclosing lexical scopes until you find a package
+declaration. That’s your current package name.
-=item currently selected output channel
+=item current working directory
-The last L</filehandle> that was designated with
-L<select|perlfunc/select>(C<FILEHANDLE>); L</STDOUT>, if no filehandle
-has been selected.
+SeeX<current working directory> B<working directory>.
=item CV
-An internal "code value" typedef, holding a L</subroutine>. The L</CV>
-type is a subclass of L</SV>.
+In academia, a curriculum vitæ, a fancy kind of résumé. In Perl, an X<CV
+(code value)>X<code value (CV)>internal “code value†typedef holding a
+B<subroutine>. The C<CV> type is a subclass of B<SV>.
=back
@@ -736,198 +812,195 @@ type is a subclass of L</SV>.
=item dangling statement
-A bare, single L</statement>, without any braces, hanging off an C<if>
-or C<while> conditional. C allows them. Perl doesn't.
+A bare, single B<X<dangling statements>X<statements, dangling>statement>,
+without any braces, hanging off an C<if> or C<while> conditional. C allows
+them. Perl doesn’t.
-=item data structure
+=item datagram
-How your various pieces of data relate to each other and what shape
-they make when you put them all together, as in a rectangular table or
-a triangular-shaped tree.
+A packet of X<datagrams, defined>data, such as a B<UDP> message, that (from
+the viewpoint of the programs involved) can be sent independently over the
+network. (In fact, all packets are sent independently at the B<IP> level,
+but B<stream> protocols such as B<TCP> hide this from your program.)
-=item data type
+=item data structure
-A set of possible values, together with all the operations that know
-how to deal with those values. For example, a numeric data type has a
-certain set of numbers that you can work with and various mathematical
-operations that you can do on the numbers but would make little sense
-on, say, a string such as C<"Kilroy">. Strings have their own
-operations, such as L</concatenation>. Compound types made of a
-number of smaller pieces generally have operations to compose and
-decompose them, and perhaps to rearrange them. L<Objects|/object>
-that model things in the real world often have operations that
-correspond to real activities. For instance, if you model an
-elevator, your elevator object might have an C<open_door()>
-L</method>.
+How your X<data structures, defined>various pieces of data relate to each
+other and what shape they make when you put them all together, as in a
+rectangular table or a triangular tree.
-=item datagram
+=item data type
-A packet of data, such as a L</UDP> message, that (from the viewpoint
-of the programs involved) can be sent independently over the network.
-(In fact, all packets are sent independently at the L</IP> level, but
-L</stream> protocols such as L</TCP> hide this from your program.)
+A set of X<data types, defined>possible values, together with all the
+operations that know how to deal with those values. For example, a numeric
+data type has a certain set of numbers that you can work with, as well as
+various mathematical operations that you can do on the numbers, but would
+make little sense on, say, a string such as C<"Kilroy">. Strings have their
+own operations, such as B<concatenation>. Compound types made of a number of
+smaller pieces generally have operations to compose and decompose them, and
+perhaps to rearrange them. B<Objects> that model things in the real world
+often have operations that correspond to real activities. For instance, if
+you model an elevator, your elevator object might have an C<open_door>
+B<method>.
=item DBM
-Stands for "Data Base Management" routines, a set of routines that
-emulate an L</associative array> using disk files. The routines use a
-dynamic hashing scheme to locate any entry with only two disk
-accesses. DBM files allow a Perl program to keep a persistent
-L</hash> across multiple invocations. You can L<tie|perlfunc/tie>
-your hash variables to various DBM implementations--see L<AnyDBM_File>
-and L<DB_File>.
+Stands for X<DBM (Database Management) routines>X<Database Management (DBM)
+routines>“Database Management†routines, a set of routines that emulate an
+B<associative array> using disk files. The routines use a dynamic hashing
+scheme to locate any entry with only two disk accesses. DBM files allow a
+Perl program to keep a persistent B<hash> across multiple invocations. You
+can C<tie> your hash variables to various DBM implementations.
=item declaration
-An L</assertion> that states something exists and perhaps describes
-what it's like, without giving any commitment as to how or where
-you'll use it. A declaration is like the part of your recipe that
-says, "two cups flour, one large egg, four or five tadpoles..." See
-L</statement> for its opposite. Note that some declarations also
-function as statements. Subroutine declarations also act as
-definitions if a body is supplied.
+An B<assertion> X<declarations, defined>that states something exists and
+perhaps describes what it’s like, without giving any commitment as to how
+or where you’ll use it. A declaration is like the part of your recipe that
+says, “two cups flour, one large egg, four or five tadpoles…†See
+B<statement> for its opposite. Note that some declarations also function
+as statements. Subroutine declarations also act as definitions if a body
+is supplied.
+
+=item declarator
+
+Something X<declarators>that tells your program what sort of variable
+you’d like. Perl doesn’t require you to declare variables, but you can use
+C<my>, C<our>, or C<state> to denote that you want something other than
+the default.
=item decrement
-To subtract a value from a variable, as in "decrement C<$x>" (meaning
-to remove 1 from its value) or "decrement C<$x> by 3".
+To X<decrementing values>X<values, decrementing>subtract a value from a
+variable, as in “decrement C<$x>†(meaning to remove 1 from its value) or
+“decrement C<$x> by 3â€.
=item default
-A L</value> chosen for you if you don't supply a value of your own.
+A B<value> X<default values>X<values, default>chosen for you if you don’t
+supply a value of your own.
=item defined
-Having a meaning. Perl thinks that some of the things people try to
-do are devoid of meaning, in particular, making use of variables that
-have never been given a L</value> and performing certain operations on
-data that isn't there. For example, if you try to read data past the
-end of a file, Perl will hand you back an undefined value. See also
-L</false> and L<perlfunc/defined>.
+Having a X<defined (term)>meaning. Perl thinks that some of the things
+people try to do are devoid of meaning; in particular, making use of
+variables that have never been given a B<value> and performing certain
+operations on data that isn’t there. For example, if you try to read data
+past the end of a file, Perl will hand you back an undefined value. See also
+B<false> and the C<defined> entry in Camel chapter 27, “Functionsâ€.
=item delimiter
-A L</character> or L</string> that sets bounds to an arbitrarily-sized
-textual object, not to be confused with a L</separator> or
-L</terminator>. "To delimit" really just means "to surround" or "to
-enclose" (like these parentheses are doing).
-
-=item deprecated modules and features
-
-Deprecated modules and features are those which were part of a stable
-release, but later found to be subtly flawed, and which should be avoided.
-They are subject to removal and/or bug-incompatible reimplementation in
-the next major release (but they will be preserved through maintenance
-releases). Deprecation warnings are issued under B<-w> or C<use
-diagnostics>, and notices are found in L<perldelta>s, as well as various
-other PODs. Coding practices that misuse features, such as C<my $foo if
-0>, can also be deprecated.
+A B<character> X<delimiters (term)>or B<string> that sets bounds to an
+arbitrarily sized textual object, not to be confused with a B<separator> or
+B<terminator>. “To delimit†really just means “to surround†or “to encloseâ€
+(like these parentheses are doing).
=item dereference
-A fancy computer science term meaning "to follow a L</reference> to
-what it points to". The "de" part of it refers to the fact that
-you're taking away one level of L</indirection>.
+A fancy X<dereference (term)>X<references, dereference>computer science term
+meaning “to follow a B<reference> to what it points toâ€. The “de†part of it
+refers to the fact that you’re taking away one level of B<indirection>.
=item derived class
-A L</class> that defines some of its L<methods|/method> in terms of a
-more generic class, called a L</base class>. Note that classes aren't
-classified exclusively into base classes or derived classes: a class
-can function as both a derived class and a base class simultaneously,
-which is kind of classy.
+A B<class> that X<derived classes>X<classes, derived>X<subclasses>X<classes,
+subclasses>defines some of its B<methods> in terms of a more generic class,
+called a B<base class>. Note that classes aren’t classified exclusively into
+base classes or derived classes: a class can function as both a derived
+class and a base class simultaneously, which is kind of classy.
=item descriptor
-See L</file descriptor>.
+See B<file descriptor>.
=item destroy
-To deallocate the memory of a L</referent> (first triggering its
-C<DESTROY> method, if it has one).
+To deallocate the X<destroy (term)>memory of a B<referent> (first triggering
+its C<DESTROY> method, if it has one).
=item destructor
-A special L</method> that is called when an L</object> is thinking
-about L<destroying|/destroy> itself. A Perl program's C<DESTROY>
-method doesn't do the actual destruction; Perl just
-L<triggers|/trigger> the method in case the L</class> wants to do any
-associated cleanup.
+A special B<method> X<destructor method>X<methods, destructor>that is called
+when an B<object> is thinking about B<destroying> itself. A Perl program’s
+C<DESTROY> method doesn’t do the actual destruction; Perl just B<triggers>
+the method in case the B<class> wants to do any associated cleanup.
=item device
-A whiz-bang hardware gizmo (like a disk or tape drive or a modem or a
-joystick or a mouse) attached to your computer, that the L</operating
-system> tries to make look like a L</file> (or a bunch of files).
+A whiz-bang X<devices (term)>hardware gizmo (like a disk or tape drive or a
+modem or a joystick or a mouse) attached to your computer, which the
+B<operating system> tries to make look like a B<file> (or a bunch of files).
Under Unix, these fake files tend to live in the I</dev> directory.
=item directive
-A L</pod> directive. See L<perlpod>.
+A B<pod> X<directives, defined>directive. See Camel chapter 23, “Plain Old
+Documentationâ€.
=item directory
-A special file that contains other files. Some L<operating
-systems|/operating system> call these "folders", "drawers", or
-"catalogs".
+A special X<directories, defined>file that contains other files. Some
+B<operating systems> call these “foldersâ€, “drawersâ€, “cataloguesâ€, or
+“catalogsâ€.
=item directory handle
-A name that represents a particular instance of opening a directory to
-read it, until you close it. See the L<opendir|perlfunc/opendir>
-function.
+A name X<directory handle>that represents a particular instance of opening a
+directory to read it, until you close it. See the C<opendir> function.
+
+=item discipline
+
+Some X<discipline (I/O layer)>people need this and some people avoid it.
+For Perl, it’s an old way to say B<I/O layer>.
=item dispatch
-To send something to its correct destination. Often used
+To send X<dispatching>something to its correct destination. Often used
metaphorically to indicate a transfer of programmatic control to a
-destination selected algorithmically, often by lookup in a table of
-function L<references|/reference> or, in the case of object
-L<methods|/method>, by traversing the inheritance tree looking for the
-most specific definition for the method.
+destination selected algorithmically, often by lookup in a table of function
+B<references> or, in the case of object B<methods>, by traversing the
+inheritance tree looking for the most specific definition for the method.
=item distribution
-A standard, bundled release of a system of software. The default
-usage implies source code is included. If that is not the case, it
-will be called a "binary-only" distribution.
+A standard, X<distributions, defined>bundled release of a system of
+software. The default usage implies source code is included. If that is not
+the case, it will be called a “binary-only†distribution.
-=item (to be) dropped modules
+=item dual-lived
-When Perl 5 was first released (see L<perlhist>), several modules were
-included, which have now fallen out of common use. It has been suggested
-that these modules should be removed, since the distribution became rather
-large, and the common criterion for new module additions is now limited to
-modules that help to build, test, and extend perl itself. Furthermore,
-the CPAN (which didn't exist at the time of Perl 5.0) can become the new
-home of dropped modules. Dropping modules is currently not an option, but
-further developments may clear the last barriers.
+Some X<dual–lived modules>X<modules, dual–lived>modules live both in the
+B<Standard Library> and on B<CPAN>. These modules might be developed on two
+tracks as people modify either version. The trend currently is to untangle
+these situations.
=item dweomer
-An enchantment, illusion, phantasm, or jugglery. Said when Perl's
-magical L</dwimmer> effects don't do what you expect, but rather seem
-to be the product of arcane dweomercraft, sorcery, or wonder working.
-[From Old English]
+An enchantment, illusion, X<dweomer>phantasm, or jugglery. Said when Perl’s
+magical B<dwimmer> effects don’t do what you expect, but rather seem to be
+the product of arcane I<dweomercraft>, sorcery, or wonder working. [From
+Middle English.]
=item dwimmer
-DWIM is an acronym for "Do What I Mean", the principle that something
-should just do what you want it to do without an undue amount of fuss.
-A bit of code that does "dwimming" is a "dwimmer". Dwimming can
-require a great deal of behind-the-scenes magic, which (if it doesn't
-stay properly behind the scenes) is called a L</dweomer> instead.
+DWIM X<DWIM (Do What I Mean) principle>X<Do What I Mean (DWIM) principle>is
+an acronym for X<dwimming>“Do What I Meanâ€, the principle that something
+should just do what you want it to do without an undue amount of fuss. A bit
+of code that does “dwimming†is a “dwimmerâ€. Dwimming can require a great
+deal of behind-the-scenes magic, which (if it doesn’t stay properly behind
+the scenes) is called a B<dweomer> instead.
=item dynamic scoping
-Dynamic scoping works over a dynamic scope, making variables visible
-throughout the rest of the L</block> in which they are first used and
-in any L<subroutines|/subroutine> that are called by the rest of the
-block. Dynamically scoped variables can have their values temporarily
-changed (and implicitly restored later) by a L<local|perlfunc/local>
-operator. (Compare L</lexical scoping>.) Used more loosely to mean
-how a subroutine that is in the middle of calling another subroutine
-"contains" that subroutine at L</run time>.
+Dynamic X<dynamic scope>X<scopes, dynamic>scoping works over a B<dynamic
+scope>, making variables visible throughout the rest of the B<block> in
+which they are first used and in any B<subroutines> that are called by the
+rest of the block. Dynamically scoped variables can have their values
+temporarily changed (and implicitly restored later) by a C<local> operator.
+(Compare B<lexical scoping>.) Used more loosely to mean how a subroutine
+that is in the middle of calling another subroutine “contains†that
+subroutine at B<runtime>.
=back
@@ -937,129 +1010,131 @@ how a subroutine that is in the middle of calling another subroutine
=item eclectic
-Derived from many sources. Some would say I<too> many.
+Derived X<eclectic (term)>from many sources. Some would say I<too> many.
=item element
-A basic building block. When you're talking about an L</array>, it's
-one of the items that make up the array.
+A basic X<elements, about>building block. When you’re talking about an
+B<array>, it’s one of the items that make up the array.
=item embedding
-When something is contained in something else, particularly when that
-might be considered surprising: "I've embedded a complete Perl
-interpreter in my editor!"
-
-=item empty list
-
-See </null list>.
+When X<embedding (term)>something is contained in something else,
+particularly when that might be considered surprising: “I’ve embedded a
+complete Perl interpreter in my editor!â€
=item empty subclass test
-The notion that an empty L</derived class> should behave exactly like
-its L</base class>.
-
-=item en passant
-
-When you change a L</value> as it is being copied. [From French, "in
-passing", as in the exotic pawn-capturing maneuver in chess.]
+The notion X<empty subclass test>that an empty B<derived class> should
+behave exactly like its B<base class>.
=item encapsulation
-The veil of abstraction separating the L</interface> from the
-L</implementation> (whether enforced or not), which mandates that all
-access to an L</object>'s state be through L<methods|/method> alone.
+The veil of X<encapsulation (term)>abstraction separating the B<interface>
+from the B<implementation> (whether enforced or not), which mandates that
+all access to an B<object>’s state be through B<methods> alone.
=item endian
-See L</little-endian> and L</big-endian>.
+See B<little-endian> and B<big-endian>.
+
+=item en passant
+
+When you X<en passant (term)>change a B<value> as it is being copied. [From
+French “in passingâ€, as in the exotic pawn-capturing maneuver in chess.]
=item environment
-The collective set of L<environment variables|/environment variable>
-your L</process> inherits from its parent. Accessed via C<%ENV>.
+The collectiveX<environment (term)> set of B<environment variables> your
+B<process> inherits from its parent. Accessed via C<%ENV>.
=item environment variable
-A mechanism by which some high-level agent such as a user can pass its
-preferences down to its future offspring (child L<processes|/process>,
-grandchild processes, great-grandchild processes, and so on). Each
-environment variable is a L</key>/L</value> pair, like one entry in a
-L</hash>.
+A mechanism X<environment variables>X<variables, environment>X<environment
+variables>by which some high-level agent such as a user can pass its
+preferences down to its future offspring (child B<processes>, grandchild
+processes, great-grandchild processes, and so on). Each environment
+variable is a B<key>/B<value> pair, like one entry in a B<hash>.
=item EOF
-End of File. Sometimes used metaphorically as the terminating string
-of a L</here document>.
+End of File. X<End of File (EOF)>X<EOF (End of File)>Sometimes used
+metaphorically as the terminating string of a B<here document>.
=item errno
-The error number returned by a L</syscall> when it fails. Perl refers
-to the error by the name C<$!> (or C<$OS_ERROR> if you use the English
-module).
+The X<errno (error number)>X<error number (errno)>error number returned by a
+B<syscall> when it fails. Perl refers to the error by the name C<$!> (or
+C<$OS_ERROR> if you use the English module).
=item error
-See L</exception> or L</fatal error>.
+See B<exception> or B<fatal error>.
=item escape sequence
-See L</metasymbol>.
+See B<metasymbol>.
=item exception
-A fancy term for an error. See L</fatal error>.
+A fancy term for an error. See B<fatal error>.
=item exception handling
-The way a program responds to an error. The exception handling
-mechanism in Perl is the L<eval|perlfunc/eval> operator.
+The X<exception handling, defined>way a program responds to an error. The
+exception-handling mechanism in Perl is the C<eval> operator.
=item exec
-To throw away the current L</process>'s program and replace it with
-another without exiting the process or relinquishing any resources
+To X<exec function>throw away the current B<process>’s program and replace
+it with another, without exiting the process or relinquishing any resources
held (apart from the old memory image).
=item executable file
-A L</file> that is specially marked to tell the L</operating system>
-that it's okay to run this file as a program. Usually shortened to
-"executable".
+A B<file> X<executable files>X<files, executable>that is specially marked to
+tell the B<operating system> that it’s okay to run this file as a program.
+Usually shortened to “executableâ€.
=item execute
-To run a L<program|/executable file> or L</subroutine>. (Has nothing
-to do with the L<kill|perlfunc/kill> built-in, unless you're trying to
-run a L</signal handler>.)
+To run X<execute (term)>a B<program> or B<subroutine>. (Has nothing to do
+with the C<kill> built-in, unless you’re trying to run a B<signal handler>.)
=item execute bit
-The special mark that tells the operating system it can run this
-program. There are actually three execute bits under Unix, and which
-bit gets used depends on whether you own the file singularly,
-collectively, or not at all.
+The X<execute bit>special mark that tells the operating system it can run
+this program. There are actually three execute bits under Unix, and which
+bit gets used depends on whether you own the file singularly, collectively,
+or not at all.
=item exit status
-See L</status>.
+See B<status>.
+
+=item exploit
+
+Used X<exploits, security>as a noun in this case, this refers to a known way
+to compromise a program to get it to do something the author didn’t intend.
+Your task is to write unexploitable programs.
=item export
-To make symbols from a L</module> available for L</import> by other modules.
+To make X<exporting, defined>symbols from a B<module> available for
+B<import> by other modules.
=item expression
-Anything you can legally say in a spot where a L</value> is required.
-Typically composed of L<literals|/literal>, L<variables|/variable>,
-L<operators|/operator>, L<functions|/function>, and L</subroutine>
-calls, not necessarily in that order.
+Anything X<expressions, defined>X<expressions>you can legally say in a spot
+where a B<value> is required. Typically composed of B<literals>,
+B<variables>, B<operators>, B<functions>, and B<subroutine> calls, not
+necessarily in that order.
=item extension
-A Perl module that also pulls in compiled C or C++ code. More
-generally, any experimental option that can be compiled into Perl,
-such as multithreading.
+A Perl module X<extensions, defined>that also pulls in B<compiled> C or C++
+code. More generally, any experimental option that can be B<compiled> into
+Perl, such as multithreading.
=back
@@ -1069,181 +1144,201 @@ such as multithreading.
=item false
-In Perl, any value that would look like C<""> or C<"0"> if evaluated
-in a string context. Since undefined values evaluate to C<"">, all
-undefined values are false (including the L</null list>), but not all
-false values are undefined.
+In Perl, any value X<false values>X<values, false>that would look like C<"">
+or C<"0"> if evaluated in a string context. Since undefined values evaluate
+to C<"">, all undefined values are false, but not all false values are
+undefined.
=item FAQ
-Frequently Asked Question (although not necessarily frequently
-answered, especially if the answer appears in the Perl FAQ shipped
-standard with Perl).
+Frequently Asked QuestionX<FAQ (Frequently Asked
+Question)>X<Frequently Asked Question (FAQ)> (although not necessarily
+frequently answered, especially if the answer appears in the Perl FAQ
+shipped standard with Perl).
=item fatal error
-An uncaught L</exception>, which causes termination of the L</process>
-after printing a message on your L</standard error> stream. Errors
-that happen inside an L<eval|perlfunc/eval> are not fatal. Instead,
-the L<eval|perlfunc/eval> terminates after placing the exception
-message in the C<$@> (C<$EVAL_ERROR>) variable. You can try to
-provoke a fatal error with the L<die|perlfunc/die> operator (known as
-throwing or raising an exception), but this may be caught by a
-dynamically enclosing L<eval|perlfunc/eval>. If not caught, the
-L<die|perlfunc/die> becomes a fatal error.
+An uncaught B<exception>, X<fatal errors>which causes termination of the
+B<process> after printing a message on your B<standard error> stream. Errors
+that happen inside an C<eval> are not fatal. Instead, the C<eval> terminates
+after placing the exception message in the C<$@> (C<$EVAL_ERROR>) variable.
+You can try to provoke a fatal error with the C<die> operator (known as
+throwing or raising an exception), but this may be caught by a dynamically
+enclosing C<eval>. If not caught, the C<die> becomes a fatal error.
+
+=item feeping creaturism
+
+A spoonerism X<feeping creaturism>X<creeping featurism>of “creeping
+featurismâ€, noting the biological urge to add just one more feature to
+a program.
=item field
-A single piece of numeric or string data that is part of a longer
-L</string>, L</record>, or L</line>. Variable-width fields are usually
-split up by L<separators|/separator> (so use L<split|perlfunc/split> to
-extract the fields), while fixed-width fields are usually at fixed
-positions (so use L<unpack|perlfunc/unpack>). L<Instance
-variables|/instance variable> are also known as fields.
+A single X<fields (term)>piece of numeric or string data that is part of a
+longer B<string>, B<record>, or B<line>. Variable-width fields are usually
+split up by B<separators> (so use C<split> to extract the fields), while
+fixed-width fields are usually at fixed positions (so use C<unpack>).
+B<Instance variables> are also known as “fieldsâ€.
=item FIFO
-First In, First Out. See also L</LIFO>. Also, a nickname for a
-L</named pipe>.
+First In, First Out.X<First In, First Out (FIFO)>X<FIFO (First In, First
+Out)> See also B<LIFO>. Also a nickname for a B<named pipe>.
=item file
-A named collection of data, usually stored on disk in a L</directory>
-in a L</filesystem>. Roughly like a document, if you're into office
-metaphors. In modern filesystems, you can actually give a file more
-than one name. Some files have special properties, like directories
-and devices.
+A named X<files, defined>collection of data, usually stored on disk in a
+B<directory> in a B<filesystem>. Roughly like a document, if you’re into
+office metaphors. In modern filesystems, you can actually give a file more
+than one name. Some files have special properties, like directories and
+devices.
=item file descriptor
-The little number the L</operating system> uses to keep track of which
-opened L</file> you're talking about. Perl hides the file descriptor
-inside a L</standard IE<sol>O> stream and then attaches the stream to
-a L</filehandle>.
-
-=item file test operator
-
-A built-in unary operator that you use to determine whether something
-is L</true> about a file, such as C<-o $filename> to test whether
-you're the owner of the file.
+The little X<file descriptors>X<descriptors, file>number the B<operating
+system> uses to keep track of which opened B<file> you’re talking about.
+Perl hides the file descriptor inside a B<standard I/O> stream and then
+attaches the stream to a B<filehandle>.
=item fileglob
-A "wildcard" match on L<filenames|/filename>. See the
-L<glob|perlfunc/glob> function.
+A “wildcard†X<fileglobs>match on B<filenames>. See the C<glob> function.
=item filehandle
-An identifier (not necessarily related to the real name of a file)
-that represents a particular instance of opening a file until you
-close it. If you're going to open and close several different files
-in succession, it's fine to open each of them with the same
-filehandle, so you don't have to write out separate code to process
-each file.
+An identifier X<filehandles, about>(not necessarily related to the real
+name of a file) that represents a particular instance of opening a file,
+until you close it. If you’re going to open and close several different
+files in succession, it’s fine to open each of them with the same
+filehandle, so you don’t have to write out separate code to process each
+file.
=item filename
-One name for a file. This name is listed in a L</directory>, and you
-can use it in an L<open|perlfunc/open> to tell the L</operating
-system> exactly which file you want to open, and associate the file
-with a L</filehandle> which will carry the subsequent identity of that
-file in your program, until you close it.
+One name for a X<filenames, about>file. This name is listed in a
+B<directory>. You can use it in an C<open> to tell the B<operating system>
+exactly which file you want to open, and associate the file with a
+B<filehandle>, which will carry the subsequent identity of that file in
+your program, until you close it.
=item filesystem
-A set of L<directories|/directory> and L<files|/file> residing on a
-partition of the disk. Sometimes known as a "partition". You can
-change the file's name or even move a file around from directory to
-directory within a filesystem without actually moving the file itself,
-at least under Unix.
+A set X<filesystems, defined>of B<directories> and B<files> residing on a
+partition of the disk. Sometimes known as a “partitionâ€. You can change the
+file’s name or even move a file around from directory to directory within a
+filesystem without actually moving the file itself, at least under Unix.
+
+=item file test operator
+
+A built-in X<file test operators, about>unary operator that you use to
+determine whether something is B<true> about a file, such as C<–o
+$filename> to test whether you’re the owner of the file.
=item filter
-A program designed to take a L</stream> of input and transform it into
-a stream of output.
+A X<filters, defined>program designed to take a B<stream> of input and
+transform it into a stream of output.
+
+=item first-come
+
+The X<first–come permissions>X<permissions, first–come>first B<PAUSE>
+author to upload a B<namespace> automatically becomes the B<primary
+maintainer> for that namespace. The “first come†permissions distinguish a
+B<primary maintainer> who was assigned that role from one who received it
+automatically.
=item flag
-We tend to avoid this term because it means so many things. It may
-mean a command-line L</switch> that takes no argument
-itself (such as Perl's B<-n> and B<-p>
-flags) or, less frequently, a single-bit indicator (such as the
-C<O_CREAT> and C<O_EXCL> flags used in
-L<sysopen|perlfunc/sysopen>).
+We X<flags (term)>tend to avoid this term because it means so many things.
+It may mean a command-line B<switch> that takes no argument itself (such as
+Perl’s C<–n> and C<–p> flags) or, less frequently, a single-bit indicator
+(such as the C<O_CREAT> and C<O_EXCL> flags used in C<sysopen>). Sometimes
+informally used to refer to certain regex modifiers.
=item floating point
-A method of storing numbers in "scientific notation", such that the
-precision of the number is independent of its magnitude (the decimal
-point "floats"). Perl does its numeric work with floating-point
-numbers (sometimes called "floats"), when it can't get away with
-using L<integers|/integer>. Floating-point numbers are mere
+A X<floating point methods>X<methods, floating point>method of storing
+numbers in “scientific notationâ€, such that the precision of the number is
+independent of its magnitude (the decimal point “floatsâ€). Perl does its
+numeric work with floating-point numbers (sometimes called “floatsâ€) when
+it can’t get away with using B<integers>. Floating-point numbers are mere
approximations of real numbers.
=item flush
-The act of emptying a L</buffer>, often before it's full.
+The act of X<flushing buffers>X<buffers, flushing>emptying a B<buffer>,
+often before it’s full.
=item FMTEYEWTK
-Far More Than Everything You Ever Wanted To Know. An exhaustive
-treatise on one narrow topic, something of a super-L</FAQ>. See Tom
-for far more.
+Far More Than Everything You Ever Wanted To KnowX<FMTEYEWTK acronym>. An
+exhaustive treatise on one narrow topic, something of a super-B<FAQ>. See
+Tom for far more.
+
+=item foldcase
+
+The casemap X<foldcase (term)>used in Unicode when comparing or matching
+without regard to case. Comparing lower-, title-, or uppercase are all
+unreliable due to Unicode’s complex, one-to-many case mappings. Foldcase is
+a B<lowercase> variant (using a partially decomposed B<normalization> form
+for certain codepoints) created specifically to resolve this.
=item fork
-To create a child L</process> identical to the parent process at its
-moment of conception, at least until it gets ideas of its own. A
-thread with protected memory.
+To create a X<forking processes>X<processes, forking>child B<process>
+identical to the parent process at its moment of conception, at least until
+it gets ideas of its own. A thread with protected memory.
=item formal arguments
-The generic names by which a L</subroutine> knows its
-L<arguments|/argument>. In many languages, formal arguments are
-always given individual names, but in Perl, the formal arguments are
-just the elements of an array. The formal arguments to a Perl program
-are C<$ARGV[0]>, C<$ARGV[1]>, and so on. Similarly, the formal
-arguments to a Perl subroutine are C<$_[0]>, C<$_[1]>, and so on. You
-may give the arguments individual names by assigning the values to a
-L<my|perlfunc/my> list. See also L</actual arguments>.
+The X<formal arguments>X<arguments, formal>generic names by which a
+B<subroutine> knows its B<arguments>. In many languages, formal arguments
+are always given individual names; in Perl, the formal arguments are just
+the elements of an array. The formal arguments to a Perl program are
+C<$ARGV[0]>, C<$ARGV[1]>, and so on. Similarly, the formal arguments to a
+Perl subroutine are C<$_[0]>, C<$_[1]>, and so on. You may give the
+arguments individual names by assigning the values to a C<my> list. See
+also B<actual arguments>.
=item format
-A specification of how many spaces and digits and things to put
-somewhere so that whatever you're printing comes out nice and pretty.
+A X<formats, defined>specification of how many spaces and digits and things
+to put somewhere so that whatever you’re printing comes out nice and
+pretty.
=item freely available
-Means you don't have to pay money to get it, but the copyright on it
-may still belong to someone else (like Larry).
+Means X<freely available (term)>you don’t have to pay money to get it, but
+the copyright on it may still belong to someone else (like Larry).
=item freely redistributable
-Means you're not in legal trouble if you give a bootleg copy of it to
-your friends and we find out about it. In fact, we'd rather you gave
-a copy to all your friends.
+Means X<freely redistributable (term)>you’re not in legal trouble if you
+give a bootleg copy of it to your friends and we find out about it. In
+fact, we’d rather you gave a copy to all your friends.
=item freeware
-Historically, any software that you give away, particularly if you
-make the source code available as well. Now often called C<open
-source software>. Recently there has been a trend to use the term in
-contradistinction to L</open source software>, to refer only to free
-software released under the Free Software Foundation's GPL (General
-Public License), but this is difficult to justify etymologically.
+Historically, X<freeware (term)>any software that you give away,
+particularly if you make the source code available as well. Now often
+called B<open source software>. Recently there has been a trend to use the
+term in contradistinction to B<open source software>, to refer only to free
+software released under the X<Free Software Foundation>Free Software
+Foundation’s GPL (General Public License), but this is difficult to justify
+etymologically.
=item function
-Mathematically, a mapping of each of a set of input values to a
-particular output value. In computers, refers to a L</subroutine> or
-L</operator> that returns a L</value>. It may or may not have input
-values (called L<arguments|/argument>).
+Mathematically, X<functions, about>a mapping of each of a set of input
+values to a particular output value. In computers, refers to a
+B<subroutine> or B<operator> that returns a B<value>. It may or may not
+have input values (called B<arguments>).
=item funny character
-Someone like Larry, or one of his peculiar friends. Also refers to
-the strange prefixes that Perl requires as noun markers on its
-variables.
+Someone X<funny characters>X<characters, funny>like Larry, or one of his
+peculiar friends. Also refers to the strange prefixes that Perl requires as
+noun markers on its variables.
=back
@@ -1253,76 +1348,88 @@ variables.
=item garbage collection
-A misnamed feature--it should be called, "expecting your mother to
-pick up after you". Strictly speaking, Perl doesn't do this, but it
-relies on a reference-counting mechanism to keep things tidy.
-However, we rarely speak strictly and will often refer to the
-reference-counting scheme as a form of garbage collection. (If it's
-any comfort, when your interpreter exits, a "real" garbage collector
-runs to make sure everything is cleaned up if you've been messy with
-circular references and such.)
+A misnamed feature—X<garbage collection, defined>it should be called,
+“expecting your mother to pick up after youâ€. Strictly speaking, Perl
+doesn’t do this, but it relies on a reference-counting mechanism to keep
+things tidy. However, we rarely speak strictly and will often refer to the
+reference-counting scheme as a form of garbage collection. (If it’s any
+comfort, when your interpreter exits, a “real†garbage collector runs to
+make sure everything is cleaned up if you’ve been messy with circular
+references and such.)
=item GID
-Group ID--in Unix, the numeric group ID that the L</operating system>
-uses to identify you and members of your L</group>.
+Group ID—in Unix, X<GID (Group ID)>X<Group ID (GID)>the numeric group ID
+that the B<operating system> uses to identify you and members of your
+B<group>.
=item glob
-Strictly, the shell's C<*> character, which will match a "glob" of
-characters when you're trying to generate a list of filenames.
-Loosely, the act of using globs and similar symbols to do pattern
-matching. See also L</fileglob> and L</typeglob>.
+Strictly, the X<glob (* character)>shell’s C<*> character, which will match
+a “glob†of characters when you’re trying to generate a list of filenames.
+Loosely, the act of using globs and similar symbols to do pattern matching.
+See also B<fileglob> and B<typeglob>.
=item global
-Something you can see from anywhere, usually used of
-L<variables|/variable> and L<subroutines|/subroutine> that are visible
-everywhere in your program. In Perl, only certain special variables
-are truly global--most variables (and all subroutines) exist only in
-the current L</package>. Global variables can be declared with
-L<our|perlfunc/our>. See L<perlfunc/our>.
+Something X<global (term)>you can see from anywhere, usually used of
+B<variables> and B<subroutines> that are visible everywhere in your
+program. In Perl, only certain special variables are truly global—most
+variables (and all subroutines) exist only in the current B<package>.
+Global variables can be declared with C<our>. See “Global Declarations†in
+Camel chapter 4, “Statements and Declarationsâ€.
=item global destruction
-The L</garbage collection> of globals (and the running of any
-associated object destructors) that takes place when a Perl
-L</interpreter> is being shut down. Global destruction should not be
+The B<garbage X<global destruction>collection> of globals (and the running
+of any associated object destructors) that takes place when a Perl
+B<interpreter> is being shut down. Global destruction should not be
confused with the Apocalypse, except perhaps when it should.
=item glue language
-A language such as Perl that is good at hooking things together that
-weren't intended to be hooked together.
+A language X<glue language>such as Perl that is good at hooking things
+together that weren’t intended to be hooked together.
=item granularity
-The size of the pieces you're dealing with, mentally speaking.
+The size of the X<granularity>pieces you’re dealing with, mentally
+speaking.
+
+=item grapheme
+
+A graphene is X<graphemes, defined>an allotrope of carbon arranged in a
+hexagonal crystal lattice one atom thick. A B<grapheme>, or more fully, a
+I<grapheme cluster string> is a single user-visible B<character>, which may
+in turn be several characters (B<codepoints>) long. For example, a carriage
+return plus a line feed is a single grapheme but two characters, while a
+“ȫ†is a single grapheme but one, two, or even three characters, depending
+on B<normalization>.
=item greedy
-A L</subpattern> whose L</quantifier> wants to match as many things as
-possible.
+A B<subpattern> X<greedy subpatterns>X<subpatterns, greedy>whose
+B<quantifier> wants to match as many things as possible.
=item grep
-Originally from the old Unix editor command for "Globally search for a
-Regular Expression and Print it", now used in the general sense of any
-kind of search, especially text searches. Perl has a built-in
-L<grep|perlfunc/grep> function that searches a list for elements
-matching any given criterion, whereas the I<grep>(1) program searches
-for lines matching a L</regular expression> in one or more files.
+Originally X<grep function>from the old Unix editor command for “Globally
+search for a Regular Expression and Print itâ€, now used in the general
+sense of any kind of search, especially text searches. Perl has a built-in
+C<grep> function that searches a list for elements matching any given
+criterion, whereas the B<grep>(1) program searches for lines matching a
+B<regular expression> in one or more files.
=item group
-A set of users of which you are a member. In some operating systems
-(like Unix), you can give certain file access permissions to other
-members of your group.
+A set of users X<groups, defined>of which you are a member. In some
+operating systems (like Unix), you can give certain file access permissions
+to other members of your group.
=item GV
-An internal "glob value" typedef, holding a L</typeglob>. The L</GV>
-type is a subclass of L</SV>.
+An internal “glob value†X<GV (glob value)>X<glob value (GV)>typedef,
+holding a B<typeglob>. The C<GV> type is a subclass of B<SV>.
=back
@@ -1332,89 +1439,90 @@ type is a subclass of L</SV>.
=item hacker
-Someone who is brilliantly persistent in solving technical problems,
-whether these involve golfing, fighting orcs, or programming. Hacker
-is a neutral term, morally speaking. Good hackers are not to be
-confused with evil L<crackers|/cracker> or clueless L<script
-kiddies|/script kiddie>. If you confuse them, we will presume that
-you are either evil or clueless.
+Someone X<hackers>who is brilliantly persistent in solving technical
+problems, whether these involve golfing, fighting orcs, or programming.
+Hacker is a neutral term, morally speaking. Good hackers are not to be
+confused with evil B<crackers> or clueless B<script kiddies>. If you
+confuse them, we will presume that you are either evil or clueless.
=item handler
-A L</subroutine> or L</method> that is called by Perl when your
-program needs to respond to some internal event, such as a L</signal>,
-or an encounter with an operator subject to L</operator overloading>.
-See also L</callback>.
+A B<subroutine> X<handlers, defined>or B<method> that Perl calls when your
+program needs to respond to some internal event, such as a B<signal>, or an
+encounter with an operator subject to B<operator overloading>. See also
+B<callback>.
=item hard reference
-A L</scalar> L</value> containing the actual address of a
-L</referent>, such that the referent's L</reference> count accounts
-for it. (Some hard references are held internally, such as the
-implicit reference from one of a L</typeglob>'s variable slots to its
-corresponding referent.) A hard reference is different from a
-L</symbolic reference>.
+A B<scalar> B<value> X<hard references, about>X<references, hard>containing
+the actual address of a B<referent>, such that the referent’s B<reference>
+count accounts for it. (Some hard references are held internally, such as
+the implicit reference from one of a B<typeglob>’s variable slots to its
+corresponding referent.) A hard reference is different from a B<symbolic
+reference>.
=item hash
-An unordered association of L</key>/L</value> pairs, stored such that
-you can easily use a string L</key> to look up its associated data
-L</value>. This glossary is like a hash, where the word to be defined
-is the key, and the definition is the value. A hash is also sometimes
-septisyllabically called an "associative array", which is a pretty
-good reason for simply calling it a "hash" instead. A hash can optionally
-be L<restricted|/restricted hash> to a fixed set of keys.
+An unordered X<hashes, about>association of B<key>/B<value> X<key/value
+pairs, about>pairs, stored such that you can easily use a string B<key> to
+look up its associated data B<value>. This glossary is like a hash, where
+the word to be defined is the key and the definition is the value. A hash
+is also sometimes septisyllabically called an “associative arrayâ€, which is
+a pretty good reason for simply calling it a “hash†instead.
=item hash table
-A data structure used internally by Perl for implementing associative
-arrays (hashes) efficiently. See also L</bucket>.
+A data X<hash tables>structure used internally by Perl for implementing
+associative arrays (hashes) efficiently. See also B<bucket>.
=item header file
-A file containing certain required definitions that you must include
-"ahead" of the rest of your program to do certain obscure operations.
-A C header file has a I<.h> extension. Perl doesn't really have
-header files, though historically Perl has sometimes used translated
-I<.h> files with a I<.ph> extension. See L<perlfunc/require>.
-(Header files have been superseded by the L</module> mechanism.)
+A file X<header files>X<files, header>containing certain required
+definitions that you must include “ahead†of the rest of your program to do
+certain obscure operations. A C header file has a I<.h> extension. Perl
+doesn’t really have header files, though historically Perl has sometimes
+used translated I<.h> files with a I<.ph> extension. See C<require> in
+Camel chapter 27, “Functionsâ€. (Header files have been superseded by the
+B<module> mechanism.)
=item here document
-So called because of a similar construct in L<shells|/shell> that
-pretends that the L<lines|/line> following the L</command> are a
-separate L</file> to be fed to the command, up to some terminating
-string. In Perl, however, it's just a fancy form of quoting.
+So X<here documents>called because of a similar construct in B<shells> that
+pretends that the B<lines> following the B<command> are a separate B<file>
+to be fed to the command, up to some terminating string. In Perl, however,
+it’s just a fancy form of quoting.
=item hexadecimal
-A number in base 16, "hex" for short. The digits for 10 through 16
-are customarily represented by the letters C<a> through C<f>.
-Hexadecimal constants in Perl start with C<0x>. See also
-L<perlfunc/hex>.
+A X<hexadecimals>number in base 16, “hex†for short. The digits for 10
+through 15 are customarily represented by the letters C<a> through C<f>.
+Hexadecimal constants in Perl start with C<0x>. See also the C<hex>
+function in Camel chapter 27, “Functionsâ€.
=item home directory
-The directory you are put into when you log in. On a Unix system, the
-name is often placed into C<$ENV{HOME}> or C<$ENV{LOGDIR}> by
-I<login>, but you can also find it with C<(getpwuid($E<lt>))[7]>.
-(Some platforms do not have a concept of a home directory.)
+The X<home directory>X<directories, home>directory you are put into when
+you log in. On a Unix system, the name is often placed into C<$ENV{HOME}>
+or C<$ENV{LOGDIR}> by I<login>, but you can also find it with
+C<(get>C<pwuid($E<lt>))[7]>. (Some platforms do not have a concept of a
+home directory.)
=item host
-The computer on which a program or other data resides.
+The computer X<host computers>on which a program or other data resides.
=item hubris
-Excessive pride, the sort of thing Zeus zaps you for. Also the
-quality that makes you write (and maintain) programs that other people
-won't want to say bad things about. Hence, the third great virtue of
-a programmer. See also L</laziness> and L</impatience>.
+Excessive pride, X<hubris quality>the sort of thing for which Zeus zaps
+you. Also the quality that makes you write (and maintain) programs that
+other people won’t want to say bad things about. Hence, the third great
+virtue of a programmer. See also B<laziness> and B<impatience>.
=item HV
-Short for a "hash value" typedef, which holds Perl's internal
-representation of a hash. The L</HV> type is a subclass of L</SV>.
+Short for a “hash value†X<HV (hash value)>X<hash value (HV)>typedef, which
+holds Perl’s internal representation of a hash. The C<HV> type is a
+subclass of B<SV>.
=back
@@ -1424,191 +1532,219 @@ representation of a hash. The L</HV> type is a subclass of L</SV>.
=item identifier
-A legally formed name for most anything in which a computer program
-might be interested. Many languages (including Perl) allow
-identifiers that start with a letter and contain letters and digits.
-Perl also counts the underscore character as a valid letter. (Perl
-also has more complicated names, such as L</qualified> names.)
+A legally X<identifiers, defined>formed name for most anything in which a
+computer program might be interested. Many languages (including Perl) allow
+identifiers to start with an alphabetic character, and then contain
+alphabetics and digits. Perl also allows connector punctuation like the
+underscore character wherever it allows alphabetics. (Perl also has more
+complicated names, like B<qualified> names.)
=item impatience
-The anger you feel when the computer is being lazy. This makes you
-write programs that don't just react to your needs, but actually
-anticipate them. Or at least that pretend to. Hence, the second
-great virtue of a programmer. See also L</laziness> and L</hubris>.
+The anger X<impatience quality>you feel when the computer is being lazy.
+This makes you write programs that don’t just react to your needs, but
+actually anticipate them. Or at least that pretend to. Hence, the second
+great virtue of a programmer. See also B<laziness> and B<hubris>.
=item implementation
-How a piece of code actually goes about doing its job. Users of the
-code should not count on implementation details staying the same
-unless they are part of the published L</interface>.
+How a X<implementation (term)>piece of code actually goes about doing its
+job. Users of the code should not count on implementation details staying
+the same unless they are part of the published B<interface>.
=item import
-To gain access to symbols that are exported from another module. See
-L<perlfunc/use>.
+To gain X<import (term)>access to symbols that are exported from another
+module. See C<use> in Camel chapter 27, “Functionsâ€.
=item increment
-To increase the value of something by 1 (or by some other number, if
-so specified).
+To increase the X<incrementing values>X<values, incrementing>value of
+something by 1 (or by some other number, if so specified).
=item indexing
-In olden days, the act of looking up a L</key> in an actual index
-(such as a phone book), but now merely the act of using any kind of
-key or position to find the corresponding L</value>, even if no index
-is involved. Things have degenerated to the point that Perl's
-L<index|perlfunc/index> function merely locates the position (index)
-of one string in another.
+In olden days, X<indexing (term)>the act of looking up a B<key> in an
+actual index (such as a phone book). But now it's merely the act of using
+any kind of key or position to find the corresponding B<value>, even if no
+index is involved. Things have degenerated to the point that Perl’s
+C<index> function merely locates the position (index) of one string in
+another.
=item indirect filehandle
-An L</expression> that evaluates to something that can be used as a
-L</filehandle>: a L</string> (filehandle name), a L</typeglob>, a
-typeglob L</reference>, or a low-level L</IO> object.
+An B<expression> X<indirect filehandles>X<filehandles, indirect>that
+evaluates to something that can be used as a B<filehandle>: a B<string>
+(filehandle name), a B<typeglob>, a typeglob B<reference>, or a low-level
+B<IO> object.
-=item indirect object
+=item indirection
+
+If something in a X<indirection (term)>program isn’t the value you’re
+looking for but indicates where the value is, that’s indirection. This can
+be done with either B<symbolic references> or B<hard>.
-In English grammar, a short noun phrase between a verb and its direct
-object indicating the beneficiary or recipient of the action. In
-Perl, C<print STDOUT "$foo\n";> can be understood as "verb
-indirect-object object" where L</STDOUT> is the recipient of the
-L<print|perlfunc/print> action, and C<"$foo"> is the object being
-printed. Similarly, when invoking a L</method>, you might place the
-invocant between the method and its arguments:
+=item indirect object
- $gollum = new Pathetic::Creature "Smeagol";
- give $gollum "Fisssssh!";
- give $gollum "Precious!";
+In English grammar, X<indirect objects, defined>X<objects, indirect>a short
+noun phrase between a verb and its direct object indicating the beneficiary
+or recipient of the action. In Perl, C<print STDOUT "$foo\n";> can be
+understood as “verb indirect-object objectâ€, where C<STDOUT> is the
+recipient of the C<print> action, and C<"$foo"> is the object being
+printed. Similarly, when invoking a B<method>, you might place the
+invocant in the dative slot between the method and its arguments:
-In modern Perl, calling methods this way is often considered bad practice and
-to be avoided.
+ $gollum = new Pathetic::Creature "Sméagol";
+ give $gollum "Fisssssh!";
+ give $gollum "Precious!";
=item indirect object slot
-The syntactic position falling between a method call and its arguments
-when using the indirect object invocation syntax. (The slot is
-distinguished by the absence of a comma between it and the next
-argument.) L</STDERR> is in the indirect object slot here:
-
- print STDERR "Awake! Awake! Fear, Fire,
- Foes! Awake!\n";
+The syntactic X<indirect object slot>position falling between a method call
+and its arguments when using the indirect object invocation syntax. (The
+slot is distinguished by the absence of a comma between it and the next
+argument.) C<STDERR> is in the indirect object slot here:
-=item indirection
-
-If something in a program isn't the value you're looking for but
-indicates where the value is, that's indirection. This can be done
-with either L<symbolic references|/symbolic reference> or L<hard
-references|/hard reference>.
+ print STDERR "Awake! Awake! Fear, Fire, Foes! Awake!\n";
=item infix
-An L</operator> that comes in between its L<operands|/operand>, such
-as multiplication in C<24 * 7>.
+An B<operator> that X<infix operators>comes in between its B<operands>,
+such as multiplication in C<24 * 7>.
=item inheritance
-What you get from your ancestors, genetically or otherwise. If you
-happen to be a L</class>, your ancestors are called L<base
-classes|/base class> and your descendants are called L<derived
-classes|/derived class>. See L</single inheritance> and L</multiple
-inheritance>.
+What you get from your X<inheritance, defined>ancestors, genetically or
+otherwise. If you happen to be a B<class>, your ancestors are called B<base
+classes> and your descendants are called B<derived classes>. See B<single
+inheritance> and B<multiple inheritance>.
=item instance
-Short for "an instance of a class", meaning an L</object> of that L</class>.
+Short for “an instance of a classâ€, X<instances (term)>meaning an B<object>
+of that B<class>.
+
+=item instance data
+
+SeeX<instance data> B<instance variable>.
+
+=item instance method
+
+A B<method> of X<instance methods>X<methods, instance>an B<object>, as
+opposed to a B<class method>.
+
+A B<method> whose B<invocant> is an B<object>, not a B<package> name. Every
+object of a class shares all the methods of that class, so an instance
+method applies to all instances of the class, rather than applying to a
+particular instance. Also see B<class method>.
=item instance variable
-An L</attribute> of an L</object>; data stored with the particular
-object rather than with the class as a whole.
+An B<attribute> of an B<object>; X<instance variables, defined>X<variables,
+instance>data stored with the particular object rather than with the class
+as a whole.
=item integer
-A number with no fractional (decimal) part. A counting number, like
-1, 2, 3, and so on, but including 0 and the negatives.
+A number X<integers (term)>with no fractional (decimal) part. A counting
+number, like 1, 2, 3, and so on, but including 0 and the negatives.
=item interface
-The services a piece of code promises to provide forever, in contrast to
-its L</implementation>, which it should feel free to change whenever it
-likes.
+The services X<interfaces (term)>a piece of code promises to provide
+forever, in contrast to its B<implementation>, which it should feel free to
+change whenever it likes.
=item interpolation
-The insertion of a scalar or list value somewhere in the middle of
-another value, such that it appears to have been there all along. In
-Perl, variable interpolation happens in double-quoted strings and
+The insertion of X<interpolation, defined>a scalar or list value somewhere
+in the middle of another value, such that it appears to have been there all
+along. In Perl, variable interpolation happens in double-quoted strings and
patterns, and list interpolation occurs when constructing the list of
values to pass to a list operator or other such construct that takes a
-L</LIST>.
+I<C<LIST>>.
=item interpreter
-Strictly speaking, a program that reads a second program and does what
-the second program says directly without turning the program into a
-different form first, which is what L<compilers|/compiler> do. Perl
-is not an interpreter by this definition, because it contains a kind
-of compiler that takes a program and turns it into a more executable
-form (L<syntax trees|/syntax tree>) within the I<perl> process itself,
-which the Perl L</run time> system then interprets.
+Strictly speaking, X<interpreters, defined>a program that reads a second
+program and does what the second program says directly without turning the
+program into a different form first, which is what B<compilers> do. Perl is
+not an interpreter by this definition, because it contains a kind of
+compiler that takes a program and turns it into a more executable form
+(B<syntax trees>) within the I<perl> process itself, which the Perl
+B<runtime> system then interprets.
=item invocant
-The agent on whose behalf a L</method> is invoked. In a L</class>
-method, the invocant is a package name. In an L</instance> method,
+The agent on X<invocants, defined>whose behalf a B<method> is invoked. In a
+B<class> method, the invocant is a package name. In an B<instance> method,
the invocant is an object reference.
=item invocation
-The act of calling up a deity, daemon, program, method, subroutine, or
-function to get it do what you think it's supposed to do. We usually
-"call" subroutines but "invoke" methods, since it sounds cooler.
+The act of X<invocation, method>calling up a deity, daemon, program,
+method, subroutine, or function to get it to do what you think it’s
+supposed to do. We usually “call†subroutines but “invoke†methods, since
+it sounds cooler.
=item I/O
-Input from, or output to, a L</file> or L</device>.
+Input from, or X<I/O (Input/Output), defined>X<Input/Output (I/O),
+defined>output to, a B<file> or B<device>.
=item IO
-An internal I/O object. Can also mean L</indirect object>.
+An internal I/O object. Can also mean B<indirect object>.
+
+=item I/O layer
+
+One of the X<I/O layer>filters between the data and what you get as input
+or what you end up with as output.
+
+=item IPA
+
+India Pale Ale. Also the X<International Phonetic Alphabet (IPA)>X<IPA
+(International Phonetic Alphabet)>International Phonetic Alphabet, the
+standard alphabet used for phonetic notation worldwide. Draws heavily on
+Unicode, including many combining characters.
=item IP
-Internet Protocol, or Intellectual Property.
+Internet ProtocolX<Internet Protocol (IP)>X<IP (Internet Protocol)>, or
+X<IP (Intellectual Property)>X<Intellectual Property (IP)>Intellectual
+Property.
=item IPC
-Interprocess Communication.
+Interprocess X<Interprocess Communication>X<IPC (Interprocess
+Communication), about>X<communication>Communication.
=item is-a
-A relationship between two L<objects|/object> in which one object is
-considered to be a more specific version of the other, generic object:
-"A camel is a mammal." Since the generic object really only exists in
-a Platonic sense, we usually add a little abstraction to the notion of
-objects and think of the relationship as being between a generic
-L</base class> and a specific L</derived class>. Oddly enough,
-Platonic classes don't always have Platonic relationships--see
-L</inheritance>.
+A rX<is–a relationship>elationship between two B<objects> in which one
+object is considered to be a more specific version of the other, generic
+object: “A camel is a mammal.†Since the generic object really only exists
+in a Platonic sense, we usually add a little abstraction to the notion of
+objects and think of the relationship as being between a generic B<base
+class> and a specific B<derived class>. Oddly enough, Platonic classes
+don’t always have Platonic relationships—see B<inheritance>.
=item iteration
-Doing something repeatedly.
+Doing X<iteration>something repeatedly.
=item iterator
-A special programming gizmo that keeps track of where you are in
-something that you're trying to iterate over. The C<foreach> loop in
-Perl contains an iterator; so does a hash, allowing you to
-L<each|perlfunc/each> through it.
+A special X<iterators>programming gizmo that keeps track of where you are
+in something that you’re trying to iterate over. The C<foreach> loop in
+Perl contains an iterator; so does a hash, allowing you to C<each> through
+it.
=item IV
-The integer four, not to be confused with six, Tom's favorite editor.
-IV also means an internal Integer Value of the type a L</scalar> can
-hold, not to be confused with an L</NV>.
+The integer X<IV (Integer Value)>X<Integer Value (IV)>four, not to be
+confused with six, Tom’s favorite editor. IV also means an internal Integer
+Value of the type a B<scalar> can hold, not to be confused with an B<NV>.
=back
@@ -1618,10 +1754,10 @@ hold, not to be confused with an L</NV>.
=item JAPH
-"Just Another Perl Hacker," a clever but cryptic bit of Perl code that
-when executed, evaluates to that string. Often used to illustrate a
-particular Perl feature, and something of an ongoing Obfuscated Perl
-Contest seen in Usenix signatures.
+“Just Another Perl Hackerâ€, a X<JAPH acronym>clever but cryptic bit of Perl
+code that, when executed, evaluates to that string. Often used to
+illustrate a particular Perl feature, and something of an ongoing
+Obfuscated Perl Contest seen in USENET signatures.
=back
@@ -1631,12 +1767,12 @@ Contest seen in Usenix signatures.
=item key
-The string index to a L</hash>, used to look up the L</value>
+The X<keys, defined>string index to a B<hash>, used to look up the B<value>
associated with that key.
=item keyword
-See L</reserved words>.
+See B<reserved words>.
=back
@@ -1646,205 +1782,221 @@ See L</reserved words>.
=item label
-A name you give to a L</statement> so that you can talk about that
-statement elsewhere in the program.
+A X<labels, defined>name you give to a B<statement> so that you can talk
+about that statement elsewhere in the program.
=item laziness
-The quality that makes you go to great effort to reduce overall energy
-expenditure. It makes you write labor-saving programs that other
-people will find useful, and document what you wrote so you don't have
-to answer so many questions about it. Hence, the first great virtue
-of a programmer. Also hence, this book. See also L</impatience> and
-L</hubris>.
+The X<laziness quality>quality that makes you go to great effort to reduce
+overall energy expenditure. It makes you write labor-saving programs that
+other people will find useful, and then document what you wrote so you
+don’t have to answer so many questions about it. Hence, the first great
+virtue of a programmer. Also hence, this book. See also B<impatience> and
+B<hubris>.
-=item left shift
+=item leftmost longest
-A L</bit shift> that multiplies the number by some power of 2.
+The X<leftmost longest preference>X<regular expressions, leftmost longest
+preference>preference of the B<regular expression> engine to match the
+leftmost occurrence of a B<pattern>, then given a position at which a match
+will occur, the preference for the longest match (presuming the use of a
+B<greedy> quantifier). See Camel chapter 5, “Pattern Matching†for I<much>
+more on this subject.
-=item leftmost longest
+=item left shift
-The preference of the L</regular expression> engine to match the
-leftmost occurrence of a L</pattern>, then given a position at which a
-match will occur, the preference for the longest match (presuming the
-use of a L</greedy> quantifier). See L<perlre> for I<much> more on
-this subject.
+A B<bit shift> that X<left shift (E<lt>E<lt>) bit operator>X<bit–shift
+operators, left shift>X<E<lt>E<lt> (left shift) bit operator>multiplies the
+number by some power of 2.
=item lexeme
-Fancy term for a L</token>.
+Fancy X<lexeme (token)>term for a B<token>.
=item lexer
-Fancy term for a L</tokener>.
+Fancy X<lexer (tokener)>term for a B<tokener>.
=item lexical analysis
-Fancy term for L</tokenizing>.
+Fancy X<lexical analysis>term for B<tokenizing>.
=item lexical scoping
-Looking at your I<Oxford English Dictionary> through a microscope.
-(Also known as L</static scoping>, because dictionaries don't change
-very fast.) Similarly, looking at variables stored in a private
-dictionary (namespace) for each scope, which are visible only from
-their point of declaration down to the end of the lexical scope in
-which they are declared. --Syn. L</static scoping>.
---Ant. L</dynamic scoping>.
+Looking X<lexical scopes, defined>X<scopes>at your I<Oxford English
+Dictionary> through a microscope. (Also known as B<static scoping>, because
+dictionaries don’t change very fast.) Similarly, looking at variables
+stored in a private dictionary (namespace) for each scope, which are
+visible only from their point of declaration down to the end of theX<static
+scopes>X<scopes, static> lexical scope in which they are declared. —Syn.
+B<static scoping>. —Ant. B<dynamic scoping>.
=item lexical variable
-A L</variable> subject to L</lexical scoping>, declared by
-L<my|perlfunc/my>. Often just called a "lexical". (The
-L<our|perlfunc/our> declaration declares a lexically scoped name for a
-global variable, which is not itself a lexical variable.)
+A B<variable> X<lexical variables, about>X<variables, lexical>subject to
+B<lexical scoping>, declared by C<my>. Often just called a “lexicalâ€. (The
+C<our> declaration declares a lexically scoped name for a global variable,
+which is not itself a lexical variable.)
=item library
-Generally, a collection of procedures. In ancient days, referred to a
-collection of subroutines in a I<.pl> file. In modern times, refers
-more often to the entire collection of Perl L<modules|/module> on your
-system.
+Generally, a X<libraries, defined>collection of procedures. In ancient
+days, referred to a collection of subroutines in a I<.pl> file. In modern
+times, refers more often to the entire collection of Perl B<modules> on
+your system.
=item LIFO
-Last In, First Out. See also L</FIFO>. A LIFO is usually called a
-L</stack>.
+Last In, First OutX<Last In, First Out (LIFO)>X<LIFO (Last In, First
+Out)>X<stacks, defined>. See also B<FIFO>. A LIFO is usually called a
+B<stack>.
=item line
-In Unix, a sequence of zero or more non-newline characters terminated
-with a L</newline> character. On non-Unix machines, this is emulated
-by the C library even if the underlying L</operating system> has
+In Unix, a X<line (term)>sequence of zero or more nonnewline characters
+terminated with a B<newline> character. On non-Unix machines, this is
+emulated by the C library even if the underlying B<operating system> has
different ideas.
+=item linebreak
+
+A B<grapheme> X<linebreaks>consisting of either a carriage return followed
+by a line feed or any character with the Unicode Vertical Space B<character
+property>.
+
=item line buffering
-Used by a L</standard IE<sol>O> output stream that flushes its
-L</buffer> after every L</newline>. Many standard I/O libraries
-automatically set up line buffering on output that is going to the
-terminal.
+Used by X<line buffering>X<buffering, line>a B<standard I/O> output stream that
+flushes its B<buffer> after every B<newline>. Many standard I/O libraries
+automatically set up line buffering on output that is going to the terminal.
=item line number
-The number of lines read previous to this one, plus 1. Perl keeps a
-separate line number for each source or input file it opens. The
-current source file's line number is represented by C<__LINE__>. The
-current input line number (for the file that was most recently read
-via C<< E<lt>FHE<gt> >>) is represented by the C<$.>
-(C<$INPUT_LINE_NUMBER>) variable. Many error messages report both
-values, if available.
+The number X<line number>of lines read previous to this one, plus 1. Perl
+keeps a separate line number for each source or input file it opens. The
+current source file’s line number is represented by C<__LINE__>. The
+current input line number (for the file that was most recently read via
+C<E<lt>FHE<gt>>) is represented by the C<$.> (C<$INPUT_LINE_NUMBER>)
+variable. Many error messages report both values, if available.
=item link
-Used as a noun, a name in a L</directory>, representing a L</file>. A
-given file can have multiple links to it. It's like having the same
-phone number listed in the phone directory under different names. As
-a verb, to resolve a partially compiled file's unresolved symbols into
-a (nearly) executable image. Linking can generally be static or
-dynamic, which has nothing to do with static or dynamic scoping.
+Used as a X<links, defined>noun, a name in a B<directory> that represents a
+B<file>. A given file can have multiple links to it. It’s like having the
+same phone number listed in the phone directory under different names. As a
+verb, to resolve a partially B<compiled> file’s unresolved symbols into a
+(nearly) executable image. Linking can generally be static or dynamic,
+which has nothing to do with static or dynamic scoping.
=item LIST
-A syntactic construct representing a comma-separated list of
-expressions, evaluated to produce a L</list value>. Each
-L</expression> in a L</LIST> is evaluated in L</list context> and
+A syntactic X<LIST construct>X<constructs, LIST>construct representing a
+comma- separated list of expressions, evaluated to produce a B<list value>.
+Each B<expression> in a I<C<LIST>> is evaluated in B<list context> and
interpolated into the list value.
=item list
-An ordered set of scalar values.
+An ordered X<lists, defined>set of scalar values.
=item list context
-The situation in which an L</expression> is expected by its
-surroundings (the code calling it) to return a list of values rather
-than a single value. Functions that want a L</LIST> of arguments tell
-those arguments that they should produce a list value. See also
-L</context>.
+The situation X<list context>X<context, list>in which an B<expression> is
+expected by its surroundings (the code calling it) to return a list of
+values rather than a single value. Functions that want a I<C<LIST>> of
+arguments tell those arguments that they should produce a list value. See
+also B<context>.
=item list operator
-An L</operator> that does something with a list of values, such as
-L<join|perlfunc/join> or L<grep|perlfunc/grep>. Usually used for
-named built-in operators (such as L<print|perlfunc/print>,
-L<unlink|perlfunc/unlink>, and L<system|perlfunc/system>) that do not
-require parentheses around their L</argument> list.
+An B<operator> that X<list operators, about>does something with a list of
+values, such as C<join> or C<grep>. Usually used for named built-in
+operators (such as C<print>, C<unlink>, and C<system>) that do not require
+parentheses around their B<argument> list.
=item list value
-An unnamed list of temporary scalar values that may be passed around
-within a program from any list-generating function to any function or
-construct that provides a L</list context>.
+An unnamed X<list values, about>X<values, list>list of temporary scalar
+values that may be passed around within a program from any list-generating
+function to any function or construct that provides a B<list context>.
=item literal
-A token in a programming language such as a number or L</string> that
-gives you an actual L</value> instead of merely representing possible
-values as a L</variable> does.
+A token X<literals, defined>in a programming language, such as a number or
+B<string>, that gives you an actual B<value> instead of merely representing
+possible values as a B<variable> does.
=item little-endian
-From Swift: someone who eats eggs little end first. Also used of
-computers that store the least significant L</byte> of a word at a
-lower byte address than the most significant byte. Often considered
-superior to big-endian machines. See also L</big-endian>.
+From Swift: X<little–endian, defined>X<endianness, little–endian>someone
+who eats eggs little end first. Also used of computers that store the least
+significant B<byte> of a word at a lower byte address than the most
+significant byte. Often considered superior to big-endian machines. See
+also B<big-endian>.
=item local
-Not meaning the same thing everywhere. A global variable in Perl can
-be localized inside a L<dynamic scope|/dynamic scoping> via the
-L<local|perlfunc/local> operator.
+Not meaning X<local operator, about>the same thing everywhere. A global
+variable in Perl can be localized inside a B<dynamic scope> via the
+C<local> operator.
=item logical operator
-Symbols representing the concepts "and", "or", "xor", and "not".
+Symbols X<logical operators, about>representing the concepts “andâ€, “orâ€,
+“xorâ€, and “notâ€.
=item lookahead
-An L</assertion> that peeks at the string to the right of the current
-match location.
+An B<assertion> that X<lookahead assertions>X<assertions (in regexes),
+lookahead>peeks at the string to the right of the current match location.
=item lookbehind
-An L</assertion> that peeks at the string to the left of the current
-match location.
+An B<assertion> X<lookbehind assertions>X<assertions (in regexes),
+lookbehind>that peeks at the string to the left of the current match
+location.
=item loop
-A construct that performs something repeatedly, like a roller coaster.
+A construct X<loop constructs and statements, about>X<constructs, loop>that
+performs something repeatedly, like a roller coaster.
=item loop control statement
-Any statement within the body of a loop that can make a loop
-prematurely stop looping or skip an L</iteration>. Generally you
-shouldn't try this on roller coasters.
+Any statement X<statements, loop control>within the body of a loop that can
+make a loop prematurely stop looping or skip an B<iteration>. Generally,
+you shouldn’t try this on roller coasters.
=item loop label
-A kind of key or name attached to a loop (or roller coaster) so that
-loop control statements can talk about which loop they want to
-control.
+A kind X<loop labels>X<labels, loop>of key or name attached to a loop (or
+roller coaster) so that loop control statements can talk about which loop
+they want to control.
+
+=item lowercase
+
+In Unicode, X<lowercase characters>X<characters, lowercase>not just
+characters with the General Category of Lowercase Letter, but any character
+with the Lowercase property, including Modifier Letters, Letter Numbers,
+some Other Symbols, and one Combining Mark.
=item lvaluable
-Able to serve as an L</lvalue>.
+Able to X<lvaluable function>X<functions, lvaluable>serve as an B<lvalue>.
=item lvalue
-Term used by language lawyers for a storage location you can assign a
-new L</value> to, such as a L</variable> or an element of an
-L</array>. The "l" is short for "left", as in the left side of an
-assignment, a typical place for lvalues. An L</lvaluable> function or
-expression is one to which a value may be assigned, as in C<pos($x) =
-10>.
+Term used by X<lvalue (term)>X<values, lvalue>language lawyers for a
+storage location you can assign a new B<value> to, such as a B<variable> or
+an element of an B<array>. The “l†is short for “leftâ€, as in the left side
+of an assignment, a typical place for lvalues. An B<lvaluable> function or
+expression is one to which a value may be assigned, as in C<pos($x) = 10>.
=item lvalue modifier
-An adjectival pseudofunction that warps the meaning of an L</lvalue>
-in some declarative fashion. Currently there are three lvalue
-modifiers: L<my|perlfunc/my>, L<our|perlfunc/our>, and
-L<local|perlfunc/local>.
+An X<lvalue modifier>X<modifiers, lvalue>adjectival pseudofunction that
+warps the meaning of an B<lvalue> in some declarative fashion. Currently
+there are three lvalue modifiers: C<my>, C<our>, and C<local>.
=back
@@ -1854,138 +2006,165 @@ L<local|perlfunc/local>.
=item magic
-Technically speaking, any extra semantics attached to a variable such
-as C<$!>, C<$0>, C<%ENV>, or C<%SIG>, or to any tied variable.
-Magical things happen when you diddle those variables.
+Technically X<magic (term)>speaking, any extra semantics attached to a
+variable such as C<$!>, C<$0>, C<%ENV>, or C<%SIG>, or to any tied
+variable. Magical things happen when you diddle those variables.
=item magical increment
-An L</increment> operator that knows how to bump up alphabetics as
-well as numbers.
+An B<increment> X<magical increment operator>operator that knows how to
+bump up ASCII alphabetics as well as numbers.
=item magical variables
-Special variables that have side effects when you access them or
-assign to them. For example, in Perl, changing elements of the
-C<%ENV> array also changes the corresponding environment variables
-that subprocesses will use. Reading the C<$!> variable gives you the
-current system error number or message.
+Special variables X<magical variables>X<variables, magical>that have side
+effects when you access them or assign to them. For example, in Perl,
+changing elements of the C<%ENV> array also changes the corresponding
+environment variables that subprocesses will use. Reading the C<$!>
+variable gives you the current system error number or message.
=item Makefile
-A file that controls the compilation of a program. Perl programs
-don't usually need a L</Makefile> because the Perl compiler has plenty
-of self-control.
+A file that X<Makefile>controls the compilation of a program. Perl programs
+don’t usually need a B<Makefile> because the Perl compiler has plenty of
+self-control.
=item man
-The Unix program that displays online documentation (manual pages) for
-you.
+The Unix X<man program (Unix)>program that displays online documentation
+(manual pages) for you.
=item manpage
-A "page" from the manuals, typically accessed via the I<man>(1)
-command. A manpage contains a SYNOPSIS, a DESCRIPTION, a list of
-BUGS, and so on, and is typically longer than a page. There are
-manpages documenting L<commands|/command>, L<syscalls|/syscall>,
-L</library> L<functions|/function>, L<devices|/device>,
-L<protocols|/protocol>, L<files|/file>, and such. In this book, we
-call any piece of standard Perl documentation (like I<perlop> or
-I<perldelta>) a manpage, no matter what format it's installed in on
-your system.
+A “page†from the X<manpages, defined>manuals, typically accessed via the
+I<man>(1) command. A manpage contains a SYNOPSIS, a DESCRIPTION, a list of
+BUGS, and so on, and is typically longer than a page. There are manpages
+documenting B<commands>, B<syscalls>, B<library> B<functions>, B<devices>,
+B<protocols>, B<files>, and such. In this book, we call any piece of
+standard Perl documentation (like L<perlop> or L<perldelta>) a manpage, no
+matter what format it’s installed in on your system.
=item matching
-See L</pattern matching>.
+SeeX<matching> B<pattern matching>.
=item member data
-See L</instance variable>.
+SeeX<member data> B<instance variable>.
=item memory
-This always means your main memory, not your disk. Clouding the issue
-is the fact that your machine may implement L</virtual> memory; that
-is, it will pretend that it has more memory than it really does, and
-it'll use disk space to hold inactive bits. This can make it seem
-like you have a little more memory than you really do, but it's not a
-substitute for real memory. The best thing that can be said about
-virtual memory is that it lets your performance degrade gradually
-rather than suddenly when you run out of real memory. But your
-program can die when you run out of virtual memory too, if you haven't
-thrashed your disk to death first.
+This X<memory, defined>always means your main memory, not your disk.
+Clouding the issue is the fact that your machine may implement
+B<virtual> memory; that is, it will pretend that it has more memory than
+it really does, and it’ll use disk space to hold inactive bits. This can
+make it seem like you have a little more memory than you really do, but
+it’s not a substitute for real memory. The best thing that can be said
+about virtual memory is that it lets your performance degrade gradually
+rather than suddenly when you run out of real memory. But your program
+can die when you run out of virtual memory, too—if you haven’t thrashed
+your disk to death first.
=item metacharacter
-A L</character> that is I<not> supposed to be treated normally. Which
-characters are to be treated specially as metacharacters varies
-greatly from context to context. Your L</shell> will have certain
-metacharacters, double-quoted Perl L<strings|/string> have other
-metacharacters, and L</regular expression> patterns have all the
-double-quote metacharacters plus some extra ones of their own.
+A B<character> that X<metacharacters, about>X<characters, regex
+metacharacters>is I<not> supposed to be treated normally. Which characters
+are to be treated specially as metacharacters varies greatly from context to
+context. Your B<shell> will have certain metacharacters, double-quoted Perl
+B<strings> have other metacharacters,X<regular expressions, metacharacters and>
+and B<regular expression> patterns have all the double-quote metacharacters plus
+some extra ones of their own.
=item metasymbol
-Something we'd call a L</metacharacter> except that it's a sequence of
-more than one character. Generally, the first character in the
-sequence must be a true metacharacter to get the other characters in
-the metasymbol to misbehave along with it.
+Something we’d call X<metasymbols, about>X<escape sequences>a
+B<metacharacter> except that it’s a sequence of more than one character.
+Generally, the first character in the sequence must be a true metacharacter
+to get the other characters in the metasymbol to misbehave along with it.
=item method
-A kind of action that an L</object> can take if you tell it to. See
-L<perlobj>.
+A kind of X<methods, defined>action that an B<object> can take if you tell
+it to. See Camel chapter 12, “Objectsâ€.
+
+=item method resolution order
+
+The path X<method resolution order (mro)>X<mro (method resolution
+order)>Perl takes through C<@INC>. By default, this is a double depth first
+search, once looking for defined methods and once for C<AUTOLOAD>. However,
+Perl lets you configure this with C<mro>.
+
+=item minicpan
+
+A CPAN X<minicpan, defined>X<CPAN (Comprehensive Perl Archive Network),
+minicpan and>mirror that includes just the latest versions for each
+distribution, probably created with C<CPAN::Mini>X<CPAN::Mini module>. See
+Camel chapter 19, “CPANâ€.
=item minimalism
-The belief that "small is beautiful." Paradoxically, if you say
-something in a small language, it turns out big, and if you say it in
-a big language, it turns out small. Go figure.
+The belief X<minimalism>that “small is beautifulâ€. Paradoxically, if you
+say something in a small language, it turns out big, and if you say it in a
+big language, it turns out small. Go figure.
=item mode
-In the context of the L<stat(2)> syscall, refers to the field holding
-the L</permission bits> and the type of the L</file>.
+In the X<mode>context of the I<stat>(2) syscall, refers to the field
+holding the B<permission bits> and the type of the B<file>.
=item modifier
-See L</statement modifier>, L</regular expression modifier>, and
-L</lvalue modifier>, not necessarily in that order.
+SeeX<modifiers, defined> B<statement modifier>, B<regular expression>, and
+B<lvalue>, not necessarily in that order.
=item module
-A L</file> that defines a L</package> of (almost) the same name, which
-can either L</export> symbols or function as an L</object> class. (A
-module's main I<.pm> file may also load in other files in support of
-the module.) See the L<use|perlfunc/use> built-in.
+A B<file> that X<modules, defined>defines a B<package> of (almost) the same
+name, which can either B<export> symbols or function as an B<object> class.
+(A module’s main I<.pm> file may also load in other files in support of the
+module.) See the C<use> built-in.
=item modulus
-An integer divisor when you're interested in the remainder instead of
-the quotient.
+An integer X<modulus (%) operator>X<% (modulus) operator>divisor when
+you’re interested in the remainder instead of the quotient.
+
+=item mojibake
+
+When you X<mojibake>speak one language and the computer thinks you’re
+speaking another. You’ll see odd translations when you send UTF‑8, for
+instance, but the computer thinks you sent Latin-1, showing all sorts of
+weird characters instead. The term is written 「文字化ã‘ã€in Japanese and
+means “character rotâ€, an apt description. Pronounced [C<modÊ‘ibake>] in
+standard B<IPA> phonetics, or approximately “moh-jee-bah-kehâ€.
=item monger
-Short for Perl Monger, a purveyor of Perl.
+Short for X<mongers, Perl>X<Perl mongers>one member of B<Perl mongers>, a
+purveyor of Perl.
=item mortal
-A temporary value scheduled to die when the current statement
-finishes.
+A temporary X<mortal value>X<values, mortal>value scheduled to die when the
+current statement finishes.
+
+=item mro
+
+See B<method resolution order>.
=item multidimensional array
-An array with multiple subscripts for finding a single element. Perl
-implements these using L<references|/reference>--see L<perllol> and
-L<perldsc>.
+An array X<multidimensional arrays>X<arrays, multidimensional>with multiple
+subscripts for finding a single element. Perl implements these using
+B<references>—see Camel chapter 9, “Data Structuresâ€.
=item multiple inheritance
-The features you got from your mother and father, mixed together
-unpredictably. (See also L</inheritance>, and L</single
-inheritance>.) In computer languages (including Perl), the notion
-that a given class may have multiple direct ancestors or L<base
-classes|/base class>.
+The features X<multiple inheritance>X<inheritance, multiple>you got from
+your mother and father, mixed together unpredictably. (See also
+B<inheritance> and B<single inheritance>.) In computer languages (including
+Perl), it is the notion that a given class may have multiple direct
+ancestors or B<base classes>.
=back
@@ -1995,66 +2174,90 @@ classes|/base class>.
=item named pipe
-A L</pipe> with a name embedded in the L</filesystem> so that it can
-be accessed by two unrelated L<processes|/process>.
+A B<pipe> X<named pipes>X<pipes, names>with a name embedded in the
+B<filesystem> so that it can be accessed by two unrelated B<processes>.
=item namespace
-A domain of names. You needn't worry about whether the names in one
-such domain have been used in another. See L</package>.
+A domain of X<namespaces, about>names. You needn’t worry about whether the
+names in one such domain have been used in another. See B<package>.
+
+=item NaN
+
+Not a number. X<NaN (not a number)>X<not a number (NaN)>The value Perl uses
+for certain invalid or inexpressible floating-point operations.
=item network address
-The most important attribute of a socket, like your telephone's
-telephone number. Typically an IP address. See also L</port>.
+The most X<network address>important attribute of a socket, like your
+telephone’s telephone number. Typically an IP address. See also B<port>.
=item newline
-A single character that represents the end of a line, with the ASCII
-value of 012 octal under Unix (but 015 on a Mac), and represented by
-C<\n> in Perl strings. For Windows machines writing text files, and
-for certain physical devices like terminals, the single newline gets
-automatically translated by your C library into a line feed and a
-carriage return, but normally, no translation is done.
+A single X<newline character>X<characters, newline>character that
+represents the end of a line, with the ASCII value of 012 octal under Unix
+(but 015 on a Mac), and represented by C<\n> in Perl strings. For Windows
+machines writing text files, and for certain physical devices like
+terminals, the single newline gets automatically translated by your C
+library into a line feed and a carriage return, but normally, no
+translation is done.
=item NFS
-Network File System, which allows you to mount a remote filesystem as
-if it were local.
+Network File System, X<NFS (Network File System)>X<Network File System
+(NFS)>which allows you to mount a remote filesystem as if it were local.
+
+=item normalization
+
+Converting a X<normalization>text string into an alternate but equivalent
+B<canonical> (or compatible) representation that can then be compared for
+equivalence. Unicode recognizes four different normalization forms: NFD,
+NFC, NFKD, and NFKC.
=item null character
-A character with the ASCII value of zero. It's used by C to terminate
-strings, but Perl allows strings to contain a null.
+A character X<null character>X<characters, null>with the numeric value of
+zero. It’s used by C to terminate strings, but Perl allows strings to
+contain a null.
=item null list
-A valueless value represented in Perl by C<()>. It is not really a
-L</LIST>, but an expression that yields C<undef> in L</scalar context> and
-a L</list value> with zero elements in L</list context>.
+A B<list value> with X<null lists>X<lists, null>zero elements, represented
+in Perl by C<()>.
=item null string
-A L</string> containing no characters, not to be confused with a
-string containing a L</null character>, which has a positive length
-and is L</true>.
+A B<string> X<null strings>X<strings, null>containing no characters, not to
+be confused with a string containing a B<null character>, which has a
+positive length and is B<true>.
=item numeric context
-The situation in which an expression is expected by its surroundings
-(the code calling it) to return a number. See also L</context> and
-L</string context>.
+The situation X<numeric context>X<context, numeric>in which an expression
+is expected by its surroundings (the code calling it) to return a number.
+See also B<context> and B<string context>.
+
+=item numification
+
+(Sometimes spelled I<nummification> and I<nummify>.) X<numification>Perl lingo
+for implicit conversion into a number; the related verb is I<numify>.
+I<Numification> is intended to rhyme with I<mummification>, and I<numify> with
+I<mummify>. It is unrelated to English I<numen>, I<numina>, I<numinous>. We
+originally forgot the extra I<m> a long time ago, and some people got used to
+our funny spelling, and so just as with C<HTTP_REFERER>’s own missing letter,
+our weird spelling has stuck around.
=item NV
-Short for Nevada, no part of which will ever be confused with
-civilization. NV also means an internal floating-point Numeric Value
-of the type a L</scalar> can hold, not to be confused with an L</IV>.
+Short for Nevada, X<Numeric Value (NV)>X<NV (Numeric Value)>no part of
+which will ever be confused with civilization. NV also means an internal
+floating- point Numeric Value of the type a B<scalar> can hold, not to be
+confused with an B<IV>.
=item nybble
-Half a L</byte>, equivalent to one L</hexadecimal> digit, and worth
-four L<bits|/bit>.
+Half a B<byte>, X<nybble>equivalent to one B<hexadecimal> digit, and worth
+four B<bits>.
=back
@@ -2064,103 +2267,103 @@ four L<bits|/bit>.
=item object
-An L</instance> of a L</class>. Something that "knows" what
-user-defined type (class) it is, and what it can do because of what
-class it is. Your program can request an object to do things, but the
-object gets to decide whether it wants to do them or not. Some
-objects are more accommodating than others.
+An B<instance> X<objects, defined>of a B<class>. Something that “knowsâ€
+what user-defined type (class) it is, and what it can do because of what
+class it is. Your program can request an object to do things, but the
+object gets to decide whether it wants to do them or not. Some objects are
+more accommodating than others.
=item octal
-A number in base 8. Only the digits 0 through 7 are allowed. Octal
-constants in Perl start with 0, as in 013. See also the
-L<oct|perlfunc/oct> function.
+A number X<octals>in base 8. Only the digits 0 through 7 are allowed. Octal
+constants in Perl start with 0, as in 013. See also the C<oct> function.
=item offset
-How many things you have to skip over when moving from the beginning
-of a string or array to a specific position within it. Thus, the
-minimum offset is zero, not one, because you don't skip anything to
-get to the first item.
+How many X<offsets in strings>X<strings, offsets in>things you have to skip
+over when moving from the beginning of a string or array to a specific
+position within it. Thus, the minimum offset is zero, not one, because you
+don’t skip anything to get to the first item.
=item one-liner
-An entire computer program crammed into one line of text.
+An entire X<one–liner programs>computer program crammed into one line of
+text.
=item open source software
-Programs for which the source code is freely available and freely
-redistributable, with no commercial strings attached. For a more
-detailed definition, see L<http://www.opensource.org/osd.html>.
+Programs X<open source software>for which the source code is freely
+available and freely redistributable, with no commercial strings attached.
+For a more detailed definition, see L<http://www.opensource.org/osd.html>.
=item operand
-An L</expression> that yields a L</value> that an L</operator>
-operates on. See also L</precedence>.
+An B<expression> X<operands (term)>that yields a B<value> that an
+B<operator> operates on. See also B<precedence>.
=item operating system
-A special program that runs on the bare machine and hides the gory
-details of managing L<processes|/process> and L<devices|/device>.
+A special X<operating systems, defined>program that runs on the bare
+machine and hides the gory details of managing B<processes> and B<devices>.
Usually used in a looser sense to indicate a particular culture of
-programming. The loose sense can be used at varying levels of
-specificity. At one extreme, you might say that all versions of Unix
-and Unix-lookalikes are the same operating system (upsetting many
-people, especially lawyers and other advocates). At the other
-extreme, you could say this particular version of this particular
-vendor's operating system is different from any other version of this
-or any other vendor's operating system. Perl is much more portable
-across operating systems than many other languages. See also
-L</architecture> and L</platform>.
+programming. The loose sense can be used at varying levels of specificity.
+At one extreme, you might say that all versions of Unix and Unix-lookalikes
+are the same operating system (upsetting many people, especially lawyers
+and other advocates). At the other extreme, you could say this particular
+version of this particular vendor’s operating system is different from any
+other version of this or any other vendor’s operating system. Perl is much
+more portable across operating systems than many other languages. See also
+B<architecture> and B<platform>.
=item operator
-A gizmo that transforms some number of input values to some number of
-output values, often built into a language with a special syntax or
-symbol. A given operator may have specific expectations about what
-L<types|/type> of data you give as its arguments
-(L<operands|/operand>) and what type of data you want back from it.
+A gizmo X<operators, about>that transforms some number of input values to
+some number of output values, often built into a language with a special
+syntax or symbol. A given operator may have specific expectations about
+what B<types> of data you give as its arguments (B<operands>) and what type
+of data you want back from it.
=item operator overloading
-A kind of L</overloading> that you can do on built-in
-L<operators|/operator> to make them work on L<objects|/object> as if
-the objects were ordinary scalar values, but with the actual semantics
-supplied by the object class. This is set up with the L<overload>
-L</pragma>.
+A kind X<operator overloading, about>X<overloading, operator>of
+B<overloading> that you can do on built-in B<operators> to make them work
+on B<objects> as if the objects were ordinary scalar values, but with the
+actual semantics supplied by the object class. This is set up with the
+overload B<pragma>—see Camel chapter 13, “Overloadingâ€.
=item options
-See either L<switches|/switch> or L</regular expression modifier>.
+See X<options>either B<switches> or B<regular expression modifiers>.
=item ordinal
-Another name for L</code point>
+An X<ordinals (term)>abstract character’s integer value. Same thing as
+B<codepoint>.
=item overloading
-Giving additional meanings to a symbol or construct. Actually, all
-languages do overloading to one extent or another, since people are
-good at figuring out things from L</context>.
+Giving X<overloading, defined>additional meanings to a symbol or construct.
+Actually, all languages do overloading to one extent or another, since
+people are good at figuring out things from B<context>.
=item overriding
-Hiding or invalidating some other definition of the same name. (Not
-to be confused with L</overloading>, which adds definitions that must
-be disambiguated some other way.) To confuse the issue further, we use
-the word with two overloaded definitions: to describe how you can
-define your own L</subroutine> to hide a built-in L</function> of the
-same name (see L<perlsub/Overriding Built-in Functions>) and to
-describe how you can define a replacement L</method> in a L</derived
-class> to hide a L</base class>'s method of the same name (see
-L<perlobj>).
+Hiding or X<overriding, defined>invalidating some other definition of the
+same name. (Not to be confused with B<overloading>, which adds definitions
+that must be disambiguated some other way.) To confuse the issue further,
+we use the word with two overloaded definitions: to describe how you can
+define your own B<subroutine> to hide a built-in B<function> of the same
+name (see the section “Overriding Built-in Functions†in Camel chapter 11,
+“Modulesâ€), and to describe how you can define a replacement B<method> in a
+B<derived class> to hide a B<base class>’s method of the same name (see
+Camel chapter 12, “Objectsâ€).
=item owner
-The one user (apart from the superuser) who has absolute control over
-a L</file>. A file may also have a L</group> of users who may
-exercise joint ownership if the real owner permits it. See
-L</permission bits>.
+The one X<ownership, file>X<files, ownership of>user (apart from the
+superuser) who has absolute control over a B<file>. A file may also have a
+B<group> of users who may exercise joint ownership if the real owner
+permits it. See B<permission bits>.
=back
@@ -2170,256 +2373,300 @@ L</permission bits>.
=item package
-A L</namespace> for global L<variables|/variable>,
-L<subroutines|/subroutine>, and the like, such that they can be kept
-separate from like-named L<symbols|/symbol> in other namespaces. In a
-sense, only the package is global, since the symbols in the package's
-symbol table are only accessible from code compiled outside the
-package by naming the package. But in another sense, all package
-symbols are also globals--they're just well-organized globals.
+A B<namespace> for X<packages, defined>global B<variables>, B<subroutines>,
+and the like, such that they can be kept separate from like-named
+B<symbols> in other namespaces. In a sense, only the package is global,
+since the symbols in the package’s symbol table are only accessible from
+code B<compiled> outside the package by naming the package. But in another
+sense, all package symbols are also globals—they’re just well-organized
+globals.
=item pad
-Short for L</scratchpad>.
+Short X<pads (scratchpads)>for B<scratchpad>.
=item parameter
-See L</argument>.
+SeeX<parameters> B<argument>.
=item parent class
-See L</base class>.
+SeeX<parent classes>X<classes, parent> B<base class>.
=item parse tree
-See L</syntax tree>.
+SeeX<parse tree> B<syntax tree>.
=item parsing
-The subtle but sometimes brutal art of attempting to turn your
-possibly malformed program into a valid L</syntax tree>.
+The X<parsing, about>subtle but sometimes brutal art of attempting to turn
+your possibly malformed program into a valid B<syntax tree>.
=item patch
-To fix by applying one, as it were. In the realm of hackerdom, a
-listing of the differences between two versions of a program as might
-be applied by the I<patch>(1) program when you want to fix a bug or
-upgrade your old version.
+To X<patches>fix by applying one, as it were. In the realm of hackerdom, a
+listing of the differences between two versions of a program as might be
+applied by the B<patch>(1) program when you want to fix a bug or upgrade
+your old version.
=item PATH
-The list of L<directories|/directory> the system searches to find a
-program you want to L</execute>. The list is stored as one of your
-L<environment variables|/environment variable>, accessible in Perl as
-C<$ENV{PATH}>.
+The X<PATH environment variable>X<variables, environment>list of
+B<directories> the system searches to find a program you want to
+B<execute>. The list is stored as one of your B<environment variables>,
+accessible in Perl as C<$ENV{PATH}>.
=item pathname
-A fully qualified filename such as I</usr/bin/perl>. Sometimes
-confused with L</PATH>.
+A X<pathname>fully qualified filename such as I</usr/bin/perl>. Sometimes
+confused with C<PATH>.
=item pattern
-A template used in L</pattern matching>.
+A X<patterns, defined>template used in B<pattern matching>.
=item pattern matching
-Taking a pattern, usually a L</regular expression>, and trying the
-pattern various ways on a string to see whether there's any way to
-make it fit. Often used to pick interesting tidbits out of a file.
+Taking a X<pattern matching, about>pattern, usually a B<regular
+expression>, and trying the pattern various ways on a string to see whether
+there’s any way to make it fit. Often used to pick interesting tidbits out
+of a file.
+
+=item PAUSE
+
+The X<Perl Authors Upload SErver (PAUSE)>X<PAUSE (Perl Authors Upload
+SErver)>Perl Authors Upload SErver (L<http://pause.perl.org>), the gateway
+for B<modules> on their way to B<CPAN>.
+
+=item Perl mongers
+
+A X<Perl mongers>X<mongers, Perl>Perl user group, taking the form of its
+name from the New York Perl mongers, the first Perl user group. Find one
+near you at L<http://www.pm.org>.
=item permission bits
-Bits that the L</owner> of a file sets or unsets to allow or disallow
-access to other people. These flag bits are part of the L</mode> word
-returned by the L<stat|perlfunc/stat> built-in when you ask about a
-file. On Unix systems, you can check the I<ls>(1) manpage for more
+Bits X<permission bits>X<bits, permission>that the B<owner> of a file sets
+or unsets to allow or disallow access to other people. These flag bits are
+part of the B<mode> word returned by the C<stat> built-in when you ask
+about a file. On Unix systems, you can check the I<ls>(1) manpage for more
information.
=item Pern
-What you get when you do C<Perl++> twice. Doing it only once will
-curl your hair. You have to increment it eight times to shampoo your
-hair. Lather, rinse, iterate.
+What you get X<Pern (term)>when you do C<Perl++> twice. Doing it only once
+will curl your hair. You have to increment it eight times to shampoo your
+hair. Lather, rinse, iterate.
=item pipe
-A direct L</connection> that carries the output of one L</process> to
-the input of another without an intermediate temporary file. Once the
-pipe is set up, the two processes in question can read and write as if
-they were talking to a normal file, with some caveats.
+A X<pipes, defined>direct B<connection> that carries the output of one
+B<process> to the input of another without an intermediate temporary file.
+Once the pipe is set up, the two processes in question can read and write
+as if they were talking to a normal file, with some caveats.
=item pipeline
-A series of L<processes|/process> all in a row, linked by
-L<pipes|/pipe>, where each passes its output stream to the next.
+A X<pipeline>series of B<processes> all in a row, linked by B<pipes>, where
+each passes its output stream to the next.
=item platform
-The entire hardware and software context in which a program runs. A
- program written in a platform-dependent language might break if you
-change any of: machine, operating system, libraries, compiler, or
-system configuration. The I<perl> interpreter has to be compiled
-differently for each platform because it is implemented in C, but
-programs written in the Perl language are largely
-platform-independent.
+The X<platforms, defined>entire hardware and software context in which a
+program runs. A program written in a platform-dependent language might
+break if you change any of the following: machine, operating system,
+libraries, compiler, or system configuration. The I<perl> interpreter has
+to be B<compiled> differently for each platform because it is implemented
+in C, but programs written in the Perl language are largely platform
+independent.
=item pod
-The markup used to embed documentation into your Perl code. See
-L<perlpod>.
+The X<pod (plain old documentation), about>X<plain old documentation>markup
+used to embed documentation into your Perl code. Pod stands for “Plain old
+documentationâ€. See Camel chapter 23, “Plain Old Documentationâ€.
+
+=item pod command
+
+A X<pod commands>X<commands, pod>sequence, such as C<=head1>, that denotes
+the start of a B<pod> section.
=item pointer
-A L</variable> in a language like C that contains the exact memory
-location of some other item. Perl handles pointers internally so you
-don't have to worry about them. Instead, you just use symbolic
-pointers in the form of L<keys|/key> and L</variable> names, or L<hard
-references|/hard reference>, which aren't pointers (but act like
-pointers and do in fact contain pointers).
+A B<variable> X<pointers>in a language like C that contains the exact
+memory location of some other item. Perl handles pointers internally so you
+don’t have to worry about them. Instead, you just use symbolic pointers in
+the form of B<keys> and B<variable> names, or B<hard references>, which
+aren’t pointers (but act like pointers and do in fact contain pointers).
=item polymorphism
-The notion that you can tell an L</object> to do something generic,
-and the object will interpret the command in different ways depending
-on its type. [E<lt>Gk many shapes]
+The notion X<polymorphism>that you can tell an B<object> to do something
+generic, and the object will interpret the command in different ways
+depending on its type. [E<lt> Greek πολυ- + μοÏϕή, many forms.]
=item port
-The part of the address of a TCP or UDP socket that directs packets to
-the correct process after finding the right machine, something like
-the phone extension you give when you reach the company operator.
-Also, the result of converting code to run on a different platform
-than originally intended, or the verb denoting this conversion.
+The X<ports (term)>part of the address of a TCP or UDP socket that directs
+packets to the correct process after finding the right machine, something
+like the phone extension you give when you reach the company operator. Also
+the result of converting code to run on a different platform than
+originally intended, or the verb denoting this conversion.
=item portable
-Once upon a time, C code compilable under both BSD and SysV. In
-general, code that can be easily converted to run on another
-L</platform>, where "easily" can be defined however you like, and
-usually is. Anything may be considered portable if you try hard
-enough. See I<mobile home> or I<London Bridge>.
+Once X<portability, about>upon a time, C code compilable under both BSD and
+SysV. In general, code that can be easily converted to run on another
+B<platform>, where “easily†can be defined however you like, and usually
+is. Anything may be considered portable if you try hard enough, such as a
+mobile home or London Bridge.
=item porter
-Someone who "carries" software from one L</platform> to another.
-Porting programs written in platform-dependent languages such as C can
-be difficult work, but porting programs like Perl is very much worth
-the agony.
+Someone X<porters>who “carries†software from one B<platform> to another.
+Porting programs written in platform-dependent languages such as C can be
+difficult work, but porting programs like Perl is very much worth the
+agony.
+
+=item possessive
+
+Said of X<possessive (term)>quantifiers and groups in patterns that refuse
+to give up anything once they’ve gotten their mitts on it. Catchier and
+easier to say than the even more formal I<nonbacktrackable>.
=item POSIX
-The Portable Operating System Interface specification.
+The X<Portable Operating System Interface (POSIX), about>X<POSIX (Portable
+Operating System Interface), about>Portable Operating System Interface
+specification.
=item postfix
-An L</operator> that follows its L</operand>, as in C<$x++>.
+An B<operator> X<postfix operator>that follows its B<operand>, as in
+C<$x++>.
=item pp
-An internal shorthand for a "push-pop" code, that is, C code
-implementing Perl's stack machine.
+An X<pp (push–pop) code>X<push–pop (pp) code>internal shorthand for a
+“push- pop†code; that is, C code implementing Perl’s stack machine.
=item pragma
-A standard module whose practical hints and suggestions are received
-(and possibly ignored) at compile time. Pragmas are named in all
-lowercase.
+A X<pragmas, about>X<modules>standard module whose practical hints and
+suggestions are received (and possibly ignored) at compile time. Pragmas
+are named in all lowercase.
=item precedence
-The rules of conduct that, in the absence of other guidance, determine
-what should happen first. For example, in the absence of parentheses,
-you always do multiplication before addition.
+The X<precedence rules, about>X<operators, precedence rules>rules of
+conduct that, in the absence of other guidance, determine what should
+happen first. For example, in the absence of parentheses, you always do
+multiplication before addition.
=item prefix
-An L</operator> that precedes its L</operand>, as in C<++$x>.
+An B<operator> X<prefix operators>that precedes its B<operand>, as in
+C<++$x>.
=item preprocessing
-What some helper L</process> did to transform the incoming data into a
-form more suitable for the current process. Often done with an
-incoming L</pipe>. See also L</C preprocessor>.
+What X<preprocessing>some helper B<process> did to transform the incoming
+data into a form more suitable for the current process. Often done with an
+incoming B<pipe>. See also B<C preprocessor>.
+
+=item primary maintainer
+
+The X<primary maintainer>author that PAUSE allows to assign B<co-maintainer>
+permissions to a B<namespace>. A primary maintainer can give up this
+distinction by assigning it to another PAUSE author. See Camel chapter 19,
+“CPANâ€.
=item procedure
-A L</subroutine>.
+AX<procedures, defined> B<subroutine>.
=item process
-An instance of a running program. Under multitasking systems like
-Unix, two or more separate processes could be running the same program
-independently at the same time--in fact, the L<fork|perlfunc/fork>
-function is designed to bring about this happy state of affairs.
-Under other operating systems, processes are sometimes called
-"threads", "tasks", or "jobs", often with slight nuances in meaning.
+An X<processes, defined>instance of a running program. Under multitasking
+systems like Unix, two or more separate processes could be running the same
+program independently at the same time—in fact, the C<fork> function is
+designed to bring about this happy state of affairs. Under other operating
+systems, processes are sometimes called “threadsâ€, “tasksâ€, or “jobsâ€,
+often with slight nuances in meaning.
+
+=item program
+
+See B<script>.
=item program generator
-A system that algorithmically writes code for you in a high-level
-language. See also L</code generator>.
+A system X<program generators>that algorithmically writes code for you in a
+high-level language. See also B<code generator>.
=item progressive matching
-L<Pattern matching|/pattern matching> that picks up where it left off before.
+B<Pattern matching> X<progressive matching>X<pattern matching, progressive
+matching> matching>that picks up where it left off before.
=item property
-See either L</instance variable> or L</character property>.
+See X<property>either B<instance variable> or B<character property>.
=item protocol
-In networking, an agreed-upon way of sending messages back and forth
-so that neither correspondent will get too confused.
+In X<protocols (term)>networking, an agreed-upon way of sending messages
+back and forth so that neither correspondent will get too confused.
=item prototype
-An optional part of a L</subroutine> declaration telling the Perl
-compiler how many and what flavor of arguments may be passed as
-L</actual arguments>, so that you can write subroutine calls that
-parse much like built-in functions. (Or don't parse, as the case may
-be.)
+An X<prototypes, about>optional part of a B<subroutine> declaration telling
+the Perl compiler how many and what flavor of arguments may be passed as
+B<actual arguments>, so you can write subroutine calls that parse much like
+built-in functions. (Or don’t parse, as the case may be.)
=item pseudofunction
-A construct that sometimes looks like a function but really isn't.
-Usually reserved for L</lvalue> modifiers like L<my|perlfunc/my>, for
-L</context> modifiers like L<scalar|perlfunc/scalar>, and for the
-pick-your-own-quotes constructs, C<q//>, C<qq//>, C<qx//>, C<qw//>,
-C<qr//>, C<m//>, C<s///>, C<y///>, and C<tr///>.
+A X<pseudofunctions>X<constructs, pseudofunctions>X<functions,
+pseudofunctions>construct that sometimes looks like a function but really
+isn’t. Usually reserved for B<lvalue> modifiers like C<my>, for B<context>
+modifiers like C<scalar>, and for the pick-your-own-quotes constructs,
+C<q//>, C<qq//>, C<qx//>, C<qw//>, C<qr//>, C<m//>, C<s///>, C<y///>, and
+C<tr///>.
=item pseudohash
-A reference to an array whose initial element happens to hold a
-reference to a hash. You can treat a pseudohash reference as either
-an array reference or a hash reference.
+Formerly, a reference X<pseudohashes>X<hashes, pseudohashes>to an array
+whose initial element happens to hold a reference to a hash. You used to be
+able to treat a pseudohash reference as either an array reference or a hash
+reference. Pseduohashes are no longer supported.
=item pseudoliteral
-An L</operator> that looks something like a L</literal>, such as the
-output-grabbing operator, C<`>I<C<command>>C<`>.
+An B<operator> X<pseudoliterals>XC<that looks something like a B<literal>,
+such as the output-grabbing operator, <literal
+moreinfo="none">`>I<C<command>>C<`>.
=item public domain
-Something not owned by anybody. Perl is copyrighted and is thus
-I<not> in the public domain--it's just L</freely available> and
-L</freely redistributable>.
+Something X<public domain>not owned by anybody. Perl is copyrighted and is
+thus I<not> in the public domain—it’s just B<freely available> and B<freely
+redistributable>.
=item pumpkin
-A notional "baton" handed around the Perl community indicating who is
-the lead integrator in some arena of development.
+A X<pumpkin (term)>notional “baton†handed around the Perl community
+indicating who is the lead integrator in some arena of development.
=item pumpking
-A L</pumpkin> holder, the person in charge of pumping the pump, or at
-least priming it. Must be willing to play the part of the Great
+A B<X<pumpking>pumpkin> holder, the person in charge of pumping the pump,
+or at least priming it. Must be willing to play the part of the Great
Pumpkin now and then.
=item PV
-A "pointer value", which is Perl Internals Talk for a C<char*>.
+A “X<PV (pointer value)>X<pointer value (PV)>pointer valueâ€, which is Perl
+Internals Talk for a C<char*>.
=back
@@ -2429,14 +2676,14 @@ A "pointer value", which is Perl Internals Talk for a C<char*>.
=item qualified
-Possessing a complete name. The symbol C<$Ent::moot> is qualified;
-C<$moot> is unqualified. A fully qualified filename is specified from
-the top-level directory.
+Possessing a X<qualified (term)>complete name. The symbol C<$Ent::moot> is
+qualified; C<$moot> is unqualified. A fully qualified filename is specified
+from the top-level directory.
=item quantifier
-A component of a L</regular expression> specifying how many times the
-foregoing L</atom> may occur.
+A X<quantifiers, about>component of a B<regular expression> specifying how
+many times the foregoing B<atom> may occur.
=back
@@ -2444,152 +2691,165 @@ foregoing L</atom> may occur.
=over 4
+=item race condition
+
+A X<race conditions, defined>race condition exists when the result of
+several interrelated events depends on the ordering of those events, but
+that order cannot be guaranteed due to nondeterministic timing effects. If
+two or more programs, or parts of the same program, try to go through the
+same series of events, one might interrupt the work of the other. This is a
+good way to find an B<exploit>.
+
=item readable
-With respect to files, one that has the proper permission bit set to
-let you access the file. With respect to computer programs, one
-that's written well enough that someone has a chance of figuring out
-what it's trying to do.
+With X<readable (term)>respect to files, one that has the proper permission
+bit set to let you access the file. With respect to computer programs, one
+that’s written well enough that someone has a chance of figuring out what
+it’s trying to do.
=item reaping
-The last rites performed by a parent L</process> on behalf of a
-deceased child process so that it doesn't remain a L</zombie>. See
-the L<wait|perlfunc/wait> and L<waitpid|perlfunc/waitpid> function
-calls.
+The last X<reaping zombie processes>rites performed by a parent B<process>
+on behalf of a deceased child process so that it doesn’t remain a
+B<zombie>. See the C<wait> and C<waitpid> function calls.
=item record
-A set of related data values in a L</file> or L</stream>, often
-associated with a unique L</key> field. In Unix, often commensurate
-with a L</line>, or a blank-line-terminated set of lines (a
-"paragraph"). Each line of the I</etc/passwd> file is a record, keyed
-on login name, containing information about that user.
+A set of X<records, defined>related data values in a B<file> or B<stream>,
+often associated with a unique B<key> field. In Unix, often commensurate
+with a B<line>, or a blank-line–terminated set of lines (a “paragraphâ€).
+Each line of the I</etc/passwd> file is a record, keyed on login name,
+containing information about that user.
=item recursion
-The art of defining something (at least partly) in terms of itself,
-which is a naughty no-no in dictionaries but often works out okay in
-computer programs if you're careful not to recurse forever, which is
-like an infinite loop with more spectacular failure modes.
+The art of X<recursion, defined>defining something (at least partly) in
+terms of itself, which is a naughty no-no in dictionaries but often works
+out okay in computer programs if you’re careful not to recurse forever
+(which is like an infinite loop with more spectacular failure modes).
=item reference
-Where you look to find a pointer to information somewhere else. (See
-L</indirection>.) References come in two flavors, L<symbolic
-references|/symbolic reference> and L<hard references|/hard
-reference>.
+Where you X<references, about>look to find a pointer to information
+somewhere else. (See B<indirection>.) References come in two flavors:
+B<symbolic references> and B<hard references>.
=item referent
-Whatever a reference refers to, which may or may not have a name.
-Common types of referents include scalars, arrays, hashes, and
+Whatever a X<referents, defined>reference refers to, which may or may not
+have a name. Common types of referents include scalars, arrays, hashes, and
subroutines.
=item regex
-See L</regular expression>.
+See B<regular expression>.
=item regular expression
-A single entity with various interpretations, like an elephant. To a
-computer scientist, it's a grammar for a little language in which some
-strings are legal and others aren't. To normal people, it's a pattern
-you can use to find what you're looking for when it varies from case
-to case. Perl's regular expressions are far from regular in the
-theoretical sense, but in regular use they work quite well. Here's a
-regular expression: C</Oh s.*t./>. This will match strings like "C<Oh
-say can you see by the dawn's early light>" and "C<Oh sit!>". See
-L<perlre>.
+A single X<regular expressions, defined>entity with various
+interpretations, like an elephant. To a computer scientist, it’s a grammar
+for a little language in which some strings are legal and others aren’t. To
+normal people, it’s a pattern you can use to find what you’re looking for
+when it varies from case to case. Perl’s regular expressions are far from
+regular in the theoretical sense, but in regular use they work quite well.
+Here’s a regular expression: C</Oh s.*t./>. This will match strings like
+“C<Oh say can you see by the dawn's early light>†and “C<Oh sit!>â€. See
+Camel chapter 5, “Pattern Matchingâ€.
=item regular expression modifier
-An option on a pattern or substitution, such as C</i> to render the
-pattern case insensitive. See also L</cloister>.
+An option on a X<regular expression modifiers>X<modifiers, regular
+expression>pattern or substitution, such as C</i> to render the pattern
+case- insensitive.
=item regular file
-A L</file> that's not a L</directory>, a L</device>, a named L</pipe>
-or L</socket>, or a L</symbolic link>. Perl uses the C<-f> file test
-operator to identify regular files. Sometimes called a "plain" file.
+A B<file> that’s X<regular files>X<files, regular>not a B<directory>, a
+B<device>, a named B<pipe> or B<socket>, or a B<symbolic link>. Perl uses
+the C<–f> file test operator to identify regular files. Sometimes called a
+“plain†file.
=item relational operator
-An L</operator> that says whether a particular ordering relationship
-is L</true> about a pair of L<operands|/operand>. Perl has both
-numeric and string relational operators. See L</collating sequence>.
+An B<operator> that X<relational operators>says whether a particular
+ordering relationship is B<true> about a pair of B<operands>. Perl has both
+numeric and string relational operators. See B<collating sequence>.
=item reserved words
-A word with a specific, built-in meaning to a L</compiler>, such as
-C<if> or L<delete|perlfunc/delete>. In many languages (not Perl),
-it's illegal to use reserved words to name anything else. (Which is
-why they're reserved, after all.) In Perl, you just can't use them to
-name L<labels|/label> or L<filehandles|/filehandle>. Also called
-"keywords".
-
-=item restricted hash
-
-A L</hash> with a closed set of allowed keys. See L<Hash::Util>.
+A word with a X<reserved words>X<keywords (term)>specific, built-in meaning
+to a B<compiler>, such as C<if> or C<delete>. In many languages (not Perl),
+it’s illegal to use reserved words to name anything else. (Which is why
+they’re reserved, after all.) In Perl, you just can’t use them to name
+B<labels> or B<filehandles>. Also called “keywordsâ€.
=item return value
-The L</value> produced by a L</subroutine> or L</expression> when
-evaluated. In Perl, a return value may be either a L</list> or a
-L</scalar>.
+The B<value> produced X<return values>X<values, return>by a B<subroutine>
+or B<expression> when evaluated. In Perl, a return value may be either a
+B<list> or a B<scalar>.
=item RFC
-Request For Comment, which despite the timid connotations is the name
-of a series of important standards documents.
+Request For Comment, X<Request For Comment (RFC)>X<RFC (Request For
+Comment)>which despite the timid connotations is the name of a series of
+important standards documents.
=item right shift
-A L</bit shift> that divides a number by some power of 2.
+A B<bit shift> X<right shift (E<gt>E<gt>) bit operator>X<bit–shift
+operators, right shift>X<E<gt>E<gt> (right shift) bit operator>that divides
+a number by some power of 2.
+
+=item role
+
+A name X<roles (term)>for a concrete set of behaviors. A role is a way to
+add behavior to a class without inheritance.
=item root
-The superuser (UID == 0). Also, the top-level directory of the
-filesystem.
+The X<root (term)>superuser (C<UID> == 0). Also the top-level directory of
+the filesystem.
=item RTFM
-What you are told when someone thinks you should Read The Fine Manual.
+What X<RTFM acronym>you are told when someone thinks you should Read The
+Fine Manual.
=item run phase
-Any time after Perl starts running your main program. See also
-L</compile phase>. Run phase is mostly spent in L</run time> but may
-also be spent in L</compile time> when L<require|perlfunc/require>,
-L<do|perlfunc/do> C<FILE>, or L<eval|perlfunc/eval> C<STRING>
-operators are executed or when a substitution uses the C</ee>
-modifier.
+Any X<run phase, defined>time after Perl starts running your main program.
+See also B<compile phase>. Run phase is mostly spent in B<runtime> but may
+also be spent in B<compile time> when C<require>, C<do> I<C<FILE>>, or
+C<eval> I<C<STRING>> operators are executed, or when a substitution uses
+the C</ee> modifier.
-=item run time
+=item runtime
-The time when Perl is actually doing what your code says to do, as
-opposed to the earlier period of time when it was trying to figure out
-whether what you said made any sense whatsoever, which is L</compile
-time>.
+The time X<runtime (term), defined>when Perl is actually doing what your
+code says to do, as opposed to the earlier period of time when it was
+trying to figure out whether what you said made any sense whatsoever, which
+is B<compile time>.
-=item run-time pattern
+=item runtime pattern
-A pattern that contains one or more variables to be interpolated
-before parsing the pattern as a L</regular expression>, and that
-therefore cannot be analyzed at compile time, but must be re-analyzed
-each time the pattern match operator is evaluated. Run-time patterns
-are useful but expensive.
+A X<runtime patterns>X<patterns, runtime>pattern that contains one or more
+variables to be interpolated before parsing the pattern as a B<regular
+expression>, and that therefore cannot be analyzed at compile time, but
+must be reanalyzed each time the pattern match operator is evaluated.
+Runtime patterns are useful but expensive.
=item RV
-A recreational vehicle, not to be confused with vehicular recreation.
-RV also means an internal Reference Value of the type a L</scalar> can
-hold. See also L</IV> and L</NV> if you're not confused yet.
+A X<Reference Value (RV)>X<RV (Reference Value)>recreational vehicle, not
+to be confused with vehicular recreation. RV also means an internal
+Reference Value of the type a B<scalar> can hold. See also B<IV> and B<NV>
+if you’re not confused yet.
=item rvalue
-A L</value> that you might find on the right side of an
-L</assignment>. See also L</lvalue>.
+A B<value> that X<rvalue (term)>X<values, rvalue>you might find on the
+right side of an B<assignment>. See also B<lvalue>.
=back
@@ -2597,482 +2857,516 @@ L</assignment>. See also L</lvalue>.
=over 4
+=item sandbox
+
+A X<sandbox, defined>walled off area that’s not supposed to affect beyond
+its walls. You let kids play in the sandbox instead of running in the road.
+See Camel chapter 20, “Securityâ€.
+
=item scalar
-A simple, singular value; a number, L</string>, or L</reference>.
+A X<scalars, defined>simple, singular value; a number, B<string>, or
+B<reference>.
=item scalar context
-The situation in which an L</expression> is expected by its
-surroundings (the code calling it) to return a single L</value> rather
-than a L</list> of values. See also L</context> and L</list context>.
-A scalar context sometimes imposes additional constraints on the
-return value--see L</string context> and L</numeric context>.
-Sometimes we talk about a L</Boolean context> inside conditionals, but
-this imposes no additional constraints, since any scalar value,
-whether numeric or L</string>, is already true or false.
+The X<scalar context, about>X<context, scalar>situation in which an
+B<expression> is expected by its surroundings (the code calling it) to
+return a single B<value> rather than a B<list> of values. See also
+B<context> and B<list context>. A scalar context sometimes imposes
+additional constraints on the return value—see B<string context> and
+B<numeric context>. Sometimes we talk about a B<Boolean context> inside
+conditionals, but this imposes no additional constraints, since any scalar
+value, whether numeric or B<string>, is already true or false.
=item scalar literal
-A number or quoted L</string>--an actual L</value> in the text of your
-program, as opposed to a L</variable>.
+A X<scalar literals>X<literals, scalar>number or quoted B<string>—an actual
+B<value> in the text of your program, as opposed to a B<variable>.
=item scalar value
-A value that happens to be a L</scalar> as opposed to a L</list>.
+A X<scalar values, about>X<values, scalar>X<SV>value that happens to be a
+B<scalar> as opposed to a B<list>.
=item scalar variable
-A L</variable> prefixed with C<$> that holds a single value.
+A B<variable> X<scalar variables, defined>X<variables, scalar>prefixed with
+C<$> that holds a single value.
=item scope
-How far away you can see a variable from, looking through one. Perl
-has two visibility mechanisms: it does L</dynamic scoping> of
-L<local|perlfunc/local> L<variables|/variable>, meaning that the rest
-of the L</block>, and any L<subroutines|/subroutine> that are called
-by the rest of the block, can see the variables that are local to the
-block. Perl does L</lexical scoping> of L<my|perlfunc/my> variables,
-meaning that the rest of the block can see the variable, but other
-subroutines called by the block I<cannot> see the variable.
+From X<scopes, defined>how far away you can see a variable, looking through
+one. Perl has two visibility mechanisms. It does B<dynamic scoping> of
+C<local> B<variables>, meaning that the rest of the B<block>, and any
+B<subroutines> that are called by the rest of the block, can see the
+variables that are local to the block. Perl does B<lexical scoping> of
+C<my> variables, meaning that the rest of the block can see the variable,
+but other subroutines called by the block I<cannot> see the variable.
=item scratchpad
-The area in which a particular invocation of a particular file or
-subroutine keeps some of its temporary values, including any lexically
-scoped variables.
+The X<scratchpads>area in which a particular invocation of a particular
+file or subroutine keeps some of its temporary values, including any
+lexically scoped variables.
=item script
-A text L</file> that is a program intended to be L<executed|/execute>
-directly rather than L<compiled|/compiler> to another form of file
-before execution. Also, in the context of L</Unicode>, a writing
-system for a particular language or group of languages, such as Greek,
-Bengali, or Klingon.
+A X<scripts (term)>X<programs, defined>text B<file> that is a program
+intended to be B<executed> directly rather than B<compiled> to another form
+of file before B<execution>.
+
+Also, in the context of B<Unicode>, a writing system for a particular
+language or group of languages, such as Greek, Bengali, or Tengwar.
=item script kiddie
-A L</cracker> who is not a L</hacker>, but knows just enough to run
-canned scripts. A cargo-cult programmer.
+A B<cracker> X<script kiddie>who is not a B<hacker> but knows just enough
+to run canned scripts. A B<cargo-cult> programmer.
=item sed
-A venerable Stream EDitor from which Perl derives some of its ideas.
+A venerable Stream EDitor X<sed (Stream EDitor)>X<Stream EDitor (sed)>from
+which Perl derives some of its ideas.
=item semaphore
-A fancy kind of interlock that prevents multiple L<threads|/thread> or
-L<processes|/process> from using up the same resources simultaneously.
+A fancy X<semaphore>kind of interlock that prevents multiple B<threads> or
+B<processes> from using up the same resources simultaneously.
=item separator
-A L</character> or L</string> that keeps two surrounding strings from
-being confused with each other. The L<split|perlfunc/split> function
-works on separators. Not to be confused with L<delimiters|/delimiter>
-or L<terminators|/terminator>. The "or" in the previous sentence
-separated the two alternatives.
+A B<character> X<separators>X<characters, separators>X<strings,
+separators>or B<string> that keeps two surrounding strings from being
+confused with each other. The C<split> function X<split function,
+separators and>works on separators. Not to be confused with B<delimiters>
+or B<terminators>. The “or†in the previous sentence separated the two
+alternatives.
=item serialization
-Putting a fancy L</data structure> into linear order so that it can be
-stored as a L</string> in a disk file or database or sent through a
-L</pipe>. Also called marshalling.
+Putting a X<serialization>X<marshalling (term)>fancy B<data structure> into
+linear order so that it can be stored as a B<string> in a disk file or
+database, or sent through a B<pipe>. Also called marshalling.
=item server
-In networking, a L</process> that either advertises a L</service> or
-just hangs around at a known location and waits for L<clients|/client>
-who need service to get in touch with it.
+In networking, X<servers, defined>X<processes, server>a B<process> that
+either advertises a B<service> or just hangs around at a known location and
+waits for B<clients> who need service to get in touch with it.
=item service
-Something you do for someone else to make them happy, like giving them
-the time of day (or of their life). On some machines, well-known
-services are listed by the L<getservent|perlfunc/getservent> function.
+Something X<services (term)>you do for someone else to make them happy,
+like giving them the time of day (or of their life). On some machines,
+well-known services are listed by theX<getservent function> C<getservent>
+function.
=item setgid
-Same as L</setuid>, only having to do with giving away L</group>
-privileges.
+Same as B<setuid>, X<setgid program, about>only having to do with giving
+away B<group> privileges.
=item setuid
-Said of a program that runs with the privileges of its L</owner>
-rather than (as is usually the case) the privileges of whoever is
-running it. Also describes the bit in the mode word (L</permission
-bits>) that controls the feature. This bit must be explicitly set by
-the owner to enable this feature, and the program must be carefully
-written not to give away more privileges than it ought to.
+Said of a program X<setuid program, about>that runs with the privileges of
+its B<owner> rather than (as is usually the case) the privileges of whoever
+is running it. Also describes the bit in the mode word (B<permission bits>)
+that controls the feature. This bit must be explicitly set by the owner to
+enable this feature, and the program must be carefully written not to give
+away more privileges than it ought to.
=item shared memory
-A piece of L</memory> accessible by two different
-L<processes|/process> who otherwise would not see each other's memory.
+A piece of B<memory> X<shared memory>X<memory, shared>accessible by two
+different B<processes> who otherwise would not see each other’s memory.
=item shebang
-Irish for the whole McGillicuddy. In Perl culture, a portmanteau of
-"sharp" and "bang", meaning the C<#!> sequence that tells the system
-where to find the interpreter.
+Irish for the X<shebang (term)>whole McGillicuddy. In Perl culture, a
+portmanteau of “sharp†and “bangâ€, meaning the C<#!> sequence that tells
+the system where to find the interpreter.
=item shell
-A L</command>-line L</interpreter>. The program that interactively
-gives you a prompt, accepts one or more L<lines|/line> of input, and
-executes the programs you mentioned, feeding each of them their proper
-L<arguments|/argument> and input data. Shells can also execute
-scripts containing such commands. Under Unix, typical shells include
-the Bourne shell (I</bin/sh>), the C shell (I</bin/csh>), and the Korn
-shell (I</bin/ksh>). Perl is not strictly a shell because it's not
-interactive (although Perl programs can be interactive).
+A B<command>-X<shell program, defined>line B<interpreter>. The program that
+interactively gives you a prompt, accepts one or more B<lines> of input,
+and executes the programs you mentioned, feeding each of them their proper
+B<arguments> and input data. Shells can also execute scripts containing
+such commands. Under Unix, typical shells include the Bourne shell
+(I</bin/sh>), the C shell (I</bin/csh>), and the Korn shell (I</bin/ksh>).
+Perl is not strictly a shell because it’s not interactive (although Perl
+programs can be interactive).
=item side effects
-Something extra that happens when you evaluate an L</expression>.
-Nowadays it can refer to almost anything. For example, evaluating a
-simple assignment statement typically has the "side effect" of
-assigning a value to a variable. (And you thought assigning the value
-was your primary intent in the first place!) Likewise, assigning a
-value to the special variable C<$|> (C<$AUTOFLUSH>) has the side
-effect of forcing a flush after every L<write|perlfunc/write> or
-L<print|perlfunc/print> on the currently selected filehandle.
+Something extra X<side effects>that happens when you evaluate an
+B<expression>. Nowadays it can refer to almost anything. For example,
+evaluating a simple assignment statement typically has the “side effect†of
+assigning a value to a variable. (And you thought assigning the value was
+your primary intent in the first place!) Likewise, assigning a value to the
+special variable C<$|> (C<$AUTOFLUSH>) has the side effect of forcing a
+flush after every C<write> or C<print> on the currently selected
+filehandle.
+
+=item sigil
+
+A glyph X<sigils, defined>used in magic. Or, for Perl, the symbol in front
+of a variable name, such as C<$>, C<@>, and C<%>.
=item signal
-A bolt out of the blue; that is, an event triggered by the
-L</operating system>, probably when you're least expecting it.
+A bolt X<signals and signal handling, about>out of the blue; that is, an
+event triggered by the B<operating system>, probably when you’re least
+expecting it.
=item signal handler
-A L</subroutine> that, instead of being content to be called in the
-normal fashion, sits around waiting for a bolt out of the blue before
-it will deign to L</execute>. Under Perl, bolts out of the blue are
-called signals, and you send them with the L<kill|perlfunc/kill>
-built-in. See L<perlvar/%SIG> and L<perlipc/Signals>.
+A B<subroutine> that, X<handlers, signal>instead of being content to be
+called in the normal fashion, sits around waiting for a bolt out of the
+blue before it will deign to B<execute>. Under Perl, bolts out of the blue
+are called signals, and you send them with the C<kill> built-in. See the
+C<%SIG> hash in Camel chapter 25, “Special Names†and the section “Signalsâ€
+in Camel chapter 15, “Interprocess Communicationâ€.
=item single inheritance
-The features you got from your mother, if she told you that you don't
-have a father. (See also L</inheritance> and L</multiple
-inheritance>.) In computer languages, the notion that
-L<classes|/class> reproduce asexually so that a given class can only
-have one direct ancestor or L</base class>. Perl supplies no such
-restriction, though you may certainly program Perl that way if you
-like.
+The features X<single inheritance>X<inheritance, single>you got from your
+mother, if she told you that you don’t have a father. (See also
+B<inheritance> and B<multiple inheritance>.) In computer languages, the
+idea that B<classes> reproduce asexually so that a given class can only
+have one direct ancestor or B<base class>. Perl supplies no such
+restriction, though you may certainly program Perl that way if you like.
=item slice
-A selection of any number of L<elements|/element> from a L</list>,
-L</array>, or L</hash>.
+A selection X<slices of elements>X<elements, slices of>of any number of
+B<elements> from a B<list>, B<array>, or B<hash>.
=item slurp
-To read an entire L</file> into a L</string> in one operation.
+To read an X<slurp (term)>entire B<file> into a B<string> in one operation.
=item socket
-An endpoint for network communication among multiple
-L<processes|/process> that works much like a telephone or a post
-office box. The most important thing about a socket is its L</network
-address> (like a phone number). Different kinds of sockets have
-different kinds of addresses--some look like filenames, and some
-don't.
+An endpoint for X<sockets, defined>network communication among multiple
+B<processes> that works much like a telephone or a post office box. The
+most important thing about a socket is its B<network address> (like a phone
+number). Different kinds of sockets have different kinds of addresses—some
+look like filenames, and some don’t.
=item soft reference
-See L</symbolic reference>.
+SeeX<soft references>X<references, soft> B<symbolic reference>.
=item source filter
-A special kind of L</module> that does L</preprocessing> on your
-script just before it gets to the L</tokener>.
+A special X<source filters>X<filters, source>kind of B<module> that does
+B<preprocessing> on your script just before it gets to the B<tokener>.
=item stack
-A device you can put things on the top of, and later take them back
-off in the opposite order in which you put them on. See L</LIFO>.
+A X<stacks, defined>device you can put things on the top of, and later take
+them back off in the opposite order in which you put them on. See B<LIFO>.
=item standard
-Included in the official Perl distribution, as in a standard module, a
-standard tool, or a standard Perl L</manpage>.
+Included X<standard (term)>in the official Perl distribution, as in a
+standard module, a standard tool, or a standard Perl B<manpage>.
=item standard error
-The default output L</stream> for nasty remarks that don't belong in
-L</standard output>. Represented within a Perl program by the
-L</filehandle> L</STDERR>. You can use this stream explicitly, but the
-L<die|perlfunc/die> and L<warn|perlfunc/warn> built-ins write to your
-standard error stream automatically.
+The default output B<stream> for nasty remarks that don’t belong in
+B<standard output>. Represented within a Perl program by theX<STDERR
+filehandle, about> output> B<filehandle> C<STDERR>. You can use this
+stream explicitly, but the C<die> and C<warn> built-ins write to your
+standard error stream automatically (unless trapped or otherwise
+intercepted).
-=item standard I/O
+=item standard input
-A standard C library for doing L<buffered|/buffer> input and output to
-the L</operating system>. (The "standard" of standard I/O is only
-marginally related to the "standard" of standard input and output.)
-In general, Perl relies on whatever implementation of standard I/O a
-given operating system supplies, so the buffering characteristics of a
-Perl program on one machine may not exactly match those on another
-machine. Normally this only influences efficiency, not semantics. If
-your standard I/O package is doing block buffering and you want it to
-L</flush> the buffer more often, just set the C<$|> variable to a true
-value.
+The X<STDIN filehandle, about>default input B<stream> for your program,
+which if possible shouldn’t care where its data is coming from. Represented
+within a Perl program by the B<filehandle> C<STDIN>.
-=item standard input
+=item standard I/O
-The default input L</stream> for your program, which if possible
-shouldn't care where its data is coming from. Represented within a
-Perl program by the L</filehandle> L</STDIN>.
+A X<standard I/O>X<I/O (Input/Output), standard>X<Input/Output (I/O),
+standard>X<STDIO filehandle>standard C library for doing B<buffered> input
+and output to the B<operating system>. (The “standard†of standard I/O is
+at most marginally related to the “standard†of standard input and output.)
+In general, Perl relies on whatever implementation of standard I/O a given
+operating system supplies, so the buffering characteristics of a Perl
+program on one machine may not exactly match those on another machine.
+Normally this only influences efficiency, not semantics. If your standard
+I/O package is doing block buffering and you want it to B<flush> the buffer
+more often, just set the C<$|> variable to a true value.
-=item standard output
+=item Standard Library
-The default output L</stream> for your program, which if possible
-shouldn't care where its data is going. Represented within a Perl
-program by the L</filehandle> L</STDOUT>.
+Everything X<Standard Perl Library, about>that comes with the official
+I<perl> distribution. Some vendor versions of I<perl> change their
+distributions, leaving out some parts or including extras. See also
+B<dual-lived>.
-=item stat structure
+=item standard output
-A special internal spot in which Perl keeps the information about the
-last L</file> on which you requested information.
+The X<STDOUT filehandle, about>default output B<stream> for your program,
+which if possible shouldn’t care where its data is going. Represented
+within a Perl program by the B<filehandle> C<STDOUT>.
=item statement
-A L</command> to the computer about what to do next, like a step in a
-recipe: "Add marmalade to batter and mix until mixed." A statement is
-distinguished from a L</declaration>, which doesn't tell the computer
-to do anything, but just to learn something.
+A B<command> to X<statements, about>the computer about what to do next,
+like a step in a recipe: “Add marmalade to batter and mix until mixed.†A
+statement is distinguished from a B<declaration>, which doesn’t tell the
+computer to do anything, but just to learn something.
=item statement modifier
-A L</conditional> or L</loop> that you put after the L</statement>
-instead of before, if you know what we mean.
+A B<conditional> X<statement modifiers, about>X<modifiers, statement>or
+B<loop> that you put after the B<statement> instead of before, if you know
+what we mean.
=item static
-Varying slowly compared to something else. (Unfortunately, everything
-is relatively stable compared to something else, except for certain
-elementary particles, and we're not so sure about them.) In
-computers, where things are supposed to vary rapidly, "static" has a
-derogatory connotation, indicating a slightly dysfunctional
-L</variable>, L</subroutine>, or L</method>. In Perl culture, the
-word is politely avoided.
+Varying X<static (term)>slowly compared to something else. (Unfortunately,
+everything is relatively stable compared to something else, except for
+certain elementary particles, and we’re not so sure about them.) In
+computers, where things are supposed to vary rapidly, “static†has a
+derogatory connotation, indicating a slightly dysfunctional B<variable>,
+B<subroutine>, or B<method>. In Perl culture, the word is politely avoided.
+
+If you’re a C or C++ programmer, you might be looking for Perl’s C<state>
+keyword.
=item static method
-No such thing. See L</class method>.
+No such X<static methods>X<methods, static>thing. See B<class method>.
=item static scoping
-No such thing. See L</lexical scoping>.
+No such thing. See B<lexical scoping>.
=item static variable
-No such thing. Just use a L</lexical variable> in a scope larger than
-your L</subroutine>.
+No such X<static variables>X<variables, static>thing. Just use a B<lexical
+variable> in a scope larger than your B<subroutine>, or declare it with
+C<state> instead of with C<my>.
+
+=item stat structure
+
+A special X<stat structure>X<data structures, stat structure>internal spot
+in which Perl keeps the information about the last B<file> on which you
+requested information.
=item status
-The L</value> returned to the parent L</process> when one of its child
-processes dies. This value is placed in the special variable C<$?>.
-Its upper eight L<bits|/bit> are the exit status of the defunct
-process, and its lower eight bits identify the signal (if any) that
-the process died from. On Unix systems, this status value is the same
-as the status word returned by I<wait>(2). See L<perlfunc/system>.
+The B<value> X<status value>X<values, status>X<exit status>returned to the
+parent B<process> when one of its child processes dies. This value is
+placed in the special variable C<$?>. Its upper eight B<bits> are the exit
+status of the defunct process, and its lower eight bits identify the signal
+(if any) that the process died from. On Unix systems, this status value is
+the same as the status word returned by I<wait>(2). See C<system> in Camel
+chapter 27, “Functionsâ€.
=item STDERR
-See L</standard error>.
+See B<standard error>.
=item STDIN
-See L</standard input>.
+See B<standard input>.
=item STDIO
-See L</standard IE<sol>O>.
+See B<standard I/O>.
=item STDOUT
-See L</standard output>.
+See B<standard output>.
=item stream
-A flow of data into or out of a process as a steady sequence of bytes
-or characters, without the appearance of being broken up into packets.
-This is a kind of L</interface>--the underlying L</implementation> may
-well break your data up into separate packets for delivery, but this
-is hidden from you.
+A flow X<streaming data>X<processes, streaming data>of data into or out of
+a process as a steady sequence of bytes or characters, without the
+appearance of being broken up into packets. This is a kind of
+B<interface>—the underlying B<implementation> may well break your data up
+into separate packets for delivery, but this is hidden from you.
=item string
-A sequence of characters such as "He said !@#*&%@#*?!". A string does
-not have to be entirely printable.
+A sequence X<strings, defined>of characters such as “He said !@#*&%@#*?!â€.
+A string does not have to be entirely printable.
=item string context
-The situation in which an expression is expected by its surroundings
-(the code calling it) to return a L</string>. See also L</context>
-and L</numeric context>.
+The situation X<string context>X<context, string>in which an expression is
+expected by its surroundings (the code calling it) to return a B<string>.
+See also B<context> and B<numeric context>.
=item stringification
-The process of producing a L</string> representation of an abstract
-object.
+The process X<stringification>of producing a B<string> representation of an
+abstract object.
=item struct
-C keyword introducing a structure definition or name.
+C keyword X<struct keyword>introducing a structure definition or name.
=item structure
-See L</data structure>.
+SeeX<structures> B<data structure>.
=item subclass
-See L</derived class>.
+See B<derived class>.
=item subpattern
-A component of a L</regular expression> pattern.
+A X<subpatterns, defined>component of a B<regular expression> pattern.
=item subroutine
-A named or otherwise accessible piece of program that can be invoked
-from elsewhere in the program in order to accomplish some sub-goal of
-the program. A subroutine is often parameterized to accomplish
-different but related things depending on its input
-L<arguments|/argument>. If the subroutine returns a meaningful
-L</value>, it is also called a L</function>.
+A X<subroutines, defined>named or otherwise accessible piece of program
+that can be invoked from elsewhere in the program in order to accomplish
+some subgoal of the program. A subroutine is often parameterized to
+accomplish different but related things depending on its input
+B<arguments>. If the subroutine returns a meaningful B<value>, it is also
+called a B<function>.
=item subscript
-A L</value> that indicates the position of a particular L</array>
-L</element> in an array.
+A B<value> X<subscripts>that indicates the position of a particular
+B<array> B<element> in an array.
=item substitution
-Changing parts of a string via the C<s///> operator. (We avoid use of
-this term to mean L</variable interpolation>.)
+Changing X<substitution (s///) operator, about>X<strings, substitution
+in>X<s/// (substitution) operator, about>parts of a string via the C<s///>
+operator. (We avoid use of this term to mean B<variable interpolation>.)
=item substring
-A portion of a L</string>, starting at a certain L</character>
-position (L</offset>) and proceeding for a certain number of
+A portion of a B<string>, X<substrings (term)>starting at a certain
+B<character> position (B<offset>) and proceeding for a certain number of
characters.
=item superclass
-See L</base class>.
+See B<base class>.
=item superuser
-The person whom the L</operating system> will let do almost anything.
-Typically your system administrator or someone pretending to be your
-system administrator. On Unix systems, the L</root> user. On Windows
+The X<superusers>person whom the B<operating system> will let do almost
+anything. Typically your system administrator or someone pretending to be
+your system administrator. On Unix systems, the B<root> user. On Windows
systems, usually the Administrator user.
=item SV
-Short for "scalar value". But within the Perl interpreter every
-L</referent> is treated as a member of a class derived from SV, in an
-object-oriented sort of way. Every L</value> inside Perl is passed
-around as a C language C<SV*> pointer. The SV L</struct> knows its
-own "referent type", and the code is smart enough (we hope) not to try
-to call a L</hash> function on a L</subroutine>.
+Short X<scalar values, about>X<values, scalar>for “scalar valueâ€. But
+within the Perl interpreter, every B<referent> is treated as a member of a
+class derived from SV, in an object-oriented sort of way. Every B<value>
+inside Perl is passed around as a C language C<SV*> pointer. The SV
+B<struct> knows its own “referent typeâ€, and the code is smart enough (we
+hope) not to try to call a B<hash> function on a B<subroutine>.
=item switch
-An option you give on a command line to influence the way your program
-works, usually introduced with a minus sign. The word is also used as
-a nickname for a L</switch statement>.
+An X<switches, about>X<switches>option you give on a command line to
+influence the way your program works, usually introduced with a minus sign.
+The word is also used as a nickname for a B<switch statement>.
=item switch cluster
-The combination of multiple command-line switches (e.g., B<-a -b -c>)
-into one switch (e.g., B<-abc>). Any switch with an additional
-L</argument> must be the last switch in a cluster.
+The X<switch clusters>X<clusters, switch>combination of multiple command-
+line switches (I<e.g.>, C<–a –b –c>) into one switch (I<e.g.>, C<–abc>).
+Any switch with an additional B<argument> must be the last switch in a
+cluster.
=item switch statement
-A program technique that lets you evaluate an L</expression> and then,
-based on the value of the expression, do a multiway branch to the
-appropriate piece of code for that value. Also called a "case
-structure", named after the similar Pascal construct. See
-See L<perlsyn/Basic BLOCKs>.
+A X<switch statement>X<statements, switch>program technique that lets you
+evaluate an B<expression> and then, based on the value of the expression,
+do a multiway branch to the appropriate piece of code for that value. Also
+called a “case structureâ€, named after the similar Pascal construct. Most
+switch statements in Perl are spelled C<given>. See “The C<given>
+statement†in Camel chapter 4, “Statements and Declarationsâ€.
=item symbol
-Generally, any L</token> or L</metasymbol>. Often used more
-specifically to mean the sort of name you might find in a L</symbol
+Generally, X<symbols>X<symbols>any B<token> or B<metasymbol>. Often used
+more specifically to mean the sort of name you might find in a B<symbol
table>.
-=item symbol table
-
-Where a L</compiler> remembers symbols. A program like Perl must
-somehow remember all the names of all the L<variables|/variable>,
-L<filehandles|/filehandle>, and L<subroutines|/subroutine> you've
-used. It does this by placing the names in a symbol table, which is
-implemented in Perl using a L</hash table>. There is a separate
-symbol table for each L</package> to give each package its own
-L</namespace>.
-
=item symbolic debugger
-A program that lets you step through the L<execution|/execute> of your
-program, stopping or printing things out here and there to see whether
-anything has gone wrong, and if so, what. The "symbolic" part just
-means that you can talk to the debugger using the same symbols with
-which your program is written.
+A program X<symbolic debugger>X<debugger, about>that lets you step through
+the B<execution> of your program, stopping or printing things out here and
+there to see whether anything has gone wrong, and, if so, what. The
+“symbolic†part just means that you can talk to the debugger using the same
+symbols with which your program is written.
=item symbolic link
-An alternate filename that points to the real L</filename>, which in
-turn points to the real L</file>. Whenever the L</operating system>
-is trying to parse a L</pathname> containing a symbolic link, it
-merely substitutes the new name and continues parsing.
+An alternate X<symbolic links>X<links, symbolic>filename that points to the
+real B<filename>, which in turn points to the real B<file>. Whenever the
+B<operating system> is trying to parse a B<pathname> containing a symbolic
+link, it merely substitutes the new name and continues parsing.
=item symbolic reference
-A variable whose value is the name of another variable or subroutine.
-By L<dereferencing|/dereference> the first variable, you can get at
-the second one. Symbolic references are illegal under L<use strict
-'refs'|strict/strict refs>.
+A variable X<symbolic references>X<references, symbolic>whose value is the
+name of another variable or subroutine. By B<dereferencing> the first
+variable, you can get at the second one. Symbolic references are illegal
+under C<use strict "refs">.
+
+=item symbol table
+
+Where X<symbol tables, about>a B<compiler> remembers symbols. A program
+like Perl must somehow remember all the names of all the B<variables>,
+B<filehandles>, and B<subroutines> you’ve used. It does this by placing the
+names in a symbol table, which is implemented in Perl using a B<hash
+table>. There is a separate symbol table for each B<package> to give each
+package its own B<namespace>.
=item synchronous
-Programming in which the orderly sequence of events can be determined;
-that is, when things happen one after the other, not at the same time.
+Programming X<synchronous (term)>in which the orderly sequence of events
+can be determined; that is, when things happen one after the other, not at
+the same time.
=item syntactic sugar
-An alternative way of writing something more easily; a shortcut.
+An X<syntactic sugar>alternative way of writing something more easily; a
+shortcut.
=item syntax
-From Greek, "with-arrangement". How things (particularly symbols) are
-put together with each other.
+From X<syntax, about>Greek σÏνταξις, “with-arrangementâ€. How things
+(particularly symbols) are put together with each other.
=item syntax tree
-An internal representation of your program wherein lower-level
-L<constructs|/construct> dangle off the higher-level constructs
-enclosing them.
+An internal X<syntax tree>representation of your program wherein
+lower-level B<constructs> dangle off the higher-level constructs enclosing
+them.
=item syscall
-A L</function> call directly to the L</operating system>. Many of the
-important subroutines and functions you use aren't direct system
-calls, but are built up in one or more layers above the system call
-level. In general, Perl programmers don't need to worry about the
-distinction. However, if you do happen to know which Perl functions
-are really syscalls, you can predict which of these will set the C<$!>
-(C<$ERRNO>) variable on failure. Unfortunately, beginning programmers
-often confusingly employ the term "system call" to mean what happens
-when you call the Perl L<system|perlfunc/system> function, which
-actually involves many syscalls. To avoid any confusion, we nearly
-always use say "syscall" for something you could call indirectly via
-Perl's L<syscall|perlfunc/syscall> function, and never for something
-you would call with Perl's L<system|perlfunc/system> function.
+A B<function> X<syscall function, about>call directly to the B<operating
+system>. Many of the important subroutines and functions you use aren’t
+direct system calls, but are built up in one or more layers above the
+system call level. In general, Perl programmers don’t need to worry about
+the distinction. However, if you do happen to know which Perl functions are
+really syscalls, you can predict which of these will set the C<$!>
+(C<$ERRNO>) variable on failure. Unfortunately, beginning programmers often
+confusingly employ the term “system call†to mean what happens when you
+call the Perl C<system> function, which actually involves many syscalls. To
+avoid any confusion, we nearly always say “syscall†for something you could
+call indirectly via Perl’s C<syscall> function, and never for something you
+would call with Perl’s C<system> function.
=back
@@ -3080,148 +3374,182 @@ you would call with Perl's L<system|perlfunc/system> function.
=over 4
+=item taint checks
+
+The X<taint checks, about>special bookkeeping Perl does to track the flow
+of external data through your program and disallow their use in system
+commands.
+
=item tainted
-Said of data derived from the grubby hands of a user and thus unsafe
-for a secure program to rely on. Perl does taint checks if you run a
-L</setuid> (or L</setgid>) program, or if you use the B<-T> switch.
+Said of X<tainted data, about>data derived from the grubby hands of a user,
+and thus unsafe for a secure program to rely on. Perl does taint checks if
+you run a B<setuid> (or B<setgid>) program, or if you use the C<–T> switch.
+
+=item taint mode
+
+Running X<taint mode>under the C<–T> switch, marking all external data as
+suspect and refusing to use it with system commands. See Camel chapter 20,
+“Securityâ€.
=item TCP
-Short for Transmission Control Protocol. A protocol wrapped around
-the Internet Protocol to make an unreliable packet transmission
-mechanism appear to the application program to be a reliable
-L</stream> of bytes. (Usually.)
+Short for X<TCP (Transmission Control Protocol)>X<Transmission Control
+Protocol (TCP)>Transmission Control Protocol. A protocol wrapped around the
+Internet Protocol to make an unreliable packet transmission mechanism
+appear to the application program to be a reliable B<stream> of bytes.
+(Usually.)
=item term
-Short for a "terminal", that is, a leaf node of a L</syntax tree>. A
-thing that functions grammatically as an L</operand> for the operators
-in an expression.
+Short for X<terms, defined>a “terminalâ€â€”that is, a leaf node of a B<syntax
+tree>. A thing that functions grammatically as an B<operand> for the
+operators in an expression.
=item terminator
-A L</character> or L</string> that marks the end of another string.
-The C<$/> variable contains the string that terminates a
-L<readline|perlfunc/readline> operation, which L<chomp|perlfunc/chomp>
-deletes from the end. Not to be confused with
-L<delimiters|/delimiter> or L<separators|/separator>. The period at
-the end of this sentence is a terminator.
+A B<character> X<terminators (term)>X<characters, terminators>X<strings,
+terminators in>or B<string> that marks the end of another string. The C<$/>
+variable contains the string that terminates a C<readline> operation, which
+C<chomp> deletes from the end. Not to be confused with B<delimiters> or
+B<separators>. The period at the end of this sentence is a terminator.
=item ternary
-An L</operator> taking three L<operands|/operand>. Sometimes
-pronounced L</trinary>.
+An B<operator> X<ternary operators>taking three B<operands>. Sometimes
+pronounced B<trinary>.
=item text
-A L</string> or L</file> containing primarily printable characters.
+A B<string> or B<file> X<text, defined>X<strings, text>X<files,
+text>X<text>containing primarily printable characters.
=item thread
-Like a forked process, but without L</fork>'s inherent memory
-protection. A thread is lighter weight than a full process, in that a
-process could have multiple threads running around in it, all fighting
-over the same process's memory space unless steps are taken to protect
-threads from each other. See L<threads>.
+Like a X<threads (term)>forked process, but without B<fork>’s inherent
+memory protection. A thread is lighter weight than a full process, in that
+a process could have multiple threads running around in it, all fighting
+over the same process’s memory space unless steps are taken to protect
+threads from one another.
=item tie
-The bond between a magical variable and its implementation class. See
-L<perlfunc/tie> and L<perltie>.
+The bond X<tied variables, about>between a magical variable and its
+implementation class. See the C<tie> function in Camel chapter 27,
+“Functions†and Camel chapter 14, “Tied Variablesâ€.
+
+=item titlecase
+
+The case X<titlecase characters>X<characters, titlecase>used for capitals
+that are followed by lowercase characters instead of by more capitals.
+Sometimes called sentence case or headline case. English doesn’t use
+Unicode titlecase, but casing rules for English titles are more complicated
+than simply capitalizing each word’s first character.
=item TMTOWTDI
-There's More Than One Way To Do It, the Perl Motto. The notion that
-there can be more than one valid path to solving a programming problem
-in context. (This doesn't mean that more ways are always better or
-that all possible paths are equally desirable--just that there need
-not be One True Way.) Pronounced TimToady.
+There’s More Than One Way To Do It, the Perl MottoX<TMTOWTDI acronym>. The
+notion that there can be more than one valid path to solving a programming
+problem in context. (This doesn’t mean that more ways are always better or
+that all possible paths are equally desirable—just that there need not be
+One True Way.)
=item token
-A morpheme in a programming language, the smallest unit of text with
-semantic significance.
+A morpheme X<tokens, defined>in a programming language, the smallest unit
+of text with semantic significance.
=item tokener
-A module that breaks a program text into a sequence of
-L<tokens|/token> for later analysis by a parser.
+A module that X<tokeners, defined>breaks a program text into a sequence of
+B<tokens> for later analysis by a parser.
=item tokenizing
-Splitting up a program text into L<tokens|/token>. Also known as
-"lexing", in which case you get "lexemes" instead of tokens.
+Splitting up a X<tokenizing>program text into B<tokens>. Also known as
+“lexingâ€, in which case you get “lexemes†instead of tokens.
=item toolbox approach
-The notion that, with a complete set of simple tools that work well
-together, you can build almost anything you want. Which is fine if
-you're assembling a tricycle, but if you're building a defranishizing
-comboflux regurgalator, you really want your own machine shop in which
-to build special tools. Perl is sort of a machine shop.
+The notion that, X<toolbox approach>with a complete set of simple tools
+that work well together, you can build almost anything you want. Which is
+fine if you’re assembling a tricycle, but if you’re building a
+defranishizing comboflux regurgalator, you really want your own machine
+shop in which to build special tools. Perl is sort of a machine shop.
+
+=item topic
+
+The thing you’re X<topics (term)>working on. Structures like
+C<while(E<lt>E<gt>)>, C<for>, C<foreach>, and C<given> set the topic for
+you by assigning to C<$_>, the default (I<topic>) variable.
=item transliterate
-To turn one string representation into another by mapping each
-character of the source string to its corresponding character in the
-result string. See
-L<perlop/trE<sol>SEARCHLISTE<sol>REPLACEMENTLISTE<sol>cdsr>.
+To turn one X<tr/// (transliteration) operator, about>X<strings,
+transliteration of>X<transliteration (tr///) operator, about>string
+representation into another by mapping each character of the source string
+to its corresponding character in the result string. Not to be confused
+with translation: for example, Greek I<πολÏχÏωμος> transliterates into
+I<polychromos> but translates into I<many-colored>. See the C<tr///>
+operator in Camel chapter 5, “Pattern Matchingâ€.
=item trigger
-An event that causes a L</handler> to be run.
+An event X<triggers (term)>that causes a B<handler> to be run.
=item trinary
-Not a stellar system with three stars, but an L</operator> taking
-three L<operands|/operand>. Sometimes pronounced L</ternary>.
+Not a X<trinary operators>stellar system with three stars, but an
+B<operator> taking three B<operands>. Sometimes pronounced B<ternary>.
=item troff
-A venerable typesetting language from which Perl derives the name of
-its C<$%> variable and which is secretly used in the production of
-Camel books.
+A venerable X<troff language>typesetting language from which Perl derives
+the name of its C<$%> variable and which is secretly used in the production
+of Camel books.
=item true
-Any scalar value that doesn't evaluate to 0 or C<"">.
+Any X<true values>X<values, true>scalar value that doesn’t evaluate to 0 or
+C<"">.
=item truncating
-Emptying a file of existing contents, either automatically when
-opening a file for writing or explicitly via the
-L<truncate|perlfunc/truncate> function.
+Emptying a X<truncate function>X<files, truncating>file of existing
+contents, either automatically when opening a file for writing or
+explicitly via the C<truncate> function.
=item type
-See L</data type> and L</class>.
+SeeX<type> B<data type> and B<class>.
=item type casting
-Converting data from one type to another. C permits this. Perl does
-not need it. Nor want it.
+Converting X<type casting>data from one type to another. C permits this.
+Perl does not need it. Nor want it.
-=item typed lexical
+=item typedef
-A L</lexical variable> that is declared with a L</class> type: C<my
-Pony $bill>.
+A type X<typedef>definition in the C and C++ languages.
-=item typedef
+=item typed lexical
-A type definition in the C language.
+A B<lexical variable> X<typed lexicals>X<lexical variables, typed
+lexicals>X<variables, variable> lexical>that is declared with a B<class>
+type: C<my Pony $bill>.
=item typeglob
-Use of a single identifier, prefixed with C<*>. For example, C<*name>
-stands for any or all of C<$name>, C<@name>, C<%name>, C<&name>, or
-just C<name>. How you use it determines whether it is interpreted as
-all or only one of them. See L<perldata/Typeglobs and Filehandles>.
+Use of X<typeglobs, defined>a single identifier, prefixed with C<*>. For
+example, C<*name> stands for any or all of C<$name>, C<@name>, C<%name>,
+C<&name>, or just C<name>. How you use it determines whether it is
+interpreted as all or only one of them. See “Typeglobs and Filehandles†in
+Camel chapter 2, “Bits and Piecesâ€.
=item typemap
-A description of how C types may be transformed to and from Perl types
-within an L</extension> module written in L</XS>.
+A description of X<typemap>how C types may be transformed to and from Perl
+types within an B<extension> module written in B<XS>.
=back
@@ -3231,50 +3559,55 @@ within an L</extension> module written in L</XS>.
=item UDP
-User Datagram Protocol, the typical way to send L<datagrams|/datagram>
-over the Internet.
+User Datagram Protocol, the X<User Datagram Protocol (UDP)>X<UDP (User
+Datagram Protocol)>X<datagrams, UDP support>typical way to send
+B<datagrams> over the Internet.
=item UID
-A user ID. Often used in the context of L</file> or L</process>
-ownership.
+A user ID. X<UID (user ID)>X<user ID (UID)>Often used in the context of
+B<file> or B<process> ownership.
=item umask
-A mask of those L</permission bits> that should be forced off when
-creating files or directories, in order to establish a policy of whom
-you'll ordinarily deny access to. See the L<umask|perlfunc/umask>
-function.
+A X<umask function>mask of those B<permission bits> that should be forced
+off when creating files or directories, in order to establish a policy of
+whom you’ll ordinarily deny access to. See the C<umask> function.
=item unary operator
-An operator with only one L</operand>, like C<!> or
-L<chdir|perlfunc/chdir>. Unary operators are usually prefix
-operators; that is, they precede their operand. The C<++> and C<-->
-operators can be either prefix or postfix. (Their position I<does>
-change their meanings.)
+An X<unary operators, about>operator with only one B<operand>, like C<!> or
+C<chdir>. Unary operators are usually prefix operators; that is, they
+precede their operand. The C<++> and C<––> operators can be either prefix
+or postfix. (Their position I<does> change their meanings.)
=item Unicode
-A character set comprising all the major character sets of the world,
-more or less. See L<perlunicode> and L<http://www.unicode.org>.
+A character set X<Unicode, about>comprising all the major character sets of
+the world, more or less. See L<http://www.unicode.org>.
=item Unix
-A very large and constantly evolving language with several alternative
-and largely incompatible syntaxes, in which anyone can define anything
-any way they choose, and usually do. Speakers of this language think
-it's easy to learn because it's so easily twisted to one's own ends,
+A very large X<Unix language>and constantly evolving language with several
+alternative and largely incompatible syntaxes, in which anyone can define
+anything any way they choose, and usually do. Speakers of this language
+think it’s easy to learn because it’s so easily twisted to one’s own ends,
but dialectical differences make tribal intercommunication nearly
-impossible, and travelers are often reduced to a pidgin-like subset of
-the language. To be universally understood, a Unix shell programmer
-must spend years of study in the art. Many have abandoned this
-discipline and now communicate via an Esperanto-like language called
-Perl.
+impossible, and travelers are often reduced to a pidgin-like subset of the
+language. To be universally understood, a Unix shell programmer must spend
+years of study in the art. Many have abandoned this discipline and now
+communicate via an Esperanto-like language called Perl.
-In ancient times, Unix was also used to refer to some code that a
-couple of people at Bell Labs wrote to make use of a PDP-7 computer
-that wasn't doing much of anything else at the time.
+In ancient times, Unix was also used to refer to some code that a couple of
+people at Bell Labs wrote to make use of a PDP-7 computer that wasn’t doing
+much of anything else at the time.
+
+=item uppercase
+
+In Unicode, X<uppercase characters>X<characters, uppercase>not just
+characters with the General Category of Uppercase Letter, but any character
+with the Uppercase property, including some Letter Numbers and Symbols. Not
+to be confused with B<titlecase>.
=back
@@ -3284,49 +3617,50 @@ that wasn't doing much of anything else at the time.
=item value
-An actual piece of data, in contrast to all the variables, references,
-keys, indexes, operators, and whatnot that you need to access the
-value.
+An actual piece X<values, defined>of data, in contrast to all the
+variables, references, keys, indices, operators, and whatnot that you need
+to access the value.
=item variable
-A named storage location that can hold any of various kinds of
-L</value>, as your program sees fit.
+A named storage X<variables, defined>X<variables>location that can hold any
+of various kinds of B<value>, as your program sees fit.
=item variable interpolation
-The L</interpolation> of a scalar or array variable into a string.
+TheX<variable interpolation>X<interpolation, variable> B<interpolation> of
+a scalar or array variable into a string.
=item variadic
-Said of a L</function> that happily receives an indeterminate number
-of L</actual arguments>.
+Said of X<variadic (term)>a B<function> that happily receives an
+indeterminate number of B<actual arguments>.
=item vector
-Mathematical jargon for a list of L<scalar values|/scalar value>.
+Mathematical X<vectors>jargon for a list of B<scalar values>.
=item virtual
-Providing the appearance of something without the reality, as in:
-virtual memory is not real memory. (See also L</memory>.) The
-opposite of "virtual" is "transparent", which means providing the
-reality of something without the appearance, as in: Perl handles the
-variable-length UTF-8 character encoding transparently.
+Providing the X<virtual (term)>appearance of something without the reality,
+as in: virtual memory is not real memory. (See also B<memory>.) The
+opposite of “virtual†is “transparentâ€, which means providing the reality
+of something without the appearance, as in: Perl handles the
+variable-length UTF‑8 character encoding transparently.
=item void context
-A form of L</scalar context> in which an L</expression> is not
-expected to return any L</value> at all and is evaluated for its
-L</side effects> alone.
+A form X<void context>X<context, void>of B<scalar context> in which an
+B<expression> is not expected to return any B<value> at all and is
+evaluated for its B<side effects> alone.
=item v-string
-A "version" or "vector" L</string> specified with a C<v> followed by a
-series of decimal integers in dot notation, for instance,
-C<v1.20.300.4000>. Each number turns into a L</character> with the
-specified ordinal value. (The C<v> is optional when there are at
-least three integers.)
+A “version†or “vectorâ€X<v–strings>X<strings, v–strings> B<string>
+specified with a C<v> followed by a series of decimal integers in dot
+notation, for instance, C<v1.20.300.4000>. Each number turns into a
+B<character> with the specified ordinal value. (The C<v> is optional when
+there are at least three integers.)
=back
@@ -3336,51 +3670,61 @@ least three integers.)
=item warning
-A message printed to the L</STDERR> stream to the effect that something
-might be wrong but isn't worth blowing up over. See L<perlfunc/warn>
-and the L<warnings> pragma.
+A message X<warning messages>X<STDERR filehandle, warning messages
+and>printed to the C<STDERR> stream to the effect that something might be
+wrong but isn’t worth blowing up over. See C<warn> in Camel chapter 27,
+“Functions†and the C<warnings> pragma in Camel chapter 28, “Pragmantic
+Modulesâ€.
=item watch expression
-An expression which, when its value changes, causes a breakpoint in
-the Perl debugger.
+An expression which, X<watch expression>X<expressions, watch>when its value
+changes, causes a breakpoint in the Perl debugger.
+
+=item weak reference
+
+A X<weak references>X<references, weak>reference that doesn’t get counted
+normally. When all the normal references to data disappear, the data
+disappears. These are useful for circular references that would never
+disappear otherwise.
=item whitespace
-A L</character> that moves your cursor but doesn't otherwise put
-anything on your screen. Typically refers to any of: space, tab, line
-feed, carriage return, or form feed.
+A B<character> X<whitespace characters>X<characters, whitespace>that moves
+your cursor but doesn’t otherwise put anything on your screen. Typically
+refers to any of: space, tab, line feed, carriage return, or form feed. In
+Unicode, matches many other characters that Unicode considers whitespace,
+including the ɴ-ʙʀ .
=item word
-In normal "computerese", the piece of data of the size most
-efficiently handled by your computer, typically 32 bits or so, give or
-take a few powers of 2. In Perl culture, it more often refers to an
-alphanumeric L</identifier> (including underscores), or to a string of
-nonwhitespace L<characters|/character> bounded by whitespace or string
-boundaries.
+In normal “computereseâ€, the X<words (term)>piece of data of the size most
+efficiently handled by your computer, typically 32 bits or so, give or take a
+few powers of 2. In Perl culture, it more often refers to an alphanumeric
+B<identifier> (including underscores), or to a string of nonwhitespace
+B<characters> bounded by whitespace or string boundaries.
=item working directory
-Your current L</directory>, from which relative pathnames are
-interpreted by the L</operating system>. The operating system knows
-your current directory because you told it with a
-L<chdir|perlfunc/chdir> or because you started out in the place where
-your parent L</process> was when you were born.
+Your X<working directory>X<directories, working>current B<directory>, from
+which relative pathnames are interpreted by the B<operating system>. The
+operating system knows your current directory because you told it with a
+C<chdir>, or because you started out in the place where your parent
+B<process> was when you were born.
=item wrapper
-A program or subroutine that runs some other program or subroutine for
-you, modifying some of its input or output to better suit your
-purposes.
+A program X<wrappers (term)>or subroutine that runs some other program or
+subroutine for you, modifying some of its input or output to better suit
+your purposes.
=item WYSIWYG
-What You See Is What You Get. Usually used when something that
-appears on the screen matches how it will eventually look, like Perl's
-L<format|perlfunc/format> declarations. Also used to mean the
-opposite of magic because everything works exactly as it appears, as
-in the three-argument form of L<open|perlfunc/open>.
+What X<WYSIWYG acronym>You See Is What You Get. Usually used when something
+that appears on the screen matches how it will eventually look, like Perl’s
+C<format> declarations. Also used to mean the opposite of magic because
+everything works exactly as it appears, as in the three- argument form of
+C<open>.
=back
@@ -3390,15 +3734,14 @@ in the three-argument form of L<open|perlfunc/open>.
=item XS
-A language to extend Perl with L<C> and C++. XS is an interface description
-file format used to create an extension interface between
-Perl and C code (or a C library) which one wishes to use with Perl.
-See L<perlxs> for the exact explanation or read the L<perlxstut>
-tutorial.
+An X<XS (eXternal Subroutine)>X<eXternal Subroutine (XS)>extraordinarily
+exported, expeditiously excellent, expressly eXternal Subroutine, executed
+in existing C or C++ or in an exciting extension language called
+(exasperatingly) XS.
=item XSUB
-An external L</subroutine> defined in L</XS>.
+An X<XSUB (term)>external B<subroutine> defined in B<XS>.
=back
@@ -3408,9 +3751,9 @@ An external L</subroutine> defined in L</XS>.
=item yacc
-Yet Another Compiler Compiler. A parser generator without which Perl
-probably would not have existed. See the file I<perly.y> in the Perl
-source distribution.
+Yet X<yacc acronym>Another Compiler Compiler. A parser generator without
+which Perl probably would not have existed. See the file I<perly.y> in the
+Perl source distribution.
=back
@@ -3420,23 +3763,24 @@ source distribution.
=item zero width
-A subpattern L</assertion> matching the L</null string> between
-L<characters|/character>.
+A X<zero–width assertions>X<subpatterns, zero–width assertions>X<assertions
+(in regexes), zero–width>subpattern B<assertion> matching the B<null
+string> between B<characters>.
=item zombie
-A process that has died (exited) but whose parent has not yet received
-proper notification of its demise by virtue of having called
-L<wait|perlfunc/wait> or L<waitpid|perlfunc/waitpid>. If you
-L<fork|perlfunc/fork>, you must clean up after your child processes
-when they exit, or else the process table will fill up and your system
-administrator will Not Be Happy with you.
+A process X<zombie processes>X<processes, zombie>that has died (exited) but
+whose parent has not yet received proper notification of its demise by
+virtue of having called C<wait> or C<waitpid>. If you C<fork>, you must
+clean up after your child processes when they exit; otherwise, the process
+table will fill up and your system administrator will Not Be Happy with
+you.
=back
=head1 AUTHOR AND COPYRIGHT
-Based on the Glossary of Programming Perl, Third Edition,
-by Larry Wall, Tom Christiansen & Jon Orwant.
-Copyright (c) 2000, 1996, 1991 O'Reilly Media, Inc.
+Based on the Glossary of I<Programming Perl>, Fourth Edition,
+by Tom Christiansen, brian d foy, Larry Wall, & Jon Orwant.
+Copyright (c) 2000, 1996, 1991, 2012 O'Reilly Media, Inc.
This document may be distributed under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/podlators/VERSION b/gnu/usr.bin/perl/cpan/podlators/VERSION
index fd896eacc4e..69771f2f76e 100644
--- a/gnu/usr.bin/perl/cpan/podlators/VERSION
+++ b/gnu/usr.bin/perl/cpan/podlators/VERSION
@@ -1 +1 @@
-$VERSION = '2.4.0';
+$VERSION = '2.5.1';
diff --git a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Color.pm b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Color.pm
index 2e8864148b4..a114ed937f0 100644
--- a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Color.pm
+++ b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Color.pm
@@ -1,13 +1,13 @@
# Pod::Text::Color -- Convert POD data to formatted color ASCII text
#
+# This is just a basic proof of concept. It should later be modified to make
+# better use of color, take options changing what colors are used for what
+# text, and the like.
+#
# Copyright 1999, 2001, 2004, 2006, 2008, 2009 Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
-#
-# This is just a basic proof of concept. It should later be modified to make
-# better use of color, take options changing what colors are used for what
-# text, and the like.
##############################################################################
# Modules and declarations
@@ -25,7 +25,7 @@ use vars qw(@ISA $VERSION);
@ISA = qw(Pod::Text);
-$VERSION = '2.06';
+$VERSION = '2.07';
##############################################################################
# Overrides
diff --git a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Overstrike.pm b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Overstrike.pm
index 7578f0f8f58..f5dce0230f8 100644
--- a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Overstrike.pm
+++ b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Overstrike.pm
@@ -1,13 +1,5 @@
# Pod::Text::Overstrike -- Convert POD data to formatted overstrike text
#
-# Created by Joe Smith <Joe.Smith@inwap.com> 30-Nov-2000
-# (based on Pod::Text::Color by Russ Allbery <rra@stanford.edu>)
-# Copyright 2000 Joe Smith <Joe.Smith@inwap.com>.
-# Copyright 2001, 2004, 2008 Russ Allbery <rra@stanford.edu>.
-#
-# This program is free software; you may redistribute it and/or modify it
-# under the same terms as Perl itself.
-#
# This was written because the output from:
#
# pod2text Text.pm > plain.txt; less plain.txt
@@ -18,6 +10,14 @@
#
# and because both Pod::Text::Color and Pod::Text::Termcap are not device
# independent.
+#
+# Created by Joe Smith <Joe.Smith@inwap.com> 30-Nov-2000
+# (based on Pod::Text::Color by Russ Allbery <rra@stanford.edu>)
+# Copyright 2000 Joe Smith <Joe.Smith@inwap.com>.
+# Copyright 2001, 2004, 2008 Russ Allbery <rra@stanford.edu>.
+#
+# This program is free software; you may redistribute it and/or modify it
+# under the same terms as Perl itself.
##############################################################################
# Modules and declarations
@@ -34,7 +34,7 @@ use vars qw(@ISA $VERSION);
@ISA = qw(Pod::Text);
-$VERSION = '2.04';
+$VERSION = '2.05';
##############################################################################
# Overrides
diff --git a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Termcap.pm b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Termcap.pm
index e4885c9d262..86380606d8e 100644
--- a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Termcap.pm
+++ b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Termcap.pm
@@ -1,14 +1,14 @@
# Pod::Text::Termcap -- Convert POD data to ASCII text with format escapes.
#
+# This is a simple subclass of Pod::Text that overrides a few key methods to
+# output the right termcap escape sequences for formatted text on the current
+# terminal type.
+#
# Copyright 1999, 2001, 2002, 2004, 2006, 2008, 2009
# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
-#
-# This is a simple subclass of Pod::Text that overrides a few key methods to
-# output the right termcap escape sequences for formatted text on the current
-# terminal type.
##############################################################################
# Modules and declarations
@@ -27,7 +27,7 @@ use vars qw(@ISA $VERSION);
@ISA = qw(Pod::Text);
-$VERSION = '2.06';
+$VERSION = '2.07';
##############################################################################
# Overrides
diff --git a/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL b/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL
index 08bdde24c82..6af3474d357 100644
--- a/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL
+++ b/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL
@@ -37,7 +37,7 @@ print OUT <<'!NO!SUBS!';
# pod2man -- Convert POD data to formatted *roff input.
#
-# Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010
+# Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010, 2012, 2013
# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
@@ -51,6 +51,9 @@ use Pod::Usage qw(pod2usage);
use strict;
+# Clean up $0 for error reporting.
+$0 =~ s%.*/%%;
+
# Insert -- into @ARGV before any single dash argument to hide it from
# Getopt::Long; we want to interpret it as meaning stdin.
my $stdin;
@@ -59,12 +62,12 @@ my $stdin;
# Parse our options, trying to retain backward compatibility with pod2man but
# allowing short forms as well. --lax is currently ignored.
my %options;
-$options{errors} = 'pod';
Getopt::Long::config ('bundling_override');
-GetOptions (\%options, 'center|c=s', 'date|d=s', 'fixed=s', 'fixedbold=s',
- 'fixeditalic=s', 'fixedbolditalic=s', 'help|h', 'lax|l',
- 'name|n=s', 'official|o', 'quotes|q=s', 'release|r:s',
- 'section|s=s', 'stderr', 'verbose|v', 'utf8|u') or exit 1;
+GetOptions (\%options, 'center|c=s', 'date|d=s', 'errors=s', 'fixed=s',
+ 'fixedbold=s', 'fixeditalic=s', 'fixedbolditalic=s', 'help|h',
+ 'lax|l', 'name|n=s', 'nourls', 'official|o', 'quotes|q=s',
+ 'release|r:s', 'section|s=s', 'stderr', 'verbose|v', 'utf8|u')
+ or exit 1;
pod2usage (0) if $options{help};
# Official sets --center, but don't override things explicitly set.
@@ -80,32 +83,48 @@ delete $options{verbose};
# compatibility.
delete $options{lax};
+# If neither stderr nor errors is set, default to errors = die.
+if (!defined $options{stderr} && !defined $options{errors}) {
+ $options{errors} = 'die';
+}
+
# Initialize and run the formatter, pulling a pair of input and output off at
-# a time.
+# a time. For each file, we check whether the document was completely empty
+# and, if so, will remove the created file and exit with a non-zero exit
+# status.
my $parser = Pod::Man->new (%options);
+my $status = 0;
my @files;
do {
@files = splice (@ARGV, 0, 2);
print " $files[1]\n" if $verbose;
$parser->parse_from_file (@files);
+ if ($parser->{CONTENTLESS}) {
+ $status = 1;
+ warn "$0: unable to format $files[0]\n";
+ if (defined ($files[1]) and $files[1] ne '-') {
+ unlink $files[1] unless (-s $files[1]);
+ }
+ }
} while (@ARGV);
+exit $status;
__END__
+=for stopwords
+en em --stderr stderr --utf8 UTF-8 overdo markup MT-LEVEL Allbery Solaris
+URL troff troff-specific formatters uppercased Christiansen --nourls
+
=head1 NAME
pod2man - Convert POD data to formatted *roff input
-=for stopwords
-en em --stderr stderr --utf8 UTF-8 overdo markup MT-LEVEL Allbery Solaris
-URL troff troff-specific formatters uppercased Christiansen
-
=head1 SYNOPSIS
-pod2man [B<--center>=I<string>] [B<--date>=I<string>]
+pod2man [B<--center>=I<string>] [B<--date>=I<string>] [B<--errors>=I<style>]
[B<--fixed>=I<font>] [B<--fixedbold>=I<font>] [B<--fixeditalic>=I<font>]
- [B<--fixedbolditalic>=I<font>] [B<--name>=I<name>] [B<--official>]
- [B<--quotes>=I<quotes>] [B<--release>[=I<version>]]
+ [B<--fixedbolditalic>=I<font>] [B<--name>=I<name>] [B<--nourls>]
+ [B<--official>] [B<--quotes>=I<quotes>] [B<--release>[=I<version>]]
[B<--section>=I<manext>] [B<--stderr>] [B<--utf8>] [B<--verbose>]
[I<input> [I<output>] ...]
@@ -159,6 +178,16 @@ Set the left-hand footer string to this value. By default, the modification
date of the input file will be used, or the current date if input comes from
C<STDIN>.
+=item B<-errors>=I<style>
+
+Set the error handling style. C<die> says to throw an exception on any
+POD formatting error. C<stderr> says to report errors on standard error,
+but not to throw an exception. C<pod> says to include a POD ERRORS
+section in the resulting documentation summarizing the errors. C<none>
+ignores POD errors entirely, as much as possible.
+
+The default is C<die>.
+
=item B<--fixed>=I<font>
The fixed-width font to use for verbatim text and code. Defaults to
@@ -206,6 +235,21 @@ Note that this option is probably not useful when converting multiple POD
files at once. The convention for Unix man pages for commands is for the
man page title to be in all-uppercase even if the command isn't.
+=item B<--nourls>
+
+Normally, LZ<><> formatting codes with a URL but anchor text are formatted
+to show both the anchor text and the URL. In other words:
+
+ L<foo|http://example.com/>
+
+is formatted as:
+
+ foo <http://example.com/>
+
+This flag, if given, suppresses the URL when anchor text is given, so this
+example would be formatted as just C<foo>. This can produce less
+cluttered output in cases where the URLs are not particularly important.
+
=item B<-o>, B<--official>
Set the default header to indicate that this page is part of the standard
@@ -248,10 +292,10 @@ which case section 3 will be selected.
=item B<--stderr>
-By default, B<pod2man> puts any errors detected in the POD input in a POD
-ERRORS section in the output manual page. If B<--stderr> is given, errors
-are sent to standard error instead and the POD ERRORS section is
-suppressed.
+By default, B<pod2man> dies if any errors are detected in the POD input.
+If B<--stderr> is given and no B<--errors> flag is present, errors are
+sent to standard error, but B<pod2man> does not abort. This is equivalent
+to C<--errors=stderr> and is supported for backward compatibility.
=item B<-u>, B<--utf8>
@@ -281,6 +325,16 @@ Print out the name of each output file as it is being generated.
=back
+=head1 EXIT STATUS
+
+As long as all documents processed result in some output, even if that
+output includes errata (a C<POD ERRORS> section generated with
+C<--errors=pod>), B<pod2man> will exit with status 0. If any of the
+documents being processed do not result in an output document, B<pod2man>
+will exit with status 1. If there are syntax errors in a POD document
+being processed and the error handling style is set to the default of
+C<die>, B<pod2man> will abort immediately with exit status 255.
+
=head1 DIAGNOSTICS
If B<pod2man> fails with errors, see L<Pod::Man> and L<Pod::Simple> for
@@ -329,15 +383,14 @@ B<pod2man> by Larry Wall and Tom Christiansen.
=head1 COPYRIGHT AND LICENSE
-Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010 Russ Allbery
-<rra@stanford.edu>.
+Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010, 2012, 2013 Russ
+Allbery <rra@stanford.edu>.
This program is free software; you may redistribute it and/or modify it
under the same terms as Perl itself.
=cut
!NO!SUBS!
-#'# (cperl-mode)
close OUT or die "Can't close $file: $!";
chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
diff --git a/gnu/usr.bin/perl/cpan/podlators/scripts/pod2text.PL b/gnu/usr.bin/perl/cpan/podlators/scripts/pod2text.PL
index 62be8a4b8ea..f1acdbe744f 100644
--- a/gnu/usr.bin/perl/cpan/podlators/scripts/pod2text.PL
+++ b/gnu/usr.bin/perl/cpan/podlators/scripts/pod2text.PL
@@ -37,7 +37,7 @@ print OUT <<'!NO!SUBS!';
# pod2text -- Convert POD data to formatted ASCII text.
#
-# Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010
+# Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010, 2012, 2013
# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
@@ -54,6 +54,9 @@ use Pod::Usage qw(pod2usage);
use strict;
+# Clean up $0 for error reporting.
+$0 =~ s%.*/%%;
+
# Take an initial pass through our options, looking for one of the form
# -<number>. We turn that into -w <number> for compatibility with the
# original pod2text script.
@@ -75,10 +78,10 @@ my $stdin;
my %options;
$options{sentence} = 0;
Getopt::Long::config ('bundling');
-GetOptions (\%options, 'alt|a', 'code', 'color|c', 'help|h', 'indent|i=i',
- 'loose|l', 'margin|left-margin|m=i', 'overstrike|o',
- 'quotes|q=s', 'sentence|s', 'stderr', 'termcap|t', 'utf8|u',
- 'width|w=i')
+GetOptions (\%options, 'alt|a', 'code', 'color|c', 'errors=s', 'help|h',
+ 'indent|i=i', 'loose|l', 'margin|left-margin|m=i', 'nourls',
+ 'overstrike|o', 'quotes|q=s', 'sentence|s', 'stderr', 'termcap|t',
+ 'utf8|u', 'width|w=i')
or exit 1;
pod2usage (1) if $options{help};
@@ -98,27 +101,42 @@ if ($options{color}) {
}
delete @options{'color', 'termcap', 'overstrike'};
+# If neither stderr nor errors is set, default to errors = die.
+if (!defined $options{stderr} && !defined $options{errors}) {
+ $options{errors} = 'die';
+}
+
# Initialize and run the formatter.
my $parser = $formatter->new (%options);
+my $status = 0;
do {
my ($input, $output) = splice (@ARGV, 0, 2);
$parser->parse_from_file ($input, $output);
+ if ($parser->{CONTENTLESS}) {
+ $status = 1;
+ warn "$0: unable to format $input\n";
+ if (defined ($output) and $output ne '-') {
+ unlink $output unless (-s $output);
+ }
+ }
} while (@ARGV);
+exit $status;
__END__
+=for stopwords
+-aclostu --alt --stderr Allbery --overstrike overstrike --termcap --utf8
+UTF-8 subclasses --nourls
+
=head1 NAME
pod2text - Convert POD data to formatted ASCII text
-=for stopwords
--aclostu --alt --stderr Allbery --overstrike overstrike --termcap --utf8
-UTF-8
-
=head1 SYNOPSIS
-pod2text [B<-aclostu>] [B<--code>] [B<-i> I<indent>] S<[B<-q> I<quotes>]>
- [B<--stderr>] S<[B<-w> I<width>]> [I<input> [I<output> ...]]
+pod2text [B<-aclostu>] [B<--code>] [B<--errors>=I<style>] [B<-i> I<indent>]
+ S<[B<-q> I<quotes>]> [B<--nourls>] [B<--stderr>] S<[B<-w> I<width>]>
+ [I<input> [I<output> ...]]
pod2text B<-h>
@@ -161,6 +179,16 @@ requires that Term::ANSIColor be installed on your system.
Set the number of spaces to indent regular text, and the default indentation
for C<=over> blocks. Defaults to 4 spaces if this option isn't given.
+=item B<-errors>=I<style>
+
+Set the error handling style. C<die> says to throw an exception on any
+POD formatting error. C<stderr> says to report errors on standard error,
+but not to throw an exception. C<pod> says to include a POD ERRORS
+section in the resulting documentation summarizing the errors. C<none>
+ignores POD errors entirely, as much as possible.
+
+The default is C<die>.
+
=item B<-h>, B<--help>
Print out usage information and exit.
@@ -178,6 +206,21 @@ The width of the left margin in spaces. Defaults to 0. This is the margin
for all text, including headings, not the amount by which regular text is
indented; for the latter, see B<-i> option.
+=item B<--nourls>
+
+Normally, LZ<><> formatting codes with a URL but anchor text are formatted
+to show both the anchor text and the URL. In other words:
+
+ L<foo|http://example.com/>
+
+is formatted as:
+
+ foo <http://example.com/>
+
+This flag, if given, suppresses the URL when anchor text is given, so this
+example would be formatted as just C<foo>. This can produce less
+cluttered output in cases where the URLs are not particularly important.
+
=item B<-o>, B<--overstrike>
Format the output with overstrike printing. Bold text is rendered as
@@ -205,10 +248,11 @@ is compressed into a single space.
=item B<--stderr>
-By default, B<pod2text> puts any errors detected in the POD input in a POD
-ERRORS section in the output manual page. If B<--stderr> is given, errors
-are sent to standard error instead and the POD ERRORS section is
-suppressed.
+By default, B<pod2text> dies if any errors are detected in the POD input.
+If B<--stderr> is given and no B<--errors> flag is present, errors are
+sent to standard error, but B<pod2text> does not abort. This is
+equivalent to C<--errors=stderr> and is supported for backward
+compatibility.
=item B<-t>, B<--termcap>
@@ -240,6 +284,16 @@ your terminal device.
=back
+=head1 EXIT STATUS
+
+As long as all documents processed result in some output, even if that
+output includes errata (a C<POD ERRORS> section generated with
+C<--errors=pod>), B<pod2text> will exit with status 0. If any of the
+documents being processed do not result in an output document, B<pod2text>
+will exit with status 1. If there are syntax errors in a POD document
+being processed and the error handling style is set to the default of
+C<die>, B<pod2text> will abort immediately with exit status 255.
+
=head1 DIAGNOSTICS
If B<pod2text> fails with errors, see L<Pod::Text> and L<Pod::Simple> for
@@ -295,8 +349,8 @@ Russ Allbery <rra@stanford.edu>.
=head1 COPYRIGHT AND LICENSE
-Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010 Russ Allbery
-<rra@stanford.edu>.
+Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010, 2012, 2013 Russ
+Allbery <rra@stanford.edu>.
This program is free software; you may redistribute it and/or modify it
under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/basic.t b/gnu/usr.bin/perl/cpan/podlators/t/basic.t
index eb94ef22a36..4103ed6e19b 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/basic.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/basic.t
@@ -2,7 +2,8 @@
#
# basic.t -- Basic tests for podlators.
#
-# Copyright 2001, 2002, 2004, 2006, 2009 by Russ Allbery <rra@stanford.edu>
+# Copyright 2001, 2002, 2004, 2006, 2009, 2012
+# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -70,22 +71,22 @@ for my $module (sort keys %translators) {
# For Pod::Man, strip out the autogenerated header up to the .TH title
# line. That means that we don't check those things; oh well. The
# header changes with each version change or touch of the input file.
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
$parser->parse_from_file (source_path ('basic.pod'), \*OUT);
close OUT;
if ($module eq 'Pod::Man') {
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
- open (OUTPUT, "> out.$translators{$module}")
- or die "Cannot create out.$translators{$module}: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
+ open (OUTPUT, "> out$$.$translators{$module}")
+ or die "Cannot create out$$.$translators{$module}: $!\n";
local $_;
while (<TMP>) { last if /^\.nh/ }
print OUTPUT while <TMP>;
close OUTPUT;
close TMP;
- 1 while unlink 'out.tmp';
+ 1 while unlink "out$$.tmp";
} else {
- rename ('out.tmp', "out.$translators{$module}")
- or die "Cannot rename out.tmp: $!\n";
+ rename ("out$$.tmp", "out$$.$translators{$module}")
+ or die "Cannot rename out$$.tmp: $!\n";
}
# Slurp the output and expected output and compare them.
@@ -94,8 +95,8 @@ for my $module (sort keys %translators) {
local $/;
open (MASTER, source_path ("basic.$translators{$module}"))
or die "Cannot open basic.$translators{$module}: $!\n";
- open (OUTPUT, "out.$translators{$module}")
- or die "Cannot open out.$translators{$module}: $!\n";
+ open (OUTPUT, "out$$.$translators{$module}")
+ or die "Cannot open out$$.$translators{$module}: $!\n";
$master = <MASTER>;
$output = <OUTPUT>;
close MASTER;
@@ -108,9 +109,9 @@ for my $module (sort keys %translators) {
$output =~ tr/\033/\047/;
}
if (ok ($master eq $output, "$module output is correct")) {
- 1 while unlink "out.$translators{$module}";
+ 1 while unlink "out$$.$translators{$module}";
} else {
- diag ("Non-matching output left in out.$translators{$module}\n");
+ diag ("Non-matching output left in out$$.$translators{$module}\n");
}
}
}
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/color.t b/gnu/usr.bin/perl/cpan/podlators/t/color.t
index f6be17b7cdb..4fd1bd1e79e 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/color.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/color.t
@@ -2,7 +2,8 @@
#
# color.t -- Additional specialized tests for Pod::Text::Color.
#
-# Copyright 2002, 2004, 2006, 2009 by Russ Allbery <rra@stanford.edu>
+# Copyright 2002, 2004, 2006, 2009, 2012, 2013
+# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -36,23 +37,23 @@ isa_ok ($parser, 'Pod::Text::Color', 'Parser object');
my $n = 1;
while (<DATA>) {
next until $_ eq "###\n";
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
while (<DATA>) {
last if $_ eq "###\n";
print TMP $_;
}
close TMP;
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
+ $parser->parse_from_file ("tmp$$.pod", \*OUT);
close OUT;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
my $output;
{
local $/;
$output = <TMP>;
}
close TMP;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
my $expected = '';
while (<DATA>) {
last if $_ eq "###\n";
@@ -91,7 +92,7 @@ A
B
-=item 1
+=item 1Z<>
C
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/filehandle.t b/gnu/usr.bin/perl/cpan/podlators/t/filehandle.t
index 1ed0667b33a..8c074162a24 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/filehandle.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/filehandle.t
@@ -2,7 +2,7 @@
#
# filehandle.t -- Test the parse_from_filehandle interface.
#
-# Copyright 2006, 2009 by Russ Allbery <rra@stanford.edu>
+# Copyright 2006, 2009, 2012 by Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -31,7 +31,7 @@ my $text = Pod::Text->new;
isa_ok ($text, 'Pod::Text', 'Pod::Text parser object');
while (<DATA>) {
next until $_ eq "###\n";
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp.pod: $!\n";
while (<DATA>) {
last if $_ eq "###\n";
print TMP $_;
@@ -39,12 +39,12 @@ while (<DATA>) {
close TMP;
# Test Pod::Man output.
- open (IN, '< tmp.pod') or die "Cannot open tmp.pod: $!\n";
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
+ open (IN, "< tmp$$.pod") or die "Cannot open tmp$$.pod: $!\n";
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
$man->parse_from_filehandle (\*IN, \*OUT);
close IN;
close OUT;
- open (OUT, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (OUT, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
while (<OUT>) { last if /^\.nh/ }
my $output;
{
@@ -60,18 +60,18 @@ while (<DATA>) {
is ($output, $expected, 'Pod::Man output is correct');
# Test Pod::Text output.
- open (IN, '< tmp.pod') or die "Cannot open tmp.pod: $!\n";
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
+ open (IN, "< tmp$$.pod") or die "Cannot open tmp$$.pod: $!\n";
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
$text->parse_from_filehandle (\*IN, \*OUT);
close IN;
close OUT;
- open (OUT, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (OUT, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
{
local $/;
$output = <OUT>;
}
close OUT;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
$expected = '';
while (<DATA>) {
last if $_ eq "###\n";
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/man-heading.t b/gnu/usr.bin/perl/cpan/podlators/t/man-heading.t
index f7e470e3c00..fa4792c3cb5 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/man-heading.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/man-heading.t
@@ -2,7 +2,7 @@
#
# man-options.t -- Additional tests for Pod::Man options.
#
-# Copyright 2002, 2004, 2006, 2008, 2009 Russ Allbery <rra@stanford.edu>
+# Copyright 2002, 2004, 2006, 2008, 2009, 2012 Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -36,10 +36,10 @@ while (<DATA>) {
close TMP;
my $parser = Pod::Man->new (%options);
isa_ok ($parser, 'Pod::Man', 'Parser object');
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
$parser->parse_from_file ('tmp.pod', \*OUT);
close OUT;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
my $heading;
while (<TMP>) {
if (/^\.TH/) {
@@ -48,7 +48,7 @@ while (<DATA>) {
}
}
close TMP;
- unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ('tmp.pod', "out$$.tmp");
my $expected = '';
while (<DATA>) {
last if $_ eq "###\n";
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/man-options.t b/gnu/usr.bin/perl/cpan/podlators/t/man-options.t
index 0cc09fae2b8..898abb9dded 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/man-options.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/man-options.t
@@ -1,8 +1,9 @@
#!/usr/bin/perl -w
#
-# man-options.t -- Additional tests for Pod::Man options.
+# Additional tests for Pod::Man options.
#
-# Copyright 2002, 2004, 2006, 2008, 2009 Russ Allbery <rra@stanford.edu>
+# Copyright 2002, 2004, 2006, 2008, 2009, 2012, 2013
+# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -18,13 +19,13 @@ BEGIN {
use strict;
-use Test::More tests => 10;
+use Test::More tests => 28;
BEGIN { use_ok ('Pod::Man') }
# Redirect stderr to a file.
sub stderr_save {
open (OLDERR, '>&STDERR') or die "Can't dup STDERR: $!\n";
- open (STDERR, '> out.err') or die "Can't redirect STDERR: $!\n";
+ open (STDERR, "> out$$.err") or die "Can't redirect STDERR: $!\n";
}
# Restore stderr.
@@ -43,7 +44,7 @@ while (<DATA>) {
my ($option, $value) = split;
$options{$option} = $value;
}
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
while (<DATA>) {
last if $_ eq "###\n";
print TMP $_;
@@ -51,13 +52,14 @@ while (<DATA>) {
close TMP;
my $parser = Pod::Man->new (%options);
isa_ok ($parser, 'Pod::Man', 'Parser object');
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
stderr_save;
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ eval { $parser->parse_from_file ("tmp$$.pod", \*OUT) };
+ my $exception = $@;
stderr_restore;
close OUT;
my $accents = 0;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
while (<TMP>) {
last if /^\.nh/;
}
@@ -67,21 +69,26 @@ while (<DATA>) {
$output = <TMP>;
}
close TMP;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
my $expected = '';
while (<DATA>) {
last if $_ eq "###\n";
$expected .= $_;
}
is ($output, $expected, "Output correct for test $n");
- open (ERR, 'out.err') or die "Cannot open out.err: $!\n";
+ open (ERR, "out$$.err") or die "Cannot open out.err: $!\n";
my $errors;
{
local $/;
$errors = <ERR>;
}
close ERR;
- 1 while unlink ('out.err');
+ $errors =~ s/\Qtmp$$.pod/tmp.pod/g;
+ 1 while unlink ("out$$.err");
+ if ($exception) {
+ $exception =~ s/ at .*//;
+ $errors .= "EXCEPTION: $exception";
+ }
$expected = '';
while (<DATA>) {
last if $_ eq "###\n";
@@ -157,3 +164,123 @@ Bar.
###
tmp.pod around line 7: You forgot a '=back' before '=head1'
###
+
+###
+nourls 1
+###
+=head1 URL suppression
+
+L<anchor|http://www.example.com/>
+###
+.SH "URL suppression"
+.IX Header "URL suppression"
+anchor
+###
+###
+
+###
+errors stderr
+###
+=over 4
+
+=item Foo
+
+Bar.
+
+=head1 NEXT
+###
+.IP "Foo" 4
+.IX Item "Foo"
+Bar.
+.SH "NEXT"
+.IX Header "NEXT"
+###
+tmp.pod around line 7: You forgot a '=back' before '=head1'
+###
+
+###
+errors die
+###
+=over 4
+
+=item Foo
+
+Bar.
+
+=head1 NEXT
+###
+.IP "Foo" 4
+.IX Item "Foo"
+Bar.
+.SH "NEXT"
+.IX Header "NEXT"
+###
+tmp.pod around line 7: You forgot a '=back' before '=head1'
+EXCEPTION: POD document had syntax errors
+###
+
+###
+errors pod
+###
+=over 4
+
+=item Foo
+
+Bar.
+
+=head1 NEXT
+###
+.IP "Foo" 4
+.IX Item "Foo"
+Bar.
+.SH "NEXT"
+.IX Header "NEXT"
+.SH "POD ERRORS"
+.IX Header "POD ERRORS"
+Hey! \fBThe above document had some coding errors, which are explained below:\fR
+.IP "Around line 7:" 4
+.IX Item "Around line 7:"
+You forgot a '=back' before '=head1'
+###
+###
+
+###
+errors none
+###
+=over 4
+
+=item Foo
+
+Bar.
+
+=head1 NEXT
+###
+.IP "Foo" 4
+.IX Item "Foo"
+Bar.
+.SH "NEXT"
+.IX Header "NEXT"
+###
+###
+
+###
+errors none
+###
+=over 4
+
+=item foo
+
+Not a bullet.
+
+=item *
+
+Also not a bullet.
+
+=back
+###
+.IP "foo" 4
+.IX Item "foo"
+Not a bullet.
+.IP "*" 4
+Also not a bullet.
+###
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/man-perlio.t b/gnu/usr.bin/perl/cpan/podlators/t/man-perlio.t
index 04450c2bd68..e6aad3aeeb2 100644
--- a/gnu/usr.bin/perl/cpan/podlators/t/man-perlio.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/man-perlio.t
@@ -2,7 +2,8 @@
#
# man-perlio.t -- Test Pod::Man with a PerlIO UTF-8 encoding layer.
#
-# Copyright 2002, 2004, 2006, 2008, 2009, 2010 Russ Allbery <rra@stanford.edu>
+# Copyright 2002, 2004, 2006, 2008, 2009, 2010, 2012
+# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -47,7 +48,7 @@ while (<DATA>) {
my ($option, $value) = split;
$options{$option} = $value;
}
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
eval { binmode (\*TMP, ':encoding(utf-8)') };
print TMP "=encoding utf-8\n\n";
while (<DATA>) {
@@ -57,12 +58,12 @@ while (<DATA>) {
close TMP;
my $parser = Pod::Man->new (%options);
isa_ok ($parser, 'Pod::Man', 'Parser object');
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
eval { binmode (\*OUT, ':encoding(utf-8)') };
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ $parser->parse_from_file ("tmp$$.pod", \*OUT);
close OUT;
my $accents = 0;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
eval { binmode (\*TMP, ':encoding(utf-8)') };
while (<TMP>) {
$accents = 1 if /Accent mark definitions/;
@@ -74,7 +75,7 @@ while (<DATA>) {
$output = <TMP>;
}
close TMP;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
if ($options{utf8}) {
ok (!$accents, "Saw no accent definitions for test $n");
} else {
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/man-utf8.t b/gnu/usr.bin/perl/cpan/podlators/t/man-utf8.t
index 6c03fbef370..c0d9ba859d7 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/man-utf8.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/man-utf8.t
@@ -2,7 +2,7 @@
#
# man-utf8.t -- Test Pod::Man with UTF-8 input.
#
-# Copyright 2002, 2004, 2006, 2008, 2009 Russ Allbery <rra@stanford.edu>
+# Copyright 2002, 2004, 2006, 2008, 2009, 2012 Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -47,7 +47,7 @@ while (<DATA>) {
my ($option, $value) = split;
$options{$option} = $value;
}
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
eval { binmode (\*TMP, ':encoding(utf-8)') };
print TMP "=encoding utf-8\n\n";
while (<DATA>) {
@@ -57,11 +57,11 @@ while (<DATA>) {
close TMP;
my $parser = Pod::Man->new (%options);
isa_ok ($parser, 'Pod::Man', 'Parser object');
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
+ $parser->parse_from_file ("tmp$$.pod", \*OUT);
close OUT;
my $accents = 0;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
eval { binmode (\*TMP, ':encoding(utf-8)') };
while (<TMP>) {
$accents = 1 if /Accent mark definitions/;
@@ -73,7 +73,7 @@ while (<DATA>) {
$output = <TMP>;
}
close TMP;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
if ($options{utf8}) {
ok (!$accents, "Saw no accent definitions for test $n");
} else {
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/man.t b/gnu/usr.bin/perl/cpan/podlators/t/man.t
index a6b96a21e14..0645d93203d 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/man.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/man.t
@@ -1,8 +1,8 @@
#!/usr/bin/perl -w
#
-# man.t -- Additional specialized tests for Pod::Man.
+# Additional specialized tests for Pod::Man.
#
-# Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010
+# Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2012, 2013
# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
@@ -19,7 +19,7 @@ BEGIN {
use strict;
-use Test::More tests => 31;
+use Test::More tests => 34;
BEGIN { use_ok ('Pod::Man') }
# Test whether we can use binmode to set encoding.
@@ -30,7 +30,7 @@ isa_ok ($parser, 'Pod::Man', 'Parser object');
my $n = 1;
while (<DATA>) {
next until $_ eq "###\n";
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
# We have a test in ISO 8859-1 encoding. Make sure that nothing strange
# happens if Perl thinks the world is Unicode. Wrap this in eval so that
@@ -42,10 +42,10 @@ while (<DATA>) {
print TMP $_;
}
close TMP;
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
+ $parser->parse_from_file ("tmp$$.pod", \*OUT);
close OUT;
- open (OUT, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (OUT, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
while (<OUT>) { last if /^\.nh/ }
my $output;
{
@@ -53,7 +53,7 @@ while (<DATA>) {
$output = <OUT>;
}
close OUT;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
my $expected = '';
while (<DATA>) {
last if $_ eq "###\n";
@@ -119,26 +119,6 @@ Also a bullet.
###
###
-=over 4
-
-=item foo
-
-Not a bullet.
-
-=item *
-
-Also not a bullet.
-
-=back
-###
-.IP "foo" 4
-.IX Item "foo"
-Not a bullet.
-.IP "*" 4
-Also not a bullet.
-###
-
-###
=encoding iso-8859-1
=head1 ACCENTS
@@ -499,7 +479,7 @@ This is a L<link|http://www.example.com/> to a URL.
###
.SH "LINK TO URL"
.IX Header "LINK TO URL"
-This is a link <http://www.example.com/> to a \s-1URL\s0.
+This is a link <http://www.example.com/> to a \s-1URL.\s0
###
###
@@ -528,3 +508,59 @@ world\ \ \
.PP
\&.
###
+
+###
+=head1 URL LINK
+
+The newest version of this document is also available on the World Wide Web at
+L<http://pod.tst.eu/http://cvs.schmorp.de/rxvt-unicode/doc/rxvt.7.pod>.
+###
+.SH "URL LINK"
+.IX Header "URL LINK"
+The newest version of this document is also available on the World Wide Web at
+<http://pod.tst.eu/http://cvs.schmorp.de/rxvt\-unicode/doc/rxvt.7.pod>.
+###
+
+###
+=head1 RT LINK
+
+L<[perl #12345]|https://rt.cpan.org/12345>
+###
+.SH "RT LINK"
+.IX Header "RT LINK"
+[perl #12345] <https://rt.cpan.org/12345>
+###
+
+###
+=head1 Multiline XZ<><>
+
+Something something X<this is
+one index term>
+###
+.SH "Multiline X<>"
+.IX Header "Multiline X<>"
+Something something
+.IX Xref "this is one index term"
+###
+
+###
+=head1 Uppercase License
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+###
+.SH "Uppercase License"
+.IX Header "Uppercase License"
+\&\s-1THE SOFTWARE IS PROVIDED \*(L"AS IS\*(R", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\s0
+###
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/overstrike.t b/gnu/usr.bin/perl/cpan/podlators/t/overstrike.t
index bbfa0db9fb7..13ee2c87d36 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/overstrike.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/overstrike.t
@@ -2,7 +2,8 @@
#
# overstrike.t -- Additional specialized tests for Pod::Text::Overstrike.
#
-# Copyright 2002, 2004, 2006, 2009 by Russ Allbery <rra@stanford.edu>
+# Copyright 2002, 2004, 2006, 2009, 2012, 2013
+# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -26,23 +27,23 @@ isa_ok ($parser, 'Pod::Text::Overstrike', 'Parser module');
my $n = 1;
while (<DATA>) {
next until $_ eq "###\n";
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
while (<DATA>) {
last if $_ eq "###\n";
print TMP $_;
}
close TMP;
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
+ $parser->parse_from_file ("tmp$$.pod", \*OUT);
close OUT;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
my $output;
{
local $/;
$output = <TMP>;
}
close TMP;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
my $expected = '';
while (<DATA>) {
last if $_ eq "###\n";
@@ -81,7 +82,7 @@ A
B
-=item 1
+=item 1Z<>
C
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/pod-parser.t b/gnu/usr.bin/perl/cpan/podlators/t/pod-parser.t
index ae2ef016761..6394731e140 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/pod-parser.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/pod-parser.t
@@ -2,7 +2,7 @@
#
# pod-parser.t -- Tests for backward compatibility with Pod::Parser.
#
-# Copyright 2006, 2008, 2009 by Russ Allbery <rra@stanford.edu>
+# Copyright 2006, 2008, 2009, 2012 by Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -26,13 +26,13 @@ BEGIN {
my $parser = Pod::Man->new;
isa_ok ($parser, 'Pod::Man', 'Pod::Man parser object');
-open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
print TMP "Some random B<text>.\n";
close TMP;
-open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
-$parser->parse_from_file ({ -cutting => 0 }, 'tmp.pod', \*OUT);
+open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
+$parser->parse_from_file ({ -cutting => 0 }, "tmp$$.pod", \*OUT);
close OUT;
-open (OUT, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+open (OUT, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
while (<OUT>) { last if /^\.nh/ }
my $output;
{
@@ -44,10 +44,10 @@ is ($output, "Some random \\fBtext\\fR.\n", 'Pod::Man -cutting output');
$parser = Pod::Text->new;
isa_ok ($parser, 'Pod::Text', 'Pod::Text parser object');
-open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
-$parser->parse_from_file ({ -cutting => 0 }, 'tmp.pod', \*OUT);
+open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
+$parser->parse_from_file ({ -cutting => 0 }, "tmp$$.pod", \*OUT);
close OUT;
-open (OUT, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+open (OUT, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
{
local $/;
$output = <OUT>;
@@ -56,17 +56,17 @@ close OUT;
is ($output, " Some random text.\n\n", 'Pod::Text -cutting output');
# Test the pod2text function, particularly with only one argument.
-open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
print TMP "=pod\n\nSome random B<text>.\n";
close TMP;
-open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
+open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
open (SAVE, '>&STDOUT') or die "Cannot dup stdout: $!\n";
open (STDOUT, '>&OUT') or die "Cannot replace stdout: $!\n";
-pod2text ('tmp.pod');
+pod2text ("tmp$$.pod");
close OUT;
open (STDOUT, '>&SAVE') or die "Cannot fix stdout: $!\n";
close SAVE;
-open (OUT, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+open (OUT, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
{
local $/;
$output = <OUT>;
@@ -74,5 +74,5 @@ open (OUT, 'out.tmp') or die "Cannot open out.tmp: $!\n";
close OUT;
is ($output, " Some random text.\n\n", 'Pod::Text pod2text function');
-1 while unlink ('tmp.pod', 'out.tmp');
+1 while unlink ("tmp$$.pod", "out$$.tmp");
exit 0;
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/termcap.t b/gnu/usr.bin/perl/cpan/podlators/t/termcap.t
index c75cb44bb4e..d751bad6137 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/termcap.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/termcap.t
@@ -2,7 +2,8 @@
#
# termcap.t -- Additional specialized tests for Pod::Text::Termcap.
#
-# Copyright 2002, 2004, 2006, 2009 by Russ Allbery <rra@stanford.edu>
+# Copyright 2002, 2004, 2006, 2009, 2012, 2013
+# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -31,23 +32,23 @@ isa_ok ($parser, 'Pod::Text::Termcap', 'Parser module');
my $n = 1;
while (<DATA>) {
next until $_ eq "###\n";
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
while (<DATA>) {
last if $_ eq "###\n";
print TMP $_;
}
close TMP;
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
+ $parser->parse_from_file ("tmp$$.pod", \*OUT);
close OUT;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
my $output;
{
local $/;
$output = <TMP>;
}
close TMP;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
my $expected = '';
while (<DATA>) {
last if $_ eq "###\n";
@@ -86,7 +87,7 @@ A
B
-=item 1
+=item 1Z<>
C
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text-encoding.t b/gnu/usr.bin/perl/cpan/podlators/t/text-encoding.t
index 14181e80dd1..d096b37b058 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/text-encoding.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/text-encoding.t
@@ -2,7 +2,7 @@
#
# text-encoding.t -- Test Pod::Text with various weird encoding combinations.
#
-# Copyright 2002, 2004, 2006, 2007, 2008, 2009
+# Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2012
# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
@@ -26,7 +26,7 @@ BEGIN {
if ($] < 5.008) {
plan skip_all => 'Perl 5.8 required for encoding support';
} else {
- plan tests => 7;
+ plan tests => 5;
}
}
BEGIN { use_ok ('Pod::Text') }
@@ -40,22 +40,21 @@ eval { binmode ($builder->failure_output, ':raw') };
my $n = 1;
while (<DATA>) {
my %opts;
- $opts{utf8} = 1 if $n == 3;
next until $_ eq "###\n";
my $parser = Pod::Text->new (%opts);
isa_ok ($parser, 'Pod::Text', 'Parser object');
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
eval { binmode (\*TMP, ':raw') };
while (<DATA>) {
last if $_ eq "###\n";
print TMP $_;
}
close TMP;
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
eval { binmode (\*OUT, ':raw') };
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ $parser->parse_from_file ("tmp$$.pod", \*OUT);
close OUT;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
eval { binmode (\*TMP, ':raw') };
my $output;
{
@@ -63,7 +62,7 @@ while (<DATA>) {
$output = <TMP>;
}
close TMP;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
my $expected = '';
while (<DATA>) {
last if $_ eq "###\n";
@@ -128,9 +127,3 @@ I can eat glass
See <http://www.columbia.edu/kermit/utf8.html>
###
-
-###
-=head1 Beyoncé
-###
-Beyoncé
-###
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text-options.t b/gnu/usr.bin/perl/cpan/podlators/t/text-options.t
index 7b709807850..06bf0818431 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/text-options.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/text-options.t
@@ -1,8 +1,9 @@
#!/usr/bin/perl -w
#
-# text-options.t -- Additional tests for Pod::Text options.
+# Additional tests for Pod::Text options.
#
-# Copyright 2002, 2004, 2006, 2008, 2009 by Russ Allbery <rra@stanford.edu>
+# Copyright 2002, 2004, 2006, 2008, 2009, 2012, 2013
+# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -18,13 +19,13 @@ BEGIN {
use strict;
-use Test::More tests => 19;
+use Test::More tests => 34;
BEGIN { use_ok ('Pod::Text') }
# Redirect stderr to a file.
sub stderr_save {
open (OLDERR, '>&STDERR') or die "Can't dup STDERR: $!\n";
- open (STDERR, '> out.err') or die "Can't redirect STDERR: $!\n";
+ open (STDERR, "> out$$.err") or die "Can't redirect STDERR: $!\n";
}
# Restore stderr.
@@ -43,7 +44,7 @@ while (<DATA>) {
my ($option, $value) = split;
$options{$option} = $value;
}
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
while (<DATA>) {
last if $_ eq "###\n";
print TMP $_;
@@ -51,33 +52,39 @@ while (<DATA>) {
close TMP;
my $parser = Pod::Text->new (%options);
isa_ok ($parser, 'Pod::Text', 'Parser object');
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
stderr_save;
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ eval { $parser->parse_from_file ("tmp$$.pod", \*OUT) };
+ my $exception = $@;
stderr_restore;
close OUT;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
my $output;
{
local $/;
$output = <TMP>;
}
close TMP;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
my $expected = '';
while (<DATA>) {
last if $_ eq "###\n";
$expected .= $_;
}
is ($output, $expected, "Ouput correct for test $n");
- open (ERR, 'out.err') or die "Cannot open out.err: $!\n";
+ open (ERR, "out$$.err") or die "Cannot open out$$.err: $!\n";
my $errors;
{
local $/;
$errors = <ERR>;
}
close ERR;
- 1 while unlink ('out.err');
+ $errors =~ s/\Qtmp$$.pod/tmp.pod/g;
+ 1 while unlink ("out$$.err");
+ if ($exception) {
+ $exception =~ s/ at .*//;
+ $errors .= "EXCEPTION: $exception";
+ }
$expected = '';
while (<DATA>) {
last if $_ eq "###\n";
@@ -253,3 +260,94 @@ NEXT
###
tmp.pod around line 7: You forgot a '=back' before '=head1'
###
+
+###
+nourls 1
+###
+=head1 URL suppression
+
+L<anchor|http://www.example.com/>
+###
+URL suppression
+ anchor
+
+###
+###
+
+###
+errors stderr
+###
+=over 4
+
+=item Foo
+
+Bar.
+
+=head1 NEXT
+###
+ Foo Bar.
+
+NEXT
+###
+tmp.pod around line 7: You forgot a '=back' before '=head1'
+###
+
+###
+errors die
+###
+=over 4
+
+=item Foo
+
+Bar.
+
+=head1 NEXT
+###
+ Foo Bar.
+
+NEXT
+###
+tmp.pod around line 7: You forgot a '=back' before '=head1'
+EXCEPTION: POD document had syntax errors
+###
+
+###
+errors pod
+###
+=over 4
+
+=item Foo
+
+Bar.
+
+=head1 NEXT
+###
+ Foo Bar.
+
+NEXT
+POD ERRORS
+ Hey! The above document had some coding errors, which are explained
+ below:
+
+ Around line 7:
+ You forgot a '=back' before '=head1'
+
+###
+###
+
+###
+errors none
+###
+=over 4
+
+=item Foo
+
+Bar.
+
+=head1 NEXT
+###
+ Foo Bar.
+
+NEXT
+###
+###
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text-perlio.t b/gnu/usr.bin/perl/cpan/podlators/t/text-perlio.t
index c9599bddda8..fe50ca18565 100644
--- a/gnu/usr.bin/perl/cpan/podlators/t/text-perlio.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/text-perlio.t
@@ -2,7 +2,7 @@
#
# text-perlio.t -- Test Pod::Text with a PerlIO UTF-8 encoding layer.
#
-# Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2010
+# Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2010, 2012
# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
@@ -41,7 +41,7 @@ eval { binmode ($builder->output, ':encoding(utf-8)') };
eval { binmode ($builder->failure_output, ':encoding(utf-8)') };
while (<DATA>) {
next until $_ eq "###\n";
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
eval { binmode (\*TMP, ':encoding(utf-8)') };
print TMP "=encoding UTF-8\n\n";
while (<DATA>) {
@@ -49,11 +49,11 @@ while (<DATA>) {
print TMP $_;
}
close TMP;
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
eval { binmode (\*OUT, ':encoding(utf-8)') };
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ $parser->parse_from_file ("tmp$$.pod", \*OUT);
close OUT;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
eval { binmode (\*TMP, ':encoding(utf-8)') };
my $output;
{
@@ -61,7 +61,7 @@ while (<DATA>) {
$output = <TMP>;
}
close TMP;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
my $expected = '';
while (<DATA>) {
last if $_ eq "###\n";
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text-utf8.t b/gnu/usr.bin/perl/cpan/podlators/t/text-utf8.t
index 4874de50217..822f1ea31fa 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/text-utf8.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/text-utf8.t
@@ -2,7 +2,7 @@
#
# text-utf8.t -- Test Pod::Text with UTF-8 input.
#
-# Copyright 2002, 2004, 2006, 2007, 2008, 2009
+# Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2012
# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
@@ -41,7 +41,7 @@ eval { binmode ($builder->output, ':encoding(utf-8)') };
eval { binmode ($builder->failure_output, ':encoding(utf-8)') };
while (<DATA>) {
next until $_ eq "###\n";
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
eval { binmode (\*TMP, ':encoding(utf-8)') };
print TMP "=encoding UTF-8\n\n";
while (<DATA>) {
@@ -49,10 +49,10 @@ while (<DATA>) {
print TMP $_;
}
close TMP;
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
+ $parser->parse_from_file ("tmp$$.pod", \*OUT);
close OUT;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
eval { binmode (\*TMP, ':encoding(utf-8)') };
my $output;
{
@@ -60,7 +60,7 @@ while (<DATA>) {
$output = <TMP>;
}
close TMP;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
my $expected = '';
while (<DATA>) {
last if $_ eq "###\n";
diff --git a/gnu/usr.bin/perl/cpan/podlators/t/text.t b/gnu/usr.bin/perl/cpan/podlators/t/text.t
index 5b7f4384f70..223e0b0d907 100755
--- a/gnu/usr.bin/perl/cpan/podlators/t/text.t
+++ b/gnu/usr.bin/perl/cpan/podlators/t/text.t
@@ -2,7 +2,8 @@
#
# text.t -- Additional specialized tests for Pod::Text.
#
-# Copyright 2002, 2004, 2006, 2007, 2008, 2009 Russ Allbery <rra@stanford.edu>
+# Copyright 2002, 2004, 2006, 2007, 2008, 2009, 2012
+# Russ Allbery <rra@stanford.edu>
#
# This program is free software; you may redistribute it and/or modify it
# under the same terms as Perl itself.
@@ -19,7 +20,7 @@ BEGIN {
use strict;
use Pod::Simple;
-use Test::More tests => 8;
+use Test::More tests => 9;
BEGIN { use_ok ('Pod::Text') }
my $parser = Pod::Text->new;
@@ -27,23 +28,23 @@ isa_ok ($parser, 'Pod::Text', 'Parser object');
my $n = 1;
while (<DATA>) {
next until $_ eq "###\n";
- open (TMP, '> tmp.pod') or die "Cannot create tmp.pod: $!\n";
+ open (TMP, "> tmp$$.pod") or die "Cannot create tmp$$.pod: $!\n";
while (<DATA>) {
last if $_ eq "###\n";
print TMP $_;
}
close TMP;
- open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n";
- $parser->parse_from_file ('tmp.pod', \*OUT);
+ open (OUT, "> out$$.tmp") or die "Cannot create out$$.tmp: $!\n";
+ $parser->parse_from_file ("tmp$$.pod", \*OUT);
close OUT;
- open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n";
+ open (TMP, "out$$.tmp") or die "Cannot open out$$.tmp: $!\n";
my $output;
{
local $/;
$output = <TMP>;
}
close TMP;
- 1 while unlink ('tmp.pod', 'out.tmp');
+ 1 while unlink ("tmp$$.pod", "out$$.tmp");
my $expected = '';
while (<DATA>) {
last if $_ eq "###\n";
@@ -142,3 +143,13 @@ LINK TO URL
This is a link <http://www.example.com/> to a URL.
###
+
+###
+=head1 RT LINK
+
+L<[perl #12345]|https://rt.cpan.org/12345>
+###
+RT LINK
+ [perl #12345] <https://rt.cpan.org/12345>
+
+###
diff --git a/gnu/usr.bin/perl/cygwin/cygwin.c b/gnu/usr.bin/perl/cygwin/cygwin.c
index 29ee22e0fa6..87401d1daba 100644
--- a/gnu/usr.bin/perl/cygwin/cygwin.c
+++ b/gnu/usr.bin/perl/cygwin/cygwin.c
@@ -129,7 +129,7 @@ do_spawn (char *cmd)
return do_spawnvp("sh",command);
}
- Newx (PL_Argv,(s-cmd)/2+2,char*);
+ Newx (PL_Argv, (s-cmd)/2+2, const char*);
PL_Cmd=savepvn (cmd,s-cmd);
a=PL_Argv;
for (s=PL_Cmd; *s;) {
@@ -254,7 +254,7 @@ XS(XS_Cygwin_win_to_posix_path)
dXSARGS;
int absolute_flag = 0;
STRLEN len;
- int err;
+ int err = 0;
char *src_path;
char *posix_path;
int isutf8 = 0;
@@ -343,7 +343,7 @@ XS(XS_Cygwin_posix_to_win_path)
dXSARGS;
int absolute_flag = 0;
STRLEN len;
- int err;
+ int err = 0;
char *src_path, *win_path;
int isutf8 = 0;
diff --git a/gnu/usr.bin/perl/dist/Attribute-Handlers/lib/Attribute/Handlers.pm b/gnu/usr.bin/perl/dist/Attribute-Handlers/lib/Attribute/Handlers.pm
index 36f6e2e81c9..60ee32a59c0 100644
--- a/gnu/usr.bin/perl/dist/Attribute-Handlers/lib/Attribute/Handlers.pm
+++ b/gnu/usr.bin/perl/dist/Attribute-Handlers/lib/Attribute/Handlers.pm
@@ -4,7 +4,7 @@ use Carp;
use warnings;
use strict;
use vars qw($VERSION $AUTOLOAD);
-$VERSION = '0.93'; # remember to update version in POD!
+$VERSION = '0.94'; # remember to update version in POD!
# $DB::single=1;
my %symcache;
@@ -366,7 +366,7 @@ Thereafter, any subroutine declared with a C<:Loud> attribute in the class
LoudDecl:
package LoudDecl;
-
+
sub foo: Loud {...}
causes the above handler to be invoked, and passed:
@@ -581,7 +581,7 @@ variables. For example:
use Attribute::Handlers;
use Tie::Cycle;
-
+
sub UNIVERSAL::Cycle : ATTR(SCALAR) {
my ($package, $symbol, $referent, $attr, $data, $phase) = @_;
$data = [ $data ] unless ref $data eq 'ARRAY';
@@ -591,9 +591,9 @@ variables. For example:
# and thereafter...
package main;
-
+
my $next : Cycle('A'..'Z'); # $next is now a tied variable
-
+
while (<>) {
print $next;
}
@@ -655,7 +655,7 @@ If the attribute name is unqualified, the attribute is installed in the
current package. Otherwise it is installed in the qualifier's package:
package Here;
-
+
use Attribute::Handlers autotie => {
Other::Good => Tie::SecureHash, # tie attr installed in Other::
Bad => Tie::Taxes, # tie attr installed in Here::
@@ -668,7 +668,7 @@ facilitate this, Attribute::Handlers recognizes a special "pseudo-class" --
C<__CALLER__>, which may be specified as the qualifier of an attribute:
package Tie::Me::Kangaroo:Down::Sport;
-
+
use Attribute::Handlers autotie =>
{ '__CALLER__::Roo' => __PACKAGE__ };
@@ -792,7 +792,7 @@ would cause the following handlers to be invoked:
# my %hsh :Good(q/bye) :Omni(q/bus/);
-
+
MyClass::Good:ATTR(HASH)( 'SomeOtherClass', # class
'LEXICAL', # no typeglob
\%hsh, # referent
@@ -800,7 +800,7 @@ would cause the following handlers to be invoked:
'q/bye' # raw attr data
'CHECK', # compiler phase
);
-
+
MyClass::Omni:ATTR(HASH)( 'SomeOtherClass', # class
'LEXICAL', # no typeglob
\%hsh, # referent
diff --git a/gnu/usr.bin/perl/dist/B-Deparse/Deparse.pm b/gnu/usr.bin/perl/dist/B-Deparse/Deparse.pm
index b0f172d61b3..d62fe3bc5fe 100644
--- a/gnu/usr.bin/perl/dist/B-Deparse/Deparse.pm
+++ b/gnu/usr.bin/perl/dist/B-Deparse/Deparse.pm
@@ -20,7 +20,7 @@ use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
CVf_METHOD CVf_LVALUE
PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE
PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED);
-$VERSION = '1.14_01';
+$VERSION = '1.20';
use strict;
use vars qw/$AUTOLOAD/;
use warnings ();
@@ -301,6 +301,7 @@ BEGIN {
# 1 statement modifiers
# 0.5 statements, but still print scopes as do { ... }
# 0 statement level
+# -1 format body
# Nonprinting characters with special meaning:
# \cS - steal parens (see maybe_parens_unop)
@@ -310,6 +311,115 @@ BEGIN {
# \f - flush left (no indent)
# \cK - kill following semicolon, if any
+
+
+
+# _pessimise_walk(): recursively walk the optree of a sub,
+# possibly undoing optimisations along the way.
+
+sub _pessimise_walk {
+ my ($self, $startop) = @_;
+
+ return unless $$startop;
+ my ($op, $prevop);
+ for ($op = $startop; $$op; $prevop = $op, $op = $op->sibling) {
+ my $ppname = $op->name;
+
+ # pessimisations start here
+
+ if ($ppname eq "padrange") {
+ # remove PADRANGE:
+ # the original optimisation either (1) changed this:
+ # pushmark -> (various pad and list and null ops) -> the_rest
+ # or (2), for the = @_ case, changed this:
+ # pushmark -> gv[_] -> rv2av -> (pad stuff) -> the_rest
+ # into this:
+ # padrange ----------------------------------------> the_rest
+ # so we just need to convert the padrange back into a
+ # pushmark, and in case (1), set its op_next to op_sibling,
+ # which is the head of the original chain of optimised-away
+ # pad ops, or for (2), set it to sibling->first, which is
+ # the original gv[_].
+
+ $B::overlay->{$$op} = {
+ name => 'pushmark',
+ private => ($op->private & OPpLVAL_INTRO),
+ next => ($op->flags & OPf_SPECIAL)
+ ? $op->sibling->first
+ : $op->sibling,
+ };
+ }
+
+ # pessimisations end here
+
+ if (class($op) eq 'PMOP'
+ && ref($op->pmreplroot)
+ && ${$op->pmreplroot}
+ && $op->pmreplroot->isa( 'B::OP' ))
+ {
+ $self-> _pessimise_walk($op->pmreplroot);
+ }
+
+ if ($op->flags & OPf_KIDS) {
+ $self-> _pessimise_walk($op->first);
+ }
+
+ }
+}
+
+
+# _pessimise_walk_exe(): recursively walk the op_next chain of a sub,
+# possibly undoing optimisations along the way.
+
+sub _pessimise_walk_exe {
+ my ($self, $startop, $visited) = @_;
+
+ return unless $$startop;
+ return if $visited->{$$startop};
+ my ($op, $prevop);
+ for ($op = $startop; $$op; $prevop = $op, $op = $op->next) {
+ last if $visited->{$$op};
+ $visited->{$$op} = 1;
+ my $ppname = $op->name;
+ if ($ppname =~
+ /^((and|d?or)(assign)?|(map|grep)while|range|cond_expr|once)$/
+ # entertry is also a logop, but its op_other invariably points
+ # into the same chain as the main execution path, so we skip it
+ ) {
+ $self->_pessimise_walk_exe($op->other, $visited);
+ }
+ elsif ($ppname eq "subst") {
+ $self->_pessimise_walk_exe($op->pmreplstart, $visited);
+ }
+ elsif ($ppname =~ /^(enter(loop|iter))$/) {
+ # redoop and nextop will already be covered by the main block
+ # of the loop
+ $self->_pessimise_walk_exe($op->lastop, $visited);
+ }
+
+ # pessimisations start here
+ }
+}
+
+# Go through an optree and and "remove" some optimisations by using an
+# overlay to selectively modify or un-null some ops. Deparsing in the
+# absence of those optimisations is then easier.
+#
+# Note that older optimisations are not removed, as Deparse was already
+# written to recognise them before the pessimise/overlay system was added.
+
+sub pessimise {
+ my ($self, $root, $start) = @_;
+
+ # walk tree in root-to-branch order
+ $self->_pessimise_walk($root);
+
+ my %visited;
+ # walk tree in execution order
+ $self->_pessimise_walk_exe($start, \%visited);
+}
+
+
sub null {
my $op = shift;
return class($op) eq "NULL";
@@ -376,6 +486,8 @@ sub begin_is_use {
my ($self, $cv) = @_;
my $root = $cv->ROOT;
local @$self{qw'curcv curcvlex'} = ($cv);
+ local $B::overlay = {};
+ $self->pessimise($root, $cv->START);
#require B::Debug;
#B::walkoptree($cv->ROOT, "debug");
my $lineseq = $root->first;
@@ -679,8 +791,12 @@ sub compile {
print $self->print_protos;
@{$self->{'subs_todo'}} =
sort {$a->[0] <=> $b->[0]} @{$self->{'subs_todo'}};
- print $self->indent($self->deparse_root(main_root)), "\n"
- unless null main_root;
+ my $root = main_root;
+ local $B::overlay = {};
+ unless (null $root) {
+ $self->pessimise($root, main_start);
+ print $self->indent($self->deparse_root($root)), "\n";
+ }
my @text;
while (scalar(@{$self->{'subs_todo'}})) {
push @text, $self->next_todo;
@@ -888,14 +1004,17 @@ Carp::confess("SPECIAL in deparse_sub") if $cv->isa("B::SPECIAL");
local(@$self{qw'curstash warnings hints hinthash'})
= @$self{qw'curstash warnings hints hinthash'};
my $body;
- if (not null $cv->ROOT) {
- my $lineseq = $cv->ROOT->first;
+ my $root = $cv->ROOT;
+ local $B::overlay = {};
+ if (not null $root) {
+ $self->pessimise($root, $cv->START);
+ my $lineseq = $root->first;
if ($lineseq->name eq "lineseq") {
my @ops;
for(my$o=$lineseq->first; $$o; $o=$o->sibling) {
push @ops, $o;
}
- $body = $self->lineseq(undef, @ops).";";
+ $body = $self->lineseq(undef, 0, @ops).";";
my $scope_en = $self->find_scope_en($lineseq);
if (defined $scope_en) {
my $subs = join"", $self->seq_subs($scope_en);
@@ -903,7 +1022,7 @@ Carp::confess("SPECIAL in deparse_sub") if $cv->isa("B::SPECIAL");
}
}
else {
- $body = $self->deparse($cv->ROOT->first, 0);
+ $body = $self->deparse($root->first, 0);
}
}
else {
@@ -928,6 +1047,8 @@ sub deparse_format {
local(@$self{qw'curstash warnings hints hinthash'})
= @$self{qw'curstash warnings hints hinthash'};
my $op = $form->ROOT;
+ local $B::overlay = {};
+ $self->pessimise($op, $form->START);
my $kid;
return "\f." if $op->first->name eq 'stub'
|| $op->first->name eq 'nextstate';
@@ -939,7 +1060,8 @@ sub deparse_format {
push @text, "\f".$self->const_sv($kid)->PV;
$kid = $kid->sibling;
for (; not null $kid; $kid = $kid->sibling) {
- push @exprs, $self->deparse($kid, 0);
+ push @exprs, $self->deparse($kid, -1);
+ $exprs[-1] =~ s/;\z//;
}
push @text, "\f".join(", ", @exprs)."\n" if @exprs;
$op = $op->sibling;
@@ -1139,7 +1261,7 @@ sub DESTROY {} # Do not AUTOLOAD
# any subroutine declarations to the deparsed ops, otherwise we
# append appropriate declarations.
sub lineseq {
- my($self, $root, @ops) = @_;
+ my($self, $root, $cx, @ops) = @_;
my($expr, @exprs);
my $out_cop = $self->{'curcop'};
@@ -1160,12 +1282,13 @@ sub lineseq {
$self->walk_lineseq($root, \@ops,
sub { push @exprs, $_[0]} );
- my $body = join(";\n", grep {length} @exprs);
+ my $sep = $cx ? '; ' : ";\n";
+ my $body = join($sep, grep {length} @exprs);
my $subs = "";
if (defined $root && defined $limit_seq && !$self->{'in_format'}) {
$subs = join "\n", $self->seq_subs($limit_seq);
}
- return join(";\n", grep {length} $body, $subs);
+ return join($sep, grep {length} $body, $subs);
}
sub scopeop {
@@ -1200,9 +1323,10 @@ sub scopeop {
push @kids, $kid;
}
if ($cx > 0) { # inside an expression, (a do {} while for lineseq)
- return "do {\n\t" . $self->lineseq($op, @kids) . "\n\b}";
+ my $body = $self->lineseq($op, 0, @kids);
+ return is_lexical_subs(@kids) ? $body : "do {\n\t$body\n\b}";
} else {
- my $lineseq = $self->lineseq($op, @kids);
+ my $lineseq = $self->lineseq($op, $cx, @kids);
return (length ($lineseq) ? "$lineseq;" : "");
}
}
@@ -1678,6 +1802,17 @@ my %feature_keywords = (
fc => 'fc',
);
+# keywords that are strong and also have a prototype
+#
+my %strong_proto_keywords = map { $_ => 1 } qw(
+ glob
+ pos
+ prototype
+ scalar
+ study
+ undef
+);
+
sub keyword {
my $self = shift;
my $name = shift;
@@ -1693,9 +1828,9 @@ sub keyword {
if !$hh
|| !$hh->{"feature_$feature_keywords{$name}"}
}
- if (
- $name !~ /^(?:chom?p|do|exec|glob|s(?:elect|ystem))\z/
- && !defined eval{prototype "CORE::$name"}
+ if ($strong_proto_keywords{$name}
+ || ($name !~ /^(?:chom?p|do|exec|glob|s(?:elect|ystem))\z/
+ && !defined eval{prototype "CORE::$name"})
) { return $name }
if (
exists $self->{subs_declared}{$name}
@@ -2155,10 +2290,10 @@ sub loopex {
} elsif (class($op) eq "OP") {
# no-op
} elsif (class($op) eq "UNOP") {
- (my $kid = $self->deparse($op->first, 16)) =~ s/^\cS//;
+ (my $kid = $self->deparse($op->first, 7)) =~ s/^\cS//;
$name .= " $kid";
}
- return $self->maybe_parens($name, $cx, 16);
+ return $self->maybe_parens($name, $cx, 7);
}
sub pp_last { loopex(@_, "last") }
@@ -2527,9 +2662,13 @@ sub listop {
$name = "socketpair" if $name eq "sockpair";
my $fullname = $self->keyword($name);
my $proto = prototype("CORE::$name");
- if (defined $proto
- && $proto =~ /^;?\*/
- && $kid->name eq "rv2gv" && !($kid->private & OPpLVAL_INTRO)) {
+ if (
+ ( (defined $proto && $proto =~ /^;?\*/)
+ || $name eq 'select' # select(F) doesn't have a proto
+ )
+ && $kid->name eq "rv2gv"
+ && !($kid->private & OPpLVAL_INTRO)
+ ) {
$first = $self->rv2gv_or_string($kid->first);
}
else {
@@ -2554,6 +2693,15 @@ sub listop {
return "$exprs[0] = $fullname"
. ($parens ? "($exprs[0])" : " $exprs[0]");
}
+ if ($name =~ /^(system|exec)$/
+ && ($op->flags & OPf_STACKED)
+ && @exprs > 1)
+ {
+ # handle the "system prog a1,a2,.." form
+ my $prog = shift @exprs;
+ $exprs[0] = "$prog $exprs[0]";
+ }
+
if ($parens && $nollafr) {
return "($fullname " . join(", ", @exprs) . ")";
} elsif ($parens) {
@@ -2750,6 +2898,7 @@ sub indirop {
}
} elsif (
!$indir && $name eq "sort"
+ && !null($op->first->sibling)
&& $op->first->sibling->name eq 'entersub'
) {
# We cannot say sort foo(bar), as foo will be interpreted as a
@@ -2776,7 +2925,8 @@ sub mapop {
if (is_scope $code) {
$code = "{" . $self->deparse($code, 0) . "} ";
} else {
- $code = $self->deparse($code, 24) . ", ";
+ $code = $self->deparse($code, 24);
+ $code .= ", " if !null($kid->sibling);
}
$kid = $kid->sibling;
for (; !null($kid); $kid = $kid->sibling) {
@@ -3011,7 +3161,7 @@ sub loop_common {
for (; $$state != $$cont; $state = $state->sibling) {
push @states, $state;
}
- $body = $self->lineseq(undef, @states);
+ $body = $self->lineseq(undef, 0, @states);
if (defined $cond and not is_scope $cont and $self->{'expand'} < 3) {
$head = "for ($init; $cond; " . $self->deparse($cont, 1) .") ";
$cont = "\cK";
@@ -3277,7 +3427,7 @@ sub is_subscriptable {
$kid = $kid->sibling until null $kid->sibling;
return 0 if is_scope($kid);
$kid = $kid->first;
- return 0 if $kid->name eq "gv";
+ return 0 if $kid->name eq "gv" || $kid->name eq "padcv";
return 0 if is_scalar($kid);
return is_subscriptable($kid);
} else {
@@ -3641,7 +3791,7 @@ sub pp_entersub {
$kid = $self->deparse($kid, 24);
} else {
$prefix = "";
- my $arrow = is_subscriptable($kid->first) ? "" : "->";
+ my $arrow = is_subscriptable($kid->first) || $kid->first->name eq "padcv" ? "" : "->";
$kid = $self->deparse($kid, 24) . $arrow;
}
@@ -4587,7 +4737,10 @@ sub matchop {
carp("found ".$kid->name." where regcomp expected");
} else {
($re, $quote) = $self->regcomp($kid, 21, $extended);
- my $matchop = $kid->first->first;
+ my $matchop = $kid->first;
+ if ($matchop->name eq 'regcrest') {
+ $matchop = $matchop->first;
+ }
if ($matchop->name =~ /^(?:match|transr?|subst)\z/
&& $matchop->flags & OPf_SPECIAL) {
$rhs_bound_to_defsv = 1;
@@ -4651,10 +4804,16 @@ sub pp_split {
# handle special case of split(), and split(' ') that compiles to /\s+/
# Under 5.10, the reflags may be undef if the split regexp isn't a constant
+ # Under 5.17.5-5.17.9, the special flag is on split itself.
$kid = $op->first;
- if ( $kid->flags & OPf_SPECIAL
- and ( $] < 5.009 ? $kid->pmflags & PMf_SKIPWHITE()
- : ($kid->reflags || 0) & RXf_SKIPWHITE() ) ) {
+ if ( $op->flags & OPf_SPECIAL
+ or (
+ $kid->flags & OPf_SPECIAL
+ and ( $] < 5.009 ? $kid->pmflags & PMf_SKIPWHITE()
+ : ($kid->reflags || 0) & RXf_SKIPWHITE()
+ )
+ )
+ ) {
$exprs[0] = "' '";
}
@@ -4691,19 +4850,19 @@ sub pp_subst {
my $flags = "";
my $pmflags = $op->pmflags;
if (null($op->pmreplroot)) {
- $repl = $self->dq($kid);
+ $repl = $kid;
$kid = $kid->sibling;
} else {
$repl = $op->pmreplroot->first; # skip substcont
- while ($repl->name eq "entereval") {
+ }
+ while ($repl->name eq "entereval") {
$repl = $repl->first;
$flags .= "e";
- }
- if ($pmflags & PMf_EVAL) {
+ }
+ if ($pmflags & PMf_EVAL) {
$repl = $self->deparse($repl->first, 0);
- } else {
+ } else {
$repl = $self->dq($repl);
- }
}
my $extended = ($pmflags & PMf_EXTENDED);
if (null $kid) {
@@ -4731,6 +4890,36 @@ sub pp_subst {
}
}
+sub is_lexical_subs {
+ my (@ops) = shift;
+ for my $op (@ops) {
+ return 0 if $op->name !~ /\A(?:introcv|clonecv)\z/;
+ }
+ return 1;
+}
+
+sub pp_introcv {
+ my $self = shift;
+ my($op, $cx) = @_;
+ # For now, deparsing doesn't worry about the distinction between introcv
+ # and clonecv, so pretend this op doesn't exist:
+ return '';
+}
+
+sub pp_clonecv {
+ my $self = shift;
+ my($op, $cx) = @_;
+ my $sv = $self->padname_sv($op->targ);
+ my $name = substr $sv->PVX, 1; # skip &/$/@/%, like $self->padany
+ return "my sub $name";
+}
+
+sub pp_padcv {
+ my $self = shift;
+ my($op, $cx) = @_;
+ return $self->padany($op);
+}
+
1;
__END__
@@ -5222,6 +5411,23 @@ defined within a different scope, although L<PadWalker> is a good start.
There are probably many more bugs on non-ASCII platforms (EBCDIC).
+=item *
+
+Lexical C<my> subroutines are not deparsed properly at the moment. They are
+emitted as pure declarations, without their body; and the declaration may
+appear in the wrong place (before any lexicals the body closes over, or
+before the C<use feature> declaration that permits use of this feature).
+
+We expect to resolve this before the lexical-subroutine feature is no longer
+considered experimental.
+
+=item *
+
+Lexical C<state> subroutines are not deparsed at all at the moment.
+
+We expect to resolve this before the lexical-subroutine feature is no longer
+considered experimental.
+
=back
=head1 AUTHOR
diff --git a/gnu/usr.bin/perl/dist/B-Deparse/t/core.t b/gnu/usr.bin/perl/dist/B-Deparse/t/core.t
index 62ff862e043..58540f88351 100644
--- a/gnu/usr.bin/perl/dist/B-Deparse/t/core.t
+++ b/gnu/usr.bin/perl/dist/B-Deparse/t/core.t
@@ -1,5 +1,31 @@
#!./perl
+# Test the core keywords.
+#
+# Initially this test file just checked that CORE::foo got correctly
+# deparsed as CORE::foo, hence the name. It's since been expanded
+# to fully test both CORE:: verses none, plus that any arguments
+# are correctly deparsed. It also cross-checks against regen/keywords.pl
+# to make sure we've tested all keywords, and with the correct strength.
+#
+# A keyword can be either weak or strong. Strong keywords can never be
+# overridden, while weak ones can. So deparsing of weak keywords depends
+# on whether a sub of that name has been created:
+#
+# for both: keyword(..) deparsed as keyword(..)
+# for weak: CORE::keyword(..) deparsed as CORE::keyword(..)
+# for strong: CORE::keyword(..) deparsed as keyword(..)
+#
+# Three permutations of lex/nonlex args are checked for:
+#
+# foo($a,$b,$c,...)
+# foo(my $a,$b,$c,...)
+# my ($a,$b,$c,...); foo($a,$b,$c,...)
+#
+# Note that tests for prefixing feature.pm-enabled keywords with CORE:: when
+# feature.pm is not enabled are in deparse.t, as they fit that format better.
+
+
BEGIN {
require Config;
if (($Config::Config{extensions} !~ /\bB\b/) ){
@@ -10,101 +36,587 @@ BEGIN {
use strict;
use Test::More;
+plan tests => 2063;
+
use feature (sprintf(":%vd", $^V)); # to avoid relying on the feature
# logic to add CORE::
-
-# Many functions appear in multiple lists, so that shift() and shift(foo)
-# are both tested.
-# For lists, we test 0 to 2 arguments.
-my @nary = (
- # nullary functions
- [qw( abs alarm break chr cos chop close chdir chomp chmod chown
- chroot caller continue die dump exp exit exec endgrent
- endpwent endnetent endhostent endservent
- endprotoent evalbytes fc fork glob
- getppid getpwent getprotoent gethostent getnetent getservent
- getgrent getlogin getc gmtime hex int lc log lstat length
- lcfirst localtime mkdir ord oct pop quotemeta ref rand
- rmdir reset reverse readlink select setpwent setgrent
- shift sin sleep sqrt srand stat __SUB__ system tell time times
- uc utime umask unlink ucfirst wantarray warn wait write )],
- # unary
- [qw( abs alarm bless binmode chr cos chop close chdir chomp
- chmod chown chroot closedir die do dump exp exit exec
- each evalbytes fc fileno getpgrp getpwnam getpwuid getpeername
- getprotobyname getprotobynumber gethostbyname
- getnetbyname getsockname getgrnam getgrgid
- getc glob gmtime hex int join keys kill lc
- log lock lstat length lcfirst localtime
- mkdir ord oct open pop push pack quotemeta
- ref rand rmdir reset reverse readdir readlink
- rewinddir select setnetent sethostent setservent
- setprotoent shift sin sleep sprintf splice sqrt
- srand stat system tell tied telldir uc utime umask
- unpack unlink unshift untie ucfirst values warn write )],
- # binary, but not infix
- [qw( atan2 accept bind binmode chop chomp chmod chown crypt
- connect die exec flock formline getpriority gethostbyaddr
- getnetbyaddr getservbyname getservbyport index join kill
- link listen mkdir msgget open opendir push pack pipe
- rename rindex reverse seekdir semop setpgrp shutdown
- sprintf splice substr system symlink syscall syswrite
- tie truncate utime unpack unlink warn waitpid )],
- # ternary
- [qw( fcntl getsockopt index ioctl join kill msgctl
- msgsnd open push pack read rindex seek send
- semget setpriority shmctl shmget sprintf splice
- substr sysopen sysread sysseek syswrite tie vec )],
- # quaternary
- [qw( open read recv send select semctl setsockopt shmread
- shmwrite socket splice substr sysopen sysread syswrite tie )],
- # quinary
- [qw( msgrcv open socketpair splice )]
-);
-
use B::Deparse;
my $deparse = new B::Deparse;
-sub CORE_test {
- my($keyword,$expr,$name) = @_;
- package test;
- use subs ();
- import subs $keyword;
- ::like
- $deparse->coderef2text(
- eval "no strict 'vars'; sub { () = $expr }" or die "$@in $expr"
- ),
- qr/\sCORE::$keyword.*;/,
- $name||$keyword
+my %SEEN;
+my %SEEN_STRENGH;
+
+# for a given keyword, create a sub of that name, then
+# deparse "() = $expr", and see if it matches $expected_expr
+
+sub testit {
+ my ($keyword, $expr, $expected_expr) = @_;
+
+ $expected_expr //= $expr;
+ $SEEN{$keyword} = 1;
+
+
+ # lex=0: () = foo($a,$b,$c)
+ # lex=1: my ($a,$b); () = foo($a,$b,$c)
+ # lex=2: () = foo(my $a,$b,$c)
+ for my $lex (0, 1, 2) {
+ if ($lex) {
+ next if $keyword =~ /local|our|state|my/;
+ # XXX glob(my $x) incorrectly becomes <my $x>
+ next if $keyword eq 'glob';
+ }
+ my $vars = $lex == 1 ? 'my($a, $b, $c, $d, $e);' . "\n " : "";
+
+ if ($lex == 2) {
+ my $repl = 'my $a';
+ if ($expr =~ /\bmap\(\$a|CORE::(chomp|chop|lstat|stat)\b/) {
+ # for some reason only these do:
+ # 'foo my $a, $b,' => foo my($a), $b, ...
+ # the rest don't parenthesize the my var.
+ $repl = 'my($a)';
+ }
+ s/\$a/$repl/ for $expr, $expected_expr;
+ }
+
+ my $desc = "$keyword: lex=$lex $expr => $expected_expr";
+
+
+ my $code_ref;
+ {
+ package test;
+ use subs ();
+ import subs $keyword;
+ $code_ref = eval "no strict 'vars'; sub { ${vars}() = $expr }"
+ or die "$@ in $expr";
+ }
+
+ my $got_text = $deparse->coderef2text($code_ref);
+
+ unless ($got_text =~ /^{
+ package test;
+ use strict 'refs', 'subs';
+ use feature [^\n]+
+ \Q$vars\E\(\) = (.*)
+}/s) {
+ ::fail($desc);
+ ::diag("couldn't extract line from boilerplate\n");
+ ::diag($got_text);
+ return;
+ }
+
+ my $got_expr = $1;
+ is $got_expr, $expected_expr, $desc;
+ }
}
-for my $argc(0..$#nary) {
- for(@{$nary[$argc]}) {
- CORE_test
- $_,
- "CORE::$_(" . join(',',map "\$$_", (undef,"a".."z")[1..$argc]) . ")",
- "$_, $argc argument" . "s"x($argc != 1);
- }
+
+# Deparse can't distinguish 'and' from '&&' etc
+my %infix_map = qw(and && or ||);
+
+
+# test a keyword that is a binary infix operator, like 'cmp'.
+# $parens - "$a op $b" is deparsed as "($a op $b)"
+# $strong - keyword is strong
+
+sub do_infix_keyword {
+ my ($keyword, $parens, $strong) = @_;
+ $SEEN_STRENGH{$keyword} = $strong;
+ my $expr = "(\$a $keyword \$b)";
+ my $nkey = $infix_map{$keyword} // $keyword;
+ my $expr = "(\$a $keyword \$b)";
+ my $exp = "\$a $nkey \$b";
+ $exp = "($exp)" if $parens;
+ $exp .= ";";
+ # with infix notation, a keyword is always interpreted as core,
+ # so no need for Deparse to disambiguate with CORE::
+ testit $keyword, "(\$a CORE::$keyword \$b)", $exp;
+ testit $keyword, "(\$a $keyword \$b)", $exp;
+ if (!$strong) {
+ testit $keyword, "$keyword(\$a, \$b)", "$keyword(\$a, \$b);";
+ }
+}
+
+# test a keyword that is as tandard op/function, like 'index(...)'.
+# narg - how many args to test it with
+# $parens - "foo $a, $b" is deparsed as "foo($a, $b)"
+# $dollar - an extra '$_' arg will appear in the deparsed output
+# $strong - keyword is strong
+
+
+sub do_std_keyword {
+ my ($keyword, $narg, $parens, $dollar, $strong) = @_;
+
+ $SEEN_STRENGH{$keyword} = $strong;
+
+ for my $core (0,1) { # if true, add CORE:: to keyword being deparsed
+ my @code;
+ for my $do_exp(0, 1) { # first create expr, then expected-expr
+ my @args = map "\$$_", (undef,"a".."z")[1..$narg];
+ push @args, '$_' if $dollar && $do_exp && ($strong || $core);
+ my $args = join(', ', @args);
+ $args = ((!$core && !$strong) || $parens)
+ ? "($args)"
+ : @args ? " $args" : "";
+ push @code, (($core && !($do_exp && $strong)) ? "CORE::" : "")
+ . "$keyword$args;";
+ }
+ testit $keyword, @code; # code[0]: to run; code[1]: expected
+ }
+}
+
+
+while (<DATA>) {
+ chomp;
+ s/#.*//;
+ next unless /\S/;
+
+ my @fields = split;
+ die "not 3 fields" unless @fields == 3;
+ my ($keyword, $args, $flags) = @fields;
+
+ $args = '012' if $args eq '@';
+
+ my $parens = $flags =~ s/p//;
+ my $invert1 = $flags =~ s/1//;
+ my $dollar = $flags =~ s/\$//;
+ my $strong = $flags =~ s/\+//;
+ die "unrecognised flag(s): '$flags'" unless $flags =~ /^-?$/;
+
+ if ($args eq 'B') { # binary infix
+ die "$keyword: binary (B) op can't have '\$' flag\\n" if $dollar;
+ die "$keyword: binary (B) op can't have '1' flag\\n" if $invert1;
+ do_infix_keyword($keyword, $parens, $strong);
+ }
+ else {
+ my @narg = split //, $args;
+ for my $n (0..$#narg) {
+ my $narg = $narg[$n];
+ my $p = $parens;
+ $p = !$p if ($n == 0 && $invert1);
+ do_std_keyword($keyword, $narg, $p, (!$n && $dollar), $strong);
+ }
+ }
}
+
# Special cases
-CORE_test dbmopen => 'CORE::dbmopen %foo, $bar, $baz';
-CORE_test dbmclose => 'CORE::dbmclose %foo';
-CORE_test eof => 'CORE::eof $foo', 'eof $arg';
-CORE_test eof => 'CORE::eof', 'eof';
-CORE_test eof => 'CORE::eof()', 'eof()';
-CORE_test exec => 'CORE::exec $foo $bar', 'exec PROGRAM LIST';
-CORE_test each => 'CORE::each %bar', 'each %hash';
-CORE_test keys => 'CORE::keys %bar', 'keys %hash';
-CORE_test reverse => 'CORE::reverse sort @foo', 'reverse sort';
-CORE_test system => 'CORE::system $foo $bar', 'system PROGRAM LIST';
-CORE_test values => 'CORE::values %bar', 'values %hash';
-CORE_test not => '3 unless CORE::not $a && $b', 'not';
-CORE_test readline => 'CORE::readline $a.$b', 'readline';
-CORE_test readpipe => 'CORE::readpipe $a+$b', 'readpipe';
-
-# Tests for prefixing feature.pm-enabled keywords with CORE:: when
-# feature.pm is not enabled are in deparse.t, as they fit that for-
-# mat better.
-
-done_testing();
+
+testit dbmopen => 'CORE::dbmopen(%foo, $bar, $baz);';
+testit dbmclose => 'CORE::dbmclose %foo;';
+
+testit delete => 'CORE::delete $h{\'foo\'};', 'delete $h{\'foo\'};';
+testit delete => 'delete $h{\'foo\'};', 'delete $h{\'foo\'};';
+
+# do is listed as strong, but only do { block } is strong;
+# do $file is weak, so test it separately here
+testit do => 'CORE::do $a;';
+testit do => 'do $a;', 'do($a);';
+testit do => 'CORE::do { 1 }',
+ "do {\n 1\n };";
+testit do => 'do { 1 };',
+ "do {\n 1\n };";
+
+testit each => 'CORE::each %bar;';
+
+testit eof => 'CORE::eof();';
+
+testit exists => 'CORE::exists $h{\'foo\'};', 'exists $h{\'foo\'};';
+testit exists => 'exists $h{\'foo\'};', 'exists $h{\'foo\'};';
+
+testit exec => 'CORE::exec($foo $bar);';
+
+# glob($x) gets deparsed as glob("$x").
+# Whether this is correct, I don't know; but I didn't want
+# to start messing with the whole glob/readline/<> mess - DAPM.
+testit glob => 'glob;', 'glob("$_");';
+testit glob => 'CORE::glob;', 'glob("$_");';
+testit glob => 'glob $a;', 'glob("$a");';
+testit glob => 'CORE::glob $a;', 'glob("$a");';
+
+testit grep => 'CORE::grep { $a } $b, $c', 'grep({$a;} $b, $c);';
+
+testit keys => 'CORE::keys %bar;';
+
+testit map => 'CORE::map { $a } $b, $c', 'map({$a;} $b, $c);';
+
+testit not => '3 unless CORE::not $a && $b;';
+
+testit readline => 'CORE::readline $a . $b;';
+
+testit readpipe => 'CORE::readpipe $a + $b;';
+
+testit reverse => 'CORE::reverse sort(@foo);';
+
+# note that the test does '() = split...' which is why the
+# limit is optimised to 1
+testit split => 'split;', q{split(' ', $_, 1);};
+testit split => 'CORE::split;', q{split(' ', $_, 1);};
+testit split => 'split $a;', q{split(/$a/u, $_, 1);};
+testit split => 'CORE::split $a;', q{split(/$a/u, $_, 1);};
+testit split => 'split $a, $b;', q{split(/$a/u, $b, 1);};
+testit split => 'CORE::split $a, $b;', q{split(/$a/u, $b, 1);};
+testit split => 'split $a, $b, $c;', q{split(/$a/u, $b, $c);};
+testit split => 'CORE::split $a, $b, $c;', q{split(/$a/u, $b, $c);};
+
+testit sub => 'CORE::sub { $a, $b }',
+ "sub {\n \$a, \$b;\n }\n ;";
+
+testit system => 'CORE::system($foo $bar);';
+
+testit values => 'CORE::values %bar;';
+
+
+# XXX These are deparsed wrapped in parens.
+# whether they should be, I don't know!
+
+testit dump => '(CORE::dump);';
+testit dump => '(CORE::dump FOO);';
+testit goto => '(CORE::goto);', '(goto);';
+testit goto => '(CORE::goto FOO);', '(goto FOO);';
+testit last => '(CORE::last);', '(last);';
+testit last => '(CORE::last FOO);', '(last FOO);';
+testit next => '(CORE::next);', '(next);';
+testit next => '(CORE::next FOO);', '(next FOO);';
+testit redo => '(CORE::redo);', '(redo);';
+testit redo => '(CORE::redo FOO);', '(redo FOO);';
+testit redo => '(CORE::redo);', '(redo);';
+testit redo => '(CORE::redo FOO);', '(redo FOO);';
+testit return => '(return);', '(return);';
+testit return => '(CORE::return);', '(return);';
+
+# these are the keywords I couldn't think how to test within this framework
+
+my %not_tested = map { $_ => 1} qw(
+ __DATA__
+ __END__
+ __FILE__
+ __LINE__
+ __PACKAGE__
+ __SUB__
+ AUTOLOAD
+ BEGIN
+ CHECK
+ CORE
+ DESTROY
+ END
+ INIT
+ UNITCHECK
+ default
+ else
+ elsif
+ for
+ foreach
+ format
+ given
+ if
+ m
+ no
+ package
+ q
+ qq
+ qr
+ qw
+ qx
+ require
+ s
+ tr
+ unless
+ until
+ use
+ when
+ while
+ y
+);
+
+
+
+# Sanity check against keyword data:
+# make sure we haven't missed any keywords,
+# and that we got the strength right.
+
+SKIP:
+{
+ skip "sanity checks when not PERL_CORE", 1 unless defined $ENV{PERL_CORE};
+ my $count = 0;
+ my $file = '../../regen/keywords.pl';
+ my $pass = 1;
+ if (open my $fh, '<', $file) {
+ while (<$fh>) {
+ last if /^__END__$/;
+ }
+ while (<$fh>) {
+ next unless /^([+\-])(\w+)$/;
+ my ($strength, $key) = ($1, $2);
+ $strength = ($strength eq '+') ? 1 : 0;
+ $count++;
+ if (!$SEEN{$key} && !$not_tested{$key}) {
+ diag("keyword '$key' seen in $file, but not tested here!!");
+ $pass = 0;
+ }
+ if (exists $SEEN_STRENGH{$key} and $SEEN_STRENGH{$key} != $strength) {
+ diag("keyword '$key' strengh as seen in $file doen't match here!!");
+ $pass = 0;
+ }
+ }
+ }
+ else {
+ diag("Can't open $file: $!");
+ $pass = 0;
+ }
+ # insanity check
+ if ($count < 200) {
+ diag("Saw $count keywords: less than 200!");
+ $pass = 0;
+ }
+ ok($pass, "sanity checks");
+}
+
+
+
+__DATA__
+#
+# format:
+# keyword args flags
+#
+# args consists of:
+# * one of more digits indictating which lengths of args the function accepts,
+# * or 'B' to indiate a binary infix operator,
+# * or '@' to indicate a list function.
+#
+# Flags consists of the following (or '-' if no flags):
+# + : strong keyword: can't be overrriden
+# p : the args are parenthesised on deparsing;
+# 1 : parenthesising of 1st arg length is inverted
+# so '234 p1' means: foo a1,a2; foo(a1,a2,a3); foo(a1,a2,a3,a4)
+# $ : on the first argument length, there is an implicit extra
+# '$_' arg which will appear on deparsing;
+# e.g. 12p$ will be tested as: foo(a1); foo(a1,a2);
+# and deparsed as: foo(a1, $_); foo(a1,a2);
+#
+# XXX Note that we really should get this data from regen/keywords.pl
+# and regen/opcodes (augmented if necessary), rather than duplicating it
+# here.
+
+__SUB__ 0 -
+abs 01 $
+accept 2 p
+alarm 01 $
+and B -
+atan2 2 p
+bind 2 p
+binmode 12 p
+bless 1 p
+break 0 -
+caller 0 -
+chdir 01 -
+chmod @ p1
+chomp @ $
+chop @ $
+chown @ p1
+chr 01 $
+chroot 01 $
+close 01 -
+closedir 1 -
+cmp B -
+connect 2 p
+continue 0 -
+cos 01 $
+crypt 2 p
+# dbmopen handled specially
+# dbmclose handled specially
+defined 01 $+
+# delete handled specially
+die @ p1
+# do handled specially
+# dump handled specially
+each 1 - # also tested specially
+endgrent 0 -
+endhostent 0 -
+endnetent 0 -
+endprotoent 0 -
+endpwent 0 -
+endservent 0 -
+eof 01 - # also tested specially
+eq B -
+eval 01 $+
+evalbytes 01 $
+exec @ p1 # also tested specially
+# exists handled specially
+exit 01 -
+exp 01 $
+fc 01 $
+fcntl 3 p
+fileno 1 -
+flock 2 p
+fork 0 -
+formline 2 p
+ge B -
+getc 01 -
+getgrent 0 -
+getgrgid 1 -
+getgrnam 1 -
+gethostbyaddr 2 p
+gethostbyname 1 -
+gethostent 0 -
+getlogin 0 -
+getnetbyaddr 2 p
+getnetbyname 1 -
+getnetent 0 -
+getpeername 1 -
+getpgrp 1 -
+getppid 0 -
+getpriority 2 p
+getprotobyname 1 -
+getprotobynumber 1 p
+getprotoent 0 -
+getpwent 0 -
+getpwnam 1 -
+getpwuid 1 -
+getservbyname 2 p
+getservbyport 2 p
+getservent 0 -
+getsockname 1 -
+getsockopt 3 p
+# given handled specially
+grep 123 p+ # also tested specially
+# glob handled specially
+# goto handled specially
+gmtime 01 -
+gt B -
+hex 01 $
+index 23 p
+int 01 $
+ioctl 3 p
+join 123 p
+keys 1 - # also tested specially
+kill 123 p
+# last handled specially
+lc 01 $
+lcfirst 01 $
+le B -
+length 01 $
+link 2 p
+listen 2 p
+local 1 p+
+localtime 01 -
+lock 1 -
+log 01 $
+lstat 01 $
+lt B -
+map 123 p+ # also tested specially
+mkdir @ p$
+msgctl 3 p
+msgget 2 p
+msgrcv 5 p
+msgsnd 3 p
+my 123 p+ # skip with 0 args, as my() => ()
+ne B -
+# next handled specially
+# not handled specially
+oct 01 $
+open 12345 p
+opendir 2 p
+or B -
+ord 01 $
+our 123 p+ # skip with 0 args, as our() => ()
+pack 123 p
+pipe 2 p
+pop 01 1
+pos 01 $+
+print @ p$+
+printf @ p$+
+prototype 1 +
+push 123 p
+quotemeta 01 $
+rand 01 -
+read 34 p
+readdir 1 -
+# readline handled specially
+readlink 01 $
+# readpipe handled specially
+recv 4 p
+# redo handled specially
+ref 01 $
+rename 2 p
+# XXX This code prints 'Undefined subroutine &main::require called':
+# use subs (); import subs 'require';
+# eval q[no strict 'vars'; sub { () = require; }]; print $@;
+# so disable for now
+#require 01 $+
+reset 01 -
+# return handled specially
+reverse @ p1 # also tested specially
+rewinddir 1 -
+rindex 23 p
+rmdir 01 $
+say @ p$+
+scalar 1 +
+seek 3 p
+seekdir 2 p
+select 014 p1
+semctl 4 p
+semget 3 p
+semop 2 p
+send 34 p
+setgrent 0 -
+sethostent 1 -
+setnetent 1 -
+setpgrp 2 p
+setpriority 3 p
+setprotoent 1 -
+setpwent 0 -
+setservent 1 -
+setsockopt 4 p
+shift 01 1
+shmctl 3 p
+shmget 3 p
+shmread 4 p
+shmwrite 4 p
+shutdown 2 p
+sin 01 $
+sleep 01 -
+socket 4 p
+socketpair 5 p
+sort @ p+
+# split handled specially
+splice 12345 p
+sprintf 123 p
+sqrt 01 $
+srand 01 -
+stat 01 $
+state 123 p+ # skip with 0 args, as state() => ()
+study 01 $+
+# sub handled specially
+substr 234 p
+symlink 2 p
+syscall 2 p
+sysopen 34 p
+sysread 34 p
+sysseek 3 p
+system @ p1 # also tested specially
+syswrite 234 p
+tell 01 -
+telldir 1 -
+tie 234 p
+tied 1 -
+time 0 -
+times 0 -
+truncate 2 p
+uc 01 $
+ucfirst 01 $
+umask 01 -
+undef 01 +
+unlink @ p$
+unpack 12 p$
+unshift 1 p
+untie 1 -
+utime @ p1
+values 1 - # also tested specially
+vec 3 p
+wait 0 -
+waitpid 2 p
+wantarray 0 -
+warn @ p1
+write 01 -
+x B -
+xor B p
diff --git a/gnu/usr.bin/perl/dist/B-Deparse/t/deparse.t b/gnu/usr.bin/perl/dist/B-Deparse/t/deparse.t
index 5085a5e5d76..7d4f9fe4f57 100755
--- a/gnu/usr.bin/perl/dist/B-Deparse/t/deparse.t
+++ b/gnu/usr.bin/perl/dist/B-Deparse/t/deparse.t
@@ -13,7 +13,7 @@ use warnings;
use strict;
use Test::More;
-my $tests = 17; # not counting those in the __DATA__ section
+my $tests = 18; # not counting those in the __DATA__ section
use B::Deparse;
my $deparse = B::Deparse->new();
@@ -104,6 +104,7 @@ my $path = join " ", map { qq["-I$_"] } @INC;
$a = `$^X $path "-MO=Deparse" -anlwi.bak -e 1 2>&1`;
$a =~ s/-e syntax OK\n//g;
$a =~ s/.*possible typo.*\n//; # Remove warning line
+$a =~ s/.*-i used with no filenames.*\n//; # Remove warning line
$a =~ s{\\340\\242}{\\s} if (ord("\\") == 224); # EBCDIC, cp 1047 or 037
$a =~ s{\\274\\242}{\\s} if (ord("\\") == 188); # $^O eq 'posix-bc'
$b = <<'EOF';
@@ -210,11 +211,11 @@ like($a, qr/-e syntax OK/,
"Deparse does not hang when traversing stash circularities");
# [perl #93990]
-@* = ();
-is($deparse->coderef2text(sub{ print "@{*}" }),
+@] = ();
+is($deparse->coderef2text(sub{ print "@{]}" }),
q<{
- print "@{*}";
-}>, 'curly around to interpolate "@{*}"');
+ print "@{]}";
+}>, 'curly around to interpolate "@{]}"');
is($deparse->coderef2text(sub{ print "@{-}" }),
q<{
print "@-";
@@ -242,6 +243,17 @@ SKIP: {
`;
}
+# multiple statements on format lines
+$a = `$^X $path "-MO=Deparse" -e "format =" -e "\@" -e "x();z()" -e. 2>&1`;
+$a =~ s/-e syntax OK\n//g;
+is($a, <<'EOCODH', 'multiple statements on format lines');
+format STDOUT =
+@
+x(); z()
+.
+EOCODH
+
+
done_testing($tests);
__DATA__
@@ -310,6 +322,8 @@ my $foo = "Ab\x{100}\200\x{200}\237Cd\000Ef\x{1000}\cA\x{2000}\cZ";
####
# s///e
s/x/'y';/e;
+s/x/$a;/e;
+s/x/complex_expression();/e;
####
# block
{ my $x; }
@@ -580,7 +594,7 @@ my $c = [];
my $d = \[];
####
# SKIP ?$] < 5.010 && "smartmatch and given/when not implemented on this Perl version"
-# CONTEXT use feature ':5.10';
+# CONTEXT use feature ':5.10'; no warnings 'experimental::smartmatch';
# implicit smartmatch in given/when
given ('foo') {
when ('bar') { continue; }
@@ -940,6 +954,7 @@ my @a;
$a[0] = 1;
####
# feature features without feature
+# CONTEXT no warnings 'experimental::smartmatch';
CORE::state $x;
CORE::say $x;
CORE::given ($x) {
@@ -955,6 +970,7 @@ CORE::evalbytes '';
() = CORE::fc $x;
####
# feature features when feature has been disabled by use VERSION
+# CONTEXT no warnings 'experimental::smartmatch';
use feature (sprintf(":%vd", $^V));
use 1;
CORE::state $x;
@@ -984,7 +1000,7 @@ CORE::evalbytes '';
() = CORE::__SUB__;
####
# (the above test with CONTEXT, and the output is equivalent but different)
-# CONTEXT use feature ':5.10';
+# CONTEXT use feature ':5.10'; no warnings 'experimental::smartmatch';
# feature features when feature has been disabled by use VERSION
use feature (sprintf(":%vd", $^V));
use 1;
@@ -1044,8 +1060,9 @@ my @x;
@x = ($#{<}, $#{.}, $#{>}, $#{/}, $#{?}, $#{=}, $#+, $#{\}, $#{|}, $#-);
@x = ($#{;}, $#{:});
####
-# ${#} interpolated (the first line magically disables the warning)
-() = *#;
+# ${#} interpolated
+# It's a known TODO that warnings are deparsed as bits, not textually.
+no warnings;
() = "${#}a";
####
# [perl #86060] $( $| $) in regexps need braces
@@ -1145,6 +1162,13 @@ $_ = ($a xor not +($1 || 2) ** 2);
() = warn() + 1;
() = setpgrp() + 1;
####
+# loopexes have assignment prec
+() = (CORE::dump a) | 'b';
+() = (goto a) | 'b';
+() = (last a) | 'b';
+() = (next a) | 'b';
+() = (redo a) | 'b';
+####
# [perl #63558] open local(*FH)
open local *FH;
pipe local *FH, local *FH;
@@ -1244,3 +1268,122 @@ foreach my $i (1 .. 3) {
continue {
();
}
+####
+# file handles
+no strict;
+my $mfh;
+open F;
+open *F;
+open $fh;
+open $mfh;
+open 'a+b';
+select *F;
+select F;
+select $f;
+select $mfh;
+select 'a+b';
+####
+# 'my' works with padrange op
+my($z, @z);
+my $m1;
+$m1 = 1;
+$z = $m1;
+my $m2 = 2;
+my($m3, $m4);
+($m3, $m4) = (1, 2);
+@z = ($m3, $m4);
+my($m5, $m6) = (1, 2);
+my($m7, undef, $m8) = (1, 2, 3);
+@z = ($m7, undef, $m8);
+($m7, undef, $m8) = (1, 2, 3);
+####
+# 'our/local' works with padrange op
+no strict;
+our($z, @z);
+our $o1;
+local $o11;
+$o1 = 1;
+local $o1 = 1;
+$z = $o1;
+$z = local $o1;
+our $o2 = 2;
+our($o3, $o4);
+($o3, $o4) = (1, 2);
+local($o3, $o4) = (1, 2);
+@z = ($o3, $o4);
+@z = local($o3, $o4);
+our($o5, $o6) = (1, 2);
+our($o7, undef, $o8) = (1, 2, 3);
+@z = ($o7, undef, $o8);
+@z = local($o7, undef, $o8);
+($o7, undef, $o8) = (1, 2, 3);
+local($o7, undef, $o8) = (1, 2, 3);
+####
+# 'state' works with padrange op
+no strict;
+use feature 'state';
+state($z, @z);
+state $s1;
+$s1 = 1;
+$z = $s1;
+state $s2 = 2;
+state($s3, $s4);
+($s3, $s4) = (1, 2);
+@z = ($s3, $s4);
+# assignment of state lists isn't implemented yet
+#state($s5, $s6) = (1, 2);
+#state($s7, undef, $s8) = (1, 2, 3);
+#@z = ($s7, undef, $s8);
+($s7, undef, $s8) = (1, 2, 3);
+####
+# anon lists with padrange
+my($a, $b);
+my $c = [$a, $b];
+my $d = {$a, $b};
+####
+# slices with padrange
+my($a, $b);
+my(@x, %y);
+@x = @x[$a, $b];
+@x = @y{$a, $b};
+####
+# binops with padrange
+my($a, $b, $c);
+$c = $a cmp $b;
+$c = $a + $b;
+$a += $b;
+$c = $a - $b;
+$a -= $b;
+$c = my $a1 cmp $b;
+$c = my $a2 + $b;
+$a += my $b1;
+$c = my $a3 - $b;
+$a -= my $b2;
+####
+# 'x' with padrange
+my($a, $b, $c, $d, @e);
+$c = $a x $b;
+$a x= $b;
+@e = ($a) x $d;
+@e = ($a, $b) x $d;
+@e = ($a, $b, $c) x $d;
+@e = ($a, 1) x $d;
+####
+# @_ with padrange
+my($a, $b, $c) = @_;
+####
+# SKIP ?$] < 5.017004 && "lexical subs not implemented on this Perl version"
+# TODO unimplemented in B::Deparse; RT #116553
+# lexical subroutine
+use feature 'lexical_subs';
+no warnings "experimental::lexical_subs";
+my sub f {}
+print f();
+####
+# SKIP ?$] < 5.017004 && "lexical subs not implemented on this Perl version"
+# TODO unimplemented in B::Deparse; RT #116553
+# lexical "state" subroutine
+use feature 'state', 'lexical_subs';
+no warnings 'experimental::lexical_subs';
+state sub f {}
+print f();
diff --git a/gnu/usr.bin/perl/dist/Carp/lib/Carp.pm b/gnu/usr.bin/perl/dist/Carp/lib/Carp.pm
index 51df862dd5b..69caac3e267 100644
--- a/gnu/usr.bin/perl/dist/Carp/lib/Carp.pm
+++ b/gnu/usr.bin/perl/dist/Carp/lib/Carp.pm
@@ -24,7 +24,7 @@ BEGIN {
}
}
-our $VERSION = '1.26';
+our $VERSION = '1.29';
our $MaxEvalLen = 0;
our $Verbose = 0;
@@ -130,7 +130,7 @@ sub caller_info {
= $cgc ? $cgc->($i) : caller($i);
}
- unless ( defined $call_info{pack} ) {
+ unless ( defined $call_info{file} ) {
return ();
}
@@ -162,12 +162,19 @@ sub caller_info {
= "** Incomplete caller override detected$where; \@DB::args were not set **";
}
else {
- @args = map { Carp::format_arg($_) } @DB::args;
- }
- if ( $MaxArgNums and @args > $MaxArgNums )
- { # More than we want to show?
- $#args = $MaxArgNums;
- push @args, '...';
+ @args = @DB::args;
+ my $overflow;
+ if ( $MaxArgNums and @args > $MaxArgNums )
+ { # More than we want to show?
+ $#args = $MaxArgNums;
+ $overflow = 1;
+ }
+
+ @args = map { Carp::format_arg($_) } @args;
+
+ if ($overflow) {
+ push @args, '...';
+ }
}
# Push the args onto the subroutine
@@ -232,6 +239,12 @@ sub get_subname {
}
}
+ # this can happen on older perls when the sub (or the stash containing it)
+ # has been deleted
+ if ( !defined( $info->{sub} ) ) {
+ return '__ANON__::__ANON__';
+ }
+
return ( $info->{sub} eq '(eval)' ) ? 'eval {...}' : $info->{sub};
}
@@ -243,7 +256,8 @@ sub long_error_loc {
{
++$i;
my $cgc = _cgc();
- my $pkg = $cgc ? $cgc->($i) : caller($i);
+ my @caller = $cgc ? $cgc->($i) : caller($i);
+ my $pkg = $caller[0];
unless ( defined($pkg) ) {
# This *shouldn't* happen.
@@ -252,9 +266,17 @@ sub long_error_loc {
$i = long_error_loc();
last;
}
+ elsif (defined $caller[2]) {
+ # this can happen when the stash has been deleted
+ # in that case, just assume that it's a reasonable place to
+ # stop (the file and line data will still be intact in any
+ # case) - the only issue is that we can't detect if the
+ # deleted package was internal (so don't do that then)
+ # -doy
+ redo unless 0 > --$lvl;
+ last;
+ }
else {
-
- # OK, now I am irritated.
return 2;
}
}
@@ -334,7 +356,20 @@ sub short_error_loc {
$i++;
my $caller = $cgc ? $cgc->($i) : caller($i);
- return 0 unless defined($caller); # What happened?
+ if (!defined($caller)) {
+ my @caller = $cgc ? $cgc->($i) : caller($i);
+ if (@caller) {
+ # if there's no package but there is other caller info, then
+ # the package has been deleted - treat this as a valid package
+ # in this case
+ redo if defined($called) && $CarpInternal{$called};
+ redo unless 0 > --$lvl;
+ last;
+ }
+ else {
+ return 0;
+ }
+ }
redo if $Internal{$caller};
redo if $CarpInternal{$caller};
redo if $CarpInternal{$called};
@@ -435,20 +470,25 @@ Carp - alternative warn and die for modules
# die of errors with stack backtrace
confess "not implemented";
- # cluck not exported by default
- use Carp qw(cluck);
+ # cluck, longmess and shortmess not exported by default
+ use Carp qw(cluck longmess shortmess);
cluck "This is how we got here!";
+ $long_message = longmess( "message from cluck() or confess()" );
+ $short_message = shortmess( "message from carp() or croak()" );
=head1 DESCRIPTION
The Carp routines are useful in your own modules because
-they act like die() or warn(), but with a message which is more
+they act like C<die()> or C<warn()>, but with a message which is more
likely to be useful to a user of your module. In the case of
-cluck, confess, and longmess that context is a summary of every
-call in the call-stack. For a shorter message you can use C<carp>
-or C<croak> which report the error as being from where your module
-was called. There is no guarantee that that is where the error
-was, but it is a good educated guess.
+C<cluck()> and C<confess()>, that context is a summary of every
+call in the call-stack; C<longmess()> returns the contents of the error
+message.
+
+For a shorter message you can use C<carp()> or C<croak()> which report the
+error as being from where your module was called. C<shortmess()> returns the
+contents of this error message. There is no guarantee that that is where the
+error was, but it is a good educated guess.
You can also alter the way the output and logic of C<Carp> works, by
changing some global variables in the C<Carp> namespace. See the
@@ -546,8 +586,8 @@ Defaults to C<8>.
=head2 $Carp::Verbose
-This variable makes C<carp> and C<croak> generate stack backtraces
-just like C<cluck> and C<confess>. This is how C<use Carp 'verbose'>
+This variable makes C<carp()> and C<croak()> generate stack backtraces
+just like C<cluck()> and C<confess()>. This is how C<use Carp 'verbose'>
is implemented internally.
Defaults to C<0>.
diff --git a/gnu/usr.bin/perl/dist/Carp/lib/Carp/Heavy.pm b/gnu/usr.bin/perl/dist/Carp/lib/Carp/Heavy.pm
index 3147d9b27a7..283b09bbf6d 100644
--- a/gnu/usr.bin/perl/dist/Carp/lib/Carp/Heavy.pm
+++ b/gnu/usr.bin/perl/dist/Carp/lib/Carp/Heavy.pm
@@ -2,7 +2,7 @@ package Carp::Heavy;
use Carp ();
-our $VERSION = '1.26';
+our $VERSION = '1.29';
1;
diff --git a/gnu/usr.bin/perl/dist/Carp/t/Carp.t b/gnu/usr.bin/perl/dist/Carp/t/Carp.t
index 06e977044f3..f7c226a2908 100644
--- a/gnu/usr.bin/perl/dist/Carp/t/Carp.t
+++ b/gnu/usr.bin/perl/dist/Carp/t/Carp.t
@@ -3,7 +3,7 @@ no warnings "once";
use Config;
use IPC::Open3 1.0103 qw(open3);
-use Test::More tests => 60;
+use Test::More tests => 61;
sub runperl {
my(%args) = @_;
@@ -28,6 +28,15 @@ BEGIN {
}
{
+ my $str = Carp::longmess("foo");
+ is(
+ $str,
+ "foo at t/Carp.t line 31.\n",
+ "we don't overshoot the top stack frame",
+ );
+}
+
+{
local $SIG{__WARN__} = sub {
like $_[0], qr/ok (\d+)\n at.+\b(?i:carp\.t) line \d+\.$/, 'ok 2\n';
};
diff --git a/gnu/usr.bin/perl/dist/Carp/t/stash_deletion.t b/gnu/usr.bin/perl/dist/Carp/t/stash_deletion.t
new file mode 100644
index 00000000000..9d1c786f97c
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Carp/t/stash_deletion.t
@@ -0,0 +1,111 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More tests => 15;
+
+use Carp;
+
+{
+ my $sub = eval <<'EVAL';
+package Die;
+sub {
+#line 1 foo
+ die "blah";
+}
+EVAL
+ ok(!$@);
+ eval { $sub->() };
+ like($@, qr/^blah at foo line 1/);
+ {
+ no strict 'refs';
+ delete ${'::'}{'Die::'};
+ }
+ eval { $sub->() };
+ like($@, qr/^blah at foo line 1/);
+}
+
+{
+ my $sub = eval <<'EVAL';
+package Confess;
+sub {
+#line 1 foo
+ Carp::confess("blah");
+}
+EVAL
+ ok(!$@);
+ eval { $sub->() };
+ like($@, qr/^blah at foo line 1/);
+ {
+ no strict 'refs';
+ delete ${'::'}{'Confess::'};
+ }
+ eval { $sub->() };
+ like($@, qr/^blah at foo line 1/);
+}
+
+{
+ my $sub = eval <<'EVAL';
+package CroakHelper;
+sub x {
+ Carp::croak("blah");
+}
+package Croak;
+sub {
+#line 1 foo
+ CroakHelper::x();
+}
+EVAL
+ ok(!$@);
+ eval { $sub->() };
+ like($@, qr/^blah at foo line 1/);
+ {
+ no strict 'refs';
+ delete ${'::'}{'Croak::'};
+ }
+ eval { $sub->() };
+ like($@, qr/^blah at foo line 1/);
+ {
+ no strict 'refs';
+ delete ${'::'}{'CroakHelper::'};
+ }
+ eval { $sub->() };
+ like($@, qr/^blah at foo line 1/);
+}
+
+{
+ # the amount of information available and how it is displayed varies quite
+ # a bit depending on the version of perl (specifically, what caller returns
+ # in that version), so there is a bit of fiddling around required to handle
+ # that
+ my $unknown_pat = qr/__ANON__::/;
+ $unknown_pat = qr/$unknown_pat|\(unknown\)/
+ if $] < 5.014;
+
+ my $sub = eval <<'EVAL';
+package SubHelper;
+sub x {
+ Carp::confess("blah");
+}
+package Sub;
+sub {
+#line 1 foo
+ SubHelper::x();
+}
+EVAL
+ ok(!$@);
+ eval { $sub->() };
+ unlike($@, qr/$unknown_pat/);
+ {
+ no strict 'refs';
+ delete ${'::'}{'Sub::'};
+ }
+ eval { $sub->() };
+ like($@, qr/$unknown_pat|Sub::/);
+ unlike($@, qr/$unknown_pat.*$unknown_pat/s);
+ {
+ no strict 'refs';
+ delete ${'::'}{'SubHelper::'};
+ }
+ eval { $sub->() };
+ like($@, qr/(?:$unknown_pat|SubHelper::).*(?:$unknown_pat|Sub::)/s);
+}
diff --git a/gnu/usr.bin/perl/dist/Cwd/Cwd.pm b/gnu/usr.bin/perl/dist/Cwd/Cwd.pm
index a48d20547f8..8886c67b4c5 100644
--- a/gnu/usr.bin/perl/dist/Cwd/Cwd.pm
+++ b/gnu/usr.bin/perl/dist/Cwd/Cwd.pm
@@ -171,7 +171,7 @@ use strict;
use Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
-$VERSION = '3.39_02';
+$VERSION = '3.40';
my $xs_version = $VERSION;
$VERSION =~ tr/_//;
@@ -624,8 +624,8 @@ sub fast_abs_path {
# Detaint else we'll explode in taint mode. This is safe because
# we're not doing anything dangerous with it.
- ($path) = $path =~ /(.*)/;
- ($cwd) = $cwd =~ /(.*)/;
+ ($path) = $path =~ /(.*)/s;
+ ($cwd) = $cwd =~ /(.*)/s;
unless (-e $path) {
_croak("$path: No such file or directory");
diff --git a/gnu/usr.bin/perl/dist/Cwd/Cwd.xs b/gnu/usr.bin/perl/dist/Cwd/Cwd.xs
index 539311662c5..3940006e626 100644
--- a/gnu/usr.bin/perl/dist/Cwd/Cwd.xs
+++ b/gnu/usr.bin/perl/dist/Cwd/Cwd.xs
@@ -247,7 +247,7 @@ return FALSE
#ifndef getcwd_sv
/* Taken from perl 5.8's util.c */
#define getcwd_sv(a) Perl_getcwd_sv(aTHX_ a)
-int Perl_getcwd_sv(pTHX_ register SV *sv)
+int Perl_getcwd_sv(pTHX_ SV *sv)
{
#ifndef PERL_MICRO
diff --git a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec.pm b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec.pm
index 782e28425b7..6062c015179 100644
--- a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec.pm
+++ b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec.pm
@@ -3,7 +3,7 @@ package File::Spec;
use strict;
use vars qw(@ISA $VERSION);
-$VERSION = '3.39_02';
+$VERSION = '3.40';
$VERSION =~ tr/_//;
my %module = (MacOS => 'Mac',
@@ -331,7 +331,7 @@ splitpath(), splitdir(), catpath() and catdir() by Barrie Slaymaker.
=head1 COPYRIGHT
-Copyright (c) 2004-2010 by the Perl 5 Porters. All rights reserved.
+Copyright (c) 2004-2013 by the Perl 5 Porters. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
diff --git a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Cygwin.pm b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Cygwin.pm
index b63b85f6cda..b27f7b15f19 100644
--- a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Cygwin.pm
+++ b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Cygwin.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.39_02';
+$VERSION = '3.40';
$VERSION =~ tr/_//;
@ISA = qw(File::Spec::Unix);
diff --git a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Epoc.pm b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Epoc.pm
index 50304ffed06..e7faa16086a 100644
--- a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Epoc.pm
+++ b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Epoc.pm
@@ -3,7 +3,7 @@ package File::Spec::Epoc;
use strict;
use vars qw($VERSION @ISA);
-$VERSION = '3.39_02';
+$VERSION = '3.40';
$VERSION =~ tr/_//;
require File::Spec::Unix;
diff --git a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Functions.pm b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Functions.pm
index 454a5b30898..f5b9046aa5e 100644
--- a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Functions.pm
+++ b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Functions.pm
@@ -5,7 +5,7 @@ use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-$VERSION = '3.39_02';
+$VERSION = '3.40';
$VERSION =~ tr/_//;
require Exporter;
diff --git a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Mac.pm b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Mac.pm
index 57d1d3efb33..7f42171bc92 100644
--- a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Mac.pm
+++ b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Mac.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.39_02';
+$VERSION = '3.40';
$VERSION =~ tr/_//;
@ISA = qw(File::Spec::Unix);
diff --git a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/OS2.pm b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/OS2.pm
index 5461cf7a701..7f60d68927a 100644
--- a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/OS2.pm
+++ b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/OS2.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.39_02';
+$VERSION = '3.40';
$VERSION =~ tr/_//;
@ISA = qw(File::Spec::Unix);
diff --git a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Unix.pm b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Unix.pm
index c150445d776..a1a91b42607 100644
--- a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Unix.pm
+++ b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Unix.pm
@@ -3,7 +3,7 @@ package File::Spec::Unix;
use strict;
use vars qw($VERSION);
-$VERSION = '3.39_02';
+$VERSION = '3.40';
$VERSION =~ tr/_//;
=head1 NAME
@@ -352,9 +352,11 @@ directories.
If $path is relative, it is converted to absolute form using L</rel2abs()>.
This means that it is taken to be relative to L<cwd()|Cwd>.
-No checks against the filesystem are made. On VMS, there is
-interaction with the working environment, as logicals and
-macros are expanded.
+No checks against the filesystem are made, so the result may not be correct if
+C<$base> contains symbolic links. (Apply
+L<Cwd::abs_path()|Cwd/abs_path> beforehand if that
+is a concern.) On VMS, there is interaction with the working environment, as
+logicals and macros are expanded.
Based on code written by Shigio Yamaguchi.
@@ -366,28 +368,32 @@ sub abs2rel {
($path, $base) = map $self->canonpath($_), $path, $base;
+ my $path_directories;
+ my $base_directories;
+
if (grep $self->file_name_is_absolute($_), $path, $base) {
($path, $base) = map $self->rel2abs($_), $path, $base;
- }
- else {
- # save a couple of cwd()s if both paths are relative
- ($path, $base) = map $self->catdir('/', $_), $path, $base;
- }
- my ($path_volume) = $self->splitpath($path, 1);
- my ($base_volume) = $self->splitpath($base, 1);
+ my ($path_volume) = $self->splitpath($path, 1);
+ my ($base_volume) = $self->splitpath($base, 1);
- # Can't relativize across volumes
- return $path unless $path_volume eq $base_volume;
+ # Can't relativize across volumes
+ return $path unless $path_volume eq $base_volume;
- my $path_directories = ($self->splitpath($path, 1))[1];
- my $base_directories = ($self->splitpath($base, 1))[1];
+ $path_directories = ($self->splitpath($path, 1))[1];
+ $base_directories = ($self->splitpath($base, 1))[1];
- # For UNC paths, the user might give a volume like //foo/bar that
- # strictly speaking has no directory portion. Treat it as if it
- # had the root directory for that volume.
- if (!length($base_directories) and $self->file_name_is_absolute($base)) {
- $base_directories = $self->rootdir;
+ # For UNC paths, the user might give a volume like //foo/bar that
+ # strictly speaking has no directory portion. Treat it as if it
+ # had the root directory for that volume.
+ if (!length($base_directories) and $self->file_name_is_absolute($base)) {
+ $base_directories = $self->rootdir;
+ }
+ }
+ else {
+ my $wd= ($self->splitpath($self->_cwd(), 1))[1];
+ $path_directories = $self->catdir($wd, $path);
+ $base_directories = $self->catdir($wd, $base);
}
# Now, remove all leading components that are the same
@@ -395,19 +401,39 @@ sub abs2rel {
my @basechunks = $self->splitdir( $base_directories );
if ($base_directories eq $self->rootdir) {
+ return $self->curdir if $path_directories eq $self->rootdir;
shift @pathchunks;
return $self->canonpath( $self->catpath('', $self->catdir( @pathchunks ), '') );
}
+ my @common;
while (@pathchunks && @basechunks && $self->_same($pathchunks[0], $basechunks[0])) {
- shift @pathchunks ;
+ push @common, shift @pathchunks ;
shift @basechunks ;
}
return $self->curdir unless @pathchunks || @basechunks;
- # $base now contains the directories the resulting relative path
- # must ascend out of before it can descend to $path_directory.
- my $result_dirs = $self->catdir( ($self->updir) x @basechunks, @pathchunks );
+ # @basechunks now contains the directories the resulting relative path
+ # must ascend out of before it can descend to $path_directory. If there
+ # are updir components, we must descend into the corresponding directories
+ # (this only works if they are no symlinks).
+ my @reverse_base;
+ while( defined(my $dir= shift @basechunks) ) {
+ if( $dir ne $self->updir ) {
+ unshift @reverse_base, $self->updir;
+ push @common, $dir;
+ }
+ elsif( @common ) {
+ if( @reverse_base && $reverse_base[0] eq $self->updir ) {
+ shift @reverse_base;
+ pop @common;
+ }
+ else {
+ unshift @reverse_base, pop @common;
+ }
+ }
+ }
+ my $result_dirs = $self->catdir( @reverse_base, @pathchunks );
return $self->canonpath( $self->catpath('', $result_dirs, '') );
}
@@ -473,6 +499,8 @@ Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
+Please submit bug reports and patches to perlbug@perl.org.
+
=head1 SEE ALSO
L<File::Spec>
diff --git a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/VMS.pm b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/VMS.pm
index 1ababbf1350..6af1ac0b3d1 100644
--- a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/VMS.pm
+++ b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/VMS.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.39_02';
+$VERSION = '3.40';
$VERSION =~ tr/_//;
@ISA = qw(File::Spec::Unix);
diff --git a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Win32.pm b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Win32.pm
index 39f5a8bb95a..ae74a265931 100644
--- a/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Win32.pm
+++ b/gnu/usr.bin/perl/dist/Cwd/lib/File/Spec/Win32.pm
@@ -5,7 +5,7 @@ use strict;
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.39_02';
+$VERSION = '3.40';
$VERSION =~ tr/_//;
@ISA = qw(File::Spec::Unix);
diff --git a/gnu/usr.bin/perl/dist/Cwd/t/Spec.t b/gnu/usr.bin/perl/dist/Cwd/t/Spec.t
index be3139cd1e1..de6d23792d7 100644
--- a/gnu/usr.bin/perl/dist/Cwd/t/Spec.t
+++ b/gnu/usr.bin/perl/dist/Cwd/t/Spec.t
@@ -120,6 +120,10 @@ my @tests = (
[ "Unix->abs2rel('/t1/t2/t3', '/t1')", 't2/t3' ],
[ "Unix->abs2rel('t1/t2/t3', 't1')", 't2/t3' ],
[ "Unix->abs2rel('t1/t2/t3', 't4')", '../t1/t2/t3' ],
+ [ "Unix->abs2rel('.', '.')", '.' ],
+ [ "Unix->abs2rel('/', '/')", '.' ],
+ [ "Unix->abs2rel('../t1', 't2/t3')", '../../../t1' ],
+ [ "Unix->abs2rel('t1', 't2/../t3')", '../t1' ],
[ "Unix->rel2abs('t4','/t1/t2/t3')", '/t1/t2/t3/t4' ],
[ "Unix->rel2abs('t4/t5','/t1/t2/t3')", '/t1/t2/t3/t4/t5' ],
diff --git a/gnu/usr.bin/perl/dist/Cwd/t/cwd.t b/gnu/usr.bin/perl/dist/Cwd/t/cwd.t
index c9a218725b9..f7b03ed4fc6 100644
--- a/gnu/usr.bin/perl/dist/Cwd/t/cwd.t
+++ b/gnu/usr.bin/perl/dist/Cwd/t/cwd.t
@@ -36,7 +36,7 @@ if ($IsVMS) {
$vms_mode = 0 if ($vms_unix_rpt);
}
-my $tests = 30;
+my $tests = 31;
# _perl_abs_path() currently only works when the directory separator
# is '/', so don't test it when it won't work.
my $EXTRA_ABSPATH_TESTS = ($Config{prefix} =~ m/\//) && $^O ne 'cygwin';
@@ -245,6 +245,16 @@ SKIP: {
if $EXTRA_ABSPATH_TESTS;
}
+SKIP: {
+ my $dir = "${$}a\nx";
+ mkdir $dir or skip "OS does not support dir names containing LF";
+ chdir $dir or skip "OS cannot chdir into LF";
+ eval { Cwd::fast_abs_path() };
+ is $@, "", 'fast_abs_path does not die in dir whose name contains LF';
+ chdir File::Spec->updir;
+ rmdir $dir;
+}
+
#############################################
# These routines give us sort of a poor-man's cross-platform
diff --git a/gnu/usr.bin/perl/dist/Cwd/t/taint.t b/gnu/usr.bin/perl/dist/Cwd/t/taint.t
index 60cbfebc413..309b3e5dfcb 100644
--- a/gnu/usr.bin/perl/dist/Cwd/t/taint.t
+++ b/gnu/usr.bin/perl/dist/Cwd/t/taint.t
@@ -8,7 +8,14 @@ chdir 't' unless $ENV{PERL_CORE};
use File::Spec;
use lib File::Spec->catdir('t', 'lib');
-use Test::More tests => 17;
+use Test::More;
+BEGIN {
+ plan(
+ ${^TAINT}
+ ? (tests => 17)
+ : (skip_all => "A perl without taint support")
+ );
+}
use Scalar::Util qw/tainted/;
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/Changes b/gnu/usr.bin/perl/dist/Data-Dumper/Changes
index 07db63831ff..84627babbf1 100644
--- a/gnu/usr.bin/perl/dist/Data-Dumper/Changes
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/Changes
@@ -1,11 +1,69 @@
=head1 NAME
-HISTORY - public release history for Data::Dumper
+Changes - public release history for Data::Dumper
=head1 DESCRIPTION
=over 8
+=item 2.145 (Mar 15 2013)
+
+Test refactoring and fixing wide and far.
+
+Various old-perl compat fixes.
+
+=item 2.143 (Feb 26 2013)
+
+Address vstring related test failures on 5.8: Skip tests for
+obscure case.
+
+Major improvements to test coverage and significant refactoring.
+
+Make Data::Dumper XS ignore Freezer return value. Fixes RT #116364.
+
+Change call of isALNUM to equivalent but more clearly named isWORDCHAR
+
+=item 2.139 (Dec 12 2012)
+
+Supply an explicit dynamic_config => 0 in META
+
+Properly list BUILD_REQUIRES prereqs (P5-RT#116028)
+
+Some optimizations. Removed useless "register" declarations.
+
+=item 2.136 (Oct 04 2012)
+
+Promote to stable release.
+
+Drop some "register" declarations.
+
+=item 2.135_07 (Aug 06 2012)
+
+Use the new utf8 to code point functions - fixing a potential
+reading buffer overrun.
+
+Data::Dumper: Sparseseen option to avoid building much of the seen
+hash: This has been measured to, in some cases, provide a 50% speed-up
+
+Dumper.xs: Avoid scan_vstring on 5.17.3 and up
+
+Avoid a warning from clang when compiling Data::Dumper
+
+Fix DD's dumping of qr|\/|
+
+Data::Dumper's Perl implementation was not working with overloaded
+blessed globs, which it thought were strings.
+
+Allow Data::Dumper to load on miniperl
+
+=item 2.135_02 (Dec 29 2011)
+
+Makes DD dump *{''} properly.
+
+[perl #101162] DD support for vstrings:
+Support for vstrings to Data::Dumper, in both Perl and XS
+implementations.
+
=item 2.135_01 (Dec 19 2011)
Make Data::Dumper UTF8- and null-clean with GVs.
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/Dumper.pm b/gnu/usr.bin/perl/dist/Data-Dumper/Dumper.pm
index a0992776137..a04024e7432 100644
--- a/gnu/usr.bin/perl/dist/Data-Dumper/Dumper.pm
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/Dumper.pm
@@ -10,8 +10,8 @@
package Data::Dumper;
BEGIN {
- $VERSION = '2.135_06'; # Don't forget to set version and release
-} # date in POD!
+ $VERSION = '2.145'; # Don't forget to set version and release
+} # date in POD below!
#$| = 1;
@@ -30,9 +30,9 @@ BEGIN {
# XSLoader should be attempted to load, or the pure perl flag
# toggled on load failure.
eval {
- require XSLoader;
- XSLoader::load( 'Data::Dumper' );
- 1
+ require XSLoader;
+ XSLoader::load( 'Data::Dumper' );
+ 1
}
or $Useperl = 1;
}
@@ -55,6 +55,7 @@ $Pair = ' => ' unless defined $Pair;
$Useperl = 0 unless defined $Useperl;
$Sortkeys = 0 unless defined $Sortkeys;
$Deparse = 0 unless defined $Deparse;
+$Sparseseen = 0 unless defined $Sparseseen;
#
# expects an arrayref of values to be dumped.
@@ -65,36 +66,37 @@ $Deparse = 0 unless defined $Deparse;
sub new {
my($c, $v, $n) = @_;
- croak "Usage: PACKAGE->new(ARRAYREF, [ARRAYREF])"
+ croak "Usage: PACKAGE->new(ARRAYREF, [ARRAYREF])"
unless (defined($v) && (ref($v) eq 'ARRAY'));
$n = [] unless (defined($n) && (ref($n) eq 'ARRAY'));
- my($s) = {
- level => 0, # current recursive depth
- indent => $Indent, # various styles of indenting
- pad => $Pad, # all lines prefixed by this string
- xpad => "", # padding-per-level
- apad => "", # added padding for hash keys n such
- sep => "", # list separator
- pair => $Pair, # hash key/value separator: defaults to ' => '
- seen => {}, # local (nested) refs (id => [name, val])
- todump => $v, # values to dump []
- names => $n, # optional names for values []
- varname => $Varname, # prefix to use for tagging nameless ones
- purity => $Purity, # degree to which output is evalable
- useqq => $Useqq, # use "" for strings (backslashitis ensues)
- terse => $Terse, # avoid name output (where feasible)
- freezer => $Freezer, # name of Freezer method for objects
- toaster => $Toaster, # name of method to revive objects
- deepcopy => $Deepcopy, # dont cross-ref, except to stop recursion
- quotekeys => $Quotekeys, # quote hash keys
- 'bless' => $Bless, # keyword to use for "bless"
-# expdepth => $Expdepth, # cutoff depth for explicit dumping
- maxdepth => $Maxdepth, # depth beyond which we give up
- useperl => $Useperl, # use the pure Perl implementation
- sortkeys => $Sortkeys, # flag or filter for sorting hash keys
- deparse => $Deparse, # use B::Deparse for coderefs
- };
+ my($s) = {
+ level => 0, # current recursive depth
+ indent => $Indent, # various styles of indenting
+ pad => $Pad, # all lines prefixed by this string
+ xpad => "", # padding-per-level
+ apad => "", # added padding for hash keys n such
+ sep => "", # list separator
+ pair => $Pair, # hash key/value separator: defaults to ' => '
+ seen => {}, # local (nested) refs (id => [name, val])
+ todump => $v, # values to dump []
+ names => $n, # optional names for values []
+ varname => $Varname, # prefix to use for tagging nameless ones
+ purity => $Purity, # degree to which output is evalable
+ useqq => $Useqq, # use "" for strings (backslashitis ensues)
+ terse => $Terse, # avoid name output (where feasible)
+ freezer => $Freezer, # name of Freezer method for objects
+ toaster => $Toaster, # name of method to revive objects
+ deepcopy => $Deepcopy, # dont cross-ref, except to stop recursion
+ quotekeys => $Quotekeys, # quote hash keys
+ 'bless' => $Bless, # keyword to use for "bless"
+# expdepth => $Expdepth, # cutoff depth for explicit dumping
+ maxdepth => $Maxdepth, # depth beyond which we give up
+ useperl => $Useperl, # use the pure Perl implementation
+ sortkeys => $Sortkeys, # flag or filter for sorting hash keys
+ deparse => $Deparse, # use B::Deparse for coderefs
+ noseen => $Sparseseen, # do not populate the seen hash unless necessary
+ };
if ($Indent > 0) {
$s->{xpad} = " ";
@@ -147,21 +149,26 @@ sub Seen {
init_refaddr_format();
my($k, $v, $id);
while (($k, $v) = each %$g) {
- if (defined $v and ref $v) {
- $id = format_refaddr($v);
- if ($k =~ /^[*](.*)$/) {
- $k = (ref $v eq 'ARRAY') ? ( "\\\@" . $1 ) :
- (ref $v eq 'HASH') ? ( "\\\%" . $1 ) :
- (ref $v eq 'CODE') ? ( "\\\&" . $1 ) :
- ( "\$" . $1 ) ;
- }
- elsif ($k !~ /^\$/) {
- $k = "\$" . $k;
- }
- $s->{seen}{$id} = [$k, $v];
+ if (defined $v) {
+ if (ref $v) {
+ $id = format_refaddr($v);
+ if ($k =~ /^[*](.*)$/) {
+ $k = (ref $v eq 'ARRAY') ? ( "\\\@" . $1 ) :
+ (ref $v eq 'HASH') ? ( "\\\%" . $1 ) :
+ (ref $v eq 'CODE') ? ( "\\\&" . $1 ) :
+ ( "\$" . $1 ) ;
+ }
+ elsif ($k !~ /^\$/) {
+ $k = "\$" . $k;
+ }
+ $s->{seen}{$id} = [$k, $v];
+ }
+ else {
+ carp "Only refs supported, ignoring non-ref item \$$k";
+ }
}
else {
- carp "Only refs supported, ignoring non-ref item \$$k";
+ carp "Value of ref must be defined; ignoring undefined item \$$k";
}
}
return $s;
@@ -176,9 +183,14 @@ sub Seen {
#
sub Values {
my($s, $v) = @_;
- if (defined($v) && (ref($v) eq 'ARRAY')) {
- $s->{todump} = [@$v]; # make a copy
- return $s;
+ if (defined($v)) {
+ if (ref($v) eq 'ARRAY') {
+ $s->{todump} = [@$v]; # make a copy
+ return $s;
+ }
+ else {
+ croak "Argument to Values, if provided, must be array ref";
+ }
}
else {
return @{$s->{todump}};
@@ -190,9 +202,14 @@ sub Values {
#
sub Names {
my($s, $n) = @_;
- if (defined($n) && (ref($n) eq 'ARRAY')) {
- $s->{names} = [@$n]; # make a copy
- return $s;
+ if (defined($n)) {
+ if (ref($n) eq 'ARRAY') {
+ $s->{names} = [@$n]; # make a copy
+ return $s;
+ }
+ else {
+ croak "Argument to Names, if provided, must be array ref";
+ }
}
else {
return @{$s->{names}};
@@ -203,9 +220,9 @@ sub DESTROY {}
sub Dump {
return &Dumpxs
- unless $Data::Dumper::Useperl || (ref($_[0]) && $_[0]->{useperl}) ||
- $Data::Dumper::Useqq || (ref($_[0]) && $_[0]->{useqq}) ||
- $Data::Dumper::Deparse || (ref($_[0]) && $_[0]->{deparse});
+ unless $Data::Dumper::Useperl || (ref($_[0]) && $_[0]->{useperl}) ||
+ $Data::Dumper::Useqq || (ref($_[0]) && $_[0]->{useqq}) ||
+ $Data::Dumper::Deparse || (ref($_[0]) && $_[0]->{deparse});
return &Dumpperl;
}
@@ -223,28 +240,9 @@ sub Dumpperl {
$s = $s->new(@_) unless ref $s;
for $val (@{$s->{todump}}) {
- my $out = "";
@post = ();
$name = $s->{names}[$i++];
- if (defined $name) {
- if ($name =~ /^[*](.*)$/) {
- if (defined $val) {
- $name = (ref $val eq 'ARRAY') ? ( "\@" . $1 ) :
- (ref $val eq 'HASH') ? ( "\%" . $1 ) :
- (ref $val eq 'CODE') ? ( "\*" . $1 ) :
- ( "\$" . $1 ) ;
- }
- else {
- $name = "\$" . $1;
- }
- }
- elsif ($name !~ /^\$/) {
- $name = "\$" . $name;
- }
- }
- else {
- $name = "\$" . $s->{varname} . $i;
- }
+ $name = $s->_refine_name($name, $val, $i);
my $valstr;
{
@@ -254,9 +252,7 @@ sub Dumpperl {
}
$valstr = "$name = " . $valstr . ';' if @post or !$s->{terse};
- $out .= $s->{pad} . $valstr . $s->{sep};
- $out .= $s->{pad} . join(';' . $s->{sep} . $s->{pad}, @post)
- . ';' . $s->{sep} if @post;
+ my $out = $s->_compose_out($valstr, \@post);
push @out, $out;
}
@@ -282,8 +278,7 @@ use constant _bad_vsmg => defined &_vstring && (_vstring(~v0)||'') eq "v0";
#
sub _dump {
my($s, $val, $name) = @_;
- my($sname);
- my($out, $realpack, $realtype, $type, $ipad, $id, $blesspad);
+ my($out, $type, $id, $sname);
$type = ref $val;
$out = "";
@@ -300,65 +295,64 @@ sub _dump {
}
require Scalar::Util;
- $realpack = Scalar::Util::blessed($val);
- $realtype = $realpack ? Scalar::Util::reftype($val) : ref $val;
+ my $realpack = Scalar::Util::blessed($val);
+ my $realtype = $realpack ? Scalar::Util::reftype($val) : ref $val;
$id = format_refaddr($val);
- # if it has a name, we need to either look it up, or keep a tab
- # on it so we know when we hit it later
- if (defined($name) and length($name)) {
- # keep a tab on it so that we dont fall into recursive pit
- if (exists $s->{seen}{$id}) {
-# if ($s->{expdepth} < $s->{level}) {
- if ($s->{purity} and $s->{level} > 0) {
- $out = ($realtype eq 'HASH') ? '{}' :
- ($realtype eq 'ARRAY') ? '[]' :
- 'do{my $o}' ;
- push @post, $name . " = " . $s->{seen}{$id}[0];
- }
- else {
- $out = $s->{seen}{$id}[0];
- if ($name =~ /^([\@\%])/) {
- my $start = $1;
- if ($out =~ /^\\$start/) {
- $out = substr($out, 1);
- }
- else {
- $out = $start . '{' . $out . '}';
- }
- }
- }
- return $out;
-# }
+ # Note: By this point $name is always defined and of non-zero length.
+ # Keep a tab on it so that we dont fall into recursive pit.
+ if (exists $s->{seen}{$id}) {
+ if ($s->{purity} and $s->{level} > 0) {
+ $out = ($realtype eq 'HASH') ? '{}' :
+ ($realtype eq 'ARRAY') ? '[]' :
+ 'do{my $o}' ;
+ push @post, $name . " = " . $s->{seen}{$id}[0];
}
else {
- # store our name
- $s->{seen}{$id} = [ (($name =~ /^[@%]/) ? ('\\' . $name ) :
- ($realtype eq 'CODE' and
- $name =~ /^[*](.*)$/) ? ('\\&' . $1 ) :
- $name ),
- $val ];
+ $out = $s->{seen}{$id}[0];
+ if ($name =~ /^([\@\%])/) {
+ my $start = $1;
+ if ($out =~ /^\\$start/) {
+ $out = substr($out, 1);
+ }
+ else {
+ $out = $start . '{' . $out . '}';
+ }
+ }
}
+ return $out;
}
- my $no_bless = 0;
+ else {
+ # store our name
+ $s->{seen}{$id} = [ (
+ ($name =~ /^[@%]/)
+ ? ('\\' . $name )
+ : ($realtype eq 'CODE' and $name =~ /^[*](.*)$/)
+ ? ('\\&' . $1 )
+ : $name
+ ), $val ];
+ }
+ my $no_bless = 0;
my $is_regex = 0;
if ( $realpack and ($] >= 5.009005 ? re::is_regexp($val) : $realpack eq 'Regexp') ) {
$is_regex = 1;
$no_bless = $realpack eq 'Regexp';
}
- # If purity is not set and maxdepth is set, then check depth:
+ # If purity is not set and maxdepth is set, then check depth:
# if we have reached maximum depth, return the string
# representation of the thing we are currently examining
- # at this depth (i.e., 'Foo=ARRAY(0xdeadbeef)').
+ # at this depth (i.e., 'Foo=ARRAY(0xdeadbeef)').
if (!$s->{purity}
- and $s->{maxdepth} > 0
- and $s->{level} >= $s->{maxdepth})
+ and defined($s->{maxdepth})
+ and $s->{maxdepth} > 0
+ and $s->{level} >= $s->{maxdepth})
{
return qq['$val'];
}
# we have a blessed ref
+ my ($blesspad);
if ($realpack and !$no_bless) {
$out = $s->{'bless'} . '( ';
$blesspad = $s->{apad};
@@ -366,13 +360,13 @@ sub _dump {
}
$s->{level}++;
- $ipad = $s->{xpad} x $s->{level};
+ my $ipad = $s->{xpad} x $s->{level};
if ($is_regex) {
my $pat;
- # This really sucks, re:regexp_pattern is in ext/re/re.xs and not in
+ # This really sucks, re:regexp_pattern is in ext/re/re.xs and not in
# universal.c, and even worse we cant just require that re to be loaded
- # we *have* to use() it.
+ # we *have* to use() it.
# We should probably move it to universal.c for 5.10.1 and fix this.
# Currently we only use re::regexp_pattern when the re is blessed into another
# package. This has the disadvantage of meaning that a DD dump won't round trip
@@ -382,115 +376,123 @@ sub _dump {
# But since this means loading the full debugging engine in process we wont
# bother unless its necessary for accuracy.
if (($realpack ne 'Regexp') && defined(*re::regexp_pattern{CODE})) {
- $pat = re::regexp_pattern($val);
- } else {
- $pat = "$val";
+ $pat = re::regexp_pattern($val);
+ }
+ else {
+ $pat = "$val";
}
$pat =~ s <(\\.)|/> { $1 || '\\/' }ge;
$out .= "qr/$pat/";
}
elsif ($realtype eq 'SCALAR' || $realtype eq 'REF'
- || $realtype eq 'VSTRING') {
+ || $realtype eq 'VSTRING') {
if ($realpack) {
- $out .= 'do{\\(my $o = ' . $s->_dump($$val, "\${$name}") . ')}';
+ $out .= 'do{\\(my $o = ' . $s->_dump($$val, "\${$name}") . ')}';
}
else {
- $out .= '\\' . $s->_dump($$val, "\${$name}");
+ $out .= '\\' . $s->_dump($$val, "\${$name}");
}
}
elsif ($realtype eq 'GLOB') {
- $out .= '\\' . $s->_dump($$val, "*{$name}");
+ $out .= '\\' . $s->_dump($$val, "*{$name}");
}
elsif ($realtype eq 'ARRAY') {
my($pad, $mname);
my($i) = 0;
$out .= ($name =~ /^\@/) ? '(' : '[';
$pad = $s->{sep} . $s->{pad} . $s->{apad};
- ($name =~ /^\@(.*)$/) ? ($mname = "\$" . $1) :
- # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
- ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
- ($mname = $name . '->');
+ ($name =~ /^\@(.*)$/) ? ($mname = "\$" . $1) :
+ # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
+ ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
+ ($mname = $name . '->');
$mname .= '->' if $mname =~ /^\*.+\{[A-Z]+\}$/;
for my $v (@$val) {
- $sname = $mname . '[' . $i . ']';
- $out .= $pad . $ipad . '#' . $i if $s->{indent} >= 3;
- $out .= $pad . $ipad . $s->_dump($v, $sname);
- $out .= "," if $i++ < $#$val;
+ $sname = $mname . '[' . $i . ']';
+ $out .= $pad . $ipad . '#' . $i
+ if $s->{indent} >= 3;
+ $out .= $pad . $ipad . $s->_dump($v, $sname);
+ $out .= "," if $i++ < $#$val;
}
$out .= $pad . ($s->{xpad} x ($s->{level} - 1)) if $i;
$out .= ($name =~ /^\@/) ? ')' : ']';
}
elsif ($realtype eq 'HASH') {
- my($k, $v, $pad, $lpad, $mname, $pair);
+ my ($k, $v, $pad, $lpad, $mname, $pair);
$out .= ($name =~ /^\%/) ? '(' : '{';
$pad = $s->{sep} . $s->{pad} . $s->{apad};
$lpad = $s->{apad};
$pair = $s->{pair};
($name =~ /^\%(.*)$/) ? ($mname = "\$" . $1) :
- # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
- ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
- ($mname = $name . '->');
+ # omit -> if $foo->[0]->{bar}, but not ${$foo->[0]}->{bar}
+ ($name =~ /^\\?[\%\@\*\$][^{].*[]}]$/) ? ($mname = $name) :
+ ($mname = $name . '->');
$mname .= '->' if $mname =~ /^\*.+\{[A-Z]+\}$/;
- my ($sortkeys, $keys, $key) = ("$s->{sortkeys}");
+ my $sortkeys = defined($s->{sortkeys}) ? $s->{sortkeys} : '';
+ my $keys = [];
if ($sortkeys) {
- if (ref($s->{sortkeys}) eq 'CODE') {
- $keys = $s->{sortkeys}($val);
- unless (ref($keys) eq 'ARRAY') {
- carp "Sortkeys subroutine did not return ARRAYREF";
- $keys = [];
- }
- }
- else {
- $keys = [ sort keys %$val ];
- }
+ if (ref($s->{sortkeys}) eq 'CODE') {
+ $keys = $s->{sortkeys}($val);
+ unless (ref($keys) eq 'ARRAY') {
+ carp "Sortkeys subroutine did not return ARRAYREF";
+ $keys = [];
+ }
+ }
+ else {
+ $keys = [ sort keys %$val ];
+ }
}
# Ensure hash iterator is reset
keys(%$val);
+ my $key;
while (($k, $v) = ! $sortkeys ? (each %$val) :
- @$keys ? ($key = shift(@$keys), $val->{$key}) :
- () )
+ @$keys ? ($key = shift(@$keys), $val->{$key}) :
+ () )
{
- my $nk = $s->_dump($k, "");
- $nk = $1 if !$s->{quotekeys} and $nk =~ /^[\"\']([A-Za-z_]\w*)[\"\']$/;
- $sname = $mname . '{' . $nk . '}';
- $out .= $pad . $ipad . $nk . $pair;
-
- # temporarily alter apad
- $s->{apad} .= (" " x (length($nk) + 4)) if $s->{indent} >= 2;
- $out .= $s->_dump($val->{$k}, $sname) . ",";
- $s->{apad} = $lpad if $s->{indent} >= 2;
+ my $nk = $s->_dump($k, "");
+ $nk = $1
+ if !$s->{quotekeys} and $nk =~ /^[\"\']([A-Za-z_]\w*)[\"\']$/;
+ $sname = $mname . '{' . $nk . '}';
+ $out .= $pad . $ipad . $nk . $pair;
+
+ # temporarily alter apad
+ $s->{apad} .= (" " x (length($nk) + 4))
+ if $s->{indent} >= 2;
+ $out .= $s->_dump($val->{$k}, $sname) . ",";
+ $s->{apad} = $lpad
+ if $s->{indent} >= 2;
}
if (substr($out, -1) eq ',') {
- chop $out;
- $out .= $pad . ($s->{xpad} x ($s->{level} - 1));
+ chop $out;
+ $out .= $pad . ($s->{xpad} x ($s->{level} - 1));
}
$out .= ($name =~ /^\%/) ? ')' : '}';
}
elsif ($realtype eq 'CODE') {
if ($s->{deparse}) {
- require B::Deparse;
- my $sub = 'sub ' . (B::Deparse->new)->coderef2text($val);
- $pad = $s->{sep} . $s->{pad} . $s->{apad} . $s->{xpad} x ($s->{level} - 1);
- $sub =~ s/\n/$pad/gse;
- $out .= $sub;
- } else {
+ require B::Deparse;
+ my $sub = 'sub ' . (B::Deparse->new)->coderef2text($val);
+ $pad = $s->{sep} . $s->{pad} . $s->{apad} . $s->{xpad} x ($s->{level} - 1);
+ $sub =~ s/\n/$pad/gse;
+ $out .= $sub;
+ }
+ else {
$out .= 'sub { "DUMMY" }';
carp "Encountered CODE ref, using dummy placeholder" if $s->{purity};
}
}
else {
- croak "Can\'t handle $realtype type.";
+ croak "Can't handle '$realtype' type";
}
-
+
if ($realpack and !$no_bless) { # we have a blessed ref
$out .= ', ' . _quote($realpack) . ' )';
- $out .= '->' . $s->{toaster} . '()' if $s->{toaster} ne '';
+ $out .= '->' . $s->{toaster} . '()'
+ if $s->{toaster} ne '';
$s->{apad} = $blesspad;
}
$s->{level}--;
-
}
else { # simple scalar
@@ -501,46 +503,46 @@ sub _dump {
$id = format_refaddr($ref);
if (exists $s->{seen}{$id}) {
if ($s->{seen}{$id}[2]) {
- $out = $s->{seen}{$id}[0];
- #warn "[<$out]\n";
- return "\${$out}";
- }
+ $out = $s->{seen}{$id}[0];
+ #warn "[<$out]\n";
+ return "\${$out}";
+ }
}
else {
- #warn "[>\\$name]\n";
- $s->{seen}{$id} = ["\\$name", $ref];
+ #warn "[>\\$name]\n";
+ $s->{seen}{$id} = ["\\$name", $ref];
}
}
$ref = \$val;
if (ref($ref) eq 'GLOB') { # glob
my $name = substr($val, 1);
if ($name =~ /^[A-Za-z_][\w:]*$/ && $name ne 'main::') {
- $name =~ s/^main::/::/;
- $sname = $name;
+ $name =~ s/^main::/::/;
+ $sname = $name;
}
else {
- $sname = $s->_dump(
- $name eq 'main::' || $] < 5.007 && $name eq "main::\0"
- ? ''
- : $name,
- "",
- );
- $sname = '{' . $sname . '}';
+ $sname = $s->_dump(
+ $name eq 'main::' || $] < 5.007 && $name eq "main::\0"
+ ? ''
+ : $name,
+ "",
+ );
+ $sname = '{' . $sname . '}';
}
if ($s->{purity}) {
- my $k;
- local ($s->{level}) = 0;
- for $k (qw(SCALAR ARRAY HASH)) {
- my $gval = *$val{$k};
- next unless defined $gval;
- next if $k eq "SCALAR" && ! defined $$gval; # always there
-
- # _dump can push into @post, so we hold our place using $postlen
- my $postlen = scalar @post;
- $post[$postlen] = "\*$sname = ";
- local ($s->{apad}) = " " x length($post[$postlen]) if $s->{indent} >= 2;
- $post[$postlen] .= $s->_dump($gval, "\*$sname\{$k\}");
- }
+ my $k;
+ local ($s->{level}) = 0;
+ for $k (qw(SCALAR ARRAY HASH)) {
+ my $gval = *$val{$k};
+ next unless defined $gval;
+ next if $k eq "SCALAR" && ! defined $$gval; # always there
+
+ # _dump can push into @post, so we hold our place using $postlen
+ my $postlen = scalar @post;
+ $post[$postlen] = "\*$sname = ";
+ local ($s->{apad}) = " " x length($post[$postlen]) if $s->{indent} >= 2;
+ $post[$postlen] .= $s->_dump($gval, "\*$sname\{$k\}");
+ }
}
$out .= '*' . $sname;
}
@@ -548,7 +550,7 @@ sub _dump {
$out .= "undef";
}
elsif (defined &_vstring and $v = _vstring($val)
- and !_bad_vsmg || eval $v eq $val) {
+ and !_bad_vsmg || eval $v eq $val) {
$out .= $v;
}
elsif (!defined &_vstring
@@ -558,10 +560,10 @@ sub _dump {
elsif ($val =~ /^(?:0|-?[1-9]\d{0,8})\z/) { # safe decimal number
$out .= $val;
}
- else { # string
+ else { # string
if ($s->{useqq} or $val =~ tr/\0-\377//c) {
# Fall back to qq if there's Unicode
- $out .= qquote($val, $s->{useqq});
+ $out .= qquote($val, $s->{useqq});
}
else {
$out .= _quote($val);
@@ -580,7 +582,7 @@ sub _dump {
}
return $out;
}
-
+
#
# non-OO style of earlier version
#
@@ -593,12 +595,8 @@ sub DumperX {
return Data::Dumper->Dumpxs([@_], []);
}
-sub Dumpf { return Data::Dumper->Dump(@_) }
-
-sub Dumpp { print Data::Dumper->Dump(@_) }
-
#
-# reset the "seen" cache
+# reset the "seen" cache
#
sub Reset {
my($s) = shift;
@@ -700,8 +698,13 @@ sub Deparse {
defined($v) ? (($s->{'deparse'} = $v), return $s) : $s->{'deparse'};
}
+sub Sparseseen {
+ my($s, $v) = @_;
+ defined($v) ? (($s->{'noseen'} = $v), return $s) : $s->{'noseen'};
+}
+
# used by qquote below
-my %esc = (
+my %esc = (
"\a" => "\\a",
"\b" => "\\b",
"\t" => "\\t",
@@ -717,7 +720,7 @@ sub qquote {
s/([\\\"\@\$])/\\$1/g;
my $bytes; { use bytes; $bytes = length }
s/([^\x00-\x7f])/'\x{'.sprintf("%x",ord($1)).'}'/ge if $bytes > length;
- return qq("$_") unless
+ return qq("$_") unless
/[^ !"\#\$%&'()*+,\-.\/0-9:;<=>?\@A-Z[\\\]^_`a-z{|}~]/; # fast exit
my $high = shift || "";
@@ -754,6 +757,45 @@ sub qquote {
# access to sortsv() from XS
sub _sortkeys { [ sort keys %{$_[0]} ] }
+sub _refine_name {
+ my $s = shift;
+ my ($name, $val, $i) = @_;
+ if (defined $name) {
+ if ($name =~ /^[*](.*)$/) {
+ if (defined $val) {
+ $name = (ref $val eq 'ARRAY') ? ( "\@" . $1 ) :
+ (ref $val eq 'HASH') ? ( "\%" . $1 ) :
+ (ref $val eq 'CODE') ? ( "\*" . $1 ) :
+ ( "\$" . $1 ) ;
+ }
+ else {
+ $name = "\$" . $1;
+ }
+ }
+ elsif ($name !~ /^\$/) {
+ $name = "\$" . $name;
+ }
+ }
+ else { # no names provided
+ $name = "\$" . $s->{varname} . $i;
+ }
+ return $name;
+}
+
+sub _compose_out {
+ my $s = shift;
+ my ($valstr, $postref) = @_;
+ my $out = "";
+ $out .= $s->{pad} . $valstr . $s->{sep};
+ if (@{$postref}) {
+ $out .= $s->{pad} .
+ join(';' . $s->{sep} . $s->{pad}, @{$postref}) .
+ ';' .
+ $s->{sep};
+ }
+ return $out;
+}
+
1;
__END__
@@ -794,7 +836,8 @@ variable is output in a single Perl statement. Handles self-referential
structures correctly.
The return value can be C<eval>ed to get back an identical copy of the
-original reference structure.
+original reference structure. (Please do consider the security implications
+of eval'ing code from untrusted sources!)
Any references that are the same as one of those passed in will be named
C<$VAR>I<n> (where I<n> is a numeric suffix), and other duplicate references
@@ -812,7 +855,7 @@ these references. Moreover, if C<eval>ed when strictures are in effect,
you need to ensure that any variables it accesses are previously declared.
In the extended usage form, the references to be dumped can be given
-user-specified names. If a name begins with a C<*>, the output will
+user-specified names. If a name begins with a C<*>, the output will
describe the dereferenced type of the supplied reference for hashes and
arrays, and coderefs. Output of names will be avoided where possible if
the C<Terse> flag is set.
@@ -822,7 +865,7 @@ object will return the object itself, so method calls can be conveniently
chained together.
Several styles of output are possible, all controlled by setting
-the C<Indent> flag. See L<Configuration Variables or Methods> below
+the C<Indent> flag. See L<Configuration Variables or Methods> below
for details.
@@ -874,15 +917,21 @@ itself.
=item I<$OBJ>->Values(I<[ARRAYREF]>)
-Queries or replaces the internal array of values that will be dumped.
-When called without arguments, returns the values. Otherwise, returns the
-object itself.
+Queries or replaces the internal array of values that will be dumped. When
+called without arguments, returns the values as a list. When called with a
+reference to an array of replacement values, returns the object itself. When
+called with any other type of argument, dies.
=item I<$OBJ>->Names(I<[ARRAYREF]>)
Queries or replaces the internal array of user supplied names for the values
-that will be dumped. When called without arguments, returns the names.
-Otherwise, returns the object itself.
+that will be dumped. When called without arguments, returns the names. When
+called with an array of replacement names, returns the object itself. If the
+number of replacment names exceeds the number of values to be named, the
+excess names will not be used. If the number of replacement names falls short
+of the number of values to be named, the list of replacment names will be
+exhausted and remaining values will not be renamed. When
+called with any other type of argument, dies.
=item I<$OBJ>->Reset
@@ -909,7 +958,7 @@ in a list context.
Several configuration variables can be used to control the kind of output
generated when using the procedural interface. These variables are usually
C<local>ized in a block so that other parts of the code are not affected by
-the change.
+the change.
These variables determine the default state of the object created by calling
the C<new> method, but cannot be used to alter the state of the object
@@ -1022,7 +1071,7 @@ Cross-referencing will then only be done when absolutely essential
$Data::Dumper::Quotekeys I<or> $I<OBJ>->Quotekeys(I<[NEWVAL]>)
Can be set to a boolean value to control whether hash keys are quoted.
-A false value will avoid quoting hash keys when it looks like a simple
+A defined false value will avoid quoting hash keys when it looks like a simple
string. Default is 1, which will always enclose hash keys in quotes.
=item *
@@ -1054,8 +1103,8 @@ $Data::Dumper::Maxdepth I<or> $I<OBJ>->Maxdepth(I<[NEWVAL]>)
Can be set to a positive integer that specifies the depth beyond which
we don't venture into a structure. Has no effect when
C<Data::Dumper::Purity> is set. (Useful in debugger when we often don't
-want to see more than enough). Default is 0, which means there is
-no maximum depth.
+want to see more than enough). Default is 0, which means there is
+no maximum depth.
=item *
@@ -1099,6 +1148,26 @@ XSUB implementation doesn't support it.
Caution : use this option only if you know that your coderefs will be
properly reconstructed by C<B::Deparse>.
+=item *
+
+$Data::Dumper::Sparseseen I<or> $I<OBJ>->Sparseseen(I<[NEWVAL]>)
+
+By default, Data::Dumper builds up the "seen" hash of scalars that
+it has encountered during serialization. This is very expensive.
+This seen hash is necessary to support and even just detect circular
+references. It is exposed to the user via the C<Seen()> call both
+for writing and reading.
+
+If you, as a user, do not need explicit access to the "seen" hash,
+then you can set the C<Sparseseen> option to allow Data::Dumper
+to eschew building the "seen" hash for scalars that are known not
+to possess more than one reference. This speeds up serialization
+considerably if you use the XS implementation.
+
+Note: If you turn on C<Sparseseen>, then you must not rely on the
+content of the seen hash since its contents will be an
+implementation detail!
+
=back
=head2 Exports
@@ -1130,7 +1199,7 @@ distribution for more examples.)
$foo = Foo->new;
$fuz = Fuz->new;
$boo = [ 1, [], "abcd", \*foo,
- {1 => 'a', 023 => 'b', 0x45 => 'c'},
+ {1 => 'a', 023 => 'b', 0x45 => 'c'},
\\"p\q\'r", $foo, $fuz];
########
@@ -1220,20 +1289,20 @@ distribution for more examples.)
sub new { bless { state => 'awake' }, shift }
sub Freeze {
my $s = shift;
- print STDERR "preparing to sleep\n";
- $s->{state} = 'asleep';
- return bless $s, 'Foo::ZZZ';
+ print STDERR "preparing to sleep\n";
+ $s->{state} = 'asleep';
+ return bless $s, 'Foo::ZZZ';
}
package Foo::ZZZ;
sub Thaw {
my $s = shift;
- print STDERR "waking up\n";
- $s->{state} = 'awake';
- return bless $s, 'Foo';
+ print STDERR "waking up\n";
+ $s->{state} = 'awake';
+ return bless $s, 'Foo';
}
- package Foo;
+ package main;
use Data::Dumper;
$a = Foo->new;
$b = Data::Dumper->new([$a], ['c']);
@@ -1332,7 +1401,7 @@ modify it under the same terms as Perl itself.
=head1 VERSION
-Version 2.135_06 (March 20 2012)
+Version 2.145 (March 15 2013))
=head1 SEE ALSO
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/Dumper.xs b/gnu/usr.bin/perl/dist/Data-Dumper/Dumper.xs
index 91e4c6cdb0d..b74650ad88b 100644
--- a/gnu/usr.bin/perl/dist/Data-Dumper/Dumper.xs
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/Dumper.xs
@@ -12,22 +12,30 @@
# define DD_USE_OLD_ID_FORMAT
#endif
+#ifndef isWORDCHAR
+# define isWORDCHAR(c) isALNUM(c)
+#endif
+
static I32 num_q (const char *s, STRLEN slen);
static I32 esc_q (char *dest, const char *src, STRLEN slen);
static I32 esc_q_utf8 (pTHX_ SV *sv, const char *src, STRLEN slen);
-static I32 needs_quote(register const char *s, STRLEN len);
+static I32 needs_quote(const char *s, STRLEN len);
static SV *sv_x (pTHX_ SV *sv, const char *str, STRLEN len, I32 n);
static I32 DD_dump (pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval,
HV *seenhv, AV *postav, I32 *levelp, I32 indent,
SV *pad, SV *xpad, SV *apad, SV *sep, SV *pair,
SV *freezer, SV *toaster,
I32 purity, I32 deepcopy, I32 quotekeys, SV *bless,
- I32 maxdepth, SV *sortkeys);
+ I32 maxdepth, SV *sortkeys, int use_sparse_seen_hash);
#ifndef HvNAME_get
#define HvNAME_get HvNAME
#endif
+/* Perls 7 through portions of 15 used utf8_to_uvchr() which didn't have a
+ * length parameter. This wrongly allowed reading beyond the end of buffer
+ * given malformed input */
+
#if PERL_VERSION <= 6 /* Perl 5.6 and earlier */
# ifdef EBCDIC
@@ -47,11 +55,33 @@ Perl_utf8_to_uvchr_buf(pTHX_ U8 *s, U8 *send, STRLEN *retlen)
# if !defined(PERL_IMPLICIT_CONTEXT)
# define utf8_to_uvchr_buf Perl_utf8_to_uvchr_buf
# else
-# define utf8_to_uvchr_buf(a,b) Perl_utf8_to_uvchr_buf(aTHX_ a,b)
+# define utf8_to_uvchr_buf(a,b,c) Perl_utf8_to_uvchr_buf(aTHX_ a,b,c)
# endif
#endif /* PERL_VERSION <= 6 */
+/* Perl 5.7 through part of 5.15 */
+#if PERL_VERSION > 6 && PERL_VERSION <= 15 && ! defined(utf8_to_uvchr_buf)
+
+UV
+Perl_utf8_to_uvchr_buf(pTHX_ U8 *s, U8 *send, STRLEN *retlen)
+{
+ /* We have to discard <send> for these versions; hence can read off the
+ * end of the buffer if there is a malformation that indicates the
+ * character is longer than the space available */
+
+ const UV uv = utf8_to_uvchr(s, retlen);
+ return UNI_TO_NATIVE(uv);
+}
+
+# if !defined(PERL_IMPLICIT_CONTEXT)
+# define utf8_to_uvchr_buf Perl_utf8_to_uvchr_buf
+# else
+# define utf8_to_uvchr_buf(a,b,c) Perl_utf8_to_uvchr_buf(aTHX_ a,b,c)
+# endif
+
+#endif /* PERL_VERSION > 6 && <= 15 */
+
/* Changes in 5.7 series mean that now IOK is only set if scalar is
precisely integer but in 5.6 and earlier we need to do a more
complex test */
@@ -63,7 +93,7 @@ Perl_utf8_to_uvchr_buf(pTHX_ U8 *s, U8 *send, STRLEN *retlen)
/* does a string need to be protected? */
static I32
-needs_quote(register const char *s, STRLEN len)
+needs_quote(const char *s, STRLEN len)
{
const char *send = s+len;
TOP:
@@ -77,7 +107,7 @@ TOP:
}
if (isIDFIRST(*s)) {
while (++s<send)
- if (!isALNUM(*s)) {
+ if (!isWORDCHAR(*s)) {
if (*s == ':')
goto TOP;
else
@@ -91,9 +121,9 @@ TOP:
/* count the number of "'"s and "\"s in string */
static I32
-num_q(register const char *s, register STRLEN slen)
+num_q(const char *s, STRLEN slen)
{
- register I32 ret = 0;
+ I32 ret = 0;
while (slen > 0) {
if (*s == '\'' || *s == '\\')
@@ -109,9 +139,9 @@ num_q(register const char *s, register STRLEN slen)
/* slen number of characters in s will be escaped */
/* destination must be long enough for additional chars */
static I32
-esc_q(register char *d, register const char *s, register STRLEN slen)
+esc_q(char *d, const char *s, STRLEN slen)
{
- register I32 ret = 0;
+ I32 ret = 0;
while (slen > 0) {
switch (*s) {
@@ -129,7 +159,7 @@ esc_q(register char *d, register const char *s, register STRLEN slen)
}
static I32
-esc_q_utf8(pTHX_ SV* sv, register const char *src, register STRLEN slen)
+esc_q_utf8(pTHX_ SV* sv, const char *src, STRLEN slen)
{
char *r, *rstart;
const char *s = src;
@@ -267,7 +297,8 @@ static I32
DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
AV *postav, I32 *levelp, I32 indent, SV *pad, SV *xpad,
SV *apad, SV *sep, SV *pair, SV *freezer, SV *toaster, I32 purity,
- I32 deepcopy, I32 quotekeys, SV *bless, I32 maxdepth, SV *sortkeys)
+ I32 deepcopy, I32 quotekeys, SV *bless, I32 maxdepth, SV *sortkeys,
+ int use_sparse_seen_hash)
{
char tmpbuf[128];
U32 i;
@@ -317,7 +348,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
{
dSP; ENTER; SAVETMPS; PUSHMARK(sp);
XPUSHs(val); PUTBACK;
- i = perl_call_method(SvPVX_const(freezer), G_EVAL|G_VOID);
+ i = perl_call_method(SvPVX_const(freezer), G_EVAL|G_VOID|G_DISCARD);
SPAGAIN;
if (SvTRUE(ERRSV))
warn("WARNING(Freezer method call failed): %"SVf"", ERRSV);
@@ -493,7 +524,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
DD_dump(aTHX_ ival, SvPVX_const(namesv), SvCUR(namesv), retval, seenhv,
postav, levelp, indent, pad, xpad, apad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys, bless,
- maxdepth, sortkeys);
+ maxdepth, sortkeys, use_sparse_seen_hash);
sv_catpvn(retval, ")}", 2);
} /* plain */
else {
@@ -501,7 +532,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
DD_dump(aTHX_ ival, SvPVX_const(namesv), SvCUR(namesv), retval, seenhv,
postav, levelp, indent, pad, xpad, apad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys, bless,
- maxdepth, sortkeys);
+ maxdepth, sortkeys, use_sparse_seen_hash);
}
SvREFCNT_dec(namesv);
}
@@ -513,7 +544,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
DD_dump(aTHX_ ival, SvPVX_const(namesv), SvCUR(namesv), retval, seenhv,
postav, levelp, indent, pad, xpad, apad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys, bless,
- maxdepth, sortkeys);
+ maxdepth, sortkeys, use_sparse_seen_hash);
SvREFCNT_dec(namesv);
}
else if (realtype == SVt_PVAV) {
@@ -586,7 +617,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
DD_dump(aTHX_ elem, iname, ilen, retval, seenhv, postav,
levelp, indent, pad, xpad, apad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys, bless,
- maxdepth, sortkeys);
+ maxdepth, sortkeys, use_sparse_seen_hash);
if (ix < ixmax)
sv_catpvn(retval, ",", 1);
}
@@ -793,7 +824,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
DD_dump(aTHX_ hval, SvPVX_const(sname), SvCUR(sname), retval, seenhv,
postav, levelp, indent, pad, xpad, newapad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys, bless,
- maxdepth, sortkeys);
+ maxdepth, sortkeys, use_sparse_seen_hash);
SvREFCNT_dec(sname);
Safefree(nkey_buffer);
if (indent >= 2)
@@ -883,7 +914,14 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
return 1;
}
}
- else if (val != &PL_sv_undef) {
+ /* If we're allowed to keep only a sparse "seen" hash
+ * (IOW, the user does not expect it to contain everything
+ * after the dump, then only store in seen hash if the SV
+ * ref count is larger than 1. If it's 1, then we know that
+ * there is no other reference, duh. This is an optimization.
+ * Note that we'd have to check for weak-refs, too, but this is
+ * already the branch for non-refs only. */
+ else if (val != &PL_sv_undef && (!use_sparse_seen_hash || SvREFCNT(val) > 1)) {
SV * const namesv = newSVpvn("\\", 1);
sv_catpvn(namesv, name, namelen);
seenentry = newAV();
@@ -995,7 +1033,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
seenhv, postav, &nlevel, indent, pad, xpad,
newapad, sep, pair, freezer, toaster, purity,
deepcopy, quotekeys, bless, maxdepth,
- sortkeys);
+ sortkeys, use_sparse_seen_hash);
SvREFCNT_dec(e);
}
}
@@ -1009,7 +1047,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
}
#ifdef SvVOK
else if (SvMAGICAL(val) && (mg = mg_find(val, 'V'))) {
-# ifndef PL_vtbl_vstring
+# if !defined(PL_vtbl_vstring) && PERL_VERSION < 17
SV * const vecsv = sv_newmortal();
# if PERL_VERSION < 10
scan_vstring(mg->mg_ptr, vecsv);
@@ -1077,6 +1115,7 @@ Data_Dumper_Dumpxs(href, ...)
I32 purity, deepcopy, quotekeys, maxdepth = 0;
char tmpbuf[1024];
I32 gimme = GIMME;
+ int use_sparse_seen_hash = 0;
if (!SvROK(href)) { /* call new to get an object first */
if (items < 2)
@@ -1086,10 +1125,11 @@ Data_Dumper_Dumpxs(href, ...)
SAVETMPS;
PUSHMARK(sp);
- XPUSHs(href);
- XPUSHs(sv_2mortal(newSVsv(ST(1))));
+ EXTEND(SP, 3); /* 3 == max of all branches below */
+ PUSHs(href);
+ PUSHs(sv_2mortal(newSVsv(ST(1))));
if (items >= 3)
- XPUSHs(sv_2mortal(newSVsv(ST(2))));
+ PUSHs(sv_2mortal(newSVsv(ST(2))));
PUTBACK;
i = perl_call_method("new", G_SCALAR);
SPAGAIN;
@@ -1119,6 +1159,10 @@ Data_Dumper_Dumpxs(href, ...)
if ((svp = hv_fetch(hv, "seen", 4, FALSE)) && SvROK(*svp))
seenhv = (HV*)SvRV(*svp);
+ else
+ use_sparse_seen_hash = 1;
+ if ((svp = hv_fetch(hv, "noseen", 6, FALSE)))
+ use_sparse_seen_hash = (SvOK(*svp) && SvIV(*svp) != 0);
if ((svp = hv_fetch(hv, "todump", 6, FALSE)) && SvROK(*svp))
todumpav = (AV*)SvRV(*svp);
if ((svp = hv_fetch(hv, "names", 5, FALSE)) && SvROK(*svp))
@@ -1236,7 +1280,7 @@ Data_Dumper_Dumpxs(href, ...)
DD_dump(aTHX_ val, SvPVX_const(name), SvCUR(name), valstr, seenhv,
postav, &level, indent, pad, xpad, newapad, sep, pair,
freezer, toaster, purity, deepcopy, quotekeys,
- bless, maxdepth, sortkeys);
+ bless, maxdepth, sortkeys, use_sparse_seen_hash);
SPAGAIN;
if (indent >= 2 && !terse)
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/bless.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/bless.t
index 086332c9c45..9866ea7b766 100755
--- a/gnu/usr.bin/perl/dist/Data-Dumper/t/bless.t
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/bless.t
@@ -5,16 +5,22 @@ use Test::More 0.60;
# Test::More 0.60 required because:
# - is_deeply(undef, $not_undef); now works. [rt.cpan.org 9441]
-BEGIN { plan tests => 1+5*2; }
+BEGIN { plan tests => 1+2*5; }
BEGIN { use_ok('Data::Dumper') };
# RT 39420: Data::Dumper fails to escape bless class name
-# test under XS and pure Perl version
-foreach $Data::Dumper::Useperl (0, 1) {
+run_tests_for_bless();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 5
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_bless();
+}
-#diag("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+sub run_tests_for_bless {
+note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
{
my $t = bless( {}, q{a'b} );
@@ -52,4 +58,5 @@ PERL_LEGACY
is($dt, $o, "We can dump blessed qr//'s properly");
}
-}
+
+} # END sub run_tests_for_bless()
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/bless_var_method.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/bless_var_method.t
new file mode 100644
index 00000000000..7af4cdbaf45
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/bless_var_method.t
@@ -0,0 +1,86 @@
+#!./perl -w
+# t/bless.t - Test Bless()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+ delta => 'd',
+ beta => 'b',
+ gamma => 'c',
+ alpha => 'a',
+);
+
+run_tests_for_bless_var_method();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 4
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_bless_var_method();
+}
+
+sub run_tests_for_bless_var_method {
+ my ($obj, %dumps, $bless, $starting);
+
+ note("\$Data::Dumper::Bless and Bless() set to true value");
+
+ $starting = $Data::Dumper::Bless;
+ $bless = 1;
+ local $Data::Dumper::Bless = $bless;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddblessone'} = _dumptostr($obj);
+ local $Data::Dumper::Bless = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Bless($bless);
+ $dumps{'objblessone'} = _dumptostr($obj);
+
+ is($dumps{'ddblessone'}, $dumps{'objblessone'},
+ "\$Data::Dumper::Bless = 1 and Bless(1) are equivalent");
+ %dumps = ();
+
+ $bless = 0;
+ local $Data::Dumper::Bless = $bless;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddblesszero'} = _dumptostr($obj);
+ local $Data::Dumper::Bless = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Bless($bless);
+ $dumps{'objblesszero'} = _dumptostr($obj);
+
+ is($dumps{'ddblesszero'}, $dumps{'objblesszero'},
+ "\$Data::Dumper::Bless = 0 and Bless(0) are equivalent");
+
+ $bless = undef;
+ local $Data::Dumper::Bless = $bless;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddblessundef'} = _dumptostr($obj);
+ local $Data::Dumper::Bless = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Bless($bless);
+ $dumps{'objblessundef'} = _dumptostr($obj);
+
+ is($dumps{'ddblessundef'}, $dumps{'objblessundef'},
+ "\$Data::Dumper::Bless = undef and Bless(undef) are equivalent");
+ is($dumps{'ddblesszero'}, $dumps{'objblessundef'},
+ "\$Data::Dumper::Bless = undef and = 0 are equivalent");
+ %dumps = ();
+}
+
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/bugs.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/bugs.t
index e8d21263105..a440b0a1a41 100755
--- a/gnu/usr.bin/perl/dist/Data-Dumper/t/bugs.t
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/bugs.t
@@ -1,6 +1,6 @@
#!perl
#
-# regression tests for old bugs that don't fit other categories
+# regression tests for old bugs that do not fit other categories
BEGIN {
require Config; import Config;
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/deparse.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/deparse.t
new file mode 100644
index 00000000000..c281fcea021
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/deparse.t
@@ -0,0 +1,80 @@
+#!./perl -w
+# t/deparse.t - Test Deparse()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+# Thanks to Arthur Axel "fREW" Schmidt:
+# http://search.cpan.org/~frew/Data-Dumper-Concise-2.020/lib/Data/Dumper/Concise.pm
+
+note("\$Data::Dumper::Deparse and Deparse()");
+
+{
+ my ($obj, %dumps, $deparse, $starting);
+ use strict;
+ my $struct = { foo => "bar\nbaz", quux => sub { "fleem" } };
+ $obj = Data::Dumper->new( [ $struct ] );
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $starting = $Data::Dumper::Deparse;
+ local $Data::Dumper::Deparse = 0;
+ $obj = Data::Dumper->new( [ $struct ] );
+ $dumps{'dddzero'} = _dumptostr($obj);
+ local $Data::Dumper::Deparse = $starting;
+
+ $obj = Data::Dumper->new( [ $struct ] );
+ $obj->Deparse();
+ $dumps{'objempty'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new( [ $struct ] );
+ $obj->Deparse(0);
+ $dumps{'objzero'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'dddzero'},
+ "No previous setting and \$Data::Dumper::Deparse = 0 are equivalent");
+ is($dumps{'noprev'}, $dumps{'objempty'},
+ "No previous setting and Deparse() are equivalent");
+ is($dumps{'noprev'}, $dumps{'objzero'},
+ "No previous setting and Deparse(0) are equivalent");
+
+ local $Data::Dumper::Deparse = 1;
+ $obj = Data::Dumper->new( [ $struct ] );
+ $dumps{'dddtrue'} = _dumptostr($obj);
+ local $Data::Dumper::Deparse = $starting;
+
+ $obj = Data::Dumper->new( [ $struct ] );
+ $obj->Deparse(1);
+ $dumps{'objone'} = _dumptostr($obj);
+
+ is($dumps{'dddtrue'}, $dumps{'objone'},
+ "\$Data::Dumper::Deparse = 1 and Deparse(1) are equivalent");
+
+ isnt($dumps{'dddzero'}, $dumps{'dddtrue'},
+ "\$Data::Dumper::Deparse = 0 differs from \$Data::Dumper::Deparse = 1");
+
+ like($dumps{'dddzero'},
+ qr/quux.*?sub.*?DUMMY/s,
+ "\$Data::Dumper::Deparse = 0 reports DUMMY instead of deparsing coderef");
+ unlike($dumps{'dddtrue'},
+ qr/quux.*?sub.*?DUMMY/s,
+ "\$Data::Dumper::Deparse = 1 does not report DUMMY");
+ like($dumps{'dddtrue'},
+ qr/quux.*?sub.*?use\sstrict.*?fleem/s,
+ "\$Data::Dumper::Deparse = 1 deparses coderef");
+}
+
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/dumper.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/dumper.t
index cac053704f5..c1e5fe62743 100755
--- a/gnu/usr.bin/perl/dist/Data-Dumper/t/dumper.t
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/dumper.t
@@ -83,11 +83,11 @@ sub SKIP_TEST {
$Data::Dumper::Useperl = 1;
if (defined &Data::Dumper::Dumpxs) {
print "### XS extension loaded, will run XS tests\n";
- $TMAX = 390; $XS = 1;
+ $TMAX = 402; $XS = 1;
}
else {
print "### XS extensions not loaded, will NOT run XS tests\n";
- $TMAX = 195; $XS = 0;
+ $TMAX = 201; $XS = 0;
}
print "1..$TMAX\n";
@@ -125,6 +125,11 @@ EOT
TEST q(Data::Dumper->Dump([$a,$b,$c], [qw(a b), 6]));
TEST q(Data::Dumper->Dumpxs([$a,$b,$c], [qw(a b), 6])) if $XS;
+SCOPE: {
+ local $Data::Dumper::Sparseseen = 1;
+ TEST q(Data::Dumper->Dump([$a,$b,$c], [qw(a b), 6]));
+ TEST q(Data::Dumper->Dumpxs([$a,$b,$c], [qw(a b), 6])) if $XS;
+}
############# 7
##
@@ -150,6 +155,12 @@ $Data::Dumper::Purity = 1; # fill in the holes for eval
TEST q(Data::Dumper->Dump([$a, $b], [qw(*a b)])); # print as @a
TEST q(Data::Dumper->Dumpxs([$a, $b], [qw(*a b)])) if $XS;
+SCOPE: {
+ local $Data::Dumper::Sparseseen = 1;
+ TEST q(Data::Dumper->Dump([$a, $b], [qw(*a b)])); # print as @a
+ TEST q(Data::Dumper->Dumpxs([$a, $b], [qw(*a b)])) if $XS;
+}
+
############# 13
##
$WANT = <<'EOT';
@@ -494,7 +505,7 @@ EOT
$dogs[2] = \%kennel;
$mutts = \%kennel;
$mutts = $mutts; # avoid warning
-
+
############# 85
##
$WANT = <<'EOT';
@@ -522,7 +533,7 @@ EOT
$d->Dumpxs;
);
}
-
+
############# 91
##
$WANT = <<'EOT';
@@ -533,7 +544,7 @@ EOT
TEST q($d->Dump);
TEST q($d->Dumpxs) if $XS;
-
+
############# 97
##
$WANT = <<'EOT';
@@ -549,7 +560,7 @@ EOT
#%mutts = %kennels;
EOT
-
+
TEST q($d->Reset; $d->Dump);
if ($XS) {
TEST q($d->Reset; $d->Dumpxs);
@@ -582,7 +593,7 @@ EOT
$d->Dumpxs;
);
}
-
+
############# 109
##
TEST q($d->Reset->Dump);
@@ -614,7 +625,7 @@ EOT
if ($XS) {
TEST q($d->Reset->Dumpxs);
}
-
+
}
{
@@ -914,7 +925,7 @@ TEST q(Data::Dumper->new([$c])->Dumpxs;)
local $Data::Dumper::Sortkeys = \&sort205;
sub sort205 {
my $hash = shift;
- return [
+ return [
$hash eq $c ? (sort { $a <=> $b } keys %$hash)
: (reverse sort keys %$hash)
];
@@ -1477,31 +1488,38 @@ EOT
{
# If XS cannot load, the pure-Perl version cannot deparse vstrings with
# underscores properly. In 5.8.0, vstrings are just strings.
- $WANT = $] > 5.0080001 ? $XS ? <<'EOT' : <<'EOV' : <<'EOU';
-#$a = \v65.66.67;
-#$b = \v65.66.067;
-#$c = \v65.66.6_7;
-#$d = \'ABC';
-EOT
-#$a = \v65.66.67;
-#$b = \v65.66.67;
-#$c = \v65.66.67;
-#$d = \'ABC';
-EOV
+ my $no_vstrings = <<'NOVSTRINGS';
#$a = \'ABC';
#$b = \'ABC';
#$c = \'ABC';
#$d = \'ABC';
-EOU
+NOVSTRINGS
+ my $vstrings_corr = <<'VSTRINGS_CORRECT';
+#$a = \v65.66.67;
+#$b = \v65.66.067;
+#$c = \v65.66.6_7;
+#$d = \'ABC';
+VSTRINGS_CORRECT
+ $WANT = $] <= 5.0080001
+ ? $no_vstrings
+ : $vstrings_corr;
+
@::_v = (
\v65.66.67,
\($] < 5.007 ? v65.66.67 : eval 'v65.66.067'),
\v65.66.6_7,
\~v190.189.188
);
- TEST q(Data::Dumper->Dump(\@::_v, [qw(a b c d)])), 'vstrings';
- TEST q(Data::Dumper->Dumpxs(\@::_v, [qw(a b c d)])), 'xs vstrings'
- if $XS;
+ if ($] >= 5.010) {
+ TEST q(Data::Dumper->Dump(\@::_v, [qw(a b c d)])), 'vstrings';
+ TEST q(Data::Dumper->Dumpxs(\@::_v, [qw(a b c d)])), 'xs vstrings'
+ if $XS;
+ }
+ else { # Skip tests before 5.10. vstrings considered funny before
+ SKIP_TEST "vstrings considered funny before 5.10.0";
+ SKIP_TEST "vstrings considered funny before 5.10.0 (XS)"
+ if $XS;
+ }
}
############# 384
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/dumpperl.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/dumpperl.t
new file mode 100644
index 00000000000..9220430ff9b
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/dumpperl.t
@@ -0,0 +1,144 @@
+#!./perl -w
+# t/dumpperl.t - test all branches of, and modes of triggering, Dumpperl()
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+use Carp;
+use Data::Dumper;
+use Test::More tests => 31;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+$Data::Dumper::Indent=1;
+
+{
+ local $Data::Dumper::Useperl=1;
+ local $Data::Dumper::Useqq=0;
+ local $Data::Dumper::Deparse=0;
+ note('$Data::Dumper::Useperl => 1');
+ run_tests_for_pure_perl_implementations();
+}
+
+{
+ local $Data::Dumper::Useperl=0;
+ local $Data::Dumper::Useqq=1;
+ local $Data::Dumper::Deparse=0;
+ note('$Data::Dumper::Useqq => 1');
+ run_tests_for_pure_perl_implementations();
+}
+
+{
+ local $Data::Dumper::Useperl=0;
+ local $Data::Dumper::Useqq=0;
+ local $Data::Dumper::Deparse=1;
+ note('$Data::Dumper::Deparse => 1');
+ run_tests_for_pure_perl_implementations();
+}
+
+
+
+sub run_tests_for_pure_perl_implementations {
+
+ my ($a, $b, $obj);
+ my (@names);
+ my (@newnames, $objagain, %newnames);
+ my $dumpstr;
+ $a = 'alpha';
+ $b = 'beta';
+ my @c = ( qw| eta theta | );
+ my %d = ( iota => 'kappa' );
+
+ note('names not provided');
+ $obj = Data::Dumper->new([$a, $b]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$VAR1.+alpha.+\$VAR2.+beta/s,
+ "Dump: two strings"
+ );
+
+ $obj = Data::Dumper->new([$a, \@c]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$VAR1.+alpha.+\$VAR2.+\[.+eta.+theta.+\]/s,
+ "Dump: one string, one array ref"
+ );
+
+ $obj = Data::Dumper->new([$a, \%d]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$VAR1.+alpha.+\$VAR2.+\{.+iota.+kappa.+\}/s,
+ "Dump: one string, one hash ref"
+ );
+
+ $obj = Data::Dumper->new([$a, undef]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$VAR1.+alpha.+\$VAR2.+undef/s,
+ "Dump: one string, one undef"
+ );
+
+ note('names provided');
+
+ $obj = Data::Dumper->new([$a, $b], [ qw( a b ) ]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$a.+alpha.+\$b.+beta/s,
+ "Dump: names: two strings"
+ );
+
+ $obj = Data::Dumper->new([$a, \@c], [ qw( a *c ) ]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$a.+alpha.+\@c.+eta.+theta/s,
+ "Dump: names: one string, one array ref"
+ );
+
+ $obj = Data::Dumper->new([$a, \%d], [ qw( a *d ) ]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$a.+alpha.+\%d.+iota.+kappa/s,
+ "Dump: names: one string, one hash ref"
+ );
+
+ $obj = Data::Dumper->new([$a,undef], [qw(a *c)]);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$a.+alpha.+\$c.+undef/s,
+ "Dump: names: one string, one undef"
+ );
+
+ $obj = Data::Dumper->new([$a, $b], [ 'a', '']);
+ $dumpstr = _dumptostr($obj);
+ like($dumpstr,
+ qr/\$a.+alpha.+\$.+beta/s,
+ "Dump: names: two strings: one name empty"
+ );
+
+ $obj = Data::Dumper->new([$a, $b], [ 'a', '$foo']);
+ $dumpstr = _dumptostr($obj);
+ no warnings 'uninitialized';
+ like($dumpstr,
+ qr/\$a.+alpha.+\$foo.+beta/s,
+ "Dump: names: two strings: one name start with '\$'"
+ );
+ use warnings;
+}
+
+{
+ my ($obj, $dumpstr, $realtype);
+ $obj = Data::Dumper->new([ {IO => *{$::{STDERR}}{IO}} ]);
+ $obj->Useperl(1);
+ eval { $dumpstr = _dumptostr($obj); };
+ $realtype = 'IO';
+ like($@, qr/Can't handle '$realtype' type/,
+ "Got expected error: pure-perl: Data-Dumper does not handle $realtype");
+}
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/freezer.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/freezer.t
index c46d86119ab..7f3b7ac8f82 100755
--- a/gnu/usr.bin/perl/dist/Data-Dumper/t/freezer.t
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/freezer.t
@@ -7,74 +7,104 @@ BEGIN {
require Config; import Config;
no warnings 'once';
if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
- print "1..0 # Skip: Data::Dumper was not built\n";
- exit 0;
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
}
}
use strict;
-use Test::More qw(no_plan);
+use Test::More tests => 8;
use Data::Dumper;
-$Data::Dumper::Freezer = 'freeze';
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
-# test for seg-fault bug when freeze() returns a non-ref
-my $foo = Test1->new("foo");
-my $dumped_foo = Dumper($foo);
-ok($dumped_foo,
- "Use of freezer sub which returns non-ref worked.");
-like($dumped_foo, qr/frozed/,
- "Dumped string has the key added by Freezer.");
-
-# run the same tests with useperl. this always worked
{
- local $Data::Dumper::Useperl = 1;
- my $foo = Test1->new("foo");
- my $dumped_foo = Dumper($foo);
- ok($dumped_foo,
- "Use of freezer sub which returns non-ref worked with useperl");
- like($dumped_foo, qr/frozed/,
- "Dumped string has the key added by Freezer with useperl.");
+ local $Data::Dumper::Freezer = 'freeze';
+
+ # test for seg-fault bug when freeze() returns a non-ref
+ {
+ my $foo = Test1->new("foo");
+ my $dumped_foo = Dumper($foo);
+ ok($dumped_foo,
+ "Use of freezer sub which returns non-ref worked.");
+ like($dumped_foo, qr/frozed/,
+ "Dumped string has the key added by Freezer with useperl.");
+ like(join(" ", Dumper($foo)), qr/\A\$VAR1 = /,
+ "Dumped list doesn't begin with Freezer's return value with useperl");
+ }
+
+
+ # test for warning when an object does not have a freeze()
+ {
+ my $warned = 0;
+ local $SIG{__WARN__} = sub { $warned++ };
+ my $bar = Test2->new("bar");
+ my $dumped_bar = Dumper($bar);
+ is($warned, 0, "A missing freeze() shouldn't warn.");
+ }
+
+
+ # a freeze() which die()s should still trigger the warning
+ {
+ my $warned = 0;
+ local $SIG{__WARN__} = sub { $warned++; };
+ my $bar = Test3->new("bar");
+ my $dumped_bar = Dumper($bar);
+ is($warned, 1, "A freeze() which die()s should warn.");
+ }
+
}
-# test for warning when an object doesn't have a freeze()
{
- my $warned = 0;
- local $SIG{__WARN__} = sub { $warned++ };
- my $bar = Test2->new("bar");
- my $dumped_bar = Dumper($bar);
- is($warned, 0, "A missing freeze() shouldn't warn.");
-}
+ my ($obj, %dumps);
+ my $foo = Test1->new("foo");
+ local $Data::Dumper::Freezer = 'freeze';
+ $obj = Data::Dumper->new( [ $foo ] );
+ $dumps{'ddftrue'} = _dumptostr($obj);
+ local $Data::Dumper::Freezer = '';
-# run the same test with useperl, which always worked
-{
- local $Data::Dumper::Useperl = 1;
- my $warned = 0;
- local $SIG{__WARN__} = sub { $warned++ };
- my $bar = Test2->new("bar");
- my $dumped_bar = Dumper($bar);
- is($warned, 0, "A missing freeze() shouldn't warn with useperl");
+ $obj = Data::Dumper->new( [ $foo ] );
+ $obj->Freezer('freeze');
+ $dumps{'objset'} = _dumptostr($obj);
+
+ is($dumps{'ddftrue'}, $dumps{'objset'},
+ "\$Data::Dumper::Freezer and Freezer() are equivalent");
}
-# a freeze() which die()s should still trigger the warning
{
- my $warned = 0;
- local $SIG{__WARN__} = sub { $warned++; };
- my $bar = Test3->new("bar");
- my $dumped_bar = Dumper($bar);
- is($warned, 1, "A freeze() which die()s should warn.");
+ my ($obj, %dumps);
+ my $foo = Test1->new("foo");
+
+ local $Data::Dumper::Freezer = '';
+ $obj = Data::Dumper->new( [ $foo ] );
+ $dumps{'ddfemptystr'} = _dumptostr($obj);
+
+ local $Data::Dumper::Freezer = undef;
+ $obj = Data::Dumper->new( [ $foo ] );
+ $dumps{'ddfundef'} = _dumptostr($obj);
+
+ is($dumps{'ddfundef'}, $dumps{'ddfemptystr'},
+ "\$Data::Dumper::Freezer same with empty string or undef");
}
-# the same should work in useperl
{
- local $Data::Dumper::Useperl = 1;
- my $warned = 0;
- local $SIG{__WARN__} = sub { $warned++; };
- my $bar = Test3->new("bar");
- my $dumped_bar = Dumper($bar);
- is($warned, 1, "A freeze() which die()s should warn with useperl.");
+ my ($obj, %dumps);
+ my $foo = Test1->new("foo");
+
+ $obj = Data::Dumper->new( [ $foo ] );
+ $obj->Freezer('');
+ $dumps{'objemptystr'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new( [ $foo ] );
+ $obj->Freezer(undef);
+ $dumps{'objundef'} = _dumptostr($obj);
+
+ is($dumps{'objundef'}, $dumps{'objemptystr'},
+ "Freezer() same with empty string or undef");
}
+
# a package with a freeze() which returns a non-ref
package Test1;
sub new { bless({name => $_[1]}, $_[0]) }
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/freezer_useperl.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/freezer_useperl.t
new file mode 100644
index 00000000000..b79c3c1edcf
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/freezer_useperl.t
@@ -0,0 +1,106 @@
+#!./perl -w
+#
+# test a few problems with the Freezer option, not a complete Freezer
+# test suite yet
+
+BEGIN {
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+}
+
+use strict;
+use Test::More tests => 7;
+use Data::Dumper;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+local $Data::Dumper::Useperl = 1;
+
+{
+ local $Data::Dumper::Freezer = 'freeze';
+
+ # test for seg-fault bug when freeze() returns a non-ref
+ {
+ my $foo = Test1->new("foo");
+ my $dumped_foo = Dumper($foo);
+ ok($dumped_foo,
+ "Use of freezer sub which returns non-ref worked.");
+ like($dumped_foo, qr/frozed/,
+ "Dumped string has the key added by Freezer with useperl.");
+ like(join(" ", Dumper($foo)), qr/\A\$VAR1 = /,
+ "Dumped list doesn't begin with Freezer's return value with useperl");
+ }
+
+ # test for warning when an object does not have a freeze()
+ {
+ my $warned = 0;
+ local $SIG{__WARN__} = sub { $warned++ };
+ my $bar = Test2->new("bar");
+ my $dumped_bar = Dumper($bar);
+ is($warned, 0, "A missing freeze() shouldn't warn.");
+ }
+
+ # a freeze() which die()s should still trigger the warning
+ {
+ my $warned = 0;
+ local $SIG{__WARN__} = sub { $warned++; };
+ my $bar = Test3->new("bar");
+ my $dumped_bar = Dumper($bar);
+ is($warned, 1, "A freeze() which die()s should warn.");
+ }
+
+}
+
+{
+ my ($obj, %dumps);
+ my $foo = Test1->new("foo");
+
+ local $Data::Dumper::Freezer = '';
+ $obj = Data::Dumper->new( [ $foo ] );
+ $dumps{'ddfemptystr'} = _dumptostr($obj);
+
+ local $Data::Dumper::Freezer = undef;
+ $obj = Data::Dumper->new( [ $foo ] );
+ $dumps{'ddfundef'} = _dumptostr($obj);
+
+ is($dumps{'ddfundef'}, $dumps{'ddfemptystr'},
+ "\$Data::Dumper::Freezer same with empty string or undef");
+}
+
+{
+ my ($obj, %dumps);
+ my $foo = Test1->new("foo");
+
+ $obj = Data::Dumper->new( [ $foo ] );
+ $obj->Freezer('');
+ $dumps{'objemptystr'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new( [ $foo ] );
+ $obj->Freezer(undef);
+ $dumps{'objundef'} = _dumptostr($obj);
+
+ is($dumps{'objundef'}, $dumps{'objemptystr'},
+ "Freezer() same with empty string or undef");
+}
+
+
+# a package with a freeze() which returns a non-ref
+package Test1;
+sub new { bless({name => $_[1]}, $_[0]) }
+sub freeze {
+ my $self = shift;
+ $self->{frozed} = 1;
+}
+
+# a package without a freeze()
+package Test2;
+sub new { bless({name => $_[1]}, $_[0]) }
+
+# a package with a freeze() which dies
+package Test3;
+sub new { bless({name => $_[1]}, $_[0]) }
+sub freeze { die "freeze() is broken" }
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/indent.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/indent.t
new file mode 100644
index 00000000000..a91027d5805
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/indent.t
@@ -0,0 +1,110 @@
+#!./perl -w
+# t/indent.t - Test Indent()
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 10;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+
+my $hash = { foo => 42 };
+
+my (%dumpstr);
+my $dumper;
+
+$dumper = Data::Dumper->new([$hash]);
+$dumpstr{noindent} = _dumptostr($dumper);
+# $VAR1 = {
+# 'foo' => 42
+# };
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent();
+$dumpstr{indent_no_arg} = _dumptostr($dumper);
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(undef);
+$dumpstr{indent_undef} = _dumptostr($dumper);
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(0);
+$dumpstr{indent_0} = _dumptostr($dumper);
+# $VAR1 = {'foo' => 42}; # no newline
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(1);
+$dumpstr{indent_1} = _dumptostr($dumper);
+# $VAR1 = {
+# 'foo' => 42
+# };
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(2);
+$dumpstr{indent_2} = _dumptostr($dumper);
+# $VAR1 = {
+# 'foo' => 42
+# };
+
+is($dumpstr{noindent}, $dumpstr{indent_no_arg},
+ "absence of Indent is same as Indent()");
+is($dumpstr{noindent}, $dumpstr{indent_undef},
+ "absence of Indent is same as Indent(undef)");
+isnt($dumpstr{noindent}, $dumpstr{indent_0},
+ "absence of Indent is different from Indent(0)");
+isnt($dumpstr{indent_0}, $dumpstr{indent_1},
+ "Indent(0) is different from Indent(1)");
+cmp_ok(length($dumpstr{indent_0}), '<=', length($dumpstr{indent_1}),
+ "Indent(0) is more compact than Indent(1)");
+is($dumpstr{noindent}, $dumpstr{indent_2},
+ "absence of Indent is same as Indent(2), i.e., 2 is default");
+cmp_ok(length($dumpstr{indent_1}), '<=', length($dumpstr{indent_2}),
+ "Indent(1) is more compact than Indent(2)");
+
+my $array = [ qw| foo 42 | ];
+$dumper = Data::Dumper->new([$array]);
+$dumper->Indent(2);
+$dumpstr{ar_indent_2} = _dumptostr($dumper);
+# $VAR1 = [
+# 'foo',
+# '42'
+# ];
+
+$dumper = Data::Dumper->new([$array]);
+$dumper->Indent(3);
+$dumpstr{ar_indent_3} = _dumptostr($dumper);
+# $VAR1 = [
+# #0
+# 'foo',
+# #1
+# '42'
+# ];
+
+isnt($dumpstr{ar_indent_2}, $dumpstr{ar_indent_3},
+ "On arrays, Indent(2) is different from Indent(3)");
+like($dumpstr{ar_indent_3},
+ qr/\#0.+'foo'.+\#1.+42/s,
+ "Indent(3) annotates array elements with their indices"
+);
+is(scalar(split("\n" => $dumpstr{ar_indent_2})) + 2,
+ scalar(split("\n" => $dumpstr{ar_indent_3})),
+ "Indent(3) runs 2 lines longer than Indent(2)");
+
+__END__
+is($dumpstr{noindent}, $dumpstr{indent_0},
+ "absence of Indent is same as Indent(0)");
+isnt($dumpstr{noindent}, $dumpstr{indent_1},
+ "absence of Indent is different from Indent(1)");
+print STDERR $dumpstr{indent_0};
+print STDERR $dumpstr{ar_indent_3};
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/lib/Testing.pm b/gnu/usr.bin/perl/dist/Data-Dumper/t/lib/Testing.pm
new file mode 100644
index 00000000000..5eaa8ee73a7
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/lib/Testing.pm
@@ -0,0 +1,15 @@
+package Testing;
+use 5.006_001;
+use strict;
+use warnings;
+require Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT_OK = qw(_dumptostr);
+use Carp;
+
+sub _dumptostr {
+ my ($obj) = @_;
+ return join '', $obj->Dump;
+}
+
+1;
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/misc.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/misc.t
new file mode 100644
index 00000000000..2ce81acc022
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/misc.t
@@ -0,0 +1,209 @@
+#!./perl -w
+# t/misc.t - Test various functionality
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 20;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($a, $b, @c, %d);
+$a = 'alpha';
+$b = 'beta';
+@c = ( qw| gamma delta epsilon | );
+%d = ( zeta => 'eta', theta => 'iota' );
+
+note("Argument validation for new()");
+{
+ local $@ = '';
+ eval { my $obj = Data::Dumper->new(undef); };
+ like($@,
+ qr/^Usage:\s+PACKAGE->new\(ARRAYREF,\s*\[ARRAYREF\]\)/,
+ "Got error message: new() needs defined argument"
+ );
+}
+
+{
+ local $@ = '';
+ eval { my $obj = Data::Dumper->new( { $a => $b } ); };
+ like($@,
+ qr/^Usage:\s+PACKAGE->new\(ARRAYREF,\s*\[ARRAYREF\]\)/,
+ "Got error message: new() needs array reference"
+ );
+}
+
+{
+ note("\$Data::Dumper::Useperl, Useqq, Deparse");
+ my ($obj, %dumpstr);
+
+ local $Data::Dumper::Useperl = 1;
+ $obj = Data::Dumper->new( [ \@c, \%d ] );
+ $dumpstr{useperl} = [ $obj->Values ];
+ local $Data::Dumper::Useperl = 0;
+
+ local $Data::Dumper::Useqq = 1;
+ $obj = Data::Dumper->new( [ \@c, \%d ] );
+ $dumpstr{useqq} = [ $obj->Values ];
+ local $Data::Dumper::Useqq = 0;
+
+ is_deeply($dumpstr{useperl}, $dumpstr{useqq},
+ "Useperl and Useqq return same");
+
+ local $Data::Dumper::Deparse = 1;
+ $obj = Data::Dumper->new( [ \@c, \%d ] );
+ $dumpstr{deparse} = [ $obj->Values ];
+ local $Data::Dumper::Deparse = 0;
+
+ is_deeply($dumpstr{useperl}, $dumpstr{deparse},
+ "Useperl and Deparse return same");
+}
+
+{
+ note("\$Data::Dumper::Pad and \$obj->Pad");
+ my ($obj, %dumps, $pad);
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Pad(undef);
+ $dumps{'undef'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Pad('');
+ $dumps{'emptystring'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'undef'},
+ "No setting for \$Data::Dumper::Pad and Pad(undef) give same result");
+
+ is($dumps{'noprev'}, $dumps{'emptystring'},
+ "No setting for \$Data::Dumper::Pad and Pad('') give same result");
+
+ $pad = 'XXX: ';
+ local $Data::Dumper::Pad = $pad;
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'ddp'} = _dumptostr($obj);
+ local $Data::Dumper::Pad = '';
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Pad($pad);
+ $dumps{'obj'} = _dumptostr($obj);
+
+ is($dumps{'ddp'}, $dumps{'obj'},
+ "\$Data::Dumper::Pad and \$obj->Pad() give same result");
+
+ is( (grep {! /^$pad/} (split(/\n/, $dumps{'ddp'}))), 0,
+ "Each line of dumped output padded as expected");
+}
+
+{
+ note("\$Data::Dumper::Varname and \$obj->Varname");
+ my ($obj, %dumps, $varname);
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Varname(undef);
+ $dumps{'undef'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Varname('');
+ $dumps{'emptystring'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'undef'},
+ "No setting for \$Data::Dumper::Varname and Varname(undef) give same result");
+
+ # Because Varname defaults to '$VAR', providing an empty argument to
+ # Varname produces a non-default result.
+ isnt($dumps{'noprev'}, $dumps{'emptystring'},
+ "No setting for \$Data::Dumper::Varname and Varname('') give different results");
+
+ $varname = 'MIMI';
+ local $Data::Dumper::Varname = $varname;
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'ddv'} = _dumptostr($obj);
+ local $Data::Dumper::Varname = undef;
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Varname($varname);
+ $dumps{'varname'} = _dumptostr($obj);
+
+ is($dumps{'ddv'}, $dumps{'varname'},
+ "Setting for \$Data::Dumper::Varname and Varname() give same result");
+
+ is( (grep { /^\$$varname/ } (split(/\n/, $dumps{'ddv'}))), 2,
+ "All lines of dumped output use provided varname");
+
+ is( (grep { /^\$VAR/ } (split(/\n/, $dumps{'ddv'}))), 0,
+ "No lines of dumped output use default \$VAR");
+}
+
+{
+ note("\$Data::Dumper::Useqq and \$obj->Useqq");
+ my ($obj, %dumps, $useqq);
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Useqq(undef);
+ $dumps{'undef'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Useqq('');
+ $dumps{'emptystring'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Useqq(0);
+ $dumps{'zero'} = _dumptostr($obj);
+
+ my $current = $Data::Dumper::Useqq;
+ local $Data::Dumper::Useqq = 0;
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'dduzero'} = _dumptostr($obj);
+ local $Data::Dumper::Useqq = $current;
+
+ is($dumps{'noprev'}, $dumps{'undef'},
+ "No setting for \$Data::Dumper::Useqq and Useqq(undef) give same result");
+
+ is($dumps{'noprev'}, $dumps{'zero'},
+ "No setting for \$Data::Dumper::Useqq and Useqq(0) give same result");
+
+ is($dumps{'noprev'}, $dumps{'emptystring'},
+ "No setting for \$Data::Dumper::Useqq and Useqq('') give same result");
+
+ is($dumps{'noprev'}, $dumps{'dduzero'},
+ "No setting for \$Data::Dumper::Useqq and Useqq(undef) give same result");
+
+ local $Data::Dumper::Useqq = 1;
+ $obj = Data::Dumper->new([$a,$b]);
+ $dumps{'ddu'} = _dumptostr($obj);
+ local $Data::Dumper::Useqq = $current;
+
+ $obj = Data::Dumper->new([$a,$b]);
+ $obj->Useqq(1);
+ $dumps{'obj'} = _dumptostr($obj);
+
+ is($dumps{'ddu'}, $dumps{'obj'},
+ "\$Data::Dumper::Useqq=1 and Useqq(1) give same result");
+
+ like($dumps{'ddu'},
+ qr/"$a".+?"$b"/s,
+ "Double-quotes used around values"
+ );
+
+ unlike($dumps{'ddu'},
+ qr/'$a'.+?'$b'/s,
+ "Single-quotes not used around values"
+ );
+}
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/names.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/names.t
new file mode 100644
index 00000000000..782f1cb768c
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/names.t
@@ -0,0 +1,66 @@
+#!./perl -w
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+use Carp;
+use Data::Dumper;
+use Test::More tests => 15;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($a, $b, $obj);
+my (@names);
+my (@newnames, $objagain, %newnames);
+my $dumpstr;
+$a = 'alpha';
+$b = 'beta';
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+@names = $obj->Names;
+is_deeply(\@names, [qw(a b)], "Names() returned expected list");
+
+@newnames = ( qw| gamma delta | );
+$objagain = $obj->Names(\@newnames);
+is($objagain, $obj, "Names returned same object");
+is_deeply($objagain->{names}, \@newnames,
+ "Able to use Names() to set names to be dumped");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+%newnames = ( gamma => 'delta', epsilon => 'zeta' );
+eval { @names = $obj->Names(\%newnames); };
+like($@, qr/Argument to Names, if provided, must be array ref/,
+ "Got expected error message: bad argument to Names()");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+@newnames = ( qw| gamma delta epsilon | );
+$objagain = $obj->Names(\@newnames);
+is($objagain, $obj, "Names returned same object");
+is_deeply($objagain->{names}, \@newnames,
+ "Able to use Names() to set names to be dumped");
+$dumpstr = _dumptostr($obj);
+like($dumpstr, qr/gamma/s, "Got first name expected");
+like($dumpstr, qr/delta/s, "Got first name expected");
+unlike($dumpstr, qr/epsilon/s, "Did not get name which was not expected");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+@newnames = ( qw| gamma | );
+$objagain = $obj->Names(\@newnames);
+is($objagain, $obj, "Names returned same object");
+is_deeply($objagain->{names}, \@newnames,
+ "Able to use Names() to set names to be dumped");
+$dumpstr = _dumptostr($obj);
+like($dumpstr, qr/gamma/s, "Got name expected");
+unlike($dumpstr, qr/delta/s, "Did not get name which was not expected");
+unlike($dumpstr, qr/epsilon/s, "Did not get name which was not expected");
+like($dumpstr, qr/\$VAR2/s, "Got default name");
+
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/perl-74170.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/perl-74170.t
index 4f8025dcacb..cca94aeb48b 100644
--- a/gnu/usr.bin/perl/dist/Data-Dumper/t/perl-74170.t
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/perl-74170.t
@@ -4,20 +4,20 @@
# Since it’s so large, it gets its own file.
BEGIN {
- require Config; import Config;
- no warnings 'once';
- if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
- print "1..0 # Skip: Data::Dumper was not built\n";
- exit 0;
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
}
}
-
use strict;
use Test::More tests => 1;
use Data::Dumper;
-our %repos = ();
-&real_life_setup();
+our %repos = real_life_setup();
$Data::Dumper::Indent = 1;
# A custom sort sub is necessary for reproducing the bug, as this is where
@@ -25,13 +25,14 @@ $Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = sub { return [ reverse sort keys %{$_[0]} ]; }
unless exists $ENV{NO_SORT_SUB};
-ok +Data::Dumper->Dumpxs([\%repos], [qw(*repos)]);
+ok(Data::Dumper->Dump([\%repos], [qw(*repos)]), "RT 74170 test");
sub real_life_setup {
# set up the %repos hash in a manner that reflects a real run of
- # gitolite's "compiler" script:
+ # the gitolite "compiler" script:
# Yes, all this is necessary to get the stack in such a state that the
# custom sort sub will trigger a reallocation.
+ my %repos;
push @{ $repos{''}{'@all'} }, ();
push @{ $repos{''}{'guser86'} }, ();
push @{ $repos{''}{'guser87'} }, ();
@@ -140,4 +141,5 @@ sub real_life_setup {
$repos{''}{R}{'user8'} = 1;
$repos{''}{W}{'user8'} = 1;
push @{ $repos{''}{'user8'} }, ();
+ return %repos;
}
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t
new file mode 100644
index 00000000000..f287101ae34
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t
@@ -0,0 +1,418 @@
+#!./perl -w
+# t/purity_deepcopy_maxdepth.t - Test Purity(), Deepcopy(),
+# Maxdepth() and recursive structures
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 24;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($a, $b, $c, @d);
+my ($d, $e, $f);
+
+note("\$Data::Dumper::Purity and Purity()");
+
+{
+ my ($obj, %dumps, $purity);
+
+ # Adapted from example in Dumper.pm POD:
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ note("Discrepancy between Dumpxs() and Dumpperl() behavior with respect to \$Data::Dumper::Purity = undef");
+ local $Data::Dumper::Useperl = 1;
+ $purity = undef;
+ local $Data::Dumper::Purity = $purity;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'ddpundef'} = _dumptostr($obj);
+
+ $purity = 0;
+ local $Data::Dumper::Purity = $purity;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'ddpzero'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'ddpundef'},
+ "No previous Purity setting equivalent to \$Data::Dumper::Purity = undef");
+
+ is($dumps{'noprev'}, $dumps{'ddpzero'},
+ "No previous Purity setting equivalent to \$Data::Dumper::Purity = 0");
+}
+
+{
+ my ($obj, %dumps, $purity);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $purity = 0;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Purity($purity);
+ $dumps{'objzero'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'objzero'},
+ "No previous Purity setting equivalent to Purity(0)");
+
+ $purity = undef;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Purity($purity);
+ $dumps{'objundef'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'objundef'},
+ "No previous Purity setting equivalent to Purity(undef)");
+}
+
+{
+ my ($obj, %dumps, $purity);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $purity = 1;
+ local $Data::Dumper::Purity = $purity;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'ddpone'} = _dumptostr($obj);
+
+ isnt($dumps{'noprev'}, $dumps{'ddpone'},
+ "No previous Purity setting different from \$Data::Dumper::Purity = 1");
+}
+
+{
+ my ($obj, %dumps, $purity);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $purity = 1;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Purity(1);
+ $dumps{'objone'} = _dumptostr($obj);
+
+ isnt($dumps{'noprev'}, $dumps{'objone'},
+ "No previous Purity setting different from Purity(0)");
+}
+
+{
+ my ($obj, %dumps, $purity);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $purity = 1;
+ local $Data::Dumper::Purity = $purity;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'ddpone'} = _dumptostr($obj);
+ local $Data::Dumper::Purity = undef;
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Purity(1);
+ $dumps{'objone'} = _dumptostr($obj);
+
+ is($dumps{'ddpone'}, $dumps{'objone'},
+ "\$Data::Dumper::Purity = 1 and Purity(1) are equivalent");
+}
+
+note("\$Data::Dumper::Deepcopy and Deepcopy()");
+
+{
+ my ($obj, %dumps, $deepcopy);
+
+ # Adapted from example in Dumper.pm POD:
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $deepcopy = undef;
+ local $Data::Dumper::Deepcopy = $deepcopy;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'dddundef'} = _dumptostr($obj);
+
+ $deepcopy = 0;
+ local $Data::Dumper::Deepcopy = $deepcopy;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'dddzero'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'dddundef'},
+ "No previous Deepcopy setting equivalent to \$Data::Dumper::Deepcopy = undef");
+
+ is($dumps{'noprev'}, $dumps{'dddzero'},
+ "No previous Deepcopy setting equivalent to \$Data::Dumper::Deepcopy = 0");
+}
+
+{
+ my ($obj, %dumps, $deepcopy);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $deepcopy = 0;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Deepcopy($deepcopy);
+ $dumps{'objzero'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'objzero'},
+ "No previous Deepcopy setting equivalent to Deepcopy(0)");
+
+ $deepcopy = undef;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Deepcopy($deepcopy);
+ $dumps{'objundef'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'objundef'},
+ "No previous Deepcopy setting equivalent to Deepcopy(undef)");
+}
+
+{
+ my ($obj, %dumps, $deepcopy);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $deepcopy = 1;
+ local $Data::Dumper::Deepcopy = $deepcopy;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'dddone'} = _dumptostr($obj);
+
+ isnt($dumps{'noprev'}, $dumps{'dddone'},
+ "No previous Deepcopy setting different from \$Data::Dumper::Deepcopy = 1");
+}
+
+{
+ my ($obj, %dumps, $deepcopy);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $deepcopy = 1;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Deepcopy(1);
+ $dumps{'objone'} = _dumptostr($obj);
+
+ isnt($dumps{'noprev'}, $dumps{'objone'},
+ "No previous Deepcopy setting different from Deepcopy(0)");
+}
+
+{
+ my ($obj, %dumps, $deepcopy);
+
+ @d = ('c');
+ $c = \@d;
+ $b = {};
+ $a = [1, $b, $c];
+ $b->{a} = $a;
+ $b->{b} = $a->[1];
+ $b->{c} = $a->[2];
+
+ $deepcopy = 1;
+ local $Data::Dumper::Deepcopy = $deepcopy;
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $dumps{'dddone'} = _dumptostr($obj);
+ local $Data::Dumper::Deepcopy = undef;
+
+ $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+ $obj->Deepcopy(1);
+ $dumps{'objone'} = _dumptostr($obj);
+
+ is($dumps{'dddone'}, $dumps{'objone'},
+ "\$Data::Dumper::Deepcopy = 1 and Deepcopy(1) are equivalent");
+}
+
+note("\$Data::Dumper::Maxdepth and Maxdepth()");
+
+{
+ # Adapted from Dumper.pm POD
+
+ my ($obj, %dumps, $maxdepth);
+
+ $a = "pearl";
+ $b = [ $a ];
+ $c = { 'b' => $b };
+ $d = [ $c ];
+ $e = { 'd' => $d };
+ $f = { 'e' => $e };
+
+ note("Discrepancy between Dumpxs() and Dumpperl() behavior with respect to \$Data::Dumper::Maxdepth = undef");
+ local $Data::Dumper::Useperl = 1;
+
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $Data::Dumper::Maxdepth = undef;
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $dumps{'ddmundef'} = _dumptostr($obj);
+
+ $maxdepth = 3;
+ local $Data::Dumper::Maxdepth = $maxdepth;
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $dumps{'ddm'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'ddmundef'},
+ "No previous Maxdepth setting equivalent to \$Data::Dumper::Maxdepth = undef");
+
+ like($dumps{'noprev'}, qr/$a/s,
+ "Without Maxdepth, got output from deepest level");
+
+ isnt($dumps{'noprev'}, $dumps{'ddm'},
+ "No previous Maxdepth setting differs from setting a shallow Maxdepth");
+
+ unlike($dumps{'ddm'}, qr/$a/s,
+ "With Maxdepth, did not get output from deepest level");
+}
+
+{
+ # Adapted from Dumper.pm POD
+
+ my ($obj, %dumps, $maxdepth);
+
+ $a = "pearl";
+ $b = [ $a ];
+ $c = { 'b' => $b };
+ $d = [ $c ];
+ $e = { 'd' => $d };
+ $f = { 'e' => $e };
+
+ note("Discrepancy between Dumpxs() and Dumpperl() behavior with respect to \$Data::Dumper::Maxdepth = undef");
+ local $Data::Dumper::Useperl = 1;
+
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $dumps{'noprev'} = _dumptostr($obj);
+
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $obj->Maxdepth();
+ $dumps{'maxdepthempty'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'maxdepthempty'},
+ "No previous Maxdepth setting equivalent to Maxdepth() with no argument");
+
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $obj->Maxdepth(undef);
+ $dumps{'maxdepthundef'} = _dumptostr($obj);
+
+ is($dumps{'noprev'}, $dumps{'maxdepthundef'},
+ "No previous Maxdepth setting equivalent to Maxdepth(undef)");
+
+ $maxdepth = 3;
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $obj->Maxdepth($maxdepth);
+ $dumps{'maxdepthset'} = _dumptostr($obj);
+
+ isnt($dumps{'noprev'}, $dumps{'maxdepthset'},
+ "No previous Maxdepth setting differs from Maxdepth() with shallow depth");
+
+ local $Data::Dumper::Maxdepth = 3;
+ $obj = Data::Dumper->new([$f], [qw(f)]);
+ $dumps{'ddmset'} = _dumptostr($obj);
+
+ is($dumps{'maxdepthset'}, $dumps{'ddmset'},
+ "Maxdepth set and \$Data::Dumper::Maxdepth are equivalent");
+}
+
+{
+ my ($obj, %dumps);
+
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+ local $Data::Dumper::Deparse = 0;
+ local $Data::Dumper::Purity = 1;
+ local $Data::Dumper::Useperl = 1;
+ sub hello { print "Hello world\n"; }
+ $obj = Data::Dumper->new( [ \&hello ] );
+ $dumps{'ddsksub'} = _dumptostr($obj);
+ like($warning, qr/^Encountered CODE ref, using dummy placeholder/,
+ "Got expected warning: dummy placeholder under Purity = 1");
+}
+
+{
+ my ($obj, %dumps);
+
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+ local $Data::Dumper::Deparse = 0;
+ local $Data::Dumper::Useperl = 1;
+ sub jello { print "Jello world\n"; }
+ $obj = Data::Dumper->new( [ \&hello ] );
+ $dumps{'ddsksub'} = _dumptostr($obj);
+ ok(! $warning, "Encountered CODE ref, but no Purity, hence no warning");
+}
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/quotekeys.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/quotekeys.t
new file mode 100644
index 00000000000..c633d56d64a
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/quotekeys.t
@@ -0,0 +1,94 @@
+#!./perl -w
+# t/quotekeys.t - Test Quotekeys()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 10;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+ delta => 'd',
+ beta => 'b',
+ gamma => 'c',
+ alpha => 'a',
+);
+
+run_tests_for_quotekeys();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 5
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_quotekeys();
+}
+
+sub run_tests_for_quotekeys {
+ note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+ my ($obj, %dumps, $quotekeys, $starting);
+
+ note("\$Data::Dumper::Quotekeys and Quotekeys() set to true value");
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddqkdefault'} = _dumptostr($obj);
+
+ $starting = $Data::Dumper::Quotekeys;
+ $quotekeys = 1;
+ local $Data::Dumper::Quotekeys = $quotekeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddqkone'} = _dumptostr($obj);
+ local $Data::Dumper::Quotekeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Quotekeys($quotekeys);
+ $dumps{'objqkone'} = _dumptostr($obj);
+
+ is($dumps{'ddqkdefault'}, $dumps{'ddqkone'},
+ "\$Data::Dumper::Quotekeys = 1 is default");
+ is($dumps{'ddqkone'}, $dumps{'objqkone'},
+ "\$Data::Dumper::Quotekeys = 1 and Quotekeys(1) are equivalent");
+ %dumps = ();
+
+ $quotekeys = 0;
+ local $Data::Dumper::Quotekeys = $quotekeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddqkzero'} = _dumptostr($obj);
+ local $Data::Dumper::Quotekeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Quotekeys($quotekeys);
+ $dumps{'objqkzero'} = _dumptostr($obj);
+
+ is($dumps{'ddqkzero'}, $dumps{'objqkzero'},
+ "\$Data::Dumper::Quotekeys = 0 and Quotekeys(0) are equivalent");
+
+ $quotekeys = undef;
+ local $Data::Dumper::Quotekeys = $quotekeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddqkundef'} = _dumptostr($obj);
+ local $Data::Dumper::Quotekeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Quotekeys($quotekeys);
+ $dumps{'objqkundef'} = _dumptostr($obj);
+
+ note("Quotekeys(undef) will fall back to the default value\nfor \$Data::Dumper::Quotekeys, which is a true value.");
+ isnt($dumps{'ddqkundef'}, $dumps{'objqkundef'},
+ "\$Data::Dumper::Quotekeys = undef and Quotekeys(undef) are equivalent");
+ isnt($dumps{'ddqkzero'}, $dumps{'objqkundef'},
+ "\$Data::Dumper::Quotekeys = undef and = 0 are equivalent");
+ %dumps = ();
+}
+
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/seen.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/seen.t
new file mode 100644
index 00000000000..08e4f1e3811
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/seen.t
@@ -0,0 +1,103 @@
+#!./perl -w
+# t/seen.t - Test Seen()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 10;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($obj, %dumps);
+
+my (@e, %f, @rv, @g, %h, $k);
+@e = ( qw| alpha beta gamma | );
+%f = ( epsilon => 'zeta', eta => 'theta' );
+@g = ( qw| iota kappa lambda | );
+%h = ( mu => 'nu', omicron => 'pi' );
+sub j { print "Hello world\n"; }
+$k = 'just another scalar';
+
+{
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { mark => 'snark' } );
+ like($warning,
+ qr/^Only refs supported, ignoring non-ref item \$mark/,
+ "Got expected warning for non-ref item");
+}
+
+{
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { mark => undef } );
+ like($warning,
+ qr/^Value of ref must be defined; ignoring undefined item \$mark/,
+ "Got expected warning for undefined value of item");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( undef );
+ is(@rv, 0, "Seen(undef) returned empty array");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( [ qw| mark snark | ] );
+ is(@rv, 0, "Seen(ref other than hashref) returned empty array");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { '*samba' => \@g } );
+ is_deeply($rv[0], $obj, "Got the object back: value array ref");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { '*canasta' => \%h } );
+ is_deeply($rv[0], $obj, "Got the object back: value hash ref");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { '*pinochle' => \&j } );
+ is_deeply($rv[0], $obj, "Got the object back: value code ref");
+}
+
+{
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { '*poker' => \$k } );
+ is_deeply($rv[0], $obj, "Got the object back: value ref to scalar");
+}
+
+{
+ my $l = 'loo';
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { $l => \$k } );
+ is_deeply($rv[0], $obj, "Got the object back: value ref to scalar");
+}
+
+{
+ my $l = '$loo';
+ $obj = Data::Dumper->new( [ \@e, \%f ]);
+ @rv = $obj->Seen( { $l => \$k } );
+ is_deeply($rv[0], $obj, "Got the object back: value ref to scalar");
+}
+
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/sortkeys.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/sortkeys.t
new file mode 100644
index 00000000000..fbd8197b11e
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/sortkeys.t
@@ -0,0 +1,190 @@
+#!./perl -w
+# t/sortkeys.t - Test Sortkeys()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 26;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+run_tests_for_sortkeys();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 13
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_sortkeys();
+}
+
+sub run_tests_for_sortkeys {
+ note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+ my %d = (
+ delta => 'd',
+ beta => 'b',
+ gamma => 'c',
+ alpha => 'a',
+ );
+
+ {
+ my ($obj, %dumps, $sortkeys, $starting);
+
+ note("\$Data::Dumper::Sortkeys and Sortkeys() set to true value");
+
+ $starting = $Data::Dumper::Sortkeys;
+ $sortkeys = 1;
+ local $Data::Dumper::Sortkeys = $sortkeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddskone'} = _dumptostr($obj);
+ local $Data::Dumper::Sortkeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sortkeys($sortkeys);
+ $dumps{'objskone'} = _dumptostr($obj);
+
+ is($dumps{'ddskone'}, $dumps{'objskone'},
+ "\$Data::Dumper::Sortkeys = 1 and Sortkeys(1) are equivalent");
+ like($dumps{'ddskone'},
+ qr/alpha.*?beta.*?delta.*?gamma/s,
+ "Sortkeys returned hash keys in Perl's default sort order");
+ %dumps = ();
+
+ }
+
+ {
+ my ($obj, %dumps, $starting);
+
+ note("\$Data::Dumper::Sortkeys and Sortkeys() set to coderef");
+
+ $starting = $Data::Dumper::Sortkeys;
+ local $Data::Dumper::Sortkeys = \&reversekeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddsksub'} = _dumptostr($obj);
+ local $Data::Dumper::Sortkeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sortkeys(\&reversekeys);
+ $dumps{'objsksub'} = _dumptostr($obj);
+
+ is($dumps{'ddsksub'}, $dumps{'objsksub'},
+ "\$Data::Dumper::Sortkeys = CODEREF and Sortkeys(CODEREF) are equivalent");
+ like($dumps{'ddsksub'},
+ qr/gamma.*?delta.*?beta.*?alpha/s,
+ "Sortkeys returned hash keys per sorting subroutine");
+ %dumps = ();
+
+ }
+
+ {
+ my ($obj, %dumps, $starting);
+
+ note("\$Data::Dumper::Sortkeys and Sortkeys() set to coderef with filter");
+ $starting = $Data::Dumper::Sortkeys;
+ local $Data::Dumper::Sortkeys = \&reversekeystrim;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddsksub'} = _dumptostr($obj);
+ local $Data::Dumper::Sortkeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sortkeys(\&reversekeystrim);
+ $dumps{'objsksub'} = _dumptostr($obj);
+
+ is($dumps{'ddsksub'}, $dumps{'objsksub'},
+ "\$Data::Dumper::Sortkeys = CODEREF and Sortkeys(CODEREF) select same keys");
+ like($dumps{'ddsksub'},
+ qr/gamma.*?delta.*?beta/s,
+ "Sortkeys returned hash keys per sorting subroutine");
+ unlike($dumps{'ddsksub'},
+ qr/alpha/s,
+ "Sortkeys filtered out one key per request");
+ %dumps = ();
+
+ }
+
+ {
+ my ($obj, %dumps, $sortkeys, $starting);
+
+ note("\$Data::Dumper::Sortkeys(undef) and Sortkeys(undef)");
+
+ $starting = $Data::Dumper::Sortkeys;
+ $sortkeys = 0;
+ local $Data::Dumper::Sortkeys = $sortkeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddskzero'} = _dumptostr($obj);
+ local $Data::Dumper::Sortkeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sortkeys($sortkeys);
+ $dumps{'objskzero'} = _dumptostr($obj);
+
+ $sortkeys = undef;
+ local $Data::Dumper::Sortkeys = $sortkeys;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddskundef'} = _dumptostr($obj);
+ local $Data::Dumper::Sortkeys = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sortkeys($sortkeys);
+ $dumps{'objskundef'} = _dumptostr($obj);
+
+ is($dumps{'ddskzero'}, $dumps{'objskzero'},
+ "\$Data::Dumper::Sortkeys = 0 and Sortkeys(0) are equivalent");
+ is($dumps{'ddskzero'}, $dumps{'ddskundef'},
+ "\$Data::Dumper::Sortkeys = 0 and = undef equivalent");
+ is($dumps{'objkzero'}, $dumps{'objkundef'},
+ "Sortkeys(0) and Sortkeys(undef) are equivalent");
+ %dumps = ();
+
+ }
+
+ note("Internal subroutine _sortkeys");
+ my %e = (
+ nu => 'n',
+ lambda => 'l',
+ kappa => 'k',
+ mu => 'm',
+ omicron => 'o',
+ );
+ my $rv = Data::Dumper::_sortkeys(\%e);
+ is(ref($rv), 'ARRAY', "Data::Dumper::_sortkeys returned an array ref");
+ is_deeply($rv, [ qw( kappa lambda mu nu omicron ) ],
+ "Got keys in Perl default order");
+ {
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+ my ($obj, %dumps, $starting);
+
+ note("\$Data::Dumper::Sortkeys and Sortkeys() set to coderef");
+
+ $starting = $Data::Dumper::Sortkeys;
+ local $Data::Dumper::Sortkeys = \&badreturnvalue;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddsksub'} = _dumptostr($obj);
+ like($warning, qr/^Sortkeys subroutine did not return ARRAYREF/,
+ "Got expected warning: sorting routine did not return array ref");
+ }
+
+}
+
+sub reversekeys { return [ reverse sort keys %{+shift} ]; }
+
+sub reversekeystrim {
+ my $hr = shift;
+ my @keys = sort keys %{$hr};
+ shift(@keys);
+ return [ reverse @keys ];
+}
+
+sub badreturnvalue { return { %{+shift} }; }
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/sparseseen.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/sparseseen.t
new file mode 100644
index 00000000000..c78dec67ce8
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/sparseseen.t
@@ -0,0 +1,88 @@
+#!./perl -w
+# t/sparseseen.t - Test Sparseseen()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+ delta => 'd',
+ beta => 'b',
+ gamma => 'c',
+ alpha => 'a',
+);
+
+run_tests_for_sparseseen();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 4
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_sparseseen();
+}
+
+sub run_tests_for_sparseseen {
+ note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+ my ($obj, %dumps, $sparseseen, $starting);
+
+ note("\$Data::Dumper::Sparseseen and Sparseseen() set to true value");
+
+ $starting = $Data::Dumper::Sparseseen;
+ $sparseseen = 1;
+ local $Data::Dumper::Sparseseen = $sparseseen;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddssone'} = _dumptostr($obj);
+ local $Data::Dumper::Sparseseen = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sparseseen($sparseseen);
+ $dumps{'objssone'} = _dumptostr($obj);
+
+ is($dumps{'ddssone'}, $dumps{'objssone'},
+ "\$Data::Dumper::Sparseseen = 1 and Sparseseen(1) are equivalent");
+ %dumps = ();
+
+ $sparseseen = 0;
+ local $Data::Dumper::Sparseseen = $sparseseen;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddsszero'} = _dumptostr($obj);
+ local $Data::Dumper::Sparseseen = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sparseseen($sparseseen);
+ $dumps{'objsszero'} = _dumptostr($obj);
+
+ is($dumps{'ddsszero'}, $dumps{'objsszero'},
+ "\$Data::Dumper::Sparseseen = 0 and Sparseseen(0) are equivalent");
+
+ $sparseseen = undef;
+ local $Data::Dumper::Sparseseen = $sparseseen;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddssundef'} = _dumptostr($obj);
+ local $Data::Dumper::Sparseseen = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Sparseseen($sparseseen);
+ $dumps{'objssundef'} = _dumptostr($obj);
+
+ is($dumps{'ddssundef'}, $dumps{'objssundef'},
+ "\$Data::Dumper::Sparseseen = undef and Sparseseen(undef) are equivalent");
+ is($dumps{'ddsszero'}, $dumps{'objssundef'},
+ "\$Data::Dumper::Sparseseen = undef and = 0 are equivalent");
+ %dumps = ();
+}
+
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/terse.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/terse.t
index 8d3ad488941..a5be98050c9 100644
--- a/gnu/usr.bin/perl/dist/Data-Dumper/t/terse.t
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/terse.t
@@ -2,9 +2,11 @@
use strict;
use warnings;
-use Test::More tests => 2;
-
use Data::Dumper;
+use Test::More tests => 6;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
my $hash = { foo => 42 };
@@ -20,3 +22,40 @@ for my $useperl (0..1) {
}
WANT
}
+
+my (%dumpstr);
+my $dumper;
+
+$dumper = Data::Dumper->new([$hash]);
+$dumpstr{noterse} = _dumptostr($dumper);
+# $VAR1 = {
+# 'foo' => 42
+# };
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Terse();
+$dumpstr{terse_no_arg} = _dumptostr($dumper);
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Terse(0);
+$dumpstr{terse_0} = _dumptostr($dumper);
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Terse(1);
+$dumpstr{terse_1} = _dumptostr($dumper);
+# {
+# 'foo' => 42
+# }
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Terse(undef);
+$dumpstr{terse_undef} = _dumptostr($dumper);
+
+is($dumpstr{noterse}, $dumpstr{terse_no_arg},
+ "absence of Terse is same as Terse()");
+is($dumpstr{noterse}, $dumpstr{terse_0},
+ "absence of Terse is same as Terse(0)");
+isnt($dumpstr{noterse}, $dumpstr{terse_1},
+ "absence of Terse is different from Terse(1)");
+is($dumpstr{noterse}, $dumpstr{terse_undef},
+ "absence of Terse is same as Terse(undef)");
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/toaster.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/toaster.t
new file mode 100644
index 00000000000..6e7d0e0306a
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/toaster.t
@@ -0,0 +1,88 @@
+#!./perl -w
+# t/toaster.t - Test Toaster()
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+ delta => 'd',
+ beta => 'b',
+ gamma => 'c',
+ alpha => 'a',
+);
+
+run_tests_for_toaster();
+SKIP: {
+ skip "XS version was unavailable, so we already ran with pure Perl", 4
+ if $Data::Dumper::Useperl;
+ local $Data::Dumper::Useperl = 1;
+ run_tests_for_toaster();
+}
+
+sub run_tests_for_toaster {
+ note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+ my ($obj, %dumps, $toaster, $starting);
+
+ note("\$Data::Dumper::Toaster and Toaster() set to true value");
+
+ $starting = $Data::Dumper::Toaster;
+ $toaster = 1;
+ local $Data::Dumper::Toaster = $toaster;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddtoasterone'} = _dumptostr($obj);
+ local $Data::Dumper::Toaster = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Toaster($toaster);
+ $dumps{'objtoasterone'} = _dumptostr($obj);
+
+ is($dumps{'ddtoasterone'}, $dumps{'objtoasterone'},
+ "\$Data::Dumper::Toaster = 1 and Toaster(1) are equivalent");
+ %dumps = ();
+
+ $toaster = 0;
+ local $Data::Dumper::Toaster = $toaster;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddtoasterzero'} = _dumptostr($obj);
+ local $Data::Dumper::Toaster = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Toaster($toaster);
+ $dumps{'objtoasterzero'} = _dumptostr($obj);
+
+ is($dumps{'ddtoasterzero'}, $dumps{'objtoasterzero'},
+ "\$Data::Dumper::Toaster = 0 and Toaster(0) are equivalent");
+
+ $toaster = undef;
+ local $Data::Dumper::Toaster = $toaster;
+ $obj = Data::Dumper->new( [ \%d ] );
+ $dumps{'ddtoasterundef'} = _dumptostr($obj);
+ local $Data::Dumper::Toaster = $starting;
+
+ $obj = Data::Dumper->new( [ \%d ] );
+ $obj->Toaster($toaster);
+ $dumps{'objtoasterundef'} = _dumptostr($obj);
+
+ is($dumps{'ddtoasterundef'}, $dumps{'objtoasterundef'},
+ "\$Data::Dumper::Toaster = undef and Toaster(undef) are equivalent");
+ is($dumps{'ddtoasterzero'}, $dumps{'objtoasterundef'},
+ "\$Data::Dumper::Toaster = undef and = 0 are equivalent");
+ %dumps = ();
+}
+
diff --git a/gnu/usr.bin/perl/dist/Data-Dumper/t/values.t b/gnu/usr.bin/perl/dist/Data-Dumper/t/values.t
new file mode 100644
index 00000000000..444ebc3db44
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Data-Dumper/t/values.t
@@ -0,0 +1,40 @@
+#!./perl -w
+
+BEGIN {
+ if ($ENV{PERL_CORE}){
+ require Config; import Config;
+ no warnings 'once';
+ if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+ print "1..0 # Skip: Data::Dumper was not built\n";
+ exit 0;
+ }
+ }
+}
+
+use strict;
+use Data::Dumper;
+use Test::More tests => 4;
+
+my ($a, $b, $obj);
+my (@values, @names);
+my (@newvalues, $objagain, %newvalues);
+$a = 'alpha';
+$b = 'beta';
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+@values = $obj->Values;
+is_deeply(\@values, [$a,$b], "Values() returned expected list");
+
+@newvalues = ( qw| gamma delta epsilon | );
+$objagain = $obj->Values(\@newvalues);
+is($objagain, $obj, "Values returned same object");
+is_deeply($objagain->{todump}, \@newvalues,
+ "Able to use Values() to set values to be dumped");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+%newvalues = ( gamma => 'delta', epsilon => 'zeta' );
+eval { @values = $obj->Values(\%newvalues); };
+like($@, qr/Argument to Values, if provided, must be array ref/,
+ "Got expected error message: bad argument to Values()");
+
+
diff --git a/gnu/usr.bin/perl/dist/Env/lib/Env.pm b/gnu/usr.bin/perl/dist/Env/lib/Env.pm
index bb1f0b381fd..6e6cd8b2305 100644
--- a/gnu/usr.bin/perl/dist/Env/lib/Env.pm
+++ b/gnu/usr.bin/perl/dist/Env/lib/Env.pm
@@ -1,6 +1,6 @@
package Env;
-our $VERSION = '1.03';
+our $VERSION = '1.04';
=head1 NAME
@@ -211,7 +211,7 @@ sub SPLICE {
my $length = shift;
my @temp = split($sep, $ENV{$$self});
if (wantarray) {
- my @result = splice @temp, $self, $offset, $length, @_;
+ my @result = splice @temp, $offset, $length, @_;
$ENV{$$self} = join($sep, @temp);
return @result;
} else {
diff --git a/gnu/usr.bin/perl/dist/Env/t/array.t b/gnu/usr.bin/perl/dist/Env/t/array.t
index 9e87f4a6b26..d0291744ade 100644
--- a/gnu/usr.bin/perl/dist/Env/t/array.t
+++ b/gnu/usr.bin/perl/dist/Env/t/array.t
@@ -6,7 +6,7 @@ use strict;
use Test::More;
plan(skip_all => "skipped for VMS") if $^O eq 'VMS';
-plan(tests => 11);
+plan(tests => 12);
use Env qw(@FOO);
use vars qw(@BAR);
@@ -64,3 +64,7 @@ is_deeply(\@FOO, \@BAR, "Sort");
splice @FOO, 1, 1, 'B';
splice @BAR, 1, 1, 'B';
is_deeply(\@FOO, \@BAR, "Splice");
+
+my $foo = $ENV{FOO};
+() = splice @FOO, 0, 0;
+is $ENV{FOO}, $foo, 'Splice in list context';
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/Changes b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/Changes
index b06f94d2928..829b53ba4cd 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/Changes
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/Changes
@@ -1,5 +1,26 @@
Revision history for Perl extension ExtUtils::CBuilder.
+0.280209 - 2012-10-20 (Perl v5.17.5)
+
+ Fixed:
+
+ - Allow options to be passed to prelink in Windows (perl #115100)
+ [Eric Brine]
+
+0.280208 - 2012-06-20 (Perl v5.17.1)
+
+ Fixed:
+
+ - Corrected location in which manifest file is looked for on
+ Windows (RT#35943, perl #111798) [snaury@gmail.com]
+
+0.280207 (Not released)
+
+ Fixed:
+
+ - Corrected test for existence of manifest file on Windows
+ (perl #111782) [Steve Hay]
+
0.280206 - 2012-03-20 (Perl v5.15.9)
Documented:
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/Makefile.PL b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/Makefile.PL
index e6b1d16c3ab..57014a3e390 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/Makefile.PL
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/Makefile.PL
@@ -15,6 +15,7 @@ my %WriteMakefileArgs = (
"ExtUtils::MakeMaker" => "6.30"
},
"EXE_FILES" => [],
+ "INSTALLDIRS" => ($] < 5.011 ? 'perl' : 'site'),
"LICENSE" => "perl",
"PREREQ_PM" => {
"Cwd" => 0,
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm
index aff607d7ee1..1caba9c3df5 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm
@@ -6,7 +6,7 @@ use File::Basename ();
use Perl::OSType qw/os_type/;
use vars qw($VERSION @ISA);
-$VERSION = '0.280206';
+$VERSION = '0.280210';
$VERSION = eval $VERSION;
# We only use this once - don't waste a symbol table entry on it.
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
index 6d983cd2f48..c76489bfd06 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
@@ -12,7 +12,7 @@ use IPC::Cmd qw(can_run);
use File::Temp qw(tempfile);
use vars qw($VERSION);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
# More details about C/C++ compilers:
# http://developers.sun.com/sunstudio/documentation/product/compiler.jsp
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm
index 4bc71939f6e..696badc91b5 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm
@@ -4,7 +4,7 @@ use strict;
use ExtUtils::CBuilder::Base;
use vars qw($VERSION @ISA);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Base);
sub link_executable {
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm
index 47238e8b025..55ce242b8d5 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm
@@ -4,7 +4,7 @@ use strict;
use ExtUtils::CBuilder::Base;
use vars qw($VERSION @ISA);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Base);
use File::Spec::Functions qw(catfile catdir);
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm
index 080f2b4be71..b63a3893bce 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm
@@ -10,7 +10,7 @@ use ExtUtils::CBuilder::Base;
use IO::File;
use vars qw($VERSION @ISA);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Base);
=begin comment
@@ -179,8 +179,7 @@ sub link {
$spec{output} ||= File::Spec->catfile( $spec{builddir},
$spec{basename} . '.'.$cf->{dlext} );
- $spec{manifest} ||= File::Spec->catfile( $spec{builddir},
- $spec{basename} . '.'.$cf->{dlext}.'.manifest');
+ $spec{manifest} ||= $spec{output} . '.manifest';
$spec{implib} ||= File::Spec->catfile( $spec{builddir},
$spec{basename} . $cf->{lib_ext} );
$spec{explib} ||= File::Spec->catfile( $spec{builddir},
@@ -213,7 +212,8 @@ sub link {
(my $def_base = $spec{def_file}) =~ tr/'"//d;
$def_base =~ s/\.def$//;
- $self->prelink( dl_name => $args{module_name},
+ $self->prelink( %args,
+ dl_name => $args{module_name},
dl_file => $def_base,
dl_base => $spec{basename} );
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
index 01acec5d530..d7876f586db 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
@@ -1,7 +1,7 @@
package ExtUtils::CBuilder::Platform::Windows::BCC;
use vars qw($VERSION);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
sub format_compiler_cmd {
my ($self, %spec) = @_;
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
index ccc575fb58f..e7129acccbf 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
@@ -1,7 +1,7 @@
package ExtUtils::CBuilder::Platform::Windows::GCC;
use vars qw($VERSION);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
sub format_compiler_cmd {
my ($self, %spec) = @_;
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
index a847699ea64..ce649629c76 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
@@ -1,7 +1,7 @@
package ExtUtils::CBuilder::Platform::Windows::MSVC;
use vars qw($VERSION);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
sub arg_exec_file {
my ($self, $file) = @_;
@@ -64,6 +64,7 @@ sub format_linker_cmd {
}
my $output = $spec{output};
+ my $manifest = $spec{manifest};
$spec{def_file} &&= '-def:' . $spec{def_file};
$spec{output} &&= '-out:' . $spec{output};
@@ -93,7 +94,7 @@ sub format_linker_cmd {
# Embed the manifest file if it exists
push @cmds, [
- 'if', 'exist', $spec{manifest}, 'mt', '-nologo', $spec{manifest}, '-outputresource:' . "$output;2"
+ 'if', 'exist', $manifest, 'mt', '-nologo', $spec{manifest}, '-outputresource:' . "$output;2"
];
return @cmds;
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm
index 2ed318b8854..29334b13076 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm
@@ -5,7 +5,7 @@ use ExtUtils::CBuilder::Platform::Unix;
use File::Spec;
use vars qw($VERSION @ISA);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub need_prelink { 1 }
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm
index b30497ec8d6..206b7985d98 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm
@@ -5,7 +5,7 @@ use File::Spec;
use ExtUtils::CBuilder::Platform::Unix;
use vars qw($VERSION @ISA);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
# TODO: If a specific exe_file name is requested, if the exe created
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm
index 62eddd7b014..0518e3ebb4c 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm
@@ -4,7 +4,7 @@ use strict;
use ExtUtils::CBuilder::Platform::Unix;
use vars qw($VERSION @ISA);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub compile {
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
index 587dbbd097f..14b84e92cdb 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
@@ -6,7 +6,7 @@ use File::Spec;
use vars qw($VERSION @ISA);
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
sub link_executable {
my $self = shift;
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm
index 531a812e358..c41cdfaa8c3 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm
@@ -4,7 +4,7 @@ use strict;
use ExtUtils::CBuilder::Platform::Unix;
use vars qw($VERSION @ISA);
-$VERSION = '0.280206';
+$VERSION = '0.280209';
@ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub need_prelink { 1 }
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-Install/lib/ExtUtils/Install.pm b/gnu/usr.bin/perl/dist/ExtUtils-Install/lib/ExtUtils/Install.pm
index 7e4cd7fade0..7e17121d499 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-Install/lib/ExtUtils/Install.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-Install/lib/ExtUtils/Install.pm
@@ -38,11 +38,11 @@ ExtUtils::Install - install files from here to there
=head1 VERSION
-1.58
+1.59
=cut
-$VERSION = '1.58'; # <---- dont forget to update the POD section just above this line!
+$VERSION = '1.59'; # <---- dont forget to update the POD section just above this line!
$VERSION = eval $VERSION;
=pod
@@ -96,34 +96,11 @@ Dies with a special message.
=cut
my $Is_VMS = $^O eq 'VMS';
-my $Is_VMS_noefs = $Is_VMS;
my $Is_MacPerl = $^O eq 'MacOS';
my $Is_Win32 = $^O eq 'MSWin32';
my $Is_cygwin = $^O eq 'cygwin';
my $CanMoveAtBoot = ($Is_Win32 || $Is_cygwin);
- if( $Is_VMS ) {
- my $vms_unix_rpt;
- my $vms_efs;
- my $vms_case;
-
- if (eval { local $SIG{__DIE__}; require VMS::Feature; }) {
- $vms_unix_rpt = VMS::Feature::current("filename_unix_report");
- $vms_efs = VMS::Feature::current("efs_charset");
- $vms_case = VMS::Feature::current("efs_case_preserve");
- } else {
- my $unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || '';
- my $efs_charset = $ENV{'DECC$EFS_CHARSET'} || '';
- my $efs_case = $ENV{'DECC$EFS_CASE_PRESERVE'} || '';
- $vms_unix_rpt = $unix_rpt =~ /^[ET1]/i;
- $vms_efs = $efs_charset =~ /^[ET1]/i;
- $vms_case = $efs_case =~ /^[ET1]/i;
- }
- $Is_VMS_noefs = 0 if ($vms_efs);
- }
-
-
-
# *note* CanMoveAtBoot is only incidentally the same condition as below
# this needs not hold true in the future.
my $Has_Win32API_File = ($Is_Win32 || $Is_cygwin)
@@ -440,9 +417,7 @@ sub _can_write_dir {
my $path='';
my @make;
while (@dirs) {
- if ($Is_VMS_noefs) {
- # There is a bug in catdir that is fixed when the EFS character
- # set is enabled, which requires this VMS specific code.
+ if ($Is_VMS) {
$dir = File::Spec->catdir($vol,@dirs);
}
else {
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-Install/lib/ExtUtils/Installed.pm b/gnu/usr.bin/perl/dist/ExtUtils-Install/lib/ExtUtils/Installed.pm
index b4b7f7580fa..c267d992e2e 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-Install/lib/ExtUtils/Installed.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-Install/lib/ExtUtils/Installed.pm
@@ -17,7 +17,7 @@ my $DOSISH = ($^O =~ /^(MSWin\d\d|os2|dos|mint)$/);
require VMS::Filespec if $Is_VMS;
use vars qw($VERSION);
-$VERSION = '1.999002';
+$VERSION = '1.999003';
$VERSION = eval $VERSION;
sub _is_prefix {
@@ -403,7 +403,7 @@ search for installed modules. For instance
my $installed =
ExtUtils::Installed->new(extra_libs=>["/my/lib/path"]);
-This should only be necessary if C</my/lib/path> is not in PERL5LIB.
+This should only be necessary if F</my/lib/path> is not in PERL5LIB.
Finally there is the 'default', and the related 'default_get' and 'default_set'
options. These options control the "default" object which is provided by the
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm b/gnu/usr.bin/perl/dist/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm
index b1e61200187..5bcd6d693a4 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm
@@ -13,7 +13,7 @@ use vars qw($VERSION @ISA @EXPORT_OK
$Is_MacOS $Is_VMS $Is_VMS_mode $Is_VMS_lc $Is_VMS_nodot
$Debug $Verbose $Quiet $MANIFEST $DEFAULT_MSKIP);
-$VERSION = '1.61';
+$VERSION = '1.63';
@ISA=('Exporter');
@EXPORT_OK = qw(mkmanifest
manicheck filecheck fullcheck skipcheck
@@ -161,6 +161,14 @@ sub clean_up_filename {
my $filename = shift;
$filename =~ s|^\./||;
$filename =~ s/^:([^:]+)$/$1/ if $Is_MacOS;
+ if ( $Is_VMS ) {
+ $filename =~ s/\.$//; # trim trailing dot
+ $filename = VMS::Filespec::unixify($filename); # unescape spaces, etc.
+ if( $Is_VMS_lc ) {
+ $filename = lc($filename);
+ $filename = uc($filename) if $filename =~ /^MANIFEST(\.SKIP)?$/i;
+ }
+ }
return $filename;
}
@@ -182,11 +190,6 @@ sub manifind {
my $name = clean_up_filename($File::Find::name);
warn "Debug: diskfile $name\n" if $Debug;
return if -d $_;
-
- if( $Is_VMS_lc ) {
- $name =~ s#(.*)\.$#\L$1#;
- $name = uc($name) if $name =~ /^MANIFEST(\.SKIP)?$/i;
- }
$found->{$name} = "";
};
@@ -378,8 +381,10 @@ sub maniread {
warn "Debug: Illegal name $file changed to $okfile\n" if $Debug;
$file = $okfile;
}
- $file = lc($file)
- unless $Is_VMS_lc &&($file =~ /^MANIFEST(\.SKIP)?$/);
+ if( $Is_VMS_lc ) {
+ $file = lc($file);
+ $file = uc($file) if $file =~ /^MANIFEST(\.SKIP)?$/i;
+ }
}
$read->{$file} = $comment;
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-Manifest/t/Manifest.t b/gnu/usr.bin/perl/dist/ExtUtils-Manifest/t/Manifest.t
index ba51f563821..a6a89a2d65a 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-Manifest/t/Manifest.t
+++ b/gnu/usr.bin/perl/dist/ExtUtils-Manifest/t/Manifest.t
@@ -44,7 +44,7 @@ my %Files;
sub add_file {
my ($file, $data) = @_;
$data ||= 'foo';
- $file =~ s/ /^_/g if $Is_VMS; # escape spaces
+ $file =~ s/ /^_/g if $Is_VMS_noefs; # escape spaces
1 while unlink $file; # or else we'll get multiple versions on VMS
open( T, '> '.$file) or return;
print T $data;
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/Changes b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/Changes
index b9586bcb0c3..ae7b40f8d67 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/Changes
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/Changes
@@ -1,6 +1,9 @@
Revision history for Perl extension ExtUtils::ParseXS.
+3.18 - Mon Nov 19 07:35:00 CET 2012
- Restore portability to Perl 5.6, which was lost at EU-PXS 3.00.
+ - [perl #112776] avoid warning on an initialized non-parameter
+ - Only increment PL_amagic_generation before 5.9
3.15 - Thu Feb 2 08:12:00 CET 2012
- Fix version for PAUSE indexer.
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
index 883d9059311..d50b5010cd0 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
@@ -11,7 +11,7 @@ use Symbol;
our $VERSION;
BEGIN {
- $VERSION = '3.16';
+ $VERSION = '3.18';
}
use ExtUtils::ParseXS::Constants $VERSION;
use ExtUtils::ParseXS::CountLines $VERSION;
@@ -949,7 +949,9 @@ EOF
print Q(<<"EOF") if ($self->{Overload});
# /* register the overloading (type 'A') magic */
+##if (PERL_REVISION == 5 && PERL_VERSION < 9)
# PL_amagic_generation++;
+##endif
# /* The magic for overload gets a GV* via gv_fetchmeth as */
# /* mentioned above, and looks in the SV* slot of it for */
# /* the "fallback" status. */
@@ -1766,7 +1768,7 @@ sub output_init {
$argsref->{init},
$argsref->{printed_name}
);
- my $arg = "ST(" . ($num - 1) . ")";
+ my $arg = $num ? "ST(" . ($num - 1) . ")" : "/* not a parameter */";
if ( $init =~ /^=/ ) {
if ($printed_name) {
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm
index 2f822dacbe9..2e27169aa22 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm
@@ -3,7 +3,7 @@ use strict;
use warnings;
use Symbol;
-our $VERSION = '3.16';
+our $VERSION = '3.18';
=head1 NAME
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm
index 66944cd629d..7e2a0f5030b 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm
@@ -1,7 +1,7 @@
package ExtUtils::ParseXS::CountLines;
use strict;
-our $VERSION = '3.16';
+our $VERSION = '3.18';
our $SECTION_END_MARKER;
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm
index 2bc9c8036f1..b9a43589488 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.16';
+our $VERSION = '3.19';
#use Carp qw(croak);
require ExtUtils::ParseXS;
@@ -23,7 +23,7 @@ ExtUtils::Typemaps - Read/Write/Modify Perl/XS typemap files
# $typemap = ExtUtils::Typemaps->new();
# alternatively create an in-memory typemap by parsing a string
# $typemap = ExtUtils::Typemaps->new(string => $sometypemap);
-
+
# add a mapping
$typemap->add_typemap(ctype => 'NV', xstype => 'T_NV');
$typemap->add_inputmap(
@@ -34,13 +34,13 @@ ExtUtils::Typemaps - Read/Write/Modify Perl/XS typemap files
);
$typemap->add_string(string => $typemapstring);
# will be parsed and merged
-
+
# remove a mapping (same for remove_typemap and remove_outputmap...)
$typemap->remove_inputmap(xstype => 'SomeType');
-
+
# save a typemap to a file
$typemap->write(file => 'anotherfile.map');
-
+
# merge the other typemap into this one
$typemap->merge(typemap => $another_typemap);
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm
index 671110fb97a..857ac1e8d93 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::Cmd;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.16';
+our $VERSION = '3.18';
use ExtUtils::Typemaps;
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm
index 9e7053f2290..487a4a542de 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::InputMap;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.16';
+our $VERSION = '3.18';
=head1 NAME
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm
index 95cbbccf5c3..08960618d51 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::OutputMap;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.16';
+our $VERSION = '3.18';
=head1 NAME
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm
index b29e212d455..1b9f8ba4dea 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
require ExtUtils::Typemaps;
-our $VERSION = '3.16';
+our $VERSION = '3.18';
=head1 NAME
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/perlxstut.pod b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/perlxstut.pod
index 93c1bfbe61b..d36f4256e8c 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/perlxstut.pod
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/perlxstut.pod
@@ -1095,7 +1095,7 @@ Mytest.xs:
SvGETMAGIC(paths);
if ((!SvROK(paths))
|| (SvTYPE(SvRV(paths)) != SVt_PVAV)
- || ((numpaths = av_len((AV *)SvRV(paths))) < 0))
+ || ((numpaths = av_top_index((AV *)SvRV(paths))) < 0))
{
XSRETURN_UNDEF;
}
@@ -1158,7 +1158,7 @@ true, which indicates that paths is a valid reference. (Simply
checking C<SvROK> won't trigger FETCH on a tied variable.) It
then verifies that the object referenced by paths is an array, using C<SvRV>
to dereference paths, and C<SvTYPE> to discover its type. As an added test,
-it checks that the array referenced by paths is non-empty, using the C<av_len>
+it checks that the array referenced by paths is non-empty, using the C<av_top_index>
function (which returns -1 if the array is empty). The XSRETURN_UNDEF macro
is used to abort the XSUB and return the undefined value whenever all three of
these conditions are not met.
@@ -1167,7 +1167,7 @@ these conditions are not met.
We manipulate several arrays in this XSUB. Note that an array is represented
internally by an AV* pointer. The functions and macros for manipulating
-arrays are similar to the functions in Perl: C<av_len> returns the highest
+arrays are similar to the functions in Perl: C<av_top_index> returns the highest
index in an AV*, much like $#array; C<av_fetch> fetches a single scalar value
from an array, given its index; C<av_push> pushes a scalar value onto the
end of the array, automatically extending the array as necessary.
@@ -1239,7 +1239,7 @@ standard C library function C<fputs()>. This is all we need:
The real work is done in the standard typemap.
-B<But> you loose all the fine stuff done by the perlio layers. This
+B<But> you lose all the fine stuff done by the perlio layers. This
calls the stdio function C<fputs()>, which knows nothing about them.
The standard typemap offers three variants of PerlIO *:
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod
index 67ddadefef7..94bd037e348 100644
--- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod
@@ -95,11 +95,11 @@ strings of the C<char *> type to Perl scalars/strings:
TYPEMAP
char * T_PV
-
+
INPUT
T_PV
$var = ($type)SvPV_nolen($arg)
-
+
OUTPUT
T_PV
sv_setpv((SV*)$arg, $var);
@@ -117,7 +117,7 @@ that type:
TYPEMAP
Net_Config T_PTROBJ_SPECIAL
-
+
INPUT
T_PTROBJ_SPECIAL
if (sv_derived_from($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")){
@@ -126,7 +126,7 @@ that type:
}
else
croak(\"$var is not of type ${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")
-
+
OUTPUT
T_PTROBJ_SPECIAL
sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\",
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/115-avoid-noise.t b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/115-avoid-noise.t
new file mode 100644
index 00000000000..2a99748affa
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/115-avoid-noise.t
@@ -0,0 +1,21 @@
+#!/usr/bin/perl -w
+use strict;
+use warnings;
+use File::Spec;
+use Test::More tests => 1;
+use lib qw( lib t/lib );
+use ExtUtils::ParseXS qw(process_file);
+
+chdir 't' or die "Can't chdir to t/, $!";
+
+# Module-Build uses ExtUtils::ParseXS with $^W set, try to avoid
+# warning in that case.
+
+{
+ my $out;
+ open my $out_fh, ">", \$out;
+ my @warnings;
+ local $SIG{__WARN__} = sub { push @warnings, "@_" };
+ process_file(filename => "XSWarn.xs", output => $out_fh);
+ is_deeply(\@warnings, [], "shouldn't be any warnings");
+}
diff --git a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/XSWarn.xs b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/XSWarn.xs
new file mode 100644
index 00000000000..4ae35aca155
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/t/XSWarn.xs
@@ -0,0 +1,14 @@
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+MODULE = XSWarn PACKAGE = XSWarn PREFIX = xswarn_
+
+PROTOTYPES: DISABLE
+
+void
+xswarn_nonargs()
+# see perl #112776
+ SV *sv = sv_2mortal(newSV());
+ CODE:
+ ;
diff --git a/gnu/usr.bin/perl/dist/Filter-Simple/lib/Filter/Simple.pm b/gnu/usr.bin/perl/dist/Filter-Simple/lib/Filter/Simple.pm
index b0068037f3f..5de131fec2b 100644
--- a/gnu/usr.bin/perl/dist/Filter-Simple/lib/Filter/Simple.pm
+++ b/gnu/usr.bin/perl/dist/Filter-Simple/lib/Filter/Simple.pm
@@ -4,7 +4,7 @@ use Text::Balanced ':ALL';
use vars qw{ $VERSION @EXPORT };
-$VERSION = '0.88';
+$VERSION = '0.89';
use Filter::Util::Call;
use Carp;
@@ -251,7 +251,7 @@ Filter::Simple - Simplified source filtering
package MyFilter;
use Filter::Simple;
-
+
FILTER { ... };
# or just:
@@ -338,7 +338,7 @@ to the sequence C<die 'BANG' if $BANG> in any piece of code following a
C<use BANG;> statement (until the next C<no BANG;> statement, if any):
package BANG;
-
+
use Filter::Util::Call ;
sub import {
@@ -403,7 +403,7 @@ In other words, the previous example, would become:
package BANG;
use Filter::Simple;
-
+
FILTER {
s/BANG\s+BANG/die 'BANG' if \$BANG/g;
};
@@ -447,7 +447,7 @@ you would write:
package BANG;
use Filter::Simple;
-
+
FILTER {
s/BANG\s+BANG/die 'BANG' if \$BANG/g;
}
@@ -464,7 +464,7 @@ and to prevent the filter's being turned off in any way:
package BANG;
use Filter::Simple;
-
+
FILTER {
s/BANG\s+BANG/die 'BANG' if \$BANG/g;
}
@@ -761,9 +761,9 @@ list to the filtering subroutine, so the BANG.pm filter could easily
be made parametric:
package BANG;
-
+
use Filter::Simple;
-
+
FILTER {
my ($die_msg, $var_name) = @_;
s/BANG\s+BANG/die '$die_msg' if \${$var_name}/g;
diff --git a/gnu/usr.bin/perl/dist/I18N-LangTags/lib/I18N/LangTags.pm b/gnu/usr.bin/perl/dist/I18N-LangTags/lib/I18N/LangTags.pm
index 6815a8549c8..aeb726dd017 100644
--- a/gnu/usr.bin/perl/dist/I18N-LangTags/lib/I18N/LangTags.pm
+++ b/gnu/usr.bin/perl/dist/I18N-LangTags/lib/I18N/LangTags.pm
@@ -19,7 +19,7 @@ require Exporter;
);
%EXPORT_TAGS = ('ALL' => \@EXPORT_OK);
-$VERSION = "0.38";
+$VERSION = "0.39";
sub uniq { my %seen; return grep(!($seen{$_}++), @_); } # a util function
diff --git a/gnu/usr.bin/perl/dist/I18N-LangTags/lib/I18N/LangTags/List.pm b/gnu/usr.bin/perl/dist/I18N-LangTags/lib/I18N/LangTags/List.pm
index 461bd4d8d71..786d7b89bb8 100644
--- a/gnu/usr.bin/perl/dist/I18N-LangTags/lib/I18N/LangTags/List.pm
+++ b/gnu/usr.bin/perl/dist/I18N-LangTags/lib/I18N/LangTags/List.pm
@@ -4,7 +4,7 @@ package I18N::LangTags::List;
# Time-stamp: "2004-10-06 23:26:21 ADT"
use strict;
use vars qw(%Name %Is_Disrec $Debug $VERSION);
-$VERSION = '0.35_01';
+$VERSION = '0.39';
# POD at the end.
#----------------------------------------------------------------------
diff --git a/gnu/usr.bin/perl/dist/IO/IO.pm b/gnu/usr.bin/perl/dist/IO/IO.pm
index e6f5567b9f0..35aba10558a 100644
--- a/gnu/usr.bin/perl/dist/IO/IO.pm
+++ b/gnu/usr.bin/perl/dist/IO/IO.pm
@@ -7,7 +7,7 @@ use Carp;
use strict;
use warnings;
-our $VERSION = "1.25_06";
+our $VERSION = "1.28";
XSLoader::load 'IO', $VERSION;
sub import {
diff --git a/gnu/usr.bin/perl/dist/IO/IO.xs b/gnu/usr.bin/perl/dist/IO/IO.xs
index 05015671578..c603456c307 100644
--- a/gnu/usr.bin/perl/dist/IO/IO.xs
+++ b/gnu/usr.bin/perl/dist/IO/IO.xs
@@ -327,14 +327,38 @@ MODULE = IO PACKAGE = IO::Handle PREFIX = f
int
ungetc(handle, c)
InputStream handle
- int c
+ SV * c
CODE:
- if (handle)
+ if (handle) {
#ifdef PerlIO
- RETVAL = PerlIO_ungetc(handle, c);
+ UV v;
+
+ if ((SvIOK_notUV(c) && SvIV(c) < 0) || (SvNOK(c) && SvNV(c) < 0.0))
+ croak("Negative character number in ungetc()");
+
+ v = SvUV(c);
+ if (NATIVE_IS_INVARIANT(v) || (v <= 0xFF && !PerlIO_isutf8(handle)))
+ RETVAL = PerlIO_ungetc(handle, (int)v);
+ else {
+ U8 buf[UTF8_MAXBYTES + 1], *end;
+ Size_t len;
+
+ if (!PerlIO_isutf8(handle))
+ croak("Wide character number in ungetc()");
+
+ /* This doesn't warn for non-chars, surrogate, and
+ * above-Unicodes */
+ end = uvchr_to_utf8_flags(buf, v, 0);
+ len = end - buf;
+ if (PerlIO_unread(handle, &buf, len) == len)
+ XSRETURN_UV(v);
+ else
+ RETVAL = EOF;
+ }
#else
- RETVAL = ungetc(c, handle);
+ RETVAL = ungetc((int)SvIV(c), handle);
#endif
+ }
else {
RETVAL = -1;
errno = EINVAL;
@@ -466,10 +490,15 @@ setvbuf(...)
SysRet
-fsync(handle)
- OutputStream handle
+fsync(arg)
+ SV * arg
+ PREINIT:
+ OutputStream handle = NULL;
CODE:
#ifdef HAS_FSYNC
+ handle = IoOFP(sv_2io(arg));
+ if (!handle)
+ handle = IoIFP(sv_2io(arg));
if(handle)
RETVAL = fsync(PerlIO_fileno(handle));
else {
@@ -484,8 +513,6 @@ fsync(handle)
SV *
_create_getline_subs(const char *code)
- PREINIT:
- SV *ret;
CODE:
OP *(*io_old_ck_lineseq)(pTHX_ OP *) = PL_check[OP_LINESEQ];
PL_check[OP_LINESEQ] = io_ck_lineseq;
diff --git a/gnu/usr.bin/perl/dist/IO/Makefile.PL b/gnu/usr.bin/perl/dist/IO/Makefile.PL
index 2159f43e49e..7783cf995da 100644
--- a/gnu/usr.bin/perl/dist/IO/Makefile.PL
+++ b/gnu/usr.bin/perl/dist/IO/Makefile.PL
@@ -33,10 +33,13 @@ WriteMakefile(
OBJECT => '$(O_FILES)',
ABSTRACT => 'Perl core IO modules',
AUTHOR => 'Graham Barr <gbarr@cpan.org>',
+ PREREQ_PM => {
+ 'Test::More' => 0,
+ },
( $PERL_CORE
? ()
: (
- INSTALLDIRS => 'perl',
+ INSTALLDIRS => ($] < 5.011 ? 'perl' : 'site'),
clean => {FILES => 'typemap'},
)
),
diff --git a/gnu/usr.bin/perl/dist/IO/lib/IO/Handle.pm b/gnu/usr.bin/perl/dist/IO/lib/IO/Handle.pm
index 68e6d902e44..1cfe29e791b 100644
--- a/gnu/usr.bin/perl/dist/IO/lib/IO/Handle.pm
+++ b/gnu/usr.bin/perl/dist/IO/lib/IO/Handle.pm
@@ -139,9 +139,12 @@ guaranteed.
=item $io->write ( BUF, LEN [, OFFSET ] )
-This C<write> is like C<write> found in C, that is it is the
+This C<write> is somewhat like C<write> found in C, in that it is the
opposite of read. The wrapper for the perl C<write> function is
-called C<format_write>.
+called C<format_write>. However, whilst the C C<write> function returns
+the number of bytes written, this C<write> function simply returns true
+if successful (like C<print>). A more C-like C<write> is C<syswrite>
+(see above).
=item $io->error
@@ -268,7 +271,7 @@ use IO (); # Load the XS module
require Exporter;
@ISA = qw(Exporter);
-$VERSION = "1.33";
+$VERSION = "1.34";
$VERSION = eval $VERSION;
@EXPORT_OK = qw(
diff --git a/gnu/usr.bin/perl/dist/IO/lib/IO/Socket.pm b/gnu/usr.bin/perl/dist/IO/lib/IO/Socket.pm
index 529423b5fde..aa3c9add78c 100644
--- a/gnu/usr.bin/perl/dist/IO/lib/IO/Socket.pm
+++ b/gnu/usr.bin/perl/dist/IO/lib/IO/Socket.pm
@@ -24,7 +24,7 @@ require IO::Socket::UNIX if ($^O ne 'epoc' && $^O ne 'symbian');
@ISA = qw(IO::Handle);
-$VERSION = "1.34";
+$VERSION = "1.36";
@EXPORT_OK = qw(sockatmark);
@@ -167,7 +167,7 @@ sub blocking {
my $sock = shift;
return $sock->SUPER::blocking(@_)
- if $^O ne 'MSWin32';
+ if $^O ne 'MSWin32' && $^O ne 'VMS';
# Windows handles blocking differently
#
@@ -249,6 +249,8 @@ sub accept {
$peer = accept($new,$sock)
or return;
+ ${*$new}{$_} = ${*$sock}{$_} for qw( io_socket_domain io_socket_type io_socket_proto );
+
return wantarray ? ($new, $peer)
: $new;
}
@@ -349,18 +351,27 @@ sub timeout {
sub sockdomain {
@_ == 1 or croak 'usage: $sock->sockdomain()';
my $sock = shift;
+ if (!defined(${*$sock}{'io_socket_domain'})) {
+ my $addr = $sock->sockname();
+ ${*$sock}{'io_socket_domain'} = sockaddr_family($addr)
+ if (defined($addr));
+ }
${*$sock}{'io_socket_domain'};
}
sub socktype {
@_ == 1 or croak 'usage: $sock->socktype()';
my $sock = shift;
+ ${*$sock}{'io_socket_type'} = $sock->sockopt(Socket::SO_TYPE)
+ if (!defined(${*$sock}{'io_socket_type'}) && defined(eval{Socket::SO_TYPE}));
${*$sock}{'io_socket_type'}
}
sub protocol {
@_ == 1 or croak 'usage: $sock->protocol()';
my($sock) = @_;
+ ${*$sock}{'io_socket_proto'} = $sock->sockopt(Socket::SO_PROTOCOL)
+ if (!defined(${*$sock}{'io_socket_proto'}) && defined(eval{Socket::SO_PROTOCOL}));
${*$sock}{'io_socket_proto'};
}
@@ -529,6 +540,12 @@ value returned.
=back
+=head1 LIMITATIONS
+
+On some systems, for an IO::Socket object created with new_from_fd(),
+or created with accept() from such an object, the protocol(),
+sockdomain() and socktype() methods may return undef.
+
=head1 SEE ALSO
L<Socket>, L<IO::Handle>, L<IO::Socket::INET>, L<IO::Socket::UNIX>
diff --git a/gnu/usr.bin/perl/dist/IO/t/IO.t b/gnu/usr.bin/perl/dist/IO/t/IO.t
index 382e282a07c..2551b2468dc 100755
--- a/gnu/usr.bin/perl/dist/IO/t/IO.t
+++ b/gnu/usr.bin/perl/dist/IO/t/IO.t
@@ -49,6 +49,7 @@ local $SIG{__WARN__} = sub { $warn = "@_" } ;
{
local $^W = 0;
+ no if $^V >= 5.17.4, warnings => "deprecated";
IO->import();
is( $warn, '', "... import default, should not warn");
$warn = '' ;
diff --git a/gnu/usr.bin/perl/dist/IO/t/cachepropagate-tcp.t b/gnu/usr.bin/perl/dist/IO/t/cachepropagate-tcp.t
new file mode 100644
index 00000000000..b9104bba090
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/IO/t/cachepropagate-tcp.t
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use IO::Socket;
+use IO::Socket::INET;
+use Socket;
+use Test::More;
+use Config;
+
+plan tests => 8;
+
+my $listener = IO::Socket::INET->new(Listen => 1,
+ LocalAddr => '127.0.0.1',
+ Proto => 'tcp');
+ok(defined($listener), 'socket created');
+
+my $port = $listener->sockport();
+
+my $p = $listener->protocol();
+ok(defined($p), 'protocol defined');
+my $d = $listener->sockdomain();
+ok(defined($d), 'domain defined');
+my $s = $listener->socktype();
+ok(defined($s), 'type defined');
+
+SKIP: {
+ skip "fork not available", 4
+ unless $Config{d_fork} || $Config{d_pseudofork};
+
+ my $cpid = fork();
+ if (0 == $cpid) {
+ # the child:
+ sleep(1);
+ my $connector = IO::Socket::INET->new(PeerAddr => '127.0.0.1',
+ PeerPort => $port,
+ Proto => 'tcp');
+ exit(0);
+ } else {;
+ ok(defined($cpid), 'spawned a child');
+ }
+
+ my $new = $listener->accept();
+
+ is($new->sockdomain(), $d, 'domain match');
+ SKIP: {
+ skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+ is($new->protocol(), $p, 'protocol match');
+ }
+ SKIP: {
+ skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+ is($new->socktype(), $s, 'type match');
+ }
+
+ wait();
+}
diff --git a/gnu/usr.bin/perl/dist/IO/t/cachepropagate-udp.t b/gnu/usr.bin/perl/dist/IO/t/cachepropagate-udp.t
new file mode 100644
index 00000000000..6568b2d592a
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/IO/t/cachepropagate-udp.t
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use IO::Socket;
+use IO::Socket::INET;
+use Socket;
+use Test::More;
+
+plan tests => 7;
+
+my $listener = IO::Socket::INET->new(LocalAddr => '127.0.0.1',
+ Proto => 'udp');
+ok(defined($listener), 'socket created');
+
+my $p = $listener->protocol();
+ok(defined($p), 'protocol defined');
+my $d = $listener->sockdomain();
+ok(defined($d), 'domain defined');
+my $s = $listener->socktype();
+ok(defined($s), 'type defined');
+
+my $new = IO::Socket::INET->new_from_fd($listener->fileno(), 'r+');
+
+is($new->sockdomain(), $d, 'domain match');
+SKIP: {
+ skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+ skip "SO_PROTOCOL defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_PROTOCOL);
+ is($new->protocol(), $p, 'protocol match');
+}
+SKIP: {
+ skip "AIX: getsockopt(SO_TYPE) is badly broken on UDP/UNIX sockets", 1
+ if $^O eq "aix";
+ skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+ skip "SO_TYPE defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_TYPE);
+ is($new->socktype(), $s, 'type match');
+}
diff --git a/gnu/usr.bin/perl/dist/IO/t/cachepropagate-unix.t b/gnu/usr.bin/perl/dist/IO/t/cachepropagate-unix.t
new file mode 100644
index 00000000000..e3e438ea1ca
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/IO/t/cachepropagate-unix.t
@@ -0,0 +1,102 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use File::Temp qw(tempdir);
+use File::Spec::Functions;
+use IO::Socket;
+use IO::Socket::UNIX;
+use Socket;
+use Config;
+use Test::More;
+
+plan skip_all => "UNIX domain sockets not implemented on $^O"
+ if ($^O =~ m/^(?:qnx|nto|vos|MSWin32|VMS)$/);
+
+plan tests => 15;
+
+my $socketpath = catfile(tempdir( CLEANUP => 1 ), 'testsock');
+
+# start testing stream sockets:
+my $listener = IO::Socket::UNIX->new(Type => SOCK_STREAM,
+ Listen => 1,
+ Local => $socketpath);
+ok(defined($listener), 'stream socket created');
+
+my $p = $listener->protocol();
+ok(defined($p), 'protocol defined');
+my $d = $listener->sockdomain();
+ok(defined($d), 'domain defined');
+my $s = $listener->socktype();
+ok(defined($s), 'type defined');
+
+SKIP: {
+ skip "fork not available", 4
+ unless $Config{d_fork} || $Config{d_pseudofork};
+
+ my $cpid = fork();
+ if (0 == $cpid) {
+ # the child:
+ sleep(1);
+ my $connector = IO::Socket::UNIX->new(Peer => $socketpath);
+ exit(0);
+ } else {
+ ok(defined($cpid), 'spawned a child');
+ }
+
+ my $new = $listener->accept();
+
+ is($new->sockdomain(), $d, 'domain match');
+ SKIP: {
+ skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+ skip "SO_PROTOCOL defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_PROTOCOL);
+ is($new->protocol(), $p, 'protocol match');
+ }
+ SKIP: {
+ skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+ skip "SO_TYPE defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_TYPE);
+ is($new->socktype(), $s, 'type match');
+ }
+
+ unlink($socketpath);
+ wait();
+}
+
+undef $TODO;
+SKIP: {
+ skip "datagram unix sockets not supported on $^O", 7
+ if $^O eq "haiku";
+ # now test datagram sockets:
+ $listener = IO::Socket::UNIX->new(Type => SOCK_DGRAM,
+ Local => $socketpath);
+ ok(defined($listener), 'datagram socket created');
+
+ $p = $listener->protocol();
+ ok(defined($p), 'protocol defined');
+ $d = $listener->sockdomain();
+ ok(defined($d), 'domain defined');
+ $s = $listener->socktype();
+ ok(defined($s), 'type defined');
+
+ my $new = IO::Socket::UNIX->new_from_fd($listener->fileno(), 'r+');
+
+ is($new->sockdomain(), $d, 'domain match');
+ SKIP: {
+ skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+ skip "SO_PROTOCOL defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_PROTOCOL);
+ is($new->protocol(), $p, 'protocol match');
+ }
+ SKIP: {
+ skip "AIX: getsockopt(SO_TYPE) is badly broken on UDP/UNIX sockets", 1
+ if $^O eq "aix";
+ skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+ skip "SO_TYPE defined but not implemented", 1
+ if !defined $new->sockopt(Socket::SO_TYPE);
+ is($new->socktype(), $s, 'type match');
+ }
+}
+unlink($socketpath);
diff --git a/gnu/usr.bin/perl/dist/IO/t/io_taint.t b/gnu/usr.bin/perl/dist/IO/t/io_taint.t
index 3cbe30345f4..5740353e77a 100755
--- a/gnu/usr.bin/perl/dist/IO/t/io_taint.t
+++ b/gnu/usr.bin/perl/dist/IO/t/io_taint.t
@@ -3,7 +3,10 @@
use Config;
BEGIN {
- if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bIO\b/ && $^O ne 'VMS') {
+ if ($ENV{PERL_CORE}
+ and $Config{'extensions'} !~ /\bIO\b/ && $^O ne 'VMS'
+ or not ${^TAINT}) # not ${^TAINT} => perl without taint support
+ {
print "1..0\n";
exit 0;
}
diff --git a/gnu/usr.bin/perl/dist/IO/t/io_utf8.t b/gnu/usr.bin/perl/dist/IO/t/io_utf8.t
index 53c209d4b8c..339e278e2cc 100755
--- a/gnu/usr.bin/perl/dist/IO/t/io_utf8.t
+++ b/gnu/usr.bin/perl/dist/IO/t/io_utf8.t
@@ -9,7 +9,9 @@ BEGIN {
require($ENV{PERL_CORE} ? "../../t/test.pl" : "./t/test.pl");
-plan(tests => 5);
+my $buf_size_count = 8200; # Above default buffer size of 8192
+
+plan(tests => 5 + 2 * $buf_size_count);
my $io;
@@ -24,6 +26,15 @@ undef $io;
$io = IO::File->new;
ok($io->open("io_utf8", "<:utf8"), "open <:utf8");
is(ord(<$io>), 256, "readline chr(256)");
+
+for my $i (0 .. $buf_size_count - 1) {
+ is($io->ungetc($i), $i, "ungetc of $i returns itself");
+}
+
+for (my $i = $buf_size_count - 1; $i >= 0; $i--) {
+ is(ord($io->getc()), $i, "getc gets back $i");
+}
+
undef $io;
END {
diff --git a/gnu/usr.bin/perl/dist/IO/t/io_xs.t b/gnu/usr.bin/perl/dist/IO/t/io_xs.t
index 585eed84b23..b73144794fe 100755
--- a/gnu/usr.bin/perl/dist/IO/t/io_xs.t
+++ b/gnu/usr.bin/perl/dist/IO/t/io_xs.t
@@ -15,16 +15,16 @@ BEGIN {
}
}
+use Test::More tests => 5;
use IO::File;
use IO::Seekable;
-print "1..4\n";
-
-$x = new_tmpfile IO::File or print "not ";
-print "ok 1\n";
+$x = new_tmpfile IO::File;
+ok($x, "new_tmpfile");
print $x "ok 2\n";
$x->seek(0,SEEK_SET);
-print <$x>;
+my $line = <$x>;
+is($line, "ok 2\n", "check we can write to the tempfile");
$x->seek(0,SEEK_SET);
print $x "not ok 3\n";
@@ -32,9 +32,23 @@ $p = $x->getpos;
print $x "ok 3\n";
$x->flush;
$x->setpos($p);
-print scalar <$x>;
+$line = <$x>;
+is($line, "ok 3\n", "test getpos/setpos");
$! = 0;
$x->setpos(undef);
-print $! ? "ok 4 # $!\n" : "not ok 4\n";
-
+ok($!, "setpos(undef) makes errno non-zero");
+
+SKIP:
+{ # [perl #64772] IO::Handle->sync fails on an O_RDONLY descriptor
+ $Config{d_fsync}
+ or skip "No fsync", 1;
+ $^O eq 'aix'
+ and skip "fsync() documented to fail on non-writable handles on AIX", 1;
+ $^O eq 'cygwin'
+ and skip "fsync() on cygwin uses FlushFileBuffers which requires a writable handle", 1;
+ open my $fh, "<", "t/io_xs.t"
+ or skip "Cannot open t/io_xs.t read-only: $!", 1;
+ ok($fh->sync, "sync to a read only handle")
+ or diag "sync(): ", $!;
+}
diff --git a/gnu/usr.bin/perl/dist/Locale-Maketext/ChangeLog b/gnu/usr.bin/perl/dist/Locale-Maketext/ChangeLog
index fb52acc55e4..fb58183a196 100644
--- a/gnu/usr.bin/perl/dist/Locale-Maketext/ChangeLog
+++ b/gnu/usr.bin/perl/dist/Locale-Maketext/ChangeLog
@@ -1,5 +1,11 @@
Revision history for Perl suite Locale::Maketext
+2012-12-04
+ * Fix misparsing of maketext strings.
+
+2012-11-22
+ * Fix hash order dependency bug in tests
+
2012-01-14
* Minor POD documentation update to sync with upstream blead.
diff --git a/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext.pm b/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext.pm
index 7e06b305b28..63e5fba8c23 100644
--- a/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext.pm
+++ b/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext.pm
@@ -27,7 +27,7 @@ BEGIN {
}
-$VERSION = '1.22';
+$VERSION = '1.23';
@ISA = ();
$MATCH_SUPERS = 1;
@@ -625,21 +625,9 @@ sub _compile {
# 0-length method name means to just interpolate:
push @code, ' (';
}
- elsif($m =~ /^\w+(?:\:\:\w+)*$/s
- and $m !~ m/(?:^|\:)\d/s
- # exclude starting a (sub)package or symbol with a digit
+ elsif($m =~ /^\w+$/s
+ # exclude anything fancy, especially fully-qualified module names
) {
- # Yes, it even supports the demented (and undocumented?)
- # $obj->Foo::bar(...) syntax.
- $target->_die_pointing(
- $string_to_compile, q{Can't use "SUPER::" in a bracket-group method},
- 2 + length($c[-1])
- )
- if $m =~ m/^SUPER::/s;
- # Because for SUPER:: to work, we'd have to compile this into
- # the right package, and that seems just not worth the bother,
- # unless someone convinces me otherwise.
-
push @code, ' $_[0]->' . $m . '(';
}
else {
@@ -693,7 +681,9 @@ sub _compile {
elsif(substr($1,0,1) ne '~') {
# it's stuff not containing "~" or "[" or "]"
# i.e., a literal blob
- $c[-1] .= $1;
+ my $text = $1;
+ $text =~ s/\\/\\\\/g;
+ $c[-1] .= $text;
}
elsif($1 eq '~~') { # "~~"
@@ -731,7 +721,9 @@ sub _compile {
else {
# It's a "~X" where X is not a special character.
# Consider it a literal ~ and X.
- $c[-1] .= $1;
+ my $text = $1;
+ $text =~ s/\\/\\\\/g;
+ $c[-1] .= $text;
}
}
}
diff --git a/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext.pod b/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext.pod
index 3ef9c3a5a9b..de2ad0d072b 100644
--- a/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext.pod
+++ b/gnu/usr.bin/perl/dist/Locale-Maketext/lib/Locale/Maketext.pod
@@ -443,10 +443,6 @@ B<Remember: Don't be afraid to read the Maketext source if there's
any point on which this documentation is unclear.> This documentation
is vastly longer than the module source itself.
-=over
-
-=back
-
=head1 LANGUAGE CLASS HIERARCHIES
These are Locale::Maketext's assumptions about the class
@@ -699,7 +695,7 @@ it's basically turned into:
")!\n",
}
# to be called by $lh->maketext(KEY, params...)
-
+
In other words, text outside bracket groups is turned into string
literals. Text in brackets is rather more complex, and currently follows
these rules:
@@ -999,10 +995,10 @@ The "fail" attribute can be accessed with the C<fail_with> method:
# Set to a method name:
$lh->fail_with( 'failure_method' );
-
+
# Set to nothing (i.e., so failure throws a plain exception)
$lh->fail_with( undef );
-
+
# Get the current value
$handler = $lh->fail_with();
@@ -1115,10 +1111,10 @@ consisting minimally of:
package Projname::L10N;
use base qw(Locale::Maketext);
...any methods you might want all your languages to share...
-
+
# And, assuming you want the base class to be an _AUTO lexicon,
# as is discussed a few sections up:
-
+
1;
=item *
diff --git a/gnu/usr.bin/perl/dist/Locale-Maketext/t/09_compile.t b/gnu/usr.bin/perl/dist/Locale-Maketext/t/09_compile.t
index 06db4849f01..93988e55e76 100644
--- a/gnu/usr.bin/perl/dist/Locale-Maketext/t/09_compile.t
+++ b/gnu/usr.bin/perl/dist/Locale-Maketext/t/09_compile.t
@@ -8,12 +8,15 @@ use Test::More tests => 2;
use Scalar::Util qw(tainted);
use Locale::Maketext;
-my @ENV_values = values %ENV;
-my $tainted_value;
-do { $tainted_value = shift @ENV_values } while(!$tainted_value || ref $tainted_value);
+my @ENV_values = map { !/^PERL/ && defined($ENV{$_}) && !ref($ENV{$_}) && $ENV{$_} ? $ENV{$_} : () } sort keys %ENV;
+die "No %ENV vars to test?" if !@ENV_values;
+
+my ($tainted_value)= @ENV_values;
$tainted_value =~ s/([\[\]])/~$1/g;
-ok(tainted($tainted_value), "\$tainted_value is tainted") or die('huh... %ENV has no entries? I don\'t know how to test taint without it');
+# If ${^TAINT} is not set despite -T, this perl doesn't have taint support
+ok(!${^TAINT} || tainted($tainted_value), "\$tainted_value is tainted")
+ or die("Could not find tainted value to use for testing (maybe fix the test?)");
my $result = Locale::Maketext::_compile("hello [_1]", $tainted_value);
diff --git a/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigFloat.pm b/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigFloat.pm
index c860582d6dc..b0f2e4df508 100644
--- a/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigFloat.pm
+++ b/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigFloat.pm
@@ -12,7 +12,7 @@ package Math::BigFloat;
# _a : accuracy
# _p : precision
-$VERSION = '1.997';
+$VERSION = '1.998';
require 5.006002;
require Exporter;
@@ -4474,7 +4474,7 @@ influence any further operation.
=head1 SEE ALSO
L<Math::BigInt>, L<Math::BigRat> and L<Math::Big> as well as
-L<Math::BigInt::BitVect>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
+L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
The pragmas L<bignum>, L<bigint> and L<bigrat> might also be of interest
because they solve the autoupgrading/downgrading issue, at least partly.
diff --git a/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt.pm b/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt.pm
index 3f55c9b551e..37c6b37a987 100644
--- a/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt.pm
+++ b/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt.pm
@@ -18,7 +18,7 @@ package Math::BigInt;
my $class = "Math::BigInt";
use 5.006002;
-$VERSION = '1.998';
+$VERSION = '1.9991';
@ISA = qw(Exporter);
@EXPORT_OK = qw(objectify bgcd blcm);
@@ -5251,7 +5251,7 @@ With overloaded math, only the first two variants will result in a BigFloat:
use Math::BigInt;
use Math::BigFloat;
-
+
$mbf = Math::BigFloat->new(5);
$mbi2 = Math::BigInteger->new(5);
$mbi = Math::BigInteger->new(2);
@@ -5330,7 +5330,7 @@ the same terms as Perl itself.
=head1 SEE ALSO
L<Math::BigFloat>, L<Math::BigRat> and L<Math::Big> as well as
-L<Math::BigInt::BitVect>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
+L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
The pragmas L<bignum>, L<bigint> and L<bigrat> also might be of interest
because they solve the autoupgrading/downgrading issue, at least partly.
diff --git a/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm b/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm
index 1d754ff1511..c82e1539865 100644
--- a/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm
+++ b/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm
@@ -5,7 +5,7 @@ use strict;
# use warnings; # dont use warnings for older Perls
use vars qw/$VERSION/;
-$VERSION = '1.997';
+$VERSION = '1.998';
package Math::BigInt;
@@ -323,7 +323,7 @@ Tels from 2001-2003.
=head1 SEE ALSO
-L<Math::BigInt>, L<Math::BigFloat>, L<Math::BigInt::BitVect>,
+L<Math::BigInt>, L<Math::BigFloat>,
L<Math::BigInt::GMP> and L<Math::BigInt::Pari>.
=cut
diff --git a/gnu/usr.bin/perl/dist/Math-BigRat/lib/Math/BigRat.pm b/gnu/usr.bin/perl/dist/Math-BigRat/lib/Math/BigRat.pm
index eb07e8260d2..a70a42905a9 100644
--- a/gnu/usr.bin/perl/dist/Math-BigRat/lib/Math/BigRat.pm
+++ b/gnu/usr.bin/perl/dist/Math-BigRat/lib/Math/BigRat.pm
@@ -24,7 +24,7 @@ use vars qw($VERSION @ISA $upgrade $downgrade
@ISA = qw(Math::BigFloat);
-$VERSION = '0.2603';
+$VERSION = '0.2604';
$VERSION = eval $VERSION;
# inherit overload from Math::BigFloat, but disable the bitwise ops that don't
@@ -1692,7 +1692,7 @@ BigInts.
Returns the object as a scalar. This will lose some data if the object
cannot be represented by a normal Perl scalar (integer or float), so
-use L<as_int()> or L<as_float()> instead.
+use L<as_int()|/as_int()E<sol>as_number()> or L</as_float()> instead.
This routine is automatically used whenever a scalar is required:
@@ -1925,7 +1925,7 @@ Euler's number.
This method was added in v0.20 of Math::BigRat (May 2007).
-See also L<blog()>.
+See also L</blog()>.
=head2 bnok()
@@ -2012,7 +2012,7 @@ the same terms as Perl itself.
=head1 SEE ALSO
-L<Math::BigFloat> and L<Math::Big> as well as L<Math::BigInt::BitVect>,
+L<Math::BigFloat> and L<Math::Big> as well as
L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
See L<http://search.cpan.org/search?dist=bignum> for a way to use
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/Changes b/gnu/usr.bin/perl/dist/Module-CoreList/Changes
index 44d85dfa248..2d25a48193c 100644
--- a/gnu/usr.bin/perl/dist/Module-CoreList/Changes
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/Changes
@@ -1,3 +1,100 @@
+3.02
+ - Prepared for v5.19.7
+
+3.01 Wed Nov 20 2013
+ - Finalised for v5.19.6
+
+3.00 Sun Oct 20 2013
+ - Updated for v5.19.5
+ - exported %delta
+ - fixed bug in is_core(): it was naively assuming a linear sequence of releases,
+ rather than the tree with multiple branches.
+
+2.99 Fri Sep 20 2013
+ - Updated for v5.19.4
+ - fixed Module::Build core deprecation
+ - changes_between now has the same API as all other functions
+ - added is_core() which returns true if a module is/was core
+ in a specific version of Perl. Can optionally specify minimum
+ version of the module.
+
+2.98 Wed Aug 21 2013
+ - Prepared for v5.19.4
+
+2.97 Tue Aug 20 2013
+ - Updated for v5.19.3
+
+2.96 Mon Aug 12 2013
+ - Utils module listing all utilities released with core
+ - Updated for v5.18.1
+
+2.95 Mon Jun 22 2013
+ - Prepared for v5.19.3
+
+2.94 Sun Jun 21 2013
+ - Updated for v5.19.2
+
+2.93 Thu 20 Jun 2013
+ - Updated for v5.19.1
+
+2.92 Thu Jun 21 2013
+ - Make switches case-sensitive (keep -d and -D distinct)
+ - correct omission of Text::Soundex and File::CheckTree from deprecations
+ - switch %deprecated to a delta hash
+
+2.91 Mon May 20 2013
+ - Updated for v5.19.0
+
+2.90 Mon May 18 2013
+ - Updated for v5.18.0
+
+2.88 Tue Apr 23 2013
+ - Include deprecations for v5.17.10 and v5.17.11
+
+2.87 Sat Apr 20 2013
+ - Updated for v5.17.11
+2.85 Thu Mar 19 2013
+ - Updated for v5.17.10
+
+2.84 Mon Mar 11 2013
+ - Updated for v5.16.3
+
+2.83 Sun Mar 10 2013
+ - Updated for v5.14.4
+
+2.82 Wed Feb 20 2013
+ - --feature switch added
+ - --upstream switch added
+ - Updated for v5.17.9
+
+2.81 Sun Jan 27 2013
+ - Add modules deprecated with v5.17.9
+
+2.80 Sun Jan 20 2013
+ - Updated for v5.17.8
+
+ - v5.17.7 contained Module::CoreList::TieHashDelta 2.79, not 2.78
+
+2.79 Tue Dec 18 2012
+ - Updated for v5.17.7
+
+ - Errno was added in 5.5, not in 5.5.4
+
+2.78 Sat Nov 12 2012
+ - Updated for v5.17.6
+
+ - Fix hash order dependency bug in deprecated_in().
+ Tests would would fail or succeed depending on what order keys()
+ would return the version list in. List::Utils::min() considers
+ '5.011' and '5.011000' to be equivalent, and returns the first
+ whichever it encounters. Changing to List::Utils::minstr() fixes
+ this.
+
+2.77 Sat Nov 10 2012
+ - Updated for v5.12.5
+ - deprecated_in() function added
+ - corelist reports deprecated data
+
2.76 Fri Nov 1 2012
- Updated for v5.16.2
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/MANIFEST b/gnu/usr.bin/perl/dist/Module-CoreList/MANIFEST
index 1f963b968f0..9b2b2020e6b 100644
--- a/gnu/usr.bin/perl/dist/Module-CoreList/MANIFEST
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/MANIFEST
@@ -4,6 +4,7 @@ identify-dependencies
lib/Module/CoreList.pm
lib/Module/CoreList.pod
lib/Module/CoreList/TieHashDelta.pm
+lib/Module/CoreList/Utils.pm
README
MANIFEST
Makefile.PL
@@ -11,5 +12,7 @@ META.yml
t/corelist.t
t/deprecated.t
t/find_modules.t
+t/is_core.t
t/pod.t
+t/utils.t
META.json Module JSON meta-data (added by MakeMaker)
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/Makefile.PL b/gnu/usr.bin/perl/dist/Module-CoreList/Makefile.PL
index 3fd5f61706d..f95b29d7fb0 100644
--- a/gnu/usr.bin/perl/dist/Module-CoreList/Makefile.PL
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/Makefile.PL
@@ -2,6 +2,14 @@ use ExtUtils::MakeMaker;
push @extra, 'INSTALLDIRS' => 'perl' if $] >= 5.008009 and $] < 5.012;
+push @extra, 'META_MERGE' => {
+ resources => {
+ repository => 'git://perl5.git.perl.org/perl.git',
+ bugtracker => 'https://rt.perl.org/rt3/',
+ homepage => "http://dev.perl.org/",
+ },
+ } unless $ExtUtils::MakeMaker::VERSION < 6.46;
+
WriteMakefile
(
@@ -9,11 +17,20 @@ WriteMakefile
'VERSION_FROM' => 'lib/Module/CoreList.pm',
'ABSTRACT_FROM' => 'lib/Module/CoreList.pod',
'PREREQ_PM' => {
- 'Test::More' => '0',
+ 'Test::More' => '0',
+ 'List::Util' => 0,
},
'EXE_FILES' => [ _scripts() ],
+ 'INSTALLDIRS' => ($] < 5.011 ? 'perl' : 'site'),
'PL_FILES' => {},
LICENSE => 'perl',
+ META_MERGE => {
+ resources => {
+ repository => 'git://perl5.git.perl.org/perl.git',
+ bugtracker => 'https://rt.perl.org/rt3/',
+ homepage => "http://dev.perl.org/",
+ },
+ },
@extra,
)
;
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/corelist b/gnu/usr.bin/perl/dist/Module-CoreList/corelist
index 9cd0e8f21f4..ec8c7d68785 100644
--- a/gnu/usr.bin/perl/dist/Module-CoreList/corelist
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/corelist
@@ -10,11 +10,13 @@ See L<Module::CoreList> for one.
=head1 SYNOPSIS
- corelist -v
- corelist [-a|-d] <ModuleName> | /<ModuleRegex>/ [<ModuleVersion>] ...
- corelist [-v <PerlVersion>] [ <ModuleName> | /<ModuleRegex>/ ] ...
- corelist [-r <PerlVersion>] ...
- corelist --diff PerlVersion PerlVersion
+ corelist -v
+ corelist [-a|-d] <ModuleName> | /<ModuleRegex>/ [<ModuleVersion>] ...
+ corelist [-v <PerlVersion>] [ <ModuleName> | /<ModuleRegex>/ ] ...
+ corelist [-r <PerlVersion>] ...
+ corelist --feature <FeatureName> [<FeatureName>] ...
+ corelist --diff PerlVersion PerlVersion
+ corelist --upstream <ModuleName>
=head1 OPTIONS
@@ -111,6 +113,15 @@ lists all of the perl releases and when they were released
If you pass a perl version you get the release date for that version only.
+=item --feature, -f
+
+lists the first version bundle of each named feature given
+
+=item --upstream, -u
+
+Shows if the given module is primarily maintained in perl core or on CPAN
+and bug tracker URL.
+
=back
As a special case, if you specify the module name C<Unicode>, you'll get
@@ -120,16 +131,17 @@ requested perl versions.
=cut
use Module::CoreList;
-use Getopt::Long;
+use Getopt::Long qw(:config no_ignore_case);
use Pod::Usage;
use strict;
use warnings;
+use List::Util qw/maxstr/;
my %Opts;
GetOptions(
\%Opts,
- qw[ help|?! man! r|release:s v|version:s a! d diff|D ]
+ qw[ help|?! man! r|release:s v|version:s a! d diff|D feature|f u|upstream ]
);
pod2usage(1) if $Opts{help};
@@ -214,6 +226,50 @@ if ($Opts{diff}) {
exit(0);
}
+if ($Opts{feature}) {
+ die "\n--feature is only available with perl v5.16.0 or greater\n"
+ if $] < 5.016;
+
+ die "\nprovide at least one feature name to --feature\n"
+ unless @ARGV;
+
+ no warnings 'once';
+ require feature;
+
+ my %feature2version;
+ my @bundles = map { $_->[0] }
+ sort { $b->[1] <=> $a->[1] }
+ map { [$_, numify_version($_)] }
+ grep { not /[^0-9.]/ }
+ keys %feature::feature_bundle;
+
+ for my $version (@bundles) {
+ $feature2version{$_} = $version =~ /^\d\.\d+$/ ? "$version.0" : $version
+ for @{ $feature::feature_bundle{$version} };
+ }
+
+ # allow internal feature names, just in case someone gives us __SUB__
+ # instead of current_sub.
+ while (my ($name, $internal) = each %feature::feature) {
+ $internal =~ s/^feature_//;
+ $feature2version{$internal} = $feature2version{$name}
+ if $feature2version{$name};
+ }
+
+ my $when = maxstr(values %Module::CoreList::released);
+ print "\n","Data for $when\n";
+
+ for my $feature (@ARGV) {
+ print "feature \"$feature\" ",
+ exists $feature2version{$feature}
+ ? "was first released with the perl "
+ . format_perl_version(numify_version($feature2version{$feature}))
+ . " feature bundle\n"
+ : "doesn't exist (or so I think)\n";
+ }
+ exit(0);
+}
+
if ( !@ARGV ) {
pod2usage(0);
}
@@ -275,16 +331,32 @@ sub module_version {
? Module::CoreList->removed_from_by_date($mod)
: Module::CoreList->removed_from($mod);
+ my $when = maxstr(values %Module::CoreList::released);
+ print "\n","Data for $when\n";
+
if( defined $ret ) {
+ my $deprecated = Module::CoreList->deprecated_in($mod);
$msg .= " was ";
$msg .= "first " unless $ver;
$msg .= "released with perl " . format_perl_version($ret);
+ $msg .= ( $rem ? ',' : ' and' ) . " deprecated (will be CPAN-only) in " . format_perl_version($deprecated) if $deprecated;
$msg .= " and removed from " . format_perl_version($rem) if $rem;
} else {
$msg .= " was not in CORE (or so I think)";
}
- print "\n",$msg,"\n";
+ print $msg,"\n";
+
+ if( defined $ret and exists $Opts{u} ) {
+ my $upsream = $Module::CoreList::upstream{$mod};
+ $upsream = 'undef' unless $upsream;
+ print "upstream: $upsream\n";
+ if ( $upsream ne 'blead' ) {
+ my $bugtracker = $Module::CoreList::bug_tracker{$mod};
+ $bugtracker = 'unknown' unless $bugtracker;
+ print "bug tracker: $bugtracker\n";
+ }
+ }
if(defined $ret and exists $Opts{a} and $Opts{a}){
display_a($mod);
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm
index 4b735ef76b9..702cfd69490 100644
--- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm
@@ -1,9 +1,9 @@
package Module::CoreList;
use strict;
use vars qw/$VERSION %released %version %families %upstream
- %bug_tracker %deprecated/;
+ %bug_tracker %deprecated %delta/;
use Module::CoreList::TieHashDelta;
-$VERSION = '2.76_02';
+$VERSION = '3.03';
my $dumpinc = 0;
sub import {
@@ -78,6 +78,17 @@ sub is_deprecated {
return $deprecated{$perl_version}{$module};
}
+sub deprecated_in {
+ my $module = shift;
+ $module = shift if eval { $module->isa(__PACKAGE__) }
+ and scalar @_ and $_[0] =~ m#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|')[0-9a-zA-Z_]+)*\z#;
+ return unless $module;
+ my @perls = grep { exists $deprecated{$_}{$module} } keys %deprecated;
+ return unless @perls;
+ require List::Util;
+ return List::Util::minstr(@perls);
+}
+
sub removed_from {
my @perls = &removed_raw;
return shift @perls;
@@ -99,7 +110,9 @@ sub removed_raw {
}
sub changes_between {
- my ($left_ver, $right_ver) = @_;
+ my $left_ver = shift;
+ $left_ver = shift if eval { $left_ver->isa(__PACKAGE__) };
+ my $right_ver = shift;
my $left = $version{ $left_ver };
my $right = $version{ $right_ver };
@@ -188,6 +201,7 @@ sub changes_between {
5.013011 => '2011-03-20',
5.014000 => '2011-05-14',
5.012004 => '2011-06-20',
+ 5.012005 => '2012-11-10',
5.014001 => '2011-06-16',
5.015000 => '2011-06-20',
5.015001 => '2011-07-20',
@@ -203,7 +217,6 @@ sub changes_between {
5.016000 => '2012-05-20',
5.016001 => '2012-08-08',
5.016002 => '2012-11-01',
- 5.016003 => '2013-03-11',
5.017000 => '2012-05-26',
5.017001 => '2012-06-20',
5.017002 => '2012-07-20',
@@ -211,6 +224,25 @@ sub changes_between {
5.017004 => '2012-09-20',
5.014003 => '2012-10-12',
5.017005 => '2012-10-20',
+ 5.017006 => '2012-11-20',
+ 5.017007 => '2012-12-18',
+ 5.017008 => '2013-01-20',
+ 5.017009 => '2013-02-20',
+ 5.014004 => '2013-03-10',
+ 5.016003 => '2013-03-11',
+ 5.017010 => '2013-03-21',
+ 5.017011 => '2013-04-20',
+ 5.018000 => '2013-05-18',
+ 5.019000 => '2013-05-20',
+ 5.019001 => '2013-06-21',
+ 5.019002 => '2013-07-22',
+ 5.018001 => '2013-08-12',
+ 5.019003 => '2013-08-20',
+ 5.019004 => '2013-09-20',
+ 5.019005 => '2013-10-20',
+ 5.019006 => '2013-11-20',
+ 5.019007 => '2013-12-20',
+ 5.018002 => '2014-01-09',
);
for my $version ( sort { $a <=> $b } keys %released ) {
@@ -218,7 +250,7 @@ for my $version ( sort { $a <=> $b } keys %released ) {
push @{ $families{ $family }} , $version;
}
-my %delta = (
+%delta = (
5 => {
changed => {
'AnyDBM_File' => undef,
@@ -543,6 +575,7 @@ my %delta = (
'CPAN::FirstTime' => '1.29 ',
'DB_File' => '1.60',
'Data::Dumper' => '2.09',
+ 'Errno' => '1.09',
'ExtUtils::Installed' => '0.02',
'ExtUtils::MM_Unix' => '1.12601 ',
'ExtUtils::MakeMaker' => '5.4301',
@@ -591,6 +624,7 @@ my %delta = (
'DB_File' => '1.65',
'Data::Dumper' => '2.101',
'Dumpvalue' => undef,
+ 'Errno' => '1.111',
'ExtUtils::Install' => '1.28',
'ExtUtils::Liblist' => '1.25',
'ExtUtils::MM_Unix' => '1.12602',
@@ -616,7 +650,6 @@ my %delta = (
changed => {
'CPAN::FirstTime' => '1.36 ',
'DB_File' => '1.807',
- 'Errno' => '1.111',
'ExtUtils::Install' => '1.28 ',
'ExtUtils::Liblist' => '1.25 ',
'ExtUtils::MM_Unix' => '1.12602 ',
@@ -1162,7 +1195,6 @@ my %delta = (
'warnings::register' => '1.00',
},
removed => {
- 'Errno' => 1,
}
},
5.008 => {
@@ -4346,6 +4378,19 @@ my %delta = (
removed => {
}
},
+ 5.012005 => {
+ delta_from => 5.012004,
+ changed => {
+ 'B::Concise' => '0.78_01',
+ 'Encode' => '2.39_01',
+ 'File::Glob' => '1.07_01',
+ 'Module::CoreList' => '2.50_02',
+ 'Unicode::UCD' => '0.29',
+ 'charnames' => '1.07_01',
+ },
+ removed => {
+ }
+ },
5.013 => {
delta_from => 5.012,
changed => {
@@ -5579,6 +5624,16 @@ my %delta = (
removed => {
}
},
+ 5.014004 => {
+ delta_from => 5.014003,
+ changed => {
+ 'Encode' => '2.42_02',
+ 'IPC::Open3' => '1.0901',
+ 'Module::CoreList' => '2.49_06',
+ },
+ removed => {
+ }
+ },
5.015 => {
delta_from => 5.014001,
changed => {
@@ -6728,6 +6783,7 @@ my %delta = (
5.016002 => {
delta_from => 5.016001,
changed => {
+ 'Module::CoreList' => '2.76',
},
removed => {
}
@@ -6735,9 +6791,9 @@ my %delta = (
5.016003 => {
delta_from => 5.016002,
changed => {
- 'Encode' => '2.44_01',
- 'Module::CoreList' => '2.76_02',
- 'XS::APItest' => '0.39',
+ 'Encode' => '2.44_01',
+ 'Module::CoreList' => '2.76_02',
+ 'XS::APItest' => '0.39',
},
removed => {
}
@@ -7304,197 +7360,2285 @@ my %delta = (
removed => {
}
},
-);
-
-for my $version (sort { $a <=> $b } keys %delta) {
- my $data = $delta{$version};
-
- tie %{$version{$version}}, 'Module::CoreList::TieHashDelta',
- $data->{changed}, $data->{removed},
- $data->{delta_from} ? $version{$data->{delta_from}} : undef;
-}
-
-%deprecated = (
- 5.011 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
- },
- 5.011001 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
- },
- 5.011002 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
- },
- 5.011003 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
- },
- 5.011004 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
- },
- 5.011005 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
- },
- 5.012000 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
- },
- 5.013000 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
- },
- 5.012001 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
- },
- 5.013001 => {
- 'Shell' => '1',
- },
- 5.013002 => {
- 'Shell' => '1',
- },
- 5.013003 => {
- 'Shell' => '1',
- },
- 5.013004 => {
- 'Shell' => '1',
- },
- 5.012002 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
- },
- 5.013005 => {
- 'Shell' => '1',
- },
- 5.013006 => {
- 'Shell' => '1',
- },
- 5.013007 => {
- 'Shell' => '1',
- },
- 5.013008 => {
- 'Shell' => '1',
+ 5.017006 => {
+ delta_from => 5.017005,
+ changed => {
+ 'B' => '1.40',
+ 'B::Concise' => '0.94',
+ 'B::Deparse' => '1.19',
+ 'B::Xref' => '1.05',
+ 'CGI' => '3.63',
+ 'CGI::Util' => '3.62',
+ 'CPAN' => '1.99_51',
+ 'CPANPLUS::Dist::Build' => '0.64',
+ 'CPANPLUS::Dist::Build::Constants'=> '0.64',
+ 'Carp' => '1.28',
+ 'Carp::Heavy' => '1.28',
+ 'Compress::Raw::Bzip2' => '2.058',
+ 'Compress::Raw::Zlib' => '2.058',
+ 'Compress::Zlib' => '2.058',
+ 'Data::Dumper' => '2.137',
+ 'Digest::SHA' => '5.73',
+ 'DynaLoader' => '1.17',
+ 'Env' => '1.04',
+ 'Errno' => '1.17',
+ 'ExtUtils::Manifest' => '1.62',
+ 'ExtUtils::Typemaps' => '3.18',
+ 'ExtUtils::Typemaps::Cmd'=> '3.18',
+ 'ExtUtils::Typemaps::InputMap'=> '3.18',
+ 'ExtUtils::Typemaps::OutputMap'=> '3.18',
+ 'ExtUtils::Typemaps::Type'=> '3.18',
+ 'Fatal' => '2.13',
+ 'File::Find' => '1.23',
+ 'Hash::Util' => '0.13',
+ 'IO::Compress::Adapter::Bzip2'=> '2.058',
+ 'IO::Compress::Adapter::Deflate'=> '2.058',
+ 'IO::Compress::Adapter::Identity'=> '2.058',
+ 'IO::Compress::Base' => '2.058',
+ 'IO::Compress::Base::Common'=> '2.058',
+ 'IO::Compress::Bzip2' => '2.058',
+ 'IO::Compress::Deflate' => '2.058',
+ 'IO::Compress::Gzip' => '2.058',
+ 'IO::Compress::Gzip::Constants'=> '2.058',
+ 'IO::Compress::RawDeflate'=> '2.058',
+ 'IO::Compress::Zip' => '2.058',
+ 'IO::Compress::Zip::Constants'=> '2.058',
+ 'IO::Compress::Zlib::Constants'=> '2.058',
+ 'IO::Compress::Zlib::Extra'=> '2.058',
+ 'IO::Uncompress::Adapter::Bunzip2'=> '2.058',
+ 'IO::Uncompress::Adapter::Identity'=> '2.058',
+ 'IO::Uncompress::Adapter::Inflate'=> '2.058',
+ 'IO::Uncompress::AnyInflate'=> '2.058',
+ 'IO::Uncompress::AnyUncompress'=> '2.058',
+ 'IO::Uncompress::Base' => '2.058',
+ 'IO::Uncompress::Bunzip2'=> '2.058',
+ 'IO::Uncompress::Gunzip'=> '2.058',
+ 'IO::Uncompress::Inflate'=> '2.058',
+ 'IO::Uncompress::RawInflate'=> '2.058',
+ 'IO::Uncompress::Unzip' => '2.058',
+ 'Module::CoreList' => '2.78',
+ 'Module::CoreList::TieHashDelta'=> '2.77',
+ 'Module::Pluggable' => '4.5',
+ 'Module::Pluggable::Object'=> '4.5',
+ 'Opcode' => '1.25',
+ 'Sys::Hostname' => '1.17',
+ 'Term::UI' => '0.32',
+ 'Thread::Queue' => '3.01',
+ 'Tie::Hash::NamedCapture'=> '0.09',
+ 'Unicode::Collate' => '0.93',
+ 'Unicode::Collate::CJK::Korean'=> '0.93',
+ 'Unicode::Collate::Locale'=> '0.93',
+ 'Unicode::Normalize' => '1.16',
+ 'Unicode::UCD' => '0.47',
+ 'XS::APItest' => '0.46',
+ '_charnames' => '1.33',
+ 'autodie' => '2.13',
+ 'autodie::exception' => '2.13',
+ 'autodie::exception::system'=> '2.13',
+ 'autodie::hints' => '2.13',
+ 'charnames' => '1.33',
+ 're' => '0.23',
+ },
+ removed => {
+ }
},
- 5.012003 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
+ 5.017007 => {
+ delta_from => 5.017006,
+ changed => {
+ 'B' => '1.41',
+ 'CPANPLUS::Dist::Build' => '0.68',
+ 'CPANPLUS::Dist::Build::Constants'=> '0.68',
+ 'Compress::Raw::Bzip2' => '2.059',
+ 'Compress::Raw::Zlib' => '2.059',
+ 'Compress::Zlib' => '2.059',
+ 'Cwd' => '3.39_03',
+ 'Data::Dumper' => '2.139',
+ 'Devel::Peek' => '1.11',
+ 'Digest::SHA' => '5.80',
+ 'DynaLoader' => '1.18',
+ 'English' => '1.06',
+ 'Errno' => '1.18',
+ 'ExtUtils::Command::MM' => '6.64',
+ 'ExtUtils::Liblist' => '6.64',
+ 'ExtUtils::Liblist::Kid'=> '6.64',
+ 'ExtUtils::MM' => '6.64',
+ 'ExtUtils::MM_AIX' => '6.64',
+ 'ExtUtils::MM_Any' => '6.64',
+ 'ExtUtils::MM_BeOS' => '6.64',
+ 'ExtUtils::MM_Cygwin' => '6.64',
+ 'ExtUtils::MM_DOS' => '6.64',
+ 'ExtUtils::MM_Darwin' => '6.64',
+ 'ExtUtils::MM_MacOS' => '6.64',
+ 'ExtUtils::MM_NW5' => '6.64',
+ 'ExtUtils::MM_OS2' => '6.64',
+ 'ExtUtils::MM_QNX' => '6.64',
+ 'ExtUtils::MM_UWIN' => '6.64',
+ 'ExtUtils::MM_Unix' => '6.64',
+ 'ExtUtils::MM_VMS' => '6.64',
+ 'ExtUtils::MM_VOS' => '6.64',
+ 'ExtUtils::MM_Win32' => '6.64',
+ 'ExtUtils::MM_Win95' => '6.64',
+ 'ExtUtils::MY' => '6.64',
+ 'ExtUtils::MakeMaker' => '6.64',
+ 'ExtUtils::MakeMaker::Config'=> '6.64',
+ 'ExtUtils::Mkbootstrap' => '6.64',
+ 'ExtUtils::Mksymlists' => '6.64',
+ 'ExtUtils::testlib' => '6.64',
+ 'File::DosGlob' => '1.09',
+ 'File::Glob' => '1.19',
+ 'GDBM_File' => '1.15',
+ 'IO::Compress::Adapter::Bzip2'=> '2.059',
+ 'IO::Compress::Adapter::Deflate'=> '2.059',
+ 'IO::Compress::Adapter::Identity'=> '2.059',
+ 'IO::Compress::Base' => '2.059',
+ 'IO::Compress::Base::Common'=> '2.059',
+ 'IO::Compress::Bzip2' => '2.059',
+ 'IO::Compress::Deflate' => '2.059',
+ 'IO::Compress::Gzip' => '2.059',
+ 'IO::Compress::Gzip::Constants'=> '2.059',
+ 'IO::Compress::RawDeflate'=> '2.059',
+ 'IO::Compress::Zip' => '2.059',
+ 'IO::Compress::Zip::Constants'=> '2.059',
+ 'IO::Compress::Zlib::Constants'=> '2.059',
+ 'IO::Compress::Zlib::Extra'=> '2.059',
+ 'IO::Uncompress::Adapter::Bunzip2'=> '2.059',
+ 'IO::Uncompress::Adapter::Identity'=> '2.059',
+ 'IO::Uncompress::Adapter::Inflate'=> '2.059',
+ 'IO::Uncompress::AnyInflate'=> '2.059',
+ 'IO::Uncompress::AnyUncompress'=> '2.059',
+ 'IO::Uncompress::Base' => '2.059',
+ 'IO::Uncompress::Bunzip2'=> '2.059',
+ 'IO::Uncompress::Gunzip'=> '2.059',
+ 'IO::Uncompress::Inflate'=> '2.059',
+ 'IO::Uncompress::RawInflate'=> '2.059',
+ 'IO::Uncompress::Unzip' => '2.059',
+ 'List::Util' => '1.26',
+ 'List::Util::XS' => '1.26',
+ 'Locale::Codes' => '3.24',
+ 'Locale::Codes::Constants'=> '3.24',
+ 'Locale::Codes::Country'=> '3.24',
+ 'Locale::Codes::Country_Codes'=> '3.24',
+ 'Locale::Codes::Country_Retired'=> '3.24',
+ 'Locale::Codes::Currency'=> '3.24',
+ 'Locale::Codes::Currency_Codes'=> '3.24',
+ 'Locale::Codes::Currency_Retired'=> '3.24',
+ 'Locale::Codes::LangExt'=> '3.24',
+ 'Locale::Codes::LangExt_Codes'=> '3.24',
+ 'Locale::Codes::LangExt_Retired'=> '3.24',
+ 'Locale::Codes::LangFam'=> '3.24',
+ 'Locale::Codes::LangFam_Codes'=> '3.24',
+ 'Locale::Codes::LangFam_Retired'=> '3.24',
+ 'Locale::Codes::LangVar'=> '3.24',
+ 'Locale::Codes::LangVar_Codes'=> '3.24',
+ 'Locale::Codes::LangVar_Retired'=> '3.24',
+ 'Locale::Codes::Language'=> '3.24',
+ 'Locale::Codes::Language_Codes'=> '3.24',
+ 'Locale::Codes::Language_Retired'=> '3.24',
+ 'Locale::Codes::Script' => '3.24',
+ 'Locale::Codes::Script_Codes'=> '3.24',
+ 'Locale::Codes::Script_Retired'=> '3.24',
+ 'Locale::Country' => '3.24',
+ 'Locale::Currency' => '3.24',
+ 'Locale::Language' => '3.24',
+ 'Locale::Maketext' => '1.23',
+ 'Locale::Script' => '3.24',
+ 'Module::CoreList' => '2.79',
+ 'Module::CoreList::TieHashDelta'=> '2.79',
+ 'POSIX' => '1.32',
+ 'Scalar::Util' => '1.26',
+ 'Socket' => '2.006_001',
+ 'Storable' => '2.40',
+ 'Term::ReadLine' => '1.11',
+ 'Unicode::Collate' => '0.96',
+ 'Unicode::Collate::CJK::Stroke'=> '0.94',
+ 'Unicode::Collate::CJK::Zhuyin'=> '0.94',
+ 'Unicode::Collate::Locale'=> '0.96',
+ 'XS::APItest' => '0.48',
+ 'XS::Typemap' => '0.09',
+ '_charnames' => '1.34',
+ 'charnames' => '1.34',
+ 'feature' => '1.32',
+ 'mro' => '1.10',
+ 'sigtrap' => '1.07',
+ 'sort' => '2.02',
+ },
+ removed => {
+ }
},
- 5.013009 => {
- 'Shell' => '1',
+ 5.017008 => {
+ delta_from => 5.017007,
+ changed => {
+ 'Archive::Extract' => '0.62',
+ 'B' => '1.42',
+ 'B::Concise' => '0.95',
+ 'Compress::Raw::Bzip2' => '2.060',
+ 'Compress::Raw::Zlib' => '2.060',
+ 'Compress::Zlib' => '2.060',
+ 'Cwd' => '3.40',
+ 'Data::Dumper' => '2.141',
+ 'Digest::SHA' => '5.81',
+ 'ExtUtils::Install' => '1.59',
+ 'File::Fetch' => '0.38',
+ 'File::Path' => '2.09',
+ 'File::Spec' => '3.40',
+ 'File::Spec::Cygwin' => '3.40',
+ 'File::Spec::Epoc' => '3.40',
+ 'File::Spec::Functions' => '3.40',
+ 'File::Spec::Mac' => '3.40',
+ 'File::Spec::OS2' => '3.40',
+ 'File::Spec::Unix' => '3.40',
+ 'File::Spec::VMS' => '3.40',
+ 'File::Spec::Win32' => '3.40',
+ 'HTTP::Tiny' => '0.025',
+ 'Hash::Util' => '0.14',
+ 'I18N::LangTags' => '0.39',
+ 'I18N::LangTags::List' => '0.39',
+ 'I18N::Langinfo' => '0.09',
+ 'IO' => '1.26',
+ 'IO::Compress::Adapter::Bzip2'=> '2.060',
+ 'IO::Compress::Adapter::Deflate'=> '2.060',
+ 'IO::Compress::Adapter::Identity'=> '2.060',
+ 'IO::Compress::Base' => '2.060',
+ 'IO::Compress::Base::Common'=> '2.060',
+ 'IO::Compress::Bzip2' => '2.060',
+ 'IO::Compress::Deflate' => '2.060',
+ 'IO::Compress::Gzip' => '2.060',
+ 'IO::Compress::Gzip::Constants'=> '2.060',
+ 'IO::Compress::RawDeflate'=> '2.060',
+ 'IO::Compress::Zip' => '2.060',
+ 'IO::Compress::Zip::Constants'=> '2.060',
+ 'IO::Compress::Zlib::Constants'=> '2.060',
+ 'IO::Compress::Zlib::Extra'=> '2.060',
+ 'IO::Uncompress::Adapter::Bunzip2'=> '2.060',
+ 'IO::Uncompress::Adapter::Identity'=> '2.060',
+ 'IO::Uncompress::Adapter::Inflate'=> '2.060',
+ 'IO::Uncompress::AnyInflate'=> '2.060',
+ 'IO::Uncompress::AnyUncompress'=> '2.060',
+ 'IO::Uncompress::Base' => '2.060',
+ 'IO::Uncompress::Bunzip2'=> '2.060',
+ 'IO::Uncompress::Gunzip'=> '2.060',
+ 'IO::Uncompress::Inflate'=> '2.060',
+ 'IO::Uncompress::RawInflate'=> '2.060',
+ 'IO::Uncompress::Unzip' => '2.060',
+ 'List::Util' => '1.27',
+ 'List::Util::XS' => '1.27',
+ 'Module::CoreList' => '2.80',
+ 'Module::CoreList::TieHashDelta'=> '2.80',
+ 'Pod::Html' => '1.17',
+ 'Pod::LaTeX' => '0.61',
+ 'Pod::Man' => '2.27',
+ 'Pod::Text' => '3.17',
+ 'Pod::Text::Color' => '2.07',
+ 'Pod::Text::Overstrike' => '2.05',
+ 'Pod::Text::Termcap' => '2.07',
+ 'Safe' => '2.34',
+ 'Scalar::Util' => '1.27',
+ 'Socket' => '2.009',
+ 'Term::ANSIColor' => '4.02',
+ 'Test' => '1.26',
+ 'Unicode::Collate' => '0.97',
+ 'XS::APItest' => '0.51',
+ 'XS::Typemap' => '0.10',
+ '_charnames' => '1.35',
+ 'charnames' => '1.35',
+ 'constant' => '1.25',
+ 'diagnostics' => '1.31',
+ 'threads::shared' => '1.43',
+ 'warnings' => '1.16',
+ },
+ removed => {
+ }
},
- 5.013010 => {
- 'Shell' => '1',
+ 5.017009 => {
+ delta_from => 5.017008,
+ changed => {
+ 'App::Cpan' => '1.60_02',
+ 'App::Prove' => '3.26',
+ 'App::Prove::State' => '3.26',
+ 'App::Prove::State::Result'=> '3.26',
+ 'App::Prove::State::Result::Test'=> '3.26',
+ 'Archive::Extract' => '0.68',
+ 'Attribute::Handlers' => '0.94',
+ 'B::Lint' => '1.17',
+ 'B::Lint::Debug' => '1.17',
+ 'Benchmark' => '1.14',
+ 'CPAN' => '2.00',
+ 'CPAN::Distribution' => '2.00',
+ 'CPAN::FirstTime' => '5.5304',
+ 'CPAN::Nox' => '5.5001',
+ 'CPANPLUS' => '0.9135',
+ 'CPANPLUS::Backend' => '0.9135',
+ 'CPANPLUS::Backend::RV' => '0.9135',
+ 'CPANPLUS::Config' => '0.9135',
+ 'CPANPLUS::Config::HomeEnv'=> '0.9135',
+ 'CPANPLUS::Configure' => '0.9135',
+ 'CPANPLUS::Configure::Setup'=> '0.9135',
+ 'CPANPLUS::Dist' => '0.9135',
+ 'CPANPLUS::Dist::Autobundle'=> '0.9135',
+ 'CPANPLUS::Dist::Base' => '0.9135',
+ 'CPANPLUS::Dist::Build' => '0.70',
+ 'CPANPLUS::Dist::Build::Constants'=> '0.70',
+ 'CPANPLUS::Dist::MM' => '0.9135',
+ 'CPANPLUS::Dist::Sample'=> '0.9135',
+ 'CPANPLUS::Error' => '0.9135',
+ 'CPANPLUS::Internals' => '0.9135',
+ 'CPANPLUS::Internals::Constants'=> '0.9135',
+ 'CPANPLUS::Internals::Constants::Report'=> '0.9135',
+ 'CPANPLUS::Internals::Extract'=> '0.9135',
+ 'CPANPLUS::Internals::Fetch'=> '0.9135',
+ 'CPANPLUS::Internals::Report'=> '0.9135',
+ 'CPANPLUS::Internals::Search'=> '0.9135',
+ 'CPANPLUS::Internals::Source'=> '0.9135',
+ 'CPANPLUS::Internals::Source::Memory'=> '0.9135',
+ 'CPANPLUS::Internals::Source::SQLite'=> '0.9135',
+ 'CPANPLUS::Internals::Source::SQLite::Tie'=> '0.9135',
+ 'CPANPLUS::Internals::Utils'=> '0.9135',
+ 'CPANPLUS::Internals::Utils::Autoflush'=> '0.9135',
+ 'CPANPLUS::Module' => '0.9135',
+ 'CPANPLUS::Module::Author'=> '0.9135',
+ 'CPANPLUS::Module::Author::Fake'=> '0.9135',
+ 'CPANPLUS::Module::Checksums'=> '0.9135',
+ 'CPANPLUS::Module::Fake'=> '0.9135',
+ 'CPANPLUS::Module::Signature'=> '0.9135',
+ 'CPANPLUS::Selfupdate' => '0.9135',
+ 'CPANPLUS::Shell' => '0.9135',
+ 'CPANPLUS::Shell::Classic'=> '0.9135',
+ 'CPANPLUS::Shell::Default'=> '0.9135',
+ 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> '0.9135',
+ 'CPANPLUS::Shell::Default::Plugins::Remote'=> '0.9135',
+ 'CPANPLUS::Shell::Default::Plugins::Source'=> '0.9135',
+ 'Config' => '5.017009',
+ 'Config::Perl::V' => '0.17',
+ 'DBM_Filter' => '0.05',
+ 'Data::Dumper' => '2.142',
+ 'Digest::SHA' => '5.82',
+ 'Encode' => '2.48',
+ 'ExtUtils::Installed' => '1.999003',
+ 'ExtUtils::Manifest' => '1.63',
+ 'ExtUtils::ParseXS::Utilities'=> '3.19',
+ 'ExtUtils::Typemaps' => '3.19',
+ 'File::CheckTree' => '4.42',
+ 'File::DosGlob' => '1.10',
+ 'File::Temp' => '0.22_90',
+ 'Filter::Simple' => '0.89',
+ 'IO' => '1.27',
+ 'Log::Message' => '0.06',
+ 'Log::Message::Config' => '0.06',
+ 'Log::Message::Handlers'=> '0.06',
+ 'Log::Message::Item' => '0.06',
+ 'Log::Message::Simple' => '0.10',
+ 'Math::BigInt' => '1.999',
+ 'Module::CoreList' => '2.82',
+ 'Module::CoreList::TieHashDelta'=> '2.82',
+ 'Module::Load' => '0.24',
+ 'Module::Pluggable' => '4.6',
+ 'Module::Pluggable::Object'=> '4.6',
+ 'Object::Accessor' => '0.46',
+ 'PerlIO::scalar' => '0.16',
+ 'Pod::Checker' => '1.60',
+ 'Pod::Find' => '1.60',
+ 'Pod::Html' => '1.18',
+ 'Pod::InputObjects' => '1.60',
+ 'Pod::ParseUtils' => '1.60',
+ 'Pod::Parser' => '1.60',
+ 'Pod::Perldoc' => '3.19',
+ 'Pod::Perldoc::BaseTo' => '3.19',
+ 'Pod::Perldoc::GetOptsOO'=> '3.19',
+ 'Pod::Perldoc::ToANSI' => '3.19',
+ 'Pod::Perldoc::ToChecker'=> '3.19',
+ 'Pod::Perldoc::ToMan' => '3.19',
+ 'Pod::Perldoc::ToNroff' => '3.19',
+ 'Pod::Perldoc::ToPod' => '3.19',
+ 'Pod::Perldoc::ToRtf' => '3.19',
+ 'Pod::Perldoc::ToTerm' => '3.19',
+ 'Pod::Perldoc::ToText' => '3.19',
+ 'Pod::Perldoc::ToTk' => '3.19',
+ 'Pod::Perldoc::ToXml' => '3.19',
+ 'Pod::PlainText' => '2.06',
+ 'Pod::Select' => '1.60',
+ 'Pod::Usage' => '1.61',
+ 'SelfLoader' => '1.21',
+ 'TAP::Base' => '3.26',
+ 'TAP::Formatter::Base' => '3.26',
+ 'TAP::Formatter::Color' => '3.26',
+ 'TAP::Formatter::Console'=> '3.26',
+ 'TAP::Formatter::Console::ParallelSession'=> '3.26',
+ 'TAP::Formatter::Console::Session'=> '3.26',
+ 'TAP::Formatter::File' => '3.26',
+ 'TAP::Formatter::File::Session'=> '3.26',
+ 'TAP::Formatter::Session'=> '3.26',
+ 'TAP::Harness' => '3.26',
+ 'TAP::Object' => '3.26',
+ 'TAP::Parser' => '3.26',
+ 'TAP::Parser::Aggregator'=> '3.26',
+ 'TAP::Parser::Grammar' => '3.26',
+ 'TAP::Parser::Iterator' => '3.26',
+ 'TAP::Parser::Iterator::Array'=> '3.26',
+ 'TAP::Parser::Iterator::Process'=> '3.26',
+ 'TAP::Parser::Iterator::Stream'=> '3.26',
+ 'TAP::Parser::IteratorFactory'=> '3.26',
+ 'TAP::Parser::Multiplexer'=> '3.26',
+ 'TAP::Parser::Result' => '3.26',
+ 'TAP::Parser::Result::Bailout'=> '3.26',
+ 'TAP::Parser::Result::Comment'=> '3.26',
+ 'TAP::Parser::Result::Plan'=> '3.26',
+ 'TAP::Parser::Result::Pragma'=> '3.26',
+ 'TAP::Parser::Result::Test'=> '3.26',
+ 'TAP::Parser::Result::Unknown'=> '3.26',
+ 'TAP::Parser::Result::Version'=> '3.26',
+ 'TAP::Parser::Result::YAML'=> '3.26',
+ 'TAP::Parser::ResultFactory'=> '3.26',
+ 'TAP::Parser::Scheduler'=> '3.26',
+ 'TAP::Parser::Scheduler::Job'=> '3.26',
+ 'TAP::Parser::Scheduler::Spinner'=> '3.26',
+ 'TAP::Parser::Source' => '3.26',
+ 'TAP::Parser::SourceHandler'=> '3.26',
+ 'TAP::Parser::SourceHandler::Executable'=> '3.26',
+ 'TAP::Parser::SourceHandler::File'=> '3.26',
+ 'TAP::Parser::SourceHandler::Handle'=> '3.26',
+ 'TAP::Parser::SourceHandler::Perl'=> '3.26',
+ 'TAP::Parser::SourceHandler::RawTAP'=> '3.26',
+ 'TAP::Parser::Utils' => '3.26',
+ 'TAP::Parser::YAMLish::Reader'=> '3.26',
+ 'TAP::Parser::YAMLish::Writer'=> '3.26',
+ 'Term::UI' => '0.34',
+ 'Test::Harness' => '3.26',
+ 'Text::Soundex' => '3.04',
+ 'Thread::Queue' => '3.02',
+ 'Unicode::UCD' => '0.50',
+ 'Win32' => '0.46',
+ 'Win32API::File' => '0.1201',
+ '_charnames' => '1.36',
+ 'arybase' => '0.06',
+ 'bigint' => '0.32',
+ 'bignum' => '0.32',
+ 'charnames' => '1.36',
+ 'filetest' => '1.03',
+ 'locale' => '1.02',
+ 'overload' => '1.21',
+ 'warnings' => '1.17',
+ },
+ removed => {
+ }
},
- 5.013011 => {
- 'Shell' => '1',
+ 5.017010 => {
+ delta_from => 5.017009,
+ changed => {
+ 'Benchmark' => '1.15',
+ 'Config' => '5.017009',
+ 'Data::Dumper' => '2.145',
+ 'Digest::SHA' => '5.84',
+ 'Encode' => '2.49',
+ 'ExtUtils::Command::MM' => '6.65_01',
+ 'ExtUtils::Liblist' => '6.65_01',
+ 'ExtUtils::Liblist::Kid'=> '6.65_01',
+ 'ExtUtils::MM' => '6.65_01',
+ 'ExtUtils::MM_AIX' => '6.65_01',
+ 'ExtUtils::MM_Any' => '6.65_01',
+ 'ExtUtils::MM_BeOS' => '6.65_01',
+ 'ExtUtils::MM_Cygwin' => '6.65_01',
+ 'ExtUtils::MM_DOS' => '6.65_01',
+ 'ExtUtils::MM_Darwin' => '6.65_01',
+ 'ExtUtils::MM_MacOS' => '6.65_01',
+ 'ExtUtils::MM_NW5' => '6.65_01',
+ 'ExtUtils::MM_OS2' => '6.65_01',
+ 'ExtUtils::MM_QNX' => '6.65_01',
+ 'ExtUtils::MM_UWIN' => '6.65_01',
+ 'ExtUtils::MM_Unix' => '6.65_01',
+ 'ExtUtils::MM_VMS' => '6.65_01',
+ 'ExtUtils::MM_VOS' => '6.65_01',
+ 'ExtUtils::MM_Win32' => '6.65_01',
+ 'ExtUtils::MM_Win95' => '6.65_01',
+ 'ExtUtils::MY' => '6.65_01',
+ 'ExtUtils::MakeMaker' => '6.65_01',
+ 'ExtUtils::MakeMaker::Config'=> '6.65_01',
+ 'ExtUtils::Mkbootstrap' => '6.65_01',
+ 'ExtUtils::Mksymlists' => '6.65_01',
+ 'ExtUtils::testlib' => '6.65_01',
+ 'File::Copy' => '2.26',
+ 'File::Temp' => '0.23',
+ 'Getopt::Long' => '2.39',
+ 'Hash::Util' => '0.15',
+ 'I18N::Langinfo' => '0.10',
+ 'IPC::Cmd' => '0.80',
+ 'JSON::PP' => '2.27202',
+ 'Locale::Codes' => '3.25',
+ 'Locale::Codes::Constants'=> '3.25',
+ 'Locale::Codes::Country'=> '3.25',
+ 'Locale::Codes::Country_Codes'=> '3.25',
+ 'Locale::Codes::Country_Retired'=> '3.25',
+ 'Locale::Codes::Currency'=> '3.25',
+ 'Locale::Codes::Currency_Codes'=> '3.25',
+ 'Locale::Codes::Currency_Retired'=> '3.25',
+ 'Locale::Codes::LangExt'=> '3.25',
+ 'Locale::Codes::LangExt_Codes'=> '3.25',
+ 'Locale::Codes::LangExt_Retired'=> '3.25',
+ 'Locale::Codes::LangFam'=> '3.25',
+ 'Locale::Codes::LangFam_Codes'=> '3.25',
+ 'Locale::Codes::LangFam_Retired'=> '3.25',
+ 'Locale::Codes::LangVar'=> '3.25',
+ 'Locale::Codes::LangVar_Codes'=> '3.25',
+ 'Locale::Codes::LangVar_Retired'=> '3.25',
+ 'Locale::Codes::Language'=> '3.25',
+ 'Locale::Codes::Language_Codes'=> '3.25',
+ 'Locale::Codes::Language_Retired'=> '3.25',
+ 'Locale::Codes::Script' => '3.25',
+ 'Locale::Codes::Script_Codes'=> '3.25',
+ 'Locale::Codes::Script_Retired'=> '3.25',
+ 'Locale::Country' => '3.25',
+ 'Locale::Currency' => '3.25',
+ 'Locale::Language' => '3.25',
+ 'Locale::Script' => '3.25',
+ 'Math::BigFloat' => '1.998',
+ 'Math::BigFloat::Trace' => '0.32',
+ 'Math::BigInt' => '1.9991',
+ 'Math::BigInt::CalcEmu' => '1.998',
+ 'Math::BigInt::Trace' => '0.32',
+ 'Math::BigRat' => '0.2604',
+ 'Module::CoreList' => '2.84',
+ 'Module::CoreList::TieHashDelta'=> '2.84',
+ 'Module::Pluggable' => '4.7',
+ 'Net::Ping' => '2.41',
+ 'Perl::OSType' => '1.003',
+ 'Pod::Simple' => '3.26',
+ 'Pod::Simple::BlackBox' => '3.26',
+ 'Pod::Simple::Checker' => '3.26',
+ 'Pod::Simple::Debug' => '3.26',
+ 'Pod::Simple::DumpAsText'=> '3.26',
+ 'Pod::Simple::DumpAsXML'=> '3.26',
+ 'Pod::Simple::HTML' => '3.26',
+ 'Pod::Simple::HTMLBatch'=> '3.26',
+ 'Pod::Simple::LinkSection'=> '3.26',
+ 'Pod::Simple::Methody' => '3.26',
+ 'Pod::Simple::Progress' => '3.26',
+ 'Pod::Simple::PullParser'=> '3.26',
+ 'Pod::Simple::PullParserEndToken'=> '3.26',
+ 'Pod::Simple::PullParserStartToken'=> '3.26',
+ 'Pod::Simple::PullParserTextToken'=> '3.26',
+ 'Pod::Simple::PullParserToken'=> '3.26',
+ 'Pod::Simple::RTF' => '3.26',
+ 'Pod::Simple::Search' => '3.26',
+ 'Pod::Simple::SimpleTree'=> '3.26',
+ 'Pod::Simple::Text' => '3.26',
+ 'Pod::Simple::TextContent'=> '3.26',
+ 'Pod::Simple::TiedOutFH'=> '3.26',
+ 'Pod::Simple::Transcode'=> '3.26',
+ 'Pod::Simple::TranscodeDumb'=> '3.26',
+ 'Pod::Simple::TranscodeSmart'=> '3.26',
+ 'Pod::Simple::XHTML' => '3.26',
+ 'Pod::Simple::XMLOutStream'=> '3.26',
+ 'Safe' => '2.35',
+ 'Term::ReadLine' => '1.12',
+ 'Text::ParseWords' => '3.28',
+ 'Tie::File' => '0.99',
+ 'Unicode::UCD' => '0.51',
+ 'Win32' => '0.47',
+ 'bigint' => '0.33',
+ 'bignum' => '0.33',
+ 'bigrat' => '0.33',
+ 'constant' => '1.27',
+ 'perlfaq' => '5.0150042',
+ 'version' => '0.9902',
+ },
+ removed => {
+ }
},
- 5.014000 => {
- 'Shell' => '1',
+ 5.017011 => {
+ delta_from => 5.017010,
+ changed => {
+ 'App::Cpan' => '1.61',
+ 'B::Deparse' => '1.20',
+ 'Config' => '5.017009',
+ 'Exporter' => '5.68',
+ 'Exporter::Heavy' => '5.68',
+ 'ExtUtils::CBuilder' => '0.280210',
+ 'ExtUtils::Command::MM' => '6.66',
+ 'ExtUtils::Liblist' => '6.66',
+ 'ExtUtils::Liblist::Kid'=> '6.66',
+ 'ExtUtils::MM' => '6.66',
+ 'ExtUtils::MM_AIX' => '6.66',
+ 'ExtUtils::MM_Any' => '6.66',
+ 'ExtUtils::MM_BeOS' => '6.66',
+ 'ExtUtils::MM_Cygwin' => '6.66',
+ 'ExtUtils::MM_DOS' => '6.66',
+ 'ExtUtils::MM_Darwin' => '6.66',
+ 'ExtUtils::MM_MacOS' => '6.66',
+ 'ExtUtils::MM_NW5' => '6.66',
+ 'ExtUtils::MM_OS2' => '6.66',
+ 'ExtUtils::MM_QNX' => '6.66',
+ 'ExtUtils::MM_UWIN' => '6.66',
+ 'ExtUtils::MM_Unix' => '6.66',
+ 'ExtUtils::MM_VMS' => '6.66',
+ 'ExtUtils::MM_VOS' => '6.66',
+ 'ExtUtils::MM_Win32' => '6.66',
+ 'ExtUtils::MM_Win95' => '6.66',
+ 'ExtUtils::MY' => '6.66',
+ 'ExtUtils::MakeMaker' => '6.66',
+ 'ExtUtils::MakeMaker::Config'=> '6.66',
+ 'ExtUtils::Mkbootstrap' => '6.66',
+ 'ExtUtils::Mksymlists' => '6.66',
+ 'ExtUtils::testlib' => '6.66',
+ 'File::Glob' => '1.20',
+ 'IO' => '1.28',
+ 'Module::CoreList' => '2.87',
+ 'Module::CoreList::TieHashDelta'=> '2.87',
+ 'Storable' => '2.41',
+ 'bigint' => '0.34',
+ 'mro' => '1.11',
+ 'overload' => '1.22',
+ 'warnings' => '1.18',
+ },
+ removed => {
+ }
},
- 5.012004 => {
- 'Class::ISA' => '1',
- 'Pod::Plainer' => '1',
- 'Shell' => '1',
- 'Switch' => '1',
+ 5.018000 => {
+ delta_from => 5.017011,
+ changed => {
+ 'Carp' => '1.29',
+ 'Carp::Heavy' => '1.29',
+ 'Config' => '5.018000',
+ 'Hash::Util' => '0.16',
+ 'IO::Handle' => '1.34',
+ 'IO::Socket' => '1.36',
+ 'Module::CoreList' => '2.89',
+ 'Module::CoreList::TieHashDelta'=> '2.89',
+ 'Pod::Simple' => '3.28',
+ 'Pod::Simple::BlackBox' => '3.28',
+ 'Pod::Simple::Checker' => '3.28',
+ 'Pod::Simple::Debug' => '3.28',
+ 'Pod::Simple::DumpAsText'=> '3.28',
+ 'Pod::Simple::DumpAsXML'=> '3.28',
+ 'Pod::Simple::HTML' => '3.28',
+ 'Pod::Simple::HTMLBatch'=> '3.28',
+ 'Pod::Simple::LinkSection'=> '3.28',
+ 'Pod::Simple::Methody' => '3.28',
+ 'Pod::Simple::Progress' => '3.28',
+ 'Pod::Simple::PullParser'=> '3.28',
+ 'Pod::Simple::PullParserEndToken'=> '3.28',
+ 'Pod::Simple::PullParserStartToken'=> '3.28',
+ 'Pod::Simple::PullParserTextToken'=> '3.28',
+ 'Pod::Simple::PullParserToken'=> '3.28',
+ 'Pod::Simple::RTF' => '3.28',
+ 'Pod::Simple::Search' => '3.28',
+ 'Pod::Simple::SimpleTree'=> '3.28',
+ 'Pod::Simple::Text' => '3.28',
+ 'Pod::Simple::TextContent'=> '3.28',
+ 'Pod::Simple::TiedOutFH'=> '3.28',
+ 'Pod::Simple::Transcode'=> '3.28',
+ 'Pod::Simple::TranscodeDumb'=> '3.28',
+ 'Pod::Simple::TranscodeSmart'=> '3.28',
+ 'Pod::Simple::XHTML' => '3.28',
+ 'Pod::Simple::XMLOutStream'=> '3.28',
+ },
+ removed => {
+ }
},
- 5.014001 => {
- 'Shell' => '1',
+ 5.018001 => {
+ delta_from => 5.018000,
+ changed => {
+ 'B' => '1.42_01',
+ 'Config' => '5.018001',
+ 'Digest::SHA' => '5.84_01',
+ 'Module::CoreList' => '2.96',
+ 'Module::CoreList::TieHashDelta'=> '2.96',
+ 'Module::CoreList::Utils'=> '2.96',
+ },
+ removed => {
+ 'VMS::Filespec' => 1,
+ }
},
- 5.015000 => {
- 'Devel::DProf' => '1',
+ 5.018002 => {
+ delta_from => 5.018001,
+ changed => {
+ 'B' => '1.42_02',
+ 'B::Concise' => '0.95_01',
+ 'Config' => '5.018002',
+ 'File::Glob' => '1.20_01',
+ 'Module::CoreList' => '3.03',
+ 'Module::CoreList::TieHashDelta'=> '3.03',
+ 'Module::CoreList::Utils'=> '3.03',
+ },
},
- 5.015000 => {
+ 5.019000 => {
+ delta_from => 5.018000,
+ changed => {
+ 'Config' => '5.019000',
+ 'Getopt::Std' => '1.08',
+ 'Module::CoreList' => '2.91',
+ 'Module::CoreList::TieHashDelta'=> '2.91',
+ 'Storable' => '2.42',
+ 'feature' => '1.33',
+ 'utf8' => '1.11',
+ },
+ removed => {
+ 'Archive::Extract' => 1,
+ 'B::Lint' => 1,
+ 'B::Lint::Debug' => 1,
+ 'CPANPLUS' => 1,
+ 'CPANPLUS::Backend' => 1,
+ 'CPANPLUS::Backend::RV' => 1,
+ 'CPANPLUS::Config' => 1,
+ 'CPANPLUS::Config::HomeEnv'=> 1,
+ 'CPANPLUS::Configure' => 1,
+ 'CPANPLUS::Configure::Setup'=> 1,
+ 'CPANPLUS::Dist' => 1,
+ 'CPANPLUS::Dist::Autobundle'=> 1,
+ 'CPANPLUS::Dist::Base' => 1,
+ 'CPANPLUS::Dist::Build' => 1,
+ 'CPANPLUS::Dist::Build::Constants'=> 1,
+ 'CPANPLUS::Dist::MM' => 1,
+ 'CPANPLUS::Dist::Sample'=> 1,
+ 'CPANPLUS::Error' => 1,
+ 'CPANPLUS::Internals' => 1,
+ 'CPANPLUS::Internals::Constants'=> 1,
+ 'CPANPLUS::Internals::Constants::Report'=> 1,
+ 'CPANPLUS::Internals::Extract'=> 1,
+ 'CPANPLUS::Internals::Fetch'=> 1,
+ 'CPANPLUS::Internals::Report'=> 1,
+ 'CPANPLUS::Internals::Search'=> 1,
+ 'CPANPLUS::Internals::Source'=> 1,
+ 'CPANPLUS::Internals::Source::Memory'=> 1,
+ 'CPANPLUS::Internals::Source::SQLite'=> 1,
+ 'CPANPLUS::Internals::Source::SQLite::Tie'=> 1,
+ 'CPANPLUS::Internals::Utils'=> 1,
+ 'CPANPLUS::Internals::Utils::Autoflush'=> 1,
+ 'CPANPLUS::Module' => 1,
+ 'CPANPLUS::Module::Author'=> 1,
+ 'CPANPLUS::Module::Author::Fake'=> 1,
+ 'CPANPLUS::Module::Checksums'=> 1,
+ 'CPANPLUS::Module::Fake'=> 1,
+ 'CPANPLUS::Module::Signature'=> 1,
+ 'CPANPLUS::Selfupdate' => 1,
+ 'CPANPLUS::Shell' => 1,
+ 'CPANPLUS::Shell::Classic'=> 1,
+ 'CPANPLUS::Shell::Default'=> 1,
+ 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> 1,
+ 'CPANPLUS::Shell::Default::Plugins::Remote'=> 1,
+ 'CPANPLUS::Shell::Default::Plugins::Source'=> 1,
+ 'Devel::InnerPackage' => 1,
+ 'File::CheckTree' => 1,
+ 'Log::Message' => 1,
+ 'Log::Message::Config' => 1,
+ 'Log::Message::Handlers'=> 1,
+ 'Log::Message::Item' => 1,
+ 'Log::Message::Simple' => 1,
+ 'Module::Pluggable' => 1,
+ 'Module::Pluggable::Object'=> 1,
+ 'Object::Accessor' => 1,
+ 'Pod::LaTeX' => 1,
+ 'Term::UI' => 1,
+ 'Term::UI::History' => 1,
+ 'Text::Soundex' => 1,
+ }
},
- 5.015001 => {
+ 5.019001 => {
+ delta_from => 5.019000,
+ changed => {
+ 'App::Prove' => '3.28',
+ 'App::Prove::State' => '3.28',
+ 'App::Prove::State::Result'=> '3.28',
+ 'App::Prove::State::Result::Test'=> '3.28',
+ 'Archive::Tar' => '1.92',
+ 'Archive::Tar::Constant'=> '1.92',
+ 'Archive::Tar::File' => '1.92',
+ 'Attribute::Handlers' => '0.95',
+ 'B' => '1.43',
+ 'B::Concise' => '0.96',
+ 'B::Deparse' => '1.21',
+ 'B::Showlex' => '1.04',
+ 'Benchmark' => '1.16',
+ 'CPAN::Meta' => '2.131560',
+ 'CPAN::Meta::Converter' => '2.131560',
+ 'CPAN::Meta::Feature' => '2.131560',
+ 'CPAN::Meta::History' => '2.131560',
+ 'CPAN::Meta::Prereqs' => '2.131560',
+ 'CPAN::Meta::Spec' => '2.131560',
+ 'CPAN::Meta::Validator' => '2.131560',
+ 'Carp' => '1.30',
+ 'Carp::Heavy' => '1.30',
+ 'Compress::Raw::Bzip2' => '2.061',
+ 'Compress::Raw::Zlib' => '2.061',
+ 'Compress::Zlib' => '2.061',
+ 'Config' => '5.019001',
+ 'Config::Perl::V' => '0.18',
+ 'Cwd' => '3.41',
+ 'DB' => '1.06',
+ 'DB_File' => '1.828',
+ 'Data::Dumper' => '2.146',
+ 'Encode' => '2.51',
+ 'Encode::CN::HZ' => '2.06',
+ 'Encode::GSM0338' => '2.03',
+ 'Encode::Unicode::UTF7' => '2.07',
+ 'ExtUtils::CBuilder::Base'=> '0.280210',
+ 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280210',
+ 'ExtUtils::Command::MM' => '6.68',
+ 'ExtUtils::Install' => '1.60',
+ 'ExtUtils::Liblist' => '6.68',
+ 'ExtUtils::Liblist::Kid'=> '6.68',
+ 'ExtUtils::MM' => '6.68',
+ 'ExtUtils::MM_AIX' => '6.68',
+ 'ExtUtils::MM_Any' => '6.68',
+ 'ExtUtils::MM_BeOS' => '6.68',
+ 'ExtUtils::MM_Cygwin' => '6.68',
+ 'ExtUtils::MM_DOS' => '6.68',
+ 'ExtUtils::MM_Darwin' => '6.68',
+ 'ExtUtils::MM_MacOS' => '6.68',
+ 'ExtUtils::MM_NW5' => '6.68',
+ 'ExtUtils::MM_OS2' => '6.68',
+ 'ExtUtils::MM_QNX' => '6.68',
+ 'ExtUtils::MM_UWIN' => '6.68',
+ 'ExtUtils::MM_Unix' => '6.68',
+ 'ExtUtils::MM_VMS' => '6.68',
+ 'ExtUtils::MM_VOS' => '6.68',
+ 'ExtUtils::MM_Win32' => '6.68',
+ 'ExtUtils::MM_Win95' => '6.68',
+ 'ExtUtils::MY' => '6.68',
+ 'ExtUtils::MakeMaker' => '6.68',
+ 'ExtUtils::MakeMaker::Config'=> '6.68',
+ 'ExtUtils::Mkbootstrap' => '6.68',
+ 'ExtUtils::Mksymlists' => '6.68',
+ 'ExtUtils::ParseXS' => '3.19',
+ 'ExtUtils::testlib' => '6.68',
+ 'Fatal' => '2.19',
+ 'File::Copy' => '2.27',
+ 'File::DosGlob' => '1.11',
+ 'File::Fetch' => '0.42',
+ 'File::Find' => '1.24',
+ 'File::Spec' => '3.41',
+ 'File::Spec::Cygwin' => '3.41',
+ 'File::Spec::Epoc' => '3.41',
+ 'File::Spec::Mac' => '3.41',
+ 'File::Spec::OS2' => '3.41',
+ 'File::Spec::Unix' => '3.41',
+ 'File::Spec::VMS' => '3.41',
+ 'File::Spec::Win32' => '3.41',
+ 'File::Temp' => '0.2301',
+ 'Filter::Simple' => '0.90',
+ 'Filter::Util::Call' => '1.49',
+ 'Getopt::Long' => '2.4',
+ 'HTTP::Tiny' => '0.031',
+ 'Hash::Util::FieldHash' => '1.11',
+ 'IO::Compress::Adapter::Bzip2'=> '2.061',
+ 'IO::Compress::Adapter::Deflate'=> '2.061',
+ 'IO::Compress::Adapter::Identity'=> '2.061',
+ 'IO::Compress::Base' => '2.061',
+ 'IO::Compress::Base::Common'=> '2.061',
+ 'IO::Compress::Bzip2' => '2.061',
+ 'IO::Compress::Deflate' => '2.061',
+ 'IO::Compress::Gzip' => '2.061',
+ 'IO::Compress::Gzip::Constants'=> '2.061',
+ 'IO::Compress::RawDeflate'=> '2.061',
+ 'IO::Compress::Zip' => '2.061',
+ 'IO::Compress::Zip::Constants'=> '2.061',
+ 'IO::Compress::Zlib::Constants'=> '2.061',
+ 'IO::Compress::Zlib::Extra'=> '2.061',
+ 'IO::Handle' => '1.35',
+ 'IO::Uncompress::Adapter::Bunzip2'=> '2.061',
+ 'IO::Uncompress::Adapter::Identity'=> '2.061',
+ 'IO::Uncompress::Adapter::Inflate'=> '2.061',
+ 'IO::Uncompress::AnyInflate'=> '2.061',
+ 'IO::Uncompress::AnyUncompress'=> '2.061',
+ 'IO::Uncompress::Base' => '2.061',
+ 'IO::Uncompress::Bunzip2'=> '2.061',
+ 'IO::Uncompress::Gunzip'=> '2.061',
+ 'IO::Uncompress::Inflate'=> '2.061',
+ 'IO::Uncompress::RawInflate'=> '2.061',
+ 'IO::Uncompress::Unzip' => '2.061',
+ 'IPC::Open3' => '1.14',
+ 'Locale::Codes' => '3.26',
+ 'Locale::Codes::Constants'=> '3.26',
+ 'Locale::Codes::Country'=> '3.26',
+ 'Locale::Codes::Country_Codes'=> '3.26',
+ 'Locale::Codes::Country_Retired'=> '3.26',
+ 'Locale::Codes::Currency'=> '3.26',
+ 'Locale::Codes::Currency_Codes'=> '3.26',
+ 'Locale::Codes::Currency_Retired'=> '3.26',
+ 'Locale::Codes::LangExt'=> '3.26',
+ 'Locale::Codes::LangExt_Codes'=> '3.26',
+ 'Locale::Codes::LangExt_Retired'=> '3.26',
+ 'Locale::Codes::LangFam'=> '3.26',
+ 'Locale::Codes::LangFam_Codes'=> '3.26',
+ 'Locale::Codes::LangFam_Retired'=> '3.26',
+ 'Locale::Codes::LangVar'=> '3.26',
+ 'Locale::Codes::LangVar_Codes'=> '3.26',
+ 'Locale::Codes::LangVar_Retired'=> '3.26',
+ 'Locale::Codes::Language'=> '3.26',
+ 'Locale::Codes::Language_Codes'=> '3.26',
+ 'Locale::Codes::Language_Retired'=> '3.26',
+ 'Locale::Codes::Script' => '3.26',
+ 'Locale::Codes::Script_Codes'=> '3.26',
+ 'Locale::Codes::Script_Retired'=> '3.26',
+ 'Locale::Country' => '3.26',
+ 'Locale::Currency' => '3.26',
+ 'Locale::Language' => '3.26',
+ 'Locale::Maketext' => '1.24',
+ 'Locale::Script' => '3.26',
+ 'Math::BigFloat' => '1.999',
+ 'Math::BigInt' => '1.9992',
+ 'Math::BigInt::Calc' => '1.998',
+ 'Math::BigInt::CalcEmu' => '1.9991',
+ 'Math::BigRat' => '0.2606',
+ 'Module::Build' => '0.4005',
+ 'Module::Build::Base' => '0.4005',
+ 'Module::Build::Compat' => '0.4005',
+ 'Module::Build::Config' => '0.4005',
+ 'Module::Build::Cookbook'=> '0.4005',
+ 'Module::Build::Dumper' => '0.4005',
+ 'Module::Build::ModuleInfo'=> '0.4005',
+ 'Module::Build::Notes' => '0.4005',
+ 'Module::Build::PPMMaker'=> '0.4005',
+ 'Module::Build::Platform::Amiga'=> '0.4005',
+ 'Module::Build::Platform::Default'=> '0.4005',
+ 'Module::Build::Platform::EBCDIC'=> '0.4005',
+ 'Module::Build::Platform::MPEiX'=> '0.4005',
+ 'Module::Build::Platform::MacOS'=> '0.4005',
+ 'Module::Build::Platform::RiscOS'=> '0.4005',
+ 'Module::Build::Platform::Unix'=> '0.4005',
+ 'Module::Build::Platform::VMS'=> '0.4005',
+ 'Module::Build::Platform::VOS'=> '0.4005',
+ 'Module::Build::Platform::Windows'=> '0.4005',
+ 'Module::Build::Platform::aix'=> '0.4005',
+ 'Module::Build::Platform::cygwin'=> '0.4005',
+ 'Module::Build::Platform::darwin'=> '0.4005',
+ 'Module::Build::Platform::os2'=> '0.4005',
+ 'Module::Build::PodParser'=> '0.4005',
+ 'Module::CoreList' => '2.92',
+ 'Module::CoreList::TieHashDelta'=> '2.92',
+ 'Module::CoreList::Utils'=> '2.92',
+ 'Module::Metadata' => '1.000014',
+ 'Net::Ping' => '2.42',
+ 'POSIX' => '1.33',
+ 'Pod::Find' => '1.61',
+ 'Pod::Html' => '1.19',
+ 'Pod::InputObjects' => '1.61',
+ 'Pod::ParseUtils' => '1.61',
+ 'Pod::Parser' => '1.61',
+ 'Pod::Perldoc' => '3.20',
+ 'Pod::Perldoc::BaseTo' => '3.20',
+ 'Pod::Perldoc::GetOptsOO'=> '3.20',
+ 'Pod::Perldoc::ToANSI' => '3.20',
+ 'Pod::Perldoc::ToChecker'=> '3.20',
+ 'Pod::Perldoc::ToMan' => '3.20',
+ 'Pod::Perldoc::ToNroff' => '3.20',
+ 'Pod::Perldoc::ToPod' => '3.20',
+ 'Pod::Perldoc::ToRtf' => '3.20',
+ 'Pod::Perldoc::ToTerm' => '3.20',
+ 'Pod::Perldoc::ToText' => '3.20',
+ 'Pod::Perldoc::ToTk' => '3.20',
+ 'Pod::Perldoc::ToXml' => '3.20',
+ 'Pod::Select' => '1.61',
+ 'Pod::Usage' => '1.63',
+ 'Safe' => '2.36',
+ 'Storable' => '2.43',
+ 'Sys::Hostname' => '1.18',
+ 'Sys::Syslog' => '0.33',
+ 'TAP::Base' => '3.28',
+ 'TAP::Formatter::Base' => '3.28',
+ 'TAP::Formatter::Color' => '3.28',
+ 'TAP::Formatter::Console'=> '3.28',
+ 'TAP::Formatter::Console::ParallelSession'=> '3.28',
+ 'TAP::Formatter::Console::Session'=> '3.28',
+ 'TAP::Formatter::File' => '3.28',
+ 'TAP::Formatter::File::Session'=> '3.28',
+ 'TAP::Formatter::Session'=> '3.28',
+ 'TAP::Harness' => '3.28',
+ 'TAP::Object' => '3.28',
+ 'TAP::Parser' => '3.28',
+ 'TAP::Parser::Aggregator'=> '3.28',
+ 'TAP::Parser::Grammar' => '3.28',
+ 'TAP::Parser::Iterator' => '3.28',
+ 'TAP::Parser::Iterator::Array'=> '3.28',
+ 'TAP::Parser::Iterator::Process'=> '3.28',
+ 'TAP::Parser::Iterator::Stream'=> '3.28',
+ 'TAP::Parser::IteratorFactory'=> '3.28',
+ 'TAP::Parser::Multiplexer'=> '3.28',
+ 'TAP::Parser::Result' => '3.28',
+ 'TAP::Parser::Result::Bailout'=> '3.28',
+ 'TAP::Parser::Result::Comment'=> '3.28',
+ 'TAP::Parser::Result::Plan'=> '3.28',
+ 'TAP::Parser::Result::Pragma'=> '3.28',
+ 'TAP::Parser::Result::Test'=> '3.28',
+ 'TAP::Parser::Result::Unknown'=> '3.28',
+ 'TAP::Parser::Result::Version'=> '3.28',
+ 'TAP::Parser::Result::YAML'=> '3.28',
+ 'TAP::Parser::ResultFactory'=> '3.28',
+ 'TAP::Parser::Scheduler'=> '3.28',
+ 'TAP::Parser::Scheduler::Job'=> '3.28',
+ 'TAP::Parser::Scheduler::Spinner'=> '3.28',
+ 'TAP::Parser::Source' => '3.28',
+ 'TAP::Parser::SourceHandler'=> '3.28',
+ 'TAP::Parser::SourceHandler::Executable'=> '3.28',
+ 'TAP::Parser::SourceHandler::File'=> '3.28',
+ 'TAP::Parser::SourceHandler::Handle'=> '3.28',
+ 'TAP::Parser::SourceHandler::Perl'=> '3.28',
+ 'TAP::Parser::SourceHandler::RawTAP'=> '3.28',
+ 'TAP::Parser::Utils' => '3.28',
+ 'TAP::Parser::YAMLish::Reader'=> '3.28',
+ 'TAP::Parser::YAMLish::Writer'=> '3.28',
+ 'Term::ReadLine' => '1.13',
+ 'Test::Harness' => '3.28',
+ 'Text::Tabs' => '2013.0523',
+ 'Text::Wrap' => '2013.0523',
+ 'Thread' => '3.04',
+ 'Tie::File' => '1.00',
+ 'Time::Piece' => '1.2002',
+ 'Unicode::Collate' => '0.98',
+ 'Unicode::UCD' => '0.53',
+ 'XS::APItest' => '0.53',
+ '_charnames' => '1.37',
+ 'autodie' => '2.19',
+ 'autodie::exception' => '2.19',
+ 'autodie::exception::system'=> '2.19',
+ 'autodie::hints' => '2.19',
+ 'autodie::skip' => '2.19',
+ 'bigint' => '0.35',
+ 'charnames' => '1.38',
+ 'encoding' => '2.12',
+ 'inc::latest' => '0.4005',
+ 'mro' => '1.12',
+ 'perlfaq' => '5.0150043',
+ 're' => '0.25',
+ 'threads' => '1.87',
+ 'threads::shared' => '1.44',
+ 'utf8' => '1.12',
+ },
+ removed => {
+ }
},
- 5.015002 => {
+ 5.019002 => {
+ delta_from => 5.019001,
+ changed => {
+ 'B' => '1.44',
+ 'B::Concise' => '0.98',
+ 'B::Deparse' => '1.22',
+ 'Benchmark' => '1.17',
+ 'Class::Struct' => '0.65',
+ 'Config' => '5.019002',
+ 'DB' => '1.07',
+ 'DBM_Filter' => '0.06',
+ 'DBM_Filter::compress' => '0.03',
+ 'DBM_Filter::encode' => '0.03',
+ 'DBM_Filter::int32' => '0.03',
+ 'DBM_Filter::null' => '0.03',
+ 'DBM_Filter::utf8' => '0.03',
+ 'DB_File' => '1.829',
+ 'Data::Dumper' => '2.147',
+ 'Devel::Peek' => '1.12',
+ 'Digest::MD5' => '2.53',
+ 'Digest::SHA' => '5.85',
+ 'English' => '1.07',
+ 'Errno' => '1.19',
+ 'ExtUtils::Embed' => '1.31',
+ 'ExtUtils::Miniperl' => '1',
+ 'ExtUtils::ParseXS' => '3.21',
+ 'ExtUtils::ParseXS::Constants'=> '3.21',
+ 'ExtUtils::ParseXS::CountLines'=> '3.21',
+ 'ExtUtils::ParseXS::Eval'=> '3.19',
+ 'ExtUtils::ParseXS::Utilities'=> '3.21',
+ 'ExtUtils::Typemaps' => '3.21',
+ 'ExtUtils::Typemaps::Cmd'=> '3.21',
+ 'ExtUtils::Typemaps::InputMap'=> '3.21',
+ 'ExtUtils::Typemaps::OutputMap'=> '3.21',
+ 'ExtUtils::Typemaps::Type'=> '3.21',
+ 'ExtUtils::XSSymSet' => '1.3',
+ 'Fatal' => '2.20',
+ 'File::Basename' => '2.85',
+ 'File::Spec::VMS' => '3.43',
+ 'File::Spec::Win32' => '3.42',
+ 'Getopt::Long' => '2.41',
+ 'Getopt::Std' => '1.09',
+ 'HTTP::Tiny' => '0.034',
+ 'Hash::Util::FieldHash' => '1.12',
+ 'I18N::Langinfo' => '0.11',
+ 'IO::Socket::INET' => '1.34',
+ 'IO::Socket::UNIX' => '1.25',
+ 'IPC::Cmd' => '0.82',
+ 'MIME::Base64' => '3.14',
+ 'Module::CoreList' => '2.94',
+ 'Module::CoreList::TieHashDelta'=> '2.94',
+ 'Module::CoreList::Utils'=> '2.94',
+ 'POSIX' => '1.34',
+ 'Params::Check' => '0.38',
+ 'Parse::CPAN::Meta' => '1.4405',
+ 'Pod::Functions' => '1.07',
+ 'Pod::Functions::Functions'=> '1.07',
+ 'Pod::Html' => '1.2',
+ 'Safe' => '2.37',
+ 'Socket' => '2.010',
+ 'Storable' => '2.45',
+ 'Text::ParseWords' => '3.29',
+ 'Tie::Array' => '1.06',
+ 'Tie::Hash' => '1.05',
+ 'Tie::Scalar' => '1.03',
+ 'Time::Piece' => '1.21',
+ 'Time::Seconds' => '1.21',
+ 'XS::APItest' => '0.54',
+ 'autodie' => '2.20',
+ 'autodie::exception' => '2.20',
+ 'autodie::exception::system'=> '2.20',
+ 'autodie::hints' => '2.20',
+ 'autodie::skip' => '2.20',
+ 'base' => '2.19',
+ 'deprecate' => '0.03',
+ 'if' => '0.0603',
+ 'integer' => '1.01',
+ 'strict' => '1.08',
+ 'subs' => '1.02',
+ 'vmsish' => '1.04',
+ },
+ removed => {
+ }
},
- 5.014002 => {
- 'Shell' => '1',
+ 5.019003 => {
+ delta_from => 5.019002,
+ changed => {
+ 'B' => '1.45',
+ 'CPAN::Meta' => '2.132140',
+ 'CPAN::Meta::Converter' => '2.132140',
+ 'CPAN::Meta::Feature' => '2.132140',
+ 'CPAN::Meta::History' => '2.132140',
+ 'CPAN::Meta::Prereqs' => '2.132140',
+ 'CPAN::Meta::Spec' => '2.132140',
+ 'CPAN::Meta::Validator' => '2.132140',
+ 'Carp' => '1.31',
+ 'Carp::Heavy' => '1.31',
+ 'Compress::Raw::Bzip2' => '2.062',
+ 'Compress::Raw::Zlib' => '2.062',
+ 'Compress::Zlib' => '2.062',
+ 'Config' => '5.019003',
+ 'Config::Perl::V' => '0.19',
+ 'Cwd' => '3.44',
+ 'Data::Dumper' => '2.148',
+ 'Devel::PPPort' => '3.21',
+ 'Devel::Peek' => '1.13',
+ 'DynaLoader' => '1.19',
+ 'Encode' => '2.52',
+ 'Encode::Alias' => '2.17',
+ 'Encode::Encoding' => '2.06',
+ 'Encode::GSM0338' => '2.04',
+ 'Encode::MIME::Header' => '2.14',
+ 'Encode::Unicode' => '2.08',
+ 'English' => '1.08',
+ 'Exporter' => '5.69',
+ 'Exporter::Heavy' => '5.69',
+ 'ExtUtils::Command::MM' => '6.72',
+ 'ExtUtils::Liblist' => '6.72',
+ 'ExtUtils::Liblist::Kid'=> '6.72',
+ 'ExtUtils::MM' => '6.72',
+ 'ExtUtils::MM_AIX' => '6.72',
+ 'ExtUtils::MM_Any' => '6.72',
+ 'ExtUtils::MM_BeOS' => '6.72',
+ 'ExtUtils::MM_Cygwin' => '6.72',
+ 'ExtUtils::MM_DOS' => '6.72',
+ 'ExtUtils::MM_Darwin' => '6.72',
+ 'ExtUtils::MM_MacOS' => '6.72',
+ 'ExtUtils::MM_NW5' => '6.72',
+ 'ExtUtils::MM_OS2' => '6.72',
+ 'ExtUtils::MM_QNX' => '6.72',
+ 'ExtUtils::MM_UWIN' => '6.72',
+ 'ExtUtils::MM_Unix' => '6.72',
+ 'ExtUtils::MM_VMS' => '6.72',
+ 'ExtUtils::MM_VOS' => '6.72',
+ 'ExtUtils::MM_Win32' => '6.72',
+ 'ExtUtils::MM_Win95' => '6.72',
+ 'ExtUtils::MY' => '6.72',
+ 'ExtUtils::MakeMaker' => '6.72',
+ 'ExtUtils::MakeMaker::Config'=> '6.72',
+ 'ExtUtils::Mkbootstrap' => '6.72',
+ 'ExtUtils::Mksymlists' => '6.72',
+ 'ExtUtils::ParseXS::Eval'=> '3.21',
+ 'ExtUtils::testlib' => '6.72',
+ 'File::Spec' => '3.44',
+ 'File::Spec::Cygwin' => '3.44',
+ 'File::Spec::Epoc' => '3.44',
+ 'File::Spec::Functions' => '3.44',
+ 'File::Spec::Mac' => '3.44',
+ 'File::Spec::OS2' => '3.44',
+ 'File::Spec::Unix' => '3.44',
+ 'File::Spec::VMS' => '3.44',
+ 'File::Spec::Win32' => '3.44',
+ 'Getopt::Std' => '1.10',
+ 'IO::Compress::Adapter::Bzip2'=> '2.062',
+ 'IO::Compress::Adapter::Deflate'=> '2.062',
+ 'IO::Compress::Adapter::Identity'=> '2.062',
+ 'IO::Compress::Base' => '2.062',
+ 'IO::Compress::Base::Common'=> '2.062',
+ 'IO::Compress::Bzip2' => '2.062',
+ 'IO::Compress::Deflate' => '2.062',
+ 'IO::Compress::Gzip' => '2.062',
+ 'IO::Compress::Gzip::Constants'=> '2.062',
+ 'IO::Compress::RawDeflate'=> '2.062',
+ 'IO::Compress::Zip' => '2.062',
+ 'IO::Compress::Zip::Constants'=> '2.062',
+ 'IO::Compress::Zlib::Constants'=> '2.062',
+ 'IO::Compress::Zlib::Extra'=> '2.062',
+ 'IO::Uncompress::Adapter::Bunzip2'=> '2.062',
+ 'IO::Uncompress::Adapter::Identity'=> '2.062',
+ 'IO::Uncompress::Adapter::Inflate'=> '2.062',
+ 'IO::Uncompress::AnyInflate'=> '2.062',
+ 'IO::Uncompress::AnyUncompress'=> '2.062',
+ 'IO::Uncompress::Base' => '2.062',
+ 'IO::Uncompress::Bunzip2'=> '2.062',
+ 'IO::Uncompress::Gunzip'=> '2.062',
+ 'IO::Uncompress::Inflate'=> '2.062',
+ 'IO::Uncompress::RawInflate'=> '2.062',
+ 'IO::Uncompress::Unzip' => '2.062',
+ 'IPC::Cmd' => '0.84',
+ 'IPC::Msg' => '2.04',
+ 'IPC::Open3' => '1.15',
+ 'IPC::Semaphore' => '2.04',
+ 'IPC::SharedMem' => '2.04',
+ 'IPC::SysV' => '2.04',
+ 'List::Util' => '1.31',
+ 'List::Util::XS' => '1.31',
+ 'Math::BigFloat::Trace' => '0.36',
+ 'Math::BigInt::Trace' => '0.36',
+ 'Module::Build' => '0.4007',
+ 'Module::Build::Base' => '0.4007',
+ 'Module::Build::Compat' => '0.4007',
+ 'Module::Build::Config' => '0.4007',
+ 'Module::Build::Cookbook'=> '0.4007',
+ 'Module::Build::Dumper' => '0.4007',
+ 'Module::Build::ModuleInfo'=> '0.4007',
+ 'Module::Build::Notes' => '0.4007',
+ 'Module::Build::PPMMaker'=> '0.4007',
+ 'Module::Build::Platform::Default'=> '0.4007',
+ 'Module::Build::Platform::MacOS'=> '0.4007',
+ 'Module::Build::Platform::Unix'=> '0.4007',
+ 'Module::Build::Platform::VMS'=> '0.4007',
+ 'Module::Build::Platform::VOS'=> '0.4007',
+ 'Module::Build::Platform::Windows'=> '0.4007',
+ 'Module::Build::Platform::aix'=> '0.4007',
+ 'Module::Build::Platform::cygwin'=> '0.4007',
+ 'Module::Build::Platform::darwin'=> '0.4007',
+ 'Module::Build::Platform::os2'=> '0.4007',
+ 'Module::Build::PodParser'=> '0.4007',
+ 'Module::CoreList' => '2.97',
+ 'Module::CoreList::TieHashDelta'=> '2.97',
+ 'Module::CoreList::Utils'=> '2.97',
+ 'Net::Cmd' => '2.30',
+ 'Net::Config' => '1.12',
+ 'Net::Domain' => '2.22',
+ 'Net::FTP' => '2.78',
+ 'Net::FTP::dataconn' => '0.12',
+ 'Net::NNTP' => '2.25',
+ 'Net::Netrc' => '2.14',
+ 'Net::POP3' => '2.30',
+ 'Net::SMTP' => '2.32',
+ 'PerlIO' => '1.08',
+ 'Pod::Functions' => '1.08',
+ 'Pod::Functions::Functions'=> '1.08',
+ 'Scalar::Util' => '1.31',
+ 'Socket' => '2.011',
+ 'Storable' => '2.46',
+ 'Time::HiRes' => '1.9726',
+ 'Time::Piece' => '1.22',
+ 'Time::Seconds' => '1.22',
+ 'XS::APItest' => '0.55',
+ 'bigint' => '0.36',
+ 'bignum' => '0.36',
+ 'bigrat' => '0.36',
+ 'constant' => '1.28',
+ 'diagnostics' => '1.32',
+ 'inc::latest' => '0.4007',
+ 'mro' => '1.13',
+ 'parent' => '0.226',
+ 'utf8' => '1.13',
+ 'version' => '0.9903',
+ },
+ removed => {
+ 'Module::Build::Platform::Amiga'=> 1,
+ 'Module::Build::Platform::EBCDIC'=> 1,
+ 'Module::Build::Platform::MPEiX'=> 1,
+ 'Module::Build::Platform::RiscOS'=> 1,
+ }
},
- 5.015003 => {
+ 5.019004 => {
+ delta_from => 5.019003,
+ changed => {
+ 'B' => '1.46',
+ 'B::Concise' => '0.99',
+ 'B::Deparse' => '1.23',
+ 'CPAN' => '2.03',
+ 'CPAN::Meta' => '2.132620',
+ 'CPAN::Meta::Converter' => '2.132620',
+ 'CPAN::Meta::Feature' => '2.132620',
+ 'CPAN::Meta::History' => '2.132620',
+ 'CPAN::Meta::Prereqs' => '2.132620',
+ 'CPAN::Meta::Requirements'=> '2.123',
+ 'CPAN::Meta::Spec' => '2.132620',
+ 'CPAN::Meta::Validator' => '2.132620',
+ 'Carp' => '1.32',
+ 'Carp::Heavy' => '1.32',
+ 'Config' => '5.019004',
+ 'Data::Dumper' => '2.149',
+ 'Devel::Peek' => '1.14',
+ 'DynaLoader' => '1.20',
+ 'Encode' => '2.55',
+ 'Encode::Alias' => '2.18',
+ 'Encode::CN::HZ' => '2.07',
+ 'Encode::Encoder' => '2.03',
+ 'Encode::Encoding' => '2.07',
+ 'Encode::GSM0338' => '2.05',
+ 'Encode::Guess' => '2.06',
+ 'Encode::JP::JIS7' => '2.05',
+ 'Encode::KR::2022_KR' => '2.03',
+ 'Encode::MIME::Header' => '2.15',
+ 'Encode::MIME::Header::ISO_2022_JP'=> '1.04',
+ 'Encode::Unicode' => '2.09',
+ 'Encode::Unicode::UTF7' => '2.08',
+ 'Errno' => '1.20',
+ 'Exporter' => '5.70',
+ 'Exporter::Heavy' => '5.70',
+ 'ExtUtils::CBuilder' => '0.280212',
+ 'ExtUtils::CBuilder::Base'=> '0.280212',
+ 'ExtUtils::CBuilder::Platform::Unix'=> '0.280212',
+ 'ExtUtils::CBuilder::Platform::VMS'=> '0.280212',
+ 'ExtUtils::CBuilder::Platform::Windows'=> '0.280212',
+ 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280212',
+ 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280212',
+ 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280212',
+ 'ExtUtils::CBuilder::Platform::aix'=> '0.280212',
+ 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280212',
+ 'ExtUtils::CBuilder::Platform::darwin'=> '0.280212',
+ 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280212',
+ 'ExtUtils::CBuilder::Platform::os2'=> '0.280212',
+ 'ExtUtils::Command' => '1.18',
+ 'ExtUtils::Command::MM' => '6.76',
+ 'ExtUtils::Liblist' => '6.76',
+ 'ExtUtils::Liblist::Kid'=> '6.76',
+ 'ExtUtils::MM' => '6.76',
+ 'ExtUtils::MM_AIX' => '6.76',
+ 'ExtUtils::MM_Any' => '6.76',
+ 'ExtUtils::MM_BeOS' => '6.76',
+ 'ExtUtils::MM_Cygwin' => '6.76',
+ 'ExtUtils::MM_DOS' => '6.76',
+ 'ExtUtils::MM_Darwin' => '6.76',
+ 'ExtUtils::MM_MacOS' => '6.76',
+ 'ExtUtils::MM_NW5' => '6.76',
+ 'ExtUtils::MM_OS2' => '6.76',
+ 'ExtUtils::MM_QNX' => '6.76',
+ 'ExtUtils::MM_UWIN' => '6.76',
+ 'ExtUtils::MM_Unix' => '6.76',
+ 'ExtUtils::MM_VMS' => '6.76',
+ 'ExtUtils::MM_VOS' => '6.76',
+ 'ExtUtils::MM_Win32' => '6.76',
+ 'ExtUtils::MM_Win95' => '6.76',
+ 'ExtUtils::MY' => '6.76',
+ 'ExtUtils::MakeMaker' => '6.76',
+ 'ExtUtils::MakeMaker::Config'=> '6.76',
+ 'ExtUtils::Mkbootstrap' => '6.76',
+ 'ExtUtils::Mksymlists' => '6.76',
+ 'ExtUtils::ParseXS' => '3.23',
+ 'ExtUtils::ParseXS::Constants'=> '3.23',
+ 'ExtUtils::ParseXS::CountLines'=> '3.23',
+ 'ExtUtils::ParseXS::Eval'=> '3.23',
+ 'ExtUtils::ParseXS::Utilities'=> '3.23',
+ 'ExtUtils::Typemaps' => '3.23',
+ 'ExtUtils::Typemaps::Cmd'=> '3.23',
+ 'ExtUtils::Typemaps::InputMap'=> '3.23',
+ 'ExtUtils::Typemaps::OutputMap'=> '3.23',
+ 'ExtUtils::Typemaps::Type'=> '3.23',
+ 'ExtUtils::testlib' => '6.76',
+ 'Fatal' => '2.21',
+ 'File::Copy' => '2.28',
+ 'File::Find' => '1.25',
+ 'File::Glob' => '1.21',
+ 'FileCache' => '1.09',
+ 'HTTP::Tiny' => '0.035',
+ 'Hash::Util::FieldHash' => '1.13',
+ 'I18N::LangTags' => '0.40',
+ 'IO' => '1.29',
+ 'IO::Socket' => '1.37',
+ 'IPC::Open3' => '1.16',
+ 'JSON::PP' => '2.27202_01',
+ 'List::Util' => '1.32',
+ 'List::Util::XS' => '1.32',
+ 'Locale::Codes' => '3.27',
+ 'Locale::Codes::Constants'=> '3.27',
+ 'Locale::Codes::Country'=> '3.27',
+ 'Locale::Codes::Country_Codes'=> '3.27',
+ 'Locale::Codes::Country_Retired'=> '3.27',
+ 'Locale::Codes::Currency'=> '3.27',
+ 'Locale::Codes::Currency_Codes'=> '3.27',
+ 'Locale::Codes::Currency_Retired'=> '3.27',
+ 'Locale::Codes::LangExt'=> '3.27',
+ 'Locale::Codes::LangExt_Codes'=> '3.27',
+ 'Locale::Codes::LangExt_Retired'=> '3.27',
+ 'Locale::Codes::LangFam'=> '3.27',
+ 'Locale::Codes::LangFam_Codes'=> '3.27',
+ 'Locale::Codes::LangFam_Retired'=> '3.27',
+ 'Locale::Codes::LangVar'=> '3.27',
+ 'Locale::Codes::LangVar_Codes'=> '3.27',
+ 'Locale::Codes::LangVar_Retired'=> '3.27',
+ 'Locale::Codes::Language'=> '3.27',
+ 'Locale::Codes::Language_Codes'=> '3.27',
+ 'Locale::Codes::Language_Retired'=> '3.27',
+ 'Locale::Codes::Script' => '3.27',
+ 'Locale::Codes::Script_Codes'=> '3.27',
+ 'Locale::Codes::Script_Retired'=> '3.27',
+ 'Locale::Country' => '3.27',
+ 'Locale::Currency' => '3.27',
+ 'Locale::Language' => '3.27',
+ 'Locale::Script' => '3.27',
+ 'Math::BigFloat' => '1.9991',
+ 'Math::BigInt' => '1.9993',
+ 'Math::BigInt::FastCalc'=> '0.31',
+ 'Module::CoreList' => '2.99',
+ 'Module::CoreList::TieHashDelta'=> '2.99',
+ 'Module::CoreList::Utils'=> '2.99',
+ 'Module::Load::Conditional'=> '0.58',
+ 'Module::Metadata' => '1.000018',
+ 'Opcode' => '1.26',
+ 'POSIX' => '1.35',
+ 'Parse::CPAN::Meta' => '1.4407',
+ 'Perl::OSType' => '1.005',
+ 'Pod::Html' => '1.21',
+ 'Scalar::Util' => '1.32',
+ 'Socket' => '2.012',
+ 'Storable' => '2.47',
+ 'Term::ReadLine' => '1.14',
+ 'Test::Builder' => '0.98_06',
+ 'Test::Builder::Module' => '0.98_06',
+ 'Test::More' => '0.98_06',
+ 'Test::Simple' => '0.98_06',
+ 'Time::Piece' => '1.23',
+ 'Time::Seconds' => '1.23',
+ 'Unicode::Collate' => '0.99',
+ 'Unicode::UCD' => '0.54',
+ 'XS::APItest' => '0.56',
+ 'XS::Typemap' => '0.11',
+ '_charnames' => '1.39',
+ 'autodie' => '2.21',
+ 'autodie::exception' => '2.21',
+ 'autodie::exception::system'=> '2.21',
+ 'autodie::hints' => '2.21',
+ 'autodie::skip' => '2.21',
+ 'charnames' => '1.39',
+ 'diagnostics' => '1.33',
+ 'mro' => '1.14',
+ 'parent' => '0.228',
+ 'perlfaq' => '5.0150044',
+ 're' => '0.26',
+ 'version' => '0.9904',
+ 'warnings' => '1.19',
+ },
+ removed => {
+ }
},
- 5.015004 => {
+ 5.019005 => {
+ delta_from => 5.019004,
+ changed => {
+ 'App::Prove' => '3.29',
+ 'App::Prove::State' => '3.29',
+ 'App::Prove::State::Result'=> '3.29',
+ 'App::Prove::State::Result::Test'=> '3.29',
+ 'CPAN::Meta' => '2.132830',
+ 'CPAN::Meta::Converter' => '2.132830',
+ 'CPAN::Meta::Feature' => '2.132830',
+ 'CPAN::Meta::History' => '2.132830',
+ 'CPAN::Meta::Prereqs' => '2.132830',
+ 'CPAN::Meta::Requirements'=> '2.125',
+ 'CPAN::Meta::Spec' => '2.132830',
+ 'CPAN::Meta::Validator' => '2.132830',
+ 'CPAN::Meta::YAML' => '0.010',
+ 'Config' => '5.019005',
+ 'Cwd' => '3.45',
+ 'ExtUtils::Command::MM' => '6.80',
+ 'ExtUtils::Install' => '1.61',
+ 'ExtUtils::Liblist' => '6.80',
+ 'ExtUtils::Liblist::Kid'=> '6.80',
+ 'ExtUtils::MM' => '6.80',
+ 'ExtUtils::MM_AIX' => '6.80',
+ 'ExtUtils::MM_Any' => '6.80',
+ 'ExtUtils::MM_BeOS' => '6.80',
+ 'ExtUtils::MM_Cygwin' => '6.80',
+ 'ExtUtils::MM_DOS' => '6.80',
+ 'ExtUtils::MM_Darwin' => '6.80',
+ 'ExtUtils::MM_MacOS' => '6.80',
+ 'ExtUtils::MM_NW5' => '6.80',
+ 'ExtUtils::MM_OS2' => '6.80',
+ 'ExtUtils::MM_QNX' => '6.80',
+ 'ExtUtils::MM_UWIN' => '6.80',
+ 'ExtUtils::MM_Unix' => '6.80',
+ 'ExtUtils::MM_VMS' => '6.80',
+ 'ExtUtils::MM_VOS' => '6.80',
+ 'ExtUtils::MM_Win32' => '6.80',
+ 'ExtUtils::MM_Win95' => '6.80',
+ 'ExtUtils::MY' => '6.80',
+ 'ExtUtils::MakeMaker' => '6.80',
+ 'ExtUtils::MakeMaker::Config'=> '6.80',
+ 'ExtUtils::Mkbootstrap' => '6.80',
+ 'ExtUtils::Mksymlists' => '6.80',
+ 'ExtUtils::testlib' => '6.80',
+ 'Fatal' => '2.22',
+ 'File::Fetch' => '0.44',
+ 'File::Glob' => '1.22',
+ 'File::Spec' => '3.45',
+ 'File::Spec::Cygwin' => '3.45',
+ 'File::Spec::Epoc' => '3.45',
+ 'File::Spec::Functions' => '3.45',
+ 'File::Spec::Mac' => '3.45',
+ 'File::Spec::OS2' => '3.45',
+ 'File::Spec::Unix' => '3.45',
+ 'File::Spec::VMS' => '3.45',
+ 'File::Spec::Win32' => '3.45',
+ 'File::Temp' => '0.2304',
+ 'Getopt::Long' => '2.42',
+ 'HTTP::Tiny' => '0.036',
+ 'IPC::Cmd' => '0.84_01',
+ 'JSON::PP' => '2.27203',
+ 'List::Util' => '1.35',
+ 'List::Util::XS' => '1.35',
+ 'Module::CoreList' => '3.00',
+ 'Module::CoreList::TieHashDelta'=> '3.00',
+ 'Module::CoreList::Utils'=> '3.00',
+ 'Module::Metadata' => '1.000019',
+ 'Parse::CPAN::Meta' => '1.4409',
+ 'Perl::OSType' => '1.006',
+ 'PerlIO::scalar' => '0.17',
+ 'Pod::Man' => '2.28',
+ 'Pod::Text' => '3.18',
+ 'Pod::Text::Termcap' => '2.08',
+ 'Scalar::Util' => '1.35',
+ 'TAP::Base' => '3.29',
+ 'TAP::Formatter::Base' => '3.29',
+ 'TAP::Formatter::Color' => '3.29',
+ 'TAP::Formatter::Console'=> '3.29',
+ 'TAP::Formatter::Console::ParallelSession'=> '3.29',
+ 'TAP::Formatter::Console::Session'=> '3.29',
+ 'TAP::Formatter::File' => '3.29',
+ 'TAP::Formatter::File::Session'=> '3.29',
+ 'TAP::Formatter::Session'=> '3.29',
+ 'TAP::Harness' => '3.29',
+ 'TAP::Harness::Env' => '3.29',
+ 'TAP::Object' => '3.29',
+ 'TAP::Parser' => '3.29',
+ 'TAP::Parser::Aggregator'=> '3.29',
+ 'TAP::Parser::Grammar' => '3.29',
+ 'TAP::Parser::Iterator' => '3.29',
+ 'TAP::Parser::Iterator::Array'=> '3.29',
+ 'TAP::Parser::Iterator::Process'=> '3.29',
+ 'TAP::Parser::Iterator::Stream'=> '3.29',
+ 'TAP::Parser::IteratorFactory'=> '3.29',
+ 'TAP::Parser::Multiplexer'=> '3.29',
+ 'TAP::Parser::Result' => '3.29',
+ 'TAP::Parser::Result::Bailout'=> '3.29',
+ 'TAP::Parser::Result::Comment'=> '3.29',
+ 'TAP::Parser::Result::Plan'=> '3.29',
+ 'TAP::Parser::Result::Pragma'=> '3.29',
+ 'TAP::Parser::Result::Test'=> '3.29',
+ 'TAP::Parser::Result::Unknown'=> '3.29',
+ 'TAP::Parser::Result::Version'=> '3.29',
+ 'TAP::Parser::Result::YAML'=> '3.29',
+ 'TAP::Parser::ResultFactory'=> '3.29',
+ 'TAP::Parser::Scheduler'=> '3.29',
+ 'TAP::Parser::Scheduler::Job'=> '3.29',
+ 'TAP::Parser::Scheduler::Spinner'=> '3.29',
+ 'TAP::Parser::Source' => '3.29',
+ 'TAP::Parser::SourceHandler'=> '3.29',
+ 'TAP::Parser::SourceHandler::Executable'=> '3.29',
+ 'TAP::Parser::SourceHandler::File'=> '3.29',
+ 'TAP::Parser::SourceHandler::Handle'=> '3.29',
+ 'TAP::Parser::SourceHandler::Perl'=> '3.29',
+ 'TAP::Parser::SourceHandler::RawTAP'=> '3.29',
+ 'TAP::Parser::YAMLish::Reader'=> '3.29',
+ 'TAP::Parser::YAMLish::Writer'=> '3.29',
+ 'Test::Builder' => '0.99',
+ 'Test::Builder::Module' => '0.99',
+ 'Test::Builder::Tester' => '1.23_002',
+ 'Test::Builder::Tester::Color'=> '1.23_002',
+ 'Test::Harness' => '3.29',
+ 'Test::More' => '0.99',
+ 'Test::Simple' => '0.99',
+ 'Unicode' => '6.3.0',
+ 'Unicode::Normalize' => '1.17',
+ 'Unicode::UCD' => '0.55',
+ 'attributes' => '0.22',
+ 'autodie' => '2.22',
+ 'autodie::exception' => '2.22',
+ 'autodie::exception::system'=> '2.22',
+ 'autodie::hints' => '2.22',
+ 'autodie::skip' => '2.22',
+ 'feature' => '1.34',
+ 'threads' => '1.89',
+ 'warnings' => '1.20',
+ },
+ removed => {
+ 'TAP::Parser::Utils' => 1,
+ }
},
- 5.015005 => {
+ 5.019006 => {
+ delta_from => 5.019005,
+ changed => {
+ 'App::Prove' => '3.30',
+ 'App::Prove::State' => '3.30',
+ 'App::Prove::State::Result'=> '3.30',
+ 'App::Prove::State::Result::Test'=> '3.30',
+ 'Archive::Tar' => '1.96',
+ 'Archive::Tar::Constant'=> '1.96',
+ 'Archive::Tar::File' => '1.96',
+ 'AutoLoader' => '5.74',
+ 'B' => '1.47',
+ 'B::Concise' => '0.991',
+ 'B::Debug' => '1.19',
+ 'B::Deparse' => '1.24',
+ 'Benchmark' => '1.18',
+ 'Compress::Raw::Bzip2' => '2.063',
+ 'Compress::Raw::Zlib' => '2.063',
+ 'Compress::Zlib' => '2.063',
+ 'Config' => '5.019006',
+ 'DB_File' => '1.831',
+ 'Devel::Peek' => '1.15',
+ 'DynaLoader' => '1.21',
+ 'Errno' => '1.20_01',
+ 'ExtUtils::Command::MM' => '6.82',
+ 'ExtUtils::Liblist' => '6.82',
+ 'ExtUtils::Liblist::Kid'=> '6.82',
+ 'ExtUtils::MM' => '6.82',
+ 'ExtUtils::MM_AIX' => '6.82',
+ 'ExtUtils::MM_Any' => '6.82',
+ 'ExtUtils::MM_BeOS' => '6.82',
+ 'ExtUtils::MM_Cygwin' => '6.82',
+ 'ExtUtils::MM_DOS' => '6.82',
+ 'ExtUtils::MM_Darwin' => '6.82',
+ 'ExtUtils::MM_MacOS' => '6.82',
+ 'ExtUtils::MM_NW5' => '6.82',
+ 'ExtUtils::MM_OS2' => '6.82',
+ 'ExtUtils::MM_QNX' => '6.82',
+ 'ExtUtils::MM_UWIN' => '6.82',
+ 'ExtUtils::MM_Unix' => '6.82',
+ 'ExtUtils::MM_VMS' => '6.82',
+ 'ExtUtils::MM_VOS' => '6.82',
+ 'ExtUtils::MM_Win32' => '6.82',
+ 'ExtUtils::MM_Win95' => '6.82',
+ 'ExtUtils::MY' => '6.82',
+ 'ExtUtils::MakeMaker' => '6.82',
+ 'ExtUtils::MakeMaker::Config'=> '6.82',
+ 'ExtUtils::Mkbootstrap' => '6.82',
+ 'ExtUtils::Mksymlists' => '6.82',
+ 'ExtUtils::testlib' => '6.82',
+ 'File::DosGlob' => '1.12',
+ 'File::Find' => '1.26',
+ 'File::Glob' => '1.23',
+ 'HTTP::Tiny' => '0.038',
+ 'IO' => '1.30',
+ 'IO::Compress::Adapter::Bzip2'=> '2.063',
+ 'IO::Compress::Adapter::Deflate'=> '2.063',
+ 'IO::Compress::Adapter::Identity'=> '2.063',
+ 'IO::Compress::Base' => '2.063',
+ 'IO::Compress::Base::Common'=> '2.063',
+ 'IO::Compress::Bzip2' => '2.063',
+ 'IO::Compress::Deflate' => '2.063',
+ 'IO::Compress::Gzip' => '2.063',
+ 'IO::Compress::Gzip::Constants'=> '2.063',
+ 'IO::Compress::RawDeflate'=> '2.063',
+ 'IO::Compress::Zip' => '2.063',
+ 'IO::Compress::Zip::Constants'=> '2.063',
+ 'IO::Compress::Zlib::Constants'=> '2.063',
+ 'IO::Compress::Zlib::Extra'=> '2.063',
+ 'IO::Select' => '1.22',
+ 'IO::Uncompress::Adapter::Bunzip2'=> '2.063',
+ 'IO::Uncompress::Adapter::Identity'=> '2.063',
+ 'IO::Uncompress::Adapter::Inflate'=> '2.063',
+ 'IO::Uncompress::AnyInflate'=> '2.063',
+ 'IO::Uncompress::AnyUncompress'=> '2.063',
+ 'IO::Uncompress::Base' => '2.063',
+ 'IO::Uncompress::Bunzip2'=> '2.063',
+ 'IO::Uncompress::Gunzip'=> '2.063',
+ 'IO::Uncompress::Inflate'=> '2.063',
+ 'IO::Uncompress::RawInflate'=> '2.063',
+ 'IO::Uncompress::Unzip' => '2.063',
+ 'IPC::Cmd' => '0.90',
+ 'Locale::Maketext' => '1.25',
+ 'Module::Build' => '0.4202',
+ 'Module::Build::Base' => '0.4202',
+ 'Module::Build::Compat' => '0.4202',
+ 'Module::Build::Config' => '0.4202',
+ 'Module::Build::Cookbook'=> '0.4202',
+ 'Module::Build::Dumper' => '0.4202',
+ 'Module::Build::ModuleInfo'=> '0.4202',
+ 'Module::Build::Notes' => '0.4202',
+ 'Module::Build::PPMMaker'=> '0.4202',
+ 'Module::Build::Platform::Default'=> '0.4202',
+ 'Module::Build::Platform::MacOS'=> '0.4202',
+ 'Module::Build::Platform::Unix'=> '0.4202',
+ 'Module::Build::Platform::VMS'=> '0.4202',
+ 'Module::Build::Platform::VOS'=> '0.4202',
+ 'Module::Build::Platform::Windows'=> '0.4202',
+ 'Module::Build::Platform::aix'=> '0.4202',
+ 'Module::Build::Platform::cygwin'=> '0.4202',
+ 'Module::Build::Platform::darwin'=> '0.4202',
+ 'Module::Build::Platform::os2'=> '0.4202',
+ 'Module::Build::PodParser'=> '0.4202',
+ 'Module::CoreList' => '3.01',
+ 'Module::CoreList::TieHashDelta'=> '3.01',
+ 'Module::CoreList::Utils'=> '3.01',
+ 'Opcode' => '1.27',
+ 'POSIX' => '1.36',
+ 'Package::Constants' => '0.04',
+ 'PerlIO::scalar' => '0.18',
+ 'PerlIO::via' => '0.13',
+ 'SDBM_File' => '1.10',
+ 'Socket' => '2.013',
+ 'TAP::Base' => '3.30',
+ 'TAP::Formatter::Base' => '3.30',
+ 'TAP::Formatter::Color' => '3.30',
+ 'TAP::Formatter::Console'=> '3.30',
+ 'TAP::Formatter::Console::ParallelSession'=> '3.30',
+ 'TAP::Formatter::Console::Session'=> '3.30',
+ 'TAP::Formatter::File' => '3.30',
+ 'TAP::Formatter::File::Session'=> '3.30',
+ 'TAP::Formatter::Session'=> '3.30',
+ 'TAP::Harness' => '3.30',
+ 'TAP::Harness::Env' => '3.30',
+ 'TAP::Object' => '3.30',
+ 'TAP::Parser' => '3.30',
+ 'TAP::Parser::Aggregator'=> '3.30',
+ 'TAP::Parser::Grammar' => '3.30',
+ 'TAP::Parser::Iterator' => '3.30',
+ 'TAP::Parser::Iterator::Array'=> '3.30',
+ 'TAP::Parser::Iterator::Process'=> '3.30',
+ 'TAP::Parser::Iterator::Stream'=> '3.30',
+ 'TAP::Parser::IteratorFactory'=> '3.30',
+ 'TAP::Parser::Multiplexer'=> '3.30',
+ 'TAP::Parser::Result' => '3.30',
+ 'TAP::Parser::Result::Bailout'=> '3.30',
+ 'TAP::Parser::Result::Comment'=> '3.30',
+ 'TAP::Parser::Result::Plan'=> '3.30',
+ 'TAP::Parser::Result::Pragma'=> '3.30',
+ 'TAP::Parser::Result::Test'=> '3.30',
+ 'TAP::Parser::Result::Unknown'=> '3.30',
+ 'TAP::Parser::Result::Version'=> '3.30',
+ 'TAP::Parser::Result::YAML'=> '3.30',
+ 'TAP::Parser::ResultFactory'=> '3.30',
+ 'TAP::Parser::Scheduler'=> '3.30',
+ 'TAP::Parser::Scheduler::Job'=> '3.30',
+ 'TAP::Parser::Scheduler::Spinner'=> '3.30',
+ 'TAP::Parser::Source' => '3.30',
+ 'TAP::Parser::SourceHandler'=> '3.30',
+ 'TAP::Parser::SourceHandler::Executable'=> '3.30',
+ 'TAP::Parser::SourceHandler::File'=> '3.30',
+ 'TAP::Parser::SourceHandler::Handle'=> '3.30',
+ 'TAP::Parser::SourceHandler::Perl'=> '3.30',
+ 'TAP::Parser::SourceHandler::RawTAP'=> '3.30',
+ 'TAP::Parser::YAMLish::Reader'=> '3.30',
+ 'TAP::Parser::YAMLish::Writer'=> '3.30',
+ 'Term::Cap' => '1.15',
+ 'Test::Builder' => '1.001002',
+ 'Test::Builder::Module' => '1.001002',
+ 'Test::Harness' => '3.30',
+ 'Test::More' => '1.001002',
+ 'Test::Simple' => '1.001002',
+ 'Tie::StdHandle' => '4.4',
+ 'Unicode::Collate' => '1.02',
+ 'Unicode::Collate::CJK::Korean'=> '1.02',
+ 'Unicode::Collate::Locale'=> '1.02',
+ 'XS::APItest' => '0.57',
+ 'XS::Typemap' => '0.12',
+ 'arybase' => '0.07',
+ 'bignum' => '0.37',
+ 'constant' => '1.29',
+ 'fields' => '2.17',
+ 'inc::latest' => '0.4202',
+ 'threads' => '1.90',
+ 'threads::shared' => '1.45',
+ },
+ removed => {
+ }
},
- 5.015006 => {
+ 5.019007 => {
+ delta_from => 5.019006,
+ changed => {
+ 'CGI' => '3.64',
+ 'CGI::Apache' => '1.02',
+ 'CGI::Carp' => '3.64',
+ 'CGI::Cookie' => '1.31',
+ 'CGI::Fast' => '1.10',
+ 'CGI::Pretty' => '3.64',
+ 'CGI::Push' => '1.06',
+ 'CGI::Switch' => '1.02',
+ 'CGI::Util' => '3.64',
+ 'CPAN::Meta' => '2.133380',
+ 'CPAN::Meta::Converter' => '2.133380',
+ 'CPAN::Meta::Feature' => '2.133380',
+ 'CPAN::Meta::History' => '2.133380',
+ 'CPAN::Meta::Prereqs' => '2.133380',
+ 'CPAN::Meta::Spec' => '2.133380',
+ 'CPAN::Meta::Validator' => '2.133380',
+ 'Config' => '5.019007',
+ 'Data::Dumper' => '2.150',
+ 'DynaLoader' => '1.22',
+ 'ExtUtils::Command::MM' => '6.84',
+ 'ExtUtils::Liblist' => '6.84',
+ 'ExtUtils::Liblist::Kid'=> '6.84',
+ 'ExtUtils::MM' => '6.84',
+ 'ExtUtils::MM_AIX' => '6.84',
+ 'ExtUtils::MM_Any' => '6.84',
+ 'ExtUtils::MM_BeOS' => '6.84',
+ 'ExtUtils::MM_Cygwin' => '6.84',
+ 'ExtUtils::MM_DOS' => '6.84',
+ 'ExtUtils::MM_Darwin' => '6.84',
+ 'ExtUtils::MM_MacOS' => '6.84',
+ 'ExtUtils::MM_NW5' => '6.84',
+ 'ExtUtils::MM_OS2' => '6.84',
+ 'ExtUtils::MM_QNX' => '6.84',
+ 'ExtUtils::MM_UWIN' => '6.84',
+ 'ExtUtils::MM_Unix' => '6.84',
+ 'ExtUtils::MM_VMS' => '6.84',
+ 'ExtUtils::MM_VOS' => '6.84',
+ 'ExtUtils::MM_Win32' => '6.84',
+ 'ExtUtils::MM_Win95' => '6.84',
+ 'ExtUtils::MY' => '6.84',
+ 'ExtUtils::MakeMaker' => '6.84',
+ 'ExtUtils::MakeMaker::Config'=> '6.84',
+ 'ExtUtils::Mkbootstrap' => '6.84',
+ 'ExtUtils::Mksymlists' => '6.84',
+ 'ExtUtils::testlib' => '6.84',
+ 'File::Fetch' => '0.46',
+ 'HTTP::Tiny' => '0.039',
+ 'Locale::Codes' => '3.28',
+ 'Locale::Codes::Constants'=> '3.28',
+ 'Locale::Codes::Country'=> '3.28',
+ 'Locale::Codes::Country_Codes'=> '3.28',
+ 'Locale::Codes::Country_Retired'=> '3.28',
+ 'Locale::Codes::Currency'=> '3.28',
+ 'Locale::Codes::Currency_Codes'=> '3.28',
+ 'Locale::Codes::Currency_Retired'=> '3.28',
+ 'Locale::Codes::LangExt'=> '3.28',
+ 'Locale::Codes::LangExt_Codes'=> '3.28',
+ 'Locale::Codes::LangExt_Retired'=> '3.28',
+ 'Locale::Codes::LangFam'=> '3.28',
+ 'Locale::Codes::LangFam_Codes'=> '3.28',
+ 'Locale::Codes::LangFam_Retired'=> '3.28',
+ 'Locale::Codes::LangVar'=> '3.28',
+ 'Locale::Codes::LangVar_Codes'=> '3.28',
+ 'Locale::Codes::LangVar_Retired'=> '3.28',
+ 'Locale::Codes::Language'=> '3.28',
+ 'Locale::Codes::Language_Codes'=> '3.28',
+ 'Locale::Codes::Language_Retired'=> '3.28',
+ 'Locale::Codes::Script' => '3.28',
+ 'Locale::Codes::Script_Codes'=> '3.28',
+ 'Locale::Codes::Script_Retired'=> '3.28',
+ 'Locale::Country' => '3.28',
+ 'Locale::Currency' => '3.28',
+ 'Locale::Language' => '3.28',
+ 'Locale::Script' => '3.28',
+ 'Module::Build' => '0.4203',
+ 'Module::Build::Base' => '0.4203',
+ 'Module::Build::Compat' => '0.4203',
+ 'Module::Build::Config' => '0.4203',
+ 'Module::Build::Cookbook'=> '0.4203',
+ 'Module::Build::Dumper' => '0.4203',
+ 'Module::Build::ModuleInfo'=> '0.4203',
+ 'Module::Build::Notes' => '0.4203',
+ 'Module::Build::PPMMaker'=> '0.4203',
+ 'Module::Build::Platform::Default'=> '0.4203',
+ 'Module::Build::Platform::MacOS'=> '0.4203',
+ 'Module::Build::Platform::Unix'=> '0.4203',
+ 'Module::Build::Platform::VMS'=> '0.4203',
+ 'Module::Build::Platform::VOS'=> '0.4203',
+ 'Module::Build::Platform::Windows'=> '0.4203',
+ 'Module::Build::Platform::aix'=> '0.4203',
+ 'Module::Build::Platform::cygwin'=> '0.4203',
+ 'Module::Build::Platform::darwin'=> '0.4203',
+ 'Module::Build::Platform::os2'=> '0.4203',
+ 'Module::Build::PodParser'=> '0.4203',
+ 'Module::CoreList' => '3.02',
+ 'Module::CoreList::TieHashDelta'=> '3.02',
+ 'Module::CoreList::Utils'=> '3.02',
+ 'POSIX' => '1.37',
+ 'PathTools::Cwd' => '3.45',
+ 'PerlIO::encoding' => '0.17',
+ 'PerlIO::via' => '0.14',
+ 'SDBM_File' => '1.11',
+ 'Storable' => '2.48',
+ 'Time::Piece' => '1.24',
+ 'Time::Seconds' => '1.24',
+ 'Unicode::Collate' => '1.04',
+ 'Win32' => '0.48',
+ 'XS::APItest' => '0.58',
+ 'base' => '2.20',
+ 'constant' => '1.30',
+ 'inc::latest' => '0.4203',
+ 'threads' => '1.91',
+ },
+ removed => {
+ }
},
- 5.015007 => {
+);
+
+sub is_core
+{
+ my $module = shift;
+ $module = shift if eval { $module->isa(__PACKAGE__) } && @_ > 0 && defined($_[0]) && $_[0] =~ /^\w/;
+ my ($module_version, $perl_version);
+
+ $module_version = shift if @_ > 0;
+ $perl_version = @_ > 0 ? shift : $^V;
+
+ my $first_release = first_release($module);
+
+ return 0 if !defined($first_release) || $first_release > $perl_version;
+
+ my $final_release = removed_from($module);
+
+ return 0 if defined($final_release) && $perl_version > $final_release;
+
+ # If a minimum version of the module was specified:
+ # Step through all perl releases ($prn)
+ # so we can find what version of the module
+ # was included in the specified version of perl.
+ # On the way if we pass the required module version, we can
+ # short-circuit and return true
+ if (defined($module_version)) {
+ # The Perl releases aren't a linear sequence, but a tree. We need to build the path
+ # of releases from 5 to the specified release, and follow the module's version(s)
+ # along that path.
+ my @releases = ($perl_version);
+ my $rel = $perl_version;
+ while (defined($rel)) {
+ $rel = $delta{$rel}->{delta_from};
+ unshift(@releases, $rel) if defined($rel);
+ }
+ RELEASE:
+ foreach my $prn (@releases) {
+ next RELEASE if $prn <= $first_release;
+ last RELEASE if $prn > $perl_version;
+ next unless defined(my $next_module_version
+ = $delta{$prn}->{changed}->{$module});
+ return 1 if $next_module_version >= $module_version;
+ }
+ return 0;
+ }
+
+ return 1 if !defined($final_release);
+
+ return $perl_version <= $final_release;
+}
+
+for my $version (sort { $a <=> $b } keys %delta) {
+ my $data = $delta{$version};
+
+ tie %{$version{$version}}, 'Module::CoreList::TieHashDelta',
+ $data->{changed}, $data->{removed},
+ $data->{delta_from} ? $version{$data->{delta_from}} : undef;
+}
+
+%deprecated = (
+ 5.011 => {
+ changed => { map { $_ => 1 } qw/
+ Class::ISA
+ Pod::Plainer
+ Shell
+ Switch
+ /},
},
- 5.015008 => {
+ 5.011001 => { delta_from => 5.011 },
+ 5.011002 => { delta_from => 5.011001 },
+ 5.011003 => { delta_from => 5.011002 },
+ 5.011004 => { delta_from => 5.011003 },
+ 5.011005 => { delta_from => 5.011004 },
+
+ 5.012 => { delta_from => 5.011005 },
+ 5.012001 => { delta_from => 5.012 },
+ 5.012002 => { delta_from => 5.012001 },
+ 5.012003 => { delta_from => 5.012002 },
+ 5.012004 => { delta_from => 5.012003 },
+ 5.012005 => { delta_from => 5.012004 },
+
+ 5.013 => { delta_from => 5.012005 },
+ 5.013001 => {
+ delta_from => 5.013,
+ removed => { map { $_ => 1 } qw/
+ Class::ISA
+ Pod::Plainer
+ Switch
+ /},
},
- 5.015009 => {
+ 5.013002 => { delta_from => 5.013001 },
+ 5.013003 => { delta_from => 5.013002 },
+ 5.013004 => { delta_from => 5.013003 },
+ 5.013005 => { delta_from => 5.013004 },
+ 5.013006 => { delta_from => 5.013005 },
+ 5.013007 => { delta_from => 5.013006 },
+ 5.013008 => { delta_from => 5.013007 },
+ 5.013009 => { delta_from => 5.013008 },
+ 5.01301 => { delta_from => 5.013009 },
+ 5.013011 => { delta_from => 5.01301 },
+
+ 5.014 => { delta_from => 5.013011 },
+ 5.014001 => { delta_from => 5.014 },
+ 5.014002 => { delta_from => 5.014001 },
+ 5.014003 => { delta_from => 5.014002 },
+ 5.014004 => { delta_from => 5.014003 },
+
+ 5.015 => {
+ delta_from => 5.014004,
+ removed => { Shell => 1 },
},
- 5.016000 => {
+ 5.015001 => { delta_from => 5.015 },
+ 5.015002 => { delta_from => 5.015001 },
+ 5.015003 => { delta_from => 5.015002 },
+ 5.015004 => { delta_from => 5.015003 },
+ 5.015005 => { delta_from => 5.015004 },
+ 5.015006 => { delta_from => 5.015005 },
+ 5.015007 => { delta_from => 5.015006 },
+ 5.015008 => { delta_from => 5.015007 },
+ 5.015009 => { delta_from => 5.015008 },
+
+ 5.016 => { delta_from => 5.015009 },
+ 5.016001 => { delta_from => 5.016 },
+ 5.016002 => { delta_from => 5.016001 },
+ 5.016003 => { delta_from => 5.016002 },
+
+ 5.017 => { delta_from => 5.016003 },
+ 5.017001 => { delta_from => 5.017 },
+ 5.017002 => { delta_from => 5.017001 },
+ 5.017003 => { delta_from => 5.017002 },
+ 5.017004 => { delta_from => 5.017003 },
+ 5.017005 => { delta_from => 5.017004 },
+ 5.017006 => { delta_from => 5.017005 },
+ 5.017007 => { delta_from => 5.017006 },
+ 5.017008 => {
+ delta_from => 5.017007,
+ changed => { 'Pod::LaTeX' => 1 },
},
- 5.016001 => {
+ 5.017009 => {
+ delta_from => 5.017008,
+ changed => { map { $_ => 1 } qw/
+ Archive::Extract
+ B::Lint
+ B::Lint::Debug
+ CPANPLUS
+ CPANPLUS::Backend
+ CPANPLUS::Backend::RV
+ CPANPLUS::Config
+ CPANPLUS::Config::HomeEnv
+ CPANPLUS::Configure
+ CPANPLUS::Configure::Setup
+ CPANPLUS::Dist
+ CPANPLUS::Dist::Autobundle
+ CPANPLUS::Dist::Base
+ CPANPLUS::Dist::Build
+ CPANPLUS::Dist::Build::Constants
+ CPANPLUS::Dist::MM
+ CPANPLUS::Dist::Sample
+ CPANPLUS::Error
+ CPANPLUS::Internals
+ CPANPLUS::Internals::Constants
+ CPANPLUS::Internals::Constants::Report
+ CPANPLUS::Internals::Extract
+ CPANPLUS::Internals::Fetch
+ CPANPLUS::Internals::Report
+ CPANPLUS::Internals::Search
+ CPANPLUS::Internals::Source
+ CPANPLUS::Internals::Source::Memory
+ CPANPLUS::Internals::Source::SQLite
+ CPANPLUS::Internals::Source::SQLite::Tie
+ CPANPLUS::Internals::Utils
+ CPANPLUS::Internals::Utils::Autoflush
+ CPANPLUS::Module
+ CPANPLUS::Module::Author
+ CPANPLUS::Module::Author::Fake
+ CPANPLUS::Module::Checksums
+ CPANPLUS::Module::Fake
+ CPANPLUS::Module::Signature
+ CPANPLUS::Selfupdate
+ CPANPLUS::Shell
+ CPANPLUS::Shell::Classic
+ CPANPLUS::Shell::Default
+ CPANPLUS::Shell::Default::Plugins::CustomSource
+ CPANPLUS::Shell::Default::Plugins::Remote
+ CPANPLUS::Shell::Default::Plugins::Source
+ Devel::InnerPackage
+ File::CheckTree
+ Log::Message
+ Log::Message::Config
+ Log::Message::Handlers
+ Log::Message::Item
+ Log::Message::Simple
+ Module::Pluggable
+ Module::Pluggable::Object
+ Object::Accessor
+ Term::UI
+ Term::UI::History
+ Text::Soundex
+ /},
},
- 5.016002 => {
+ 5.01701 => { delta_from => 5.017009 },
+ 5.017011 => { delta_from => 5.01701 },
+ 5.017012 => { delta_from => 5.017011 },
+
+ 5.018 => { delta_from => 5.017012 },
+ 5.018001 => {
+ delta_from => 5.018,
+ changed => {
+ },
+ removed => {
+ }
},
- 5.016003 => {
+ 5.018002 => {
+ delta_from => 5.018001,
+ changed => {
+ },
+ removed => {
+ }
},
- 5.017000 => {
+
+
+ 5.019 => {
+ delta_from => 5.018,
+ changed => { 'Module::Build' => 1 },
+ removed => { map { $_ => 1 } qw/
+ Archive::Extract
+ B::Lint
+ B::Lint::Debug
+ CPANPLUS
+ CPANPLUS::Backend
+ CPANPLUS::Backend::RV
+ CPANPLUS::Config
+ CPANPLUS::Config::HomeEnv
+ CPANPLUS::Configure
+ CPANPLUS::Configure::Setup
+ CPANPLUS::Dist
+ CPANPLUS::Dist::Autobundle
+ CPANPLUS::Dist::Base
+ CPANPLUS::Dist::Build
+ CPANPLUS::Dist::Build::Constants
+ CPANPLUS::Dist::MM
+ CPANPLUS::Dist::Sample
+ CPANPLUS::Error
+ CPANPLUS::Internals
+ CPANPLUS::Internals::Constants
+ CPANPLUS::Internals::Constants::Report
+ CPANPLUS::Internals::Extract
+ CPANPLUS::Internals::Fetch
+ CPANPLUS::Internals::Report
+ CPANPLUS::Internals::Search
+ CPANPLUS::Internals::Source
+ CPANPLUS::Internals::Source::Memory
+ CPANPLUS::Internals::Source::SQLite
+ CPANPLUS::Internals::Source::SQLite::Tie
+ CPANPLUS::Internals::Utils
+ CPANPLUS::Internals::Utils::Autoflush
+ CPANPLUS::Module
+ CPANPLUS::Module::Author
+ CPANPLUS::Module::Author::Fake
+ CPANPLUS::Module::Checksums
+ CPANPLUS::Module::Fake
+ CPANPLUS::Module::Signature
+ CPANPLUS::Selfupdate
+ CPANPLUS::Shell
+ CPANPLUS::Shell::Classic
+ CPANPLUS::Shell::Default
+ CPANPLUS::Shell::Default::Plugins::CustomSource
+ CPANPLUS::Shell::Default::Plugins::Remote
+ CPANPLUS::Shell::Default::Plugins::Source
+ Devel::InnerPackage
+ File::CheckTree
+ Log::Message
+ Log::Message::Config
+ Log::Message::Handlers
+ Log::Message::Item
+ Log::Message::Simple
+ Module::Pluggable
+ Module::Pluggable::Object
+ Object::Accessor
+ Pod::LaTeX
+ Term::UI
+ Term::UI::History
+ Text::Soundex
+ /}
},
- 5.017001 => {
+ 5.019001 => {
+ delta_from => 5.019,
+ changed => {
+ },
+ removed => {
+ }
},
- 5.017002 => {
+ 5.019002 => {
+ delta_from => 5.019001,
+ changed => {
+ },
+ removed => {
+ }
},
- 5.017003 => {
+ 5.019003 => {
+ delta_from => 5.019002,
+ changed => {
+ },
+ removed => {
+ }
},
- 5.017004 => {
+ 5.019004 => {
+ delta_from => 5.019003,
+ changed => {
+ 'Module::Build::Base' => '1',
+ 'Module::Build::Compat' => '1',
+ 'Module::Build::Config' => '1',
+ 'Module::Build::ConfigData'=> '1',
+ 'Module::Build::Cookbook'=> '1',
+ 'Module::Build::Dumper' => '1',
+ 'Module::Build::ModuleInfo'=> '1',
+ 'Module::Build::Notes' => '1',
+ 'Module::Build::PPMMaker'=> '1',
+ 'Module::Build::Platform::Default'=> '1',
+ 'Module::Build::Platform::MacOS'=> '1',
+ 'Module::Build::Platform::Unix'=> '1',
+ 'Module::Build::Platform::VMS'=> '1',
+ 'Module::Build::Platform::VOS'=> '1',
+ 'Module::Build::Platform::Windows'=> '1',
+ 'Module::Build::Platform::aix'=> '1',
+ 'Module::Build::Platform::cygwin'=> '1',
+ 'Module::Build::Platform::darwin'=> '1',
+ 'Module::Build::Platform::os2'=> '1',
+ 'Module::Build::PodParser'=> '1',
+ 'Module::Build::Version'=> '1',
+ 'Module::Build::YAML' => '1',
+ 'inc::latest' => '1',
+ },
+ removed => {
+ }
},
- 5.014003 => {
- 'Shell' => '1',
+ 5.019005 => {
+ delta_from => 5.019004,
+ changed => {
+ },
+ removed => {
+ }
},
- 5.017005 => {
+ 5.019006 => {
+ delta_from => 5.019005,
+ changed => {
+ 'Package::Constants' => '1',
+ },
+ removed => {
+ }
},
);
+for my $version (sort { $a <=> $b } keys %deprecated) {
+ my $data = $deprecated{$version};
+
+ tie %{ $deprecated{$version} }, 'Module::CoreList::TieHashDelta',
+ $data->{changed}, $data->{removed},
+ $data->{delta_from} ? $deprecated{ $data->{delta_from} } : undef;
+}
+
%upstream = (
'App::Cpan' => 'cpan',
'App::Prove' => 'cpan',
'App::Prove::State' => 'cpan',
'App::Prove::State::Result'=> 'cpan',
'App::Prove::State::Result::Test'=> 'cpan',
- 'Archive::Extract' => 'cpan',
'Archive::Tar' => 'cpan',
'Archive::Tar::Constant'=> 'cpan',
'Archive::Tar::File' => 'cpan',
- 'Attribute::Handlers' => 'blead',
'AutoLoader' => 'cpan',
'AutoSplit' => 'cpan',
- 'B::Concise' => 'blead',
'B::Debug' => 'cpan',
- 'B::Deparse' => 'blead',
- 'B::Lint' => 'blead',
- 'B::Lint::Debug' => 'blead',
'CGI' => 'cpan',
'CGI::Apache' => 'cpan',
'CGI::Carp' => 'cpan',
@@ -7546,55 +9690,11 @@ for my $version (sort { $a <=> $b } keys %delta) {
'CPAN::Tarzip' => 'cpan',
'CPAN::URL' => 'cpan',
'CPAN::Version' => 'cpan',
- 'CPANPLUS' => 'cpan',
- 'CPANPLUS::Backend' => 'cpan',
- 'CPANPLUS::Backend::RV' => 'cpan',
- 'CPANPLUS::Config' => 'cpan',
- 'CPANPLUS::Config::HomeEnv'=> 'cpan',
- 'CPANPLUS::Configure' => 'cpan',
- 'CPANPLUS::Configure::Setup'=> 'cpan',
- 'CPANPLUS::Dist' => 'cpan',
- 'CPANPLUS::Dist::Autobundle'=> 'cpan',
- 'CPANPLUS::Dist::Base' => 'cpan',
- 'CPANPLUS::Dist::Build' => 'cpan',
- 'CPANPLUS::Dist::Build::Constants'=> 'cpan',
- 'CPANPLUS::Dist::MM' => 'cpan',
- 'CPANPLUS::Dist::Sample'=> 'cpan',
- 'CPANPLUS::Error' => 'cpan',
- 'CPANPLUS::Internals' => 'cpan',
- 'CPANPLUS::Internals::Constants'=> 'cpan',
- 'CPANPLUS::Internals::Constants::Report'=> 'cpan',
- 'CPANPLUS::Internals::Extract'=> 'cpan',
- 'CPANPLUS::Internals::Fetch'=> 'cpan',
- 'CPANPLUS::Internals::Report'=> 'cpan',
- 'CPANPLUS::Internals::Search'=> 'cpan',
- 'CPANPLUS::Internals::Source'=> 'cpan',
- 'CPANPLUS::Internals::Source::Memory'=> 'cpan',
- 'CPANPLUS::Internals::Source::SQLite'=> 'cpan',
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> 'cpan',
- 'CPANPLUS::Internals::Utils'=> 'cpan',
- 'CPANPLUS::Internals::Utils::Autoflush'=> 'cpan',
- 'CPANPLUS::Module' => 'cpan',
- 'CPANPLUS::Module::Author'=> 'cpan',
- 'CPANPLUS::Module::Author::Fake'=> 'cpan',
- 'CPANPLUS::Module::Checksums'=> 'cpan',
- 'CPANPLUS::Module::Fake'=> 'cpan',
- 'CPANPLUS::Module::Signature'=> 'cpan',
- 'CPANPLUS::Selfupdate' => 'cpan',
- 'CPANPLUS::Shell' => 'cpan',
- 'CPANPLUS::Shell::Classic'=> 'cpan',
- 'CPANPLUS::Shell::Default'=> 'cpan',
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> 'cpan',
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> 'cpan',
- 'CPANPLUS::Shell::Default::Plugins::Source'=> 'cpan',
- 'Carp' => 'blead',
- 'Carp::Heavy' => 'blead',
'Compress::Raw::Bzip2' => 'cpan',
'Compress::Raw::Zlib' => 'cpan',
'Compress::Zlib' => 'cpan',
- 'Cwd' => 'blead',
+ 'Config::Perl::V' => 'cpan',
'DB_File' => 'cpan',
- 'Devel::InnerPackage' => 'cpan',
'Devel::PPPort' => 'cpan',
'Digest' => 'cpan',
'Digest::MD5' => 'cpan',
@@ -7625,79 +9725,42 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Encode::TW' => 'cpan',
'Encode::Unicode' => 'cpan',
'Encode::Unicode::UTF7' => 'cpan',
- 'Exporter' => 'blead',
- 'Exporter::Heavy' => 'blead',
- 'ExtUtils::CBuilder' => 'blead',
- 'ExtUtils::CBuilder::Base'=> 'blead',
- 'ExtUtils::CBuilder::Platform::Unix'=> 'blead',
- 'ExtUtils::CBuilder::Platform::VMS'=> 'blead',
- 'ExtUtils::CBuilder::Platform::Windows'=> 'blead',
- 'ExtUtils::CBuilder::Platform::Windows::BCC'=> 'blead',
- 'ExtUtils::CBuilder::Platform::Windows::GCC'=> 'blead',
- 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> 'blead',
- 'ExtUtils::CBuilder::Platform::aix'=> 'blead',
- 'ExtUtils::CBuilder::Platform::cygwin'=> 'blead',
- 'ExtUtils::CBuilder::Platform::darwin'=> 'blead',
- 'ExtUtils::CBuilder::Platform::dec_osf'=> 'blead',
- 'ExtUtils::CBuilder::Platform::os2'=> 'blead',
- 'ExtUtils::Command::MM' => 'first-come',
- 'ExtUtils::Constant' => undef,
- 'ExtUtils::Constant::Base'=> undef,
- 'ExtUtils::Constant::ProxySubs'=> undef,
- 'ExtUtils::Constant::Utils'=> undef,
- 'ExtUtils::Constant::XS'=> undef,
- 'ExtUtils::Install' => 'blead',
- 'ExtUtils::Installed' => 'blead',
- 'ExtUtils::Liblist' => 'first-come',
- 'ExtUtils::Liblist::Kid'=> 'first-come',
- 'ExtUtils::MM' => 'first-come',
- 'ExtUtils::MM_AIX' => 'first-come',
- 'ExtUtils::MM_Any' => 'first-come',
- 'ExtUtils::MM_BeOS' => 'first-come',
- 'ExtUtils::MM_Cygwin' => 'first-come',
- 'ExtUtils::MM_DOS' => 'first-come',
- 'ExtUtils::MM_Darwin' => 'first-come',
- 'ExtUtils::MM_MacOS' => 'first-come',
- 'ExtUtils::MM_NW5' => 'first-come',
- 'ExtUtils::MM_OS2' => 'first-come',
- 'ExtUtils::MM_QNX' => 'first-come',
- 'ExtUtils::MM_UWIN' => 'first-come',
- 'ExtUtils::MM_Unix' => 'first-come',
- 'ExtUtils::MM_VMS' => 'first-come',
- 'ExtUtils::MM_VOS' => 'first-come',
- 'ExtUtils::MM_Win32' => 'first-come',
- 'ExtUtils::MM_Win95' => 'first-come',
- 'ExtUtils::MY' => 'first-come',
- 'ExtUtils::MakeMaker' => 'first-come',
- 'ExtUtils::MakeMaker::Config'=> 'first-come',
- 'ExtUtils::Mkbootstrap' => 'first-come',
- 'ExtUtils::Mksymlists' => 'first-come',
- 'ExtUtils::Packlist' => 'blead',
- 'ExtUtils::ParseXS' => 'blead',
- 'ExtUtils::ParseXS::Constants'=> 'blead',
- 'ExtUtils::ParseXS::CountLines'=> 'blead',
- 'ExtUtils::ParseXS::Utilities'=> 'blead',
- 'ExtUtils::Typemaps' => 'blead',
- 'ExtUtils::Typemaps::Cmd'=> 'blead',
- 'ExtUtils::Typemaps::InputMap'=> 'blead',
- 'ExtUtils::Typemaps::OutputMap'=> 'blead',
- 'ExtUtils::Typemaps::Type'=> 'blead',
- 'ExtUtils::testlib' => 'first-come',
+ 'ExtUtils::Command::MM' => 'cpan',
+ 'ExtUtils::Constant' => 'cpan',
+ 'ExtUtils::Constant::Base'=> 'cpan',
+ 'ExtUtils::Constant::ProxySubs'=> 'cpan',
+ 'ExtUtils::Constant::Utils'=> 'cpan',
+ 'ExtUtils::Constant::XS'=> 'cpan',
+ 'ExtUtils::Liblist' => 'cpan',
+ 'ExtUtils::Liblist::Kid'=> 'cpan',
+ 'ExtUtils::MM' => 'cpan',
+ 'ExtUtils::MM_AIX' => 'cpan',
+ 'ExtUtils::MM_Any' => 'cpan',
+ 'ExtUtils::MM_BeOS' => 'cpan',
+ 'ExtUtils::MM_Cygwin' => 'cpan',
+ 'ExtUtils::MM_DOS' => 'cpan',
+ 'ExtUtils::MM_Darwin' => 'cpan',
+ 'ExtUtils::MM_MacOS' => 'cpan',
+ 'ExtUtils::MM_NW5' => 'cpan',
+ 'ExtUtils::MM_OS2' => 'cpan',
+ 'ExtUtils::MM_QNX' => 'cpan',
+ 'ExtUtils::MM_UWIN' => 'cpan',
+ 'ExtUtils::MM_Unix' => 'cpan',
+ 'ExtUtils::MM_VMS' => 'cpan',
+ 'ExtUtils::MM_VOS' => 'cpan',
+ 'ExtUtils::MM_Win32' => 'cpan',
+ 'ExtUtils::MM_Win95' => 'cpan',
+ 'ExtUtils::MY' => 'cpan',
+ 'ExtUtils::MakeMaker' => 'cpan',
+ 'ExtUtils::MakeMaker::Config'=> 'cpan',
+ 'ExtUtils::Mkbootstrap' => 'cpan',
+ 'ExtUtils::Mksymlists' => 'cpan',
+ 'ExtUtils::testlib' => 'cpan',
'Fatal' => 'cpan',
'File::Fetch' => 'cpan',
'File::GlobMapper' => 'cpan',
- 'File::Path' => undef,
- 'File::Spec' => 'blead',
- 'File::Spec::Cygwin' => 'blead',
- 'File::Spec::Epoc' => 'blead',
- 'File::Spec::Functions' => 'blead',
- 'File::Spec::Mac' => 'blead',
- 'File::Spec::OS2' => 'blead',
- 'File::Spec::Unix' => 'blead',
- 'File::Spec::VMS' => 'blead',
- 'File::Spec::Win32' => 'blead',
+ 'File::Path' => 'cpan',
'File::Temp' => 'cpan',
- 'Filter::Simple' => 'blead',
'Filter::Util::Call' => 'cpan',
'Getopt::Long' => 'cpan',
'HTTP::Tiny' => 'cpan',
@@ -7726,7 +9789,7 @@ for my $version (sort { $a <=> $b } keys %delta) {
'IO::Uncompress::Inflate'=> 'cpan',
'IO::Uncompress::RawInflate'=> 'cpan',
'IO::Uncompress::Unzip' => 'cpan',
- 'IO::Zlib' => undef,
+ 'IO::Zlib' => 'cpan',
'IPC::Cmd' => 'cpan',
'IPC::Msg' => 'cpan',
'IPC::Semaphore' => 'cpan',
@@ -7762,26 +9825,10 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Locale::Country' => 'cpan',
'Locale::Currency' => 'cpan',
'Locale::Language' => 'cpan',
- 'Locale::Maketext' => 'blead',
- 'Locale::Maketext::Guts'=> 'blead',
- 'Locale::Maketext::GutsLoader'=> 'blead',
'Locale::Maketext::Simple'=> 'cpan',
'Locale::Script' => 'cpan',
- 'Log::Message' => 'cpan',
- 'Log::Message::Config' => 'cpan',
- 'Log::Message::Handlers'=> 'cpan',
- 'Log::Message::Item' => 'cpan',
- 'Log::Message::Simple' => 'cpan',
'MIME::Base64' => 'cpan',
'MIME::QuotedPrint' => 'cpan',
- 'Math::BigFloat' => 'blead',
- 'Math::BigFloat::Trace' => 'blead',
- 'Math::BigInt' => 'blead',
- 'Math::BigInt::Calc' => 'blead',
- 'Math::BigInt::CalcEmu' => 'blead',
- 'Math::BigInt::FastCalc'=> 'blead',
- 'Math::BigInt::Trace' => 'blead',
- 'Math::BigRat' => 'blead',
'Math::Complex' => 'cpan',
'Math::Trig' => 'cpan',
'Memoize' => 'cpan',
@@ -7802,12 +9849,8 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Module::Build::ModuleInfo'=> 'cpan',
'Module::Build::Notes' => 'cpan',
'Module::Build::PPMMaker'=> 'cpan',
- 'Module::Build::Platform::Amiga'=> 'cpan',
'Module::Build::Platform::Default'=> 'cpan',
- 'Module::Build::Platform::EBCDIC'=> 'cpan',
- 'Module::Build::Platform::MPEiX'=> 'cpan',
'Module::Build::Platform::MacOS'=> 'cpan',
- 'Module::Build::Platform::RiscOS'=> 'cpan',
'Module::Build::Platform::Unix'=> 'cpan',
'Module::Build::Platform::VMS'=> 'cpan',
'Module::Build::Platform::VOS'=> 'cpan',
@@ -7819,41 +9862,34 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Module::Build::PodParser'=> 'cpan',
'Module::Build::Version'=> 'cpan',
'Module::Build::YAML' => 'cpan',
- 'Module::CoreList' => 'blead',
- 'Module::CoreList::TieHashDelta'=> 'blead',
'Module::Load' => 'cpan',
'Module::Load::Conditional'=> 'cpan',
'Module::Loaded' => 'cpan',
'Module::Metadata' => 'cpan',
- 'Module::Pluggable' => 'cpan',
- 'Module::Pluggable::Object'=> 'cpan',
'NEXT' => 'cpan',
- 'Net::Cmd' => undef,
- 'Net::Config' => undef,
- 'Net::Domain' => undef,
- 'Net::FTP' => undef,
- 'Net::FTP::A' => undef,
- 'Net::FTP::E' => undef,
- 'Net::FTP::I' => undef,
- 'Net::FTP::L' => undef,
- 'Net::FTP::dataconn' => undef,
- 'Net::NNTP' => undef,
- 'Net::Netrc' => undef,
- 'Net::POP3' => undef,
- 'Net::Ping' => 'blead',
- 'Net::SMTP' => undef,
- 'Net::Time' => undef,
- 'Object::Accessor' => 'cpan',
+ 'Net::Cmd' => 'cpan',
+ 'Net::Config' => 'cpan',
+ 'Net::Domain' => 'cpan',
+ 'Net::FTP' => 'cpan',
+ 'Net::FTP::A' => 'cpan',
+ 'Net::FTP::E' => 'cpan',
+ 'Net::FTP::I' => 'cpan',
+ 'Net::FTP::L' => 'cpan',
+ 'Net::FTP::dataconn' => 'cpan',
+ 'Net::NNTP' => 'cpan',
+ 'Net::Netrc' => 'cpan',
+ 'Net::POP3' => 'cpan',
+ 'Net::SMTP' => 'cpan',
+ 'Net::Time' => 'cpan',
'Package::Constants' => 'cpan',
'Params::Check' => 'cpan',
'Parse::CPAN::Meta' => 'cpan',
'Perl::OSType' => 'cpan',
- 'PerlIO::via::QuotedPrint'=> undef,
+ 'PerlIO::via::QuotedPrint'=> 'cpan',
'Pod::Checker' => 'cpan',
- 'Pod::Escapes' => undef,
+ 'Pod::Escapes' => 'cpan',
'Pod::Find' => 'cpan',
'Pod::InputObjects' => 'cpan',
- 'Pod::LaTeX' => undef,
'Pod::Man' => 'cpan',
'Pod::ParseLink' => 'cpan',
'Pod::ParseUtils' => 'cpan',
@@ -7906,11 +9942,8 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Pod::Text::Overstrike' => 'cpan',
'Pod::Text::Termcap' => 'cpan',
'Pod::Usage' => 'cpan',
- 'Safe' => 'blead',
'Scalar::Util' => 'cpan',
- 'SelfLoader' => 'blead',
'Socket' => 'cpan',
- 'Storable' => 'blead',
'Sys::Syslog' => 'cpan',
'Sys::Syslog::Win32' => 'cpan',
'TAP::Base' => 'cpan',
@@ -7923,6 +9956,7 @@ for my $version (sort { $a <=> $b } keys %delta) {
'TAP::Formatter::File::Session'=> 'cpan',
'TAP::Formatter::Session'=> 'cpan',
'TAP::Harness' => 'cpan',
+ 'TAP::Harness::Env' => 'cpan',
'TAP::Object' => 'cpan',
'TAP::Parser' => 'cpan',
'TAP::Parser::Aggregator'=> 'cpan',
@@ -7953,13 +9987,10 @@ for my $version (sort { $a <=> $b } keys %delta) {
'TAP::Parser::SourceHandler::Handle'=> 'cpan',
'TAP::Parser::SourceHandler::Perl'=> 'cpan',
'TAP::Parser::SourceHandler::RawTAP'=> 'cpan',
- 'TAP::Parser::Utils' => 'cpan',
'TAP::Parser::YAMLish::Reader'=> 'cpan',
'TAP::Parser::YAMLish::Writer'=> 'cpan',
'Term::ANSIColor' => 'cpan',
- 'Term::Cap' => undef,
- 'Term::UI' => 'cpan',
- 'Term::UI::History' => 'cpan',
+ 'Term::Cap' => 'cpan',
'Test' => 'cpan',
'Test::Builder' => 'cpan',
'Test::Builder::Module' => 'cpan',
@@ -7969,58 +10000,37 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Test::More' => 'cpan',
'Test::Simple' => 'cpan',
'Text::Balanced' => 'cpan',
- 'Text::ParseWords' => undef,
- 'Text::Soundex' => undef,
+ 'Text::ParseWords' => 'cpan',
'Text::Tabs' => 'cpan',
'Text::Wrap' => 'cpan',
- 'Thread::Queue' => 'blead',
- 'Thread::Semaphore' => 'blead',
- 'Tie::File' => 'blead',
'Tie::RefHash' => 'cpan',
'Time::HiRes' => 'cpan',
'Time::Local' => 'cpan',
- 'Time::Piece' => undef,
- 'Time::Seconds' => undef,
- 'Unicode::Collate' => 'first-come',
- 'Unicode::Collate::CJK::Big5'=> 'first-come',
- 'Unicode::Collate::CJK::GB2312'=> 'first-come',
- 'Unicode::Collate::CJK::JISX0208'=> 'first-come',
- 'Unicode::Collate::CJK::Korean'=> 'first-come',
- 'Unicode::Collate::CJK::Pinyin'=> 'first-come',
- 'Unicode::Collate::CJK::Stroke'=> 'first-come',
- 'Unicode::Collate::Locale'=> 'first-come',
- 'Unicode::Normalize' => 'first-come',
- 'Unicode::UCD' => 'blead',
- 'VMS::DCLsym' => undef,
- 'VMS::Filespec' => undef,
- 'VMS::Stdio' => undef,
+ 'Time::Piece' => 'cpan',
+ 'Time::Seconds' => 'cpan',
+ 'Unicode::Collate' => 'cpan',
+ 'Unicode::Collate::CJK::Big5'=> 'cpan',
+ 'Unicode::Collate::CJK::GB2312'=> 'cpan',
+ 'Unicode::Collate::CJK::JISX0208'=> 'cpan',
+ 'Unicode::Collate::CJK::Korean'=> 'cpan',
+ 'Unicode::Collate::CJK::Pinyin'=> 'cpan',
+ 'Unicode::Collate::CJK::Stroke'=> 'cpan',
+ 'Unicode::Collate::CJK::Zhuyin'=> 'cpan',
+ 'Unicode::Collate::Locale'=> 'cpan',
+ 'Unicode::Normalize' => 'cpan',
'Win32' => 'cpan',
'Win32API::File' => 'cpan',
'Win32API::File::ExtUtils::Myconst2perl'=> 'cpan',
- 'Win32CORE' => undef,
- 'XSLoader' => undef,
'autodie' => 'cpan',
'autodie::exception' => 'cpan',
'autodie::exception::system'=> 'cpan',
'autodie::hints' => 'cpan',
- 'base' => 'blead',
- 'bigint' => 'blead',
- 'bignum' => 'blead',
- 'bigrat' => 'blead',
- 'constant' => 'blead',
+ 'autodie::skip' => 'cpan',
'encoding' => 'cpan',
- 'encoding::warnings' => undef,
- 'fields' => 'blead',
- 'if' => 'blead',
+ 'encoding::warnings' => 'cpan',
'inc::latest' => 'cpan',
- 'lib' => 'blead',
- 'parent' => undef,
+ 'parent' => 'cpan',
'perlfaq' => 'cpan',
- 'threads' => 'blead',
- 'threads::shared' => 'blead',
- 'version' => undef,
- 'warnings' => 'blead',
- 'warnings::register' => 'blead',
);
%bug_tracker = (
@@ -8029,16 +10039,10 @@ for my $version (sort { $a <=> $b } keys %delta) {
'App::Prove::State' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'App::Prove::State::Result'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'App::Prove::State::Result::Test'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
- 'Archive::Extract' => undef,
'Archive::Tar' => undef,
'Archive::Tar::Constant'=> undef,
'Archive::Tar::File' => undef,
- 'Attribute::Handlers' => undef,
- 'B::Concise' => undef,
'B::Debug' => undef,
- 'B::Deparse' => undef,
- 'B::Lint' => undef,
- 'B::Lint::Debug' => undef,
'CGI' => undef,
'CGI::Apache' => undef,
'CGI::Carp' => undef,
@@ -8072,15 +10076,15 @@ for my $version (sort { $a <=> $b } keys %delta) {
'CPAN::InfoObj' => undef,
'CPAN::Kwalify' => undef,
'CPAN::LWP::UserAgent' => undef,
- 'CPAN::Meta' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
- 'CPAN::Meta::Converter' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
- 'CPAN::Meta::Feature' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
- 'CPAN::Meta::History' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
- 'CPAN::Meta::Prereqs' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
- 'CPAN::Meta::Requirements'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta-Requirements',
- 'CPAN::Meta::Spec' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
- 'CPAN::Meta::Validator' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta',
- 'CPAN::Meta::YAML' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Meta-YAML',
+ 'CPAN::Meta' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
+ 'CPAN::Meta::Converter' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
+ 'CPAN::Meta::Feature' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
+ 'CPAN::Meta::History' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
+ 'CPAN::Meta::Prereqs' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
+ 'CPAN::Meta::Requirements'=> 'https://github.com/dagolden/CPAN-Meta-Requirements/issues',
+ 'CPAN::Meta::Spec' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
+ 'CPAN::Meta::Validator' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
+ 'CPAN::Meta::YAML' => 'https://github.com/dagolden/CPAN-Meta-YAML/issues',
'CPAN::Mirrors' => undef,
'CPAN::Module' => undef,
'CPAN::Nox' => undef,
@@ -8090,55 +10094,11 @@ for my $version (sort { $a <=> $b } keys %delta) {
'CPAN::Tarzip' => undef,
'CPAN::URL' => undef,
'CPAN::Version' => undef,
- 'CPANPLUS' => undef,
- 'CPANPLUS::Backend' => undef,
- 'CPANPLUS::Backend::RV' => undef,
- 'CPANPLUS::Config' => undef,
- 'CPANPLUS::Config::HomeEnv'=> undef,
- 'CPANPLUS::Configure' => undef,
- 'CPANPLUS::Configure::Setup'=> undef,
- 'CPANPLUS::Dist' => undef,
- 'CPANPLUS::Dist::Autobundle'=> undef,
- 'CPANPLUS::Dist::Base' => undef,
- 'CPANPLUS::Dist::Build' => undef,
- 'CPANPLUS::Dist::Build::Constants'=> undef,
- 'CPANPLUS::Dist::MM' => undef,
- 'CPANPLUS::Dist::Sample'=> undef,
- 'CPANPLUS::Error' => undef,
- 'CPANPLUS::Internals' => undef,
- 'CPANPLUS::Internals::Constants'=> undef,
- 'CPANPLUS::Internals::Constants::Report'=> undef,
- 'CPANPLUS::Internals::Extract'=> undef,
- 'CPANPLUS::Internals::Fetch'=> undef,
- 'CPANPLUS::Internals::Report'=> undef,
- 'CPANPLUS::Internals::Search'=> undef,
- 'CPANPLUS::Internals::Source'=> undef,
- 'CPANPLUS::Internals::Source::Memory'=> undef,
- 'CPANPLUS::Internals::Source::SQLite'=> undef,
- 'CPANPLUS::Internals::Source::SQLite::Tie'=> undef,
- 'CPANPLUS::Internals::Utils'=> undef,
- 'CPANPLUS::Internals::Utils::Autoflush'=> undef,
- 'CPANPLUS::Module' => undef,
- 'CPANPLUS::Module::Author'=> undef,
- 'CPANPLUS::Module::Author::Fake'=> undef,
- 'CPANPLUS::Module::Checksums'=> undef,
- 'CPANPLUS::Module::Fake'=> undef,
- 'CPANPLUS::Module::Signature'=> undef,
- 'CPANPLUS::Selfupdate' => undef,
- 'CPANPLUS::Shell' => undef,
- 'CPANPLUS::Shell::Classic'=> undef,
- 'CPANPLUS::Shell::Default'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::CustomSource'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Remote'=> undef,
- 'CPANPLUS::Shell::Default::Plugins::Source'=> undef,
- 'Carp' => undef,
- 'Carp::Heavy' => undef,
'Compress::Raw::Bzip2' => undef,
'Compress::Raw::Zlib' => undef,
'Compress::Zlib' => undef,
- 'Cwd' => undef,
+ 'Config::Perl::V' => undef,
'DB_File' => undef,
- 'Devel::InnerPackage' => undef,
'Devel::PPPort' => undef,
'Digest' => undef,
'Digest::MD5' => undef,
@@ -8169,82 +10129,45 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Encode::TW' => undef,
'Encode::Unicode' => undef,
'Encode::Unicode::UTF7' => undef,
- 'Exporter' => undef,
- 'Exporter::Heavy' => undef,
- 'ExtUtils::CBuilder' => undef,
- 'ExtUtils::CBuilder::Base'=> undef,
- 'ExtUtils::CBuilder::Platform::Unix'=> undef,
- 'ExtUtils::CBuilder::Platform::VMS'=> undef,
- 'ExtUtils::CBuilder::Platform::Windows'=> undef,
- 'ExtUtils::CBuilder::Platform::Windows::BCC'=> undef,
- 'ExtUtils::CBuilder::Platform::Windows::GCC'=> undef,
- 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> undef,
- 'ExtUtils::CBuilder::Platform::aix'=> undef,
- 'ExtUtils::CBuilder::Platform::cygwin'=> undef,
- 'ExtUtils::CBuilder::Platform::darwin'=> undef,
- 'ExtUtils::CBuilder::Platform::dec_osf'=> undef,
- 'ExtUtils::CBuilder::Platform::os2'=> undef,
- 'ExtUtils::Command::MM' => undef,
+ 'ExtUtils::Command::MM' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
'ExtUtils::Constant' => undef,
'ExtUtils::Constant::Base'=> undef,
'ExtUtils::Constant::ProxySubs'=> undef,
'ExtUtils::Constant::Utils'=> undef,
'ExtUtils::Constant::XS'=> undef,
- 'ExtUtils::Install' => undef,
- 'ExtUtils::Installed' => undef,
- 'ExtUtils::Liblist' => undef,
- 'ExtUtils::Liblist::Kid'=> undef,
- 'ExtUtils::MM' => undef,
- 'ExtUtils::MM_AIX' => undef,
- 'ExtUtils::MM_Any' => undef,
- 'ExtUtils::MM_BeOS' => undef,
- 'ExtUtils::MM_Cygwin' => undef,
- 'ExtUtils::MM_DOS' => undef,
- 'ExtUtils::MM_Darwin' => undef,
- 'ExtUtils::MM_MacOS' => undef,
- 'ExtUtils::MM_NW5' => undef,
- 'ExtUtils::MM_OS2' => undef,
- 'ExtUtils::MM_QNX' => undef,
- 'ExtUtils::MM_UWIN' => undef,
- 'ExtUtils::MM_Unix' => undef,
- 'ExtUtils::MM_VMS' => undef,
- 'ExtUtils::MM_VOS' => undef,
- 'ExtUtils::MM_Win32' => undef,
- 'ExtUtils::MM_Win95' => undef,
- 'ExtUtils::MY' => undef,
- 'ExtUtils::MakeMaker' => undef,
- 'ExtUtils::MakeMaker::Config'=> undef,
- 'ExtUtils::Mkbootstrap' => undef,
- 'ExtUtils::Mksymlists' => undef,
- 'ExtUtils::Packlist' => undef,
- 'ExtUtils::ParseXS' => undef,
- 'ExtUtils::ParseXS::Constants'=> undef,
- 'ExtUtils::ParseXS::CountLines'=> undef,
- 'ExtUtils::ParseXS::Utilities'=> undef,
- 'ExtUtils::Typemaps' => undef,
- 'ExtUtils::Typemaps::Cmd'=> undef,
- 'ExtUtils::Typemaps::InputMap'=> undef,
- 'ExtUtils::Typemaps::OutputMap'=> undef,
- 'ExtUtils::Typemaps::Type'=> undef,
- 'ExtUtils::testlib' => undef,
+ 'ExtUtils::Liblist' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::Liblist::Kid'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_AIX' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_Any' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_BeOS' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_Cygwin' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_DOS' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_Darwin' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_MacOS' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_NW5' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_OS2' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_QNX' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_UWIN' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_Unix' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_VMS' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_VOS' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_Win32' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MM_Win95' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MY' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MakeMaker' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::MakeMaker::Config'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::Mkbootstrap' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::Mksymlists' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
+ 'ExtUtils::testlib' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker',
'Fatal' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
'File::Fetch' => undef,
'File::GlobMapper' => undef,
'File::Path' => undef,
- 'File::Spec' => undef,
- 'File::Spec::Cygwin' => undef,
- 'File::Spec::Epoc' => undef,
- 'File::Spec::Functions' => undef,
- 'File::Spec::Mac' => undef,
- 'File::Spec::OS2' => undef,
- 'File::Spec::Unix' => undef,
- 'File::Spec::VMS' => undef,
- 'File::Spec::Win32' => undef,
- 'File::Temp' => undef,
- 'Filter::Simple' => undef,
+ 'File::Temp' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=File-Temp',
'Filter::Util::Call' => undef,
'Getopt::Long' => undef,
- 'HTTP::Tiny' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-Tiny',
+ 'HTTP::Tiny' => 'https://github.com/chansen/p5-http-tiny/issues',
'IO::Compress::Adapter::Bzip2'=> undef,
'IO::Compress::Adapter::Deflate'=> undef,
'IO::Compress::Adapter::Identity'=> undef,
@@ -8306,26 +10229,10 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Locale::Country' => undef,
'Locale::Currency' => undef,
'Locale::Language' => undef,
- 'Locale::Maketext' => undef,
- 'Locale::Maketext::Guts'=> undef,
- 'Locale::Maketext::GutsLoader'=> undef,
'Locale::Maketext::Simple'=> undef,
'Locale::Script' => undef,
- 'Log::Message' => undef,
- 'Log::Message::Config' => undef,
- 'Log::Message::Handlers'=> undef,
- 'Log::Message::Item' => undef,
- 'Log::Message::Simple' => undef,
'MIME::Base64' => undef,
'MIME::QuotedPrint' => undef,
- 'Math::BigFloat' => undef,
- 'Math::BigFloat::Trace' => undef,
- 'Math::BigInt' => undef,
- 'Math::BigInt::Calc' => undef,
- 'Math::BigInt::CalcEmu' => undef,
- 'Math::BigInt::FastCalc'=> undef,
- 'Math::BigInt::Trace' => undef,
- 'Math::BigRat' => undef,
'Math::Complex' => undef,
'Math::Trig' => undef,
'Memoize' => undef,
@@ -8340,17 +10247,14 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Module::Build::Base' => undef,
'Module::Build::Compat' => undef,
'Module::Build::Config' => undef,
+ 'Module::Build::ConfigData'=> undef,
'Module::Build::Cookbook'=> undef,
'Module::Build::Dumper' => undef,
'Module::Build::ModuleInfo'=> undef,
'Module::Build::Notes' => undef,
'Module::Build::PPMMaker'=> undef,
- 'Module::Build::Platform::Amiga'=> undef,
'Module::Build::Platform::Default'=> undef,
- 'Module::Build::Platform::EBCDIC'=> undef,
- 'Module::Build::Platform::MPEiX'=> undef,
'Module::Build::Platform::MacOS'=> undef,
- 'Module::Build::Platform::RiscOS'=> undef,
'Module::Build::Platform::Unix'=> undef,
'Module::Build::Platform::VMS'=> undef,
'Module::Build::Platform::VOS'=> undef,
@@ -8362,14 +10266,10 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Module::Build::PodParser'=> undef,
'Module::Build::Version'=> undef,
'Module::Build::YAML' => undef,
- 'Module::CoreList' => undef,
- 'Module::CoreList::TieHashDelta'=> undef,
'Module::Load' => undef,
'Module::Load::Conditional'=> undef,
'Module::Loaded' => undef,
- 'Module::Metadata' => undef,
- 'Module::Pluggable' => undef,
- 'Module::Pluggable::Object'=> undef,
+ 'Module::Metadata' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Module-Metadata',
'NEXT' => undef,
'Net::Cmd' => undef,
'Net::Config' => undef,
@@ -8383,20 +10283,17 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Net::NNTP' => undef,
'Net::Netrc' => undef,
'Net::POP3' => undef,
- 'Net::Ping' => undef,
'Net::SMTP' => undef,
'Net::Time' => undef,
- 'Object::Accessor' => undef,
'Package::Constants' => undef,
'Params::Check' => undef,
- 'Parse::CPAN::Meta' => undef,
- 'Perl::OSType' => undef,
+ 'Parse::CPAN::Meta' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Parse-CPAN-Meta',
+ 'Perl::OSType' => 'https://github.com/dagolden/Perl-OSType/issues',
'PerlIO::via::QuotedPrint'=> undef,
'Pod::Checker' => undef,
'Pod::Escapes' => undef,
'Pod::Find' => undef,
'Pod::InputObjects' => undef,
- 'Pod::LaTeX' => undef,
'Pod::Man' => undef,
'Pod::ParseLink' => undef,
'Pod::ParseUtils' => undef,
@@ -8449,11 +10346,8 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Pod::Text::Overstrike' => undef,
'Pod::Text::Termcap' => undef,
'Pod::Usage' => undef,
- 'Safe' => undef,
'Scalar::Util' => undef,
- 'SelfLoader' => undef,
'Socket' => undef,
- 'Storable' => undef,
'Sys::Syslog' => undef,
'Sys::Syslog::Win32' => undef,
'TAP::Base' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
@@ -8466,6 +10360,7 @@ for my $version (sort { $a <=> $b } keys %delta) {
'TAP::Formatter::File::Session'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'TAP::Formatter::Session'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'TAP::Harness' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
+ 'TAP::Harness::Env' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'TAP::Object' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'TAP::Parser' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'TAP::Parser::Aggregator'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
@@ -8496,29 +10391,22 @@ for my $version (sort { $a <=> $b } keys %delta) {
'TAP::Parser::SourceHandler::Handle'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'TAP::Parser::SourceHandler::Perl'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'TAP::Parser::SourceHandler::RawTAP'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
- 'TAP::Parser::Utils' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'TAP::Parser::YAMLish::Reader'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'TAP::Parser::YAMLish::Writer'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'Term::ANSIColor' => undef,
'Term::Cap' => undef,
- 'Term::UI' => undef,
- 'Term::UI::History' => undef,
'Test' => undef,
- 'Test::Builder' => 'http://github.com/schwern/test-more/issues',
- 'Test::Builder::Module' => 'http://github.com/schwern/test-more/issues',
+ 'Test::Builder' => 'http://github.com/schwern/test-more/issues/',
+ 'Test::Builder::Module' => 'http://github.com/schwern/test-more/issues/',
'Test::Builder::Tester' => 'http://github.com/schwern/test-more/issues',
'Test::Builder::Tester::Color'=> 'http://github.com/schwern/test-more/issues',
'Test::Harness' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
- 'Test::More' => 'http://github.com/schwern/test-more/issues',
- 'Test::Simple' => 'http://github.com/schwern/test-more/issues',
+ 'Test::More' => 'http://github.com/schwern/test-more/issues/',
+ 'Test::Simple' => 'http://github.com/schwern/test-more/issues/',
'Text::Balanced' => undef,
'Text::ParseWords' => undef,
- 'Text::Soundex' => undef,
'Text::Tabs' => undef,
'Text::Wrap' => undef,
- 'Thread::Queue' => undef,
- 'Thread::Semaphore' => undef,
- 'Tie::File' => undef,
'Tie::RefHash' => undef,
'Time::HiRes' => undef,
'Time::Local' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=Time-Local',
@@ -8531,39 +10419,22 @@ for my $version (sort { $a <=> $b } keys %delta) {
'Unicode::Collate::CJK::Korean'=> undef,
'Unicode::Collate::CJK::Pinyin'=> undef,
'Unicode::Collate::CJK::Stroke'=> undef,
+ 'Unicode::Collate::CJK::Zhuyin'=> undef,
'Unicode::Collate::Locale'=> undef,
'Unicode::Normalize' => undef,
- 'Unicode::UCD' => undef,
- 'VMS::DCLsym' => undef,
- 'VMS::Filespec' => undef,
- 'VMS::Stdio' => undef,
'Win32' => undef,
'Win32API::File' => undef,
'Win32API::File::ExtUtils::Myconst2perl'=> undef,
- 'Win32CORE' => undef,
- 'XSLoader' => 'https://rt.perl.org/rt3/Search/Results.html?Query=Queue=\'perl5\' AND Content LIKE \'module=XSLoader\' AND (Status=\'open\' OR Status=\'new\' OR Status=\'stalled\')',
'autodie' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
'autodie::exception' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
'autodie::exception::system'=> 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
'autodie::hints' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
- 'base' => undef,
- 'bigint' => undef,
- 'bignum' => undef,
- 'bigrat' => undef,
- 'constant' => undef,
+ 'autodie::skip' => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=autodie',
'encoding' => undef,
'encoding::warnings' => undef,
- 'fields' => undef,
- 'if' => undef,
'inc::latest' => undef,
- 'lib' => undef,
'parent' => undef,
'perlfaq' => 'https://github.com/perl-doc-cats/perlfaq/issues',
- 'threads' => undef,
- 'threads::shared' => undef,
- 'version' => undef,
- 'warnings' => undef,
- 'warnings::register' => undef,
);
# Create aliases with trailing zeros for $] use
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod
index 4db77e6a283..bedc8892999 100644
--- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pod
@@ -12,6 +12,10 @@ Module::CoreList - what modules shipped with versions of perl
print Module::CoreList->first_release_by_date('File::Spec'); # prints 5.005
print Module::CoreList->first_release('File::Spec', 0.82); # prints 5.006001
+ if (Module::CoreList::is_core('File::Spec')) {
+ print "File::Spec is a core module\n";
+ }
+
print join ', ', Module::CoreList->find_modules(qr/Data/);
# prints 'Data::Dumper'
print join ', ', Module::CoreList->find_modules(qr/test::h.*::.*s/i, 5.008008);
@@ -71,6 +75,19 @@ you may provide a list of perl versions to limit the regex search.
Takes a perl version as an argument. Returns that perl version if it exists or C<undef>
otherwise.
+=item C<is_core( MODULE, [ MODULE_VERSION, [ PERL_VERSION ] ] )>
+
+Available in version 2.99 and above.
+
+Returns true if MODULE was bundled with the specified version of Perl.
+You can optionally specify a minimum version of the module,
+and can also specify a version of Perl.
+If a version of Perl isn't specified,
+C<is_core()> will use the version of Perl that is running (ie C<$^V>).
+
+If you want to specify the version of Perl, but don't care about
+the version of the module, pass C<undef> for the module version:
+
=item C<is_deprecated( MODULE, PERL_VERSION )>
Available in version 2.22 and above.
@@ -78,6 +95,13 @@ Available in version 2.22 and above.
Returns true if MODULE is marked as deprecated in PERL_VERSION. If PERL_VERSION is
omitted, it defaults to the current version of Perl.
+=item C<deprecated_in( MODULE )>
+
+Available in version 2.77 and above.
+
+Returns the first PERL_VERSION where the MODULE was marked as deprecated. Returns C<undef>
+if the MODULE has not been marked as deprecated.
+
=item C<removed_from( MODULE )>
Available in version 2.32 and above
@@ -99,12 +123,12 @@ in core.
Available in version 2.66 and above.
Given two perl versions, this returns a list of pairs describing the changes in
-core module content betweent hem. The list is suitable for storing in a hash.
+core module content between them. The list is suitable for storing in a hash.
The keys are library names and the values are hashrefs. Each hashref has an
entry for one or both of C<left> and C<right>, giving the versions of the
library in each of the left and right perl distributions.
-For example, it might return these data (among others) for the the difference
+For example, it might return these data (among others) for the difference
between 5.008000 and 5.008001:
'Pod::ParseLink' => { left => '1.05', right => '1.06' },
@@ -135,6 +159,20 @@ that's what you're testing for.
Starting with 2.10, the special module name C<Unicode> refers to the version of
the Unicode Character Database bundled with Perl.
+=item C<%Module::CoreList::delta>
+
+Available in version 3.00 and above.
+
+C<%Module::CoreList::version> is implemented via C<Module::CoreList::TieHashDelta>
+using this hash of delta changes.
+
+It is a hash of hashes that is keyed on perl version. Each keyed hash will have the
+following keys:
+
+ delta_from - a previous perl version that the changes are based on
+ changed - a hash of module/versions that have changed
+ removed - a hash of modules that have been removed
+
=item C<%Module::CoreList::released>
Keyed on perl version this contains ISO
@@ -185,10 +223,12 @@ Module::CoreList currently covers the 5.000, 5.001, 5.002, 5.003_07,
5.8.0, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 5.8.5, 5.8.6, 5.8.7, 5.8.8, 5.8.9,
5.9.0, 5.9.1, 5.9.2, 5.9.3, 5.9.4, 5.9.5, 5.10.0, 5.10.1, 5.11.0, 5.11.1,
5.11.2, 5.11.3, 5.11.4, 5.11.5, 5.12.0, 5.12.1, 5.12.2, 5.12.3, 5.12.4,
-5.13.0, 5.13.1, 5.13.2, 5.13.3, 5.13.4, 5.13.5, 5.13.6, 5.13.7, 5.13.8,
-5.13.9, 5.13.10, 5.13.11, 5.14.0, 5.14.1, 5.14.2, 5.15.0, 5.15.1, 5.15.2,
-5.15.3, 5.15.4, 5.15.5, 5.15.6, 5.15.7, 5.15.8, 5.15.9, 5.16.0, 5.17.0,
-5.17.1, 5.17.2, 5.17.3, 5.17.4 and 5.17.5 releases of perl.
+5.12.5, 5.13.0, 5.13.1, 5.13.2, 5.13.3, 5.13.4, 5.13.5, 5.13.6, 5.13.7,
+5.13.8, 5.13.9, 5.13.10, 5.13.11, 5.14.0, 5.14.1, 5.14.2 5.14.3, 5.14.4,
+5.15.0, 5.15.1, 5.15.2, 5.15.3, 5.15.4, 5.15.5, 5.15.6, 5.15.7, 5.15.8,
+5.15.9, 5.16.0, 5.16.1, 5.16.2, 5.16.3, 5.17.0, 5.17.1, 5.17.2, 5.17.3,
+5.17.4, 5.17.5, 5.17.6, 5.17.7, 5.17.8, 5.17.9, 5.17.10, 5.17.11, 5.18.0,
+5.19.0, 5.19.1, 5.19.2, 5.19.3, 5.19.4, 5.19.5, 5.19.6 and 5.19.7 releases of perl.
=head1 HISTORY
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
index 19e38aaf9c3..b0c133950b2 100644
--- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
@@ -3,7 +3,7 @@ package Module::CoreList::TieHashDelta;
use strict;
use vars qw($VERSION);
-$VERSION = "2.76";
+$VERSION = "3.03";
sub TIEHASH {
my ($class, $changed, $removed, $parent) = @_;
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
new file mode 100644
index 00000000000..5967e032ad5
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
@@ -0,0 +1,1021 @@
+package Module::CoreList::Utils;
+
+use strict;
+use warnings;
+use vars qw[$VERSION %utilities];
+use Module::CoreList;
+use Module::CoreList::TieHashDelta;
+
+$VERSION = '3.03';
+
+sub utilities {
+ my $perl = shift;
+ $perl = shift if eval { $perl->isa(__PACKAGE__) };
+ return unless $perl or exists $utilities{$perl};
+ return sort keys %{ $utilities{$perl} };
+}
+
+sub first_release_raw {
+ my $util = shift;
+ $util = shift if eval { $util->isa(__PACKAGE__) };
+ #and scalar @_ and $_[0] =~ m#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|')[0-9a-zA-Z_]+)*\z#;
+ my $version = shift;
+
+ my @perls = $version
+ ? grep { exists $utilities{$_}{ $util } &&
+ $utilities{$_}{ $util } ge $version } keys %utilities
+ : grep { exists $utilities{$_}{ $util } } keys %utilities;
+
+ return grep { exists $Module::CoreList::released{$_} } @perls;
+}
+
+sub first_release_by_date {
+ my @perls = &first_release_raw;
+ return unless @perls;
+ return (sort { $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} } @perls)[0];
+}
+
+sub first_release {
+ my @perls = &first_release_raw;
+ return unless @perls;
+ return (sort { $a cmp $b } @perls)[0];
+}
+
+sub removed_from {
+ my @perls = &removed_raw;
+ return shift @perls;
+}
+
+sub removed_from_by_date {
+ my @perls = sort { $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} } &removed_raw;
+ return shift @perls;
+}
+
+sub removed_raw {
+ my $util = shift;
+ $util = shift if eval { $util->isa(__PACKAGE__) };
+ return unless my @perls = sort { $a cmp $b } first_release_raw($util);
+ @perls = grep { exists $Module::CoreList::released{$_} } @perls;
+ my $last = pop @perls;
+ my @removed = grep { $_ > $last } sort { $a cmp $b } keys %utilities;
+ return @removed;
+}
+
+my %delta = (
+ 5 => {
+ changed => {
+ 'a2p' => '1',
+ 'c2ph' => '1',
+ 'cppstdin' => '1',
+ 'find2perl' => '1',
+ 'pstruct' => '1',
+ 's2p' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.001 => {
+ delta_from => 5,
+ changed => {
+ 'h2xs' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.002 => {
+ delta_from => 5.001,
+ changed => {
+ 'h2ph' => '1',
+ 'perlbug' => '1',
+ 'perldoc' => '1',
+ 'pod2html' => '1',
+ 'pod2latex' => '1',
+ 'pod2man' => '1',
+ 'pod2text' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.00307 => {
+ delta_from => 5.002,
+ changed => {
+ 'pl2pm' => '1',
+ },
+ removed => {
+ 'cppstdin' => 1,
+ 'pstruct' => 1,
+ }
+ },
+
+ 5.004 => {
+ delta_from => 5.00307,
+ changed => {
+ 'splain' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.005 => {
+ delta_from => 5.00405,
+ changed => {
+ 'perlcc' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.00503 => {
+ delta_from => 5.005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.00405 => {
+ delta_from => 5.004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.006 => {
+ delta_from => 5.00504,
+ changed => {
+ 'dprofpp' => '1',
+ 'pod2usage' => '1',
+ 'podchecker' => '1',
+ 'podselect' => '1',
+ 'pstruct' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.006001 => {
+ delta_from => 5.006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.007003 => {
+ delta_from => 5.006002,
+ changed => {
+ 'libnetcfg' => '1',
+ 'perlivp' => '1',
+ 'psed' => '1',
+ 'xsubpp' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.008 => {
+ delta_from => 5.007003,
+ changed => {
+ 'enc2xs' => '1',
+ 'piconv' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.008001 => {
+ delta_from => 5.008,
+ changed => {
+ 'cpan' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.009 => {
+ delta_from => 5.008009,
+ changed => {
+ },
+ removed => {
+ 'corelist' => 1,
+ 'instmodsh' => 1,
+ 'prove' => 1,
+ }
+ },
+
+ 5.008002 => {
+ delta_from => 5.008001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.006002 => {
+ delta_from => 5.006001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.008003 => {
+ delta_from => 5.008002,
+ changed => {
+ 'instmodsh' => '1',
+ 'prove' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.00504 => {
+ delta_from => 5.00503,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.009001 => {
+ delta_from => 5.009,
+ changed => {
+ 'instmodsh' => '1',
+ 'prove' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.008004 => {
+ delta_from => 5.008003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.008005 => {
+ delta_from => 5.008004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.008006 => {
+ delta_from => 5.008005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.009002 => {
+ delta_from => 5.009001,
+ changed => {
+ 'corelist' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.008007 => {
+ delta_from => 5.008006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.009003 => {
+ delta_from => 5.009002,
+ changed => {
+ 'ptar' => '1',
+ 'ptardiff' => '1',
+ 'shasum' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.008008 => {
+ delta_from => 5.008007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.009004 => {
+ delta_from => 5.009003,
+ changed => {
+ 'config_data' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.009005 => {
+ delta_from => 5.009004,
+ changed => {
+ 'cpan2dist' => '1',
+ 'cpanp' => '1',
+ 'cpanp-run-perl' => '1',
+ },
+ removed => {
+ 'perlcc' => 1,
+ }
+ },
+
+ 5.010000 => {
+ delta_from => 5.009005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.008009 => {
+ delta_from => 5.008008,
+ changed => {
+ 'corelist' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.010001 => {
+ delta_from => 5.010000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.011 => {
+ delta_from => 5.010001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.011001 => {
+ delta_from => 5.011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.011002 => {
+ delta_from => 5.011001,
+ changed => {
+ 'perlthanks' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.011003 => {
+ delta_from => 5.011002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.011004 => {
+ delta_from => 5.011003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.011005 => {
+ delta_from => 5.011004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.012 => {
+ delta_from => 5.011005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013 => {
+ delta_from => 5.012005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.012001 => {
+ delta_from => 5.012,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013001 => {
+ delta_from => 5.013,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013002 => {
+ delta_from => 5.013001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013003 => {
+ delta_from => 5.013002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013004 => {
+ delta_from => 5.013003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.012002 => {
+ delta_from => 5.012001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013005 => {
+ delta_from => 5.013004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013006 => {
+ delta_from => 5.013005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013007 => {
+ delta_from => 5.013006,
+ changed => {
+ 'ptargrep' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.013008 => {
+ delta_from => 5.013007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013009 => {
+ delta_from => 5.013008,
+ changed => {
+ 'json_pp' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.012003 => {
+ delta_from => 5.012002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013010 => {
+ delta_from => 5.013009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.013011 => {
+ delta_from => 5.013010,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.014 => {
+ delta_from => 5.013011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.014001 => {
+ delta_from => 5.014,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015 => {
+ delta_from => 5.014004,
+ changed => {
+ },
+ removed => {
+ 'dprofpp' => 1,
+ }
+ },
+
+ 5.012004 => {
+ delta_from => 5.012003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015001 => {
+ delta_from => 5.015,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015002 => {
+ delta_from => 5.015001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015003 => {
+ delta_from => 5.015002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.014002 => {
+ delta_from => 5.014001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015004 => {
+ delta_from => 5.015003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015005 => {
+ delta_from => 5.015004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015006 => {
+ delta_from => 5.015005,
+ changed => {
+ 'zipdetails' => '1',
+ },
+ removed => {
+ }
+ },
+
+ 5.015007 => {
+ delta_from => 5.015006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015008 => {
+ delta_from => 5.015007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.015009 => {
+ delta_from => 5.015008,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.016 => {
+ delta_from => 5.015009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017 => {
+ delta_from => 5.016003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017001 => {
+ delta_from => 5.017,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017002 => {
+ delta_from => 5.017001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.016001 => {
+ delta_from => 5.016,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017003 => {
+ delta_from => 5.017002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017004 => {
+ delta_from => 5.017003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.014003 => {
+ delta_from => 5.014002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017005 => {
+ delta_from => 5.017004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.016002 => {
+ delta_from => 5.016001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.012005 => {
+ delta_from => 5.012004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017006 => {
+ delta_from => 5.017005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017007 => {
+ delta_from => 5.017006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017008 => {
+ delta_from => 5.017007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017009 => {
+ delta_from => 5.017008,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.014004 => {
+ delta_from => 5.014003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.016003 => {
+ delta_from => 5.016002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017010 => {
+ delta_from => 5.017009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+
+ 5.017011 => {
+ delta_from => 5.017010,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.018000 => {
+ delta_from => 5.017011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.018001 => {
+ delta_from => 5.018000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.018002 => {
+ delta_from => 5.018001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019000 => {
+ delta_from => 5.018000,
+ changed => {
+ },
+ removed => {
+ 'cpan2dist' => '1',
+ 'cpanp' => '1',
+ 'cpanp-run-perl' => '1',
+ 'pod2latex' => '1',
+ }
+ },
+ 5.019001 => {
+ delta_from => 5.019000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019002 => {
+ delta_from => 5.019001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019003 => {
+ delta_from => 5.019002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019004 => {
+ delta_from => 5.019003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019005 => {
+ delta_from => 5.019004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019006 => {
+ delta_from => 5.019005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.019007 => {
+ delta_from => 5.019006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+);
+
+for my $version (sort { $a <=> $b } keys %delta) {
+ my $data = $delta{$version};
+
+ tie %{$utilities{$version}}, 'Module::CoreList::TieHashDelta',
+ $data->{changed}, $data->{removed},
+ $data->{delta_from} ? $utilities{$data->{delta_from}} : undef;
+}
+
+# Create aliases with trailing zeros for $] use
+
+$utilities{'5.000'} = $utilities{5};
+
+_create_aliases(\%utilities);
+
+sub _create_aliases {
+ my ($hash) = @_;
+
+ for my $version (keys %$hash) {
+ next unless $version >= 5.010;
+
+ my $padded = sprintf "%0.6f", $version;
+
+ # If the version in string form isn't the same as the numeric version,
+ # alias it.
+ if ($padded ne $version && $version == $padded) {
+ $hash->{$padded} = $hash->{$version};
+ }
+ }
+}
+
+'foo';
+
+=pod
+
+=head1 NAME
+
+Module::CoreList::Utils - what utilities shipped with versions of perl
+
+=head1 SYNOPSIS
+
+ use Module::CoreList::Utils;
+
+ print $Module::CoreList::Utils::utilities{5.009003}{ptar}; # prints 1
+
+ print Module::CoreList::Utils->first_release('corelist'); # prints 5.008009
+ print Module::CoreList::Utils->first_release_by_date('corelist'); # prints 5.009002
+
+=head1 DESCRIPTION
+
+Module::CoreList::Utils provides information on which core and dual-life utilities shipped
+with each version of L<perl>.
+
+It provides a number of mechanisms for querying this information.
+
+There is a functional programming API available for programmers to query
+information.
+
+Programmers may also query the contained hash structure to find relevant
+information.
+
+=head1 FUNCTIONS API
+
+These are the functions that are available, they may either be called as functions or class methods:
+
+ Module::CoreList::Utils::first_release('corelist'); # as a function
+
+ Module::CoreList::Utils->first_release('corelist'); # class method
+
+=over
+
+=item C<utilities>
+
+Requires a perl version as an argument, returns a list of utilities that shipped with
+that version of perl, or undef/empty list if that perl doesn't exist.
+
+=item C<first_release( UTILITY )>
+
+Requires a UTILITY name as an argument, returns the perl version when that utility first
+appeared in core as ordered by perl version number or undef ( in scalar context )
+or an empty list ( in list context ) if that utility is not in core.
+
+=item C<first_release_by_date( UTILITY )>
+
+Requires a UTILITY name as an argument, returns the perl version when that utility first
+appeared in core as ordered by release date or undef ( in scalar context )
+or an empty list ( in list context ) if that utility is not in core.
+
+=item C<removed_from( UTILITY )>
+
+Takes a UTILITY name as an argument, returns the first perl version where that utility
+was removed from core. Returns undef if the given utility was never in core or remains
+in core.
+
+=item C<removed_from_by_date( UTILITY )>
+
+Takes a UTILITY name as an argument, returns the first perl version by release date where that
+utility was removed from core. Returns undef if the given utility was never in core or remains
+in core.
+
+=back
+
+=head1 DATA STRUCTURES
+
+These are the hash data structures that are available:
+
+=over
+
+=item C<%Module::CoreList::Utils::utilities>
+
+A hash of hashes that is keyed on perl version as indicated
+in $]. The second level hash is utility / defined pairs.
+
+=back
+
+=head1 AUTHOR
+
+Chris C<BinGOs> Williams <chris@bingosnet.co.uk>
+
+Currently maintained by the perl 5 porters E<lt>perl5-porters@perl.orgE<gt>.
+
+This module is the result of archaeology undertaken during QA Hackathon
+in Lancaster, April 2013.
+
+=head1 LICENSE
+
+Copyright (C) 2013 Chris Williams. All Rights Reserved.
+
+This module is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<corelist>, L<Module::CoreList>, L<perl>, L<http://perlpunks.de/corelist>
+
+=cut
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/t/deprecated.t b/gnu/usr.bin/perl/dist/Module-CoreList/t/deprecated.t
index 00df561a751..020738f088a 100755
--- a/gnu/usr.bin/perl/dist/Module-CoreList/t/deprecated.t
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/t/deprecated.t
@@ -1,6 +1,6 @@
#!perl -w
use strict;
-use Test::More tests => 7;
+use Test::More tests => 9;
require_ok('Module::CoreList');
@@ -11,7 +11,7 @@ ok(!exists $Module::CoreList::deprecated{5.011000}{'File::Spec'},
);
ok(! Module::CoreList::is_deprecated('File::Spec'),
- "File::Spec not deprecated in 5.011000 (function)"
+ "File::Spec currently is not deprecated (function)"
);
ok(exists $Module::CoreList::deprecated{5.011000}{'Switch'},
@@ -25,3 +25,11 @@ is(!! Module::CoreList::is_deprecated('Switch'), !! ($] >= 5.011 and $] < 5.0130
ok(! Module::CoreList::is_deprecated('Switch', 5.010000),
"Switch not deprecated in 5.010000 (function w/ perl version)"
);
+
+is(Module::CoreList::deprecated_in('Switch'), 5.011000,
+ "Switch was deprecated in 5.011000 (deprecated_in)"
+);
+
+ok(! Module::CoreList::deprecated_in('File::Spec'),
+ "File::Spec currently is not deprecated (deprecated_in)"
+);
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/t/find_modules.t b/gnu/usr.bin/perl/dist/Module-CoreList/t/find_modules.t
index 1e814854d61..112f77f8f46 100755
--- a/gnu/usr.bin/perl/dist/Module-CoreList/t/find_modules.t
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/t/find_modules.t
@@ -20,5 +20,5 @@ is_deeply([ Module::CoreList->find_modules(qr/Test::H.*::.*s/, 5.006001, 5.00700
'qr/Test::H.*::.*s/ at 5.006001 and 5.007003');
is_deeply([ Module::CoreList::find_modules(qr/Module::CoreList/) ],
- [ qw(Module::CoreList Module::CoreList::TieHashDelta) ],
+ [ qw(Module::CoreList Module::CoreList::TieHashDelta Module::CoreList::Utils) ],
'Module::CoreList functional' );
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t b/gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t
new file mode 100644
index 00000000000..712221f21e6
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/t/is_core.t
@@ -0,0 +1,67 @@
+#!perl -w
+use strict;
+use Module::CoreList;
+use Test::More tests => 33;
+
+BEGIN { require_ok('Module::CoreList'); }
+
+ok(!Module::CoreList::is_core('Module::Path'), 'Module::Path has never been in core');
+ok(!Module::CoreList::is_core('Module::Path', undef, '5.016003'), 'Module::Path has never been in core');
+ok(!Module::CoreList::is_core('Module::Path', undef), 'Module::Path has never been in core');
+
+# List::Util::PP was added in 5.010001 and removed in 5.017001
+ok(!Module::CoreList::is_core('List::Util::PP', undef, '5.002'), 'List::Util::PP was added in 5.10.1 so not in core in 5.002');
+ok(Module::CoreList::is_core('List::Util::PP', undef, '5.016003'), 'List::Util::PP was in core in 5.16.3');
+ok(!Module::CoreList::is_core('List::Util::PP', undef, '5.018001'), 'List::Util::PP was removed in 5.17.1 so not in core in 5.18.1');
+
+# Carp has always been a core module
+ok(Module::CoreList::is_core('Carp', undef, '5'), 'Carp was a core module in first release of perl 5');
+ok(Module::CoreList::is_core('Carp', undef, '5.019004'), 'Carp was still a core module in 5.19.4');
+ok(Module::CoreList::is_core('Carp'), "Carp should be a core module whatever version of perl you're running");
+
+ok(Module::CoreList::is_core('attributes', undef, '5.00503') == 0, "attributes weren't in 5.00503");
+ok(Module::CoreList::is_core('attributes', undef, '5.006001') == 1, "attributes were in 5.6.1");
+ok(Module::CoreList::is_core('Pod::Plainer', undef, '5.012001') == 1, "Pod::Plainer was core in 5.12.1");
+ok(Module::CoreList::is_core('Pod::Plainer', undef, '5.016003') == 0, "Pod::Plainer was removed in 5.13.1");
+
+# history of module 'encoding' in core
+# version 1.00 included in 5.007003
+# version 1.35 included in 5.008
+# version 1.47 included in 5.008001
+# version 1.48 included in 5.008003
+# version 2.00 included in 5.008005
+# version 2.01 included in 5.008006
+# version 2.02 included in 5.008008
+# version 2.6_01 included in 5.008009
+# version 2.04 included in 5.009004
+# version 2.06 included in 5.009005
+# version 2.6_01 included in 5.010001
+# version 2.12 included in 5.019001
+
+ok(!Module::CoreList::is_core('encoding', undef, '5'), "encoding wasn't in core in first release of perl 5");
+ok(!Module::CoreList::is_core('encoding', '1.00', '5'), "encoding 1.00 wasn't in core in first release of perl 5");
+ok(!Module::CoreList::is_core('encoding', '1.35', '5.007003'), "encoding 1.35 wasn't yet in core in perl 5.007003");
+ok(Module::CoreList::is_core('encoding', '1.35', '5.008'), "encoding 1.35 was first included in perl 5.008");
+ok(Module::CoreList::is_core('encoding', '1.35', '5.009004'), "encoding 2.04 (>1.35) was included in 5.009004");
+ok(Module::CoreList::is_core('encoding', '2.01', '5.008007'), "encoding 2.01 was first in core in perl 5.008006, so was core in 5.8.7");
+ok(Module::CoreList->is_core('encoding', '2.01', '5.008007'), "encoding 2.01 was first in core in perl 5.008006, so was core in 5.8.7");
+
+# Module::CoreList (2.17) was first included in 5.008009
+ok(!Module::CoreList::is_core('Module::CoreList', undef, '5.007003'), "Module::CoreList wasn't core in perl 5.7.3");
+ok(!Module::CoreList->is_core('Module::CoreList', undef, '5.007003'), "Module::CoreList wasn't core in perl 5.7.3 (class method)");
+
+# Test for situations where different branches on the perl
+# release tree had different versions of a module, and a naive
+# checking of perl release number will trip you up
+ok(Module::CoreList->is_core('Text::Soundex', '1.01', '5.008007'), "Text::Soundex 1.01 was first included in 5.007003");
+ok(Module::CoreList->is_core('Text::Soundex', '3.03', '5.008009'), "Text::Soundex 3.03 was included in 5.008009");
+ok(!Module::CoreList->is_core('Text::Soundex', '3.03', '5.009003'), "5.009003 still had Text::Soundex 1.01");
+ok(Module::CoreList->is_core('Text::Soundex', '1.01', '5.009003'), "5.009003 still had Text::Soundex 1.01");
+ok(!Module::CoreList->is_core('Text::Soundex', '3.03', '5.009005'), "5.009005 still had Text::Soundex 3.02");
+ok(Module::CoreList->is_core('Text::Soundex', '3.02', '5.009005'), "5.009005 had Text::Soundex 3.02");
+ok(Module::CoreList->is_core('Text::Soundex', '3.03', '5.01'), "5.01 had Text::Soundex 3.03");
+
+# 5.002 was the first perl release where core modules had a version number
+ok(Module::CoreList->is_core('DB_File', '1.01', '5.002'), "DB_File 1.01 was included in 5.002");
+ok(!Module::CoreList->is_core('DB_File', '1.03', '5.002'), "DB_File 1.03 wasn't included in 5.002");
+ok(Module::CoreList->is_core('DB_File', '1.03', '5.00307'), "DB_File 1.03 was included in 5.00307");
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t b/gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t
new file mode 100644
index 00000000000..48224958c0d
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/t/utils.t
@@ -0,0 +1,23 @@
+use strict;
+use warnings;
+use Test::More tests => 9;
+
+BEGIN { require_ok('Module::CoreList::Utils'); }
+
+ok( defined $Module::CoreList::Utils::utilities{5}{a2p}, '5 had a2p' );
+is( Module::CoreList::Utils->first_release('a2p'), 5, 'a2p first released in 5' );
+is( Module::CoreList::Utils::first_release('a2p'), 5, 'a2p first released in 5' );
+is( Module::CoreList::Utils->first_release('corelist'), 5.008009, 'corelist with v5.8.9');
+is( Module::CoreList::Utils->first_release_by_date('corelist'), 5.009002, 'corelist with v5.9.2');
+is( Module::CoreList::Utils::first_release_by_date('corelist'), 5.009002, 'corelist with v5.9.2');
+{
+ my @expected = qw(a2p c2ph cppstdin find2perl h2xs pstruct s2p);
+ {
+ my @foo = Module::CoreList::Utils->utilities(5.001);
+ is_deeply( \@foo, \@expected, '5.001 utils all present and correct' );
+ }
+ {
+ my @foo = Module::CoreList::Utils::utilities(5.001);
+ is_deeply( \@foo, \@expected, '5.001 utils all present and correct' );
+ }
+}
diff --git a/gnu/usr.bin/perl/dist/Net-Ping/Changes b/gnu/usr.bin/perl/dist/Net-Ping/Changes
index 905f059dddf..fa26c68f93f 100644
--- a/gnu/usr.bin/perl/dist/Net-Ping/Changes
+++ b/gnu/usr.bin/perl/dist/Net-Ping/Changes
@@ -1,8 +1,62 @@
CHANGES
-------
+2.41 Mar 17 09:35 2013
+ Bugfixes
+ - Windows Vista does not appear to support inet_ntop(). It seems to
+ have InetNtop() instead. So, working around by using getnameinfo()
+ and passing in the NI_NUMERICHOST to get an IP address.
+ Features
+ - Change Net::Ping to use Time::HiRes::time() instead of CORE::time()
+ by default. For most successful cases, CORE::time() returned zero.
+2.40 Mar 15 11:20 2013
+ Bugfixes
+ - several fixes to tests to stop the black smoke on Win32's
+ and Cygwin since the core updated the module to Test::More.
+ I had planned a later release, but all the black smoke is
+ forcing a release.
+ - fixes to some skips in tests that were still using the
+ Test style skip's.
+ - Documentation fix for https://rt.cpan.org/Ticket/Display.html?id=48014.
+ Thanks to Keith Taylor <keith@supanet.net.uk>
+ - Instead of using a hard-coded TOS value, import IP_TOS from
+ Socket. This fixes an outstanding bug on Solaris which uses a
+ different value for IP_TOS in it headers than Linux. I'm assuming
+ other OS's were fixed with this change as well.
+
+ Features
+ - added TTL handling for icmp pings to allow traceroute like
+ applications to be built with Net::Ping. Thanks to
+ <rolek@bokxing.nl> for the patch and tests!
+
+ Internals
+ - replaced SOL_IP with IPPROTO_IP. SOL_IP is not portable and was
+ hard-coded anyway.
+ - added IPPROTO_IP, IP_TOS, IP_TTL, and AF_INET to the list of Socket
+ constants imported.
+ - removed some hard-coded constants.
+ - converted all calls to inet_ntoa() to inet_ntop() in preparation
+ for further ipv6 updates.
+
+ Infrastructure
+ - Makefile.PL updated to require Test::More, Time::HiRes, and a
+ recent Socket
+ - several changes for github hosting
+ - add a .gitignore file
+ - added a .travis.yml file to allow CI testing with changes pushed
+ to github
+ - replaced the README with a README.md which displays the
+ Travis CI build status on github.
+
+
+2.39 Mar 13 09:25 2013
+ - patch from Matthew Musgrove to resolve RT #45812. Thanks!
+ - pulled in several changes from the Perl core
+
+2.36 Jun 08 12:00 2009
+ - release to include a few fixes from the Perl core
2.35 Feb 08 14:42 2008
- - Patch in Perl change #33242 by Nicholas Clark
+ - Patch in Perl change #33242 by Nicholas Clark
<http://perl5.git.perl.org/perl.git/commit/5d6b07c5a4c042580b85248d570ee299fd102a79>
2.34 Dec 19 08:51 2007
diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/110_icmp_inst.t b/gnu/usr.bin/perl/dist/Net-Ping/t/110_icmp_inst.t
index 7840657d5ed..b36d32fa43f 100755
--- a/gnu/usr.bin/perl/dist/Net-Ping/t/110_icmp_inst.t
+++ b/gnu/usr.bin/perl/dist/Net-Ping/t/110_icmp_inst.t
@@ -16,7 +16,7 @@ BEGIN {use_ok('Net::Ping')};
SKIP: {
skip "icmp ping requires root privileges.", 1
if ($> and $^O ne 'VMS' and $^O ne 'cygwin')
- or ($^O eq 'MSWin32'
+ or (($^O eq 'MSWin32' or $^O eq 'cygwin')
and !IsAdminUser())
or ($^O eq 'VMS'
and (`write sys\$output f\$privilege("SYSPRV")` =~ m/FALSE/));
@@ -25,7 +25,7 @@ SKIP: {
}
sub IsAdminUser {
- return unless $^O eq 'MSWin32';
+ return unless $^O eq 'MSWin32' or $^O eq 'cygwin';
return unless eval { require Win32 };
return unless defined &Win32::IsAdminUser;
return Win32::IsAdminUser();
diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/200_ping_tcp.t b/gnu/usr.bin/perl/dist/Net-Ping/t/200_ping_tcp.t
index 2f8a40bd323..8ef4fb78fbc 100755
--- a/gnu/usr.bin/perl/dist/Net-Ping/t/200_ping_tcp.t
+++ b/gnu/usr.bin/perl/dist/Net-Ping/t/200_ping_tcp.t
@@ -50,7 +50,7 @@ is($p->ping("172.29.249.249"), 0, "Can't reach 172.29.249.249");
# Test a few remote servers
# Hopefully they are up when the tests are run.
-foreach (qw(www.geocities.com ftp.geocities.com
+foreach (qw(www.geocities.com www.wisc.edu
www.freeservers.com ftp.freeservers.com
yahoo.com www.yahoo.com www.about.com)) {
isnt($p->ping($_), 0, "Can ping $_");
diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/250_ping_hires.t b/gnu/usr.bin/perl/dist/Net-Ping/t/250_ping_hires.t
index 34e81a8be59..6c5be696633 100755
--- a/gnu/usr.bin/perl/dist/Net-Ping/t/250_ping_hires.t
+++ b/gnu/usr.bin/perl/dist/Net-Ping/t/250_ping_hires.t
@@ -30,7 +30,7 @@ my $p = new Net::Ping "tcp";
isa_ok($p, 'Net::Ping', 'new() worked');
-is($Net::Ping::hires, 0, 'Default is to not use Time::HiRes');
+is($Net::Ping::hires, 1, 'Default is to use Time::HiRes');
$p -> hires();
isnt($Net::Ping::hires, 0, 'Enabled hires');
diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/400_ping_syn.t b/gnu/usr.bin/perl/dist/Net-Ping/t/400_ping_syn.t
index 025a0cd7fb9..e1cfcba2eaf 100755
--- a/gnu/usr.bin/perl/dist/Net-Ping/t/400_ping_syn.t
+++ b/gnu/usr.bin/perl/dist/Net-Ping/t/400_ping_syn.t
@@ -46,7 +46,6 @@ BEGIN {
"www.yahoo.com." => 1,
"www.about.com." => 1,
"www.microsoft.com." => 1,
- "127.0.0.1" => 1,
);
}
@@ -78,7 +77,7 @@ foreach my $host (keys %webs) {
# ping() does dns resolution and
# only sends the SYN at this point
Alarm(50); # (Plenty for a DNS lookup)
- is($p->ping($host), 1, "Can reach $host $p->{bad}->{$host}");
+ is($p->ping($host), 1, "Can reach $host [" . ($p->{bad}->{$host} || "") . "]");
}
Alarm(20);
diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/410_syn_host.t b/gnu/usr.bin/perl/dist/Net-Ping/t/410_syn_host.t
index a5b570a4377..82b38203722 100755
--- a/gnu/usr.bin/perl/dist/Net-Ping/t/410_syn_host.t
+++ b/gnu/usr.bin/perl/dist/Net-Ping/t/410_syn_host.t
@@ -79,14 +79,14 @@ foreach my $host (keys %webs) {
# ping() does dns resolution and
# only sends the SYN at this point
Alarm(50); # (Plenty for a DNS lookup)
- is($p->ping($host), 1, "Can reach $host $p->{bad}->{$host}");
+ is($p->ping($host), 1, "Can reach $host [" . ($p->{bad}->{$host} || "") . "]");
}
Alarm(20);
foreach my $host (sort keys %webs) {
my $on = $p->ack($host);
if ($on) {
- is($webs{$host}, 1, "supposed to be up: http://$host/");
+ is($webs{$host}, 1, "supposed to be up: http://$host/ [" . ($p->{bad}->{$host} || "") . "]");
} else {
is($webs{$host}, 0, "supposed to be down: http://$host/ [" . ($p->{bad}->{$host} || "") . "]");
}
diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/500_ping_icmp.t b/gnu/usr.bin/perl/dist/Net-Ping/t/500_ping_icmp.t
index 9fe6877e14a..3050cc3b5f0 100755
--- a/gnu/usr.bin/perl/dist/Net-Ping/t/500_ping_icmp.t
+++ b/gnu/usr.bin/perl/dist/Net-Ping/t/500_ping_icmp.t
@@ -16,12 +16,12 @@ BEGIN {use_ok('Net::Ping')};
SKIP: {
skip "icmp ping requires root privileges.", 1
if ($> and $^O ne 'VMS' and $^O ne 'cygwin')
- or ($^O eq 'MSWin32'
+ or (($^O eq 'MSWin32' or $^O eq 'cygwin')
and !IsAdminUser())
or ($^O eq 'VMS'
and (`write sys\$output f\$privilege("SYSPRV")` =~ m/FALSE/));
my $p = new Net::Ping "icmp";
- is($p->ping("127.0.0.1"), 1);
+ is($p->ping("127.0.0.1"), 1, "icmp ping 127.0.0.1");
}
sub IsAdminUser {
diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/510_ping_udp.t b/gnu/usr.bin/perl/dist/Net-Ping/t/510_ping_udp.t
index ca8e3b08ee4..cb0ca1b8b8b 100755
--- a/gnu/usr.bin/perl/dist/Net-Ping/t/510_ping_udp.t
+++ b/gnu/usr.bin/perl/dist/Net-Ping/t/510_ping_udp.t
@@ -5,28 +5,20 @@ use strict;
sub isWindowsVista {
return unless $^O eq 'MSWin32' or $^O eq "cygwin";
return unless eval { require Win32 };
- return unless defined &Win32::GetOSName;
- return Win32::GetOSName() eq "WinVista";
-}
+ return unless defined &Win32::GetOSVersion();
-BEGIN {
- unless (eval "require Socket") {
- print "1..0 \# Skip: no Socket\n";
- exit;
- }
- unless (getservbyname('echo', 'udp')) {
- print "1..0 \# Skip: no udp echo port\n";
- exit;
- }
+ #is this Vista or later?
+ my ($string, $major, $minor, $build, $id) = Win32::GetOSVersion();
+ return $build >= 6;
- if(isWindowsVista()) {
- print "1..0 \# Skip: udp ping blocked by Vista's default settings\n";
- exit;
- }
}
use Test::More tests => 2;
BEGIN {use_ok('Net::Ping')};
-my $p = new Net::Ping "udp";
-is($p->ping("127.0.0.1"), 1);
+SKIP: {
+ skip "No udp echo port", 1 unless getservbyname('echo', 'udp');
+ skip "udp ping blocked by Window's default settings", 1 if isWindowsVista();
+ my $p = new Net::Ping "udp";
+ is($p->ping("127.0.0.1"), 1);
+}
diff --git a/gnu/usr.bin/perl/dist/Net-Ping/t/520_icmp_ttl.t b/gnu/usr.bin/perl/dist/Net-Ping/t/520_icmp_ttl.t
new file mode 100644
index 00000000000..f553c634245
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Net-Ping/t/520_icmp_ttl.t
@@ -0,0 +1,47 @@
+# Test to perform icmp protocol testing.
+# Root access is required.
+
+BEGIN {
+ unless (eval "require Socket") {
+ print "1..0 \# Skip: no Socket\n";
+ exit;
+ }
+}
+
+use Test::More qw(no_plan);
+BEGIN {use_ok('Net::Ping')};
+
+SKIP: {
+ skip "icmp ping requires root privileges.", 1
+ if ($> and $^O ne 'VMS' and $^O ne 'cygwin')
+ or (($^O eq 'MSWin32' or $^O eq 'cygwin')
+ and !IsAdminUser())
+ or ($^O eq 'VMS'
+ and (`write sys\$output f\$privilege("SYSPRV")` =~ m/FALSE/));
+ my $p = new Net::Ping ("icmp",undef,undef,undef,undef,undef);
+ isa_ok($p, 'Net::Ping');
+ ok $p->ping("127.0.0.1");
+ $p->close();
+ $p = new Net::Ping ("icmp",undef,undef,undef,undef,0);
+ ok $p->ping("127.0.0.1");
+ $p->close();
+ $p = undef();
+ $p = new Net::Ping ("icmp",undef,undef,undef,undef,1);
+ isa_ok($p, 'Net::Ping');
+ $p = undef();
+ $p = eval 'new Net::Ping ("icmp",undef,undef,undef,undef,-1)';
+ ok(!defined($p));
+ $p = undef();
+ $p = eval 'new Net::Ping ("icmp",undef,undef,undef,undef,256)';
+ ok(!defined($p));
+ $p = new Net::Ping ("icmp",undef,undef,undef,undef,10);
+ ok $p->ping("127.0.0.1");
+ $p->close();
+}
+
+sub IsAdminUser {
+ return unless $^O eq 'MSWin32' or $^O eq "cygwin";
+ return unless eval { require Win32 };
+ return unless defined &Win32::IsAdminUser;
+ return Win32::IsAdminUser();
+}
diff --git a/gnu/usr.bin/perl/dist/Safe/Changes b/gnu/usr.bin/perl/dist/Safe/Changes
index 593049c7277..8cde1db330e 100644
--- a/gnu/usr.bin/perl/dist/Safe/Changes
+++ b/gnu/usr.bin/perl/dist/Safe/Changes
@@ -1,3 +1,18 @@
+2.35 Thu Feb 21 2013
+ - localize %SIG in the Safe compartment
+ - actually check that we call execution methods on a Safe object
+
+2.34
+ - Test bug #111462, Safe + %^H + disallowed ops (Father Chrysostomos)
+ cf Perl 5 change 42440e3c68e8bafb7e2a74763360939de0fad6be
+
+2.33 Tue Apr 3 2012
+ - Don’t eval code under ‘no strict’ (Father Chrysostomos)
+ cf. Perl 5 change 25dc25e774abbe993644899cf4d9f9925a9fb9a8
+
+2.32 Sat Mar 31 2012
+ - Make Safe play nice with Devel::Cover
+
2.31 Fri Jan 20 2012
- Now need to use code points above 255 to get SWASHNEW to load
diff --git a/gnu/usr.bin/perl/dist/Safe/MANIFEST b/gnu/usr.bin/perl/dist/Safe/MANIFEST
index b527bc4320f..cb08dd394af 100644
--- a/gnu/usr.bin/perl/dist/Safe/MANIFEST
+++ b/gnu/usr.bin/perl/dist/Safe/MANIFEST
@@ -9,8 +9,10 @@ t/safe3.t
t/safeload.t
t/safenamedcap.t
t/safeops.t
+t/saferegexp.t
t/safesort.t
t/safeuniversal.t
t/safeutf8.t
t/safewrap.t
META.yml Module meta-data (added by MakeMaker)
+META.json Module JSON meta-data (added by MakeMaker)
diff --git a/gnu/usr.bin/perl/dist/Safe/META.yml b/gnu/usr.bin/perl/dist/Safe/META.yml
index 14c4c5a88e3..bcffb010636 100644
--- a/gnu/usr.bin/perl/dist/Safe/META.yml
+++ b/gnu/usr.bin/perl/dist/Safe/META.yml
@@ -1,20 +1,21 @@
---- #YAML:1.0
-name: Safe
-version: 2.30
-abstract: ~
-author: []
-license: unknown
-distribution_type: module
-configure_requires:
- ExtUtils::MakeMaker: 0
+---
+abstract: unknown
+author:
+ - unknown
build_requires:
- ExtUtils::MakeMaker: 0
-requires: {}
-no_index:
- directory:
- - t
- - inc
-generated_by: ExtUtils::MakeMaker version 6.57_05
+ ExtUtils::MakeMaker: 0
+configure_requires:
+ ExtUtils::MakeMaker: 0
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150'
+license: unknown
meta-spec:
- url: http://module-build.sourceforge.net/META-spec-v1.4.html
- version: 1.4
+ url: http://module-build.sourceforge.net/META-spec-v1.4.html
+ version: 1.4
+name: Safe
+no_index:
+ directory:
+ - t
+ - inc
+requires: {}
+version: 2.35
diff --git a/gnu/usr.bin/perl/dist/Safe/Safe.pm b/gnu/usr.bin/perl/dist/Safe/Safe.pm
index a5cc238cba8..f00853e3862 100644
--- a/gnu/usr.bin/perl/dist/Safe/Safe.pm
+++ b/gnu/usr.bin/perl/dist/Safe/Safe.pm
@@ -3,7 +3,7 @@ package Safe;
use 5.003_11;
use Scalar::Util qw(reftype refaddr);
-$Safe::VERSION = "2.31_01";
+$Safe::VERSION = "2.35";
# *** Don't declare any lexicals above this point ***
#
@@ -21,7 +21,7 @@ sub lexless_anon_sub {
# Uses a closure (on $__ExPr__) to pass in the code to be executed.
# (eval on one line to keep line numbers as expected by caller)
eval sprintf
- 'package %s; %s sub { @_=(); eval q[my $__ExPr__;] . $__ExPr__; }',
+ 'package %s; %s sub { @_=(); eval q[local *SIG; my $__ExPr__;] . $__ExPr__; }',
$_[0], $_[1] ? 'use strict;' : '';
}
@@ -140,6 +140,9 @@ my $default_share = [qw[
&Tie::Hash::NamedCapture::SCALAR
&Tie::Hash::NamedCapture::flags
])];
+if (defined $Devel::Cover::VERSION) {
+ push @$default_share, '&Devel::Cover::use_file';
+}
sub new {
my($class, $root, $mask) = @_;
@@ -352,6 +355,8 @@ sub _clean_stash {
sub reval {
my ($obj, $expr, $strict) = @_;
+ die "Bad Safe object" unless $obj->isa('Safe');
+
my $root = $obj->{Root};
my $evalsub = lexless_anon_sub($root, $strict, $expr);
@@ -402,6 +407,7 @@ sub _find_code_refs {
sub wrap_code_ref {
my ($obj, $sub) = @_;
+ die "Bad safe object" unless $obj->isa('Safe');
# wrap code ref $sub with _safe_call_sv so that, when called, the
# execution will happen with the compartment fully 'in effect'.
@@ -437,6 +443,8 @@ sub wrap_code_ref {
sub rdo {
my ($obj, $file) = @_;
+ die "Bad Safe object" unless $obj->isa('Safe');
+
my $root = $obj->{Root};
my $sg = sub_generation();
diff --git a/gnu/usr.bin/perl/dist/Safe/t/safeload.t b/gnu/usr.bin/perl/dist/Safe/t/safeload.t
index 6ff7a762eaf..4d4e7b56899 100755
--- a/gnu/usr.bin/perl/dist/Safe/t/safeload.t
+++ b/gnu/usr.bin/perl/dist/Safe/t/safeload.t
@@ -18,13 +18,17 @@ BEGIN {
use strict;
use Test::More;
use Safe;
-plan(tests => 2);
+plan(tests => 3);
my $c = new Safe;
$c->permit(qw(require caller entereval unpack));
my $r = $c->reval(q{ use version; 1 });
ok( defined $r, "Can load version.pm in a Safe compartment" ) or diag $@;
+$r = $c->reval(q{ version->new(1.2) });
+is(ref $r, "Safe::Root0::version", "version objects rerooted");
+$r or diag $@;
+
# Does this test really belong here? We are testing the "loading" of
# a perl version number.
# This should died because of strictures under 5.12+ and because of the
diff --git a/gnu/usr.bin/perl/dist/Safe/t/safeops.t b/gnu/usr.bin/perl/dist/Safe/t/safeops.t
index 8edb2232c9c..cc25bcb6bb9 100755
--- a/gnu/usr.bin/perl/dist/Safe/t/safeops.t
+++ b/gnu/usr.bin/perl/dist/Safe/t/safeops.t
@@ -40,7 +40,7 @@ while (<$fh>) {
}
close $fh;
-plan(tests => scalar @op + 2);
+plan(tests => scalar @op + 3);
sub testop {
my ($op, $opname, $code) = @_;
@@ -81,6 +81,16 @@ foreach (@op) {
),
qr/Unbalanced/,
'No Unbalanced warnings when disallowing ops';
+ unlike
+ runperl(
+ switches => [ '-MSafe', '-w' ],
+ prog => 'Safe->new->reval('
+ . 'q(BEGIN{$^H{foo}=bar};use strict), 0'
+ .')',
+ stderr => 1,
+ ),
+ qr/Unbalanced/,
+ 'No Unbalanced warnings when disallowing ops with %^H set';
}
# things that begin with SKIP are skipped, for various reasons (notably
@@ -443,7 +453,7 @@ dor $x // $y
dorassign $x //= $y
once SKIP {use feature 'state'; state $foo = 42;}
say SKIP {use feature 'say'; say "foo";}
-smartmatch $x ~~ $y
+smartmatch no warnings 'experimental::smartmatch'; $x ~~ $y
aeach SKIP each @t
akeys SKIP keys @t
avalues SKIP values @t
diff --git a/gnu/usr.bin/perl/dist/Safe/t/saferegexp.t b/gnu/usr.bin/perl/dist/Safe/t/saferegexp.t
new file mode 100644
index 00000000000..2719ca12025
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Safe/t/saferegexp.t
@@ -0,0 +1,34 @@
+#!perl -w
+
+BEGIN {
+ require Config; import Config;
+ if ($Config{'extensions'} !~ /\bOpcode\b/) {
+ print "1..0\n";
+ exit 0;
+ }
+}
+
+use Test::More tests => 3;
+use Safe;
+
+my $c; my $r;
+my $snippet = q{
+ my $foo = qr/foo/;
+ ref $foo;
+};
+$c = new Safe;
+$r = $c->reval($snippet);
+is( $r, "Safe::Root0::Regexp" );
+$r or diag $@;
+
+# once more with the same compartment
+# (where DESTROY has been cleaned up)
+$r = $c->reval($snippet);
+is( $r, "Safe::Root0::Regexp" );
+$r or diag $@;
+
+# try with a new compartment
+$c = new Safe;
+$r = $c->reval($snippet);
+is( $r, "Safe::Root1::Regexp" );
+$r or diag $@;
diff --git a/gnu/usr.bin/perl/dist/Search-Dict/Changes b/gnu/usr.bin/perl/dist/Search-Dict/Changes
new file mode 100644
index 00000000000..8c9928af5a3
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Search-Dict/Changes
@@ -0,0 +1,16 @@
+1.07 2012-04-11
+
+ - install into sitelib for Perl 5.12+
+ - use Tie::Handle to get Tie::StdHandle for older Perls
+ - avoid using fc() in v5.15.0 - v5.15.7
+ - fix tests for older Perls
+
+1.06 2012-03-31
+
+ - suppress stat() warnings on tied filehandles
+
+1.05 2012-03-31
+
+ - no longer requires stat() on filehandle
+ - tests use Test::More
+ - case folds with fc() on Perl 5.15+
diff --git a/gnu/usr.bin/perl/dist/Search-Dict/Makefile.PL b/gnu/usr.bin/perl/dist/Search-Dict/Makefile.PL
new file mode 100644
index 00000000000..51a10b7acdb
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Search-Dict/Makefile.PL
@@ -0,0 +1,22 @@
+use strict;
+use warnings;
+
+use ExtUtils::MakeMaker;
+
+my %WriteMakefileArgs = (
+ "NAME" => "Search::Dict",
+ "VERSION_FROM" => "lib/Search/Dict.pm",
+ "ABSTRACT_FROM" => "lib/Search/Dict.pm",
+ "AUTHOR" => "The Perl 5 Porters",
+ "EXE_FILES" => [],
+ "LICENSE" => "perl",
+ "PREREQ_PM" => {
+ "Exporter" => 0,
+ "Test::More" => 0.47,
+ "Tie::Handle" => 0,
+ },
+ INSTALLDIRS => ( $] lt '5.012' ? 'perl' : 'site' ),
+);
+
+WriteMakefile(%WriteMakefileArgs);
+
diff --git a/gnu/usr.bin/perl/dist/Search-Dict/README.patching b/gnu/usr.bin/perl/dist/Search-Dict/README.patching
new file mode 100644
index 00000000000..de32292e5b6
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Search-Dict/README.patching
@@ -0,0 +1,27 @@
+Patching instructions for Search-Dict
+
+1. Check for any changes to .pm files since dev or stable Perl release. E.g.
+to check for changes since v5.15.8:
+
+ $ cd dist/g
+ $ git log v5.15.8..blead -- .
+
+2. If you are making the first change since the last Perl release, you need to
+bump the $VERSION in all .pm files and update the Changes file with the new
+version. In the Changes file, put the expected *NEXT* release of Perl (dev or
+stable) as the release date and version. E.g. after v5.15.8, I would add this line
+to Changes to indicate what will be next release:
+
+ 0.280206 - 2012-03-20 (Perl v5.15.9)
+
+3. Add an entry to Changes for your work
+
+4. Update Makefile.PL, MANIFEST.SKIP or other support files as necessary. E.g.
+update Makefile.PL with any changes to prerequisites.
+
+5. Commit all changes (preferably to a branch)
+
+6. Run Configure/make/make test and check for errors. If there are any, fix them.
+
+7. If all is well, push your commits to blead or send a patch to p5p if you do
+not have commit access to the Perl 5 repository
diff --git a/gnu/usr.bin/perl/dist/Search-Dict/README.release b/gnu/usr.bin/perl/dist/Search-Dict/README.release
new file mode 100644
index 00000000000..187f06b490f
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Search-Dict/README.release
@@ -0,0 +1,49 @@
+Release instructions for dual-life Search::Dict
+
+1. Check out a tag/commit corresponding to the release point. This
+should generally be a Perl release (dev or stable). Make sure
+your working tree is clear of extraneous files. E.g.
+
+ $ git checkout v5.15.8
+ $ git clean -dxf
+
+2. Rsync the Search-Dict directory to a temporary directory for
+release. E.g.
+
+ $ rsync -av --delete dist/Search-Dict /tmp
+
+3. Change to the temp directory
+
+ $ cd /tmp/Search-Dict
+
+4. Look at the Changes file. If it was not kept up to date in blead,
+take a minute to feel sad, then update it. Remember to copy the
+changes back to blead later.
+
+5. Configure and then make a MANIFEST
+
+ $ perl Makefile.PL
+ $ make manifest
+
+6. Build a release directory and examine its contents, paying particular
+attention to the MANIFEST and the META files
+
+ $ make distdir
+
+7. Test the release directory
+
+ $ make disttest
+
+8. If all looks good, create a tarball and upload it to CPAN (maybe
+install CPAN::Uploader or an equivalent tool)
+
+ $ make dist
+ $ cpan_upload Search-Dict-X.YYYZZZ.tar.gz
+
+9. Update Porting/Maintainers.pl in the Perl repo with the new tarball
+name for Search-Dict.
+
+10. If you updated Changes, copy that back to blead now
+
+11. Commit any changes to blead (or submit it as a patch if you don't have a
+commit bit)
diff --git a/gnu/usr.bin/perl/dist/Search-Dict/lib/Search/Dict.pm b/gnu/usr.bin/perl/dist/Search-Dict/lib/Search/Dict.pm
index 5fe6f73b041..f34d2220e5e 100644
--- a/gnu/usr.bin/perl/dist/Search-Dict/lib/Search/Dict.pm
+++ b/gnu/usr.bin/perl/dist/Search-Dict/lib/Search/Dict.pm
@@ -2,9 +2,18 @@ package Search::Dict;
require 5.000;
require Exporter;
+my $fc_available;
+BEGIN {
+ $fc_available = '5.015008';
+ if ( $] ge $fc_available ) {
+ require feature;
+ 'feature'->import('fc'); # string avoids warning on old Perls <sigh>
+ }
+}
+
use strict;
-our $VERSION = '1.04';
+our $VERSION = '1.07';
our @ISA = qw(Exporter);
our @EXPORT = qw(look);
@@ -60,12 +69,19 @@ sub look {
}
$comp = sub { $_[0] cmp $_[1] } unless defined $comp;
local($_);
- my(@stat) = stat($fh)
- or return -1;
+ my $fno = fileno $fh;
+ my @stat;
+ if ( defined $fno && $fno >= 0 && ! tied *{$fh} ) { # real, open file
+ @stat = eval { stat($fh) }; # in case fileno lies
+ }
my($size, $blksize) = @stat[7,11];
+ $size = do { seek($fh,0,2); my $s = tell($fh); seek($fh,0,0); $s }
+ unless defined $size;
$blksize ||= 8192;
$key =~ s/[^\w\s]//g if $dict;
- $key = lc $key if $fold;
+ if ( $fold ) {
+ $key = $] ge $fc_available ? fc($key) : lc($key);
+ }
# find the right block
my($min, $max) = (0, int($size / $blksize));
my $mid;
@@ -78,7 +94,9 @@ sub look {
$_ = $xfrm->($_) if defined $xfrm;
chomp;
s/[^\w\s]//g if $dict;
- $_ = lc $_ if $fold;
+ if ( $fold ) {
+ $_ = $] ge $fc_available ? fc($_) : lc($_);
+ }
if (defined($_) && $comp->($_, $key) < 0) {
$min = $mid;
}
@@ -98,7 +116,9 @@ sub look {
$_ = $xfrm->($_) if defined $xfrm;
chomp;
s/[^\w\s]//g if $dict;
- $_ = lc $_ if $fold;
+ if ( $fold ) {
+ $_ = $] ge $fc_available ? fc($_) : lc($_);
+ }
last if $comp->($_, $key) >= 0;
}
seek($fh,$min,0);
diff --git a/gnu/usr.bin/perl/dist/Search-Dict/t/Dict.t b/gnu/usr.bin/perl/dist/Search-Dict/t/Dict.t
index 996251e43b0..bc997b05d2b 100644
--- a/gnu/usr.bin/perl/dist/Search-Dict/t/Dict.t
+++ b/gnu/usr.bin/perl/dist/Search-Dict/t/Dict.t
@@ -1,8 +1,10 @@
#!./perl
-print "1..4\n";
+use strict;
+use Test::More;
+plan tests => ( $] ge '5.008' ? 14 : 10 );
-$DICT = <<EOT;
+my $DICT = <<EOT;
Aarhus
Aaron
Ababa
@@ -33,50 +35,90 @@ abating
Abba
EOT
+use Tie::Handle; # loads Tie::StdHandle
use Search::Dict;
open(DICT, "+>dict-$$") or die "Can't create dict-$$: $!";
binmode DICT; # To make length expected one.
print DICT $DICT;
+my $word;
+
my $pos = look *DICT, "Ababa";
chomp($word = <DICT>);
-print "not " if $pos < 0 || $word ne "Ababa";
-print "ok 1\n";
+cmp_ok $pos, ">=", 0;
+is $word, "Ababa", "found 'Ababa' from file";
if (ord('a') > ord('A') ) { # ASCII
$pos = look *DICT, "foo";
- chomp($word = <DICT>);
+ $word = <DICT>;
- print "not " if $pos != length($DICT); # will search to end of file
- print "ok 2\n";
+ is $pos, length($DICT), "word not found will search to end of file";
my $pos = look *DICT, "abash";
chomp($word = <DICT>);
- print "not " if $pos < 0 || $word ne "abash";
- print "ok 3\n";
-
+ cmp_ok $pos, ">=", 0;
+ is $word, "abash";
}
else { # EBCDIC systems e.g. os390
$pos = look *DICT, "FOO";
- chomp($word = <DICT>);
+ $word = <DICT>;
- print "not " if $pos != length($DICT); # will search to end of file
- print "ok 2\n";
+ is $pos, length($DICT); # will search to end of file
my $pos = look *DICT, "Abba";
chomp($word = <DICT>);
- print "not " if $pos < 0 || $word ne "Abba";
- print "ok 3\n";
+ cmp_ok $pos, ">=", 0;
+ is $word, "Abba";
}
$pos = look *DICT, "aarhus", 1, 1;
chomp($word = <DICT>);
-print "not " if $pos < 0 || $word ne "Aarhus";
-print "ok 4\n";
+cmp_ok $pos, ">=", 0;
+is $word, "Aarhus";
close DICT or die "cannot close";
+
+{
+ local $^W = 1; # turn on global warnings for stat() in Search::Dict
+
+ my $warn = '';
+ local $SIG{__WARN__} = sub { $warn = join("\n",@_) };
+
+ tie *DICT, 'Tie::StdHandle', "<", "dict-$$";
+
+ $pos = look \*DICT, "aarhus", 1, 1;
+ is( $warn, '', "no warning seen" );
+
+ $word = <DICT>;
+ chomp $word;
+
+ cmp_ok $pos, ">=", 0, "case-insensitive search for 'aarhus' returned > 0";
+ is $word, "Aarhus", "case-insensitive search found 'Aarhus'";
+
+ untie *DICT;
+}
unlink "dict-$$";
+
+if ( $] ge '5.008' ) {
+ open my $strfh, "<", \$DICT or die $!;
+
+ {
+ my $pos = look $strfh, 'Ababa';
+ chomp($word = <$strfh>);
+ cmp_ok $pos, ">=", 0;
+ is $word, "Ababa";
+ }
+
+ {
+ my $pos = look $strfh, "aarhus", 1, 1;
+ chomp($word = <$strfh>);
+ cmp_ok $pos, ">=", 0;
+ is $word, "Aarhus";
+ }
+
+ close $strfh;
+}
diff --git a/gnu/usr.bin/perl/dist/SelfLoader/lib/SelfLoader.pm b/gnu/usr.bin/perl/dist/SelfLoader/lib/SelfLoader.pm
index 03d4ce01b0c..53a0dbfcabc 100644
--- a/gnu/usr.bin/perl/dist/SelfLoader/lib/SelfLoader.pm
+++ b/gnu/usr.bin/perl/dist/SelfLoader/lib/SelfLoader.pm
@@ -2,7 +2,7 @@ package SelfLoader;
use 5.008;
use strict;
use IO::Handle;
-our $VERSION = "1.20";
+our $VERSION = "1.21";
# The following bit of eval-magic is necessary to make this work on
# perls < 5.009005.
@@ -386,32 +386,32 @@ This package has the same copyright and license as the perl core:
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006 by Larry Wall and others
-
+
All rights reserved.
-
+
This program is free software; you can redistribute it and/or modify
it under the terms of either:
-
+
a) the GNU General Public License as published by the Free
Software Foundation; either version 1, or (at your option) any
later version, or
-
+
b) the "Artistic License" which comes with this Kit.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either
the GNU General Public License or the Artistic License for more details.
-
+
You should have received a copy of the Artistic License with this
Kit, in the file named "Artistic". If not, I'll be glad to provide one.
-
+
You should also have received a copy of the GNU General Public License
along with this program in the file named "Copying". If not, write to the
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
MA 02110-1301, USA or visit their web page on the internet at
http://www.gnu.org/copyleft/gpl.html.
-
+
For those of you that choose to use the GNU General Public License,
my interpretation of the GNU General Public License is that no Perl
script falls under the terms of the GPL unless you explicitly put
diff --git a/gnu/usr.bin/perl/dist/Storable/ChangeLog b/gnu/usr.bin/perl/dist/Storable/ChangeLog
index d7f9fab2e03..31e1b0ca255 100644
--- a/gnu/usr.bin/perl/dist/Storable/ChangeLog
+++ b/gnu/usr.bin/perl/dist/Storable/ChangeLog
@@ -1,3 +1,14 @@
+?
+ Version 2.40
+
+ Security warnings section added
+
+Tue 11 Sep 06:51:11 IST 2012 Abhijit Menon-Sen <ams@toroid.org>
+ Version 2.39
+
+ Various bugfixes, including compatibility fixes for older
+ versions of Perl and vstring handling.
+
Sun 3 Jul 09:10:11 IST 2011 Abhijit Menon-Sen <ams@toroid.org>
Version 2.29
diff --git a/gnu/usr.bin/perl/dist/Storable/Makefile.PL b/gnu/usr.bin/perl/dist/Storable/Makefile.PL
index bcfd9e0cff6..23111299f5d 100644
--- a/gnu/usr.bin/perl/dist/Storable/Makefile.PL
+++ b/gnu/usr.bin/perl/dist/Storable/Makefile.PL
@@ -14,7 +14,7 @@ WriteMakefile(
# We now ship this in t/
# PREREQ_PM => { 'Test::More' => '0.41' },
PREREQ_PM => { XSLoader => 0 },
- INSTALLDIRS => $] >= 5.007 ? 'perl' : 'site',
+ INSTALLDIRS => ($] >= 5.007 && $] < 5.012) ? 'perl' : 'site',
VERSION_FROM => 'Storable.pm',
($ExtUtils::MakeMaker::VERSION > 6.45 ?
(META_MERGE => { resources =>
diff --git a/gnu/usr.bin/perl/dist/Storable/Storable.pm b/gnu/usr.bin/perl/dist/Storable/Storable.pm
index 5601f6d0f2b..bb1083d3fd6 100644
--- a/gnu/usr.bin/perl/dist/Storable/Storable.pm
+++ b/gnu/usr.bin/perl/dist/Storable/Storable.pm
@@ -21,7 +21,7 @@ package Storable; @ISA = qw(Exporter);
use vars qw($canonical $forgive_me $VERSION);
-$VERSION = '2.34';
+$VERSION = '2.41';
BEGIN {
if (eval { local $SIG{__DIE__}; require Log::Agent; 1 }) {
@@ -905,8 +905,8 @@ This returns the file format version as number. It is a string like
"2.007". This value is suitable for numeric comparisons.
The constant function C<Storable::BIN_VERSION_NV> returns a comparable
-number that represent the highest file version number that this
-version of Storable fully support (but see discussion of
+number that represents the highest file version number that this
+version of Storable fully supports (but see discussion of
C<$Storable::accept_future_minor> above). The constant
C<Storable::BIN_WRITE_VERSION_NV> function returns what file version
is written and might be less than C<Storable::BIN_VERSION_NV> in some
@@ -1019,6 +1019,38 @@ compartment:
=for example_testing
is( $code->(), 42 );
+=head1 SECURITY WARNING
+
+B<Do not accept Storable documents from untrusted sources!>
+
+Some features of Storable can lead to security vulnerabilities if you
+accept Storable documents from untrusted sources. Most obviously, the
+optional (off by default) CODE reference serialization feature allows
+transfer of code to the deserializing process. Furthermore, any
+serialized object will cause Storable to helpfully load the module
+corresponding to the class of the object in the deserializing module.
+For manipulated module names, this can load almost arbitrary code.
+Finally, the deserialized object's destructors will be invoked when
+the objects get destroyed in the deserializing process. Maliciously
+crafted Storable documents may put such objects in the value of
+a hash key that is overridden by another key/value pair in the
+same hash, thus causing immediate destructor execution.
+
+In a future version of Storable, we intend to provide options to disable
+loading modules for classes and to disable deserializing objects
+altogether. I<Nonetheless, Storable deserializing documents from
+untrusted sources is expected to have other, yet undiscovered,
+security concerns such as allowing an attacker to cause the deserializer
+to crash hard.>
+
+B<Therefore, let me repeat: Do not accept Storable documents from
+untrusted sources!>
+
+If your application requires accepting data from untrusted sources, you
+are best off with a less powerful and more-likely safe serialization format
+and implementation. If your data is sufficently simple, JSON is a good
+choice and offers maximum interoperability.
+
=head1 WARNING
If you're using references as keys within your hash tables, you're bound
diff --git a/gnu/usr.bin/perl/dist/Storable/Storable.xs b/gnu/usr.bin/perl/dist/Storable/Storable.xs
index ca6f9b48ecf..eca061a12b7 100644
--- a/gnu/usr.bin/perl/dist/Storable/Storable.xs
+++ b/gnu/usr.bin/perl/dist/Storable/Storable.xs
@@ -17,7 +17,7 @@
#include <patchlevel.h> /* Perl's one, needed since 5.6 */
#endif
-#if !defined(PERL_VERSION) || PERL_VERSION < 8 || (PERL_VERSION == 8 && PERL_SUBVERSION < 9) || (PERL_VERSION == 10 && PERL_SUBVERSION < 1)
+#if !defined(PERL_VERSION) || PERL_VERSION < 10 || (PERL_VERSION == 10 && PERL_SUBVERSION < 1)
#define NEED_load_module
#define NEED_vload_module
#define NEED_newCONSTSUB
@@ -148,7 +148,9 @@
#define SX_CODE C(26) /* Code references as perl source code */
#define SX_WEAKREF C(27) /* Weak reference to object forthcoming */
#define SX_WEAKOVERLOAD C(28) /* Overloaded weak reference */
-#define SX_ERROR C(29) /* Error */
+#define SX_VSTRING C(29) /* vstring forthcoming (small) */
+#define SX_LVSTRING C(30) /* vstring forthcoming (large) */
+#define SX_ERROR C(31) /* Error */
/*
* Those are only used to retrieve "old" pre-0.6 binary images.
@@ -259,6 +261,9 @@ typedef unsigned long stag_t; /* Used by pre-0.6 binary format */
#ifndef SvWEAKREF
#define WEAKREF_CROAK() CROAK(("Cannot retrieve weak references in this perl"))
#endif
+#ifndef SvVOK
+#define VSTRING_CROAK() CROAK(("Cannot retrieve vstring in this perl"))
+#endif
#ifdef HvPLACEHOLDERS
#define HAS_RESTRICTED_HASHES
@@ -788,15 +793,17 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
#endif
#define STORABLE_BIN_MAJOR 2 /* Binary major "version" */
-#define STORABLE_BIN_MINOR 8 /* Binary minor "version" */
+#define STORABLE_BIN_MINOR 9 /* Binary minor "version" */
#if (PATCHLEVEL <= 5)
#define STORABLE_BIN_WRITE_MINOR 4
-#else
+#elif !defined (SvVOK)
/*
- * Perl 5.6.0 onwards can do weak references.
+ * Perl 5.6.0-5.8.0 can do weak references, but not vstring magic.
*/
#define STORABLE_BIN_WRITE_MINOR 8
+#else
+#define STORABLE_BIN_WRITE_MINOR 9
#endif /* (PATCHLEVEL <= 5) */
#if (PATCHLEVEL < 8 || (PATCHLEVEL == 8 && SUBVERSION < 1))
@@ -1040,6 +1047,12 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
static int store(pTHX_ stcxt_t *cxt, SV *sv);
static SV *retrieve(pTHX_ stcxt_t *cxt, const char *cname);
+#define UNSEE() \
+ STMT_START { \
+ av_pop(cxt->aseen); \
+ cxt->tagnum--; \
+ } STMT_END
+
/*
* Dynamic dispatching table for SV store.
*/
@@ -1122,6 +1135,8 @@ static const sv_retrieve_t sv_old_retrieve[] = {
(sv_retrieve_t)retrieve_other, /* SX_CODE not supported */
(sv_retrieve_t)retrieve_other, /* SX_WEAKREF not supported */
(sv_retrieve_t)retrieve_other, /* SX_WEAKOVERLOAD not supported */
+ (sv_retrieve_t)retrieve_other, /* SX_VSTRING not supported */
+ (sv_retrieve_t)retrieve_other, /* SX_LVSTRING not supported */
(sv_retrieve_t)retrieve_other, /* SX_ERROR */
};
@@ -1140,6 +1155,8 @@ static SV *retrieve_flag_hash(pTHX_ stcxt_t *cxt, const char *cname);
static SV *retrieve_code(pTHX_ stcxt_t *cxt, const char *cname);
static SV *retrieve_weakref(pTHX_ stcxt_t *cxt, const char *cname);
static SV *retrieve_weakoverloaded(pTHX_ stcxt_t *cxt, const char *cname);
+static SV *retrieve_vstring(pTHX_ stcxt_t *cxt, const char *cname);
+static SV *retrieve_lvstring(pTHX_ stcxt_t *cxt, const char *cname);
static const sv_retrieve_t sv_retrieve[] = {
0, /* SX_OBJECT -- entry unused dynamically */
@@ -1171,6 +1188,8 @@ static const sv_retrieve_t sv_retrieve[] = {
(sv_retrieve_t)retrieve_code, /* SX_CODE */
(sv_retrieve_t)retrieve_weakref, /* SX_WEAKREF */
(sv_retrieve_t)retrieve_weakoverloaded, /* SX_WEAKOVERLOAD */
+ (sv_retrieve_t)retrieve_vstring, /* SX_VSTRING */
+ (sv_retrieve_t)retrieve_lvstring, /* SX_LVSTRING */
(sv_retrieve_t)retrieve_other, /* SX_ERROR */
};
@@ -1932,8 +1951,13 @@ static int store_ref(pTHX_ stcxt_t *cxt, SV *sv)
* Store a scalar.
*
* Layout is SX_LSCALAR <length> <data>, SX_SCALAR <length> <data> or SX_UNDEF.
+ * SX_LUTF8STR and SX_UTF8STR are used for UTF-8 strings.
* The <data> section is omitted if <length> is 0.
*
+ * For vstrings, the vstring portion is stored first with
+ * SX_LVSTRING <length> <data> or SX_VSTRING <length> <data>, followed by
+ * SX_(L)SCALAR or SX_(L)UTF8STR with the actual PV.
+ *
* If integer or double, the layout is SX_INTEGER <data> or SX_DOUBLE <data>.
* Small integers (within [-127, +127]) are stored as SX_BYTE <byte>.
*/
@@ -2110,6 +2134,9 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv)
TRACEME(("ok (double 0x%"UVxf", value = %"NVff")", PTR2UV(sv), nv));
} else if (flags & (SVp_POK | SVp_NOK | SVp_IOK)) {
+#ifdef SvVOK
+ MAGIC *mg;
+#endif
I32 wlen; /* For 64-bit machines */
string_readlen:
@@ -2121,6 +2148,12 @@ static int store_scalar(pTHX_ stcxt_t *cxt, SV *sv)
*/
string:
+#ifdef SvVOK
+ if (SvMAGICAL(sv) && (mg = mg_find(sv, 'V')))
+ STORE_PV_LEN((const char *)mg->mg_ptr,
+ mg->mg_len, SX_VSTRING, SX_LVSTRING);
+#endif
+
wlen = (I32) len; /* WLEN via STORE_SCALAR expects I32 */
if (SvUTF8 (sv))
STORE_UTF8STR(pv, wlen);
@@ -2854,6 +2887,7 @@ static int store_hook(
*/
switch (type) {
+ case svis_REF:
case svis_SCALAR:
obj_type = SHT_SCALAR;
break;
@@ -2916,9 +2950,8 @@ static int store_hook(
TRACEME(("about to call STORABLE_freeze on class %s", classname));
- ref = newRV_noinc(sv); /* Temporary reference */
+ ref = newRV_inc(sv); /* Temporary reference */
av = array_call(aTHX_ ref, hook, clone); /* @a = $object->STORABLE_freeze($c) */
- SvRV_set(ref, NULL);
SvREFCNT_dec(ref); /* Reclaim temporary reference */
count = AvFILLp(av) + 1;
@@ -4216,8 +4249,12 @@ static SV *retrieve_hook(pTHX_ stcxt_t *cxt, const char *cname)
attached = scalar_call(aTHX_ rv, attach_hook, clone, av, G_SCALAR);
if (attached &&
SvROK(attached) &&
- sv_derived_from(attached, classname))
+ sv_derived_from(attached, classname)
+ ) {
+ UNSEE();
+ SEEN(SvRV(attached), 0, 0);
return SvRV(attached);
+ }
CROAK(("STORABLE_attach did not return a %s object", classname));
}
@@ -4850,6 +4887,79 @@ static SV *retrieve_lutf8str(pTHX_ stcxt_t *cxt, const char *cname)
}
/*
+ * retrieve_vstring
+ *
+ * Retrieve a vstring, and then retrieve the stringy scalar following it,
+ * attaching the vstring to the scalar via magic.
+ * If we're retrieving a vstring in a perl without vstring magic, croaks.
+ *
+ * The vstring layout mirrors an SX_SCALAR string:
+ * SX_VSTRING <length> <data> with SX_VSTRING already read.
+ */
+static SV *retrieve_vstring(pTHX_ stcxt_t *cxt, const char *cname)
+{
+#ifdef SvVOK
+ MAGIC *mg;
+ char s[256];
+ int len;
+ SV *sv;
+
+ GETMARK(len);
+ TRACEME(("retrieve_vstring (#%d), len = %d", cxt->tagnum, len));
+
+ READ(s, len);
+
+ sv = retrieve(aTHX_ cxt, cname);
+
+ sv_magic(sv,NULL,PERL_MAGIC_vstring,s,len);
+ /* 5.10.0 and earlier seem to need this */
+ SvRMAGICAL_on(sv);
+
+ TRACEME(("ok (retrieve_vstring at 0x%"UVxf")", PTR2UV(sv)));
+ return sv;
+#else
+ VSTRING_CROAK();
+ return Nullsv;
+#endif
+}
+
+/*
+ * retrieve_lvstring
+ *
+ * Like retrieve_vstring, but for longer vstrings.
+ */
+static SV *retrieve_lvstring(pTHX_ stcxt_t *cxt, const char *cname)
+{
+#ifdef SvVOK
+ MAGIC *mg;
+ char *s;
+ I32 len;
+ SV *sv;
+
+ RLEN(len);
+ TRACEME(("retrieve_lvstring (#%d), len = %"IVdf,
+ cxt->tagnum, (IV)len));
+
+ New(10003, s, len+1, char);
+ SAFEPVREAD(s, len, s);
+
+ sv = retrieve(aTHX_ cxt, cname);
+
+ sv_magic(sv,NULL,PERL_MAGIC_vstring,s,len);
+ /* 5.10.0 and earlier seem to need this */
+ SvRMAGICAL_on(sv);
+
+ Safefree(s);
+
+ TRACEME(("ok (retrieve_lvstring at 0x%"UVxf")", PTR2UV(sv)));
+ return sv;
+#else
+ VSTRING_CROAK();
+ return Nullsv;
+#endif
+}
+
+/*
* retrieve_integer
*
* Retrieve defined integer.
@@ -5097,7 +5207,7 @@ static SV *retrieve_hash(pTHX_ stcxt_t *cxt, const char *cname)
SEEN(hv, cname, 0); /* Will return if table not allocated properly */
if (len == 0)
return (SV *) hv; /* No data follow if table empty */
- hv_ksplit(hv, len); /* pre-extend hash to save multiple splits */
+ hv_ksplit(hv, len + 1); /* pre-extend hash to save multiple splits */
/*
* Now get each key/value pair in turn...
@@ -5184,7 +5294,7 @@ static SV *retrieve_flag_hash(pTHX_ stcxt_t *cxt, const char *cname)
SEEN(hv, cname, 0); /* Will return if table not allocated properly */
if (len == 0)
return (SV *) hv; /* No data follow if table empty */
- hv_ksplit(hv, len); /* pre-extend hash to save multiple splits */
+ hv_ksplit(hv, len + 1); /* pre-extend hash to save multiple splits */
/*
* Now get each key/value pair in turn...
@@ -5503,7 +5613,7 @@ static SV *old_retrieve_hash(pTHX_ stcxt_t *cxt, const char *cname)
SEEN(hv, 0, 0); /* Will return if table not allocated properly */
if (len == 0)
return (SV *) hv; /* No data follow if table empty */
- hv_ksplit(hv, len); /* pre-extend hash to save multiple splits */
+ hv_ksplit(hv, len + 1); /* pre-extend hash to save multiple splits */
/*
* Now get each key/value pair in turn...
diff --git a/gnu/usr.bin/perl/dist/Storable/t/attach_errors.t b/gnu/usr.bin/perl/dist/Storable/t/attach_errors.t
index df8a79fccb8..c163ca04fa9 100755
--- a/gnu/usr.bin/perl/dist/Storable/t/attach_errors.t
+++ b/gnu/usr.bin/perl/dist/Storable/t/attach_errors.t
@@ -22,7 +22,7 @@ sub BEGIN {
}
}
-use Test::More tests => 35;
+use Test::More tests => 40;
use Storable ();
@@ -215,6 +215,41 @@ use Storable ();
}
}
+# Good case - multiple references to the same object should be attached properly
+{
+ my $obj = bless { id => 111 }, 'My::GoodAttach::MultipleReferences';
+ my $arr = [$obj];
+
+ push @$arr, $obj;
+
+ my $frozen = Storable::freeze($arr);
+
+ ok( $frozen, 'My::GoodAttach return as expected' );
+
+ my $thawed = eval {
+ Storable::thaw( $frozen );
+ };
+
+ isa_ok( $thawed->[0], 'My::GoodAttach::MultipleReferences' );
+ isa_ok( $thawed->[1], 'My::GoodAttach::MultipleReferences' );
+
+ is($thawed->[0], $thawed->[1], 'References to the same object are attached properly');
+ is($thawed->[1]{id}, $obj->{id}, 'Object with multiple references attchached properly');
+
+ package My::GoodAttach::MultipleReferences;
+
+ sub STORABLE_freeze {
+ my ($obj) = @_;
+ $obj->{id}
+ }
+
+ sub STORABLE_attach {
+ my ($class, $cloning, $id) = @_;
+ bless { id => $id }, $class;
+ }
+
+}
+
# Bad Cases - die on thaw
diff --git a/gnu/usr.bin/perl/dist/Storable/t/blessed.t b/gnu/usr.bin/perl/dist/Storable/t/blessed.t
index 6657e3c4248..fe439acea86 100755
--- a/gnu/usr.bin/perl/dist/Storable/t/blessed.t
+++ b/gnu/usr.bin/perl/dist/Storable/t/blessed.t
@@ -26,8 +26,17 @@ use Storable qw(freeze thaw store retrieve);
n => \(1 == 0)
);
+{
+ %::weird_refs = (
+ REF => \(my $aref = []),
+ VSTRING => \(my $vstring = v1.2.3),
+ 'long VSTRING' => \(my $vstring = eval "v" . 0 x 300),
+ LVALUE => \(my $substr = substr((my $str = "foo"), 0, 3)),
+ );
+}
+
my $test = 12;
-my $tests = $test + 22 + 2 * 6 * keys %::immortals;
+my $tests = $test + 23 + (2 * 6 * keys %::immortals) + (3 * keys %::weird_refs);
plan(tests => $tests);
package SHORT_NAME;
@@ -249,3 +258,50 @@ is($STRESS_THE_STACK::freeze_count, 1);
is($STRESS_THE_STACK::thaw_count, 1);
isnt($t, undef);
is(ref $t, 'STRESS_THE_STACK');
+
+{
+ package ModifyARG112358;
+ sub STORABLE_freeze { $_[0] = "foo"; }
+ my $o= {str=>bless {}};
+ my $f= ::freeze($o);
+ ::is ref $o->{str}, __PACKAGE__,
+ 'assignment to $_[0] in STORABLE_freeze does not corrupt things';
+}
+
+# [perl #113880]
+{
+ {
+ package WeirdRefHook;
+ sub STORABLE_freeze { () }
+ $INC{'WeirdRefHook.pm'} = __FILE__;
+ }
+
+ for my $weird (keys %weird_refs) {
+ my $obj = $weird_refs{$weird};
+ bless $obj, 'WeirdRefHook';
+ my $frozen;
+ my $success = eval { $frozen = freeze($obj); 1 };
+ ok($success, "can freeze $weird objects")
+ || diag("freezing failed: $@");
+ my $thawn = thaw($frozen);
+ # is_deeply ignores blessings
+ is ref $thawn, ref $obj, "get the right blessing back for $weird";
+ if ($weird =~ 'VSTRING') {
+ # It is not just Storable that did not support vstrings. :-)
+ # See https://rt.cpan.org/Ticket/Display.html?id=78678
+ my $newver = "version"->can("new")
+ ? sub { "version"->new(shift) }
+ : sub { "" };
+ if (!ok
+ $$thawn eq $$obj && &$newver($$thawn) eq &$newver($$obj),
+ "get the right value back"
+ ) {
+ diag "$$thawn vs $$obj";
+ diag &$newver($$thawn) eq &$newver($$obj) if &$newver(1);
+ }
+ }
+ else {
+ is_deeply($thawn, $obj, "get the right value back");
+ }
+ }
+}
diff --git a/gnu/usr.bin/perl/dist/Storable/t/malice.t b/gnu/usr.bin/perl/dist/Storable/t/malice.t
index 79df2d513f3..ffc9fcf54f3 100755
--- a/gnu/usr.bin/perl/dist/Storable/t/malice.t
+++ b/gnu/usr.bin/perl/dist/Storable/t/malice.t
@@ -34,8 +34,8 @@ $file_magic_str = 'pst0';
$other_magic = 7 + length $byteorder;
$network_magic = 2;
$major = 2;
-$minor = 8;
-$minor_write = $] > 5.005_50 ? 8 : 4;
+$minor = 9;
+$minor_write = $] > 5.008 ? 9 : $] > 5.005_50 ? 8 : 4;
use Test::More;
@@ -208,7 +208,7 @@ sub test_things {
$where = $file_magic + $network_magic;
}
- # Just the header and a tag 255. As 28 is currently the highest tag, this
+ # Just the header and a tag 255. As 30 is currently the highest tag, this
# is "unexpected"
$copy = substr ($contents, 0, $where) . chr 255;
@@ -228,7 +228,7 @@ sub test_things {
# local $Storable::DEBUGME = 1;
# This is the delayed croak
test_corrupt ($copy, $sub,
- "/^Storable binary image v$header->{major}.$minor6 contains data of type 255. This Storable is v$header->{major}.$minor and can only handle data types up to 28/",
+ "/^Storable binary image v$header->{major}.$minor6 contains data of type 255. This Storable is v$header->{major}.$minor and can only handle data types up to 30/",
"bogus tag, minor plus 4");
# And check again that this croak is not delayed:
{
diff --git a/gnu/usr.bin/perl/dist/Storable/t/restrict.t b/gnu/usr.bin/perl/dist/Storable/t/restrict.t
index 65dac6ff265..a8a9d81495c 100755
--- a/gnu/usr.bin/perl/dist/Storable/t/restrict.t
+++ b/gnu/usr.bin/perl/dist/Storable/t/restrict.t
@@ -36,7 +36,7 @@ sub BEGIN {
use Storable qw(dclone freeze thaw);
use Hash::Util qw(lock_hash unlock_value lock_keys);
-use Test::More tests => 104;
+use Test::More tests => 304;
my %hash = (question => '?', answer => 42, extra => 'junk', undef => undef);
lock_hash %hash;
@@ -118,3 +118,24 @@ for $Storable::canonical (0, 1) {
ok eval { $$hv2{a} = 70 }, 'COWs do not become read-only';
}
}
+
+# [perl #73972]
+{
+ for my $n (1..100) {
+ my @keys = map { "FOO$_" } (1..$n);
+
+ my $hash1 = {};
+ lock_keys(%$hash1, @keys);
+ my $hash2 = dclone($hash1);
+
+ my $success;
+
+ $success = eval { $hash2->{$_} = 'test' for @keys; 1 };
+ my $err = $@;
+ ok($success, "can store in all of the $n restricted slots")
+ || diag("failed with $@");
+
+ $success = !eval { $hash2->{a} = 'test'; 1 };
+ ok($success, "the hash is still restricted");
+ }
+}
diff --git a/gnu/usr.bin/perl/dist/Term-ReadLine/lib/Term/ReadLine.pm b/gnu/usr.bin/perl/dist/Term-ReadLine/lib/Term/ReadLine.pm
index 3770df05529..1aa19d397ec 100644
--- a/gnu/usr.bin/perl/dist/Term-ReadLine/lib/Term/ReadLine.pm
+++ b/gnu/usr.bin/perl/dist/Term-ReadLine/lib/Term/ReadLine.pm
@@ -117,7 +117,7 @@ C<readline> method).
=item C<event_loop>
Registers call-backs to wait for user input (i.e., during C<readline>
-method). This supercedes tkRunning.
+method). This supersedes tkRunning.
The first call-back registered is the call back for waiting. It is
expected that the callback will call the current event loop until
@@ -233,24 +233,17 @@ sub findConsole {
my $console;
my $consoleOUT;
- if (-e "/dev/tty") {
+ if (-e "/dev/tty" and $^O ne 'MSWin32') {
$console = "/dev/tty";
- } elsif (-e "con" or $^O eq 'MSWin32') {
+ } elsif (-e "con" or $^O eq 'MSWin32' or $^O eq 'msys') {
$console = 'CONIN$';
$consoleOUT = 'CONOUT$';
- } else {
+ } elsif ($^O eq 'VMS') {
$console = "sys\$command";
- }
-
- if (($^O eq 'amigaos') || ($^O eq 'beos') || ($^O eq 'epoc')) {
- $console = undef;
- }
- elsif ($^O eq 'os2') {
- if ($DB::emacs) {
- $console = undef;
- } else {
+ } elsif ($^O eq 'os2' && !$DB::emacs) {
$console = "/dev/con";
- }
+ } else {
+ $console = undef;
}
$consoleOUT = $console unless defined $consoleOUT;
@@ -327,7 +320,7 @@ sub Features { \%features }
package Term::ReadLine; # So late to allow the above code be defined?
-our $VERSION = '1.09';
+our $VERSION = '1.12';
my ($which) = exists $ENV{PERL_RL} ? split /\s+/, $ENV{PERL_RL} : undef;
if ($which) {
diff --git a/gnu/usr.bin/perl/dist/Thread-Queue/lib/Thread/Queue.pm b/gnu/usr.bin/perl/dist/Thread-Queue/lib/Thread/Queue.pm
index 8588ed58458..027dd56c8a5 100644
--- a/gnu/usr.bin/perl/dist/Thread-Queue/lib/Thread/Queue.pm
+++ b/gnu/usr.bin/perl/dist/Thread-Queue/lib/Thread/Queue.pm
@@ -3,7 +3,7 @@ package Thread::Queue;
use strict;
use warnings;
-our $VERSION = '2.12';
+our $VERSION = '3.02';
$VERSION = eval $VERSION;
use threads::shared 1.21;
@@ -13,44 +13,65 @@ use Scalar::Util 1.10 qw(looks_like_number blessed reftype refaddr);
our @CARP_NOT = ("threads::shared");
# Predeclarations for internal functions
-my ($validate_count, $validate_index);
+my ($validate_count, $validate_index, $validate_timeout);
# Create a new queue possibly pre-populated with items
sub new
{
my $class = shift;
my @queue :shared = map { shared_clone($_) } @_;
- return bless(\@queue, $class);
+ my %self :shared = ( 'queue' => \@queue );
+ return bless(\%self, $class);
}
# Add items to the tail of a queue
sub enqueue
{
- my $queue = shift;
- lock(@$queue);
- push(@$queue, map { shared_clone($_) } @_)
- and cond_signal(@$queue);
+ my $self = shift;
+ lock(%$self);
+ if ($$self{'ENDED'}) {
+ require Carp;
+ Carp::croak("'enqueue' method called on queue that has been 'end'ed");
+ }
+ push(@{$$self{'queue'}}, map { shared_clone($_) } @_)
+ and cond_signal(%$self);
}
# Return a count of the number of items on a queue
sub pending
{
- my $queue = shift;
- lock(@$queue);
- return scalar(@$queue);
+ my $self = shift;
+ lock(%$self);
+ return if ($$self{'ENDED'} && ! @{$$self{'queue'}});
+ return scalar(@{$$self{'queue'}});
+}
+
+# Indicate that no more data will enter the queue
+sub end
+{
+ my $self = shift;
+ lock $self;
+ # No more data is coming
+ $$self{'ENDED'} = 1;
+ # Try to release at least one blocked thread
+ cond_signal(%$self);
}
# Return 1 or more items from the head of a queue, blocking if needed
sub dequeue
{
- my $queue = shift;
- lock(@$queue);
+ my $self = shift;
+ lock(%$self);
+ my $queue = $$self{'queue'};
my $count = @_ ? $validate_count->(shift) : 1;
# Wait for requisite number of items
- cond_wait(@$queue) until (@$queue >= $count);
- cond_signal(@$queue) if (@$queue > $count);
+ cond_wait(%$self) while ((@$queue < $count) && ! $$self{'ENDED'});
+ cond_signal(%$self) if ((@$queue > $count) || $$self{'ENDED'});
+
+ # If no longer blocking, try getting whatever is left on the queue
+ return $self->dequeue_nb($count) if ($$self{'ENDED'});
# Return single item
return shift(@$queue) if ($count == 1);
@@ -64,8 +85,9 @@ sub dequeue
# Return items from the head of a queue with no blocking
sub dequeue_nb
{
- my $queue = shift;
- lock(@$queue);
+ my $self = shift;
+ lock(%$self);
+ my $queue = $$self{'queue'};
my $count = @_ ? $validate_count->(shift) : 1;
@@ -81,20 +103,53 @@ sub dequeue_nb
return @items;
}
+# Return items from the head of a queue, blocking if needed up to a timeout
+sub dequeue_timed
+{
+ my $self = shift;
+ lock(%$self);
+ my $queue = $$self{'queue'};
+
+ # Timeout may be relative or absolute
+ my $timeout = @_ ? $validate_timeout->(shift) : -1;
+ # Convert to an absolute time for use with cond_timedwait()
+ if ($timeout < 32000000) { # More than one year
+ $timeout += time();
+ }
+
+ my $count = @_ ? $validate_count->(shift) : 1;
+
+ # Wait for requisite number of items, or until timeout
+ while ((@$queue < $count) && ! $$self{'ENDED'}) {
+ last if (! cond_timedwait(%$self, $timeout));
+ }
+ cond_signal(%$self) if ((@$queue > $count) || $$self{'ENDED'});
+
+ # Get whatever we need off the queue if available
+ return $self->dequeue_nb($count);
+}
+
# Return an item without removing it from a queue
sub peek
{
- my $queue = shift;
- lock(@$queue);
+ my $self = shift;
+ lock(%$self);
my $index = @_ ? $validate_index->(shift) : 0;
- return $$queue[$index];
+ return $$self{'queue'}[$index];
}
# Insert items anywhere into a queue
sub insert
{
- my $queue = shift;
- lock(@$queue);
+ my $self = shift;
+ lock(%$self);
+
+ if ($$self{'ENDED'}) {
+ require Carp;
+ Carp::croak("'insert' method called on queue that has been 'end'ed");
+ }
+
+ my $queue = $$self{'queue'};
my $index = $validate_index->(shift);
@@ -121,14 +176,15 @@ sub insert
push(@$queue, @tmp);
# Soup's up
- cond_signal(@$queue);
+ cond_signal(%$self);
}
# Remove items from anywhere in a queue
sub extract
{
- my $queue = shift;
- lock(@$queue);
+ my $self = shift;
+ lock(%$self);
+ my $queue = $$self{'queue'};
my $index = @_ ? $validate_index->(shift) : 0;
my $count = @_ ? $validate_count->(shift) : 1;
@@ -139,7 +195,7 @@ sub extract
if ($index < 0) {
$count += $index;
return if ($count <= 0); # Beyond the head of the queue
- return $queue->dequeue_nb($count); # Extract from the head
+ return $self->dequeue_nb($count); # Extract from the head
}
}
@@ -202,6 +258,23 @@ $validate_count = sub {
return $count;
};
+# Check value of the requested timeout
+$validate_timeout = sub {
+ my $timeout = shift;
+
+ if (! defined($timeout) ||
+ ! looks_like_number($timeout))
+ {
+ require Carp;
+ my ($method) = (caller(1))[3];
+ $method =~ s/Thread::Queue:://;
+ $timeout = 'undef' if (! defined($timeout));
+ Carp::croak("Invalid 'timeout' argument ($timeout) to '$method' method");
+ }
+
+ return $timeout;
+};
+
1;
=head1 NAME
@@ -210,7 +283,7 @@ Thread::Queue - Thread-safe queues
=head1 VERSION
-This document describes Thread::Queue version 2.12
+This document describes Thread::Queue version 3.02
=head1 SYNOPSIS
@@ -223,15 +296,24 @@ This document describes Thread::Queue version 2.12
my $q = Thread::Queue->new(); # A new empty queue
# Worker thread
- my $thr = threads->create(sub {
- while (my $item = $q->dequeue()) {
- # Do work on $item
- }
- })->detach();
+ my $thr = threads->create(
+ sub {
+ # Thread will loop until no more work
+ while (defined(my $item = $q->dequeue())) {
+ # Do work on $item
+ ...
+ }
+ }
+ );
# Send work to the thread
$q->enqueue($item1, ...);
+ # Signal that there is no more work to be sent
+ $q->end();
+ # Join up with the thread when it finishes
+ $thr->join();
+ ...
# Count of items in the queue
my $left = $q->pending();
@@ -241,6 +323,11 @@ This document describes Thread::Queue version 2.12
# Work on $item
}
+ # Blocking dequeue with 5-second timeout
+ if (defined(my $item = $q->dequeue_timed(5))) {
+ # Work on $item
+ }
+
# Get the second item in the queue without dequeuing anything
my $item = $q->peek(1);
@@ -342,9 +429,41 @@ number of items, then it immediately (i.e., non-blocking) returns whatever
items there are on the queue. If the queue is empty, then C<undef> is
returned.
+=item ->dequeue_timed(TIMEOUT)
+
+=item ->dequeue_timed(TIMEOUT, COUNT)
+
+Removes the requested number of items (default is 1) from the head of the
+queue, and returns them. If the queue contains fewer than the requested
+number of items, then the thread will be blocked until the requisite number of
+items are available, or until the timeout is reached. If the timeout is
+reached, it returns whatever items there are on the queue, or C<undef> if the
+queue is empty.
+
+The timeout may be a number of seconds relative to the current time (e.g., 5
+seconds from when the call is made), or may be an absolute timeout in I<epoch>
+seconds the same as would be used with
+L<cond_timedwait()|threads::shared/"cond_timedwait VARIABLE, ABS_TIMEOUT">.
+Fractional seconds (e.g., 2.5 seconds) are also supported (to the extent of
+the underlying implementation).
+
+If C<TIMEOUT> is missing, c<undef>, or less than or equal to 0, then this call
+behaves the same as C<dequeue_nb>.
+
=item ->pending()
-Returns the number of items still in the queue.
+Returns the number of items still in the queue. Returns C<undef> if the queue
+has been ended (see below), and there are no more items in the queue.
+
+=item ->end()
+
+Declares that no more items will be added to the queue.
+
+All threads blocking on C<dequeue()> calls will be unblocked with any
+remaining items in the queue and/or C<undef> being returned. Any subsequent
+calls to C<dequeue()> will behave like C<dequeue_nb()>.
+
+Once ended, no more items may be placed in the queue.
=back
@@ -464,6 +583,8 @@ L<http://www.cpanforum.com/dist/Thread-Queue>
L<threads>, L<threads::shared>
+Sample code in the I<examples> directory of this distribution on CPAN.
+
=head1 MAINTAINER
Jerry D. Hedden, S<E<lt>jdhedden AT cpan DOT orgE<gt>>
diff --git a/gnu/usr.bin/perl/dist/Thread-Queue/t/09_ended.t b/gnu/usr.bin/perl/dist/Thread-Queue/t/09_ended.t
new file mode 100644
index 00000000000..a0a9292f08a
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Thread-Queue/t/09_ended.t
@@ -0,0 +1,146 @@
+use strict;
+use warnings;
+
+use Config;
+
+BEGIN {
+ if (! $Config{'useithreads'}) {
+ print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
+ exit(0);
+ }
+ if (! $Config{'d_select'}) {
+ print("1..0 # SKIP 'select()' not available for testing\n");
+ exit(0);
+ }
+}
+
+use threads;
+use Thread::Queue;
+
+use Test::More;
+
+my $num_threads = 3;
+my $cycles = 2;
+my $count = 2;
+plan tests => 3*$num_threads*$cycles*$count + 6*$num_threads + 6;
+
+# Test for end() while threads are blocked and no more items in queue
+{
+ my @items = 1..($num_threads*$cycles*$count);
+ my $q = Thread::Queue->new(@items);
+ my $r = Thread::Queue->new();
+
+ my @threads;
+ for my $ii (1..$num_threads) {
+ push @threads, threads->create( sub {
+ # Thread will loop until no more work is coming
+ LOOP:
+ while (my @set = $q->dequeue($count)) {
+ foreach my $item (@set) {
+ last LOOP if (! defined($item));
+ pass("'$item' read from queue in thread $ii");
+ }
+ select(undef, undef, undef, rand(1));
+ $r->enqueue($ii);
+ }
+ pass("Thread $ii exiting");
+ });
+ }
+
+ # Make sure there's nothing in the queue and threads are blocking
+ for my $ii (1..($num_threads*$cycles)) {
+ $r->dequeue();
+ }
+ sleep(1);
+ threads->yield();
+
+ is($q->pending(), 0, 'Queue is empty');
+
+ # Signal no more work is coming
+ $q->end();
+
+ is($q->pending(), undef, 'Queue is ended');
+
+ for my $thread (@threads) {
+ $thread->join;
+ pass($thread->tid." joined");
+ }
+}
+
+# Test for end() while threads are blocked and items still remain in queue
+{
+ my @items = 1..($num_threads*$cycles*$count + 1);
+ my $q = Thread::Queue->new(@items);
+ my $r = Thread::Queue->new();
+
+ my @threads;
+ for my $ii (1..$num_threads) {
+ push @threads, threads->create( sub {
+ # Thread will loop until no more work is coming
+ LOOP:
+ while (my @set = $q->dequeue($count)) {
+ foreach my $item (@set) {
+ last LOOP if (! defined($item));
+ pass("'$item' read from queue in thread $ii");
+ }
+ select(undef, undef, undef, rand(1));
+ $r->enqueue($ii);
+ }
+ pass("Thread $ii exiting");
+ });
+ }
+
+ # Make sure there's nothing in the queue and threads are blocking
+ for my $ii (1..($num_threads*$cycles)) {
+ $r->dequeue();
+ }
+ sleep(1);
+ threads->yield();
+
+ is($q->pending(), 1, 'Queue has one left');
+
+ # Signal no more work is coming
+ $q->end();
+
+ for my $thread (@threads) {
+ $thread->join;
+ pass($thread->tid." joined");
+ }
+
+ is($q->pending(), undef, 'Queue is ended');
+}
+
+# Test of end() send while items in queue
+{
+ my @items = 1..($num_threads*$cycles*$count + 1);
+ my $q = Thread::Queue->new(@items);
+
+ my @threads;
+ for my $ii (1..$num_threads) {
+ push @threads, threads->create( sub {
+ # Thread will loop until no more work is coming
+ LOOP:
+ while (my @set = $q->dequeue($count)) {
+ foreach my $item (@set) {
+ last LOOP if (! defined($item));
+ pass("'$item' read from queue in thread $ii");
+ }
+ select(undef, undef, undef, rand(1));
+ }
+ pass("Thread $ii exiting");
+ });
+ }
+
+ # Signal no more work is coming to the blocked threads, they
+ # should unblock.
+ $q->end();
+
+ for my $thread (@threads) {
+ $thread->join;
+ pass($thread->tid." joined");
+ }
+}
+
+exit(0);
+
+# EOF
diff --git a/gnu/usr.bin/perl/dist/Thread-Queue/t/10_timed.t b/gnu/usr.bin/perl/dist/Thread-Queue/t/10_timed.t
new file mode 100644
index 00000000000..8404720ed62
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/Thread-Queue/t/10_timed.t
@@ -0,0 +1,66 @@
+use strict;
+use warnings;
+
+BEGIN {
+ use Config;
+ if (! $Config{'useithreads'}) {
+ print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
+ exit(0);
+ }
+}
+
+use threads;
+use Thread::Queue;
+
+if ($] == 5.008) {
+ require 't/test.pl'; # Test::More work-alike for Perl 5.8.0
+} else {
+ require Test::More;
+}
+Test::More->import();
+plan('tests' => 19);
+
+### ->dequeue_timed(TIMEOUT, COUNT) test ###
+
+my $q = Thread::Queue->new();
+ok($q, 'New queue');
+
+my @items = qw/foo bar baz qux exit/;
+$q->enqueue(@items);
+is($q->pending(), scalar(@items), 'Queue count');
+
+threads->create(sub {
+ is($q->pending(), scalar(@items), 'Queue count in thread');
+ while (my @el = $q->dequeue_timed(2.5, 2)) {
+ is($el[0], shift(@items), "Thread got $el[0]");
+ if ($el[0] eq 'exit') {
+ is(scalar(@el), 1, 'Thread to exit');
+ } else {
+ is($el[1], shift(@items), "Thread got $el[1]");
+ }
+ }
+ is($q->pending(), 0, 'Empty queue');
+ $q->enqueue('done');
+})->join();
+
+is($q->pending(), 1, 'Queue count after thread');
+is($q->dequeue(), 'done', 'Thread reported done');
+is($q->pending(), 0, 'Empty queue');
+
+### ->dequeue_timed(TIMEOUT) test on empty queue ###
+
+threads->create(sub {
+ is($q->pending(), 0, 'Empty queue in thread');
+ my @el = $q->dequeue_timed(1.5);
+ is($el[0], undef, "Thread got no items");
+ is($q->pending(), 0, 'Empty queue in thread');
+ $q->enqueue('done');
+})->join();
+
+is($q->pending(), 1, 'Queue count after thread');
+is($q->dequeue(), 'done', 'Thread reported done');
+is($q->pending(), 0, 'Empty queue');
+
+exit(0);
+
+# EOF
diff --git a/gnu/usr.bin/perl/dist/Tie-File/lib/Tie/File.pm b/gnu/usr.bin/perl/dist/Tie-File/lib/Tie/File.pm
index 3862da23672..a288218a819 100644
--- a/gnu/usr.bin/perl/dist/Tie-File/lib/Tie/File.pm
+++ b/gnu/usr.bin/perl/dist/Tie-File/lib/Tie/File.pm
@@ -7,7 +7,7 @@ use Fcntl 'O_CREAT', 'O_RDWR', 'LOCK_EX', 'LOCK_SH', 'O_WRONLY', 'O_RDONLY';
sub O_ACCMODE () { O_RDONLY | O_RDWR | O_WRONLY }
-$VERSION = "0.98";
+$VERSION = "0.99";
my $DEFAULT_MEMORY_SIZE = 1<<21; # 2 megabytes
my $DEFAULT_AUTODEFER_THRESHHOLD = 3; # 3 records
my $DEFAULT_AUTODEFER_FILELEN_THRESHHOLD = 65536; # 16 disk blocksful
@@ -2361,7 +2361,7 @@ will be rewritten in a single pass.
(Actually, the preceding discussion is something of a fib. You don't
need to enable deferred writing to get good performance for this
common case, because C<Tie::File> will do it for you automatically
-unless you specifically tell it not to. See L<"autodeferring">,
+unless you specifically tell it not to. See L<"Autodeferring">,
below.)
Calling C<-E<gt>flush> returns the array to immediate-write mode. If
diff --git a/gnu/usr.bin/perl/dist/Tie-File/t/00_version.t b/gnu/usr.bin/perl/dist/Tie-File/t/00_version.t
index 84f326d7502..65e55f94cb6 100644
--- a/gnu/usr.bin/perl/dist/Tie-File/t/00_version.t
+++ b/gnu/usr.bin/perl/dist/Tie-File/t/00_version.t
@@ -2,7 +2,7 @@
print "1..1\n";
-my $testversion = "0.98";
+my $testversion = "0.99";
use Tie::File;
if ($Tie::File::VERSION != $testversion) {
diff --git a/gnu/usr.bin/perl/dist/XSLoader/Makefile.PL b/gnu/usr.bin/perl/dist/XSLoader/Makefile.PL
index 111d85ad541..008f60250f9 100644
--- a/gnu/usr.bin/perl/dist/XSLoader/Makefile.PL
+++ b/gnu/usr.bin/perl/dist/XSLoader/Makefile.PL
@@ -34,17 +34,25 @@ my $installdirs = $] < 5.011 ? "perl" : "site";
WriteMakefile(
NAME => $PACKAGE,
- ($ExtUtils::MakeMaker::VERSION > 6.30 ?
- (LICENSE => 'perl',
- AUTHOR => 'Sebastien Aperghis-Tramoni <sebastien@aperghis.net>',
- ABSTRACT_FROM => 'XSLoader_pm.PL',
- ) : ()),
+ LICENSE => 'perl',
+ AUTHOR => 'Sebastien Aperghis-Tramoni <sebastien@aperghis.net>',
VERSION_FROM => 'XSLoader_pm.PL',
+ ABSTRACT_FROM => 'XSLoader_pm.PL',
INSTALLDIRS => $installdirs,
PL_FILES => { 'XSLoader_pm.PL' => 'XSLoader.pm' },
PM => { 'XSLoader.pm' => '$(INST_ARCHLIB)/XSLoader.pm' },
PREREQ_PM => {
- 'Test::More' => '0.62',
+ 'Test::More' => '0.47',
+ },
+ META_MERGE => {
+ resources => {
+ repository => 'git://perl5.git.perl.org/perl.git',
+ license => 'http://dev.perl.org/licenses/',
+ homepage => 'https://metacpan.org/module/Math::BigInt',
+ irc => 'irc://irc.perl.org/#p5p',
+ mailinglist => 'http://lists.perl.org/list/perl5-porters.html',
+ bugtracker => "https://rt.perl.org/rt3/Search/Results.html?Query=Queue='perl5' AND Content LIKE 'module=XSLoader' AND (Status='open' OR Status='new' OR Status='stalled')",
+ },
},
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
clean => { FILES => 'XSLoader-* XSLoader.pm' },
diff --git a/gnu/usr.bin/perl/dist/XSLoader/XSLoader_pm.PL b/gnu/usr.bin/perl/dist/XSLoader/XSLoader_pm.PL
index 98a19eaa517..fb5707c29a4 100644
--- a/gnu/usr.bin/perl/dist/XSLoader/XSLoader_pm.PL
+++ b/gnu/usr.bin/perl/dist/XSLoader/XSLoader_pm.PL
@@ -201,7 +201,7 @@ XSLoader - Dynamically load C libraries into Perl code
=head1 VERSION
-Version 0.15
+Version 0.16
=head1 SYNOPSIS
@@ -257,7 +257,7 @@ If no C<$VERSION> was specified on the C<bootstrap> line, the last line becomes
XSLoader::load 'YourPackage';
-If the call to C<load> is from the YourPackage, then that can be further
+If the call to C<load> is from C<YourPackage>, then that can be further
simplified to
XSLoader::load();
@@ -289,7 +289,7 @@ C<use XSLoader> by C<require>, so the compiler does not know that a function
C<XSLoader::load()> is present.
This boilerplate uses the low-overhead C<XSLoader> if present; if used with
-an antic Perl which has no C<XSLoader>, it falls back to using C<DynaLoader>.
+an antique Perl which has no C<XSLoader>, it falls back to using C<DynaLoader>.
=head1 Order of initialization: early load()
diff --git a/gnu/usr.bin/perl/dist/bignum/lib/Math/BigFloat/Trace.pm b/gnu/usr.bin/perl/dist/bignum/lib/Math/BigFloat/Trace.pm
index 5e1636e59d0..d712082eb6a 100644
--- a/gnu/usr.bin/perl/dist/bignum/lib/Math/BigFloat/Trace.pm
+++ b/gnu/usr.bin/perl/dist/bignum/lib/Math/BigFloat/Trace.pm
@@ -12,7 +12,7 @@ use vars qw($VERSION @ISA $PACKAGE @EXPORT_OK
@ISA = qw(Exporter Math::BigFloat);
-$VERSION = '0.29';
+$VERSION = '0.32';
use overload; # inherit overload from BigFloat
diff --git a/gnu/usr.bin/perl/dist/bignum/lib/Math/BigInt/Trace.pm b/gnu/usr.bin/perl/dist/bignum/lib/Math/BigInt/Trace.pm
index 5826f6123bd..4c51e5773da 100644
--- a/gnu/usr.bin/perl/dist/bignum/lib/Math/BigInt/Trace.pm
+++ b/gnu/usr.bin/perl/dist/bignum/lib/Math/BigInt/Trace.pm
@@ -12,7 +12,7 @@ use vars qw($VERSION @ISA $PACKAGE @EXPORT_OK
@ISA = qw(Exporter Math::BigInt);
-$VERSION = '0.29';
+$VERSION = '0.32';
use overload; # inherit overload from BigInt
diff --git a/gnu/usr.bin/perl/dist/bignum/lib/bigint.pm b/gnu/usr.bin/perl/dist/bignum/lib/bigint.pm
index 926742ac314..32c88bf62cd 100644
--- a/gnu/usr.bin/perl/dist/bignum/lib/bigint.pm
+++ b/gnu/usr.bin/perl/dist/bignum/lib/bigint.pm
@@ -1,10 +1,10 @@
package bigint;
use 5.006;
-$VERSION = '0.29';
+$VERSION = '0.34';
use Exporter;
@ISA = qw( Exporter );
-@EXPORT_OK = qw( PI e bpi bexp );
+@EXPORT_OK = qw( PI e bpi bexp hex oct );
@EXPORT = qw( inf NaN );
use strict;
@@ -120,38 +120,67 @@ sub in_effect
#############################################################################
# the following two routines are for "use bigint qw/hex oct/;":
-sub _hex_global
+use constant LEXICAL => $] > 5.009004;
+
+{
+ my $proto = LEXICAL ? '_' : ';$';
+ eval '
+sub hex(' . $proto . ')' . <<'.';
{
- my $i = $_[0];
+ my $i = @_ ? $_[0] : $_;
$i = '0x'.$i unless $i =~ /^0x/;
Math::BigInt->new($i);
}
-
-sub _oct_global
+.
+ eval '
+sub oct(' . $proto . ')' . <<'.';
{
- my $i = $_[0];
- return Math::BigInt->from_oct($i) if $i =~ /^0[0-7]/;
+ my $i = @_ ? $_[0] : $_;
+ # oct() should never fall back to decimal
+ return Math::BigInt->from_oct($i) if $i =~ s/^(?=0[0-9]|[1-9])/0/;
Math::BigInt->new($i);
}
+.
+}
#############################################################################
# the following two routines are for Perl 5.9.4 or later and are lexical
-sub _hex
+my ($prev_oct, $prev_hex, $overridden);
+
+if (LEXICAL) { eval <<'.' }
+sub _hex(_)
{
- return CORE::hex($_[0]) unless in_effect(1);
+ my $hh = (caller 0)[10];
+ return $prev_hex ? &$prev_hex($_[0]) : CORE::hex($_[0])
+ unless $$hh{bigint}||$$hh{bignum}||$$hh{bigrat};
my $i = $_[0];
$i = '0x'.$i unless $i =~ /^0x/;
Math::BigInt->new($i);
}
-sub _oct
+sub _oct(_)
{
- return CORE::oct($_[0]) unless in_effect(1);
+ my $hh = (caller 0)[10];
+ return $prev_oct ? &$prev_oct($_[0]) : CORE::oct($_[0])
+ unless $$hh{bigint}||$$hh{bignum}||$$hh{bigrat};
my $i = $_[0];
- return Math::BigInt->from_oct($i) if $i =~ /^0[0-7]/;
+ # oct() should never fall back to decimal
+ return Math::BigInt->from_oct($i) if $i =~ s/^(?=0[0-9]|[1-9])/0/;
Math::BigInt->new($i);
}
+.
+
+sub _override
+ {
+ return if $overridden;
+ $prev_oct = *CORE::GLOBAL::oct{CODE};
+ $prev_hex = *CORE::GLOBAL::hex{CODE};
+ no warnings 'redefine';
+ *CORE::GLOBAL::oct = \&_oct;
+ *CORE::GLOBAL::hex = \&_hex;
+ $overridden++;
+ }
sub import
{
@@ -159,12 +188,10 @@ sub import
$^H{bigint} = 1; # we are in effect
- my ($hex,$oct);
# for newer Perls always override hex() and oct() with a lexical version:
- if ($] > 5.009004)
+ if (LEXICAL)
{
- $oct = \&_oct;
- $hex = \&_hex;
+ _override();
}
# some defaults
my $lib = ''; my $lib_kind = 'try';
@@ -205,17 +232,7 @@ sub import
$trace = 1;
splice @a, $j, 1; $j --;
}
- elsif ($_[$i] eq 'hex')
- {
- splice @a, $j, 1; $j --;
- $hex = \&_hex_global;
- }
- elsif ($_[$i] eq 'oct')
- {
- splice @a, $j, 1; $j --;
- $oct = \&_oct_global;
- }
- elsif ($_[$i] !~ /^(PI|e|bpi|bexp)\z/)
+ elsif ($_[$i] !~ /^(PI|e|bpi|bexp|hex|oct)\z/)
{
die ("unknown option $_[$i]");
}
@@ -271,11 +288,6 @@ sub import
{
$self->export_to_level(1,$self,@a); # export inf and NaN, e and PI
}
- {
- no warnings 'redefine';
- *CORE::GLOBAL::oct = $oct if $oct;
- *CORE::GLOBAL::hex = $hex if $hex;
- }
}
sub inf () { Math::BigInt::binf(); }
@@ -302,22 +314,22 @@ bigint - Transparent BigInteger support for Perl
print 2 ** 512,"\n"; # really is what you think it is
print inf + 42,"\n"; # inf
print NaN * 7,"\n"; # NaN
- print hex("0x1234567890123490"),"\n"; # Perl v5.9.4 or later
+ print hex("0x1234567890123490"),"\n"; # Perl v5.10.0 or later
{
no bigint;
print 2 ** 256,"\n"; # a normal Perl scalar now
}
- # Note that this will be global:
+ # Import into current package:
use bigint qw/hex oct/;
print hex("0x1234567890123490"),"\n";
print oct("01234567890123490"),"\n";
=head1 DESCRIPTION
-All operators (including basic math operations) are overloaded. Integer
-constants are created as proper BigInts.
+All operators (including basic math operations) except the range operator C<..>
+are overloaded. Integer constants are created as proper BigInts.
Floating point constants are truncated to integer. All parts and results of
expressions are also truncated.
@@ -355,7 +367,7 @@ return value of subroutines:
sub three_integer { use integer; return 3.2; }
sub three_bigint { use bigint; return 3.2; }
-
+
print three_integer(), " ", three_bigint(),"\n"; # prints "3.2 3"
=head2 Options
@@ -397,14 +409,16 @@ Math::BigInt.
=item hex
Override the built-in hex() method with a version that can handle big
-integers. Note that under Perl v5.9.4 or ealier, this will be global
-and cannot be disabled with "no bigint;".
+integers. This overrides it by exporting it to the current package. Under
+Perl v5.10.0 and higher, this is not so necessary, as hex() is lexically
+overridden in the current scope whenever the bigint pragma is active.
=item oct
Override the built-in oct() method with a version that can handle big
-integers. Note that under Perl v5.9.4 or ealier, this will be global
-and cannot be disabled with "no bigint;".
+integers. This overrides it by exporting it to the current package. Under
+Perl v5.10.0 and higher, this is not so necessary, as oct() is lexically
+overridden in the current scope whenever the bigint pragma is active.
=item l, lib, try or only
@@ -479,12 +493,46 @@ numbers or as a result of 0/0. '+inf' and '-inf' represent plus respectively
minus infinity. You will get '+inf' when dividing a positive number by 0, and
'-inf' when dividing any negative number by 0.
-=head2 Methods
+=head2 Method calls
Since all numbers are now objects, you can use all functions that are part of
the BigInt API. You can only use the bxxx() notation, and not the fxxx()
notation, though.
+But a warning is in order. When using the following to make a copy of a number,
+only a shallow copy will be made.
+
+ $x = 9; $y = $x;
+ $x = $y = 7;
+
+Using the copy or the original with overloaded math is okay, e.g. the
+following work:
+
+ $x = 9; $y = $x;
+ print $x + 1, " ", $y,"\n"; # prints 10 9
+
+but calling any method that modifies the number directly will result in
+B<both> the original and the copy being destroyed:
+
+ $x = 9; $y = $x;
+ print $x->badd(1), " ", $y,"\n"; # prints 10 10
+
+ $x = 9; $y = $x;
+ print $x->binc(1), " ", $y,"\n"; # prints 10 10
+
+ $x = 9; $y = $x;
+ print $x->bmul(2), " ", $y,"\n"; # prints 18 18
+
+Using methods that do not modify, but testthe contents works:
+
+ $x = 9; $y = $x;
+ $z = 9 if $x->is_zero(); # works fine
+
+See the documentation about the copy constructor and C<=> in overload, as
+well as the documentation in BigInt for further details.
+
+=head2 Methods
+
=over 2
=item inf()
@@ -556,47 +604,23 @@ This method only works on Perl v5.9.4 or later.
=back
-=head2 MATH LIBRARY
-
-Math with the numbers is done (by default) by a module called
-
-=head2 Caveat
-
-But a warning is in order. When using the following to make a copy of a number,
-only a shallow copy will be made.
-
- $x = 9; $y = $x;
- $x = $y = 7;
-
-Using the copy or the original with overloaded math is okay, e.g. the
-following work:
-
- $x = 9; $y = $x;
- print $x + 1, " ", $y,"\n"; # prints 10 9
+=head1 CAVEATS
-but calling any method that modifies the number directly will result in
-B<both> the original and the copy being destroyed:
-
- $x = 9; $y = $x;
- print $x->badd(1), " ", $y,"\n"; # prints 10 10
-
- $x = 9; $y = $x;
- print $x->binc(1), " ", $y,"\n"; # prints 10 10
-
- $x = 9; $y = $x;
- print $x->bmul(2), " ", $y,"\n"; # prints 18 18
-
-Using methods that do not modify, but testthe contents works:
+=over 2
- $x = 9; $y = $x;
- $z = 9 if $x->is_zero(); # works fine
+=item ranges
-See the documentation about the copy constructor and C<=> in overload, as
-well as the documentation in BigInt for further details.
+Perl does not allow overloading of ranges, so you can neither safely use
+ranges with bigint endpoints, nor is the iterator variable a bigint.
-=head1 CAVEATS
+ use 5.010;
+ for my $i (12..13) {
+ for my $j (20..21) {
+ say $i ** $j; # produces a floating-point number,
+ # not a big integer
+ }
+ }
-=over 2
=item in_effect()
@@ -644,7 +668,7 @@ The following modules are currently used by bigint:
Some cool command line examples to impress the Python crowd ;) You might want
to compare them to the results under -Mbignum or -Mbigrat:
-
+
perl -Mbigint -le 'print sqrt(33)'
perl -Mbigint -le 'print 2*255'
perl -Mbigint -le 'print 4.5+2*255'
@@ -666,7 +690,7 @@ Especially L<bigrat> as in C<perl -Mbigrat -le 'print 1/3+1/4'> and
L<bignum> as in C<perl -Mbignum -le 'print sqrt(2)'>.
L<Math::BigInt>, L<Math::BigRat> and L<Math::Big> as well
-as L<Math::BigInt::BitVect>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
+as L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
=head1 AUTHORS
diff --git a/gnu/usr.bin/perl/dist/bignum/lib/bignum.pm b/gnu/usr.bin/perl/dist/bignum/lib/bignum.pm
index f0377c60f14..3c00a89eee2 100644
--- a/gnu/usr.bin/perl/dist/bignum/lib/bignum.pm
+++ b/gnu/usr.bin/perl/dist/bignum/lib/bignum.pm
@@ -1,15 +1,15 @@
package bignum;
use 5.006;
-$VERSION = '0.29';
+$VERSION = '0.33';
use Exporter;
@ISA = qw( bigint );
-@EXPORT_OK = qw( PI e bexp bpi );
+@EXPORT_OK = qw( PI e bexp bpi hex oct );
@EXPORT = qw( inf NaN );
use strict;
use overload;
-require bigint; # no "use" to avoid import being called
+use bigint ();
##############################################################################
@@ -17,6 +17,8 @@ BEGIN
{
*inf = \&bigint::inf;
*NaN = \&bigint::NaN;
+ *hex = \&bigint::hex;
+ *oct = \&bigint::oct;
}
# These are all alike, and thus faked by AUTOLOAD
@@ -68,23 +70,6 @@ sub in_effect
}
#############################################################################
-# the following two routines are for Perl 5.9.4 or later and are lexical
-
-sub _hex
- {
- return CORE::hex($_[0]) unless in_effect(1);
- my $i = $_[0];
- $i = '0x'.$i unless $i =~ /^0x/;
- Math::BigInt->new($i);
- }
-
-sub _oct
- {
- return CORE::oct($_[0]) unless in_effect(1);
- my $i = $_[0];
- return Math::BigInt->from_oct($i) if $i =~ /^0[0-7]/;
- Math::BigInt->new($i);
- }
sub import
{
@@ -92,13 +77,10 @@ sub import
$^H{bignum} = 1; # we are in effect
- my ($hex,$oct);
-
# for newer Perls override hex() and oct() with a lexical version:
- if ($] > 5.009003)
+ if ($] > 5.009004)
{
- $hex = \&_hex;
- $oct = \&_oct;
+ bigint::_override();
}
# some defaults
@@ -156,17 +138,7 @@ sub import
$trace = 1;
splice @a, $j, 1; $j --;
}
- elsif ($_[$i] eq 'hex')
- {
- splice @a, $j, 1; $j --;
- $hex = \&bigint::_hex_global;
- }
- elsif ($_[$i] eq 'oct')
- {
- splice @a, $j, 1; $j --;
- $oct = \&bigint::_oct_global;
- }
- elsif ($_[$i] !~ /^(PI|e|bexp|bpi)\z/)
+ elsif ($_[$i] !~ /^(PI|e|bexp|bpi|hex|oct)\z/)
{
die ("unknown option $_[$i]");
}
@@ -233,11 +205,6 @@ sub import
{
$self->export_to_level(1,$self,@a); # export inf and NaN
}
- {
- no warnings 'redefine';
- *CORE::GLOBAL::oct = $oct if $oct;
- *CORE::GLOBAL::hex = $hex if $hex;
- }
}
sub PI () { Math::BigFloat->new('3.141592653589793238462643383279502884197'); }
@@ -267,7 +234,7 @@ bignum - Transparent BigNumber support for Perl
print 2 ** 256,"\n"; # a normal Perl scalar now
}
- # for older Perls, note that this will be global:
+ # for older Perls, import into current package:
use bignum qw/hex oct/;
print hex("0x1234567890123490"),"\n";
print oct("01234567890123490"),"\n";
@@ -420,14 +387,16 @@ This will be hopefully fixed soon ;)
=item hex
Override the built-in hex() method with a version that can handle big
-integers. Note that under Perl older than v5.9.4, this will be global
-and cannot be disabled with "no bigint;".
+numbers. This overrides it by exporting it to the current package. Under
+Perl v5.10.0 and higher, this is not so necessary, as hex() is lexically
+overridden in the current scope whenever the bignum pragma is active.
=item oct
Override the built-in oct() method with a version that can handle big
-integers. Note that under Perl older than v5.9.4, this will be global
-and cannot be disabled with "no bigint;".
+numbers. This overrides it by exporting it to the current package. Under
+Perl v5.10.0 and higher, this is not so necessary, as oct() is lexically
+overridden in the current scope whenever the bigint pragma is active.
=item v or version
@@ -650,7 +619,7 @@ The following modules are currently used by bignum:
=head1 EXAMPLES
Some cool command line examples to impress the Python crowd ;)
-
+
perl -Mbignum -le 'print sqrt(33)'
perl -Mbignum -le 'print 2*255'
perl -Mbignum -le 'print 4.5+2*255'
@@ -672,7 +641,7 @@ the same terms as Perl itself.
Especially L<bigrat> as in C<perl -Mbigrat -le 'print 1/3+1/4'>.
L<Math::BigFloat>, L<Math::BigInt>, L<Math::BigRat> and L<Math::Big> as well
-as L<Math::BigInt::BitVect>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
+as L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
=head1 AUTHORS
diff --git a/gnu/usr.bin/perl/dist/bignum/lib/bigrat.pm b/gnu/usr.bin/perl/dist/bignum/lib/bigrat.pm
index 6ba821d976b..d413429e433 100644
--- a/gnu/usr.bin/perl/dist/bignum/lib/bigrat.pm
+++ b/gnu/usr.bin/perl/dist/bignum/lib/bigrat.pm
@@ -1,15 +1,15 @@
package bigrat;
use 5.006;
-$VERSION = '0.29';
+$VERSION = '0.33';
require Exporter;
@ISA = qw( bigint );
-@EXPORT_OK = qw( PI e bpi bexp );
+@EXPORT_OK = qw( PI e bpi bexp hex oct );
@EXPORT = qw( inf NaN );
use strict;
use overload;
-require bigint; # no "use" to avoid callind import
+use bigint ();
##############################################################################
@@ -17,6 +17,8 @@ BEGIN
{
*inf = \&bigint::inf;
*NaN = \&bigint::NaN;
+ *hex = \&bigint::hex;
+ *oct = \&bigint::oct;
}
# These are all alike, and thus faked by AUTOLOAD
@@ -69,23 +71,6 @@ sub in_effect
}
#############################################################################
-# the following two routines are for Perl 5.9.4 or later and are lexical
-
-sub _hex
- {
- return CORE::hex($_[0]) unless in_effect(1);
- my $i = $_[0];
- $i = '0x'.$i unless $i =~ /^0x/;
- Math::BigInt->new($i);
- }
-
-sub _oct
- {
- return CORE::oct($_[0]) unless in_effect(1);
- my $i = $_[0];
- return Math::BigInt->from_oct($i) if $i =~ /^0[0-7]/;
- Math::BigInt->new($i);
- }
sub import
{
@@ -95,12 +80,10 @@ sub import
$^H{bigrat} = 1; # we are in effect
- my ($hex,$oct);
# for newer Perls always override hex() and oct() with a lexical version:
if ($] > 5.009004)
{
- $oct = \&_oct;
- $hex = \&_hex;
+ bigint::_override();
}
# some defaults
my $lib = ''; my $lib_kind = 'try'; my $upgrade = 'Math::BigFloat';
@@ -148,17 +131,7 @@ sub import
$trace = 1;
splice @a, $j, 1; $j --;
}
- elsif ($_[$i] eq 'hex')
- {
- splice @a, $j, 1; $j --;
- $hex = \&bigint::_hex_global;
- }
- elsif ($_[$i] eq 'oct')
- {
- splice @a, $j, 1; $j --;
- $oct = \&bigint::_oct_global;
- }
- elsif ($_[$i] !~ /^(PI|e|bpi|bexp)\z/)
+ elsif ($_[$i] !~ /^(PI|e|bpi|bexp|hex|oct)\z/)
{
die ("unknown option $_[$i]");
}
@@ -219,11 +192,6 @@ sub import
{
$self->export_to_level(1,$self,@a); # export inf and NaN
}
- {
- no warnings 'redefine';
- *CORE::GLOBAL::oct = $oct if $oct;
- *CORE::GLOBAL::hex = $hex if $hex;
- }
}
sub PI () { Math::BigFloat->new('3.141592653589793238462643383279502884197'); }
@@ -257,7 +225,7 @@ bigrat - Transparent BigNumber/BigRational support for Perl
print 1/3,"\n"; # 0.33333...
}
- # Note that this will make hex() and oct() be globally overridden:
+ # Import into current package:
use bigrat qw/hex oct/;
print hex("0x1234567890123490"),"\n";
print oct("01234567890123490"),"\n";
@@ -486,14 +454,16 @@ This will be hopefully fixed soon ;)
=item hex
Override the built-in hex() method with a version that can handle big
-integers. Note that under Perl v5.9.4 or ealier, this will be global
-and cannot be disabled with "no bigint;".
+numbers. This overrides it by exporting it to the current package. Under
+Perl v5.10.0 and higher, this is not so necessary, as hex() is lexically
+overridden in the current scope whenever the bigrat pragma is active.
=item oct
Override the built-in oct() method with a version that can handle big
-integers. Note that under Perl v5.9.4 or earlier, this will be global
-and cannot be disabled with "no bigint;".
+numbers. This overrides it by exporting it to the current package. Under
+Perl v5.10.0 and higher, this is not so necessary, as oct() is lexically
+overridden in the current scope whenever the bigrat pragma is active.
=item v or version
@@ -557,7 +527,7 @@ the same terms as Perl itself.
Especially L<bignum>.
L<Math::BigFloat>, L<Math::BigInt>, L<Math::BigRat> and L<Math::Big> as well
-as L<Math::BigInt::BitVect>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
+as L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
=head1 AUTHORS
diff --git a/gnu/usr.bin/perl/dist/bignum/t/bigint.t b/gnu/usr.bin/perl/dist/bignum/t/bigint.t
index 431a6a668c3..e2df70e1bdc 100644
--- a/gnu/usr.bin/perl/dist/bignum/t/bigint.t
+++ b/gnu/usr.bin/perl/dist/bignum/t/bigint.t
@@ -66,17 +66,17 @@ like (ref(4.5+4.5), qr/^Math::BigInt/);
###############################################################################
# accuracy and precision
-is (bigint->accuracy(), undef);
-is (bigint->accuracy(12),12);
-is (bigint->accuracy(),12);
+is ('bigint'->accuracy(), undef);
+is ('bigint'->accuracy(12),12);
+is ('bigint'->accuracy(),12);
-is (bigint->precision(), undef);
-is (bigint->precision(12),12);
-is (bigint->precision(),12);
+is ('bigint'->precision(), undef);
+is ('bigint'->precision(12),12);
+is ('bigint'->precision(),12);
-is (bigint->round_mode(),'even');
-is (bigint->round_mode('odd'),'odd');
-is (bigint->round_mode(),'odd');
+is ('bigint'->round_mode(),'even');
+is ('bigint'->round_mode('odd'),'odd');
+is ('bigint'->round_mode(),'odd');
###############################################################################
# hex() and oct()
diff --git a/gnu/usr.bin/perl/dist/bignum/t/overrides.t b/gnu/usr.bin/perl/dist/bignum/t/overrides.t
new file mode 100644
index 00000000000..84a2ce1924a
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/bignum/t/overrides.t
@@ -0,0 +1,112 @@
+#!perl -w
+
+# Test behaviour of hex and oct overrides in detail, and also how the three
+# modules interact.
+
+use Test::More tests => 35;
+
+# For testing that existing CORE::GLOBAL overrides are not clobbered
+BEGIN
+ {
+ if ($] > 5.009004)
+ {
+ no warnings 'syntax';
+ *CORE::GLOBAL::hex = sub(_) { ++$hex_called; CORE::hex(@_?$_[0]:$_) };
+ *CORE::GLOBAL::oct = sub(_) { ++$oct_called; CORE::oct(@_?$_[0]:$_) };
+ }
+ else
+ {
+ *CORE::GLOBAL::hex = sub(;$) { ++$hex_called; CORE::hex(@_?$_[0]:$_) };
+ *CORE::GLOBAL::oct = sub(;$) { ++$oct_called; CORE::oct(@_?$_[0]:$_) };
+ }
+ }
+
+{
+ use bigint;
+ $_ = "20";
+ is hex, "32", 'bigint hex override without arguments infers $_';
+ is oct, "16", 'bigint oct override without arguments infers $_';
+ @_ = 1..20;
+ is hex(@_), "32", 'bigint hex override provides scalar context';
+ is oct(@_), "16", 'bigint oct override provides scalar context';
+ SKIP:
+ {
+ skip "no lexical hex/oct", 2 unless $] > do { no bigint; 5.009004};
+ is ref hex(1), 'Math::BigInt',
+ 'bigint hex() works when bignum and bigrat are loaded';
+ is ref oct(1), 'Math::BigInt',
+ 'bigint oct() works when bignum and bigrat are loaded';
+ }
+}
+{
+ use bignum;
+ $_ = "20";
+ is hex, "32", 'bignum hex override without arguments infers $_';
+ is oct, "16", 'bignum oct override without arguments infers $_';
+ @_ = 1..20;
+ is hex(@_), "32", 'bignum hex override provides scalar context';
+ is oct(@_), "16", 'bignum oct override provides scalar context';
+ SKIP:
+ {
+ skip "no lexical hex/oct", 2 unless $] > 5.009004;
+ is ref hex(1), 'Math::BigInt',
+ 'bignum hex() works when bigint and bigrat are loaded';
+ is ref oct(1), 'Math::BigInt',
+ 'bignum oct() works when bigint and bigrat are loaded';
+ }
+}
+{
+ use bigrat;
+ $_ = "20";
+ is hex, "32", 'bigrat hex override without arguments infers $_';
+ is oct, "16", 'bigrat oct override without arguments infers $_';
+ @_ = 1..20;
+ is hex(@_), "32", 'bigrat hex override provides scalar context';
+ is oct(@_), "16", 'bigrat oct override provides scalar context';
+ SKIP:
+ {
+ skip "no lexical hex/oct", 2 unless $] > 5.009004;
+ is ref hex(1), 'Math::BigInt',
+ 'bigrat hex() works when bignum and bigint are loaded';
+ is ref oct(1), 'Math::BigInt',
+ 'bigrat oct() works when bignum and bigint are loaded';
+ }
+}
+
+$hex_called = 0;
+() = hex 0;
+is $hex_called, 1, 'existing hex overrides are called';
+$oct_called = 0;
+() = oct 0;
+is $oct_called, 1, 'existing oct overrides are called';
+
+{
+ package _importer;
+ {
+ use bigint 'hex', 'oct';
+ ::is \&hex, \&bigint::hex, 'exported hex function';
+ ::is \&oct, \&bigint::oct, 'exported oct function';
+ }
+ ::ok ref hex(), 'exported hex function returns ref outside pragma scope';
+ ::ok ref oct(), 'exported oct function returns ref outside pragma scope';
+ ::is oct("20"), "16", 'exported oct function works with "decimal"';
+ # (used to return 20 because it thought it was decimal)
+}
+{
+ package _importer2;
+ use bignum 'hex', 'oct';
+ ::is \&hex, \&bignum::hex, 'bignum exports hex';
+ ::is \&oct, \&bignum::oct, 'bignum exports oct';
+ ::is \&hex, \&bigint::hex, 'bignum exports same hex as bigint';
+ ::is \&oct, \&bigint::oct, 'bignum exports same oct as bigint';
+}
+{
+ package _importer3;
+ use bigrat 'hex', 'oct';
+ ::is \&hex, \&bigrat::hex, 'bigrat exports hex';
+ ::is \&oct, \&bigrat::oct, 'bigrat exports oct';
+ ::is \&hex, \&bigint::hex, 'bigrat exports same hex as bigint';
+ ::is \&oct, \&bigint::oct, 'bigrat exports same oct as bigint';
+}
+is ref(hex 0), "", 'hex export is not global';
+is ref(oct 0), "", 'oct export is not global';
diff --git a/gnu/usr.bin/perl/dist/constant/lib/constant.pm b/gnu/usr.bin/perl/dist/constant/lib/constant.pm
index ef618c43ab2..035bce23742 100644
--- a/gnu/usr.bin/perl/dist/constant/lib/constant.pm
+++ b/gnu/usr.bin/perl/dist/constant/lib/constant.pm
@@ -1,10 +1,10 @@
package constant;
-use 5.005;
+use 5.008;
use strict;
use warnings::register;
use vars qw($VERSION %declared);
-$VERSION = '1.23';
+$VERSION = '1.27';
#=======================================================================
@@ -17,10 +17,9 @@ my %forced_into_main = map +($_, 1),
my %forbidden = (%keywords, %forced_into_main);
-my $str_end = $] >= 5.006 ? "\\z" : "\\Z";
-my $normal_constant_name = qr/^_?[^\W_0-9]\w*$str_end/;
-my $tolerable = qr/^[A-Za-z_]\w*$str_end/;
-my $boolean = qr/^[01]?$str_end/;
+my $normal_constant_name = qr/^_?[^\W_0-9]\w*\z/;
+my $tolerable = qr/^[A-Za-z_]\w*\z/;
+my $boolean = qr/^[01]?\z/;
BEGIN {
# We'd like to do use constant _CAN_PCS => $] > 5.009002
@@ -30,18 +29,8 @@ BEGIN {
my $const = $] > 5.009002;
*_CAN_PCS = sub () {$const};
- # Before this makes its way into a dev perl release, we have to do
- # browser-sniffing, as it were....
- return unless $const;
- *{chr 256} = \3;
- if (exists ${__PACKAGE__."::"}{"\xc4\x80"}) {
- delete ${__PACKAGE__."::"}{"\xc4\x80"};
- *_DOWNGRADE = sub () {1};
- }
- else {
- delete ${__PACKAGE__."::"}{chr 256};
- *_DOWNGRADE = sub () {0};
- }
+ my $downgrade = $] < 5.015004; # && $] >= 5.008
+ *_DOWNGRADE = sub () { $downgrade };
}
#=======================================================================
@@ -130,7 +119,7 @@ sub import {
if ($multiple || @_ == 1) {
my $scalar = $multiple ? $constants->{$name} : $_[0];
- if (_DOWNGRADE) { # for 5.10 to 5.14
+ if (_DOWNGRADE) { # for 5.8 to 5.14
# Work around perl bug #31991: Sub names (actually glob
# names in general) ignore the UTF8 flag. So we have to
# turn it off to get the "right" symbol table entry.
@@ -373,9 +362,6 @@ C<< CONSTANT => 'value' >>.
L<Readonly> - Facility for creating read-only scalars, arrays, hashes.
-L<Const> - Facility for creating read-only variables. Similar to C<Readonly>,
-but uses C<SvREADONLY> instead of C<tie>.
-
L<Attribute::Constant> - Make read-only variables via attribute
L<Scalar::Readonly> - Perl extension to the C<SvREADONLY> scalar flag
diff --git a/gnu/usr.bin/perl/dist/constant/t/constant.t b/gnu/usr.bin/perl/dist/constant/t/constant.t
index 85a9355a19f..326268b575b 100755
--- a/gnu/usr.bin/perl/dist/constant/t/constant.t
+++ b/gnu/usr.bin/perl/dist/constant/t/constant.t
@@ -167,7 +167,6 @@ ok $constant::declared{'Other::IN_OTHER_PACK'};
@warnings = ();
eval q{
no warnings;
- #local $^W if $] < 5.006;
use warnings 'constant';
use constant 'BEGIN' => 1 ;
use constant 'INIT' => 1 ;
diff --git a/gnu/usr.bin/perl/dist/constant/t/utf8.t b/gnu/usr.bin/perl/dist/constant/t/utf8.t
index c8830c33b20..b754202c6ba 100644
--- a/gnu/usr.bin/perl/dist/constant/t/utf8.t
+++ b/gnu/usr.bin/perl/dist/constant/t/utf8.t
@@ -1,9 +1,15 @@
#!./perl -T
+use Test::More;
+BEGIN {
+ plan skip_all => "irrelevant on pre-5.8.4" if $] < 5.008004
+}
+
# Tests for constant.pm that require the utf8 pragma
use utf8;
-use Test::More tests => 2;
+
+plan tests => 2;
use constant π => 4 * atan2 1, 1;
diff --git a/gnu/usr.bin/perl/dist/threads-shared/lib/threads/shared.pm b/gnu/usr.bin/perl/dist/threads-shared/lib/threads/shared.pm
index d4d62b22c70..ecbc1fd1db8 100644
--- a/gnu/usr.bin/perl/dist/threads-shared/lib/threads/shared.pm
+++ b/gnu/usr.bin/perl/dist/threads-shared/lib/threads/shared.pm
@@ -7,13 +7,16 @@ use warnings;
use Scalar::Util qw(reftype refaddr blessed);
-our $VERSION = '1.40';
+our $VERSION = '1.43';
my $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
# Declare that we have been loaded
$threads::shared::threads_shared = 1;
+# Method of complaint about things we can't clone
+$threads::shared::clone_warn = undef;
+
# Load the XS code, if applicable
if ($threads::threads) {
require XSLoader;
@@ -156,7 +159,12 @@ $make_shared = sub {
} else {
require Carp;
- Carp::croak("Unsupported ref type: ", $ref_type);
+ if (! defined($threads::shared::clone_warn)) {
+ Carp::croak("Unsupported ref type: ", $ref_type);
+ } elsif ($threads::shared::clone_warn) {
+ Carp::carp("Unsupported ref type: ", $ref_type);
+ }
+ return undef;
}
# If input item is an object, then bless the copy into the same class
@@ -187,7 +195,7 @@ threads::shared - Perl extension for sharing data structures between threads
=head1 VERSION
-This document describes threads::shared version 1.40
+This document describes threads::shared version 1.43
=head1 SYNOPSIS
@@ -311,6 +319,19 @@ For cloning empty array or hash refs, the following may also be used:
$var = &share([]); # Same as $var = shared_clone([]);
$var = &share({}); # Same as $var = shared_clone({});
+Not all Perl data types can be cloned (e.g., globs, code refs). By default,
+C<shared_clone> will L<croak|Carp> if it encounters such items. To change
+this behaviour to a warning, then set the following:
+
+ $threads::shared::clone_warn = 1;
+
+In this case, C<undef> will be substituted for the item to be cloned. If
+set to zero:
+
+ $threads::shared::clone_warn = 0;
+
+then the C<undef> substitution will be performed silently.
+
=item is_shared VARIABLE
C<is_shared> checks if the specified variable is shared or not. If shared,
@@ -383,10 +404,10 @@ L<Thread::Semaphore>.
The C<cond_wait> function takes a B<locked> variable as a parameter, unlocks
the variable, and blocks until another thread does a C<cond_signal> or
C<cond_broadcast> for that same locked variable. The variable that
-C<cond_wait> blocked on is relocked after the C<cond_wait> is satisfied. If
+C<cond_wait> blocked on is re-locked after the C<cond_wait> is satisfied. If
there are multiple threads C<cond_wait>ing on the same variable, all but one
will re-block waiting to reacquire the lock on the variable. (So if you're only
-using C<cond_wait> for synchronisation, give up the lock as soon as possible).
+using C<cond_wait> for synchronization, give up the lock as soon as possible).
The two actions of unlocking the variable and entering the blocked wait state
are atomic, the two actions of exiting from the blocked wait state and
re-locking the variable are not.
@@ -408,7 +429,8 @@ drops to zero:
=item cond_timedwait CONDVAR, ABS_TIMEOUT, LOCKVAR
In its two-argument form, C<cond_timedwait> takes a B<locked> variable and an
-absolute timeout as parameters, unlocks the variable, and blocks until the
+absolute timeout in I<epoch> seconds (see L<time() in perlfunc|perlfunc/time>
+for more) as parameters, unlocks the variable, and blocks until the
timeout is reached or another thread signals the variable. A false value is
returned if the timeout is reached, and a true value otherwise. In either
case, the variable is re-locked upon return.
@@ -543,7 +565,7 @@ C<share()> allows you to C<< share($hashref->{key}) >> and
C<< share($arrayref->[idx]) >> without giving any error message. But the
C<< $hashref->{key} >> or C<< $arrayref->[idx] >> is B<not> shared, causing
the error "lock can only be used on shared values" to occur when you attempt
-to C<< lock($hasref->{key}) >> or C<< lock($arrayref->[idx]) >> in another
+to C<< lock($hashref->{key}) >> or C<< lock($arrayref->[idx]) >> in another
thread.
Using L<refaddr()|Scalar::Util/"refaddr EXPR">) is unreliable for testing
@@ -585,6 +607,13 @@ Either of the following will work instead:
...
}
+This module supports dual-valued variables created using L<dualvar() from
+Scalar::Util|Scalar::Util/"dualvar NUM, STRING">). However, while C<$!> acts
+like a dualvar, it is implemented as a tied SV. To propagate its value, use
+the follow construct, if needed:
+
+ my $errno :shared = dualvar($!,$!);
+
View existing bug reports at, and submit any new bugs, problems, patches, etc.
to: L<http://rt.cpan.org/Public/Dist/Display.html?Name=threads-shared>
diff --git a/gnu/usr.bin/perl/dist/threads-shared/shared.xs b/gnu/usr.bin/perl/dist/threads-shared/shared.xs
index 58afefb7f57..3dccc390691 100644
--- a/gnu/usr.bin/perl/dist/threads-shared/shared.xs
+++ b/gnu/usr.bin/perl/dist/threads-shared/shared.xs
@@ -304,6 +304,24 @@ MGVTBL sharedsv_userlock_vtbl = {
#endif
};
+
+/* Support for dual-valued variables */
+#ifdef SVf_IVisUV
+# define DUALVAR_FLAGS(sv) \
+ ((SvPOK(sv)) \
+ ? ((SvNOK(sv) || SvNOKp(sv)) ? SVf_NOK \
+ : ((SvIsUV(sv)) ? (SVf_IOK | SVf_IVisUV) \
+ : ((SvIOK(sv) || SvIOKp(sv)) ? SVf_IOK : 0))) \
+ : 0)
+#else
+# define DUALVAR_FLAGS(sv) \
+ ((SvPOK(sv)) \
+ ? ((SvNOK(sv) || SvNOKp(sv)) ? SVf_NOK \
+ : ((SvIOK(sv) || SvIOKp(sv)) ? SVf_IOK : 0)) \
+ : 0)
+#endif
+
+
/*
* Access to shared things is heavily based on MAGIC
* - in mg.h/mg.c/sv.c sense
@@ -326,11 +344,7 @@ extern MGVTBL sharedsv_elem_vtbl; /* Elements of hashes and arrays have
/* Get shared aggregate SV pointed to by threads::shared::tie magic object */
-STATIC SV *
-S_sharedsv_from_obj(pTHX_ SV *sv)
-{
- return ((SvROK(sv)) ? INT2PTR(SV *, SvIV(SvRV(sv))) : NULL);
-}
+#define SHAREDSV_FROM_OBJ(sv) ((SvROK(sv)) ? INT2PTR(SV *, SvIV(SvRV(sv))) : NULL)
/* Return the user_lock structure (if any) associated with a shared SV.
@@ -405,7 +419,7 @@ Perl_sharedsv_find(pTHX_ SV *sv)
}
/* Just for tidyness of API also handle tie objects */
if (SvROK(sv) && sv_derived_from(sv, "threads::shared::tie")) {
- return (S_sharedsv_from_obj(aTHX_ sv));
+ return (SHAREDSV_FROM_OBJ(sv));
}
return (NULL);
}
@@ -885,7 +899,7 @@ int
sharedsv_elem_mg_FETCH(pTHX_ SV *sv, MAGIC *mg)
{
dTHXc;
- SV *saggregate = S_sharedsv_from_obj(aTHX_ mg->mg_obj);
+ SV *saggregate = SHAREDSV_FROM_OBJ(mg->mg_obj);
SV** svp = NULL;
ENTER_LOCK;
@@ -935,8 +949,10 @@ int
sharedsv_elem_mg_STORE(pTHX_ SV *sv, MAGIC *mg)
{
dTHXc;
- SV *saggregate = S_sharedsv_from_obj(aTHX_ mg->mg_obj);
+ SV *saggregate = SHAREDSV_FROM_OBJ(mg->mg_obj);
SV **svp;
+ U32 dualvar_flags = DUALVAR_FLAGS(sv);
+
/* Theory - SV itself is magically shared - and we have ordered the
magic such that by the time we get here it has been stored
to its shared counterpart
@@ -965,6 +981,7 @@ sharedsv_elem_mg_STORE(pTHX_ SV *sv, MAGIC *mg)
CALLER_CONTEXT;
Perl_sharedsv_associate(aTHX_ sv, *svp);
sharedsv_scalar_store(aTHX_ sv, *svp);
+ SvFLAGS(*svp) |= dualvar_flags;
LEAVE_LOCK;
return (0);
}
@@ -976,7 +993,7 @@ sharedsv_elem_mg_DELETE(pTHX_ SV *sv, MAGIC *mg)
{
dTHXc;
MAGIC *shmg;
- SV *saggregate = S_sharedsv_from_obj(aTHX_ mg->mg_obj);
+ SV *saggregate = SHAREDSV_FROM_OBJ(mg->mg_obj);
/* Object may not exist during global destruction */
if (! saggregate) {
@@ -1017,7 +1034,7 @@ int
sharedsv_elem_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *param)
{
PERL_UNUSED_ARG(param);
- SvREFCNT_inc_void(S_sharedsv_from_obj(aTHX_ mg->mg_obj));
+ SvREFCNT_inc_void(SHAREDSV_FROM_OBJ(mg->mg_obj));
assert(mg->mg_flags & MGf_DUP);
return (0);
}
@@ -1184,7 +1201,7 @@ Perl_sharedsv_locksv(pTHX_ SV *sv)
sv = SvRV(sv);
ssv = Perl_sharedsv_find(aTHX_ sv);
if (!ssv)
- croak("lock can only be used on shared values");
+ croak("lock can only be used on shared values");
Perl_sharedsv_lock(aTHX_ ssv);
}
@@ -1219,7 +1236,7 @@ S_shared_signal_hook(pTHX) {
us = (PL_sharedsv_lock.owner == aTHX);
MUTEX_UNLOCK(&PL_sharedsv_lock.mutex);
if (us)
- return; /* try again later */
+ return; /* try again later */
prev_signal_hook(aTHX);
}
#endif
@@ -1243,8 +1260,8 @@ Perl_sharedsv_init(pTHX)
#endif
#ifdef PL_signalhook
if (!prev_signal_hook) {
- prev_signal_hook = PL_signalhook;
- PL_signalhook = &S_shared_signal_hook;
+ prev_signal_hook = PL_signalhook;
+ PL_signalhook = &S_shared_signal_hook;
}
#endif
}
@@ -1261,14 +1278,16 @@ void
PUSH(SV *obj, ...)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
- int i;
- for (i = 1; i < items; i++) {
- SV* tmp = newSVsv(ST(i));
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
+ int ii;
+ for (ii = 1; ii < items; ii++) {
+ SV* tmp = newSVsv(ST(ii));
SV *stmp;
+ U32 dualvar_flags = DUALVAR_FLAGS(tmp);
ENTER_LOCK;
stmp = S_sharedsv_new_shared(aTHX_ tmp);
sharedsv_scalar_store(aTHX_ tmp, stmp);
+ SvFLAGS(stmp) |= dualvar_flags;
SHARED_CONTEXT;
av_push((AV*) sobj, stmp);
SvREFCNT_inc_void(stmp);
@@ -1281,18 +1300,20 @@ void
UNSHIFT(SV *obj, ...)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
- int i;
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
+ int ii;
ENTER_LOCK;
SHARED_CONTEXT;
av_unshift((AV*)sobj, items - 1);
CALLER_CONTEXT;
- for (i = 1; i < items; i++) {
- SV *tmp = newSVsv(ST(i));
+ for (ii = 1; ii < items; ii++) {
+ SV *tmp = newSVsv(ST(ii));
+ U32 dualvar_flags = DUALVAR_FLAGS(tmp);
SV *stmp = S_sharedsv_new_shared(aTHX_ tmp);
sharedsv_scalar_store(aTHX_ tmp, stmp);
SHARED_CONTEXT;
- av_store((AV*) sobj, i - 1, stmp);
+ SvFLAGS(stmp) |= dualvar_flags;
+ av_store((AV*) sobj, ii - 1, stmp);
SvREFCNT_inc_void(stmp);
CALLER_CONTEXT;
SvREFCNT_dec(tmp);
@@ -1304,7 +1325,7 @@ void
POP(SV *obj)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
SV* ssv;
ENTER_LOCK;
SHARED_CONTEXT;
@@ -1321,7 +1342,7 @@ void
SHIFT(SV *obj)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
SV* ssv;
ENTER_LOCK;
SHARED_CONTEXT;
@@ -1338,7 +1359,7 @@ void
EXTEND(SV *obj, IV count)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
SHARED_EDIT;
av_extend((AV*)sobj, count);
SHARED_RELEASE;
@@ -1348,7 +1369,7 @@ void
STORESIZE(SV *obj,IV count)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
SHARED_EDIT;
av_fill((AV*) sobj, count);
SHARED_RELEASE;
@@ -1358,7 +1379,7 @@ void
EXISTS(SV *obj, SV *index)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
bool exists;
if (SvTYPE(sobj) == SVt_PVAV) {
SHARED_EDIT;
@@ -1383,7 +1404,7 @@ void
FIRSTKEY(SV *obj)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
char* key = NULL;
I32 len = 0;
HE* entry;
@@ -1408,7 +1429,7 @@ void
NEXTKEY(SV *obj, SV *oldkey)
CODE:
dTHXc;
- SV *sobj = S_sharedsv_from_obj(aTHX_ obj);
+ SV *sobj = SHAREDSV_FROM_OBJ(obj);
char* key = NULL;
I32 len = 0;
HE* entry;
@@ -1642,7 +1663,7 @@ cond_broadcast(SV *myref)
void
-bless(SV* myref, ...);
+bless(SV* myref, ...)
PROTOTYPE: $;$
PREINIT:
HV* stash;
diff --git a/gnu/usr.bin/perl/dist/threads-shared/t/clone.t b/gnu/usr.bin/perl/dist/threads-shared/t/clone.t
index fd31181126c..fcb3e71d93a 100755
--- a/gnu/usr.bin/perl/dist/threads-shared/t/clone.t
+++ b/gnu/usr.bin/perl/dist/threads-shared/t/clone.t
@@ -27,7 +27,7 @@ sub ok {
BEGIN {
$| = 1;
- print("1..34\n"); ### Number of tests that will be run ###
+ print("1..40\n"); ### Number of tests that will be run ###
};
my $test = 1;
@@ -170,6 +170,29 @@ ok($test++, 1, 'Loaded');
ok($test++, ref($copy) eq 'Foo', 'Cloned object class');
}
+{
+ my $foo = \*STDIN;
+ my $copy :shared;
+ eval {
+ $copy = shared_clone($foo);
+ };
+ ok($test++, $@ =~ /Unsupported/, 'Cannot clone GLOB - fatal');
+ ok($test++, ! defined($copy), 'Nothing cloned');
+
+ $threads::shared::clone_warn = 1;
+ my $warn;
+ $SIG{'__WARN__'} = sub { $warn = shift; };
+ $copy = shared_clone($foo);
+ ok($test++, $warn =~ /Unsupported/, 'Cannot clone GLOB - warning');
+ ok($test++, ! defined($copy), 'Nothing cloned');
+
+ $threads::shared::clone_warn = 0;
+ undef($warn);
+ $copy = shared_clone($foo);
+ ok($test++, ! defined($warn), 'Cannot clone GLOB - silent');
+ ok($test++, ! defined($copy), 'Nothing cloned');
+}
+
exit(0);
# EOF
diff --git a/gnu/usr.bin/perl/dist/threads-shared/t/dualvar.t b/gnu/usr.bin/perl/dist/threads-shared/t/dualvar.t
new file mode 100644
index 00000000000..cc8df210e68
--- /dev/null
+++ b/gnu/usr.bin/perl/dist/threads-shared/t/dualvar.t
@@ -0,0 +1,447 @@
+use strict;
+use warnings;
+
+BEGIN {
+ use Config;
+ if (! $Config{'useithreads'}) {
+ print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
+ exit(0);
+ }
+}
+
+use ExtUtils::testlib;
+
+BEGIN {
+ $| = 1;
+ print("1..226\n"); ### Number of tests that will be run ###
+}
+
+use threads;
+use threads::shared;
+use Scalar::Util qw(dualvar);
+
+my $TEST = 1;
+
+sub ok {
+ my ($ok, $name) = @_;
+
+ # You have to do it this way or VMS will get confused.
+ if ($ok) {
+ print("ok $TEST - $name\n");
+ } else {
+ print("not ok $TEST - $name\n");
+ printf("# Failed test at line %d\n", (caller(1))[2]);
+ }
+
+ $TEST++;
+}
+
+sub ok_iv
+{
+ my ($var, $iv) = @_;
+ ok($var == $iv, 'IV number preserved');
+ ok($var eq $iv, 'String preserved');
+}
+
+sub ok_nv
+{
+ my ($var, $nv) = @_;
+ ok($var == $nv, 'NV number preserved');
+ ok($var eq $nv, 'String preserved');
+}
+
+sub ok_uv
+{
+ my ($var, $uv) = @_;
+ ok($var == $uv, 'UV number preserved');
+ ok($var > 0, 'UV number preserved');
+ ok($var eq $uv, 'String preserved');
+}
+
+### Start of Testing ###
+
+my $iv = dualvar(42, 'Fourty-Two');
+my $nv = dualvar(3.14, 'PI');
+my $bits = ($Config{'use64bitint'}) ? 63 : 31;
+my $uv = dualvar(1<<$bits, 'Large unsigned int');
+
+print("# Shared scalar assignment using shared_clone()\n");
+
+my $siv :shared = shared_clone($iv);
+my $snv :shared = shared_clone($nv);
+my $suv :shared = shared_clone($uv);
+
+ok_iv($siv, $iv);
+ok_nv($snv, $nv);
+ok_uv($suv, $uv);
+
+{
+ print("# Shared array initialization\n");
+
+ my @ary :shared = ($iv, $nv, $uv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared array list assignment\n");
+
+ my @ary :shared;
+ @ary = ($iv, $nv, $uv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared array element assignment\n");
+
+ my @ary :shared;
+ $ary[0] = $iv;
+ $ary[1] = $nv;
+ $ary[2] = $uv;
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared array initialization - shared scalars\n");
+
+ my @ary :shared = ($siv, $snv, $suv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared array list assignment - shared scalars\n");
+
+ my @ary :shared;
+ @ary = ($siv, $snv, $suv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared array element assignment - shared scalars\n");
+
+ my @ary :shared;
+ $ary[0] = $siv;
+ $ary[1] = $snv;
+ $ary[2] = $suv;
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+}
+
+{
+ print("# Shared hash initialization\n");
+
+ my %hsh :shared = (
+ 'iv' => $iv,
+ 'nv' => $nv,
+ 'uv' => $uv,
+ );
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash assignment\n");
+
+ my %hsh :shared;
+ %hsh = (
+ 'iv' => $iv,
+ 'nv' => $nv,
+ 'uv' => $uv,
+ );
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash element assignment\n");
+
+ my %hsh :shared;
+ $hsh{'iv'} = $iv;
+ $hsh{'nv'} = $nv;
+ $hsh{'uv'} = $uv;
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash initialization - shared scalars\n");
+
+ my %hsh :shared = (
+ 'iv' => $siv,
+ 'nv' => $snv,
+ 'uv' => $suv,
+ );
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash assignment - shared scalars\n");
+
+ my %hsh :shared;
+ %hsh = (
+ 'iv' => $siv,
+ 'nv' => $snv,
+ 'uv' => $suv,
+ );
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash element assignment - shared scalars\n");
+
+ my %hsh :shared;
+ $hsh{'iv'} = $siv;
+ $hsh{'nv'} = $snv;
+ $hsh{'uv'} = $suv;
+
+ ok_iv($hsh{'iv'}, $iv);
+ ok_nv($hsh{'nv'}, $nv);
+ ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+ print("# Shared array push\n");
+
+ my @ary :shared;
+ push(@ary, $iv, $nv, $uv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+
+ print("# Shared array pop\n");
+
+ my $xuv = pop(@ary);
+ my $xnv = pop(@ary);
+ my $xiv = pop(@ary);
+
+ ok_iv($xiv, $iv);
+ ok_nv($xnv, $nv);
+ ok_uv($xuv, $uv);
+
+ print("# Shared array unshift\n");
+
+ unshift(@ary, $iv, $nv, $uv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+
+ print("# Shared array shift\n");
+
+ $xiv = shift(@ary);
+ $xnv = shift(@ary);
+ $xuv = shift(@ary);
+
+ ok_iv($xiv, $iv);
+ ok_nv($xnv, $nv);
+ ok_uv($xuv, $uv);
+}
+
+{
+ print("# Shared array push - shared scalars\n");
+
+ my @ary :shared;
+ push(@ary, $siv, $snv, $suv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+
+ print("# Shared array pop - shared scalars\n");
+
+ my $xuv = pop(@ary);
+ my $xnv = pop(@ary);
+ my $xiv = pop(@ary);
+
+ ok_iv($xiv, $iv);
+ ok_nv($xnv, $nv);
+ ok_uv($xuv, $uv);
+
+ print("# Shared array unshift - shared scalars\n");
+
+ unshift(@ary, $siv, $snv, $suv);
+
+ ok_iv($ary[0], $iv);
+ ok_nv($ary[1], $nv);
+ ok_uv($ary[2], $uv);
+
+ print("# Shared array shift - shared scalars\n");
+
+ $xiv = shift(@ary);
+ $xnv = shift(@ary);
+ $xuv = shift(@ary);
+
+ ok_iv($xiv, $iv);
+ ok_nv($xnv, $nv);
+ ok_uv($xuv, $uv);
+}
+
+{
+ print("# Shared hash delete\n");
+
+ my %hsh :shared = (
+ 'iv' => $iv,
+ 'nv' => $nv,
+ 'uv' => $uv,
+ );
+
+ ok_iv(delete($hsh{'iv'}), $iv);
+ ok_nv(delete($hsh{'nv'}), $nv);
+ ok_uv(delete($hsh{'uv'}), $uv);
+}
+
+{
+ print("# Shared hash delete - shared scalars\n");
+
+ my %hsh :shared = (
+ 'iv' => $siv,
+ 'nv' => $snv,
+ 'uv' => $suv,
+ );
+
+ ok_iv(delete($hsh{'iv'}), $iv);
+ ok_nv(delete($hsh{'nv'}), $nv);
+ ok_uv(delete($hsh{'uv'}), $uv);
+}
+
+{
+ print("# Shared array copy to non-shared array\n");
+
+ my @ary :shared = ($iv, $nv, $uv);
+ my @nsa = @ary;
+
+ ok_iv($nsa[0], $iv);
+ ok_nv($nsa[1], $nv);
+ ok_uv($nsa[2], $uv);
+
+ print("# Shared array copy using shared_clone()\n");
+
+ my $copy :shared = shared_clone(\@nsa);
+
+ ok_iv($$copy[0], $iv);
+ ok_nv($$copy[1], $nv);
+ ok_uv($$copy[2], $uv);
+}
+
+{
+ print("# Shared array copy to non-shared array - shared scalars\n");
+
+ my @ary :shared = ($siv, $snv, $suv);
+ my @nsa = @ary;
+
+ ok_iv($nsa[0], $iv);
+ ok_nv($nsa[1], $nv);
+ ok_uv($nsa[2], $uv);
+
+ print("# Shared array copy using shared_clone()\n");
+
+ my $copy :shared = shared_clone(\@nsa);
+
+ ok_iv($$copy[0], $iv);
+ ok_nv($$copy[1], $nv);
+ ok_uv($$copy[2], $uv);
+}
+
+{
+ print("# Shared hash copy to non-shared hash\n");
+
+ my %hsh :shared = (
+ 'iv' => $iv,
+ 'nv' => $nv,
+ 'uv' => $uv,
+ );
+ my %nsh = %hsh;
+
+ ok_iv($nsh{'iv'}, $iv);
+ ok_nv($nsh{'nv'}, $nv);
+ ok_uv($nsh{'uv'}, $uv);
+
+ print("# Shared hash copy using shared_clone()\n");
+
+ my $copy :shared = shared_clone(\%nsh);
+
+ ok_iv($$copy{'iv'}, $iv);
+ ok_nv($$copy{'nv'}, $nv);
+ ok_uv($$copy{'uv'}, $uv);
+}
+
+{
+ print("# Shared hash copy to non-shared hash - shared scalars\n");
+
+ my %hsh :shared = (
+ 'iv' => $siv,
+ 'nv' => $snv,
+ 'uv' => $suv,
+ );
+ my %nsh = %hsh;
+
+ ok_iv($nsh{'iv'}, $iv);
+ ok_nv($nsh{'nv'}, $nv);
+ ok_uv($nsh{'uv'}, $uv);
+
+ print("# Shared hash copy using shared_clone()\n");
+
+ my $copy :shared = shared_clone(\%nsh);
+
+ ok_iv($$copy{'iv'}, $iv);
+ ok_nv($$copy{'nv'}, $nv);
+ ok_uv($$copy{'uv'}, $uv);
+}
+
+print("# Mix it up with a thread\n");
+my @ary :shared;
+my %hsh :shared;
+
+threads->create(sub {
+ @ary = ($siv);
+ push(@ary, $snv);
+
+ %hsh = ( 'nv' => $ary[1] );
+ $hsh{'iv'} = $ary[0];
+ $hsh{'uv'} = $suv;
+
+ $ary[2] = $hsh{'uv'};
+ })->join();
+
+ok_iv($hsh{'iv'}, $ary[0]);
+ok_nv($hsh{'nv'}, $ary[1]);
+ok_uv($hsh{'uv'}, $ary[2]);
+
+# $! behaves like a dualvar, but is really implemented as a tied SV.
+# As a result sharing $! directly only propagates the string value.
+# However, we can create a dualvar from it.
+print("# Errno\n");
+$! = 1;
+my $ss :shared = dualvar($!,$!);
+ok_iv($ss, $!);
+
+exit(0);
diff --git a/gnu/usr.bin/perl/dquote_static.c b/gnu/usr.bin/perl/dquote_static.c
index e23ec4623a9..da1b5b950a6 100644
--- a/gnu/usr.bin/perl/dquote_static.c
+++ b/gnu/usr.bin/perl/dquote_static.c
@@ -8,7 +8,6 @@
*/
#define PERL_IN_DQUOTE_STATIC_C
-#include "proto.h"
#include "embed.h"
/*
@@ -16,7 +15,11 @@
Pulled from regcomp.c.
*/
PERL_STATIC_INLINE I32
-S_regcurly(pTHX_ register const char *s)
+S_regcurly(pTHX_ const char *s,
+ const bool rbrace_must_be_escaped /* Should the terminating '} be
+ preceded by a backslash? This
+ is an abnormal case */
+ )
{
PERL_ARGS_ASSERT_REGCURLY;
@@ -31,9 +34,10 @@ S_regcurly(pTHX_ register const char *s)
while (isDIGIT(*s))
s++;
}
- if (*s != '}')
- return FALSE;
- return TRUE;
+
+ return (rbrace_must_be_escaped)
+ ? *s == '\\' && *(s+1) == '}'
+ : *s == '}';
}
/* XXX Add documentation after final interface and behavior is decided */
@@ -69,7 +73,7 @@ S_grok_bslash_c(pTHX_ const char source, const bool utf8, const bool output_warn
else {
U8 clearer[3];
U8 i = 0;
- if (! isALNUM(result)) {
+ if (! isWORDCHAR(result)) {
clearer[i++] = '\\';
}
clearer[i++] = result;
@@ -86,31 +90,37 @@ S_grok_bslash_c(pTHX_ const char source, const bool utf8, const bool output_warn
}
STATIC bool
-S_grok_bslash_o(pTHX_ const char *s,
- UV *uv,
- STRLEN *len,
- const char** error_msg,
- const bool output_warning)
+S_grok_bslash_o(pTHX_ char **s, UV *uv, const char** error_msg,
+ const bool output_warning, const bool strict,
+ const bool silence_non_portable,
+ const bool UTF)
{
/* Documentation to be supplied when interface nailed down finally
* This returns FALSE if there is an error which the caller need not recover
* from; , otherwise TRUE. In either case the caller should look at *len
* On input:
- * s points to a string that begins with 'o', and the previous character
- * was a backslash.
+ * s is the address of a pointer to a NULL terminated string that begins
+ * with 'o', and the previous character was a backslash. At exit, *s
+ * will be advanced to the byte just after those absorbed by this
+ * function. Hence the caller can continue parsing from there. In
+ * the case of an error, this routine has generally positioned *s to
+ * point just to the right of the first bad spot, so that a message
+ * that has a "<--" to mark the spot will be correctly positioned.
* uv points to a UV that will hold the output value, valid only if the
* return from the function is TRUE
- * len on success will point to the next character in the string past the
- * end of this construct.
- * on failure, it will point to the failure
* error_msg is a pointer that will be set to an internal buffer giving an
* error message upon failure (the return is FALSE). Untouched if
* function succeeds
* output_warning says whether to output any warning messages, or suppress
* them
+ * strict is true if this should fail instead of warn if there are
+ * non-octal digits within the braces
+ * silence_non_portable is true if to suppress warnings about the code
+ * point returned being too large to fit on all platforms.
+ * UTF is true iff the string *s is encoded in UTF-8.
*/
- const char* e;
+ char* e;
STRLEN numbers_len;
I32 flags = PERL_SCAN_ALLOW_UNDERSCORES
| PERL_SCAN_DISALLOW_PREFIX
@@ -121,55 +131,212 @@ S_grok_bslash_o(pTHX_ const char *s,
PERL_ARGS_ASSERT_GROK_BSLASH_O;
- assert(*s == 'o');
- s++;
+ assert(**s == 'o');
+ (*s)++;
- if (*s != '{') {
- *len = 1; /* Move past the o */
+ if (**s != '{') {
*error_msg = "Missing braces on \\o{}";
return FALSE;
}
- e = strchr(s, '}');
+ e = strchr(*s, '}');
if (!e) {
- *len = 2; /* Move past the o{ */
- *error_msg = "Missing right brace on \\o{";
+ (*s)++; /* Move past the '{' */
+ while (isOCTAL(**s)) { /* Position beyond the legal digits */
+ (*s)++;
+ }
+ *error_msg = "Missing right brace on \\o{";
return FALSE;
}
- /* Return past the '}' no matter what is inside the braces */
- *len = e - s + 2; /* 2 = 1 for the o + 1 for the '}' */
-
- s++; /* Point to first digit */
-
- numbers_len = e - s;
+ (*s)++; /* Point to expected first digit (could be first byte of utf8
+ sequence if not a digit) */
+ numbers_len = e - *s;
if (numbers_len == 0) {
+ (*s)++; /* Move past the } */
*error_msg = "Number with no digits";
return FALSE;
}
- *uv = NATIVE_TO_UNI(grok_oct(s, &numbers_len, &flags, NULL));
+ if (silence_non_portable) {
+ flags |= PERL_SCAN_SILENT_NON_PORTABLE;
+ }
+
+ *uv = grok_oct(*s, &numbers_len, &flags, NULL);
/* Note that if has non-octal, will ignore everything starting with that up
* to the '}' */
- if (output_warning && numbers_len != (STRLEN) (e - s)) {
- Perl_ck_warner(aTHX_ packWARN(WARN_DIGIT),
- /* diag_listed_as: Non-octal character '%c'. Resolved as "%s" */
- "Non-octal character '%c'. Resolved as \"\\o{%.*s}\"",
- *(s + numbers_len),
- (int) numbers_len,
- s);
+ if (numbers_len != (STRLEN) (e - *s)) {
+ if (strict) {
+ *s += numbers_len;
+ *s += (UTF) ? UTF8SKIP(*s) : (STRLEN) 1;
+ *error_msg = "Non-octal character";
+ return FALSE;
+ }
+ else if (output_warning) {
+ Perl_ck_warner(aTHX_ packWARN(WARN_DIGIT),
+ /* diag_listed_as: Non-octal character '%c'. Resolved as "%s" */
+ "Non-octal character '%c'. Resolved as \"\\o{%.*s}\"",
+ *(*s + numbers_len),
+ (int) numbers_len,
+ *s);
+ }
}
+ /* Return past the '}' */
+ *s = e + 1;
+
return TRUE;
}
+PERL_STATIC_INLINE bool
+S_grok_bslash_x(pTHX_ char **s, UV *uv, const char** error_msg,
+ const bool output_warning, const bool strict,
+ const bool silence_non_portable,
+ const bool UTF)
+{
+
+/* Documentation to be supplied when interface nailed down finally
+ * This returns FALSE if there is an error which the caller need not recover
+ * from; , otherwise TRUE. In either case the caller should look at *len
+ * On input:
+ * s is the address of a pointer to a NULL terminated string that begins
+ * with 'x', and the previous character was a backslash. At exit, *s
+ * will be advanced to the byte just after those absorbed by this
+ * function. Hence the caller can continue parsing from there. In
+ * the case of an error, this routine has generally positioned *s to
+ * point just to the right of the first bad spot, so that a message
+ * that has a "<--" to mark the spot will be correctly positioned.
+ * uv points to a UV that will hold the output value, valid only if the
+ * return from the function is TRUE
+ * error_msg is a pointer that will be set to an internal buffer giving an
+ * error message upon failure (the return is FALSE). Untouched if
+ * function succeeds
+ * output_warning says whether to output any warning messages, or suppress
+ * them
+ * strict is true if anything out of the ordinary should cause this to
+ * fail instead of warn or be silent. For example, it requires
+ * exactly 2 digits following the \x (when there are no braces).
+ * 3 digits could be a mistake, so is forbidden in this mode.
+ * silence_non_portable is true if to suppress warnings about the code
+ * point returned being too large to fit on all platforms.
+ * UTF is true iff the string *s is encoded in UTF-8.
+ */
+ char* e;
+ STRLEN numbers_len;
+ I32 flags = PERL_SCAN_DISALLOW_PREFIX;
+
+ PERL_ARGS_ASSERT_GROK_BSLASH_X;
+
+ PERL_UNUSED_ARG(output_warning);
+
+ assert(**s == 'x');
+ (*s)++;
+
+ if (strict) {
+ flags |= PERL_SCAN_SILENT_ILLDIGIT;
+ }
+
+ if (**s != '{') {
+ STRLEN len = (strict) ? 3 : 2;
+
+ *uv = grok_hex(*s, &len, &flags, NULL);
+ *s += len;
+ if (strict && len != 2) {
+ if (len < 2) {
+ *s += (UTF) ? UTF8SKIP(*s) : 1;
+ *error_msg = "Non-hex character";
+ }
+ else {
+ *error_msg = "Use \\x{...} for more than two hex characters";
+ }
+ return FALSE;
+ }
+ return TRUE;
+ }
+
+ e = strchr(*s, '}');
+ if (!e) {
+ (*s)++; /* Move past the '{' */
+ while (isXDIGIT(**s)) { /* Position beyond the legal digits */
+ (*s)++;
+ }
+ /* XXX The corresponding message above for \o is just '\\o{'; other
+ * messages for other constructs include the '}', so are inconsistent.
+ */
+ *error_msg = "Missing right brace on \\x{}";
+ return FALSE;
+ }
+
+ (*s)++; /* Point to expected first digit (could be first byte of utf8
+ sequence if not a digit) */
+ numbers_len = e - *s;
+ if (numbers_len == 0) {
+ if (strict) {
+ (*s)++; /* Move past the } */
+ *error_msg = "Number with no digits";
+ return FALSE;
+ }
+ return TRUE;
+ }
+
+ flags |= PERL_SCAN_ALLOW_UNDERSCORES;
+ if (silence_non_portable) {
+ flags |= PERL_SCAN_SILENT_NON_PORTABLE;
+ }
+
+ *uv = grok_hex(*s, &numbers_len, &flags, NULL);
+ /* Note that if has non-hex, will ignore everything starting with that up
+ * to the '}' */
+
+ if (strict && numbers_len != (STRLEN) (e - *s)) {
+ *s += numbers_len;
+ *s += (UTF) ? UTF8SKIP(*s) : 1;
+ *error_msg = "Non-hex character";
+ return FALSE;
+ }
+
+ /* Return past the '}' */
+ *s = e + 1;
+
+ return TRUE;
+}
+
+STATIC char*
+S_form_short_octal_warning(pTHX_
+ const char * const s, /* Points to first non-octal */
+ const STRLEN len /* Length of octals string, so
+ (s-len) points to first
+ octal */
+) {
+ /* Return a character string consisting of a warning message for when a
+ * string constant in octal is weird, like "\078". */
+
+ const char * sans_leading_zeros = s - len;
+
+ PERL_ARGS_ASSERT_FORM_SHORT_OCTAL_WARNING;
+
+ assert(*s == '8' || *s == '9');
+
+ /* Remove the leading zeros, retaining one zero so won't be zero length */
+ while (*sans_leading_zeros == '0') sans_leading_zeros++;
+ if (sans_leading_zeros == s) {
+ sans_leading_zeros--;
+ }
+
+ return Perl_form(aTHX_
+ "'%.*s' resolved to '\\o{%.*s}%c'",
+ (int) (len + 2), s - len - 1,
+ (int) (s - sans_leading_zeros), sans_leading_zeros,
+ *s);
+}
+
/*
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/embed.fnc b/gnu/usr.bin/perl/embed.fnc
index 95465555a80..efc1ab4c18a 100644
--- a/gnu/usr.bin/perl/embed.fnc
+++ b/gnu/usr.bin/perl/embed.fnc
@@ -10,19 +10,27 @@
:
: flags are single letters with following meanings:
:
-: A Member of public API:
+: A Available fully everywhere (usually part of the public API):
:
: add entry to the list of exported symbols (unless x or m);
-: any doc entry goes in perlapi.pod rather than perlintern.pod
+: any doc entry goes in perlapi.pod rather than perlintern.pod. If no
+: documentation is furnished for this function, and M is also
+: specified, the function is not listed as part of the public API.
+: If M isn't specified and no documentation is furnished, the
+: function is listed in perlapi as existing and being undocumented
: makes '#define foo Perl_foo' scope not just for PERL_CORE/PERL_EXT
:
+: If the function is only exported for use in a public
+: macro, see X.
+:
: a Allocates memory a la malloc/calloc. Also implies "R":
:
: proto.h: add __attribute__malloc__
:
: b Binary backward compatibility; function is a macro
: but has also Perl_ implementation (which is exported); often
-: implemented in mathoms.c:
+: implemented in mathoms.c (whose compilation can be suppressed; see
+: INSTALL):
:
: add entry to the list of exported symbols;
: don't define PERL_ARGS_ASSERT_FOO
@@ -43,7 +51,8 @@
: Should always be combined with "X" to be usable from dynamically
: loaded extensions.
:
-: f Function takes printf style format string, varargs:
+: f Function takes printf style format string, varargs (hence any entry that
+: would otherwise go in embed.h is suppressed):
:
: proto.h: add __attribute__format__ (or ...null_ok__)
:
@@ -74,7 +83,7 @@
:
: The really OLD name for API funcs
:
-: o Has no Perl_foo compatibility macro:
+: o Has no Perl_foo or S_foo compatibility macro:
:
: embed.h: suppress "#define foo Perl_foo"
:
@@ -110,6 +119,10 @@
:
: add entry to the list of exported symbols, unless x or m
:
+: This is often used for private functions that are used by public
+: macros. In those cases the macros must use the long form of the
+: name (Perl_blah(aTHX_ ...)).
+:
: x Not exported
:
: suppress entry in the list of exported symbols
@@ -193,6 +206,8 @@ Apd |void |av_clear |NN AV *av
Apd |SV* |av_delete |NN AV *av|I32 key|I32 flags
ApdR |bool |av_exists |NN AV *av|I32 key
Apd |void |av_extend |NN AV *av|I32 key
+p |void |av_extend_guts |NULLOK AV *av|I32 key|NN SSize_t *maxp \
+ |NN SV ***allocp|NN SV ***arrayp
ApdR |SV** |av_fetch |NN AV *av|I32 key|I32 lval
Apd |void |av_fill |NN AV *av|I32 fill
ApdR |I32 |av_len |NN AV *av
@@ -204,6 +219,8 @@ Apd |void |av_push |NN AV *av|NN SV *val
EXp |void |av_reify |NN AV *av
ApdR |SV* |av_shift |NN AV *av
Apd |SV** |av_store |NN AV *av|I32 key|NULLOK SV *val
+AidR |I32 |av_top_index |NN AV *av
+AmpdR |I32 |av_tindex |NN AV *av
Apd |void |av_undef |NN AV *av
ApdoxM |SV** |av_create_and_unshift_one|NN AV **const avp|NN SV *const val
Apd |void |av_unshift |NN AV *av|I32 num
@@ -244,10 +261,15 @@ Aprd |void |croak_sv |NN SV *baseex
: croak()'s first parm can be NULL. Otherwise, mod_perl breaks.
Afprd |void |croak |NULLOK const char* pat|...
Aprd |void |vcroak |NULLOK const char* pat|NULLOK va_list* args
-Aprd |void |croak_no_modify
-Aprd |void |croak_xs_usage |NN const CV *const cv \
+Anprd |void |croak_no_modify
+Anprd |void |croak_xs_usage |NN const CV *const cv \
|NN const char *const params
-
+npr |void |croak_no_mem
+nroX |void |Perl_croak_memory_wrap
+nprX |void |croak_popstack
+#if defined(WIN32)
+norx |void |win32_croak_not_implemented|NN const char * fname
+#endif
#if defined(PERL_IMPLICIT_CONTEXT)
Afnrp |void |croak_nocontext|NULLOK const char* pat|...
Afnp |OP* |die_nocontext |NULLOK const char* pat|...
@@ -269,7 +291,7 @@ Afnp |int |printf_nocontext|NN const char *format|...
p |SV * |core_prototype |NULLOK SV *sv|NN const char *name \
|const int code|NULLOK int * const opnum
: Used in gv.c
-p |OP * |coresub_op |NN SV *coreargssv|const int code \
+p |OP * |coresub_op |NN SV *const coreargssv|const int code \
|const int opnum
: Used in sv.c
p |void |cv_ckproto_len_flags |NN const CV* cv|NULLOK const GV* gv\
@@ -281,6 +303,7 @@ ApdR |SV* |cv_const_sv |NULLOK const CV *const cv
: Used in pad.c
pR |SV* |op_const_sv |NULLOK const OP* o|NULLOK CV* cv
Apd |void |cv_undef |NN CV* cv
+p |void |cv_forget_slab |NN CV *cv
Ap |void |cx_dump |NN PERL_CONTEXT* cx
Ap |SV* |filter_add |NULLOK filter_t funcp|NULLOK SV* datasv
Ap |void |filter_del |NN filter_t funcp
@@ -379,7 +402,7 @@ pR |Off_t |do_tell |NN GV* gv
: Defined in doop.c, used only in pp.c
p |I32 |do_trans |NN SV* sv
: Used in my.c and pp.c
-p |UV |do_vecget |NN SV* sv|I32 offset|I32 size
+p |UV |do_vecget |NN SV* sv|SSize_t offset|int size
: Defined in doop.c, used only in mg.c (with /* XXX slurp this routine */)
p |void |do_vecset |NN SV* sv
: Defined in doop.c, used only in pp.c
@@ -404,6 +427,7 @@ p |void |dump_sub_perl |NN const GV* gv|bool justperl
Apd |void |fbm_compile |NN SV* sv|U32 flags
ApdR |char* |fbm_instr |NN unsigned char* big|NN unsigned char* bigend \
|NN SV* littlestr|U32 flags
+p |CV * |find_lexical_cv|PADOFFSET off
: Defined in util.c, used only in perl.c
p |char* |find_script |NN const char *scriptname|bool dosearch \
|NULLOK const char *const *const search_ext|I32 flags
@@ -508,7 +532,7 @@ Ap |void* |hv_common_key_len|NULLOK HV *hv|NN const char *key \
|I32 klen_i32|const int action|NULLOK SV *val \
|const U32 hash
Apod |STRLEN |hv_fill |NN HV const *const hv
-Ap |void |hv_free_ent |NN HV *hv|NULLOK HE *entryK
+Ap |void |hv_free_ent |NN HV *hv|NULLOK HE *entry
Apd |I32 |hv_iterinit |NN HV *hv
ApdR |char* |hv_iterkey |NN HE* entry|NN I32* retlen
ApdR |SV* |hv_iterkeysv |NN HE* entry
@@ -584,24 +608,28 @@ pR |OP* |invert |NULLOK OP* cmd
ApR |I32 |is_lvalue_sub
: Used in cop.h
XopR |I32 |was_lvalue_sub
-ApPR |U32 |to_uni_upper_lc|U32 c
-ApPR |U32 |to_uni_title_lc|U32 c
-ApPR |U32 |to_uni_lower_lc|U32 c
-ApPR |bool |is_uni_alnum |UV c
-ApPR |bool |is_uni_idfirst |UV c
-ApPR |bool |is_uni_alpha |UV c
-ApPR |bool |is_uni_ascii |UV c
-ApPR |bool |is_uni_space |UV c
-ApPR |bool |is_uni_cntrl |UV c
-ApPR |bool |is_uni_graph |UV c
-ApPR |bool |is_uni_digit |UV c
-ApPR |bool |is_uni_upper |UV c
-ApPR |bool |is_uni_lower |UV c
-ApPR |bool |is_uni_print |UV c
-ApPR |bool |is_uni_punct |UV c
-ApPR |bool |is_uni_xdigit |UV c
-Ap |UV |to_uni_upper |UV c|NN U8 *p|NN STRLEN *lenp
-Ap |UV |to_uni_title |UV c|NN U8 *p|NN STRLEN *lenp
+ADMpPR |U32 |to_uni_upper_lc|U32 c
+ADMpPR |U32 |to_uni_title_lc|U32 c
+ADMpPR |U32 |to_uni_lower_lc|U32 c
+ADMpPR |bool |is_uni_alnum |UV c
+ADMpPR |bool |is_uni_alnumc |UV c
+ADMpPR |bool |is_uni_idfirst |UV c
+ADMpPR |bool |is_uni_alpha |UV c
+ADMpPR |bool |is_uni_ascii |UV c
+ADMpPR |bool |is_uni_blank |UV c
+ADMpPR |bool |is_uni_space |UV c
+ADMpPR |bool |is_uni_cntrl |UV c
+ADMpPR |bool |is_uni_graph |UV c
+ADMpPR |bool |is_uni_digit |UV c
+ADMpPR |bool |is_uni_upper |UV c
+ADMpPR |bool |is_uni_lower |UV c
+ADMpPR |bool |is_uni_print |UV c
+ADMpPR |bool |is_uni_punct |UV c
+ADMpPR |bool |is_uni_xdigit |UV c
+AMp |UV |to_uni_upper |UV c|NN U8 *p|NN STRLEN *lenp
+AMp |UV |to_uni_title |UV c|NN U8 *p|NN STRLEN *lenp
+iDMPR |bool |isIDFIRST_lazy |NN const char* p
+iDMPR |bool |isALNUM_lazy |NN const char* p
#ifdef PERL_IN_UTF8_C
sR |U8 |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp
#endif
@@ -610,67 +638,65 @@ EXp |UV |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const
#endif
#if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
p |UV |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_or_s
-ApR |bool |_is_utf8_quotemeta|NN const U8 *p
-#endif
-Ap |UV |to_uni_lower |UV c|NN U8 *p|NN STRLEN *lenp
-Amp |UV |to_uni_fold |UV c|NN U8 *p|NN STRLEN *lenp
-AMp |UV |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|const bool flags
-ApPR |bool |is_uni_alnum_lc|UV c
-ApPR |bool |is_uni_idfirst_lc|UV c
-ApPR |bool |is_uni_alpha_lc|UV c
-ApPR |bool |is_uni_ascii_lc|UV c
-ApPR |bool |is_uni_space_lc|UV c
-ApPR |bool |is_uni_cntrl_lc|UV c
-ApPR |bool |is_uni_graph_lc|UV c
-ApPR |bool |is_uni_digit_lc|UV c
-ApPR |bool |is_uni_upper_lc|UV c
-ApPR |bool |is_uni_lower_lc|UV c
-ApPR |bool |is_uni_print_lc|UV c
-ApPR |bool |is_uni_punct_lc|UV c
-ApPR |bool |is_uni_xdigit_lc|UV c
+#endif
+AMp |UV |to_uni_lower |UV c|NN U8 *p|NN STRLEN *lenp
+AMmp |UV |to_uni_fold |UV c|NN U8 *p|NN STRLEN *lenp
+AMp |UV |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|const U8 flags
+ADMpPR |bool |is_uni_alnum_lc|UV c
+ADMpPR |bool |is_uni_alnumc_lc|UV c
+ADMpPR |bool |is_uni_idfirst_lc|UV c
+AMpR |bool |_is_uni_perl_idcont|UV c
+AMpR |bool |_is_uni_perl_idstart|UV c
+ADMpPR |bool |is_uni_alpha_lc|UV c
+ADMpPR |bool |is_uni_ascii_lc|UV c
+ADMpPR |bool |is_uni_space_lc|UV c
+ADMpPR |bool |is_uni_blank_lc|UV c
+ADMpPR |bool |is_uni_cntrl_lc|UV c
+ADMpPR |bool |is_uni_graph_lc|UV c
+ADMpPR |bool |is_uni_digit_lc|UV c
+ADMpPR |bool |is_uni_upper_lc|UV c
+ADMpPR |bool |is_uni_lower_lc|UV c
+ADMpPR |bool |is_uni_print_lc|UV c
+ADMpPR |bool |is_uni_punct_lc|UV c
+ADMpPR |bool |is_uni_xdigit_lc|UV c
Anpd |bool |is_ascii_string|NN const U8 *s|STRLEN len
AnpdD |STRLEN |is_utf8_char |NN const U8 *s
Anpd |STRLEN |is_utf8_char_buf|NN const U8 *buf|NN const U8 *buf_end
Anpd |bool |is_utf8_string |NN const U8 *s|STRLEN len
-Anpdmb |bool |is_utf8_string_loc|NN const U8 *s|STRLEN len|NULLOK const U8 **p
+Anpdmb |bool |is_utf8_string_loc|NN const U8 *s|STRLEN len|NULLOK const U8 **ep
Anpd |bool |is_utf8_string_loclen|NN const U8 *s|STRLEN len|NULLOK const U8 **ep|NULLOK STRLEN *el
-ApR |bool |is_utf8_alnum |NN const U8 *p
-ApR |bool |is_utf8_idfirst|NN const U8 *p
-ApR |bool |is_utf8_xidfirst|NN const U8 *p
-EXpR |bool |_is_utf8__perl_idstart|NN const U8 *p
-ApR |bool |is_utf8_idcont |NN const U8 *p
-ApR |bool |is_utf8_xidcont |NN const U8 *p
-ApR |bool |is_utf8_alpha |NN const U8 *p
-ApR |bool |is_utf8_ascii |NN const U8 *p
-ApR |bool |is_utf8_space |NN const U8 *p
-ApR |bool |is_utf8_perl_space |NN const U8 *p
-ApR |bool |is_utf8_perl_word |NN const U8 *p
-ApR |bool |is_utf8_cntrl |NN const U8 *p
-ApR |bool |is_utf8_digit |NN const U8 *p
-ApR |bool |is_utf8_posix_digit |NN const U8 *p
-ApR |bool |is_utf8_graph |NN const U8 *p
-ApR |bool |is_utf8_upper |NN const U8 *p
-ApR |bool |is_utf8_lower |NN const U8 *p
-ApR |bool |is_utf8_print |NN const U8 *p
-ApR |bool |is_utf8_punct |NN const U8 *p
-ApR |bool |is_utf8_xdigit |NN const U8 *p
-ApR |bool |is_utf8_mark |NN const U8 *p
-EXpR |bool |is_utf8_X_begin |NN const U8 *p
-EXpR |bool |is_utf8_X_extend |NN const U8 *p
-EXpR |bool |is_utf8_X_prepend |NN const U8 *p
-EXpR |bool |is_utf8_X_non_hangul |NN const U8 *p
-EXpR |bool |is_utf8_X_L |NN const U8 *p
-EXpR |bool |is_utf8_X_LV |NN const U8 *p
-EXpR |bool |is_utf8_X_LVT |NN const U8 *p
-EXpR |bool |is_utf8_X_LV_LVT_V |NN const U8 *p
-EXpR |bool |is_utf8_X_T |NN const U8 *p
-EXpR |bool |is_utf8_X_V |NN const U8 *p
+AMpR |bool |_is_uni_FOO|const U8 classnum|const UV c
+AMpR |bool |_is_utf8_FOO|const U8 classnum|NN const U8 *p
+ADMpR |bool |is_utf8_alnum |NN const U8 *p
+ADMpR |bool |is_utf8_alnumc |NN const U8 *p
+ADMpR |bool |is_utf8_idfirst|NN const U8 *p
+ADMpR |bool |is_utf8_xidfirst|NN const U8 *p
+AMpR |bool |_is_utf8_perl_idcont|NN const U8 *p
+AMpR |bool |_is_utf8_perl_idstart|NN const U8 *p
+ADMpR |bool |is_utf8_idcont |NN const U8 *p
+ADMpR |bool |is_utf8_xidcont |NN const U8 *p
+ADMpR |bool |is_utf8_alpha |NN const U8 *p
+ADMpR |bool |is_utf8_ascii |NN const U8 *p
+ADMpR |bool |is_utf8_blank |NN const U8 *p
+ADMpR |bool |is_utf8_space |NN const U8 *p
+ADMpR |bool |is_utf8_perl_space |NN const U8 *p
+ADMpR |bool |is_utf8_perl_word |NN const U8 *p
+ADMpR |bool |is_utf8_cntrl |NN const U8 *p
+ADMpR |bool |is_utf8_digit |NN const U8 *p
+ADMpR |bool |is_utf8_posix_digit |NN const U8 *p
+ADMpR |bool |is_utf8_graph |NN const U8 *p
+ADMpR |bool |is_utf8_upper |NN const U8 *p
+ADMpR |bool |is_utf8_lower |NN const U8 *p
+ADMpR |bool |is_utf8_print |NN const U8 *p
+ADMpR |bool |is_utf8_punct |NN const U8 *p
+ADMpR |bool |is_utf8_xdigit |NN const U8 *p
+AMpR |bool |_is_utf8_mark |NN const U8 *p
+ADMpR |bool |is_utf8_mark |NN const U8 *p
: Used in perly.y
p |OP* |jmaybe |NN OP *o
: Used in pp.c
pP |I32 |keyword |NN const char *name|I32 len|bool all_keywords
#if defined(PERL_IN_OP_C)
-s |OP* |opt_scalarhv |NN OP* rep_op
s |void |inplace_aassign |NN OP* o
#endif
Ap |void |leave_scope |I32 base
@@ -715,9 +741,22 @@ Ap |void |vload_module|U32 flags|NN SV* name|NULLOK SV* ver|NULLOK va_list* args
p |OP* |localize |NN OP *o|I32 lex
ApdR |I32 |looks_like_number|NN SV *const sv
Apd |UV |grok_bin |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
-#ifdef PERL_IN_DQUOTE_STATIC_C
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
EMsR |char |grok_bslash_c |const char source|const bool utf8|const bool output_warning
-EMsR |bool |grok_bslash_o |NN const char* s|NN UV* uv|NN STRLEN* len|NN const char** error_msg|const bool output_warning
+EMsR |bool |grok_bslash_o |NN char** s|NN UV* uv \
+ |NN const char** error_msg \
+ |const bool output_warning \
+ |const bool strict \
+ |const bool silence_non_portable \
+ |const bool utf8
+EMiR |bool |grok_bslash_x |NN char** s|NN UV* uv \
+ |NN const char** error_msg \
+ |const bool output_warning \
+ |const bool strict \
+ |const bool silence_non_portable \
+ |const bool utf8
+EMsPR |char*|form_short_octal_warning|NN const char * const s \
+ |const STRLEN len
#endif
Apd |UV |grok_hex |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
Apd |int |grok_number |NN const char *pv|STRLEN len|NULLOK UV *valuep
@@ -731,6 +770,8 @@ dp |int |magic_clearhints|NN SV* sv|NN MAGIC* mg
p |int |magic_clearisa |NULLOK SV* sv|NN MAGIC* mg
p |int |magic_clearpack|NN SV* sv|NN MAGIC* mg
p |int |magic_clearsig |NN SV* sv|NN MAGIC* mg
+p |int |magic_copycallchecker|NN SV* sv|NN MAGIC *mg|NN SV *nsv \
+ |NULLOK const char *name|I32 namlen
p |int |magic_existspack|NN SV* sv|NN const MAGIC* mg
p |int |magic_freeovrld|NN SV* sv|NN MAGIC* mg
p |int |magic_get |NN SV* sv|NN MAGIC* mg
@@ -744,14 +785,19 @@ p |int |magic_getsubstr|NN SV* sv|NN MAGIC* mg
p |int |magic_gettaint |NN SV* sv|NN MAGIC* mg
p |int |magic_getuvar |NN SV* sv|NN MAGIC* mg
p |int |magic_getvec |NN SV* sv|NN MAGIC* mg
-p |U32 |magic_len |NN SV* sv|NN MAGIC* mg
p |int |magic_nextpack |NN SV *sv|NN MAGIC *mg|NN SV *key
p |U32 |magic_regdata_cnt|NN SV* sv|NN MAGIC* mg
p |int |magic_regdatum_get|NN SV* sv|NN MAGIC* mg
+:removing noreturn to silence a warning for this function resulted in no
+:change to the interpreter DLL image under VS 2003 -O1 -GL 32 bits
+#ifdef _MSC_VER
+p |int |magic_regdatum_set|NN SV* sv|NN MAGIC* mg
+#else
pr |int |magic_regdatum_set|NN SV* sv|NN MAGIC* mg
+#endif
p |int |magic_set |NN SV* sv|NN MAGIC* mg
-p |int |magic_setamagic|NN SV* sv|NN MAGIC* mg
p |int |magic_setarylen|NN SV* sv|NN MAGIC* mg
+p |int |magic_cleararylen_p|NN SV* sv|NN MAGIC* mg
p |int |magic_freearylen_p|NN SV* sv|NN MAGIC* mg
p |int |magic_setdbline|NN SV* sv|NN MAGIC* mg
p |int |magic_setdefelem|NN SV* sv|NN MAGIC* mg
@@ -769,7 +815,6 @@ p |int |magic_settaint |NN SV* sv|NN MAGIC* mg
p |int |magic_setuvar |NN SV* sv|NN MAGIC* mg
p |int |magic_setvec |NN SV* sv|NN MAGIC* mg
p |int |magic_setutf8 |NN SV* sv|NN MAGIC* mg
-p |int |magic_setvstring|NN SV* sv|NN MAGIC* mg
p |int |magic_set_all_env|NN SV* sv|NN MAGIC* mg
p |U32 |magic_sizepack |NN SV* sv|NN MAGIC* mg
p |int |magic_wipepack |NN SV* sv|NN MAGIC* mg
@@ -800,7 +845,7 @@ ApdR |MAGIC* |mg_findext |NULLOK const SV* sv|int type|NULLOK const MGVTBL *vtbl
Apd |int |mg_free |NN SV* sv
Apd |void |mg_free_type |NN SV* sv|int how
Apd |int |mg_get |NN SV* sv
-Apd |U32 |mg_length |NN SV* sv
+ApdD |U32 |mg_length |NN SV* sv
Apd |void |mg_magical |NN SV* sv
Apd |int |mg_set |NN SV* sv
Ap |I32 |mg_size |NN SV* sv
@@ -845,9 +890,9 @@ Apmb |I32 |my_stat
pX |I32 |my_stat_flags |NULLOK const U32 flags
Ap |char * |my_strftime |NN const char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst
#if defined(MYSWAP)
-ApPa |short |my_swap |short s
-ApPa |long |my_htonl |long l
-ApPa |long |my_ntohl |long l
+ApPR |short |my_swap |short s
+ApPR |long |my_htonl |long l
+ApPR |long |my_ntohl |long l
#endif
: Used in pp_ctl.c
p |void |my_unexec
@@ -961,6 +1006,12 @@ p |PerlIO*|nextargv |NN GV* gv
AnpP |char* |ninstr |NN const char* big|NN const char* bigend \
|NN const char* little|NN const char* lend
Ap |void |op_free |NULLOK OP* arg
+Mp |OP* |op_unscope |NULLOK OP* o
+#ifdef PERL_CORE
+p |void |opslab_free |NN OPSLAB *slab
+p |void |opslab_free_nopad|NN OPSLAB *slab
+p |void |opslab_force_free|NN OPSLAB *slab
+#endif
: Used in perly.y
#ifdef PERL_MAD
p |OP* |package |NN OP* o
@@ -972,6 +1023,9 @@ p |void |package_version|NN OP* v
: Used in toke.c and perly.y
p |PADOFFSET|allocmy |NN const char *const name|const STRLEN len\
|const U32 flags
+#ifdef USE_ITHREADS
+AMp |PADOFFSET|alloccopstash|NN HV *hv
+#endif
: Used in perly.y
pR |OP* |oopsAV |NN OP* o
: Used in perly.y
@@ -982,12 +1036,12 @@ p |void |peep |NULLOK OP* o
p |void |rpeep |NULLOK OP* o
: Defined in doio.c, used only in pp_hot.c
dopM |PerlIO*|start_glob |NN SV *tmpglob|NN IO *io
-#if defined(USE_REENTRANT_API)
+
Ap |void |reentrant_size
Ap |void |reentrant_init
Ap |void |reentrant_free
Anp |void* |reentrant_retry|NN const char *f|...
-#endif
+
: "Very" special - can't use the O flag for this one:
: (The rename from perl_atexit to Perl_call_atexit was in 864dbfa3ca8032ef)
Ap |void |call_atexit |ATEXIT_t fn|NULLOK void *ptr
@@ -1020,7 +1074,7 @@ Apd |void |packlist |NN SV *cat|NN const char *pat|NN const char *patend|NN SV
s |void |pidgone |Pid_t pid|int status
#endif
: Used in perly.y
-p |OP* |pmruntime |NN OP *o|NN OP *expr|bool isreg
+p |OP* |pmruntime |NN OP *o|NN OP *expr|bool isreg|I32 floor
#if defined(PERL_IN_OP_C)
s |OP* |pmtrans |NN OP* o|NN OP* expr|NN OP* repl
#endif
@@ -1031,15 +1085,12 @@ Amb |OP* |ref |NULLOK OP* o|I32 type
s |OP* |refkids |NULLOK OP* o|I32 type
#endif
Ap |void |regdump |NN const regexp* r
-Ap |void |regdump |NN const regexp* r
Ap |SV* |regclass_swash |NULLOK const regexp *prog \
|NN const struct regnode *node|bool doinit \
|NULLOK SV **listsvp|NULLOK SV **altsvp
#ifdef PERL_IN_REGCOMP_C
-EMi |U8 |set_regclass_bit|NN struct RExC_state_t* pRExC_state|NN regnode* node|const U8 value|NN SV** invlist_ptr|NN AV** alternate_ptr
-EMs |U8 |set_regclass_bit_fold|NN struct RExC_state_t *pRExC_state|NN regnode* node|const U8 value|NN SV** invlist_ptr|NN AV** alternate_ptr
-EMs |void |add_alternate |NN AV** alternate_ptr|NN U8* string|STRLEN len
EMsR |SV* |_new_invlist_C_array|NN UV* list
+: Not used currently: EXMs |bool |_invlistEQ |NN SV* const a|NN SV* const b|bool complement_b
#endif
Ap |I32 |pregexec |NN REGEXP * const prog|NN char* stringarg \
|NN char* strend|NN char* strbeg|I32 minend \
@@ -1052,14 +1103,22 @@ Ap |void |regfree_internal|NN REGEXP *const rx
#if defined(USE_ITHREADS)
Ap |void* |regdupe_internal|NN REGEXP * const r|NN CLONE_PARAMS* param
#endif
+EXp |regexp_engine const *|current_re_engine
Ap |REGEXP*|pregcomp |NN SV * const pattern|const U32 flags
-Ap |REGEXP*|re_compile |NN SV * const pattern|U32 flags
+p |REGEXP*|re_op_compile |NULLOK SV ** const patternp \
+ |int pat_count|NULLOK OP *expr \
+ |NN const regexp_engine* eng \
+ |NULLOK REGEXP *old_re \
+ |NULLOK bool *is_bare_re \
+ |U32 rx_flags|U32 pm_flags
+Ap |REGEXP*|re_compile |NN SV * const pattern|U32 orig_rx_flags
Ap |char* |re_intuit_start|NN REGEXP * const rx|NULLOK SV* sv|NN char* strpos \
|NN char* strend|const U32 flags \
|NULLOK re_scream_pos_data *data
Ap |SV* |re_intuit_string|NN REGEXP *const r
-#if defined(PERL_IN_DQUOTE_STATIC_C)
-EiPR |I32 |regcurly |NN const char *s
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
+EiPR |I32 |regcurly |NN const char *s \
+ |const bool rbrace_must_be_escaped
#endif
Ap |I32 |regexec_flags |NN REGEXP *const rx|NN char *stringarg \
|NN char *strend|NN char *strbeg|I32 minend \
@@ -1190,7 +1249,7 @@ Apd |NV |scan_oct |NN const char* start|STRLEN len|NN STRLEN* retlen
AMpd |OP* |op_scope |NULLOK OP* o
Ap |char* |screaminstr |NN SV *bigstr|NN SV *littlestr|I32 start_shift \
|I32 end_shift|NN I32 *old_posp|I32 last
-Apd |void |setdefout |NULLOK GV* gv
+Apd |void |setdefout |NN GV* gv
Ap |HEK* |share_hek |NN const char* str|I32 len|U32 hash
#if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
: Used in perl.c
@@ -1263,13 +1322,6 @@ Apd |I32 |sv_cmp_locale_flags |NULLOK SV *const sv1 \
Amd |char* |sv_collxfrm |NN SV *const sv|NN STRLEN *const nxp
Apd |char* |sv_collxfrm_flags |NN SV *const sv|NN STRLEN *const nxp|I32 const flags
#endif
-: Frustratingly, because regcomp.c is also compiled as ext/re/re_comp.c,
-: anything it needs has to be exported. So this has to be X. I'd rather it
-: wasn't.
-Xpo |OP* |sv_compile_2op_is_broken|NN SV *sv|NN OP **startop \
- |NN const char *code|NN PAD **padp
-ApD |OP* |sv_compile_2op |NN SV *sv|NN OP **startop \
- |NN const char *code|NN PAD **padp
Apd |int |getcwd_sv |NN SV* sv
Apd |void |sv_dec |NULLOK SV *const sv
Apd |void |sv_dec_nomg |NULLOK SV *const sv
@@ -1287,9 +1339,7 @@ ApdR |bool |sv_does_pvn |NN SV* sv|NN const char *const name|const STRLEN len \
Amd |I32 |sv_eq |NULLOK SV* sv1|NULLOK SV* sv2
Apd |I32 |sv_eq_flags |NULLOK SV* sv1|NULLOK SV* sv2|const U32 flags
Apd |void |sv_free |NULLOK SV *const sv
-: FIXME Used in SvREFCNT_dec() but only
-: if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
-poMX |void |sv_free2 |NN SV *const sv
+poMX |void |sv_free2 |NN SV *const sv|const U32 refcnt
: Used only in perl.c
pd |void |sv_free_arenas
Apd |char* |sv_gets |NN SV *const sv|NN PerlIO *const fp|I32 append
@@ -1305,12 +1355,14 @@ Apd |int |sv_isa |NULLOK SV* sv|NN const char *const name
Apd |int |sv_isobject |NULLOK SV* sv
Apd |STRLEN |sv_len |NULLOK SV *const sv
Apd |STRLEN |sv_len_utf8 |NULLOK SV *const sv
+p |STRLEN |sv_len_utf8_nomg|NN SV *const sv
Apd |void |sv_magic |NN SV *const sv|NULLOK SV *const obj|const int how \
|NULLOK const char *const name|const I32 namlen
Apd |MAGIC *|sv_magicext |NN SV *const sv|NULLOK SV *const obj|const int how \
|NULLOK const MGVTBL *const vtbl|NULLOK const char *const name \
|const I32 namlen
-ApdaR |SV* |sv_mortalcopy |NULLOK SV *const oldsv
+ApdbamR |SV* |sv_mortalcopy |NULLOK SV *const oldsv
+XpaR |SV* |sv_mortalcopy_flags|NULLOK SV *const oldsv|U32 flags
ApdR |SV* |sv_newmortal
Apd |SV* |sv_newref |NULLOK SV *const sv
Ap |char* |sv_peek |NULLOK SV* sv
@@ -1329,6 +1381,8 @@ pd |SV* |sv_ref |NULLOK SV *dst|NN const SV *const sv|const int ob
Apd |void |sv_replace |NN SV *const sv|NN SV *const nsv
Apd |void |sv_report_used
Apd |void |sv_reset |NN const char* s|NULLOK HV *const stash
+p |void |sv_resetpvn |NULLOK const char* s|STRLEN len \
+ |NULLOK HV *const stash
Afpd |void |sv_setpvf |NN SV *const sv|NN const char *const pat|...
Apd |void |sv_vsetpvf |NN SV *const sv|NN const char *const pat|NULLOK va_list *const args
Apd |void |sv_setiv |NN SV *const sv|const IV num
@@ -1360,6 +1414,9 @@ Apd |void |sv_usepvn_flags|NN SV *const sv|NULLOK char* ptr|const STRLEN len\
Apd |void |sv_vcatpvfn |NN SV *const sv|NN const char *const pat|const STRLEN patlen \
|NULLOK va_list *const args|NULLOK SV **const svargs|const I32 svmax \
|NULLOK bool *const maybe_tainted
+Apd |void |sv_vcatpvfn_flags|NN SV *const sv|NN const char *const pat|const STRLEN patlen \
+ |NULLOK va_list *const args|NULLOK SV **const svargs|const I32 svmax \
+ |NULLOK bool *const maybe_tainted|const U32 flags
Apd |void |sv_vsetpvfn |NN SV *const sv|NN const char *const pat|const STRLEN patlen \
|NULLOK va_list *const args|NULLOK SV **const svargs \
|const I32 svmax|NULLOK bool *const maybe_tainted
@@ -1372,18 +1429,21 @@ EsM |void |_append_range_to_invlist |NN SV* const invlist|const UV start|const
EiMR |UV* |_invlist_array_init |NN SV* const invlist|const bool will_have_0
EiMR |UV* |invlist_array |NN SV* const invlist
EsM |void |invlist_extend |NN SV* const invlist|const UV len
-EiMR |UV* |get_invlist_len_addr |NN SV* invlist
EiMR |UV* |get_invlist_zero_addr |NN SV* invlist
-EiMR |UV |invlist_len |NN SV* const invlist
EiMR |UV |invlist_max |NN SV* const invlist
-EiM |void |invlist_set_len |NN SV* const invlist|const UV len
+EiM |void |invlist_set_len|NN SV* const invlist|const UV len
+EiMR |IV* |get_invlist_previous_index_addr|NN SV* invlist
+EiMR |IV |invlist_previous_index|NN SV* const invlist
+EiM |void |invlist_set_previous_index|NN SV* const invlist|const IV index
EiM |void |invlist_trim |NN SV* const invlist
EiMR |SV* |invlist_clone |NN SV* const invlist
+EiMR |bool |invlist_is_iterating|NN SV* const invlist
EiMR |UV* |get_invlist_iter_addr |NN SV* invlist
EiMR |UV* |get_invlist_version_id_addr |NN SV* invlist
EiM |void |invlist_iterinit|NN SV* invlist
EsMR |bool |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end
-EsMR |IV |invlist_search |NN SV* const invlist|const UV cp
+EiM |void |invlist_iterfinish|NN SV* invlist
+EiMR |UV |invlist_highest|NN SV* const invlist
#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C)
EXmM |void |_invlist_intersection |NN SV* const a|NN SV* const b|NN SV** i
@@ -1393,17 +1453,25 @@ EXpM |void |_invlist_union_maybe_complement_2nd|NULLOK SV* const a|NN SV* const
EXmM |void |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result
EXpM |void |_invlist_invert|NN SV* const invlist
EXpM |void |_invlist_invert_prop|NN SV* const invlist
-EXMpR |HV* |_swash_inversion_hash |NN SV* const swash
EXMpR |SV* |_new_invlist |IV initial_size
EXMpR |SV* |_swash_to_invlist |NN SV* const swash
EXMpR |SV* |_add_range_to_invlist |NULLOK SV* invlist|const UV start|const UV end
EXMp |void |_invlist_populate_swatch |NN SV* const invlist|const UV start|const UV end|NN U8* swatch
#endif
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_TOKE_C)
+EXp |SV* |_core_swash_init|NN const char* pkg|NN const char* name \
+ |NN SV* listsv|I32 minbits|I32 none \
+ |NULLOK SV* invlist|NULLOK U8* const flags_p
+#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
-EXp |SV* |_core_swash_init|NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits \
- |I32 none|bool return_if_undef|NULLOK SV* invlist \
- |bool passed_in_invlist_has_user_defined_property
EXMpR |SV* |_invlist_contents|NN SV* const invlist
+EiMR |UV* |_get_invlist_len_addr |NN SV* invlist
+EiMR |UV |_invlist_len |NN SV* const invlist
+EMiR |bool |_invlist_contains_cp|NN SV* const invlist|const UV cp
+EXpMR |IV |_invlist_search |NN SV* const invlist|const UV cp
+EXMpR |SV* |_get_swash_invlist|NN SV* const swash
+EXMpR |HV* |_swash_inversion_hash |NN SV* const swash
+: Not used currently: EXMp |void |_invlist_dump |NN SV* const invlist|NN const char * const header
#endif
Ap |void |taint_env
Ap |void |taint_proper |NULLOK const char* f|NN const char *const s
@@ -1453,7 +1521,6 @@ ApMd |U8* |bytes_from_utf8|NN const U8 *s|NN STRLEN *len|NULLOK bool *is_utf8
ApMd |U8* |bytes_to_utf8 |NN const U8 *s|NN STRLEN *len
ApdD |UV |utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen
ApdD |UV |utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen
-ApM |UV |valid_utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen
ApM |UV |valid_utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen
Apd |UV |utf8_to_uvchr_buf |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
Apd |UV |utf8_to_uvuni_buf |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
@@ -1461,8 +1528,10 @@ pM |bool |check_utf8_print |NN const U8 *s|const STRLEN len
#ifdef EBCDIC
Adp |UV |utf8n_to_uvchr |NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
+ApM |UV |valid_utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen
#else
Adpbm |UV |utf8n_to_uvchr |NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
+ApbmM |UV |valid_utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen
#endif
Adp |UV |utf8n_to_uvuni |NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
@@ -1488,7 +1557,7 @@ p |I32 |wait4pid |Pid_t pid|NN int* statusp|int flags
p |U32 |parse_unicode_opts|NN const char **popt
Ap |U32 |seed
: Only used in perl.c
-pR |UV |get_hash_seed
+p |void |get_hash_seed |NN unsigned char * const seed_buffer
: Used in doio.c, pp_hot.c, pp_sys.c
p |void |report_evil_fh |NULLOK const GV *gv
: Used in doio.c, pp_hot.c, pp_sys.c
@@ -1526,6 +1595,10 @@ p |void |yyunlex
p |int |yyparse |int gramtype
: Only used in scope.c
p |void |parser_free |NN const yy_parser *parser
+#ifdef PERL_CORE
+p |void |parser_free_nexttoke_ops|NN yy_parser *parser \
+ |NN OPSLAB *slab
+#endif
#if defined(PERL_IN_TOKE_C)
s |int |yywarn |NN const char *const s|U32 flags
#endif
@@ -1612,12 +1685,9 @@ Ap |CV* |newATTRSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NU
p |CV* |newATTRSUB_flags|I32 floor|NULLOK OP *o|NULLOK OP *proto \
|NULLOK OP *attrs|NULLOK OP *block \
|U32 flags
-#ifdef PERL_MAD
-Apr |OP * |newMYSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto \
+Ap |CV * |newMYSUB |I32 floor|NN OP *o|NULLOK OP *proto \
|NULLOK OP *attrs|NULLOK OP *block
-#else
-Apr |void |newMYSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
-#endif
+p |CV* |newSTUB |NN GV *gv|bool fake
: Used in perly.y
p |OP * |my_attrs |NN OP *o|NULLOK OP *attrs
#if defined(USE_ITHREADS)
@@ -1677,6 +1747,7 @@ Adpbm |void |sv_nounlocking |NULLOK SV *sv
Adpb |void |sv_nounlocking |NULLOK SV *sv
#endif
Adp |int |nothreadhook
+p |void |init_constants
#if defined(PERL_IN_DOOP_C)
sR |I32 |do_trans_simple |NN SV * const sv
@@ -1690,8 +1761,6 @@ sR |I32 |do_trans_complex_utf8 |NN SV * const sv
#if defined(PERL_IN_GV_C)
s |void |gv_init_svtype |NN GV *gv|const svtype sv_type
s |void |gv_magicalize_isa |NN GV *gv
-s |void |gv_magicalize_overload |NN GV *gv
-s |HV* |gv_get_super_pkg|NN const char* name|I32 namelen|U32 flags
s |HV* |require_tie_mod|NN GV *gv|NN const char *varpv|NN SV* namesv \
|NN const char *methpv|const U32 flags
#endif
@@ -1701,16 +1770,17 @@ po |SV* |hfree_next_entry |NN HV *hv|NN STRLEN *indexp
#endif
#if defined(PERL_IN_HV_C)
-s |void |hsplit |NN HV *hv
+s |void |hsplit |NN HV *hv|STRLEN const oldsize|STRLEN newsize
s |void |hfreeentries |NN HV *hv
-s |SV* |hv_free_ent_ret|NN HV *hv|NULLOK HE *entryK
+s |SV* |hv_free_ent_ret|NN HV *hv|NN HE *entry
sa |HE* |new_he
sanR |HEK* |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags
sn |void |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store
s |void |unshare_hek_or_pvn|NULLOK const HEK* hek|NULLOK const char* str|I32 len|U32 hash
sR |HEK* |share_hek_flags|NN const char *str|I32 len|U32 hash|int flags
rs |void |hv_notallowed |int flags|NN const char *key|I32 klen|NN const char *msg
-sn |struct xpvhv_aux*|hv_auxinit|NN HV *hv
+sn |U32|ptr_hash|PTRV u
+s |struct xpvhv_aux*|hv_auxinit|NN HV *hv
sM |SV* |hv_delete_common|NULLOK HV *hv|NULLOK SV *keysv \
|NULLOK const char *key|STRLEN klen|int k_flags|I32 d_flags \
|U32 hash
@@ -1731,11 +1801,7 @@ s |void |unwind_handler_stack|NULLOK const void *p
#if defined(PERL_IN_OP_C)
sRn |bool |is_handle_constructor|NN const OP *o|I32 numargs
sR |I32 |is_list_assignment|NULLOK const OP *o
-# ifdef USE_ITHREADS
-so |void |forget_pmop |NN PMOP *const o|U32 flags
-# else
-so |void |forget_pmop |NN PMOP *const o
-# endif
+s |void |forget_pmop |NN PMOP *const o
s |void |find_and_forget_pmops |NN OP *o
s |void |cop_free |NN COP *cop
s |OP* |modkids |NULLOK OP *o|I32 type
@@ -1748,7 +1814,7 @@ s |SV* |gv_ename |NN GV *gv
sRn |bool |scalar_mod_type|NULLOK const OP *o|I32 type
s |OP * |my_kid |NULLOK OP *o|NULLOK OP *attrs|NN OP **imopsp
s |OP * |dup_attrlist |NN OP *o
-s |void |apply_attrs |NN HV *stash|NN SV *target|NULLOK OP *attrs|bool for_my
+s |void |apply_attrs |NN HV *stash|NN SV *target|NULLOK OP *attrs
s |void |apply_attrs_my |NN HV *stash|NN OP *target|NULLOK OP *attrs|NN OP **imopsp
s |void |bad_type_pv |I32 n|NN const char *t|NN const char *name|U32 flags|NN const OP *kid
s |void |bad_type_sv |I32 n|NN const char *t|NN SV *namesv|U32 flags|NN const OP *kid
@@ -1763,23 +1829,21 @@ s |OP* |newGIVWHENOP |NULLOK OP* cond|NN OP *block \
|I32 enter_opcode|I32 leave_opcode \
|PADOFFSET entertarg
s |OP* |ref_array_or_hash|NULLOK OP* cond
-s |void |process_special_blocks |NN const char *const fullname\
+s |void |process_special_blocks |I32 floor \
+ |NN const char *const fullname\
|NN GV *const gv|NN CV *const cv
#endif
-#if defined(PL_OP_SLAB_ALLOC)
-Apa |void* |Slab_Alloc |size_t sz
-Ap |void |Slab_Free |NN void *op
-# if defined(PERL_DEBUG_READONLY_OPS)
-: Used in perl.c
-poxM |void |pending_Slabs_to_ro
+Xpa |void* |Slab_Alloc |size_t sz
+Xp |void |Slab_Free |NN void *op
+#if defined(PERL_DEBUG_READONLY_OPS)
+# if defined(PERL_CORE)
+px |void |Slab_to_ro |NN OPSLAB *slab
+px |void |Slab_to_rw |NN OPSLAB *const slab
+# endif
: Used in OpREFCNT_inc() in sv.c
poxM |OP * |op_refcnt_inc |NULLOK OP *o
: FIXME - can be static.
poxM |PADOFFSET |op_refcnt_dec |NN OP *o
-# if defined(PERL_IN_OP_C)
-s |void |Slab_to_rw |NN void *op
-# endif
-# endif
#endif
#if defined(PERL_IN_PERL_C)
@@ -1855,7 +1919,7 @@ sR |I32 |dopoptoloop |I32 startingblock
sR |I32 |dopoptosub_at |NN const PERL_CONTEXT* cxstk|I32 startingblock
sR |I32 |dopoptowhen |I32 startingblock
s |void |save_lines |NULLOK AV *array|NN SV *sv
-s |bool |doeval |int gimme|NULLOK OP** startop \
+s |bool |doeval |int gimme \
|NULLOK CV* outside|U32 seq|NULLOK HV* hh
sR |PerlIO *|check_type_and_open|NN SV *name
#ifndef PERL_DISABLE_PMC
@@ -1872,7 +1936,7 @@ s |OP* |do_smartmatch |NULLOK HV* seen_this \
#endif
#if defined(PERL_IN_PP_HOT_C)
-s |void |do_oddball |NN HV *hash|NN SV **relem|NN SV **firstrelem
+s |void |do_oddball |NN SV **oddkey|NN SV **firstkey
sR |SV* |method_common |NN SV* meth|NULLOK U32* hashp
#endif
@@ -1911,13 +1975,25 @@ Es |regnode*|regbranch |NN struct RExC_state_t *pRExC_state \
|NN I32 *flagp|I32 first|U32 depth
Es |STRLEN |reguni |NN const struct RExC_state_t *pRExC_state \
|UV uv|NN char *s
-Es |regnode*|regclass |NN struct RExC_state_t *pRExC_state|U32 depth
+Es |regnode*|regclass |NN struct RExC_state_t *pRExC_state \
+ |NN I32 *flagp|U32 depth|const bool stop_at_1 \
+ |bool allow_multi_fold \
+ |const bool silence_non_portable \
+ |NULLOK SV** ret_invlist
+Es |bool|could_it_be_a_POSIX_class|NN struct RExC_state_t *pRExC_state
+Es |regnode*|handle_regex_sets|NN struct RExC_state_t *pRExC_state \
+ |NULLOK SV ** return_invlist \
+ |NN I32 *flagp|U32 depth \
+ |NN char * const oregcomp_parse
+Es |void|parse_lparen_question_flags|NN struct RExC_state_t *pRExC_state
Es |regnode*|reg_node |NN struct RExC_state_t *pRExC_state|U8 op
Es |UV |reg_recode |const char value|NN SV **encp
Es |regnode*|regpiece |NN struct RExC_state_t *pRExC_state \
|NN I32 *flagp|U32 depth
-Es |regnode*|reg_namedseq |NN struct RExC_state_t *pRExC_state \
- |NULLOK UV *valuep|NULLOK I32 *flagp|U32 depth
+Es |bool |grok_bslash_N |NN struct RExC_state_t *pRExC_state \
+ |NULLOK regnode** nodep|NULLOK UV *valuep \
+ |NN I32 *flagp|U32 depth|bool in_char_class \
+ |const bool strict
Es |void |reginsert |NN struct RExC_state_t *pRExC_state \
|U8 op|NN regnode *opnd|U32 depth
Es |void |regtail |NN struct RExC_state_t *pRExC_state \
@@ -1930,6 +2006,12 @@ Es |U32 |join_exact |NN struct RExC_state_t *pRExC_state \
|U32 flags|NULLOK regnode *val|U32 depth
EsRn |char * |regwhite |NN struct RExC_state_t *pRExC_state \
|NN char *p
+EsRn |char * |regpatws |NN struct RExC_state_t *pRExC_state \
+ |NN char *p|const bool recognize_comment
+Ei |void |alloc_maybe_populate_EXACT|NN struct RExC_state_t *pRExC_state \
+ |NN regnode *node|NN I32 *flagp|STRLEN len \
+ |UV code_point
+Ei |U8 |compute_EXACTish|NN struct RExC_state_t *pRExC_state
Es |char * |nextchar |NN struct RExC_state_t *pRExC_state
Es |bool |reg_skipcomment|NN struct RExC_state_t *pRExC_state
Es |void |scan_commit |NN const struct RExC_state_t *pRExC_state \
@@ -1955,8 +2037,8 @@ Es |I32 |study_chunk |NN struct RExC_state_t *pRExC_state \
EsRn |U32 |add_data |NN struct RExC_state_t *pRExC_state|U32 n \
|NN const char *s
rs |void |re_croak2 |NN const char* pat1|NN const char* pat2|...
-Es |I32 |regpposixcc |NN struct RExC_state_t *pRExC_state|I32 value
-Es |void |checkposixcc |NN struct RExC_state_t *pRExC_state
+Ei |I32 |regpposixcc |NN struct RExC_state_t *pRExC_state \
+ |I32 value|const bool strict
Es |I32 |make_trie |NN struct RExC_state_t *pRExC_state \
|NN regnode *startbranch|NN regnode *first \
|NN regnode *last|NN regnode *tail \
@@ -1987,25 +2069,34 @@ Es |U8 |regtail_study |NN struct RExC_state_t *pRExC_state \
#endif
#if defined(PERL_IN_REGEXEC_C)
-ERs |I32 |regmatch |NN regmatch_info *reginfo|NN regnode *prog
-ERs |I32 |regrepeat |NN const regexp *prog|NN const regnode *p|I32 max|int depth
-ERs |I32 |regtry |NN regmatch_info *reginfo|NN char **startpos
-ERs |bool |reginclass |NULLOK const regexp * const prog|NN const regnode * const n|NN const U8 * const p|NULLOK STRLEN *lenp\
- |bool const do_utf8sv_is_utf8
-Es |CHECKPOINT|regcppush |I32 parenfloor
-Es |char* |regcppop |NN const regexp *rex
+ERs |bool |isFOO_lc |const U8 classnum|const U8 character
+ERs |bool |isFOO_utf8_lc |const U8 classnum|NN const U8* character
+ERs |I32 |regmatch |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog
+ERs |I32 |regrepeat |NN regexp *prog|NN char **startposp \
+ |NN const regnode *p|I32 max|int depth \
+ |bool is_utf8_pat
+ERs |I32 |regtry |NN regmatch_info *reginfo|NN char **startposp
+ERs |bool |reginclass |NULLOK regexp * const prog|NN const regnode * const n|NN const U8 * const p\
+ |bool const utf8_target
+Es |CHECKPOINT|regcppush |NN const regexp *rex|I32 parenfloor\
+ |U32 maxopenparen
+Es |void |regcppop |NN regexp *rex\
+ |NN U32 *maxopenparen_p
ERsn |U8* |reghop3 |NN U8 *s|I32 off|NN const U8 *lim
ERsM |SV* |core_regclass_swash|NULLOK const regexp *prog \
|NN const struct regnode *node|bool doinit \
- |NULLOK SV **listsvp|NULLOK SV **altsvp
+ |NULLOK SV **listsvp
#ifdef XXX_dmq
ERsn |U8* |reghop4 |NN U8 *s|I32 off|NN const U8 *llim \
|NN const U8 *rlim
#endif
ERsn |U8* |reghopmaybe3 |NN U8 *s|I32 off|NN const U8 *lim
-ERs |char* |find_byclass |NN regexp * prog|NN const regnode *c|NN char *s|NN const char *strend|NULLOK regmatch_info *reginfo
+ERs |char* |find_byclass |NN regexp * prog|NN const regnode *c \
+ |NN char *s|NN const char *strend \
+ |NULLOK regmatch_info *reginfo \
+ |bool is_utf_pat
Es |void |to_utf8_substr |NN regexp * prog
-Es |void |to_byte_substr |NN regexp * prog
+Es |bool |to_byte_substr |NN regexp * prog
ERs |I32 |reg_check_named_buff_matched |NN const regexp *rex \
|NN const regnode *scan
# ifdef DEBUGGING
@@ -2104,13 +2195,17 @@ s |char* |force_word |NN char *start|int token|int check_keyword \
s |SV* |tokeq |NN SV *sv
s |void |readpipe_override|
sR |char* |scan_const |NN char *start
+iR |SV* |get_and_check_backslash_N_name|NN const char* s \
+ |NN const char* const e
sR |char* |scan_formline |NN char *s
sR |char* |scan_heredoc |NN char *s
s |char* |scan_ident |NN char *s|NN const char *send|NN char *dest \
|STRLEN destlen|I32 ck_uni
sR |char* |scan_inputsymbol|NN char *start
sR |char* |scan_pat |NN char *start|I32 type
-sR |char* |scan_str |NN char *start|int keep_quoted|int keep_delims
+sR |char* |scan_str |NN char *start|int keep_quoted \
+ |int keep_delims|int re_reparse \
+ |bool deprecate_escaped_matching
sR |char* |scan_subst |NN char *start
sR |char* |scan_trans |NN char *start
s |char* |scan_word |NN char *s|NN char *dest|STRLEN destlen \
@@ -2126,12 +2221,14 @@ s |U8* |add_utf16_textfilter|NN U8 *const s|bool reversed
s |void |checkcomma |NN const char *s|NN const char *name \
|NN const char *what
s |void |force_ident |NN const char *s|int kind
+s |void |force_ident_maybe_lex|char pit
s |void |incline |NN const char *s
s |int |intuit_method |NN char *s|NULLOK GV *gv|NULLOK CV *cv
s |int |intuit_more |NN char *s
s |I32 |lop |I32 f|int x|NN char *s
rs |void |missingterm |NULLOK char *s
s |void |no_op |NN const char *const what|NULLOK char *s
+s |int |pending_ident
sR |I32 |sublex_done
sR |I32 |sublex_push
sR |I32 |sublex_start
@@ -2144,6 +2241,9 @@ so |SV* |new_constant |NULLOK const char *s|STRLEN len \
|STRLEN typelen
s |int |deprecate_commaless_var_list
s |int |ao |int toketype
+s |void|parse_ident|NN char **s|NN char **d \
+ |NN char * const e|int allow_package \
+ |bool is_utf8
# if defined(PERL_CR_FILTER)
s |I32 |cr_textfilter |int idx|NULLOK SV *sv|int maxlen
s |void |strip_return |NN SV *sv
@@ -2170,7 +2270,6 @@ s |const COP*|closest_cop |NN const COP *cop|NULLOK const OP *o
s |SV* |mess_alloc
s |SV *|with_queued_errors|NN SV *ex
s |bool |invoke_exception_hook|NULLOK SV *ex|bool warn
-sr |char * |write_no_mem
#if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL)
sn |void |mem_log_common |enum mem_log_type mlt|const UV n|const UV typesize \
|NN const char *type_name|NULLOK const SV *sv \
@@ -2185,9 +2284,9 @@ sn |NV|mulexp10 |NV value|I32 exponent
#endif
#if defined(PERL_IN_UTF8_C)
-sRn |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len
+iRn |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len
sRM |UV |check_locale_boundary_crossing|NN const U8* const p|const UV result|NN U8* const ustrp|NN STRLEN *lenp
-sR |bool |is_utf8_common |NN const U8 *const p|NN SV **swash|NN const char * const swashname
+iR |bool |is_utf8_common |NN const U8 *const p|NN SV **swash|NN const char * const swashname
sR |SV* |swatch_get |NN SV* swash|UV start|UV span
#endif
@@ -2200,11 +2299,13 @@ Apd |void |sv_catsv_flags |NN SV *const dsv|NULLOK SV *const ssv|const I32 flags
Apmd |STRLEN |sv_utf8_upgrade_flags|NN SV *const sv|const I32 flags
Ap |STRLEN |sv_utf8_upgrade_flags_grow|NN SV *const sv|const I32 flags|STRLEN extra
Apd |char* |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags
-Apd |void |sv_copypv |NN SV *const dsv|NN SV *const ssv
+pmb |void |sv_copypv |NN SV *const dsv|NN SV *const ssv
+Apmd |void |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv
+Apd |void |sv_copypv_flags |NN SV *const dsv|NN SV *const ssv|const I32 flags
Ap |char* |my_atof2 |NN const char *s|NN NV* value
Apn |int |my_socketpair |int family|int type|int protocol|int fd[2]
Ap |int |my_dirfd |NULLOK DIR* dir
-#ifdef PERL_OLD_COPY_ON_WRITE
+#ifdef PERL_ANY_COW
: Used in pp_hot.c and regexec.c
pMXE |SV* |sv_setsv_cow |NULLOK SV* dstr|NN SV* sstr
#endif
@@ -2291,7 +2392,7 @@ Apd |void |pad_setsv |PADOFFSET po|NN SV* sv
#endif
pd |void |pad_block_start|int full
pd |U32 |intro_my
-pd |void |pad_leavemy
+pd |OP * |pad_leavemy
pd |void |pad_swipe |PADOFFSET po|bool refadjust
#if defined(PERL_IN_PAD_C)
sd |void |pad_reset
@@ -2305,14 +2406,20 @@ sd |void |cv_dump |NN const CV *cv|NN const char *title
# endif
#endif
Apd |CV* |cv_clone |NN CV* proto
+p |CV* |cv_clone_into |NN CV* proto|NN CV *target
pd |void |pad_fixup_inner_anons|NN PADLIST *padlist|NN CV *old_cv|NN CV *new_cv
pdX |void |pad_push |NN PADLIST *padlist|int depth
ApdR |HV* |pad_compname_type|const PADOFFSET po
#if defined(USE_ITHREADS)
-pdR |AV* |padlist_dup |NULLOK AV *srcpad|NN CLONE_PARAMS *param
+pdR |PADLIST *|padlist_dup |NULLOK PADLIST *srcpad \
+ |NN CLONE_PARAMS *param
#endif
+p |PAD ** |padlist_store |NN PADLIST *padlist|I32 key \
+ |NULLOK PAD *val
ApdR |CV* |find_runcv |NULLOK U32 *db_seqp
+pR |CV* |find_runcv_where|U8 cond|IV arg \
+ |NULLOK U32 *db_seqp
: Only used in perl.c
p |void |free_tied_hv_pool
#if defined(DEBUGGING)
@@ -2329,6 +2436,7 @@ ApoR |I32* |hv_riter_p |NN HV *hv
ApoR |HE** |hv_eiter_p |NN HV *hv
Apo |void |hv_riter_set |NN HV *hv|I32 riter
Apo |void |hv_eiter_set |NN HV *hv|NULLOK HE *eiter
+Ap |void |hv_rand_set |NN HV *hv|U32 new_xhv_rand
Ap |void |hv_name_set |NN HV *hv|NULLOK const char *name|U32 len|U32 flags
p |void |hv_ename_add |NN HV *hv|NN const char *name|U32 len \
|U32 flags
@@ -2437,8 +2545,6 @@ np |void |my_swabn |NN void* ptr|int n
Ap |GV* |gv_fetchpvn_flags|NN const char* name|STRLEN len|I32 flags|const svtype sv_type
Ap |GV* |gv_fetchsv|NN SV *name|I32 flags|const svtype sv_type
-ApR |bool |stashpv_hvname_match|NN const COP *c|NN const HV *hv
-
#ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
: Used in sv.c
p |void |dump_sv_child |NN SV *sv
@@ -2597,8 +2703,6 @@ ApoM |void|cop_store_label \
|NN COP *const cop|NN const char *label|STRLEN len|U32 flags
xpo |int |keyword_plugin_standard|NN char* keyword_ptr|STRLEN keyword_len|NN OP** op_ptr
-: Used in perly.y
-xp |void |munge_qwlist_to_paren_list|NN OP* qwlist
#if defined(USE_ITHREADS)
# if defined(PERL_IN_SV_C)
diff --git a/gnu/usr.bin/perl/embedvar.h b/gnu/usr.bin/perl/embedvar.h
index 24d99e96104..e689c5e4fbd 100644
--- a/gnu/usr.bin/perl/embedvar.h
+++ b/gnu/usr.bin/perl/embedvar.h
@@ -53,49 +53,21 @@
#define PL_DBtrace (vTHX->IDBtrace)
#define PL_Dir (vTHX->IDir)
#define PL_Env (vTHX->IEnv)
-#define PL_L1Cased (vTHX->IL1Cased)
-#define PL_L1PosixAlnum (vTHX->IL1PosixAlnum)
-#define PL_L1PosixAlpha (vTHX->IL1PosixAlpha)
-#define PL_L1PosixGraph (vTHX->IL1PosixGraph)
-#define PL_L1PosixLower (vTHX->IL1PosixLower)
-#define PL_L1PosixPrint (vTHX->IL1PosixPrint)
-#define PL_L1PosixPunct (vTHX->IL1PosixPunct)
-#define PL_L1PosixUpper (vTHX->IL1PosixUpper)
-#define PL_L1PosixWord (vTHX->IL1PosixWord)
+#define PL_HasMultiCharFold (vTHX->IHasMultiCharFold)
+#define PL_L1Posix_ptrs (vTHX->IL1Posix_ptrs)
#define PL_LIO (vTHX->ILIO)
#define PL_Latin1 (vTHX->ILatin1)
#define PL_Mem (vTHX->IMem)
#define PL_MemParse (vTHX->IMemParse)
#define PL_MemShared (vTHX->IMemShared)
-#define PL_OpPtr (vTHX->IOpPtr)
-#define PL_OpSlab (vTHX->IOpSlab)
-#define PL_OpSpace (vTHX->IOpSpace)
-#define PL_PerlSpace (vTHX->IPerlSpace)
-#define PL_PosixAlnum (vTHX->IPosixAlnum)
-#define PL_PosixAlpha (vTHX->IPosixAlpha)
-#define PL_PosixBlank (vTHX->IPosixBlank)
-#define PL_PosixCntrl (vTHX->IPosixCntrl)
-#define PL_PosixDigit (vTHX->IPosixDigit)
-#define PL_PosixGraph (vTHX->IPosixGraph)
-#define PL_PosixLower (vTHX->IPosixLower)
-#define PL_PosixPrint (vTHX->IPosixPrint)
-#define PL_PosixPunct (vTHX->IPosixPunct)
-#define PL_PosixSpace (vTHX->IPosixSpace)
-#define PL_PosixUpper (vTHX->IPosixUpper)
-#define PL_PosixWord (vTHX->IPosixWord)
-#define PL_PosixXDigit (vTHX->IPosixXDigit)
+#define PL_NonL1NonFinalFold (vTHX->INonL1NonFinalFold)
+#define PL_Posix_ptrs (vTHX->IPosix_ptrs)
#define PL_Proc (vTHX->IProc)
#define PL_Sock (vTHX->ISock)
#define PL_StdIO (vTHX->IStdIO)
#define PL_Sv (vTHX->ISv)
-#define PL_VertSpace (vTHX->IVertSpace)
-#define PL_XPerlSpace (vTHX->IXPerlSpace)
-#define PL_XPosixBlank (vTHX->IXPosixBlank)
-#define PL_XPosixCntrl (vTHX->IXPosixCntrl)
-#define PL_XPosixSpace (vTHX->IXPosixSpace)
-#define PL_XPosixXDigit (vTHX->IXPosixXDigit)
+#define PL_XPosix_ptrs (vTHX->IXPosix_ptrs)
#define PL_Xpv (vTHX->IXpv)
-#define PL_amagic_generation (vTHX->Iamagic_generation)
#define PL_an (vTHX->Ian)
#define PL_apiversion (vTHX->Iapiversion)
#define PL_argvgv (vTHX->Iargvgv)
@@ -177,14 +149,13 @@
#define PL_filemode (vTHX->Ifilemode)
#define PL_firstgv (vTHX->Ifirstgv)
#define PL_forkprocess (vTHX->Iforkprocess)
-#define PL_formfeed (vTHX->Iformfeed)
#define PL_formtarget (vTHX->Iformtarget)
#define PL_generation (vTHX->Igeneration)
#define PL_gensym (vTHX->Igensym)
-#define PL_glob_index (vTHX->Iglob_index)
#define PL_globalstash (vTHX->Iglobalstash)
#define PL_globhook (vTHX->Iglobhook)
-#define PL_hash_seed (vTHX->Ihash_seed)
+#define PL_hash_rand_bits (vTHX->Ihash_rand_bits)
+#define PL_hash_rand_bits_enabled (vTHX->Ihash_rand_bits_enabled)
#define PL_hintgv (vTHX->Ihintgv)
#define PL_hints (vTHX->Ihints)
#define PL_hv_fetch_ent_mh (vTHX->Ihv_fetch_ent_mh)
@@ -278,12 +249,9 @@
#define PL_regdummy (vTHX->Iregdummy)
#define PL_regex_pad (vTHX->Iregex_pad)
#define PL_regex_padav (vTHX->Iregex_padav)
-#define PL_reginterp_cnt (vTHX->Ireginterp_cnt)
#define PL_registered_mros (vTHX->Iregistered_mros)
#define PL_regmatch_slab (vTHX->Iregmatch_slab)
#define PL_regmatch_state (vTHX->Iregmatch_state)
-#define PL_rehash_seed (vTHX->Irehash_seed)
-#define PL_rehash_seed_set (vTHX->Irehash_seed_set)
#define PL_replgv (vTHX->Ireplgv)
#define PL_restartjmpenv (vTHX->Irestartjmpenv)
#define PL_restartop (vTHX->Irestartop)
@@ -294,7 +262,9 @@
#define PL_savestack (vTHX->Isavestack)
#define PL_savestack_ix (vTHX->Isavestack_ix)
#define PL_savestack_max (vTHX->Isavestack_max)
+#ifndef PL_sawampersand
#define PL_sawampersand (vTHX->Isawampersand)
+#endif
#define PL_scopestack (vTHX->Iscopestack)
#define PL_scopestack_ix (vTHX->Iscopestack_ix)
#define PL_scopestack_max (vTHX->Iscopestack_max)
@@ -305,8 +275,6 @@
#define PL_sighandlerp (vTHX->Isighandlerp)
#define PL_signalhook (vTHX->Isignalhook)
#define PL_signals (vTHX->Isignals)
-#define PL_slab_count (vTHX->Islab_count)
-#define PL_slabs (vTHX->Islabs)
#define PL_sort_RealCmp (vTHX->Isort_RealCmp)
#define PL_sortcop (vTHX->Isortcop)
#define PL_sortstash (vTHX->Isortstash)
@@ -317,6 +285,9 @@
#define PL_stack_sp (vTHX->Istack_sp)
#define PL_start_env (vTHX->Istart_env)
#define PL_stashcache (vTHX->Istashcache)
+#define PL_stashpad (vTHX->Istashpad)
+#define PL_stashpadix (vTHX->Istashpadix)
+#define PL_stashpadmax (vTHX->Istashpadmax)
#define PL_statbuf (vTHX->Istatbuf)
#define PL_statcache (vTHX->Istatcache)
#define PL_statgv (vTHX->Istatgv)
@@ -355,37 +326,22 @@
#define PL_unitcheckav_save (vTHX->Iunitcheckav_save)
#define PL_unlockhook (vTHX->Iunlockhook)
#define PL_unsafe (vTHX->Iunsafe)
-#define PL_utf8_X_L (vTHX->Iutf8_X_L)
-#define PL_utf8_X_LV (vTHX->Iutf8_X_LV)
-#define PL_utf8_X_LVT (vTHX->Iutf8_X_LVT)
-#define PL_utf8_X_LV_LVT_V (vTHX->Iutf8_X_LV_LVT_V)
-#define PL_utf8_X_T (vTHX->Iutf8_X_T)
-#define PL_utf8_X_V (vTHX->Iutf8_X_V)
-#define PL_utf8_X_begin (vTHX->Iutf8_X_begin)
#define PL_utf8_X_extend (vTHX->Iutf8_X_extend)
-#define PL_utf8_X_non_hangul (vTHX->Iutf8_X_non_hangul)
-#define PL_utf8_X_prepend (vTHX->Iutf8_X_prepend)
-#define PL_utf8_alnum (vTHX->Iutf8_alnum)
-#define PL_utf8_alpha (vTHX->Iutf8_alpha)
-#define PL_utf8_digit (vTHX->Iutf8_digit)
+#define PL_utf8_X_regular_begin (vTHX->Iutf8_X_regular_begin)
+#define PL_utf8_charname_begin (vTHX->Iutf8_charname_begin)
+#define PL_utf8_charname_continue (vTHX->Iutf8_charname_continue)
#define PL_utf8_foldable (vTHX->Iutf8_foldable)
#define PL_utf8_foldclosures (vTHX->Iutf8_foldclosures)
-#define PL_utf8_graph (vTHX->Iutf8_graph)
#define PL_utf8_idcont (vTHX->Iutf8_idcont)
#define PL_utf8_idstart (vTHX->Iutf8_idstart)
-#define PL_utf8_lower (vTHX->Iutf8_lower)
#define PL_utf8_mark (vTHX->Iutf8_mark)
+#define PL_utf8_perl_idcont (vTHX->Iutf8_perl_idcont)
#define PL_utf8_perl_idstart (vTHX->Iutf8_perl_idstart)
-#define PL_utf8_print (vTHX->Iutf8_print)
-#define PL_utf8_punct (vTHX->Iutf8_punct)
-#define PL_utf8_quotemeta (vTHX->Iutf8_quotemeta)
-#define PL_utf8_space (vTHX->Iutf8_space)
+#define PL_utf8_swash_ptrs (vTHX->Iutf8_swash_ptrs)
#define PL_utf8_tofold (vTHX->Iutf8_tofold)
#define PL_utf8_tolower (vTHX->Iutf8_tolower)
#define PL_utf8_totitle (vTHX->Iutf8_totitle)
#define PL_utf8_toupper (vTHX->Iutf8_toupper)
-#define PL_utf8_upper (vTHX->Iutf8_upper)
-#define PL_utf8_xdigit (vTHX->Iutf8_xdigit)
#define PL_utf8_xidcont (vTHX->Iutf8_xidcont)
#define PL_utf8_xidstart (vTHX->Iutf8_xidstart)
#define PL_utf8cache (vTHX->Iutf8cache)
@@ -415,6 +371,10 @@
#define PL_Gdollarzero_mutex (my_vars->Gdollarzero_mutex)
#define PL_fold_locale (my_vars->Gfold_locale)
#define PL_Gfold_locale (my_vars->Gfold_locale)
+#define PL_hash_seed (my_vars->Ghash_seed)
+#define PL_Ghash_seed (my_vars->Ghash_seed)
+#define PL_hash_seed_set (my_vars->Ghash_seed_set)
+#define PL_Ghash_seed_set (my_vars->Ghash_seed_set)
#define PL_hints_mutex (my_vars->Ghints_mutex)
#define PL_Ghints_mutex (my_vars->Ghints_mutex)
#define PL_keyword_plugin (my_vars->Gkeyword_plugin)
diff --git a/gnu/usr.bin/perl/ext/B/B.pm b/gnu/usr.bin/perl/ext/B/B.pm
index 75ead53a15f..881b68b4e0e 100644
--- a/gnu/usr.bin/perl/ext/B/B.pm
+++ b/gnu/usr.bin/perl/ext/B/B.pm
@@ -15,7 +15,7 @@ require Exporter;
# walkoptree comes from B.xs
BEGIN {
- $B::VERSION = '1.35';
+ $B::VERSION = '1.42_02';
@B::EXPORT_OK = ();
# Our BOOT code needs $VERSION set, and will append to @EXPORT_OK.
@@ -35,8 +35,7 @@ push @B::EXPORT_OK, (qw(minus_c ppname save_BEGINs
parents comppadlist sv_undef compile_stats timing_info
begin_av init_av check_av end_av regex_padav dowarn
defstash curstash warnhook diehook inc_gv @optype
- @specialsv_name
- ), $] > 5.009 && 'unitcheck_av');
+ @specialsv_name unitcheck_av));
@B::SV::ISA = 'B::OBJECT';
@B::NULL::ISA = 'B::SV';
@@ -49,10 +48,8 @@ push @B::EXPORT_OK, (qw(minus_c ppname save_BEGINs
@B::PVNV::ISA = qw(B::PVIV B::NV);
@B::PVMG::ISA = 'B::PVNV';
@B::REGEXP::ISA = 'B::PVMG' if $] >= 5.011;
-# Change in the inheritance hierarchy post 5.9.0
-@B::PVLV::ISA = $] > 5.009 ? 'B::GV' : 'B::PVMG';
-# BM is eliminated post 5.9.5, but effectively is a specialisation of GV now.
-@B::BM::ISA = $] > 5.009005 ? 'B::GV' : 'B::PVMG';
+@B::PVLV::ISA = 'B::GV';
+@B::BM::ISA = 'B::GV';
@B::AV::ISA = 'B::PVMG';
@B::GV::ISA = 'B::PVMG';
@B::HV::ISA = 'B::PVMG';
@@ -253,7 +250,8 @@ sub walksymtable {
my $fullname;
no strict 'refs';
$prefix = '' unless defined $prefix;
- while (($sym, $ref) = each %$symref) {
+ foreach my $sym ( sort keys %$symref ) {
+ $ref= $symref->{$sym};
$fullname = "*main::".$prefix.$sym;
if ($sym =~ /::$/) {
$sym = $prefix . $sym;
@@ -405,6 +403,8 @@ underlying structures are freed.
=item amagic_generation
Returns the SV object corresponding to the C variable C<amagic_generation>.
+As of Perl 5.18, this is just an alias to C<PL_na>, so its value is
+meaningless.
=item init_av
@@ -1014,6 +1014,10 @@ For constant subroutines, returns the constant SV returned by the subroutine.
=item const_sv
+=item NAME_HEK
+
+Returns the name of a lexical sub, otherwise C<undef>.
+
=back
=head2 B::HV Methods
@@ -1161,6 +1165,10 @@ Since Perl 5.9.5
Only when perl was compiled with ithreads.
+=item code_list
+
+Since perl 5.17.1
+
=back
=head2 B::SVOP METHOD
@@ -1211,7 +1219,7 @@ Only when perl was compiled with ithreads.
=item stashpv
-=item stashlen
+=item stashoff (threaded only)
=item file
@@ -1232,6 +1240,29 @@ Only when perl was compiled with ithreads.
=back
+=head2 $B::overlay
+
+Although the optree is read-only, there is an overlay facility that allows
+you to override what values the various B::*OP methods return for a
+particular op. C<$B::overlay> should be set to reference a two-deep hash:
+indexed by OP address, then method name. Whenever a an op method is
+called, the value in the hash is returned if it exists. This facility is
+used by B::Deparse to "undo" some optimisations. For example:
+
+
+ local $B::overlay = {};
+ ...
+ if ($op->name eq "foo") {
+ $B::overlay->{$$op} = {
+ name => 'bar',
+ next => $op->next->next,
+ };
+ }
+ ...
+ $op->name # returns "bar"
+ $op->next # returns the next op but one
+
+
=head1 AUTHOR
Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
diff --git a/gnu/usr.bin/perl/ext/B/B.xs b/gnu/usr.bin/perl/ext/B/B.xs
index 632c87451db..142a485bd83 100644
--- a/gnu/usr.bin/perl/ext/B/B.xs
+++ b/gnu/usr.bin/perl/ext/B/B.xs
@@ -21,9 +21,7 @@ typedef FILE * InputStream;
static const char* const svclassnames[] = {
"B::NULL",
-#if PERL_VERSION >= 9
"B::BIND",
-#endif
"B::IV",
"B::NV",
#if PERL_VERSION <= 10
@@ -33,22 +31,14 @@ static const char* const svclassnames[] = {
"B::PVIV",
"B::PVNV",
"B::PVMG",
-#if PERL_VERSION <= 8
- "B::BM",
-#endif
#if PERL_VERSION >= 11
"B::REGEXP",
#endif
-#if PERL_VERSION >= 9
"B::GV",
-#endif
"B::PVLV",
"B::AV",
"B::HV",
"B::CV",
-#if PERL_VERSION <= 8
- "B::GV",
-#endif
"B::FM",
"B::IO",
};
@@ -183,8 +173,7 @@ cc_opclass(pTHX_ const OP *o)
return (!custom &&
(o->op_private & (OPpTRANS_TO_UTF|OPpTRANS_FROM_UTF))
)
-#if defined(USE_ITHREADS) \
- && (PERL_VERSION > 8 || (PERL_VERSION == 8 && PERL_SUBVERSION >= 9))
+#if defined(USE_ITHREADS)
? OPc_PADOP : OPc_PVOP;
#else
? OPc_SVOP : OPc_PVOP;
@@ -252,6 +241,38 @@ make_op_object(pTHX_ const OP *o)
return opsv;
}
+
+static SV *
+get_overlay_object(pTHX_ const OP *o, const char * const name, U32 namelen)
+{
+ HE *he;
+ SV **svp;
+ SV *key;
+ SV *sv =get_sv("B::overlay", 0);
+ if (!sv || !SvROK(sv))
+ return NULL;
+ sv = SvRV(sv);
+ if (SvTYPE(sv) != SVt_PVHV)
+ return NULL;
+ key = newSViv(PTR2IV(o));
+ he = hv_fetch_ent((HV*)sv, key, 0, 0);
+ SvREFCNT_dec(key);
+ if (!he)
+ return NULL;
+ sv = HeVAL(he);
+ if (!sv || !SvROK(sv))
+ return NULL;
+ sv = SvRV(sv);
+ if (SvTYPE(sv) != SVt_PVHV)
+ return NULL;
+ svp = hv_fetch((HV*)sv, name, namelen, 0);
+ if (!svp)
+ return NULL;
+ sv = *svp;
+ return sv;
+}
+
+
static SV *
make_sv_object(pTHX_ SV *sv)
{
@@ -274,7 +295,6 @@ make_sv_object(pTHX_ SV *sv)
return arg;
}
-#if PERL_VERSION >= 9
static SV *
make_temp_object(pTHX_ SV *temp)
{
@@ -339,7 +359,6 @@ make_cop_io_object(pTHX_ COP *cop)
return make_sv_object(aTHX_ NULL);
}
}
-#endif
static SV *
make_mg_object(pTHX_ MAGIC *mg)
@@ -403,11 +422,7 @@ cstring(pTHX_ SV *sv, bool perlstyle)
sv_catpvs(sstr, "\\$");
else if (perlstyle && *s == '@')
sv_catpvs(sstr, "\\@");
-#ifdef EBCDIC
else if (isPRINT(*s))
-#else
- else if (*s >= ' ' && *s < 127)
-#endif /* EBCDIC */
sv_catpvn(sstr, s, 1);
else if (*s == '\n')
sv_catpvs(sstr, "\\n");
@@ -448,11 +463,7 @@ cchar(pTHX_ SV *sv)
sv_catpvs(sstr, "\\'");
else if (c == '\\')
sv_catpvs(sstr, "\\\\");
-#ifdef EBCDIC
else if (isPRINT(c))
-#else
- else if (c >= ' ' && c < 127)
-#endif /* EBCDIC */
sv_catpvn(sstr, s, 1);
else if (c == '\n')
sv_catpvs(sstr, "\\n");
@@ -474,15 +485,8 @@ cchar(pTHX_ SV *sv)
return sstr;
}
-#if PERL_VERSION >= 9
-# define PMOP_pmreplstart(o) o->op_pmstashstartu.op_pmreplstart
-# define PMOP_pmreplroot(o) o->op_pmreplrootu.op_pmreplroot
-#else
-# define PMOP_pmreplstart(o) o->op_pmreplstart
-# define PMOP_pmreplroot(o) o->op_pmreplroot
-# define PMOP_pmpermflags(o) o->op_pmpermflags
-# define PMOP_pmdynflags(o) o->op_pmdynflags
-#endif
+#define PMOP_pmreplstart(o) o->op_pmstashstartu.op_pmreplstart
+#define PMOP_pmreplroot(o) o->op_pmreplrootu.op_pmreplroot
static SV *
walkoptree(pTHX_ OP *o, const char *method, SV *ref)
@@ -535,15 +539,9 @@ static SV **
oplist(pTHX_ OP *o, SV **SP)
{
for(; o; o = o->op_next) {
-#if PERL_VERSION >= 9
if (o->op_opt == 0)
break;
o->op_opt = 0;
-#else
- if (o->op_seq == 0)
- break;
- o->op_seq = 0;
-#endif
XPUSHs(make_op_object(aTHX_ o));
switch (o->op_type) {
case OP_SUBST:
@@ -604,8 +602,9 @@ typedef IO *B__IO;
typedef MAGIC *B__MAGIC;
typedef HE *B__HE;
-#if PERL_VERSION >= 9
typedef struct refcounted_he *B__RHE;
+#ifdef PadlistARRAY
+typedef PADLIST *B__PADLIST;
#endif
#ifdef MULTIPLICITY
@@ -635,6 +634,92 @@ static XSPROTO(intrpvar_sv_common)
XSRETURN(1);
}
+
+
+#define SVp 0x00000
+#define U32p 0x10000
+#define line_tp 0x20000
+#define OPp 0x30000
+#define PADOFFSETp 0x40000
+#define U8p 0x50000
+#define IVp 0x60000
+#define char_pp 0x70000
+
+/* table that drives most of the B::*OP methods */
+
+struct OP_methods {
+ const char *name;
+ STRLEN namelen;
+ I32 type;
+ size_t offset; /* if -1, access is handled on a case-by-case basis */
+} op_methods[] = {
+ STR_WITH_LEN("next"), OPp, offsetof(struct op, op_next), /* 0*/
+ STR_WITH_LEN("sibling"), OPp, offsetof(struct op, op_sibling), /* 1*/
+ STR_WITH_LEN("targ"), PADOFFSETp, offsetof(struct op, op_targ), /* 2*/
+ STR_WITH_LEN("flags"), U8p, offsetof(struct op, op_flags), /* 3*/
+ STR_WITH_LEN("private"), U8p, offsetof(struct op, op_private), /* 4*/
+ STR_WITH_LEN("first"), OPp, offsetof(struct unop, op_first), /* 5*/
+ STR_WITH_LEN("last"), OPp, offsetof(struct binop, op_last), /* 6*/
+ STR_WITH_LEN("other"), OPp, offsetof(struct logop, op_other), /* 7*/
+ STR_WITH_LEN("pmreplstart"), 0, -1, /* 8*/
+ STR_WITH_LEN("redoop"), OPp, offsetof(struct loop, op_redoop), /* 9*/
+ STR_WITH_LEN("nextop"), OPp, offsetof(struct loop, op_nextop), /*10*/
+ STR_WITH_LEN("lastop"), OPp, offsetof(struct loop, op_lastop), /*11*/
+ STR_WITH_LEN("pmflags"), U32p, offsetof(struct pmop, op_pmflags), /*12*/
+#if PERL_VERSION >= 17
+ STR_WITH_LEN("code_list"),OPp, offsetof(struct pmop, op_code_list),/*13*/
+#else
+ STR_WITH_LEN("code_list"),0, -1,
+#endif
+ STR_WITH_LEN("sv"), SVp, offsetof(struct svop, op_sv), /*14*/
+ STR_WITH_LEN("gv"), SVp, offsetof(struct svop, op_sv), /*15*/
+ STR_WITH_LEN("padix"), PADOFFSETp,offsetof(struct padop, op_padix),/*16*/
+ STR_WITH_LEN("cop_seq"), U32p, offsetof(struct cop, cop_seq), /*17*/
+ STR_WITH_LEN("line"), line_tp, offsetof(struct cop, cop_line), /*18*/
+ STR_WITH_LEN("hints"), U32p, offsetof(struct cop, cop_hints), /*19*/
+#ifdef USE_ITHREADS
+ STR_WITH_LEN("pmoffset"),IVp, offsetof(struct pmop, op_pmoffset),/*20*/
+ STR_WITH_LEN("filegv"), 0, -1, /*21*/
+ STR_WITH_LEN("file"), char_pp, offsetof(struct cop, cop_file), /*22*/
+ STR_WITH_LEN("stash"), 0, -1, /*23*/
+# if PERL_VERSION < 17
+ STR_WITH_LEN("stashpv"), char_pp, offsetof(struct cop, cop_stashpv), /*24*/
+ STR_WITH_LEN("stashoff"),0, -1, /*25*/
+# else
+ STR_WITH_LEN("stashpv"), 0, -1, /*24*/
+ STR_WITH_LEN("stashoff"),PADOFFSETp,offsetof(struct cop, cop_stashoff),/*25*/
+# endif
+#else
+ STR_WITH_LEN("pmoffset"),0, -1, /*20*/
+ STR_WITH_LEN("filegv"), SVp, offsetof(struct cop, cop_filegv), /*21*/
+ STR_WITH_LEN("file"), 0, -1, /*22*/
+ STR_WITH_LEN("stash"), SVp, offsetof(struct cop, cop_stash), /*23*/
+ STR_WITH_LEN("stashpv"), 0, -1, /*24*/
+ STR_WITH_LEN("stashoff"),0, -1, /*25*/
+#endif
+ STR_WITH_LEN("size"), 0, -1, /*26*/
+ STR_WITH_LEN("name"), 0, -1, /*27*/
+ STR_WITH_LEN("desc"), 0, -1, /*28*/
+ STR_WITH_LEN("ppaddr"), 0, -1, /*29*/
+ STR_WITH_LEN("type"), 0, -1, /*30*/
+ STR_WITH_LEN("opt"), 0, -1, /*31*/
+ STR_WITH_LEN("spare"), 0, -1, /*32*/
+ STR_WITH_LEN("children"),0, -1, /*33*/
+ STR_WITH_LEN("pmreplroot"), 0, -1, /*34*/
+ STR_WITH_LEN("pmstashpv"), 0, -1, /*35*/
+ STR_WITH_LEN("pmstash"), 0, -1, /*36*/
+ STR_WITH_LEN("precomp"), 0, -1, /*37*/
+ STR_WITH_LEN("reflags"), 0, -1, /*38*/
+ STR_WITH_LEN("sv"), 0, -1, /*39*/
+ STR_WITH_LEN("gv"), 0, -1, /*40*/
+ STR_WITH_LEN("pv"), 0, -1, /*41*/
+ STR_WITH_LEN("label"), 0, -1, /*42*/
+ STR_WITH_LEN("arybase"), 0, -1, /*43*/
+ STR_WITH_LEN("warnings"),0, -1, /*44*/
+ STR_WITH_LEN("io"), 0, -1, /*45*/
+ STR_WITH_LEN("hints_hash"),0, -1, /*46*/
+};
+
#include "const-c.inc"
MODULE = B PACKAGE = B
@@ -660,10 +745,8 @@ BOOT:
ASSIGN_COMMON_ALIAS(I, initav);
cv = newXS("B::check_av", intrpvar_sv_common, file);
ASSIGN_COMMON_ALIAS(I, checkav_save);
-#if PERL_VERSION >= 9
cv = newXS("B::unitcheck_av", intrpvar_sv_common, file);
ASSIGN_COMMON_ALIAS(I, unitcheckav_save);
-#endif
cv = newXS("B::begin_av", intrpvar_sv_common, file);
ASSIGN_COMMON_ALIAS(I, beginav_save);
cv = newXS("B::end_av", intrpvar_sv_common, file);
@@ -676,8 +759,10 @@ BOOT:
ASSIGN_COMMON_ALIAS(I, defstash);
cv = newXS("B::curstash", intrpvar_sv_common, file);
ASSIGN_COMMON_ALIAS(I, curstash);
+#ifdef PL_formfeed
cv = newXS("B::formfeed", intrpvar_sv_common, file);
ASSIGN_COMMON_ALIAS(I, formfeed);
+#endif
#ifdef USE_ITHREADS
cv = newXS("B::regex_padav", intrpvar_sv_common, file);
ASSIGN_COMMON_ALIAS(I, regex_padav);
@@ -688,6 +773,15 @@ BOOT:
ASSIGN_COMMON_ALIAS(I, diehook);
}
+#ifndef PL_formfeed
+
+void
+formfeed()
+ PPCODE:
+ PUSHs(make_sv_object(aTHX_ GvSV(gv_fetchpvs("\f", GV_ADD, SVt_PV))));
+
+#endif
+
long
amagic_generation()
CODE:
@@ -697,9 +791,19 @@ amagic_generation()
void
comppadlist()
+ PREINIT:
+ PADLIST *padlist = CvPADLIST(PL_main_cv ? PL_main_cv : PL_compcv);
PPCODE:
- PUSHs(make_sv_object(aTHX_ (SV *)(PL_main_cv ? CvPADLIST(PL_main_cv)
- : CvPADLIST(PL_compcv))));
+#ifdef PadlistARRAY
+ {
+ SV * const rv = sv_newmortal();
+ sv_setiv(newSVrv(rv, padlist ? "B::PADLIST" : "B::NULL"),
+ PTR2IV(padlist));
+ PUSHs(rv);
+ }
+#else
+ PUSHs(make_sv_object(aTHX_ (SV *)padlist));
+#endif
void
sv_undef()
@@ -824,82 +928,12 @@ cstring(sv)
void
threadsv_names()
PPCODE:
-#if PERL_VERSION <= 8
-# ifdef USE_5005THREADS
- int i;
- const STRLEN len = strlen(PL_threadsv_names);
-
- EXTEND(sp, len);
- for (i = 0; i < len; i++)
- PUSHs(newSVpvn_flags(&PL_threadsv_names[i], 1, SVs_TEMP));
-# endif
-#endif
-#define SVp 0x00000
-#define U32p 0x10000
-#define line_tp 0x20000
-#define OPp 0x30000
-#define PADOFFSETp 0x40000
-#define U8p 0x50000
-#define IVp 0x60000
-#define char_pp 0x70000
-
-#define OP_next_ix OPp | offsetof(struct op, op_next)
-#define OP_sibling_ix OPp | offsetof(struct op, op_sibling)
-#define UNOP_first_ix OPp | offsetof(struct unop, op_first)
-#define BINOP_last_ix OPp | offsetof(struct binop, op_last)
-#define LOGOP_other_ix OPp | offsetof(struct logop, op_other)
-#if PERL_VERSION >= 9
-# define PMOP_pmreplstart_ix \
- OPp | offsetof(struct pmop, op_pmstashstartu.op_pmreplstart)
-#else
-# define PMOP_pmreplstart_ix OPp | offsetof(struct pmop, op_pmreplstart)
-#endif
-#define LOOP_redoop_ix OPp | offsetof(struct loop, op_redoop)
-#define LOOP_nextop_ix OPp | offsetof(struct loop, op_nextop)
-#define LOOP_lastop_ix OPp | offsetof(struct loop, op_lastop)
-#define OP_targ_ix PADOFFSETp | offsetof(struct op, op_targ)
-#define OP_flags_ix U8p | offsetof(struct op, op_flags)
-#define OP_private_ix U8p | offsetof(struct op, op_private)
-#define PMOP_pmflags_ix U32p | offsetof(struct pmop, op_pmflags)
-
-#ifdef USE_ITHREADS
-#define PMOP_pmoffset_ix IVp | offsetof(struct pmop, op_pmoffset)
-#endif
-
-# Yes, B::SV::sv and B::SV::gv really do end up generating identical code.
-#define SVOP_sv_ix SVp | offsetof(struct svop, op_sv)
-#define SVOP_gv_ix SVp | offsetof(struct svop, op_sv)
-
-#define PADOP_padix_ix PADOFFSETp | offsetof(struct padop, op_padix)
-
-#define COP_seq_ix U32p | offsetof(struct cop, cop_seq)
-#define COP_line_ix line_tp | offsetof(struct cop, cop_line)
-#if PERL_VERSION >= 9
-#define COP_hints_ix U32p | offsetof(struct cop, cop_hints)
-#else
-#define COP_hints_ix U8p | offsetof(struct cop, op_private)
-#endif
-
-#ifdef USE_ITHREADS
-#define COP_stashpv_ix char_pp | offsetof(struct cop, cop_stashpv)
-#define COP_file_ix char_pp | offsetof(struct cop, cop_file)
-#else
-#define COP_stash_ix SVp | offsetof(struct cop, cop_stash)
-#define COP_filegv_ix SVp | offsetof(struct cop, cop_filegv)
-#endif
MODULE = B PACKAGE = B::OP
-size_t
-size(o)
- B::OP o
- CODE:
- RETVAL = opsizes[cc_opclass(aTHX_ o)];
- OUTPUT:
- RETVAL
# The type checking code in B has always been identical for all OP types,
# irrespective of whether the action is actually defined on that OP.
@@ -908,35 +942,252 @@ void
next(o)
B::OP o
ALIAS:
- B::OP::next = OP_next_ix
- B::OP::sibling = OP_sibling_ix
- B::OP::targ = OP_targ_ix
- B::OP::flags = OP_flags_ix
- B::OP::private = OP_private_ix
- B::UNOP::first = UNOP_first_ix
- B::BINOP::last = BINOP_last_ix
- B::LOGOP::other = LOGOP_other_ix
- B::PMOP::pmreplstart = PMOP_pmreplstart_ix
- B::LOOP::redoop = LOOP_redoop_ix
- B::LOOP::nextop = LOOP_nextop_ix
- B::LOOP::lastop = LOOP_lastop_ix
- B::PMOP::pmflags = PMOP_pmflags_ix
- B::SVOP::sv = SVOP_sv_ix
- B::SVOP::gv = SVOP_gv_ix
- B::PADOP::padix = PADOP_padix_ix
- B::COP::cop_seq = COP_seq_ix
- B::COP::line = COP_line_ix
- B::COP::hints = COP_hints_ix
+ B::OP::next = 0
+ B::OP::sibling = 1
+ B::OP::targ = 2
+ B::OP::flags = 3
+ B::OP::private = 4
+ B::UNOP::first = 5
+ B::BINOP::last = 6
+ B::LOGOP::other = 7
+ B::PMOP::pmreplstart = 8
+ B::LOOP::redoop = 9
+ B::LOOP::nextop = 10
+ B::LOOP::lastop = 11
+ B::PMOP::pmflags = 12
+ B::PMOP::code_list = 13
+ B::SVOP::sv = 14
+ B::SVOP::gv = 15
+ B::PADOP::padix = 16
+ B::COP::cop_seq = 17
+ B::COP::line = 18
+ B::COP::hints = 19
+ B::PMOP::pmoffset = 20
+ B::COP::filegv = 21
+ B::COP::file = 22
+ B::COP::stash = 23
+ B::COP::stashpv = 24
+ B::COP::stashoff = 25
+ B::OP::size = 26
+ B::OP::name = 27
+ B::OP::desc = 28
+ B::OP::ppaddr = 29
+ B::OP::type = 30
+ B::OP::opt = 31
+ B::OP::spare = 32
+ B::LISTOP::children = 33
+ B::PMOP::pmreplroot = 34
+ B::PMOP::pmstashpv = 35
+ B::PMOP::pmstash = 36
+ B::PMOP::precomp = 37
+ B::PMOP::reflags = 38
+ B::PADOP::sv = 39
+ B::PADOP::gv = 40
+ B::PVOP::pv = 41
+ B::COP::label = 42
+ B::COP::arybase = 43
+ B::COP::warnings = 44
+ B::COP::io = 45
+ B::COP::hints_hash = 46
PREINIT:
char *ptr;
SV *ret;
+ I32 type;
+ I32 offset;
+ STRLEN len;
PPCODE:
- ptr = (ix & 0xFFFF) + (char *)o;
- switch ((U8)(ix >> 16)) {
- case (U8)(OPp >> 16):
+ if (ix < 0 || ix > 46)
+ croak("Illegal alias %d for B::*OP::next", (int)ix);
+ ret = get_overlay_object(aTHX_ o,
+ op_methods[ix].name, op_methods[ix].namelen);
+ if (ret) {
+ ST(0) = ret;
+ XSRETURN(1);
+ }
+
+ /* handle non-direct field access */
+
+ offset = op_methods[ix].offset;
+ if (offset < 0) {
+ switch (ix) {
+ case 8: /* pmreplstart */
+ ret = make_op_object(aTHX_
+ cPMOPo->op_type == OP_SUBST
+ ? cPMOPo->op_pmstashstartu.op_pmreplstart
+ : NULL
+ );
+ break;
+#ifdef USE_ITHREADS
+ case 21: /* filegv */
+ ret = make_sv_object(aTHX_ (SV *)CopFILEGV((COP*)o));
+ break;
+#endif
+#ifndef USE_ITHREADS
+ case 22: /* file */
+ ret = sv_2mortal(newSVpv(CopFILE((COP*)o), 0));
+ break;
+#endif
+#ifdef USE_ITHREADS
+ case 23: /* stash */
+ ret = make_sv_object(aTHX_ (SV *)CopSTASH((COP*)o));
+ break;
+#endif
+#if PERL_VERSION >= 17 || !defined USE_ITHREADS
+ case 24: /* stashpv */
+# if PERL_VERSION >= 17
+ ret = sv_2mortal(CopSTASH((COP*)o)
+ && SvTYPE(CopSTASH((COP*)o)) == SVt_PVHV
+ ? newSVhek(HvNAME_HEK(CopSTASH((COP*)o)))
+ : &PL_sv_undef);
+# else
+ ret = sv_2mortal(newSVpv(CopSTASHPV((COP*)o), 0));
+# endif
+ break;
+#endif
+ case 26: /* size */
+ ret = sv_2mortal(newSVuv((UV)(opsizes[cc_opclass(aTHX_ o)])));
+ break;
+ case 27: /* name */
+ case 28: /* desc */
+ ret = sv_2mortal(newSVpv(
+ (char *)(ix == 28 ? OP_DESC(o) : OP_NAME(o)), 0));
+ break;
+ case 29: /* ppaddr */
+ {
+ int i;
+ ret = sv_2mortal(Perl_newSVpvf(aTHX_ "PL_ppaddr[OP_%s]",
+ PL_op_name[o->op_type]));
+ for (i=13; (STRLEN)i < SvCUR(ret); ++i)
+ SvPVX(ret)[i] = toUPPER(SvPVX(ret)[i]);
+ }
+ break;
+ case 30: /* type */
+ case 31: /* opt */
+ case 32: /* spare */
+ /* These 3 are all bitfields, so we can't take their addresses */
+ ret = sv_2mortal(newSVuv((UV)(
+ ix == 30 ? o->op_type
+ : ix == 31 ? o->op_opt
+ : o->op_spare)));
+ break;
+ case 33: /* children */
+ {
+ OP *kid;
+ UV i = 0;
+ for (kid = ((LISTOP*)o)->op_first; kid; kid = kid->op_sibling)
+ i++;
+ ret = sv_2mortal(newSVuv(i));
+ }
+ break;
+ case 34: /* pmreplroot */
+ if (cPMOPo->op_type == OP_PUSHRE) {
+#ifdef USE_ITHREADS
+ ret = sv_newmortal();
+ sv_setiv(ret, cPMOPo->op_pmreplrootu.op_pmtargetoff);
+#else
+ GV *const target = cPMOPo->op_pmreplrootu.op_pmtargetgv;
+ ret = sv_newmortal();
+ sv_setiv(newSVrv(ret, target ?
+ svclassnames[SvTYPE((SV*)target)] : "B::SV"),
+ PTR2IV(target));
+#endif
+ }
+ else {
+ OP *const root = cPMOPo->op_pmreplrootu.op_pmreplroot;
+ ret = make_op_object(aTHX_ root);
+ }
+ break;
+#ifdef USE_ITHREADS
+ case 35: /* pmstashpv */
+ ret = sv_2mortal(newSVpv(PmopSTASHPV(cPMOPo),0));
+ break;
+#else
+ case 36: /* pmstash */
+ ret = make_sv_object(aTHX_ (SV *) PmopSTASH(cPMOPo));
+ break;
+#endif
+ case 37: /* precomp */
+ case 38: /* reflags */
+ {
+ REGEXP *rx = PM_GETRE(cPMOPo);
+ ret = sv_newmortal();
+ if (rx) {
+ if (ix==38) {
+ sv_setuv(ret, RX_EXTFLAGS(rx));
+ }
+ else {
+ sv_setpvn(ret, RX_PRECOMP(rx), RX_PRELEN(rx));
+ }
+ }
+ }
+ break;
+ case 39: /* sv */
+ case 40: /* gv */
+ /* It happens that the output typemaps for B::SV and B::GV
+ * are identical. The "smarts" are in make_sv_object(),
+ * which determines which class to use based on SvTYPE(),
+ * rather than anything baked in at compile time. */
+ if (cPADOPo->op_padix) {
+ ret = PAD_SVl(cPADOPo->op_padix);
+ if (ix == 40 && SvTYPE(ret) != SVt_PVGV)
+ ret = NULL;
+ } else {
+ ret = NULL;
+ }
+ ret = make_sv_object(aTHX_ ret);
+ break;
+ case 41: /* pv */
+ /* OP_TRANS uses op_pv to point to a table of 256 or >=258
+ * shorts whereas other PVOPs point to a null terminated
+ * string. */
+ if ( (cPVOPo->op_type == OP_TRANS
+ || cPVOPo->op_type == OP_TRANSR) &&
+ (cPVOPo->op_private & OPpTRANS_COMPLEMENT) &&
+ !(cPVOPo->op_private & OPpTRANS_DELETE))
+ {
+ const short* const tbl = (short*)cPVOPo->op_pv;
+ const short entries = 257 + tbl[256];
+ ret = newSVpvn_flags(cPVOPo->op_pv, entries * sizeof(short), SVs_TEMP);
+ }
+ else if (cPVOPo->op_type == OP_TRANS || cPVOPo->op_type == OP_TRANSR) {
+ ret = newSVpvn_flags(cPVOPo->op_pv, 256 * sizeof(short), SVs_TEMP);
+ }
+ else
+ ret = newSVpvn_flags(cPVOPo->op_pv, strlen(cPVOPo->op_pv), SVs_TEMP);
+ break;
+ case 42: /* label */
+ ret = sv_2mortal(newSVpv(CopLABEL(cCOPo),0));
+ break;
+ case 43: /* arybase */
+ ret = sv_2mortal(newSVuv(0));
+ break;
+ case 44: /* warnings */
+ ret = make_warnings_object(aTHX_ cCOPo);
+ break;
+ case 45: /* io */
+ ret = make_cop_io_object(aTHX_ cCOPo);
+ break;
+ case 46: /* hints_hash */
+ ret = sv_newmortal();
+ sv_setiv(newSVrv(ret, "B::RHE"),
+ PTR2IV(CopHINTHASH_get(cCOPo)));
+ break;
+ default:
+ croak("method %s not implemented", op_methods[ix].name);
+ }
+ ST(0) = ret;
+ XSRETURN(1);
+ }
+
+ /* do a direct structure offset lookup */
+
+ ptr = (char *)o + offset;
+ type = op_methods[ix].type;
+ switch ((U8)(type >> 16)) {
+ case (U8)(OPp >> 16):
ret = make_op_object(aTHX_ *((OP **)ptr));
break;
- case (U8)(PADOFFSETp >> 16):
+ case (U8)(PADOFFSETp >> 16):
ret = sv_2mortal(newSVuv(*((PADOFFSET*)ptr)));
break;
case (U8)(U8p >> 16):
@@ -951,85 +1202,20 @@ next(o)
case (U8)(line_tp >> 16):
ret = sv_2mortal(newSVuv(*((line_t *)ptr)));
break;
-#ifdef USE_ITHREADS
case (U8)(IVp >> 16):
ret = sv_2mortal(newSViv(*((IV*)ptr)));
break;
case (U8)(char_pp >> 16):
ret = sv_2mortal(newSVpv(*((char **)ptr), 0));
break;
-#endif
default:
- croak("Illegal alias 0x%08x for B::*next", (unsigned)ix);
+ croak("Illegal type 0x%08x for B::*OP::%s",
+ (unsigned)type, op_methods[ix].name);
}
ST(0) = ret;
XSRETURN(1);
-char *
-name(o)
- B::OP o
- ALIAS:
- desc = 1
- CODE:
- RETVAL = (char *)(ix ? OP_DESC(o) : OP_NAME(o));
- OUTPUT:
- RETVAL
-
-void
-ppaddr(o)
- B::OP o
- PREINIT:
- int i;
- SV *sv;
- CODE:
- sv = sv_2mortal(Perl_newSVpvf(aTHX_ "PL_ppaddr[OP_%s]",
- PL_op_name[o->op_type]));
- for (i=13; (STRLEN)i < SvCUR(sv); ++i)
- SvPVX(sv)[i] = toUPPER(SvPVX(sv)[i]);
- ST(0) = sv;
-
-#if PERL_VERSION >= 9
-# These 3 are all bitfields, so we can't take their addresses.
-UV
-type(o)
- B::OP o
- ALIAS:
- opt = 1
- spare = 2
- CODE:
- switch(ix) {
- case 1:
- RETVAL = o->op_opt;
- break;
- case 2:
- RETVAL = o->op_spare;
- break;
- default:
- RETVAL = o->op_type;
- }
- OUTPUT:
- RETVAL
-
-#else
-
-UV
-type(o)
- B::OP o
- ALIAS:
- seq = 1
- CODE:
- switch(ix) {
- case 1:
- RETVAL = o->op_seq;
- break;
- default:
- RETVAL = o->op_type;
- }
- OUTPUT:
- RETVAL
-
-#endif
void
oplist(o)
@@ -1037,276 +1223,6 @@ oplist(o)
PPCODE:
SP = oplist(aTHX_ o, SP);
-MODULE = B PACKAGE = B::LISTOP
-
-U32
-children(o)
- B::LISTOP o
- OP * kid = NO_INIT
- int i = NO_INIT
- CODE:
- i = 0;
- for (kid = o->op_first; kid; kid = kid->op_sibling)
- i++;
- RETVAL = i;
- OUTPUT:
- RETVAL
-
-MODULE = B PACKAGE = B::PMOP PREFIX = PMOP_
-
-#if PERL_VERSION <= 8
-
-void
-PMOP_pmreplroot(o)
- B::PMOP o
- OP * root = NO_INIT
- CODE:
- root = o->op_pmreplroot;
- /* OP_PUSHRE stores an SV* instead of an OP* in op_pmreplroot */
- if (o->op_type == OP_PUSHRE) {
- ST(0) = sv_newmortal();
-# ifdef USE_ITHREADS
- sv_setiv(ST(0), INT2PTR(PADOFFSET,root) );
-# else
- sv_setiv(newSVrv(ST(0), root ?
- svclassnames[SvTYPE((SV*)root)] : "B::SV"),
- PTR2IV(root));
-# endif
- }
- else {
- ST(0) = make_op_object(aTHX_ root);
- }
-
-#else
-
-void
-PMOP_pmreplroot(o)
- B::PMOP o
- CODE:
- if (o->op_type == OP_PUSHRE) {
-# ifdef USE_ITHREADS
- ST(0) = sv_newmortal();
- sv_setiv(ST(0), o->op_pmreplrootu.op_pmtargetoff);
-# else
- GV *const target = o->op_pmreplrootu.op_pmtargetgv;
- ST(0) = sv_newmortal();
- sv_setiv(newSVrv(ST(0), target ?
- svclassnames[SvTYPE((SV*)target)] : "B::SV"),
- PTR2IV(target));
-# endif
- }
- else {
- OP *const root = o->op_pmreplrootu.op_pmreplroot;
- ST(0) = make_op_object(aTHX_ root);
- }
-
-#endif
-
-#ifdef USE_ITHREADS
-#define PMOP_pmstashpv(o) PmopSTASHPV(o);
-
-char*
-PMOP_pmstashpv(o)
- B::PMOP o
-
-#else
-
-void
-PMOP_pmstash(o)
- B::PMOP o
- PPCODE:
- PUSHs(make_sv_object(aTHX_ (SV *) PmopSTASH(o)));
-
-#endif
-
-#if PERL_VERSION < 9
-
-void
-PMOP_pmnext(o)
- B::PMOP o
- PPCODE:
- PUSHs(make_op_object(aTHX_ o->op_pmnext));
-
-U32
-PMOP_pmpermflags(o)
- B::PMOP o
-
-U8
-PMOP_pmdynflags(o)
- B::PMOP o
-
-#endif
-
-void
-PMOP_precomp(o)
- B::PMOP o
- PREINIT:
- dXSI32;
- REGEXP *rx;
- CODE:
- rx = PM_GETRE(o);
- ST(0) = sv_newmortal();
- if (rx) {
-#if PERL_VERSION >= 9
- if (ix) {
- sv_setuv(ST(0), RX_EXTFLAGS(rx));
- } else
-#endif
- {
- sv_setpvn(ST(0), RX_PRECOMP(rx), RX_PRELEN(rx));
- }
- }
-
-BOOT:
-{
- CV *cv;
-#ifdef USE_ITHREADS
- cv = newXS("B::PMOP::pmoffset", XS_B__OP_next, __FILE__);
- XSANY.any_i32 = PMOP_pmoffset_ix;
- cv = newXS("B::COP::stashpv", XS_B__OP_next, __FILE__);
- XSANY.any_i32 = COP_stashpv_ix;
- cv = newXS("B::COP::file", XS_B__OP_next, __FILE__);
- XSANY.any_i32 = COP_file_ix;
-#else
- cv = newXS("B::COP::stash", XS_B__OP_next, __FILE__);
- XSANY.any_i32 = COP_stash_ix;
- cv = newXS("B::COP::filegv", XS_B__OP_next, __FILE__);
- XSANY.any_i32 = COP_filegv_ix;
-#endif
-#if PERL_VERSION >= 9
- cv = newXS("B::PMOP::reflags", XS_B__PMOP_precomp, __FILE__);
- XSANY.any_i32 = 1;
-#endif
-}
-
-MODULE = B PACKAGE = B::PADOP
-
-void
-sv(o)
- B::PADOP o
- PREINIT:
- SV *ret;
- ALIAS:
- gv = 1
- PPCODE:
- /* It happens that the output typemaps for B::SV and B::GV are
- identical. The "smarts" are in make_sv_object(), which determines
- which class to use based on SvTYPE(), rather than anything baked in
- at compile time. */
- if (o->op_padix) {
- ret = PAD_SVl(o->op_padix);
- if (ix && SvTYPE(ret) != SVt_PVGV)
- ret = NULL;
- } else {
- ret = NULL;
- }
- PUSHs(make_sv_object(aTHX_ ret));
-
-MODULE = B PACKAGE = B::PVOP
-
-void
-pv(o)
- B::PVOP o
- CODE:
- /*
- * OP_TRANS uses op_pv to point to a table of 256 or >=258 shorts
- * whereas other PVOPs point to a null terminated string.
- */
- if ((o->op_type == OP_TRANS || o->op_type == OP_TRANSR) &&
- (o->op_private & OPpTRANS_COMPLEMENT) &&
- !(o->op_private & OPpTRANS_DELETE))
- {
- const short* const tbl = (short*)o->op_pv;
- const short entries = 257 + tbl[256];
- ST(0) = newSVpvn_flags(o->op_pv, entries * sizeof(short), SVs_TEMP);
- }
- else if (o->op_type == OP_TRANS || o->op_type == OP_TRANSR) {
- ST(0) = newSVpvn_flags(o->op_pv, 256 * sizeof(short), SVs_TEMP);
- }
- else
- ST(0) = newSVpvn_flags(o->op_pv, strlen(o->op_pv), SVs_TEMP);
-
-#define COP_label(o) CopLABEL(o)
-#ifdef CopSTASH_len
-#define COP_stashlen(o) CopSTASH_len(o)
-#endif
-
-MODULE = B PACKAGE = B::COP PREFIX = COP_
-
-const char *
-COP_label(o)
- B::COP o
-
-# Both pairs of accessors are provided for both ithreads and not, but for each,
-# one pair is direct structure access, and 1 pair "faked up" with a more complex
-# macro. We implement the direct structure access pair using the common code
-# above (B::OP::next)
-
-#ifdef USE_ITHREADS
-
-void
-COP_stash(o)
- B::COP o
- ALIAS:
- filegv = 1
- PPCODE:
- PUSHs(make_sv_object(aTHX_
- ix ? (SV *)CopFILEGV(o) : (SV *)CopSTASH(o)));
-
-#ifdef CopSTASH_len
-
-U32
-COP_stashlen(o)
- B::COP o
-
-#endif
-
-#else
-
-char *
-COP_stashpv(o)
- B::COP o
- ALIAS:
- file = 1
- CODE:
- RETVAL = ix ? CopFILE(o) : CopSTASHPV(o);
- OUTPUT:
- RETVAL
-
-#endif
-
-I32
-COP_arybase(o)
- B::COP o
- CODE:
- RETVAL = 0;
- OUTPUT:
- RETVAL
-
-void
-COP_warnings(o)
- B::COP o
- ALIAS:
- io = 1
- PPCODE:
-#if PERL_VERSION >= 9
- ST(0) = ix ? make_cop_io_object(aTHX_ o) : make_warnings_object(aTHX_ o);
-#else
- ST(0) = make_sv_object(aTHX_ ix ? o->cop_io : o->cop_warnings);
-#endif
- XSRETURN(1);
-
-#if PERL_VERSION >= 9
-
-B::RHE
-COP_hints_hash(o)
- B::COP o
- CODE:
- RETVAL = CopHINTHASH_get(o);
- OUTPUT:
- RETVAL
-
-#endif
MODULE = B PACKAGE = B::SV
@@ -1358,7 +1274,6 @@ MODULE = B PACKAGE = B::IV
#define IV_uvx_ix sv_UVp | offsetof(struct xpvuv, xuv_uv)
#define NV_nvx_ix sv_NVp | offsetof(struct xpvnv, xnv_u.xnv_nv)
-#if PERL_VERSION >= 10
#define NV_cop_seq_range_low_ix \
sv_U32p | offsetof(struct xpvnv, xnv_u.xpad_cop_seq.xlow)
#define NV_cop_seq_range_high_ix \
@@ -1367,51 +1282,30 @@ MODULE = B PACKAGE = B::IV
sv_U32p | offsetof(struct xpvnv, xnv_u.xpad_cop_seq.xlow)
#define NV_parent_fakelex_flags_ix \
sv_U32p | offsetof(struct xpvnv, xnv_u.xpad_cop_seq.xhigh)
-#else
-#define NV_cop_seq_range_low_ix \
- sv_NVp | offsetof(struct xpvnv, xnv_nv)
-#define NV_cop_seq_range_high_ix \
- sv_UVp | offsetof(struct xpvnv, xuv_uv)
-#define NV_parent_pad_index_ix \
- sv_NVp | offsetof(struct xpvnv, xnv_nv)
-#define NV_parent_fakelex_flags_ix \
- sv_UVp | offsetof(struct xpvnv, xuv_uv)
-#endif
#define PV_cur_ix sv_STRLENp | offsetof(struct xpv, xpv_cur)
#define PV_len_ix sv_STRLENp | offsetof(struct xpv, xpv_len)
#define PVMG_stash_ix sv_SVp | offsetof(struct xpvmg, xmg_stash)
-#if PERL_VERSION >= 10
-# if PERL_VERSION > 14
+#if PERL_VERSION > 14
# define PVBM_useful_ix sv_I32p | offsetof(struct xpvgv, xnv_u.xbm_s.xbm_useful)
# define PVBM_previous_ix sv_UVp | offsetof(struct xpvuv, xuv_uv)
-# else
+#else
#define PVBM_useful_ix sv_I32p | offsetof(struct xpvgv, xiv_u.xivu_i32)
#define PVBM_previous_ix sv_U32p | offsetof(struct xpvgv, xnv_u.xbm_s.xbm_previous)
-# endif
-#define PVBM_rare_ix sv_U8p | offsetof(struct xpvgv, xnv_u.xbm_s.xbm_rare)
-#else
-#define PVBM_useful_ix sv_I32p | offsetof(struct xpvbm, xbm_useful)
-#define PVBM_previous_ix sv_U16p | offsetof(struct xpvbm, xbm_previous)
-#define PVBM_rare_ix sv_U8p | offsetof(struct xpvbm, xbm_rare)
#endif
+#define PVBM_rare_ix sv_U8p | offsetof(struct xpvgv, xnv_u.xbm_s.xbm_rare)
+
#define PVLV_targoff_ix sv_U32p | offsetof(struct xpvlv, xlv_targoff)
#define PVLV_targlen_ix sv_U32p | offsetof(struct xpvlv, xlv_targlen)
#define PVLV_targ_ix sv_SVp | offsetof(struct xpvlv, xlv_targ)
#define PVLV_type_ix sv_char_p | offsetof(struct xpvlv, xlv_type)
-#if PERL_VERSION >= 10
#define PVGV_stash_ix sv_SVp | offsetof(struct xpvgv, xnv_u.xgv_stash)
#define PVGV_flags_ix sv_STRLENp | offsetof(struct xpvgv, xpv_cur)
#define PVIO_lines_ix sv_IVp | offsetof(struct xpvio, xiv_iv)
-#else
-#define PVGV_stash_ix sv_SVp | offsetof(struct xpvgv, xgv_stash)
-#define PVGV_flags_ix sv_U8p | offsetof(struct xpvgv, xgv_flags)
-#define PVIO_lines_ix sv_IVp | offsetof(struct xpvio, xio_lines)
-#endif
#define PVIO_page_ix sv_IVp | offsetof(struct xpvio, xio_page)
#define PVIO_page_len_ix sv_IVp | offsetof(struct xpvio, xio_page_len)
@@ -1427,13 +1321,13 @@ MODULE = B PACKAGE = B::IV
#define PVAV_max_ix sv_SSize_tp | offsetof(struct xpvav, xav_max)
-#define PVFM_lines_ix sv_IVp | offsetof(struct xpvfm, xfm_lines)
-
#define PVCV_stash_ix sv_SVp | offsetof(struct xpvcv, xcv_stash)
-#define PVCV_gv_ix sv_SVp | offsetof(struct xpvcv, xcv_gv)
+#if PERL_VERSION > 17 || (PERL_VERSION == 17 && PERL_SUBVERSION >= 3)
+# define PVCV_gv_ix sv_SVp | offsetof(struct xpvcv, xcv_gv_u.xcv_gv)
+#else
+# define PVCV_gv_ix sv_SVp | offsetof(struct xpvcv, xcv_gv)
+#endif
#define PVCV_file_ix sv_char_pp | offsetof(struct xpvcv, xcv_file)
-#define PVCV_depth_ix sv_I32p | offsetof(struct xpvcv, xcv_depth)
-#define PVCV_padlist_ix sv_SVp | offsetof(struct xpvcv, xcv_padlist)
#define PVCV_outside_ix sv_SVp | offsetof(struct xpvcv, xcv_outside)
#define PVCV_outside_seq_ix sv_U32p | offsetof(struct xpvcv, xcv_outside_seq)
#define PVCV_flags_ix sv_U16p | offsetof(struct xpvcv, xcv_flags)
@@ -1485,12 +1379,8 @@ IVX(sv)
B::IO::IoTYPE = PVIO_type_ix
B::IO::IoFLAGS = PVIO_flags_ix
B::AV::MAX = PVAV_max_ix
- B::FM::LINES = PVFM_lines_ix
B::CV::STASH = PVCV_stash_ix
- B::CV::GV = PVCV_gv_ix
B::CV::FILE = PVCV_file_ix
- B::CV::DEPTH = PVCV_depth_ix
- B::CV::PADLIST = PVCV_padlist_ix
B::CV::OUTSIDE = PVCV_outside_ix
B::CV::OUTSIDE_SEQ = PVCV_outside_seq_ix
B::CV::CvFLAGS = PVCV_flags_ix
@@ -1663,30 +1553,37 @@ PV(sv)
5.15 and later store the BM table via MAGIC, so the compiler
should handle this just fine without changes if PVBM now
always returns the SvPVX() buffer. */
+#ifdef isREGEXP
+ p = isREGEXP(sv)
+ ? RX_WRAPPED_const((REGEXP*)sv)
+ : SvPVX_const(sv);
+#else
p = SvPVX_const(sv);
+#endif
#ifdef PERL_FBM_TABLE_OFFSET
len = SvCUR(sv) + (SvVALID(sv) ? 256 + PERL_FBM_TABLE_OFFSET : 0);
#else
len = SvCUR(sv);
#endif
} else if (ix) {
+#ifdef isREGEXP
+ p = isREGEXP(sv) ? RX_WRAPPED((REGEXP*)sv) : SvPVX(sv);
+#else
p = SvPVX(sv);
+#endif
len = strlen(p);
} else if (SvPOK(sv)) {
len = SvCUR(sv);
p = SvPVX_const(sv);
utf8 = SvUTF8(sv);
-#if PERL_VERSION < 10
- /* Before 5.10 (well 931b58fb28fa5ca7), PAD_COMPNAME_GEN was stored
- in SvCUR(), which meant we had to attempt this special casing
- to avoid tripping up over variable names in the pads. */
- if((SvLEN(sv) && len >= SvLEN(sv))) {
- /* It claims to be longer than the space allocated for it -
- presumably it's a variable name in the pad */
- len = strlen(p);
- }
-#endif
}
+#ifdef isREGEXP
+ else if (isREGEXP(sv)) {
+ len = SvCUR(sv);
+ p = RX_WRAPPED_const((REGEXP*)sv);
+ utf8 = SvUTF8(sv);
+ }
+#endif
else {
/* XXX for backward compatibility, but should fail */
/* croak( "argument is not SvPOK" ); */
@@ -1777,14 +1674,9 @@ GvNAME(gv)
FILE = 1
B::HV::NAME = 2
CODE:
-#if PERL_VERSION >= 10
ST(0) = sv_2mortal(newSVhek(!ix ? GvNAME_HEK(gv)
: (ix == 1 ? GvFILE_HEK(gv)
: HvNAME_HEK((HV *)gv))));
-#else
- ST(0) = !ix ? newSVpvn_flags(GvNAME(gv), GvNAMELEN(gv), SVs_TEMP)
- : sv_2mortal(newSVpv(ix == 1 ? GvFILE(gv) : HvNAME((HV *)gv), 0))
-#endif
bool
is_empty(gv)
@@ -1793,11 +1685,7 @@ is_empty(gv)
isGV_with_GP = 1
CODE:
if (ix) {
-#if PERL_VERSION >= 9
RETVAL = isGV_with_GP(gv) ? TRUE : FALSE;
-#else
- RETVAL = TRUE; /* In 5.8 and earlier they all are. */
-#endif
} else {
RETVAL = GvGP(gv) == Null(GP*);
}
@@ -1868,13 +1756,6 @@ FILEGV(gv)
MODULE = B PACKAGE = B::IO PREFIX = Io
-#if PERL_VERSION <= 8
-
-short
-IoSUBPROCESS(io)
- B::IO io
-
-#endif
bool
IsSTD(io,name)
@@ -1926,21 +1807,15 @@ AvARRAYelt(av, idx)
else
XPUSHs(make_sv_object(aTHX_ NULL));
-#if PERL_VERSION < 9
-
-#define AvOFF(av) ((XPVAV*)SvANY(av))->xof_off
-IV
-AvOFF(av)
- B::AV av
+MODULE = B PACKAGE = B::FM PREFIX = Fm
-MODULE = B PACKAGE = B::AV
+#undef FmLINES
+#define FmLINES(sv) 0
-U8
-AvFLAGS(av)
- B::AV av
-
-#endif
+IV
+FmLINES(form)
+ B::FM form
MODULE = B PACKAGE = B::CV PREFIX = Cv
@@ -1957,6 +1832,27 @@ CvSTART(cv)
PUSHs(make_op_object(aTHX_ CvISXSUB(cv) ? NULL
: ix ? CvROOT(cv) : CvSTART(cv)));
+I32
+CvDEPTH(cv)
+ B::CV cv
+
+#ifdef PadlistARRAY
+
+B::PADLIST
+CvPADLIST(cv)
+ B::CV cv
+
+#else
+
+B::AV
+CvPADLIST(cv)
+ B::CV cv
+ PPCODE:
+ PUSHs(make_sv_object(aTHX_ (SV *)CvPADLIST(cv)));
+
+
+#endif
+
void
CvXSUB(cv)
B::CV cv
@@ -1976,6 +1872,24 @@ const_sv(cv)
PPCODE:
PUSHs(make_sv_object(aTHX_ (SV *)cv_const_sv(cv)));
+void
+GV(cv)
+ B::CV cv
+ CODE:
+ ST(0) = make_sv_object(aTHX_ (SV*)CvGV(cv));
+
+#if PERL_VERSION > 17
+
+SV *
+NAME_HEK(cv)
+ B::CV cv
+ CODE:
+ RETVAL = CvNAMED(cv) ? newSVhek(CvNAME_HEK(cv)) : &PL_sv_undef;
+ OUTPUT:
+ RETVAL
+
+#endif
+
MODULE = B PACKAGE = B::HV PREFIX = Hv
STRLEN
@@ -1986,16 +1900,6 @@ I32
HvRITER(hv)
B::HV hv
-#if PERL_VERSION < 9
-
-B::PMOP
-HvPMROOT(hv)
- B::HV hv
- PPCODE:
- PUSHs(make_op_object(aTHX_ HvPMROOT(hv)));
-
-#endif
-
void
HvARRAY(hv)
B::HV hv
@@ -2028,8 +1932,6 @@ HeHASH(he)
MODULE = B PACKAGE = B::RHE
-#if PERL_VERSION >= 9
-
SV*
HASH(h)
B::RHE h
@@ -2038,4 +1940,44 @@ HASH(h)
OUTPUT:
RETVAL
+
+#ifdef PadlistARRAY
+
+MODULE = B PACKAGE = B::PADLIST PREFIX = Padlist
+
+SSize_t
+PadlistMAX(padlist)
+ B::PADLIST padlist
+
+void
+PadlistARRAY(padlist)
+ B::PADLIST padlist
+ PPCODE:
+ if (PadlistMAX(padlist) >= 0) {
+ PAD **padp = PadlistARRAY(padlist);
+ PADOFFSET i;
+ for (i = 0; i <= PadlistMAX(padlist); i++)
+ XPUSHs(make_sv_object(aTHX_ (SV *)padp[i]));
+ }
+
+void
+PadlistARRAYelt(padlist, idx)
+ B::PADLIST padlist
+ PADOFFSET idx
+ PPCODE:
+ if (PadlistMAX(padlist) >= 0
+ && idx <= PadlistMAX(padlist))
+ XPUSHs(make_sv_object(aTHX_
+ (SV *)PadlistARRAY(padlist)[idx]));
+ else
+ XPUSHs(make_sv_object(aTHX_ NULL));
+
+U32
+PadlistREFCNT(padlist)
+ B::PADLIST padlist
+ CODE:
+ RETVAL = PadlistREFCNT(padlist);
+ OUTPUT:
+ RETVAL
+
#endif
diff --git a/gnu/usr.bin/perl/ext/B/B/Xref.pm b/gnu/usr.bin/perl/ext/B/B/Xref.pm
index f3a362c3f6a..8beb243f71f 100644
--- a/gnu/usr.bin/perl/ext/B/B/Xref.pm
+++ b/gnu/usr.bin/perl/ext/B/B/Xref.pm
@@ -1,6 +1,6 @@
package B::Xref;
-our $VERSION = '1.03';
+our $VERSION = '1.05';
=head1 NAME
@@ -192,7 +192,7 @@ sub load_pad {
my $padlist = shift;
my ($namelistav, $vallistav, @namelist, $ix);
@pad = ();
- return if class($padlist) eq "SPECIAL";
+ return if class($padlist) =~ '^(?:SPECIAL|NULL)\z';
($namelistav,$vallistav) = $padlist->ARRAY;
@namelist = $namelistav->ARRAY;
for ($ix = 1; $ix < @namelist; $ix++) {
@@ -275,6 +275,15 @@ sub pp_nextstate {
$top = UNKNOWN;
}
+sub pp_padrange {
+ my $op = shift;
+ my $count = $op->private & 127;
+ for my $i (0..$count-1) {
+ $top = $pad[$op->targ + $i];
+ process($top, $op->private & OPpLVAL_INTRO ? "intro" : "used");
+ }
+}
+
sub pp_padsv {
my $op = shift;
$top = $pad[$op->targ];
diff --git a/gnu/usr.bin/perl/ext/B/Makefile.PL b/gnu/usr.bin/perl/ext/B/Makefile.PL
index f3d59acceb1..0a27e85903d 100644
--- a/gnu/usr.bin/perl/ext/B/Makefile.PL
+++ b/gnu/usr.bin/perl/ext/B/Makefile.PL
@@ -20,38 +20,23 @@ if ($core) {
$headerpath = File::Spec->catdir($Config::Config{archlibexp}, "CORE");
}
-my @names = qw(CVf_ANON CVf_CLONE CVf_CLONED CVf_CONST CVf_LVALUE CVf_METHOD
- CVf_NODEBUG CVf_UNIQUE CVf_WEAKOUTSIDE
- GVf_IMPORTED_AV GVf_IMPORTED_CV GVf_IMPORTED_HV GVf_IMPORTED_SV
- HEf_SVKEY
+my @names = qw(HEf_SVKEY
SVTYPEMASK SVt_PVGV SVt_PVHV
- SVf_FAKE SVf_IOK SVf_IVisUV SVf_NOK SVf_POK SVf_READONLY
- SVf_ROK SVp_IOK SVp_NOK SVp_POK SVpad_OUR SVs_RMG SVs_SMG
PAD_FAKELEX_ANON PAD_FAKELEX_MULTI);
-if ($] >= 5.009) {
- push @names, 'CVf_ISXSUB';
-} else {
- # Constant not present after 5.8.x
- push @names, 'AVf_REAL';
- # This is only present in 5.10, but it's useful to B::Deparse to be able
- # to import a dummy value from B
- push @names, {name=>"OPpPAD_STATE", default=>["IV", "0"]};
-}
-
-if ($] < 5.011) {
- # Constant not present after 5.10.x
- push @names, 'CVf_LOCKED';
-}
# First element in each tuple is the file; second is a regex snippet
# giving the prefix to limit the names of symbols to define that come
# from that file. If none, all symbols will be defined whose values
# match the pattern below.
-foreach my $tuple (['op_reg_common.h','(?:(?:RXf_)?PMf_)'],
- ['op.h'],
- ['cop.h'],
- ['regexp.h','RXf_']) {
+foreach my $tuple (['cop.h'],
+ ['cv.h', 'CVf'],
+ ['gv.h', 'GVf'],
+ ['op.h'],
+ ['op_reg_common.h','(?:(?:RXf_)?PMf_)'],
+ ['regexp.h','RXf_'],
+ ['sv.h', 'SV(?:[fps]|pad)_'],
+ ) {
my $file = $tuple->[0];
my $pfx = $tuple->[1] || '';
my $path = File::Spec->catfile($headerpath, $file);
diff --git a/gnu/usr.bin/perl/ext/B/t/OptreeCheck.pm b/gnu/usr.bin/perl/ext/B/t/OptreeCheck.pm
index 8cfc5b61ca9..45523133a3d 100644
--- a/gnu/usr.bin/perl/ext/B/t/OptreeCheck.pm
+++ b/gnu/usr.bin/perl/ext/B/t/OptreeCheck.pm
@@ -5,11 +5,11 @@ use warnings;
use vars qw($TODO $Level $using_open);
require "test.pl";
-our $VERSION = '0.07';
+our $VERSION = '0.09';
# now export checkOptree, and those test.pl functions used by tests
our @EXPORT = qw( checkOptree plan skip skip_all pass is like unlike
- require_ok runperl);
+ require_ok runperl tempfile);
# The hints flags will differ if ${^OPEN} is set.
@@ -135,10 +135,10 @@ results.
=head2 getRendering
-getRendering() runs code or prog through B::Concise, and captures its
-rendering. Errors emitted during rendering are checked against
-expected errors, and are reported as diagnostics by default, or as
-failures if 'report=fail' cmdline-option is given.
+getRendering() runs code or prog or progfile through B::Concise, and
+captures its rendering. Errors emitted during rendering are checked
+against expected errors, and are reported as diagnostics by default,
+or as failures if 'report=fail' cmdline-option is given.
prog is run in a sub-shell, with $bcopts passed through. This is the way
to run code intended for main. The code arg in contrast, is always a
@@ -180,9 +180,9 @@ If name property is not provided, it is synthesized from these params:
bcopts, note, prog, code. This is more convenient than trying to do
it manually.
-=head2 code or prog
+=head2 code or prog or progfile
-Either code or prog must be present.
+Either code or prog or progfile must be present.
=head2 prog => $perl_source_string
@@ -191,6 +191,11 @@ via test.pl:runperl, and through B::Concise like so:
'./perl -w -MO=Concise,$bcopts_massaged -e $src'
+=head2 progfile => $perl_script
+
+progfile => $file provides a file containing a snippet of code which is
+run as per the prog => $src example above.
+
=head2 code => $perl_source_string || CODEREF
The $code arg is passed to B::Concise::compile(), and run in-process.
@@ -207,6 +212,10 @@ sampled from known-ok threaded and un-threaded bleadperl (5.9.1) builds.
They're both required, and the correct one is selected for the platform
being tested, and saved into the synthesized property B<wanted>.
+Individual sample lines may be suffixed with whitespace followed
+by (<|<=|==|>=|>)5.nnnn to select that line only for the listed perl
+version; the whitespace and conditional are stripped.
+
=head2 bcopts => $bcopts || [ @bcopts ]
When getRendering() runs, it passes bcopts into B::Concise::compile().
@@ -214,8 +223,8 @@ The bcopts arg can be a single string, or an array of strings.
=head2 errs => $err_str_regex || [ @err_str_regexs ]
-getRendering() processes the code or prog arg under warnings, and both
-parsing and optree-traversal errors are collected. These are
+getRendering() processes the code or prog or progfile arg under warnings,
+and both parsing and optree-traversal errors are collected. These are
validated against the one or more errors you specify.
=head1 testcase modifier properties
@@ -404,7 +413,14 @@ sub checkOptree {
print "checkOptree args: ",mydumper($tc) if $tc->{dump};
SKIP: {
- skip("$tc->{skip} $tc->{name}", 1) if $tc->{skip};
+ if ($tc->{skip}) {
+ skip("$tc->{skip} $tc->{name}",
+ ($gOpts{selftest}
+ ? 1
+ : 1 + @{$modes{$gOpts{testmode}}}
+ )
+ );
+ }
return runSelftest($tc) if $gOpts{selftest};
@@ -463,8 +479,8 @@ sub label {
sub getRendering {
my $tc = shift;
- fail("getRendering: code or prog is required")
- unless $tc->{code} or $tc->{prog};
+ fail("getRendering: code or prog or progfile is required")
+ unless $tc->{code} or $tc->{prog} or $tc->{progfile};
my @opts = get_bcopts($tc);
my $rendering = ''; # suppress "Use of uninitialized value in open"
@@ -475,6 +491,10 @@ sub getRendering {
$rendering = runperl( switches => ['-w',join(',',"-MO=Concise",@opts)],
prog => $tc->{prog}, stderr => 1,
); # verbose => 1);
+ } elsif ($tc->{progfile}) {
+ $rendering = runperl( switches => ['-w',join(',',"-MO=Concise",@opts)],
+ progfile => $tc->{progfile}, stderr => 1,
+ ); # verbose => 1);
} else {
my $code = $tc->{code};
unless (ref $code eq 'CODE') {
@@ -619,14 +639,24 @@ sub mkCheckRex {
$str =~ s/^\# //mg; # ease cut-paste testcase authoring
- if ($] < 5.009) {
- # add 5.8 private flags, which bleadperl (5.9.1) doesn't have/use/render
- # works because it adds no wildcards, which are butchered below..
- $str =~ s|(mapstart l?K\*?)|$1/2|mg;
- $str =~ s|(grepstart l?K\*?)|$1/2|msg;
- $str =~ s|(mapwhile.*? l?K)|$1/1|msg;
- $str =~ s|(grepwhile.*? l?K)|$1/1|msg;
- }
+ # strip out conditional lines
+
+ $str =~ s{^(.*?)\s+(<|<=|==|>=|>)\s*(5\.\d+)\ *\n}
+ {
+ my ($line, $cmp, $version) = ($1,$2,$3);
+ my $repl = "";
+ if ( $cmp eq '<' ? $] < $version
+ : $cmp eq '<=' ? $] <= $version
+ : $cmp eq '==' ? $] == $version
+ : $cmp eq '>=' ? $] >= $version
+ : $cmp eq '>' ? $] > $version
+ : die("bad comparision '$cmp' in string [$str]\n")
+ ) {
+ $repl = "$line\n";
+ }
+ $repl;
+ }gem;
+
$tc->{wantstr} = $str;
# make targ args wild
@@ -663,32 +693,12 @@ sub mkCheckRex {
)
(?:(:>,<,%,\\{) # hints when open.pm is in force
|(:>,<,%)) # (two variations)
- (\ ->[0-9a-z]+)?
+ (\ ->(?:-|[0-9a-z]+))?
$
]
[$1 . ($2 && ':{') . $4]xegm; # change to the hints without open.pm
}
- if ($] < 5.009) {
- # 5.8.x doesn't provide the hints in the OP, which means that
- # B::Concise doesn't show the symbolic hints. So strip all the
- # symbolic hints from the golden results.
- $str =~ s[( # capture
- \(\?:next\|db\)state # the regexp matching next/db state
- .* # all sorts of things follow it
- v # The opening v
- )
- :(?:\\[{*] # \{ or \*
- |[^,\\]) # or other symbols on their own
- (?:,
- (?:\\[{*]
- |[^,\\])
- )* # maybe some more joined with commas
- (\ ->[0-9a-z]+)?
- $
- ]
- [$1$2]xgm; # change to the hints without flags
- }
# don't care about:
$str =~ s/:-?\d+,-?\d+/:-?\\d+,-?\\d+/msg; # FAKE line numbers
diff --git a/gnu/usr.bin/perl/ext/B/t/b.t b/gnu/usr.bin/perl/ext/B/t/b.t
index 71e0538b4d1..cbf9e1f8627 100644
--- a/gnu/usr.bin/perl/ext/B/t/b.t
+++ b/gnu/usr.bin/perl/ext/B/t/b.t
@@ -218,8 +218,12 @@ is(B::opnumber("pp_null"), 0, "Testing opnumber with opname (pp_null)");
like($hash, qr/\A0x[0-9a-f]+\z/, "Testing B::hash(\"wibble\")");
unlike($hash, qr/\A0x0+\z/, "Testing B::hash(\"wibble\")");
- like(B::hash("\0" x $_), qr/\A0x0+\z/, "Testing B::hash(\"0\" x $_)")
- for 0..19;
+ SKIP: {
+ skip "Nulls don't hash to the same bucket regardless of length with this PERL_HASH implementation", 20
+ if B::hash("") ne B::hash("\0" x 19);
+ like(B::hash("\0" x $_), qr/\A0x0+\z/, "Testing B::hash(\"0\" x $_)")
+ for 0..19;
+ }
$hash = eval {B::hash(chr 256)};
is($hash, undef, "B::hash() refuses non-octets");
@@ -268,7 +272,8 @@ is(B::opnumber("pp_null"), 0, "Testing opnumber with opname (pp_null)");
is(B::class(bless {}, "Wibble::Bibble"), "Bibble", "Testing B::class()");
is(B::cast_I32(3.14), 3, "Testing B::cast_I32()");
-is(B::opnumber("chop"), 39, "Testing opnumber with opname (chop)");
+is(B::opnumber("chop"), $] >= 5.015 ? 39 : 38,
+ "Testing opnumber with opname (chop)");
{
no warnings 'once';
@@ -277,16 +282,7 @@ is(B::opnumber("chop"), 39, "Testing opnumber with opname (chop)");
ok( $sg < B::sub_generation, "sub_generation increments" );
}
-{
- my $ag = B::amagic_generation();
- {
-
- package Whatever;
- require overload;
- overload->import( '""' => sub {"What? You want more?!"} );
- }
- ok( $ag < B::amagic_generation, "amagic_generation increments" );
-}
+like( B::amagic_generation, qr/^\d+\z/, "amagic_generation" );
is(B::svref_2object(sub {})->ROOT->ppaddr, 'PL_ppaddr[OP_LEAVESUB]',
'OP->ppaddr');
@@ -304,4 +300,119 @@ foo
can_ok $f, 'LINES';
}
+my $sub1 = sub {die};
+{ no warnings 'once'; no strict; *Peel:: = *{"Pe\0e\x{142}::"} }
+my $sub2 = eval 'package Peel; sub {die}';
+my $cop = B::svref_2object($sub1)->ROOT->first->first;
+my $bobby = B::svref_2object($sub2)->ROOT->first->first;
+is $cop->stash->object_2svref, \%main::, 'COP->stash';
+is $cop->stashpv, 'main', 'COP->stashpv';
+
+SKIP: {
+ skip "no nulls in packages before 5.17", 1 if $] < 5.017;
+ is $bobby->stashpv, "Pe\0e\x{142}", 'COP->stashpv with utf8 and nulls';
+}
+
+SKIP: {
+ skip "no stashoff", 2 if $] < 5.017 || !$Config::Config{useithreads};
+ like $cop->stashoff, qr/^[1-9]\d*\z/a, 'COP->stashoff';
+ isnt $cop->stashoff, $bobby->stashoff,
+ 'different COP->stashoff for different stashes';
+}
+
+
+# Test $B::overlay
+{
+ my $methods = {
+ BINOP => [ qw(last) ],
+ COP => [ qw(arybase cop_seq file filegv hints hints_hash io
+ label line stash stashpv
+ stashoff warnings) ],
+ LISTOP => [ qw(children) ],
+ LOGOP => [ qw(other) ],
+ LOOP => [ qw(lastop nextop redoop) ],
+ OP => [ qw(desc flags name next opt ppaddr private sibling
+ size spare targ type) ],
+ PADOP => [ qw(gv padix sv) ],
+ PMOP => [ qw(code_list pmflags pmoffset pmreplroot pmreplstart pmstash pmstashpv precomp reflags) ],
+ PVOP => [ qw(pv) ],
+ SVOP => [ qw(gv sv) ],
+ UNOP => [ qw(first) ],
+ };
+
+ my $overlay = {};
+ my $op = B::svref_2object(sub { my $x = 1 })->ROOT;
+
+ for my $class (sort keys %$methods) {
+ for my $meth (@{$methods->{$class}}) {
+ my $full = "B::${class}::$meth";
+ die "Duplicate method '$full'\n"
+ if grep $_ eq $full, @{$overlay->{$meth}};
+ push @{$overlay->{$meth}}, "B::${class}::$meth";
+ }
+ }
+
+ {
+ local $B::overlay; # suppress 'used once' warning
+ local $B::overlay = { $$op => $overlay };
+
+ for my $class (sort keys %$methods) {
+ bless $op, "B::$class"; # naughty
+ for my $meth (@{$methods->{$class}}) {
+ if ($op->can($meth)) {
+ my $list = $op->$meth;
+ ok(defined $list
+ && ref($list) eq "ARRAY"
+ && grep($_ eq "B::${class}::$meth", @$list),
+ "overlay: B::$class $meth");
+ }
+ else {
+ pass("overlay: B::$class $meth (skipped; no method)");
+ }
+ }
+ }
+ }
+ # B::overlay should be disabled again here
+ is($op->name, "leavesub", "overlay: orig name");
+}
+
+{ # [perl #118525]
+ {
+ sub foo {}
+ my $cv = B::svref_2object(\&foo);
+ ok($cv, "make a B::CV from a non-anon sub reference");
+ isa_ok($cv, "B::CV");
+ my $gv = $cv->GV;
+ ok($gv, "we get a GV from a GV on a normal sub");
+ isa_ok($gv, "B::GV");
+ is($gv->NAME, "foo", "check the GV name");
+ SKIP:
+ { # do we need these version checks?
+ skip "no HEK before 5.18", 1 if $] < 5.018;
+ is($cv->NAME_HEK, undef, "no hek for a global sub");
+ }
+ }
+
+SKIP:
+ {
+ skip "no HEK before 5.18", 4 if $] < 5.018;
+ eval <<'EOS'
+ {
+ use feature 'lexical_subs';
+ no warnings 'experimental::lexical_subs';
+ my sub bar {};
+ my $cv = B::svref_2object(\&bar);
+ ok($cv, "make a B::CV from a lexical sub reference");
+ isa_ok($cv, "B::CV");
+ my $gv = $cv->GV;
+ isa_ok($gv, "B::SPECIAL", "GV on a lexical sub");
+ my $hek = $cv->NAME_HEK;
+ is($hek, "bar", "check the NAME_HEK");
+ }
+ 1;
+EOS
+ or die "lexical_subs test failed to compile: $@";
+ }
+}
+
done_testing();
diff --git a/gnu/usr.bin/perl/ext/B/t/concise-xs.t b/gnu/usr.bin/perl/ext/B/t/concise-xs.t
index efd0cf7788d..4ababdebc0a 100755
--- a/gnu/usr.bin/perl/ext/B/t/concise-xs.t
+++ b/gnu/usr.bin/perl/ext/B/t/concise-xs.t
@@ -127,8 +127,10 @@ my $testpkgs = {
Digest::MD5 => { perl => [qw/ import /],
dflt => 'XS' },
- Data::Dumper => { XS => [qw/ bootstrap Dumpxs _vstring /],
- constant => ['_bad_vsmg'],
+ Data::Dumper => { XS => [qw/ bootstrap Dumpxs /,
+ $] >= 5.015 ? qw/_vstring / : () ],
+ $] >= 5.015
+ ? (constant => ['_bad_vsmg']) : (),
dflt => 'perl' },
B => {
dflt => 'constant', # all but 47/297
@@ -146,7 +148,7 @@ my $testpkgs = {
formfeed end_av dowarn diehook defstash curstash
cstring comppadlist check_av cchar cast_I32 bootstrap
begin_av amagic_generation sub_generation address
- ), $] > 5.009 ? ('unitcheck_av') : ()],
+ unitcheck_av) ],
},
B::Deparse => { dflt => 'perl', # 236 functions
@@ -156,7 +158,6 @@ my $testpkgs = {
constant => [qw/ ASSIGN CVf_LVALUE
CVf_METHOD LIST_CONTEXT OP_CONST OP_LIST OP_RV2SV
- OP_GLOB
OP_STRINGIFY OPf_KIDS OPf_MOD OPf_REF OPf_SPECIAL
OPf_STACKED OPf_WANT OPf_WANT_LIST OPf_WANT_SCALAR
OPf_WANT_VOID OPpCONST_BARE OPpCONST_NOVER
@@ -166,12 +167,14 @@ my $testpkgs = {
OPpSORT_REVERSE OPpREVERSE_INPLACE OPpTARGET_MY
OPpTRANS_COMPLEMENT OPpTRANS_DELETE OPpTRANS_SQUASH
PMf_CONTINUE PMf_EVAL PMf_EXTENDED PMf_FOLD PMf_GLOBAL
- PMf_KEEP PMf_NONDESTRUCT PMf_SKIPWHITE RXf_PMf_CHARSET
- PMf_MULTILINE PMf_ONCE PMf_SINGLELINE RXf_PMf_KEEPCOPY
+ PMf_KEEP PMf_NONDESTRUCT
+ PMf_MULTILINE PMf_ONCE PMf_SINGLELINE
POSTFIX SVf_FAKE SVf_IOK SVf_NOK SVf_POK SVf_ROK
SVpad_OUR SVs_RMG SVs_SMG SWAP_CHILDREN OPpPAD_STATE
- OPpCONST_ARYBASE OPpEVAL_BYTES OPpSUBSTR_REPL_FIRST
- /, $] > 5.009 ? ('RXf_SKIPWHITE') : ('PMf_SKIPWHITE'),
+ OPpCONST_ARYBASE RXf_SKIPWHITE/,
+ $] >= 5.015 ? qw(
+ OP_GLOB PMf_SKIPWHITE RXf_PMf_CHARSET RXf_PMf_KEEPCOPY
+ OPpEVAL_BYTES OPpSUBSTR_REPL_FIRST) : (),
'CVf_LOCKED', # This ends up as a constant, pre or post 5.10
],
},
@@ -187,8 +190,11 @@ my $testpkgs = {
WSTOPSIG WTERMSIG/,
'int_macro_int', # Removed in POSIX 1.16
],
- perl => [qw/ import load_imports croak usage printf sprintf
- perror AUTOLOAD /],
+ perl => [qw/ import croak AUTOLOAD /,
+ $] >= 5.015
+ ? qw/load_imports usage printf sprintf perror/
+ : (),
+ ],
XS => [qw/ write wctomb wcstombs uname tzset tzname
ttyname tmpnam times tcsetpgrp tcsendbreak
@@ -205,8 +211,8 @@ my $testpkgs = {
fmod floor dup2 dup difftime cuserid ctime
ctermid cosh constant close clock ceil
bootstrap atan asin asctime acos access abort
- _exit sleep
- /],
+ _exit
+ /, $] >= 5.015 ? ('sleep') : () ],
},
IO::Socket => { dflt => 'constant', # 157/190
@@ -218,7 +224,7 @@ my $testpkgs = {
new listen import getsockopt croak
connected connect configure confess close
carp bind atmark accept sockaddr_in6
- /, $] > 5.009 ? ('blocking') : () ],
+ blocking/ ],
XS => [qw/ unpack_sockaddr_un unpack_sockaddr_in
sockatmark sockaddr_family pack_sockaddr_un
@@ -251,6 +257,7 @@ EODIE
if (%opts) {
require Data::Dumper;
Data::Dumper->import('Dumper');
+ { my $x = \*Data::Dumper::Sortkeys } # shut up 'used once' warning
$Data::Dumper::Sortkeys = 1;
}
my @argpkgs = @ARGV;
@@ -353,6 +360,7 @@ sub corecheck {
warn "Module::CoreList not available on $]\n";
return;
}
+ { my $x = \*Module::CoreList::version } # shut up 'used once' warning
my $mods = $Module::CoreList::version{'5.009002'};
$mods = [ sort keys %$mods ];
print Dumper($mods);
@@ -364,6 +372,7 @@ sub corecheck {
END {
if ($opts{c}) {
+ { my $x = \*Data::Dumper::Indent } # shut up 'used once' warning
$Data::Dumper::Indent = 1;
print "Corrections: ", Dumper(\%report);
diff --git a/gnu/usr.bin/perl/ext/B/t/concise.t b/gnu/usr.bin/perl/ext/B/t/concise.t
index faff8a36de9..ac38bfda1fb 100644
--- a/gnu/usr.bin/perl/ext/B/t/concise.t
+++ b/gnu/usr.bin/perl/ext/B/t/concise.t
@@ -10,7 +10,7 @@ BEGIN {
require 'test.pl'; # we use runperl from 'test.pl', so can't use Test::More
}
-plan tests => 159;
+plan tests => 161;
require_ok("B::Concise");
@@ -448,4 +448,18 @@ ok index $out=~s/\r\n/\n/gr=~s/gvsv\(\*_\)/gvsv[*_]/r, <<'end'=~s/\r\n/\n/gr =>>
`-ex-rv2sv---<4>gvsv[*_]
end
+# -nobanner
+$out =
+ runperl(
+ switches => ["-MO=Concise,-nobanner,foo"], prog=>'sub foo{}', stderr => 1
+ );
+unlike $out, 'main::foo', '-nobanner';
+
+# glob
+$out =
+ runperl(
+ switches => ["-MO=Concise"], prog=>'<.>', stderr => 1
+ );
+like $out, '\*<none>::', '<.>';
+
__END__
diff --git a/gnu/usr.bin/perl/ext/B/t/f_map.t b/gnu/usr.bin/perl/ext/B/t/f_map.t
index 2fa2ec95eba..b09f3be8bd2 100755
--- a/gnu/usr.bin/perl/ext/B/t/f_map.t
+++ b/gnu/usr.bin/perl/ext/B/t/f_map.t
@@ -95,7 +95,8 @@ checkOptree(note => q{},
# 3 <0> pushmark s
# 4 <#> gv[*array] s
# 5 <1> rv2av[t8] lKM/1
-# 6 <@> mapstart lK*
+# 6 <@> mapstart lK* < 5.017002
+# 6 <@> mapstart lK >=5.017002
# 7 <|> mapwhile(other->8)[t9] lK
# 8 <0> enter l
# 9 <;> nextstate(main 475 (eval 10):1) v:{
@@ -119,7 +120,8 @@ EOT_EOT
# 3 <0> pushmark s
# 4 <$> gv(*array) s
# 5 <1> rv2av[t3] lKM/1
-# 6 <@> mapstart lK*
+# 6 <@> mapstart lK* < 5.017002
+# 6 <@> mapstart lK >=5.017002
# 7 <|> mapwhile(other->8)[t4] lK
# 8 <0> enter l
# 9 <;> nextstate(main 559 (eval 15):1) v:{
@@ -239,7 +241,8 @@ checkOptree(note => q{},
# 3 <0> pushmark s
# 4 <#> gv[*array] s
# 5 <1> rv2av[t7] lKM/1
-# 6 <@> mapstart lK*
+# 6 <@> mapstart lK* < 5.017002
+# 6 <@> mapstart lK >=5.017002
# 7 <|> mapwhile(other->8)[t9] lK
# 8 <0> pushmark s
# 9 <#> gvsv[*_] s
@@ -247,7 +250,7 @@ checkOptree(note => q{},
# b <@> stringify[t5] sK/1
# c <$> const[IV 1] s
# d <@> list lK
-# - <@> scope lK
+# - <@> scope lK < 5.017002
# goto 7
# e <0> pushmark s
# f <#> gv[*hash] s
@@ -260,7 +263,8 @@ EOT_EOT
# 3 <0> pushmark s
# 4 <$> gv(*array) s
# 5 <1> rv2av[t4] lKM/1
-# 6 <@> mapstart lK*
+# 6 <@> mapstart lK* < 5.017002
+# 6 <@> mapstart lK >=5.017002
# 7 <|> mapwhile(other->8)[t5] lK
# 8 <0> pushmark s
# 9 <$> gvsv(*_) s
@@ -268,7 +272,7 @@ EOT_EOT
# b <@> stringify[t3] sK/1
# c <$> const(IV 1) s
# d <@> list lK
-# - <@> scope lK
+# - <@> scope lK < 5.017002
# goto 7
# e <0> pushmark s
# f <$> gv(*hash) s
@@ -293,7 +297,8 @@ checkOptree(note => q{},
# 3 <0> pushmark s
# 4 <#> gv[*array] s
# 5 <1> rv2av[t7] lKM/1
-# 6 <@> mapstart lK*
+# 6 <@> mapstart lK* < 5.017002
+# 6 <@> mapstart lK >=5.017002
# 7 <|> mapwhile(other->8)[t9] lK
# 8 <0> pushmark s
# 9 <#> gvsv[*_] s
@@ -301,7 +306,7 @@ checkOptree(note => q{},
# b <@> stringify[t5] sK/1
# c <$> const[IV 1] s
# d <@> list lKP
-# - <@> scope lK
+# - <@> scope lK < 5.017002
# goto 7
# e <0> pushmark s
# f <#> gv[*hash] s
@@ -314,7 +319,8 @@ EOT_EOT
# 3 <0> pushmark s
# 4 <$> gv(*array) s
# 5 <1> rv2av[t4] lKM/1
-# 6 <@> mapstart lK*
+# 6 <@> mapstart lK* < 5.017002
+# 6 <@> mapstart lK >=5.017002
# 7 <|> mapwhile(other->8)[t5] lK
# 8 <0> pushmark s
# 9 <$> gvsv(*_) s
@@ -322,7 +328,7 @@ EOT_EOT
# b <@> stringify[t3] sK/1
# c <$> const(IV 1) s
# d <@> list lKP
-# - <@> scope lK
+# - <@> scope lK < 5.017002
# goto 7
# e <0> pushmark s
# f <$> gv(*hash) s
@@ -347,14 +353,15 @@ checkOptree(note => q{},
# 3 <0> pushmark s
# 4 <#> gv[*array] s
# 5 <1> rv2av[t6] lKM/1
-# 6 <@> mapstart lK*
+# 6 <@> mapstart lK* < 5.017002
+# 6 <@> mapstart lK >=5.017002
# 7 <|> mapwhile(other->8)[t8] lK
# 8 <0> pushmark s
# 9 <#> gvsv[*_] s
# a <1> lc[t4] sK/1
# b <$> const[IV 1] s
# c <@> list lK
-# - <@> scope lK
+# - <@> scope lK < 5.017002
# goto 7
# d <0> pushmark s
# e <#> gv[*hash] s
@@ -367,14 +374,15 @@ EOT_EOT
# 3 <0> pushmark s
# 4 <$> gv(*array) s
# 5 <1> rv2av[t3] lKM/1
-# 6 <@> mapstart lK*
+# 6 <@> mapstart lK* < 5.017002
+# 6 <@> mapstart lK >=5.017002
# 7 <|> mapwhile(other->8)[t4] lK
# 8 <0> pushmark s
# 9 <$> gvsv(*_) s
# a <1> lc[t2] sK/1
# b <$> const(IV 1) s
# c <@> list lK
-# - <@> scope lK
+# - <@> scope lK < 5.017002
# goto 7
# d <0> pushmark s
# e <$> gv(*hash) s
diff --git a/gnu/usr.bin/perl/ext/B/t/f_sort.t b/gnu/usr.bin/perl/ext/B/t/f_sort.t
index 58a8cf2eed2..152d882e30c 100755
--- a/gnu/usr.bin/perl/ext/B/t/f_sort.t
+++ b/gnu/usr.bin/perl/ext/B/t/f_sort.t
@@ -500,7 +500,8 @@ checkOptree(name => q{Compound sort/map Expression },
# 5 <0> pushmark s
# 6 <#> gv[*old] s
# 7 <1> rv2av[t19] lKM/1
-# 8 <@> mapstart lK*
+# 8 <@> mapstart lK* < 5.017002
+# 8 <@> mapstart lK >=5.017002
# 9 <|> mapwhile(other->a)[t20] lK
# a <0> enter l
# b <;> nextstate(main 608 (eval 34):2) v:{
@@ -513,14 +514,15 @@ checkOptree(name => q{Compound sort/map Expression },
# i <@> leave lKP
# goto 9
# j <@> sort lKMS*
-# k <@> mapstart lK*
+# k <@> mapstart lK* < 5.017002
+# k <@> mapstart lK >=5.017002
# l <|> mapwhile(other->m)[t26] lK
# m <#> gv[*_] s
# n <1> rv2sv sKM/DREFAV,1
# o <1> rv2av[t4] sKR/1
# p <$> const[IV 0] s
# q <2> aelem sK/2
-# - <@> scope lK
+# - <@> scope lK < 5.017002
# goto l
# r <0> pushmark s
# s <#> gv[*new] s
@@ -535,7 +537,8 @@ EOT_EOT
# 5 <0> pushmark s
# 6 <$> gv(*old) s
# 7 <1> rv2av[t10] lKM/1
-# 8 <@> mapstart lK*
+# 8 <@> mapstart lK* < 5.017002
+# 8 <@> mapstart lK >=5.017002
# 9 <|> mapwhile(other->a)[t11] lK
# a <0> enter l
# b <;> nextstate(main 608 (eval 34):2) v:{
@@ -548,14 +551,15 @@ EOT_EOT
# i <@> leave lKP
# goto 9
# j <@> sort lKMS*
-# k <@> mapstart lK*
+# k <@> mapstart lK* < 5.017002
+# k <@> mapstart lK >=5.017002
# l <|> mapwhile(other->m)[t12] lK
# m <$> gv(*_) s
# n <1> rv2sv sKM/DREFAV,1
# o <1> rv2av[t2] sKR/1
# p <$> const(IV 0) s
# q <2> aelem sK/2
-# - <@> scope lK
+# - <@> scope lK < 5.017002
# goto l
# r <0> pushmark s
# s <$> gv(*new) s
@@ -683,10 +687,6 @@ EOT_EOT
# b <1> leavesub[1 ref] K/REFC,1
EONT_EONT
-if($] < 5.009) {
- # 5.8.x doesn't show the /STABLE flag, so massage the golden results.
- s!/STABLE!!s foreach ($expect, $expect_nt);
-}
checkOptree(note => q{},
bcopts => q{-exec},
@@ -785,12 +785,13 @@ checkOptree(note => q{},
# 4 <0> pushmark s
# 5 <#> gv[*input] s
# 6 <1> rv2av[t9] lKM/1
-# 7 <@> grepstart lK*
+# 7 <@> grepstart lK* < 5.017002
+# 7 <@> grepstart lK >=5.017002
# 8 <|> grepwhile(other->9)[t10] lK
# 9 <#> gvsv[*_] s
# a <#> gvsv[*_] s
# b <2> eq sK/2
-# - <@> scope sK
+# - <@> scope sK < 5.017002
# goto 8
# c <@> sort lK/NUM
# d <0> pushmark s
@@ -805,12 +806,13 @@ EOT_EOT
# 4 <0> pushmark s
# 5 <$> gv(*input) s
# 6 <1> rv2av[t3] lKM/1
-# 7 <@> grepstart lK*
+# 7 <@> grepstart lK* < 5.017002
+# 7 <@> grepstart lK >=5.017002
# 8 <|> grepwhile(other->9)[t4] lK
# 9 <$> gvsv(*_) s
# a <$> gvsv(*_) s
# b <2> eq sK/2
-# - <@> scope sK
+# - <@> scope sK < 5.017002
# goto 8
# c <@> sort lK/NUM
# d <0> pushmark s
@@ -864,12 +866,13 @@ checkOptree(note => q{},
# 3 <0> pushmark s
# 4 <#> gv[*input] s
# 5 <1> rv2av[t7] lKM/1
-# 6 <@> grepstart lK*
+# 6 <@> grepstart lK* < 5.017002
+# 6 <@> grepstart lK >=5.017002
# 7 <|> grepwhile(other->8)[t8] lK
# 8 <#> gvsv[*_] s
# 9 <#> gvsv[*_] s
# a <2> eq sK/2
-# - <@> scope sK
+# - <@> scope sK < 5.017002
# goto 7
# b <@> sort K/NUM
# c <1> leavesub[1 ref] K/REFC,1
@@ -879,12 +882,13 @@ EOT_EOT
# 3 <0> pushmark s
# 4 <$> gv(*input) s
# 5 <1> rv2av[t2] lKM/1
-# 6 <@> grepstart lK*
+# 6 <@> grepstart lK* < 5.017002
+# 6 <@> grepstart lK >=5.017002
# 7 <|> grepwhile(other->8)[t3] lK
# 8 <$> gvsv(*_) s
# 9 <$> gvsv(*_) s
# a <2> eq sK/2
-# - <@> scope sK
+# - <@> scope sK < 5.017002
# goto 7
# b <@> sort K/NUM
# c <1> leavesub[1 ref] K/REFC,1
@@ -937,12 +941,13 @@ checkOptree(note => q{},
# 3 <0> pushmark s
# 4 <#> gv[*input] s
# 5 <1> rv2av[t8] lKM/1
-# 6 <@> grepstart lK*
+# 6 <@> grepstart lK* < 5.017002
+# 6 <@> grepstart lK >=5.017002
# 7 <|> grepwhile(other->8)[t9] lK
# 8 <#> gvsv[*_] s
# 9 <#> gvsv[*_] s
# a <2> eq sK/2
-# - <@> scope sK
+# - <@> scope sK < 5.017002
# goto 7
# b <@> sort sK/NUM
# c <#> gvsv[*s] s
@@ -954,12 +959,13 @@ EOT_EOT
# 3 <0> pushmark s
# 4 <$> gv(*input) s
# 5 <1> rv2av[t2] lKM/1
-# 6 <@> grepstart lK*
+# 6 <@> grepstart lK* < 5.017002
+# 6 <@> grepstart lK >=5.017002
# 7 <|> grepwhile(other->8)[t3] lK
# 8 <$> gvsv(*_) s
# 9 <$> gvsv(*_) s
# a <2> eq sK/2
-# - <@> scope sK
+# - <@> scope sK < 5.017002
# goto 7
# b <@> sort sK/NUM
# c <$> gvsv(*s) s
diff --git a/gnu/usr.bin/perl/ext/B/t/optree_check.t b/gnu/usr.bin/perl/ext/B/t/optree_check.t
index bcbb5549ec1..38ff88b64e9 100755
--- a/gnu/usr.bin/perl/ext/B/t/optree_check.t
+++ b/gnu/usr.bin/perl/ext/B/t/optree_check.t
@@ -26,7 +26,12 @@ cmdline args in 'standard' way across all clients of OptreeCheck.
=cut
-plan tests => 5 + 15 + 12 + 16 * $gOpts{selftest}; # pass()s + $#tests
+plan tests => 11 # REGEX TEST HARNESS SELFTEST
+ + 3 # TEST FATAL ERRS
+ + 11 # TEST -e \$srcCode
+ + 5 # REFTEXT FIXUP TESTS
+ + 5 # CANONICAL B::Concise EXAMPLE
+ + 16 * $gOpts{selftest}; # XXX I don't understand this - DAPM
pass("REGEX TEST HARNESS SELFTEST");
diff --git a/gnu/usr.bin/perl/ext/B/t/optree_constants.t b/gnu/usr.bin/perl/ext/B/t/optree_constants.t
index ebcf042d104..8b292feed3f 100644
--- a/gnu/usr.bin/perl/ext/B/t/optree_constants.t
+++ b/gnu/usr.bin/perl/ext/B/t/optree_constants.t
@@ -49,7 +49,6 @@ my $want = { # expected types, how value renders in-line, todos (maybe)
# these are not inlined, at least not per BC::Concise
#myyes => [ $RV_class, ],
#myno => [ $RV_class, ],
- $] > 5.009 ? (
myaref => [ $RV_class, '\\\\' ],
myfl => [ 'NV', myfl ],
myint => [ 'IV', myint ],
@@ -59,13 +58,6 @@ my $want = { # expected types, how value renders in-line, todos (maybe)
myrex => [ $RV_class, '\\\\' ],
),
myundef => [ 'NULL', ],
- ) : (
- myaref => [ 'PVIV', '' ],
- myfl => [ 'PVNV', myfl ],
- myint => [ 'PVIV', myint ],
- myrex => [ 'PVNV', '' ],
- myundef => [ 'PVIV', ],
- )
};
use constant WEEKDAYS
@@ -110,12 +102,14 @@ for $func (sort keys %$want) {
3 <1> leavesub[2 refs] K/REFC,1 ->(end)
- <\@> lineseq KP ->3
1 <;> dbstate(main 833 (eval 44):1) v ->2
-2 <\$> const[$want->{$func}[0] $want->{$func}[1]] s* ->3
+2 <\$> const[$want->{$func}[0] $want->{$func}[1]] s* ->3 < 5.017002
+2 <\$> const[$want->{$func}[0] $want->{$func}[1]] s*/FOLD ->3 >=5.017002
EOT_EOT
3 <1> leavesub[2 refs] K/REFC,1 ->(end)
- <\@> lineseq KP ->3
1 <;> dbstate(main 833 (eval 44):1) v ->2
-2 <\$> const($want->{$func}[0] $want->{$func}[1]) s* ->3
+2 <\$> const($want->{$func}[0] $want->{$func}[1]) s* ->3 < 5.017002
+2 <\$> const($want->{$func}[0] $want->{$func}[1]) s*/FOLD ->3 >=5.017002
EONT_EONT
}
@@ -143,14 +137,16 @@ checkOptree ( name => 'myyes() as coderef',
# 2 <;> nextstate(main 2 -e:1) v:>,<,%,{ ->3
# 5 <@> print vK ->6
# 3 <0> pushmark s ->4
-# 4 <$> const[SPECIAL sv_yes] s* ->5
+# 4 <$> const[SPECIAL sv_yes] s* ->5 < 5.017002
+# 4 <$> const[SPECIAL sv_yes] s*/FOLD ->5 >=5.017002
EOT_EOT
# 6 <@> leave[1 ref] vKP/REFC ->(end)
# 1 <0> enter ->2
# 2 <;> nextstate(main 2 -e:1) v:>,<,%,{ ->3
# 5 <@> print vK ->6
# 3 <0> pushmark s ->4
-# 4 <$> const(SPECIAL sv_yes) s* ->5
+# 4 <$> const(SPECIAL sv_yes) s* ->5 < 5.017002
+# 4 <$> const(SPECIAL sv_yes) s*/FOLD ->5 >=5.017002
EONT_EONT
@@ -167,14 +163,16 @@ checkOptree ( name => 'myno() as coderef',
# 2 <;> nextstate(main 2 -e:1) v:>,<,%,{ ->3
# 5 <@> print vK ->6
# 3 <0> pushmark s ->4
-# 4 <$> const[SPECIAL sv_no] s* ->5
+# 4 <$> const[SPECIAL sv_no] s* ->5 < 5.017002
+# 4 <$> const[SPECIAL sv_no] s*/FOLD ->5 >=5.017002
EOT_EOT
# 6 <@> leave[1 ref] vKP/REFC ->(end)
# 1 <0> enter ->2
# 2 <;> nextstate(main 2 -e:1) v:>,<,%,{ ->3
# 5 <@> print vK ->6
# 3 <0> pushmark s ->4
-# 4 <$> const(SPECIAL sv_no) s* ->5
+# 4 <$> const(SPECIAL sv_no) s* ->5 < 5.017002
+# 4 <$> const(SPECIAL sv_no) s*/FOLD ->5 >=5.017002
EONT_EONT
@@ -190,10 +188,6 @@ EOT_EOT
# 2 <0> padav[@list:FAKE:m:71] ->3
EONT_EONT
-if($] < 5.009) {
- # 5.8.x doesn't add the m flag to padav
- s/FAKE:m:\d+/FAKE/ foreach ($expect, $expect_nt);
-}
checkOptree ( name => 'constant sub returning list',
code => \&WEEKDAYS,
@@ -212,34 +206,37 @@ my ($expect, $expect_nt) = (<<'EOT_EOT', <<'EONT_EONT');
# 1 <;> nextstate(main 635 optree_constants.t:163) v:>,<,% ->2
# 8 <@> prtf sK ->9
# 2 <0> pushmark sM ->3
-# 3 <$> const[PV "myint %d mystr %s myfl %f pi %f\n"] sM ->4
-# 4 <$> const[IV 42] sM* ->5
-# 5 <$> const[PV "hithere"] sM* ->6
-# 6 <$> const[NV 1.414213] sM* ->7
-# 7 <$> const[NV 3.14159] sM* ->8
+# 3 <$> const[PV "myint %d mystr %s myfl %f pi %f\n"] sM ->4 < 5.017002
+# 4 <$> const[IV 42] sM* ->5 < 5.017002
+# 5 <$> const[PV "hithere"] sM* ->6 < 5.017002
+# 6 <$> const[NV 1.414213] sM* ->7 < 5.017002
+# 7 <$> const[NV 3.14159] sM* ->8 < 5.017002
+# 3 <$> const[PV "myint %d mystr %s myfl %f pi %f\n"] sM/FOLD ->4 >= 5.017002
+# 4 <$> const[IV 42] sM*/FOLD ->5 >=5.017002
+# 5 <$> const[PV "hithere"] sM*/FOLD ->6 >=5.017002
+# 6 <$> const[NV 1.414213] sM*/FOLD ->7 >=5.017002
+# 7 <$> const[NV 3.14159] sM*/FOLD ->8 >=5.017002
EOT_EOT
# 9 <1> leavesub[1 ref] K/REFC,1 ->(end)
# - <@> lineseq KP ->9
# 1 <;> nextstate(main 635 optree_constants.t:163) v:>,<,% ->2
# 8 <@> prtf sK ->9
# 2 <0> pushmark sM ->3
-# 3 <$> const(PV "myint %d mystr %s myfl %f pi %f\n") sM ->4
-# 4 <$> const(IV 42) sM* ->5
-# 5 <$> const(PV "hithere") sM* ->6
-# 6 <$> const(NV 1.414213) sM* ->7
-# 7 <$> const(NV 3.14159) sM* ->8
+# 3 <$> const(PV "myint %d mystr %s myfl %f pi %f\n") sM ->4 < 5.017002
+# 4 <$> const(IV 42) sM* ->5 < 5.017002
+# 5 <$> const(PV "hithere") sM* ->6 < 5.017002
+# 6 <$> const(NV 1.414213) sM* ->7 < 5.017002
+# 7 <$> const(NV 3.14159) sM* ->8 < 5.017002
+# 3 <$> const(PV "myint %d mystr %s myfl %f pi %f\n") sM/FOLD ->4 >= 5.017002
+# 4 <$> const(IV 42) sM*/FOLD ->5 >=5.017002
+# 5 <$> const(PV "hithere") sM*/FOLD ->6 >=5.017002
+# 6 <$> const(NV 1.414213) sM*/FOLD ->7 >=5.017002
+# 7 <$> const(NV 3.14159) sM*/FOLD ->8 >=5.017002
EONT_EONT
if($] < 5.015) {
s/M(?=\*? ->)//g for $expect, $expect_nt;
}
-if($] < 5.009) {
- # 5.8.x's use constant has larger types
- foreach ($expect, $expect_nt) {
- s/IV 42/PV$&/;
- s/NV 1.41/PV$&/;
- }
-}
checkOptree ( name => 'call many in a print statement',
code => \&printem,
@@ -257,14 +254,16 @@ checkOptree ( name => 'arithmetic constant folding in print',
# 1 <;> nextstate(main 937 (eval 53):1) v ->2
# 4 <@> print sK ->5
# 2 <0> pushmark s ->3
-# 3 <$> const[IV 6] s ->4
+# 3 <$> const[IV 6] s ->4 < 5.017002
+# 3 <$> const[IV 6] s/FOLD ->4 >=5.017002
EOT_EOT
# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
# - <@> lineseq KP ->5
# 1 <;> nextstate(main 937 (eval 53):1) v ->2
# 4 <@> print sK ->5
# 2 <0> pushmark s ->3
-# 3 <$> const(IV 6) s ->4
+# 3 <$> const(IV 6) s ->4 < 5.017002
+# 3 <$> const(IV 6) s/FOLD ->4 >=5.017002
EONT_EONT
checkOptree ( name => 'string constant folding in print',
@@ -276,14 +275,16 @@ checkOptree ( name => 'string constant folding in print',
# 1 <;> nextstate(main 942 (eval 55):1) v ->2
# 4 <@> print sK ->5
# 2 <0> pushmark s ->3
-# 3 <$> const[PV "foobar"] s ->4
+# 3 <$> const[PV "foobar"] s ->4 < 5.017002
+# 3 <$> const[PV "foobar"] s/FOLD ->4 >=5.017002
EOT_EOT
# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
# - <@> lineseq KP ->5
# 1 <;> nextstate(main 942 (eval 55):1) v ->2
# 4 <@> print sK ->5
# 2 <0> pushmark s ->3
-# 3 <$> const(PV "foobar") s ->4
+# 3 <$> const(PV "foobar") s ->4 < 5.017002
+# 3 <$> const(PV "foobar") s/FOLD ->4 >=5.017002
EONT_EONT
checkOptree ( name => 'boolean or folding',
@@ -321,7 +322,8 @@ checkOptree ( name => 'lc*,uc*,gt,lt,ge,le,cmp',
# - <@> lineseq KP ->r
# 1 <;> nextstate(main 916 optree_constants.t:307) v:>,<,%,{ ->2
# 4 <2> sassign vKS/2 ->5
-# 2 <$> const[PV "FOO.Bar.low.lOW"] s ->3
+# 2 <$> const[PV "FOO.Bar.low.lOW"] s ->3 < 5.017002
+# 2 <$> const[PV "FOO.Bar.low.lOW"] s/FOLD ->3 >=5.017002
# - <1> ex-rv2sv sKRM*/1 ->4
# 3 <#> gvsv[*s] s ->4
# 5 <;> nextstate(main 916 optree_constants.t:308) v:>,<,%,{ ->6
@@ -345,13 +347,15 @@ checkOptree ( name => 'lc*,uc*,gt,lt,ge,le,cmp',
# m <0> pushmark s ->n
# n <$> const[PV "b-cmp-a"] s ->o
# p <;> nextstate(main 916 optree_constants.t:313) v:>,<,%,{ ->q
-# q <$> const[PVNV 0] s/SHORT ->r
+# q <$> const[PVNV 0] s/SHORT ->r < 5.017002
+# q <$> const[PVNV 0] s/FOLD,SHORT ->r >=5.017002
EOT_EOT
# r <1> leavesub[1 ref] K/REFC,1 ->(end)
# - <@> lineseq KP ->r
# 1 <;> nextstate(main 916 optree_constants.t:307) v:>,<,%,{ ->2
# 4 <2> sassign vKS/2 ->5
-# 2 <$> const(PV "FOO.Bar.low.lOW") s ->3
+# 2 <$> const(PV "FOO.Bar.low.lOW") s ->3 < 5.017002
+# 2 <$> const(PV "FOO.Bar.low.lOW") s/FOLD ->3 >=5.017002
# - <1> ex-rv2sv sKRM*/1 ->4
# 3 <$> gvsv(*s) s ->4
# 5 <;> nextstate(main 916 optree_constants.t:308) v:>,<,%,{ ->6
@@ -375,7 +379,8 @@ EOT_EOT
# m <0> pushmark s ->n
# n <$> const(PV "b-cmp-a") s ->o
# p <;> nextstate(main 916 optree_constants.t:313) v:>,<,%,{ ->q
-# q <$> const(SPECIAL sv_no) s/SHORT ->r
+# q <$> const(SPECIAL sv_no) s/SHORT ->r < 5.017002
+# q <$> const(SPECIAL sv_no) s/FOLD,SHORT ->r >=5.017002
EONT_EONT
checkOptree ( name => 'mixed constant folding, with explicit braces',
@@ -387,14 +392,16 @@ checkOptree ( name => 'mixed constant folding, with explicit braces',
# 1 <;> nextstate(main 977 (eval 28):1) v ->2
# 4 <@> print sK ->5
# 2 <0> pushmark s ->3
-# 3 <$> const[PV "foobar5"] s ->4
+# 3 <$> const[PV "foobar5"] s ->4 < 5.017002
+# 3 <$> const[PV "foobar5"] s/FOLD ->4 >=5.017002
EOT_EOT
# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
# - <@> lineseq KP ->5
# 1 <;> nextstate(main 977 (eval 28):1) v ->2
# 4 <@> print sK ->5
# 2 <0> pushmark s ->3
-# 3 <$> const(PV "foobar5") s ->4
+# 3 <$> const(PV "foobar5") s ->4 < 5.017002
+# 3 <$> const(PV "foobar5") s/FOLD ->4 >=5.017002
EONT_EONT
__END__
diff --git a/gnu/usr.bin/perl/ext/B/t/optree_misc.t b/gnu/usr.bin/perl/ext/B/t/optree_misc.t
index 0af382a69f7..f012a50c853 100644
--- a/gnu/usr.bin/perl/ext/B/t/optree_misc.t
+++ b/gnu/usr.bin/perl/ext/B/t/optree_misc.t
@@ -10,7 +10,7 @@ BEGIN {
}
use OptreeCheck;
use Config;
-plan tests => 6;
+plan tests => 18;
SKIP: {
skip "no perlio in this build", 4 unless $Config::Config{useperlio};
@@ -65,7 +65,8 @@ EONT_EONT
checkOptree ( name => 'PMOP children',
code => sub { $foo =~ s/(a)/$1/ },
strip_open_hints => 1,
- expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
+ ( $] < 5.017002
+ ? (expect => <<'EOT_EOT16', expect_nt => <<'EONT_EONT16')
# 6 <1> leavesub[1 ref] K/REFC,1 ->(end)
# - <@> lineseq KP ->6
# 1 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->2
@@ -75,7 +76,7 @@ checkOptree ( name => 'PMOP children',
# 5 <|> substcont(other->3) sK/1 ->(end)
# - <1> ex-rv2sv sK/1 ->5
# 4 <#> gvsv[*1] s ->5
-EOT_EOT
+EOT_EOT16
# 6 <1> leavesub[1 ref] K/REFC,1 ->(end)
# - <@> lineseq KP ->6
# 1 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->2
@@ -85,6 +86,26 @@ EOT_EOT
# 5 <|> substcont(other->3) sK/1 ->(end)
# - <1> ex-rv2sv sK/1 ->5
# 4 <$> gvsv(*1) s ->5
+EONT_EONT16
+
+ : (expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT')));
+# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->5
+# 1 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->2
+# 4 </> subst(/"(a)"/) KS ->5
+# - <1> ex-rv2sv sKRM/1 ->3
+# 2 <#> gvsv[*foo] s ->3
+# - <1> ex-rv2sv sK/1 ->4
+# 3 <#> gvsv[*1] s ->4
+EOT_EOT
+# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->5
+# 1 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->2
+# 4 </> subst(/"(a)"/) KS ->5
+# - <1> ex-rv2sv sKRM/1 ->3
+# 2 <$> gvsv(*foo) s ->3
+# - <1> ex-rv2sv sK/1 ->4
+# 3 <$> gvsv(*1) s ->4
EONT_EONT
} #skip
@@ -114,12 +135,316 @@ my $nt = <<'EONT_EONT';
# 6 <$> gvsv(*_) s ->7
EONT_EONT
-if ($] < 5.009) {
- $t =~ s/GV /BM /;
- $nt =~ s/GV /BM /;
-}
-
checkOptree ( name => 'index and PVBM',
prog => '$_ = index q(foo), q(foo)',
strip_open_hints => 1,
expect => $t, expect_nt => $nt);
+
+my $tmpfile = tempfile();
+open my $fh, '>', $tmpfile or die "Cannot open $tmpfile: $!";
+print $fh "no warnings;format =\n@<<<\n\$a\n@>>>\n\@b\n.";
+close $fh;
+
+checkOptree ( name => 'formats',
+ bcopts => 'STDOUT',
+ progfile => $tmpfile,
+ strip_open_hints => 1,
+ skip => ($] < 5.017003),
+ expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
+# main::STDOUT (FORMAT):
+# c <1> leavewrite[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->c
+# 1 <;> nextstate(main 1 -:4) v:>,<,% ->2
+# 5 <@> formline vK/2 ->6
+# 2 <0> pushmark s ->3
+# 3 <$> const[PV "@<<<\n"] s ->4
+# - <@> lineseq lK ->5
+# - <0> ex-nextstate v ->4
+# - <1> ex-rv2sv sK/1 ->-
+# 4 <#> gvsv[*a] s ->5
+# 6 <;> nextstate(main 1 -:6) v:>,<,% ->7
+# b <@> formline sK/2 ->c
+# 7 <0> pushmark s ->8
+# 8 <$> const[PV "@>>>\n"] s ->9
+# - <@> lineseq lK ->b
+# - <0> ex-nextstate v ->9
+# a <1> rv2av[t3] lK/1 ->b
+# 9 <#> gv[*b] s ->a
+EOT_EOT
+# main::STDOUT (FORMAT):
+# c <1> leavewrite[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->c
+# 1 <;> nextstate(main 1 -:4) v:>,<,% ->2
+# 5 <@> formline vK/2 ->6
+# 2 <0> pushmark s ->3
+# 3 <$> const(PV "@<<<\n") s ->4
+# - <@> lineseq lK ->5
+# - <0> ex-nextstate v ->4
+# - <1> ex-rv2sv sK/1 ->-
+# 4 <$> gvsv(*a) s ->5
+# 6 <;> nextstate(main 1 -:6) v:>,<,% ->7
+# b <@> formline sK/2 ->c
+# 7 <0> pushmark s ->8
+# 8 <$> const(PV "@>>>\n") s ->9
+# - <@> lineseq lK ->b
+# - <0> ex-nextstate v ->9
+# a <1> rv2av[t3] lK/1 ->b
+# 9 <$> gv(*b) s ->a
+EONT_EONT
+
+checkOptree ( name => 'padrange',
+ code => sub { my ($x,$y); @a = ($x,$y); ($x,$y) = @a },
+ strip_open_hints => 1,
+ skip => ($] < 5.017006),
+ expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
+# f <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->f
+# 1 <;> nextstate(main 1 -e:1) v:>,<,% ->2
+# - <@> list vKP ->3
+# 2 <0> padrange[$x:1,2; $y:1,2] vM/LVINTRO,2 ->3
+# - <0> padsv[$x:1,2] vM/LVINTRO ->-
+# - <0> padsv[$y:1,2] vM/LVINTRO ->-
+# 3 <;> nextstate(main 2 -e:1) v:>,<,% ->4
+# 8 <2> aassign[t4] vKS ->9
+# - <1> ex-list lKP ->5
+# 4 <0> padrange[$x:1,2; $y:1,2] l/2 ->5
+# - <0> padsv[$x:1,2] l ->-
+# - <0> padsv[$y:1,2] l ->-
+# - <1> ex-list lK ->8
+# 5 <0> pushmark s ->6
+# 7 <1> rv2av[t3] lKRM*/1 ->8
+# 6 <#> gv[*a] s ->7
+# 9 <;> nextstate(main 2 -e:1) v:>,<,%,{ ->a
+# e <2> aassign[t6] KS ->f
+# - <1> ex-list lK ->d
+# a <0> pushmark s ->b
+# c <1> rv2av[t5] lK/1 ->d
+# b <#> gv[*a] s ->c
+# - <1> ex-list lKPRM* ->e
+# d <0> padrange[$x:1,2; $y:1,2] lRM/2 ->e
+# - <0> padsv[$x:1,2] lRM* ->-
+# - <0> padsv[$y:1,2] lRM* ->-
+EOT_EOT
+# f <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->f
+# 1 <;> nextstate(main 1 -e:1) v:>,<,% ->2
+# - <@> list vKP ->3
+# 2 <0> padrange[$x:1,2; $y:1,2] vM/LVINTRO,2 ->3
+# - <0> padsv[$x:1,2] vM/LVINTRO ->-
+# - <0> padsv[$y:1,2] vM/LVINTRO ->-
+# 3 <;> nextstate(main 2 -e:1) v:>,<,% ->4
+# 8 <2> aassign[t4] vKS ->9
+# - <1> ex-list lKP ->5
+# 4 <0> padrange[$x:1,2; $y:1,2] l/2 ->5
+# - <0> padsv[$x:1,2] l ->-
+# - <0> padsv[$y:1,2] l ->-
+# - <1> ex-list lK ->8
+# 5 <0> pushmark s ->6
+# 7 <1> rv2av[t3] lKRM*/1 ->8
+# 6 <$> gv(*a) s ->7
+# 9 <;> nextstate(main 2 -e:1) v:>,<,%,{ ->a
+# e <2> aassign[t6] KS ->f
+# - <1> ex-list lK ->d
+# a <0> pushmark s ->b
+# c <1> rv2av[t5] lK/1 ->d
+# b <$> gv(*a) s ->c
+# - <1> ex-list lKPRM* ->e
+# d <0> padrange[$x:1,2; $y:1,2] lRM/2 ->e
+# - <0> padsv[$x:1,2] lRM* ->-
+# - <0> padsv[$y:1,2] lRM* ->-
+EONT_EONT
+
+checkOptree ( name => 'padrange and @_',
+ code => sub { my ($a,$b) = @_;
+ my ($c,$d) = @X::_;
+ package Y;
+ my ($e,$f) = @_;
+ },
+ strip_open_hints => 1,
+ skip => ($] < 5.017006),
+ expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
+# d <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->d
+# 1 <;> nextstate(main 1 p3:1) v:>,<,% ->2
+# 3 <2> aassign[t5] vKS ->4
+# - <1> ex-list lK ->-
+# 2 <0> padrange[$a:1,4; $b:1,4] l*/LVINTRO,2 ->3
+# - <1> rv2av[t4] lK/1 ->-
+# - <#> gv[*_] s ->-
+# - <1> ex-list lKPRM* ->3
+# - <0> pushmark sRM*/LVINTRO ->-
+# - <0> padsv[$a:1,4] lRM*/LVINTRO ->-
+# - <0> padsv[$b:1,4] lRM*/LVINTRO ->-
+# 4 <;> nextstate(main 2 p3:2) v:>,<,% ->5
+# 9 <2> aassign[t10] vKS ->a
+# - <1> ex-list lK ->8
+# 5 <0> pushmark s ->6
+# 7 <1> rv2av[t9] lK/1 ->8
+# 6 <#> gv[*X::_] s ->7
+# - <1> ex-list lKPRM* ->9
+# 8 <0> padrange[$c:2,4; $d:2,4] lRM/LVINTRO,2 ->9
+# - <0> padsv[$c:2,4] lRM*/LVINTRO ->-
+# - <0> padsv[$d:2,4] lRM*/LVINTRO ->-
+# a <;> nextstate(Y 3 p3:4) v:>,<,%,{ ->b
+# c <2> aassign[t15] KS ->d
+# - <1> ex-list lK ->-
+# b <0> padrange[$e:3,4; $f:3,4] l*/LVINTRO,2 ->c
+# - <1> rv2av[t14] lK/1 ->-
+# - <#> gv[*_] s ->-
+# - <1> ex-list lKPRM* ->c
+# - <0> pushmark sRM*/LVINTRO ->-
+# - <0> padsv[$e:3,4] lRM*/LVINTRO ->-
+# - <0> padsv[$f:3,4] lRM*/LVINTRO ->-
+EOT_EOT
+# d <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->d
+# 1 <;> nextstate(main 1 p3:1) v:>,<,% ->2
+# 3 <2> aassign[t5] vKS ->4
+# - <1> ex-list lK ->-
+# 2 <0> padrange[$a:1,4; $b:1,4] l*/LVINTRO,2 ->3
+# - <1> rv2av[t4] lK/1 ->-
+# - <$> gv(*_) s ->-
+# - <1> ex-list lKPRM* ->3
+# - <0> pushmark sRM*/LVINTRO ->-
+# - <0> padsv[$a:1,4] lRM*/LVINTRO ->-
+# - <0> padsv[$b:1,4] lRM*/LVINTRO ->-
+# 4 <;> nextstate(main 2 p3:2) v:>,<,% ->5
+# 9 <2> aassign[t10] vKS ->a
+# - <1> ex-list lK ->8
+# 5 <0> pushmark s ->6
+# 7 <1> rv2av[t9] lK/1 ->8
+# 6 <$> gv(*X::_) s ->7
+# - <1> ex-list lKPRM* ->9
+# 8 <0> padrange[$c:2,4; $d:2,4] lRM/LVINTRO,2 ->9
+# - <0> padsv[$c:2,4] lRM*/LVINTRO ->-
+# - <0> padsv[$d:2,4] lRM*/LVINTRO ->-
+# a <;> nextstate(Y 3 p3:4) v:>,<,%,{ ->b
+# c <2> aassign[t15] KS ->d
+# - <1> ex-list lK ->-
+# b <0> padrange[$e:3,4; $f:3,4] l*/LVINTRO,2 ->c
+# - <1> rv2av[t14] lK/1 ->-
+# - <$> gv(*_) s ->-
+# - <1> ex-list lKPRM* ->c
+# - <0> pushmark sRM*/LVINTRO ->-
+# - <0> padsv[$e:3,4] lRM*/LVINTRO ->-
+# - <0> padsv[$f:3,4] lRM*/LVINTRO ->-
+EONT_EONT
+
+checkOptree ( name => 'consolidate padranges',
+ code => sub { my ($a,$b); my ($c,$d); 1 },
+ strip_open_hints => 1,
+ skip => ($] < 5.017006),
+ expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
+# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->5
+# 1 <;> nextstate(main 900 optree_misc.t:334) v:>,<,% ->2
+# - <@> list vKP ->-
+# 2 <0> padrange[$a:900,902; $b:900,902; $c:901,902; $d:901,902] vM/LVINTRO,4 ->3
+# - <0> padsv[$a:900,902] vM/LVINTRO ->-
+# - <0> padsv[$b:900,902] vM/LVINTRO ->-
+# - <;> nextstate(main 901 optree_misc.t:334) v:>,<,% ->-
+# - <@> list vKP ->3
+# - <0> pushmark vM/LVINTRO ->-
+# - <0> padsv[$c:901,902] vM/LVINTRO ->-
+# - <0> padsv[$d:901,902] vM/LVINTRO ->-
+# 3 <;> nextstate(main 902 optree_misc.t:334) v:>,<,%,{ ->4
+# 4 <$> const[IV 1] s ->5
+EOT_EOT
+# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->5
+# 1 <;> nextstate(main 900 optree_misc.t:334) v:>,<,% ->2
+# - <@> list vKP ->-
+# 2 <0> padrange[$a:900,902; $b:900,902; $c:901,902; $d:901,902] vM/LVINTRO,4 ->3
+# - <0> padsv[$a:900,902] vM/LVINTRO ->-
+# - <0> padsv[$b:900,902] vM/LVINTRO ->-
+# - <;> nextstate(main 901 optree_misc.t:334) v:>,<,% ->-
+# - <@> list vKP ->3
+# - <0> pushmark vM/LVINTRO ->-
+# - <0> padsv[$c:901,902] vM/LVINTRO ->-
+# - <0> padsv[$d:901,902] vM/LVINTRO ->-
+# 3 <;> nextstate(main 902 optree_misc.t:334) v:>,<,%,{ ->4
+# 4 <$> const(IV 1) s ->5
+EONT_EONT
+
+
+checkOptree ( name => 'consolidate padranges and singletons',
+ code => sub { my ($a,$b); my $c; my ($d,$e);
+ my @f; my $g; my ($h,$i); my %j; 1 },
+ strip_open_hints => 1,
+ skip => ($] < 5.017006),
+ expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
+# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->5
+# 1 <;> nextstate(main 903 optree_misc.t:371) v:>,<,% ->2
+# - <@> list vKP ->-
+# 2 <0> padrange[$a:903,910; $b:903,910; $c:904,910; $d:905,910; $e:905,910; @f:906,910; $g:907,910; $h:908,910; $i:908,910; %j:909,910] vM/LVINTRO,10 ->3
+# - <0> padsv[$a:903,910] vM/LVINTRO ->-
+# - <0> padsv[$b:903,910] vM/LVINTRO ->-
+# - <;> nextstate(main 904 optree_misc.t:371) v:>,<,% ->-
+# - <0> padsv[$c:904,910] vM/LVINTRO ->-
+# - <;> nextstate(main 905 optree_misc.t:371) v:>,<,%,{ ->-
+# - <@> list vKP ->-
+# - <0> pushmark vM/LVINTRO ->-
+# - <0> padsv[$d:905,910] vM/LVINTRO ->-
+# - <0> padsv[$e:905,910] vM/LVINTRO ->-
+# - <;> nextstate(main 906 optree_misc.t:372) v:>,<,%,{ ->-
+# - <0> padav[@f:906,910] vM/LVINTRO ->-
+# - <;> nextstate(main 907 optree_misc.t:372) v:>,<,%,{ ->-
+# - <0> padsv[$g:907,910] vM/LVINTRO ->-
+# - <;> nextstate(main 908 optree_misc.t:372) v:>,<,%,{ ->-
+# - <@> list vKP ->-
+# - <0> pushmark vM/LVINTRO ->-
+# - <0> padsv[$h:908,910] vM/LVINTRO ->-
+# - <0> padsv[$i:908,910] vM/LVINTRO ->-
+# - <;> nextstate(main 909 optree_misc.t:372) v:>,<,%,{ ->-
+# - <0> padhv[%j:909,910] vM/LVINTRO ->3
+# 3 <;> nextstate(main 910 optree_misc.t:372) v:>,<,%,{ ->4
+# 4 <$> const[IV 1] s ->5
+EOT_EOT
+# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->5
+# 1 <;> nextstate(main 903 optree_misc.t:371) v:>,<,% ->2
+# - <@> list vKP ->-
+# 2 <0> padrange[$a:903,910; $b:903,910; $c:904,910; $d:905,910; $e:905,910; @f:906,910; $g:907,910; $h:908,910; $i:908,910; %j:909,910] vM/LVINTRO,10 ->3
+# - <0> padsv[$a:903,910] vM/LVINTRO ->-
+# - <0> padsv[$b:903,910] vM/LVINTRO ->-
+# - <;> nextstate(main 904 optree_misc.t:371) v:>,<,% ->-
+# - <0> padsv[$c:904,910] vM/LVINTRO ->-
+# - <;> nextstate(main 905 optree_misc.t:371) v:>,<,%,{ ->-
+# - <@> list vKP ->-
+# - <0> pushmark vM/LVINTRO ->-
+# - <0> padsv[$d:905,910] vM/LVINTRO ->-
+# - <0> padsv[$e:905,910] vM/LVINTRO ->-
+# - <;> nextstate(main 906 optree_misc.t:372) v:>,<,%,{ ->-
+# - <0> padav[@f:906,910] vM/LVINTRO ->-
+# - <;> nextstate(main 907 optree_misc.t:372) v:>,<,%,{ ->-
+# - <0> padsv[$g:907,910] vM/LVINTRO ->-
+# - <;> nextstate(main 908 optree_misc.t:372) v:>,<,%,{ ->-
+# - <@> list vKP ->-
+# - <0> pushmark vM/LVINTRO ->-
+# - <0> padsv[$h:908,910] vM/LVINTRO ->-
+# - <0> padsv[$i:908,910] vM/LVINTRO ->-
+# - <;> nextstate(main 909 optree_misc.t:372) v:>,<,%,{ ->-
+# - <0> padhv[%j:909,910] vM/LVINTRO ->3
+# 3 <;> nextstate(main 910 optree_misc.t:372) v:>,<,%,{ ->4
+# 4 <$> const(IV 1) s ->5
+EONT_EONT
+
+
+checkOptree ( name => 'm?x?',
+ code => sub { m?x?; },
+ strip_open_hints => 1,
+ expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
+# 3 <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->3
+# 1 <;> nextstate(main 914 optree_misc.t:434) v:>,<,%,{ ->2
+# 2 </> match(/"x"/) /RTIME ->3
+EOT_EOT
+# 3 <1> leavesub[1 ref] K/REFC,1 ->(end)
+# - <@> lineseq KP ->3
+# 1 <;> nextstate(main 914 optree_misc.t:434) v:>,<,%,{ ->2
+# 2 </> match(/"x"/) /RTIME ->3
+EONT_EONT
+
+
+unlink $tmpfile;
diff --git a/gnu/usr.bin/perl/ext/B/t/optree_samples.t b/gnu/usr.bin/perl/ext/B/t/optree_samples.t
index 3e0b7f89979..5cc4e2589a1 100755
--- a/gnu/usr.bin/perl/ext/B/t/optree_samples.t
+++ b/gnu/usr.bin/perl/ext/B/t/optree_samples.t
@@ -469,7 +469,8 @@ checkOptree ( name => '%h = map { getkey($_) => $_ } @a',
# 3 <0> pushmark s
# 4 <#> gv[*a] s
# 5 <1> rv2av[t8] lKM/1
-# 6 <@> mapstart lK*
+# 6 <@> mapstart lK* < 5.017002
+# 6 <@> mapstart lK >=5.017002
# 7 <|> mapwhile(other->8)[t9] lK
# 8 <0> enter l
# 9 <;> nextstate(main 500 (eval 22):1) v:{
@@ -493,7 +494,8 @@ EOT_EOT
# 3 <0> pushmark s
# 4 <$> gv(*a) s
# 5 <1> rv2av[t3] lKM/1
-# 6 <@> mapstart lK*
+# 6 <@> mapstart lK* < 5.017002
+# 6 <@> mapstart lK >=5.017002
# 7 <|> mapwhile(other->8)[t4] lK
# 8 <0> enter l
# 9 <;> nextstate(main 500 (eval 22):1) v:{
@@ -617,14 +619,16 @@ checkOptree ( name => '-e use constant j => qq{junk}; print j',
# 1 <0> enter
# 2 <;> nextstate(main 71 -e:1) v:>,<,%,{
# 3 <0> pushmark s
-# 4 <$> const[PV "junk"] s*
+# 4 <$> const[PV "junk"] s* < 5.017002
+# 4 <$> const[PV "junk"] s*/FOLD >=5.017002
# 5 <@> print vK
# 6 <@> leave[1 ref] vKP/REFC
EOT_EOT
# 1 <0> enter
# 2 <;> nextstate(main 71 -e:1) v:>,<,%,{
# 3 <0> pushmark s
-# 4 <$> const(PV "junk") s*
+# 4 <$> const(PV "junk") s* < 5.017002
+# 4 <$> const(PV "junk") s*/FOLD >=5.017002
# 5 <@> print vK
# 6 <@> leave[1 ref] vKP/REFC
EONT_EONT
diff --git a/gnu/usr.bin/perl/ext/B/t/optree_sort.t b/gnu/usr.bin/perl/ext/B/t/optree_sort.t
index b602e436a5c..a78b31ee94a 100755
--- a/gnu/usr.bin/perl/ext/B/t/optree_sort.t
+++ b/gnu/usr.bin/perl/ext/B/t/optree_sort.t
@@ -196,10 +196,9 @@ checkOptree ( name => 'sub {my @a; @a = sort @a}',
5 <0> pushmark s
6 <0> padav[@a:-437,-436] l
7 <@> sort lK
-8 <0> pushmark s
-9 <0> padav[@a:-437,-436] lRM*
-a <2> aassign[t2] KS/COMMON
-b <1> leavesub[1 ref] K/REFC,1
+8 <0> padrange[@a:-437,-436] l/1
+9 <2> aassign[t2] KS/COMMON
+a <1> leavesub[1 ref] K/REFC,1
EOT_EOT
# 1 <;> nextstate(main 427 optree_sort.t:172) v:>,<,%
# 2 <0> padav[@a:427,428] vM/LVINTRO
@@ -208,10 +207,9 @@ EOT_EOT
# 5 <0> pushmark s
# 6 <0> padav[@a:427,428] l
# 7 <@> sort lK
-# 8 <0> pushmark s
-# 9 <0> padav[@a:427,428] lRM*
-# a <2> aassign[t2] KS/COMMON
-# b <1> leavesub[1 ref] K/REFC,1
+# 8 <0> padrange[@a:427,428] l/1
+# 9 <2> aassign[t2] KS/COMMON
+# a <1> leavesub[1 ref] K/REFC,1
EONT_EONT
checkOptree ( name => 'my @a; @a = sort @a',
@@ -224,20 +222,18 @@ checkOptree ( name => 'my @a; @a = sort @a',
3 <0> padav[@a:1,2] vM/LVINTRO
4 <;> nextstate(main 2 -e:1) v:>,<,%,{
5 <0> pushmark s
-6 <0> pushmark s
-7 <0> padav[@a:1,2] lRM*
-8 <@> sort lK/INPLACE
-9 <@> leave[1 ref] vKP/REFC
+6 <0> padrange[@a:1,2] l/1
+7 <@> sort lK/INPLACE
+8 <@> leave[1 ref] vKP/REFC
EOT_EOT
# 1 <0> enter
# 2 <;> nextstate(main 1 -e:1) v:>,<,%,{
# 3 <0> padav[@a:1,2] vM/LVINTRO
# 4 <;> nextstate(main 2 -e:1) v:>,<,%,{
# 5 <0> pushmark s
-# 6 <0> pushmark s
-# 7 <0> padav[@a:1,2] lRM*
-# 8 <@> sort lK/INPLACE
-# 9 <@> leave[1 ref] vKP/REFC
+# 6 <0> padrange[@a:1,2] l/1
+# 7 <@> sort lK/INPLACE
+# 8 <@> leave[1 ref] vKP/REFC
EONT_EONT
checkOptree ( name => 'sub {my @a; @a = sort @a; push @a, 1}',
@@ -250,29 +246,25 @@ checkOptree ( name => 'sub {my @a; @a = sort @a; push @a, 1}',
2 <0> padav[@a:-437,-436] vM/LVINTRO
3 <;> nextstate(main -436 optree.t:325) v:>,<,%
4 <0> pushmark s
-5 <0> pushmark s
-6 <0> padav[@a:-437,-436] lRM*
-7 <@> sort lK/INPLACE
-8 <;> nextstate(main -436 optree.t:325) v:>,<,%,{
-9 <0> pushmark s
-a <0> padav[@a:-437,-436] lRM
-b <$> const[IV 1] s
-c <@> push[t3] sK/2
-d <1> leavesub[1 ref] K/REFC,1
+5 <0> padrange[@a:-437,-436] l/1
+6 <@> sort lK/INPLACE
+7 <;> nextstate(main -436 optree.t:325) v:>,<,%,{
+8 <0> padrange[@a:-437,-436] l/1
+9 <$> const[IV 1] s
+a <@> push[t3] sK/2
+b <1> leavesub[1 ref] K/REFC,1
EOT_EOT
# 1 <;> nextstate(main 429 optree_sort.t:219) v:>,<,%
# 2 <0> padav[@a:429,430] vM/LVINTRO
# 3 <;> nextstate(main 430 optree_sort.t:220) v:>,<,%
# 4 <0> pushmark s
-# 5 <0> pushmark s
-# 6 <0> padav[@a:429,430] lRM*
-# 7 <@> sort lK/INPLACE
-# 8 <;> nextstate(main 430 optree_sort.t:220) v:>,<,%,{
-# 9 <0> pushmark s
-# a <0> padav[@a:429,430] lRM
-# b <$> const(IV 1) s
-# c <@> push[t3] sK/2
-# d <1> leavesub[1 ref] K/REFC,1
+# 5 <0> padrange[@a:429,430] l/1
+# 6 <@> sort lK/INPLACE
+# 7 <;> nextstate(main 430 optree_sort.t:220) v:>,<,%,{
+# 8 <0> padrange[@a:429,430] l/1
+# 9 <$> const(IV 1) s
+# a <@> push[t3] sK/2
+# b <1> leavesub[1 ref] K/REFC,1
EONT_EONT
checkOptree ( name => 'sub {my @a; @a = sort @a; 1}',
@@ -285,21 +277,19 @@ checkOptree ( name => 'sub {my @a; @a = sort @a; 1}',
2 <0> padav[@a:-437,-436] vM/LVINTRO
3 <;> nextstate(main -436 optree.t:325) v:>,<,%
4 <0> pushmark s
-5 <0> pushmark s
-6 <0> padav[@a:-437,-436] lRM*
-7 <@> sort lK/INPLACE
-8 <;> nextstate(main -436 optree.t:346) v:>,<,%,{
-9 <$> const[IV 1] s
-a <1> leavesub[1 ref] K/REFC,1
+5 <0> padrange[@a:-437,-436] l/1
+6 <@> sort lK/INPLACE
+7 <;> nextstate(main -436 optree.t:346) v:>,<,%,{
+8 <$> const[IV 1] s
+9 <1> leavesub[1 ref] K/REFC,1
EOT_EOT
# 1 <;> nextstate(main 431 optree_sort.t:250) v:>,<,%
# 2 <0> padav[@a:431,432] vM/LVINTRO
# 3 <;> nextstate(main 432 optree_sort.t:251) v:>,<,%
# 4 <0> pushmark s
-# 5 <0> pushmark s
-# 6 <0> padav[@a:431,432] lRM*
-# 7 <@> sort lK/INPLACE
-# 8 <;> nextstate(main 432 optree_sort.t:251) v:>,<,%,{
-# 9 <$> const(IV 1) s
-# a <1> leavesub[1 ref] K/REFC,1
+# 5 <0> padrange[@a:431,432] l/1
+# 6 <@> sort lK/INPLACE
+# 7 <;> nextstate(main 432 optree_sort.t:251) v:>,<,%,{
+# 8 <$> const(IV 1) s
+# 9 <1> leavesub[1 ref] K/REFC,1
EONT_EONT
diff --git a/gnu/usr.bin/perl/ext/B/t/optree_specials.t b/gnu/usr.bin/perl/ext/B/t/optree_specials.t
index 567a9054aab..3cf354c826e 100755
--- a/gnu/usr.bin/perl/ext/B/t/optree_specials.t
+++ b/gnu/usr.bin/perl/ext/B/t/optree_specials.t
@@ -20,7 +20,7 @@ BEGIN {
use OptreeCheck; # ALSO DOES @ARGV HANDLING !!!!!!
use Config;
-plan tests => 13 + ($] > 5.009 ? 2 : 0);
+plan tests => 15;
require_ok("B::Concise");
@@ -34,16 +34,9 @@ my $out = runperl(
my $src = q[our ($beg, $chk, $init, $end, $uc) = qq{'foo'}; BEGIN { $beg++ } CHECK { $chk++ } INIT { $init++ } END { $end++ } UNITCHECK {$uc++}];
-my @warnings_todo;
-@warnings_todo = (todo =>
- "Change 23768 (Remove Carp from warnings.pm) alters expected output, not"
- . "propagated to 5.8.x")
- if $] < 5.009;
-
checkOptree ( name => 'BEGIN',
bcopts => 'BEGIN',
prog => $src,
- @warnings_todo,
strip_open_hints => 1,
expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
# BEGIN 1:
@@ -193,12 +186,11 @@ EOT_EOT
# 2 <$> gvsv(*chk) s ->3
EONT_EONT
-if ($] >= 5.009) {
- checkOptree ( name => 'UNITCHECK',
- bcopts=> 'UNITCHECK',
- prog => $src,
- strip_open_hints => 1,
- expect=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
+checkOptree ( name => 'UNITCHECK',
+ bcopts=> 'UNITCHECK',
+ prog => $src,
+ strip_open_hints => 1,
+ expect=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
# UNITCHECK 1:
# 4 <1> leavesub[1 ref] K/REFC,1 ->(end)
# - <@> lineseq KP ->4
@@ -215,7 +207,6 @@ EOT_EOT
# - <1> ex-rv2sv sKRM/1 ->3
# 2 <$> gvsv(*uc) s ->3
EONT_EONT
-}
checkOptree ( name => 'INIT',
bcopts => 'INIT',
@@ -244,7 +235,6 @@ EONT_EONT
checkOptree ( name => 'all of BEGIN END INIT CHECK UNITCHECK -exec',
bcopts => [qw/ BEGIN END INIT CHECK UNITCHECK -exec /],
prog => $src,
- @warnings_todo,
strip_open_hints => 1,
expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
# BEGIN 1:
@@ -374,7 +364,6 @@ EONT_EONT
checkOptree ( name => 'regression test for patch 25352',
bcopts => [qw/ BEGIN END INIT CHECK -exec /],
prog => 'print q/foo/',
- @warnings_todo,
expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
# BEGIN 1:
# 1 <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,x*,x&,x$,$
diff --git a/gnu/usr.bin/perl/ext/B/t/optree_varinit.t b/gnu/usr.bin/perl/ext/B/t/optree_varinit.t
index e0a95b7652f..32871792526 100755
--- a/gnu/usr.bin/perl/ext/B/t/optree_varinit.t
+++ b/gnu/usr.bin/perl/ext/B/t/optree_varinit.t
@@ -390,18 +390,14 @@ checkOptree ( name => 'my ($a,$b)=()',
# 1 <0> enter
# 2 <;> nextstate(main 1 -e:1) v:>,<,%,{
# 3 <0> pushmark s
-# 4 <0> pushmark sRM*/128
-# 5 <0> padsv[$a:1,2] lRM*/LVINTRO
-# 6 <0> padsv[$b:1,2] lRM*/LVINTRO
-# 7 <2> aassign[t3] vKS
-# 8 <@> leave[1 ref] vKP/REFC
+# 4 <0> padrange[$a:1,2; $b:1,2] lRM/LVINTRO,2
+# 5 <2> aassign[t3] vKS
+# 6 <@> leave[1 ref] vKP/REFC
EOT_EOT
# 1 <0> enter
# 2 <;> nextstate(main 1 -e:1) v:>,<,%,{
# 3 <0> pushmark s
-# 4 <0> pushmark sRM*/128
-# 5 <0> padsv[$a:1,2] lRM*/LVINTRO
-# 6 <0> padsv[$b:1,2] lRM*/LVINTRO
-# 7 <2> aassign[t3] vKS
-# 8 <@> leave[1 ref] vKP/REFC
+# 4 <0> padrange[$a:1,2; $b:1,2] lRM/LVINTRO,2
+# 5 <2> aassign[t3] vKS
+# 6 <@> leave[1 ref] vKP/REFC
EONT_EONT
diff --git a/gnu/usr.bin/perl/ext/B/t/pragma.t b/gnu/usr.bin/perl/ext/B/t/pragma.t
index 2ed390daca2..376de7c4531 100644
--- a/gnu/usr.bin/perl/ext/B/t/pragma.t
+++ b/gnu/usr.bin/perl/ext/B/t/pragma.t
@@ -11,10 +11,6 @@ BEGIN { ## no critic strict
print "1..0 # Skip -- Perl configured without B module\n";
exit 0;
}
- if ( $] < 5.009 ) {
- print "1..0 # Skip -- No user pragmata in 5.8.x\n";
- exit 0;
- }
}
use strict;
diff --git a/gnu/usr.bin/perl/ext/B/t/walkoptree.t b/gnu/usr.bin/perl/ext/B/t/walkoptree.t
index fbdc50fcb8f..3648835b7f6 100644
--- a/gnu/usr.bin/perl/ext/B/t/walkoptree.t
+++ b/gnu/usr.bin/perl/ext/B/t/walkoptree.t
@@ -33,7 +33,7 @@ sub B::OP::walkoptree_debug {
my $victim = sub {
# This gives us a substcont, which gets to the second recursive call
# point (in the if statement in the XS code)
- $_[0] =~ s/(a)/$1/;
+ $_[0] =~ s/(a)/ $1/;
# PMOP_pmreplroot(cPMOPo) is NULL for this
$_[0] =~ s/(b)//;
# This gives an OP_PUSHRE
diff --git a/gnu/usr.bin/perl/ext/B/t/xref.t b/gnu/usr.bin/perl/ext/B/t/xref.t
index 5d9cb388547..32a80e73d5a 100644
--- a/gnu/usr.bin/perl/ext/B/t/xref.t
+++ b/gnu/usr.bin/perl/ext/B/t/xref.t
@@ -23,7 +23,7 @@ open SAVEOUT, ">&STDOUT" or diag $!;
close STDOUT;
# line 100
our $compilesub = B::Xref::compile("-o$file");
-ok( ref $compilesub eq 'CODE', "compile() returns a coderef ($compilesub)" );
+ok( ref $compilesub eq 'CODE', "compile() returns a coderef" );
$compilesub->(); # Compile this test script
close STDOUT;
open STDOUT, ">&SAVEOUT" or diag $!;
@@ -34,6 +34,7 @@ my ($curfile, $cursub, $curpack) = ('') x 3;
our %xreftable = ();
open XREF, $file or die "# Can't open $file: $!\n";
while (<XREF>) {
+ print STDERR $_ if $ENV{PERL_DEBUG};
chomp;
if (/^File (.*)/) {
$curfile = $1;
diff --git a/gnu/usr.bin/perl/ext/B/typemap b/gnu/usr.bin/perl/ext/B/typemap
index 5e342749d20..e97fb76d94f 100644
--- a/gnu/usr.bin/perl/ext/B/typemap
+++ b/gnu/usr.bin/perl/ext/B/typemap
@@ -36,6 +36,8 @@ PADOFFSET T_UV
B::HE T_HE_OBJ
B::RHE T_RHE_OBJ
+B::PADLIST T_PL_OBJ
+
INPUT
T_OP_OBJ
if (SvROK($arg)) {
@@ -77,6 +79,14 @@ T_RHE_OBJ
else
croak(\"$var is not a reference\")
+T_PL_OBJ
+ if (SvROK($arg)) {
+ IV tmp = SvIV((SV*)SvRV($arg));
+ $var = INT2PTR($type,tmp);
+ }
+ else
+ croak(\"$var is not a reference\")
+
OUTPUT
T_MG_OBJ
sv_setiv(newSVrv($arg, "B::MAGIC"), PTR2IV($var));
@@ -86,3 +96,7 @@ T_HE_OBJ
T_RHE_OBJ
sv_setiv(newSVrv($arg, "B::RHE"), PTR2IV($var));
+
+T_PL_OBJ
+ sv_setiv(newSVrv($arg, $var ? "B::PADLIST" : "B::NULL"),
+ PTR2IV($var));
diff --git a/gnu/usr.bin/perl/ext/Devel-Peek/Changes b/gnu/usr.bin/perl/ext/Devel-Peek/Changes
index 39bbf918dab..e26342b447b 100644
--- a/gnu/usr.bin/perl/ext/Devel-Peek/Changes
+++ b/gnu/usr.bin/perl/ext/Devel-Peek/Changes
@@ -66,3 +66,8 @@
1.02:
2004-10-22: Document "hash quality" output and update examples.
+1.09:
+ 2012-07-23: Modify tests for 5.18's slightly different flags.
+1.10:
+ 2012-08-22: Update so compiles under C++ with new PADLIST changes in
+ the Perl core
diff --git a/gnu/usr.bin/perl/ext/Devel-Peek/Peek.pm b/gnu/usr.bin/perl/ext/Devel-Peek/Peek.pm
index d066c9d8bc5..7869c812946 100644
--- a/gnu/usr.bin/perl/ext/Devel-Peek/Peek.pm
+++ b/gnu/usr.bin/perl/ext/Devel-Peek/Peek.pm
@@ -3,7 +3,7 @@
package Devel::Peek;
-$VERSION = '1.08';
+$VERSION = '1.11';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
diff --git a/gnu/usr.bin/perl/ext/Devel-Peek/Peek.xs b/gnu/usr.bin/perl/ext/Devel-Peek/Peek.xs
index 5e8deb98308..e97c97911d6 100644
--- a/gnu/usr.bin/perl/ext/Devel-Peek/Peek.xs
+++ b/gnu/usr.bin/perl/ext/Devel-Peek/Peek.xs
@@ -23,7 +23,7 @@ DeadCode(pTHX)
SV* sva;
SV* sv;
SV* ret = newRV_noinc((SV*)newAV());
- register SV* svend;
+ SV* svend;
int tm = 0, tref = 0, ts = 0, ta = 0, tas = 0;
for (sva = PL_sv_arenaroot; sva; sva = (SV*)SvANY(sva)) {
@@ -31,7 +31,8 @@ DeadCode(pTHX)
for (sv = sva + 1; sv < svend; ++sv) {
if (SvTYPE(sv) == SVt_PVCV) {
CV *cv = (CV*)sv;
- AV* padlist = CvPADLIST(cv), *argav;
+ PADLIST* padlist = CvPADLIST(cv);
+ AV *argav;
SV** svp;
SV** pad;
int i = 0, j, levelm, totm = 0, levelref, totref = 0;
@@ -53,10 +54,11 @@ DeadCode(pTHX)
PerlIO_printf(Perl_debug_log, " busy\n");
continue;
}
- svp = AvARRAY(padlist);
- while (++i <= AvFILL(padlist)) { /* Depth. */
+ svp = (SV**) PadlistARRAY(padlist);
+ while (++i <= PadlistMAX(padlist)) { /* Depth. */
SV **args;
+ if (!svp[i]) continue;
pad = AvARRAY((AV*)svp[i]);
argav = (AV*)pad[0];
if (!argav || (SV*)argav == &PL_sv_undef) {
@@ -108,7 +110,7 @@ DeadCode(pTHX)
if (dumpit)
do_sv_dump(0, Perl_debug_log, (SV*)cv, 0, 2, 0, 0);
}
- if (AvFILL(padlist) > 1) {
+ if (PadlistMAX(padlist) > 1) {
PerlIO_printf(Perl_debug_log, " total: refs: %i, strings: %i in %i,\targsarrays: %i, argsstrings: %i\n",
totref, totm, tots, tota, totas);
}
diff --git a/gnu/usr.bin/perl/ext/Devel-Peek/t/Peek.t b/gnu/usr.bin/perl/ext/Devel-Peek/t/Peek.t
index 129f29afd5a..3de46003f76 100755
--- a/gnu/usr.bin/perl/ext/Devel-Peek/t/Peek.t
+++ b/gnu/usr.bin/perl/ext/Devel-Peek/t/Peek.t
@@ -241,7 +241,7 @@ do_test('reference to hash',
FLAGS = \\(ROK\\)
RV = $ADDR
SV = PVHV\\($ADDR\\) at $ADDR
- REFCNT = 1
+ REFCNT = [12]
FLAGS = \\(SHAREKEYS\\)
IV = 1 # $] < 5.009
NV = $FLOAT # $] < 5.009
@@ -250,8 +250,6 @@ do_test('reference to hash',
KEYS = 1
FILL = 1
MAX = 7
- RITER = -1
- EITER = 0x0
Elt "123" HASH = $ADDR' . $c_pattern,
'',
$] > 5.009 && $] < 5.015
@@ -296,8 +294,8 @@ do_test('reference to named subroutine without prototype',
RV = $ADDR
SV = PVCV\\($ADDR\\) at $ADDR
REFCNT = (3|4)
- FLAGS = \\(\\) # $] < 5.015 || !thr
- FLAGS = \\(DYNFILE\\) # $] >= 5.015 && thr
+ FLAGS = \\((?:HASEVAL)?\\) # $] < 5.015 || !thr
+ FLAGS = \\(DYNFILE(?:,HASEVAL)?\\) # $] >= 5.015 && thr
IV = 0 # $] < 5.009
NV = 0 # $] < 5.009
COMP_STASH = $ADDR\\t"main"
@@ -310,8 +308,8 @@ do_test('reference to named subroutine without prototype',
DEPTH = 1(?:
MUTEXP = $ADDR
OWNER = $ADDR)?
- FLAGS = 0x0 # $] < 5.015 || !thr
- FLAGS = 0x1000 # $] >= 5.015 && thr
+ FLAGS = 0x(?:400)?0 # $] < 5.015 || !thr
+ FLAGS = 0x[145]000 # $] >= 5.015 && thr
OUTSIDE_SEQ = \\d+
PADLIST = $ADDR
PADNAME = $ADDR\\($ADDR\\) PAD = $ADDR\\($ADDR\\)
@@ -333,13 +331,15 @@ do_test('reference to regexp',
RV = $ADDR
SV = REGEXP\\($ADDR\\) at $ADDR
REFCNT = 1
- FLAGS = \\(OBJECT,POK,FAKE,pPOK\\)
+ FLAGS = \\(OBJECT,POK,FAKE,pPOK\\) # $] < 5.017006
+ FLAGS = \\(OBJECT,FAKE\\) # $] >= 5.017006
PV = $ADDR "\\(\\?\\^:tic\\)"
CUR = 8
- LEN = 0
+ LEN = 0 # $] < 5.017006
STASH = $ADDR\\t"Regexp"'
. ($] < 5.013 ? '' :
'
+ COMPFLAGS = 0x0 \(\)
EXTFLAGS = 0x680000 \(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\)
INTFLAGS = 0x0
NPARENS = 0
@@ -349,15 +349,18 @@ do_test('reference to regexp',
MINLENRET = 3
GOFS = 0
PRE_PREFIX = 4
- SEEN_EVALS = 0
SUBLEN = 0
+ SUBOFFSET = 0
+ SUBCOFFSET = 0
SUBBEG = 0x0
ENGINE = $ADDR
MOTHER_RE = $ADDR
PAREN_NAMES = 0x0
SUBSTRS = $ADDR
PPRIVATE = $ADDR
- OFFS = $ADDR'
+ OFFS = $ADDR
+ QR_ANONCV = 0x0(?:
+ SAVED_COPY = 0x0)?'
));
} else {
do_test('reference to regexp',
@@ -388,7 +391,7 @@ do_test('reference to blessed hash',
FLAGS = \\(ROK\\)
RV = $ADDR
SV = PVHV\\($ADDR\\) at $ADDR
- REFCNT = 1
+ REFCNT = [12]
FLAGS = \\(OBJECT,SHAREKEYS\\)
IV = 0 # $] < 5.009
NV = 0 # $] < 5.009
@@ -396,9 +399,7 @@ do_test('reference to blessed hash',
ARRAY = 0x0
KEYS = 0
FILL = 0
- MAX = 7
- RITER = -1
- EITER = 0x0', '',
+ MAX = 7', '',
$] > 5.009
? $] >= 5.015
? 0
@@ -464,7 +465,7 @@ do_test('reference to hash containing Unicode',
FLAGS = \\(ROK\\)
RV = $ADDR
SV = PVHV\\($ADDR\\) at $ADDR
- REFCNT = 1
+ REFCNT = [12]
FLAGS = \\(SHAREKEYS,HASKFLAGS\\)
UV = 1 # $] < 5.009
NV = $FLOAT # $] < 5.009
@@ -473,8 +474,6 @@ do_test('reference to hash containing Unicode',
KEYS = 1
FILL = 1
MAX = 7
- RITER = -1
- EITER = $ADDR
Elt "\\\214\\\101" \[UTF8 "\\\x\{100\}"\] HASH = $ADDR
SV = PV\\($ADDR\\) at $ADDR
REFCNT = 1
@@ -495,7 +494,7 @@ do_test('reference to hash containing Unicode',
FLAGS = \\(ROK\\)
RV = $ADDR
SV = PVHV\\($ADDR\\) at $ADDR
- REFCNT = 1
+ REFCNT = [12]
FLAGS = \\(SHAREKEYS,HASKFLAGS\\)
UV = 1 # $] < 5.009
NV = 0 # $] < 5.009
@@ -504,8 +503,6 @@ do_test('reference to hash containing Unicode',
KEYS = 1
FILL = 1
MAX = 7
- RITER = -1
- EITER = $ADDR
Elt "\\\304\\\200" \[UTF8 "\\\x\{100\}"\] HASH = $ADDR
SV = PV\\($ADDR\\) at $ADDR
REFCNT = 1
@@ -526,12 +523,13 @@ do_test('scalar with pos magic',
$x,
'SV = PVMG\\($ADDR\\) at $ADDR
REFCNT = 1
- FLAGS = \\($PADMY,SMG,POK,pPOK\\)
- IV = 0
+ FLAGS = \\($PADMY,SMG,POK,(?:IsCOW,)?pPOK\\)
+ IV = \d+
NV = 0
PV = $ADDR ""\\\0
CUR = 0
- LEN = \d+
+ LEN = \d+(?:
+ COW_REFCNT = 1)?
MAGIC = $ADDR
MG_VIRTUAL = &PL_vtbl_mglob
MG_TYPE = PERL_MAGIC_regex_global\\(g\\)
@@ -542,14 +540,17 @@ do_test('scalar with pos magic',
# TAINTEDDIR is not set on: OS2, AMIGAOS, WIN32, MSDOS
# environment variables may be invisibly case-forced, hence the (?i:PATH)
# C<scalar(@ARGV)> is turned into an IV on VMS hence the (?:IV)?
+# Perl 5.18 ensures all env vars end up as strings only, hence the (?:,pIOK)?
+# Perl 5.18 ensures even magic vars have public OK, hence the (?:,POK)?
# VMS is setting FAKE and READONLY flags. What VMS uses for storing
# ENV hashes is also not always null terminated.
#
-do_test('tainted value in %ENV',
- $ENV{PATH}=@ARGV, # scalar(@ARGV) is a handy known tainted value
+if (${^TAINT}) {
+ do_test('tainted value in %ENV',
+ $ENV{PATH}=@ARGV, # scalar(@ARGV) is a handy known tainted value
'SV = PVMG\\($ADDR\\) at $ADDR
REFCNT = 1
- FLAGS = \\(GMG,SMG,RMG,pIOK,pPOK\\)
+ FLAGS = \\(GMG,SMG,RMG(?:,POK)?(?:,pIOK)?,pPOK\\)
IV = 0
NV = 0
PV = $ADDR "0"\\\0
@@ -572,6 +573,7 @@ do_test('tainted value in %ENV',
MAGIC = $ADDR
MG_VIRTUAL = &PL_vtbl_taint
MG_TYPE = PERL_MAGIC_taint\\(t\\)');
+}
do_test('blessed reference',
bless(\\undef, 'Foobar'),
@@ -688,13 +690,13 @@ do_test('FORMAT',
XSUBANY = 0 # $] < 5.009
GVGV::GV = $ADDR\\t"main" :: "PIE"
FILE = ".*\\b(?i:peek\\.t)"(?:
- DEPTH = 0
+ DEPTH = 0)?(?:
MUTEXP = $ADDR
OWNER = $ADDR)?
FLAGS = 0x0 # $] < 5.015 || !thr
FLAGS = 0x1000 # $] >= 5.015 && thr
OUTSIDE_SEQ = \\d+
- LINES = 0
+ LINES = 0 # $] < 5.017_003
PADLIST = $ADDR
PADNAME = $ADDR\\($ADDR\\) PAD = $ADDR\\($ADDR\\)
OUTSIDE = $ADDR \\(MAIN\\)');
@@ -706,7 +708,7 @@ do_test('blessing to a class with embedded NUL characters',
FLAGS = \\(ROK\\)
RV = $ADDR
SV = PVHV\\($ADDR\\) at $ADDR
- REFCNT = 1
+ REFCNT = [12]
FLAGS = \\(OBJECT,SHAREKEYS\\)
IV = 0 # $] < 5.009
NV = 0 # $] < 5.009
@@ -714,9 +716,7 @@ do_test('blessing to a class with embedded NUL characters',
ARRAY = $ADDR
KEYS = 0
FILL = 0
- MAX = 7
- RITER = -1
- EITER = 0x0', '',
+ MAX = 7', '',
$] > 5.009
? $] >= 5.015
? 0
@@ -740,6 +740,7 @@ do_test('ENAME on a stash',
MAX = 7
RITER = -1
EITER = 0x0
+ RAND = $ADDR
NAME = "RWOM"
ENAME = "RWOM" # $] > 5.012
');
@@ -763,6 +764,7 @@ do_test('ENAMEs on a stash',
MAX = 7
RITER = -1
EITER = 0x0
+ RAND = $ADDR
NAME = "RWOM"
NAMECOUNT = 2 # $] > 5.012
ENAME = "RWOM", "KLANK" # $] > 5.012
@@ -778,7 +780,8 @@ do_test('ENAMEs on a stash with no NAME',
RV = $ADDR
SV = PVHV\\($ADDR\\) at $ADDR
REFCNT = 3
- FLAGS = \\(OOK,SHAREKEYS\\)
+ FLAGS = \\(OOK,SHAREKEYS\\) # $] < 5.017
+ FLAGS = \\(OOK,OVERLOAD,SHAREKEYS\\) # $] >=5.017
IV = 1 # $] < 5.009
NV = $FLOAT # $] < 5.009
ARRAY = $ADDR
@@ -787,6 +790,7 @@ do_test('ENAMEs on a stash with no NAME',
MAX = 7
RITER = -1
EITER = 0x0
+ RAND = $ADDR
NAMECOUNT = -3 # $] > 5.012
ENAME = "RWOM", "KLANK" # $] > 5.012
');
@@ -919,4 +923,49 @@ unless ($Config{useithreads}) {
# (One block of study tests removed when study was made a no-op.)
+{
+ open(OUT,">peek$$") or die "Failed to open peek $$: $!";
+ open(STDERR, ">&OUT") or die "Can't dup OUT: $!";
+ DeadCode();
+ open(STDERR, ">&SAVERR") or die "Can't restore STDERR: $!";
+ pass "no crash with DeadCode";
+ close OUT;
+}
+
+do_test('UTF-8 in a regular expression',
+ qr/\x{100}/,
+'SV = IV\($ADDR\) at $ADDR
+ REFCNT = 1
+ FLAGS = \(ROK\)
+ RV = $ADDR
+ SV = REGEXP\($ADDR\) at $ADDR
+ REFCNT = 1
+ FLAGS = \(OBJECT,FAKE,UTF8\)
+ PV = $ADDR "\(\?\^u:\\\\\\\\x\{100\}\)" \[UTF8 "\(\?\^u:\\\\\\\\x\{100\}\)"\]
+ CUR = 13
+ STASH = $ADDR "Regexp"
+ COMPFLAGS = 0x0 \(\)
+ EXTFLAGS = 0x680040 \(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\)
+ INTFLAGS = 0x0
+ NPARENS = 0
+ LASTPAREN = 0
+ LASTCLOSEPAREN = 0
+ MINLEN = 1
+ MINLENRET = 1
+ GOFS = 0
+ PRE_PREFIX = 5
+ SUBLEN = 0
+ SUBOFFSET = 0
+ SUBCOFFSET = 0
+ SUBBEG = 0x0
+ ENGINE = $ADDR
+ MOTHER_RE = $ADDR
+ PAREN_NAMES = 0x0
+ SUBSTRS = $ADDR
+ PPRIVATE = $ADDR
+ OFFS = $ADDR
+ QR_ANONCV = 0x0(?:
+ SAVED_COPY = 0x0)?
+');
+
done_testing();
diff --git a/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL b/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL
index 495847c9626..562ba2d9834 100644
--- a/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL
+++ b/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL
@@ -85,7 +85,7 @@ package DynaLoader;
# Tim.Bunce@ig.co.uk, August 1994
BEGIN {
- $VERSION = '1.14';
+ $VERSION = '1.18';
}
use Config;
diff --git a/gnu/usr.bin/perl/ext/DynaLoader/dl_dllload.xs b/gnu/usr.bin/perl/ext/DynaLoader/dl_dllload.xs
index 9d5b2c2c712..9a1069ec782 100644
--- a/gnu/usr.bin/perl/ext/DynaLoader/dl_dllload.xs
+++ b/gnu/usr.bin/perl/ext/DynaLoader/dl_dllload.xs
@@ -105,24 +105,24 @@ BOOT:
(void)dl_private_init(aTHX);
-void *
+void
dl_load_file(filename, flags=0)
char * filename
int flags
PREINIT:
int mode = 0;
- CODE:
-{
+ void *retv;
+ PPCODE:
DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags));
/* add a (void *) dllload(filename) ; cast if needed */
- RETVAL = dllload(filename) ;
- DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%lx\n", (unsigned long) RETVAL));
+ retv = dllload(filename) ;
+ DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%lx\n", (unsigned long) retv));
ST(0) = sv_newmortal() ;
- if (RETVAL == NULL)
+ if (retv == NULL)
SaveError(aTHX_ "%s",strerror(errno)) ;
else
- sv_setiv( ST(0), PTR2IV(RETVAL));
-}
+ sv_setiv( ST(0), PTR2IV(retv));
+ XSRETURN(1);
int
@@ -139,28 +139,31 @@ dl_unload_file(libref)
RETVAL
-void *
+void
dl_find_symbol(libhandle, symbolname)
void * libhandle
char * symbolname
- CODE:
+ PREINIT:
+ void *retv;
+ PPCODE:
DLDEBUG(2, PerlIO_printf(Perl_debug_log,
"dl_find_symbol(handle=%lx, symbol=%s)\n",
(unsigned long) libhandle, symbolname));
- if((RETVAL = (void*)dllqueryfn(libhandle, symbolname)) == NULL)
- RETVAL = dllqueryvar(libhandle, symbolname);
+ if((retv = (void*)dllqueryfn(libhandle, symbolname)) == NULL)
+ retv = dllqueryvar(libhandle, symbolname);
DLDEBUG(2, PerlIO_printf(Perl_debug_log,
- " symbolref = %lx\n", (unsigned long) RETVAL));
+ " symbolref = %lx\n", (unsigned long) retv));
ST(0) = sv_newmortal() ;
- if (RETVAL == NULL)
+ if (retv == NULL)
SaveError(aTHX_ "%s",strerror(errno)) ;
else
- sv_setiv( ST(0), PTR2IV(RETVAL));
+ sv_setiv( ST(0), PTR2IV(retv));
+ XSRETURN(1);
void
dl_undef_symbols()
- PPCODE:
+ CODE:
@@ -171,13 +174,14 @@ dl_install_xsub(perl_name, symref, filename="$Package")
char * perl_name
void * symref
const char * filename
- CODE:
+ PPCODE:
DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%lx)\n",
perl_name, (unsigned long) symref));
ST(0) = sv_2mortal(newRV((SV*)newXS_flags(perl_name,
(void(*)(pTHX_ CV *))symref,
filename, NULL,
XS_DYNAMIC_FILENAME)));
+ XSRETURN(1);
char *
diff --git a/gnu/usr.bin/perl/ext/DynaLoader/dl_win32.xs b/gnu/usr.bin/perl/ext/DynaLoader/dl_win32.xs
index 94b3fe3e83e..05495b8bb48 100644
--- a/gnu/usr.bin/perl/ext/DynaLoader/dl_win32.xs
+++ b/gnu/usr.bin/perl/ext/DynaLoader/dl_win32.xs
@@ -67,9 +67,9 @@ dl_private_init(pTHX)
static int
dl_static_linked(char *filename)
{
- char **p;
+ const char * const *p;
char *ptr, *hptr;
- static char subStr[] = "/auto/";
+ static const char subStr[] = "/auto/";
char szBuffer[MAX_PATH];
/* avoid buffer overflow when called with invalid filenames */
@@ -111,26 +111,27 @@ MODULE = DynaLoader PACKAGE = DynaLoader
BOOT:
(void)dl_private_init(aTHX);
-void *
+void
dl_load_file(filename,flags=0)
char * filename
int flags
PREINIT:
+ void *retv;
CODE:
{
DLDEBUG(1,PerlIO_printf(Perl_debug_log,"dl_load_file(%s):\n", filename));
if (dl_static_linked(filename) == 0) {
- RETVAL = PerlProc_DynaLoad(filename);
+ retv = PerlProc_DynaLoad(filename);
}
else
- RETVAL = (void*) Win_GetModuleHandle(NULL);
- DLDEBUG(2,PerlIO_printf(Perl_debug_log," libref=%x\n", RETVAL));
+ retv = (void*) Win_GetModuleHandle(NULL);
+ DLDEBUG(2,PerlIO_printf(Perl_debug_log," libref=%x\n", retv));
ST(0) = sv_newmortal() ;
- if (RETVAL == NULL)
+ if (retv == NULL)
SaveError(aTHX_ "load_file:%s",
OS_Error_String(aTHX)) ;
else
- sv_setiv( ST(0), (IV)RETVAL);
+ sv_setiv( ST(0), (IV)retv);
}
int
@@ -145,26 +146,28 @@ dl_unload_file(libref)
OUTPUT:
RETVAL
-void *
+void
dl_find_symbol(libhandle, symbolname)
void * libhandle
char * symbolname
+ PREINIT:
+ void *retv;
CODE:
DLDEBUG(2,PerlIO_printf(Perl_debug_log,"dl_find_symbol(handle=%x, symbol=%s)\n",
libhandle, symbolname));
- RETVAL = (void*) GetProcAddress((HINSTANCE) libhandle, symbolname);
- DLDEBUG(2,PerlIO_printf(Perl_debug_log," symbolref = %x\n", RETVAL));
+ retv = (void*) GetProcAddress((HINSTANCE) libhandle, symbolname);
+ DLDEBUG(2,PerlIO_printf(Perl_debug_log," symbolref = %x\n", retv));
ST(0) = sv_newmortal() ;
- if (RETVAL == NULL)
+ if (retv == NULL)
SaveError(aTHX_ "find_symbol:%s",
OS_Error_String(aTHX)) ;
else
- sv_setiv( ST(0), (IV)RETVAL);
+ sv_setiv( ST(0), (IV)retv);
void
dl_undef_symbols()
- PPCODE:
+ CODE:
diff --git a/gnu/usr.bin/perl/ext/DynaLoader/t/DynaLoader.t b/gnu/usr.bin/perl/ext/DynaLoader/t/DynaLoader.t
index 32b6a1b4586..57f1e4809fc 100644
--- a/gnu/usr.bin/perl/ext/DynaLoader/t/DynaLoader.t
+++ b/gnu/usr.bin/perl/ext/DynaLoader/t/DynaLoader.t
@@ -32,6 +32,11 @@ plan tests => 22 + keys(%modules) * 3;
# Try to load the module
use_ok( 'DynaLoader' );
+# Some tests need to be skipped on old Darwin versions.
+# Commit ce12ed1954 added the skip originally, without specifying which
+# darwin version needed it. I know OS X 10.6 (Snow Leopard; darwin 10)
+# supports it, so skip anything before that.
+my $old_darwin = $^O eq 'darwin' && ($Config{osvers} =~ /^(\d+)/)[0] < 10;
# Check functions
can_ok( 'DynaLoader' => 'bootstrap' ); # defined in Perl section
@@ -43,7 +48,7 @@ if ($Config{usedl}) {
can_ok( 'DynaLoader' => 'dl_load_file' ); # defined in XS section
can_ok( 'DynaLoader' => 'dl_undef_symbols' ); # defined in XS section
SKIP: {
- skip "unloading unsupported on $^O", 1 if ($^O eq 'VMS' || $^O eq 'darwin');
+ skip "unloading unsupported on $^O", 1 if ($old_darwin || $^O eq 'VMS');
can_ok( 'DynaLoader' => 'dl_unload_file' ); # defined in XS section
}
} else {
@@ -137,8 +142,9 @@ is( scalar @DynaLoader::dl_modules, scalar keys %modules, "checking number of it
my @loaded_modules = @DynaLoader::dl_modules;
for my $libref (reverse @DynaLoader::dl_librefs) {
SKIP: {
- skip "unloading unsupported on $^O", 2 if ($^O eq 'VMS' || $^O eq 'darwin');
+ skip "unloading unsupported on $^O", 2 if ($old_darwin || $^O eq 'VMS');
my $module = pop @loaded_modules;
+ skip "File::Glob sets PL_opfreehook", 2 if $module eq 'File::Glob';
my $r = eval { DynaLoader::dl_unload_file($libref) };
is( $@, '', "calling dl_unload_file() for $module" );
is( $r, 1, " - unload was successful" );
diff --git a/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL b/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL
index 439f2544cae..b7079112bff 100644
--- a/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL
+++ b/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL
@@ -2,7 +2,7 @@ use ExtUtils::MakeMaker;
use Config;
use strict;
-our $VERSION = "1.15";
+our $VERSION = "1.18";
my %err = ();
my %wsa = ();
@@ -125,12 +125,6 @@ sub get_files {
} elsif ($^O eq 'os390') {
# OS/390 C compiler doesn't generate #file or #line directives
$file{'/usr/include/errno.h'} = 1;
- } elsif ($^O eq 'vmesa') {
- # OS/390 C compiler doesn't generate #file or #line directives
- $file{'../../vmesa/errno.h'} = 1;
- } elsif ($Config{archname} eq 'epoc') {
- # Watch out for cross compiling for EPOC (usually done on linux)
- $file{'/usr/local/epocemx/epocsdk/include/libc/sys/errno.h'} = 1;
} elsif ($Config{archname} eq 'arm-riscos') {
# Watch out for cross compiling for RISC OS
my $dep = `echo "#include <errno.h>" | gcc -E -M -`;
@@ -147,7 +141,7 @@ sub get_files {
my $linux_errno_h = -e '/usr/include/errno.h' ?
'/usr/include/errno.h' : '/usr/local/include/errno.h';
$file{$linux_errno_h} = 1;
- } elsif ($^O eq 'beos' || $^O eq 'haiku') {
+ } elsif ($^O eq 'haiku') {
# hidden in a special place
$file{'/boot/develop/headers/posix/errno.h'} = 1;
@@ -239,7 +233,7 @@ sub write_errno_pm {
close(CPPI);
- unless ($^O eq 'beos') { # trust what we have / get later
+ { # BeOS (support now removed) did not enter this block
# invoke CPP and read the output
if ($^O eq 'VMS') {
@@ -280,42 +274,6 @@ sub write_errno_pm {
close(CPPO);
}
- # Many of the E constants (including ENOENT, which is being
- # used in the Perl test suite a lot), are available only as
- # enums in BeOS, so compiling and executing some code is about
- # only way to find out what the numeric Evalues are. In fact above, we
- # didn't even bother to get the values of the ones that have numeric
- # values, since we can get all of them here, anyway.
-
- if ($^O eq 'beos') {
- if (open(C, ">errno.c")) {
- my @allerrs = keys %err;
- print C <<EOF;
-#include <errno.h>
-#include <stdio.h>
-int main() {
-EOF
- for (@allerrs) {
- print C qq[printf("$_ %d\n", $_);]
- }
- print C "}\n";
- close C;
- system("cc -o errno errno.c");
- unlink("errno.c");
- if (open(C, "./errno|")) {
- while (<C>) {
- if (/^(\w+) (-?\d+)$/) { $err{$1} = $2 }
- }
- close(C);
- } else {
- die "failed to execute ./errno: $!\n";
- }
- unlink("errno");
- } else {
- die "failed to create errno.c: $!\n";
- }
- }
-
# escape $Config{'archname'}
my $archname = $Config{'archname'};
$archname =~ s/([@%\$])/\\\1/g;
diff --git a/gnu/usr.bin/perl/ext/File-DosGlob/DosGlob.xs b/gnu/usr.bin/perl/ext/File-DosGlob/DosGlob.xs
new file mode 100644
index 00000000000..cbd9178e495
--- /dev/null
+++ b/gnu/usr.bin/perl/ext/File-DosGlob/DosGlob.xs
@@ -0,0 +1,52 @@
+#define PERL_NO_GET_CONTEXT
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#define MY_CXT_KEY "File::Glob::_guts" XS_VERSION
+
+typedef struct {
+ HV * x_DG_ENTRIES;
+ Perl_ophook_t x_DG_OLD_OPHOOK;
+} my_cxt_t;
+
+START_MY_CXT
+
+static void
+glob_ophook(pTHX_ OP *o)
+{
+ if (PL_dirty) return;
+ {
+ dMY_CXT;
+ if (!MY_CXT.x_DG_ENTRIES)
+ MY_CXT.x_DG_ENTRIES = get_hv("File::DosGlob::entries", 0);
+ if (MY_CXT.x_DG_ENTRIES)
+ hv_delete(MY_CXT.x_DG_ENTRIES, (char *)&o, sizeof(OP *),G_DISCARD);
+ if (MY_CXT.x_DG_OLD_OPHOOK) MY_CXT.x_DG_OLD_OPHOOK(aTHX_ o);
+ }
+}
+
+MODULE = File::DosGlob PACKAGE = File::DosGlob
+
+PROTOTYPES: DISABLE
+
+BOOT:
+{
+ MY_CXT_INIT;
+ {
+ dMY_CXT;
+ MY_CXT.x_DG_ENTRIES = NULL;
+ MY_CXT.x_DG_OLD_OPHOOK = PL_opfreehook;
+ PL_opfreehook = glob_ophook;
+ }
+}
+
+SV *
+_callsite(...)
+ CODE:
+ RETVAL = newSVpvn(
+ (char *)&cxstack[cxstack_ix].blk_sub.retop, sizeof(OP *)
+ );
+ OUTPUT:
+ RETVAL
diff --git a/gnu/usr.bin/perl/ext/File-DosGlob/lib/File/DosGlob.pm b/gnu/usr.bin/perl/ext/File-DosGlob/lib/File/DosGlob.pm
new file mode 100644
index 00000000000..c90bebb2780
--- /dev/null
+++ b/gnu/usr.bin/perl/ext/File-DosGlob/lib/File/DosGlob.pm
@@ -0,0 +1,304 @@
+#!perl -w
+
+#
+# Documentation at the __END__
+#
+
+package File::DosGlob;
+
+our $VERSION = '1.10';
+use strict;
+use warnings;
+
+require XSLoader;
+XSLoader::load();
+
+sub doglob {
+ my $cond = shift;
+ my @retval = ();
+ my $fix_drive_relative_paths;
+ OUTER:
+ for my $pat (@_) {
+ my @matched = ();
+ my @globdirs = ();
+ my $head = '.';
+ my $sepchr = '/';
+ my $tail;
+ next OUTER unless defined $pat and $pat ne '';
+ # if arg is within quotes strip em and do no globbing
+ if ($pat =~ /^"(.*)"\z/s) {
+ $pat = $1;
+ if ($cond eq 'd') { push(@retval, $pat) if -d $pat }
+ else { push(@retval, $pat) if -e $pat }
+ next OUTER;
+ }
+ # wildcards with a drive prefix such as h:*.pm must be changed
+ # to h:./*.pm to expand correctly
+ if ($pat =~ m|^([A-Za-z]:)[^/\\]|s) {
+ substr($pat,0,2) = $1 . "./";
+ $fix_drive_relative_paths = 1;
+ }
+ if ($pat =~ m|^(.*)([\\/])([^\\/]*)\z|s) {
+ ($head, $sepchr, $tail) = ($1,$2,$3);
+ push (@retval, $pat), next OUTER if $tail eq '';
+ if ($head =~ /[*?]/) {
+ @globdirs = doglob('d', $head);
+ push(@retval, doglob($cond, map {"$_$sepchr$tail"} @globdirs)),
+ next OUTER if @globdirs;
+ }
+ $head .= $sepchr if $head eq '' or $head =~ /^[A-Za-z]:\z/s;
+ $pat = $tail;
+ }
+ #
+ # If file component has no wildcards, we can avoid opendir
+ unless ($pat =~ /[*?]/) {
+ $head = '' if $head eq '.';
+ $head .= $sepchr unless $head eq '' or substr($head,-1) eq $sepchr;
+ $head .= $pat;
+ if ($cond eq 'd') { push(@retval,$head) if -d $head }
+ else { push(@retval,$head) if -e $head }
+ next OUTER;
+ }
+ opendir(D, $head) or next OUTER;
+ my @leaves = readdir D;
+ closedir D;
+
+ # VMS-format filespecs, especially if they contain extended characters,
+ # are unlikely to match patterns correctly, so Unixify them.
+ if ($^O eq 'VMS') {
+ require VMS::Filespec;
+ @leaves = map {$_ =~ s/\.$//; VMS::Filespec::unixify($_)} @leaves;
+ }
+ $head = '' if $head eq '.';
+ $head .= $sepchr unless $head eq '' or substr($head,-1) eq $sepchr;
+
+ # escape regex metachars but not glob chars
+ $pat =~ s:([].+^\-\${}()[|]):\\$1:g;
+ # and convert DOS-style wildcards to regex
+ $pat =~ s/\*/.*/g;
+ $pat =~ s/\?/.?/g;
+
+ my $matchsub = sub { $_[0] =~ m|^$pat\z|is };
+ INNER:
+ for my $e (@leaves) {
+ next INNER if $e eq '.' or $e eq '..';
+ next INNER if $cond eq 'd' and ! -d "$head$e";
+ push(@matched, "$head$e"), next INNER if &$matchsub($e);
+ #
+ # [DOS compatibility special case]
+ # Failed, add a trailing dot and try again, but only
+ # if name does not have a dot in it *and* pattern
+ # has a dot *and* name is shorter than 9 chars.
+ #
+ if (index($e,'.') == -1 and length($e) < 9
+ and index($pat,'\\.') != -1) {
+ push(@matched, "$head$e"), next INNER if &$matchsub("$e.");
+ }
+ }
+ push @retval, @matched if @matched;
+ }
+ if ($fix_drive_relative_paths) {
+ s|^([A-Za-z]:)\./|$1| for @retval;
+ }
+ return @retval;
+}
+
+#
+# this can be used to override CORE::glob in a specific
+# package by saying C<use File::DosGlob 'glob';> in that
+# namespace.
+#
+
+# context (keyed by second cxix arg provided by core)
+our %entries;
+
+sub glob {
+ my($pat,$cxix) = ($_[0], _callsite());
+ my @pat;
+
+ # glob without args defaults to $_
+ $pat = $_ unless defined $pat;
+
+ # if we're just beginning, do it all first
+ if (!$entries{$cxix}) {
+ # extract patterns
+ if ($pat =~ /\s/) {
+ require Text::ParseWords;
+ @pat = Text::ParseWords::parse_line('\s+',0,$pat);
+ }
+ else {
+ push @pat, $pat;
+ }
+
+ # Mike Mestnik: made to do abc{1,2,3} == abc1 abc2 abc3.
+ # abc3 will be the original {3} (and drop the {}).
+ # abc1 abc2 will be put in @appendpat.
+ # This was just the easiest way, not nearly the best.
+ REHASH: {
+ my @appendpat = ();
+ for (@pat) {
+ # There must be a "," I.E. abc{efg} is not what we want.
+ while ( /^(.*)(?<!\\)\{(.*?)(?<!\\)\,.*?(?<!\\)\}(.*)$/ ) {
+ my ($start, $match, $end) = ($1, $2, $3);
+ #print "Got: \n\t$start\n\t$match\n\t$end\n";
+ my $tmp = "$start$match$end";
+ while ( $tmp =~ s/^(.*?)(?<!\\)\{(?:.*(?<!\\)\,)?(.*\Q$match\E.*?)(?:(?<!\\)\,.*)?(?<!\\)\}(.*)$/$1$2$3/ ) {
+ # these expansions will be performed by the original,
+ # when we call REHASH.
+ }
+ push @appendpat, ("$tmp");
+ s/^\Q$start\E(?<!\\)\{\Q$match\E(?<!\\)\,/$start\{/;
+ if ( /^\Q$start\E(?<!\\)\{(?!.*?(?<!\\)\,.*?\Q$end\E$)(.*)(?<!\\)\}\Q$end\E$/ ) {
+ $match = $1;
+ #print "GOT: \n\t$start\n\t$match\n\t$end\n\n";
+ $_ = "$start$match$end";
+ }
+ }
+ #print "Sould have "GOT" vs "Got"!\n";
+ #FIXME: There should be checking for this.
+ # How or what should be done about failure is beond me.
+ }
+ if ( $#appendpat != -1
+ ) {
+ #FIXME: Max loop, no way! :")
+ for ( @appendpat ) {
+ push @pat, $_;
+ }
+ goto REHASH;
+ }
+ }
+ for ( @pat ) {
+ s/\\([{},])/$1/g;
+ }
+
+ $entries{$cxix} = [doglob(1,@pat)];
+ }
+
+ # chuck it all out, quick or slow
+ if (wantarray) {
+ return @{delete $entries{$cxix}};
+ }
+ else {
+ if (scalar @{$entries{$cxix}}) {
+ return shift @{$entries{$cxix}};
+ }
+ else {
+ # return undef for EOL
+ delete $entries{$cxix};
+ return undef;
+ }
+ }
+}
+
+{
+ no strict 'refs';
+
+ sub import {
+ my $pkg = shift;
+ return unless @_;
+ my $sym = shift;
+ my $callpkg = ($sym =~ s/^GLOBAL_//s ? 'CORE::GLOBAL' : caller(0));
+ *{$callpkg.'::'.$sym} = \&{$pkg.'::'.$sym} if $sym eq 'glob';
+ }
+}
+1;
+
+__END__
+
+=head1 NAME
+
+File::DosGlob - DOS like globbing and then some
+
+=head1 SYNOPSIS
+
+ require 5.004;
+
+ # override CORE::glob in current package
+ use File::DosGlob 'glob';
+
+ # override CORE::glob in ALL packages (use with extreme caution!)
+ use File::DosGlob 'GLOBAL_glob';
+
+ @perlfiles = glob "..\\pe?l/*.p?";
+ print <..\\pe?l/*.p?>;
+
+ # from the command line (overrides only in main::)
+ > perl -MFile::DosGlob=glob -e "print <../pe*/*p?>"
+
+=head1 DESCRIPTION
+
+A module that implements DOS-like globbing with a few enhancements.
+It is largely compatible with perlglob.exe (the M$ setargv.obj
+version) in all but one respect--it understands wildcards in
+directory components.
+
+For example, C<< <..\\l*b\\file/*glob.p?> >> will work as expected (in
+that it will find something like '..\lib\File/DosGlob.pm' alright).
+Note that all path components are case-insensitive, and that
+backslashes and forward slashes are both accepted, and preserved.
+You may have to double the backslashes if you are putting them in
+literally, due to double-quotish parsing of the pattern by perl.
+
+Spaces in the argument delimit distinct patterns, so
+C<glob('*.exe *.dll')> globs all filenames that end in C<.exe>
+or C<.dll>. If you want to put in literal spaces in the glob
+pattern, you can escape them with either double quotes, or backslashes.
+e.g. C<glob('c:/"Program Files"/*/*.dll')>, or
+C<glob('c:/Program\ Files/*/*.dll')>. The argument is tokenized using
+C<Text::ParseWords::parse_line()>, so see L<Text::ParseWords> for details
+of the quoting rules used.
+
+Extending it to csh patterns is left as an exercise to the reader.
+
+=head1 EXPORTS (by request only)
+
+glob()
+
+=head1 BUGS
+
+Should probably be built into the core, and needs to stop
+pandering to DOS habits. Needs a dose of optimizium too.
+
+=head1 AUTHOR
+
+Gurusamy Sarathy <gsar@activestate.com>
+
+=head1 HISTORY
+
+=over 4
+
+=item *
+
+Support for globally overriding glob() (GSAR 3-JUN-98)
+
+=item *
+
+Scalar context, independent iterator context fixes (GSAR 15-SEP-97)
+
+=item *
+
+A few dir-vs-file optimizations result in glob importation being
+10 times faster than using perlglob.exe, and using perlglob.bat is
+only twice as slow as perlglob.exe (GSAR 28-MAY-97)
+
+=item *
+
+Several cleanups prompted by lack of compatible perlglob.exe
+under Borland (GSAR 27-MAY-97)
+
+=item *
+
+Initial version (GSAR 20-FEB-97)
+
+=back
+
+=head1 SEE ALSO
+
+perl
+
+perlglob.bat
+
+Text::ParseWords
+
+=cut
+
diff --git a/gnu/usr.bin/perl/ext/File-DosGlob/t/DosGlob.t b/gnu/usr.bin/perl/ext/File-DosGlob/t/DosGlob.t
new file mode 100644
index 00000000000..600b87a0b50
--- /dev/null
+++ b/gnu/usr.bin/perl/ext/File-DosGlob/t/DosGlob.t
@@ -0,0 +1,156 @@
+#!./perl
+
+#
+# test glob() in File::DosGlob
+#
+
+# Make sure it can load before other XS extensions
+use File::DosGlob;
+
+use FindBin;
+use File::Spec::Functions;
+BEGIN {
+ chdir catdir $FindBin::Bin, (updir)x3, 't';
+ @INC = '../lib';
+}
+
+use Test::More tests => 21;
+
+# override it in main::
+use File::DosGlob 'glob';
+
+require Cwd;
+
+my $expected;
+$expected = $_ = "op/a*.t";
+my @r = glob;
+is ($_, $expected, 'test if $_ takes as the default');
+cmp_ok(@r, '>=', 9) or diag("|@r|");
+
+@r = <*/a*.t>;
+# atleast {argv,abbrev,anydbm,autoloader,append,arith,array,assignwarn,auto}.t
+cmp_ok(@r, '>=', 9, 'check <*/*>') or diag("|@r|");
+my $r = scalar @r;
+
+@r = ();
+while (defined($_ = <*/a*.t>)) {
+ print "# $_\n";
+ push @r, $_;
+}
+is(scalar @r, $r, 'check scalar context');
+
+@r = ();
+for (<*/a*.t>) {
+ print "# $_\n";
+ push @r, $_;
+}
+is(scalar @r, $r, 'check list context');
+
+@r = ();
+while (<*/a*.t>) {
+ print "# $_\n";
+ push @r, $_;
+}
+is(scalar @r, $r, 'implicit assign to $_ in while()');
+
+my @s = ();
+my $pat = '*/a*.t';
+while (glob ($pat)) {
+ print "# $_\n";
+ push @s, $_;
+}
+is("@r", "@s", 'explicit glob() gets assign magic too');
+
+package Foo;
+use File::DosGlob 'glob';
+use Test::More;
+@s = ();
+$pat = '*/a*.t';
+while (glob($pat)) {
+ print "# $_\n";
+ push @s, $_;
+}
+is("@r", "@s", 'in a different package');
+
+@s = ();
+while (<*/a*.t>) {
+ my $i = 0;
+ print "# $_ <";
+ push @s, $_;
+ while (<*/b*.t>) {
+ print " $_";
+ $i++;
+ }
+ print " >\n";
+}
+is("@r", "@s", 'different glob ops maintain independent contexts');
+
+@s = ();
+eval <<'EOT';
+use File::DosGlob 'GLOBAL_glob';
+package Bar;
+while (<*/a*.t>) {
+ my $i = 0;
+ print "# $_ <";
+ push @s, $_;
+ while (glob '*/b*.t') {
+ print " $_";
+ $i++;
+ }
+ print " >\n";
+}
+EOT
+is("@r", "@s", 'global override');
+
+# Test that a glob pattern containing ()'s works.
+# NB. The spaces in the glob patterns need to be backslash escaped.
+my $filename_containing_parens = "foo (123) bar";
+SKIP: {
+ skip("can't create '$filename_containing_parens': $!", 9)
+ unless open my $touch, ">", $filename_containing_parens;
+ close $touch;
+
+ foreach my $pattern ("foo\\ (*", "*)\\ bar", "foo\\ (1*3)\\ bar") {
+ @r = ();
+ eval { @r = File::DosGlob::glob($pattern) };
+ is($@, "", "eval for glob($pattern)");
+ is(scalar @r, 1);
+ is($r[0], $filename_containing_parens);
+ }
+
+ 1 while unlink $filename_containing_parens;
+}
+
+# Test the globbing of a drive relative pattern such as "c:*.pl".
+# NB. previous versions of DosGlob inserted "./ after the drive letter to
+# make the expansion process work correctly. However, while it is harmless,
+# there is no reason for it to be in the result.
+my $cwd = Cwd::cwd();
+if ($cwd =~ /^([a-zA-Z]:)/) {
+ my $drive = $1;
+ @r = ();
+ # This assumes we're in the "t" directory.
+ eval { @r = File::DosGlob::glob("${drive}io/*.t") };
+ ok(@r and !grep !m|^${drive}io/[^/]*\.t$|, @r);
+} else {
+ pass();
+}
+
+# Test that our internal data are freed when the caller’s op tree is freed,
+# even if iteration has not finished.
+# Using XS::APItest is the only simple way to test this. Since this is a
+# core-only module, this should be OK.
+SKIP: {
+ require Config;
+ skip "no XS::APItest"
+ unless eval { require XS::APItest; import XS::APItest "sv_count"; 1 };
+ # Use a random number of ops, so that the glob op does not reuse the
+ # same address each time, giving us false passes.
+ my($count,$count2);
+ eval '$x+'x(1+rand() * 100) . '<*>';
+ $count = sv_count();
+ eval '$x+'x(1+rand() * 100) . '<*>';
+ $count2 = sv_count();
+ cmp_ok $count2, '<=', $count,
+ 'no leak when partly iterated caller is freed';
+}
diff --git a/gnu/usr.bin/perl/ext/File-Glob/Glob.pm b/gnu/usr.bin/perl/ext/File-Glob/Glob.pm
index cd15922f32e..f144b5179dc 100644
--- a/gnu/usr.bin/perl/ext/File-Glob/Glob.pm
+++ b/gnu/usr.bin/perl/ext/File-Glob/Glob.pm
@@ -4,7 +4,6 @@ use strict;
our($VERSION, @ISA, @EXPORT_OK, @EXPORT_FAIL, %EXPORT_TAGS, $DEFAULT_FLAGS);
require XSLoader;
-use feature 'switch';
@ISA = qw(Exporter);
@@ -38,26 +37,31 @@ pop @{$EXPORT_TAGS{bsd_glob}}; # no "glob"
@EXPORT_OK = (@{$EXPORT_TAGS{'glob'}}, 'csh_glob');
-$VERSION = '1.17';
+$VERSION = '1.20_01';
sub import {
require Exporter;
local $Exporter::ExportLevel = $Exporter::ExportLevel + 1;
Exporter::import(grep {
- my $passthrough;
- given ($_) {
- $DEFAULT_FLAGS &= ~GLOB_NOCASE() when ':case';
- $DEFAULT_FLAGS |= GLOB_NOCASE() when ':nocase';
- when (':globally') {
- no warnings 'redefine';
- *CORE::GLOBAL::glob = \&File::Glob::csh_glob;
- }
- if ($_ eq ':bsd_glob') {
- no strict; *{caller."::glob"} = \&bsd_glob_override;
- }
- $passthrough = 1;
+ my $passthrough;
+ if ($_ eq ':case') {
+ $DEFAULT_FLAGS &= ~GLOB_NOCASE()
+ }
+ elsif ($_ eq ':nocase') {
+ $DEFAULT_FLAGS |= GLOB_NOCASE();
+ }
+ elsif ($_ eq ':globally') {
+ no warnings 'redefine';
+ *CORE::GLOBAL::glob = \&File::Glob::csh_glob;
}
- $passthrough;
+ elsif ($_ eq ':bsd_glob') {
+ no strict; *{caller."::glob"} = \&bsd_glob_override;
+ $passthrough = 1;
+ }
+ else {
+ $passthrough = 1;
+ }
+ $passthrough;
} @_);
}
@@ -71,7 +75,7 @@ if ($^O =~ /^(?:MSWin32|VMS|os2|dos|riscos)$/) {
# File::Glob::glob() is deprecated because its prototype is different from
# CORE::glob() (use bsd_glob() instead)
sub glob {
- splice @_, 1; # don't pass PL_glob_index as flags!
+ splice @_, 1; # no flags
goto &bsd_glob;
}
diff --git a/gnu/usr.bin/perl/ext/File-Glob/Glob.xs b/gnu/usr.bin/perl/ext/File-Glob/Glob.xs
index 3ea05909c6e..c20f124c971 100644
--- a/gnu/usr.bin/perl/ext/File-Glob/Glob.xs
+++ b/gnu/usr.bin/perl/ext/File-Glob/Glob.xs
@@ -9,8 +9,12 @@
#define MY_CXT_KEY "File::Glob::_guts" XS_VERSION
typedef struct {
+#ifdef USE_ITHREADS
+ tTHX interp;
+#endif
int x_GLOB_ERROR;
HV * x_GLOB_ENTRIES;
+ Perl_ophook_t x_GLOB_OLD_OPHOOK;
} my_cxt_t;
START_MY_CXT
@@ -67,19 +71,13 @@ iterate(pTHX_ bool(*globber)(pTHX_ AV *entries, SV *patsv))
dSP;
dMY_CXT;
- SV * const cxixsv = POPs;
- const char *cxixpv;
- STRLEN cxixlen;
+ const char * const cxixpv = (char *)&PL_op;
+ STRLEN const cxixlen = sizeof(OP *);
AV *entries;
U32 const gimme = GIMME_V;
SV *patsv = POPs;
bool on_stack = FALSE;
- /* assume global context if not provided one */
- SvGETMAGIC(cxixsv);
- if (SvOK(cxixsv)) cxixpv = SvPV_nomg(cxixsv, cxixlen);
- else cxixpv = "_G_", cxixlen = 3;
-
if (!MY_CXT.x_GLOB_ENTRIES) MY_CXT.x_GLOB_ENTRIES = newHV();
entries = (AV *)*(hv_fetch(MY_CXT.x_GLOB_ENTRIES, cxixpv, cxixlen, 1));
@@ -93,6 +91,7 @@ iterate(pTHX_ bool(*globber)(pTHX_ AV *entries, SV *patsv))
/* chuck it all out, quick or slow */
if (gimme == G_ARRAY) {
if (!on_stack) {
+ EXTEND(SP, AvFILLp(entries)+1);
Copy(AvARRAY(entries), SP+1, AvFILLp(entries)+1, SV *);
SP += AvFILLp(entries)+1;
}
@@ -317,6 +316,20 @@ doglob_iter_wrapper(pTHX_ AV *entries, SV *patsv)
return FALSE;
}
+static void
+glob_ophook(pTHX_ OP *o)
+{
+ if (PL_dirty) return;
+ {
+ dMY_CXT;
+ if (MY_CXT.x_GLOB_ENTRIES
+ && (o->op_type == OP_GLOB || o->op_type == OP_ENTERSUB))
+ hv_delete(MY_CXT.x_GLOB_ENTRIES, (char *)&o, sizeof(OP *),
+ G_DISCARD);
+ if (MY_CXT.x_GLOB_OLD_OPHOOK) MY_CXT.x_GLOB_OLD_OPHOOK(aTHX_ o);
+ }
+}
+
MODULE = File::Glob PACKAGE = File::Glob
int
@@ -354,13 +367,11 @@ void
csh_glob(...)
PPCODE:
/* For backward-compatibility with the original Perl function, we sim-
- * ply take the first two arguments, regardless of how many there are.
+ * ply take the first argument, regardless of how many there are.
*/
- if (items >= 2) SP += 2;
+ if (items) SP ++;
else {
- SP += items;
XPUSHs(&PL_sv_undef);
- if (!items) XPUSHs(&PL_sv_undef);
}
PUTBACK;
csh_glob_iter(aTHX);
@@ -369,16 +380,41 @@ PPCODE:
void
bsd_glob_override(...)
PPCODE:
- if (items >= 2) SP += 2;
+ if (items) SP ++;
else {
- SP += items;
XPUSHs(&PL_sv_undef);
- if (!items) XPUSHs(&PL_sv_undef);
}
PUTBACK;
iterate(aTHX_ doglob_iter_wrapper);
SPAGAIN;
+#ifdef USE_ITHREADS
+
+void
+CLONE(...)
+INIT:
+ HV *glob_entries_clone = NULL;
+CODE:
+ PERL_UNUSED_ARG(items);
+ {
+ dMY_CXT;
+ if ( MY_CXT.x_GLOB_ENTRIES ) {
+ CLONE_PARAMS param;
+ param.stashes = NULL;
+ param.flags = 0;
+ param.proto_perl = MY_CXT.interp;
+
+ glob_entries_clone = MUTABLE_HV(sv_dup_inc((SV*)MY_CXT.x_GLOB_ENTRIES, &param));
+ }
+ }
+ {
+ MY_CXT_CLONE;
+ MY_CXT.x_GLOB_ENTRIES = glob_entries_clone;
+ MY_CXT.interp = aTHX;
+ }
+
+#endif
+
BOOT:
{
#ifndef PERL_EXTERNAL_GLOB
@@ -393,6 +429,11 @@ BOOT:
{
dMY_CXT;
MY_CXT.x_GLOB_ENTRIES = NULL;
+ MY_CXT.x_GLOB_OLD_OPHOOK = PL_opfreehook;
+#ifdef USE_ITHREADS
+ MY_CXT.interp = aTHX;
+#endif
+ PL_opfreehook = glob_ophook;
}
}
diff --git a/gnu/usr.bin/perl/ext/File-Glob/t/basic.t b/gnu/usr.bin/perl/ext/File-Glob/t/basic.t
index bcd99996215..78710753f9c 100755
--- a/gnu/usr.bin/perl/ext/File-Glob/t/basic.t
+++ b/gnu/usr.bin/perl/ext/File-Glob/t/basic.t
@@ -52,7 +52,7 @@ if (GLOB_ERROR) {
SKIP: {
my ($name, $home);
skip $^O, 1 if $^O eq 'MSWin32' || $^O eq 'NetWare' || $^O eq 'VMS'
- || $^O eq 'os2' || $^O eq 'beos';
+ || $^O eq 'os2';
skip "Can't find user for $>: $@", 1 unless eval {
($name, $home) = (getpwuid($>))[0,7];
1;
@@ -130,7 +130,7 @@ SKIP: {
# check bad protections
# should return an empty list, and set ERROR
SKIP: {
- skip $^O, 2 if $^O eq 'mpeix' or $^O eq 'MSWin32' or $^O eq 'NetWare'
+ skip $^O, 2 if $^O eq 'MSWin32' or $^O eq 'NetWare'
or $^O eq 'os2' or $^O eq 'VMS' or $^O eq 'cygwin';
skip "AFS", 2 if Cwd::cwd() =~ m#^$Config{'afsroot'}#s;
skip "running as root", 2 if not $>;
@@ -159,9 +159,10 @@ is_deeply(\@a, ['a', 'b']);
@a = grep !/(,v$|~$|\.(pm|ori?g|rej)$)/, @a;
@a = (grep !/test.pl/, @a) if $^O eq 'VMS';
+map { $_ =~ s/test\.?/TEST/i } @a if $^O eq 'VMS';
print "# @a\n";
-is_deeply(\@a, [($vms_mode ? 'test.' : 'TEST'), 'a', 'b']);
+is_deeply(\@a, ['TEST', 'a', 'b']);
# "~" should expand to $ENV{HOME}
{
diff --git a/gnu/usr.bin/perl/ext/File-Glob/t/rt114984.t b/gnu/usr.bin/perl/ext/File-Glob/t/rt114984.t
new file mode 100644
index 00000000000..285bb70e957
--- /dev/null
+++ b/gnu/usr.bin/perl/ext/File-Glob/t/rt114984.t
@@ -0,0 +1,31 @@
+use strict;
+use warnings;
+use v5.16.0;
+use File::Temp 'tempdir';
+use File::Spec::Functions;
+use Test::More;
+
+BEGIN {
+ plan skip_all => "Home-grown glob does not do character classes on $^O" if $^O eq 'VMS';
+}
+
+plan tests => 1;
+
+my @md = (1..305);
+my @mp = (1000..1205);
+
+my $path = tempdir uc cleanup => 1;
+
+foreach (@md) {
+ open(my $f, ">", catfile $path, "md_$_.dat");
+ close $f;
+}
+
+foreach (@mp) {
+ open(my $f, ">", catfile $path, "mp_$_.dat");
+ close $f;
+}
+my @b = glob(qq{$path/mp_[0123456789]*.dat
+ $path/md_[0123456789]*.dat});
+is scalar(@b), @md+@mp,
+ 'File::Glob extends the stack when returning a long list';
diff --git a/gnu/usr.bin/perl/ext/File-Glob/t/taint.t b/gnu/usr.bin/perl/ext/File-Glob/t/taint.t
index 3f49836bce8..4751303fe0e 100755
--- a/gnu/usr.bin/perl/ext/File-Glob/t/taint.t
+++ b/gnu/usr.bin/perl/ext/File-Glob/t/taint.t
@@ -10,7 +10,14 @@ BEGIN {
}
}
-use Test::More tests => 2;
+use Test::More;
+BEGIN {
+ plan(
+ ${^TAINT}
+ ? (tests => 2)
+ : (skip_all => "Appear to running a perl without taint support")
+ );
+}
BEGIN {
use_ok('File::Glob');
diff --git a/gnu/usr.bin/perl/ext/File-Glob/t/threads.t b/gnu/usr.bin/perl/ext/File-Glob/t/threads.t
new file mode 100644
index 00000000000..03f00ceb63f
--- /dev/null
+++ b/gnu/usr.bin/perl/ext/File-Glob/t/threads.t
@@ -0,0 +1,71 @@
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require Config; import Config;
+ if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {
+ print "1..0\n";
+ exit 0;
+ }
+}
+use strict;
+use warnings;
+# Test::More needs threads pre-loaded
+use if $Config{useithreads}, 'threads';
+use Test::More;
+
+BEGIN {
+ if (! $Config{'useithreads'}) {
+ plan skip_all => "Perl not compiled with 'useithreads'";
+ }
+}
+
+use File::Temp qw(tempdir);
+use File::Spec qw();
+use File::Glob qw(csh_glob);
+
+my($dir) = tempdir(CLEANUP => 1)
+ or die "Could not create temporary directory";
+
+my @temp_files = qw(1_file.tmp 2_file.tmp 3_file.tmp);
+for my $file (@temp_files) {
+ open my $fh, ">", File::Spec->catfile($dir, $file)
+ or die "Could not create file $dir/$file: $!";
+ close $fh;
+}
+my $cwd = Cwd::cwd();
+chdir $dir
+ or die "Could not chdir to $dir: $!";
+
+sub do_glob { scalar csh_glob("*") }
+# Stablish some glob state
+my $first_file = do_glob();
+is($first_file, $temp_files[0]);
+
+my @files;
+push @files, threads->create(\&do_glob)->join() for 1..5;
+is_deeply(
+ \@files,
+ [($temp_files[1]) x 5],
+ "glob() state is cloned for new threads"
+);
+
+@files = threads->create({'context' => 'list'},
+ sub {
+ return do_glob(), threads->create(\&do_glob)->join()
+ })->join();
+
+is_deeply(
+ \@files,
+ [@temp_files[1,2]],
+ "..and for new threads inside threads"
+);
+
+my $second_file = do_glob();
+is($second_file, $temp_files[1], "state doesn't leak from threads");
+
+chdir $cwd
+ or die "Could not chdir back to $cwd: $!";
+
+done_testing;
diff --git a/gnu/usr.bin/perl/ext/GDBM_File/GDBM_File.xs b/gnu/usr.bin/perl/ext/GDBM_File/GDBM_File.xs
index afb361ca978..33e08e20d13 100644
--- a/gnu/usr.bin/perl/ext/GDBM_File/GDBM_File.xs
+++ b/gnu/usr.bin/perl/ext/GDBM_File/GDBM_File.xs
@@ -25,7 +25,13 @@ typedef datum datum_key_copy;
#define GDBM_BLOCKSIZE 0 /* gdbm defaults to stat blocksize */
+#if defined(GDBM_VERSION_MAJOR) && defined(GDBM_VERSION_MINOR) \
+ && GDBM_VERSION_MAJOR > 1 || \
+ (GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR >= 9)
+typedef void (*FATALFUNC)(const char *);
+#else
typedef void (*FATALFUNC)();
+#endif
#ifndef GDBM_FAST
static int
@@ -58,6 +64,11 @@ output_datum(pTHX_ SV *arg, char *str, int size)
#define gdbm_setopt(db,optflag,optval,optlen) not_here("gdbm_setopt")
#endif
+static void
+croak_string(const char *message) {
+ Perl_croak_nocontext("%s", message);
+}
+
#include "const-c.inc"
MODULE = GDBM_File PACKAGE = GDBM_File PREFIX = gdbm_
@@ -65,18 +76,18 @@ MODULE = GDBM_File PACKAGE = GDBM_File PREFIX = gdbm_
INCLUDE: const-xs.inc
GDBM_File
-gdbm_TIEHASH(dbtype, name, read_write, mode, fatal_func = (FATALFUNC)croak)
+gdbm_TIEHASH(dbtype, name, read_write, mode)
char * dbtype
char * name
int read_write
int mode
- FATALFUNC fatal_func
CODE:
{
GDBM_FILE dbp ;
RETVAL = NULL ;
- if ((dbp = gdbm_open(name, GDBM_BLOCKSIZE, read_write, mode, fatal_func))) {
+ if ((dbp = gdbm_open(name, GDBM_BLOCKSIZE, read_write, mode,
+ (FATALFUNC) croak_string))) {
RETVAL = (GDBM_File)safecalloc(1, sizeof(GDBM_File_type)) ;
RETVAL->dbp = dbp ;
}
diff --git a/gnu/usr.bin/perl/ext/GDBM_File/t/fatal.t b/gnu/usr.bin/perl/ext/GDBM_File/t/fatal.t
new file mode 100644
index 00000000000..e15e5e2d495
--- /dev/null
+++ b/gnu/usr.bin/perl/ext/GDBM_File/t/fatal.t
@@ -0,0 +1,45 @@
+#!./perl -w
+use strict;
+
+use Test::More;
+use Config;
+
+BEGIN {
+ plan(skip_all => "GDBM_File was not built")
+ unless $Config{extensions} =~ /\bGDBM_File\b/;
+
+ plan(tests => 8);
+ use_ok('GDBM_File');
+}
+
+unlink <Op_dbmx*>;
+
+open my $fh, $^X or die "Can't open $^X: $!";
+my $fileno = fileno $fh;
+isnt($fileno, undef, "Can find next available file descriptor");
+close $fh or die $!;
+
+is((open $fh, "<&=$fileno"), undef,
+ "Check that we cannot open fileno $fileno. \$! is $!");
+
+umask(0);
+my %h;
+isa_ok(tie(%h, 'GDBM_File', 'Op_dbmx', GDBM_WRCREAT, 0640), 'GDBM_File');
+
+isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno")
+ or diag("\$! = $!");
+isnt(close $fh, undef,
+ "close fileno $fileno, out from underneath the GDBM_File");
+is(eval {
+ $h{Perl} = 'Rules';
+ untie %h;
+ 1;
+}, undef, 'Trapped error when attempting to write to knobbled GDBM_File');
+
+# Observed "File write error" and "lseek error" from two different systems.
+# So there might be more variants. Important part was that we trapped the error
+# via croak.
+like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/,
+ 'expected error message from GDBM_File');
+
+unlink <Op_dbmx*>;
diff --git a/gnu/usr.bin/perl/ext/Hash-Util-FieldHash/t/11_hashassign.t b/gnu/usr.bin/perl/ext/Hash-Util-FieldHash/t/11_hashassign.t
index e492fa228fc..d3e45d32de9 100755
--- a/gnu/usr.bin/perl/ext/Hash-Util-FieldHash/t/11_hashassign.t
+++ b/gnu/usr.bin/perl/ext/Hash-Util-FieldHash/t/11_hashassign.t
@@ -282,9 +282,9 @@ foreach my $chr (60, 200, 600, 6000, 60000) {
fieldhash %h;
is( (join ':', %h = (1) x 8), '1:1',
'hash assignment in list context removes duplicates' );
- is( scalar( %h = (1,2,1,3,1,4,1,5) ), 2,
+ is( scalar( %h = (1,2,1,3,1,4,1,5) ), 8,
'hash assignment in scalar context' );
- is( scalar( ($x,%h) = (0,1,2,1,3,1,4,1,5) ), 3,
+ is( scalar( ($x,%h) = (0,1,2,1,3,1,4,1,5) ), 9,
'scalar + hash assignment in scalar context' );
$ar = [ %h = (1,2,1,3,1,4,1,5) ];
is( $#$ar, 1, 'hash assignment in list context' );
diff --git a/gnu/usr.bin/perl/ext/Hash-Util/Util.xs b/gnu/usr.bin/perl/ext/Hash-Util/Util.xs
index 678e64d9b7e..2758d69047f 100644
--- a/gnu/usr.bin/perl/ext/Hash-Util/Util.xs
+++ b/gnu/usr.bin/perl/ext/Hash-Util/Util.xs
@@ -60,3 +60,185 @@ hv_store(hash, key, val)
XSRETURN_YES;
}
}
+
+void
+hash_seed()
+ PROTOTYPE:
+ PPCODE:
+ mXPUSHs(newSVpvn((char *)PERL_HASH_SEED,PERL_HASH_SEED_BYTES));
+ XSRETURN(1);
+
+
+void
+hash_value(string)
+ SV* string
+ PROTOTYPE: $
+ PPCODE:
+ STRLEN len;
+ char *pv;
+ UV uv;
+
+ pv= SvPV(string,len);
+ PERL_HASH(uv,pv,len);
+ XSRETURN_UV(uv);
+
+void
+hash_traversal_mask(rhv, ...)
+ SV* rhv
+ PPCODE:
+{
+#ifdef PERL_HASH_RANDOMIZE_KEYS
+ if (SvROK(rhv) && SvTYPE(SvRV(rhv))==SVt_PVHV && !SvMAGICAL(SvRV(rhv))) {
+ HV *hv = (HV *)SvRV(rhv);
+ if (items>1) {
+ hv_rand_set(hv, SvUV(ST(1)));
+ }
+ if (SvOOK(hv)) {
+ XSRETURN_UV(HvRAND_get(hv));
+ } else {
+ XSRETURN_UNDEF;
+ }
+ }
+#else
+ Perl_croak(aTHX_ "Perl has not been compiled with support for randomized hash key traversal");
+#endif
+}
+
+void
+bucket_info(rhv)
+ SV* rhv
+ PPCODE:
+{
+ /*
+
+ Takes a non-magical hash ref as an argument and returns a list of
+ statistics about the hash. The number and keys and the size of the
+ array will always be reported as the first two values. If the array is
+ actually allocated (they are lazily allocated), then additionally
+ will return a list of counts of bucket lengths. In other words in
+
+ ($keys, $buckets, $used, @length_count)= hash::bucket_info(\%hash);
+
+ $length_count[0] is the number of empty buckets, and $length_count[1]
+ is the number of buckets with only one key in it, $buckets - $length_count[0]
+ gives the number of used buckets, and @length_count-1 is the maximum
+ bucket depth.
+
+ If the argument is not a hash ref, or if it is magical, then returns
+ nothing (the empty list).
+
+ */
+ if (SvROK(rhv) && SvTYPE(SvRV(rhv))==SVt_PVHV && !SvMAGICAL(SvRV(rhv))) {
+ const HV * const hv = (const HV *) SvRV(rhv);
+ U32 max_bucket_index= HvMAX(hv);
+ U32 total_keys= HvUSEDKEYS(hv);
+ HE **bucket_array= HvARRAY(hv);
+ mXPUSHi(total_keys);
+ mXPUSHi(max_bucket_index+1);
+ mXPUSHi(0); /* for the number of used buckets */
+#define BUCKET_INFO_ITEMS_ON_STACK 3
+ if (!bucket_array) {
+ XSRETURN(BUCKET_INFO_ITEMS_ON_STACK);
+ } else {
+ /* we use chain_length to index the stack - we eliminate an add
+ * by initializing things with the number of items already on the stack.
+ * If we have 2 items then ST(2+0) (the third stack item) will be the counter
+ * for empty chains, ST(2+1) will be for chains with one element, etc.
+ */
+ I32 max_chain_length= BUCKET_INFO_ITEMS_ON_STACK - 1; /* so we do not have to do an extra push for the 0 index */
+ HE *he;
+ U32 bucket_index;
+ for ( bucket_index= 0; bucket_index <= max_bucket_index; bucket_index++ ) {
+ I32 chain_length= BUCKET_INFO_ITEMS_ON_STACK;
+ for (he= bucket_array[bucket_index]; he; he= HeNEXT(he) ) {
+ chain_length++;
+ }
+ while ( max_chain_length < chain_length ) {
+ mXPUSHi(0);
+ max_chain_length++;
+ }
+ SvIVX( ST( chain_length ) )++;
+ }
+ /* now set the number of used buckets */
+ SvIVX( ST( BUCKET_INFO_ITEMS_ON_STACK - 1 ) ) = max_bucket_index - SvIVX( ST( BUCKET_INFO_ITEMS_ON_STACK ) ) + 1;
+ XSRETURN( max_chain_length + 1 ); /* max_chain_length is the index of the last item on the stack, so we add 1 */
+ }
+#undef BUCKET_INFO_ITEMS_ON_STACK
+ }
+ XSRETURN(0);
+}
+
+void
+bucket_array(rhv)
+ SV* rhv
+ PPCODE:
+{
+ /* Returns an array of arrays representing key/bucket mappings.
+ * Each element of the array contains either an integer or a reference
+ * to an array of keys. A plain integer represents K empty buckets. An
+ * array ref represents a single bucket, with each element being a key in
+ * the hash. (Note this treats a placeholder as a normal key.)
+ *
+ * This allows one to "see" the keyorder. Note the "insert first" nature
+ * of the hash store, combined with regular remappings means that relative
+ * order of keys changes each remap.
+ */
+ if (SvROK(rhv) && SvTYPE(SvRV(rhv))==SVt_PVHV && !SvMAGICAL(SvRV(rhv))) {
+ const HV * const hv = (const HV *) SvRV(rhv);
+ HE **he_ptr= HvARRAY(hv);
+ if (!he_ptr) {
+ XSRETURN(0);
+ } else {
+ U32 i, max;
+ AV *info_av;
+ HE *he;
+ I32 empty_count=0;
+ if (SvMAGICAL(hv)) {
+ Perl_croak(aTHX_ "hash::bucket_array only works on 'normal' hashes");
+ }
+ info_av= newAV();
+ max= HvMAX(hv);
+ mXPUSHs(newRV_noinc((SV*)info_av));
+ for ( i= 0; i <= max; i++ ) {
+ AV *key_av= NULL;
+ for (he= he_ptr[i]; he; he= HeNEXT(he) ) {
+ SV *key_sv;
+ char *str;
+ STRLEN len;
+ char mode;
+ if (!key_av) {
+ key_av= newAV();
+ if (empty_count) {
+ av_push(info_av, newSViv(empty_count));
+ empty_count= 0;
+ }
+ av_push(info_av, (SV *)newRV_noinc((SV *)key_av));
+ }
+ if (HeKLEN(he) == HEf_SVKEY) {
+ SV *sv= HeSVKEY(he);
+ SvGETMAGIC(sv);
+ str= SvPV(sv, len);
+ mode= SvUTF8(sv) ? 1 : 0;
+ } else {
+ str= HeKEY(he);
+ len= HeKLEN(he);
+ mode= HeKUTF8(he) ? 1 : 0;
+ }
+ key_sv= newSVpvn(str,len);
+ av_push(key_av,key_sv);
+ if (mode) {
+ SvUTF8_on(key_sv);
+ }
+ }
+ if (!key_av)
+ empty_count++;
+ }
+ if (empty_count) {
+ av_push(info_av, newSViv(empty_count));
+ empty_count++;
+ }
+ }
+ XSRETURN(1);
+ }
+ XSRETURN(0);
+}
diff --git a/gnu/usr.bin/perl/ext/Hash-Util/lib/Hash/Util.pm b/gnu/usr.bin/perl/ext/Hash-Util/lib/Hash/Util.pm
index 8555821309b..8ae25d14d97 100644
--- a/gnu/usr.bin/perl/ext/Hash-Util/lib/Hash/Util.pm
+++ b/gnu/usr.bin/perl/ext/Hash-Util/lib/Hash/Util.pm
@@ -17,19 +17,24 @@ our @EXPORT_OK = qw(
lock_keys unlock_keys
lock_value unlock_value
lock_hash unlock_hash
- lock_keys_plus hash_locked
+ lock_keys_plus
+ hash_locked hash_unlocked
+ hashref_locked hashref_unlocked
hidden_keys legal_keys
lock_ref_keys unlock_ref_keys
lock_ref_value unlock_ref_value
lock_hashref unlock_hashref
- lock_ref_keys_plus hashref_locked
+ lock_ref_keys_plus
hidden_ref_keys legal_ref_keys
- hash_seed hv_store
+ hash_seed hash_value hv_store
+ bucket_stats bucket_info bucket_array
+ lock_hash_recurse unlock_hash_recurse
+ hash_traversal_mask
);
-our $VERSION = '0.11';
+our $VERSION = '0.16';
require XSLoader;
XSLoader::load();
@@ -53,12 +58,28 @@ Hash::Util - A selection of general-utility hash subroutines
# Restricted hashes
use Hash::Util qw(
- hash_seed all_keys
+ fieldhash fieldhashes
+
+ all_keys
lock_keys unlock_keys
lock_value unlock_value
lock_hash unlock_hash
- lock_keys_plus hash_locked
+ lock_keys_plus
+ hash_locked hash_unlocked
+ hashref_locked hashref_unlocked
hidden_keys legal_keys
+
+ lock_ref_keys unlock_ref_keys
+ lock_ref_value unlock_ref_value
+ lock_hashref unlock_hashref
+ lock_ref_keys_plus
+ hidden_ref_keys legal_ref_keys
+
+ hash_seed hash_value hv_store
+ bucket_stats bucket_info bucket_array
+ lock_hash_recurse unlock_hash_recurse
+
+ hash_traversal_mask
);
%hash = (foo => 42, bar => 23);
@@ -86,6 +107,12 @@ Hash::Util - A selection of general-utility hash subroutines
my $hashes_are_randomised = hash_seed() != 0;
+ my $int_hash_value = hash_value( 'string' );
+
+ my $mask= hash_traversal_mask(%hash);
+
+ hash_traversal_mask(%hash,1234);
+
=head1 DESCRIPTION
C<Hash::Util> and C<Hash::Util::FieldHash> contain special functions
@@ -129,8 +156,8 @@ the hash before you call lock_keys() so this shouldn't be a problem.
Removes the restriction on the %hash's keyset.
-B<Note> that if any of the values of the hash have been locked they will not be unlocked
-after this sub executes.
+B<Note> that if any of the values of the hash have been locked they will not
+be unlocked after this sub executes.
Both routines return a reference to the hash operated on.
@@ -190,7 +217,7 @@ Returns a reference to %hash
sub lock_ref_keys_plus {
- my ($hash,@keys)=@_;
+ my ($hash,@keys) = @_;
my @delete;
Internals::hv_clear_placeholders(%$hash);
foreach my $key (@keys) {
@@ -301,9 +328,9 @@ lock_hash() locks an entire hash and any hashes it references recursively,
making all keys and values read-only. No value can be changed, no keys can
be added or deleted.
-B<Only> recurses into hashes that are referenced by another hash. Thus a
-Hash of Hashes (HoH) will all be restricted, but a Hash of Arrays of Hashes
-(HoAoH) will only have the top hash restricted.
+This method B<only> recurses into hashes that are referenced by another hash.
+Thus a Hash of Hashes (HoH) will all be restricted, but a Hash of Arrays of
+Hashes (HoAoH) will only have the top hash restricted.
unlock_hash_recurse(%hash);
@@ -346,9 +373,29 @@ sub unlock_hashref_recurse {
sub lock_hash_recurse (\%) { lock_hashref_recurse(@_) }
sub unlock_hash_recurse (\%) { unlock_hashref_recurse(@_) }
+=item B<hashref_locked>
+
+=item B<hash_locked>
+
+ hashref_locked(\%hash) and print "Hash is locked!\n";
+ hash_locked(%hash) and print "Hash is locked!\n";
+
+Returns true if the hash and its keys are locked.
+
+=cut
+
+sub hashref_locked {
+ my $hash=shift;
+ Internals::SvREADONLY(%$hash);
+}
+
+sub hash_locked(\%) { hashref_locked(@_) }
+
+=item B<hashref_unlocked>
=item B<hash_unlocked>
+ hashref_unlocked(\%hash) and print "Hash is unlocked!\n";
hash_unlocked(%hash) and print "Hash is unlocked!\n";
Returns true if the hash and its keys are unlocked.
@@ -357,7 +404,7 @@ Returns true if the hash and its keys are unlocked.
sub hashref_unlocked {
my $hash=shift;
- return Internals::SvREADONLY($hash)
+ !Internals::SvREADONLY(%$hash);
}
sub hash_unlocked(\%) { hashref_unlocked(@_) }
@@ -424,9 +471,7 @@ unrestricted hash.
my $hash_seed = hash_seed();
-hash_seed() returns the seed number used to randomise hash ordering.
-Zero means the "traditional" random hash ordering, non-zero means the
-new even more random hash ordering introduced in Perl 5.8.1.
+hash_seed() returns the seed bytes used to randomise hash ordering.
B<Note that the hash seed is sensitive information>: by knowing it one
can craft a denial-of-service attack against Perl code, even remotely,
@@ -434,10 +479,121 @@ see L<perlsec/"Algorithmic Complexity Attacks"> for more information.
B<Do not disclose the hash seed> to people who don't need to know it.
See also L<perlrun/PERL_HASH_SEED_DEBUG>.
+Prior to Perl 5.17.6 this function returned a UV, it now returns a string,
+which may be of nearly any size as determined by the hash function your
+Perl has been built with. Possible sizes may be but are not limited to
+4 bytes (for most hash algorithms) and 16 bytes (for siphash).
+
+=item B<hash_value>
+
+ my $hash_value = hash_value($string);
+
+hash_value() returns the current perl's internal hash value for a given
+string.
+
+Returns a 32 bit integer representing the hash value of the string passed
+in. This value is only reliable for the lifetime of the process. It may
+be different depending on invocation, environment variables, perl version,
+architectures, and build options.
+
+B<Note that the hash value of a given string is sensitive information>:
+by knowing it one can deduce the hash seed which in turn can allow one to
+craft a denial-of-service attack against Perl code, even remotely,
+see L<perlsec/"Algorithmic Complexity Attacks"> for more information.
+B<Do not disclose the hash value of a string> to people who don't need to
+know it. See also L<perlrun/PERL_HASH_SEED_DEBUG>.
+
+=item B<bucket_info>
+
+Return a set of basic information about a hash.
+
+ my ($keys, $buckets, $used, @length_counts)= bucket_info($hash);
+
+Fields are as follows:
+
+ 0: Number of keys in the hash
+ 1: Number of buckets in the hash
+ 2: Number of used buckets in the hash
+ rest : list of counts, Kth element is the number of buckets
+ with K keys in it.
+
+See also bucket_stats() and bucket_array().
+
+=item B<bucket_stats>
+
+Returns a list of statistics about a hash.
+
+ my ($keys, buckets, $used, $utilization_ratio, $collision_pct,
+ $mean, $stddev, @length_counts) = bucket_info($hashref);
+
+
+Fields are as follows:
+
+
+ 0: Number of keys in the hash
+ 1: Number of buckets in the hash
+ 2: Number of used buckets in the hash
+ 3: Hash Quality Score
+ 4: Percent of buckets used
+ 5: Percent of keys which are in collision
+ 6: Average bucket length
+ 7: Standard Deviation of bucket lengths.
+ rest : list of counts, Kth element is the number of buckets
+ with K keys in it.
+
+See also bucket_info() and bucket_array().
+
+Note that Hash Quality Score would be 1 for an ideal hash, numbers
+close to and below 1 indicate good hashing, and number significantly
+above indicate a poor score. In practice it should be around 0.95 to 1.05.
+It is defined as:
+
+ $score= sum( $count[$length] * ($length * ($length + 1) / 2) )
+ /
+ ( ( $keys / 2 * $buckets ) *
+ ( $keys + ( 2 * $buckets ) - 1 ) )
+
+The formula is from the Red Dragon book (reformulated to use the data available)
+and is documented at L<http://www.strchr.com/hash_functions>
+
+=item B<bucket_array>
+
+ my $array= bucket_array(\%hash);
+
+Returns a packed representation of the bucket array associated with a hash. Each element
+of the array is either an integer K, in which case it represents K empty buckets, or
+a reference to another array which contains the keys that are in that bucket.
+
+B<Note that the information returned by bucket_array is sensitive information>:
+by knowing it one can directly attack perl's hash function which in turn may allow
+one to craft a denial-of-service attack against Perl code, even remotely,
+see L<perlsec/"Algorithmic Complexity Attacks"> for more information.
+B<Do not disclose the output of this function> to people who don't need to
+know it. See also L<perlrun/PERL_HASH_SEED_DEBUG>. This function is provided strictly
+for debugging and diagnostics purposes only, it is hard to imagine a reason why it
+would be used in production code.
+
=cut
-sub hash_seed () {
- Internals::rehash_seed();
+
+sub bucket_stats {
+ my ($hash) = @_;
+ my ($keys, $buckets, $used, @length_counts) = bucket_info($hash);
+ my $sum;
+ my $score;
+ for (0 .. $#length_counts) {
+ $sum += ($length_counts[$_] * $_);
+ $score += $length_counts[$_] * ( $_ * ($_ + 1 ) / 2 );
+ }
+ $score = $score /
+ (( $keys / (2 * $buckets )) * ( $keys + ( 2 * $buckets ) - 1 ))
+ if $keys;
+ my $mean= $sum/$buckets;
+ $sum= 0;
+ $sum += ($length_counts[$_] * (($_-$mean)**2)) for 0 .. $#length_counts;
+
+ my $stddev= sqrt($sum/$buckets);
+ return $keys, $buckets, $used, $keys ? ($score, $used/$buckets, ($keys-$used)/$keys, $mean, $stddev, @length_counts) : ();
}
=item B<hv_store>
@@ -449,6 +605,20 @@ sub hash_seed () {
Stores an alias to a variable in a hash instead of copying the value.
+=item B<hash_traversal_mask>
+
+As of Perl 5.18 every hash has its own hash traversal order, and this order
+changes every time a new element is inserted into the hash. This functionality
+is provided by maintaining an unsigned integer mask (U32) which is xor'ed
+with the actual bucket id during a traversal of the hash buckets using keys(),
+values() or each().
+
+You can use this subroutine to get and set the traversal mask for a specific
+hash. Setting the mask ensures that a given hash will produce the same key
+order. B<Note> that this does B<not> guarantee that B<two> hashes will produce
+the same key order for the same hash seed and traversal mask, items that
+collide into one bucket may have different orders regardless of this setting.
+
=back
=head2 Operating on references to hashes.
diff --git a/gnu/usr.bin/perl/ext/Hash-Util/t/Util.t b/gnu/usr.bin/perl/ext/Hash-Util/t/Util.t
index 74d823db05e..63769b8f028 100755
--- a/gnu/usr.bin/perl/ext/Hash-Util/t/Util.t
+++ b/gnu/usr.bin/perl/ext/Hash-Util/t/Util.t
@@ -16,22 +16,28 @@ use Test::More;
my @Exported_Funcs;
BEGIN {
@Exported_Funcs = qw(
- hash_seed all_keys
+ fieldhash fieldhashes
+
+ all_keys
lock_keys unlock_keys
lock_value unlock_value
lock_hash unlock_hash
- lock_keys_plus hash_locked
+ lock_keys_plus
+ hash_locked hash_unlocked
+ hashref_locked hashref_unlocked
hidden_keys legal_keys
lock_ref_keys unlock_ref_keys
lock_ref_value unlock_ref_value
lock_hashref unlock_hashref
- lock_ref_keys_plus hashref_locked
+ lock_ref_keys_plus
hidden_ref_keys legal_ref_keys
- hv_store
+ hash_seed hash_value bucket_stats bucket_info bucket_array
+ hv_store
+ lock_hash_recurse unlock_hash_recurse
);
- plan tests => 204 + @Exported_Funcs;
+ plan tests => 234 + @Exported_Funcs;
use_ok 'Hash::Util', @Exported_Funcs;
}
foreach my $func (@Exported_Funcs) {
@@ -43,7 +49,7 @@ lock_keys(%hash);
eval { $hash{baz} = 99; };
like( $@, qr/^Attempt to access disallowed key 'baz' in a restricted hash/,
'lock_keys()');
-is( $hash{bar}, 23 );
+is( $hash{bar}, 23, '$hash{bar} == 23' );
ok( !exists $hash{baz},'!exists $hash{baz}' );
delete $hash{bar};
@@ -70,7 +76,7 @@ like( $@, qr/^Attempt to delete readonly key 'locked' from a restricted hash/,
eval { $hash{locked} = 42; };
like( $@, qr/^Modification of a read-only value attempted/,
'trying to change a locked key' );
-is( $hash{locked}, 'yep' );
+is( $hash{locked}, 'yep', '$hash{locked} is yep' );
eval { delete $hash{I_dont_exist} };
like( $@, qr/^Attempt to delete disallowed key 'I_dont_exist' from a restricted hash/,
@@ -108,24 +114,23 @@ is( $hash{locked}, 42, 'unlock_value' );
lock_value(%hash, 'RO');
eval { %hash = (KEY => 1) };
- like( $@, qr/^Attempt to delete readonly key 'RO' from a restricted hash/ );
+ like( $@, qr/^Attempt to delete readonly key 'RO' from a restricted hash/,
+ 'attempt to delete readonly key from restricted hash' );
}
{
my %hash = (KEY => 1, RO => 2);
lock_keys(%hash);
eval { %hash = (KEY => 1, RO => 2) };
- is( $@, '');
+ is( $@, '', 'No error message, as expected');
}
-
-
{
my %hash = ();
lock_keys(%hash, qw(foo bar));
is( keys %hash, 0, 'lock_keys() w/keyset shouldnt add new keys' );
$hash{foo} = 42;
- is( keys %hash, 1 );
+ is( keys %hash, 1, '1 element in hash' );
eval { $hash{wibble} = 42 };
like( $@, qr/^Attempt to access disallowed key 'wibble' in a restricted hash/,
'write threw error (locked)');
@@ -135,7 +140,6 @@ is( $hash{locked}, 42, 'unlock_value' );
is( $@, '', 'unlock_keys' );
}
-
{
my %hash = (foo => 42, bar => undef, baz => 0);
lock_keys(%hash, qw(foo bar baz up down));
@@ -150,35 +154,49 @@ is( $hash{locked}, 42, 'unlock_value' );
'locked "wibble"' );
}
-
{
my %hash = (foo => 42, bar => undef);
eval { lock_keys(%hash, qw(foo baz)); };
- is( $@, sprintf("Hash has key 'bar' which is not in the new key ".
- "set at %s line %d.\n", __FILE__, __LINE__ - 2),
+ like( $@, qr/^Hash has key 'bar' which is not in the new key set/,
'carp test' );
}
-
{
my %hash = (foo => 42, bar => 23);
lock_hash( %hash );
+ ok( hashref_locked( \%hash ), 'hashref_locked' );
+ ok( hash_locked( %hash ), 'hash_locked' );
ok( Internals::SvREADONLY(%hash),'Was locked %hash' );
ok( Internals::SvREADONLY($hash{foo}),'Was locked $hash{foo}' );
ok( Internals::SvREADONLY($hash{bar}),'Was locked $hash{bar}' );
unlock_hash ( %hash );
+ ok( hashref_unlocked( { %hash } ), 'hashref_unlocked' );
+ ok( hash_unlocked( %hash ), 'hash_unlocked' );
ok( !Internals::SvREADONLY(%hash),'Was unlocked %hash' );
ok( !Internals::SvREADONLY($hash{foo}),'Was unlocked $hash{foo}' );
ok( !Internals::SvREADONLY($hash{bar}),'Was unlocked $hash{bar}' );
}
+{
+ my %hash = (foo => 42, bar => 23);
+ ok( ! hashref_locked( { %hash } ), 'hashref_locked negated' );
+ ok( ! hash_locked( %hash ), 'hash_locked negated' );
+
+ lock_hash( %hash );
+ ok( ! hashref_unlocked( \%hash ), 'hashref_unlocked negated' );
+ ok( ! hash_unlocked( %hash ), 'hash_unlocked negated' );
+}
lock_keys(%ENV);
eval { () = $ENV{I_DONT_EXIST} };
-like( $@, qr/^Attempt to access disallowed key 'I_DONT_EXIST' in a restricted hash/, 'locked %ENV');
+like(
+ $@,
+ qr/^Attempt to access disallowed key 'I_DONT_EXIST' in a restricted hash/,
+ 'locked %ENV'
+);
{
my %hash;
@@ -309,7 +327,7 @@ like( $@, qr/^Attempt to access disallowed key 'I_DONT_EXIST' in a restricted ha
}
my $hash_seed = hash_seed();
-ok($hash_seed >= 0, "hash_seed $hash_seed");
+ok(defined($hash_seed) && $hash_seed ne '', "hash_seed $hash_seed");
{
package Minder;
@@ -440,6 +458,17 @@ ok($hash_seed >= 0, "hash_seed $hash_seed");
is("@keys","0 2 4 6 8",'lock_ref_keys_plus() @keys DDS/t');
}
{
+ my %hash=(0..9, 'a' => 'alpha');
+ lock_ref_keys_plus(\%hash,'a'..'f');
+ ok(Internals::SvREADONLY(%hash),'lock_ref_keys_plus args overlap');
+ my @hidden=sort(hidden_keys(%hash));
+ my @legal=sort(legal_keys(%hash));
+ my @keys=sort(keys(%hash));
+ is("@hidden","b c d e f",'lock_ref_keys_plus() @hidden overlap');
+ is("@legal","0 2 4 6 8 a b c d e f",'lock_ref_keys_plus() @legal overlap');
+ is("@keys","0 2 4 6 8 a",'lock_ref_keys_plus() @keys overlap');
+}
+{
my %hash=(0..9);
lock_keys_plus(%hash,'a'..'f');
ok(Internals::SvREADONLY(%hash),'lock_keys_plus args DDS/t');
@@ -450,6 +479,17 @@ ok($hash_seed >= 0, "hash_seed $hash_seed");
is("@legal","0 2 4 6 8 a b c d e f",'lock_keys_plus() @legal DDS/t 3');
is("@keys","0 2 4 6 8",'lock_keys_plus() @keys DDS/t 3');
}
+{
+ my %hash=(0..9, 'a' => 'alpha');
+ lock_keys_plus(%hash,'a'..'f');
+ ok(Internals::SvREADONLY(%hash),'lock_keys_plus args overlap non-ref');
+ my @hidden=sort(hidden_keys(%hash));
+ my @legal=sort(legal_keys(%hash));
+ my @keys=sort(keys(%hash));
+ is("@hidden","b c d e f",'lock_keys_plus() @hidden overlap non-ref');
+ is("@legal","0 2 4 6 8 a b c d e f",'lock_keys_plus() @legal overlap non-ref');
+ is("@keys","0 2 4 6 8 a",'lock_keys_plus() @keys overlap non-ref');
+}
{
my %hash = ('a'..'f');
@@ -468,3 +508,49 @@ ok($hash_seed >= 0, "hash_seed $hash_seed");
is_deeply(\@ph, \@bam, "Placeholders in place");
}
+{
+ my %hash = (
+ a => 'alpha',
+ b => [ qw( beta gamma delta ) ],
+ c => [ 'epsilon', { zeta => 'eta' }, ],
+ d => { theta => 'iota' },
+ );
+ lock_hash_recurse(%hash);
+ ok( hash_locked(%hash),
+ "lock_hash_recurse(): top-level hash locked" );
+ ok( hash_locked(%{$hash{d}}),
+ "lock_hash_recurse(): element which is hashref locked" );
+ ok( ! hash_locked(%{$hash{c}[1]}),
+ "lock_hash_recurse(): element which is hashref in array ref not locked" );
+
+ unlock_hash_recurse(%hash);
+ ok( hash_unlocked(%hash),
+ "unlock_hash_recurse(): top-level hash unlocked" );
+ ok( hash_unlocked(%{$hash{d}}),
+ "unlock_hash_recurse(): element which is hashref unlocked" );
+ ok( hash_unlocked(%{$hash{c}[1]}),
+ "unlock_hash_recurse(): element which is hashref in array ref not locked" );
+}
+
+{
+ my $h1= hash_value("foo");
+ my $h2= hash_value("bar");
+ is( $h1, hash_value("foo") );
+ is( $h2, hash_value("bar") );
+}
+{
+ my @info1= bucket_info({});
+ my @info2= bucket_info({1..10});
+ my @stats1= bucket_stats({});
+ my @stats2= bucket_stats({1..10});
+ my $array1= bucket_array({});
+ my $array2= bucket_array({1..10});
+ is("@info1","0 8 0");
+ is("@info2[0,1]","5 8");
+ is("@stats1","0 8 0");
+ is("@stats2[0,1]","5 8");
+ my @keys1= sort map { ref $_ ? @$_ : () } @$array1;
+ my @keys2= sort map { ref $_ ? @$_ : () } @$array2;
+ is("@keys1","");
+ is("@keys2","1 3 5 7 9");
+}
diff --git a/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.pm b/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.pm
index db303592efc..ee9d63c4a15 100644
--- a/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.pm
+++ b/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.pm
@@ -72,7 +72,7 @@ our @EXPORT_OK = qw(
YESSTR
);
-our $VERSION = '0.08_02';
+our $VERSION = '0.10';
XSLoader::load();
@@ -103,7 +103,7 @@ answers for a yes/no question in the current locale.
use I18N::Langinfo qw(langinfo ABDAY_1 YESSTR NOSTR);
- my ($abday_1, $yesstr, $nostr) = map { langinfo } qw(ABDAY_1 YESSTR NOSTR);
+ my ($abday_1, $yesstr, $nostr) = map { langinfo($_) } (ABDAY_1, YESSTR, NOSTR);
print "$abday_1? [$yesstr/$nostr] ";
diff --git a/gnu/usr.bin/perl/ext/ODBM_File/typemap b/gnu/usr.bin/perl/ext/ODBM_File/typemap
index 2612dfda143..8aed61c8c50 100644
--- a/gnu/usr.bin/perl/ext/ODBM_File/typemap
+++ b/gnu/usr.bin/perl/ext/ODBM_File/typemap
@@ -12,7 +12,6 @@ SDBM_File T_PTROBJ
ODBM_File T_PTROBJ
DB_File T_PTROBJ
DBZ_File T_PTROBJ
-FATALFUNC T_OPAQUEPTR
INPUT
T_DATUM_K
diff --git a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm
index 457af508681..71577c61f3a 100644
--- a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm
+++ b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm
@@ -4,7 +4,7 @@ use warnings;
our ($AUTOLOAD, %SIGRT);
-our $VERSION = '1.30';
+our $VERSION = '1.32';
require XSLoader;
diff --git a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod
index f935ae05743..7141b873f79 100644
--- a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod
+++ b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod
@@ -412,7 +412,7 @@ Retrieves the value of a configurable limit on a file or directory. This
uses file descriptors such as those obtained by calling C<POSIX::open>.
The following will determine the maximum length of the longest allowable
-pathname on the filesystem which holds C</var/foo>.
+pathname on the filesystem which holds F</var/foo>.
$fd = POSIX::open( "/var/foo", &POSIX::O_RDONLY );
$path_max = POSIX::fpathconf( $fd, &POSIX::_PC_PATH_MAX );
@@ -730,27 +730,32 @@ containing the current locale formatting values.
Here is how to query the database for the B<de> (Deutsch or German) locale.
- $loc = POSIX::setlocale( &POSIX::LC_ALL, "de" );
- print "Locale = $loc\n";
- $lconv = POSIX::localeconv();
- print "decimal_point = ", $lconv->{decimal_point}, "\n";
- print "thousands_sep = ", $lconv->{thousands_sep}, "\n";
- print "grouping = ", $lconv->{grouping}, "\n";
- print "int_curr_symbol = ", $lconv->{int_curr_symbol}, "\n";
- print "currency_symbol = ", $lconv->{currency_symbol}, "\n";
- print "mon_decimal_point = ", $lconv->{mon_decimal_point}, "\n";
- print "mon_thousands_sep = ", $lconv->{mon_thousands_sep}, "\n";
- print "mon_grouping = ", $lconv->{mon_grouping}, "\n";
- print "positive_sign = ", $lconv->{positive_sign}, "\n";
- print "negative_sign = ", $lconv->{negative_sign}, "\n";
- print "int_frac_digits = ", $lconv->{int_frac_digits}, "\n";
- print "frac_digits = ", $lconv->{frac_digits}, "\n";
- print "p_cs_precedes = ", $lconv->{p_cs_precedes}, "\n";
- print "p_sep_by_space = ", $lconv->{p_sep_by_space}, "\n";
- print "n_cs_precedes = ", $lconv->{n_cs_precedes}, "\n";
- print "n_sep_by_space = ", $lconv->{n_sep_by_space}, "\n";
- print "p_sign_posn = ", $lconv->{p_sign_posn}, "\n";
- print "n_sign_posn = ", $lconv->{n_sign_posn}, "\n";
+ my $loc = POSIX::setlocale( &POSIX::LC_ALL, "de" );
+ print "Locale: \"$loc\"\n";
+ my $lconv = POSIX::localeconv();
+ foreach my $property (qw(
+ decimal_point
+ thousands_sep
+ grouping
+ int_curr_symbol
+ currency_symbol
+ mon_decimal_point
+ mon_thousands_sep
+ mon_grouping
+ positive_sign
+ negative_sign
+ int_frac_digits
+ frac_digits
+ p_cs_precedes
+ p_sep_by_space
+ n_cs_precedes
+ n_sep_by_space
+ p_sign_posn
+ n_sign_posn
+ ))
+ {
+ printf qq(%s: "%s",\n), $property, $lconv->{$property};
+ }
=item localtime
diff --git a/gnu/usr.bin/perl/ext/POSIX/t/posix.t b/gnu/usr.bin/perl/ext/POSIX/t/posix.t
index 442b540dac3..88fe2ca0d94 100644
--- a/gnu/usr.bin/perl/ext/POSIX/t/posix.t
+++ b/gnu/usr.bin/perl/ext/POSIX/t/posix.t
@@ -8,7 +8,7 @@ BEGIN {
}
}
-use Test::More tests => 106;
+use Test::More tests => 109;
use POSIX qw(fcntl_h signal_h limits_h _exit getcwd open read strftime write
errno localeconv dup dup2 lseek access);
@@ -23,7 +23,6 @@ $| = 1;
$Is_W32 = $^O eq 'MSWin32';
$Is_Dos = $^O eq 'dos';
-$Is_MPE = $^O eq 'mpeix';
$Is_MacOS = $^O eq 'MacOS';
$Is_VMS = $^O eq 'VMS';
$Is_OS2 = $^O eq 'os2';
@@ -105,6 +104,7 @@ SKIP: {
# So the kill() must not be done with this config in order to
# finish the test.
# For others (darwin & freebsd), let the test fail without crashing.
+ # the test passes at least from freebsd 8.1
my $todo = $^O eq 'netbsd' && $Config{osvers}=~/^1\.6/;
my $why_todo = "# TODO $^O $Config{osvers} seems to lose blocked signals";
if (!$todo) {
@@ -115,7 +115,7 @@ SKIP: {
}
sleep 1;
- $todo = 1 if ($^O eq 'freebsd')
+ $todo = 1 if ($^O eq 'freebsd' && $Config{osvers} < 8)
|| ($^O eq 'darwin' && $Config{osvers} < '6.6');
printf "%s 11 - masked SIGINT received %s\n",
$sigint_called ? "ok" : "not ok",
@@ -141,7 +141,6 @@ SKIP: {
}
SKIP: {
- skip("_POSIX_OPEN_MAX is inaccurate on MPE", 1) if $Is_MPE;
skip("_POSIX_OPEN_MAX undefined ($fds[1])", 1) unless &_POSIX_OPEN_MAX;
cmp_ok(&_POSIX_OPEN_MAX, '>=', 16,
@@ -224,6 +223,21 @@ try_strftime("Mon Feb 28 00:00:00 2000 059", 0,0,0, 28,1,100);
try_strftime("Tue Feb 29 00:00:00 2000 060", 0,0,0, 0,2,100);
try_strftime("Wed Mar 01 00:00:00 2000 061", 0,0,0, 1,2,100);
try_strftime("Fri Mar 31 00:00:00 2000 091", 0,0,0, 31,2,100);
+
+{ # rt 72232
+
+ # Std C/POSIX allows day/month to be negative and requires that
+ # wday/yday be adjusted as needed
+ # previously mini_mktime() would allow yday to dominate if mday and
+ # month were both non-positive
+ # check that yday doesn't dominate
+ try_strftime("Thu Dec 30 00:00:00 1999 364", 0,0,0, -1,0,100);
+ try_strftime("Thu Dec 30 00:00:00 1999 364", 0,0,0, -1,0,100,-1,10);
+ # it would also allow a positive wday to override the calculated value
+ # check that wday is recalculated too
+ try_strftime("Thu Dec 30 00:00:00 1999 364", 0,0,0, -1,0,100,0,10);
+}
+
&POSIX::setlocale(&POSIX::LC_TIME, $lc) if $Config{d_setlocale};
{
diff --git a/gnu/usr.bin/perl/ext/POSIX/t/sysconf.t b/gnu/usr.bin/perl/ext/POSIX/t/sysconf.t
index 8590eef178c..ad1e482dc44 100644
--- a/gnu/usr.bin/perl/ext/POSIX/t/sysconf.t
+++ b/gnu/usr.bin/perl/ext/POSIX/t/sysconf.t
@@ -67,8 +67,15 @@ sub _check_and_report {
like($return_val, qr/\A(?:-?[1-9][0-9]*|0 but true)\z/,
'the returned value should be a signed integer');
} else {
- cmp_ok($errno, '==', 0, 'errno should be 0 as before the call')
- or diag("\$!: $errno");
+ SKIP:
+ {
+ # POSIX specifies EINVAL is returned if the f?pathconf()
+ # isn't implemented for the specific path
+ skip "$description not implemented for this path", 1
+ if $errno == EINVAL && $description =~ /pathconf/;
+ cmp_ok($errno, '==', 0, 'errno should be 0 as before the call')
+ or diag("\$!: $errno");
+ }
}
}
diff --git a/gnu/usr.bin/perl/ext/POSIX/t/taint.t b/gnu/usr.bin/perl/ext/POSIX/t/taint.t
index 3ca01743e03..5a960c714ba 100644
--- a/gnu/usr.bin/perl/ext/POSIX/t/taint.t
+++ b/gnu/usr.bin/perl/ext/POSIX/t/taint.t
@@ -8,9 +8,16 @@ BEGIN {
}
}
-use Test::More tests => 7;
-use Scalar::Util qw/tainted/;
+use Test::More;
+BEGIN {
+ plan(
+ ${^TAINT}
+ ? (tests => 7)
+ : (skip_all => "A perl without taint support")
+ );
+}
+use Scalar::Util qw/tainted/;
use POSIX qw(fcntl_h open read mkfifo);
use strict ;
diff --git a/gnu/usr.bin/perl/ext/PerlIO-encoding/encoding.pm b/gnu/usr.bin/perl/ext/PerlIO-encoding/encoding.pm
index ee3573e02bc..e2708193c02 100644
--- a/gnu/usr.bin/perl/ext/PerlIO-encoding/encoding.pm
+++ b/gnu/usr.bin/perl/ext/PerlIO-encoding/encoding.pm
@@ -1,7 +1,7 @@
package PerlIO::encoding;
use strict;
-our $VERSION = '0.15';
+our $VERSION = '0.16';
our $DEBUG = 0;
$DEBUG and warn __PACKAGE__, " called by ", join(", ", caller), "\n";
diff --git a/gnu/usr.bin/perl/ext/PerlIO-encoding/t/encoding.t b/gnu/usr.bin/perl/ext/PerlIO-encoding/t/encoding.t
index 4642bd8e8c7..6b4d3d068a6 100755
--- a/gnu/usr.bin/perl/ext/PerlIO-encoding/t/encoding.t
+++ b/gnu/usr.bin/perl/ext/PerlIO-encoding/t/encoding.t
@@ -11,7 +11,7 @@ BEGIN {
}
}
-use Test::More tests => 18;
+use Test::More tests => 24;
my $grk = "grk$$";
my $utf = "utf$$";
@@ -124,6 +124,112 @@ if (ord('A') == 193) { # EBCDIC
is($dstr, "foo\\xF0\\x80\\x80\\x80bar\n:\\x80foo\n");
}
+# Check that PerlIO::encoding can handle custom encodings that do funny
+# things with the buffer.
+use Encode::Encoding;
+package Extensive {
+ @ISA = Encode::Encoding;
+ __PACKAGE__->Define('extensive');
+ sub encode($$;$) {
+ my ($self,$buf,$chk) = @_;
+ my $leftovers = '';
+ if ($buf =~ /(.*\n)(?!\z)/) {
+ $buf = $1;
+ $leftovers = $';
+ }
+ if ($chk) {
+ undef $_[1];
+ my @x = (' ') x 8000; # reuse the just-freed buffer
+ $_[1] = $leftovers; # SvPVX now points elsewhere and is shorter
+ } # than bufsiz
+ $buf;
+ }
+ no warnings 'once';
+ *decode = *encode;
+}
+open my $fh, ">:encoding(extensive)", \$buf;
+$fh->autoflush;
+print $fh "doughnut\n";
+print $fh "quaffee\n";
+# Print something longer than the buffer that encode() shrunk:
+print $fh "The beech leaves beech leaves on the beach by the beech.\n";
+close $fh;
+is $buf, "doughnut\nquaffee\nThe beech leaves beech leaves on the beach by"
+ ." the beech.\n", 'buffer realloc during encoding';
+$buf = "Sheila surely shod Sean\nin shoddy shoes.\n";
+open $fh, "<:encoding(extensive)", \$buf;
+is join("", <$fh>), "Sheila surely shod Sean\nin shoddy shoes.\n",
+ 'buffer realloc during decoding';
+
+package Cower {
+ @ISA = Encode::Encoding;
+ __PACKAGE__->Define('cower');
+ sub encode($$;$) {
+ my ($self,$buf,$chk) = @_;
+ my $leftovers = '';
+ if ($buf =~ /(.*\n)(?!\z)/) {
+ $buf = $1;
+ $leftovers = $';
+ }
+ if ($chk) {
+ no warnings; # stupid @_[1] warning
+ @_[1] = keys %{{$leftovers=>1}}; # shared hash key (copy-on-write)
+ }
+ $buf;
+ }
+ no warnings 'once';
+ *decode = *encode;
+}
+open $fh, ">:encoding(cower)", \$buf;
+$fh->autoflush;
+print $fh $_ for qw "pumping plum pits";
+close $fh;
+is $buf, "pumpingplumpits", 'cowing buffer during encoding';
+$buf = "pumping\nplum\npits\n";
+open $fh, "<:encoding(cower)", \$buf;
+is join("", <$fh>), "pumping\nplum\npits\n",
+ 'cowing buffer during decoding';
+
+package Globber {
+ no warnings 'once';
+ @ISA = Encode::Encoding;
+ __PACKAGE__->Define('globber');
+ sub encode($$;$) {
+ my ($self,$buf,$chk) = @_;
+ $_[1] = *foo if $chk;
+ $buf;
+ }
+ *decode = *encode;
+}
+
+# Here we just want to test there is no crash. The actual output is not so
+# important.
+# We need a double eval, as scope unwinding will close the handle,
+# which croaks.
+# Under debugging builds with PERL_DESTRUCT_LEVEL set, we have to skip this
+# test, as it triggers bug #115692, resulting in string table warnings.
+require Config;
+SKIP: {
+skip "produces string table warnings", 2
+ if "@{[Config::non_bincompat_options()]}" =~ /\bDEBUGGING\b/
+ && $ENV{PERL_DESTRUCT_LEVEL};
+
+eval { eval {
+ open my $fh, ">:encoding(globber)", \$buf;
+ print $fh "Agathopous Goodfoot\n";
+ close $fh;
+}; $e = $@};
+like $@||$e, qr/Close with partial character/,
+ 'no crash when assigning glob to buffer in encode';
+$buf = "To hymn him who heard her herd herd\n";
+open $fh, "<:encoding(globber)", \$buf;
+my $x = <$fh>;
+close $fh;
+is $x, "To hymn him who heard her herd herd\n",
+ 'no crash when assigning glob to buffer in decode';
+
+} # SKIP
+
END {
1 while unlink($grk, $utf, $fail1, $fail2, $russki, $threebyte);
}
diff --git a/gnu/usr.bin/perl/ext/PerlIO-mmap/mmap.pm b/gnu/usr.bin/perl/ext/PerlIO-mmap/mmap.pm
index 7db4a55137f..cf97882fa59 100644
--- a/gnu/usr.bin/perl/ext/PerlIO-mmap/mmap.pm
+++ b/gnu/usr.bin/perl/ext/PerlIO-mmap/mmap.pm
@@ -1,7 +1,7 @@
package PerlIO::mmap;
use strict;
use warnings;
-our $VERSION = '0.010';
+our $VERSION = '0.011';
use XSLoader;
XSLoader::load(__PACKAGE__, __PACKAGE__->VERSION);
diff --git a/gnu/usr.bin/perl/ext/PerlIO-mmap/mmap.xs b/gnu/usr.bin/perl/ext/PerlIO-mmap/mmap.xs
index 3e87d3b3719..4c96da84f78 100644
--- a/gnu/usr.bin/perl/ext/PerlIO-mmap/mmap.xs
+++ b/gnu/usr.bin/perl/ext/PerlIO-mmap/mmap.xs
@@ -2,10 +2,10 @@
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
#define PERL_NO_GET_CONTEXT
diff --git a/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.pm b/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.pm
index 6c304f20db4..64ecc22576e 100644
--- a/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.pm
+++ b/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.pm
@@ -1,5 +1,5 @@
package PerlIO::scalar;
-our $VERSION = '0.14_01';
+our $VERSION = '0.16';
require XSLoader;
XSLoader::load();
1;
diff --git a/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.xs b/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.xs
index d7b8828fcb4..e7e83303b77 100644
--- a/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.xs
+++ b/gnu/usr.bin/perl/ext/PerlIO-scalar/scalar.xs
@@ -6,6 +6,9 @@
#include "perliol.h"
+static const char code_point_warning[] =
+ "Strings with code points over 0xFF may not be mapped into in-memory file handles\n";
+
typedef struct {
struct _PerlIO base; /* Base "class" info */
SV *var;
@@ -52,6 +55,14 @@ PerlIOScalar_pushed(pTHX_ PerlIO * f, const char *mode, SV * arg,
sv_force_normal(s->var);
SvCUR_set(s->var, 0);
}
+ if (SvUTF8(s->var) && !sv_utf8_downgrade(s->var, TRUE)) {
+ if (ckWARN(WARN_UTF8))
+ Perl_warner(aTHX_ packWARN(WARN_UTF8), code_point_warning);
+ SETERRNO(EINVAL, SS_IVCHAN);
+ SvREFCNT_dec(s->var);
+ s->var = Nullsv;
+ return -1;
+ }
if ((PerlIOBase(f)->flags) & PERLIO_F_APPEND)
{
sv_force_normal(s->var);
@@ -143,6 +154,17 @@ PerlIOScalar_read(pTHX_ PerlIO *f, void *vbuf, Size_t count)
STRLEN len;
I32 got;
p = SvPV(sv, len);
+ if (SvUTF8(sv)) {
+ if (sv_utf8_downgrade(sv, TRUE)) {
+ p = SvPV_nomg(sv, len);
+ }
+ else {
+ if (ckWARN(WARN_UTF8))
+ Perl_warner(aTHX_ packWARN(WARN_UTF8), code_point_warning);
+ SETERRNO(EINVAL, SS_IVCHAN);
+ return -1;
+ }
+ }
got = len - (STRLEN)(s->posn);
if (got <= 0)
return 0;
@@ -165,6 +187,12 @@ PerlIOScalar_write(pTHX_ PerlIO * f, const void *vbuf, Size_t count)
SvGETMAGIC(sv);
if (!SvROK(sv)) sv_force_normal(sv);
if (SvOK(sv)) SvPV_force_nomg_nolen(sv);
+ if (SvUTF8(sv) && !sv_utf8_downgrade(sv, TRUE)) {
+ if (ckWARN(WARN_UTF8))
+ Perl_warner(aTHX_ packWARN(WARN_UTF8), code_point_warning);
+ SETERRNO(EINVAL, SS_IVCHAN);
+ return 0;
+ }
if ((PerlIOBase(f)->flags) & PERLIO_F_APPEND) {
dst = SvGROW(sv, SvCUR(sv) + count + 1);
offset = SvCUR(sv);
diff --git a/gnu/usr.bin/perl/ext/PerlIO-scalar/t/scalar.t b/gnu/usr.bin/perl/ext/PerlIO-scalar/t/scalar.t
index d255a05993a..5a91071ba21 100755
--- a/gnu/usr.bin/perl/ext/PerlIO-scalar/t/scalar.t
+++ b/gnu/usr.bin/perl/ext/PerlIO-scalar/t/scalar.t
@@ -16,7 +16,7 @@ use Fcntl qw(SEEK_SET SEEK_CUR SEEK_END); # Not 0, 1, 2 everywhere.
$| = 1;
-use Test::More tests => 82;
+use Test::More tests => 108;
my $fh;
my $var = "aaa\n";
@@ -384,3 +384,81 @@ SKIP: {
close FILE;
is $content, "Foo-Bar\n", 'duping via >&=';
}
+
+# [perl #109828] PerlIO::scalar does not handle UTF-8
+my $byte_warning = "Strings with code points over 0xFF may not be mapped into in-memory file handles\n";
+{
+ use Errno qw(EINVAL);
+ my @warnings;
+ local $SIG{__WARN__} = sub { push @warnings, "@_" };
+ my $content = "12\x{101}";
+ $! = 0;
+ ok(!open(my $fh, "<", \$content), "non-byte open should fail");
+ is(0+$!, EINVAL, "check \$! is updated");
+ is_deeply(\@warnings, [], "should be no warnings (yet)");
+ use warnings "utf8";
+ $! = 0;
+ ok(!open(my $fh, "<", \$content), "non byte open should fail (and warn)");
+ is(0+$!, EINVAL, "check \$! is updated even when we warn");
+ is_deeply(\@warnings, [ $byte_warning ], "should have warned");
+
+ @warnings = ();
+ $content = "12\xA1";
+ utf8::upgrade($content);
+ ok(open(my $fh, "<", \$content), "open upgraded scalar");
+ binmode $fh;
+ my $tmp;
+ is(read($fh, $tmp, 4), 3, "read should get the downgraded bytes");
+ is($tmp, "12\xA1", "check we got the expected bytes");
+ close $fh;
+ is_deeply(\@warnings, [], "should be no more warnings");
+}
+{ # changes after open
+ my $content = "abc";
+ ok(open(my $fh, "+<", \$content), "open a scalar");
+ binmode $fh;
+ my $tmp;
+ is(read($fh, $tmp, 1), 1, "basic read");
+ seek($fh, 1, SEEK_SET);
+ $content = "\xA1\xA2\xA3";
+ utf8::upgrade($content);
+ is(read($fh, $tmp, 1), 1, "read from post-open upgraded scalar");
+ is($tmp, "\xA2", "check we read the correct value");
+ seek($fh, 1, SEEK_SET);
+ $content = "\x{101}\x{102}\x{103}";
+
+ my @warnings;
+ local $SIG{__WARN__} = sub { push @warnings, "@_" };
+
+ $! = 0;
+ is(read($fh, $tmp, 1), undef, "read from scalar with >0xff chars");
+ is(0+$!, EINVAL, "check errno set correctly");
+ is_deeply(\@warnings, [], "should be no warning (yet)");
+ use warnings "utf8";
+ seek($fh, 1, SEEK_SET);
+ is(read($fh, $tmp, 1), undef, "read from scalar with >0xff chars");
+ is_deeply(\@warnings, [ $byte_warning ], "check warning");
+
+ select $fh; # make sure print fails rather tha buffers
+ $| = 1;
+ select STDERR;
+ no warnings "utf8";
+ @warnings = ();
+ $content = "\xA1\xA2\xA3";
+ utf8::upgrade($content);
+ seek($fh, 1, SEEK_SET);
+ ok((print $fh "A"), "print to an upgraded byte string");
+ seek($fh, 1, SEEK_SET);
+ is($content, "\xA1A\xA3", "check result");
+
+ $content = "\x{101}\x{102}\x{103}";
+ $! = 0;
+ ok(!(print $fh "B"), "write to an non-downgradable SV");
+ is(0+$!, EINVAL, "check errno set");
+
+ is_deeply(\@warnings, [], "should be no warning");
+
+ use warnings "utf8";
+ ok(!(print $fh "B"), "write to an non-downgradable SV (and warn)");
+ is_deeply(\@warnings, [ $byte_warning ], "check warning");
+}
diff --git a/gnu/usr.bin/perl/ext/Pod-Functions/Functions_pm.PL b/gnu/usr.bin/perl/ext/Pod-Functions/Functions_pm.PL
index c7bb44bec87..0d38aef0031 100644
--- a/gnu/usr.bin/perl/ext/Pod-Functions/Functions_pm.PL
+++ b/gnu/usr.bin/perl/ext/Pod-Functions/Functions_pm.PL
@@ -198,7 +198,7 @@ L<perlfunc/"Perl Functions by Category"> section.
=cut
-our $VERSION = '1.05';
+our $VERSION = '1.06';
require Exporter;
diff --git a/gnu/usr.bin/perl/ext/Pod-Html/lib/Pod/Html.pm b/gnu/usr.bin/perl/ext/Pod-Html/lib/Pod/Html.pm
index 47b937abbb5..72b37c249dd 100644
--- a/gnu/usr.bin/perl/ext/Pod-Html/lib/Pod/Html.pm
+++ b/gnu/usr.bin/perl/ext/Pod-Html/lib/Pod/Html.pm
@@ -3,7 +3,7 @@ use strict;
require Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
-$VERSION = 1.15_02;
+$VERSION = 1.18;
@ISA = qw(Exporter);
@EXPORT = qw(pod2html htmlify);
@EXPORT_OK = qw(anchorify);
@@ -16,8 +16,11 @@ use File::Spec;
use File::Spec::Unix;
use Getopt::Long;
use Pod::Simple::Search;
-
-use locale; # make \w work right in non-ASCII lands
+BEGIN {
+ if($Config{d_setlocale}) {
+ require locale; import locale; # make \w work right in non-ASCII lands
+ }
+}
=head1 NAME
@@ -432,6 +435,7 @@ HTMLFOOT
} else {
open $fhout, ">-";
}
+ binmode $fhout, ":utf8";
print $fhout $output;
close $fhout or die "Failed to close $Htmlfile: $!";
chmod 0644, $Htmlfile unless $Htmlfile eq '-';
@@ -695,6 +699,7 @@ sub _unixify {
$full_path = File::Spec::Unix->catfile(File::Spec::Unix->catdir(@dirs),
$file);
$full_path =~ s|^\/|| if $^O eq 'MSWin32'; # C:/foo works, /C:/foo doesn't
+ $full_path =~ s/\^\././g if $^O eq 'VMS'; # unescape dots
return $full_path;
}
diff --git a/gnu/usr.bin/perl/ext/Pod-Html/t/crossref.t b/gnu/usr.bin/perl/ext/Pod-Html/t/crossref.t
index ec178e00240..92837ac383a 100644
--- a/gnu/usr.bin/perl/ext/Pod-Html/t/crossref.t
+++ b/gnu/usr.bin/perl/ext/Pod-Html/t/crossref.t
@@ -10,7 +10,6 @@ END {
use strict;
use Cwd;
-use File::Spec;
use File::Spec::Functions;
use Test::More tests => 1;
@@ -19,11 +18,14 @@ SKIP: {
skip "$output", 1 if $output;
my ($v, $d) = splitpath(cwd(), 1);
- my $relcwd = substr($d, length(File::Spec->rootdir()));
+ my @dirs = splitdir($d);
+ shift @dirs if $dirs[0] eq '';
+ my $relcwd = join '/', @dirs;
convert_n_test("crossref", "cross references",
- "--podpath=". catdir($relcwd, 't') . ":" . catdir($relcwd, 'testdir/test.lib'),
- "--podroot=$v". File::Spec->rootdir,
+ "--podpath=". File::Spec::Unix->catdir($relcwd, 't') . ":"
+ . File::Spec::Unix->catdir($relcwd, 'testdir/test.lib'),
+ "--podroot=". catpath($v, '/', ''),
"--quiet",
);
}
@@ -68,13 +70,13 @@ __DATA__
<p><a href="/[RELCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html">var-copy</a></p>
-<p><a href="/[RELCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html#pod-">&quot;$&quot;&quot; in var-copy</a></p>
+<p><a href="/[RELCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html#pod">&quot;$&quot;&quot; in var-copy</a></p>
<p><code>var-copy</code></p>
<p><code>var-copy/$&quot;</code></p>
-<p><a href="/[RELCURRENTWORKINGDIRECTORY]/testdir/test.lib/podspec-copy.html#First:">&quot;First:&quot; in podspec-copy</a></p>
+<p><a href="/[RELCURRENTWORKINGDIRECTORY]/testdir/test.lib/podspec-copy.html#First">&quot;First:&quot; in podspec-copy</a></p>
<p><code>podspec-copy/First:</code></p>
diff --git a/gnu/usr.bin/perl/ext/Pod-Html/t/crossref2.t b/gnu/usr.bin/perl/ext/Pod-Html/t/crossref2.t
index ce8fd6f804a..8e18647ef2c 100644
--- a/gnu/usr.bin/perl/ext/Pod-Html/t/crossref2.t
+++ b/gnu/usr.bin/perl/ext/Pod-Html/t/crossref2.t
@@ -10,8 +10,6 @@ END {
use strict;
use Cwd;
-use File::Spec;
-use File::Spec::Functions;
use Test::More tests => 1;
SKIP: {
@@ -68,13 +66,13 @@ __DATA__
<p><a href="../testdir/test.lib/var-copy.html">var-copy</a></p>
-<p><a href="../testdir/test.lib/var-copy.html#pod-">&quot;$&quot;&quot; in var-copy</a></p>
+<p><a href="../testdir/test.lib/var-copy.html#pod">&quot;$&quot;&quot; in var-copy</a></p>
<p><code>var-copy</code></p>
<p><code>var-copy/$&quot;</code></p>
-<p><a href="../testdir/test.lib/podspec-copy.html#First:">&quot;First:&quot; in podspec-copy</a></p>
+<p><a href="../testdir/test.lib/podspec-copy.html#First">&quot;First:&quot; in podspec-copy</a></p>
<p><code>podspec-copy/First:</code></p>
diff --git a/gnu/usr.bin/perl/ext/Pod-Html/t/crossref3.t b/gnu/usr.bin/perl/ext/Pod-Html/t/crossref3.t
index 309d5ed888a..ff190f4345d 100644
--- a/gnu/usr.bin/perl/ext/Pod-Html/t/crossref3.t
+++ b/gnu/usr.bin/perl/ext/Pod-Html/t/crossref3.t
@@ -10,8 +10,6 @@ END {
use strict;
use Cwd;
-use File::Spec;
-use File::Spec::Functions;
use Test::More tests => 1;
SKIP: {
@@ -68,13 +66,13 @@ __DATA__
<p><a href="[ABSCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html">var-copy</a></p>
-<p><a href="[ABSCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html#pod-">&quot;$&quot;&quot; in var-copy</a></p>
+<p><a href="[ABSCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html#pod">&quot;$&quot;&quot; in var-copy</a></p>
<p><code>var-copy</code></p>
<p><code>var-copy/$&quot;</code></p>
-<p><a href="[ABSCURRENTWORKINGDIRECTORY]/testdir/test.lib/podspec-copy.html#First:">&quot;First:&quot; in podspec-copy</a></p>
+<p><a href="[ABSCURRENTWORKINGDIRECTORY]/testdir/test.lib/podspec-copy.html#First">&quot;First:&quot; in podspec-copy</a></p>
<p><code>podspec-copy/First:</code></p>
diff --git a/gnu/usr.bin/perl/ext/Pod-Html/t/feature.t b/gnu/usr.bin/perl/ext/Pod-Html/t/feature.t
index 9096523ed69..94354c75f91 100644
--- a/gnu/usr.bin/perl/ext/Pod-Html/t/feature.t
+++ b/gnu/usr.bin/perl/ext/Pod-Html/t/feature.t
@@ -21,7 +21,6 @@ convert_n_test("feature", "misc pod-html features",
"--podroot=$cwd",
"--title=a title",
"--quiet",
- "--libpods=perlguts:perlootut",
);
__DATA__
diff --git a/gnu/usr.bin/perl/ext/Pod-Html/t/htmldir1.t b/gnu/usr.bin/perl/ext/Pod-Html/t/htmldir1.t
index 881e3d6dce4..8dd285473f7 100644
--- a/gnu/usr.bin/perl/ext/Pod-Html/t/htmldir1.t
+++ b/gnu/usr.bin/perl/ext/Pod-Html/t/htmldir1.t
@@ -10,7 +10,6 @@ END {
use strict;
use Cwd;
-use File::Spec;
use File::Spec::Functions;
use Test::More tests => 2;
@@ -22,14 +21,17 @@ SKIP: {
skip "$output", 2 if $output;
my ($v, $d) = splitpath(cwd(), 1);
- my $relcwd = substr($d, length(File::Spec->rootdir()));
+ my @dirs = splitdir($d);
+ shift @dirs if $dirs[0] eq '';
+ my $relcwd = join '/', @dirs;
my $data_pos = tell DATA; # to read <DATA> twice
convert_n_test("htmldir1", "test --htmldir and --htmlroot 1a",
- "--podpath=". catdir($relcwd, 't') . ":" . catfile($relcwd, 'testdir/test.lib'),
- "--podroot=$v". File::Spec->rootdir,
+ "--podpath=". File::Spec::Unix->catdir($relcwd, 't') . ":"
+ . File::Spec::Unix->catdir($relcwd, 'testdir/test.lib'),
+ "--podroot=". catpath($v, '/', ''),
"--htmldir=t",
"--quiet",
);
@@ -38,7 +40,7 @@ SKIP: {
convert_n_test("htmldir1", "test --htmldir and --htmlroot 1b",
"--podpath=$relcwd",
- "--podroot=$v". File::Spec->rootdir,
+ "--podroot=". catpath($v, '/', ''),
"--htmldir=". catdir($relcwd, 't'),
"--htmlroot=/",
"--quiet",
diff --git a/gnu/usr.bin/perl/ext/Pod-Html/t/htmldir3.t b/gnu/usr.bin/perl/ext/Pod-Html/t/htmldir3.t
index 555dc748624..184b5c60be2 100644
--- a/gnu/usr.bin/perl/ext/Pod-Html/t/htmldir3.t
+++ b/gnu/usr.bin/perl/ext/Pod-Html/t/htmldir3.t
@@ -10,7 +10,6 @@ END {
use strict;
use Cwd;
-use File::Spec;
use File::Spec::Functions;
use Test::More tests => 2;
@@ -20,13 +19,15 @@ SKIP: {
my $cwd = cwd();
my ($v, $d) = splitpath($cwd, 1);
- my $relcwd = substr($d, length(File::Spec->rootdir()));
+ my @dirs = splitdir($d);
+ shift @dirs if $dirs[0] eq '';
+ my $relcwd = join '/', @dirs;
my $data_pos = tell DATA; # to read <DATA> twice
convert_n_test("htmldir3", "test --htmldir and --htmlroot 3a",
"--podpath=$relcwd",
- "--podroot=$v". File::Spec->rootdir,
+ "--podroot=". catpath($v, '/', ''),
"--htmldir=". catdir($cwd, 't', ''), # test removal trailing slash,
"--quiet",
);
@@ -35,7 +36,7 @@ SKIP: {
convert_n_test("htmldir3", "test --htmldir and --htmlroot 3b",
"--podpath=". catdir($relcwd, 't'),
- "--podroot=$v". File::Spec->rootdir,
+ "--podroot=". catpath($v, '/', ''),
"--htmldir=t",
"--outfile=t/htmldir3.html",
"--quiet",
diff --git a/gnu/usr.bin/perl/ext/Pod-Html/t/htmlview.t b/gnu/usr.bin/perl/ext/Pod-Html/t/htmlview.t
index bbfc971a145..0fb36cf5997 100644
--- a/gnu/usr.bin/perl/ext/Pod-Html/t/htmlview.t
+++ b/gnu/usr.bin/perl/ext/Pod-Html/t/htmlview.t
@@ -29,8 +29,8 @@ __DATA__
<li><a href="#DESCRIPTION">DESCRIPTION</a></li>
<li><a href="#METHODS-OTHER-STUFF">METHODS =&gt; OTHER STUFF</a>
<ul>
- <li><a href="#new-">new()</a></li>
- <li><a href="#old-">old()</a></li>
+ <li><a href="#new">new()</a></li>
+ <li><a href="#old">old()</a></li>
</ul>
</li>
<li><a href="#TESTING-FOR-AND-BEGIN">TESTING FOR AND BEGIN</a></li>
@@ -65,7 +65,7 @@ __DATA__
<p>Here is a list of methods</p>
-<h2 id="new-">new()</h2>
+<h2 id="new">new()</h2>
<p>Constructor method. Accepts the following config options:</p>
@@ -178,7 +178,7 @@ __DATA__
</li>
</ul>
-<h2 id="old-">old()</h2>
+<h2 id="old">old()</h2>
<p>Destructor method</p>
@@ -219,7 +219,7 @@ HTML
<dl>
-<dt id="Around-line-45:">Around line 45:</dt>
+<dt id="Around-line-45">Around line 45:</dt>
<dd>
<p>You can&#39;t have =items (as at line 49) unless the first thing after the =over is an =item</p>
diff --git a/gnu/usr.bin/perl/ext/Pod-Html/t/pod2html-lib.pl b/gnu/usr.bin/perl/ext/Pod-Html/t/pod2html-lib.pl
index c60cab64399..42cf1c97c4f 100644
--- a/gnu/usr.bin/perl/ext/Pod-Html/t/pod2html-lib.pl
+++ b/gnu/usr.bin/perl/ext/Pod-Html/t/pod2html-lib.pl
@@ -23,6 +23,7 @@ sub make_test_dir {
}
sub rem_test_dir {
+ return unless -d 'testdir/test.lib';
remove_tree('testdir/test.lib')
or warn "Error removing temporary directory 'testdir/test.lib'";
}
@@ -32,7 +33,9 @@ sub convert_n_test {
my $cwd = Pod::Html::_unixify( Cwd::cwd() );
my ($vol, $dir) = splitpath($cwd, 1);
- my $relcwd = substr($dir, length(File::Spec->rootdir()));
+ my @dirs = splitdir($dir);
+ shift @dirs if $dirs[0] eq '';
+ my $relcwd = join '/', @dirs;
my $new_dir = catdir $dir, "t";
my $infile = catpath $vol, $new_dir, "$podfile.pod";
@@ -48,6 +51,7 @@ sub convert_n_test {
@p2h_args,
);
+ $cwd =~ s|\/$||;
my ($expect, $result);
{
diff --git a/gnu/usr.bin/perl/ext/Pod-Html/t/poderr.t b/gnu/usr.bin/perl/ext/Pod-Html/t/poderr.t
index 270d948af4c..456810c056e 100644
--- a/gnu/usr.bin/perl/ext/Pod-Html/t/poderr.t
+++ b/gnu/usr.bin/perl/ext/Pod-Html/t/poderr.t
@@ -52,7 +52,7 @@ __DATA__
<dl>
-<dt id="Around-line-5:">Around line 5:</dt>
+<dt id="Around-line-5">Around line 5:</dt>
<dd>
<p>You can&#39;t have =items (as at line 9) unless the first thing after the =over is an =item</p>
diff --git a/gnu/usr.bin/perl/ext/Pod-Html/testdir/perlvar-copy.pod b/gnu/usr.bin/perl/ext/Pod-Html/testdir/perlvar-copy.pod
index 04d2a7474cc..9cb9b68ce8c 100644
--- a/gnu/usr.bin/perl/ext/Pod-Html/testdir/perlvar-copy.pod
+++ b/gnu/usr.bin/perl/ext/Pod-Html/testdir/perlvar-copy.pod
@@ -481,7 +481,7 @@ buffered otherwise. Setting this variable is useful primarily when
you are outputting to a pipe or socket, such as when you are running
a Perl program under B<rsh> and want to see the output as it's
happening. This has no effect on input buffering. See L<perlfunc/getc>
-for that. See L<perldoc/select> on how to select the output channel.
+for that. See L<perlfunc/select> on how to select the output channel.
See also L<IO::Handle>. (Mnemonic: when you want your pipes to be piping hot.)
=item IO::Handle->output_field_separator EXPR
@@ -725,7 +725,7 @@ contains formline() calls that put their result into C<$^A>. After
calling its format, write() prints out the contents of C<$^A> and empties.
So you never really see the contents of C<$^A> unless you call
formline() yourself and then look at it. See L<perlform> and
-L<perlfunc/formline()>.
+L<formline|perlfunc/formline PICTURE,LIST>.
=item $CHILD_ERROR
diff --git a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/README b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/README
index 2659e0fa113..a5a23e00d3c 100644
--- a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/README
+++ b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/README
@@ -233,7 +233,7 @@ various inputs:
*/
long
dbm_hash(char *str, int len) {
- register unsigned long n = 0;
+ unsigned long n = 0;
while (len--)
n = n * 65599 + *str++;
diff --git a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dba.c b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dba.c
index 74067763985..b27c3e66a47 100644
--- a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dba.c
+++ b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dba.c
@@ -42,11 +42,11 @@ main(int argc, char **argv)
void
sdump(int pagf)
{
- register b;
- register n = 0;
- register t = 0;
- register o = 0;
- register e;
+ int b;
+ int n = 0;
+ int t = 0;
+ int o = 0;
+ int e;
char pag[PBLKSIZ];
while ((b = read(pagf, pag, PBLKSIZ)) > 0) {
@@ -72,9 +72,9 @@ sdump(int pagf)
int
pagestat(char *pag)
{
- register n;
- register free;
- register short *ino = (short *) pag;
+ int n;
+ int free;
+ short *ino = (short *) pag;
if (!(n = ino[0]))
printf("no entries.\n");
diff --git a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbd.c b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbd.c
index 0a58d9a0f43..df27d174a80 100644
--- a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbd.c
+++ b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbd.c
@@ -44,9 +44,9 @@ main(int argc, char **argv)
void
sdump(int pagf)
{
- register r;
- register n = 0;
- register o = 0;
+ int r;
+ int n = 0;
+ int o = 0;
char pag[PBLKSIZ];
while ((r = read(pagf, pag, PBLKSIZ)) > 0) {
@@ -70,9 +70,9 @@ sdump(int pagf)
int
dispage(char *pag)
{
- register i, n;
- register off;
- register short *ino = (short *) pag;
+ int i, n;
+ int off;
+ int short *ino = (short *) pag;
off = PBLKSIZ;
for (i = 1; i < ino[0]; i += 2) {
@@ -92,9 +92,9 @@ dispage(char *pag)
void
dispage(char *pag)
{
- register i, n;
- register off;
- register short *ino = (short *) pag;
+ int i, n;
+ int off;
+ short *ino = (short *) pag;
off = PBLKSIZ;
for (i = 1; i < ino[0]; i += 2) {
diff --git a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbe.c b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbe.c
index f2aa29075a5..18ce54677e8 100644
--- a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbe.c
+++ b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbe.c
@@ -54,8 +54,8 @@ char *optarg; /* Global argument pointer. */
char
getopt(int argc, char **argv, char *optstring)
{
- register int c;
- register char *place;
+ int c;
+ char *place;
extern char *index();
static int optind = 0;
static char *scan = NULL;
diff --git a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbu.c b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbu.c
index e68b78de44e..d861c0f1b19 100644
--- a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbu.c
+++ b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/dbu.c
@@ -68,7 +68,7 @@ int
main(int argc, char **argv)
{
int c;
- register cmd *act;
+ cmd *act;
extern int optind;
extern char *optarg;
@@ -96,13 +96,13 @@ main(int argc, char **argv)
}
static void
-doit(register cmd *act, char *file)
+doit(cmd *act, char *file)
{
datum key;
datum val;
- register DBM *db;
- register char *op;
- register int n;
+ DBM *db;
+ char *op;
+ int n;
char *line;
#ifdef TIME
long start;
@@ -195,7 +195,7 @@ doit(register cmd *act, char *file)
static void
badk(char *word)
{
- register int i;
+ int i;
if (progname)
fprintf(stderr, "%s: ", progname);
@@ -209,10 +209,10 @@ badk(char *word)
}
static cmd *
-parse(register char *str)
+parse(char *str)
{
- register int i = CTABSIZ;
- register cmd *p;
+ int i = CTABSIZ;
+ cmd *p;
for (p = cmds; i--; p++)
if (strcmp(p->sname, str) == 0)
@@ -223,9 +223,9 @@ parse(register char *str)
static void
prdatum(FILE *stream, datum d)
{
- register int c;
- register char *p = d.dptr;
- register int n = d.dsize;
+ int c;
+ char *p = d.dptr;
+ int n = d.dsize;
while (n--) {
c = *p++ & 0377;
diff --git a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/hash.c b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/hash.c
index 7dd1c99e354..f0115baa545 100644
--- a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/hash.c
+++ b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/hash.c
@@ -18,16 +18,16 @@
* 65587 even better.
*/
long
-sdbm_hash(register const char *str, register int len)
+sdbm_hash(const char *str, int len)
{
- register unsigned long n = 0;
+ unsigned long n = 0;
#ifdef DUFF
#define HASHC n = *str++ + 65599 * n
if (len > 0) {
- register int loop = (len + 8 - 1) >> 3;
+ int loop = (len + 8 - 1) >> 3;
switch(len & (8 - 1)) {
case 0: do {
diff --git a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/util.c b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/util.c
index 16bd4ac9a5c..a58085d559a 100644
--- a/gnu/usr.bin/perl/ext/SDBM_File/sdbm/util.c
+++ b/gnu/usr.bin/perl/ext/SDBM_File/sdbm/util.c
@@ -6,7 +6,7 @@
#endif
void
-oops(register char *s1, register char *s2)
+oops(char *s1, char *s2)
{
extern int errno, sys_nerr;
extern char *sys_errlist[];
@@ -24,9 +24,9 @@ oops(register char *s1, register char *s2)
int
okpage(char *pag)
{
- register unsigned n;
- register off;
- register short *ino = (short *) pag;
+ unsigned n;
+ int off;
+ short *ino = (short *) pag;
if ((n = ino[0]) > PBLKSIZ / sizeof(short))
return 0;
diff --git a/gnu/usr.bin/perl/ext/Sys-Hostname/Hostname.pm b/gnu/usr.bin/perl/ext/Sys-Hostname/Hostname.pm
index cdc1231ad54..4893f6a9660 100644
--- a/gnu/usr.bin/perl/ext/Sys-Hostname/Hostname.pm
+++ b/gnu/usr.bin/perl/ext/Sys-Hostname/Hostname.pm
@@ -14,7 +14,7 @@ our $VERSION;
our $host;
BEGIN {
- $VERSION = '1.16';
+ $VERSION = '1.17';
{
local $SIG{__DIE__};
eval {
@@ -64,10 +64,6 @@ sub hostname {
chomp($host = `hostname 2> NUL`) unless defined $host;
return $host;
}
- elsif ($^O eq 'epoc') {
- $host = 'localhost';
- return $host;
- }
else { # Unix
# is anyone going to make it here?
diff --git a/gnu/usr.bin/perl/ext/Tie-Hash-NamedCapture/NamedCapture.pm b/gnu/usr.bin/perl/ext/Tie-Hash-NamedCapture/NamedCapture.pm
index 932e4404d17..9702666799c 100644
--- a/gnu/usr.bin/perl/ext/Tie-Hash-NamedCapture/NamedCapture.pm
+++ b/gnu/usr.bin/perl/ext/Tie-Hash-NamedCapture/NamedCapture.pm
@@ -1,7 +1,7 @@
use strict;
package Tie::Hash::NamedCapture;
-our $VERSION = "0.08";
+our $VERSION = "0.09";
require XSLoader;
XSLoader::load(); # This returns true, which makes require happy.
diff --git a/gnu/usr.bin/perl/ext/Tie-Hash-NamedCapture/NamedCapture.xs b/gnu/usr.bin/perl/ext/Tie-Hash-NamedCapture/NamedCapture.xs
index 58b7da7e0de..04cc4638e64 100644
--- a/gnu/usr.bin/perl/ext/Tie-Hash-NamedCapture/NamedCapture.xs
+++ b/gnu/usr.bin/perl/ext/Tie-Hash-NamedCapture/NamedCapture.xs
@@ -84,7 +84,7 @@ FETCH(...)
if (!rx || !SvROK(ST(0))) {
if (ix & UNDEF_FATAL)
- Perl_croak_no_modify(aTHX);
+ Perl_croak_no_modify();
else
XSRETURN_UNDEF;
}
diff --git a/gnu/usr.bin/perl/ext/VMS-Stdio/Stdio.xs b/gnu/usr.bin/perl/ext/VMS-Stdio/Stdio.xs
index c50bacb3f35..144f9370cc7 100644
--- a/gnu/usr.bin/perl/ext/VMS-Stdio/Stdio.xs
+++ b/gnu/usr.bin/perl/ext/VMS-Stdio/Stdio.xs
@@ -1,8 +1,6 @@
/* VMS::Stdio - VMS extensions to stdio routines
*
- * Version: 2.3
* Author: Charles Bailey bailey@newman.upenn.edu
- * Revised: 14-Jun-2007
*
*/
@@ -15,9 +13,7 @@
#include <starlet.h>
static bool
-constant(name, pval)
-char *name;
-IV *pval;
+constant(char *name, IV *pval)
{
if (strnNE(name, "O_", 2)) return FALSE;
@@ -295,7 +291,7 @@ vmsopen(spec,...)
PROTOTYPE: @
CODE:
char *args[8],mode[3] = {'r','\0','\0'}, type = '<';
- register int i, myargc;
+ int i, myargc;
FILE *fp;
SV *fh;
PerlIO *pio_fp;
diff --git a/gnu/usr.bin/perl/ext/Win32CORE/Win32CORE.c b/gnu/usr.bin/perl/ext/Win32CORE/Win32CORE.c
index fba6f555f01..22f6adfcdef 100644
--- a/gnu/usr.bin/perl/ext/Win32CORE/Win32CORE.c
+++ b/gnu/usr.bin/perl/ext/Win32CORE/Win32CORE.c
@@ -13,6 +13,7 @@
#if defined(__CYGWIN__) && !defined(USEIMPORTLIB)
#undef WIN32
#endif
+#define PERL_NO_GET_CONTEXT
#include "EXTERN.h"
#if defined(__CYGWIN__) && !defined(USEIMPORTLIB)
#define EXTCONST extern const
@@ -20,11 +21,15 @@
#include "perl.h"
#include "XSUB.h"
-static void
-forward(pTHX_ const char *function)
-{
+
+XS(w32_CORE_all){
dXSARGS;
DWORD err = GetLastError();
+ /* capture the XSANY value before Perl_load_module, the CV's any member will
+ * be overwritten by Perl_load_module and subsequent newXSes or pure perl
+ * subs
+ */
+ const char *function = (const char *) XSANY.any_ptr;
Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, newSVpvn("Win32",5), newSVnv(0.27));
SetLastError(err);
SPAGAIN;
@@ -32,35 +37,6 @@ forward(pTHX_ const char *function)
call_pv(function, GIMME_V);
}
-#define FORWARD(function) XS(w32_##function){ forward(aTHX_ "Win32::"#function); }
-FORWARD(GetCwd)
-FORWARD(SetCwd)
-FORWARD(GetNextAvailDrive)
-FORWARD(GetLastError)
-FORWARD(SetLastError)
-FORWARD(LoginName)
-FORWARD(NodeName)
-FORWARD(DomainName)
-FORWARD(FsType)
-FORWARD(GetOSVersion)
-FORWARD(IsWinNT)
-FORWARD(IsWin95)
-FORWARD(FormatMessage)
-FORWARD(Spawn)
-FORWARD(GetTickCount)
-FORWARD(GetShortPathName)
-FORWARD(GetFullPathName)
-FORWARD(GetLongPathName)
-FORWARD(CopyFile)
-FORWARD(Sleep)
-
-/* Don't forward Win32::SetChildShowWindow(). It accesses the internal variable
- * w32_showwindow in thread_intern and is therefore not implemented in Win32.xs.
- */
-/* FORWARD(SetChildShowWindow) */
-
-#undef FORWARD
-
XS_EXTERNAL(boot_Win32CORE)
{
/* This function only exists because writemain.SH, lib/ExtUtils/Embed.pm
@@ -78,27 +54,84 @@ init_Win32CORE(pTHX)
* is not yet fully initialized, so don't do anything fancy in here.
*/
- char *file = __FILE__;
+ static const struct {
+ char Win32__GetCwd [sizeof("Win32::GetCwd")];
+ char Win32__SetCwd [sizeof("Win32::SetCwd")];
+ char Win32__GetNextAvailDrive [sizeof("Win32::GetNextAvailDrive")];
+ char Win32__GetLastError [sizeof("Win32::GetLastError")];
+ char Win32__SetLastError [sizeof("Win32::SetLastError")];
+ char Win32__LoginName [sizeof("Win32::LoginName")];
+ char Win32__NodeName [sizeof("Win32::NodeName")];
+ char Win32__DomainName [sizeof("Win32::DomainName")];
+ char Win32__FsType [sizeof("Win32::FsType")];
+ char Win32__GetOSVersion [sizeof("Win32::GetOSVersion")];
+ char Win32__IsWinNT [sizeof("Win32::IsWinNT")];
+ char Win32__IsWin95 [sizeof("Win32::IsWin95")];
+ char Win32__FormatMessage [sizeof("Win32::FormatMessage")];
+ char Win32__Spawn [sizeof("Win32::Spawn")];
+ char Win32__GetTickCount [sizeof("Win32::GetTickCount")];
+ char Win32__GetShortPathName [sizeof("Win32::GetShortPathName")];
+ char Win32__GetFullPathName [sizeof("Win32::GetFullPathName")];
+ char Win32__GetLongPathName [sizeof("Win32::GetLongPathName")];
+ char Win32__CopyFile [sizeof("Win32::CopyFile")];
+ char Win32__Sleep [sizeof("Win32::Sleep")];
+ } fnname_table = {
+ "Win32::GetCwd",
+ "Win32::SetCwd",
+ "Win32::GetNextAvailDrive",
+ "Win32::GetLastError",
+ "Win32::SetLastError",
+ "Win32::LoginName",
+ "Win32::NodeName",
+ "Win32::DomainName",
+ "Win32::FsType",
+ "Win32::GetOSVersion",
+ "Win32::IsWinNT",
+ "Win32::IsWin95",
+ "Win32::FormatMessage",
+ "Win32::Spawn",
+ "Win32::GetTickCount",
+ "Win32::GetShortPathName",
+ "Win32::GetFullPathName",
+ "Win32::GetLongPathName",
+ "Win32::CopyFile",
+ "Win32::Sleep"
+ };
+
+ static const unsigned char fnname_lens [] = {
+ sizeof("Win32::GetCwd"),
+ sizeof("Win32::SetCwd"),
+ sizeof("Win32::GetNextAvailDrive"),
+ sizeof("Win32::GetLastError"),
+ sizeof("Win32::SetLastError"),
+ sizeof("Win32::LoginName"),
+ sizeof("Win32::NodeName"),
+ sizeof("Win32::DomainName"),
+ sizeof("Win32::FsType"),
+ sizeof("Win32::GetOSVersion"),
+ sizeof("Win32::IsWinNT"),
+ sizeof("Win32::IsWin95"),
+ sizeof("Win32::FormatMessage"),
+ sizeof("Win32::Spawn"),
+ sizeof("Win32::GetTickCount"),
+ sizeof("Win32::GetShortPathName"),
+ sizeof("Win32::GetFullPathName"),
+ sizeof("Win32::GetLongPathName"),
+ sizeof("Win32::CopyFile"),
+ sizeof("Win32::Sleep")
+ };
+ const unsigned char * len = (const unsigned char *)&fnname_lens;
+ const char * function = (char *)&fnname_table;
+ while (function < (char *)&fnname_table + sizeof(fnname_table)) {
+ const char * const file = __FILE__;
+ CV * const cv = newXS(function, w32_CORE_all, file);
+ XSANY.any_ptr = (void *)function;
+ function += *len++;
+ }
- newXS("Win32::GetCwd", w32_GetCwd, file);
- newXS("Win32::SetCwd", w32_SetCwd, file);
- newXS("Win32::GetNextAvailDrive", w32_GetNextAvailDrive, file);
- newXS("Win32::GetLastError", w32_GetLastError, file);
- newXS("Win32::SetLastError", w32_SetLastError, file);
- newXS("Win32::LoginName", w32_LoginName, file);
- newXS("Win32::NodeName", w32_NodeName, file);
- newXS("Win32::DomainName", w32_DomainName, file);
- newXS("Win32::FsType", w32_FsType, file);
- newXS("Win32::GetOSVersion", w32_GetOSVersion, file);
- newXS("Win32::IsWinNT", w32_IsWinNT, file);
- newXS("Win32::IsWin95", w32_IsWin95, file);
- newXS("Win32::FormatMessage", w32_FormatMessage, file);
- newXS("Win32::Spawn", w32_Spawn, file);
- newXS("Win32::GetTickCount", w32_GetTickCount, file);
- newXS("Win32::GetShortPathName", w32_GetShortPathName, file);
- newXS("Win32::GetFullPathName", w32_GetFullPathName, file);
- newXS("Win32::GetLongPathName", w32_GetLongPathName, file);
- newXS("Win32::CopyFile", w32_CopyFile, file);
- newXS("Win32::Sleep", w32_Sleep, file);
+
+ /* Don't forward Win32::SetChildShowWindow(). It accesses the internal variable
+ * w32_showwindow in thread_intern and is therefore not implemented in Win32.xs.
+ */
/* newXS("Win32::SetChildShowWindow", w32_SetChildShowWindow, file); */
}
diff --git a/gnu/usr.bin/perl/ext/Win32CORE/Win32CORE.pm b/gnu/usr.bin/perl/ext/Win32CORE/Win32CORE.pm
index 0e5d20bb908..1ea847b0692 100644
--- a/gnu/usr.bin/perl/ext/Win32CORE/Win32CORE.pm
+++ b/gnu/usr.bin/perl/ext/Win32CORE/Win32CORE.pm
@@ -1,6 +1,6 @@
package Win32CORE;
-$VERSION = '0.02';
+$VERSION = '0.04';
# There is no reason to load this module explicitly. It will be
# initialized using xs_init() when the interpreter is constructed.
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/APItest.pm b/gnu/usr.bin/perl/ext/XS-APItest/APItest.pm
index d7fb60adeab..410477af437 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/APItest.pm
+++ b/gnu/usr.bin/perl/ext/XS-APItest/APItest.pm
@@ -5,7 +5,7 @@ use strict;
use warnings;
use Carp;
-our $VERSION = '0.39';
+our $VERSION = '0.51';
require XSLoader;
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/APItest.xs b/gnu/usr.bin/perl/ext/XS-APItest/APItest.xs
index 352c08c51ac..dbb4f5070f0 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/APItest.xs
+++ b/gnu/usr.bin/perl/ext/XS-APItest/APItest.xs
@@ -78,7 +78,7 @@ bool sv_setsv_cow_hashkey_notcore(void);
/* A routine to test hv_delayfree_ent
(which itself is tested by testing on hv_free_ent */
-typedef void (freeent_function)(pTHX_ HV *, register HE *);
+typedef void (freeent_function)(pTHX_ HV *, HE *);
void
test_freeent(freeent_function *f) {
@@ -1101,6 +1101,29 @@ addissub_myck_add(pTHX_ OP *op)
return newBINOP(OP_SUBTRACT, flags, aop, bop);
}
+static Perl_check_t old_ck_rv2cv;
+
+static OP *
+my_ck_rv2cv(pTHX_ OP *o)
+{
+ SV *ref;
+ SV **flag_svp = hv_fetchs(GvHV(PL_hintgv), "XS::APItest/addunder", 0);
+ OP *aop;
+
+ if (flag_svp && SvTRUE(*flag_svp) && (o->op_flags & OPf_KIDS)
+ && (aop = cUNOPx(o)->op_first) && aop->op_type == OP_CONST
+ && aop->op_private & (OPpCONST_ENTERED|OPpCONST_BARE)
+ && (ref = cSVOPx(aop)->op_sv) && SvPOK(ref) && SvCUR(ref)
+ && *(SvEND(ref)-1) == 'o')
+ {
+ SvGROW(ref, SvCUR(ref)+2);
+ *SvEND(ref) = '_';
+ SvCUR(ref)++;
+ *SvEND(ref) = '\0';
+ }
+ return old_ck_rv2cv(aTHX_ o);
+}
+
#include "const-c.inc"
MODULE = XS::APItest PACKAGE = XS::APItest
@@ -1934,30 +1957,31 @@ call_method(methname, flags, ...)
PUSHs(sv_2mortal(newSViv(i)));
void
-newCONSTSUB_type(stash, name, flags, type, sv)
+newCONSTSUB(stash, name, flags, sv)
HV* stash
SV* name
I32 flags
- int type
SV* sv
+ ALIAS:
+ newCONSTSUB_flags = 1
PREINIT:
- CV* cv;
+ CV* mycv;
STRLEN len;
const char *pv = SvPV(name, len);
PPCODE:
- switch (type) {
+ switch (ix) {
case 0:
- cv = newCONSTSUB(stash, pv, SvOK(sv) ? sv : NULL);
+ mycv = newCONSTSUB(stash, pv, SvOK(sv) ? SvREFCNT_inc(sv) : NULL);
break;
case 1:
- cv = newCONSTSUB_flags(
- stash, pv, len, flags | SvUTF8(name), SvOK(sv) ? sv : NULL
+ mycv = newCONSTSUB_flags(
+ stash, pv, len, flags | SvUTF8(name), SvOK(sv) ? SvREFCNT_inc(sv) : NULL
);
break;
}
EXTEND(SP, 2);
- PUSHs( CvCONST(cv) ? &PL_sv_yes : &PL_sv_no );
- PUSHs((SV*)CvGV(cv));
+ PUSHs( CvCONST(mycv) ? &PL_sv_yes : &PL_sv_no );
+ PUSHs((SV*)CvGV(mycv));
void
gv_init_type(namesv, multi, flags, type)
@@ -3238,7 +3262,7 @@ CODE:
OUTPUT:
RETVAL
-bool
+U32
SvIsCOW(SV *sv)
CODE:
RETVAL = SvIsCOW(sv);
@@ -3263,16 +3287,16 @@ fetch_pad_names( cv )
CV* cv
PREINIT:
I32 i;
- AV *pad_namelist;
+ PADNAMELIST *pad_namelist;
AV *retav = newAV();
CODE:
- pad_namelist = (AV*) *av_fetch(CvPADLIST(cv), 0, FALSE);
+ pad_namelist = PadlistNAMES(CvPADLIST(cv));
- for ( i = av_len(pad_namelist); i >= 0; i-- ) {
- SV** name_ptr = av_fetch(pad_namelist, i, 0);
+ for ( i = PadnamelistMAX(pad_namelist); i >= 0; i-- ) {
+ PADNAME* name = PadnamelistARRAY(pad_namelist)[i];
- if (name_ptr && SvPOKp(*name_ptr)) {
- av_push(retav, newSVsv(*name_ptr));
+ if (SvPOKp(name)) {
+ av_push(retav, newSVpadname(name));
}
}
RETVAL = newRV_noinc((SV*)retav);
@@ -3349,6 +3373,92 @@ setup_addissub()
CODE:
wrap_op_checker(OP_ADD, addissub_myck_add, &addissub_nxck_add);
+void
+setup_rv2cv_addunderbar()
+CODE:
+ wrap_op_checker(OP_RV2CV, my_ck_rv2cv, &old_ck_rv2cv);
+
+#ifdef USE_ITHREADS
+
+bool
+test_alloccopstash()
+CODE:
+ RETVAL = PL_stashpad[alloccopstash(PL_defstash)] == PL_defstash;
+OUTPUT:
+ RETVAL
+
+#endif
+
+bool
+test_newFOROP_without_slab()
+CODE:
+ {
+ const I32 floor = start_subparse(0,0);
+ CV * const cv = PL_compcv;
+ /* The slab allocator does not like CvROOT being set. */
+ CvROOT(PL_compcv) = (OP *)1;
+ op_free(newFOROP(0, 0, newOP(OP_PUSHMARK, 0), 0, 0));
+ CvROOT(PL_compcv) = NULL;
+ SvREFCNT_dec(PL_compcv);
+ LEAVE_SCOPE(floor);
+ /* If we have not crashed yet, then the test passes. */
+ RETVAL = TRUE;
+ }
+OUTPUT:
+ RETVAL
+
+ # provide access to CALLREGEXEC, except replace pointers within the
+ # string with offsets from the start of the string
+
+I32
+callregexec(SV *prog, STRLEN stringarg, STRLEN strend, I32 minend, SV *sv, U32 nosave)
+CODE:
+ {
+ STRLEN len;
+ char *strbeg;
+ if (SvROK(prog))
+ prog = SvRV(prog);
+ strbeg = SvPV_force(sv, len);
+ RETVAL = CALLREGEXEC((REGEXP *)prog,
+ strbeg + stringarg,
+ strbeg + strend,
+ strbeg,
+ minend,
+ sv,
+ NULL, /* data */
+ nosave);
+ }
+OUTPUT:
+ RETVAL
+
+void
+lexical_import(SV *name, CV *cv)
+ CODE:
+ {
+ PADLIST *pl;
+ PADOFFSET off;
+ if (!PL_compcv)
+ Perl_croak(aTHX_
+ "lexical_import can only be called at compile time");
+ pl = CvPADLIST(PL_compcv);
+ ENTER;
+ SAVESPTR(PL_comppad_name); PL_comppad_name = PadlistNAMES(pl);
+ SAVESPTR(PL_comppad); PL_comppad = PadlistARRAY(pl)[1];
+ SAVESPTR(PL_curpad); PL_curpad = PadARRAY(PL_comppad);
+ off = pad_add_name_sv(sv_2mortal(newSVpvf("&%"SVf,name)),
+ padadd_STATE, 0, 0);
+ SvREFCNT_dec(PL_curpad[off]);
+ PL_curpad[off] = SvREFCNT_inc(cv);
+ LEAVE;
+ }
+
+SV *
+sv_mortalcopy(SV *sv)
+ CODE:
+ RETVAL = SvREFCNT_inc(sv_mortalcopy(sv));
+ OUTPUT:
+ RETVAL
+
MODULE = XS::APItest PACKAGE = XS::APItest::AUTOLOADtest
int
@@ -3356,7 +3466,6 @@ AUTOLOAD(...)
INIT:
SV* comms;
SV* class_and_method;
- SV* tmp;
CODE:
class_and_method = GvSV(CvGV(cv));
comms = get_sv("main::the_method", 1);
@@ -3439,11 +3548,898 @@ test_get_vtbl()
#ifdef USE_LOCALE_COLLATE
test_get_this_vtable(collxfrm);
#endif
- test_get_this_vtable(amagic);
- test_get_this_vtable(amagicelem);
test_get_this_vtable(backref);
test_get_this_vtable(utf8);
RETVAL = PTR2UV(get_vtbl(-1));
OUTPUT:
RETVAL
+
+bool
+test_isBLANK_uni(UV ord)
+ CODE:
+ RETVAL = isBLANK_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isBLANK_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isBLANK_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isBLANK_A(UV ord)
+ CODE:
+ RETVAL = isBLANK_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isBLANK_L1(UV ord)
+ CODE:
+ RETVAL = isBLANK_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isBLANK_LC(UV ord)
+ CODE:
+ RETVAL = isBLANK_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isBLANK_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isBLANK_utf8(p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isBLANK_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isBLANK_LC_utf8(p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isVERTWS_uni(UV ord)
+ CODE:
+ RETVAL = isVERTWS_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isVERTWS_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isVERTWS_utf8(p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isUPPER_uni(UV ord)
+ CODE:
+ RETVAL = isUPPER_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isUPPER_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isUPPER_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isUPPER_A(UV ord)
+ CODE:
+ RETVAL = isUPPER_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isUPPER_L1(UV ord)
+ CODE:
+ RETVAL = isUPPER_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isUPPER_LC(UV ord)
+ CODE:
+ RETVAL = isUPPER_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isUPPER_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isUPPER_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isUPPER_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isUPPER_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isLOWER_uni(UV ord)
+ CODE:
+ RETVAL = isLOWER_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isLOWER_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isLOWER_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isLOWER_A(UV ord)
+ CODE:
+ RETVAL = isLOWER_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isLOWER_L1(UV ord)
+ CODE:
+ RETVAL = isLOWER_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isLOWER_LC(UV ord)
+ CODE:
+ RETVAL = isLOWER_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isLOWER_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isLOWER_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isLOWER_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isLOWER_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHA_uni(UV ord)
+ CODE:
+ RETVAL = isALPHA_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHA_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isALPHA_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHA_A(UV ord)
+ CODE:
+ RETVAL = isALPHA_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHA_L1(UV ord)
+ CODE:
+ RETVAL = isALPHA_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHA_LC(UV ord)
+ CODE:
+ RETVAL = isALPHA_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHA_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isALPHA_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHA_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isALPHA_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isWORDCHAR_uni(UV ord)
+ CODE:
+ RETVAL = isWORDCHAR_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isWORDCHAR_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isWORDCHAR_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isWORDCHAR_A(UV ord)
+ CODE:
+ RETVAL = isWORDCHAR_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isWORDCHAR_L1(UV ord)
+ CODE:
+ RETVAL = isWORDCHAR_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isWORDCHAR_LC(UV ord)
+ CODE:
+ RETVAL = isWORDCHAR_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isWORDCHAR_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isWORDCHAR_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isWORDCHAR_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isWORDCHAR_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHANUMERIC_uni(UV ord)
+ CODE:
+ RETVAL = isALPHANUMERIC_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHANUMERIC_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isALPHANUMERIC_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHANUMERIC_A(UV ord)
+ CODE:
+ RETVAL = isALPHANUMERIC_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHANUMERIC_L1(UV ord)
+ CODE:
+ RETVAL = isALPHANUMERIC_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHANUMERIC_LC(UV ord)
+ CODE:
+ RETVAL = isALPHANUMERIC_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHANUMERIC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isALPHANUMERIC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALPHANUMERIC_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isALPHANUMERIC_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALNUM_uni(UV ord)
+ CODE:
+ RETVAL = isALNUM_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALNUM_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isALNUM_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALNUM_LC(UV ord)
+ CODE:
+ RETVAL = isALNUM_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALNUM_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isALNUM_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isALNUM_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isALNUM_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isDIGIT_uni(UV ord)
+ CODE:
+ RETVAL = isDIGIT_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isDIGIT_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isDIGIT_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isDIGIT_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isDIGIT_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isDIGIT_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isDIGIT_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isDIGIT_A(UV ord)
+ CODE:
+ RETVAL = isDIGIT_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isDIGIT_L1(UV ord)
+ CODE:
+ RETVAL = isDIGIT_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isDIGIT_LC(UV ord)
+ CODE:
+ RETVAL = isDIGIT_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDFIRST_uni(UV ord)
+ CODE:
+ RETVAL = isIDFIRST_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDFIRST_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isIDFIRST_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDFIRST_A(UV ord)
+ CODE:
+ RETVAL = isIDFIRST_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDFIRST_L1(UV ord)
+ CODE:
+ RETVAL = isIDFIRST_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDFIRST_LC(UV ord)
+ CODE:
+ RETVAL = isIDFIRST_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDFIRST_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isIDFIRST_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDFIRST_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isIDFIRST_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDCONT_uni(UV ord)
+ CODE:
+ RETVAL = isIDCONT_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDCONT_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isIDCONT_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDCONT_A(UV ord)
+ CODE:
+ RETVAL = isIDCONT_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDCONT_L1(UV ord)
+ CODE:
+ RETVAL = isIDCONT_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDCONT_LC(UV ord)
+ CODE:
+ RETVAL = isIDCONT_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDCONT_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isIDCONT_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isIDCONT_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isIDCONT_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isSPACE_uni(UV ord)
+ CODE:
+ RETVAL = isSPACE_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isSPACE_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isSPACE_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isSPACE_A(UV ord)
+ CODE:
+ RETVAL = isSPACE_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isSPACE_L1(UV ord)
+ CODE:
+ RETVAL = isSPACE_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isSPACE_LC(UV ord)
+ CODE:
+ RETVAL = isSPACE_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isSPACE_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isSPACE_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isSPACE_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isSPACE_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isASCII_uni(UV ord)
+ CODE:
+ RETVAL = isASCII_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isASCII_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isASCII_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isASCII_A(UV ord)
+ CODE:
+ RETVAL = isASCII_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isASCII_L1(UV ord)
+ CODE:
+ RETVAL = isASCII_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isASCII_LC(UV ord)
+ CODE:
+ RETVAL = isASCII_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isASCII_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isASCII_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isASCII_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isASCII_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isCNTRL_uni(UV ord)
+ CODE:
+ RETVAL = isCNTRL_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isCNTRL_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isCNTRL_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isCNTRL_A(UV ord)
+ CODE:
+ RETVAL = isCNTRL_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isCNTRL_L1(UV ord)
+ CODE:
+ RETVAL = isCNTRL_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isCNTRL_LC(UV ord)
+ CODE:
+ RETVAL = isCNTRL_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isCNTRL_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isCNTRL_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isCNTRL_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isCNTRL_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPRINT_uni(UV ord)
+ CODE:
+ RETVAL = isPRINT_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPRINT_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isPRINT_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPRINT_A(UV ord)
+ CODE:
+ RETVAL = isPRINT_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPRINT_L1(UV ord)
+ CODE:
+ RETVAL = isPRINT_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPRINT_LC(UV ord)
+ CODE:
+ RETVAL = isPRINT_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPRINT_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isPRINT_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPRINT_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isPRINT_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isGRAPH_uni(UV ord)
+ CODE:
+ RETVAL = isGRAPH_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isGRAPH_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isGRAPH_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isGRAPH_A(UV ord)
+ CODE:
+ RETVAL = isGRAPH_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isGRAPH_L1(UV ord)
+ CODE:
+ RETVAL = isGRAPH_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isGRAPH_LC(UV ord)
+ CODE:
+ RETVAL = isGRAPH_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isGRAPH_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isGRAPH_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isGRAPH_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isGRAPH_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPUNCT_uni(UV ord)
+ CODE:
+ RETVAL = isPUNCT_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPUNCT_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isPUNCT_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPUNCT_A(UV ord)
+ CODE:
+ RETVAL = isPUNCT_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPUNCT_L1(UV ord)
+ CODE:
+ RETVAL = isPUNCT_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPUNCT_LC(UV ord)
+ CODE:
+ RETVAL = isPUNCT_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPUNCT_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isPUNCT_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPUNCT_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isPUNCT_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isXDIGIT_uni(UV ord)
+ CODE:
+ RETVAL = isXDIGIT_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isXDIGIT_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isXDIGIT_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isXDIGIT_A(UV ord)
+ CODE:
+ RETVAL = isXDIGIT_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isXDIGIT_L1(UV ord)
+ CODE:
+ RETVAL = isXDIGIT_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isXDIGIT_LC(UV ord)
+ CODE:
+ RETVAL = isXDIGIT_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isXDIGIT_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isXDIGIT_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isXDIGIT_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isXDIGIT_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPSXSPC_uni(UV ord)
+ CODE:
+ RETVAL = isPSXSPC_uni(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPSXSPC_LC_uvchr(UV ord)
+ CODE:
+ RETVAL = isPSXSPC_LC_uvchr(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPSXSPC_A(UV ord)
+ CODE:
+ RETVAL = isPSXSPC_A(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPSXSPC_L1(UV ord)
+ CODE:
+ RETVAL = isPSXSPC_L1(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPSXSPC_LC(UV ord)
+ CODE:
+ RETVAL = isPSXSPC_LC(ord);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPSXSPC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isPSXSPC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isPSXSPC_LC_utf8(unsigned char * p)
+ CODE:
+ RETVAL = isPSXSPC_LC_utf8( p);
+ OUTPUT:
+ RETVAL
+
+bool
+test_isQUOTEMETA(UV ord)
+ CODE:
+ RETVAL = _isQUOTEMETA(ord);
+ OUTPUT:
+ RETVAL
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/Makefile.PL b/gnu/usr.bin/perl/ext/XS-APItest/Makefile.PL
index 5e2955bfd30..031ce8a0b0a 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/Makefile.PL
+++ b/gnu/usr.bin/perl/ext/XS-APItest/Makefile.PL
@@ -14,6 +14,8 @@ WriteMakefile(
realclean => {FILES => 'const-c.inc const-xs.inc'},
($Config{gccversion} && $Config{d_attribute_deprecated} ?
(CCFLAGS => $Config{ccflags} . ' -Wno-deprecated-declarations') : ()),
+ depend => { 'core.o' => 'core_or_not.inc',
+ 'notcore.o' => 'core_or_not.inc' },
);
my @names = (qw(HV_DELETE HV_DISABLE_UVAR_XKEY HV_FETCH_ISSTORE
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/core_or_not.inc b/gnu/usr.bin/perl/ext/XS-APItest/core_or_not.inc
index 8fa32349cb0..9c1cf561d59 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/core_or_not.inc
+++ b/gnu/usr.bin/perl/ext/XS-APItest/core_or_not.inc
@@ -16,7 +16,7 @@ CAT2(sv_setsv_cow_hashkey_, SUFFIX) () {
SV *destination = newSV(0);
bool result;
- if(!SvREADONLY(source) && !SvFAKE(source)) {
+ if(!SvIsCOW(source)) {
SvREFCNT_dec(source);
Perl_croak(aTHX_ "Creating a shared hash key scalar failed when "
STRINGIFY(SUFFIX) " got flags %"UVxf, (UV)SvFLAGS(source));
@@ -24,7 +24,7 @@ CAT2(sv_setsv_cow_hashkey_, SUFFIX) () {
sv_setsv(destination, source);
- result = SvREADONLY(destination) && SvFAKE(destination);
+ result = !!SvIsCOW(destination);
SvREFCNT_dec(source);
SvREFCNT_dec(destination);
@@ -37,8 +37,8 @@ CAT2(sv_setsv_cow_hashkey_, SUFFIX) () {
* mode: c
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/call.t b/gnu/usr.bin/perl/ext/XS-APItest/t/call.t
index fd968b83d63..7ff99337f67 100755
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/call.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/call.t
@@ -186,9 +186,10 @@ foreach my $inx ("", "aabbcc\n", [qw(aa bb cc)]) {
}
{
+ no warnings "misc";
my $warn = "";
local $SIG{__WARN__} = sub { $warn .= $_[0] };
- call_sv(sub { no warnings "misc"; die "aa\n" }, G_VOID|G_EVAL|G_KEEPERR);
+ call_sv(sub { use warnings "misc"; die "aa\n" }, G_VOID|G_EVAL|G_KEEPERR);
is $warn, "\t(in cleanup) aa\n";
}
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/call_checker.t b/gnu/usr.bin/perl/ext/XS-APItest/t/call_checker.t
index 51dbc939a42..377cb749802 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/call_checker.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/call_checker.t
@@ -1,6 +1,6 @@
use warnings;
use strict;
-use Test::More tests => 64;
+use Test::More tests => 76;
use XS::APItest;
@@ -158,4 +158,52 @@ is $@, "";
is_deeply $foo_got, undef;
is $foo_ret, 9;
+sub MODIFY_CODE_ATTRIBUTES { cv_set_call_checker_lists($_[1]); () }
+BEGIN {
+ *foo2 = sub($$) :Attr { $foo_got = [ @_ ]; return "z"; };
+}
+
+$foo_got = undef;
+eval q{$foo_ret = foo2(@b, @c);};
+is $@, "";
+is_deeply $foo_got, [ qw(a b), qw(a b c) ];
+is $foo_ret, "z";
+
+cv_set_call_checker_lists(\&foo);
+undef &foo;
+$foo_got = undef;
+eval 'sub foo($@) { $foo_got = [ @_ ]; return "z"; }
+ $foo_ret = foo(@b, @c);';
+is $@, "";
+is_deeply $foo_got, [ 2, qw(a b c) ], 'undef clears call checkers';
+is $foo_ret, "z";
+
+my %got;
+
+sub g {
+ my $name = shift;
+ my $sub = sub ($\@) {
+ $got{$name} = [ @_ ];
+ return $name;
+ };
+ cv_set_call_checker_scalars($sub);
+ return $sub;
+}
+
+BEGIN {
+ *whack = g("whack");
+ *glurp = g("glurp");
+}
+
+%got = ();
+my $whack_ret = whack(@b, @c);
+is $@, "";
+is_deeply $got{whack}, [ 2, 3 ];
+is $whack_ret, "whack";
+
+my $glurp_ret = glurp(@b, @c);
+is $@, "";
+is_deeply $got{glurp}, [ 2, 3 ];
+is $glurp_ret, "glurp";
+
1;
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/callregexec.t b/gnu/usr.bin/perl/ext/XS-APItest/t/callregexec.t
new file mode 100644
index 00000000000..3111390686b
--- /dev/null
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/callregexec.t
@@ -0,0 +1,66 @@
+#!perl
+
+# test CALLREGEXEC()
+# (currently it just checks that it handles non-\0 terminated strings;
+# full tests haven't been added yet)
+
+use warnings;
+use strict;
+
+use XS::APItest;
+*callregexec = *XS::APItest::callregexec;
+
+use Test::More tests => 50;
+
+# Test that the regex engine can handle strings without terminating \0
+# XXX This is by no means comprehensive; it doesn't test all ops, nor all
+# code paths within those ops (especially not utf8).
+
+
+# this sub takes a string that has an extraneous char at the end.
+# First see if the string (less the last char) matches the regex;
+# then see if that string (including the last char) matches when
+# calling callregexec(), but with the length arg set to 1 char less than
+# the length of the string.
+# In theory the result should be the same for both matches, since
+# they should both not 'see' the final char.
+
+sub try {
+ my ($str, $re, $exp, $desc) = @_;
+
+ my $str1 = substr($str, 0, -1);
+ ok !!$exp == !!($str1 =~ $re), "$desc str =~ qr";
+
+ my $bytes = do { use bytes; length $str1 };
+ ok !!$exp == !!callregexec($re, 0, $bytes, 0, $str, 0),
+ "$desc callregexec";
+}
+
+
+{
+ try "\nx", qr/\n^/m, 0, 'MBOL';
+ try "ax", qr/a$/m, 1, 'MEOL';
+ try "ax", qr/a$/s, 1, 'SEOL';
+ try "abx", qr/^(ab|X)./s, 0, 'SANY';
+ try "abx", qr/^(ab|X)\C/, 0, 'CANY';
+ try "abx", qr/^(ab|X)./, 0, 'REG_ANY';
+ try "abx", qr/^ab(c|d|e|x)/, 0, 'TRIE/TRIEC';
+ try "abx", qr/^abx/, 0, 'EXACT';
+ try "abx", qr/^ABX/i, 0, 'EXACTF';
+ try "abx", qr/^ab\b/, 1, 'BOUND';
+ try "ab-", qr/^ab\B/, 0, 'NBOUND';
+ try "aas", qr/a[st]/, 0, 'ANYOF';
+ try "aas", qr/a[s\xDF]/i, 0, 'ANYOFV';
+ try "ab1", qr/ab\d/, 0, 'DIGIT';
+ try "ab\n", qr/ab[[:ascii:]]/, 0, 'POSIX';
+ try "aP\x{307}", qr/^a\X/, 1, 'CLUMP 1';
+ try "aP\x{307}x", qr/^a\X/, 1, 'CLUMP 2';
+ try "\x{100}\r\n", qr/^\x{100}\X/, 1, 'CLUMP 3';
+ try "abb", qr/^a(b)\1/, 0, 'REF';
+ try "ab\n", qr/^.+\R/, 0, 'LNBREAK';
+ try "ab\n", qr/^.+\v/, 0, 'VERTWS';
+ try "abx", qr/^.+\V/, 1, 'NVERTWS';
+ try "ab\t", qr/^.+\h/, 0, 'HORIZWS';
+ try "abx", qr/^.+\H/, 1, 'NHORIZWS';
+ try "abx", qr/a.*x/, 0, 'CURLY';
+}
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/clone-with-stack.t b/gnu/usr.bin/perl/ext/XS-APItest/t/clone-with-stack.t
index 943a123427e..7a0cd294790 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/clone-with-stack.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/clone-with-stack.t
@@ -17,7 +17,7 @@ if (not $Config{'useithreads'}) {
skip_all("clone_with_stack requires threads");
}
-plan(3);
+plan(4);
fresh_perl_is( <<'----', <<'====', undef, "minimal clone_with_stack" );
use XS::APItest;
@@ -51,3 +51,17 @@ ok
====
}
+
+{
+ fresh_perl_is( <<'----', <<'====', undef, "clone stack" );
+use XS::APItest;
+sub f {
+ clone_with_stack();
+ 0..4;
+}
+print 'X-', 'Y-', join(':', f()), "-Z\n";
+----
+X-Y-0:1:2:3:4-Z
+====
+
+}
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/copstash.t b/gnu/usr.bin/perl/ext/XS-APItest/t/copstash.t
new file mode 100644
index 00000000000..8ed98a231ba
--- /dev/null
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/copstash.t
@@ -0,0 +1,9 @@
+use Config;
+use Test::More;
+BEGIN { plan skip_all => 'no threads' unless $Config{useithreads} }
+
+plan tests => 1;
+
+use XS::APItest;
+
+ok test_alloccopstash;
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/fetch_pad_names.t b/gnu/usr.bin/perl/ext/XS-APItest/t/fetch_pad_names.t
index 559bc3f79bd..3d422809526 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/fetch_pad_names.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/fetch_pad_names.t
@@ -311,6 +311,7 @@ sub general_tests {
is grep( !Encode::is_utf8($_), @$names_av), $tests->{pad_size}{invariant}{cmp};
for my $var (@{$tests->{vars}}) {
+ no warnings 'experimental::smartmatch';
if ($var->{type} eq 'ok') {
ok $var->{name} ~~ $names_av, $var->{msg};
} else {
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/grok.t b/gnu/usr.bin/perl/ext/XS-APItest/t/grok.t
index 2d2d192c7d2..99fbc5d3da4 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/grok.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/grok.t
@@ -5,6 +5,7 @@ use Test::More;
use Config;
use XS::APItest;
use feature 'switch';
+no warnings 'experimental::smartmatch';
use constant TRUTH => '0 but true';
# Tests for grok_number. Not yet comprehensive.
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/handy.t b/gnu/usr.bin/perl/ext/XS-APItest/t/handy.t
new file mode 100644
index 00000000000..eb620ec942d
--- /dev/null
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/handy.t
@@ -0,0 +1,212 @@
+#!perl -w
+
+use strict;
+use Test::More;
+use Config;
+
+use XS::APItest;
+
+use Unicode::UCD qw(prop_invlist);
+
+sub truth($) { # Converts values so is() works
+ return (shift) ? 1 : 0;
+}
+
+my $locale;
+if($Config{d_setlocale}) {
+ require POSIX;
+ $locale = POSIX::setlocale( &POSIX::LC_ALL, "C");
+ if (defined $locale && $locale eq 'C') {
+ BEGIN {
+ if($Config{d_setlocale}) {
+ require locale; import locale; # make \w work right in non-ASCII lands
+ }
+ }
+
+ # Some locale implementations don't have the 128-255 characters all
+ # mean nothing. Skip the locale tests in that situation
+ for my $i (128 .. 255) {
+ if (chr($i) =~ /[[:print:]]/) {
+ undef $locale;
+ last;
+ }
+ }
+ }
+}
+
+my %properties = (
+ # name => Lookup-property name
+ alnum => 'Word',
+ wordchar => 'Word',
+ alphanumeric => 'Alnum',
+ alpha => 'Alpha',
+ ascii => 'ASCII',
+ blank => 'Blank',
+ cntrl => 'Control',
+ digit => 'Digit',
+ graph => 'Graph',
+ idfirst => '_Perl_IDStart',
+ idcont => '_Perl_IDCont',
+ lower => 'Lower',
+ print => 'Print',
+ psxspc => 'XPosixSpace',
+ punct => 'XPosixPunct',
+ quotemeta => '_Perl_Quotemeta',
+ space => 'XPerlSpace',
+ vertws => 'VertSpace',
+ upper => 'Upper',
+ xdigit => 'XDigit',
+ );
+
+my @warnings;
+local $SIG{__WARN__} = sub { push @warnings, @_ };
+
+use charnames ();
+foreach my $name (sort keys %properties) {
+ my $property = $properties{$name};
+ my @invlist = prop_invlist($property, '_perl_core_internal_ok');
+ if (! @invlist) {
+ fail("No inversion list found for $property");
+ next;
+ }
+
+ # Include all the Latin1 code points, plus 0x100.
+ my @code_points = (0 .. 256);
+
+ # Then include the next few boundaries above those from this property
+ my $above_latins = 0;
+ foreach my $range_start (@invlist) {
+ next if $range_start < 257;
+ push @code_points, $range_start - 1, $range_start;
+ $above_latins++;
+ last if $above_latins > 5;
+ }
+
+ # This makes sure we are using the Perl definition of idfirst and idcont,
+ # and not the Unicode. There are a few differences.
+ push @code_points, ord "\N{ESTIMATED SYMBOL}" if $name =~ /^id(first|cont)/;
+ if ($name eq "idcont") { # And some that are continuation but not start
+ push @code_points, ord("\N{GREEK ANO TELEIA}"),
+ ord("\N{COMBINING GRAVE ACCENT}");
+ }
+
+ # And finally one non-Unicode code point.
+ push @code_points, 0x110000; # Above Unicode, no prop should match
+ no warnings 'non_unicode';
+
+ for my $i (@code_points) {
+ my $function = uc($name);
+
+ my $matches = Unicode::UCD::_search_invlist(\@invlist, $i);
+ if (! defined $matches) {
+ $matches = 0;
+ }
+ else {
+ $matches = truth(! ($matches % 2));
+ }
+
+ my $ret;
+ my $char_name = charnames::viacode($i) // "No name";
+ my $display_name = sprintf "\\N{U+%02X, %s}", $i, $char_name;
+
+ if ($name eq 'quotemeta') { # There is only one macro for this, and is
+ # defined only for Latin1 range
+ $ret = truth eval "test_is${function}($i)";
+ if ($@) {
+ fail $@;
+ }
+ else {
+ my $truth = truth($matches && $i < 256);
+ is ($ret, $truth, "is${function}( $display_name ) == $truth");
+ }
+ next;
+ }
+
+ # vertws is always all of Unicode; ALNUM_A and ALNUM_L1 are not
+ # defined as they were added later, after WORDCHAR was created to be a
+ # clearer synonym for ALNUM
+ if ($name ne 'vertws') {
+ if ($name ne 'alnum') {
+ $ret = truth eval "test_is${function}_A($i)";
+ if ($@) {
+ fail($@);
+ }
+ else {
+ my $truth = truth($matches && $i < 128);
+ is ($ret, $truth, "is${function}_A( $display_name ) == $truth");
+ }
+ $ret = truth eval "test_is${function}_L1($i)";
+ if ($@) {
+ fail($@);
+ }
+ else {
+ my $truth = truth($matches && $i < 256);
+ is ($ret, $truth, "is${function}_L1( $display_name ) == $truth");
+ }
+ }
+
+ if (defined $locale) {
+ require locale; import locale;
+
+ $ret = truth eval "test_is${function}_LC($i)";
+ if ($@) {
+ fail($@);
+ }
+ else {
+ my $truth = truth($matches && $i < 128);
+ is ($ret, $truth, "is${function}_LC( $display_name ) == $truth");
+ }
+ }
+ }
+
+ $ret = truth eval "test_is${function}_uni($i)";
+ if ($@) {
+ fail($@);
+ }
+ else {
+ is ($ret, $matches, "is${function}_uni( $display_name ) == $matches");
+ }
+
+ if (defined $locale && $name ne 'vertws') {
+ require locale; import locale;
+
+ $ret = truth eval "test_is${function}_LC_uvchr('$i')";
+ if ($@) {
+ fail($@);
+ }
+ else {
+ my $truth = truth($matches && ($i < 128 || $i > 255));
+ is ($ret, $truth, "is${function}_LC_uvchr( $display_name ) == $truth");
+ }
+ }
+
+ my $char = chr($i);
+ utf8::upgrade($char);
+ $char = quotemeta $char if $char eq '\\' || $char eq "'";
+ $ret = truth eval "test_is${function}_utf8('$char')";
+ if ($@) {
+ fail($@);
+ }
+ else {
+ is ($ret, $matches, "is${function}_utf8( $display_name ) == $matches");
+ }
+
+ if ($name ne 'vertws' && defined $locale) {
+ require locale; import locale;
+
+ $ret = truth eval "test_is${function}_LC_utf8('$char')";
+ if ($@) {
+ fail($@);
+ }
+ else {
+ my $truth = truth($matches && ($i < 128 || $i > 255));
+ is ($ret, $truth, "is${function}_LC_utf8( $display_name ) == $truth");
+ }
+ }
+ }
+}
+
+# This is primarily to make sure that no non-Unicode warnings get generated
+is(scalar @warnings, 0, "No warnings were generated " . join ", ", @warnings);
+
+done_testing;
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/hash.t b/gnu/usr.bin/perl/ext/XS-APItest/t/hash.t
index 0fdd64e7ce2..9e27af8f2f4 100755
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/hash.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/hash.t
@@ -258,8 +258,22 @@ sub test_precomputed_hashes {
warnings; # thank you!
@h{85} = 1 };
pass 'no crash when writing to hash elem with null value via slice';
+ eval { delete local $h{86} };
+ pass 'no crash during local deletion of hash elem with null value';
+ eval { delete local @h{87,88} };
+ pass 'no crash during local deletion of hash slice with null values';
}
+# [perl #111000] Bug number eleventy-one thousand:
+# hv_store should work on hint hashes
+eval q{
+ BEGIN {
+ XS::APItest::Hash::store \%^H, "XS::APItest/hash.t", undef;
+ delete $^H{"XS::APItest/hash.t"};
+ }
+};
+pass("hv_store works on the hint hash");
+
done_testing;
exit;
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/lexsub.t b/gnu/usr.bin/perl/ext/XS-APItest/t/lexsub.t
new file mode 100644
index 00000000000..2d66addf7a2
--- /dev/null
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/lexsub.t
@@ -0,0 +1,19 @@
+use Test::More tests => 4;
+use XS::APItest;
+
+
+sub fribbler { 2*shift }
+{
+ BEGIN { lexical_import fribbler => sub { 3*shift } }
+ is fribbler(15), 45, 'lexical subs via pad_add_name';
+}
+is fribbler(15), 30, 'XS-allocated lexical subs falling out of scope';
+
+{
+ BEGIN { lexical_import fribbler => sub { 3*shift } }
+ is fribbler(15), 45, 'lexical subs via pad_add_name';
+ no warnings;
+ use feature 'lexical_subs';
+ our sub fribbler;
+ is fribbler(15), 30, 'our sub overrides XS-registered lexical sub';
+}
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/multicall.t b/gnu/usr.bin/perl/ext/XS-APItest/t/multicall.t
index 983f5fd0163..f96f62e7436 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/multicall.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/multicall.t
@@ -7,7 +7,7 @@
use warnings;
use strict;
-use Test::More tests => 6;
+use Test::More tests => 7;
use XS::APItest;
@@ -48,3 +48,16 @@ use XS::APItest;
is($destroyed, 1, "f now destroyed");
}
+
+# [perl #115602]
+# deep recursion realloced the CX stack, but the dMULTICALL local var
+# 'cx' still pointed to the old one.
+# Thius doesn;t actually test the failure (I couldn't think of a way to
+# get the failure to show at the perl level) but it allows valgribnd or
+# similar to spot any errors.
+
+{
+ sub rec { my $c = shift; rec($c-1) if $c > 0 };
+ my @r = XS::APItest::multicall_each { rec(90) } 1,2,3;
+ pass("recursion");
+}
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/newCONSTSUB.t b/gnu/usr.bin/perl/ext/XS-APItest/t/newCONSTSUB.t
index afd44262dad..2df850e0c03 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/newCONSTSUB.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/newCONSTSUB.t
@@ -3,7 +3,7 @@
use strict;
use utf8;
use open qw( :utf8 :std );
-use Test::More tests => 14;
+use Test::More tests => 22;
use XS::APItest;
@@ -13,34 +13,34 @@ use XS::APItest;
my $w;
local $SIG{__WARN__} = sub { $w .= shift };
sub frimple() { 78 }
- newCONSTSUB_type(\%::, "frimple", 0, 1, undef);
+ newCONSTSUB_flags(\%::, "frimple", 0, undef);
like $w, qr/Constant subroutine frimple redefined at /,
'newCONSTSUB constant redefinition warning is unaffected by $^W=0';
undef $w;
- newCONSTSUB_type(\%::, "frimple", 0, 1, undef);
+ newCONSTSUB_flags(\%::, "frimple", 0, undef);
is $w, undef, '...unless the const SVs are the same';
eval 'sub frimple() { 78 }';
undef $w;
- newCONSTSUB_type(\%::, "frimple", 0, 1, "78");
+ newCONSTSUB_flags(\%::, "frimple", 0, "78");
is $w, undef, '...or the const SVs have the same value';
}
use warnings;
my ($const, $glob) =
- XS::APItest::newCONSTSUB_type(\%::, "sanity_check", 0, 0, undef);
+ XS::APItest::newCONSTSUB(\%::, "sanity_check", 0, undef);
ok $const;
ok *{$glob}{CODE};
($const, $glob) =
- XS::APItest::newCONSTSUB_type(\%::, "\x{30cb}", 0, 0, undef);
+ XS::APItest::newCONSTSUB(\%::, "\x{30cb}", 0, undef);
ok $const, "newCONSTSUB generates the constant,";
ok *{$glob}{CODE}, "..and the glob,";
ok !$::{"\x{30cb}"}, "...but not the right one";
($const, $glob) =
- XS::APItest::newCONSTSUB_type(\%::, "\x{30cd}", 0, 1, undef);
+ XS::APItest::newCONSTSUB_flags(\%::, "\x{30cd}", 0, undef);
ok $const, "newCONSTSUB_flags generates the constant,";
ok *{$glob}{CODE}, "..and the glob,";
ok $::{"\x{30cd}"}, "...the right one!";
@@ -51,7 +51,7 @@ eval q{
my $w;
local $SIG{__WARN__} = sub { $w .= shift };
*foo = sub(){123};
- newCONSTSUB_type(\%::, "foo", 0, 1, undef);
+ newCONSTSUB_flags(\%::, "foo", 0, undef);
is $w, undef, 'newCONSTSUB uses calling scope for redefinition warnings';
}
};
@@ -61,11 +61,42 @@ eval q{
*{"foo::\x{100}"} = sub(){return 123};
my $w;
local $SIG{__WARN__} = sub { $w .= shift };
- newCONSTSUB_type(\%foo::, "\x{100}", 0, 1, undef);
+ newCONSTSUB_flags(\%foo::, "\x{100}", 0, undef);
like $w, qr/Subroutine \x{100} redefined at /,
'newCONSTSUB redefinition warning + utf8';
undef $w;
- newCONSTSUB_type(\%foo::, "\x{100}", 0, 1, 54);
+ newCONSTSUB_flags(\%foo::, "\x{100}", 0, 54);
like $w, qr/Constant subroutine \x{100} redefined at /,
'newCONSTSUB constant redefinition warning + utf8';
}
+
+# XS::APItest was not handling references correctly here
+
+package Counter {
+ our $count = 0;
+
+ sub new {
+ ++$count;
+ my $o = bless [];
+ return $o;
+ }
+
+ sub DESTROY {
+ --$count;
+ }
+};
+
+foreach (['newCONSTSUB', 'ZZIP'],
+ ['newCONSTSUB_flags', 'BRRRAPP']) {
+ my ($using, $name) = @$_;
+ is($Counter::count, 0, 'No objects exist before we start');
+ my $sub = XS::APItest->can($using);
+ ($const, $glob) = $sub->(\%::, $name, 0, Counter->new());
+ is($const, 1, "subroutine generated by $using is CvCONST");
+ is($Counter::count, 1, '1 object now exists');
+ {
+ no warnings 'redefine';
+ *$glob = sub () {};
+ }
+ is($Counter::count, 0, 'no objects remain');
+}
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/op.t b/gnu/usr.bin/perl/ext/XS-APItest/t/op.t
index 8a92a249a10..258f573268a 100755
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/op.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/op.t
@@ -10,3 +10,6 @@ use_ok('XS::APItest');
*hint_fetch = *hint_fetch = \&XS::APItest::Hash::refcounted_he_fetch;
require '../../t/op/caller.pl';
+
+ok test_newFOROP_without_slab(),
+ 'no assertion failures when allocating FOROP without slab';
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/svsetsv.t b/gnu/usr.bin/perl/ext/XS-APItest/t/svsetsv.t
index 328bc775542..68e8cd6812c 100755
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/svsetsv.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/svsetsv.t
@@ -1,7 +1,7 @@
use strict;
use warnings;
-use Test::More tests => 6;
+use Test::More tests => 7;
BEGIN { use_ok('XS::APItest') };
@@ -20,3 +20,8 @@ foo(\1); sv_set_deref(\&AUTOLOAD, '$', 1);
is prototype(\&AUTOLOAD), '$', 'sv_setpv(cv,...) sets prototype';
foo(\1); sv_set_deref(\&AUTOLOAD, '$', 2);
is prototype(\&AUTOLOAD), '$', 'sv_setpvn(cv,...) sets prototype';
+
+# Perhaps this does not belong here? But it is at least testing that
+# sv_mortalcopy uses sv_setsv in an unsurprising way.
+ok !SvIsCOW(sv_mortalcopy(__PACKAGE__)),
+ 'sv_mortalcopy does not COW for extensions [perl #79824]';
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/sym-hook.t b/gnu/usr.bin/perl/ext/XS-APItest/t/sym-hook.t
new file mode 100644
index 00000000000..25666f8e3ad
--- /dev/null
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/sym-hook.t
@@ -0,0 +1,32 @@
+
+# Test that PL_check hooks for RV2*V can override symbol lookups.
+
+# So far we only test RV2CV.
+
+use XS::APItest;
+use Test::More tests => 4;
+
+BEGIN {
+ setup_rv2cv_addunderbar;
+ $^H{'XS::APItest/addunder'} = 1; # make foo() actually call foo_()
+}
+
+sub foo_ { @_ ? shift . "___" : "phew" }
+
+is(foo(), "phew");
+
+# Make sure subs looked up via rv2cv check hooks are not treated as second-
+# class subs.
+
+BEGIN { # If there is a foo symbol, this test will not be testing anything.
+ delete $::{foo};
+ delete $::{goo};
+}
+is((foo bar), 'bar___');
+$bar = "baz";
+is((foo $bar), 'baz___');
+
+# Proto should cause goo() to override Foo->goo interpretation.
+{package Foom}
+sub goo_ (*) { shift . "===" }
+is((goo Foom), "Foom===");
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/underscore_length.t b/gnu/usr.bin/perl/ext/XS-APItest/t/underscore_length.t
index 7ca6906322a..545b2a32408 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/underscore_length.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/underscore_length.t
@@ -1,4 +1,4 @@
-use warnings;
+use warnings; no warnings 'experimental::lexical_topic';
use strict;
use Test::More tests => 4;
diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/xsub_h.t b/gnu/usr.bin/perl/ext/XS-APItest/t/xsub_h.t
index 93742b1ba8b..9bf0710fa2e 100644
--- a/gnu/usr.bin/perl/ext/XS-APItest/t/xsub_h.t
+++ b/gnu/usr.bin/perl/ext/XS-APItest/t/xsub_h.t
@@ -18,7 +18,7 @@ sub default {
sub expect_good {
my $package = $_[0];
- my $version = exists $_[1] ? ", $_[1]" : '';
+ my $version = @_ >= 2 ? ", $_[1]" : '';
local $Test::Builder::Level = $Test::Builder::Level + 1;
is_deeply([XS_VERSION_defined(@_)], [],
"Is good for $package$version");
@@ -37,7 +37,7 @@ sub expect_bad {
} else {
$what = 'bootstrap parameter';
}
- if (exists $_[1]) {
+ if (@_ >= 2) {
$desc = "$_[0], $_[1]";
} else {
$desc = $_[0];
diff --git a/gnu/usr.bin/perl/ext/XS-Typemap/Typemap.pm b/gnu/usr.bin/perl/ext/XS-Typemap/Typemap.pm
index 7132f725eb1..7b83e1d04a2 100644
--- a/gnu/usr.bin/perl/ext/XS-Typemap/Typemap.pm
+++ b/gnu/usr.bin/perl/ext/XS-Typemap/Typemap.pm
@@ -36,7 +36,7 @@ require XSLoader;
use vars qw/ $VERSION @EXPORT /;
-$VERSION = '0.08';
+$VERSION = '0.10';
@EXPORT = (qw/
T_SV
@@ -54,6 +54,8 @@ $VERSION = '0.08';
T_INT
T_ENUM
T_BOOL
+ T_BOOL_2
+ T_BOOL_OUT
T_U_INT
T_SHORT
T_U_SHORT
diff --git a/gnu/usr.bin/perl/ext/XS-Typemap/Typemap.xs b/gnu/usr.bin/perl/ext/XS-Typemap/Typemap.xs
index 3dc5b88a9d6..dd34c39bd66 100644
--- a/gnu/usr.bin/perl/ext/XS-Typemap/Typemap.xs
+++ b/gnu/usr.bin/perl/ext/XS-Typemap/Typemap.xs
@@ -176,7 +176,7 @@ XS_unpack_anotherstructPtrPtr(SV *in)
if (SvROK(tmp) && SvTYPE(SvRV(tmp)) == SVt_PVHV)
inhash = (HV*)SvRV(tmp);
else
- Perl_croak(aTHX_ "Array element %u is not a HASH reference", i);
+ Perl_croak(aTHX_ "Array element %"UVuf" is not a HASH reference", i);
elem = hv_fetchs(inhash, "a", 0);
if (elem == NULL)
@@ -436,6 +436,21 @@ T_BOOL( in )
OUTPUT:
RETVAL
+bool
+T_BOOL_2( in )
+ bool in
+ CODE:
+ OUTPUT:
+ in
+
+void
+T_BOOL_OUT( out, in )
+ bool out
+ bool in
+ CODE:
+ out = in;
+ OUTPUT:
+ out
## T_U_INT
diff --git a/gnu/usr.bin/perl/ext/XS-Typemap/t/Typemap.t b/gnu/usr.bin/perl/ext/XS-Typemap/t/Typemap.t
index 2a3f25e95f5..07178011503 100755
--- a/gnu/usr.bin/perl/ext/XS-Typemap/t/Typemap.t
+++ b/gnu/usr.bin/perl/ext/XS-Typemap/t/Typemap.t
@@ -6,7 +6,7 @@ BEGIN {
}
}
-use Test::More tests => 140;
+use Test::More tests => 146;
use strict;
use warnings;
@@ -150,6 +150,25 @@ ok( ! T_BOOL(0) );
ok( ! T_BOOL('') );
ok( ! T_BOOL(undef) );
+{
+ # these attempt to modify a read-only value
+ ok( !eval { T_BOOL_2(52); 1 } );
+ ok( !eval { T_BOOL_2(0); 1 } );
+ ok( !eval { T_BOOL_2(''); 1 } );
+ ok( !eval { T_BOOL_2(undef); 1 } );
+}
+
+{
+ my ($in, $out);
+ $in = 1;
+ T_BOOL_OUT($out, $in);
+ ok($out, "T_BOOL_OUT, true in");
+ $in = 0;
+ $out = 1;
+ T_BOOL_OUT($out, $in);
+ ok(!$out, "T_BOOL_OUT, false in");
+}
+
# T_U_SHORT aka U16
note("T_U_SHORT");
is( T_U_SHORT(32000), 32000);
diff --git a/gnu/usr.bin/perl/ext/arybase/arybase.pm b/gnu/usr.bin/perl/ext/arybase/arybase.pm
index 1008684989a..7181748a312 100644
--- a/gnu/usr.bin/perl/ext/arybase/arybase.pm
+++ b/gnu/usr.bin/perl/ext/arybase/arybase.pm
@@ -1,6 +1,6 @@
package arybase;
-our $VERSION = "0.05";
+our $VERSION = "0.06";
require XSLoader;
XSLoader::load(); # This returns true, which makes require happy.
@@ -14,7 +14,7 @@ arybase - Set indexing base via $[
=head1 SYNOPSIS
$[ = 1;
-
+
@a = qw(Sun Mon Tue Wed Thu Fri Sat);
print $a[3], "\n"; # prints Tue
@@ -44,7 +44,7 @@ It affects the following operations:
splice @array, $index, ...
each @array
keys @array
-
+
index $string, $substring # return value is affected
pos $string
substr $string, $offset, ...
diff --git a/gnu/usr.bin/perl/ext/arybase/ptable.h b/gnu/usr.bin/perl/ext/arybase/ptable.h
index de6d816f278..175d037fbb0 100644
--- a/gnu/usr.bin/perl/ext/arybase/ptable.h
+++ b/gnu/usr.bin/perl/ext/arybase/ptable.h
@@ -168,7 +168,7 @@ STATIC void PTABLE_PREFIX(_store)(pPTBL_ ptable * const t, const void * const ke
STATIC void ptable_walk(pTHX_ ptable * const t, void (*cb)(pTHX_ ptable_ent *ent, void *userdata), void *userdata) {
#define ptable_walk(T, CB, UD) ptable_walk(aTHX_ (T), (CB), (UD))
if (t && t->items) {
- register ptable_ent ** const array = t->ary;
+ ptable_ent ** const array = t->ary;
UV i = t->max;
do {
ptable_ent *entry;
@@ -181,7 +181,7 @@ STATIC void ptable_walk(pTHX_ ptable * const t, void (*cb)(pTHX_ ptable_ent *ent
STATIC void PTABLE_PREFIX(_clear)(pPTBL_ ptable * const t) {
if (t && t->items) {
- register ptable_ent ** const array = t->ary;
+ ptable_ent ** const array = t->ary;
UV i = t->max;
do {
diff --git a/gnu/usr.bin/perl/ext/arybase/t/akeys.t b/gnu/usr.bin/perl/ext/arybase/t/akeys.t
index 53e9db15e78..dc490c458e5 100644
--- a/gnu/usr.bin/perl/ext/arybase/t/akeys.t
+++ b/gnu/usr.bin/perl/ext/arybase/t/akeys.t
@@ -1,4 +1,4 @@
-use warnings; no warnings 'deprecated';
+use warnings; no warnings 'deprecated', 'experimental::lexical_topic';
use strict;
BEGIN {
diff --git a/gnu/usr.bin/perl/ext/arybase/t/aslice.t b/gnu/usr.bin/perl/ext/arybase/t/aslice.t
index f4a507da6ba..462ee3d6558 100644
--- a/gnu/usr.bin/perl/ext/arybase/t/aslice.t
+++ b/gnu/usr.bin/perl/ext/arybase/t/aslice.t
@@ -1,4 +1,4 @@
-use warnings; no warnings 'deprecated';
+use warnings; no warnings 'deprecated', 'experimental::lexical_topic';
use strict;
use Test::More tests => 18;
diff --git a/gnu/usr.bin/perl/ext/arybase/t/lslice.t b/gnu/usr.bin/perl/ext/arybase/t/lslice.t
index 0db7a078f2d..828ea3ef886 100644
--- a/gnu/usr.bin/perl/ext/arybase/t/lslice.t
+++ b/gnu/usr.bin/perl/ext/arybase/t/lslice.t
@@ -1,4 +1,4 @@
-use warnings; no warnings 'deprecated';
+use warnings; no warnings 'deprecated', 'experimental::lexical_topic';
use strict;
use Test::More tests => 12;
diff --git a/gnu/usr.bin/perl/ext/attributes/attributes.pm b/gnu/usr.bin/perl/ext/attributes/attributes.pm
index 6bf10ab7471..5a656a69236 100644
--- a/gnu/usr.bin/perl/ext/attributes/attributes.pm
+++ b/gnu/usr.bin/perl/ext/attributes/attributes.pm
@@ -1,6 +1,6 @@
package attributes;
-our $VERSION = 0.19;
+our $VERSION = 0.21;
@EXPORT_OK = qw(get reftype);
@EXPORT = ();
@@ -240,9 +240,26 @@ will not trigger the "Ambiguous call resolved as CORE::%s" warning.
=item locked
-The "locked" attribute has no effect in
-5.10.0 and later. It was used as part
-of the now-removed "Perl 5.005 threads".
+The "locked" attribute is deprecated, and has no effect in 5.10.0 and later.
+It was used as part of the now-removed "Perl 5.005 threads".
+
+=back
+
+The following are the built-in attributes for variables:
+
+=over 4
+
+=item shared
+
+Indicates that the referenced variable can be shared across different threads
+when used in conjunction with the L<threads> and L<threads::shared> modules.
+
+=item unique
+
+The "unique" attribute is deprecated, and has no effect in 5.10.0 and later.
+It used to indicate that a single copy of an C<our> variable was to be used by
+all interpreters should the program happen to be running in a
+multi-interpreter environment.
=back
diff --git a/gnu/usr.bin/perl/ext/attributes/attributes.xs b/gnu/usr.bin/perl/ext/attributes/attributes.xs
index e92f793d5c5..d39b77a4f42 100644
--- a/gnu/usr.bin/perl/ext/attributes/attributes.xs
+++ b/gnu/usr.bin/perl/ext/attributes/attributes.xs
@@ -216,8 +216,8 @@ usage:
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/ext/mro/mro.pm b/gnu/usr.bin/perl/ext/mro/mro.pm
index 31f5ce69736..3ca6460d31d 100644
--- a/gnu/usr.bin/perl/ext/mro/mro.pm
+++ b/gnu/usr.bin/perl/ext/mro/mro.pm
@@ -12,7 +12,7 @@ use warnings;
# mro.pm versions < 1.00 reserved for MRO::Compat
# for partial back-compat to 5.[68].x
-our $VERSION = '1.09';
+our $VERSION = '1.11';
sub import {
mro::set_mro(scalar(caller), $_[1]) if $_[1];
@@ -308,7 +308,7 @@ works (like C<goto &maybe::next::method>);
=over 4
-=item L<http://www.webcom.com/haahr/dylan/linearization-oopsla96.html>
+=item L<http://haahr.tempdomainname.com/dylan/linearization-oopsla96.html>
=back
diff --git a/gnu/usr.bin/perl/ext/mro/mro.xs b/gnu/usr.bin/perl/ext/mro/mro.xs
index 7b5a86d0ecb..a786025d9d3 100644
--- a/gnu/usr.bin/perl/ext/mro/mro.xs
+++ b/gnu/usr.bin/perl/ext/mro/mro.xs
@@ -470,8 +470,8 @@ mro__nextcan(...)
PREINIT:
SV* self = ST(0);
const I32 throw_nomethod = SvIVX(ST(1));
- register I32 cxix = cxstack_ix;
- register const PERL_CONTEXT *ccstack = cxstack;
+ I32 cxix = cxstack_ix;
+ const PERL_CONTEXT *ccstack = cxstack;
const PERL_SI *top_si = PL_curstackinfo;
HV* selfstash;
SV *stashname;
diff --git a/gnu/usr.bin/perl/ext/re/Makefile.PL b/gnu/usr.bin/perl/ext/re/Makefile.PL
index a9733528c11..c6338c7ea2f 100644
--- a/gnu/usr.bin/perl/ext/re/Makefile.PL
+++ b/gnu/usr.bin/perl/ext/re/Makefile.PL
@@ -25,24 +25,29 @@ sub postamble {
my $regcomp_c = upupfile('regcomp.c');
my $regexec_c = upupfile('regexec.c');
my $dquote_static_c = upupfile('dquote_static.c');
+ my $inline_invlist_c = upupfile('inline_invlist.c');
<<EOF;
re_comp.c : $regcomp_c
- \$(RM_F) re_comp.c
\$(CP) $regcomp_c re_comp.c
-re_comp\$(OBJ_EXT) : re_comp.c dquote_static.c
+re_comp\$(OBJ_EXT) : re_comp.c dquote_static.c inline_invlist.c
re_exec.c : $regexec_c
- \$(RM_F) re_exec.c
\$(CP) $regexec_c re_exec.c
-re_exec\$(OBJ_EXT) : re_exec.c
+re_exec\$(OBJ_EXT) : re_exec.c inline_invlist.c
dquote_static.c : $dquote_static_c
- \$(RM_F) dquote_static.c
\$(CP) $dquote_static_c dquote_static.c
+inline_invlist.c : $inline_invlist_c
+ - \$(RM_F) inline_invlist.c
+ \$(CP) $inline_invlist_c inline_invlist.c
+
EOF
}
diff --git a/gnu/usr.bin/perl/ext/re/re.pm b/gnu/usr.bin/perl/ext/re/re.pm
index 5ce980104a4..84b701154d2 100644
--- a/gnu/usr.bin/perl/ext/re/re.pm
+++ b/gnu/usr.bin/perl/ext/re/re.pm
@@ -4,7 +4,7 @@ package re;
use strict;
use warnings;
-our $VERSION = "0.19_01";
+our $VERSION = "0.23";
our @ISA = qw(Exporter);
our @EXPORT_OK = ('regmust',
qw(is_regexp regexp_pattern
@@ -235,14 +235,16 @@ re - Perl pragma to alter regular expression behaviour
$pat = '(?{ $foo = 1 })';
use re 'eval';
- /foo${pat}bar/; # won't fail (when not under -T switch)
+ /foo${pat}bar/; # won't fail (when not under -T
+ # switch)
{
no re 'taint'; # the default
($x) = ($^X =~ /^(.*)$/s); # $x is not tainted here
no re 'eval'; # the default
- /foo${pat}bar/; # disallowed (with or without -T switch)
+ /foo${pat}bar/; # disallowed (with or without -T
+ # switch)
}
use re '/ix';
@@ -251,22 +253,27 @@ re - Perl pragma to alter regular expression behaviour
"FOO" =~ /foo/; # just /i implied
use re 'debug'; # output debugging info during
- /^(.*)$/s; # compile and run time
+ /^(.*)$/s; # compile and run time
- use re 'debugcolor'; # same as 'debug', but with colored output
+ use re 'debugcolor'; # same as 'debug', but with colored
+ # output
...
- use re qw(Debug All); # Finer tuned debugging options.
- use re qw(Debug More);
- no re qw(Debug ALL); # Turn of all re debugging in this scope
+ use re qw(Debug All); # Same as "use re 'debug'", but you
+ # can use "Debug" with things other
+ # than 'All'
+ use re qw(Debug More); # 'All' plus output more details
+ no re qw(Debug ALL); # Turn on (almost) all re debugging
+ # in this scope
use re qw(is_regexp regexp_pattern); # import utility functions
my ($pat,$mods)=regexp_pattern(qr/foo/i);
if (is_regexp($obj)) {
print "Got regexp: ",
- scalar regexp_pattern($obj); # just as perl would stringify it
- } # but no hassle with blessed re's.
+ scalar regexp_pattern($obj); # just as perl would stringify
+ } # it but no hassle with blessed
+ # re's.
(We use $^X in these examples because it's tainted by default.)
@@ -284,8 +291,9 @@ other transformations.
When C<use re 'eval'> is in effect, a regexp is allowed to contain
C<(?{ ... })> zero-width assertions and C<(??{ ... })> postponed
-subexpressions, even if the regular expression contains
-variable interpolation. That is normally disallowed, since it is a
+subexpressions that are derived from variable interpolation, rather than
+appearing literally within the regexp. That is normally disallowed, since
+it is a
potential security risk. Note that this pragma is ignored when the regular
expression is obtained from tainted data, i.e. evaluation is always
disallowed with tainted regular expressions. See L<perlre/(?{ code })>
@@ -408,7 +416,7 @@ Extra debugging of how tries execute.
=item INTUIT
-Enable debugging of start point optimisations.
+Enable debugging of start-point optimisations.
=back
@@ -442,7 +450,7 @@ states as well. This output from this can be quite large.
=item OPTIMISEM
-Enable enhanced optimisation debugging and start point optimisations.
+Enable enhanced optimisation debugging and start-point optimisations.
Probably not useful except when debugging the regexp engine itself.
=item OFFSETS
@@ -475,7 +483,8 @@ These are useful shortcuts to save on the typing.
=item ALL
-Enable all options at once except OFFSETS, OFFSETSDBG and BUFFERS
+Enable all options at once except OFFSETS, OFFSETSDBG and BUFFERS.
+(To get every single option without exception, use both ALL and EXTRA.)
=item All
@@ -487,14 +496,14 @@ Enable DUMP and all execute options. Equivalent to:
=item More
-Enable TRIEM and all execute compile and execute options.
+Enable the options enabled by "All", plus STATE, TRIEC, and TRIEM.
=back
=back
As of 5.9.5 the directive C<use re 'debug'> and its equivalents are
-lexically scoped, as the other directives are. However they have both
+lexically scoped, as are the other directives. However they have both
compile-time and run-time effects.
=head2 Exportable Functions
diff --git a/gnu/usr.bin/perl/ext/re/re.xs b/gnu/usr.bin/perl/ext/re/re.xs
index f40e16c8e46..1da68f12ee1 100644
--- a/gnu/usr.bin/perl/ext/re/re.xs
+++ b/gnu/usr.bin/perl/ext/re/re.xs
@@ -12,6 +12,10 @@
START_EXTERN_C
extern REGEXP* my_re_compile (pTHX_ SV * const pattern, const U32 pm_flags);
+extern REGEXP* my_re_op_compile (pTHX_ SV ** const patternp, int pat_count,
+ OP *expr, const regexp_engine* eng, REGEXP *VOL old_re,
+ bool *is_bare_re, U32 rx_flags, U32 pm_flags);
+
extern I32 my_regexec (pTHX_ REGEXP * const prog, char* stringarg, char* strend,
char* strbeg, I32 minend, SV* screamer,
void* data, U32 flags);
@@ -57,8 +61,9 @@ const struct regexp_engine my_reg_engine = {
my_reg_named_buff_iter,
my_reg_qr_package,
#if defined(USE_ITHREADS)
- my_regdupe
+ my_regdupe,
#endif
+ my_re_op_compile,
};
MODULE = re PACKAGE = re
@@ -95,8 +100,9 @@ PPCODE:
} else if (RX_FLOAT_UTF8(re)) {
fl = sv_2mortal(newSVsv(RX_FLOAT_UTF8(re)));
}
- XPUSHs(an);
- XPUSHs(fl);
+ EXTEND(SP, 2);
+ PUSHs(an);
+ PUSHs(fl);
XSRETURN(2);
}
XSRETURN_UNDEF;
diff --git a/gnu/usr.bin/perl/ext/re/re_top.h b/gnu/usr.bin/perl/ext/re/re_top.h
index 6eb02e33684..e73550f9a86 100644
--- a/gnu/usr.bin/perl/ext/re/re_top.h
+++ b/gnu/usr.bin/perl/ext/re/re_top.h
@@ -13,6 +13,7 @@
#define Perl_regprop my_regprop
#define Perl_re_intuit_start my_re_intuit_start
#define Perl_re_compile my_re_compile
+#define Perl_re_op_compile my_re_op_compile
#define Perl_regfree_internal my_regfree
#define Perl_re_intuit_string my_re_intuit_string
#define Perl_regdupe_internal my_regdupe
@@ -35,8 +36,8 @@
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/ext/re/t/re_funcs_u.t b/gnu/usr.bin/perl/ext/re/t/re_funcs_u.t
index 57d7281acf9..706437ec18b 100644
--- a/gnu/usr.bin/perl/ext/re/t/re_funcs_u.t
+++ b/gnu/usr.bin/perl/ext/re/t/re_funcs_u.t
@@ -41,7 +41,7 @@ if ('1234'=~/(?:(?<A>\d)|(?<C>!))(?<B>\d)(?<A>\d)(?<B>\d)/){
@names = sort +regnames(0);
is("@names","A B","regnames");
my $names = regnames();
- is($names, "B", "regnames in scalar context");
+ ok(($names eq "B" || $names eq "A"), "regnames in scalar context");
@names = sort +regnames(1);
is("@names","A B C","regnames");
is(join("", @{regname("A",1)}),"13");
@@ -92,6 +92,7 @@ if ('1234'=~/(?:(?<A>\d)|(?<C>!))(?<B>\d)(?<A>\d)(?<B>\d)/){
SKIP: {
skip_if_miniperl("no dynamic loading on miniperl, no POSIX", 3);
+ skip 'No locale testing without d_setlocale', 3 if(!$Config::Config{d_setlocale});
require POSIX;
my $current_locale = POSIX::setlocale( &POSIX::LC_CTYPE, 'de_DE.ISO-8859-1' );
if ( !$current_locale || $current_locale ne 'de_DE.ISO-8859-1' ) {
@@ -108,6 +109,7 @@ if ('1234'=~/(?:(?<A>\d)|(?<C>!))(?<B>\d)(?<A>\d)(?<B>\d)/){
SKIP: {
skip_if_miniperl("no dynamic loading on miniperl, no POSIX", 3);
+ skip 'No locale testing without d_setlocale', 3 if(!$Config::Config{d_setlocale});
require POSIX;
my $current_locale = POSIX::setlocale( &POSIX::LC_CTYPE, 'C' );
if ( !$current_locale || $current_locale ne 'C' ) {
diff --git a/gnu/usr.bin/perl/fakesdio.h b/gnu/usr.bin/perl/fakesdio.h
index 614438096e0..094fd006c3e 100644
--- a/gnu/usr.bin/perl/fakesdio.h
+++ b/gnu/usr.bin/perl/fakesdio.h
@@ -126,8 +126,8 @@
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/fakethr.h b/gnu/usr.bin/perl/fakethr.h
index 7c82aa6d691..643806de26f 100644
--- a/gnu/usr.bin/perl/fakethr.h
+++ b/gnu/usr.bin/perl/fakethr.h
@@ -68,8 +68,8 @@ struct thread_intern {
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/feature.h b/gnu/usr.bin/perl/feature.h
index dc9696ec9c3..215a4d50465 100644
--- a/gnu/usr.bin/perl/feature.h
+++ b/gnu/usr.bin/perl/feature.h
@@ -81,6 +81,12 @@
FEATURE_IS_ENABLED("__SUB__")) \
)
+#define FEATURE_LEXSUBS_IS_ENABLED \
+ ( \
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED("lexsubs") \
+ )
+
#define FEATURE_UNIEVAL_IS_ENABLED \
( \
CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_515 \
diff --git a/gnu/usr.bin/perl/globals.c b/gnu/usr.bin/perl/globals.c
index df0f9d07630..f53a8984234 100644
--- a/gnu/usr.bin/perl/globals.c
+++ b/gnu/usr.bin/perl/globals.c
@@ -37,8 +37,8 @@
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/haiku/Haiku/Haiku.pm b/gnu/usr.bin/perl/haiku/Haiku/Haiku.pm
index 2577bec4965..205df732a2b 100644
--- a/gnu/usr.bin/perl/haiku/Haiku/Haiku.pm
+++ b/gnu/usr.bin/perl/haiku/Haiku/Haiku.pm
@@ -8,7 +8,7 @@ BEGIN {
require DynaLoader;
@ISA = qw|Exporter DynaLoader|;
- $VERSION = '0.34';
+ $VERSION = '0.35';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
diff --git a/gnu/usr.bin/perl/haiku/Haiku/Haiku.xs b/gnu/usr.bin/perl/haiku/Haiku/Haiku.xs
index c5a121dad18..c544e22bc02 100644
--- a/gnu/usr.bin/perl/haiku/Haiku/Haiku.xs
+++ b/gnu/usr.bin/perl/haiku/Haiku/Haiku.xs
@@ -20,7 +20,7 @@ haiku_do_debugger(const char* format,...)
}
static void
-haiku_do_debug_printf(pTHX_ register SV *sv,
+haiku_do_debug_printf(pTHX_ SV *sv,
void (*printfFunc)(const char*,...))
{
dVAR;
diff --git a/gnu/usr.bin/perl/hints/catamount.sh b/gnu/usr.bin/perl/hints/catamount.sh
index 13a5ea542a0..cb6db9eea18 100644
--- a/gnu/usr.bin/perl/hints/catamount.sh
+++ b/gnu/usr.bin/perl/hints/catamount.sh
@@ -31,11 +31,11 @@
# mkdir -p /opt/perl-catamount
# mkdir -p /opt/perl-catamount/include
# mkdir -p /opt/perl-catamount/lib
-# mkdir -p /opt/perl-catamount/lib/perl5/5.16.3
+# mkdir -p /opt/perl-catamount/lib/perl5/5.18.2
# mkdir -p /opt/perl-catamount/bin
# cp *.h /opt/perl-catamount/include
# cp libperl.a /opt/perl-catamount/lib
-# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.16.3
+# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.18.2
# cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib
#
# With the headers and the libperl.a you can embed Perl to your Catamount
diff --git a/gnu/usr.bin/perl/hints/gnukfreebsd.sh b/gnu/usr.bin/perl/hints/gnukfreebsd.sh
index 1225f6995fe..435afe7890c 100644
--- a/gnu/usr.bin/perl/hints/gnukfreebsd.sh
+++ b/gnu/usr.bin/perl/hints/gnukfreebsd.sh
@@ -5,6 +5,3 @@
. ./hints/linux.sh
-# Configure sets these where $osname = linux
-ccdlflags='-Wl,-E'
-lddlflags='-shared'
diff --git a/gnu/usr.bin/perl/hints/gnuknetbsd.sh b/gnu/usr.bin/perl/hints/gnuknetbsd.sh
index 6ee143357f7..008547f1d93 100644
--- a/gnu/usr.bin/perl/hints/gnuknetbsd.sh
+++ b/gnu/usr.bin/perl/hints/gnuknetbsd.sh
@@ -5,6 +5,3 @@
. ./hints/linux.sh
-# Configure sets these where $osname = linux
-ccdlflags='-Wl,-E'
-lddlflags='-shared'
diff --git a/gnu/usr.bin/perl/hints/midnightbsd.sh b/gnu/usr.bin/perl/hints/midnightbsd.sh
index b5ef050a36a..1c0ea2f407d 100644
--- a/gnu/usr.bin/perl/hints/midnightbsd.sh
+++ b/gnu/usr.bin/perl/hints/midnightbsd.sh
@@ -6,17 +6,17 @@ esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
objformat=`/usr/bin/objformat`
-if [ x$objformat = xelf ]; then
- libpth="/usr/lib /usr/local/lib"
- glibpth="/usr/lib /usr/local/lib"
- ldflags="-Wl,-E "
- lddlflags="-shared "
-else
+if [ x$objformat = xaout ]; then
if [ -e /usr/lib/aout ]; then
libpth="/usr/lib/aout /usr/local/lib /usr/lib"
glibpth="/usr/lib/aout /usr/local/lib /usr/lib"
fi
lddlflags='-Bshareable'
+else
+ libpth="/usr/lib /usr/local/lib"
+ glibpth="/usr/lib /usr/local/lib"
+ ldflags="-Wl,-E "
+ lddlflags="-shared "
fi
cccdlflags='-DPIC -fPIC'
@@ -33,12 +33,8 @@ d_voidsig='define'
cat > UU/usethreads.cbu <<'EOCBU'
case "$usethreads" in
$define|true|[yY]*)
- lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'`
- ldflags="-pthread $ldflags"
- d_gethostbyaddr_r="undef"
- d_gethostbyaddr_r_proto="0"
-
- set `echo X "$libswanted "| sed -e 's/ c / c_r /'`
+ ldflags="-pthread $ldflags"
+ set `echo X "$libswanted "| sed -e 's/ c //'`
shift
libswanted="$*"
# Configure will probably pick the wrong libc to use for nm scan.
diff --git a/gnu/usr.bin/perl/hints/vos.sh b/gnu/usr.bin/perl/hints/vos.sh
index 0a3a677eddd..2401f6917be 100644
--- a/gnu/usr.bin/perl/hints/vos.sh
+++ b/gnu/usr.bin/perl/hints/vos.sh
@@ -7,15 +7,13 @@
# Paul Green (Paul.Green@stratus.com)
# C compiler and default options.
-cc=gcc
-ccflags="-D_XOPEN_SOURCE=700 -D_VOS_EXTENDED_NAMES"
-ccdlflags="-Wl,-rpath,$shrpdir"
-cccdlflags="-fPIC"
+cc=${CC-gcc}
+ccflags=${CFLAGS-"-D_XOPEN_SOURCE=700 -D_SYSV -D_VOS_EXTENDED_NAMES -D_FILE_OFFSET_BITS=64"}
# Make command.
-make="/system/gnu_library/bin/gmake"
+make=${MAKE-"/system/gnu_library/bin/gmake"}
# indented to not put it into config.sh
- _make="/system/gnu_library/bin/gmake"
+ _make=${MAKE-"/system/gnu_library/bin/gmake"}
# Check for the minimum acceptable release of OpenVOS (17.1.0).
if test `uname -r | sed -e 's/OpenVOS Release //' -e 's/VOS Release //'` \< "17.1.0"; then
@@ -27,7 +25,7 @@ EOF
exit 1
fi
-# Always X86
+# Architecture name always X86
archname=`uname -m`
# Executable suffix.
@@ -43,35 +41,25 @@ glibpth="$loclibpth"
# Include library paths
locincpth=""
-usrinc="/system/include_library"
+usrinc=${USRINC-"/system/include_library"}
# Where to install perl5.
-prefix=/system/ported/perl5
+prefix=/system/ported
# Linker is gcc.
-ld="gcc"
-lddlflags="-shared"
-
-# Shared libraries!
-so="so"
-
-# Build libperl.so
-useshrplib="true"
+ld=${CC-"gcc"}
# Don't use nm. The VOS copy of libc.a is empty.
usenm="n"
-# Make the default be no large file support.
-uselargefiles="n"
-
# Don't use malloc that comes with perl.
usemymalloc="n"
# Make bison the default compiler-compiler.
yacc="/system/gnu_library/bin/bison"
-# VOS doesn't have (or need) a pager, but perl needs one.
-pager="/system/gnu_library/bin/cat.pm"
+# VOS doesn't need a pager, but perl does.
+pager="/system/gnu_library/bin/less.pm"
# VOS has a bug that causes _exit() to flush all files.
# This confuses the tests. Make 'em happy here.
@@ -89,3 +77,27 @@ test -h vos.c || ln -s vos/vos.c vos.c
# Tell Configure where to find the hosts file.
hostcat="cat /system/stcp/hosts"
+
+# VOS 17.1 has support for dynamic linking.
+usedl="define"
+
+# Filename suffix for shared libraries.
+so="so"
+
+# Flags used when compiling a module for a shared library.
+cccdlflags="-fPIC"
+
+# Flags passed to $ld to produce shared libraries.
+lddlflags="-shared"
+
+# Flags passed to $cc when linking a program that uses shared libraries.
+ccdlflags="-Wl,-export-dynamic"
+
+# Filename suffix for dynamically-loaded perl modules.
+dlext="so"
+
+# Use dlopen() to open shared libraries.
+dlsrc="dl_dlopen.xs"
+
+# Build a shared libperl? (Define on Configure cmd line.)
+# useshrplib="true"
diff --git a/gnu/usr.bin/perl/hv_func.h b/gnu/usr.bin/perl/hv_func.h
new file mode 100644
index 00000000000..7678807d883
--- /dev/null
+++ b/gnu/usr.bin/perl/hv_func.h
@@ -0,0 +1,560 @@
+/* hash a key
+ *--------------------------------------------------------------------------------------
+ * The "hash seed" feature was added in Perl 5.8.1 to perturb the results
+ * to avoid "algorithmic complexity attacks".
+ *
+ * If USE_HASH_SEED is defined, hash randomisation is done by default
+ * If USE_HASH_SEED_EXPLICIT is defined, hash randomisation is done
+ * only if the environment variable PERL_HASH_SEED is set.
+ * (see also perl.c:perl_parse() and S_init_tls_and_interp() and util.c:get_hash_seed())
+ */
+
+#ifndef PERL_SEEN_HV_FUNC_H /* compile once */
+#define PERL_SEEN_HV_FUNC_H
+
+#if !( 0 \
+ || defined(PERL_HASH_FUNC_SIPHASH) \
+ || defined(PERL_HASH_FUNC_SDBM) \
+ || defined(PERL_HASH_FUNC_DJB2) \
+ || defined(PERL_HASH_FUNC_SUPERFAST) \
+ || defined(PERL_HASH_FUNC_MURMUR3) \
+ || defined(PERL_HASH_FUNC_ONE_AT_A_TIME) \
+ || defined(PERL_HASH_FUNC_ONE_AT_A_TIME_HARD) \
+ || defined(PERL_HASH_FUNC_ONE_AT_A_TIME_OLD) \
+ )
+#define PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
+#endif
+
+#if defined(PERL_HASH_FUNC_SIPHASH)
+# define PERL_HASH_FUNC "SIPHASH_2_4"
+# define PERL_HASH_SEED_BYTES 16
+# define PERL_HASH(hash,str,len) (hash)= S_perl_hash_siphash_2_4(PERL_HASH_SEED,(U8*)(str),(len))
+#elif defined(PERL_HASH_FUNC_SUPERFAST)
+# define PERL_HASH_FUNC "SUPERFAST"
+# define PERL_HASH_SEED_BYTES 4
+# define PERL_HASH(hash,str,len) (hash)= S_perl_hash_superfast(PERL_HASH_SEED,(U8*)(str),(len))
+#elif defined(PERL_HASH_FUNC_MURMUR3)
+# define PERL_HASH_FUNC "MURMUR3"
+# define PERL_HASH_SEED_BYTES 4
+# define PERL_HASH(hash,str,len) (hash)= S_perl_hash_murmur3(PERL_HASH_SEED,(U8*)(str),(len))
+#elif defined(PERL_HASH_FUNC_DJB2)
+# define PERL_HASH_FUNC "DJB2"
+# define PERL_HASH_SEED_BYTES 4
+# define PERL_HASH(hash,str,len) (hash)= S_perl_hash_djb2(PERL_HASH_SEED,(U8*)(str),(len))
+#elif defined(PERL_HASH_FUNC_SDBM)
+# define PERL_HASH_FUNC "SDBM"
+# define PERL_HASH_SEED_BYTES 4
+# define PERL_HASH(hash,str,len) (hash)= S_perl_hash_sdbm(PERL_HASH_SEED,(U8*)(str),(len))
+#elif defined(PERL_HASH_FUNC_ONE_AT_A_TIME_HARD)
+# define PERL_HASH_FUNC "ONE_AT_A_TIME_HARD"
+# define PERL_HASH_SEED_BYTES 8
+# define PERL_HASH(hash,str,len) (hash)= S_perl_hash_one_at_a_time_hard(PERL_HASH_SEED,(U8*)(str),(len))
+#elif defined(PERL_HASH_FUNC_ONE_AT_A_TIME)
+# define PERL_HASH_FUNC "ONE_AT_A_TIME"
+# define PERL_HASH_SEED_BYTES 4
+# define PERL_HASH(hash,str,len) (hash)= S_perl_hash_one_at_a_time(PERL_HASH_SEED,(U8*)(str),(len))
+#elif defined(PERL_HASH_FUNC_ONE_AT_A_TIME_OLD)
+# define PERL_HASH_FUNC "ONE_AT_A_TIME_OLD"
+# define PERL_HASH_SEED_BYTES 4
+# define PERL_HASH(hash,str,len) (hash)= S_perl_hash_old_one_at_a_time(PERL_HASH_SEED,(U8*)(str),(len))
+#endif
+
+#ifndef PERL_HASH
+#error "No hash function defined!"
+#endif
+#ifndef PERL_HASH_SEED_BYTES
+#error "PERL_HASH_SEED_BYTES not defined"
+#endif
+#ifndef PERL_HASH_FUNC
+#error "PERL_HASH_FUNC not defined"
+#endif
+
+#ifndef PERL_HASH_SEED
+# if defined(USE_HASH_SEED) || defined(USE_HASH_SEED_EXPLICIT)
+# define PERL_HASH_SEED PL_hash_seed
+# elif PERL_HASH_SEED_BYTES == 4
+# define PERL_HASH_SEED "PeRl"
+# elif PERL_HASH_SEED_BYTES == 16
+# define PERL_HASH_SEED "PeRlHaShhAcKpErl"
+# else
+# error "No PERL_HASH_SEED definition for " PERL_HASH_FUNC
+# endif
+#endif
+
+/*-----------------------------------------------------------------------------
+ * Endianess, misalignment capabilities and util macros
+ *
+ * The following 3 macros are defined in this section. The other macros defined
+ * are only needed to help derive these 3.
+ *
+ * U8TO32_LE(x) Read a little endian unsigned 32-bit int
+ * UNALIGNED_SAFE Defined if READ_UINT32 works on non-word boundaries
+ * ROTL32(x,r) Rotate x left by r bits
+ */
+
+#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \
+ || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__)
+#define U8TO16_LE(d) (*((const U16 *) (d)))
+#endif
+
+#if !defined (U8TO16_LE)
+#define U8TO16_LE(d) ((((const U8 *)(d))[1] << 8)\
+ +((const U8 *)(d))[0])
+#endif
+
+
+/* Now find best way we can to READ_UINT32 */
+#if (BYTEORDER == 0x1234 || BYTEORDER == 0x12345678) && U32SIZE == 4
+ /* CPU endian matches murmurhash algorithm, so read 32-bit word directly */
+ #define U8TO32_LE(ptr) (*((U32*)(ptr)))
+#elif BYTEORDER == 0x4321 || BYTEORDER == 0x87654321
+ /* TODO: Add additional cases below where a compiler provided bswap32 is available */
+ #if defined(__GNUC__) && (__GNUC__>4 || (__GNUC__==4 && __GNUC_MINOR__>=3))
+ #define U8TO32_LE(ptr) (__builtin_bswap32(*((U32*)(ptr))))
+ #else
+ /* Without a known fast bswap32 we're just as well off doing this */
+ #define U8TO32_LE(ptr) (ptr[0]|ptr[1]<<8|ptr[2]<<16|ptr[3]<<24)
+ #define UNALIGNED_SAFE
+ #endif
+#else
+ /* Unknown endianess so last resort is to read individual bytes */
+ #define U8TO32_LE(ptr) (ptr[0]|ptr[1]<<8|ptr[2]<<16|ptr[3]<<24)
+ /* Since we're not doing word-reads we can skip the messing about with realignment */
+ #define UNALIGNED_SAFE
+#endif
+
+#ifdef HAS_QUAD
+#ifndef U64TYPE
+/* This probably isn't going to work, but failing with a compiler error due to
+ lack of uint64_t is no worse than failing right now with an #error. */
+#define U64TYPE uint64_t
+#endif
+#endif
+
+/* Find best way to ROTL32/ROTL64 */
+#if defined(_MSC_VER)
+ #include <stdlib.h> /* Microsoft put _rotl declaration in here */
+ #define ROTL32(x,r) _rotl(x,r)
+ #ifdef HAS_QUAD
+ #define ROTL64(x,r) _rotl64(x,r)
+ #endif
+#else
+ /* gcc recognises this code and generates a rotate instruction for CPUs with one */
+ #define ROTL32(x,r) (((U32)x << r) | ((U32)x >> (32 - r)))
+ #ifdef HAS_QUAD
+ #define ROTL64(x,r) (((U64TYPE)x << r) | ((U64TYPE)x >> (64 - r)))
+ #endif
+#endif
+
+
+#ifdef UV_IS_QUAD
+#define ROTL_UV(x,r) ROTL64(x,r)
+#else
+#define ROTL_UV(x,r) ROTL32(x,r)
+#endif
+
+/* This is SipHash by Jean-Philippe Aumasson and Daniel J. Bernstein.
+ * The authors claim it is relatively secure compared to the alternatives
+ * and that performance wise it is a suitable hash for languages like Perl.
+ * See:
+ *
+ * https://www.131002.net/siphash/
+ *
+ * This implementation seems to perform slightly slower than one-at-a-time for
+ * short keys, but degrades slower for longer keys. Murmur Hash outperforms it
+ * regardless of keys size.
+ *
+ * It is 64 bit only.
+ */
+
+#ifdef HAS_QUAD
+
+#define U8TO64_LE(p) \
+ (((U64TYPE)((p)[0]) ) | \
+ ((U64TYPE)((p)[1]) << 8) | \
+ ((U64TYPE)((p)[2]) << 16) | \
+ ((U64TYPE)((p)[3]) << 24) | \
+ ((U64TYPE)((p)[4]) << 32) | \
+ ((U64TYPE)((p)[5]) << 40) | \
+ ((U64TYPE)((p)[6]) << 48) | \
+ ((U64TYPE)((p)[7]) << 56))
+
+#define SIPROUND \
+ do { \
+ v0 += v1; v1=ROTL64(v1,13); v1 ^= v0; v0=ROTL64(v0,32); \
+ v2 += v3; v3=ROTL64(v3,16); v3 ^= v2; \
+ v0 += v3; v3=ROTL64(v3,21); v3 ^= v0; \
+ v2 += v1; v1=ROTL64(v1,17); v1 ^= v2; v2=ROTL64(v2,32); \
+ } while(0)
+
+/* SipHash-2-4 */
+
+PERL_STATIC_INLINE U32
+S_perl_hash_siphash_2_4(const unsigned char * const seed, const unsigned char *in, const STRLEN inlen) {
+ /* "somepseudorandomlygeneratedbytes" */
+ U64TYPE v0 = 0x736f6d6570736575ULL;
+ U64TYPE v1 = 0x646f72616e646f6dULL;
+ U64TYPE v2 = 0x6c7967656e657261ULL;
+ U64TYPE v3 = 0x7465646279746573ULL;
+
+ U64TYPE b;
+ U64TYPE k0 = ((U64TYPE*)seed)[0];
+ U64TYPE k1 = ((U64TYPE*)seed)[1];
+ U64TYPE m;
+ const int left = inlen & 7;
+ const U8 *end = in + inlen - left;
+
+ b = ( ( U64TYPE )(inlen) ) << 56;
+ v3 ^= k1;
+ v2 ^= k0;
+ v1 ^= k1;
+ v0 ^= k0;
+
+ for ( ; in != end; in += 8 )
+ {
+ m = U8TO64_LE( in );
+ v3 ^= m;
+ SIPROUND;
+ SIPROUND;
+ v0 ^= m;
+ }
+
+ switch( left )
+ {
+ case 7: b |= ( ( U64TYPE )in[ 6] ) << 48;
+ case 6: b |= ( ( U64TYPE )in[ 5] ) << 40;
+ case 5: b |= ( ( U64TYPE )in[ 4] ) << 32;
+ case 4: b |= ( ( U64TYPE )in[ 3] ) << 24;
+ case 3: b |= ( ( U64TYPE )in[ 2] ) << 16;
+ case 2: b |= ( ( U64TYPE )in[ 1] ) << 8;
+ case 1: b |= ( ( U64TYPE )in[ 0] ); break;
+ case 0: break;
+ }
+
+ v3 ^= b;
+ SIPROUND;
+ SIPROUND;
+ v0 ^= b;
+
+ v2 ^= 0xff;
+ SIPROUND;
+ SIPROUND;
+ SIPROUND;
+ SIPROUND;
+ b = v0 ^ v1 ^ v2 ^ v3;
+ return (U32)(b & U32_MAX);
+}
+#endif /* defined(HAS_QUAD) */
+
+/* FYI: This is the "Super-Fast" algorithm mentioned by Bob Jenkins in
+ * (http://burtleburtle.net/bob/hash/doobs.html)
+ * It is by Paul Hsieh (c) 2004 and is analysed here
+ * http://www.azillionmonkeys.com/qed/hash.html
+ * license terms are here:
+ * http://www.azillionmonkeys.com/qed/weblicense.html
+ */
+
+
+PERL_STATIC_INLINE U32
+S_perl_hash_superfast(const unsigned char * const seed, const unsigned char *str, STRLEN len) {
+ U32 hash = *((U32*)seed) + len;
+ U32 tmp;
+ int rem= len & 3;
+ len >>= 2;
+
+ for (;len > 0; len--) {
+ hash += U8TO16_LE (str);
+ tmp = (U8TO16_LE (str+2) << 11) ^ hash;
+ hash = (hash << 16) ^ tmp;
+ str += 2 * sizeof (U16);
+ hash += hash >> 11;
+ }
+
+ /* Handle end cases */
+ switch (rem) { \
+ case 3: hash += U8TO16_LE (str);
+ hash ^= hash << 16;
+ hash ^= str[sizeof (U16)] << 18;
+ hash += hash >> 11;
+ break;
+ case 2: hash += U8TO16_LE (str);
+ hash ^= hash << 11;
+ hash += hash >> 17;
+ break;
+ case 1: hash += *str;
+ hash ^= hash << 10;
+ hash += hash >> 1;
+ }
+ /* Force "avalanching" of final 127 bits */
+ hash ^= hash << 3;
+ hash += hash >> 5;
+ hash ^= hash << 4;
+ hash += hash >> 17;
+ hash ^= hash << 25;
+ return (hash + (hash >> 6));
+}
+
+
+/*-----------------------------------------------------------------------------
+ * MurmurHash3 was written by Austin Appleby, and is placed in the public
+ * domain.
+ *
+ * This implementation was originally written by Shane Day, and is also public domain,
+ * and was modified to function as a macro similar to other perl hash functions by
+ * Yves Orton.
+ *
+ * This is a portable ANSI C implementation of MurmurHash3_x86_32 (Murmur3A)
+ * with support for progressive processing.
+ *
+ * If you want to understand the MurmurHash algorithm you would be much better
+ * off reading the original source. Just point your browser at:
+ * http://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp
+ *
+ * How does it work?
+ *
+ * We can only process entire 32 bit chunks of input, except for the very end
+ * that may be shorter.
+ *
+ * To handle endianess I simply use a macro that reads a U32 and define
+ * that macro to be a direct read on little endian machines, a read and swap
+ * on big endian machines, or a byte-by-byte read if the endianess is unknown.
+ */
+
+
+/*-----------------------------------------------------------------------------
+ * Core murmurhash algorithm macros */
+
+#define MURMUR_C1 (0xcc9e2d51)
+#define MURMUR_C2 (0x1b873593)
+#define MURMUR_C3 (0xe6546b64)
+#define MURMUR_C4 (0x85ebca6b)
+#define MURMUR_C5 (0xc2b2ae35)
+
+/* This is the main processing body of the algorithm. It operates
+ * on each full 32-bits of input. */
+#define MURMUR_DOBLOCK(h1, k1) STMT_START { \
+ k1 *= MURMUR_C1; \
+ k1 = ROTL32(k1,15); \
+ k1 *= MURMUR_C2; \
+ \
+ h1 ^= k1; \
+ h1 = ROTL32(h1,13); \
+ h1 = h1 * 5 + MURMUR_C3; \
+} STMT_END
+
+
+/* Append unaligned bytes to carry, forcing hash churn if we have 4 bytes */
+/* cnt=bytes to process, h1=name of h1 var, c=carry, n=bytes in c, ptr/len=payload */
+#define MURMUR_DOBYTES(cnt, h1, c, n, ptr, len) STMT_START { \
+ int MURMUR_DOBYTES_i = cnt; \
+ while(MURMUR_DOBYTES_i--) { \
+ c = c>>8 | *ptr++<<24; \
+ n++; len--; \
+ if(n==4) { \
+ MURMUR_DOBLOCK(h1, c); \
+ n = 0; \
+ } \
+ } \
+} STMT_END
+
+
+/* now we create the hash function */
+PERL_STATIC_INLINE U32
+S_perl_hash_murmur3(const unsigned char * const seed, const unsigned char *ptr, STRLEN len) {
+ U32 h1 = *((U32*)seed);
+ U32 k1;
+ U32 carry = 0;
+
+ const unsigned char *end;
+ int bytes_in_carry = 0; /* bytes in carry */
+ I32 total_length= len;
+
+#if defined(UNALIGNED_SAFE)
+ /* Handle carry: commented out as its only used in incremental mode - it never fires for us
+ int i = (4-n) & 3;
+ if(i && i <= len) {
+ MURMUR_DOBYTES(i, h1, carry, bytes_in_carry, ptr, len);
+ }
+ */
+
+ /* This CPU handles unaligned word access */
+ /* Process 32-bit chunks */
+ end = ptr + len/4*4;
+ for( ; ptr < end ; ptr+=4) {
+ k1 = U8TO32_LE(ptr);
+ MURMUR_DOBLOCK(h1, k1);
+ }
+#else
+ /* This CPU does not handle unaligned word access */
+
+ /* Consume enough so that the next data byte is word aligned */
+ STRLEN i = -PTR2IV(ptr) & 3;
+ if(i && i <= len) {
+ MURMUR_DOBYTES(i, h1, carry, bytes_in_carry, ptr, len);
+ }
+
+ /* We're now aligned. Process in aligned blocks. Specialise for each possible carry count */
+ end = ptr + len/4*4;
+ switch(bytes_in_carry) { /* how many bytes in carry */
+ case 0: /* c=[----] w=[3210] b=[3210]=w c'=[----] */
+ for( ; ptr < end ; ptr+=4) {
+ k1 = U8TO32_LE(ptr);
+ MURMUR_DOBLOCK(h1, k1);
+ }
+ break;
+ case 1: /* c=[0---] w=[4321] b=[3210]=c>>24|w<<8 c'=[4---] */
+ for( ; ptr < end ; ptr+=4) {
+ k1 = carry>>24;
+ carry = U8TO32_LE(ptr);
+ k1 |= carry<<8;
+ MURMUR_DOBLOCK(h1, k1);
+ }
+ break;
+ case 2: /* c=[10--] w=[5432] b=[3210]=c>>16|w<<16 c'=[54--] */
+ for( ; ptr < end ; ptr+=4) {
+ k1 = carry>>16;
+ carry = U8TO32_LE(ptr);
+ k1 |= carry<<16;
+ MURMUR_DOBLOCK(h1, k1);
+ }
+ break;
+ case 3: /* c=[210-] w=[6543] b=[3210]=c>>8|w<<24 c'=[654-] */
+ for( ; ptr < end ; ptr+=4) {
+ k1 = carry>>8;
+ carry = U8TO32_LE(ptr);
+ k1 |= carry<<24;
+ MURMUR_DOBLOCK(h1, k1);
+ }
+ }
+#endif
+ /* Advance over whole 32-bit chunks, possibly leaving 1..3 bytes */
+ len -= len/4*4;
+
+ /* Append any remaining bytes into carry */
+ MURMUR_DOBYTES(len, h1, carry, bytes_in_carry, ptr, len);
+
+ if (bytes_in_carry) {
+ k1 = carry >> ( 4 - bytes_in_carry ) * 8;
+ k1 *= MURMUR_C1;
+ k1 = ROTL32(k1,15);
+ k1 *= MURMUR_C2;
+ h1 ^= k1;
+ }
+ h1 ^= total_length;
+
+ /* fmix */
+ h1 ^= h1 >> 16;
+ h1 *= MURMUR_C4;
+ h1 ^= h1 >> 13;
+ h1 *= MURMUR_C5;
+ h1 ^= h1 >> 16;
+ return h1;
+}
+
+
+PERL_STATIC_INLINE U32
+S_perl_hash_djb2(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
+ const unsigned char * const end = (const unsigned char *)str + len;
+ U32 hash = *((U32*)seed + len);
+ while (str < end) {
+ hash = ((hash << 5) + hash) + *str++;
+ }
+ return hash;
+}
+
+PERL_STATIC_INLINE U32
+S_perl_hash_sdbm(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
+ const unsigned char * const end = (const unsigned char *)str + len;
+ U32 hash = *((U32*)seed + len);
+ while (str < end) {
+ hash = (hash << 6) + (hash << 16) - hash + *str++;
+ }
+ return hash;
+}
+
+
+/* This is the "One-at-a-Time" algorithm by Bob Jenkins
+ * from requirements by Colin Plumb.
+ * (http://burtleburtle.net/bob/hash/doobs.html)
+ * With seed/len tweak.
+ * */
+PERL_STATIC_INLINE U32
+S_perl_hash_one_at_a_time(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
+ const unsigned char * const end = (const unsigned char *)str + len;
+ U32 hash = *((U32*)seed) + len;
+ while (str < end) {
+ hash += *str++;
+ hash += (hash << 10);
+ hash ^= (hash >> 6);
+ }
+ hash += (hash << 3);
+ hash ^= (hash >> 11);
+ return (hash + (hash << 15));
+}
+
+/* Derived from "One-at-a-Time" algorithm by Bob Jenkins */
+PERL_STATIC_INLINE U32
+S_perl_hash_one_at_a_time_hard(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
+ const unsigned char * const end = (const unsigned char *)str + len;
+ U32 hash = *((U32*)seed) + len;
+
+ while (str < end) {
+ hash += (hash << 10);
+ hash ^= (hash >> 6);
+ hash += *str++;
+ }
+
+ hash += (hash << 10);
+ hash ^= (hash >> 6);
+ hash += seed[4];
+
+ hash += (hash << 10);
+ hash ^= (hash >> 6);
+ hash += seed[5];
+
+ hash += (hash << 10);
+ hash ^= (hash >> 6);
+ hash += seed[6];
+
+ hash += (hash << 10);
+ hash ^= (hash >> 6);
+ hash += seed[7];
+
+ hash += (hash << 10);
+ hash ^= (hash >> 6);
+
+ hash += (hash << 3);
+ hash ^= (hash >> 11);
+ return (hash + (hash << 15));
+}
+
+PERL_STATIC_INLINE U32
+S_perl_hash_old_one_at_a_time(const unsigned char * const seed, const unsigned char *str, const STRLEN len) {
+ const unsigned char * const end = (const unsigned char *)str + len;
+ U32 hash = *((U32*)seed);
+ while (str < end) {
+ hash += *str++;
+ hash += (hash << 10);
+ hash ^= (hash >> 6);
+ }
+ hash += (hash << 3);
+ hash ^= (hash >> 11);
+ return (hash + (hash << 15));
+}
+
+/* legacy - only mod_perl should be doing this. */
+#ifdef PERL_HASH_INTERNAL_ACCESS
+#define PERL_HASH_INTERNAL(hash,str,len) PERL_HASH(hash,str,len)
+#endif
+
+#endif /*compile once*/
+
+/*
+ * Local variables:
+ * c-indentation-style: bsd
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set ts=8 sts=4 sw=4 et:
+ */
diff --git a/gnu/usr.bin/perl/inline.h b/gnu/usr.bin/perl/inline.h
new file mode 100644
index 00000000000..953bb33cffb
--- /dev/null
+++ b/gnu/usr.bin/perl/inline.h
@@ -0,0 +1,156 @@
+/* inline.h
+ *
+ * Copyright (C) 2012 by Larry Wall and others
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
+ *
+ * This file is a home for static inline functions that cannot go in other
+ * headers files, because they depend on proto.h (included after most other
+ * headers) or struct definitions.
+ *
+ * Each section names the header file that the functions "belong" to.
+ */
+
+/* ------------------------------- av.h ------------------------------- */
+
+PERL_STATIC_INLINE I32
+S_av_top_index(pTHX_ AV *av)
+{
+ PERL_ARGS_ASSERT_AV_TOP_INDEX;
+ assert(SvTYPE(av) == SVt_PVAV);
+
+ return AvFILL(av);
+}
+
+/* ------------------------------- cv.h ------------------------------- */
+
+PERL_STATIC_INLINE I32 *
+S_CvDEPTHp(const CV * const sv)
+{
+ assert(SvTYPE(sv) == SVt_PVCV || SvTYPE(sv) == SVt_PVFM);
+ return &((XPVCV*)SvANY(sv))->xcv_depth;
+}
+
+/* ----------------------------- regexp.h ----------------------------- */
+
+PERL_STATIC_INLINE struct regexp *
+S_ReANY(const REGEXP * const re)
+{
+ assert(isREGEXP(re));
+ return re->sv_u.svu_rx;
+}
+
+/* ------------------------------- sv.h ------------------------------- */
+
+PERL_STATIC_INLINE SV *
+S_SvREFCNT_inc(SV *sv)
+{
+ if (LIKELY(sv != NULL))
+ SvREFCNT(sv)++;
+ return sv;
+}
+PERL_STATIC_INLINE SV *
+S_SvREFCNT_inc_NN(SV *sv)
+{
+ SvREFCNT(sv)++;
+ return sv;
+}
+PERL_STATIC_INLINE void
+S_SvREFCNT_inc_void(SV *sv)
+{
+ if (LIKELY(sv != NULL))
+ SvREFCNT(sv)++;
+}
+PERL_STATIC_INLINE void
+S_SvREFCNT_dec(pTHX_ SV *sv)
+{
+ if (LIKELY(sv != NULL)) {
+ U32 rc = SvREFCNT(sv);
+ if (rc > 1)
+ SvREFCNT(sv) = rc - 1;
+ else
+ Perl_sv_free2(aTHX_ sv, rc);
+ }
+}
+
+PERL_STATIC_INLINE void
+S_SvREFCNT_dec_NN(pTHX_ SV *sv)
+{
+ U32 rc = SvREFCNT(sv);
+ if (rc > 1)
+ SvREFCNT(sv) = rc - 1;
+ else
+ Perl_sv_free2(aTHX_ sv, rc);
+}
+
+PERL_STATIC_INLINE void
+SvAMAGIC_on(SV *sv)
+{
+ assert(SvROK(sv));
+ if (SvOBJECT(SvRV(sv))) HvAMAGIC_on(SvSTASH(SvRV(sv)));
+}
+PERL_STATIC_INLINE void
+SvAMAGIC_off(SV *sv)
+{
+ if (SvROK(sv) && SvOBJECT(SvRV(sv)))
+ HvAMAGIC_off(SvSTASH(SvRV(sv)));
+}
+
+PERL_STATIC_INLINE U32
+S_SvPADTMP_on(SV *sv)
+{
+ assert(!(SvFLAGS(sv) & SVs_PADMY));
+ return SvFLAGS(sv) |= SVs_PADTMP;
+}
+PERL_STATIC_INLINE U32
+S_SvPADTMP_off(SV *sv)
+{
+ assert(!(SvFLAGS(sv) & SVs_PADMY));
+ return SvFLAGS(sv) &= ~SVs_PADTMP;
+}
+PERL_STATIC_INLINE U32
+S_SvPADSTALE_on(SV *sv)
+{
+ assert(SvFLAGS(sv) & SVs_PADMY);
+ return SvFLAGS(sv) |= SVs_PADSTALE;
+}
+PERL_STATIC_INLINE U32
+S_SvPADSTALE_off(SV *sv)
+{
+ assert(SvFLAGS(sv) & SVs_PADMY);
+ return SvFLAGS(sv) &= ~SVs_PADSTALE;
+}
+#ifdef PERL_CORE
+PERL_STATIC_INLINE STRLEN
+S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp)
+{
+ if (SvGAMAGIC(sv)) {
+ U8 *hopped = utf8_hop((U8 *)pv, pos);
+ if (lenp) *lenp = (STRLEN)(utf8_hop(hopped, *lenp) - hopped);
+ return (STRLEN)(hopped - (U8 *)pv);
+ }
+ return sv_pos_u2b_flags(sv,pos,lenp,SV_CONST_RETURN);
+}
+#endif
+
+/* ------------------------------- utf8.h ------------------------------- */
+
+/* These exist only to replace the macros they formerly were so that their use
+ * can be deprecated */
+
+PERL_STATIC_INLINE bool
+S_isIDFIRST_lazy(pTHX_ const char* p)
+{
+ PERL_ARGS_ASSERT_ISIDFIRST_LAZY;
+
+ return isIDFIRST_lazy_if(p,1);
+}
+
+PERL_STATIC_INLINE bool
+S_isALNUM_lazy(pTHX_ const char* p)
+{
+ PERL_ARGS_ASSERT_ISALNUM_LAZY;
+
+ return isALNUM_lazy_if(p,1);
+}
diff --git a/gnu/usr.bin/perl/inline_invlist.c b/gnu/usr.bin/perl/inline_invlist.c
new file mode 100644
index 00000000000..b56ce60002f
--- /dev/null
+++ b/gnu/usr.bin/perl/inline_invlist.c
@@ -0,0 +1,77 @@
+/* inline_invlist.c
+ *
+ * Copyright (C) 2012 by Larry Wall and others
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
+ */
+
+#if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
+
+#define INVLIST_LEN_OFFSET 0 /* Number of elements in the inversion list */
+#define INVLIST_ITER_OFFSET 1 /* Current iteration position */
+#define INVLIST_PREVIOUS_INDEX_OFFSET 2 /* Place to cache index of previous
+ result */
+
+/* This is a combination of a version and data structure type, so that one
+ * being passed in can be validated to be an inversion list of the correct
+ * vintage. When the structure of the header is changed, a new random number
+ * in the range 2**31-1 should be generated and the new() method changed to
+ * insert that at this location. Then, if an auxiliary program doesn't change
+ * correspondingly, it will be discovered immediately */
+#define INVLIST_VERSION_ID_OFFSET 3
+#define INVLIST_VERSION_ID 290655244
+
+/* For safety, when adding new elements, remember to #undef them at the end of
+ * the inversion list code section */
+
+#define INVLIST_ZERO_OFFSET 4 /* 0 or 1; must be last element in header */
+/* The UV at position ZERO contains either 0 or 1. If 0, the inversion list
+ * contains the code point U+00000, and begins here. If 1, the inversion list
+ * doesn't contain U+0000, and it begins at the next UV in the array.
+ * Inverting an inversion list consists of adding or removing the 0 at the
+ * beginning of it. By reserving a space for that 0, inversion can be made
+ * very fast */
+
+#define HEADER_LENGTH (INVLIST_ZERO_OFFSET + 1)
+
+/* An element is in an inversion list iff its index is even numbered: 0, 2, 4,
+ * etc */
+#define ELEMENT_RANGE_MATCHES_INVLIST(i) (! ((i) & 1))
+#define PREV_RANGE_MATCHES_INVLIST(i) (! ELEMENT_RANGE_MATCHES_INVLIST(i))
+
+PERL_STATIC_INLINE UV*
+S__get_invlist_len_addr(pTHX_ SV* invlist)
+{
+ /* Return the address of the UV that contains the current number
+ * of used elements in the inversion list */
+
+ PERL_ARGS_ASSERT__GET_INVLIST_LEN_ADDR;
+
+ return (UV *) (SvPVX(invlist) + (INVLIST_LEN_OFFSET * sizeof (UV)));
+}
+
+PERL_STATIC_INLINE UV
+S__invlist_len(pTHX_ SV* const invlist)
+{
+ /* Returns the current number of elements stored in the inversion list's
+ * array */
+
+ PERL_ARGS_ASSERT__INVLIST_LEN;
+
+ return *_get_invlist_len_addr(invlist);
+}
+
+PERL_STATIC_INLINE bool
+S__invlist_contains_cp(pTHX_ SV* const invlist, const UV cp)
+{
+ /* Does <invlist> contain code point <cp> as part of the set? */
+
+ IV index = _invlist_search(invlist, cp);
+
+ PERL_ARGS_ASSERT__INVLIST_CONTAINS_CP;
+
+ return index >= 0 && ELEMENT_RANGE_MATCHES_INVLIST(index);
+}
+
+#endif
diff --git a/gnu/usr.bin/perl/install_lib.pl b/gnu/usr.bin/perl/install_lib.pl
index 8d37a0c7ff5..ae8ba0a9900 100644
--- a/gnu/usr.bin/perl/install_lib.pl
+++ b/gnu/usr.bin/perl/install_lib.pl
@@ -120,7 +120,7 @@ sub samepath {
my($dev1, $ino1, $dev2, $ino2);
($dev1, $ino1) = stat($p1);
($dev2, $ino2) = stat($p2);
- ($dev1 ~~ $dev2 && $ino1 ~~ $ino2);
+ ($dev1 == $dev2 && $ino1 == $ino2);
}
else {
1;
diff --git a/gnu/usr.bin/perl/intrpvar.h b/gnu/usr.bin/perl/intrpvar.h
index cc9e46ededd..d31b15e0aeb 100644
--- a/gnu/usr.bin/perl/intrpvar.h
+++ b/gnu/usr.bin/perl/intrpvar.h
@@ -8,6 +8,8 @@
*
*/
+#include "handy.h"
+
/*
=head1 Per-Interpreter Variables
*/
@@ -41,32 +43,116 @@ PERLVAR(I, curpad, SV **) /* active pad (lexicals+tmps) */
PERLVAR(I, stack_base, SV **)
PERLVAR(I, stack_max, SV **)
-PERLVAR(I, scopestack, I32 *) /* scopes we've ENTERed */
-/* name of the scopes we've ENTERed. Only used with -DDEBUGGING, but needs to be
- present always, as -DDEUBGGING must be binary compatible with non. */
-PERLVARI(I, scopestack_name, const char * *, NULL)
-PERLVAR(I, scopestack_ix, I32)
-PERLVAR(I, scopestack_max, I32)
-
PERLVAR(I, savestack, ANY *) /* items that need to be restored when
LEAVEing scopes we've ENTERed */
PERLVAR(I, savestack_ix, I32)
PERLVAR(I, savestack_max, I32)
+PERLVAR(I, scopestack, I32 *) /* scopes we've ENTERed */
+PERLVAR(I, scopestack_ix, I32)
+PERLVAR(I, scopestack_max, I32)
+
PERLVAR(I, tmps_stack, SV **) /* mortals we've made */
PERLVARI(I, tmps_ix, I32, -1)
PERLVARI(I, tmps_floor, I32, -1)
PERLVAR(I, tmps_max, I32)
-PERLVAR(I, modcount, I32) /* how much op_lvalue()ification in
- assignment? */
+
+PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */
PERLVAR(I, markstack, I32 *) /* stack_sp locations we're
remembering */
PERLVAR(I, markstack_ptr, I32 *)
PERLVAR(I, markstack_max, I32 *)
+#ifdef PERL_HASH_RANDOMIZE_KEYS
+#ifdef USE_PERL_PERTURB_KEYS
+PERLVARI(I, hash_rand_bits_enabled, U8, 1) /* used to randomize hash stuff 0 == no-random, 1 == random, 2 == determinsitic */
+#endif
+PERLVARI(I, hash_rand_bits, UV, 0) /* used to randomize hash stuff */
+#endif
+PERLVAR(I, strtab, HV *) /* shared string table */
+
+/* Fields used by magic variables such as $@, $/ and so on */
+PERLVAR(I, curpm, PMOP *) /* what to do \ interps in REs from */
+
+PERLVAR(I, tainting, bool) /* doing taint checks */
+PERLVAR(I, tainted, bool) /* using variables controlled by $< */
+PERLVAR(I, delaymagic, U16) /* ($<,$>) = ... */
+PERLVAR(I, localizing, U8) /* are we processing a local() list? */
+PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */
+/*
+
+=for apidoc mn|bool|PL_dowarn
+
+The C variable which corresponds to Perl's $^W warning variable.
+
+=cut
+*/
+
+PERLVAR(I, dowarn, U8)
+
+#if defined (PERL_UTF8_CACHE_ASSERT) || defined (DEBUGGING)
+# define PERL___I -1
+#else
+# define PERL___I 1
+#endif
+PERLVARI(I, utf8cache, I8, PERL___I) /* Is the utf8 caching code enabled? */
+#undef PERL___I
+
+
+/* Stashes */
+PERLVAR(I, defstash, HV *) /* main symbol table */
+PERLVAR(I, curstash, HV *) /* symbol table for current package */
+
+PERLVAR(I, curcop, COP *)
+PERLVAR(I, curstack, AV *) /* THE STACK */
+PERLVAR(I, curstackinfo, PERL_SI *) /* current stack + context */
+PERLVAR(I, mainstack, AV *) /* the stack when nothing funny is
+ happening */
+
+/* memory management */
+PERLVAR(I, sv_count, IV) /* how many SV* are currently allocated */
+PERLVAR(I, sv_objcount, IV) /* DEPRECATED AND UNMAINTAINED.
+ * Will be removed in Perl 5.20.
+ * Used to be: how many objects are currently allocated. */
+
+PERLVAR(I, sv_root, SV *) /* storage for SVs belonging to interp */
+PERLVAR(I, sv_arenaroot, SV *) /* list of areas for garbage collection */
+
+PERLVAR(I, reg_state, struct re_save_state)
+
+/* the currently active slab in a chain of slabs of regmatch states,
+ * and the currently active state within that slab */
+
+PERLVARI(I, regmatch_slab, regmatch_slab *, NULL)
+PERLVAR(I, regmatch_state, regmatch_state *)
+
+PERLVAR(I, comppad, PAD *) /* storage for lexically scoped temporaries */
+
+/*
+=for apidoc Amn|SV|PL_sv_undef
+This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
+
+=for apidoc Amn|SV|PL_sv_no
+This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
+C<&PL_sv_no>.
+
+=for apidoc Amn|SV|PL_sv_yes
+This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
+C<&PL_sv_yes>.
+
+=cut
+*/
+
+PERLVAR(I, sv_undef, SV)
+PERLVAR(I, sv_no, SV)
+PERLVAR(I, sv_yes, SV)
PERLVAR(I, Sv, SV *) /* used to hold temporary values */
-PERLVAR(I, Xpv, XPV *) /* used to hold temporary values */
+
+PERLVAR(I, parser, yy_parser *) /* current parser state */
+
+PERLVAR(I, stashcache, HV *) /* Cache to speed up S_method_common */
+
/*
=for apidoc Amn|STRLEN|PL_na
@@ -92,9 +178,6 @@ PERLVARI(I, statname, SV *, NULL)
PERLVAR(I, timesbuf, struct tms)
#endif
-/* Fields used by magic variables such as $@, $/ and so on */
-PERLVAR(I, curpm, PMOP *) /* what to do \ interps in REs from */
-
/*
=for apidoc mn|SV*|PL_rs
@@ -120,17 +203,9 @@ PERLVAR(I, formtarget, SV *)
PERLVAR(I, bodytarget, SV *)
PERLVAR(I, toptarget, SV *)
-/* Stashes */
-PERLVAR(I, defstash, HV *) /* main symbol table */
-PERLVAR(I, curstash, HV *) /* symbol table for current package */
PERLVAR(I, restartop, OP *) /* propagating an error from croak? */
PERLVAR(I, restartjmpenv, JMPENV *) /* target frame for longjmp in die */
-PERLVAR(I, curcop, COP *)
-PERLVAR(I, curstack, AV *) /* THE STACK */
-PERLVAR(I, curstackinfo, PERL_SI *) /* current stack + context */
-PERLVAR(I, mainstack, AV *) /* the stack when nothing funny is
- happening */
PERLVAR(I, top_env, JMPENV *) /* ptr to current sigjmp environment */
PERLVAR(I, start_env, JMPENV) /* empty startup sigjmp environment */
@@ -151,18 +226,14 @@ PERLVAR(I, secondgv, GV *) /* $b */
PERLVAR(I, efloatbuf, char *)
PERLVAR(I, efloatsize, STRLEN)
-/* regex stuff */
-
-PERLVAR(I, reg_state, struct re_save_state)
-
PERLVAR(I, regdummy, regnode) /* from regcomp.c */
PERLVARI(I, dumpindent, U16, 4) /* number of blanks per dump
indentation level */
+PERLVAR(I, exit_flags, U8) /* was exit() unexpected, etc. */
PERLVAR(I, utf8locale, bool) /* utf8 locale detected */
-PERLVARI(I, rehash_seed_set, bool, FALSE) /* 582 hash initialized? */
PERLVARA(I, colors,6, char *) /* from regcomp.c */
@@ -230,33 +301,12 @@ PERLVARI(I, opfreehook, Perl_ophook_t, 0) /* op_free() hook */
PERLVARI(I, watchaddr, char **, 0)
PERLVAR(I, watchok, char *)
-/* the currently active slab in a chain of slabs of regmatch states,
- * and the currently active state within that slab */
-
-PERLVARI(I, regmatch_slab, regmatch_slab *, NULL)
-PERLVAR(I, regmatch_state, regmatch_state *)
-
-/* Put anything new that is pointer aligned here. */
-
-PERLVAR(I, delaymagic, U16) /* ($<,$>) = ... */
-PERLVAR(I, localizing, U8) /* are we processing a local() list? */
-PERLVAR(I, colorset, bool) /* from regcomp.c */
-PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */
-PERLVAR(I, tainted, bool) /* using variables controlled by $< */
-PERLVAR(I, tainting, bool) /* doing taint checks */
-
-/* This value may be set when embedding for full cleanup */
-/* 0=none, 1=full, 2=full with checks */
-/* mod_perl is special, and also assigns a meaning -1 */
-PERLVARI(I, perl_destruct_level, signed char, 0)
-
-/* current phase the interpreter is in */
-PERLVARI(I, phase, enum perl_phase, PERL_PHASE_CONSTRUCT)
-
PERLVAR(I, perldb, U32)
PERLVAR(I, signals, U32) /* Using which pre-5.8 signals */
+PERLVAR(I, reentrant_retint, int) /* Integer return value from reentrant functions */
+
/* pseudo environmental stuff */
PERLVAR(I, origargc, int)
PERLVAR(I, origargv, char **)
@@ -282,29 +332,10 @@ PERLVAR(I, minus_F, bool)
PERLVAR(I, doswitches, bool)
PERLVAR(I, minus_E, bool)
-/*
-
-=for apidoc mn|bool|PL_dowarn
-
-The C variable which corresponds to Perl's $^W warning variable.
-
-=cut
-*/
-
-PERLVAR(I, dowarn, U8)
-PERLVAR(I, sawampersand, bool) /* must save all match strings */
-PERLVAR(I, unsafe, bool)
-PERLVAR(I, exit_flags, U8) /* was exit() unexpected, etc. */
-
-PERLVARI(I, reginterp_cnt, I32, 0) /* Whether "Regexp" was interpolated. */
-
PERLVAR(I, inplace, char *)
PERLVAR(I, e_script, SV *)
-/* magical thingies */
PERLVAR(I, basetime, Time_t) /* $^T */
-PERLVAR(I, formfeed, SV *) /* $^L */
-
PERLVARI(I, maxsysfd, I32, MAXSYSFD)
/* top fd to pass to subprocesses */
@@ -373,17 +404,6 @@ PERLVAR(I, endav, AV *) /* names of END subroutines */
PERLVAR(I, unitcheckav, AV *) /* names of UNITCHECK subroutines */
PERLVAR(I, checkav, AV *) /* names of CHECK subroutines */
PERLVAR(I, initav, AV *) /* names of INIT subroutines */
-PERLVAR(I, strtab, HV *) /* shared string table */
-PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */
-
-/* funky return mechanisms */
-PERLVAR(I, forkprocess, int) /* so do_open |- can return proc# */
-
-/* memory management */
-PERLVAR(I, sv_count, I32) /* how many SV* are currently allocated */
-PERLVAR(I, sv_objcount, I32) /* how many objects are currently allocated */
-PERLVAR(I, sv_root, SV *) /* storage for SVs belonging to interp */
-PERLVAR(I, sv_arenaroot, SV *) /* list of areas for garbage collection */
/* subprocess state */
PERLVAR(I, fdpid, AV *) /* keep fd-to-pid mappings for my_popen */
@@ -413,13 +433,21 @@ PERLVAR(I, Cmd, char *) /* stuff to free from do_aexec, vfork safe */
PERLVAR(I, preambleav, AV *)
PERLVAR(I, mess_sv, SV *)
PERLVAR(I, ors_sv, SV *) /* output record separator $\ */
+
+/* funky return mechanisms */
+PERLVAR(I, forkprocess, int) /* so do_open |- can return proc# */
+
/* statics moved here for shared library purposes */
PERLVARI(I, gensym, I32, 0) /* next symbol for getsym() to define */
PERLVARI(I, cv_has_eval, bool, FALSE) /* PL_compcv includes an entereval or similar */
PERLVAR(I, taint_warn, bool) /* taint warns instead of dying */
PERLVARI(I, laststype, U16, OP_STAT)
+
PERLVARI(I, laststatval, int, -1)
+PERLVAR(I, modcount, I32) /* how much op_lvalue()ification in
+ assignment? */
+
/* interpreter atexit processing */
PERLVARI(I, exitlistlen, I32, 0) /* length of same */
PERLVARI(I, exitlist, PerlExitListEntry *, NULL)
@@ -445,8 +473,7 @@ PERLVARI(I, profiledata, U32 *, NULL) /* table of ops, counts */
PERLVAR(I, compiling, COP) /* compiling/done executing marker */
PERLVAR(I, compcv, CV *) /* currently compiling subroutine */
-PERLVAR(I, comppad, AV *) /* storage for lexically scoped temporaries */
-PERLVAR(I, comppad_name, AV *) /* variable names for "my" variables */
+PERLVAR(I, comppad_name, PADNAMELIST *) /* variable names for "my" variables */
PERLVAR(I, comppad_name_fill, I32) /* last "introduced" variable offset */
PERLVAR(I, comppad_name_floor, I32) /* start of vars in innermost block */
@@ -459,17 +486,23 @@ PERLVAR(I, sys_intern, struct interp_intern)
PERLVAR(I, DBcv, CV *) /* from perl.c */
PERLVARI(I, generation, int, 100) /* from op.c */
+PERLVAR(I, unicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */
+
PERLVARI(I, in_clean_objs,bool, FALSE) /* from sv.c */
PERLVARI(I, in_clean_all, bool, FALSE) /* ptrs to freed SVs now legal */
PERLVAR(I, nomemok, bool) /* let malloc context handle nomem */
PERLVARI(I, savebegin, bool, FALSE) /* save BEGINs for compiler */
+
PERLVAR(I, delaymagic_uid, Uid_t) /* current real user id, only for delaymagic */
PERLVAR(I, delaymagic_euid, Uid_t) /* current effective user id, only for delaymagic */
PERLVAR(I, delaymagic_gid, Gid_t) /* current real group id, only for delaymagic */
PERLVAR(I, delaymagic_egid, Gid_t) /* current effective group id, only for delaymagic */
PERLVARI(I, an, U32, 0) /* malloc sequence number */
+/* Perl_Ibreakable_sub_generation_ptr was too long for VMS, hence "gen" */
+PERLVARI(I, breakable_sub_gen, U32, 0)
+
#ifdef DEBUGGING
/* exercise wrap-around */
#define PERL_COP_SEQMAX (U32_MAX-50)
@@ -491,31 +524,12 @@ PERLVAR(I, sighandlerp, Sighandler_t)
PERLVARA(I, body_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */
-PERLVAR(I, unicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */
+PERLVAR(I, debug, VOL U32) /* flags given to -D switch */
PERLVARI(I, maxo, int, MAXO) /* maximum number of ops */
PERLVARI(I, runops, runops_proc_t, RUNOPS_DEFAULT)
-/*
-=for apidoc Amn|SV|PL_sv_undef
-This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
-
-=for apidoc Amn|SV|PL_sv_no
-This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
-C<&PL_sv_no>.
-
-=for apidoc Amn|SV|PL_sv_yes
-This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
-C<&PL_sv_yes>.
-
-=cut
-*/
-
-PERLVAR(I, sv_undef, SV)
-PERLVAR(I, sv_no, SV)
-PERLVAR(I, sv_yes, SV)
-
PERLVAR(I, subname, SV *) /* name of current subroutine */
PERLVAR(I, subline, I32) /* line this subroutine began on */
@@ -528,13 +542,6 @@ PERLVAR(I, padix_floor, I32) /* how low may inner block reset padix */
PERLVAR(I, hints, U32) /* pragma-tic compile-time flags */
-PERLVAR(I, debug, VOL U32) /* flags given to -D switch */
-
-/* Perl_Ibreakable_sub_generation_ptr was too long for VMS, hence "gen" */
-PERLVARI(I, breakable_sub_gen, U32, 0)
-
-PERLVARI(I, amagic_generation, long, 0)
-
#ifdef USE_LOCALE_COLLATE
PERLVAR(I, collation_name, char *) /* Name of current collation */
PERLVAR(I, collxfrm_base, Size_t) /* Basic overhead in *xfrm() */
@@ -544,15 +551,24 @@ PERLVARI(I, collation_standard, bool, TRUE)
/* Assume simple collation */
#endif /* USE_LOCALE_COLLATE */
-
-#if defined (PERL_UTF8_CACHE_ASSERT) || defined (DEBUGGING)
-# define PERL___I -1
-#else
-# define PERL___I 1
+#ifdef PERL_SAWAMPERSAND
+PERLVAR(I, sawampersand, U8) /* must save all match strings */
#endif
-PERLVARI(I, utf8cache, I8, PERL___I) /* Is the utf8 caching code enabled? */
-#undef PERL___I
+PERLVAR(I, unsafe, bool)
+PERLVAR(I, colorset, bool) /* from regcomp.c */
+
+/* current phase the interpreter is in
+ for ordering this structure to remove holes, we're assuming that this is 4
+ bytes. */
+PERLVARI(I, phase, enum perl_phase, PERL_PHASE_CONSTRUCT)
+
+PERLVARI(I, in_load_module, bool, FALSE) /* to prevent recursions in PerlIO_find_layer */
+
+/* This value may be set when embedding for full cleanup */
+/* 0=none, 1=full, 2=full with checks */
+/* mod_perl is special, and also assigns a meaning -1 */
+PERLVARI(I, perl_destruct_level, signed char, 0)
#ifdef USE_LOCALE_NUMERIC
@@ -570,93 +586,39 @@ PERLVAR(I, ASCII, SV *)
PERLVAR(I, Latin1, SV *)
PERLVAR(I, AboveLatin1, SV *)
-PERLVAR(I, PerlSpace, SV *)
-PERLVAR(I, XPerlSpace, SV *)
-
-PERLVAR(I, L1PosixAlnum,SV *)
-PERLVAR(I, PosixAlnum, SV *)
-
-PERLVAR(I, L1PosixAlpha,SV *)
-PERLVAR(I, PosixAlpha, SV *)
-
-PERLVAR(I, PosixBlank, SV *)
-PERLVAR(I, XPosixBlank, SV *)
-
-PERLVAR(I, L1Cased, SV *)
-
-PERLVAR(I, PosixCntrl, SV *)
-PERLVAR(I, XPosixCntrl, SV *)
-
-PERLVAR(I, PosixDigit, SV *)
-
-PERLVAR(I, L1PosixGraph,SV *)
-PERLVAR(I, PosixGraph, SV *)
-
-PERLVAR(I, L1PosixLower,SV *)
-PERLVAR(I, PosixLower, SV *)
-
-PERLVAR(I, L1PosixPrint,SV *)
-PERLVAR(I, PosixPrint, SV *)
-
-PERLVAR(I, L1PosixPunct,SV *)
-PERLVAR(I, PosixPunct, SV *)
-
-PERLVAR(I, PosixSpace, SV *)
-PERLVAR(I, XPosixSpace, SV *)
-
-PERLVAR(I, L1PosixUpper,SV *)
-PERLVAR(I, PosixUpper, SV *)
-
-PERLVAR(I, L1PosixWord, SV *)
-PERLVAR(I, PosixWord, SV *)
-
-PERLVAR(I, PosixXDigit, SV *)
-PERLVAR(I, XPosixXDigit, SV *)
-
-PERLVAR(I, VertSpace, SV *)
+PERLVAR(I, NonL1NonFinalFold, SV *)
+PERLVAR(I, HasMultiCharFold, SV *)
/* utf8 character class swashes */
-PERLVAR(I, utf8_alnum, SV *)
-PERLVAR(I, utf8_alpha, SV *)
-PERLVAR(I, utf8_space, SV *)
-PERLVAR(I, utf8_graph, SV *)
-PERLVAR(I, utf8_digit, SV *)
-PERLVAR(I, utf8_upper, SV *)
-PERLVAR(I, utf8_lower, SV *)
-PERLVAR(I, utf8_print, SV *)
-PERLVAR(I, utf8_punct, SV *)
-PERLVAR(I, utf8_xdigit, SV *)
PERLVAR(I, utf8_mark, SV *)
-PERLVAR(I, utf8_X_begin, SV *)
+PERLVAR(I, utf8_X_regular_begin, SV *)
PERLVAR(I, utf8_X_extend, SV *)
-PERLVAR(I, utf8_X_prepend, SV *)
-PERLVAR(I, utf8_X_non_hangul, SV *)
-PERLVAR(I, utf8_X_L, SV *)
-PERLVAR(I, utf8_X_LV, SV *)
-PERLVAR(I, utf8_X_LVT, SV *)
-PERLVAR(I, utf8_X_T, SV *)
-PERLVAR(I, utf8_X_V, SV *)
-PERLVAR(I, utf8_X_LV_LVT_V, SV *)
PERLVAR(I, utf8_toupper, SV *)
PERLVAR(I, utf8_totitle, SV *)
PERLVAR(I, utf8_tolower, SV *)
PERLVAR(I, utf8_tofold, SV *)
-PERLVAR(I, utf8_quotemeta, SV *)
+PERLVAR(I, utf8_charname_begin, SV *)
+PERLVAR(I, utf8_charname_continue, SV *)
+
+PERLVARA(I, utf8_swash_ptrs, POSIX_SWASH_COUNT, SV *)
+PERLVARA(I, Posix_ptrs, POSIX_CC_COUNT, SV *)
+PERLVARA(I, L1Posix_ptrs, POSIX_CC_COUNT, SV *)
+PERLVARA(I, XPosix_ptrs, POSIX_CC_COUNT, SV *)
+
PERLVAR(I, last_swash_hv, HV *)
PERLVAR(I, last_swash_tmps, U8 *)
PERLVAR(I, last_swash_slen, STRLEN)
-PERLVARA(I, last_swash_key,12, U8)
+PERLVARA(I, last_swash_key,UTF8_MAXBYTES-1, U8)
PERLVAR(I, last_swash_klen, U8) /* Only needs to store 0-12 */
#ifdef FCRYPT
PERLVARI(I, cryptseen, bool, FALSE) /* has fast crypt() been initialized? */
+#else
+/* One byte hole in the interpreter structure. */
#endif
PERLVAR(I, pad_reset_pending, bool) /* reset pad on next attempted alloc */
PERLVAR(I, srand_called, bool)
-PERLVARI(I, in_load_module, bool, FALSE) /* to prevent recursions in PerlIO_find_layer */
-
-PERLVAR(I, parser, yy_parser *) /* current parser state */
/* Array of signal handlers, indexed by signal number, through which the C
signal handler dispatches. */
@@ -692,6 +654,9 @@ PERLVAR(I, regex_padav, AV *) /* All regex objects, indexed via the
Entry 0 is an SV whose PV is a
"packed" list of IVs listing
the now-free slots in the array */
+PERLVAR(I, stashpad, HV **) /* for CopSTASH */
+PERLVARI(I, stashpadmax, PADOFFSET, 64)
+PERLVARI(I, stashpadix, PADOFFSET, 0)
#endif
#ifdef USE_REENTRANT_API
@@ -709,12 +674,11 @@ PERLVARI(I, def_layerlist, PerlIO_list_t *, NULL)
PERLVARI(I, encoding, SV *, NULL) /* character encoding */
-PERLVAR(I, debug_pad, struct perl_debug_pad) /* always needed because of the re extension */
-
PERLVAR(I, utf8_idstart, SV *)
PERLVAR(I, utf8_idcont, SV *)
PERLVAR(I, utf8_xidstart, SV *)
PERLVAR(I, utf8_perl_idstart, SV *)
+PERLVAR(I, utf8_perl_idcont, SV *)
PERLVAR(I, utf8_xidcont, SV *)
PERLVAR(I, sort_RealCmp, SVCOMPARE_t)
@@ -725,8 +689,6 @@ PERLVARI(I, unitcheckav_save, AV *, NULL)
PERLVARI(I, clocktick, long, 0) /* this many times() ticks in a second */
-PERLVAR(I, stashcache, HV *) /* Cache to speed up S_method_common */
-
/* Hooks to shared SVs and locks. */
PERLVARI(I, sharehook, share_proc_t, Perl_sv_nosharing)
PERLVARI(I, lockhook, share_proc_t, Perl_sv_nosharing)
@@ -747,10 +709,6 @@ PERLVARI(I, destroyhook, destroyable_proc_t, Perl_sv_destroyable)
PERLVARI(I, signalhook, despatch_signals_proc_t, Perl_despatch_signals)
#endif
-PERLVARI(I, hash_seed, UV, 0) /* Hash initializer */
-
-PERLVARI(I, rehash_seed, UV, 0) /* 582 hash initializer */
-
PERLVARI(I, isarev, HV *, NULL) /* Reverse map of @ISA dependencies */
/* Register of known Method Resolution Orders.
@@ -772,17 +730,22 @@ PERLVARI(I, utf8_foldable, SV *, NULL)
PERLVAR(I, custom_ops, HV *) /* custom op registrations */
+PERLVAR(I, Xpv, XPV *) /* (unused) held temporary value */
+
+/* name of the scopes we've ENTERed. Only used with -DDEBUGGING, but needs to be
+ present always, as -DDEBUGGING must be binary compatible with non. */
+PERLVARI(I, scopestack_name, const char * *, NULL)
+
+PERLVAR(I, debug_pad, struct perl_debug_pad) /* always needed because of the re extension */
+
/* Hook for File::Glob */
PERLVARI(I, globhook, globhook_t, NULL)
-PERLVARI(I, glob_index, int, 0)
-PERLVAR(I, reentrant_retint, int) /* Integer return value from reentrant functions */
-
-/* The last unconditional member of the interpreter structure when 5.10.0 was
+/* The last unconditional member of the interpreter structure when 5.18.2 was
released. The offset of the end of this is baked into a global variable in
any shared perl library which will allow a sanity test in future perl
releases. */
-#define PERL_LAST_5_16_0_INTERP_MEMBER Ireentrant_retint
+#define PERL_LAST_5_18_0_INTERP_MEMBER Iglobhook
#ifdef PERL_IMPLICIT_CONTEXT
PERLVARI(I, my_cxt_list, void **, NULL) /* per-module array of MY_CXT pointers */
@@ -808,17 +771,6 @@ PERLVARI(I, madskills, bool, FALSE) /* preserve all syntactic info */
PERLVARI(I, xmlfp, PerlIO *, NULL)
#endif
-#ifdef PL_OP_SLAB_ALLOC
-PERLVAR(I, OpPtr, I32 **)
-PERLVARI(I, OpSpace, I32, 0)
-PERLVAR(I, OpSlab, I32 *)
-#endif
-
-#ifdef PERL_DEBUG_READONLY_OPS
-PERLVARI(I, slabs, I32**, NULL) /* Array of slabs that have been allocated */
-PERLVARI(I, slab_count, U32, 0) /* Size of the array */
-#endif
-
#ifdef DEBUG_LEAKING_SCALARS
PERLVARI(I, sv_serial, U32, 0) /* SV serial number, used in sv.c */
#endif
diff --git a/gnu/usr.bin/perl/iperlsys.h b/gnu/usr.bin/perl/iperlsys.h
index 0bfad3ce09f..b23f4d3eb29 100644
--- a/gnu/usr.bin/perl/iperlsys.h
+++ b/gnu/usr.bin/perl/iperlsys.h
@@ -1416,8 +1416,8 @@ struct IPerlSockInfo
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/l1_char_class_tab.h b/gnu/usr.bin/perl/l1_char_class_tab.h
index d649c89d8a7..b5bf444a6af 100644
--- a/gnu/usr.bin/perl/l1_char_class_tab.h
+++ b/gnu/usr.bin/perl/l1_char_class_tab.h
@@ -1,265 +1,264 @@
/* -*- buffer-read-only: t -*-
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
- * This file is built by regen/mk_PL_charclass.pl from property definitions
- * and lib/unicore/CaseFolding.txt.
+ * This file is built by regen/mk_PL_charclass.pl from property definitions.
* Any changes made here will be lost!
*/
-/* U+00 NUL */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+01 SOH */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+02 STX */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+03 ETX */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+04 EOT */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+05 ENQ */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+06 ACK */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+07 BEL */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+08 BS */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+09 HT */ _CC_BLANK_A|_CC_BLANK_L1|_CC_CNTRL_A|_CC_CNTRL_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1|_CC_SPACE_A|_CC_SPACE_L1|_CC_QUOTEMETA,
-/* U+0A LF */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1|_CC_SPACE_A|_CC_SPACE_L1|_CC_QUOTEMETA,
-/* U+0B VT */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1|_CC_QUOTEMETA,
-/* U+0C FF */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1|_CC_SPACE_A|_CC_SPACE_L1|_CC_QUOTEMETA,
-/* U+0D CR */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1|_CC_SPACE_A|_CC_SPACE_L1|_CC_QUOTEMETA,
-/* U+0E SO */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+0F SI */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+10 DLE */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+11 DC1 */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+12 DC2 */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+13 DC3 */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+14 DC4 */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+15 NAK */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+16 SYN */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+17 ETB */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+18 CAN */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+19 EOM */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+1A SUB */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+1B ESC */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+1C FS */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+1D GS */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+1E RS */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+1F US */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+20 SPACE */ _CC_BLANK_A|_CC_BLANK_L1|_CC_CHARNAME_CONT|_CC_PRINT_A|_CC_PRINT_L1|_CC_PSXSPC_A|_CC_PSXSPC_L1|_CC_SPACE_A|_CC_SPACE_L1|_CC_QUOTEMETA,
-/* U+21 '!' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+22 '"' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+23 '#' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+24 '$' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+25 '%' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+26 '&' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+27 ''' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+28 '(' */ _CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+29 ')' */ _CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+2A '*' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+2B '+' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+2C ',' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+2D '-' */ _CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+2E '.' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+2F '/' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+30 '0' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+31 '1' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+32 '2' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+33 '3' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+34 '4' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+35 '5' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+36 '6' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+37 '7' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_OCTAL_A|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+38 '8' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+39 '9' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_CHARNAME_CONT|_CC_DIGIT_A|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+3A ':' */ _CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+3B ';' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+3C '<' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+3D '=' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+3E '>' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+3F '?' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+40 '@' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+41 'A' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+42 'B' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+43 'C' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+44 'D' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+45 'E' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+46 'F' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+47 'G' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+48 'H' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+49 'I' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+4A 'J' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+4B 'K' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+4C 'L' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+4D 'M' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+4E 'N' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+4F 'O' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+50 'P' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+51 'Q' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+52 'R' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+53 'S' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+54 'T' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+55 'U' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+56 'V' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+57 'W' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+58 'X' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+59 'Y' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+5A 'Z' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_UPPER_A|_CC_UPPER_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+5B '[' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+5C '\' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+5D ']' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+5E '^' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+5F '_' */ _CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+60 '`' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+61 'a' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+62 'b' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+63 'c' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+64 'd' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+65 'e' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+66 'f' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1|_CC_XDIGIT_A,
-/* U+67 'g' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+68 'h' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+69 'i' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+6A 'j' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+6B 'k' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+6C 'l' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+6D 'm' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+6E 'n' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+6F 'o' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+70 'p' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+71 'q' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+72 'r' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+73 's' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+74 't' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+75 'u' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+76 'v' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+77 'w' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+78 'x' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+79 'y' */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+7A 'z' */ _CC_ALNUMC_A|_CC_ALNUMC_L1|_CC_ALPHA_A|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_A|_CC_GRAPH_L1|_CC_IDFIRST_A|_CC_IDFIRST_L1|_CC_LOWER_A|_CC_LOWER_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_WORDCHAR_A|_CC_WORDCHAR_L1,
-/* U+7B '{' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+7C '|' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+7D '}' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+7E '~' */ _CC_GRAPH_A|_CC_GRAPH_L1|_CC_PRINT_A|_CC_PRINT_L1|_CC_PUNCT_A|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+7F DEL */ _CC_CNTRL_A|_CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+80 PAD */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+81 HOP */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+82 BPH */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+83 NBH */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+84 IND */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+85 NEL */ _CC_CNTRL_L1|_CC_PSXSPC_L1|_CC_SPACE_L1|_CC_QUOTEMETA,
-/* U+86 SSA */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+87 ESA */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+88 HTS */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+89 HTJ */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+8A VTS */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+8B PLD */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+8C PLU */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+8D RI */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+8E SS2 */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+8F SS3 */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+90 DCS */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+91 PU1 */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+92 PU2 */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+93 STS */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+94 CCH */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+95 MW */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+96 SPA */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+97 EPA */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+98 SOS */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+99 SGC */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+9A SCI */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+9B CSI */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+9C ST */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+9D OSC */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+9E PM */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+9F APC */ _CC_CNTRL_L1|_CC_QUOTEMETA,
-/* U+A0 NO-BREAK SPACE */ _CC_BLANK_L1|_CC_CHARNAME_CONT|_CC_PRINT_L1|_CC_PSXSPC_L1|_CC_SPACE_L1|_CC_QUOTEMETA,
-/* U+A1 INVERTED EXCLAMATION MARK */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+A2 CENT SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+A3 POUND SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+A4 CURRENCY SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+A5 YEN SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+A6 BROKEN BAR */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+A7 SECTION SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+A8 DIAERESIS */ _CC_GRAPH_L1|_CC_PRINT_L1,
-/* U+A9 COPYRIGHT SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+AA FEMININE ORDINAL INDICATOR */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+AC NOT SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+AD SOFT HYPHEN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+AE REGISTERED SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+AF MACRON */ _CC_GRAPH_L1|_CC_PRINT_L1,
-/* U+B0 DEGREE SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+B1 PLUS-MINUS SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+B2 SUPERSCRIPT TWO */ _CC_GRAPH_L1|_CC_PRINT_L1,
-/* U+B3 SUPERSCRIPT THREE */ _CC_GRAPH_L1|_CC_PRINT_L1,
-/* U+B4 ACUTE ACCENT */ _CC_GRAPH_L1|_CC_PRINT_L1,
-/* U+B5 MICRO SIGN */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+B6 PILCROW SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+B7 MIDDLE DOT */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1,
-/* U+B8 CEDILLA */ _CC_GRAPH_L1|_CC_PRINT_L1,
-/* U+B9 SUPERSCRIPT ONE */ _CC_GRAPH_L1|_CC_PRINT_L1,
-/* U+BA MASCULINE ORDINAL INDICATOR */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+BC VULGAR FRACTION ONE QUARTER */ _CC_GRAPH_L1|_CC_PRINT_L1,
-/* U+BD VULGAR FRACTION ONE HALF */ _CC_GRAPH_L1|_CC_PRINT_L1,
-/* U+BE VULGAR FRACTION THREE QUARTERS */ _CC_GRAPH_L1|_CC_PRINT_L1,
-/* U+BF INVERTED QUESTION MARK */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_PUNCT_L1|_CC_QUOTEMETA,
-/* U+C0 A WITH GRAVE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+C1 A WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+C2 A WITH CIRCUMFLEX */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+C3 A WITH TILDE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+C4 A WITH DIAERESIS */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+C5 A WITH RING ABOVE */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+C6 AE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+C7 C WITH CEDILLA */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+C8 E WITH GRAVE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+C9 E WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+CA E WITH CIRCUMFLEX */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+CB E WITH DIAERESIS */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+CC I WITH GRAVE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+CD I WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+CE I WITH CIRCUMFLEX */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+CF I WITH DIAERESIS */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+D0 ETH */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+D1 N WITH TILDE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+D2 O WITH GRAVE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+D3 O WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+D4 O WITH CIRCUMFLEX */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+D5 O WITH TILDE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+D6 O WITH DIAERESIS */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+D7 MULTIPLICATION SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+D8 O WITH STROKE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+D9 U WITH GRAVE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+DA U WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+DB U WITH CIRCUMFLEX */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+DC U WITH DIAERESIS */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+DD Y WITH ACUTE */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+DE THORN */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_PRINT_L1|_CC_UPPER_L1|_CC_WORDCHAR_L1,
-/* U+DF sharp s */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+E0 a with grave */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+E1 a with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+E2 a with circumflex */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+E3 a with tilde */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+E4 a with diaeresis */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+E5 a with ring above */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+E6 ae */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+E7 c with cedilla */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+E8 e with grave */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+E9 e with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+EA e with circumflex */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+EB e with diaeresis */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+EC i with grave */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+ED i with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+EE i with circumflex */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+EF i with diaeresis */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+F0 eth */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+F1 n with tilde */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+F2 o with grave */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+F3 o with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+F4 o with circumflex */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+F5 o with tilde */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+F6 o with diaeresis */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+F7 DIVISION SIGN */ _CC_GRAPH_L1|_CC_PRINT_L1|_CC_QUOTEMETA,
-/* U+F8 o with stroke */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+F9 u with grave */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+FA u with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+FB u with circumflex */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+FC u with diaeresis */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+FD y with acute */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+FE thorn */ _CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
-/* U+FF y with diaeresis */ _CC_NONLATIN1_FOLD|_CC_ALNUMC_L1|_CC_ALPHA_L1|_CC_CHARNAME_CONT|_CC_GRAPH_L1|_CC_IDFIRST_L1|_CC_LOWER_L1|_CC_PRINT_L1|_CC_WORDCHAR_L1,
+/* U+00 NUL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+01 SOH */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+02 STX */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+03 ETX */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+04 EOT */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+05 ENQ */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+06 ACK */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+07 BEL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+08 BS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+09 HT */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CNTRL)|(1U<<_CC_PSXSPC)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
+/* U+0A LF */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_PSXSPC)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
+/* U+0B VT */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_PSXSPC)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
+/* U+0C FF */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_PSXSPC)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
+/* U+0D CR */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_PSXSPC)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
+/* U+0E SO */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+0F SI */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+10 DLE */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+11 DC1 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+12 DC2 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+13 DC3 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+14 DC4 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+15 NAK */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+16 SYN */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+17 ETB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+18 CAN */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+19 EOM */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+1A SUB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+1B ESC */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+1C FS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+1D GS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+1E RS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+1F US */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+20 SPACE */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_PSXSPC)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
+/* U+21 '!' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+22 '"' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+23 '#' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+24 '$' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+25 '%' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+26 '&' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+27 ''' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+28 '(' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+29 ')' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+2A '*' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+2B '+' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+2C ',' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+2D '-' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+2E '.' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+2F '/' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+30 '0' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
+/* U+31 '1' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
+/* U+32 '2' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
+/* U+33 '3' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
+/* U+34 '4' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
+/* U+35 '5' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
+/* U+36 '6' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
+/* U+37 '7' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
+/* U+38 '8' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
+/* U+39 '9' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
+/* U+3A ':' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+3B ';' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+3C '<' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+3D '=' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+3E '>' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+3F '?' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+40 '@' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+41 'A' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+42 'B' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+43 'C' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+44 'D' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+45 'E' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+46 'F' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+47 'G' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+48 'H' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+49 'I' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+4A 'J' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+4B 'K' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+4C 'L' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+4D 'M' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+4E 'N' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_BACKSLASH_FOO_LBRACE_IS_META),
+/* U+4F 'O' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+50 'P' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_BACKSLASH_FOO_LBRACE_IS_META),
+/* U+51 'Q' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+52 'R' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+53 'S' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+54 'T' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+55 'U' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+56 'V' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+57 'W' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+58 'X' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+59 'Y' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+5A 'Z' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+5B '[' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+5C '\' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+5D ']' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+5E '^' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+5F '_' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_WORDCHAR),
+/* U+60 '`' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+61 'a' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+62 'b' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+63 'c' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+64 'd' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+65 'e' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+66 'f' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+67 'g' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_BACKSLASH_FOO_LBRACE_IS_META),
+/* U+68 'h' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+69 'i' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+6A 'j' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+6B 'k' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_BACKSLASH_FOO_LBRACE_IS_META),
+/* U+6C 'l' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+6D 'm' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+6E 'n' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+6F 'o' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_BACKSLASH_FOO_LBRACE_IS_META),
+/* U+70 'p' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_BACKSLASH_FOO_LBRACE_IS_META),
+/* U+71 'q' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+72 'r' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+73 's' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+74 't' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+75 'u' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+76 'v' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+77 'w' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+78 'x' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_BACKSLASH_FOO_LBRACE_IS_META),
+/* U+79 'y' */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+7A 'z' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+7B '{' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+7C '|' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+7D '}' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+7E '~' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+7F DEL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+80 PAD */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+81 HOP */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+82 BPH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+83 NBH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+84 IND */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+85 NEL */ (1U<<_CC_CNTRL)|(1U<<_CC_PSXSPC)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
+/* U+86 SSA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+87 ESA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+88 HTS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+89 HTJ */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+8A VTS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+8B PLD */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+8C PLU */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+8D RI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+8E SS2 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+8F SS3 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+90 DCS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+91 PU1 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+92 PU2 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+93 STS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+94 CCH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+95 MW */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+96 SPA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+97 EPA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+98 SOS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+99 SGC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+9A SCI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+9B CSI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+9C ST */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+9D OSC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+9E PM */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+9F APC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
+/* U+A0 NO-BREAK SPACE */ (1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_PSXSPC)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
+/* U+A1 INVERTED EXCLAMATION MARK */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+A2 CENT SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+A3 POUND SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+A4 CURRENCY SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+A5 YEN SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+A6 BROKEN BAR */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+A7 SECTION SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+A8 DIAERESIS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
+/* U+A9 COPYRIGHT SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+AA FEMININE ORDINAL INDICATOR */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
+/* U+AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+AC NOT SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+AD SOFT HYPHEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+AE REGISTERED SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+AF MACRON */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
+/* U+B0 DEGREE SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+B1 PLUS-MINUS SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+B2 SUPERSCRIPT TWO */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
+/* U+B3 SUPERSCRIPT THREE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
+/* U+B4 ACUTE ACCENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
+/* U+B5 MICRO SIGN */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+B6 PILCROW SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+B7 MIDDLE DOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT),
+/* U+B8 CEDILLA */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
+/* U+B9 SUPERSCRIPT ONE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
+/* U+BA MASCULINE ORDINAL INDICATOR */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
+/* U+BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+BC VULGAR FRACTION ONE QUARTER */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
+/* U+BD VULGAR FRACTION ONE HALF */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
+/* U+BE VULGAR FRACTION THREE QUARTERS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
+/* U+BF INVERTED QUESTION MARK */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
+/* U+C0 A WITH GRAVE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+C1 A WITH ACUTE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+C2 A WITH CIRCUMFLEX */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+C3 A WITH TILDE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+C4 A WITH DIAERESIS */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+C5 A WITH RING ABOVE */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+C6 AE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+C7 C WITH CEDILLA */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+C8 E WITH GRAVE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+C9 E WITH ACUTE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+CA E WITH CIRCUMFLEX */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+CB E WITH DIAERESIS */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+CC I WITH GRAVE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+CD I WITH ACUTE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+CE I WITH CIRCUMFLEX */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+CF I WITH DIAERESIS */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+D0 ETH */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+D1 N WITH TILDE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+D2 O WITH GRAVE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+D3 O WITH ACUTE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+D4 O WITH CIRCUMFLEX */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+D5 O WITH TILDE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+D6 O WITH DIAERESIS */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+D7 MULTIPLICATION SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+D8 O WITH STROKE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+D9 U WITH GRAVE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+DA U WITH ACUTE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+DB U WITH CIRCUMFLEX */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+DC U WITH DIAERESIS */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+DD Y WITH ACUTE */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+DE THORN */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+DF sharp s */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+E0 a with grave */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+E1 a with acute */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+E2 a with circumflex */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+E3 a with tilde */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+E4 a with diaeresis */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+E5 a with ring above */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+E6 ae */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+E7 c with cedilla */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+E8 e with grave */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+E9 e with acute */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+EA e with circumflex */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+EB e with diaeresis */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+EC i with grave */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+ED i with acute */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+EE i with circumflex */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+EF i with diaeresis */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+F0 eth */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+F1 n with tilde */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+F2 o with grave */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+F3 o with acute */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+F4 o with circumflex */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+F5 o with tilde */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+F6 o with diaeresis */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+F7 DIVISION SIGN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
+/* U+F8 o with stroke */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+F9 u with grave */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+FA u with acute */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+FB u with circumflex */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+FC u with diaeresis */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+FD y with acute */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+FE thorn */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
+/* U+FF y with diaeresis */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD),
/* ex: set ro: */
diff --git a/gnu/usr.bin/perl/lib/AnyDBM_File.t b/gnu/usr.bin/perl/lib/AnyDBM_File.t
index d3c1c312791..63fb2d8fb98 100644
--- a/gnu/usr.bin/perl/lib/AnyDBM_File.t
+++ b/gnu/usr.bin/perl/lib/AnyDBM_File.t
@@ -14,7 +14,7 @@ use Fcntl;
$Is_Dosish = ($^O eq 'amigaos' || $^O eq 'MSWin32' ||
$^O eq 'NetWare' || $^O eq 'dos' ||
- $^O eq 'os2' || $^O eq 'mint' ||
+ $^O eq 'os2' ||
$^O eq 'cygwin');
my $filename = "Any_dbmx$$";
diff --git a/gnu/usr.bin/perl/lib/CORE.pod b/gnu/usr.bin/perl/lib/CORE.pod
index ec6a8047a4d..ce5feb5908a 100644
--- a/gnu/usr.bin/perl/lib/CORE.pod
+++ b/gnu/usr.bin/perl/lib/CORE.pod
@@ -34,21 +34,31 @@ For many Perl functions, the CORE package contains real subroutines. This
feature is new in Perl 5.16. You can take references to these and make
aliases. However, some can only be called as barewords; i.e., you cannot
use ampersand syntax (C<&foo>) or call them through references. See the
-C<shove> example above. These subroutines exist for all overridable
-keywords, except for C<dump> and the infix operators. Calling with
+C<shove> example above. These subroutines exist for all keywords except the following:
+
+C<__DATA__>, C<__END__>, C<and>, C<cmp>, C<default>, C<do>, C<dump>,
+C<else>, C<elsif>, C<eq>, C<eval>, C<for>, C<foreach>, C<format>, C<ge>,
+C<given>, C<goto>, C<grep>, C<gt>, C<if>, C<last>, C<le>, C<local>, C<lt>,
+C<m>, C<map>, C<my>, C<ne>, C<next>, C<no>, C<or>, C<our>, C<package>,
+C<print>, C<printf>, C<q>, C<qq>, C<qr>, C<qw>, C<qx>, C<redo>, C<require>,
+C<return>, C<s>, C<say>, C<sort>, C<state>, C<sub>, C<tr>, C<unless>,
+C<until>, C<use>, C<when>, C<while>, C<x>, C<xor>, C<y>
+
+Calling with
ampersand syntax and through references does not work for the following
functions, as they have special syntax that cannot always be translated
into a simple list (e.g., C<eof> vs C<eof()>):
-C<chdir>, C<chomp>, C<chop>, C<each>, C<eof>, C<exec>, C<keys>, C<lstat>,
-C<pop>, C<push>, C<shift>, C<splice>, C<stat>, C<system>, C<truncate>,
+C<chdir>, C<chomp>, C<chop>, C<defined>, C<delete>, C<each>,
+C<eof>, C<exec>, C<exists>, C<keys>, C<lstat>, C<pop>, C<push>,
+C<shift>, C<splice>, C<split>, C<stat>, C<system>, C<truncate>,
C<unlink>, C<unshift>, C<values>
=head1 OVERRIDING CORE FUNCTIONS
To override a Perl built-in routine with your own version, you need to
-import it at compile-time. This can be conveniently achieved with the
-C<subs> pragma. This will affect only the package in which you've imported
+import it at compile-time. This can be conveniently achieved with the
+C<subs> pragma. This will affect only the package in which you've imported
the said subroutine:
use subs 'chdir';
diff --git a/gnu/usr.bin/perl/lib/Class/Struct.t b/gnu/usr.bin/perl/lib/Class/Struct.t
index 694d622d4d2..fb1eb0b545a 100644
--- a/gnu/usr.bin/perl/lib/Class/Struct.t
+++ b/gnu/usr.bin/perl/lib/Class/Struct.t
@@ -33,11 +33,32 @@ package MyOther;
use Class::Struct s => '$', a => '@', h => '%', c => 'aClass';
#
+# test overriden accessors
+#
+package OverrideAccessor;
+use Class::Struct;
+
+{
+ no warnings qw(Class::Struct);
+ struct( 'OverrideAccessor', { count => '$' } );
+}
+
+sub count {
+ my ($self,$count) = @_;
+
+ if ( @_ >= 2 ) {
+ $self->{'OverrideAccessor::count'} = $count + 9;
+ }
+
+ return $self->{'OverrideAccessor::count'};
+}
+
+#
# back to main...
#
package main;
-use Test::More tests => 24;
+use Test::More;
my $obj = MyObj->new;
isa_ok $obj, 'MyObj';
@@ -101,3 +122,133 @@ is $obk->SomeElem(), 123;
my $recobj = RecClass->new();
isa_ok $recobj, 'RecClass';
+my $override_obj = OverrideAccessor->new( count => 3 );
+is $override_obj->count, 12;
+
+$override_obj->count( 1 );
+is $override_obj->count, 10;
+
+
+use Class::Struct Kapow => { z_zwap => 'Regexp', sploosh => 'MyObj' };
+
+is eval { main->new(); }, undef,
+ 'No new method injected into current package';
+
+my $obj3 = Kapow->new();
+
+isa_ok $obj3, 'Kapow';
+is $obj3->z_zwap, undef, 'No z_zwap member by default';
+is $obj3->sploosh, undef, 'No sploosh member by default';
+$obj3->z_zwap(qr//);
+isa_ok $obj3->z_zwap, 'Regexp', 'Can set z_zwap member';
+$obj3->sploosh(MyObj->new(s => 'pie'));
+isa_ok $obj3->sploosh, 'MyObj',
+ 'Can set sploosh member to object of correct class';
+is $obj3->sploosh->s, 'pie', 'Can set sploosh member to correct object';
+
+my $obj4 = Kapow->new( z_zwap => qr//, sploosh => MyObj->new(a => ['Good']) );
+
+isa_ok $obj4, 'Kapow';
+isa_ok $obj4->z_zwap, 'Regexp', 'Initialised z_zwap member';
+isa_ok $obj4->sploosh, 'MyObj', 'Initialised sploosh member';
+is_deeply $obj4->sploosh->a, ['Good'], 'with correct object';
+
+my $obj5 = Kapow->new( sploosh => { h => {perl => 'rules'} } );
+
+isa_ok $obj5, 'Kapow';
+is $obj5->z_zwap, undef, 'No z_zwap member by default';
+isa_ok $obj5->sploosh, 'MyObj', 'Initialised sploosh member from hash';
+is_deeply $obj5->sploosh->h, { perl => 'rules'} , 'with correct object';
+
+is eval {
+ package MyObj;
+ struct( s => '$', a => '@', h => '%', c => 'aClass' );
+}, undef, 'Calling struct a second time fails';
+
+like $@, qr/^function 'new' already defined in package MyObj/,
+ 'fails with the expected error';
+
+is eval { MyObj->new( a => {} ) }, undef,
+ 'Using a hash where an array reference is expected';
+like $@, qr/^Initializer for a must be array reference/,
+ 'fails with the expected error';
+
+is eval { MyObj->new( h => [] ) }, undef,
+ 'Using an array where a hash reference is expected';
+like $@, qr/^Initializer for h must be hash reference/,
+ 'fails with the expected error';
+
+is eval { Kapow->new( sploosh => { h => [perl => 'rules'] } ); }, undef,
+ 'Using an array where a hash reference is expected in an initialiser list';
+like $@, qr/^Initializer for h must be hash reference/,
+ 'fails with the expected error';
+
+is eval { Kapow->new( sploosh => [ h => {perl => 'rules'} ] ); }, undef,
+ "Using an array for a member object's initialiser list";
+like $@, qr/^Initializer for sploosh must be hash or MyObj reference/,
+ 'fails with the expected error';
+
+is eval {
+ package Crraack;
+ use Class::Struct 'struct';
+ struct( 'pow' => '@$%!' );
+}, undef, 'Bad type fails';
+like $@, qr/^'\@\$\%\!' is not a valid struct element type/,
+ 'with the expected error';
+
+is eval {
+ $obj3->sploosh(MyOther->new(s => 3.14));
+}, undef, 'Setting member to the wrong class of object fails';
+like $@, qr/^sploosh argument is wrong class/,
+ 'with the expected error';
+is $obj3->sploosh->s, 'pie', 'Object is unchanged';
+
+is eval {
+ $obj3->sploosh(MyObj->new(s => 3.14), 'plop');
+}, undef, 'Too many arguments to setter fails';
+like $@, qr/^Too many args to sploosh/,
+ 'with the expected error';
+is $obj3->sploosh->s, 'pie', 'Object is unchanged';
+
+is eval {
+ package Blurp;
+ use Class::Struct 'struct';
+ struct( Blurp => {}, 'Bonus!' );
+}, undef, 'hash based class with extra argument fails';
+like $@, qr/\Astruct usage error.*\n.*\n/,
+ 'with the expected confession';
+
+is eval {
+ package Zamm;
+ use Class::Struct 'struct';
+ struct( Zamm => [], 'Bonus!' );
+}, undef, 'array based class with extra argument fails';
+like $@, qr/\Astruct usage error.*\n.*\n/,
+ 'with the expected confession';
+
+is eval {
+ package Thwapp;
+ use Class::Struct 'struct';
+ struct( Thwapp => ['Bonus!'] );
+}, undef, 'array based class with extra constructor argument fails';
+like $@, qr/\Astruct usage error.*\n.*\n/,
+ 'with the expected confession';
+
+is eval {
+ package Rakkk;
+ use Class::Struct 'struct';
+ struct( z_zwap => 'Regexp', sploosh => 'MyObj', 'Bonus' );
+}, undef, 'default array based class with extra constructor argument fails';
+like $@, qr/\Astruct usage error.*\n.*\n/,
+ 'with the expected confession';
+
+is eval {
+ package Awk;
+ use parent -norequire, 'Urkkk';
+ use Class::Struct 'struct';
+ struct( beer => 'foamy' );
+}, undef, '@ISA is not allowed';
+like $@, qr/^struct class cannot be a subclass \(\@ISA not allowed\)/,
+ 'with the expected error';
+
+done_testing;
diff --git a/gnu/usr.bin/perl/lib/DB.t b/gnu/usr.bin/perl/lib/DB.t
index a1fadf331a8..b4b6ecb1e5f 100644
--- a/gnu/usr.bin/perl/lib/DB.t
+++ b/gnu/usr.bin/perl/lib/DB.t
@@ -126,7 +126,7 @@ is( DB::_clientname('bar'), undef,
my @ret = eval { DB->backtrace() };
like( $ret[0], qr/file.+\Q$0\E/, 'DB::backtrace() should report current file');
like( $ret[0], qr/line $line/, '... should report calling line number' );
- like( $ret[0], qr/eval {...}/, '... should catch eval BLOCK' );
+ like( $ret[0], qr/eval\Q {...}/, '... should catch eval BLOCK' );
@ret = eval "one(2)";
is( scalar @ret, 1, '... should report from provided stack frame number' );
diff --git a/gnu/usr.bin/perl/lib/DBM_Filter.pm b/gnu/usr.bin/perl/lib/DBM_Filter.pm
index a5f4a17fd56..3421848eca4 100644
--- a/gnu/usr.bin/perl/lib/DBM_Filter.pm
+++ b/gnu/usr.bin/perl/lib/DBM_Filter.pm
@@ -2,7 +2,7 @@ package DBM_Filter ;
use strict;
use warnings;
-our $VERSION = '0.04';
+our $VERSION = '0.05';
package Tie::Hash ;
@@ -247,7 +247,7 @@ DBM_Filter -- Filter DBM keys/values
$db->Filtered();
package DBM_Filter::my_filter1;
-
+
sub Store { ... }
sub Fetch { ... }
diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/t/int32.t b/gnu/usr.bin/perl/lib/DBM_Filter/t/int32.t
index 96d4d9e8e1c..a74d49dfbe6 100644
--- a/gnu/usr.bin/perl/lib/DBM_Filter/t/int32.t
+++ b/gnu/usr.bin/perl/lib/DBM_Filter/t/int32.t
@@ -55,9 +55,8 @@ is $@, '', "push an 'int32' filter" ;
no warnings 'uninitialized';
StoreData(\%h1,
{
- undef() => undef(),
"400" => "500",
- 0 => 1,
+ undef() => 1,
1 => 0,
-47 => -6,
});
diff --git a/gnu/usr.bin/perl/lib/ExtUtils/t/Embed.t b/gnu/usr.bin/perl/lib/ExtUtils/t/Embed.t
index 269b20ac3a8..7a83c98f767 100644
--- a/gnu/usr.bin/perl/lib/ExtUtils/t/Embed.t
+++ b/gnu/usr.bin/perl/lib/ExtUtils/t/Embed.t
@@ -204,13 +204,13 @@ int main(int argc, char **argv, char **env) {
perl_free(my_perl);
-#ifdef PERL_GLOBAL_STRUCT
- free_global_struct(plvarsp);
-#endif /* PERL_GLOBAL_STRUCT */
-
my_puts("ok 8");
PERL_SYS_TERM();
+#ifdef PERL_GLOBAL_STRUCT
+ free_global_struct(plvarsp);
+#endif /* PERL_GLOBAL_STRUCT */
+
return 0;
}
diff --git a/gnu/usr.bin/perl/lib/File/Basename.t b/gnu/usr.bin/perl/lib/File/Basename.t
index 0d3b633669d..6ff3121ec93 100644
--- a/gnu/usr.bin/perl/lib/File/Basename.t
+++ b/gnu/usr.bin/perl/lib/File/Basename.t
@@ -154,7 +154,9 @@ can_ok( __PACKAGE__, qw( basename fileparse dirname fileparse_set_fstype ) );
### Test tainting
-{
+SKIP: {
+ skip "A perl without taint support", 2
+ if not ${^TAINT};
# The empty tainted value, for tainting strings
my $TAINT = substr($^X, 0, 0);
diff --git a/gnu/usr.bin/perl/lib/File/Copy.t b/gnu/usr.bin/perl/lib/File/Copy.t
index ffd3d59db78..1e6c9cb4a12 100644
--- a/gnu/usr.bin/perl/lib/File/Copy.t
+++ b/gnu/usr.bin/perl/lib/File/Copy.t
@@ -14,7 +14,7 @@ use Test::More;
my $TB = Test::More->builder;
-plan tests => 463;
+plan tests => 465;
# We're going to override rename() later on but Perl has to see an override
# at compile time to honor it.
@@ -139,7 +139,7 @@ for my $cross_partition_test (0..1) {
{
my $warnings = '';
local $SIG{__WARN__} = sub { $warnings .= join '', @_ };
- ok copy("file-$$", "file-$$"), 'copy(fn, fn) succeeds';
+ ok !copy("file-$$", "file-$$"), 'copy to itself fails';
like $warnings, qr/are identical/, 'but warns';
ok -s "file-$$", 'contents preserved';
@@ -267,6 +267,9 @@ SKIP: {
if $^O eq "MSWin32";
skip "Copy maps POSIX permissions to VOS permissions.", $skips
if $^O eq "vos";
+ skip "There be dragons here with DragonflyBSD.", $skips
+ if $^O eq 'dragonfly';
+
# Just a sub to get better failure messages.
sub __ ($) {
@@ -411,7 +414,7 @@ SKIP: {
foreach my $right (qw(plain object1 object2)) {
@warnings = ();
$! = 0;
- is eval {copy $what{$left}, $what{$right}}, 1, "copy $left $right";
+ is eval {copy $what{$left}, $what{$right}}, 0, "copy $left $right";
is $@, '', 'No croaking';
is $!, '', 'No system call errors';
is @warnings, 1, 'Exactly 1 warning';
@@ -472,6 +475,31 @@ SKIP: {
close($IN);
}
+use File::Temp qw(tempdir);
+use File::Spec;
+
+SKIP: {
+ # RT #111126: File::Copy copy() zeros file when copying a file
+ # into the same directory it is stored in
+
+ my $temp_dir = tempdir( CLEANUP => 1 );
+ my $temp_file = File::Spec->catfile($temp_dir, "somefile");
+
+ open my $fh, ">", $temp_file
+ or skip "Cannot create $temp_file: $!", 2;
+ print $fh "Just some data";
+ close $fh
+ or skip "Cannot close $temp_file: $!", 2;
+
+ my $warn_message = "";
+ local $SIG{__WARN__} = sub { $warn_message .= "@_" };
+ ok(!copy($temp_file, $temp_dir),
+ "Copy of foo/file to foo/ should fail");
+ like($warn_message, qr/^\Q'$temp_file' and '$temp_file'\E are identical.*Copy\.t/i,
+ "error message should describe the problem");
+ 1 while unlink $temp_file;
+}
+
END {
1 while unlink "file-$$";
1 while unlink "lib/file-$$";
diff --git a/gnu/usr.bin/perl/lib/File/Find/t/find.t b/gnu/usr.bin/perl/lib/File/Find/t/find.t
index 1d0a0870b13..96a10005114 100644
--- a/gnu/usr.bin/perl/lib/File/Find/t/find.t
+++ b/gnu/usr.bin/perl/lib/File/Find/t/find.t
@@ -18,7 +18,7 @@ BEGIN {
$SIG{'__WARN__'} = sub { $warn_msg = $_[0]; warn "# $_[0]"; }
}
-my $test_count = 85;
+my $test_count = 98;
$test_count += 119 if $symlink_exists;
$test_count += 26 if $^O eq 'MSWin32';
$test_count += 2 if $^O eq 'MSWin32' and $symlink_exists;
@@ -108,6 +108,21 @@ sub cleanup {
rmdir dir_path('fb', 'fbc');
rmdir dir_path('fb');
}
+ if (-d dir_path('fc')) {
+ unlink (
+ file_path('fc', 'fca', 'match_alpha'),
+ file_path('fc', 'fca', 'match_beta'),
+ file_path('fc', 'fcb', 'match_gamma'),
+ file_path('fc', 'fcb', 'delta'),
+ file_path('fc', 'fcc', 'match_epsilon'),
+ file_path('fc', 'fcc', 'match_zeta'),
+ file_path('fc', 'fcc', 'eta'),
+ );
+ rmdir dir_path('fc', 'fca');
+ rmdir dir_path('fc', 'fcb');
+ rmdir dir_path('fc', 'fcc');
+ rmdir dir_path('fc');
+ }
if ($need_updir) {
my $updir = $^O eq 'VMS' ? File::Spec::VMS->updir() : File::Spec->updir;
chdir($updir);
@@ -197,7 +212,7 @@ sub my_preprocess {
print "# --preprocess--\n";
print "# \$File::Find::dir => '$File::Find::dir' \n";
foreach $file (@files) {
- $file =~ s/\.(dir)?$// if $^O eq 'VMS';
+ $file =~ s/\.(dir)?$//i if $^O eq 'VMS';
print "# $file \n";
delete $Expect_Dir{ $File::Find::dir }->{$file};
}
@@ -870,6 +885,41 @@ if ($symlink_exists) { # Issue 68260
Check (!$dangling_symlink);
}
+print "# RT 59750\n";
+MkDir( dir_path('fc'), 0770 );
+MkDir( dir_path('fc', 'fca'), 0770 );
+MkDir( dir_path('fc', 'fcb'), 0770 );
+MkDir( dir_path('fc', 'fcc'), 0770 );
+touch( file_path('fc', 'fca', 'match_alpha') );
+touch( file_path('fc', 'fca', 'match_beta') );
+touch( file_path('fc', 'fcb', 'match_gamma') );
+touch( file_path('fc', 'fcb', 'delta') );
+touch( file_path('fc', 'fcc', 'match_epsilon') );
+touch( file_path('fc', 'fcc', 'match_zeta') );
+touch( file_path('fc', 'fcc', 'eta') );
+
+my @files_from_mixed = ();
+sub wantmatch {
+ if ( $File::Find::name =~ m/match/ ) {
+ push @files_from_mixed, $_;
+ print "# \$_ => '$_'\n";
+ }
+}
+find( \&wantmatch, (
+ dir_path('fc', 'fca'),
+ dir_path('fc', 'fcb'),
+ dir_path('fc', 'fcc'),
+) );
+Check( scalar(@files_from_mixed) == 5 );
+
+@files_from_mixed = ();
+find( \&wantmatch, (
+ dir_path('fc', 'fca'),
+ dir_path('fc', 'fcb'),
+ file_path('fc', 'fcc', 'match_epsilon'),
+ file_path('fc', 'fcc', 'eta'),
+) );
+Check( scalar(@files_from_mixed) == 4 );
if ($^O eq 'MSWin32') {
# Check F:F:f correctly handles a root directory path.
diff --git a/gnu/usr.bin/perl/lib/File/Find/t/taint.t b/gnu/usr.bin/perl/lib/File/Find/t/taint.t
index d47b21a7c31..954c6780d94 100644
--- a/gnu/usr.bin/perl/lib/File/Find/t/taint.t
+++ b/gnu/usr.bin/perl/lib/File/Find/t/taint.t
@@ -1,12 +1,19 @@
#!./perl -T
use strict;
+use Test::More;
+BEGIN {
+ plan(
+ ${^TAINT}
+ ? (tests => 45)
+ : (skip_all => "A perl without taint support")
+ );
+}
my %Expect_File = (); # what we expect for $_
my %Expect_Name = (); # what we expect for $File::Find::name/fullname
my %Expect_Dir = (); # what we expect for $File::Find::dir
my ($cwd, $cwd_untainted);
-
BEGIN {
require File::Spec;
chdir 't' if -d 't';
@@ -42,8 +49,6 @@ BEGIN {
$ENV{'PATH'} = join($sep,@path);
}
-use Test::More tests => 45;
-
my $symlink_exists = eval { symlink("",""); 1 };
use File::Find;
diff --git a/gnu/usr.bin/perl/lib/File/stat-7896.t b/gnu/usr.bin/perl/lib/File/stat-7896.t
new file mode 100644
index 00000000000..57b26858520
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/File/stat-7896.t
@@ -0,0 +1,28 @@
+#!./perl -w
+use strict;
+
+use Test::More;
+use File::stat;
+
+# This is possibly a bit black-box, but for now it works.
+# If (either) File::stat stops lazy loading Symbol, or Test::More starts, it
+# should be revisited
+is($INC{'Symbol.pm'}, undef, "Symbol isn't loaded yet");
+
+# ID 20011110.104 (RT #7896)
+$! = 0;
+is($!, '', '$! is empty');
+is(File::stat::stat('/notafile'), undef, 'invalid file should fail');
+isnt($!, '', 'should populate $!, given invalid file');
+my $e = $!;
+
+isnt($INC{'Symbol.pm'}, undef, "Symbol has been loaded");
+
+# Repeat twice
+is(File::stat::stat('/notafile'), undef, 'invalid file should fail again');
+is($!, $e, '$! should be consistent for an invalid file');
+$e = $!;
+is(File::stat::stat('/notafile'), undef, 'invalid file should fail again');
+is($!, $e, '$! should be consistent for an invalid file');
+
+done_testing();
diff --git a/gnu/usr.bin/perl/lib/File/stat.t b/gnu/usr.bin/perl/lib/File/stat.t
index 0646ebdcd6f..b85ff95462c 100644
--- a/gnu/usr.bin/perl/lib/File/stat.t
+++ b/gnu/usr.bin/perl/lib/File/stat.t
@@ -5,107 +5,136 @@ BEGIN {
@INC = '../lib';
}
+use strict;
+use warnings;
use Test::More;
use Config qw( %Config );
-
-BEGIN {
- # Check whether the build is configured with -Dmksymlinks
- our $Dmksymlinks =
- grep { /^config_arg\d+$/ && $Config{$_} eq '-Dmksymlinks' }
- keys %Config;
-
- # Resolve symlink to ./lib/File/stat.t if this build is configured
- # with -Dmksymlinks
- # Originally we worked with ./TEST, but other test scripts read from
- # that file and modify its access time.
- our $file = '../lib/File/stat.t';
- if ( $Dmksymlinks ) {
- $file = readlink $file;
- die "Can't readlink(../lib/File/stat.t): $!" if ! defined $file;
+use File::Temp qw( tempfile tempdir );
+
+use File::stat;
+
+my (undef, $file) = tempfile();
+
+{
+ my @stat = CORE::stat $file;
+ my $stat = File::stat::stat($file);
+ isa_ok($stat, 'File::stat', 'should build a stat object');
+ is_deeply($stat, \@stat, '... and matches the builtin');
+
+ my $i = 0;
+ foreach ([dev => 'device number'],
+ [ino => 'inode number'],
+ [mode => 'file mode'],
+ [nlink => 'number of links'],
+ [uid => 'owner uid'],
+ [gid => 'group id'],
+ [rdev => 'device identifier'],
+ [size => 'file size'],
+ [atime => 'last access time'],
+ [mtime => 'last modify time'],
+ [ctime => 'change time'],
+ [blksize => 'IO block size'],
+ [blocks => 'number of blocks']) {
+ my ($meth, $desc) = @$_;
+ # On OS/2 (fake) ino is not constant, it is incremented each time
+ SKIP: {
+ skip('inode number is not constant on OS/2', 1)
+ if $i == 1 && $^O eq 'os2';
+ is($stat->$meth, $stat[$i], "$desc in position $i");
+ }
+ ++$i;
}
- our $hasst;
- eval { my @n = stat $file };
- $hasst = 1 unless $@ && $@ =~ /unimplemented/;
- unless ($hasst) { plan skip_all => "no stat"; exit 0 }
- use Config;
- $hasst = 0 unless $Config{'i_sysstat'} eq 'define';
- unless ($hasst) { plan skip_all => "no sys/stat.h"; exit 0 }
+ my $stat2 = stat $file;
+ isa_ok($stat2, 'File::stat',
+ 'File::stat exports stat, overriding the builtin');
+ is_deeply($stat2, $stat, '... and matches the direct call');
}
-# Originally this was done in the BEGIN block, but perl is still
-# compiling (and hence reading) the script at that point, which can
-# change the file's access time, causing a different in the comparison
-# tests if the clock ticked over the second between the stat() and the
-# final read.
-# At this point all of the reading is done.
-our @stat = stat $file; # This is the function stat.
-unless (@stat) { plan skip_all => "1..0 # Skip: no file $file"; exit 0 }
-
-plan tests => 19 + 24*2 + 4 + 3;
-
-use_ok( 'File::stat' );
-
-my $stat = File::stat::stat( $file ); # This is the OO stat.
-ok( ref($stat), 'should build a stat object' );
-
-is( $stat->dev, $stat[0], "device number in position 0" );
-
-# On OS/2 (fake) ino is not constant, it is incremented each time
-SKIP: {
- skip('inode number is not constant on OS/2', 1) if $^O eq 'os2';
- is( $stat->ino, $stat[1], "inode number in position 1" );
+sub test_X_ops {
+ my ($file, $desc_tail, $skip) = @_;
+ my @stat = CORE::stat $file;
+ my $stat = File::stat::stat($file);
+ my $lstat = File::stat::lstat($file);
+ isa_ok($stat, 'File::stat', 'should build a stat object');
+
+ for my $op (split //, "rwxoRWXOezsfdlpSbcugkMCA") {
+ if ($skip && $op =~ $skip) {
+ note("Not testing -A $desc_tail");
+ next;
+ }
+ my $stat = $op eq 'l' ? $lstat : $stat;
+ for my $access ('', 'use filetest "access";') {
+ my ($warnings, $awarn, $vwarn, $rv);
+ my $desc = $access
+ ? "for -$op under use filetest 'access' $desc_tail"
+ : "for -$op $desc_tail";
+ {
+ local $SIG{__WARN__} = sub {
+ my $w = shift;
+ if ($w =~ /^File::stat ignores VMS ACLs/) {
+ ++$vwarn;
+ } elsif ($w =~ /^File::stat ignores use filetest 'access'/) {
+ ++$awarn;
+ } else {
+ $warnings .= $w;
+ }
+ };
+ $rv = eval "$access; -$op \$stat";
+ }
+ is($@, '', "Overload succeeds $desc");
+
+ if ($^O eq "VMS" && $op =~ /[rwxRWX]/) {
+ is($vwarn, 1, "warning about VMS ACLs $desc");
+ } else {
+ is($rv, eval "-$op \$file", "correct overload $desc")
+ unless $access;
+ is($vwarn, undef, "no warnings about VMS ACLs $desc");
+ }
+
+ # 111640 - File::stat bogus index check in overload
+ if ($access && $op =~ /[rwxRXW]/) {
+ # these should all warn with filetest access
+ is($awarn, 1,
+ "produced the right warning $desc");
+ } else {
+ # -d and others shouldn't warn
+ is($awarn, undef, "should be no warning $desc")
+ }
+
+ is($warnings, undef, "no other warnings seen $desc");
+ }
+ }
}
-is( $stat->mode, $stat[2], "file mode in position 2" );
-
-is( $stat->nlink, $stat[3], "number of links in position 3" );
-
-is( $stat->uid, $stat[4], "owner uid in position 4" );
-
-is( $stat->gid, $stat[5], "group id in position 5" );
-
-is( $stat->rdev, $stat[6], "device identifier in position 6" );
-
-is( $stat->size, $stat[7], "file size in position 7" );
-
-is( $stat->atime, $stat[8], "last access time in position 8" );
-
-is( $stat->mtime, $stat[9], "last modify time in position 9" );
-
-is( $stat->ctime, $stat[10], "change time in position 10" );
-
-is( $stat->blksize, $stat[11], "IO block size in position 11" );
-
-is( $stat->blocks, $stat[12], "number of blocks in position 12" );
-
-for (split //, "rwxoRWXOezsfdlpSbcugkMCA") {
- SKIP: {
- $^O eq "VMS" and index("rwxRWX", $_) >= 0
- and skip "File::stat ignores VMS ACLs", 2;
-
- my $rv = eval "-$_ \$stat";
- ok( !$@, "-$_ overload succeeds" )
- or diag( $@ );
- is( $rv, eval "-$_ \$file", "correct -$_ overload" );
+foreach ([file => $file],
+ [dir => tempdir(CLEANUP => 1)]) {
+ my ($what, $pathname) = @$_;
+ test_X_ops($pathname, "for $what $pathname");
+
+ my $mode = 01000;
+ while ($mode) {
+ $mode >>= 1;
+ my $mode_oct = sprintf "0%03o", $mode;
+ chmod $mode, $pathname or die "Can't chmod $mode_oct $pathname: $!";
+ test_X_ops($pathname, "for $what with mode=$mode_oct");
}
+ chmod 0600, $pathname
+ or die "Can't restore permissions on $pathname to 0600";
}
SKIP: {
- my $file = '../perl';
- -e $file && -x $file or skip "$file is not present and executable", 4;
+ -e $^X && -x $^X or skip "$^X is not present and executable", 4;
$^O eq "VMS" and skip "File::stat ignores VMS ACLs", 4;
- my $stat = File::stat::stat( $file ); # This is the OO stat.
- foreach (qw/x X/) {
- my $rv = eval "-$_ \$stat";
- ok( !$@, "-$_ overload succeeds" )
- or diag( $@ );
- is( $rv, eval "-$_ \$file", "correct -$_ overload" );
- }
+ # Other tests running in parallel mean that $^X is read, updating its atime
+ test_X_ops($^X, "for $^X", qr/A/);
}
+my $stat = File::stat::stat($file);
+isa_ok($stat, 'File::stat', 'should build a stat object');
+
for (split //, "tTB") {
eval "-$_ \$stat";
like( $@, qr/\Q-$_ is not implemented/, "-$_ overload fails" );
@@ -114,12 +143,14 @@ for (split //, "tTB") {
SKIP: {
local *STAT;
skip("Could not open file: $!", 2) unless open(STAT, $file);
- ok( File::stat::stat('STAT'), '... should be able to find filehandle' );
+ isa_ok(File::stat::stat('STAT'), 'File::stat',
+ '... should be able to find filehandle');
package foo;
local *STAT = *main::STAT;
- main::ok( my $stat2 = File::stat::stat('STAT'),
- '... and filehandle in another package' );
+ my $stat2 = File::stat::stat('STAT');
+ main::isa_ok($stat2, 'File::stat',
+ '... and filehandle in another package');
close STAT;
# VOS open() updates atime; ignore this error (posix-975).
@@ -133,12 +164,29 @@ SKIP: {
main::skip("OS/2: inode number is not constant on os/2", 1) if $^O eq 'os2';
- main::is( "@$stat", "@$stat3", '... and must match normal stat' );
+ main::is_deeply($stat, $stat3, '... and must match normal stat');
}
-
-local $!;
-$stat = stat '/notafile';
-isnt( $!, '', 'should populate $!, given invalid file' );
+SKIP:
+{ # RT #111638
+ skip "We can't check for FIFOs", 2 unless defined &Fcntl::S_ISFIFO;
+ skip "No pipes", 2 unless defined $Config{d_pipe};
+ pipe my ($rh, $wh)
+ or skip "Couldn't create a pipe: $!", 2;
+ skip "Built-in -p doesn't detect a pipe", 2 unless -p $rh;
+
+ my $pstat = File::stat::stat($rh);
+ ok(!-p($stat), "-p should be false on a file");
+ ok(-p($pstat), "check -p detects a pipe");
+}
# Testing pretty much anything else is unportable.
+
+done_testing;
+
+# Local variables:
+# cperl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# ex: set ts=8 sts=4 sw=4 et:
diff --git a/gnu/usr.bin/perl/lib/FileHandle.t b/gnu/usr.bin/perl/lib/FileHandle.t
index ddbd94474ee..aeae754b0e0 100644
--- a/gnu/usr.bin/perl/lib/FileHandle.t
+++ b/gnu/usr.bin/perl/lib/FileHandle.t
@@ -8,10 +8,6 @@ BEGIN {
print "1..0\n";
exit 0;
}
- if ($^O eq 'mpeix') {
- print "1..0 # Skip: broken on MPE/iX\n";
- exit 0;
- }
}
use FileHandle;
diff --git a/gnu/usr.bin/perl/lib/Internals.t b/gnu/usr.bin/perl/lib/Internals.t
index d3fce9c1c81..8af04af1bd5 100644
--- a/gnu/usr.bin/perl/lib/Internals.t
+++ b/gnu/usr.bin/perl/lib/Internals.t
@@ -7,7 +7,7 @@ BEGIN {
}
}
-use Test::More tests => 78;
+use Test::More tests => 82;
my $ro_err = qr/^Modification of a read-only value attempted/;
@@ -173,4 +173,18 @@ is( Internals::SvREFCNT($foo, $big_count), $big_count,
"set reference count unsigned");
is( Internals::SvREFCNT($foo), $big_count, "reference count unsigned");
-Internals::SvREFCNT($foo, 1 );
+{
+ my @arr = Internals::SvREFCNT($foo, 1 );
+ is(scalar(@arr), 1, "SvREFCNT always returns only 1 item");
+}
+
+{
+ my $usage = 'Usage: Internals::SvREFCNT(SCALAR[, REFCOUNT])';
+ eval { &Internals::SvREFCNT();};
+ like($@, qr/\Q$usage\E/);
+ $foo = \"perl";
+ eval { &Internals::SvREFCNT($foo, 0..1);};
+ like($@, qr/\Q$usage\E/);
+ eval { &Internals::SvREFCNT($foo, 0..3);};
+ like($@, qr/\Q$usage\E/);
+}
diff --git a/gnu/usr.bin/perl/lib/Tie/Handle/stdhandle.t b/gnu/usr.bin/perl/lib/Tie/Handle/stdhandle.t
index 13a8255155f..b1ae7c455b5 100644
--- a/gnu/usr.bin/perl/lib/Tie/Handle/stdhandle.t
+++ b/gnu/usr.bin/perl/lib/Tie/Handle/stdhandle.t
@@ -10,7 +10,7 @@ tie *tst,Tie::StdHandle;
$f = 'tst';
-print "1..13\n";
+print "1..14\n";
# my $file tests
@@ -42,6 +42,10 @@ print "ok 11\n";
$b = <$f>;
print "not " unless eof($f);
print "ok 12\n";
-print "not " unless close($f);
+seek($f,0,0);
+read($f,($b='scrinches'),4,4); # with offset
+print "'$b' not " unless $b eq 'scriSome';
print "ok 13\n";
+print "not " unless close($f);
+print "ok 14\n";
unlink("afile");
diff --git a/gnu/usr.bin/perl/lib/Tie/StdHandle.pm b/gnu/usr.bin/perl/lib/Tie/StdHandle.pm
index 3a1a3db4788..9192b2e5ee3 100644
--- a/gnu/usr.bin/perl/lib/Tie/StdHandle.pm
+++ b/gnu/usr.bin/perl/lib/Tie/StdHandle.pm
@@ -5,7 +5,7 @@ use strict;
use Tie::Handle;
use vars qw(@ISA $VERSION);
@ISA = 'Tie::Handle';
-$VERSION = '4.2';
+$VERSION = '4.3';
=head1 NAME
@@ -57,7 +57,7 @@ sub OPEN
@_ == 2 ? open($_[0], $_[1]) : open($_[0], $_[1], $_[2]);
}
-sub READ { read($_[0],$_[1],$_[2]) }
+sub READ { &CORE::read(shift, \shift, @_) }
sub READLINE { my $fh = $_[0]; <$fh> }
sub GETC { getc($_[0]) }
diff --git a/gnu/usr.bin/perl/lib/Unicode/UCD.pm b/gnu/usr.bin/perl/lib/Unicode/UCD.pm
index 724fb62785b..9c3dd7c7105 100644
--- a/gnu/usr.bin/perl/lib/Unicode/UCD.pm
+++ b/gnu/usr.bin/perl/lib/Unicode/UCD.pm
@@ -4,11 +4,8 @@ use strict;
use warnings;
no warnings 'surrogate'; # surrogates can be inputs to this
use charnames ();
-use Unicode::Normalize qw(getCombinClass NFD);
-our $VERSION = '0.43';
-
-use Storable qw(dclone);
+our $VERSION = '0.51';
require Exporter;
@@ -20,7 +17,7 @@ our @EXPORT_OK = qw(charinfo
charinrange
general_categories bidi_types
compexcl
- casefold casespec
+ casefold all_casefolds casespec
namedseq
num
prop_aliases
@@ -44,6 +41,9 @@ Unicode::UCD - Unicode character database
use Unicode::UCD 'casefold';
my $casefold = casefold(0xFB00);
+ use Unicode::UCD 'all_casefolds';
+ my $all_casefolds_ref = all_casefolds();
+
use Unicode::UCD 'casespec';
my $casespec = casespec(0xFB00);
@@ -104,8 +104,16 @@ a decimal or a hexadecimal scalar designating a Unicode code point, or C<U+>
followed by hexadecimals designating a Unicode code point. In other words, if
you want a code point to be interpreted as a hexadecimal number, you must
prefix it with either C<0x> or C<U+>, because a string like e.g. C<123> will be
-interpreted as a decimal code point. Note that the largest code point in
-Unicode is U+10FFFF.
+interpreted as a decimal code point.
+
+Examples:
+
+ 223 # Decimal 223
+ 0223 # Hexadecimal 223 (= 547 decimal)
+ 0xDF # Hexadecimal DF (= 223 decimal
+ U+DF # Hexadecimal DF
+
+Note that the largest code point in Unicode is U+10FFFF.
=cut
@@ -114,6 +122,7 @@ my $VERSIONFH;
my $CASEFOLDFH;
my $CASESPECFH;
my $NAMEDSEQFH;
+my $v_unicode_version; # v-string.
sub openunicode {
my ($rfh, @path) = @_;
@@ -132,6 +141,35 @@ sub openunicode {
return $f;
}
+sub _dclone ($) { # Use Storable::dclone if available; otherwise emulate it.
+
+ use if defined &DynaLoader::boot_DynaLoader, Storable => qw(dclone);
+
+ return dclone(shift) if defined &dclone;
+
+ my $arg = shift;
+ my $type = ref $arg;
+ return $arg unless $type; # No deep cloning needed for scalars
+
+ if ($type eq 'ARRAY') {
+ my @return;
+ foreach my $element (@$arg) {
+ push @return, &_dclone($element);
+ }
+ return \@return;
+ }
+ elsif ($type eq 'HASH') {
+ my %return;
+ foreach my $key (keys %$arg) {
+ $return{$key} = &_dclone($arg->{$key});
+ }
+ return \%return;
+ }
+ else {
+ croak "_dclone can't handle " . $type;
+ }
+}
+
=head2 B<charinfo()>
use Unicode::UCD 'charinfo';
@@ -303,6 +341,7 @@ my %SIMPLE_LOWER;
my %SIMPLE_TITLE;
my %SIMPLE_UPPER;
my %UNICODE_1_NAMES;
+my %ISO_COMMENT;
sub charinfo {
@@ -315,6 +354,9 @@ sub charinfo {
use feature 'unicode_strings';
+ # Will fail if called under minitest
+ use if defined &DynaLoader::boot_DynaLoader, "Unicode::Normalize" => qw(getCombinClass NFD);
+
my $arg = shift;
my $code = _getcode($arg);
croak __PACKAGE__, "::charinfo: unknown code '$arg'" unless defined $code;
@@ -353,7 +395,8 @@ sub charinfo {
# Having no decomposition implies an empty field; otherwise, all but
# "Canonical" imply a compatible decomposition, and the type is prefixed
# to that, as it is in UnicodeData.txt
- if ($char =~ /\p{Block=Hangul_Syllables}/) {
+ UnicodeVersion() unless defined $v_unicode_version;
+ if ($v_unicode_version ge v2.0.0 && $char =~ /\p{Block=Hangul_Syllables}/) {
# The code points of the decomposition are output in standard Unicode
# hex format, separated by blanks.
$prop{'decomposition'} = join " ", map { sprintf("%04X", $_)}
@@ -400,9 +443,16 @@ sub charinfo {
%UNICODE_1_NAMES =_read_table("To/Na1.pl", "use_hash") unless %UNICODE_1_NAMES;
$prop{'unicode10'} = $UNICODE_1_NAMES{$code} // "";
- # This is true starting in 6.0, but, num() also requires 6.0, so
- # don't need to test for version again here.
- $prop{'comment'} = "";
+ UnicodeVersion() unless defined $v_unicode_version;
+ if ($v_unicode_version ge v6.0.0) {
+ $prop{'comment'} = "";
+ }
+ else {
+ %ISO_COMMENT = _read_table("To/Isc.pl", "use_hash") unless %ISO_COMMENT;
+ $prop{'comment'} = (defined $ISO_COMMENT{$code})
+ ? $ISO_COMMENT{$code}
+ : "";
+ }
%SIMPLE_UPPER = _read_table("To/Uc.pl", "use_hash") unless %SIMPLE_UPPER;
$prop{'upper'} = (defined $SIMPLE_UPPER{$code})
@@ -536,7 +586,8 @@ With a L</code point argument> charblock() returns the I<block> the code point
belongs to, e.g. C<Basic Latin>. The old-style block name is returned (see
L</Old-style versus new-style block names>).
If the code point is unassigned, this returns the block it would belong to if
-it were assigned.
+it were assigned. (If the Unicode version being used is so early as to not
+have blocks, all code points are considered to be in C<No_Block>.)
See also L</Blocks versus Scripts>.
@@ -562,7 +613,13 @@ sub _charblocks {
# Can't read from the mktables table because it loses the hyphens in the
# original.
unless (@BLOCKS) {
- if (openunicode(\$BLOCKSFH, "Blocks.txt")) {
+ UnicodeVersion() unless defined $v_unicode_version;
+ if ($v_unicode_version lt v2.0.0) {
+ my $subrange = [ 0, 0x10FFFF, 'No_Block' ];
+ push @BLOCKS, $subrange;
+ push @{$BLOCKS{'No_Block'}}, $subrange;
+ }
+ elsif (openunicode(\$BLOCKSFH, "Blocks.txt")) {
local $_;
local $/ = "\n";
while (<$BLOCKSFH>) {
@@ -591,7 +648,7 @@ sub charblock {
return 'No_Block';
}
elsif (exists $BLOCKS{$arg}) {
- return dclone $BLOCKS{$arg};
+ return _dclone $BLOCKS{$arg};
}
}
@@ -607,7 +664,8 @@ sub charblock {
With a L</code point argument> charscript() returns the I<script> the
code point belongs to, e.g. C<Latin>, C<Greek>, C<Han>.
-If the code point is unassigned, it returns C<"Unknown">.
+If the code point is unassigned or the Unicode version being used is so early
+that it doesn't have scripts, this function returns C<"Unknown">.
If supplied with an argument that can't be a code point, charscript() tries
to do the opposite and interpret the argument as a script name. The
@@ -624,7 +682,15 @@ my @SCRIPTS;
my %SCRIPTS;
sub _charscripts {
- @SCRIPTS =_read_table("To/Sc.pl") unless @SCRIPTS;
+ unless (@SCRIPTS) {
+ UnicodeVersion() unless defined $v_unicode_version;
+ if ($v_unicode_version lt v3.1.0) {
+ push @SCRIPTS, [ 0, 0x10FFFF, 'Unknown' ];
+ }
+ else {
+ @SCRIPTS =_read_table("To/Sc.pl");
+ }
+ }
foreach my $entry (@SCRIPTS) {
$entry->[2] =~ s/(_\w)/\L$1/g; # Preserve old-style casing
push @{$SCRIPTS{$entry->[2]}}, $entry;
@@ -643,7 +709,7 @@ sub charscript {
return $result if defined $result;
return $utf8::SwashInfo{'ToSc'}{'missing'};
} elsif (exists $SCRIPTS{$arg}) {
- return dclone $SCRIPTS{$arg};
+ return _dclone $SCRIPTS{$arg};
}
return;
@@ -670,7 +736,7 @@ See also L</Blocks versus Scripts>.
sub charblocks {
_charblocks() unless %BLOCKS;
- return dclone \%BLOCKS;
+ return _dclone \%BLOCKS;
}
=head2 B<charscripts()>
@@ -692,7 +758,7 @@ See also L</Blocks versus Scripts>.
sub charscripts {
_charscripts() unless %SCRIPTS;
- return dclone \%SCRIPTS;
+ return _dclone \%SCRIPTS;
}
=head2 B<charinrange()>
@@ -752,7 +818,7 @@ my %GENERAL_CATEGORIES =
);
sub general_categories {
- return dclone \%GENERAL_CATEGORIES;
+ return _dclone \%GENERAL_CATEGORIES;
}
=head2 B<general_categories()>
@@ -820,7 +886,7 @@ the bidi type name.
=cut
sub bidi_types {
- return dclone \%BIDI_TYPES;
+ return _dclone \%BIDI_TYPES;
}
=head2 B<compexcl()>
@@ -829,7 +895,9 @@ sub bidi_types {
my $compexcl = compexcl(0x09dc);
-This routine is included for backwards compatibility, but as of Perl 5.12, for
+This routine returns C<undef> if the Unicode version being used is so early
+that it doesn't have this property. It is included for backwards
+compatibility, but as of Perl 5.12 and more modern Unicode versions, for
most purposes it is probably more convenient to use one of the following
instead:
@@ -864,6 +932,9 @@ sub compexcl {
croak __PACKAGE__, "::compexcl: unknown code '$arg'"
unless defined $code;
+ UnicodeVersion() unless defined $v_unicode_version;
+ return if $v_unicode_version lt v3.0.0;
+
no warnings "non_unicode"; # So works on non-Unicode code points
return chr($code) =~ /\p{Composition_Exclusion}/;
}
@@ -943,12 +1014,12 @@ dotless lowercase i:
=over
-=item B<*> If you use this C<I> mapping
+=item Z<>B<*> If you use this C<I> mapping
the result is case-insensitive,
but dotless and dotted I's are not distinguished
-=item B<*> If you exclude this C<I> mapping
+=item Z<>B<*> If you exclude this C<I> mapping
the result is not fully case-insensitive, but
dotless and dotted I's are distinguished
@@ -997,54 +1068,88 @@ L<http://www.unicode.org/unicode/reports/tr21>
my %CASEFOLD;
sub _casefold {
- unless (%CASEFOLD) {
- if (openunicode(\$CASEFOLDFH, "CaseFolding.txt")) {
- local $_;
- local $/ = "\n";
- while (<$CASEFOLDFH>) {
- if (/^([0-9A-F]+); ([CFIST]); ([0-9A-F]+(?: [0-9A-F]+)*);/) {
- my $code = hex($1);
- $CASEFOLD{$code}{'code'} = $1;
- $CASEFOLD{$code}{'turkic'} = "" unless
- defined $CASEFOLD{$code}{'turkic'};
- if ($2 eq 'C' || $2 eq 'I') { # 'I' is only on 3.1 and
- # earlier Unicodes
- # Both entries there (I
- # only checked 3.1) are
- # the same as C, and
- # there are no other
- # entries for those
- # codepoints, so treat
- # as if C, but override
- # the turkic one for
- # 'I'.
- $CASEFOLD{$code}{'status'} = $2;
- $CASEFOLD{$code}{'full'} = $CASEFOLD{$code}{'simple'} =
- $CASEFOLD{$code}{'mapping'} = $3;
- $CASEFOLD{$code}{'turkic'} = $3 if $2 eq 'I';
- } elsif ($2 eq 'F') {
- $CASEFOLD{$code}{'full'} = $3;
- unless (defined $CASEFOLD{$code}{'simple'}) {
- $CASEFOLD{$code}{'simple'} = "";
- $CASEFOLD{$code}{'mapping'} = $3;
- $CASEFOLD{$code}{'status'} = $2;
- }
- } elsif ($2 eq 'S') {
+ unless (%CASEFOLD) { # Populate the hash
+ my ($full_invlist_ref, $full_invmap_ref, undef, $default)
+ = prop_invmap('Case_Folding');
+
+ # Use the recipe given in the prop_invmap() pod to convert the
+ # inversion map into the hash.
+ for my $i (0 .. @$full_invlist_ref - 1 - 1) {
+ next if $full_invmap_ref->[$i] == $default;
+ my $adjust = -1;
+ for my $j ($full_invlist_ref->[$i] .. $full_invlist_ref->[$i+1] -1) {
+ $adjust++;
+ if (! ref $full_invmap_ref->[$i]) {
+
+ # This is a single character mapping
+ $CASEFOLD{$j}{'status'} = 'C';
+ $CASEFOLD{$j}{'simple'}
+ = $CASEFOLD{$j}{'full'}
+ = $CASEFOLD{$j}{'mapping'}
+ = sprintf("%04X", $full_invmap_ref->[$i] + $adjust);
+ $CASEFOLD{$j}{'code'} = sprintf("%04X", $j);
+ $CASEFOLD{$j}{'turkic'} = "";
+ }
+ else { # prop_invmap ensures that $adjust is 0 for a ref
+ $CASEFOLD{$j}{'status'} = 'F';
+ $CASEFOLD{$j}{'full'}
+ = $CASEFOLD{$j}{'mapping'}
+ = join " ", map { sprintf "%04X", $_ }
+ @{$full_invmap_ref->[$i]};
+ $CASEFOLD{$j}{'simple'} = "";
+ $CASEFOLD{$j}{'code'} = sprintf("%04X", $j);
+ $CASEFOLD{$j}{'turkic'} = "";
+ }
+ }
+ }
+ # We have filled in the full mappings above, assuming there were no
+ # simple ones for the ones with multi-character maps. Now, we find
+ # and fix the cases where that assumption was false.
+ (my ($simple_invlist_ref, $simple_invmap_ref, undef), $default)
+ = prop_invmap('Simple_Case_Folding');
+ for my $i (0 .. @$simple_invlist_ref - 1 - 1) {
+ next if $simple_invmap_ref->[$i] == $default;
+ my $adjust = -1;
+ for my $j ($simple_invlist_ref->[$i]
+ .. $simple_invlist_ref->[$i+1] -1)
+ {
+ $adjust++;
+ next if $CASEFOLD{$j}{'status'} eq 'C';
+ $CASEFOLD{$j}{'status'} = 'S';
+ $CASEFOLD{$j}{'simple'}
+ = $CASEFOLD{$j}{'mapping'}
+ = sprintf("%04X", $simple_invmap_ref->[$i] + $adjust);
+ $CASEFOLD{$j}{'code'} = sprintf("%04X", $j);
+ $CASEFOLD{$j}{'turkic'} = "";
+ }
+ }
- # There can't be a simple without a full, and simple
- # overrides all but full
+ # We hard-code in the turkish rules
+ UnicodeVersion() unless defined $v_unicode_version;
+ if ($v_unicode_version ge v3.2.0) {
- $CASEFOLD{$code}{'simple'} = $3;
- $CASEFOLD{$code}{'mapping'} = $3;
- $CASEFOLD{$code}{'status'} = $2;
- } elsif ($2 eq 'T') {
- $CASEFOLD{$code}{'turkic'} = $3;
- } # else can't happen because only [CIFST] are possible
- }
- }
- close($CASEFOLDFH);
- }
+ # These two code points should already have regular entries, so
+ # just fill in the turkish fields
+ $CASEFOLD{ord('I')}{'turkic'} = '0131';
+ $CASEFOLD{0x130}{'turkic'} = sprintf "%04X", ord('i');
+ }
+ elsif ($v_unicode_version ge v3.1.0) {
+
+ # These two code points don't have entries otherwise.
+ $CASEFOLD{0x130}{'code'} = '0130';
+ $CASEFOLD{0x131}{'code'} = '0131';
+ $CASEFOLD{0x130}{'status'} = $CASEFOLD{0x131}{'status'} = 'I';
+ $CASEFOLD{0x130}{'turkic'}
+ = $CASEFOLD{0x130}{'mapping'}
+ = $CASEFOLD{0x130}{'full'}
+ = $CASEFOLD{0x130}{'simple'}
+ = $CASEFOLD{0x131}{'turkic'}
+ = $CASEFOLD{0x131}{'mapping'}
+ = $CASEFOLD{0x131}{'full'}
+ = $CASEFOLD{0x131}{'simple'}
+ = sprintf "%04X", ord('i');
+ }
}
}
@@ -1059,6 +1164,55 @@ sub casefold {
return $CASEFOLD{$code};
}
+=head2 B<all_casefolds()>
+
+
+ use Unicode::UCD 'all_casefolds';
+
+ my $all_folds_ref = all_casefolds();
+ foreach my $char_with_casefold (sort { $a <=> $b }
+ keys %$all_folds_ref)
+ {
+ printf "%04X:", $char_with_casefold;
+ my $casefold = $all_folds_ref->{$char_with_casefold};
+
+ # Get folds for $char_with_casefold
+
+ my @full_fold_hex = split / /, $casefold->{'full'};
+ my $full_fold_string =
+ join "", map {chr(hex($_))} @full_fold_hex;
+ print " full=", join " ", @full_fold_hex;
+ my @turkic_fold_hex =
+ split / /, ($casefold->{'turkic'} ne "")
+ ? $casefold->{'turkic'}
+ : $casefold->{'full'};
+ my $turkic_fold_string =
+ join "", map {chr(hex($_))} @turkic_fold_hex;
+ print "; turkic=", join " ", @turkic_fold_hex;
+ if (defined $casefold && $casefold->{'simple'} ne "") {
+ my $simple_fold_hex = $casefold->{'simple'};
+ my $simple_fold_string = chr(hex($simple_fold_hex));
+ print "; simple=$simple_fold_hex";
+ }
+ print "\n";
+ }
+
+This returns all the case foldings in the current version of Unicode in the
+form of a reference to a hash. Each key to the hash is the decimal
+representation of a Unicode character that has a casefold to other than
+itself. The casefold of a semi-colon is itself, so it isn't in the hash;
+likewise for a lowercase "a", but there is an entry for a capital "A". The
+hash value for each key is another hash, identical to what is returned by
+L</casefold()> if called with that code point as its argument. So the value
+C<< all_casefolds()->{ord("A")}' >> is equivalent to C<casefold(ord("A"))>;
+
+=cut
+
+sub all_casefolds () {
+ _casefold() unless %CASEFOLD;
+ return _dclone \%CASEFOLD;
+}
+
=head2 B<casespec()>
use Unicode::UCD 'casespec';
@@ -1161,15 +1315,25 @@ my %CASESPEC;
sub _casespec {
unless (%CASESPEC) {
- if (openunicode(\$CASESPECFH, "SpecialCasing.txt")) {
+ UnicodeVersion() unless defined $v_unicode_version;
+ if ($v_unicode_version lt v2.1.8) {
+ %CASESPEC = {};
+ }
+ elsif (openunicode(\$CASESPECFH, "SpecialCasing.txt")) {
local $_;
local $/ = "\n";
while (<$CASESPECFH>) {
if (/^([0-9A-F]+); ([0-9A-F]+(?: [0-9A-F]+)*)?; ([0-9A-F]+(?: [0-9A-F]+)*)?; ([0-9A-F]+(?: [0-9A-F]+)*)?; (\w+(?: \w+)*)?/) {
+
my ($hexcode, $lower, $title, $upper, $condition) =
($1, $2, $3, $4, $5);
my $code = hex($hexcode);
- if (exists $CASESPEC{$code}) {
+
+ # In 2.1.8, there were duplicate entries; ignore all but
+ # the first one -- there were no conditions in the file
+ # anyway.
+ if (exists $CASESPEC{$code} && $v_unicode_version ne v2.1.8)
+ {
if (exists $CASESPEC{$code}->{code}) {
my ($oldlower,
$oldtitle,
@@ -1222,7 +1386,7 @@ sub casespec {
_casespec() unless %CASESPEC;
- return ref $CASESPEC{$code} ? dclone $CASESPEC{$code} : $CASESPEC{$code};
+ return ref $CASESPEC{$code} ? _dclone $CASESPEC{$code} : $CASESPEC{$code};
}
=head2 B<namedseq()>
@@ -1307,16 +1471,6 @@ sub namedseq {
my %NUMERIC;
sub _numeric {
-
- # Unicode 6.0 instituted the rule that only digits in a consecutive
- # block of 10 would be considered decimal digits. Before that, the only
- # problematic code point that I'm (khw) aware of is U+019DA, NEW TAI LUE
- # THAM DIGIT ONE, which is an alternate form of U+019D1, NEW TAI LUE DIGIT
- # ONE. The code could be modified to handle that, but not bothering, as
- # in TUS 6.0, U+19DA was changed to Nt=Di.
- if ((pack "C*", split /\./, UnicodeVersion()) lt 6.0.0) {
- croak __PACKAGE__, "::num requires Unicode 6.0 or greater"
- }
my @numbers = _read_table("To/Nv.pl");
foreach my $entry (@numbers) {
my ($start, $end, $value) = @$entry;
@@ -1427,14 +1581,43 @@ sub num {
return if $string =~ /\D/;
my $first_ord = ord(substr($string, 0, 1));
my $value = $NUMERIC{$first_ord};
+
+ # To be a valid decimal number, it should be in a block of 10 consecutive
+ # characters, whose values are 0, 1, 2, ... 9. Therefore this digit's
+ # value is its offset in that block from the character that means zero.
my $zero_ord = $first_ord - $value;
+ # Unicode 6.0 instituted the rule that only digits in a consecutive
+ # block of 10 would be considered decimal digits. If this is an earlier
+ # release, we verify that this first character is a member of such a
+ # block. That is, that the block of characters surrounding this one
+ # consists of all \d characters whose numeric values are the expected
+ # ones.
+ UnicodeVersion() unless defined $v_unicode_version;
+ if ($v_unicode_version lt v6.0.0) {
+ for my $i (0 .. 9) {
+ my $ord = $zero_ord + $i;
+ return unless chr($ord) =~ /\d/;
+ my $numeric = $NUMERIC{$ord};
+ return unless defined $numeric;
+ return unless $numeric == $i;
+ }
+ }
+
for my $i (1 .. $length -1) {
+
+ # Here we know either by verifying, or by fact of the first character
+ # being a \d in Unicode 6.0 or later, that any character between the
+ # character that means 0, and 9 positions above it must be \d, and
+ # must have its value correspond to its offset from the zero. Any
+ # characters outside these 10 do not form a legal number for this
+ # function.
my $ord = ord(substr($string, $i, 1));
my $digit = $ord - $zero_ord;
return unless $digit >= 0 && $digit <= 9;
$value = $value * 10 + $digit;
}
+
return $value;
}
@@ -1676,7 +1859,7 @@ sub prop_aliases ($) {
# The full name is in element 1.
return $list_ref->[1] unless wantarray;
- return @{dclone $list_ref};
+ return @{_dclone $list_ref};
}
=pod
@@ -1815,7 +1998,7 @@ sub prop_value_aliases ($$) {
# The full name is in element 1.
return $list_ref->[1] unless wantarray;
- return @{dclone $list_ref};
+ return @{_dclone $list_ref};
}
return $list_ref->[0] unless wantarray;
@@ -1842,7 +2025,8 @@ by the input parameter string:
prints:
0, 1114112
-An empty list is returned if the input is unknown; the number of elements in
+If the input is unknown C<undef> is returned in scalar context; an empty-list
+in list context. If the input is known, the number of elements in
the list is returned if called in scalar context.
L<perluniprops|perluniprops/Properties accessible through \p{} and \P{}> gives
@@ -1952,8 +2136,12 @@ properties, and will return C<undef> if called with one of those.
our %loose_defaults;
our $MAX_UNICODE_CODEPOINT;
-sub prop_invlist ($) {
+sub prop_invlist ($;$) {
my $prop = $_[0];
+
+ # Undocumented way to get at Perl internal properties
+ my $internal_ok = defined $_[1] && $_[1] eq '_perl_core_internal_ok';
+
return if ! defined $prop;
require "utf8_heavy.pl";
@@ -1970,7 +2158,7 @@ sub prop_invlist ($) {
|| ref $swash eq ""
|| $swash->{'BITS'} != 1
|| $swash->{'USER_DEFINED'}
- || $prop =~ /^\s*_/;
+ || (! $internal_ok && $prop =~ /^\s*_/);
if ($swash->{'EXTRAS'}) {
carp __PACKAGE__, "::prop_invlist: swash returned for $prop unexpectedly has EXTRAS magic";
@@ -2075,7 +2263,8 @@ sub prop_invlist ($) {
sub _search_invlist {
# Find the range in the inversion list which contains a code point; that
- # is, find i such that l[i] <= code_point < l[i+1]
+ # is, find i such that l[i] <= code_point < l[i+1]. Returns undef if no
+ # such i.
# If this is ever made public, could use to speed up .t specials. Would
# need to use code point argument, as in other functions in this pm
@@ -2085,7 +2274,10 @@ sub _search_invlist {
# Verify non-neg numeric XXX
my $max_element = @$list_ref - 1;
- return if ! $max_element < 0; # Undef if list is empty.
+
+ # Return undef if list is empty or requested item is before the first element.
+ return if $max_element < 0;
+ return if $code_point < $list_ref->[0];
# Short cut something at the far-end of the table. This also allows us to
# refer to element [$i+1] without fear of being out-of-bounds in the loop
@@ -2431,7 +2623,7 @@ means that all the elements of the map array are either rational numbers or
the string C<"NaN">, meaning "Not a Number". A rational number is either an
integer, or two integers separated by a solidus (C<"/">). The second integer
represents the denominator of the division implied by the solidus, and is
-actually always positive, so it is guaranteed not to be 0 and to not to be
+actually always positive, so it is guaranteed not to be 0 and to not be
signed. When the element is a plain integer (without the
solidus), it may need to be adjusted to get the correct value by adding the
offset, just as other C<"a"> properties. No adjustment is needed for
@@ -2443,7 +2635,7 @@ can use something like this:
my ($invlist_ref, $invmap_ref, $format) = prop_invmap($property);
if ($format && $format eq "ar") {
- map { $_ = eval $_ } @$invmap_ref;
+ map { $_ = eval $_ if $_ ne 'NaN' } @$map_ref;
}
Here's some entries from the output of the property "Nv", which has format
@@ -2665,7 +2857,7 @@ RETRY:
$prop = "age";
goto RETRY;
}
- elsif ($second_try =~ / ^ s ( cf | [ltu] c ) $ /x) {
+ elsif ($second_try =~ / ^ s ( cf | fc | [ltu] c ) $ /x) {
# These properties use just the LIST part of the full mapping,
# which includes the simple maps that are otherwise overridden by
@@ -2674,7 +2866,11 @@ RETRY:
$overrides = -1;
# The full name is the simple name stripped of its initial 's'
- $prop = $second_try =~ s/^s//r;
+ $prop = $1;
+
+ # .. except for this case
+ $prop = 'cf' if $prop eq 'fc';
+
goto RETRY;
}
elsif ($second_try eq "blk") {
@@ -2733,7 +2929,7 @@ RETRY:
my ($hex_code_point, $name) = split "\t", $line;
# Weeds out all comments, blank lines, and named sequences
- next if $hex_code_point =~ /\P{ASCII_HEX_DIGIT}/;
+ next if $hex_code_point =~ /[^[:xdigit:]]/a;
my $code_point = hex $hex_code_point;
@@ -2791,8 +2987,11 @@ RETRY:
$decomps{'LIST'} = "";
# This property has one special range not in the file: for the
- # hangul syllables
- my $done_hangul = 0; # Have we done the hangul range.
+ # hangul syllables. But not in Unicode version 1.
+ UnicodeVersion() unless defined $v_unicode_version;
+ my $done_hangul = ($v_unicode_version lt v2.0.0)
+ ? 1
+ : 0; # Have we done the hangul range ?
foreach my $line (split "\n", $original) {
my ($hex_lower, $hex_upper, $type_and_map) = split "\t", $line;
my $code_point = hex $hex_lower;
@@ -2822,6 +3021,12 @@ RETRY:
: "<hangul syllable>";
}
+ if ($value =~ / / && $hex_upper ne "" && $hex_upper ne $hex_lower) {
+ $line = sprintf("%04X\t%s\t%s", hex($hex_lower) + 1, $hex_upper, $value);
+ $hex_upper = "";
+ $redo = 1;
+ }
+
# And append this to our constructed LIST.
$decomps{'LIST'} .= "$hex_lower\t$hex_upper\t$value\n";
@@ -2863,8 +3068,8 @@ RETRY:
}
else {
- # These should all single-element ranges.
- croak __PACKAGE__, "::prop_invmap: Not expecting a mapping with multiple code points in a multi-element range, $ranges[$i]" if $hex_end ne "";
+ # These should all be single-element ranges.
+ croak __PACKAGE__, "::prop_invmap: Not expecting a mapping with multiple code points in a multi-element range, $ranges[$i]" if $hex_end ne "" && $hex_end ne $hex_begin;
# Convert them to decimal, as that's what's expected.
$list .= "$hex_begin\t\t"
@@ -3334,6 +3539,7 @@ sub UnicodeVersion {
croak __PACKAGE__, "::VERSION: strange version '$UNICODEVERSION'"
unless $UNICODEVERSION =~ /^\d+(?:\.\d+)+$/;
}
+ $v_unicode_version = pack "C*", split /\./, $UNICODEVERSION;
return $UNICODEVERSION;
}
@@ -3342,7 +3548,8 @@ sub UnicodeVersion {
The difference between a block and a script is that scripts are closer
to the linguistic notion of a set of code points required to present
languages, while block is more of an artifact of the Unicode code point
-numbering and separation into blocks of (mostly) 256 code points.
+numbering and separation into blocks of consecutive code points (so far the
+size of a block is some multiple of 16, like 128 or 256).
For example the Latin B<script> is spread over several B<blocks>, such
as C<Basic Latin>, C<Latin 1 Supplement>, C<Latin Extended-A>, and
diff --git a/gnu/usr.bin/perl/lib/Unicode/UCD.t b/gnu/usr.bin/perl/lib/Unicode/UCD.t
index 2e5a741f0f9..e070defbeae 100644
--- a/gnu/usr.bin/perl/lib/Unicode/UCD.t
+++ b/gnu/usr.bin/perl/lib/Unicode/UCD.t
@@ -19,7 +19,8 @@ use Test::More;
use Unicode::UCD 'charinfo';
-$/ = 7;
+my $input_record_separator = 7; # Make sure Unicode::UCD isn't affected by
+$/ = $input_record_separator; # setting this.
my $charinfo;
@@ -342,7 +343,7 @@ is($bt->{AL}, 'Right-to-Left Arabic', 'AL is Right-to-Left Arabic');
# If this fails, then maybe one should look at the Unicode changes to see
# what else might need to be updated.
-is(Unicode::UCD::UnicodeVersion, '6.1.0', 'UnicodeVersion');
+is(Unicode::UCD::UnicodeVersion, '6.2.0', 'UnicodeVersion');
use Unicode::UCD qw(compexcl);
@@ -373,9 +374,9 @@ is($casefold->{full}, '0073 0073', 'casefold 0xDF full');
is($casefold->{simple}, "", 'casefold 0xDF simple');
is($casefold->{turkic}, "", 'casefold 0xDF turkic');
-# Do different tests depending on if version <= 3.1, or not.
-(my $version = Unicode::UCD::UnicodeVersion) =~ /^(\d+)\.(\d+)/;
-if (defined $1 && ($1 <= 2 || $1 == 3 && defined $2 && $2 <= 1)) {
+# Do different tests depending on if version < 3.2, or not.
+my $v_unicode_version = pack "C*", split /\./, Unicode::UCD::UnicodeVersion();
+if ($v_unicode_version lt v3.2.0) {
$casefold = casefold(0x130);
is($casefold->{code}, '0130', 'casefold 0x130 code');
@@ -469,11 +470,13 @@ is(Unicode::UCD::_getcode('U+123x'), undef, "_getcode(x123)");
{
my $r1 = charscript('Latin');
- my $n1 = @$r1;
- is($n1, 30, "number of ranges in Latin script (Unicode 6.1.0)");
- shift @$r1 while @$r1;
- my $r2 = charscript('Latin');
- is(@$r2, $n1, "modifying results should not mess up internal caches");
+ if (ok(defined $r1, "Found Latin script")) {
+ my $n1 = @$r1;
+ is($n1, 30, "number of ranges in Latin script (Unicode 6.1.0)");
+ shift @$r1 while @$r1;
+ my $r2 = charscript('Latin');
+ is(@$r2, $n1, "modifying results should not mess up internal caches");
+ }
}
{
@@ -550,14 +553,18 @@ is_deeply(\@list,
], "prop_aliases('perldecimaldigit') returns Perl_Decimal_Digit as both short and full names");
# Get the official Unicode property name synonyms and test them.
+
+SKIP: {
+skip "PropertyAliases.txt is not in this Unicode version", 1 if $v_unicode_version lt v3.2.0;
open my $props, "<", "../lib/unicore/PropertyAliases.txt"
or die "Can't open Unicode PropertyAliases.txt";
-$/ = "\n";
+local $/ = "\n";
while (<$props>) {
s/\s*#.*//; # Remove comments
next if /^\s* $/x; # Ignore empty and comment lines
chomp;
+ local $/ = $input_record_separator;
my $count = 0; # 0th field in line is short name; 1th is long name
my $short_name;
my $full_name;
@@ -615,6 +622,7 @@ while (<$props>) {
$count++;
}
}
+} # End of SKIP block
# Now test anything we can find that wasn't covered by the tests of the
# official properties. We have no way of knowing if mktables omitted a Perl
@@ -701,15 +709,20 @@ is(prop_value_aliases("gc", "isC"), undef, "prop_value_aliases('gc', 'isC') retu
# correct.
my %pva_tested; # List of things already tested.
+
+SKIP: {
+skip "PropValueAliases.txt is not in this Unicode version", 1 if $v_unicode_version lt v3.2.0;
open my $propvalues, "<", "../lib/unicore/PropValueAliases.txt"
or die "Can't open Unicode PropValueAliases.txt";
+local $/ = "\n";
while (<$propvalues>) {
s/\s*#.*//; # Remove comments
next if /^\s* $/x; # Ignore empty and comment lines
chomp;
+ local $/ = $input_record_separator;
# Fix typo in official input file
- s/CCC133/CCC132/g if $version eq "6.1.0";
+ s/CCC133/CCC132/g if $v_unicode_version eq v6.1.0;
my @fields = split /\s*;\s*/; # Fields are separated by semi-colons
my $prop = shift @fields; # 0th field is the property,
@@ -801,6 +814,7 @@ while (<$propvalues>) {
$count++;
}
}
+} # End of SKIP block
# And test as best we can, the non-official pva's that mktables generates.
foreach my $hash (\%utf8::loose_to_file_of, \%utf8::stricter_to_file_of) {
@@ -953,6 +967,7 @@ sub fail_with_diff ($$$$) {
require File::Temp;
my $off = File::Temp->new();
+ local $/ = "\n";
chomp $official;
print $off $official, "\n";
close $off || die "Can't close official";
@@ -1037,7 +1052,9 @@ foreach my $set_of_tables (\%utf8::stricter_to_file_of, \%utf8::loose_to_file_of
# Get rid of any trailing space and comments in the file.
$official =~ s/\s*(#.*)?$//mg;
+ local $/ = "\n";
chomp $official;
+ $/ = $input_record_separator;
# If we are to test against an inverted file, it is easier to invert
# our array than the file.
@@ -1091,7 +1108,9 @@ foreach my $set_of_tables (\%utf8::stricter_to_file_of, \%utf8::loose_to_file_of
if ($i == @tested - 1 && $tested[$i] <= 0x10FFFF) {
$tested .= sprintf("%04X\t10FFFF\n", $tested[$i]);
}
+ local $/ = "\n";
chomp $tested;
+ $/ = $input_record_separator;
if ($tested ne $official) {
fail_with_diff($mod_table, $official, $tested, "prop_invlist");
next;
@@ -1407,11 +1426,15 @@ foreach my $prop (keys %props) {
}
}
}
+ local $/ = "\n";
chomp $official;
+ $/ = $input_record_separator;
- # If there are any special elements, get a reference to them.
+ # Get the format for the file, and if there are any special elements,
+ # get a reference to them.
my $swash_name = $utf8::file_to_swash_name{$base_file};
my $specials_ref;
+ my $file_format;
if ($swash_name) {
$specials_ref = $utf8::SwashInfo{$swash_name}{'specials_name'};
if ($specials_ref) {
@@ -1420,6 +1443,8 @@ foreach my $prop (keys %props) {
no strict 'refs';
$specials_ref = \%{$specials_ref};
}
+
+ $file_format = $utf8::SwashInfo{$swash_name}{'format'};
}
# Certain of the proxy properties have to be adjusted to match the
@@ -1512,15 +1537,14 @@ foreach my $prop (keys %props) {
# specials are superfluous.
undef $specials_ref;
}
- elsif ($name eq 'bmg') {
+ elsif ($format !~ /^a/ && defined $file_format && $file_format eq 'x') {
- # For this property, the file is output using hex notation for the
- # map, with all ranges equal to length 1. Convert from hex to
- # decimal.
+ # For these properties the file is output using hex notation for the
+ # map. Convert from hex to decimal.
my @lines = split "\n", $official;
foreach my $line (@lines) {
- my ($code_point, $map) = split "\t\t", $line;
- $line = $code_point . "\t\t" . hex $map;
+ my ($lower, $upper, $map) = split "\t", $line;
+ $line = "$lower\t$upper\t" . hex $map;
}
$official = join "\n", @lines;
}
@@ -1731,7 +1755,9 @@ foreach my $prop (keys %props) {
# Here are done with generating what the file should look like
+ local $/ = "\n";
chomp $tested_map;
+ $/ = $input_record_separator;
# And compare.
if ($tested_map ne $official) {
@@ -1801,7 +1827,9 @@ foreach my $prop (keys %props) {
$official =~ s/$hex_code_point \t $alias \n //x;
}
}
+ local $/ = "\n";
chomp $official;
+ $/ = $input_record_separator;
# Here have adjusted the file. We also have to adjust the returned
# inversion map by checking and deleting all the lines in it that
@@ -1889,7 +1917,9 @@ foreach my $prop (keys %props) {
# Finished creating the string from the inversion map. Can compare
# with what the file is.
+ local $/ = "\n";
chomp $tested_map;
+ $/ = $input_record_separator;
if ($tested_map ne $official) {
fail_with_diff($mod_prop, $official, $tested_map, "prop_invmap");
next PROPERTY;
@@ -1996,4 +2026,5 @@ foreach my $prop (keys %props) {
pass("prop_invmap('$mod_prop')");
}
+ok($/ eq $input_record_separator, "The record separator didn't get overridden");
done_testing();
diff --git a/gnu/usr.bin/perl/lib/_charnames.pm b/gnu/usr.bin/perl/lib/_charnames.pm
index 62ee39560de..4ab9411f8ea 100644
--- a/gnu/usr.bin/perl/lib/_charnames.pm
+++ b/gnu/usr.bin/perl/lib/_charnames.pm
@@ -7,7 +7,7 @@ package _charnames;
use strict;
use warnings;
use File::Spec;
-our $VERSION = '1.31';
+our $VERSION = '1.36';
use unicore::Name; # mktables-generated algorithmically-defined names
use bytes (); # for $bytes::hint_bits
@@ -77,11 +77,8 @@ my %system_aliases = (
#my %loose_system_aliases = (
#);
-my %deprecated_aliases = (
- # Use of these gives deprecated message.
- # Unicode 6.0 co-opted this for U+1F514, so deprecate it for now.
- 'BELL' => pack("U", 0x07),
-);
+#my %deprecated_aliases;
+#$deprecated_aliases{'BELL'} = pack("U", 0x07) if $^V lt v5.17.0;
#my %loose_deprecated_aliases = (
#);
@@ -146,8 +143,12 @@ sub carp
sub alias (@) # Set up a single alias
{
+ my @errors;
+
my $alias = ref $_[0] ? $_[0] : { @_ };
- foreach my $name (keys %$alias) {
+ foreach my $name (sort keys %$alias) { # Sort only because it helps having
+ # deterministic output for
+ # t/lib/charnames/alias
my $value = $alias->{$name};
next unless defined $value; # Omit if screwed up.
@@ -159,18 +160,53 @@ sub alias (@) # Set up a single alias
$value = CORE::hex $1;
}
if ($value =~ $decimal_qr) {
- no warnings qw(non_unicode surrogate nonchar); # Allow any non-malformed
+ no warnings qw(non_unicode surrogate nonchar); # Allow any of these
$^H{charnames_ord_aliases}{$name} = pack("U", $value);
# Use a canonical form.
$^H{charnames_inverse_ords}{sprintf("%05X", $value)} = $name;
}
else {
- # XXX validate syntax when deprecation cycle complete. ie. start
- # with an alpha only, etc.
- $^H{charnames_name_aliases}{$name} = $value;
+ # This regex needs to be sync'd with the code in toke.c that checks
+ # for the same thing
+ if ($name !~ / ^
+ \p{_Perl_Charname_Begin}
+ \p{_Perl_Charname_Continue}*
+ $ /x) {
+
+ push @errors, $name;
+ }
+ else {
+ $^H{charnames_name_aliases}{$name} = $value;
+
+ if (warnings::enabled('deprecated')) {
+ if ($name =~ / ( .* \s ) ( \s* ) $ /x) {
+ carp "Trailing white-space in a charnames alias definition is deprecated; marked by <-- HERE in '$1 <-- HERE " . $2 . "'";
+ }
+
+ # Use '+' instead of '*' in this regex, because any trailing
+ # blanks have already been warned about.
+ if ($name =~ / ( .*? \s{2} ) ( .+ ) /x) {
+ carp "A sequence of multiple spaces in a charnames alias definition is deprecated; marked by <-- HERE in '$1 <-- HERE " . $2 . "'";
+ }
+ }
+ }
}
}
+
+ # We find and output all errors from this :alias definition, rather than
+ # failing on the first one, so fewer runs are needed to get it to compile
+ if (@errors) {
+ foreach my $name (@errors) {
+ my $ok = "";
+ $ok = $1 if $name =~ / ^ ( \p{Alpha} [-\p{XPosixWord} ():\xa0]* ) /x;
+ my $first_bad = substr($name, length($ok), 1);
+ $name = "Invalid character in charnames alias definition; marked by <-- HERE in '$ok$first_bad<-- HERE " . substr($name, length($ok) + 1) . "'";
+ }
+ croak join "\n", @errors;
+ }
+
+ return;
} # alias
sub not_legal_use_bytes_msg {
@@ -191,11 +227,11 @@ sub alias_file ($) # Reads a file containing alias definitions
if (-f $arg && File::Spec->file_name_is_absolute ($arg)) {
$file = $arg;
}
- elsif ($arg =~ m/^\w+$/) {
+ elsif ($arg =~ m/ ^ \p{_Perl_IDStart} \p{_Perl_IDCont}* $/x) {
$file = "unicore/${arg}_alias.pl";
}
else {
- croak "Charnames alias files can only have identifier characters";
+ croak "Charnames alias file names can only have identifier characters";
}
if (my @alias = do $file) {
@alias == 1 && !defined $alias[0] and
@@ -320,14 +356,14 @@ sub lookup_name ($$$) {
# elsif ($loose && exists $loose_system_aliases{$lookup_name}) {
# $utf8 = $loose_system_aliases{$lookup_name};
# }
- if (exists $deprecated_aliases{$lookup_name}) {
- require warnings;
- warnings::warnif('deprecated',
- "Unicode character name \"$name\" is deprecated, use \""
- . viacode(ord $deprecated_aliases{$lookup_name})
- . "\" instead");
- $utf8 = $deprecated_aliases{$lookup_name};
- }
+# if (exists $deprecated_aliases{$lookup_name}) {
+# require warnings;
+# warnings::warnif('deprecated',
+# "Unicode character name \"$name\" is deprecated, use \""
+# . viacode(ord $deprecated_aliases{$lookup_name})
+# . "\" instead");
+# $utf8 = $deprecated_aliases{$lookup_name};
+# }
# There are currently no entries in this hash, so don't waste time looking
# for them. But the code is retained for the unlikely possibility that
# some will be added in the future.
@@ -457,18 +493,8 @@ sub lookup_name ($$$) {
}
my $case = $name_has_uppercase ? "CAPITAL" : "SMALL";
- if (! $scripts_trie
- || $txt !~
- /\t (?: $scripts_trie ) \ (?:$case\ )? LETTER \ \U$lookup_name $/xm)
- {
- # Here we still don't have it, give up.
- return if $runtime;
-
- # May have zapped input name, get it again.
- $name = (defined $save_input) ? $save_input : $_[0];
- carp "Unknown charname '$name'";
- return ($wants_ord) ? 0xFFFD : pack("U", 0xFFFD);
- }
+ return if (! $scripts_trie || $txt !~
+ /\t (?: $scripts_trie ) \ (?:$case\ )? LETTER \ \U$lookup_name $/xm);
# Here have found the input name in the table.
@off = ($-[0] + 1, $+[0]); # The 1 is for the tab
@@ -599,6 +625,7 @@ sub import
ref $alias eq "HASH" or
croak "Only HASH reference supported as argument to :alias";
alias ($alias);
+ $promote = 1;
next;
}
if ($alias =~ m{:(\w+)$}) {
@@ -607,7 +634,7 @@ sub import
alias_file ($1) and $promote = 1;
next;
}
- alias_file ($alias);
+ alias_file ($alias) and $promote = 1;
next;
}
if (substr($arg, 0, 1) eq ':'
@@ -752,7 +779,9 @@ sub viacode {
# Here there is no user-defined alias, return any official one.
return $return if defined $return;
- if (CORE::hex($hex) > 0x10FFFF) {
+ if (CORE::hex($hex) > 0x10FFFF
+ && warnings::enabled('non_unicode'))
+ {
carp "Unicode characters only allocated up to U+10FFFF (you asked for U+$hex)";
}
return;
diff --git a/gnu/usr.bin/perl/lib/charnames.pm b/gnu/usr.bin/perl/lib/charnames.pm
index 495c30342fd..07ffe80a130 100644
--- a/gnu/usr.bin/perl/lib/charnames.pm
+++ b/gnu/usr.bin/perl/lib/charnames.pm
@@ -1,7 +1,7 @@
package charnames;
use strict;
use warnings;
-our $VERSION = '1.30';
+our $VERSION = '1.36';
use unicore::Name; # mktables-generated algorithmically-defined names
use _charnames (); # The submodule for this where most of the work gets done
@@ -88,6 +88,8 @@ sub string_vianame {
1;
__END__
+=encoding utf8
+
=head1 NAME
charnames - access to Unicode character names and named character sequences; also define character names
@@ -110,12 +112,16 @@ charnames - access to Unicode character names and named character sequences; als
use charnames qw(cyrillic greek);
print "\N{sigma} is Greek sigma, and \N{be} is Cyrillic b.\n";
+ use utf8;
use charnames ":full", ":alias" => {
e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE",
mychar => 0xE8000, # Private use area
+ "自転車ã«ä¹—る人" => "BICYCLIST"
};
print "\N{e_ACUTE} is a small letter e with an acute.\n";
print "\N{mychar} allows me to name private use characters.\n";
+ print "And I can create synonyms in other languages,",
+ " such as \N{自転車ã«ä¹—る人} for "BICYCLIST (U+1F6B4)\n";
use charnames ();
print charnames::viacode(0x1234); # prints "ETHIOPIC SYLLABLE SEE"
@@ -211,11 +217,11 @@ use variables inside the C<\N{...}>. If you want similar run-time
functionality, use
L<charnames::string_vianame()|/charnames::string_vianame(I<name>)>.
-Since Unicode 6.0, it is deprecated to use C<BELL>. Instead use C<ALERT> (but
-C<BEL> will continue to work).
+Note, starting in Perl 5.18, the name C<BELL> refers to the Unicode character
+U+1F514, instead of the traditional U+0007. For the latter, use C<ALERT>
+or C<BEL>.
-If the input name is unknown, C<\N{NAME}> raises a warning and
-substitutes the Unicode REPLACEMENT CHARACTER (U+FFFD).
+It is a syntax error to use C<\N{NAME}> where C<NAME> is unknown.
For C<\N{NAME}>, it is a fatal error if C<use bytes> is in effect and the
input name is that of a character that won't fit into a byte (i.e., whose
@@ -248,8 +254,8 @@ C<:loose> slows down look-ups by a factor of 2 to 3 versus
C<:full>, but the trade-off may be worth it to you. Each individual look-up
takes very little time, and the results are cached, so the speed difference
would become a factor only in programs that do look-ups of many different
-spellings, and probably only when those look-ups are through vianame() and
-string_vianame(), since C<\N{...}> look-ups are done at compile time.
+spellings, and probably only when those look-ups are through C<vianame()> and
+C<string_vianame()>, since C<\N{...}> look-ups are done at compile time.
=head1 ALIASES
@@ -270,13 +276,19 @@ conventions. The aliases override any standard definitions, so, if
you're twisted enough, you can change C<"\N{LATIN CAPITAL LETTER A}"> to
mean C<"B">, etc.
-Note that an alias should not be something that is a legal curly
-brace-enclosed quantifier (see L<perlreref/QUANTIFIERS>). For example
-C<\N{123}> means to match 123 non-newline characters, and is not treated as a
-charnames alias. Aliases are discouraged from beginning with anything
-other than an alphabetic character and from containing anything other
-than alphanumerics, spaces, dashes, parentheses, and underscores.
-Currently they must be ASCII.
+Aliases must begin with a character that is alphabetic. After that, each may
+contain any combination of word (C<\w>) characters, SPACE (U+0020),
+HYPHEN-MINUS (U+002D), LEFT PARENTHESIS (U+0028), RIGHT PARENTHESIS (U+0029),
+and NO-BREAK SPACE (U+00A0). These last three should never have been allowed
+in names, and are retained for backwards compatibility only; they may be
+deprecated and removed in future releases of Perl, so don't use them for new
+names. (More precisely, the first character of a name you specify must be
+something that matches all of C<\p{ID_Start}>, C<\p{Alphabetic}>, and
+C<\p{Gc=Letter}>. This makes sure it is what any reasonable person would view
+as an alphabetic character. And, the continuation characters that match C<\w>
+must also match C<\p{ID_Continue}>.) Starting with Perl v5.18, any Unicode
+characters meeting the above criteria may be used; prior to that only
+Latin1-range characters were acceptable.
An alias can map to either an official Unicode character name (not a loose
matched name) or to a
@@ -337,14 +349,15 @@ controlling C<"use charnames"> in the same scope apply, like C<:loose> or any
L<script list, C<:short> option|/DESCRIPTION>, or L<custom aliases|/CUSTOM
ALIASES> you may have defined.
-The only difference is that if the input name is unknown, C<string_vianame>
-returns C<undef> instead of the REPLACEMENT CHARACTER and does not raise a
-warning message.
+The only differences are due to the fact that C<string_vianame> is run-time
+and C<\N{}> is compile time. You can't interpolate inside a C<\N{}>, (so
+C<\N{$variable}> doesn't work); and if the input name is unknown,
+C<string_vianame> returns C<undef> instead of it being a syntax error.
=head1 charnames::vianame(I<name>)
This is similar to C<string_vianame>. The main difference is that under most
-circumstances, vianame returns an ordinal code
+circumstances, C<vianame> returns an ordinal code
point, whereas C<string_vianame> returns a string. For example,
printf "U+%04X", charnames::vianame("FOUR TEARDROP-SPOKED ASTERISK");
@@ -379,7 +392,7 @@ If you define more than one name for the code point, it is indeterminate
which one will be returned.
As mentioned, the function returns C<undef> if no name is known for the code
-point. In Unicode the proper name of these is the empty string, which
+point. In Unicode the proper name for these is the empty string, which
C<undef> stringifies to. (If you ask for a code point past the legal
Unicode maximum of U+10FFFF that you haven't assigned an alias to, you
get C<undef> plus a warning.)
@@ -474,10 +487,6 @@ the form C<U+...>, it returns a chr instead. In this case, if C<use bytes> is
in effect and the character won't fit into a byte, it returns C<undef> and
raises a warning.
-Names must be ASCII characters only, which means that you are out of luck if
-you want to create aliases in a language where some or all the characters of
-the desired aliases are non-ASCII.
-
Since evaluation of the translation function (see L</CUSTOM
TRANSLATORS>) happens in the middle of compilation (of a string
literal), the translation function should not do any C<eval>s or
diff --git a/gnu/usr.bin/perl/lib/charnames.t b/gnu/usr.bin/perl/lib/charnames.t
index 8aba9be9e0c..c58ccbe073e 100644
--- a/gnu/usr.bin/perl/lib/charnames.t
+++ b/gnu/usr.bin/perl/lib/charnames.t
@@ -62,12 +62,13 @@ EOE
{
- use charnames ':full', ":alias" => { mychar1 => "0xE8000",
- mychar2 => 983040, # U+F0000
- mychar3 => "U+100000",
- myctrl => 0x80,
- mylarge => "U+111000",
- };
+ use charnames ":alias" => { mychar1 => "0xE8000",
+ mychar2 => 983040, # U+F0000
+ mychar3 => "U+100000",
+ myctrl => 0x80,
+ mylarge => "U+111000",
+ };
+ is ("\N{PILE OF POO}", chr(0x1F4A9), "Verify :alias alone implies :full");
is ("\N{mychar1}", chr(0xE8000), "Verify that can define hex alias");
is (charnames::viacode(0xE8000), "mychar1", "And that can get the alias back");
is ("\N{mychar2}", chr(0xF0000), "Verify that can define decimal alias");
@@ -295,11 +296,11 @@ is("\N{BOM}", chr(0xFEFF), 'Verify "\N{BOM}" is correct');
my $ok = ! grep { /"HORIZONTAL TABULATION" is deprecated.*"CHARACTER TABULATION"/ } @WARN;
ok($ok, '... and doesnt give deprecated warning');
- # XXX These tests should be changed for 5.16, when we convert BELL to the
- # Unicode version.
- is("\N{BELL}", "\a", 'Verify "\N{BELL}" eq "\a"');
- my $ok = grep { /"BELL" is deprecated.*"ALERT"/ } @WARN;
- ok($ok, '... and that gives correct deprecated warning');
+ if ($^V lt v5.17.0) {
+ is("\N{BELL}", "\a", 'Verify "\N{BELL}" eq "\a"');
+ my $ok = grep { /"BELL" is deprecated.*"ALERT"/ } @WARN;
+ ok($ok, '... and that gives correct deprecated warning');
+ }
no warnings 'deprecated';
@@ -365,7 +366,7 @@ is(charnames::viacode("U+00000000000FEED"), "ARABIC LETTER WAW ISOLATED FORM", '
is("\N{EOT}", "\N{END OF TRANSMISSION}", 'Verify "\N{EOT}" eq "\N{END OF TRANSMISSION}"');
is("\N{ENQ}", "\N{ENQUIRY}", 'Verify "\N{ENQ}" eq "\N{ENQUIRY}"');
is("\N{ACK}", "\N{ACKNOWLEDGE}", 'Verify "\N{ACK}" eq "\N{ACKNOWLEDGE}"');
- is("\N{BEL}", "\N{BELL}", 'Verify "\N{BEL}" eq "\N{BELL}"');
+ is("\N{BEL}", "\N{BELL}", 'Verify "\N{BEL}" eq "\N{BELL}"') if $^V lt v5.17.0;
is("\N{BS}", "\N{BACKSPACE}", 'Verify "\N{BS}" eq "\N{BACKSPACE}"');
is("\N{HT}", "\N{HORIZONTAL TABULATION}", 'Verify "\N{HT}" eq "\N{HORIZONTAL TABULATION}"');
is("\N{LF}", "\N{LINE FEED (LF)}", 'Verify "\N{LF}" eq "\N{LINE FEED (LF)}"');
@@ -776,7 +777,7 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}", 'V
$res .= '-' . ($^H{73174} // "");
$res .= '-2' if ":" =~ /\N{COLON}/;
$res .= '-3' if ":" =~ /\N{COLON}/i;
- is($res, "foo-foo-1--2-3", "Verify %^H doesn't get reset by \N{...}");
+ is($res, "foo-foo-1--2-3", "Verify %^H doesn't get reset by \\N{...}");
}
{ use charnames qw(.*);
@@ -836,7 +837,8 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}", 'V
is("\N{mychar1}", "f", "Inner block: verify that \\N{mychar1} is redefined");
is(charnames::vianame("mychar1"), ord("f"), "Inner block: verify that vianame(mychar1) is redefined");
is(charnames::string_vianame("mychar1"), "f", "Inner block: verify that string_vianame(mychar1) is redefined");
- is("\N{mychar2}", "\x{FFFD}", "Inner block: verify that \\N{mychar2} outer definition didn't leak");
+ eval '"\N{mychar2}"';
+ like($@, qr/Unknown charname 'mychar2'/, "Inner block: verify that \\N{mychar2} outer definition didn't leak");
ok( ! defined charnames::vianame("mychar2"), "Inner block: verify that vianame(mychar2) outer definition didn't leak");
ok( ! defined charnames::string_vianame("mychar2"), "Inner block: verify that string_vianame(mychar2) outer definition didn't leak");
is("\N{myprivate1}", "\x{E8001}", "Inner block: verify that \\N{myprivate1} is redefined ");
@@ -844,38 +846,46 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}", 'V
is(charnames::string_vianame("myprivate1"), chr(0xE8001), "Inner block: verify that string_vianame(myprivate1) is redefined");
is(charnames::viacode(0xE8001), "myprivate1", "Inner block: verify that myprivate1 viacode is redefined");
ok(! defined charnames::viacode(0xE8000), "Inner block: verify that outer myprivate1 viacode didn't leak");
- is("\N{myprivate2}", "\x{FFFD}", "Inner block: verify that \\N{myprivate2} outer definition didn't leak");
+ eval '"\N{myprivate2}"';
+ like($@, qr/Unknown charname 'myprivate2'/, "Inner block: verify that \\N{myprivate2} outer definition didn't leak");
ok(! defined charnames::vianame("myprivate2"), "Inner block: verify that vianame(myprivate2) outer definition didn't leak");
ok(! defined charnames::string_vianame("myprivate2"), "Inner block: verify that string_vianame(myprivate2) outer definition didn't leak");
ok(! defined charnames::viacode(0x100000), "Inner block: verify that myprivate2 viacode outer definition didn't leak");
is("\N{BE}", $hiragana_be, "Inner block: verify that \\N uses the correct script");
cmp_ok(charnames::vianame("BE"), "==", ord($hiragana_be), "Inner block: verify that vianame uses the correct script");
cmp_ok(charnames::string_vianame("BE"), "==", $hiragana_be, "Inner block: verify that string_vianame uses the correct script");
- is("\N{Hiragana: BE}", "\x{FFFD}", "Inner block without :short: \\N with short doesn't work");
+ eval '"\N{Hiragana: BE}"';
+ like($@, qr/Unknown charname 'Hiragana: BE'/, "Inner block without :short: \\N with short doesn't work");
ok(! defined charnames::vianame("Hiragana: BE"), "Inner block without :short: verify that vianame with short doesn't work");
ok(! defined charnames::string_vianame("Hiragana: BE"), "Inner block without :short: verify that string_vianame with short doesn't work");
{ # An inner block where only :short definitions are valid.
use charnames ":short";
- is("\N{mychar1}", "\x{FFFD}", "Inner inner block: verify that mychar1 outer definition didn't leak with \\N");
+ eval '"\N{mychar1}"';
+ like($@, qr/Unknown charname 'mychar1'/, "Inner inner block: verify that mychar1 outer definition didn't leak with \\N");
ok( ! defined charnames::vianame("mychar1"), "Inner inner block: verify that mychar1 outer definition didn't leak with vianame");
ok( ! defined charnames::string_vianame("mychar1"), "Inner inner block: verify that mychar1 outer definition didn't leak with string_vianame");
- is("\N{mychar2}", "\x{FFFD}", "Inner inner block: verify that mychar2 outer definition didn't leak with \\N");
+ eval '"\N{mychar2}"';
+ like($@, qr/Unknown charname 'mychar2'/, "Inner inner block: verify that mychar2 outer definition didn't leak with \\N");
ok( ! defined charnames::vianame("mychar2"), "Inner inner block: verify that mychar2 outer definition didn't leak with vianame");
ok( ! defined charnames::string_vianame("mychar2"), "Inner inner block: verify that mychar2 outer definition didn't leak with string_vianame");
- is("\N{myprivate1}", "\x{FFFD}", "Inner inner block: verify that myprivate1 outer definition didn't leak with \\N");
+ eval '"\N{myprivate1}"';
+ like($@, qr/Unknown charname 'myprivate1'/, "Inner inner block: verify that myprivate1 outer definition didn't leak with \\N");
ok(! defined charnames::vianame("myprivate1"), "Inner inner block: verify that myprivate1 outer definition didn't leak with vianame");
ok(! defined charnames::string_vianame("myprivate1"), "Inner inner block: verify that myprivate1 outer definition didn't leak with string_vianame");
- is("\N{myprivate2}", "\x{FFFD}", "Inner inner block: verify that myprivate2 outer definition didn't leak with \\N");
+ eval '"\N{myprivate2}"';
+ like($@, qr/Unknown charname 'myprivate2'/, "Inner inner block: verify that myprivate2 outer definition didn't leak with \\N");
ok(! defined charnames::vianame("myprivate2"), "Inner inner block: verify that myprivate2 outer definition didn't leak with vianame");
ok(! defined charnames::string_vianame("myprivate2"), "Inner inner block: verify that myprivate2 outer definition didn't leak with string_vianame");
ok(! defined charnames::viacode(0xE8000), "Inner inner block: verify that mychar1 outer outer definition didn't leak with viacode");
ok(! defined charnames::viacode(0xE8001), "Inner inner block: verify that mychar1 outer definition didn't leak with viacode");
ok(! defined charnames::viacode(0x100000), "Inner inner block: verify that mychar2 outer definition didn't leak with viacode");
- is("\N{BE}", "\x{FFFD}", "Inner inner block without script: verify that outer :script didn't leak with \\N");
+ eval '"\N{BE}"';
+ like($@, qr/Unknown charname 'BE'/, "Inner inner block without script: verify that outer :script didn't leak with \\N");
ok(! defined charnames::vianame("BE"), "Inner inner block without script: verify that outer :script didn't leak with vianames");
ok(! defined charnames::string_vianame("BE"), "Inner inner block without script: verify that outer :script didn't leak with string_vianames");
- is("\N{HIRAGANA LETTER BE}", "\x{FFFD}", "Inner inner block without :full: verify that outer :full didn't leak with \\N");
+ eval '"\N{HIRAGANA LETTER BE}"';
+ like($@, qr/Unknown charname 'HIRAGANA LETTER BE'/, "Inner inner block without :full: verify that outer :full didn't leak with \\N");
is("\N{Hiragana: BE}", $hiragana_be, "Inner inner block with :short: verify that \\N works with :short");
cmp_ok(charnames::vianame("Hiragana: BE"), "==", ord($hiragana_be), "Inner inner block with :short: verify that vianame works with :short");
cmp_ok(charnames::string_vianame("Hiragana: BE"), "==", $hiragana_be, "Inner inner block with :short: verify that string_vianame works with :short");
@@ -885,7 +895,8 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}", 'V
is("\N{mychar1}", "f", "Inner block: verify that \\N{mychar1} is redefined");
is(charnames::vianame("mychar1"), ord("f"), "Inner block: verify that vianame(mychar1) is redefined");
is(charnames::string_vianame("mychar1"), "f", "Inner block: verify that string_vianame(mychar1) is redefined");
- is("\N{mychar2}", "\x{FFFD}", "Inner block: verify that \\N{mychar2} outer definition didn't leak");
+ eval '"\N{mychar2}"';
+ like($@, qr/Unknown charname 'mychar2'/, "Inner block: verify that \\N{mychar2} outer definition didn't leak");
ok( ! defined charnames::vianame("mychar2"), "Inner block: verify that vianame(mychar2) outer definition didn't leak");
ok( ! defined charnames::string_vianame("mychar2"), "Inner block: verify that string_vianame(mychar2) outer definition didn't leak");
is("\N{myprivate1}", "\x{E8001}", "Inner block: verify that \\N{myprivate1} is redefined ");
@@ -893,14 +904,16 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}", 'V
is(charnames::string_vianame("myprivate1"), chr(0xE8001), "Inner block: verify that string_vianame(myprivate1) is redefined");
is(charnames::viacode(0xE8001), "myprivate1", "Inner block: verify that myprivate1 viacode is redefined");
ok(! defined charnames::viacode(0xE8000), "Inner block: verify that outer myprivate1 viacode didn't leak");
- is("\N{myprivate2}", "\x{FFFD}", "Inner block: verify that \\N{myprivate2} outer definition didn't leak");
+ eval '"\N{myprivate2}"';
+ like($@, qr/Unknown charname 'myprivate2'/, "Inner block: verify that \\N{myprivate2} outer definition didn't leak");
ok(! defined charnames::vianame("myprivate2"), "Inner block: verify that vianame(myprivate2) outer definition didn't leak");
ok(! defined charnames::string_vianame("myprivate2"), "Inner block: verify that string_vianame(myprivate2) outer definition didn't leak");
ok(! defined charnames::viacode(0x100000), "Inner block: verify that myprivate2 viacode outer definition didn't leak");
is("\N{BE}", $hiragana_be, "Inner block: verify that \\N uses the correct script");
cmp_ok(charnames::vianame("BE"), "==", ord($hiragana_be), "Inner block: verify that vianame uses the correct script");
cmp_ok(charnames::string_vianame("BE"), "==", $hiragana_be, "Inner block: verify that string_vianame uses the correct script");
- is("\N{Hiragana: BE}", "\x{FFFD}", "Inner block without :short: \\N with short doesn't work");
+ eval '"\N{Hiragana: BE}"';
+ like($@, qr/Unknown charname 'Hiragana: BE'/, "Inner block without :short: \\N with short doesn't work");
ok(! defined charnames::vianame("Hiragana: BE"), "Inner block without :short: verify that vianame with short doesn't work");
ok(! defined charnames::string_vianame("Hiragana: BE"), "Inner block without :short: verify that string_vianame with short doesn't work");
}
@@ -933,7 +946,8 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}", 'V
is(charnames::string_vianame("O-i"), chr(0x10426), "Verify that loose script list matching works with string_vianame");
is(charnames::vianame("o i"), 0x1044E, "Verify that loose script list matching works with vianame");
}
- is ("\N{latincapitallettera}", "\x{FFFD}", "Verify that loose matching caching doesn't leak outside of scope");
+ eval '"\N{latincapitallettera}"';
+ like($@, qr/Unknown charname 'latincapitallettera'/, "Verify that loose matching caching doesn't leak outside of scope");
{
use charnames qw(:loose :short);
cmp_ok("\N{co pt-ic:she-i}", "==", chr(0x3E3), "Verify that loose :short matching works");
@@ -1013,14 +1027,14 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}", 'V
my $decimal = hex $code;
# The Unicode version 1 name is used instead of any that are
- # marked <control>
+ # marked <control>.
$name = $u1name if $name eq "<control>";
- $name = 'ALERT' if $decimal == 7;
+ # In earlier Perls, we reject this code point's name (BELL)
+ $name = "" if $^V lt v5.17.0 && $decimal == 0x1F514;
- # XXX This test should be changed for 5.16 when we convert to use
- # Unicode's BELL
- $name = "" if $decimal == 0x1F514;
+ # ALERT overrides BELL
+ $name = 'ALERT' if $decimal == 7;
# Some don't have names, leave those array elements undefined
next unless $name;
@@ -1053,23 +1067,67 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}", 'V
}
close $fh;
- # The Hangul syllable names aren't in the file above; their names
- # are algorithmically determinable, but to avoid perpetuating any
- # programming errors, this file contains the complete list, gathered
- # from the web.
- while (<DATA>) {
- chomp;
- next unless $_; # Guard against empty lines getting inserted.
- my ($code, $name) = split ";";
- my $decimal = hex $code;
- $names[$decimal] = $name;
- my $block = $decimal >> $block_size_bits;
- $algorithmic_names_count[$block] = 1;
+ use Unicode::UCD;
+ if (pack("C*", split /\./, Unicode::UCD::UnicodeVersion()) gt v1.1.5) {
+ # The Hangul syllable names aren't in the file above; their names
+ # are algorithmically determinable, but to avoid perpetuating any
+ # programming errors, this file contains the complete list, gathered
+ # from the web.
+ while (<DATA>) {
+ chomp;
+ next unless $_; # Guard against empty lines getting inserted.
+ my ($code, $name) = split ";";
+ my $decimal = hex $code;
+ $names[$decimal] = $name;
+ my $block = $decimal >> $block_size_bits;
+ $algorithmic_names_count[$block] = 1;
+ }
}
- open $fh, "<", "../../lib/unicore/NameAliases.txt" or
- die "Can't open ../../lib/unicore/NameAliases.txt: $!";
- while (<$fh>) {
+ my @name_aliases;
+ use Unicode::UCD;
+ if (ord('A') != 65
+ || pack( "C*", split /\./, Unicode::UCD::UnicodeVersion()) ge v6.1.0)
+ {
+ open my $fh, "<", "../../lib/unicore/NameAliases.txt"
+ or die "Can't open ../../lib/unicore/NameAliases.txt: $!";
+ @name_aliases = <$fh>
+ }
+ else {
+
+ # If this Unicode version doesn't have the full .txt file, or are on
+ # an EBCDIC platform where they need to be translated, get the data
+ # from prop_invmap() (which should do the translation) and convert it
+ # to the file's format
+ use Unicode::UCD 'prop_invmap';
+ my ($invlist_ref, $invmap_ref, undef, $default)
+ = prop_invmap('Name_Alias');
+ for my $i (0 .. @$invlist_ref - 1) {
+
+ # Convert the aliases for code points that have just one alias to
+ # single element arrays for uniform handling below.
+ if (! ref $invmap_ref->[$i]) {
+
+ # But we test only the real aliases, not the ones which are
+ # just really placeholders.
+ next if $invmap_ref->[$i] eq $default;
+
+ $invmap_ref->[$i] = [ $invmap_ref->[$i] ];
+ }
+
+
+ # Change each alias for the code point to the form that the file
+ # has
+ foreach my $j ($invlist_ref->[$i] .. $invlist_ref->[$i+1] - 1) {
+ foreach my $value (@{$invmap_ref->[$i]}) {
+ $value =~ s/: /;/;
+ push @name_aliases, sprintf("%04X;%s\n", $j, $value);
+ }
+ }
+ }
+ }
+
+ for (@name_aliases) {
chomp;
s/^\s*#.*//;
next unless $_;
@@ -1185,21 +1243,26 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}", 'V
$block = $end_block + 1;
}
- open $fh, "<", "../../lib/unicore/NamedSequences.txt" or
- die "Can't open ../../lib/unicore/NamedSequences.txt: $!";
- while (<$fh>) {
- chomp;
- s/^\s*#.*//;
- next unless $_;
- my ($name, $codes) = split ";";
- my $utf8 = pack("U*", map { hex } split " ", $codes);
- is(charnames::string_vianame($name), $utf8, "Verify string_vianame(\"$name\") is the proper utf8");
- my $loose_name = get_loose_name($name);
- use charnames ":loose";
- is(charnames::string_vianame($loose_name), $utf8, "Verify string_vianame(\"$loose_name\") is the proper utf8");
- #diag("$name, $utf8");
+ if (open my $fh, "<", "../../lib/unicore/NamedSequences.txt") {
+ while (<$fh>) {
+ chomp;
+ s/^\s*#.*//;
+ next unless $_;
+ my ($name, $codes) = split ";";
+ my $utf8 = pack("U*", map { hex } split " ", $codes);
+ is(charnames::string_vianame($name), $utf8, "Verify string_vianame(\"$name\") is the proper utf8");
+ my $loose_name = get_loose_name($name);
+ use charnames ":loose";
+ is(charnames::string_vianame($loose_name), $utf8, "Verify string_vianame(\"$loose_name\") is the proper utf8");
+ #diag("$name, $utf8");
+ }
+ close $fh;
+ }
+ else {
+ use Unicode::UCD;
+ die "Can't open ../../lib/unicore/NamedSequences.txt: $!"
+ if pack("C*", split /\./, Unicode::UCD::UnicodeVersion()) ge v4.1.0;
}
- close $fh;
unless ($all_pass) {
diff --git a/gnu/usr.bin/perl/lib/dbm_filter_util.pl b/gnu/usr.bin/perl/lib/dbm_filter_util.pl
index 2f8af209e22..0105a5c30ac 100644
--- a/gnu/usr.bin/perl/lib/dbm_filter_util.pl
+++ b/gnu/usr.bin/perl/lib/dbm_filter_util.pl
@@ -1,5 +1,8 @@
use strict;
use warnings;
+use Data::Dumper;
+
+*qquote= *Data::Dumper::qquote;
sub StoreData
{
@@ -36,11 +39,11 @@ sub VerifyData
while (my ($k, $v) = each %$hashref) {
no warnings 'uninitialized';
if ($expected{$k} eq $v) {
- #diag "Match [$k][$v]";
+ #diag "Match " . qquote($k) . " => " . qquote($v);
delete $expected{$k} ;
}
else {
- #diag "No Match [$k][$v]";
+ #diag "No Match " . qquote($k) . " => " . qquote($v) . " want " . qquote($expected{$k});
$bad{$k} = $v;
}
}
@@ -50,17 +53,17 @@ sub VerifyData
if (keys %expected ) {
$bad .=" No Match from Expected:\n" ;
while (my ($k, $v) = each %expected) {
- $bad .= "\t'$k' =>\t'$v'\n";
+ $bad .= "\t" . qquote($k) . " => " . qquote($v) . "\n";
}
}
if (keys %bad ) {
$bad .= "\n No Match from Actual:\n" ;
while (my ($k, $v) = each %bad) {
no warnings 'uninitialized';
- $bad .= "\t'$k' =>\t'$v'\n";
+ $bad .= "\t" . qquote($k) . " => " . qquote($v) . "\n";
}
}
- diag "${bad}\n" ;
+ diag( "${bad}\n" );
}
}
diff --git a/gnu/usr.bin/perl/lib/diagnostics.t b/gnu/usr.bin/perl/lib/diagnostics.t
index 60e01e1b81a..6eecdda0ad2 100644
--- a/gnu/usr.bin/perl/lib/diagnostics.t
+++ b/gnu/usr.bin/perl/lib/diagnostics.t
@@ -4,7 +4,7 @@ BEGIN {
chdir '..' if -d '../pod' && -d '../t';
@INC = 'lib';
require './t/test.pl';
- plan(18);
+ plan(24);
}
BEGIN {
@@ -20,7 +20,8 @@ eval {
'base'->import(qw(I::do::not::exist));
};
-like( $@, qr/^Base class package "I::do::not::exist" is empty/);
+like( $@, qr/^Base class package "I::do::not::exist" is empty/,
+ 'diagnostics not tripped up by "use base qw(Dont::Exist)"');
open *whatever, ">", \my $warning
or die "Couldn't redirect STDERR to var: $!";
@@ -48,7 +49,7 @@ like $warning, qr/using lex_stuff_pvn or similar/, 'L<foo|bar/baz>';
seek STDERR, 0,0;
$warning = '';
warn 'Code point 0xBEE5 is not Unicode, may not be portable';
-like $warning, qr/W utf8/,
+like $warning, qr/S utf8/,
'Message sharing its description with the following message';
# Periods at end of entries in perldiag.pod get matched correctly
@@ -69,6 +70,12 @@ $warning = '';
warn "Unicode surrogate U+C0FFEE is illegal in UTF-8";
like $warning, qr/You had a UTF-16 surrogate/, '%X';
+# Test for %p
+seek STDERR, 0,0;
+$warning = '';
+warn "Slab leaked from cv fadedc0ffee";
+like $warning, qr/bookkeeping of op trees/, '%p';
+
# Strip S<>
seek STDERR, 0,0;
$warning = '';
@@ -89,6 +96,39 @@ like $warning,
qr/You tried to load a file.*Perl could not compile/s,
'multiline errors';
+# Multiline entry in perldiag.pod
+seek STDERR, 0,0;
+$warning = '';
+warn "Using just the first character returned by \\N{} in character class in regex; marked by <-- HERE in m/%s/";
+like $warning,
+ qr/A charnames handler may return a sequence/s,
+ 'multi-line entries in perldiag.pod match';
+
+# ; at end of entry in perldiag.pod
+seek STDERR, 0,0;
+$warning = '';
+warn "Perl folding rules are not up-to-date for 0xA; please use the perlbug utility to report; in regex; marked by <-- HERE in m/\ <-- HERE q/";
+like $warning,
+ qr/regular expression folding rules/s,
+ '; works at the end of entries in perldiag.pod';
+
+# Differences in spaces in warnings (Why not be nice and accept them?)
+seek STDERR, 0,0;
+$warning = '';
+warn "Assignment to both a list and a scalar\n";
+like $warning,
+ qr/2nd and 3rd/s,
+ 'spaces in warnings are matched lightly';
+
+# Differences in spaces in warnings with a period at the end
+seek STDERR, 0,0;
+$warning = '';
+warn "perl: warning: Setting locale failed.\n";
+like $warning,
+ qr/The whole warning/s,
+ 'spaces in warnings with periods at the end are matched lightly';
+
+
*STDERR = $old_stderr;
# These tests use a panic under the hope that the description is not likely
@@ -145,3 +185,13 @@ like runperl(
main::bar\(\) called at -e line \d+
main::foo\(\) called at -e line \d+
/, 'backtrace from multiline error';
+is runperl(@runperl_args, prog => 'BEGIN { die q _panic: gremlins_ }'),
+ << 'EOX', 'BEGIN{die} does not suppress diagnostics';
+panic: gremlins at -e line 1.
+BEGIN failed--compilation aborted at -e line 1 (#1)
+ (P) An internal error.
+
+Uncaught exception from user code:
+ panic: gremlins at -e line 1.
+ BEGIN failed--compilation aborted at -e line 1.
+EOX
diff --git a/gnu/usr.bin/perl/lib/dumpvar.t b/gnu/usr.bin/perl/lib/dumpvar.t
index f4f55d9744f..3e48b1728fb 100644
--- a/gnu/usr.bin/perl/lib/dumpvar.t
+++ b/gnu/usr.bin/perl/lib/dumpvar.t
@@ -54,6 +54,11 @@ package Tyre;
sub TIESCALAR{bless[]}
# other methods intentionally omitted
+package Kerb;
+
+sub TIEHASH{bless{}}
+# other methods intentionally omitted
+
package main;
my $foo = Foo->new(1..5);
@@ -331,3 +336,7 @@ EXPECT
local *_; tie $_, 'Tyre'; unctrl('abc');
EXPECT
abc
+########
+tie my %h, 'Kerb'; my $v = { a => 1, b => \%h, c => 2 }; dumpvalue($v);
+EXPECT
+/'a' => 1\n.+Can't locate object method.+'c' => 2/s
diff --git a/gnu/usr.bin/perl/lib/feature.pm b/gnu/usr.bin/perl/lib/feature.pm
index 87b42aa916b..d45174c907d 100644
--- a/gnu/usr.bin/perl/lib/feature.pm
+++ b/gnu/usr.bin/perl/lib/feature.pm
@@ -5,7 +5,7 @@
package feature;
-our $VERSION = '1.27';
+our $VERSION = '1.32';
our %feature = (
fc => 'feature_fc',
@@ -15,6 +15,7 @@ our %feature = (
evalbytes => 'feature_evalbytes',
array_base => 'feature_arybase',
current_sub => 'feature___SUB__',
+ lexical_subs => 'feature_lexsubs',
unicode_eval => 'feature_unieval',
unicode_strings => 'feature_unicode',
);
@@ -23,7 +24,7 @@ our %feature_bundle = (
"5.10" => [qw(array_base say state switch)],
"5.11" => [qw(array_base say state switch unicode_strings)],
"5.15" => [qw(current_sub evalbytes fc say state switch unicode_eval unicode_strings)],
- "all" => [qw(array_base current_sub evalbytes fc say state switch unicode_eval unicode_strings)],
+ "all" => [qw(array_base current_sub evalbytes fc lexical_subs say state switch unicode_eval unicode_strings)],
"default" => [qw(array_base)],
);
@@ -31,6 +32,8 @@ $feature_bundle{"5.12"} = $feature_bundle{"5.11"};
$feature_bundle{"5.13"} = $feature_bundle{"5.11"};
$feature_bundle{"5.14"} = $feature_bundle{"5.11"};
$feature_bundle{"5.16"} = $feature_bundle{"5.15"};
+$feature_bundle{"5.17"} = $feature_bundle{"5.15"};
+$feature_bundle{"5.18"} = $feature_bundle{"5.15"};
$feature_bundle{"5.9.5"} = $feature_bundle{"5.10"};
our $hint_shift = 26;
@@ -77,7 +80,7 @@ pragma.)
=head2 Lexical effect
Like other pragmas (C<use strict>, for example), features have a lexical
-effect. C<use feature qw(foo)> will only make the feature "foo" available
+effect. C<use feature qw(foo)> will only make the feature "foo" available
from that point to the end of the enclosing block.
{
@@ -137,7 +140,8 @@ C<use feature 'unicode_strings'> tells the compiler to use Unicode semantics
in all string operations executed within its scope (unless they are also
within the scope of either C<use locale> or C<use bytes>). The same applies
to all regular expressions compiled within the scope, even if executed outside
-it.
+it. It does not change the internal representation of strings, but only how
+they are interpreted.
C<no feature 'unicode_strings'> tells the compiler to use the traditional
Perl semantics wherein the native character set semantics is used unless it is
@@ -223,6 +227,20 @@ See L<perlfunc/fc> for details.
This feature is available from Perl 5.16 onwards.
+=head2 The 'lexical_subs' feature
+
+B<WARNING>: This feature is still experimental and the implementation may
+change in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the
+warning:
+
+ no warnings "experimental::lexical_subs";
+
+This enables declaration of subroutines via C<my sub foo>, C<state sub foo>
+and C<our sub foo> syntax. See L<perlsub/Lexical Subroutines> for details.
+
+This feature is available from Perl 5.18 onwards.
+
=head1 FEATURE BUNDLES
It's possible to load multiple features together, using
@@ -246,6 +264,9 @@ The following feature bundles are available:
:5.16 say state switch unicode_strings
unicode_eval evalbytes current_sub fc
+ :5.18 say state switch unicode_strings
+ unicode_eval evalbytes current_sub fc
+
The C<:default> bundle represents the feature set that is enabled before
any C<use feature> or C<no feature> declaration.
diff --git a/gnu/usr.bin/perl/lib/feature/unicode_strings.t b/gnu/usr.bin/perl/lib/feature/unicode_strings.t
index 7e557b2bc78..8bd536f258d 100755
--- a/gnu/usr.bin/perl/lib/feature/unicode_strings.t
+++ b/gnu/usr.bin/perl/lib/feature/unicode_strings.t
@@ -172,6 +172,7 @@ for my $i ( 0x30 .. 0x39, # 0-9
my @s = (0) x 256;
$s[ord_latin1_to_native 0x09] = 1; # Tab
$s[ord_latin1_to_native 0x0A] = 1; # LF
+$s[ord_latin1_to_native 0x0B] = 1; # VT
$s[ord_latin1_to_native 0x0C] = 1; # FF
$s[ord_latin1_to_native 0x0D] = 1; # CR
$s[ord_latin1_to_native 0x20] = 1; # SPACE
diff --git a/gnu/usr.bin/perl/lib/filetest.pm b/gnu/usr.bin/perl/lib/filetest.pm
index b08f1dc9107..a4049832e67 100644
--- a/gnu/usr.bin/perl/lib/filetest.pm
+++ b/gnu/usr.bin/perl/lib/filetest.pm
@@ -1,6 +1,6 @@
package filetest;
-our $VERSION = '1.02';
+our $VERSION = '1.03';
=head1 NAME
@@ -71,7 +71,7 @@ of the operators is a filename, not when it is a filehandle.
Because access() does not invoke stat() (at least not in a way visible
to Perl), B<the stat result cache "_" is not set>. This means that the
outcome of the following two tests is different. The first has the stat
-bits of C</etc/passwd> in C<_>, and in the second case this still
+bits of F</etc/passwd> in C<_>, and in the second case this still
contains the bits of C</etc>.
{ -d '/etc';
diff --git a/gnu/usr.bin/perl/lib/filetest.t b/gnu/usr.bin/perl/lib/filetest.t
index 98a19bdf5fd..50886117313 100644
--- a/gnu/usr.bin/perl/lib/filetest.t
+++ b/gnu/usr.bin/perl/lib/filetest.t
@@ -57,6 +57,7 @@ SKIP: {
my $chflags = "/usr/bin/chflags";
my $tstfile = "filetest.tst";
skip("No $chflags available", 4) if !-x $chflags;
+ skip("Dragonfly filetests seem non-chflags aware", 4) if $^O eq 'dragonfly';
my $skip_eff_user_tests = (!$Config{d_setreuid} && !$Config{d_setresuid})
||
diff --git a/gnu/usr.bin/perl/lib/h2xs.t b/gnu/usr.bin/perl/lib/h2xs.t
index 6ce37ee3570..d10ce75c1ca 100644
--- a/gnu/usr.bin/perl/lib/h2xs.t
+++ b/gnu/usr.bin/perl/lib/h2xs.t
@@ -159,8 +159,10 @@ for (my $i = $#tests; $i > 0; $i-=3) {
# 1 test for running it, 1 test for the expected result, and 1 for each file
# plus 1 to open and 1 to check for the use in lib/$name.pm and Makefile.PL
# And 1 more for our check for "bonus" files, 2 more for ExtUtil::Manifest.
+ # And 1 more to examine const-c.inc contents in tests that use $header.
# use the () to force list context and hence count the number of matches.
$total_tests += 9 + (() = $tests[$i] =~ /(Writing)/sg);
+ $total_tests++ if $tests[$i-2] =~ / \Q$header\E$/;
}
plan tests => $total_tests;
@@ -169,6 +171,8 @@ ok (open (HEADER, ">$header"), "open '$header'");
print HEADER <<HEADER or die $!;
#define Camel 2
#define Dromedary 1
+#define Bactrian /* empty */
+#define Bactrian2
HEADER
ok (close (HEADER), "close '$header'");
@@ -215,6 +219,23 @@ while (my ($args, $version, $expectation) = splice @tests, 0, 3) {
pop @INC;
chdir ($up) or die "chdir $up failed: $!";
+ if ($args =~ / \Q$header\E$/) {
+ my $const_c = File::Spec->catfile($name, 'fallback', 'const-c.inc');
+ my ($found, $diag);
+ if (!open FILE, '<', $const_c) {
+ $diag = "can't open $const_c: $!";
+ }
+ else {
+ while (<FILE>) {
+ next unless /\b Bactrian 2? \b/x;
+ $found = 1;
+ last;
+ }
+ }
+ ok (!$found, "generated $const_c has no Bactrian(2)");
+ diag ($diag) if defined $diag;
+ }
+
foreach my $leaf (File::Spec->catfile('lib', "$name.pm"), 'Makefile.PL') {
my $file = File::Spec->catfile($name, $leaf);
if (ok (open (FILE, $file), "open $file")) {
diff --git a/gnu/usr.bin/perl/lib/overload.t b/gnu/usr.bin/perl/lib/overload.t
index c0478eef7f9..74adae340e5 100644
--- a/gnu/usr.bin/perl/lib/overload.t
+++ b/gnu/usr.bin/perl/lib/overload.t
@@ -48,7 +48,7 @@ package main;
$| = 1;
BEGIN { require './test.pl' }
-plan tests => 5041;
+plan tests => 5191;
use Scalar::Util qw(tainted);
@@ -131,7 +131,7 @@ $b++;
is(ref $b, "Oscalar");
is($a, "087");
-is($b, "88");
+is($b, "89");
is(ref $a, "Oscalar");
package Oscalar;
@@ -142,7 +142,7 @@ $b++;
is(ref $b, "Oscalar");
is($a, "087");
-is($b, "90");
+is($b, "91");
is(ref $a, "Oscalar");
$b=$a;
@@ -267,11 +267,12 @@ is("$aI", "xx");
is($aI, "xx");
is("b${aI}c", "_._.b.__.xx._.__.c._");
-# Here we test blessing to a package updates hash
+# Here we test that both "no overload" and
+# blessing to a package update hash
eval "package Oscalar; no overload '.'";
-is("b${a}", "_.b.__.xx._");
+is("b${a}", "bxx");
$x="1";
bless \$x, Oscalar;
is("b${a}c", "bxxc");
@@ -291,8 +292,8 @@ like($@, qr/no method found/);
eval "package Oscalar; sub comple; use overload '~' => 'comple'";
-$na = eval { ~$a }; # Hash was not updated
-like($@, qr/no method found/);
+$na = eval { ~$a };
+is($@, '');
bless \$x, Oscalar;
@@ -303,8 +304,8 @@ is($na, '_!_xx_!_');
$na = 0;
-$na = eval { ~$aI }; # Hash was not updated
-like($@, qr/no method found/);
+$na = eval { ~$aI };
+like($@, '');
bless \$x, OscalarI;
@@ -316,8 +317,8 @@ is($na, '_!_xx_!_');
eval "package Oscalar; sub rshft; use overload '>>' => 'rshft'";
-$na = eval { $aI >> 1 }; # Hash was not updated
-like($@, qr/no method found/);
+$na = eval { $aI >> 1 };
+is($@, '');
bless \$x, OscalarI;
@@ -961,11 +962,16 @@ unless ($aaa) {
my $a = "" ;
local $SIG{__WARN__} = sub {$a = $_[0]} ;
$x = eval ' use overload "~|_|~" => sub{} ' ;
+ eval ' no overload "~|_|~" ' ;
is($a, "");
use warnings 'overload' ;
$x = eval ' use overload "~|_|~" => sub{} ' ;
like($a, qr/^overload arg '~\|_\|~' is invalid at \(eval \d+\) line /,
'invalid arg warning');
+ undef $a;
+ eval ' no overload "~|_|~" ' ;
+ like($a, qr/^overload arg '~\|_\|~' is invalid at \(eval \d+\) line /,
+ 'invalid arg warning');
}
{
@@ -1113,18 +1119,6 @@ like ($@, qr/zap/);
}
{
- package Numify;
- use overload (qw(0+ numify fallback 1));
-
- sub new {
- my $val = $_[1];
- bless \$val, $_[0];
- }
-
- sub numify { ${$_[0]} }
-}
-
-{
package perl31793;
use overload cmp => sub { 0 };
package perl31793_fb;
@@ -1145,8 +1139,20 @@ like ($@, qr/zap/);
like(overload::StrVal($no), qr/^no_overload=ARRAY\(0x[0-9a-f]+\)$/);
}
-# These are all check that overloaded values rather than reference addresses
-# are what is getting tested.
+{
+ package Numify;
+ use overload (qw(0+ numify fallback 1));
+
+ sub new {
+ my $val = $_[1];
+ bless \$val, $_[0];
+ }
+
+ sub numify { ${$_[0]} }
+}
+
+# These all check that overloaded values, rather than reference addresses,
+# are what are getting tested.
my ($two, $one, $un, $deux) = map {new Numify $_} 2, 1, 1, 2;
my ($ein, $zwei) = (1, 2);
@@ -1200,17 +1206,23 @@ foreach my $op (qw(<=> == != < <= > >=)) {
# doesn't look like a regex
ok("x" =~ $x, "qr-only matches");
ok("y" !~ $x, "qr-only doesn't match what it shouldn't");
+ ok("x" =~ /^(??{$x})$/, "qr-only with ?? matches");
+ ok("y" !~ /^(??{$x})$/, "qr-only with ?? doesn't match what it shouldn't");
ok("xx" =~ /x$x/, "qr-only matches with concat");
like("$x", qr/^QRonly=ARRAY/, "qr-only doesn't have string overload");
my $qr = bless qr/y/, "QRonly";
ok("x" =~ $qr, "qr with qr-overload uses overload");
ok("y" !~ $qr, "qr with qr-overload uses overload");
+ ok("x" =~ /^(??{$qr})$/, "qr with qr-overload with ?? uses overload");
+ ok("y" !~ /^(??{$qr})$/, "qr with qr-overload with ?? uses overload");
is("$qr", "".qr/y/, "qr with qr-overload stringify");
my $rx = $$qr;
ok("y" =~ $rx, "bare rx with qr-overload doesn't overload match");
ok("x" !~ $rx, "bare rx with qr-overload doesn't overload match");
+ ok("y" =~ /^(??{$rx})$/, "bare rx with qr-overload with ?? doesn't overload match");
+ ok("x" !~ /^(??{$rx})$/, "bare rx with qr-overload with ?? doesn't overload match");
is("$rx", "".qr/y/, "bare rx with qr-overload stringify");
}
{
@@ -1851,6 +1863,9 @@ foreach my $op (qw(<=> == != < <= > >=)) {
or die "open of \$iter_text gave ($!)\n";
$subs{'<>'} = '<$iter_fh>';
push @tests, [ $iter_fh, '<%s>', '(<>)', undef, [ 1, 1, 0 ], 1 ];
+ push @tests, [ $iter_fh,
+ 'local *CORE::GLOBAL::glob = sub {}; eval q|<%s>|',
+ '(<>)', undef, [ 1, 1, 0 ], 1 ];
# eval should do tie, overload on its arg before checking taint */
push @tests, [ '1;', 'eval q(eval %s); $@ =~ /Insecure/',
@@ -1858,6 +1873,7 @@ foreach my $op (qw(<=> == != < <= > >=)) {
for my $sub (keys %subs) {
+ no warnings 'experimental::smartmatch';
my $term = $subs{$sub};
my $t = sprintf $term, '$_[0][0]';
my $e ="sub { \$funcs .= '($sub)'; my \$r; if (\$use_int) {"
@@ -1899,6 +1915,7 @@ foreach my $op (qw(<=> == != < <= > >=)) {
? "-\$_[0][0]"
: "$_[3](\$_[0][0])";
my $r;
+ no warnings 'experimental::smartmatch';
if ($use_int) {
use integer; $r = eval $e;
}
@@ -1945,7 +1962,7 @@ foreach my $op (qw(<=> == != < <= > >=)) {
$use_int = ($int ne '');
my $plain = $tainted_val;
my $plain_term = $int . sprintf $sub_term, '$plain';
- my $exp = eval $plain_term;
+ my $exp = do {no warnings 'experimental::smartmatch'; eval $plain_term };
diag("eval of plain_term <$plain_term> gave <$@>") if $@;
is(tainted($exp), $exp_taint,
"<$plain_term> taint of expected return");
@@ -1973,7 +1990,7 @@ foreach my $op (qw(<=> == != < <= > >=)) {
my $res_term = $int . sprintf $sub_term, $var;
my $desc = "<$res_term> $ov_pkg" ;
- my $res = eval $res_term;
+ my $res = do { no warnings 'experimental::smartmatch'; eval $res_term };
diag("eval of res_term $desc gave <$@>") if $@;
# uniquely, the inc/dec ops return the original
# ref rather than a copy, so stringify it to
@@ -2185,7 +2202,7 @@ fresh_perl_is
{
package Justus;
use overload '+' => 'justice';
- eval {bless[]};
+ eval {"".bless[]};
::like $@, qr/^Can't resolve method "justice" overloading "\+" in p(?x:
)ackage "Justus" at /,
'Error message when explicitly named overload method does not exist';
@@ -2194,19 +2211,49 @@ fresh_perl_is
our @ISA = 'JustYou';
package JustYou { use overload '+' => 'injustice'; }
"JustUs"->${\"(+"};
- eval {bless []};
+ eval {"".bless []};
::like $@, qr/^Stub found while resolving method "\?{3}" overloadin(?x:
)g "\+" in package "JustUs" at /,
'Error message when sub stub is encountered';
}
-{ # undefining the overload stash -- KEEP THIS TEST LAST
- package ant;
- use overload '+' => 'onion';
- $_ = \&overload::nil;
- undef %overload::;
- bless[];
- ::ok(1, 'no crash when undefining %overload::');
+{
+ # check that the right number of stringifications
+ # and the correct un-utf8-ifying happen on regex compile
+ package utf8_match;
+ my $c;
+ use overload '""' => sub { $c++; $_[0][0] ? "^\x{100}\$" : "^A\$"; };
+ my $o = bless [0], 'utf8_match';
+
+ $o->[0] = 0;
+ $c = 0;
+ ::ok("A" =~ "^A\$", "regex stringify utf8=0 ol=0 bytes=0");
+ ::ok("A" =~ $o, "regex stringify utf8=0 ol=1 bytes=0");
+ ::is($c, 1, "regex stringify utf8=0 ol=1 bytes=0 count");
+
+ $o->[0] = 1;
+ $c = 0;
+ ::ok("\x{100}" =~ "^\x{100}\$",
+ "regex stringify utf8=1 ol=0 bytes=0");
+ ::ok("\x{100}" =~ $o, "regex stringify utf8=1 ol=1 bytes=0");
+ ::is($c, 1, "regex stringify utf8=1 ol=1 bytes=0 count");
+
+ use bytes;
+
+ $o->[0] = 0;
+ $c = 0;
+ ::ok("A" =~ "^A\$", "regex stringify utf8=0 ol=0 bytes=1");
+ ::ok("A" =~ $o, "regex stringify utf8=0 ol=1 bytes=1");
+ ::is($c, 1, "regex stringify utf8=0 ol=1 bytes=1 count");
+
+ $o->[0] = 1;
+ $c = 0;
+ ::ok("\xc4\x80" =~ "^\x{100}\$",
+ "regex stringify utf8=1 ol=0 bytes=1");
+ ::ok("\xc4\x80" =~ $o, "regex stringify utf8=1 ol=1 bytes=1");
+ ::is($c, 1, "regex stringify utf8=1 ol=1 bytes=1 count");
+
+
}
# [perl #40333]
@@ -2243,5 +2290,413 @@ ok !overload::Overloaded(new proxy new o),
ok(overload::Overloaded($obj));
}
+sub eleventative::cos { 'eleven' }
+sub twelvetative::abs { 'twelve' }
+sub thirteentative::abs { 'thirteen' }
+sub fourteentative::abs { 'fourteen' }
+@eleventative::ISA = twelvetative::;
+{
+ my $o = bless [], 'eleventative';
+ eval 'package eleventative; use overload map +($_)x2, cos=>abs=>';
+ is cos $o, 'eleven', 'overloading applies to object blessed before';
+ bless [], 'eleventative';
+ is cos $o, 'eleven',
+ 'ovrld applies to previously-blessed obj after other obj is blessed';
+ $o = bless [], 'eleventative';
+ *eleventative::cos = sub { 'ten' };
+ is cos $o, 'ten', 'method changes affect overloading';
+ @eleventative::ISA = thirteentative::;
+ is abs $o, 'thirteen', 'isa changes affect overloading';
+ bless $o, 'fourteentative';
+ @fourteentative::ISA = 'eleventative';
+ is abs $o, 'fourteen', 'isa changes can turn overloading on';
+}
+
+# no overload "fallback";
+{ package phake;
+ use overload fallback => 1, '""' => sub { 'arakas' };
+ no overload 'fallback';
+}
+$a = bless [], 'phake';
+is "$a", "arakas",
+ 'no overload "fallback" does not stop overload from working';
+ok !eval { () = $a eq 'mpizeli'; 1 },
+ 'no overload "fallback" resets fallback to undef on overloaded class';
+{ package ent; use overload fallback => 0, abs => sub{};
+ our@ISA = 'huorn';
+ package huorn;
+ use overload fallback => 1;
+ package ent;
+ no overload "fallback"; # disable previous declaration
+}
+$a = bless [], ent::;
+is eval {"$a"}, overload::StrVal($a),
+ 'no overload undoes fallback declaration completetly'
+ or diag $@;
+
+# inherited fallback
+{
+ package pervyy;
+ our @ISA = 'vtoryy';
+ use overload "abs" =>=> sub {};
+ package vtoryy;
+ use overload fallback => 1, 'sin' =>=> sub{}
+}
+$a = bless [], pervyy::;
+is eval {"$a"}, overload::StrVal($a),
+ 'fallback is inherited by classes that have their own overloading'
+ or diag $@;
+
+# package separators in method names
+{
+ package mane;
+ use overload q\""\ => "bear::strength";
+ use overload bool => "bear'bouillon";
+}
+@bear::ISA = 'food';
+sub food::strength { 'twine' }
+sub food::bouillon { 0 }
+$a = bless[], mane::;
+is eval { "$a" }, 'twine', ':: in method name' or diag $@;
+is eval { !$a }, 1, "' in method name" or diag $@;
+
+# [perl #113050] Half of CPAN assumes fallback is under "()"
+{
+ package dodo;
+ use overload '+' => sub {};
+ no strict;
+ *{"dodo::()"} = sub{};
+ ${"dodo::()"} = 1;
+}
+$a = bless [],'dodo';
+is eval {"$a"}, overload::StrVal($a), 'fallback is stored under "()"';
+
+# [perl #47119]
+{
+ my $context;
+
+ {
+ package Splitter;
+ use overload '<>' => \&chars;
+
+ sub new {
+ my $class = shift;
+ my ($string) = @_;
+ bless \$string, $class;
+ }
+
+ sub chars {
+ my $self = shift;
+ my @chars = split //, $$self;
+ $context = wantarray;
+ return @chars;
+ }
+ }
+
+ my $obj = Splitter->new('bar');
+
+ $context = 42; # not 1, '', or undef
+
+ my @foo = <$obj>;
+ is($context, 1, "list context (readline list)");
+ is(scalar(@foo), 3, "correct result (readline list)");
+ is($foo[0], 'b', "correct result (readline list)");
+ is($foo[1], 'a', "correct result (readline list)");
+ is($foo[2], 'r', "correct result (readline list)");
+
+ $context = 42;
+
+ my $foo = <$obj>;
+ ok(defined($context), "scalar context (readline scalar)");
+ is($context, '', "scalar context (readline scalar)");
+ is($foo, 3, "correct result (readline scalar)");
+
+ $context = 42;
+
+ <$obj>;
+ ok(!defined($context), "void context (readline void)");
+
+ $context = 42;
+
+ my @bar = <${obj}>;
+ is($context, 1, "list context (glob list)");
+ is(scalar(@bar), 3, "correct result (glob list)");
+ is($bar[0], 'b', "correct result (glob list)");
+ is($bar[1], 'a', "correct result (glob list)");
+ is($bar[2], 'r', "correct result (glob list)");
+
+ $context = 42;
+
+ my $bar = <${obj}>;
+ ok(defined($context), "scalar context (glob scalar)");
+ is($context, '', "scalar context (glob scalar)");
+ is($bar, 3, "correct result (glob scalar)");
+
+ $context = 42;
+
+ <${obj}>;
+ ok(!defined($context), "void context (glob void)");
+}
+{
+ my $context;
+
+ {
+ package StringWithContext;
+ use overload '""' => \&stringify;
+
+ sub new {
+ my $class = shift;
+ my ($string) = @_;
+ bless \$string, $class;
+ }
+
+ sub stringify {
+ my $self = shift;
+ $context = wantarray;
+ return $$self;
+ }
+ }
+
+ my $obj = StringWithContext->new('bar');
+
+ $context = 42;
+
+ my @foo = "".$obj;
+ ok(defined($context), "scalar context (stringify list)");
+ is($context, '', "scalar context (stringify list)");
+ is(scalar(@foo), 1, "correct result (stringify list)");
+ is($foo[0], 'bar', "correct result (stringify list)");
+
+ $context = 42;
+
+ my $foo = "".$obj;
+ ok(defined($context), "scalar context (stringify scalar)");
+ is($context, '', "scalar context (stringify scalar)");
+ is($foo, 'bar', "correct result (stringify scalar)");
+
+ $context = 42;
+
+ "".$obj;
+
+ is($context, '', "scalar context (stringify void)");
+}
+{
+ my ($context, $swap);
+
+ {
+ package AddWithContext;
+ use overload '+' => \&add;
+
+ sub new {
+ my $class = shift;
+ my ($num) = @_;
+ bless \$num, $class;
+ }
+
+ sub add {
+ my $self = shift;
+ my ($other, $swapped) = @_;
+ $context = wantarray;
+ $swap = $swapped;
+ return ref($self)->new($$self + $other);
+ }
+
+ sub val { ${ $_[0] } }
+ }
+
+ my $obj = AddWithContext->new(6);
+
+ $context = $swap = 42;
+
+ my @foo = $obj + 7;
+ ok(defined($context), "scalar context (add list)");
+ is($context, '', "scalar context (add list)");
+ ok(defined($swap), "not swapped (add list)");
+ is($swap, '', "not swapped (add list)");
+ is(scalar(@foo), 1, "correct result (add list)");
+ is($foo[0]->val, 13, "correct result (add list)");
+
+ $context = $swap = 42;
+
+ @foo = 7 + $obj;
+ ok(defined($context), "scalar context (add list swap)");
+ is($context, '', "scalar context (add list swap)");
+ ok(defined($swap), "swapped (add list swap)");
+ is($swap, 1, "swapped (add list swap)");
+ is(scalar(@foo), 1, "correct result (add list swap)");
+ is($foo[0]->val, 13, "correct result (add list swap)");
+
+ $context = $swap = 42;
+
+ my $foo = $obj + 7;
+ ok(defined($context), "scalar context (add scalar)");
+ is($context, '', "scalar context (add scalar)");
+ ok(defined($swap), "not swapped (add scalar)");
+ is($swap, '', "not swapped (add scalar)");
+ is($foo->val, 13, "correct result (add scalar)");
+
+ $context = $swap = 42;
+
+ my $foo = 7 + $obj;
+ ok(defined($context), "scalar context (add scalar swap)");
+ is($context, '', "scalar context (add scalar swap)");
+ ok(defined($swap), "swapped (add scalar swap)");
+ is($swap, 1, "swapped (add scalar swap)");
+ is($foo->val, 13, "correct result (add scalar swap)");
+
+ $context = $swap = 42;
+
+ $obj + 7;
+
+ ok(!defined($context), "void context (add void)");
+ ok(defined($swap), "not swapped (add void)");
+ is($swap, '', "not swapped (add void)");
+
+ $context = $swap = 42;
+
+ 7 + $obj;
+
+ ok(!defined($context), "void context (add void swap)");
+ ok(defined($swap), "swapped (add void swap)");
+ is($swap, 1, "swapped (add void swap)");
+
+ $obj = AddWithContext->new(6);
+
+ $context = $swap = 42;
+
+ my @foo = $obj += 7;
+ ok(defined($context), "scalar context (add assign list)");
+ is($context, '', "scalar context (add assign list)");
+ ok(!defined($swap), "not swapped and autogenerated (add assign list)");
+ is(scalar(@foo), 1, "correct result (add assign list)");
+ is($foo[0]->val, 13, "correct result (add assign list)");
+ is($obj->val, 13, "correct result (add assign list)");
+
+ $obj = AddWithContext->new(6);
+
+ $context = $swap = 42;
+
+ my $foo = $obj += 7;
+ ok(defined($context), "scalar context (add assign scalar)");
+ is($context, '', "scalar context (add assign scalar)");
+ ok(!defined($swap), "not swapped and autogenerated (add assign scalar)");
+ is($foo->val, 13, "correct result (add assign scalar)");
+ is($obj->val, 13, "correct result (add assign scalar)");
+
+ $obj = AddWithContext->new(6);
+
+ $context = $swap = 42;
+
+ $obj += 7;
+
+ ok(defined($context), "scalar context (add assign void)");
+ is($context, '', "scalar context (add assign void)");
+ ok(!defined($swap), "not swapped and autogenerated (add assign void)");
+ is($obj->val, 13, "correct result (add assign void)");
+
+ $obj = AddWithContext->new(6);
+
+ $context = $swap = 42;
+
+ my @foo = ++$obj;
+ ok(defined($context), "scalar context (add incr list)");
+ is($context, '', "scalar context (add incr list)");
+ ok(!defined($swap), "not swapped and autogenerated (add incr list)");
+ is(scalar(@foo), 1, "correct result (add incr list)");
+ is($foo[0]->val, 7, "correct result (add incr list)");
+ is($obj->val, 7, "correct result (add incr list)");
+
+ $obj = AddWithContext->new(6);
+
+ $context = $swap = 42;
+
+ my $foo = ++$obj;
+ ok(defined($context), "scalar context (add incr scalar)");
+ is($context, '', "scalar context (add incr scalar)");
+ ok(!defined($swap), "not swapped and autogenerated (add incr scalar)");
+ is($foo->val, 7, "correct result (add incr scalar)");
+ is($obj->val, 7, "correct result (add incr scalar)");
+
+ $obj = AddWithContext->new(6);
+
+ $context = $swap = 42;
+
+ ++$obj;
+
+ ok(defined($context), "scalar context (add incr void)");
+ is($context, '', "scalar context (add incr void)");
+ ok(!defined($swap), "not swapped and autogenerated (add incr void)");
+ is($obj->val, 7, "correct result (add incr void)");
+}
+
+# [perl #113010]
+{
+ {
+ package OnlyFallback;
+ use overload fallback => 0;
+ }
+ {
+ my $obj = bless {}, 'OnlyFallback';
+ my $died = !eval { "".$obj; 1 };
+ my $err = $@;
+ ok($died, "fallback of 0 causes error");
+ like($err, qr/"\.": no method found/, "correct error");
+ }
+
+ {
+ package OnlyFallbackUndef;
+ use overload fallback => undef;
+ }
+ {
+ my $obj = bless {}, 'OnlyFallbackUndef';
+ my $died = !eval { "".$obj; 1 };
+ my $err = $@;
+ ok($died, "fallback of undef causes error");
+ # this one tries falling back to stringify before dying
+ like($err, qr/"""": no method found/, "correct error");
+ }
+
+ {
+ package OnlyFallbackTrue;
+ use overload fallback => 1;
+ }
+ {
+ my $obj = bless {}, 'OnlyFallbackTrue';
+ my $val;
+ my $died = !eval { $val = "".$obj; 1 };
+ my $err = $@;
+ ok(!$died, "fallback of 1 doesn't cause error")
+ || diag("got error of $err");
+ like($val, qr/^OnlyFallbackTrue=HASH\(/, "stringified correctly");
+ }
+}
+
+{
+ # Making Regexp class overloaded: avoid infinite recursion.
+ # Do this in a separate process since it, well, overloads Regexp!
+ fresh_perl_is(
+ <<'EOF',
+package Regexp;
+use overload q{""} => sub {$_[0] };
+package main;
+my $r1 = qr/1/;
+my $r2 = qr/ABC$r1/;
+print $r2,"\n";
+EOF
+ '(?^:ABC(?^:1))',
+ { stderr => 1 },
+ 'overloaded REGEXP'
+ );
+}
+
+{ # undefining the overload stash -- KEEP THIS TEST LAST
+ package ant;
+ use overload '+' => 'onion';
+ $_ = \&overload::nil;
+ undef %overload::;
+ ()=0+bless[];
+ ::ok(1, 'no crash when undefining %overload::');
+}
+
# EOF
diff --git a/gnu/usr.bin/perl/lib/overload/numbers.pm b/gnu/usr.bin/perl/lib/overload/numbers.pm
index f56fa630cc8..a90c175db98 100644
--- a/gnu/usr.bin/perl/lib/overload/numbers.pm
+++ b/gnu/usr.bin/perl/lib/overload/numbers.pm
@@ -82,7 +82,6 @@ our @names = qw#
(~~
(-X
(qr
- DESTROY
#;
our @enums = qw#
@@ -154,7 +153,6 @@ our @enums = qw#
smart
ftest
regexp
- DESTROY
#;
{ my $i = 0; our %names = map { $_ => $i++ } @names }
diff --git a/gnu/usr.bin/perl/lib/perl5db.t b/gnu/usr.bin/perl/lib/perl5db.t
index c7633fc2207..37a0119471b 100644
--- a/gnu/usr.bin/perl/lib/perl5db.t
+++ b/gnu/usr.bin/perl/lib/perl5db.t
@@ -28,7 +28,7 @@ BEGIN {
}
}
-plan(30);
+plan(116);
my $rc_filename = '.perldb';
@@ -65,121 +65,6 @@ sub _out_contents
return _slurp($out_fn);
}
-{
- my $target = '../lib/perl5db/t/eval-line-bug';
-
- rc(
- <<"EOF",
- &parse_options("NonStop=0 TTY=db.out LineInfo=db.out");
-
- sub afterinit {
- push(\@DB::typeahead,
- 'b 23',
- 'n',
- 'n',
- 'n',
- 'c', # line 23
- 'n',
- "p \\\@{'main::_<$target'}",
- 'q',
- );
- }
-EOF
- );
-
- {
- local $ENV{PERLDB_OPTS} = "ReadLine=0";
- runperl(switches => [ '-d' ], progfile => $target);
- }
-}
-
-like(_out_contents(), qr/sub factorial/,
- 'The ${main::_<filename} variable in the debugger was not destroyed'
-);
-
-{
- my $target = '../lib/perl5db/t/eval-line-bug';
-
- rc(
- <<"EOF",
- &parse_options("NonStop=0 TTY=db.out LineInfo=db.out");
-
- sub afterinit {
- push(\@DB::typeahead,
- 'b 23',
- 'c',
- '\$new_var = "Foo"',
- 'x "new_var = <\$new_var>\\n";',
- 'q',
- );
- }
-EOF
- );
-
- {
- local $ENV{PERLDB_OPTS} = "ReadLine=0";
- runperl(switches => [ '-d' ], progfile => $target);
- }
-}
-
-like(_out_contents(), qr/new_var = <Foo>/,
- "no strict 'vars' in evaluated lines.",
-);
-
-{
- local $ENV{PERLDB_OPTS} = "ReadLine=0";
- my $output = runperl(switches => [ '-d' ], progfile => '../lib/perl5db/t/lvalue-bug');
- like($output, qr/foo is defined/, 'lvalue subs work in the debugger');
-}
-
-{
- local $ENV{PERLDB_OPTS} = "ReadLine=0 NonStop=1";
- my $output = runperl(switches => [ '-d' ], progfile => '../lib/perl5db/t/symbol-table-bug');
- like($output, qr/Undefined symbols 0/, 'there are no undefined values in the symbol table');
-}
-
-SKIP: {
- if ( $Config{usethreads} ) {
- skip('This perl has threads, skipping non-threaded debugger tests');
- } else {
- my $error = 'This Perl not built to support threads';
- my $output = runperl( switches => [ '-dt' ], stderr => 1 );
- like($output, qr/$error/, 'Perl debugger correctly complains that it was not built with threads');
- }
-
-}
-SKIP: {
- if ( $Config{usethreads} ) {
- local $ENV{PERLDB_OPTS} = "ReadLine=0 NonStop=1";
- my $output = runperl(switches => [ '-dt' ], progfile => '../lib/perl5db/t/symbol-table-bug');
- like($output, qr/Undefined symbols 0/, 'there are no undefined values in the symbol table when running with thread support');
- } else {
- skip("This perl is not threaded, skipping threaded debugger tests");
- }
-}
-
-
-# Test [perl #61222]
-{
- local $ENV{PERLDB_OPTS};
- rc(
- <<'EOF',
- &parse_options("NonStop=0 TTY=db.out LineInfo=db.out");
-
- sub afterinit {
- push(@DB::typeahead,
- 'm Pie',
- 'q',
- );
- }
-EOF
- );
-
- my $output = runperl(switches => [ '-d' ], stderr => 1, progfile => '../lib/perl5db/t/rt-61222');
- unlike(_out_contents(), qr/INCORRECT/, "[perl #61222]");
-}
-
-
# Test for Proxy constants
{
@@ -208,8 +93,21 @@ EOF
my $output = runperl(switches => [ '-d' ], stderr => 1, progfile => '../lib/perl5db/t/rt-66110');
like($output, "All tests successful.", "[perl #66110]");
}
+# [ perl #116769] Frame=2
+{
+ local $ENV{PERLDB_OPTS} = "frame=2 nonstop";
+ my $output = runperl( switches => [ '-d' ], prog => 'print q{success}' );
+ is( $?, 0, '[perl #116769] frame=2 does not crash debugger, exit == 0' );
+ like( $output, 'success' , '[perl #116769] code is run' );
+}
+# [ perl #116771] autotrace
+{
+ local $ENV{PERLDB_OPTS} = "autotrace nonstop";
+ my $output = runperl( switches => [ '-d' ], prog => 'print q{success}' );
+ is( $?, 0, '[perl #116771] autotrace does not crash debugger, exit == 0' );
+ like( $output, 'success' , '[perl #116771] code is run' );
+}
-# [perl 104168] level option for tracing
{
rc(<<'EOF');
&parse_options("NonStop=0 TTY=db.out LineInfo=db.out");
@@ -223,21 +121,6 @@ sub afterinit {
}
EOF
-
- my $output = runperl(switches => [ '-d' ], stderr => 1, progfile => '../lib/perl5db/t/rt-104168');
- my $contents = _out_contents();
- like($contents, qr/level 2/, "[perl #104168]");
- unlike($contents, qr/baz/, "[perl #104168]");
-}
-
-# taint tests
-
-{
- local $ENV{PERLDB_OPTS} = "ReadLine=0 NonStop=1";
- my $output = runperl(switches => [ '-d', '-T' ], stderr => 1,
- progfile => '../lib/perl5db/t/taint');
- chomp $output if $^O eq 'VMS'; # newline guaranteed at EOF
- is($output, '[$^X][done]', "taint");
}
package DebugWrap;
@@ -294,6 +177,42 @@ sub _include_t
return $self->{_include_t};
}
+sub _stderr_val
+{
+ my $self = shift;
+
+ if (@_)
+ {
+ $self->{_stderr_val} = shift;
+ }
+
+ return $self->{_stderr_val};
+}
+
+sub field
+{
+ my $self = shift;
+
+ if (@_)
+ {
+ $self->{field} = shift;
+ }
+
+ return $self->{field};
+}
+
+sub _switches
+{
+ my $self = shift;
+
+ if (@_)
+ {
+ $self->{_switches} = shift;
+ }
+
+ return $self->{_switches};
+}
+
sub _contents
{
my $self = shift;
@@ -328,6 +247,13 @@ sub _init
$self->_include_t($args->{include_t} ? 1 : 0);
+ $self->_stderr_val(exists($args->{stderr}) ? $args->{stderr} : 1);
+
+ if (exists($args->{switches}))
+ {
+ $self->_switches($args->{switches});
+ }
+
$self->_run();
return;
@@ -367,10 +293,13 @@ sub _run {
::runperl(
switches =>
[
- '-d',
+ ($self->_switches ? (@{$self->_switches()}) : ('-d')),
($self->_include_t ? ('-I', '../lib/perl5db/t') : ())
],
- stderr => 1,
+ (defined($self->_stderr_val())
+ ? (stderr => $self->_stderr_val())
+ : ()
+ ),
progfile => $self->_prog()
);
@@ -381,6 +310,11 @@ sub _run {
return;
}
+sub get_output
+{
+ return shift->_output();
+}
+
sub output_like {
my ($self, $re, $msg) = @_;
@@ -388,6 +322,13 @@ sub output_like {
::like($self->_output(), $re, $msg);
}
+sub output_unlike {
+ my ($self, $re, $msg) = @_;
+
+ local $::Level = $::Level + 1;
+ ::unlike($self->_output(), $re, $msg);
+}
+
sub contents_like {
my ($self, $re, $msg) = @_;
@@ -395,8 +336,211 @@ sub contents_like {
::like($self->_contents(), $re, $msg);
}
+sub contents_unlike {
+ my ($self, $re, $msg) = @_;
+
+ local $::Level = $::Level + 1;
+ ::unlike($self->_contents(), $re, $msg);
+}
+
package main;
+{
+ local $ENV{PERLDB_OPTS} = "ReadLine=0";
+ my $target = '../lib/perl5db/t/eval-line-bug';
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'b 23',
+ 'n',
+ 'n',
+ 'n',
+ 'c', # line 23
+ 'n',
+ "p \@{'main::_<$target'}",
+ 'q',
+ ],
+ prog => $target,
+ }
+ );
+ $wrapper->contents_like(
+ qr/sub factorial/,
+ 'The ${main::_<filename} variable in the debugger was not destroyed',
+ );
+}
+
+sub _calc_generic_wrapper
+{
+ my $args = shift;
+
+ my $extra_opts = delete($args->{extra_opts});
+ $extra_opts ||= '';
+ local $ENV{PERLDB_OPTS} = "ReadLine=0" . $extra_opts;
+ return DebugWrap->new(
+ {
+ cmds => delete($args->{cmds}),
+ prog => delete($args->{prog}),
+ %$args,
+ }
+ );
+}
+
+sub _calc_new_var_wrapper
+{
+ my ($args) = @_;
+ return _calc_generic_wrapper(
+ {
+ cmds =>
+ [
+ 'b 23',
+ 'c',
+ '$new_var = "Foo"',
+ 'x "new_var = <$new_var>\\n"',
+ 'q',
+ ],
+ %$args,
+ }
+ );
+}
+
+sub _calc_threads_wrapper
+{
+ my $args = shift;
+
+ return _calc_new_var_wrapper(
+ {
+ switches => [ '-dt', ],
+ stderr => 1,
+ %$args
+ }
+ );
+}
+
+{
+ _calc_new_var_wrapper({ prog => '../lib/perl5db/t/eval-line-bug'})
+ ->contents_like(
+ qr/new_var = <Foo>/,
+ "no strict 'vars' in evaluated lines.",
+ );
+}
+
+{
+ _calc_new_var_wrapper(
+ {
+ prog => '../lib/perl5db/t/lvalue-bug',
+ stderr => undef(),
+ },
+ )->output_like(
+ qr/foo is defined/,
+ 'lvalue subs work in the debugger',
+ );
+}
+
+{
+ _calc_new_var_wrapper(
+ {
+ prog => '../lib/perl5db/t/symbol-table-bug',
+ extra_opts => "NonStop=1",
+ stderr => undef(),
+ }
+ )->output_like(
+ qr/Undefined symbols 0/,
+ 'there are no undefined values in the symbol table',
+ );
+}
+
+SKIP:
+{
+ if ( $Config{usethreads} ) {
+ skip('This perl has threads, skipping non-threaded debugger tests');
+ }
+ else {
+ my $error = 'This Perl not built to support threads';
+ _calc_threads_wrapper(
+ {
+ prog => '../lib/perl5db/t/eval-line-bug',
+ }
+ )->output_like(
+ qr/\Q$error\E/,
+ 'Perl debugger correctly complains that it was not built with threads',
+ );
+ }
+}
+
+SKIP:
+{
+ if ( $Config{usethreads} ) {
+ _calc_threads_wrapper(
+ {
+ prog => '../lib/perl5db/t/symbol-table-bug',
+ }
+ )->output_like(
+ qr/Undefined symbols 0/,
+ 'there are no undefined values in the symbol table when running with thread support',
+ );
+ }
+ else {
+ skip("This perl is not threaded, skipping threaded debugger tests");
+ }
+}
+
+# Test [perl #61222]
+{
+ local $ENV{PERLDB_OPTS};
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'm Pie',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/rt-61222',
+ }
+ );
+
+ $wrapper->contents_unlike(qr/INCORRECT/, "[perl #61222]");
+}
+
+sub _calc_trace_wrapper
+{
+ my ($args) = @_;
+
+ return _calc_generic_wrapper(
+ {
+ cmds =>
+ [
+ 't 2',
+ 'c',
+ 'q',
+ ],
+ %$args,
+ }
+ );
+}
+
+# [perl 104168] level option for tracing
+{
+ my $wrapper = _calc_trace_wrapper({ prog => '../lib/perl5db/t/rt-104168' });
+ $wrapper->contents_like(qr/level 2/, "[perl #104168] - level 2 appears");
+ $wrapper->contents_unlike(qr/baz/, "[perl #104168] - no 'baz'");
+}
+
+# taint tests
+{
+ my $wrapper = _calc_trace_wrapper(
+ {
+ prog => '../lib/perl5db/t/taint',
+ extra_opts => ' NonStop=1',
+ switches => [ '-d', '-T', ],
+ }
+ );
+
+ my $output = $wrapper->get_output();
+ chomp $output if $^O eq 'VMS'; # newline guaranteed at EOF
+ is($output, '[$^X][done]', "taint");
+}
+
# Testing that we can set a line in the middle of the file.
{
my $wrapper = DebugWrap->new(
@@ -668,6 +812,74 @@ package main;
);
}
+# Tests for x with @_
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'b 10',
+ 'c',
+ 'x @_',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-passing-at-underscore-to-x-etc',
+ }
+ );
+
+ $wrapper->contents_like(
+ # qr/^0\s+HASH\([^\)]+\)\n\s+500 => 600\n/,
+ qr/Arg1.*?Capsula.*GreekHumor.*Socrates/ms,
+ q/x command test with '@_'./,
+ );
+}
+
+# Tests for mutating @_
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'b 10',
+ 'c',
+ 'shift(@_)',
+ 'print "\n\n\n(((" . join(",", @_) . ")))\n\n\n"',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-passing-at-underscore-to-x-etc',
+ }
+ );
+
+ $wrapper->output_like(
+ qr/^\(\(\(Capsula,GreekHumor,Socrates\)\)\)$/ms,
+ q/Mutating '@_'./,
+ );
+}
+
+# Tests for x with AutoTrace=1.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'n',
+ 'o AutoTrace=1',
+ # So it may fail.
+ q/x "failure"/,
+ q/x \$x/,
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/with-subroutine',
+ }
+ );
+
+ $wrapper->contents_like(
+ # qr/^0\s+HASH\([^\)]+\)\n\s+500 => 600\n/,
+ qr/^0\s+SCALAR\([^\)]+\)\n\s+-> 'hello world'\n/ms,
+ "x after AutoTrace=1 command is working."
+ );
+}
+
# Tests for "T" (stack trace).
{
my $prog_fn = '../lib/perl5db/t/rt-104168';
@@ -689,11 +901,11 @@ package main;
"'" . quotemeta($prog_fn) . "' line %s\\n",
(map { quotemeta($_) } @$_)
)
- }
+ }
(
['.', 'main::baz', 14,],
['.', 'main::bar', 9,],
- ['.', 'main::foo', 6]
+ ['.', 'main::foo', 6],
)
);
$wrapper->contents_like(
@@ -808,6 +1020,1693 @@ package main;
);
}
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'b fact',
+ 'c',
+ 'c',
+ 'c',
+ 'n',
+ 'print "<$n>"',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/fact',
+ }
+ );
+
+ $wrapper->output_like(
+ qr/<3>/,
+ 'b subroutine works fine',
+ );
+}
+
+# Test for 'M' (module list).
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'M',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/load-modules'
+ }
+ );
+
+ $wrapper->contents_like(
+ qr[Scalar/Util\.pm],
+ 'M (module list) works fine',
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'b 14',
+ 'c',
+ '$flag = 1;',
+ 'r',
+ 'print "Var=$var\n";',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-r-statement',
+ }
+ );
+
+ $wrapper->output_like(
+ qr/
+ ^Foo$
+ .*?
+ ^Bar$
+ .*?
+ ^Var=Test$
+ /msx,
+ 'r statement is working properly.',
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'l',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-l-statement-1',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr/
+ ^1==>\s+\$x\ =\ 1;\n
+ 2:\s+print\ "1\\n";\n
+ 3\s*\n
+ 4:\s+\$x\ =\ 2;\n
+ 5:\s+print\ "2\\n";\n
+ /msx,
+ 'l statement is working properly (test No. 1).',
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'l',
+ q/# After l 1/,
+ 'l',
+ q/# After l 2/,
+ '-',
+ q/# After -/,
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-l-statement-1',
+ }
+ );
+
+ my $first_l_out = qr/
+ 1==>\s+\$x\ =\ 1;\n
+ 2:\s+print\ "1\\n";\n
+ 3\s*\n
+ 4:\s+\$x\ =\ 2;\n
+ 5:\s+print\ "2\\n";\n
+ 6\s*\n
+ 7:\s+\$x\ =\ 3;\n
+ 8:\s+print\ "3\\n";\n
+ 9\s*\n
+ 10:\s+\$x\ =\ 4;\n
+ /msx;
+
+ my $second_l_out = qr/
+ 11:\s+print\ "4\\n";\n
+ 12\s*\n
+ 13:\s+\$x\ =\ 5;\n
+ 14:\s+print\ "5\\n";\n
+ 15\s*\n
+ 16:\s+\$x\ =\ 6;\n
+ 17:\s+print\ "6\\n";\n
+ 18\s*\n
+ 19:\s+\$x\ =\ 7;\n
+ 20:\s+print\ "7\\n";\n
+ /msx;
+ $wrapper->contents_like(
+ qr/
+ ^$first_l_out
+ [^\n]*?DB<\d+>\ \#\ After\ l\ 1\n
+ [\ \t]*\n
+ [^\n]*?DB<\d+>\ l\s*\n
+ $second_l_out
+ [^\n]*?DB<\d+>\ \#\ After\ l\ 2\n
+ [\ \t]*\n
+ [^\n]*?DB<\d+>\ -\s*\n
+ $first_l_out
+ [^\n]*?DB<\d+>\ \#\ After\ -\n
+ /msx,
+ 'l followed by l and then followed by -',
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'l fact',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-l-statement-2',
+ }
+ );
+
+ my $first_l_out = qr/
+ 6\s+sub\ fact\ \{\n
+ 7:\s+my\ \$n\ =\ shift;\n
+ 8:\s+if\ \(\$n\ >\ 1\)\ \{\n
+ 9:\s+return\ \$n\ \*\ fact\(\$n\ -\ 1\);
+ /msx;
+
+ $wrapper->contents_like(
+ qr/
+ DB<1>\s+l\ fact\n
+ $first_l_out
+ /msx,
+ 'l subroutine_name',
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'b fact',
+ 'c',
+ # Repeat several times to avoid @typeahead problems.
+ '.',
+ '.',
+ '.',
+ '.',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-l-statement-2',
+ }
+ );
+
+ my $line_out = qr /
+ ^main::fact\([^\n]*?:7\):\n
+ ^7:\s+my\ \$n\ =\ shift;\n
+ /msx;
+
+ $wrapper->contents_like(
+ qr/
+ $line_out
+ $line_out
+ /msx,
+ 'Test the "." command',
+ );
+}
+
+# Testing that the f command works.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'f ../lib/perl5db/t/MyModule.pm',
+ 'b 12',
+ 'c',
+ q/do { use IO::Handle; STDOUT->autoflush(1); print "Var=$var\n"; }/,
+ 'c',
+ 'q',
+ ],
+ include_t => 1,
+ prog => '../lib/perl5db/t/filename-line-breakpoint'
+ }
+ );
+
+ $wrapper->output_like(qr/
+ ^Var=Bar$
+ .*
+ ^In\ MyModule\.$
+ .*
+ ^In\ Main\ File\.$
+ .*
+ /msx,
+ "f command is working.",
+ );
+}
+
+# We broke the /pattern/ command because apparently the CORE::eval-s inside
+# lib/perl5db.pl cannot handle lexical variable properly. So we now fix this
+# bug.
+#
+# TODO :
+#
+# 1. Go over the rest of the "eval"s in lib/perl5db.t and see if they cause
+# problems.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ '/for/',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/eval-line-bug',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr/12: \s* for\ my\ \$q\ \(1\ \.\.\ 10\)\ \{/msx,
+ "/pat/ command is working and found a match.",
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'b 22',
+ 'c',
+ '?for?',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/eval-line-bug',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr/12: \s* for\ my\ \$q\ \(1\ \.\.\ 10\)\ \{/msx,
+ "?pat? command is working and found a match.",
+ );
+}
+
+# Test the L command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'b 6',
+ 'b 13 ($q == 5)',
+ 'L',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/eval-line-bug',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr#
+ ^\S*?eval-line-bug:\n
+ \s*6:\s*my\ \$i\ =\ 5;\n
+ \s*break\ if\ \(1\)\n
+ \s*13:\s*\$i\ \+=\ \$q;\n
+ \s*break\ if\ \(\(\$q\ ==\ 5\)\)\n
+ #msx,
+ "L command is listing breakpoints",
+ );
+}
+
+# Test the L command for watch expressions.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'w (5+6)',
+ 'L',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/eval-line-bug',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr#
+ ^Watch-expressions:\n
+ \s*\(5\+6\)\n
+ #msx,
+ "L command is listing watch expressions",
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'w (5+6)',
+ 'w (11*23)',
+ 'W (5+6)',
+ 'L',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/eval-line-bug',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr#
+ ^Watch-expressions:\n
+ \s*\(11\*23\)\n
+ ^auto\(
+ #msx,
+ "L command is not listing deleted watch expressions",
+ );
+}
+
+# Test the L command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'b 6',
+ 'a 13 print $i',
+ 'L',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/eval-line-bug',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr#
+ ^\S*?eval-line-bug:\n
+ \s*6:\s*my\ \$i\ =\ 5;\n
+ \s*break\ if\ \(1\)\n
+ \s*13:\s*\$i\ \+=\ \$q;\n
+ \s*action:\s+print\ \$i\n
+ #msx,
+ "L command is listing actions and breakpoints",
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'S',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/rt-104168',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr#
+ ^main::bar\n
+ main::baz\n
+ main::foo\n
+ #msx,
+ "S command - 1",
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'S ^main::ba',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/rt-104168',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr#
+ ^main::bar\n
+ main::baz\n
+ auto\(
+ #msx,
+ "S command with regex",
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'S !^main::ba',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/rt-104168',
+ }
+ );
+
+ $wrapper->contents_unlike(
+ qr#
+ ^main::ba
+ #msx,
+ "S command with negative regex",
+ );
+
+ $wrapper->contents_like(
+ qr#
+ ^main::foo\n
+ #msx,
+ "S command with negative regex - what it still matches",
+ );
+}
+
+# Test the 'a' command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'a 13 print "\nVar<Q>=$q\n"',
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/eval-line-bug',
+ }
+ );
+
+ $wrapper->output_like(qr#
+ \nVar<Q>=1\n
+ \nVar<Q>=2\n
+ \nVar<Q>=3\n
+ #msx,
+ "a command is working",
+ );
+}
+
+# Test the 'a' command with no line number.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'n',
+ q/a print "Hello " . (3 * 4) . "\n";/,
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-a-statement-1',
+ }
+ );
+
+ $wrapper->output_like(qr#
+ (?:^Hello\ 12\n.*?){4}
+ #msx,
+ "a command with no line number is working",
+ );
+}
+
+# Test the 'A' command
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'a 13 print "\nVar<Q>=$q\n"',
+ 'A 13',
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/eval-line-bug',
+ }
+ );
+
+ $wrapper->output_like(
+ qr#\A\z#msx, # The empty string.
+ "A command (for removing actions) is working",
+ );
+}
+
+# Test the 'A *' command
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'a 6 print "\nFail!\n"',
+ 'a 13 print "\nVar<Q>=$q\n"',
+ 'A *',
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/eval-line-bug',
+ }
+ );
+
+ $wrapper->output_like(
+ qr#\A\z#msx, # The empty string.
+ "'A *' command (for removing all actions) is working",
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'n',
+ 'w $foo',
+ 'c',
+ 'print "\nIDX=<$idx>\n"',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-w-statement-1',
+ }
+ );
+
+
+ $wrapper->contents_like(qr#
+ \$foo\ changed:\n
+ \s+old\ value:\s+'1'\n
+ \s+new\ value:\s+'2'\n
+ #msx,
+ 'w command - watchpoint changed',
+ );
+ $wrapper->output_like(qr#
+ \nIDX=<20>\n
+ #msx,
+ "w command - correct output from IDX",
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'n',
+ 'w $foo',
+ 'W $foo',
+ 'c',
+ 'print "\nIDX=<$idx>\n"',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-w-statement-1',
+ }
+ );
+
+ $wrapper->contents_unlike(qr#
+ \$foo\ changed:
+ #msx,
+ 'W command - watchpoint was deleted',
+ );
+
+ $wrapper->output_like(qr#
+ \nIDX=<>\n
+ #msx,
+ "W command - stopped at end.",
+ );
+}
+
+# Test the W * command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'n',
+ 'w $foo',
+ 'w ($foo*$foo)',
+ 'W *',
+ 'c',
+ 'print "\nIDX=<$idx>\n"',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-w-statement-1',
+ }
+ );
+
+ $wrapper->contents_unlike(qr#
+ \$foo\ changed:
+ #msx,
+ '"W *" command - watchpoint was deleted',
+ );
+
+ $wrapper->output_like(qr#
+ \nIDX=<>\n
+ #msx,
+ '"W *" command - stopped at end.',
+ );
+}
+
+# Test the 'o' command (without further arguments).
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-w-statement-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ ^\s*warnLevel\ =\ '1'\n
+ #msx,
+ q#"o" command (without arguments) displays warnLevel#,
+ );
+
+ $wrapper->contents_like(qr#
+ ^\s*signalLevel\ =\ '1'\n
+ #msx,
+ q#"o" command (without arguments) displays signalLevel#,
+ );
+
+ $wrapper->contents_like(qr#
+ ^\s*dieLevel\ =\ '1'\n
+ #msx,
+ q#"o" command (without arguments) displays dieLevel#,
+ );
+
+ $wrapper->contents_like(qr#
+ ^\s*hashDepth\ =\ 'N/A'\n
+ #msx,
+ q#"o" command (without arguments) displays hashDepth#,
+ );
+}
+
+# Test the 'o' query command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o hashDepth? signalLevel?',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-w-statement-1',
+ }
+ );
+
+ $wrapper->contents_unlike(qr#warnLevel#,
+ q#"o" query command does not display warnLevel#,
+ );
+
+ $wrapper->contents_like(qr#
+ ^\s*signalLevel\ =\ '1'\n
+ #msx,
+ q#"o" query command displays signalLevel#,
+ );
+
+ $wrapper->contents_unlike(qr#dieLevel#,
+ q#"o" query command does not display dieLevel#,
+ );
+
+ $wrapper->contents_like(qr#
+ ^\s*hashDepth\ =\ 'N/A'\n
+ #msx,
+ q#"o" query command displays hashDepth#,
+ );
+}
+
+# Test the 'o' set command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o signalLevel=0',
+ 'o',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-w-statement-1',
+ }
+ );
+
+ $wrapper->contents_like(qr/
+ ^\s*(signalLevel\ =\ '0'\n)
+ .*?
+ ^\s*\1
+ /msx,
+ q#o set command works#,
+ );
+
+ $wrapper->contents_like(qr#
+ ^\s*hashDepth\ =\ 'N/A'\n
+ #msx,
+ q#o set command - hashDepth#,
+ );
+}
+
+# Test the '<' and "< ?" commands.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ q/< print "\nX=<$x>\n"/,
+ q/b 7/,
+ q/< ?/,
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr/
+ ^pre-perl\ commands:\n
+ \s*<\ --\ print\ "\\nX=<\$x>\\n"\n
+ /msx,
+ q#Test < and < ? commands - contents.#,
+ );
+
+ $wrapper->output_like(qr#
+ ^X=<FirstVal>\n
+ #msx,
+ q#Test < and < ? commands - output.#,
+ );
+}
+
+# Test the '< *' command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ q/< print "\nX=<$x>\n"/,
+ q/b 7/,
+ q/< */,
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->output_unlike(qr/FirstVal/,
+ q#Test the '< *' command.#,
+ );
+}
+
+# Test the '>' and "> ?" commands.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ q/$::foo = 500;/,
+ q/> print "\nFOO=<$::foo>\n"/,
+ q/b 7/,
+ q/> ?/,
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr/
+ ^post-perl\ commands:\n
+ \s*>\ --\ print\ "\\nFOO=<\$::foo>\\n"\n
+ /msx,
+ q#Test > and > ? commands - contents.#,
+ );
+
+ $wrapper->output_like(qr#
+ ^FOO=<500>\n
+ #msx,
+ q#Test > and > ? commands - output.#,
+ );
+}
+
+# Test the '> *' command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ q/> print "\nFOO=<$::foo>\n"/,
+ q/b 7/,
+ q/> */,
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->output_unlike(qr/FOO=/,
+ q#Test the '> *' command.#,
+ );
+}
+
+# Test the < and > commands together
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ q/$::lorem = 0;/,
+ q/< $::lorem += 10;/,
+ q/> print "\nLOREM=<$::lorem>\n"/,
+ q/b 7/,
+ q/b 5/,
+ 'c',
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->output_like(qr#
+ ^LOREM=<10>\n
+ #msx,
+ q#Test < and > commands. #,
+ );
+}
+
+# Test the { ? and { [command] commands.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ '{ ?',
+ '{ l',
+ '{ ?',
+ q/b 5/,
+ q/c/,
+ q/q/,
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ ^No\ pre-debugger\ actions\.\n
+ .*?
+ ^pre-debugger\ commands:\n
+ \s+\{\ --\ l\n
+ .*?
+ ^5==>b\s+\$x\ =\ "FirstVal";\n
+ 6\s*\n
+ 7:\s+\$dummy\+\+;\n
+ 8\s*\n
+ 9:\s+\$x\ =\ "SecondVal";\n
+
+ #msx,
+ 'Test the pre-prompt debugger commands',
+ );
+}
+
+# Test the { * command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ '{ q',
+ '{ *',
+ q/b 5/,
+ q/c/,
+ q/print (("One" x 5), "\n");/,
+ q/q/,
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ ^All\ \{\ actions\ cleared\.\n
+ #msx,
+ 'Test the { * command',
+ );
+
+ $wrapper->output_like(qr/OneOneOneOneOne/,
+ '{ * test - output is OK.',
+ );
+}
+
+# Test the ! command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'l 3-5',
+ '!',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ (^3:\s+my\ \$dummy\ =\ 0;\n
+ 4\s*\n
+ 5:\s+\$x\ =\ "FirstVal";)\n
+ .*?
+ ^l\ 3-5\n
+ \1
+ #msx,
+ 'Test the ! command (along with l 3-5)',
+ );
+}
+
+# Test the ! -number command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'l 3-5',
+ 'l 2',
+ '! -1',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ (^3:\s+my\ \$dummy\ =\ 0;\n
+ 4\s*\n
+ 5:\s+\$x\ =\ "FirstVal";)\n
+ .*?
+ ^2==\>\s+my\ \$x\ =\ "One";\n
+ .*?
+ ^l\ 3-5\n
+ \1
+ #msx,
+ 'Test the ! -n command (along with l)',
+ );
+}
+
+# Test the 'source' command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'source ../lib/perl5db/t/source-cmd-test.perldb',
+ # If we have a 'q' here, then the typeahead will override the
+ # input, and so it won't be reached - solution:
+ # put a q inside the .perldb commands.
+ # ( This may be a bug or a misfeature. )
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ ^3:\s+my\ \$dummy\ =\ 0;\n
+ 4\s*\n
+ 5:\s+\$x\ =\ "FirstVal";\n
+ 6\s*\n
+ 7:\s+\$dummy\+\+;\n
+ 8\s*\n
+ 9:\s+\$x\ =\ "SecondVal";\n
+ 10\s*\n
+ #msx,
+ 'Test the source command (along with l)',
+ );
+}
+
+# Test the 'source' command being traversed from withing typeahead.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'source ../lib/perl5db/t/source-cmd-test-no-q.perldb',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ ^3:\s+my\ \$dummy\ =\ 0;\n
+ 4\s*\n
+ 5:\s+\$x\ =\ "FirstVal";\n
+ 6\s*\n
+ 7:\s+\$dummy\+\+;\n
+ 8\s*\n
+ 9:\s+\$x\ =\ "SecondVal";\n
+ 10\s*\n
+ #msx,
+ 'Test the source command inside a typeahead',
+ );
+}
+
+# Test the 'H -number' command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'l 1-10',
+ 'l 5-10',
+ 'x "Hello World"',
+ 'l 1-5',
+ 'b 3',
+ 'x (20+4)',
+ 'H -7',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ ^\d+:\s+H\ -7\n
+ \d+:\s+x\ \(20\+4\)\n
+ \d+:\s+b\ 3\n
+ \d+:\s+l\ 1-5\n
+ \d+:\s+x\ "Hello\ World"\n
+ \d+:\s+l\ 5-10\n
+ \d+:\s+l\ 1-10\n
+ #msx,
+ 'Test the H -num command',
+ );
+}
+
+# Add a test for H (without arguments)
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'l 1-10',
+ 'l 5-10',
+ 'x "Hello World"',
+ 'l 1-5',
+ 'b 3',
+ 'x (20+4)',
+ 'H',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ ^\d+:\s+x\ \(20\+4\)\n
+ \d+:\s+b\ 3\n
+ \d+:\s+l\ 1-5\n
+ \d+:\s+x\ "Hello\ World"\n
+ \d+:\s+l\ 5-10\n
+ \d+:\s+l\ 1-10\n
+ #msx,
+ 'Test the H command (without a number.)',
+ );
+}
+
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ '= quit q',
+ '= foobar l',
+ 'foobar',
+ 'quit',
+ ],
+ prog => '../lib/perl5db/t/test-l-statement-1',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr/
+ ^1==>\s+\$x\ =\ 1;\n
+ 2:\s+print\ "1\\n";\n
+ 3\s*\n
+ 4:\s+\$x\ =\ 2;\n
+ 5:\s+print\ "2\\n";\n
+ /msx,
+ 'Test the = (command alias) command.',
+ );
+}
+
+# Test the m statement.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'm main',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ ^via\ UNIVERSAL:\ DOES$
+ #msx,
+ "Test m for main - 1",
+ );
+
+ $wrapper->contents_like(qr#
+ ^via\ UNIVERSAL:\ can$
+ #msx,
+ "Test m for main - 2",
+ );
+}
+
+# Test the m statement.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'b 41',
+ 'c',
+ 'm $obj',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-m-statement-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#^greet$#ms,
+ "Test m for obj - 1",
+ );
+
+ $wrapper->contents_like(qr#^via UNIVERSAL: can$#ms,
+ "Test m for obj - 1",
+ );
+}
+
+# Test the M command.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'M',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-m-statement-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ ^'strict\.pm'\ =>\ '\d+\.\d+\ from
+ #msx,
+ "Test M",
+ );
+
+}
+
+# Test the recallCommand option.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o recallCommand=%',
+ 'l 3-5',
+ 'l 2',
+ '% -1',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ (^3:\s+my\ \$dummy\ =\ 0;\n
+ 4\s*\n
+ 5:\s+\$x\ =\ "FirstVal";)\n
+ .*?
+ ^2==\>\s+my\ \$x\ =\ "One";\n
+ .*?
+ ^l\ 3-5\n
+ \1
+ #msx,
+ 'Test the o recallCommand option',
+ );
+}
+
+# Test the dieLevel option
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ q/o dieLevel='1'/,
+ q/c/,
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-dieLevel-option-1',
+ }
+ );
+
+ $wrapper->output_like(qr#
+ ^This\ program\ dies\.\ at\ \S+\ line\ 18\.\n
+ .*?
+ ^\s+main::baz\(\)\ called\ at\ \S+\ line\ 13\n
+ \s+main::bar\(\)\ called\ at\ \S+\ line\ 7\n
+ \s+main::foo\(\)\ called\ at\ \S+\ line\ 21\n
+ #msx,
+ 'Test the o dieLevel option',
+ );
+}
+
+# Test the warnLevel option
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ q/o warnLevel='1'/,
+ q/c/,
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-warnLevel-option-1',
+ }
+ );
+
+ $wrapper->contents_like(qr#
+ ^This\ is\ not\ a\ warning\.\ at\ \S+\ line\ 18\.\n
+ .*?
+ ^\s+main::baz\(\)\ called\ at\ \S+\ line\ 13\n
+ \s+main::bar\(\)\ called\ at\ \S+\ line\ 25\n
+ \s+main::myfunc\(\)\ called\ at\ \S+\ line\ 28\n
+ #msx,
+ 'Test the o warnLevel option',
+ );
+}
+
+# Test the t command
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 't',
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr/
+ ^main::\([^:]+:15\):\n
+ 15:\s+\$dummy\+\+;\n
+ main::\([^:]+:17\):\n
+ 17:\s+\$x\ =\ "FourthVal";\n
+ /msx,
+ 'Test the t command (without a number.)',
+ );
+}
+
+# Test the o AutoTrace command
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o AutoTrace',
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/disable-breakpoints-1',
+ }
+ );
+
+ $wrapper->contents_like(qr/
+ ^main::\([^:]+:15\):\n
+ 15:\s+\$dummy\+\+;\n
+ main::\([^:]+:17\):\n
+ 17:\s+\$x\ =\ "FourthVal";\n
+ /msx,
+ 'Test the o AutoTrace command',
+ );
+}
+
+# Test the t command with function calls
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 't',
+ 'b 18',
+ 'c',
+ 'x ["foo"]',
+ 'x ["bar"]',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-warnLevel-option-1',
+ }
+ );
+
+ $wrapper->contents_like(qr/
+ ^main::\([^:]+:28\):\n
+ 28:\s+myfunc\(\);\n
+ main::myfunc\([^:]+:25\):\n
+ 25:\s+bar\(\);\n
+ /msx,
+ 'Test the t command with function calls.',
+ );
+}
+
+# Test the o AutoTrace command with function calls
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o AutoTrace',
+ 'b 18',
+ 'c',
+ 'x ["foo"]',
+ 'x ["bar"]',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-warnLevel-option-1',
+ }
+ );
+
+ $wrapper->contents_like(qr/
+ ^main::\([^:]+:28\):\n
+ 28:\s+myfunc\(\);\n
+ main::myfunc\([^:]+:25\):\n
+ 25:\s+bar\(\);\n
+ /msx,
+ 'Test the t command with function calls.',
+ );
+}
+
+# Test the final message.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-warnLevel-option-1',
+ }
+ );
+
+ $wrapper->contents_like(qr/
+ ^Debugged\ program\ terminated\.
+ /msx,
+ 'Test the final "Debugged program terminated" message.',
+ );
+}
+
+# Test the o inhibit_exit=0 command
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o inhibit_exit=0',
+ 'n',
+ 'n',
+ 'n',
+ 'n',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-warnLevel-option-1',
+ }
+ );
+
+ $wrapper->contents_unlike(qr/
+ ^Debugged\ program\ terminated\.
+ /msx,
+ 'Test the o inhibit_exit=0 command.',
+ );
+}
+
+# Test the o PrintRet=1 option
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o PrintRet=1',
+ 'b 29',
+ 'c',
+ q/$x = 's';/,
+ 'b 10',
+ 'c',
+ 'r',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-PrintRet-option-1',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr/scalar context return from main::return_scalar: 20024/,
+ "Test o PrintRet=1",
+ );
+}
+
+# Test the o PrintRet=0 option
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o PrintRet=0',
+ 'b 29',
+ 'c',
+ q/$x = 's';/,
+ 'b 10',
+ 'c',
+ 'r',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-PrintRet-option-1',
+ }
+ );
+
+ $wrapper->contents_unlike(
+ qr/scalar context/,
+ "Test o PrintRet=0",
+ );
+}
+
+# Test the o PrintRet=1 option in list context
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o PrintRet=1',
+ 'b 29',
+ 'c',
+ q/$x = 'l';/,
+ 'b 17',
+ 'c',
+ 'r',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-PrintRet-option-1',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr/list context return from main::return_list:\n0\s*'Foo'\n1\s*'Bar'\n2\s*'Baz'\n/,
+ "Test o PrintRet=1 in list context",
+ );
+}
+
+# Test the o PrintRet=0 option in list context
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o PrintRet=0',
+ 'b 29',
+ 'c',
+ q/$x = 'l';/,
+ 'b 17',
+ 'c',
+ 'r',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-PrintRet-option-1',
+ }
+ );
+
+ $wrapper->contents_unlike(
+ qr/list context/,
+ "Test o PrintRet=0 in list context",
+ );
+}
+
+# Test the o PrintRet=1 option in void context
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o PrintRet=1',
+ 'b 29',
+ 'c',
+ q/$x = 'v';/,
+ 'b 24',
+ 'c',
+ 'r',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-PrintRet-option-1',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr/void context return from main::return_void/,
+ "Test o PrintRet=1 in void context",
+ );
+}
+
+# Test the o PrintRet=1 option in void context
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'o PrintRet=0',
+ 'b 29',
+ 'c',
+ q/$x = 'v';/,
+ 'b 24',
+ 'c',
+ 'r',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-PrintRet-option-1',
+ }
+ );
+
+ $wrapper->contents_unlike(
+ qr/void context/,
+ "Test o PrintRet=0 in void context",
+ );
+}
+
+# Test the o frame option.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ # This is to avoid getting the "Debugger program terminated"
+ # junk that interferes with the normal output.
+ 'o inhibit_exit=0',
+ 'b 10',
+ 'c',
+ 'o frame=255',
+ 'c',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/test-frame-option-1',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr/
+ in\s*\.=main::my_other_func\(3,\ 1200\)\ from.*?
+ out\s*\.=main::my_other_func\(3,\ 1200\)\ from
+ /msx,
+ "Test o PrintRet=0 in void context",
+ );
+}
+
+{ # test t expr
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ # This is to avoid getting the "Debugger program terminated"
+ # junk that interferes with the normal output.
+ 'o inhibit_exit=0',
+ 't fact(3)',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/fact',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr/
+ (?:^main::fact.*return\ \$n\ \*\ fact\(\$n\ -\ 1\);.*)
+ /msx,
+ "Test t expr",
+ );
+}
+
+# Test the w for lexical variables expression.
+{
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ # This is to avoid getting the "Debugger program terminated"
+ # junk that interferes with the normal output.
+ 'w $exp',
+ 'n',
+ 'n',
+ 'n',
+ 'n',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/break-on-dot',
+ }
+ );
+
+ $wrapper->contents_like(
+ qr/
+\s+old\ value:\s+'1'\n
+\s+new\ value:\s+'2'\n
+ /msx,
+ "Test w for lexical values.",
+ );
+}
+
+# Test the perldoc command
+# We don't actually run the program, but we need to provide one to the wrapper.
+SKIP:
+{
+ $^O eq "linux"
+ or skip "man errors aren't especially portable", 1;
+ -x '/usr/bin/man'
+ or skip "man command seems to be missing", 1;
+ local $ENV{LANG} = "C";
+ local $ENV{LC_MESSAGES} = "C";
+ local $ENV{LC_ALL} = "C";
+ my $wrapper = DebugWrap->new(
+ {
+ cmds =>
+ [
+ 'perldoc perlrules',
+ 'q',
+ ],
+ prog => '../lib/perl5db/t/fact',
+ }
+ );
+
+ $wrapper->output_like(
+ qr/No manual entry for perlrules/,
+ 'perldoc command works fine',
+ );
+}
+
END {
1 while unlink ($rc_filename, $out_fn);
}
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/fact b/gnu/usr.bin/perl/lib/perl5db/t/fact
new file mode 100644
index 00000000000..ac25eac1edb
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/fact
@@ -0,0 +1,14 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+sub fact {
+ my $n = shift;
+ if ($n > 1) {
+ return $n * fact($n - 1);
+ } else {
+ return 1;
+ }
+}
+fact(5);
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/load-modules b/gnu/usr.bin/perl/lib/perl5db/t/load-modules
new file mode 100644
index 00000000000..202326357c5
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/load-modules
@@ -0,0 +1,6 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Scalar::Util;
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/source-cmd-test-no-q.perldb b/gnu/usr.bin/perl/lib/perl5db/t/source-cmd-test-no-q.perldb
new file mode 100644
index 00000000000..6a6fddd3676
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/source-cmd-test-no-q.perldb
@@ -0,0 +1 @@
+l 3-10
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/source-cmd-test.perldb b/gnu/usr.bin/perl/lib/perl5db/t/source-cmd-test.perldb
new file mode 100644
index 00000000000..41a73657640
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/source-cmd-test.perldb
@@ -0,0 +1,2 @@
+l 3-10
+q
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/test-PrintRet-option-1 b/gnu/usr.bin/perl/lib/perl5db/t/test-PrintRet-option-1
new file mode 100644
index 00000000000..ccf6607f794
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/test-PrintRet-option-1
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my ($x, $y);
+
+sub return_scalar
+{
+ $y++;
+
+ return "20024";
+}
+
+sub return_list
+{
+ $y++;
+
+ return ("Foo", "Bar", "Baz");
+}
+
+sub return_void
+{
+ $y++;
+
+ return;
+}
+
+$y++;
+
+# Choose one based on $x
+#
+if ($x eq "s")
+{
+ my $s = return_scalar();
+}
+elsif ($x eq "l")
+{
+ my @l = return_list();
+}
+else
+{
+ return_void();
+ $y++;
+}
+
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/test-a-statement-1 b/gnu/usr.bin/perl/lib/perl5db/t/test-a-statement-1
new file mode 100644
index 00000000000..a1782a0034b
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/test-a-statement-1
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+while (my $l = <DATA>) {
+ chomp $l;
+ print "$l\n";
+}
+
+__DATA__
+123456789012 This is a test
+3456789012345This is another test
+6789012345678This is yet another test
+9012345678901Is this yet another test?
+234567890123 Yes, this is another test.
+4567890123456I think this is a test.
+7890123456789Now is the time.
+0123456789012For all good men.
+3456789012345To come to the aid party.
+678901234678 This is the tenth line.
+
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/test-dieLevel-option-1 b/gnu/usr.bin/perl/lib/perl5db/t/test-dieLevel-option-1
new file mode 100644
index 00000000000..0849ae2a0d2
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/test-dieLevel-option-1
@@ -0,0 +1,22 @@
+use strict;
+use warnings;
+
+sub foo
+{
+ print "In foo\n";
+ bar();
+}
+
+sub bar
+{
+ print "In baz\n";
+ baz();
+}
+
+sub baz
+{
+ die "This program dies.";
+}
+
+foo();
+
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/test-frame-option-1 b/gnu/usr.bin/perl/lib/perl5db/t/test-frame-option-1
new file mode 100644
index 00000000000..a6b4dd8c4fb
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/test-frame-option-1
@@ -0,0 +1,26 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+sub my_func
+{
+ my ($num1, $num2) = @_;
+
+ print $num1+$num2, "\n";
+
+ my_other_func ($num1*3, $num2*24);
+
+ return $num1*$num2;
+}
+
+sub my_other_func
+{
+ my ($num1, $num2) = @_;
+
+ print "my_other_func: n1=<$num1> n2=<$num2>\n";
+
+ return $num1 * $num2;
+}
+
+my_func(1, 50);
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/test-l-statement-1 b/gnu/usr.bin/perl/lib/perl5db/t/test-l-statement-1
new file mode 100644
index 00000000000..990a1695034
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/test-l-statement-1
@@ -0,0 +1,20 @@
+$x = 1;
+print "1\n";
+
+$x = 2;
+print "2\n";
+
+$x = 3;
+print "3\n";
+
+$x = 4;
+print "4\n";
+
+$x = 5;
+print "5\n";
+
+$x = 6;
+print "6\n";
+
+$x = 7;
+print "7\n";
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/test-l-statement-2 b/gnu/usr.bin/perl/lib/perl5db/t/test-l-statement-2
new file mode 100644
index 00000000000..9e6a2105e98
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/test-l-statement-2
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+sub fact {
+ my $n = shift;
+ if ($n > 1) {
+ return $n * fact($n - 1);
+ } else {
+ return 1;
+ }
+}
+
+sub bar {
+ print "One\n";
+ print "Two\n";
+ print "Three\n";
+
+ return;
+}
+
+fact(5);
+bar();
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/test-m-statement-1 b/gnu/usr.bin/perl/lib/perl5db/t/test-m-statement-1
new file mode 100644
index 00000000000..a699ed342e7
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/test-m-statement-1
@@ -0,0 +1,43 @@
+use strict;
+use warnings;
+
+package MyClass;
+
+sub new
+{
+ my $class = shift;
+
+ my $self = bless {}, $class;
+
+ $self->_init(@_);
+
+ return $self;
+}
+
+sub _init
+{
+ my $self = shift;
+
+ $self->{foo} = 'bar';
+
+ return;
+}
+
+sub greet
+{
+ my ($self, $msg) = @_;
+
+ print "$msg - $self->{foo}\n";
+
+ return;
+}
+
+1;
+
+package main;
+
+my $obj = MyClass->new;
+
+$obj->greet("Hello");
+
+1;
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/test-passing-at-underscore-to-x-etc b/gnu/usr.bin/perl/lib/perl5db/t/test-passing-at-underscore-to-x-etc
new file mode 100644
index 00000000000..ff14df65739
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/test-passing-at-underscore-to-x-etc
@@ -0,0 +1,15 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+print "One\n";
+
+sub my_pass_args_to
+{
+ print "Two\n";
+}
+
+my_pass_args_to ("Arg1", "Capsula", "GreekHumor", "Socrates");
+
+print "Three\n";
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/test-r-statement b/gnu/usr.bin/perl/lib/perl5db/t/test-r-statement
new file mode 100644
index 00000000000..f8c7bf5555c
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/test-r-statement
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $var = "Test";
+
+sub mysub
+{
+ my $flag = 1;
+
+ $flag = 0;
+
+ print "Foo\n";
+
+ if ($flag)
+ {
+ print "Bar\n";
+ }
+
+ return;
+}
+
+mysub();
+
+$var .= "More";
+
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/test-w-statement-1 b/gnu/usr.bin/perl/lib/perl5db/t/test-w-statement-1
new file mode 100644
index 00000000000..bfd5ccd7d80
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/test-w-statement-1
@@ -0,0 +1,20 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use vars qw($foo);
+
+$foo = 1;
+
+print "Hello\n";
+
+for my $idx (map { $_ * 10 } 1 .. 10)
+{
+ if ($idx > 17)
+ {
+ $foo = 2;
+ print "Baz\n";
+ }
+}
+
diff --git a/gnu/usr.bin/perl/lib/perl5db/t/test-warnLevel-option-1 b/gnu/usr.bin/perl/lib/perl5db/t/test-warnLevel-option-1
new file mode 100644
index 00000000000..04b71f99137
--- /dev/null
+++ b/gnu/usr.bin/perl/lib/perl5db/t/test-warnLevel-option-1
@@ -0,0 +1,29 @@
+use strict;
+use warnings;
+
+sub foo
+{
+ print "In foo\n";
+ bar();
+}
+
+sub bar
+{
+ print "In baz\n";
+ baz();
+}
+
+sub baz
+{
+ warn "This is not a warning.";
+
+ return;
+}
+
+sub myfunc
+{
+ bar();
+}
+
+myfunc();
+
diff --git a/gnu/usr.bin/perl/lib/sort.pm b/gnu/usr.bin/perl/lib/sort.pm
index 922f82b4691..7c8e50db577 100644
--- a/gnu/usr.bin/perl/lib/sort.pm
+++ b/gnu/usr.bin/perl/lib/sort.pm
@@ -1,6 +1,6 @@
package sort;
-our $VERSION = '2.01';
+our $VERSION = '2.02';
# The hints for pp_sort are now stored in $^H{sort}; older versions
# of perl used the global variable $sort::hints. -- rjh 2005-12-19
@@ -180,14 +180,14 @@ So now this code would be written:
{ use sort qw(defaults _quicksort); # force quicksort
no sort "stable"; # stability not wanted
my $current;
- BEGIN { $current = print sort::current; }
+ BEGIN { $current = sort::current; }
print "$current\n";
@a = sort @b;
# Pragmas go out of scope at the end of the block
}
{ use sort qw(defaults stable); # force stability
my $current;
- BEGIN { $current = print sort::current; }
+ BEGIN { $current = sort::current; }
print "$current\n";
@c = sort @d;
}
diff --git a/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt b/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt
index 35e79f6e1f3..fd22f5d6e07 100644
--- a/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt
+++ b/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt
@@ -1,20 +1,20 @@
-# ArabicShaping-6.1.0.txt
-# Date: 2011-04-15, 23:16:00 GMT [KW]
+# ArabicShaping-6.2.0.txt
+# Date: 2012-05-15, 21:05:00 GMT [KW]
#
# This file is a normative contributory data file in the
# Unicode Character Database.
#
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# This file defines the Joining_Type and Joining_Group
# property values for Arabic, Syriac, N'Ko, and Mandaic
# positional shaping, repeating in machine readable form the
# information exemplified in Tables 8-3, 8-8, 8-9, 8-10, 8-13, 8-14,
-# 8-15, 13-5, 14-5, and 14-6 of The Unicode Standard, Version 6.1.
+# 8-15, 13-5, 14-5, and 14-6 of The Unicode Standard, Version 6.2.
#
# See sections 8.2, 8.3, 13.5, and 14.12 of The Unicode Standard,
-# Version 6.1 for more information.
+# Version 6.2 for more information.
#
# Each line contains four fields, separated by a semicolon.
#
diff --git a/gnu/usr.bin/perl/lib/unicore/BidiMirroring.txt b/gnu/usr.bin/perl/lib/unicore/BidiMirroring.txt
index 2e719bc1e05..ec41b769375 100644
--- a/gnu/usr.bin/perl/lib/unicore/BidiMirroring.txt
+++ b/gnu/usr.bin/perl/lib/unicore/BidiMirroring.txt
@@ -1,19 +1,19 @@
-# BidiMirroring-6.1.0.txt
-# Date: 2011-12-20, 19:31:00 GMT [KW, LI]
+# BidiMirroring-6.2.0.txt
+# Date: 2012-05-15, 24:19:00 GMT [KW, LI]
#
# Bidi_Mirroring_Glyph Property
#
# This file is an informative contributory data file in the
# Unicode Character Database.
#
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# This data file lists characters that have the Bidi_Mirrored=Yes property
# value, for which there is another Unicode character that typically has a glyph
# that is the mirror image of the original character's glyph.
#
-# The repertoire covered by the file is Unicode 6.1.0.
+# The repertoire covered by the file is Unicode 6.2.0.
#
# The file contains a list of lines with mappings from one code point
# to another one for character-based mirroring.
@@ -30,16 +30,8 @@
# characters exist with mirrored glyphs, are
# listed as comments at the end of the file.
#
-# Note: (2011-12-19) There is an inconsistency between the
-# following statement about the default value
-# of the Bidi_Mirroring_Glyph property and the
-# value of the @missing line for Bidi_Mirroring_Glyph in
-# PropertyValueAliases.txt. This inconsistency was discovered too
-# late in the release process to be resolved by
-# the UTC. The inconsistency will be resolved in a future revision.
-#
# Formally, the default value of the Bidi_Mirroring_Glyph property
-# for each code point is the code point itself, unless a mapping to
+# for each code point is <none>, unless a mapping to
# some other character is specified in this data file. When a code
# point has the default value for the Bidi_Mirroring_Glyph property,
# that means that no other character exists whose glyph is suitable
@@ -50,12 +42,13 @@
#
# This file was originally created by Markus Scherer.
# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler,
-# and for Unicode 6.1 by Ken Whistler and Laurentiu Iancu.
+# and for Unicode 6.1 and 6.2 by Ken Whistler and Laurentiu Iancu.
#
# ############################################################
#
# Property: Bidi_Mirroring_Glyph
#
+# @missing: 0000..10FFFF; <none>
0028; 0029 # LEFT PARENTHESIS
0029; 0028 # RIGHT PARENTHESIS
diff --git a/gnu/usr.bin/perl/lib/unicore/Blocks.txt b/gnu/usr.bin/perl/lib/unicore/Blocks.txt
index f9a384e3ffb..6a06ab14451 100644
--- a/gnu/usr.bin/perl/lib/unicore/Blocks.txt
+++ b/gnu/usr.bin/perl/lib/unicore/Blocks.txt
@@ -1,8 +1,8 @@
-# Blocks-6.1.0.txt
-# Date: 2011-06-14, 18:26:00 GMT [KW, LI]
+# Blocks-6.2.0.txt
+# Date: 2012-05-14, 22:42:00 GMT [KW, LI]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
@@ -248,4 +248,4 @@ E0100..E01EF; Variation Selectors Supplement
F0000..FFFFF; Supplementary Private Use Area-A
100000..10FFFF; Supplementary Private Use Area-B
-# EOF \ No newline at end of file
+# EOF
diff --git a/gnu/usr.bin/perl/lib/unicore/CJKRadicals.txt b/gnu/usr.bin/perl/lib/unicore/CJKRadicals.txt
index a7debb6e1ed..53c6731aacc 100644
--- a/gnu/usr.bin/perl/lib/unicore/CJKRadicals.txt
+++ b/gnu/usr.bin/perl/lib/unicore/CJKRadicals.txt
@@ -1,8 +1,8 @@
-# CJKRadicals-6.1.0.txt
-# Date: 2011-08-30, 23:14:00 GMT [RC, KW]
+# CJKRadicals-6.2.0.txt
+# Date: 2012-05-15, 21:08:00 GMT [RC, KW]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr38/
#
@@ -24,7 +24,7 @@
#
# This file was created for Unicode 5.2 by Richard Cook.
# Updated for Unicode 6.0 by Richard Cook.
-# Updated for Unicode 6.1 by Ken Whistler.
+# Updated for Unicode 6.1 and 6.2 by Ken Whistler.
#
# ####################################################
diff --git a/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt b/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt
index 0d9a4090cde..df1813d2adc 100644
--- a/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt
+++ b/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt
@@ -1,8 +1,8 @@
-# CaseFolding-6.1.0.txt
-# Date: 2011-07-25, 21:21:56 GMT [MD]
+# CaseFolding-6.2.0.txt
+# Date: 2012-08-14, 17:54:49 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
@@ -1222,3 +1222,5 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z
10425; C; 1044D; # DESERET CAPITAL LETTER ENG
10426; C; 1044E; # DESERET CAPITAL LETTER OI
10427; C; 1044F; # DESERET CAPITAL LETTER EW
+#
+# EOF
diff --git a/gnu/usr.bin/perl/lib/unicore/CompositionExclusions.txt b/gnu/usr.bin/perl/lib/unicore/CompositionExclusions.txt
index f12f7d61bfc..cd19f42255d 100644
--- a/gnu/usr.bin/perl/lib/unicore/CompositionExclusions.txt
+++ b/gnu/usr.bin/perl/lib/unicore/CompositionExclusions.txt
@@ -1,5 +1,5 @@
-# CompositionExclusions-6.1.0.txt
-# Date: 2011-07-12, 00:13:00 GMT [KW, LI]
+# CompositionExclusions-6.2.0.txt
+# Date: 2012-05-15, 22:21:00 GMT [KW, LI]
#
# This file lists the characters for the Composition Exclusion Table
# defined in UAX #15, Unicode Normalization Forms.
@@ -7,7 +7,7 @@
# This file is a normative contributory data file in the
# Unicode Character Database.
#
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# For more information, see
@@ -203,3 +203,4 @@ FB4E # HEBREW LETTER PE WITH RAFE
# Total code points: 4
+# EOF
diff --git a/gnu/usr.bin/perl/lib/unicore/DAge.txt b/gnu/usr.bin/perl/lib/unicore/DAge.txt
index 6ff0206b4cf..0629232a217 100644
--- a/gnu/usr.bin/perl/lib/unicore/DAge.txt
+++ b/gnu/usr.bin/perl/lib/unicore/DAge.txt
@@ -1,5 +1,5 @@
-# DerivedAge-6.1.0.txt
-# Date: 2012-01-20, 21:47:00 GMT [MD, KW]
+# DerivedAge-6.2.0.txt
+# Date: 2012-09-20, 21:30:39 GMT [MD]
#
# Unicode Character Database
# Copyright (c) 1991-2012 Unicode, Inc.
@@ -1294,4 +1294,14 @@ FA2E..FA2F ; 6.1 # [2] CJK COMPATIBILITY IDEOGRAPH-FA2E..CJK COMPATIBILITY
# Total code points: 732
+# ================================================
+
+# Age=V6_2
+
+# Newly assigned in Unicode 6.2.0 (September, 2012)
+
+20BA ; 6.2 # TURKISH LIRA SIGN
+
+# Total code points: 1
+
# EOF
diff --git a/gnu/usr.bin/perl/lib/unicore/DCoreProperties.txt b/gnu/usr.bin/perl/lib/unicore/DCoreProperties.txt
index abdcd2201e2..395004c09b2 100644
--- a/gnu/usr.bin/perl/lib/unicore/DCoreProperties.txt
+++ b/gnu/usr.bin/perl/lib/unicore/DCoreProperties.txt
@@ -1,8 +1,8 @@
-# DerivedCoreProperties-6.1.0.txt
-# Date: 2011-12-11, 18:26:55 GMT [MD]
+# DerivedCoreProperties-6.2.0.txt
+# Date: 2012-05-20, 00:42:31 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
@@ -9228,7 +9228,7 @@ E0100..E01EF ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
208D ; Grapheme_Base # Ps SUBSCRIPT LEFT PARENTHESIS
208E ; Grapheme_Base # Pe SUBSCRIPT RIGHT PARENTHESIS
2090..209C ; Grapheme_Base # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
-20A0..20B9 ; Grapheme_Base # Sc [26] EURO-CURRENCY SIGN..INDIAN RUPEE SIGN
+20A0..20BA ; Grapheme_Base # Sc [27] EURO-CURRENCY SIGN..TURKISH LIRA SIGN
2100..2101 ; Grapheme_Base # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
2102 ; Grapheme_Base # L& DOUBLE-STRUCK CAPITAL C
2103..2106 ; Grapheme_Base # So [4] DEGREE CELSIUS..CADA UNA
@@ -9980,7 +9980,7 @@ FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
2B740..2B81D ; Grapheme_Base # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
2F800..2FA1D ; Grapheme_Base # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
-# Total code points: 108660
+# Total code points: 108661
# ================================================
diff --git a/gnu/usr.bin/perl/lib/unicore/DNormalizationProps.txt b/gnu/usr.bin/perl/lib/unicore/DNormalizationProps.txt
index 2d717477677..2ecd8e22fff 100644
--- a/gnu/usr.bin/perl/lib/unicore/DNormalizationProps.txt
+++ b/gnu/usr.bin/perl/lib/unicore/DNormalizationProps.txt
@@ -1,8 +1,8 @@
-# DerivedNormalizationProps-6.1.0.txt
-# Date: 2011-07-26, 04:18:07 GMT [MD]
+# DerivedNormalizationProps-6.2.0.txt
+# Date: 2012-05-23, 20:34:48 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
diff --git a/gnu/usr.bin/perl/lib/unicore/EastAsianWidth.txt b/gnu/usr.bin/perl/lib/unicore/EastAsianWidth.txt
index ea38eef618d..949f7ff3925 100644
--- a/gnu/usr.bin/perl/lib/unicore/EastAsianWidth.txt
+++ b/gnu/usr.bin/perl/lib/unicore/EastAsianWidth.txt
@@ -1,12 +1,12 @@
-# EastAsianWidth-6.1.0.txt
-# Date: 2011-09-19, 18:46:00 GMT [KW]
+# EastAsianWidth-6.2.0.txt
+# Date: 2012-05-15, 18:30:00 GMT [KW]
#
# East Asian Width Properties
#
# This file is an informative contributory data file in the
# Unicode Character Database.
#
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# The format is two fields separated by a semicolon.
@@ -3813,11 +3813,11 @@
11A0;N # HANGUL JUNGSEONG ARAEA-U
11A1;N # HANGUL JUNGSEONG ARAEA-I
11A2;N # HANGUL JUNGSEONG SSANGARAEA
-11A3;W # HANGUL JUNGSEONG A-EU
-11A4;W # HANGUL JUNGSEONG YA-U
-11A5;W # HANGUL JUNGSEONG YEO-YA
-11A6;W # HANGUL JUNGSEONG O-YA
-11A7;W # HANGUL JUNGSEONG O-YAE
+11A3;N # HANGUL JUNGSEONG A-EU
+11A4;N # HANGUL JUNGSEONG YA-U
+11A5;N # HANGUL JUNGSEONG YEO-YA
+11A6;N # HANGUL JUNGSEONG O-YA
+11A7;N # HANGUL JUNGSEONG O-YAE
11A8;N # HANGUL JONGSEONG KIYEOK
11A9;N # HANGUL JONGSEONG SSANGKIYEOK
11AA;N # HANGUL JONGSEONG KIYEOK-SIOS
@@ -3900,12 +3900,12 @@
11F7;N # HANGUL JONGSEONG HIEUH-MIEUM
11F8;N # HANGUL JONGSEONG HIEUH-PIEUP
11F9;N # HANGUL JONGSEONG YEORINHIEUH
-11FA;W # HANGUL JONGSEONG KIYEOK-NIEUN
-11FB;W # HANGUL JONGSEONG KIYEOK-PIEUP
-11FC;W # HANGUL JONGSEONG KIYEOK-CHIEUCH
-11FD;W # HANGUL JONGSEONG KIYEOK-KHIEUKH
-11FE;W # HANGUL JONGSEONG KIYEOK-HIEUH
-11FF;W # HANGUL JONGSEONG SSANGNIEUN
+11FA;N # HANGUL JONGSEONG KIYEOK-NIEUN
+11FB;N # HANGUL JONGSEONG KIYEOK-PIEUP
+11FC;N # HANGUL JONGSEONG KIYEOK-CHIEUCH
+11FD;N # HANGUL JONGSEONG KIYEOK-KHIEUKH
+11FE;N # HANGUL JONGSEONG KIYEOK-HIEUH
+11FF;N # HANGUL JONGSEONG SSANGNIEUN
1200;N # ETHIOPIC SYLLABLE HA
1201;N # ETHIOPIC SYLLABLE HU
1202;N # ETHIOPIC SYLLABLE HI
@@ -7228,6 +7228,7 @@
20B7;N # SPESMILO SIGN
20B8;N # TENGE SIGN
20B9;N # INDIAN RUPEE SIGN
+20BA;N # TURKISH LIRA SIGN
20D0;N # COMBINING LEFT HARPOON ABOVE
20D1;N # COMBINING RIGHT HARPOON ABOVE
20D2;N # COMBINING LONG VERTICAL LINE OVERLAY
@@ -14394,78 +14395,78 @@ ABF7;N # MEETEI MAYEK DIGIT SEVEN
ABF8;N # MEETEI MAYEK DIGIT EIGHT
ABF9;N # MEETEI MAYEK DIGIT NINE
AC00..D7A3;W # <Hangul Syllable, First>..<Hangul Syllable, Last>
-D7B0;W # HANGUL JUNGSEONG O-YEO
-D7B1;W # HANGUL JUNGSEONG O-O-I
-D7B2;W # HANGUL JUNGSEONG YO-A
-D7B3;W # HANGUL JUNGSEONG YO-AE
-D7B4;W # HANGUL JUNGSEONG YO-EO
-D7B5;W # HANGUL JUNGSEONG U-YEO
-D7B6;W # HANGUL JUNGSEONG U-I-I
-D7B7;W # HANGUL JUNGSEONG YU-AE
-D7B8;W # HANGUL JUNGSEONG YU-O
-D7B9;W # HANGUL JUNGSEONG EU-A
-D7BA;W # HANGUL JUNGSEONG EU-EO
-D7BB;W # HANGUL JUNGSEONG EU-E
-D7BC;W # HANGUL JUNGSEONG EU-O
-D7BD;W # HANGUL JUNGSEONG I-YA-O
-D7BE;W # HANGUL JUNGSEONG I-YAE
-D7BF;W # HANGUL JUNGSEONG I-YEO
-D7C0;W # HANGUL JUNGSEONG I-YE
-D7C1;W # HANGUL JUNGSEONG I-O-I
-D7C2;W # HANGUL JUNGSEONG I-YO
-D7C3;W # HANGUL JUNGSEONG I-YU
-D7C4;W # HANGUL JUNGSEONG I-I
-D7C5;W # HANGUL JUNGSEONG ARAEA-A
-D7C6;W # HANGUL JUNGSEONG ARAEA-E
-D7CB;W # HANGUL JONGSEONG NIEUN-RIEUL
-D7CC;W # HANGUL JONGSEONG NIEUN-CHIEUCH
-D7CD;W # HANGUL JONGSEONG SSANGTIKEUT
-D7CE;W # HANGUL JONGSEONG SSANGTIKEUT-PIEUP
-D7CF;W # HANGUL JONGSEONG TIKEUT-PIEUP
-D7D0;W # HANGUL JONGSEONG TIKEUT-SIOS
-D7D1;W # HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK
-D7D2;W # HANGUL JONGSEONG TIKEUT-CIEUC
-D7D3;W # HANGUL JONGSEONG TIKEUT-CHIEUCH
-D7D4;W # HANGUL JONGSEONG TIKEUT-THIEUTH
-D7D5;W # HANGUL JONGSEONG RIEUL-SSANGKIYEOK
-D7D6;W # HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH
-D7D7;W # HANGUL JONGSEONG SSANGRIEUL-KHIEUKH
-D7D8;W # HANGUL JONGSEONG RIEUL-MIEUM-HIEUH
-D7D9;W # HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT
-D7DA;W # HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH
-D7DB;W # HANGUL JONGSEONG RIEUL-YESIEUNG
-D7DC;W # HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH
-D7DD;W # HANGUL JONGSEONG KAPYEOUNRIEUL
-D7DE;W # HANGUL JONGSEONG MIEUM-NIEUN
-D7DF;W # HANGUL JONGSEONG MIEUM-SSANGNIEUN
-D7E0;W # HANGUL JONGSEONG SSANGMIEUM
-D7E1;W # HANGUL JONGSEONG MIEUM-PIEUP-SIOS
-D7E2;W # HANGUL JONGSEONG MIEUM-CIEUC
-D7E3;W # HANGUL JONGSEONG PIEUP-TIKEUT
-D7E4;W # HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH
-D7E5;W # HANGUL JONGSEONG PIEUP-MIEUM
-D7E6;W # HANGUL JONGSEONG SSANGPIEUP
-D7E7;W # HANGUL JONGSEONG PIEUP-SIOS-TIKEUT
-D7E8;W # HANGUL JONGSEONG PIEUP-CIEUC
-D7E9;W # HANGUL JONGSEONG PIEUP-CHIEUCH
-D7EA;W # HANGUL JONGSEONG SIOS-MIEUM
-D7EB;W # HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP
-D7EC;W # HANGUL JONGSEONG SSANGSIOS-KIYEOK
-D7ED;W # HANGUL JONGSEONG SSANGSIOS-TIKEUT
-D7EE;W # HANGUL JONGSEONG SIOS-PANSIOS
-D7EF;W # HANGUL JONGSEONG SIOS-CIEUC
-D7F0;W # HANGUL JONGSEONG SIOS-CHIEUCH
-D7F1;W # HANGUL JONGSEONG SIOS-THIEUTH
-D7F2;W # HANGUL JONGSEONG SIOS-HIEUH
-D7F3;W # HANGUL JONGSEONG PANSIOS-PIEUP
-D7F4;W # HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP
-D7F5;W # HANGUL JONGSEONG YESIEUNG-MIEUM
-D7F6;W # HANGUL JONGSEONG YESIEUNG-HIEUH
-D7F7;W # HANGUL JONGSEONG CIEUC-PIEUP
-D7F8;W # HANGUL JONGSEONG CIEUC-SSANGPIEUP
-D7F9;W # HANGUL JONGSEONG SSANGCIEUC
-D7FA;W # HANGUL JONGSEONG PHIEUPH-SIOS
-D7FB;W # HANGUL JONGSEONG PHIEUPH-THIEUTH
+D7B0;N # HANGUL JUNGSEONG O-YEO
+D7B1;N # HANGUL JUNGSEONG O-O-I
+D7B2;N # HANGUL JUNGSEONG YO-A
+D7B3;N # HANGUL JUNGSEONG YO-AE
+D7B4;N # HANGUL JUNGSEONG YO-EO
+D7B5;N # HANGUL JUNGSEONG U-YEO
+D7B6;N # HANGUL JUNGSEONG U-I-I
+D7B7;N # HANGUL JUNGSEONG YU-AE
+D7B8;N # HANGUL JUNGSEONG YU-O
+D7B9;N # HANGUL JUNGSEONG EU-A
+D7BA;N # HANGUL JUNGSEONG EU-EO
+D7BB;N # HANGUL JUNGSEONG EU-E
+D7BC;N # HANGUL JUNGSEONG EU-O
+D7BD;N # HANGUL JUNGSEONG I-YA-O
+D7BE;N # HANGUL JUNGSEONG I-YAE
+D7BF;N # HANGUL JUNGSEONG I-YEO
+D7C0;N # HANGUL JUNGSEONG I-YE
+D7C1;N # HANGUL JUNGSEONG I-O-I
+D7C2;N # HANGUL JUNGSEONG I-YO
+D7C3;N # HANGUL JUNGSEONG I-YU
+D7C4;N # HANGUL JUNGSEONG I-I
+D7C5;N # HANGUL JUNGSEONG ARAEA-A
+D7C6;N # HANGUL JUNGSEONG ARAEA-E
+D7CB;N # HANGUL JONGSEONG NIEUN-RIEUL
+D7CC;N # HANGUL JONGSEONG NIEUN-CHIEUCH
+D7CD;N # HANGUL JONGSEONG SSANGTIKEUT
+D7CE;N # HANGUL JONGSEONG SSANGTIKEUT-PIEUP
+D7CF;N # HANGUL JONGSEONG TIKEUT-PIEUP
+D7D0;N # HANGUL JONGSEONG TIKEUT-SIOS
+D7D1;N # HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK
+D7D2;N # HANGUL JONGSEONG TIKEUT-CIEUC
+D7D3;N # HANGUL JONGSEONG TIKEUT-CHIEUCH
+D7D4;N # HANGUL JONGSEONG TIKEUT-THIEUTH
+D7D5;N # HANGUL JONGSEONG RIEUL-SSANGKIYEOK
+D7D6;N # HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH
+D7D7;N # HANGUL JONGSEONG SSANGRIEUL-KHIEUKH
+D7D8;N # HANGUL JONGSEONG RIEUL-MIEUM-HIEUH
+D7D9;N # HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT
+D7DA;N # HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH
+D7DB;N # HANGUL JONGSEONG RIEUL-YESIEUNG
+D7DC;N # HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH
+D7DD;N # HANGUL JONGSEONG KAPYEOUNRIEUL
+D7DE;N # HANGUL JONGSEONG MIEUM-NIEUN
+D7DF;N # HANGUL JONGSEONG MIEUM-SSANGNIEUN
+D7E0;N # HANGUL JONGSEONG SSANGMIEUM
+D7E1;N # HANGUL JONGSEONG MIEUM-PIEUP-SIOS
+D7E2;N # HANGUL JONGSEONG MIEUM-CIEUC
+D7E3;N # HANGUL JONGSEONG PIEUP-TIKEUT
+D7E4;N # HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH
+D7E5;N # HANGUL JONGSEONG PIEUP-MIEUM
+D7E6;N # HANGUL JONGSEONG SSANGPIEUP
+D7E7;N # HANGUL JONGSEONG PIEUP-SIOS-TIKEUT
+D7E8;N # HANGUL JONGSEONG PIEUP-CIEUC
+D7E9;N # HANGUL JONGSEONG PIEUP-CHIEUCH
+D7EA;N # HANGUL JONGSEONG SIOS-MIEUM
+D7EB;N # HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP
+D7EC;N # HANGUL JONGSEONG SSANGSIOS-KIYEOK
+D7ED;N # HANGUL JONGSEONG SSANGSIOS-TIKEUT
+D7EE;N # HANGUL JONGSEONG SIOS-PANSIOS
+D7EF;N # HANGUL JONGSEONG SIOS-CIEUC
+D7F0;N # HANGUL JONGSEONG SIOS-CHIEUCH
+D7F1;N # HANGUL JONGSEONG SIOS-THIEUTH
+D7F2;N # HANGUL JONGSEONG SIOS-HIEUH
+D7F3;N # HANGUL JONGSEONG PANSIOS-PIEUP
+D7F4;N # HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP
+D7F5;N # HANGUL JONGSEONG YESIEUNG-MIEUM
+D7F6;N # HANGUL JONGSEONG YESIEUNG-HIEUH
+D7F7;N # HANGUL JONGSEONG CIEUC-PIEUP
+D7F8;N # HANGUL JONGSEONG CIEUC-SSANGPIEUP
+D7F9;N # HANGUL JONGSEONG SSANGCIEUC
+D7FA;N # HANGUL JONGSEONG PHIEUPH-SIOS
+D7FB;N # HANGUL JONGSEONG PHIEUPH-THIEUTH
D800..DB7F;N # <Non Private Use High Surrogate, First>..<Non Private Use High Surrogate, Last>
DB80..DBFF;N # <Private Use High Surrogate, First>..<Private Use High Surrogate, Last>
DC00..DFFF;N # <Low Surrogate, First>..<Low Surrogate, Last>
diff --git a/gnu/usr.bin/perl/lib/unicore/EmojiSources.txt b/gnu/usr.bin/perl/lib/unicore/EmojiSources.txt
index c360c5e2531..cf0f6cbf262 100644
--- a/gnu/usr.bin/perl/lib/unicore/EmojiSources.txt
+++ b/gnu/usr.bin/perl/lib/unicore/EmojiSources.txt
@@ -1,8 +1,8 @@
-# EmojiSources-6.1.0.txt
-# Date: 2011-08-30, 23:30:00 GMT [MS, KW]
+# EmojiSources-6.2.0.txt
+# Date: 2012-03-08, 21:21:00 GMT [MS, KW]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
@@ -15,8 +15,9 @@
# Note: It is possible that future versions of this file will include
# additional data columns providing mappings for additional vendors.
#
-# Created for Unicode 6.0 by Marcus Scherer.
-# Updated for Unicode 6.1 by Ken Whistler.
+# Created for Unicode 6.0 by Markus Scherer.
+# Updated for Unicode 6.1 by Ken Whistler (no changes to mappings).
+# Updated for Unicode 6.2 by Ken Whistler (no changes to mappings).
#
# Format: Semicolon-delimited file with a fixed number of fields.
# The number of fields may increase in the future.
diff --git a/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt b/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt
index 8b457daaba7..a4db00b2f34 100644
--- a/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt
+++ b/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt
@@ -1,8 +1,8 @@
-# HangulSyllableType-6.1.0.txt
-# Date: 2011-08-25, 00:02:18 GMT [MD]
+# HangulSyllableType-6.2.0.txt
+# Date: 2012-05-23, 20:34:56 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
diff --git a/gnu/usr.bin/perl/lib/unicore/Index.txt b/gnu/usr.bin/perl/lib/unicore/Index.txt
index 50e1c9d5b98..c9885ac30e2 100644
--- a/gnu/usr.bin/perl/lib/unicore/Index.txt
+++ b/gnu/usr.bin/perl/lib/unicore/Index.txt
@@ -3061,8 +3061,8 @@ Linear B Syllabary 10000
Lines, Horizontal Scan 23BA
Lines, Vertical 2223
LIRA SIGN 20A4
+LIRA SIGN, TURKISH 20BA
lira, italian 00A3
-lira, turkish 00A3
Lisu A4D0
liter 2113
LIVRE TOURNOIS SIGN 20B6
@@ -5249,8 +5249,7 @@ TUGRIK SIGN 20AE
TURBAN, MAN WITH 1F473
turbofan 274B
Turkic, Old 10C00
-turkish currency 20A4
-turkish lira 00A3
+TURKISH LIRA SIGN 20BA
TURNED A, LATIN SMALL LETTER 0250
TURNED AE, LATIN SMALL LETTER 1D02
TURNED ALPHA, LATIN SMALL LETTER 0252
diff --git a/gnu/usr.bin/perl/lib/unicore/IndicMatraCategory.txt b/gnu/usr.bin/perl/lib/unicore/IndicMatraCategory.txt
index 68cbd093505..03a043ed87e 100644
--- a/gnu/usr.bin/perl/lib/unicore/IndicMatraCategory.txt
+++ b/gnu/usr.bin/perl/lib/unicore/IndicMatraCategory.txt
@@ -1,8 +1,8 @@
-# IndicMatraCategory-6.1.0.txt
-# Date: 2011-08-31, 23:50:00 GMT [KW]
+# IndicMatraCategory-6.2.0.txt
+# Date: 2012-05-15, 21:10:00 GMT [KW]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see UAX #44.
#
diff --git a/gnu/usr.bin/perl/lib/unicore/IndicSyllabicCategory.txt b/gnu/usr.bin/perl/lib/unicore/IndicSyllabicCategory.txt
index 9d771bacc04..fd03ea335bb 100644
--- a/gnu/usr.bin/perl/lib/unicore/IndicSyllabicCategory.txt
+++ b/gnu/usr.bin/perl/lib/unicore/IndicSyllabicCategory.txt
@@ -1,8 +1,8 @@
-# IndicSyllabicCategory-6.1.0.txt
-# Date: 2011-08-31, 23:54:00 GMT [KW]
+# IndicSyllabicCategory-6.2.0.txt
+# Date: 2012-05-15, 21:12:00 GMT [KW]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see UAX #44.
#
diff --git a/gnu/usr.bin/perl/lib/unicore/Jamo.txt b/gnu/usr.bin/perl/lib/unicore/Jamo.txt
index 3f325dee1f9..ee32f6e6c11 100644
--- a/gnu/usr.bin/perl/lib/unicore/Jamo.txt
+++ b/gnu/usr.bin/perl/lib/unicore/Jamo.txt
@@ -1,14 +1,14 @@
-# Jamo-6.1.0.txt
-# Date: 2011-06-22, 23:07:00 GMT [KW, LI]
+# Jamo-6.2.0.txt
+# Date: 2012-05-15, 22:23:00 GMT [KW, LI]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
# This file defines the Jamo_Short_Name property.
#
-# See Section 3.12 of The Unicode Standard, Version 6.1
+# See Section 3.12 of The Unicode Standard, Version 6.2
# for more information.
#
# Each line contains two fields, separated by a semicolon.
@@ -90,3 +90,4 @@
11C1; P # HANGUL JONGSEONG PHIEUPH
11C2; H # HANGUL JONGSEONG HIEUH
+# EOF
diff --git a/gnu/usr.bin/perl/lib/unicore/LineBreak.txt b/gnu/usr.bin/perl/lib/unicore/LineBreak.txt
index 98e9671f66d..e309836b0ee 100644
--- a/gnu/usr.bin/perl/lib/unicore/LineBreak.txt
+++ b/gnu/usr.bin/perl/lib/unicore/LineBreak.txt
@@ -1,5 +1,5 @@
-# LineBreak-6.1.0.txt
-# Date: 2011-11-08, 20:25:00 GMT [KW]
+# LineBreak-6.2.0.txt
+# Date: 2012-08-08, 19:26:00 GMT [KW]
#
# Line Break Properties
#
@@ -7,7 +7,7 @@
# Unicode Character Database.
# It contains both normative and informative data.
#
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# The format is two fields separated by a semicolon.
@@ -19,7 +19,7 @@
# Informative:
# "XX", "OP", "CL", "CP", "QU", "NS", "EX", "SY",
# "IS", "PR", "PO", "NU", "AL", "ID", "IN", "HY",
-# "BB", "BA", "SA", "AI", "B2", "HL", "CJ"
+# "BB", "BA", "SA", "AI", "B2", "HL", "CJ", "RI"
# - All code points, assigned and unassigned, that are not listed
# explicitly are given the value "XX".
# The unassigned code points that default to "ID" include ranges in the
@@ -7235,6 +7235,7 @@
20B7;PR # SPESMILO SIGN
20B8;PR # TENGE SIGN
20B9;PR # INDIAN RUPEE SIGN
+20BA;PR # TURKISH LIRA SIGN
20D0;CM # COMBINING LEFT HARPOON ABOVE
20D1;CM # COMBINING RIGHT HARPOON ABOVE
20D2;CM # COMBINING LONG VERTICAL LINE OVERLAY
@@ -7800,8 +7801,8 @@
2317;AL # VIEWDATA SQUARE
2318;AL # PLACE OF INTEREST SIGN
2319;AL # TURNED NOT SIGN
-231A;AL # WATCH
-231B;AL # HOURGLASS
+231A;ID # WATCH
+231B;ID # HOURGLASS
231C;AL # TOP LEFT CORNER
231D;AL # TOP RIGHT CORNER
231E;AL # BOTTOM LEFT CORNER
@@ -8014,10 +8015,10 @@
23ED;AL # BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
23EE;AL # BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
23EF;AL # BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
-23F0;AL # ALARM CLOCK
-23F1;AL # STOPWATCH
-23F2;AL # TIMER CLOCK
-23F3;AL # HOURGLASS WITH FLOWING SAND
+23F0;ID # ALARM CLOCK
+23F1;ID # STOPWATCH
+23F2;ID # TIMER CLOCK
+23F3;ID # HOURGLASS WITH FLOWING SAND
2400;AL # SYMBOL FOR NULL
2401;AL # SYMBOL FOR START OF HEADING
2402;AL # SYMBOL FOR START OF TEXT
@@ -8484,10 +8485,10 @@
25FD;AL # WHITE MEDIUM SMALL SQUARE
25FE;AL # BLACK MEDIUM SMALL SQUARE
25FF;AL # LOWER RIGHT TRIANGLE
-2600;AL # BLACK SUN WITH RAYS
-2601;AL # CLOUD
-2602;AL # UMBRELLA
-2603;AL # SNOWMAN
+2600;ID # BLACK SUN WITH RAYS
+2601;ID # CLOUD
+2602;ID # UMBRELLA
+2603;ID # SNOWMAN
2604;AL # COMET
2605;AI # BLACK STAR
2606;AI # WHITE STAR
@@ -8504,18 +8505,18 @@
2611;AL # BALLOT BOX WITH CHECK
2612;AL # BALLOT BOX WITH X
2613;AL # SALTIRE
-2614;AI # UMBRELLA WITH RAIN DROPS
-2615;AI # HOT BEVERAGE
+2614;ID # UMBRELLA WITH RAIN DROPS
+2615;ID # HOT BEVERAGE
2616;AI # WHITE SHOGI PIECE
2617;AI # BLACK SHOGI PIECE
-2618;AL # SHAMROCK
+2618;ID # SHAMROCK
2619;AL # REVERSED ROTATED FLORAL HEART BULLET
-261A;AL # BLACK LEFT POINTING INDEX
-261B;AL # BLACK RIGHT POINTING INDEX
-261C;AI # WHITE LEFT POINTING INDEX
-261D;AL # WHITE UP POINTING INDEX
-261E;AI # WHITE RIGHT POINTING INDEX
-261F;AL # WHITE DOWN POINTING INDEX
+261A;ID # BLACK LEFT POINTING INDEX
+261B;ID # BLACK RIGHT POINTING INDEX
+261C;ID # WHITE LEFT POINTING INDEX
+261D;ID # WHITE UP POINTING INDEX
+261E;ID # WHITE RIGHT POINTING INDEX
+261F;ID # WHITE DOWN POINTING INDEX
2620;AL # SKULL AND CROSSBONES
2621;AL # CAUTION SIGN
2622;AL # RADIOACTIVE SIGN
@@ -8541,9 +8542,9 @@
2636;AL # TRIGRAM FOR MOUNTAIN
2637;AL # TRIGRAM FOR EARTH
2638;AL # WHEEL OF DHARMA
-2639;AL # WHITE FROWNING FACE
-263A;AL # WHITE SMILING FACE
-263B;AL # BLACK SMILING FACE
+2639;ID # WHITE FROWNING FACE
+263A;ID # WHITE SMILING FACE
+263B;ID # BLACK SMILING FACE
263C;AL # WHITE SUN WITH RAYS
263D;AL # FIRST QUARTER MOON
263E;AL # LAST QUARTER MOON
@@ -8588,7 +8589,7 @@
2665;AI # BLACK HEART SUIT
2666;AL # BLACK DIAMOND SUIT
2667;AI # WHITE CLUB SUIT
-2668;AI # HOT SPRINGS
+2668;ID # HOT SPRINGS
2669;AI # QUARTER NOTE
266A;AI # EIGHTH NOTE
266B;AL # BEAMED EIGHTH NOTES
@@ -8611,7 +8612,7 @@
267C;AL # RECYCLED PAPER SYMBOL
267D;AL # PARTIALLY-RECYCLED PAPER SYMBOL
267E;AL # PERMANENT PAPER SIGN
-267F;AL # WHEELCHAIR SYMBOL
+267F;ID # WHEELCHAIR SYMBOL
2680;AL # DIE FACE-1
2681;AL # DIE FACE-2
2682;AL # DIE FACE-3
@@ -8673,43 +8674,43 @@
26BA;AL # SEMISEXTILE
26BB;AL # QUINCUNX
26BC;AL # SESQUIQUADRATE
-26BD;AL # SOCCER BALL
-26BE;AI # BASEBALL
-26BF;AI # SQUARED KEY
-26C0;AL # WHITE DRAUGHTS MAN
-26C1;AL # WHITE DRAUGHTS KING
-26C2;AL # BLACK DRAUGHTS MAN
-26C3;AL # BLACK DRAUGHTS KING
-26C4;AI # SNOWMAN WITHOUT SNOW
-26C5;AI # SUN BEHIND CLOUD
-26C6;AI # RAIN
-26C7;AI # BLACK SNOWMAN
-26C8;AI # THUNDER CLOUD AND RAIN
+26BD;ID # SOCCER BALL
+26BE;ID # BASEBALL
+26BF;ID # SQUARED KEY
+26C0;ID # WHITE DRAUGHTS MAN
+26C1;ID # WHITE DRAUGHTS KING
+26C2;ID # BLACK DRAUGHTS MAN
+26C3;ID # BLACK DRAUGHTS KING
+26C4;ID # SNOWMAN WITHOUT SNOW
+26C5;ID # SUN BEHIND CLOUD
+26C6;ID # RAIN
+26C7;ID # BLACK SNOWMAN
+26C8;ID # THUNDER CLOUD AND RAIN
26C9;AI # TURNED WHITE SHOGI PIECE
26CA;AI # TURNED BLACK SHOGI PIECE
26CB;AI # WHITE DIAMOND IN SQUARE
26CC;AI # CROSSING LANES
-26CD;AI # DISABLED CAR
+26CD;ID # DISABLED CAR
26CE;AL # OPHIUCHUS
-26CF;AI # PICK
-26D0;AI # CAR SLIDING
-26D1;AI # HELMET WITH WHITE CROSS
+26CF;ID # PICK
+26D0;ID # CAR SLIDING
+26D1;ID # HELMET WITH WHITE CROSS
26D2;AI # CIRCLED CROSSING LANES
-26D3;AI # CHAINS
-26D4;AI # NO ENTRY
+26D3;ID # CHAINS
+26D4;ID # NO ENTRY
26D5;AI # ALTERNATE ONE-WAY LEFT WAY TRAFFIC
26D6;AI # BLACK TWO-WAY LEFT WAY TRAFFIC
26D7;AI # WHITE TWO-WAY LEFT WAY TRAFFIC
-26D8;AI # BLACK LEFT LANE MERGE
-26D9;AI # WHITE LEFT LANE MERGE
+26D8;ID # BLACK LEFT LANE MERGE
+26D9;ID # WHITE LEFT LANE MERGE
26DA;AI # DRIVE SLOW SIGN
26DB;AI # HEAVY WHITE DOWN-POINTING TRIANGLE
-26DC;AI # LEFT CLOSED ENTRY
+26DC;ID # LEFT CLOSED ENTRY
26DD;AI # SQUARED SALTIRE
26DE;AI # FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE
-26DF;AI # BLACK TRUCK
-26E0;AI # RESTRICTED LEFT ENTRY-1
-26E1;AI # RESTRICTED LEFT ENTRY-2
+26DF;ID # BLACK TRUCK
+26E0;ID # RESTRICTED LEFT ENTRY-1
+26E1;ID # RESTRICTED LEFT ENTRY-2
26E2;AL # ASTRONOMICAL SYMBOL FOR URANUS
26E3;AI # HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE
26E4;AL # PENTAGRAM
@@ -8718,41 +8719,41 @@
26E7;AL # INVERTED PENTAGRAM
26E8;AI # BLACK CROSS ON SHIELD
26E9;AI # SHINTO SHRINE
-26EA;AI # CHURCH
+26EA;ID # CHURCH
26EB;AI # CASTLE
26EC;AI # HISTORIC SITE
26ED;AI # GEAR WITHOUT HUB
26EE;AI # GEAR WITH HANDLES
26EF;AI # MAP SYMBOL FOR LIGHTHOUSE
26F0;AI # MOUNTAIN
-26F1;AI # UMBRELLA ON GROUND
-26F2;AI # FOUNTAIN
-26F3;AI # FLAG IN HOLE
-26F4;AI # FERRY
-26F5;AI # SAILBOAT
+26F1;ID # UMBRELLA ON GROUND
+26F2;ID # FOUNTAIN
+26F3;ID # FLAG IN HOLE
+26F4;ID # FERRY
+26F5;ID # SAILBOAT
26F6;AI # SQUARE FOUR CORNERS
-26F7;AI # SKIER
-26F8;AI # ICE SKATE
-26F9;AI # PERSON WITH BALL
-26FA;AI # TENT
+26F7;ID # SKIER
+26F8;ID # ICE SKATE
+26F9;ID # PERSON WITH BALL
+26FA;ID # TENT
26FB;AI # JAPANESE BANK SYMBOL
26FC;AI # HEADSTONE GRAVEYARD SYMBOL
-26FD;AI # FUEL PUMP
-26FE;AI # CUP ON BLACK SQUARE
-26FF;AI # WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
-2701;AL # UPPER BLADE SCISSORS
-2702;AL # BLACK SCISSORS
-2703;AL # LOWER BLADE SCISSORS
-2704;AL # WHITE SCISSORS
+26FD;ID # FUEL PUMP
+26FE;ID # CUP ON BLACK SQUARE
+26FF;ID # WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
+2701;ID # UPPER BLADE SCISSORS
+2702;ID # BLACK SCISSORS
+2703;ID # LOWER BLADE SCISSORS
+2704;ID # WHITE SCISSORS
2705;AL # WHITE HEAVY CHECK MARK
2706;AL # TELEPHONE LOCATION SIGN
2707;AL # TAPE DRIVE
-2708;AL # AIRPLANE
-2709;AL # ENVELOPE
-270A;AL # RAISED FIST
-270B;AL # RAISED HAND
-270C;AL # VICTORY HAND
-270D;AL # WRITING HAND
+2708;ID # AIRPLANE
+2709;ID # ENVELOPE
+270A;ID # RAISED FIST
+270B;ID # RAISED HAND
+270C;ID # VICTORY HAND
+270D;ID # WRITING HAND
270E;AL # LOWER RIGHT PENCIL
270F;AL # PENCIL
2710;AL # UPPER RIGHT PENCIL
@@ -23150,209 +23151,209 @@ FFFD;AI # REPLACEMENT CHARACTER
1EEBB;AL # ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
1EEF0;AL # ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL
1EEF1;AL # ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
-1F000;AL # MAHJONG TILE EAST WIND
-1F001;AL # MAHJONG TILE SOUTH WIND
-1F002;AL # MAHJONG TILE WEST WIND
-1F003;AL # MAHJONG TILE NORTH WIND
-1F004;AL # MAHJONG TILE RED DRAGON
-1F005;AL # MAHJONG TILE GREEN DRAGON
-1F006;AL # MAHJONG TILE WHITE DRAGON
-1F007;AL # MAHJONG TILE ONE OF CHARACTERS
-1F008;AL # MAHJONG TILE TWO OF CHARACTERS
-1F009;AL # MAHJONG TILE THREE OF CHARACTERS
-1F00A;AL # MAHJONG TILE FOUR OF CHARACTERS
-1F00B;AL # MAHJONG TILE FIVE OF CHARACTERS
-1F00C;AL # MAHJONG TILE SIX OF CHARACTERS
-1F00D;AL # MAHJONG TILE SEVEN OF CHARACTERS
-1F00E;AL # MAHJONG TILE EIGHT OF CHARACTERS
-1F00F;AL # MAHJONG TILE NINE OF CHARACTERS
-1F010;AL # MAHJONG TILE ONE OF BAMBOOS
-1F011;AL # MAHJONG TILE TWO OF BAMBOOS
-1F012;AL # MAHJONG TILE THREE OF BAMBOOS
-1F013;AL # MAHJONG TILE FOUR OF BAMBOOS
-1F014;AL # MAHJONG TILE FIVE OF BAMBOOS
-1F015;AL # MAHJONG TILE SIX OF BAMBOOS
-1F016;AL # MAHJONG TILE SEVEN OF BAMBOOS
-1F017;AL # MAHJONG TILE EIGHT OF BAMBOOS
-1F018;AL # MAHJONG TILE NINE OF BAMBOOS
-1F019;AL # MAHJONG TILE ONE OF CIRCLES
-1F01A;AL # MAHJONG TILE TWO OF CIRCLES
-1F01B;AL # MAHJONG TILE THREE OF CIRCLES
-1F01C;AL # MAHJONG TILE FOUR OF CIRCLES
-1F01D;AL # MAHJONG TILE FIVE OF CIRCLES
-1F01E;AL # MAHJONG TILE SIX OF CIRCLES
-1F01F;AL # MAHJONG TILE SEVEN OF CIRCLES
-1F020;AL # MAHJONG TILE EIGHT OF CIRCLES
-1F021;AL # MAHJONG TILE NINE OF CIRCLES
-1F022;AL # MAHJONG TILE PLUM
-1F023;AL # MAHJONG TILE ORCHID
-1F024;AL # MAHJONG TILE BAMBOO
-1F025;AL # MAHJONG TILE CHRYSANTHEMUM
-1F026;AL # MAHJONG TILE SPRING
-1F027;AL # MAHJONG TILE SUMMER
-1F028;AL # MAHJONG TILE AUTUMN
-1F029;AL # MAHJONG TILE WINTER
-1F02A;AL # MAHJONG TILE JOKER
-1F02B;AL # MAHJONG TILE BACK
-1F030;AL # DOMINO TILE HORIZONTAL BACK
-1F031;AL # DOMINO TILE HORIZONTAL-00-00
-1F032;AL # DOMINO TILE HORIZONTAL-00-01
-1F033;AL # DOMINO TILE HORIZONTAL-00-02
-1F034;AL # DOMINO TILE HORIZONTAL-00-03
-1F035;AL # DOMINO TILE HORIZONTAL-00-04
-1F036;AL # DOMINO TILE HORIZONTAL-00-05
-1F037;AL # DOMINO TILE HORIZONTAL-00-06
-1F038;AL # DOMINO TILE HORIZONTAL-01-00
-1F039;AL # DOMINO TILE HORIZONTAL-01-01
-1F03A;AL # DOMINO TILE HORIZONTAL-01-02
-1F03B;AL # DOMINO TILE HORIZONTAL-01-03
-1F03C;AL # DOMINO TILE HORIZONTAL-01-04
-1F03D;AL # DOMINO TILE HORIZONTAL-01-05
-1F03E;AL # DOMINO TILE HORIZONTAL-01-06
-1F03F;AL # DOMINO TILE HORIZONTAL-02-00
-1F040;AL # DOMINO TILE HORIZONTAL-02-01
-1F041;AL # DOMINO TILE HORIZONTAL-02-02
-1F042;AL # DOMINO TILE HORIZONTAL-02-03
-1F043;AL # DOMINO TILE HORIZONTAL-02-04
-1F044;AL # DOMINO TILE HORIZONTAL-02-05
-1F045;AL # DOMINO TILE HORIZONTAL-02-06
-1F046;AL # DOMINO TILE HORIZONTAL-03-00
-1F047;AL # DOMINO TILE HORIZONTAL-03-01
-1F048;AL # DOMINO TILE HORIZONTAL-03-02
-1F049;AL # DOMINO TILE HORIZONTAL-03-03
-1F04A;AL # DOMINO TILE HORIZONTAL-03-04
-1F04B;AL # DOMINO TILE HORIZONTAL-03-05
-1F04C;AL # DOMINO TILE HORIZONTAL-03-06
-1F04D;AL # DOMINO TILE HORIZONTAL-04-00
-1F04E;AL # DOMINO TILE HORIZONTAL-04-01
-1F04F;AL # DOMINO TILE HORIZONTAL-04-02
-1F050;AL # DOMINO TILE HORIZONTAL-04-03
-1F051;AL # DOMINO TILE HORIZONTAL-04-04
-1F052;AL # DOMINO TILE HORIZONTAL-04-05
-1F053;AL # DOMINO TILE HORIZONTAL-04-06
-1F054;AL # DOMINO TILE HORIZONTAL-05-00
-1F055;AL # DOMINO TILE HORIZONTAL-05-01
-1F056;AL # DOMINO TILE HORIZONTAL-05-02
-1F057;AL # DOMINO TILE HORIZONTAL-05-03
-1F058;AL # DOMINO TILE HORIZONTAL-05-04
-1F059;AL # DOMINO TILE HORIZONTAL-05-05
-1F05A;AL # DOMINO TILE HORIZONTAL-05-06
-1F05B;AL # DOMINO TILE HORIZONTAL-06-00
-1F05C;AL # DOMINO TILE HORIZONTAL-06-01
-1F05D;AL # DOMINO TILE HORIZONTAL-06-02
-1F05E;AL # DOMINO TILE HORIZONTAL-06-03
-1F05F;AL # DOMINO TILE HORIZONTAL-06-04
-1F060;AL # DOMINO TILE HORIZONTAL-06-05
-1F061;AL # DOMINO TILE HORIZONTAL-06-06
-1F062;AL # DOMINO TILE VERTICAL BACK
-1F063;AL # DOMINO TILE VERTICAL-00-00
-1F064;AL # DOMINO TILE VERTICAL-00-01
-1F065;AL # DOMINO TILE VERTICAL-00-02
-1F066;AL # DOMINO TILE VERTICAL-00-03
-1F067;AL # DOMINO TILE VERTICAL-00-04
-1F068;AL # DOMINO TILE VERTICAL-00-05
-1F069;AL # DOMINO TILE VERTICAL-00-06
-1F06A;AL # DOMINO TILE VERTICAL-01-00
-1F06B;AL # DOMINO TILE VERTICAL-01-01
-1F06C;AL # DOMINO TILE VERTICAL-01-02
-1F06D;AL # DOMINO TILE VERTICAL-01-03
-1F06E;AL # DOMINO TILE VERTICAL-01-04
-1F06F;AL # DOMINO TILE VERTICAL-01-05
-1F070;AL # DOMINO TILE VERTICAL-01-06
-1F071;AL # DOMINO TILE VERTICAL-02-00
-1F072;AL # DOMINO TILE VERTICAL-02-01
-1F073;AL # DOMINO TILE VERTICAL-02-02
-1F074;AL # DOMINO TILE VERTICAL-02-03
-1F075;AL # DOMINO TILE VERTICAL-02-04
-1F076;AL # DOMINO TILE VERTICAL-02-05
-1F077;AL # DOMINO TILE VERTICAL-02-06
-1F078;AL # DOMINO TILE VERTICAL-03-00
-1F079;AL # DOMINO TILE VERTICAL-03-01
-1F07A;AL # DOMINO TILE VERTICAL-03-02
-1F07B;AL # DOMINO TILE VERTICAL-03-03
-1F07C;AL # DOMINO TILE VERTICAL-03-04
-1F07D;AL # DOMINO TILE VERTICAL-03-05
-1F07E;AL # DOMINO TILE VERTICAL-03-06
-1F07F;AL # DOMINO TILE VERTICAL-04-00
-1F080;AL # DOMINO TILE VERTICAL-04-01
-1F081;AL # DOMINO TILE VERTICAL-04-02
-1F082;AL # DOMINO TILE VERTICAL-04-03
-1F083;AL # DOMINO TILE VERTICAL-04-04
-1F084;AL # DOMINO TILE VERTICAL-04-05
-1F085;AL # DOMINO TILE VERTICAL-04-06
-1F086;AL # DOMINO TILE VERTICAL-05-00
-1F087;AL # DOMINO TILE VERTICAL-05-01
-1F088;AL # DOMINO TILE VERTICAL-05-02
-1F089;AL # DOMINO TILE VERTICAL-05-03
-1F08A;AL # DOMINO TILE VERTICAL-05-04
-1F08B;AL # DOMINO TILE VERTICAL-05-05
-1F08C;AL # DOMINO TILE VERTICAL-05-06
-1F08D;AL # DOMINO TILE VERTICAL-06-00
-1F08E;AL # DOMINO TILE VERTICAL-06-01
-1F08F;AL # DOMINO TILE VERTICAL-06-02
-1F090;AL # DOMINO TILE VERTICAL-06-03
-1F091;AL # DOMINO TILE VERTICAL-06-04
-1F092;AL # DOMINO TILE VERTICAL-06-05
-1F093;AL # DOMINO TILE VERTICAL-06-06
-1F0A0;AL # PLAYING CARD BACK
-1F0A1;AL # PLAYING CARD ACE OF SPADES
-1F0A2;AL # PLAYING CARD TWO OF SPADES
-1F0A3;AL # PLAYING CARD THREE OF SPADES
-1F0A4;AL # PLAYING CARD FOUR OF SPADES
-1F0A5;AL # PLAYING CARD FIVE OF SPADES
-1F0A6;AL # PLAYING CARD SIX OF SPADES
-1F0A7;AL # PLAYING CARD SEVEN OF SPADES
-1F0A8;AL # PLAYING CARD EIGHT OF SPADES
-1F0A9;AL # PLAYING CARD NINE OF SPADES
-1F0AA;AL # PLAYING CARD TEN OF SPADES
-1F0AB;AL # PLAYING CARD JACK OF SPADES
-1F0AC;AL # PLAYING CARD KNIGHT OF SPADES
-1F0AD;AL # PLAYING CARD QUEEN OF SPADES
-1F0AE;AL # PLAYING CARD KING OF SPADES
-1F0B1;AL # PLAYING CARD ACE OF HEARTS
-1F0B2;AL # PLAYING CARD TWO OF HEARTS
-1F0B3;AL # PLAYING CARD THREE OF HEARTS
-1F0B4;AL # PLAYING CARD FOUR OF HEARTS
-1F0B5;AL # PLAYING CARD FIVE OF HEARTS
-1F0B6;AL # PLAYING CARD SIX OF HEARTS
-1F0B7;AL # PLAYING CARD SEVEN OF HEARTS
-1F0B8;AL # PLAYING CARD EIGHT OF HEARTS
-1F0B9;AL # PLAYING CARD NINE OF HEARTS
-1F0BA;AL # PLAYING CARD TEN OF HEARTS
-1F0BB;AL # PLAYING CARD JACK OF HEARTS
-1F0BC;AL # PLAYING CARD KNIGHT OF HEARTS
-1F0BD;AL # PLAYING CARD QUEEN OF HEARTS
-1F0BE;AL # PLAYING CARD KING OF HEARTS
-1F0C1;AL # PLAYING CARD ACE OF DIAMONDS
-1F0C2;AL # PLAYING CARD TWO OF DIAMONDS
-1F0C3;AL # PLAYING CARD THREE OF DIAMONDS
-1F0C4;AL # PLAYING CARD FOUR OF DIAMONDS
-1F0C5;AL # PLAYING CARD FIVE OF DIAMONDS
-1F0C6;AL # PLAYING CARD SIX OF DIAMONDS
-1F0C7;AL # PLAYING CARD SEVEN OF DIAMONDS
-1F0C8;AL # PLAYING CARD EIGHT OF DIAMONDS
-1F0C9;AL # PLAYING CARD NINE OF DIAMONDS
-1F0CA;AL # PLAYING CARD TEN OF DIAMONDS
-1F0CB;AL # PLAYING CARD JACK OF DIAMONDS
-1F0CC;AL # PLAYING CARD KNIGHT OF DIAMONDS
-1F0CD;AL # PLAYING CARD QUEEN OF DIAMONDS
-1F0CE;AL # PLAYING CARD KING OF DIAMONDS
-1F0CF;AL # PLAYING CARD BLACK JOKER
-1F0D1;AL # PLAYING CARD ACE OF CLUBS
-1F0D2;AL # PLAYING CARD TWO OF CLUBS
-1F0D3;AL # PLAYING CARD THREE OF CLUBS
-1F0D4;AL # PLAYING CARD FOUR OF CLUBS
-1F0D5;AL # PLAYING CARD FIVE OF CLUBS
-1F0D6;AL # PLAYING CARD SIX OF CLUBS
-1F0D7;AL # PLAYING CARD SEVEN OF CLUBS
-1F0D8;AL # PLAYING CARD EIGHT OF CLUBS
-1F0D9;AL # PLAYING CARD NINE OF CLUBS
-1F0DA;AL # PLAYING CARD TEN OF CLUBS
-1F0DB;AL # PLAYING CARD JACK OF CLUBS
-1F0DC;AL # PLAYING CARD KNIGHT OF CLUBS
-1F0DD;AL # PLAYING CARD QUEEN OF CLUBS
-1F0DE;AL # PLAYING CARD KING OF CLUBS
-1F0DF;AL # PLAYING CARD WHITE JOKER
+1F000;ID # MAHJONG TILE EAST WIND
+1F001;ID # MAHJONG TILE SOUTH WIND
+1F002;ID # MAHJONG TILE WEST WIND
+1F003;ID # MAHJONG TILE NORTH WIND
+1F004;ID # MAHJONG TILE RED DRAGON
+1F005;ID # MAHJONG TILE GREEN DRAGON
+1F006;ID # MAHJONG TILE WHITE DRAGON
+1F007;ID # MAHJONG TILE ONE OF CHARACTERS
+1F008;ID # MAHJONG TILE TWO OF CHARACTERS
+1F009;ID # MAHJONG TILE THREE OF CHARACTERS
+1F00A;ID # MAHJONG TILE FOUR OF CHARACTERS
+1F00B;ID # MAHJONG TILE FIVE OF CHARACTERS
+1F00C;ID # MAHJONG TILE SIX OF CHARACTERS
+1F00D;ID # MAHJONG TILE SEVEN OF CHARACTERS
+1F00E;ID # MAHJONG TILE EIGHT OF CHARACTERS
+1F00F;ID # MAHJONG TILE NINE OF CHARACTERS
+1F010;ID # MAHJONG TILE ONE OF BAMBOOS
+1F011;ID # MAHJONG TILE TWO OF BAMBOOS
+1F012;ID # MAHJONG TILE THREE OF BAMBOOS
+1F013;ID # MAHJONG TILE FOUR OF BAMBOOS
+1F014;ID # MAHJONG TILE FIVE OF BAMBOOS
+1F015;ID # MAHJONG TILE SIX OF BAMBOOS
+1F016;ID # MAHJONG TILE SEVEN OF BAMBOOS
+1F017;ID # MAHJONG TILE EIGHT OF BAMBOOS
+1F018;ID # MAHJONG TILE NINE OF BAMBOOS
+1F019;ID # MAHJONG TILE ONE OF CIRCLES
+1F01A;ID # MAHJONG TILE TWO OF CIRCLES
+1F01B;ID # MAHJONG TILE THREE OF CIRCLES
+1F01C;ID # MAHJONG TILE FOUR OF CIRCLES
+1F01D;ID # MAHJONG TILE FIVE OF CIRCLES
+1F01E;ID # MAHJONG TILE SIX OF CIRCLES
+1F01F;ID # MAHJONG TILE SEVEN OF CIRCLES
+1F020;ID # MAHJONG TILE EIGHT OF CIRCLES
+1F021;ID # MAHJONG TILE NINE OF CIRCLES
+1F022;ID # MAHJONG TILE PLUM
+1F023;ID # MAHJONG TILE ORCHID
+1F024;ID # MAHJONG TILE BAMBOO
+1F025;ID # MAHJONG TILE CHRYSANTHEMUM
+1F026;ID # MAHJONG TILE SPRING
+1F027;ID # MAHJONG TILE SUMMER
+1F028;ID # MAHJONG TILE AUTUMN
+1F029;ID # MAHJONG TILE WINTER
+1F02A;ID # MAHJONG TILE JOKER
+1F02B;ID # MAHJONG TILE BACK
+1F030;ID # DOMINO TILE HORIZONTAL BACK
+1F031;ID # DOMINO TILE HORIZONTAL-00-00
+1F032;ID # DOMINO TILE HORIZONTAL-00-01
+1F033;ID # DOMINO TILE HORIZONTAL-00-02
+1F034;ID # DOMINO TILE HORIZONTAL-00-03
+1F035;ID # DOMINO TILE HORIZONTAL-00-04
+1F036;ID # DOMINO TILE HORIZONTAL-00-05
+1F037;ID # DOMINO TILE HORIZONTAL-00-06
+1F038;ID # DOMINO TILE HORIZONTAL-01-00
+1F039;ID # DOMINO TILE HORIZONTAL-01-01
+1F03A;ID # DOMINO TILE HORIZONTAL-01-02
+1F03B;ID # DOMINO TILE HORIZONTAL-01-03
+1F03C;ID # DOMINO TILE HORIZONTAL-01-04
+1F03D;ID # DOMINO TILE HORIZONTAL-01-05
+1F03E;ID # DOMINO TILE HORIZONTAL-01-06
+1F03F;ID # DOMINO TILE HORIZONTAL-02-00
+1F040;ID # DOMINO TILE HORIZONTAL-02-01
+1F041;ID # DOMINO TILE HORIZONTAL-02-02
+1F042;ID # DOMINO TILE HORIZONTAL-02-03
+1F043;ID # DOMINO TILE HORIZONTAL-02-04
+1F044;ID # DOMINO TILE HORIZONTAL-02-05
+1F045;ID # DOMINO TILE HORIZONTAL-02-06
+1F046;ID # DOMINO TILE HORIZONTAL-03-00
+1F047;ID # DOMINO TILE HORIZONTAL-03-01
+1F048;ID # DOMINO TILE HORIZONTAL-03-02
+1F049;ID # DOMINO TILE HORIZONTAL-03-03
+1F04A;ID # DOMINO TILE HORIZONTAL-03-04
+1F04B;ID # DOMINO TILE HORIZONTAL-03-05
+1F04C;ID # DOMINO TILE HORIZONTAL-03-06
+1F04D;ID # DOMINO TILE HORIZONTAL-04-00
+1F04E;ID # DOMINO TILE HORIZONTAL-04-01
+1F04F;ID # DOMINO TILE HORIZONTAL-04-02
+1F050;ID # DOMINO TILE HORIZONTAL-04-03
+1F051;ID # DOMINO TILE HORIZONTAL-04-04
+1F052;ID # DOMINO TILE HORIZONTAL-04-05
+1F053;ID # DOMINO TILE HORIZONTAL-04-06
+1F054;ID # DOMINO TILE HORIZONTAL-05-00
+1F055;ID # DOMINO TILE HORIZONTAL-05-01
+1F056;ID # DOMINO TILE HORIZONTAL-05-02
+1F057;ID # DOMINO TILE HORIZONTAL-05-03
+1F058;ID # DOMINO TILE HORIZONTAL-05-04
+1F059;ID # DOMINO TILE HORIZONTAL-05-05
+1F05A;ID # DOMINO TILE HORIZONTAL-05-06
+1F05B;ID # DOMINO TILE HORIZONTAL-06-00
+1F05C;ID # DOMINO TILE HORIZONTAL-06-01
+1F05D;ID # DOMINO TILE HORIZONTAL-06-02
+1F05E;ID # DOMINO TILE HORIZONTAL-06-03
+1F05F;ID # DOMINO TILE HORIZONTAL-06-04
+1F060;ID # DOMINO TILE HORIZONTAL-06-05
+1F061;ID # DOMINO TILE HORIZONTAL-06-06
+1F062;ID # DOMINO TILE VERTICAL BACK
+1F063;ID # DOMINO TILE VERTICAL-00-00
+1F064;ID # DOMINO TILE VERTICAL-00-01
+1F065;ID # DOMINO TILE VERTICAL-00-02
+1F066;ID # DOMINO TILE VERTICAL-00-03
+1F067;ID # DOMINO TILE VERTICAL-00-04
+1F068;ID # DOMINO TILE VERTICAL-00-05
+1F069;ID # DOMINO TILE VERTICAL-00-06
+1F06A;ID # DOMINO TILE VERTICAL-01-00
+1F06B;ID # DOMINO TILE VERTICAL-01-01
+1F06C;ID # DOMINO TILE VERTICAL-01-02
+1F06D;ID # DOMINO TILE VERTICAL-01-03
+1F06E;ID # DOMINO TILE VERTICAL-01-04
+1F06F;ID # DOMINO TILE VERTICAL-01-05
+1F070;ID # DOMINO TILE VERTICAL-01-06
+1F071;ID # DOMINO TILE VERTICAL-02-00
+1F072;ID # DOMINO TILE VERTICAL-02-01
+1F073;ID # DOMINO TILE VERTICAL-02-02
+1F074;ID # DOMINO TILE VERTICAL-02-03
+1F075;ID # DOMINO TILE VERTICAL-02-04
+1F076;ID # DOMINO TILE VERTICAL-02-05
+1F077;ID # DOMINO TILE VERTICAL-02-06
+1F078;ID # DOMINO TILE VERTICAL-03-00
+1F079;ID # DOMINO TILE VERTICAL-03-01
+1F07A;ID # DOMINO TILE VERTICAL-03-02
+1F07B;ID # DOMINO TILE VERTICAL-03-03
+1F07C;ID # DOMINO TILE VERTICAL-03-04
+1F07D;ID # DOMINO TILE VERTICAL-03-05
+1F07E;ID # DOMINO TILE VERTICAL-03-06
+1F07F;ID # DOMINO TILE VERTICAL-04-00
+1F080;ID # DOMINO TILE VERTICAL-04-01
+1F081;ID # DOMINO TILE VERTICAL-04-02
+1F082;ID # DOMINO TILE VERTICAL-04-03
+1F083;ID # DOMINO TILE VERTICAL-04-04
+1F084;ID # DOMINO TILE VERTICAL-04-05
+1F085;ID # DOMINO TILE VERTICAL-04-06
+1F086;ID # DOMINO TILE VERTICAL-05-00
+1F087;ID # DOMINO TILE VERTICAL-05-01
+1F088;ID # DOMINO TILE VERTICAL-05-02
+1F089;ID # DOMINO TILE VERTICAL-05-03
+1F08A;ID # DOMINO TILE VERTICAL-05-04
+1F08B;ID # DOMINO TILE VERTICAL-05-05
+1F08C;ID # DOMINO TILE VERTICAL-05-06
+1F08D;ID # DOMINO TILE VERTICAL-06-00
+1F08E;ID # DOMINO TILE VERTICAL-06-01
+1F08F;ID # DOMINO TILE VERTICAL-06-02
+1F090;ID # DOMINO TILE VERTICAL-06-03
+1F091;ID # DOMINO TILE VERTICAL-06-04
+1F092;ID # DOMINO TILE VERTICAL-06-05
+1F093;ID # DOMINO TILE VERTICAL-06-06
+1F0A0;ID # PLAYING CARD BACK
+1F0A1;ID # PLAYING CARD ACE OF SPADES
+1F0A2;ID # PLAYING CARD TWO OF SPADES
+1F0A3;ID # PLAYING CARD THREE OF SPADES
+1F0A4;ID # PLAYING CARD FOUR OF SPADES
+1F0A5;ID # PLAYING CARD FIVE OF SPADES
+1F0A6;ID # PLAYING CARD SIX OF SPADES
+1F0A7;ID # PLAYING CARD SEVEN OF SPADES
+1F0A8;ID # PLAYING CARD EIGHT OF SPADES
+1F0A9;ID # PLAYING CARD NINE OF SPADES
+1F0AA;ID # PLAYING CARD TEN OF SPADES
+1F0AB;ID # PLAYING CARD JACK OF SPADES
+1F0AC;ID # PLAYING CARD KNIGHT OF SPADES
+1F0AD;ID # PLAYING CARD QUEEN OF SPADES
+1F0AE;ID # PLAYING CARD KING OF SPADES
+1F0B1;ID # PLAYING CARD ACE OF HEARTS
+1F0B2;ID # PLAYING CARD TWO OF HEARTS
+1F0B3;ID # PLAYING CARD THREE OF HEARTS
+1F0B4;ID # PLAYING CARD FOUR OF HEARTS
+1F0B5;ID # PLAYING CARD FIVE OF HEARTS
+1F0B6;ID # PLAYING CARD SIX OF HEARTS
+1F0B7;ID # PLAYING CARD SEVEN OF HEARTS
+1F0B8;ID # PLAYING CARD EIGHT OF HEARTS
+1F0B9;ID # PLAYING CARD NINE OF HEARTS
+1F0BA;ID # PLAYING CARD TEN OF HEARTS
+1F0BB;ID # PLAYING CARD JACK OF HEARTS
+1F0BC;ID # PLAYING CARD KNIGHT OF HEARTS
+1F0BD;ID # PLAYING CARD QUEEN OF HEARTS
+1F0BE;ID # PLAYING CARD KING OF HEARTS
+1F0C1;ID # PLAYING CARD ACE OF DIAMONDS
+1F0C2;ID # PLAYING CARD TWO OF DIAMONDS
+1F0C3;ID # PLAYING CARD THREE OF DIAMONDS
+1F0C4;ID # PLAYING CARD FOUR OF DIAMONDS
+1F0C5;ID # PLAYING CARD FIVE OF DIAMONDS
+1F0C6;ID # PLAYING CARD SIX OF DIAMONDS
+1F0C7;ID # PLAYING CARD SEVEN OF DIAMONDS
+1F0C8;ID # PLAYING CARD EIGHT OF DIAMONDS
+1F0C9;ID # PLAYING CARD NINE OF DIAMONDS
+1F0CA;ID # PLAYING CARD TEN OF DIAMONDS
+1F0CB;ID # PLAYING CARD JACK OF DIAMONDS
+1F0CC;ID # PLAYING CARD KNIGHT OF DIAMONDS
+1F0CD;ID # PLAYING CARD QUEEN OF DIAMONDS
+1F0CE;ID # PLAYING CARD KING OF DIAMONDS
+1F0CF;ID # PLAYING CARD BLACK JOKER
+1F0D1;ID # PLAYING CARD ACE OF CLUBS
+1F0D2;ID # PLAYING CARD TWO OF CLUBS
+1F0D3;ID # PLAYING CARD THREE OF CLUBS
+1F0D4;ID # PLAYING CARD FOUR OF CLUBS
+1F0D5;ID # PLAYING CARD FIVE OF CLUBS
+1F0D6;ID # PLAYING CARD SIX OF CLUBS
+1F0D7;ID # PLAYING CARD SEVEN OF CLUBS
+1F0D8;ID # PLAYING CARD EIGHT OF CLUBS
+1F0D9;ID # PLAYING CARD NINE OF CLUBS
+1F0DA;ID # PLAYING CARD TEN OF CLUBS
+1F0DB;ID # PLAYING CARD JACK OF CLUBS
+1F0DC;ID # PLAYING CARD KNIGHT OF CLUBS
+1F0DD;ID # PLAYING CARD QUEEN OF CLUBS
+1F0DE;ID # PLAYING CARD KING OF CLUBS
+1F0DF;ID # PLAYING CARD WHITE JOKER
1F100;AI # DIGIT ZERO FULL STOP
1F101;AI # DIGIT ZERO COMMA
1F102;AI # DIGIT ONE COMMA
@@ -23498,32 +23499,32 @@ FFFD;AI # REPLACEMENT CHARACTER
1F198;AI # SQUARED SOS
1F199;AI # SQUARED UP WITH EXCLAMATION MARK
1F19A;AI # SQUARED VS
-1F1E6;AL # REGIONAL INDICATOR SYMBOL LETTER A
-1F1E7;AL # REGIONAL INDICATOR SYMBOL LETTER B
-1F1E8;AL # REGIONAL INDICATOR SYMBOL LETTER C
-1F1E9;AL # REGIONAL INDICATOR SYMBOL LETTER D
-1F1EA;AL # REGIONAL INDICATOR SYMBOL LETTER E
-1F1EB;AL # REGIONAL INDICATOR SYMBOL LETTER F
-1F1EC;AL # REGIONAL INDICATOR SYMBOL LETTER G
-1F1ED;AL # REGIONAL INDICATOR SYMBOL LETTER H
-1F1EE;AL # REGIONAL INDICATOR SYMBOL LETTER I
-1F1EF;AL # REGIONAL INDICATOR SYMBOL LETTER J
-1F1F0;AL # REGIONAL INDICATOR SYMBOL LETTER K
-1F1F1;AL # REGIONAL INDICATOR SYMBOL LETTER L
-1F1F2;AL # REGIONAL INDICATOR SYMBOL LETTER M
-1F1F3;AL # REGIONAL INDICATOR SYMBOL LETTER N
-1F1F4;AL # REGIONAL INDICATOR SYMBOL LETTER O
-1F1F5;AL # REGIONAL INDICATOR SYMBOL LETTER P
-1F1F6;AL # REGIONAL INDICATOR SYMBOL LETTER Q
-1F1F7;AL # REGIONAL INDICATOR SYMBOL LETTER R
-1F1F8;AL # REGIONAL INDICATOR SYMBOL LETTER S
-1F1F9;AL # REGIONAL INDICATOR SYMBOL LETTER T
-1F1FA;AL # REGIONAL INDICATOR SYMBOL LETTER U
-1F1FB;AL # REGIONAL INDICATOR SYMBOL LETTER V
-1F1FC;AL # REGIONAL INDICATOR SYMBOL LETTER W
-1F1FD;AL # REGIONAL INDICATOR SYMBOL LETTER X
-1F1FE;AL # REGIONAL INDICATOR SYMBOL LETTER Y
-1F1FF;AL # REGIONAL INDICATOR SYMBOL LETTER Z
+1F1E6;RI # REGIONAL INDICATOR SYMBOL LETTER A
+1F1E7;RI # REGIONAL INDICATOR SYMBOL LETTER B
+1F1E8;RI # REGIONAL INDICATOR SYMBOL LETTER C
+1F1E9;RI # REGIONAL INDICATOR SYMBOL LETTER D
+1F1EA;RI # REGIONAL INDICATOR SYMBOL LETTER E
+1F1EB;RI # REGIONAL INDICATOR SYMBOL LETTER F
+1F1EC;RI # REGIONAL INDICATOR SYMBOL LETTER G
+1F1ED;RI # REGIONAL INDICATOR SYMBOL LETTER H
+1F1EE;RI # REGIONAL INDICATOR SYMBOL LETTER I
+1F1EF;RI # REGIONAL INDICATOR SYMBOL LETTER J
+1F1F0;RI # REGIONAL INDICATOR SYMBOL LETTER K
+1F1F1;RI # REGIONAL INDICATOR SYMBOL LETTER L
+1F1F2;RI # REGIONAL INDICATOR SYMBOL LETTER M
+1F1F3;RI # REGIONAL INDICATOR SYMBOL LETTER N
+1F1F4;RI # REGIONAL INDICATOR SYMBOL LETTER O
+1F1F5;RI # REGIONAL INDICATOR SYMBOL LETTER P
+1F1F6;RI # REGIONAL INDICATOR SYMBOL LETTER Q
+1F1F7;RI # REGIONAL INDICATOR SYMBOL LETTER R
+1F1F8;RI # REGIONAL INDICATOR SYMBOL LETTER S
+1F1F9;RI # REGIONAL INDICATOR SYMBOL LETTER T
+1F1FA;RI # REGIONAL INDICATOR SYMBOL LETTER U
+1F1FB;RI # REGIONAL INDICATOR SYMBOL LETTER V
+1F1FC;RI # REGIONAL INDICATOR SYMBOL LETTER W
+1F1FD;RI # REGIONAL INDICATOR SYMBOL LETTER X
+1F1FE;RI # REGIONAL INDICATOR SYMBOL LETTER Y
+1F1FF;RI # REGIONAL INDICATOR SYMBOL LETTER Z
1F200;ID # SQUARE HIRAGANA HOKA
1F201;ID # SQUARED KATAKANA KOKO
1F202;ID # SQUARED KATAKANA SA
@@ -23581,444 +23582,444 @@ FFFD;AI # REPLACEMENT CHARACTER
1F248;ID # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
1F250;ID # CIRCLED IDEOGRAPH ADVANTAGE
1F251;ID # CIRCLED IDEOGRAPH ACCEPT
-1F300;AL # CYCLONE
-1F301;AL # FOGGY
-1F302;AL # CLOSED UMBRELLA
-1F303;AL # NIGHT WITH STARS
-1F304;AL # SUNRISE OVER MOUNTAINS
-1F305;AL # SUNRISE
-1F306;AL # CITYSCAPE AT DUSK
-1F307;AL # SUNSET OVER BUILDINGS
-1F308;AL # RAINBOW
-1F309;AL # BRIDGE AT NIGHT
-1F30A;AL # WATER WAVE
-1F30B;AL # VOLCANO
-1F30C;AL # MILKY WAY
-1F30D;AL # EARTH GLOBE EUROPE-AFRICA
-1F30E;AL # EARTH GLOBE AMERICAS
-1F30F;AL # EARTH GLOBE ASIA-AUSTRALIA
-1F310;AL # GLOBE WITH MERIDIANS
-1F311;AL # NEW MOON SYMBOL
-1F312;AL # WAXING CRESCENT MOON SYMBOL
-1F313;AL # FIRST QUARTER MOON SYMBOL
-1F314;AL # WAXING GIBBOUS MOON SYMBOL
-1F315;AL # FULL MOON SYMBOL
-1F316;AL # WANING GIBBOUS MOON SYMBOL
-1F317;AL # LAST QUARTER MOON SYMBOL
-1F318;AL # WANING CRESCENT MOON SYMBOL
-1F319;AL # CRESCENT MOON
-1F31A;AL # NEW MOON WITH FACE
-1F31B;AL # FIRST QUARTER MOON WITH FACE
-1F31C;AL # LAST QUARTER MOON WITH FACE
-1F31D;AL # FULL MOON WITH FACE
-1F31E;AL # SUN WITH FACE
-1F31F;AL # GLOWING STAR
-1F320;AL # SHOOTING STAR
-1F330;AL # CHESTNUT
-1F331;AL # SEEDLING
-1F332;AL # EVERGREEN TREE
-1F333;AL # DECIDUOUS TREE
-1F334;AL # PALM TREE
-1F335;AL # CACTUS
-1F337;AL # TULIP
-1F338;AL # CHERRY BLOSSOM
-1F339;AL # ROSE
-1F33A;AL # HIBISCUS
-1F33B;AL # SUNFLOWER
-1F33C;AL # BLOSSOM
-1F33D;AL # EAR OF MAIZE
-1F33E;AL # EAR OF RICE
-1F33F;AL # HERB
-1F340;AL # FOUR LEAF CLOVER
-1F341;AL # MAPLE LEAF
-1F342;AL # FALLEN LEAF
-1F343;AL # LEAF FLUTTERING IN WIND
-1F344;AL # MUSHROOM
-1F345;AL # TOMATO
-1F346;AL # AUBERGINE
-1F347;AL # GRAPES
-1F348;AL # MELON
-1F349;AL # WATERMELON
-1F34A;AL # TANGERINE
-1F34B;AL # LEMON
-1F34C;AL # BANANA
-1F34D;AL # PINEAPPLE
-1F34E;AL # RED APPLE
-1F34F;AL # GREEN APPLE
-1F350;AL # PEAR
-1F351;AL # PEACH
-1F352;AL # CHERRIES
-1F353;AL # STRAWBERRY
-1F354;AL # HAMBURGER
-1F355;AL # SLICE OF PIZZA
-1F356;AL # MEAT ON BONE
-1F357;AL # POULTRY LEG
-1F358;AL # RICE CRACKER
-1F359;AL # RICE BALL
-1F35A;AL # COOKED RICE
-1F35B;AL # CURRY AND RICE
-1F35C;AL # STEAMING BOWL
-1F35D;AL # SPAGHETTI
-1F35E;AL # BREAD
-1F35F;AL # FRENCH FRIES
-1F360;AL # ROASTED SWEET POTATO
-1F361;AL # DANGO
-1F362;AL # ODEN
-1F363;AL # SUSHI
-1F364;AL # FRIED SHRIMP
-1F365;AL # FISH CAKE WITH SWIRL DESIGN
-1F366;AL # SOFT ICE CREAM
-1F367;AL # SHAVED ICE
-1F368;AL # ICE CREAM
-1F369;AL # DOUGHNUT
-1F36A;AL # COOKIE
-1F36B;AL # CHOCOLATE BAR
-1F36C;AL # CANDY
-1F36D;AL # LOLLIPOP
-1F36E;AL # CUSTARD
-1F36F;AL # HONEY POT
-1F370;AL # SHORTCAKE
-1F371;AL # BENTO BOX
-1F372;AL # POT OF FOOD
-1F373;AL # COOKING
-1F374;AL # FORK AND KNIFE
-1F375;AL # TEACUP WITHOUT HANDLE
-1F376;AL # SAKE BOTTLE AND CUP
-1F377;AL # WINE GLASS
-1F378;AL # COCKTAIL GLASS
-1F379;AL # TROPICAL DRINK
-1F37A;AL # BEER MUG
-1F37B;AL # CLINKING BEER MUGS
-1F37C;AL # BABY BOTTLE
-1F380;AL # RIBBON
-1F381;AL # WRAPPED PRESENT
-1F382;AL # BIRTHDAY CAKE
-1F383;AL # JACK-O-LANTERN
-1F384;AL # CHRISTMAS TREE
-1F385;AL # FATHER CHRISTMAS
-1F386;AL # FIREWORKS
-1F387;AL # FIREWORK SPARKLER
-1F388;AL # BALLOON
-1F389;AL # PARTY POPPER
-1F38A;AL # CONFETTI BALL
-1F38B;AL # TANABATA TREE
-1F38C;AL # CROSSED FLAGS
-1F38D;AL # PINE DECORATION
-1F38E;AL # JAPANESE DOLLS
-1F38F;AL # CARP STREAMER
-1F390;AL # WIND CHIME
-1F391;AL # MOON VIEWING CEREMONY
-1F392;AL # SCHOOL SATCHEL
-1F393;AL # GRADUATION CAP
-1F3A0;AL # CAROUSEL HORSE
-1F3A1;AL # FERRIS WHEEL
-1F3A2;AL # ROLLER COASTER
-1F3A3;AL # FISHING POLE AND FISH
-1F3A4;AL # MICROPHONE
-1F3A5;AL # MOVIE CAMERA
-1F3A6;AL # CINEMA
-1F3A7;AL # HEADPHONE
-1F3A8;AL # ARTIST PALETTE
-1F3A9;AL # TOP HAT
-1F3AA;AL # CIRCUS TENT
-1F3AB;AL # TICKET
-1F3AC;AL # CLAPPER BOARD
-1F3AD;AL # PERFORMING ARTS
-1F3AE;AL # VIDEO GAME
-1F3AF;AL # DIRECT HIT
-1F3B0;AL # SLOT MACHINE
-1F3B1;AL # BILLIARDS
-1F3B2;AL # GAME DIE
-1F3B3;AL # BOWLING
-1F3B4;AL # FLOWER PLAYING CARDS
+1F300;ID # CYCLONE
+1F301;ID # FOGGY
+1F302;ID # CLOSED UMBRELLA
+1F303;ID # NIGHT WITH STARS
+1F304;ID # SUNRISE OVER MOUNTAINS
+1F305;ID # SUNRISE
+1F306;ID # CITYSCAPE AT DUSK
+1F307;ID # SUNSET OVER BUILDINGS
+1F308;ID # RAINBOW
+1F309;ID # BRIDGE AT NIGHT
+1F30A;ID # WATER WAVE
+1F30B;ID # VOLCANO
+1F30C;ID # MILKY WAY
+1F30D;ID # EARTH GLOBE EUROPE-AFRICA
+1F30E;ID # EARTH GLOBE AMERICAS
+1F30F;ID # EARTH GLOBE ASIA-AUSTRALIA
+1F310;ID # GLOBE WITH MERIDIANS
+1F311;ID # NEW MOON SYMBOL
+1F312;ID # WAXING CRESCENT MOON SYMBOL
+1F313;ID # FIRST QUARTER MOON SYMBOL
+1F314;ID # WAXING GIBBOUS MOON SYMBOL
+1F315;ID # FULL MOON SYMBOL
+1F316;ID # WANING GIBBOUS MOON SYMBOL
+1F317;ID # LAST QUARTER MOON SYMBOL
+1F318;ID # WANING CRESCENT MOON SYMBOL
+1F319;ID # CRESCENT MOON
+1F31A;ID # NEW MOON WITH FACE
+1F31B;ID # FIRST QUARTER MOON WITH FACE
+1F31C;ID # LAST QUARTER MOON WITH FACE
+1F31D;ID # FULL MOON WITH FACE
+1F31E;ID # SUN WITH FACE
+1F31F;ID # GLOWING STAR
+1F320;ID # SHOOTING STAR
+1F330;ID # CHESTNUT
+1F331;ID # SEEDLING
+1F332;ID # EVERGREEN TREE
+1F333;ID # DECIDUOUS TREE
+1F334;ID # PALM TREE
+1F335;ID # CACTUS
+1F337;ID # TULIP
+1F338;ID # CHERRY BLOSSOM
+1F339;ID # ROSE
+1F33A;ID # HIBISCUS
+1F33B;ID # SUNFLOWER
+1F33C;ID # BLOSSOM
+1F33D;ID # EAR OF MAIZE
+1F33E;ID # EAR OF RICE
+1F33F;ID # HERB
+1F340;ID # FOUR LEAF CLOVER
+1F341;ID # MAPLE LEAF
+1F342;ID # FALLEN LEAF
+1F343;ID # LEAF FLUTTERING IN WIND
+1F344;ID # MUSHROOM
+1F345;ID # TOMATO
+1F346;ID # AUBERGINE
+1F347;ID # GRAPES
+1F348;ID # MELON
+1F349;ID # WATERMELON
+1F34A;ID # TANGERINE
+1F34B;ID # LEMON
+1F34C;ID # BANANA
+1F34D;ID # PINEAPPLE
+1F34E;ID # RED APPLE
+1F34F;ID # GREEN APPLE
+1F350;ID # PEAR
+1F351;ID # PEACH
+1F352;ID # CHERRIES
+1F353;ID # STRAWBERRY
+1F354;ID # HAMBURGER
+1F355;ID # SLICE OF PIZZA
+1F356;ID # MEAT ON BONE
+1F357;ID # POULTRY LEG
+1F358;ID # RICE CRACKER
+1F359;ID # RICE BALL
+1F35A;ID # COOKED RICE
+1F35B;ID # CURRY AND RICE
+1F35C;ID # STEAMING BOWL
+1F35D;ID # SPAGHETTI
+1F35E;ID # BREAD
+1F35F;ID # FRENCH FRIES
+1F360;ID # ROASTED SWEET POTATO
+1F361;ID # DANGO
+1F362;ID # ODEN
+1F363;ID # SUSHI
+1F364;ID # FRIED SHRIMP
+1F365;ID # FISH CAKE WITH SWIRL DESIGN
+1F366;ID # SOFT ICE CREAM
+1F367;ID # SHAVED ICE
+1F368;ID # ICE CREAM
+1F369;ID # DOUGHNUT
+1F36A;ID # COOKIE
+1F36B;ID # CHOCOLATE BAR
+1F36C;ID # CANDY
+1F36D;ID # LOLLIPOP
+1F36E;ID # CUSTARD
+1F36F;ID # HONEY POT
+1F370;ID # SHORTCAKE
+1F371;ID # BENTO BOX
+1F372;ID # POT OF FOOD
+1F373;ID # COOKING
+1F374;ID # FORK AND KNIFE
+1F375;ID # TEACUP WITHOUT HANDLE
+1F376;ID # SAKE BOTTLE AND CUP
+1F377;ID # WINE GLASS
+1F378;ID # COCKTAIL GLASS
+1F379;ID # TROPICAL DRINK
+1F37A;ID # BEER MUG
+1F37B;ID # CLINKING BEER MUGS
+1F37C;ID # BABY BOTTLE
+1F380;ID # RIBBON
+1F381;ID # WRAPPED PRESENT
+1F382;ID # BIRTHDAY CAKE
+1F383;ID # JACK-O-LANTERN
+1F384;ID # CHRISTMAS TREE
+1F385;ID # FATHER CHRISTMAS
+1F386;ID # FIREWORKS
+1F387;ID # FIREWORK SPARKLER
+1F388;ID # BALLOON
+1F389;ID # PARTY POPPER
+1F38A;ID # CONFETTI BALL
+1F38B;ID # TANABATA TREE
+1F38C;ID # CROSSED FLAGS
+1F38D;ID # PINE DECORATION
+1F38E;ID # JAPANESE DOLLS
+1F38F;ID # CARP STREAMER
+1F390;ID # WIND CHIME
+1F391;ID # MOON VIEWING CEREMONY
+1F392;ID # SCHOOL SATCHEL
+1F393;ID # GRADUATION CAP
+1F3A0;ID # CAROUSEL HORSE
+1F3A1;ID # FERRIS WHEEL
+1F3A2;ID # ROLLER COASTER
+1F3A3;ID # FISHING POLE AND FISH
+1F3A4;ID # MICROPHONE
+1F3A5;ID # MOVIE CAMERA
+1F3A6;ID # CINEMA
+1F3A7;ID # HEADPHONE
+1F3A8;ID # ARTIST PALETTE
+1F3A9;ID # TOP HAT
+1F3AA;ID # CIRCUS TENT
+1F3AB;ID # TICKET
+1F3AC;ID # CLAPPER BOARD
+1F3AD;ID # PERFORMING ARTS
+1F3AE;ID # VIDEO GAME
+1F3AF;ID # DIRECT HIT
+1F3B0;ID # SLOT MACHINE
+1F3B1;ID # BILLIARDS
+1F3B2;ID # GAME DIE
+1F3B3;ID # BOWLING
+1F3B4;ID # FLOWER PLAYING CARDS
1F3B5;AL # MUSICAL NOTE
1F3B6;AL # MULTIPLE MUSICAL NOTES
-1F3B7;AL # SAXOPHONE
-1F3B8;AL # GUITAR
-1F3B9;AL # MUSICAL KEYBOARD
-1F3BA;AL # TRUMPET
-1F3BB;AL # VIOLIN
+1F3B7;ID # SAXOPHONE
+1F3B8;ID # GUITAR
+1F3B9;ID # MUSICAL KEYBOARD
+1F3BA;ID # TRUMPET
+1F3BB;ID # VIOLIN
1F3BC;AL # MUSICAL SCORE
-1F3BD;AL # RUNNING SHIRT WITH SASH
-1F3BE;AL # TENNIS RACQUET AND BALL
-1F3BF;AL # SKI AND SKI BOOT
-1F3C0;AL # BASKETBALL AND HOOP
-1F3C1;AL # CHEQUERED FLAG
-1F3C2;AL # SNOWBOARDER
-1F3C3;AL # RUNNER
-1F3C4;AL # SURFER
-1F3C6;AL # TROPHY
-1F3C7;AL # HORSE RACING
-1F3C8;AL # AMERICAN FOOTBALL
-1F3C9;AL # RUGBY FOOTBALL
-1F3CA;AL # SWIMMER
-1F3E0;AL # HOUSE BUILDING
-1F3E1;AL # HOUSE WITH GARDEN
-1F3E2;AL # OFFICE BUILDING
-1F3E3;AL # JAPANESE POST OFFICE
-1F3E4;AL # EUROPEAN POST OFFICE
-1F3E5;AL # HOSPITAL
-1F3E6;AL # BANK
-1F3E7;AL # AUTOMATED TELLER MACHINE
-1F3E8;AL # HOTEL
-1F3E9;AL # LOVE HOTEL
-1F3EA;AL # CONVENIENCE STORE
-1F3EB;AL # SCHOOL
-1F3EC;AL # DEPARTMENT STORE
-1F3ED;AL # FACTORY
-1F3EE;AL # IZAKAYA LANTERN
-1F3EF;AL # JAPANESE CASTLE
-1F3F0;AL # EUROPEAN CASTLE
-1F400;AL # RAT
-1F401;AL # MOUSE
-1F402;AL # OX
-1F403;AL # WATER BUFFALO
-1F404;AL # COW
-1F405;AL # TIGER
-1F406;AL # LEOPARD
-1F407;AL # RABBIT
-1F408;AL # CAT
-1F409;AL # DRAGON
-1F40A;AL # CROCODILE
-1F40B;AL # WHALE
-1F40C;AL # SNAIL
-1F40D;AL # SNAKE
-1F40E;AL # HORSE
-1F40F;AL # RAM
-1F410;AL # GOAT
-1F411;AL # SHEEP
-1F412;AL # MONKEY
-1F413;AL # ROOSTER
-1F414;AL # CHICKEN
-1F415;AL # DOG
-1F416;AL # PIG
-1F417;AL # BOAR
-1F418;AL # ELEPHANT
-1F419;AL # OCTOPUS
-1F41A;AL # SPIRAL SHELL
-1F41B;AL # BUG
-1F41C;AL # ANT
-1F41D;AL # HONEYBEE
-1F41E;AL # LADY BEETLE
-1F41F;AL # FISH
-1F420;AL # TROPICAL FISH
-1F421;AL # BLOWFISH
-1F422;AL # TURTLE
-1F423;AL # HATCHING CHICK
-1F424;AL # BABY CHICK
-1F425;AL # FRONT-FACING BABY CHICK
-1F426;AL # BIRD
-1F427;AL # PENGUIN
-1F428;AL # KOALA
-1F429;AL # POODLE
-1F42A;AL # DROMEDARY CAMEL
-1F42B;AL # BACTRIAN CAMEL
-1F42C;AL # DOLPHIN
-1F42D;AL # MOUSE FACE
-1F42E;AL # COW FACE
-1F42F;AL # TIGER FACE
-1F430;AL # RABBIT FACE
-1F431;AL # CAT FACE
-1F432;AL # DRAGON FACE
-1F433;AL # SPOUTING WHALE
-1F434;AL # HORSE FACE
-1F435;AL # MONKEY FACE
-1F436;AL # DOG FACE
-1F437;AL # PIG FACE
-1F438;AL # FROG FACE
-1F439;AL # HAMSTER FACE
-1F43A;AL # WOLF FACE
-1F43B;AL # BEAR FACE
-1F43C;AL # PANDA FACE
-1F43D;AL # PIG NOSE
-1F43E;AL # PAW PRINTS
-1F440;AL # EYES
-1F442;AL # EAR
-1F443;AL # NOSE
-1F444;AL # MOUTH
-1F445;AL # TONGUE
-1F446;AL # WHITE UP POINTING BACKHAND INDEX
-1F447;AL # WHITE DOWN POINTING BACKHAND INDEX
-1F448;AL # WHITE LEFT POINTING BACKHAND INDEX
-1F449;AL # WHITE RIGHT POINTING BACKHAND INDEX
-1F44A;AL # FISTED HAND SIGN
-1F44B;AL # WAVING HAND SIGN
-1F44C;AL # OK HAND SIGN
-1F44D;AL # THUMBS UP SIGN
-1F44E;AL # THUMBS DOWN SIGN
-1F44F;AL # CLAPPING HANDS SIGN
-1F450;AL # OPEN HANDS SIGN
-1F451;AL # CROWN
-1F452;AL # WOMANS HAT
-1F453;AL # EYEGLASSES
-1F454;AL # NECKTIE
-1F455;AL # T-SHIRT
-1F456;AL # JEANS
-1F457;AL # DRESS
-1F458;AL # KIMONO
-1F459;AL # BIKINI
-1F45A;AL # WOMANS CLOTHES
-1F45B;AL # PURSE
-1F45C;AL # HANDBAG
-1F45D;AL # POUCH
-1F45E;AL # MANS SHOE
-1F45F;AL # ATHLETIC SHOE
-1F460;AL # HIGH-HEELED SHOE
-1F461;AL # WOMANS SANDAL
-1F462;AL # WOMANS BOOTS
-1F463;AL # FOOTPRINTS
-1F464;AL # BUST IN SILHOUETTE
-1F465;AL # BUSTS IN SILHOUETTE
-1F466;AL # BOY
-1F467;AL # GIRL
-1F468;AL # MAN
-1F469;AL # WOMAN
-1F46A;AL # FAMILY
-1F46B;AL # MAN AND WOMAN HOLDING HANDS
-1F46C;AL # TWO MEN HOLDING HANDS
-1F46D;AL # TWO WOMEN HOLDING HANDS
-1F46E;AL # POLICE OFFICER
-1F46F;AL # WOMAN WITH BUNNY EARS
-1F470;AL # BRIDE WITH VEIL
-1F471;AL # PERSON WITH BLOND HAIR
-1F472;AL # MAN WITH GUA PI MAO
-1F473;AL # MAN WITH TURBAN
-1F474;AL # OLDER MAN
-1F475;AL # OLDER WOMAN
-1F476;AL # BABY
-1F477;AL # CONSTRUCTION WORKER
-1F478;AL # PRINCESS
-1F479;AL # JAPANESE OGRE
-1F47A;AL # JAPANESE GOBLIN
-1F47B;AL # GHOST
-1F47C;AL # BABY ANGEL
-1F47D;AL # EXTRATERRESTRIAL ALIEN
-1F47E;AL # ALIEN MONSTER
-1F47F;AL # IMP
-1F480;AL # SKULL
-1F481;AL # INFORMATION DESK PERSON
-1F482;AL # GUARDSMAN
-1F483;AL # DANCER
-1F484;AL # LIPSTICK
-1F485;AL # NAIL POLISH
-1F486;AL # FACE MASSAGE
-1F487;AL # HAIRCUT
-1F488;AL # BARBER POLE
-1F489;AL # SYRINGE
-1F48A;AL # PILL
-1F48B;AL # KISS MARK
-1F48C;AL # LOVE LETTER
-1F48D;AL # RING
-1F48E;AL # GEM STONE
-1F48F;AL # KISS
-1F490;AL # BOUQUET
-1F491;AL # COUPLE WITH HEART
-1F492;AL # WEDDING
-1F493;AL # BEATING HEART
-1F494;AL # BROKEN HEART
-1F495;AL # TWO HEARTS
-1F496;AL # SPARKLING HEART
-1F497;AL # GROWING HEART
-1F498;AL # HEART WITH ARROW
-1F499;AL # BLUE HEART
-1F49A;AL # GREEN HEART
-1F49B;AL # YELLOW HEART
-1F49C;AL # PURPLE HEART
-1F49D;AL # HEART WITH RIBBON
-1F49E;AL # REVOLVING HEARTS
-1F49F;AL # HEART DECORATION
+1F3BD;ID # RUNNING SHIRT WITH SASH
+1F3BE;ID # TENNIS RACQUET AND BALL
+1F3BF;ID # SKI AND SKI BOOT
+1F3C0;ID # BASKETBALL AND HOOP
+1F3C1;ID # CHEQUERED FLAG
+1F3C2;ID # SNOWBOARDER
+1F3C3;ID # RUNNER
+1F3C4;ID # SURFER
+1F3C6;ID # TROPHY
+1F3C7;ID # HORSE RACING
+1F3C8;ID # AMERICAN FOOTBALL
+1F3C9;ID # RUGBY FOOTBALL
+1F3CA;ID # SWIMMER
+1F3E0;ID # HOUSE BUILDING
+1F3E1;ID # HOUSE WITH GARDEN
+1F3E2;ID # OFFICE BUILDING
+1F3E3;ID # JAPANESE POST OFFICE
+1F3E4;ID # EUROPEAN POST OFFICE
+1F3E5;ID # HOSPITAL
+1F3E6;ID # BANK
+1F3E7;ID # AUTOMATED TELLER MACHINE
+1F3E8;ID # HOTEL
+1F3E9;ID # LOVE HOTEL
+1F3EA;ID # CONVENIENCE STORE
+1F3EB;ID # SCHOOL
+1F3EC;ID # DEPARTMENT STORE
+1F3ED;ID # FACTORY
+1F3EE;ID # IZAKAYA LANTERN
+1F3EF;ID # JAPANESE CASTLE
+1F3F0;ID # EUROPEAN CASTLE
+1F400;ID # RAT
+1F401;ID # MOUSE
+1F402;ID # OX
+1F403;ID # WATER BUFFALO
+1F404;ID # COW
+1F405;ID # TIGER
+1F406;ID # LEOPARD
+1F407;ID # RABBIT
+1F408;ID # CAT
+1F409;ID # DRAGON
+1F40A;ID # CROCODILE
+1F40B;ID # WHALE
+1F40C;ID # SNAIL
+1F40D;ID # SNAKE
+1F40E;ID # HORSE
+1F40F;ID # RAM
+1F410;ID # GOAT
+1F411;ID # SHEEP
+1F412;ID # MONKEY
+1F413;ID # ROOSTER
+1F414;ID # CHICKEN
+1F415;ID # DOG
+1F416;ID # PIG
+1F417;ID # BOAR
+1F418;ID # ELEPHANT
+1F419;ID # OCTOPUS
+1F41A;ID # SPIRAL SHELL
+1F41B;ID # BUG
+1F41C;ID # ANT
+1F41D;ID # HONEYBEE
+1F41E;ID # LADY BEETLE
+1F41F;ID # FISH
+1F420;ID # TROPICAL FISH
+1F421;ID # BLOWFISH
+1F422;ID # TURTLE
+1F423;ID # HATCHING CHICK
+1F424;ID # BABY CHICK
+1F425;ID # FRONT-FACING BABY CHICK
+1F426;ID # BIRD
+1F427;ID # PENGUIN
+1F428;ID # KOALA
+1F429;ID # POODLE
+1F42A;ID # DROMEDARY CAMEL
+1F42B;ID # BACTRIAN CAMEL
+1F42C;ID # DOLPHIN
+1F42D;ID # MOUSE FACE
+1F42E;ID # COW FACE
+1F42F;ID # TIGER FACE
+1F430;ID # RABBIT FACE
+1F431;ID # CAT FACE
+1F432;ID # DRAGON FACE
+1F433;ID # SPOUTING WHALE
+1F434;ID # HORSE FACE
+1F435;ID # MONKEY FACE
+1F436;ID # DOG FACE
+1F437;ID # PIG FACE
+1F438;ID # FROG FACE
+1F439;ID # HAMSTER FACE
+1F43A;ID # WOLF FACE
+1F43B;ID # BEAR FACE
+1F43C;ID # PANDA FACE
+1F43D;ID # PIG NOSE
+1F43E;ID # PAW PRINTS
+1F440;ID # EYES
+1F442;ID # EAR
+1F443;ID # NOSE
+1F444;ID # MOUTH
+1F445;ID # TONGUE
+1F446;ID # WHITE UP POINTING BACKHAND INDEX
+1F447;ID # WHITE DOWN POINTING BACKHAND INDEX
+1F448;ID # WHITE LEFT POINTING BACKHAND INDEX
+1F449;ID # WHITE RIGHT POINTING BACKHAND INDEX
+1F44A;ID # FISTED HAND SIGN
+1F44B;ID # WAVING HAND SIGN
+1F44C;ID # OK HAND SIGN
+1F44D;ID # THUMBS UP SIGN
+1F44E;ID # THUMBS DOWN SIGN
+1F44F;ID # CLAPPING HANDS SIGN
+1F450;ID # OPEN HANDS SIGN
+1F451;ID # CROWN
+1F452;ID # WOMANS HAT
+1F453;ID # EYEGLASSES
+1F454;ID # NECKTIE
+1F455;ID # T-SHIRT
+1F456;ID # JEANS
+1F457;ID # DRESS
+1F458;ID # KIMONO
+1F459;ID # BIKINI
+1F45A;ID # WOMANS CLOTHES
+1F45B;ID # PURSE
+1F45C;ID # HANDBAG
+1F45D;ID # POUCH
+1F45E;ID # MANS SHOE
+1F45F;ID # ATHLETIC SHOE
+1F460;ID # HIGH-HEELED SHOE
+1F461;ID # WOMANS SANDAL
+1F462;ID # WOMANS BOOTS
+1F463;ID # FOOTPRINTS
+1F464;ID # BUST IN SILHOUETTE
+1F465;ID # BUSTS IN SILHOUETTE
+1F466;ID # BOY
+1F467;ID # GIRL
+1F468;ID # MAN
+1F469;ID # WOMAN
+1F46A;ID # FAMILY
+1F46B;ID # MAN AND WOMAN HOLDING HANDS
+1F46C;ID # TWO MEN HOLDING HANDS
+1F46D;ID # TWO WOMEN HOLDING HANDS
+1F46E;ID # POLICE OFFICER
+1F46F;ID # WOMAN WITH BUNNY EARS
+1F470;ID # BRIDE WITH VEIL
+1F471;ID # PERSON WITH BLOND HAIR
+1F472;ID # MAN WITH GUA PI MAO
+1F473;ID # MAN WITH TURBAN
+1F474;ID # OLDER MAN
+1F475;ID # OLDER WOMAN
+1F476;ID # BABY
+1F477;ID # CONSTRUCTION WORKER
+1F478;ID # PRINCESS
+1F479;ID # JAPANESE OGRE
+1F47A;ID # JAPANESE GOBLIN
+1F47B;ID # GHOST
+1F47C;ID # BABY ANGEL
+1F47D;ID # EXTRATERRESTRIAL ALIEN
+1F47E;ID # ALIEN MONSTER
+1F47F;ID # IMP
+1F480;ID # SKULL
+1F481;ID # INFORMATION DESK PERSON
+1F482;ID # GUARDSMAN
+1F483;ID # DANCER
+1F484;ID # LIPSTICK
+1F485;ID # NAIL POLISH
+1F486;ID # FACE MASSAGE
+1F487;ID # HAIRCUT
+1F488;ID # BARBER POLE
+1F489;ID # SYRINGE
+1F48A;ID # PILL
+1F48B;ID # KISS MARK
+1F48C;ID # LOVE LETTER
+1F48D;ID # RING
+1F48E;ID # GEM STONE
+1F48F;ID # KISS
+1F490;ID # BOUQUET
+1F491;ID # COUPLE WITH HEART
+1F492;ID # WEDDING
+1F493;ID # BEATING HEART
+1F494;ID # BROKEN HEART
+1F495;ID # TWO HEARTS
+1F496;ID # SPARKLING HEART
+1F497;ID # GROWING HEART
+1F498;ID # HEART WITH ARROW
+1F499;ID # BLUE HEART
+1F49A;ID # GREEN HEART
+1F49B;ID # YELLOW HEART
+1F49C;ID # PURPLE HEART
+1F49D;ID # HEART WITH RIBBON
+1F49E;ID # REVOLVING HEARTS
+1F49F;ID # HEART DECORATION
1F4A0;AL # DIAMOND SHAPE WITH A DOT INSIDE
-1F4A1;AL # ELECTRIC LIGHT BULB
+1F4A1;ID # ELECTRIC LIGHT BULB
1F4A2;AL # ANGER SYMBOL
-1F4A3;AL # BOMB
+1F4A3;ID # BOMB
1F4A4;AL # SLEEPING SYMBOL
-1F4A5;AL # COLLISION SYMBOL
-1F4A6;AL # SPLASHING SWEAT SYMBOL
-1F4A7;AL # DROPLET
-1F4A8;AL # DASH SYMBOL
-1F4A9;AL # PILE OF POO
-1F4AA;AL # FLEXED BICEPS
-1F4AB;AL # DIZZY SYMBOL
-1F4AC;AL # SPEECH BALLOON
-1F4AD;AL # THOUGHT BALLOON
-1F4AE;AL # WHITE FLOWER
+1F4A5;ID # COLLISION SYMBOL
+1F4A6;ID # SPLASHING SWEAT SYMBOL
+1F4A7;ID # DROPLET
+1F4A8;ID # DASH SYMBOL
+1F4A9;ID # PILE OF POO
+1F4AA;ID # FLEXED BICEPS
+1F4AB;ID # DIZZY SYMBOL
+1F4AC;ID # SPEECH BALLOON
+1F4AD;ID # THOUGHT BALLOON
+1F4AE;ID # WHITE FLOWER
1F4AF;AL # HUNDRED POINTS SYMBOL
-1F4B0;AL # MONEY BAG
+1F4B0;ID # MONEY BAG
1F4B1;AL # CURRENCY EXCHANGE
1F4B2;AL # HEAVY DOLLAR SIGN
-1F4B3;AL # CREDIT CARD
-1F4B4;AL # BANKNOTE WITH YEN SIGN
-1F4B5;AL # BANKNOTE WITH DOLLAR SIGN
-1F4B6;AL # BANKNOTE WITH EURO SIGN
-1F4B7;AL # BANKNOTE WITH POUND SIGN
-1F4B8;AL # MONEY WITH WINGS
-1F4B9;AL # CHART WITH UPWARDS TREND AND YEN SIGN
-1F4BA;AL # SEAT
-1F4BB;AL # PERSONAL COMPUTER
-1F4BC;AL # BRIEFCASE
-1F4BD;AL # MINIDISC
-1F4BE;AL # FLOPPY DISK
-1F4BF;AL # OPTICAL DISC
-1F4C0;AL # DVD
-1F4C1;AL # FILE FOLDER
-1F4C2;AL # OPEN FILE FOLDER
-1F4C3;AL # PAGE WITH CURL
-1F4C4;AL # PAGE FACING UP
-1F4C5;AL # CALENDAR
-1F4C6;AL # TEAR-OFF CALENDAR
-1F4C7;AL # CARD INDEX
-1F4C8;AL # CHART WITH UPWARDS TREND
-1F4C9;AL # CHART WITH DOWNWARDS TREND
-1F4CA;AL # BAR CHART
-1F4CB;AL # CLIPBOARD
-1F4CC;AL # PUSHPIN
-1F4CD;AL # ROUND PUSHPIN
-1F4CE;AL # PAPERCLIP
-1F4CF;AL # STRAIGHT RULER
-1F4D0;AL # TRIANGULAR RULER
-1F4D1;AL # BOOKMARK TABS
-1F4D2;AL # LEDGER
-1F4D3;AL # NOTEBOOK
-1F4D4;AL # NOTEBOOK WITH DECORATIVE COVER
-1F4D5;AL # CLOSED BOOK
-1F4D6;AL # OPEN BOOK
-1F4D7;AL # GREEN BOOK
-1F4D8;AL # BLUE BOOK
-1F4D9;AL # ORANGE BOOK
-1F4DA;AL # BOOKS
-1F4DB;AL # NAME BADGE
-1F4DC;AL # SCROLL
-1F4DD;AL # MEMO
-1F4DE;AL # TELEPHONE RECEIVER
-1F4DF;AL # PAGER
-1F4E0;AL # FAX MACHINE
-1F4E1;AL # SATELLITE ANTENNA
-1F4E2;AL # PUBLIC ADDRESS LOUDSPEAKER
-1F4E3;AL # CHEERING MEGAPHONE
-1F4E4;AL # OUTBOX TRAY
-1F4E5;AL # INBOX TRAY
-1F4E6;AL # PACKAGE
-1F4E7;AL # E-MAIL SYMBOL
-1F4E8;AL # INCOMING ENVELOPE
-1F4E9;AL # ENVELOPE WITH DOWNWARDS ARROW ABOVE
-1F4EA;AL # CLOSED MAILBOX WITH LOWERED FLAG
-1F4EB;AL # CLOSED MAILBOX WITH RAISED FLAG
-1F4EC;AL # OPEN MAILBOX WITH RAISED FLAG
-1F4ED;AL # OPEN MAILBOX WITH LOWERED FLAG
-1F4EE;AL # POSTBOX
-1F4EF;AL # POSTAL HORN
-1F4F0;AL # NEWSPAPER
-1F4F1;AL # MOBILE PHONE
-1F4F2;AL # MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT
-1F4F3;AL # VIBRATION MODE
-1F4F4;AL # MOBILE PHONE OFF
-1F4F5;AL # NO MOBILE PHONES
-1F4F6;AL # ANTENNA WITH BARS
-1F4F7;AL # CAMERA
-1F4F9;AL # VIDEO CAMERA
-1F4FA;AL # TELEVISION
-1F4FB;AL # RADIO
-1F4FC;AL # VIDEOCASSETTE
+1F4B3;ID # CREDIT CARD
+1F4B4;ID # BANKNOTE WITH YEN SIGN
+1F4B5;ID # BANKNOTE WITH DOLLAR SIGN
+1F4B6;ID # BANKNOTE WITH EURO SIGN
+1F4B7;ID # BANKNOTE WITH POUND SIGN
+1F4B8;ID # MONEY WITH WINGS
+1F4B9;ID # CHART WITH UPWARDS TREND AND YEN SIGN
+1F4BA;ID # SEAT
+1F4BB;ID # PERSONAL COMPUTER
+1F4BC;ID # BRIEFCASE
+1F4BD;ID # MINIDISC
+1F4BE;ID # FLOPPY DISK
+1F4BF;ID # OPTICAL DISC
+1F4C0;ID # DVD
+1F4C1;ID # FILE FOLDER
+1F4C2;ID # OPEN FILE FOLDER
+1F4C3;ID # PAGE WITH CURL
+1F4C4;ID # PAGE FACING UP
+1F4C5;ID # CALENDAR
+1F4C6;ID # TEAR-OFF CALENDAR
+1F4C7;ID # CARD INDEX
+1F4C8;ID # CHART WITH UPWARDS TREND
+1F4C9;ID # CHART WITH DOWNWARDS TREND
+1F4CA;ID # BAR CHART
+1F4CB;ID # CLIPBOARD
+1F4CC;ID # PUSHPIN
+1F4CD;ID # ROUND PUSHPIN
+1F4CE;ID # PAPERCLIP
+1F4CF;ID # STRAIGHT RULER
+1F4D0;ID # TRIANGULAR RULER
+1F4D1;ID # BOOKMARK TABS
+1F4D2;ID # LEDGER
+1F4D3;ID # NOTEBOOK
+1F4D4;ID # NOTEBOOK WITH DECORATIVE COVER
+1F4D5;ID # CLOSED BOOK
+1F4D6;ID # OPEN BOOK
+1F4D7;ID # GREEN BOOK
+1F4D8;ID # BLUE BOOK
+1F4D9;ID # ORANGE BOOK
+1F4DA;ID # BOOKS
+1F4DB;ID # NAME BADGE
+1F4DC;ID # SCROLL
+1F4DD;ID # MEMO
+1F4DE;ID # TELEPHONE RECEIVER
+1F4DF;ID # PAGER
+1F4E0;ID # FAX MACHINE
+1F4E1;ID # SATELLITE ANTENNA
+1F4E2;ID # PUBLIC ADDRESS LOUDSPEAKER
+1F4E3;ID # CHEERING MEGAPHONE
+1F4E4;ID # OUTBOX TRAY
+1F4E5;ID # INBOX TRAY
+1F4E6;ID # PACKAGE
+1F4E7;ID # E-MAIL SYMBOL
+1F4E8;ID # INCOMING ENVELOPE
+1F4E9;ID # ENVELOPE WITH DOWNWARDS ARROW ABOVE
+1F4EA;ID # CLOSED MAILBOX WITH LOWERED FLAG
+1F4EB;ID # CLOSED MAILBOX WITH RAISED FLAG
+1F4EC;ID # OPEN MAILBOX WITH RAISED FLAG
+1F4ED;ID # OPEN MAILBOX WITH LOWERED FLAG
+1F4EE;ID # POSTBOX
+1F4EF;ID # POSTAL HORN
+1F4F0;ID # NEWSPAPER
+1F4F1;ID # MOBILE PHONE
+1F4F2;ID # MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT
+1F4F3;ID # VIBRATION MODE
+1F4F4;ID # MOBILE PHONE OFF
+1F4F5;ID # NO MOBILE PHONES
+1F4F6;ID # ANTENNA WITH BARS
+1F4F7;ID # CAMERA
+1F4F9;ID # VIDEO CAMERA
+1F4FA;ID # TELEVISION
+1F4FB;ID # RADIO
+1F4FC;ID # VIDEOCASSETTE
1F500;AL # TWISTED RIGHTWARDS ARROWS
1F501;AL # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS
1F502;AL # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY
@@ -24026,22 +24027,22 @@ FFFD;AI # REPLACEMENT CHARACTER
1F504;AL # ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
1F505;AL # LOW BRIGHTNESS SYMBOL
1F506;AL # HIGH BRIGHTNESS SYMBOL
-1F507;AL # SPEAKER WITH CANCELLATION STROKE
-1F508;AL # SPEAKER
-1F509;AL # SPEAKER WITH ONE SOUND WAVE
-1F50A;AL # SPEAKER WITH THREE SOUND WAVES
-1F50B;AL # BATTERY
-1F50C;AL # ELECTRIC PLUG
-1F50D;AL # LEFT-POINTING MAGNIFYING GLASS
-1F50E;AL # RIGHT-POINTING MAGNIFYING GLASS
-1F50F;AL # LOCK WITH INK PEN
-1F510;AL # CLOSED LOCK WITH KEY
-1F511;AL # KEY
-1F512;AL # LOCK
-1F513;AL # OPEN LOCK
-1F514;AL # BELL
-1F515;AL # BELL WITH CANCELLATION STROKE
-1F516;AL # BOOKMARK
+1F507;ID # SPEAKER WITH CANCELLATION STROKE
+1F508;ID # SPEAKER
+1F509;ID # SPEAKER WITH ONE SOUND WAVE
+1F50A;ID # SPEAKER WITH THREE SOUND WAVES
+1F50B;ID # BATTERY
+1F50C;ID # ELECTRIC PLUG
+1F50D;ID # LEFT-POINTING MAGNIFYING GLASS
+1F50E;ID # RIGHT-POINTING MAGNIFYING GLASS
+1F50F;ID # LOCK WITH INK PEN
+1F510;ID # CLOSED LOCK WITH KEY
+1F511;ID # KEY
+1F512;ID # LOCK
+1F513;ID # OPEN LOCK
+1F514;ID # BELL
+1F515;ID # BELL WITH CANCELLATION STROKE
+1F516;ID # BOOKMARK
1F517;AL # LINK SYMBOL
1F518;AL # RADIO BUTTON
1F519;AL # BACK WITH LEFTWARDS ARROW ABOVE
@@ -24056,19 +24057,19 @@ FFFD;AI # REPLACEMENT CHARACTER
1F522;AL # INPUT SYMBOL FOR NUMBERS
1F523;AL # INPUT SYMBOL FOR SYMBOLS
1F524;AL # INPUT SYMBOL FOR LATIN LETTERS
-1F525;AL # FIRE
-1F526;AL # ELECTRIC TORCH
-1F527;AL # WRENCH
-1F528;AL # HAMMER
-1F529;AL # NUT AND BOLT
-1F52A;AL # HOCHO
-1F52B;AL # PISTOL
-1F52C;AL # MICROSCOPE
-1F52D;AL # TELESCOPE
-1F52E;AL # CRYSTAL BALL
-1F52F;AL # SIX POINTED STAR WITH MIDDLE DOT
-1F530;AL # JAPANESE SYMBOL FOR BEGINNER
-1F531;AL # TRIDENT EMBLEM
+1F525;ID # FIRE
+1F526;ID # ELECTRIC TORCH
+1F527;ID # WRENCH
+1F528;ID # HAMMER
+1F529;ID # NUT AND BOLT
+1F52A;ID # HOCHO
+1F52B;ID # PISTOL
+1F52C;ID # MICROSCOPE
+1F52D;ID # TELESCOPE
+1F52E;ID # CRYSTAL BALL
+1F52F;ID # SIX POINTED STAR WITH MIDDLE DOT
+1F530;ID # JAPANESE SYMBOL FOR BEGINNER
+1F531;ID # TRIDENT EMBLEM
1F532;AL # BLACK SQUARE BUTTON
1F533;AL # WHITE SQUARE BUTTON
1F534;AL # LARGE RED CIRCLE
@@ -24085,181 +24086,181 @@ FFFD;AI # REPLACEMENT CHARACTER
1F541;AL # CROSS POMMEE WITH HALF-CIRCLE BELOW
1F542;AL # CROSS POMMEE
1F543;AL # NOTCHED LEFT SEMICIRCLE WITH THREE DOTS
-1F550;AL # CLOCK FACE ONE OCLOCK
-1F551;AL # CLOCK FACE TWO OCLOCK
-1F552;AL # CLOCK FACE THREE OCLOCK
-1F553;AL # CLOCK FACE FOUR OCLOCK
-1F554;AL # CLOCK FACE FIVE OCLOCK
-1F555;AL # CLOCK FACE SIX OCLOCK
-1F556;AL # CLOCK FACE SEVEN OCLOCK
-1F557;AL # CLOCK FACE EIGHT OCLOCK
-1F558;AL # CLOCK FACE NINE OCLOCK
-1F559;AL # CLOCK FACE TEN OCLOCK
-1F55A;AL # CLOCK FACE ELEVEN OCLOCK
-1F55B;AL # CLOCK FACE TWELVE OCLOCK
-1F55C;AL # CLOCK FACE ONE-THIRTY
-1F55D;AL # CLOCK FACE TWO-THIRTY
-1F55E;AL # CLOCK FACE THREE-THIRTY
-1F55F;AL # CLOCK FACE FOUR-THIRTY
-1F560;AL # CLOCK FACE FIVE-THIRTY
-1F561;AL # CLOCK FACE SIX-THIRTY
-1F562;AL # CLOCK FACE SEVEN-THIRTY
-1F563;AL # CLOCK FACE EIGHT-THIRTY
-1F564;AL # CLOCK FACE NINE-THIRTY
-1F565;AL # CLOCK FACE TEN-THIRTY
-1F566;AL # CLOCK FACE ELEVEN-THIRTY
-1F567;AL # CLOCK FACE TWELVE-THIRTY
-1F5FB;AL # MOUNT FUJI
-1F5FC;AL # TOKYO TOWER
-1F5FD;AL # STATUE OF LIBERTY
-1F5FE;AL # SILHOUETTE OF JAPAN
-1F5FF;AL # MOYAI
-1F600;AL # GRINNING FACE
-1F601;AL # GRINNING FACE WITH SMILING EYES
-1F602;AL # FACE WITH TEARS OF JOY
-1F603;AL # SMILING FACE WITH OPEN MOUTH
-1F604;AL # SMILING FACE WITH OPEN MOUTH AND SMILING EYES
-1F605;AL # SMILING FACE WITH OPEN MOUTH AND COLD SWEAT
-1F606;AL # SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES
-1F607;AL # SMILING FACE WITH HALO
-1F608;AL # SMILING FACE WITH HORNS
-1F609;AL # WINKING FACE
-1F60A;AL # SMILING FACE WITH SMILING EYES
-1F60B;AL # FACE SAVOURING DELICIOUS FOOD
-1F60C;AL # RELIEVED FACE
-1F60D;AL # SMILING FACE WITH HEART-SHAPED EYES
-1F60E;AL # SMILING FACE WITH SUNGLASSES
-1F60F;AL # SMIRKING FACE
-1F610;AL # NEUTRAL FACE
-1F611;AL # EXPRESSIONLESS FACE
-1F612;AL # UNAMUSED FACE
-1F613;AL # FACE WITH COLD SWEAT
-1F614;AL # PENSIVE FACE
-1F615;AL # CONFUSED FACE
-1F616;AL # CONFOUNDED FACE
-1F617;AL # KISSING FACE
-1F618;AL # FACE THROWING A KISS
-1F619;AL # KISSING FACE WITH SMILING EYES
-1F61A;AL # KISSING FACE WITH CLOSED EYES
-1F61B;AL # FACE WITH STUCK-OUT TONGUE
-1F61C;AL # FACE WITH STUCK-OUT TONGUE AND WINKING EYE
-1F61D;AL # FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES
-1F61E;AL # DISAPPOINTED FACE
-1F61F;AL # WORRIED FACE
-1F620;AL # ANGRY FACE
-1F621;AL # POUTING FACE
-1F622;AL # CRYING FACE
-1F623;AL # PERSEVERING FACE
-1F624;AL # FACE WITH LOOK OF TRIUMPH
-1F625;AL # DISAPPOINTED BUT RELIEVED FACE
-1F626;AL # FROWNING FACE WITH OPEN MOUTH
-1F627;AL # ANGUISHED FACE
-1F628;AL # FEARFUL FACE
-1F629;AL # WEARY FACE
-1F62A;AL # SLEEPY FACE
-1F62B;AL # TIRED FACE
-1F62C;AL # GRIMACING FACE
-1F62D;AL # LOUDLY CRYING FACE
-1F62E;AL # FACE WITH OPEN MOUTH
-1F62F;AL # HUSHED FACE
-1F630;AL # FACE WITH OPEN MOUTH AND COLD SWEAT
-1F631;AL # FACE SCREAMING IN FEAR
-1F632;AL # ASTONISHED FACE
-1F633;AL # FLUSHED FACE
-1F634;AL # SLEEPING FACE
-1F635;AL # DIZZY FACE
-1F636;AL # FACE WITHOUT MOUTH
-1F637;AL # FACE WITH MEDICAL MASK
-1F638;AL # GRINNING CAT FACE WITH SMILING EYES
-1F639;AL # CAT FACE WITH TEARS OF JOY
-1F63A;AL # SMILING CAT FACE WITH OPEN MOUTH
-1F63B;AL # SMILING CAT FACE WITH HEART-SHAPED EYES
-1F63C;AL # CAT FACE WITH WRY SMILE
-1F63D;AL # KISSING CAT FACE WITH CLOSED EYES
-1F63E;AL # POUTING CAT FACE
-1F63F;AL # CRYING CAT FACE
-1F640;AL # WEARY CAT FACE
-1F645;AL # FACE WITH NO GOOD GESTURE
-1F646;AL # FACE WITH OK GESTURE
-1F647;AL # PERSON BOWING DEEPLY
-1F648;AL # SEE-NO-EVIL MONKEY
-1F649;AL # HEAR-NO-EVIL MONKEY
-1F64A;AL # SPEAK-NO-EVIL MONKEY
-1F64B;AL # HAPPY PERSON RAISING ONE HAND
-1F64C;AL # PERSON RAISING BOTH HANDS IN CELEBRATION
-1F64D;AL # PERSON FROWNING
-1F64E;AL # PERSON WITH POUTING FACE
-1F64F;AL # PERSON WITH FOLDED HANDS
-1F680;AL # ROCKET
-1F681;AL # HELICOPTER
-1F682;AL # STEAM LOCOMOTIVE
-1F683;AL # RAILWAY CAR
-1F684;AL # HIGH-SPEED TRAIN
-1F685;AL # HIGH-SPEED TRAIN WITH BULLET NOSE
-1F686;AL # TRAIN
-1F687;AL # METRO
-1F688;AL # LIGHT RAIL
-1F689;AL # STATION
-1F68A;AL # TRAM
-1F68B;AL # TRAM CAR
-1F68C;AL # BUS
-1F68D;AL # ONCOMING BUS
-1F68E;AL # TROLLEYBUS
-1F68F;AL # BUS STOP
-1F690;AL # MINIBUS
-1F691;AL # AMBULANCE
-1F692;AL # FIRE ENGINE
-1F693;AL # POLICE CAR
-1F694;AL # ONCOMING POLICE CAR
-1F695;AL # TAXI
-1F696;AL # ONCOMING TAXI
-1F697;AL # AUTOMOBILE
-1F698;AL # ONCOMING AUTOMOBILE
-1F699;AL # RECREATIONAL VEHICLE
-1F69A;AL # DELIVERY TRUCK
-1F69B;AL # ARTICULATED LORRY
-1F69C;AL # TRACTOR
-1F69D;AL # MONORAIL
-1F69E;AL # MOUNTAIN RAILWAY
-1F69F;AL # SUSPENSION RAILWAY
-1F6A0;AL # MOUNTAIN CABLEWAY
-1F6A1;AL # AERIAL TRAMWAY
-1F6A2;AL # SHIP
-1F6A3;AL # ROWBOAT
-1F6A4;AL # SPEEDBOAT
-1F6A5;AL # HORIZONTAL TRAFFIC LIGHT
-1F6A6;AL # VERTICAL TRAFFIC LIGHT
-1F6A7;AL # CONSTRUCTION SIGN
-1F6A8;AL # POLICE CARS REVOLVING LIGHT
-1F6A9;AL # TRIANGULAR FLAG ON POST
-1F6AA;AL # DOOR
-1F6AB;AL # NO ENTRY SIGN
-1F6AC;AL # SMOKING SYMBOL
-1F6AD;AL # NO SMOKING SYMBOL
-1F6AE;AL # PUT LITTER IN ITS PLACE SYMBOL
-1F6AF;AL # DO NOT LITTER SYMBOL
-1F6B0;AL # POTABLE WATER SYMBOL
-1F6B1;AL # NON-POTABLE WATER SYMBOL
-1F6B2;AL # BICYCLE
-1F6B3;AL # NO BICYCLES
-1F6B4;AL # BICYCLIST
-1F6B5;AL # MOUNTAIN BICYCLIST
-1F6B6;AL # PEDESTRIAN
-1F6B7;AL # NO PEDESTRIANS
-1F6B8;AL # CHILDREN CROSSING
-1F6B9;AL # MENS SYMBOL
-1F6BA;AL # WOMENS SYMBOL
-1F6BB;AL # RESTROOM
-1F6BC;AL # BABY SYMBOL
-1F6BD;AL # TOILET
-1F6BE;AL # WATER CLOSET
-1F6BF;AL # SHOWER
-1F6C0;AL # BATH
-1F6C1;AL # BATHTUB
-1F6C2;AL # PASSPORT CONTROL
-1F6C3;AL # CUSTOMS
-1F6C4;AL # BAGGAGE CLAIM
-1F6C5;AL # LEFT LUGGAGE
+1F550;ID # CLOCK FACE ONE OCLOCK
+1F551;ID # CLOCK FACE TWO OCLOCK
+1F552;ID # CLOCK FACE THREE OCLOCK
+1F553;ID # CLOCK FACE FOUR OCLOCK
+1F554;ID # CLOCK FACE FIVE OCLOCK
+1F555;ID # CLOCK FACE SIX OCLOCK
+1F556;ID # CLOCK FACE SEVEN OCLOCK
+1F557;ID # CLOCK FACE EIGHT OCLOCK
+1F558;ID # CLOCK FACE NINE OCLOCK
+1F559;ID # CLOCK FACE TEN OCLOCK
+1F55A;ID # CLOCK FACE ELEVEN OCLOCK
+1F55B;ID # CLOCK FACE TWELVE OCLOCK
+1F55C;ID # CLOCK FACE ONE-THIRTY
+1F55D;ID # CLOCK FACE TWO-THIRTY
+1F55E;ID # CLOCK FACE THREE-THIRTY
+1F55F;ID # CLOCK FACE FOUR-THIRTY
+1F560;ID # CLOCK FACE FIVE-THIRTY
+1F561;ID # CLOCK FACE SIX-THIRTY
+1F562;ID # CLOCK FACE SEVEN-THIRTY
+1F563;ID # CLOCK FACE EIGHT-THIRTY
+1F564;ID # CLOCK FACE NINE-THIRTY
+1F565;ID # CLOCK FACE TEN-THIRTY
+1F566;ID # CLOCK FACE ELEVEN-THIRTY
+1F567;ID # CLOCK FACE TWELVE-THIRTY
+1F5FB;ID # MOUNT FUJI
+1F5FC;ID # TOKYO TOWER
+1F5FD;ID # STATUE OF LIBERTY
+1F5FE;ID # SILHOUETTE OF JAPAN
+1F5FF;ID # MOYAI
+1F600;ID # GRINNING FACE
+1F601;ID # GRINNING FACE WITH SMILING EYES
+1F602;ID # FACE WITH TEARS OF JOY
+1F603;ID # SMILING FACE WITH OPEN MOUTH
+1F604;ID # SMILING FACE WITH OPEN MOUTH AND SMILING EYES
+1F605;ID # SMILING FACE WITH OPEN MOUTH AND COLD SWEAT
+1F606;ID # SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES
+1F607;ID # SMILING FACE WITH HALO
+1F608;ID # SMILING FACE WITH HORNS
+1F609;ID # WINKING FACE
+1F60A;ID # SMILING FACE WITH SMILING EYES
+1F60B;ID # FACE SAVOURING DELICIOUS FOOD
+1F60C;ID # RELIEVED FACE
+1F60D;ID # SMILING FACE WITH HEART-SHAPED EYES
+1F60E;ID # SMILING FACE WITH SUNGLASSES
+1F60F;ID # SMIRKING FACE
+1F610;ID # NEUTRAL FACE
+1F611;ID # EXPRESSIONLESS FACE
+1F612;ID # UNAMUSED FACE
+1F613;ID # FACE WITH COLD SWEAT
+1F614;ID # PENSIVE FACE
+1F615;ID # CONFUSED FACE
+1F616;ID # CONFOUNDED FACE
+1F617;ID # KISSING FACE
+1F618;ID # FACE THROWING A KISS
+1F619;ID # KISSING FACE WITH SMILING EYES
+1F61A;ID # KISSING FACE WITH CLOSED EYES
+1F61B;ID # FACE WITH STUCK-OUT TONGUE
+1F61C;ID # FACE WITH STUCK-OUT TONGUE AND WINKING EYE
+1F61D;ID # FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES
+1F61E;ID # DISAPPOINTED FACE
+1F61F;ID # WORRIED FACE
+1F620;ID # ANGRY FACE
+1F621;ID # POUTING FACE
+1F622;ID # CRYING FACE
+1F623;ID # PERSEVERING FACE
+1F624;ID # FACE WITH LOOK OF TRIUMPH
+1F625;ID # DISAPPOINTED BUT RELIEVED FACE
+1F626;ID # FROWNING FACE WITH OPEN MOUTH
+1F627;ID # ANGUISHED FACE
+1F628;ID # FEARFUL FACE
+1F629;ID # WEARY FACE
+1F62A;ID # SLEEPY FACE
+1F62B;ID # TIRED FACE
+1F62C;ID # GRIMACING FACE
+1F62D;ID # LOUDLY CRYING FACE
+1F62E;ID # FACE WITH OPEN MOUTH
+1F62F;ID # HUSHED FACE
+1F630;ID # FACE WITH OPEN MOUTH AND COLD SWEAT
+1F631;ID # FACE SCREAMING IN FEAR
+1F632;ID # ASTONISHED FACE
+1F633;ID # FLUSHED FACE
+1F634;ID # SLEEPING FACE
+1F635;ID # DIZZY FACE
+1F636;ID # FACE WITHOUT MOUTH
+1F637;ID # FACE WITH MEDICAL MASK
+1F638;ID # GRINNING CAT FACE WITH SMILING EYES
+1F639;ID # CAT FACE WITH TEARS OF JOY
+1F63A;ID # SMILING CAT FACE WITH OPEN MOUTH
+1F63B;ID # SMILING CAT FACE WITH HEART-SHAPED EYES
+1F63C;ID # CAT FACE WITH WRY SMILE
+1F63D;ID # KISSING CAT FACE WITH CLOSED EYES
+1F63E;ID # POUTING CAT FACE
+1F63F;ID # CRYING CAT FACE
+1F640;ID # WEARY CAT FACE
+1F645;ID # FACE WITH NO GOOD GESTURE
+1F646;ID # FACE WITH OK GESTURE
+1F647;ID # PERSON BOWING DEEPLY
+1F648;ID # SEE-NO-EVIL MONKEY
+1F649;ID # HEAR-NO-EVIL MONKEY
+1F64A;ID # SPEAK-NO-EVIL MONKEY
+1F64B;ID # HAPPY PERSON RAISING ONE HAND
+1F64C;ID # PERSON RAISING BOTH HANDS IN CELEBRATION
+1F64D;ID # PERSON FROWNING
+1F64E;ID # PERSON WITH POUTING FACE
+1F64F;ID # PERSON WITH FOLDED HANDS
+1F680;ID # ROCKET
+1F681;ID # HELICOPTER
+1F682;ID # STEAM LOCOMOTIVE
+1F683;ID # RAILWAY CAR
+1F684;ID # HIGH-SPEED TRAIN
+1F685;ID # HIGH-SPEED TRAIN WITH BULLET NOSE
+1F686;ID # TRAIN
+1F687;ID # METRO
+1F688;ID # LIGHT RAIL
+1F689;ID # STATION
+1F68A;ID # TRAM
+1F68B;ID # TRAM CAR
+1F68C;ID # BUS
+1F68D;ID # ONCOMING BUS
+1F68E;ID # TROLLEYBUS
+1F68F;ID # BUS STOP
+1F690;ID # MINIBUS
+1F691;ID # AMBULANCE
+1F692;ID # FIRE ENGINE
+1F693;ID # POLICE CAR
+1F694;ID # ONCOMING POLICE CAR
+1F695;ID # TAXI
+1F696;ID # ONCOMING TAXI
+1F697;ID # AUTOMOBILE
+1F698;ID # ONCOMING AUTOMOBILE
+1F699;ID # RECREATIONAL VEHICLE
+1F69A;ID # DELIVERY TRUCK
+1F69B;ID # ARTICULATED LORRY
+1F69C;ID # TRACTOR
+1F69D;ID # MONORAIL
+1F69E;ID # MOUNTAIN RAILWAY
+1F69F;ID # SUSPENSION RAILWAY
+1F6A0;ID # MOUNTAIN CABLEWAY
+1F6A1;ID # AERIAL TRAMWAY
+1F6A2;ID # SHIP
+1F6A3;ID # ROWBOAT
+1F6A4;ID # SPEEDBOAT
+1F6A5;ID # HORIZONTAL TRAFFIC LIGHT
+1F6A6;ID # VERTICAL TRAFFIC LIGHT
+1F6A7;ID # CONSTRUCTION SIGN
+1F6A8;ID # POLICE CARS REVOLVING LIGHT
+1F6A9;ID # TRIANGULAR FLAG ON POST
+1F6AA;ID # DOOR
+1F6AB;ID # NO ENTRY SIGN
+1F6AC;ID # SMOKING SYMBOL
+1F6AD;ID # NO SMOKING SYMBOL
+1F6AE;ID # PUT LITTER IN ITS PLACE SYMBOL
+1F6AF;ID # DO NOT LITTER SYMBOL
+1F6B0;ID # POTABLE WATER SYMBOL
+1F6B1;ID # NON-POTABLE WATER SYMBOL
+1F6B2;ID # BICYCLE
+1F6B3;ID # NO BICYCLES
+1F6B4;ID # BICYCLIST
+1F6B5;ID # MOUNTAIN BICYCLIST
+1F6B6;ID # PEDESTRIAN
+1F6B7;ID # NO PEDESTRIANS
+1F6B8;ID # CHILDREN CROSSING
+1F6B9;ID # MENS SYMBOL
+1F6BA;ID # WOMENS SYMBOL
+1F6BB;ID # RESTROOM
+1F6BC;ID # BABY SYMBOL
+1F6BD;ID # TOILET
+1F6BE;ID # WATER CLOSET
+1F6BF;ID # SHOWER
+1F6C0;ID # BATH
+1F6C1;ID # BATHTUB
+1F6C2;ID # PASSPORT CONTROL
+1F6C3;ID # CUSTOMS
+1F6C4;ID # BAGGAGE CLAIM
+1F6C5;ID # LEFT LUGGAGE
1F700;AL # ALCHEMICAL SYMBOL FOR QUINTESSENCE
1F701;AL # ALCHEMICAL SYMBOL FOR AIR
1F702;AL # ALCHEMICAL SYMBOL FOR FIRE
diff --git a/gnu/usr.bin/perl/lib/unicore/NameAliases.txt b/gnu/usr.bin/perl/lib/unicore/NameAliases.txt
index 39926200965..482fb92be4e 100644
--- a/gnu/usr.bin/perl/lib/unicore/NameAliases.txt
+++ b/gnu/usr.bin/perl/lib/unicore/NameAliases.txt
@@ -1,5 +1,5 @@
-# NameAliases-6.1.0.txt
-# Date: 2012-01-03, 21:52:00 GMT [KW]
+# NameAliases-6.2.0.txt
+# Date: 2012-05-15, 18:44:00 GMT [KW]
#
# This file is a normative contributory data file in the
# Unicode Character Database.
@@ -216,6 +216,7 @@
01A2;LATIN CAPITAL LETTER GHA;correction
01A3;LATIN SMALL LETTER GHA;correction
034F;CGJ;abbreviation
+0709;SYRIAC SUBLINEAR COLON SKEWED LEFT;correction
0CDE;KANNADA LETTER LLLA;correction
0E9D;LAO LETTER FO FON;correction
0E9F;LAO LETTER FO FAY;correction
diff --git a/gnu/usr.bin/perl/lib/unicore/NamedSequences.txt b/gnu/usr.bin/perl/lib/unicore/NamedSequences.txt
index e14c39505b1..040acdb6c37 100644
--- a/gnu/usr.bin/perl/lib/unicore/NamedSequences.txt
+++ b/gnu/usr.bin/perl/lib/unicore/NamedSequences.txt
@@ -1,8 +1,8 @@
-# NamedSequences-6.1.0.txt
-# Date: 2011-07-26, 19:47:00 GMT [KW]
+# NamedSequences-6.2.0.txt
+# Date: 2012-05-15, 21:23:00 GMT [KW]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
@@ -112,8 +112,8 @@ BENGALI LETTER KHINYA;0995 09CD 09B7
# Additions for Tamil. Provisional 2008-02-08, Approved 2009-08-14
#
# A visual display of the Tamil named sequences is available
-# in the documentation for Unicode 5.2. See:
-# http://www.unicode.org/versions/Unicode5.2.0/
+# in the documentation for the Unicode Standard. See Section 9.6, Tamil in
+# http://www.unicode.org/versions/latest/
TAMIL CONSONANT K; 0B95 0BCD
TAMIL CONSONANT NG; 0B99 0BCD
@@ -500,3 +500,5 @@ KATAKANA LETTER AINU TO;30C8 309A
KATAKANA LETTER AINU P;31F7 309A
MODIFIER LETTER EXTRA-HIGH EXTRA-LOW CONTOUR TONE BAR;02E5 02E9
MODIFIER LETTER EXTRA-LOW EXTRA-HIGH CONTOUR TONE BAR;02E9 02E5
+
+# EOF
diff --git a/gnu/usr.bin/perl/lib/unicore/NamedSqProv.txt b/gnu/usr.bin/perl/lib/unicore/NamedSqProv.txt
index c7561948f83..7d87629e014 100644
--- a/gnu/usr.bin/perl/lib/unicore/NamedSqProv.txt
+++ b/gnu/usr.bin/perl/lib/unicore/NamedSqProv.txt
@@ -1,8 +1,8 @@
-# NamedSequencesProv-6.1.0.txt
-# Date: 2011-07-26, 19:46:00 GMT [KW]
+# NamedSequencesProv-6.2.0.txt
+# Date: 2012-05-15, 21:29:00 GMT [KW]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
@@ -54,3 +54,4 @@
# the sequence, based on the Lithuanian additions accepted
# for Unicode 5.0.
+# EOF
diff --git a/gnu/usr.bin/perl/lib/unicore/NamesList.txt b/gnu/usr.bin/perl/lib/unicore/NamesList.txt
index 19ecbdd55aa..17bd45b0a4c 100644
--- a/gnu/usr.bin/perl/lib/unicore/NamesList.txt
+++ b/gnu/usr.bin/perl/lib/unicore/NamesList.txt
@@ -1,6 +1,10 @@
-@@@ The Unicode Standard 6.1
-@@@+ U61M111117.lst
- Final Unicode 6.1 names list.
+; charset=UTF-8
+@@@ The Unicode Standard 6.2
+@@@+ U62M120808.lst
+ Unicode 6.2 names list, third delta (converted to UTF-8).
+ Updated more annotations in the Bengali block.
+ Added clarifying annotations for 0342.
+ Updated alias for 1110E.
This file is semi-automatically derived from UnicodeData.txt and
a set of manually created annotations using a script to select
or suppress information from the data file. The rules used
@@ -117,11 +121,15 @@
= pound sign, hash, crosshatch, octothorpe
x (l b bar symbol - 2114)
x (music sharp sign - 266F)
+ ~ 0023 FE0E text style
+ ~ 0023 FE0F emoji style
0024 DOLLAR SIGN
- = milreis, escudo
+ = milréis, escudo
+ * used for many peso currencies in Latin America and elsewhere
* glyph may have one or two vertical bars
- * other currency symbol characters: 20A0-20B9
+ * other currency symbol characters: 20A0-20BA
x (currency sign - 00A4)
+ x (peso sign - 20B1)
x (heavy dollar sign - 1F4B2)
0025 PERCENT SIGN
x (arabic percent sign - 066A)
@@ -184,15 +192,35 @@
x (division slash - 2215)
@ ASCII digits
0030 DIGIT ZERO
+ ~ 0030 FE0E text style
+ ~ 0030 FE0F emoji style
0031 DIGIT ONE
+ ~ 0031 FE0E text style
+ ~ 0031 FE0F emoji style
0032 DIGIT TWO
+ ~ 0032 FE0E text style
+ ~ 0032 FE0F emoji style
0033 DIGIT THREE
+ ~ 0033 FE0E text style
+ ~ 0033 FE0F emoji style
0034 DIGIT FOUR
+ ~ 0034 FE0E text style
+ ~ 0034 FE0F emoji style
0035 DIGIT FIVE
+ ~ 0035 FE0E text style
+ ~ 0035 FE0F emoji style
0036 DIGIT SIX
+ ~ 0036 FE0E text style
+ ~ 0036 FE0F emoji style
0037 DIGIT SEVEN
+ ~ 0037 FE0E text style
+ ~ 0037 FE0F emoji style
0038 DIGIT EIGHT
+ ~ 0038 FE0E text style
+ ~ 0038 FE0F emoji style
0039 DIGIT NINE
+ ~ 0039 FE0E text style
+ ~ 0039 FE0F emoji style
@ ASCII punctuation and symbols
003A COLON
x (armenian full stop - 0589)
@@ -381,6 +409,7 @@
@ Control character
007F <control>
= DELETE
+@~ Standardized Variation Sequences
@@ 0080 C1 Controls and Latin-1 Supplement (Latin-1 Supplement) 00FF
@ C1 controls
@+ Alias names are those for ISO/IEC 6429:1992.
@@ -464,9 +493,10 @@
00A3 POUND SIGN
= pound sterling, Irish punt, Italian lira, Turkish lira, etc.
x (lira sign - 20A4)
+ x (turkish lira sign - 20BA)
x (roman semuncia sign - 10192)
00A4 CURRENCY SIGN
- * other currency symbol characters: 20A0-20B9
+ * other currency symbol characters: 20A0-20BA
x (dollar sign - 0024)
00A5 YEN SIGN
= yuan sign
@@ -677,7 +707,7 @@
: 0061 030A
00E6 LATIN SMALL LETTER AE
= latin small ligature ae (1.0)
- = ash (from Old English æsc)
+ = ash (from Old English æsc)
* Danish, Norwegian, Icelandic, Faroese, Old English, French, IPA
x (latin small ligature oe - 0153)
x (cyrillic small ligature a ie - 04D5)
@@ -981,7 +1011,7 @@
: 006F 030B
0152 LATIN CAPITAL LIGATURE OE
0153 LATIN SMALL LIGATURE OE
- = ethel (from Old English eðel)
+ = ethel (from Old English eðel)
* French, IPA, Old Icelandic, Old English, ...
x (latin small letter ae - 00E6)
x (latin letter small capital oe - 0276)
@@ -2021,11 +2051,13 @@
02B9 MODIFIER LETTER PRIME
* primary stress, emphasis
* transliteration of mjagkij znak (Cyrillic soft sign: palatalization)
+ * transliteration of Hebrew geresh
x (apostrophe - 0027)
x (acute accent - 00B4)
x (modifier letter acute accent - 02CA)
x (combining acute accent - 0301)
x (greek numeral sign - 0374)
+ x (hebrew punctuation geresh - 05F3)
x (prime - 2032)
02BA MODIFIER LETTER DOUBLE PRIME
* exaggerated stress, contrastive stress
@@ -2060,11 +2092,15 @@
x (single high-reversed-9 quotation mark - 201B)
02BE MODIFIER LETTER RIGHT HALF RING
* transliteration of Arabic hamza (glottal stop)
+ * transliteration of Hebrew alef
x (armenian apostrophe - 055A)
+ x (hebrew letter alef - 05D0)
x (arabic letter hamza - 0621)
02BF MODIFIER LETTER LEFT HALF RING
* transliteration of Arabic ain (voiced pharyngeal fricative)
+ * transliteration of Hebrew ayin
x (armenian modifier letter left half ring - 0559)
+ x (hebrew letter ayin - 05E2)
x (arabic letter ain - 0639)
02C0 MODIFIER LETTER GLOTTAL STOP
* ejective or glottalized
@@ -2442,6 +2478,10 @@
: 0301 combining acute accent
@ Additions for Greek
0342 COMBINING GREEK PERISPOMENI
+ * Greek-specific form of circumflex for rising-falling accent
+ * alternative glyph is similar to an inverted breve
+ x (combining tilde - 0303)
+ x (combining inverted breve - 0311)
0343 COMBINING GREEK KORONIS
: 0313 combining comma above
0344 COMBINING GREEK DIALYTIKA TONOS
@@ -4058,6 +4098,7 @@
0708 SYRIAC SUPRALINEAR COLON SKEWED LEFT
* marks a minor phrase division
0709 SYRIAC SUBLINEAR COLON SKEWED RIGHT
+ % SYRIAC SUBLINEAR COLON SKEWED LEFT
* marks the end of a real or rhetorical question
070A SYRIAC CONTRACTION
* a contraction mark, mostly used in East Syriac
@@ -4857,8 +4898,12 @@
= bengali letter va with lower diagonal (1.0)
@ Currency signs
09F2 BENGALI RUPEE MARK
+ = taka
+ * historic currency sign
09F3 BENGALI RUPEE SIGN
+ = Bangladeshi taka
@ Historic symbols for fractional values
+@+ The use of these signs is not limited to currency, despite the character names.
09F4 BENGALI CURRENCY NUMERATOR ONE
* not in current usage
09F5 BENGALI CURRENCY NUMERATOR TWO
@@ -4870,7 +4915,11 @@
09F9 BENGALI CURRENCY DENOMINATOR SIXTEEN
@ Sign
09FA BENGALI ISSHAR
-@ Currency sign
+ = ishvar
+ * represents the name of a deity
+ = svargiya
+ * written before the name of a deceased person
+@ Historic currency sign
09FB BENGALI GANDA MARK
@@ 0A00 Gurmukhi 0A7F
@ Various signs
@@ -5229,10 +5278,12 @@
0B77 ORIYA FRACTION THREE SIXTEENTHS
@@ 0B80 Tamil 0BFF
@ Various signs
+@+ The anusvara should not be confused with the use of a circular glyph for the pulli.
0B82 TAMIL SIGN ANUSVARA
* not used in Tamil
0B83 TAMIL SIGN VISARGA
= aytham
+ * in fonts which display the Tamil pulli as a ring shape, the glyph for aytham also uses rings
@ Independent vowels
0B85 TAMIL LETTER A
0B86 TAMIL LETTER AA
@@ -5292,7 +5343,9 @@
0BCC TAMIL VOWEL SIGN AU
: 0BC6 0BD7
@ Virama
+@+ The Tamil pulli usually displays as a dot above, but in some fonts displays as a ring above. Do not use 0B82 to represent a ring-shaped pulli.
0BCD TAMIL SIGN VIRAMA
+ = pulli
@ Various signs
0BD0 TAMIL OM
0BD7 TAMIL AU LENGTH MARK
@@ -6745,8 +6798,9 @@
10C3 GEORGIAN CAPITAL LETTER WE
10C4 GEORGIAN CAPITAL LETTER HAR
10C5 GEORGIAN CAPITAL LETTER HOE
-@ Additional letters for Ossetian
+@ Additional letter
10C7 GEORGIAN CAPITAL LETTER YN
+@ Additional letter for Ossetian
10CD GEORGIAN CAPITAL LETTER AEN
@ Mkhedruli
@+ This is the modern secular alphabet, which is caseless.
@@ -8888,52 +8942,95 @@
@ Basic letters
1820 MONGOLIAN LETTER A
x (cyrillic small letter a - 0430)
+ ~ 1820 180B second form (isolate)
+ ~ 1820 180B second form (medial)
+ ~ 1820 180B second form (final)
+ ~ 1820 180C third form (medial)
1821 MONGOLIAN LETTER E
x (cyrillic small letter e - 044D)
+ ~ 1821 180B second form (initial)
+ ~ 1821 180B second form (final)
1822 MONGOLIAN LETTER I
x (cyrillic small letter i - 0438)
+ ~ 1822 180B second form (medial)
1823 MONGOLIAN LETTER O
x (cyrillic small letter o - 043E)
+ ~ 1823 180B second form (medial)
+ ~ 1823 180B second form (final)
1824 MONGOLIAN LETTER U
x (cyrillic small letter u - 0443)
+ ~ 1824 180B second form (medial)
1825 MONGOLIAN LETTER OE
x (cyrillic small letter barred o - 04E9)
+ ~ 1825 180B second form (medial)
+ ~ 1825 180B second form (final)
+ ~ 1825 180C third form (medial)
1826 MONGOLIAN LETTER UE
x (cyrillic small letter straight u - 04AF)
+ ~ 1826 180B second form (isolate)
+ ~ 1826 180B second form (medial)
+ ~ 1826 180B second form (final)
+ ~ 1826 180C third form (medial)
1827 MONGOLIAN LETTER EE
1828 MONGOLIAN LETTER NA
x (cyrillic small letter en - 043D)
+ ~ 1828 180B second form (initial)
+ ~ 1828 180B second form (medial)
+ ~ 1828 180C third form (medial)
+ ~ 1828 180D separate form (medial)
1829 MONGOLIAN LETTER ANG
182A MONGOLIAN LETTER BA
x (cyrillic small letter be - 0431)
+ ~ 182A 180B alternative form (final)
182B MONGOLIAN LETTER PA
x (cyrillic small letter pe - 043F)
182C MONGOLIAN LETTER QA
x (cyrillic small letter ha - 0445)
+ ~ 182C 180B second form (initial)
+ ~ 182C 180B second form (medial)
+ ~ 182C 180B feminine second form (isolate)
+ ~ 182C 180C third form (medial)
+ ~ 182C 180D fourth form (medial)
182D MONGOLIAN LETTER GA
x (cyrillic small letter ghe - 0433)
+ ~ 182D 180B second form (initial)
+ ~ 182D 180B second form (medial)
+ ~ 182D 180B feminine form (final)
+ ~ 182D 180C third form (medial)
+ ~ 182D 180D feminine form (medial)
182E MONGOLIAN LETTER MA
x (cyrillic small letter em - 043C)
182F MONGOLIAN LETTER LA
x (cyrillic small letter el - 043B)
1830 MONGOLIAN LETTER SA
x (cyrillic small letter es - 0441)
+ ~ 1830 180B second form (final)
+ ~ 1830 180C third form (final)
1831 MONGOLIAN LETTER SHA
x (cyrillic small letter sha - 0448)
1832 MONGOLIAN LETTER TA
x (cyrillic small letter te - 0442)
+ ~ 1832 180B second form (medial)
1833 MONGOLIAN LETTER DA
x (cyrillic small letter de - 0434)
+ ~ 1833 180B second form (initial)
+ ~ 1833 180B second form (medial)
+ ~ 1833 180B second form (final)
1834 MONGOLIAN LETTER CHA
x (cyrillic small letter che - 0447)
1835 MONGOLIAN LETTER JA
x (cyrillic small letter zhe - 0436)
+ ~ 1835 180B second form (medial)
1836 MONGOLIAN LETTER YA
x (cyrillic small letter short i - 0439)
+ ~ 1836 180B second form (initial)
+ ~ 1836 180B second form (medial)
+ ~ 1836 180C third form (medial)
1837 MONGOLIAN LETTER RA
x (cyrillic small letter er - 0440)
1838 MONGOLIAN LETTER WA
x (cyrillic small letter ve - 0432)
+ ~ 1838 180B second form (final)
1839 MONGOLIAN LETTER FA
x (cyrillic small letter ef - 0444)
183A MONGOLIAN LETTER KA
@@ -8954,16 +9051,29 @@
@ Todo letters
1843 MONGOLIAN LETTER TODO LONG VOWEL SIGN
1844 MONGOLIAN LETTER TODO E
+ ~ 1844 180B second form (medial)
1845 MONGOLIAN LETTER TODO I
+ ~ 1845 180B second form (medial)
1846 MONGOLIAN LETTER TODO O
+ ~ 1846 180B second form (medial)
1847 MONGOLIAN LETTER TODO U
+ ~ 1847 180B second form (isolate)
+ ~ 1847 180B second form (medial)
+ ~ 1847 180B second form (final)
+ ~ 1847 180C third form (medial)
1848 MONGOLIAN LETTER TODO OE
+ ~ 1848 180B second form (medial)
1849 MONGOLIAN LETTER TODO UE
+ ~ 1849 180B second form (isolate)
+ ~ 1849 180B second form (medial)
184A MONGOLIAN LETTER TODO ANG
184B MONGOLIAN LETTER TODO BA
184C MONGOLIAN LETTER TODO PA
184D MONGOLIAN LETTER TODO QA
+ ~ 184D 180B feminine form (initial)
+ ~ 184D 180B feminine form (medial)
184E MONGOLIAN LETTER TODO GA
+ ~ 184E 180B second form (medial)
184F MONGOLIAN LETTER TODO MA
1850 MONGOLIAN LETTER TODO TA
1851 MONGOLIAN LETTER TODO DA
@@ -8980,38 +9090,68 @@
185C MONGOLIAN LETTER TODO DZA
@ Sibe letters
185D MONGOLIAN LETTER SIBE E
+ ~ 185D 180B second form (medial)
+ ~ 185D 180B second form (final)
185E MONGOLIAN LETTER SIBE I
+ ~ 185E 180B second form (medial)
+ ~ 185E 180B second form (final)
+ ~ 185E 180C third form (medial)
+ ~ 185E 180C third form (final)
185F MONGOLIAN LETTER SIBE IY
1860 MONGOLIAN LETTER SIBE UE
+ ~ 1860 180B second form (medial)
+ ~ 1860 180B second form (final)
1861 MONGOLIAN LETTER SIBE U
1862 MONGOLIAN LETTER SIBE ANG
1863 MONGOLIAN LETTER SIBE KA
+ ~ 1863 180B second form (medial)
1864 MONGOLIAN LETTER SIBE GA
1865 MONGOLIAN LETTER SIBE HA
1866 MONGOLIAN LETTER SIBE PA
1867 MONGOLIAN LETTER SIBE SHA
1868 MONGOLIAN LETTER SIBE TA
+ ~ 1868 180B second form (initial)
+ ~ 1868 180B second form (medial)
+ ~ 1868 180C third form (medial)
1869 MONGOLIAN LETTER SIBE DA
+ ~ 1869 180B second form (initial)
+ ~ 1869 180B second form (medial)
186A MONGOLIAN LETTER SIBE JA
186B MONGOLIAN LETTER SIBE FA
186C MONGOLIAN LETTER SIBE GAA
186D MONGOLIAN LETTER SIBE HAA
186E MONGOLIAN LETTER SIBE TSA
186F MONGOLIAN LETTER SIBE ZA
+ ~ 186F 180B second form (initial)
+ ~ 186F 180B second form (medial)
1870 MONGOLIAN LETTER SIBE RAA
1871 MONGOLIAN LETTER SIBE CHA
1872 MONGOLIAN LETTER SIBE ZHA
@ Manchu letters
1873 MONGOLIAN LETTER MANCHU I
+ ~ 1873 180B second form (medial)
+ ~ 1873 180B second form (final)
+ ~ 1873 180C third form (medial)
+ ~ 1873 180C third form (final)
+ ~ 1873 180D fourth form (medial)
1874 MONGOLIAN LETTER MANCHU KA
+ ~ 1874 180B second form (medial)
+ ~ 1874 180B feminine first final form (final)
+ ~ 1874 180C feminine first medial form (medial)
+ ~ 1874 180C feminine second final form (final)
+ ~ 1874 180D feminine second medial form (medial)
1875 MONGOLIAN LETTER MANCHU RA
1876 MONGOLIAN LETTER MANCHU FA
+ ~ 1876 180B second form (initial)
+ ~ 1876 180B second form (medial)
1877 MONGOLIAN LETTER MANCHU ZHA
@ Extensions for Sanskrit and Tibetan
1880 MONGOLIAN LETTER ALI GALI ANUSVARA ONE
x (tibetan sign sna ldan - 0F83)
+ ~ 1880 180B second form
1881 MONGOLIAN LETTER ALI GALI VISARGA ONE
x (tibetan sign rnam bcad - 0F7F)
+ ~ 1881 180B second form
1882 MONGOLIAN LETTER ALI GALI DAMARU
x (tibetan sign lce tsa can - 0F88)
1883 MONGOLIAN LETTER ALI GALI UBADAMA
@@ -9021,9 +9161,16 @@
x (tibetan mark paluta - 0F85)
1886 MONGOLIAN LETTER ALI GALI THREE BALUDA
1887 MONGOLIAN LETTER ALI GALI A
+ ~ 1887 180B second form (isolate)
+ ~ 1887 180B second form (final)
+ ~ 1887 180C third form (final)
+ ~ 1887 180D fourth form (final)
1888 MONGOLIAN LETTER ALI GALI I
+ ~ 1888 180B second form (final)
1889 MONGOLIAN LETTER ALI GALI KA
188A MONGOLIAN LETTER ALI GALI NGA
+ ~ 188A 180B second form (initial)
+ ~ 188A 180B second form (medial)
188B MONGOLIAN LETTER ALI GALI CA
188C MONGOLIAN LETTER ALI GALI TTA
188D MONGOLIAN LETTER ALI GALI TTHA
@@ -9056,6 +9203,8 @@
18A8 MONGOLIAN LETTER MANCHU ALI GALI BHA
18A9 MONGOLIAN LETTER ALI GALI DAGALGA
18AA MONGOLIAN LETTER MANCHU ALI GALI LHA
+@~ Standarized Variation Sequences
+@+ Unlike other blocks, these variation sequences use the script-specific variation selectors for Mongolian.
@@ 18B0 Unified Canadian Aboriginal Syllabics Extended 18FF
@ Syllables for Moose Cree
18B0 CANADIAN SYLLABICS OY
@@ -9361,7 +9510,7 @@
@@ 19E0 Khmer Symbols 19FF
@ Lunar date symbols
19E0 KHMER SYMBOL PATHAMASAT
- * represents the first August in a leap year
+ * represents the first Ashadha (eighth month of the lunar calendar)
@+ The following fifteen characters represent the first through the fifteenth waxing days, respectively.
19E1 KHMER SYMBOL MUOY KOET
19E2 KHMER SYMBOL PII KOET
@@ -9379,7 +9528,7 @@
19EE KHMER SYMBOL DAP-BUON KOET
19EF KHMER SYMBOL DAP-PRAM KOET
19F0 KHMER SYMBOL TUTEYASAT
- * represents the second August in a leap year
+ * represents the second Ashadha in the lunar calendar during the Adhikameas leap year
@+ The following fifteen characters represent the first through the fifteenth waning days, respectively.
19F1 KHMER SYMBOL MUOY ROC
19F2 KHMER SYMBOL PII ROC
@@ -11833,7 +11982,7 @@
x (presentation form for vertical horizontal ellipsis - FE19)
# 002E 002E 002E
2027 HYPHENATION POINT
- * visible symbol used to indicate correct positions for word breaking, as in dic·tion·ar·ies
+ * visible symbol used to indicate correct positions for word breaking, as in dic·tion·ar·ies
@ Format characters
2028 LINE SEPARATOR
* may be used to represent this semantic unambiguously
@@ -11915,6 +12064,8 @@
@ Double punctuation for vertical text
203C DOUBLE EXCLAMATION MARK
x (exclamation mark - 0021)
+ ~ 203C FE0E text style
+ ~ 203C FE0F emoji style
# 0021 0021
@ General punctuation
203D INTERROBANG
@@ -11948,6 +12099,8 @@
2048 QUESTION EXCLAMATION MARK
# 003F 0021
2049 EXCLAMATION QUESTION MARK
+ ~ 2049 FE0E text style
+ ~ 2049 FE0F emoji style
# 0021 003F
@ General punctuation
204A TIRONIAN SIGN ET
@@ -11966,7 +12119,7 @@
* editing mark
2051 TWO ASTERISKS ALIGNED VERTICALLY
2052 COMMERCIAL MINUS SIGN
- = abzüglich (German), med avdrag av (Swedish), piska (Swedish, "whip")
+ = abzüglich (German), med avdrag av (Swedish), piska (Swedish, "whip")
* a common glyph variant and fallback representation looks like ./.
* may also be used as a dingbat to indicate correctness
* used in Finno-Ugric Phonetic Alphabet to indicate a related borrowed form with different sound
@@ -12037,6 +12190,7 @@
206D ACTIVATE ARABIC FORM SHAPING
206E NATIONAL DIGIT SHAPES
206F NOMINAL DIGIT SHAPES
+@~ Standardized Variation Sequences
@@ 2070 Superscripts and Subscripts 209F
@ Superscripts
@+ See also superscript Latin letters in the Spacing Modifier Letters block starting at 02B0.
@@ -12168,6 +12322,7 @@
* intended for lira, but not widely used
* preferred character for lira is 00A3
x (pound sign - 00A3)
+ x (turkish lira sign - 20BA)
20A5 MILL SIGN
* USA (1/10 cent)
20A6 NAIRA SIGN
@@ -12193,13 +12348,15 @@
* Laos
20AE TUGRIK SIGN
* Mongolia
- * also transliterated as tugrug, tugric, tugrog, togrog, tögrög
+ * also transliterated as tugrug, tugric, tugrog, togrog, tögrög
20AF DRACHMA SIGN
* Greece
20B0 GERMAN PENNY SIGN
20B1 PESO SIGN
+ = Filipino peso sign
* Philippines
- * the Mexican peso is indicated with the dollar sign
+ * extant and discontinued Latin-American peso currencies (Mexican, Chilean, Colombian, etc.) use the dollar sign
+ x (dollar sign - 0024)
x (peseta sign - 20A7)
20B2 GUARANI SIGN
* Paraguay
@@ -12226,6 +12383,8 @@
* official rupee currency sign for India
* contrasts with script-specific rupee signs and abbreviations
x (devanagari letter ra - 0930)
+20BA TURKISH LIRA SIGN
+ * official lira currency sign for Turkey
@@ 20D0 Combining Diacritical Marks for Symbols 20FF
@ Combining diacritical marks for symbols
20D0 COMBINING LEFT HARPOON ABOVE
@@ -12425,7 +12584,7 @@
212A KELVIN SIGN
: 004B latin capital letter k
212B ANGSTROM SIGN
- * non SI length unit (=0.1 nm) named after A. J. Ångström, Swedish physicist
+ * non SI length unit (=0.1 nm) named after A. J. Ångström, Swedish physicist
* preferred representation is 00C5
: 00C5 latin capital letter a with ring above
212C SCRIPT CAPITAL B
@@ -12476,6 +12635,8 @@
@ Additional letterlike symbols
2139 INFORMATION SOURCE
* intended for use with 20DD
+ ~ 2139 FE0E text style
+ ~ 2139 FE0F emoji style
# <font> 0069 latin small letter i
213A ROTATED CAPITAL Q
* a binding signature mark
@@ -12534,6 +12695,7 @@
x (greek small letter digamma - 03DD)
@ Biblical editorial symbol
214F SYMBOL FOR SAMARITAN SOURCE
+@~ Standardized Variation Sequences
@@ 2150 Number Forms 218F
@ Fractions
@+ Other fraction number forms are found in the Latin-1 Supplement block.
@@ -12675,11 +12837,23 @@
* IPA: ingressive airflow
2194 LEFT RIGHT ARROW
= z notation relation
+ ~ 2194 FE0E text style
+ ~ 2194 FE0F emoji style
2195 UP DOWN ARROW
+ ~ 2195 FE0E text style
+ ~ 2195 FE0F emoji style
2196 NORTH WEST ARROW
+ ~ 2196 FE0E text style
+ ~ 2196 FE0F emoji style
2197 NORTH EAST ARROW
+ ~ 2197 FE0E text style
+ ~ 2197 FE0F emoji style
2198 SOUTH EAST ARROW
+ ~ 2198 FE0E text style
+ ~ 2198 FE0F emoji style
2199 SOUTH WEST ARROW
+ ~ 2199 FE0E text style
+ ~ 2199 FE0F emoji style
@ Arrows with modifications
219A LEFTWARDS ARROW WITH STROKE
* negation of 2190
@@ -12711,7 +12885,11 @@
= depth symbol
21A8 UP DOWN ARROW WITH BASE
21A9 LEFTWARDS ARROW WITH HOOK
+ ~ 21A9 FE0E text style
+ ~ 21A9 FE0F emoji style
21AA RIGHTWARDS ARROW WITH HOOK
+ ~ 21AA FE0E text style
+ ~ 21AA FE0F emoji style
21AB LEFTWARDS ARROW WITH LOOP
21AC RIGHTWARDS ARROW WITH LOOP
21AD LEFT RIGHT WAVE ARROW
@@ -12846,6 +13024,7 @@
21FD LEFTWARDS OPEN-HEADED ARROW
21FE RIGHTWARDS OPEN-HEADED ARROW
21FF LEFT RIGHT OPEN-HEADED ARROW
+@~ Standardized Variation Sequences
@@ 2200 Mathematical Operators 22FF
@@+
@ Miscellaneous mathematical symbols
@@ -12973,13 +13152,19 @@
2229 INTERSECTION
= cap, hat
x (n-ary intersection - 22C2)
+ ~ 2229 FE00 with serifs
222A UNION
= cup
x (n-ary union - 22C3)
+ ~ 222A FE00 with serifs
@ Integrals
222B INTEGRAL
x (latin small letter esh - 0283)
+;experimenting with variant syntax
+ ~ 222B ALT1 slanted style
222C DOUBLE INTEGRAL
+;experimenting with variant syntax
+ ~ 222C ALT1 slanted style
# 222B 222B
222D TRIPLE INTEGRAL
x (quadruple integral operator - 2A0C)
@@ -13089,7 +13274,9 @@
2266 LESS-THAN OVER EQUAL TO
2267 GREATER-THAN OVER EQUAL TO
2268 LESS-THAN BUT NOT EQUAL TO
+ ~ 2268 FE00 with vertical stroke
2269 GREATER-THAN BUT NOT EQUAL TO
+ ~ 2269 FE00 with vertical stroke
226A MUCH LESS-THAN
x (left-pointing double angle quotation mark - 00AB)
226B MUCH GREATER-THAN
@@ -13107,7 +13294,9 @@
2271 NEITHER GREATER-THAN NOR EQUAL TO
: 2265 0338
2272 LESS-THAN OR EQUIVALENT TO
+ ~ 2272 FE00 following the slant of the lower leg
2273 GREATER-THAN OR EQUIVALENT TO
+ ~ 2273 FE00 following the slant of the lower leg
2274 NEITHER LESS-THAN NOR EQUIVALENT TO
: 2272 0338
2275 NEITHER GREATER-THAN NOR EQUIVALENT TO
@@ -13149,7 +13338,9 @@
2289 NEITHER A SUPERSET OF NOR EQUAL TO
: 2287 0338
228A SUBSET OF WITH NOT EQUAL TO
+ ~ 228A FE00 with stroke through bottom members
228B SUPERSET OF WITH NOT EQUAL TO
+ ~ 228B FE00 with stroke through bottom members
@ Operators
228C MULTISET
228D MULTISET MULTIPLICATION
@@ -13166,12 +13357,15 @@
@ Operators
2293 SQUARE CAP
x (n-ary square intersection operator - 2A05)
+ ~ 2293 FE00 with serifs
2294 SQUARE CUP
+ ~ 2294 FE00 with serifs
2295 CIRCLED PLUS
= direct sum
= vector pointing into page
x (n-ary circled plus operator - 2A01)
x (alchemical symbol for verdigris - 1F728)
+ ~ 2295 FE00 with white rim
2296 CIRCLED MINUS
= symmetric difference
x (circle with horizontal bar - 29B5)
@@ -13181,6 +13375,7 @@
= vector pointing into page
x (circled crossing lanes - 26D2)
x (n-ary circled times operator - 2A02)
+ ~ 2297 FE00 with white rim
2298 CIRCLED DIVISION SLASH
2299 CIRCLED DOT OPERATOR
= direct product
@@ -13194,6 +13389,7 @@
229B CIRCLED ASTERISK OPERATOR
x (apl functional symbol circle star - 235F)
229C CIRCLED EQUALS
+ ~ 229C FE00 with equal sign touching the circle
229D CIRCLED DASH
229E SQUARED PLUS
229F SQUARED MINUS
@@ -13318,7 +13514,9 @@
22D8 VERY MUCH LESS-THAN
22D9 VERY MUCH GREATER-THAN
22DA LESS-THAN EQUAL TO OR GREATER-THAN
+ ~ 22DA FE00 with slanted equal
22DB GREATER-THAN EQUAL TO OR LESS-THAN
+ ~ 22DB FE00 with slanted equal
22DC EQUAL TO OR LESS-THAN
22DD EQUAL TO OR GREATER-THAN
22DE EQUAL TO OR PRECEDES
@@ -13367,6 +13565,10 @@
22FD CONTAINS WITH OVERBAR
22FE SMALL CONTAINS WITH OVERBAR
22FF Z NOTATION BAG MEMBERSHIP
+@@~ Alternative Glyph Listing
+@+ Experimental listing
+@~ Standarized Variation Sequences
+@+ Experimental listing
@@ 2300 Miscellaneous Technical 23FF
@ Miscellaneous technical
2300 DIAMETER SIGN
@@ -13437,8 +13639,12 @@
231A WATCH
x (alarm clock - 23F0)
x (clock face one oclock - 1F550)
+ ~ 231A FE0E text style
+ ~ 231A FE0F emoji style
231B HOURGLASS
= alchemical symbol for hour
+ ~ 231B FE0E text style
+ ~ 231B FE0F emoji style
@ Quine corners
@+ These form a set of four quine corners, for quincuncial arrangement. They are also used in upper and lower pairs in mathematic, or more rarely in editorial usage as alternatives to half brackets.
231C TOP LEFT CORNER
@@ -13799,6 +14005,7 @@
23F2 TIMER CLOCK
23F3 HOURGLASS WITH FLOWING SAND
x (hourglass - 231B)
+@~ Standardized Variation Sequences
@@ 2400 Control Pictures 243F
@+ The diagonal lettering glyphs are only exemplary; alternate representations may be, and often are used in the visible display of control codes.
@ Graphic pictures for control codes
@@ -14083,6 +14290,8 @@
24C1 CIRCLED LATIN CAPITAL LETTER L
# <circle> 004C
24C2 CIRCLED LATIN CAPITAL LETTER M
+ ~ 24C2 FE0E text style
+ ~ 24C2 FE0F emoji style
# <circle> 004D
24C3 CIRCLED LATIN CAPITAL LETTER N
# <circle> 004E
@@ -14192,6 +14401,7 @@
@ Additional white on black circled number
24FF NEGATIVE CIRCLED DIGIT ZERO
x (dingbat negative circled digit one - 2776)
+@~ Standardized Variation Sequences
@@ 2500 Box Drawing 257F
@+ All of these characters are intended for compatibility with old sets oriented toward character cell graphics.
@ Light and heavy solid lines
@@ -14426,8 +14636,12 @@
25AA BLACK SMALL SQUARE
= square bullet
x (black very small square - 2B1D)
+ ~ 25AA FE0E text style
+ ~ 25AA FE0F emoji style
25AB WHITE SMALL SQUARE
x (white very small square - 2B1E)
+ ~ 25AB FE0E text style
+ ~ 25AB FE0F emoji style
25AC BLACK RECTANGLE
25AD WHITE RECTANGLE
25AE BLACK VERTICAL RECTANGLE
@@ -14450,6 +14664,8 @@
x (up-pointing small red triangle - 1F53C)
25B5 WHITE UP-POINTING SMALL TRIANGLE
25B6 BLACK RIGHT-POINTING TRIANGLE
+ ~ 25B6 FE0E text style
+ ~ 25B6 FE0F emoji style
25B7 WHITE RIGHT-POINTING TRIANGLE
= z notation range restriction
25B8 BLACK RIGHT-POINTING SMALL TRIANGLE
@@ -14470,6 +14686,8 @@
x (down-pointing small red triangle - 1F53D)
25BF WHITE DOWN-POINTING SMALL TRIANGLE
25C0 BLACK LEFT-POINTING TRIANGLE
+ ~ 25C0 FE0E text style
+ ~ 25C0 FE0F emoji style
25C1 WHITE LEFT-POINTING TRIANGLE
= z notation domain restriction
25C2 BLACK LEFT-POINTING SMALL TRIANGLE
@@ -14573,14 +14791,24 @@
25FB WHITE MEDIUM SQUARE
= always (modal operator)
x (white square - 25A1)
+ ~ 25FB FE0E text style
+ ~ 25FB FE0F emoji style
25FC BLACK MEDIUM SQUARE
x (black square - 25A0)
+ ~ 25FC FE0E text style
+ ~ 25FC FE0F emoji style
25FD WHITE MEDIUM SMALL SQUARE
x (white small square - 25AB)
+ ~ 25FD FE0E text style
+ ~ 25FD FE0F emoji style
25FE BLACK MEDIUM SMALL SQUARE
x (black small square - 25AA)
+ ~ 25FE FE0E text style
+ ~ 25FE FE0F emoji style
25FF LOWER RIGHT TRIANGLE
x (right triangle - 22BF)
+@~ Standarized Variation Sequences
+@+ Emoji style variants include rendering of characters in ways not achievable with traditional or even digital typography. The sample glyphs shown here cannot faithfully represent the range of intended appearances.
@@ 2600 Miscellaneous Symbols 26FF
@@+
@ Weather and astrological symbols
@@ -14588,8 +14816,12 @@
= clear weather
x (sun - 2609)
x (high brightness symbol - 1F506)
+ ~ 2600 FE0E text style
+ ~ 2600 FE0F emoji style
2601 CLOUD
= cloudy weather
+ ~ 2601 FE0E text style
+ ~ 2601 FE0F emoji style
2602 UMBRELLA
= rainy weather
x (closed umbrella - 1F302)
@@ -14622,10 +14854,14 @@
x (telephone sign - 2121)
x (telephone location sign - 2706)
x (telephone receiver - 1F4DE)
+ ~ 260E FE0E text style
+ ~ 260E FE0F emoji style
260F WHITE TELEPHONE
2610 BALLOT BOX
x (white square - 25A1)
2611 BALLOT BOX WITH CHECK
+ ~ 2611 FE0E text style
+ ~ 2611 FE0F emoji style
2612 BALLOT BOX WITH X
x (squared times - 22A0)
2613 SALTIRE
@@ -14634,6 +14870,8 @@
@ Weather symbol
2614 UMBRELLA WITH RAIN DROPS
= showery weather
+ ~ 2614 FE0E text style
+ ~ 2614 FE0F emoji style
@ Miscellaneous symbol
2615 HOT BEVERAGE
= tea or coffee, depending on locale
@@ -14641,6 +14879,8 @@
x (watch - 231A)
x (hourglass - 231B)
x (teacup without handle - 1F375)
+ ~ 2615 FE0E text style
+ ~ 2615 FE0F emoji style
@ Japanese chess symbols
2616 WHITE SHOGI PIECE
2617 BLACK SHOGI PIECE
@@ -14656,6 +14896,8 @@
261C WHITE LEFT POINTING INDEX
x (white left pointing backhand index - 1F448)
261D WHITE UP POINTING INDEX
+ ~ 261D FE0E text style
+ ~ 261D FE0F emoji style
261E WHITE RIGHT POINTING INDEX
= fist (typographic term)
261F WHITE DOWN POINTING INDEX
@@ -14712,6 +14954,8 @@
2639 WHITE FROWNING FACE
263A WHITE SMILING FACE
= have a nice day!
+ ~ 263A FE0E text style
+ ~ 263A FE0F emoji style
263B BLACK SMILING FACE
@ Miscellaneous symbol
263C WHITE SUN WITH RAYS
@@ -14750,21 +14994,45 @@
2647 PLUTO
@ Zodiacal symbols
2648 ARIES
+ ~ 2648 FE0E text style
+ ~ 2648 FE0F emoji style
2649 TAURUS
+ ~ 2649 FE0E text style
+ ~ 2649 FE0F emoji style
264A GEMINI
+ ~ 264A FE0E text style
+ ~ 264A FE0F emoji style
264B CANCER
+ ~ 264B FE0E text style
+ ~ 264B FE0F emoji style
264C LEO
+ ~ 264C FE0E text style
+ ~ 264C FE0F emoji style
264D VIRGO
= minim (alternate glyph)
+ ~ 264D FE0E text style
+ ~ 264D FE0F emoji style
264E LIBRA
x (alchemical symbol for sublimation - 1F75E)
+ ~ 264E FE0E text style
+ ~ 264E FE0F emoji style
264F SCORPIUS
= scorpio
= minim, drop
+ ~ 264F FE0E text style
+ ~ 264F FE0F emoji style
2650 SAGITTARIUS
+ ~ 2650 FE0E text style
+ ~ 2650 FE0F emoji style
2651 CAPRICORN
+ ~ 2651 FE0E text style
+ ~ 2651 FE0F emoji style
2652 AQUARIUS
+ ~ 2652 FE0E text style
+ ~ 2652 FE0F emoji style
2653 PISCES
+ ~ 2653 FE0E text style
+ ~ 2653 FE0F emoji style
@ Chess symbols
2654 WHITE CHESS KING
2655 WHITE CHESS QUEEN
@@ -14780,22 +15048,32 @@
265F BLACK CHESS PAWN
@ Playing card symbols
2660 BLACK SPADE SUIT
+ ~ 2660 FE0E text style
+ ~ 2660 FE0F emoji style
2661 WHITE HEART SUIT
2662 WHITE DIAMOND SUIT
x (white diamond - 25C7)
x (lozenge - 25CA)
2663 BLACK CLUB SUIT
x (shamrock - 2618)
+ ~ 2663 FE0E text style
+ ~ 2663 FE0F emoji style
2664 WHITE SPADE SUIT
2665 BLACK HEART SUIT
= valentine
x (heavy black heart - 2764)
x (blue heart - 1F499)
+ ~ 2665 FE0E text style
+ ~ 2665 FE0F emoji style
2666 BLACK DIAMOND SUIT
x (black diamond - 25C6)
+ ~ 2666 FE0E text style
+ ~ 2666 FE0F emoji style
2667 WHITE CLUB SUIT
@ Miscellaneous symbol
2668 HOT SPRINGS
+ ~ 2668 FE0E text style
+ ~ 2668 FE0F emoji style
@ Musical symbols
2669 QUARTER NOTE
= crotchet
@@ -14839,6 +15117,8 @@
* used together with other text and labels to indicate the type of material to be recycled
267B BLACK UNIVERSAL RECYCLING SYMBOL
x (clockwise rightwards and leftwards open circle arrows - 1F501)
+ ~ 267B FE0E text style
+ ~ 267B FE0F emoji style
267C RECYCLED PAPER SYMBOL
* used to indicate 100% recycled paper content
267D PARTIALLY-RECYCLED PAPER SYMBOL
@@ -14846,6 +15126,8 @@
@ Miscellaneous symbols
267E PERMANENT PAPER SIGN
267F WHEELCHAIR SYMBOL
+ ~ 267F FE0E text style
+ ~ 267F FE0F emoji style
@ Dice
2680 DIE FACE-1
x (game die - 1F3B2)
@@ -14876,6 +15158,8 @@
x (pick - 26CF)
2693 ANCHOR
= nautical term, harbor (on maps)
+ ~ 2693 FE0E text style
+ ~ 2693 FE0F emoji style
2694 CROSSED SWORDS
= military term, battleground (on maps), killed in action
2695 STAFF OF AESCULAPIUS
@@ -14911,9 +15195,13 @@
= background speaking
@ Miscellaneous symbols
26A0 WARNING SIGN
+ ~ 26A0 FE0E text style
+ ~ 26A0 FE0F emoji style
26A1 HIGH VOLTAGE SIGN
= thunder
= lightning symbol
+ ~ 26A1 FE0E text style
+ ~ 26A1 FE0F emoji style
@ Gender symbols
26A2 DOUBLED FEMALE SIGN
= lesbianism
@@ -14942,8 +15230,12 @@
= asexuality, sexless, genderless
= engaged, betrothed
* base for male or female sign
+ ~ 26AA FE0E text style
+ ~ 26AA FE0F emoji style
26AB MEDIUM BLACK CIRCLE
* UI symbol for record function
+ ~ 26AB FE0E text style
+ ~ 26AB FE0F emoji style
26AC MEDIUM SMALL WHITE CIRCLE
= engaged, betrothed (genealogy)
* can represent wedding ring
@@ -14980,7 +15272,11 @@
@ Sport symbols
@+ See other sport symbols in the Miscellaneous Symbols and Pictographs block.
26BD SOCCER BALL
+ ~ 26BD FE0E text style
+ ~ 26BD FE0F emoji style
26BE BASEBALL
+ ~ 26BE FE0E text style
+ ~ 26BE FE0F emoji style
@ Miscellaneous symbol from ARIB STD B24
26BF SQUARED KEY
= parental lock
@@ -14993,8 +15289,12 @@
@ Weather symbols from ARIB STD B24
26C4 SNOWMAN WITHOUT SNOW
= light snow
+ ~ 26C4 FE0E text style
+ ~ 26C4 FE0F emoji style
26C5 SUN BEHIND CLOUD
= partly cloudy
+ ~ 26C5 FE0E text style
+ ~ 26C5 FE0F emoji style
26C6 RAIN
= rainy weather
26C7 BLACK SNOWMAN
@@ -15029,6 +15329,8 @@
= tyre chains required
26D4 NO ENTRY
x (no entry sign - 1F6AB)
+ ~ 26D4 FE0E text style
+ ~ 26D4 FE0F emoji style
26D5 ALTERNATE ONE-WAY LEFT WAY TRAFFIC
* left side traffic
26D6 BLACK TWO-WAY LEFT WAY TRAFFIC
@@ -15080,6 +15382,8 @@
26E9 SHINTO SHRINE
= torii
26EA CHURCH
+ ~ 26EA FE0E text style
+ ~ 26EA FE0F emoji style
26EB CASTLE
x (european castle - 1F3F0)
26EC HISTORIC SITE
@@ -15098,15 +15402,21 @@
x (umbrella - 2602)
26F2 FOUNTAIN
= park
+ ~ 26F2 FE0E text style
+ ~ 26F2 FE0F emoji style
26F3 FLAG IN HOLE
= golf course
x (triangular flag on post - 1F6A9)
+ ~ 26F3 FE0E text style
+ ~ 26F3 FE0F emoji style
26F4 FERRY
= ferry boat terminal
x (ship - 1F6A2)
26F5 SAILBOAT
= marina or yacht harbour
x (rowboat - 1F6A3)
+ ~ 26F5 FE0E text style
+ ~ 26F5 FE0F emoji style
26F6 SQUARE FOUR CORNERS
= intersection
26F7 SKIER
@@ -15118,18 +15428,23 @@
= track and field, gymnasium
26FA TENT
= camping site
+ ~ 26FA FE0E text style
+ ~ 26FA FE0F emoji style
26FB JAPANESE BANK SYMBOL
x (bank - 1F3E6)
26FC HEADSTONE GRAVEYARD SYMBOL
= graveyard, memorial park, cemetery
26FD FUEL PUMP
= petrol station, gas station
+ ~ 26FD FE0E text style
+ ~ 26FD FE0F emoji style
26FE CUP ON BLACK SQUARE
= drive-in restaurant
x (hot beverage - 2615)
x (teacup without handle - 1F375)
26FF WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
= Japanese self-defence force site
+@~ Standardized Variation Sequences
@@ 2700 Dingbats 27BF
@+ ITC Zapf dingbats series 100. Some of the ITC Zapf dingbats have been unified with geometric shape characters. Gaps in the chart have subsequently been filled with other dingbat-like symbols.
x (black telephone - 260E)
@@ -15147,6 +15462,8 @@
@ Miscellaneous
2701 UPPER BLADE SCISSORS
2702 BLACK SCISSORS
+ ~ 2702 FE0E text style
+ ~ 2702 FE0F emoji style
2703 LOWER BLADE SCISSORS
2704 WHITE SCISSORS
2705 WHITE HEAVY CHECK MARK
@@ -15156,8 +15473,12 @@
x (telephone receiver - 1F4DE)
2707 TAPE DRIVE
2708 AIRPLANE
+ ~ 2708 FE0E text style
+ ~ 2708 FE0F emoji style
2709 ENVELOPE
x (incoming envelope - 1F4E8)
+ ~ 2709 FE0E text style
+ ~ 2709 FE0F emoji style
270A RAISED FIST
= rock in Rock, Paper, Scissors game
x (fisted hand sign - 1F44A)
@@ -15166,19 +15487,29 @@
x (waving hand sign - 1F44B)
270C VICTORY HAND
= scissors in Rock, Paper, Scissors game
+ ~ 270C FE0E text style
+ ~ 270C FE0F emoji style
270D WRITING HAND
270E LOWER RIGHT PENCIL
270F PENCIL
+ ~ 270F FE0E text style
+ ~ 270F FE0F emoji style
2710 UPPER RIGHT PENCIL
2711 WHITE NIB
2712 BLACK NIB
+ ~ 2712 FE0E text style
+ ~ 2712 FE0F emoji style
2713 CHECK MARK
x (square root - 221A)
2714 HEAVY CHECK MARK
+ ~ 2714 FE0E text style
+ ~ 2714 FE0F emoji style
2715 MULTIPLICATION X
x (multiplication sign - 00D7)
x (box drawings light diagonal cross - 2573)
2716 HEAVY MULTIPLICATION X
+ ~ 2716 FE0E text style
+ ~ 2716 FE0F emoji style
2717 BALLOT X
x (saltire - 2613)
2718 HEAVY BALLOT X
@@ -15191,7 +15522,7 @@
271E SHADOWED WHITE LATIN CROSS
271F OUTLINED LATIN CROSS
2720 MALTESE CROSS
- * Historically, the Maltese cross took many forms; the shape shown in the Zapf Dingbats is similar to one known as the Cross Formée.
+ * Historically, the Maltese cross took many forms; the shape shown in the Zapf Dingbats is similar to one known as the Cross Formée.
@ Stars, asterisks and snowflakes
2721 STAR OF DAVID
x (six pointed star with middle dot - 1F52F)
@@ -15215,7 +15546,11 @@
x (asterisk - 002A)
2732 OPEN CENTRE ASTERISK
2733 EIGHT SPOKED ASTERISK
+ ~ 2733 FE0E text style
+ ~ 2733 FE0F emoji style
2734 EIGHT POINTED BLACK STAR
+ ~ 2734 FE0E text style
+ ~ 2734 FE0F emoji style
2735 EIGHT POINTED PINWHEEL STAR
2736 SIX POINTED BLACK STAR
= sextile
@@ -15235,9 +15570,13 @@
2742 CIRCLED OPEN CENTRE EIGHT POINTED STAR
2743 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
2744 SNOWFLAKE
+ ~ 2744 FE0E text style
+ ~ 2744 FE0F emoji style
2745 TIGHT TRIFOLIATE SNOWFLAKE
2746 HEAVY CHEVRON SNOWFLAKE
2747 SPARKLE
+ ~ 2747 FE0E text style
+ ~ 2747 FE0F emoji style
2748 HEAVY SPARKLE
2749 BALLOON-SPOKED ASTERISK
= jack
@@ -15260,6 +15599,8 @@
2756 BLACK DIAMOND MINUS WHITE X
2757 HEAVY EXCLAMATION MARK SYMBOL
= obstacles on the road, ARIB STD B24
+ ~ 2757 FE0E text style
+ ~ 2757 FE0F emoji style
2758 LIGHT VERTICAL BAR
x (vertical line - 007C)
2759 MEDIUM VERTICAL BAR
@@ -15284,6 +15625,8 @@
2763 HEAVY HEART EXCLAMATION MARK ORNAMENT
2764 HEAVY BLACK HEART
x (black heart suit - 2665)
+ ~ 2764 FE0E text style
+ ~ 2764 FE0F emoji style
2765 ROTATED HEAVY BLACK HEART BULLET
2766 FLORAL HEART
= Aldus leaf
@@ -15368,6 +15711,8 @@
27A1 BLACK RIGHTWARDS ARROW
* fonts may harmonize this glyph with the style for other black arrows
x (leftwards black arrow - 2B05)
+ ~ 27A1 FE0E text style
+ ~ 27A1 FE0F emoji style
27A2 THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
27A3 THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
27A4 BLACK RIGHTWARDS ARROWHEAD
@@ -15402,6 +15747,7 @@
27BE OPEN-OUTLINED RIGHTWARDS ARROW
@ Miscellaneous
27BF DOUBLE CURLY LOOP
+@~ Standardized Variation Sequences
@@ 27C0 Miscellaneous Mathematical Symbols-A 27EF
@ Miscellaneous symbols
27C0 THREE DIMENSIONAL ANGLE
@@ -15928,7 +16274,11 @@
x (rightwards wave arrow - 219D)
x (wave arrow pointing directly left - 2B3F)
2934 ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
+ ~ 2934 FE0E text style
+ ~ 2934 FE0F emoji style
2935 ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
+ ~ 2935 FE0E text style
+ ~ 2935 FE0F emoji style
2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
2937 ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
2938 RIGHT-SIDE ARC CLOCKWISE ARROW
@@ -16021,6 +16371,7 @@
297D RIGHT FISH TAIL
297E UP FISH TAIL
297F DOWN FISH TAIL
+@~ Standardized Variation Sequences
@@ 2980 Miscellaneous Mathematical Symbols-B 29FF
@ Miscellaneous mathematical symbols
2980 TRIPLE VERTICAL BAR DELIMITER
@@ -16346,9 +16697,11 @@
2A3B MULTIPLICATION SIGN IN TRIANGLE
2A3C INTERIOR PRODUCT
x (right floor - 230B)
+ ~ 2A3C FE00 tall variant with narrow foot
2A3D RIGHTHAND INTERIOR PRODUCT
x (left floor - 230A)
x (turned not sign - 2319)
+ ~ 2A3D FE00 tall variant with narrow foot
2A3E Z NOTATION RELATIONAL COMPOSITION
x (z notation schema composition - 2A1F)
2A3F AMALGAMATION OR COPRODUCT
@@ -16486,7 +16839,9 @@
2A9B DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
2A9C DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
2A9D SIMILAR OR LESS-THAN
+ ~ 2A9D FE00 with similar following the slant of the upper leg
2A9E SIMILAR OR GREATER-THAN
+ ~ 2A9E FE00 with similar following the slant of the upper leg
2A9F SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
2AA0 SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
2AA1 DOUBLE NESTED LESS-THAN
@@ -16504,7 +16859,9 @@
2AAA SMALLER THAN
2AAB LARGER THAN
2AAC SMALLER THAN OR EQUAL TO
+ ~ 2AAC FE00 with slanted equal
2AAD LARGER THAN OR EQUAL TO
+ ~ 2AAD FE00 with slanted equal
2AAE EQUALS SIGN WITH BUMPY ABOVE
x (difference between - 224F)
2AAF PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
@@ -16539,7 +16896,9 @@
2AC9 SUBSET OF ABOVE ALMOST EQUAL TO
2ACA SUPERSET OF ABOVE ALMOST EQUAL TO
2ACB SUBSET OF ABOVE NOT EQUAL TO
+ ~ 2ACB FE00 with stroke through bottom members
2ACC SUPERSET OF ABOVE NOT EQUAL TO
+ ~ 2ACC FE00 with stroke through bottom members
2ACD SQUARE LEFT OPEN BOX OPERATOR
2ACE SQUARE RIGHT OPEN BOX OPERATOR
2ACF CLOSED SUBSET
@@ -16647,6 +17006,7 @@
= Dijkstra choice
2AFF N-ARY WHITE VERTICAL BAR
= n-ary Dijkstra choice
+@~ Standardized Variation Sequences
@@ 2B00 Miscellaneous Symbols and Arrows 2BFF
@ White and black arrows
@+ Other white and black arrows to complete this set can be found in the Arrows and Dingbats blocks.
@@ -16659,8 +17019,14 @@
x (up down white arrow - 21F3)
2B05 LEFTWARDS BLACK ARROW
x (black rightwards arrow - 27A1)
+ ~ 2B05 FE0E text style
+ ~ 2B05 FE0F emoji style
2B06 UPWARDS BLACK ARROW
+ ~ 2B06 FE0E text style
+ ~ 2B06 FE0F emoji style
2B07 DOWNWARDS BLACK ARROW
+ ~ 2B07 FE0E text style
+ ~ 2B07 FE0F emoji style
2B08 NORTH EAST BLACK ARROW
2B09 NORTH WEST BLACK ARROW
2B0A SOUTH EAST BLACK ARROW
@@ -16688,8 +17054,12 @@
2B1A DOTTED SQUARE
2B1B BLACK LARGE SQUARE
x (black square - 25A0)
+ ~ 2B1B FE0E text style
+ ~ 2B1B FE0F emoji style
2B1C WHITE LARGE SQUARE
x (white square - 25A1)
+ ~ 2B1C FE0E text style
+ ~ 2B1C FE0F emoji style
2B1D BLACK VERY SMALL SQUARE
x (black small square - 25AA)
2B1E WHITE VERY SMALL SQUARE
@@ -16791,6 +17161,8 @@
@ Stars
2B50 WHITE MEDIUM STAR
x (star operator - 22C6)
+ ~ 2B50 FE0E text style
+ ~ 2B50 FE0F emoji style
2B51 BLACK SMALL STAR
x (arabic five pointed star - 066D)
2B52 WHITE SMALL STAR
@@ -16802,6 +17174,8 @@
= basic symbol for speed limit
* forms a game tally pair with 274C
x (large circle - 25EF)
+ ~ 2B55 FE0E text style
+ ~ 2B55 FE0F emoji style
@ Dictionary and map symbols from ARIB STD B24
2B56 HEAVY OVAL WITH OVAL INSIDE
= prefectural office
@@ -16814,6 +17188,7 @@
2B59 HEAVY CIRCLED SALTIRE
= police station
x (n-ary circled times operator - 2A02)
+@~ Standardized Variation Sequences
@@ 2C00 Glagolitic 2C5F
@ Capital letters
2C00 GLAGOLITIC CAPITAL LETTER AZU
@@ -17155,8 +17530,9 @@
2D23 GEORGIAN SMALL LETTER WE
2D24 GEORGIAN SMALL LETTER HAR
2D25 GEORGIAN SMALL LETTER HOE
-@ Additional letters for Ossetian
+@ Additional letter
2D27 GEORGIAN SMALL LETTER YN
+@ Additional letter for Ossetian
2D2D GEORGIAN SMALL LETTER AEN
@@ 2D30 Tifinagh 2D7F
@ Letters
@@ -18342,12 +18718,15 @@
x (squared rising diagonal slash - 29C4)
303D PART ALTERNATION MARK
* marks the start of a song part in Japanese
+ ~ 303D FE0E text style
+ ~ 303D FE0F emoji style
@ Special CJK indicators
@+ These are visibly displayed graphic characters, not invisible format control characters.
303E IDEOGRAPHIC VARIATION INDICATOR
* visual indicator that the following ideograph is to be taken as a variant of the intended character
303F IDEOGRAPHIC HALF FILL SPACE
* visual indicator of a screen space for half of an ideograph
+@~ Standardized Variation Sequences
@@ 3040 Hiragana 309F
@ Hiragana letters
3041 HIRAGANA LETTER SMALL A
@@ -19394,10 +19773,14 @@
3296 CIRCLED IDEOGRAPH FINANCIAL
# <circle> 8CA1
3297 CIRCLED IDEOGRAPH CONGRATULATION
+ ~ 3297 FE0E text style
+ ~ 3297 FE0F emoji style
# <circle> 795D
3298 CIRCLED IDEOGRAPH LABOR
# <circle> 52B4
3299 CIRCLED IDEOGRAPH SECRET
+ ~ 3299 FE0E text style
+ ~ 3299 FE0F emoji style
# <circle> 79D8
329A CIRCLED IDEOGRAPH MALE
# <circle> 7537
@@ -19607,6 +19990,7 @@
# <circle> 30F1
32FE CIRCLED KATAKANA WO
# <circle> 30F2
+@~ Standardized Variation Sequences
@@ 3300 CJK Compatibility 33FF
@ Squared Katakana words
3300 SQUARE APAATO
@@ -22127,12 +22511,12 @@ A6E6 BAMUM LETTER MO
A6E7 BAMUM LETTER MBAA
* also used for digit two
A6E8 BAMUM LETTER TET
- * tèt
+ * tèt
* also used for digit three
A6E9 BAMUM LETTER KPA
* also used for digit four
A6EA BAMUM LETTER TEN
- * tèn
+ * tèn
* also used for digit five
A6EB BAMUM LETTER NTUU
* also used for digit six
@@ -22511,6 +22895,7 @@ A855 PHAGS-PA LETTER ZA
x (tibetan letter za - 0F5F)
A856 PHAGS-PA LETTER SMALL A
x (tibetan letter -a - 0F60)
+ ~ A856 FE00 phags-pa letter reversed shaping small a
A857 PHAGS-PA LETTER YA
x (tibetan letter ya - 0F61)
A858 PHAGS-PA LETTER RA
@@ -22524,16 +22909,20 @@ A85B PHAGS-PA LETTER SA
x (tibetan letter sa - 0F66)
A85C PHAGS-PA LETTER HA
x (tibetan letter ha - 0F67)
+ ~ A85C FE00 phags-pa letter reversed shaping ha
@ Letter A
A85D PHAGS-PA LETTER A
x (tibetan letter a - 0F68)
@ Vowels
A85E PHAGS-PA LETTER I
x (tibetan vowel sign i - 0F72)
+ ~ A85E FE00 phags-pa letter reversed shaping i
A85F PHAGS-PA LETTER U
x (tibetan vowel sign u - 0F74)
+ ~ A85F FE00 phags-pa letter reversed shaping u
A860 PHAGS-PA LETTER E
x (tibetan vowel sign e - 0F7A)
+ ~ A860 FE00 phags-pa letter reversed shaping e
A861 PHAGS-PA LETTER O
x (tibetan vowel sign o - 0F7C)
@ Consonants
@@ -22557,6 +22946,7 @@ A867 PHAGS-PA SUBJOINED LETTER WA
A868 PHAGS-PA SUBJOINED LETTER YA
* Chinese, Tibetan, Sanskrit
x (tibetan subjoined letter ya - 0FB1)
+ ~ A868 FE00 phags-pa letter reversed shaping subjoined ya
@ Consonant additions for Sanskrit
A869 PHAGS-PA LETTER TTA
* Sanskrit
@@ -22613,6 +23003,7 @@ A876 PHAGS-PA MARK SHAD
A877 PHAGS-PA MARK DOUBLE SHAD
* Tibetan
x (tibetan mark nyis shad - 0F0E)
+@~ Standardized Variation Sequences
@@ A880 Saurashtra A8DF
@ Various signs
A880 SAURASHTRA SIGN ANUSVARA
@@ -23264,7 +23655,7 @@ AADE TAI VIET SYMBOL HO HOI
AADF TAI VIET SYMBOL KOI KOI
* marks end of text in songs and poems
@@ AAE0 Meetei Mayek Extensions AAFF
-@+ The characters in this block are extensions for historical orthographies of Meetei and are not specified in the Manupuri Government order No. 1/2/78-SS/E.
+@+ The characters in this block are extensions for historical orthographies of Meetei and are not specified in the Manipuri Government order No. 1/2/78-SS/E.
@ Independent vowel signs
AAE0 MEETEI MAYEK LETTER E
AAE1 MEETEI MAYEK LETTER O
@@ -23540,7 +23931,7 @@ D7FB HANGUL JONGSEONG PHIEUPH-THIEUTH
@@+
@+ This block, despite its name, contains a number of unified CJK ideographs. Those characters are individually identified by annotations.
@+ Subheaders identifying sources for subranges do not indicate required usage or preclude mappings to other sources. For example, many pronunciation variants from KS X 1001:1998 are also mapped to a J source.
-@ Pronunciation variants from KS X 1001:1998
+@ Pronunciation variants from KS X 1001:1998
F900 CJK COMPATIBILITY IDEOGRAPH-F900
: 8C48
F901 CJK COMPATIBILITY IDEOGRAPH-F901
@@ -28731,7 +29122,7 @@ FFFF <not a character>
1110D CHAKMA LETTER CHAA
= majaraa chaa
1110E CHAKMA LETTER JAA
- = dvipadalaa haa
+ = dvipadalaa jaa
1110F CHAKMA LETTER JHAA
= uraauraa jhaa
11110 CHAKMA LETTER NYAA
@@ -32635,7 +33026,7 @@ FFFF <not a character>
1D208 GREEK VOCAL NOTATION SYMBOL-9
= Greek instrumental notation symbol-44
* vocal second sharp of G
- * instrumental first sharp of e´
+ * instrumental first sharp of e´
1D209 GREEK VOCAL NOTATION SYMBOL-10
* vocal A
* this is a modification of 039F and is therefore not the same as 03D8
@@ -32648,7 +33039,7 @@ FFFF <not a character>
1D20D GREEK VOCAL NOTATION SYMBOL-14
= Greek instrumental notation symbol-41
* vocal first sharp of B
- * instrumental first sharp of d´
+ * instrumental first sharp of d´
x (latin capital letter v - 0056)
1D20E GREEK VOCAL NOTATION SYMBOL-15
= Greek instrumental notation symbol-35
@@ -32680,16 +33071,16 @@ FFFF <not a character>
1D217 GREEK VOCAL NOTATION SYMBOL-24
* vocal second sharp of e
1D218 GREEK VOCAL NOTATION SYMBOL-50
- * vocal first sharp of g´
+ * vocal first sharp of g´
1D219 GREEK VOCAL NOTATION SYMBOL-51
- * vocal second sharp of g´
+ * vocal second sharp of g´
1D21A GREEK VOCAL NOTATION SYMBOL-52
- * vocal a´
+ * vocal a´
1D21B GREEK VOCAL NOTATION SYMBOL-53
- * vocal first sharp of a´
+ * vocal first sharp of a´
1D21C GREEK VOCAL NOTATION SYMBOL-54
= Greek instrumental notation symbol-20
- * vocal second sharp of a´
+ * vocal second sharp of a´
* instrumental first sharp of d
@ Ancient Greek instrumental notation
1D21D GREEK INSTRUMENTAL NOTATION SYMBOL-1
@@ -32737,37 +33128,37 @@ FFFF <not a character>
1D232 GREEK INSTRUMENTAL NOTATION SYMBOL-36
* instrumental second sharp of b
1D233 GREEK INSTRUMENTAL NOTATION SYMBOL-37
- * instrumental c´
+ * instrumental c´
1D234 GREEK INSTRUMENTAL NOTATION SYMBOL-38
- * instrumental first sharp of c´
+ * instrumental first sharp of c´
1D235 GREEK INSTRUMENTAL NOTATION SYMBOL-39
- * instrumental second sharp of c´
+ * instrumental second sharp of c´
1D236 GREEK INSTRUMENTAL NOTATION SYMBOL-40
- * instrumental d´
+ * instrumental d´
1D237 GREEK INSTRUMENTAL NOTATION SYMBOL-42
- * instrumental second sharp of d´
+ * instrumental second sharp of d´
1D238 GREEK INSTRUMENTAL NOTATION SYMBOL-43
- * instrumental e´
+ * instrumental e´
1D239 GREEK INSTRUMENTAL NOTATION SYMBOL-45
- * instrumental second sharp of e´
+ * instrumental second sharp of e´
1D23A GREEK INSTRUMENTAL NOTATION SYMBOL-47
- * instrumental first sharp of f´
+ * instrumental first sharp of f´
* similar but not identical to 002F
1D23B GREEK INSTRUMENTAL NOTATION SYMBOL-48
- * instrumental second sharp of f´
+ * instrumental second sharp of f´
* similar but not identical to 005C
1D23C GREEK INSTRUMENTAL NOTATION SYMBOL-49
- * instrumental g´
+ * instrumental g´
1D23D GREEK INSTRUMENTAL NOTATION SYMBOL-50
- * instrumental first sharp of g´
+ * instrumental first sharp of g´
1D23E GREEK INSTRUMENTAL NOTATION SYMBOL-51
- * instrumental second sharp of g´
+ * instrumental second sharp of g´
1D23F GREEK INSTRUMENTAL NOTATION SYMBOL-52
- * instrumental a´
+ * instrumental a´
1D240 GREEK INSTRUMENTAL NOTATION SYMBOL-53
- * instrumental first sharp of a´
+ * instrumental first sharp of a´
1D241 GREEK INSTRUMENTAL NOTATION SYMBOL-54
- * instrumental second sharp of a´
+ * instrumental second sharp of a´
@ Further Greek musical notation symbols
1D242 COMBINING GREEK MUSICAL TRISEME
x (metrical triseme - 23D7)
@@ -35345,6 +35736,8 @@ FFFF <not a character>
@ Dragon tiles
1F004 MAHJONG TILE RED DRAGON
= hongzhong
+ ~ 1F004 FE0E text style
+ ~ 1F004 FE0F emoji style
1F005 MAHJONG TILE GREEN DRAGON
= qingfa
1F006 MAHJONG TILE WHITE DRAGON
@@ -35400,6 +35793,7 @@ FFFF <not a character>
1F02A MAHJONG TILE JOKER
= baida
1F02B MAHJONG TILE BACK
+@~ Standardized Variation Sequences
@@ 1F030 Domino Tiles 1F09F
@ Horizontal tiles
1F030 DOMINO TILE HORIZONTAL BACK
@@ -35539,10 +35933,10 @@ FFFF <not a character>
= chevalier, Ober, Ritter, cavall, cavaliere
= knight of swords
1F0AD PLAYING CARD QUEEN OF SPADES
- = dame, Dame, Königin, regina
+ = dame, Dame, Königin, regina
= queen of swords
1F0AE PLAYING CARD KING OF SPADES
- = roi, König, re
+ = roi, König, re
= king of swords
@ Hearts or cups
1F0B1 PLAYING CARD ACE OF HEARTS
@@ -35802,7 +36196,7 @@ FFFF <not a character>
= parking space (ARIB STD B24)
1F160 NEGATIVE CIRCLED LATIN CAPITAL LETTER Q
1F161 NEGATIVE CIRCLED LATIN CAPITAL LETTER R
- = Raststätte (rest stop)
+ = Raststätte (rest stop)
1F162 NEGATIVE CIRCLED LATIN CAPITAL LETTER S
= Stadtbahn (metropolitan railway)
1F163 NEGATIVE CIRCLED LATIN CAPITAL LETTER T
@@ -35823,7 +36217,7 @@ FFFF <not a character>
x (trade mark sign - 2122)
# <super> 004D 0043
1F16B RAISED MD SIGN
- = marque déposée
+ = marque déposée
* used in Canada
x (registered sign - 00AE)
# <super> 004D 0044
@@ -35856,6 +36250,8 @@ FFFF <not a character>
= blood type O
1F17F NEGATIVE SQUARED LATIN CAPITAL LETTER P
= parking space empty-full (ARIB STD B24)
+ ~ 1F17F FE0E text style
+ ~ 1F17F FE0F emoji style
1F180 NEGATIVE SQUARED LATIN CAPITAL LETTER Q
1F181 NEGATIVE SQUARED LATIN CAPITAL LETTER R
1F182 NEGATIVE SQUARED LATIN CAPITAL LETTER S
@@ -35927,6 +36323,7 @@ FFFF <not a character>
1F1FD REGIONAL INDICATOR SYMBOL LETTER X
1F1FE REGIONAL INDICATOR SYMBOL LETTER Y
1F1FF REGIONAL INDICATOR SYMBOL LETTER Z
+@~ Standardized Variation Sequences
@@ 1F200 Enclosed Ideographic Supplement 1F2FF
@ Squared hiragana from ARIB STD B24
1F200 SQUARE HIRAGANA HOKA
@@ -35975,6 +36372,8 @@ FFFF <not a character>
1F21A SQUARED CJK UNIFIED IDEOGRAPH-7121
= free broadcasting service
= non-existence sign
+ ~ 1F21A FE0E text style
+ ~ 1F21A FE0F emoji style
# <square> 7121
1F21B SQUARED CJK UNIFIED IDEOGRAPH-6599
= pay broadcasting service
@@ -36039,6 +36438,8 @@ FFFF <not a character>
1F22F SQUARED CJK UNIFIED IDEOGRAPH-6307
= designated hitter
= reserved sign
+ ~ 1F22F FE0E text style
+ ~ 1F22F FE0F emoji style
# <square> 6307
1F230 SQUARED CJK UNIFIED IDEOGRAPH-8D70
= runner
@@ -36111,6 +36512,7 @@ FFFF <not a character>
1F251 CIRCLED IDEOGRAPH ACCEPT
= accept sign
# <circle> 53EF
+@~ Standardized Variation Sequences
@@ 1F300 Miscellaneous Symbols and Pictographs 1F5FF
@ Weather, landscape, and sky symbols
1F300 CYCLONE
@@ -37326,7 +37728,7 @@ FFFF <not a character>
@@ 2A700 CJK Unified Ideographs Extension C 2B734
@@ 2B740 CJK Unified Ideographs Extension D 2B81D
@@ 2F800 CJK Compatibility Ideographs Supplement 2FA1F
-@ Duplicate characters from CNS 11643-1992
+@ Duplicate characters from CNS 11643-1992
2F800 CJK COMPATIBILITY IDEOGRAPH-2F800
: 4E3D
2F801 CJK COMPATIBILITY IDEOGRAPH-2F801
diff --git a/gnu/usr.bin/perl/lib/unicore/NormalizationCorrections.txt b/gnu/usr.bin/perl/lib/unicore/NormalizationCorrections.txt
index 61800b82adc..b53bb408a5b 100644
--- a/gnu/usr.bin/perl/lib/unicore/NormalizationCorrections.txt
+++ b/gnu/usr.bin/perl/lib/unicore/NormalizationCorrections.txt
@@ -1,10 +1,10 @@
-# NormalizationCorrections-6.1.0.txt
-# Date: 2011-06-23, 00:46:00 GMT [KW, LI]
+# NormalizationCorrections-6.2.0.txt
+# Date: 2012-05-15, 22:25:00 GMT [KW, LI]
#
# This file is a normative contributory data file in the
# Unicode Character Database.
#
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# The normalization stability policy of the Unicode Consortium
@@ -46,3 +46,5 @@ F951;96FB;964B;3.2.0 # Corrigendum 3
2F91F;43AB;243AB;4.0.0 # Corrigendum 4
2F95F;7AAE;7AEE;4.0.0 # Corrigendum 4
2F9BF;4D57;45D7;4.0.0 # Corrigendum 4
+
+# EOF
diff --git a/gnu/usr.bin/perl/lib/unicore/PropList.txt b/gnu/usr.bin/perl/lib/unicore/PropList.txt
index f9dcb2ae74a..9ce7eec9713 100644
--- a/gnu/usr.bin/perl/lib/unicore/PropList.txt
+++ b/gnu/usr.bin/perl/lib/unicore/PropList.txt
@@ -1,8 +1,8 @@
-# PropList-6.1.0.txt
-# Date: 2011-11-30, 01:49:54 GMT [MD]
+# PropList-6.2.0.txt
+# Date: 2012-05-23, 20:34:59 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
diff --git a/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt b/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt
index 2f7bde28ec8..d9048fb32f7 100644
--- a/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt
+++ b/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt
@@ -1,8 +1,8 @@
-# PropertyValueAliases-6.1.0.txt
-# Date: 2011-12-07, 23:40:57 GMT [MD]
+# PropertyValueAliases-6.2.0.txt
+# Date: 2012-08-14, 16:05:11 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
@@ -73,6 +73,7 @@ age; 5.1 ; V5_1
age; 5.2 ; V5_2
age; 6.0 ; V6_0
age; 6.1 ; V6_1
+age; 6.2 ; V6_2
age; NA ; Unassigned
# Alphabetic (Alpha)
@@ -382,7 +383,8 @@ ccc; 118; CCC118 ; CCC118
ccc; 122; CCC122 ; CCC122
ccc; 129; CCC129 ; CCC129
ccc; 130; CCC130 ; CCC130
-ccc; 132; CCC133 ; CCC133
+ccc; 132; CCC132 ; CCC132
+ccc; 133; CCC133 ; CCC133 # RESERVED
ccc; 200; ATBL ; Attached_Below_Left
ccc; 202; ATB ; Attached_Below
ccc; 214; ATA ; Attached_Above
@@ -592,6 +594,7 @@ GCB; LF ; LF
GCB; LV ; LV
GCB; LVT ; LVT
GCB; PP ; Prepend
+GCB; RI ; Regional_Indicator
GCB; SM ; SpacingMark
GCB; T ; T
GCB; V ; V
@@ -862,6 +865,7 @@ lb ; OP ; Open_Punctuation
lb ; PO ; Postfix_Numeric
lb ; PR ; Prefix_Numeric
lb ; QU ; Quotation
+lb ; RI ; Regional_Indicator
lb ; SA ; Complex_Context
lb ; SG ; Surrogate
lb ; SP ; Space
@@ -880,10 +884,6 @@ LOE; Y ; Yes ; T
Lower; N ; No ; F ; False
Lower; Y ; Yes ; T ; True
-# Lowercase_Mapping (lc)
-
-# @missing: 0000..10FFFF; Lowercase_Mapping; <code point>
-
# Math (Math)
Math; N ; No ; F ; False
@@ -1159,10 +1159,6 @@ SD ; Y ; Yes ; T
Term; N ; No ; F ; False
Term; Y ; Yes ; T ; True
-# Titlecase_Mapping (tc)
-
-# @missing: 0000..10FFFF; Titlecase_Mapping; <code point>
-
# Unicode_1_Name (na1)
# @missing: 0000..10FFFF; Unicode_1_Name; <none>
@@ -1177,10 +1173,6 @@ UIdeo; Y ; Yes ; T
Upper; N ; No ; F ; False
Upper; Y ; Yes ; T ; True
-# Uppercase_Mapping (uc)
-
-# @missing: 0000..10FFFF; Uppercase_Mapping; <code point>
-
# Variation_Selector (VS)
VS ; N ; No ; F ; False
@@ -1205,6 +1197,7 @@ WB ; ML ; MidLetter
WB ; MN ; MidNum
WB ; NL ; Newline
WB ; NU ; Numeric
+WB ; RI ; Regional_Indicator
WB ; XX ; Other
# XID_Continue (XIDC)
diff --git a/gnu/usr.bin/perl/lib/unicore/PropertyAliases.txt b/gnu/usr.bin/perl/lib/unicore/PropertyAliases.txt
index f891ff254e4..81a063b1f61 100644
--- a/gnu/usr.bin/perl/lib/unicore/PropertyAliases.txt
+++ b/gnu/usr.bin/perl/lib/unicore/PropertyAliases.txt
@@ -1,8 +1,8 @@
-# PropertyAliases-6.1.0.txt
-# Date: 2011-12-07, 23:40:57 GMT [MD]
+# PropertyAliases-6.2.0.txt
+# Date: 2012-05-20, 17:41:20 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
@@ -57,7 +57,6 @@ nv ; Numeric_Value
# ================================================
# String Properties
# ================================================
-bmg ; Bidi_Mirroring_Glyph
cf ; Case_Folding
cjkCompatibilityVariant ; kCompatibilityVariant
dm ; Decomposition_Mapping
@@ -74,6 +73,7 @@ uc ; Uppercase_Mapping
# ================================================
# Miscellaneous Properties
# ================================================
+bmg ; Bidi_Mirroring_Glyph
cjkIICore ; kIICore
cjkIRG_GSource ; kIRG_GSource
cjkIRG_HSource ; kIRG_HSource
diff --git a/gnu/usr.bin/perl/lib/unicore/README.perl b/gnu/usr.bin/perl/lib/unicore/README.perl
index 88152d2ccdc..d55bfed0156 100644
--- a/gnu/usr.bin/perl/lib/unicore/README.perl
+++ b/gnu/usr.bin/perl/lib/unicore/README.perl
@@ -1,27 +1,49 @@
-The *.txt files were copied from
+# Perl should compile and reasonably run any version of Unicode. That doesn't
+# mean that the test suite will run without showing errors. A few of the
+# very-Unicode specific test files have been modified to account for different
+# versions, but most have not. For example, some tests use characters that
+# aren't encoded in all Unicode versions; others have hard-coded the General
+# Categories that were correct at the time the test was written. Perl itself
+# will not compile under Unicode releases prior to 3.0 without a simple change to
+# Unicode::Normalize. mktables contains instructions for this, as well as other
+# hints for using older Unicode versions.
- ftp://www.unicode.org/Public/UNIDATA
+# The *.txt files were copied from
-with subdirectories 'extracted' and 'auxiliary'
+# ftp://www.unicode.org/Public/UNIDATA
-The Unihan files were not included due to space considerations. Also NOT
-included were any *.html files. It is possible to add the Unihan files, and
-edit mktables (see instructions near its beginning) to look at them.
+# (which always points to the latest version) with subdirectories 'extracted' and
+# 'auxiliary'. Older versions are located under Public with an appropriate name.
-The file 'version' should exist and be a single line with the Unicode version,
-like:
-5.2.0
+# The Unihan files were not included due to space considerations. Also NOT
+# included were any *.html files. It is possible to add the Unihan files, and
+# edit mktables (see instructions near its beginning) to look at them.
-To be 8.3 filesystem friendly, the names of some of the input files have been
-changed from the values that are in the Unicode DB. Not all of the Test files
-are currently used, so may not be present, so some of the mv's can fail. The
-.html Test files are not touched.
+# The file named 'version' should exist and be a single line with the Unicode
+# version, like:
+# 5.2.0
+
+# To be 8.3 filesystem friendly, the names of some of the input files have been
+# changed from the values that are in the Unicode DB. Not all of the Test
+# files are currently used, so may not be present, so some of the mv's can
+# fail. The .html Test files are not touched.
mv PropertyValueAliases.txt PropValueAliases.txt
mv NamedSequencesProv.txt NamedSqProv.txt
+mv NormalizationTest.txt NormTest.txt
mv DerivedAge.txt DAge.txt
mv DerivedCoreProperties.txt DCoreProperties.txt
mv DerivedNormalizationProps.txt DNormalizationProps.txt
+
+# Some early releases don't have the extracted directory, and hence these files
+# should be moved to it.
+mkdir extracted 2>/dev/null
+mv DerivedBidiClass.txt DerivedBinaryProperties.txt extracted 2>/dev/null
+mv DerivedCombiningClass.txt DerivedDecompositionType.txt extracted 2>/dev/null
+mv DerivedEastAsianWidth.txt DerivedGeneralCategory.txt extracted 2>/dev/null
+mv DerivedJoiningGroup.txt DerivedJoiningType.txt extracted 2>/dev/null
+mv DerivedLineBreak.txt DerivedNumericType.txt DerivedNumericValues.txt extracted 2>/dev/null
+
mv extracted/DerivedBidiClass.txt extracted/DBidiClass.txt
mv extracted/DerivedBinaryProperties.txt extracted/DBinaryProperties.txt
mv extracted/DerivedCombiningClass.txt extracted/DCombiningClass.txt
@@ -39,8 +61,8 @@ mv auxiliary/LineBreakTest.txt auxiliary/LBTest.txt
mv auxiliary/SentenceBreakTest.txt auxiliary/SBTest.txt
mv auxiliary/WordBreakTest.txt auxiliary/WBTest.txt
-If you have the Unihan database (5.2 and above), you should also do the
-following:
+# If you have the Unihan database (5.2 and above), you should also do the
+# following:
mv Unihan_DictionaryIndices.txt UnihanIndicesDictionary.txt
mv Unihan_DictionaryLikeData.txt UnihanDataDictionaryLike.txt
@@ -51,76 +73,74 @@ mv Unihan_RadicalStrokeCounts.txt UnihanRadicalStrokeCounts.txt
mv Unihan_Readings.txt UnihanReadings.txt
mv Unihan_Variants.txt UnihanVariants.txt
-If you download everything, the names of files that are not used by mktables
-are not changed by the above, and will not work correctly as-is on 8.3
-filesystems.
-
-mktables is used to generate the tables used by the rest of Perl. It will warn
-you about any *.txt files in the directory substructure that it doesn't know
-about. You should remove any so-identified, or edit mktables to add them to
-its lists to process. You can run
-
- mktables -globlist
-
-to have it try to process these tables generically.
-
-FOR PUMPKINS
-
-The files are inter-related. If you take the latest UnicodeData.txt, for
-example, but leave the older versions of other files, there can be subtle
-problems. So get everything available from Unicode, and delete those which
-aren't needed.
-
-When moving to a new version of Unicode, you need to update 'version' by hand
-
- p4 edit version
- ...
-
-You should look in the Unicode release notes (which are probably towards the
-bottom of http://www.unicode.org/reports/tr44/) to see if any properties have
-newly been moved to be Obsolete, Deprecated, or Stabilized. The full names for
-these should be added to the respective lists near the beginning of mktables,
-using an 'if' to add them for just this Unicode version going forward, so that
-mktables can continue to be used for earlier Unicode versions.
-
-When putting out a new Perl release, think about if any of the Deprecated
-properties should be moved to Suppressed.
-
-perlrecharclass.pod has a list of all the characters that are white space,
-which needs to be updated if there are changes. A quick way to check if there
-have been changes would be to see if the number of such characters listed in
-perluniprops.pod (generated by running mktables) for the property
-\p{White_Space} is no longer 26. Further investigation would then be necessary
-to classify the new characters as horizontal and vertical.
-
-The code in regexec.c for the \X match construct is intimately tied to the
-regular expression in UAX #29 (http://www.unicode.org/reports/tr29/). You
-should see if it has changed, and if so regexec.c should be modified. The
-current one is
-( CRLF
-| Prepend* ( Hangul-syllable | !Control )
- ( Grapheme_Extend | Spacing_Mark)*
-| . )
-
-mktables has many checks to warn you if there are unexpected or novel things
-that it doesn't know how to handle.
-
-perl.pod should be changed so that it gives the new name (which includes the
-Unicode release number) for perluniprops.pod
-
-Module::CoreList should be changed to include the new release
-
-Also, you should regen l1_char_class_tab.h, by
-
-perl regen/mk_L_charclass.pl
-
-and, regen charclass_invlists.h by
-
-perl regen/mk_invlists.pl
-
-Finally:
-
- p4 submit
-
---
-jhi@iki.fi; updated by nick@ccl4.org, public@khwilliamson.com
+# If you download everything, the names of files that are not used by mktables
+# are not changed by the above, and hence may not work correctly as-is on 8.3
+# filesystems.
+
+# mktables is used to generate the tables used by the rest of Perl. It will
+# warn you about any *.txt files in the directory substructure that it doesn't
+# know about. You should remove any so-identified, or edit mktables to add
+# them to its lists to process. You can run
+#
+# mktables -globlist
+#
+#to have it try to process these tables generically.
+#
+# FOR PUMPKINS
+#
+# The files are inter-related. If you take the latest UnicodeData.txt, for
+# example, but leave the older versions of other files, there can be subtle
+# problems. So get everything available from Unicode, and delete those which
+# aren't needed.
+#
+# When moving to a new version of Unicode, you need to update 'version' by hand
+#
+# p4 edit version
+# ...
+#
+# You should look in the Unicode release notes (which are probably towards the
+# bottom of http://www.unicode.org/reports/tr44/) to see if any properties have
+# newly been moved to be Obsolete, Deprecated, or Stabilized. The full names
+# for these should be added to the respective lists near the beginning of
+# mktables, using an 'if' to add them for just this Unicode version going
+# forward, so that mktables can continue to be used for earlier Unicode
+# versions.
+#
+# When putting out a new Perl release, think about if any of the Deprecated
+# properties should be moved to Suppressed.
+#
+# perlrecharclass.pod has a list of all the characters that are white space,
+# which needs to be updated if there are changes. A quick way to check if
+# there have been changes would be to see if the number of such characters
+# listed in perluniprops.pod (generated by running mktables) for the property
+# \p{White_Space} is no longer 26. Further investigation would then be
+# necessary to classify the new characters as horizontal and vertical.
+#
+# The code in regexec.c for the \X match construct is intimately tied to the
+# regular expression in UAX #29 (http://www.unicode.org/reports/tr29/). You
+# should see if it has changed, and if so regexec.c should be modified. The
+# current one is
+# ( CRLF
+# | Prepend* ( Hangul-syllable | !Control )
+# ( Grapheme_Extend | Spacing_Mark)*
+# | . )
+#
+# mktables has many checks to warn you if there are unexpected or novel things
+# that it doesn't know how to handle.
+#
+# Module::CoreList should be changed to include the new release
+#
+# Also, you should regen l1_char_class_tab.h, by
+#
+# perl regen/mk_L_charclass.pl
+#
+# and, regen charclass_invlists.h by
+#
+# perl regen/mk_invlists.pl
+#
+# Finally:
+#
+# p4 submit
+#
+# --
+# jhi@iki.fi; updated by nick@ccl4.org, public@khwilliamson.com
diff --git a/gnu/usr.bin/perl/lib/unicore/ReadMe.txt b/gnu/usr.bin/perl/lib/unicore/ReadMe.txt
index 9fd93d89604..370cbd0801e 100644
--- a/gnu/usr.bin/perl/lib/unicore/ReadMe.txt
+++ b/gnu/usr.bin/perl/lib/unicore/ReadMe.txt
@@ -1,4 +1,4 @@
-# Date: 2012-01-26, 22:03:00 GMT [KW]
+# Date: 2012-09-24, 22:40:00 GMT [KW]
#
# Unicode Character Database
# Copyright (c) 1991-2012 Unicode, Inc.
@@ -10,4 +10,6 @@
#
This directory contains final data files
-for the Unicode Character Database (UCD) for Unicode 6.1.0.
+for the Unicode Character Database (UCD) for Unicode 6.2.0.
+
+
diff --git a/gnu/usr.bin/perl/lib/unicore/ScriptExtensions.txt b/gnu/usr.bin/perl/lib/unicore/ScriptExtensions.txt
index 301ccc21f45..5bff07ece00 100644
--- a/gnu/usr.bin/perl/lib/unicore/ScriptExtensions.txt
+++ b/gnu/usr.bin/perl/lib/unicore/ScriptExtensions.txt
@@ -1,13 +1,12 @@
-# ScriptExtensions-6.1.0.txt
-# Date: 2011-12-05, 22:51:22 GMT [MD]
+# ScriptExtensions-6.2.0.txt
+# Date: 2012-08-13, 20:52:17 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
# The Script_Extensions property indicates which characters are commonly used
-# with a limited number of scripts, but with more than one.
-# The property is provisional: values are expected to change over time as more information becomes available.
+# with more than one script, but with a limited number of scripts.
# For each code point, there is one or more property values. Each such value is a Script property value.
# For more information, see:
# UAX #24: http://www.unicode.org/reports/tr24/ and
@@ -24,6 +23,38 @@
# ================================================
+# Script_Extensions=Deva
+
+1CD0..1CD2 ; Deva # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
+1CD4..1CE0 ; Deva # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
+1CE1 ; Deva # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
+1CE2..1CE8 ; Deva # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
+1CED ; Deva # Mn VEDIC SIGN TIRYAK
+1CF2..1CF3 ; Deva # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA
+1CF4 ; Deva # Mn VEDIC TONE CANDRA ABOVE
+
+# Total code points: 28
+
+# ================================================
+
+# Script_Extensions=Grek
+
+0342 ; Grek # Mn COMBINING GREEK PERISPOMENI
+0345 ; Grek # Mn COMBINING GREEK YPOGEGRAMMENI
+1DC0..1DC1 ; Grek # Mn [2] COMBINING DOTTED GRAVE ACCENT..COMBINING DOTTED ACUTE ACCENT
+
+# Total code points: 4
+
+# ================================================
+
+# Script_Extensions=Latn
+
+0363..036F ; Latn # Mn [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X
+
+# Total code points: 13
+
+# ================================================
+
# Script_Extensions=Arab Syrc
064B..0655 ; Arab Syrc # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
@@ -69,6 +100,22 @@ FDFD ; Arab Thaa # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHE
# ================================================
+# Script_Extensions=Cyrl Latn
+
+0485..0486 ; Cyrl Latn # Mn [2] COMBINING CYRILLIC DASIA PNEUMATA..COMBINING CYRILLIC PSILI PNEUMATA
+
+# Total code points: 2
+
+# ================================================
+
+# Script_Extensions=Deva Latn
+
+0951..0952 ; Deva Latn # Mn [2] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI STRESS SIGN ANUDATTA
+
+# Total code points: 2
+
+# ================================================
+
# Script_Extensions=Hira Kana
3031..3035 ; Hira Kana # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
@@ -123,17 +170,17 @@ FF9E..FF9F ; Hira Kana # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFW
# ================================================
-# Script_Extensions=Beng Deva Guru Orya
+# Script_Extensions=Buhd Hano Tagb Tglg
-0964..0965 ; Beng Deva Guru Orya # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
+1735..1736 ; Buhd Hano Tagb Tglg # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
# Total code points: 2
# ================================================
-# Script_Extensions=Buhd Hano Tagb Tglg
+# Script_Extensions=Beng Deva Guru Orya Takr
-1735..1736 ; Buhd Hano Tagb Tglg # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
+0964..0965 ; Beng Deva Guru Orya Takr # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
# Total code points: 2
diff --git a/gnu/usr.bin/perl/lib/unicore/Scripts.txt b/gnu/usr.bin/perl/lib/unicore/Scripts.txt
index 2516f889d66..1a8e7229cc6 100644
--- a/gnu/usr.bin/perl/lib/unicore/Scripts.txt
+++ b/gnu/usr.bin/perl/lib/unicore/Scripts.txt
@@ -1,8 +1,8 @@
-# Scripts-6.1.0.txt
-# Date: 2011-11-27, 05:10:50 GMT [MD]
+# Scripts-6.2.0.txt
+# Date: 2012-06-04, 17:21:29 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
@@ -146,7 +146,7 @@
208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS
208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS
-20A0..20B9 ; Common # Sc [26] EURO-CURRENCY SIGN..INDIAN RUPEE SIGN
+20A0..20BA ; Common # Sc [27] EURO-CURRENCY SIGN..TURKISH LIRA SIGN
2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
2102 ; Common # L& DOUBLE-STRUCK CAPITAL C
2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA
@@ -576,7 +576,7 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
E0001 ; Common # Cf LANGUAGE TAG
E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
-# Total code points: 6412
+# Total code points: 6413
# ================================================
@@ -760,7 +760,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU
061E ; Arabic # Po ARABIC TRIPLE DOT PUNCTUATION MARK
0620..063F ; Arabic # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
-0656..065E ; Arabic # Mn [9] ARABIC SUBSCRIPT ALEF..ARABIC FATHA WITH TWO DOTS
+0656..065F ; Arabic # Mn [10] ARABIC SUBSCRIPT ALEF..ARABIC WAVY HAMZA BELOW
066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
@@ -827,7 +827,7 @@ FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LA
1EEAB..1EEBB ; Arabic # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
1EEF0..1EEF1 ; Arabic # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
-# Total code points: 1234
+# Total code points: 1235
# ================================================
@@ -1477,7 +1477,6 @@ A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE
0300..036F ; Inherited # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
0485..0486 ; Inherited # Mn [2] COMBINING CYRILLIC DASIA PNEUMATA..COMBINING CYRILLIC PSILI PNEUMATA
064B..0655 ; Inherited # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
-065F ; Inherited # Mn ARABIC WAVY HAMZA BELOW
0670 ; Inherited # Mn ARABIC LETTER SUPERSCRIPT ALEF
0951..0952 ; Inherited # Mn [2] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI STRESS SIGN ANUDATTA
1CD0..1CD2 ; Inherited # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
@@ -1504,7 +1503,7 @@ FE20..FE26 ; Inherited # Mn [7] COMBINING LIGATURE LEFT HALF..COMBINING CON
1D1AA..1D1AD ; Inherited # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-# Total code points: 524
+# Total code points: 523
# ================================================
diff --git a/gnu/usr.bin/perl/lib/unicore/SpecialCasing.txt b/gnu/usr.bin/perl/lib/unicore/SpecialCasing.txt
index d650b6d9dcd..994043f01bf 100644
--- a/gnu/usr.bin/perl/lib/unicore/SpecialCasing.txt
+++ b/gnu/usr.bin/perl/lib/unicore/SpecialCasing.txt
@@ -1,8 +1,8 @@
-# SpecialCasing-6.1.0.txt
-# Date: 2011-11-27, 05:10:51 GMT [MD]
+# SpecialCasing-6.2.0.txt
+# Date: 2012-05-23, 20:35:15 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
diff --git a/gnu/usr.bin/perl/lib/unicore/StandardizedVariants.txt b/gnu/usr.bin/perl/lib/unicore/StandardizedVariants.txt
index 331b831e32a..179726550e5 100644
--- a/gnu/usr.bin/perl/lib/unicore/StandardizedVariants.txt
+++ b/gnu/usr.bin/perl/lib/unicore/StandardizedVariants.txt
@@ -1,5 +1,5 @@
-# StandardizedVariants-6.1.0.txt
-# Date: 2011-11-10, 20:28:00 GMT [KW, LI]
+# StandardizedVariants-6.2.0.txt
+# Date: 2012-05-15, 21:53:00 GMT [KW, LI]
#
# Specification of the variation sequences that are defined in the
# Unicode Standard.
@@ -7,7 +7,7 @@
# This file is a normative contributory data file in the
# Unicode Character Database.
#
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Standardized variation sequences are defined in this file.
@@ -21,7 +21,7 @@
#
# For more information on standardized variation sequences,
# see Section 16.4, Variation Selectors,
-# in The Unicode Standard, Version 6.1.
+# in The Unicode Standard, Version 6.2.
#
# For more information on the Ideographic Variation Database,
# see http://www.unicode.org/ivd/
diff --git a/gnu/usr.bin/perl/lib/unicore/UnicodeData.txt b/gnu/usr.bin/perl/lib/unicore/UnicodeData.txt
index 9f204050c6b..086379eb4f3 100644
--- a/gnu/usr.bin/perl/lib/unicore/UnicodeData.txt
+++ b/gnu/usr.bin/perl/lib/unicore/UnicodeData.txt
@@ -7190,6 +7190,7 @@
20B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;;
20B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;;
20B9;INDIAN RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+20BA;TURKISH LIRA SIGN;Sc;0;ET;;;;;N;;;;;
20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
@@ -18703,8 +18704,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;;
12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;;
-12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;;
-12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;;
+12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;216000;N;;;;;
+12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;432000;N;;;;;
12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;;
12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;;
12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;;
@@ -18739,8 +18740,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;
12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;
12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;
-12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;;
-12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;;
+12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;-1;N;;;;;
+12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;-1;N;;;;;
12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;
12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;
1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;
diff --git a/gnu/usr.bin/perl/lib/unicore/auxiliary/GCBTest.txt b/gnu/usr.bin/perl/lib/unicore/auxiliary/GCBTest.txt
index 33b859cbff5..90e15fed3ef 100644
--- a/gnu/usr.bin/perl/lib/unicore/auxiliary/GCBTest.txt
+++ b/gnu/usr.bin/perl/lib/unicore/auxiliary/GCBTest.txt
@@ -1,8 +1,8 @@
-# GraphemeBreakTest-6.1.0.txt
-# Date: 2011-12-07, 17:54:39 GMT [MD]
+# GraphemeBreakTest-6.2.0.txt
+# Date: 2012-08-22, 12:41:15 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
@@ -15,7 +15,7 @@
# × wherever there is not.
# <comment> the format can change, but currently it shows:
# - the sample character name
-# - (x) the Grapheme_Break property* for the sample character
+# - (x) the Grapheme_Cluster_Break property value for the sample character
# - [x] the rule that determines whether there is a break or not
#
# These samples may be extended or changed in the future.
@@ -42,6 +42,8 @@
÷ 0020 × 0308 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0020 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0020 × 0308 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0020 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0020 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0020 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0020 × 0308 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0020 ÷ D800 ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
@@ -68,6 +70,8 @@
÷ 000D ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 000D ÷ AC01 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 000D ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 000D ÷ 1F1E6 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 000D ÷ 0378 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
÷ 000D ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 000D ÷ D800 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <surrogate-D800> (Control) ÷ [0.3]
@@ -94,6 +98,8 @@
÷ 000A ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 000A ÷ AC01 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 000A ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 000A ÷ 1F1E6 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 000A ÷ 0378 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
÷ 000A ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 000A ÷ D800 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <surrogate-D800> (Control) ÷ [0.3]
@@ -120,6 +126,8 @@
÷ 0001 ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0001 ÷ AC01 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0001 ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0001 ÷ 1F1E6 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0001 ÷ 0378 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0001 ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0001 ÷ D800 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <surrogate-D800> (Control) ÷ [0.3]
@@ -146,6 +154,8 @@
÷ 0300 × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0300 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0300 × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0300 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0300 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0300 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0300 × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0300 ÷ D800 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
@@ -172,6 +182,8 @@
÷ 0903 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0903 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0903 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0903 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0903 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0903 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0903 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0903 ÷ D800 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
@@ -198,6 +210,8 @@
÷ 1100 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 1100 × AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 1100 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1100 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 1100 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 1100 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 1100 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 1100 ÷ D800 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
@@ -224,6 +238,8 @@
÷ 1160 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 1160 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 1160 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1160 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 1160 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 1160 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 1160 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 1160 ÷ D800 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
@@ -250,6 +266,8 @@
÷ 11A8 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 11A8 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 11A8 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 11A8 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 11A8 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 11A8 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 11A8 ÷ D800 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
@@ -276,6 +294,8 @@
÷ AC00 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ AC00 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ AC00 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ AC00 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ AC00 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ AC00 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ AC00 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ AC00 ÷ D800 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
@@ -302,10 +322,40 @@
÷ AC01 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ AC01 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ AC01 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ AC01 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ AC01 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ AC01 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ AC01 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ AC01 ÷ D800 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
÷ AC01 × 0308 ÷ D800 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 1F1E6 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 1F1E6 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F1E6 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F1E6 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 1F1E6 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1F1E6 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F1E6 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 1F1E6 ÷ 1160 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 1160 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 1F1E6 ÷ 11A8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 11A8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 1F1E6 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 1F1E6 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1F1E6 × 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 1F1E6 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 1F1E6 ÷ D800 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ D800 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
÷ 0378 ÷ 0020 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 0378 × 0308 ÷ 0020 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 0378 ÷ 000D ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
@@ -328,6 +378,8 @@
÷ 0378 × 0308 ÷ AC00 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0378 ÷ AC01 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0378 × 0308 ÷ AC01 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0378 ÷ 1F1E6 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0378 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0378 ÷ 0378 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0378 × 0308 ÷ 0378 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0378 ÷ D800 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
@@ -354,8 +406,23 @@
÷ D800 ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ D800 ÷ AC01 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ D800 ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ D800 ÷ 1F1E6 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ D800 ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ D800 ÷ 0378 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
÷ D800 ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ D800 ÷ D800 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] <surrogate-D800> (Control) ÷ [0.3]
÷ D800 ÷ 0308 ÷ D800 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-# Lines: 338
+÷ 0061 ÷ 1F1E6 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
+÷ 1F1F7 × 1F1FA ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) ÷ [0.3]
+÷ 1F1F7 × 1F1FA × 1F1F8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) ÷ [0.3]
+÷ 1F1F7 × 1F1FA × 1F1F8 × 1F1EA ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER E (Regional_Indicator) ÷ [0.3]
+÷ 1F1F7 × 1F1FA ÷ 200B ÷ 1F1F8 × 1F1EA ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) ÷ [5.0] ZERO WIDTH SPACE (Control) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER E (Regional_Indicator) ÷ [0.3]
+÷ 1F1E6 × 1F1E7 × 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3]
+÷ 1F1E6 × 200D ÷ 1F1E7 × 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [9.0] ZERO WIDTH JOINER (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3]
+÷ 1F1E6 × 1F1E7 × 200D ÷ 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [8.1] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [9.0] ZERO WIDTH JOINER (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3]
+÷ 0020 × 200D ÷ 0646 ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (Extend) ÷ [999.0] ARABIC LETTER NOON (Other) ÷ [0.3]
+÷ 0646 × 200D ÷ 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (Other) × [9.0] ZERO WIDTH JOINER (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+#
+# Lines: 402
+#
+# EOF
diff --git a/gnu/usr.bin/perl/lib/unicore/auxiliary/GraphemeBreakProperty.txt b/gnu/usr.bin/perl/lib/unicore/auxiliary/GraphemeBreakProperty.txt
index d3f480da599..948faa9d5c8 100644
--- a/gnu/usr.bin/perl/lib/unicore/auxiliary/GraphemeBreakProperty.txt
+++ b/gnu/usr.bin/perl/lib/unicore/auxiliary/GraphemeBreakProperty.txt
@@ -1,8 +1,8 @@
-# GraphemeBreakProperty-6.1.0.txt
-# Date: 2011-12-05, 16:44:15 GMT [MD]
+# GraphemeBreakProperty-6.2.0.txt
+# Date: 2012-08-13, 19:12:02 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
@@ -308,6 +308,12 @@ E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
# ================================================
+1F1E6..1F1FF ; Regional_Indicator # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
+
+# Total code points: 26
+
+# ================================================
+
0903 ; SpacingMark # Mc DEVANAGARI SIGN VISARGA
093B ; SpacingMark # Mc DEVANAGARI VOWEL SIGN OOE
093E..0940 ; SpacingMark # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
diff --git a/gnu/usr.bin/perl/lib/unicore/auxiliary/SentenceBreakProperty.txt b/gnu/usr.bin/perl/lib/unicore/auxiliary/SentenceBreakProperty.txt
index a5eb0b71c0c..f29dc4e1993 100644
--- a/gnu/usr.bin/perl/lib/unicore/auxiliary/SentenceBreakProperty.txt
+++ b/gnu/usr.bin/perl/lib/unicore/auxiliary/SentenceBreakProperty.txt
@@ -1,8 +1,8 @@
-# SentenceBreakProperty-6.1.0.txt
-# Date: 2011-11-27, 05:10:50 GMT [MD]
+# SentenceBreakProperty-6.2.0.txt
+# Date: 2012-05-23, 20:35:14 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
diff --git a/gnu/usr.bin/perl/lib/unicore/auxiliary/WordBreakProperty.txt b/gnu/usr.bin/perl/lib/unicore/auxiliary/WordBreakProperty.txt
index 7f3225c6a8c..2caa16b46bc 100644
--- a/gnu/usr.bin/perl/lib/unicore/auxiliary/WordBreakProperty.txt
+++ b/gnu/usr.bin/perl/lib/unicore/auxiliary/WordBreakProperty.txt
@@ -1,8 +1,8 @@
-# WordBreakProperty-6.1.0.txt
-# Date: 2011-11-27, 05:10:51 GMT [MD]
+# WordBreakProperty-6.2.0.txt
+# Date: 2012-08-13, 19:12:09 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
@@ -395,6 +395,12 @@ E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
# ================================================
+1F1E6..1F1FF ; Regional_Indicator # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
+
+# Total code points: 26
+
+# ================================================
+
00AD ; Format # Cf SOFT HYPHEN
0600..0604 ; Format # Cf [5] ARABIC NUMBER SIGN..ARABIC SIGN SAMVAT
06DD ; Format # Cf ARABIC END OF AYAH
diff --git a/gnu/usr.bin/perl/lib/unicore/extracted/DBidiClass.txt b/gnu/usr.bin/perl/lib/unicore/extracted/DBidiClass.txt
index 270a87e847e..eac65b659e9 100644
--- a/gnu/usr.bin/perl/lib/unicore/extracted/DBidiClass.txt
+++ b/gnu/usr.bin/perl/lib/unicore/extracted/DBidiClass.txt
@@ -1,8 +1,8 @@
-# DerivedBidiClass-6.1.0.txt
-# Date: 2011-12-11, 18:26:53 GMT [MD]
+# DerivedBidiClass-6.2.0.txt
+# Date: 2012-05-20, 00:42:30 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
@@ -807,8 +807,8 @@ FFDA..FFDC ; L # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER
F0000..FFFFD ; L # Co [65534] <private-use-F0000>..<private-use-FFFFD>
100000..10FFFD; L # Co [65534] <private-use-100000>..<private-use-10FFFD>
-# The above property value applies to 858960 code points not listed here.
-# Total code points: 1098531
+# The above property value applies to 858959 code points not listed here.
+# Total code points: 1098530
# ================================================
@@ -971,7 +971,7 @@ FF0D ; ES # Pd FULLWIDTH HYPHEN-MINUS
0E3F ; ET # Sc THAI CURRENCY SYMBOL BAHT
17DB ; ET # Sc KHMER CURRENCY SYMBOL RIEL
2030..2034 ; ET # Po [5] PER MILLE SIGN..TRIPLE PRIME
-20A0..20B9 ; ET # Sc [26] EURO-CURRENCY SIGN..INDIAN RUPEE SIGN
+20A0..20BA ; ET # Sc [27] EURO-CURRENCY SIGN..TURKISH LIRA SIGN
212E ; ET # So ESTIMATED SYMBOL
2213 ; ET # Sm MINUS-OR-PLUS SIGN
A838 ; ET # Sc NORTH INDIC RUPEE MARK
@@ -985,7 +985,7 @@ FF05 ; ET # Po FULLWIDTH PERCENT SIGN
FFE0..FFE1 ; ET # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
FFE5..FFE6 ; ET # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
-# Total code points: 65
+# Total code points: 66
# ================================================
diff --git a/gnu/usr.bin/perl/lib/unicore/extracted/DBinaryProperties.txt b/gnu/usr.bin/perl/lib/unicore/extracted/DBinaryProperties.txt
index 6d23c068a92..815904296df 100644
--- a/gnu/usr.bin/perl/lib/unicore/extracted/DBinaryProperties.txt
+++ b/gnu/usr.bin/perl/lib/unicore/extracted/DBinaryProperties.txt
@@ -1,8 +1,8 @@
-# DerivedBinaryProperties-6.1.0.txt
-# Date: 2011-07-25, 00:54:10 GMT [MD]
+# DerivedBinaryProperties-6.2.0.txt
+# Date: 2012-05-23, 20:34:43 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
diff --git a/gnu/usr.bin/perl/lib/unicore/extracted/DCombiningClass.txt b/gnu/usr.bin/perl/lib/unicore/extracted/DCombiningClass.txt
index 33495d2c507..36aed6ae62c 100644
--- a/gnu/usr.bin/perl/lib/unicore/extracted/DCombiningClass.txt
+++ b/gnu/usr.bin/perl/lib/unicore/extracted/DCombiningClass.txt
@@ -1,8 +1,8 @@
-# DerivedCombiningClass-6.1.0.txt
-# Date: 2011-12-05, 16:44:07 GMT [MD]
+# DerivedCombiningClass-6.2.0.txt
+# Date: 2012-08-13, 19:56:56 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
@@ -718,7 +718,7 @@
208D ; 0 # Ps SUBSCRIPT LEFT PARENTHESIS
208E ; 0 # Pe SUBSCRIPT RIGHT PARENTHESIS
2090..209C ; 0 # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
-20A0..20B9 ; 0 # Sc [26] EURO-CURRENCY SIGN..INDIAN RUPEE SIGN
+20A0..20BA ; 0 # Sc [27] EURO-CURRENCY SIGN..TURKISH LIRA SIGN
20DD..20E0 ; 0 # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
20E2..20E4 ; 0 # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
2100..2101 ; 0 # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
@@ -1514,7 +1514,7 @@ E0100..E01EF ; 0 # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
F0000..FFFFD ; 0 # Co [65534] <private-use-F0000>..<private-use-FFFFD>
100000..10FFFD; 0 # Co [65534] <private-use-100000>..<private-use-10FFFD>
-# The above property value applies to 866463 code points not listed here.
+# The above property value applies to 866462 code points not listed here.
# Total code points: 1113459
# ================================================
@@ -1893,7 +1893,7 @@ FB1E ; 26 # Mn HEBREW POINT JUDEO-SPANISH VARIKA
# ================================================
-# Canonical_Combining_Class=CCC133
+# Canonical_Combining_Class=CCC132
0F74 ; 132 # Mn TIBETAN VOWEL SIGN U
diff --git a/gnu/usr.bin/perl/lib/unicore/extracted/DDecompositionType.txt b/gnu/usr.bin/perl/lib/unicore/extracted/DDecompositionType.txt
index 7a40724f0cd..cb66baf3be2 100644
--- a/gnu/usr.bin/perl/lib/unicore/extracted/DDecompositionType.txt
+++ b/gnu/usr.bin/perl/lib/unicore/extracted/DDecompositionType.txt
@@ -1,8 +1,8 @@
-# DerivedDecompositionType-6.1.0.txt
-# Date: 2011-07-25, 00:54:13 GMT [MD]
+# DerivedDecompositionType-6.2.0.txt
+# Date: 2012-05-23, 20:34:46 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
diff --git a/gnu/usr.bin/perl/lib/unicore/extracted/DEastAsianWidth.txt b/gnu/usr.bin/perl/lib/unicore/extracted/DEastAsianWidth.txt
index f55967a2451..5d76aa63e33 100644
--- a/gnu/usr.bin/perl/lib/unicore/extracted/DEastAsianWidth.txt
+++ b/gnu/usr.bin/perl/lib/unicore/extracted/DEastAsianWidth.txt
@@ -1,8 +1,8 @@
-# DerivedEastAsianWidth-6.1.0.txt
-# Date: 2011-11-27, 05:10:22 GMT [MD]
+# DerivedEastAsianWidth-6.2.0.txt
+# Date: 2012-05-20, 00:42:33 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
@@ -519,9 +519,7 @@
10FB ; N # Po GEORGIAN PARAGRAPH SEPARATOR
10FC ; N # Lm MODIFIER LETTER GEORGIAN NAR
10FD..10FF ; N # Lo [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
-1160..11A2 ; N # Lo [67] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
-11A8..11F9 ; N # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
-1200..1248 ; N # Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA
+1160..1248 ; N # Lo [233] HANGUL JUNGSEONG FILLER..ETHIOPIC SYLLABLE QWA
124A..124D ; N # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
1250..1256 ; N # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
1258 ; N # Lo ETHIOPIC SYLLABLE QHWA
@@ -779,7 +777,7 @@
2090..209C ; N # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
20A0..20A8 ; N # Sc [9] EURO-CURRENCY SIGN..RUPEE SIGN
20AA..20AB ; N # Sc [2] NEW SHEQEL SIGN..DONG SIGN
-20AD..20B9 ; N # Sc [13] KIP SIGN..INDIAN RUPEE SIGN
+20AD..20BA ; N # Sc [14] KIP SIGN..TURKISH LIRA SIGN
20D0..20DC ; N # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
20DD..20E0 ; N # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
20E1 ; N # Mn COMBINING LEFT RIGHT ARROW ABOVE
@@ -1189,6 +1187,8 @@ ABEB ; N # Po MEETEI MAYEK CHEIKHEI
ABEC ; N # Mc MEETEI MAYEK LUM IYEK
ABED ; N # Mn MEETEI MAYEK APUN IYEK
ABF0..ABF9 ; N # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
+D7B0..D7C6 ; N # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+D7CB..D7FB ; N # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
FB00..FB06 ; N # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
FB13..FB17 ; N # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
FB1D ; N # Lo HEBREW LETTER YOD WITH HIRIQ
@@ -1466,8 +1466,8 @@ FFFC ; N # So OBJECT REPLACEMENT CHARACTER
E0001 ; N # Cf LANGUAGE TAG
E0020..E007F ; N # Cf [96] TAG SPACE..CANCEL TAG
-# The above property value applies to 782918 code points not listed here.
-# Total code points: 801811
+# The above property value applies to 782917 code points not listed here.
+# Total code points: 801894
# ================================================
@@ -1697,8 +1697,6 @@ FFED..FFEE ; H # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
# East_Asian_Width=Wide
1100..115F ; W # Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER
-11A3..11A7 ; W # Lo [5] HANGUL JUNGSEONG A-EU..HANGUL JUNGSEONG O-YAE
-11FA..11FF ; W # Lo [6] HANGUL JONGSEONG KIYEOK-NIEUN..HANGUL JONGSEONG SSANGNIEUN
2329 ; W # Ps LEFT-POINTING ANGLE BRACKET
232A ; W # Pe RIGHT-POINTING ANGLE BRACKET
2E80..2E99 ; W # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP
@@ -1783,8 +1781,6 @@ A016..A48C ; W # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
A490..A4C6 ; W # So [55] YI RADICAL QOT..YI RADICAL KE
A960..A97C ; W # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
AC00..D7A3 ; W # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
-D7B0..D7C6 ; W # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
-D7CB..D7FB ; W # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
F900..FA6D ; W # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
FA6E..FA6F ; W # Cn [2] <reserved-FA6E>..<reserved-FA6F>
FA70..FAD9 ; W # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
@@ -1848,7 +1844,7 @@ FE6A..FE6B ; W # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
2FA1E..2FFFD ; W # Cn [1504] <reserved-2FA1E>..<reserved-2FFFD>
30000..3FFFD ; W # Cn [65534] <reserved-30000>..<reserved-3FFFD>
-# Total code points: 173217
+# Total code points: 173134
# ================================================
diff --git a/gnu/usr.bin/perl/lib/unicore/extracted/DGeneralCategory.txt b/gnu/usr.bin/perl/lib/unicore/extracted/DGeneralCategory.txt
index 12a346f7537..546a6771372 100644
--- a/gnu/usr.bin/perl/lib/unicore/extracted/DGeneralCategory.txt
+++ b/gnu/usr.bin/perl/lib/unicore/extracted/DGeneralCategory.txt
@@ -1,8 +1,8 @@
-# DerivedGeneralCategory-6.1.0.txt
-# Date: 2011-11-27, 05:10:22 GMT [MD]
+# DerivedGeneralCategory-6.2.0.txt
+# Date: 2012-05-20, 00:42:34 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
@@ -275,7 +275,7 @@
2072..2073 ; Cn # [2] <reserved-2072>..<reserved-2073>
208F ; Cn # <reserved-208F>
209D..209F ; Cn # [3] <reserved-209D>..<reserved-209F>
-20BA..20CF ; Cn # [22] <reserved-20BA>..<reserved-20CF>
+20BB..20CF ; Cn # [21] <reserved-20BB>..<reserved-20CF>
20F1..20FF ; Cn # [15] <reserved-20F1>..<reserved-20FF>
218A..218F ; Cn # [6] <reserved-218A>..<reserved-218F>
23F4..23FF ; Cn # [12] <reserved-23F4>..<reserved-23FF>
@@ -554,7 +554,7 @@ E01F0..EFFFF ; Cn # [65040] <reserved-E01F0>..<noncharacter-EFFFF>
FFFFE..FFFFF ; Cn # [2] <noncharacter-FFFFE>..<noncharacter-FFFFF>
10FFFE..10FFFF; Cn # [2] <noncharacter-10FFFE>..<noncharacter-10FFFF>
-# Total code points: 864415
+# Total code points: 864414
# ================================================
@@ -3230,7 +3230,7 @@ FFE9..FFEC ; Sm # [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
0BF9 ; Sc # TAMIL RUPEE SIGN
0E3F ; Sc # THAI CURRENCY SYMBOL BAHT
17DB ; Sc # KHMER CURRENCY SYMBOL RIEL
-20A0..20B9 ; Sc # [26] EURO-CURRENCY SIGN..INDIAN RUPEE SIGN
+20A0..20BA ; Sc # [27] EURO-CURRENCY SIGN..TURKISH LIRA SIGN
A838 ; Sc # NORTH INDIC RUPEE MARK
FDFC ; Sc # RIAL SIGN
FE69 ; Sc # SMALL DOLLAR SIGN
@@ -3238,7 +3238,7 @@ FF04 ; Sc # FULLWIDTH DOLLAR SIGN
FFE0..FFE1 ; Sc # [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
FFE5..FFE6 ; Sc # [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
-# Total code points: 48
+# Total code points: 49
# ================================================
diff --git a/gnu/usr.bin/perl/lib/unicore/extracted/DJoinGroup.txt b/gnu/usr.bin/perl/lib/unicore/extracted/DJoinGroup.txt
index bf3f10c8eba..c1efad76c16 100644
--- a/gnu/usr.bin/perl/lib/unicore/extracted/DJoinGroup.txt
+++ b/gnu/usr.bin/perl/lib/unicore/extracted/DJoinGroup.txt
@@ -1,8 +1,8 @@
-# DerivedJoiningGroup-6.1.0.txt
-# Date: 2011-07-25, 00:54:14 GMT [MD]
+# DerivedJoiningGroup-6.2.0.txt
+# Date: 2012-05-23, 20:34:47 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
diff --git a/gnu/usr.bin/perl/lib/unicore/extracted/DJoinType.txt b/gnu/usr.bin/perl/lib/unicore/extracted/DJoinType.txt
index f9d7c7af9ce..f8cfd1d41db 100644
--- a/gnu/usr.bin/perl/lib/unicore/extracted/DJoinType.txt
+++ b/gnu/usr.bin/perl/lib/unicore/extracted/DJoinType.txt
@@ -1,8 +1,8 @@
-# DerivedJoiningType-6.1.0.txt
-# Date: 2011-11-27, 05:10:23 GMT [MD]
+# DerivedJoiningType-6.2.0.txt
+# Date: 2012-05-23, 20:34:48 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
diff --git a/gnu/usr.bin/perl/lib/unicore/extracted/DLineBreak.txt b/gnu/usr.bin/perl/lib/unicore/extracted/DLineBreak.txt
index c2bae071d5c..fb1fe48f44a 100644
--- a/gnu/usr.bin/perl/lib/unicore/extracted/DLineBreak.txt
+++ b/gnu/usr.bin/perl/lib/unicore/extracted/DLineBreak.txt
@@ -1,8 +1,8 @@
-# DerivedLineBreak-6.1.0.txt
-# Date: 2011-11-27, 05:10:24 GMT [MD]
+# DerivedLineBreak-6.2.0.txt
+# Date: 2012-08-13, 19:20:17 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
@@ -23,8 +23,8 @@ E000..F8FF ; XX # Co [6400] <private-use-E000>..<private-use-F8FF>
F0000..FFFFD ; XX # Co [65534] <private-use-F0000>..<private-use-FFFFD>
100000..10FFFD; XX # Co [65534] <private-use-100000>..<private-use-10FFFD>
-# The above property value applies to 780870 code points not listed here.
-# Total code points: 918338
+# The above property value applies to 780869 code points not listed here.
+# Total code points: 918337
# ================================================
@@ -347,7 +347,7 @@ FE13..FE14 ; IS # Po [2] PRESENTATION FORM FOR VERTICAL COLON..PRESENTATION
17DB ; PR # Sc KHMER CURRENCY SYMBOL RIEL
20A0..20A6 ; PR # Sc [7] EURO-CURRENCY SIGN..NAIRA SIGN
20A8..20B5 ; PR # Sc [14] RUPEE SIGN..CEDI SIGN
-20B7..20B9 ; PR # Sc [3] SPESMILO SIGN..INDIAN RUPEE SIGN
+20B7..20BA ; PR # Sc [4] SPESMILO SIGN..TURKISH LIRA SIGN
2116 ; PR # So NUMERO SIGN
2212..2213 ; PR # Sm [2] MINUS SIGN..MINUS-OR-PLUS SIGN
FE69 ; PR # Sc SMALL DOLLAR SIGN
@@ -355,7 +355,7 @@ FF04 ; PR # Sc FULLWIDTH DOLLAR SIGN
FFE1 ; PR # Sc FULLWIDTH POUND SIGN
FFE5..FFE6 ; PR # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
-# Total code points: 45
+# Total code points: 46
# ================================================
@@ -873,7 +873,8 @@ ABF0..ABF9 ; NU # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
2300..2307 ; AL # So [8] DIAMETER SIGN..WAVY LINE
2308..230B ; AL # Sm [4] LEFT CEILING..RIGHT FLOOR
230C..2311 ; AL # So [6] BOTTOM RIGHT CROP..SQUARE LOZENGE
-2313..231F ; AL # So [13] SEGMENT..BOTTOM RIGHT CORNER
+2313..2319 ; AL # So [7] SEGMENT..TURNED NOT SIGN
+231C..231F ; AL # So [4] TOP LEFT CORNER..BOTTOM RIGHT CORNER
2320..2321 ; AL # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
2322..2328 ; AL # So [7] FROWN..KEYBOARD
232B..237B ; AL # So [81] ERASE TO THE LEFT..NOT CHECK MARK
@@ -882,7 +883,7 @@ ABF0..ABF9 ; NU # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
239B..23B3 ; AL # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
23B4..23DB ; AL # So [40] TOP SQUARE BRACKET..FUSE
23DC..23E1 ; AL # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..23F3 ; AL # So [18] WHITE TRAPEZIUM..HOURGLASS WITH FLOWING SAND
+23E2..23EF ; AL # So [14] WHITE TRAPEZIUM..BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
2400..2426 ; AL # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
2440..244A ; AL # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
24FF ; AL # No NEGATIVE CIRCLED DIGIT ZERO
@@ -902,26 +903,27 @@ ABF0..ABF9 ; NU # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
25E6..25EE ; AL # So [9] WHITE BULLET..UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
25F0..25F7 ; AL # So [8] WHITE SQUARE WITH UPPER LEFT QUADRANT..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
25F8..25FF ; AL # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
-2600..2604 ; AL # So [5] BLACK SUN WITH RAYS..COMET
+2604 ; AL # So COMET
2607..2608 ; AL # So [2] LIGHTNING..THUNDERSTORM
260A..260D ; AL # So [4] ASCENDING NODE..OPPOSITION
2610..2613 ; AL # So [4] BALLOT BOX..SALTIRE
-2618..261B ; AL # So [4] SHAMROCK..BLACK RIGHT POINTING INDEX
-261D ; AL # So WHITE UP POINTING INDEX
-261F..263F ; AL # So [33] WHITE DOWN POINTING INDEX..MERCURY
+2619 ; AL # So REVERSED ROTATED FLORAL HEART BULLET
+2620..2638 ; AL # So [25] SKULL AND CROSSBONES..WHEEL OF DHARMA
+263C..263F ; AL # So [4] WHITE SUN WITH RAYS..MERCURY
2641 ; AL # So EARTH
2643..265F ; AL # So [29] JUPITER..BLACK CHESS PAWN
2662 ; AL # So WHITE DIAMOND SUIT
2666 ; AL # So BLACK DIAMOND SUIT
266B ; AL # So BEAMED EIGHTH NOTES
266E ; AL # So MUSIC NATURAL SIGN
-2670..269D ; AL # So [46] WEST SYRIAC CROSS..OUTLINED WHITE STAR
-26A0..26BD ; AL # So [30] WARNING SIGN..SOCCER BALL
-26C0..26C3 ; AL # So [4] WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING
+2670..267E ; AL # So [15] WEST SYRIAC CROSS..PERMANENT PAPER SIGN
+2680..269D ; AL # So [30] DIE FACE-1..OUTLINED WHITE STAR
+26A0..26BC ; AL # So [29] WARNING SIGN..SESQUIQUADRATE
26CE ; AL # So OPHIUCHUS
26E2 ; AL # So ASTRONOMICAL SYMBOL FOR URANUS
26E4..26E7 ; AL # So [4] PENTAGRAM..INVERTED PENTAGRAM
-2701..2756 ; AL # So [86] UPPER BLADE SCISSORS..BLACK DIAMOND MINUS WHITE X
+2705..2707 ; AL # So [3] WHITE HEAVY CHECK MARK..TAPE DRIVE
+270E..2756 ; AL # So [73] LOWER RIGHT PENCIL..BLACK DIAMOND MINUS WHITE X
2758..275A ; AL # So [3] LIGHT VERTICAL BAR..HEAVY VERTICAL BAR
275F..2761 ; AL # So [3] HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT..CURVED STEM PARAGRAPH SIGN ORNAMENT
2764..2767 ; AL # So [4] HEAVY BLACK HEART..ROTATED FLORAL HEART BULLET
@@ -1220,40 +1222,49 @@ FFED..FFEE ; AL # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
1EEA5..1EEA9 ; AL # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
1EEAB..1EEBB ; AL # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
1EEF0..1EEF1 ; AL # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
-1F000..1F02B ; AL # So [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
-1F030..1F093 ; AL # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
-1F0A0..1F0AE ; AL # So [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
-1F0B1..1F0BE ; AL # So [14] PLAYING CARD ACE OF HEARTS..PLAYING CARD KING OF HEARTS
-1F0C1..1F0CF ; AL # So [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
-1F0D1..1F0DF ; AL # So [15] PLAYING CARD ACE OF CLUBS..PLAYING CARD WHITE JOKER
1F12E ; AL # So CIRCLED WZ
1F16A..1F16B ; AL # So [2] RAISED MC SIGN..RAISED MD SIGN
-1F1E6..1F1FF ; AL # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
-1F300..1F320 ; AL # So [33] CYCLONE..SHOOTING STAR
-1F330..1F335 ; AL # So [6] CHESTNUT..CACTUS
-1F337..1F37C ; AL # So [70] TULIP..BABY BOTTLE
-1F380..1F393 ; AL # So [20] RIBBON..GRADUATION CAP
-1F3A0..1F3C4 ; AL # So [37] CAROUSEL HORSE..SURFER
-1F3C6..1F3CA ; AL # So [5] TROPHY..SWIMMER
-1F3E0..1F3F0 ; AL # So [17] HOUSE BUILDING..EUROPEAN CASTLE
-1F400..1F43E ; AL # So [63] RAT..PAW PRINTS
-1F440 ; AL # So EYES
-1F442..1F4F7 ; AL # So [182] EAR..CAMERA
-1F4F9..1F4FC ; AL # So [4] VIDEO CAMERA..VIDEOCASSETTE
-1F500..1F53D ; AL # So [62] TWISTED RIGHTWARDS ARROWS..DOWN-POINTING SMALL RED TRIANGLE
+1F3B5..1F3B6 ; AL # So [2] MUSICAL NOTE..MULTIPLE MUSICAL NOTES
+1F3BC ; AL # So MUSICAL SCORE
+1F4A0 ; AL # So DIAMOND SHAPE WITH A DOT INSIDE
+1F4A2 ; AL # So ANGER SYMBOL
+1F4A4 ; AL # So SLEEPING SYMBOL
+1F4AF ; AL # So HUNDRED POINTS SYMBOL
+1F4B1..1F4B2 ; AL # So [2] CURRENCY EXCHANGE..HEAVY DOLLAR SIGN
+1F500..1F506 ; AL # So [7] TWISTED RIGHTWARDS ARROWS..HIGH BRIGHTNESS SYMBOL
+1F517..1F524 ; AL # So [14] LINK SYMBOL..INPUT SYMBOL FOR LATIN LETTERS
+1F532..1F53D ; AL # So [12] BLACK SQUARE BUTTON..DOWN-POINTING SMALL RED TRIANGLE
1F540..1F543 ; AL # So [4] CIRCLED CROSS POMMEE..NOTCHED LEFT SEMICIRCLE WITH THREE DOTS
-1F550..1F567 ; AL # So [24] CLOCK FACE ONE OCLOCK..CLOCK FACE TWELVE-THIRTY
-1F5FB..1F640 ; AL # So [70] MOUNT FUJI..WEARY CAT FACE
-1F645..1F64F ; AL # So [11] FACE WITH NO GOOD GESTURE..PERSON WITH FOLDED HANDS
-1F680..1F6C5 ; AL # So [70] ROCKET..LEFT LUGGAGE
1F700..1F773 ; AL # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
-# Total code points: 16251
+# Total code points: 15355
# ================================================
# Line_Break=Ideographic
+231A..231B ; ID # So [2] WATCH..HOURGLASS
+23F0..23F3 ; ID # So [4] ALARM CLOCK..HOURGLASS WITH FLOWING SAND
+2600..2603 ; ID # So [4] BLACK SUN WITH RAYS..SNOWMAN
+2614..2615 ; ID # So [2] UMBRELLA WITH RAIN DROPS..HOT BEVERAGE
+2618 ; ID # So SHAMROCK
+261A..261F ; ID # So [6] BLACK LEFT POINTING INDEX..WHITE DOWN POINTING INDEX
+2639..263B ; ID # So [3] WHITE FROWNING FACE..BLACK SMILING FACE
+2668 ; ID # So HOT SPRINGS
+267F ; ID # So WHEELCHAIR SYMBOL
+26BD..26C8 ; ID # So [12] SOCCER BALL..THUNDER CLOUD AND RAIN
+26CD ; ID # So DISABLED CAR
+26CF..26D1 ; ID # So [3] PICK..HELMET WITH WHITE CROSS
+26D3..26D4 ; ID # So [2] CHAINS..NO ENTRY
+26D8..26D9 ; ID # So [2] BLACK LEFT LANE MERGE..WHITE LEFT LANE MERGE
+26DC ; ID # So LEFT CLOSED ENTRY
+26DF..26E1 ; ID # So [3] BLACK TRUCK..RESTRICTED LEFT ENTRY-2
+26EA ; ID # So CHURCH
+26F1..26F5 ; ID # So [5] UMBRELLA ON GROUND..SAILBOAT
+26F7..26FA ; ID # So [4] SKIER..TENT
+26FD..26FF ; ID # So [3] FUEL PUMP..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
+2701..2704 ; ID # So [4] UPPER BLADE SCISSORS..WHITE SCISSORS
+2708..270D ; ID # So [6] AIRPLANE..WRITING HAND
2E80..2E99 ; ID # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP
2E9B..2EF3 ; ID # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
2F00..2FD5 ; ID # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
@@ -1359,10 +1370,40 @@ FFE2 ; ID # Sm FULLWIDTH NOT SIGN
FFE3 ; ID # Sk FULLWIDTH MACRON
FFE4 ; ID # So FULLWIDTH BROKEN BAR
1B000..1B001 ; ID # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
+1F000..1F02B ; ID # So [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
+1F030..1F093 ; ID # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
+1F0A0..1F0AE ; ID # So [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
+1F0B1..1F0BE ; ID # So [14] PLAYING CARD ACE OF HEARTS..PLAYING CARD KING OF HEARTS
+1F0C1..1F0CF ; ID # So [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
+1F0D1..1F0DF ; ID # So [15] PLAYING CARD ACE OF CLUBS..PLAYING CARD WHITE JOKER
1F200..1F202 ; ID # So [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
1F210..1F23A ; ID # So [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
1F240..1F248 ; ID # So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
1F250..1F251 ; ID # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
+1F300..1F320 ; ID # So [33] CYCLONE..SHOOTING STAR
+1F330..1F335 ; ID # So [6] CHESTNUT..CACTUS
+1F337..1F37C ; ID # So [70] TULIP..BABY BOTTLE
+1F380..1F393 ; ID # So [20] RIBBON..GRADUATION CAP
+1F3A0..1F3B4 ; ID # So [21] CAROUSEL HORSE..FLOWER PLAYING CARDS
+1F3B7..1F3BB ; ID # So [5] SAXOPHONE..VIOLIN
+1F3BD..1F3C4 ; ID # So [8] RUNNING SHIRT WITH SASH..SURFER
+1F3C6..1F3CA ; ID # So [5] TROPHY..SWIMMER
+1F3E0..1F3F0 ; ID # So [17] HOUSE BUILDING..EUROPEAN CASTLE
+1F400..1F43E ; ID # So [63] RAT..PAW PRINTS
+1F440 ; ID # So EYES
+1F442..1F49F ; ID # So [94] EAR..HEART DECORATION
+1F4A1 ; ID # So ELECTRIC LIGHT BULB
+1F4A3 ; ID # So BOMB
+1F4A5..1F4AE ; ID # So [10] COLLISION SYMBOL..WHITE FLOWER
+1F4B0 ; ID # So MONEY BAG
+1F4B3..1F4F7 ; ID # So [69] CREDIT CARD..CAMERA
+1F4F9..1F4FC ; ID # So [4] VIDEO CAMERA..VIDEOCASSETTE
+1F507..1F516 ; ID # So [16] SPEAKER WITH CANCELLATION STROKE..BOOKMARK
+1F525..1F531 ; ID # So [13] FIRE..TRIDENT EMBLEM
+1F550..1F567 ; ID # So [24] CLOCK FACE ONE OCLOCK..CLOCK FACE TWELVE-THIRTY
+1F5FB..1F640 ; ID # So [70] MOUNT FUJI..WEARY CAT FACE
+1F645..1F64F ; ID # So [11] FACE WITH NO GOOD GESTURE..PERSON WITH FOLDED HANDS
+1F680..1F6C5 ; ID # So [70] ROCKET..LEFT LUGGAGE
20000..2A6D6 ; ID # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
2A6D7..2A6FF ; ID # Cn [41] <reserved-2A6D7>..<reserved-2A6FF>
2A700..2B734 ; ID # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
@@ -1373,7 +1414,7 @@ FFE4 ; ID # So FULLWIDTH BROKEN BAR
2FA1E..2FFFD ; ID # Cn [1504] <reserved-2FA1E>..<reserved-2FFFD>
30000..3FFFD ; ID # Cn [65534] <reserved-30000>..<reserved-3FFFD>
-# Total code points: 161793
+# Total code points: 162700
# ================================================
@@ -2057,22 +2098,26 @@ AADE..AADF ; SA # Po [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI KOI
2605..2606 ; AI # So [2] BLACK STAR..WHITE STAR
2609 ; AI # So SUN
260E..260F ; AI # So [2] BLACK TELEPHONE..WHITE TELEPHONE
-2614..2617 ; AI # So [4] UMBRELLA WITH RAIN DROPS..BLACK SHOGI PIECE
-261C ; AI # So WHITE LEFT POINTING INDEX
-261E ; AI # So WHITE RIGHT POINTING INDEX
+2616..2617 ; AI # So [2] WHITE SHOGI PIECE..BLACK SHOGI PIECE
2640 ; AI # So FEMALE SIGN
2642 ; AI # So MALE SIGN
2660..2661 ; AI # So [2] BLACK SPADE SUIT..WHITE HEART SUIT
2663..2665 ; AI # So [3] BLACK CLUB SUIT..BLACK HEART SUIT
-2667..266A ; AI # So [4] WHITE CLUB SUIT..EIGHTH NOTE
+2667 ; AI # So WHITE CLUB SUIT
+2669..266A ; AI # So [2] QUARTER NOTE..EIGHTH NOTE
266C..266D ; AI # So [2] BEAMED SIXTEENTH NOTES..MUSIC FLAT SIGN
266F ; AI # Sm MUSIC SHARP SIGN
269E..269F ; AI # So [2] THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT
-26BE..26BF ; AI # So [2] BASEBALL..SQUARED KEY
-26C4..26CD ; AI # So [10] SNOWMAN WITHOUT SNOW..DISABLED CAR
-26CF..26E1 ; AI # So [19] PICK..RESTRICTED LEFT ENTRY-2
+26C9..26CC ; AI # So [4] TURNED WHITE SHOGI PIECE..CROSSING LANES
+26D2 ; AI # So CIRCLED CROSSING LANES
+26D5..26D7 ; AI # So [3] ALTERNATE ONE-WAY LEFT WAY TRAFFIC..WHITE TWO-WAY LEFT WAY TRAFFIC
+26DA..26DB ; AI # So [2] DRIVE SLOW SIGN..HEAVY WHITE DOWN-POINTING TRIANGLE
+26DD..26DE ; AI # So [2] SQUARED SALTIRE..FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE
26E3 ; AI # So HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE
-26E8..26FF ; AI # So [24] BLACK CROSS ON SHIELD..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
+26E8..26E9 ; AI # So [2] BLACK CROSS ON SHIELD..SHINTO SHRINE
+26EB..26F0 ; AI # So [6] CASTLE..MOUNTAIN
+26F6 ; AI # So SQUARE FOUR CORNERS
+26FB..26FC ; AI # So [2] JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL
2757 ; AI # So HEAVY EXCLAMATION MARK SYMBOL
2776..2793 ; AI # No [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
2B55..2B59 ; AI # So [5] HEAVY LARGE CIRCLE..HEAVY CIRCLED SALTIRE
@@ -2083,7 +2128,7 @@ FFFD ; AI # So REPLACEMENT CHARACTER
1F130..1F169 ; AI # So [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
1F170..1F19A ; AI # So [43] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VS
-# Total code points: 724
+# Total code points: 687
# ================================================
@@ -3025,4 +3070,12 @@ FF70 ; CJ # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
# Total code points: 51
+# ================================================
+
+# Line_Break=Regional_Indicator
+
+1F1E6..1F1FF ; RI # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
+
+# Total code points: 26
+
# EOF
diff --git a/gnu/usr.bin/perl/lib/unicore/extracted/DNumType.txt b/gnu/usr.bin/perl/lib/unicore/extracted/DNumType.txt
index 92866603e78..23d2186a992 100644
--- a/gnu/usr.bin/perl/lib/unicore/extracted/DNumType.txt
+++ b/gnu/usr.bin/perl/lib/unicore/extracted/DNumType.txt
@@ -1,8 +1,8 @@
-# DerivedNumericType-6.1.0.txt
-# Date: 2011-08-23, 00:47:14 GMT [MD]
+# DerivedNumericType-6.2.0.txt
+# Date: 2012-08-13, 19:20:20 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
@@ -131,9 +131,7 @@ F9FD ; Numeric # Lo CJK COMPATIBILITY IDEOGRAPH-F9FD
10B78..10B7F ; Numeric # No [8] INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
10E69..10E7E ; Numeric # No [22] RUMI NUMBER TEN..RUMI FRACTION TWO THIRDS
1105B..11065 ; Numeric # No [11] BRAHMI NUMBER TEN..BRAHMI NUMBER ONE THOUSAND
-12400..12431 ; Numeric # Nl [50] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN FIVE SHARU
-12434..12455 ; Numeric # Nl [34] CUNEIFORM NUMERIC SIGN ONE BURU..CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM
-12458..12462 ; Numeric # Nl [11] CUNEIFORM NUMERIC SIGN ONE ESHE3..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+12400..12462 ; Numeric # Nl [99] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
1D360..1D371 ; Numeric # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
20001 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-20001
20064 ; Numeric # Lo CJK UNIFIED IDEOGRAPH-20064
@@ -152,7 +150,7 @@ F9FD ; Numeric # Lo CJK COMPATIBILITY IDEOGRAPH-F9FD
2626D ; Numeric # Lo CJK UNIFIED IDEOGRAPH-2626D
2F890 ; Numeric # Lo CJK COMPATIBILITY IDEOGRAPH-2F890
-# Total code points: 637
+# Total code points: 641
# ================================================
diff --git a/gnu/usr.bin/perl/lib/unicore/extracted/DNumValues.txt b/gnu/usr.bin/perl/lib/unicore/extracted/DNumValues.txt
index 02d408eb4b6..517bede77b9 100644
--- a/gnu/usr.bin/perl/lib/unicore/extracted/DNumValues.txt
+++ b/gnu/usr.bin/perl/lib/unicore/extracted/DNumValues.txt
@@ -1,33 +1,41 @@
-# DerivedNumericValues-6.1.0.txt
-# Date: 2011-08-19, 17:58:36 GMT [MD]
+# DerivedNumericValues-6.2.0.txt
+# Date: 2012-08-13, 19:20:22 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
# ================================================
# Derived Property: Numeric_Value
-# The values are based on field 8 of UnicodeData.txt, plus the fields
-# kAccountingNumeric, kOtherNumeric, kPrimaryNumeric in the Unicode Han Database (Unihan).
-# The derivations for these values are as follows.
-# Numeric_Value = the value of kAccountingNumeric, kOtherNumeric, or kPrimaryNumeric, if they exist; otherwise
-# Numeric_Value = the value of field 8, if it exists; otherwise
-# Numeric_Value = NaN
+# Field 1:
+# The values are based on field 8 of UnicodeData.txt, plus the fields
+# kAccountingNumeric, kOtherNumeric, kPrimaryNumeric in the Unicode Han Database (Unihan).
+# The derivations for these values are as follows.
+# Numeric_Value = the value of kAccountingNumeric, kOtherNumeric, or kPrimaryNumeric, if they exist; otherwise
+# Numeric_Value = the value of field 8, if it exists; otherwise
+# Numeric_Value = NaN
+# Field 2:
+# This field is empty; it used to be a copy of the numeric type.
#
-# WARNING: Certain values, such as 0.16666667, are repeating fractions
+# Field 3:
+# This field was added to this extracted data as of Unicode 5.1.0,
+# expressing the same numeric value either as a whole integer
+# where possible, or as a rational fraction such as "1/6".
+#
+# WARNING: Certain values, such as 0.16666667, are repeating fractions.
# Although they are only printed with a limited number of decimal places
# in this file, they should be expressed to the limits of the precision
# available when used.
#
-# The third field is empty; it used to be a copy of the numeric type.
-#
-# A fourth field was added to this extracted data as of
-# Unicode 5.1.0, expressing the same numeric value either as
-# a whole integer where possible or as a rational fraction, e.g. "1/6".
-#
-# @missing: 0000..10FFFF; ; NaN
+# @missing: 0000..10FFFF; NaN; ; NaN
+
+# ================================================
+
+12456..12457 ; -1.0 ; ; -1 # Nl [2] CUNEIFORM NUMERIC SIGN NIGIDAMIN..CUNEIFORM NUMERIC SIGN NIGIDAESH
+
+# Total code points: 2
# ================================================
@@ -1776,6 +1784,18 @@ F9FD ; 10.0 ; ; 10 # Lo CJK COMPATIBILITY IDEOGRAPH-F9FD
# ================================================
+12432 ; 216000.0 ; ; 216000 # Nl CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH
+
+# Total code points: 1
+
+# ================================================
+
+12433 ; 432000.0 ; ; 432000 # Nl CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN
+
+# Total code points: 1
+
+# ================================================
+
4EBF ; 100000000.0 ; ; 100000000 # Lo CJK UNIFIED IDEOGRAPH-4EBF
5104 ; 100000000.0 ; ; 100000000 # Lo CJK UNIFIED IDEOGRAPH-5104
diff --git a/gnu/usr.bin/perl/lib/unicore/mktables b/gnu/usr.bin/perl/lib/unicore/mktables
index 458d4ec26d3..808760d002c 100644
--- a/gnu/usr.bin/perl/lib/unicore/mktables
+++ b/gnu/usr.bin/perl/lib/unicore/mktables
@@ -40,7 +40,7 @@ my $debugging_build = $Config{"ccflags"} =~ /-DDEBUGGING/;
#
# mktables -- create the runtime Perl Unicode files (lib/unicore/.../*.pl),
# from the Unicode database files (lib/unicore/.../*.txt), It also generates
-# a pod file and a .t file
+# a pod file and .t files, depending on option parameters.
#
# The structure of this file is:
# First these introductory comments; then
@@ -52,10 +52,10 @@ my $debugging_build = $Config{"ccflags"} =~ /-DDEBUGGING/;
# the small actual loop to process the input files and finish up; then
# a __DATA__ section, for the .t tests
#
-# This program works on all releases of Unicode through at least 6.0. The
-# outputs have been scrutinized most intently for release 5.1. The others
-# have been checked for somewhat more than just sanity. It can handle all
-# existing Unicode character properties in those releases.
+# This program works on all releases of Unicode so far. The outputs have been
+# scrutinized most intently for release 5.1. The others have been checked for
+# somewhat more than just sanity. It can handle all non-provisional Unicode
+# character properties in those releases.
#
# This program is mostly about Unicode character (or code point) properties.
# A property describes some attribute or quality of a code point, like if it
@@ -65,8 +65,8 @@ my $debugging_build = $Config{"ccflags"} =~ /-DDEBUGGING/;
# into some corresponding value. In the case of it being lowercase or not,
# the mapping is either to 'Y' or 'N' (or various synonyms thereof). Each
# property maps each Unicode code point to a single value, called a "property
-# value". (Hence each Unicode property is a true mathematical function with
-# exactly one value per code point.)
+# value". (Some more recently defined properties, map a code point to a set
+# of values.)
#
# When using a property in a regular expression, what is desired isn't the
# mapping of the code point to its property's value, but the reverse (or the
@@ -119,7 +119,7 @@ my $map_directory = 'To'; # Where map files go.
# are for mappings that don't fit into the normal scheme of things. Mappings
# that require a hash entry to communicate with utf8.c are one example;
# another example is mappings for charnames.pm to use which indicate a name
-# that is algorithmically determinable from its code point (and vice-versa).
+# that is algorithmically determinable from its code point (and the reverse).
# These are used to significantly compact these tables, instead of listing
# each one of the tens of thousands individually.
#
@@ -131,8 +131,8 @@ my $map_directory = 'To'; # Where map files go.
#
# Actually, there are two types of range lists, "Range_Map" is the one
# associated with map tables, and "Range_List" with match tables.
-# Again, this is so that methods can be defined on one and not the other so as
-# to prevent operating on them in incorrect ways.
+# Again, this is so that methods can be defined on one and not the others so
+# as to prevent operating on them in incorrect ways.
#
# Eventually, most tables are written out to files to be read by utf8_heavy.pl
# in the perl core. All tables could in theory be written, but some are
@@ -154,24 +154,29 @@ my $map_directory = 'To'; # Where map files go.
# takes every code point and maps it to Y or N (but having ranges cuts the
# number of entries in that table way down), and two match tables, one
# which has a list of all the code points that map to Y, and one for all the
-# code points that map to N. (For each of these, a third table is also
+# code points that map to N. (For each binary property, a third table is also
# generated for the pseudo Perl property. It contains the identical code
-# points as the Y table, but can be written, not in the compound form, but in
-# a "single" form like \p{IsUppercase}.) Many properties are binary, but some
-# properties have several possible values, some have many, and properties like
-# Name have a different value for every named code point. Those will not,
-# unless the controlling lists are changed, have their match tables written
-# out. But all the ones which can be used in regular expression \p{} and \P{}
-# constructs will. Prior to 5.14, generally a property would have either its
-# map table or its match tables written but not both. Again, what gets
-# written is controlled by lists which can easily be changed. Starting in
-# 5.14, advantage was taken of this, and all the map tables needed to
-# reconstruct the Unicode db are now written out, while suppressing the
-# Unicode .txt files that contain the data. Our tables are much more compact
-# than the .txt files, so a significant space savings was achieved.
-
-# Properties have a 'Type', like binary, or string, or enum depending on how
-# many match tables there are and the content of the maps. This 'Type' is
+# points as the Y table, but can be written in regular expressions, not in the
+# compound form, but in a "single" form like \p{IsUppercase}.) Many
+# properties are binary, but some properties have several possible values,
+# some have many, and properties like Name have a different value for every
+# named code point. Those will not, unless the controlling lists are changed,
+# have their match tables written out. But all the ones which can be used in
+# regular expression \p{} and \P{} constructs will. Prior to 5.14, generally
+# a property would have either its map table or its match tables written but
+# not both. Again, what gets written is controlled by lists which can easily
+# be changed. Starting in 5.14, advantage was taken of this, and all the map
+# tables needed to reconstruct the Unicode db are now written out, while
+# suppressing the Unicode .txt files that contain the data. Our tables are
+# much more compact than the .txt files, so a significant space savings was
+# achieved. Also, tables are not written out that are trivially derivable
+# from tables that do get written. So, there typically is no file containing
+# the code points not matched by a binary property (the table for \P{} versus
+# lowercase \p{}), since you just need to invert the True table to get the
+# False table.
+
+# Properties have a 'Type', like 'binary', or 'string', or 'enum' depending on
+# how many match tables there are and the content of the maps. This 'Type' is
# different than a range 'Type', so don't get confused by the two concepts
# having the same name.
#
@@ -181,21 +186,22 @@ my $unicode_reference_url = 'http://www.unicode.org/reports/tr44/';
# As stated earlier, this program will work on any release of Unicode so far.
# Most obvious problems in earlier data have NOT been corrected except when
-# necessary to make Perl or this program work reasonably. For example, no
-# folding information was given in early releases, so this program substitutes
-# lower case instead, just so that a regular expression with the /i option
-# will do something that actually gives the right results in many cases.
-# There are also a couple other corrections for version 1.1.5, commented at
-# the point they are made. As an example of corrections that weren't made
-# (but could be) is this statement from DerivedAge.txt: "The supplementary
-# private use code points and the non-character code points were assigned in
-# version 2.0, but not specifically listed in the UCD until versions 3.0 and
-# 3.1 respectively." (To be precise it was 3.0.1 not 3.0.0) More information
-# on Unicode version glitches is further down in these introductory comments.
+# necessary to make Perl or this program work reasonably, and to keep out
+# potential security issues. For example, no folding information was given in
+# early releases, so this program substitutes lower case instead, just so that
+# a regular expression with the /i option will do something that actually
+# gives the right results in many cases. There are also a couple other
+# corrections for version 1.1.5, commented at the point they are made. As an
+# example of corrections that weren't made (but could be) is this statement
+# from DerivedAge.txt: "The supplementary private use code points and the
+# non-character code points were assigned in version 2.0, but not specifically
+# listed in the UCD until versions 3.0 and 3.1 respectively." (To be precise
+# it was 3.0.1 not 3.0.0) More information on Unicode version glitches is
+# further down in these introductory comments.
#
-# This program works on all non-provisional properties as of 6.0, though the
-# files for some are suppressed from apparent lack of demand for them. You
-# can change which are output by changing lists in this program.
+# This program works on all non-provisional properties as of the current
+# Unicode release, though the files for some are suppressed for various
+# reasons. You can change which are output by changing lists in this program.
#
# The old version of mktables emphasized the term "Fuzzy" to mean Unicode's
# loose matchings rules (from Unicode TR18):
@@ -207,6 +213,7 @@ my $unicode_reference_url = 'http://www.unicode.org/reports/tr44/';
# recognized, and that loose matching of property names be used,
# whereby the case distinctions, whitespace, hyphens, and underbar
# are ignored.
+#
# The program still allows Fuzzy to override its determination of if loose
# matching should be used, but it isn't currently used, as it is no longer
# needed; the calculations it makes are good enough.
@@ -227,12 +234,13 @@ my $unicode_reference_url = 'http://www.unicode.org/reports/tr44/';
# values. That is, they list code points and say what the mapping
# is under the given property. Some files give the mappings for
# just one property; and some for many. This program goes through
-# each file and populates the properties from them. Some properties
-# are listed in more than one file, and Unicode has set up a
-# precedence as to which has priority if there is a conflict. Thus
-# the order of processing matters, and this program handles the
-# conflict possibility by processing the overriding input files
-# last, so that if necessary they replace earlier values.
+# each file and populates the properties and their map tables from
+# them. Some properties are listed in more than one file, and
+# Unicode has set up a precedence as to which has priority if there
+# is a conflict. Thus the order of processing matters, and this
+# program handles the conflict possibility by processing the
+# overriding input files last, so that if necessary they replace
+# earlier values.
# After this is all done, the program creates the property mappings not
# furnished by Unicode, but derivable from what it does give.
# The tables of code points that match each property value in each
@@ -315,6 +323,11 @@ my $unicode_reference_url = 'http://www.unicode.org/reports/tr44/';
# can't just take the intersection of two map tables, for example, as that
# is nonsensical.
#
+# What about 'fate' and 'status'. The concept of a table's fate was created
+# late when it became clear that something more was needed. The difference
+# between this and 'status' is unclean, and could be improved if someone
+# wanted to spend the effort.
+#
# DEBUGGING
#
# This program is written so it will run under miniperl. Occasionally changes
@@ -327,12 +340,12 @@ my $unicode_reference_url = 'http://www.unicode.org/reports/tr44/';
#
# local $to_trace = 1 if main::DEBUG;
#
-# can be added to enable tracing in its lexical scope or until you insert
-# another line:
+# can be added to enable tracing in its lexical scope (plus dynamic) or until
+# you insert another line:
#
# local $to_trace = 0 if main::DEBUG;
#
-# then use a line like "trace $a, @b, %c, ...;
+# To actually trace, use a line like "trace $a, @b, %c, ...;
#
# Some of the more complex subroutines already have trace statements in them.
# Permanent trace statements should be like:
@@ -345,7 +358,8 @@ my $unicode_reference_url = 'http://www.unicode.org/reports/tr44/';
# my $debug_skip = 0;
#
# to 1, and every file whose object is in @input_file_objects and doesn't have
-# a, 'non_skip => 1,' in its constructor will be skipped.
+# a, 'non_skip => 1,' in its constructor will be skipped. However, skipping
+# Jamo.txt or UnicodeData.txt will likely cause fatal errors.
#
# To compare the output tables, it may be useful to specify the -annotate
# flag. This causes the tables to expand so there is one entry for each
@@ -430,7 +444,7 @@ my $unicode_reference_url = 'http://www.unicode.org/reports/tr44/';
# ones. The program should warn you if its name will clash with others on
# restrictive file systems, like DOS. If so, figure out a better name, and
# add lines to the README.perl file giving that. If the file is a character
-# property, it should be in the format that Unicode has by default
+# property, it should be in the format that Unicode has implicitly
# standardized for such files for the more recently introduced ones.
# If so, the Input_file constructor for @input_file_objects can just be the
# file name and release it first appeared in. If not, then it should be
@@ -463,9 +477,24 @@ my $unicode_reference_url = 'http://www.unicode.org/reports/tr44/';
#
# Here are some observations about some of the issues in early versions:
#
-# The number of code points in \p{alpha} halved in 2.1.9. It turns out that
-# the reason is that the CJK block starting at 4E00 was removed from PropList,
-# and was not put back in until 3.1.0
+# Prior to version 3.0, there were 3 character decompositions. These are not
+# handled by Unicode::Normalize, nor will it compile when presented a version
+# that has them. However, you can trivially get it to compile by simply
+# ignoring those decompositions, by changing the croak to a carp. At the time
+# of this writing, the line (in cpan/Unicode-Normalize/mkheader) reads
+#
+# croak("Weird Canonical Decomposition of U+$h");
+#
+# Simply change to a carp. It will compile, but will not know about any three
+# character decomposition.
+
+# The number of code points in \p{alpha=True} halved in 2.1.9. It turns out
+# that the reason is that the CJK block starting at 4E00 was removed from
+# PropList, and was not put back in until 3.1.0. The Perl extension (the
+# single property name \p{alpha}) has the correct values. But the compound
+# form is simply not generated until 3.1, as it can be argued that prior to
+# this release, this was not an official property. The comments for
+# filter_old_style_proplist() give more details.
#
# Unicode introduced the synonym Space for White_Space in 4.1. Perl has
# always had a \p{Space}. In release 3.2 only, they are not synonymous. The
@@ -474,11 +503,11 @@ my $unicode_reference_url = 'http://www.unicode.org/reports/tr44/';
# reclassified it correctly.
#
# Another change between 3.2 and 4.0 is the CCC property value ATBL. In 3.2
-# this was erroneously a synonym for 202. In 4.0, ATB became 202, and ATBL
-# was left with no code points, as all the ones that mapped to 202 stayed
-# mapped to 202. Thus if your program used the numeric name for the class,
-# it would not have been affected, but if it used the mnemonic, it would have
-# been.
+# this was erroneously a synonym for 202 (it should be 200). In 4.0, ATB
+# became 202, and ATBL was left with no code points, as all the ones that
+# mapped to 202 stayed mapped to 202. Thus if your program used the numeric
+# name for the class, it would not have been affected, but if it used the
+# mnemonic, it would have been.
#
# \p{Script=Hrkt} (Katakana_Or_Hiragana) came in 4.0.1. Before that code
# points which eventually came to have this script property value, instead
@@ -490,6 +519,12 @@ my $unicode_reference_url = 'http://www.unicode.org/reports/tr44/';
# tries to do the best it can for earlier releases. It is done in
# process_PropertyAliases()
#
+# In version 2.1.2, the entry in UnicodeData.txt:
+# 0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;;019F;
+# should instead be
+# 0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+# Without this change, there are casing problems for this character.
+#
##############################################################################
my $UNDEF = ':UNDEF:'; # String to print out for undefined values in tracing
@@ -506,6 +541,10 @@ my $MAX_LINE_WIDTH = 78;
# before normal completion.
my $debug_skip = 0;
+
+# Normally these are suppressed.
+my $write_Unicode_deprecated_tables = 0;
+
# Set to 1 to enable tracing.
our $to_trace = 0;
@@ -608,6 +647,7 @@ sub uniques {
$0 = File::Spec->canonpath($0);
my $make_test_script = 0; # ? Should we output a test script
+my $make_norm_test_script = 0; # ? Should we output a normalization test script
my $write_unchanged_files = 0; # ? Should we update the output files even if
# we don't think they have changed
my $use_directory = ""; # ? Should we chdir somewhere.
@@ -668,6 +708,10 @@ while (@ARGV) {
{
$make_test_script = 1;
}
+ elsif ($arg eq '-makenormtest')
+ {
+ $make_norm_test_script = 1;
+ }
elsif ($arg eq '-makelist') {
$make_list = 1;
}
@@ -770,6 +814,8 @@ push @tables_that_may_be_empty, 'Script_Extensions=Katakana_Or_Hiragana'
if $v_version ge v6.0.0;
push @tables_that_may_be_empty, 'Grapheme_Cluster_Break=Prepend'
if $v_version ge v6.1.0;
+push @tables_that_may_be_empty, 'Canonical_Combining_Class=CCC133'
+ if $v_version ge v6.2.0;
# The lists below are hashes, so the key is the item in the list, and the
# value is the reason why it is in the list. This makes generation of
@@ -950,6 +996,13 @@ my %why_obsolete; # Documentation only
}
}
+if ($write_Unicode_deprecated_tables) {
+ foreach my $property (keys %why_suppressed) {
+ delete $why_suppressed{$property} if $property =~
+ / ^ Other | Grapheme /x;
+ }
+}
+
if ($v_version ge 4.0.0) {
$why_stabilized{'Hyphen'} = 'Use the Line_Break property instead; see www.unicode.org/reports/tr14';
if ($v_version ge 6.0.0) {
@@ -968,7 +1021,7 @@ if ($v_version ge v4.1.0) {
$why_suppressed{'Script=Katakana_Or_Hiragana'} = 'Obsolete. All code points previously matched by this have been moved to "Script=Common".';
}
if ($v_version ge v6.0.0) {
- $why_suppressed{'Script=Katakana_Or_Hiragana'} .= ' Consider instead using "Script_Extensions=Katakana" or "Script_Extensions=Hiragana (or both)"';
+ $why_suppressed{'Script=Katakana_Or_Hiragana'} .= ' Consider instead using "Script_Extensions=Katakana" or "Script_Extensions=Hiragana" (or both)';
$why_suppressed{'Script_Extensions=Katakana_Or_Hiragana'} = 'All code points that would be matched by this are matched by either "Script_Extensions=Katakana" or "Script_Extensions=Hiragana"';
}
@@ -1025,7 +1078,7 @@ END
# The input files don't list every code point. Those not listed are to be
# defaulted to some value. Below are hard-coded what those values are for
# non-binary properties as of 5.1. Starting in 5.0, there are
-# machine-parsable comment lines in the files the give the defaults; so this
+# machine-parsable comment lines in the files that give the defaults; so this
# list shouldn't have to be extended. The claim is that all missing entries
# for binary properties will default to 'N'. Unicode tried to change that in
# 5.2, but the beta period produced enough protest that they backed off.
@@ -1075,7 +1128,17 @@ my %default_mapping = (
Word_Break => 'Other',
);
-# Below are files that Unicode furnishes, but this program ignores, and why
+# Below are files that Unicode furnishes, but this program ignores, and why.
+# NormalizationCorrections.txt requires some more explanation. It documents
+# the cumulative fixes to erroneous normalizations in earlier Unicode
+# versions. Its main purpose is so that someone running on an earlier version
+# can use this file to override what got published in that earlier release.
+# It would be easy for mktables to read and handle this file. But all the
+# corrections in it should already be in the other files for the release it
+# is. To get it to actually mean something useful, someone would have to be
+# using an earlier Unicode release, and copy it to the files for that release
+# and recomplile. So far there has been no demand to do that, so this hasn't
+# been implemented.
my %ignored_files = (
'CJKRadicals.txt' => 'Maps the kRSUnicode property values to corresponding code points',
'Index.txt' => 'Alphabetical index of Unicode characters',
@@ -1086,6 +1149,8 @@ my %ignored_files = (
'ReadMe.txt' => 'Documentation',
'StandardizedVariants.txt' => 'Certain glyph variations for character display are standardized. This lists the non-Unihan ones; the Unihan ones are also not used by Perl, and are in a separate Unicode data base L<http://www.unicode.org/ivd>',
'EmojiSources.txt' => 'Maps certain Unicode code points to their legacy Japanese cell-phone values',
+ 'USourceData.txt' => 'Documentation of status and cross reference of proposals for encoding by Unicode of Unihan characters',
+ 'USourceData.pdf' => 'Documentation of status and cross reference of proposals for encoding by Unicode of Unihan characters',
'auxiliary/WordBreakTest.html' => 'Documentation of validation tests',
'auxiliary/SentenceBreakTest.html' => 'Documentation of validation tests',
'auxiliary/GraphemeBreakTest.html' => 'Documentation of validation tests',
@@ -1228,13 +1293,16 @@ my $ORDINARY = 0; # The normal fate.
my $MAP_PROXIED = 1; # The map table for the property isn't written out,
# but there is a file written that can be used to
# reconstruct this table
-my $SUPPRESSED = 3; # The file for this table is not written out.
-my $INTERNAL_ONLY = 4; # The file for this table is written out, but it is
+my $INTERNAL_ONLY = 2; # The file for this table is written out, but it is
# for Perl's internal use only
-my $PLACEHOLDER = 5; # A property that is defined as a placeholder in a
- # Unicode version that doesn't have it, but we need it
- # to be defined, if empty, to have things work.
- # Implies no pod entry generated
+my $SUPPRESSED = 3; # The file for this table is not written out, and as a
+ # result, we don't bother to do many computations on
+ # it.
+my $PLACEHOLDER = 4; # Like $SUPPRESSED, but we go through all the
+ # computations anyway, as the values are needed for
+ # things to work. This happens when we have Perl
+ # extensions that depend on Unicode tables that
+ # wouldn't normally be in a given Unicode version.
# The format of the values of the tables:
my $EMPTY_FORMAT = "";
@@ -1345,6 +1413,9 @@ my %loose_names_ending_in_code_point; # Same as above, but has blanks, dashes
# anonymous hash.
my @code_points_ending_in_code_point;
+# To hold Unicode's normalization test suite
+my @normalization_tests;
+
# Boolean: does this Unicode version have the hangul syllables, and are we
# writing out a table for them?
my $has_hangul_syllables = 0;
@@ -1471,20 +1542,16 @@ sub populate_char_info ($) {
# point of the range.
my $end;
if (! $viacode[$i]) {
- if ($gc-> table('Surrogate')->contains($i)) {
- $viacode[$i] = 'Surrogate';
- $annotate_char_type[$i] = $SURROGATE_TYPE;
- $printable[$i] = 0;
- $end = $gc->table('Surrogate')->containing_range($i)->end;
- }
- elsif ($gc-> table('Private_use')->contains($i)) {
+ my $nonchar;
+ if ($gc-> table('Private_use')->contains($i)) {
$viacode[$i] = 'Private Use';
$annotate_char_type[$i] = $PRIVATE_USE_TYPE;
$printable[$i] = 0;
$end = $gc->table('Private_Use')->containing_range($i)->end;
}
- elsif (Property::property_ref('Noncharacter_Code_Point')-> table('Y')->
- contains($i))
+ elsif ((defined ($nonchar =
+ Property::property_ref('Noncharacter_Code_Point'))
+ && $nonchar->table('Y')->contains($i)))
{
$viacode[$i] = 'Noncharacter';
$annotate_char_type[$i] = $NONCHARACTER_TYPE;
@@ -1493,24 +1560,40 @@ sub populate_char_info ($) {
containing_range($i)->end;
}
elsif ($gc-> table('Control')->contains($i)) {
- $viacode[$i] = 'Control';
+ $viacode[$i] = property_ref('Name_Alias')->value_of($i) || 'Control';
$annotate_char_type[$i] = $CONTROL_TYPE;
$printable[$i] = 0;
- $end = 0x81 if $i == 0x80; # Hard-code this one known case
}
elsif ($gc-> table('Unassigned')->contains($i)) {
- $viacode[$i] = 'Unassigned, block=' . $block-> value_of($i);
$annotate_char_type[$i] = $UNASSIGNED_TYPE;
$printable[$i] = 0;
-
- # Because we name the unassigned by the blocks they are in, it
- # can't go past the end of that block, and it also can't go past
- # the unassigned range it is in. The special table makes sure
- # that the non-characters, which are unassigned, are separated
- # out.
- $end = min($block->containing_range($i)->end,
- $unassigned_sans_noncharacters-> containing_range($i)->
- end);
+ if ($v_version lt v2.0.0) { # No blocks in earliest releases
+ $viacode[$i] = 'Unassigned';
+ $end = $gc-> table('Unassigned')->containing_range($i)->end;
+ }
+ else {
+ $viacode[$i] = 'Unassigned, block=' . $block-> value_of($i);
+
+ # Because we name the unassigned by the blocks they are in, it
+ # can't go past the end of that block, and it also can't go
+ # past the unassigned range it is in. The special table makes
+ # sure that the non-characters, which are unassigned, are
+ # separated out.
+ $end = min($block->containing_range($i)->end,
+ $unassigned_sans_noncharacters->
+ containing_range($i)->end);
+ }
+ }
+ elsif ($v_version lt v2.0.0) { # No surrogates in earliest releases
+ $viacode[$i] = $gc->value_of($i);
+ $annotate_char_type[$i] = $UNKNOWN_TYPE;
+ $printable[$i] = 0;
+ }
+ elsif ($gc-> table('Surrogate')->contains($i)) {
+ $viacode[$i] = 'Surrogate';
+ $annotate_char_type[$i] = $SURROGATE_TYPE;
+ $printable[$i] = 0;
+ $end = $gc->table('Surrogate')->containing_range($i)->end;
}
else {
Carp::my_carp_bug("Can't figure out how to annotate "
@@ -1959,10 +2042,10 @@ package Input_file;
# basically be a while(next_line()) {...} loop.
#
# You can also set up handlers to
-# 1) call before the first line is read for pre processing
+# 1) call before the first line is read, for pre processing
# 2) call to adjust each line of the input before the main handler gets them
# 3) call upon EOF before the main handler exits its loop
-# 4) call at the end for post processing
+# 4) call at the end, for post processing
#
# $_ is used to store the input line, and is to be filtered by the
# each_line_handler()s. So, if the format of the line is not in the desired
@@ -2013,7 +2096,7 @@ sub trace { return main::trace(@_); }
my %property;
# name of property this file is for. defaults to none, meaning not
# applicable, or is otherwise determinable, for example, from each line.
- main::set_access('property', \%property, qw{ c });
+ main::set_access('property', \%property, qw{ c r });
my %optional;
# If this is true, the file is optional. If not present, no warning is
@@ -2174,6 +2257,7 @@ sub trace { return main::trace(@_); }
fallback => 0,
qw("") => "_operator_stringify",
"." => \&main::_operator_dot,
+ ".=" => \&main::_operator_dot_equal,
;
sub _operator_stringify {
@@ -2840,10 +2924,6 @@ sub trace { return main::trace(@_); }
Carp::carp_extra_args(\%args) if main::DEBUG && %args;
- if (! $type{$addr}) {
- $standard_form{$addr} = main::standardize($value);
- }
-
return $self;
}
@@ -2851,6 +2931,7 @@ sub trace { return main::trace(@_); }
fallback => 0,
qw("") => "_operator_stringify",
"." => \&main::_operator_dot,
+ ".=" => \&main::_operator_dot_equal,
;
sub _operator_stringify {
@@ -2872,8 +2953,11 @@ sub trace { return main::trace(@_); }
}
sub standard_form {
- # The standard form is the value itself if the standard form is
- # undefined (that is if the value is special)
+ # Calculate the standard form only if needed, and cache the result.
+ # The standard form is the value itself if the type is special.
+ # This represents a considerable CPU and memory saving - at the time
+ # of writing there are 368676 non-special objects, but the standard
+ # form is only requested for 22047 of them - ie about 6%.
my $self = shift;
Carp::carp_extra_args(\@_) if main::DEBUG && @_;
@@ -2881,7 +2965,10 @@ sub trace { return main::trace(@_); }
my $addr = do { no overloading; pack 'J', $self; };
return $standard_form{$addr} if defined $standard_form{$addr};
- return $value{$addr};
+
+ my $value = $value{$addr};
+ return $value if $type{$addr};
+ return $standard_form{$addr} = main::standardize($value);
}
sub dump {
@@ -2932,6 +3019,10 @@ sub trace { return main::trace(@_); }
our $addr;
+ # Max is initialized to a negative value that isn't adjacent to 0, for
+ # simpler tests
+ my $max_init = -2;
+
main::setup_package();
my %ranges;
@@ -2987,9 +3078,7 @@ sub trace { return main::trace(@_); }
Carp::carp_extra_args(\%args) if main::DEBUG && %args;
- # Max is initialized to a negative value that isn't adjacent to 0,
- # for simpler tests
- $max{$addr} = -2;
+ $max{$addr} = $max_init;
$_search_ranges_cache{$addr} = 0;
$ranges{$addr} = [];
@@ -3001,6 +3090,7 @@ sub trace { return main::trace(@_); }
fallback => 0,
qw("") => "_operator_stringify",
"." => \&main::_operator_dot,
+ ".=" => \&main::_operator_dot_equal,
;
sub _operator_stringify {
@@ -3073,7 +3163,7 @@ sub trace { return main::trace(@_); }
no overloading;
$message .= $owner_name_of{pack 'J', $self};
}
- Carp::my_carp_bug($message .= "Undefined argument to _union. No union done.");
+ Carp::my_carp_bug($message . "Undefined argument to _union. No union done.");
return;
}
@@ -3444,6 +3534,9 @@ sub trace { return main::trace(@_); }
Carp::my_carp_bug("$owner_name_of{$addr}End of range (" . sprintf("%04X", $end) . ") must not be before start (" . sprintf("%04X", $start) . "). No action taken.");
return;
}
+ if ($end > $MAX_UNICODE_CODEPOINT && $operation eq '+') {
+ Carp::my_carp("$owner_name_of{$addr}Warning: Range '" . sprintf("%04X..%04X", $start, $end) . ") is above the Unicode maximum of " . sprintf("%04X", $MAX_UNICODE_CODEPOINT) . ". Adding it anyway");
+ }
#local $to_trace = 1 if main::DEBUG;
if ($operation eq '-') {
@@ -3471,7 +3564,7 @@ sub trace { return main::trace(@_); }
# structured so this is common.
if ($start > $max) {
- trace "$owner_name_of{$addr} $operation", sprintf("%04X", $start) . '..' . sprintf("%04X", $end) . " ($value) type=$type" if main::DEBUG && $to_trace;
+ trace "$owner_name_of{$addr} $operation", sprintf("%04X..%04X (%s) type=%d; prev max=%04X", $start, $end, $value, $type, $max) if main::DEBUG && $to_trace;
return if $operation eq '-'; # Deleting a non-existing range is a
# no-op
@@ -4070,7 +4163,12 @@ sub trace { return main::trace(@_); }
# otherwise recalculate it. This is done too rarely to worry about
# performance.
if ($operation eq '-' && @return) {
- $max{$addr} = $r->[-1]->end;
+ if (@$r) {
+ $max{$addr} = $r->[-1]->end;
+ }
+ else { # Now empty
+ $max{$addr} = $max_init;
+ }
}
return @return;
}
@@ -4174,11 +4272,41 @@ sub trace { return main::trace(@_); }
return $self->_union($other)
},
+ '+=' => sub { my $self = shift;
+ my $other = shift;
+ my $reversed = shift;
+
+ if ($reversed) {
+ Carp::my_carp_bug("Bad news. Can't cope with '"
+ . ref($other)
+ . ' += '
+ . ref($self)
+ . "'. undef returned.");
+ return;
+ }
+
+ return $self->_union($other)
+ },
'&' => sub { my $self = shift;
my $other = shift;
return $self->_intersect($other, 0);
},
+ '&=' => sub { my $self = shift;
+ my $other = shift;
+ my $reversed = shift;
+
+ if ($reversed) {
+ Carp::my_carp_bug("Bad news. Can't cope with '"
+ . ref($other)
+ . ' &= '
+ . ref($self)
+ . "'. undef returned.");
+ return;
+ }
+
+ return $self->_intersect($other, 0);
+ },
'~' => "_invert",
'-' => "_subtract",
;
@@ -4223,10 +4351,12 @@ sub trace { return main::trace(@_); }
Carp::carp_extra_args(\@_) if main::DEBUG && @_;
if ($reversed) {
- Carp::my_carp_bug("Can't cope with a "
- . __PACKAGE__
- . " being the second parameter in a '-'. Subtraction ignored.");
- return $self;
+ Carp::my_carp_bug("Bad news. Can't cope with '"
+ . ref($other)
+ . ' - '
+ . ref($self)
+ . "'. undef returned.");
+ return;
}
my $new = Range_List->new(Initialize => $self);
@@ -4860,6 +4990,7 @@ END
use overload
fallback => 0,
"." => \&main::_operator_dot,
+ ".=" => \&main::_operator_dot_equal,
'!=' => \&main::_operator_not_equal,
'==' => \&main::_operator_equal,
;
@@ -6178,7 +6309,7 @@ END
my $comment = "";
my $status = $self->status;
- if ($status) {
+ if ($status && $status ne $PLACEHOLDER) {
my $warn = uc $status_past_participles{$status};
$comment .= <<END;
@@ -6797,6 +6928,16 @@ sub trace { return main::trace(@_); }
'+=' => sub {
my $self = shift;
my $other = shift;
+ my $reversed = shift;
+
+ if ($reversed) {
+ Carp::my_carp_bug("Bad news. Can't cope with '"
+ . ref($other)
+ . ' += '
+ . ref($self)
+ . "'. undef returned.");
+ return;
+ }
return if $self->carp_if_locked;
@@ -6814,14 +6955,33 @@ sub trace { return main::trace(@_); }
}
return $self;
},
+ '&=' => sub {
+ my $self = shift;
+ my $other = shift;
+ my $reversed = shift;
+
+ if ($reversed) {
+ Carp::my_carp_bug("Bad news. Can't cope with '"
+ . ref($other)
+ . ' &= '
+ . ref($self)
+ . "'. undef returned.");
+ return;
+ }
+
+ return if $self->carp_if_locked;
+ $self->_set_range_list($self->_range_list & $other);
+ return $self;
+ },
'-' => sub { my $self = shift;
my $other = shift;
my $reversed = shift;
-
if ($reversed) {
- Carp::my_carp_bug("Can't cope with a "
- . __PACKAGE__
- . " being the first parameter in a '-'. Subtraction ignored.");
+ Carp::my_carp_bug("Bad news. Can't cope with '"
+ . ref($other)
+ . ' - '
+ . ref($self)
+ . "'. undef returned.");
return;
}
@@ -7263,7 +7423,9 @@ END
my $flag = $property->status
|| $table->status
|| $table_alias_object->status;
- $flags{$flag} = $status_past_participles{$flag} if $flag;
+ if ($flag && $flag ne $PLACEHOLDER) {
+ $flags{$flag} = $status_past_participles{$flag};
+ }
$loose_count++;
@@ -7661,6 +7823,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace }
fallback => 0,
qw("") => "_operator_stringify",
"." => \&main::_operator_dot,
+ ".=" => \&main::_operator_dot_equal,
'==' => \&main::_operator_equal,
'!=' => \&main::_operator_not_equal,
'=' => sub { return shift },
@@ -7680,16 +7843,16 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace }
Carp::carp_extra_args(\@_) if main::DEBUG && @_;
if (ref $other) {
- Carp::my_carp_bug("Can't cope with a "
+ Carp::my_carp_bug("Bad news. Can't cope with a "
. ref($other)
. " argument to '-='. Subtraction ignored.");
return $self;
}
elsif ($reversed) { # Shouldn't happen in a -=, but just in case
- Carp::my_carp_bug("Can't cope with a "
- . __PACKAGE__
- . " being the first parameter in a '-='. Subtraction ignored.");
- return $self;
+ Carp::my_carp_bug("Bad news. Can't cope with subtracting a "
+ . ref $self
+ . " from a non-object. undef returned.");
+ return;
}
else {
no overloading;
@@ -8752,6 +8915,24 @@ sub _operator_dot {
: "$self$other";
}
+sub _operator_dot_equal {
+ # Overloaded '.=' method that is common to all packages.
+
+ my $self = shift;
+ my $other = shift;
+ my $reversed = shift;
+ Carp::carp_extra_args(\@_) if main::DEBUG && @_;
+
+ $other = "" unless defined $other;
+
+ if ($reversed) {
+ return $other .= "$self";
+ }
+ else {
+ return "$self" . "$other";
+ }
+}
+
sub _operator_equal {
# Generic overloaded '==' routine. To be equal, they must be the exact
# same object
@@ -8806,6 +8987,11 @@ sub process_PropertyAliases($) {
}
}
+
+ my $scf = property_ref("Simple_Case_Folding");
+ $scf->add_alias("scf");
+ $scf->add_alias("sfc");
+
return;
}
@@ -8816,11 +9002,20 @@ sub finish_property_setup {
Carp::carp_extra_args(\@_) if main::DEBUG && @_;
# This entry was missing from this file in earlier Unicode versions
- if (-e 'Jamo.txt') {
- my $jsn = property_ref('JSN');
- if (! defined $jsn) {
- $jsn = Property->new('JSN', Full_Name => 'Jamo_Short_Name');
- }
+ if (-e 'Jamo.txt' && ! defined property_ref('JSN')) {
+ Property->new('JSN', Full_Name => 'Jamo_Short_Name');
+ }
+
+ # These two properties must be defined in all releases so we can generate
+ # the tables from them to make regex \X work, but suppress their output so
+ # aren't application visible prior to releases where they should be
+ if (! defined property_ref('GCB')) {
+ Property->new('GCB', Full_Name => 'Grapheme_Cluster_Break',
+ Fate => $PLACEHOLDER);
+ }
+ if (! defined property_ref('hst')) {
+ Property->new('hst', Full_Name => 'Hangul_Syllable_Type',
+ Fate => $PLACEHOLDER);
}
# These are used so much, that we set globals for them.
@@ -9001,7 +9196,7 @@ na ; Name
na1 ; Unicode_1_Name
nt ; Numeric_Type
nv ; Numeric_Value
-sfc ; Simple_Case_Folding
+scf ; Simple_Case_Folding
slc ; Simple_Lowercase_Mapping
stc ; Simple_Titlecase_Mapping
suc ; Simple_Uppercase_Mapping
@@ -9022,7 +9217,6 @@ END
# This first set is in the original old-style proplist.
push @return, split /\n/, <<'END';
-Alpha ; Alphabetic
Bidi_C ; Bidi_Control
Dash ; Dash
Dia ; Diacritic
@@ -9093,6 +9287,7 @@ END
}
if (-e 'DCoreProperties.txt') {
push @return, split /\n/, <<'END';
+Alpha ; Alphabetic
IDS ; ID_Start
XIDC ; XID_Continue
XIDS ; XID_Start
@@ -9143,6 +9338,34 @@ sub process_PropValueAliases {
$file->insert_lines(get_old_property_value_aliases());
}
+ if ($v_version lt 4.0.0) {
+ $file->insert_lines(split /\n/, <<'END'
+hst; L ; Leading_Jamo
+hst; LV ; LV_Syllable
+hst; LVT ; LVT_Syllable
+hst; NA ; Not_Applicable
+hst; T ; Trailing_Jamo
+hst; V ; Vowel_Jamo
+END
+ );
+ }
+ if ($v_version lt 4.1.0) {
+ $file->insert_lines(split /\n/, <<'END'
+GCB; CN ; Control
+GCB; CR ; CR
+GCB; EX ; Extend
+GCB; L ; L
+GCB; LF ; LF
+GCB; LV ; LV
+GCB; LVT ; LVT
+GCB; T ; T
+GCB; V ; V
+GCB; XX ; Other
+END
+ );
+ }
+
+
# Add any explicit cjk values
$file->insert_lines(@cjk_property_values);
@@ -9267,6 +9490,9 @@ bc ; ON ; Other_Neutral
bc ; R ; Right_To_Left
bc ; WS ; White_Space
+Bidi_M; N; No; F; False
+Bidi_M; Y; Yes; T; True
+
# The standard combining classes are very much different in v1, so only use
# ones that look right (not checked thoroughly)
ccc; 0; NR ; Not_Reordered
@@ -9553,6 +9779,33 @@ END
return @return;
}
+sub process_NormalizationsTest {
+
+ # Each line looks like:
+ # source code point; NFC; NFD; NFKC; NFKD
+ # e.g.
+ # 1E0A;1E0A;0044 0307;1E0A;0044 0307;
+
+ my $file= shift;
+ Carp::carp_extra_args(\@_) if main::DEBUG && @_;
+
+ # Process each line of the file ...
+ while ($file->next_line) {
+
+ next if /^@/;
+
+ my ($c1, $c2, $c3, $c4, $c5) = split /\s*;\s*/;
+
+ foreach my $var (\$c1, \$c2, \$c3, \$c4, \$c5) {
+ $$var = pack "U0U*", map { hex } split " ", $$var;
+ $$var =~ s/(\\)/$1$1/g;
+ }
+
+ push @normalization_tests,
+ "Test_N(q$c1, q$c2, q$c3, q$c4, q$c5);\n";
+ } # End of looping through the file
+}
+
sub output_perl_charnames_line ($$) {
# Output the entries in Perl_charnames specially, using 5 digits instead
@@ -10324,6 +10577,7 @@ END
$file->carp_bad_line("'$fields[$NUMERIC]' should be a whole or rational number. Processing as if it were") if $fields[$NUMERIC] !~ qr{ ^ -? \d+ ( / \d+ )? $ }x;
if ($fields[$PERL_DECIMAL_DIGIT] ne "") {
$file->carp_bad_line("$fields[$PERL_DECIMAL_DIGIT] should equal $fields[$NUMERIC]. Processing anyway") if $fields[$PERL_DECIMAL_DIGIT] != $fields[$NUMERIC];
+ $file->carp_bad_line("$fields[$PERL_DECIMAL_DIGIT] should be empty since the general category ($fields[$CATEGORY]) isn't 'Nd'. Processing as Decimal") if $fields[$CATEGORY] ne "Nd";
$fields[$NUMERIC_TYPE_OTHER_DIGIT] = 'Decimal';
}
elsif ($fields[$NUMERIC_TYPE_OTHER_DIGIT] ne "") {
@@ -10579,7 +10833,7 @@ END
Carp::carp_extra_args(\@_) if main::DEBUG && @_;
# Flush the buffers.
- foreach my $i (1 .. $last_field) {
+ foreach my $i (0 .. $last_field) {
$file->insert_adjusted_lines("$start[$i]..$previous_cp; $field_names[$i]; $previous_fields[$i]");
}
@@ -10597,8 +10851,9 @@ END
# into it the Hangul syllable mappings. This is to avoid having
# to publish a subroutine in it to compute them. (which would
# essentially be this code.) This uses the algorithm published by
- # Unicode.
- if (property_ref('Decomposition_Mapping')->to_output_map) {
+ # Unicode. (No hangul syllables in version 1)
+ if ($v_version ge v2.0.0
+ && property_ref('Decomposition_Mapping')->to_output_map) {
for (my $S = $SBase; $S < $SBase + $SCount; $S++) {
use integer;
my $SIndex = $S - $SBase;
@@ -10638,11 +10893,15 @@ END
# the syntax is changed as well as the types to their later
# terminology. Otherwise normalize.pm would be very unhappy
# 5) Many ccc classes are different. These are left intact.
- # 6) U+FF10 - U+FF19 are missing their numeric values in all three
+ # 6) U+FF10..U+FF19 are missing their numeric values in all three
# fields. These are unchanged because it doesn't really cause
# problems for Perl.
# 7) A number of code points, such as controls, don't have their
- # Unicode Version 1 Names in this file. These are unchanged.
+ # Unicode Version 1 Names in this file. These are added.
+ # 8) A number of Symbols were marked as Lm. This changes those in
+ # the Latin1 range, so that regexes work.
+ # 9) The odd characters U+03DB .. U+03E1 weren't encoded but are
+ # referred to by their lc equivalents. Not fixed.
my @corrected_lines = split /\n/, <<'END';
4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
@@ -10671,7 +10930,12 @@ END
$file->insert_lines(@copy);
}
+ elsif ($code_point =~ /^00/ && $fields[$CATEGORY] eq 'Lm') {
+ # There are no Lm characters in Latin1; these should be 'Sk', but
+ # there isn't that in V1.
+ $fields[$CATEGORY] = 'So';
+ }
if ($fields[$NUMERIC] eq '-') {
$fields[$NUMERIC] = '-1'; # This is what 2.0 made it.
@@ -10701,7 +10965,7 @@ END
# If is like '<+circled> 0052 <-circled>', convert to
# '<circled> 0052'
$fields[$PERL_DECOMPOSITION] =~
- s/ < \+ ( .*? ) > \s* (.*?) \s* <-\1> /<$1> $2/x;
+ s/ < \+ ( .*? ) > \s* (.*?) \s* <-\1> /<$1> $2/xg;
# Convert '<join> HHHH HHHH <join>' to '<medial> HHHH HHHH', etc.
$fields[$PERL_DECOMPOSITION] =~
@@ -10725,6 +10989,9 @@ END
# One entry has weird braces
$fields[$PERL_DECOMPOSITION] =~ s/[{}]//g;
+
+ # One entry at U+2116 has an extra <sup>
+ $fields[$PERL_DECOMPOSITION] =~ s/( < .*? > .* ) < .*? > \ * /$1/x;
}
$_ = join ';', $code_point, @fields;
@@ -10732,6 +10999,108 @@ END
return;
}
+ sub filter_bad_Nd_ucd {
+ # Early versions specified a value in the decimal digit field even
+ # though the code point wasn't a decimal digit. Clear the field in
+ # that situation, so that the main code doesn't think it is a decimal
+ # digit.
+
+ my ($code_point, @fields) = split /\s*;\s*/, $_, -1;
+ if ($fields[$PERL_DECIMAL_DIGIT] ne "" && $fields[$CATEGORY] ne 'Nd') {
+ $fields[$PERL_DECIMAL_DIGIT] = "";
+ $_ = join ';', $code_point, @fields;
+ }
+ return;
+ }
+
+ my @U1_control_names = split /\n/, <<'END';
+NULL
+START OF HEADING
+START OF TEXT
+END OF TEXT
+END OF TRANSMISSION
+ENQUIRY
+ACKNOWLEDGE
+BELL
+BACKSPACE
+HORIZONTAL TABULATION
+LINE FEED
+VERTICAL TABULATION
+FORM FEED
+CARRIAGE RETURN
+SHIFT OUT
+SHIFT IN
+DATA LINK ESCAPE
+DEVICE CONTROL ONE
+DEVICE CONTROL TWO
+DEVICE CONTROL THREE
+DEVICE CONTROL FOUR
+NEGATIVE ACKNOWLEDGE
+SYNCHRONOUS IDLE
+END OF TRANSMISSION BLOCK
+CANCEL
+END OF MEDIUM
+SUBSTITUTE
+ESCAPE
+FILE SEPARATOR
+GROUP SEPARATOR
+RECORD SEPARATOR
+UNIT SEPARATOR
+DELETE
+BREAK PERMITTED HERE
+NO BREAK HERE
+INDEX
+NEXT LINE
+START OF SELECTED AREA
+END OF SELECTED AREA
+CHARACTER TABULATION SET
+CHARACTER TABULATION WITH JUSTIFICATION
+LINE TABULATION SET
+PARTIAL LINE DOWN
+PARTIAL LINE UP
+REVERSE LINE FEED
+SINGLE SHIFT TWO
+SINGLE SHIFT THREE
+DEVICE CONTROL STRING
+PRIVATE USE ONE
+PRIVATE USE TWO
+SET TRANSMIT STATE
+CANCEL CHARACTER
+MESSAGE WAITING
+START OF GUARDED AREA
+END OF GUARDED AREA
+START OF STRING
+SINGLE CHARACTER INTRODUCER
+CONTROL SEQUENCE INTRODUCER
+STRING TERMINATOR
+OPERATING SYSTEM COMMAND
+PRIVACY MESSAGE
+APPLICATION PROGRAM COMMAND
+END
+
+ sub filter_early_U1_names {
+ # Very early versions did not have the Unicode_1_name field specified.
+ # They differed in which ones were present; make sure a U1 name
+ # exists, so that Unicode::UCD::charinfo will work
+
+ my ($code_point, @fields) = split /\s*;\s*/, $_, -1;
+
+
+ # @U1_control names above are entirely positional, so we pull them out
+ # in the exact order required, with gaps for the ones that don't have
+ # names.
+ if ($code_point =~ /^00[01]/
+ || $code_point eq '007F'
+ || $code_point =~ /^008[2-9A-F]/
+ || $code_point =~ /^009[0-8A-F]/)
+ {
+ my $u1_name = shift @U1_control_names;
+ $fields[$UNICODE_1_NAME] = $u1_name unless $fields[$UNICODE_1_NAME];
+ $_ = join ';', $code_point, @fields;
+ }
+ return;
+ }
+
sub filter_v2_1_5_ucd {
# A dozen entries in this 2.1.5 file had the mirrored and numeric
# columns swapped; These all had mirrored be 'N'. So if the numeric
@@ -10748,8 +11117,9 @@ END
sub filter_v6_ucd {
- # Unicode 6.0 co-opted the name BELL for U+1F514, but we haven't
- # accepted that yet to allow for some deprecation cycles.
+ # Unicode 6.0 co-opted the name BELL for U+1F514, but until 5.17,
+ # it wasn't accepted, to allow for some deprecation cycles. This
+ # function is not called after 5.16
return if $_ !~ /^(?:0007|1F514|070F);/;
@@ -10761,7 +11131,7 @@ END
# http://www.unicode.org/versions/corrigendum8.html
$fields[$BIDI] = "AL";
}
- elsif ($^V lt v5.17.0) { # For 5.18 will convert to use Unicode's name
+ elsif ($^V lt v5.18.0) { # For 5.18 will convert to use Unicode's name
$fields[$CHARNAME] = "";
}
@@ -10883,6 +11253,7 @@ sub filter_arabic_shaping_line {
my $lc; # Table for lowercase mapping
my $tc;
my $uc;
+ my %special_casing_code_points;
sub setup_special_casing {
# SpecialCasing.txt contains the non-simple case change mappings. The
@@ -10949,15 +11320,26 @@ END
my $simple_name = 's' . $full_name;
my $simple = property_ref($simple_name);
$simple->initialize($full_table) if $simple->to_output_map();
-
- unless ($simple->to_output_map()) {
- $full_table->set_proxy_for($simple_name);
- }
}
return;
}
+ sub filter_2_1_8_special_casing_line {
+
+ # This version had duplicate entries in this file. Delete all but the
+ # first one
+ my @fields = split /\s*;\s*/, $_, -1; # -1 => retain trailing null
+ # fields
+ if (exists $special_casing_code_points{$fields[0]}) {
+ $_ = "";
+ return;
+ }
+
+ $special_casing_code_points{$fields[0]} = 1;
+ filter_special_casing_line(@_);
+ }
+
sub filter_special_casing_line {
# Change the format of $_ from SpecialCasing.txt into something that
# the generic handler understands. Each input line contains three
@@ -11105,7 +11487,7 @@ sub filter_old_style_case_folding {
# Create the map for simple only if are going to output it, for otherwise
# it takes no part in anything we do.
my $to_output_simple;
- my $non_final_folds;
+ my $all_folds;
sub setup_case_folding($) {
# Read in the case foldings in CaseFolding.txt. This handles both
@@ -11118,10 +11500,10 @@ sub filter_old_style_case_folding {
property_ref('Case_Folding')->set_proxy_for('Simple_Case_Folding');
}
- $non_final_folds = $perl->add_match_table("_Perl_Non_Final_Folds",
+ $all_folds = $perl->add_match_table("_Perl_Any_Folds",
Perl_Extension => 1,
Fate => $INTERNAL_ONLY,
- Description => "Code points that particpate in a multi-char fold and are not the final character of said fold",
+ Description => "Code points that particpate in some fold",
);
# If we ever wanted to show that these tables were combined, a new
@@ -11161,7 +11543,7 @@ END
return;
}
- if ($type eq 'T') { # Skip Turkic case folding, is locale dependent
+ if ($type =~ / ^ [IT] $/x) { # Skip Turkic case folding, is locale dependent
$_ = "";
return;
}
@@ -11174,14 +11556,21 @@ END
# so that _swash_inversion_hash() is able to construct closures
# without having to worry about F mappings.
if ($type eq 'C' || $type eq 'F' || $type eq 'I' || $type eq 'S') {
+ my $from = hex $range; # Assumes range is single
+ $all_folds->add_range($from, $from);
$_ = "$range; Case_Folding; "
. "$CMD_DELIM$REPLACE_CMD=$MULTIPLE_BEFORE$CMD_DELIM$map";
+
if ($type eq 'F') {
my @string = split " ", $map;
for my $i (0 .. @string - 1 -1) {
- $non_final_folds->add_range(hex $string[$i], hex $string[$i]);
+ my $decimal = hex $string[$i];
+ $all_folds->add_range($decimal, $decimal);
}
}
+ else {
+ $all_folds->add_range(hex $map, hex $map);
+ }
}
else {
$_ = "";
@@ -11468,26 +11857,26 @@ sub filter_blocks_lines {
# PropList.txt has been in Unicode since version 2.0. Until 3.1, it
# was in a completely different syntax. Ken Whistler of Unicode says
# that it was something he used as an aid for his own purposes, but
- # was never an official part of the standard. However, comments in
- # DAge.txt indicate that non-character code points were available in
- # the UCD as of 3.1. It is unclear to me (khw) how they could be
- # there except through this file (but on the other hand, they first
- # appeared there in 3.0.1), so maybe it was part of the UCD, and maybe
- # not. But the claim is that it was published as an aid to others who
- # might want some more information than was given in the official UCD
- # of the time. Many of the properties in it were incorporated into
- # the later PropList.txt, but some were not. This program uses this
- # early file to generate property tables that are otherwise not
- # accessible in the early UCD's, and most were probably not really
- # official at that time, so one could argue that it should be ignored,
- # and you can easily modify things to skip this. And there are bugs
- # in this file in various versions. (For example, the 2.1.9 version
- # removes from Alphabetic the CJK range starting at 4E00, and they
- # weren't added back in until 3.1.0.) Many of this file's properties
- # were later sanctioned, so this code generates tables for those
- # properties that aren't otherwise in the UCD of the time but
- # eventually did become official, and throws away the rest. Here is a
- # list of all the ones that are thrown away:
+ # was never an official part of the standard. Many of the properties
+ # in it were incorporated into the later PropList.txt, but some were
+ # not. This program uses this early file to generate property tables
+ # that are otherwise not accessible in the early UCD's. It does this
+ # for the ones that eventually became official, and don't appear to be
+ # too different in their contents from the later official version, and
+ # throws away the rest. It could be argued that the ones it generates
+ # were probably not really official at that time, so should be
+ # ignored. You can easily modify things to skip all of them by
+ # changing this function to just set $_ to "", and return; and to skip
+ # certain of them by by simply removing their declarations from
+ # get_old_property_aliases().
+ #
+ # Here is a list of all the ones that are thrown away:
+ # Alphabetic The definitions for this are very
+ # defective, so better to not mislead
+ # people into thinking it works.
+ # Instead the Perl extension of the
+ # same name is constructed from first
+ # principles.
# Bidi=* duplicates UnicodeData.txt
# Combining never made into official property;
# is \P{ccc=0}
@@ -11520,7 +11909,7 @@ sub filter_blocks_lines {
# Space different definition than eventual
# one.
# Titlecase duplicates UnicodeData.txt: gc=lt
- # Unassigned Code Value duplicates UnicodeData.txt: gc=cc
+ # Unassigned Code Value duplicates UnicodeData.txt: gc=cn
# Zero-width never made into official property;
# subset of gc=cf
# Most of the properties have the same names in this file as in later
@@ -11657,18 +12046,148 @@ sub filter_script_extensions_line {
return;
}
+sub generate_hst {
+
+ # Populates the Hangul Syllable Type property from first principles
+
+ my $file= shift;
+ Carp::carp_extra_args(\@_) if main::DEBUG && @_;
+
+ # These few ranges are hard-coded in.
+ $file->insert_lines(split /\n/, <<'END'
+1100..1159 ; L
+115F ; L
+1160..11A2 ; V
+11A8..11F9 ; T
+END
+);
+
+ # The Hangul syllables in version 1 are completely different than what came
+ # after, so just ignore them there.
+ if ($v_version lt v2.0.0) {
+ my $property = property_ref($file->property);
+ push @tables_that_may_be_empty, $property->table('LV')->complete_name;
+ push @tables_that_may_be_empty, $property->table('LVT')->complete_name;
+ return;
+ }
+
+ # The algorithmically derived syllables are almost all LVT ones, so
+ # initialize the whole range with that.
+ $file->insert_lines(sprintf "%04X..%04X; LVT\n",
+ $SBase, $SBase + $SCount -1);
+
+ # Those ones that aren't LVT are LV, and they occur at intervals of
+ # $TCount code points, starting with the first code point, at $SBase.
+ for (my $i = $SBase; $i < $SBase + $SCount; $i += $TCount) {
+ $file->insert_lines(sprintf "%04X..%04X; LV\n", $i, $i);
+ }
+
+ return;
+}
+
+sub generate_GCB {
+
+ # Populates the Grapheme Cluster Break property from first principles
+
+ my $file= shift;
+ Carp::carp_extra_args(\@_) if main::DEBUG && @_;
+
+ # All these definitions are from
+ # http://www.unicode.org/reports/tr29/tr29-3.html with confirmation
+ # from http://www.unicode.org/reports/tr29/tr29-4.html
+
+ foreach my $range ($gc->ranges) {
+
+ # Extend includes gc=Me and gc=Mn, while Control includes gc=Cc
+ # and gc=Cf
+ if ($range->value =~ / ^ M [en] $ /x) {
+ $file->insert_lines(sprintf "%04X..%04X; Extend",
+ $range->start, $range->end);
+ }
+ elsif ($range->value =~ / ^ C [cf] $ /x) {
+ $file->insert_lines(sprintf "%04X..%04X; Control",
+ $range->start, $range->end);
+ }
+ }
+ $file->insert_lines("2028; Control"); # Line Separator
+ $file->insert_lines("2029; Control"); # Paragraph Separator
+
+ $file->insert_lines("000D; CR");
+ $file->insert_lines("000A; LF");
+
+ # Also from http://www.unicode.org/reports/tr29/tr29-3.html.
+ foreach my $code_point ( qw{
+ 40000
+ 09BE 09D7 0B3E 0B57 0BBE 0BD7 0CC2 0CD5 0CD6
+ 0D3E 0D57 0DCF 0DDF FF9E FF9F 1D165 1D16E 1D16F
+ }
+ ) {
+ my $category = $gc->value_of(hex $code_point);
+ next if ! defined $category || $category eq 'Cn'; # But not if
+ # unassigned in this
+ # release
+ $file->insert_lines("$code_point; Extend");
+ }
+
+ my $hst = property_ref('Hangul_Syllable_Type');
+ if ($hst->count > 0) {
+ foreach my $range ($hst->ranges) {
+ $file->insert_lines(sprintf "%04X..%04X; %s",
+ $range->start, $range->end, $range->value);
+ }
+ }
+ else {
+ generate_hst($file);
+ }
+
+ return;
+}
+
sub setup_early_name_alias {
my $file= shift;
Carp::carp_extra_args(\@_) if main::DEBUG && @_;
+ # This has the effect of pretending that the Name_Alias property was
+ # available in all Unicode releases. Strictly speaking, this property
+ # should not be availabe in early releases, but doing this allows
+ # charnames.pm to work on older releases without change. Prior to v5.16
+ # it had these names hard-coded inside it. Unicode 6.1 came along and
+ # created these names, and so they were removed from charnames.
+
my $aliases = property_ref('Name_Alias');
- $aliases = Property->new('Name_Alias') if ! defined $aliases;
+ if (! defined $aliases) {
+ $aliases = Property->new('Name_Alias', Default_Map => "");
+ }
+
$file->insert_lines(get_old_name_aliases());
return;
}
sub get_old_name_aliases () {
+
+ # The Unicode_1_Name field, contains most of these names. One would
+ # expect, given the field's name, that its values would be fixed across
+ # versions, giving the true Unicode version 1 name for the character.
+ # Sadly, this is not the case. Actually Version 1.1.5 had no names for
+ # any of the controls; Version 2.0 introduced names for the C0 controls,
+ # and 3.0 introduced C1 names. 3.0.1 removed the name INDEX; and 3.2
+ # changed some names: it
+ # changed to parenthesized versions like "NEXT LINE" to
+ # "NEXT LINE (NEL)";
+ # changed PARTIAL LINE DOWN to PARTIAL LINE FORWARD
+ # changed PARTIAL LINE UP to PARTIAL LINE BACKWARD;;
+ # changed e.g. FILE SEPARATOR to INFORMATION SEPARATOR FOUR
+ # This list contains all the names that were defined so that
+ # charnames::vianame(), etc. understand them all EVEN if this version of
+ # Unicode didn't specify them (this could be construed as a bug).
+ # mktables elsewhere gives preference to the Unicode_1_Name field over
+ # these names, so that viacode() will return the correct value for that
+ # version of Unicode, except when that version doesn't define a name,
+ # viacode() will return one anyway (this also could be construed as a
+ # bug). But these potential "bugs" allow for the smooth working of code
+ # on earlier Unicode releases.
+
my @return = split /\n/, <<'END';
0000;NULL;control
0000;NUL;abbreviation
@@ -11684,7 +12203,6 @@ sub get_old_name_aliases () {
0005;ENQ;abbreviation
0006;ACKNOWLEDGE;control
0006;ACK;abbreviation
-0007;ALERT;control
0007;BELL;control
0007;BEL;abbreviation
0008;BACKSPACE;control
@@ -11877,6 +12395,19 @@ END
}
}
+ # ALERT did not come along until 6.0, at which point it became preferred
+ # over BELL, and was never in the Unicode_1_Name field. For the same
+ # reasons, that the other names are made known to all releases by this
+ # function, we make ALERT known too. By inserting it
+ # last in early releases, BELL is preferred over it; and vice-vers in 6.0
+ my $alert = '0007; ALERT; control';
+ if ($v_version lt v6.0.0) {
+ push @return, $alert;
+ }
+ else {
+ unshift @return, $alert;
+ }
+
return @return;
}
@@ -11915,16 +12446,53 @@ sub filter_early_version_name_alias_line {
sub finish_Unicode() {
# This routine should be called after all the Unicode files have been read
# in. It:
- # 1) Adds the mappings for code points missing from the files which have
+ # 1) Creates properties that are missing from the version of Unicode being
+ # compiled, and which, for whatever reason, are needed for the Perl
+ # core to function properly. These are minimally populated as
+ # necessary.
+ # 2) Adds the mappings for code points missing from the files which have
# defaults specified for them.
- # 2) At this this point all mappings are known, so it computes the type of
+ # 3) At this this point all mappings are known, so it computes the type of
# each property whose type hasn't been determined yet.
- # 3) Calculates all the regular expression match tables based on the
+ # 4) Calculates all the regular expression match tables based on the
# mappings.
- # 3) Calculates and adds the tables which are defined by Unicode, but
+ # 5) Calculates and adds the tables which are defined by Unicode, but
# which aren't derived by them, and certain derived tables that Perl
# uses.
+ # Folding information was introduced later into Unicode data. To get
+ # Perl's case ignore (/i) to work at all in releases that don't have
+ # folding, use the best available alternative, which is lower casing.
+ my $fold = property_ref('Case_Folding');
+ if ($fold->is_empty) {
+ $fold->initialize(property_ref('Lowercase_Mapping'));
+ $fold->add_note(join_lines(<<END
+WARNING: This table uses lower case as a substitute for missing fold
+information
+END
+ ));
+ }
+
+ # Multiple-character mapping was introduced later into Unicode data, so it
+ # is by default the simple version. If to output the simple versions and
+ # not present, just use the regular (which in these Unicode versions is
+ # the simple as well).
+ foreach my $map (qw { Uppercase_Mapping
+ Lowercase_Mapping
+ Titlecase_Mapping
+ Case_Folding
+ } )
+ {
+ my $simple = property_ref("Simple_$map");
+ next if ! $simple->is_empty;
+ if ($simple->to_output_map) {
+ $simple->initialize(property_ref($map));
+ }
+ else {
+ property_ref($map)->set_proxy_for($simple->name);
+ }
+ }
+
# For each property, fill in any missing mappings, and calculate the re
# match tables. If a property has more than one missing mapping, the
# default is a reference to a data structure, and requires data from other
@@ -12141,41 +12709,6 @@ END
my $Cs = $gc->table('Cs');
-
- # Folding information was introduced later into Unicode data. To get
- # Perl's case ignore (/i) to work at all in releases that don't have
- # folding, use the best available alternative, which is lower casing.
- my $fold = property_ref('Simple_Case_Folding');
- if ($fold->is_empty) {
- $fold->initialize(property_ref('Simple_Lowercase_Mapping'));
- $fold->add_note(join_lines(<<END
-WARNING: This table uses lower case as a substitute for missing fold
-information
-END
- ));
- }
-
- # Multiple-character mapping was introduced later into Unicode data. If
- # missing, use the single-characters maps as best available alternative
- foreach my $map (qw { Uppercase_Mapping
- Lowercase_Mapping
- Titlecase_Mapping
- Case_Folding
- } )
- {
- my $full = property_ref($map);
- if ($full->is_empty) {
- my $simple = property_ref('Simple_' . $map);
- $full->initialize($simple);
- $full->add_comment($simple->comment) if ($simple->comment);
- $full->add_note(join_lines(<<END
-WARNING: This table uses simple mapping (single-character only) as a
-substitute for missing multiple-character information
-END
- ));
- }
- }
-
# Create digit and case fold tables with the original file names for
# backwards compatibility with applications that read them directly.
my $Digit = Property->new("Legacy_Perl_Decimal_Digit",
@@ -12243,6 +12776,29 @@ END
return;
}
+sub pre_3_dot_1_Nl () {
+
+ # Return a range list for gc=nl for Unicode versions prior to 3.1, which
+ # is when Unicode's became fully usable. These code points were
+ # determined by inspection and experimentation. gc=nl is important for
+ # certain Perl-extension properties that should be available in all
+ # releases.
+
+ my $Nl = Range_List->new();
+ if (defined (my $official = $gc->table('Nl'))) {
+ $Nl += $official;
+ }
+ else {
+ $Nl->add_range(0x2160, 0x2182);
+ $Nl->add_range(0x3007, 0x3007);
+ $Nl->add_range(0x3021, 0x3029);
+ }
+ $Nl->add_range(0xFE20, 0xFE23);
+ $Nl->add_range(0x16EE, 0x16F0) if $v_version ge v3.0.0; # 3.0 was when
+ # these were added
+ return $Nl;
+}
+
sub compile_perl() {
# Create perl-defined tables. Almost all are part of the pseudo-property
# named 'perl' internally to this program. Many of these are recommended
@@ -12305,24 +12861,50 @@ sub compile_perl() {
# Very early releases didn't have blocks, so initialize ASCII ourselves if
# necessary
if ($ASCII->is_empty) {
- $ASCII->initialize([ 0..127 ]);
+ $ASCII->add_range(0, 127);
}
# Get the best available case definitions. Early Unicode versions didn't
# have Uppercase and Lowercase defined, so use the general category
- # instead for them.
+ # instead for them, modified by hard-coding in the code points each is
+ # missing.
my $Lower = $perl->add_match_table('Lower');
my $Unicode_Lower = property_ref('Lowercase');
if (defined $Unicode_Lower && ! $Unicode_Lower->is_empty) {
$Lower->set_equivalent_to($Unicode_Lower->table('Y'), Related => 1);
- $Unicode_Lower->table('Y')->set_caseless_equivalent(property_ref('Cased')->table('Y'));
- $Unicode_Lower->table('N')->set_caseless_equivalent(property_ref('Cased')->table('N'));
- $Lower->set_caseless_equivalent(property_ref('Cased')->table('Y'));
}
else {
- $Lower->set_equivalent_to($gc->table('Lowercase_Letter'),
- Related => 1);
+ $Lower += $gc->table('Lowercase_Letter');
+
+ # There are quite a few code points in Lower, that aren't in gc=lc,
+ # and not all are in all releases.
+ foreach my $code_point ( 0x00AA,
+ 0x00BA,
+ 0x02B0 .. 0x02B8,
+ 0x02C0 .. 0x02C1,
+ 0x02E0 .. 0x02E4,
+ 0x0345,
+ 0x037A,
+ 0x1D2C .. 0x1D6A,
+ 0x1D78,
+ 0x1D9B .. 0x1DBF,
+ 0x2071,
+ 0x207F,
+ 0x2090 .. 0x209C,
+ 0x2170 .. 0x217F,
+ 0x24D0 .. 0x24E9,
+ 0x2C7C .. 0x2C7D,
+ 0xA770,
+ 0xA7F8 .. 0xA7F9,
+ ) {
+ # Don't include the code point unless it is assigned in this
+ # release
+ my $category = $gc->value_of(hex $code_point);
+ next if ! defined $category || $category eq 'Cn';
+
+ $Lower += $code_point;
+ }
}
$Lower->add_alias('XPosixLower');
my $Posix_Lower = $perl->add_match_table("PosixLower",
@@ -12334,13 +12916,14 @@ sub compile_perl() {
my $Unicode_Upper = property_ref('Uppercase');
if (defined $Unicode_Upper && ! $Unicode_Upper->is_empty) {
$Upper->set_equivalent_to($Unicode_Upper->table('Y'), Related => 1);
- $Unicode_Upper->table('Y')->set_caseless_equivalent(property_ref('Cased')->table('Y'));
- $Unicode_Upper->table('N')->set_caseless_equivalent(property_ref('Cased')->table('N'));
- $Upper->set_caseless_equivalent(property_ref('Cased')->table('Y'));
}
else {
- $Upper->set_equivalent_to($gc->table('Uppercase_Letter'),
- Related => 1);
+
+ # Unlike Lower, there are only two ranges in Upper that aren't in
+ # gc=Lu, and all code points were assigned in all releases.
+ $Upper += $gc->table('Uppercase_Letter');
+ $Upper->add_range(0x2160, 0x216F); # Uppercase Roman numerals
+ $Upper->add_range(0x24B6, 0x24CF); # Circled Latin upper case letters
}
$Upper->add_alias('XPosixUpper');
my $Posix_Upper = $perl->add_match_table("PosixUpper",
@@ -12358,21 +12941,56 @@ sub compile_perl() {
# identical code points, but their caseless equivalents are not the same,
# one being 'Cased' and the other being 'LC', and so now must be kept as
# separate entities.
- $Title += $lt if defined $lt;
+ if (defined $lt) {
+ $Title += $lt;
+ }
+ else {
+ push @tables_that_may_be_empty, $Title->complete_name;
+ }
- # If this Unicode version doesn't have Cased, set up our own. From
- # Unicode 5.1: Definition D120: A character C is defined to be cased if
- # and only if C has the Lowercase or Uppercase property or has a
- # General_Category value of Titlecase_Letter.
my $Unicode_Cased = property_ref('Cased');
- unless (defined $Unicode_Cased) {
+ if (defined $Unicode_Cased) {
+ my $yes = $Unicode_Cased->table('Y');
+ my $no = $Unicode_Cased->table('N');
+ $Title->set_caseless_equivalent($yes);
+ if (defined $Unicode_Upper) {
+ $Unicode_Upper->table('Y')->set_caseless_equivalent($yes);
+ $Unicode_Upper->table('N')->set_caseless_equivalent($no);
+ }
+ $Upper->set_caseless_equivalent($yes);
+ if (defined $Unicode_Lower) {
+ $Unicode_Lower->table('Y')->set_caseless_equivalent($yes);
+ $Unicode_Lower->table('N')->set_caseless_equivalent($no);
+ }
+ $Lower->set_caseless_equivalent($yes);
+ }
+ else {
+ # If this Unicode version doesn't have Cased, set up the Perl
+ # extension from first principles. From Unicode 5.1: Definition D120:
+ # A character C is defined to be cased if and only if C has the
+ # Lowercase or Uppercase property or has a General_Category value of
+ # Titlecase_Letter.
my $cased = $perl->add_match_table('Cased',
Initialize => $Lower + $Upper + $Title,
Description => 'Uppercase or Lowercase or Titlecase',
);
- $Unicode_Cased = $cased;
+ # $notcased is purely for the caseless equivalents below
+ my $notcased = $perl->add_match_table('_Not_Cased',
+ Initialize => ~ $cased,
+ Fate => $INTERNAL_ONLY,
+ Description => 'All not-cased code points');
+ $Title->set_caseless_equivalent($cased);
+ if (defined $Unicode_Upper) {
+ $Unicode_Upper->table('Y')->set_caseless_equivalent($cased);
+ $Unicode_Upper->table('N')->set_caseless_equivalent($notcased);
+ }
+ $Upper->set_caseless_equivalent($cased);
+ if (defined $Unicode_Lower) {
+ $Unicode_Lower->table('Y')->set_caseless_equivalent($cased);
+ $Unicode_Lower->table('N')->set_caseless_equivalent($notcased);
+ }
+ $Lower->set_caseless_equivalent($cased);
}
- $Title->set_caseless_equivalent($Unicode_Cased->table('Y'));
# Similarly, set up our own Case_Ignorable property if this Unicode
# version doesn't have it. From Unicode 5.1: Definition D121: A character
@@ -12437,16 +13055,83 @@ sub compile_perl() {
}
else {
- # For early releases, we don't get it exactly right. The below
- # includes more than it should, which in 5.2 terms is: L + Nl +
- # Other_Alphabetic. Other_Alphabetic contains many characters from
- # Mn and Mc. It's better to match more than we should, than less than
- # we should.
+ # The Alphabetic property doesn't exist for early releases, so
+ # generate it. The actual definition, in 5.2 terms is:
+ #
+ # gc=L + gc=Nl + Other_Alphabetic
+ #
+ # Other_Alphabetic is also not defined in these early releases, but it
+ # contains one gc=So range plus most of gc=Mn and gc=Mc, so we add
+ # those last two as well, then subtract the relatively few of them that
+ # shouldn't have been added. (The gc=So range is the circled capital
+ # Latin characters. Early releases mistakenly didn't also include the
+ # lower-case versions of these characters, and so we don't either, to
+ # maintain consistency with those releases that first had this
+ # property.
$Alpha->initialize($gc->table('Letter')
- + $gc->table('Mn')
- + $gc->table('Mc'));
- $Alpha += $gc->table('Nl') if defined $gc->table('Nl');
+ + pre_3_dot_1_Nl()
+ + $gc->table('Mn')
+ + $gc->table('Mc')
+ );
+ $Alpha->add_range(0x24D0, 0x24E9); # gc=So
+ foreach my $range ( [ 0x0300, 0x0344 ],
+ [ 0x0346, 0x034E ],
+ [ 0x0360, 0x0362 ],
+ [ 0x0483, 0x0486 ],
+ [ 0x0591, 0x05AF ],
+ [ 0x06DF, 0x06E0 ],
+ [ 0x06EA, 0x06EC ],
+ [ 0x0740, 0x074A ],
+ 0x093C,
+ 0x094D,
+ [ 0x0951, 0x0954 ],
+ 0x09BC,
+ 0x09CD,
+ 0x0A3C,
+ 0x0A4D,
+ 0x0ABC,
+ 0x0ACD,
+ 0x0B3C,
+ 0x0B4D,
+ 0x0BCD,
+ 0x0C4D,
+ 0x0CCD,
+ 0x0D4D,
+ 0x0DCA,
+ [ 0x0E47, 0x0E4C ],
+ 0x0E4E,
+ [ 0x0EC8, 0x0ECC ],
+ [ 0x0F18, 0x0F19 ],
+ 0x0F35,
+ 0x0F37,
+ 0x0F39,
+ [ 0x0F3E, 0x0F3F ],
+ [ 0x0F82, 0x0F84 ],
+ [ 0x0F86, 0x0F87 ],
+ 0x0FC6,
+ 0x1037,
+ 0x1039,
+ [ 0x17C9, 0x17D3 ],
+ [ 0x20D0, 0x20DC ],
+ 0x20E1,
+ [ 0x302A, 0x302F ],
+ [ 0x3099, 0x309A ],
+ [ 0xFE20, 0xFE23 ],
+ [ 0x1D165, 0x1D169 ],
+ [ 0x1D16D, 0x1D172 ],
+ [ 0x1D17B, 0x1D182 ],
+ [ 0x1D185, 0x1D18B ],
+ [ 0x1D1AA, 0x1D1AD ],
+ ) {
+ if (ref $range) {
+ $Alpha->delete_range($range->[0], $range->[1]);
+ }
+ else {
+ $Alpha->delete_range($range, $range);
+ }
+ }
$Alpha->add_description('Alphabetic');
+ $Alpha->add_alias('Alphabetic');
}
$Alpha->add_alias('XPosixAlpha');
my $Posix_Alpha = $perl->add_match_table("PosixAlpha",
@@ -12473,7 +13158,19 @@ sub compile_perl() {
);
$Word->add_alias('XPosixWord');
my $Pc = $gc->table('Connector_Punctuation'); # 'Pc' Not in release 1
- $Word += $Pc if defined $Pc;
+ if (defined $Pc) {
+ $Word += $Pc;
+ }
+ else {
+ $Word += ord('_'); # Make sure this is a $Word
+ }
+ my $JC = property_ref('Join_Control'); # Wasn't in release 1
+ if (defined $JC) {
+ $Word += $JC->table('Y');
+ }
+ else {
+ $Word += 0x200C + 0x200D;
+ }
# This is a Perl extension, so the name doesn't begin with Posix.
my $PerlWord = $perl->add_match_table('PerlWord',
@@ -12512,23 +13209,24 @@ sub compile_perl() {
# No Posix equivalent for vertical space
my $Space = $perl->add_match_table('Space',
- Description => '\s including beyond ASCII plus vertical tab',
+ Description => '\s including beyond ASCII and vertical tab',
Initialize => $Blank + $VertSpace,
);
$Space->add_alias('XPosixSpace');
- $perl->add_match_table("PosixSpace",
+ my $posix_space = $perl->add_match_table("PosixSpace",
Description => "\\t, \\n, \\cK, \\f, \\r, and ' '. (\\cK is vertical tab)",
Initialize => $Space & $ASCII,
);
- # Perl's traditional space doesn't include Vertical Tab
+ # Perl's traditional space doesn't include Vertical Tab prior to v5.18
my $XPerlSpace = $perl->add_match_table('XPerlSpace',
Description => '\s, including beyond ASCII',
- Initialize => $Space - 0x000B,
+ #Initialize => $Space - 0x000B,
+ Initialize => $Space,
);
$XPerlSpace->add_alias('SpacePerl'); # A pre-existing synonym
my $PerlSpace = $perl->add_match_table('PerlSpace',
- Description => '\s, restricted to ASCII = [ \f\n\r\t]',
+ Description => '\s, restricted to ASCII = [ \f\n\r\t] plus vertical tab',
Initialize => $XPerlSpace & $ASCII,
);
@@ -12618,6 +13316,8 @@ sub compile_perl() {
}
else {
$PosixXDigit->initialize($Xdigit & $ASCII);
+ $PosixXDigit->add_alias('AHex');
+ $PosixXDigit->add_alias('Ascii_Hex_Digit');
}
$PosixXDigit->add_description('[0-9A-Fa-f]');
@@ -12641,7 +13341,8 @@ sub compile_perl() {
}
else {
- # This list came from 3.2 Soft_Dotted.
+ # This list came from 3.2 Soft_Dotted; all of these code points are in
+ # all releases
$CanonDCIJ->initialize([ 0x0069,
0x006A,
0x012F,
@@ -12654,98 +13355,250 @@ sub compile_perl() {
$CanonDCIJ = $CanonDCIJ & $Assigned;
}
- # These are used in Unicode's definition of \X
- my $begin = $perl->add_match_table('_X_Begin', Perl_Extension => 1,
- Fate => $INTERNAL_ONLY);
- my $extend = $perl->add_match_table('_X_Extend', Perl_Extension => 1,
+ # For backward compatibility, Perl has its own definition for IDStart.
+ # It is regular XID_Start plus the underscore, but all characters must be
+ # Word characters as well
+ my $XID_Start = property_ref('XID_Start');
+ my $perl_xids = $perl->add_match_table('_Perl_IDStart',
+ Perl_Extension => 1,
+ Fate => $INTERNAL_ONLY,
+ Initialize => ord('_')
+ );
+ if (defined $XID_Start
+ || defined ($XID_Start = property_ref('ID_Start')))
+ {
+ $perl_xids += $XID_Start->table('Y');
+ }
+ else {
+ # For Unicode versions that don't have the property, construct our own
+ # from first principles. The actual definition is:
+ # Letters
+ # + letter numbers (Nl)
+ # - Pattern_Syntax
+ # - Pattern_White_Space
+ # + stability extensions
+ # - NKFC modifications
+ #
+ # What we do in the code below is to include the identical code points
+ # that are in the first release that had Unicode's version of this
+ # property, essentially extrapolating backwards. There were no
+ # stability extensions until v4.1, so none are included; likewise in
+ # no Unicode version so far do subtracting PatSyn and PatWS make any
+ # difference, so those also are ignored.
+ $perl_xids += $gc->table('Letter') + pre_3_dot_1_Nl();
+
+ # We do subtract the NFKC modifications that are in the first version
+ # that had this property. We don't bother to test if they are in the
+ # version in question, because if they aren't, the operation is a
+ # no-op. The NKFC modifications are discussed in
+ # http://www.unicode.org/reports/tr31/#NFKC_Modifications
+ foreach my $range ( 0x037A,
+ 0x0E33,
+ 0x0EB3,
+ [ 0xFC5E, 0xFC63 ],
+ [ 0xFDFA, 0xFE70 ],
+ [ 0xFE72, 0xFE76 ],
+ 0xFE78,
+ 0xFE7A,
+ 0xFE7C,
+ 0xFE7E,
+ [ 0xFF9E, 0xFF9F ],
+ ) {
+ if (ref $range) {
+ $perl_xids->delete_range($range->[0], $range->[1]);
+ }
+ else {
+ $perl_xids->delete_range($range, $range);
+ }
+ }
+ }
+
+ $perl_xids &= $Word;
+
+ my $perl_xidc = $perl->add_match_table('_Perl_IDCont',
+ Perl_Extension => 1,
Fate => $INTERNAL_ONLY);
+ my $XIDC = property_ref('XID_Continue');
+ if (defined $XIDC
+ || defined ($XIDC = property_ref('ID_Continue')))
+ {
+ $perl_xidc += $XIDC->table('Y');
+ }
+ else {
+ # Similarly, we construct our own XIDC if necessary for early Unicode
+ # versions. The definition is:
+ # everything in XIDS
+ # + Gc=Mn
+ # + Gc=Mc
+ # + Gc=Nd
+ # + Gc=Pc
+ # - Pattern_Syntax
+ # - Pattern_White_Space
+ # + stability extensions
+ # - NFKC modifications
+ #
+ # The same thing applies to this as with XIDS for the PatSyn, PatWS,
+ # and stability extensions. There is a somewhat different set of NFKC
+ # mods to remove (and add in this case). The ones below make this
+ # have identical code points as in the first release that defined it.
+ $perl_xidc += $perl_xids
+ + $gc->table('L')
+ + $gc->table('Mn')
+ + $gc->table('Mc')
+ + $gc->table('Nd')
+ + 0x00B7
+ ;
+ if (defined (my $pc = $gc->table('Pc'))) {
+ $perl_xidc += $pc;
+ }
+ else { # 1.1.5 didn't have Pc, but these should have been in it
+ $perl_xidc += 0xFF3F;
+ $perl_xidc->add_range(0x203F, 0x2040);
+ $perl_xidc->add_range(0xFE33, 0xFE34);
+ $perl_xidc->add_range(0xFE4D, 0xFE4F);
+ }
+
+ # Subtract the NFKC mods
+ foreach my $range ( 0x037A,
+ [ 0xFC5E, 0xFC63 ],
+ [ 0xFDFA, 0xFE1F ],
+ 0xFE70,
+ [ 0xFE72, 0xFE76 ],
+ 0xFE78,
+ 0xFE7A,
+ 0xFE7C,
+ 0xFE7E,
+ ) {
+ if (ref $range) {
+ $perl_xidc->delete_range($range->[0], $range->[1]);
+ }
+ else {
+ $perl_xidc->delete_range($range, $range);
+ }
+ }
+ }
- # For backward compatibility, Perl has its own definition for IDStart
- # First, we include the underscore, and then the regular XID_Start also
- # have to be Words
- $perl->add_match_table('_Perl_IDStart',
- Perl_Extension => 1,
- Fate => $INTERNAL_ONLY,
- Initialize =>
- ord('_')
- + (property_ref('XID_Start')->table('Y') & $Word)
- );
+ $perl_xidc &= $Word;
- my $gcb = property_ref('Grapheme_Cluster_Break');
+ my $charname_begin = $perl->add_match_table('_Perl_Charname_Begin',
+ Perl_Extension => 1,
+ Fate => $INTERNAL_ONLY,
+ Initialize => $gc->table('Letter') & $Alpha & $perl_xids,
+ );
- # The 'extended' grapheme cluster came in 5.1. The non-extended
- # definition differs too much from the traditional Perl one to use.
- if (defined $gcb && defined $gcb->table('SpacingMark')) {
-
- # Note that assumes HST is defined; it came in an earlier release than
- # GCB. In the line below, two negatives means: yes hangul
- $begin += ~ property_ref('Hangul_Syllable_Type')
- ->table('Not_Applicable')
- + ~ ($gcb->table('Control')
- + $gcb->table('CR')
- + $gcb->table('LF'));
- $begin->add_comment('For use in \X; matches: Hangul_Syllable | ! Control');
-
- $extend += $gcb->table('Extend') + $gcb->table('SpacingMark');
- $extend->add_comment('For use in \X; matches: Extend | SpacingMark');
- }
- else { # Old definition, used on early releases.
- $extend += $gc->table('Mark')
- + 0x200C # ZWNJ
- + 0x200D; # ZWJ
- $begin += ~ $extend;
-
- # Here we may have a release that has the regular grapheme cluster
- # defined, or a release that doesn't have anything defined.
- # We set things up so the Perl core degrades gracefully, possibly with
- # placeholders that match nothing.
-
- if (! defined $gcb) {
- $gcb = Property->new('GCB', Status => $PLACEHOLDER);
- }
- my $hst = property_ref('HST');
- if (!defined $hst) {
- $hst = Property->new('HST', Status => $PLACEHOLDER);
- $hst->add_match_table('Not_Applicable',
- Initialize => $Any,
- Matches_All => 1);
- }
-
- # On some releases, here we may not have the needed tables for the
- # perl core, in some releases we may.
- foreach my $name (qw{ L LV LVT T V prepend }) {
- my $table = $gcb->table($name);
- if (! defined $table) {
- $table = $gcb->add_match_table($name);
- push @tables_that_may_be_empty, $table->complete_name;
- }
+ my $charname_continue = $perl->add_match_table('_Perl_Charname_Continue',
+ Perl_Extension => 1,
+ Fate => $INTERNAL_ONLY,
+ Initialize => $perl_xidc
+ + 0x0020 # SPACE
+ + 0x0028 # (
+ + 0x0029 # )
+ + 0x002D # -
+ + 0x00A0 # NBSP
+ );
- # The HST property predates the GCB one, and has identical tables
- # for some of them, so use it if we can.
- if ($table->is_empty
- && defined $hst
- && defined $hst->table($name))
- {
- $table += $hst->table($name);
- }
+ # These two tables are for matching \X, which is based on the 'extended'
+ # grapheme cluster, which came in 5.1; create empty ones if not already
+ # present. The straight 'grapheme cluster' (non-extended) is used prior
+ # to 5.1, and differs from the extended (see
+ # http://www.unicode.org/reports/tr29/) only by these two tables, so we
+ # get the older definition automatically when they are empty.
+ my $gcb = property_ref('Grapheme_Cluster_Break');
+ my $perl_prepend = $perl->add_match_table('_X_GCB_Prepend',
+ Perl_Extension => 1,
+ Fate => $INTERNAL_ONLY);
+ if (defined (my $gcb_prepend = $gcb->table('Prepend'))) {
+ $perl_prepend->set_equivalent_to($gcb_prepend, Related => 1);
+ }
+ else {
+ push @tables_that_may_be_empty, $perl_prepend->complete_name;
+ }
+
+ # All the tables with _X_ in their names are used in defining \X handling,
+ # and are based on the Unicode GCB property. Basically, \X matches:
+ # CR LF
+ # | Prepend* Begin Extend*
+ # | .
+ # Begin is: ( Special_Begin | ! Control )
+ # Begin is also: ( Regular_Begin | Special_Begin )
+ # where Regular_Begin is defined as ( ! Control - Special_Begin )
+ # Special_Begin is: ( Regional-Indicator+ | Hangul-syllable )
+ # Extend is: ( Grapheme_Extend | Spacing_Mark )
+ # Control is: [ GCB_Control | CR | LF ]
+ # Hangul-syllable is: ( T+ | ( L* ( L | ( LVT | ( V | LV ) V* ) T* ) ))
+
+ foreach my $gcb_name (qw{ L V T LV LVT }) {
+
+ # The perl internal extension's name is the gcb table name prepended
+ # with an '_X_'
+ my $perl_table = $perl->add_match_table('_X_GCB_' . $gcb_name,
+ Perl_Extension => 1,
+ Fate => $INTERNAL_ONLY,
+ Initialize => $gcb->table($gcb_name),
+ );
+ # Version 1 had mostly different Hangul syllables that were removed
+ # from later versions, so some of the tables may not apply.
+ if ($v_version lt v2.0) {
+ push @tables_that_may_be_empty, $perl_table->complete_name;
}
}
- # More GCB. If we found some hangul syllables, populate a combined
- # table.
+ # More GCB. Populate a combined hangul syllables table
my $lv_lvt_v = $perl->add_match_table('_X_LV_LVT_V',
Perl_Extension => 1,
Fate => $INTERNAL_ONLY);
- my $LV = $gcb->table('LV');
- if ($LV->is_empty) {
- push @tables_that_may_be_empty, $lv_lvt_v->complete_name;
- } else {
- $lv_lvt_v += $LV + $gcb->table('LVT') + $gcb->table('V');
- $lv_lvt_v->add_comment('For use in \X; matches: HST=LV | HST=LVT | HST=V');
+ $lv_lvt_v += $gcb->table('LV') + $gcb->table('LVT') + $gcb->table('V');
+ $lv_lvt_v->add_comment('For use in \X; matches: gcb=LV | gcb=LVT | gcb=V');
+
+ my $ri = $perl->add_match_table('_X_RI', Perl_Extension => 1,
+ Fate => $INTERNAL_ONLY);
+ if ($v_version ge v6.2) {
+ $ri += $gcb->table('RI');
+ }
+ else {
+ push @tables_that_may_be_empty, $ri->full_name;
+ }
+
+ my $specials_begin = $perl->add_match_table('_X_Special_Begin_Start',
+ Perl_Extension => 1,
+ Fate => $INTERNAL_ONLY,
+ Initialize => $lv_lvt_v
+ + $gcb->table('L')
+ + $gcb->table('T')
+ + $ri
+ );
+ $specials_begin->add_comment(join_lines( <<END
+For use in \\X; matches first (perhaps only) character of potential
+multi-character sequences that can begin an extended grapheme cluster. They
+need special handling because of their complicated nature.
+END
+ ));
+ my $regular_begin = $perl->add_match_table('_X_Regular_Begin',
+ Perl_Extension => 1,
+ Fate => $INTERNAL_ONLY,
+ Initialize => ~ $gcb->table('Control')
+ - $specials_begin
+ - $gcb->table('CR')
+ - $gcb->table('LF')
+ );
+ $regular_begin->add_comment(join_lines( <<END
+For use in \\X; matches first character of anything that can begin an extended
+grapheme cluster, except those that require special handling.
+END
+ ));
+
+ my $extend = $perl->add_match_table('_X_Extend', Perl_Extension => 1,
+ Fate => $INTERNAL_ONLY,
+ Initialize => $gcb->table('Extend')
+ );
+ if (defined (my $sm = $gcb->table('SpacingMark'))) {
+ $extend += $sm;
}
+ $extend->add_comment('For use in \X; matches: Extend | SpacingMark');
- # Was previously constructed to contain both Name and Unicode_1_Name
- my @composition = ('Name', 'Unicode_1_Name');
+ # End of GCB \X processing
+
+ my @composition = ('Name', 'Unicode_1_Name', 'Name_Alias');
if (@named_sequences) {
push @composition, 'Named_Sequence';
@@ -12757,56 +13610,54 @@ sub compile_perl() {
my $alias_sentence = "";
my %abbreviations;
my $alias = property_ref('Name_Alias');
- if (defined $alias) {
- push @composition, 'Name_Alias';
- $perl_charname->set_proxy_for('Name_Alias');
-
- # Add each entry in Name_Alias to Perl_Charnames. Where these go with
- # respect to any existing entry depends on the entry type.
- # Corrections go before said entry, as they should be returned in
- # preference over the existing entry. (A correction to a correction
- # should be later in the Name_Alias table, so it will correctly
- # precede the erroneous correction in Perl_Charnames.)
- #
- # Abbreviations go after everything else, so they are saved
- # temporarily in a hash for later.
- #
- # Controls are currently added afterwards. This is because Perl has
- # previously used the Unicode1 name, and so should still use that.
- # (Most of them will be the same anyway, in which case we don't add a
- # duplicate)
-
- $alias->reset_each_range;
- while (my ($range) = $alias->each_range) {
- next if $range->value eq "";
- my $code_point = $range->start;
- if ($code_point != $range->end) {
- Carp::my_carp_bug("Bad News. Expecting only one code point in the range $range. Just to keep going, using only the first code point;");
- }
- my ($value, $type) = split ': ', $range->value;
- my $replace_type;
- if ($type eq 'correction') {
- $replace_type = $MULTIPLE_BEFORE;
- }
- elsif ($type eq 'abbreviation') {
-
- # Save for later
- $abbreviations{$value} = $code_point;
- next;
- }
- elsif ($type eq 'control') {
- $replace_type = $MULTIPLE_AFTER;
- }
- else {
- $replace_type = $MULTIPLE_AFTER;
- }
+ $perl_charname->set_proxy_for('Name_Alias');
+
+ # Add each entry in Name_Alias to Perl_Charnames. Where these go with
+ # respect to any existing entry depends on the entry type. Corrections go
+ # before said entry, as they should be returned in preference over the
+ # existing entry. (A correction to a correction should be later in the
+ # Name_Alias table, so it will correctly precede the erroneous correction
+ # in Perl_Charnames.)
+ #
+ # Abbreviations go after everything else, so they are saved temporarily in
+ # a hash for later.
+ #
+ # Everything else is added added afterwards, which preserves the input
+ # ordering
- # Actually add; before or after current entry(ies) as determined
- # above.
+ foreach my $range ($alias->ranges) {
+ next if $range->value eq "";
+ my $code_point = $range->start;
+ if ($code_point != $range->end) {
+ Carp::my_carp_bug("Bad News. Expecting only one code point in the range $range. Just to keep going, using only the first code point;");
+ }
+ my ($value, $type) = split ': ', $range->value;
+ my $replace_type;
+ if ($type eq 'correction') {
+ $replace_type = $MULTIPLE_BEFORE;
+ }
+ elsif ($type eq 'abbreviation') {
- $perl_charname->add_duplicate($code_point, $value, Replace => $replace_type);
+ # Save for later
+ $abbreviations{$value} = $code_point;
+ next;
}
+ else {
+ $replace_type = $MULTIPLE_AFTER;
+ }
+
+ # Actually add; before or after current entry(ies) as determined
+ # above.
+
+ $perl_charname->add_duplicate($code_point, $value, Replace => $replace_type);
}
+ $alias_sentence = <<END;
+The Name_Alias property adds duplicate code point entries that are
+alternatives to the original name. If an addition is a corrected
+name, it will be physically first in the table. The original (less correct,
+but still valid) name will be next; then any alternatives, in no particular
+order; and finally any abbreviations, again in no particular order.
+END
# Now add the Unicode_1 names for the controls. The Unicode_1 names had
# precedence before 6.1, so should be first in the file; the other names
@@ -12831,23 +13682,27 @@ sub compile_perl() {
# We only add in the controls.
next if $gc->value_of($code_point) ne 'Cc';
+ # We reject this Unicode1 name for later Perls, as it is used for
+ # another code point
+ next if $unicode_1_value eq 'BELL' && $^V ge v5.17.0;
+
# This won't add an exact duplicate.
$perl_charname->add_duplicate($code_point, $unicode_1_value,
Replace => $before_or_after);
}
+ # But in this version only, the ALERT has precedence over BELL, the
+ # Unicode_1_Name that would otherwise have precedence.
+ if ($v_version eq v6.0.0) {
+ $perl_charname->add_duplicate(7, 'ALERT', Replace => $MULTIPLE_BEFORE);
+ }
+
# Now that have everything added, add in abbreviations after
- # everything else.
- foreach my $value (keys %abbreviations) {
+ # everything else. Sort so results don't change between runs of this
+ # program
+ foreach my $value (sort keys %abbreviations) {
$perl_charname->add_duplicate($abbreviations{$value}, $value,
Replace => $MULTIPLE_AFTER);
- $alias_sentence = <<END;
-The Name_Alias property adds duplicate code point entries that are
-alternatives to the original name. If an addition is a corrected
-name, it will be physically first in the table. The original (less correct,
-but still valid) name will be next; then any alternatives, in no particular
-order; and finally any abbreviations, again in no particular order.
-END
}
my $comment;
@@ -13001,8 +13856,10 @@ END
# This separates out the non-characters from the other unassigneds, so
# can give different annotations for each.
$unassigned_sans_noncharacters = Range_List->new(
- Initialize => $gc->table('Unassigned')
- & property_ref('Noncharacter_Code_Point')->table('N'));
+ Initialize => $gc->table('Unassigned'));
+ if (defined (my $nonchars = property_ref('Noncharacter_Code_Point'))) {
+ $unassigned_sans_noncharacters &= $nonchars->table('N');
+ }
for (my $i = 0; $i <= $MAX_UNICODE_CODEPOINT; $i++ ) {
$i = populate_char_info($i); # Note sets $i so may cause skips
@@ -13237,8 +14094,8 @@ sub add_perl_synonyms() {
&& ($actual->property != $block || $prefix eq 'In_'))
{
print simple_fold(join_lines(<<END
-There is already an alias named $proposed_name (from " . $pre_existing . "),
-so not creating this alias for " . $actual
+There is already an alias named $proposed_name (from $pre_existing),
+so not creating this alias for $actual
END
), "", 4);
}
@@ -13662,6 +14519,11 @@ sub make_re_pod_entries($) {
my $status_info = $input_table->status_info;
my $caseless_equivalent = $input_table->caseless_equivalent;
+ # Don't mention a placeholder equivalent as it isn't to be listed in the
+ # pod
+ $caseless_equivalent = 0 if $caseless_equivalent != 0
+ && $caseless_equivalent->fate > $ORDINARY;
+
my $entry_for_first_table; # The entry for the first table output.
# Almost certainly, it is the parent.
@@ -13675,7 +14537,10 @@ sub make_re_pod_entries($) {
# First, gather all the info that applies to this table as a whole.
- push @zero_match_tables, $table if $count == 0;
+ push @zero_match_tables, $table if $count == 0
+ # Don't mention special tables
+ # as being zero length
+ && $table->fate == $ORDINARY;
my $table_property = $table->property;
@@ -14480,7 +15345,7 @@ the left brace completely changes the meaning of the construct, from "match"
(for C<\\p{}>) to "doesn't match" (for C<\\P{}>). Casing in this document is
for improved legibility.
-Also, white space, hyphens, and underscores are also normally ignored
+Also, white space, hyphens, and underscores are normally ignored
everywhere between the {braces}, and hence can be freely added or removed
even if the C</x> modifier hasn't been specified on the regular expression.
But $a_bold_stricter at the beginning of an entry in the table below
@@ -14955,8 +15820,8 @@ package charnames;
my \$run_on_code_point_re = qr/$run_on_code_point_re/;
my \$code_point_re = qr/$code_point_re/;
- # In the following hash, the keys are the bases of names which includes
- # the code point in the name, like CJK UNIFIED IDEOGRAPH-4E01. The values
+ # In the following hash, the keys are the bases of names which include
+ # the code point in the name, like CJK UNIFIED IDEOGRAPH-4E01. The value
# of each key is another hash which is used to get the low and high ends
# for each range of code points that apply to the name.
my %names_ending_in_code_point = (
@@ -15192,37 +16057,42 @@ sub make_UCD () {
# Make a list of all combinations of properties/values that are suppressed.
my @suppressed;
- foreach my $property_name (keys %why_suppressed) {
+ if (! $debug_skip) { # This tends to fail in this debug mode
+ foreach my $property_name (keys %why_suppressed) {
- # Just the value
- my $value_name = $1 if $property_name =~ s/ = ( .* ) //x;
+ # Just the value
+ my $value_name = $1 if $property_name =~ s/ = ( .* ) //x;
- # The hash may contain properties not in this release of Unicode
- next unless defined (my $property = property_ref($property_name));
+ # The hash may contain properties not in this release of Unicode
+ next unless defined (my $property = property_ref($property_name));
- # Find all combinations
- foreach my $prop_alias ($property->aliases) {
- my $prop_alias_name = standardize($prop_alias->name);
+ # Find all combinations
+ foreach my $prop_alias ($property->aliases) {
+ my $prop_alias_name = standardize($prop_alias->name);
- # If no =value, there's just one combination possibe for this
- if (! $value_name) {
+ # If no =value, there's just one combination possibe for this
+ if (! $value_name) {
- # The property may be suppressed, but there may be a proxy for
- # it, so it shouldn't be listed as suppressed
- next if $prop_alias->ucd;
- push @suppressed, $prop_alias_name;
- }
- else { # Otherwise
- foreach my $value_alias ($property->table($value_name)->aliases)
- {
- next if $value_alias->ucd;
+ # The property may be suppressed, but there may be a proxy
+ # for it, so it shouldn't be listed as suppressed
+ next if $prop_alias->ucd;
+ push @suppressed, $prop_alias_name;
+ }
+ else { # Otherwise
+ foreach my $value_alias
+ ($property->table($value_name)->aliases)
+ {
+ next if $value_alias->ucd;
- push @suppressed, "$prop_alias_name="
- . standardize($value_alias->name);
+ push @suppressed, "$prop_alias_name="
+ . standardize($value_alias->name);
+ }
}
}
}
}
+ @suppressed = sort @suppressed; # So doesn't change between runs of this
+ # program
# Convert the structure below (designed for Name.pm) to a form that UCD
# wants, so it doesn't have to modify it at all; i.e. so that it includes
@@ -15373,17 +16243,19 @@ sub write_all_tables() {
# For each property ...
# (sort so that if there is an immutable file name, it has precedence, so
- # some other property can't come in and take over its file name. If b's
- # file name is defined, will return 1, meaning to take it first; don't
- # care if both defined, as they had better be different anyway. And the
- # property named 'Perl' needs to be first (it doesn't have any immutable
- # file name) because empty properties are defined in terms of it's table
- # named 'Any'.)
+ # some other property can't come in and take over its file name. (We
+ # don't care if both defined, as they had better be different anyway.)
+ # The property named 'Perl' needs to be first (it doesn't have any
+ # immutable file name) because empty properties are defined in terms of
+ # it's table named 'Any'.) We also sort by the property's name. This is
+ # just for repeatability of the outputs between runs of this program, but
+ # does not affect correctness.
PROPERTY:
- foreach my $property (sort { return -1 if $a == $perl;
- return 1 if $b == $perl;
- return defined $b->file
- } property_ref('*'))
+ foreach my $property ($perl,
+ sort { return -1 if defined $a->file;
+ return 1 if defined $b->file;
+ return $a->name cmp $b->name;
+ } grep { $_ != $perl } property_ref('*'))
{
my $type = $property->type;
@@ -15549,17 +16421,18 @@ sub write_all_tables() {
}
}
}
- elsif ($count == $MAX_UNICODE_CODEPOINTS) {
- if ($table == $property || $table->leader == $table) {
+ elsif ($count == $MAX_UNICODE_CODEPOINTS
+ && ($table == $property || $table->leader == $table)
+ && $table->property->status ne $PLACEHOLDER)
+ {
Carp::my_carp("$table unexpectedly matches all Unicode code points. Proceeding anyway.");
- }
}
- if ($table->fate == $SUPPRESSED) {
+ if ($table->fate >= $SUPPRESSED) {
if (! $is_property) {
my @children = $table->children;
foreach my $child (@children) {
- if ($child->fate != $SUPPRESSED) {
+ if ($child->fate < $SUPPRESSED) {
Carp::my_carp_bug("'$table' is suppressed and has a child '$child' which isn't");
}
}
@@ -15825,6 +16698,7 @@ sub write_all_tables() {
make_UCD;
make_property_test_script() if $make_test_script;
+ make_normalization_test_script() if $make_norm_test_script;
return;
}
@@ -16110,8 +16984,10 @@ sub make_property_test_script() {
# or multiple lines. main::write doesn't count the lines.
my @output;
- foreach my $property (property_ref('*')) {
- foreach my $table ($property->tables) {
+ # Sort these so get results in same order on different runs of this
+ # program
+ foreach my $property (sort { $a->name cmp $b->name } property_ref('*')) {
+ foreach my $table (sort { $a->name cmp $b->name } $property->tables) {
# Find code points that match, and don't match this table.
my $valid = $table->get_valid_code_point;
@@ -16275,6 +17151,82 @@ sub make_property_test_script() {
return;
}
+sub make_normalization_test_script() {
+ print "Making normalization test script\n" if $verbosity >= $PROGRESS;
+
+ my $n_path = 'TestNorm.pl';
+
+ unshift @normalization_tests, <<'END';
+use utf8;
+use Test::More;
+
+sub ord_string { # Convert packed ords to printable string
+ use charnames ();
+ return "'" . join("", map { '\N{' . charnames::viacode($_) . '}' }
+ unpack "U*", shift) . "'";
+ #return "'" . join(" ", map { sprintf "%04X", $_ } unpack "U*", shift) . "'";
+}
+
+sub Test_N {
+ my ($source, $nfc, $nfd, $nfkc, $nfkd) = @_;
+ my $display_source = ord_string($source);
+ my $display_nfc = ord_string($nfc);
+ my $display_nfd = ord_string($nfd);
+ my $display_nfkc = ord_string($nfkc);
+ my $display_nfkd = ord_string($nfkd);
+
+ use Unicode::Normalize;
+ # NFC
+ # nfc == toNFC(source) == toNFC(nfc) == toNFC(nfd)
+ # nfkc == toNFC(nfkc) == toNFC(nfkd)
+ #
+ # NFD
+ # nfd == toNFD(source) == toNFD(nfc) == toNFD(nfd)
+ # nfkd == toNFD(nfkc) == toNFD(nfkd)
+ #
+ # NFKC
+ # nfkc == toNFKC(source) == toNFKC(nfc) == toNFKC(nfd) ==
+ # toNFKC(nfkc) == toNFKC(nfkd)
+ #
+ # NFKD
+ # nfkd == toNFKD(source) == toNFKD(nfc) == toNFKD(nfd) ==
+ # toNFKD(nfkc) == toNFKD(nfkd)
+
+ is(NFC($source), $nfc, "NFC($display_source) eq $display_nfc");
+ is(NFC($nfc), $nfc, "NFC($display_nfc) eq $display_nfc");
+ is(NFC($nfd), $nfc, "NFC($display_nfd) eq $display_nfc");
+ is(NFC($nfkc), $nfkc, "NFC($display_nfkc) eq $display_nfkc");
+ is(NFC($nfkd), $nfkc, "NFC($display_nfkd) eq $display_nfkc");
+
+ is(NFD($source), $nfd, "NFD($display_source) eq $display_nfd");
+ is(NFD($nfc), $nfd, "NFD($display_nfc) eq $display_nfd");
+ is(NFD($nfd), $nfd, "NFD($display_nfd) eq $display_nfd");
+ is(NFD($nfkc), $nfkd, "NFD($display_nfkc) eq $display_nfkd");
+ is(NFD($nfkd), $nfkd, "NFD($display_nfkd) eq $display_nfkd");
+
+ is(NFKC($source), $nfkc, "NFKC($display_source) eq $display_nfkc");
+ is(NFKC($nfc), $nfkc, "NFKC($display_nfc) eq $display_nfkc");
+ is(NFKC($nfd), $nfkc, "NFKC($display_nfd) eq $display_nfkc");
+ is(NFKC($nfkc), $nfkc, "NFKC($display_nfkc) eq $display_nfkc");
+ is(NFKC($nfkd), $nfkc, "NFKC($display_nfkd) eq $display_nfkc");
+
+ is(NFKD($source), $nfkd, "NFKD($display_source) eq $display_nfkd");
+ is(NFKD($nfc), $nfkd, "NFKD($display_nfc) eq $display_nfkd");
+ is(NFKD($nfd), $nfkd, "NFKD($display_nfd) eq $display_nfkd");
+ is(NFKD($nfkc), $nfkd, "NFKD($display_nfkc) eq $display_nfkd");
+ is(NFKD($nfkd), $nfkd, "NFKD($display_nfkd) eq $display_nfkd");
+}
+END
+
+ &write($n_path,
+ 1, # Is utf8;
+ [
+ @normalization_tests,
+ 'done_testing();'
+ ]);
+ return;
+}
+
# This is a list of the input files and how to handle them. The files are
# processed in their order in this list. Some reordering is possible if
# desired, but the v0 files should be first, and the extracted before the
@@ -16364,10 +17316,25 @@ my @input_file_objects = (
# And for 5.14 Perls with 6.0,
# have to also make changes
- : ($v_version ge v6.0.0)
+ : ($v_version ge v6.0.0
+ && $^V lt v5.17.0)
? \&filter_v6_ucd
: undef),
+ # Early versions did not have the
+ # proper Unicode_1 names for the
+ # controls
+ (($v_version lt v3.0.0)
+ ? \&filter_early_U1_names
+ : undef),
+
+ # Early versions did not correctly
+ # use the later method for giving
+ # decimal digit values
+ (($v_version le v3.2.0)
+ ? \&filter_bad_Nd_ucd
+ : undef),
+
# And the main filter
\&filter_UnicodeData_line,
],
@@ -16398,7 +17365,9 @@ my @input_file_objects = (
Each_Line_Handler => \&filter_unihan_line,
),
Input_file->new('SpecialCasing.txt', v2.1.8,
- Each_Line_Handler => \&filter_special_casing_line,
+ Each_Line_Handler => ($v_version eq 2.1.8)
+ ? \&filter_2_1_8_special_casing_line
+ : \&filter_special_casing_line,
Pre_Handler => \&setup_special_casing,
Has_Missings_Defaults => $IGNORED,
),
@@ -16424,9 +17393,17 @@ my @input_file_objects = (
),
Input_file->new('BidiMirroring.txt', v3.0.1,
Property => 'Bidi_Mirroring_Glyph',
+ Has_Missings_Defaults => ($v_version lt v6.2.0)
+ ? $NO_DEFAULTS
+ # Is <none> which doesn't mean
+ # anything to us, we will use the
+ # null string
+ : $IGNORED,
+
),
- Input_file->new("NormalizationTest.txt", v3.0.1,
- Skip => 'Validation Tests',
+ Input_file->new("NormTest.txt", v3.0.0,
+ Handler => \&process_NormalizationsTest,
+ Skip => ($make_norm_test_script) ? 0 : 'Validation Tests',
),
Input_file->new('CaseFolding.txt', v3.0.1,
Pre_Handler => \&setup_case_folding,
@@ -16454,16 +17431,23 @@ my @input_file_objects = (
? \&filter_old_style_normalization_lines
: undef),
),
- Input_file->new('HangulSyllableType.txt', v4.0.0,
+ Input_file->new('HangulSyllableType.txt', v0,
Has_Missings_Defaults => $NOT_IGNORED,
- Property => 'Hangul_Syllable_Type'),
+ Property => 'Hangul_Syllable_Type',
+ Pre_Handler => ($v_version lt v4.0.0)
+ ? \&generate_hst
+ : undef,
+ ),
Input_file->new("$AUXILIARY/WordBreakProperty.txt", v4.1.0,
Property => 'Word_Break',
Has_Missings_Defaults => $NOT_IGNORED,
),
- Input_file->new("$AUXILIARY/GraphemeBreakProperty.txt", v4.1.0,
+ Input_file->new("$AUXILIARY/GraphemeBreakProperty.txt", v0,
Property => 'Grapheme_Cluster_Break',
Has_Missings_Defaults => $NOT_IGNORED,
+ Pre_Handler => ($v_version lt v4.1.0)
+ ? \&generate_GCB
+ : undef,
),
Input_file->new("$AUXILIARY/GCBTest.txt", v4.1.0,
Handler => \&process_GCB_test,
@@ -16484,7 +17468,7 @@ my @input_file_objects = (
Input_file->new('NamedSequences.txt', v4.1.0,
Handler => \&process_NamedSequences
),
- Input_file->new('NameAliases.txt', v5.0.0,
+ Input_file->new('NameAliases.txt', v0,
Property => 'Name_Alias',
Pre_Handler => ($v_version le v6.0.0)
? \&setup_early_name_alias
@@ -16700,7 +17684,7 @@ END
# Create the list of input files from the objects we have defined, plus
# version
-my @input_files = 'version';
+my @input_files = qw(version Makefile);
foreach my $object (@input_file_objects) {
my $file = $object->file;
next if ! defined $file; # Not all objects have files
@@ -16731,6 +17715,10 @@ foreach my $in (@input_files) {
}
}
+# We use 'Makefile' just to see if it has changed since the last time we
+# rebuilt. Now discard it.
+@input_files = grep { $_ ne 'Makefile' } @input_files;
+
my $rebuild = $write_unchanged_files # Rebuild: if unconditional rebuild
|| ! scalar @mktables_list_output_files # or if no outputs known
|| $old_start_time < $most_recent; # or out-of-date
diff --git a/gnu/usr.bin/perl/lib/unicore/version b/gnu/usr.bin/perl/lib/unicore/version
index dfda3e0b4f0..6abaeb2f907 100644
--- a/gnu/usr.bin/perl/lib/unicore/version
+++ b/gnu/usr.bin/perl/lib/unicore/version
@@ -1 +1 @@
-6.1.0
+6.2.0
diff --git a/gnu/usr.bin/perl/lib/utf8.pm b/gnu/usr.bin/perl/lib/utf8.pm
index b59eabfbd7c..1d6992ccf03 100644
--- a/gnu/usr.bin/perl/lib/utf8.pm
+++ b/gnu/usr.bin/perl/lib/utf8.pm
@@ -2,7 +2,7 @@ package utf8;
$utf8::hint_bits = 0x00800000;
-our $VERSION = '1.09';
+our $VERSION = '1.10';
sub import {
$^H |= $utf8::hint_bits;
@@ -170,14 +170,14 @@ L<Encode>.
=item * $flag = utf8::is_utf8(STRING)
-(Since Perl 5.8.1) Test whether STRING is in UTF-8 internally.
+(Since Perl 5.8.1) Test whether STRING is encoded internally in UTF-8.
Functionally the same as Encode::is_utf8().
=item * $flag = utf8::valid(STRING)
[INTERNAL] Test whether STRING is in a consistent state regarding
-UTF-8. Will return true is well-formed UTF-8 and has the UTF-8 flag
-on B<or> if string is held as bytes (both these states are 'consistent').
+UTF-8. Will return true if it is well-formed UTF-8 and has the UTF-8 flag
+on B<or> if STRING is held as bytes (both these states are 'consistent').
Main reason for this routine is to allow Perl's testsuite to check
that operations have left strings in a consistent state. You most
probably want to use utf8::is_utf8() instead.
diff --git a/gnu/usr.bin/perl/lib/utf8_heavy.pl b/gnu/usr.bin/perl/lib/utf8_heavy.pl
index 23e06f9a9ac..fc422835abc 100644
--- a/gnu/usr.bin/perl/lib/utf8_heavy.pl
+++ b/gnu/usr.bin/perl/lib/utf8_heavy.pl
@@ -1,6 +1,8 @@
package utf8;
use strict;
use warnings;
+use re "/aa"; # So we won't even try to look at above Latin1, potentially
+ # resulting in a recursive call
sub DEBUG () { 0 }
$|=1 if DEBUG;
@@ -244,7 +246,7 @@ sub _loose_name ($) {
# minus
# Remove underscores between digits.
- $part =~ s/( ?<= [0-9] ) _ (?= [0-9] ) //xg;
+ $part =~ s/(?<= [0-9] ) _ (?= [0-9] ) //xg;
# No leading zeros (but don't make a single '0'
# into a null string)
diff --git a/gnu/usr.bin/perl/lib/version.pm b/gnu/usr.bin/perl/lib/version.pm
index 3fcc5aadc6b..27774bd9c28 100644
--- a/gnu/usr.bin/perl/lib/version.pm
+++ b/gnu/usr.bin/perl/lib/version.pm
@@ -6,7 +6,7 @@ use strict;
use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv);
-$VERSION = 0.99;
+$VERSION = 0.9902;
$CLASS = 'version';
diff --git a/gnu/usr.bin/perl/lib/version/t/01base.t b/gnu/usr.bin/perl/lib/version/t/01base.t
index f5784cd568c..9aa8052a303 100644
--- a/gnu/usr.bin/perl/lib/version/t/01base.t
+++ b/gnu/usr.bin/perl/lib/version/t/01base.t
@@ -9,7 +9,7 @@ use Test::More qw/no_plan/;
BEGIN {
(my $coretests = $0) =~ s'[^/]+\.t'coretests.pm';
require $coretests;
- use_ok('version', 0.97);
+ use_ok('version', 0.9902);
}
diag "Tests with base class" unless $ENV{PERL_CORE};
@@ -32,3 +32,15 @@ my $v = eval {
return IO::Handle->VERSION;
};
ok defined($v), 'Fix for RT #47980';
+
+{ # https://rt.cpan.org/Ticket/Display.html?id=81085
+ eval { version::new() };
+ like $@, qr'Usage: version::new\(class, version\)',
+ 'No bus err when called as function';
+ eval { $x = 1; print version::new };
+ like $@, qr'Usage: version::new\(class, version\)',
+ 'No implicit object creation when called as function';
+ eval { $x = "version"; print version::new };
+ like $@, qr'Usage: version::new\(class, version\)',
+ 'No implicit object creation when called as function';
+}
diff --git a/gnu/usr.bin/perl/lib/version/t/02derived.t b/gnu/usr.bin/perl/lib/version/t/02derived.t
index 3ea847eb140..c7afe0f9af8 100644
--- a/gnu/usr.bin/perl/lib/version/t/02derived.t
+++ b/gnu/usr.bin/perl/lib/version/t/02derived.t
@@ -10,7 +10,7 @@ use File::Temp qw/tempfile/;
BEGIN {
(my $coretests = $0) =~ s'[^/]+\.t'coretests.pm';
require $coretests;
- use_ok("version", 0.97);
+ use_ok("version", 0.9902);
# If we made it this far, we are ok.
}
diff --git a/gnu/usr.bin/perl/lib/version/t/03require.t b/gnu/usr.bin/perl/lib/version/t/03require.t
index 90d33ebabeb..66c6bd3a85b 100644
--- a/gnu/usr.bin/perl/lib/version/t/03require.t
+++ b/gnu/usr.bin/perl/lib/version/t/03require.t
@@ -14,7 +14,7 @@ BEGIN {
# Don't want to use, because we need to make sure that the import doesn't
# fire just yet (some code does this to avoid importing qv() and delare()).
require_ok("version");
-is $version::VERSION, 0.99, "Make sure we have the correct class";
+is $version::VERSION, 0.9902, "Make sure we have the correct class";
ok(!"main"->can("qv"), "We don't have the imported qv()");
ok(!"main"->can("declare"), "We don't have the imported declare()");
diff --git a/gnu/usr.bin/perl/lib/version/t/05sigdie.t b/gnu/usr.bin/perl/lib/version/t/05sigdie.t
index 2a333392e5e..188f185587a 100644
--- a/gnu/usr.bin/perl/lib/version/t/05sigdie.t
+++ b/gnu/usr.bin/perl/lib/version/t/05sigdie.t
@@ -15,7 +15,7 @@ BEGIN {
BEGIN {
- use version 0.97;
+ use version 0.9902;
}
pass "Didn't get caught by the wrong DIE handler, which is a good thing";
diff --git a/gnu/usr.bin/perl/lib/version/t/06noop.t b/gnu/usr.bin/perl/lib/version/t/06noop.t
index 63f707300b1..9d113ed6e41 100644
--- a/gnu/usr.bin/perl/lib/version/t/06noop.t
+++ b/gnu/usr.bin/perl/lib/version/t/06noop.t
@@ -7,7 +7,7 @@
use Test::More qw/no_plan/;
BEGIN {
- use_ok('version', 0.97);
+ use_ok('version', 0.9902);
}
my $v1 = version->new('1.2');
diff --git a/gnu/usr.bin/perl/lib/version/t/07locale.t b/gnu/usr.bin/perl/lib/version/t/07locale.t
index 506b1bf50f8..3b67f3d77af 100644
--- a/gnu/usr.bin/perl/lib/version/t/07locale.t
+++ b/gnu/usr.bin/perl/lib/version/t/07locale.t
@@ -8,13 +8,15 @@ use File::Basename;
use File::Temp qw/tempfile/;
use POSIX qw/locale_h/;
use Test::More tests => 7;
+use Config;
BEGIN {
- use_ok('version', 0.97);
+ use_ok('version', 0.9902);
}
SKIP: {
skip 'No locale testing for Perl < 5.6.0', 6 if $] < 5.006;
+ skip 'No locale testing without d_setlocale', 6 if(!$Config{d_setlocale});
# test locale handling
my $warning;
local $SIG{__WARN__} = sub { $warning = $_[0] };
diff --git a/gnu/usr.bin/perl/lib/version/t/coretests.pm b/gnu/usr.bin/perl/lib/version/t/coretests.pm
index 3f785e47263..15a1f1ff8c9 100644
--- a/gnu/usr.bin/perl/lib/version/t/coretests.pm
+++ b/gnu/usr.bin/perl/lib/version/t/coretests.pm
@@ -505,6 +505,7 @@ EOF
}
{
+ local $Data::Dumper::Sortkeys= 1;
# http://rt.cpan.org/Public/Bug/Display.html?id=30004
my $v1 = $CLASS->$method("v0.1_1");
(my $alpha1 = Dumper($v1)) =~ s/.+'alpha' => ([^,]+),.+/$1/ms;
@@ -538,9 +539,10 @@ EOF
{
# https://rt.cpan.org/Ticket/Display.html?id=72365
# https://rt.perl.org/rt3/Ticket/Display.html?id=102586
+ # https://rt.cpan.org/Ticket/Display.html?id=78328
eval 'my $v = $CLASS->$method("version")';
like $@, qr/Invalid version format/,
- 'The string "version" is not a version';
+ "The string 'version' is not a version for $method";
eval 'my $v = $CLASS->$method("ver510n")';
like $@, qr/Invalid version format/,
'All strings starting with "v" are not versions';
@@ -593,6 +595,14 @@ SKIP: {
eval { _112478->VERSION(9e99) };
unlike $@, qr/panic/, '->VERSION(9e99) does not panic';
}
+
+ { # https://rt.cpan.org/Ticket/Display.html?id=79259
+ my $v = $CLASS->new("0.52_0");
+ ok $v->is_alpha, 'Just checking';
+ is $v->numify, '0.520', 'Correctly nummified';
+ }
+
}
1;
+
diff --git a/gnu/usr.bin/perl/lib/warnings.pm b/gnu/usr.bin/perl/lib/warnings.pm
index 3b2d87dc82d..7d988cbd992 100644
--- a/gnu/usr.bin/perl/lib/warnings.pm
+++ b/gnu/usr.bin/perl/lib/warnings.pm
@@ -5,7 +5,7 @@
package warnings;
-our $VERSION = '1.13';
+our $VERSION = '1.18';
# Verify that we're called correctly so that warnings will work.
# see also strict.pm.
@@ -225,119 +225,138 @@ our %Offsets = (
'non_unicode' => 96,
'nonchar' => 98,
'surrogate' => 100,
+
+ # Warnings Categories added in Perl 5.017
+
+ 'experimental' => 102,
+ 'experimental::lexical_subs'=> 104,
+ 'experimental::lexical_topic'=> 106,
+ 'experimental::regex_sets'=> 108,
+ 'experimental::smartmatch'=> 110,
);
our %Bits = (
- 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", # [0..50]
- 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [29]
- 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [30]
- 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
- 'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
- 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [22]
- 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
- 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [31]
- 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
- 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
- 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
- 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [47]
- 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [46]
- 'inplace' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [23]
- 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [24]
- 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11]
- 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
- 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00", # [25]
- 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
- 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
- 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [48]
- 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [49]
- 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
- 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
- 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
- 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
- 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [32]
- 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
- 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
- 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [33]
- 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [34]
- 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [35]
- 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [36]
- 'recursion' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
- 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
- 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [20]
- 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [37]
- 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [38]
- 'severe' => "\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00", # [21..25]
- 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [26]
- 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [27]
- 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [50]
- 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x40\x00", # [28..38,47]
- 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [39]
- 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [40]
- 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [41]
- 'unopened' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
- 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [42]
- 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [43]
- 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x15", # [44,48..50]
- 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [45]
+ 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55", # [0..55]
+ 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00", # [29]
+ 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [30]
+ 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
+ 'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
+ 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [22]
+ 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
+ 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [31]
+ 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
+ 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
+ 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x55", # [51..55]
+ 'experimental::lexical_subs'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [52]
+ 'experimental::lexical_topic'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [53]
+ 'experimental::regex_sets'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [54]
+ 'experimental::smartmatch'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40", # [55]
+ 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
+ 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [47]
+ 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [46]
+ 'inplace' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [23]
+ 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [24]
+ 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11]
+ 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
+ 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [25]
+ 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
+ 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
+ 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [48]
+ 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [49]
+ 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
+ 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
+ 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
+ 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
+ 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [32]
+ 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
+ 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
+ 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [33]
+ 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [34]
+ 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [35]
+ 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [36]
+ 'recursion' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
+ 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
+ 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [20]
+ 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [37]
+ 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [38]
+ 'severe' => "\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00\x00", # [21..25]
+ 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [26]
+ 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [27]
+ 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [50]
+ 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x40\x00\x00", # [28..38,47]
+ 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [39]
+ 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [40]
+ 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [41]
+ 'unopened' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
+ 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [42]
+ 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [43]
+ 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x15\x00", # [44,48..50]
+ 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [45]
);
our %DeadBits = (
- 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x2a", # [0..50]
- 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [29]
- 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [30]
- 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
- 'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
- 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [22]
- 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
- 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [31]
- 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
- 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
- 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
- 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [47]
- 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [46]
- 'inplace' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [23]
- 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [24]
- 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11]
- 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
- 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00", # [25]
- 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
- 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
- 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [48]
- 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [49]
- 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
- 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
- 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
- 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
- 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [32]
- 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
- 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
- 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [33]
- 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [34]
- 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [35]
- 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [36]
- 'recursion' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
- 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
- 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [20]
- 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [37]
- 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [38]
- 'severe' => "\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00", # [21..25]
- 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [26]
- 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [27]
- 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [50]
- 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x80\x00", # [28..38,47]
- 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [39]
- 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [40]
- 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [41]
- 'unopened' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
- 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [42]
- 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [43]
- 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x2a", # [44,48..50]
- 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [45]
+ 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", # [0..55]
+ 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00", # [29]
+ 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [30]
+ 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
+ 'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
+ 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [22]
+ 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
+ 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [31]
+ 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
+ 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
+ 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xaa", # [51..55]
+ 'experimental::lexical_subs'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [52]
+ 'experimental::lexical_topic'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [53]
+ 'experimental::regex_sets'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [54]
+ 'experimental::smartmatch'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80", # [55]
+ 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
+ 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [47]
+ 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [46]
+ 'inplace' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [23]
+ 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [24]
+ 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11]
+ 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
+ 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [25]
+ 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
+ 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
+ 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [48]
+ 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [49]
+ 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
+ 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
+ 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
+ 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
+ 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [32]
+ 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
+ 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
+ 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [33]
+ 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [34]
+ 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [35]
+ 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [36]
+ 'recursion' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
+ 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
+ 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [20]
+ 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [37]
+ 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [38]
+ 'severe' => "\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00", # [21..25]
+ 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [26]
+ 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [27]
+ 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [50]
+ 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x80\x00\x00", # [28..38,47]
+ 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [39]
+ 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [40]
+ 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [41]
+ 'unopened' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
+ 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [42]
+ 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [43]
+ 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x2a\x00", # [44,48..50]
+ 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [45]
);
-$NONE = "\0\0\0\0\0\0\0\0\0\0\0\0\0";
-$LAST_BIT = 102 ;
-$BYTES = 13 ;
+$NONE = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
+$DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x00\x55", # [2,52..55,4,22,23,25]
+$LAST_BIT = 112 ;
+$BYTES = 14 ;
$All = "" ; vec($All, $Offsets{'all'}, 2) = 3 ;
@@ -387,7 +406,7 @@ sub import
{
shift;
- my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $NONE) ;
+ my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ;
if (vec($mask, $Offsets{'all'}, 1)) {
$mask |= $Bits{'all'} ;
@@ -403,7 +422,7 @@ sub unimport
shift;
my $catmask ;
- my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $NONE) ;
+ my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ;
if (vec($mask, $Offsets{'all'}, 1)) {
$mask |= $Bits{'all'} ;
@@ -482,8 +501,11 @@ sub __chk
$i = _error_loc(); # see where Carp will allocate the error
}
- # Defaulting this to 0 reduces complexity in code paths below.
- my $callers_bitmask = (caller($i))[9] || 0 ;
+ # Default to 0 if caller returns nothing. Default to $DEFAULT if it
+ # explicitly returns undef.
+ my(@callers_bitmask) = (caller($i))[9] ;
+ my $callers_bitmask =
+ @callers_bitmask ? $callers_bitmask[0] // $DEFAULT : 0 ;
my @results;
foreach my $type (FATAL, NORMAL) {
@@ -561,7 +583,7 @@ sub warnif
# These are not part of any public interface, so we can delete them to save
# space.
-delete $warnings::{$_} foreach qw(NORMAL FATAL MESSAGE);
+delete @warnings::{qw(NORMAL FATAL MESSAGE)};
1;
diff --git a/gnu/usr.bin/perl/locale.c b/gnu/usr.bin/perl/locale.c
index b7a78fbea9d..c10228da3e3 100644
--- a/gnu/usr.bin/perl/locale.c
+++ b/gnu/usr.bin/perl/locale.c
@@ -631,8 +631,8 @@ Perl_mem_collxfrm(pTHX_ const char *s, STRLEN len, STRLEN *xlen)
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/madly.c b/gnu/usr.bin/perl/madly.c
index 11e2e376ded..d7037328163 100644
--- a/gnu/usr.bin/perl/madly.c
+++ b/gnu/usr.bin/perl/madly.c
@@ -19,8 +19,8 @@
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/make_ext.pl b/gnu/usr.bin/perl/make_ext.pl
index d6561b12e56..32546282c0f 100644
--- a/gnu/usr.bin/perl/make_ext.pl
+++ b/gnu/usr.bin/perl/make_ext.pl
@@ -2,15 +2,6 @@
use strict;
use warnings;
use Config;
-BEGIN {
- if ($^O eq 'MSWin32') {
- unshift @INC, '../dist/Cwd';
- require FindExt;
- } else {
- unshift @INC, 'dist/Cwd';
- }
-}
-use Cwd;
my $is_Win32 = $^O eq 'MSWin32';
my $is_VMS = $^O eq 'VMS';
@@ -147,7 +138,9 @@ my $perl;
my %extra_passthrough;
if ($is_Win32) {
- my $build = getcwd();
+ require Cwd;
+ require FindExt;
+ my $build = Cwd::getcwd();
$perl = $^X;
if ($perl =~ m#^\.\.#) {
my $here = $build;
@@ -167,7 +160,7 @@ if ($is_Win32) {
print "In $build";
foreach my $dir (@dirs) {
chdir($dir) or die "Cannot cd to $dir: $!\n";
- (my $ext = getcwd()) =~ s{/}{\\}g;
+ (my $ext = Cwd::getcwd()) =~ s{/}{\\}g;
FindExt::scan_ext($ext);
FindExt::set_static_extensions(split ' ', $Config{static_ext});
chdir $build
@@ -288,6 +281,28 @@ sub build_extension {
$makefile = 'Makefile';
}
+ if (-f $makefile) {
+ open my $mfh, $makefile or die "Cannot open $makefile: $!";
+ while (<$mfh>) {
+ # Plagiarised from CPAN::Distribution
+ last if /MakeMaker post_initialize section/;
+ next unless /^#\s+VERSION_FROM\s+=>\s+(.+)/;
+ my $vmod = eval $1;
+ my $oldv;
+ while (<$mfh>) {
+ next unless /^XS_VERSION = (\S+)/;
+ $oldv = $1;
+ last;
+ }
+ last unless defined $oldv;
+ require ExtUtils::MM_Unix;
+ defined (my $newv = parse_version MM $vmod) or last;
+ if ($newv ne $oldv) {
+ 1 while unlink $makefile
+ }
+ }
+ }
+
if (!-f $makefile) {
if (!-f 'Makefile.PL') {
print "\nCreating Makefile.PL in $ext_dir for $mname\n";
@@ -377,11 +392,17 @@ WriteMakefile(
# ex: set ro:
EOM
close $fh or die "Can't close Makefile.PL: $!";
+ # As described in commit 23525070d6c0e51f:
+ # Push the atime and mtime of generated Makefile.PLs back 4
+ # seconds. In certain circumstances ( on virtual machines ) the
+ # generated Makefile.PL can produce a Makefile that is older than
+ # the Makefile.PL. Altering the atime and mtime backwards by 4
+ # seconds seems to resolve the issue.
+ eval {
+ my $ftime = time - 4;
+ utime $ftime, $ftime, 'Makefile.PL';
+ };
}
- eval {
- my $ftime = time - 4;
- utime $ftime, $ftime, 'Makefile.PL';
- };
print "\nRunning Makefile.PL in $ext_dir\n";
# Presumably this can be simplified
@@ -450,8 +471,11 @@ EOS
}
if ($is_VMS) {
- _macroify_passthrough($pass_through);
- unshift @$pass_through, "/DESCRIPTION=$makefile";
+ _quote_args($pass_through);
+ @$pass_through = (
+ "/DESCRIPTION=$makefile",
+ '/MACRO=(' . join(',',@$pass_through) . ')'
+ );
}
if (!$target or $target !~ /clean$/) {
@@ -479,11 +503,3 @@ sub _quote_args {
} @{$args}
;
}
-
-sub _macroify_passthrough {
- my $passthrough = shift;
- _quote_args($passthrough);
- my $macro = '/MACRO=(' . join(',',@$passthrough) . ')';
- @$passthrough = ();
- @$passthrough[0] = $macro;
-}
diff --git a/gnu/usr.bin/perl/make_patchnum.pl b/gnu/usr.bin/perl/make_patchnum.pl
index 9d83dd59f87..77d4a4ee1a4 100644
--- a/gnu/usr.bin/perl/make_patchnum.pl
+++ b/gnu/usr.bin/perl/make_patchnum.pl
@@ -19,7 +19,7 @@ This program creates the files holding the information
about locally applied patches to the source code. The created
files are F<git_version.h> and F<lib/Config_git.pl>.
-=head2 C<lib/Config_git.pl>
+=head2 F<lib/Config_git.pl>
Contains status information from git in a form meant to be processed
by the tied hash logic of Config.pm. It is actually optional,
diff --git a/gnu/usr.bin/perl/mathoms.c b/gnu/usr.bin/perl/mathoms.c
index a48777dd511..9a7e3ffdbf4 100644
--- a/gnu/usr.bin/perl/mathoms.c
+++ b/gnu/usr.bin/perl/mathoms.c
@@ -26,6 +26,8 @@
*
* SMP - Oct. 24, 2005
*
+ * The compilation of this file can be suppressed; see INSTALL
+ *
*/
#include "EXTERN.h"
@@ -38,35 +40,40 @@
*/
#else
+/* Not all of these have prototypes elsewhere, so do this to get
+ * non-mangled names.
+ */
+START_EXTERN_C
+
PERL_CALLCONV OP * Perl_ref(pTHX_ OP *o, I32 type);
PERL_CALLCONV void Perl_sv_unref(pTHX_ SV *sv);
PERL_CALLCONV void Perl_sv_taint(pTHX_ SV *sv);
-PERL_CALLCONV IV Perl_sv_2iv(pTHX_ register SV *sv);
-PERL_CALLCONV UV Perl_sv_2uv(pTHX_ register SV *sv);
-PERL_CALLCONV NV Perl_sv_2nv(pTHX_ register SV *sv);
-PERL_CALLCONV char * Perl_sv_2pv(pTHX_ register SV *sv, STRLEN *lp);
-PERL_CALLCONV char * Perl_sv_2pv_nolen(pTHX_ register SV *sv);
-PERL_CALLCONV char * Perl_sv_2pvbyte_nolen(pTHX_ register SV *sv);
-PERL_CALLCONV char * Perl_sv_2pvutf8_nolen(pTHX_ register SV *sv);
-PERL_CALLCONV void Perl_sv_force_normal(pTHX_ register SV *sv);
-PERL_CALLCONV void Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr);
+PERL_CALLCONV IV Perl_sv_2iv(pTHX_ SV *sv);
+PERL_CALLCONV UV Perl_sv_2uv(pTHX_ SV *sv);
+PERL_CALLCONV NV Perl_sv_2nv(pTHX_ SV *sv);
+PERL_CALLCONV char * Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp);
+PERL_CALLCONV char * Perl_sv_2pv_nolen(pTHX_ SV *sv);
+PERL_CALLCONV char * Perl_sv_2pvbyte_nolen(pTHX_ SV *sv);
+PERL_CALLCONV char * Perl_sv_2pvutf8_nolen(pTHX_ SV *sv);
+PERL_CALLCONV void Perl_sv_force_normal(pTHX_ SV *sv);
+PERL_CALLCONV void Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr);
PERL_CALLCONV void Perl_sv_catpvn(pTHX_ SV *dsv, const char* sstr, STRLEN slen);
-PERL_CALLCONV void Perl_sv_catpvn_mg(pTHX_ register SV *sv, register const char *ptr, register STRLEN len);
-PERL_CALLCONV void Perl_sv_catsv(pTHX_ SV *dstr, register SV *sstr);
-PERL_CALLCONV void Perl_sv_catsv_mg(pTHX_ SV *dsv, register SV *ssv);
+PERL_CALLCONV void Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len);
+PERL_CALLCONV void Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr);
+PERL_CALLCONV void Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv);
PERL_CALLCONV char * Perl_sv_pv(pTHX_ SV *sv);
PERL_CALLCONV char * Perl_sv_pvn_force(pTHX_ SV *sv, STRLEN *lp);
PERL_CALLCONV char * Perl_sv_pvbyte(pTHX_ SV *sv);
PERL_CALLCONV char * Perl_sv_pvutf8(pTHX_ SV *sv);
-PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade(pTHX_ register SV *sv);
+PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade(pTHX_ SV *sv);
PERL_CALLCONV NV Perl_huge(void);
PERL_CALLCONV void Perl_gv_fullname3(pTHX_ SV *sv, const GV *gv, const char *prefix);
PERL_CALLCONV void Perl_gv_efullname3(pTHX_ SV *sv, const GV *gv, const char *prefix);
PERL_CALLCONV GV * Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name);
PERL_CALLCONV HE * Perl_hv_iternext(pTHX_ HV *hv);
PERL_CALLCONV void Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how);
-PERL_CALLCONV bool Perl_do_open(pTHX_ GV *gv, register const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp);
-PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV *really, register SV **mark, register SV **sp);
+PERL_CALLCONV bool Perl_do_open(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp);
+PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV *really, SV **mark, SV **sp);
PERL_CALLCONV U8 * Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv);
PERL_CALLCONV bool Perl_is_utf8_string_loc(pTHX_ const U8 *s, STRLEN len, const U8 **ep);
PERL_CALLCONV void Perl_sv_nolocking(pTHX_ SV *sv);
@@ -80,14 +87,15 @@ PERL_CALLCONV HV * Perl_newHV(pTHX);
PERL_CALLCONV IO * Perl_newIO(pTHX);
PERL_CALLCONV I32 Perl_my_stat(pTHX);
PERL_CALLCONV I32 Perl_my_lstat(pTHX);
-PERL_CALLCONV I32 Perl_sv_eq(pTHX_ register SV *sv1, register SV *sv2);
+PERL_CALLCONV I32 Perl_sv_eq(pTHX_ SV *sv1, SV *sv2);
PERL_CALLCONV char * Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp);
-PERL_CALLCONV bool Perl_sv_2bool(pTHX_ register SV *const sv);
+PERL_CALLCONV bool Perl_sv_2bool(pTHX_ SV *const sv);
PERL_CALLCONV CV * Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block);
PERL_CALLCONV UV Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp);
PERL_CALLCONV UV Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp);
PERL_CALLCONV UV Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp);
PERL_CALLCONV UV Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp);
+PERL_CALLCONV SV *Perl_sv_mortalcopy(pTHX_ SV *const oldstr);
/* ref() is now a macro using Perl_doref;
* this version provided for binary compatibility only.
@@ -138,7 +146,7 @@ Perl_sv_taint(pTHX_ SV *sv)
*/
IV
-Perl_sv_2iv(pTHX_ register SV *sv)
+Perl_sv_2iv(pTHX_ SV *sv)
{
return sv_2iv_flags(sv, SV_GMAGIC);
}
@@ -148,7 +156,7 @@ Perl_sv_2iv(pTHX_ register SV *sv)
*/
UV
-Perl_sv_2uv(pTHX_ register SV *sv)
+Perl_sv_2uv(pTHX_ SV *sv)
{
return sv_2uv_flags(sv, SV_GMAGIC);
}
@@ -158,7 +166,7 @@ Perl_sv_2uv(pTHX_ register SV *sv)
*/
NV
-Perl_sv_2nv(pTHX_ register SV *sv)
+Perl_sv_2nv(pTHX_ SV *sv)
{
return sv_2nv_flags(sv, SV_GMAGIC);
}
@@ -169,7 +177,7 @@ Perl_sv_2nv(pTHX_ register SV *sv)
*/
char *
-Perl_sv_2pv(pTHX_ register SV *sv, STRLEN *lp)
+Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp)
{
return sv_2pv_flags(sv, lp, SV_GMAGIC);
}
@@ -184,7 +192,7 @@ use the macro wrapper C<SvPV_nolen(sv)> instead.
*/
char *
-Perl_sv_2pv_nolen(pTHX_ register SV *sv)
+Perl_sv_2pv_nolen(pTHX_ SV *sv)
{
PERL_ARGS_ASSERT_SV_2PV_NOLEN;
return sv_2pv(sv, NULL);
@@ -202,7 +210,7 @@ Usually accessed via the C<SvPVbyte_nolen> macro.
*/
char *
-Perl_sv_2pvbyte_nolen(pTHX_ register SV *sv)
+Perl_sv_2pvbyte_nolen(pTHX_ SV *sv)
{
PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN;
@@ -221,7 +229,7 @@ Usually accessed via the C<SvPVutf8_nolen> macro.
*/
char *
-Perl_sv_2pvutf8_nolen(pTHX_ register SV *sv)
+Perl_sv_2pvutf8_nolen(pTHX_ SV *sv)
{
PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN;
@@ -239,7 +247,7 @@ an xpvmg. See also C<sv_force_normal_flags>.
*/
void
-Perl_sv_force_normal(pTHX_ register SV *sv)
+Perl_sv_force_normal(pTHX_ SV *sv)
{
PERL_ARGS_ASSERT_SV_FORCE_NORMAL;
@@ -251,7 +259,7 @@ Perl_sv_force_normal(pTHX_ register SV *sv)
*/
void
-Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr)
+Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr)
{
PERL_ARGS_ASSERT_SV_SETSV;
@@ -279,7 +287,7 @@ Like C<sv_catpvn>, but also handles 'set' magic.
*/
void
-Perl_sv_catpvn_mg(pTHX_ register SV *sv, register const char *ptr, register STRLEN len)
+Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len)
{
PERL_ARGS_ASSERT_SV_CATPVN_MG;
@@ -291,7 +299,7 @@ Perl_sv_catpvn_mg(pTHX_ register SV *sv, register const char *ptr, register STRL
*/
void
-Perl_sv_catsv(pTHX_ SV *dstr, register SV *sstr)
+Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr)
{
PERL_ARGS_ASSERT_SV_CATSV;
@@ -307,7 +315,7 @@ Like C<sv_catsv>, but also handles 'set' magic.
*/
void
-Perl_sv_catsv_mg(pTHX_ SV *dsv, register SV *ssv)
+Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv)
{
PERL_ARGS_ASSERT_SV_CATSV_MG;
@@ -324,7 +332,7 @@ cope with complex macro expressions. Always use the macro instead.
*/
IV
-Perl_sv_iv(pTHX_ register SV *sv)
+Perl_sv_iv(pTHX_ SV *sv)
{
PERL_ARGS_ASSERT_SV_IV;
@@ -346,7 +354,7 @@ cope with complex macro expressions. Always use the macro instead.
*/
UV
-Perl_sv_uv(pTHX_ register SV *sv)
+Perl_sv_uv(pTHX_ SV *sv)
{
PERL_ARGS_ASSERT_SV_UV;
@@ -368,7 +376,7 @@ cope with complex macro expressions. Always use the macro instead.
*/
NV
-Perl_sv_nv(pTHX_ register SV *sv)
+Perl_sv_nv(pTHX_ SV *sv)
{
PERL_ARGS_ASSERT_SV_NV;
@@ -404,7 +412,7 @@ Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp)
char *
-Perl_sv_pvn_nomg(pTHX_ register SV *sv, STRLEN *lp)
+Perl_sv_pvn_nomg(pTHX_ SV *sv, STRLEN *lp)
{
PERL_ARGS_ASSERT_SV_PVN_NOMG;
@@ -519,7 +527,7 @@ Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp)
*/
STRLEN
-Perl_sv_utf8_upgrade(pTHX_ register SV *sv)
+Perl_sv_utf8_upgrade(pTHX_ SV *sv)
{
PERL_ARGS_ASSERT_SV_UTF8_UPGRADE;
@@ -640,7 +648,7 @@ Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how)
}
bool
-Perl_do_open(pTHX_ GV *gv, register const char *name, I32 len, int as_raw,
+Perl_do_open(pTHX_ GV *gv, const char *name, I32 len, int as_raw,
int rawmode, int rawperm, PerlIO *supplied_fp)
{
PERL_ARGS_ASSERT_DO_OPEN;
@@ -650,7 +658,7 @@ Perl_do_open(pTHX_ GV *gv, register const char *name, I32 len, int as_raw,
}
bool
-Perl_do_open9(pTHX_ GV *gv, register const char *name, I32 len, int
+Perl_do_open9(pTHX_ GV *gv, const char *name, I32 len, int
as_raw,
int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs,
I32 num_svs)
@@ -681,7 +689,7 @@ Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode)
#ifndef OS2
bool
-Perl_do_aexec(pTHX_ SV *really, register SV **mark, register SV **sp)
+Perl_do_aexec(pTHX_ SV *really, SV **mark, SV **sp)
{
PERL_ARGS_ASSERT_DO_AEXEC;
@@ -790,16 +798,18 @@ Perl_save_nogv(pTHX_ GV *gv)
}
void
-Perl_save_list(pTHX_ register SV **sarg, I32 maxsarg)
+Perl_save_list(pTHX_ SV **sarg, I32 maxsarg)
{
dVAR;
- register I32 i;
+ I32 i;
PERL_ARGS_ASSERT_SAVE_LIST;
for (i = 1; i <= maxsarg; i++) {
- register SV * const sv = newSV(0);
- sv_setsv(sv,sarg[i]);
+ SV *sv;
+ SvGETMAGIC(sarg[i]);
+ sv = newSV(0);
+ sv_setsv_nomg(sv,sarg[i]);
SSCHECK(3);
SSPUSHPTR(sarg[i]); /* remember the pointer */
SSPUSHPTR(sv); /* remember the value */
@@ -873,7 +883,7 @@ flags are not used. This call should not be used; use packlist instead.
*/
void
-Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *patend, register SV **beglist, SV **endlist, SV ***next_in_list, U32 flags)
+Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags)
{
PERL_ARGS_ASSERT_PACK_CAT;
@@ -1081,13 +1091,13 @@ Perl_gv_AVadd(pTHX_ GV *gv)
}
GV *
-Perl_gv_HVadd(pTHX_ register GV *gv)
+Perl_gv_HVadd(pTHX_ GV *gv)
{
return gv_HVadd(gv);
}
GV *
-Perl_gv_IOadd(pTHX_ register GV *gv)
+Perl_gv_IOadd(pTHX_ GV *gv)
{
return gv_IOadd(gv);
}
@@ -1111,7 +1121,7 @@ Perl_my_lstat(pTHX)
}
I32
-Perl_sv_eq(pTHX_ register SV *sv1, register SV *sv2)
+Perl_sv_eq(pTHX_ SV *sv1, SV *sv2)
{
return sv_eq_flags(sv1, sv2, SV_GMAGIC);
}
@@ -1125,7 +1135,7 @@ Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp)
#endif
bool
-Perl_sv_2bool(pTHX_ register SV *const sv)
+Perl_sv_2bool(pTHX_ SV *const sv)
{
return sv_2bool_flags(sv, SV_GMAGIC);
}
@@ -1197,14 +1207,22 @@ Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp)
return _to_utf8_upper_flags(p, ustrp, lenp, FALSE, NULL);
}
+SV *
+Perl_sv_mortalcopy(pTHX_ SV *const oldstr)
+{
+ return Perl_sv_mortalcopy_flags(aTHX_ oldstr, SV_GMAGIC);
+}
+
+END_EXTERN_C
+
#endif /* NO_MATHOMS */
/*
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/metaconfig.h b/gnu/usr.bin/perl/metaconfig.h
index 7fb867edeb4..0a90c86ed03 100644
--- a/gnu/usr.bin/perl/metaconfig.h
+++ b/gnu/usr.bin/perl/metaconfig.h
@@ -10,6 +10,7 @@
* they won't be available unless used. When new symbols are probed
* in Configure, this is the way to force them into availability.
*
+ * BOOTSTRAP_CHARSET
* CHARBITS
* HAS_ASCTIME64
* HAS_CTIME64
@@ -17,7 +18,10 @@
* HAS_GMTIME64
* HAS_ISBLANK
* HAS_LOCALTIME64
+ * HAS_IP_MREQ
+ * HAS_IP_MREQ_SOURCE
* HAS_IPV6_MREQ
+ * HAS_IPV6_MREQ_SOURCE
* HAS_MKTIME64
* HAS_PRCTL
* HAS_PSEUDOFORK
diff --git a/gnu/usr.bin/perl/mg_names.c b/gnu/usr.bin/perl/mg_names.c
index 43b1945f2de..73dc3f95021 100644
--- a/gnu/usr.bin/perl/mg_names.c
+++ b/gnu/usr.bin/perl/mg_names.c
@@ -9,12 +9,11 @@
{ PERL_MAGIC_sv, "sv(\\0)" },
{ PERL_MAGIC_arylen, "arylen(#)" },
{ PERL_MAGIC_rhash, "rhash(%)" },
+ { PERL_MAGIC_proto, "proto(&)" },
{ PERL_MAGIC_pos, "pos(.)" },
{ PERL_MAGIC_symtab, "symtab(:)" },
{ PERL_MAGIC_backref, "backref(<)" },
{ PERL_MAGIC_arylen_p, "arylen_p(@)" },
- { PERL_MAGIC_overload, "overload(A)" },
- { PERL_MAGIC_overload_elem, "overload_elem(a)" },
{ PERL_MAGIC_bm, "bm(B)" },
{ PERL_MAGIC_overload_table, "overload_table(c)" },
{ PERL_MAGIC_regdata, "regdata(D)" },
@@ -22,7 +21,6 @@
{ PERL_MAGIC_env, "env(E)" },
{ PERL_MAGIC_envelem, "envelem(e)" },
{ PERL_MAGIC_fm, "fm(f)" },
- { PERL_MAGIC_study, "study(G)" },
{ PERL_MAGIC_regex_global, "regex_global(g)" },
{ PERL_MAGIC_hints, "hints(H)" },
{ PERL_MAGIC_hintselem, "hintselem(h)" },
diff --git a/gnu/usr.bin/perl/mg_raw.h b/gnu/usr.bin/perl/mg_raw.h
index f4e174247bd..487e209da1f 100644
--- a/gnu/usr.bin/perl/mg_raw.h
+++ b/gnu/usr.bin/perl/mg_raw.h
@@ -12,6 +12,8 @@
"/* arylen '#' Array length ($#ary) */" },
{ '%', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
"/* rhash '%' extra data for restricted hashes */" },
+ { '&', "magic_vtable_max",
+ "/* proto '&' my sub prototype CV */" },
{ '.', "want_vtbl_pos | PERL_MAGIC_VALUE_MAGIC",
"/* pos '.' pos() lvalue */" },
{ ':', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
@@ -20,10 +22,6 @@
"/* backref '<' for weak ref data */" },
{ '@', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
"/* arylen_p '@' to move arylen out of XPVAV */" },
- { 'A', "want_vtbl_amagic",
- "/* overload 'A' %OVERLOAD hash */" },
- { 'a', "want_vtbl_amagicelem",
- "/* overload_elem 'a' %OVERLOAD hash element */" },
{ 'B', "want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
"/* bm 'B' Boyer-Moore (fast string search) */" },
{ 'c', "want_vtbl_ovrld",
@@ -36,10 +34,8 @@
"/* env 'E' %ENV hash */" },
{ 'e', "want_vtbl_envelem",
"/* envelem 'e' %ENV hash element */" },
- { 'f', "want_vtbl_regdata | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
+ { 'f', "want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
"/* fm 'f' Formline ('compiled' format) */" },
- { 'G', "want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
- "/* study 'G' study()ed string */" },
{ 'g', "want_vtbl_mglob | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
"/* regex_global 'g' m//g target */" },
{ 'H', "want_vtbl_hints",
@@ -74,7 +70,7 @@
"/* taint 't' Taintedness */" },
{ 'U', "want_vtbl_uvar",
"/* uvar 'U' Available for use by extensions */" },
- { 'V', "want_vtbl_vstring | PERL_MAGIC_VALUE_MAGIC",
+ { 'V', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
"/* vstring 'V' SV was vstring literal */" },
{ 'v', "want_vtbl_vec | PERL_MAGIC_VALUE_MAGIC",
"/* vec 'v' vec() lvalue */" },
@@ -84,7 +80,7 @@
"/* substr 'x' substr() lvalue */" },
{ 'y', "want_vtbl_defelem | PERL_MAGIC_VALUE_MAGIC",
"/* defelem 'y' Shadow \"foreach\" iterator variable / smart parameter vivification */" },
- { ']', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
+ { ']', "want_vtbl_checkcall | PERL_MAGIC_VALUE_MAGIC",
"/* checkcall ']' inlining/mutation of call to this CV */" },
{ '~', "magic_vtable_max",
"/* ext '~' Available for use by extensions */" },
diff --git a/gnu/usr.bin/perl/mg_vtable.h b/gnu/usr.bin/perl/mg_vtable.h
index 12f2fa35f32..f3917137619 100644
--- a/gnu/usr.bin/perl/mg_vtable.h
+++ b/gnu/usr.bin/perl/mg_vtable.h
@@ -15,12 +15,11 @@
#define PERL_MAGIC_sv '\0' /* Special scalar variable */
#define PERL_MAGIC_arylen '#' /* Array length ($#ary) */
#define PERL_MAGIC_rhash '%' /* extra data for restricted hashes */
+#define PERL_MAGIC_proto '&' /* my sub prototype CV */
#define PERL_MAGIC_pos '.' /* pos() lvalue */
#define PERL_MAGIC_symtab ':' /* extra data for symbol tables */
#define PERL_MAGIC_backref '<' /* for weak ref data */
#define PERL_MAGIC_arylen_p '@' /* to move arylen out of XPVAV */
-#define PERL_MAGIC_overload 'A' /* %OVERLOAD hash */
-#define PERL_MAGIC_overload_elem 'a' /* %OVERLOAD hash element */
#define PERL_MAGIC_bm 'B' /* Boyer-Moore (fast string search) */
#define PERL_MAGIC_overload_table 'c' /* Holds overload table (AMT) on stash */
#define PERL_MAGIC_regdata 'D' /* Regex match position data
@@ -29,7 +28,6 @@
#define PERL_MAGIC_env 'E' /* %ENV hash */
#define PERL_MAGIC_envelem 'e' /* %ENV hash element */
#define PERL_MAGIC_fm 'f' /* Formline ('compiled' format) */
-#define PERL_MAGIC_study 'G' /* study()ed string */
#define PERL_MAGIC_regex_global 'g' /* m//g target */
#define PERL_MAGIC_hints 'H' /* %^H hash */
#define PERL_MAGIC_hintselem 'h' /* %^H hash element */
@@ -60,11 +58,10 @@
#define PERL_MAGIC_ext '~' /* Available for use by extensions */
enum { /* pass one of these to get_vtbl */
- want_vtbl_amagic,
- want_vtbl_amagicelem,
want_vtbl_arylen,
want_vtbl_arylen_p,
want_vtbl_backref,
+ want_vtbl_checkcall,
want_vtbl_collxfrm,
want_vtbl_dbline,
want_vtbl_defelem,
@@ -90,17 +87,15 @@ enum { /* pass one of these to get_vtbl */
want_vtbl_utf8,
want_vtbl_uvar,
want_vtbl_vec,
- want_vtbl_vstring,
magic_vtable_max
};
#ifdef DOINIT
-EXTCONST char *PL_magic_vtable_names[magic_vtable_max] = {
- "amagic",
- "amagicelem",
+EXTCONST char * const PL_magic_vtable_names[magic_vtable_max] = {
"arylen",
"arylen_p",
"backref",
+ "checkcall",
"collxfrm",
"dbline",
"defelem",
@@ -125,11 +120,10 @@ EXTCONST char *PL_magic_vtable_names[magic_vtable_max] = {
"taint",
"utf8",
"uvar",
- "vec",
- "vstring"
+ "vec"
};
#else
-EXTCONST char *PL_magic_vtable_names[magic_vtable_max];
+EXTCONST char * const PL_magic_vtable_names[magic_vtable_max];
#endif
/* These all need to be 0, not NULL, as NULL can be (void*)0, which is a
@@ -151,11 +145,10 @@ EXTCONST char *PL_magic_vtable_names[magic_vtable_max];
#ifdef DOINIT
EXT_MGVTBL PL_magic_vtables[magic_vtable_max] = {
- { 0, Perl_magic_setamagic, 0, 0, Perl_magic_setamagic, 0, 0, 0 },
- { 0, Perl_magic_setamagic, 0, 0, Perl_magic_setamagic, 0, 0, 0 },
{ (int (*)(pTHX_ SV *, MAGIC *))Perl_magic_getarylen, Perl_magic_setarylen, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, Perl_magic_freearylen_p, 0, 0, 0 },
+ { 0, 0, 0, Perl_magic_cleararylen_p, Perl_magic_freearylen_p, 0, 0, 0 },
{ 0, 0, 0, 0, Perl_magic_killbackrefs, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, Perl_magic_copycallchecker, 0, 0 },
#ifdef USE_LOCALE_COLLATE
{ 0, Perl_magic_setcollxfrm, 0, 0, 0, 0, 0, 0 },
#else
@@ -184,12 +177,11 @@ EXT_MGVTBL PL_magic_vtables[magic_vtable_max] = {
{ 0, 0, 0, 0, 0, 0, 0, 0 },
#endif
{ Perl_magic_getsubstr, Perl_magic_setsubstr, 0, 0, 0, 0, 0, 0 },
- { Perl_magic_get, Perl_magic_set, Perl_magic_len, 0, 0, 0, 0, 0 },
+ { Perl_magic_get, Perl_magic_set, 0, 0, 0, 0, 0, 0 },
{ Perl_magic_gettaint, Perl_magic_settaint, 0, 0, 0, 0, 0, 0 },
{ 0, Perl_magic_setutf8, 0, 0, 0, 0, 0, 0 },
{ Perl_magic_getuvar, Perl_magic_setuvar, 0, 0, 0, 0, 0, 0 },
- { Perl_magic_getvec, Perl_magic_setvec, 0, 0, 0, 0, 0, 0 },
- { 0, Perl_magic_setvstring, 0, 0, 0, 0, 0, 0 }
+ { Perl_magic_getvec, Perl_magic_setvec, 0, 0, 0, 0, 0, 0 }
};
#else
EXT_MGVTBL PL_magic_vtables[magic_vtable_max];
@@ -198,12 +190,11 @@ EXT_MGVTBL PL_magic_vtables[magic_vtable_max];
#define want_vtbl_bm want_vtbl_regexp
#define want_vtbl_fm want_vtbl_regexp
-#define PL_vtbl_amagic PL_magic_vtables[want_vtbl_amagic]
-#define PL_vtbl_amagicelem PL_magic_vtables[want_vtbl_amagicelem]
#define PL_vtbl_arylen PL_magic_vtables[want_vtbl_arylen]
#define PL_vtbl_arylen_p PL_magic_vtables[want_vtbl_arylen_p]
#define PL_vtbl_backref PL_magic_vtables[want_vtbl_backref]
#define PL_vtbl_bm PL_magic_vtables[want_vtbl_bm]
+#define PL_vtbl_checkcall PL_magic_vtables[want_vtbl_checkcall]
#define PL_vtbl_collxfrm PL_magic_vtables[want_vtbl_collxfrm]
#define PL_vtbl_dbline PL_magic_vtables[want_vtbl_dbline]
#define PL_vtbl_defelem PL_magic_vtables[want_vtbl_defelem]
@@ -230,6 +221,5 @@ EXT_MGVTBL PL_magic_vtables[magic_vtable_max];
#define PL_vtbl_utf8 PL_magic_vtables[want_vtbl_utf8]
#define PL_vtbl_uvar PL_magic_vtables[want_vtbl_uvar]
#define PL_vtbl_vec PL_magic_vtables[want_vtbl_vec]
-#define PL_vtbl_vstring PL_magic_vtables[want_vtbl_vstring]
/* ex: set ro: */
diff --git a/gnu/usr.bin/perl/mro.c b/gnu/usr.bin/perl/mro.c
index caa989db31a..be2038f4e7c 100644
--- a/gnu/usr.bin/perl/mro.c
+++ b/gnu/usr.bin/perl/mro.c
@@ -312,8 +312,7 @@ S_mro_get_linear_isa_dfs(pTHX_ HV *stash, U32 level)
sv_upgrade(val, SVt_PV);
SvPV_set(val, HEK_KEY(share_hek_hek(key)));
SvCUR_set(val, HEK_LEN(key));
- SvREADONLY_on(val);
- SvFAKE_on(val);
+ SvIsCOW_on(val);
SvPOK_on(val);
if (HEK_UTF8(key))
SvUTF8_on(val);
@@ -542,6 +541,12 @@ Perl_mro_isa_changed_in(pTHX_ HV* stash)
/* wipe next::method cache too */
if(meta->mro_nextmethod) hv_clear(meta->mro_nextmethod);
+ /* Changes to @ISA might turn overloading on */
+ HvAMAGIC_on(stash);
+
+ /* DESTROY can be cached in SvSTASH. */
+ if (!SvOBJECT(stash)) SvSTASH(stash) = NULL;
+
/* Iterate the isarev (classes that are our children),
wiping out their linearization, method and isa caches
and upating PL_isarev. */
@@ -573,6 +578,7 @@ Perl_mro_isa_changed_in(pTHX_ HV* stash)
revmeta->cache_gen++;
if(revmeta->mro_nextmethod)
hv_clear(revmeta->mro_nextmethod);
+ if (!SvOBJECT(revstash)) SvSTASH(revstash) = NULL;
(void)
hv_store(
@@ -880,8 +886,8 @@ STATIC void
S_mro_gather_and_rename(pTHX_ HV * const stashes, HV * const seen_stashes,
HV *stash, HV *oldstash, SV *namesv)
{
- register XPVHV* xhv;
- register HE *entry;
+ XPVHV* xhv;
+ HE *entry;
I32 riter = -1;
I32 items = 0;
const bool stash_had_name = stash && HvENAME(stash);
@@ -949,9 +955,13 @@ S_mro_gather_and_rename(pTHX_ HV * const stashes, HV * const seen_stashes,
while (items--) {
const U32 name_utf8 = SvUTF8(*svp);
STRLEN len;
- const char *name = SvPVx_const(*svp++, len);
- if(PL_stashcache)
+ const char *name = SvPVx_const(*svp, len);
+ if(PL_stashcache) {
+ DEBUG_o(Perl_deb(aTHX_ "mro_gather_and_rename clearing PL_stashcache for '%"SVf"'\n",
+ *svp));
(void)hv_delete(PL_stashcache, name, name_utf8 ? -(I32)len : (I32)len, G_DISCARD);
+ }
+ ++svp;
hv_ename_delete(oldstash, name, len, name_utf8);
if (!fetched_isarev) {
@@ -1321,6 +1331,9 @@ Perl_mro_method_changed_in(pTHX_ HV *stash)
/* Inc the package generation, since a local method changed */
HvMROMETA(stash)->pkg_gen++;
+ /* DESTROY can be cached in SvSTASH. */
+ if (!SvOBJECT(stash)) SvSTASH(stash) = NULL;
+
/* If stash is UNIVERSAL, or one of UNIVERSAL's parents,
invalidate all method caches globally */
if((stashname_len == 9 && strEQ(stashname, "UNIVERSAL"))
@@ -1344,8 +1357,13 @@ Perl_mro_method_changed_in(pTHX_ HV *stash)
mrometa->cache_gen++;
if(mrometa->mro_nextmethod)
hv_clear(mrometa->mro_nextmethod);
+ if (!SvOBJECT(revstash)) SvSTASH(revstash) = NULL;
}
}
+
+ /* The method change may be due to *{$package . "::()"} = \&nil; in
+ overload.pm. */
+ HvAMAGIC_on(stash);
}
void
@@ -1415,8 +1433,8 @@ XS(XS_mro_method_changed_in)
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/myconfig.SH b/gnu/usr.bin/perl/myconfig.SH
index f5b432ad311..eafc4586ba3 100644
--- a/gnu/usr.bin/perl/myconfig.SH
+++ b/gnu/usr.bin/perl/myconfig.SH
@@ -1,3 +1,5 @@
+#!/bin/sh
+
case $PERL_CONFIG_SH in
'')
if test -f config.sh; then TOP=.;
diff --git a/gnu/usr.bin/perl/mydtrace.h b/gnu/usr.bin/perl/mydtrace.h
index 5a2e35fe7fc..5093f466ab2 100644
--- a/gnu/usr.bin/perl/mydtrace.h
+++ b/gnu/usr.bin/perl/mydtrace.h
@@ -32,6 +32,18 @@
PERL_SUB_RETURN(tmp_func, file, line, stash); \
}
+# define LOADING_FILE_PROBE(name) \
+ if (PERL_LOADING_FILE_ENABLED()) { \
+ const char *tmp_name = name; \
+ PERL_LOADING_FILE(tmp_name); \
+ }
+
+# define LOADED_FILE_PROBE(name) \
+ if (PERL_LOADED_FILE_ENABLED()) { \
+ const char *tmp_name = name; \
+ PERL_LOADED_FILE(tmp_name); \
+ }
+
# else
# define ENTRY_PROBE(func, file, line, stash) \
@@ -44,8 +56,23 @@
PERL_SUB_RETURN(func, file, line, stash); \
}
+# define LOADING_FILE_PROBE(name) \
+ if (PERL_LOADING_FILE_ENABLED()) { \
+ PERL_LOADING_FILE(name); \
+ }
+
+# define LOADED_FILE_PROBE(name) \
+ if (PERL_LOADED_FILE_ENABLED()) { \
+ PERL_LOADED_FILE(name); \
+ }
+
# endif
+# define OP_ENTRY_PROBE(name) \
+ if (PERL_OP_ENTRY_ENABLED()) { \
+ PERL_OP_ENTRY(name); \
+ }
+
# define PHASE_CHANGE_PROBE(new_phase, old_phase) \
if (PERL_PHASE_CHANGE_ENABLED()) { \
PERL_PHASE_CHANGE(new_phase, old_phase); \
@@ -57,6 +84,9 @@
# define ENTRY_PROBE(func, file, line, stash)
# define RETURN_PROBE(func, file, line, stash)
# define PHASE_CHANGE_PROBE(new_phase, old_phase)
+# define OP_ENTRY_PROBE(name)
+# define LOADING_FILE_PROBE(name)
+# define LOADED_FILE_PROBE(name)
#endif
@@ -64,8 +94,8 @@
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/numeric.c b/gnu/usr.bin/perl/numeric.c
index c00dabd433d..e96252aa63d 100644
--- a/gnu/usr.bin/perl/numeric.c
+++ b/gnu/usr.bin/perl/numeric.c
@@ -376,8 +376,8 @@ number may use '_' characters to separate digits.
=cut
-Not documented yet because experimental is C<PERL_SCAN_SILENT_NON_PORTABLE
-which suppresses any message for non-portable numbers that are still valid
+Not documented yet because experimental is C<PERL_SCAN_SILENT_NON_PORTABLE>
+which suppresses any message for non-portable numbers, but which are valid
on this platform.
*/
@@ -803,7 +803,7 @@ S_mulexp10(NV value, I32 exponent)
* a hammer. Therefore we need to catch potential overflows before
* it's too late. */
-#if ((defined(VMS) && !defined(__IEEE_FP)) || defined(_UNICOS)) && defined(NV_MAX_10_EXP)
+#if ((defined(VMS) && !defined(_IEEE_FP)) || defined(_UNICOS)) && defined(NV_MAX_10_EXP)
STMT_START {
const NV exp_v = log10(value);
if (exponent >= NV_MAX_10_EXP || exponent + exp_v >= NV_MAX_10_EXP)
@@ -847,17 +847,28 @@ Perl_my_atof(pTHX_ const char* s)
PERL_ARGS_ASSERT_MY_ATOF;
- if (PL_numeric_local && IN_SOME_LOCALE_FORM) {
- NV y;
+ if (PL_numeric_local && PL_numeric_radix_sv && IN_SOME_LOCALE_FORM) {
+ const char *standard = NULL, *local = NULL;
+ bool use_standard_radix;
- /* Scan the number twice; once using locale and once without;
- * choose the larger result (in absolute value). */
- Perl_atof2(s, x);
- SET_NUMERIC_STANDARD();
- Perl_atof2(s, y);
- SET_NUMERIC_LOCAL();
- if ((y < 0.0 && y < x) || (y > 0.0 && y > x))
- return y;
+ /* Look through the string for the first thing that looks like a
+ * decimal point: either the value in the current locale or the
+ * standard fallback of '.'. The one which appears earliest in the
+ * input string is the one that we should have atof look for. Note that
+ * we have to determine this beforehand because on some systems,
+ * Perl_atof2 is just a wrapper around the system's atof. */
+ standard = strchr(s, '.');
+ local = strstr(s, SvPV_nolen(PL_numeric_radix_sv));
+
+ use_standard_radix = standard && (!local || standard < local);
+
+ if (use_standard_radix)
+ SET_NUMERIC_STANDARD();
+
+ Perl_atof2(s, x);
+
+ if (use_standard_radix)
+ SET_NUMERIC_LOCAL();
}
else
Perl_atof2(s, x);
@@ -1105,8 +1116,8 @@ Perl_signbit(NV x) {
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/op_reg_common.h b/gnu/usr.bin/perl/op_reg_common.h
index 4e173504c5d..9dcdaaec63b 100644
--- a/gnu/usr.bin/perl/op_reg_common.h
+++ b/gnu/usr.bin/perl/op_reg_common.h
@@ -27,6 +27,7 @@
* RXf_PMf_STD_PMMOD_SHIFT, followed by the p. See STD_PAT_MODS and
* INT_PAT_MODS in regexp.h for the reason contiguity is needed */
/* Make sure to update lib/re.pm when changing these! */
+/* Make sure you keep the pure PMf_ versions below in sync */
#define RXf_PMf_MULTILINE (1 << (RXf_PMf_STD_PMMOD_SHIFT+0)) /* /m */
#define RXf_PMf_SINGLELINE (1 << (RXf_PMf_STD_PMMOD_SHIFT+1)) /* /s */
#define RXf_PMf_FOLD (1 << (RXf_PMf_STD_PMMOD_SHIFT+2)) /* /i */
@@ -36,7 +37,9 @@
/* The character set for the regex is stored in a field of more than one bit
* using an enum, for reasons of compactness and to ensure that the options are
* mutually exclusive */
-/* Make sure to update ext/re/re.pm when changing this! */
+/* Make sure to update ext/re/re.pm and regcomp.sym (as these are used as
+ * offsets for various node types, like POSIXD vs POSIXL, etc) when changing
+ * this! */
typedef enum {
REGEX_DEPENDS_CHARSET = 0,
REGEX_LOCALE_CHARSET,
@@ -77,13 +80,27 @@ get_regex_charset(const U32 flags)
return (regex_charset) ((flags & RXf_PMf_CHARSET) >> _RXf_PMf_CHARSET_SHIFT);
}
+#define _RXf_PMf_SHIFT_COMPILETIME (RXf_PMf_STD_PMMOD_SHIFT+8)
+
+/*
+ Set in Perl_pmruntime if op_flags & OPf_SPECIAL, i.e. split. Will
+ be used by regex engines to check whether they should set
+ RXf_SKIPWHITE
+*/
+#define RXf_PMf_SPLIT (1<<(RXf_PMf_STD_PMMOD_SHIFT+8))
+
/* Next available bit after the above. Name begins with '_' so won't be
* exported by B */
-#define _RXf_PMf_SHIFT_NEXT (RXf_PMf_STD_PMMOD_SHIFT+8)
+#define _RXf_PMf_SHIFT_NEXT (RXf_PMf_STD_PMMOD_SHIFT+9)
/* Mask of the above bits. These need to be transferred from op_pmflags to
* re->extflags during compilation */
-#define RXf_PMf_COMPILETIME (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_CHARSET|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_KEEPCOPY)
+#define RXf_PMf_COMPILETIME (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_KEEPCOPY|RXf_PMf_CHARSET)
+#define RXf_PMf_FLAGCOPYMASK (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_KEEPCOPY|RXf_PMf_CHARSET|RXf_PMf_SPLIT)
+
+#if RXf_PMf_COMPILETIME > 255
+# error RXf_PMf_COMPILETIME wont fit in U8 flags field of eval node
+#endif
/* These copies need to be numerical or defsubs_h.PL won't know about them. */
#define PMf_MULTILINE 1<<0
@@ -91,18 +108,18 @@ get_regex_charset(const U32 flags)
#define PMf_FOLD 1<<2
#define PMf_EXTENDED 1<<3
#define PMf_KEEPCOPY 1<<4
+#define PMf_CHARSET 7<<5
+#define PMf_SPLIT 1<<8
-#if PMf_MULTILINE != RXf_PMf_MULTILINE || PMf_SINGLELINE != RXf_PMf_SINGLELINE || PMf_FOLD != RXf_PMf_FOLD || PMf_EXTENDED != RXf_PMf_EXTENDED || PMf_KEEPCOPY != RXf_PMf_KEEPCOPY
+#if PMf_MULTILINE != RXf_PMf_MULTILINE || PMf_SINGLELINE != RXf_PMf_SINGLELINE || PMf_FOLD != RXf_PMf_FOLD || PMf_EXTENDED != RXf_PMf_EXTENDED || PMf_KEEPCOPY != RXf_PMf_KEEPCOPY || PMf_SPLIT != RXf_PMf_SPLIT || PMf_CHARSET != RXf_PMf_CHARSET
# error RXf_PMf defines are wrong
#endif
-#define PMf_COMPILETIME RXf_PMf_COMPILETIME
-
/* Error check that haven't left something out of this. This isn't done
* directly in the #define because doing so confuses regcomp.pl.
* (2**n - 1) is n 1 bits, so the below gets the contiguous bits between the
* beginning and ending shifts */
-#if RXf_PMf_COMPILETIME != (((1 << (_RXf_PMf_SHIFT_NEXT))-1) \
+#if RXf_PMf_COMPILETIME != (((1 << (_RXf_PMf_SHIFT_COMPILETIME))-1) \
& (~((1 << RXf_PMf_STD_PMMOD_SHIFT)-1)))
# error RXf_PMf_COMPILETIME is invalid
#endif
diff --git a/gnu/usr.bin/perl/opnames.h b/gnu/usr.bin/perl/opnames.h
index 8b6a39a1619..5502ba4d15d 100644
--- a/gnu/usr.bin/perl/opnames.h
+++ b/gnu/usr.bin/perl/opnames.h
@@ -157,241 +157,245 @@ typedef enum opcode {
OP_RV2HV = 140,
OP_HELEM = 141,
OP_HSLICE = 142,
- OP_BOOLKEYS = 143,
- OP_UNPACK = 144,
- OP_PACK = 145,
- OP_SPLIT = 146,
- OP_JOIN = 147,
- OP_LIST = 148,
- OP_LSLICE = 149,
- OP_ANONLIST = 150,
- OP_ANONHASH = 151,
- OP_SPLICE = 152,
- OP_PUSH = 153,
- OP_POP = 154,
- OP_SHIFT = 155,
- OP_UNSHIFT = 156,
- OP_SORT = 157,
- OP_REVERSE = 158,
- OP_GREPSTART = 159,
- OP_GREPWHILE = 160,
- OP_MAPSTART = 161,
- OP_MAPWHILE = 162,
- OP_RANGE = 163,
- OP_FLIP = 164,
- OP_FLOP = 165,
- OP_AND = 166,
- OP_OR = 167,
- OP_XOR = 168,
- OP_DOR = 169,
- OP_COND_EXPR = 170,
- OP_ANDASSIGN = 171,
- OP_ORASSIGN = 172,
- OP_DORASSIGN = 173,
- OP_METHOD = 174,
- OP_ENTERSUB = 175,
- OP_LEAVESUB = 176,
- OP_LEAVESUBLV = 177,
- OP_CALLER = 178,
- OP_WARN = 179,
- OP_DIE = 180,
- OP_RESET = 181,
- OP_LINESEQ = 182,
- OP_NEXTSTATE = 183,
- OP_DBSTATE = 184,
- OP_UNSTACK = 185,
- OP_ENTER = 186,
- OP_LEAVE = 187,
- OP_SCOPE = 188,
- OP_ENTERITER = 189,
- OP_ITER = 190,
- OP_ENTERLOOP = 191,
- OP_LEAVELOOP = 192,
- OP_RETURN = 193,
- OP_LAST = 194,
- OP_NEXT = 195,
- OP_REDO = 196,
- OP_DUMP = 197,
- OP_GOTO = 198,
- OP_EXIT = 199,
- OP_METHOD_NAMED = 200,
- OP_ENTERGIVEN = 201,
- OP_LEAVEGIVEN = 202,
- OP_ENTERWHEN = 203,
- OP_LEAVEWHEN = 204,
- OP_BREAK = 205,
- OP_CONTINUE = 206,
- OP_OPEN = 207,
- OP_CLOSE = 208,
- OP_PIPE_OP = 209,
- OP_FILENO = 210,
- OP_UMASK = 211,
- OP_BINMODE = 212,
- OP_TIE = 213,
- OP_UNTIE = 214,
- OP_TIED = 215,
- OP_DBMOPEN = 216,
- OP_DBMCLOSE = 217,
- OP_SSELECT = 218,
- OP_SELECT = 219,
- OP_GETC = 220,
- OP_READ = 221,
- OP_ENTERWRITE = 222,
- OP_LEAVEWRITE = 223,
- OP_PRTF = 224,
- OP_PRINT = 225,
- OP_SAY = 226,
- OP_SYSOPEN = 227,
- OP_SYSSEEK = 228,
- OP_SYSREAD = 229,
- OP_SYSWRITE = 230,
- OP_EOF = 231,
- OP_TELL = 232,
- OP_SEEK = 233,
- OP_TRUNCATE = 234,
- OP_FCNTL = 235,
- OP_IOCTL = 236,
- OP_FLOCK = 237,
- OP_SEND = 238,
- OP_RECV = 239,
- OP_SOCKET = 240,
- OP_SOCKPAIR = 241,
- OP_BIND = 242,
- OP_CONNECT = 243,
- OP_LISTEN = 244,
- OP_ACCEPT = 245,
- OP_SHUTDOWN = 246,
- OP_GSOCKOPT = 247,
- OP_SSOCKOPT = 248,
- OP_GETSOCKNAME = 249,
- OP_GETPEERNAME = 250,
- OP_LSTAT = 251,
- OP_STAT = 252,
- OP_FTRREAD = 253,
- OP_FTRWRITE = 254,
- OP_FTREXEC = 255,
- OP_FTEREAD = 256,
- OP_FTEWRITE = 257,
- OP_FTEEXEC = 258,
- OP_FTIS = 259,
- OP_FTSIZE = 260,
- OP_FTMTIME = 261,
- OP_FTATIME = 262,
- OP_FTCTIME = 263,
- OP_FTROWNED = 264,
- OP_FTEOWNED = 265,
- OP_FTZERO = 266,
- OP_FTSOCK = 267,
- OP_FTCHR = 268,
- OP_FTBLK = 269,
- OP_FTFILE = 270,
- OP_FTDIR = 271,
- OP_FTPIPE = 272,
- OP_FTSUID = 273,
- OP_FTSGID = 274,
- OP_FTSVTX = 275,
- OP_FTLINK = 276,
- OP_FTTTY = 277,
- OP_FTTEXT = 278,
- OP_FTBINARY = 279,
- OP_CHDIR = 280,
- OP_CHOWN = 281,
- OP_CHROOT = 282,
- OP_UNLINK = 283,
- OP_CHMOD = 284,
- OP_UTIME = 285,
- OP_RENAME = 286,
- OP_LINK = 287,
- OP_SYMLINK = 288,
- OP_READLINK = 289,
- OP_MKDIR = 290,
- OP_RMDIR = 291,
- OP_OPEN_DIR = 292,
- OP_READDIR = 293,
- OP_TELLDIR = 294,
- OP_SEEKDIR = 295,
- OP_REWINDDIR = 296,
- OP_CLOSEDIR = 297,
- OP_FORK = 298,
- OP_WAIT = 299,
- OP_WAITPID = 300,
- OP_SYSTEM = 301,
- OP_EXEC = 302,
- OP_KILL = 303,
- OP_GETPPID = 304,
- OP_GETPGRP = 305,
- OP_SETPGRP = 306,
- OP_GETPRIORITY = 307,
- OP_SETPRIORITY = 308,
- OP_TIME = 309,
- OP_TMS = 310,
- OP_LOCALTIME = 311,
- OP_GMTIME = 312,
- OP_ALARM = 313,
- OP_SLEEP = 314,
- OP_SHMGET = 315,
- OP_SHMCTL = 316,
- OP_SHMREAD = 317,
- OP_SHMWRITE = 318,
- OP_MSGGET = 319,
- OP_MSGCTL = 320,
- OP_MSGSND = 321,
- OP_MSGRCV = 322,
- OP_SEMOP = 323,
- OP_SEMGET = 324,
- OP_SEMCTL = 325,
- OP_REQUIRE = 326,
- OP_DOFILE = 327,
- OP_HINTSEVAL = 328,
- OP_ENTEREVAL = 329,
- OP_LEAVEEVAL = 330,
- OP_ENTERTRY = 331,
- OP_LEAVETRY = 332,
- OP_GHBYNAME = 333,
- OP_GHBYADDR = 334,
- OP_GHOSTENT = 335,
- OP_GNBYNAME = 336,
- OP_GNBYADDR = 337,
- OP_GNETENT = 338,
- OP_GPBYNAME = 339,
- OP_GPBYNUMBER = 340,
- OP_GPROTOENT = 341,
- OP_GSBYNAME = 342,
- OP_GSBYPORT = 343,
- OP_GSERVENT = 344,
- OP_SHOSTENT = 345,
- OP_SNETENT = 346,
- OP_SPROTOENT = 347,
- OP_SSERVENT = 348,
- OP_EHOSTENT = 349,
- OP_ENETENT = 350,
- OP_EPROTOENT = 351,
- OP_ESERVENT = 352,
- OP_GPWNAM = 353,
- OP_GPWUID = 354,
- OP_GPWENT = 355,
- OP_SPWENT = 356,
- OP_EPWENT = 357,
- OP_GGRNAM = 358,
- OP_GGRGID = 359,
- OP_GGRENT = 360,
- OP_SGRENT = 361,
- OP_EGRENT = 362,
- OP_GETLOGIN = 363,
- OP_SYSCALL = 364,
- OP_LOCK = 365,
- OP_ONCE = 366,
- OP_CUSTOM = 367,
- OP_REACH = 368,
- OP_RKEYS = 369,
- OP_RVALUES = 370,
- OP_COREARGS = 371,
- OP_RUNCV = 372,
- OP_FC = 373,
+ OP_UNPACK = 143,
+ OP_PACK = 144,
+ OP_SPLIT = 145,
+ OP_JOIN = 146,
+ OP_LIST = 147,
+ OP_LSLICE = 148,
+ OP_ANONLIST = 149,
+ OP_ANONHASH = 150,
+ OP_SPLICE = 151,
+ OP_PUSH = 152,
+ OP_POP = 153,
+ OP_SHIFT = 154,
+ OP_UNSHIFT = 155,
+ OP_SORT = 156,
+ OP_REVERSE = 157,
+ OP_GREPSTART = 158,
+ OP_GREPWHILE = 159,
+ OP_MAPSTART = 160,
+ OP_MAPWHILE = 161,
+ OP_RANGE = 162,
+ OP_FLIP = 163,
+ OP_FLOP = 164,
+ OP_AND = 165,
+ OP_OR = 166,
+ OP_XOR = 167,
+ OP_DOR = 168,
+ OP_COND_EXPR = 169,
+ OP_ANDASSIGN = 170,
+ OP_ORASSIGN = 171,
+ OP_DORASSIGN = 172,
+ OP_METHOD = 173,
+ OP_ENTERSUB = 174,
+ OP_LEAVESUB = 175,
+ OP_LEAVESUBLV = 176,
+ OP_CALLER = 177,
+ OP_WARN = 178,
+ OP_DIE = 179,
+ OP_RESET = 180,
+ OP_LINESEQ = 181,
+ OP_NEXTSTATE = 182,
+ OP_DBSTATE = 183,
+ OP_UNSTACK = 184,
+ OP_ENTER = 185,
+ OP_LEAVE = 186,
+ OP_SCOPE = 187,
+ OP_ENTERITER = 188,
+ OP_ITER = 189,
+ OP_ENTERLOOP = 190,
+ OP_LEAVELOOP = 191,
+ OP_RETURN = 192,
+ OP_LAST = 193,
+ OP_NEXT = 194,
+ OP_REDO = 195,
+ OP_DUMP = 196,
+ OP_GOTO = 197,
+ OP_EXIT = 198,
+ OP_METHOD_NAMED = 199,
+ OP_ENTERGIVEN = 200,
+ OP_LEAVEGIVEN = 201,
+ OP_ENTERWHEN = 202,
+ OP_LEAVEWHEN = 203,
+ OP_BREAK = 204,
+ OP_CONTINUE = 205,
+ OP_OPEN = 206,
+ OP_CLOSE = 207,
+ OP_PIPE_OP = 208,
+ OP_FILENO = 209,
+ OP_UMASK = 210,
+ OP_BINMODE = 211,
+ OP_TIE = 212,
+ OP_UNTIE = 213,
+ OP_TIED = 214,
+ OP_DBMOPEN = 215,
+ OP_DBMCLOSE = 216,
+ OP_SSELECT = 217,
+ OP_SELECT = 218,
+ OP_GETC = 219,
+ OP_READ = 220,
+ OP_ENTERWRITE = 221,
+ OP_LEAVEWRITE = 222,
+ OP_PRTF = 223,
+ OP_PRINT = 224,
+ OP_SAY = 225,
+ OP_SYSOPEN = 226,
+ OP_SYSSEEK = 227,
+ OP_SYSREAD = 228,
+ OP_SYSWRITE = 229,
+ OP_EOF = 230,
+ OP_TELL = 231,
+ OP_SEEK = 232,
+ OP_TRUNCATE = 233,
+ OP_FCNTL = 234,
+ OP_IOCTL = 235,
+ OP_FLOCK = 236,
+ OP_SEND = 237,
+ OP_RECV = 238,
+ OP_SOCKET = 239,
+ OP_SOCKPAIR = 240,
+ OP_BIND = 241,
+ OP_CONNECT = 242,
+ OP_LISTEN = 243,
+ OP_ACCEPT = 244,
+ OP_SHUTDOWN = 245,
+ OP_GSOCKOPT = 246,
+ OP_SSOCKOPT = 247,
+ OP_GETSOCKNAME = 248,
+ OP_GETPEERNAME = 249,
+ OP_LSTAT = 250,
+ OP_STAT = 251,
+ OP_FTRREAD = 252,
+ OP_FTRWRITE = 253,
+ OP_FTREXEC = 254,
+ OP_FTEREAD = 255,
+ OP_FTEWRITE = 256,
+ OP_FTEEXEC = 257,
+ OP_FTIS = 258,
+ OP_FTSIZE = 259,
+ OP_FTMTIME = 260,
+ OP_FTATIME = 261,
+ OP_FTCTIME = 262,
+ OP_FTROWNED = 263,
+ OP_FTEOWNED = 264,
+ OP_FTZERO = 265,
+ OP_FTSOCK = 266,
+ OP_FTCHR = 267,
+ OP_FTBLK = 268,
+ OP_FTFILE = 269,
+ OP_FTDIR = 270,
+ OP_FTPIPE = 271,
+ OP_FTSUID = 272,
+ OP_FTSGID = 273,
+ OP_FTSVTX = 274,
+ OP_FTLINK = 275,
+ OP_FTTTY = 276,
+ OP_FTTEXT = 277,
+ OP_FTBINARY = 278,
+ OP_CHDIR = 279,
+ OP_CHOWN = 280,
+ OP_CHROOT = 281,
+ OP_UNLINK = 282,
+ OP_CHMOD = 283,
+ OP_UTIME = 284,
+ OP_RENAME = 285,
+ OP_LINK = 286,
+ OP_SYMLINK = 287,
+ OP_READLINK = 288,
+ OP_MKDIR = 289,
+ OP_RMDIR = 290,
+ OP_OPEN_DIR = 291,
+ OP_READDIR = 292,
+ OP_TELLDIR = 293,
+ OP_SEEKDIR = 294,
+ OP_REWINDDIR = 295,
+ OP_CLOSEDIR = 296,
+ OP_FORK = 297,
+ OP_WAIT = 298,
+ OP_WAITPID = 299,
+ OP_SYSTEM = 300,
+ OP_EXEC = 301,
+ OP_KILL = 302,
+ OP_GETPPID = 303,
+ OP_GETPGRP = 304,
+ OP_SETPGRP = 305,
+ OP_GETPRIORITY = 306,
+ OP_SETPRIORITY = 307,
+ OP_TIME = 308,
+ OP_TMS = 309,
+ OP_LOCALTIME = 310,
+ OP_GMTIME = 311,
+ OP_ALARM = 312,
+ OP_SLEEP = 313,
+ OP_SHMGET = 314,
+ OP_SHMCTL = 315,
+ OP_SHMREAD = 316,
+ OP_SHMWRITE = 317,
+ OP_MSGGET = 318,
+ OP_MSGCTL = 319,
+ OP_MSGSND = 320,
+ OP_MSGRCV = 321,
+ OP_SEMOP = 322,
+ OP_SEMGET = 323,
+ OP_SEMCTL = 324,
+ OP_REQUIRE = 325,
+ OP_DOFILE = 326,
+ OP_HINTSEVAL = 327,
+ OP_ENTEREVAL = 328,
+ OP_LEAVEEVAL = 329,
+ OP_ENTERTRY = 330,
+ OP_LEAVETRY = 331,
+ OP_GHBYNAME = 332,
+ OP_GHBYADDR = 333,
+ OP_GHOSTENT = 334,
+ OP_GNBYNAME = 335,
+ OP_GNBYADDR = 336,
+ OP_GNETENT = 337,
+ OP_GPBYNAME = 338,
+ OP_GPBYNUMBER = 339,
+ OP_GPROTOENT = 340,
+ OP_GSBYNAME = 341,
+ OP_GSBYPORT = 342,
+ OP_GSERVENT = 343,
+ OP_SHOSTENT = 344,
+ OP_SNETENT = 345,
+ OP_SPROTOENT = 346,
+ OP_SSERVENT = 347,
+ OP_EHOSTENT = 348,
+ OP_ENETENT = 349,
+ OP_EPROTOENT = 350,
+ OP_ESERVENT = 351,
+ OP_GPWNAM = 352,
+ OP_GPWUID = 353,
+ OP_GPWENT = 354,
+ OP_SPWENT = 355,
+ OP_EPWENT = 356,
+ OP_GGRNAM = 357,
+ OP_GGRGID = 358,
+ OP_GGRENT = 359,
+ OP_SGRENT = 360,
+ OP_EGRENT = 361,
+ OP_GETLOGIN = 362,
+ OP_SYSCALL = 363,
+ OP_LOCK = 364,
+ OP_ONCE = 365,
+ OP_CUSTOM = 366,
+ OP_REACH = 367,
+ OP_RKEYS = 368,
+ OP_RVALUES = 369,
+ OP_COREARGS = 370,
+ OP_RUNCV = 371,
+ OP_FC = 372,
+ OP_PADCV = 373,
+ OP_INTROCV = 374,
+ OP_CLONECV = 375,
+ OP_PADRANGE = 376,
OP_max
} opcode;
-#define MAXO 374
+#define MAXO 377
+#define OP_FREED MAXO
/* the OP_IS_* macros are optimized to a simple range check because
all the member OPs are contiguous in regen/opcodes table.
diff --git a/gnu/usr.bin/perl/os2/OS2/OS2-ExtAttr/ExtAttr.pm b/gnu/usr.bin/perl/os2/OS2/OS2-ExtAttr/ExtAttr.pm
index c49f1d4de56..a48a6624bdf 100644
--- a/gnu/usr.bin/perl/os2/OS2/OS2-ExtAttr/ExtAttr.pm
+++ b/gnu/usr.bin/perl/os2/OS2/OS2-ExtAttr/ExtAttr.pm
@@ -3,7 +3,7 @@ package OS2::ExtAttr;
use strict;
use XSLoader;
-our $VERSION = '0.02';
+our $VERSION = '0.03';
XSLoader::load 'OS2::ExtAttr', $VERSION;
# Preloaded methods go here.
@@ -122,7 +122,7 @@ OS2::ExtAttr - Perl access to extended attributes.
tie %ea, 'OS2::ExtAttr', 'my.file';
print $ea{eaname};
$ea{myfield} = 'value';
-
+
untie %ea;
=head1 DESCRIPTION
diff --git a/gnu/usr.bin/perl/os2/OS2/OS2-Process/Process.pm b/gnu/usr.bin/perl/os2/OS2/OS2-Process/Process.pm
index 21ca9aa8042..baee0e6ddb1 100644
--- a/gnu/usr.bin/perl/os2/OS2/OS2-Process/Process.pm
+++ b/gnu/usr.bin/perl/os2/OS2/OS2-Process/Process.pm
@@ -20,7 +20,7 @@ BEGIN {
#require AutoLoader;
our @ISA = qw(Exporter);
- our $VERSION = "1.07";
+ our $VERSION = "1.08";
XSLoader::load('OS2::Process', $VERSION);
}
@@ -1750,7 +1750,7 @@ specifies whether region scan should be interruptible by signals.
Use class C<OS2::localClipbrd> to ensure that clipboard is closed even if
the code in the block made a non-local exit.
-See the L</OS2::localMorphPM, OS2::localFlashWindow, and OS2::localClipbrd classes
+See the L</OS2::localMorphPM, OS2::localFlashWindow, and OS2::localClipbrd classes>
=head2 Control of the PM atom tables
diff --git a/gnu/usr.bin/perl/os2/OS2/OS2-REXX/DLL/DLL.pm b/gnu/usr.bin/perl/os2/OS2/OS2-REXX/DLL/DLL.pm
index a0d3b21eb09..a7d4504d689 100644
--- a/gnu/usr.bin/perl/os2/OS2/OS2-REXX/DLL/DLL.pm
+++ b/gnu/usr.bin/perl/os2/OS2/OS2-REXX/DLL/DLL.pm
@@ -1,6 +1,6 @@
package OS2::DLL;
-our $VERSION = '1.04';
+our $VERSION = '1.05';
use Carp;
use XSLoader;
@@ -152,7 +152,7 @@ See documentation of L<OS2::REXX> module if you need the variable pool.
=head1 DESCRIPTION
-=head2 L<Create a DLL handle>
+=head2 Create a DLL handle
$dll = OS2::DLL->module( NAME [, WHERE] );
diff --git a/gnu/usr.bin/perl/os2/perlrexx.c b/gnu/usr.bin/perl/os2/perlrexx.c
index 840b1172c53..98a550262a1 100644
--- a/gnu/usr.bin/perl/os2/perlrexx.c
+++ b/gnu/usr.bin/perl/os2/perlrexx.c
@@ -35,12 +35,6 @@ ULONG PERLEXPORTALL(PCSZ name, LONG rargc, const RXSTRING *rargv, PCSZ queuename
ULONG PERLDROPALL(PCSZ name, LONG rargc, const RXSTRING *rargv, PCSZ queuename, PRXSTRING retstr);
ULONG PERLDROPALLEXIT(PCSZ name, LONG rargc, const RXSTRING *rargv, PCSZ queuename, PRXSTRING retstr);
-#if defined (atarist)
-/* The Atari operating system doesn't have a dynamic stack. The
- stack size is determined from this value. */
-long _stksize = 64 * 1024;
-#endif
-
/* Register any extra external extensions */
/* Do not delete this line--writemain depends on it */
diff --git a/gnu/usr.bin/perl/overload.c b/gnu/usr.bin/perl/overload.c
index 91e2d20bb4a..cd28df4c936 100644
--- a/gnu/usr.bin/perl/overload.c
+++ b/gnu/usr.bin/perl/overload.c
@@ -84,8 +84,7 @@ static const U8 PL_AMG_namelens[NofAMmeth] = {
3,
3,
3,
- 3,
- 7
+ 3
};
static const char * const PL_AMG_names[NofAMmeth] = {
@@ -161,8 +160,7 @@ static const char * const PL_AMG_names[NofAMmeth] = {
"(.=", /* concat_ass */
"(~~", /* smart */
"(-X", /* ftest */
- "(qr", /* regexp */
- "DESTROY"
+ "(qr"
};
/* ex: set ro: */
diff --git a/gnu/usr.bin/perl/overload.h b/gnu/usr.bin/perl/overload.h
index 24cde2ad131..1628ac00252 100644
--- a/gnu/usr.bin/perl/overload.h
+++ b/gnu/usr.bin/perl/overload.h
@@ -82,7 +82,6 @@ enum {
smart_amg, /* 0x41 ~~ */
ftest_amg, /* 0x42 -X */
regexp_amg, /* 0x43 qr */
- DESTROY_amg, /* 0x44 DESTROY */
max_amg_code
/* Do not leave a trailing comma here. C9X allows it, C89 doesn't. */
};
diff --git a/gnu/usr.bin/perl/pad.c b/gnu/usr.bin/perl/pad.c
index c70ca08ba6c..70519e48945 100644
--- a/gnu/usr.bin/perl/pad.c
+++ b/gnu/usr.bin/perl/pad.c
@@ -29,40 +29,40 @@
=for apidoc Amx|PADLIST *|CvPADLIST|CV *cv
-CV's can have CvPADLIST(cv) set to point to an AV. This is the CV's
+CV's can have CvPADLIST(cv) set to point to a PADLIST. This is the CV's
scratchpad, which stores lexical variables and opcode temporary and
per-thread values.
-For these purposes "forms" are a kind-of CV, eval""s are too (except they're
+For these purposes "formats" are a kind-of CV; eval""s are too (except they're
not callable at will and are always thrown away after the eval"" is done
-executing). Require'd files are simply evals without any outer lexical
+executing). Require'd files are simply evals without any outer lexical
scope.
XSUBs don't have CvPADLIST set - dXSTARG fetches values from PL_curpad,
but that is really the callers pad (a slot of which is allocated by
every entersub).
-The CvPADLIST AV has the REFCNT of its component items managed "manually"
-(mostly in pad.c) rather than by normal av.c rules. So we turn off AvREAL
-just before freeing it, to let av.c know not to touch the entries.
-The items in the AV are not SVs as for a normal AV, but other AVs:
+The PADLIST has a C array where pads are stored.
-0'th Entry of the CvPADLIST is an AV which represents the "names" or rather
-the "static type information" for lexicals.
+The 0th entry of the PADLIST is a PADNAMELIST (which is actually just an
+AV, but that may change) which represents the "names" or rather
+the "static type information" for lexicals. The individual elements of a
+PADNAMELIST are PADNAMEs (just SVs; but, again, that may change). Future
+refactorings might stop the PADNAMELIST from being stored in the PADLIST's
+array, so don't rely on it. See L</PadlistNAMES>.
-The CvDEPTH'th entry of CvPADLIST AV is an AV which is the stack frame at that
-depth of recursion into the CV.
-The 0'th slot of a frame AV is an AV which is @_.
-other entries are storage for variables and op targets.
+The CvDEPTH'th entry of a PADLIST is a PAD (an AV) which is the stack frame
+at that depth of recursion into the CV. The 0th slot of a frame AV is an
+AV which is @_. Other entries are storage for variables and op targets.
-Iterating over the names AV iterates over all possible pad
-items. Pad slots that are SVs_PADTMP (targets/GVs/constants) end up having
+Iterating over the PADNAMELIST iterates over all possible pad
+items. Pad slots that are SVs_PADTMP (targets/GVs/constants) end up having
&PL_sv_undef "names" (see pad_alloc()).
-Only my/our variable (SVs_PADMY/SVs_PADOUR) slots get valid names.
+Only my/our variable (SvPADMY/PADNAME_isOUR) slots get valid names.
The rest are op targets/GVs/constants which are statically allocated
or resolved at compile time. These don't have names by which they
-can be looked up from Perl code at run time through eval"" like
+can be looked up from Perl code at run time through eval"" the way
my/our variables can be. Since they can't be looked up by "name"
but only by their index allocated at compile time (which is usually
in PL_op->op_targ), wasting a name SV for them doesn't make sense.
@@ -85,7 +85,8 @@ SvOURSTASH slot pointing at the stash of the associated global (so that
duplicate C<our> declarations in the same package can be detected). SvUVX is
sometimes hijacked to store the generation number during compilation.
-If SvFAKE is set on the name SV, then that slot in the frame AV is
+If PADNAME_OUTER (SvFAKE) is set on the
+name SV, then that slot in the frame AV is
a REFCNT'ed reference to a lexical from "outside". In this case,
the name SV does not use xlow and xhigh to store a cop_seq range, since it is
in scope throughout. Instead xhigh stores some flags containing info about
@@ -94,28 +95,30 @@ instantiated multiple times?), and for fake ANONs, xlow contains the index
within the parent's pad where the lexical's value is stored, to make
cloning quicker.
-If the 'name' is '&' the corresponding entry in frame AV
+If the 'name' is '&' the corresponding entry in the PAD
is a CV representing a possible closure.
-(SvFAKE and name of '&' is not a meaningful combination currently but could
+(PADNAME_OUTER and name of '&' is not a
+meaningful combination currently but could
become so if C<my sub foo {}> is implemented.)
Note that formats are treated as anon subs, and are cloned each time
write is called (if necessary).
The flag SVs_PADSTALE is cleared on lexicals each time the my() is executed,
-and set on scope exit. This allows the 'Variable $x is not available' warning
+and set on scope exit. This allows the
+'Variable $x is not available' warning
to be generated in evals, such as
{ my $x = 1; sub f { eval '$x'} } f();
-For state vars, SVs_PADSTALE is overloaded to mean 'not yet initialised'
+For state vars, SVs_PADSTALE is overloaded to mean 'not yet initialised'.
-=for apidoc AmxU|AV *|PL_comppad_name
+=for apidoc AmxU|PADNAMELIST *|PL_comppad_name
During compilation, this points to the array containing the names part
of the pad for the currently-compiling code.
-=for apidoc AmxU|AV *|PL_comppad
+=for apidoc AmxU|PAD *|PL_comppad
During compilation, this points to the array containing the values
part of the pad for the currently-compiling code. (At runtime a CV may
@@ -126,7 +129,7 @@ values for the pad for the currently-executing code.
=for apidoc AmxU|SV **|PL_curpad
Points directly to the body of the L</PL_comppad> array.
-(I.e., this is C<AvARRAY(PL_comppad)>.)
+(I.e., this is C<PAD_ARRAY(PL_comppad)>.)
=cut
*/
@@ -193,7 +196,7 @@ sv_eq_pvn_flags(pTHX_ const SV *sv, const char* pv, const STRLEN pvlen, const U3
sv_recode_to_utf8(svrecode, PL_encoding);
pv1 = SvPV_const(svrecode, cur1);
}
- SvREFCNT_dec(svrecode);
+ SvREFCNT_dec_NN(svrecode);
}
if (flags & SVf_UTF8)
return (bytes_cmp_utf8(
@@ -228,8 +231,9 @@ PADLIST *
Perl_pad_new(pTHX_ int flags)
{
dVAR;
- AV *padlist, *padname, *pad;
- SV **ary;
+ PADLIST *padlist;
+ PAD *padname, *pad;
+ PAD **ary;
ASSERT_CURPAD_LEGAL("pad_new");
@@ -243,8 +247,8 @@ Perl_pad_new(pTHX_ int flags)
if (flags & padnew_SAVE) {
SAVECOMPPAD();
- SAVESPTR(PL_comppad_name);
if (! (flags & padnew_CLONE)) {
+ SAVESPTR(PL_comppad_name);
SAVEI32(PL_padix);
SAVEI32(PL_comppad_name_fill);
SAVEI32(PL_min_intro_pending);
@@ -260,8 +264,7 @@ Perl_pad_new(pTHX_ int flags)
/* ... create new pad ... */
- padlist = newAV();
- padname = newAV();
+ Newxz(padlist, 1, PADLIST);
pad = newAV();
if (flags & padnew_CLONE) {
@@ -273,30 +276,31 @@ Perl_pad_new(pTHX_ int flags)
AV * const a0 = newAV(); /* will be @_ */
av_store(pad, 0, MUTABLE_SV(a0));
AvREIFY_only(a0);
+
+ padname = (PAD *)SvREFCNT_inc_simple_NN(PL_comppad_name);
}
else {
av_store(pad, 0, NULL);
+ padname = newAV();
}
/* Most subroutines never recurse, hence only need 2 entries in the padlist
array - names, and depth=1. The default for av_store() is to allocate
0..3, and even an explicit call to av_extend() with <3 will be rounded
up, so we inline the allocation of the array here. */
- Newx(ary, 2, SV*);
- AvFILLp(padlist) = 1;
- AvMAX(padlist) = 1;
- AvALLOC(padlist) = ary;
- AvARRAY(padlist) = ary;
- ary[0] = MUTABLE_SV(padname);
- ary[1] = MUTABLE_SV(pad);
+ Newx(ary, 2, PAD *);
+ PadlistMAX(padlist) = 1;
+ PadlistARRAY(padlist) = ary;
+ ary[0] = padname;
+ ary[1] = pad;
/* ... then update state variables */
- PL_comppad_name = padname;
PL_comppad = pad;
PL_curpad = AvARRAY(pad);
if (! (flags & padnew_CLONE)) {
+ PL_comppad_name = padname;
PL_comppad_name_fill = 0;
PL_min_intro_pending = 0;
PL_padix = 0;
@@ -333,6 +337,7 @@ Perl_cv_undef(pTHX_ CV *cv)
{
dVAR;
const PADLIST *padlist = CvPADLIST(cv);
+ bool const slabbed = !!CvSLABBED(cv);
PERL_ARGS_ASSERT_CV_UNDEF;
@@ -346,6 +351,7 @@ Perl_cv_undef(pTHX_ CV *cv)
}
CvFILE(cv) = NULL;
+ CvSLABBED_off(cv);
if (!CvISXSUB(cv) && CvROOT(cv)) {
if (SvTYPE(cv) == SVt_PVCV && CvDEPTH(cv))
Perl_croak(aTHX_ "Can't undef active subroutine");
@@ -353,19 +359,36 @@ Perl_cv_undef(pTHX_ CV *cv)
PAD_SAVE_SETNULLPAD();
+ if (slabbed) OpslabREFCNT_dec_padok(OpSLAB(CvROOT(cv)));
op_free(CvROOT(cv));
CvROOT(cv) = NULL;
CvSTART(cv) = NULL;
LEAVE;
}
+ else if (slabbed && CvSTART(cv)) {
+ ENTER;
+ PAD_SAVE_SETNULLPAD();
+
+ /* discard any leaked ops */
+ if (PL_parser)
+ parser_free_nexttoke_ops(PL_parser, (OPSLAB *)CvSTART(cv));
+ opslab_force_free((OPSLAB *)CvSTART(cv));
+ CvSTART(cv) = NULL;
+
+ LEAVE;
+ }
+#ifdef DEBUGGING
+ else if (slabbed) Perl_warn(aTHX_ "Slab leaked from cv %p", cv);
+#endif
SvPOK_off(MUTABLE_SV(cv)); /* forget prototype */
- CvGV_set(cv, NULL);
+ sv_unmagic((SV *)cv, PERL_MAGIC_checkcall);
+ if (CvNAMED(cv)) CvNAME_HEK_set(cv, NULL);
+ else CvGV_set(cv, NULL);
/* This statement and the subsequence if block was pad_undef(). */
pad_peg("pad_undef");
- if (padlist && !SvIS_FREED(padlist) /* may be during global destruction */
- ) {
+ if (padlist) {
I32 ix;
/* Free the padlist associated with a CV.
@@ -388,9 +411,9 @@ Perl_cv_undef(pTHX_ CV *cv)
if (PL_phase != PERL_PHASE_DESTRUCT) { /* don't bother during global destruction */
CV * const outercv = CvOUTSIDE(cv);
const U32 seq = CvOUTSIDE_SEQ(cv);
- AV * const comppad_name = MUTABLE_AV(AvARRAY(padlist)[0]);
+ PAD * const comppad_name = PadlistARRAY(padlist)[0];
SV ** const namepad = AvARRAY(comppad_name);
- AV * const comppad = MUTABLE_AV(AvARRAY(padlist)[1]);
+ PAD * const comppad = PadlistARRAY(padlist)[1];
SV ** const curpad = AvARRAY(comppad);
for (ix = AvFILLp(comppad_name); ix > 0; ix--) {
SV * const namesv = namepad[ix];
@@ -401,12 +424,10 @@ Perl_cv_undef(pTHX_ CV *cv)
U32 inner_rc = SvREFCNT(innercv);
assert(inner_rc);
assert(SvTYPE(innercv) != SVt_PVFM);
- namepad[ix] = NULL;
- SvREFCNT_dec(namesv);
if (SvREFCNT(comppad) < 2) { /* allow for /(?{ sub{} })/ */
curpad[ix] = NULL;
- SvREFCNT_dec(innercv);
+ SvREFCNT_dec_NN(innercv);
inner_rc--;
}
@@ -428,25 +449,25 @@ Perl_cv_undef(pTHX_ CV *cv)
}
}
- ix = AvFILLp(padlist);
+ ix = PadlistMAX(padlist);
while (ix > 0) {
- SV* const sv = AvARRAY(padlist)[ix--];
+ PAD * const sv = PadlistARRAY(padlist)[ix--];
if (sv) {
- if (sv == (const SV *)PL_comppad) {
+ if (sv == PL_comppad) {
PL_comppad = NULL;
PL_curpad = NULL;
}
- SvREFCNT_dec(sv);
+ SvREFCNT_dec_NN(sv);
}
}
{
- SV *const sv = AvARRAY(padlist)[0];
- if (sv == (const SV *)PL_comppad_name)
+ PAD * const sv = PadlistARRAY(padlist)[0];
+ if (sv == PL_comppad_name && SvREFCNT(sv) == 1)
PL_comppad_name = NULL;
SvREFCNT_dec(sv);
}
- AvREAL_off(CvPADLIST(cv));
- SvREFCNT_dec(MUTABLE_SV(CvPADLIST(cv)));
+ if (PadlistARRAY(padlist)) Safefree(PadlistARRAY(padlist));
+ Safefree(padlist);
CvPADLIST(cv) = NULL;
}
@@ -471,6 +492,47 @@ Perl_cv_undef(pTHX_ CV *cv)
}
/*
+=for apidoc cv_forget_slab
+
+When a CV has a reference count on its slab (CvSLABBED), it is responsible
+for making sure it is freed. (Hence, no two CVs should ever have a
+reference count on the same slab.) The CV only needs to reference the slab
+during compilation. Once it is compiled and CvROOT attached, it has
+finished its job, so it can forget the slab.
+
+=cut
+*/
+
+void
+Perl_cv_forget_slab(pTHX_ CV *cv)
+{
+ const bool slabbed = !!CvSLABBED(cv);
+ OPSLAB *slab = NULL;
+
+ PERL_ARGS_ASSERT_CV_FORGET_SLAB;
+
+ if (!slabbed) return;
+
+ CvSLABBED_off(cv);
+
+ if (CvROOT(cv)) slab = OpSLAB(CvROOT(cv));
+ else if (CvSTART(cv)) slab = (OPSLAB *)CvSTART(cv);
+#ifdef DEBUGGING
+ else if (slabbed) Perl_warn(aTHX_ "Slab leaked from cv %p", cv);
+#endif
+
+ if (slab) {
+#ifdef PERL_DEBUG_READONLY_OPS
+ const size_t refcnt = slab->opslab_refcnt;
+#endif
+ OpslabREFCNT_dec(slab);
+#ifdef PERL_DEBUG_READONLY_OPS
+ if (refcnt > 1) Slab_to_ro(slab);
+#endif
+ }
+}
+
+/*
=for apidoc m|PADOFFSET|pad_alloc_name|SV *namesv|U32 flags|HV *typestash|HV *ourstash
Allocates a place in the currently-compiling
@@ -565,8 +627,12 @@ Perl_pad_add_name_pvn(pTHX_ const char *namepv, STRLEN namelen,
flags &= ~padadd_UTF8_NAME;
if ((flags & padadd_NO_DUP_CHECK) == 0) {
+ ENTER;
+ SAVEFREESV(namesv); /* in case of fatal warnings */
/* check for duplicate declaration */
pad_check_dup(namesv, flags & padadd_OUR, ourstash);
+ SvREFCNT_inc_simple_void_NN(namesv);
+ LEAVE;
}
offset = pad_alloc_name(namesv, flags & ~padadd_UTF8_NAME, typestash, ourstash);
@@ -585,6 +651,8 @@ Perl_pad_add_name_pvn(pTHX_ const char *namepv, STRLEN namelen,
sv_upgrade(PL_curpad[offset], SVt_PVAV);
else if (namelen != 0 && *namepv == '%')
sv_upgrade(PL_curpad[offset], SVt_PVHV);
+ else if (namelen != 0 && *namepv == '&')
+ sv_upgrade(PL_curpad[offset], SVt_PVCV);
assert(SvPADMY(PL_curpad[offset]));
DEBUG_Xv(PerlIO_printf(Perl_debug_log,
"Pad addname: %ld \"%s\" new lex=0x%"UVxf"\n",
@@ -653,11 +721,6 @@ but is used for debugging.
/* XXX DAPM integrate alloc(), add_name() and add_anon(),
* or at least rationalise ??? */
-/* And flag whether the incoming name is UTF8 or 8 bit?
- Could do this either with the +ve/-ve hack of the HV code, or expanding
- the flag bits. Either way, this makes proper Unicode safe pad support.
- NWC
-*/
PADOFFSET
Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype)
@@ -725,6 +788,8 @@ currently-compiling function.
The function I<func> is linked into the pad, and its C<CvOUTSIDE> link
to the outer scope is weakened to avoid a reference loop.
+One reference count is stolen, so you may need to do C<SvREFCNT_inc(func)>.
+
I<optype> should be an opcode indicating the type of operation that the
pad entry is to support. This doesn't affect operational semantics,
but is used for debugging.
@@ -753,7 +818,7 @@ Perl_pad_add_anon(pTHX_ CV* func, I32 optype)
if (SvTYPE(func) == SVt_PVCV || !CvOUTSIDE(func))
av_store(PL_comppad, ix, (SV*)func);
else {
- SV *rv = newRV_inc((SV *)func);
+ SV *rv = newRV_noinc((SV *)func);
sv_rvweaken(rv);
assert (SvTYPE(func) == SVt_PVFM);
av_store(PL_comppad, ix, rv);
@@ -765,7 +830,7 @@ Perl_pad_add_anon(pTHX_ CV* func, I32 optype)
if (CvOUTSIDE(func) && SvTYPE(func) == SVt_PVCV) {
assert(!CvWEAKOUTSIDE(func));
CvWEAKOUTSIDE_on(func);
- SvREFCNT_dec(CvOUTSIDE(func));
+ SvREFCNT_dec_NN(CvOUTSIDE(func));
}
return ix;
}
@@ -817,9 +882,11 @@ S_pad_check_dup(pTHX_ SV *name, U32 flags, const HV *ourstash)
{
if (is_our && (SvPAD_OUR(sv)))
break; /* "our" masking "our" */
+ /* diag_listed_as: "%s" variable %s masks earlier declaration in same %s */
Perl_warner(aTHX_ packWARN(WARN_MISC),
- "\"%s\" variable %"SVf" masks earlier declaration in same %s",
+ "\"%s\" %s %"SVf" masks earlier declaration in same %s",
(is_our ? "our" : PL_parser->in_my == KEY_my ? "my" : "state"),
+ *SvPVX(sv) == '&' ? "subroutine" : "variable",
sv,
(COP_SEQ_RANGE_HIGH(sv) == PERL_PADSEQ_INTRO
? "scope" : "statement"));
@@ -904,7 +971,7 @@ Perl_pad_findmy_pvn(pTHX_ const char *namepv, STRLEN namelen, U32 flags)
* our $foo = 0 unless defined $foo;
* to not give a warning. (Yes, this is a hack) */
- nameav = MUTABLE_AV(AvARRAY(CvPADLIST(PL_compcv))[0]);
+ nameav = PadlistARRAY(CvPADLIST(PL_compcv))[0];
name_svp = AvARRAY(nameav);
for (offset = AvFILLp(nameav); offset > 0; offset--) {
const SV * const namesv = name_svp[offset];
@@ -1021,7 +1088,7 @@ Perl_find_rundefsv2(pTHX_ CV *cv, U32 seq)
if (po == NOT_IN_PAD || SvPAD_OUR(namesv))
return DEFSV;
- return AvARRAY((PAD*) (AvARRAY(CvPADLIST(cv))[CvDEPTH(cv)]))[po];
+ return AvARRAY(PadlistARRAY(CvPADLIST(cv))[CvDEPTH(cv)])[po];
}
/*
@@ -1052,8 +1119,19 @@ the parent pad.
#define CvCOMPILED(cv) CvROOT(cv)
/* the CV does late binding of its lexicals */
-#define CvLATE(cv) (CvANON(cv) || SvTYPE(cv) == SVt_PVFM)
+#define CvLATE(cv) (CvANON(cv) || CvCLONE(cv) || SvTYPE(cv) == SVt_PVFM)
+static void
+S_unavailable(pTHX_ SV *namesv)
+{
+ /* diag_listed_as: Variable "%s" is not available */
+ Perl_ck_warner(aTHX_ packWARN(WARN_CLOSURE),
+ "%se \"%"SVf"\" is not available",
+ *SvPVX_const(namesv) == '&'
+ ? "Subroutin"
+ : "Variabl",
+ namesv);
+}
STATIC PADOFFSET
S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv, U32 seq,
@@ -1063,13 +1141,15 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
I32 offset, new_offset;
SV *new_capture;
SV **new_capturep;
- const AV * const padlist = CvPADLIST(cv);
+ const PADLIST * const padlist = CvPADLIST(cv);
+ const bool staleok = !!(flags & padadd_STALEOK);
PERL_ARGS_ASSERT_PAD_FINDLEX;
- if (flags & ~padadd_UTF8_NAME)
+ if (flags & ~(padadd_UTF8_NAME|padadd_STALEOK))
Perl_croak(aTHX_ "panic: pad_findlex illegal flag bits 0x%" UVxf,
(UV)flags);
+ flags &= ~ padadd_STALEOK; /* one-shot flag */
*out_flags = 0;
@@ -1082,7 +1162,7 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
if (padlist) { /* not an undef CV */
I32 fake_offset = 0;
- const AV * const nameav = MUTABLE_AV(AvARRAY(padlist)[0]);
+ const AV * const nameav = PadlistARRAY(padlist)[0];
SV * const * const name_svp = AvARRAY(nameav);
for (offset = AvFILLp(nameav); offset > 0; offset--) {
@@ -1174,8 +1254,7 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
: *out_flags & PAD_FAKELEX_ANON)
{
if (warn)
- Perl_ck_warner(aTHX_ packWARN(WARN_CLOSURE),
- "Variable \"%"SVf"\" is not available",
+ S_unavailable(aTHX_
newSVpvn_flags(namepv, namelen,
SVs_TEMP |
(flags & padadd_UTF8_NAME ? SVf_UTF8 : 0)));
@@ -1213,17 +1292,17 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
return offset;
}
- *out_capture = AvARRAY(MUTABLE_AV(AvARRAY(padlist)[
- CvDEPTH(cv) ? CvDEPTH(cv) : 1]))[offset];
+ *out_capture = AvARRAY(PadlistARRAY(padlist)[
+ CvDEPTH(cv) ? CvDEPTH(cv) : 1])[offset];
DEBUG_Xv(PerlIO_printf(Perl_debug_log,
"Pad findlex cv=0x%"UVxf" found lex=0x%"UVxf"\n",
PTR2UV(cv), PTR2UV(*out_capture)));
if (SvPADSTALE(*out_capture)
+ && (!CvDEPTH(cv) || !staleok)
&& !SvPAD_STATE(name_svp[offset]))
{
- Perl_ck_warner(aTHX_ packWARN(WARN_CLOSURE),
- "Variable \"%"SVf"\" is not available",
+ S_unavailable(aTHX_
newSVpvn_flags(namepv, namelen,
SVs_TEMP |
(flags & padadd_UTF8_NAME ? SVf_UTF8 : 0)));
@@ -1235,6 +1314,8 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
*out_capture = sv_2mortal(MUTABLE_SV(newAV()));
else if (namelen != 0 && *namepv == '%')
*out_capture = sv_2mortal(MUTABLE_SV(newHV()));
+ else if (namelen != 0 && *namepv == '&')
+ *out_capture = sv_2mortal(newSV_type(SVt_PVCV));
else
*out_capture = sv_newmortal();
}
@@ -1254,7 +1335,9 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
new_capturep = out_capture ? out_capture :
CvLATE(cv) ? NULL : &new_capture;
- offset = pad_findlex(namepv, namelen, flags, CvOUTSIDE(cv), CvOUTSIDE_SEQ(cv), 1,
+ offset = pad_findlex(namepv, namelen,
+ flags | padadd_STALEOK*(new_capturep == &new_capture),
+ CvOUTSIDE(cv), CvOUTSIDE_SEQ(cv), 1,
new_capturep, out_name_sv, out_flags);
if ((PADOFFSET)offset == NOT_IN_PAD)
return NOT_IN_PAD;
@@ -1274,8 +1357,8 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
SV *new_namesv = newSVsv(*out_name_sv);
AV * const ocomppad_name = PL_comppad_name;
PAD * const ocomppad = PL_comppad;
- PL_comppad_name = MUTABLE_AV(AvARRAY(padlist)[0]);
- PL_comppad = MUTABLE_AV(AvARRAY(padlist)[1]);
+ PL_comppad_name = PadlistARRAY(padlist)[0];
+ PL_comppad = PadlistARRAY(padlist)[1];
PL_curpad = AvARRAY(PL_comppad);
new_offset
@@ -1305,6 +1388,8 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
else {
/* immediate creation - capture outer value right now */
av_store(PL_comppad, new_offset, SvREFCNT_inc(*new_capturep));
+ /* But also note the offset, as newMYSUB needs it */
+ PARENT_PAD_INDEX_set(new_namesv, offset);
DEBUG_Xv(PerlIO_printf(Perl_debug_log,
"Pad findlex cv=0x%"UVxf" saved captured sv 0x%"UVxf" at offset %ld\n",
PTR2UV(cv), PTR2UV(*new_capturep), (long)new_offset));
@@ -1375,7 +1460,7 @@ Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv)
/*
=for apidoc m|void|pad_block_start|int full
-Update the pad compilation state variables on entry to a new block
+Update the pad compilation state variables on entry to a new block.
=cut
*/
@@ -1409,7 +1494,9 @@ Perl_pad_block_start(pTHX_ int full)
/*
=for apidoc m|U32|intro_my
-"Introduce" my variables to visible status.
+"Introduce" my variables to visible status. This is called during parsing
+at the end of each statement to make lexical variables visible to
+subsequent statements.
=cut
*/
@@ -1464,11 +1551,12 @@ lexicals in this scope and warn of any lexicals that never got introduced.
=cut
*/
-void
+OP *
Perl_pad_leavemy(pTHX)
{
dVAR;
I32 off;
+ OP *o = NULL;
SV * const * const svp = AvARRAY(PL_comppad_name);
PL_pad_reset_pending = FALSE;
@@ -1485,7 +1573,7 @@ Perl_pad_leavemy(pTHX)
}
/* "Deintroduce" my variables that are leaving with this scope. */
for (off = AvFILLp(PL_comppad_name); off > PL_comppad_name_fill; off--) {
- const SV * const sv = svp[off];
+ SV * const sv = svp[off];
if (sv && sv != &PL_sv_undef && !SvFAKE(sv)
&& COP_SEQ_RANGE_HIGH(sv) == PERL_PADSEQ_INTRO)
{
@@ -1496,6 +1584,12 @@ Perl_pad_leavemy(pTHX)
(unsigned long)COP_SEQ_RANGE_LOW(sv),
(unsigned long)COP_SEQ_RANGE_HIGH(sv))
);
+ if (!PadnameIsSTATE(sv) && !PadnameIsOUR(sv)
+ && *PadnamePV(sv) == '&' && PadnameLEN(sv) > 1) {
+ OP *kid = newOP(OP_INTROCV, 0);
+ kid->op_targ = off;
+ o = op_prepend_elem(OP_LINESEQ, kid, o);
+ }
}
}
PL_cop_seqmax++;
@@ -1503,6 +1597,7 @@ Perl_pad_leavemy(pTHX)
PL_cop_seqmax++;
DEBUG_Xv(PerlIO_printf(Perl_debug_log,
"Pad leavemy: seq = %ld\n", (long)PL_cop_seqmax));
+ return o;
}
/*
@@ -1580,8 +1675,8 @@ S_pad_reset(pTHX)
)
);
- if (!PL_tainting) { /* Can't mix tainted and non-tainted temporaries. */
- register I32 po;
+ if (!TAINTING_get) { /* Can't mix tainted and non-tainted temporaries. */
+ I32 po;
for (po = AvMAX(PL_comppad); po > PL_padix_floor; po--) {
if (PL_curpad[po] && !SvIMMORTAL(PL_curpad[po]))
SvPADTMP_off(PL_curpad[po]);
@@ -1619,13 +1714,21 @@ Perl_pad_tidy(pTHX_ padtidy_type type)
ASSERT_CURPAD_ACTIVE("pad_tidy");
- /* If this CV has had any 'eval-capable' ops planted in it
- * (ie it contains eval '...', //ee, /$var/ or /(?{..})/), Then any
- * anon prototypes in the chain of CVs should be marked as cloneable,
- * so that for example the eval's CV in C<< sub { eval '$x' } >> gets
- * the right CvOUTSIDE.
- * If running with -d, *any* sub may potentially have an eval
- * executed within it.
+ /* If this CV has had any 'eval-capable' ops planted in it:
+ * i.e. it contains any of:
+ *
+ * * eval '...',
+ * * //ee,
+ * * use re 'eval'; /$var/
+ * * /(?{..})/),
+ *
+ * Then any anon prototypes in the chain of CVs should be marked as
+ * cloneable, so that for example the eval's CV in
+ *
+ * sub { eval '$x' }
+ *
+ * gets the right CvOUTSIDE. If running with -d, *any* sub may
+ * potentially have an eval executed within it.
*/
if (PL_cv_has_eval || PL_perldb) {
@@ -1638,6 +1741,7 @@ Perl_pad_tidy(pTHX_ padtidy_type type)
"Pad clone on cv=0x%"UVxf"\n", PTR2UV(cv)));
CvCLONE_on(cv);
}
+ CvHASEVAL_on(cv);
}
}
@@ -1720,6 +1824,7 @@ void
Perl_pad_free(pTHX_ PADOFFSET po)
{
dVAR;
+ SV *sv;
ASSERT_CURPAD_LEGAL("pad_free");
if (!PL_curpad)
return;
@@ -1734,9 +1839,11 @@ Perl_pad_free(pTHX_ PADOFFSET po)
PTR2UV(PL_comppad), PTR2UV(PL_curpad), (long)po)
);
- if (PL_curpad[po] && PL_curpad[po] != &PL_sv_undef) {
- SvFLAGS(PL_curpad[po]) &= ~SVs_PADTMP; /* also clears SVs_PADSTALE */
- }
+
+ sv = PL_curpad[po];
+ if (sv && sv != &PL_sv_undef && !SvPADMY(sv))
+ SvFLAGS(sv) &= ~SVs_PADTMP;
+
if ((I32)po < PL_padix)
PL_padix = po - 1;
}
@@ -1764,8 +1871,8 @@ Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full)
if (!padlist) {
return;
}
- pad_name = MUTABLE_AV(*av_fetch(MUTABLE_AV(padlist), 0, FALSE));
- pad = MUTABLE_AV(*av_fetch(MUTABLE_AV(padlist), 1, FALSE));
+ pad_name = *PadlistARRAY(padlist);
+ pad = PadlistARRAY(padlist)[1];
pname = AvARRAY(pad_name);
ppad = AvARRAY(pad);
Perl_dump_indent(aTHX_ level, file,
@@ -1827,7 +1934,7 @@ S_cv_dump(pTHX_ const CV *cv, const char *title)
{
dVAR;
const CV * const outside = CvOUTSIDE(cv);
- AV* const padlist = CvPADLIST(cv);
+ PADLIST* const padlist = CvPADLIST(cv);
PERL_ARGS_ASSERT_CV_DUMP;
@@ -1866,90 +1973,89 @@ the immediately surrounding code.
=cut
*/
-CV *
-Perl_cv_clone(pTHX_ CV *proto)
+static CV *S_cv_clone(pTHX_ CV *proto, CV *cv, CV *outside);
+
+static void
+S_cv_clone_pad(pTHX_ CV *proto, CV *cv, CV *outside, bool newcv)
{
dVAR;
I32 ix;
- AV* const protopadlist = CvPADLIST(proto);
- const AV *const protopad_name = (const AV *)*av_fetch(protopadlist, 0, FALSE);
- const AV *const protopad = (const AV *)*av_fetch(protopadlist, 1, FALSE);
+ PADLIST* const protopadlist = CvPADLIST(proto);
+ PAD *const protopad_name = *PadlistARRAY(protopadlist);
+ const PAD *const protopad = PadlistARRAY(protopadlist)[1];
SV** const pname = AvARRAY(protopad_name);
SV** const ppad = AvARRAY(protopad);
const I32 fname = AvFILLp(protopad_name);
const I32 fpad = AvFILLp(protopad);
- CV* cv;
SV** outpad;
- CV* outside;
long depth;
-
- PERL_ARGS_ASSERT_CV_CLONE;
+ bool subclones = FALSE;
assert(!CvUNIQUE(proto));
- /* Since cloneable anon subs can be nested, CvOUTSIDE may point
+ /* Anonymous subs have a weak CvOUTSIDE pointer, so its value is not
+ * reliable. The currently-running sub is always the one we need to
+ * close over.
+ * For my subs, the currently-running sub may not be the one we want.
+ * We have to check whether it is a clone of CvOUTSIDE.
+ * Note that in general for formats, CvOUTSIDE != find_runcv.
+ * Since formats may be nested inside closures, CvOUTSIDE may point
* to a prototype; we instead want the cloned parent who called us.
- * Note that in general for formats, CvOUTSIDE != find_runcv; formats
- * inside closures, however, only work if CvOUTSIDE == find_runcv.
*/
- outside = CvOUTSIDE(proto);
- if (outside && CvCLONE(outside) && ! CvCLONED(outside))
+ if (!outside) {
+ if (CvWEAKOUTSIDE(proto))
outside = find_runcv(NULL);
- if (SvTYPE(proto) == SVt_PVFM
- && CvROOT(outside) != CvROOT(CvOUTSIDE(proto)))
+ else {
outside = CvOUTSIDE(proto);
- depth = CvDEPTH(outside);
- assert(depth || SvTYPE(proto) == SVt_PVFM);
+ if ((CvCLONE(outside) && ! CvCLONED(outside))
+ || !CvPADLIST(outside)
+ || PadlistNAMES(CvPADLIST(outside))
+ != protopadlist->xpadl_outid) {
+ outside = find_runcv_where(
+ FIND_RUNCV_padid_eq, PTR2IV(protopadlist->xpadl_outid), NULL
+ );
+ /* outside could be null */
+ }
+ }
+ }
+ depth = outside ? CvDEPTH(outside) : 0;
if (!depth)
depth = 1;
- assert(CvPADLIST(outside) || SvTYPE(proto) == SVt_PVFM);
ENTER;
SAVESPTR(PL_compcv);
+ PL_compcv = cv;
+ if (newcv) SAVEFREESV(cv); /* in case of fatal warnings */
- cv = PL_compcv = MUTABLE_CV(newSV_type(SvTYPE(proto)));
- CvFLAGS(cv) = CvFLAGS(proto) & ~(CVf_CLONE|CVf_WEAKOUTSIDE|CVf_CVGV_RC);
- CvCLONED_on(cv);
-
- CvFILE(cv) = CvDYNFILE(proto) ? savepv(CvFILE(proto))
- : CvFILE(proto);
- CvGV_set(cv,CvGV(proto));
- CvSTASH_set(cv, CvSTASH(proto));
- OP_REFCNT_LOCK;
- CvROOT(cv) = OpREFCNT_inc(CvROOT(proto));
- OP_REFCNT_UNLOCK;
- CvSTART(cv) = CvSTART(proto);
- CvOUTSIDE(cv) = MUTABLE_CV(SvREFCNT_inc_simple(outside));
- CvOUTSIDE_SEQ(cv) = CvOUTSIDE_SEQ(proto);
-
- if (SvPOK(proto))
- sv_setpvn(MUTABLE_SV(cv), SvPVX_const(proto), SvCUR(proto));
+ if (CvHASEVAL(cv))
+ CvOUTSIDE(cv) = MUTABLE_CV(SvREFCNT_inc_simple(outside));
+ SAVESPTR(PL_comppad_name);
+ PL_comppad_name = protopad_name;
CvPADLIST(cv) = pad_new(padnew_CLONE|padnew_SAVE);
av_fill(PL_comppad, fpad);
- for (ix = fname; ix > 0; ix--)
- av_store(PL_comppad_name, ix, SvREFCNT_inc(pname[ix]));
PL_curpad = AvARRAY(PL_comppad);
- outpad = CvPADLIST(outside)
- ? AvARRAY(AvARRAY(CvPADLIST(outside))[depth])
+ outpad = outside && CvPADLIST(outside)
+ ? AvARRAY(PadlistARRAY(CvPADLIST(outside))[depth])
: NULL;
+ if (outpad)
+ CvPADLIST(cv)->xpadl_outid = PadlistNAMES(CvPADLIST(outside));
for (ix = fpad; ix > 0; ix--) {
SV* const namesv = (ix <= fname) ? pname[ix] : NULL;
SV *sv = NULL;
if (namesv && namesv != &PL_sv_undef) { /* lexical */
if (SvFAKE(namesv)) { /* lexical from outside? */
- /* formats may have an inactive, or even undefined, parent,
- while my $x if $false can leave an active var marked as
- stale. And state vars are always available */
+ /* formats may have an inactive, or even undefined, parent;
+ but state vars are always available. */
if (!outpad || !(sv = outpad[PARENT_PAD_INDEX(namesv)])
- || (SvPADSTALE(sv) && !SvPAD_STATE(namesv))) {
- Perl_ck_warner(aTHX_ packWARN(WARN_CLOSURE),
- "Variable \"%"SVf"\" is not available", namesv);
+ || ( SvPADSTALE(sv) && !SvPAD_STATE(namesv)
+ && (!outside || !CvDEPTH(outside))) ) {
+ S_unavailable(aTHX_ namesv);
sv = NULL;
}
else
@@ -1958,7 +2064,33 @@ Perl_cv_clone(pTHX_ CV *proto)
if (!sv) {
const char sigil = SvPVX_const(namesv)[0];
if (sigil == '&')
- sv = SvREFCNT_inc(ppad[ix]);
+ /* If there are state subs, we need to clone them, too.
+ But they may need to close over variables we have
+ not cloned yet. So we will have to do a second
+ pass. Furthermore, there may be state subs clos-
+ ing over other state subs’ entries, so we have
+ to put a stub here and then clone into it on the
+ second pass. */
+ if (SvPAD_STATE(namesv) && !CvCLONED(ppad[ix])) {
+ assert(SvTYPE(ppad[ix]) == SVt_PVCV);
+ subclones = 1;
+ sv = newSV_type(SVt_PVCV);
+ }
+ else if (PadnameLEN(namesv)>1 && !PadnameIsOUR(namesv))
+ {
+ /* my sub */
+ /* Just provide a stub, but name it. It will be
+ upgrade to the real thing on scope entry. */
+ sv = newSV_type(SVt_PVCV);
+ CvNAME_HEK_set(
+ sv,
+ share_hek(SvPVX_const(namesv)+1,
+ SvCUR(namesv) - 1
+ * (SvUTF8(namesv) ? -1 : 1),
+ 0)
+ );
+ }
+ else sv = SvREFCNT_inc(ppad[ix]);
else if (sigil == '@')
sv = MUTABLE_SV(newAV());
else if (sigil == '%')
@@ -1967,7 +2099,7 @@ Perl_cv_clone(pTHX_ CV *proto)
sv = newSV(0);
SvPADMY_on(sv);
/* reset the 'assign only once' flag on each state var */
- if (SvPAD_STATE(namesv))
+ if (sigil != '&' && SvPAD_STATE(namesv))
SvPADSTALE_on(sv);
}
}
@@ -1981,15 +2113,57 @@ Perl_cv_clone(pTHX_ CV *proto)
PL_curpad[ix] = sv;
}
+ if (subclones)
+ for (ix = fpad; ix > 0; ix--) {
+ SV* const namesv = (ix <= fname) ? pname[ix] : NULL;
+ if (namesv && namesv != &PL_sv_undef && !SvFAKE(namesv)
+ && SvPVX_const(namesv)[0] == '&' && SvPAD_STATE(namesv))
+ S_cv_clone(aTHX_ (CV *)ppad[ix], (CV *)PL_curpad[ix], cv);
+ }
+
+ if (newcv) SvREFCNT_inc_simple_void_NN(cv);
+ LEAVE;
+}
+
+static CV *
+S_cv_clone(pTHX_ CV *proto, CV *cv, CV *outside)
+{
+ dVAR;
+ const bool newcv = !cv;
+
+ assert(!CvUNIQUE(proto));
+
+ if (!cv) cv = MUTABLE_CV(newSV_type(SvTYPE(proto)));
+ CvFLAGS(cv) = CvFLAGS(proto) & ~(CVf_CLONE|CVf_WEAKOUTSIDE|CVf_CVGV_RC
+ |CVf_SLABBED);
+ CvCLONED_on(cv);
+
+ CvFILE(cv) = CvDYNFILE(proto) ? savepv(CvFILE(proto))
+ : CvFILE(proto);
+ if (CvNAMED(proto))
+ CvNAME_HEK_set(cv, share_hek_hek(CvNAME_HEK(proto)));
+ else CvGV_set(cv,CvGV(proto));
+ CvSTASH_set(cv, CvSTASH(proto));
+ OP_REFCNT_LOCK;
+ CvROOT(cv) = OpREFCNT_inc(CvROOT(proto));
+ OP_REFCNT_UNLOCK;
+ CvSTART(cv) = CvSTART(proto);
+ CvOUTSIDE_SEQ(cv) = CvOUTSIDE_SEQ(proto);
+
+ if (SvPOK(proto))
+ sv_setpvn(MUTABLE_SV(cv), SvPVX_const(proto), SvCUR(proto));
+ if (SvMAGIC(proto))
+ mg_copy((SV *)proto, (SV *)cv, 0, 0);
+
+ if (CvPADLIST(proto)) S_cv_clone_pad(aTHX_ proto, cv, outside, newcv);
+
DEBUG_Xv(
PerlIO_printf(Perl_debug_log, "\nPad CV clone\n");
- cv_dump(outside, "Outside");
+ if (CvOUTSIDE(cv)) cv_dump(CvOUTSIDE(cv), "Outside");
cv_dump(proto, "Proto");
cv_dump(cv, "To");
);
- LEAVE;
-
if (CvCONST(cv)) {
/* Constant sub () { $x } closing over $x - see lib/constant.pm:
* The prototype was marked as a candiate for const-ization,
@@ -1998,7 +2172,10 @@ Perl_cv_clone(pTHX_ CV *proto)
*/
SV* const const_sv = op_const_sv(CvSTART(cv), cv);
if (const_sv) {
- SvREFCNT_dec(cv);
+ SvREFCNT_dec_NN(cv);
+ /* For this calling case, op_const_sv returns a *copy*, which we
+ donate to newCONSTSUB. Yes, this is ugly, and should be killed.
+ Need to fix how lib/constant.pm works to eliminate this. */
cv = newCONSTSUB(CvSTASH(proto), NULL, const_sv);
}
else {
@@ -2009,6 +2186,24 @@ Perl_cv_clone(pTHX_ CV *proto)
return cv;
}
+CV *
+Perl_cv_clone(pTHX_ CV *proto)
+{
+ PERL_ARGS_ASSERT_CV_CLONE;
+
+ if (!CvPADLIST(proto)) Perl_croak(aTHX_ "panic: no pad in cv_clone");
+ return S_cv_clone(aTHX_ proto, NULL, NULL);
+}
+
+/* Called only by pp_clonecv */
+CV *
+Perl_cv_clone_into(pTHX_ CV *proto, CV *target)
+{
+ PERL_ARGS_ASSERT_CV_CLONE_INTO;
+ cv_undef(target);
+ return S_cv_clone(aTHX_ proto, target, NULL);
+}
+
/*
=for apidoc m|void|pad_fixup_inner_anons|PADLIST *padlist|CV *old_cv|CV *new_cv
@@ -2024,8 +2219,8 @@ Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv)
{
dVAR;
I32 ix;
- AV * const comppad_name = MUTABLE_AV(AvARRAY(padlist)[0]);
- AV * const comppad = MUTABLE_AV(AvARRAY(padlist)[1]);
+ AV * const comppad_name = PadlistARRAY(padlist)[0];
+ AV * const comppad = PadlistARRAY(padlist)[1];
SV ** const namepad = AvARRAY(comppad_name);
SV ** const curpad = AvARRAY(comppad);
@@ -2034,14 +2229,22 @@ Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv)
for (ix = AvFILLp(comppad_name); ix > 0; ix--) {
const SV * const namesv = namepad[ix];
- if (namesv && namesv != &PL_sv_undef
+ if (namesv && namesv != &PL_sv_undef && !SvPAD_STATE(namesv)
&& *SvPVX_const(namesv) == '&')
{
if (SvTYPE(curpad[ix]) == SVt_PVCV) {
- CV * const innercv = MUTABLE_CV(curpad[ix]);
- assert(CvWEAKOUTSIDE(innercv));
- assert(CvOUTSIDE(innercv) == old_cv);
- CvOUTSIDE(innercv) = new_cv;
+ MAGIC * const mg =
+ SvMAGICAL(curpad[ix])
+ ? mg_find(curpad[ix], PERL_MAGIC_proto)
+ : NULL;
+ CV * const innercv = MUTABLE_CV(mg ? mg->mg_obj : curpad[ix]);
+ if (CvOUTSIDE(innercv) == old_cv) {
+ if (!CvWEAKOUTSIDE(innercv)) {
+ SvREFCNT_dec(old_cv);
+ SvREFCNT_inc_simple_void_NN(new_cv);
+ }
+ CvOUTSIDE(innercv) = new_cv;
+ }
}
else { /* format reference */
SV * const rv = curpad[ix];
@@ -2075,8 +2278,8 @@ Perl_pad_push(pTHX_ PADLIST *padlist, int depth)
PERL_ARGS_ASSERT_PAD_PUSH;
- if (depth > AvFILLp(padlist)) {
- SV** const svp = AvARRAY(padlist);
+ if (depth > PadlistMAX(padlist) || !PadlistARRAY(padlist)[depth]) {
+ PAD** const svp = PadlistARRAY(padlist);
AV* const newpad = newAV();
SV** const oldpad = AvARRAY(svp[depth-1]);
I32 ix = AvFILLp((const AV *)svp[1]);
@@ -2120,8 +2323,7 @@ Perl_pad_push(pTHX_ PADLIST *padlist, int depth)
av_store(newpad, 0, MUTABLE_SV(av));
AvREIFY_only(av);
- av_store(padlist, depth, MUTABLE_SV(newpad));
- AvFILLp(padlist) = depth;
+ padlist_store(padlist, depth, newpad);
}
}
@@ -2151,59 +2353,62 @@ Perl_pad_compname_type(pTHX_ const PADOFFSET po)
# define av_dup_inc(s,t) MUTABLE_AV(sv_dup_inc((const SV *)s,t))
/*
-=for apidoc m|AV *|padlist_dup|AV *srcpad|CLONE_PARAMS *param
+=for apidoc padlist_dup
Duplicates a pad.
=cut
*/
-AV *
-Perl_padlist_dup(pTHX_ AV *srcpad, CLONE_PARAMS *param)
+PADLIST *
+Perl_padlist_dup(pTHX_ PADLIST *srcpad, CLONE_PARAMS *param)
{
- AV *dstpad;
+ PADLIST *dstpad;
+ bool cloneall;
+ PADOFFSET max;
+
PERL_ARGS_ASSERT_PADLIST_DUP;
if (!srcpad)
return NULL;
- if (param->flags & CLONEf_COPY_STACKS
- || SvREFCNT(AvARRAY(srcpad)[1]) > 1) {
- dstpad = av_dup_inc(srcpad, param);
- assert (SvREFCNT(AvARRAY(srcpad)[1]) == 1);
+ cloneall = param->flags & CLONEf_COPY_STACKS
+ || SvREFCNT(PadlistARRAY(srcpad)[1]) > 1;
+ assert (SvREFCNT(PadlistARRAY(srcpad)[1]) == 1);
+
+ max = cloneall ? PadlistMAX(srcpad) : 1;
+
+ Newx(dstpad, 1, PADLIST);
+ ptr_table_store(PL_ptr_table, srcpad, dstpad);
+ PadlistMAX(dstpad) = max;
+ Newx(PadlistARRAY(dstpad), max + 1, PAD *);
+
+ if (cloneall) {
+ PADOFFSET depth;
+ for (depth = 0; depth <= max; ++depth)
+ PadlistARRAY(dstpad)[depth] =
+ av_dup_inc(PadlistARRAY(srcpad)[depth], param);
} else {
/* CvDEPTH() on our subroutine will be set to 0, so there's no need
to build anything other than the first level of pads. */
-
- I32 ix = AvFILLp((const AV *)AvARRAY(srcpad)[1]);
+ I32 ix = AvFILLp(PadlistARRAY(srcpad)[1]);
AV *pad1;
- const I32 names_fill = AvFILLp((const AV *)(AvARRAY(srcpad)[0]));
- const AV *const srcpad1 = (const AV *) AvARRAY(srcpad)[1];
+ const I32 names_fill = AvFILLp(PadlistARRAY(srcpad)[0]);
+ const PAD *const srcpad1 = PadlistARRAY(srcpad)[1];
SV **oldpad = AvARRAY(srcpad1);
SV **names;
SV **pad1a;
AV *args;
- /* Look for it in the table first, as the padlist may have ended up
- as an element of @DB::args (or theoretically even @_), so it may
- may have been cloned already. It may also be there because of
- how Perl_sv_compile_2op() "works". :-( */
- dstpad = (AV*)ptr_table_fetch(PL_ptr_table, srcpad);
- if (dstpad)
- return (AV *)SvREFCNT_inc_simple_NN(dstpad);
-
- dstpad = newAV();
- ptr_table_store(PL_ptr_table, srcpad, dstpad);
- av_extend(dstpad, 1);
- AvARRAY(dstpad)[0] = MUTABLE_SV(av_dup_inc(AvARRAY(srcpad)[0], param));
- names = AvARRAY(AvARRAY(dstpad)[0]);
+ PadlistARRAY(dstpad)[0] =
+ av_dup_inc(PadlistARRAY(srcpad)[0], param);
+ names = AvARRAY(PadlistARRAY(dstpad)[0]);
pad1 = newAV();
av_extend(pad1, ix);
- AvARRAY(dstpad)[1] = MUTABLE_SV(pad1);
+ PadlistARRAY(dstpad)[1] = pad1;
pad1a = AvARRAY(pad1);
- AvFILLp(dstpad) = 1;
if (ix > -1) {
AvFILLp(pad1) = ix;
@@ -2271,12 +2476,36 @@ Perl_padlist_dup(pTHX_ AV *srcpad, CLONE_PARAMS *param)
#endif /* USE_ITHREADS */
+PAD **
+Perl_padlist_store(pTHX_ PADLIST *padlist, I32 key, PAD *val)
+{
+ dVAR;
+ PAD **ary;
+ SSize_t const oldmax = PadlistMAX(padlist);
+
+ PERL_ARGS_ASSERT_PADLIST_STORE;
+
+ assert(key >= 0);
+
+ if (key > PadlistMAX(padlist)) {
+ av_extend_guts(NULL,key,&PadlistMAX(padlist),
+ (SV ***)&PadlistARRAY(padlist),
+ (SV ***)&PadlistARRAY(padlist));
+ Zero(PadlistARRAY(padlist)+oldmax+1, PadlistMAX(padlist)-oldmax,
+ PAD *);
+ }
+ ary = PadlistARRAY(padlist);
+ SvREFCNT_dec(ary[key]);
+ ary[key] = val;
+ return &ary[key];
+}
+
/*
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/pad.h b/gnu/usr.bin/perl/pad.h
index aa6521ff9b2..26e183ccd83 100644
--- a/gnu/usr.bin/perl/pad.h
+++ b/gnu/usr.bin/perl/pad.h
@@ -16,13 +16,6 @@
*/
-/* a padlist is currently just an AV; but that might change,
- * so hide the type. Ditto a pad. */
-
-typedef AV PADLIST;
-typedef AV PAD;
-
-
/* offsets within a pad */
#if PTRSIZE == 4
@@ -34,6 +27,14 @@ typedef U64TYPE PADOFFSET;
#endif
#define NOT_IN_PAD ((PADOFFSET) -1)
+
+struct padlist {
+ SSize_t xpadl_max; /* max index for which array has space */
+ PAD ** xpadl_alloc; /* pointer to beginning of array of AVs */
+ PADNAMELIST*xpadl_outid; /* Padnamelist of outer pad; used as ID */
+};
+
+
/* a value that PL_cop_seqmax is guaranteed never to be,
* flagging that a lexical is being introduced, or has not yet left scope
*/
@@ -126,6 +127,8 @@ typedef enum {
#define padadd_OUR 0x01 /* our declaration. */
#define padadd_STATE 0x02 /* state declaration. */
#define padadd_NO_DUP_CHECK 0x04 /* skip warning on dups. */
+#define padadd_STALEOK 0x08 /* allow stale lexical in active
+ * sub, but only one level up */
#define padadd_UTF8_NAME SVf_UTF8 /* name is UTF-8 encoded. */
/* ASSERT_CURPAD_LEGAL and ASSERT_CURPAD_ACTIVE respectively determine
@@ -171,7 +174,66 @@ Clear the pointed to pad value on scope exit. (i.e. the runtime action of 'my')
save PL_comppad and PL_curpad
+=for apidoc Amx|PAD **|PadlistARRAY|PADLIST padlist
+The C array of a padlist, containing the pads. Only subscript it with
+numbers >= 1, as the 0th entry is not guaranteed to remain usable.
+
+=for apidoc Amx|SSize_t|PadlistMAX|PADLIST padlist
+The index of the last pad in the padlist.
+
+=for apidoc Amx|PADNAMELIST *|PadlistNAMES|PADLIST padlist
+The names associated with pad entries.
+
+=for apidoc Amx|PADNAME **|PadlistNAMESARRAY|PADLIST padlist
+The C array of pad names.
+
+=for apidoc Amx|SSize_t|PadlistNAMESMAX|PADLIST padlist
+The index of the last pad name.
+
+=for apidoc Amx|U32|PadlistREFCNT|PADLIST padlist
+The reference count of the padlist. Currently this is always 1.
+
+=for apidoc Amx|PADNAME **|PadnamelistARRAY|PADNAMELIST pnl
+The C array of pad names.
+
+=for apidoc Amx|SSize_t|PadnamelistMAX|PADNAMELIST pnl
+The index of the last pad name.
+
+=for apidoc Amx|SV **|PadARRAY|PAD pad
+The C array of pad entries.
+=for apidoc Amx|SSize_t|PadMAX|PAD pad
+The index of the last pad entry.
+
+=for apidoc Amx|char *|PadnamePV|PADNAME pn
+The name stored in the pad name struct. This returns NULL for a target or
+GV slot.
+
+=for apidoc Amx|STRLEN|PadnameLEN|PADNAME pn
+The length of the name.
+
+=for apidoc Amx|bool|PadnameUTF8|PADNAME pn
+Whether PadnamePV is in UTF8.
+
+=for apidoc Amx|SV *|PadnameSV|PADNAME pn
+Returns the pad name as an SV. This is currently just C<pn>. It will
+begin returning a new mortal SV if pad names ever stop being SVs.
+
+=for apidoc m|bool|PadnameIsOUR|PADNAME pn
+Whether this is an "our" variable.
+
+=for apidoc m|HV *|PadnameOURSTASH
+The stash in which this "our" variable was declared.
+
+=for apidoc m|bool|PadnameOUTER|PADNAME pn
+Whether this entry belongs to an outer pad.
+
+=for apidoc m|bool|PadnameIsSTATE|PADNAME pn
+Whether this is a "state" variable.
+
+=for apidoc m|HV *|PadnameTYPE|PADNAME pn
+The stash associated with a typed lexical. This returns the %Foo:: hash
+for C<my Foo $bar>.
=for apidoc m|SV *|PAD_SETSV |PADOFFSET po|SV* sv
@@ -214,6 +276,30 @@ Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL()
=cut
*/
+#define PadlistARRAY(pl) (pl)->xpadl_alloc
+#define PadlistMAX(pl) (pl)->xpadl_max
+#define PadlistNAMES(pl) (*PadlistARRAY(pl))
+#define PadlistNAMESARRAY(pl) PadnamelistARRAY(PadlistNAMES(pl))
+#define PadlistNAMESMAX(pl) PadnamelistMAX(PadlistNAMES(pl))
+#define PadlistREFCNT(pl) 1 /* reserved for future use */
+
+#define PadnamelistARRAY(pnl) AvARRAY(pnl)
+#define PadnamelistMAX(pnl) AvFILLp(pnl)
+
+#define PadARRAY(pad) AvARRAY(pad)
+#define PadMAX(pad) AvFILLp(pad)
+
+#define PadnamePV(pn) (SvPOKp(pn) ? SvPVX(pn) : NULL)
+#define PadnameLEN(pn) SvCUR(pn)
+#define PadnameUTF8(pn) !!SvUTF8(pn)
+#define PadnameSV(pn) pn
+#define PadnameIsOUR(pn) !!SvPAD_OUR(pn)
+#define PadnameOURSTASH(pn) SvOURSTASH(pn)
+#define PadnameOUTER(pn) !!SvFAKE(pn)
+#define PadnameIsSTATE(pn) !!SvPAD_STATE(pn)
+#define PadnameTYPE(pn) (SvPAD_TYPED(pn) ? SvSTASH(pn) : NULL)
+
+
#ifdef DEBUGGING
# define PAD_SV(po) pad_sv(po)
# define PAD_SETSV(po,sv) pad_setsv(po,sv)
@@ -225,12 +311,13 @@ Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL()
#define PAD_SVl(po) (PL_curpad[po])
#define PAD_BASE_SV(padlist, po) \
- (AvARRAY(padlist)[1]) \
- ? AvARRAY(MUTABLE_AV((AvARRAY(padlist)[1])))[po] : NULL;
+ (PadlistARRAY(padlist)[1]) \
+ ? AvARRAY(MUTABLE_AV((PadlistARRAY(padlist)[1])))[po] \
+ : NULL;
#define PAD_SET_CUR_NOSAVE(padlist,nth) \
- PL_comppad = (PAD*) (AvARRAY(padlist)[nth]); \
+ PL_comppad = (PAD*) (PadlistARRAY(padlist)[nth]); \
PL_curpad = AvARRAY(PL_comppad); \
DEBUG_Xv(PerlIO_printf(Perl_debug_log, \
"Pad 0x%"UVxf"[0x%"UVxf"] set_cur depth=%d\n", \
@@ -307,6 +394,7 @@ ling pad (lvalue) to C<gen>. Note that C<SvUV_set> is hijacked for this purpose
*/
+#define PAD_COMPNAME(po) PAD_COMPNAME_SV(po)
#define PAD_COMPNAME_SV(po) (*av_fetch(PL_comppad_name, (po), FALSE))
#define PAD_COMPNAME_FLAGS(po) SvFLAGS(PAD_COMPNAME_SV(po))
#define PAD_COMPNAME_FLAGS_isOUR(po) SvPAD_OUR(PAD_COMPNAME_SV(po))
@@ -378,8 +466,8 @@ of a string/length pair.
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/parser.h b/gnu/usr.bin/perl/parser.h
index 1e9c71d3ce8..e7b887ec3b4 100644
--- a/gnu/usr.bin/perl/parser.h
+++ b/gnu/usr.bin/perl/parser.h
@@ -21,6 +21,17 @@ typedef struct {
#endif
} yy_stack_frame;
+/* Fields that need to be shared with (i.e., visible to) inner lex-
+ ing scopes. */
+typedef struct yy_lexshared {
+ struct yy_lexshared *ls_prev;
+ SV *ls_linestr; /* mirrors PL_parser->linestr */
+ char *ls_bufptr; /* mirrors PL_parser->bufptr */
+ char *re_eval_start; /* start of "(?{..." text */
+ SV *re_eval_str; /* "(?{...})" text */
+ line_t herelines; /* number of lines in here-doc */
+} LEXSHARED;
+
typedef struct yy_parser {
/* parser state */
@@ -52,32 +63,40 @@ typedef struct yy_parser {
OP *lex_op; /* extra info to pass back on op */
SV *lex_repl; /* runtime replacement from s/// */
U16 lex_inwhat; /* what kind of quoting are we in */
- OPCODE last_lop_op; /* last list operator */
+ OPCODE last_lop_op; /* last named list or unary operator */
I32 lex_starts; /* how many interps done on level */
SV *lex_stuff; /* runtime pattern from m// or s/// */
I32 multi_start; /* 1st line of multi-line string */
I32 multi_end; /* last line of multi-line string */
char multi_open; /* delimiter of said string */
char multi_close; /* delimiter of said string */
- char pending_ident; /* pending identifier lookup */
bool preambled;
+ bool lex_re_reparsing; /* we're doing G_RE_REPARSING */
I32 lex_allbrackets;/* (), [], {}, ?: bracket count */
SUBLEXINFO sublex_info;
+ LEXSHARED *lex_shared;
SV *linestr; /* current chunk of src text */
- char *bufptr;
- char *oldbufptr;
- char *oldoldbufptr;
+ char *bufptr; /* carries the cursor (current parsing
+ position) from one invocation of yylex
+ to the next */
+ char *oldbufptr; /* in yylex, beginning of current token */
+ char *oldoldbufptr; /* in yylex, beginning of previous token */
char *bufend;
char *linestart; /* beginning of most recently read line */
char *last_uni; /* position of last named-unary op */
char *last_lop; /* position of last list operator */
- line_t copline; /* current line number */
+ /* copline is used to pass a specific line number to newSTATEOP. It
+ is a one-time line number, as newSTATEOP invalidates it (sets it to
+ NOLINE) after using it. The purpose of this is to report line num-
+ bers in multiline constructs using the number of the first line. */
+ line_t copline;
U16 in_my; /* we're compiling a "my"/"our" declaration */
U8 lex_state; /* next token is determined */
U8 error_count; /* how many compile errors so far, max 10 */
HV *in_my_stash; /* declared class of this "my" declaration */
PerlIO *rsfp; /* current source file pointer */
AV *rsfp_filters; /* holds chain of active source filters */
+ U8 form_lex_state; /* remember lex_state when parsing fmt */
#ifdef PERL_MAD
SV *endwhite;
@@ -149,8 +168,8 @@ enum {
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/perlapi.h b/gnu/usr.bin/perl/perlapi.h
index 80425c368cf..910f7895406 100644
--- a/gnu/usr.bin/perl/perlapi.h
+++ b/gnu/usr.bin/perl/perlapi.h
@@ -115,6 +115,10 @@ END_EXTERN_C
#define PL_dollarzero_mutex (*Perl_Gdollarzero_mutex_ptr(NULL))
#undef PL_fold_locale
#define PL_fold_locale (*Perl_Gfold_locale_ptr(NULL))
+#undef PL_hash_seed
+#define PL_hash_seed (*Perl_Ghash_seed_ptr(NULL))
+#undef PL_hash_seed_set
+#define PL_hash_seed_set (*Perl_Ghash_seed_set_ptr(NULL))
#undef PL_hints_mutex
#define PL_hints_mutex (*Perl_Ghints_mutex_ptr(NULL))
#undef PL_keyword_plugin
diff --git a/gnu/usr.bin/perl/perldtrace.d b/gnu/usr.bin/perl/perldtrace.d
index 95eb0664dab..0fdb7ea8668 100644
--- a/gnu/usr.bin/perl/perldtrace.d
+++ b/gnu/usr.bin/perl/perldtrace.d
@@ -8,6 +8,11 @@ provider perl {
probe sub__return(const char *, const char *, int, const char *);
probe phase__change(const char *, const char *);
+
+ probe op__entry(const char *);
+
+ probe loading__file(const char *);
+ probe loaded__file(const char *);
};
/*
@@ -16,5 +21,5 @@ provider perl {
* indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/perliol.h b/gnu/usr.bin/perl/perliol.h
index 3bce866f490..c667f1f5ebc 100644
--- a/gnu/usr.bin/perl/perliol.h
+++ b/gnu/usr.bin/perl/perliol.h
@@ -279,8 +279,8 @@ PERL_EXPORT_C IV PerlIOUtf8_pushed(pTHX_ PerlIO *f, const char *mode, SV
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/perlvars.h b/gnu/usr.bin/perl/perlvars.h
index 20c3882fc8d..96dfe04c26a 100644
--- a/gnu/usr.bin/perl/perlvars.h
+++ b/gnu/usr.bin/perl/perlvars.h
@@ -231,3 +231,6 @@ PERLVAR(G, sv_placeholder, SV)
#if defined(MYMALLOC) && defined(USE_ITHREADS)
PERLVAR(G, malloc_mutex, perl_mutex) /* Mutex for malloc */
#endif
+
+PERLVARI(G, hash_seed_set, bool, FALSE) /* perl.c */
+PERLVARA(G, hash_seed, PERL_HASH_SEED_BYTES, unsigned char) /* perl.c and hv.h */
diff --git a/gnu/usr.bin/perl/perly.act b/gnu/usr.bin/perl/perly.act
index 472eab001bc..98b09d71c8f 100644
--- a/gnu/usr.bin/perl/perly.act
+++ b/gnu/usr.bin/perl/perly.act
@@ -5,206 +5,226 @@
*/
case 2:
-#line 142 "perly.y"
+#line 141 "perly.y"
{
PL_parser->expect = XSTATE;
- ;}
+ }
break;
case 3:
-#line 146 "perly.y"
+#line 145 "perly.y"
{
newPROG(block_end((ps[(3) - (4)].val.ival),(ps[(4) - (4)].val.opval)));
(yyval.ival) = 0;
- ;}
+ }
break;
case 4:
-#line 151 "perly.y"
+#line 150 "perly.y"
{
parser->expect = XTERM;
- ;}
+ }
break;
case 5:
-#line 155 "perly.y"
+#line 154 "perly.y"
{
PL_eval_root = (ps[(3) - (3)].val.opval);
(yyval.ival) = 0;
- ;}
+ }
break;
case 6:
-#line 160 "perly.y"
+#line 159 "perly.y"
{
parser->expect = XBLOCK;
- ;}
+ }
break;
case 7:
-#line 164 "perly.y"
+#line 163 "perly.y"
{
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[(3) - (3)].val.opval);
(yyval.ival) = 0;
yyunlex();
parser->yychar = YYEOF;
- ;}
+ }
break;
case 8:
-#line 172 "perly.y"
+#line 171 "perly.y"
{
parser->expect = XSTATE;
- ;}
+ }
break;
case 9:
-#line 176 "perly.y"
+#line 175 "perly.y"
{
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[(3) - (3)].val.opval);
(yyval.ival) = 0;
yyunlex();
parser->yychar = YYEOF;
- ;}
+ }
break;
case 10:
-#line 184 "perly.y"
+#line 183 "perly.y"
{
parser->expect = XSTATE;
- ;}
+ }
break;
case 11:
-#line 188 "perly.y"
+#line 187 "perly.y"
{
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[(3) - (3)].val.opval);
(yyval.ival) = 0;
yyunlex();
parser->yychar = YYEOF;
- ;}
+ }
break;
case 12:
-#line 196 "perly.y"
+#line 195 "perly.y"
{
parser->expect = XSTATE;
- ;}
+ }
break;
case 13:
-#line 200 "perly.y"
+#line 199 "perly.y"
{
PL_eval_root = (ps[(3) - (3)].val.opval);
(yyval.ival) = 0;
- ;}
+ }
break;
case 14:
-#line 208 "perly.y"
+#line 207 "perly.y"
{ if (PL_parser->copline > (line_t)IVAL((ps[(1) - (4)].val.i_tkval)))
PL_parser->copline = (line_t)IVAL((ps[(1) - (4)].val.i_tkval));
(yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
- ;}
+ }
break;
case 15:
#line 217 "perly.y"
- { (yyval.ival) = block_start(TRUE); ;}
+ { if (PL_parser->copline > (line_t)IVAL((ps[(1) - (7)].val.i_tkval)))
+ PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
+ (yyval.opval) = block_end((ps[(2) - (7)].val.ival), (ps[(5) - (7)].val.opval));
+ TOKEN_GETMAD((ps[(1) - (7)].val.i_tkval),(yyval.opval),'{');
+ TOKEN_GETMAD((ps[(7) - (7)].val.i_tkval),(yyval.opval),'}');
+ }
break;
case 16:
-#line 221 "perly.y"
- { (yyval.ival) = (I32) Perl_allocmy(aTHX_ STR_WITH_LEN("$_"), 0); ;}
+#line 226 "perly.y"
+ { (yyval.ival) = block_start(TRUE); }
break;
case 17:
-#line 225 "perly.y"
+#line 230 "perly.y"
{ if (PL_parser->copline > (line_t)IVAL((ps[(1) - (4)].val.i_tkval)))
PL_parser->copline = (line_t)IVAL((ps[(1) - (4)].val.i_tkval));
(yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
- ;}
+ }
break;
case 18:
-#line 234 "perly.y"
- { (yyval.ival) = block_start(FALSE); ;}
+#line 239 "perly.y"
+ { (yyval.ival) = block_start(FALSE); }
break;
case 19:
-#line 239 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+#line 244 "perly.y"
+ { (yyval.opval) = (OP*)NULL; }
break;
case 20:
-#line 241 "perly.y"
+#line 246 "perly.y"
{ (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));
PL_pad_reset_pending = TRUE;
if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
PL_hints |= HINT_BLOCK_SCOPE;
- ;}
+ }
break;
case 21:
-#line 250 "perly.y"
+#line 255 "perly.y"
+ { (yyval.opval) = (OP*)NULL; }
+ break;
+
+ case 22:
+#line 257 "perly.y"
+ { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));
+ PL_pad_reset_pending = TRUE;
+ if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
+ PL_hints |= HINT_BLOCK_SCOPE;
+ }
+ break;
+
+ case 23:
+#line 266 "perly.y"
{
if((ps[(1) - (1)].val.opval)) {
(yyval.opval) = newSTATEOP(0, NULL, (ps[(1) - (1)].val.opval));
} else {
(yyval.opval) = IF_MAD(newOP(OP_NULL, 0), NULL);
}
- ;}
+ }
break;
- case 22:
-#line 258 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 24:
+#line 274 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 23:
-#line 262 "perly.y"
+ case 25:
+#line 278 "perly.y"
{
- (yyval.opval) = newSTATEOP(SvUTF8(((SVOP*)(ps[(1) - (2)].val.p_tkval))->op_sv),
- savepv(SvPVX(((SVOP*)(ps[(1) - (2)].val.p_tkval))->op_sv)), (ps[(2) - (2)].val.opval));
+ (yyval.opval) = newSTATEOP(SVf_UTF8
+ * PVAL((ps[(1) - (2)].val.p_tkval))[strlen(PVAL((ps[(1) - (2)].val.p_tkval)))+1],
+ PVAL((ps[(1) - (2)].val.p_tkval)), (ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.p_tkval),
(ps[(2) - (2)].val.opval) ? cLISTOPx((yyval.opval))->op_first : (yyval.opval), 'L');
- ;}
+ }
break;
- case 24:
-#line 269 "perly.y"
+ case 26:
+#line 286 "perly.y"
{
- (yyval.opval) = newSTATEOP(SvUTF8(((SVOP*)(ps[(1) - (2)].val.p_tkval))->op_sv),
- savepv(SvPVX(((SVOP*)(ps[(1) - (2)].val.p_tkval))->op_sv)), (ps[(2) - (2)].val.opval));
+ (yyval.opval) = newSTATEOP(SVf_UTF8
+ * PVAL((ps[(1) - (2)].val.p_tkval))[strlen(PVAL((ps[(1) - (2)].val.p_tkval)))+1],
+ PVAL((ps[(1) - (2)].val.p_tkval)), (ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.p_tkval), cLISTOPx((yyval.opval))->op_first, 'L');
- ;}
+ }
break;
- case 25:
-#line 278 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 27:
+#line 296 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 26:
-#line 280 "perly.y"
+ case 28:
+#line 298 "perly.y"
{
(yyval.opval) = newOP(OP_NULL,0);
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'p');
- ;}
+ }
break;
- case 27:
-#line 285 "perly.y"
+ case 29:
+#line 303 "perly.y"
{
CV *fmtcv = PL_compcv;
- SvREFCNT_inc_simple_void(PL_compcv);
#ifdef MAD
(yyval.opval) = newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
prepend_madprops((ps[(1) - (4)].val.i_tkval)->tk_mad, (yyval.opval), 'F');
@@ -214,54 +234,71 @@ case 2:
newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
(yyval.opval) = (OP*)NULL;
#endif
- if (CvOUTSIDE(fmtcv) && !CvUNIQUE(CvOUTSIDE(fmtcv))) {
+ if (CvOUTSIDE(fmtcv) && !CvEVAL(CvOUTSIDE(fmtcv))) {
SvREFCNT_inc_simple_void(fmtcv);
pad_add_anon(fmtcv, OP_NULL);
}
- ;}
+ }
break;
- case 28:
-#line 303 "perly.y"
+ case 30:
+#line 320 "perly.y"
+ {
+ if ((ps[(2) - (3)].val.opval)->op_type == OP_CONST) {
+ const char *const name =
+ SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))->op_sv);
+ if (strEQ(name, "BEGIN") || strEQ(name, "END")
+ || strEQ(name, "INIT") || strEQ(name, "CHECK")
+ || strEQ(name, "UNITCHECK"))
+ CvSPECIAL_on(PL_compcv);
+ }
+ else
+ /* State subs inside anonymous subs need to be
+ clonable themselves. */
+ if (CvANON(CvOUTSIDE(PL_compcv))
+ || CvCLONE(CvOUTSIDE(PL_compcv))
+ || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(
+ CvOUTSIDE(PL_compcv)
+ ))[(ps[(2) - (3)].val.opval)->op_targ]))
+ CvCLONE_on(PL_compcv);
+ PL_parser->in_my = 0;
+ PL_parser->in_my_stash = NULL;
+ }
+ break;
+
+ case 31:
+#line 342 "perly.y"
{
SvREFCNT_inc_simple_void(PL_compcv);
#ifdef MAD
{
OP* o = newSVOP(OP_ANONCODE, 0,
- (SV*)newATTRSUB((ps[(2) - (6)].val.ival), (ps[(3) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) - (6)].val.opval)));
+ (SV*)(
+#endif
+ (ps[(2) - (7)].val.opval)->op_type == OP_CONST
+ ? newATTRSUB((ps[(3) - (7)].val.ival), (ps[(2) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval))
+ : newMYSUB((ps[(3) - (7)].val.ival), (ps[(2) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval))
+#ifdef MAD
+ ));
(yyval.opval) = newOP(OP_NULL,0);
op_getmad(o,(yyval.opval),'&');
- op_getmad((ps[(3) - (6)].val.opval),(yyval.opval),'n');
- op_getmad((ps[(4) - (6)].val.opval),(yyval.opval),'s');
- op_getmad((ps[(5) - (6)].val.opval),(yyval.opval),'a');
- token_getmad((ps[(1) - (6)].val.i_tkval),(yyval.opval),'d');
- append_madprops((ps[(6) - (6)].val.opval)->op_madprop, (yyval.opval), 0);
- (ps[(6) - (6)].val.opval)->op_madprop = 0;
+ op_getmad((ps[(2) - (7)].val.opval),(yyval.opval),'n');
+ op_getmad((ps[(5) - (7)].val.opval),(yyval.opval),'s');
+ op_getmad((ps[(6) - (7)].val.opval),(yyval.opval),'a');
+ token_getmad((ps[(1) - (7)].val.i_tkval),(yyval.opval),'d');
+ append_madprops((ps[(7) - (7)].val.opval)->op_madprop, (yyval.opval), 0);
+ (ps[(7) - (7)].val.opval)->op_madprop = 0;
}
#else
- newATTRSUB((ps[(2) - (6)].val.ival), (ps[(3) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) - (6)].val.opval));
+ ;
(yyval.opval) = (OP*)NULL;
#endif
- ;}
+ intro_my();
+ }
break;
- case 29:
-#line 324 "perly.y"
- {
- /* Unimplemented "my sub foo { }" */
- SvREFCNT_inc_simple_void(PL_compcv);
-#ifdef MAD
- (yyval.opval) = newMYSUB((ps[(2) - (6)].val.ival), (ps[(3) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) - (6)].val.opval));
- token_getmad((ps[(1) - (6)].val.i_tkval),(yyval.opval),'d');
-#else
- newMYSUB((ps[(2) - (6)].val.ival), (ps[(3) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) - (6)].val.opval));
- (yyval.opval) = (OP*)NULL;
-#endif
- ;}
- break;
-
- case 30:
-#line 336 "perly.y"
+ case 32:
+#line 370 "perly.y"
{
#ifdef MAD
(yyval.opval) = package((ps[(3) - (4)].val.opval));
@@ -275,16 +312,16 @@ case 2:
package_version((ps[(2) - (4)].val.opval));
(yyval.opval) = (OP*)NULL;
#endif
- ;}
+ }
break;
- case 31:
-#line 351 "perly.y"
- { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
+ case 33:
+#line 385 "perly.y"
+ { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
break;
- case 32:
-#line 353 "perly.y"
+ case 34:
+#line 387 "perly.y"
{
SvREFCNT_inc_simple_void(PL_compcv);
#ifdef MAD
@@ -298,11 +335,11 @@ case 2:
utilize(IVAL((ps[(1) - (7)].val.i_tkval)), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval));
(yyval.opval) = (OP*)NULL;
#endif
- ;}
+ }
break;
- case 33:
-#line 368 "perly.y"
+ case 35:
+#line 402 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
@@ -310,11 +347,11 @@ case 2:
TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
- ;}
+ }
break;
- case 34:
-#line 377 "perly.y"
+ case 36:
+#line 411 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
@@ -322,30 +359,35 @@ case 2:
TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
- ;}
+ }
break;
- case 35:
-#line 386 "perly.y"
+ case 37:
+#line 420 "perly.y"
{
- (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
- newGIVENOP((ps[(5) - (7)].val.opval), op_scope((ps[(7) - (7)].val.opval)), (PADOFFSET)(ps[(4) - (7)].val.ival)));
- PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
- ;}
+ const PADOFFSET offset = pad_findmy_pvs("$_", 0);
+ (yyval.opval) = block_end((ps[(3) - (6)].val.ival),
+ newGIVENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)),
+ offset == NOT_IN_PAD
+ || PAD_COMPNAME_FLAGS_isOUR(offset)
+ ? 0
+ : offset));
+ PL_parser->copline = (line_t)IVAL((ps[(1) - (6)].val.i_tkval));
+ }
break;
- case 36:
-#line 392 "perly.y"
- { (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); ;}
+ case 38:
+#line 431 "perly.y"
+ { (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); }
break;
- case 37:
-#line 394 "perly.y"
- { (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); ;}
+ case 39:
+#line 433 "perly.y"
+ { (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); }
break;
- case 38:
-#line 396 "perly.y"
+ case 40:
+#line 435 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (8)].val.ival),
newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -354,11 +396,11 @@ case 2:
TOKEN_GETMAD((ps[(2) - (8)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(5) - (8)].val.i_tkval),(yyval.opval),')');
PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
- ;}
+ }
break;
- case 39:
-#line 406 "perly.y"
+ case 41:
+#line 445 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (8)].val.ival),
newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -367,11 +409,11 @@ case 2:
TOKEN_GETMAD((ps[(2) - (8)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(5) - (8)].val.i_tkval),(yyval.opval),')');
PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
- ;}
+ }
break;
- case 40:
-#line 417 "perly.y"
+ case 42:
+#line 456 "perly.y"
{
OP *initop = IF_MAD((ps[(4) - (11)].val.opval) ? (ps[(4) - (11)].val.opval) : newOP(OP_NULL, 0), (ps[(4) - (11)].val.opval));
OP *forop = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -390,11 +432,11 @@ case 2:
TOKEN_GETMAD((ps[(7) - (11)].val.i_tkval),(yyval.opval),'2');
TOKEN_GETMAD((ps[(10) - (11)].val.i_tkval),(yyval.opval),')');
PL_parser->copline = (line_t)IVAL((ps[(1) - (11)].val.i_tkval));
- ;}
+ }
break;
- case 41:
-#line 437 "perly.y"
+ case 43:
+#line 476 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (9)].val.ival), newFOROP(0, (ps[(4) - (9)].val.opval), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));
TOKEN_GETMAD((ps[(1) - (9)].val.i_tkval),(yyval.opval),'W');
@@ -402,11 +444,11 @@ case 2:
TOKEN_GETMAD((ps[(5) - (9)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(7) - (9)].val.i_tkval),(yyval.opval),')');
PL_parser->copline = (line_t)IVAL((ps[(1) - (9)].val.i_tkval));
- ;}
+ }
break;
- case 42:
-#line 446 "perly.y"
+ case 44:
+#line 485 "perly.y"
{
(yyval.opval) = block_end((ps[(4) - (8)].val.ival), newFOROP(0,
op_lvalue((ps[(2) - (8)].val.opval), OP_ENTERLOOP), (ps[(5) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval)));
@@ -414,11 +456,11 @@ case 2:
TOKEN_GETMAD((ps[(3) - (8)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(6) - (8)].val.i_tkval),(yyval.opval),')');
PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
- ;}
+ }
break;
- case 43:
-#line 455 "perly.y"
+ case 45:
+#line 494 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
newFOROP(0, (OP*)NULL, (ps[(4) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval)));
@@ -426,136 +468,161 @@ case 2:
TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
- ;}
+ }
break;
- case 44:
-#line 464 "perly.y"
+ case 46:
+#line 503 "perly.y"
{
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
(OP*)NULL, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval), 0);
- ;}
+ }
break;
- case 45:
-#line 470 "perly.y"
+ case 47:
+#line 509 "perly.y"
{
- int save_3_latefree = (ps[(3) - (5)].val.opval)->op_latefree;
- (ps[(3) - (5)].val.opval)->op_latefree = 1;
package((ps[(3) - (5)].val.opval));
- (ps[(3) - (5)].val.opval)->op_latefree = save_3_latefree;
if ((ps[(2) - (5)].val.opval)) {
- int save_2_latefree = (ps[(2) - (5)].val.opval)->op_latefree;
- (ps[(2) - (5)].val.opval)->op_latefree = 1;
package_version((ps[(2) - (5)].val.opval));
- (ps[(2) - (5)].val.opval)->op_latefree = save_2_latefree;
}
- ;}
+ }
break;
- case 46:
-#line 483 "perly.y"
+ case 48:
+#line 516 "perly.y"
{
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
(OP*)NULL, block_end((ps[(5) - (8)].val.ival), (ps[(7) - (8)].val.opval)), (OP*)NULL, 0);
- op_free((ps[(3) - (8)].val.opval));
- if ((ps[(2) - (8)].val.opval))
- op_free((ps[(2) - (8)].val.opval));
TOKEN_GETMAD((ps[(4) - (8)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(8) - (8)].val.i_tkval),(yyval.opval),'}');
if (PL_parser->copline > (line_t)IVAL((ps[(4) - (8)].val.i_tkval)))
PL_parser->copline = (line_t)IVAL((ps[(4) - (8)].val.i_tkval));
- ;}
+ }
break;
- case 47:
-#line 496 "perly.y"
+ case 49:
+#line 526 "perly.y"
{
PL_parser->expect = XSTATE;
(yyval.opval) = (ps[(1) - (2)].val.opval);
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),';');
- ;}
+ }
break;
- case 48:
-#line 502 "perly.y"
+ case 50:
+#line 532 "perly.y"
{
PL_parser->expect = XSTATE;
(yyval.opval) = IF_MAD(newOP(OP_NULL, 0), (OP*)NULL);
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),';');
PL_parser->copline = NOLINE;
- ;}
+ }
break;
- case 49:
-#line 512 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ case 51:
+#line 542 "perly.y"
+ { OP *list;
+ if ((ps[(2) - (2)].val.opval)) {
+ OP *term = (ps[(2) - (2)].val.opval);
+ DO_MAD(term = newUNOP(OP_NULL, 0, term));
+ list = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), term);
+ }
+ else {
+#ifdef MAD
+ OP *op = newNULLLIST();
+ list = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), op);
+#else
+ list = (ps[(1) - (2)].val.opval);
+#endif
+ }
+ if (PL_parser->copline == NOLINE)
+ PL_parser->copline = CopLINE(PL_curcop)-1;
+ else PL_parser->copline--;
+ (yyval.opval) = newSTATEOP(0, NULL,
+ convert(OP_FORMLINE, 0, list));
+ }
break;
- case 50:
-#line 514 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 52:
+#line 565 "perly.y"
+ { (yyval.opval) = NULL; }
break;
- case 51:
-#line 516 "perly.y"
+ case 53:
+#line 567 "perly.y"
+ { (yyval.opval) = op_unscope((ps[(2) - (3)].val.opval)); }
+ break;
+
+ case 54:
+#line 572 "perly.y"
+ { (yyval.opval) = (OP*)NULL; }
+ break;
+
+ case 55:
+#line 574 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+ break;
+
+ case 56:
+#line 576 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i');
- ;}
+ }
break;
- case 52:
-#line 520 "perly.y"
+ case 57:
+#line 580 "perly.y"
{ (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i');
- ;}
+ }
break;
- case 53:
-#line 524 "perly.y"
+ case 58:
+#line 584 "perly.y"
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
- ;}
+ }
break;
- case 54:
-#line 528 "perly.y"
+ case 59:
+#line 588 "perly.y"
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
- ;}
+ }
break;
- case 55:
-#line 532 "perly.y"
+ case 60:
+#line 592 "perly.y"
{ (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval), (OP*)NULL);
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
PL_parser->copline = (line_t)IVAL((ps[(2) - (3)].val.i_tkval));
- ;}
+ }
break;
- case 56:
-#line 537 "perly.y"
- { (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); ;}
+ case 61:
+#line 597 "perly.y"
+ { (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); }
break;
- case 57:
-#line 542 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ case 62:
+#line 602 "perly.y"
+ { (yyval.opval) = (OP*)NULL; }
break;
- case 58:
-#line 544 "perly.y"
+ case 63:
+#line 604 "perly.y"
{
((ps[(2) - (2)].val.opval))->op_flags |= OPf_PARENS;
(yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 59:
-#line 550 "perly.y"
+ case 64:
+#line 610 "perly.y"
{ PL_parser->copline = (line_t)IVAL((ps[(1) - (6)].val.i_tkval));
(yyval.opval) = newCONDOP(0,
newSTATEOP(OPf_SPECIAL,NULL,(ps[(3) - (6)].val.opval)),
@@ -564,182 +631,172 @@ case 2:
TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'I');
TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 60:
-#line 563 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ case 65:
+#line 623 "perly.y"
+ { (yyval.opval) = (OP*)NULL; }
break;
- case 61:
-#line 565 "perly.y"
+ case 66:
+#line 625 "perly.y"
{
(yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 62:
-#line 573 "perly.y"
+ case 67:
+#line 633 "perly.y"
{ (yyval.ival) = (PL_min_intro_pending &&
PL_max_intro_pending >= PL_min_intro_pending);
- intro_my(); ;}
+ intro_my(); }
break;
- case 63:
-#line 579 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ case 68:
+#line 639 "perly.y"
+ { (yyval.opval) = (OP*)NULL; }
break;
- case 65:
-#line 585 "perly.y"
+ case 70:
+#line 645 "perly.y"
{ YYSTYPE tmplval;
(void)scan_num("1", &tmplval);
- (yyval.opval) = tmplval.opval; ;}
+ (yyval.opval) = tmplval.opval; }
break;
- case 67:
-#line 593 "perly.y"
- { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); ;}
+ case 72:
+#line 653 "perly.y"
+ { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); }
break;
- case 68:
-#line 598 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
+ case 73:
+#line 658 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
break;
- case 69:
-#line 602 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
+ case 74:
+#line 662 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
break;
- case 70:
-#line 606 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
+ case 75:
+#line 666 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
break;
- case 71:
-#line 609 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 76:
+#line 669 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 72:
-#line 610 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ case 77:
+#line 670 "perly.y"
+ { (yyval.opval) = (OP*)NULL; }
break;
- case 73:
-#line 614 "perly.y"
+ case 78:
+#line 674 "perly.y"
{ (yyval.ival) = start_subparse(FALSE, 0);
- SAVEFREESV(PL_compcv); ;}
+ SAVEFREESV(PL_compcv); }
break;
- case 74:
-#line 620 "perly.y"
+ case 79:
+#line 680 "perly.y"
{ (yyval.ival) = start_subparse(FALSE, CVf_ANON);
- SAVEFREESV(PL_compcv); ;}
+ SAVEFREESV(PL_compcv); }
break;
- case 75:
-#line 625 "perly.y"
+ case 80:
+#line 685 "perly.y"
{ (yyval.ival) = start_subparse(TRUE, 0);
- SAVEFREESV(PL_compcv); ;}
- break;
-
- case 76:
-#line 630 "perly.y"
- { const char *const name = SvPV_nolen_const(((SVOP*)(ps[(1) - (1)].val.opval))->op_sv);
- if (strEQ(name, "BEGIN") || strEQ(name, "END")
- || strEQ(name, "INIT") || strEQ(name, "CHECK")
- || strEQ(name, "UNITCHECK"))
- CvSPECIAL_on(PL_compcv);
- (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ SAVEFREESV(PL_compcv); }
break;
- case 77:
-#line 640 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ case 83:
+#line 696 "perly.y"
+ { (yyval.opval) = (OP*)NULL; }
break;
- case 79:
-#line 646 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ case 85:
+#line 702 "perly.y"
+ { (yyval.opval) = (OP*)NULL; }
break;
- case 80:
-#line 648 "perly.y"
+ case 86:
+#line 704 "perly.y"
{ (yyval.opval) = (ps[(2) - (2)].val.opval);
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
- ;}
+ }
break;
- case 81:
-#line 652 "perly.y"
+ case 87:
+#line 708 "perly.y"
{ (yyval.opval) = IF_MAD(
newOP(OP_NULL, 0),
(OP*)NULL
);
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),':');
- ;}
+ }
break;
- case 82:
-#line 662 "perly.y"
+ case 88:
+#line 718 "perly.y"
{ (yyval.opval) = (ps[(2) - (2)].val.opval);
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
- ;}
+ }
break;
- case 83:
-#line 666 "perly.y"
+ case 89:
+#line 722 "perly.y"
{ (yyval.opval) = IF_MAD(
newOP(OP_NULL, 0),
(OP*)NULL
);
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),':');
- ;}
+ }
break;
- case 84:
-#line 675 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 90:
+#line 731 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 85:
-#line 676 "perly.y"
+ case 91:
+#line 732 "perly.y"
{ (yyval.opval) = IF_MAD(
newOP(OP_NULL,0),
(OP*)NULL
);
PL_parser->expect = XSTATE;
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),';');
- ;}
+ }
break;
- case 86:
-#line 687 "perly.y"
+ case 92:
+#line 743 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 87:
-#line 691 "perly.y"
+ case 93:
+#line 747 "perly.y"
{ (yyval.opval) = newLOGOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 88:
-#line 695 "perly.y"
+ case 94:
+#line 751 "perly.y"
{ (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 90:
-#line 703 "perly.y"
+ case 96:
+#line 759 "perly.y"
{
#ifdef MAD
OP* op = newNULLLIST();
@@ -748,11 +805,11 @@ case 2:
#else
(yyval.opval) = (ps[(1) - (2)].val.opval);
#endif
- ;}
+ }
break;
- case 91:
-#line 713 "perly.y"
+ case 97:
+#line 769 "perly.y"
{
OP* term = (ps[(3) - (3)].val.opval);
DO_MAD(
@@ -760,29 +817,29 @@ case 2:
token_getmad((ps[(2) - (3)].val.i_tkval),term,',');
)
(yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (3)].val.opval), term);
- ;}
+ }
break;
- case 93:
-#line 726 "perly.y"
+ case 99:
+#line 782 "perly.y"
{ (yyval.opval) = convert(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_STACKED,
op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (3)].val.i_tkval)),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 94:
-#line 731 "perly.y"
+ case 100:
+#line 787 "perly.y"
{ (yyval.opval) = convert(IVAL((ps[(1) - (5)].val.i_tkval)), OPf_STACKED,
op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (5)].val.i_tkval)),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 95:
-#line 738 "perly.y"
+ case 101:
+#line 794 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),
@@ -790,119 +847,119 @@ case 2:
TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'A');
TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 96:
-#line 747 "perly.y"
+ case 102:
+#line 803 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
newUNOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'A');
- ;}
+ }
break;
- case 97:
-#line 753 "perly.y"
+ case 103:
+#line 809 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
newUNOP(OP_METHOD, 0, (ps[(1) - (3)].val.opval))));
- ;}
+ }
break;
- case 98:
-#line 759 "perly.y"
+ case 104:
+#line 815 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
newUNOP(OP_METHOD, 0, (ps[(1) - (5)].val.opval))));
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 99:
-#line 767 "perly.y"
+ case 105:
+#line 823 "perly.y"
{ (yyval.opval) = convert(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 100:
-#line 771 "perly.y"
+ case 106:
+#line 827 "perly.y"
{ (yyval.opval) = convert(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 101:
-#line 777 "perly.y"
+ case 107:
+#line 833 "perly.y"
{ SvREFCNT_inc_simple_void(PL_compcv);
- (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); ;}
+ (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); }
break;
- case 102:
-#line 780 "perly.y"
+ case 108:
+#line 836 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
- ;}
+ }
break;
- case 105:
-#line 795 "perly.y"
+ case 111:
+#line 851 "perly.y"
{ (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval)));
PL_parser->expect = XOPERATOR;
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
- ;}
+ }
break;
- case 106:
-#line 802 "perly.y"
+ case 112:
+#line 858 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
- ;}
+ }
break;
- case 107:
-#line 807 "perly.y"
+ case 113:
+#line 863 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
scalar((ps[(4) - (5)].val.opval)));
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
- ;}
+ }
break;
- case 108:
-#line 815 "perly.y"
+ case 114:
+#line 871 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
scalar((ps[(3) - (4)].val.opval)));
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
- ;}
+ }
break;
- case 109:
-#line 822 "perly.y"
+ case 115:
+#line 878 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));
PL_parser->expect = XOPERATOR;
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
- ;}
+ }
break;
- case 110:
-#line 829 "perly.y"
+ case 116:
+#line 885 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
jmaybe((ps[(4) - (6)].val.opval)));
@@ -911,11 +968,11 @@ case 2:
TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(5) - (6)].val.i_tkval),(yyval.opval),';');
TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),'}');
- ;}
+ }
break;
- case 111:
-#line 839 "perly.y"
+ case 117:
+#line 895 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
jmaybe((ps[(3) - (5)].val.opval)));
@@ -923,144 +980,144 @@ case 2:
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
- ;}
+ }
break;
- case 112:
-#line 848 "perly.y"
+ case 118:
+#line 904 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((ps[(1) - (4)].val.opval))));
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'a');
TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 113:
-#line 855 "perly.y"
+ case 119:
+#line 911 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(4) - (5)].val.opval),
newCVREF(0, scalar((ps[(1) - (5)].val.opval)))));
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 114:
-#line 864 "perly.y"
+ case 120:
+#line 920 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval),
newCVREF(0, scalar((ps[(1) - (4)].val.opval)))));
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 115:
-#line 871 "perly.y"
+ case 121:
+#line 927 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((ps[(1) - (3)].val.opval))));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 116:
-#line 877 "perly.y"
+ case 122:
+#line 933 "perly.y"
{ (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval));
TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),')');
TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),']');
- ;}
+ }
break;
- case 117:
-#line 884 "perly.y"
+ case 123:
+#line 940 "perly.y"
{ (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval));
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
- ;}
+ }
break;
- case 118:
-#line 889 "perly.y"
+ case 124:
+#line 945 "perly.y"
{ (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL);
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),')');
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
- ;}
+ }
break;
- case 119:
-#line 899 "perly.y"
+ case 125:
+#line 955 "perly.y"
{ (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 120:
-#line 903 "perly.y"
+ case 126:
+#line 959 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 121:
-#line 907 "perly.y"
+ case 127:
+#line 963 "perly.y"
{ if (IVAL((ps[(2) - (3)].val.i_tkval)) != OP_REPEAT)
scalar((ps[(1) - (3)].val.opval));
(yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 122:
-#line 913 "perly.y"
+ case 128:
+#line 969 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 123:
-#line 917 "perly.y"
+ case 129:
+#line 973 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 124:
-#line 921 "perly.y"
+ case 130:
+#line 977 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 125:
-#line 925 "perly.y"
+ case 131:
+#line 981 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 126:
-#line 929 "perly.y"
+ case 132:
+#line 985 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 127:
-#line 933 "perly.y"
+ case 133:
+#line 989 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 128:
-#line 937 "perly.y"
+ case 134:
+#line 993 "perly.y"
{
(yyval.opval) = newRANGE(IVAL((ps[(2) - (3)].val.i_tkval)), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
DO_MAD({
@@ -1070,164 +1127,164 @@ case 2:
op = (UNOP*)op->op_first; /* get to flip */
op = (UNOP*)op->op_first; /* get to range */
token_getmad((ps[(2) - (3)].val.i_tkval),(OP*)op,'o');
- })
- ;}
+ });
+ }
break;
- case 129:
-#line 949 "perly.y"
+ case 135:
+#line 1005 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 130:
-#line 953 "perly.y"
+ case 136:
+#line 1009 "perly.y"
{ (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 131:
-#line 957 "perly.y"
+ case 137:
+#line 1013 "perly.y"
{ (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 132:
-#line 961 "perly.y"
+ case 138:
+#line 1017 "perly.y"
{ (yyval.opval) = bind_match(IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),
((yyval.opval)->op_type == OP_NOT
? ((UNOP*)(yyval.opval))->op_first : (yyval.opval)),
'~');
- ;}
+ }
break;
- case 133:
-#line 971 "perly.y"
+ case 139:
+#line 1027 "perly.y"
{ (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 134:
-#line 975 "perly.y"
+ case 140:
+#line 1031 "perly.y"
{ (yyval.opval) = IF_MAD(
newUNOP(OP_NULL, 0, (ps[(2) - (2)].val.opval)),
(ps[(2) - (2)].val.opval)
);
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'+');
- ;}
+ }
break;
- case 135:
-#line 982 "perly.y"
+ case 141:
+#line 1038 "perly.y"
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 136:
-#line 986 "perly.y"
+ case 142:
+#line 1042 "perly.y"
{ (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 137:
-#line 990 "perly.y"
+ case 143:
+#line 1046 "perly.y"
{ (yyval.opval) = newUNOP(OP_POSTINC, 0,
op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC));
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 138:
-#line 995 "perly.y"
+ case 144:
+#line 1051 "perly.y"
{ (yyval.opval) = newUNOP(OP_POSTDEC, 0,
op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 139:
-#line 1000 "perly.y"
+ case 145:
+#line 1056 "perly.y"
{ (yyval.opval) = newUNOP(OP_PREINC, 0,
op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 140:
-#line 1005 "perly.y"
+ case 146:
+#line 1061 "perly.y"
{ (yyval.opval) = newUNOP(OP_PREDEC, 0,
op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 141:
-#line 1014 "perly.y"
+ case 147:
+#line 1070 "perly.y"
{ (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval));
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),']');
- ;}
+ }
break;
- case 142:
-#line 1019 "perly.y"
+ case 148:
+#line 1075 "perly.y"
{ (yyval.opval) = newANONLIST((OP*)NULL);
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),']');
- ;}
+ }
break;
- case 143:
-#line 1024 "perly.y"
+ case 149:
+#line 1080 "perly.y"
{ (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval));
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),';');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
- ;}
+ }
break;
- case 144:
-#line 1030 "perly.y"
+ case 150:
+#line 1086 "perly.y"
{ (yyval.opval) = newANONHASH((OP*)NULL);
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),';');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'}');
- ;}
+ }
break;
- case 145:
-#line 1036 "perly.y"
+ case 151:
+#line 1092 "perly.y"
{ SvREFCNT_inc_simple_void(PL_compcv);
(yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval));
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
OP_GETMAD((ps[(3) - (5)].val.opval),(yyval.opval),'s');
OP_GETMAD((ps[(4) - (5)].val.opval),(yyval.opval),'a');
- ;}
+ }
break;
- case 146:
-#line 1047 "perly.y"
+ case 152:
+#line 1103 "perly.y"
{ (yyval.opval) = dofile((ps[(2) - (2)].val.opval), IVAL((ps[(1) - (2)].val.i_tkval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 147:
-#line 1051 "perly.y"
+ case 153:
+#line 1107 "perly.y"
{ (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'D');
- ;}
+ }
break;
- case 148:
-#line 1055 "perly.y"
+ case 154:
+#line 1111 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
op_prepend_elem(OP_LIST,
@@ -1238,11 +1295,11 @@ case 2:
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 149:
-#line 1067 "perly.y"
+ case 155:
+#line 1123 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
op_append_elem(OP_LIST,
@@ -1254,22 +1311,22 @@ case 2:
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 150:
-#line 1080 "perly.y"
+ case 156:
+#line 1136 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
op_prepend_elem(OP_LIST,
scalar(newCVREF(0,scalar((ps[(2) - (4)].val.opval)))), (OP*)NULL)); dep();
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 151:
-#line 1088 "perly.y"
+ case 157:
+#line 1144 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
op_prepend_elem(OP_LIST,
(ps[(4) - (5)].val.opval),
@@ -1277,89 +1334,89 @@ case 2:
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 156:
-#line 1104 "perly.y"
+ case 162:
+#line 1160 "perly.y"
{ (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval));
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'?');
TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),':');
- ;}
+ }
break;
- case 157:
-#line 1109 "perly.y"
+ case 163:
+#line 1165 "perly.y"
{ (yyval.opval) = newUNOP(OP_REFGEN, 0, op_lvalue((ps[(2) - (2)].val.opval),OP_REFGEN));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 158:
-#line 1113 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 164:
+#line 1169 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 159:
-#line 1115 "perly.y"
+ case 165:
+#line 1171 "perly.y"
{ (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'k');
- ;}
+ }
break;
- case 160:
-#line 1119 "perly.y"
+ case 166:
+#line 1175 "perly.y"
{ (yyval.opval) = sawparens(IF_MAD(newUNOP(OP_NULL,0,(ps[(2) - (3)].val.opval)), (ps[(2) - (3)].val.opval)));
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 161:
-#line 1124 "perly.y"
- { (yyval.opval) = IF_MAD(newUNOP(OP_NULL,0,(ps[(1) - (1)].val.opval)), (ps[(1) - (1)].val.opval)); ;}
+ case 167:
+#line 1180 "perly.y"
+ { (yyval.opval) = IF_MAD(newUNOP(OP_NULL,0,(ps[(1) - (1)].val.opval)), (ps[(1) - (1)].val.opval)); }
break;
- case 162:
-#line 1126 "perly.y"
+ case 168:
+#line 1182 "perly.y"
{ (yyval.opval) = sawparens(newNULLLIST());
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 163:
-#line 1131 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 169:
+#line 1187 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 164:
-#line 1133 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 170:
+#line 1189 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 165:
-#line 1135 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 171:
+#line 1191 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 166:
-#line 1137 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 172:
+#line 1193 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 167:
-#line 1139 "perly.y"
- { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;}
+ case 173:
+#line 1195 "perly.y"
+ { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));}
break;
- case 168:
-#line 1141 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 174:
+#line 1197 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 169:
-#line 1143 "perly.y"
+ case 175:
+#line 1199 "perly.y"
{ (yyval.opval) = op_prepend_elem(OP_ASLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_ASLICE, 0,
@@ -1367,11 +1424,11 @@ case 2:
ref((ps[(1) - (4)].val.opval), OP_ASLICE)));
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
- ;}
+ }
break;
- case 170:
-#line 1152 "perly.y"
+ case 176:
+#line 1208 "perly.y"
{ (yyval.opval) = op_prepend_elem(OP_HSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_HSLICE, 0,
@@ -1381,29 +1438,29 @@ case 2:
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
- ;}
+ }
break;
- case 171:
-#line 1163 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 177:
+#line 1219 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 172:
-#line 1165 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;}
+ case 178:
+#line 1221 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); }
break;
- case 173:
-#line 1167 "perly.y"
+ case 179:
+#line 1223 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 174:
-#line 1172 "perly.y"
+ case 180:
+#line 1228 "perly.y"
{
(yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
@@ -1414,123 +1471,123 @@ case 2:
}
token_getmad((ps[(2) - (4)].val.i_tkval),op,'(');
token_getmad((ps[(4) - (4)].val.i_tkval),op,')');
- })
- ;}
+ });
+ }
break;
- case 175:
-#line 1185 "perly.y"
+ case 181:
+#line 1241 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 176:
-#line 1190 "perly.y"
+ case 182:
+#line 1246 "perly.y"
{ (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), OPf_SPECIAL);
PL_hints |= HINT_BLOCK_SCOPE;
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 177:
-#line 1195 "perly.y"
+ case 183:
+#line 1251 "perly.y"
{ (yyval.opval) = newLOOPEX(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 178:
-#line 1199 "perly.y"
+ case 184:
+#line 1255 "perly.y"
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 179:
-#line 1203 "perly.y"
+ case 185:
+#line 1259 "perly.y"
{ (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 180:
-#line 1207 "perly.y"
+ case 186:
+#line 1263 "perly.y"
{ (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 181:
-#line 1211 "perly.y"
+ case 187:
+#line 1267 "perly.y"
{ (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 182:
-#line 1215 "perly.y"
+ case 188:
+#line 1271 "perly.y"
{ (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.i_tkval) ? OPf_SPECIAL : 0);
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 183:
-#line 1219 "perly.y"
+ case 189:
+#line 1275 "perly.y"
{ (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.i_tkval) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 184:
-#line 1223 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;}
+ case 190:
+#line 1279 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); }
break;
- case 185:
-#line 1225 "perly.y"
+ case 191:
+#line 1281 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
- op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); ;}
+ op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); }
break;
- case 186:
-#line 1228 "perly.y"
+ case 192:
+#line 1284 "perly.y"
{ (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
- ;}
+ }
break;
- case 187:
-#line 1232 "perly.y"
+ case 193:
+#line 1288 "perly.y"
{ (yyval.opval) = newOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0);
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 188:
-#line 1238 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 194:
+#line 1294 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 189:
-#line 1240 "perly.y"
+ case 195:
+#line 1296 "perly.y"
{ (yyval.opval) = (ps[(1) - (3)].val.opval);
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 190:
-#line 1245 "perly.y"
+ case 196:
+#line 1301 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
- scalar((ps[(1) - (1)].val.opval))); ;}
+ scalar((ps[(1) - (1)].val.opval))); }
break;
- case 191:
-#line 1248 "perly.y"
+ case 197:
+#line 1304 "perly.y"
{ (yyval.opval) = (IVAL((ps[(1) - (3)].val.i_tkval)) == OP_NOT)
? newUNOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0)))
: newOP(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_SPECIAL);
@@ -1538,193 +1595,189 @@ case 2:
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 192:
-#line 1257 "perly.y"
+ case 198:
+#line 1313 "perly.y"
{ (yyval.opval) = newUNOP(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 193:
-#line 1263 "perly.y"
- { (yyval.opval) = pmruntime((ps[(1) - (4)].val.opval), (ps[(3) - (4)].val.opval), 1);
- TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
- TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
- ;}
+ case 199:
+#line 1319 "perly.y"
+ {
+ if ( (ps[(1) - (1)].val.opval)->op_type != OP_TRANS
+ && (ps[(1) - (1)].val.opval)->op_type != OP_TRANSR
+ && (((PMOP*)(ps[(1) - (1)].val.opval))->op_pmflags & PMf_HAS_CV))
+ {
+ (yyval.ival) = start_subparse(FALSE, CVf_ANON);
+ SAVEFREESV(PL_compcv);
+ } else
+ (yyval.ival) = 0;
+ }
break;
- case 196:
-#line 1270 "perly.y"
+ case 200:
+#line 1330 "perly.y"
+ { (yyval.opval) = pmruntime((ps[(1) - (5)].val.opval), (ps[(4) - (5)].val.opval), 1, (ps[(2) - (5)].val.ival));
+ TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
+ TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
+ }
+ break;
+
+ case 203:
+#line 1337 "perly.y"
{
(yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'X');
- ;}
+ }
break;
- case 198:
-#line 1280 "perly.y"
+ case 205:
+#line 1347 "perly.y"
{ (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval));
DO_MAD(
token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d');
append_madprops((ps[(3) - (3)].val.opval)->op_madprop, (yyval.opval), 'a');
(ps[(3) - (3)].val.opval)->op_madprop = 0;
- )
- ;}
+ );
+ }
break;
- case 199:
-#line 1288 "perly.y"
+ case 206:
+#line 1355 "perly.y"
{ (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d');
- ;}
+ }
break;
- case 200:
-#line 1295 "perly.y"
+ case 207:
+#line 1362 "perly.y"
{ (yyval.opval) = sawparens((ps[(2) - (3)].val.opval));
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 201:
-#line 1300 "perly.y"
+ case 208:
+#line 1367 "perly.y"
{ (yyval.opval) = sawparens(newNULLLIST());
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
- ;}
+ }
break;
- case 202:
-#line 1305 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
- break;
-
- case 203:
-#line 1307 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
- break;
-
- case 204:
-#line 1309 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
- break;
-
- case 205:
-#line 1314 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ case 209:
+#line 1372 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 206:
-#line 1316 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 210:
+#line 1374 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 207:
-#line 1320 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ case 211:
+#line 1376 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 208:
-#line 1322 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 212:
+#line 1381 "perly.y"
+ { (yyval.opval) = (OP*)NULL; }
break;
- case 209:
-#line 1326 "perly.y"
- { (yyval.i_tkval) = (ps[(1) - (1)].val.i_tkval); ;}
+ case 213:
+#line 1383 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 210:
-#line 1328 "perly.y"
- { munge_qwlist_to_paren_list((ps[(1) - (1)].val.opval)); ;}
+ case 214:
+#line 1387 "perly.y"
+ { (yyval.opval) = (OP*)NULL; }
break;
- case 211:
-#line 1330 "perly.y"
- { (yyval.i_tkval) = (ps[(3) - (3)].val.i_tkval); ;}
+ case 215:
+#line 1389 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
- case 212:
-#line 1336 "perly.y"
- { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;}
+ case 216:
+#line 1395 "perly.y"
+ { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); }
break;
- case 213:
-#line 1340 "perly.y"
+ case 217:
+#line 1399 "perly.y"
{ (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&');
- ;}
+ }
break;
- case 214:
-#line 1346 "perly.y"
+ case 218:
+#line 1405 "perly.y"
{ (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$');
- ;}
+ }
break;
- case 215:
-#line 1352 "perly.y"
+ case 219:
+#line 1411 "perly.y"
{ (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@');
- ;}
+ }
break;
- case 216:
-#line 1358 "perly.y"
+ case 220:
+#line 1417 "perly.y"
{ (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%');
- ;}
+ }
break;
- case 217:
-#line 1364 "perly.y"
+ case 221:
+#line 1423 "perly.y"
{ (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l');
- ;}
+ }
break;
- case 218:
-#line 1370 "perly.y"
+ case 222:
+#line 1429 "perly.y"
{ (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*');
- ;}
+ }
break;
- case 219:
-#line 1377 "perly.y"
- { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
+ case 223:
+#line 1436 "perly.y"
+ { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
break;
- case 220:
-#line 1379 "perly.y"
- { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
+ case 224:
+#line 1438 "perly.y"
+ { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
break;
- case 221:
-#line 1381 "perly.y"
- { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); ;}
+ case 225:
+#line 1440 "perly.y"
+ { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); }
break;
- case 222:
-#line 1384 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ case 226:
+#line 1443 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
-
-/* Line 1267 of yacc.c. */
-
default: break;
/* Generated from:
- * 047d7d5048e78a17bc586b7bb9a0f0e9dedd5cd43b30e486482b1ff8f955ddcb perly.y
- * 53f57d7143a42b3c008841a14d158bcf9cab64b2904b07ef5e95051fe9a8a875 regen_perly.pl
+ * 28c2c7738eefc00762e227af0363c729186c992e9127e0c935684cccbf3a3b4f perly.y
+ * 5c9d2a0262457fe9b70073fc8ad6c188f812f38ad57712b7e2f53daa01b297cc regen_perly.pl
* ex: set ro: */
diff --git a/gnu/usr.bin/perl/perly.tab b/gnu/usr.bin/perl/perly.tab
index d1e1f7b71b6..5172cc2c051 100644
--- a/gnu/usr.bin/perl/perly.tab
+++ b/gnu/usr.bin/perl/perly.tab
@@ -6,20 +6,20 @@
#define YYFINAL 14
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2772
+#define YYLAST 2910
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 101
+#define YYNTOKENS 104
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 63
+#define YYNNTS 66
/* YYNRULES -- Number of rules. */
-#define YYNRULES 222
+#define YYNRULES 226
/* YYNRULES -- Number of states. */
-#define YYNSTATES 449
+#define YYNSTATES 455
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 336
+#define YYMAXUTOK 337
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -30,16 +30,16 @@ static const yytype_uint8 yytranslate[] =
0, 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, 88, 2, 2, 15, 17, 19, 2,
- 99, 98, 18, 14, 77, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 80, 20,
- 2, 2, 2, 79, 16, 2, 2, 2, 2, 2,
+ 2, 2, 2, 91, 2, 2, 15, 17, 19, 2,
+ 102, 101, 18, 14, 80, 13, 22, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 83, 20,
+ 2, 21, 2, 82, 16, 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, 11, 2, 12, 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, 9, 2, 10, 89, 2, 2, 2,
+ 2, 2, 2, 9, 2, 10, 92, 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,
@@ -53,14 +53,14 @@ static const yytype_uint8 yytranslate[] =
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, 1, 2, 3, 4,
- 5, 6, 7, 8, 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,
- 78, 81, 82, 83, 84, 85, 86, 87, 90, 91,
- 92, 93, 94, 95, 96, 97, 100
+ 5, 6, 7, 8, 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, 81, 84, 85, 86, 87, 88, 89, 90, 93,
+ 94, 95, 96, 97, 98, 99, 100, 103
};
#if YYDEBUG
@@ -69,170 +69,172 @@ static const yytype_uint8 yytranslate[] =
static const yytype_uint16 yyprhs[] =
{
0, 0, 3, 4, 9, 10, 14, 15, 19, 20,
- 24, 25, 29, 30, 34, 39, 40, 41, 46, 47,
- 48, 51, 53, 55, 58, 61, 63, 65, 70, 77,
- 84, 89, 90, 98, 106, 114, 122, 129, 132, 141,
- 150, 162, 172, 181, 189, 192, 193, 202, 205, 207,
- 209, 211, 215, 219, 223, 227, 231, 235, 236, 239,
- 246, 247, 250, 251, 252, 254, 255, 257, 259, 261,
- 263, 265, 267, 268, 269, 270, 271, 273, 274, 276,
- 277, 280, 282, 285, 287, 289, 291, 295, 299, 303,
- 305, 308, 312, 314, 318, 324, 331, 335, 339, 345,
- 348, 353, 354, 360, 362, 364, 370, 375, 381, 386,
- 392, 399, 405, 410, 416, 421, 425, 432, 437, 443,
- 447, 451, 455, 459, 463, 467, 471, 475, 479, 483,
- 487, 491, 495, 499, 502, 505, 508, 511, 514, 517,
- 520, 523, 527, 530, 535, 539, 545, 548, 551, 556,
- 562, 567, 573, 575, 577, 579, 581, 587, 590, 592,
- 595, 599, 601, 604, 606, 608, 610, 612, 614, 616,
- 621, 627, 629, 631, 635, 640, 644, 646, 649, 652,
- 654, 657, 660, 662, 665, 667, 670, 672, 676, 678,
- 682, 684, 688, 693, 698, 700, 702, 704, 706, 710,
- 713, 717, 720, 722, 724, 726, 727, 729, 730, 732,
- 734, 735, 739, 741, 744, 747, 750, 753, 756, 759,
- 761, 763, 765
+ 24, 25, 29, 30, 34, 39, 47, 48, 53, 54,
+ 55, 58, 59, 62, 64, 66, 69, 72, 74, 76,
+ 81, 82, 90, 95, 96, 104, 112, 120, 127, 134,
+ 137, 146, 155, 167, 177, 186, 194, 197, 198, 207,
+ 210, 212, 215, 216, 220, 222, 224, 228, 232, 236,
+ 240, 244, 248, 249, 252, 259, 260, 263, 264, 265,
+ 267, 268, 270, 272, 274, 276, 278, 280, 281, 282,
+ 283, 284, 286, 288, 289, 291, 292, 295, 297, 300,
+ 302, 304, 306, 310, 314, 318, 320, 323, 327, 329,
+ 333, 339, 346, 350, 354, 360, 363, 368, 369, 375,
+ 377, 379, 385, 390, 396, 401, 407, 414, 420, 425,
+ 431, 436, 440, 447, 452, 458, 462, 466, 470, 474,
+ 478, 482, 486, 490, 494, 498, 502, 506, 510, 514,
+ 517, 520, 523, 526, 529, 532, 535, 538, 542, 545,
+ 550, 554, 560, 563, 566, 571, 577, 582, 588, 590,
+ 592, 594, 596, 602, 605, 607, 610, 614, 616, 619,
+ 621, 623, 625, 627, 629, 631, 636, 642, 644, 646,
+ 650, 655, 659, 661, 664, 667, 669, 672, 675, 677,
+ 680, 682, 685, 687, 691, 693, 697, 699, 703, 708,
+ 709, 715, 717, 719, 721, 723, 727, 730, 734, 737,
+ 739, 741, 743, 744, 746, 747, 749, 751, 754, 757,
+ 760, 763, 766, 769, 771, 773, 775
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int16 yyrhs[] =
{
- 102, 0, -1, -1, 3, 103, 110, 114, -1, -1,
- 4, 104, 153, -1, -1, 5, 105, 109, -1, -1,
- 6, 106, 117, -1, -1, 7, 107, 115, -1, -1,
- 8, 108, 114, -1, 9, 110, 114, 10, -1, -1,
- -1, 9, 113, 114, 10, -1, -1, -1, 114, 115,
- -1, 117, -1, 116, -1, 34, 117, -1, 34, 116,
- -1, 33, -1, 100, -1, 35, 133, 130, 109, -1,
- 36, 131, 134, 135, 136, 138, -1, 69, 131, 134,
- 135, 136, 138, -1, 38, 21, 21, 20, -1, -1,
- 39, 131, 118, 21, 21, 152, 20, -1, 42, 154,
- 110, 127, 98, 112, 121, -1, 43, 154, 110, 129,
- 98, 112, 121, -1, 48, 154, 110, 111, 127, 98,
- 112, -1, 49, 154, 110, 127, 98, 112, -1, 50,
- 109, -1, 40, 154, 110, 125, 98, 123, 112, 122,
- -1, 41, 154, 110, 126, 98, 123, 112, 122, -1,
- 47, 154, 110, 128, 20, 125, 20, 123, 128, 98,
- 112, -1, 47, 68, 110, 156, 154, 127, 98, 112,
- 122, -1, 47, 158, 154, 110, 127, 98, 112, 122,
- -1, 47, 154, 110, 127, 98, 112, 122, -1, 109,
- 122, -1, -1, 38, 21, 21, 9, 110, 119, 114,
- 10, -1, 120, 20, -1, 20, -1, 1, -1, 139,
- -1, 139, 42, 139, -1, 139, 43, 139, -1, 139,
- 40, 139, -1, 139, 41, 126, -1, 139, 47, 139,
- -1, 139, 49, 139, -1, -1, 44, 112, -1, 45,
- 154, 127, 98, 112, 121, -1, -1, 46, 109, -1,
- -1, -1, 120, -1, -1, 139, -1, 139, -1, 139,
- -1, 124, -1, 126, -1, 21, -1, -1, -1, -1,
- -1, 21, -1, -1, 24, -1, -1, 71, 24, -1,
- 71, -1, 71, 24, -1, 71, -1, 109, -1, 20,
- -1, 139, 75, 139, -1, 139, 74, 139, -1, 139,
- 73, 139, -1, 140, -1, 140, 77, -1, 140, 77,
- 149, -1, 149, -1, 58, 163, 140, -1, 56, 99,
- 163, 139, 98, -1, 149, 97, 143, 154, 153, 98,
- -1, 149, 97, 143, -1, 22, 163, 152, -1, 23,
- 163, 99, 153, 98, -1, 58, 152, -1, 56, 99,
- 153, 98, -1, -1, 31, 132, 109, 142, 152, -1,
- 22, -1, 158, -1, 162, 9, 139, 20, 10, -1,
- 158, 11, 139, 12, -1, 149, 97, 11, 139, 12,
- -1, 144, 11, 139, 12, -1, 158, 9, 139, 20,
- 10, -1, 149, 97, 9, 139, 20, 10, -1, 144,
- 9, 139, 20, 10, -1, 149, 97, 99, 98, -1,
- 149, 97, 99, 139, 98, -1, 144, 154, 139, 98,
- -1, 144, 154, 98, -1, 99, 139, 98, 11, 139,
- 12, -1, 27, 11, 139, 12, -1, 99, 98, 11,
- 139, 12, -1, 149, 78, 149, -1, 149, 92, 149,
- -1, 149, 61, 149, -1, 149, 62, 149, -1, 149,
- 86, 149, -1, 149, 59, 149, -1, 149, 60, 149,
- -1, 149, 85, 149, -1, 149, 84, 149, -1, 149,
- 52, 149, -1, 149, 83, 149, -1, 149, 82, 149,
- -1, 149, 81, 149, -1, 149, 87, 149, -1, 13,
- 149, -1, 14, 149, -1, 88, 149, -1, 89, 149,
- -1, 149, 94, -1, 149, 93, -1, 96, 149, -1,
- 95, 149, -1, 11, 139, 12, -1, 11, 12, -1,
- 65, 139, 20, 10, -1, 65, 20, 10, -1, 37,
- 132, 135, 136, 109, -1, 64, 149, -1, 64, 109,
- -1, 64, 21, 154, 98, -1, 64, 21, 154, 139,
- 98, -1, 64, 158, 154, 98, -1, 64, 158, 154,
- 139, 98, -1, 145, -1, 146, -1, 147, -1, 148,
- -1, 149, 79, 149, 80, 149, -1, 90, 149, -1,
- 150, -1, 67, 149, -1, 99, 139, 98, -1, 27,
- -1, 99, 98, -1, 158, -1, 162, -1, 160, -1,
- 159, -1, 161, -1, 144, -1, 159, 11, 139, 12,
- -1, 159, 9, 139, 20, 10, -1, 24, -1, 157,
- -1, 157, 154, 98, -1, 157, 154, 139, 98, -1,
- 66, 21, 152, -1, 51, -1, 51, 149, -1, 76,
- 140, -1, 57, -1, 57, 109, -1, 57, 149, -1,
- 70, -1, 70, 149, -1, 30, -1, 30, 149, -1,
- 54, -1, 54, 99, 98, -1, 28, -1, 28, 99,
- 98, -1, 29, -1, 55, 99, 98, -1, 55, 99,
- 139, 98, -1, 25, 99, 140, 98, -1, 21, -1,
- 141, -1, 53, -1, 32, -1, 68, 151, 137, -1,
- 68, 151, -1, 99, 139, 98, -1, 99, 98, -1,
- 158, -1, 160, -1, 159, -1, -1, 140, -1, -1,
- 139, -1, 99, -1, -1, 27, 155, 99, -1, 158,
- -1, 19, 163, -1, 15, 163, -1, 16, 163, -1,
- 17, 163, -1, 63, 163, -1, 18, 163, -1, 21,
- -1, 158, -1, 109, -1, 26, -1
+ 105, 0, -1, -1, 3, 106, 114, 117, -1, -1,
+ 4, 107, 161, -1, -1, 5, 108, 112, -1, -1,
+ 6, 109, 121, -1, -1, 7, 110, 119, -1, -1,
+ 8, 111, 117, -1, 9, 114, 117, 10, -1, 21,
+ 114, 20, 74, 118, 20, 22, -1, -1, 9, 116,
+ 117, 10, -1, -1, -1, 117, 119, -1, -1, 118,
+ 125, -1, 121, -1, 120, -1, 36, 121, -1, 36,
+ 120, -1, 35, -1, 103, -1, 37, 140, 137, 113,
+ -1, -1, 38, 141, 138, 122, 142, 143, 145, -1,
+ 40, 23, 23, 20, -1, -1, 41, 138, 123, 23,
+ 23, 160, 20, -1, 44, 102, 114, 134, 101, 115,
+ 128, -1, 45, 102, 114, 136, 101, 115, 128, -1,
+ 50, 102, 114, 134, 101, 115, -1, 51, 102, 114,
+ 134, 101, 115, -1, 52, 112, -1, 42, 102, 114,
+ 132, 101, 130, 115, 129, -1, 43, 102, 114, 133,
+ 101, 130, 115, 129, -1, 49, 102, 114, 135, 20,
+ 132, 20, 130, 135, 101, 115, -1, 49, 70, 114,
+ 162, 102, 134, 101, 115, 129, -1, 49, 164, 102,
+ 114, 134, 101, 115, 129, -1, 49, 102, 114, 134,
+ 101, 115, 129, -1, 112, 129, -1, -1, 40, 23,
+ 23, 9, 114, 124, 117, 10, -1, 127, 20, -1,
+ 20, -1, 26, 126, -1, -1, 73, 117, 74, -1,
+ 1, -1, 146, -1, 146, 44, 146, -1, 146, 45,
+ 146, -1, 146, 42, 146, -1, 146, 43, 133, -1,
+ 146, 49, 146, -1, 146, 51, 146, -1, -1, 46,
+ 115, -1, 47, 102, 134, 101, 115, 128, -1, -1,
+ 48, 112, -1, -1, -1, 127, -1, -1, 146, -1,
+ 146, -1, 146, -1, 131, -1, 133, -1, 23, -1,
+ -1, -1, -1, -1, 23, -1, 28, -1, -1, 26,
+ -1, -1, 72, 26, -1, 72, -1, 72, 26, -1,
+ 72, -1, 112, -1, 20, -1, 146, 78, 146, -1,
+ 146, 77, 146, -1, 146, 76, 146, -1, 147, -1,
+ 147, 80, -1, 147, 80, 156, -1, 156, -1, 60,
+ 169, 147, -1, 58, 102, 169, 146, 101, -1, 156,
+ 100, 150, 102, 161, 101, -1, 156, 100, 150, -1,
+ 24, 169, 160, -1, 25, 169, 102, 161, 101, -1,
+ 60, 160, -1, 58, 102, 161, 101, -1, -1, 33,
+ 139, 112, 149, 160, -1, 24, -1, 164, -1, 168,
+ 9, 146, 20, 10, -1, 164, 11, 146, 12, -1,
+ 156, 100, 11, 146, 12, -1, 151, 11, 146, 12,
+ -1, 164, 9, 146, 20, 10, -1, 156, 100, 9,
+ 146, 20, 10, -1, 151, 9, 146, 20, 10, -1,
+ 156, 100, 102, 101, -1, 156, 100, 102, 146, 101,
+ -1, 151, 102, 146, 101, -1, 151, 102, 101, -1,
+ 102, 146, 101, 11, 146, 12, -1, 29, 11, 146,
+ 12, -1, 102, 101, 11, 146, 12, -1, 156, 81,
+ 156, -1, 156, 95, 156, -1, 156, 63, 156, -1,
+ 156, 64, 156, -1, 156, 89, 156, -1, 156, 61,
+ 156, -1, 156, 62, 156, -1, 156, 88, 156, -1,
+ 156, 87, 156, -1, 156, 54, 156, -1, 156, 86,
+ 156, -1, 156, 85, 156, -1, 156, 84, 156, -1,
+ 156, 90, 156, -1, 13, 156, -1, 14, 156, -1,
+ 91, 156, -1, 92, 156, -1, 156, 97, -1, 156,
+ 96, -1, 99, 156, -1, 98, 156, -1, 11, 146,
+ 12, -1, 11, 12, -1, 67, 146, 20, 10, -1,
+ 67, 20, 10, -1, 39, 139, 142, 143, 112, -1,
+ 66, 156, -1, 66, 112, -1, 66, 141, 102, 101,
+ -1, 66, 141, 102, 146, 101, -1, 66, 164, 102,
+ 101, -1, 66, 164, 102, 146, 101, -1, 152, -1,
+ 153, -1, 154, -1, 155, -1, 156, 82, 156, 83,
+ 156, -1, 93, 156, -1, 158, -1, 69, 156, -1,
+ 102, 146, 101, -1, 29, -1, 102, 101, -1, 164,
+ -1, 168, -1, 166, -1, 165, -1, 167, -1, 151,
+ -1, 165, 11, 146, 12, -1, 165, 9, 146, 20,
+ 10, -1, 26, -1, 163, -1, 163, 102, 101, -1,
+ 163, 102, 146, 101, -1, 68, 141, 160, -1, 53,
+ -1, 53, 156, -1, 79, 147, -1, 59, -1, 59,
+ 112, -1, 59, 156, -1, 71, -1, 71, 156, -1,
+ 32, -1, 32, 156, -1, 56, -1, 56, 102, 101,
+ -1, 30, -1, 30, 102, 101, -1, 31, -1, 57,
+ 102, 101, -1, 57, 102, 146, 101, -1, -1, 27,
+ 157, 102, 147, 101, -1, 23, -1, 148, -1, 55,
+ -1, 34, -1, 70, 159, 144, -1, 70, 159, -1,
+ 102, 146, 101, -1, 102, 101, -1, 164, -1, 166,
+ -1, 165, -1, -1, 147, -1, -1, 146, -1, 164,
+ -1, 19, 169, -1, 15, 169, -1, 16, 169, -1,
+ 17, 169, -1, 65, 169, -1, 18, 169, -1, 23,
+ -1, 164, -1, 112, -1, 28, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 142, 142, 141, 151, 150, 160, 159, 172, 171,
- 184, 183, 196, 195, 207, 217, 221, 224, 234, 239,
- 240, 249, 257, 261, 268, 277, 279, 284, 302, 323,
- 335, 351, 350, 367, 376, 385, 391, 393, 395, 405,
- 415, 436, 445, 454, 463, 470, 469, 495, 501, 511,
- 513, 515, 519, 523, 527, 531, 536, 542, 543, 549,
- 563, 564, 573, 579, 580, 585, 588, 592, 597, 601,
- 605, 609, 610, 614, 620, 625, 630, 640, 641, 646,
- 647, 651, 661, 665, 675, 676, 686, 690, 694, 698,
- 702, 712, 721, 725, 730, 737, 746, 752, 758, 766,
- 770, 777, 776, 787, 788, 792, 801, 806, 814, 821,
- 828, 838, 847, 854, 863, 870, 876, 883, 888, 898,
- 902, 906, 912, 916, 920, 924, 928, 932, 936, 948,
- 952, 956, 960, 970, 974, 981, 985, 989, 994, 999,
- 1004, 1013, 1018, 1023, 1029, 1035, 1046, 1050, 1054, 1066,
- 1079, 1087, 1099, 1100, 1101, 1102, 1103, 1108, 1112, 1114,
- 1118, 1123, 1125, 1130, 1132, 1134, 1136, 1138, 1140, 1142,
- 1151, 1162, 1164, 1166, 1171, 1184, 1189, 1194, 1198, 1202,
- 1206, 1210, 1214, 1218, 1222, 1224, 1227, 1231, 1237, 1239,
- 1244, 1247, 1256, 1262, 1267, 1268, 1269, 1275, 1279, 1287,
- 1294, 1299, 1304, 1306, 1308, 1313, 1315, 1320, 1321, 1325,
- 1328, 1327, 1335, 1339, 1345, 1351, 1357, 1363, 1369, 1376,
- 1378, 1380, 1383
+ 0, 141, 141, 140, 150, 149, 159, 158, 171, 170,
+ 183, 182, 195, 194, 206, 216, 226, 229, 239, 244,
+ 245, 255, 256, 265, 273, 277, 285, 295, 297, 302,
+ 320, 319, 369, 385, 384, 401, 410, 419, 430, 432,
+ 434, 444, 454, 475, 484, 493, 502, 509, 508, 525,
+ 531, 541, 565, 566, 571, 573, 575, 579, 583, 587,
+ 591, 596, 602, 603, 609, 623, 624, 633, 639, 640,
+ 645, 648, 652, 657, 661, 665, 669, 670, 674, 680,
+ 685, 690, 691, 696, 697, 702, 703, 707, 717, 721,
+ 731, 732, 742, 746, 750, 754, 758, 768, 777, 781,
+ 786, 793, 802, 808, 814, 822, 826, 833, 832, 843,
+ 844, 848, 857, 862, 870, 877, 884, 894, 903, 910,
+ 919, 926, 932, 939, 944, 954, 958, 962, 968, 972,
+ 976, 980, 984, 988, 992, 1004, 1008, 1012, 1016, 1026,
+ 1030, 1037, 1041, 1045, 1050, 1055, 1060, 1069, 1074, 1079,
+ 1085, 1091, 1102, 1106, 1110, 1122, 1135, 1143, 1155, 1156,
+ 1157, 1158, 1159, 1164, 1168, 1170, 1174, 1179, 1181, 1186,
+ 1188, 1190, 1192, 1194, 1196, 1198, 1207, 1218, 1220, 1222,
+ 1227, 1240, 1245, 1250, 1254, 1258, 1262, 1266, 1270, 1274,
+ 1278, 1280, 1283, 1287, 1293, 1295, 1300, 1303, 1312, 1319,
+ 1318, 1334, 1335, 1336, 1342, 1346, 1354, 1361, 1366, 1371,
+ 1373, 1375, 1380, 1382, 1387, 1388, 1394, 1398, 1404, 1410,
+ 1416, 1422, 1428, 1435, 1437, 1439, 1442
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 0
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
"$end", "error", "$undefined", "GRAMPROG", "GRAMEXPR", "GRAMBLOCK",
"GRAMBARESTMT", "GRAMFULLSTMT", "GRAMSTMTSEQ", "'{'", "'}'", "'['",
- "']'", "'-'", "'+'", "'$'", "'@'", "'%'", "'*'", "'&'", "';'", "WORD",
- "METHOD", "FUNCMETH", "THING", "PMFUNC", "PRIVATEREF", "QWLIST",
- "FUNC0OP", "FUNC0SUB", "UNIOPSUB", "LSTOPSUB", "PLUGEXPR", "PLUGSTMT",
- "LABEL", "FORMAT", "SUB", "ANONSUB", "PACKAGE", "USE", "WHILE", "UNTIL",
- "IF", "UNLESS", "ELSE", "ELSIF", "CONTINUE", "FOR", "GIVEN", "WHEN",
- "DEFAULT", "LOOPEX", "DOTDOT", "YADAYADA", "FUNC0", "FUNC1", "FUNC",
- "UNIOP", "LSTOP", "RELOP", "EQOP", "MULOP", "ADDOP", "DOLSHARP", "DO",
- "HASHBRACK", "NOAMP", "LOCAL", "MY", "MYSUB", "REQUIRE", "COLONATTR",
- "PREC_LOW", "DOROP", "OROP", "ANDOP", "NOTOP", "','", "ASSIGNOP", "'?'",
- "':'", "DORDOR", "OROR", "ANDAND", "BITOROP", "BITANDOP", "SHIFTOP",
- "MATCHOP", "'!'", "'~'", "REFGEN", "UMINUS", "POWOP", "POSTDEC",
- "POSTINC", "PREDEC", "PREINC", "ARROW", "')'", "'('", "PEG", "$accept",
- "grammar", "@1", "@2", "@3", "@4", "@5", "@6", "block", "remember",
- "mydefsv", "mblock", "mremember", "stmtseq", "fullstmt", "labfullstmt",
- "barestmt", "@7", "@8", "sideff", "else", "cont", "mintro", "nexpr",
- "texpr", "iexpr", "mexpr", "mnexpr", "miexpr", "formname", "startsub",
- "startanonsub", "startformsub", "subname", "proto", "subattrlist",
- "myattrlist", "subbody", "expr", "listexpr", "listop", "@9", "method",
- "subscripted", "termbinop", "termunop", "anonymous", "termdo", "term",
- "myattrterm", "myterm", "optlistexpr", "optexpr", "lpar_or_qw", "@10",
- "my_scalar", "amper", "scalar", "ary", "hsh", "arylen", "star",
- "indirob", 0
+ "']'", "'-'", "'+'", "'$'", "'@'", "'%'", "'*'", "'&'", "';'", "'='",
+ "'.'", "WORD", "METHOD", "FUNCMETH", "THING", "PMFUNC", "PRIVATEREF",
+ "QWLIST", "FUNC0OP", "FUNC0SUB", "UNIOPSUB", "LSTOPSUB", "PLUGEXPR",
+ "PLUGSTMT", "LABEL", "FORMAT", "SUB", "ANONSUB", "PACKAGE", "USE",
+ "WHILE", "UNTIL", "IF", "UNLESS", "ELSE", "ELSIF", "CONTINUE", "FOR",
+ "GIVEN", "WHEN", "DEFAULT", "LOOPEX", "DOTDOT", "YADAYADA", "FUNC0",
+ "FUNC1", "FUNC", "UNIOP", "LSTOP", "RELOP", "EQOP", "MULOP", "ADDOP",
+ "DOLSHARP", "DO", "HASHBRACK", "NOAMP", "LOCAL", "MY", "REQUIRE",
+ "COLONATTR", "FORMLBRACK", "FORMRBRACK", "PREC_LOW", "DOROP", "OROP",
+ "ANDOP", "NOTOP", "','", "ASSIGNOP", "'?'", "':'", "DORDOR", "OROR",
+ "ANDAND", "BITOROP", "BITANDOP", "SHIFTOP", "MATCHOP", "'!'", "'~'",
+ "REFGEN", "UMINUS", "POWOP", "POSTDEC", "POSTINC", "PREDEC", "PREINC",
+ "ARROW", "')'", "'('", "PEG", "$accept", "grammar", "$@1", "$@2", "$@3",
+ "$@4", "$@5", "$@6", "block", "formblock", "remember", "mblock",
+ "mremember", "stmtseq", "formstmtseq", "fullstmt", "labfullstmt",
+ "barestmt", "$@7", "$@8", "$@9", "formline", "formarg", "sideff", "else",
+ "cont", "mintro", "nexpr", "texpr", "iexpr", "mexpr", "mnexpr", "miexpr",
+ "formname", "startsub", "startanonsub", "startformsub", "subname",
+ "proto", "subattrlist", "myattrlist", "subbody", "expr", "listexpr",
+ "listop", "@10", "method", "subscripted", "termbinop", "termunop",
+ "anonymous", "termdo", "term", "@11", "myattrterm", "myterm",
+ "optlistexpr", "optexpr", "my_scalar", "amper", "scalar", "ary", "hsh",
+ "arylen", "star", "indirob", YY_NULL
};
#endif
@@ -243,820 +245,856 @@ static const yytype_uint16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 123,
125, 91, 93, 45, 43, 36, 64, 37, 42, 38,
- 59, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 318, 319, 44, 320, 63,
- 58, 321, 322, 323, 324, 325, 326, 327, 33, 126,
- 328, 329, 330, 331, 332, 333, 334, 335, 41, 40,
- 336
+ 59, 61, 46, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
+ 44, 321, 63, 58, 322, 323, 324, 325, 326, 327,
+ 328, 33, 126, 329, 330, 331, 332, 333, 334, 335,
+ 336, 41, 40, 337
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 101, 103, 102, 104, 102, 105, 102, 106, 102,
- 107, 102, 108, 102, 109, 110, 111, 112, 113, 114,
- 114, 115, 115, 116, 116, 117, 117, 117, 117, 117,
- 117, 118, 117, 117, 117, 117, 117, 117, 117, 117,
- 117, 117, 117, 117, 117, 119, 117, 117, 117, 120,
- 120, 120, 120, 120, 120, 120, 120, 121, 121, 121,
- 122, 122, 123, 124, 124, 125, 125, 126, 127, 128,
- 129, 130, 130, 131, 132, 133, 134, 135, 135, 136,
- 136, 136, 137, 137, 138, 138, 139, 139, 139, 139,
- 140, 140, 140, 141, 141, 141, 141, 141, 141, 141,
- 141, 142, 141, 143, 143, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144, 144, 145,
- 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
- 145, 145, 145, 146, 146, 146, 146, 146, 146, 146,
- 146, 147, 147, 147, 147, 147, 148, 148, 148, 148,
- 148, 148, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 150, 150,
- 151, 151, 151, 151, 151, 152, 152, 153, 153, 154,
- 155, 154, 156, 157, 158, 159, 160, 161, 162, 163,
- 163, 163, 163
+ 0, 104, 106, 105, 107, 105, 108, 105, 109, 105,
+ 110, 105, 111, 105, 112, 113, 114, 115, 116, 117,
+ 117, 118, 118, 119, 119, 120, 120, 121, 121, 121,
+ 122, 121, 121, 123, 121, 121, 121, 121, 121, 121,
+ 121, 121, 121, 121, 121, 121, 121, 124, 121, 121,
+ 121, 125, 126, 126, 127, 127, 127, 127, 127, 127,
+ 127, 127, 128, 128, 128, 129, 129, 130, 131, 131,
+ 132, 132, 133, 134, 135, 136, 137, 137, 138, 139,
+ 140, 141, 141, 142, 142, 143, 143, 143, 144, 144,
+ 145, 145, 146, 146, 146, 146, 147, 147, 147, 148,
+ 148, 148, 148, 148, 148, 148, 148, 149, 148, 150,
+ 150, 151, 151, 151, 151, 151, 151, 151, 151, 151,
+ 151, 151, 151, 151, 151, 152, 152, 152, 152, 152,
+ 152, 152, 152, 152, 152, 152, 152, 152, 152, 153,
+ 153, 153, 153, 153, 153, 153, 153, 154, 154, 154,
+ 154, 154, 155, 155, 155, 155, 155, 155, 156, 156,
+ 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+ 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+ 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+ 156, 156, 156, 156, 156, 156, 156, 156, 156, 157,
+ 156, 156, 156, 156, 156, 158, 158, 159, 159, 159,
+ 159, 159, 160, 160, 161, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 169, 169, 169
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
0, 2, 0, 4, 0, 3, 0, 3, 0, 3,
- 0, 3, 0, 3, 4, 0, 0, 4, 0, 0,
- 2, 1, 1, 2, 2, 1, 1, 4, 6, 6,
- 4, 0, 7, 7, 7, 7, 6, 2, 8, 8,
- 11, 9, 8, 7, 2, 0, 8, 2, 1, 1,
- 1, 3, 3, 3, 3, 3, 3, 0, 2, 6,
- 0, 2, 0, 0, 1, 0, 1, 1, 1, 1,
- 1, 1, 0, 0, 0, 0, 1, 0, 1, 0,
- 2, 1, 2, 1, 1, 1, 3, 3, 3, 1,
- 2, 3, 1, 3, 5, 6, 3, 3, 5, 2,
- 4, 0, 5, 1, 1, 5, 4, 5, 4, 5,
- 6, 5, 4, 5, 4, 3, 6, 4, 5, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 4, 3, 5, 2, 2, 4, 5,
- 4, 5, 1, 1, 1, 1, 5, 2, 1, 2,
- 3, 1, 2, 1, 1, 1, 1, 1, 1, 4,
- 5, 1, 1, 3, 4, 3, 1, 2, 2, 1,
- 2, 2, 1, 2, 1, 2, 1, 3, 1, 3,
- 1, 3, 4, 4, 1, 1, 1, 1, 3, 2,
- 3, 2, 1, 1, 1, 0, 1, 0, 1, 1,
- 0, 3, 1, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1
+ 0, 3, 0, 3, 4, 7, 0, 4, 0, 0,
+ 2, 0, 2, 1, 1, 2, 2, 1, 1, 4,
+ 0, 7, 4, 0, 7, 7, 7, 6, 6, 2,
+ 8, 8, 11, 9, 8, 7, 2, 0, 8, 2,
+ 1, 2, 0, 3, 1, 1, 3, 3, 3, 3,
+ 3, 3, 0, 2, 6, 0, 2, 0, 0, 1,
+ 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 1, 1, 0, 1, 0, 2, 1, 2, 1,
+ 1, 1, 3, 3, 3, 1, 2, 3, 1, 3,
+ 5, 6, 3, 3, 5, 2, 4, 0, 5, 1,
+ 1, 5, 4, 5, 4, 5, 6, 5, 4, 5,
+ 4, 3, 6, 4, 5, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
+ 2, 2, 2, 2, 2, 2, 2, 3, 2, 4,
+ 3, 5, 2, 2, 4, 5, 4, 5, 1, 1,
+ 1, 1, 5, 2, 1, 2, 3, 1, 2, 1,
+ 1, 1, 1, 1, 1, 4, 5, 1, 1, 3,
+ 4, 3, 1, 2, 2, 1, 2, 2, 1, 2,
+ 1, 2, 1, 3, 1, 3, 1, 3, 4, 0,
+ 5, 1, 1, 1, 1, 3, 2, 3, 2, 1,
+ 1, 1, 0, 1, 0, 1, 1, 2, 2, 2,
+ 2, 2, 2, 1, 1, 1, 1
};
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 0, 2, 4, 6, 8, 10, 12, 0, 15, 207,
+ 0, 2, 4, 6, 8, 10, 12, 0, 16, 214,
0, 0, 0, 19, 1, 19, 0, 0, 0, 0,
- 0, 0, 0, 0, 194, 0, 0, 171, 0, 161,
- 188, 190, 184, 74, 197, 74, 176, 196, 186, 0,
- 0, 179, 205, 0, 0, 0, 0, 0, 0, 182,
- 0, 0, 0, 0, 0, 0, 0, 208, 89, 195,
- 168, 152, 153, 154, 155, 92, 158, 5, 172, 163,
- 166, 165, 167, 164, 15, 7, 49, 48, 25, 75,
- 73, 0, 73, 0, 0, 0, 0, 0, 0, 0,
- 0, 73, 26, 60, 9, 0, 50, 0, 11, 22,
- 21, 0, 0, 142, 0, 133, 134, 219, 222, 221,
- 220, 214, 215, 216, 218, 213, 205, 0, 0, 0,
- 0, 185, 0, 77, 177, 0, 0, 207, 180, 181,
- 219, 206, 99, 220, 0, 217, 194, 147, 146, 163,
- 0, 0, 205, 159, 0, 199, 202, 204, 203, 183,
- 178, 135, 136, 157, 140, 139, 162, 0, 0, 0,
- 0, 90, 0, 0, 210, 209, 0, 0, 0, 0,
+ 0, 0, 0, 0, 201, 0, 0, 177, 199, 167,
+ 194, 196, 190, 79, 204, 79, 182, 203, 192, 0,
+ 0, 185, 212, 0, 0, 0, 0, 0, 0, 188,
+ 0, 0, 0, 0, 0, 0, 0, 215, 95, 202,
+ 174, 158, 159, 160, 161, 98, 164, 5, 178, 169,
+ 172, 171, 173, 170, 16, 7, 54, 50, 27, 80,
+ 0, 0, 78, 0, 0, 0, 0, 0, 0, 0,
+ 0, 28, 65, 9, 0, 55, 0, 11, 24, 23,
+ 0, 0, 148, 0, 139, 140, 223, 226, 225, 224,
+ 218, 219, 220, 222, 217, 212, 0, 0, 0, 0,
+ 191, 0, 83, 183, 0, 0, 214, 186, 187, 223,
+ 213, 105, 224, 0, 221, 201, 82, 153, 0, 152,
+ 169, 0, 0, 81, 212, 165, 0, 206, 209, 211,
+ 210, 189, 184, 141, 142, 163, 146, 145, 168, 0,
+ 0, 0, 0, 96, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 138, 137, 0, 0, 0, 0, 0, 0,
- 0, 19, 72, 0, 0, 31, 15, 15, 15, 15,
- 15, 15, 0, 15, 15, 37, 0, 0, 44, 47,
- 0, 0, 0, 0, 0, 0, 24, 23, 20, 141,
- 97, 207, 0, 0, 189, 101, 78, 79, 187, 191,
- 0, 0, 0, 93, 0, 0, 144, 0, 175, 201,
- 0, 83, 198, 0, 160, 88, 87, 86, 91, 0,
- 0, 0, 115, 0, 128, 124, 125, 121, 122, 119,
- 0, 131, 130, 129, 127, 126, 123, 132, 120, 0,
- 0, 103, 0, 96, 104, 173, 0, 0, 0, 0,
- 0, 0, 0, 71, 0, 76, 77, 0, 0, 65,
- 0, 0, 0, 0, 0, 15, 16, 0, 77, 61,
- 53, 54, 67, 51, 52, 55, 56, 0, 193, 117,
- 205, 81, 0, 192, 100, 0, 148, 0, 150, 0,
- 143, 200, 82, 0, 0, 0, 108, 211, 114, 0,
- 0, 0, 112, 0, 207, 174, 0, 106, 0, 169,
- 0, 14, 27, 79, 15, 30, 0, 0, 66, 0,
- 0, 68, 70, 0, 0, 212, 64, 69, 0, 0,
- 50, 0, 0, 0, 79, 98, 102, 80, 145, 94,
- 149, 151, 118, 0, 111, 156, 0, 107, 113, 0,
- 109, 170, 105, 0, 45, 205, 62, 62, 0, 0,
- 0, 0, 65, 0, 0, 0, 0, 116, 110, 95,
- 85, 84, 28, 19, 0, 0, 0, 18, 57, 57,
- 0, 60, 0, 0, 0, 36, 29, 0, 32, 60,
- 60, 19, 0, 0, 33, 34, 0, 43, 62, 60,
- 35, 46, 38, 39, 0, 58, 0, 60, 0, 42,
- 17, 0, 41, 0, 0, 0, 57, 40, 59
+ 0, 0, 144, 143, 0, 0, 0, 0, 0, 0,
+ 0, 19, 77, 78, 0, 33, 16, 16, 16, 16,
+ 16, 16, 0, 16, 16, 39, 0, 46, 49, 0,
+ 0, 0, 0, 0, 0, 26, 25, 20, 147, 103,
+ 214, 0, 0, 195, 107, 84, 85, 193, 197, 0,
+ 0, 0, 99, 0, 0, 150, 0, 181, 208, 0,
+ 89, 205, 0, 166, 94, 93, 92, 97, 0, 0,
+ 121, 0, 134, 130, 131, 127, 128, 125, 0, 137,
+ 136, 135, 133, 132, 129, 138, 126, 0, 0, 109,
+ 0, 102, 110, 179, 0, 0, 0, 0, 0, 0,
+ 0, 76, 0, 30, 0, 0, 70, 0, 0, 0,
+ 0, 0, 16, 0, 0, 66, 58, 59, 72, 56,
+ 57, 60, 61, 0, 0, 123, 212, 87, 0, 198,
+ 106, 0, 154, 0, 156, 0, 149, 207, 88, 0,
+ 0, 0, 114, 120, 0, 0, 0, 118, 0, 214,
+ 180, 0, 112, 0, 175, 0, 14, 16, 29, 83,
+ 16, 32, 0, 0, 71, 0, 0, 73, 75, 0,
+ 0, 216, 69, 74, 0, 0, 55, 0, 0, 0,
+ 104, 200, 108, 86, 151, 100, 155, 157, 124, 0,
+ 117, 162, 0, 113, 119, 0, 115, 176, 111, 0,
+ 85, 47, 212, 67, 67, 0, 0, 0, 0, 70,
+ 0, 0, 0, 122, 116, 101, 0, 0, 19, 0,
+ 0, 0, 18, 62, 62, 0, 65, 0, 0, 37,
+ 38, 21, 91, 90, 31, 0, 34, 65, 65, 19,
+ 0, 0, 35, 36, 0, 45, 67, 65, 0, 48,
+ 40, 41, 0, 63, 0, 65, 0, 44, 0, 52,
+ 22, 17, 0, 43, 0, 15, 19, 51, 0, 0,
+ 0, 62, 42, 53, 64
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 7, 8, 9, 10, 11, 12, 13, 109, 15,
- 362, 408, 421, 101, 218, 99, 100, 288, 403, 95,
- 424, 208, 405, 357, 347, 301, 350, 359, 353, 284,
- 193, 122, 192, 286, 227, 312, 242, 402, 96, 58,
- 59, 310, 273, 60, 61, 62, 63, 64, 65, 66,
- 145, 132, 67, 166, 251, 354, 68, 69, 70, 71,
- 72, 73, 111
+ -1, 7, 8, 9, 10, 11, 12, 13, 108, 338,
+ 15, 403, 419, 100, 428, 217, 98, 99, 339, 285,
+ 398, 440, 447, 94, 422, 207, 400, 353, 343, 297,
+ 346, 355, 349, 282, 195, 121, 192, 138, 226, 308,
+ 241, 414, 95, 58, 59, 306, 271, 60, 61, 62,
+ 63, 64, 65, 117, 66, 147, 131, 67, 350, 68,
+ 69, 70, 71, 72, 73, 110
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -394
+#define YYPACT_NINF -391
static const yytype_int16 yypact[] =
{
- 683, -394, -394, -394, -394, -394, -394, 6, -394, 2536,
- 16, 977, 885, -394, -394, -394, 1650, 2536, 2536, 220,
- 220, 220, 220, 220, -394, 220, 220, -394, -97, 52,
- -26, -394, 2536, -394, -394, -394, 2536, -394, -16, -2,
- 10, 1472, 1383, 220, 1561, 1737, 13, 2536, 23, 2536,
- 2536, 2536, 2536, 2536, 2536, 2536, 1824, 115, 39, -394,
- 61, -394, -394, -394, -394, 2597, -394, -394, -12, 80,
- 127, -394, -394, 111, -394, -394, -394, -394, -394, -394,
- -394, 124, -394, -12, -12, -12, -12, 27, -12, -12,
- 16, -394, -394, 102, -394, 132, 1559, 885, -394, -394,
- -394, 424, 517, -394, 32, 681, 681, -394, -394, -394,
- -394, -394, -394, -394, -394, -394, 2536, 59, 2536, 2536,
- 64, 300, 16, 158, 2597, 85, 1913, 1383, -394, 300,
- 1293, 39, -394, 1217, 2536, -394, -12, -394, 300, 73,
- 185, 91, 2536, 300, 2002, 125, -394, -394, -394, 300,
- 39, 681, 681, 681, 237, 237, 186, 112, 2536, 2536,
- 2536, 2536, 2536, 2536, -394, -394, 2091, 2536, 2536, 2536,
- 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536,
- 2536, 2536, -394, -394, 26, 2180, 2536, 2536, 2536, 2536,
- 2536, -394, 177, 194, 195, -394, -394, -394, -394, -394,
- -394, -394, -12, -394, -394, -394, 194, 16, -394, -394,
- 2536, 2536, 2536, 2536, 2536, 2536, -394, -394, -394, -394,
- -394, 2536, -17, 40, -394, -394, -394, 156, -394, -394,
- 228, 133, 2536, 39, 2269, 2358, -394, 223, -394, -394,
- 281, 206, -394, 2536, 225, 167, 167, -394, 2597, 180,
- 54, 145, -394, 330, 2675, 246, 329, 505, 409, 2597,
- 2558, 1055, 1055, 1264, 1369, 1457, 1013, 681, 681, 2536,
- 2536, -394, 2447, -12, -394, -394, 333, 204, 96, 219,
- 100, 238, 609, -394, 16, -394, 158, 60, 231, 2536,
- 2536, 2536, 2536, 241, 1067, -394, -394, 2536, 158, -394,
- 115, -394, 115, 115, 115, 115, 115, 159, -394, -394,
- 2536, 235, 16, -394, -394, 336, -394, 410, -394, 503,
- -394, -394, -394, 119, 2536, 252, -394, -394, -394, 2536,
- 275, 144, -394, 516, 2536, -394, 258, -394, 260, -394,
- 262, -394, -394, 156, -394, -394, 254, 178, 115, 192,
- 193, 115, -394, 198, -12, -394, -394, -394, 218, 299,
- 224, 2536, 2536, 226, 156, -394, -394, -394, -394, -394,
- -394, -394, -394, 147, -394, 2636, 313, -394, -394, 244,
- -394, -394, -394, 110, -394, 2536, -394, -394, 327, 327,
- 2536, 327, 2536, 247, 248, 327, 110, -394, -394, -394,
- -394, -394, -394, -394, 331, 327, 327, -394, 123, 123,
- 249, 102, 358, 327, 327, -394, -394, 701, -394, 102,
- 102, -394, 327, -12, -394, -394, 327, -394, -394, 102,
- -394, -394, -394, -394, 793, -394, 2536, 102, 1157, -394,
- -394, 282, -394, 284, 327, 327, 123, -394, -394
+ 594, -391, -391, -391, -391, -391, -391, 43, -391, 2708,
+ 17, 1095, 1000, -391, -391, -391, 1792, 2708, 2708, 215,
+ 215, 215, 215, 215, -391, 215, 215, -391, -391, 28,
+ -17, -391, 2708, -391, -391, -391, 2708, -391, 20, 25,
+ 44, 1700, 1516, 215, 1608, 1882, 72, 2708, 3, 2708,
+ 2708, 2708, 2708, 2708, 2708, 2708, 1972, 62, 38, -391,
+ 6, -391, -391, -391, -391, 2770, -391, -391, 49, 98,
+ 143, -391, -391, 110, -391, -391, -391, -391, -391, -391,
+ 72, 146, -391, 86, 109, 114, 119, -6, 120, 121,
+ 17, -391, 177, -391, 220, 1698, 1000, -391, -391, -391,
+ 430, 525, -391, 26, 408, 408, -391, -391, -391, -391,
+ -391, -391, -391, -391, -391, 2708, 139, 155, 2708, 144,
+ 314, 17, 147, 2770, 157, 2064, 1516, -391, 314, 1423,
+ 38, -391, 1344, 2708, -391, 162, -391, -391, 167, 314,
+ 21, 270, 16, -391, 2708, 314, 2156, 218, -391, -391,
+ -391, 314, 38, 408, 408, 408, -27, -27, 276, -29,
+ 2708, 2708, 2708, 2708, 2708, 2708, 2248, 2708, 2708, 2708,
+ 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708,
+ 2708, 2708, -391, -391, 73, 2340, 2708, 2708, 2708, 2708,
+ 2708, -391, 271, -391, 272, -391, -391, -391, -391, -391,
+ -391, -391, 212, -391, -391, -391, 17, -391, -391, 2708,
+ 2708, 2708, 2708, 2708, 2708, -391, -391, -391, -391, -391,
+ 2708, 2708, 48, -391, -391, -391, 228, -391, -391, 113,
+ 202, 2708, 38, 2432, 2524, -391, 306, -391, -391, 116,
+ 294, -391, 2708, 310, 245, 245, -391, 2770, 39, 53,
+ -391, 198, 247, 1593, 171, 417, 222, 2770, 2730, 1174,
+ 1174, 1314, 1393, 1501, 1352, 408, 408, 2708, 2708, -391,
+ 2616, 224, -391, -391, 201, 125, 56, 142, 59, 175,
+ 620, -391, 309, -391, 57, 304, 2708, 2708, 2708, 2708,
+ 323, 1188, -391, 2708, 2708, -391, 62, -391, 62, 62,
+ 62, 62, 62, 240, -38, -391, 2708, 319, 17, -391,
+ -391, 312, -391, 320, -391, 341, -391, -391, -391, 66,
+ 2708, 336, -391, -391, 2708, 178, 71, -391, 415, 2708,
+ -391, 340, -391, 345, -391, 346, -391, -391, -391, 147,
+ -391, -391, 328, 258, 62, 259, 260, 62, -391, 278,
+ 279, -391, -391, -391, 282, 360, 350, 2708, 284, 290,
+ -391, -391, -391, -391, -391, -391, -391, -391, -391, 100,
+ -391, 2810, 390, -391, -391, 301, -391, -391, -391, 386,
+ 228, -391, 2708, -391, -391, 399, 399, 2708, 399, 2708,
+ 311, 399, 399, -391, -391, -391, 342, 78, -391, 395,
+ 399, 399, -391, 153, 153, 322, 177, 400, 399, -391,
+ -391, -391, -391, -391, -391, 715, -391, 177, 177, -391,
+ 399, 330, -391, -391, 399, -391, -391, 177, 36, -391,
+ -391, -391, 810, -391, 2708, 177, 1281, -391, 402, 352,
+ -391, -391, 332, -391, 334, -391, -391, -391, 399, 399,
+ 905, 153, -391, -391, -391
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -394, -394, -394, -394, -394, -394, -394, -394, 2, -57,
- -394, -85, -394, -7, 372, 298, -1, -394, -394, -283,
- -393, -102, -342, -394, 8, -169, -229, -39, -394, -394,
- -15, 366, -394, 207, -196, -279, -394, 21, -9, -41,
- -394, -394, -394, -394, -394, -394, -394, -394, 196, -394,
- -394, -111, -123, -65, -394, -394, -394, 7, 354, 364,
- -394, -394, 36
+ -391, -391, -391, -391, -391, -391, -391, -391, -10, -391,
+ -33, -95, -391, -12, -391, 424, 356, 18, -391, -391,
+ -391, -391, -391, -286, -390, -78, -347, -391, 69, -115,
+ -281, 1, -391, -391, 283, 403, -391, -13, 138, 104,
+ -391, -391, -5, -34, -391, -391, -391, -391, -391, -391,
+ -391, -391, 195, -391, -391, -391, -109, -119, -391, -391,
+ 2, 446, 454, -391, -391, 32
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
- number is the opposite. If zero, do what YYDEFACT says.
- If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -195
+ number is the opposite. If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -202
static const yytype_int16 yytable[] =
{
- 57, 131, 118, 185, 231, 220, 14, 104, 102, 150,
- 94, 356, 75, 93, 93, 164, 425, 191, 196, 197,
- 198, 199, 201, 203, 204, 74, 110, 110, 110, 110,
- 110, 238, 110, 110, 142, 269, 141, 270, 19, 20,
- 21, 19, 19, 128, 219, 406, 137, 157, 271, 133,
- 110, 139, 309, 448, 164, 146, 112, 113, 114, 115,
- 161, 116, 117, 119, 383, 358, 326, 195, 363, 344,
- 162, 234, 163, 120, 235, 131, 206, 222, 134, 135,
- 345, 308, 186, 125, 187, 396, 438, 165, 164, 186,
- 343, 187, 205, 233, 202, 200, 217, 126, 307, 93,
- 164, 131, 364, 93, 93, 158, 159, 160, 337, 127,
- 223, 237, 339, 158, 159, 160, 161, 230, 57, 74,
- 190, 349, 144, 352, 225, 272, 165, 158, 159, 160,
- 400, 372, 393, 394, 133, 240, 188, 295, 189, 289,
- 290, 291, 292, 293, 294, 194, 296, 297, 207, 245,
- 246, 247, 209, 249, 250, 356, 377, 253, 221, 397,
- 165, 410, 224, 232, 158, 159, 160, 422, 423, 158,
- 159, 160, 165, 158, 159, 160, 276, 277, 278, 279,
- 280, 281, 226, 228, 282, 158, 159, 160, 158, 159,
- 160, 274, 158, 159, 160, 236, 241, 243, 283, 366,
- 325, 300, 302, 303, 304, 305, 306, 441, 334, 299,
- 244, 379, 57, 105, 106, 285, 287, 158, 159, 160,
- 158, 159, 160, 315, 336, 317, 319, 311, 121, 74,
- 322, 314, 124, 320, 323, 19, 324, 129, 361, 338,
- 138, 107, 160, 143, 327, 149, 108, 151, 152, 153,
- 154, 155, 346, 158, 159, 160, 19, 365, 340, 367,
- 330, 331, 374, 333, 210, 211, 212, 213, 380, 131,
- 381, 214, 382, 215, 404, 385, 386, 158, 159, 160,
- 348, 302, 351, 302, 93, 360, 342, 384, 351, 390,
- 387, 388, 158, 159, 160, 376, 389, 158, 159, 160,
- 355, 158, 159, 160, 409, -195, 411, 170, 171, 427,
- 415, 158, 159, 160, 368, 373, 391, 432, 433, 392,
- 419, 420, -68, 398, 395, 57, 313, 439, 429, 430,
- -195, -195, 179, 180, 184, 442, 407, 435, 181, 182,
- 183, 437, 399, 184, 131, 413, 414, 426, 158, 159,
- 160, 418, 351, 351, 158, 159, 160, 248, 436, 446,
- 447, 170, 171, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 428, 321,
- 444, 351, 445, 348, 98, 401, 179, 180, 168, -195,
- 170, 171, 181, 182, 183, 216, 417, 184, 401, 443,
- 412, 123, 147, 158, 159, 160, 158, 159, 160, 158,
- 159, 160, 148, 298, 434, 179, 180, 416, 0, 93,
- 0, 181, 182, 183, -13, 76, 184, 351, 328, 0,
- 0, 335, 0, 74, 369, 16, 93, 17, 18, 19,
- 20, 21, 22, 23, 77, 24, 25, 26, 27, 28,
- 0, 29, 30, 31, 32, 33, 34, 78, 97, 79,
- 80, 35, 81, 82, 83, 84, 85, 86, 0, 0,
- 170, 87, 88, 89, 90, 36, 0, 37, 38, 39,
- 40, 41, 42, 158, 159, 160, 0, 43, 44, 45,
- 46, 47, 48, 91, 49, 0, 180, 0, 0, 0,
- 50, 181, 182, 183, 0, 0, 184, 0, 370, 0,
- 0, 0, 51, 52, 53, 0, 0, -3, 76, 54,
- 55, 0, 0, 56, 92, 375, 74, 0, 16, 0,
- 17, 18, 19, 20, 21, 22, 23, 77, 24, 25,
+ 75, 92, 92, 101, 57, 352, 219, 230, 130, 19,
+ 354, 103, 358, 359, 423, 164, 152, 165, 19, 20,
+ 21, 109, 109, 109, 109, 109, 74, 109, 109, 93,
+ 186, 127, 187, 144, 137, 237, 236, 401, 218, 118,
+ 142, 191, 163, 14, 132, 109, 140, 160, 161, 162,
+ 148, 159, 111, 112, 113, 114, 438, 115, 116, 321,
+ 305, 454, 439, 361, 200, 322, 340, 193, 332, -202,
+ -202, 334, 243, 184, 133, 134, 390, 341, 368, 436,
+ 205, 130, 267, 373, 268, 119, 92, 74, 19, 202,
+ 92, 92, 160, 161, 162, 143, 201, 269, 412, 232,
+ 136, 303, 160, 161, 162, 146, 405, 186, 166, 187,
+ 130, 224, 393, 222, 216, 160, 161, 162, 163, 190,
+ 229, 57, 124, 234, 160, 161, 162, 125, 132, 160,
+ 161, 162, 160, 161, 162, 160, 161, 162, 160, 161,
+ 162, 239, 160, 161, 162, 331, 126, 160, 161, 162,
+ 352, 185, 188, 442, 189, 244, 245, 246, 231, 248,
+ 249, 251, 333, 286, 287, 288, 289, 290, 291, 194,
+ 293, 294, 345, 225, 348, 270, 160, 161, 162, 280,
+ 274, 275, 276, 277, 278, 279, 272, 304, 196, 160,
+ 161, 162, 160, 161, 162, 335, 295, 362, 372, 420,
+ 421, 160, 161, 162, 296, 298, 299, 300, 301, 302,
+ 375, 197, 104, 105, 309, 57, 198, 317, 160, 161,
+ 162, 199, 203, 204, 74, 206, 311, 120, 313, 315,
+ 19, 123, 168, -202, 170, 171, 128, 319, 106, 139,
+ 208, 220, 145, 107, 151, 223, 153, 154, 155, 156,
+ 157, 160, 161, 162, 160, 161, 162, 221, 227, 357,
+ 179, 180, 325, 326, -81, 328, 181, 182, 183, 233,
+ 92, 184, 130, 399, 160, 161, 162, 160, 161, 162,
+ 235, 344, 298, 347, 298, 170, 356, 242, 347, 347,
+ 240, 404, 351, 406, 281, 284, 409, 410, 364, 323,
+ 307, -202, 330, 310, 379, 417, 418, 381, 168, 169,
+ 170, 171, 180, 427, 292, 369, 316, 181, 182, 183,
+ 318, 320, 184, 162, 57, 433, 329, 342, 425, 435,
+ 337, 174, 175, 176, 177, 178, 179, 180, 19, 430,
+ 431, 360, 181, 182, 183, 363, 370, 184, 130, 437,
+ 376, 382, 347, 451, 452, 377, 378, 443, 247, 383,
+ 384, 385, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 170, 171, 386,
+ 389, 387, 347, 388, 344, 391, 415, 413, 160, 161,
+ 162, 392, 209, 210, 211, 212, 160, 161, 162, 213,
+ 394, 214, 395, 179, 180, 92, 396, 432, 402, 181,
+ 182, 183, 408, 365, 184, 416, 411, 160, 161, 162,
+ 426, 366, 92, 424, 445, 446, 160, 161, 162, 347,
+ -13, 76, 434, 448, 450, 449, 97, 444, 122, 74,
+ 92, 16, 367, 17, 18, 19, 20, 21, 22, 23,
+ 77, -73, 215, 24, 25, 26, 27, 28, 407, 29,
+ 30, 31, 32, 33, 34, 78, 96, 79, 80, 35,
+ 81, 82, 83, 84, 85, 86, 283, 380, 0, 87,
+ 88, 89, 90, 36, 397, 37, 38, 39, 40, 41,
+ 42, 160, 161, 162, 149, 43, 44, 45, 46, 47,
+ 48, 49, 150, 181, 182, 183, 0, 180, 184, 50,
+ 0, 0, 181, 182, 183, 0, 374, 184, 0, 371,
+ 0, 51, 52, 53, 0, -3, 76, 0, 54, 55,
+ 0, 0, 56, 91, 74, 0, 16, 0, 17, 18,
+ 19, 20, 21, 22, 23, 77, 0, 0, 24, 25,
26, 27, 28, 0, 29, 30, 31, 32, 33, 34,
- 78, 97, 79, 80, 35, 81, 82, 83, 84, 85,
+ 78, 96, 79, 80, 35, 81, 82, 83, 84, 85,
86, 0, 0, 0, 87, 88, 89, 90, 36, 0,
- 37, 38, 39, 40, 41, 42, 158, 159, 160, 0,
- 43, 44, 45, 46, 47, 48, 91, 49, 0, 158,
- 159, 160, 180, 50, 0, 0, 0, 181, 182, 183,
- 0, 371, 184, 0, 0, 51, 52, 53, 0, 0,
- 76, 0, 54, 55, 378, 0, 56, 92, 74, 341,
- 16, 0, 17, 18, 19, 20, 21, 22, 23, 77,
- 24, 25, 26, 27, 28, 0, 29, 30, 31, 32,
- 33, 34, 78, 97, 79, 80, 35, 81, 82, 83,
- 84, 85, 86, 0, 0, 0, 87, 88, 89, 90,
- 36, 0, 37, 38, 39, 40, 41, 42, 0, 0,
- 0, 0, 43, 44, 45, 46, 47, 48, 91, 49,
- 0, 0, 0, 0, 0, 50, 1, 2, 3, 4,
- 5, 6, 0, 0, 0, 0, 0, 51, 52, 53,
- 0, 0, 76, 0, 54, 55, 0, 0, 56, 92,
- 74, 431, 16, 0, 17, 18, 19, 20, 21, 22,
- 23, 77, 24, 25, 26, 27, 28, 0, 29, 30,
- 31, 32, 33, 34, 78, 97, 79, 80, 35, 81,
- 82, 83, 84, 85, 86, 0, 0, 0, 87, 88,
- 89, 90, 36, 0, 37, 38, 39, 40, 41, 42,
- 0, 0, 0, 0, 43, 44, 45, 46, 47, 48,
- 91, 49, 0, 181, 182, 183, 0, 50, 184, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,
- 52, 53, 0, 0, 76, 0, 54, 55, 0, 0,
- 56, 92, 74, 440, 16, 0, 17, 18, 19, 20,
- 21, 22, 23, 77, 24, 25, 26, 27, 28, 0,
- 29, 30, 31, 32, 33, 34, 78, 97, 79, 80,
- 35, 81, 82, 83, 84, 85, 86, 0, 0, 0,
- 87, 88, 89, 90, 36, 0, 37, 38, 39, 40,
- 41, 42, 0, 0, 0, 0, 43, 44, 45, 46,
- 47, 48, 91, 49, 0, 0, 0, 0, 0, 50,
+ 37, 38, 39, 40, 41, 42, 0, 0, 0, 0,
+ 43, 44, 45, 46, 47, 48, 49, 1, 2, 3,
+ 4, 5, 6, 0, 50, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 51, 52, 53, 0,
+ 0, 76, 0, 54, 55, 0, 0, 56, 91, 74,
+ 336, 16, 0, 17, 18, 19, 20, 21, 22, 23,
+ 77, 0, 0, 24, 25, 26, 27, 28, 0, 29,
+ 30, 31, 32, 33, 34, 78, 96, 79, 80, 35,
+ 81, 82, 83, 84, 85, 86, 0, 0, 0, 87,
+ 88, 89, 90, 36, 0, 37, 38, 39, 40, 41,
+ 42, 0, 0, 0, 0, 43, 44, 45, 46, 47,
+ 48, 49, 0, 0, 0, 0, 0, 0, 0, 50,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 51, 52, 53, 0, 0, 76, 0, 54, 55,
- 0, 0, 56, 92, 74, 0, 16, 0, 17, 18,
- 19, 20, 21, 22, 23, 77, 24, 25, 26, 27,
- 28, 0, 29, 30, 31, 32, 33, 34, 78, 97,
- 79, 80, 35, 81, 82, 83, 84, 85, 86, 0,
- 0, 0, 87, 88, 89, 90, 36, 0, 37, 38,
- 39, 40, 41, 42, 0, 0, 0, 0, 43, 44,
- 45, 46, 47, 48, 91, 49, 0, 0, 0, 0,
- 0, 50, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 51, 52, 53, 0, 0, 76, 0,
- 54, 55, 0, 0, 56, 92, 74, 0, 16, 0,
- 17, 18, 19, 20, 21, 22, 23, 77, 24, 25,
+ 0, 0, 56, 91, 74, 429, 16, 0, 17, 18,
+ 19, 20, 21, 22, 23, 77, 0, 0, 24, 25,
26, 27, 28, 0, 29, 30, 31, 32, 33, 34,
- 78, 0, 79, 80, 35, 81, 82, 83, 84, 85,
+ 78, 96, 79, 80, 35, 81, 82, 83, 84, 85,
86, 0, 0, 0, 87, 88, 89, 90, 36, 0,
37, 38, 39, 40, 41, 42, 0, 0, 0, 0,
- 43, 44, 45, 46, 47, 48, 91, 49, 0, 0,
- 0, 0, 0, 50, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 51, 52, 53, 76, 0,
- 0, 0, 54, 55, 170, 171, 56, 92, 16, 0,
- 17, 18, 19, 20, 21, 22, 23, -63, 24, 25,
+ 43, 44, 45, 46, 47, 48, 49, 0, 0, 0,
+ 0, 0, 0, 0, 50, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 51, 52, 53, 0,
+ 0, 76, 0, 54, 55, 0, 0, 56, 91, 74,
+ 441, 16, 0, 17, 18, 19, 20, 21, 22, 23,
+ 77, 0, 0, 24, 25, 26, 27, 28, 0, 29,
+ 30, 31, 32, 33, 34, 78, 96, 79, 80, 35,
+ 81, 82, 83, 84, 85, 86, 0, 0, 0, 87,
+ 88, 89, 90, 36, 0, 37, 38, 39, 40, 41,
+ 42, 0, 0, 0, 0, 43, 44, 45, 46, 47,
+ 48, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 51, 52, 53, 0, 0, 76, 0, 54, 55,
+ 0, 0, 56, 91, 74, 0, 16, 0, 17, 18,
+ 19, 20, 21, 22, 23, 77, 0, 0, 24, 25,
26, 27, 28, 0, 29, 30, 31, 32, 33, 34,
- 180, 0, 0, 0, 35, 181, 182, 183, 0, 0,
- 184, 0, 0, 0, 168, 169, 170, 171, 36, 0,
+ 78, 96, 79, 80, 35, 81, 82, 83, 84, 85,
+ 86, 0, 0, 0, 87, 88, 89, 90, 36, 0,
37, 38, 39, 40, 41, 42, 0, 0, 0, 0,
- 43, 44, 45, 46, 47, 48, 0, 49, 176, 177,
- 178, 179, 180, 50, 0, 0, 0, 181, 182, 183,
- 0, 0, 184, 0, 0, 51, 52, 53, 76, 0,
- 0, 0, 54, 55, 0, 0, 56, 0, 16, 0,
- 17, 18, 19, 20, 21, 22, 23, 0, 24, 25,
- 26, 27, 28, 0, 29, 30, 31, 32, 33, 34,
- 0, 0, 0, 0, 35, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 36, 0,
- 37, 38, 39, 40, 41, 42, 0, -163, 0, 0,
- 43, 44, 45, 46, 47, 48, 186, 49, 187, -163,
- 0, 0, 0, 50, 0, 0, 0, -163, 0, 0,
- 0, 0, 0, 0, 0, 51, 52, 53, 0, 0,
- 0, 0, 54, 55, 0, -63, 56, -163, -163, -163,
- -163, 0, 0, 0, -163, 0, -163, 0, 0, -163,
- 0, 0, 0, 0, 0, 0, -163, -163, -163, -163,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- -163, -163, -163, -194, -163, -163, -163, -163, -163, -163,
- -163, -163, -163, -163, -163, -194, 0, 0, 0, -163,
- -163, -163, 0, -194, -163, -163, 0, 0, 0, 0,
- 0, 0, 0, 168, 169, 170, 171, 0, 0, 0,
- 0, 0, 0, -194, -194, -194, -194, 0, 0, 0,
- -194, 0, -194, 0, 0, -194, 0, 0, 177, 178,
- 179, 180, -194, -194, -194, -194, 181, 182, 183, 0,
- 0, 184, 0, 0, 0, 0, -194, -194, -194, 0,
- -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
- -194, 0, 0, 0, 0, -194, -194, -194, 0, 0,
- -194, -194, 74, 0, 16, 0, 17, 18, 19, 20,
- 21, 22, 23, 0, 130, 25, 26, 27, 28, 108,
- 29, 30, 31, 32, 33, 34, 0, 0, 0, 0,
- 35, 0, 0, 0, 0, 0, 0, 0, 168, 169,
- 170, 171, 0, 0, 36, 0, 37, 38, 39, 40,
- 41, 42, 0, 0, 0, 0, 43, 44, 45, 46,
- 47, 48, 0, 49, 178, 179, 180, 0, 0, 50,
- 0, 181, 182, 183, 0, 0, 184, 0, 0, 0,
- 0, 51, 52, 53, 0, 0, 0, 0, 54, 55,
- 0, 74, 56, 16, 0, 17, 18, 19, 20, 21,
- 22, 23, 0, 24, 25, 26, 27, 28, 0, 29,
- 30, 31, 32, 33, 34, 0, 0, 0, 0, 35,
- 0, 0, 0, 0, 0, 0, 168, 169, 170, 171,
- 0, 0, 0, 36, 0, 37, 38, 39, 40, 41,
+ 43, 44, 45, 46, 47, 48, 49, 0, 0, 453,
+ 0, 0, 0, 0, 50, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 51, 52, 53, 0,
+ 0, 76, 0, 54, 55, 0, 0, 56, 91, 74,
+ 0, 16, 0, 17, 18, 19, 20, 21, 22, 23,
+ 77, 0, 0, 24, 25, 26, 27, 28, 0, 29,
+ 30, 31, 32, 33, 34, 78, 96, 79, 80, 35,
+ 81, 82, 83, 84, 85, 86, 0, 0, 0, 87,
+ 88, 89, 90, 36, 0, 37, 38, 39, 40, 41,
42, 0, 0, 0, 0, 43, 44, 45, 46, 47,
- 48, 0, 49, 179, 180, 0, 0, 0, 50, 181,
- 182, 183, 0, 0, 184, 0, 0, 0, 0, 0,
- 51, 52, 53, 0, 0, 0, 0, 54, 55, 0,
- 74, 56, 16, 0, 17, 18, 19, 20, 21, 22,
- 23, 0, 136, 25, 26, 27, 28, 0, 29, 30,
- 31, 32, 33, 34, 0, 0, 0, 0, 35, 210,
- 211, 212, 213, 0, 0, 0, 214, 0, 215, 0,
- 0, 0, 36, 0, 37, 38, 39, 40, 41, 42,
- 0, 0, 0, 0, 43, 44, 45, 46, 47, 48,
- 0, 49, 158, 159, 160, 0, 0, 50, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,
- 52, 53, 0, 0, 0, 0, 54, 55, 0, 0,
- 56, 16, 103, 17, 18, 19, 20, 21, 22, 23,
- 0, 24, 25, 26, 27, 28, 0, 29, 30, 31,
- 32, 33, 34, 0, 0, 0, 0, 35, 0, 0,
+ 48, 49, 0, 0, 0, 0, 0, 0, 0, 50,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 36, 0, 37, 38, 39, 40, 41, 42, 0,
- 0, 0, 0, 43, 44, 45, 46, 47, 48, 0,
- 49, 0, 0, 0, 0, 0, 50, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 51, 52,
- 53, 0, 0, 0, 0, 54, 55, 0, 16, 56,
- 17, 18, 19, 20, 21, 22, 23, 140, 24, 25,
+ 0, 51, 52, 53, 0, 0, 76, 0, 54, 55,
+ 0, 0, 56, 91, 74, 0, 16, 0, 17, 18,
+ 19, 20, 21, 22, 23, 77, 0, 0, 24, 25,
26, 27, 28, 0, 29, 30, 31, 32, 33, 34,
- 0, 0, 0, 0, 35, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 36, 0,
+ 78, 0, 79, 80, 35, 81, 82, 83, 84, 85,
+ 86, 0, 0, 0, 87, 88, 89, 90, 36, 0,
37, 38, 39, 40, 41, 42, 0, 0, 0, 0,
- 43, 44, 45, 46, 47, 48, 0, 49, 0, 0,
- 0, 0, 0, 50, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 51, 52, 53, 0, 0,
- 0, 0, 54, 55, 0, 16, 56, 17, 18, 19,
- 20, 21, 22, 23, 0, 24, 25, 26, 27, 28,
- 0, 29, 30, 31, 32, 33, 34, 0, 0, 0,
- 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 36, 0, 37, 38, 39,
- 40, 41, 42, 0, 0, 0, 0, 43, 44, 45,
- 46, 47, 48, 0, 49, 0, 0, 0, 0, 0,
- 50, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 51, 52, 53, 0, 0, 0, 0, 54,
- 55, 0, 156, 56, 16, 0, 17, 18, 19, 20,
- 21, 22, 23, 0, 24, 25, 26, 27, 28, 0,
+ 43, 44, 45, 46, 47, 48, 49, 0, 0, 0,
+ 0, 0, 0, 0, 50, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 51, 52, 53, 76,
+ 0, 0, 0, 54, 55, 0, 0, 56, 91, 16,
+ 0, 17, 18, 19, 20, 21, 22, 23, -68, 0,
+ 0, 24, 25, 26, 27, 28, 0, 29, 30, 31,
+ 32, 33, 34, 0, 0, 0, 0, 35, 0, 0,
+ 0, 0, 0, 0, 0, 168, 169, 170, 171, 0,
+ 0, 36, 0, 37, 38, 39, 40, 41, 42, 0,
+ 0, 0, 0, 43, 44, 45, 46, 47, 48, 49,
+ 176, 177, 178, 179, 180, 0, 0, 50, 0, 181,
+ 182, 183, 0, 0, 184, 0, 0, 0, 0, 51,
+ 52, 53, 76, 0, 0, 0, 54, 55, 0, 0,
+ 56, 0, 16, 0, 17, 18, 19, 20, 21, 22,
+ 23, 0, 0, 0, 24, 25, 26, 27, 28, 0,
29, 30, 31, 32, 33, 34, 0, 0, 0, 0,
35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 36, 0, 37, 38, 39, 40,
- 41, 42, 0, 0, 0, 0, 43, 44, 45, 46,
- 47, 48, 0, 49, 0, 0, 0, 0, 0, 50,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 51, 52, 53, 0, 0, 0, 0, 54, 55,
- 0, 229, 56, 16, 0, 17, 18, 19, 20, 21,
- 22, 23, 0, 24, 25, 26, 27, 28, 0, 29,
+ 41, 42, 0, 0, -169, 0, 43, 44, 45, 46,
+ 47, 48, 49, 186, 0, 187, -169, 0, 0, 0,
+ 50, 0, 0, 0, -169, 0, 0, 0, 0, 0,
+ 0, 0, 51, 52, 53, 168, 169, 170, 171, 54,
+ 55, 0, -68, 56, 0, 0, -169, -169, -169, -169,
+ 0, 0, 0, -169, 0, -169, 0, 0, -169, 0,
+ 0, 177, 178, 179, 180, -169, -169, -169, -169, 181,
+ 182, 183, 0, 0, 184, 170, 171, 0, 0, 0,
+ -169, -169, -169, -201, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -201, 0, 0, 0, -169,
+ -169, -169, 180, -201, -169, -169, 0, 181, 182, 183,
+ 0, 0, 184, 0, 168, 169, 170, 171, 0, 0,
+ 0, 0, 0, 0, 0, -201, -201, -201, -201, 0,
+ 0, 0, -201, 0, -201, 0, 0, -201, 0, 0,
+ 0, 178, 179, 180, -201, -201, -201, -201, 181, 182,
+ 183, 0, 0, 184, 0, 0, 0, 0, 0, -201,
+ -201, -201, 0, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, 0, 0, 0, 0, -201, -201,
+ -201, 0, 0, -201, -201, 74, 0, 16, 0, 17,
+ 18, 19, 20, 21, 22, 23, 0, 0, 0, 129,
+ 25, 26, 27, 28, 107, 29, 30, 31, 32, 33,
+ 34, 0, 0, 0, 0, 35, 0, 0, 0, 0,
+ 0, 0, 168, 169, 170, 171, 0, 0, 0, 36,
+ 0, 37, 38, 39, 40, 41, 42, 0, 0, 0,
+ 0, 43, 44, 45, 46, 47, 48, 49, 0, 0,
+ 179, 180, 0, 0, 0, 50, 181, 182, 183, 0,
+ 0, 184, 0, 0, 0, 0, 0, 51, 52, 53,
+ 0, 0, 0, 0, 54, 55, 0, 74, 56, 16,
+ 0, 17, 18, 19, 20, 21, 22, 23, 0, 0,
+ 0, 135, 25, 26, 27, 28, 136, 29, 30, 31,
+ 32, 33, 34, 0, 0, 0, 0, 35, 0, 0,
+ 0, 0, 0, 0, -202, 0, 170, 171, 0, 0,
+ 0, 36, 0, 37, 38, 39, 40, 41, 42, 0,
+ 0, 0, 0, 43, 44, 45, 46, 47, 48, 49,
+ 0, 0, 179, 180, 0, 0, 0, 50, 181, 182,
+ 183, 0, 0, 184, 0, 0, 0, 0, 0, 51,
+ 52, 53, 0, 0, 0, 0, 54, 55, 0, 74,
+ 56, 16, 0, 17, 18, 19, 20, 21, 22, 23,
+ 0, 0, 0, 24, 25, 26, 27, 28, 0, 29,
30, 31, 32, 33, 34, 0, 0, 0, 0, 35,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 209, 210, 211, 212, 0, 0, 0, 213, 0, 214,
0, 0, 0, 36, 0, 37, 38, 39, 40, 41,
42, 0, 0, 0, 0, 43, 44, 45, 46, 47,
- 48, 0, 49, 0, 0, 0, 0, 0, 50, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 51, 52, 53, 0, 0, 0, 0, 54, 55, 0,
- 239, 56, 16, 0, 17, 18, 19, 20, 21, 22,
- 23, 0, 24, 25, 26, 27, 28, 0, 29, 30,
- 31, 32, 33, 34, 0, 0, 0, 0, 35, 0,
+ 48, 49, 0, 0, 160, 161, 162, 0, 0, 50,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 36, 0, 37, 38, 39, 40, 41, 42,
- 0, 0, 0, 0, 43, 44, 45, 46, 47, 48,
- 0, 49, 0, 0, 0, 0, 0, 50, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,
- 52, 53, 0, 0, 0, 0, 54, 55, 0, 252,
- 56, 16, 0, 17, 18, 19, 20, 21, 22, 23,
+ 0, 51, 52, 53, 0, 0, 0, 0, 54, 55,
+ 0, 0, 56, 16, 102, 17, 18, 19, 20, 21,
+ 22, 23, 0, 0, 0, 24, 25, 26, 27, 28,
+ 0, 29, 30, 31, 32, 33, 34, 0, 0, 0,
+ 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 36, 0, 37, 38, 39,
+ 40, 41, 42, 0, 0, 0, 0, 43, 44, 45,
+ 46, 47, 48, 49, 0, 0, 0, 0, 0, 0,
+ 0, 50, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 51, 52, 53, 0, 0, 0, 0,
+ 54, 55, 0, 16, 56, 17, 18, 19, 20, 21,
+ 22, 23, 141, 0, 0, 24, 25, 26, 27, 28,
+ 0, 29, 30, 31, 32, 33, 34, 0, 0, 0,
+ 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 36, 0, 37, 38, 39,
+ 40, 41, 42, 0, 0, 0, 0, 43, 44, 45,
+ 46, 47, 48, 49, 0, 0, 0, 0, 0, 0,
+ 0, 50, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 51, 52, 53, 0, 0, 0, 0,
+ 54, 55, 0, 16, 56, 17, 18, 19, 20, 21,
+ 22, 23, 0, 0, 0, 24, 25, 26, 27, 28,
+ 0, 29, 30, 31, 32, 33, 34, 0, 0, 0,
+ 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 36, 0, 37, 38, 39,
+ 40, 41, 42, 0, 0, 0, 0, 43, 44, 45,
+ 46, 47, 48, 49, 0, 0, 0, 0, 0, 0,
+ 0, 50, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 51, 52, 53, 0, 0, 0, 0,
+ 54, 55, 0, 158, 56, 16, 0, 17, 18, 19,
+ 20, 21, 22, 23, 0, 0, 0, 24, 25, 26,
+ 27, 28, 0, 29, 30, 31, 32, 33, 34, 0,
+ 0, 0, 0, 35, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 36, 0, 37,
+ 38, 39, 40, 41, 42, 0, 0, 0, 0, 43,
+ 44, 45, 46, 47, 48, 49, 0, 0, 0, 0,
+ 0, 0, 0, 50, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 51, 52, 53, 0, 0,
+ 0, 0, 54, 55, 0, 228, 56, 16, 0, 17,
+ 18, 19, 20, 21, 22, 23, 0, 0, 0, 24,
+ 25, 26, 27, 28, 0, 29, 30, 31, 32, 33,
+ 34, 0, 0, 0, 0, 35, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
+ 0, 37, 38, 39, 40, 41, 42, 0, 0, 0,
+ 0, 43, 44, 45, 46, 47, 48, 49, 0, 0,
+ 0, 0, 0, 0, 0, 50, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 51, 52, 53,
+ 0, 0, 0, 0, 54, 55, 0, 238, 56, 16,
+ 0, 17, 18, 19, 20, 21, 22, 23, 0, 0,
0, 24, 25, 26, 27, 28, 0, 29, 30, 31,
32, 33, 34, 0, 0, 0, 0, 35, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 36, 0, 37, 38, 39, 40, 41, 42, 0,
- 0, 0, 0, 43, 44, 45, 46, 47, 48, 0,
- 49, 0, 0, 0, 0, 0, 50, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 51, 52,
- 53, 0, 0, 0, 0, 54, 55, 0, 275, 56,
- 16, 0, 17, 18, 19, 20, 21, 22, 23, 0,
- 24, 25, 26, 27, 28, 0, 29, 30, 31, 32,
- 33, 34, 0, 0, 0, 0, 35, 0, 0, 0,
+ 0, 0, 0, 43, 44, 45, 46, 47, 48, 49,
+ 0, 0, 0, 0, 0, 0, 0, 50, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,
+ 52, 53, 0, 0, 0, 0, 54, 55, 0, 250,
+ 56, 16, 0, 17, 18, 19, 20, 21, 22, 23,
+ 0, 0, 0, 24, 25, 26, 27, 28, 0, 29,
+ 30, 31, 32, 33, 34, 0, 0, 0, 0, 35,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 36, 0, 37, 38, 39, 40, 41, 42, 0, 0,
- 0, 0, 43, 44, 45, 46, 47, 48, 0, 49,
- 0, 0, 0, 0, 0, 50, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 51, 52, 53,
- 0, 0, 0, 0, 54, 55, 0, 316, 56, 16,
- 0, 17, 18, 19, 20, 21, 22, 23, 0, 24,
- 25, 26, 27, 28, 0, 29, 30, 31, 32, 33,
- 34, 0, 0, 0, 0, 35, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
- 0, 37, 38, 39, 40, 41, 42, 0, 0, 0,
- 0, 43, 44, 45, 46, 47, 48, 0, 49, 0,
- 0, 0, 0, 0, 50, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 51, 52, 53, 0,
- 0, 0, 0, 54, 55, 0, 318, 56, 16, 0,
- 17, 18, 19, 20, 21, 22, 23, 0, 24, 25,
- 26, 27, 28, 0, 29, 30, 31, 32, 33, 34,
- 0, 0, 0, 0, 35, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 36, 0,
- 37, 38, 39, 40, 41, 42, 0, 0, 0, 0,
- 43, 44, 45, 46, 47, 48, 0, 49, 0, 0,
- 0, 0, 0, 50, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 51, 52, 53, 0, 0,
- 0, 0, 54, 55, 0, 332, 56, 16, 0, 17,
- 18, 19, 20, 21, 22, 23, 0, 24, 25, 26,
+ 0, 0, 0, 36, 0, 37, 38, 39, 40, 41,
+ 42, 0, 0, 0, 0, 43, 44, 45, 46, 47,
+ 48, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 51, 52, 53, 0, 0, 0, 0, 54, 55,
+ 0, 273, 56, 16, 0, 17, 18, 19, 20, 21,
+ 22, 23, 0, 0, 0, 24, 25, 26, 27, 28,
+ 0, 29, 30, 31, 32, 33, 34, 0, 0, 0,
+ 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 36, 0, 37, 38, 39,
+ 40, 41, 42, 0, 0, 0, 0, 43, 44, 45,
+ 46, 47, 48, 49, 0, 0, 0, 0, 0, 0,
+ 0, 50, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 51, 52, 53, 0, 0, 0, 0,
+ 54, 55, 0, 312, 56, 16, 0, 17, 18, 19,
+ 20, 21, 22, 23, 0, 0, 0, 24, 25, 26,
27, 28, 0, 29, 30, 31, 32, 33, 34, 0,
0, 0, 0, 35, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 36, 0, 37,
38, 39, 40, 41, 42, 0, 0, 0, 0, 43,
- 44, 45, 46, 47, 48, 0, 49, 0, 0, 0,
- 167, 0, 50, 0, 0, 0, 0, 168, 169, 170,
- 171, 0, 0, 0, 51, 52, 53, 0, 0, 0,
- 0, 54, 55, 0, 0, 56, 172, 173, 329, 174,
- 175, 176, 177, 178, 179, 180, 0, 0, 0, 167,
- 181, 182, 183, 0, 0, 184, 168, 169, 170, 171,
+ 44, 45, 46, 47, 48, 49, 0, 0, 0, 0,
+ 0, 0, 0, 50, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 51, 52, 53, 0, 0,
+ 0, 0, 54, 55, 0, 314, 56, 16, 0, 17,
+ 18, 19, 20, 21, 22, 23, 0, 0, 0, 24,
+ 25, 26, 27, 28, 0, 29, 30, 31, 32, 33,
+ 34, 0, 0, 0, 0, 35, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
+ 0, 37, 38, 39, 40, 41, 42, 0, 0, 0,
+ 0, 43, 44, 45, 46, 47, 48, 49, 0, 0,
+ 0, 0, 0, 0, 0, 50, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 51, 52, 53,
+ 0, 0, 0, 0, 54, 55, 0, 327, 56, 16,
+ 0, 17, 18, 19, 20, 21, 22, 23, 0, 0,
+ 0, 24, 25, 26, 27, 28, 0, 29, 30, 31,
+ 32, 33, 34, 0, 0, 0, 0, 35, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 172, 173, 0, 174, 175,
- 176, 177, 178, 179, 180, 0, 0, 0, 167, 181,
- 182, 183, 0, 0, 184, 168, 169, 170, 171, 0,
+ 0, 36, 0, 37, 38, 39, 40, 41, 42, 0,
+ 0, 0, 0, 43, 44, 45, 46, 47, 48, 49,
+ 0, 0, 0, 0, 167, 0, 0, 50, 0, 0,
+ 0, 168, 169, 170, 171, 0, 0, 0, 0, 51,
+ 52, 53, 0, 0, 0, 0, 54, 55, 0, 0,
+ 56, 172, 173, 324, 174, 175, 176, 177, 178, 179,
+ 180, 0, 0, 0, 167, 181, 182, 183, 0, 0,
+ 184, 168, 169, 170, 171, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 173, 0, 174, 175, 176,
- 177, 178, 179, 180, 0, 0, 0, -195, 181, 182,
- 183, 0, 0, 184, 168, 169, 170, 171, 0, 0,
+ 0, 172, 173, 0, 174, 175, 176, 177, 178, 179,
+ 180, 0, 0, 0, 167, 181, 182, 183, 0, 0,
+ 184, 168, 169, 170, 171, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 174, 175, 176, 177,
- 178, 179, 180, 0, 0, 0, 0, 181, 182, 183,
- 0, 0, 184
+ 0, 0, 173, 0, 174, 175, 176, 177, 178, 179,
+ 180, 0, 0, 0, 0, 181, 182, 183, 0, 0,
+ 184
};
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-391))
+
+#define yytable_value_is_error(yytable_value) \
+ ((yytable_value) == (-202))
+
static const yytype_int16 yycheck[] =
{
- 9, 42, 99, 68, 127, 116, 0, 16, 15, 50,
- 11, 294, 10, 11, 12, 27, 409, 74, 83, 84,
- 85, 86, 87, 88, 89, 9, 19, 20, 21, 22,
- 23, 142, 25, 26, 21, 9, 45, 11, 15, 16,
- 17, 15, 15, 41, 12, 387, 44, 56, 22, 42,
- 43, 44, 12, 446, 27, 48, 20, 21, 22, 23,
- 77, 25, 26, 11, 343, 294, 12, 82, 297, 9,
- 9, 136, 11, 99, 139, 116, 91, 118, 42, 43,
- 20, 98, 9, 99, 11, 364, 428, 99, 27, 9,
- 286, 11, 90, 134, 87, 68, 97, 99, 221, 97,
- 27, 142, 298, 101, 102, 73, 74, 75, 12, 99,
- 119, 20, 12, 73, 74, 75, 77, 126, 127, 9,
- 9, 290, 99, 292, 122, 99, 99, 73, 74, 75,
- 20, 12, 361, 362, 127, 144, 9, 202, 11, 196,
- 197, 198, 199, 200, 201, 21, 203, 204, 46, 158,
- 159, 160, 20, 162, 163, 438, 12, 166, 99, 12,
- 99, 390, 98, 127, 73, 74, 75, 44, 45, 73,
- 74, 75, 99, 73, 74, 75, 185, 186, 187, 188,
- 189, 190, 24, 98, 191, 73, 74, 75, 73, 74,
- 75, 184, 73, 74, 75, 10, 71, 11, 21, 310,
- 20, 210, 211, 212, 213, 214, 215, 436, 273, 207,
- 98, 334, 221, 17, 18, 21, 21, 73, 74, 75,
- 73, 74, 75, 232, 20, 234, 235, 71, 32, 9,
- 24, 98, 36, 10, 243, 15, 11, 41, 295, 20,
- 44, 21, 75, 47, 99, 49, 26, 51, 52, 53,
- 54, 55, 21, 73, 74, 75, 15, 98, 20, 24,
- 269, 270, 10, 272, 40, 41, 42, 43, 10, 310,
- 10, 47, 10, 49, 385, 21, 98, 73, 74, 75,
- 289, 290, 291, 292, 282, 294, 284, 344, 297, 354,
- 98, 98, 73, 74, 75, 20, 98, 73, 74, 75,
- 293, 73, 74, 75, 389, 59, 391, 61, 62, 411,
- 395, 73, 74, 75, 312, 324, 98, 419, 420, 20,
- 405, 406, 98, 10, 98, 334, 98, 429, 413, 414,
- 93, 94, 86, 87, 97, 437, 9, 422, 92, 93,
- 94, 426, 98, 97, 385, 98, 98, 98, 73, 74,
- 75, 20, 361, 362, 73, 74, 75, 161, 423, 444,
- 445, 61, 62, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 20, 98,
- 98, 390, 98, 392, 12, 383, 86, 87, 59, 60,
- 61, 62, 92, 93, 94, 97, 403, 97, 396, 438,
- 392, 35, 48, 73, 74, 75, 73, 74, 75, 73,
- 74, 75, 48, 206, 421, 86, 87, 396, -1, 417,
- -1, 92, 93, 94, 0, 1, 97, 436, 98, -1,
- -1, 98, -1, 9, 98, 11, 434, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- -1, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, -1, -1,
- 61, 47, 48, 49, 50, 51, -1, 53, 54, 55,
- 56, 57, 58, 73, 74, 75, -1, 63, 64, 65,
- 66, 67, 68, 69, 70, -1, 87, -1, -1, -1,
- 76, 92, 93, 94, -1, -1, 97, -1, 98, -1,
- -1, -1, 88, 89, 90, -1, -1, 0, 1, 95,
- 96, -1, -1, 99, 100, 329, 9, -1, 11, -1,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, -1, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, -1, -1, -1, 47, 48, 49, 50, 51, -1,
- 53, 54, 55, 56, 57, 58, 73, 74, 75, -1,
- 63, 64, 65, 66, 67, 68, 69, 70, -1, 73,
- 74, 75, 87, 76, -1, -1, -1, 92, 93, 94,
- -1, 98, 97, -1, -1, 88, 89, 90, -1, -1,
- 1, -1, 95, 96, 98, -1, 99, 100, 9, 10,
- 11, -1, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, -1, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, -1, -1, -1, 47, 48, 49, 50,
- 51, -1, 53, 54, 55, 56, 57, 58, -1, -1,
- -1, -1, 63, 64, 65, 66, 67, 68, 69, 70,
- -1, -1, -1, -1, -1, 76, 3, 4, 5, 6,
- 7, 8, -1, -1, -1, -1, -1, 88, 89, 90,
- -1, -1, 1, -1, 95, 96, -1, -1, 99, 100,
- 9, 10, 11, -1, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, -1, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, -1, -1, -1, 47, 48,
- 49, 50, 51, -1, 53, 54, 55, 56, 57, 58,
- -1, -1, -1, -1, 63, 64, 65, 66, 67, 68,
- 69, 70, -1, 92, 93, 94, -1, 76, 97, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
- 89, 90, -1, -1, 1, -1, 95, 96, -1, -1,
- 99, 100, 9, 10, 11, -1, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, -1,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, -1, -1, -1,
- 47, 48, 49, 50, 51, -1, 53, 54, 55, 56,
- 57, 58, -1, -1, -1, -1, 63, 64, 65, 66,
- 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
+ 10, 11, 12, 15, 9, 291, 115, 126, 42, 15,
+ 291, 16, 293, 294, 404, 9, 50, 11, 15, 16,
+ 17, 19, 20, 21, 22, 23, 9, 25, 26, 11,
+ 9, 41, 11, 46, 44, 144, 20, 384, 12, 11,
+ 45, 74, 80, 0, 42, 43, 44, 76, 77, 78,
+ 48, 56, 20, 21, 22, 23, 20, 25, 26, 20,
+ 12, 451, 26, 101, 70, 12, 9, 80, 12, 96,
+ 97, 12, 101, 100, 42, 43, 357, 20, 12, 426,
+ 90, 115, 9, 12, 11, 102, 96, 9, 15, 87,
+ 100, 101, 76, 77, 78, 23, 102, 24, 20, 133,
+ 28, 220, 76, 77, 78, 102, 387, 9, 102, 11,
+ 144, 121, 12, 118, 96, 76, 77, 78, 80, 9,
+ 125, 126, 102, 102, 76, 77, 78, 102, 126, 76,
+ 77, 78, 76, 77, 78, 76, 77, 78, 76, 77,
+ 78, 146, 76, 77, 78, 20, 102, 76, 77, 78,
+ 436, 102, 9, 434, 11, 160, 161, 162, 126, 164,
+ 165, 166, 20, 196, 197, 198, 199, 200, 201, 23,
+ 203, 204, 287, 26, 289, 102, 76, 77, 78, 191,
+ 185, 186, 187, 188, 189, 190, 184, 221, 102, 76,
+ 77, 78, 76, 77, 78, 20, 206, 306, 20, 46,
+ 47, 76, 77, 78, 209, 210, 211, 212, 213, 214,
+ 329, 102, 17, 18, 101, 220, 102, 101, 76, 77,
+ 78, 102, 102, 102, 9, 48, 231, 32, 233, 234,
+ 15, 36, 61, 62, 63, 64, 41, 242, 23, 44,
+ 20, 102, 47, 28, 49, 101, 51, 52, 53, 54,
+ 55, 76, 77, 78, 76, 77, 78, 102, 101, 292,
+ 89, 90, 267, 268, 102, 270, 95, 96, 97, 102,
+ 280, 100, 306, 382, 76, 77, 78, 76, 77, 78,
+ 10, 286, 287, 288, 289, 63, 291, 11, 293, 294,
+ 72, 386, 290, 388, 23, 23, 391, 392, 308, 101,
+ 72, 54, 101, 101, 337, 400, 401, 340, 61, 62,
+ 63, 64, 90, 408, 102, 320, 10, 95, 96, 97,
+ 26, 11, 100, 78, 329, 420, 102, 23, 406, 424,
+ 21, 84, 85, 86, 87, 88, 89, 90, 15, 417,
+ 418, 101, 95, 96, 97, 26, 10, 100, 382, 427,
+ 10, 23, 357, 448, 449, 10, 10, 435, 163, 101,
+ 101, 101, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 63, 64, 101,
+ 20, 102, 387, 101, 389, 101, 398, 397, 76, 77,
+ 78, 101, 42, 43, 44, 45, 76, 77, 78, 49,
+ 10, 51, 101, 89, 90, 415, 20, 419, 9, 95,
+ 96, 97, 101, 101, 100, 20, 74, 76, 77, 78,
+ 20, 101, 432, 101, 22, 73, 76, 77, 78, 434,
+ 0, 1, 102, 101, 446, 101, 12, 436, 35, 9,
+ 450, 11, 101, 13, 14, 15, 16, 17, 18, 19,
+ 20, 101, 96, 23, 24, 25, 26, 27, 389, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 193, 339, -1, 49,
+ 50, 51, 52, 53, 380, 55, 56, 57, 58, 59,
+ 60, 76, 77, 78, 48, 65, 66, 67, 68, 69,
+ 70, 71, 48, 95, 96, 97, -1, 90, 100, 79,
+ -1, -1, 95, 96, 97, -1, 101, 100, -1, 324,
+ -1, 91, 92, 93, -1, 0, 1, -1, 98, 99,
+ -1, -1, 102, 103, 9, -1, 11, -1, 13, 14,
+ 15, 16, 17, 18, 19, 20, -1, -1, 23, 24,
+ 25, 26, 27, -1, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, -1, -1, -1, 49, 50, 51, 52, 53, -1,
+ 55, 56, 57, 58, 59, 60, -1, -1, -1, -1,
+ 65, 66, 67, 68, 69, 70, 71, 3, 4, 5,
+ 6, 7, 8, -1, 79, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 91, 92, 93, -1,
+ -1, 1, -1, 98, 99, -1, -1, 102, 103, 9,
+ 10, 11, -1, 13, 14, 15, 16, 17, 18, 19,
+ 20, -1, -1, 23, 24, 25, 26, 27, -1, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, -1, -1, -1, 49,
+ 50, 51, 52, 53, -1, 55, 56, 57, 58, 59,
+ 60, -1, -1, -1, -1, 65, 66, 67, 68, 69,
+ 70, 71, -1, -1, -1, -1, -1, -1, -1, 79,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, 89, 90, -1, -1, 1, -1, 95, 96,
- -1, -1, 99, 100, 9, -1, 11, -1, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, -1, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, -1,
- -1, -1, 47, 48, 49, 50, 51, -1, 53, 54,
- 55, 56, 57, 58, -1, -1, -1, -1, 63, 64,
- 65, 66, 67, 68, 69, 70, -1, -1, -1, -1,
- -1, 76, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 88, 89, 90, -1, -1, 1, -1,
- 95, 96, -1, -1, 99, 100, 9, -1, 11, -1,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, -1, 27, 28, 29, 30, 31, 32,
- 33, -1, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, -1, -1, -1, 47, 48, 49, 50, 51, -1,
- 53, 54, 55, 56, 57, 58, -1, -1, -1, -1,
- 63, 64, 65, 66, 67, 68, 69, 70, -1, -1,
- -1, -1, -1, 76, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, 89, 90, 1, -1,
- -1, -1, 95, 96, 61, 62, 99, 100, 11, -1,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, -1, 27, 28, 29, 30, 31, 32,
- 87, -1, -1, -1, 37, 92, 93, 94, -1, -1,
- 97, -1, -1, -1, 59, 60, 61, 62, 51, -1,
- 53, 54, 55, 56, 57, 58, -1, -1, -1, -1,
- 63, 64, 65, 66, 67, 68, -1, 70, 83, 84,
- 85, 86, 87, 76, -1, -1, -1, 92, 93, 94,
- -1, -1, 97, -1, -1, 88, 89, 90, 1, -1,
- -1, -1, 95, 96, -1, -1, 99, -1, 11, -1,
- 13, 14, 15, 16, 17, 18, 19, -1, 21, 22,
- 23, 24, 25, -1, 27, 28, 29, 30, 31, 32,
- -1, -1, -1, -1, 37, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 51, -1,
- 53, 54, 55, 56, 57, 58, -1, 0, -1, -1,
- 63, 64, 65, 66, 67, 68, 9, 70, 11, 12,
- -1, -1, -1, 76, -1, -1, -1, 20, -1, -1,
- -1, -1, -1, -1, -1, 88, 89, 90, -1, -1,
- -1, -1, 95, 96, -1, 98, 99, 40, 41, 42,
- 43, -1, -1, -1, 47, -1, 49, -1, -1, 52,
- -1, -1, -1, -1, -1, -1, 59, 60, 61, 62,
+ -1, 91, 92, 93, -1, -1, 1, -1, 98, 99,
+ -1, -1, 102, 103, 9, 10, 11, -1, 13, 14,
+ 15, 16, 17, 18, 19, 20, -1, -1, 23, 24,
+ 25, 26, 27, -1, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, -1, -1, -1, 49, 50, 51, 52, 53, -1,
+ 55, 56, 57, 58, 59, 60, -1, -1, -1, -1,
+ 65, 66, 67, 68, 69, 70, 71, -1, -1, -1,
+ -1, -1, -1, -1, 79, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 91, 92, 93, -1,
+ -1, 1, -1, 98, 99, -1, -1, 102, 103, 9,
+ 10, 11, -1, 13, 14, 15, 16, 17, 18, 19,
+ 20, -1, -1, 23, 24, 25, 26, 27, -1, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, -1, -1, -1, 49,
+ 50, 51, 52, 53, -1, 55, 56, 57, 58, 59,
+ 60, -1, -1, -1, -1, 65, 66, 67, 68, 69,
+ 70, 71, -1, -1, -1, -1, -1, -1, -1, 79,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 73, 74, 75, 0, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 12, -1, -1, -1, 92,
- 93, 94, -1, 20, 97, 98, -1, -1, -1, -1,
- -1, -1, -1, 59, 60, 61, 62, -1, -1, -1,
- -1, -1, -1, 40, 41, 42, 43, -1, -1, -1,
- 47, -1, 49, -1, -1, 52, -1, -1, 84, 85,
- 86, 87, 59, 60, 61, 62, 92, 93, 94, -1,
- -1, 97, -1, -1, -1, -1, 73, 74, 75, -1,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, -1, -1, -1, -1, 92, 93, 94, -1, -1,
- 97, 98, 9, -1, 11, -1, 13, 14, 15, 16,
- 17, 18, 19, -1, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, -1, -1, -1, -1,
- 37, -1, -1, -1, -1, -1, -1, -1, 59, 60,
- 61, 62, -1, -1, 51, -1, 53, 54, 55, 56,
- 57, 58, -1, -1, -1, -1, 63, 64, 65, 66,
- 67, 68, -1, 70, 85, 86, 87, -1, -1, 76,
- -1, 92, 93, 94, -1, -1, 97, -1, -1, -1,
- -1, 88, 89, 90, -1, -1, -1, -1, 95, 96,
- -1, 9, 99, 11, -1, 13, 14, 15, 16, 17,
- 18, 19, -1, 21, 22, 23, 24, 25, -1, 27,
- 28, 29, 30, 31, 32, -1, -1, -1, -1, 37,
- -1, -1, -1, -1, -1, -1, 59, 60, 61, 62,
- -1, -1, -1, 51, -1, 53, 54, 55, 56, 57,
- 58, -1, -1, -1, -1, 63, 64, 65, 66, 67,
- 68, -1, 70, 86, 87, -1, -1, -1, 76, 92,
- 93, 94, -1, -1, 97, -1, -1, -1, -1, -1,
- 88, 89, 90, -1, -1, -1, -1, 95, 96, -1,
- 9, 99, 11, -1, 13, 14, 15, 16, 17, 18,
- 19, -1, 21, 22, 23, 24, 25, -1, 27, 28,
- 29, 30, 31, 32, -1, -1, -1, -1, 37, 40,
- 41, 42, 43, -1, -1, -1, 47, -1, 49, -1,
- -1, -1, 51, -1, 53, 54, 55, 56, 57, 58,
- -1, -1, -1, -1, 63, 64, 65, 66, 67, 68,
- -1, 70, 73, 74, 75, -1, -1, 76, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
- 89, 90, -1, -1, -1, -1, 95, 96, -1, -1,
- 99, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- -1, 21, 22, 23, 24, 25, -1, 27, 28, 29,
- 30, 31, 32, -1, -1, -1, -1, 37, -1, -1,
+ -1, 91, 92, 93, -1, -1, 1, -1, 98, 99,
+ -1, -1, 102, 103, 9, -1, 11, -1, 13, 14,
+ 15, 16, 17, 18, 19, 20, -1, -1, 23, 24,
+ 25, 26, 27, -1, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, -1, -1, -1, 49, 50, 51, 52, 53, -1,
+ 55, 56, 57, 58, 59, 60, -1, -1, -1, -1,
+ 65, 66, 67, 68, 69, 70, 71, -1, -1, 74,
+ -1, -1, -1, -1, 79, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 91, 92, 93, -1,
+ -1, 1, -1, 98, 99, -1, -1, 102, 103, 9,
+ -1, 11, -1, 13, 14, 15, 16, 17, 18, 19,
+ 20, -1, -1, 23, 24, 25, 26, 27, -1, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, -1, -1, -1, 49,
+ 50, 51, 52, 53, -1, 55, 56, 57, 58, 59,
+ 60, -1, -1, -1, -1, 65, 66, 67, 68, 69,
+ 70, 71, -1, -1, -1, -1, -1, -1, -1, 79,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 51, -1, 53, 54, 55, 56, 57, 58, -1,
- -1, -1, -1, 63, 64, 65, 66, 67, 68, -1,
- 70, -1, -1, -1, -1, -1, 76, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, 89,
- 90, -1, -1, -1, -1, 95, 96, -1, 11, 99,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, -1, 27, 28, 29, 30, 31, 32,
- -1, -1, -1, -1, 37, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 51, -1,
- 53, 54, 55, 56, 57, 58, -1, -1, -1, -1,
- 63, 64, 65, 66, 67, 68, -1, 70, -1, -1,
- -1, -1, -1, 76, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, 89, 90, -1, -1,
- -1, -1, 95, 96, -1, 11, 99, 13, 14, 15,
- 16, 17, 18, 19, -1, 21, 22, 23, 24, 25,
- -1, 27, 28, 29, 30, 31, 32, -1, -1, -1,
- -1, 37, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 51, -1, 53, 54, 55,
- 56, 57, 58, -1, -1, -1, -1, 63, 64, 65,
- 66, 67, 68, -1, 70, -1, -1, -1, -1, -1,
- 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 88, 89, 90, -1, -1, -1, -1, 95,
- 96, -1, 98, 99, 11, -1, 13, 14, 15, 16,
- 17, 18, 19, -1, 21, 22, 23, 24, 25, -1,
- 27, 28, 29, 30, 31, 32, -1, -1, -1, -1,
- 37, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 51, -1, 53, 54, 55, 56,
- 57, 58, -1, -1, -1, -1, 63, 64, 65, 66,
- 67, 68, -1, 70, -1, -1, -1, -1, -1, 76,
+ -1, 91, 92, 93, -1, -1, 1, -1, 98, 99,
+ -1, -1, 102, 103, 9, -1, 11, -1, 13, 14,
+ 15, 16, 17, 18, 19, 20, -1, -1, 23, 24,
+ 25, 26, 27, -1, 29, 30, 31, 32, 33, 34,
+ 35, -1, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, -1, -1, -1, 49, 50, 51, 52, 53, -1,
+ 55, 56, 57, 58, 59, 60, -1, -1, -1, -1,
+ 65, 66, 67, 68, 69, 70, 71, -1, -1, -1,
+ -1, -1, -1, -1, 79, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 91, 92, 93, 1,
+ -1, -1, -1, 98, 99, -1, -1, 102, 103, 11,
+ -1, 13, 14, 15, 16, 17, 18, 19, 20, -1,
+ -1, 23, 24, 25, 26, 27, -1, 29, 30, 31,
+ 32, 33, 34, -1, -1, -1, -1, 39, -1, -1,
+ -1, -1, -1, -1, -1, 61, 62, 63, 64, -1,
+ -1, 53, -1, 55, 56, 57, 58, 59, 60, -1,
+ -1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
+ 86, 87, 88, 89, 90, -1, -1, 79, -1, 95,
+ 96, 97, -1, -1, 100, -1, -1, -1, -1, 91,
+ 92, 93, 1, -1, -1, -1, 98, 99, -1, -1,
+ 102, -1, 11, -1, 13, 14, 15, 16, 17, 18,
+ 19, -1, -1, -1, 23, 24, 25, 26, 27, -1,
+ 29, 30, 31, 32, 33, 34, -1, -1, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 53, -1, 55, 56, 57, 58,
+ 59, 60, -1, -1, 0, -1, 65, 66, 67, 68,
+ 69, 70, 71, 9, -1, 11, 12, -1, -1, -1,
+ 79, -1, -1, -1, 20, -1, -1, -1, -1, -1,
+ -1, -1, 91, 92, 93, 61, 62, 63, 64, 98,
+ 99, -1, 101, 102, -1, -1, 42, 43, 44, 45,
+ -1, -1, -1, 49, -1, 51, -1, -1, 54, -1,
+ -1, 87, 88, 89, 90, 61, 62, 63, 64, 95,
+ 96, 97, -1, -1, 100, 63, 64, -1, -1, -1,
+ 76, 77, 78, 0, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 12, -1, -1, -1, 95,
+ 96, 97, 90, 20, 100, 101, -1, 95, 96, 97,
+ -1, -1, 100, -1, 61, 62, 63, 64, -1, -1,
+ -1, -1, -1, -1, -1, 42, 43, 44, 45, -1,
+ -1, -1, 49, -1, 51, -1, -1, 54, -1, -1,
+ -1, 88, 89, 90, 61, 62, 63, 64, 95, 96,
+ 97, -1, -1, 100, -1, -1, -1, -1, -1, 76,
+ 77, 78, -1, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
+ 97, -1, -1, 100, 101, 9, -1, 11, -1, 13,
+ 14, 15, 16, 17, 18, 19, -1, -1, -1, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, -1, -1, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 61, 62, 63, 64, -1, -1, -1, 53,
+ -1, 55, 56, 57, 58, 59, 60, -1, -1, -1,
+ -1, 65, 66, 67, 68, 69, 70, 71, -1, -1,
+ 89, 90, -1, -1, -1, 79, 95, 96, 97, -1,
+ -1, 100, -1, -1, -1, -1, -1, 91, 92, 93,
+ -1, -1, -1, -1, 98, 99, -1, 9, 102, 11,
+ -1, 13, 14, 15, 16, 17, 18, 19, -1, -1,
+ -1, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, -1, -1, -1, -1, 39, -1, -1,
+ -1, -1, -1, -1, 61, -1, 63, 64, -1, -1,
+ -1, 53, -1, 55, 56, 57, 58, 59, 60, -1,
+ -1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
+ -1, -1, 89, 90, -1, -1, -1, 79, 95, 96,
+ 97, -1, -1, 100, -1, -1, -1, -1, -1, 91,
+ 92, 93, -1, -1, -1, -1, 98, 99, -1, 9,
+ 102, 11, -1, 13, 14, 15, 16, 17, 18, 19,
+ -1, -1, -1, 23, 24, 25, 26, 27, -1, 29,
+ 30, 31, 32, 33, 34, -1, -1, -1, -1, 39,
+ 42, 43, 44, 45, -1, -1, -1, 49, -1, 51,
+ -1, -1, -1, 53, -1, 55, 56, 57, 58, 59,
+ 60, -1, -1, -1, -1, 65, 66, 67, 68, 69,
+ 70, 71, -1, -1, 76, 77, 78, -1, -1, 79,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 88, 89, 90, -1, -1, -1, -1, 95, 96,
- -1, 98, 99, 11, -1, 13, 14, 15, 16, 17,
- 18, 19, -1, 21, 22, 23, 24, 25, -1, 27,
- 28, 29, 30, 31, 32, -1, -1, -1, -1, 37,
+ -1, 91, 92, 93, -1, -1, -1, -1, 98, 99,
+ -1, -1, 102, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, -1, -1, -1, 23, 24, 25, 26, 27,
+ -1, 29, 30, 31, 32, 33, 34, -1, -1, -1,
+ -1, 39, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 53, -1, 55, 56, 57,
+ 58, 59, 60, -1, -1, -1, -1, 65, 66, 67,
+ 68, 69, 70, 71, -1, -1, -1, -1, -1, -1,
+ -1, 79, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 91, 92, 93, -1, -1, -1, -1,
+ 98, 99, -1, 11, 102, 13, 14, 15, 16, 17,
+ 18, 19, 20, -1, -1, 23, 24, 25, 26, 27,
+ -1, 29, 30, 31, 32, 33, 34, -1, -1, -1,
+ -1, 39, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 53, -1, 55, 56, 57,
+ 58, 59, 60, -1, -1, -1, -1, 65, 66, 67,
+ 68, 69, 70, 71, -1, -1, -1, -1, -1, -1,
+ -1, 79, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 91, 92, 93, -1, -1, -1, -1,
+ 98, 99, -1, 11, 102, 13, 14, 15, 16, 17,
+ 18, 19, -1, -1, -1, 23, 24, 25, 26, 27,
+ -1, 29, 30, 31, 32, 33, 34, -1, -1, -1,
+ -1, 39, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 53, -1, 55, 56, 57,
+ 58, 59, 60, -1, -1, -1, -1, 65, 66, 67,
+ 68, 69, 70, 71, -1, -1, -1, -1, -1, -1,
+ -1, 79, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 91, 92, 93, -1, -1, -1, -1,
+ 98, 99, -1, 101, 102, 11, -1, 13, 14, 15,
+ 16, 17, 18, 19, -1, -1, -1, 23, 24, 25,
+ 26, 27, -1, 29, 30, 31, 32, 33, 34, -1,
+ -1, -1, -1, 39, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 53, -1, 55,
+ 56, 57, 58, 59, 60, -1, -1, -1, -1, 65,
+ 66, 67, 68, 69, 70, 71, -1, -1, -1, -1,
+ -1, -1, -1, 79, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 91, 92, 93, -1, -1,
+ -1, -1, 98, 99, -1, 101, 102, 11, -1, 13,
+ 14, 15, 16, 17, 18, 19, -1, -1, -1, 23,
+ 24, 25, 26, 27, -1, 29, 30, 31, 32, 33,
+ 34, -1, -1, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 53,
+ -1, 55, 56, 57, 58, 59, 60, -1, -1, -1,
+ -1, 65, 66, 67, 68, 69, 70, 71, -1, -1,
+ -1, -1, -1, -1, -1, 79, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 91, 92, 93,
+ -1, -1, -1, -1, 98, 99, -1, 101, 102, 11,
+ -1, 13, 14, 15, 16, 17, 18, 19, -1, -1,
+ -1, 23, 24, 25, 26, 27, -1, 29, 30, 31,
+ 32, 33, 34, -1, -1, -1, -1, 39, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 51, -1, 53, 54, 55, 56, 57,
- 58, -1, -1, -1, -1, 63, 64, 65, 66, 67,
- 68, -1, 70, -1, -1, -1, -1, -1, 76, -1,
+ -1, 53, -1, 55, 56, 57, 58, 59, 60, -1,
+ -1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
+ -1, -1, -1, -1, -1, -1, -1, 79, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
+ 92, 93, -1, -1, -1, -1, 98, 99, -1, 101,
+ 102, 11, -1, 13, 14, 15, 16, 17, 18, 19,
+ -1, -1, -1, 23, 24, 25, 26, 27, -1, 29,
+ 30, 31, 32, 33, 34, -1, -1, -1, -1, 39,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 88, 89, 90, -1, -1, -1, -1, 95, 96, -1,
- 98, 99, 11, -1, 13, 14, 15, 16, 17, 18,
- 19, -1, 21, 22, 23, 24, 25, -1, 27, 28,
- 29, 30, 31, 32, -1, -1, -1, -1, 37, -1,
+ -1, -1, -1, 53, -1, 55, 56, 57, 58, 59,
+ 60, -1, -1, -1, -1, 65, 66, 67, 68, 69,
+ 70, 71, -1, -1, -1, -1, -1, -1, -1, 79,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 51, -1, 53, 54, 55, 56, 57, 58,
- -1, -1, -1, -1, 63, 64, 65, 66, 67, 68,
- -1, 70, -1, -1, -1, -1, -1, 76, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 88,
- 89, 90, -1, -1, -1, -1, 95, 96, -1, 98,
- 99, 11, -1, 13, 14, 15, 16, 17, 18, 19,
- -1, 21, 22, 23, 24, 25, -1, 27, 28, 29,
- 30, 31, 32, -1, -1, -1, -1, 37, -1, -1,
+ -1, 91, 92, 93, -1, -1, -1, -1, 98, 99,
+ -1, 101, 102, 11, -1, 13, 14, 15, 16, 17,
+ 18, 19, -1, -1, -1, 23, 24, 25, 26, 27,
+ -1, 29, 30, 31, 32, 33, 34, -1, -1, -1,
+ -1, 39, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 53, -1, 55, 56, 57,
+ 58, 59, 60, -1, -1, -1, -1, 65, 66, 67,
+ 68, 69, 70, 71, -1, -1, -1, -1, -1, -1,
+ -1, 79, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 91, 92, 93, -1, -1, -1, -1,
+ 98, 99, -1, 101, 102, 11, -1, 13, 14, 15,
+ 16, 17, 18, 19, -1, -1, -1, 23, 24, 25,
+ 26, 27, -1, 29, 30, 31, 32, 33, 34, -1,
+ -1, -1, -1, 39, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 53, -1, 55,
+ 56, 57, 58, 59, 60, -1, -1, -1, -1, 65,
+ 66, 67, 68, 69, 70, 71, -1, -1, -1, -1,
+ -1, -1, -1, 79, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 91, 92, 93, -1, -1,
+ -1, -1, 98, 99, -1, 101, 102, 11, -1, 13,
+ 14, 15, 16, 17, 18, 19, -1, -1, -1, 23,
+ 24, 25, 26, 27, -1, 29, 30, 31, 32, 33,
+ 34, -1, -1, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 53,
+ -1, 55, 56, 57, 58, 59, 60, -1, -1, -1,
+ -1, 65, 66, 67, 68, 69, 70, 71, -1, -1,
+ -1, -1, -1, -1, -1, 79, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 91, 92, 93,
+ -1, -1, -1, -1, 98, 99, -1, 101, 102, 11,
+ -1, 13, 14, 15, 16, 17, 18, 19, -1, -1,
+ -1, 23, 24, 25, 26, 27, -1, 29, 30, 31,
+ 32, 33, 34, -1, -1, -1, -1, 39, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 51, -1, 53, 54, 55, 56, 57, 58, -1,
- -1, -1, -1, 63, 64, 65, 66, 67, 68, -1,
- 70, -1, -1, -1, -1, -1, 76, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 88, 89,
- 90, -1, -1, -1, -1, 95, 96, -1, 98, 99,
- 11, -1, 13, 14, 15, 16, 17, 18, 19, -1,
- 21, 22, 23, 24, 25, -1, 27, 28, 29, 30,
- 31, 32, -1, -1, -1, -1, 37, -1, -1, -1,
+ -1, 53, -1, 55, 56, 57, 58, 59, 60, -1,
+ -1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
+ -1, -1, -1, -1, 54, -1, -1, 79, -1, -1,
+ -1, 61, 62, 63, 64, -1, -1, -1, -1, 91,
+ 92, 93, -1, -1, -1, -1, 98, 99, -1, -1,
+ 102, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, -1, -1, -1, 54, 95, 96, 97, -1, -1,
+ 100, 61, 62, 63, 64, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 51, -1, 53, 54, 55, 56, 57, 58, -1, -1,
- -1, -1, 63, 64, 65, 66, 67, 68, -1, 70,
- -1, -1, -1, -1, -1, 76, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 88, 89, 90,
- -1, -1, -1, -1, 95, 96, -1, 98, 99, 11,
- -1, 13, 14, 15, 16, 17, 18, 19, -1, 21,
- 22, 23, 24, 25, -1, 27, 28, 29, 30, 31,
- 32, -1, -1, -1, -1, 37, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 51,
- -1, 53, 54, 55, 56, 57, 58, -1, -1, -1,
- -1, 63, 64, 65, 66, 67, 68, -1, 70, -1,
- -1, -1, -1, -1, 76, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 88, 89, 90, -1,
- -1, -1, -1, 95, 96, -1, 98, 99, 11, -1,
- 13, 14, 15, 16, 17, 18, 19, -1, 21, 22,
- 23, 24, 25, -1, 27, 28, 29, 30, 31, 32,
- -1, -1, -1, -1, 37, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 51, -1,
- 53, 54, 55, 56, 57, 58, -1, -1, -1, -1,
- 63, 64, 65, 66, 67, 68, -1, 70, -1, -1,
- -1, -1, -1, 76, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 88, 89, 90, -1, -1,
- -1, -1, 95, 96, -1, 98, 99, 11, -1, 13,
- 14, 15, 16, 17, 18, 19, -1, 21, 22, 23,
- 24, 25, -1, 27, 28, 29, 30, 31, 32, -1,
- -1, -1, -1, 37, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 51, -1, 53,
- 54, 55, 56, 57, 58, -1, -1, -1, -1, 63,
- 64, 65, 66, 67, 68, -1, 70, -1, -1, -1,
- 52, -1, 76, -1, -1, -1, -1, 59, 60, 61,
- 62, -1, -1, -1, 88, 89, 90, -1, -1, -1,
- -1, 95, 96, -1, -1, 99, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, -1, -1, -1, 52,
- 92, 93, 94, -1, -1, 97, 59, 60, 61, 62,
+ -1, 81, 82, -1, 84, 85, 86, 87, 88, 89,
+ 90, -1, -1, -1, 54, 95, 96, 97, -1, -1,
+ 100, 61, 62, 63, 64, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 78, 79, -1, 81, 82,
- 83, 84, 85, 86, 87, -1, -1, -1, 52, 92,
- 93, 94, -1, -1, 97, 59, 60, 61, 62, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 79, -1, 81, 82, 83,
- 84, 85, 86, 87, -1, -1, -1, 52, 92, 93,
- 94, -1, -1, 97, 59, 60, 61, 62, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 81, 82, 83, 84,
- 85, 86, 87, -1, -1, -1, -1, 92, 93, 94,
- -1, -1, 97
+ -1, -1, 82, -1, 84, 85, 86, 87, 88, 89,
+ 90, -1, -1, -1, -1, 95, 96, 97, -1, -1,
+ 100
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 3, 4, 5, 6, 7, 8, 102, 103, 104,
- 105, 106, 107, 108, 0, 110, 11, 13, 14, 15,
- 16, 17, 18, 19, 21, 22, 23, 24, 25, 27,
- 28, 29, 30, 31, 32, 37, 51, 53, 54, 55,
- 56, 57, 58, 63, 64, 65, 66, 67, 68, 70,
- 76, 88, 89, 90, 95, 96, 99, 139, 140, 141,
- 144, 145, 146, 147, 148, 149, 150, 153, 157, 158,
- 159, 160, 161, 162, 9, 109, 1, 20, 33, 35,
- 36, 38, 39, 40, 41, 42, 43, 47, 48, 49,
- 50, 69, 100, 109, 117, 120, 139, 34, 115, 116,
- 117, 114, 114, 12, 139, 149, 149, 21, 26, 109,
- 158, 163, 163, 163, 163, 163, 163, 163, 99, 11,
- 99, 149, 132, 132, 149, 99, 99, 99, 109, 149,
- 21, 140, 152, 158, 163, 163, 21, 109, 149, 158,
- 20, 139, 21, 149, 99, 151, 158, 159, 160, 149,
- 140, 149, 149, 149, 149, 149, 98, 139, 73, 74,
- 75, 77, 9, 11, 27, 99, 154, 52, 59, 60,
- 61, 62, 78, 79, 81, 82, 83, 84, 85, 86,
- 87, 92, 93, 94, 97, 154, 9, 11, 9, 11,
- 9, 110, 133, 131, 21, 131, 154, 154, 154, 154,
- 68, 154, 158, 154, 154, 109, 131, 46, 122, 20,
- 40, 41, 42, 43, 47, 49, 116, 117, 115, 12,
- 152, 99, 140, 139, 98, 109, 24, 135, 98, 98,
- 139, 153, 163, 140, 154, 154, 10, 20, 152, 98,
- 139, 71, 137, 11, 98, 139, 139, 139, 149, 139,
- 139, 155, 98, 139, 149, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 149, 9,
- 11, 22, 99, 143, 158, 98, 139, 139, 139, 139,
- 139, 139, 114, 21, 130, 21, 134, 21, 118, 110,
- 110, 110, 110, 110, 110, 154, 110, 110, 134, 109,
- 139, 126, 139, 139, 139, 139, 139, 153, 98, 12,
- 142, 71, 136, 98, 98, 139, 98, 139, 98, 139,
- 10, 98, 24, 139, 11, 20, 12, 99, 98, 80,
- 139, 139, 98, 139, 154, 98, 20, 12, 20, 12,
- 20, 10, 109, 135, 9, 20, 21, 125, 139, 126,
- 127, 139, 126, 129, 156, 158, 120, 124, 127, 128,
- 139, 110, 111, 127, 135, 98, 152, 24, 109, 98,
- 98, 98, 12, 139, 10, 149, 20, 12, 98, 153,
- 10, 10, 10, 136, 110, 21, 98, 98, 98, 98,
- 154, 98, 20, 127, 127, 98, 136, 12, 10, 98,
- 20, 109, 138, 119, 152, 123, 123, 9, 112, 112,
- 127, 112, 125, 98, 98, 112, 138, 114, 20, 112,
- 112, 113, 44, 45, 121, 121, 98, 122, 20, 112,
- 112, 10, 122, 122, 114, 112, 154, 112, 123, 122,
- 10, 127, 122, 128, 98, 98, 112, 112, 121
+ 0, 3, 4, 5, 6, 7, 8, 105, 106, 107,
+ 108, 109, 110, 111, 0, 114, 11, 13, 14, 15,
+ 16, 17, 18, 19, 23, 24, 25, 26, 27, 29,
+ 30, 31, 32, 33, 34, 39, 53, 55, 56, 57,
+ 58, 59, 60, 65, 66, 67, 68, 69, 70, 71,
+ 79, 91, 92, 93, 98, 99, 102, 146, 147, 148,
+ 151, 152, 153, 154, 155, 156, 158, 161, 163, 164,
+ 165, 166, 167, 168, 9, 112, 1, 20, 35, 37,
+ 38, 40, 41, 42, 43, 44, 45, 49, 50, 51,
+ 52, 103, 112, 121, 127, 146, 36, 119, 120, 121,
+ 117, 117, 12, 146, 156, 156, 23, 28, 112, 164,
+ 169, 169, 169, 169, 169, 169, 169, 157, 11, 102,
+ 156, 139, 139, 156, 102, 102, 102, 112, 156, 23,
+ 147, 160, 164, 169, 169, 23, 28, 112, 141, 156,
+ 164, 20, 146, 23, 141, 156, 102, 159, 164, 165,
+ 166, 156, 147, 156, 156, 156, 156, 156, 101, 146,
+ 76, 77, 78, 80, 9, 11, 102, 54, 61, 62,
+ 63, 64, 81, 82, 84, 85, 86, 87, 88, 89,
+ 90, 95, 96, 97, 100, 102, 9, 11, 9, 11,
+ 9, 114, 140, 141, 23, 138, 102, 102, 102, 102,
+ 70, 102, 164, 102, 102, 112, 48, 129, 20, 42,
+ 43, 44, 45, 49, 51, 120, 121, 119, 12, 160,
+ 102, 102, 146, 101, 112, 26, 142, 101, 101, 146,
+ 161, 169, 147, 102, 102, 10, 20, 160, 101, 146,
+ 72, 144, 11, 101, 146, 146, 146, 156, 146, 146,
+ 101, 146, 156, 156, 156, 156, 156, 156, 156, 156,
+ 156, 156, 156, 156, 156, 156, 156, 9, 11, 24,
+ 102, 150, 164, 101, 146, 146, 146, 146, 146, 146,
+ 117, 23, 137, 138, 23, 123, 114, 114, 114, 114,
+ 114, 114, 102, 114, 114, 112, 146, 133, 146, 146,
+ 146, 146, 146, 161, 147, 12, 149, 72, 143, 101,
+ 101, 146, 101, 146, 101, 146, 10, 101, 26, 146,
+ 11, 20, 12, 101, 83, 146, 146, 101, 146, 102,
+ 101, 20, 12, 20, 12, 20, 10, 21, 113, 122,
+ 9, 20, 23, 132, 146, 133, 134, 146, 133, 136,
+ 162, 164, 127, 131, 134, 135, 146, 114, 134, 134,
+ 101, 101, 160, 26, 112, 101, 101, 101, 12, 146,
+ 10, 156, 20, 12, 101, 161, 10, 10, 10, 114,
+ 142, 114, 23, 101, 101, 101, 101, 102, 101, 20,
+ 134, 101, 101, 12, 10, 101, 20, 143, 124, 160,
+ 130, 130, 9, 115, 115, 134, 115, 132, 101, 115,
+ 115, 74, 20, 112, 145, 117, 20, 115, 115, 116,
+ 46, 47, 128, 128, 101, 129, 20, 115, 118, 10,
+ 129, 129, 117, 115, 102, 115, 130, 129, 20, 26,
+ 125, 10, 134, 129, 135, 22, 73, 126, 101, 101,
+ 117, 115, 115, 74, 128
};
typedef enum {
@@ -1068,31 +1106,32 @@ static const toketypes yy_type_tab[] =
{
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval,
- toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval,
+ toketype_i_tkval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_p_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval,
+ toketype_opval, toketype_p_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval,
toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval,
toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval,
toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval,
toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_i_tkval,
+ toketype_i_tkval, toketype_i_tkval, toketype_i_tkval, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
- toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_i_tkval, toketype_ival,
- toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_ival,
- toketype_ival, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival,
- toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval,
+ toketype_ival, toketype_ival, toketype_ival, toketype_i_tkval, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
+ toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_ival, toketype_opval,
+ toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_opval, toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_opval, toketype_ival, toketype_ival, toketype_ival, toketype_opval,
toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_i_tkval, toketype_ival,
+ toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval,
toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval
+ toketype_opval, toketype_opval, toketype_opval
};
/* Generated from:
- * 047d7d5048e78a17bc586b7bb9a0f0e9dedd5cd43b30e486482b1ff8f955ddcb perly.y
- * 53f57d7143a42b3c008841a14d158bcf9cab64b2904b07ef5e95051fe9a8a875 regen_perly.pl
+ * 28c2c7738eefc00762e227af0363c729186c992e9127e0c935684cccbf3a3b4f perly.y
+ * 5c9d2a0262457fe9b70073fc8ad6c188f812f38ad57712b7e2f53daa01b297cc regen_perly.pl
* ex: set ro: */
diff --git a/gnu/usr.bin/perl/plan9/config_sh.sample b/gnu/usr.bin/perl/plan9/config_sh.sample
index e625f24908c..2c2a49eee62 100644
--- a/gnu/usr.bin/perl/plan9/config_sh.sample
+++ b/gnu/usr.bin/perl/plan9/config_sh.sample
@@ -33,11 +33,11 @@ ansi2knr=''
aphostname='/bin/uname -n'
api_revision='5'
api_subversion='0'
-api_version='16'
-api_versionstring='5.16.0'
+api_version='18'
+api_versionstring='5.18.0'
ar='ar'
-archlib='/sys/lib/perl5/5.16.3/386'
-archlibexp='/sys/lib/perl5/5.16.3/386'
+archlib='/sys/lib/perl5/5.18.2/386'
+archlibexp='/sys/lib/perl5/5.18.2/386'
archname64=''
archname='386'
archobjs=''
@@ -48,6 +48,7 @@ bash=''
bin='/usr/bin'
binexp='/usr/bin'
bison='bison'
+bootstrap_charset='undef'
byacc='byacc'
byteorder='1234'
c=''
@@ -284,7 +285,10 @@ d_inetaton='undef'
d_inetntop='undef'
d_inetpton='undef'
d_int64_t='define'
+d_ip_mreq='undef'
+d_ip_mreq_source='undef'
d_ipv6_mreq='undef'
+d_ipv6_mreq_source='undef'
d_isascii='undef'
d_isblank='undef'
d_isfinite='undef'
@@ -722,17 +726,17 @@ inc_version_list=' '
inc_version_list_init='0'
incpath=''
inews=''
-installarchlib='/sys/lib/perl/5.16.3/386'
+installarchlib='/sys/lib/perl/5.18.2/386'
installbin='/usr/bin'
installman1dir='/sys/man/1pub'
installman3dir='/sys/man/2pub'
installprefix='/usr'
installprefixexp='/usr'
-installprivlib='/sys/lib/perl/5.16.3'
+installprivlib='/sys/lib/perl/5.18.2'
installscript='/usr/bin'
-installsitearch='/sys/lib/perl/5.16.3/site_perl/386'
+installsitearch='/sys/lib/perl/5.18.2/site_perl/386'
installsitebin='/usr/bin'
-installsitelib='/sys/lib/perl/5.16.3/site_perl'
+installsitelib='/sys/lib/perl/5.18.2/site_perl'
installstyle='lib/perl5'
installusrbinperl='undef'
installvendorarch=''
@@ -852,8 +856,8 @@ pmake=''
pr=''
prefix='/usr'
prefixexp='/usr'
-privlib='/sys/lib/perl/5.16.3'
-privlibexp='/sys/lib/perl/5.16.3'
+privlib='/sys/lib/perl/5.18.2'
+privlibexp='/sys/lib/perl/5.18.2'
procselfexe=''
prototype='define'
ptrsize='4'
@@ -918,13 +922,13 @@ sig_num='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
sig_num_init='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, 0'
sig_size='50'
signal_t='void'
-sitearch='/sys/lib/perl/5.16.3/site_perl/386'
+sitearch='/sys/lib/perl/5.18.2/site_perl/386'
sitearchexp='/sys/lib/perl/site_perl/386'
sitebin='/usr/bin'
sitebinexp='/usr/bin'
-sitelib='/sys/lib/perl/5.16.3/site_perl'
-sitelib_stem='/sys/lib/perl/5.16.3/site_perl'
-sitelibexp='/sys/lib/perl/5.16.3/site_perl'
+sitelib='/sys/lib/perl/5.18.2/site_perl'
+sitelib_stem='/sys/lib/perl/5.18.2/site_perl'
+sitelibexp='/sys/lib/perl/5.18.2/site_perl'
siteprefix='/usr'
siteprefixexp='/usr'
sizesize='4'
@@ -957,7 +961,7 @@ stdio_stream_array=''
strerror_r_proto='0'
strings='/sys/include/ape/string.h'
submit=''
-subversion='3'
+subversion='2'
sysman='/sys/man/1pub'
tail=''
tar=''
@@ -1037,8 +1041,8 @@ vendorlib_stem=''
vendorlibexp=''
vendorprefix=''
vendorprefixexp=''
-version='5.16.3'
-version_patchlevel_string='version 16 subversion 3'
+version='5.18.2'
+version_patchlevel_string='version 18 subversion 2'
versiononly='undef'
vi=''
voidflags='15'
@@ -1052,10 +1056,10 @@ config_arg0='./Configure'
config_args=''
config_argc=0
PERL_REVISION=5
-PERL_VERSION=16
-PERL_SUBVERSION=3
+PERL_VERSION=18
+PERL_SUBVERSION=2
PERL_API_REVISION=5
-PERL_API_VERSION=16
+PERL_API_VERSION=18
PERL_API_SUBVERSION=0
PERL_PATCHLEVEL=
PERL_CONFIG_SH=true
diff --git a/gnu/usr.bin/perl/pod/perl5005delta.pod b/gnu/usr.bin/perl/pod/perl5005delta.pod
index 62661254a21..e73bcebc429 100644
--- a/gnu/usr.bin/perl/pod/perl5005delta.pod
+++ b/gnu/usr.bin/perl/pod/perl5005delta.pod
@@ -509,7 +509,7 @@ as L<perldos> on some systems).
MiNT is now supported. See F<README.mint>.
-MPE/iX is now supported. See F<README.mpeix>.
+MPE/iX is now supported. See README.mpeix.
MVS (aka OS390, aka Open Edition) is now supported. See F<README.os390>
(installed as L<perlos390> on some systems).
diff --git a/gnu/usr.bin/perl/pod/perl5120delta.pod b/gnu/usr.bin/perl/pod/perl5120delta.pod
index f8a1810c861..6cbfb7adf36 100644
--- a/gnu/usr.bin/perl/pod/perl5120delta.pod
+++ b/gnu/usr.bin/perl/pod/perl5120delta.pod
@@ -116,7 +116,7 @@ it is interpolated into a regexp. See L<overload>.
Extension modules can now cleanly hook into the Perl parser to define
new kinds of keyword-headed expression and compound statement. The
syntax following the keyword is defined entirely by the extension. This
-allow a completely non-Perl sublanguage to be parsed inline, with the
+allows a completely non-Perl sublanguage to be parsed inline, with the
correct ops cleanly generated.
See L<perlapi/PL_keyword_plugin> for the mechanism. The Perl core
diff --git a/gnu/usr.bin/perl/pod/perl5125delta.pod b/gnu/usr.bin/perl/pod/perl5125delta.pod
new file mode 100644
index 00000000000..90cb04a8329
--- /dev/null
+++ b/gnu/usr.bin/perl/pod/perl5125delta.pod
@@ -0,0 +1,241 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5125delta - what is new for perl v5.12.5
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.12.4 release and
+the 5.12.5 release.
+
+If you are upgrading from an earlier release such as 5.12.3, first read
+L<perl5124delta>, which describes differences between 5.12.3 and
+5.12.4.
+
+=head1 Security
+
+=head2 C<Encode> decode_xs n-byte heap-overflow (CVE-2011-2939)
+
+A bug in C<Encode> could, on certain inputs, cause the heap to overflow.
+This problem has been corrected. Bug reported by Robert Zacek.
+
+=head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
+
+Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would
+cause an access violation / segfault. A Perl program that accepts a flags value from
+an external source could expose itself to denial of service or arbitrary code
+execution attacks. There are no known exploits in the wild. The problem has been
+corrected by explicitly disabling all unsupported flags and setting unused function
+pointers to null. Bug reported by Clément Lecigne.
+
+=head2 Heap buffer overrun in 'x' string repeat operator (CVE-2012-5195)
+
+Poorly written perl code that allows an attacker to specify the count to
+perl's 'x' string repeat operator can already cause a memory exhaustion
+denial-of-service attack. A flaw in versions of perl before 5.15.5 can
+escalate that into a heap buffer overrun; coupled with versions of glibc
+before 2.16, it possibly allows the execution of arbitrary code.
+
+This problem has been fixed.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.12.4. If any
+exist, they are bugs and reports are welcome.
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules
+
+=head3 L<B::Concise>
+
+L<B::Concise> no longer produces mangled output with the B<-tree> option
+[perl #80632].
+
+=head3 L<charnames>
+
+A regression introduced in Perl 5.8.8 has been fixed, that caused
+C<charnames::viacode(0)> to return C<undef> instead of the string "NULL"
+[perl #72624].
+
+=head3 L<Encode> has been upgraded from version 2.39 to version 2.39_01.
+
+See L</Security>.
+
+=head3 L<File::Glob> has been upgraded from version 1.07 to version 1.07_01.
+
+See L</Security>.
+
+=head3 L<Unicode::UCD>
+
+The documentation for the C<upper> function now actually says "upper", not
+"lower".
+
+=head3 L<Module::CoreList>
+
+L<Module::CoreList> has been updated to version 2.50_02 to add data for
+this release.
+
+=head1 Changes to Existing Documentation
+
+=head2 L<perlebcdic>
+
+The L<perlebcdic> document contains a helpful table to use in C<tr///> to
+convert between EBCDIC and Latin1/ASCII. Unfortunately, the table was the
+inverse of the one it describes. This has been corrected.
+
+=head2 L<perlunicode>
+
+The section on
+L<User-Defined Case Mappings|perlunicode/User-Defined Case Mappings> had
+some bad markup and unclear sentences, making parts of it unreadable. This
+has been rectified.
+
+=head2 L<perluniprops>
+
+This document has been corrected to take non-ASCII platforms into account.
+
+=head1 Installation and Configuration Improvements
+
+=head2 Platform Specific Changes
+
+=over 4
+
+=item Mac OS X
+
+There have been configuration and test fixes to make Perl build cleanly on
+Lion and Mountain Lion.
+
+=item NetBSD
+
+The NetBSD hints file was corrected to be compatible with NetBSD 6.*
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+C<chop> now correctly handles characters above "\x{7fffffff}"
+[perl #73246].
+
+=item *
+
+C<< ($<,$>) = (...) >> stopped working properly in 5.12.0. It is supposed
+to make a single C<setreuid()> call, rather than calling C<setruid()> and
+C<seteuid()> separately. Consequently it did not work properly. This has
+been fixed [perl #75212].
+
+=item *
+
+Fixed a regression of kill() when a match variable is used for the
+process ID to kill [perl #75812].
+
+=item *
+
+C<UNIVERSAL::VERSION> no longer leaks memory. It started leaking in Perl
+5.10.0.
+
+=item *
+
+The C-level C<my_strftime> functions no longer leaks memory. This fixes a
+memory leak in C<POSIX::strftime> [perl #73520].
+
+=item *
+
+C<caller> no longer leaks memory when called from the DB package if
+C<@DB::args> was assigned to after the first call to C<caller>. L<Carp>
+was triggering this bug [perl #97010].
+
+=item *
+
+Passing to C<index> an offset beyond the end of the string when the string
+is encoded internally in UTF8 no longer causes panics [perl #75898].
+
+=item *
+
+Syntax errors in C<< (?{...}) >> blocks in regular expressions no longer
+cause panic messages [perl #2353].
+
+=item *
+
+Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
+a pack template equivalent to "U0" if the input string was empty. This has
+been fixed [perl #90160].
+
+=back
+
+=head1 Errata
+
+=head2 split() and C<@_>
+
+split() no longer modifies C<@_> when called in scalar or void context.
+In void context it now produces a "Useless use of split" warning.
+This is actually a change introduced in perl 5.12.0, but it was missed from
+that release's L<perl5120delta>.
+
+=head1 Acknowledgements
+
+Perl 5.12.5 represents approximately 17 months of development since Perl 5.12.4
+and contains approximately 1,900 lines of changes across 64 files from 18
+authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers. The following people are known to have contributed the
+improvements that became Perl 5.12.5:
+
+Andy Dougherty, Chris 'BinGOs' Williams, Craig A. Berry, David Mitchell,
+Dominic Hargreaves, Father Chrysostomos, Florian Ragwitz, George Greer, Goro
+Fuji, Jesse Vincent, Karl Williamson, Leon Brocard, Nicholas Clark, Rafael
+Garcia-Suarez, Reini Urban, Ricardo Signes, Steve Hay, Tony Cook.
+
+The list above is almost certainly incomplete as it is automatically generated
+from version control history. In particular, it does not include the names of
+the (very much appreciated) contributors who reported issues to the Perl bug
+tracker.
+
+Many of the changes included in this version originated in the CPAN modules
+included in Perl's core. We're grateful to the entire CPAN community for
+helping Perl to flourish.
+
+For a more complete list of all of Perl's historical contributors, please see
+the F<AUTHORS> file in the Perl source distribution.
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ . There may also be
+information at http://www.perl.org/ , the Perl Home Page.
+
+If you believe you have an unreported bug, please run the B<perlbug>
+program included with your release. Be sure to trim your bug down
+to a tiny but sufficient test case. Your bug report, along with the
+output of C<perl -V>, will be sent off to perlbug@perl.org to be
+analysed by the Perl porting team.
+
+If the bug you are reporting has security implications, which make it
+inappropriate to send to a publicly archived mailing list, then please send
+it to perl5-security-report@perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who be able
+to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently
+distributed on CPAN.
+
+=head1 SEE ALSO
+
+The F<Changes> file for an explanation of how to view exhaustive details
+on what changed.
+
+The F<INSTALL> file for how to build Perl.
+
+The F<README> file for general stuff.
+
+The F<Artistic> and F<Copying> files for copyright information.
+
+=cut
diff --git a/gnu/usr.bin/perl/pod/perl5140delta.pod b/gnu/usr.bin/perl/pod/perl5140delta.pod
index 74c82a8e141..26df41c6520 100644
--- a/gnu/usr.bin/perl/pod/perl5140delta.pod
+++ b/gnu/usr.bin/perl/pod/perl5140delta.pod
@@ -1210,7 +1210,7 @@ generation task.
L<CPAN::Meta> version 2.110440 has been added as a dual-life module. It
provides a standard library to read, interpret and write CPAN distribution
-metadata files (like F<META.json> and F<META.yml)> that describe a
+metadata files (like F<META.json> and F<META.yml>) that describe a
distribution, its contents, and the requirements for building it and
installing it. The latest CPAN distribution metadata specification is
included as L<CPAN::Meta::Spec> and notes on changes in the specification
diff --git a/gnu/usr.bin/perl/pod/perl5144delta.pod b/gnu/usr.bin/perl/pod/perl5144delta.pod
new file mode 100644
index 00000000000..23deecb4f2a
--- /dev/null
+++ b/gnu/usr.bin/perl/pod/perl5144delta.pod
@@ -0,0 +1,240 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5144delta - what is new for perl v5.14.4
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.14.3 release and
+the 5.14.4 release.
+
+If you are upgrading from an earlier release such as 5.12.0, first read
+L<perl5140delta>, which describes differences between 5.12.0 and
+5.14.0.
+
+=head1 Core Enhancements
+
+No changes since 5.14.0.
+
+=head1 Security
+
+This release contains one major, and medium, and a number of minor
+security fixes. The latter are included mainly to allow the test suite to
+pass cleanly with the clang compiler's address sanitizer facility.
+
+=head2 CVE-2013-1667: memory exhaustion with arbitrary hash keys
+
+With a carefully crafted set of hash keys (for example arguments on a
+URL), it is possible to cause a hash to consume a large amount of memory
+and CPU, and thus possibly to achieve a Denial-of-Service.
+
+This problem has been fixed.
+
+=head2 memory leak in Encode
+
+The UTF-8 encoding implementation in Encode.xs had a memory leak which has been
+fixed.
+
+=head2 [perl #111594] Socket::unpack_sockaddr_un heap-buffer-overflow
+
+A read buffer overflow could occur when copying C<sockaddr> buffers.
+Fairly harmless.
+
+This problem has been fixed.
+
+=head2 [perl #111586] SDBM_File: fix off-by-one access to global ".dir"
+
+An extra byte was being copied for some string literals. Fairly harmless.
+
+This problem has been fixed.
+
+=head2 off-by-two error in List::Util
+
+A string literal was being used that included two bytes beyond the
+end of the string. Fairly harmless.
+
+This problem has been fixed.
+
+=head2 [perl #115994] fix segv in regcomp.c:S_join_exact()
+
+Under debugging builds, while marking optimised-out regex nodes as type
+C<OPTIMIZED>, it could treat blocks of exact text as if they were nodes,
+and thus SEGV. Fairly harmless.
+
+This problem has been fixed.
+
+=head2 [perl #115992] PL_eval_start use-after-free
+
+The statement C<local $[;>, when preceded by an C<eval>, and when not part
+of an assignment, could crash. Fairly harmless.
+
+This problem has been fixed.
+
+=head2 wrap-around with IO on long strings
+
+Reading or writing strings greater than 2**31 bytes in size could segfault
+due to integer wraparound.
+
+This problem has been fixed.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.14.0. If any
+exist, they are bugs and reports are welcome.
+
+=head1 Deprecations
+
+There have been no deprecations since 5.14.0.
+
+=head1 Modules and Pragmata
+
+=head2 New Modules and Pragmata
+
+None
+
+=head2 Updated Modules and Pragmata
+
+The following modules have just the minor code fixes as listed above in
+L</Security> (version numbers have not changed):
+
+=over 4
+
+=item Socket
+
+=item SDBM_File
+
+=item List::Util
+
+=back
+
+L<Encode> has been upgraded from version 2.42_01 to version 2.42_02.
+
+L<Module::CoreList> has been updated to version 2.49_06 to add data for
+this release.
+
+=head2 Removed Modules and Pragmata
+
+None.
+
+=head1 Documentation
+
+=head2 New Documentation
+
+None.
+
+=head2 Changes to Existing Documentation
+
+None.
+
+=head1 Diagnostics
+
+No new or changed diagnostics.
+
+=head1 Utility Changes
+
+None
+
+=head1 Configuration and Compilation
+
+No changes.
+
+=head1 Platform Support
+
+=head2 New Platforms
+
+None.
+
+=head2 Discontinued Platforms
+
+None.
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item VMS
+
+5.14.3 failed to compile on VMS due to incomplete application of a patch
+series that allowed C<userelocatableinc> and C<usesitecustomize> to be
+used simultaneously. Other platforms were not affected and the problem
+has now been corrected.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+In Perl 5.14.0, C<$tainted ~~ @array> stopped working properly. Sometimes
+it would erroneously fail (when C<$tainted> contained a string that occurs
+in the array I<after> the first element) or erroneously succeed (when
+C<undef> occurred after the first element) [perl #93590].
+
+=back
+
+=head1 Known Problems
+
+None.
+
+=head1 Acknowledgements
+
+Perl 5.14.4 represents approximately 5 months of development since Perl 5.14.3
+and contains approximately 1,700 lines of changes across 49 files from 12
+authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers. The following people are known to have contributed the
+improvements that became Perl 5.14.4:
+
+Andy Dougherty, Chris 'BinGOs' Williams, Christian Hansen, Craig A. Berry,
+Dave Rolsky, David Mitchell, Dominic Hargreaves, Father Chrysostomos,
+Florian Ragwitz, Reini Urban, Ricardo Signes, Yves Orton.
+
+
+The list above is almost certainly incomplete as it is automatically generated
+from version control history. In particular, it does not include the names of
+the (very much appreciated) contributors who reported issues to the Perl bug
+tracker.
+
+For a more complete list of all of Perl's historical contributors, please see
+the F<AUTHORS> file in the Perl source distribution.
+
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ . There may also be
+information at http://www.perl.org/ , the Perl Home Page.
+
+If you believe you have an unreported bug, please run the L<perlbug>
+program included with your release. Be sure to trim your bug down
+to a tiny but sufficient test case. Your bug report, along with the
+output of C<perl -V>, will be sent off to perlbug@perl.org to be
+analysed by the Perl porting team.
+
+If the bug you are reporting has security implications, which make it
+inappropriate to send to a publicly archived mailing list, then please send
+it to perl5-security-report@perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who be able
+to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently
+distributed on CPAN.
+
+=head1 SEE ALSO
+
+The F<Changes> file for an explanation of how to view exhaustive details
+on what changed.
+
+The F<INSTALL> file for how to build Perl.
+
+The F<README> file for general stuff.
+
+The F<Artistic> and F<Copying> files for copyright information.
+
+=cut
diff --git a/gnu/usr.bin/perl/pod/perl5160delta.pod b/gnu/usr.bin/perl/pod/perl5160delta.pod
index 9b67d17a243..ad29389806a 100644
--- a/gnu/usr.bin/perl/pod/perl5160delta.pod
+++ b/gnu/usr.bin/perl/pod/perl5160delta.pod
@@ -603,7 +603,7 @@ Thread.pm
=back
-=head2 Platforms with no supporting programmers:
+=head2 Platforms with no supporting programmers
These platforms will probably have their
special build support removed during the
diff --git a/gnu/usr.bin/perl/pod/perl5163delta.pod b/gnu/usr.bin/perl/pod/perl5163delta.pod
new file mode 100644
index 00000000000..c97f154837c
--- /dev/null
+++ b/gnu/usr.bin/perl/pod/perl5163delta.pod
@@ -0,0 +1,133 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5163delta - what is new for perl v5.16.3
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.16.2 release and
+the 5.16.3 release.
+
+If you are upgrading from an earlier release such as 5.16.1, first read
+L<perl5162delta>, which describes differences between 5.16.1 and
+5.16.2.
+
+=head1 Core Enhancements
+
+No changes since 5.16.0.
+
+=head1 Security
+
+This release contains one major and a number of minor security fixes.
+These latter are included mainly to allow the test suite to pass cleanly
+with the clang compiler's address sanitizer facility.
+
+=head2 CVE-2013-1667: memory exhaustion with arbitrary hash keys
+
+With a carefully crafted set of hash keys (for example arguments on a
+URL), it is possible to cause a hash to consume a large amount of memory
+and CPU, and thus possibly to achieve a Denial-of-Service.
+
+This problem has been fixed.
+
+=head2 wrap-around with IO on long strings
+
+Reading or writing strings greater than 2**31 bytes in size could segfault
+due to integer wraparound.
+
+This problem has been fixed.
+
+=head2 memory leak in Encode
+
+The UTF-8 encoding implementation in Encode.xs had a memory leak which has been
+fixed.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.16.0. If any
+exist, they are bugs and reports are welcome.
+
+=head1 Deprecations
+
+There have been no deprecations since 5.16.0.
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<Encode> has been upgraded from version 2.44 to version 2.44_01.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 2.76 to version 2.76_02.
+
+=item *
+
+L<XS::APItest> has been upgraded from version 0.38 to version 0.39.
+
+=back
+
+=head1 Known Problems
+
+None.
+
+=head1 Acknowledgements
+
+Perl 5.16.3 represents approximately 4 months of development since Perl 5.16.2
+and contains approximately 870 lines of changes across 39 files from 7 authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers. The following people are known to have contributed the
+improvements that became Perl 5.16.3:
+
+Andy Dougherty, Chris 'BinGOs' Williams, Dave Rolsky, David Mitchell, Michael
+Schroeder, Ricardo Signes, Yves Orton.
+
+The list above is almost certainly incomplete as it is automatically generated
+from version control history. In particular, it does not include the names of
+the (very much appreciated) contributors who reported issues to the Perl bug
+tracker.
+
+For a more complete list of all of Perl's historical contributors, please see
+the F<AUTHORS> file in the Perl source distribution.
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ . There may also be
+information at http://www.perl.org/ , the Perl Home Page.
+
+If you believe you have an unreported bug, please run the L<perlbug>
+program included with your release. Be sure to trim your bug down
+to a tiny but sufficient test case. Your bug report, along with the
+output of C<perl -V>, will be sent off to perlbug@perl.org to be
+analysed by the Perl porting team.
+
+If the bug you are reporting has security implications, which make it
+inappropriate to send to a publicly archived mailing list, then please
+send it to perl5-security-report@perl.org. This points to a closed
+subscription unarchived mailing list, which includes all the core
+committers, who will be able to help assess the impact of issues, figure
+out a resolution, and help co-ordinate the release of patches to
+mitigate or fix the problem across all platforms on which Perl is
+supported. Please only use this address for security issues in the Perl
+core, not for modules independently distributed on CPAN.
+
+=head1 SEE ALSO
+
+The F<Changes> file for an explanation of how to view exhaustive details
+on what changed.
+
+The F<INSTALL> file for how to build Perl.
+
+The F<README> file for general stuff.
+
+The F<Artistic> and F<Copying> files for copyright information.
+
+=cut
diff --git a/gnu/usr.bin/perl/pod/perl5180delta.pod b/gnu/usr.bin/perl/pod/perl5180delta.pod
new file mode 100644
index 00000000000..c60abf71863
--- /dev/null
+++ b/gnu/usr.bin/perl/pod/perl5180delta.pod
@@ -0,0 +1,3786 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5180delta - what is new for perl v5.18.0
+
+=head1 DESCRIPTION
+
+This document describes differences between the v5.16.0 release and the v5.18.0
+release.
+
+If you are upgrading from an earlier release such as v5.14.0, first read
+L<perl5160delta>, which describes differences between v5.14.0 and v5.16.0.
+
+=head1 Core Enhancements
+
+=head2 New mechanism for experimental features
+
+Newly-added experimental features will now require this incantation:
+
+ no warnings "experimental::feature_name";
+ use feature "feature_name"; # would warn without the prev line
+
+There is a new warnings category, called "experimental", containing
+warnings that the L<feature> pragma emits when enabling experimental
+features.
+
+Newly-added experimental features will also be given special warning IDs,
+which consist of "experimental::" followed by the name of the feature. (The
+plan is to extend this mechanism eventually to all warnings, to allow them
+to be enabled or disabled individually, and not just by category.)
+
+By saying
+
+ no warnings "experimental::feature_name";
+
+you are taking responsibility for any breakage that future changes to, or
+removal of, the feature may cause.
+
+Since some features (like C<~~> or C<my $_>) now emit experimental warnings,
+and you may want to disable them in code that is also run on perls that do not
+recognize these warning categories, consider using the C<if> pragma like this:
+
+ no if $] >= 5.018, warnings => "experimental::feature_name";
+
+Existing experimental features may begin emitting these warnings, too. Please
+consult L<perlexperiment> for information on which features are considered
+experimental.
+
+=head2 Hash overhaul
+
+Changes to the implementation of hashes in perl v5.18.0 will be one of the most
+visible changes to the behavior of existing code.
+
+By default, two distinct hash variables with identical keys and values may now
+provide their contents in a different order where it was previously identical.
+
+When encountering these changes, the key to cleaning up from them is to accept
+that B<hashes are unordered collections> and to act accordingly.
+
+=head3 Hash randomization
+
+The seed used by Perl's hash function is now random. This means that the
+order which keys/values will be returned from functions like C<keys()>,
+C<values()>, and C<each()> will differ from run to run.
+
+This change was introduced to make Perl's hashes more robust to algorithmic
+complexity attacks, and also because we discovered that it exposes hash
+ordering dependency bugs and makes them easier to track down.
+
+Toolchain maintainers might want to invest in additional infrastructure to
+test for things like this. Running tests several times in a row and then
+comparing results will make it easier to spot hash order dependencies in
+code. Authors are strongly encouraged not to expose the key order of
+Perl's hashes to insecure audiences.
+
+Further, every hash has its own iteration order, which should make it much
+more difficult to determine what the current hash seed is.
+
+=head3 New hash functions
+
+Perl v5.18 includes support for multiple hash functions, and changed
+the default (to ONE_AT_A_TIME_HARD), you can choose a different
+algorithm by defining a symbol at compile time. For a current list,
+consult the F<INSTALL> document. Note that as of Perl v5.18 we can
+only recommend use of the default or SIPHASH. All the others are
+known to have security issues and are for research purposes only.
+
+=head3 PERL_HASH_SEED environment variable now takes a hex value
+
+C<PERL_HASH_SEED> no longer accepts an integer as a parameter;
+instead the value is expected to be a binary value encoded in a hex
+string, such as "0xf5867c55039dc724". This is to make the
+infrastructure support hash seeds of arbitrary lengths, which might
+exceed that of an integer. (SipHash uses a 16 byte seed.)
+
+=head3 PERL_PERTURB_KEYS environment variable added
+
+The C<PERL_PERTURB_KEYS> environment variable allows one to control the level of
+randomization applied to C<keys> and friends.
+
+When C<PERL_PERTURB_KEYS> is 0, perl will not randomize the key order at all. The
+chance that C<keys> changes due to an insert will be the same as in previous
+perls, basically only when the bucket size is changed.
+
+When C<PERL_PERTURB_KEYS> is 1, perl will randomize keys in a non-repeatable
+way. The chance that C<keys> changes due to an insert will be very high. This
+is the most secure and default mode.
+
+When C<PERL_PERTURB_KEYS> is 2, perl will randomize keys in a repeatable way.
+Repeated runs of the same program should produce the same output every time.
+
+C<PERL_HASH_SEED> implies a non-default C<PERL_PERTURB_KEYS> setting. Setting
+C<PERL_HASH_SEED=0> (exactly one 0) implies C<PERL_PERTURB_KEYS=0> (hash key
+randomization disabled); settng C<PERL_HASH_SEED> to any other value implies
+C<PERL_PERTURB_KEYS=2> (deterministic and repeatable hash key randomization).
+Specifying C<PERL_PERTURB_KEYS> explicitly to a different level overrides this
+behavior.
+
+=head3 Hash::Util::hash_seed() now returns a string
+
+Hash::Util::hash_seed() now returns a string instead of an integer. This
+is to make the infrastructure support hash seeds of arbitrary lengths
+which might exceed that of an integer. (SipHash uses a 16 byte seed.)
+
+=head3 Output of PERL_HASH_SEED_DEBUG has been changed
+
+The environment variable PERL_HASH_SEED_DEBUG now makes perl show both the
+hash function perl was built with, I<and> the seed, in hex, in use for that
+process. Code parsing this output, should it exist, must change to accommodate
+the new format. Example of the new format:
+
+ $ PERL_HASH_SEED_DEBUG=1 ./perl -e1
+ HASH_FUNCTION = MURMUR3 HASH_SEED = 0x1476bb9f
+
+=head2 Upgrade to Unicode 6.2
+
+Perl now supports Unicode 6.2. A list of changes from Unicode
+6.1 is at L<http://www.unicode.org/versions/Unicode6.2.0>.
+
+=head2 Character name aliases may now include non-Latin1-range characters
+
+It is possible to define your own names for characters for use in
+C<\N{...}>, C<charnames::vianame()>, etc. These names can now be
+comprised of characters from the whole Unicode range. This allows for
+names to be in your native language, and not just English. Certain
+restrictions apply to the characters that may be used (you can't define
+a name that has punctuation in it, for example). See L<charnames/CUSTOM
+ALIASES>.
+
+=head2 New DTrace probes
+
+The following new DTrace probes have been added:
+
+=over 4
+
+=item *
+
+C<op-entry>
+
+=item *
+
+C<loading-file>
+
+=item *
+
+C<loaded-file>
+
+=back
+
+=head2 C<${^LAST_FH}>
+
+This new variable provides access to the filehandle that was last read.
+This is the handle used by C<$.> and by C<tell> and C<eof> without
+arguments.
+
+=head2 Regular Expression Set Operations
+
+This is an B<experimental> feature to allow matching against the union,
+intersection, etc., of sets of code points, similar to
+L<Unicode::Regex::Set>. It can also be used to extend C</x> processing
+to [bracketed] character classes, and as a replacement of user-defined
+properties, allowing more complex expressions than they do. See
+L<perlrecharclass/Extended Bracketed Character Classes>.
+
+=head2 Lexical subroutines
+
+This new feature is still considered B<experimental>. To enable it:
+
+ use 5.018;
+ no warnings "experimental::lexical_subs";
+ use feature "lexical_subs";
+
+You can now declare subroutines with C<state sub foo>, C<my sub foo>, and
+C<our sub foo>. (C<state sub> requires that the "state" feature be
+enabled, unless you write it as C<CORE::state sub foo>.)
+
+C<state sub> creates a subroutine visible within the lexical scope in which
+it is declared. The subroutine is shared between calls to the outer sub.
+
+C<my sub> declares a lexical subroutine that is created each time the
+enclosing block is entered. C<state sub> is generally slightly faster than
+C<my sub>.
+
+C<our sub> declares a lexical alias to the package subroutine of the same
+name.
+
+For more information, see L<perlsub/Lexical Subroutines>.
+
+=head2 Computed Labels
+
+The loop controls C<next>, C<last> and C<redo>, and the special C<dump>
+operator, now allow arbitrary expressions to be used to compute labels at run
+time. Previously, any argument that was not a constant was treated as the
+empty string.
+
+=head2 More CORE:: subs
+
+Several more built-in functions have been added as subroutines to the
+CORE:: namespace - namely, those non-overridable keywords that can be
+implemented without custom parsers: C<defined>, C<delete>, C<exists>,
+C<glob>, C<pos>, C<protoytpe>, C<scalar>, C<split>, C<study>, and C<undef>.
+
+As some of these have prototypes, C<prototype('CORE::...')> has been
+changed to not make a distinction between overridable and non-overridable
+keywords. This is to make C<prototype('CORE::pos')> consistent with
+C<prototype(&CORE::pos)>.
+
+=head2 C<kill> with negative signal names
+
+C<kill> has always allowed a negative signal number, which kills the
+process group instead of a single process. It has also allowed signal
+names. But it did not behave consistently, because negative signal names
+were treated as 0. Now negative signals names like C<-INT> are supported
+and treated the same way as -2 [perl #112990].
+
+=head1 Security
+
+=head2 See also: hash overhaul
+
+Some of the changes in the L<hash overhaul|/"Hash overhaul"> were made to
+enhance security. Please read that section.
+
+=head2 C<Storable> security warning in documentation
+
+The documentation for C<Storable> now includes a section which warns readers
+of the danger of accepting Storable documents from untrusted sources. The
+short version is that deserializing certain types of data can lead to loading
+modules and other code execution. This is documented behavior and wanted
+behavior, but this opens an attack vector for malicious entities.
+
+=head2 C<Locale::Maketext> allowed code injection via a malicious template
+
+If users could provide a translation string to Locale::Maketext, this could be
+used to invoke arbitrary Perl subroutines available in the current process.
+
+This has been fixed, but it is still possible to invoke any method provided by
+C<Locale::Maketext> itself or a subclass that you are using. One of these
+methods in turn will invoke the Perl core's C<sprintf> subroutine.
+
+In summary, allowing users to provide translation strings without auditing
+them is a bad idea.
+
+This vulnerability is documented in CVE-2012-6329.
+
+=head2 Avoid calling memset with a negative count
+
+Poorly written perl code that allows an attacker to specify the count to perl's
+C<x> string repeat operator can already cause a memory exhaustion
+denial-of-service attack. A flaw in versions of perl before v5.15.5 can escalate
+that into a heap buffer overrun; coupled with versions of glibc before 2.16, it
+possibly allows the execution of arbitrary code.
+
+The flaw addressed to this commit has been assigned identifier CVE-2012-5195
+and was researched by Tim Brown.
+
+=head1 Incompatible Changes
+
+=head2 See also: hash overhaul
+
+Some of the changes in the L<hash overhaul|/"Hash overhaul"> are not fully
+compatible with previous versions of perl. Please read that section.
+
+=head2 An unknown character name in C<\N{...}> is now a syntax error
+
+Previously, it warned, and the Unicode REPLACEMENT CHARACTER was
+substituted. Unicode now recommends that this situation be a syntax
+error. Also, the previous behavior led to some confusing warnings and
+behaviors, and since the REPLACEMENT CHARACTER has no use other than as
+a stand-in for some unknown character, any code that has this problem is
+buggy.
+
+=head2 Formerly deprecated characters in C<\N{}> character name aliases are now errors.
+
+Since v5.12.0, it has been deprecated to use certain characters in
+user-defined C<\N{...}> character names. These now cause a syntax
+error. For example, it is now an error to begin a name with a digit,
+such as in
+
+ my $undraftable = "\N{4F}"; # Syntax error!
+
+or to have commas anywhere in the name. See L<charnames/CUSTOM ALIASES>.
+
+=head2 C<\N{BELL}> now refers to U+1F514 instead of U+0007
+
+Unicode 6.0 reused the name "BELL" for a different code point than it
+traditionally had meant. Since Perl v5.14, use of this name still
+referred to U+0007, but would raise a deprecation warning. Now, "BELL"
+refers to U+1F514, and the name for U+0007 is "ALERT". All the
+functions in L<charnames> have been correspondingly updated.
+
+=head2 New Restrictions in Multi-Character Case-Insensitive Matching in Regular Expression Bracketed Character Classes
+
+Unicode has now withdrawn their previous recommendation for regular
+expressions to automatically handle cases where a single character can
+match multiple characters case-insensitively, for example, the letter
+LATIN SMALL LETTER SHARP S and the sequence C<ss>. This is because
+it turns out to be impracticable to do this correctly in all
+circumstances. Because Perl has tried to do this as best it can, it
+will continue to do so. (We are considering an option to turn it off.)
+However, a new restriction is being added on such matches when they
+occur in [bracketed] character classes. People were specifying
+things such as C</[\0-\xff]/i>, and being surprised that it matches the
+two character sequence C<ss> (since LATIN SMALL LETTER SHARP S occurs in
+this range). This behavior is also inconsistent with using a
+property instead of a range: C<\p{Block=Latin1}> also includes LATIN
+SMALL LETTER SHARP S, but C</[\p{Block=Latin1}]/i> does not match C<ss>.
+The new rule is that for there to be a multi-character case-insensitive
+match within a bracketed character class, the character must be
+explicitly listed, and not as an end point of a range. This more
+closely obeys the Principle of Least Astonishment. See
+L<perlrecharclass/Bracketed Character Classes>. Note that a bug [perl
+#89774], now fixed as part of this change, prevented the previous
+behavior from working fully.
+
+=head2 Explicit rules for variable names and identifiers
+
+Due to an oversight, single character variable names in v5.16 were
+completely unrestricted. This opened the door to several kinds of
+insanity. As of v5.18, these now follow the rules of other identifiers,
+in addition to accepting characters that match the C<\p{POSIX_Punct}>
+property.
+
+There is no longer any difference in the parsing of identifiers
+specified by using braces versus without braces. For instance, perl
+used to allow C<${foo:bar}> (with a single colon) but not C<$foo:bar>.
+Now that both are handled by a single code path, they are both treated
+the same way: both are forbidden. Note that this change is about the
+range of permissible literal identifiers, not other expressions.
+
+=head2 Vertical tabs are now whitespace
+
+No one could recall why C<\s> didn't match C<\cK>, the vertical tab.
+Now it does. Given the extreme rarity of that character, very little
+breakage is expected. That said, here's what it means:
+
+C<\s> in a regex now matches a vertical tab in all circumstances.
+
+Literal vertical tabs in a regex literal are ignored when the C</x>
+modifier is used.
+
+Leading vertical tabs, alone or mixed with other whitespace, are now
+ignored when interpreting a string as a number. For example:
+
+ $dec = " \cK \t 123";
+ $hex = " \cK \t 0xF";
+
+ say 0 + $dec; # was 0 with warning, now 123
+ say int $dec; # was 0, now 123
+ say oct $hex; # was 0, now 15
+
+=head2 C</(?{})/> and C</(??{})/> have been heavily reworked
+
+The implementation of this feature has been almost completely rewritten.
+Although its main intent is to fix bugs, some behaviors, especially
+related to the scope of lexical variables, will have changed. This is
+described more fully in the L</Selected Bug Fixes> section.
+
+=head2 Stricter parsing of substitution replacement
+
+It is no longer possible to abuse the way the parser parses C<s///e> like
+this:
+
+ %_=(_,"Just another ");
+ $_="Perl hacker,\n";
+ s//_}->{_/e;print
+
+=head2 C<given> now aliases the global C<$_>
+
+Instead of assigning to an implicit lexical C<$_>, C<given> now makes the
+global C<$_> an alias for its argument, just like C<foreach>. However, it
+still uses lexical C<$_> if there is lexical C<$_> in scope (again, just like
+C<foreach>) [perl #114020].
+
+=head2 The smartmatch family of features are now experimental
+
+Smart match, added in v5.10.0 and significantly revised in v5.10.1, has been
+a regular point of complaint. Although there are a number of ways in which
+it is useful, it has also proven problematic and confusing for both users and
+implementors of Perl. There have been a number of proposals on how to best
+address the problem. It is clear that smartmatch is almost certainly either
+going to change or go away in the future. Relying on its current behavior
+is not recommended.
+
+Warnings will now be issued when the parser sees C<~~>, C<given>, or C<when>.
+To disable these warnings, you can add this line to the appropriate scope:
+
+ no if $] >= 5.018, warnings => "experimental::smartmatch";
+
+Consider, though, replacing the use of these features, as they may change
+behavior again before becoming stable.
+
+=head2 Lexical C<$_> is now experimental
+
+Since it was introduced in Perl v5.10, it has caused much confusion with no
+obvious solution:
+
+=over
+
+=item *
+
+Various modules (e.g., List::Util) expect callback routines to use the
+global C<$_>. C<use List::Util 'first'; my $_; first { $_ == 1 } @list>
+does not work as one would expect.
+
+=item *
+
+A C<my $_> declaration earlier in the same file can cause confusing closure
+warnings.
+
+=item *
+
+The "_" subroutine prototype character allows called subroutines to access
+your lexical C<$_>, so it is not really private after all.
+
+=item *
+
+Nevertheless, subroutines with a "(@)" prototype and methods cannot access
+the caller's lexical C<$_>, unless they are written in XS.
+
+=item *
+
+But even XS routines cannot access a lexical C<$_> declared, not in the
+calling subroutine, but in an outer scope, iff that subroutine happened not
+to mention C<$_> or use any operators that default to C<$_>.
+
+=back
+
+It is our hope that lexical C<$_> can be rehabilitated, but this may
+cause changes in its behavior. Please use it with caution until it
+becomes stable.
+
+=head2 readline() with C<$/ = \N> now reads N characters, not N bytes
+
+Previously, when reading from a stream with I/O layers such as
+C<encoding>, the readline() function, otherwise known as the C<< <> >>
+operator, would read I<N> bytes from the top-most layer. [perl #79960]
+
+Now, I<N> characters are read instead.
+
+There is no change in behaviour when reading from streams with no
+extra layers, since bytes map exactly to characters.
+
+=head2 Overridden C<glob> is now passed one argument
+
+C<glob> overrides used to be passed a magical undocumented second argument
+that identified the caller. Nothing on CPAN was using this, and it got in
+the way of a bug fix, so it was removed. If you really need to identify
+the caller, see L<Devel::Callsite> on CPAN.
+
+=head2 Here doc parsing
+
+The body of a here document inside a quote-like operator now always begins
+on the line after the "<<foo" marker. Previously, it was documented to
+begin on the line following the containing quote-like operator, but that
+was only sometimes the case [perl #114040].
+
+=head2 Alphanumeric operators must now be separated from the closing
+delimiter of regular expressions
+
+You may no longer write something like:
+
+ m/a/and 1
+
+Instead you must write
+
+ m/a/ and 1
+
+with whitespace separating the operator from the closing delimiter of
+the regular expression. Not having whitespace has resulted in a
+deprecation warning since Perl v5.14.0.
+
+=head2 qw(...) can no longer be used as parentheses
+
+C<qw> lists used to fool the parser into thinking they were always
+surrounded by parentheses. This permitted some surprising constructions
+such as C<foreach $x qw(a b c) {...}>, which should really be written
+C<foreach $x (qw(a b c)) {...}>. These would sometimes get the lexer into
+the wrong state, so they didn't fully work, and the similar C<foreach qw(a
+b c) {...}> that one might expect to be permitted never worked at all.
+
+This side effect of C<qw> has now been abolished. It has been deprecated
+since Perl v5.13.11. It is now necessary to use real parentheses
+everywhere that the grammar calls for them.
+
+=head2 Interaction of lexical and default warnings
+
+Turning on any lexical warnings used first to disable all default warnings
+if lexical warnings were not already enabled:
+
+ $*; # deprecation warning
+ use warnings "void";
+ $#; # void warning; no deprecation warning
+
+Now, the C<debugging>, C<deprecated>, C<glob>, C<inplace> and C<malloc> warnings
+categories are left on when turning on lexical warnings (unless they are
+turned off by C<no warnings>, of course).
+
+This may cause deprecation warnings to occur in code that used to be free
+of warnings.
+
+Those are the only categories consisting only of default warnings. Default
+warnings in other categories are still disabled by C<< use warnings "category" >>,
+as we do not yet have the infrastructure for controlling
+individual warnings.
+
+=head2 C<state sub> and C<our sub>
+
+Due to an accident of history, C<state sub> and C<our sub> were equivalent
+to a plain C<sub>, so one could even create an anonymous sub with
+C<our sub { ... }>. These are now disallowed outside of the "lexical_subs"
+feature. Under the "lexical_subs" feature they have new meanings described
+in L<perlsub/Lexical Subroutines>.
+
+=head2 Defined values stored in environment are forced to byte strings
+
+A value stored in an environment variable has always been stringified. In this
+release, it is converted to be only a byte string. First, it is forced to be
+only a string. Then if the string is utf8 and the equivalent of
+C<utf8::downgrade()> works, that result is used; otherwise, the equivalent of
+C<utf8::encode()> is used, and a warning is issued about wide characters
+(L</Diagnostics>).
+
+=head2 C<require> dies for unreadable files
+
+When C<require> encounters an unreadable file, it now dies. It used to
+ignore the file and continue searching the directories in C<@INC>
+[perl #113422].
+
+=head2 C<gv_fetchmeth_*> and SUPER
+
+The various C<gv_fetchmeth_*> XS functions used to treat a package whose
+named ended with C<::SUPER> specially. A method lookup on the C<Foo::SUPER>
+package would be treated as a C<SUPER> method lookup on the C<Foo> package. This
+is no longer the case. To do a C<SUPER> lookup, pass the C<Foo> stash and the
+C<GV_SUPER> flag.
+
+=head2 C<split>'s first argument is more consistently interpreted
+
+After some changes earlier in v5.17, C<split>'s behavior has been
+simplified: if the PATTERN argument evaluates to a string
+containing one space, it is treated the way that a I<literal> string
+containing one space once was.
+
+=head1 Deprecations
+
+=head2 Module removals
+
+The following modules will be removed from the core distribution in a future
+release, and will at that time need to be installed from CPAN. Distributions
+on CPAN which require these modules will need to list them as prerequisites.
+
+The core versions of these modules will now issue C<"deprecated">-category
+warnings to alert you to this fact. To silence these deprecation warnings,
+install the modules in question from CPAN.
+
+Note that these are (with rare exceptions) fine modules that you are encouraged
+to continue to use. Their disinclusion from core primarily hinges on their
+necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
+not usually on concerns over their design.
+
+=over
+
+=item L<encoding>
+
+The use of this pragma is now strongly discouraged. It conflates the encoding
+of source text with the encoding of I/O data, reinterprets escape sequences in
+source text (a questionable choice), and introduces the UTF-8 bug to all runtime
+handling of character strings. It is broken as designed and beyond repair.
+
+For using non-ASCII literal characters in source text, please refer to L<utf8>.
+For dealing with textual I/O data, please refer to L<Encode> and L<open>.
+
+=item L<Archive::Extract>
+
+=item L<B::Lint>
+
+=item L<B::Lint::Debug>
+
+=item L<CPANPLUS> and all included C<CPANPLUS::*> modules
+
+=item L<Devel::InnerPackage>
+
+=item L<Log::Message>
+
+=item L<Log::Message::Config>
+
+=item L<Log::Message::Handlers>
+
+=item L<Log::Message::Item>
+
+=item L<Log::Message::Simple>
+
+=item L<Module::Pluggable>
+
+=item L<Module::Pluggable::Object>
+
+=item L<Object::Accessor>
+
+=item L<Pod::LaTeX>
+
+=item L<Term::UI>
+
+=item L<Term::UI::History>
+
+=back
+
+=head2 Deprecated Utilities
+
+The following utilities will be removed from the core distribution in a
+future release as their associated modules have been deprecated. They
+will remain available with the applicable CPAN distribution.
+
+=over
+
+=item L<cpanp>
+
+=item C<cpanp-run-perl>
+
+=item L<cpan2dist>
+
+These items are part of the C<CPANPLUS> distribution.
+
+=item L<pod2latex>
+
+This item is part of the C<Pod::LaTeX> distribution.
+
+=back
+
+=head2 PL_sv_objcount
+
+This interpreter-global variable used to track the total number of
+Perl objects in the interpreter. It is no longer maintained and will
+be removed altogether in Perl v5.20.
+
+=head2 Five additional characters should be escaped in patterns with C</x>
+
+When a regular expression pattern is compiled with C</x>, Perl treats 6
+characters as white space to ignore, such as SPACE and TAB. However,
+Unicode recommends 11 characters be treated thusly. We will conform
+with this in a future Perl version. In the meantime, use of any of the
+missing characters will raise a deprecation warning, unless turned off.
+The five characters are:
+
+ U+0085 NEXT LINE
+ U+200E LEFT-TO-RIGHT MARK
+ U+200F RIGHT-TO-LEFT MARK
+ U+2028 LINE SEPARATOR
+ U+2029 PARAGRAPH SEPARATOR
+
+=head2 User-defined charnames with surprising whitespace
+
+A user-defined character name with trailing or multiple spaces in a row is
+likely a typo. This now generates a warning when defined, on the assumption
+that uses of it will be unlikely to include the excess whitespace.
+
+=head2 Various XS-callable functions are now deprecated
+
+All the functions used to classify characters will be removed from a
+future version of Perl, and should not be used. With participating C
+compilers (e.g., gcc), compiling any file that uses any of these will
+generate a warning. These were not intended for public use; there are
+equivalent, faster, macros for most of them.
+
+See L<perlapi/Character classes>. The complete list is:
+
+C<is_uni_alnum>, C<is_uni_alnumc>, C<is_uni_alnumc_lc>,
+C<is_uni_alnum_lc>, C<is_uni_alpha>, C<is_uni_alpha_lc>,
+C<is_uni_ascii>, C<is_uni_ascii_lc>, C<is_uni_blank>,
+C<is_uni_blank_lc>, C<is_uni_cntrl>, C<is_uni_cntrl_lc>,
+C<is_uni_digit>, C<is_uni_digit_lc>, C<is_uni_graph>,
+C<is_uni_graph_lc>, C<is_uni_idfirst>, C<is_uni_idfirst_lc>,
+C<is_uni_lower>, C<is_uni_lower_lc>, C<is_uni_print>,
+C<is_uni_print_lc>, C<is_uni_punct>, C<is_uni_punct_lc>,
+C<is_uni_space>, C<is_uni_space_lc>, C<is_uni_upper>,
+C<is_uni_upper_lc>, C<is_uni_xdigit>, C<is_uni_xdigit_lc>,
+C<is_utf8_alnum>, C<is_utf8_alnumc>, C<is_utf8_alpha>,
+C<is_utf8_ascii>, C<is_utf8_blank>, C<is_utf8_char>,
+C<is_utf8_cntrl>, C<is_utf8_digit>, C<is_utf8_graph>,
+C<is_utf8_idcont>, C<is_utf8_idfirst>, C<is_utf8_lower>,
+C<is_utf8_mark>, C<is_utf8_perl_space>, C<is_utf8_perl_word>,
+C<is_utf8_posix_digit>, C<is_utf8_print>, C<is_utf8_punct>,
+C<is_utf8_space>, C<is_utf8_upper>, C<is_utf8_xdigit>,
+C<is_utf8_xidcont>, C<is_utf8_xidfirst>.
+
+In addition these three functions that have never worked properly are
+deprecated:
+C<to_uni_lower_lc>, C<to_uni_title_lc>, and C<to_uni_upper_lc>.
+
+=head2 Certain rare uses of backslashes within regexes are now deprecated
+
+There are three pairs of characters that Perl recognizes as
+metacharacters in regular expression patterns: C<{}>, C<[]>, and C<()>.
+These can be used as well to delimit patterns, as in:
+
+ m{foo}
+ s(foo)(bar)
+
+Since they are metacharacters, they have special meaning to regular
+expression patterns, and it turns out that you can't turn off that
+special meaning by the normal means of preceding them with a backslash,
+if you use them, paired, within a pattern delimited by them. For
+example, in
+
+ m{foo\{1,3\}}
+
+the backslashes do not change the behavior, and this matches
+S<C<"f o">> followed by one to three more occurrences of C<"o">.
+
+Usages like this, where they are interpreted as metacharacters, are
+exceedingly rare; we think there are none, for example, in all of CPAN.
+Hence, this deprecation should affect very little code. It does give
+notice, however, that any such code needs to change, which will in turn
+allow us to change the behavior in future Perl versions so that the
+backslashes do have an effect, and without fear that we are silently
+breaking any existing code.
+
+=head2 Splitting the tokens C<(?> and C<(*> in regular expressions
+
+A deprecation warning is now raised if the C<(> and C<?> are separated
+by white space or comments in C<(?...)> regular expression constructs.
+Similarly, if the C<(> and C<*> are separated in C<(*VERB...)>
+constructs.
+
+=head2 Pre-PerlIO IO implementations
+
+In theory, you can currently build perl without PerlIO. Instead, you'd use a
+wrapper around stdio or sfio. In practice, this isn't very useful. It's not
+well tested, and without any support for IO layers or (thus) Unicode, it's not
+much of a perl. Building without PerlIO will most likely be removed in the
+next version of perl.
+
+PerlIO supports a C<stdio> layer if stdio use is desired. Similarly a
+sfio layer could be produced in the future, if needed.
+
+=head1 Future Deprecations
+
+=over
+
+=item *
+
+Platforms without support infrastructure
+
+Both Windows CE and z/OS have been historically under-maintained, and are
+currently neither successfully building nor regularly being smoke tested.
+Efforts are underway to change this situation, but it should not be taken for
+granted that the platforms are safe and supported. If they do not become
+buildable and regularly smoked, support for them may be actively removed in
+future releases. If you have an interest in these platforms and you can lend
+your time, expertise, or hardware to help support these platforms, please let
+the perl development effort know by emailing C<perl5-porters@perl.org>.
+
+Some platforms that appear otherwise entirely dead are also on the short list
+for removal between now and v5.20.0:
+
+=over
+
+=item DG/UX
+
+=item NeXT
+
+=back
+
+We also think it likely that current versions of Perl will no longer
+build AmigaOS, DJGPP, NetWare (natively), OS/2 and Plan 9. If you
+are using Perl on such a platform and have an interest in ensuring
+Perl's future on them, please contact us.
+
+We believe that Perl has long been unable to build on mixed endian
+architectures (such as PDP-11s), and intend to remove any remaining
+support code. Similarly, code supporting the long umaintained GNU
+dld will be removed soon if no-one makes themselves known as an
+active user.
+
+=item *
+
+Swapping of $< and $>
+
+Perl has supported the idiom of swapping $< and $> (and likewise $( and
+$)) to temporarily drop permissions since 5.0, like this:
+
+ ($<, $>) = ($>, $<);
+
+However, this idiom modifies the real user/group id, which can have
+undesirable side-effects, is no longer useful on any platform perl
+supports and complicates the implementation of these variables and list
+assignment in general.
+
+As an alternative, assignment only to C<< $> >> is recommended:
+
+ local $> = $<;
+
+See also: L<Setuid Demystified|http://www.cs.berkeley.edu/~daw/papers/setuid-usenix02.pdf>.
+
+=item *
+
+C<microperl>, long broken and of unclear present purpose, will be removed.
+
+=item *
+
+Revamping C<< "\Q" >> semantics in double-quotish strings when combined with
+other escapes.
+
+There are several bugs and inconsistencies involving combinations
+of C<\Q> and escapes like C<\x>, C<\L>, etc., within a C<\Q...\E> pair.
+These need to be fixed, and doing so will necessarily change current
+behavior. The changes have not yet been settled.
+
+=item *
+
+Use of C<$x>, where C<x> stands for any actual (non-printing) C0 control
+character will be disallowed in a future Perl version. Use C<${x}>
+instead (where again C<x> stands for a control character),
+or better, C<$^A> , where C<^> is a caret (CIRCUMFLEX ACCENT),
+and C<A> stands for any of the characters listed at the end of
+L<perlebcdic/OPERATOR DIFFERENCES>.
+
+=back
+
+=head1 Performance Enhancements
+
+=over 4
+
+=item *
+
+Lists of lexical variable declarations (C<my($x, $y)>) are now optimised
+down to a single op and are hence faster than before.
+
+=item *
+
+A new C preprocessor define C<NO_TAINT_SUPPORT> was added that, if set,
+disables Perl's taint support altogether. Using the -T or -t command
+line flags will cause a fatal error. Beware that both core tests as
+well as many a CPAN distribution's tests will fail with this change. On
+the upside, it provides a small performance benefit due to reduced
+branching.
+
+B<Do not enable this unless you know exactly what you are getting yourself
+into.>
+
+=item *
+
+C<pack> with constant arguments is now constant folded in most cases
+[perl #113470].
+
+=item *
+
+Speed up in regular expression matching against Unicode properties. The
+largest gain is for C<\X>, the Unicode "extended grapheme cluster." The
+gain for it is about 35% - 40%. Bracketed character classes, e.g.,
+C<[0-9\x{100}]> containing code points above 255 are also now faster.
+
+=item *
+
+On platforms supporting it, several former macros are now implemented as static
+inline functions. This should speed things up slightly on non-GCC platforms.
+
+=item *
+
+The optimisation of hashes in boolean context has been extended to
+affect C<scalar(%hash)>, C<%hash ? ... : ...>, and C<sub { %hash || ... }>.
+
+=item *
+
+Filetest operators manage the stack in a fractionally more efficient manner.
+
+=item *
+
+Globs used in a numeric context are now numified directly in most cases,
+rather than being numified via stringification.
+
+=item *
+
+The C<x> repetition operator is now folded to a single constant at compile
+time if called in scalar context with constant operands and no parentheses
+around the left operand.
+
+=back
+
+=head1 Modules and Pragmata
+
+=head2 New Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<Config::Perl::V> version 0.16 has been added as a dual-lifed module.
+It provides structured data retrieval of C<perl -V> output including
+information only known to the C<perl> binary and not available via L<Config>.
+
+=back
+
+=head2 Updated Modules and Pragmata
+
+For a complete list of updates, run:
+
+ $ corelist --diff 5.16.0 5.18.0
+
+You can substitute your favorite version in place of C<5.16.0>, too.
+
+=over
+
+=item *
+
+L<Archive::Extract> has been upgraded to 0.68.
+
+Work around an edge case on Linux with Busybox's unzip.
+
+=item *
+
+L<Archive::Tar> has been upgraded to 1.90.
+
+ptar now supports the -T option as well as dashless options
+[rt.cpan.org #75473], [rt.cpan.org #75475].
+
+Auto-encode filenames marked as UTF-8 [rt.cpan.org #75474].
+
+Don't use C<tell> on L<IO::Zlib> handles [rt.cpan.org #64339].
+
+Don't try to C<chown> on symlinks.
+
+=item *
+
+L<autodie> has been upgraded to 2.13.
+
+C<autodie> now plays nicely with the 'open' pragma.
+
+=item *
+
+L<B> has been upgraded to 1.42.
+
+The C<stashoff> method of COPs has been added. This provides access to an
+internal field added in perl 5.16 under threaded builds [perl #113034].
+
+C<B::COP::stashpv> now supports UTF-8 package names and embedded NULs.
+
+All C<CVf_*> and C<GVf_*>
+and more SV-related flag values are now provided as constants in the C<B::>
+namespace and available for export. The default export list has not changed.
+
+This makes the module work with the new pad API.
+
+=item *
+
+L<B::Concise> has been upgraded to 0.95.
+
+The C<-nobanner> option has been fixed, and C<format>s can now be dumped.
+When passed a sub name to dump, it will check also to see whether it
+is the name of a format. If a sub and a format share the same name,
+it will dump both.
+
+This adds support for the new C<OpMAYBE_TRUEBOOL> and C<OPpTRUEBOOL> flags.
+
+=item *
+
+L<B::Debug> has been upgraded to 1.18.
+
+This adds support (experimentally) for C<B::PADLIST>, which was
+added in Perl 5.17.4.
+
+=item *
+
+L<B::Deparse> has been upgraded to 1.20.
+
+Avoid warning when run under C<perl -w>.
+
+It now deparses
+loop controls with the correct precedence, and multiple statements in a
+C<format> line are also now deparsed correctly.
+
+This release suppresses trailing semicolons in formats.
+
+This release adds stub deparsing for lexical subroutines.
+
+It no longer dies when deparsing C<sort> without arguments. It now
+correctly omits the comma for C<system $prog @args> and C<exec $prog
+@args>.
+
+=item *
+
+L<bignum>, L<bigint> and L<bigrat> have been upgraded to 0.33.
+
+The overrides for C<hex> and C<oct> have been rewritten, eliminating
+several problems, and making one incompatible change:
+
+=over
+
+=item *
+
+Formerly, whichever of C<use bigint> or C<use bigrat> was compiled later
+would take precedence over the other, causing C<hex> and C<oct> not to
+respect the other pragma when in scope.
+
+=item *
+
+Using any of these three pragmata would cause C<hex> and C<oct> anywhere
+else in the program to evalute their arguments in list context and prevent
+them from inferring $_ when called without arguments.
+
+=item *
+
+Using any of these three pragmata would make C<oct("1234")> return 1234
+(for any number not beginning with 0) anywhere in the program. Now "1234"
+is translated from octal to decimal, whether within the pragma's scope or
+not.
+
+=item *
+
+The global overrides that facilitate lexical use of C<hex> and C<oct> now
+respect any existing overrides that were in place before the new overrides
+were installed, falling back to them outside of the scope of C<use bignum>.
+
+=item *
+
+C<use bignum "hex">, C<use bignum "oct"> and similar invocations for bigint
+and bigrat now export a C<hex> or C<oct> function, instead of providing a
+global override.
+
+=back
+
+=item *
+
+L<Carp> has been upgraded to 1.29.
+
+Carp is no longer confused when C<caller> returns undef for a package that
+has been deleted.
+
+The C<longmess()> and C<shortmess()> functions are now documented.
+
+=item *
+
+L<CGI> has been upgraded to 3.63.
+
+Unrecognized HTML escape sequences are now handled better, problematic
+trailing newlines are no longer inserted after E<lt>formE<gt> tags
+by C<startform()> or C<start_form()>, and bogus "Insecure Dependency"
+warnings appearing with some versions of perl are now worked around.
+
+=item *
+
+L<Class::Struct> has been upgraded to 0.64.
+
+The constructor now respects overridden accessor methods [perl #29230].
+
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded to 2.060.
+
+The misuse of Perl's "magic" API has been fixed.
+
+=item *
+
+L<Compress::Raw::Zlib> has been upgraded to 2.060.
+
+Upgrade bundled zlib to version 1.2.7.
+
+Fix build failures on Irix, Solaris, and Win32, and also when building as C++
+[rt.cpan.org #69985], [rt.cpan.org #77030], [rt.cpan.org #75222].
+
+The misuse of Perl's "magic" API has been fixed.
+
+C<compress()>, C<uncompress()>, C<memGzip()> and C<memGunzip()> have
+been speeded up by making parameter validation more efficient.
+
+=item *
+
+L<CPAN::Meta::Requirements> has been upgraded to 2.122.
+
+Treat undef requirements to C<from_string_hash> as 0 (with a warning).
+
+Added C<requirements_for_module> method.
+
+=item *
+
+L<CPANPLUS> has been upgraded to 0.9135.
+
+Allow adding F<blib/script> to PATH.
+
+Save the history between invocations of the shell.
+
+Handle multiple C<makemakerargs> and C<makeflags> arguments better.
+
+This resolves issues with the SQLite source engine.
+
+=item *
+
+L<Data::Dumper> has been upgraded to 2.145.
+
+It has been optimized to only build a seen-scalar hash as necessary,
+thereby speeding up serialization drastically.
+
+Additional tests were added in order to improve statement, branch, condition
+and subroutine coverage. On the basis of the coverage analysis, some of the
+internals of Dumper.pm were refactored. Almost all methods are now
+documented.
+
+=item *
+
+L<DB_File> has been upgraded to 1.827.
+
+The main Perl module no longer uses the C<"@_"> construct.
+
+=item *
+
+L<Devel::Peek> has been upgraded to 1.11.
+
+This fixes compilation with C++ compilers and makes the module work with
+the new pad API.
+
+=item *
+
+L<Digest::MD5> has been upgraded to 2.52.
+
+Fix C<Digest::Perl::MD5> OO fallback [rt.cpan.org #66634].
+
+=item *
+
+L<Digest::SHA> has been upgraded to 5.84.
+
+This fixes a double-free bug, which might have caused vulnerabilities
+in some cases.
+
+=item *
+
+L<DynaLoader> has been upgraded to 1.18.
+
+This is due to a minor code change in the XS for the VMS implementation.
+
+This fixes warnings about using C<CODE> sections without an C<OUTPUT>
+section.
+
+=item *
+
+L<Encode> has been upgraded to 2.49.
+
+The Mac alias x-mac-ce has been added, and various bugs have been fixed
+in Encode::Unicode, Encode::UTF7 and Encode::GSM0338.
+
+=item *
+
+L<Env> has been upgraded to 1.04.
+
+Its SPLICE implementation no longer misbehaves in list context.
+
+=item *
+
+L<ExtUtils::CBuilder> has been upgraded to 0.280210.
+
+Manifest files are now correctly embedded for those versions of VC++ which
+make use of them. [perl #111782, #111798].
+
+A list of symbols to export can now be passed to C<link()> when on
+Windows, as on other OSes [perl #115100].
+
+=item *
+
+L<ExtUtils::ParseXS> has been upgraded to 3.18.
+
+The generated C code now avoids unnecessarily incrementing
+C<PL_amagic_generation> on Perl versions where it's done automatically
+(or on current Perl where the variable no longer exists).
+
+This avoids a bogus warning for initialised XSUB non-parameters [perl
+#112776].
+
+=item *
+
+L<File::Copy> has been upgraded to 2.26.
+
+C<copy()> no longer zeros files when copying into the same directory,
+and also now fails (as it has long been documented to do) when attempting
+to copy a file over itself.
+
+=item *
+
+L<File::DosGlob> has been upgraded to 1.10.
+
+The internal cache of file names that it keeps for each caller is now
+freed when that caller is freed. This means
+C<< use File::DosGlob 'glob'; eval 'scalar <*>' >> no longer leaks memory.
+
+=item *
+
+L<File::Fetch> has been upgraded to 0.38.
+
+Added the 'file_default' option for URLs that do not have a file
+component.
+
+Use C<File::HomeDir> when available, and provide C<PERL5_CPANPLUS_HOME> to
+override the autodetection.
+
+Always re-fetch F<CHECKSUMS> if C<fetchdir> is set.
+
+=item *
+
+L<File::Find> has been upgraded to 1.23.
+
+This fixes inconsistent unixy path handling on VMS.
+
+Individual files may now appear in list of directories to be searched
+[perl #59750].
+
+=item *
+
+L<File::Glob> has been upgraded to 1.20.
+
+File::Glob has had exactly the same fix as File::DosGlob. Since it is
+what Perl's own C<glob> operator itself uses (except on VMS), this means
+C<< eval 'scalar <*>' >> no longer leaks.
+
+A space-separated list of patterns return long lists of results no longer
+results in memory corruption or crashes. This bug was introduced in
+Perl 5.16.0. [perl #114984]
+
+=item *
+
+L<File::Spec::Unix> has been upgraded to 3.40.
+
+C<abs2rel> could produce incorrect results when given two relative paths or
+the root directory twice [perl #111510].
+
+=item *
+
+L<File::stat> has been upgraded to 1.07.
+
+C<File::stat> ignores the L<filetest> pragma, and warns when used in
+combination therewith. But it was not warning for C<-r>. This has been
+fixed [perl #111640].
+
+C<-p> now works, and does not return false for pipes [perl #111638].
+
+Previously C<File::stat>'s overloaded C<-x> and C<-X> operators did not give
+the correct results for directories or executable files when running as
+root. They had been treating executable permissions for root just like for
+any other user, performing group membership tests I<etc> for files not owned
+by root. They now follow the correct Unix behaviour - for a directory they
+are always true, and for a file if any of the three execute permission bits
+are set then they report that root can execute the file. Perl's builtin
+C<-x> and C<-X> operators have always been correct.
+
+=item *
+
+L<File::Temp> has been upgraded to 0.23
+
+Fixes various bugs involving directory removal. Defers unlinking tempfiles if
+the initial unlink fails, which fixes problems on NFS.
+
+=item *
+
+L<GDBM_File> has been upgraded to 1.15.
+
+The undocumented optional fifth parameter to C<TIEHASH> has been
+removed. This was intended to provide control of the callback used by
+C<gdbm*> functions in case of fatal errors (such as filesystem problems),
+but did not work (and could never have worked). No code on CPAN even
+attempted to use it. The callback is now always the previous default,
+C<croak>. Problems on some platforms with how the C<C> C<croak> function
+is called have also been resolved.
+
+=item *
+
+L<Hash::Util> has been upgraded to 0.15.
+
+C<hash_unlocked> and C<hashref_unlocked> now returns true if the hash is
+unlocked, instead of always returning false [perl #112126].
+
+C<hash_unlocked>, C<hashref_unlocked>, C<lock_hash_recurse> and
+C<unlock_hash_recurse> are now exportable [perl #112126].
+
+Two new functions, C<hash_locked> and C<hashref_locked>, have been added.
+Oddly enough, these two functions were already exported, even though they
+did not exist [perl #112126].
+
+=item *
+
+L<HTTP::Tiny> has been upgraded to 0.025.
+
+Add SSL verification features [github #6], [github #9].
+
+Include the final URL in the response hashref.
+
+Add C<local_address> option.
+
+This improves SSL support.
+
+=item *
+
+L<IO> has been upgraded to 1.28.
+
+C<sync()> can now be called on read-only file handles [perl #64772].
+
+L<IO::Socket> tries harder to cache or otherwise fetch socket
+information.
+
+=item *
+
+L<IPC::Cmd> has been upgraded to 0.80.
+
+Use C<POSIX::_exit> instead of C<exit> in C<run_forked> [rt.cpan.org #76901].
+
+=item *
+
+L<IPC::Open3> has been upgraded to 1.13.
+
+The C<open3()> function no longer uses C<POSIX::close()> to close file
+descriptors since that breaks the ref-counting of file descriptors done by
+PerlIO in cases where the file descriptors are shared by PerlIO streams,
+leading to attempts to close the file descriptors a second time when
+any such PerlIO streams are closed later on.
+
+=item *
+
+L<Locale::Codes> has been upgraded to 3.25.
+
+It includes some new codes.
+
+=item *
+
+L<Memoize> has been upgraded to 1.03.
+
+Fix the C<MERGE> cache option.
+
+=item *
+
+L<Module::Build> has been upgraded to 0.4003.
+
+Fixed bug where modules without C<$VERSION> might have a version of '0' listed
+in 'provides' metadata, which will be rejected by PAUSE.
+
+Fixed bug in PodParser to allow numerals in module names.
+
+Fixed bug where giving arguments twice led to them becoming arrays, resulting
+in install paths like F<ARRAY(0xdeadbeef)/lib/Foo.pm>.
+
+A minor bug fix allows markup to be used around the leading "Name" in
+a POD "abstract" line, and some documentation improvements have been made.
+
+=item *
+
+L<Module::CoreList> has been upgraded to 2.90
+
+Version information is now stored as a delta, which greatly reduces the
+size of the F<CoreList.pm> file.
+
+This restores compatibility with older versions of perl and cleans up
+the corelist data for various modules.
+
+=item *
+
+L<Module::Load::Conditional> has been upgraded to 0.54.
+
+Fix use of C<requires> on perls installed to a path with spaces.
+
+Various enhancements include the new use of Module::Metadata.
+
+=item *
+
+L<Module::Metadata> has been upgraded to 1.000011.
+
+The creation of a Module::Metadata object for a typical module file has
+been sped up by about 40%, and some spurious warnings about C<$VERSION>s
+have been suppressed.
+
+=item *
+
+L<Module::Pluggable> has been upgraded to 4.7.
+
+Amongst other changes, triggers are now allowed on events, which gives
+a powerful way to modify behaviour.
+
+=item *
+
+L<Net::Ping> has been upgraded to 2.41.
+
+This fixes some test failures on Windows.
+
+=item *
+
+L<Opcode> has been upgraded to 1.25.
+
+Reflect the removal of the boolkeys opcode and the addition of the
+clonecv, introcv and padcv opcodes.
+
+=item *
+
+L<overload> has been upgraded to 1.22.
+
+C<no overload> now warns for invalid arguments, just like C<use overload>.
+
+=item *
+
+L<PerlIO::encoding> has been upgraded to 0.16.
+
+This is the module implementing the ":encoding(...)" I/O layer. It no
+longer corrupts memory or crashes when the encoding back-end reallocates
+the buffer or gives it a typeglob or shared hash key scalar.
+
+=item *
+
+L<PerlIO::scalar> has been upgraded to 0.16.
+
+The buffer scalar supplied may now only contain code pounts 0xFF or
+lower. [perl #109828]
+
+=item *
+
+L<Perl::OSType> has been upgraded to 1.003.
+
+This fixes a bug detecting the VOS operating system.
+
+=item *
+
+L<Pod::Html> has been upgraded to 1.18.
+
+The option C<--libpods> has been reinstated. It is deprecated, and its use
+does nothing other than issue a warning that it is no longer supported.
+
+Since the HTML files generated by pod2html claim to have a UTF-8 charset,
+actually write the files out using UTF-8 [perl #111446].
+
+=item *
+
+L<Pod::Simple> has been upgraded to 3.28.
+
+Numerous improvements have been made, mostly to Pod::Simple::XHTML,
+which also has a compatibility change: the C<codes_in_verbatim> option
+is now disabled by default. See F<cpan/Pod-Simple/ChangeLog> for the
+full details.
+
+=item *
+
+L<re> has been upgraded to 0.23
+
+Single character [class]es like C</[s]/> or C</[s]/i> are now optimized
+as if they did not have the brackets, i.e. C</s/> or C</s/i>.
+
+See note about C<op_comp> in the L</Internal Changes> section below.
+
+=item *
+
+L<Safe> has been upgraded to 2.35.
+
+Fix interactions with C<Devel::Cover>.
+
+Don't eval code under C<no strict>.
+
+=item *
+
+L<Scalar::Util> has been upgraded to version 1.27.
+
+Fix an overloading issue with C<sum>.
+
+C<first> and C<reduce> now check the callback first (so C<&first(1)> is
+disallowed).
+
+Fix C<tainted> on magical values [rt.cpan.org #55763].
+
+Fix C<sum> on previously magical values [rt.cpan.org #61118].
+
+Fix reading past the end of a fixed buffer [rt.cpan.org #72700].
+
+=item *
+
+L<Search::Dict> has been upgraded to 1.07.
+
+No longer require C<stat> on filehandles.
+
+Use C<fc> for casefolding.
+
+=item *
+
+L<Socket> has been upgraded to 2.009.
+
+Constants and functions required for IP multicast source group membership
+have been added.
+
+C<unpack_sockaddr_in()> and C<unpack_sockaddr_in6()> now return just the IP
+address in scalar context, and C<inet_ntop()> now guards against incorrect
+length scalars being passed in.
+
+This fixes an uninitialized memory read.
+
+=item *
+
+L<Storable> has been upgraded to 2.41.
+
+Modifying C<$_[0]> within C<STORABLE_freeze> no longer results in crashes
+[perl #112358].
+
+An object whose class implements C<STORABLE_attach> is now thawed only once
+when there are multiple references to it in the structure being thawed
+[perl #111918].
+
+Restricted hashes were not always thawed correctly [perl #73972].
+
+Storable would croak when freezing a blessed REF object with a
+C<STORABLE_freeze()> method [perl #113880].
+
+It can now freeze and thaw vstrings correctly. This causes a slight
+incompatible change in the storage format, so the format version has
+increased to 2.9.
+
+This contains various bugfixes, including compatibility fixes for older
+versions of Perl and vstring handling.
+
+=item *
+
+L<Sys::Syslog> has been upgraded to 0.32.
+
+This contains several bug fixes relating to C<getservbyname()>,
+C<setlogsock()>and log levels in C<syslog()>, together with fixes for
+Windows, Haiku-OS and GNU/kFreeBSD. See F<cpan/Sys-Syslog/Changes>
+for the full details.
+
+=item *
+
+L<Term::ANSIColor> has been upgraded to 4.02.
+
+Add support for italics.
+
+Improve error handling.
+
+=item *
+
+L<Term::ReadLine> has been upgraded to 1.10. This fixes the
+use of the B<cpan> and B<cpanp> shells on Windows in the event that the current
+drive happens to contain a F<\dev\tty> file.
+
+=item *
+
+L<Test::Harness> has been upgraded to 3.26.
+
+Fix glob semantics on Win32 [rt.cpan.org #49732].
+
+Don't use C<Win32::GetShortPathName> when calling perl [rt.cpan.org #47890].
+
+Ignore -T when reading shebang [rt.cpan.org #64404].
+
+Handle the case where we don't know the wait status of the test more
+gracefully.
+
+Make the test summary 'ok' line overridable so that it can be changed to a
+plugin to make the output of prove idempotent.
+
+Don't run world-writable files.
+
+=item *
+
+L<Text::Tabs> and L<Text::Wrap> have been upgraded to
+2012.0818. Support for Unicode combining characters has been added to them
+both.
+
+=item *
+
+L<threads::shared> has been upgraded to 1.31.
+
+This adds the option to warn about or ignore attempts to clone structures
+that can't be cloned, as opposed to just unconditionally dying in
+that case.
+
+This adds support for dual-valued values as created by
+L<Scalar::Util::dualvar|Scalar::Util/"dualvar NUM, STRING">.
+
+=item *
+
+L<Tie::StdHandle> has been upgraded to 4.3.
+
+C<READ> now respects the offset argument to C<read> [perl #112826].
+
+=item *
+
+L<Time::Local> has been upgraded to 1.2300.
+
+Seconds values greater than 59 but less than 60 no longer cause
+C<timegm()> and C<timelocal()> to croak.
+
+=item *
+
+L<Unicode::UCD> has been upgraded to 0.53.
+
+This adds a function L<all_casefolds()|Unicode::UCD/all_casefolds()>
+that returns all the casefolds.
+
+=item *
+
+L<Win32> has been upgraded to 0.47.
+
+New APIs have been added for getting and setting the current code page.
+
+=back
+
+
+=head2 Removed Modules and Pragmata
+
+=over
+
+=item *
+
+L<Version::Requirements> has been removed from the core distribution. It is
+available under a different name: L<CPAN::Meta::Requirements>.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlcheat>
+
+=over 4
+
+=item *
+
+L<perlcheat> has been reorganized, and a few new sections were added.
+
+=back
+
+=head3 L<perldata>
+
+=over 4
+
+=item *
+
+Now explicitly documents the behaviour of hash initializer lists that
+contain duplicate keys.
+
+=back
+
+=head3 L<perldiag>
+
+=over 4
+
+=item *
+
+The explanation of symbolic references being prevented by "strict refs"
+now doesn't assume that the reader knows what symbolic references are.
+
+=back
+
+=head3 L<perlfaq>
+
+=over 4
+
+=item *
+
+L<perlfaq> has been synchronized with version 5.0150040 from CPAN.
+
+=back
+
+=head3 L<perlfunc>
+
+=over 4
+
+=item *
+
+The return value of C<pipe> is now documented.
+
+=item *
+
+Clarified documentation of C<our>.
+
+=back
+
+=head3 L<perlop>
+
+=over 4
+
+=item *
+
+Loop control verbs (C<dump>, C<goto>, C<next>, C<last> and C<redo>) have always
+had the same precedence as assignment operators, but this was not documented
+until now.
+
+=back
+
+=head3 Diagnostics
+
+The following additions or changes have been made to diagnostic output,
+including warnings and fatal error messages. For the complete list of
+diagnostic messages, see L<perldiag>.
+
+=head2 New Diagnostics
+
+=head3 New Errors
+
+=over 4
+
+=item *
+
+L<Unterminated delimiter for here document|perldiag/"Unterminated delimiter for here document">
+
+This message now occurs when a here document label has an initial quotation
+mark but the final quotation mark is missing.
+
+This replaces a bogus and misleading error message about not finding the label
+itself [perl #114104].
+
+=item *
+
+L<panic: child pseudo-process was never scheduled|perldiag/"panic: child pseudo-process was never scheduled">
+
+This error is thrown when a child pseudo-process in the ithreads implementation
+on Windows was not scheduled within the time period allowed and therefore was
+not able to initialize properly [perl #88840].
+
+=item *
+
+L<Group name must start with a non-digit word character in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Group name must start with a non-digit word character in regex; marked by <-- HERE in m/%s/">
+
+This error has been added for C<(?&0)>, which is invalid. It used to
+produce an incomprehensible error message [perl #101666].
+
+=item *
+
+L<Can't use an undefined value as a subroutine reference|perldiag/"Can't use an undefined value as %s reference">
+
+Calling an undefined value as a subroutine now produces this error message.
+It used to, but was accidentally disabled, first in Perl 5.004 for
+non-magical variables, and then in Perl v5.14 for magical (e.g., tied)
+variables. It has now been restored. In the mean time, undef was treated
+as an empty string [perl #113576].
+
+=item *
+
+L<Experimental "%s" subs not enabled|perldiag/"Experimental "%s" subs not enabled">
+
+To use lexical subs, you must first enable them:
+
+ no warnings 'experimental::lexical_subs';
+ use feature 'lexical_subs';
+ my sub foo { ... }
+
+=back
+
+=head3 New Warnings
+
+=over 4
+
+=item *
+
+L<'Strings with code points over 0xFF may not be mapped into in-memory file handles'|perldiag/"Strings with code points over 0xFF may not be mapped into in-memory file handles">
+
+=item *
+
+L<'%s' resolved to '\o{%s}%d'|perldiag/"'%s' resolved to '\o{%s}%d'">
+
+=item *
+
+L<'Trailing white-space in a charnames alias definition is deprecated'|perldiag/"Trailing white-space in a charnames alias definition is deprecated">
+
+=item *
+
+L<'A sequence of multiple spaces in a charnames alias definition is deprecated'|perldiag/"A sequence of multiple spaces in a charnames alias definition is deprecated">
+
+=item *
+
+L<'Passing malformed UTF-8 to "%s" is deprecated'|perldiag/"Passing malformed UTF-8 to "%s" is deprecated">
+
+=item *
+
+L<Subroutine "&%s" is not available|perldiag/"Subroutine "&%s" is not available">
+
+(W closure) During compilation, an inner named subroutine or eval is
+attempting to capture an outer lexical subroutine that is not currently
+available. This can happen for one of two reasons. First, the lexical
+subroutine may be declared in an outer anonymous subroutine that has not
+yet been created. (Remember that named subs are created at compile time,
+while anonymous subs are created at run-time.) For example,
+
+ sub { my sub a {...} sub f { \&a } }
+
+At the time that f is created, it can't capture the current the "a" sub,
+since the anonymous subroutine hasn't been created yet. Conversely, the
+following won't give a warning since the anonymous subroutine has by now
+been created and is live:
+
+ sub { my sub a {...} eval 'sub f { \&a }' }->();
+
+The second situation is caused by an eval accessing a variable that has
+gone out of scope, for example,
+
+ sub f {
+ my sub a {...}
+ sub { eval '\&a' }
+ }
+ f()->();
+
+Here, when the '\&a' in the eval is being compiled, f() is not currently
+being executed, so its &a is not available for capture.
+
+=item *
+
+L<"%s" subroutine &%s masks earlier declaration in same %s|perldiag/"%s" subroutine &%s masks earlier declaration in same %s>
+
+(W misc) A "my" or "state" subroutine has been redeclared in the
+current scope or statement, effectively eliminating all access to
+the previous instance. This is almost always a typographical error.
+Note that the earlier subroutine will still exist until the end of
+the scope or until all closure references to it are destroyed.
+
+=item *
+
+L<The %s feature is experimental|perldiag/"The %s feature is experimental">
+
+(S experimental) This warning is emitted if you enable an experimental
+feature via C<use feature>. Simply suppress the warning if you want
+to use the feature, but know that in doing so you are taking the risk
+of using an experimental feature which may change or be removed in a
+future Perl version:
+
+ no warnings "experimental::lexical_subs";
+ use feature "lexical_subs";
+
+=item *
+
+L<sleep(%u) too large|perldiag/"sleep(%u) too large">
+
+(W overflow) You called C<sleep> with a number that was larger than it can
+reliably handle and C<sleep> probably slept for less time than requested.
+
+=item *
+
+L<Wide character in setenv|perldiag/"Wide character in %s">
+
+Attempts to put wide characters into environment variables via C<%ENV> now
+provoke this warning.
+
+=item *
+
+"L<Invalid negative number (%s) in chr|perldiag/"Invalid negative number (%s) in chr">"
+
+C<chr()> now warns when passed a negative value [perl #83048].
+
+=item *
+
+"L<Integer overflow in srand|perldiag/"Integer overflow in srand">"
+
+C<srand()> now warns when passed a value that doesn't fit in a C<UV> (since the
+value will be truncated rather than overflowing) [perl #40605].
+
+=item *
+
+"L<-i used with no filenames on the command line, reading from STDIN|perldiag/"-i used with no filenames on the command line, reading from STDIN">"
+
+Running perl with the C<-i> flag now warns if no input files are provided on
+the command line [perl #113410].
+
+=back
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+L<$* is no longer supported|perldiag/"$* is no longer supported">
+
+The warning that use of C<$*> and C<$#> is no longer supported is now
+generated for every location that references them. Previously it would fail
+to be generated if another variable using the same typeglob was seen first
+(e.g. C<@*> before C<$*>), and would not be generated for the second and
+subsequent uses. (It's hard to fix the failure to generate warnings at all
+without also generating them every time, and warning every time is
+consistent with the warnings that C<$[> used to generate.)
+
+=item *
+
+The warnings for C<\b{> and C<\B{> were added. They are a deprecation
+warning which should be turned off by that category. One should not
+have to turn off regular regexp warnings as well to get rid of these.
+
+=item *
+
+L<Constant(%s): Call to &{$^H{%s}} did not return a defined value|perldiag/Constant(%s): Call to &{$^H{%s}} did not return a defined value>
+
+Constant overloading that returns C<undef> results in this error message.
+For numeric constants, it used to say "Constant(undef)". "undef" has been
+replaced with the number itself.
+
+=item *
+
+The error produced when a module cannot be loaded now includes a hint that
+the module may need to be installed: "Can't locate hopping.pm in @INC (you
+may need to install the hopping module) (@INC contains: ...)"
+
+=item *
+
+L<vector argument not supported with alpha versions|perldiag/vector argument not supported with alpha versions>
+
+This warning was not suppressable, even with C<no warnings>. Now it is
+suppressible, and has been moved from the "internal" category to the
+"printf" category.
+
+=item *
+
+C<< Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/ >>
+
+This fatal error has been turned into a warning that reads:
+
+L<< Quantifier {n,m} with n > m can't match in regex | perldiag/Quantifier {n,m} with n > m can't match in regex >>
+
+(W regexp) Minima should be less than or equal to maxima. If you really want
+your regexp to match something 0 times, just put {0}.
+
+=item *
+
+The "Runaway prototype" warning that occurs in bizarre cases has been
+removed as being unhelpful and inconsistent.
+
+=item *
+
+The "Not a format reference" error has been removed, as the only case in
+which it could be triggered was a bug.
+
+=item *
+
+The "Unable to create sub named %s" error has been removed for the same
+reason.
+
+=item *
+
+The 'Can't use "my %s" in sort comparison' error has been downgraded to a
+warning, '"my %s" used in sort comparison' (with 'state' instead of 'my'
+for state variables). In addition, the heuristics for guessing whether
+lexical $a or $b has been misused have been improved to generate fewer
+false positives. Lexical $a and $b are no longer disallowed if they are
+outside the sort block. Also, a named unary or list operator inside the
+sort block no longer causes the $a or $b to be ignored [perl #86136].
+
+=back
+
+=head1 Utility Changes
+
+=head3 L<h2xs>
+
+=over 4
+
+=item *
+
+F<h2xs> no longer produces invalid code for empty defines. [perl #20636]
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+Added C<useversionedarchname> option to Configure
+
+When set, it includes 'api_versionstring' in 'archname'. E.g.
+x86_64-linux-5.13.6-thread-multi. It is unset by default.
+
+This feature was requested by Tim Bunce, who observed that
+C<INSTALL_BASE> creates a library structure that does not
+differentiate by perl version. Instead, it places architecture
+specific files in "$install_base/lib/perl5/$archname". This makes
+it difficult to use a common C<INSTALL_BASE> library path with
+multiple versions of perl.
+
+By setting C<-Duseversionedarchname>, the $archname will be
+distinct for architecture I<and> API version, allowing mixed use of
+C<INSTALL_BASE>.
+
+=item *
+
+Add a C<PERL_NO_INLINE_FUNCTIONS> option
+
+If C<PERL_NO_INLINE_FUNCTIONS> is defined, don't include "inline.h"
+
+This permits test code to include the perl headers for definitions without
+creating a link dependency on the perl library (which may not exist yet).
+
+=item *
+
+Configure will honour the external C<MAILDOMAIN> environment variable, if set.
+
+=item *
+
+C<installman> no longer ignores the silent option
+
+=item *
+
+Both C<META.yml> and C<META.json> files are now included in the distribution.
+
+=item *
+
+F<Configure> will now correctly detect C<isblank()> when compiling with a C++
+compiler.
+
+=item *
+
+The pager detection in F<Configure> has been improved to allow responses which
+specify options after the program name, e.g. B</usr/bin/less -R>, if the user
+accepts the default value. This helps B<perldoc> when handling ANSI escapes
+[perl #72156].
+
+=back
+
+=head1 Testing
+
+=over 4
+
+=item *
+
+The test suite now has a section for tests that require very large amounts
+of memory. These tests won't run by default; they can be enabled by
+setting the C<PERL_TEST_MEMORY> environment variable to the number of
+gibibytes of memory that may be safely used.
+
+=back
+
+=head1 Platform Support
+
+=head2 Discontinued Platforms
+
+=over 4
+
+=item BeOS
+
+BeOS was an operating system for personal computers developed by Be Inc,
+initially for their BeBox hardware. The OS Haiku was written as an open
+source replacement for/continuation of BeOS, and its perl port is current and
+actively maintained.
+
+=item UTS Global
+
+Support code relating to UTS global has been removed. UTS was a mainframe
+version of System V created by Amdahl, subsequently sold to UTS Global. The
+port has not been touched since before Perl v5.8.0, and UTS Global is now
+defunct.
+
+=item VM/ESA
+
+Support for VM/ESA has been removed. The port was tested on 2.3.0, which
+IBM ended service on in March 2002. 2.4.0 ended service in June 2003, and
+was superseded by Z/VM. The current version of Z/VM is V6.2.0, and scheduled
+for end of service on 2015/04/30.
+
+=item MPE/IX
+
+Support for MPE/IX has been removed.
+
+=item EPOC
+
+Support code relating to EPOC has been removed. EPOC was a family of
+operating systems developed by Psion for mobile devices. It was the
+predecessor of Symbian. The port was last updated in April 2002.
+
+=item Rhapsody
+
+Support for Rhapsody has been removed.
+
+=back
+
+=head2 Platform-Specific Notes
+
+=head3 AIX
+
+Configure now always adds C<-qlanglvl=extc99> to the CC flags on AIX when
+using xlC. This will make it easier to compile a number of XS-based modules
+that assume C99 [perl #113778].
+
+=head3 clang++
+
+There is now a workaround for a compiler bug that prevented compiling
+with clang++ since Perl v5.15.7 [perl #112786].
+
+=head3 C++
+
+When compiling the Perl core as C++ (which is only semi-supported), the
+mathom functions are now compiled as C<extern "C">, to ensure proper
+binary compatibility. (However, binary compatibility isn't generally
+guaranteed anyway in the situations where this would matter.)
+
+=head3 Darwin
+
+Stop hardcoding an alignment on 8 byte boundaries to fix builds using
+-Dusemorebits.
+
+=head3 Haiku
+
+Perl should now work out of the box on Haiku R1 Alpha 4.
+
+=head3 MidnightBSD
+
+C<libc_r> was removed from recent versions of MidnightBSD and older versions
+work better with C<pthread>. Threading is now enabled using C<pthread> which
+corrects build errors with threading enabled on 0.4-CURRENT.
+
+=head3 Solaris
+
+In Configure, avoid running sed commands with flags not supported on Solaris.
+
+=head3 VMS
+
+=over
+
+=item *
+
+Where possible, the case of filenames and command-line arguments is now
+preserved by enabling the CRTL features C<DECC$EFS_CASE_PRESERVE> and
+C<DECC$ARGV_PARSE_STYLE> at start-up time. The latter only takes effect
+when extended parse is enabled in the process from which Perl is run.
+
+=item *
+
+The character set for Extended Filename Syntax (EFS) is now enabled by default
+on VMS. Among other things, this provides better handling of dots in directory
+names, multiple dots in filenames, and spaces in filenames. To obtain the old
+behavior, set the logical name C<DECC$EFS_CHARSET> to C<DISABLE>.
+
+=item *
+
+Fixed linking on builds configured with C<-Dusemymalloc=y>.
+
+=item *
+
+Experimental support for building Perl with the HP C++ compiler is available
+by configuring with C<-Dusecxx>.
+
+=item *
+
+All C header files from the top-level directory of the distribution are now
+installed on VMS, providing consistency with a long-standing practice on other
+platforms. Previously only a subset were installed, which broke non-core
+extension builds for extensions that depended on the missing include files.
+
+=item *
+
+Quotes are now removed from the command verb (but not the parameters) for
+commands spawned via C<system>, backticks, or a piped C<open>. Previously,
+quotes on the verb were passed through to DCL, which would fail to recognize
+the command. Also, if the verb is actually a path to an image or command
+procedure on an ODS-5 volume, quoting it now allows the path to contain spaces.
+
+=item *
+
+The B<a2p> build has been fixed for the HP C++ compiler on OpenVMS.
+
+=back
+
+=head3 Win32
+
+=over
+
+=item *
+
+Perl can now be built using Microsoft's Visual C++ 2012 compiler by specifying
+CCTYPE=MSVC110 (or MSVC110FREE if you are using the free Express edition for
+Windows Desktop) in F<win32/Makefile>.
+
+=item *
+
+The option to build without C<USE_SOCKETS_AS_HANDLES> has been removed.
+
+=item *
+
+Fixed a problem where perl could crash while cleaning up threads (including the
+main thread) in threaded debugging builds on Win32 and possibly other platforms
+[perl #114496].
+
+=item *
+
+A rare race condition that would lead to L<sleep|perlfunc/sleep> taking more
+time than requested, and possibly even hanging, has been fixed [perl #33096].
+
+=item *
+
+C<link> on Win32 now attempts to set C<$!> to more appropriate values
+based on the Win32 API error code. [perl #112272]
+
+Perl no longer mangles the environment block, e.g. when launching a new
+sub-process, when the environment contains non-ASCII characters. Known
+problems still remain, however, when the environment contains characters
+outside of the current ANSI codepage (e.g. see the item about Unicode in
+C<%ENV> in L<http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/todo.pod>).
+[perl #113536]
+
+=item *
+
+Building perl with some Windows compilers used to fail due to a problem
+with miniperl's C<glob> operator (which uses the C<perlglob> program)
+deleting the PATH environment variable [perl #113798].
+
+=item *
+
+A new makefile option, C<USE_64_BIT_INT>, has been added to the Windows
+makefiles. Set this to "define" when building a 32-bit perl if you want
+it to use 64-bit integers.
+
+Machine code size reductions, already made to the DLLs of XS modules in
+Perl v5.17.2, have now been extended to the perl DLL itself.
+
+Building with VC++ 6.0 was inadvertently broken in Perl v5.17.2 but has
+now been fixed again.
+
+=back
+
+=head3 WinCE
+
+Building on WinCE is now possible once again, although more work is required
+to fully restore a clean build.
+
+=head1 Internal Changes
+
+=over
+
+=item *
+
+Synonyms for the misleadingly named C<av_len()> have been created:
+C<av_top_index()> and C<av_tindex>. All three of these return the
+number of the highest index in the array, not the number of elements it
+contains.
+
+=item *
+
+SvUPGRADE() is no longer an expression. Originally this macro (and its
+underlying function, sv_upgrade()) were documented as boolean, although
+in reality they always croaked on error and never returned false. In 2005
+the documentation was updated to specify a void return value, but
+SvUPGRADE() was left always returning 1 for backwards compatibility. This
+has now been removed, and SvUPGRADE() is now a statement with no return
+value.
+
+So this is now a syntax error:
+
+ if (!SvUPGRADE(sv)) { croak(...); }
+
+If you have code like that, simply replace it with
+
+ SvUPGRADE(sv);
+
+or to avoid compiler warnings with older perls, possibly
+
+ (void)SvUPGRADE(sv);
+
+=item *
+
+Perl has a new copy-on-write mechanism that allows any SvPOK scalar to be
+upgraded to a copy-on-write scalar. A reference count on the string buffer
+is stored in the string buffer itself. This feature is B<not enabled by
+default>.
+
+It can be enabled in a perl build by running F<Configure> with
+B<-Accflags=-DPERL_NEW_COPY_ON_WRITE>, and we would encourage XS authors
+to try their code with such an enabled perl, and provide feedback.
+Unfortunately, there is not yet a good guide to updating XS code to cope
+with COW. Until such a document is available, consult the perl5-porters
+mailing list.
+
+It breaks a few XS modules by allowing copy-on-write scalars to go
+through code paths that never encountered them before.
+
+=item *
+
+Copy-on-write no longer uses the SvFAKE and SvREADONLY flags. Hence,
+SvREADONLY indicates a true read-only SV.
+
+Use the SvIsCOW macro (as before) to identify a copy-on-write scalar.
+
+=item *
+
+C<PL_glob_index> is gone.
+
+=item *
+
+The private Perl_croak_no_modify has had its context parameter removed. It is
+now has a void prototype. Users of the public API croak_no_modify remain
+unaffected.
+
+=item *
+
+Copy-on-write (shared hash key) scalars are no longer marked read-only.
+C<SvREADONLY> returns false on such an SV, but C<SvIsCOW> still returns
+true.
+
+=item *
+
+A new op type, C<OP_PADRANGE> has been introduced. The perl peephole
+optimiser will, where possible, substitute a single padrange op for a
+pushmark followed by one or more pad ops, and possibly also skipping list
+and nextstate ops. In addition, the op can carry out the tasks associated
+with the RHS of a C<< my(...) = @_ >> assignment, so those ops may be optimised
+away too.
+
+=item *
+
+Case-insensitive matching inside a [bracketed] character class with a
+multi-character fold no longer excludes one of the possibilities in the
+circumstances that it used to. [perl #89774].
+
+=item *
+
+C<PL_formfeed> has been removed.
+
+=item *
+
+The regular expression engine no longer reads one byte past the end of the
+target string. While for all internally well-formed scalars this should
+never have been a problem, this change facilitates clever tricks with
+string buffers in CPAN modules. [perl #73542]
+
+=item *
+
+Inside a BEGIN block, C<PL_compcv> now points to the currently-compiling
+subroutine, rather than the BEGIN block itself.
+
+=item *
+
+C<mg_length> has been deprecated.
+
+=item *
+
+C<sv_len> now always returns a byte count and C<sv_len_utf8> a character
+count. Previously, C<sv_len> and C<sv_len_utf8> were both buggy and would
+sometimes returns bytes and sometimes characters. C<sv_len_utf8> no longer
+assumes that its argument is in UTF-8. Neither of these creates UTF-8 caches
+for tied or overloaded values or for non-PVs any more.
+
+=item *
+
+C<sv_mortalcopy> now copies string buffers of shared hash key scalars when
+called from XS modules [perl #79824].
+
+=item *
+
+C<RXf_SPLIT> and C<RXf_SKIPWHITE> are no longer used. They are now
+#defined as 0.
+
+=item *
+
+The new C<RXf_MODIFIES_VARS> flag can be set by custom regular expression
+engines to indicate that the execution of the regular expression may cause
+variables to be modified. This lets C<s///> know to skip certain
+optimisations. Perl's own regular expression engine sets this flag for the
+special backtracking verbs that set $REGMARK and $REGERROR.
+
+=item *
+
+The APIs for accessing lexical pads have changed considerably.
+
+C<PADLIST>s are now longer C<AV>s, but their own type instead.
+C<PADLIST>s now contain a C<PAD> and a C<PADNAMELIST> of C<PADNAME>s,
+rather than C<AV>s for the pad and the list of pad names. C<PAD>s,
+C<PADNAMELIST>s, and C<PADNAME>s are to be accessed as such through the
+newly added pad API instead of the plain C<AV> and C<SV> APIs. See
+L<perlapi> for details.
+
+=item *
+
+In the regex API, the numbered capture callbacks are passed an index
+indicating what match variable is being accessed. There are special
+index values for the C<$`, $&, $&> variables. Previously the same three
+values were used to retrieve C<${^PREMATCH}, ${^MATCH}, ${^POSTMATCH}>
+too, but these have now been assigned three separate values. See
+L<perlreapi/Numbered capture callbacks>.
+
+=item *
+
+C<PL_sawampersand> was previously a boolean indicating that any of
+C<$`, $&, $&> had been seen; it now contains three one-bit flags
+indicating the presence of each of the variables individually.
+
+=item *
+
+The C<CV *> typemap entry now supports C<&{}> overloading and typeglobs,
+just like C<&{...}> [perl #96872].
+
+=item *
+
+The C<SVf_AMAGIC> flag to indicate overloading is now on the stash, not the
+object. It is now set automatically whenever a method or @ISA changes, so
+its meaning has changed, too. It now means "potentially overloaded". When
+the overload table is calculated, the flag is automatically turned off if
+there is no overloading, so there should be no noticeable slowdown.
+
+The staleness of the overload tables is now checked when overload methods
+are invoked, rather than during C<bless>.
+
+"A" magic is gone. The changes to the handling of the C<SVf_AMAGIC> flag
+eliminate the need for it.
+
+C<PL_amagic_generation> has been removed as no longer necessary. For XS
+modules, it is now a macro alias to C<PL_na>.
+
+The fallback overload setting is now stored in a stash entry separate from
+overloadedness itself.
+
+=item *
+
+The character-processing code has been cleaned up in places. The changes
+should be operationally invisible.
+
+=item *
+
+The C<study> function was made a no-op in v5.16. It was simply disabled via
+a C<return> statement; the code was left in place. Now the code supporting
+what C<study> used to do has been removed.
+
+=item *
+
+Under threaded perls, there is no longer a separate PV allocated for every
+COP to store its package name (C<< cop->stashpv >>). Instead, there is an
+offset (C<< cop->stashoff >>) into the new C<PL_stashpad> array, which
+holds stash pointers.
+
+=item *
+
+In the pluggable regex API, the C<regexp_engine> struct has acquired a new
+field C<op_comp>, which is currently just for perl's internal use, and
+should be initialized to NULL by other regex plugin modules.
+
+=item *
+
+A new function C<alloccopstash> has been added to the API, but is considered
+experimental. See L<perlapi>.
+
+=item *
+
+Perl used to implement get magic in a way that would sometimes hide bugs in
+code that could call mg_get() too many times on magical values. This hiding of
+errors no longer occurs, so long-standing bugs may become visible now. If
+you see magic-related errors in XS code, check to make sure it, together
+with the Perl API functions it uses, calls mg_get() only once on SvGMAGICAL()
+values.
+
+=item *
+
+OP allocation for CVs now uses a slab allocator. This simplifies
+memory management for OPs allocated to a CV, so cleaning up after a
+compilation error is simpler and safer [perl #111462][perl #112312].
+
+=item *
+
+C<PERL_DEBUG_READONLY_OPS> has been rewritten to work with the new slab
+allocator, allowing it to catch more violations than before.
+
+=item *
+
+The old slab allocator for ops, which was only enabled for C<PERL_IMPLICIT_SYS>
+and C<PERL_DEBUG_READONLY_OPS>, has been retired.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+Here document terminators no longer require a terminating newline character when
+they occur at the end of a file. This was already the case at the end of a
+string eval [perl #65838].
+
+=item *
+
+C<-DPERL_GLOBAL_STRUCT> builds now free the global struct B<after>
+they've finished using it.
+
+=item *
+
+A trailing '/' on a path in @INC will no longer have an additional '/'
+appended.
+
+=item *
+
+The C<:crlf> layer now works when unread data doesn't fit into its own
+buffer. [perl #112244].
+
+=item *
+
+C<ungetc()> now handles UTF-8 encoded data. [perl #116322].
+
+=item *
+
+A bug in the core typemap caused any C types that map to the T_BOOL core
+typemap entry to not be set, updated, or modified when the T_BOOL variable was
+used in an OUTPUT: section with an exception for RETVAL. T_BOOL in an INPUT:
+section was not affected. Using a T_BOOL return type for an XSUB (RETVAL)
+was not affected. A side effect of fixing this bug is, if a T_BOOL is specified
+in the OUTPUT: section (which previous did nothing to the SV), and a read only
+SV (literal) is passed to the XSUB, croaks like "Modification of a read-only
+value attempted" will happen. [perl #115796]
+
+=item *
+
+On many platforms, providing a directory name as the script name caused perl
+to do nothing and report success. It should now universally report an error
+and exit nonzero. [perl #61362]
+
+=item *
+
+C<sort {undef} ...> under fatal warnings no longer crashes. It had
+begun crashing in Perl v5.16.
+
+=item *
+
+Stashes blessed into each other
+(C<bless \%Foo::, 'Bar'; bless \%Bar::, 'Foo'>) no longer result in double
+frees. This bug started happening in Perl v5.16.
+
+=item *
+
+Numerous memory leaks have been fixed, mostly involving fatal warnings and
+syntax errors.
+
+=item *
+
+Some failed regular expression matches such as C<'f' =~ /../g> were not
+resetting C<pos>. Also, "match-once" patterns (C<m?...?g>) failed to reset
+it, too, when invoked a second time [perl #23180].
+
+=item *
+
+Several bugs involving C<local *ISA> and C<local *Foo::> causing stale
+MRO caches have been fixed.
+
+=item *
+
+Defining a subroutine when its typeglob has been aliased no longer results
+in stale method caches. This bug was introduced in Perl v5.10.
+
+=item *
+
+Localising a typeglob containing a subroutine when the typeglob's package
+has been deleted from its parent stash no longer produces an error. This
+bug was introduced in Perl v5.14.
+
+=item *
+
+Under some circumstances, C<local *method=...> would fail to reset method
+caches upon scope exit.
+
+=item *
+
+C</[.foo.]/> is no longer an error, but produces a warning (as before) and
+is treated as C</[.fo]/> [perl #115818].
+
+=item *
+
+C<goto $tied_var> now calls FETCH before deciding what type of goto
+(subroutine or label) this is.
+
+=item *
+
+Renaming packages through glob assignment
+(C<*Foo:: = *Bar::; *Bar:: = *Baz::>) in combination with C<m?...?> and
+C<reset> no longer makes threaded builds crash.
+
+=item *
+
+A number of bugs related to assigning a list to hash have been fixed. Many of
+these involve lists with repeated keys like C<(1, 1, 1, 1)>.
+
+=over 4
+
+=item *
+
+The expression C<scalar(%h = (1, 1, 1, 1))> now returns C<4>, not C<2>.
+
+=item *
+
+The return value of C<%h = (1, 1, 1)> in list context was wrong. Previously
+this would return C<(1, undef, 1)>, now it returns C<(1, undef)>.
+
+=item *
+
+Perl now issues the same warning on C<($s, %h) = (1, {})> as it does for
+C<(%h) = ({})>, "Reference found where even-sized list expected".
+
+=item *
+
+A number of additional edge cases in list assignment to hashes were
+corrected. For more details see commit 23b7025ebc.
+
+=back
+
+=item *
+
+Attributes applied to lexical variables no longer leak memory.
+[perl #114764]
+
+=item *
+
+C<dump>, C<goto>, C<last>, C<next>, C<redo> or C<require> followed by a
+bareword (or version) and then an infix operator is no longer a syntax
+error. It used to be for those infix operators (like C<+>) that have a
+different meaning where a term is expected. [perl #105924]
+
+=item *
+
+C<require a::b . 1> and C<require a::b + 1> no longer produce erroneous
+ambiguity warnings. [perl #107002]
+
+=item *
+
+Class method calls are now allowed on any string, and not just strings
+beginning with an alphanumeric character. [perl #105922]
+
+=item *
+
+An empty pattern created with C<qr//> used in C<m///> no longer triggers
+the "empty pattern reuses last pattern" behaviour. [perl #96230]
+
+=item *
+
+Tying a hash during iteration no longer results in a memory leak.
+
+=item *
+
+Freeing a tied hash during iteration no longer results in a memory leak.
+
+=item *
+
+List assignment to a tied array or hash that dies on STORE no longer
+results in a memory leak.
+
+=item *
+
+If the hint hash (C<%^H>) is tied, compile-time scope entry (which copies
+the hint hash) no longer leaks memory if FETCH dies. [perl #107000]
+
+=item *
+
+Constant folding no longer inappropriately triggers the special
+C<split " "> behaviour. [perl #94490]
+
+=item *
+
+C<defined scalar(@array)>, C<defined do { &foo }>, and similar constructs
+now treat the argument to C<defined> as a simple scalar. [perl #97466]
+
+=item *
+
+Running a custom debugging that defines no C<*DB::DB> glob or provides a
+subroutine stub for C<&DB::DB> no longer results in a crash, but an error
+instead. [perl #114990]
+
+=item *
+
+C<reset ""> now matches its documentation. C<reset> only resets C<m?...?>
+patterns when called with no argument. An empty string for an argument now
+does nothing. (It used to be treated as no argument.) [perl #97958]
+
+=item *
+
+C<printf> with an argument returning an empty list no longer reads past the
+end of the stack, resulting in erratic behaviour. [perl #77094]
+
+=item *
+
+C<--subname> no longer produces erroneous ambiguity warnings.
+[perl #77240]
+
+=item *
+
+C<v10> is now allowed as a label or package name. This was inadvertently
+broken when v-strings were added in Perl v5.6. [perl #56880]
+
+=item *
+
+C<length>, C<pos>, C<substr> and C<sprintf> could be confused by ties,
+overloading, references and typeglobs if the stringification of such
+changed the internal representation to or from UTF-8. [perl #114410]
+
+=item *
+
+utf8::encode now calls FETCH and STORE on tied variables. utf8::decode now
+calls STORE (it was already calling FETCH).
+
+=item *
+
+C<$tied =~ s/$non_utf8/$utf8/> no longer loops infinitely if the tied
+variable returns a Latin-1 string, shared hash key scalar, or reference or
+typeglob that stringifies as ASCII or Latin-1. This was a regression from
+v5.12.
+
+=item *
+
+C<s///> without /e is now better at detecting when it needs to forego
+certain optimisations, fixing some buggy cases:
+
+=over
+
+=item *
+
+Match variables in certain constructs (C<&&>, C<||>, C<..> and others) in
+the replacement part; e.g., C<s/(.)/$l{$a||$1}/g>. [perl #26986]
+
+=item *
+
+Aliases to match variables in the replacement.
+
+=item *
+
+C<$REGERROR> or C<$REGMARK> in the replacement. [perl #49190]
+
+=item *
+
+An empty pattern (C<s//$foo/>) that causes the last-successful pattern to
+be used, when that pattern contains code blocks that modify the variables
+in the replacement.
+
+=back
+
+=item *
+
+The taintedness of the replacement string no longer affects the taintedness
+of the return value of C<s///e>.
+
+=item *
+
+The C<$|> autoflush variable is created on-the-fly when needed. If this
+happened (e.g., if it was mentioned in a module or eval) when the
+currently-selected filehandle was a typeglob with an empty IO slot, it used
+to crash. [perl #115206]
+
+=item *
+
+Line numbers at the end of a string eval are no longer off by one.
+[perl #114658]
+
+=item *
+
+@INC filters (subroutines returned by subroutines in @INC) that set $_ to a
+copy-on-write scalar no longer cause the parser to modify that string
+buffer in place.
+
+=item *
+
+C<length($object)> no longer returns the undefined value if the object has
+string overloading that returns undef. [perl #115260]
+
+=item *
+
+The use of C<PL_stashcache>, the stash name lookup cache for method calls, has
+been restored,
+
+Commit da6b625f78f5f133 in August 2011 inadvertently broke the code that looks
+up values in C<PL_stashcache>. As it's a only cache, quite correctly everything
+carried on working without it.
+
+=item *
+
+The error "Can't localize through a reference" had disappeared in v5.16.0
+when C<local %$ref> appeared on the last line of an lvalue subroutine.
+This error disappeared for C<\local %$ref> in perl v5.8.1. It has now
+been restored.
+
+=item *
+
+The parsing of here-docs has been improved significantly, fixing several
+parsing bugs and crashes and one memory leak, and correcting wrong
+subsequent line numbers under certain conditions.
+
+=item *
+
+Inside an eval, the error message for an unterminated here-doc no longer
+has a newline in the middle of it [perl #70836].
+
+=item *
+
+A substitution inside a substitution pattern (C<s/${s|||}//>) no longer
+confuses the parser.
+
+=item *
+
+It may be an odd place to allow comments, but C<s//"" # hello/e> has
+always worked, I<unless> there happens to be a null character before the
+first #. Now it works even in the presence of nulls.
+
+=item *
+
+An invalid range in C<tr///> or C<y///> no longer results in a memory leak.
+
+=item *
+
+String eval no longer treats a semicolon-delimited quote-like operator at
+the very end (C<eval 'q;;'>) as a syntax error.
+
+=item *
+
+C<< warn {$_ => 1} + 1 >> is no longer a syntax error. The parser used to
+get confused with certain list operators followed by an anonymous hash and
+then an infix operator that shares its form with a unary operator.
+
+=item *
+
+C<(caller $n)[6]> (which gives the text of the eval) used to return the
+actual parser buffer. Modifying it could result in crashes. Now it always
+returns a copy. The string returned no longer has "\n;" tacked on to the
+end. The returned text also includes here-doc bodies, which used to be
+omitted.
+
+=item *
+
+The UTF-8 position cache is now reset when accessing magical variables, to
+avoid the string buffer and the UTF-8 position cache getting out of sync
+[perl #114410].
+
+=item *
+
+Various cases of get magic being called twice for magical UTF-8
+strings have been fixed.
+
+=item *
+
+This code (when not in the presence of C<$&> etc)
+
+ $_ = 'x' x 1_000_000;
+ 1 while /(.)/;
+
+used to skip the buffer copy for performance reasons, but suffered from C<$1>
+etc changing if the original string changed. That's now been fixed.
+
+=item *
+
+Perl doesn't use PerlIO anymore to report out of memory messages, as PerlIO
+might attempt to allocate more memory.
+
+=item *
+
+In a regular expression, if something is quantified with C<{n,m}> where
+C<S<n E<gt> m>>, it can't possibly match. Previously this was a fatal
+error, but now is merely a warning (and that something won't match).
+[perl #82954].
+
+=item *
+
+It used to be possible for formats defined in subroutines that have
+subsequently been undefined and redefined to close over variables in the
+wrong pad (the newly-defined enclosing sub), resulting in crashes or
+"Bizarre copy" errors.
+
+=item *
+
+Redefinition of XSUBs at run time could produce warnings with the wrong
+line number.
+
+=item *
+
+The %vd sprintf format does not support version objects for alpha versions.
+It used to output the format itself (%vd) when passed an alpha version, and
+also emit an "Invalid conversion in printf" warning. It no longer does,
+but produces the empty string in the output. It also no longer leaks
+memory in this case.
+
+=item *
+
+C<< $obj->SUPER::method >> calls in the main package could fail if the
+SUPER package had already been accessed by other means.
+
+=item *
+
+Stash aliasing (C<< *foo:: = *bar:: >>) no longer causes SUPER calls to ignore
+changes to methods or @ISA or use the wrong package.
+
+=item *
+
+Method calls on packages whose names end in ::SUPER are no longer treated
+as SUPER method calls, resulting in failure to find the method.
+Furthermore, defining subroutines in such packages no longer causes them to
+be found by SUPER method calls on the containing package [perl #114924].
+
+=item *
+
+C<\w> now matches the code points U+200C (ZERO WIDTH NON-JOINER) and U+200D
+(ZERO WIDTH JOINER). C<\W> no longer matches these. This change is because
+Unicode corrected their definition of what C<\w> should match.
+
+=item *
+
+C<dump LABEL> no longer leaks its label.
+
+=item *
+
+Constant folding no longer changes the behaviour of functions like C<stat()>
+and C<truncate()> that can take either filenames or handles.
+C<stat 1 ? foo : bar> nows treats its argument as a file name (since it is an
+arbitrary expression), rather than the handle "foo".
+
+=item *
+
+C<truncate FOO, $len> no longer falls back to treating "FOO" as a file name if
+the filehandle has been deleted. This was broken in Perl v5.16.0.
+
+=item *
+
+Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no
+longer cause double frees or panic messages.
+
+=item *
+
+C<s///> now turns vstrings into plain strings when performing a substitution,
+even if the resulting string is the same (C<s/a/a/>).
+
+=item *
+
+Prototype mismatch warnings no longer erroneously treat constant subs as having
+no prototype when they actually have "".
+
+=item *
+
+Constant subroutines and forward declarations no longer prevent prototype
+mismatch warnings from omitting the sub name.
+
+=item *
+
+C<undef> on a subroutine now clears call checkers.
+
+=item *
+
+The C<ref> operator started leaking memory on blessed objects in Perl v5.16.0.
+This has been fixed [perl #114340].
+
+=item *
+
+C<use> no longer tries to parse its arguments as a statement, making
+C<use constant { () };> a syntax error [perl #114222].
+
+=item *
+
+On debugging builds, "uninitialized" warnings inside formats no longer cause
+assertion failures.
+
+=item *
+
+On debugging builds, subroutines nested inside formats no longer cause
+assertion failures [perl #78550].
+
+=item *
+
+Formats and C<use> statements are now permitted inside formats.
+
+=item *
+
+C<print $x> and C<sub { print $x }-E<gt>()> now always produce the same output.
+It was possible for the latter to refuse to close over $x if the variable was
+not active; e.g., if it was defined outside a currently-running named
+subroutine.
+
+=item *
+
+Similarly, C<print $x> and C<print eval '$x'> now produce the same output.
+This also allows "my $x if 0" variables to be seen in the debugger [perl
+#114018].
+
+=item *
+
+Formats called recursively no longer stomp on their own lexical variables, but
+each recursive call has its own set of lexicals.
+
+=item *
+
+Attempting to free an active format or the handle associated with it no longer
+results in a crash.
+
+=item *
+
+Format parsing no longer gets confused by braces, semicolons and low-precedence
+operators. It used to be possible to use braces as format delimiters (instead
+of C<=> and C<.>), but only sometimes. Semicolons and low-precedence operators
+in format argument lines no longer confuse the parser into ignoring the line's
+return value. In format argument lines, braces can now be used for anonymous
+hashes, instead of being treated always as C<do> blocks.
+
+=item *
+
+Formats can now be nested inside code blocks in regular expressions and other
+quoted constructs (C</(?{...})/> and C<qq/${...}/>) [perl #114040].
+
+=item *
+
+Formats are no longer created after compilation errors.
+
+=item *
+
+Under debugging builds, the B<-DA> command line option started crashing in Perl
+v5.16.0. It has been fixed [perl #114368].
+
+=item *
+
+A potential deadlock scenario involving the premature termination of a pseudo-
+forked child in a Windows build with ithreads enabled has been fixed. This
+resolves the common problem of the F<t/op/fork.t> test hanging on Windows [perl
+#88840].
+
+=item *
+
+The code which generates errors from C<require()> could potentially read one or
+two bytes before the start of the filename for filenames less than three bytes
+long and ending C</\.p?\z/>. This has now been fixed. Note that it could
+never have happened with module names given to C<use()> or C<require()> anyway.
+
+=item *
+
+The handling of pathnames of modules given to C<require()> has been made
+thread-safe on VMS.
+
+=item *
+
+Non-blocking sockets have been fixed on VMS.
+
+=item *
+
+Pod can now be nested in code inside a quoted construct outside of a string
+eval. This used to work only within string evals [perl #114040].
+
+=item *
+
+C<goto ''> now looks for an empty label, producing the "goto must have
+label" error message, instead of exiting the program [perl #111794].
+
+=item *
+
+C<goto "\0"> now dies with "Can't find label" instead of "goto must have
+label".
+
+=item *
+
+The C function C<hv_store> used to result in crashes when used on C<%^H>
+[perl #111000].
+
+=item *
+
+A call checker attached to a closure prototype via C<cv_set_call_checker>
+is now copied to closures cloned from it. So C<cv_set_call_checker> now
+works inside an attribute handler for a closure.
+
+=item *
+
+Writing to C<$^N> used to have no effect. Now it croaks with "Modification
+of a read-only value" by default, but that can be overridden by a custom
+regular expression engine, as with C<$1> [perl #112184].
+
+=item *
+
+C<undef> on a control character glob (C<undef *^H>) no longer emits an
+erroneous warning about ambiguity [perl #112456].
+
+=item *
+
+For efficiency's sake, many operators and built-in functions return the
+same scalar each time. Lvalue subroutines and subroutines in the CORE::
+namespace were allowing this implementation detail to leak through.
+C<print &CORE::uc("a"), &CORE::uc("b")> used to print "BB". The same thing
+would happen with an lvalue subroutine returning the return value of C<uc>.
+Now the value is copied in such cases.
+
+=item *
+
+C<method {}> syntax with an empty block or a block returning an empty list
+used to crash or use some random value left on the stack as its invocant.
+Now it produces an error.
+
+=item *
+
+C<vec> now works with extremely large offsets (E<gt>2 GB) [perl #111730].
+
+=item *
+
+Changes to overload settings now take effect immediately, as do changes to
+inheritance that affect overloading. They used to take effect only after
+C<bless>.
+
+Objects that were created before a class had any overloading used to remain
+non-overloaded even if the class gained overloading through C<use overload>
+or @ISA changes, and even after C<bless>. This has been fixed
+[perl #112708].
+
+=item *
+
+Classes with overloading can now inherit fallback values.
+
+=item *
+
+Overloading was not respecting a fallback value of 0 if there were
+overloaded objects on both sides of an assignment operator like C<+=>
+[perl #111856].
+
+=item *
+
+C<pos> now croaks with hash and array arguments, instead of producing
+erroneous warnings.
+
+=item *
+
+C<while(each %h)> now implies C<while(defined($_ = each %h))>, like
+C<readline> and C<readdir>.
+
+=item *
+
+Subs in the CORE:: namespace no longer crash after C<undef *_> when called
+with no argument list (C<&CORE::time> with no parentheses).
+
+=item *
+
+C<unpack> no longer produces the "'/' must follow a numeric type in unpack"
+error when it is the data that are at fault [perl #60204].
+
+=item *
+
+C<join> and C<"@array"> now call FETCH only once on a tied C<$">
+[perl #8931].
+
+=item *
+
+Some subroutine calls generated by compiling core ops affected by a
+C<CORE::GLOBAL> override had op checking performed twice. The checking
+is always idempotent for pure Perl code, but the double checking can
+matter when custom call checkers are involved.
+
+=item *
+
+A race condition used to exist around fork that could cause a signal sent to
+the parent to be handled by both parent and child. Signals are now blocked
+briefly around fork to prevent this from happening [perl #82580].
+
+=item *
+
+The implementation of code blocks in regular expressions, such as C<(?{})>
+and C<(??{})>, has been heavily reworked to eliminate a whole slew of bugs.
+The main user-visible changes are:
+
+=over 4
+
+=item *
+
+Code blocks within patterns are now parsed in the same pass as the
+surrounding code; in particular it is no longer necessary to have balanced
+braces: this now works:
+
+ /(?{ $x='{' })/
+
+This means that this error message is no longer generated:
+
+ Sequence (?{...}) not terminated or not {}-balanced in regex
+
+but a new error may be seen:
+
+ Sequence (?{...}) not terminated with ')'
+
+In addition, literal code blocks within run-time patterns are only
+compiled once, at perl compile-time:
+
+ for my $p (...) {
+ # this 'FOO' block of code is compiled once,
+ # at the same time as the surrounding 'for' loop
+ /$p{(?{FOO;})/;
+ }
+
+=item *
+
+Lexical variables are now sane as regards scope, recursion and closure
+behavior. In particular, C</A(?{B})C/> behaves (from a closure viewpoint)
+exactly like C</A/ && do { B } && /C/>, while C<qr/A(?{B})C/> is like
+C<sub {/A/ && do { B } && /C/}>. So this code now works how you might
+expect, creating three regexes that match 0, 1, and 2:
+
+ for my $i (0..2) {
+ push @r, qr/^(??{$i})$/;
+ }
+ "1" =~ $r[1]; # matches
+
+=item *
+
+The C<use re 'eval'> pragma is now only required for code blocks defined
+at runtime; in particular in the following, the text of the C<$r> pattern is
+still interpolated into the new pattern and recompiled, but the individual
+compiled code-blocks within C<$r> are reused rather than being recompiled,
+and C<use re 'eval'> isn't needed any more:
+
+ my $r = qr/abc(?{....})def/;
+ /xyz$r/;
+
+=item *
+
+Flow control operators no longer crash. Each code block runs in a new
+dynamic scope, so C<next> etc. will not see
+any enclosing loops. C<return> returns a value
+from the code block, not from any enclosing subroutine.
+
+=item *
+
+Perl normally caches the compilation of run-time patterns, and doesn't
+recompile if the pattern hasn't changed, but this is now disabled if
+required for the correct behavior of closures. For example:
+
+ my $code = '(??{$x})';
+ for my $x (1..3) {
+ # recompile to see fresh value of $x each time
+ $x =~ /$code/;
+ }
+
+=item *
+
+The C</msix> and C<(?msix)> etc. flags are now propagated into the return
+value from C<(??{})>; this now works:
+
+ "AB" =~ /a(??{'b'})/i;
+
+=item *
+
+Warnings and errors will appear to come from the surrounding code (or for
+run-time code blocks, from an eval) rather than from an C<re_eval>:
+
+ use re 'eval'; $c = '(?{ warn "foo" })'; /$c/;
+ /(?{ warn "foo" })/;
+
+formerly gave:
+
+ foo at (re_eval 1) line 1.
+ foo at (re_eval 2) line 1.
+
+and now gives:
+
+ foo at (eval 1) line 1.
+ foo at /some/prog line 2.
+
+=back
+
+=item *
+
+Perl now can be recompiled to use any Unicode version. In v5.16, it
+worked on Unicodes 6.0 and 6.1, but there were various bugs if earlier
+releases were used; the older the release the more problems.
+
+=item *
+
+C<vec> no longer produces "uninitialized" warnings in lvalue context
+[perl #9423].
+
+=item *
+
+An optimization involving fixed strings in regular expressions could cause
+a severe performance penalty in edge cases. This has been fixed
+[perl #76546].
+
+=item *
+
+In certain cases, including empty subpatterns within a regular expression (such
+as C<(?:)> or C<(?:|)>) could disable some optimizations. This has been fixed.
+
+=item *
+
+The "Can't find an opnumber" message that C<prototype> produces when passed
+a string like "CORE::nonexistent_keyword" now passes UTF-8 and embedded
+NULs through unchanged [perl #97478].
+
+=item *
+
+C<prototype> now treats magical variables like C<$1> the same way as
+non-magical variables when checking for the CORE:: prefix, instead of
+treating them as subroutine names.
+
+=item *
+
+Under threaded perls, a runtime code block in a regular expression could
+corrupt the package name stored in the op tree, resulting in bad reads
+in C<caller>, and possibly crashes [perl #113060].
+
+=item *
+
+Referencing a closure prototype (C<\&{$_[1]}> in an attribute handler for a
+closure) no longer results in a copy of the subroutine (or assertion
+failures on debugging builds).
+
+=item *
+
+C<eval '__PACKAGE__'> now returns the right answer on threaded builds if
+the current package has been assigned over (as in
+C<*ThisPackage:: = *ThatPackage::>) [perl #78742].
+
+=item *
+
+If a package is deleted by code that it calls, it is possible for C<caller>
+to see a stack frame belonging to that deleted package. C<caller> could
+crash if the stash's memory address was reused for a scalar and a
+substitution was performed on the same scalar [perl #113486].
+
+=item *
+
+C<UNIVERSAL::can> no longer treats its first argument differently
+depending on whether it is a string or number internally.
+
+=item *
+
+C<open> with C<< <& >> for the mode checks to see whether the third argument is
+a number, in determining whether to treat it as a file descriptor or a handle
+name. Magical variables like C<$1> were always failing the numeric check and
+being treated as handle names.
+
+=item *
+
+C<warn>'s handling of magical variables (C<$1>, ties) has undergone several
+fixes. C<FETCH> is only called once now on a tied argument or a tied C<$@>
+[perl #97480]. Tied variables returning objects that stringify as "" are
+no longer ignored. A tied C<$@> that happened to return a reference the
+I<previous> time it was used is no longer ignored.
+
+=item *
+
+C<warn ""> now treats C<$@> with a number in it the same way, regardless of
+whether it happened via C<$@=3> or C<$@="3">. It used to ignore the
+former. Now it appends "\t...caught", as it has always done with
+C<$@="3">.
+
+=item *
+
+Numeric operators on magical variables (e.g., S<C<$1 + 1>>) used to use
+floating point operations even where integer operations were more appropriate,
+resulting in loss of accuracy on 64-bit platforms [perl #109542].
+
+=item *
+
+Unary negation no longer treats a string as a number if the string happened
+to be used as a number at some point. So, if C<$x> contains the string "dogs",
+C<-$x> returns "-dogs" even if C<$y=0+$x> has happened at some point.
+
+=item *
+
+In Perl v5.14, C<-'-10'> was fixed to return "10", not "+10". But magical
+variables (C<$1>, ties) were not fixed till now [perl #57706].
+
+=item *
+
+Unary negation now treats strings consistently, regardless of the internal
+C<UTF8> flag.
+
+=item *
+
+A regression introduced in Perl v5.16.0 involving
+C<tr/I<SEARCHLIST>/I<REPLACEMENTLIST>/> has been fixed. Only the first
+instance is supposed to be meaningful if a character appears more than
+once in C<I<SEARCHLIST>>. Under some circumstances, the final instance
+was overriding all earlier ones. [perl #113584]
+
+=item *
+
+Regular expressions like C<qr/\87/> previously silently inserted a NUL
+character, thus matching as if it had been written C<qr/\00087/>. Now it
+matches as if it had been written as C<qr/87/>, with a message that the
+sequence C<"\8"> is unrecognized.
+
+=item *
+
+C<__SUB__> now works in special blocks (C<BEGIN>, C<END>, etc.).
+
+=item *
+
+Thread creation on Windows could theoretically result in a crash if done
+inside a C<BEGIN> block. It still does not work properly, but it no longer
+crashes [perl #111610].
+
+=item *
+
+C<\&{''}> (with the empty string) now autovivifies a stub like any other
+sub name, and no longer produces the "Unable to create sub" error
+[perl #94476].
+
+=item *
+
+A regression introduced in v5.14.0 has been fixed, in which some calls
+to the C<re> module would clobber C<$_> [perl #113750].
+
+=item *
+
+C<do FILE> now always either sets or clears C<$@>, even when the file can't be
+read. This ensures that testing C<$@> first (as recommended by the
+documentation) always returns the correct result.
+
+=item *
+
+The array iterator used for the C<each @array> construct is now correctly
+reset when C<@array> is cleared [perl #75596]. This happens, for example, when
+the array is globally assigned to, as in C<@array = (...)>, but not when its
+B<values> are assigned to. In terms of the XS API, it means that C<av_clear()>
+will now reset the iterator.
+
+This mirrors the behaviour of the hash iterator when the hash is cleared.
+
+=item *
+
+C<< $class->can >>, C<< $class->isa >>, and C<< $class->DOES >> now return
+correct results, regardless of whether that package referred to by C<$class>
+exists [perl #47113].
+
+=item *
+
+Arriving signals no longer clear C<$@> [perl #45173].
+
+=item *
+
+Allow C<my ()> declarations with an empty variable list [perl #113554].
+
+=item *
+
+During parsing, subs declared after errors no longer leave stubs
+[perl #113712].
+
+=item *
+
+Closures containing no string evals no longer hang on to their containing
+subroutines, allowing variables closed over by outer subroutines to be
+freed when the outer sub is freed, even if the inner sub still exists
+[perl #89544].
+
+=item *
+
+Duplication of in-memory filehandles by opening with a "<&=" or ">&=" mode
+stopped working properly in v5.16.0. It was causing the new handle to
+reference a different scalar variable. This has been fixed [perl #113764].
+
+=item *
+
+C<qr//> expressions no longer crash with custom regular expression engines
+that do not set C<offs> at regular expression compilation time
+[perl #112962].
+
+=item *
+
+C<delete local> no longer crashes with certain magical arrays and hashes
+[perl #112966].
+
+=item *
+
+C<local> on elements of certain magical arrays and hashes used not to
+arrange to have the element deleted on scope exit, even if the element did
+not exist before C<local>.
+
+=item *
+
+C<scalar(write)> no longer returns multiple items [perl #73690].
+
+=item *
+
+String to floating point conversions no longer misparse certain strings under
+C<use locale> [perl #109318].
+
+=item *
+
+C<@INC> filters that die no longer leak memory [perl #92252].
+
+=item *
+
+The implementations of overloaded operations are now called in the correct
+context. This allows, among other things, being able to properly override
+C<< <> >> [perl #47119].
+
+=item *
+
+Specifying only the C<fallback> key when calling C<use overload> now behaves
+properly [perl #113010].
+
+=item *
+
+C<< sub foo { my $a = 0; while ($a) { ... } } >> and
+C<< sub foo { while (0) { ... } } >> now return the same thing [perl #73618].
+
+=item *
+
+String negation now behaves the same under C<use integer;> as it does
+without [perl #113012].
+
+=item *
+
+C<chr> now returns the Unicode replacement character (U+FFFD) for -1,
+regardless of the internal representation. -1 used to wrap if the argument
+was tied or a string internally.
+
+=item *
+
+Using a C<format> after its enclosing sub was freed could crash as of
+perl v5.12.0, if the format referenced lexical variables from the outer sub.
+
+=item *
+
+Using a C<format> after its enclosing sub was undefined could crash as of
+perl v5.10.0, if the format referenced lexical variables from the outer sub.
+
+=item *
+
+Using a C<format> defined inside a closure, which format references
+lexical variables from outside, never really worked unless the C<write>
+call was directly inside the closure. In v5.10.0 it even started crashing.
+Now the copy of that closure nearest the top of the call stack is used to
+find those variables.
+
+=item *
+
+Formats that close over variables in special blocks no longer crash if a
+stub exists with the same name as the special block before the special
+block is compiled.
+
+=item *
+
+The parser no longer gets confused, treating C<eval foo ()> as a syntax
+error if preceded by C<print;> [perl #16249].
+
+=item *
+
+The return value of C<syscall> is no longer truncated on 64-bit platforms
+[perl #113980].
+
+=item *
+
+Constant folding no longer causes C<print 1 ? FOO : BAR> to print to the
+FOO handle [perl #78064].
+
+=item *
+
+C<do subname> now calls the named subroutine and uses the file name it
+returns, instead of opening a file named "subname".
+
+=item *
+
+Subroutines looked up by rv2cv check hooks (registered by XS modules) are
+now taken into consideration when determining whether C<foo bar> should be
+the sub call C<foo(bar)> or the method call C<< "bar"->foo >>.
+
+=item *
+
+C<CORE::foo::bar> is no longer treated specially, allowing global overrides
+to be called directly via C<CORE::GLOBAL::uc(...)> [perl #113016].
+
+=item *
+
+Calling an undefined sub whose typeglob has been undefined now produces the
+customary "Undefined subroutine called" error, instead of "Not a CODE
+reference".
+
+=item *
+
+Two bugs involving @ISA have been fixed. C<*ISA = *glob_without_array> and
+C<undef *ISA; @{*ISA}> would prevent future modifications to @ISA from
+updating the internal caches used to look up methods. The
+*glob_without_array case was a regression from Perl v5.12.
+
+=item *
+
+Regular expression optimisations sometimes caused C<$> with C</m> to
+produce failed or incorrect matches [perl #114068].
+
+=item *
+
+C<__SUB__> now works in a C<sort> block when the enclosing subroutine is
+predeclared with C<sub foo;> syntax [perl #113710].
+
+=item *
+
+Unicode properties only apply to Unicode code points, which leads to
+some subtleties when regular expressions are matched against
+above-Unicode code points. There is a warning generated to draw your
+attention to this. However, this warning was being generated
+inappropriately in some cases, such as when a program was being parsed.
+Non-Unicode matches such as C<\w> and C<[:word:]> should not generate the
+warning, as their definitions don't limit them to apply to only Unicode
+code points. Now the message is only generated when matching against
+C<\p{}> and C<\P{}>. There remains a bug, [perl #114148], for the very
+few properties in Unicode that match just a single code point. The
+warning is not generated if they are matched against an above-Unicode
+code point.
+
+=item *
+
+Uninitialized warnings mentioning hash elements would only mention the
+element name if it was not in the first bucket of the hash, due to an
+off-by-one error.
+
+=item *
+
+A regular expression optimizer bug could cause multiline "^" to behave
+incorrectly in the presence of line breaks, such that
+C<"/\n\n" =~ m#\A(?:^/$)#im> would not match [perl #115242].
+
+=item *
+
+Failed C<fork> in list context no longer corrupts the stack.
+C<@a = (1, 2, fork, 3)> used to gobble up the 2 and assign C<(1, undef, 3)>
+if the C<fork> call failed.
+
+=item *
+
+Numerous memory leaks have been fixed, mostly involving tied variables that
+die, regular expression character classes and code blocks, and syntax
+errors.
+
+=item *
+
+Assigning a regular expression (C<${qr//}>) to a variable that happens to
+hold a floating point number no longer causes assertion failures on
+debugging builds.
+
+=item *
+
+Assigning a regular expression to a scalar containing a number no longer
+causes subsequent numification to produce random numbers.
+
+=item *
+
+Assigning a regular expression to a magic variable no longer wipes away the
+magic. This was a regression from v5.10.
+
+=item *
+
+Assigning a regular expression to a blessed scalar no longer results in
+crashes. This was also a regression from v5.10.
+
+=item *
+
+Regular expression can now be assigned to tied hash and array elements with
+flattening into strings.
+
+=item *
+
+Numifying a regular expression no longer results in an uninitialized
+warning.
+
+=item *
+
+Negative array indices no longer cause EXISTS methods of tied variables to
+be ignored. This was a regression from v5.12.
+
+=item *
+
+Negative array indices no longer result in crashes on arrays tied to
+non-objects.
+
+=item *
+
+C<$byte_overload .= $utf8> no longer results in doubly-encoded UTF-8 if the
+left-hand scalar happened to have produced a UTF-8 string the last time
+overloading was invoked.
+
+=item *
+
+C<goto &sub> now uses the current value of @_, instead of using the array
+the subroutine was originally called with. This means
+C<local @_ = (...); goto &sub> now works [perl #43077].
+
+=item *
+
+If a debugger is invoked recursively, it no longer stomps on its own
+lexical variables. Formerly under recursion all calls would share the same
+set of lexical variables [perl #115742].
+
+=item *
+
+C<*_{ARRAY}> returned from a subroutine no longer spontaneously
+becomes empty.
+
+=item *
+
+When using C<say> to print to a tied filehandle, the value of C<$\> is
+correctly localized, even if it was previously undef. [perl #119927]
+
+=back
+
+=head1 Known Problems
+
+=over 4
+
+=item *
+
+UTF8-flagged strings in C<%ENV> on HP-UX 11.00 are buggy
+
+The interaction of UTF8-flagged strings and C<%ENV> on HP-UX 11.00 is
+currently dodgy in some not-yet-fully-diagnosed way. Expect test
+failures in F<t/op/magic.t>, followed by unknown behavior when storing
+wide characters in the environment.
+
+=back
+
+=head1 Obituary
+
+Hojung Yoon (AMORETTE), 24, of Seoul, South Korea, went to his long rest
+on May 8, 2013 with llama figurine and autographed TIMTOADY card. He
+was a brilliant young Perl 5 & 6 hacker and a devoted member of
+Seoul.pm. He programmed Perl, talked Perl, ate Perl, and loved Perl. We
+believe that he is still programming in Perl with his broken IBM laptop
+somewhere. He will be missed.
+
+=head1 Acknowledgements
+
+Perl v5.18.0 represents approximately 12 months of development since
+Perl v5.16.0 and contains approximately 400,000 lines of changes across
+2,100 files from 113 authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant
+community of users and developers. The following people are known to
+have contributed the improvements that became Perl v5.18.0:
+
+Aaron Crane, Aaron Trevena, Abhijit Menon-Sen, Adrian M. Enache, Alan
+Haggai Alavi, Alexandr Ciornii, Andrew Tam, Andy Dougherty, Anton Nikishaev,
+Aristotle Pagaltzis, Augustina Blair, Bob Ernst, Brad Gilbert, Breno G. de
+Oliveira, Brian Carlson, Brian Fraser, Charlie Gonzalez, Chip Salzenberg, Chris
+'BinGOs' Williams, Christian Hansen, Colin Kuskie, Craig A. Berry, Dagfinn
+Ilmari Mannsåker, Daniel Dragan, Daniel Perrett, Darin McBride, Dave Rolsky,
+David Golden, David Leadbeater, David Mitchell, David Nicol, Dominic
+Hargreaves, E. Choroba, Eric Brine, Evan Miller, Father Chrysostomos, Florian
+Ragwitz, François Perrad, George Greer, Goro Fuji, H.Merijn Brand, Herbert
+Breunung, Hugo van der Sanden, Igor Zaytsev, James E Keenan, Jan Dubois,
+Jasmine Ahuja, Jerry D. Hedden, Jess Robinson, Jesse Luehrs, Joaquin Ferrero,
+Joel Berger, John Goodyear, John Peacock, Karen Etheridge, Karl Williamson,
+Karthik Rajagopalan, Kent Fredric, Leon Timmermans, Lucas Holt, Lukas Mai,
+Marcus Holland-Moritz, Markus Jansen, Martin Hasch, Matthew Horsfall, Max
+Maischein, Michael G Schwern, Michael Schroeder, Moritz Lenz, Nicholas Clark,
+Niko Tyni, Oleg Nesterov, Patrik Hägglund, Paul Green, Paul Johnson, Paul
+Marquess, Peter Martini, Rafael Garcia-Suarez, Reini Urban, Renee Baecker,
+Rhesa Rozendaal, Ricardo Signes, Robin Barker, Ronald J. Kimball, Ruslan
+Zakirov, Salvador Fandiño, Sawyer X, Scott Lanning, Sergey Alekseev, Shawn M
+Moore, Shirakata Kentaro, Shlomi Fish, Sisyphus, Smylers, Steffen Müller,
+Steve Hay, Steve Peters, Steven Schubiger, Sullivan Beck, Sven Strickroth,
+Sébastien Aperghis-Tramoni, Thomas Sibley, Tobias Leich, Tom Wyant, Tony Cook,
+Vadim Konovalov, Vincent Pit, Volker Schatz, Walt Mankowski, Yves Orton,
+Zefram.
+
+The list above is almost certainly incomplete as it is automatically generated
+from version control history. In particular, it does not include the names of
+the (very much appreciated) contributors who reported issues to the Perl bug
+tracker.
+
+Many of the changes included in this version originated in the CPAN modules
+included in Perl's core. We're grateful to the entire CPAN community for
+helping Perl to flourish.
+
+For a more complete list of all of Perl's historical contributors, please see
+the F<AUTHORS> file in the Perl source distribution.
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the articles recently
+posted to the comp.lang.perl.misc newsgroup and the perl bug database at
+http://rt.perl.org/perlbug/ . There may also be information at
+http://www.perl.org/ , the Perl Home Page.
+
+If you believe you have an unreported bug, please run the L<perlbug> program
+included with your release. Be sure to trim your bug down to a tiny but
+sufficient test case. Your bug report, along with the output of C<perl -V>,
+will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
+
+If the bug you are reporting has security implications, which make it
+inappropriate to send to a publicly archived mailing list, then please send it
+to perl5-security-report@perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who will be
+able to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently distributed on
+CPAN.
+
+=head1 SEE ALSO
+
+The F<Changes> file for an explanation of how to view exhaustive details on
+what changed.
+
+The F<INSTALL> file for how to build Perl.
+
+The F<README> file for general stuff.
+
+The F<Artistic> and F<Copying> files for copyright information.
+
+=cut
diff --git a/gnu/usr.bin/perl/pod/perl5181delta.pod b/gnu/usr.bin/perl/pod/perl5181delta.pod
new file mode 100644
index 00000000000..93fb251991f
--- /dev/null
+++ b/gnu/usr.bin/perl/pod/perl5181delta.pod
@@ -0,0 +1,217 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5181delta - what is new for perl v5.18.1
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.18.0 release and the 5.18.1
+release.
+
+If you are upgrading from an earlier release such as 5.16.0, first read
+L<perl5180delta>, which describes differences between 5.16.0 and 5.18.0.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.18.0
+If any exist, they are bugs, and we request that you submit a
+report. See L</Reporting Bugs> below.
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+B has been upgraded from 1.42 to 1.42_01, fixing bugs related to lexical
+subroutines.
+
+=item *
+
+Digest::SHA has been upgraded from 5.84 to 5.84_01, fixing a crashing bug.
+[RT #118649]
+
+=item *
+
+Module::CoreList has been upgraded from 2.89 to 2.96.
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item AIX
+
+A rarely-encounted configuration bug in the AIX hints file has been corrected.
+
+=item MidnightBSD
+
+After a patch to the relevant hints file, perl should now build correctly on
+MidnightBSD 0.4-RELEASE.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+Starting in v5.18.0, a construct like C</[#](?{})/x> would have its C<#>
+incorrectly interpreted as a comment. The code block would be skipped,
+unparsed. This has been corrected.
+
+=item *
+
+A number of memory leaks related to the new, experimental regexp bracketed
+character class feature have been plugged.
+
+=item *
+
+The OP allocation code now returns correctly aligned memory in all cases
+for C<struct pmop>. Previously it could return memory only aligned to a
+4-byte boundary, which is not correct for an ithreads build with 64 bit IVs
+on some 32 bit platforms. Notably, this caused the build to fail completely
+on sparc GNU/Linux. [RT #118055]
+
+=item *
+
+The debugger's C<man> command been fixed. It was broken in the v5.18.0
+release. The C<man> command is aliased to the names C<doc> and C<perldoc> -
+all now work again.
+
+=item *
+
+C<@_> is now correctly visible in the debugger, fixing a regression
+introduced in v5.18.0's debugger. [RT #118169]
+
+=item *
+
+Fixed a small number of regexp constructions that could either fail to
+match or crash perl when the string being matched against was
+allocated above the 2GB line on 32-bit systems. [RT #118175]
+
+=item *
+
+Perl v5.16 inadvertently introduced a bug whereby calls to XSUBs that were
+not visible at compile time were treated as lvalues and could be assigned
+to, even when the subroutine was not an lvalue sub. This has been fixed.
+[perl #117947]
+
+=item *
+
+Perl v5.18 inadvertently introduced a bug whereby dual-vars (i.e.
+variables with both string and numeric values, such as C<$!> ) where the
+truthness of the variable was determined by the numeric value rather than
+the string value. [RT #118159]
+
+=item *
+
+Perl v5.18 inadvertently introduced a bug whereby interpolating mixed up-
+and down-graded UTF-8 strings in a regex could result in malformed UTF-8
+in the pattern: specifically if a downgraded character in the range
+C<\x80..\xff> followed a UTF-8 string, e.g.
+
+ utf8::upgrade( my $u = "\x{e5}");
+ utf8::downgrade(my $d = "\x{e5}");
+ /$u$d/
+
+[perl #118297].
+
+=item *
+
+Lexical constants (C<my sub a() { 42 }>) no longer crash when inlined.
+
+=item *
+
+Parameter prototypes attached to lexical subroutines are now respected when
+compiling sub calls without parentheses. Previously, the prototypes were
+honoured only for calls I<with> parentheses. [RT #116735]
+
+=item *
+
+Syntax errors in lexical subroutines in combination with calls to the same
+subroutines no longer cause crashes at compile time.
+
+=item *
+
+The dtrace sub-entry probe now works with lexical subs, instead of
+crashing [perl #118305].
+
+=item *
+
+Undefining an inlinable lexical subroutine (C<my sub foo() { 42 } undef
+&foo>) would result in a crash if warnings were turned on.
+
+=item *
+
+Deep recursion warnings no longer crash lexical subroutines. [RT #118521]
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.18.1 represents approximately 2 months of development since Perl 5.18.0
+and contains approximately 8,400 lines of changes across 60 files from 12
+authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers. The following people are known to have contributed the
+improvements that became Perl 5.18.1:
+
+Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, David
+Mitchell, Father Chrysostomos, Karl Williamson, Lukas Mai, Nicholas Clark,
+Peter Martini, Ricardo Signes, Shlomi Fish, Tony Cook.
+
+The list above is almost certainly incomplete as it is automatically generated
+from version control history. In particular, it does not include the names of
+the (very much appreciated) contributors who reported issues to the Perl bug
+tracker.
+
+Many of the changes included in this version originated in the CPAN modules
+included in Perl's core. We're grateful to the entire CPAN community for
+helping Perl to flourish.
+
+For a more complete list of all of Perl's historical contributors, please see
+the F<AUTHORS> file in the Perl source distribution.
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the articles recently
+posted to the comp.lang.perl.misc newsgroup and the perl bug database at
+http://rt.perl.org/perlbug/ . There may also be information at
+http://www.perl.org/ , the Perl Home Page.
+
+If you believe you have an unreported bug, please run the L<perlbug> program
+included with your release. Be sure to trim your bug down to a tiny but
+sufficient test case. Your bug report, along with the output of C<perl -V>,
+will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
+
+If the bug you are reporting has security implications, which make it
+inappropriate to send to a publicly archived mailing list, then please send it
+to perl5-security-report@perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who will be
+able to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently distributed on
+CPAN.
+
+=head1 SEE ALSO
+
+The F<Changes> file for an explanation of how to view exhaustive details on
+what changed.
+
+The F<INSTALL> file for how to build Perl.
+
+The F<README> file for general stuff.
+
+The F<Artistic> and F<Copying> files for copyright information.
+
+=cut
diff --git a/gnu/usr.bin/perl/pod/perlcheat.pod b/gnu/usr.bin/perl/pod/perlcheat.pod
index deee2fecdfb..f288692a874 100644
--- a/gnu/usr.bin/perl/pod/perlcheat.pod
+++ b/gnu/usr.bin/perl/pod/perlcheat.pod
@@ -23,42 +23,43 @@ already be overwhelming.
[] anon. arrayref ${$$foo[1]}[2] aka $foo->[1]->[2]
{} anon. hashref ${$$foo[1]}[2] aka $foo->[1][2]
\() list of refs
- NUMBERS vs STRINGS LINKS
- OPERATOR PRECEDENCE = = perldoc.perl.org
- -> + . search.cpan.org
- ++ -- == != eq ne cpan.org
- ** < > <= >= lt gt le ge pm.org
- ! ~ \ u+ u- <=> cmp p3rl.org
- =~ !~ perlmonks.org
- * / % x SYNTAX
- + - . foreach (LIST) { } for (a;b;c) { }
- << >> while (e) { } until (e) { }
- named uops if (e) { } elsif (e) { } else { }
- < > <= >= lt gt le ge unless (e) { } elsif (e) { } else { }
- == != <=> eq ne cmp ~~ given (e) { when (e) {} default {} }
+ SYNTAX
+ OPERATOR PRECEDENCE foreach (LIST) { } for (a;b;c) { }
+ -> while (e) { } until (e) { }
+ ++ -- if (e) { } elsif (e) { } else { }
+ ** unless (e) { } elsif (e) { } else { }
+ ! ~ \ u+ u- given (e) { when (e) {} default {} }
+ =~ !~
+ * / % x NUMBERS vs STRINGS FALSE vs TRUE
+ + - . = = undef, "", 0, "0"
+ << >> + . anything else
+ named uops == != eq ne
+ < > <= >= lt gt le ge < > <= >= lt gt le ge
+ == != <=> eq ne cmp ~~ <=> cmp
&
- | ^ REGEX METACHARS REGEX MODIFIERS
- && ^ string begin /i case insensitive
- || // $ str end (bfr \n) /m line based ^$
- .. ... + one or more /s . includes \n
- ?: * zero or more /x ignore wh.space
- = += -= *= etc ? zero or one /p preserve
- , => {3,7} repeat in range /a ASCII /aa safe
- list ops | alternation /l locale /d dual
- not [] character class /u Unicode
- and \b word boundary /e evaluate /ee rpts
- or xor \z string end /g global
- () capture /o compile pat once
- DEBUG (?:p) no capture
- -MO=Deparse (?#t) comment REGEX CHARCLASSES
- -MO=Terse (?=p) ZW pos ahead . [^\n]
- -D## (?!p) ZW neg ahead \s whitespace
- -d:Trace (?<=p) ZW pos behind \K \w word chars
- (?<!p) ZW neg behind \d digits
- CONFIGURATION (?>p) no backtrack \pP named property
- perl -V:ivsize (?|p|p)branch reset \h horiz.wh.space
- (?&NM) cap to name \R linebreak
- \S \W \D \H negate
+ | ^ REGEX MODIFIERS REGEX METACHARS
+ && /i case insensitive ^ string begin
+ || // /m line based ^$ $ str end (bfr \n)
+ .. ... /s . includes \n + one or more
+ ?: /x ignore wh.space * zero or more
+ = += last goto /p preserve ? zero or one
+ , => /a ASCII /aa safe {3,7} repeat in range
+ list ops /l locale /d dual | alternation
+ not /u Unicode [] character class
+ and /e evaluate /ee rpts \b word boundary
+ or xor /g global \z string end
+ /o compile pat once () capture
+ DEBUG (?:p) no capture
+ -MO=Deparse REGEX CHARCLASSES (?#t) comment
+ -MO=Terse . [^\n] (?=p) ZW pos ahead
+ -D## \s whitespace (?!p) ZW neg ahead
+ -d:Trace \w word chars (?<=p) ZW pos behind \K
+ \d digits (?<!p) ZW neg behind
+ CONFIGURATION \pP named property (?>p) no backtrack
+ perl -V:ivsize \h horiz.wh.space (?|p|p)branch reset
+ \R linebreak (?<n>p)named capture
+ \S \W \D \H negate \g{n} ref to named cap
+ \K keep left part
FUNCTION RETURN LISTS
stat localtime caller SPECIAL VARIABLES
0 dev 0 second 0 package $_ default variable
diff --git a/gnu/usr.bin/perl/pod/perlclib.pod b/gnu/usr.bin/perl/pod/perlclib.pod
index 0785577dace..ef0b6b02344 100644
--- a/gnu/usr.bin/perl/pod/perlclib.pod
+++ b/gnu/usr.bin/perl/pod/perlclib.pod
@@ -99,8 +99,8 @@ There is no equivalent to C<fgets>; one should use C<sv_gets> instead:
Instead Of: Use:
- t* p = malloc(n) Newx(id, p, n, t)
- t* p = calloc(n, s) Newxz(id, p, n, t)
+ t* p = malloc(n) Newx(p, n, t)
+ t* p = calloc(n, s) Newxz(p, n, t)
p = realloc(p, n) Renew(p, n, t)
memcpy(dst, src, n) Copy(src, dst, n, t)
memmove(dst, src, n) Move(src, dst, n, t)
diff --git a/gnu/usr.bin/perl/pod/perlcommunity.pod b/gnu/usr.bin/perl/pod/perlcommunity.pod
index 96c7b85486e..2acb0e2399b 100644
--- a/gnu/usr.bin/perl/pod/perlcommunity.pod
+++ b/gnu/usr.bin/perl/pod/perlcommunity.pod
@@ -65,11 +65,17 @@ Run by O'Reilly Media (the publisher of L<the Camel Book|perlbook>, among other
Perl-related literature), perl.com provides current Perl news, articles, and
resources for Perl developers as well as a directory of other useful websites.
+=item L<http://blogs.perl.org/>
+
+Many members of the community have a Perl-related blog on this site. If
+you'd like to join them, you can sign up for free.
+
=item L<http://use.perl.org/>
-use Perl; provides a slashdot-style Perl news website covering all things Perl,
-from minutes of the meetings of the Perl 6 Design team to conference
-announcements with (ir)relevant discussion.
+use Perl; used to provide a slashdot-style news/blog website covering all
+things Perl, from minutes of the meetings of the Perl 6 Design team to
+conference announcements with (ir)relevant discussion. It no longer accepts
+updates, but you can still use the site to read old entries and comments.
=back
@@ -83,6 +89,12 @@ PerlMonks is one of the largest Perl forums, and describes itself as "A place
for individuals to polish, improve, and showcase their Perl skills." and "A
community which allows everyone to grow and learn from each other."
+=item L<http://stackoverflow.com/>
+
+Stack Overflow is a free question-and-answer site for programmers. It's not
+focussed solely on Perl, but it does have an active group of users who do
+their best to help people with their Perl programming questions.
+
=back
=head2 User Groups
diff --git a/gnu/usr.bin/perl/pod/perldebguts.pod b/gnu/usr.bin/perl/pod/perldebguts.pod
index 8ae6e7baa96..a17a6b4aa35 100644
--- a/gnu/usr.bin/perl/pod/perldebguts.pod
+++ b/gnu/usr.bin/perl/pod/perldebguts.pod
@@ -38,7 +38,6 @@ Each array C<@{"_<$filename"}> holds the lines of $filename for a
file compiled by Perl. The same is also true for C<eval>ed strings
that contain subroutines, or which are currently being executed.
The $filename for C<eval>ed strings looks like C<(eval 34)>.
-Code assertions in regexes look like C<(re_eval 19)>.
Values in this array are magical in numeric context: they compare
equal to zero only if the line is not breakable.
@@ -53,14 +52,14 @@ C<"$break_condition\0$action">.
The same holds for evaluated strings that contain subroutines, or
which are currently being executed. The $filename for C<eval>ed strings
-looks like C<(eval 34)> or C<(re_eval 19)>.
+looks like C<(eval 34)>.
=item *
Each scalar C<${"_<$filename"}> contains C<"_<$filename">. This is
also the case for evaluated strings that contain subroutines, or
which are currently being executed. The $filename for C<eval>ed
-strings looks like C<(eval 34)> or C<(re_eval 19)>.
+strings looks like C<(eval 34)>.
=item *
@@ -81,7 +80,7 @@ also exists.
A hash C<%DB::sub> is maintained, whose keys are subroutine names
and whose values have the form C<filename:startline-endline>.
C<filename> has the form C<(eval 34)> for subroutines defined inside
-C<eval>s, or C<(re_eval 19)> for those within regex code assertions.
+C<eval>s.
=item *
@@ -536,236 +535,258 @@ C< >I<id>: I<TYPE> I<OPTIONAL-INFO> (I<next-id>)
Here are the possible types, with short descriptions:
+=for comment
+This table is generated by regen/regcomp.pl. Any changes made here
+will be lost.
+
+=for regcomp.pl begin
+
# TYPE arg-description [num-args] [longjump-len] DESCRIPTION
# Exit points
- END no End of program.
- SUCCEED no Return from a subroutine, basically.
+
+ END no End of program.
+ SUCCEED no Return from a subroutine, basically.
# Anchors:
- BOL no Match "" at beginning of line.
- MBOL no Same, assuming multiline.
- SBOL no Same, assuming singleline.
- EOS no Match "" at end of string.
- EOL no Match "" at end of line.
- MEOL no Same, assuming multiline.
- SEOL no Same, assuming singleline.
- BOUND no Match "" at any word boundary using native charset
- semantics for non-utf8
- BOUNDL no Match "" at any locale word boundary
- BOUNDU no Match "" at any word boundary using Unicode semantics
- BOUNDA no Match "" at any word boundary using ASCII semantics
- NBOUND no Match "" at any word non-boundary using native charset
- semantics for non-utf8
- NBOUNDL no Match "" at any locale word non-boundary
- NBOUNDU no Match "" at any word non-boundary using Unicode semantics
- NBOUNDA no Match "" at any word non-boundary using ASCII semantics
- GPOS no Matches where last m//g left off.
+ BOL no Match "" at beginning of line.
+ MBOL no Same, assuming multiline.
+ SBOL no Same, assuming singleline.
+ EOS no Match "" at end of string.
+ EOL no Match "" at end of line.
+ MEOL no Same, assuming multiline.
+ SEOL no Same, assuming singleline.
+ BOUND no Match "" at any word boundary using
+ native charset semantics for non-utf8
+ BOUNDL no Match "" at any locale word boundary
+ BOUNDU no Match "" at any word boundary using
+ Unicode semantics
+ BOUNDA no Match "" at any word boundary using ASCII
+ semantics
+ NBOUND no Match "" at any word non-boundary using
+ native charset semantics for non-utf8
+ NBOUNDL no Match "" at any locale word non-boundary
+ NBOUNDU no Match "" at any word non-boundary using
+ Unicode semantics
+ NBOUNDA no Match "" at any word non-boundary using
+ ASCII semantics
+ GPOS no Matches where last m//g left off.
# [Special] alternatives:
- REG_ANY no Match any one character (except newline).
- SANY no Match any one character.
- CANY no Match any one byte.
- ANYOF sv Match character in (or not in) this class, single char
- match only
- ANYOFV sv Match character in (or not in) this class, can
- match-multiple chars
- ALNUM no Match any alphanumeric character using native charset
- semantics for non-utf8
- ALNUML no Match any alphanumeric char in locale
- ALNUMU no Match any alphanumeric char using Unicode semantics
- ALNUMA no Match [A-Za-z_0-9]
- NALNUM no Match any non-alphanumeric character using native charset
- semantics for non-utf8
- NALNUML no Match any non-alphanumeric char in locale
- NALNUMU no Match any non-alphanumeric char using Unicode semantics
- NALNUMA no Match [^A-Za-z_0-9]
- SPACE no Match any whitespace character using native charset
- semantics for non-utf8
- SPACEL no Match any whitespace char in locale
- SPACEU no Match any whitespace char using Unicode semantics
- SPACEA no Match [ \t\n\f\r]
- NSPACE no Match any non-whitespace character using native charset
- semantics for non-utf8
- NSPACEL no Match any non-whitespace char in locale
- NSPACEU no Match any non-whitespace char using Unicode semantics
- NSPACEA no Match [^ \t\n\f\r]
- DIGIT no Match any numeric character using native charset semantics
- for non-utf8
- DIGITL no Match any numeric character in locale
- DIGITA no Match [0-9]
- NDIGIT no Match any non-numeric character using native charset
- i semantics for non-utf8
- NDIGITL no Match any non-numeric character in locale
- NDIGITA no Match [^0-9]
- CLUMP no Match any extended grapheme cluster sequence
+ REG_ANY no Match any one character (except newline).
+ SANY no Match any one character.
+ CANY no Match any one byte.
+ ANYOF sv Match character in (or not in) this
+ class, single char match only
+ ANYOF_WARN_SUPER sv Match character in (or not in) this
+ class, warn (if enabled) upon matching a
+ char above Unicode max;
+ ANYOF_SYNTHETIC sv Synthetic start class
+
+ POSIXD none Some [[:class:]] under /d; the FLAGS
+ field gives which one
+ POSIXL none Some [[:class:]] under /l; the FLAGS
+ field gives which one
+ POSIXU none Some [[:class:]] under /u; the FLAGS
+ field gives which one
+ POSIXA none Some [[:class:]] under /a; the FLAGS
+ field gives which one
+ NPOSIXD none complement of POSIXD, [[:^class:]]
+ NPOSIXL none complement of POSIXL, [[:^class:]]
+ NPOSIXU none complement of POSIXU, [[:^class:]]
+ NPOSIXA none complement of POSIXA, [[:^class:]]
+
+ CLUMP no Match any extended grapheme cluster
+ sequence
# Alternation
- # BRANCH The set of branches constituting a single choice are hooked
- # together with their "next" pointers, since precedence prevents
- # anything being concatenated to any individual branch. The
- # "next" pointer of the last BRANCH in a choice points to the
- # thing following the whole choice. This is also where the
- # final "next" pointer of each individual branch points; each
- # branch starts with the operand node of a BRANCH node.
+ # BRANCH The set of branches constituting a single choice are
+ # hooked together with their "next" pointers, since
+ # precedence prevents anything being concatenated to
+ # any individual branch. The "next" pointer of the last
+ # BRANCH in a choice points to the thing following the
+ # whole choice. This is also where the final "next"
+ # pointer of each individual branch points; each branch
+ # starts with the operand node of a BRANCH node.
#
- BRANCH node Match this alternative, or the next...
+ BRANCH node Match this alternative, or the next...
# Back pointer
- # BACK Normal "next" pointers all implicitly point forward; BACK
- # exists to make loop structures possible.
+ # BACK Normal "next" pointers all implicitly point forward;
+ # BACK exists to make loop structures possible.
# not used
- BACK no Match "", "next" ptr points backward.
+ BACK no Match "", "next" ptr points backward.
# Literals
- EXACT str Match this string (preceded by length).
- EXACTF str Match this string, folded, native charset semantics for
- non-utf8 (prec. by length).
- EXACTFL str Match this string, folded in locale (w/len).
- EXACTFU str Match this string, folded, Unicode semantics for non-utf8
- (prec. by length).
- EXACTFA str Match this string, folded, Unicode semantics for non-utf8,
- but no ASCII-range character matches outside ASCII (prec.
- by length),.
+ EXACT str Match this string (preceded by length).
+ EXACTF str Match this non-UTF-8 string (not
+ guaranteed to be folded) using /id rules
+ (w/len).
+ EXACTFL str Match this string (not guaranteed to be
+ folded) using /il rules (w/len).
+ EXACTFU str Match this string (folded iff in UTF-8,
+ length in folding doesn't change if not
+ in UTF-8) using /iu rules (w/len).
+ EXACTFA str Match this string (not guaranteed to be
+ folded) using /iaa rules (w/len).
+ EXACTFU_SS str Match this string (folded iff in UTF-8,
+ length in folding may change even if not
+ in UTF-8) using /iu rules (w/len).
+ EXACTFU_TRICKYFOLD str Match this folded UTF-8 string using /iu
+ rules
# Do nothing types
- NOTHING no Match empty string.
+ NOTHING no Match empty string.
# A variant of above which delimits a group, thus stops optimizations
- TAIL no Match empty string. Can jump here from outside.
+ TAIL no Match empty string. Can jump here from
+ outside.
# Loops
- # STAR,PLUS '?', and complex '*' and '+', are implemented as circular
- # BRANCH structures using BACK. Simple cases (one character
- # per match) are implemented with STAR and PLUS for speed
- # and to minimize recursive plunges.
+ # STAR,PLUS '?', and complex '*' and '+', are implemented as
+ # circular BRANCH structures using BACK. Simple cases
+ # (one character per match) are implemented with STAR
+ # and PLUS for speed and to minimize recursive plunges.
#
- STAR node Match this (simple) thing 0 or more times.
- PLUS node Match this (simple) thing 1 or more times.
+ STAR node Match this (simple) thing 0 or more
+ times.
+ PLUS node Match this (simple) thing 1 or more
+ times.
- CURLY sv 2 Match this simple thing {n,m} times.
- CURLYN no 2 Capture next-after-this simple thing
- CURLYM no 2 Capture this medium-complex thing {n,m} times.
- CURLYX sv 2 Match this complex thing {n,m} times.
+ CURLY sv 2 Match this simple thing {n,m} times.
+ CURLYN no 2 Capture next-after-this simple thing
+ CURLYM no 2 Capture this medium-complex thing {n,m}
+ times.
+ CURLYX sv 2 Match this complex thing {n,m} times.
# This terminator creates a loop structure for CURLYX
- WHILEM no Do curly processing and see if rest matches.
+ WHILEM no Do curly processing and see if rest
+ matches.
# Buffer related
# OPEN,CLOSE,GROUPP ...are numbered at compile time.
- OPEN num 1 Mark this point in input as start of #n.
- CLOSE num 1 Analogous to OPEN.
-
- REF num 1 Match some already matched string
- REFF num 1 Match already matched string, folded using native charset
- semantics for non-utf8
- REFFL num 1 Match already matched string, folded in loc.
- REFFU num 1 Match already matched string, folded using unicode
- semantics for non-utf8
- REFFA num 1 Match already matched string, folded using unicode
- semantics for non-utf8, no mixing ASCII, non-ASCII
-
- # Named references. Code in regcomp.c assumes that these all are after the
- # numbered references
- NREF no-sv 1 Match some already matched string
- NREFF no-sv 1 Match already matched string, folded using native charset
- semantics for non-utf8
- NREFFL no-sv 1 Match already matched string, folded in loc.
- NREFFU num 1 Match already matched string, folded using unicode
- semantics for non-utf8
- NREFFA num 1 Match already matched string, folded using unicode
- semantics for non-utf8, no mixing ASCII, non-ASCII
-
- IFMATCH off 1 2 Succeeds if the following matches.
- UNLESSM off 1 2 Fails if the following matches.
- SUSPEND off 1 1 "Independent" sub-RE.
- IFTHEN off 1 1 Switch, should be preceded by switcher.
- GROUPP num 1 Whether the group matched.
+ OPEN num 1 Mark this point in input as start of #n.
+ CLOSE num 1 Analogous to OPEN.
+
+ REF num 1 Match some already matched string
+ REFF num 1 Match already matched string, folded
+ using native charset semantics for non-
+ utf8
+ REFFL num 1 Match already matched string, folded in
+ loc.
+ REFFU num 1 Match already matched string, folded
+ using unicode semantics for non-utf8
+ REFFA num 1 Match already matched string, folded
+ using unicode semantics for non-utf8, no
+ mixing ASCII, non-ASCII
+
+ # Named references. Code in regcomp.c assumes that these all are after
+ # the numbered references
+ NREF no-sv 1 Match some already matched string
+ NREFF no-sv 1 Match already matched string, folded
+ using native charset semantics for non-
+ utf8
+ NREFFL no-sv 1 Match already matched string, folded in
+ loc.
+ NREFFU num 1 Match already matched string, folded
+ using unicode semantics for non-utf8
+ NREFFA num 1 Match already matched string, folded
+ using unicode semantics for non-utf8, no
+ mixing ASCII, non-ASCII
+
+ IFMATCH off 1 2 Succeeds if the following matches.
+ UNLESSM off 1 2 Fails if the following matches.
+ SUSPEND off 1 1 "Independent" sub-RE.
+ IFTHEN off 1 1 Switch, should be preceded by switcher.
+ GROUPP num 1 Whether the group matched.
# Support for long RE
- LONGJMP off 1 1 Jump far away.
- BRANCHJ off 1 1 BRANCH with long offset.
+ LONGJMP off 1 1 Jump far away.
+ BRANCHJ off 1 1 BRANCH with long offset.
# The heavy worker
- EVAL evl 1 Execute some Perl code.
+ EVAL evl 1 Execute some Perl code.
# Modifiers
- MINMOD no Next operator is not greedy.
- LOGICAL no Next opcode should set the flag only.
+ MINMOD no Next operator is not greedy.
+ LOGICAL no Next opcode should set the flag only.
# This is not used yet
- RENUM off 1 1 Group with independently numbered parens.
+ RENUM off 1 1 Group with independently numbered parens.
# Trie Related
- # Behave the same as A|LIST|OF|WORDS would. The '..C' variants have
- # inline charclass data (ascii only), the 'C' store it in the structure.
- # NOTE: the relative order of the TRIE-like regops is significant
+ # Behave the same as A|LIST|OF|WORDS would. The '..C' variants
+ # have inline charclass data (ascii only), the 'C' store it in the
+ # structure.
- TRIE trie 1 Match many EXACT(F[ALU]?)? at once. flags==type
- TRIEC charclass Same as TRIE, but with embedded charclass data
+ TRIE trie 1 Match many EXACT(F[ALU]?)? at once.
+ flags==type
+ TRIEC trie Same as TRIE, but with embedded charclass
+ charclass data
- # For start classes, contains an added fail table.
- AHOCORASICK trie 1 Aho Corasick stclass. flags==type
- AHOCORASICKC charclass Same as AHOCORASICK, but with embedded charclass data
+ AHOCORASICK trie 1 Aho Corasick stclass. flags==type
+ AHOCORASICKC trie Same as AHOCORASICK, but with embedded
+ charclass charclass data
# Regex Subroutines
- GOSUB num/ofs 2L recurse to paren arg1 at (signed) ofs arg2
- GOSTART no recurse to start of pattern
+ GOSUB num/ofs 2L recurse to paren arg1 at (signed) ofs
+ arg2
+ GOSTART no recurse to start of pattern
# Special conditionals
- NGROUPP no-sv 1 Whether the group matched.
- INSUBP num 1 Whether we are in a specific recurse.
- DEFINEP none 1 Never execute directly.
+ NGROUPP no-sv 1 Whether the group matched.
+ INSUBP num 1 Whether we are in a specific recurse.
+ DEFINEP none 1 Never execute directly.
# Backtracking Verbs
- ENDLIKE none Used only for the type field of verbs
- OPFAIL none Same as (?!)
- ACCEPT parno 1 Accepts the current matched string.
-
+ ENDLIKE none Used only for the type field of verbs
+ OPFAIL none Same as (?!)
+ ACCEPT parno 1 Accepts the current matched string.
# Verbs With Arguments
- VERB no-sv 1 Used only for the type field of verbs
- PRUNE no-sv 1 Pattern fails at this startpoint if no-backtracking through this
- MARKPOINT no-sv 1 Push the current location for rollback by cut.
- SKIP no-sv 1 On failure skip forward (to the mark) before retrying
- COMMIT no-sv 1 Pattern fails outright if backtracking through this
- CUTGROUP no-sv 1 On failure go to the next alternation in the group
+ VERB no-sv 1 Used only for the type field of verbs
+ PRUNE no-sv 1 Pattern fails at this startpoint if no-
+ backtracking through this
+ MARKPOINT no-sv 1 Push the current location for rollback by
+ cut.
+ SKIP no-sv 1 On failure skip forward (to the mark)
+ before retrying
+ COMMIT no-sv 1 Pattern fails outright if backtracking
+ through this
+ CUTGROUP no-sv 1 On failure go to the next alternation in
+ the group
# Control what to keep in $&.
- KEEPS no $& begins here.
+ KEEPS no $& begins here.
# New charclass like patterns
- LNBREAK none generic newline pattern
- VERTWS none vertical whitespace (Perl 6)
- NVERTWS none not vertical whitespace (Perl 6)
- HORIZWS none horizontal whitespace (Perl 6)
- NHORIZWS none not horizontal whitespace (Perl 6)
-
- FOLDCHAR codepoint 1 codepoint with tricky case folding properties.
+ LNBREAK none generic newline pattern
# SPECIAL REGOPS
- # This is not really a node, but an optimized away piece of a "long" node.
- # To simplify debugging output, we mark it as if it were a node
- OPTIMIZED off Placeholder for dump.
+ # This is not really a node, but an optimized away piece of a "long"
+ # node. To simplify debugging output, we mark it as if it were a node
+ OPTIMIZED off Placeholder for dump.
# Special opcode with the property that no opcode in a compiled program
# will ever be of this type. Thus it can be used as a flag value that
# no other opcode has been seen. END is used similarly, in that an END
- # node cant be optimized. So END implies "unoptimizable" and PSEUDO mean
- # "not seen anything to optimize yet".
- PSEUDO off Pseudo opcode for internal use.
+ # node cant be optimized. So END implies "unoptimizable" and PSEUDO
+ # mean "not seen anything to optimize yet".
+ PSEUDO off Pseudo opcode for internal use.
+
+=for regcomp.pl end
=for unprinted-credits
Next section M-J. Dominus (mjd-perl-patch+@plover.com) 20010421
diff --git a/gnu/usr.bin/perl/pod/perldtrace.pod b/gnu/usr.bin/perl/pod/perldtrace.pod
index 39551e17490..2cec25935bd 100644
--- a/gnu/usr.bin/perl/pod/perldtrace.pod
+++ b/gnu/usr.bin/perl/pod/perldtrace.pod
@@ -55,6 +55,10 @@ package name of the function.
The C<phase-change> probe was added.
+=item 5.18.0
+
+The C<op-entry>, C<loading-file>, and C<loaded-file> probes were added.
+
=back
=head1 PROBES
@@ -70,7 +74,7 @@ I<caller> from a DTrace action.
:*perl*::sub-entry {
printf("%s::%s entered at %s line %d\n",
- copyinstr(arg3), copyinstr(arg0), copyinstr(arg1), arg0);
+ copyinstr(arg3), copyinstr(arg0), copyinstr(arg1), arg2);
}
=item sub-return(SUBNAME, FILE, LINE, PACKAGE)
@@ -82,7 +86,7 @@ from a DTrace action.
:*perl*::sub-return {
printf("%s::%s returned at %s line %d\n",
- copyinstr(arg3), copyinstr(arg0), copyinstr(arg1), arg0);
+ copyinstr(arg3), copyinstr(arg0), copyinstr(arg1), arg2);
}
=item phase-change(NEWPHASE, OLDPHASE)
@@ -97,6 +101,40 @@ C<${^GLOBAL_PHASE}> reports.
copyinstr(arg1), copyinstr(arg0));
}
+=item op-entry(OPNAME)
+
+Traces the execution of each opcode in the Perl runloop. This probe
+is fired before the opcode is executed. When the Perl debugger is
+enabled, the DTrace probe is fired I<after> the debugger hooks (but
+still before the opcode itself is executed).
+
+ :*perl*::op-entry {
+ printf("About to execute opcode %s\n", copyinstr(arg0));
+ }
+
+=item loading-file(FILENAME)
+
+Fires when Perl is about to load an individual file, whether from
+C<use>, C<require>, or C<do>. This probe fires before the file is
+read from disk. The filename argument is converted to local filesystem
+paths instead of providing C<Module::Name>-style names.
+
+ :*perl*:loading-file {
+ printf("About to load %s\n", copyinstr(arg0));
+ }
+
+=item loaded-file(FILENAME)
+
+Fires when Perl has successfully loaded an individual file, whether
+from C<use>, C<require>, or C<do>. This probe fires after the file
+is read from disk and its contentss evaluated. The filename argument
+is converted to local filesystem paths instead of providing
+C<Module::Name>-style names.
+
+ :*perl*:loaded-file {
+ printf("Successfully loaded %s\n", copyinstr(arg0));
+ }
+
=back
=head1 EXAMPLES
@@ -156,15 +194,23 @@ C<${^GLOBAL_PHASE}> reports.
read 374
stat64 1056
+=item Perl functions that execute the most opcodes
+
+ # dtrace -qZn 'sub-entry { self->fqn = strjoin(copyinstr(arg3), strjoin("::", copyinstr(arg0))) } op-entry /self->fqn != ""/ { @[self->fqn] = count() } END { trunc(@, 3) }'
+
+ warnings::unimport 4589
+ Exporter::Heavy::_rebuild_cache 5039
+ Exporter::import 14578
+
=back
=head1 REFERENCES
=over 4
-=item DTrace User Guide
+=item DTrace Dynamic Tracing Guide
-L<http://download.oracle.com/docs/cd/E19082-01/819-3620/index.html>
+L<http://dtrace.org/guide/preface.html>
=item DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD
@@ -172,6 +218,17 @@ L<http://www.amazon.com/DTrace-Dynamic-Tracing-Solaris-FreeBSD/dp/0132091518/>
=back
+=head1 SEE ALSO
+
+=over 4
+
+=item L<Devel::DTrace::Provider>
+
+This CPAN module lets you create application-level DTrace probes written in
+Perl.
+
+=back
+
=head1 AUTHORS
Shawn M Moore C<sartak@gmail.com>
diff --git a/gnu/usr.bin/perl/pod/perlebcdic.pod b/gnu/usr.bin/perl/pod/perlebcdic.pod
index ecd0676415f..2256fb1ef60 100644
--- a/gnu/usr.bin/perl/pod/perlebcdic.pod
+++ b/gnu/usr.bin/perl/pod/perlebcdic.pod
@@ -7,7 +7,7 @@ perlebcdic - Considerations for running Perl on EBCDIC platforms
=head1 DESCRIPTION
An exploration of some of the issues facing Perl programmers
-on EBCDIC based computers. We do not cover localization,
+on EBCDIC based computers. We do not cover localization,
internationalization, or multi-byte character set issues other
than some discussion of UTF-8 and UTF-EBCDIC.
@@ -23,16 +23,16 @@ by sending mail to perlbug@perl.org
The American Standard Code for Information Interchange (ASCII or US-ASCII) is a
set of
-integers running from 0 to 127 (decimal) that imply character
-interpretation by the display and other systems of computers.
-The range 0..127 can be covered by setting the bits in a 7-bit binary
-digit, hence the set is sometimes referred to as "7-bit ASCII".
-ASCII was described by the American National Standards Institute
-document ANSI X3.4-1986. It was also described by ISO 646:1991
-(with localization for currency symbols). The full ASCII set is
-given in the table below as the first 128 elements. Languages that
-can be written adequately with the characters in ASCII include
-English, Hawaiian, Indonesian, Swahili and some Native American
+integers running from 0 to 127 (decimal) that imply character
+interpretation by the display and other systems of computers.
+The range 0..127 can be covered by setting the bits in a 7-bit binary
+digit, hence the set is sometimes referred to as "7-bit ASCII".
+ASCII was described by the American National Standards Institute
+document ANSI X3.4-1986. It was also described by ISO 646:1991
+(with localization for currency symbols). The full ASCII set is
+given in the table below as the first 128 elements. Languages that
+can be written adequately with the characters in ASCII include
+English, Hawaiian, Indonesian, Swahili and some Native American
languages.
There are many character sets that extend the range of integers
@@ -41,28 +41,28 @@ One common one is the ISO 8859-1 character set.
=head2 ISO 8859
-The ISO 8859-$n are a collection of character code sets from the
-International Organization for Standardization (ISO) each of which
-adds characters to the ASCII set that are typically found in European
-languages many of which are based on the Roman, or Latin, alphabet.
+The ISO 8859-$n are a collection of character code sets from the
+International Organization for Standardization (ISO), each of which
+adds characters to the ASCII set that are typically found in European
+languages, many of which are based on the Roman, or Latin, alphabet.
=head2 Latin 1 (ISO 8859-1)
-A particular 8-bit extension to ASCII that includes grave and acute
-accented Latin characters. Languages that can employ ISO 8859-1
-include all the languages covered by ASCII as well as Afrikaans,
-Albanian, Basque, Catalan, Danish, Faroese, Finnish, Norwegian,
-Portuguese, Spanish, and Swedish. Dutch is covered albeit without
-the ij ligature. French is covered too but without the oe ligature.
+A particular 8-bit extension to ASCII that includes grave and acute
+accented Latin characters. Languages that can employ ISO 8859-1
+include all the languages covered by ASCII as well as Afrikaans,
+Albanian, Basque, Catalan, Danish, Faroese, Finnish, Norwegian,
+Portuguese, Spanish, and Swedish. Dutch is covered albeit without
+the ij ligature. French is covered too but without the oe ligature.
German can use ISO 8859-1 but must do so without German-style
-quotation marks. This set is based on Western European extensions
+quotation marks. This set is based on Western European extensions
to ASCII and is commonly encountered in world wide web work.
In IBM character code set identification terminology ISO 8859-1 is
also known as CCSID 819 (or sometimes 0819 or even 00819).
=head2 EBCDIC
-The Extended Binary Coded Decimal Interchange Code refers to a
+The Extended Binary Coded Decimal Interchange Code refers to a
large collection of single- and multi-byte coded character sets that are
different from ASCII or ISO 8859-1 and are all slightly different from each
other; they typically run on host computers. The EBCDIC encodings derive from
@@ -71,19 +71,19 @@ cards was such that high bits were set for the upper and lower case alphabet
characters [a-z] and [A-Z], but there were gaps within each Latin alphabet
range.
-Some IBM EBCDIC character sets may be known by character code set
+Some IBM EBCDIC character sets may be known by character code set
identification numbers (CCSID numbers) or code page numbers.
Perl can be compiled on platforms that run any of three commonly used EBCDIC
character sets, listed below.
-=head2 The 13 variant characters
+=head3 The 13 variant characters
Among IBM EBCDIC character code sets there are 13 characters that
are often mapped to different integer values. Those characters
are known as the 13 "variant" characters and are:
- \ [ ] { } ^ ~ ! # | $ @ `
+ \ [ ] { } ^ ~ ! # | $ @ `
When Perl is compiled for a platform, it looks at some of these characters to
guess which EBCDIC character set the platform uses, and adapts itself
@@ -92,26 +92,30 @@ one of the three Perl knows about, Perl will either fail to compile, or
mistakenly and silently choose one of the three.
They are:
-=head2 0037
+=over
-Character code set ID 0037 is a mapping of the ASCII plus Latin-1
-characters (i.e. ISO 8859-1) to an EBCDIC set. 0037 is used
-in North American English locales on the OS/400 operating system
-that runs on AS/400 computers. CCSID 0037 differs from ISO 8859-1
+=item B<0037>
+
+Character code set ID 0037 is a mapping of the ASCII plus Latin-1
+characters (i.e. ISO 8859-1) to an EBCDIC set. 0037 is used
+in North American English locales on the OS/400 operating system
+that runs on AS/400 computers. CCSID 0037 differs from ISO 8859-1
in 237 places, in other words they agree on only 19 code point values.
-=head2 1047
+=item B<1047>
-Character code set ID 1047 is also a mapping of the ASCII plus
-Latin-1 characters (i.e. ISO 8859-1) to an EBCDIC set. 1047 is
-used under Unix System Services for OS/390 or z/OS, and OpenEdition
+Character code set ID 1047 is also a mapping of the ASCII plus
+Latin-1 characters (i.e. ISO 8859-1) to an EBCDIC set. 1047 is
+used under Unix System Services for OS/390 or z/OS, and OpenEdition
for VM/ESA. CCSID 1047 differs from CCSID 0037 in eight places.
-=head2 POSIX-BC
+=item B<POSIX-BC>
The EBCDIC code page in use on Siemens' BS2000 system is distinct from
1047 and 0037. It is identified below as the POSIX-BC set.
+=back
+
=head2 Unicode code points versus EBCDIC code points
In Unicode terminology a I<code point> is the number assigned to a
@@ -218,7 +222,7 @@ you to use different encodings per IO channel. For example you may use
to get four files containing "Hello World!\n" in ASCII, CP 0037 EBCDIC,
ISO 8859-1 (Latin-1) (in this example identical to ASCII since only ASCII
-characters were printed), and
+characters were printed), and
UTF-EBCDIC (in this example identical to normal EBCDIC since only characters
that don't differ between EBCDIC and UTF-EBCDIC were printed). See the
documentation of Encode::PerlIO for details.
@@ -230,21 +234,18 @@ ignores things like the type of your filesystem (ASCII or EBCDIC).
The following tables list the ASCII and Latin 1 ordered sets including
the subsets: C0 controls (0..31), ASCII graphics (32..7e), delete (7f),
-C1 controls (80..9f), and Latin-1 (a.k.a. ISO 8859-1) (a0..ff). In the
-table non-printing control character names as well as the Latin 1
-extensions to ASCII have been labelled with character names roughly
-corresponding to I<The Unicode Standard, Version 3.0> albeit with
-substitutions such as s/LATIN// and s/VULGAR// in all cases,
-s/CAPITAL LETTER// in some cases, and s/SMALL LETTER ([A-Z])/\l$1/
-in some other cases. The "names" of the controls listed here are
-the Unicode Version 1 names, except for the few that don't have names, in which
-case the names in the Wikipedia article were used
-(L<http://en.wikipedia.org/wiki/C0_and_C1_control_codes>).
-The differences between the 0037 and 1047 sets are
-flagged with ***. The differences between the 1047 and POSIX-BC sets
-are flagged with ###. All ord() numbers listed are decimal. If you
-would rather see this table listing octal values then run the table
-(that is, the pod version of this document since this recipe may not
+C1 controls (80..9f), and Latin-1 (a.k.a. ISO 8859-1) (a0..ff). In the
+table names of the Latin 1
+extensions to ASCII have been labelled with character names roughly
+corresponding to I<The Unicode Standard, Version 6.1> albeit with
+substitutions such as s/LATIN// and s/VULGAR// in all cases, s/CAPITAL
+LETTER// in some cases, and s/SMALL LETTER ([A-Z])/\l$1/ in some other
+cases. Controls are listed using their Unicode 6.1 abbreviatons.
+The differences between the 0037 and 1047 sets are
+flagged with **. The differences between the 1047 and POSIX-BC sets
+are flagged with ##. All ord() numbers listed are decimal. If you
+would rather see this table listing octal values, then run the table
+(that is, the pod source text of this document, since this recipe may not
work with a pod2_other_format translation) through:
=over 4
@@ -253,8 +254,8 @@ work with a pod2_other_format translation) through:
=back
- perl -ne 'if(/(.{43})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/)' \
- -e '{printf("%s%-9.03o%-9.03o%-9.03o%.03o\n",$1,$2,$3,$4,$5)}' \
+ perl -ne 'if(/(.{29})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/)' \
+ -e '{printf("%s%-5.03o%-5.03o%-5.03o%.03o\n",$1,$2,$3,$4,$5)}' \
perlebcdic.pod
If you want to retain the UTF-x code points then in script form you
@@ -268,19 +269,19 @@ might want to write:
open(FH,"<perlebcdic.pod") or die "Could not open perlebcdic.pod: $!";
while (<FH>) {
- if (/(.{43})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\.?(\d*)\s+(\d+)\.?(\d*)/)
+ if (/(.{29})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\.?(\d*)\s+(\d+)\.?(\d*)/)
{
if ($7 ne '' && $9 ne '') {
printf(
- "%s%-9.03o%-9.03o%-9.03o%-9.03o%-3o.%-5o%-3o.%.03o\n",
+ "%s%-5.03o%-5.03o%-5.03o%-5.03o%-3o.%-5o%-3o.%.03o\n",
$1,$2,$3,$4,$5,$6,$7,$8,$9);
}
elsif ($7 ne '') {
- printf("%s%-9.03o%-9.03o%-9.03o%-9.03o%-3o.%-5o%.03o\n",
+ printf("%s%-5.03o%-5.03o%-5.03o%-5.03o%-3o.%-5o%.03o\n",
$1,$2,$3,$4,$5,$6,$7,$8);
}
else {
- printf("%s%-9.03o%-9.03o%-9.03o%-9.03o%-9.03o%.03o\n",
+ printf("%s%-5.03o%-5.03o%-5.03o%-5.03o%-5.03o%.03o\n",
$1,$2,$3,$4,$5,$6,$8);
}
}
@@ -295,8 +296,8 @@ run the table through:
=back
- perl -ne 'if(/(.{43})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/)' \
- -e '{printf("%s%-9.02X%-9.02X%-9.02X%.02X\n",$1,$2,$3,$4,$5)}' \
+ perl -ne 'if(/(.{29})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/)' \
+ -e '{printf("%s%-5.02X%-5.02X%-5.02X%.02X\n",$1,$2,$3,$4,$5)}' \
perlebcdic.pod
Or, in order to retain the UTF-x code points in hexadecimal:
@@ -309,284 +310,286 @@ Or, in order to retain the UTF-x code points in hexadecimal:
open(FH,"<perlebcdic.pod") or die "Could not open perlebcdic.pod: $!";
while (<FH>) {
- if (/(.{43})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\.?(\d*)\s+(\d+)\.?(\d*)/)
+ if (/(.{29})(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\.?(\d*)\s+(\d+)\.?(\d*)/)
{
if ($7 ne '' && $9 ne '') {
printf(
- "%s%-9.02X%-9.02X%-9.02X%-9.02X%-2X.%-6.02X%02X.%02X\n",
+ "%s%-5.02X%-5.02X%-5.02X%-5.02X%-2X.%-6.02X%02X.%02X\n",
$1,$2,$3,$4,$5,$6,$7,$8,$9);
}
elsif ($7 ne '') {
- printf("%s%-9.02X%-9.02X%-9.02X%-9.02X%-2X.%-6.02X%02X\n",
+ printf("%s%-5.02X%-5.02X%-5.02X%-5.02X%-2X.%-6.02X%02X\n",
$1,$2,$3,$4,$5,$6,$7,$8);
}
else {
- printf("%s%-9.02X%-9.02X%-9.02X%-9.02X%-9.02X%02X\n",
+ printf("%s%-5.02X%-5.02X%-5.02X%-5.02X%-5.02X%02X\n",
$1,$2,$3,$4,$5,$6,$8);
}
}
}
- ISO 8859-1 CCSID CCSID CCSID 1047
- chr CCSID 0819 0037 1047 POSIX-BC UTF-8 UTF-EBCDIC
- ----------------------------------------------------------------------------------------------
- <NULL> 0 0 0 0 0 0
- <START OF HEADING> 1 1 1 1 1 1
- <START OF TEXT> 2 2 2 2 2 2
- <END OF TEXT> 3 3 3 3 3 3
- <END OF TRANSMISSION> 4 55 55 55 4 55
- <ENQUIRY> 5 45 45 45 5 45
- <ACKNOWLEDGE> 6 46 46 46 6 46
- <BELL> 7 47 47 47 7 47
- <BACKSPACE> 8 22 22 22 8 22
- <HORIZONTAL TABULATION> 9 5 5 5 9 5
- <LINE FEED> 10 37 21 21 10 21 ***
- <VERTICAL TABULATION> 11 11 11 11 11 11
- <FORM FEED> 12 12 12 12 12 12
- <CARRIAGE RETURN> 13 13 13 13 13 13
- <SHIFT OUT> 14 14 14 14 14 14
- <SHIFT IN> 15 15 15 15 15 15
- <DATA LINK ESCAPE> 16 16 16 16 16 16
- <DEVICE CONTROL ONE> 17 17 17 17 17 17
- <DEVICE CONTROL TWO> 18 18 18 18 18 18
- <DEVICE CONTROL THREE> 19 19 19 19 19 19
- <DEVICE CONTROL FOUR> 20 60 60 60 20 60
- <NEGATIVE ACKNOWLEDGE> 21 61 61 61 21 61
- <SYNCHRONOUS IDLE> 22 50 50 50 22 50
- <END OF TRANSMISSION BLOCK> 23 38 38 38 23 38
- <CANCEL> 24 24 24 24 24 24
- <END OF MEDIUM> 25 25 25 25 25 25
- <SUBSTITUTE> 26 63 63 63 26 63
- <ESCAPE> 27 39 39 39 27 39
- <FILE SEPARATOR> 28 28 28 28 28 28
- <GROUP SEPARATOR> 29 29 29 29 29 29
- <RECORD SEPARATOR> 30 30 30 30 30 30
- <UNIT SEPARATOR> 31 31 31 31 31 31
- <SPACE> 32 64 64 64 32 64
- ! 33 90 90 90 33 90
- " 34 127 127 127 34 127
- # 35 123 123 123 35 123
- $ 36 91 91 91 36 91
- % 37 108 108 108 37 108
- & 38 80 80 80 38 80
- ' 39 125 125 125 39 125
- ( 40 77 77 77 40 77
- ) 41 93 93 93 41 93
- * 42 92 92 92 42 92
- + 43 78 78 78 43 78
- , 44 107 107 107 44 107
- - 45 96 96 96 45 96
- . 46 75 75 75 46 75
- / 47 97 97 97 47 97
- 0 48 240 240 240 48 240
- 1 49 241 241 241 49 241
- 2 50 242 242 242 50 242
- 3 51 243 243 243 51 243
- 4 52 244 244 244 52 244
- 5 53 245 245 245 53 245
- 6 54 246 246 246 54 246
- 7 55 247 247 247 55 247
- 8 56 248 248 248 56 248
- 9 57 249 249 249 57 249
- : 58 122 122 122 58 122
- ; 59 94 94 94 59 94
- < 60 76 76 76 60 76
- = 61 126 126 126 61 126
- > 62 110 110 110 62 110
- ? 63 111 111 111 63 111
- @ 64 124 124 124 64 124
- A 65 193 193 193 65 193
- B 66 194 194 194 66 194
- C 67 195 195 195 67 195
- D 68 196 196 196 68 196
- E 69 197 197 197 69 197
- F 70 198 198 198 70 198
- G 71 199 199 199 71 199
- H 72 200 200 200 72 200
- I 73 201 201 201 73 201
- J 74 209 209 209 74 209
- K 75 210 210 210 75 210
- L 76 211 211 211 76 211
- M 77 212 212 212 77 212
- N 78 213 213 213 78 213
- O 79 214 214 214 79 214
- P 80 215 215 215 80 215
- Q 81 216 216 216 81 216
- R 82 217 217 217 82 217
- S 83 226 226 226 83 226
- T 84 227 227 227 84 227
- U 85 228 228 228 85 228
- V 86 229 229 229 86 229
- W 87 230 230 230 87 230
- X 88 231 231 231 88 231
- Y 89 232 232 232 89 232
- Z 90 233 233 233 90 233
- [ 91 186 173 187 91 173 *** ###
- \ 92 224 224 188 92 224 ###
- ] 93 187 189 189 93 189 ***
- ^ 94 176 95 106 94 95 *** ###
- _ 95 109 109 109 95 109
- ` 96 121 121 74 96 121 ###
- a 97 129 129 129 97 129
- b 98 130 130 130 98 130
- c 99 131 131 131 99 131
- d 100 132 132 132 100 132
- e 101 133 133 133 101 133
- f 102 134 134 134 102 134
- g 103 135 135 135 103 135
- h 104 136 136 136 104 136
- i 105 137 137 137 105 137
- j 106 145 145 145 106 145
- k 107 146 146 146 107 146
- l 108 147 147 147 108 147
- m 109 148 148 148 109 148
- n 110 149 149 149 110 149
- o 111 150 150 150 111 150
- p 112 151 151 151 112 151
- q 113 152 152 152 113 152
- r 114 153 153 153 114 153
- s 115 162 162 162 115 162
- t 116 163 163 163 116 163
- u 117 164 164 164 117 164
- v 118 165 165 165 118 165
- w 119 166 166 166 119 166
- x 120 167 167 167 120 167
- y 121 168 168 168 121 168
- z 122 169 169 169 122 169
- { 123 192 192 251 123 192 ###
- | 124 79 79 79 124 79
- } 125 208 208 253 125 208 ###
- ~ 126 161 161 255 126 161 ###
- <DELETE> 127 7 7 7 127 7
- <PADDING CHARACTER> 128 32 32 32 194.128 32
- <HIGH OCTET PRESET> 129 33 33 33 194.129 33
- <BREAK PERMITTED HERE> 130 34 34 34 194.130 34
- <NO BREAK HERE> 131 35 35 35 194.131 35
- <INDEX> 132 36 36 36 194.132 36
- <NEXT LINE> 133 21 37 37 194.133 37 ***
- <START OF SELECTED AREA> 134 6 6 6 194.134 6
- <END OF SELECTED AREA> 135 23 23 23 194.135 23
- <CHARACTER TABULATION SET> 136 40 40 40 194.136 40
- <CHARACTER TABULATION WITH JUSTIFICATION> 137 41 41 41 194.137 41
- <LINE TABULATION SET> 138 42 42 42 194.138 42
- <PARTIAL LINE FORWARD> 139 43 43 43 194.139 43
- <PARTIAL LINE BACKWARD> 140 44 44 44 194.140 44
- <REVERSE LINE FEED> 141 9 9 9 194.141 9
- <SINGLE SHIFT TWO> 142 10 10 10 194.142 10
- <SINGLE SHIFT THREE> 143 27 27 27 194.143 27
- <DEVICE CONTROL STRING> 144 48 48 48 194.144 48
- <PRIVATE USE ONE> 145 49 49 49 194.145 49
- <PRIVATE USE TWO> 146 26 26 26 194.146 26
- <SET TRANSMIT STATE> 147 51 51 51 194.147 51
- <CANCEL CHARACTER> 148 52 52 52 194.148 52
- <MESSAGE WAITING> 149 53 53 53 194.149 53
- <START OF GUARDED AREA> 150 54 54 54 194.150 54
- <END OF GUARDED AREA> 151 8 8 8 194.151 8
- <START OF STRING> 152 56 56 56 194.152 56
- <SINGLE GRAPHIC CHARACTER INTRODUCER> 153 57 57 57 194.153 57
- <SINGLE CHARACTER INTRODUCER> 154 58 58 58 194.154 58
- <CONTROL SEQUENCE INTRODUCER> 155 59 59 59 194.155 59
- <STRING TERMINATOR> 156 4 4 4 194.156 4
- <OPERATING SYSTEM COMMAND> 157 20 20 20 194.157 20
- <PRIVACY MESSAGE> 158 62 62 62 194.158 62
- <APPLICATION PROGRAM COMMAND> 159 255 255 95 194.159 255 ###
- <NON-BREAKING SPACE> 160 65 65 65 194.160 128.65
- <INVERTED EXCLAMATION MARK> 161 170 170 170 194.161 128.66
- <CENT SIGN> 162 74 74 176 194.162 128.67 ###
- <POUND SIGN> 163 177 177 177 194.163 128.68
- <CURRENCY SIGN> 164 159 159 159 194.164 128.69
- <YEN SIGN> 165 178 178 178 194.165 128.70
- <BROKEN BAR> 166 106 106 208 194.166 128.71 ###
- <SECTION SIGN> 167 181 181 181 194.167 128.72
- <DIAERESIS> 168 189 187 121 194.168 128.73 *** ###
- <COPYRIGHT SIGN> 169 180 180 180 194.169 128.74
- <FEMININE ORDINAL INDICATOR> 170 154 154 154 194.170 128.81
- <LEFT POINTING GUILLEMET> 171 138 138 138 194.171 128.82
- <NOT SIGN> 172 95 176 186 194.172 128.83 *** ###
- <SOFT HYPHEN> 173 202 202 202 194.173 128.84
- <REGISTERED TRADE MARK SIGN> 174 175 175 175 194.174 128.85
- <MACRON> 175 188 188 161 194.175 128.86 ###
- <DEGREE SIGN> 176 144 144 144 194.176 128.87
- <PLUS-OR-MINUS SIGN> 177 143 143 143 194.177 128.88
- <SUPERSCRIPT TWO> 178 234 234 234 194.178 128.89
- <SUPERSCRIPT THREE> 179 250 250 250 194.179 128.98
- <ACUTE ACCENT> 180 190 190 190 194.180 128.99
- <MICRO SIGN> 181 160 160 160 194.181 128.100
- <PARAGRAPH SIGN> 182 182 182 182 194.182 128.101
- <MIDDLE DOT> 183 179 179 179 194.183 128.102
- <CEDILLA> 184 157 157 157 194.184 128.103
- <SUPERSCRIPT ONE> 185 218 218 218 194.185 128.104
- <MASC. ORDINAL INDICATOR> 186 155 155 155 194.186 128.105
- <RIGHT POINTING GUILLEMET> 187 139 139 139 194.187 128.106
- <FRACTION ONE QUARTER> 188 183 183 183 194.188 128.112
- <FRACTION ONE HALF> 189 184 184 184 194.189 128.113
- <FRACTION THREE QUARTERS> 190 185 185 185 194.190 128.114
- <INVERTED QUESTION MARK> 191 171 171 171 194.191 128.115
- <A WITH GRAVE> 192 100 100 100 195.128 138.65
- <A WITH ACUTE> 193 101 101 101 195.129 138.66
- <A WITH CIRCUMFLEX> 194 98 98 98 195.130 138.67
- <A WITH TILDE> 195 102 102 102 195.131 138.68
- <A WITH DIAERESIS> 196 99 99 99 195.132 138.69
- <A WITH RING ABOVE> 197 103 103 103 195.133 138.70
- <CAPITAL LIGATURE AE> 198 158 158 158 195.134 138.71
- <C WITH CEDILLA> 199 104 104 104 195.135 138.72
- <E WITH GRAVE> 200 116 116 116 195.136 138.73
- <E WITH ACUTE> 201 113 113 113 195.137 138.74
- <E WITH CIRCUMFLEX> 202 114 114 114 195.138 138.81
- <E WITH DIAERESIS> 203 115 115 115 195.139 138.82
- <I WITH GRAVE> 204 120 120 120 195.140 138.83
- <I WITH ACUTE> 205 117 117 117 195.141 138.84
- <I WITH CIRCUMFLEX> 206 118 118 118 195.142 138.85
- <I WITH DIAERESIS> 207 119 119 119 195.143 138.86
- <CAPITAL LETTER ETH> 208 172 172 172 195.144 138.87
- <N WITH TILDE> 209 105 105 105 195.145 138.88
- <O WITH GRAVE> 210 237 237 237 195.146 138.89
- <O WITH ACUTE> 211 238 238 238 195.147 138.98
- <O WITH CIRCUMFLEX> 212 235 235 235 195.148 138.99
- <O WITH TILDE> 213 239 239 239 195.149 138.100
- <O WITH DIAERESIS> 214 236 236 236 195.150 138.101
- <MULTIPLICATION SIGN> 215 191 191 191 195.151 138.102
- <O WITH STROKE> 216 128 128 128 195.152 138.103
- <U WITH GRAVE> 217 253 253 224 195.153 138.104 ###
- <U WITH ACUTE> 218 254 254 254 195.154 138.105
- <U WITH CIRCUMFLEX> 219 251 251 221 195.155 138.106 ###
- <U WITH DIAERESIS> 220 252 252 252 195.156 138.112
- <Y WITH ACUTE> 221 173 186 173 195.157 138.113 *** ###
- <CAPITAL LETTER THORN> 222 174 174 174 195.158 138.114
- <SMALL LETTER SHARP S> 223 89 89 89 195.159 138.115
- <a WITH GRAVE> 224 68 68 68 195.160 139.65
- <a WITH ACUTE> 225 69 69 69 195.161 139.66
- <a WITH CIRCUMFLEX> 226 66 66 66 195.162 139.67
- <a WITH TILDE> 227 70 70 70 195.163 139.68
- <a WITH DIAERESIS> 228 67 67 67 195.164 139.69
- <a WITH RING ABOVE> 229 71 71 71 195.165 139.70
- <SMALL LIGATURE ae> 230 156 156 156 195.166 139.71
- <c WITH CEDILLA> 231 72 72 72 195.167 139.72
- <e WITH GRAVE> 232 84 84 84 195.168 139.73
- <e WITH ACUTE> 233 81 81 81 195.169 139.74
- <e WITH CIRCUMFLEX> 234 82 82 82 195.170 139.81
- <e WITH DIAERESIS> 235 83 83 83 195.171 139.82
- <i WITH GRAVE> 236 88 88 88 195.172 139.83
- <i WITH ACUTE> 237 85 85 85 195.173 139.84
- <i WITH CIRCUMFLEX> 238 86 86 86 195.174 139.85
- <i WITH DIAERESIS> 239 87 87 87 195.175 139.86
- <SMALL LETTER eth> 240 140 140 140 195.176 139.87
- <n WITH TILDE> 241 73 73 73 195.177 139.88
- <o WITH GRAVE> 242 205 205 205 195.178 139.89
- <o WITH ACUTE> 243 206 206 206 195.179 139.98
- <o WITH CIRCUMFLEX> 244 203 203 203 195.180 139.99
- <o WITH TILDE> 245 207 207 207 195.181 139.100
- <o WITH DIAERESIS> 246 204 204 204 195.182 139.101
- <DIVISION SIGN> 247 225 225 225 195.183 139.102
- <o WITH STROKE> 248 112 112 112 195.184 139.103
- <u WITH GRAVE> 249 221 221 192 195.185 139.104 ###
- <u WITH ACUTE> 250 222 222 222 195.186 139.105
- <u WITH CIRCUMFLEX> 251 219 219 219 195.187 139.106
- <u WITH DIAERESIS> 252 220 220 220 195.188 139.112
- <y WITH ACUTE> 253 141 141 141 195.189 139.113
- <SMALL LETTER thorn> 254 142 142 142 195.190 139.114
- <y WITH DIAERESIS> 255 223 223 223 195.191 139.115
+ ISO
+ 8859-1 POS-
+ CCSID CCSID CCSID IX-
+ chr 0819 0037 1047 BC UTF-8 UTF-EBCDIC
+ ---------------------------------------------------------------------
+ <NUL> 0 0 0 0 0 0
+ <SOH> 1 1 1 1 1 1
+ <STX> 2 2 2 2 2 2
+ <ETX> 3 3 3 3 3 3
+ <EOT> 4 55 55 55 4 55
+ <ENQ> 5 45 45 45 5 45
+ <ACK> 6 46 46 46 6 46
+ <BEL> 7 47 47 47 7 47
+ <BS> 8 22 22 22 8 22
+ <HT> 9 5 5 5 9 5
+ <LF> 10 37 21 21 10 21 **
+ <VT> 11 11 11 11 11 11
+ <FF> 12 12 12 12 12 12
+ <CR> 13 13 13 13 13 13
+ <SO> 14 14 14 14 14 14
+ <SI> 15 15 15 15 15 15
+ <DLE> 16 16 16 16 16 16
+ <DC1> 17 17 17 17 17 17
+ <DC2> 18 18 18 18 18 18
+ <DC3> 19 19 19 19 19 19
+ <DC4> 20 60 60 60 20 60
+ <NAK> 21 61 61 61 21 61
+ <SYN> 22 50 50 50 22 50
+ <ETB> 23 38 38 38 23 38
+ <CAN> 24 24 24 24 24 24
+ <EOM> 25 25 25 25 25 25
+ <SUB> 26 63 63 63 26 63
+ <ESC> 27 39 39 39 27 39
+ <FS> 28 28 28 28 28 28
+ <GS> 29 29 29 29 29 29
+ <RS> 30 30 30 30 30 30
+ <US> 31 31 31 31 31 31
+ <SPACE> 32 64 64 64 32 64
+ ! 33 90 90 90 33 90
+ " 34 127 127 127 34 127
+ # 35 123 123 123 35 123
+ $ 36 91 91 91 36 91
+ % 37 108 108 108 37 108
+ & 38 80 80 80 38 80
+ ' 39 125 125 125 39 125
+ ( 40 77 77 77 40 77
+ ) 41 93 93 93 41 93
+ * 42 92 92 92 42 92
+ + 43 78 78 78 43 78
+ , 44 107 107 107 44 107
+ - 45 96 96 96 45 96
+ . 46 75 75 75 46 75
+ / 47 97 97 97 47 97
+ 0 48 240 240 240 48 240
+ 1 49 241 241 241 49 241
+ 2 50 242 242 242 50 242
+ 3 51 243 243 243 51 243
+ 4 52 244 244 244 52 244
+ 5 53 245 245 245 53 245
+ 6 54 246 246 246 54 246
+ 7 55 247 247 247 55 247
+ 8 56 248 248 248 56 248
+ 9 57 249 249 249 57 249
+ : 58 122 122 122 58 122
+ ; 59 94 94 94 59 94
+ < 60 76 76 76 60 76
+ = 61 126 126 126 61 126
+ > 62 110 110 110 62 110
+ ? 63 111 111 111 63 111
+ @ 64 124 124 124 64 124
+ A 65 193 193 193 65 193
+ B 66 194 194 194 66 194
+ C 67 195 195 195 67 195
+ D 68 196 196 196 68 196
+ E 69 197 197 197 69 197
+ F 70 198 198 198 70 198
+ G 71 199 199 199 71 199
+ H 72 200 200 200 72 200
+ I 73 201 201 201 73 201
+ J 74 209 209 209 74 209
+ K 75 210 210 210 75 210
+ L 76 211 211 211 76 211
+ M 77 212 212 212 77 212
+ N 78 213 213 213 78 213
+ O 79 214 214 214 79 214
+ P 80 215 215 215 80 215
+ Q 81 216 216 216 81 216
+ R 82 217 217 217 82 217
+ S 83 226 226 226 83 226
+ T 84 227 227 227 84 227
+ U 85 228 228 228 85 228
+ V 86 229 229 229 86 229
+ W 87 230 230 230 87 230
+ X 88 231 231 231 88 231
+ Y 89 232 232 232 89 232
+ Z 90 233 233 233 90 233
+ [ 91 186 173 187 91 173 ** ##
+ \ 92 224 224 188 92 224 ##
+ ] 93 187 189 189 93 189 **
+ ^ 94 176 95 106 94 95 ** ##
+ _ 95 109 109 109 95 109
+ ` 96 121 121 74 96 121 ##
+ a 97 129 129 129 97 129
+ b 98 130 130 130 98 130
+ c 99 131 131 131 99 131
+ d 100 132 132 132 100 132
+ e 101 133 133 133 101 133
+ f 102 134 134 134 102 134
+ g 103 135 135 135 103 135
+ h 104 136 136 136 104 136
+ i 105 137 137 137 105 137
+ j 106 145 145 145 106 145
+ k 107 146 146 146 107 146
+ l 108 147 147 147 108 147
+ m 109 148 148 148 109 148
+ n 110 149 149 149 110 149
+ o 111 150 150 150 111 150
+ p 112 151 151 151 112 151
+ q 113 152 152 152 113 152
+ r 114 153 153 153 114 153
+ s 115 162 162 162 115 162
+ t 116 163 163 163 116 163
+ u 117 164 164 164 117 164
+ v 118 165 165 165 118 165
+ w 119 166 166 166 119 166
+ x 120 167 167 167 120 167
+ y 121 168 168 168 121 168
+ z 122 169 169 169 122 169
+ { 123 192 192 251 123 192 ##
+ | 124 79 79 79 124 79
+ } 125 208 208 253 125 208 ##
+ ~ 126 161 161 255 126 161 ##
+ <DEL> 127 7 7 7 127 7
+ <PAD> 128 32 32 32 194.128 32
+ <HOP> 129 33 33 33 194.129 33
+ <BPH> 130 34 34 34 194.130 34
+ <NBH> 131 35 35 35 194.131 35
+ <IND> 132 36 36 36 194.132 36
+ <NEL> 133 21 37 37 194.133 37 **
+ <SSA> 134 6 6 6 194.134 6
+ <ESA> 135 23 23 23 194.135 23
+ <HTS> 136 40 40 40 194.136 40
+ <HTJ> 137 41 41 41 194.137 41
+ <VTS> 138 42 42 42 194.138 42
+ <PLD> 139 43 43 43 194.139 43
+ <PLU> 140 44 44 44 194.140 44
+ <RI> 141 9 9 9 194.141 9
+ <SS2> 142 10 10 10 194.142 10
+ <SS3> 143 27 27 27 194.143 27
+ <DCS> 144 48 48 48 194.144 48
+ <PU1> 145 49 49 49 194.145 49
+ <PU2> 146 26 26 26 194.146 26
+ <STS> 147 51 51 51 194.147 51
+ <CCH> 148 52 52 52 194.148 52
+ <MW> 149 53 53 53 194.149 53
+ <SPA> 150 54 54 54 194.150 54
+ <EPA> 151 8 8 8 194.151 8
+ <SOS> 152 56 56 56 194.152 56
+ <SGC> 153 57 57 57 194.153 57
+ <SCI> 154 58 58 58 194.154 58
+ <CSI> 155 59 59 59 194.155 59
+ <ST> 156 4 4 4 194.156 4
+ <OSC> 157 20 20 20 194.157 20
+ <PM> 158 62 62 62 194.158 62
+ <APC> 159 255 255 95 194.159 255 ##
+ <NON-BREAKING SPACE> 160 65 65 65 194.160 128.65
+ <INVERTED "!" > 161 170 170 170 194.161 128.66
+ <CENT SIGN> 162 74 74 176 194.162 128.67 ##
+ <POUND SIGN> 163 177 177 177 194.163 128.68
+ <CURRENCY SIGN> 164 159 159 159 194.164 128.69
+ <YEN SIGN> 165 178 178 178 194.165 128.70
+ <BROKEN BAR> 166 106 106 208 194.166 128.71 ##
+ <SECTION SIGN> 167 181 181 181 194.167 128.72
+ <DIAERESIS> 168 189 187 121 194.168 128.73 ** ##
+ <COPYRIGHT SIGN> 169 180 180 180 194.169 128.74
+ <FEMININE ORDINAL> 170 154 154 154 194.170 128.81
+ <LEFT POINTING GUILLEMET> 171 138 138 138 194.171 128.82
+ <NOT SIGN> 172 95 176 186 194.172 128.83 ** ##
+ <SOFT HYPHEN> 173 202 202 202 194.173 128.84
+ <REGISTERED TRADE MARK> 174 175 175 175 194.174 128.85
+ <MACRON> 175 188 188 161 194.175 128.86 ##
+ <DEGREE SIGN> 176 144 144 144 194.176 128.87
+ <PLUS-OR-MINUS SIGN> 177 143 143 143 194.177 128.88
+ <SUPERSCRIPT TWO> 178 234 234 234 194.178 128.89
+ <SUPERSCRIPT THREE> 179 250 250 250 194.179 128.98
+ <ACUTE ACCENT> 180 190 190 190 194.180 128.99
+ <MICRO SIGN> 181 160 160 160 194.181 128.100
+ <PARAGRAPH SIGN> 182 182 182 182 194.182 128.101
+ <MIDDLE DOT> 183 179 179 179 194.183 128.102
+ <CEDILLA> 184 157 157 157 194.184 128.103
+ <SUPERSCRIPT ONE> 185 218 218 218 194.185 128.104
+ <MASC. ORDINAL INDICATOR> 186 155 155 155 194.186 128.105
+ <RIGHT POINTING GUILLEMET> 187 139 139 139 194.187 128.106
+ <FRACTION ONE QUARTER> 188 183 183 183 194.188 128.112
+ <FRACTION ONE HALF> 189 184 184 184 194.189 128.113
+ <FRACTION THREE QUARTERS> 190 185 185 185 194.190 128.114
+ <INVERTED QUESTION MARK> 191 171 171 171 194.191 128.115
+ <A WITH GRAVE> 192 100 100 100 195.128 138.65
+ <A WITH ACUTE> 193 101 101 101 195.129 138.66
+ <A WITH CIRCUMFLEX> 194 98 98 98 195.130 138.67
+ <A WITH TILDE> 195 102 102 102 195.131 138.68
+ <A WITH DIAERESIS> 196 99 99 99 195.132 138.69
+ <A WITH RING ABOVE> 197 103 103 103 195.133 138.70
+ <CAPITAL LIGATURE AE> 198 158 158 158 195.134 138.71
+ <C WITH CEDILLA> 199 104 104 104 195.135 138.72
+ <E WITH GRAVE> 200 116 116 116 195.136 138.73
+ <E WITH ACUTE> 201 113 113 113 195.137 138.74
+ <E WITH CIRCUMFLEX> 202 114 114 114 195.138 138.81
+ <E WITH DIAERESIS> 203 115 115 115 195.139 138.82
+ <I WITH GRAVE> 204 120 120 120 195.140 138.83
+ <I WITH ACUTE> 205 117 117 117 195.141 138.84
+ <I WITH CIRCUMFLEX> 206 118 118 118 195.142 138.85
+ <I WITH DIAERESIS> 207 119 119 119 195.143 138.86
+ <CAPITAL LETTER ETH> 208 172 172 172 195.144 138.87
+ <N WITH TILDE> 209 105 105 105 195.145 138.88
+ <O WITH GRAVE> 210 237 237 237 195.146 138.89
+ <O WITH ACUTE> 211 238 238 238 195.147 138.98
+ <O WITH CIRCUMFLEX> 212 235 235 235 195.148 138.99
+ <O WITH TILDE> 213 239 239 239 195.149 138.100
+ <O WITH DIAERESIS> 214 236 236 236 195.150 138.101
+ <MULTIPLICATION SIGN> 215 191 191 191 195.151 138.102
+ <O WITH STROKE> 216 128 128 128 195.152 138.103
+ <U WITH GRAVE> 217 253 253 224 195.153 138.104 ##
+ <U WITH ACUTE> 218 254 254 254 195.154 138.105
+ <U WITH CIRCUMFLEX> 219 251 251 221 195.155 138.106 ##
+ <U WITH DIAERESIS> 220 252 252 252 195.156 138.112
+ <Y WITH ACUTE> 221 173 186 173 195.157 138.113 ** ##
+ <CAPITAL LETTER THORN> 222 174 174 174 195.158 138.114
+ <SMALL LETTER SHARP S> 223 89 89 89 195.159 138.115
+ <a WITH GRAVE> 224 68 68 68 195.160 139.65
+ <a WITH ACUTE> 225 69 69 69 195.161 139.66
+ <a WITH CIRCUMFLEX> 226 66 66 66 195.162 139.67
+ <a WITH TILDE> 227 70 70 70 195.163 139.68
+ <a WITH DIAERESIS> 228 67 67 67 195.164 139.69
+ <a WITH RING ABOVE> 229 71 71 71 195.165 139.70
+ <SMALL LIGATURE ae> 230 156 156 156 195.166 139.71
+ <c WITH CEDILLA> 231 72 72 72 195.167 139.72
+ <e WITH GRAVE> 232 84 84 84 195.168 139.73
+ <e WITH ACUTE> 233 81 81 81 195.169 139.74
+ <e WITH CIRCUMFLEX> 234 82 82 82 195.170 139.81
+ <e WITH DIAERESIS> 235 83 83 83 195.171 139.82
+ <i WITH GRAVE> 236 88 88 88 195.172 139.83
+ <i WITH ACUTE> 237 85 85 85 195.173 139.84
+ <i WITH CIRCUMFLEX> 238 86 86 86 195.174 139.85
+ <i WITH DIAERESIS> 239 87 87 87 195.175 139.86
+ <SMALL LETTER eth> 240 140 140 140 195.176 139.87
+ <n WITH TILDE> 241 73 73 73 195.177 139.88
+ <o WITH GRAVE> 242 205 205 205 195.178 139.89
+ <o WITH ACUTE> 243 206 206 206 195.179 139.98
+ <o WITH CIRCUMFLEX> 244 203 203 203 195.180 139.99
+ <o WITH TILDE> 245 207 207 207 195.181 139.100
+ <o WITH DIAERESIS> 246 204 204 204 195.182 139.101
+ <DIVISION SIGN> 247 225 225 225 195.183 139.102
+ <o WITH STROKE> 248 112 112 112 195.184 139.103
+ <u WITH GRAVE> 249 221 221 192 195.185 139.104 ##
+ <u WITH ACUTE> 250 222 222 222 195.186 139.105
+ <u WITH CIRCUMFLEX> 251 219 219 219 195.187 139.106
+ <u WITH DIAERESIS> 252 220 220 220 195.188 139.112
+ <y WITH ACUTE> 253 141 141 141 195.189 139.113
+ <SMALL LETTER thorn> 254 142 142 142 195.190 139.114
+ <y WITH DIAERESIS> 255 223 223 223 195.191 139.115
If you would rather see the above table in CCSID 0037 order rather than
ASCII + Latin-1 order then run the table through:
@@ -598,14 +601,14 @@ ASCII + Latin-1 order then run the table through:
=back
perl \
- -ne 'if(/.{43}\d{1,3}\s{6,8}\d{1,3}\s{6,8}\d{1,3}\s{6,8}\d{1,3}/)'\
+ -ne 'if(/.{29}\d{1,3}\s{2,4}\d{1,3}\s{2,4}\d{1,3}\s{2,4}\d{1,3}/)'\
-e '{push(@l,$_)}' \
-e 'END{print map{$_->[0]}' \
-e ' sort{$a->[1] <=> $b->[1]}' \
- -e ' map{[$_,substr($_,52,3)]}@l;}' perlebcdic.pod
+ -e ' map{[$_,substr($_,34,3)]}@l;}' perlebcdic.pod
If you would rather see it in CCSID 1047 order then change the number
-52 in the last line to 61, like this:
+34 in the last line to 39, like this:
=over 4
@@ -614,14 +617,14 @@ If you would rather see it in CCSID 1047 order then change the number
=back
perl \
- -ne 'if(/.{43}\d{1,3}\s{6,8}\d{1,3}\s{6,8}\d{1,3}\s{6,8}\d{1,3}/)'\
+ -ne 'if(/.{29}\d{1,3}\s{2,4}\d{1,3}\s{2,4}\d{1,3}\s{2,4}\d{1,3}/)'\
-e '{push(@l,$_)}' \
-e 'END{print map{$_->[0]}' \
-e ' sort{$a->[1] <=> $b->[1]}' \
- -e ' map{[$_,substr($_,61,3)]}@l;}' perlebcdic.pod
+ -e ' map{[$_,substr($_,39,3)]}@l;}' perlebcdic.pod
If you would rather see it in POSIX-BC order then change the number
-61 in the last line to 70, like this:
+39 in the last line to 44, like this:
=over 4
@@ -630,17 +633,17 @@ If you would rather see it in POSIX-BC order then change the number
=back
perl \
- -ne 'if(/.{43}\d{1,3}\s{6,8}\d{1,3}\s{6,8}\d{1,3}\s{6,8}\d{1,3}/)'\
+ -ne 'if(/.{29}\d{1,3}\s{2,4}\d{1,3}\s{2,4}\d{1,3}\s{2,4}\d{1,3}/)'\
-e '{push(@l,$_)}' \
-e 'END{print map{$_->[0]}' \
-e ' sort{$a->[1] <=> $b->[1]}' \
- -e ' map{[$_,substr($_,70,3)]}@l;}' perlebcdic.pod
+ -e ' map{[$_,substr($_,44,3)]}@l;}' perlebcdic.pod
=head1 IDENTIFYING CHARACTER CODE SETS
-To determine the character set you are running under from perl one
-could use the return value of ord() or chr() to test one or more
+To determine the character set you are running under from perl one
+could use the return value of ord() or chr() to test one or more
character values. For example:
$is_ascii = "A" eq chr(65);
@@ -671,12 +674,12 @@ However, it would be unwise to write tests such as:
$is_ascii = "\n" ne chr(10); # ILL ADVISED
Obviously the first of these will fail to distinguish most ASCII platforms
-from either a CCSID 0037, a 1047, or a POSIX-BC EBCDIC platform since "\r" eq
-chr(13) under all of those coded character sets. But note too that
-because "\n" is chr(13) and "\r" is chr(10) on the Macintosh (which is an
+from either a CCSID 0037, a 1047, or a POSIX-BC EBCDIC platform since "\r" eq
+chr(13) under all of those coded character sets. But note too that
+because "\n" is chr(13) and "\r" is chr(10) on the Macintosh (which is an
ASCII platform) the second C<$is_ascii> test will lead to trouble there.
-To determine whether or not perl was built under an EBCDIC
+To determine whether or not perl was built under an EBCDIC
code page you can use the Config module like so:
use Config;
@@ -684,20 +687,25 @@ code page you can use the Config module like so:
=head1 CONVERSIONS
+=head2 C<utf8::unicode_to_native()> and C<utf8::native_to_unicode()>
+
+These functions take an input numeric code point in one encoding and
+return what its equivalent value is in the other.
+
=head2 tr///
-In order to convert a string of characters from one character set to
+In order to convert a string of characters from one character set to
another a simple list of numbers, such as in the right columns in the
-above table, along with perl's tr/// operator is all that is needed.
+above table, along with perl's tr/// operator is all that is needed.
The data in the table are in ASCII/Latin1 order, hence the EBCDIC columns
-provide easy-to-use ASCII/Latin1 to EBCDIC operations that are also easily
+provide easy-to-use ASCII/Latin1 to EBCDIC operations that are also easily
reversed.
For example, to convert ASCII/Latin1 to code page 037 take the output of the
second numbers column from the output of recipe 2 (modified to add '\'
-characters) and use it in tr/// like so:
+characters), and use it in tr/// like so:
- $cp_037 =
+ $cp_037 =
'\x00\x01\x02\x03\x37\x2D\x2E\x2F\x16\x05\x25\x0B\x0C\x0D\x0E\x0F' .
'\x10\x11\x12\x13\x3C\x3D\x32\x26\x18\x19\x3F\x27\x1C\x1D\x1E\x1F' .
'\x40\x5A\x7F\x7B\x5B\x6C\x50\x7D\x4D\x5D\x5C\x4E\x6B\x60\x4B\x61' .
@@ -739,7 +747,7 @@ XPG operability often implies the presence of an I<iconv> utility
available from the shell or from the C library. Consult your system's
documentation for information on iconv.
-On OS/390 or z/OS see the iconv(1) manpage. One way to invoke the iconv
+On OS/390 or z/OS see the iconv(1) manpage. One way to invoke the iconv
shell utility from within perl would be to:
# OS/390 or z/OS example
@@ -758,7 +766,7 @@ The OS/390 and z/OS C run-time libraries provide _atoe() and _etoa() functions.
=head1 OPERATOR DIFFERENCES
-The C<..> range operator treats certain character ranges with
+The C<..> range operator treats certain character ranges with
care on EBCDIC platforms. For example the following array
will have twenty six elements on either an EBCDIC platform
or an ASCII platform:
@@ -766,13 +774,13 @@ or an ASCII platform:
@alphabet = ('A'..'Z'); # $#alphabet == 25
The bitwise operators such as & ^ | may return different results
-when operating on string or character data in a perl program running
+when operating on string or character data in a perl program running
on an EBCDIC platform than when run on an ASCII platform. Here is
an example adapted from the one in L<perlop>:
# EBCDIC-based examples
print "j p \n" ^ " a h"; # prints "JAPH\n"
- print "JA" | " ph\n"; # prints "japh\n"
+ print "JA" | " ph\n"; # prints "japh\n"
print "JAPH\nJunk" & "\277\277\277\277\277"; # prints "japh\n";
print 'p N$' ^ " E<H\n"; # prints "Perl\n";
@@ -784,45 +792,45 @@ ported to take C<\c@> to chr(0) and C<\cA> to chr(1), etc. as well, but the
thirty three characters that result depend on which code page you are
using. The table below uses the standard acronyms for the controls.
The POSIX-BC and 1047 sets are
-identical throughout this range and differ from the 0037 set at only
+identical throughout this range and differ from the 0037 set at only
one spot (21 decimal). Note that the C<LINE FEED> character
-may be generated by C<\cJ> on ASCII platforms but by C<\cU> on 1047 or POSIX-BC
-platforms and cannot be generated as a C<"\c.letter."> control character on
+may be generated by C<\cJ> on ASCII platforms but by C<\cU> on 1047 or POSIX-BC
+platforms and cannot be generated as a C<"\c.letter."> control character on
0037 platforms. Note also that C<\c\> cannot be the final element in a string
or regex, as it will absorb the terminator. But C<\c\I<X>> is a C<FILE
SEPARATOR> concatenated with I<X> for all I<X>.
- chr ord 8859-1 0037 1047 && POSIX-BC
+ chr ord 8859-1 0037 1047 && POSIX-BC
-----------------------------------------------------------------------
- \c? 127 <DEL> " "
+ \c? 127 <DEL> " "
\c@ 0 <NUL> <NUL> <NUL>
- \cA 1 <SOH> <SOH> <SOH>
+ \cA 1 <SOH> <SOH> <SOH>
\cB 2 <STX> <STX> <STX>
\cC 3 <ETX> <ETX> <ETX>
- \cD 4 <EOT> <ST> <ST>
- \cE 5 <ENQ> <HT> <HT>
- \cF 6 <ACK> <SSA> <SSA>
- \cG 7 <BEL> <DEL> <DEL>
- \cH 8 <BS> <EPA> <EPA>
- \cI 9 <HT> <RI> <RI>
- \cJ 10 <LF> <SS2> <SS2>
+ \cD 4 <EOT> <ST> <ST>
+ \cE 5 <ENQ> <HT> <HT>
+ \cF 6 <ACK> <SSA> <SSA>
+ \cG 7 <BEL> <DEL> <DEL>
+ \cH 8 <BS> <EPA> <EPA>
+ \cI 9 <HT> <RI> <RI>
+ \cJ 10 <LF> <SS2> <SS2>
\cK 11 <VT> <VT> <VT>
- \cL 12 <FF> <FF> <FF>
- \cM 13 <CR> <CR> <CR>
+ \cL 12 <FF> <FF> <FF>
+ \cM 13 <CR> <CR> <CR>
\cN 14 <SO> <SO> <SO>
\cO 15 <SI> <SI> <SI>
- \cP 16 <DLE> <DLE> <DLE>
+ \cP 16 <DLE> <DLE> <DLE>
\cQ 17 <DC1> <DC1> <DC1>
\cR 18 <DC2> <DC2> <DC2>
- \cS 19 <DC3> <DC3> <DC3>
- \cT 20 <DC4> <OSC> <OSC>
- \cU 21 <NAK> <NEL> <LF> ***
+ \cS 19 <DC3> <DC3> <DC3>
+ \cT 20 <DC4> <OSC> <OSC>
+ \cU 21 <NAK> <NEL> <LF> **
\cV 22 <SYN> <BS> <BS>
- \cW 23 <ETB> <ESA> <ESA>
+ \cW 23 <ETB> <ESA> <ESA>
\cX 24 <CAN> <CAN> <CAN>
\cY 25 <EOM> <EOM> <EOM>
- \cZ 26 <SUB> <PU2> <PU2>
- \c[ 27 <ESC> <SS3> <SS3>
+ \cZ 26 <SUB> <PU2> <PU2>
+ \c[ 27 <ESC> <SS3> <SS3>
\c\X 28 <FS>X <FS>X <FS>X
\c] 29 <GS> <GS> <GS>
\c^ 30 <RS> <RS> <RS>
@@ -834,7 +842,7 @@ SEPARATOR> concatenated with I<X> for all I<X>.
=item chr()
-chr() must be given an EBCDIC code number argument to yield a desired
+chr() must be given an EBCDIC code number argument to yield a desired
character return value on an EBCDIC platform. For example:
$CAPITAL_LETTER_A = chr(193);
@@ -848,7 +856,7 @@ For example:
=item pack()
-The c and C templates for pack() are dependent upon character set
+The c and C templates for pack() are dependent upon character set
encoding. Examples of usage on EBCDIC include:
$foo = pack("CCCC",193,194,195,196);
@@ -864,20 +872,20 @@ encoding. Examples of usage on EBCDIC include:
One must be careful with scalars and strings that are passed to
print that contain ASCII encodings. One common place
for this to occur is in the output of the MIME type header for
-CGI script writing. For example, many perl programming guides
+CGI script writing. For example, many perl programming guides
recommend something similar to:
- print "Content-type:\ttext/html\015\012\015\012";
+ print "Content-type:\ttext/html\015\012\015\012";
# this may be wrong on EBCDIC
-Under the IBM OS/390 USS Web Server or WebSphere on z/OS for example
+Under the IBM OS/390 USS Web Server or WebSphere on z/OS for example
you should instead write that as:
print "Content-type:\ttext/html\r\n\r\n"; # OK for DGW et al
That is because the translation from EBCDIC to ASCII is done
by the web server in this case (such code will not be appropriate for
-the Macintosh however). Consult your web server's documentation for
+the Macintosh however). Consult your web server's documentation for
further details.
=item printf()
@@ -890,7 +898,7 @@ on an EBCDIC platform. Examples include:
=item sort()
-EBCDIC sort results may differ from ASCII sort results especially for
+EBCDIC sort results may differ from ASCII sort results especially for
mixed case strings. This is discussed in more detail below.
=item sprintf()
@@ -908,19 +916,19 @@ See the discussion of pack() above.
=head1 REGULAR EXPRESSION DIFFERENCES
-As of perl 5.005_03 the letter range regular expressions such as
-[A-Z] and [a-z] have been especially coded to not pick up gap
-characters. For example, characters such as E<ocirc> C<o WITH CIRCUMFLEX>
-that lie between I and J would not be matched by the
+As of perl 5.005_03 the letter range regular expressions such as
+[A-Z] and [a-z] have been especially coded to not pick up gap
+characters. For example, characters such as E<ocirc> C<o WITH CIRCUMFLEX>
+that lie between I and J would not be matched by the
regular expression range C</[H-K]/>. This works in
the other direction, too, if either of the range end points is
explicitly numeric: C<[\x89-\x91]> will match C<\x8e>, even
though C<\x89> is C<i> and C<\x91 > is C<j>, and C<\x8e>
is a gap character from the alphabetic viewpoint.
-If you do want to match the alphabet gap characters in a single octet
-regular expression try matching the hex or octal code such
-as C</\313/> on EBCDIC or C</\364/> on ASCII platforms to
+If you do want to match the alphabet gap characters in a single octet
+regular expression try matching the hex or octal code such
+as C</\313/> on EBCDIC or C</\364/> on ASCII platforms to
have your regular expression match C<o WITH CIRCUMFLEX>.
Another construct to be wary of is the inappropriate use of hex or
@@ -953,8 +961,8 @@ set of subs:
}
The above would be adequate if the concern was only with numeric code points.
-However, the concern may be with characters rather than code points
-and on an EBCDIC platform it may be desirable for constructs such as
+However, the concern may be with characters rather than code points
+and on an EBCDIC platform it may be desirable for constructs such as
C<if (is_print_ascii("A")) {print "A is a printable character\n";}> to print
out the expected message. One way to represent the above collection
of character classification subs that is capable of working across the
@@ -964,7 +972,7 @@ four coded character sets discussed in this document is as follows:
my $char = substr(shift,0,1);
if (ord('^')==94) { # ascii
return $char =~ /[\000-\037]/;
- }
+ }
if (ord('^')==176) { # 0037
return $char =~ /[\000-\003\067\055-\057\026\005\045\013-\023\074\075\062\046\030\031\077\047\034-\037]/;
}
@@ -1000,7 +1008,7 @@ four coded character sets discussed in this document is as follows:
return $char =~ /[\040-\045\006\027\050-\054\011\012\033\060\061\032\063-\066\010\070-\073\040\024\076\377]/;
}
if (ord('^')==106) { # posix-bc
- return $char =~
+ return $char =~
/[\040-\045\006\027\050-\054\011\012\033\060\061\032\063-\066\010\070-\073\040\024\076\137]/;
}
}
@@ -1011,21 +1019,21 @@ four coded character sets discussed in this document is as follows:
return $char =~ /[\240-\377]/;
}
if (ord('^')==176) { # 0037
- return $char =~
+ return $char =~
/[\101\252\112\261\237\262\152\265\275\264\232\212\137\312\257\274\220\217\352\372\276\240\266\263\235\332\233\213\267\270\271\253\144\145\142\146\143\147\236\150\164\161-\163\170\165-\167\254\151\355\356\353\357\354\277\200\375\376\373\374\255\256\131\104\105\102\106\103\107\234\110\124\121-\123\130\125-\127\214\111\315\316\313\317\314\341\160\335\336\333\334\215\216\337]/;
}
if (ord('^')==95) { # 1047
return $char =~
- /[\101\252\112\261\237\262\152\265\273\264\232\212\260\312\257\274\220\217\352\372\276\240\266\263\235\332\233\213\267\270\271\253\144\145\142\146\143\147\236\150\164\161-\163\170\165-\167\254\151\355\356\353\357\354\277\200\375\376\373\374\272\256\131\104\105\102\106\103\107\234\110\124\121-\123\130\125-\127\214\111\315\316\313\317\314\341\160\335\336\333\334\215\216\337]/;
+ /[\101\252\112\261\237\262\152\265\273\264\232\212\260\312\257\274\220\217\352\372\276\240\266\263\235\332\233\213\267\270\271\253\144\145\142\146\143\147\236\150\164\161-\163\170\165-\167\254\151\355\356\353\357\354\277\200\375\376\373\374\272\256\131\104\105\102\106\103\107\234\110\124\121-\123\130\125-\127\214\111\315\316\313\317\314\341\160\335\336\333\334\215\216\337]/;
}
if (ord('^')==106) { # posix-bc
- return $char =~
+ return $char =~
/[\101\252\260\261\237\262\320\265\171\264\232\212\272\312\257\241\220\217\352\372\276\240\266\263\235\332\233\213\267\270\271\253\144\145\142\146\143\147\236\150\164\161-\163\170\165-\167\254\151\355\356\353\357\354\277\200\340\376\335\374\255\256\131\104\105\102\106\103\107\234\110\124\121-\123\130\125-\127\214\111\315\316\313\317\314\341\160\300\336\333\334\215\216\337]/;
}
}
-Note however that only the C<Is_ascii_print()> sub is really independent
-of coded character set. Another way to write C<Is_latin_1()> would be
+Note however that only the C<Is_ascii_print()> sub is really independent
+of coded character set. Another way to write C<Is_latin_1()> would be
to use the characters in the range explicitly:
sub Is_latin_1 {
@@ -1033,7 +1041,7 @@ to use the characters in the range explicitly:
$char =~ /[ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖרÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ]/;
}
-Although that form may run into trouble in network transit (due to the
+Although that form may run into trouble in network transit (due to the
presence of 8 bit characters) or on non ISO-Latin character sets.
=head1 SOCKETS
@@ -1057,12 +1065,12 @@ abbreviation for drive; that is:
The property of lowercase before uppercase letters in EBCDIC is
even carried to the Latin 1 EBCDIC pages such as 0037 and 1047.
-An example would be that E<Euml> C<E WITH DIAERESIS> (203) comes
-before E<euml> C<e WITH DIAERESIS> (235) on an ASCII platform, but
-the latter (83) comes before the former (115) on an EBCDIC platform.
-(Astute readers will note that the uppercase version of E<szlig>
-C<SMALL LETTER SHARP S> is simply "SS" and that the upper case version of
-E<yuml> C<y WITH DIAERESIS> is not in the 0..255 range but it is
+An example would be that E<Euml> C<E WITH DIAERESIS> (203) comes
+before E<euml> C<e WITH DIAERESIS> (235) on an ASCII platform, but
+the latter (83) comes before the former (115) on an EBCDIC platform.
+(Astute readers will note that the uppercase version of E<szlig>
+C<SMALL LETTER SHARP S> is simply "SS" and that the upper case version of
+E<yuml> C<y WITH DIAERESIS> is not in the 0..255 range but it is
at U+x0178 in Unicode, or C<"\x{178}"> in a Unicode enabled Perl).
The sort order will cause differences between results obtained on
@@ -1081,21 +1089,21 @@ C<tr///> towards the character set case most employed within the data.
If the data are primarily UPPERCASE non Latin 1 then apply tr/[a-z]/[A-Z]/
then sort(). If the data are primarily lowercase non Latin 1 then
apply tr/[A-Z]/[a-z]/ before sorting. If the data are primarily UPPERCASE
-and include Latin-1 characters then apply:
+and include Latin-1 characters then apply:
- tr/[a-z]/[A-Z]/;
- tr/[àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ]/[ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞ/;
- s/ß/SS/g;
+ tr/[a-z]/[A-Z]/;
+ tr/[àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ]/[ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞ/;
+ s/ß/SS/g;
-then sort(). Do note however that such Latin-1 manipulation does not
-address the E<yuml> C<y WITH DIAERESIS> character that will remain at
-code point 255 on ASCII platforms, but 223 on most EBCDIC platforms
-where it will sort to a place less than the EBCDIC numerals. With a
+then sort(). Do note however that such Latin-1 manipulation does not
+address the E<yuml> C<y WITH DIAERESIS> character that will remain at
+code point 255 on ASCII platforms, but 223 on most EBCDIC platforms
+where it will sort to a place less than the EBCDIC numerals. With a
Unicode-enabled Perl you might try:
tr/^?/\x{178}/;
-The strategy of mono casing data before sorting does not preserve the case
+The strategy of mono casing data before sorting does not preserve the case
of the data and may not be acceptable for that reason.
=head2 Convert, sort data, then re convert.
@@ -1110,15 +1118,15 @@ it would be computationally expensive.
=head1 TRANSFORMATION FORMATS
-There are a variety of ways of transforming data with an intra character set
-mapping that serve a variety of purposes. Sorting was discussed in the
-previous section and a few of the other more popular mapping techniques are
+There are a variety of ways of transforming data with an intra character set
+mapping that serve a variety of purposes. Sorting was discussed in the
+previous section and a few of the other more popular mapping techniques are
discussed next.
=head2 URL decoding and encoding
Note that some URLs have hexadecimal ASCII code points in them in an
-attempt to overcome character or protocol limitation issues. For example
+attempt to overcome character or protocol limitation issues. For example
the tilde character is not on every keyboard hence a URL of the form:
http://www.pvhp.com/~pvhp/
@@ -1154,7 +1162,7 @@ of decoding such a URL under CCSID 1047:
);
$url =~ s/%([0-9a-fA-F]{2})/pack("c",$a2e_1047[hex($1)])/ge;
-Conversely, here is a partial solution for the task of encoding such
+Conversely, here is a partial solution for the task of encoding such
a URL under the 1047 code page:
$url = 'http://www.pvhp.com/~pvhp/';
@@ -1177,11 +1185,11 @@ a URL under the 1047 code page:
92,247, 83, 84, 85, 86, 87, 88, 89, 90,178,212,214,210,211,213,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,179,219,220,217,218,159
);
- # The following regular expression does not address the
- # mappings for: ('.' => '%2E', '/' => '%2F', ':' => '%3A')
+ # The following regular expression does not address the
+ # mappings for: ('.' => '%2E', '/' => '%2F', ':' => '%3A')
$url =~ s/([\t "#%&\(\),;<=>\?\@\[\\\]^`{|}~])/sprintf("%%%02X",$e2a_1047[ord($1)])/ge;
-where a more complete solution would split the URL into components
+where a more complete solution would split the URL into components
and apply a full s/// substitution only to the appropriate parts.
In the remaining examples a @e2a or @a2e array may be employed
@@ -1190,8 +1198,8 @@ you could use the @a2e_1047 or @e2a_1047 arrays just shown.
=head2 uu encoding and decoding
-The C<u> template to pack() or unpack() will render EBCDIC data in EBCDIC
-characters equivalent to their ASCII counterparts. For example, the
+The C<u> template to pack() or unpack() will render EBCDIC data in EBCDIC
+characters equivalent to their ASCII counterparts. For example, the
following will print "Yes indeed\n" on either an ASCII or EBCDIC computer:
$all_byte_chrs = '';
@@ -1240,8 +1248,8 @@ the printable set using:
# This QP encoder works on ASCII only
$qp_string =~ s/([=\x00-\x1F\x80-\xFF])/sprintf("=%02X",ord($1))/ge;
-Whereas a QP encoder that works on both ASCII and EBCDIC platforms
-would look somewhat like the following (where the EBCDIC branch @e2a
+Whereas a QP encoder that works on both ASCII and EBCDIC platforms
+would look somewhat like the following (where the EBCDIC branch @e2a
array is omitted for brevity):
if (ord('A') == 65) { # ASCII
@@ -1256,7 +1264,7 @@ array is omitted for brevity):
s/([^ !"\#\$%&'()*+,\-.\/0-9:;<>?\@A-Z[\\\]^_`a-z{|}~$delete])/sprintf("=%02X",$e2a[ord($1)])/ge;
(although in production code the substitutions might be done
-in the EBCDIC branch with the @e2a array and separately in the
+in the EBCDIC branch with the @e2a array and separately in the
ASCII branch without the expense of the identity map).
Such QP strings can be decoded with:
@@ -1265,7 +1273,7 @@ Such QP strings can be decoded with:
$string =~ s/=([0-9A-Fa-f][0-9A-Fa-f])/chr hex $1/ge;
$string =~ s/=[\n\r]+$//;
-Whereas a QP decoder that works on both ASCII and EBCDIC platforms
+Whereas a QP decoder that works on both ASCII and EBCDIC platforms
would look somewhat like the following (where the @a2e array is
omitted for brevity):
@@ -1276,13 +1284,13 @@ omitted for brevity):
The practice of shifting an alphabet one or more characters for encipherment
dates back thousands of years and was explicitly detailed by Gaius Julius
-Caesar in his B<Gallic Wars> text. A single alphabet shift is sometimes
+Caesar in his B<Gallic Wars> text. A single alphabet shift is sometimes
referred to as a rotation and the shift amount is given as a number $n after
-the string 'rot' or "rot$n". Rot0 and rot26 would designate identity maps
-on the 26-letter English version of the Latin alphabet. Rot13 has the
-interesting property that alternate subsequent invocations are identity maps
-(thus rot13 is its own non-trivial inverse in the group of 26 alphabet
-rotations). Hence the following is a rot13 encoder and decoder that will
+the string 'rot' or "rot$n". Rot0 and rot26 would designate identity maps
+on the 26-letter English version of the Latin alphabet. Rot13 has the
+interesting property that alternate subsequent invocations are identity maps
+(thus rot13 is its own non-trivial inverse in the group of 26 alphabet
+rotations). Hence the following is a rot13 encoder and decoder that will
work on ASCII and EBCDIC platforms:
#!/usr/local/bin/perl
@@ -1299,28 +1307,28 @@ In one-liner form:
=head1 Hashing order and checksums
-To the extent that it is possible to write code that depends on
+To the extent that it is possible to write code that depends on
hashing order there may be differences between hashes as stored
on an ASCII-based platform and hashes stored on an EBCDIC-based platform.
XXX
=head1 I18N AND L10N
-Internationalization (I18N) and localization (L10N) are supported at least
-in principle even on EBCDIC platforms. The details are system-dependent
+Internationalization (I18N) and localization (L10N) are supported at least
+in principle even on EBCDIC platforms. The details are system-dependent
and discussed under the L<perlebcdic/OS ISSUES> section below.
=head1 MULTI-OCTET CHARACTER SETS
-Perl may work with an internal UTF-EBCDIC encoding form for wide characters
-on EBCDIC platforms in a manner analogous to the way that it works with
+Perl may work with an internal UTF-EBCDIC encoding form for wide characters
+on EBCDIC platforms in a manner analogous to the way that it works with
the UTF-8 internal encoding form on ASCII based platforms.
Legacy multi byte EBCDIC code pages XXX.
=head1 OS ISSUES
-There may be a few system-dependent issues
+There may be a few system-dependent issues
of concern to EBCDIC Perl programmers.
=head2 OS/400
@@ -1347,7 +1355,7 @@ Perl runs under Unix Systems Services or USS.
=item chcp
-B<chcp> is supported as a shell utility for displaying and changing
+B<chcp> is supported as a shell utility for displaying and changing
one's code page. See also L<chcp(1)>.
=item dataset access
@@ -1375,26 +1383,22 @@ or z/OS.
=back
-=head2 VM/ESA?
-
-XXX.
-
=head2 POSIX-BC?
XXX.
=head1 BUGS
-This pod document contains literal Latin 1 characters and may encounter
-translation difficulties. In particular one popular nroff implementation
-was known to strip accented characters to their unaccented counterparts
-while attempting to view this document through the B<pod2man> program
-(for example, you may see a plain C<y> rather than one with a diaeresis
+This pod document contains literal Latin 1 characters and may encounter
+translation difficulties. In particular one popular nroff implementation
+was known to strip accented characters to their unaccented counterparts
+while attempting to view this document through the B<pod2man> program
+(for example, you may see a plain C<y> rather than one with a diaeresis
as in E<yuml>). Another nroff truncated the resultant manpage at
the first occurrence of 8 bit characters.
Not all shells will allow multiple C<-e> string arguments to perl to
-be concatenated together properly as recipes 0, 2, 4, 5, and 6 might
+be concatenated together properly as recipes 0, 2, 4, 5, and 6 might
seem to imply.
=head1 SEE ALSO
@@ -1413,13 +1417,13 @@ L<http://www.wps.com/projects/codes/>
B<ASCII: American Standard Code for Information Infiltration> Tom Jennings,
September 1999.
-B<The Unicode Standard, Version 3.0> The Unicode Consortium, Lisa Moore ed.,
-ISBN 0-201-61633-5, Addison Wesley Developers Press, February 2000.
+B<The Unicode Standard, Version 3.0> The Unicode Consortium, Lisa Moore ed.,
+ISBN 0-201-61633-5, Addison Wesley Developers Press, February 2000.
-B<CDRA: IBM - Character Data Representation Architecture -
-Reference and Registry>, IBM SC09-2190-00, December 1996.
+B<CDRA: IBM - Character Data Representation Architecture -
+Reference and Registry>, IBM SC09-2190-00, December 1996.
-"Demystifying Character Sets", Andrea Vine, Multilingual Computing
+"Demystifying Character Sets", Andrea Vine, Multilingual Computing
& Technology, B<#26 Vol. 10 Issue 4>, August/September 1999;
ISSN 1523-0309; Multilingual Computing Inc. Sandpoint ID, USA.
@@ -1436,11 +1440,11 @@ B<IBM - EBCDIC and the P-bit; The biggest Computer Goof Ever> Robert Bemer.
=head1 AUTHOR
-Peter Prymmer pvhp@best.com wrote this in 1999 and 2000
-with CCSID 0819 and 0037 help from Chris Leach and
-AndrE<eacute> Pirard A.Pirard@ulg.ac.be as well as POSIX-BC
+Peter Prymmer pvhp@best.com wrote this in 1999 and 2000
+with CCSID 0819 and 0037 help from Chris Leach and
+AndrE<eacute> Pirard A.Pirard@ulg.ac.be as well as POSIX-BC
help from Thomas Dorner Thomas.Dorner@start.de.
-Thanks also to Vickie Cooper, Philip Newton, William Raffloer, and
-Joe Smith. Trademarks, registered trademarks, service marks and
-registered service marks used in this document are the property of
+Thanks also to Vickie Cooper, Philip Newton, William Raffloer, and
+Joe Smith. Trademarks, registered trademarks, service marks and
+registered service marks used in this document are the property of
their respective owners.
diff --git a/gnu/usr.bin/perl/pod/perlexperiment.pod b/gnu/usr.bin/perl/pod/perlexperiment.pod
index f304120bc66..946e8ffd6bd 100644
--- a/gnu/usr.bin/perl/pod/perlexperiment.pod
+++ b/gnu/usr.bin/perl/pod/perlexperiment.pod
@@ -9,48 +9,14 @@ core. Although all of these are documented with their appropriate topics,
this succinct listing gives you an overview and basic facts about their
status.
-So far I've merely tried to find and list the experimental features and infer
+So far we've merely tried to find and list the experimental features and infer
their inception, versions, etc. There's a lot of speculation here.
=head2 Current experiments
=over 8
-=item fork() emulation
-
-Introduced in Perl 5.6.1
-
-See also L<perlfork>
-
-=item Weak references
-
-Introduced in Perl 5.6.0
-
-=item Internal file glob
-
-Introduced in Perl 5.6.0
-
-Accepted in XXX
-
-=item 64-bit support
-
-Introduced in Perl 5.005
-
-Accepted in XXX
-
-=item die accepts a reference
-
-Introduced in Perl 5.005
-
-Accepted in Perl XXX
-
-=item Unicode support
-
-Introduced in Perl 5.6.0
-
-Accepted in Perl 5.8.0 XXX
-
-=item -Dusemultiplicity -Dusethreads
+=item -Dusemultiplicity -Duseithreads
Introduced in Perl 5.6.0
@@ -58,42 +24,12 @@ Introduced in Perl 5.6.0
Introduced in Perl 5.7.0
-=item GetOpt::Long Options can now take multiple values at once (experimental)
-
-C<Getopt::Long> upgraded to version 2.35
-
-Removed in Perl 5.8.8
-
-=item 5.005-style threading
-
-Introduced in Perl 5.005
-
-Removed in Perl 5.10 XXX
-
-=item Test::Harness::Straps
-
-Removed in Perl 5.10.1
-
-=item perlcc
-
-Introduced in Perl 5.005
-
-Removed in Perl 5.9.0
-
=item C<our> can now have an experimental optional attribute C<unique>
Introduced in Perl 5.8.0
Deprecated in Perl 5.10.0
-=item Assertions
-
-The C<-A> command line switch
-
-Introduced in Perl 5.9.0
-
-Removed in Perl 5.9.5
-
=item Linux abstract Unix domain sockets
Introduced in Perl 5.9.2
@@ -104,8 +40,6 @@ See also L<Socket>
=item L<Pod::PXML|Pod::PXML>
-=item threads
-
=item The <:pop> IO pseudolayer
See also L<perlrun>
@@ -126,20 +60,32 @@ See also L<perlguts>
Introduced in Perl 5.13.7
-=item internal API for C<%H>
+=item internal API for C<%^H>
Introduced in Perl 5.13.7
See also C<cophh_> in L<perlapi>.
+=item alloccopstash
+
+Introduced in Perl 5.18.0
+
=item av_create_and_push
=item av_create_and_unshift_one
=item av_create_and_unshift_one
+=item cop_store_label
+
+Introduced in Perl 5.16.0
+
=item PL_keyword_plugin
+=item gv_fetchmethod_*_flags
+
+Introduced in Perl 5.16.0
+
=item hv_iternext_flags
=item lex_bufutf8
@@ -168,6 +114,10 @@ See also C<cophh_> in L<perlapi>.
=item lex_unstuff
+=item op_scope
+
+=item op_lvalue
+
=item parse_fullstmt
=item parse_stmtseq
@@ -194,16 +144,6 @@ See also C<cophh_> in L<perlapi>.
=item utf8_to_bytes
-=item DB module
-
-Introduced in Perl 5.6.0
-
-See also L<perldebug>, L<perldebtut>
-
-=item The pseudo-hash data type
-
-Introduced in Perl 5.6.0
-
=item Lvalue subroutines
Introduced in Perl 5.6.0
@@ -222,6 +162,16 @@ See also L<perlre>
See also L<perlre>
+=item Smart match (C<~~>)
+
+Introduced in Perl 5.10.0
+
+Modified in Perl 5.10.1, 5.12.0
+
+=item Lexical C<$_>
+
+Introduced in Perl 5.10.0
+
=item Backtracking control verbs
C<(*ACCEPT)>
@@ -232,15 +182,6 @@ See also: L<perlre/"Special Backtracking Control Verbs">
=item Code expressions, conditional expressions, and independent expressions in regexes
-=item The C<\N> regex character class
-
-The C<\N> character class, not to be confused with the named character
-sequence C<\N{NAME}>, denotes any non-newline character in a regular
-expression.
-
-Introduced in: Perl 5.12
-
-See also:
=item gv_try_downgrade
@@ -256,6 +197,22 @@ See L<perlapi/PL_keyword_plugin> for the mechanism.
Introduced in: Perl 5.11.2
+=item Array and hash container functions accept references
+
+Introduced in Perl 5.14.0
+
+=item Lexical subroutines
+
+Introduced in: Perl 5.18
+
+See also: L<perlsub/Lexical Subroutines>
+
+=item Regular Expression Set Operations
+
+Introduced in: Perl 5.18
+
+See also: L<perlrecharclass/Extended Bracketed Character Classes>
+
=back
=head2 Accepted features
@@ -267,7 +224,41 @@ They are also awarded +5 Stability and +3 Charisma.
=over 8
-=item (none yet identified)
+=item The C<\N> regex character class
+
+The C<\N> character class, not to be confused with the named character
+sequence C<\N{NAME}>, denotes any non-newline character in a regular
+expression.
+
+Introduced in: Perl 5.12
+
+=item fork() emulation
+
+Introduced in Perl 5.6.1
+
+See also L<perlfork>
+
+=item DB module
+
+Introduced in Perl 5.6.0
+
+See also L<perldebug>, L<perldebtut>
+
+=item Weak references
+
+Introduced in Perl 5.6.0
+
+=item Internal file glob
+
+Introduced in Perl 5.6.0
+
+=item die accepts a reference
+
+Introduced in Perl 5.005
+
+=item 64-bit support
+
+Introduced in Perl 5.005
=back
@@ -287,12 +278,50 @@ Introduced in: 5.11.2
Removed in: 5.11.3
+=item Assertions
+
+The C<-A> command line switch
+
+Introduced in Perl 5.9.0
+
+Removed in Perl 5.9.5
+
+=item Test::Harness::Straps
+
+Moved from Perl 5.10.1 to CPAN
+
+=item GetOpt::Long Options can now take multiple values at once (experimental)
+
+C<Getopt::Long> upgraded to version 2.35
+
+Removed in Perl 5.8.8
+
+=item The pseudo-hash data type
+
+Introduced in Perl 5.6.0
+
+Removed in Perl 5.9.0
+
+=item 5.005-style threading
+
+Introduced in Perl 5.005
+
+Removed in Perl 5.10
+
+=item perlcc
+
+Introduced in Perl 5.005
+
+Moved from Perl 5.9.0 to CPAN
+
=back
=head1 AUTHORS
brian d foy C<< <brian.d.foy@gmail.com> >>
+SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >>
+
=head1 COPYRIGHT
Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >>
diff --git a/gnu/usr.bin/perl/pod/perlgit.pod b/gnu/usr.bin/perl/pod/perlgit.pod
index 1d2df2ed5e9..65dde7c104a 100644
--- a/gnu/usr.bin/perl/pod/perlgit.pod
+++ b/gnu/usr.bin/perl/pod/perlgit.pod
@@ -481,7 +481,7 @@ the "first commit where the bug is solved".
C<git help bisect> has much more information on how you can tweak your
binary searches.
-=head1 Topic branches and rewriting history
+=head2 Topic branches and rewriting history
Individual committers should create topic branches under
B<yourname>/B<some_descriptive_name>. Other committers should check
@@ -586,7 +586,7 @@ this once globally in their F<~/.gitconfig> by doing something like:
% git config --global user.name "Ævar Arnfjörð Bjarmason"
% git config --global user.email avarab@gmail.com
-However if you'd like to override that just for perl then execute then
+However, if you'd like to override that just for perl,
execute something like the following in F<perl>:
% git config user.email avar@cpan.org
@@ -606,7 +606,7 @@ to push your changes back with the C<camel> remote:
The C<fetch> command just updates the C<camel> refs, as the objects
themselves should have been fetched when pulling from C<origin>.
-=head1 Accepting a patch
+=head2 Accepting a patch
If you have received a patch file generated using the above section,
you should try out the patch.
@@ -656,7 +656,7 @@ then merge it into blead then push it out to the main repository:
% git checkout blead
% git merge experimental
- % git push
+ % git push origin blead
If you want to delete your temporary branch, you may do so with:
@@ -708,7 +708,7 @@ because it runs a subset of tests under miniperl rather than perl.
=back
-=head3 On merging and rebasing
+=head2 On merging and rebasing
Simple, one-off commits pushed to the 'blead' branch should be simple
commits that apply cleanly. In other words, you should make sure your
@@ -824,7 +824,77 @@ Or you could just merge the whole branch if you like it all:
And then push back to the repository:
- % git push
+ % git push origin blead
+
+=head2 Using a smoke-me branch to test changes
+
+Sometimes a change affects code paths which you cannot test on the OSes
+which are directly available to you and it would be wise to have users
+on other OSes test the change before you commit it to blead.
+
+Fortunately, there is a way to get your change smoke-tested on various
+OSes: push it to a "smoke-me" branch and wait for certain automated
+smoke-testers to report the results from their OSes.
+
+The procedure for doing this is roughly as follows (using the example of
+of tonyc's smoke-me branch called win32stat):
+
+First, make a local branch and switch to it:
+
+ % git checkout -b win32stat
+
+Make some changes, build perl and test your changes, then commit them to
+your local branch. Then push your local branch to a remote smoke-me
+branch:
+
+ % git push origin win32stat:smoke-me/tonyc/win32stat
+
+Now you can switch back to blead locally:
+
+ % git checkout blead
+
+and continue working on other things while you wait a day or two,
+keeping an eye on the results reported for your smoke-me branch at
+L<http://perl.develop-help.com/?b=smoke-me/tonyc/win32state>.
+
+If all is well then update your blead branch:
+
+ % git pull
+
+then checkout your smoke-me branch once more and rebase it on blead:
+
+ % git rebase blead win32stat
+
+Now switch back to blead and merge your smoke-me branch into it:
+
+ % git checkout blead
+ % git merge win32stat
+
+As described earlier, if there are many changes on your smoke-me branch
+then you should prepare a merge commit in which to give an overview of
+those changes by using the following command instead of the last
+command above:
+
+ % git merge win32stat --no-ff --no-commit
+
+You should now build perl and test your (merged) changes one last time
+(ideally run the whole test suite, but failing that at least run the
+F<t/porting/*.t> tests) before pushing your changes as usual:
+
+ % git push origin blead
+
+Finally, you should then delete the remote smoke-me branch:
+
+ % git push origin :smoke-me/tonyc/win32stat
+
+(which is likely to produce a warning like this, which can be ignored:
+
+ remote: fatal: ambiguous argument 'refs/heads/smoke-me/tonyc/win32stat': unknown revision or path not in the working tree.
+ remote: Use '--' to separate paths from revisions
+
+) and then delete your local branch:
+
+ % git branch -d win32stat
=head2 A note on camel and dromedary
diff --git a/gnu/usr.bin/perl/pod/perlgpl.pod b/gnu/usr.bin/perl/pod/perlgpl.pod
index 82a8f5a9dd1..cd8a1d64346 100644
--- a/gnu/usr.bin/perl/pod/perlgpl.pod
+++ b/gnu/usr.bin/perl/pod/perlgpl.pod
@@ -35,15 +35,15 @@ For the Perl Artistic License, see L<perlartistic>.
GNU GENERAL PUBLIC LICENSE
Version 1, February 1989
-
+
Copyright (C) 1989 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
+
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
-
+
Preamble
-
+
The license agreements of most software companies try to keep users
at the mercy of those companies. By contrast, our General Public
License is intended to guarantee your freedom to share and change free
@@ -51,41 +51,41 @@ For the Perl Artistic License, see L<perlartistic>.
General Public License applies to the Free Software Foundation's
software and to any other program whose authors commit to using it.
You can use it for your programs, too.
-
+
When we speak of free software, we are referring to freedom, not
price. Specifically, the General Public License is designed to make
sure that you have the freedom to give away or sell copies of free
software, that you receive source code or can get it if you want it,
that you can change the software or use pieces of it in new free
programs; and that you know you can do these things.
-
+
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
-
+
For example, if you distribute copies of a such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must tell them their rights.
-
+
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
-
+
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
-
+
The precise terms and conditions for copying, distribution and
modification follow.
-
+
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
+
0. This License Agreement applies to any program or other work which
contains a notice placed by the copyright holder saying it may be
distributed under the terms of this General Public License. The
@@ -93,7 +93,7 @@ For the Perl Artistic License, see L<perlartistic>.
on the Program" means either the Program or any work containing the
Program or a portion of it, either verbatim or with modifications. Each
licensee is addressed as "you".
-
+
1. You may copy and distribute verbatim copies of the Program's source
code as you receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice and
@@ -102,21 +102,21 @@ For the Perl Artistic License, see L<perlartistic>.
other recipients of the Program a copy of this General Public License
along with the Program. You may charge a fee for the physical act of
transferring a copy.
-
+
2. You may modify your copy or copies of the Program or any portion of
it, and copy and distribute such modifications under the terms of Paragraph
1 above, provided that you also do the following:
-
+
a) cause the modified files to carry prominent notices stating that
you changed the files and the date of any change; and
-
+
b) cause the whole of any work that you distribute or publish, that
in whole or in part contains the Program or any part thereof, either
with or without modifications, to be licensed at no charge to all
third parties under the terms of this General Public License (except
that you may choose to grant warranty protection to some or all
third parties, at your option).
-
+
c) If the modified program normally reads commands interactively when
run, you must cause it, when started running for such interactive use
in the simplest and most usual way, to print or display an
@@ -125,34 +125,34 @@ For the Perl Artistic License, see L<perlartistic>.
warranty) and that users may redistribute the program under these
conditions, and telling the user how to view a copy of this General
Public License.
-
+
d) You may charge a fee for the physical act of transferring a
copy, and you may at your option offer warranty protection in
exchange for a fee.
-
+
Mere aggregation of another independent work with the Program (or its
derivative) on a volume of a storage or distribution medium does not bring
the other work under the scope of these terms.
-
+
3. You may copy and distribute the Program (or a portion or derivative of
it, under Paragraph 2) in object code or executable form under the terms of
Paragraphs 1 and 2 above provided that you also do one of the following:
-
+
a) accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of
Paragraphs 1 and 2 above; or,
-
+
b) accompany it with a written offer, valid for at least three
years, to give any third party free (except for a nominal charge
for the cost of distribution) a complete machine-readable copy of the
corresponding source code, to be distributed under the terms of
Paragraphs 1 and 2 above; or,
-
+
c) accompany it with the information you received as to where the
corresponding source code may be obtained. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form alone.)
-
+
Source code for a work means the preferred form of the work for making
modifications to it. For an executable file, complete source code means
all the source code for all modules it contains; but, as a special
@@ -160,7 +160,7 @@ For the Perl Artistic License, see L<perlartistic>.
libraries that accompany the operating system on which the executable
file runs, or for standard header files or definitions files that
accompany that operating system.
-
+
4. You may not copy, modify, sublicense, distribute or transfer the
Program except as expressly provided under this General Public License.
Any attempt otherwise to copy, modify, sublicense, distribute or transfer
@@ -169,22 +169,22 @@ For the Perl Artistic License, see L<perlartistic>.
copies, or rights to use copies, from you under this General Public
License will not have their licenses terminated so long as such parties
remain in full compliance.
-
+
5. By copying, distributing or modifying the Program (or any work based
on the Program) you indicate your acceptance of this license to do so,
and all its terms and conditions.
-
+
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the original
licensor to copy, distribute or modify the Program subject to these
terms and conditions. You may not impose any further restrictions on the
recipients' exercise of the rights granted herein.
-
+
7. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
-
+
Each version is given a distinguishing version number. If the Program
specifies a version number of the license which applies to it and "any
later version", you have the option of following the terms and conditions
@@ -192,7 +192,7 @@ For the Perl Artistic License, see L<perlartistic>.
Software Foundation. If the Program does not specify a version number of
the license, you may choose any version ever published by the Free Software
Foundation.
-
+
8. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
@@ -200,9 +200,9 @@ For the Perl Artistic License, see L<perlartistic>.
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
-
+
NO WARRANTY
-
+
9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
@@ -212,7 +212,7 @@ For the Perl Artistic License, see L<perlartistic>.
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
-
+
10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
@@ -222,67 +222,67 @@ For the Perl Artistic License, see L<perlartistic>.
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
-
+
END OF TERMS AND CONDITIONS
-
+
Appendix: How to Apply These Terms to Your New Programs
-
+
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
-
+
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
-
+
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
-
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02110-1301 USA
-
-
+
+
Also add information on how to contact you by electronic and paper mail.
-
+
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
-
+
Gnomovision version 69, Copyright (C) 19xx name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type 'show c' for details.
-
+
The hypothetical commands 'show w' and 'show c' should show the
appropriate parts of the General Public License. Of course, the
commands you use may be called something other than 'show w' and 'show
c'; they could even be mouse-clicks or menu items--whatever suits your
program.
-
+
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here a sample; alter the names:
-
+
Yoyodyne, Inc., hereby disclaims all copyright interest in the
program 'Gnomovision' (a program to direct compilers to make passes
at assemblers) written by James Hacker.
-
+
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
-
+
That's all there is to it!
=cut
diff --git a/gnu/usr.bin/perl/pod/perlhack.pod b/gnu/usr.bin/perl/pod/perlhack.pod
index 63df5d5dfc3..a32199a9dfb 100644
--- a/gnu/usr.bin/perl/pod/perlhack.pod
+++ b/gnu/usr.bin/perl/pod/perlhack.pod
@@ -10,7 +10,7 @@ perlhack - How to hack on Perl
=head1 DESCRIPTION
-This document explains how Perl development works. It includes details
+This document explains how Perl development works. It includes details
about the Perl 5 Porters email list, the Perl repository, the Perlbug
bug tracker, patch guidelines, and commentary on Perl development
philosophy.
@@ -24,11 +24,18 @@ for a bug, comment fixes, etc., it's easy! Here's how:
=item * Check out the source repository
-The perl source is in a git repository. You can clone the repository
+The perl source is in a git repository. You can clone the repository
with the following command:
% git clone git://perl5.git.perl.org/perl.git perl
+=item * Ensure you're following the latest advice
+
+In case the advice in this guide has been updated recently, read the
+latest version directly from the perl source:
+
+ % perldoc pod/perlhack.pod
+
=item * Make your change
Hack, hack, hack.
@@ -49,57 +56,78 @@ Committing your work will save the change I<on your local system>:
% git commit -a -m 'Commit message goes here'
Make sure the commit message describes your change in a single
-sentence. For example, "Fixed spelling errors in perlhack.pod".
+sentence. For example, "Fixed spelling errors in perlhack.pod".
=item * Send your change to perlbug
The next step is to submit your patch to the Perl core ticket system
via email.
-Assuming your patch consists of a single git commit, the following
-writes the file as a MIME attachment, and sends it with a meaningful
+If your changes are in a single git commit, run the following commands
+to write the file as a MIME attachment and send it with a meaningful
subject:
% git format-patch -1 --attach
- % perlbug -s "[PATCH] $(git log -1 --oneline HEAD)" -f 0001-*.patch
+ % ./perl -Ilib utils/perlbug -s "[PATCH] $(
+ git log -1 --oneline HEAD)" -f 0001-*.patch
The perlbug program will ask you a few questions about your email
-address and the patch you're submitting. Once you've answered them it
+address and the patch you're submitting. Once you've answered them it
will submit your patch via email.
+If your changes are in multiple commits, generate a patch file
+containing them all, and attach that:
+
+ % git format-patch origin/blead --attach --stdout > patches
+ % ./perl -Ilib utils/perlbug -f patches
+
+When prompted, pick a subject that summarizes your changes overall and
+has "[PATCH]" at the beginning.
+
=item * Thank you
The porters appreciate the time you spent helping to make Perl better.
Thank you!
+=item * Next time
+
+The next time you wish to make a patch, you need to start from the
+latest perl in a pristine state. Check you don't have any local changes
+or added files in your perl check-out which you wish to keep, then run
+these commands:
+
+ % git pull
+ % git reset --hard origin/blead
+ % git clean -dxf
+
=back
=head1 BUG REPORTING
If you want to report a bug in Perl, you must use the F<perlbug>
-command line tool. This tool will ensure that your bug report includes
+command line tool. This tool will ensure that your bug report includes
all the relevant system and configuration information.
To browse existing Perl bugs and patches, you can use the web interface
at L<http://rt.perl.org/>.
Please check the archive of the perl5-porters list (see below) and/or
-the bug tracking system before submitting a bug report. Often, you'll
+the bug tracking system before submitting a bug report. Often, you'll
find that the bug has been reported already.
You can log in to the bug tracking system and comment on existing bug
-reports. If you have additional information regarding an existing bug,
-please add it. This will help the porters fix the bug.
+reports. If you have additional information regarding an existing bug,
+please add it. This will help the porters fix the bug.
=head1 PERL 5 PORTERS
The perl5-porters (p5p) mailing list is where the Perl standard
-distribution is maintained and developed. The people who maintain Perl
+distribution is maintained and developed. The people who maintain Perl
are also referred to as the "Perl 5 Porters", "p5p" or just the
"porters".
A searchable archive of the list is available at
-L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/>. There is
+L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/>. There is
also another archive at
L<http://archive.develooper.com/perl5-porters@perl.org/>.
@@ -107,7 +135,7 @@ L<http://archive.develooper.com/perl5-porters@perl.org/>.
The perl5-changes mailing list receives a copy of each patch that gets
submitted to the maintenance and development branches of the perl
-repository. See L<http://lists.perl.org/list/perl5-changes.html> for
+repository. See L<http://lists.perl.org/list/perl5-changes.html> for
subscription and archive information.
=head2 #p5p on IRC
@@ -119,8 +147,8 @@ Perl core.
=head1 GETTING THE PERL SOURCE
All of Perl's source code is kept centrally in a Git repository at
-I<perl5.git.perl.org>. The repository contains many Perl revisions from
-Perl 1 onwards and all the revisions from Perforce, the previous
+I<perl5.git.perl.org>. The repository contains many Perl revisions
+from Perl 1 onwards and all the revisions from Perforce, the previous
version control system.
For much more detail on using git with the Perl repository, please see
@@ -128,7 +156,7 @@ L<perlgit>.
=head2 Read access via Git
-You will need a copy of Git for your computer. You can fetch a copy of
+You will need a copy of Git for your computer. You can fetch a copy of
the repository using the git protocol:
% git clone git://perl5.git.perl.org/perl.git perl
@@ -143,10 +171,10 @@ clone via http, though this is much slower:
=head2 Read access via the web
-You may access the repository over the web. This allows you to browse
+You may access the repository over the web. This allows you to browse
the tree, see recent commits, subscribe to RSS feeds for the changes,
-search for particular commits and more. You may access it at
-L<http://perl5.git.perl.org/perl.git>. A mirror of the repository is
+search for particular commits and more. You may access it at
+L<http://perl5.git.perl.org/perl.git>. A mirror of the repository is
found at L<http://github.com/mirrors/perl>.
=head2 Read access via rsync
@@ -154,18 +182,18 @@ found at L<http://github.com/mirrors/perl>.
You can also choose to use rsync to get a copy of the current source
tree for the bleadperl branch and all maintenance branches:
- % rsync -avz rsync://perl5.git.perl.org/perl-current .
- % rsync -avz rsync://perl5.git.perl.org/perl-5.12.x .
- % rsync -avz rsync://perl5.git.perl.org/perl-5.10.x .
- % rsync -avz rsync://perl5.git.perl.org/perl-5.8.x .
- % rsync -avz rsync://perl5.git.perl.org/perl-5.6.x .
- % rsync -avz rsync://perl5.git.perl.org/perl-5.005xx .
+ % rsync -avz rsync://perl5.git.perl.org/perl-current .
+ % rsync -avz rsync://perl5.git.perl.org/perl-5.12.x .
+ % rsync -avz rsync://perl5.git.perl.org/perl-5.10.x .
+ % rsync -avz rsync://perl5.git.perl.org/perl-5.8.x .
+ % rsync -avz rsync://perl5.git.perl.org/perl-5.6.x .
+ % rsync -avz rsync://perl5.git.perl.org/perl-5.005xx .
(Add the C<--delete> option to remove leftover files.)
To get a full list of the available sync points:
- % rsync perl5.git.perl.org::
+ % rsync perl5.git.perl.org::
=head2 Write access via git
@@ -175,40 +203,41 @@ using git.
=head1 PATCHING PERL
If you're planning to do more extensive work than a single small fix,
-we encourage you to read the documentation below. This will help you
+we encourage you to read the documentation below. This will help you
focus your work and make your patches easier to incorporate into the
Perl source.
=head2 Submitting patches
-If you have a small patch to submit, please submit it via perlbug. You
-can also send email directly to perlbug@perl.org. Please note that
+If you have a small patch to submit, please submit it via perlbug. You
+can also send email directly to perlbug@perl.org. Please note that
messages sent to perlbug may be held in a moderation queue, so you
won't receive a response immediately.
You'll know your submission has been processed when you receive an
-email from our ticket tracking system. This email will give you a
-ticket number. Once your patch has made it to the ticket tracking
+email from our ticket tracking system. This email will give you a
+ticket number. Once your patch has made it to the ticket tracking
system, it will also be sent to the perl5-porters@perl.org list.
-Patches are reviewed and discussed on the p5p list. Simple,
+Patches are reviewed and discussed on the p5p list. Simple,
uncontroversial patches will usually be applied without any discussion.
When the patch is applied, the ticket will be updated and you will
-receive email. In addition, an email will be sent to the p5p list.
+receive email. In addition, an email will be sent to the p5p list.
-In other cases, the patch will need more work or discussion. That will
+In other cases, the patch will need more work or discussion. That will
happen on the p5p list.
You are encouraged to participate in the discussion and advocate for
-your patch. Sometimes your patch may get lost in the shuffle. It's
+your patch. Sometimes your patch may get lost in the shuffle. It's
appropriate to send a reminder email to p5p if no action has been taken
-in a month. Please remember that the Perl 5 developers are all
+in a month. Please remember that the Perl 5 developers are all
volunteers, and be polite.
Changes are always applied directly to the main development branch,
-called "blead". Some patches may be backported to a maintenance branch.
-If you think your patch is appropriate for the maintenance branch,
-please explain why when you submit it.
+called "blead". Some patches may be backported to a maintenance
+branch. If you think your patch is appropriate for the maintenance
+branch (see L<perlpolicy/MAINTENANCE BRANCHES>), please explain why
+when you submit it.
=head2 Getting your patch accepted
@@ -218,25 +247,25 @@ can do to help the Perl 5 Porters accept your patch.
=head3 Patch style
If you used git to check out the Perl source, then using C<git
-format-patch> will produce a patch in a style suitable for Perl. The
+format-patch> will produce a patch in a style suitable for Perl. The
C<format-patch> command produces one patch file for each commit you
-made. If you prefer to send a single patch for all commits, you can use
-C<git diff>.
+made. If you prefer to send a single patch for all commits, you can
+use C<git diff>.
% git checkout blead
% git pull
% git diff blead my-branch-name
This produces a patch based on the difference between blead and your
-current branch. It's important to make sure that blead is up to date
+current branch. It's important to make sure that blead is up to date
before producing the diff, that's why we call C<git pull> first.
-We strongly recommend that you use git if possible. It will make your
+We strongly recommend that you use git if possible. It will make your
life easier, and ours as well.
However, if you're not using git, you can still produce a suitable
-patch. You'll need a pristine copy of the Perl source to diff against.
-The porters prefer unified diffs. Using GNU C<diff>, you can produce a
+patch. You'll need a pristine copy of the Perl source to diff against.
+The porters prefer unified diffs. Using GNU C<diff>, you can produce a
diff like this:
% diff -Npurd perl.pristine perl.mine
@@ -247,11 +276,11 @@ build artifacts, or you may get a confusing result.
=head3 Commit message
As you craft each patch you intend to submit to the Perl core, it's
-important to write a good commit message. This is especially important
+important to write a good commit message. This is especially important
if your submission will consist of a series of commits.
The first line of the commit message should be a short description
-without a period. It should be no longer than the subject line of an
+without a period. It should be no longer than the subject line of an
email, 50 characters being a good rule of thumb.
A lot of Git tools (Gitweb, GitHub, git log --pretty=oneline, ...) will
@@ -271,11 +300,11 @@ to Perl.
=item * Why
Your commit message should describe why the change you are making is
-important. When someone looks at your change in six months or six
+important. When someone looks at your change in six months or six
years, your intent should be clear.
If you're deprecating a feature with the intent of later simplifying
-another bit of code, say so. If you're fixing a performance problem or
+another bit of code, say so. If you're fixing a performance problem or
adding a new feature to support some other bit of the core, mention
that.
@@ -294,23 +323,23 @@ month or next year.
=back
A commit message isn't intended to take the place of comments in your
-code. Commit messages should describe the change you made, while code
+code. Commit messages should describe the change you made, while code
comments should describe the current state of the code.
If you've just implemented a new feature, complete with doc, tests and
-well-commented code, a brief commit message will often suffice. If,
+well-commented code, a brief commit message will often suffice. If,
however, you've just changed a single character deep in the parser or
lexer, you might need to write a small novel to ensure that future
readers understand what you did and why you did it.
=head3 Comments, Comments, Comments
-Be sure to adequately comment your code. While commenting every line is
-unnecessary, anything that takes advantage of side effects of
+Be sure to adequately comment your code. While commenting every line
+is unnecessary, anything that takes advantage of side effects of
operators, that creates changes that will be felt outside of the
function being patched, or that others may find confusing should be
-documented. If you are going to err, it is better to err on the side of
-adding too many comments than too few.
+documented. If you are going to err, it is better to err on the side
+of adding too many comments than too few.
The best comments explain I<why> the code does what it does, not I<what
it does>.
@@ -381,13 +410,28 @@ extra paren, e.g. "if (a && (b = c)) ..."
"if (!foo) ..." rather than "if (foo == FALSE) ..." etc.
+=item *
+
+Do not declare variables using "register". It may be counterproductive
+with modern compilers, and is deprecated in C++, under which the Perl
+source is regularly compiled.
+
+=item *
+
+In-line functions that are in headers that are accessible to XS code
+need to be able to compile without warnings with commonly used extra
+compilation flags, such as gcc's C<-Wswitch-default> which warns
+whenever a switch statement does not have a "default" case. The use of
+these extra flags is to catch potential problems in legal C code, and
+is often used by Perl aggregators, such as Linux distributors.
+
=back
=head3 Test suite
If your patch changes code (rather than just changing documentation),
you should also include one or more test cases which illustrate the bug
-you're fixing or validate the new functionality you're adding. In
+you're fixing or validate the new functionality you're adding. In
general, you should update an existing test file rather than create a
new one.
@@ -398,7 +442,7 @@ Your test suite additions should generally follow these guidelines
=item *
-Know what you're testing. Read the docs, and the source.
+Know what you're testing. Read the docs, and the source.
=item *
@@ -428,7 +472,7 @@ Give meaningful error messages when a test fails.
=item *
-Avoid using qx// and system() unless you are testing for them. If you
+Avoid using qx// and system() unless you are testing for them. If you
do use them, make sure that you cover _all_ perl platforms.
=item *
@@ -450,7 +494,7 @@ Add comments to the code explaining what you are testing for.
=item *
-Make updating the '1..42' string unnecessary. Or make sure that you
+Make updating the '1..42' string unnecessary. Or make sure that you
update it.
=item *
@@ -473,7 +517,7 @@ This works just like patching anything else, with one extra
consideration.
Modules in the F<cpan/> directory of the source tree are maintained
-outside of the Perl core. When the author updates the module, the
+outside of the Perl core. When the author updates the module, the
updates are simply copied into the core. See that module's
documentation or its listing on L<http://search.cpan.org/> for more
information on reporting bugs and submitting patches.
@@ -493,8 +537,8 @@ core.
For changes significant enough to warrant a F<pod/perldelta.pod> entry,
the porters will greatly appreciate it if you submit a delta entry
-along with your actual change. Significant changes include, but are not
-limited to:
+along with your actual change. Significant changes include, but are
+not limited to:
=over 4
@@ -534,13 +578,13 @@ Important platform-specific changes
=back
Please make sure you add the perldelta entry to the right section
-within F<pod/perldelta.pod>. More information on how to write good
+within F<pod/perldelta.pod>. More information on how to write good
perldelta entries is available in the C<Style> section of
F<Porting/how_to_write_a_perldelta.pod>.
=head2 What makes for a good patch?
-New features and extensions to the language can be contentious. There
+New features and extensions to the language can be contentious. There
is no specific set of criteria which determine what features get added,
but here are some questions to consider when developing a patch:
@@ -574,28 +618,28 @@ Either assimilate new technologies, or build bridges to them.
=head3 Where is the implementation?
-All the talk in the world is useless without an implementation. In
+All the talk in the world is useless without an implementation. In
almost every case, the person or people who argue for a new feature
-will be expected to be the ones who implement it. Porters capable of
+will be expected to be the ones who implement it. Porters capable of
coding new features have their own agendas, and are not available to
implement your (possibly good) idea.
=head3 Backwards compatibility
-It's a cardinal sin to break existing Perl programs. New warnings can
+It's a cardinal sin to break existing Perl programs. New warnings can
be contentious--some say that a program that emits warnings is not
-broken, while others say it is. Adding keywords has the potential to
+broken, while others say it is. Adding keywords has the potential to
break programs, changing the meaning of existing token sequences or
functions might break programs.
The Perl 5 core includes mechanisms to help porters make backwards
incompatible changes more compatible such as the L<feature> and
-L<deprecate> modules. Please use them when appropriate.
+L<deprecate> modules. Please use them when appropriate.
=head3 Could it be a module instead?
Perl 5 has extension mechanisms, modules and XS, specifically to avoid
-the need to keep changing the Perl interpreter. You can write modules
+the need to keep changing the Perl interpreter. You can write modules
that export functions, you can give those functions prototypes so they
can be called like built-in functions, you can even write XS code to
mess with the runtime data structures of the Perl interpreter if you
@@ -618,26 +662,26 @@ potential to introduce new bugs.
=head3 How big is it?
-The smaller and more localized the change, the better. Similarly, a
+The smaller and more localized the change, the better. Similarly, a
series of small patches is greatly preferred over a single large patch.
=head3 Does it preclude other desirable features?
A patch is likely to be rejected if it closes off future avenues of
-development. For instance, a patch that placed a true and final
+development. For instance, a patch that placed a true and final
interpretation on prototypes is likely to be rejected because there are
still options for the future of prototypes that haven't been addressed.
=head3 Is the implementation robust?
Good patches (tight code, complete, correct) stand more chance of going
-in. Sloppy or incorrect patches might be placed on the back burner
+in. Sloppy or incorrect patches might be placed on the back burner
until the pumpking has time to fix, or might be discarded altogether
without further notice.
=head3 Is the implementation generic enough to be portable?
-The worst patches make use of system-specific features. It's highly
+The worst patches make use of system-specific features. It's highly
unlikely that non-portable additions to the Perl language will be
accepted.
@@ -656,14 +700,14 @@ patch won't be accidentally thrown away by someone in the future?
=head3 Is there enough documentation?
Patches without documentation are probably ill-thought out or
-incomplete. No features can be added or changed without documentation,
+incomplete. No features can be added or changed without documentation,
so submitting a patch for the appropriate pod docs as well as the
source code is important.
=head3 Is there another way to do it?
Larry said "Although the Perl Slogan is I<There's More Than One Way to
-Do It>, I hesitate to make 10 ways to do something". This is a tricky
+Do It>, I hesitate to make 10 ways to do something". This is a tricky
heuristic to navigate, though--one man's essential addition is another
man's pointless cruft.
@@ -674,12 +718,12 @@ authors, ... Perl is supposed to be easy.
=head3 Patches speak louder than words
-Working code is always preferred to pie-in-the-sky ideas. A patch to
+Working code is always preferred to pie-in-the-sky ideas. A patch to
add a feature stands a much higher chance of making it to the language
than does a random feature request, no matter how fervently argued the
-request might be. This ties into "Will it be useful?", as the fact that
-someone took the time to make the patch demonstrates a strong desire
-for the feature.
+request might be. This ties into "Will it be useful?", as the fact
+that someone took the time to make the patch demonstrates a strong
+desire for the feature.
=head1 TESTING
@@ -687,11 +731,12 @@ The core uses the same testing style as the rest of Perl, a simple
"ok/not ok" run through Test::Harness, but there are a few special
considerations.
-There are three ways to write a test in the core. L<Test::More>,
-F<t/test.pl> and ad hoc C<print $test ? "ok 42\n" : "not ok 42\n">. The
-decision of which to use depends on what part of the test suite you're
-working on. This is a measure to prevent a high-level failure (such as
-Config.pm breaking) from causing basic functionality tests to fail.
+There are three ways to write a test in the core: L<Test::More>,
+F<t/test.pl> and ad hoc C<print $test ? "ok 42\n" : "not ok 42\n">.
+The decision of which to use depends on what part of the test suite
+you're working on. This is a measure to prevent a high-level failure
+(such as Config.pm breaking) from causing basic functionality tests to
+fail.
The F<t/test.pl> library provides some of the features of
L<Test::More>, but avoids loading most modules and uses as few core
@@ -702,11 +747,13 @@ Protocol|http://testanything.org>.
=over 4
-=item * F<t/base> and F<t/comp>
+=item * F<t/base>, F<t/comp> and F<t/opbasic>
Since we don't know if require works, or even subroutines, use ad hoc
-tests for these two. Step carefully to avoid using the feature being
-tested.
+tests for these three. Step carefully to avoid using the feature being
+tested. Tests in F<t/opbasic>, for instance, have been placed there
+rather than in F<t/op> because they test functionality which
+F<t/test.pl> presumes has already been demonstrated to work.
=item * F<t/cmd>, F<t/run>, F<t/io> and F<t/op>
@@ -719,25 +766,25 @@ sure to skip the test gracefully if it's not there.
=item * Everything else
Now that the core of Perl is tested, L<Test::More> can and should be
-used. You can also use the full suite of core modules in the tests.
+used. You can also use the full suite of core modules in the tests.
=back
When you say "make test", Perl uses the F<t/TEST> program to run the
-test suite (except under Win32 where it uses F<t/harness> instead). All
-tests are run from the F<t/> directory, B<not> the directory which
-contains the test. This causes some problems with the tests in F<lib/>,
-so here's some opportunity for some patching.
+test suite (except under Win32 where it uses F<t/harness> instead).
+All tests are run from the F<t/> directory, B<not> the directory which
+contains the test. This causes some problems with the tests in
+F<lib/>, so here's some opportunity for some patching.
-You must be triply conscious of cross-platform concerns. This usually
+You must be triply conscious of cross-platform concerns. This usually
boils down to using L<File::Spec> and avoiding things like C<fork()>
and C<system()> unless absolutely necessary.
=head2 Special C<make test> targets
There are various special make targets that can be used to test Perl
-slightly differently than the standard "test" target. Not all them are
-expected to give a 100% success rate. Many of them have several
+slightly differently than the standard "test" target. Not all them are
+expected to give a 100% success rate. Many of them have several
aliases, and many of them are not available on certain operating
systems.
@@ -748,75 +795,32 @@ systems.
This runs some basic sanity tests on the source tree and helps catch
basic errors before you submit a patch.
-=item * coretest
-
-Run F<perl> on all core tests (F<t/*> and F<lib/[a-z]*> pragma tests).
-
-(Not available on Win32)
-
-=item * test.deparse
-
-Run all the tests through L<B::Deparse>. Not all tests will succeed.
-
-(Not available on Win32)
-
-=item * test.taintwarn
-
-Run all tests with the B<-t> command-line switch. Not all tests are
-expected to succeed (until they're specifically fixed, of course).
-
-(Not available on Win32)
-
=item * minitest
Run F<miniperl> on F<t/base>, F<t/comp>, F<t/cmd>, F<t/run>, F<t/io>,
F<t/op>, F<t/uni> and F<t/mro> tests.
-=item * test.valgrind check.valgrind utest.valgrind ucheck.valgrind
+=item * test.valgrind check.valgrind
(Only in Linux) Run all the tests using the memory leak + naughty
-memory access tool "valgrind". The log files will be named
+memory access tool "valgrind". The log files will be named
F<testname.valgrind>.
-=item * test.torture torturetest
-
-Run all the usual tests and some extra tests. As of Perl 5.8.0, the
-only extra tests are Abigail's JAPHs, F<t/japh/abigail.t>.
-
-You can also run the torture test with F<t/harness> by giving
-C<-torture> argument to F<t/harness>.
-
-=item * utest ucheck test.utf8 check.utf8
-
-Run all the tests with -Mutf8. Not all tests will succeed.
-
-(Not available on Win32)
-
-=item * minitest.utf16 test.utf16
-
-Runs the tests with UTF-16 encoded scripts, encoded with different
-versions of this encoding.
-
-C<make utest.utf16> runs the test suite with a combination of C<-utf8>
-and C<-utf16> arguments to F<t/TEST>.
-
-(Not available on Win32)
-
=item * test_harness
Run the test suite with the F<t/harness> controlling program, instead
-of F<t/TEST>. F<t/harness> is more sophisticated, and uses the
+of F<t/TEST>. F<t/harness> is more sophisticated, and uses the
L<Test::Harness> module, thus using this test target supposes that perl
-mostly works. The main advantage for our purposes is that it prints a
-detailed summary of failed tests at the end. Also, unlike F<t/TEST>, it
-doesn't redirect stderr to stdout.
+mostly works. The main advantage for our purposes is that it prints a
+detailed summary of failed tests at the end. Also, unlike F<t/TEST>,
+it doesn't redirect stderr to stdout.
Note that under Win32 F<t/harness> is always used instead of F<t/TEST>,
so there is no special "test_harness" target.
Under Win32's "test" target you may use the TEST_SWITCHES and
TEST_FILES environment variables to control the behaviour of
-F<t/harness>. This means you can say
+F<t/harness>. This means you can say
nmake test TEST_FILES="op/*.t"
nmake test TEST_SWITCHES="-torture" TEST_FILES="op/*.t"
@@ -830,9 +834,9 @@ Sets PERL_SKIP_TTY_TEST to true before running normal test.
=head2 Parallel tests
The core distribution can now run its regression tests in parallel on
-Unix-like platforms. Instead of running C<make test>, set C<TEST_JOBS>
+Unix-like platforms. Instead of running C<make test>, set C<TEST_JOBS>
in your environment to the number of tests to run in parallel, and run
-C<make test_harness>. On a Bourne-like shell, this can be done as
+C<make test_harness>. On a Bourne-like shell, this can be done as
TEST_JOBS=3 make test_harness # Run 3 tests in parallel
@@ -842,8 +846,8 @@ non-conflicting test scripts itself, and there is no standard interface
to C<make> utilities to interact with their job schedulers.
Note that currently some test scripts may fail when run in parallel
-(most notably F<ext/IO/t/io_dir.t>). If necessary, run just the failing
-scripts again sequentially and see if the failures go away.
+(most notably F<ext/IO/t/io_dir.t>). If necessary, run just the
+failing scripts again sequentially and see if the failures go away.
=head2 Running tests by hand
@@ -861,14 +865,14 @@ or
=head2 Using F<t/harness> for testing
If you use C<harness> for testing, you have several command line
-options available to you. The arguments are as follows, and are in the
+options available to you. The arguments are as follows, and are in the
order that they must appear if used together.
harness -v -torture -re=pattern LIST OF FILES TO TEST
harness -v -torture -re LIST OF PATTERNS TO MATCH
If C<LIST OF FILES TO TEST> is omitted, the file list is obtained from
-the manifest. The file list may include shell wildcards which will be
+the manifest. The file list may include shell wildcards which will be
expanded out.
=over 4
@@ -884,14 +888,14 @@ Run the torture tests as well as the normal set.
=item * -re=PATTERN
-Filter the file list so that all the test files run match PATTERN. Note
-that this form is distinct from the B<-re LIST OF PATTERNS> form below
-in that it allows the file list to be provided as well.
+Filter the file list so that all the test files run match PATTERN.
+Note that this form is distinct from the B<-re LIST OF PATTERNS> form
+below in that it allows the file list to be provided as well.
=item * -re LIST OF PATTERNS
Filter the file list so that all the test files run match
-/(LIST|OF|PATTERNS)/. Note that with this form the patterns are joined
+/(LIST|OF|PATTERNS)/. Note that with this form the patterns are joined
by '|' and you cannot supply a list of files, instead the test files
are obtained from the MANIFEST.
@@ -909,7 +913,7 @@ affect the execution of the test:
=item * PERL_CORE=1
indicates that we're running this test as part of the perl core test
-suite. This is useful for modules that have a dual life on CPAN.
+suite. This is useful for modules that have a dual life on CPAN.
=item * PERL_DESTRUCT_LEVEL=2
@@ -924,9 +928,9 @@ F<./perl>).
=item * PERL_SKIP_TTY_TEST
-if set, tells to skip the tests that need a terminal. It's actually set
-automatically by the Makefile, but can also be forced artificially by
-running 'make test_notty'.
+if set, tells to skip the tests that need a terminal. It's actually
+set automatically by the Makefile, but can also be forced artificially
+by running 'make test_notty'.
=back
@@ -937,7 +941,7 @@ running 'make test_notty'.
=item * PERL_TEST_Net_Ping
Setting this variable runs all the Net::Ping modules tests, otherwise
-some tests that interact with the outside world are skipped. See
+some tests that interact with the outside world are skipped. See
L<perl58delta>.
=item * PERL_TEST_NOVREXX
@@ -948,6 +952,13 @@ Setting this variable skips the vrexx.t tests for OS2::REXX.
This sets a variable in op/numconvert.t.
+=item * PERL_TEST_MEMORY
+
+Setting this variable includes the tests in F<t/bigmem/>. This should
+be set to the number of gigabytes of memory available for testing, eg.
+C<PERL_TEST_MEMORY=4> indicates that tests that require 4GiB of
+available memory can be run safely.
+
=back
See also the documentation for the Test and Test::Harness modules, for
@@ -961,7 +972,7 @@ To hack on the Perl guts, you'll need to read the following things:
=item * L<perlsource>
-An overview of the Perl source tree. This will help you find the files
+An overview of the Perl source tree. This will help you find the files
you're looking for.
=item * L<perlinterp>
@@ -972,12 +983,12 @@ Perl does what it does.
=item * L<perlhacktut>
This document walks through the creation of a small patch to Perl's C
-code. If you're just getting started with Perl core hacking, this will
+code. If you're just getting started with Perl core hacking, this will
help you understand how it works.
=item * L<perlhacktips>
-More details on hacking the Perl core. This document focuses on lower
+More details on hacking the Perl core. This document focuses on lower
level details such as how to write tests, compilation issues,
portability, debugging, etc.
@@ -986,7 +997,7 @@ If you plan on doing serious C hacking, make sure to read this.
=item * L<perlguts>
This is of paramount importance, since it's the documentation of what
-goes where in the Perl source. Read it over a couple of times and it
+goes where in the Perl source. Read it over a couple of times and it
might start to make sense - don't worry if it doesn't yet, because the
best way to study it is to read it in conjunction with poking at Perl
source, and we'll do that later on.
@@ -1000,7 +1011,7 @@ L<http://search.cpan.org/dist/illguts/>
A working knowledge of XSUB programming is incredibly useful for core
hacking; XSUBs use techniques drawn from the PP code, the portion of
-the guts that actually executes a Perl program. It's a lot gentler to
+the guts that actually executes a Perl program. It's a lot gentler to
learn those techniques from simple examples and explanation than from
the core itself.
@@ -1015,13 +1026,6 @@ This is a collection of words of wisdom for a Perl porter; some of it
is only useful to the pumpkin holder, but most of it applies to anyone
wanting to go about Perl development.
-=item * The perl5-porters FAQ
-
-This should be available from
-http://dev.perl.org/perl5/docs/p5p-faq.html . It contains hints on
-reading perl5-porters, information on how perl5-porters works and how
-Perl development in general works.
-
=back
=head1 CPAN TESTERS AND PERL SMOKERS
@@ -1034,9 +1038,9 @@ http://www.nntp.perl.org/group/perl.daily-build.reports/ )
automatically test Perl source releases on platforms with various
configurations.
-Both efforts welcome volunteers. In order to get involved in smoke
+Both efforts welcome volunteers. In order to get involved in smoke
testing of the perl itself visit
-L<http://search.cpan.org/dist/Test-Smoke/>. In order to start smoke
+L<http://search.cpan.org/dist/Test-Smoke/>. In order to start smoke
testing CPAN modules visit
L<http://search.cpan.org/dist/CPANPLUS-YACSmoke/> or
L<http://search.cpan.org/dist/minismokebox/> or
@@ -1060,14 +1064,14 @@ who knows, you may unearth a bug in the patch...
=item *
Do read the README associated with your operating system, e.g.
-README.aix on the IBM AIX OS. Don't hesitate to supply patches to that
+README.aix on the IBM AIX OS. Don't hesitate to supply patches to that
README if you find anything missing or changed over a new OS release.
=item *
Find an area of Perl that seems interesting to you, and see if you can
-work out how it works. Scan through the source, and step over it in the
-debugger. Play, poke, investigate, fiddle! You'll probably get to
+work out how it works. Scan through the source, and step over it in
+the debugger. Play, poke, investigate, fiddle! You'll probably get to
understand not just your chosen area but a much wider range of
F<perl>'s activity as well, and probably sooner than you'd think.
@@ -1076,7 +1080,7 @@ F<perl>'s activity as well, and probably sooner than you'd think.
=head2 "The Road goes ever on and on, down from the door where it began."
If you can do these things, you've started on the long road to Perl
-porting. Thanks for wanting to help make Perl better - and happy
+porting. Thanks for wanting to help make Perl better - and happy
hacking!
=head2 Metaphoric Quotations
@@ -1084,7 +1088,7 @@ hacking!
If you recognized the quote about the Road above, you're in luck.
Most software projects begin each file with a literal description of
-each file's purpose. Perl instead begins each with a literary allusion
+each file's purpose. Perl instead begins each with a literary allusion
to that file's purpose.
Like chapters in many books, all top-level Perl source files (along
@@ -1093,20 +1097,20 @@ inscription that alludes, indirectly and metaphorically, to the
material you're about to read.
Quotations are taken from writings of J.R.R. Tolkien pertaining to his
-Legendarium, almost always from I<The Lord of the Rings>. Chapters and
+Legendarium, almost always from I<The Lord of the Rings>. Chapters and
page numbers are given using the following editions:
=over 4
=item *
-I<The Hobbit>, by J.R.R. Tolkien. The hardcover, 70th-anniversary
+I<The Hobbit>, by J.R.R. Tolkien. The hardcover, 70th-anniversary
edition of 2007 was used, published in the UK by Harper Collins
Publishers and in the US by the Houghton Mifflin Company.
=item *
-I<The Lord of the Rings>, by J.R.R. Tolkien. The hardcover,
+I<The Lord of the Rings>, by J.R.R. Tolkien. The hardcover,
50th-anniversary edition of 2004 was used, published in the UK by
Harper Collins Publishers and in the US by the Houghton Mifflin
Company.
@@ -1115,7 +1119,7 @@ Company.
I<The Lays of Beleriand>, by J.R.R. Tolkien and published posthumously
by his son and literary executor, C.J.R. Tolkien, being the 3rd of the
-12 volumes in Christopher's mammoth I<History of Middle Earth>. Page
+12 volumes in Christopher's mammoth I<History of Middle Earth>. Page
numbers derive from the hardcover edition, first published in 1983 by
George Allen & Unwin; no page numbers changed for the special 3-volume
omnibus edition of 2002 or the various trade-paper editions, all again
@@ -1126,7 +1130,7 @@ now by Harper Collins or Houghton Mifflin.
Other JRRT books fair game for quotes would thus include I<The
Adventures of Tom Bombadil>, I<The Silmarillion>, I<Unfinished Tales>,
and I<The Tale of the Children of Hurin>, all but the first
-posthumously assembled by CJRT. But I<The Lord of the Rings> itself is
+posthumously assembled by CJRT. But I<The Lord of the Rings> itself is
perfectly fine and probably best to quote from, provided you can find a
suitable quote there.
@@ -1134,7 +1138,7 @@ So if you were to supply a new, complete, top-level source file to add
to Perl, you should conform to this peculiar practice by yourself
selecting an appropriate quotation from Tolkien, retaining the original
spelling and punctuation and using the same format the rest of the
-quotes are in. Indirect and oblique is just fine; remember, it's a
+quotes are in. Indirect and oblique is just fine; remember, it's a
metaphor, so being meta is, after all, what it's for.
=head1 AUTHOR
diff --git a/gnu/usr.bin/perl/pod/perlhacktips.pod b/gnu/usr.bin/perl/pod/perlhacktips.pod
index bb995f33005..324ed1a8425 100644
--- a/gnu/usr.bin/perl/pod/perlhacktips.pod
+++ b/gnu/usr.bin/perl/pod/perlhacktips.pod
@@ -277,11 +277,9 @@ This is transparent for the most part, but because the character sets
differ, you shouldn't use numeric (decimal, octal, nor hex) constants
to refer to characters. You can safely say 'A', but not 0x41. You can
safely say '\n', but not \012. If a character doesn't have a trivial
-input form, you can create a #define for it in both C<utfebcdic.h> and
-C<utf8.h>, so that it resolves to different values depending on the
-character set being used. (There are three different EBCDIC character
-sets defined in C<utfebcdic.h>, so it might be best to insert the
-#define three times in that file.)
+input form, you should add it to the list in
+F<regen/unicode_constants.pl>, and have Perl create #defines for you,
+based on the current platform.
Also, the range 'A' - 'Z' in ASCII is an unbroken sequence of 26 upper
case alphabetic characters. That is not true in EBCDIC. Nor for 'a' to
@@ -886,7 +884,8 @@ parse also C and C++.
Download the pmd-bin-X.Y.zip () from the SourceForge site, extract the
pmd-X.Y.jar from it, and then run that on source code thusly:
- java -cp pmd-X.Y.jar net.sourceforge.pmd.cpd.CPD --minimum-tokens 100 --files /some/where/src --language c > cpd.txt
+ java -cp pmd-X.Y.jar net.sourceforge.pmd.cpd.CPD \
+ --minimum-tokens 100 --files /some/where/src --language c > cpd.txt
You may run into memory limits, in which case you should use the -Xmx
option:
@@ -967,14 +966,16 @@ C<-std1> mode on.
=head1 MEMORY DEBUGGERS
-B<NOTE 1>: Running under memory debuggers such as Purify, valgrind, or
-Third Degree greatly slows down the execution: seconds become minutes,
-minutes become hours. For example as of Perl 5.8.1, the
+B<NOTE 1>: Running under older memory debuggers such as Purify,
+valgrind or Third Degree greatly slows down the execution: seconds
+become minutes, minutes become hours. For example as of Perl 5.8.1, the
ext/Encode/t/Unicode.t takes extraordinarily long to complete under
e.g. Purify, Third Degree, and valgrind. Under valgrind it takes more
than six hours, even on a snappy computer. The said test must be doing
something that is quite unfriendly for memory debuggers. If you don't
feel like waiting, that you can simply kill away the perl process.
+Roughly valgrind slows down execution by factor 10, AddressSanitizer by
+factor 2.
B<NOTE 2>: To minimize the number of memory leak false alarms (see
L</PERL_DESTRUCT_LEVEL> for more information), you have to set the
@@ -1137,12 +1138,12 @@ finally report any memory problems.
=head2 valgrind
-The excellent valgrind tool can be used to find out both memory leaks
-and illegal memory accesses. As of version 3.3.0, Valgrind only
-supports Linux on x86, x86-64 and PowerPC and Darwin (OS X) on x86 and
-x86-64). The special "test.valgrind" target can be used to run the
-tests under valgrind. Found errors and memory leaks are logged in
-files named F<testfile.valgrind>.
+The valgrind tool can be used to find out both memory leaks and illegal
+heap memory accesses. As of version 3.3.0, Valgrind only supports Linux
+on x86, x86-64 and PowerPC and Darwin (OS X) on x86 and x86-64). The
+special "test.valgrind" target can be used to run the tests under
+valgrind. Found errors and memory leaks are logged in files named
+F<testfile.valgrind>.
Valgrind also provides a cachegrind tool, invoked on perl as:
@@ -1157,6 +1158,52 @@ To get valgrind and for more information see
http://valgrind.org/
+=head2 AddressSanitizer
+
+AddressSanitizer is a clang extension, included in clang since v3.1. It
+checks illegal heap pointers, global pointers, stack pointers and use
+after free errors, and is fast enough that you can easily compile your
+debugging or optimized perl with it. It does not check memory leaks
+though. AddressSanitizer is available for linux, Mac OS X and soon on
+Windows.
+
+To build perl with AddressSanitizer, your Configure invocation should
+look like:
+
+ sh Configure -des -Dcc=clang \
+ -Accflags=-faddress-sanitizer -Aldflags=-faddress-sanitizer \
+ -Alddlflags=-shared\ -faddress-sanitizer
+
+where these arguments mean:
+
+=over 4
+
+=item * -Dcc=clang
+
+This should be replaced by the full path to your clang executable if it
+is not in your path.
+
+=item * -Accflags=-faddress-sanitizer
+
+Compile perl and extensions sources with AddressSanitizer.
+
+=item * -Aldflags=-faddress-sanitizer
+
+Link the perl executable with AddressSanitizer.
+
+=item * -Alddlflags=-shared\ -faddress-sanitizer
+
+Link dynamic extensions with AddressSanitizer. You must manually
+specify C<-shared> because using C<-Alddlflags=-shared> will prevent
+Configure from setting a default value for C<lddlflags>, which usually
+contains C<-shared> (at least on linux).
+
+=back
+
+See also
+L<http://code.google.com/p/address-sanitizer/wiki/AddressSanitizer>.
+
+
=head1 PROFILING
Depending on your platform there are various ways of profiling Perl.
@@ -1411,41 +1458,17 @@ L<perlclib>.
Under ithreads the optree is read only. If you want to enforce this, to
check for write accesses from buggy code, compile with
-C<-DPL_OP_SLAB_ALLOC> to enable the OP slab allocator and
C<-DPERL_DEBUG_READONLY_OPS> to enable code that allocates op memory
-via C<mmap>, and sets it read-only at run time. Any write access to an
-op results in a C<SIGBUS> and abort.
+via C<mmap>, and sets it read-only when it is attached to a subroutine. Any
+write access to an op results in a C<SIGBUS> and abort.
This code is intended for development only, and may not be portable
even to all Unix variants. Also, it is an 80% solution, in that it
-isn't able to make all ops read only. Specifically it
-
-=over
-
-=item * 1
-
-Only sets read-only on all slabs of ops at C<CHECK> time, hence ops
-allocated later via C<require> or C<eval> will be re-write
-
-=item * 2
+isn't able to make all ops read only. Specifically it does not apply to op
+slabs belonging to C<BEGIN> blocks.
-Turns an entire slab of ops read-write if the refcount of any op in the
-slab needs to be decreased.
-
-=item * 3
-
-Turns an entire slab of ops read-write if any op from the slab is
-freed.
-
-=back
-
-It's not possible to turn the slabs to read-only after an action
-requiring read-write access, as either can happen during op tree
-building time, so there may still be legitimate write access.
-
-However, as an 80% solution it is still effective, as currently it
-catches a write access during the generation of F<Config.pm>, which
-means that we can't yet build F<perl> with this enabled.
+However, as an 80% solution it is still effective, as it has caught bugs in
+the past.
=head2 The .i Targets
@@ -1453,7 +1476,8 @@ You can expand the macros in a F<foo.c> file by saying
make foo.i
-which will expand the macros using cpp. Don't be scared by the results.
+which will expand the macros using cpp. Don't be scared by the
+results.
=head1 AUTHOR
diff --git a/gnu/usr.bin/perl/pod/perlhacktut.pod b/gnu/usr.bin/perl/pod/perlhacktut.pod
index 33a9ef23e8d..fc0833649be 100644
--- a/gnu/usr.bin/perl/pod/perlhacktut.pod
+++ b/gnu/usr.bin/perl/pod/perlhacktut.pod
@@ -53,19 +53,19 @@ test whether we're still at the start of the string. So, here's where
C<pat> is set up:
STRLEN fromlen;
- register char *pat = SvPVx(*++MARK, fromlen);
- register char *patend = pat + fromlen;
- register I32 len;
+ char *pat = SvPVx(*++MARK, fromlen);
+ char *patend = pat + fromlen;
+ I32 len;
I32 datumtype;
SV *fromstr;
We'll have another string pointer in there:
STRLEN fromlen;
- register char *pat = SvPVx(*++MARK, fromlen);
- register char *patend = pat + fromlen;
+ char *pat = SvPVx(*++MARK, fromlen);
+ char *patend = pat + fromlen;
+ char *patcopy;
- register I32 len;
+ I32 len;
I32 datumtype;
SV *fromstr;
diff --git a/gnu/usr.bin/perl/pod/perlinterp.pod b/gnu/usr.bin/perl/pod/perlinterp.pod
index c7f21209de5..bb559ba02b9 100644
--- a/gnu/usr.bin/perl/pod/perlinterp.pod
+++ b/gnu/usr.bin/perl/pod/perlinterp.pod
@@ -363,7 +363,7 @@ Let's take an example of manipulating a PV, from C<sv_catpvn>, in
F<sv.c>
1 void
- 2 Perl_sv_catpvn(pTHX_ register SV *sv, register const char *ptr, register STRLEN len)
+ 2 Perl_sv_catpvn(pTHX_ SV *sv, const char *ptr, STRLEN len)
3 {
4 STRLEN tlen;
5 char *junk;
diff --git a/gnu/usr.bin/perl/pod/perlintro.pod b/gnu/usr.bin/perl/pod/perlintro.pod
index afce360a2ac..77465a123fe 100644
--- a/gnu/usr.bin/perl/pod/perlintro.pod
+++ b/gnu/usr.bin/perl/pod/perlintro.pod
@@ -64,13 +64,13 @@ worth writing about.
To run a Perl program from the Unix command line:
- perl progname.pl
+ perl progname.pl
Alternatively, put this as the first line of your script:
- #!/usr/bin/env perl
+ #!/usr/bin/env perl
-... and run the script as C</path/to/script.pl>. Of course, it'll need
+... and run the script as F</path/to/script.pl>. Of course, it'll need
to be executable first, so C<chmod 755 script.pl> (under Unix).
(This start line assumes you have the B<env> program. You can also put
@@ -84,9 +84,9 @@ Windows and Mac OS, read L<perlrun>.
Perl by default is very forgiving. In order to make it more robust
it is recommended to start every program with the following lines:
- #!/usr/bin/perl
- use strict;
- use warnings;
+ #!/usr/bin/perl
+ use strict;
+ use warnings;
The two additional lines request from perl to catch various common
problems in your code. They check different things so you need both. A
@@ -105,45 +105,45 @@ that kind.
Perl statements end in a semi-colon:
- print "Hello, world";
+ print "Hello, world";
Comments start with a hash symbol and run to the end of the line
- # This is a comment
+ # This is a comment
Whitespace is irrelevant:
- print
- "Hello, world"
- ;
+ print
+ "Hello, world"
+ ;
... except inside quoted strings:
- # this would print with a linebreak in the middle
- print "Hello
- world";
+ # this would print with a linebreak in the middle
+ print "Hello
+ world";
Double quotes or single quotes may be used around literal strings:
- print "Hello, world";
- print 'Hello, world';
+ print "Hello, world";
+ print 'Hello, world';
However, only double quotes "interpolate" variables and special
characters such as newlines (C<\n>):
- print "Hello, $name\n"; # works fine
- print 'Hello, $name\n'; # prints $name\n literally
+ print "Hello, $name\n"; # works fine
+ print 'Hello, $name\n'; # prints $name\n literally
Numbers don't need quotes around them:
- print 42;
+ print 42;
You can use parentheses for functions' arguments or omit them
according to your personal taste. They are only required
occasionally to clarify issues of precedence.
- print("Hello, world\n");
- print "Hello, world\n";
+ print("Hello, world\n");
+ print "Hello, world\n";
More detailed information about Perl syntax can be found in L<perlsyn>.
@@ -157,8 +157,8 @@ Perl has three main variable types: scalars, arrays, and hashes.
A scalar represents a single value:
- my $animal = "camel";
- my $answer = 42;
+ my $animal = "camel";
+ my $answer = 42;
Scalar values can be strings, integers or floating point numbers, and Perl
will automatically convert between them as required. There is no need
@@ -168,9 +168,9 @@ requirements of C<use strict;>.)
Scalar values can be used in various ways:
- print $animal;
- print "The animal is $animal\n";
- print "The square of $answer is ", $answer * $answer, "\n";
+ print $animal;
+ print "The animal is $animal\n";
+ print "The square of $answer is ", $answer * $answer, "\n";
There are a number of "magic" scalars with names that look like
punctuation or line noise. These special variables are used for all
@@ -179,32 +179,32 @@ need to know about for now is C<$_> which is the "default variable".
It's used as the default argument to a number of functions in Perl, and
it's set implicitly by certain looping constructs.
- print; # prints contents of $_ by default
+ print; # prints contents of $_ by default
=item Arrays
An array represents a list of values:
- my @animals = ("camel", "llama", "owl");
- my @numbers = (23, 42, 69);
- my @mixed = ("camel", 42, 1.23);
+ my @animals = ("camel", "llama", "owl");
+ my @numbers = (23, 42, 69);
+ my @mixed = ("camel", 42, 1.23);
Arrays are zero-indexed. Here's how you get at elements in an array:
- print $animals[0]; # prints "camel"
- print $animals[1]; # prints "llama"
+ print $animals[0]; # prints "camel"
+ print $animals[1]; # prints "llama"
The special variable C<$#array> tells you the index of the last element
of an array:
- print $mixed[$#mixed]; # last element, prints 1.23
+ print $mixed[$#mixed]; # last element, prints 1.23
You might be tempted to use C<$#array + 1> to tell you how many items there
are in an array. Don't bother. As it happens, using C<@array> where Perl
expects to find a scalar value ("in scalar context") will give you the number
of elements in the array:
- if (@animals < 5) { ... }
+ if (@animals < 5) { ... }
The elements we're getting from the array start with a C<$> because
we're getting just a single value out of the array; you ask for a scalar,
@@ -212,16 +212,16 @@ you get a scalar.
To get multiple values from an array:
- @animals[0,1]; # gives ("camel", "llama");
- @animals[0..2]; # gives ("camel", "llama", "owl");
- @animals[1..$#animals]; # gives all except the first element
+ @animals[0,1]; # gives ("camel", "llama");
+ @animals[0..2]; # gives ("camel", "llama", "owl");
+ @animals[1..$#animals]; # gives all except the first element
This is called an "array slice".
You can do various useful things to lists:
- my @sorted = sort @animals;
- my @backwards = reverse @numbers;
+ my @sorted = sort @animals;
+ my @backwards = reverse @numbers;
There are a couple of special arrays too, such as C<@ARGV> (the command
line arguments to your script) and C<@_> (the arguments passed to a
@@ -231,25 +231,25 @@ subroutine). These are documented in L<perlvar>.
A hash represents a set of key/value pairs:
- my %fruit_color = ("apple", "red", "banana", "yellow");
+ my %fruit_color = ("apple", "red", "banana", "yellow");
You can use whitespace and the C<< => >> operator to lay them out more
nicely:
- my %fruit_color = (
- apple => "red",
- banana => "yellow",
- );
+ my %fruit_color = (
+ apple => "red",
+ banana => "yellow",
+ );
To get at hash elements:
- $fruit_color{"apple"}; # gives "red"
+ $fruit_color{"apple"}; # gives "red"
You can get at lists of keys and values with C<keys()> and
C<values()>.
- my @fruits = keys %fruit_colors;
- my @colors = values %fruit_colors;
+ my @fruits = keys %fruit_colors;
+ my @colors = values %fruit_colors;
Hashes have no particular internal order, though you can sort the keys
and loop through them.
@@ -272,22 +272,22 @@ element, you can easily create lists and hashes within lists and
hashes. The following example shows a 2 level hash of hash
structure using anonymous hash references.
- my $variables = {
- scalar => {
- description => "single item",
- sigil => '$',
- },
- array => {
- description => "ordered list of items",
- sigil => '@',
- },
- hash => {
- description => "key/value pairs",
- sigil => '%',
- },
- };
-
- print "Scalars begin with a $variables->{'scalar'}->{'sigil'}\n";
+ my $variables = {
+ scalar => {
+ description => "single item",
+ sigil => '$',
+ },
+ array => {
+ description => "ordered list of items",
+ sigil => '@',
+ },
+ hash => {
+ description => "key/value pairs",
+ sigil => '%',
+ },
+ };
+
+ print "Scalars begin with a $variables->{'scalar'}->{'sigil'}\n";
Exhaustive information on the topic of references can be found in
L<perlreftut>, L<perllol>, L<perlref> and L<perldsc>.
@@ -296,11 +296,11 @@ L<perlreftut>, L<perllol>, L<perlref> and L<perldsc>.
Throughout the previous section all the examples have used the syntax:
- my $var = "value";
+ my $var = "value";
The C<my> is actually not required; you could just use:
- $var = "value";
+ $var = "value";
However, the above usage will create global variables throughout your
program, which is bad programming practice. C<my> creates lexically
@@ -308,15 +308,15 @@ scoped variables instead. The variables are scoped to the block
(i.e. a bunch of statements surrounded by curly-braces) in which they
are defined.
- my $x = "foo";
- my $some_condition = 1;
- if ($some_condition) {
- my $y = "bar";
- print $x; # prints "foo"
- print $y; # prints "bar"
- }
- print $x; # prints "foo"
- print $y; # prints nothing; $y has fallen out of scope
+ my $x = "foo";
+ my $some_condition = 1;
+ if ($some_condition) {
+ my $y = "bar";
+ print $x; # prints "foo"
+ print $y; # prints "bar"
+ }
+ print $x; # prints "foo"
+ print $y; # prints nothing; $y has fallen out of scope
Using C<my> in combination with a C<use strict;> at the top of
your Perl scripts means that the interpreter will pick up certain common
@@ -338,19 +338,19 @@ which are commonly used in conditional statements.
=item if
- if ( condition ) {
- ...
- } elsif ( other condition ) {
- ...
- } else {
- ...
- }
+ if ( condition ) {
+ ...
+ } elsif ( other condition ) {
+ ...
+ } else {
+ ...
+ }
There's also a negated version of it:
- unless ( condition ) {
- ...
- }
+ unless ( condition ) {
+ ...
+ }
This is provided as a more readable version of C<if (!I<condition>)>.
@@ -358,54 +358,54 @@ Note that the braces are required in Perl, even if you've only got one
line in the block. However, there is a clever way of making your one-line
conditional blocks more English like:
- # the traditional way
- if ($zippy) {
- print "Yow!";
- }
+ # the traditional way
+ if ($zippy) {
+ print "Yow!";
+ }
- # the Perlish post-condition way
- print "Yow!" if $zippy;
- print "We have no bananas" unless $bananas;
+ # the Perlish post-condition way
+ print "Yow!" if $zippy;
+ print "We have no bananas" unless $bananas;
=item while
- while ( condition ) {
- ...
- }
+ while ( condition ) {
+ ...
+ }
There's also a negated version, for the same reason we have C<unless>:
- until ( condition ) {
- ...
- }
+ until ( condition ) {
+ ...
+ }
You can also use C<while> in a post-condition:
- print "LA LA LA\n" while 1; # loops forever
+ print "LA LA LA\n" while 1; # loops forever
=item for
Exactly like C:
- for ($i = 0; $i <= $max; $i++) {
- ...
- }
+ for ($i = 0; $i <= $max; $i++) {
+ ...
+ }
The C style for loop is rarely needed in Perl since Perl provides
the more friendly list scanning C<foreach> loop.
=item foreach
- foreach (@array) {
- print "This element is $_\n";
- }
+ foreach (@array) {
+ print "This element is $_\n";
+ }
- print $list[$_] foreach 0 .. $max;
+ print $list[$_] foreach 0 .. $max;
- # you don't have to use the default $_ either...
- foreach my $key (keys %hash) {
- print "The value of $key is $hash{$key}\n";
- }
+ # you don't have to use the default $_ either...
+ foreach my $key (keys %hash) {
+ print "The value of $key is $hash{$key}\n";
+ }
The C<foreach> keyword is actually a synonym for the C<for>
keyword. See C<L<perlsyn/"Foreach Loops">>.
@@ -429,28 +429,28 @@ of the most common ones:
=item Arithmetic
- + addition
- - subtraction
- * multiplication
- / division
+ + addition
+ - subtraction
+ * multiplication
+ / division
=item Numeric comparison
- == equality
- != inequality
- < less than
- > greater than
- <= less than or equal
- >= greater than or equal
+ == equality
+ != inequality
+ < less than
+ > greater than
+ <= less than or equal
+ >= greater than or equal
=item String comparison
- eq equality
- ne inequality
- lt less than
- gt greater than
- le less than or equal
- ge greater than or equal
+ eq equality
+ ne inequality
+ lt less than
+ gt greater than
+ le less than or equal
+ ge greater than or equal
(Why do we have separate numeric and string comparisons? Because we don't
have special variable types, and Perl needs to know whether to sort
@@ -459,9 +459,9 @@ before 99).
=item Boolean logic
- && and
- || or
- ! not
+ && and
+ || or
+ ! not
(C<and>, C<or> and C<not> aren't just in the above table as descriptions
of the operators. They're also supported as operators in their own
@@ -471,18 +471,18 @@ detail.)
=item Miscellaneous
- = assignment
- . string concatenation
- x string multiplication
- .. range operator (creates a list of numbers)
+ = assignment
+ . string concatenation
+ x string multiplication
+ .. range operator (creates a list of numbers)
=back
Many operators can be combined with a C<=> as follows:
- $a += 1; # same as $a = $a + 1
- $a -= 1; # same as $a = $a - 1
- $a .= "\n"; # same as $a = $a . "\n";
+ $a += 1; # same as $a = $a + 1
+ $a -= 1; # same as $a = $a - 1
+ $a .= "\n"; # same as $a = $a . "\n";
=head2 Files and I/O
@@ -490,17 +490,17 @@ You can open a file for input or output using the C<open()> function.
It's documented in extravagant detail in L<perlfunc> and L<perlopentut>,
but in short:
- open(my $in, "<", "input.txt") or die "Can't open input.txt: $!";
- open(my $out, ">", "output.txt") or die "Can't open output.txt: $!";
- open(my $log, ">>", "my.log") or die "Can't open my.log: $!";
+ open(my $in, "<", "input.txt") or die "Can't open input.txt: $!";
+ open(my $out, ">", "output.txt") or die "Can't open output.txt: $!";
+ open(my $log, ">>", "my.log") or die "Can't open my.log: $!";
You can read from an open filehandle using the C<< <> >> operator. In
scalar context it reads a single line from the filehandle, and in list
context it reads the whole file in, assigning each line to an element of
the list:
- my $line = <$in>;
- my @lines = <$in>;
+ my $line = <$in>;
+ my @lines = <$in>;
Reading in the whole file at one time is called slurping. It can
be useful but it may be a memory hog. Most text file processing
@@ -508,22 +508,22 @@ can be done a line at a time with Perl's looping constructs.
The C<< <> >> operator is most often seen in a C<while> loop:
- while (<$in>) { # assigns each line in turn to $_
- print "Just read in this line: $_";
- }
+ while (<$in>) { # assigns each line in turn to $_
+ print "Just read in this line: $_";
+ }
We've already seen how to print to standard output using C<print()>.
However, C<print()> can also take an optional first argument specifying
which filehandle to print to:
- print STDERR "This is your final warning.\n";
- print $out $record;
- print $log $logmessage;
+ print STDERR "This is your final warning.\n";
+ print $out $record;
+ print $log $logmessage;
When you're done with your filehandles, you should C<close()> them
(though to be honest, Perl will clean up after you if you forget):
- close $in or die "$in: $!";
+ close $in or die "$in: $!";
=head2 Regular expressions
@@ -535,8 +535,8 @@ elsewhere. However, in short:
=item Simple matching
- if (/foo/) { ... } # true if $_ contains "foo"
- if ($a =~ /foo/) { ... } # true if $a contains "foo"
+ if (/foo/) { ... } # true if $_ contains "foo"
+ if ($a =~ /foo/) { ... } # true if $a contains "foo"
The C<//> matching operator is documented in L<perlop>. It operates on
C<$_> by default, or can be bound to another variable using the C<=~>
@@ -544,9 +544,10 @@ binding operator (also documented in L<perlop>).
=item Simple substitution
- s/foo/bar/; # replaces foo with bar in $_
- $a =~ s/foo/bar/; # replaces foo with bar in $a
- $a =~ s/foo/bar/g; # replaces ALL INSTANCES of foo with bar in $a
+ s/foo/bar/; # replaces foo with bar in $_
+ $a =~ s/foo/bar/; # replaces foo with bar in $a
+ $a =~ s/foo/bar/g; # replaces ALL INSTANCES of foo with bar
+ # in $a
The C<s///> substitution operator is documented in L<perlop>.
@@ -557,46 +558,49 @@ on just about anything you could dream of by using more complex regular
expressions. These are documented at great length in L<perlre>, but for
the meantime, here's a quick cheat sheet:
- . a single character
- \s a whitespace character (space, tab, newline, ...)
- \S non-whitespace character
- \d a digit (0-9)
- \D a non-digit
- \w a word character (a-z, A-Z, 0-9, _)
- \W a non-word character
- [aeiou] matches a single character in the given set
- [^aeiou] matches a single character outside the given set
- (foo|bar|baz) matches any of the alternatives specified
-
- ^ start of string
- $ end of string
+ . a single character
+ \s a whitespace character (space, tab, newline,
+ ...)
+ \S non-whitespace character
+ \d a digit (0-9)
+ \D a non-digit
+ \w a word character (a-z, A-Z, 0-9, _)
+ \W a non-word character
+ [aeiou] matches a single character in the given set
+ [^aeiou] matches a single character outside the given
+ set
+ (foo|bar|baz) matches any of the alternatives specified
+
+ ^ start of string
+ $ end of string
Quantifiers can be used to specify how many of the previous thing you
want to match on, where "thing" means either a literal character, one
of the metacharacters listed above, or a group of characters or
metacharacters in parentheses.
- * zero or more of the previous thing
- + one or more of the previous thing
- ? zero or one of the previous thing
- {3} matches exactly 3 of the previous thing
- {3,6} matches between 3 and 6 of the previous thing
- {3,} matches 3 or more of the previous thing
+ * zero or more of the previous thing
+ + one or more of the previous thing
+ ? zero or one of the previous thing
+ {3} matches exactly 3 of the previous thing
+ {3,6} matches between 3 and 6 of the previous thing
+ {3,} matches 3 or more of the previous thing
Some brief examples:
- /^\d+/ string starts with one or more digits
- /^$/ nothing in the string (start and end are adjacent)
- /(\d\s){3}/ a three digits, each followed by a whitespace
- character (eg "3 4 5 ")
- /(a.)+/ matches a string in which every odd-numbered letter
- is a (eg "abacadaf")
+ /^\d+/ string starts with one or more digits
+ /^$/ nothing in the string (start and end are
+ adjacent)
+ /(\d\s){3}/ three digits, each followed by a whitespace
+ character (eg "3 4 5 ")
+ /(a.)+/ matches a string in which every odd-numbered
+ letter is a (eg "abacadaf")
- # This loop reads from STDIN, and prints non-blank lines:
- while (<>) {
- next if /^$/;
- print;
- }
+ # This loop reads from STDIN, and prints non-blank lines:
+ while (<>) {
+ next if /^$/;
+ print;
+ }
=item Parentheses for capturing
@@ -604,12 +608,12 @@ As well as grouping, parentheses serve a second purpose. They can be
used to capture the results of parts of the regexp match for later use.
The results end up in C<$1>, C<$2> and so on.
- # a cheap and nasty way to break an email address up into parts
+ # a cheap and nasty way to break an email address up into parts
- if ($email =~ /([^@]+)@(.+)/) {
- print "Username is $1\n";
- print "Hostname is $2\n";
- }
+ if ($email =~ /([^@]+)@(.+)/) {
+ print "Username is $1\n";
+ print "Hostname is $2\n";
+ }
=item Other regexp features
@@ -623,15 +627,15 @@ L<perlretut>, and L<perlre>.
Writing subroutines is easy:
- sub logger {
- my $logmessage = shift;
- open my $logfile, ">>", "my.log" or die "Could not open my.log: $!";
- print $logfile $logmessage;
- }
+ sub logger {
+ my $logmessage = shift;
+ open my $logfile, ">>", "my.log" or die "Could not open my.log: $!";
+ print $logfile $logmessage;
+ }
Now we can use the subroutine just as any other built-in function:
- logger("We have a logger subroutine!");
+ logger("We have a logger subroutine!");
What's that C<shift>? Well, the arguments to a subroutine are available
to us as a special array called C<@_> (see L<perlvar> for more on that).
@@ -641,20 +645,20 @@ arguments and assigns it to C<$logmessage>.
We can manipulate C<@_> in other ways too:
- my ($logmessage, $priority) = @_; # common
- my $logmessage = $_[0]; # uncommon, and ugly
+ my ($logmessage, $priority) = @_; # common
+ my $logmessage = $_[0]; # uncommon, and ugly
Subroutines can also return values:
- sub square {
- my $num = shift;
- my $result = $num * $num;
- return $result;
- }
+ sub square {
+ my $num = shift;
+ my $result = $num * $num;
+ return $result;
+ }
Then use it like:
- $sq = square(8);
+ $sq = square(8);
For more information on writing subroutines, see L<perlsub>.
diff --git a/gnu/usr.bin/perl/pod/perliol.pod b/gnu/usr.bin/perl/pod/perliol.pod
index 767fabdd7ff..a1ac2f0f331 100644
--- a/gnu/usr.bin/perl/pod/perliol.pod
+++ b/gnu/usr.bin/perl/pod/perliol.pod
@@ -685,7 +685,7 @@ Returns 0 on end-of-file, 1 if not end-of-file, -1 on error.
Return error indicator. C<PerlIOBase_error()> is normally sufficient.
-Returns 1 if there is an error (usually when C<PERLIO_F_ERROR> is set,
+Returns 1 if there is an error (usually when C<PERLIO_F_ERROR> is set),
0 otherwise.
=item Clearerr
diff --git a/gnu/usr.bin/perl/pod/perllexwarn.pod b/gnu/usr.bin/perl/pod/perllexwarn.pod
index e63135915b9..c6494dbbb73 100644
--- a/gnu/usr.bin/perl/pod/perllexwarn.pod
+++ b/gnu/usr.bin/perl/pod/perllexwarn.pod
@@ -212,107 +212,111 @@ to be enabled/disabled in isolation.
The current hierarchy is:
- all -+
- |
- +- closure
- |
- +- deprecated
- |
- +- exiting
- |
- +- glob
- |
- +- io -----------+
- | |
- | +- closed
- | |
- | +- exec
- | |
- | +- layer
- | |
- | +- newline
- | |
- | +- pipe
- | |
- | +- unopened
- |
- +- imprecision
- |
- +- misc
- |
- +- numeric
- |
- +- once
- |
- +- overflow
- |
- +- pack
- |
- +- portable
- |
- +- recursion
- |
- +- redefine
- |
- +- regexp
- |
- +- severe -------+
- | |
- | +- debugging
- | |
- | +- inplace
- | |
- | +- internal
- | |
- | +- malloc
- |
- +- signal
- |
- +- substr
- |
- +- syntax -------+
- | |
- | +- ambiguous
- | |
- | +- bareword
- | |
- | +- digit
- | |
- | +- illegalproto
- | |
- | +- parenthesis
- | |
- | +- precedence
- | |
- | +- printf
- | |
- | +- prototype
- | |
- | +- qw
- | |
- | +- reserved
- | |
- | +- semicolon
- |
- +- taint
- |
- +- threads
- |
- +- uninitialized
- |
- +- unpack
- |
- +- untie
- |
- +- utf8----------+
- | |
- | +- surrogate
- | |
- | +- non_unicode
- | |
- | +- nonchar
- |
- +- void
+ all -+
+ |
+ +- closure
+ |
+ +- deprecated
+ |
+ +- exiting
+ |
+ +- experimental --+
+ | |
+ | +- experimental::lexical_subs
+ |
+ +- glob
+ |
+ +- imprecision
+ |
+ +- io ------------+
+ | |
+ | +- closed
+ | |
+ | +- exec
+ | |
+ | +- layer
+ | |
+ | +- newline
+ | |
+ | +- pipe
+ | |
+ | +- unopened
+ |
+ +- misc
+ |
+ +- numeric
+ |
+ +- once
+ |
+ +- overflow
+ |
+ +- pack
+ |
+ +- portable
+ |
+ +- recursion
+ |
+ +- redefine
+ |
+ +- regexp
+ |
+ +- severe --------+
+ | |
+ | +- debugging
+ | |
+ | +- inplace
+ | |
+ | +- internal
+ | |
+ | +- malloc
+ |
+ +- signal
+ |
+ +- substr
+ |
+ +- syntax --------+
+ | |
+ | +- ambiguous
+ | |
+ | +- bareword
+ | |
+ | +- digit
+ | |
+ | +- illegalproto
+ | |
+ | +- parenthesis
+ | |
+ | +- precedence
+ | |
+ | +- printf
+ | |
+ | +- prototype
+ | |
+ | +- qw
+ | |
+ | +- reserved
+ | |
+ | +- semicolon
+ |
+ +- taint
+ |
+ +- threads
+ |
+ +- uninitialized
+ |
+ +- unpack
+ |
+ +- untie
+ |
+ +- utf8 ----------+
+ | |
+ | +- non_unicode
+ | |
+ | +- nonchar
+ | |
+ | +- surrogate
+ |
+ +- void
Just like the "strict" pragma any of these categories can be combined
@@ -335,7 +339,6 @@ Note: In Perl 5.6.1, the lexical warnings category "deprecated" was a
sub-category of the "syntax" category. It is now a top-level category
in its own right.
-
=head2 Fatal Warnings
X<warning, fatal>
diff --git a/gnu/usr.bin/perl/pod/perlootut.pod b/gnu/usr.bin/perl/pod/perlootut.pod
index b2e3500b358..e494f2314e3 100644
--- a/gnu/usr.bin/perl/pod/perlootut.pod
+++ b/gnu/usr.bin/perl/pod/perlootut.pod
@@ -10,7 +10,13 @@ perlootut - Object-Oriented Programming in Perl Tutorial
=head1 DATE
-This document was created in February, 2011.
+This document was created in February, 2011, and the last major
+revision was in February, 2013.
+
+If you are reading this in the future then it's possible that the state
+of the art has changed. We recommend you start by reading the perlootut
+document in the latest stable release of Perl, rather than this
+version.
=head1 DESCRIPTION
@@ -218,8 +224,8 @@ Polymorphism is one of the key concepts of object-oriented design.
=head2 Inheritance
B<Inheritance> lets you create a specialized version of an existing
-class. Inheritance lets the new class to reuse the methods and
-attributes of another class.
+class. Inheritance lets the new class reuse the methods and attributes
+of another class.
For example, we could create an C<File::MP3> class which B<inherits>
from C<File>. An C<File::MP3> B<is-a> I<more specific> type of C<File>.
@@ -576,27 +582,30 @@ compiler. If you need to install your software on a system without a
compiler, or if having I<any> dependencies is a problem, then C<Moose>
may not be right for you.
-=head3 Mouse
+=head3 Moo
If you try C<Moose> and find that one of these issues is preventing you
-from using C<Moose>, we encourage you to consider L<Mouse> next.
-C<Mouse> implements a subset of C<Moose>'s functionality in a simpler
-package. For all features that it does implement, the end-user API is
-I<identical> to C<Moose>, meaning you can switch from C<Mouse> to
+from using C<Moose>, we encourage you to consider L<Moo> next. C<Moo>
+implements a subset of C<Moose>'s functionality in a simpler package.
+For most features that it does implement, the end-user API is
+I<identical> to C<Moose>, meaning you can switch from C<Moo> to
C<Moose> quite easily.
-C<Mouse> does not implement most of C<Moose>'s introspection API, so
-it's often faster when loading your modules. Additionally, all of its
-I<required> dependencies ship with the Perl core, and it can run
-without a compiler. If you do have a compiler, C<Mouse> will use it to
-compile some of its code for a speed boost.
+C<Moo> does not implement most of C<Moose>'s introspection API, so it's
+often faster when loading your modules. Additionally, none of its
+dependencies require XS, so it can be installed on machines without a
+compiler.
+
+One of C<Moo>'s most compelling features is its interoperability with
+C<Moose>. When someone tries to use C<Moose>'s introspection API on a
+C<Moo> class or role, it is transparently inflated into a C<Moose>
+class or role. This makes it easier to incorporate C<Moo>-using code
+into a C<Moose> code base and vice versa.
-Finally, it ships with a C<Mouse::Tiny> module that takes most of
-C<Mouse>'s features and bundles them up in a single module file. You
-can copy this module file into your application's library directory for
-easy bundling.
+For example, a C<Moose> class can subclass a C<Moo> class using
+C<extends> or consume a C<Moo> role using C<with>.
-The C<Moose> authors hope that one day C<Mouse> can be made obsolete by
+The C<Moose> authors hope that one day C<Moo> can be made obsolete by
improving C<Moose> enough, but for now it provides a worthwhile
alternative to C<Moose>.
@@ -683,8 +692,8 @@ Here's a brief recap of the options we covered:
=item * L<Moose>
C<Moose> is the maximal option. It has a lot of features, a big
-ecosystem, and a thriving user base. We also covered L<Mouse> briefly.
-C<Mouse> is C<Moose> lite, and a reasonable alternative when Moose
+ecosystem, and a thriving user base. We also covered L<Moo> briefly.
+C<Moo> is C<Moose> lite, and a reasonable alternative when Moose
doesn't work for your application.
=item * L<Class::Accessor>
diff --git a/gnu/usr.bin/perl/pod/perlpacktut.pod b/gnu/usr.bin/perl/pod/perlpacktut.pod
index 2ce56622b75..b0b5bdfd7f4 100644
--- a/gnu/usr.bin/perl/pod/perlpacktut.pod
+++ b/gnu/usr.bin/perl/pod/perlpacktut.pod
@@ -85,7 +85,7 @@ with ASCII character coding, it will print C<0123456789>.
Let's suppose you've got to read in a data file like this:
Date |Description | Income|Expenditure
- 01/24/2001 Ahmed's Camel Emporium 1147.99
+ 01/24/2001 Zed's Camel Emporium 1147.99
01/28/2001 Flea spray 24.99
01/29/2001 Camel rides to tourists 235.00
@@ -200,7 +200,7 @@ how much we've spent:
Oh, hmm. That didn't quite work. Let's see what happened:
- 01/24/2001 Ahmed's Camel Emporium 1147.99
+ 01/24/2001 Zed's Camel Emporium 1147.99
01/28/2001 Flea spray 24.99
01/29/2001 Camel rides to tourists 1235.00
03/23/2001Totals 1235.001172.98
@@ -225,7 +225,7 @@ additional spaces to line up our fields, like this:
but they don't translate to spaces in the output.) Here's what we got
this time:
- 01/24/2001 Ahmed's Camel Emporium 1147.99
+ 01/24/2001 Zed's Camel Emporium 1147.99
01/28/2001 Flea spray 24.99
01/29/2001 Camel rides to tourists 1235.00
03/23/2001 Totals 1235.00 1172.98
diff --git a/gnu/usr.bin/perl/pod/perlpodstyle.pod b/gnu/usr.bin/perl/pod/perlpodstyle.pod
index 850f38dc8d9..6c4cfa04afc 100644
--- a/gnu/usr.bin/perl/pod/perlpodstyle.pod
+++ b/gnu/usr.bin/perl/pod/perlpodstyle.pod
@@ -5,70 +5,37 @@ perlpodstyle - Perl POD style guide
=head1 DESCRIPTION
These are general guidelines for how to write POD documentation for Perl
-scripts and modules, based on general guidelines for writing good Unix man
+scripts and modules, based on general guidelines for writing good UNIX man
pages. All of these guidelines are, of course, optional, but following
them will make your documentation more consistent with other documentation
on the system.
-Here are some simple guidelines for markup; see L<perlpod> for details.
-
-=over
-
-=item bold (BE<lt>E<gt>)
-
-B<NOTE: Use extremely rarely.> Do I<not> use bold for emphasis; that's
-what italics are for. Restrict bold for notices like B<NOTE:> and
-B<WARNING:>. However, program arguments and options--but I<not> their
-names!--are written in bold (using BE<lt>E<gt>) to distinguish the B<-f>
-command-line option from the C<-f> filetest operator.
-
-=item italic (IE<lt>E<gt>)
-
-Use italic to emphasize text, like I<this>. Function names are
+The name of the program being documented is conventionally written in bold
+(using BE<lt>E<gt>) wherever it occurs, as are all program options.
+Arguments should be written in italics (IE<lt>E<gt>). Function names are
traditionally written in italics; if you write a function as function(),
-Pod::Man will take care of this for you. Names of programs, including the
-name of the program being documented, are conventionally written in italics
-(using IE<lt>E<gt>) wherever they occur in normal roman text.
-
-=item code (CE<lt>E<gt>)
-
-Literal code should be in CE<lt>E<gt>. However metasyntactic placeholders
-should furthermore be nested in "italics" (actually, oblique) like
-CE<lt>IE<lt>E<gt>E<gt>. That way
-CE<lt>accept(IE<lt>NEWSOCKETE<gt>, E<lt>GENERICSOCKETE<gt>)E<gt>
-renders as C<accept(I<NEWSOCKET>, I<GENERICSOCKET>)>.
-
-=item files (FE<lt>E<gt>)
-
-Filenames, whether absolute or relative, are specified with the FE<lt>E<gt>
-markup. This will render as italics, but has other semantic connotations.
-
-=back
-
-References to other man pages should be in the form "manpage(section)" or
-"C<LE<lt>manpage(section)E<gt>>", and Pod::Man will automatically format
-those appropriately. Both will render as I<manpage>(section). The second
-form, with LE<lt>E<gt>, is used to request that a POD formatter make a link
-to the man page if possible. As an exception, one normally omits the
-section when referring to module documentation because not all systems
-place it in section 3, although that is the default. You may use
-C<LE<lt>Module::NameE<gt>> for module references instead, but this is
-optional because the translators are supposed to recognize module
-references in pod, just as they do variable references like $foo and such.
+Pod::Man will take care of this for you. Literal code or commands should
+be in CE<lt>E<gt>. References to other man pages should be in the form
+C<manpage(section)> or C<LE<lt>manpage(section)E<gt>>, and Pod::Man will
+automatically format those appropriately. The second form, with
+LE<lt>E<gt>, is used to request that a POD formatter make a link to the
+man page if possible. As an exception, one normally omits the section
+when referring to module documentation since it's not clear what section
+module documentation will be in; use C<LE<lt>Module::NameE<gt>> for module
+references instead.
References to other programs or functions are normally in the form of man
page references so that cross-referencing tools can provide the user with
links and the like. It's possible to overdo this, though, so be careful not
to clutter your documentation with too much markup. References to other
programs that are not given as man page references should be enclosed in
-italics via IE<lt>E<gt>.
+BE<lt>E<gt>.
-Major headers should be set out using a C<=head1> directive, and are
-historically written in the rather startling ALL UPPER CASE format; this is
-not mandatory, but it's strongly recommended so that sections have
-consistent naming across different software packages. The translators are
-supposed to translate all caps into small caps. Minor headers may be
-included using C<=head2>, and are typically in mixed case.
+The major headers should be set out using a C<=head1> directive, and are
+historically written in the rather startling ALL UPPER CASE format; this
+is not mandatory, but it's strongly recommended so that sections have
+consistent naming across different software packages. Minor headers may
+be included using C<=head2>, and are typically in mixed case.
The standard sections of a manual page are:
@@ -87,7 +54,7 @@ function documented by this POD page should be listed, separated by a
comma and a space. For a Perl module, just give the module name. A
single dash, and only a single dash, should separate the list of programs
or functions from the description. Do not use any markup such as
-CE<lt>E<gt> or IE<lt>E<gt> anywhere in this line. Functions should not be
+CE<lt>E<gt> or BE<lt>E<gt> anywhere in this line. Functions should not be
qualified with C<()> or the like. The description should ideally fit on a
single line, even if a man program replaces the dash with a few tabs.
@@ -229,7 +196,7 @@ Miscellaneous commentary.
=item AUTHOR
Who wrote it (use AUTHORS for multiple people). It's a good idea to
-include your current email address (or some email address to which bug
+include your current e-mail address (or some e-mail address to which bug
reports should be sent) or some other contact information so that users
have a way of contacting you. Remember that program documentation tends
to roam the wild for far longer than you expect and pick a contact method
@@ -294,22 +261,12 @@ handlers. These headings are primarily useful when documenting parts of a
C library.
Finally, as a general note, try not to use an excessive amount of markup.
-As documented here and in L<Pod::Man>, you can safely leave Perl variables,
-module names, function names, man page references, and the like unadorned
-by markup, and the POD translators will figure it all out for you. This
-makes it much easier to later edit the documentation. Note that many
-existing translators will do the wrong thing with email addresses when
-wrapped in LE<lt>E<gt>, so don't do that.
-
-You can check whether your documentation looks right by running
-
- % pod2text -o something.pod | less
-
-If you have I<groff> installed, you can get an even better look this way:
-
- % pod2man something.pod | groff -Tps -mandoc > something.ps
-
-Now view the resulting Postscript file to see whether everything checks out.
+As documented here and in L<Pod::Man>, you can safely leave Perl
+variables, function names, man page references, and the like unadorned by
+markup and the POD translators will figure it out for you. This makes it
+much easier to later edit the documentation. Note that many existing
+translators will do the wrong thing with e-mail addresses when wrapped in
+LE<lt>E<gt>, so don't do that.
=head1 SEE ALSO
diff --git a/gnu/usr.bin/perl/pod/perlpolicy.pod b/gnu/usr.bin/perl/pod/perlpolicy.pod
index 7e713b4920a..ed02fca8852 100644
--- a/gnu/usr.bin/perl/pod/perlpolicy.pod
+++ b/gnu/usr.bin/perl/pod/perlpolicy.pod
@@ -207,11 +207,15 @@ an experimental feature useful and want to help shape its future.
If something in the Perl core is marked as B<deprecated>, we may remove it
from the core in the next stable release series, though we may not. As of
Perl 5.12, deprecated features and modules warn the user as they're used.
-If you use a deprecated feature and believe that its removal from the Perl
-core would be a mistake, please contact the perl5-porters mailinglist and
-plead your case. We don't deprecate things without a good reason, but
-sometimes there's a counterargument we haven't considered. Historically,
-we did not distinguish between "deprecated" and "discouraged" features.
+When a module is deprecated, it will also be made available on CPAN.
+Installing it from CPAN will silence deprecation warnings for that module.
+
+If you use a deprecated feature or module and believe that its removal from
+the Perl core would be a mistake, please contact the perl5-porters
+mailinglist and plead your case. We don't deprecate things without a good
+reason, but sometimes there's a counterargument we haven't considered.
+Historically, we did not distinguish between "deprecated" and "discouraged"
+features.
=item discouraged
@@ -225,7 +229,8 @@ significant improvement to the Perl core.
Once a feature, construct or module has been marked as deprecated for a
stable release cycle, we may remove it from the Perl core. Unsurprisingly,
-we say we've B<removed> these things.
+we say we've B<removed> these things. When a module is removed, it will
+no longer ship with Perl, but will continue to be available on CPAN.
=back
@@ -306,12 +311,12 @@ talk to a pumpking.)
=head2 Getting changes into a maint branch
Historically, only the pumpking cherry-picked changes from bleadperl
-into maintperl. This has...scaling problems. At the same time,
+into maintperl. This has scaling problems. At the same time,
maintenance branches of stable versions of Perl need to be treated with
-great care. To that end, we're going to try out a new process for
-maint-5.12.
+great care. To that end, as of Perl 5.12, we have a new process for
+maint branches.
-Any committer may cherry-pick any commit from blead to maint-5.12 if
+Any committer may cherry-pick any commit from blead to a maint branch if
they send mail to perl5-porters announcing their intent to cherry-pick
a specific commit along with a rationale for doing so and at least two
other committers respond to the list giving their assent. (This policy
diff --git a/gnu/usr.bin/perl/pod/perlport.pod b/gnu/usr.bin/perl/pod/perlport.pod
index 867b66e2915..cdde52db3cb 100644
--- a/gnu/usr.bin/perl/pod/perlport.pod
+++ b/gnu/usr.bin/perl/pod/perlport.pod
@@ -212,7 +212,7 @@ them in big-endian mode. To avoid this problem in network (socket)
connections use the C<pack> and C<unpack> formats C<n> and C<N>, the
"network" orders. These are guaranteed to be portable.
-As of perl 5.9.2, you can also use the C<E<gt>> and C<E<lt>> modifiers
+As of perl 5.10.0, you can also use the C<E<gt>> and C<E<lt>> modifiers
to force big- or little-endian byte-order. This is useful if you want
to store signed integers or 64-bit integers, for example.
@@ -236,9 +236,9 @@ transferring or storing raw binary numbers.
One can circumnavigate both these problems in two ways. Either
transfer and store numbers always in text format, instead of raw
-binary, or else consider using modules like Data::Dumper (included in
-the standard distribution as of Perl 5.005) and Storable (included as
-of perl 5.8). Keeping all data as text significantly simplifies matters.
+binary, or else consider using modules like Data::Dumper and Storable
+(included as of perl 5.8). Keeping all data as text significantly
+simplifies matters.
The v-strings are portable only up to v2147483647 (0x7FFFFFFF), that's
how far EBCDIC, or more precisely UTF-EBCDIC will go.
@@ -679,9 +679,8 @@ ISO 8859-1 bytes beyond 0x7f into your strings might cause trouble
later. If the bytes are native 8-bit bytes, you can use the C<bytes>
pragma. If the bytes are in a string (regular expression being a
curious string), you can often also use the C<\xHH> notation instead
-of embedding the bytes as-is. (If you want to write your code in UTF-8,
-you can use the C<utf8>.) The C<bytes> and C<utf8> pragmata are
-available since Perl 5.6.0.
+of embedding the bytes as-is. If you want to write your code in UTF-8,
+you can use the C<utf8>.
=head2 System Resources
@@ -777,8 +776,8 @@ Testing results: L<http://www.cpantesters.org/>
=head1 PLATFORMS
-As of version 5.002, Perl is built with a C<$^O> variable that
-indicates the operating system it was built on. This was implemented
+Perl is built with a C<$^O> variable that indicates the operating
+system it was built on. This was implemented
to help speed up code that would otherwise have to C<use Config>
and use the value of C<$Config{osname}>. Of course, to get more
detailed information about the system, looking into C<%Config> is
@@ -1196,12 +1195,12 @@ trailing apostrophe. Although an extended file name is limited
to 255 characters, a path name is still limited to 256
characters.
-The value of C<$^O> on VOS is "VOS". To determine the
+The value of C<$^O> on VOS is "vos". To determine the
architecture that you are running on without resorting to loading
all of C<%Config> you can examine the content of the @INC array
like so:
- if ($^O =~ /VOS/) {
+ if ($^O =~ /vos/) {
print "I'm on a Stratus box!\n";
} else {
print "I'm not on a Stratus box!\n";
@@ -1220,14 +1219,18 @@ F<README.vos> (installed as L<perlvos>)
The VOS mailing list.
-There is no specific mailing list for Perl on VOS. You can post
-comments to the comp.sys.stratus newsgroup, or use the contact
-information located in the distribution files on the Stratus
-Anonymous FTP site.
+There is no specific mailing list for Perl on VOS. You can contact
+the Stratus Technologies Customer Assistance Center (CAC) for your
+region, or you can use the contact information located in the
+distribution files on the Stratus Anonymous FTP site.
=item *
-VOS Perl on the web at L<http://ftp.stratus.com/pub/vos/posix/posix.html>
+Stratus Technologies on the web at L<http://www.stratus.com>
+
+=item *
+
+VOS Open-Source Software on the web at L<http://ftp.stratus.com/pub/vos/vos.html>
=back
@@ -1241,7 +1244,7 @@ systems). On the mainframe perl currently works under the "Unix system
services for OS/390" (formerly known as OpenEdition), VM/ESA OpenEdition, or
the BS200 POSIX-BC system (BS2000 is supported in perl 5.6 and greater).
See L<perlos390> for details. Note that for OS/400 there is also a port of
-Perl 5.8.1/5.9.0 or later to the PASE which is ASCII-based (as opposed to
+Perl 5.8.1/5.10.0 or later to the PASE which is ASCII-based (as opposed to
ILE which is EBCDIC-based), see L<perlos400>.
As of R2.5 of USS for OS/390 and Version 2.3 of VM/ESA these Unix
@@ -1280,7 +1283,7 @@ and C<|>, not to mention dealing with socket interfaces to ASCII computers
Fortunately, most web servers for the mainframe will correctly
translate the C<\n> in the following statement to its ASCII equivalent
-(C<\r> is the same under both Unix and OS/390 & VM/ESA):
+(C<\r> is the same under both Unix and OS/390):
print "Content-type: text/html\r\n\r\n";
@@ -1291,7 +1294,6 @@ The values of C<$^O> on some of these platforms includes:
OS/390 os390 os390
OS400 os400 os400
POSIX-BC posix-bc BS2000-posix-bc
- VM/ESA vmesa vmesa
Some simple tricks for determining if you are running on an EBCDIC
platform could include any of the following (perhaps all):
@@ -1313,8 +1315,7 @@ Also see:
=item *
-L<perlos390>, F<README.os390>, F<perlbs2000>, F<README.vmesa>,
-L<perlebcdic>.
+L<perlos390>, F<README.os390>, F<perlbs2000>, L<perlebcdic>.
=item *
@@ -1436,7 +1437,7 @@ in C<$^O> is "riscos" (because we don't like shouting).
=head2 Other perls
Perl has been ported to many platforms that do not fit into any of
-the categories listed above. Some, such as AmigaOS, BeOS, HP MPE/iX,
+the categories listed above. Some, such as AmigaOS,
QNX, Plan 9, and VOS, have been well-integrated into the standard
Perl source code kit. You may need to see the F<ports/> directory
on CPAN for information, and possibly binaries, for the likes of:
@@ -1450,8 +1451,6 @@ in the "OTHER" category include:
OS $^O $Config{'archname'}
------------------------------------------
Amiga DOS amigaos m68k-amigos
- BeOS beos
- MPE/iX mpeix PA-RISC1.1
See also:
@@ -1463,15 +1462,6 @@ Amiga, F<README.amiga> (installed as L<perlamiga>).
=item *
-Be OS, F<README.beos>
-
-=item *
-
-HP 300 MPE/iX, F<README.mpeix> and Mark Bixby's web page
-L<http://www.bixby.org/mark/porting.html>
-
-=item *
-
A free perl5-based PERL.NLM for Novell Netware is available in
precompiled binary and source code form from L<http://www.novell.com/>
as well as from CPAN.
@@ -1586,7 +1576,7 @@ A little funky, because VOS's notion of ownership is a little funky (VOS).
=item chroot
-Not implemented. (Win32, VMS, S<Plan 9>, S<RISC OS>, VOS, VM/ESA)
+Not implemented. (Win32, VMS, S<Plan 9>, S<RISC OS>, VOS)
=item crypt
@@ -1611,8 +1601,6 @@ Invokes VMS debugger. (VMS)
=item exec
-Implemented via Spawn. (VM/ESA)
-
Does not automatically flush output handles on some platforms.
(SunOS, Solaris, HP-UX)
@@ -1651,7 +1639,7 @@ Not implemented (VMS, S<RISC OS>, VOS).
=item fork
-Not implemented. (AmigaOS, S<RISC OS>, VM/ESA, VMS)
+Not implemented. (AmigaOS, S<RISC OS>, VMS)
Emulated using multiple interpreters. See L<perlfork>. (Win32)
@@ -1672,7 +1660,7 @@ Not implemented. (Win32, S<RISC OS>)
=item getpriority
-Not implemented. (Win32, VMS, S<RISC OS>, VOS, VM/ESA)
+Not implemented. (Win32, VMS, S<RISC OS>, VOS)
=item getpwnam
@@ -1708,11 +1696,11 @@ Not implemented. (Win32, S<Plan 9>)
=item getpwent
-Not implemented. (Win32, VM/ESA)
+Not implemented. (Win32)
=item getgrent
-Not implemented. (Win32, VMS, VM/ESA)
+Not implemented. (Win32, VMS)
=item gethostbyname
@@ -1753,11 +1741,11 @@ Not implemented. (S<Plan 9>, Win32, S<RISC OS>)
=item endpwent
-Not implemented. (MPE/iX, VM/ESA, Win32)
+Not implemented. (Win32)
=item endgrent
-Not implemented. (MPE/iX, S<RISC OS>, VM/ESA, VMS, Win32)
+Not implemented. (S<RISC OS>, VMS, Win32)
=item endhostent
@@ -1824,7 +1812,7 @@ numbers. (VMS)
=item link
-Not implemented. (MPE/iX, S<RISC OS>, VOS)
+Not implemented. (S<RISC OS>, VOS)
Link count not updated because hard links are not quite that hard
(They are sort of half-way between hard and soft links). (AmigaOS)
@@ -1898,7 +1886,7 @@ Not implemented. (Win32, VMS, S<RISC OS>)
=item setgrent
-Not implemented. (MPE/iX, VMS, Win32, S<RISC OS>)
+Not implemented. (VMS, Win32, S<RISC OS>)
=item setpgrp
@@ -1910,7 +1898,7 @@ Not implemented. (Win32, VMS, S<RISC OS>, VOS)
=item setpwent
-Not implemented. (MPE/iX, Win32, S<RISC OS>)
+Not implemented. (Win32, S<RISC OS>)
=item setsockopt
@@ -1924,7 +1912,13 @@ Not implemented. (S<Plan 9>)
=item shmwrite
-Not implemented. (Win32, VMS, S<RISC OS>, VOS)
+Not implemented. (Win32, VMS, S<RISC OS>)
+
+=item sleep
+
+Emulated using synchronization functions such that it can be
+interrupted by alarm(), and limited to a maximum of 4294967 seconds,
+approximately 49 days. (Win32)
=item sockatmark
@@ -1933,9 +1927,7 @@ be implemented even in Unix platforms.
=item socketpair
-Not implemented. (S<RISC OS>, VM/ESA)
-
-Available on OpenVOS Release 17.0 or later. (VOS)
+Not implemented. (S<RISC OS>)
Available on 64 bit OpenVMS 8.2 and later. (VMS)
@@ -1976,14 +1968,14 @@ syntax if it is intended to resolve to a valid path.
=item syscall
-Not implemented. (Win32, VMS, S<RISC OS>, VOS, VM/ESA)
+Not implemented. (Win32, VMS, S<RISC OS>, VOS)
=item sysopen
The traditional "0", "1", and "2" MODEs are implemented with different
numeric values on some systems. The flags exported by C<Fcntl>
(O_RDONLY, O_WRONLY, O_RDWR) should work everywhere though. (S<Mac
-OS>, OS/390, VM/ESA)
+OS>, OS/390)
=item system
@@ -2038,14 +2030,14 @@ should not be held open elsewhere. (Win32)
=item umask
-Returns undef where unavailable, as of version 5.005.
+Returns undef where unavailable.
C<umask> works but the correct permissions are set only when the file
is finally closed. (AmigaOS)
=item utime
-Only the modification time is updated. (S<BeOS>, VMS, S<RISC OS>)
+Only the modification time is updated. (VMS, S<RISC OS>)
May not behave as expected. Behavior depends on the C runtime
library's implementation of utime(), and the filesystem being
@@ -2127,10 +2119,14 @@ at L<http://www.cpan.org/src>
=item Dragonfly BSD
+=item Midnight BSD
+
=item QNX Neutrino RTOS (6.5.0)
=item MirOS BSD
+=item Stratus OpenVOS (17.0 or later)
+
Caveats:
=over
@@ -2221,7 +2217,7 @@ available at L<http://www.cpan.org/src/>
UNICOS
UNICOS/mk
UTS
- VOS
+ VOS / OpenVOS
Win95/98/ME/2K/XP 2)
WinCE
z/OS (formerly OS/390)
@@ -2312,14 +2308,13 @@ L<http://www.cpan.org/ports/index.html> for binary distributions.
=head1 SEE ALSO
-L<perlaix>, L<perlamiga>, L<perlbeos>, L<perlbs2000>,
-L<perlce>, L<perlcygwin>, L<perldgux>, L<perldos>, L<perlepoc>,
+L<perlaix>, L<perlamiga>, L<perlbs2000>,
+L<perlce>, L<perlcygwin>, L<perldgux>, L<perldos>,
L<perlebcdic>, L<perlfreebsd>, L<perlhurd>, L<perlhpux>, L<perlirix>,
-L<perlmacos>, L<perlmacosx>, L<perlmpeix>,
+L<perlmacos>, L<perlmacosx>,
L<perlnetware>, L<perlos2>, L<perlos390>, L<perlos400>,
L<perlplan9>, L<perlqnx>, L<perlsolaris>, L<perltru64>,
-L<perlunicode>, L<perlvmesa>, L<perlvms>, L<perlvos>,
-L<perlwin32>, and L<Win32>.
+L<perlunicode>, L<perlvms>, L<perlvos>, L<perlwin32>, and L<Win32>.
=head1 AUTHORS / CONTRIBUTORS
diff --git a/gnu/usr.bin/perl/pod/perlpragma.pod b/gnu/usr.bin/perl/pod/perlpragma.pod
index 604387d9f97..78dacbf1741 100644
--- a/gnu/usr.bin/perl/pod/perlpragma.pod
+++ b/gnu/usr.bin/perl/pod/perlpragma.pod
@@ -16,22 +16,22 @@ mathematical operators, and would like to provide your own pragma that
functions much like C<use integer;> You'd like this code
use MyMaths;
-
+
my $l = MyMaths->new(1.2);
my $r = MyMaths->new(3.4);
-
+
print "A: ", $l + $r, "\n";
-
+
use myint;
print "B: ", $l + $r, "\n";
-
+
{
no myint;
print "C: ", $l + $r, "\n";
}
-
+
print "D: ", $l + $r, "\n";
-
+
no myint;
print "E: ", $l + $r, "\n";
@@ -63,12 +63,12 @@ this:
$$l + $$r;
}
};
-
+
sub new {
my ($class, $value) = @_;
bless \$value, $class;
}
-
+
1;
Note how we load the user pragma C<myint> with an empty list C<()> to
@@ -77,24 +77,24 @@ prevent its C<import> being called.
The interaction with the Perl compilation happens inside package C<myint>:
package myint;
-
+
use strict;
use warnings;
-
+
sub import {
$^H{"myint/in_effect"} = 1;
}
-
+
sub unimport {
$^H{"myint/in_effect"} = 0;
}
-
+
sub in_effect {
my $level = shift // 0;
my $hinthash = (caller($level))[10];
return $hinthash->{"myint/in_effect"};
}
-
+
1;
As pragmata are implemented as modules, like any other module, C<use myint;>
diff --git a/gnu/usr.bin/perl/pod/perlreapi.pod b/gnu/usr.bin/perl/pod/perlreapi.pod
index 5e456208684..eaaa1790d56 100644
--- a/gnu/usr.bin/perl/pod/perlreapi.pod
+++ b/gnu/usr.bin/perl/pod/perlreapi.pod
@@ -1,39 +1,57 @@
=head1 NAME
-perlreapi - perl regular expression plugin interface
+perlreapi - Perl regular expression plugin interface
=head1 DESCRIPTION
-As of Perl 5.9.5 there is a new interface for plugging and using other
-regular expression engines than the default one.
+As of Perl 5.9.5 there is a new interface for plugging and using
+regular expression engines other than the default one.
Each engine is supposed to provide access to a constant structure of the
following format:
typedef struct regexp_engine {
- REGEXP* (*comp) (pTHX_ const SV * const pattern, const U32 flags);
- I32 (*exec) (pTHX_ REGEXP * const rx, char* stringarg, char* strend,
- char* strbeg, I32 minend, SV* screamer,
+ REGEXP* (*comp) (pTHX_
+ const SV * const pattern, const U32 flags);
+ I32 (*exec) (pTHX_
+ REGEXP * const rx,
+ char* stringarg,
+ char* strend, char* strbeg,
+ I32 minend, SV* screamer,
void* data, U32 flags);
- char* (*intuit) (pTHX_ REGEXP * const rx, SV *sv, char *strpos,
- char *strend, U32 flags,
+ char* (*intuit) (pTHX_
+ REGEXP * const rx, SV *sv,
+ char *strpos, char *strend, U32 flags,
struct re_scream_pos_data_s *data);
SV* (*checkstr) (pTHX_ REGEXP * const rx);
void (*free) (pTHX_ REGEXP * const rx);
- void (*numbered_buff_FETCH) (pTHX_ REGEXP * const rx, const I32 paren,
- SV * const sv);
- void (*numbered_buff_STORE) (pTHX_ REGEXP * const rx, const I32 paren,
- SV const * const value);
- I32 (*numbered_buff_LENGTH) (pTHX_ REGEXP * const rx, const SV * const sv,
- const I32 paren);
- SV* (*named_buff) (pTHX_ REGEXP * const rx, SV * const key,
- SV * const value, U32 flags);
- SV* (*named_buff_iter) (pTHX_ REGEXP * const rx, const SV * const lastkey,
+ void (*numbered_buff_FETCH) (pTHX_
+ REGEXP * const rx,
+ const I32 paren,
+ SV * const sv);
+ void (*numbered_buff_STORE) (pTHX_
+ REGEXP * const rx,
+ const I32 paren,
+ SV const * const value);
+ I32 (*numbered_buff_LENGTH) (pTHX_
+ REGEXP * const rx,
+ const SV * const sv,
+ const I32 paren);
+ SV* (*named_buff) (pTHX_
+ REGEXP * const rx,
+ SV * const key,
+ SV * const value,
+ U32 flags);
+ SV* (*named_buff_iter) (pTHX_
+ REGEXP * const rx,
+ const SV * const lastkey,
const U32 flags);
SV* (*qr_package)(pTHX_ REGEXP * const rx);
#ifdef USE_ITHREADS
void* (*dupe) (pTHX_ REGEXP * const rx, CLONE_PARAMS *param);
#endif
+ REGEXP* (*op_comp) (...);
+
When a regexp is compiled, its C<engine> field is then set to point at
the appropriate structure, so that when it needs to be used Perl can find
@@ -41,11 +59,11 @@ the right routines to do so.
In order to install a new regexp handler, C<$^H{regcomp}> is set
to an integer which (when casted appropriately) resolves to one of these
-structures. When compiling, the C<comp> method is executed, and the
-resulting regexp structure's engine field is expected to point back at
+structures. When compiling, the C<comp> method is executed, and the
+resulting C<regexp> structure's engine field is expected to point back at
the same structure.
-The pTHX_ symbol in the definition is a macro used by perl under threading
+The pTHX_ symbol in the definition is a macro used by Perl under threading
to provide an extra argument to the routine holding a pointer back to
the interpreter that is executing the regexp. So under threading all
routines get an extra argument.
@@ -58,43 +76,43 @@ routines get an extra argument.
Compile the pattern stored in C<pattern> using the given C<flags> and
return a pointer to a prepared C<REGEXP> structure that can perform
-the match. See L</The REGEXP structure> below for an explanation of
+the match. See L</The REGEXP structure> below for an explanation of
the individual fields in the REGEXP struct.
The C<pattern> parameter is the scalar that was used as the
-pattern. previous versions of perl would pass two C<char*> indicating
-the start and end of the stringified pattern, the following snippet can
+pattern. Previous versions of Perl would pass two C<char*> indicating
+the start and end of the stringified pattern; the following snippet can
be used to get the old parameters:
STRLEN plen;
char* exp = SvPV(pattern, plen);
char* xend = exp + plen;
-Since any scalar can be passed as a pattern it's possible to implement
+Since any scalar can be passed as a pattern, it's possible to implement
an engine that does something with an array (C<< "ook" =~ [ qw/ eek
hlagh / ] >>) or with the non-stringified form of a compiled regular
-expression (C<< "ook" =~ qr/eek/ >>). perl's own engine will always
-stringify everything using the snippet above but that doesn't mean
+expression (C<< "ook" =~ qr/eek/ >>). Perl's own engine will always
+stringify everything using the snippet above, but that doesn't mean
other engines have to.
The C<flags> parameter is a bitfield which indicates which of the
-C<msixp> flags the regex was compiled with. It also contains
-additional info such as whether C<use locale> is in effect.
+C<msixp> flags the regex was compiled with. It also contains
+additional info, such as if C<use locale> is in effect.
The C<eogc> flags are stripped out before being passed to the comp
-routine. The regex engine does not need to know whether any of these
-are set as those flags should only affect what perl does with the
+routine. The regex engine does not need to know if any of these
+are set, as those flags should only affect what Perl does with the
pattern and its match variables, not how it gets compiled and
executed.
By the time the comp callback is called, some of these flags have
-already had effect (noted below where applicable). However most of
-their effect occurs after the comp callback has run in routines that
+already had effect (noted below where applicable). However most of
+their effect occurs after the comp callback has run, in routines that
read the C<< rx->extflags >> field which it populates.
In general the flags should be preserved in C<< rx->extflags >> after
compilation, although the regex engine might want to add or delete
-some of them to invoke or disable some special behavior in perl. The
+some of them to invoke or disable some special behavior in Perl. The
flags along with any special behavior they cause are documented below:
The pattern modifiers:
@@ -113,7 +131,7 @@ as a multi-line string.
=item C</x> - RXf_PMf_EXTENDED
-If present on a regex C<#> comments will be handled differently by the
+If present on a regex, C<"#"> comments will be handled differently by the
tokenizer in some cases.
TODO: Document those cases.
@@ -131,7 +149,7 @@ C<get_regex_charset(const U32 flags)>. The only currently documented
value returned from it is REGEX_LOCALE_CHARSET, which is set if
C<use locale> is in effect. If present in C<< rx->extflags >>,
C<split> will use the locale dependent definition of whitespace
-when RXf_SKIPWHITE or RXf_WHITE is in effect. ASCII whitespace
+when RXf_SKIPWHITE or RXf_WHITE is in effect. ASCII whitespace
is defined as per L<isSPACE|perlapi/isSPACE>, and by the internal
macros C<is_utf8_space> under UTF-8, and C<isSPACE_LC> under C<use
locale>.
@@ -142,21 +160,16 @@ Additional flags:
=over 4
-=item RXf_UTF8
-
-Set if the pattern is L<SvUTF8()|perlapi/SvUTF8>, set by Perl_pmruntime.
-
-A regex engine may want to set or disable this flag during
-compilation. The perl engine for instance may upgrade non-UTF-8
-strings to UTF-8 if the pattern includes constructs such as C<\x{...}>
-that can only match Unicode values.
-
=item RXf_SPLIT
+This flag was removed in perl 5.18.0. C<split ' '> is now special-cased
+solely in the parser. RXf_SPLIT is still #defined, so you can test for it.
+This is how it used to work:
+
If C<split> is invoked as C<split ' '> or with no arguments (which
-really means C<split(' ', $_)>, see L<split|perlfunc/split>), perl will
-set this flag. The regex engine can then check for it and set the
-SKIPWHITE and WHITE extflags. To do this the perl engine does:
+really means C<split(' ', $_)>, see L<split|perlfunc/split>), Perl will
+set this flag. The regex engine can then check for it and set the
+SKIPWHITE and WHITE extflags. To do this, the Perl engine does:
if (flags & RXf_SPLIT && r->prelen == 1 && r->precomp[0] == ' ')
r->extflags |= (RXf_SKIPWHITE|RXf_WHITE);
@@ -170,13 +183,16 @@ the C<split> operator.
=item RXf_SKIPWHITE
+This flag was removed in perl 5.18.0. It is still #defined, so you can
+set it, but doing so will have no effect. This is how it used to work:
+
If the flag is present in C<< rx->extflags >> C<split> will delete
whitespace from the start of the subject string before it's operated
-on. What is considered whitespace depends on whether the subject is a
-UTF-8 string and whether the C<RXf_PMf_LOCALE> flag is set.
+on. What is considered whitespace depends on if the subject is a
+UTF-8 string and if the C<RXf_PMf_LOCALE> flag is set.
-If RXf_WHITE is set in addition to this flag C<split> will behave like
-C<split " "> under the perl engine.
+If RXf_WHITE is set in addition to this flag, C<split> will behave like
+C<split " "> under the Perl engine.
=item RXf_START_ONLY
@@ -184,29 +200,37 @@ Tells the split operator to split the target string on newlines
(C<\n>) without invoking the regex engine.
Perl's engine sets this if the pattern is C</^/> (C<plen == 1 && *exp
-== '^'>), even under C</^/s>, see L<split|perlfunc>. Of course a
+== '^'>), even under C</^/s>; see L<split|perlfunc>. Of course a
different regex engine might want to use the same optimizations
with a different syntax.
=item RXf_WHITE
Tells the split operator to split the target string on whitespace
-without invoking the regex engine. The definition of whitespace varies
-depending on whether the target string is a UTF-8 string and on
-whether RXf_PMf_LOCALE is set.
+without invoking the regex engine. The definition of whitespace varies
+depending on if the target string is a UTF-8 string and on
+if RXf_PMf_LOCALE is set.
Perl's engine sets this flag if the pattern is C<\s+>.
=item RXf_NULL
Tells the split operator to split the target string on
-characters. The definition of character varies depending on whether
+characters. The definition of character varies depending on if
the target string is a UTF-8 string.
Perl's engine sets this flag on empty patterns, this optimization
-makes C<split //> much faster than it would otherwise be. It's even
+makes C<split //> much faster than it would otherwise be. It's even
faster than C<unpack>.
+=item RXf_NO_INPLACE_SUBST
+
+Added in perl 5.18.0, this flag indicates that a regular expression might
+perform an operation that would interfere with inplace substituion. For
+instance it might contain lookbehind, or assign to non-magical variables
+(such as $REGMARK and $REGERROR) during matching. C<s///> will skip
+certain optimisations when this is set.
+
=back
=head2 exec
@@ -216,7 +240,49 @@ faster than C<unpack>.
I32 minend, SV* screamer,
void* data, U32 flags);
-Execute a regexp.
+Execute a regexp. The arguments are
+
+=over 4
+
+=item rx
+
+The regular expression to execute.
+
+=item screamer
+
+This strangely-named arg is the SV to be matched against. Note that the
+actual char array to be matched against is supplied by the arguments
+described below; the SV is just used to determine UTF8ness, C<pos()> etc.
+
+=item strbeg
+
+Pointer to the physical start of the string.
+
+=item strend
+
+Pointer to the character following the physical end of the string (i.e.
+the C<\0>).
+
+=item stringarg
+
+Pointer to the position in the string where matching should start; it might
+not be equal to C<strbeg> (for example in a later iteration of C</.../g>).
+
+=item minend
+
+Minimum length of string (measured in bytes from C<stringarg>) that must
+match; if the engine reaches the end of the match but hasn't reached this
+position in the string, it should fail.
+
+=item data
+
+Optimisation data; subject to change.
+
+=item flags
+
+Optimisation flags; subject to change.
+
+=back
=head2 intuit
@@ -225,9 +291,9 @@ Execute a regexp.
const U32 flags, struct re_scream_pos_data_s *data);
Find the start position where a regex match should be attempted,
-or possibly whether the regex engine should not be run because the
-pattern can't match. This is called as appropriate by the core
-depending on the values of the extflags member of the regexp
+or possibly if the regex engine should not be run because the
+pattern can't match. This is called, as appropriate, by the core,
+depending on the values of the C<extflags> member of the C<regexp>
structure.
=head2 checkstr
@@ -241,10 +307,10 @@ by C<split> for optimising matches.
void free(pTHX_ REGEXP * const rx);
-Called by perl when it is freeing a regexp pattern so that the engine
+Called by Perl when it is freeing a regexp pattern so that the engine
can release any resources pointed to by the C<pprivate> member of the
-regexp structure. This is only responsible for freeing private data;
-perl will handle releasing anything else contained in the regexp structure.
+C<regexp> structure. This is only responsible for freeing private data;
+Perl will handle releasing anything else contained in the C<regexp> structure.
=head2 Numbered capture callbacks
@@ -252,11 +318,22 @@ Called to get/set the value of C<$`>, C<$'>, C<$&> and their named
equivalents, ${^PREMATCH}, ${^POSTMATCH} and $^{MATCH}, as well as the
numbered capture groups (C<$1>, C<$2>, ...).
-The C<paren> parameter will be C<-2> for C<$`>, C<-1> for C<$'>, C<0>
-for C<$&>, C<1> for C<$1> and so forth.
+The C<paren> parameter will be C<1> for C<$1>, C<2> for C<$2> and so
+forth, and have these symbolic values for the special variables:
+
+ ${^PREMATCH} RX_BUFF_IDX_CARET_PREMATCH
+ ${^POSTMATCH} RX_BUFF_IDX_CARET_POSTMATCH
+ ${^MATCH} RX_BUFF_IDX_CARET_FULLMATCH
+ $` RX_BUFF_IDX_PREMATCH
+ $' RX_BUFF_IDX_POSTMATCH
+ $& RX_BUFF_IDX_FULLMATCH
+
+Note that in Perl 5.17.3 and earlier, the last three constants were also
+used for the caret variants of the variables.
+
The names have been chosen by analogy with L<Tie::Scalar> methods
-names with an additional B<LENGTH> callback for efficiency. However
+names with an additional B<LENGTH> callback for efficiency. However
named capture variables are currently not tied internally but
implemented via magic.
@@ -265,25 +342,27 @@ implemented via magic.
void numbered_buff_FETCH(pTHX_ REGEXP * const rx, const I32 paren,
SV * const sv);
-Fetch a specified numbered capture. C<sv> should be set to the scalar
+Fetch a specified numbered capture. C<sv> should be set to the scalar
to return, the scalar is passed as an argument rather than being
-returned from the function because when it's called perl already has a
+returned from the function because when it's called Perl already has a
scalar to store the value, creating another one would be
-redundant. The scalar can be set with C<sv_setsv>, C<sv_setpvn> and
+redundant. The scalar can be set with C<sv_setsv>, C<sv_setpvn> and
friends, see L<perlapi>.
-This callback is where perl untaints its own capture variables under
-taint mode (see L<perlsec>). See the C<Perl_reg_numbered_buff_fetch>
+This callback is where Perl untaints its own capture variables under
+taint mode (see L<perlsec>). See the C<Perl_reg_numbered_buff_fetch>
function in F<regcomp.c> for how to untaint capture variables if
that's something you'd like your engine to do as well.
=head3 numbered_buff_STORE
- void (*numbered_buff_STORE) (pTHX_ REGEXP * const rx, const I32 paren,
+ void (*numbered_buff_STORE) (pTHX_
+ REGEXP * const rx,
+ const I32 paren,
SV const * const value);
-Set the value of a numbered capture variable. C<value> is the scalar
-that is to be used as the new value. It's up to the engine to make
+Set the value of a numbered capture variable. C<value> is the scalar
+that is to be used as the new value. It's up to the engine to make
sure this is used as the new value (or reject it).
Example:
@@ -298,8 +377,10 @@ variables, to do this in another engine use the following callback
(copied from C<Perl_reg_numbered_buff_store>):
void
- Example_reg_numbered_buff_store(pTHX_ REGEXP * const rx, const I32 paren,
- SV const * const value)
+ Example_reg_numbered_buff_store(pTHX_
+ REGEXP * const rx,
+ const I32 paren,
+ SV const * const value)
{
PERL_UNUSED_ARG(rx);
PERL_UNUSED_ARG(paren);
@@ -309,10 +390,10 @@ variables, to do this in another engine use the following callback
Perl_croak(aTHX_ PL_no_modify);
}
-Actually perl will not I<always> croak in a statement that looks
-like it would modify a numbered capture variable. This is because the
-STORE callback will not be called if perl can determine that it
-doesn't have to modify the value. This is exactly how tied variables
+Actually Perl will not I<always> croak in a statement that looks
+like it would modify a numbered capture variable. This is because the
+STORE callback will not be called if Perl can determine that it
+doesn't have to modify the value. This is exactly how tied variables
behave in the same situation:
package CaptureVar;
@@ -327,21 +408,23 @@ behave in the same situation:
tie my $sv => "CaptureVar";
$sv =~ y/a/b/;
-Because C<$sv> is C<undef> when the C<y///> operator is applied to it
+Because C<$sv> is C<undef> when the C<y///> operator is applied to it,
the transliteration won't actually execute and the program won't
-C<die>. This is different to how 5.8 and earlier versions behaved
-since the capture variables were READONLY variables then, now they'll
+C<die>. This is different to how 5.8 and earlier versions behaved
+since the capture variables were READONLY variables then; now they'll
just die when assigned to in the default engine.
=head3 numbered_buff_LENGTH
- I32 numbered_buff_LENGTH (pTHX_ REGEXP * const rx, const SV * const sv,
+ I32 numbered_buff_LENGTH (pTHX_
+ REGEXP * const rx,
+ const SV * const sv,
const I32 paren);
-Get the C<length> of a capture variable. There's a special callback
-for this so that perl doesn't have to do a FETCH and run C<length> on
-the result, since the length is (in perl's case) known from an offset
-stored in C<< rx->offs >> this is much more efficient:
+Get the C<length> of a capture variable. There's a special callback
+for this so that Perl doesn't have to do a FETCH and run C<length> on
+the result, since the length is (in Perl's case) known from an offset
+stored in C<< rx->offs >>, this is much more efficient:
I32 s1 = rx->offs[paren].start;
I32 s2 = rx->offs[paren].end;
@@ -353,7 +436,7 @@ L<is_utf8_string_loclen|perlapi/is_utf8_string_loclen>.
=head2 Named capture callbacks
-Called to get/set the value of C<%+> and C<%-> as well as by some
+Called to get/set the value of C<%+> and C<%->, as well as by some
utility functions in L<re>.
There are two callbacks, C<named_buff> is called in all the cases the
@@ -362,7 +445,7 @@ would be on changes to C<%+> and C<%-> and C<named_buff_iter> in the
same cases as FIRSTKEY and NEXTKEY.
The C<flags> parameter can be used to determine which of these
-operations the callbacks should respond to, the following flags are
+operations the callbacks should respond to. The following flags are
currently defined:
Which L<Tie::Hash> operation is being performed from the Perl level on
@@ -377,13 +460,13 @@ C<%+> or C<%+>, if any:
RXapif_FIRSTKEY
RXapif_NEXTKEY
-Whether C<%+> or C<%-> is being operated on, if any.
+If C<%+> or C<%-> is being operated on, if any.
RXapif_ONE /* %+ */
RXapif_ALL /* %- */
-Whether this is being called as C<re::regname>, C<re::regnames> or
-C<re::regnames_count>, if any. The first two will be combined with
+If this is being called as C<re::regname>, C<re::regnames> or
+C<re::regnames_count>, if any. The first two will be combined with
C<RXapif_ONE> or C<RXapif_ALL>.
RXapif_REGNAME
@@ -391,10 +474,10 @@ C<RXapif_ONE> or C<RXapif_ALL>.
RXapif_REGNAMES_COUNT
Internally C<%+> and C<%-> are implemented with a real tied interface
-via L<Tie::Hash::NamedCapture>. The methods in that package will call
-back into these functions. However the usage of
+via L<Tie::Hash::NamedCapture>. The methods in that package will call
+back into these functions. However the usage of
L<Tie::Hash::NamedCapture> for this purpose might change in future
-releases. For instance this might be implemented by magic instead
+releases. For instance this might be implemented by magic instead
(would need an extension to mgvtbl).
=head3 named_buff
@@ -404,7 +487,9 @@ releases. For instance this might be implemented by magic instead
=head3 named_buff_iter
- SV* (*named_buff_iter) (pTHX_ REGEXP * const rx, const SV * const lastkey,
+ SV* (*named_buff_iter) (pTHX_
+ REGEXP * const rx,
+ const SV * const lastkey,
const U32 flags);
=head2 qr_package
@@ -412,12 +497,12 @@ releases. For instance this might be implemented by magic instead
SV* qr_package(pTHX_ REGEXP * const rx);
The package the qr// magic object is blessed into (as seen by C<ref
-qr//>). It is recommended that engines change this to their package
-name for identification regardless of whether they implement methods
+qr//>). It is recommended that engines change this to their package
+name for identification regardless of if they implement methods
on the object.
The package this method returns should also have the internal
-C<Regexp> package in its C<@ISA>. C<< qr//->isa("Regexp") >> should always
+C<Regexp> package in its C<@ISA>. C<< qr//->isa("Regexp") >> should always
be true regardless of what engine is being used.
Example implementation might be:
@@ -449,12 +534,12 @@ Functions>.
void* dupe(pTHX_ REGEXP * const rx, CLONE_PARAMS *param);
On threaded builds a regexp may need to be duplicated so that the pattern
-can be used by multiple threads. This routine is expected to handle the
+can be used by multiple threads. This routine is expected to handle the
duplication of any private data pointed to by the C<pprivate> member of
-the regexp structure. It will be called with the preconstructed new
-regexp structure as an argument, the C<pprivate> member will point at
+the C<regexp> structure. It will be called with the preconstructed new
+C<regexp> structure as an argument, the C<pprivate> member will point at
the B<old> private structure, and it is this routine's responsibility to
-construct a copy and return a pointer to it (which perl will then use to
+construct a copy and return a pointer to it (which Perl will then use to
overwrite the field as passed to this routine.)
This allows the engine to dupe its private data but also if necessary
@@ -462,24 +547,30 @@ modify the final structure if it really must.
On unthreaded builds this field doesn't exist.
+=head2 op_comp
+
+This is private to the Perl core and subject to change. Should be left
+null.
+
=head1 The REGEXP structure
-The REGEXP struct is defined in F<regexp.h>. All regex engines must be able to
+The REGEXP struct is defined in F<regexp.h>.
+All regex engines must be able to
correctly build such a structure in their L</comp> routine.
-The REGEXP structure contains all the data that perl needs to be aware of
-to properly work with the regular expression. It includes data about
-optimisations that perl can use to determine if the regex engine should
+The REGEXP structure contains all the data that Perl needs to be aware of
+to properly work with the regular expression. It includes data about
+optimisations that Perl can use to determine if the regex engine should
really be used, and various other control info that is needed to properly
-execute patterns in various contexts such as is the pattern anchored in
-some way, or what flags were used during the compile, or whether the
-program contains special constructs that perl needs to be aware of.
+execute patterns in various contexts, such as if the pattern anchored in
+some way, or what flags were used during the compile, or if the
+program contains special constructs that Perl needs to be aware of.
In addition it contains two fields that are intended for the private
-use of the regex engine that compiled the pattern. These are the
-C<intflags> and C<pprivate> members. C<pprivate> is a void pointer to
-an arbitrary structure whose use and management is the responsibility
-of the compiling engine. perl will never modify either of these
+use of the regex engine that compiled the pattern. These are the
+C<intflags> and C<pprivate> members. C<pprivate> is a void pointer to
+an arbitrary structure, whose use and management is the responsibility
+of the compiling engine. Perl will never modify either of these
values.
typedef struct regexp {
@@ -489,10 +580,12 @@ values.
/* what re is this a lightweight copy of? */
struct regexp* mother_re;
- /* Information about the match that the perl core uses to manage things */
+ /* Information about the match that the Perl core uses to manage
+ * things */
U32 extflags; /* Flags used both externally and internally */
- I32 minlen; /* mininum possible length of string to match */
- I32 minlenret; /* mininum possible length of $& */
+ I32 minlen; /* mininum possible number of chars in */
+ string to match */
+ I32 minlenret; /* mininum possible number of chars in $& */
U32 gofs; /* chars left of pos that we search from */
/* substring data about strings that must appear
@@ -506,15 +599,21 @@ values.
void *pprivate; /* Data private to the regex engine which
created this object. */
- /* Data about the last/current match. These are modified during matching*/
- U32 lastparen; /* last open paren matched */
- U32 lastcloseparen; /* last close paren matched */
+ /* Data about the last/current match. These are modified during
+ * matching*/
+ U32 lastparen; /* highest close paren matched ($+) */
+ U32 lastcloseparen; /* last close paren matched ($^N) */
regexp_paren_pair *swap; /* Swap copy of *offs */
- regexp_paren_pair *offs; /* Array of offsets for (@-) and (@+) */
+ regexp_paren_pair *offs; /* Array of offsets for (@-) and
+ (@+) */
- char *subbeg; /* saved or original string so \digit works forever. */
+ char *subbeg; /* saved or original string so \digit works
+ forever. */
SV_SAVED_COPY /* If non-NULL, SV which is COW from original */
I32 sublen; /* Length of string pointed by subbeg */
+ I32 suboffset; /* byte offset of subbeg from logical start of
+ str */
+ I32 subcoffset; /* suboffset equiv, but in chars (for @-/@+) */
/* Information about the match that isn't often used */
I32 prelen; /* length of precomp */
@@ -523,7 +622,8 @@ values.
char *wrapped; /* wrapped version of the pattern */
I32 wraplen; /* length of wrapped */
- I32 seen_evals; /* number of eval groups in the pattern - for security checks */
+ I32 seen_evals; /* number of eval groups in the pattern - for
+ security checks */
HV *paren_names; /* Optional hash of paren names */
/* Refcount of this regexp */
@@ -534,13 +634,13 @@ The fields are discussed in more detail below:
=head2 C<engine>
-This field points at a regexp_engine structure which contains pointers
-to the subroutines that are to be used for performing a match. It
+This field points at a C<regexp_engine> structure which contains pointers
+to the subroutines that are to be used for performing a match. It
is the compiling routine's responsibility to populate this field before
returning the regexp object.
Internally this is set to C<NULL> unless a custom engine is specified in
-C<$^H{regcomp}>, perl's own set of callbacks can be accessed in the struct
+C<$^H{regcomp}>, Perl's own set of callbacks can be accessed in the struct
pointed to by C<RE_ENGINE_PTR>.
=head2 C<mother_re>
@@ -549,21 +649,22 @@ TODO, see L<http://www.mail-archive.com/perl5-changes@perl.org/msg17328.html>
=head2 C<extflags>
-This will be used by perl to see what flags the regexp was compiled
+This will be used by Perl to see what flags the regexp was compiled
with, this will normally be set to the value of the flags parameter by
-the L<comp|/comp> callback. See the L<comp|/comp> documentation for
+the L<comp|/comp> callback. See the L<comp|/comp> documentation for
valid flags.
=head2 C<minlen> C<minlenret>
-The minimum string length required for the pattern to match. This is used to
+The minimum string length (in characters) required for the pattern to match.
+This is used to
prune the search space by not bothering to match any closer to the end of a
-string than would allow a match. For instance there is no point in even
+string than would allow a match. For instance there is no point in even
starting the regex engine if the minlen is 10 but the string is only 5
-characters long. There is no way that the pattern can match.
+characters long. There is no way that the pattern can match.
-C<minlenret> is the minimum length of the string that would be found
-in $& after a match.
+C<minlenret> is the minimum length (in characters) of the string that would
+be found in $& after a match.
The difference between C<minlen> and C<minlenret> can be seen in the
following pattern:
@@ -571,10 +672,11 @@ following pattern:
/ns(?=\d)/
where the C<minlen> would be 3 but C<minlenret> would only be 2 as the \d is
-required to match but is not actually included in the matched content. This
+required to match but is not actually
+included in the matched content. This
distinction is particularly important as the substitution logic uses the
-C<minlenret> to tell whether it can do in-place substitution which can result in
-considerable speedup.
+C<minlenret> to tell if it can do in-place substitutions (these can
+result in considerable speed-up).
=head2 C<gofs>
@@ -582,8 +684,8 @@ Left offset from pos() to start match at.
=head2 C<substrs>
-Substring data about strings that must appear in the final match. This
-is currently only used internally by perl's engine for but might be
+Substring data about strings that must appear in the final match. This
+is currently only used internally by Perl's engine, but might be
used in the future for all engines for optimisations.
=head2 C<nparens>, C<lastparen>, and C<lastcloseparen>
@@ -599,13 +701,14 @@ this is the same as C<extflags> unless the engine chose to modify one of them.
=head2 C<pprivate>
-A void* pointing to an engine-defined data structure. The perl engine uses the
+A void* pointing to an engine-defined
+data structure. The Perl engine uses the
C<regexp_internal> structure (see L<perlreguts/Base Structures>) but a custom
engine should use something else.
=head2 C<swap>
-Unused. Left in for compatibility with perl 5.10.0.
+Unused. Left in for compatibility with Perl 5.10.0.
=head2 C<offs>
@@ -619,16 +722,17 @@ C<regexp_paren_pair> struct is defined as follows:
} regexp_paren_pair;
If C<< ->offs[num].start >> or C<< ->offs[num].end >> is C<-1> then that
-capture group did not match. C<< ->offs[0].start/end >> represents C<$&> (or
-C<${^MATCH> under C<//p>) and C<< ->offs[paren].end >> matches C<$$paren> where
+capture group did not match.
+C<< ->offs[0].start/end >> represents C<$&> (or
+C<${^MATCH}> under C<//p>) and C<< ->offs[paren].end >> matches C<$$paren> where
C<$paren >= 1>.
=head2 C<precomp> C<prelen>
-Used for optimisations. C<precomp> holds a copy of the pattern that
-was compiled and C<prelen> its length. When a new pattern is to be
+Used for optimisations. C<precomp> holds a copy of the pattern that
+was compiled and C<prelen> its length. When a new pattern is to be
compiled (such as inside a loop) the internal C<regcomp> operator
-checks whether the last compiled C<REGEXP>'s C<precomp> and C<prelen>
+checks if the last compiled C<REGEXP>'s C<precomp> and C<prelen>
are equivalent to the new one, and if so uses the old pattern instead
of compiling a new one.
@@ -641,7 +745,7 @@ The relevant snippet from C<Perl_pp_regcomp>:
=head2 C<paren_names>
This is a hash used internally to track named capture groups and their
-offsets. The keys are the names of the buffers the values are dualvars,
+offsets. The keys are the names of the buffers the values are dualvars,
with the IV slot holding the number of buffers with the given name and the
pv being an embedded array of I32. The values may also be contained
independently in the data array in cases where named backreferences are
@@ -651,17 +755,31 @@ used.
Holds information on the longest string that must occur at a fixed
offset from the start of the pattern, and the longest string that must
-occur at a floating offset from the start of the pattern. Used to do
+occur at a floating offset from the start of the pattern. Used to do
Fast-Boyer-Moore searches on the string to find out if its worth using
the regex engine at all, and if so where in the string to search.
-=head2 C<subbeg> C<sublen> C<saved_copy>
+=head2 C<subbeg> C<sublen> C<saved_copy> C<suboffset> C<subcoffset>
+
+Used during the execution phase for managing search and replace patterns,
+and for providing the text for C<$&>, C<$1> etc. C<subbeg> points to a
+buffer (either the original string, or a copy in the case of
+C<RX_MATCH_COPIED(rx)>), and C<sublen> is the length of the buffer. The
+C<RX_OFFS> start and end indices index into this buffer.
-Used during execution phase for managing search and replace patterns.
+In the presence of the C<REXEC_COPY_STR> flag, but with the addition of
+the C<REXEC_COPY_SKIP_PRE> or C<REXEC_COPY_SKIP_POST> flags, an engine
+can choose not to copy the full buffer (although it must still do so in
+the presence of C<RXf_PMf_KEEPCOPY> or the relevant bits being set in
+C<PL_sawampersand>). In this case, it may set C<suboffset> to indicate the
+number of bytes from the logical start of the buffer to the physical start
+(i.e. C<subbeg>). It should also set C<subcoffset>, the number of
+characters in the offset. The latter is needed to support C<@-> and C<@+>
+which work in characters, not bytes.
=head2 C<wrapped> C<wraplen>
-Stores the string C<qr//> stringifies to. The perl engine for example
+Stores the string C<qr//> stringifies to. The Perl engine for example
stores C<(?^:eek)> in the case of C<qr/eek/>.
When using a custom engine that doesn't support the C<(?:)> construct
@@ -678,13 +796,15 @@ engine understand a construct like C<(?:)>.
=head2 C<seen_evals>
-This stores the number of eval groups in the pattern. This is used for security
+This stores the number of eval groups in
+the pattern. This is used for security
purposes when embedding compiled regexes into larger patterns with C<qr//>.
=head2 C<refcnt>
-The number of times the structure is referenced. When this falls to 0 the
-regexp is automatically freed by a call to pregfree. This should be set to 1 in
+The number of times the structure is referenced. When
+this falls to 0, the regexp is automatically freed
+by a call to pregfree. This should be set to 1 in
each engine's L</comp> routine.
=head1 HISTORY
diff --git a/gnu/usr.bin/perl/pod/perlrebackslash.pod b/gnu/usr.bin/perl/pod/perlrebackslash.pod
index f81af0c6dd7..44b0e7db06e 100644
--- a/gnu/usr.bin/perl/pod/perlrebackslash.pod
+++ b/gnu/usr.bin/perl/pod/perlrebackslash.pod
@@ -68,7 +68,7 @@ as C<Not in [].>
\A Beginning of string. Not in [].
\b Word/non-word boundary. (Backspace in []).
\B Not a word/non-word boundary. Not in [].
- \cX Control-X
+ \cX Control-X.
\C Single octet, even under UTF-8. Not in [].
\d Character class for digits.
\D Character class for non-digits.
@@ -76,7 +76,8 @@ as C<Not in [].>
\E Turn off \Q, \L and \U processing. Not in [].
\f Form feed.
\F Foldcase till \E. Not in [].
- \g{}, \g1 Named, absolute or relative backreference. Not in []
+ \g{}, \g1 Named, absolute or relative backreference.
+ Not in [].
\G Pos assertion. Not in [].
\h Character class for horizontal whitespace.
\H Character class for non horizontal whitespace.
@@ -85,7 +86,7 @@ as C<Not in [].>
\l Lowercase next character. Not in [].
\L Lowercase till \E. Not in [].
\n (Logical) newline character.
- \N Any character but newline. Experimental. Not in [].
+ \N Any character but newline. Not in [].
\N{} Named or numbered (Unicode) character or sequence.
\o{} Octal escape sequence.
\p{}, \pP Character with the given Unicode property.
@@ -246,16 +247,17 @@ Mnemonic: I<0>ctal or I<o>ctal.
$str = "Perl";
$str =~ /\o{120}/; # Match, "\120" is "P".
$str =~ /\120/; # Same.
- $str =~ /\o{120}+/; # Match, "\120" is "P", it's repeated at least once
+ $str =~ /\o{120}+/; # Match, "\120" is "P",
+ # it's repeated at least once.
$str =~ /\120+/; # Same.
$str =~ /P\053/; # No match, "\053" is "+" and taken literally.
/\o{23073}/ # Black foreground, white background smiling face.
- /\o{4801234567}/ # Raises a warning, and yields chr(4)
+ /\o{4801234567}/ # Raises a warning, and yields chr(4).
=head4 Disambiguation rules between old-style octal escapes and backreferences
Octal escapes of the C<\000> form outside of bracketed character classes
-potentially clash with old-style backreferences. (see L</Absolute referencing>
+potentially clash with old-style backreferences (see L</Absolute referencing>
below). They both consist of a backslash followed by numbers. So Perl has to
use heuristics to determine whether it is a backreference or an octal escape.
Perl uses the following rules to disambiguate:
@@ -282,7 +284,7 @@ takes only the first three for the octal escape; the rest are matched as is.
$pat .= ")" x 999;
/^($pat)\1000$/; # Matches 'aa'; there are 1000 capture groups.
/^$pat\1000$/; # Matches 'a@0'; there are 999 capture groups
- # and \1000 is seen as \100 (a '@') and a '0'
+ # and \1000 is seen as \100 (a '@') and a '0'.
=back
@@ -430,7 +432,7 @@ Mnemonic: I<g>roup.
=head4 Examples
/(\w+) \g1/; # Finds a duplicated word, (e.g. "cat cat").
- /(\w+) \1/; # Same thing; written old-style
+ /(\w+) \1/; # Same thing; written old-style.
/(.)(.)\g2\g1/; # Match a four letter palindrome (e.g. "ABBA").
@@ -575,7 +577,7 @@ categories above. These are:
C<\C> always matches a single octet, even if the source string is encoded
in UTF-8 format, and the character to be matched is a multi-octet character.
-C<\C> was introduced in perl 5.6. This is very dangerous, because it violates
+This is very dangerous, because it violates
the logical character abstraction and can cause UTF-8 sequences to become malformed.
Mnemonic: oI<C>tet.
@@ -591,7 +593,7 @@ Mnemonic: I<K>eep.
=item \N
-This is an experimental feature new to perl 5.12.0. It matches any character
+This feature, available starting in v5.12, matches any character
that is B<not> a newline. It is a short-hand for writing C<[^\n]>, and is
identical to the C<.> metasymbol, except under the C</s> flag, which changes
the meaning of C<.>, but not C<\N>.
@@ -647,7 +649,8 @@ Mnemonic: eI<X>tended Unicode character.
=head4 Examples
- "\x{256}" =~ /^\C\C$/; # Match as chr (0x256) takes 2 octets in UTF-8.
+ "\x{256}" =~ /^\C\C$/; # Match as chr (0x256) takes
+ # 2 octets in UTF-8.
$str =~ s/foo\Kbar/baz/g; # Change any 'bar' following a 'foo' to 'baz'
$str =~ s/(.)\K\g1//g; # Delete duplicated characters.
diff --git a/gnu/usr.bin/perl/pod/perlrecharclass.pod b/gnu/usr.bin/perl/pod/perlrecharclass.pod
index 06d206b2f8b..eb41ab9eec3 100644
--- a/gnu/usr.bin/perl/pod/perlrecharclass.pod
+++ b/gnu/usr.bin/perl/pod/perlrecharclass.pod
@@ -29,7 +29,7 @@ the most well-known character class. By default, a dot matches any
character, except for the newline. That default can be changed to
add matching the newline by using the I<single line> modifier: either
for the entire regular expression with the C</s> modifier, or
-locally with C<(?s)>. (The experimental C<\N> backslash sequence, described
+locally with C<(?s)>. (The C<\N> backslash sequence, described
below, matches any character except newline without regard to the
I<single line> modifier.)
@@ -68,13 +68,13 @@ character classes, see L<perlrebackslash>.)
\H Match a character that isn't horizontal whitespace.
\v Match a vertical whitespace character.
\V Match a character that isn't vertical whitespace.
- \N Match a character that isn't a newline. Experimental.
+ \N Match a character that isn't a newline.
\pP, \p{Prop} Match a character that has the given Unicode property.
\PP, \P{Prop} Match a character that doesn't have the Unicode property
=head3 \N
-C<\N> is new in 5.12, and is experimental. It, like the dot, matches any
+C<\N>, available starting in v5.12, like the dot, matches any
character that is not a newline. The difference is that C<\N> is not influenced
by the I<single line> regular expression modifier (see L</The dot> above). Note
that the form C<\N{...}> may mean something completely different. When the
@@ -140,11 +140,12 @@ Any character not matched by C<\d> is matched by C<\D>.
=head3 Word characters
A C<\w> matches a single alphanumeric character (an alphabetic character, or a
-decimal digit) or a connecting punctuation character, such as an
-underscore ("_"). It does not match a whole word. To match a whole
-word, use C<\w+>. This isn't the same thing as matching an English word, but
-in the ASCII range it is the same as a string of Perl-identifier
-characters.
+decimal digit); or a connecting punctuation character, such as an
+underscore ("_"); or a "mark" character (like some sort of accent) that
+attaches to one of those. It does not match a whole word. To match a
+whole word, use C<\w+>. This isn't the same thing as matching an
+English word, but in the ASCII range it is the same as a string of
+Perl-identifier characters.
=over
@@ -173,7 +174,7 @@ are generally used to add auxiliary markings to letters.
C<\w> matches the platform's native underscore character plus whatever
the locale considers to be alphanumeric.
-=item if Unicode rules are in effect or if on an EBCDIC platform ...
+=item if Unicode rules are in effect ...
C<\w> matches exactly what C<\p{Word}> matches.
@@ -208,9 +209,11 @@ C<\s> matches any single character considered whitespace.
=item If the C</a> modifier is in effect ...
-C<\s> matches the 5 characters [\t\n\f\r ]; that is, the horizontal tab,
-the newline, the form feed, the carriage return, and the space. (Note
-that it doesn't match the vertical tab, C<\cK> on ASCII platforms.)
+In all Perl versions, C<\s> matches the 5 characters [\t\n\f\r ]; that
+is, the horizontal tab,
+the newline, the form feed, the carriage return, and the space.
+Starting in Perl v5.18, experimentally, it also matches the vertical tab, C<\cK>.
+See note C<[1]> below for a discussion of this.
=item otherwise ...
@@ -227,18 +230,18 @@ in the table below.
=item if locale rules are in effect ...
-C<\s> matches whatever the locale considers to be whitespace. Note that
-this is likely to include the vertical space, unlike non-locale C<\s>
-matching.
+C<\s> matches whatever the locale considers to be whitespace.
-=item if Unicode rules are in effect or if on an EBCDIC platform ...
+=item if Unicode rules are in effect ...
C<\s> matches exactly the characters shown with an "s" column in the
table below.
=item otherwise ...
-C<\s> matches [\t\n\f\r ].
+C<\s> matches [\t\n\f\r\cK ] and, starting, experimentally in Perl
+v5.18, the vertical tab, C<\cK>.
+(See note C<[1]> below for a discussion of this.)
Note that this list doesn't include the non-breaking space.
=back
@@ -277,26 +280,26 @@ Note that unlike C<\s> (and C<\d> and C<\w>), C<\h> and C<\v> always match
the same characters, without regard to other factors, such as the active
locale or whether the source string is in UTF-8 format.
-One might think that C<\s> is equivalent to C<[\h\v]>. This is not true.
-The difference is that the vertical tab (C<"\x0b">) is not matched by
-C<\s>; it is however considered vertical whitespace.
+One might think that C<\s> is equivalent to C<[\h\v]>. This is indeed true
+starting in Perl v5.18, but prior to that, the sole difference was that the
+vertical tab (C<"\cK">) was not matched by C<\s>.
The following table is a complete listing of characters matched by
C<\s>, C<\h> and C<\v> as of Unicode 6.0.
The first column gives the Unicode code point of the character (in hex format),
the second column gives the (Unicode) name. The third column indicates
-by which class(es) the character is matched (assuming no locale or EBCDIC code
-page is in effect that changes the C<\s> matching).
+by which class(es) the character is matched (assuming no locale is in
+effect that changes the C<\s> matching).
0x0009 CHARACTER TABULATION h s
0x000a LINE FEED (LF) vs
- 0x000b LINE TABULATION v
+ 0x000b LINE TABULATION vs [1]
0x000c FORM FEED (FF) vs
0x000d CARRIAGE RETURN (CR) vs
0x0020 SPACE h s
- 0x0085 NEXT LINE (NEL) vs [1]
- 0x00a0 NO-BREAK SPACE h s [1]
+ 0x0085 NEXT LINE (NEL) vs [2]
+ 0x00a0 NO-BREAK SPACE h s [2]
0x1680 OGHAM SPACE MARK h s
0x180e MONGOLIAN VOWEL SEPARATOR h s
0x2000 EN QUAD h s
@@ -320,6 +323,16 @@ page is in effect that changes the C<\s> matching).
=item [1]
+Prior to Perl v5.18, C<\s> did not match the vertical tab. The change
+in v5.18 is considered an experiment, which means it could be backed out
+in v5.20 or v5.22 if experience indicates that it breaks too much
+existing code. If this change adversely affects you, send email to
+C<perlbug@perl.org>; if it affects you positively, email
+C<perlthanks@perl.org>. In the meantime, C<[^\S\cK]> (obscurely)
+matches what C<\s> traditionally did.
+
+=item [2]
+
NEXT LINE and NO-BREAK SPACE may or may not match C<\s> depending
on the rules in effect. See
L<the beginning of this section|/Whitespace>.
@@ -345,9 +358,9 @@ C</\pLl/> is valid, but means something different.
It matches a two character string: a letter (Unicode property C<\pL>),
followed by a lowercase C<l>.
-If neither the C</a> modifier nor locale rules are in effect, the use of
+If locale rules are not in effect, the use of
a Unicode property will force the regular expression into using Unicode
-rules.
+rules, if it isn't already.
Note that almost all properties are immune to case-insensitive matching.
That is, adding a C</i> regular expression modifier does not change what
@@ -441,7 +454,8 @@ Examples:
* There is an exception to a bracketed character class matching a
single character only. When the class is to match caselessly under C</i>
-matching rules, and a character inside the class matches a
+matching rules, and a character that is explicitly mentioned inside the
+class matches a
multiple-character sequence caselessly under Unicode rules, the class
(when not L<inverted|/Negation>) will also match that sequence. For
example, Unicode says that the letter C<LATIN SMALL LETTER SHARP S>
@@ -450,6 +464,18 @@ should match the sequence C<ss> under C</i> rules. Thus,
'ss' =~ /\A\N{LATIN SMALL LETTER SHARP S}\z/i # Matches
'ss' =~ /\A[aeioust\N{LATIN SMALL LETTER SHARP S}]\z/i # Matches
+For this to happen, the character must be explicitly specified, and not
+be part of a multi-character range (not even as one of its endpoints).
+(L</Character Ranges> will be explained shortly.) Therefore,
+
+ 'ss' =~ /\A[\0-\x{ff}]\z/i # Doesn't match
+ 'ss' =~ /\A[\0-\N{LATIN SMALL LETTER SHARP S}]\z/i # No match
+ 'ss' =~ /\A[\xDF-\xDF]\z/i # Matches on ASCII platforms, since \XDF
+ # is LATIN SMALL LETTER SHARP S, and the
+ # range is just a single element
+
+Note that it isn't a good idea to specify these types of ranges anyway.
+
=head3 Special Characters Inside a Bracketed Character Class
Most characters that are meta characters in regular expressions (that
@@ -508,7 +534,7 @@ escaping.
Examples:
"+" =~ /[+?*]/ # Match, "+" in a character class is not special.
- "\cH" =~ /[\b]/ # Match, \b inside in a character class
+ "\cH" =~ /[\b]/ # Match, \b inside in a character class.
# is equivalent to a backspace.
"]" =~ /[][]/ # Match, as the character class contains.
# both [ and ].
@@ -643,7 +669,7 @@ is valid and matches '0', '1', any alphabetic character, and the percent sign.
Perl recognizes the following POSIX character classes:
alpha Any alphabetical character ("[A-Za-z]").
- alnum Any alphanumeric character. ("[A-Za-z0-9]")
+ alnum Any alphanumeric character ("[A-Za-z0-9]").
ascii Any character in the ASCII character set.
blank A GNU extension, equal to a space or a horizontal tab ("\t").
cntrl Any control character. See Note [2] below.
@@ -652,7 +678,8 @@ Perl recognizes the following POSIX character classes:
lower Any lowercase character ("[a-z]").
print Any printable character, including a space. See Note [4] below.
punct Any graphical character excluding "word" characters. Note [5].
- space Any whitespace character. "\s" plus the vertical tab ("\cK").
+ space Any whitespace character. "\s" including the vertical tab
+ ("\cK").
upper Any uppercase character ("[A-Z]").
word A Perl extension ("[A-Za-z0-9_]"), equivalent to "\w".
xdigit Any hexadecimal digit ("[0-9a-fA-F]").
@@ -705,10 +732,6 @@ the terminal somehow: for example, newline and backspace are control characters.
In the ASCII range, characters whose code points are between 0 and 31 inclusive,
plus 127 (C<DEL>) are control characters.
-On EBCDIC platforms, it is likely that the code page will define C<[[:cntrl:]]>
-to be the EBCDIC equivalents of the ASCII controls, plus the controls
-that in Unicode have code pointss from 128 through 159.
-
=item [3]
Any character that is I<graphical>, that is, visible. This class consists
@@ -743,9 +766,10 @@ Unicode considers symbols.
=item [6]
-C<\p{SpacePerl}> and C<\p{Space}> differ only in that in non-locale
-matching, C<\p{Space}> additionally
-matches the vertical tab, C<\cK>. Same for the two ASCII-only range forms.
+C<\p{SpacePerl}> and C<\p{Space}> match identically starting with Perl
+v5.18. In earlier versions, these differ only in that in non-locale
+matching, C<\p{SpacePerl}> does not match the vertical tab, C<\cK>.
+Same for the two ASCII-only range forms.
=back
@@ -787,7 +811,7 @@ The POSIX class matches according to the locale, except that
C<word> uses the platform's native underscore character, no matter what
the locale is.
-=item if Unicode rules are in effect or if on an EBCDIC platform ...
+=item if Unicode rules are in effect ...
The POSIX class matches the same as the Full-range counterpart.
@@ -806,7 +830,7 @@ L<perlre/Which character set modifier is in effect?>.
It is proposed to change this behavior in a future release of Perl so that
whether or not Unicode rules are in effect would not change the
-behavior: Outside of locale or an EBCDIC code page, the POSIX classes
+behavior: Outside of locale, the POSIX classes
would behave like their ASCII-range counterparts. If you wish to
comment on this proposal, send email to C<perl5-porters@perl.org>.
@@ -840,11 +864,218 @@ either construct raises an exception.
/[01[:lower:]]/ # Matches a character that is either a
# lowercase letter, or '0' or '1'.
/[[:digit:][:^xdigit:]]/ # Matches a character that can be anything
- # except the letters 'a' to 'f'. This is
- # because the main character class is composed
- # of two POSIX character classes that are ORed
- # together, one that matches any digit, and
- # the other that matches anything that isn't a
- # hex digit. The result matches all
- # characters except the letters 'a' to 'f' and
- # 'A' to 'F'.
+ # except the letters 'a' to 'f' and 'A' to
+ # 'F'. This is because the main character
+ # class is composed of two POSIX character
+ # classes that are ORed together, one that
+ # matches any digit, and the other that
+ # matches anything that isn't a hex digit.
+ # The OR adds the digits, leaving only the
+ # letters 'a' to 'f' and 'A' to 'F' excluded.
+
+=head3 Extended Bracketed Character Classes
+X<character class>
+X<set operations>
+
+This is a fancy bracketed character class that can be used for more
+readable and less error-prone classes, and to perform set operations,
+such as intersection. An example is
+
+ /(?[ \p{Thai} & \p{Digit} ])/
+
+This will match all the digit characters that are in the Thai script.
+
+This is an experimental feature available starting in 5.18, and is
+subject to change as we gain field experience with it. Any attempt to
+use it will raise a warning, unless disabled via
+
+ no warnings "experimental::regex_sets";
+
+Comments on this feature are welcome; send email to
+C<perl5-porters@perl.org>.
+
+We can extend the example above:
+
+ /(?[ ( \p{Thai} + \p{Lao} ) & \p{Digit} ])/
+
+This matches digits that are in either the Thai or Laotian scripts.
+
+Notice the white space in these examples. This construct always has
+the C<E<sol>x> modifier turned on.
+
+The available binary operators are:
+
+ & intersection
+ + union
+ | another name for '+', hence means union
+ - subtraction (the result matches the set consisting of those
+ code points matched by the first operand, excluding any that
+ are also matched by the second operand)
+ ^ symmetric difference (the union minus the intersection). This
+ is like an exclusive or, in that the result is the set of code
+ points that are matched by either, but not both, of the
+ operands.
+
+There is one unary operator:
+
+ ! complement
+
+All the binary operators left associate, and are of equal precedence.
+The unary operator right associates, and has higher precedence. Use
+parentheses to override the default associations. Some feedback we've
+received indicates a desire for intersection to have higher precedence
+than union. This is something that feedback from the field may cause us
+to change in future releases; you may want to parenthesize copiously to
+avoid such changes affecting your code, until this feature is no longer
+considered experimental.
+
+The main restriction is that everything is a metacharacter. Thus,
+you cannot refer to single characters by doing something like this:
+
+ /(?[ a + b ])/ # Syntax error!
+
+The easiest way to specify an individual typable character is to enclose
+it in brackets:
+
+ /(?[ [a] + [b] ])/
+
+(This is the same thing as C<[ab]>.) You could also have said the
+equivalent:
+
+ /(?[[ a b ]])/
+
+(You can, of course, specify single characters by using, C<\x{ }>,
+C<\N{ }>, etc.)
+
+This last example shows the use of this construct to specify an ordinary
+bracketed character class without additional set operations. Note the
+white space within it; C<E<sol>x> is turned on even within bracketed
+character classes, except you can't have comments inside them. Hence,
+
+ (?[ [#] ])
+
+matches the literal character "#". To specify a literal white space character,
+you can escape it with a backslash, like:
+
+ /(?[ [ a e i o u \ ] ])/
+
+This matches the English vowels plus the SPACE character.
+All the other escapes accepted by normal bracketed character classes are
+accepted here as well; but unrecognized escapes that generate warnings
+in normal classes are fatal errors here.
+
+All warnings from these class elements are fatal, as well as some
+practices that don't currently warn. For example you cannot say
+
+ /(?[ [ \xF ] ])/ # Syntax error!
+
+You have to have two hex digits after a braceless C<\x> (use a leading
+zero to make two). These restrictions are to lower the incidence of
+typos causing the class to not match what you thought it would.
+
+The final difference between regular bracketed character classes and
+these, is that it is not possible to get these to match a
+multi-character fold. Thus,
+
+ /(?[ [\xDF] ])/iu
+
+does not match the string C<ss>.
+
+You don't have to enclose POSIX class names inside double brackets,
+hence both of the following work:
+
+ /(?[ [:word:] - [:lower:] ])/
+ /(?[ [[:word:]] - [[:lower:]] ])/
+
+Any contained POSIX character classes, including things like C<\w> and C<\D>
+respect the C<E<sol>a> (and C<E<sol>aa>) modifiers.
+
+C<< (?[ ]) >> is a regex-compile-time construct. Any attempt to use
+something which isn't knowable at the time the containing regular
+expression is compiled is a fatal error. In practice, this means
+just three limitiations:
+
+=over 4
+
+=item 1
+
+This construct cannot be used within the scope of
+C<use locale> (or the C<E<sol>l> regex modifier).
+
+=item 2
+
+Any
+L<user-defined property|perlunicode/"User-Defined Character Properties">
+used must be already defined by the time the regular expression is
+compiled (but note that this construct can be used instead of such
+properties).
+
+=item 3
+
+A regular expression that otherwise would compile
+using C<E<sol>d> rules, and which uses this construct will instead
+use C<E<sol>u>. Thus this construct tells Perl that you don't want
+C<E<sol>d> rules for the entire regular expression containing it.
+
+=back
+
+The C<E<sol>x> processing within this class is an extended form.
+Besides the characters that are considered white space in normal C</x>
+processing, there are 5 others, recommended by the Unicode standard:
+
+ U+0085 NEXT LINE
+ U+200E LEFT-TO-RIGHT MARK
+ U+200F RIGHT-TO-LEFT MARK
+ U+2028 LINE SEPARATOR
+ U+2029 PARAGRAPH SEPARATOR
+
+Note that skipping white space applies only to the interior of this
+construct. There must not be any space between any of the characters
+that form the initial C<(?[>. Nor may there be space between the
+closing C<])> characters.
+
+Just as in all regular expressions, the pattern can can be built up by
+including variables that are interpolated at regex compilation time.
+Care must be taken to ensure that you are getting what you expect. For
+example:
+
+ my $thai_or_lao = '\p{Thai} + \p{Lao}';
+ ...
+ qr/(?[ \p{Digit} & $thai_or_lao ])/;
+
+compiles to
+
+ qr/(?[ \p{Digit} & \p{Thai} + \p{Lao} ])/;
+
+But this does not have the effect that someone reading the code would
+likely expect, as the intersection applies just to C<\p{Thai}>,
+excluding the Laotian. Pitfalls like this can be avoided by
+parenthesizing the component pieces:
+
+ my $thai_or_lao = '( \p{Thai} + \p{Lao} )';
+
+But any modifiers will still apply to all the components:
+
+ my $lower = '\p{Lower} + \p{Digit}';
+ qr/(?[ \p{Greek} & $lower ])/i;
+
+matches upper case things. You can avoid surprises by making the
+components into instances of this construct by compiling them:
+
+ my $thai_or_lao = qr/(?[ \p{Thai} + \p{Lao} ])/;
+ my $lower = qr/(?[ \p{Lower} + \p{Digit} ])/;
+
+When these are embedded in another pattern, what they match does not
+change, regardless of parenthesization or what modifiers are in effect
+in that outer pattern.
+
+Due to the way that Perl parses things, your parentheses and brackets
+may need to be balanced, even including comments. If you run into any
+examples, please send them to C<perlbug@perl.org>, so that we can have a
+concrete example for this man page.
+
+We may change it so that things that remain legal uses in normal bracketed
+character classes might become illegal within this experimental
+construct. One proposal, for example, is to forbid adjacent uses of the
+same character, as in C<(?[ [aa] ])>. The motivation for such a change
+is that this usage is likely a typo, as the second "a" adds nothing.
diff --git a/gnu/usr.bin/perl/pod/perlreftut.pod b/gnu/usr.bin/perl/pod/perlreftut.pod
index 9565562711d..bd888eb5a02 100644
--- a/gnu/usr.bin/perl/pod/perlreftut.pod
+++ b/gnu/usr.bin/perl/pod/perlreftut.pod
@@ -18,9 +18,9 @@ Fortunately, you only need to know 10% of what's in the main page to get
=head1 Who Needs Complicated Data Structures?
-One problem that came up all the time in Perl 4 was how to represent a
-hash whose values were lists. Perl 4 had hashes, of course, but the
-values had to be scalars; they couldn't be lists.
+One problem that comes up all the time is needing a hash whose values are
+lists. Perl has hashes, of course, but the values have to be scalars;
+they can't be lists.
Why would you want a hash of lists? Let's take a simple example: You
have a file of city and country names, like this:
@@ -47,8 +47,7 @@ country, and append the new city to the list. When you're done reading
the input, iterate over the hash as usual, sorting each list of cities
before you print it out.
-If hash values can't be lists, you lose. In Perl 4, hash values can't
-be lists; they can only be strings. You lose. You'd probably have to
+If hash values couldn't be lists, you lose. You'd probably have to
combine all the cities into a single string somehow, and then when
time came to write the output, you'd have to break the string into a
list, sort the list, and turn it back into a string. This is messy
@@ -403,7 +402,7 @@ to push C<Athens> onto an array that doesn't exist, so it helpfully
makes a new, empty, anonymous array for you, installs it into
C<%table>, and then pushes C<Athens> onto it. This is called
'autovivification'--bringing things to life automatically. Perl saw
-that they key wasn't in the hash, so it created a new hash entry
+that the key wasn't in the hash, so it created a new hash entry
automatically. Perl saw that you wanted to use the hash value as an
array, so it created a new empty array and installed a reference to it
in the hash automatically. And as usual, Perl made the array one
diff --git a/gnu/usr.bin/perl/pod/perlreguts.pod b/gnu/usr.bin/perl/pod/perlreguts.pod
index ec1c243f8a9..bb7f372c664 100644
--- a/gnu/usr.bin/perl/pod/perlreguts.pod
+++ b/gnu/usr.bin/perl/pod/perlreguts.pod
@@ -182,9 +182,9 @@ POSIX char classes called C<regnode_charclass_class> which has an
additional 4-byte (32-bit) bitmap indicating which POSIX char classes
have been included.
- regnode_charclass_class U32 arg1;
- char bitmap[ANYOF_BITMAP_SIZE];
- char classflags[ANYOF_CLASSBITMAP_SIZE];
+ regnode_charclass_class U32 arg1;
+ char bitmap[ANYOF_BITMAP_SIZE];
+ char classflags[ANYOF_CLASSBITMAP_SIZE];
=back
@@ -354,20 +354,23 @@ simpler form.
The call graph looks like this:
- reg() # parse a top level regex, or inside of parens
- regbranch() # parse a single branch of an alternation
- regpiece() # parse a pattern followed by a quantifier
- regatom() # parse a simple pattern
- regclass() # used to handle a class
- reg() # used to handle a parenthesised subpattern
- ....
- ...
- regtail() # finish off the branch
- ...
- regtail() # finish off the branch sequence. Tie each
- # branch's tail to the tail of the sequence
- # (NEW) In Debug mode this is
- # regtail_study().
+ reg() # parse a top level regex, or inside of
+ # parens
+ regbranch() # parse a single branch of an alternation
+ regpiece() # parse a pattern followed by a quantifier
+ regatom() # parse a simple pattern
+ regclass() # used to handle a class
+ reg() # used to handle a parenthesised
+ # subpattern
+ ....
+ ...
+ regtail() # finish off the branch
+ ...
+ regtail() # finish off the branch sequence. Tie each
+ # branch's tail to the tail of the
+ # sequence
+ # (NEW) In Debug mode this is
+ # regtail_study().
A grammar form might be something like this:
@@ -383,6 +386,52 @@ A grammar form might be something like this:
piece : _piece
| _piece quant
+=head3 Parsing complications
+
+The implication of the above description is that a pattern containing nested
+parentheses will result in a call graph which cycles through C<reg()>,
+C<regbranch()>, C<regpiece()>, C<regatom()>, C<reg()>, C<regbranch()> I<etc>
+multiple times, until the deepest level of nesting is reached. All the above
+routines return a pointer to a C<regnode>, which is usually the last regnode
+added to the program. However, one complication is that reg() returns NULL
+for parsing C<(?:)> syntax for embedded modifiers, setting the flag
+C<TRYAGAIN>. The C<TRYAGAIN> propagates upwards until it is captured, in
+some cases by by C<regatom()>, but otherwise unconditionally by
+C<regbranch()>. Hence it will never be returned by C<regbranch()> to
+C<reg()>. This flag permits patterns such as C<(?i)+> to be detected as
+errors (I<Quantifier follows nothing in regex; marked by <-- HERE in m/(?i)+
+<-- HERE />).
+
+Another complication is that the representation used for the program differs
+if it needs to store Unicode, but it's not always possible to know for sure
+whether it does until midway through parsing. The Unicode representation for
+the program is larger, and cannot be matched as efficiently. (See L</Unicode
+and Localisation Support> below for more details as to why.) If the pattern
+contains literal Unicode, it's obvious that the program needs to store
+Unicode. Otherwise, the parser optimistically assumes that the more
+efficient representation can be used, and starts sizing on this basis.
+However, if it then encounters something in the pattern which must be stored
+as Unicode, such as an C<\x{...}> escape sequence representing a character
+literal, then this means that all previously calculated sizes need to be
+redone, using values appropriate for the Unicode representation. Currently,
+all regular expression constructions which can trigger this are parsed by code
+in C<regatom()>.
+
+To avoid wasted work when a restart is needed, the sizing pass is abandoned
+- C<regatom()> immediately returns NULL, setting the flag C<RESTART_UTF8>.
+(This action is encapsulated using the macro C<REQUIRE_UTF8>.) This restart
+request is propagated up the call chain in a similar fashion, until it is
+"caught" in C<Perl_re_op_compile()>, which marks the pattern as containing
+Unicode, and restarts the sizing pass. It is also possible for constructions
+within run-time code blocks to turn out to need Unicode representation.,
+which is signalled by C<S_compile_runtime_code()> returning false to
+C<Perl_re_op_compile()>.
+
+The restart was previously implemented using a C<longjmp> in C<regatom()>
+back to a C<setjmp> in C<Perl_re_op_compile()>, but this proved to be
+problematic as the latter is a large function containing many automatic
+variables, which interact badly with the emergent control flow of C<setjmp>.
+
=head3 Debug Output
In the 5.9.x development version of perl you can C<< use re Debug => 'PARSE' >>
@@ -489,11 +538,11 @@ Now for something much more complex: C</x(?:foo*|b[a][rR])(foo|bar)$/>
atom
>)$< 34 tail~ BRANCH (28)
36 tsdy~ BRANCH (END) (31)
- ~ attach to CLOSE1 (34) offset to 3
+ ~ attach to CLOSE1 (34) offset to 3
tsdy~ EXACT <foo> (EXACT) (29)
- ~ attach to CLOSE1 (34) offset to 5
+ ~ attach to CLOSE1 (34) offset to 5
tsdy~ EXACT <bar> (EXACT) (32)
- ~ attach to CLOSE1 (34) offset to 2
+ ~ attach to CLOSE1 (34) offset to 2
>$< tail~ BRANCH (3)
~ BRANCH (9)
~ TAIL (25)
@@ -765,7 +814,7 @@ implement things such as the stringification of C<qr//>.
The other structure is pointed to be the C<regexp> struct's
C<pprivate> and is in addition to C<intflags> in the same struct
considered to be the property of the regex engine which compiled the
-regular expression;
+regular expression;
The regexp structure contains all the data that perl needs to be aware of
to properly work with the regular expression. It includes data about
@@ -792,31 +841,24 @@ The following structure is used as the C<pprivate> struct by perl's
regex engine. Since it is specific to perl it is only of curiosity
value to other engine implementations.
- typedef struct regexp_internal {
- regexp_paren_ofs *swap; /* Swap copy of *startp / *endp */
- U32 *offsets; /* offset annotations 20001228 MJD
- data about mapping the program to the
- string*/
- regnode *regstclass; /* Optional startclass as identified or constructed
- by the optimiser */
- struct reg_data *data; /* Additional miscellaneous data used by the program.
- Used to make it easier to clone and free arbitrary
- data that the regops need. Often the ARG field of
- a regop is an index into this structure */
- regnode program[1]; /* Unwarranted chumminess with compiler. */
- } regexp_internal;
+ typedef struct regexp_internal {
+ U32 *offsets; /* offset annotations 20001228 MJD
+ * data about mapping the program to
+ * the string*/
+ regnode *regstclass; /* Optional startclass as identified or
+ * constructed by the optimiser */
+ struct reg_data *data; /* Additional miscellaneous data used
+ * by the program. Used to make it
+ * easier to clone and free arbitrary
+ * data that the regops need. Often the
+ * ARG field of a regop is an index
+ * into this structure */
+ regnode program[1]; /* Unwarranted chumminess with
+ * compiler. */
+ } regexp_internal;
=over 5
-=item C<swap>
-
-C<swap> formerly was an extra set of startp/endp stored in a
-C<regexp_paren_ofs> struct. This was used when the last successful match
-was from the same pattern as the current pattern, so that a partial
-match didn't overwrite the previous match's results, but it caused a
-problem with re-entrant code such as trying to build the UTF-8 swashes.
-Currently unused and left for backward compatibility with 5.10.0.
-
=item C<offsets>
Offsets holds a mapping of offset in the C<program>
diff --git a/gnu/usr.bin/perl/pod/perlreref.pod b/gnu/usr.bin/perl/pod/perlreref.pod
index 954a423759c..d76b407f901 100644
--- a/gnu/usr.bin/perl/pod/perlreref.pod
+++ b/gnu/usr.bin/perl/pod/perlreref.pod
@@ -136,7 +136,7 @@ and L<perlunicode> for details.
\S A non-whitespace character
\h An horizontal whitespace
\H A non horizontal whitespace
- \N A non newline (when not followed by '{NAME}'; experimental;
+ \N A non newline (when not followed by '{NAME}';;
not valid in a character class; equivalent to [^\n]; it's
like '.' without /s modifier)
\v A vertical whitespace
diff --git a/gnu/usr.bin/perl/pod/perlretut.pod b/gnu/usr.bin/perl/pod/perlretut.pod
index a3ff6ad28c4..bf4ab3bc296 100644
--- a/gnu/usr.bin/perl/pod/perlretut.pod
+++ b/gnu/usr.bin/perl/pod/perlretut.pod
@@ -869,7 +869,7 @@ with one higher than the maximum reached across all the alternatives.
=head2 Position information
-In addition to what was matched, Perl (since 5.6.0) also provides the
+In addition to what was matched, Perl also provides the
positions of what was matched as contents of the C<@-> and C<@+>
arrays. C<$-[0]> is the position of the start of the entire match and
C<$+[0]> is the position of the end. Similarly, C<$-[n]> is the
@@ -1874,8 +1874,8 @@ work if they appear in a regular expression embedded directly in a
program, but not when contained in a string that is interpolated in a
pattern.
-With the advent of 5.6.0, Perl regexps can handle more than just the
-standard ASCII character set. Perl now supports I<Unicode>, a standard
+Perl regexps can handle more than just the
+standard ASCII character set. Perl supports I<Unicode>, a standard
for representing the alphabets from virtually all of the world's written
languages, and a host of symbols. Perl's text strings are Unicode strings, so
they can contain characters with a value (codepoint or character number) higher
@@ -1926,13 +1926,13 @@ Consortium, L<http://www.unicode.org/charts/charindex.html>; explanatory
material with links to other resources at
L<http://www.unicode.org/standard/where>.
-The answer to requirement 2) is, as of 5.6.0, that a regexp (mostly)
-uses Unicode characters. (The "mostly" is for messy backward
+The answer to requirement 2) is that a regexp (mostly)
+uses Unicode characters. The "mostly" is for messy backward
compatibility reasons, but starting in Perl 5.14, any regex compiled in
the scope of a C<use feature 'unicode_strings'> (which is automatically
turned on within the scope of a C<use 5.012> or higher) will turn that
"mostly" into "always". If you want to handle Unicode properly, you
-should ensure that C<'unicode_strings'> is turned on.)
+should ensure that C<'unicode_strings'> is turned on.
Internally, this is encoded to bytes using either UTF-8 or a native 8
bit encoding, depending on the history of the string, but conceptually
it is a sequence of characters, not bytes. See L<perlunitut> for a
@@ -2618,23 +2618,23 @@ C<(?((?{...}))yes-regexp|no-regexp)>. In other words, in the case of a
code expression, we don't need the extra parentheses around the
conditional.
-If you try to use code expressions with interpolating variables, Perl
-may surprise you:
+If you try to use code expressions where the code text is contained within
+an interpolated variable, rather than appearing literally in the pattern,
+Perl may surprise you:
$bar = 5;
$pat = '(?{ 1 })';
/foo(?{ $bar })bar/; # compiles ok, $bar not interpolated
- /foo(?{ 1 })$bar/; # compile error!
+ /foo(?{ 1 })$bar/; # compiles ok, $bar interpolated
/foo${pat}bar/; # compile error!
$pat = qr/(?{ $foo = 1 })/; # precompile code regexp
/foo${pat}bar/; # compiles ok
-If a regexp has (1) code expressions and interpolating variables, or
-(2) a variable that interpolates a code expression, Perl treats the
-regexp as an error. If the code expression is precompiled into a
-variable, however, interpolating is ok. The question is, why is this
-an error?
+If a regexp has a variable that interpolates a code expression, Perl
+treats the regexp as an error. If the code expression is precompiled into
+a variable, however, interpolating is ok. The question is, why is this an
+error?
The reason is that variable interpolation and code expressions
together pose a security risk. The combination is dangerous because
@@ -2657,7 +2657,6 @@ security check by invoking S<C<use re 'eval'>>:
use re 'eval'; # throw caution out the door
$bar = 5;
$pat = '(?{ 1 })';
- /foo(?{ 1 })$bar/; # compiles ok
/foo${pat}bar/; # compiles ok
Another form of code expression is the I<pattern code expression>.
@@ -2698,8 +2697,9 @@ Ha! Try that with your garden variety regexp package...
Note that the variables C<$z0> and C<$z1> are not substituted when the
regexp is compiled, as happens for ordinary variables outside a code
-expression. Rather, the code expressions are evaluated when Perl
-encounters them during the search for a match.
+expression. Rather, the whole code block is parsed as perl code at the
+same time as perl is compiling the code containing the literal regexp
+pattern.
The regexp without the C<//x> modifier is
diff --git a/gnu/usr.bin/perl/pod/perlsource.pod b/gnu/usr.bin/perl/pod/perlsource.pod
index 16252eb3f07..81e3e94160f 100644
--- a/gnu/usr.bin/perl/pod/perlsource.pod
+++ b/gnu/usr.bin/perl/pod/perlsource.pod
@@ -116,6 +116,13 @@ Tests for perl's method resolution order implementations (see L<mro>).
Tests for perl's built in functions that don't fit into any of the
other directories.
+=item * F<t/opbasic/>
+
+Tests for perl's built in functions which, like those in F<t/op/>, do not fit
+into any of the other directories, but which, in addition, cannot use
+F<t/test.pl>,as that program depends on functionality which the
+test file itself is testing.
+
=item * F<t/re/>
Tests for regex related functions or behaviour. (These used to live in
diff --git a/gnu/usr.bin/perl/pod/perlunicode.pod b/gnu/usr.bin/perl/pod/perlunicode.pod
index 77daca34a7d..7a98285acc7 100644
--- a/gnu/usr.bin/perl/pod/perlunicode.pod
+++ b/gnu/usr.bin/perl/pod/perlunicode.pod
@@ -28,8 +28,10 @@ C<use feature 'unicode_strings'> is specified. (This is automatically
selected if you use C<use 5.012> or higher.) Failure to do this can
trigger unexpected surprises. See L</The "Unicode Bug"> below.
-This pragma doesn't affect I/O, and there are still several places
-where Unicode isn't fully supported, such as in filenames.
+This pragma doesn't affect I/O. Nor does it change the internal
+representation of strings, only their interpretation. There are still
+several places where Unicode isn't fully supported, such as in
+filenames.
=item Input and Output Layers
@@ -72,8 +74,7 @@ See L</"Byte and Character Semantics"> for more details.
=head2 Byte and Character Semantics
-Beginning with version 5.6, Perl uses logically-wide characters to
-represent strings internally.
+Perl uses logically-wide characters to represent strings internally.
Starting in Perl 5.14, Perl-level operations work with
characters rather than bytes within the scope of a
@@ -97,13 +98,8 @@ while C<use locale ':not_characters'> effectively also selects
C<use feature 'unicode_strings'> in its scope; see L<perllocale>.)
Otherwise, Perl uses the platform's native
byte semantics for characters whose code points are less than 256, and
-Unicode semantics for those greater than 255. On EBCDIC platforms, this
-is almost seamless, as the EBCDIC code pages that Perl handles are
-equivalent to Unicode's first 256 code points. (The exception is that
-EBCDIC regular expression case-insensitive matching rules are not as
-as robust as Unicode's.) But on ASCII platforms, Perl uses US-ASCII
-(or Basic Latin in Unicode terminology) byte semantics, meaning that characters
-whose ordinal numbers are in the range 128 - 255 are undefined except for their
+Unicode semantics for those greater than 255. That means that non-ASCII
+characters are undefined except for their
ordinal numbers. This means that none have case (upper and lower), nor are any
a member of character classes, like C<[:alpha:]> or C<\w>. (But all do belong
to the C<\W> class or the Perl regular expression extension C<[:^alpha:]>.)
@@ -720,7 +716,8 @@ This is a synonym for C<\p{Present_In=*}>
=item B<C<\p{PerlSpace}>>
-This is the same as C<\s>, restricted to ASCII, namely C<S<[ \f\n\r\t]>>.
+This is the same as C<\s>, restricted to ASCII, namely C<S<[ \f\n\r\t]>>
+and starting in Perl v5.18, experimentally, a vertical tab.
Mnemonic: Perl's (original) space
@@ -807,7 +804,9 @@ L<perlrecharclass/POSIX Character Classes>.
=head2 User-Defined Character Properties
You can define your own binary character properties by defining subroutines
-whose names begin with "In" or "Is". The subroutines can be defined in any
+whose names begin with "In" or "Is". (The experimental feature
+L<perlre/(?[ ])> provides an alternative which allows more complex
+definitions.) The subroutines can be defined in any
package. The user-defined properties can be used in the regular expression
C<\p> and C<\P> constructs; if you are using a user-defined property from a
package other than the one you are in, you must specify its package in the
@@ -978,62 +977,93 @@ Level 1 - Basic Unicode Support
RL1.1 Hex Notation - done [1]
RL1.2 Properties - done [2][3]
RL1.2a Compatibility Properties - done [4]
- RL1.3 Subtraction and Intersection - MISSING [5]
+ RL1.3 Subtraction and Intersection - experimental [5]
RL1.4 Simple Word Boundaries - done [6]
RL1.5 Simple Loose Matches - done [7]
RL1.6 Line Boundaries - MISSING [8][9]
RL1.7 Supplementary Code Points - done [10]
- [1] \x{...}
- [2] \p{...} \P{...}
- [3] supports not only minimal list, but all Unicode character
- properties (see Unicode Character Properties above)
- [4] \d \D \s \S \w \W \X [:prop:] [:^prop:]
- [5] can use regular expression look-ahead [a] or
- user-defined character properties [b] to emulate set
- operations
- [6] \b \B
- [7] note that Perl does Full case-folding in matching (but with
- bugs), not Simple: for example U+1F88 is equivalent to
- U+1F00 U+03B9, instead of just U+1F80. This difference
- matters mainly for certain Greek capital letters with certain
- modifiers: the Full case-folding decomposes the letter,
- while the Simple case-folding would map it to a single
- character.
- [8] should do ^ and $ also on U+000B (\v in C), FF (\f), CR
- (\r), CRLF (\r\n), NEL (U+0085), LS (U+2028), and PS
- (U+2029); should also affect <>, $., and script line
- numbers; should not split lines within CRLF [c] (i.e. there
- is no empty line between \r and \n)
- [9] Linebreaking conformant with UAX#14 "Unicode Line Breaking
- Algorithm" is available through the Unicode::LineBreaking
- module.
- [10] UTF-8/UTF-EBDDIC used in Perl allows not only U+10000 to
- U+10FFFF but also beyond U+10FFFF
-
-[a] You can mimic class subtraction using lookahead.
+=over 4
+
+=item [1]
+
+\x{...}
+
+=item [2]
+
+\p{...} \P{...}
+
+=item [3]
+
+supports not only minimal list, but all Unicode character properties (see Unicode Character Properties above)
+
+=item [4]
+
+\d \D \s \S \w \W \X [:prop:] [:^prop:]
+
+=item [5]
+
+The experimental feature in v5.18 "(?[...])" accomplishes this. See
+L<perlre/(?[ ])>. If you don't want to use an experimental feature,
+you can use one of the following:
+
+=over 4
+
+=item * Regular expression look-ahead
+
+You can mimic class subtraction using lookahead.
For example, what UTS#18 might write as
- [{Greek}-[{UNASSIGNED}]]
+ [{Block=Greek}-[{UNASSIGNED}]]
in Perl can be written as:
- (?!\p{Unassigned})\p{InGreekAndCoptic}
- (?=\p{Assigned})\p{InGreekAndCoptic}
+ (?!\p{Unassigned})\p{Block=Greek}
+ (?=\p{Assigned})\p{Block=Greek}
But in this particular example, you probably really want
- \p{GreekAndCoptic}
+ \p{Greek}
which will match assigned characters known to be part of the Greek script.
-Also see the L<Unicode::Regex::Set> module; it does implement the full
-UTS#18 grouping, intersection, union, and removal (subtraction) syntax.
+=item * CPAN module L<Unicode::Regex::Set>
-[b] '+' for union, '-' for removal (set-difference), '&' for intersection
-(see L</"User-Defined Character Properties">)
+It does implement the full UTS#18 grouping, intersection, union, and
+removal (subtraction) syntax.
-[c] Try the C<:crlf> layer (see L<PerlIO>).
+=item * L</"User-Defined Character Properties">
+
+'+' for union, '-' for removal (set-difference), '&' for intersection
+
+=back
+
+=item [6]
+
+\b \B
+
+=item [7]
+
+Note that Perl does Full case-folding in matching (but with bugs), not Simple: for example U+1F88 is equivalent to U+1F00 U+03B9, instead of just U+1F80. This difference matters mainly for certain Greek capital letters with certain modifiers: the Full case-folding decomposes the letter, while the Simple case-folding would map it to a single character.
+
+=item [8]
+
+Should do ^ and $ also on U+000B (\v in C), FF (\f), CR (\r), CRLF
+(\r\n), NEL (U+0085), LS (U+2028), and PS (U+2029); should also affect
+<>, $., and script line numbers; should not split lines within CRLF
+(i.e. there is no empty line between \r and \n). For CRLF, try the
+C<:crlf> layer (see L<PerlIO>).
+
+=item [9]
+
+Linebreaking conformant with UAX#14 "Unicode Line Breaking Algorithm" is available through the Unicode::LineBreaking module.
+
+=item [10]
+
+UTF-8/UTF-EBDDIC used in Perl allows not only U+10000 to
+U+10FFFF but also beyond U+10FFFF
+
+=back
=item *
@@ -1330,7 +1360,7 @@ results, or both, but it is not.
The following are such interfaces. Also, see L</The "Unicode Bug">.
For all of these interfaces Perl
-currently (as of 5.8.3) simply assumes byte strings both as arguments
+currently (as of v5.16.0) simply assumes byte strings both as arguments
and results, or UTF-8 strings if the (problematic) C<encoding> pragma has been used.
One reason that Perl does not attempt to resolve the role of Unicode in
@@ -1544,9 +1574,8 @@ are valid UTF-8.
=item *
-C<is_utf8_char(s)> returns true if the pointer points to a valid UTF-8
-character. However, this function should not be used because of
-security concerns. Instead, use C<is_utf8_string()>.
+C<is_utf8_char_buf(buf, buf_end)> returns true if the pointer points to
+a valid UTF-8 character.
=item *
@@ -1722,7 +1751,7 @@ to work under 5.6, so you should be safe to try them out.
A filehandle that should read or write UTF-8
- if ($] > 5.007) {
+ if ($] > 5.008) {
binmode $fh, ":encoding(utf8)";
}
@@ -1733,10 +1762,10 @@ A scalar that is going to be passed to some extension
Be it Compress::Zlib, Apache::Request or any extension that has no
mention of Unicode in the manpage, you need to make sure that the
UTF8 flag is stripped off. Note that at the time of this writing
-(October 2002) the mentioned modules are not UTF-8-aware. Please
+(January 2012) the mentioned modules are not UTF-8-aware. Please
check the documentation to verify if this is still true.
- if ($] > 5.007) {
+ if ($] > 5.008) {
require Encode;
$val = Encode::encode_utf8($val); # make octets
}
@@ -1748,7 +1777,7 @@ A scalar we got back from an extension
If you believe the scalar comes back as UTF-8, you will most likely
want the UTF8 flag restored:
- if ($] > 5.007) {
+ if ($] > 5.008) {
require Encode;
$val = Encode::decode_utf8($val);
}
@@ -1757,7 +1786,7 @@ want the UTF8 flag restored:
Same thing, if you are really sure it is UTF-8
- if ($] > 5.007) {
+ if ($] > 5.008) {
require Encode;
Encode::_utf8_on($val);
}
@@ -1770,14 +1799,14 @@ When the database contains only UTF-8, a wrapper function or method is
a convenient way to replace all your fetchrow_array and
fetchrow_hashref calls. A wrapper function will also make it easier to
adapt to future enhancements in your database driver. Note that at the
-time of this writing (October 2002), the DBI has no standardized way
+time of this writing (January 2012), the DBI has no standardized way
to deal with UTF-8 data. Please check the documentation to verify if
that is still true.
sub fetchrow {
# $what is one of fetchrow_{array,hashref}
my($self, $sth, $what) = @_;
- if ($] < 5.007) {
+ if ($] < 5.008) {
return $sth->$what;
} else {
require Encode;
@@ -1813,7 +1842,7 @@ Scalars that contain only ASCII and are marked as UTF-8 are sometimes
a drag to your program. If you recognize such a situation, just remove
the UTF8 flag:
- utf8::downgrade($val) if $] > 5.007;
+ utf8::downgrade($val) if $] > 5.008;
=back
diff --git a/gnu/usr.bin/perl/pod/perlunifaq.pod b/gnu/usr.bin/perl/pod/perlunifaq.pod
index 9bd103c9ac2..f952d1a3f91 100644
--- a/gnu/usr.bin/perl/pod/perlunifaq.pod
+++ b/gnu/usr.bin/perl/pod/perlunifaq.pod
@@ -141,16 +141,16 @@ concern, and you can just C<eval> dumped data as always.
Starting in Perl 5.14 (and partially in Perl 5.12), just put a
C<use feature 'unicode_strings'> near the beginning of your program.
Within its lexical scope you shouldn't have this problem. It also is
-automatically enabled under C<use feature ':5.12'> or using C<-E> on the
-command line for Perl 5.12 or higher.
+automatically enabled under C<use feature ':5.12'> or C<use v5.12> or
+using C<-E> on the command line for Perl 5.12 or higher.
The rationale for requiring this is to not break older programs that
rely on the way things worked before Unicode came along. Those older
programs knew only about the ASCII character set, and so may not work
properly for additional characters. When a string is encoded in UTF-8,
Perl assumes that the program is prepared to deal with Unicode, but when
-the string isn't, Perl assumes that only ASCII (unless it is an EBCDIC
-platform) is wanted, and so those characters that are not ASCII
+the string isn't, Perl assumes that only ASCII
+is wanted, and so those characters that are not ASCII
characters aren't recognized as to what they would be in Unicode.
C<use feature 'unicode_strings'> tells Perl to treat all characters as
Unicode, whether the string is encoded in UTF-8 or not, thus avoiding
diff --git a/gnu/usr.bin/perl/pod/perluniintro.pod b/gnu/usr.bin/perl/pod/perluniintro.pod
index 8ce4b7b4464..c0cca15194d 100644
--- a/gnu/usr.bin/perl/pod/perluniintro.pod
+++ b/gnu/usr.bin/perl/pod/perluniintro.pod
@@ -137,7 +137,7 @@ forms>, of which I<UTF-8> is perhaps the most popular. UTF-8 is a
variable length encoding that encodes Unicode characters as 1 to 6
bytes. Other encodings
include UTF-16 and UTF-32 and their big- and little-endian variants
-(UTF-8 is byte-order independent) The ISO/IEC 10646 defines the UCS-2
+(UTF-8 is byte-order independent). The ISO/IEC 10646 defines the UCS-2
and UCS-4 encoding forms.
For more information about encodings--for instance, to learn what
@@ -145,12 +145,12 @@ I<surrogates> and I<byte order marks> (BOMs) are--see L<perlunicode>.
=head2 Perl's Unicode Support
-Starting from Perl 5.6.0, Perl has had the capacity to handle Unicode
-natively. Perl 5.8.0, however, is the first recommended release for
+Starting from Perl v5.6.0, Perl has had the capacity to handle Unicode
+natively. Perl v5.8.0, however, is the first recommended release for
serious Unicode work. The maintenance release 5.6.1 fixed many of the
problems of the initial Unicode implementation, but for example
regular expressions still do not work with Unicode in 5.6.1.
-Perl 5.14.0 is the first release where Unicode support is
+Perl v5.14.0 is the first release where Unicode support is
(almost) seamlessly integrable without some gotchas (the exception being
some differences in L<quotemeta|perlfunc/quotemeta>, which is fixed
starting in Perl 5.16.0). To enable this
@@ -159,12 +159,12 @@ automatically selected if you C<use 5.012> or higher). See L<feature>.
(5.14 also fixes a number of bugs and departures from the Unicode
standard.)
-Before Perl 5.8.0, the use of C<use utf8> was used to declare
+Before Perl v5.8.0, the use of C<use utf8> was used to declare
that operations in the current block or file would be Unicode-aware.
This model was found to be wrong, or at least clumsy: the "Unicodeness"
is now carried with the data, instead of being attached to the
operations.
-Starting with Perl 5.8.0, only one case remains where an explicit C<use
+Starting with Perl v5.8.0, only one case remains where an explicit C<use
utf8> is needed: if your Perl script itself is encoded in UTF-8, you can
use UTF-8 in your identifier names, and in string and regular expression
literals, by saying C<use utf8>. This is not the default because
@@ -176,7 +176,7 @@ Perl supports both pre-5.6 strings of eight-bit native bytes, and
strings of Unicode characters. The general principle is that Perl tries
to keep its data as eight-bit bytes for as long as possible, but as soon
as Unicodeness cannot be avoided, the data is transparently upgraded
-to Unicode. Prior to Perl 5.14, the upgrade was not completely
+to Unicode. Prior to Perl v5.14.0, the upgrade was not completely
transparent (see L<perlunicode/The "Unicode Bug">), and for backwards
compatibility, full transparency is not gained unless C<use feature
'unicode_strings'> (see L<feature>) or C<use 5.012> (or higher) is
@@ -415,7 +415,7 @@ streams, use explicit layers directly in the C<open()> call.
You can switch encodings on an already opened stream by using
C<binmode()>; see L<perlfunc/binmode>.
-The C<:locale> does not currently (as of Perl 5.8.0) work with
+The C<:locale> does not currently work with
C<open()> and C<binmode()>, only with the C<open> pragma. The
C<:utf8> and C<:encoding(...)> methods do work with all of C<open()>,
C<binmode()>, and the C<open> pragma.
diff --git a/gnu/usr.bin/perl/pod/perlutil.pod b/gnu/usr.bin/perl/pod/perlutil.pod
index 040f51d5f65..3f53ad0fa51 100644
--- a/gnu/usr.bin/perl/pod/perlutil.pod
+++ b/gnu/usr.bin/perl/pod/perlutil.pod
@@ -232,7 +232,7 @@ came along modules included in the perl distribution.
B<piconv> is a Perl version of B<iconv>, a character encoding converter
widely available for various Unixen today. This script was primarily a
-technology demonstrator for Perl 5.8.0, but you can use piconv in the
+technology demonstrator for Perl v5.8.0, but you can use piconv in the
place of iconv for virtually any case.
=item L<ptar>
diff --git a/gnu/usr.bin/perl/pp_pack.c b/gnu/usr.bin/perl/pp_pack.c
index 273908cf982..6c3dc5f562b 100644
--- a/gnu/usr.bin/perl/pp_pack.c
+++ b/gnu/usr.bin/perl/pp_pack.c
@@ -920,7 +920,7 @@ S_measure_struct(pTHX_ tempsym_t* symptr)
* returns char pointer to char after match, or NULL
*/
STATIC const char *
-S_group_end(pTHX_ register const char *patptr, register const char *patend, char ender)
+S_group_end(pTHX_ const char *patptr, const char *patend, char ender)
{
PERL_ARGS_ASSERT_GROUP_END;
@@ -951,7 +951,7 @@ S_group_end(pTHX_ register const char *patptr, register const char *patend, char
* Advances char pointer to 1st non-digit char and returns number
*/
STATIC const char *
-S_get_num(pTHX_ register const char *patptr, I32 *lenptr )
+S_get_num(pTHX_ const char *patptr, I32 *lenptr )
{
I32 len = *patptr++ - '0';
@@ -1189,9 +1189,21 @@ first_symbol(const char *pat, const char *patend) {
/*
=for apidoc unpackstring
-The engine implementing unpack() Perl function. C<unpackstring> puts the
-extracted list items on the stack and returns the number of elements.
-Issue C<PUTBACK> before and C<SPAGAIN> after the call to this function.
+The engine implementing the unpack() Perl function.
+
+Using the template pat..patend, this function unpacks the string
+s..strend into a number of mortal SVs, which it pushes onto the perl
+argument (@_) stack (so you will need to issue a C<PUTBACK> before and
+C<SPAGAIN> after the call to this function). It returns the number of
+pushed elements.
+
+The strend and patend pointers should point to the byte following the last
+character of each string.
+
+Although this function returns its values on the perl argument stack, it
+doesn't take any parameters from that stack (and thus in particular
+there's no need to do a PUSHMARK before calling it, unlike L</call_pv> for
+example).
=cut */
@@ -1470,7 +1482,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c
if (utf8 && (symptr->flags & FLAG_WAS_UTF8)) {
for (ptr = s+len-1; ptr >= s; ptr--)
if (*ptr != 0 && !UTF8_IS_CONTINUATION(*ptr) &&
- !is_utf8_space((U8 *) ptr)) break;
+ !isSPACE_utf8(ptr)) break;
if (ptr >= s) ptr += UTF8SKIP(ptr);
else ptr++;
if (ptr > s+len)
@@ -1690,10 +1702,10 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c
len = UTF8SKIP(result);
if (!uni_to_bytes(aTHX_ &ptr, strend,
(char *) &result[1], len-1, 'U')) break;
- auv = utf8n_to_uvuni(result, len, &retlen, ckWARN(WARN_UTF8) ? 0 : UTF8_ALLOW_ANYUV);
+ auv = utf8n_to_uvuni(result, len, &retlen, UTF8_ALLOW_DEFAULT);
s = ptr;
} else {
- auv = utf8n_to_uvuni((U8*)s, strend - s, &retlen, ckWARN(WARN_UTF8) ? 0 : UTF8_ALLOW_ANYUV);
+ auv = utf8n_to_uvuni((U8*)s, strend - s, &retlen, UTF8_ALLOW_DEFAULT);
if (retlen == (STRLEN) -1 || retlen == 0)
Perl_croak(aTHX_ "Malformed UTF-8 string in unpack");
s += retlen;
@@ -2234,7 +2246,7 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, const char *strbeg, const c
if (symptr->flags & FLAG_SLASH){
if (SP - PL_stack_base - start_sp_offset <= 0)
- Perl_croak(aTHX_ "'/' must follow a numeric type in unpack");
+ break;
if( next_symbol(symptr) ){
if( symptr->howlen == e_number )
Perl_croak(aTHX_ "Count after length/code in unpack" );
@@ -2395,7 +2407,7 @@ The engine implementing pack() Perl function.
*/
void
-Perl_packlist(pTHX_ SV *cat, const char *pat, const char *patend, register SV **beglist, SV **endlist )
+Perl_packlist(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist )
{
dVAR;
tempsym_t sym;
@@ -2558,18 +2570,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )
if (lookahead.howlen == e_number) count = lookahead.length;
else {
if (items > 0) {
- if (SvGAMAGIC(*beglist)) {
- /* Avoid reading the active data more than once
- by copying it to a temporary. */
- STRLEN len;
- const char *const pv = SvPV_const(*beglist, len);
- SV *const temp
- = newSVpvn_flags(pv, len,
- SVs_TEMP | SvUTF8(*beglist));
- *beglist = temp;
- }
- count = DO_UTF8(*beglist) ?
- sv_len_utf8(*beglist) : sv_len(*beglist);
+ count = sv_len_utf8(*beglist);
}
else count = 0;
if (lookahead.code == 'Z') count++;
@@ -3110,23 +3111,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )
NV anv;
fromstr = NEXTFROM;
anv = SvNV(fromstr);
-#ifdef __VOS__
- /* VOS does not automatically map a floating-point overflow
- during conversion from double to float into infinity, so we
- do it by hand. This code should either be generalized for
- any OS that needs it, or removed if and when VOS implements
- posix-976 (suggestion to support mapping to infinity).
- Paul.Green@stratus.com 02-04-02. */
-{
-extern const float _float_constants[];
- if (anv > FLT_MAX)
- afloat = _float_constants[0]; /* single prec. inf. */
- else if (anv < -FLT_MAX)
- afloat = _float_constants[0]; /* single prec. inf. */
- else afloat = (float) anv;
-}
-#else /* __VOS__ */
-# if defined(VMS) && !defined(__IEEE_FP)
+# if defined(VMS) && !defined(_IEEE_FP)
/* IEEE fp overflow shenanigans are unavailable on VAX and optional
* on Alpha; fake it if we don't have them.
*/
@@ -3138,7 +3123,6 @@ extern const float _float_constants[];
# else
afloat = (float)anv;
# endif
-#endif /* __VOS__ */
DO_BO_PACK_N(afloat, float);
PUSH_VAR(utf8, cur, afloat);
}
@@ -3149,23 +3133,7 @@ extern const float _float_constants[];
NV anv;
fromstr = NEXTFROM;
anv = SvNV(fromstr);
-#ifdef __VOS__
- /* VOS does not automatically map a floating-point overflow
- during conversion from long double to double into infinity,
- so we do it by hand. This code should either be generalized
- for any OS that needs it, or removed if and when VOS
- implements posix-976 (suggestion to support mapping to
- infinity). Paul.Green@stratus.com 02-04-02. */
-{
-extern const double _double_constants[];
- if (anv > DBL_MAX)
- adouble = _double_constants[0]; /* double prec. inf. */
- else if (anv < -DBL_MAX)
- adouble = _double_constants[0]; /* double prec. inf. */
- else adouble = (double) anv;
-}
-#else /* __VOS__ */
-# if defined(VMS) && !defined(__IEEE_FP)
+# if defined(VMS) && !defined(_IEEE_FP)
/* IEEE fp overflow shenanigans are unavailable on VAX and optional
* on Alpha; fake it if we don't have them.
*/
@@ -3177,7 +3145,6 @@ extern const double _double_constants[];
# else
adouble = (double)anv;
# endif
-#endif /* __VOS__ */
DO_BO_PACK_N(adouble, double);
PUSH_VAR(utf8, cur, adouble);
}
@@ -3569,7 +3536,7 @@ extern const double _double_constants[];
from_utf8 = DO_UTF8(fromstr);
if (from_utf8) {
aend = aptr + fromlen;
- fromlen = sv_len_utf8(fromstr);
+ fromlen = sv_len_utf8_nomg(fromstr);
} else aend = NULL; /* Unused, but keep compilers happy */
GROWING(utf8, cat, start, cur, (fromlen+2) / 3 * 4 + (fromlen+len-1)/len * 2);
while (fromlen > 0) {
@@ -3615,11 +3582,11 @@ extern const double _double_constants[];
PP(pp_pack)
{
dVAR; dSP; dMARK; dORIGMARK; dTARGET;
- register SV *cat = TARG;
+ SV *cat = TARG;
STRLEN fromlen;
SV *pat_sv = *++MARK;
- register const char *pat = SvPV_const(pat_sv, fromlen);
- register const char *patend = pat + fromlen;
+ const char *pat = SvPV_const(pat_sv, fromlen);
+ const char *patend = pat + fromlen;
MARK++;
sv_setpvs(cat, "");
@@ -3637,8 +3604,8 @@ PP(pp_pack)
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/pp_proto.h b/gnu/usr.bin/perl/pp_proto.h
index 52011dadd3d..a4dd46d5cc0 100644
--- a/gnu/usr.bin/perl/pp_proto.h
+++ b/gnu/usr.bin/perl/pp_proto.h
@@ -27,7 +27,6 @@ PERL_CALLCONV OP *Perl_pp_binmode(pTHX);
PERL_CALLCONV OP *Perl_pp_bit_and(pTHX);
PERL_CALLCONV OP *Perl_pp_bit_or(pTHX);
PERL_CALLCONV OP *Perl_pp_bless(pTHX);
-PERL_CALLCONV OP *Perl_pp_boolkeys(pTHX);
PERL_CALLCONV OP *Perl_pp_break(pTHX);
PERL_CALLCONV OP *Perl_pp_caller(pTHX);
PERL_CALLCONV OP *Perl_pp_chdir(pTHX);
@@ -35,6 +34,7 @@ PERL_CALLCONV OP *Perl_pp_chop(pTHX);
PERL_CALLCONV OP *Perl_pp_chown(pTHX);
PERL_CALLCONV OP *Perl_pp_chr(pTHX);
PERL_CALLCONV OP *Perl_pp_chroot(pTHX);
+PERL_CALLCONV OP *Perl_pp_clonecv(pTHX);
PERL_CALLCONV OP *Perl_pp_close(pTHX);
PERL_CALLCONV OP *Perl_pp_closedir(pTHX);
PERL_CALLCONV OP *Perl_pp_complement(pTHX);
@@ -119,6 +119,7 @@ PERL_CALLCONV OP *Perl_pp_i_negate(pTHX);
PERL_CALLCONV OP *Perl_pp_i_subtract(pTHX);
PERL_CALLCONV OP *Perl_pp_index(pTHX);
PERL_CALLCONV OP *Perl_pp_int(pTHX);
+PERL_CALLCONV OP *Perl_pp_introcv(pTHX);
PERL_CALLCONV OP *Perl_pp_ioctl(pTHX);
PERL_CALLCONV OP *Perl_pp_iter(pTHX);
PERL_CALLCONV OP *Perl_pp_join(pTHX);
@@ -164,7 +165,9 @@ PERL_CALLCONV OP *Perl_pp_or(pTHX);
PERL_CALLCONV OP *Perl_pp_ord(pTHX);
PERL_CALLCONV OP *Perl_pp_pack(pTHX);
PERL_CALLCONV OP *Perl_pp_padav(pTHX);
+PERL_CALLCONV OP *Perl_pp_padcv(pTHX);
PERL_CALLCONV OP *Perl_pp_padhv(pTHX);
+PERL_CALLCONV OP *Perl_pp_padrange(pTHX);
PERL_CALLCONV OP *Perl_pp_padsv(pTHX);
PERL_CALLCONV OP *Perl_pp_pipe_op(pTHX);
PERL_CALLCONV OP *Perl_pp_pos(pTHX);
diff --git a/gnu/usr.bin/perl/pp_sort.c b/gnu/usr.bin/perl/pp_sort.c
index 364a6a013e6..bf7182bd714 100644
--- a/gnu/usr.bin/perl/pp_sort.c
+++ b/gnu/usr.bin/perl/pp_sort.c
@@ -185,8 +185,8 @@ static IV
dynprep(pTHX_ gptr *list1, gptr *list2, size_t nmemb, const SVCOMPARE_t cmp)
{
I32 sense;
- register gptr *b, *p, *q, *t, *p2;
- register gptr *last, *r;
+ gptr *b, *p, *q, *t, *p2;
+ gptr *last, *r;
IV runs = 0;
b = list1;
@@ -354,7 +354,7 @@ S_mergesortsv(pTHX_ gptr *base, size_t nmemb, SVCOMPARE_t cmp, U32 flags)
dVAR;
IV i, run, offset;
I32 sense, level;
- register gptr *f1, *f2, *t, *b, *p;
+ gptr *f1, *f2, *t, *b, *p;
int iwhich;
gptr *aux;
gptr *p1;
@@ -392,7 +392,7 @@ S_mergesortsv(pTHX_ gptr *base, size_t nmemb, SVCOMPARE_t cmp, U32 flags)
list1 = which[iwhich]; /* area where runs are now */
list2 = which[++iwhich]; /* area for merged runs */
do {
- register gptr *l1, *l2, *tp2;
+ gptr *l1, *l2, *tp2;
offset = stackp->offset;
f1 = p1 = list1 + offset; /* start of first run */
p = tp2 = list2 + offset; /* where merged run will go */
@@ -422,7 +422,7 @@ S_mergesortsv(pTHX_ gptr *base, size_t nmemb, SVCOMPARE_t cmp, U32 flags)
** and -1 when equality should look high.
*/
- register gptr *q;
+ gptr *q;
if (cmp(aTHX_ *f1, *f2) <= 0) {
q = f2; b = f1; t = l1;
sense = -1;
@@ -763,7 +763,7 @@ doqsort_all_asserts(
STATIC void /* the standard unstable (u) quicksort (qsort) */
S_qsortsvu(pTHX_ SV ** array, size_t num_elts, SVCOMPARE_t compare)
{
- register SV * temp;
+ SV * temp;
struct partition_stack_entry partition_stack[QSORT_MAX_STACK];
int next_stack_entry = 0;
int part_left;
@@ -783,10 +783,10 @@ S_qsortsvu(pTHX_ SV ** array, size_t num_elts, SVCOMPARE_t compare)
/* Inoculate large partitions against quadratic behavior */
if (num_elts > QSORT_PLAY_SAFE) {
- register size_t n;
- register SV ** const q = array;
+ size_t n;
+ SV ** const q = array;
for (n = num_elts; n > 1; ) {
- register const size_t j = (size_t)(n-- * Drand01());
+ const size_t j = (size_t)(n-- * Drand01());
temp = q[j];
q[j] = q[n];
q[n] = temp;
@@ -1350,8 +1350,8 @@ S_qsortsv(pTHX_ gptr *list1, size_t nmemb, SVCOMPARE_t cmp, U32 flags)
{
dVAR;
if ((flags & SORTf_STABLE) != 0) {
- register gptr **pp, *q;
- register size_t n, j, i;
+ gptr **pp, *q;
+ size_t n, j, i;
gptr *small[SMALLSORT], **indir, tmp;
SVCOMPARE_t savecmp;
if (nmemb <= 1) return; /* sorted trivially */
@@ -1432,7 +1432,7 @@ S_qsortsv(pTHX_ gptr *list1, size_t nmemb, SVCOMPARE_t cmp, U32 flags)
Sort an array. Here is an example:
- sortsv(AvARRAY(av), av_len(av)+1, Perl_sv_cmp_locale);
+ sortsv(AvARRAY(av), av_top_index(av)+1, Perl_sv_cmp_locale);
Currently this always uses mergesort. See sortsv_flags for a more
flexible routine.
@@ -1473,8 +1473,8 @@ Perl_sortsv_flags(pTHX_ SV **array, size_t nmemb, SVCOMPARE_t cmp, U32 flags)
PP(pp_sort)
{
dVAR; dSP; dMARK; dORIGMARK;
- register SV **p1 = ORIGMARK+1, **p2;
- register I32 max, i;
+ SV **p1 = ORIGMARK+1, **p2;
+ I32 max, i;
AV* av = NULL;
HV *stash;
GV *gv;
@@ -1586,7 +1586,7 @@ PP(pp_sort)
}
else {
if (SvREADONLY(av))
- Perl_croak_no_modify(aTHX);
+ Perl_croak_no_modify();
else
SvREADONLY_on(av);
p1 = p2 = AvARRAY(av);
@@ -1667,7 +1667,7 @@ PP(pp_sort)
if (CvDEPTH(cv)) SvREFCNT_inc_simple_void_NN(cv);
PUSHSUB(cx);
if (!is_xsub) {
- AV* const padlist = CvPADLIST(cv);
+ PADLIST * const padlist = CvPADLIST(cv);
if (++CvDEPTH(cv) >= 2) {
PERL_STACK_OVERFLOW_CHECK();
@@ -1763,10 +1763,10 @@ S_sortcv(pTHX_ SV *const a, SV *const b)
const I32 oldsaveix = PL_savestack_ix;
const I32 oldscopeix = PL_scopestack_ix;
I32 result;
+ SV *resultsv;
PMOP * const pm = PL_curpm;
OP * const sortop = PL_op;
COP * const cop = PL_curcop;
- SV **pad;
PERL_ARGS_ASSERT_SORTCV;
@@ -1777,13 +1777,19 @@ S_sortcv(pTHX_ SV *const a, SV *const b)
CALLRUNOPS(aTHX);
PL_op = sortop;
PL_curcop = cop;
- pad = PL_curpad; PL_curpad = 0;
if (PL_stack_sp != PL_stack_base + 1) {
assert(PL_stack_sp == PL_stack_base);
- result = SvIV(&PL_sv_undef);
+ resultsv = &PL_sv_undef;
+ }
+ else resultsv = *PL_stack_sp;
+ if (SvNIOK_nog(resultsv)) result = SvIV(resultsv);
+ else {
+ ENTER;
+ SAVEVPTR(PL_curpad);
+ PL_curpad = 0;
+ result = SvIV(resultsv);
+ LEAVE;
}
- else result = SvIV(*PL_stack_sp);
- PL_curpad = pad;
while (PL_scopestack_ix > oldscopeix) {
LEAVE;
}
@@ -1918,7 +1924,7 @@ S_sv_i_ncmp(pTHX_ SV *const a, SV *const b)
#define SORT_NORMAL_RETURN_VALUE(val) (((val) > 0) ? 1 : ((val) ? -1 : 0))
static I32
-S_amagic_ncmp(pTHX_ register SV *const a, register SV *const b)
+S_amagic_ncmp(pTHX_ SV *const a, SV *const b)
{
dVAR;
SV * const tmpsv = tryCALL_AMAGICbin(a,b,ncmp_amg);
@@ -1939,7 +1945,7 @@ S_amagic_ncmp(pTHX_ register SV *const a, register SV *const b)
}
static I32
-S_amagic_i_ncmp(pTHX_ register SV *const a, register SV *const b)
+S_amagic_i_ncmp(pTHX_ SV *const a, SV *const b)
{
dVAR;
SV * const tmpsv = tryCALL_AMAGICbin(a,b,ncmp_amg);
@@ -1960,7 +1966,7 @@ S_amagic_i_ncmp(pTHX_ register SV *const a, register SV *const b)
}
static I32
-S_amagic_cmp(pTHX_ register SV *const str1, register SV *const str2)
+S_amagic_cmp(pTHX_ SV *const str1, SV *const str2)
{
dVAR;
SV * const tmpsv = tryCALL_AMAGICbin(str1,str2,scmp_amg);
@@ -1981,7 +1987,7 @@ S_amagic_cmp(pTHX_ register SV *const str1, register SV *const str2)
}
static I32
-S_amagic_cmp_locale(pTHX_ register SV *const str1, register SV *const str2)
+S_amagic_cmp_locale(pTHX_ SV *const str1, SV *const str2)
{
dVAR;
SV * const tmpsv = tryCALL_AMAGICbin(str1,str2,scmp_amg);
@@ -2005,8 +2011,8 @@ S_amagic_cmp_locale(pTHX_ register SV *const str1, register SV *const str2)
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/reentr.c b/gnu/usr.bin/perl/reentr.c
index e7e2b24746b..31b933c2296 100644
--- a/gnu/usr.bin/perl/reentr.c
+++ b/gnu/usr.bin/perl/reentr.c
@@ -300,10 +300,10 @@ Perl_reentrant_free(pTHX) {
void*
Perl_reentrant_retry(const char *f, ...)
{
- dTHX;
void *retptr = NULL;
va_list ap;
#ifdef USE_REENTRANT_API
+ dTHX;
/* Easier to special case this here than in embed.pl. (Look at what it
generates for proto.h) */
PERL_ARGS_ASSERT_REENTRANT_RETRY;
diff --git a/gnu/usr.bin/perl/regcharclass.h b/gnu/usr.bin/perl/regcharclass.h
index 5e233ea730e..e51fe64af40 100644
--- a/gnu/usr.bin/perl/regcharclass.h
+++ b/gnu/usr.bin/perl/regcharclass.h
@@ -12,17 +12,15 @@
* Any changes made here will be lost!
*/
+
+#ifndef H_REGCHARCLASS /* Guard against nested #includes */
+#define H_REGCHARCLASS 1
+
/*
LNBREAK: Line Break: \R
"\x0D\x0A" # CRLF - Network (Windows) line ending
- 0x0A # LF | LINE FEED
- 0x0B # VT | VERTICAL TAB
- 0x0C # FF | FORM FEED
- 0x0D # CR | CARRIAGE RETURN
- 0x85 # NEL | NEXT LINE
- 0x2028 # LINE SEPARATOR
- 0x2029 # PARAGRAPH SEPARATOR
+ \p{VertSpace}
*/
/*** GENERATED CODE ***/
#define is_LNBREAK(s,is_utf8) \
@@ -32,9 +30,7 @@
: ( is_utf8 ) ? \
( ( 0xC2 == ((U8*)s)[0] ) ? \
( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
- : ( 0xE2 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
- : 0 ) \
+ : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
: ( 0x85 == ((U8*)s)[0] ) )
/*** GENERATED CODE ***/
@@ -46,9 +42,7 @@
: ( is_utf8 ) ? \
( ( 0xC2 == ((U8*)s)[0] ) ? \
( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
- : ( 0xE2 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
- : 0 ) \
+ : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
: ( 0x85 == ((U8*)s)[0] ) ) \
: ((e)-(s) > 1) ? \
( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
@@ -71,9 +65,7 @@
( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
: ( 0xC2 == ((U8*)s)[0] ) ? \
( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
-: ( 0xE2 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: 0 )
+: ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )
/*** GENERATED CODE ***/
#define is_LNBREAK_utf8_safe(s,e) \
@@ -83,34 +75,30 @@
( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
: ( 0xC2 == ((U8*)s)[0] ) ? \
( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
- : ( 0xE2 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
- : 0 ) \
+ : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
: ((e)-(s) > 1) ? \
( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
: ( 0x0D == ((U8*)s)[0] ) ? \
( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
- : ( 0xC2 == ((U8*)s)[0] ) ? \
- ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
- : 0 ) \
+ : ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
: ((e)-(s) > 0) ? \
( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) \
: 0 )
/*** GENERATED CODE ***/
#define is_LNBREAK_latin1(s) \
-( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
+( ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) || 0x85 == ((U8*)s)[0] ) ? 1\
: ( 0x0D == ((U8*)s)[0] ) ? \
( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
-: ( 0x85 == ((U8*)s)[0] ) )
+: 0 )
/*** GENERATED CODE ***/
#define is_LNBREAK_latin1_safe(s,e) \
( ((e)-(s) > 1) ? \
- ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
+ ( ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) || 0x85 == ((U8*)s)[0] ) ? 1\
: ( 0x0D == ((U8*)s)[0] ) ? \
( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
- : ( 0x85 == ((U8*)s)[0] ) ) \
+ : 0 ) \
: ((e)-(s) > 0) ? \
( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\
: 0 )
@@ -118,25 +106,7 @@
/*
HORIZWS: Horizontal Whitespace: \h \H
- 0x09 # HT
- 0x20 # SPACE
- 0xa0 # NBSP
- 0x1680 # OGHAM SPACE MARK
- 0x180e # MONGOLIAN VOWEL SEPARATOR
- 0x2000 # EN QUAD
- 0x2001 # EM QUAD
- 0x2002 # EN SPACE
- 0x2003 # EM SPACE
- 0x2004 # THREE-PER-EM SPACE
- 0x2005 # FOUR-PER-EM SPACE
- 0x2006 # SIX-PER-EM SPACE
- 0x2007 # FIGURE SPACE
- 0x2008 # PUNCTUATION SPACE
- 0x2009 # THIN SPACE
- 0x200A # HAIR SPACE
- 0x202f # NARROW NO-BREAK SPACE
- 0x205f # MEDIUM MATHEMATICAL SPACE
- 0x3000 # IDEOGRAPHIC SPACE
+ \p{HorizSpace}
*/
/*** GENERATED CODE ***/
#define is_HORIZWS(s,is_utf8) \
@@ -147,18 +117,12 @@
: ( 0xE1 == ((U8*)s)[0] ) ? \
( ( 0x9A == ((U8*)s)[1] ) ? \
( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
- : ( 0xA0 == ((U8*)s)[1] ) ? \
- ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
- : 0 ) \
+ : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 ) \
: ( 0xE2 == ((U8*)s)[0] ) ? \
( ( 0x80 == ((U8*)s)[1] ) ? \
( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
- : ( 0x81 == ((U8*)s)[1] ) ? \
- ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
- : 0 ) \
- : ( 0xE3 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
- : 0 ) \
+ : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xA0 == ((U8*)s)[0] ) )
/*** GENERATED CODE ***/
@@ -171,18 +135,12 @@
: ( 0xE1 == ((U8*)s)[0] ) ? \
( ( 0x9A == ((U8*)s)[1] ) ? \
( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
- : ( 0xA0 == ((U8*)s)[1] ) ? \
- ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
- : 0 ) \
+ : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xE2 == ((U8*)s)[0] ) ? \
( ( 0x80 == ((U8*)s)[1] ) ? \
( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
- : ( 0x81 == ((U8*)s)[1] ) ? \
- ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
- : 0 ) \
- : ( 0xE3 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
- : 0 ) \
+ : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 )\
+ : ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xA0 == ((U8*)s)[0] ) ) \
: ((e)-(s) > 1) ? \
( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
@@ -204,18 +162,12 @@
: ( 0xE1 == ((U8*)s)[0] ) ? \
( ( 0x9A == ((U8*)s)[1] ) ? \
( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
- : ( 0xA0 == ((U8*)s)[1] ) ? \
- ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
- : 0 ) \
+ : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 ) \
: ( 0xE2 == ((U8*)s)[0] ) ? \
( ( 0x80 == ((U8*)s)[1] ) ? \
- ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
- : ( 0x81 == ((U8*)s)[1] ) ? \
- ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
- : 0 ) \
-: ( 0xE3 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
-: 0 )
+ ( ( ( ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+: ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )
/*** GENERATED CODE ***/
#define is_HORIZWS_utf8_safe(s,e) \
@@ -226,35 +178,53 @@
: ( 0xE1 == ((U8*)s)[0] ) ? \
( ( 0x9A == ((U8*)s)[1] ) ? \
( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
- : ( 0xA0 == ((U8*)s)[1] ) ? \
- ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
- : 0 ) \
+ : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 ) \
: ( 0xE2 == ((U8*)s)[0] ) ? \
( ( 0x80 == ((U8*)s)[1] ) ? \
( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
- : ( 0x81 == ((U8*)s)[1] ) ? \
- ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
- : 0 ) \
- : ( 0xE3 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
- : 0 ) \
+ : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
: ((e)-(s) > 1) ? \
( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
- : ( 0xC2 == ((U8*)s)[0] ) ? \
- ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
- : 0 ) \
+ : ( ( 0xC2 == ((U8*)s)[0] ) && ( 0xA0 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
: ((e)-(s) > 0) ? \
( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) \
: 0 )
/*** GENERATED CODE ***/
#define is_HORIZWS_latin1(s) \
-( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] || 0xA0 == ((U8*)s)[0] )
+( ((U8*)s)[0] == 0x09 || ( ( ((U8*)s)[0] & 0x7F ) == 0x20 ) )
/*** GENERATED CODE ***/
#define is_HORIZWS_latin1_safe(s,e) \
( ((e)-(s) > 0) ? \
- ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] || 0xA0 == ((U8*)s)[0] ) \
+ ( ((U8*)s)[0] == 0x09 || ( ( ((U8*)s)[0] & 0x7F ) == 0x20 ) ) \
+: 0 )
+
+/*** GENERATED CODE ***/
+#define is_HORIZWS_high(s) \
+( ( 0xE1 == ((U8*)s)[0] ) ? \
+ ( ( 0x9A == ((U8*)s)[1] ) ? \
+ ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+: ( 0xE2 == ((U8*)s)[0] ) ? \
+ ( ( 0x80 == ((U8*)s)[1] ) ? \
+ ( ( ( ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+: ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )
+
+/*** GENERATED CODE ***/
+#define is_HORIZWS_high_safe(s,e) \
+( ((e)-(s) > 2) ? \
+ ( ( 0xE1 == ((U8*)s)[0] ) ? \
+ ( ( 0x9A == ((U8*)s)[1] ) ? \
+ ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0xE2 == ((U8*)s)[0] ) ? \
+ ( ( 0x80 == ((U8*)s)[1] ) ? \
+ ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
+ : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
: 0 )
/*** GENERATED CODE ***/
@@ -266,19 +236,20 @@
( 0x180E == cp || ( 0x180E < cp && \
( ( 0x2000 <= cp && cp <= 0x200A ) || ( 0x200A < cp && \
( 0x202F == cp || ( 0x202F < cp && \
-( 0x205F == cp || ( 0x205F < cp && \
-0x3000 == cp ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
+( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
+
+/*** GENERATED CODE ***/
+#define is_HORIZWS_cp_high(cp) \
+( 0x1680 == cp || ( 0x1680 < cp && \
+( 0x180E == cp || ( 0x180E < cp && \
+( ( 0x2000 <= cp && cp <= 0x200A ) || ( 0x200A < cp && \
+( 0x202F == cp || ( 0x202F < cp && \
+( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )
/*
VERTWS: Vertical Whitespace: \v \V
- 0x0A # LF
- 0x0B # VT
- 0x0C # FF
- 0x0D # CR
- 0x85 # NEL
- 0x2028 # LINE SEPARATOR
- 0x2029 # PARAGRAPH SEPARATOR
+ \p{VertSpace}
*/
/*** GENERATED CODE ***/
#define is_VERTWS(s,is_utf8) \
@@ -286,9 +257,7 @@
: ( is_utf8 ) ? \
( ( 0xC2 == ((U8*)s)[0] ) ? \
( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
- : ( 0xE2 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
- : 0 ) \
+ : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
: ( 0x85 == ((U8*)s)[0] ) )
/*** GENERATED CODE ***/
@@ -298,9 +267,7 @@
: ( is_utf8 ) ? \
( ( 0xC2 == ((U8*)s)[0] ) ? \
( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
- : ( 0xE2 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
- : 0 ) \
+ : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
: ( 0x85 == ((U8*)s)[0] ) ) \
: ((e)-(s) > 1) ? \
( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
@@ -319,9 +286,7 @@
( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
: ( 0xC2 == ((U8*)s)[0] ) ? \
( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
-: ( 0xE2 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
-: 0 )
+: ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )
/*** GENERATED CODE ***/
#define is_VERTWS_utf8_safe(s,e) \
@@ -329,19 +294,23 @@
( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
: ( 0xC2 == ((U8*)s)[0] ) ? \
( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
- : ( 0xE2 == ((U8*)s)[0] ) ? \
- ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
- : 0 ) \
+ : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
: ((e)-(s) > 1) ? \
( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
- : ( 0xC2 == ((U8*)s)[0] ) ? \
- ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
- : 0 ) \
+ : ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
: ((e)-(s) > 0) ? \
( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) \
: 0 )
/*** GENERATED CODE ***/
+#define is_VERTWS_high(s) \
+( ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )
+
+/*** GENERATED CODE ***/
+#define is_VERTWS_high_safe(s,e) \
+( ( ( ( ((e)-(s) > 2) && ( 0xE2 == ((U8*)s)[0] ) ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )
+
+/*** GENERATED CODE ***/
#define is_VERTWS_latin1(s) \
( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )
@@ -355,171 +324,599 @@
#define is_VERTWS_cp(cp) \
( ( 0x0A <= cp && cp <= 0x0D ) || ( 0x0D < cp && \
( 0x85 == cp || ( 0x85 < cp && \
-( 0x2028 == cp || ( 0x2028 < cp && \
-0x2029 == cp ) ) ) ) ) )
+( 0x2028 == cp || 0x2029 == cp ) ) ) ) )
+
+/*** GENERATED CODE ***/
+#define is_VERTWS_cp_high(cp) \
+( 0x2028 == cp || 0x2029 == cp )
/*
- TRICKYFOLD: Problematic fold case letters. When adding to this list, also should add them to regcomp.c and fold_grind.t
-
- 0x00DF # LATIN SMALL LETTER SHARP S
- 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
- 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
- 0x1E9E # LATIN CAPITAL LETTER SHARP S, because maps to same as 00DF
- 0x1FD3 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA; maps same as 0390
- 0x1FE3 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA; maps same as 03B0
+ XDIGIT: Hexadecimal digits
+
+ \p{XDigit}
*/
/*** GENERATED CODE ***/
-#define is_TRICKYFOLD(s,is_utf8) \
-( ( is_utf8 ) ? \
- ( ( 0xC3 == ((U8*)s)[0] ) ? \
- ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \
- : ( 0xCE == ((U8*)s)[0] ) ? \
- ( ( 0x90 == ((U8*)s)[1] || 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \
+#define is_XDIGIT_utf8(s) \
+( ( ( 0x30 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x39 ) || ( 0x41 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x46 ) || ( 0x61 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x66 ) ) ? 1\
+: ( 0xEF == ((U8*)s)[0] ) ? \
+ ( ( 0xBC == ((U8*)s)[1] ) ? \
+ ( ( ( 0x90 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x99 ) || ( 0xA1 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xA6 ) ) ? 3 : 0 )\
+ : ( ( 0xBD == ((U8*)s)[1] ) && ( 0x81 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )\
+: 0 )
+
+/*** GENERATED CODE ***/
+#define is_XDIGIT_high(s) \
+( ( 0xEF == ((U8*)s)[0] ) ? \
+ ( ( 0xBC == ((U8*)s)[1] ) ? \
+ ( ( ( 0x90 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x99 ) || ( 0xA1 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xA6 ) ) ? 3 : 0 )\
+ : ( ( 0xBD == ((U8*)s)[1] ) && ( 0x81 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )\
+: 0 )
+
+/*** GENERATED CODE ***/
+#define is_XDIGIT_cp_high(cp) \
+( ( 0xFF10 <= cp && cp <= 0xFF19 ) || ( 0xFF19 < cp && \
+( ( 0xFF21 <= cp && cp <= 0xFF26 ) || ( 0xFF41 <= cp && cp <= 0xFF46 ) ) ) )
+
+/*
+ XPERLSPACE: \p{XPerlSpace}
+
+ \p{XPerlSpace}
+*/
+/*** GENERATED CODE ***/
+#define is_XPERLSPACE(s,is_utf8) \
+( ( ( 0x09 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x20 == ((U8*)s)[0] ) ? 1\
+: ( is_utf8 ) ? \
+ ( ( 0xC2 == ((U8*)s)[0] ) ? \
+ ( ( 0x85 == ((U8*)s)[1] || 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
: ( 0xE1 == ((U8*)s)[0] ) ? \
- ( ( 0xBA == ((U8*)s)[1] ) ? \
- ( ( 0x9E == ((U8*)s)[2] ) ? 3 : 0 ) \
- : ( 0xBF == ((U8*)s)[1] ) ? \
- ( ( 0x93 == ((U8*)s)[2] || 0xA3 == ((U8*)s)[2] ) ? 3 : 0 ) \
- : 0 ) \
+ ( ( 0x9A == ((U8*)s)[1] ) ? \
+ ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0xE2 == ((U8*)s)[0] ) ? \
+ ( ( 0x80 == ((U8*)s)[1] ) ? \
+ ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || ( ((U8*)s)[2] & 0xFE ) == 0xA8 || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
+ : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0x85 == ((U8*)s)[0] || 0xA0 == ((U8*)s)[0] ) )
+
+/*** GENERATED CODE ***/
+#define is_XPERLSPACE_utf8(s) \
+( ( ( 0x09 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x20 == ((U8*)s)[0] ) ? 1\
+: ( 0xC2 == ((U8*)s)[0] ) ? \
+ ( ( 0x85 == ((U8*)s)[1] || 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
+: ( 0xE1 == ((U8*)s)[0] ) ? \
+ ( ( 0x9A == ((U8*)s)[1] ) ? \
+ ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+: ( 0xE2 == ((U8*)s)[0] ) ? \
+ ( ( 0x80 == ((U8*)s)[1] ) ? \
+ ( ( ( ((U8*)s)[2] <= 0x8A ) || ( ((U8*)s)[2] & 0xFE ) == 0xA8 || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
+ : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+: ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )
+
+/*** GENERATED CODE ***/
+#define is_XPERLSPACE_high(s) \
+( ( 0xE1 == ((U8*)s)[0] ) ? \
+ ( ( 0x9A == ((U8*)s)[1] ) ? \
+ ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+: ( 0xE2 == ((U8*)s)[0] ) ? \
+ ( ( 0x80 == ((U8*)s)[1] ) ? \
+ ( ( ( ((U8*)s)[2] <= 0x8A ) || ( ((U8*)s)[2] & 0xFE ) == 0xA8 || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
+ : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+: ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )
+
+/*** GENERATED CODE ***/
+#define is_XPERLSPACE_cp_high(cp) \
+( 0x1680 == cp || ( 0x1680 < cp && \
+( 0x180E == cp || ( 0x180E < cp && \
+( ( 0x2000 <= cp && cp <= 0x200A ) || ( 0x200A < cp && \
+( 0x2028 == cp || ( 0x2028 < cp && \
+( 0x2029 == cp || ( 0x2029 < cp && \
+( 0x202F == cp || ( 0x202F < cp && \
+( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) ) ) ) ) )
+
+/*
+ REPLACEMENT: Unicode REPLACEMENT CHARACTER
+
+ 0xFFFD
+*/
+/*** GENERATED CODE ***/
+#define is_REPLACEMENT_utf8_safe(s,e) \
+( ( ( ( ((e)-(s) > 2) && ( 0xEF == ((U8*)s)[0] ) ) && ( 0xBF == ((U8*)s)[1] ) ) && ( 0xBD == ((U8*)s)[2] ) ) ? 3 : 0 )
+
+/*
+ NONCHAR: Non character code points
+
+ \p{Nchar}
+*/
+/*** GENERATED CODE ***/
+#define is_NONCHAR_utf8(s) \
+( ( 0xEF == ((U8*)s)[0] ) ? \
+ ( ( 0xB7 == ((U8*)s)[1] ) ? \
+ ( ( 0x90 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xAF ) ? 3 : 0 ) \
+ : ( ( 0xBF == ((U8*)s)[1] ) && ( ((U8*)s)[2] >= 0xBE ) ) ? 3 : 0 ) \
+: ( 0xF0 == ((U8*)s)[0] ) ? \
+ ( ( ( ( ((U8*)s)[1] == 0x9F || ( ( ((U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )\
+: ( 0xF1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xF3 ) ? \
+ ( ( ( ( ( ((U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )\
+: ( ( ( ( 0xF4 == ((U8*)s)[0] ) && ( 0x8F == ((U8*)s)[1] ) ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )
+
+/*
+ SURROGATE: Surrogate characters
+
+ \p{Gc=Cs}
+*/
+/*** GENERATED CODE ***/
+#define is_SURROGATE_utf8(s) \
+( ( ( 0xED == ((U8*)s)[0] ) && ( ((U8*)s)[1] >= 0xA0 ) ) ? 3 : 0 )
+
+/*
+ GCB_L: Grapheme_Cluster_Break=L
+
+ \p{_X_GCB_L}
+*/
+/*** GENERATED CODE ***/
+#define is_GCB_L_utf8(s) \
+( ( 0xE1 == ((U8*)s)[0] ) ? \
+ ( ( 0x84 == ((U8*)s)[1] ) ? \
+ 3 \
+ : ( ( 0x85 == ((U8*)s)[1] ) && ( ((U8*)s)[2] <= 0x9F ) ) ? 3 : 0 ) \
+: ( ( ( 0xEA == ((U8*)s)[0] ) && ( 0xA5 == ((U8*)s)[1] ) ) && ( 0xA0 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBC ) ) ? 3 : 0 )
+
+/*
+ GCB_LV_LVT_V: Grapheme_Cluster_Break=(LV or LVT or V)
+
+ \p{_X_LV_LVT_V}
+*/
+/*** GENERATED CODE ***/
+#define is_GCB_LV_LVT_V_utf8(s) \
+( ( 0xE1 == ((U8*)s)[0] ) ? \
+ ( ( 0x85 == ((U8*)s)[1] ) ? \
+ ( ( ((U8*)s)[2] >= 0xA0 ) ? 3 : 0 ) \
+ : ( ( 0x86 == ((U8*)s)[1] ) && ( ((U8*)s)[2] <= 0xA7 ) ) ? 3 : 0 ) \
+: ( 0xEA == ((U8*)s)[0] ) ? \
+ ( ( ((U8*)s)[1] >= 0xB0 ) ? \
+ 3 \
: 0 ) \
-: ( 0xDF == ((U8*)s)[0] ) )
+: ( 0xEB == ((U8*)s)[0] || 0xEC == ((U8*)s)[0] ) ? \
+ 3 \
+: ( 0xED == ((U8*)s)[0] ) ? \
+ ( ( ((U8*)s)[1] <= 0x9D ) ? \
+ 3 \
+ : ( 0x9E == ((U8*)s)[1] ) ? \
+ ( ( ( ((U8*)s)[2] <= 0xA3 ) || ( ((U8*)s)[2] >= 0xB0 ) ) ? 3 : 0 ) \
+ : ( ( 0x9F == ((U8*)s)[1] ) && ( ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 ) \
+: 0 )
+
+/*
+ GCB_Prepend: Grapheme_Cluster_Break=Prepend
+ \p{_X_GCB_Prepend}
+*/
/*** GENERATED CODE ***/
-#define is_TRICKYFOLD_safe(s,e,is_utf8) \
-( ((e)-(s) > 2) ? \
- ( ( is_utf8 ) ? \
- ( ( 0xC3 == ((U8*)s)[0] ) ? \
- ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \
- : ( 0xCE == ((U8*)s)[0] ) ? \
- ( ( 0x90 == ((U8*)s)[1] || 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \
- : ( 0xE1 == ((U8*)s)[0] ) ? \
- ( ( 0xBA == ((U8*)s)[1] ) ? \
- ( ( 0x9E == ((U8*)s)[2] ) ? 3 : 0 ) \
- : ( 0xBF == ((U8*)s)[1] ) ? \
- ( ( 0x93 == ((U8*)s)[2] || 0xA3 == ((U8*)s)[2] ) ? 3 : 0 ) \
- : 0 ) \
- : 0 ) \
- : ( 0xDF == ((U8*)s)[0] ) ) \
-: ((e)-(s) > 1) ? \
- ( ( is_utf8 ) ? \
- ( ( 0xC3 == ((U8*)s)[0] ) ? \
- ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \
- : ( 0xCE == ((U8*)s)[0] ) ? \
- ( ( 0x90 == ((U8*)s)[1] || 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \
- : 0 ) \
- : ( 0xDF == ((U8*)s)[0] ) ) \
-: ((e)-(s) > 0) ? \
- ( ( !( is_utf8 ) ) ? \
- ( 0xDF == ((U8*)s)[0] ) \
+#define is_GCB_Prepend_utf8(s) \
+( 0 )
+
+/*
+ GCB_RI: Grapheme_Cluster_Break=RI
+
+ \p{_X_RI}
+*/
+/*** GENERATED CODE ***/
+#define is_GCB_RI_utf8(s) \
+( ( ( ( ( 0xF0 == ((U8*)s)[0] ) && ( 0x9F == ((U8*)s)[1] ) ) && ( 0x87 == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xA6 ) ) ? 4 : 0 )
+
+/*
+ GCB_SPECIAL_BEGIN_START: Grapheme_Cluster_Break=special_begin_starts
+
+ \p{_X_Special_Begin_Start}
+*/
+/*** GENERATED CODE ***/
+#define is_GCB_SPECIAL_BEGIN_START_utf8(s) \
+( ( 0xE1 == ((U8*)s)[0] ) ? \
+ ( ( ( ((U8*)s)[1] & 0xFC ) == 0x84 ) ? \
+ 3 \
+ : 0 ) \
+: ( 0xEA == ((U8*)s)[0] ) ? \
+ ( ( 0xA5 == ((U8*)s)[1] ) ? \
+ ( ( 0xA0 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBC ) ? 3 : 0 ) \
+ : ( ((U8*)s)[1] >= 0xB0 ) ? \
+ 3 \
+ : 0 ) \
+: ( 0xEB == ((U8*)s)[0] || 0xEC == ((U8*)s)[0] ) ? \
+ 3 \
+: ( 0xED == ((U8*)s)[0] ) ? \
+ ( ( ((U8*)s)[1] <= 0x9D ) ? \
+ 3 \
+ : ( 0x9E == ((U8*)s)[1] ) ? \
+ ( ( ( ((U8*)s)[2] <= 0xA3 ) || ( ((U8*)s)[2] >= 0xB0 ) ) ? 3 : 0 ) \
+ : ( ( 0x9F == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] <= 0x86 ) || ( 0x8B <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBB ) ) ) ? 3 : 0 )\
+: ( ( ( ( 0xF0 == ((U8*)s)[0] ) && ( 0x9F == ((U8*)s)[1] ) ) && ( 0x87 == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xA6 ) ) ? 4 : 0 )
+
+/*
+ GCB_T: Grapheme_Cluster_Break=T
+
+ \p{_X_GCB_T}
+*/
+/*** GENERATED CODE ***/
+#define is_GCB_T_utf8(s) \
+( ( 0xE1 == ((U8*)s)[0] ) ? \
+ ( ( 0x86 == ((U8*)s)[1] ) ? \
+ ( ( ((U8*)s)[2] >= 0xA8 ) ? 3 : 0 ) \
+ : ( 0x87 == ((U8*)s)[1] ) ? \
+ 3 \
: 0 ) \
+: ( ( ( 0xED == ((U8*)s)[0] ) && ( 0x9F == ((U8*)s)[1] ) ) && ( 0x8B <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBB ) ) ? 3 : 0 )
+
+/*
+ GCB_V: Grapheme_Cluster_Break=V
+
+ \p{_X_GCB_V}
+*/
+/*** GENERATED CODE ***/
+#define is_GCB_V_utf8(s) \
+( ( 0xE1 == ((U8*)s)[0] ) ? \
+ ( ( 0x85 == ((U8*)s)[1] ) ? \
+ ( ( ((U8*)s)[2] >= 0xA0 ) ? 3 : 0 ) \
+ : ( ( 0x86 == ((U8*)s)[1] ) && ( ((U8*)s)[2] <= 0xA7 ) ) ? 3 : 0 ) \
+: ( 0xED == ((U8*)s)[0] ) ? \
+ ( ( 0x9E == ((U8*)s)[1] ) ? \
+ ( ( ((U8*)s)[2] >= 0xB0 ) ? 3 : 0 ) \
+ : ( ( 0x9F == ((U8*)s)[1] ) && ( ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 ) \
: 0 )
+/*
+ QUOTEMETA: Meta-characters that \Q should quote
+
+ \p{_Perl_Quotemeta}
+*/
/*** GENERATED CODE ***/
-#define is_TRICKYFOLD_cp(cp) \
-( 0xDF == cp || ( 0xDF < cp && \
-( 0x390 == cp || ( 0x390 < cp && \
-( 0x3B0 == cp || ( 0x3B0 < cp && \
-( 0x1E9E == cp || ( 0x1E9E < cp && \
-( 0x1FD3 == cp || ( 0x1FD3 < cp && \
-0x1FE3 == cp ) ) ) ) ) ) ) ) ) )
+#define is_QUOTEMETA_high(s) \
+( ( 0xCD == ((U8*)s)[0] ) ? \
+ ( ( 0x8F == ((U8*)s)[1] ) ? 2 : 0 ) \
+: ( 0xE1 == ((U8*)s)[0] ) ? \
+ ( ( 0x85 == ((U8*)s)[1] ) ? \
+ ( ( 0x9F == ((U8*)s)[2] || 0xA0 == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( 0x9A == ((U8*)s)[1] ) ? \
+ ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( 0x9E == ((U8*)s)[1] ) ? \
+ ( ( ( ((U8*)s)[2] & 0xFE ) == 0xB4 ) ? 3 : 0 ) \
+ : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8B <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8E ) ) ? 3 : 0 )\
+: ( 0xE2 == ((U8*)s)[0] ) ? \
+ ( ( 0x80 == ((U8*)s)[1] ) ? \
+ ( ( ((U8*)s)[2] <= 0xBE ) ? 3 : 0 ) \
+ : ( 0x81 == ((U8*)s)[1] ) ? \
+ ( ( ( 0x81 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x93 ) || ( 0x95 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xAF ) ) ? 3 : 0 )\
+ : ( 0x86 == ((U8*)s)[1] ) ? \
+ ( ( ((U8*)s)[2] >= 0x90 ) ? 3 : 0 ) \
+ : ( ( 0x87 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x90 ) || ( 0x94 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x9C ) || ( 0x9F <= ((U8*)s)[1] && ((U8*)s)[1] <= 0xAF ) || ( ((U8*)s)[1] & 0xFE ) == 0xB8 ) ?\
+ 3 \
+ : ( 0x91 == ((U8*)s)[1] ) ? \
+ ( ( ((U8*)s)[2] <= 0x9F ) ? 3 : 0 ) \
+ : ( 0x9D == ((U8*)s)[1] ) ? \
+ ( ( ((U8*)s)[2] <= 0xB5 ) ? 3 : 0 ) \
+ : ( ( 0x9E == ((U8*)s)[1] ) && ( ((U8*)s)[2] >= 0x94 ) ) ? 3 : 0 ) \
+: ( 0xE3 == ((U8*)s)[0] ) ? \
+ ( ( 0x80 == ((U8*)s)[1] ) ? \
+ ( ( ( ((U8*)s)[2] <= 0x83 ) || ( 0x88 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xA0 ) || 0xB0 == ((U8*)s)[2] ) ? 3 : 0 )\
+ : ( ( 0x85 == ((U8*)s)[1] ) && ( 0xA4 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+: ( 0xEF == ((U8*)s)[0] ) ? \
+ ( ( 0xB4 == ((U8*)s)[1] ) ? \
+ ( ( ((U8*)s)[2] >= 0xBE ) ? 3 : 0 ) \
+ : ( 0xB8 == ((U8*)s)[1] ) ? \
+ ( ( ((U8*)s)[2] <= 0x8F ) ? 3 : 0 ) \
+ : ( 0xB9 == ((U8*)s)[1] ) ? \
+ ( ( 0x85 == ((U8*)s)[2] || 0x86 == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( 0xBB == ((U8*)s)[1] ) ? \
+ ( ( 0xBF == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( 0xBE == ((U8*)s)[1] ) ? \
+ ( ( 0xA0 == ((U8*)s)[2] ) ? 3 : 0 ) \
+ : ( ( 0xBF == ((U8*)s)[1] ) && ( 0xB0 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xB8 ) ) ? 3 : 0 )\
+: ( 0xF0 == ((U8*)s)[0] ) ? \
+ ( ( ( ( 0x9D == ((U8*)s)[1] ) && ( 0x85 == ((U8*)s)[2] ) ) && ( 0xB3 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0xBA ) ) ? 4 : 0 )\
+: ( ( 0xF3 == ((U8*)s)[0] ) && ( 0xA0 == ((U8*)s)[1] ) ) ? 4 : 0 )
+
+/*
+ MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
+ do regen/regcharclass_multi_char_folds.pl
+ &regcharclass_multi_char_folds::multi_char_folds(1)
+*/
/*** GENERATED CODE ***/
-#define what_TRICKYFOLD(s,is_utf8) \
-( ( is_utf8 ) ? \
- ( ( 0xC3 == ((U8*)s)[0] ) ? \
- ( ( 0x9F == ((U8*)s)[1] ) ? 0xDF : 0 ) \
+#define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) \
+( ( 0x61 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x66 == ((U8*)s)[0] ) ? \
+ ( ( 0x66 == ((U8*)s)[1] ) ? \
+ ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 ) \
+ : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( 0x68 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x69 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x6A == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x73 == ((U8*)s)[0] ) ? \
+ ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( 0x74 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0xCA == ((U8*)s)[0] ) ? \
+ ( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 ) \
: ( 0xCE == ((U8*)s)[0] ) ? \
- ( ( 0x90 == ((U8*)s)[1] ) ? 0x390 \
- : ( 0xB0 == ((U8*)s)[1] ) ? 0x3B0 : 0 ) \
+ ( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ? \
+ ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ? \
+ ( ( 0xCD == ((U8*)s)[2] ) ? \
+ ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 ) \
+ : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( ( ( 0xB9 == ((U8*)s)[1] ) && ( 0xCD == ((U8*)s)[2] ) ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xCF == ((U8*)s)[0] ) ? \
+ ( ( 0x81 == ((U8*)s)[1] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0x85 == ((U8*)s)[1] ) ? \
+ ( ( 0xCC == ((U8*)s)[2] ) ? \
+ ( ( 0x93 == ((U8*)s)[3] ) ? 4 : 0 ) \
+ : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0x89 == ((U8*)s)[1] ) ? \
+ ( ( 0xCD == ((U8*)s)[2] ) ? \
+ ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 ) \
+ : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xD5 == ((U8*)s)[0] ) ? \
+ ( ( 0xA5 == ((U8*)s)[1] ) ? \
+ ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xB4 == ((U8*)s)[1] ) ? \
+ ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
+ : ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\
: ( 0xE1 == ((U8*)s)[0] ) ? \
- ( ( 0xBA == ((U8*)s)[1] ) ? \
- ( ( 0x9E == ((U8*)s)[2] ) ? 0x1E9E : 0 ) \
- : ( 0xBF == ((U8*)s)[1] ) ? \
- ( ( 0x93 == ((U8*)s)[2] ) ? 0x1FD3 \
- : ( 0xA3 == ((U8*)s)[2] ) ? 0x1FE3 : 0 ) \
+ ( ( 0xBC == ((U8*)s)[1] ) ? \
+ ( ( ( ( ( ((U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
+ : ( ( ( ( 0xBD == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((U8*)s)[2] & 0xFB ) == 0xB0 ) || ((U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
+ : 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) \
+( ((e)-(s) > 3) ? \
+ ( ( 0x61 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x66 == ((U8*)s)[0] ) ? \
+ ( ( 0x66 == ((U8*)s)[1] ) ? \
+ ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 ) \
+ : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( 0x68 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x69 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x6A == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x73 == ((U8*)s)[0] ) ? \
+ ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( 0x74 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0xCA == ((U8*)s)[0] ) ? \
+ ( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0xCE == ((U8*)s)[0] ) ? \
+ ( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ? \
+ ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ? \
+ ( ( 0xCD == ((U8*)s)[2] ) ? \
+ ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 ) \
+ : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( ( ( 0xB9 == ((U8*)s)[1] ) && ( 0xCD == ((U8*)s)[2] ) ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xCF == ((U8*)s)[0] ) ? \
+ ( ( 0x81 == ((U8*)s)[1] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0x85 == ((U8*)s)[1] ) ? \
+ ( ( 0xCC == ((U8*)s)[2] ) ? \
+ ( ( 0x93 == ((U8*)s)[3] ) ? 4 : 0 ) \
+ : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0x89 == ((U8*)s)[1] ) ? \
+ ( ( 0xCD == ((U8*)s)[2] ) ? \
+ ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 ) \
+ : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xD5 == ((U8*)s)[0] ) ? \
+ ( ( 0xA5 == ((U8*)s)[1] ) ? \
+ ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xB4 == ((U8*)s)[1] ) ? \
+ ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
+ : ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : 0 ) \
+: ((e)-(s) > 2) ? \
+ ( ( 0x61 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x66 == ((U8*)s)[0] ) ? \
+ ( ( 0x66 == ((U8*)s)[1] ) ? \
+ ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 ) \
+ : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( 0x68 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x69 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x6A == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x73 == ((U8*)s)[0] ) ? \
+ ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( 0x74 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0xBC == ((U8*)s)[1] ) ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 )\
+: ((e)-(s) > 1) ? \
+ ( ( 0x66 == ((U8*)s)[0] ) ? \
+ ( ( 0x66 == ((U8*)s)[1] || 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )\
+ : ( ( 0x73 == ((U8*)s)[0] ) && ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ) ? 2 : 0 )\
+: 0 )
+
+
+/*** GENERATED CODE ***/
+#define is_MULTI_CHAR_FOLD_utf8_safe(s,e) \
+( ((e)-(s) > 5) ? \
+ ( ( 0x61 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x66 == ((U8*)s)[0] ) ? \
+ ( ( 0x66 == ((U8*)s)[1] ) ? \
+ ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 ) \
+ : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( 0x68 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x69 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x6A == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x73 == ((U8*)s)[0] ) ? \
+ ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( 0x74 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0xCA == ((U8*)s)[0] ) ? \
+ ( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 ) \
+ : ( 0xCE == ((U8*)s)[0] ) ? \
+ ( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ? \
+ ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ? \
+ ( ( 0xCD == ((U8*)s)[2] ) ? \
+ ( ( 0x82 == ((U8*)s)[3] ) ? \
+ ( ( ( 0xCE == ((U8*)s)[4] ) && ( 0xB9 == ((U8*)s)[5] ) ) ? 6 : 4 )\
+ : 0 ) \
+ : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xB9 == ((U8*)s)[1] ) ? \
+ ( ( 0xCC == ((U8*)s)[2] ) ? \
+ ( ( 0x88 == ((U8*)s)[3] ) ? \
+ ( ( 0xCC == ((U8*)s)[4] ) ? \
+ ( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 ) \
+ : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 0 )\
+ : 0 ) \
+ : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
: 0 ) \
+ : ( 0xCF == ((U8*)s)[0] ) ? \
+ ( ( 0x81 == ((U8*)s)[1] ) ? \
+ ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0x85 == ((U8*)s)[1] ) ? \
+ ( ( 0xCC == ((U8*)s)[2] ) ? \
+ ( ( 0x88 == ((U8*)s)[3] ) ? \
+ ( ( 0xCC == ((U8*)s)[4] ) ? \
+ ( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 ) \
+ : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 0 )\
+ : ( 0x93 == ((U8*)s)[3] ) ? \
+ ( ( 0xCC == ((U8*)s)[4] ) ? \
+ ( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 4 ) \
+ : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 4 )\
+ : 0 ) \
+ : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0x89 == ((U8*)s)[1] ) ? \
+ ( ( 0xCD == ((U8*)s)[2] ) ? \
+ ( ( 0x82 == ((U8*)s)[3] ) ? \
+ ( ( ( 0xCE == ((U8*)s)[4] ) && ( 0xB9 == ((U8*)s)[5] ) ) ? 6 : 4 )\
+ : 0 ) \
+ : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xD5 == ((U8*)s)[0] ) ? \
+ ( ( 0xA5 == ((U8*)s)[1] ) ? \
+ ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xB4 == ((U8*)s)[1] ) ? \
+ ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
+ : ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\
+ : ( 0xE1 == ((U8*)s)[0] ) ? \
+ ( ( 0xBC == ((U8*)s)[1] ) ? \
+ ( ( ( ( ( ((U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
+ : ( ( ( ( 0xBD == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((U8*)s)[2] & 0xFB ) == 0xB0 ) || ((U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
: 0 ) \
-: ( 0xDF == ((U8*)s)[0] ) ? 0xDF : 0 )
+: ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )
+
+/*
+ MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
+ &regcharclass_multi_char_folds::multi_char_folds(0)
+*/
/*** GENERATED CODE ***/
-#define what_TRICKYFOLD_safe(s,e,is_utf8) \
+#define is_MULTI_CHAR_FOLD_latin1_safe(s,e) \
( ((e)-(s) > 2) ? \
- ( ( is_utf8 ) ? \
- ( ( 0xC3 == ((U8*)s)[0] ) ? \
- ( ( 0x9F == ((U8*)s)[1] ) ? 0xDF : 0 ) \
- : ( 0xCE == ((U8*)s)[0] ) ? \
- ( ( 0x90 == ((U8*)s)[1] ) ? 0x390 \
- : ( 0xB0 == ((U8*)s)[1] ) ? 0x3B0 : 0 ) \
- : ( 0xE1 == ((U8*)s)[0] ) ? \
- ( ( 0xBA == ((U8*)s)[1] ) ? \
- ( ( 0x9E == ((U8*)s)[2] ) ? 0x1E9E : 0 ) \
- : ( 0xBF == ((U8*)s)[1] ) ? \
- ( ( 0x93 == ((U8*)s)[2] ) ? 0x1FD3 \
- : ( 0xA3 == ((U8*)s)[2] ) ? 0x1FE3 : 0 ) \
- : 0 ) \
- : 0 ) \
- : ( 0xDF == ((U8*)s)[0] ) ? 0xDF : 0 ) \
+ ( ( ( ((U8*)s)[0] & 0xDF ) == 0x46 ) ? \
+ ( ( ( ((U8*)s)[1] & 0xDF ) == 0x46 ) ? \
+ ( ( ( ( ((U8*)s)[2] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[2] & 0xDF ) == 0x4C ) ) ? 3 : 2 )\
+ : ( ( ( ((U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\
+ : ( ( ( ((U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\
: ((e)-(s) > 1) ? \
- ( ( is_utf8 ) ? \
- ( ( 0xC3 == ((U8*)s)[0] ) ? \
- ( ( 0x9F == ((U8*)s)[1] ) ? 0xDF : 0 ) \
- : ( 0xCE == ((U8*)s)[0] ) ? \
- ( ( 0x90 == ((U8*)s)[1] ) ? 0x390 \
- : ( 0xB0 == ((U8*)s)[1] ) ? 0x3B0 : 0 ) \
- : 0 ) \
- : ( 0xDF == ((U8*)s)[0] ) ? 0xDF : 0 ) \
+ ( ( ( ((U8*)s)[0] & 0xDF ) == 0x46 ) ? \
+ ( ( ( ( ((U8*)s)[1] & 0xDF ) == 0x46 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\
+ : ( ( ( ((U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\
+: 0 )
+
+/*
+ PATWS: pattern white space
+
+ \p{PatWS}
+*/
+/*** GENERATED CODE ***/
+#define is_PATWS(s,is_utf8) \
+( ( ( 0x09 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x20 == ((U8*)s)[0] ) ? 1\
+: ( is_utf8 ) ? \
+ ( ( 0xC2 == ((U8*)s)[0] ) ? \
+ ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0x8E || ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
+: ( 0x85 == ((U8*)s)[0] ) )
+
+/*** GENERATED CODE ***/
+#define is_PATWS_safe(s,e,is_utf8) \
+( ((e)-(s) > 2) ? \
+ ( ( ( 0x09 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x20 == ((U8*)s)[0] ) ? 1\
+ : ( is_utf8 ) ? \
+ ( ( 0xC2 == ((U8*)s)[0] ) ? \
+ ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0x8E || ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
+ : ( 0x85 == ((U8*)s)[0] ) ) \
+: ((e)-(s) > 1) ? \
+ ( ( ( 0x09 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x20 == ((U8*)s)[0] ) ? 1\
+ : ( is_utf8 ) ? \
+ ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
+ : ( 0x85 == ((U8*)s)[0] ) ) \
: ((e)-(s) > 0) ? \
- ( ( ( !( is_utf8 ) ) && ( 0xDF == ((U8*)s)[0] ) ) ? 0xDF : 0 ) \
+ ( ( ( 0x09 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x20 == ((U8*)s)[0] ) ? 1\
+ : ( !( is_utf8 ) ) ? \
+ ( 0x85 == ((U8*)s)[0] ) \
+ : 0 ) \
: 0 )
/*** GENERATED CODE ***/
-#define what_len_TRICKYFOLD(s,is_utf8,len) \
+#define is_PATWS_non_low(s,is_utf8) \
( ( is_utf8 ) ? \
- ( ( 0xC3 == ((U8*)s)[0] ) ? \
- ( ( 0x9F == ((U8*)s)[1] ) ? len=2, 0xDF : 0 ) \
- : ( 0xCE == ((U8*)s)[0] ) ? \
- ( ( 0x90 == ((U8*)s)[1] ) ? len=2, 0x390 \
- : ( 0xB0 == ((U8*)s)[1] ) ? len=2, 0x3B0 : 0 ) \
- : ( 0xE1 == ((U8*)s)[0] ) ? \
- ( ( 0xBA == ((U8*)s)[1] ) ? \
- ( ( 0x9E == ((U8*)s)[2] ) ? len=3, 0x1E9E : 0 ) \
- : ( 0xBF == ((U8*)s)[1] ) ? \
- ( ( 0x93 == ((U8*)s)[2] ) ? len=3, 0x1FD3 \
- : ( 0xA3 == ((U8*)s)[2] ) ? len=3, 0x1FE3 : 0 ) \
- : 0 ) \
- : 0 ) \
-: ( 0xDF == ((U8*)s)[0] ) ? len=1, 0xDF : 0 )
+ ( ( 0xC2 == ((U8*)s)[0] ) ? \
+ ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0x8E || ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
+: ( 0x85 == ((U8*)s)[0] ) )
/*** GENERATED CODE ***/
-#define what_len_TRICKYFOLD_safe(s,e,is_utf8,len) \
+#define is_PATWS_non_low_safe(s,e,is_utf8) \
( ((e)-(s) > 2) ? \
( ( is_utf8 ) ? \
- ( ( 0xC3 == ((U8*)s)[0] ) ? \
- ( ( 0x9F == ((U8*)s)[1] ) ? len=2, 0xDF : 0 ) \
- : ( 0xCE == ((U8*)s)[0] ) ? \
- ( ( 0x90 == ((U8*)s)[1] ) ? len=2, 0x390 \
- : ( 0xB0 == ((U8*)s)[1] ) ? len=2, 0x3B0 : 0 ) \
- : ( 0xE1 == ((U8*)s)[0] ) ? \
- ( ( 0xBA == ((U8*)s)[1] ) ? \
- ( ( 0x9E == ((U8*)s)[2] ) ? len=3, 0x1E9E : 0 ) \
- : ( 0xBF == ((U8*)s)[1] ) ? \
- ( ( 0x93 == ((U8*)s)[2] ) ? len=3, 0x1FD3 \
- : ( 0xA3 == ((U8*)s)[2] ) ? len=3, 0x1FE3 : 0 ) \
- : 0 ) \
- : 0 ) \
- : ( 0xDF == ((U8*)s)[0] ) ? len=1, 0xDF : 0 ) \
+ ( ( 0xC2 == ((U8*)s)[0] ) ? \
+ ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
+ : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0x8E || ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
+ : ( 0x85 == ((U8*)s)[0] ) ) \
: ((e)-(s) > 1) ? \
( ( is_utf8 ) ? \
- ( ( 0xC3 == ((U8*)s)[0] ) ? \
- ( ( 0x9F == ((U8*)s)[1] ) ? len=2, 0xDF : 0 ) \
- : ( 0xCE == ((U8*)s)[0] ) ? \
- ( ( 0x90 == ((U8*)s)[1] ) ? len=2, 0x390 \
- : ( 0xB0 == ((U8*)s)[1] ) ? len=2, 0x3B0 : 0 ) \
- : 0 ) \
- : ( 0xDF == ((U8*)s)[0] ) ? len=1, 0xDF : 0 ) \
-: ((e)-(s) > 0) ? \
- ( ( ( !( is_utf8 ) ) && ( 0xDF == ((U8*)s)[0] ) ) ? len=1, 0xDF : 0 ) \
-: 0 )
+ ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
+ : ( 0x85 == ((U8*)s)[0] ) ) \
+: ( ((e)-(s) > 0) && ( !( is_utf8 ) ) ) ? ( 0x85 == ((U8*)s)[0] ) : 0 )
+
+/*** GENERATED CODE ***/
+#define is_PATWS_cp(cp) \
+( ( 0x09 <= cp && cp <= 0x0D ) || ( 0x0D < cp && \
+( 0x20 == cp || ( 0x20 < cp && \
+( 0x85 == cp || ( 0x85 < cp && \
+( 0x200E == cp || ( 0x200E < cp && \
+( 0x200F == cp || ( 0x200F < cp && \
+( 0x2028 == cp || 0x2029 == cp ) ) ) ) ) ) ) ) ) ) )
+
+#endif /* H_REGCHARCLASS */
/* ex: set ro: */
diff --git a/gnu/usr.bin/perl/regcomp.sym b/gnu/usr.bin/perl/regcomp.sym
index a1eec5bedae..4de5d79bf50 100644
--- a/gnu/usr.bin/perl/regcomp.sym
+++ b/gnu/usr.bin/perl/regcomp.sym
@@ -2,18 +2,20 @@
#
# File has two sections, divided by a line of dashes '-'.
#
-# Empty rows after #-comment are removed from input are ignored
+# Lines beginning with # are ignored, except for those that start with #*
+# which are included in pod/perldebguts.pod. # within a line may be part
+# of a description.
#
# First section is for regops, second section is for regmatch-states
#
# Note that the order in this file is important.
#
# Format for first section:
-# NAME \s+ TYPE, arg-description [flags] [num-args] [longjump-len] ; DESCRIPTION
+# NAME \s+ TYPE, arg-description [num-args] [flags] [longjump-len] ; DESCRIPTION
+# flag <S> means is REGNODE_SIMPLE; flag <V> means is REGNODE_VARIES
#
#
# run perl regen.pl after editing this file
-# Also update perlredebguts.pod
@@ -31,11 +33,16 @@ EOS EOL, no ; Match "" at end of string.
EOL EOL, no ; Match "" at end of line.
MEOL EOL, no ; Same, assuming multiline.
SEOL EOL, no ; Same, assuming singleline.
+# The regops that have varieties that vary depending on the character set regex
+# modifiers have to ordered thusly: /d, /l, /u, /a, /aa. This is because code
+# in regcomp.c uses the enum value of the modifier as an offset from the /d
+# version. The complements must come after the non-complements.
+# BOUND, POSIX and their complements are affected, as well as EXACTF.
BOUND BOUND, no ; Match "" at any word boundary using native charset semantics for non-utf8
BOUNDL BOUND, no ; Match "" at any locale word boundary
BOUNDU BOUND, no ; Match "" at any word boundary using Unicode semantics
BOUNDA BOUND, no ; Match "" at any word boundary using ASCII semantics
-# All NBOUND nodes are required by a line regexec.c to be greater than all BOUND ones
+# All NBOUND nodes are required by code in regexec.c to be greater than all BOUND ones
NBOUND NBOUND, no ; Match "" at any word non-boundary using native charset semantics for non-utf8
NBOUNDL NBOUND, no ; Match "" at any locale word non-boundary
NBOUNDU NBOUND, no ; Match "" at any word non-boundary using Unicode semantics
@@ -48,73 +55,66 @@ REG_ANY REG_ANY, no 0 S ; Match any one character (except newline).
SANY REG_ANY, no 0 S ; Match any one character.
CANY REG_ANY, no 0 S ; Match any one byte.
ANYOF ANYOF, sv 0 S ; Match character in (or not in) this class, single char match only
-ANYOFV ANYOF, sv 0 V ; Match character in (or not in) this class, can match-multiple chars
-ALNUM ALNUM, no 0 S ; Match any alphanumeric character using native charset semantics for non-utf8
-ALNUML ALNUM, no 0 S ; Match any alphanumeric char in locale
-ALNUMU ALNUM, no 0 S ; Match any alphanumeric char using Unicode semantics
-ALNUMA ALNUM, no 0 S ; Match [A-Za-z_0-9]
-NALNUM NALNUM, no 0 S ; Match any non-alphanumeric character using native charset semantics for non-utf8
-NALNUML NALNUM, no 0 S ; Match any non-alphanumeric char in locale
-NALNUMU NALNUM, no 0 S ; Match any non-alphanumeric char using Unicode semantics
-NALNUMA NALNUM, no 0 S ; Match [^A-Za-z_0-9]
-SPACE SPACE, no 0 S ; Match any whitespace character using native charset semantics for non-utf8
-SPACEL SPACE, no 0 S ; Match any whitespace char in locale
-SPACEU SPACE, no 0 S ; Match any whitespace char using Unicode semantics
-SPACEA SPACE, no 0 S ; Match [ \t\n\f\r]
-NSPACE NSPACE, no 0 S ; Match any non-whitespace character using native charset semantics for non-utf8
-NSPACEL NSPACE, no 0 S ; Match any non-whitespace char in locale
-NSPACEU NSPACE, no 0 S ; Match any non-whitespace char using Unicode semantics
-NSPACEA NSPACE, no 0 S ; Match [^ \t\n\f\r]
-DIGIT DIGIT, no 0 S ; Match any numeric character using native charset semantics for non-utf8
-DIGITL DIGIT, no 0 S ; Match any numeric character in locale
-DIGITA DIGIT, no 0 S ; Match [0-9]
-NDIGIT NDIGIT, no 0 S ; Match any non-numeric character using native charset semantics for non-utf8
-NDIGITL NDIGIT, no 0 S ; Match any non-numeric character in locale
-NDIGITA NDIGIT, no 0 S ; Match [^0-9]
+ANYOF_WARN_SUPER ANYOF, sv 0 S ; Match character in (or not in) this class, warn (if enabled) upon matching a char above Unicode max;
+ANYOF_SYNTHETIC ANYOF, sv 0 S ; Synthetic start class
+
+# Order of the below is important. See ordering comment above.
+POSIXD POSIXD, none 0 S ; Some [[:class:]] under /d; the FLAGS field gives which one
+POSIXL POSIXD, none 0 S ; Some [[:class:]] under /l; the FLAGS field gives which one
+POSIXU POSIXD, none 0 S ; Some [[:class:]] under /u; the FLAGS field gives which one
+POSIXA POSIXD, none 0 S ; Some [[:class:]] under /a; the FLAGS field gives which one
+NPOSIXD NPOSIXD, none 0 S ; complement of POSIXD, [[:^class:]]
+NPOSIXL NPOSIXD, none 0 S ; complement of POSIXL, [[:^class:]]
+NPOSIXU NPOSIXD, none 0 S ; complement of POSIXU, [[:^class:]]
+NPOSIXA NPOSIXD, none 0 S ; complement of POSIXA, [[:^class:]]
+# End of order is important
+
CLUMP CLUMP, no 0 V ; Match any extended grapheme cluster sequence
#* Alternation
-# BRANCH The set of branches constituting a single choice are hooked
-# together with their "next" pointers, since precedence prevents
-# anything being concatenated to any individual branch. The
-# "next" pointer of the last BRANCH in a choice points to the
-# thing following the whole choice. This is also where the
-# final "next" pointer of each individual branch points; each
-# branch starts with the operand node of a BRANCH node.
-#
+#* BRANCH The set of branches constituting a single choice are
+#* hooked together with their "next" pointers, since
+#* precedence prevents anything being concatenated to
+#* any individual branch. The "next" pointer of the last
+#* BRANCH in a choice points to the thing following the
+#* whole choice. This is also where the final "next"
+#* pointer of each individual branch points; each branch
+#* starts with the operand node of a BRANCH node.
+#*
BRANCH BRANCH, node 0 V ; Match this alternative, or the next...
#*Back pointer
-# BACK Normal "next" pointers all implicitly point forward; BACK
-# exists to make loop structures possible.
-# not used
+#* BACK Normal "next" pointers all implicitly point forward;
+#* BACK exists to make loop structures possible.
+#* not used
BACK BACK, no 0 V ; Match "", "next" ptr points backward.
-#*Literals - NOTE the relative ordering of these types is important do not change it
+#*Literals
+# NOTE: the relative ordering of these types is important do not change it
EXACT EXACT, str ; Match this string (preceded by length).
EXACTF EXACT, str ; Match this non-UTF-8 string (not guaranteed to be folded) using /id rules (w/len).
EXACTFL EXACT, str ; Match this string (not guaranteed to be folded) using /il rules (w/len).
EXACTFU EXACT, str ; Match this string (folded iff in UTF-8, length in folding doesn't change if not in UTF-8) using /iu rules (w/len).
+EXACTFA EXACT, str ; Match this string (not guaranteed to be folded) using /iaa rules (w/len).
EXACTFU_SS EXACT, str ; Match this string (folded iff in UTF-8, length in folding may change even if not in UTF-8) using /iu rules (w/len).
EXACTFU_TRICKYFOLD EXACT, str ; Match this folded UTF-8 string using /iu rules
-EXACTFA EXACT, str ; Match this string (not guaranteed to be folded) using /iaa rules (w/len).
#*Do nothing types
NOTHING NOTHING, no ; Match empty string.
-# A variant of above which delimits a group, thus stops optimizations
+#*A variant of above which delimits a group, thus stops optimizations
TAIL NOTHING, no ; Match empty string. Can jump here from outside.
#*Loops
-# STAR,PLUS '?', and complex '*' and '+', are implemented as circular
-# BRANCH structures using BACK. Simple cases (one character
-# per match) are implemented with STAR and PLUS for speed
-# and to minimize recursive plunges.
-#
+#* STAR,PLUS '?', and complex '*' and '+', are implemented as
+#* circular BRANCH structures using BACK. Simple cases
+#* (one character per match) are implemented with STAR
+#* and PLUS for speed and to minimize recursive plunges.
+#*
STAR STAR, node 0 V ; Match this (simple) thing 0 or more times.
PLUS PLUS, node 0 V ; Match this (simple) thing 1 or more times.
@@ -123,12 +123,12 @@ CURLYN CURLY, no 2 V ; Capture next-after-this simple thing
CURLYM CURLY, no 2 V ; Capture this medium-complex thing {n,m} times.
CURLYX CURLY, sv 2 V ; Match this complex thing {n,m} times.
-# This terminator creates a loop structure for CURLYX
+#*This terminator creates a loop structure for CURLYX
WHILEM WHILEM, no 0 V ; Do curly processing and see if rest matches.
#*Buffer related
-# OPEN,CLOSE,GROUPP ...are numbered at compile time.
+#*OPEN,CLOSE,GROUPP ...are numbered at compile time.
OPEN OPEN, num 1 ; Mark this point in input as start of #n.
CLOSE CLOSE, num 1 ; Analogous to OPEN.
@@ -141,7 +141,8 @@ REFFL REF, num 1 V ; Match already matched string, folded in loc.
REFFU REF, num 1 V ; Match already matched string, folded using unicode semantics for non-utf8
REFFA REF, num 1 V ; Match already matched string, folded using unicode semantics for non-utf8, no mixing ASCII, non-ASCII
-#*Named references. Code in regcomp.c assumes that these all are after the numbered references
+#*Named references. Code in regcomp.c assumes that these all are after
+#*the numbered references
NREF REF, no-sv 1 V ; Match some already matched string
NREFF REF, no-sv 1 V ; Match already matched string, folded using native charset semantics for non-utf8
NREFFL REF, no-sv 1 V ; Match already matched string, folded in loc.
@@ -151,7 +152,7 @@ NREFFA REF, num 1 V ; Match already matched string, folded using u
IFMATCH BRANCHJ, off 1 . 2 ; Succeeds if the following matches.
UNLESSM BRANCHJ, off 1 . 2 ; Fails if the following matches.
SUSPEND BRANCHJ, off 1 V 1 ; "Independent" sub-RE.
-IFTHEN BRANCHJ, off 1 V 1 ; Switch, should be preceded by switcher .
+IFTHEN BRANCHJ, off 1 V 1 ; Switch, should be preceded by switcher.
GROUPP GROUPP, num 1 ; Whether the group matched.
#*Support for long RE
@@ -168,13 +169,14 @@ EVAL EVAL, evl 1 ; Execute some Perl code.
MINMOD MINMOD, no ; Next operator is not greedy.
LOGICAL LOGICAL, no ; Next opcode should set the flag only.
-# This is not used yet
+#*This is not used yet
RENUM BRANCHJ, off 1 . 1 ; Group with independently numbered parens.
#*Trie Related
-# Behave the same as A|LIST|OF|WORDS would. The '..C' variants have
-# inline charclass data (ascii only), the 'C' store it in the structure.
+#* Behave the same as A|LIST|OF|WORDS would. The '..C' variants
+#* have inline charclass data (ascii only), the 'C' store it in the
+#* structure.
# NOTE: the relative order of the TRIE-like regops is significant
TRIE TRIE, trie 1 ; Match many EXACT(F[ALU]?)? at once. flags==type
@@ -212,11 +214,6 @@ KEEPS KEEPS, no ; $& begins here.
#*New charclass like patterns
LNBREAK LNBREAK, none ; generic newline pattern
-VERTWS VERTWS, none 0 S ; vertical whitespace (Perl 6)
-NVERTWS NVERTWS, none 0 S ; not vertical whitespace (Perl 6)
-HORIZWS HORIZWS, none 0 S ; horizontal whitespace (Perl 6)
-NHORIZWS NHORIZWS, none 0 S ; not horizontal whitespace (Perl 6)
-
# NEW STUFF SOMEWHERE ABOVE THIS LINE
@@ -224,20 +221,20 @@ NHORIZWS NHORIZWS, none 0 S ; not horizontal whitespace (Perl 6)
#*SPECIAL REGOPS
-# This is not really a node, but an optimized away piece of a "long" node.
-# To simplify debugging output, we mark it as if it were a node
+#* This is not really a node, but an optimized away piece of a "long"
+#* node. To simplify debugging output, we mark it as if it were a node
OPTIMIZED NOTHING, off ; Placeholder for dump.
-# Special opcode with the property that no opcode in a compiled program
-# will ever be of this type. Thus it can be used as a flag value that
-# no other opcode has been seen. END is used similarly, in that an END
-# node cant be optimized. So END implies "unoptimizable" and PSEUDO mean
-# "not seen anything to optimize yet".
+#* Special opcode with the property that no opcode in a compiled program
+#* will ever be of this type. Thus it can be used as a flag value that
+#* no other opcode has been seen. END is used similarly, in that an END
+#* node cant be optimized. So END implies "unoptimizable" and PSEUDO
+#* mean "not seen anything to optimize yet".
PSEUDO PSEUDO, off ; Pseudo opcode for internal use.
-------------------------------------------------------------------------------
# Format for second section:
-# REGOP \t typelist [ \t typelist] [# Comment]
+# REGOP \t typelist [ \t typelist]
# typelist= namelist
# = namelist:FAIL
# = name:count
diff --git a/gnu/usr.bin/perl/regen/embed.pl b/gnu/usr.bin/perl/regen/embed.pl
index d339016a525..521217d7bb1 100644
--- a/gnu/usr.bin/perl/regen/embed.pl
+++ b/gnu/usr.bin/perl/regen/embed.pl
@@ -40,6 +40,15 @@ my $unflagged_pointers;
# implicit interpreter context argument.
#
+sub full_name ($$) { # Returns the function name with potentially the
+ # prefixes 'S_' or 'Perl_'
+ my ($func, $flags) = @_;
+
+ return "S_$func" if $flags =~ /[si]/;
+ return "Perl_$func" if $flags =~ /[bp]/;
+ return $func;
+}
+
sub open_print_header {
my ($file, $quote) = @_;
@@ -76,6 +85,16 @@ my ($embed, $core, $ext, $api) = setup_embed();
my @names_of_nn;
my $func;
+ if (! $can_ignore && $retval eq 'void') {
+ warn "It is nonsensical to require the return value of a void function ($plain_func) to be checked";
+ }
+
+ my $scope_type_flag_count = 0;
+ $scope_type_flag_count++ if $flags =~ /s/;
+ $scope_type_flag_count++ if $flags =~ /i/;
+ $scope_type_flag_count++ if $flags =~ /p/;
+ warn "$plain_func: i, p, and s flags are all mutually exclusive"
+ if $scope_type_flag_count > 1;
my $splint_flags = "";
if ( $SPLINT && !$commented_out ) {
$splint_flags .= '/*@noreturn@*/ ' if $never_returns;
@@ -85,20 +104,24 @@ my ($embed, $core, $ext, $api) = setup_embed();
}
if ($flags =~ /([si])/) {
- my $type = ($1 eq 's') ? "STATIC" : "PERL_STATIC_INLINE";
- warn "$func: i and s flags are mutually exclusive"
- if $flags =~ /s/ && $flags =~ /i/;
+ my $type;
+ if ($never_returns) {
+ $type = $1 eq 's' ? "PERL_STATIC_NO_RET" : "PERL_STATIC_INLINE_NO_RET";
+ }
+ else {
+ $type = $1 eq 's' ? "STATIC" : "PERL_STATIC_INLINE";
+ }
$retval = "$type $splint_flags$retval";
- $func = "S_$plain_func";
}
else {
- $retval = "PERL_CALLCONV $splint_flags$retval";
- if ($flags =~ /[bp]/) {
- $func = "Perl_$plain_func";
- } else {
- $func = $plain_func;
+ if ($never_returns) {
+ $retval = "PERL_CALLCONV_NO_RET $splint_flags$retval";
+ }
+ else {
+ $retval = "PERL_CALLCONV $splint_flags$retval";
}
}
+ $func = full_name($plain_func, $flags);
$ret = "$retval\t$func(";
if ( $has_context ) {
$ret .= @args ? "pTHX_ " : "pTHX";
@@ -262,19 +285,14 @@ sub embed_h {
unless ($flags =~ /[om]/) {
my $args = scalar @args;
if ($flags =~ /n/) {
- if ($flags =~ /s/) {
- $ret = hide($func,"S_$func");
- }
- elsif ($flags =~ /p/) {
- $ret = hide($func,"Perl_$func");
- }
+ $ret = hide($func, full_name($func, $flags));
}
elsif ($args and $args[$args-1] =~ /\.\.\./) {
if ($flags =~ /p/) {
# we're out of luck for varargs functions under CPP
# So we can only do these macros for no implicit context:
$ret = "#ifndef PERL_IMPLICIT_CONTEXT\n"
- . hide($func,"Perl_$func") . "#endif\n";
+ . hide($func, full_name($func, $flags)) . "#endif\n";
}
}
else {
@@ -282,12 +300,7 @@ sub embed_h {
$ret = "#define $func($alist)";
my $t = int(length($ret) / 8);
$ret .= "\t" x ($t < 4 ? 4 - $t : 1);
- if ($flags =~ /[si]/) {
- $ret .= "S_$func(aTHX";
- }
- elsif ($flags =~ /p/) {
- $ret .= "Perl_$func(aTHX";
- }
+ $ret .= full_name($func, $flags) . "(aTHX";
$ret .= "_ " if $alist;
$ret .= $alist . ")\n";
}
@@ -429,7 +442,13 @@ END
my $sym;
for $sym (@intrp) {
+ if ($sym eq 'sawampersand') {
+ print $em "#ifndef PL_sawampersand\n";
+ }
print $em multon($sym,'I','vTHX->');
+ if ($sym eq 'sawampersand') {
+ print $em "#endif\n";
+ }
}
print $em <<'END';
diff --git a/gnu/usr.bin/perl/regen/feature.pl b/gnu/usr.bin/perl/regen/feature.pl
index 222215a0776..89ba0c98085 100644
--- a/gnu/usr.bin/perl/regen/feature.pl
+++ b/gnu/usr.bin/perl/regen/feature.pl
@@ -28,6 +28,7 @@ my %feature = (
evalbytes => 'evalbytes',
array_base => 'arybase',
current_sub => '__SUB__',
+ lexical_subs => 'lexsubs',
unicode_eval => 'unieval',
unicode_strings => 'unicode',
fc => 'fc',
@@ -37,25 +38,32 @@ my %feature = (
# versions, any code below that uses %BundleRanges will have to
# be changed to account.
+# 5.odd implies the next 5.even, but an explicit 5.even can override it.
my %feature_bundle = (
all => [ keys %feature ],
default => [qw(array_base)],
"5.9.5" => [qw(say state switch array_base)],
"5.10" => [qw(say state switch array_base)],
"5.11" => [qw(say state switch unicode_strings array_base)],
- "5.12" => [qw(say state switch unicode_strings array_base)],
"5.13" => [qw(say state switch unicode_strings array_base)],
- "5.14" => [qw(say state switch unicode_strings array_base)],
"5.15" => [qw(say state switch unicode_strings unicode_eval
evalbytes current_sub fc)],
- "5.16" => [qw(say state switch unicode_strings unicode_eval
+ "5.17" => [qw(say state switch unicode_strings unicode_eval
evalbytes current_sub fc)],
);
+# not actually used currently
+my @experimental = qw( lexical_subs );
+
###########################################################################
# More data generated from the above
+for (keys %feature_bundle) {
+ next unless /^5\.(\d*[13579])\z/;
+ $feature_bundle{"5.".($1+1)} ||= $feature_bundle{$_};
+}
+
my %UniqueBundles; # "say state switch" => 5.10
my %Aliases; # 5.12 => 5.11
for( sort keys %feature_bundle ) {
@@ -147,7 +155,7 @@ sub longest {
print $pm "our %feature = (\n";
my $width = length longest keys %feature;
-for(sort { length $a <=> length $b } keys %feature) {
+for(sort { length $a <=> length $b || $a cmp $b } keys %feature) {
print $pm " $_" . " "x($width-length)
. " => 'feature_$feature{$_}',\n";
}
@@ -168,6 +176,10 @@ for (sort keys %Aliases) {
qq'\$feature_bundle{"$_"} = \$feature_bundle{"$Aliases{$_}"};\n';
};
+#print $pm "my \%experimental = (\n";
+#print $pm " $_ => 1,\n", for @experimental;
+#print $pm ");\n";
+
print $pm <<EOPM;
our \$hint_shift = $HintShift;
@@ -247,7 +259,7 @@ print $h <<EOL;
EOL
for (
- sort { length $a <=> length $b } keys %feature
+ sort { length $a <=> length $b || $a cmp $b } keys %feature
) {
my($first,$last) =
map { (my $__ = uc) =~ y/.//d; $__ } @{$BundleRanges{$_}};
@@ -276,7 +288,7 @@ EOI
EOH3
}
- else {
+ elsif ($first) {
print $h <<EOH4;
#define FEATURE_$NAME\_IS_ENABLED \\
( \\
@@ -287,6 +299,16 @@ EOH3
EOH4
}
+ else {
+ print $h <<EOH5;
+#define FEATURE_$NAME\_IS_ENABLED \\
+ ( \\
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \\
+ FEATURE_IS_ENABLED("$name") \\
+ )
+
+EOH5
+ }
}
print $h <<EOH;
@@ -334,7 +356,7 @@ read_only_bottom_close_and_rename($h);
__END__
package feature;
-our $VERSION = '1.27';
+our $VERSION = '1.32';
FEATURES
@@ -373,7 +395,7 @@ pragma.)
=head2 Lexical effect
Like other pragmas (C<use strict>, for example), features have a lexical
-effect. C<use feature qw(foo)> will only make the feature "foo" available
+effect. C<use feature qw(foo)> will only make the feature "foo" available
from that point to the end of the enclosing block.
{
@@ -433,7 +455,8 @@ C<use feature 'unicode_strings'> tells the compiler to use Unicode semantics
in all string operations executed within its scope (unless they are also
within the scope of either C<use locale> or C<use bytes>). The same applies
to all regular expressions compiled within the scope, even if executed outside
-it.
+it. It does not change the internal representation of strings, but only how
+they are interpreted.
C<no feature 'unicode_strings'> tells the compiler to use the traditional
Perl semantics wherein the native character set semantics is used unless it is
@@ -519,6 +542,20 @@ See L<perlfunc/fc> for details.
This feature is available from Perl 5.16 onwards.
+=head2 The 'lexical_subs' feature
+
+B<WARNING>: This feature is still experimental and the implementation may
+change in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the
+warning:
+
+ no warnings "experimental::lexical_subs";
+
+This enables declaration of subroutines via C<my sub foo>, C<state sub foo>
+and C<our sub foo> syntax. See L<perlsub/Lexical Subroutines> for details.
+
+This feature is available from Perl 5.18 onwards.
+
=head1 FEATURE BUNDLES
It's possible to load multiple features together, using
diff --git a/gnu/usr.bin/perl/regen/mg_vtable.pl b/gnu/usr.bin/perl/regen/mg_vtable.pl
index 605846bec6b..d8217a88b35 100644
--- a/gnu/usr.bin/perl/regen/mg_vtable.pl
+++ b/gnu/usr.bin/perl/regen/mg_vtable.pl
@@ -2,6 +2,8 @@
#
# Regenerate (overwriting only if changed):
#
+# mg_names.c
+# mg_raw.h
# mg_vtable.h
# pod/perlguts.pod
#
@@ -25,9 +27,9 @@ my %mg =
(
sv => { char => '\0', vtable => 'sv', readonly_acceptable => 1,
desc => 'Special scalar variable' },
- overload => { char => 'A', vtable => 'amagic', desc => '%OVERLOAD hash' },
- overload_elem => { char => 'a', vtable => 'amagicelem',
- desc => '%OVERLOAD hash element' },
+ # overload, or type "A" magic, used to be here. Hence overloaded is
+ # often called AMAGIC internally, even though it does not use "A"
+ # magic any more.
overload_table => { char => 'c', vtable => 'ovrld',
desc => 'Holds overload table (AMT) on stash' },
bm => { char => 'B', vtable => 'regexp', value_magic => 1,
@@ -40,10 +42,8 @@ my %mg =
env => { char => 'E', vtable => 'env', desc => '%ENV hash' },
envelem => { char => 'e', vtable => 'envelem',
desc => '%ENV hash element' },
- fm => { char => 'f', vtable => 'regdata', value_magic => 1,
+ fm => { char => 'f', vtable => 'regexp', value_magic => 1,
readonly_acceptable => 1, desc => "Formline ('compiled' format)" },
- study => { char => 'G', vtable => 'regexp', value_magic => 1,
- readonly_acceptable => 1, desc => 'study()ed string' },
regex_global => { char => 'g', vtable => 'mglob', value_magic => 1,
readonly_acceptable => 1, desc => 'm//g target' },
hints => { char => 'H', vtable => 'hints', desc => '%^H hash' },
@@ -84,7 +84,7 @@ my %mg =
unknown_to_sv_magic => 1 },
vec => { char => 'v', vtable => 'vec', value_magic => 1,
desc => 'vec() lvalue' },
- vstring => { char => 'V', value_magic => 1, vtable => 'vstring',
+ vstring => { char => 'V', value_magic => 1,
desc => 'SV was vstring literal' },
utf8 => { char => 'w', vtable => 'utf8', value_magic => 1,
desc => 'Cached UTF-8 information' },
@@ -94,6 +94,7 @@ my %mg =
desc => "Shadow \"foreach\" iterator variable /\nsmart parameter vivification" },
arylen => { char => '#', vtable => 'arylen', value_magic => 1,
desc => 'Array length ($#ary)' },
+ proto => { char => '&', desc => 'my sub prototype CV' },
pos => { char => '.', vtable => 'pos', value_magic => 1,
desc => 'pos() lvalue' },
backref => { char => '<', vtable => 'backref', value_magic => 1,
@@ -105,14 +106,14 @@ my %mg =
arylen_p => { char => '@', value_magic => 1,
desc => 'to move arylen out of XPVAV' },
ext => { char => '~', desc => 'Available for use by extensions' },
- checkcall => { char => ']', value_magic => 1,
+ checkcall => { char => ']', value_magic => 1, vtable => 'checkcall',
desc => 'inlining/mutation of call to this CV'},
);
# These have a subtly different "namespace" from the magic types.
my %sig =
(
- 'sv' => {get => 'get', set => 'set', len => 'len'},
+ 'sv' => {get => 'get', set => 'set'},
'env' => {set => 'set_all_env', clear => 'clear_all_env'},
'envelem' => {set => 'setenv', clear => 'clearenv'},
'sigelem' => {get => 'getsig', set => 'setsig', clear => 'clearsig',
@@ -123,7 +124,7 @@ my %sig =
'isa' => {set => 'setisa', clear => 'clearisa'},
'isaelem' => {set => 'setisa'},
'arylen' => {get => 'getarylen', set => 'setarylen', const => 1},
- 'arylen_p' => {free => 'freearylen_p'},
+ 'arylen_p' => {clear => 'cleararylen_p', free => 'freearylen_p'},
'mglob' => {set => 'setmglob'},
'nkeys' => {get => 'getnkeys', set => 'setnkeys'},
'taint' => {get => 'gettaint', set => 'settaint'},
@@ -135,8 +136,6 @@ my %sig =
'regexp' => {set => 'setregexp', alias => [qw(bm fm)]},
'regdata' => {len => 'regdata_cnt'},
'regdatum' => {get => 'regdatum_get', set => 'regdatum_set'},
- 'amagic' => {set => 'setamagic', free => 'setamagic'},
- 'amagicelem' => {set => 'setamagic', free => 'setamagic'},
'backref' => {free => 'killbackrefs'},
'ovrld' => {free => 'freeovrld'},
'utf8' => {set => 'setutf8'},
@@ -144,7 +143,7 @@ my %sig =
cond => '#ifdef USE_LOCALE_COLLATE'},
'hintselem' => {set => 'sethint', clear => 'clearhint'},
'hints' => {clear => 'clearhints'},
- 'vstring' => {set => 'setvstring'},
+ 'checkcall' => {copy => 'copycallchecker'},
);
my ($vt, $raw, $names) = map {
@@ -279,11 +278,11 @@ enum { /* pass one of these to get_vtbl */
};
#ifdef DOINIT
-EXTCONST char *PL_magic_vtable_names[magic_vtable_max] = {
+EXTCONST char * const PL_magic_vtable_names[magic_vtable_max] = {
"$names"
};
#else
-EXTCONST char *PL_magic_vtable_names[magic_vtable_max];
+EXTCONST char * const PL_magic_vtable_names[magic_vtable_max];
#endif
EOH
diff --git a/gnu/usr.bin/perl/regen/mk_PL_charclass.pl b/gnu/usr.bin/perl/regen/mk_PL_charclass.pl
index b903fbe1f00..63c06bc9f63 100644
--- a/gnu/usr.bin/perl/regen/mk_PL_charclass.pl
+++ b/gnu/usr.bin/perl/regen/mk_PL_charclass.pl
@@ -1,5 +1,5 @@
#!perl -w
-use 5.012;
+use v5.15.8;
use strict;
use warnings;
require 'regen/regen_lib.pl';
@@ -22,83 +22,142 @@ require 'regen/regen_lib.pl';
# new Unicode release, to make sure things haven't been changed by it.
my @properties = qw(
- ALNUMC_A
- ALNUMC_L1
- ALPHA_A
- ALPHA_L1
- BLANK_A
- BLANK_L1
+ NONLATIN1_FOLD
+ ALPHANUMERIC
+ ALPHA
+ ASCII
+ BLANK
+ CASED
CHARNAME_CONT
- CNTRL_A
- CNTRL_L1
- DIGIT_A
- GRAPH_A
- GRAPH_L1
- IDFIRST_A
- IDFIRST_L1
- LOWER_A
- LOWER_L1
- OCTAL_A
- PRINT_A
- PRINT_L1
- PSXSPC_A
- PSXSPC_L1
- PUNCT_A
- PUNCT_L1
- SPACE_A
- SPACE_L1
- UPPER_A
- UPPER_L1
- WORDCHAR_A
- WORDCHAR_L1
- XDIGIT_A
+ CNTRL
+ DIGIT
+ GRAPH
+ IDFIRST
+ LOWER
+ NON_FINAL_FOLD
+ PRINT
+ PSXSPC
+ PUNCT
QUOTEMETA
+ SPACE
+ UPPER
+ WORDCHAR
+ XDIGIT
+ VERTSPACE
+ IS_IN_SOME_FOLD
+ BACKSLASH_FOO_LBRACE_IS_META
);
# Read in the case fold mappings.
my %folded_closure;
-my $file="lib/unicore/CaseFolding.txt";
-open my $fh, "<", $file or die "Failed to read '$file': $!";
-while (<$fh>) {
- chomp;
-
- # Lines look like (without the initial '#'
- #0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
- # Get rid of comments, ignore blank or comment-only lines
- my $line = $_ =~ s/ (?: \s* \# .* )? $ //rx;
- next unless length $line;
- my ($hex_from, $fold_type, @folded) = split /[\s;]+/, $line;
-
- my $from = hex $hex_from;
-
- # Perl only deals with C and F folds
- next if $fold_type ne 'C' and $fold_type ne 'F';
-
- # Get each code point in the range that participates in this line's fold.
- # The hash has keys of each code point in the range, and values of what it
- # folds to and what folds to it
- foreach my $hex_fold (@folded) {
- my $fold = hex $hex_fold;
- push @{$folded_closure{$fold}}, $from if $fold < 256;
- push @{$folded_closure{$from}}, $fold if $from < 256;
+my @hex_non_final_folds;
+my @folds;
+use Unicode::UCD;
+
+BEGIN { # Have to do this at compile time because using user-defined \p{property}
+
+ # Use the Unicode data file if we are on an ASCII platform (which its data
+ # is for), and it is in the modern format (starting in Unicode 3.1.0) and
+ # it is available. This avoids being affected by potential bugs
+ # introduced by other layers of Perl
+ my $file="lib/unicore/CaseFolding.txt";
+
+ if (ord('A') == 65
+ && pack("C*", split /\./, Unicode::UCD::UnicodeVersion()) ge v3.1.0
+ && open my $fh, "<", $file)
+ {
+ @folds = <$fh>;
}
-}
+ else {
+ my ($invlist_ref, $invmap_ref, undef, $default)
+ = Unicode::UCD::prop_invmap('Case_Folding');
+ for my $i (0 .. @$invlist_ref - 1 - 1) {
+ next if $invmap_ref->[$i] == $default;
+ my $adjust = -1;
+ for my $j ($invlist_ref->[$i] .. $invlist_ref->[$i+1] -1) {
+ $adjust++;
+
+ # Single-code point maps go to a 'C' type
+ if (! ref $invmap_ref->[$i]) {
+ push @folds, sprintf("%04X; C; %04X\n",
+ $j,
+ $invmap_ref->[$i] + $adjust);
+ }
+ else { # Multi-code point maps go to 'F'. prop_invmap()
+ # guarantees that no adjustment is needed for these,
+ # as the range will contain just one element
+ push @folds, sprintf("%04X; F; %s\n",
+ $j,
+ join " ", map { sprintf "%04X", $_ }
+ @{$invmap_ref->[$i]});
+ }
+ }
+ }
+ }
+
+ for (@folds) {
+ chomp;
+
+ # Lines look like (without the initial '#'
+ #0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+ # Get rid of comments, ignore blank or comment-only lines
+ my $line = $_ =~ s/ (?: \s* \# .* )? $ //rx;
+ next unless length $line;
+ my ($hex_from, $fold_type, @folded) = split /[\s;]+/, $line;
+
+ my $from = hex $hex_from;
+
+ # Perl only deals with C and F folds
+ next if $fold_type ne 'C' and $fold_type ne 'F';
+
+ # Get each code point in the range that participates in this line's fold.
+ # The hash has keys of each code point in the range, and values of what it
+ # folds to and what folds to it
+ for my $i (0 .. @folded - 1) {
+ my $hex_fold = $folded[$i];
+ my $fold = hex $hex_fold;
+ push @{$folded_closure{$fold}}, $from if $fold < 256;
+ push @{$folded_closure{$from}}, $fold if $from < 256;
-# Now having read all the lines, combine them into the full closure of each
-# code point in the range by adding lists together that share a common element
-foreach my $folded (keys %folded_closure) {
- foreach my $from (grep { $_ < 256 } @{$folded_closure{$folded}}) {
- push @{$folded_closure{$from}}, @{$folded_closure{$folded}};
+ if ($i < @folded-1
+ && $fold < 256
+ && ! grep { $_ eq $hex_fold } @hex_non_final_folds)
+ {
+ push @hex_non_final_folds, $hex_fold;
+
+ # Also add the upper case, which in the latin1 range folds to
+ # $fold
+ push @hex_non_final_folds, sprintf "%04X", ord uc chr $fold;
+ }
+ }
+ }
+
+ # Now having read all the lines, combine them into the full closure of each
+ # code point in the range by adding lists together that share a common
+ # element
+ foreach my $folded (keys %folded_closure) {
+ foreach my $from (grep { $_ < 256 } @{$folded_closure{$folded}}) {
+ push @{$folded_closure{$from}}, @{$folded_closure{$folded}};
+ }
}
}
-my @bits; # Bit map for each code point
+sub Is_Non_Latin1_Fold {
+ my @return;
-foreach my $folded (keys %folded_closure) {
- $bits[$folded] = "_CC_NONLATIN1_FOLD" if grep { $_ > 255 }
- @{$folded_closure{$folded}};
+ foreach my $folded (keys %folded_closure) {
+ push @return, sprintf("%X", $folded), if grep { $_ > 255 }
+ @{$folded_closure{$folded}};
+ }
+ return join("\n", @return) . "\n";
+}
+
+sub Is_Non_Final_Fold {
+ return join("\n", @hex_non_final_folds) . "\n";
}
+my @bits; # Bit map for each code point
+
# For each character, calculate which properties it matches.
for my $ord (0..255) {
my $char = chr($ord);
@@ -114,8 +173,8 @@ for my $ord (0..255) {
if (! ($name =~ s/_L1$//)) {
# Here, isn't an _L1. If its _A, it's automatically false for
- # non-ascii. The only one current one without a suffix is valid
- # over the whole range.
+ # non-ascii. The only current ones (besides ASCII) without a
+ # suffix are valid over the whole range.
next if $name =~ s/_A$// && $ord >= 128;
}
@@ -126,22 +185,33 @@ for my $ord (0..255) {
# just \pP outside it.
$re = qr/\p{Punct}|[^\P{Symbol}\P{ASCII}]/;
} elsif ($name eq 'CHARNAME_CONT') {;
- $re = qr/[-\w ():\xa0]/;
+ $re = qr/\p{_Perl_Charname_Continue}/,
} elsif ($name eq 'SPACE') {;
- $re = qr/\s/;
+ $re = qr/\p{XPerlSpace}/;
} elsif ($name eq 'IDFIRST') {
$re = qr/[_\p{Alpha}]/;
} elsif ($name eq 'PSXSPC') {
$re = qr/[\v\p{Space}]/;
} elsif ($name eq 'WORDCHAR') {
- $re = qr/\w/;
- } elsif ($name eq 'ALNUMC') {
+ $re = qr/\p{XPosixWord}/;
+ } elsif ($name eq 'ALPHANUMERIC') {
# Like \w, but no underscore
$re = qr/\p{Alnum}/;
- } elsif ($name eq 'OCTAL') {
- $re = qr/[0-7]/;
} elsif ($name eq 'QUOTEMETA') {
$re = qr/\p{_Perl_Quotemeta}/;
+ } elsif ($name eq 'NONLATIN1_FOLD') {
+ $re = qr/\p{Is_Non_Latin1_Fold}/;
+ } elsif ($name eq 'NON_FINAL_FOLD') {
+ $re = qr/\p{Is_Non_Final_Fold}/;
+ } elsif ($name eq 'IS_IN_SOME_FOLD') {
+ $re = qr/\p{_Perl_Any_Folds}/;
+ } elsif ($name eq 'BACKSLASH_FOO_LBRACE_IS_META') {
+
+ # This is true for FOO where FOO is the varying character in:
+ # \a{, \b{, \c{, ...
+ # and the sequence has non-literal meaning to Perl; so it is true
+ # for 'x' because \x{ is special, but not 'a' because \a{ isn't.
+ $re = qr/[gkNopPx]/;
} else { # The remainder have the same name and values as Unicode
$re = eval "qr/\\p{$name}/";
use Carp;
@@ -150,7 +220,7 @@ for my $ord (0..255) {
#print "$ord, $name $property, $re\n";
if ($char =~ $re) { # Add this property if matches
$bits[$ord] .= '|' if $bits[$ord];
- $bits[$ord] .= "_CC_$property";
+ $bits[$ord] .= "(1U<<_CC_$property)";
}
}
#print __LINE__, " $ord $char $bits[$ord]\n";
@@ -231,7 +301,7 @@ my @C1 = qw(
my $out_fh = open_new('l1_char_class_tab.h', '>',
{style => '*', by => $0,
- from => "property definitions and $file"});
+ from => "property definitions"});
# Output the table using fairly short names for each char.
for my $ord (0..255) {
diff --git a/gnu/usr.bin/perl/regen/mk_invlists.pl b/gnu/usr.bin/perl/regen/mk_invlists.pl
index 64e3d435c15..843d6e77c30 100644
--- a/gnu/usr.bin/perl/regen/mk_invlists.pl
+++ b/gnu/usr.bin/perl/regen/mk_invlists.pl
@@ -2,7 +2,7 @@
use 5.015;
use strict;
use warnings;
-use Unicode::UCD "prop_invlist";
+use Unicode::UCD qw(prop_invlist prop_invmap);
require 'regen/regen_lib.pl';
# This program outputs charclass_invlists.h, which contains various inversion
@@ -15,7 +15,7 @@ require 'regen/regen_lib.pl';
# in the headers is used to minimize the possibility of things getting
# out-of-sync, or the wrong data structure being passed. Currently that
# random number is:
-my $VERSION_DATA_STRUCTURE_TYPE = 1064334010;
+my $VERSION_DATA_STRUCTURE_TYPE = 290655244;
my $out_fh = open_new('charclass_invlists.h', '>',
{style => '*', by => $0,
@@ -23,10 +23,16 @@ my $out_fh = open_new('charclass_invlists.h', '>',
print $out_fh "/* See the generating file for comments */\n\n";
+my %include_in_ext_re = ( NonL1_Perl_Non_Final_Folds => 1 );
+
sub output_invlist ($$) {
my $name = shift;
my $invlist = shift; # Reference to inversion list array
+ die "No inversion list for $name" unless defined $invlist
+ && ref $invlist eq 'ARRAY'
+ && @$invlist;
+
# Output the inversion list $invlist using the name $name for it.
# It is output in the exact internal form for inversion lists.
@@ -47,10 +53,16 @@ sub output_invlist ($$) {
$zero_or_one = 1;
}
- print $out_fh "\nUV ${name}_invlist[] = {\n";
+ print $out_fh "\n#ifndef PERL_IN_XSUB_RE\n" unless exists $include_in_ext_re{$name};
+ print $out_fh "\nstatic UV ${name}_invlist[] = {\n";
print $out_fh "\t", scalar @$invlist, ",\t/* Number of elements */\n";
+
+ # This should be UV_MAX, but I (khw) am not confident that the suffixes
+ # for specifying the constant are portable, e.g. 'ull' on a 32 bit
+ # machine that is configured to use 64 bits; might need a Configure probe
print $out_fh "\t0,\t/* Current iteration position */\n";
+ print $out_fh "\t0,\t/* Cache of previous search index result */\n";
print $out_fh "\t$VERSION_DATA_STRUCTURE_TYPE, /* Version and data structure type */\n";
print $out_fh "\t", $zero_or_one,
",\t/* 0 if this is the first element of the list proper;",
@@ -66,6 +78,62 @@ sub output_invlist ($$) {
print $out_fh "\t$invlist->[-1]\n";
print $out_fh "};\n";
+ print $out_fh "\n#endif\n" unless exists $include_in_ext_re{$name};
+
+}
+
+sub mk_invlist_from_cp_list {
+
+ # Returns an inversion list constructed from the sorted input array of
+ # code points
+
+ my $list_ref = shift;
+
+ # Initialize to just the first element
+ my @invlist = ( $list_ref->[0], $list_ref->[0] + 1);
+
+ # For each succeeding element, if it extends the previous range, adjust
+ # up, otherwise add it.
+ for my $i (1 .. @$list_ref - 1) {
+ if ($invlist[-1] == $list_ref->[$i]) {
+ $invlist[-1]++;
+ }
+ else {
+ push @invlist, $list_ref->[$i], $list_ref->[$i] + 1;
+ }
+ }
+ return @invlist;
+}
+
+# Read in the Case Folding rules, and construct arrays of code points for the
+# properties we need.
+my ($cp_ref, $folds_ref, $format) = prop_invmap("Case_Folding");
+die "Could not find inversion map for Case_Folding" unless defined $format;
+die "Incorrect format '$format' for Case_Folding inversion map"
+ unless $format eq 'al';
+my @has_multi_char_fold;
+my @is_non_final_fold;
+
+for my $i (0 .. @$folds_ref - 1) {
+ next unless ref $folds_ref->[$i]; # Skip single-char folds
+ push @has_multi_char_fold, $cp_ref->[$i];
+
+ # Add to the the non-finals list each code point that is in a non-final
+ # position
+ for my $j (0 .. @{$folds_ref->[$i]} - 2) {
+ push @is_non_final_fold, $folds_ref->[$i][$j]
+ unless grep { $folds_ref->[$i][$j] == $_ } @is_non_final_fold;
+ }
+}
+
+sub _Perl_Multi_Char_Folds {
+ @has_multi_char_fold = sort { $a <=> $b } @has_multi_char_fold;
+ return mk_invlist_from_cp_list(\@has_multi_char_fold);
+}
+
+sub _Perl_Non_Final_Folds {
+ @is_non_final_fold = sort { $a <=> $b } @is_non_final_fold;
+ return mk_invlist_from_cp_list(\@is_non_final_fold);
}
output_invlist("Latin1", [ 0, 256 ]);
@@ -90,6 +158,9 @@ output_invlist("AboveLatin1", [ 256 ]);
# In the list of properties below that get generated, the L1 prefix is a fake
# property that means just the Latin1 range of the full property (whose name
# has an X prefix instead of L1).
+#
+# An initial & means to use the subroutine from this file instead of an
+# official inversion list.
for my $prop (qw(
ASCII
@@ -122,6 +193,8 @@ for my $prop (qw(
L1PosixWord
PosixXDigit
XPosixXDigit
+ &NonL1_Perl_Non_Final_Folds
+ &_Perl_Multi_Char_Folds
)
) {
@@ -138,11 +211,23 @@ for my $prop (qw(
# start a new range above 255, as that could be construed as going to
# infinity. For example, the Upper property doesn't include the character
# at 255, but does include the one at 256. We don't include the 256 one.
- my $lookup_prop = $prop;
- $lookup_prop =~ s/^L1Posix/XPosix/ or $lookup_prop =~ s/^L1//;
- my @invlist = prop_invlist($lookup_prop);
+ my $prop_name = $prop;
+ my $is_local_sub = $prop_name =~ s/^&//;
+ my $lookup_prop = $prop_name;
+ my $l1_only = ($lookup_prop =~ s/^L1Posix/XPosix/ or $lookup_prop =~ s/^L1//);
+ my $nonl1_only = 0;
+ $nonl1_only = $lookup_prop =~ s/^NonL1// unless $l1_only;
+
+ my @invlist;
+ if ($is_local_sub) {
+ @invlist = eval $lookup_prop;
+ }
+ else {
+ @invlist = prop_invlist($lookup_prop, '_perl_core_internal_ok');
+ }
+ die "Could not find inversion list for '$lookup_prop'" unless @invlist;
- if ($lookup_prop ne $prop) {
+ if ($l1_only) {
for my $i (0 .. @invlist - 1 - 1) {
if ($invlist[$i] > 255) {
@@ -165,8 +250,26 @@ for my $prop (qw(
}
}
}
+ elsif ($nonl1_only) {
+ my $found_nonl1 = 0;
+ for my $i (0 .. @invlist - 1 - 1) {
+ next if $invlist[$i] < 256;
+
+ # Here, we have the first element in the array that indicates an
+ # element above Latin1. Get rid of all previous ones.
+ splice @invlist, 0, $i;
+
+ # If this one's index is not divisible by 2, it means that this
+ # element is inverting away from being in the list, which means
+ # all code points from 256 to this one are in this list.
+ unshift @invlist, 256 if $i % 2 != 0;
+ $found_nonl1 = 1;
+ last;
+ }
+ die "No non-Latin1 code points in $lookup_prop" unless $found_nonl1;
+ }
- output_invlist($prop, \@invlist);
+ output_invlist($prop_name, \@invlist);
}
read_only_bottom_close_and_rename($out_fh)
diff --git a/gnu/usr.bin/perl/regen/opcode.pl b/gnu/usr.bin/perl/regen/opcode.pl
index d8186cd2944..a081c647848 100644
--- a/gnu/usr.bin/perl/regen/opcode.pl
+++ b/gnu/usr.bin/perl/regen/opcode.pl
@@ -44,8 +44,10 @@ while (<OPS>) {
$args = '' unless defined $args;
warn qq[Description "$desc" duplicates $seen{$desc}\n]
- if $seen{$desc} and $key ne "transr";
+ if $seen{$desc} and $key !~ "transr|(?:intro|clone)cv";
die qq[Opcode "$key" duplicates $seen{$key}\n] if $seen{$key};
+ die qq[Opcode "freed" is reserved for the slab allocator\n]
+ if $key eq 'freed';
$seen{$desc} = qq[description of opcode "$key"];
$seen{$key} = qq[opcode "$key"];
@@ -189,6 +191,7 @@ for (@ops) {
print $on "\t", tab(3,"OP_max"), "\n";
print $on "} opcode;\n";
print $on "\n#define MAXO ", scalar @ops, "\n";
+print $on "#define OP_FREED MAXO\n";
# Emit op names and descriptions.
@@ -206,6 +209,7 @@ for (@ops) {
}
print $oc <<'END';
+ "freed",
};
#endif
@@ -225,6 +229,7 @@ for (@ops) {
}
print $oc <<'END';
+ "freed op",
};
#endif
diff --git a/gnu/usr.bin/perl/regen/opcodes b/gnu/usr.bin/perl/regen/opcodes
index 22cc9133fd3..9c86d69a32a 100644
--- a/gnu/usr.bin/perl/regen/opcodes
+++ b/gnu/usr.bin/perl/regen/opcodes
@@ -103,9 +103,9 @@ schop scalar chop ck_null stu% S?
chomp chomp ck_spair mTs% L
schomp scalar chomp ck_null sTu% S?
defined defined operator ck_defined isu% S?
-undef undef operator ck_lfun s% S?
+undef undef operator ck_fun s% R?
study study ck_fun su% S?
-pos match position ck_lfun stu% S?
+pos match position ck_fun stu% R?
preinc preincrement (++) ck_lfun dIs1 S
i_preinc integer preincrement (++) ck_lfun dis1 S
@@ -126,7 +126,7 @@ divide division (/) ck_null IfsT2 S S
i_divide integer division (/) ck_null ifsT2 S S
modulo modulus (%) ck_null IifsT2 S S
i_modulo integer modulus (%) ck_null ifsT2 S S
-repeat repeat (x) ck_repeat mt2 L S
+repeat repeat (x) ck_repeat fmt2 L S
add addition (+) ck_null IfsT2 S S
i_add integer addition (+) ck_null ifsT2 S S
@@ -232,12 +232,11 @@ exists exists ck_exists is% S
rv2hv hash dereference ck_rvconst dt1
helem hash element ck_null s2 H S
hslice hash slice ck_null m@ H L
-boolkeys boolkeys ck_fun % H
# Explosives and implosives.
unpack unpack ck_fun u@ S S?
-pack pack ck_fun mst@ S L
+pack pack ck_fun fmst@ S L
split split ck_split t@ S S S
join join or string ck_join mst@ S L
@@ -413,7 +412,7 @@ ftbinary -B ck_ftst isu- F-
# File calls.
# chdir really behaves as if it had both "S?" and "F?"
-chdir chdir ck_chdir isT% S?
+chdir chdir ck_trunc isT% S?
chown chown ck_fun imsT@ L
chroot chroot ck_fun isTu% S?
unlink unlink ck_fun imsTu@ L
@@ -485,7 +484,6 @@ dofile do "file" ck_fun d1 S
hintseval eval hints ck_svconst s$
entereval eval "string" ck_eval du% S?
leaveeval eval "string" exit ck_null 1 S
-#evalonce eval constant string ck_null d1 S
entertry eval {block} ck_eval d|
leavetry eval {block} exit ck_null @
@@ -548,3 +546,8 @@ runcv __SUB__ ck_null s0
# fc and \F
fc fc ck_fun fstu% S?
+
+padcv private subroutine ck_null d0
+introcv private subroutine ck_null d0
+clonecv private subroutine ck_null d0
+padrange list of private variables ck_null d0
diff --git a/gnu/usr.bin/perl/regen/overload.pl b/gnu/usr.bin/perl/regen/overload.pl
index 652b2b7b861..6d9e04d9442 100644
--- a/gnu/usr.bin/perl/regen/overload.pl
+++ b/gnu/usr.bin/perl/regen/overload.pl
@@ -198,5 +198,3 @@ concat_ass (.=
smart (~~
ftest (-X
regexp (qr
-# Note: Perl_Gv_AMupdate() assumes that DESTROY is the last entry
-DESTROY DESTROY
diff --git a/gnu/usr.bin/perl/regen/reentr.pl b/gnu/usr.bin/perl/regen/reentr.pl
index 49d7efa1670..899e83b8470 100644
--- a/gnu/usr.bin/perl/regen/reentr.pl
+++ b/gnu/usr.bin/perl/regen/reentr.pl
@@ -835,10 +835,10 @@ Perl_reentrant_free(pTHX) {
void*
Perl_reentrant_retry(const char *f, ...)
{
- dTHX;
void *retptr = NULL;
va_list ap;
#ifdef USE_REENTRANT_API
+ dTHX;
/* Easier to special case this here than in embed.pl. (Look at what it
generates for proto.h) */
PERL_ARGS_ASSERT_REENTRANT_RETRY;
diff --git a/gnu/usr.bin/perl/regen/regcharclass.pl b/gnu/usr.bin/perl/regen/regcharclass.pl
index 42281ac91a8..f5cf315a54e 100644
--- a/gnu/usr.bin/perl/regen/regcharclass.pl
+++ b/gnu/usr.bin/perl/regen/regcharclass.pl
@@ -1,14 +1,19 @@
+#!perl
package CharClass::Matcher;
use strict;
use 5.008;
use warnings;
use warnings FATAL => 'all';
use Text::Wrap qw(wrap);
-use Encode;
use Data::Dumper;
$Data::Dumper::Useqq= 1;
our $hex_fmt= "0x%02X";
+sub DEBUG () { 0 }
+$|=1 if DEBUG;
+
+sub ASCII_PLATFORM { (ord('A') == 65) }
+
require 'regen/regen_lib.pl';
=head1 NAME
@@ -23,36 +28,47 @@ CharClass::Matcher -- Generate C macros that match character classes efficiently
Dynamically generates macros for detecting special charclasses
in latin-1, utf8, and codepoint forms. Macros can be set to return
-the length (in bytes) of the matched codepoint, or the codepoint itself.
+the length (in bytes) of the matched codepoint, and/or the codepoint itself.
-To regenerate regcharclass.h, run this script from perl-root. No arguments
+To regenerate F<regcharclass.h>, run this script from perl-root. No arguments
are necessary.
-Using WHATEVER as an example the following macros will be produced:
+Using WHATEVER as an example the following macros can be produced, depending
+on the input parameters (how to get each is described by internal comments at
+the C<__DATA__> line):
=over 4
-=item is_WHATEVER(s,is_utf8)
+=item C<is_WHATEVER(s,is_utf8)>
-=item is_WHATEVER_safe(s,e,is_utf8)
+=item C<is_WHATEVER_safe(s,e,is_utf8)>
-Do a lookup as appropriate based on the is_utf8 flag. When possible
-comparisons involving octect<128 are done before checking the is_utf8
+Do a lookup as appropriate based on the C<is_utf8> flag. When possible
+comparisons involving octect<128 are done before checking the C<is_utf8>
flag, hopefully saving time.
-=item is_WHATEVER_utf8(s)
+The version without the C<_safe> suffix should be used only when the input is
+known to be well-formed.
-=item is_WHATEVER_utf8_safe(s,e)
+=item C<is_WHATEVER_utf8(s)>
+
+=item C<is_WHATEVER_utf8_safe(s,e)>
Do a lookup assuming the string is encoded in (normalized) UTF8.
-=item is_WHATEVER_latin1(s)
+The version without the C<_safe> suffix should be used only when the input is
+known to be well-formed.
+
+=item C<is_WHATEVER_latin1(s)>
-=item is_WHATEVER_latin1_safe(s,e)
+=item C<is_WHATEVER_latin1_safe(s,e)>
Do a lookup assuming the string is encoded in latin-1 (aka plan octets).
-=item is_WHATEVER_cp(cp)
+The version without the C<_safe> suffix should be used only when it is known
+that C<s> contains at least one character.
+
+=item C<is_WHATEVER_cp(cp)>
Check to see if the string matches a given codepoint (hypothetically a
U32). The condition is constructed as as to "break out" as early as
@@ -65,11 +81,34 @@ IOW:
Thus if the character is X+1 only two comparisons will be done. Making
matching lookups slower, but non-matching faster.
-=back
+=item C<what_len_WHATEVER_FOO(arg1, ..., len)>
+
+A variant form of each of the macro types described above can be generated, in
+which the code point is returned by the macro, and an extra parameter (in the
+final position) is added, which is a pointer for the macro to set the byte
+length of the returned code point.
+
+These forms all have a C<what_len> prefix instead of the C<is_>, for example
+C<what_len_WHATEVER_safe(s,e,is_utf8,len)> and
+C<what_len_WHATEVER_utf8(s,len)>.
-Additionally it is possible to generate C<what_> variants that return
-the codepoint read instead of the number of octets read, this can be
-done by suffixing '-cp' to the type description.
+These forms should not be used I<except> on small sets of mostly widely
+separated code points; otherwise the code generated is inefficient. For these
+cases, it is best to use the C<is_> forms, and then find the code point with
+C<utf8_to_uvchr_buf>(). This program can fail with a "deep recursion"
+message on the worst of the inappropriate sets. Examine the generated macro
+to see if it is acceptable.
+
+=item C<what_WHATEVER_FOO(arg1, ...)>
+
+A variant form of each of the C<is_> macro types described above can be generated, in
+which the code point and not the length is returned by the macro. These have
+the same caveat as L</what_len_WHATEVER_FOO(arg1, ..., len)>, plus they should
+not be used where the set contains a NULL, as 0 is returned for two different
+cases: a) the set doesn't include the input code point; b) the set does
+include it, and it is a NULL.
+
+=back
=head2 CODE FORMAT
@@ -78,7 +117,7 @@ perltidy -st -bt=1 -bbt=0 -pt=0 -sbt=1 -ce -nwls== "%f"
=head1 AUTHOR
-Author: Yves Orton (demerphq) 2007
+Author: Yves Orton (demerphq) 2007. Maintained by Perl5 Porters.
=head1 BUGS
@@ -107,14 +146,16 @@ License or the Artistic License, as specified in the README file.
# represent the string in some given encoding with specific conditions.
#
# $cp - list of codepoints that make up the string.
-# $n - list of octets that make up the string if all codepoints < 128
+# $n - list of octets that make up the string if all codepoints are invariant
+# regardless of if the string is in UTF-8 or not.
# $l - list of octets that make up the string in latin1 encoding if all
-# codepoints < 256, and at least one codepoint is >127.
-# $u - list of octets that make up the string in utf8 if any codepoint >127
+# codepoints < 256, and at least one codepoint is UTF-8 variant.
+# $u - list of octets that make up the string in utf8 if any codepoint is
+# UTF-8 variant
#
# High CP | Defined
#-----------+----------
-# 0 - 127 : $n
+# 0 - 127 : $n (127/128 are the values for ASCII platforms)
# 128 - 255 : $l, $u
# 256 - ... : $u
#
@@ -123,24 +164,37 @@ sub __uni_latin1 {
my $str= shift;
my $max= 0;
my @cp;
+ my @cp_high;
+ my $only_has_invariants = 1;
for my $ch ( split //, $str ) {
my $cp= ord $ch;
push @cp, $cp;
+ push @cp_high, $cp if $cp > 255;
$max= $cp if $max < $cp;
+ if (! ASCII_PLATFORM && $only_has_invariants) {
+ if ($cp > 255) {
+ $only_has_invariants = 0;
+ }
+ else {
+ my $temp = chr($cp);
+ utf8::upgrade($temp);
+ my @utf8 = unpack "U0C*", $temp;
+ $only_has_invariants = (@utf8 == 1 && $utf8[0] == $cp);
+ }
+ }
}
my ( $n, $l, $u );
- if ( $max < 128 ) {
+ $only_has_invariants = $max < 128 if ASCII_PLATFORM;
+ if ($only_has_invariants) {
$n= [@cp];
} else {
$l= [@cp] if $max && $max < 256;
- my $copy= $str; # must copy string, FB_CROAK makes encode destructive
- $u= eval { Encode::encode( "utf8", $copy, Encode::FB_CROAK ) };
- # $u is utf8 but with the utf8 flag OFF
- # therefore "C*" gets us the values of the bytes involved.
- $u= [ unpack "C*", $u ] if defined $u;
+ $u= $str;
+ utf8::upgrade($u);
+ $u= [ unpack "U0C*", $u ] if defined $u;
}
- return ( \@cp, $n, $l, $u );
+ return ( \@cp, \@cp_high, $n, $l, $u );
}
#
@@ -152,14 +206,42 @@ sub __uni_latin1 {
sub __clean {
my ( $expr )= @_;
+
+ #return $expr;
+
our $parens;
$parens= qr/ (?> \( (?> (?: (?> [^()]+ ) | (??{ $parens }) )* ) \) ) /x;
- #print "$parens\n$expr\n";
+ ## remove redundant parens
1 while $expr =~ s/ \( \s* ( $parens ) \s* \) /$1/gx;
- 1 while $expr =~ s/ \( \s* ($parens) \s* \? \s*
- \( \s* ($parens) \s* \? \s* ($parens|[^:]+?) \s* : \s* ($parens|[^)]+?) \s* \)
- \s* : \s* \4 \s* \)/( ( $1 && $2 ) ? $3 : 0 )/gx;
+
+
+ # repeatedly simplify conditions like
+ # ( (cond1) ? ( (cond2) ? X : Y ) : Y )
+ # into
+ # ( ( (cond1) && (cond2) ) ? X : Y )
+ # Also similarly handles expressions like:
+ # : (cond1) ? ( (cond2) ? X : Y ) : Y )
+ # Note the inclusion of the close paren in ([:()]) and the open paren in ([()]) is
+ # purely to ensure we have a balanced set of parens in the expression which makes
+ # it easier to understand the pattern in an editor that understands paren's, we do
+ # not expect either of these cases to actually fire. - Yves
+ 1 while $expr =~ s/
+ ([:()]) \s*
+ ($parens) \s*
+ \? \s*
+ \( \s* ($parens) \s*
+ \? \s* ($parens|[^()?:\s]+?) \s*
+ : \s* ($parens|[^()?:\s]+?) \s*
+ \) \s*
+ : \s* \5 \s*
+ ([()])
+ /$1 ( $2 && $3 ) ? $4 : $5 $6/gx;
+ #$expr=~s/\(\(U8\*\)s\)\[(\d+)\]/S$1/g if length $expr > 8000;
+ #$expr=~s/\s+//g if length $expr > 8000;
+
+ die "Expression too long" if length $expr > 8000;
+
return $expr;
}
@@ -224,7 +306,7 @@ sub __cond_join {
#
# Each string is then stored in the 'strs' subhash as a hash record
# made up of the results of __uni_latin1, using the keynames
-# 'low','latin1','utf8', as well as the synthesized 'LATIN1' and
+# 'low','latin1','utf8', as well as the synthesized 'LATIN1', 'high', and
# 'UTF8' which hold a merge of 'low' and their lowercase equivelents.
#
# Size data is tracked per type in the 'size' subhash.
@@ -247,23 +329,70 @@ sub new {
my $str= $txt;
if ( $str =~ /^[""]/ ) {
$str= eval $str;
- } elsif ( $str =~ /^0x/ ) {
+ } elsif ($str =~ / - /x ) { # A range: Replace this element on the
+ # list with its expansion
+ my ($lower, $upper) = $str =~ / 0x (.+?) \s* - \s* 0x (.+) /x;
+ die "Format must be like '0xDEAD - 0xBEAF'; instead was '$str'" if ! defined $lower || ! defined $upper;
+ foreach my $cp (hex $lower .. hex $upper) {
+ push @{$opt{txt}}, sprintf "0x%X", $cp;
+ }
+ next;
+ } elsif ($str =~ s/ ^ N (?= 0x ) //x ) {
+ # Otherwise undocumented, a leading N means is already in the
+ # native character set; don't convert.
$str= chr eval $str;
- } elsif ( /\S/ ) {
- die "Unparsable line: $txt\n";
- } else {
+ } elsif ( $str =~ /^0x/ ) {
+ $str= eval $str;
+
+ # Convert from Unicode/ASCII to native, if necessary
+ $str = utf8::unicode_to_native($str) if ! ASCII_PLATFORM
+ && $str <= 0xFF;
+ $str = chr $str;
+ } elsif ( $str =~ / \s* \\p \{ ( .*? ) \} /x) {
+ my $property = $1;
+ use Unicode::UCD qw(prop_invlist);
+
+ my @invlist = prop_invlist($property, '_perl_core_internal_ok');
+ if (! @invlist) {
+
+ # An empty return could mean an unknown property, or merely
+ # that it is empty. Call in scalar context to differentiate
+ my $count = prop_invlist($property, '_perl_core_internal_ok');
+ die "$property not found" unless defined $count;
+ }
+
+ # Replace this element on the list with the property's expansion
+ for (my $i = 0; $i < @invlist; $i += 2) {
+ foreach my $cp ($invlist[$i] .. $invlist[$i+1] - 1) {
+
+ # prop_invlist() returns native values; add leading 'N'
+ # to indicate that.
+ push @{$opt{txt}}, sprintf "N0x%X", $cp;
+ }
+ }
+ next;
+ } elsif ($str =~ / ^ do \s+ ( .* ) /x) {
+ die "do '$1' failed: $!$@" if ! do $1 or $@;
+ next;
+ } elsif ($str =~ / ^ & \s* ( .* ) /x) { # user-furnished sub() call
+ my @results = eval "$1";
+ die "eval '$1' failed: $@" if $@;
+ push @{$opt{txt}}, @results;
next;
+ } else {
+ die "Unparsable line: $txt\n";
}
- my ( $cp, $low, $latin1, $utf8 )= __uni_latin1( $str );
+ my ( $cp, $cp_high, $low, $latin1, $utf8 )= __uni_latin1( $str );
my $UTF8= $low || $utf8;
my $LATIN1= $low || $latin1;
+ my $high = (scalar grep { $_ < 256 } @$cp) ? 0 : $utf8;
#die Dumper($txt,$cp,$low,$latin1,$utf8)
# if $txt=~/NEL/ or $utf8 and @$utf8>3;
- @{ $self->{strs}{$str} }{qw( str txt low utf8 latin1 cp UTF8 LATIN1 )}=
- ( $str, $txt, $low, $utf8, $latin1, $cp, $UTF8, $LATIN1 );
+ @{ $self->{strs}{$str} }{qw( str txt low utf8 latin1 high cp cp_high UTF8 LATIN1 )}=
+ ( $str, $txt, $low, $utf8, $latin1, $high, $cp, $cp_high, $UTF8, $LATIN1 );
my $rec= $self->{strs}{$str};
- foreach my $key ( qw(low utf8 latin1 cp UTF8 LATIN1) ) {
+ foreach my $key ( qw(low utf8 latin1 high cp cp_high UTF8 LATIN1) ) {
$self->{size}{$key}{ 0 + @{ $self->{strs}{$str}{$key} } }++
if $self->{strs}{$str}{$key};
}
@@ -308,6 +437,22 @@ sub make_trie {
return 0 + keys( %trie ) ? \%trie : undef;
}
+sub pop_count ($) {
+ my $word = shift;
+
+ # This returns a list of the positions of the bits in the input word that
+ # are 1.
+
+ my @positions;
+ my $position = 0;
+ while ($word) {
+ push @positions, $position if $word & 1;
+ $position++;
+ $word >>= 1;
+ }
+ return @positions;
+}
+
# my $optree= _optree()
#
# recursively convert a trie to an optree where every node represents
@@ -325,8 +470,12 @@ sub _optree {
$else= 0 unless defined $else;
$depth= 0 unless defined $depth;
- my @conds= sort { $a <=> $b } grep { length $_ } keys %$trie;
- if ( $trie->{''} ) {
+ # if we have an emptry string as a key it means we are in an
+ # accepting state and unless we can match further on should
+ # return the value of the '' key.
+ if (exists $trie->{''} ) {
+ # we can now update the "else" value, anything failing to match
+ # after this point should return the value from this.
if ( $ret_type eq 'cp' ) {
$else= $self->{strs}{ $trie->{''} }{cp}[0];
$else= sprintf "$self->{val_fmt}", $else if $else > 9;
@@ -338,37 +487,54 @@ sub _optree {
$else= "len=$depth, $else";
}
}
+ # extract the meaningful keys from the trie, filter out '' as
+ # it means we are an accepting state (end of sequence).
+ my @conds= sort { $a <=> $b } grep { length $_ } keys %$trie;
+
+ # if we havent any keys there is no further we can match and we
+ # can return the "else" value.
return $else if !@conds;
- my $node= {};
- my $root= $node;
- my ( $yes_res, $as_code, @cond );
- my $test= $test_type eq 'cp' ? "cp" : "((U8*)s)[$depth]";
- my $Update= sub {
- $node->{vals}= [@cond];
+
+
+ my $test= $test_type =~ /^cp/ ? "cp" : "((U8*)s)[$depth]";
+ # first we loop over the possible keys/conditions and find out what they look like
+ # we group conditions with the same optree together.
+ my %dmp_res;
+ my @res_order;
+ local $Data::Dumper::Sortkeys=1;
+ foreach my $cond ( @conds ) {
+
+ # get the optree for this child/condition
+ my $res= $self->_optree( $trie->{$cond}, $test_type, $ret_type, $else, $depth + 1 );
+ # convert it to a string with Dumper
+ my $res_code= Dumper( $res );
+
+ push @{$dmp_res{$res_code}{vals}}, $cond;
+ if (!$dmp_res{$res_code}{optree}) {
+ $dmp_res{$res_code}{optree}= $res;
+ push @res_order, $res_code;
+ }
+ }
+
+ # now that we have deduped the optrees we construct a new optree containing the merged
+ # results.
+ my %root;
+ my $node= \%root;
+ foreach my $res_code_idx (0 .. $#res_order) {
+ my $res_code= $res_order[$res_code_idx];
+ $node->{vals}= $dmp_res{$res_code}{vals};
$node->{test}= $test;
- $node->{yes}= $yes_res;
+ $node->{yes}= $dmp_res{$res_code}{optree};
$node->{depth}= $depth;
- $node->{no}= shift;
- };
- while ( @conds ) {
- my $cond= shift @conds;
- my $res=
- $self->_optree( $trie->{$cond}, $test_type, $ret_type, $else,
- $depth + 1 );
- my $res_code= Dumper( $res );
- if ( !$yes_res || $res_code ne $as_code ) {
- if ( $yes_res ) {
- $Update->( {} );
- $node= $node->{no};
- }
- ( $yes_res, $as_code )= ( $res, $res_code );
- @cond= ( $cond );
+ if ($res_code_idx < $#res_order) {
+ $node= $node->{no}= {};
} else {
- push @cond, $cond;
+ $node->{no}= $else;
}
}
- $Update->( $else );
- return $root;
+
+ # return the optree.
+ return \%root;
}
# my $optree= optree(%opts);
@@ -380,7 +546,7 @@ sub optree {
my %opt= @_;
my $trie= $self->make_trie( $opt{type}, $opt{max_depth} );
$opt{ret_type} ||= 'len';
- my $test_type= $opt{type} eq 'cp' ? 'cp' : 'depth';
+ my $test_type= $opt{type} =~ /^cp/ ? 'cp' : 'depth';
return $self->_optree( $trie, $test_type, $opt{ret_type}, $opt{else}, 0 );
}
@@ -409,9 +575,11 @@ sub generic_optree {
} elsif ( $latin1 ) {
$else= __cond_join( "!( is_utf8 )", $latin1, $else );
}
- my $low= $self->make_trie( 'low', $opt{max_depth} );
- if ( $low ) {
- $else= $self->_optree( $low, $test_type, $opt{ret_type}, $else, 0 );
+ if ($opt{type} eq 'generic') {
+ my $low= $self->make_trie( 'low', $opt{max_depth} );
+ if ( $low ) {
+ $else= $self->_optree( $low, $test_type, $opt{ret_type}, $else, 0 );
+ }
}
return $else;
@@ -428,11 +596,11 @@ sub length_optree {
my $type= $opt{type};
die "Can't do a length_optree on type 'cp', makes no sense."
- if $type eq 'cp';
+ if $type =~ /^cp/;
my ( @size, $method );
- if ( $type eq 'generic' ) {
+ if ( $type =~ /generic/ ) {
$method= 'generic_optree';
my %sizes= (
%{ $self->{size}{low} || {} },
@@ -454,19 +622,276 @@ sub length_optree {
return $else;
}
+sub calculate_mask(@) {
+ # Look at the input list of byte values. This routine returns an array of
+ # mask/base pairs to generate that list.
+
+ my @list = @_;
+ my $list_count = @list;
+
+ # Consider a set of byte values, A, B, C .... If we want to determine if
+ # <c> is one of them, we can write c==A || c==B || c==C .... If the
+ # values are consecutive, we can shorten that to A<=c && c<=Z, which uses
+ # far fewer branches. If only some of them are consecutive we can still
+ # save some branches by creating range tests for just those that are
+ # consecutive. _cond_as_str() does this work for looking for ranges.
+ #
+ # Another approach is to look at the bit patterns for A, B, C .... and see
+ # if they have some commonalities. That's what this function does. For
+ # example, consider a set consisting of the bytes
+ # 0xF0, 0xF1, 0xF2, and 0xF3. We could write:
+ # 0xF0 <= c && c <= 0xF4
+ # But the following mask/compare also works, and has just one test:
+ # (c & 0xFC) == 0xF0
+ # The reason it works is that the set consists of exactly those bytes
+ # whose first 4 bits are 1, and the next two are 0. (The value of the
+ # other 2 bits is immaterial in determining if a byte is in the set or
+ # not.) The mask masks out those 2 irrelevant bits, and the comparison
+ # makes sure that the result matches all bytes which match those 6
+ # material bits exactly. In other words, the set of bytes contains
+ # exactly those whose bottom two bit positions are either 0 or 1. The
+ # same principle applies to bit positions that are not necessarily
+ # adjacent. And it can be applied to bytes that differ in 1 through all 8
+ # bit positions. In order to be a candidate for this optimization, the
+ # number of bytes in the set must be a power of 2.
+ #
+ # Consider a different example, the set 0x53, 0x54, 0x73, and 0x74. That
+ # requires 4 tests using either ranges or individual values, and even
+ # though the number in the set is a power of 2, it doesn't qualify for the
+ # mask optimization described above because the number of bits that are
+ # different is too large for that. However, the set can be expressed as
+ # two branches with masks thusly:
+ # (c & 0xDF) == 0x53 || (c & 0xDF) == 0x54
+ # a branch savings of 50%. This is done by splitting the set into two
+ # subsets each of which has 2 elements, and within each set the values
+ # differ by 1 byte.
+ #
+ # This function attempts to find some way to save some branches using the
+ # mask technique. If not, it returns an empty list; if so, it
+ # returns a list consisting of
+ # [ [compare1, mask1], [compare2, mask2], ...
+ # [compare_n, undef], [compare_m, undef], ...
+ # ]
+ # The <mask> is undef in the above for those bytes that must be tested
+ # for individually.
+ #
+ # This function does not attempt to find the optimal set. To do so would
+ # probably require testing all possible combinations, and keeping track of
+ # the current best one.
+ #
+ # There are probably much better algorithms, but this is the one I (khw)
+ # came up with. We start with doing a bit-wise compare of every byte in
+ # the set with every other byte. The results are sorted into arrays of
+ # all those that differ by the same bit positions. These are stored in a
+ # hash with the each key being the bits they differ in. Here is the hash
+ # for the 0x53, 0x54, 0x73, 0x74 set:
+ # {
+ # 4 => {
+ # "0,1,2,5" => [
+ # 83,
+ # 116,
+ # 84,
+ # 115
+ # ]
+ # },
+ # 3 => {
+ # "0,1,2" => [
+ # 83,
+ # 84,
+ # 115,
+ # 116
+ # ]
+ # }
+ # 1 => {
+ # 5 => [
+ # 83,
+ # 115,
+ # 84,
+ # 116
+ # ]
+ # },
+ # }
+ #
+ # The set consisting of values which differ in the 4 bit positions 0, 1,
+ # 2, and 5 from some other value in the set consists of all 4 values.
+ # Likewise all 4 values differ from some other value in the 3 bit
+ # positions 0, 1, and 2; and all 4 values differ from some other value in
+ # the single bit position 5. The keys at the uppermost level in the above
+ # hash, 1, 3, and 4, give the number of bit positions that each sub-key
+ # below it has. For example, the 4 key could have as its value an array
+ # consisting of "0,1,2,5", "0,1,2,6", and "3,4,6,7", if the inputs were
+ # such. The best optimization will group the most values into a single
+ # mask. The most values will be the ones that differ in the most
+ # positions, the ones with the largest value for the topmost key. These
+ # keys, are thus just for convenience of sorting by that number, and do
+ # not have any bearing on the core of the algorithm.
+ #
+ # We start with an element from largest number of differing bits. The
+ # largest in this case is 4 bits, and there is only one situation in this
+ # set which has 4 differing bits, "0,1,2,5". We look for any subset of
+ # this set which has 16 values that differ in these 4 bits. There aren't
+ # any, because there are only 4 values in the entire set. We then look at
+ # the next possible thing, which is 3 bits differing in positions "0,1,2".
+ # We look for a subset that has 8 values that differ in these 3 bits.
+ # Again there are none. So we go to look for the next possible thing,
+ # which is a subset of 2**1 values that differ only in bit position 5. 83
+ # and 115 do, so we calculate a mask and base for those and remove them
+ # from every set. Since there is only the one set remaining, we remove
+ # them from just this one. We then look to see if there is another set of
+ # 2 values that differ in bit position 5. 84 and 116 do, so we calculate
+ # a mask and base for those and remove them from every set (again only
+ # this set remains in this example). The set is now empty, and there are
+ # no more sets to look at, so we are done.
+
+ if ($list_count == 256) { # All 256 is trivially masked
+ return (0, 0);
+ }
+
+ my %hash;
+
+ # Generate bits-differing lists for each element compared against each
+ # other element
+ for my $i (0 .. $list_count - 2) {
+ for my $j ($i + 1 .. $list_count - 1) {
+ my @bits_that_differ = pop_count($list[$i] ^ $list[$j]);
+ my $differ_count = @bits_that_differ;
+ my $key = join ",", @bits_that_differ;
+ push @{$hash{$differ_count}{$key}}, $list[$i] unless grep { $_ == $list[$i] } @{$hash{$differ_count}{$key}};
+ push @{$hash{$differ_count}{$key}}, $list[$j];
+ }
+ }
+
+ print STDERR __LINE__, ": calculate_mask() called: List of values grouped by differing bits: ", Dumper \%hash if DEBUG;
+
+ my @final_results;
+ foreach my $count (reverse sort { $a <=> $b } keys %hash) {
+ my $need = 2 ** $count; # Need 8 values for 3 differing bits, etc
+ foreach my $bits (sort keys $hash{$count}) {
+
+ print STDERR __LINE__, ": For $count bit(s) difference ($bits), need $need; have ", scalar @{$hash{$count}{$bits}}, "\n" if DEBUG;
+
+ # Look only as long as there are at least as many elements in the
+ # subset as are needed
+ while ((my $cur_count = @{$hash{$count}{$bits}}) >= $need) {
+
+ print STDERR __LINE__, ": Looking at bit positions ($bits): ", Dumper $hash{$count}{$bits} if DEBUG;
+
+ # Start with the first element in it
+ my $try_base = $hash{$count}{$bits}[0];
+ my @subset = $try_base;
+
+ # If it succeeds, we return a mask and a base to compare
+ # against the masked value. That base will be the AND of
+ # every element in the subset. Initialize to the one element
+ # we have so far.
+ my $compare = $try_base;
+
+ # We are trying to find a subset of this that has <need>
+ # elements that differ in the bit positions given by the
+ # string $bits, which is comma separated.
+ my @bits = split ",", $bits;
+
+ TRY: # Look through the remainder of the list for other
+ # elements that differ only by these bit positions.
+
+ for (my $i = 1; $i < $cur_count; $i++) {
+ my $try_this = $hash{$count}{$bits}[$i];
+ my @positions = pop_count($try_base ^ $try_this);
+
+ print STDERR __LINE__, ": $try_base vs $try_this: is (", join(',', @positions), ") a subset of ($bits)?" if DEBUG;;
+
+ foreach my $pos (@positions) {
+ unless (grep { $pos == $_ } @bits) {
+ print STDERR " No\n" if DEBUG;
+ my $remaining = $cur_count - $i - 1;
+ if ($remaining && @subset + $remaining < $need) {
+ print STDERR __LINE__, ": Can stop trying $try_base, because even if all the remaining $remaining values work, they wouldn't add up to the needed $need when combined with the existing ", scalar @subset, " ones\n" if DEBUG;
+ last TRY;
+ }
+ next TRY;
+ }
+ }
+
+ print STDERR " Yes\n" if DEBUG;
+ push @subset, $try_this;
+
+ # Add this to the mask base, in case it ultimately
+ # succeeds,
+ $compare &= $try_this;
+ }
+
+ print STDERR __LINE__, ": subset (", join(", ", @subset), ") has ", scalar @subset, " elements; needs $need\n" if DEBUG;
+
+ if (@subset < $need) {
+ shift @{$hash{$count}{$bits}};
+ next; # Try with next value
+ }
+
+ # Create the mask
+ my $mask = 0;
+ foreach my $position (@bits) {
+ $mask |= 1 << $position;
+ }
+ $mask = ~$mask & 0xFF;
+ push @final_results, [$compare, $mask];
+
+ printf STDERR "%d: Got it: compare=%d=0x%X; mask=%X\n", __LINE__, $compare, $compare, $mask if DEBUG;
+
+ # These values are now spoken for. Remove them from future
+ # consideration
+ foreach my $remove_count (sort keys %hash) {
+ foreach my $bits (sort keys %{$hash{$remove_count}}) {
+ foreach my $to_remove (@subset) {
+ @{$hash{$remove_count}{$bits}} = grep { $_ != $to_remove } @{$hash{$remove_count}{$bits}};
+ }
+ }
+ }
+ }
+ }
+ }
+
+ # Any values that remain in the list are ones that have to be tested for
+ # individually.
+ my @individuals;
+ foreach my $count (reverse sort { $a <=> $b } keys %hash) {
+ foreach my $bits (sort keys $hash{$count}) {
+ foreach my $remaining (@{$hash{$count}{$bits}}) {
+
+ # If we already know about this value, just ignore it.
+ next if grep { $remaining == $_ } @individuals;
+
+ # Otherwise it needs to be returned as something to match
+ # individually
+ push @final_results, [$remaining, undef];
+ push @individuals, $remaining;
+ }
+ }
+ }
+
+ # Sort by increasing numeric value
+ @final_results = sort { $a->[0] <=> $b->[0] } @final_results;
+
+ print STDERR __LINE__, ": Final return: ", Dumper \@final_results if DEBUG;
+
+ return @final_results;
+}
+
# _cond_as_str
# turn a list of conditions into a text expression
# - merges ranges of conditions, and joins the result with ||
sub _cond_as_str {
- my ( $self, $op, $combine )= @_;
+ my ( $self, $op, $combine, $opts_ref )= @_;
my $cond= $op->{vals};
my $test= $op->{test};
+ my $is_cp_ret = $opts_ref->{ret_type} eq "cp";
return "( $test )" if !defined $cond;
- # rangify the list
+ # rangify the list.
my @ranges;
my $Update= sub {
- if ( @ranges ) {
+ # We skip this if there are optimizations that
+ # we can apply (below) to the individual ranges
+ if ( ($is_cp_ret || $combine) && @ranges && ref $ranges[-1]) {
if ( $ranges[-1][0] == $ranges[-1][1] ) {
$ranges[-1]= $ranges[-1][0];
} elsif ( $ranges[-1][0] + 1 == $ranges[-1][1] ) {
@@ -475,25 +900,170 @@ sub _cond_as_str {
}
}
};
- for my $cond ( @$cond ) {
- if ( !@ranges || $cond != $ranges[-1][1] + 1 ) {
+ for my $condition ( @$cond ) {
+ if ( !@ranges || $condition != $ranges[-1][1] + 1 ) {
$Update->();
- push @ranges, [ $cond, $cond ];
+ push @ranges, [ $condition, $condition ];
} else {
$ranges[-1][1]++;
}
}
$Update->();
+
return $self->_combine( $test, @ranges )
if $combine;
- @ranges= map {
- ref $_
- ? sprintf(
- "( $self->{val_fmt} <= $test && $test <= $self->{val_fmt} )",
- @$_ )
- : sprintf( "$self->{val_fmt} == $test", $_ );
- } @ranges;
- return "( " . join( " || ", @ranges ) . " )";
+
+ if ($is_cp_ret) {
+ @ranges= map {
+ ref $_
+ ? sprintf(
+ "( $self->{val_fmt} <= $test && $test <= $self->{val_fmt} )",
+ @$_ )
+ : sprintf( "$self->{val_fmt} == $test", $_ );
+ } @ranges;
+
+ return "( " . join( " || ", @ranges ) . " )";
+ }
+
+ # If the input set has certain characteristics, we can optimize tests
+ # for it. This doesn't apply if returning the code point, as we want
+ # each element of the set individually. The code above is for this
+ # simpler case.
+
+ return 1 if @$cond == 256; # If all bytes match, is trivially true
+
+ my @masks;
+ if (@ranges > 1) {
+
+ # See if the entire set shares optimizable characterstics, and if so,
+ # return the optimization. We delay checking for this on sets with
+ # just a single range, as there may be better optimizations available
+ # in that case.
+ @masks = calculate_mask(@$cond);
+
+ # Stringify the output of calculate_mask()
+ if (@masks) {
+ my @return;
+ foreach my $mask_ref (@masks) {
+ if (defined $mask_ref->[1]) {
+ push @return, sprintf "( ( $test & $self->{val_fmt} ) == $self->{val_fmt} )", $mask_ref->[1], $mask_ref->[0];
+ }
+ else { # An undefined mask means to use the value as-is
+ push @return, sprintf "$test == $self->{val_fmt}", $mask_ref->[0];
+ }
+ }
+
+ # The best possible case below for specifying this set of values via
+ # ranges is 1 branch per range. If our mask method yielded better
+ # results, there is no sense trying something that is bound to be
+ # worse.
+ if (@return < @ranges) {
+ return "( " . join( " || ", @return ) . " )";
+ }
+
+ @masks = @return;
+ }
+ }
+
+ # Here, there was no entire-class optimization that was clearly better
+ # than doing things by ranges. Look at each range.
+ my $range_count_extra = 0;
+ for (my $i = 0; $i < @ranges; $i++) {
+ if (! ref $ranges[$i]) { # Trivial case: no range
+ $ranges[$i] = sprintf "$self->{val_fmt} == $test", $ranges[$i];
+ }
+ elsif ($ranges[$i]->[0] == $ranges[$i]->[1]) {
+ $ranges[$i] = # Trivial case: single element range
+ sprintf "$self->{val_fmt} == $test", $ranges[$i]->[0];
+ }
+ else {
+ my $output = "";
+
+ # Well-formed UTF-8 continuation bytes on ascii platforms must be
+ # in the range 0x80 .. 0xBF. If we know that the input is
+ # well-formed (indicated by not trying to be 'safe'), we can omit
+ # tests that verify that the input is within either of these
+ # bounds. (No legal UTF-8 character can begin with anything in
+ # this range, so we don't have to worry about this being a
+ # continuation byte or not.)
+ if (ASCII_PLATFORM
+ && ! $opts_ref->{safe}
+ && $opts_ref->{type} =~ / ^ (?: utf8 | high ) $ /xi)
+ {
+ my $lower_limit_is_80 = ($ranges[$i]->[0] == 0x80);
+ my $upper_limit_is_BF = ($ranges[$i]->[1] == 0xBF);
+
+ # If the range is the entire legal range, it matches any legal
+ # byte, so we can omit both tests. (This should happen only
+ # if the number of ranges is 1.)
+ if ($lower_limit_is_80 && $upper_limit_is_BF) {
+ return 1;
+ }
+ elsif ($lower_limit_is_80) { # Just use the upper limit test
+ $output = sprintf("( $test <= $self->{val_fmt} )",
+ $ranges[$i]->[1]);
+ }
+ elsif ($upper_limit_is_BF) { # Just use the lower limit test
+ $output = sprintf("( $test >= $self->{val_fmt} )",
+ $ranges[$i]->[0]);
+ }
+ }
+
+ # If we didn't change to omit a test above, see if the number of
+ # elements is a power of 2 (only a single bit in the
+ # representation of its count will be set) and if so, it may be
+ # that a mask/compare optimization is possible.
+ if ($output eq ""
+ && pop_count($ranges[$i]->[1] - $ranges[$i]->[0] + 1) == 1)
+ {
+ my @list;
+ push @list, $_ for ($ranges[$i]->[0] .. $ranges[$i]->[1]);
+ my @this_masks = calculate_mask(@list);
+
+ # Use the mask if there is just one for the whole range.
+ # Otherwise there is no savings over the two branches that can
+ # define the range.
+ if (@this_masks == 1 && defined $this_masks[0][1]) {
+ $output = sprintf "( $test & $self->{val_fmt} ) == $self->{val_fmt}", $this_masks[0][1], $this_masks[0][0];
+ }
+ }
+
+ if ($output ne "") { # Prefer any optimization
+ $ranges[$i] = $output;
+ }
+ else {
+ # No optimization happened. We need a test that the code
+ # point is within both bounds. But, if the bounds are
+ # adjacent code points, it is cleaner to say
+ # 'first == test || second == test'
+ # than it is to say
+ # 'first <= test && test <= second'
+
+ $range_count_extra++; # This range requires 2 branches to
+ # represent
+ if ($ranges[$i]->[0] + 1 == $ranges[$i]->[1]) {
+ $ranges[$i] = "( "
+ . join( " || ", ( map
+ { sprintf "$self->{val_fmt} == $test", $_ }
+ @{$ranges[$i]} ) )
+ . " )";
+ }
+ else { # Full bounds checking
+ $ranges[$i] = sprintf("( $self->{val_fmt} <= $test && $test <= $self->{val_fmt} )", $ranges[$i]->[0], $ranges[$i]->[1]);
+ }
+ }
+ }
+ }
+
+ # We have generated the list of bytes in two ways; one trying to use masks
+ # to cut the number of branches down, and the other to look at individual
+ # ranges (some of which could be cut down by using a mask for just it).
+ # We return whichever method uses the fewest branches.
+ return "( "
+ . join( " || ", (@masks && @masks < @ranges + $range_count_extra)
+ ? @masks
+ : @ranges)
+ . " )";
}
# _combine
@@ -514,8 +1084,13 @@ sub _combine {
$gtv= sprintf "$self->{val_fmt}", $item;
}
if ( @cond ) {
- return "( $cstr || ( $gtv < $test &&\n"
- . $self->_combine( $test, @cond ) . " ) )";
+ my $combine= $self->_combine( $test, @cond );
+ if (@cond >1) {
+ return "( $cstr || ( $gtv < $test &&\n"
+ . $combine . " ) )";
+ } else {
+ return "( $cstr || $combine )";
+ }
} else {
return $cstr;
}
@@ -524,13 +1099,18 @@ sub _combine {
# _render()
# recursively convert an optree to text with reasonably neat formatting
sub _render {
- my ( $self, $op, $combine, $brace )= @_;
+ my ( $self, $op, $combine, $brace, $opts_ref, $def, $submacros )= @_;
+ return 0 if ! defined $op; # The set is empty
if ( !ref $op ) {
return $op;
}
- my $cond= $self->_cond_as_str( $op, $combine );
- my $yes= $self->_render( $op->{yes}, $combine, 1 );
- my $no= $self->_render( $op->{no}, $combine, 0 );
+ my $cond= $self->_cond_as_str( $op, $combine, $opts_ref );
+ #no warnings 'recursion'; # This would allow really really inefficient
+ # code to be generated. See pod
+ my $yes= $self->_render( $op->{yes}, $combine, 1, $opts_ref, $def, $submacros );
+ return $yes if $cond eq '1';
+
+ my $no= $self->_render( $op->{no}, $combine, 0, $opts_ref, $def, $submacros );
return "( $cond )" if $yes eq '1' and $no eq '0';
my ( $lb, $rb )= $brace ? ( "( ", " )" ) : ( "", "" );
return "$lb$cond ? $yes : $no$rb"
@@ -544,7 +1124,13 @@ sub _render {
$yes= " " . $yes;
}
- return "$lb$cond ?$yes$ind: $no$rb";
+ my $str= "$lb$cond ?$yes$ind: $no$rb";
+ if (length $str > 6000) {
+ push @$submacros, sprintf "#define $def\n( %s )", "_part" . (my $yes_idx= 0+@$submacros), $yes;
+ push @$submacros, sprintf "#define $def\n( %s )", "_part" . (my $no_idx= 0+@$submacros), $no;
+ return sprintf "%s%s ? $def : $def%s", $lb, $cond, "_part$yes_idx", "_part$no_idx", $rb;
+ }
+ return $str;
}
# $expr=render($op,$combine)
@@ -555,16 +1141,19 @@ sub _render {
# longer lists such as that resulting from type 'cp' output.
# Currently only used for type 'cp' macros.
sub render {
- my ( $self, $op, $combine )= @_;
- my $str= "( " . $self->_render( $op, $combine ) . " )";
- return __clean( $str );
+ my ( $self, $op, $combine, $opts_ref, $def_fmt )= @_;
+
+ my @submacros;
+ my $macro= sprintf "#define $def_fmt\n( %s )", "", $self->_render( $op, $combine, 0, $opts_ref, $def_fmt, \@submacros );
+
+ return join "\n\n", map { "/*** GENERATED CODE ***/\n" . __macro( __clean( $_ ) ) } @submacros, $macro;
}
# make_macro
# make a macro of a given type.
# calls into make_trie and (generic_|length_)optree as needed
# Opts are:
-# type : 'cp','generic','low','latin1','utf8','LATIN1','UTF8'
+# type : 'cp','cp_high', 'generic','high','low','latin1','utf8','LATIN1','UTF8'
# ret_type : 'cp' or 'len'
# safe : add length guards to macro
#
@@ -583,30 +1172,30 @@ sub make_macro {
my %opts= @_;
my $type= $opts{type} || 'generic';
die "Can't do a 'cp' on multi-codepoint character class '$self->{op}'"
- if $type eq 'cp'
+ if $type =~ /^cp/
and $self->{has_multi};
- my $ret_type= $opts{ret_type} || ( $opts{type} eq 'cp' ? 'cp' : 'len' );
+ my $ret_type= $opts{ret_type} || ( $opts{type} =~ /^cp/ ? 'cp' : 'len' );
my $method;
if ( $opts{safe} ) {
$method= 'length_optree';
- } elsif ( $type eq 'generic' ) {
+ } elsif ( $type =~ /generic/ ) {
$method= 'generic_optree';
} else {
$method= 'optree';
}
- my $optree= $self->$method( %opts, type => $type, ret_type => $ret_type );
- my $text= $self->render( $optree, $type eq 'cp' );
- my @args= $type eq 'cp' ? 'cp' : 's';
+ my @args= $type =~ /^cp/ ? 'cp' : 's';
push @args, "e" if $opts{safe};
- push @args, "is_utf8" if $type eq 'generic';
+ push @args, "is_utf8" if $type =~ /generic/;
push @args, "len" if $ret_type eq 'both';
my $pfx= $ret_type eq 'both' ? 'what_len_' :
$ret_type eq 'cp' ? 'what_' : 'is_';
- my $ext= $type eq 'generic' ? '' : '_' . lc( $type );
+ my $ext= $type =~ /generic/ ? '' : '_' . lc( $type );
+ $ext .= '_non_low' if $type eq 'generic_non_low';
$ext .= "_safe" if $opts{safe};
my $argstr= join ",", @args;
- return "/*** GENERATED CODE ***/\n"
- . __macro( "#define $pfx$self->{op}$ext($argstr)\n$text" );
+ my $def_fmt="$pfx$self->{op}$ext%s($argstr)";
+ my $optree= $self->$method( %opts, type => $type, ret_type => $ret_type );
+ return $self->render( $optree, ($type =~ /^cp/) ? 1 : 0, \%opts, $def_fmt );
}
# if we arent being used as a module (highly likely) then process
@@ -626,21 +1215,38 @@ if ( !caller ) {
print $out_fh read_only_top( lang => 'C', by => $0,
file => 'regcharclass.h', style => '*',
copyright => [2007, 2011] );
+ print $out_fh "\n#ifndef H_REGCHARCLASS /* Guard against nested #includes */\n#define H_REGCHARCLASS 1\n\n";
- my ( $op, $title, @txt, @types, @mods );
+ my ( $op, $title, @txt, @types, %mods );
my $doit= sub {
return unless $op;
+
+ # Skip if to compile on a different platform.
+ return if delete $mods{only_ascii_platform} && ! ASCII_PLATFORM;
+ return if delete $mods{only_ebcdic_platform} && ord 'A' != 193;
+
print $out_fh "/*\n\t$op: $title\n\n";
print $out_fh join "\n", ( map { "\t$_" } @txt ), "*/", "";
my $obj= __PACKAGE__->new( op => $op, title => $title, txt => \@txt );
- #die Dumper(\@types,\@mods);
+ #die Dumper(\@types,\%mods);
+
+ my @mods;
+ push @mods, 'safe' if delete $mods{safe};
+ unshift @mods, 'fast' if delete $mods{fast} || ! @mods; # Default to 'fast'
+ # do this one
+ # first, as
+ # traditional
+ if (%mods) {
+ die "Unknown modifiers: ", join ", ", map { "'$_'" } sort keys %mods;
+ }
foreach my $type_spec ( @types ) {
my ( $type, $ret )= split /-/, $type_spec;
$ret ||= 'len';
foreach my $mod ( @mods ) {
- next if $mod eq 'safe' and $type eq 'cp';
+ next if $mod eq 'safe' and $type =~ /^cp/;
+ delete $mods{$mod};
my $macro= $obj->make_macro(
type => $type,
ret_type => $ret,
@@ -652,22 +1258,26 @@ if ( !caller ) {
};
while ( <DATA> ) {
- s/^\s*#//;
+ s/^ \s* (?: \# .* ) ? $ //x; # squeeze out comment and blanks
next unless /\S/;
chomp;
- if ( /^([A-Z]+)/ ) {
- $doit->();
+ if ( /^[A-Z]/ ) {
+ $doit->(); # This starts a new definition; do the previous one
( $op, $title )= split /\s*:\s*/, $_, 2;
@txt= ();
} elsif ( s/^=>// ) {
my ( $type, $modifier )= split /:/, $_;
@types= split ' ', $type;
- @mods= split ' ', $modifier;
+ undef %mods;
+ map { $mods{$_} = 1 } split ' ', $modifier;
} else {
push @txt, "$_";
}
}
$doit->();
+
+ print $out_fh "\n#endif /* H_REGCHARCLASS */\n";
+
if($path eq '-') {
print $out_fh "/* ex: set ro: */\n";
} else {
@@ -675,65 +1285,217 @@ if ( !caller ) {
}
}
+# The form of the input is a series of definitions to make macros for.
+# The first line gives the base name of the macro, followed by a colon, and
+# then text to be used in comments associated with the macro that are its
+# title or description. In all cases the first (perhaps only) parameter to
+# the macro is a pointer to the first byte of the code point it is to test to
+# see if it is in the class determined by the macro. In the case of non-UTF8,
+# the code point consists only of a single byte.
+#
+# The second line must begin with a '=>' and be followed by the types of
+# macro(s) to be generated; these are specified below. A colon follows the
+# types, followed by the modifiers, also specified below. At least one
+# modifier is required.
+#
+# The subsequent lines give what code points go into the class defined by the
+# macro. Multiple characters may be specified via a string like "\x0D\x0A",
+# enclosed in quotes. Otherwise the lines consist of one of:
+# 1) a single Unicode code point, prefaced by 0x
+# 2) a single range of Unicode code points separated by a minus (and
+# optional space)
+# 3) a single Unicode property specified in the standard Perl form
+# "\p{...}"
+# 4) a line like 'do path'. This will do a 'do' on the file given by
+# 'path'. It is assumed that this does nothing but load subroutines
+# (See item 5 below). The reason 'require path' is not used instead is
+# because 'do' doesn't assume that path is in @INC.
+# 5) a subroutine call
+# &pkg::foo(arg1, ...)
+# where pkg::foo was loaded by a 'do' line (item 4). The subroutine
+# returns an array of entries of forms like items 1-3 above. This
+# allows more complex inputs than achievable from the other input types.
+#
+# A blank line or one whose first non-blank character is '#' is a comment.
+# The definition of the macro is terminated by a line unlike those described.
#
-# Valid types: generic, LATIN1, UTF8, low, latin1, utf8
-# default return value is octects read.
-# append -cp to make it codepoint matched.
-# modifiers come after the colon, valid possibilities
-# being 'fast' and 'safe'.
+# Valid types:
+# low generate a macro whose name is 'is_BASE_low' and defines a
+# class that includes only ASCII-range chars. (BASE is the
+# input macro base name.)
+# latin1 generate a macro whose name is 'is_BASE_latin1' and defines a
+# class that includes only upper-Latin1-range chars. It is not
+# designed to take a UTF-8 input parameter.
+# high generate a macro whose name is 'is_BASE_high' and defines a
+# class that includes all relevant code points that are above
+# the Latin1 range. This is for very specialized uses only.
+# It is designed to take only an input UTF-8 parameter.
+# utf8 generate a macro whose name is 'is_BASE_utf8' and defines a
+# class that includes all relevant characters that aren't ASCII.
+# It is designed to take only an input UTF-8 parameter.
+# LATIN1 generate a macro whose name is 'is_BASE_latin1' and defines a
+# class that includes both ASCII and upper-Latin1-range chars.
+# It is not designed to take a UTF-8 input parameter.
+# UTF8 generate a macro whose name is 'is_BASE_utf8' and defines a
+# class that can include any code point, adding the 'low' ones
+# to what 'utf8' works on. It is designed to take only an input
+# UTF-8 parameter.
+# generic generate a macro whose name is 'is_BASE". It has a 2nd,
+# boolean, parameter which indicates if the first one points to
+# a UTF-8 string or not. Thus it works in all circumstances.
+# generic_non_low generate a macro whose name is 'is_BASE_non_low". It has
+# a 2nd, boolean, parameter which indicates if the first one
+# points to a UTF-8 string or not. It excludes any ASCII-range
+# matches, but otherwise it works in all circumstances.
+# cp generate a macro whose name is 'is_BASE_cp' and defines a
+# class that returns true if the UV parameter is a member of the
+# class; false if not.
+# cp_high like cp, but it is assumed that it is known that the UV
+# parameter is above Latin1. The name of the generated macro is
+# 'is_BASE_cp_high'. This is different from high-cp, derived
+# below.
+# A macro of the given type is generated for each type listed in the input.
+# The default return value is the number of octets read to generate the match.
+# Append "-cp" to the type to have it instead return the matched codepoint.
+# The macro name is changed to 'what_BASE...'. See pod for
+# caveats
+# Appending '-both" instead adds an extra parameter to the end of the argument
+# list, which is a pointer as to where to store the number of
+# bytes matched, while also returning the code point. The macro
+# name is changed to 'what_len_BASE...'. See pod for caveats
#
+# Valid modifiers:
+# safe The input string is not necessarily valid UTF-8. In
+# particular an extra parameter (always the 2nd) to the macro is
+# required, which points to one beyond the end of the string.
+# The macro will make sure not to read off the end of the
+# string. In the case of non-UTF8, it makes sure that the
+# string has at least one byte in it. The macro name has
+# '_safe' appended to it.
+# fast The input string is valid UTF-8. No bounds checking is done,
+# and the macro can make assumptions that lead to faster
+# execution.
+# only_ascii_platform Skip this definition if this program is being run on
+# a non-ASCII platform.
+# only_ebcdic_platform Skip this definition if this program is being run on
+# a non-EBCDIC platform.
+# No modifier need be specified; fast is assumed for this case. If both
+# 'fast', and 'safe' are specified, two macros will be created for each
+# 'type'.
+#
+# If run on a non-ASCII platform will automatically convert the Unicode input
+# to native. The documentation above is slightly wrong in this case. 'low'
+# actually refers to code points whose UTF-8 representation is the same as the
+# non-UTF-8 version (invariants); and 'latin1' refers to all the rest of the
+# code points less than 256.
+
1; # in the unlikely case we are being used as a module
__DATA__
+# This is no longer used, but retained in case it is needed some day.
+# TRICKYFOLD: Problematic fold case letters. When adding to this list, also should add them to regcomp.c and fold_grind.t
+# => generic cp generic-cp generic-both :fast safe
+# 0x00DF # LATIN SMALL LETTER SHARP S
+# 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+# 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+# 0x1E9E # LATIN CAPITAL LETTER SHARP S, because maps to same as 00DF
+# 0x1FD3 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA; maps same as 0390
+# 0x1FE3 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA; maps same as 03B0
+
LNBREAK: Line Break: \R
=> generic UTF8 LATIN1 :fast safe
"\x0D\x0A" # CRLF - Network (Windows) line ending
-0x0A # LF | LINE FEED
-0x0B # VT | VERTICAL TAB
-0x0C # FF | FORM FEED
-0x0D # CR | CARRIAGE RETURN
-0x85 # NEL | NEXT LINE
-0x2028 # LINE SEPARATOR
-0x2029 # PARAGRAPH SEPARATOR
+\p{VertSpace}
HORIZWS: Horizontal Whitespace: \h \H
-=> generic UTF8 LATIN1 cp :fast safe
-0x09 # HT
-0x20 # SPACE
-0xa0 # NBSP
-0x1680 # OGHAM SPACE MARK
-0x180e # MONGOLIAN VOWEL SEPARATOR
-0x2000 # EN QUAD
-0x2001 # EM QUAD
-0x2002 # EN SPACE
-0x2003 # EM SPACE
-0x2004 # THREE-PER-EM SPACE
-0x2005 # FOUR-PER-EM SPACE
-0x2006 # SIX-PER-EM SPACE
-0x2007 # FIGURE SPACE
-0x2008 # PUNCTUATION SPACE
-0x2009 # THIN SPACE
-0x200A # HAIR SPACE
-0x202f # NARROW NO-BREAK SPACE
-0x205f # MEDIUM MATHEMATICAL SPACE
-0x3000 # IDEOGRAPHIC SPACE
+=> generic UTF8 LATIN1 high cp cp_high :fast safe
+\p{HorizSpace}
VERTWS: Vertical Whitespace: \v \V
-=> generic UTF8 LATIN1 cp :fast safe
-0x0A # LF
-0x0B # VT
-0x0C # FF
-0x0D # CR
-0x85 # NEL
-0x2028 # LINE SEPARATOR
-0x2029 # PARAGRAPH SEPARATOR
-
-
-TRICKYFOLD: Problematic fold case letters. When adding to this list, also should add them to regcomp.c and fold_grind.t
-=> generic cp generic-cp generic-both :fast safe
-0x00DF # LATIN SMALL LETTER SHARP S
-0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-0x1E9E # LATIN CAPITAL LETTER SHARP S, because maps to same as 00DF
-0x1FD3 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA; maps same as 0390
-0x1FE3 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA; maps same as 03B0
+=> generic UTF8 high LATIN1 cp cp_high :fast safe
+\p{VertSpace}
+
+XDIGIT: Hexadecimal digits
+=> UTF8 high cp_high :fast
+\p{XDigit}
+
+XPERLSPACE: \p{XPerlSpace}
+=> generic UTF8 high cp_high :fast
+\p{XPerlSpace}
+
+REPLACEMENT: Unicode REPLACEMENT CHARACTER
+=> UTF8 :safe
+0xFFFD
+
+NONCHAR: Non character code points
+=> UTF8 :fast
+\p{Nchar}
+
+SURROGATE: Surrogate characters
+=> UTF8 :fast
+\p{Gc=Cs}
+
+GCB_L: Grapheme_Cluster_Break=L
+=> UTF8 :fast
+\p{_X_GCB_L}
+
+GCB_LV_LVT_V: Grapheme_Cluster_Break=(LV or LVT or V)
+=> UTF8 :fast
+\p{_X_LV_LVT_V}
+
+GCB_Prepend: Grapheme_Cluster_Break=Prepend
+=> UTF8 :fast
+\p{_X_GCB_Prepend}
+
+GCB_RI: Grapheme_Cluster_Break=RI
+=> UTF8 :fast
+\p{_X_RI}
+
+GCB_SPECIAL_BEGIN_START: Grapheme_Cluster_Break=special_begin_starts
+=> UTF8 :fast
+\p{_X_Special_Begin_Start}
+
+GCB_T: Grapheme_Cluster_Break=T
+=> UTF8 :fast
+\p{_X_GCB_T}
+
+GCB_V: Grapheme_Cluster_Break=V
+=> UTF8 :fast
+\p{_X_GCB_V}
+
+# This program was run with this enabled, and the results copied to utf8.h;
+# then this was commented out because it takes so long to figure out these 2
+# million code points. The results would not change unless utf8.h decides it
+# wants a maximum other than 4 bytes, or this program creates better
+# optimizations
+#UTF8_CHAR: Matches utf8 from 1 to 4 bytes
+#=> UTF8 :safe only_ascii_platform
+#0x0 - 0x1FFFFF
+
+# This hasn't been commented out, because we haven't an EBCDIC platform to run
+# it on, and the 3 types of EBCDIC allegedly supported by Perl would have
+# different results
+UTF8_CHAR: Matches utf8 from 1 to 5 bytes
+=> UTF8 :safe only_ebcdic_platform
+0x0 - 0x3FFFFF:
+
+QUOTEMETA: Meta-characters that \Q should quote
+=> high :fast
+\p{_Perl_Quotemeta}
+
+MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
+=> UTF8 :safe
+do regen/regcharclass_multi_char_folds.pl
+
+# 1 => All folds
+&regcharclass_multi_char_folds::multi_char_folds(1)
+
+MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
+=> LATIN1 :safe
+
+&regcharclass_multi_char_folds::multi_char_folds(0)
+# 0 => Latin1-only
+
+PATWS: pattern white space
+=> generic generic_non_low cp : fast safe
+\p{PatWS}
diff --git a/gnu/usr.bin/perl/regen/regcharclass_multi_char_folds.pl b/gnu/usr.bin/perl/regen/regcharclass_multi_char_folds.pl
new file mode 100644
index 00000000000..f0fd6b3a892
--- /dev/null
+++ b/gnu/usr.bin/perl/regen/regcharclass_multi_char_folds.pl
@@ -0,0 +1,110 @@
+package regcharclass_multi_char_folds;
+use 5.015;
+use strict;
+use warnings;
+use Unicode::UCD "prop_invmap";
+
+# This returns an array of strings of the form
+# "\x{foo}\x{bar}\x{baz}"
+# of the sequences of code points that are multi-character folds in the
+# current Unicode version. If the parameter is 1, all such folds are
+# returned. If the parameters is 0, only the ones containing exclusively
+# Latin1 characters are returned. In the latter case all combinations of
+# Latin1 characters that can fold to the base one are returned. Thus for
+# 'ss', it would return in addition, 'Ss', 'sS', and 'SS'. This is because
+# this code is designed to help regcomp.c, and EXACTFish regnodes. For
+# non-UTF-8 patterns, the strings are not folded, so we need to check for the
+# upper and lower case versions. For UTF-8 patterns, the strings are folded,
+# so we only need to worry about the fold version. There are no non-ASCII
+# Latin1 multi-char folds currently, and none likely to be ever added. Thus
+# the output is the same as if it were just asking for ASCII characters, not
+# full Latin1. Hence, it is suitable for generating things that match
+# EXACTFA. It does check for and croak if there ever were to be an upper
+# Latin1 range multi-character fold.
+#
+# This is designed for input to regen/regcharlass.pl.
+
+sub gen_combinations ($;) {
+ # Generate all combinations for the first parameter which is an array of
+ # arrays.
+
+ my ($fold_ref, $string, $i) = @_;
+ $string = "" unless $string;
+ $i = 0 unless $i;
+
+ my @ret;
+
+ # Look at each element in this level's array.
+ foreach my $j (0 .. @{$fold_ref->[$i]} - 1) {
+
+ # Append its representation to what we have currently
+ my $new_string = sprintf "$string\\x{%X}", $fold_ref->[$i][$j];
+
+ if ($i >= @$fold_ref - 1) { # Final level: just return it
+ push @ret, "\"$new_string\"";
+ }
+ else { # Generate the combinations for the next level with this one's
+ push @ret, &gen_combinations($fold_ref, $new_string, $i + 1);
+ }
+ }
+
+ return @ret;
+}
+
+sub multi_char_folds ($) {
+ my $all_folds = shift; # The single parameter is true if wants all
+ # multi-char folds; false if just the ones that
+ # are all ascii
+
+ my ($cp_ref, $folds_ref, $format) = prop_invmap("Case_Folding");
+ die "Could not find inversion map for Case_Folding" unless defined $format;
+ die "Incorrect format '$format' for Case_Folding inversion map"
+ unless $format eq 'al';
+ my @folds;
+
+ for my $i (0 .. @$folds_ref - 1) {
+ next unless ref $folds_ref->[$i]; # Skip single-char folds
+
+ # The code in regcomp.c currently assumes that no multi-char fold
+ # folds to the upper Latin1 range. It's not a big deal to add; we
+ # just have to forbid such a fold in EXACTFL nodes, like we do already
+ # for ascii chars in EXACTFA (and EXACTFL) nodes. But I (khw) doubt
+ # that there will ever be such a fold created by Unicode, so the code
+ # isn't there to occupy space and time; instead there is this check.
+ die sprintf("regcomp.c can't cope with a latin1 multi-char fold (found in the fold of U+%X", $cp_ref->[$i]) if grep { $_ < 256 && chr($_) !~ /[[:ascii:]]/ } @{$folds_ref->[$i]};
+
+ # Create a line that looks like "\x{foo}\x{bar}\x{baz}" of the code
+ # points that make up the fold.
+ my $fold = join "", map { sprintf "\\x{%X}", $_ } @{$folds_ref->[$i]};
+ $fold = "\"$fold\"";
+
+ # Skip if something else already has this fold
+ next if grep { $_ eq $fold } @folds;
+
+ if ($all_folds) {
+ push @folds, $fold
+ } # Skip if wants only all-ascii folds, and there is a non-ascii
+ elsif (! grep { chr($_) =~ /[^[:ascii:]]/ } @{$folds_ref->[$i]}) {
+
+ # If the fold is to a cased letter, replace the entry with an
+ # array which also includes its upper case.
+ my $this_fold_ref = $folds_ref->[$i];
+ for my $j (0 .. @$this_fold_ref - 1) {
+ my $this_ord = $this_fold_ref->[$j];
+ if (chr($this_ord) =~ /\p{Cased}/) {
+ my $uc = ord(uc(chr($this_ord)));
+ undef $this_fold_ref->[$j];
+ @{$this_fold_ref->[$j]} = ( $this_ord, $uc);
+ }
+ }
+
+ # Then generate all combinations of upper/lower case of the fold.
+ push @folds, gen_combinations($this_fold_ref);
+
+ }
+ }
+
+ return @folds;
+}
+
+1
diff --git a/gnu/usr.bin/perl/regen/regcomp.pl b/gnu/usr.bin/perl/regen/regcomp.pl
index 69643ca5b83..97719b00ec4 100644
--- a/gnu/usr.bin/perl/regen/regcomp.pl
+++ b/gnu/usr.bin/perl/regen/regcomp.pl
@@ -2,6 +2,7 @@
#
# Regenerate (overwriting only if changed):
#
+# pod/perldebguts.pod
# regnodes.h
#
# from information stored in
@@ -9,6 +10,9 @@
# regcomp.sym
# regexp.h
#
+# pod/perldebguts.pod is not completely regenerated. Only the table of
+# regexp nodes is replaced; other parts remain unchanged.
+#
# Accepts the standard regen_lib -q and -v args.
#
# This script is normally invoked from regen.pl.
@@ -22,11 +26,15 @@ use strict;
open DESC, 'regcomp.sym';
my $ind = 0;
-my (@name,@rest,@type,@code,@args,@flags,@longj);
-my ($desc,$lastregop);
+my (@name,@rest,@type,@code,@args,@flags,@longj,@cmnt);
+my ($longest_name_length,$desc,$lastregop) = 0;
while (<DESC>) {
- s/#.*$//;
- next if /^\s*$/;
+ # Special pod comments
+ if (/^#\* ?/) { $cmnt[$ind] .= "# $'"; }
+ # Truly blank lines possibly surrounding pod comments
+ elsif (/^\s*$/) { $cmnt[$ind] .= "\n" }
+
+ next if /^(?:#|\s*$)/;
chomp; # No \z in 5.004
s/\s*$//;
if (/^-+\s*$/) {
@@ -34,9 +42,11 @@ while (<DESC>) {
next;
}
unless ($lastregop) {
- ($name[$ind], $desc, $rest[$ind]) = /^(\S+)\s+([^\t]+)\s*;\s*(.*)/;
+ ($name[$ind], $desc, $rest[$ind]) = /^(\S+)\s+([^\t]+?)\s*;\s*(.*)/;
($type[$ind], $code[$ind], $args[$ind], $flags[$ind], $longj[$ind])
= split /[,\s]\s*/, $desc;
+ $longest_name_length = length $name[$ind]
+ if length $name[$ind] > $longest_name_length;
++$ind;
} else {
my ($type,@lists)=split /\s+/, $_;
@@ -253,10 +263,11 @@ foreach my $file ("op_reg_common.h", "regexp.h") {
# optional leading '_'. Return symbol in $1, and strip it from
# rest of line
- if (s/ \#define \s+ ( _? RXf_ \w+ ) \s+ //xi) {
+ if (s/ \# \s* define \s+ ( _? RXf_ \w+ ) \s+ //xi) {
chomp;
my $define = $1;
- s: / \s* \* .*? \* \s* / : :x; # Replace comments by a blank
+ my $orig= $_;
+ s{ /\* .*? \*/ }{ }x; # Replace comments by a blank
# Replace any prior defined symbols by their values
foreach my $key (keys %definitions) {
@@ -272,7 +283,12 @@ foreach my $file ("op_reg_common.h", "regexp.h") {
next unless $_ =~ /<</; # Bit defines use left shift
if($val & $newval) {
- die sprintf "Both $define and $reverse{$newval} use %08X", $newval;
+ my @names=($define, $reverse{$newval});
+ s/PMf_// for @names;
+ if ($names[0] ne $names[1]) {
+ die sprintf "ERROR: both $define and $reverse{$newval} use 0x%08X (%s:%s)", $newval, $orig, $_;
+ }
+ next;
}
$val|=$newval;
$rxfv{$define}= $newval;
@@ -282,9 +298,11 @@ foreach my $file ("op_reg_common.h", "regexp.h") {
}
my %vrxf=reverse %rxfv;
printf $out "\t/* Bits in extflags defined: %s */\n", unpack 'B*', pack 'N', $val;
+my %multibits;
for (0..31) {
my $power_of_2 = 2**$_;
my $n=$vrxf{$power_of_2};
+ my $extra = "";
if (! $n) {
# Here, there was no name that matched exactly the bit. It could be
@@ -299,16 +317,17 @@ for (0..31) {
# that name, and all the bits it matches
foreach my $name (keys %rxfv) {
if ($rxfv{$name} & $power_of_2) {
- $n = $name;
- $power_of_2 = $rxfv{$name};
+ $n = $name . ( $multibits{$name}++ );
+ $extra= sprintf qq{ : "%s" - 0x%08x}, $name, $rxfv{$name}
+ if $power_of_2 != $rxfv{$name};
last;
}
}
}
}
- $n=~s/^RXf_(PMf_)?//;
- printf $out qq(\t%-20s/* 0x%08x */\n),
- qq("$n",),$power_of_2;
+ s/\bRXf_(PMf_)?// for $n, $extra;
+ printf $out qq(\t%-20s/* 0x%08x%s */\n),
+ qq("$n",),$power_of_2, $extra;
}
print $out <<EOP;
@@ -328,3 +347,51 @@ print $out process_flags('S', 'simple', <<'EOC');
EOC
read_only_bottom_close_and_rename($out);
+
+my $guts = open_new('pod/perldebguts.pod', '>');
+
+my $code;
+my $name_fmt = '<' x ($longest_name_length-1);
+my $descr_fmt = '<' x (58-$longest_name_length);
+eval <<EOD;
+format GuTS =
+ ^*~~
+ \$cmnt[\$_]
+ ^$name_fmt ^<<<<<<<<< ^$descr_fmt~~
+ \$name[\$_], \$code, \$rest[\$_]
+.
+EOD
+
+select +(select($guts), do {
+ $~ = "GuTS";
+
+ open my $oldguts, "pod/perldebguts.pod"
+ or die "$0 cannot open pod/perldebguts.pod for reading: $!";
+ while(<$oldguts>) {
+ print;
+ last if /=for regcomp.pl begin/;
+ }
+
+ print <<'end';
+
+ # TYPE arg-description [num-args] [longjump-len] DESCRIPTION
+end
+ for (0..$lastregop-1) {
+ $code = "$code[$_] ".($args[$_]||"");
+ $code .= " $longj[$_]" if $longj[$_];
+ if ($cmnt[$_] ||= "") {
+ # Trim multiple blanks
+ $cmnt[$_] =~ s/^\n\n+/\n/; $cmnt[$_] =~ s/\n\n+$/\n\n/
+ }
+ write;
+ }
+ print "\n";
+
+ while(<$oldguts>) {
+ last if /=for regcomp.pl end/;
+ }
+ do { print } while <$oldguts>;
+
+})[0];
+
+close_and_rename($guts);
diff --git a/gnu/usr.bin/perl/regen/unicode_constants.pl b/gnu/usr.bin/perl/regen/unicode_constants.pl
new file mode 100644
index 00000000000..1977fbdfc55
--- /dev/null
+++ b/gnu/usr.bin/perl/regen/unicode_constants.pl
@@ -0,0 +1,160 @@
+use v5.16.0;
+use strict;
+use warnings;
+require 'regen/regen_lib.pl';
+use charnames qw(:loose);
+
+my $out_fh = open_new('unicode_constants.h', '>',
+ {style => '*', by => $0,
+ from => "Unicode data"});
+
+print $out_fh <<END;
+
+#ifndef H_UNICODE_CONSTANTS /* Guard against nested #includes */
+#define H_UNICODE_CONSTANTS 1
+
+/* This file contains #defines for various Unicode code points. The values
+ * the macros expand to are the native Unicode code point, or all or portions
+ * of the UTF-8 encoding for the code point. In the former case, the macro
+ * name has the suffix "_NATIVE"; otherwise, the suffix "_UTF8".
+ *
+ * The macros that have the suffix "_UTF8" may have further suffixes, as
+ * follows:
+ * "_FIRST_BYTE" if the value is just the first byte of the UTF-8
+ * representation; the value will be a numeric constant.
+ * "_TAIL" if instead it represents all but the first byte. This, and
+ * with no additional suffix are both string constants */
+
+END
+
+# The data are at the end of this file. A blank line is output as-is.
+# Comments (lines whose first non-blank is a '#') are converted to C-style,
+# though empty comments are converted to blank lines. Otherwise, each line
+# represents one #define, and begins with either a Unicode character name with
+# the blanks and dashes in it squeezed out or replaced by underscores; or it
+# may be a hexadecimal Unicode code point of the form U+xxxx. In the latter
+# case, the name will be looked-up to use as the name of the macro. In either
+# case, the macro name will have suffixes as listed above, and all blanks and
+# dashes will be replaced by underscores.
+#
+# Each line may optionally have one of the following flags on it, separated by
+# white space from the initial token.
+# string indicates that the output is to be of the string form
+# described in the comments above that are placed in the file.
+# string_skip_ifundef is the same as 'string', but instead of dying if the
+# code point doesn't exist, the line is just skipped: no output is
+# generated for it
+# first indicates that the output is to be of the FIRST_BYTE form.
+# tail indicates that the output is of the _TAIL form.
+# native indicates that the output is the code point, converted to the
+# platform's native character set if applicable
+#
+# If the code point has no official name, the desired name may be appended
+# after the flag, which will be ignored if there is an official name.
+#
+# This program is used to make it convenient to create compile time constants
+# of UTF-8, and to generate proper EBCDIC as well as ASCII without manually
+# having to figure things out.
+
+while ( <DATA> ) {
+ chomp;
+
+ # Convert any '#' comments to /* ... */; empty lines and comments are
+ # output as blank lines
+ if ($_ =~ m/ ^ \s* (?: \# ( .* ) )? $ /x) {
+ my $comment_body = $1 // "";
+ if ($comment_body ne "") {
+ print $out_fh "/* $comment_body */\n";
+ }
+ else {
+ print $out_fh "\n";
+ }
+ next;
+ }
+
+ unless ($_ =~ m/ ^ ( [^\ ]* ) # Name or code point token
+ (?: [\ ]+ ( [^ ]* ) )? # optional flag
+ (?: [\ ]+ ( .* ) )? # name if unnamed; flag is required
+ /x)
+ {
+ die "Unexpected syntax at line $.: $_\n";
+ }
+
+ my $name_or_cp = $1;
+ my $flag = $2;
+ my $desired_name = $3;
+
+ my $name;
+ my $cp;
+ my $U_cp; # code point in Unicode (not-native) terms
+ my $undef_ok = $desired_name || $flag =~ /skip_if_undef/;
+
+ if ($name_or_cp =~ /^U\+(.*)/) {
+ $U_cp = hex $1;
+ $name = charnames::viacode($name_or_cp);
+ if (! defined $name) {
+ die "Unknown code point '$name_or_cp' at line $.: $_\n" unless $undef_ok;
+ $name = "";
+ }
+ $cp = utf8::unicode_to_native($U_cp);
+ }
+ else {
+ $name = $name_or_cp;
+ $cp = charnames::vianame($name =~ s/_/ /gr);
+ $U_cp = utf8::native_to_unicode($cp);
+ die "Unknown name '$name' at line $.: $_\n" unless defined $name;
+ }
+
+ $name = $desired_name if $name eq "" && $desired_name;
+ $name =~ s/[- ]/_/g; # The macro name can have no blanks nor dashes
+
+ my $str = join "", map { sprintf "\\x%02X", $_ }
+ unpack("U0C*", pack("U", $cp));
+
+ my $suffix = '_UTF8';
+ if (! defined $flag || $flag =~ /^ string (_skip_if_undef)? $/x) {
+ $str = "\"$str\""; # Will be a string constant
+ } elsif ($flag eq 'tail') {
+ $str =~ s/\\x..//; # Remove the first byte
+ $suffix .= '_TAIL';
+ $str = "\"$str\""; # Will be a string constant
+ }
+ elsif ($flag eq 'first') {
+ $str =~ s/ \\x ( .. ) .* /$1/x; # Get the two nibbles of the 1st byte
+ $suffix .= '_FIRST_BYTE';
+ $str = "0x$str"; # Is a numeric constant
+ }
+ elsif ($flag eq 'native') {
+ die "Are you sure you want to run this on an above-Latin1 code point?" if $cp > 0xff;
+ $suffix = '_NATIVE';
+ $str = sprintf "0x%02X", $cp; # Is a numeric constant
+ }
+ else {
+ die "Unknown flag at line $.: $_\n";
+ }
+ printf $out_fh "#define %s%s %s /* U+%04X */\n", $name, $suffix, $str, $U_cp;
+}
+
+print $out_fh "\n#endif /* H_UNICODE_CONSTANTS */\n";
+
+read_only_bottom_close_and_rename($out_fh);
+
+__DATA__
+
+U+0300 string
+U+0301 string
+U+0308 string
+
+U+03B9 string
+
+U+03C5 string
+
+U+2010 string
+U+D800 first FIRST_SURROGATE
+
+DEL native
+U+00DF native
+U+00E5 native
+U+00C5 native
+U+00FF native
+U+00B5 native
diff --git a/gnu/usr.bin/perl/regen/warnings.pl b/gnu/usr.bin/perl/regen/warnings.pl
index d990a6c8a56..dd3c49b79b1 100644
--- a/gnu/usr.bin/perl/regen/warnings.pl
+++ b/gnu/usr.bin/perl/regen/warnings.pl
@@ -53,11 +53,11 @@ my $tree = {
}],
'severe' => [ 5.008, {
'inplace' => [ 5.008, DEFAULT_ON],
- 'internal' => [ 5.008, DEFAULT_ON],
+ 'internal' => [ 5.008, DEFAULT_OFF],
'debugging' => [ 5.008, DEFAULT_ON],
'malloc' => [ 5.008, DEFAULT_ON],
}],
- 'deprecated' => [ 5.008, DEFAULT_OFF],
+ 'deprecated' => [ 5.008, DEFAULT_ON],
'void' => [ 5.008, DEFAULT_OFF],
'recursion' => [ 5.008, DEFAULT_OFF],
'redefine' => [ 5.008, DEFAULT_OFF],
@@ -66,7 +66,7 @@ my $tree = {
'once' => [ 5.008, DEFAULT_OFF],
'misc' => [ 5.008, DEFAULT_OFF],
'regexp' => [ 5.008, DEFAULT_OFF],
- 'glob' => [ 5.008, DEFAULT_OFF],
+ 'glob' => [ 5.008, DEFAULT_ON],
'untie' => [ 5.008, DEFAULT_OFF],
'substr' => [ 5.008, DEFAULT_OFF],
'taint' => [ 5.008, DEFAULT_OFF],
@@ -84,11 +84,22 @@ my $tree = {
'unpack' => [ 5.008, DEFAULT_OFF],
'threads' => [ 5.008, DEFAULT_OFF],
'imprecision' => [ 5.011, DEFAULT_OFF],
+ 'experimental' => [ 5.017, {
+ 'experimental::lexical_subs' =>
+ [ 5.017, DEFAULT_ON ],
+ 'experimental::regex_sets' =>
+ [ 5.017, DEFAULT_ON ],
+ 'experimental::lexical_topic' =>
+ [ 5.017, DEFAULT_ON ],
+ 'experimental::smartmatch' =>
+ [ 5.017, DEFAULT_ON ],
+ }],
#'default' => [ 5.008, DEFAULT_ON ],
}],
} ;
+my @def ;
my %list ;
my %Value ;
my %ValueToName ;
@@ -151,6 +162,8 @@ sub walk
my ($ver, $rest) = @{ $v } ;
if (ref $rest)
{ push (@{ $list{$k} }, walk ($rest)) }
+ elsif ($rest == DEFAULT_ON)
+ { push @def, $NameToValue{uc $k} }
push @list, @{ $list{$k} } ;
}
@@ -310,7 +323,8 @@ foreach $k (sort { $a <=> $b } keys %ValueToName) {
my ($name, $version) = @{ $ValueToName{$k} };
print $warn "\n/* Warnings Categories added in Perl $version */\n\n"
if $last_ver != $version ;
- print $warn tab(5, "#define WARN_$name"), "$k\n" ;
+ $name =~ y/:/_/;
+ print $warn tab(5, "#define WARN_$name"), " $k\n" ;
$last_ver = $version ;
}
print $warn "\n" ;
@@ -416,6 +430,8 @@ foreach $k (sort keys %list) {
print $pm " );\n\n" ;
print $pm '$NONE = "', ('\0' x $warn_size) , "\";\n" ;
+print $pm '$DEFAULT = "', mkHex($warn_size, map $_ * 2, @def),
+ '", # [', mkRange(@def), "]\n" ;
print $pm '$LAST_BIT = ' . "$index ;\n" ;
print $pm '$BYTES = ' . "$warn_size ;\n" ;
while (<DATA>) {
@@ -427,7 +443,7 @@ read_only_bottom_close_and_rename($pm);
__END__
package warnings;
-our $VERSION = '1.13';
+our $VERSION = '1.18';
# Verify that we're called correctly so that warnings will work.
# see also strict.pm.
@@ -636,7 +652,7 @@ sub import
{
shift;
- my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $NONE) ;
+ my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ;
if (vec($mask, $Offsets{'all'}, 1)) {
$mask |= $Bits{'all'} ;
@@ -652,7 +668,7 @@ sub unimport
shift;
my $catmask ;
- my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $NONE) ;
+ my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ;
if (vec($mask, $Offsets{'all'}, 1)) {
$mask |= $Bits{'all'} ;
@@ -731,8 +747,11 @@ sub __chk
$i = _error_loc(); # see where Carp will allocate the error
}
- # Defaulting this to 0 reduces complexity in code paths below.
- my $callers_bitmask = (caller($i))[9] || 0 ;
+ # Default to 0 if caller returns nothing. Default to $DEFAULT if it
+ # explicitly returns undef.
+ my(@callers_bitmask) = (caller($i))[9] ;
+ my $callers_bitmask =
+ @callers_bitmask ? $callers_bitmask[0] // $DEFAULT : 0 ;
my @results;
foreach my $type (FATAL, NORMAL) {
@@ -810,6 +829,6 @@ sub warnif
# These are not part of any public interface, so we can delete them to save
# space.
-delete $warnings::{$_} foreach qw(NORMAL FATAL MESSAGE);
+delete @warnings::{qw(NORMAL FATAL MESSAGE)};
1;
diff --git a/gnu/usr.bin/perl/regen_perly.pl b/gnu/usr.bin/perl/regen_perly.pl
index 510cb3b07e7..b96275639c5 100755
--- a/gnu/usr.bin/perl/regen_perly.pl
+++ b/gnu/usr.bin/perl/regen_perly.pl
@@ -73,16 +73,21 @@ unless ($version) { die <<EOF; }
Could not find a version of bison in your path. Please install bison.
EOF
-unless ($version =~ /\b(1\.875[a-z]?|2\.[0134])\b/) { die <<EOF; }
+# Don't change this to add new bison versions without testing that the generated
+# files actually work :-) Win32 in particular may not like them. :-(
+unless ($version =~ /\b(1\.875[a-z]?|2\.[0134567])\b/) { die <<EOF; }
You have the wrong version of bison in your path; currently 1.875
-2.0, 2.1, 2.3 or 2.4 is required. Try installing
- http://ftp.gnu.org/gnu/bison/bison-2.4.1.tar.gz
+2.0, 2.1, 2.3, 2.4, 2.5, 2.6 or 2.7 is required. Try installing
+ http://ftp.gnu.org/gnu/bison/bison-2.5.1.tar.gz
or similar. Your bison identifies itself as:
$version
EOF
+# bison's version number, not the entire string, is most useful later on.
+$version = $1;
+
# creates $tmpc_file and $tmph_file
my_system("$bison -d -o $tmpc_file $y_file");
@@ -95,6 +100,7 @@ close $ctmp_fh;
my ($actlines, $tablines) = extract($clines);
+our %tokens;
$tablines .= make_type_tab($y_file, $tablines);
my ($act_fh, $tab_fh, $h_fh) = map {
@@ -114,13 +120,33 @@ unlink $tmpc_file;
open my $tmph_fh, '<', $tmph_file or die "Can't open $tmph_file: $!\n";
my $endcore_done = 0;
-# Token macros need to be generated manually on bison 2.4
-my $gather_tokens = ($version =~ /\b2\.4\b/ ? undef : 0);
+# Token macros need to be generated manually from bison 2.4 on
+my $gather_tokens = $version >= 2.4 ? undef : 0;
my $tokens;
while (<$tmph_fh>) {
+ # bison 2.6 adds header guards, which break things because of where we
+ # insert #ifdef PERL_CORE, so strip them because they aren't important
+ next if /YY_PERLYTMP_H/;
+
print $h_fh "#ifdef PERL_CORE\n" if $. == 1;
if (!$endcore_done and /YYSTYPE_IS_DECLARED/) {
- print $h_fh "#endif /* PERL_CORE */\n";
+ print $h_fh <<h;
+#ifdef PERL_IN_TOKE_C
+static bool
+S_is_opval_token(int type) {
+ switch (type) {
+h
+ print $h_fh <<i for sort grep $tokens{$_} eq 'opval', keys %tokens;
+ case $_:
+i
+ print $h_fh <<j;
+ return 1;
+ }
+ return 0;
+}
+#endif /* PERL_IN_TOKE_C */
+#endif /* PERL_CORE */
+j
$endcore_done = 1;
}
next if /^#line \d+ ".*"/;
@@ -240,6 +266,7 @@ sub extract {
sub make_type_tab {
my ($y_file, $tablines) = @_;
+ my %just_tokens;
my %tokens;
my %types;
my $default_token;
@@ -259,16 +286,22 @@ sub make_type_tab {
}
next unless /^%(token|type)/;
- s/^%(token|type)\s+<(\w+)>\s+//
+ s/^%((token)|type)\s+<(\w+)>\s+//
or die "$y_file: unparseable token/type line: $_";
- $tokens{$_} = $2 for (split ' ', $_);
- $types{$2} = 1;
+ for (split ' ', $_) {
+ $tokens{$_} = $3;
+ if ($2) {
+ $just_tokens{$_} = $3;
+ }
+ }
+ $types{$3} = 1;
}
+ *tokens = \%just_tokens; # perly.h needs this
die "$y_file: no __DEFAULT__ token defined\n" unless $default_token;
$types{$default_token} = 1;
$tablines =~ /^\Qstatic const char *const yytname[] =\E\n
- {\n
+ \{\n
(.*?)
^};
/xsm
@@ -278,7 +311,7 @@ sub make_type_tab {
{ "toketype_" .
(defined $tokens{$1} ? $tokens{$1} : $default_token)
}ge;
- $fields =~ s/, \s* 0 \s* $//x
+ $fields =~ s/, \s* (?:0|YY_NULL) \s* $//x
or die "make_type_tab: couldn't delete trailing ',0'\n";
return
diff --git a/gnu/usr.bin/perl/regnodes.h b/gnu/usr.bin/perl/regnodes.h
index 14bac24cb24..0caf86dd556 100644
--- a/gnu/usr.bin/perl/regnodes.h
+++ b/gnu/usr.bin/perl/regnodes.h
@@ -6,8 +6,8 @@
/* Regops and State definitions */
-#define REGNODE_MAX 112
-#define REGMATCH_STATE_MAX 152
+#define REGNODE_MAX 95
+#define REGMATCH_STATE_MAX 135
#define END 0 /* 0000 End of program. */
#define SUCCEED 1 /* 0x01 Return from a subroutine, basically. */
@@ -31,97 +31,80 @@
#define SANY 19 /* 0x13 Match any one character. */
#define CANY 20 /* 0x14 Match any one byte. */
#define ANYOF 21 /* 0x15 Match character in (or not in) this class, single char match only */
-#define ANYOFV 22 /* 0x16 Match character in (or not in) this class, can match-multiple chars */
-#define ALNUM 23 /* 0x17 Match any alphanumeric character using native charset semantics for non-utf8 */
-#define ALNUML 24 /* 0x18 Match any alphanumeric char in locale */
-#define ALNUMU 25 /* 0x19 Match any alphanumeric char using Unicode semantics */
-#define ALNUMA 26 /* 0x1a Match [A-Za-z_0-9] */
-#define NALNUM 27 /* 0x1b Match any non-alphanumeric character using native charset semantics for non-utf8 */
-#define NALNUML 28 /* 0x1c Match any non-alphanumeric char in locale */
-#define NALNUMU 29 /* 0x1d Match any non-alphanumeric char using Unicode semantics */
-#define NALNUMA 30 /* 0x1e Match [^A-Za-z_0-9] */
-#define SPACE 31 /* 0x1f Match any whitespace character using native charset semantics for non-utf8 */
-#define SPACEL 32 /* 0x20 Match any whitespace char in locale */
-#define SPACEU 33 /* 0x21 Match any whitespace char using Unicode semantics */
-#define SPACEA 34 /* 0x22 Match [ \t\n\f\r] */
-#define NSPACE 35 /* 0x23 Match any non-whitespace character using native charset semantics for non-utf8 */
-#define NSPACEL 36 /* 0x24 Match any non-whitespace char in locale */
-#define NSPACEU 37 /* 0x25 Match any non-whitespace char using Unicode semantics */
-#define NSPACEA 38 /* 0x26 Match [^ \t\n\f\r] */
-#define DIGIT 39 /* 0x27 Match any numeric character using native charset semantics for non-utf8 */
-#define DIGITL 40 /* 0x28 Match any numeric character in locale */
-#define DIGITA 41 /* 0x29 Match [0-9] */
-#define NDIGIT 42 /* 0x2a Match any non-numeric character using native charset semantics for non-utf8 */
-#define NDIGITL 43 /* 0x2b Match any non-numeric character in locale */
-#define NDIGITA 44 /* 0x2c Match [^0-9] */
-#define CLUMP 45 /* 0x2d Match any extended grapheme cluster sequence */
-#define BRANCH 46 /* 0x2e Match this alternative, or the next... */
-#define BACK 47 /* 0x2f Match "", "next" ptr points backward. */
-#define EXACT 48 /* 0x30 Match this string (preceded by length). */
-#define EXACTF 49 /* 0x31 Match this non-UTF-8 string (not guaranteed to be folded) using /id rules (w/len). */
-#define EXACTFL 50 /* 0x32 Match this string (not guaranteed to be folded) using /il rules (w/len). */
-#define EXACTFU 51 /* 0x33 Match this string (folded iff in UTF-8, length in folding doesn't change if not in UTF-8) using /iu rules (w/len). */
-#define EXACTFU_SS 52 /* 0x34 Match this string (folded iff in UTF-8, length in folding may change even if not in UTF-8) using /iu rules (w/len). */
-#define EXACTFU_TRICKYFOLD 53 /* 0x35 Match this folded UTF-8 string using /iu rules */
-#define EXACTFA 54 /* 0x36 Match this string (not guaranteed to be folded) using /iaa rules (w/len). */
-#define NOTHING 55 /* 0x37 Match empty string. */
-#define TAIL 56 /* 0x38 Match empty string. Can jump here from outside. */
-#define STAR 57 /* 0x39 Match this (simple) thing 0 or more times. */
-#define PLUS 58 /* 0x3a Match this (simple) thing 1 or more times. */
-#define CURLY 59 /* 0x3b Match this simple thing {n,m} times. */
-#define CURLYN 60 /* 0x3c Capture next-after-this simple thing */
-#define CURLYM 61 /* 0x3d Capture this medium-complex thing {n,m} times. */
-#define CURLYX 62 /* 0x3e Match this complex thing {n,m} times. */
-#define WHILEM 63 /* 0x3f Do curly processing and see if rest matches. */
-#define OPEN 64 /* 0x40 Mark this point in input as start of */
-#define CLOSE 65 /* 0x41 Analogous to OPEN. */
-#define REF 66 /* 0x42 Match some already matched string */
-#define REFF 67 /* 0x43 Match already matched string, folded using native charset semantics for non-utf8 */
-#define REFFL 68 /* 0x44 Match already matched string, folded in loc. */
-#define REFFU 69 /* 0x45 Match already matched string, folded using unicode semantics for non-utf8 */
-#define REFFA 70 /* 0x46 Match already matched string, folded using unicode semantics for non-utf8, no mixing ASCII, non-ASCII */
-#define NREF 71 /* 0x47 Match some already matched string */
-#define NREFF 72 /* 0x48 Match already matched string, folded using native charset semantics for non-utf8 */
-#define NREFFL 73 /* 0x49 Match already matched string, folded in loc. */
-#define NREFFU 74 /* 0x4a Match already matched string, folded using unicode semantics for non-utf8 */
-#define NREFFA 75 /* 0x4b Match already matched string, folded using unicode semantics for non-utf8, no mixing ASCII, non-ASCII */
-#define IFMATCH 76 /* 0x4c Succeeds if the following matches. */
-#define UNLESSM 77 /* 0x4d Fails if the following matches. */
-#define SUSPEND 78 /* 0x4e "Independent" sub-RE. */
-#define IFTHEN 79 /* 0x4f Switch, should be preceded by switcher . */
-#define GROUPP 80 /* 0x50 Whether the group matched. */
-#define LONGJMP 81 /* 0x51 Jump far away. */
-#define BRANCHJ 82 /* 0x52 BRANCH with long offset. */
-#define EVAL 83 /* 0x53 Execute some Perl code. */
-#define MINMOD 84 /* 0x54 Next operator is not greedy. */
-#define LOGICAL 85 /* 0x55 Next opcode should set the flag only. */
-#define RENUM 86 /* 0x56 Group with independently numbered parens. */
-#define TRIE 87 /* 0x57 Match many EXACT(F[ALU]?)? at once. flags==type */
-#define TRIEC 88 /* 0x58 Same as TRIE, but with embedded charclass data */
-#define AHOCORASICK 89 /* 0x59 Aho Corasick stclass. flags==type */
-#define AHOCORASICKC 90 /* 0x5a Same as AHOCORASICK, but with embedded charclass data */
-#define GOSUB 91 /* 0x5b recurse to paren arg1 at (signed) ofs arg2 */
-#define GOSTART 92 /* 0x5c recurse to start of pattern */
-#define NGROUPP 93 /* 0x5d Whether the group matched. */
-#define INSUBP 94 /* 0x5e Whether we are in a specific recurse. */
-#define DEFINEP 95 /* 0x5f Never execute directly. */
-#define ENDLIKE 96 /* 0x60 Used only for the type field of verbs */
-#define OPFAIL 97 /* 0x61 Same as (?!) */
-#define ACCEPT 98 /* 0x62 Accepts the current matched string. */
-#define VERB 99 /* 0x63 Used only for the type field of verbs */
-#define PRUNE 100 /* 0x64 Pattern fails at this startpoint if no-backtracking through this */
-#define MARKPOINT 101 /* 0x65 Push the current location for rollback by cut. */
-#define SKIP 102 /* 0x66 On failure skip forward (to the mark) before retrying */
-#define COMMIT 103 /* 0x67 Pattern fails outright if backtracking through this */
-#define CUTGROUP 104 /* 0x68 On failure go to the next alternation in the group */
-#define KEEPS 105 /* 0x69 $& begins here. */
-#define LNBREAK 106 /* 0x6a generic newline pattern */
-#define VERTWS 107 /* 0x6b vertical whitespace (Perl 6) */
-#define NVERTWS 108 /* 0x6c not vertical whitespace (Perl 6) */
-#define HORIZWS 109 /* 0x6d horizontal whitespace (Perl 6) */
-#define NHORIZWS 110 /* 0x6e not horizontal whitespace (Perl 6) */
-#define OPTIMIZED 111 /* 0x6f Placeholder for dump. */
-#define PSEUDO 112 /* 0x70 Pseudo opcode for internal use. */
+#define ANYOF_WARN_SUPER 22 /* 0x16 Match character in (or not in) this class, warn (if enabled) upon matching a char above Unicode max; */
+#define ANYOF_SYNTHETIC 23 /* 0x17 Synthetic start class */
+#define POSIXD 24 /* 0x18 Some [[:class:]] under /d; the FLAGS field gives which one */
+#define POSIXL 25 /* 0x19 Some [[:class:]] under /l; the FLAGS field gives which one */
+#define POSIXU 26 /* 0x1a Some [[:class:]] under /u; the FLAGS field gives which one */
+#define POSIXA 27 /* 0x1b Some [[:class:]] under /a; the FLAGS field gives which one */
+#define NPOSIXD 28 /* 0x1c complement of POSIXD, [[:^class:]] */
+#define NPOSIXL 29 /* 0x1d complement of POSIXL, [[:^class:]] */
+#define NPOSIXU 30 /* 0x1e complement of POSIXU, [[:^class:]] */
+#define NPOSIXA 31 /* 0x1f complement of POSIXA, [[:^class:]] */
+#define CLUMP 32 /* 0x20 Match any extended grapheme cluster sequence */
+#define BRANCH 33 /* 0x21 Match this alternative, or the next... */
+#define BACK 34 /* 0x22 Match "", "next" ptr points backward. */
+#define EXACT 35 /* 0x23 Match this string (preceded by length). */
+#define EXACTF 36 /* 0x24 Match this non-UTF-8 string (not guaranteed to be folded) using /id rules (w/len). */
+#define EXACTFL 37 /* 0x25 Match this string (not guaranteed to be folded) using /il rules (w/len). */
+#define EXACTFU 38 /* 0x26 Match this string (folded iff in UTF-8, length in folding doesn't change if not in UTF-8) using /iu rules (w/len). */
+#define EXACTFA 39 /* 0x27 Match this string (not guaranteed to be folded) using /iaa rules (w/len). */
+#define EXACTFU_SS 40 /* 0x28 Match this string (folded iff in UTF-8, length in folding may change even if not in UTF-8) using /iu rules (w/len). */
+#define EXACTFU_TRICKYFOLD 41 /* 0x29 Match this folded UTF-8 string using /iu rules */
+#define NOTHING 42 /* 0x2a Match empty string. */
+#define TAIL 43 /* 0x2b Match empty string. Can jump here from outside. */
+#define STAR 44 /* 0x2c Match this (simple) thing 0 or more times. */
+#define PLUS 45 /* 0x2d Match this (simple) thing 1 or more times. */
+#define CURLY 46 /* 0x2e Match this simple thing {n,m} times. */
+#define CURLYN 47 /* 0x2f Capture next-after-this simple thing */
+#define CURLYM 48 /* 0x30 Capture this medium-complex thing {n,m} times. */
+#define CURLYX 49 /* 0x31 Match this complex thing {n,m} times. */
+#define WHILEM 50 /* 0x32 Do curly processing and see if rest matches. */
+#define OPEN 51 /* 0x33 Mark this point in input as start of #n. */
+#define CLOSE 52 /* 0x34 Analogous to OPEN. */
+#define REF 53 /* 0x35 Match some already matched string */
+#define REFF 54 /* 0x36 Match already matched string, folded using native charset semantics for non-utf8 */
+#define REFFL 55 /* 0x37 Match already matched string, folded in loc. */
+#define REFFU 56 /* 0x38 Match already matched string, folded using unicode semantics for non-utf8 */
+#define REFFA 57 /* 0x39 Match already matched string, folded using unicode semantics for non-utf8, no mixing ASCII, non-ASCII */
+#define NREF 58 /* 0x3a Match some already matched string */
+#define NREFF 59 /* 0x3b Match already matched string, folded using native charset semantics for non-utf8 */
+#define NREFFL 60 /* 0x3c Match already matched string, folded in loc. */
+#define NREFFU 61 /* 0x3d Match already matched string, folded using unicode semantics for non-utf8 */
+#define NREFFA 62 /* 0x3e Match already matched string, folded using unicode semantics for non-utf8, no mixing ASCII, non-ASCII */
+#define IFMATCH 63 /* 0x3f Succeeds if the following matches. */
+#define UNLESSM 64 /* 0x40 Fails if the following matches. */
+#define SUSPEND 65 /* 0x41 "Independent" sub-RE. */
+#define IFTHEN 66 /* 0x42 Switch, should be preceded by switcher. */
+#define GROUPP 67 /* 0x43 Whether the group matched. */
+#define LONGJMP 68 /* 0x44 Jump far away. */
+#define BRANCHJ 69 /* 0x45 BRANCH with long offset. */
+#define EVAL 70 /* 0x46 Execute some Perl code. */
+#define MINMOD 71 /* 0x47 Next operator is not greedy. */
+#define LOGICAL 72 /* 0x48 Next opcode should set the flag only. */
+#define RENUM 73 /* 0x49 Group with independently numbered parens. */
+#define TRIE 74 /* 0x4a Match many EXACT(F[ALU]?)? at once. flags==type */
+#define TRIEC 75 /* 0x4b Same as TRIE, but with embedded charclass data */
+#define AHOCORASICK 76 /* 0x4c Aho Corasick stclass. flags==type */
+#define AHOCORASICKC 77 /* 0x4d Same as AHOCORASICK, but with embedded charclass data */
+#define GOSUB 78 /* 0x4e recurse to paren arg1 at (signed) ofs arg2 */
+#define GOSTART 79 /* 0x4f recurse to start of pattern */
+#define NGROUPP 80 /* 0x50 Whether the group matched. */
+#define INSUBP 81 /* 0x51 Whether we are in a specific recurse. */
+#define DEFINEP 82 /* 0x52 Never execute directly. */
+#define ENDLIKE 83 /* 0x53 Used only for the type field of verbs */
+#define OPFAIL 84 /* 0x54 Same as (?!) */
+#define ACCEPT 85 /* 0x55 Accepts the current matched string. */
+#define VERB 86 /* 0x56 Used only for the type field of verbs */
+#define PRUNE 87 /* 0x57 Pattern fails at this startpoint if no-backtracking through this */
+#define MARKPOINT 88 /* 0x58 Push the current location for rollback by cut. */
+#define SKIP 89 /* 0x59 On failure skip forward (to the mark) before retrying */
+#define COMMIT 90 /* 0x5a Pattern fails outright if backtracking through this */
+#define CUTGROUP 91 /* 0x5b On failure go to the next alternation in the group */
+#define KEEPS 92 /* 0x5c $& begins here. */
+#define LNBREAK 93 /* 0x5d generic newline pattern */
+#define OPTIMIZED 94 /* 0x5e Placeholder for dump. */
+#define PSEUDO 95 /* 0x5f Pseudo opcode for internal use. */
/* ------------ States ------------- */
#define TRIE_next (REGNODE_MAX + 1) /* state for TRIE */
#define TRIE_next_fail (REGNODE_MAX + 2) /* state for TRIE */
@@ -192,29 +175,16 @@ EXTCONST U8 PL_regkind[] = {
REG_ANY, /* SANY */
REG_ANY, /* CANY */
ANYOF, /* ANYOF */
- ANYOF, /* ANYOFV */
- ALNUM, /* ALNUM */
- ALNUM, /* ALNUML */
- ALNUM, /* ALNUMU */
- ALNUM, /* ALNUMA */
- NALNUM, /* NALNUM */
- NALNUM, /* NALNUML */
- NALNUM, /* NALNUMU */
- NALNUM, /* NALNUMA */
- SPACE, /* SPACE */
- SPACE, /* SPACEL */
- SPACE, /* SPACEU */
- SPACE, /* SPACEA */
- NSPACE, /* NSPACE */
- NSPACE, /* NSPACEL */
- NSPACE, /* NSPACEU */
- NSPACE, /* NSPACEA */
- DIGIT, /* DIGIT */
- DIGIT, /* DIGITL */
- DIGIT, /* DIGITA */
- NDIGIT, /* NDIGIT */
- NDIGIT, /* NDIGITL */
- NDIGIT, /* NDIGITA */
+ ANYOF, /* ANYOF_WARN_SUPER */
+ ANYOF, /* ANYOF_SYNTHETIC */
+ POSIXD, /* POSIXD */
+ POSIXD, /* POSIXL */
+ POSIXD, /* POSIXU */
+ POSIXD, /* POSIXA */
+ NPOSIXD, /* NPOSIXD */
+ NPOSIXD, /* NPOSIXL */
+ NPOSIXD, /* NPOSIXU */
+ NPOSIXD, /* NPOSIXA */
CLUMP, /* CLUMP */
BRANCH, /* BRANCH */
BACK, /* BACK */
@@ -222,9 +192,9 @@ EXTCONST U8 PL_regkind[] = {
EXACT, /* EXACTF */
EXACT, /* EXACTFL */
EXACT, /* EXACTFU */
+ EXACT, /* EXACTFA */
EXACT, /* EXACTFU_SS */
EXACT, /* EXACTFU_TRICKYFOLD */
- EXACT, /* EXACTFA */
NOTHING, /* NOTHING */
NOTHING, /* TAIL */
STAR, /* STAR */
@@ -277,10 +247,6 @@ EXTCONST U8 PL_regkind[] = {
VERB, /* CUTGROUP */
KEEPS, /* KEEPS */
LNBREAK, /* LNBREAK */
- VERTWS, /* VERTWS */
- NVERTWS, /* NVERTWS */
- HORIZWS, /* HORIZWS */
- NHORIZWS, /* NHORIZWS */
NOTHING, /* OPTIMIZED */
PSEUDO, /* PSEUDO */
/* ------------ States ------------- */
@@ -353,29 +319,16 @@ static const U8 regarglen[] = {
0, /* SANY */
0, /* CANY */
0, /* ANYOF */
- 0, /* ANYOFV */
- 0, /* ALNUM */
- 0, /* ALNUML */
- 0, /* ALNUMU */
- 0, /* ALNUMA */
- 0, /* NALNUM */
- 0, /* NALNUML */
- 0, /* NALNUMU */
- 0, /* NALNUMA */
- 0, /* SPACE */
- 0, /* SPACEL */
- 0, /* SPACEU */
- 0, /* SPACEA */
- 0, /* NSPACE */
- 0, /* NSPACEL */
- 0, /* NSPACEU */
- 0, /* NSPACEA */
- 0, /* DIGIT */
- 0, /* DIGITL */
- 0, /* DIGITA */
- 0, /* NDIGIT */
- 0, /* NDIGITL */
- 0, /* NDIGITA */
+ 0, /* ANYOF_WARN_SUPER */
+ 0, /* ANYOF_SYNTHETIC */
+ 0, /* POSIXD */
+ 0, /* POSIXL */
+ 0, /* POSIXU */
+ 0, /* POSIXA */
+ 0, /* NPOSIXD */
+ 0, /* NPOSIXL */
+ 0, /* NPOSIXU */
+ 0, /* NPOSIXA */
0, /* CLUMP */
0, /* BRANCH */
0, /* BACK */
@@ -383,9 +336,9 @@ static const U8 regarglen[] = {
0, /* EXACTF */
0, /* EXACTFL */
0, /* EXACTFU */
+ 0, /* EXACTFA */
0, /* EXACTFU_SS */
0, /* EXACTFU_TRICKYFOLD */
- 0, /* EXACTFA */
0, /* NOTHING */
0, /* TAIL */
0, /* STAR */
@@ -438,10 +391,6 @@ static const U8 regarglen[] = {
EXTRA_SIZE(struct regnode_1), /* CUTGROUP */
0, /* KEEPS */
0, /* LNBREAK */
- 0, /* VERTWS */
- 0, /* NVERTWS */
- 0, /* HORIZWS */
- 0, /* NHORIZWS */
0, /* OPTIMIZED */
0, /* PSEUDO */
};
@@ -471,29 +420,16 @@ static const char reg_off_by_arg[] = {
0, /* SANY */
0, /* CANY */
0, /* ANYOF */
- 0, /* ANYOFV */
- 0, /* ALNUM */
- 0, /* ALNUML */
- 0, /* ALNUMU */
- 0, /* ALNUMA */
- 0, /* NALNUM */
- 0, /* NALNUML */
- 0, /* NALNUMU */
- 0, /* NALNUMA */
- 0, /* SPACE */
- 0, /* SPACEL */
- 0, /* SPACEU */
- 0, /* SPACEA */
- 0, /* NSPACE */
- 0, /* NSPACEL */
- 0, /* NSPACEU */
- 0, /* NSPACEA */
- 0, /* DIGIT */
- 0, /* DIGITL */
- 0, /* DIGITA */
- 0, /* NDIGIT */
- 0, /* NDIGITL */
- 0, /* NDIGITA */
+ 0, /* ANYOF_WARN_SUPER */
+ 0, /* ANYOF_SYNTHETIC */
+ 0, /* POSIXD */
+ 0, /* POSIXL */
+ 0, /* POSIXU */
+ 0, /* POSIXA */
+ 0, /* NPOSIXD */
+ 0, /* NPOSIXL */
+ 0, /* NPOSIXU */
+ 0, /* NPOSIXA */
0, /* CLUMP */
0, /* BRANCH */
0, /* BACK */
@@ -501,9 +437,9 @@ static const char reg_off_by_arg[] = {
0, /* EXACTF */
0, /* EXACTFL */
0, /* EXACTFU */
+ 0, /* EXACTFA */
0, /* EXACTFU_SS */
0, /* EXACTFU_TRICKYFOLD */
- 0, /* EXACTFA */
0, /* NOTHING */
0, /* TAIL */
0, /* STAR */
@@ -556,10 +492,6 @@ static const char reg_off_by_arg[] = {
0, /* CUTGROUP */
0, /* KEEPS */
0, /* LNBREAK */
- 0, /* VERTWS */
- 0, /* NVERTWS */
- 0, /* HORIZWS */
- 0, /* NHORIZWS */
0, /* OPTIMIZED */
0, /* PSEUDO */
};
@@ -594,97 +526,80 @@ EXTCONST char * const PL_reg_name[] = {
"SANY", /* 0x13 */
"CANY", /* 0x14 */
"ANYOF", /* 0x15 */
- "ANYOFV", /* 0x16 */
- "ALNUM", /* 0x17 */
- "ALNUML", /* 0x18 */
- "ALNUMU", /* 0x19 */
- "ALNUMA", /* 0x1a */
- "NALNUM", /* 0x1b */
- "NALNUML", /* 0x1c */
- "NALNUMU", /* 0x1d */
- "NALNUMA", /* 0x1e */
- "SPACE", /* 0x1f */
- "SPACEL", /* 0x20 */
- "SPACEU", /* 0x21 */
- "SPACEA", /* 0x22 */
- "NSPACE", /* 0x23 */
- "NSPACEL", /* 0x24 */
- "NSPACEU", /* 0x25 */
- "NSPACEA", /* 0x26 */
- "DIGIT", /* 0x27 */
- "DIGITL", /* 0x28 */
- "DIGITA", /* 0x29 */
- "NDIGIT", /* 0x2a */
- "NDIGITL", /* 0x2b */
- "NDIGITA", /* 0x2c */
- "CLUMP", /* 0x2d */
- "BRANCH", /* 0x2e */
- "BACK", /* 0x2f */
- "EXACT", /* 0x30 */
- "EXACTF", /* 0x31 */
- "EXACTFL", /* 0x32 */
- "EXACTFU", /* 0x33 */
- "EXACTFU_SS", /* 0x34 */
- "EXACTFU_TRICKYFOLD", /* 0x35 */
- "EXACTFA", /* 0x36 */
- "NOTHING", /* 0x37 */
- "TAIL", /* 0x38 */
- "STAR", /* 0x39 */
- "PLUS", /* 0x3a */
- "CURLY", /* 0x3b */
- "CURLYN", /* 0x3c */
- "CURLYM", /* 0x3d */
- "CURLYX", /* 0x3e */
- "WHILEM", /* 0x3f */
- "OPEN", /* 0x40 */
- "CLOSE", /* 0x41 */
- "REF", /* 0x42 */
- "REFF", /* 0x43 */
- "REFFL", /* 0x44 */
- "REFFU", /* 0x45 */
- "REFFA", /* 0x46 */
- "NREF", /* 0x47 */
- "NREFF", /* 0x48 */
- "NREFFL", /* 0x49 */
- "NREFFU", /* 0x4a */
- "NREFFA", /* 0x4b */
- "IFMATCH", /* 0x4c */
- "UNLESSM", /* 0x4d */
- "SUSPEND", /* 0x4e */
- "IFTHEN", /* 0x4f */
- "GROUPP", /* 0x50 */
- "LONGJMP", /* 0x51 */
- "BRANCHJ", /* 0x52 */
- "EVAL", /* 0x53 */
- "MINMOD", /* 0x54 */
- "LOGICAL", /* 0x55 */
- "RENUM", /* 0x56 */
- "TRIE", /* 0x57 */
- "TRIEC", /* 0x58 */
- "AHOCORASICK", /* 0x59 */
- "AHOCORASICKC", /* 0x5a */
- "GOSUB", /* 0x5b */
- "GOSTART", /* 0x5c */
- "NGROUPP", /* 0x5d */
- "INSUBP", /* 0x5e */
- "DEFINEP", /* 0x5f */
- "ENDLIKE", /* 0x60 */
- "OPFAIL", /* 0x61 */
- "ACCEPT", /* 0x62 */
- "VERB", /* 0x63 */
- "PRUNE", /* 0x64 */
- "MARKPOINT", /* 0x65 */
- "SKIP", /* 0x66 */
- "COMMIT", /* 0x67 */
- "CUTGROUP", /* 0x68 */
- "KEEPS", /* 0x69 */
- "LNBREAK", /* 0x6a */
- "VERTWS", /* 0x6b */
- "NVERTWS", /* 0x6c */
- "HORIZWS", /* 0x6d */
- "NHORIZWS", /* 0x6e */
- "OPTIMIZED", /* 0x6f */
- "PSEUDO", /* 0x70 */
+ "ANYOF_WARN_SUPER", /* 0x16 */
+ "ANYOF_SYNTHETIC", /* 0x17 */
+ "POSIXD", /* 0x18 */
+ "POSIXL", /* 0x19 */
+ "POSIXU", /* 0x1a */
+ "POSIXA", /* 0x1b */
+ "NPOSIXD", /* 0x1c */
+ "NPOSIXL", /* 0x1d */
+ "NPOSIXU", /* 0x1e */
+ "NPOSIXA", /* 0x1f */
+ "CLUMP", /* 0x20 */
+ "BRANCH", /* 0x21 */
+ "BACK", /* 0x22 */
+ "EXACT", /* 0x23 */
+ "EXACTF", /* 0x24 */
+ "EXACTFL", /* 0x25 */
+ "EXACTFU", /* 0x26 */
+ "EXACTFA", /* 0x27 */
+ "EXACTFU_SS", /* 0x28 */
+ "EXACTFU_TRICKYFOLD", /* 0x29 */
+ "NOTHING", /* 0x2a */
+ "TAIL", /* 0x2b */
+ "STAR", /* 0x2c */
+ "PLUS", /* 0x2d */
+ "CURLY", /* 0x2e */
+ "CURLYN", /* 0x2f */
+ "CURLYM", /* 0x30 */
+ "CURLYX", /* 0x31 */
+ "WHILEM", /* 0x32 */
+ "OPEN", /* 0x33 */
+ "CLOSE", /* 0x34 */
+ "REF", /* 0x35 */
+ "REFF", /* 0x36 */
+ "REFFL", /* 0x37 */
+ "REFFU", /* 0x38 */
+ "REFFA", /* 0x39 */
+ "NREF", /* 0x3a */
+ "NREFF", /* 0x3b */
+ "NREFFL", /* 0x3c */
+ "NREFFU", /* 0x3d */
+ "NREFFA", /* 0x3e */
+ "IFMATCH", /* 0x3f */
+ "UNLESSM", /* 0x40 */
+ "SUSPEND", /* 0x41 */
+ "IFTHEN", /* 0x42 */
+ "GROUPP", /* 0x43 */
+ "LONGJMP", /* 0x44 */
+ "BRANCHJ", /* 0x45 */
+ "EVAL", /* 0x46 */
+ "MINMOD", /* 0x47 */
+ "LOGICAL", /* 0x48 */
+ "RENUM", /* 0x49 */
+ "TRIE", /* 0x4a */
+ "TRIEC", /* 0x4b */
+ "AHOCORASICK", /* 0x4c */
+ "AHOCORASICKC", /* 0x4d */
+ "GOSUB", /* 0x4e */
+ "GOSTART", /* 0x4f */
+ "NGROUPP", /* 0x50 */
+ "INSUBP", /* 0x51 */
+ "DEFINEP", /* 0x52 */
+ "ENDLIKE", /* 0x53 */
+ "OPFAIL", /* 0x54 */
+ "ACCEPT", /* 0x55 */
+ "VERB", /* 0x56 */
+ "PRUNE", /* 0x57 */
+ "MARKPOINT", /* 0x58 */
+ "SKIP", /* 0x59 */
+ "COMMIT", /* 0x5a */
+ "CUTGROUP", /* 0x5b */
+ "KEEPS", /* 0x5c */
+ "LNBREAK", /* 0x5d */
+ "OPTIMIZED", /* 0x5e */
+ "PSEUDO", /* 0x5f */
/* ------------ States ------------- */
"TRIE_next", /* REGNODE_MAX +0x01 */
"TRIE_next_fail", /* REGNODE_MAX +0x02 */
@@ -735,23 +650,23 @@ EXTCONST char * const PL_reg_name[] = {
EXTCONST char * PL_reg_extflags_name[];
#else
EXTCONST char * const PL_reg_extflags_name[] = {
- /* Bits in extflags defined: 11111111111111111111111011111111 */
+ /* Bits in extflags defined: 11111110111111111111111111111111 */
"MULTILINE", /* 0x00000001 */
"SINGLELINE", /* 0x00000002 */
"FOLD", /* 0x00000004 */
"EXTENDED", /* 0x00000008 */
"KEEPCOPY", /* 0x00000010 */
- "CHARSET", /* 0x000000e0 */
- "CHARSET", /* 0x000000e0 */
- "CHARSET", /* 0x000000e0 */
- "UNUSED_BIT_8", /* 0x00000100 */
+ "CHARSET0", /* 0x00000020 : "CHARSET" - 0x000000e0 */
+ "CHARSET1", /* 0x00000040 : "CHARSET" - 0x000000e0 */
+ "CHARSET2", /* 0x00000080 : "CHARSET" - 0x000000e0 */
+ "SPLIT", /* 0x00000100 */
"ANCH_BOL", /* 0x00000200 */
"ANCH_MBOL", /* 0x00000400 */
"ANCH_SBOL", /* 0x00000800 */
"ANCH_GPOS", /* 0x00001000 */
"GPOS_SEEN", /* 0x00002000 */
"GPOS_FLOAT", /* 0x00004000 */
- "LOOKBEHIND_SEEN", /* 0x00008000 */
+ "NO_INPLACE_SUBST", /* 0x00008000 */
"EVAL_SEEN", /* 0x00010000 */
"CANY_SEEN", /* 0x00020000 */
"NOSCAN", /* 0x00040000 */
@@ -760,7 +675,7 @@ EXTCONST char * const PL_reg_extflags_name[] = {
"USE_INTUIT_NOML", /* 0x00200000 */
"USE_INTUIT_ML", /* 0x00400000 */
"INTUIT_TAIL", /* 0x00800000 */
- "SPLIT", /* 0x01000000 */
+ "UNUSED_BIT_24", /* 0x01000000 */
"COPY_DONE", /* 0x02000000 */
"TAINTED_SEEN", /* 0x04000000 */
"TAINTED", /* 0x08000000 */
@@ -778,9 +693,9 @@ EXTCONST char * const PL_reg_extflags_name[] = {
EXTCONST U8 PL_varies[] __attribute__deprecated__;
#else
EXTCONST U8 PL_varies[] __attribute__deprecated__ = {
- ANYOFV, CLUMP, BRANCH, BACK, STAR, PLUS, CURLY, CURLYN, CURLYM, CURLYX,
- WHILEM, REF, REFF, REFFL, REFFU, REFFA, NREF, NREFF, NREFFL, NREFFU,
- NREFFA, SUSPEND, IFTHEN, BRANCHJ,
+ CLUMP, BRANCH, BACK, STAR, PLUS, CURLY, CURLYN, CURLYM, CURLYX, WHILEM,
+ REF, REFF, REFFL, REFFU, REFFA, NREF, NREFF, NREFFL, NREFFU, NREFFA,
+ SUSPEND, IFTHEN, BRANCHJ,
0
};
#endif /* DOINIT */
@@ -789,7 +704,7 @@ EXTCONST U8 PL_varies[] __attribute__deprecated__ = {
EXTCONST U8 PL_varies_bitmask[];
#else
EXTCONST U8 PL_varies_bitmask[] = {
- 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0xFE, 0xFC, 0xCF, 0x04, 0x00, 0x00, 0x00, 0x00
+ 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0xE7, 0x7F, 0x26, 0x00, 0x00, 0x00
};
#endif /* DOINIT */
@@ -801,10 +716,8 @@ EXTCONST U8 PL_varies_bitmask[] = {
EXTCONST U8 PL_simple[] __attribute__deprecated__;
#else
EXTCONST U8 PL_simple[] __attribute__deprecated__ = {
- REG_ANY, SANY, CANY, ANYOF, ALNUM, ALNUML, ALNUMU, ALNUMA, NALNUM,
- NALNUML, NALNUMU, NALNUMA, SPACE, SPACEL, SPACEU, SPACEA, NSPACE,
- NSPACEL, NSPACEU, NSPACEA, DIGIT, DIGITL, DIGITA, NDIGIT, NDIGITL,
- NDIGITA, VERTWS, NVERTWS, HORIZWS, NHORIZWS,
+ REG_ANY, SANY, CANY, ANYOF, ANYOF_WARN_SUPER, ANYOF_SYNTHETIC, POSIXD,
+ POSIXL, POSIXU, POSIXA, NPOSIXD, NPOSIXL, NPOSIXU, NPOSIXA,
0
};
#endif /* DOINIT */
@@ -813,7 +726,7 @@ EXTCONST U8 PL_simple[] __attribute__deprecated__ = {
EXTCONST U8 PL_simple_bitmask[];
#else
EXTCONST U8 PL_simple_bitmask[] = {
- 0x00, 0x00, 0xBC, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00
+ 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#endif /* DOINIT */
diff --git a/gnu/usr.bin/perl/runtests.SH b/gnu/usr.bin/perl/runtests.SH
index bab27e9fecc..24e1ffaf34f 100755
--- a/gnu/usr.bin/perl/runtests.SH
+++ b/gnu/usr.bin/perl/runtests.SH
@@ -1,3 +1,5 @@
+#!/bin/sh
+
case $PERL_CONFIG_SH in
'')
if test ! -f config.sh; then
diff --git a/gnu/usr.bin/perl/symbian/config.sh b/gnu/usr.bin/perl/symbian/config.sh
index 010a686af78..7f7895719ae 100644
--- a/gnu/usr.bin/perl/symbian/config.sh
+++ b/gnu/usr.bin/perl/symbian/config.sh
@@ -15,6 +15,7 @@ asctime_r_proto='0'
bin='\\system\\apps\\perl'
bincompat5005='n'
binexp='\\system\\apps\\perl'
+bootstrap_charset='undef'
byteorder='1234'
castflags='0'
cc='gcc'
@@ -230,7 +231,10 @@ d_inetaton='undef'
d_inetntop='undef'
d_inetpton='undef'
d_int64_t='undef'
+d_ip_mreq='undef'
+d_ip_mreq_source='undef'
d_ipv6_mreq='undef'
+d_ipv6_mreq_source='undef'
d_isascii='undef'
d_isblank='undef'
d_isfinite='undef'
diff --git a/gnu/usr.bin/perl/t/bigmem/read.t b/gnu/usr.bin/perl/t/bigmem/read.t
new file mode 100644
index 00000000000..b29c097a6aa
--- /dev/null
+++ b/gnu/usr.bin/perl/t/bigmem/read.t
@@ -0,0 +1,24 @@
+#!perl
+BEGIN {
+ chdir 't';
+ unshift @INC, "../lib";
+}
+
+use strict;
+require './test.pl';
+use Config qw(%Config);
+
+$ENV{PERL_TEST_MEMORY} >= 3
+ or skip_all("Need ~3Gb for this test");
+$Config{ptrsize} >= 8
+ or skip_all("Need 64-bit pointers for this test");
+
+plan(1);
+
+# RT #100514
+my $x = "";
+read(DATA, $x, 4, 0x80000000);
+is(length $x, 0x80000004, "check we read to the correct offset");
+__DATA__
+Food
+
diff --git a/gnu/usr.bin/perl/t/bigmem/vec.t b/gnu/usr.bin/perl/t/bigmem/vec.t
new file mode 100644
index 00000000000..bf3c513f636
--- /dev/null
+++ b/gnu/usr.bin/perl/t/bigmem/vec.t
@@ -0,0 +1,34 @@
+#!perl
+BEGIN {
+ chdir 't';
+ unshift @INC, "../lib";
+}
+
+use strict;
+require './test.pl';
+use Config qw(%Config);
+
+$ENV{PERL_TEST_MEMORY} >= 1
+ or skip_all("Need ~1Gb for this test");
+$Config{ptrsize} >= 8
+ or skip_all("Need 64-bit pointers for this test");
+
+plan(7);
+
+# RT #111730: Negative offset to vec in lvalue context
+
+my $v = "";
+ok(scalar eval { vec($v, 0x80000000, 1) = 1 }, "set a bit at a large offset");
+ok(vec($v, 0x80000000, 1), "check a bit at a large offset");
+
+ok(scalar eval { vec($v, 0x100000000, 1) = 1 },
+ "set a bit at a larger offset");
+ok(vec($v, 0x100000000, 1), "check a bit at a larger offset");
+
+# real out of range values
+ok(!eval { vec($v, -0x80000000, 1) = 1 },
+ "shouldn't be able to set at a large negative offset");
+ok(!eval { vec($v, -0x100000000, 1) = 1 },
+ "shouldn't be able to set at a larger negative offset");
+
+ok(!vec($v, 0, 1), "make sure we didn't wrap");
diff --git a/gnu/usr.bin/perl/t/comp/bproto.t b/gnu/usr.bin/perl/t/comp/bproto.t
index bc0f1a291bd..8d11b915c1a 100644
--- a/gnu/usr.bin/perl/t/comp/bproto.t
+++ b/gnu/usr.bin/perl/t/comp/bproto.t
@@ -8,7 +8,7 @@ BEGIN {
@INC = '../lib';
}
-print "1..14\n";
+print "1..16\n";
my $i = 1;
@@ -35,12 +35,14 @@ sub test_no_error {
test_too_many($_) for split /\n/,
q[ defined(&foo, $bar);
+ pos(1,$b);
undef(&foo, $bar);
uc($bar,$bar);
];
test_too_few($_) for split /\n/,
q[ unpack;
+ pack;
];
test_no_error($_) for split /\n/,
diff --git a/gnu/usr.bin/perl/t/comp/fold.t b/gnu/usr.bin/perl/t/comp/fold.t
index ec95f1aed80..5d6d9bf0892 100644
--- a/gnu/usr.bin/perl/t/comp/fold.t
+++ b/gnu/usr.bin/perl/t/comp/fold.t
@@ -4,7 +4,7 @@
# we've not yet verified that use works.
# use strict;
-print "1..19\n";
+print "1..26\n";
my $test = 0;
# Historically constant folding was performed by evaluating the ops, and if
@@ -118,3 +118,34 @@ is ($@, '', 'no error');
ok scalar $jing =~ (0 || y/fo//),
'lone y/// is not bound via =~ after || folding';
}
+
+# [perl #78064] or print
+package other { # hide the "ok" sub
+ BEGIN { $^W = 0 }
+ print 0 ? not_ok : ok;
+ print " ", ++$test, " - print followed by const ? BEAR : BEAR\n";
+ print 1 ? ok : not_ok;
+ print " ", ++$test, " - print followed by const ? BEAR : BEAR (again)\n";
+ print 1 && ok;
+ print " ", ++$test, " - print followed by const && BEAR\n";
+ print 0 || ok;
+ print " ", ++$test, " - print followed by const || URSINE\n";
+ BEGIN { $^W = 1 }
+}
+
+# or stat
+print "not " unless stat(1 ? INSTALL : 0) eq stat("INSTALL");
+print "ok ", ++$test, " - stat(const ? word : ....)\n";
+# in case we are in t/
+print "not " unless stat(1 ? TEST : 0) eq stat("TEST");
+print "ok ", ++$test, " - stat(const ? word : ....)\n";
+
+# or truncate
+my $n = "for_fold_dot_t$$";
+open F, ">$n" or die "open: $!";
+print F "bralh blah blah \n";
+close F or die "close $!";
+eval "truncate 1 ? $n : 0, 0;";
+print "not " unless -z $n;
+print "ok ", ++$test, " - truncate(const ? word : ...)\n";
+unlink $n;
diff --git a/gnu/usr.bin/perl/t/comp/form_scope.t b/gnu/usr.bin/perl/t/comp/form_scope.t
index d4b5eddeb6c..2370a4bb307 100755
--- a/gnu/usr.bin/perl/t/comp/form_scope.t
+++ b/gnu/usr.bin/perl/t/comp/form_scope.t
@@ -1,6 +1,6 @@
#!./perl
-print "1..7\n";
+print "1..14\n";
# Tests bug #22977. Test case from Dave Mitchell.
sub f ($);
@@ -75,13 +75,36 @@ defined $x ? "not ok 4 - $x" : "ok 4"
print "ok 5 - closure var not available when outer sub is inactive\n";
}
+# Formats inside closures should close over the topmost clone of the outer
+# sub on the call stack.
+# Tests will be out of sequence if the wrong sub is used.
+sub make_closure {
+ my $arg = shift;
+ sub {
+ shift == 0 and &$next(1), return;
+ my $x = "ok $arg";
+ format STDOUT4 =
+@<<<<<<<
+$x
+.
+ sub { write }->(); # separate sub, so as not to rely on it being the
+ } # currently-running sub
+}
+*STDOUT = *STDOUT4{FORMAT};
+$clo1 = make_closure 6;
+$clo2 = make_closure 7;
+$next = $clo1;
+&$clo2(0);
+$next = $clo2;
+&$clo1(0);
+
# Cloning a format whose outside has been undefined
sub x {
{my ($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l,$m,$n,$o,$p,$q,$r,$s,$t,$u)}
my $z;
format STDOUT6 =
@<<<<<<<<<<<<<<<<<<<<<<<<<
-defined $z ? "not ok 6 - $z" : "ok 6"
+defined $z ? "not ok 8 - $z" : "ok 8"
.
}
undef &x;
@@ -92,5 +115,46 @@ undef &x;
local $SIG{__WARN__} = sub { $w = shift };
write;
print "not " unless $w =~ /^Variable "\$z" is not available at/;
- print "ok 7 - closure var not available when outer sub is undefined\n";
+ print "ok 9 - closure var not available when outer sub is undefined\n";
+}
+
+format STDOUT7 =
+@<<<<<<<<<<<<<<<<<<<<<<<<<<<
+do { my $x = "ok 10 - closure inside format"; sub { $x }->() }
+.
+*STDOUT = *STDOUT7{FORMAT};
+write;
+
+$testn = 12;
+format STDOUT8 =
+@<<<< - recursive formats
+do { my $t = "ok " . $testn--; write if $t =~ 12; $t}
+.
+*STDOUT = *STDOUT8{FORMAT};
+write;
+
+sub _13 {
+ my $x;
+format STDOUT13 =
+@* - formats closing over redefined subs
+ref \$x eq 'SCALAR' ? "ok 13" : "not ok 13";
+.
+}
+undef &_13;
+eval 'sub _13 { my @x; write }';
+*STDOUT = *STDOUT13{FORMAT};
+_13();
+
+# This is a variation of bug #22977, which crashes or fails an assertion
+# up to 5.16.
+# Keep this test last if you want test numbers to be sane.
+BEGIN { \&END }
+END {
+ my $test = "ok 14";
+ *STDOUT = *STDOUT5{FORMAT};
+ write;
+ format STDOUT5 =
+@<<<<<<<
+$test
+.
}
diff --git a/gnu/usr.bin/perl/t/comp/hints.t b/gnu/usr.bin/perl/t/comp/hints.t
index a857755a4a4..9a08854d86c 100644
--- a/gnu/usr.bin/perl/t/comp/hints.t
+++ b/gnu/usr.bin/perl/t/comp/hints.t
@@ -4,6 +4,7 @@
BEGIN {
@INC = qw(. ../lib);
+ chdir 't';
}
BEGIN { print "1..31\n"; }
diff --git a/gnu/usr.bin/perl/t/comp/parser.t b/gnu/usr.bin/perl/t/comp/parser.t
index 16b4a826d1a..4f2da90f50e 100644
--- a/gnu/usr.bin/perl/t/comp/parser.t
+++ b/gnu/usr.bin/perl/t/comp/parser.t
@@ -3,7 +3,7 @@
# Checks if the parser behaves correctly in edge cases
# (including weird syntax errors)
-print "1..123\n";
+print "1..155\n";
sub failed {
my ($got, $expected, $name) = @_;
@@ -69,6 +69,13 @@ eval q/"\Nfoo"/;
like( $@, qr/^Missing braces on \\N/,
'syntax error in string with incomplete \N' );
+eval q/"\o{"/;
+like( $@, qr/^Missing right brace on \\o/,
+ 'syntax error in string with incomplete \o' );
+eval q/"\ofoo"/;
+like( $@, qr/^Missing braces on \\o/,
+ 'syntax error in string with incomplete \o' );
+
eval "a.b.c.d.e.f;sub";
like( $@, qr/^Illegal declaration of anonymous subroutine/,
'found by Markov chain stress testing' );
@@ -125,11 +132,11 @@ is( $@, '', 'PL_lex_brackstack' );
is("${a}[", "A[", "interpolation, qq//");
my @b=("B");
is("@{b}{", "B{", "interpolation, qq//");
- is(qr/${a}{/, '(?^:A{)', "interpolation, qr//");
+ is(qr/${a}\{/, '(?^:A\{)', "interpolation, qr//");
my $c = "A{";
- $c =~ /${a}{/;
+ $c =~ /${a}\{/;
is($&, 'A{', "interpolation, m//");
- $c =~ s/${a}{/foo/;
+ $c =~ s/${a}\{/foo/;
is($c, 'foo', "interpolation, s/...//");
$c =~ s/foo/${a}{/;
is($c, 'A{', "interpolation, s//.../");
@@ -311,9 +318,9 @@ like($@, qr/BEGIN failed--compilation aborted/, 'BEGIN 7' );
eval qq[ %$xFC ];
like($@, qr/Identifier too long/, "too long id in % sigil ctx");
- eval qq[ \\&$xFC ]; # take a ref since I don't want to call it
- is($@, "", "252 character & sigil ident ok");
- eval qq[ \\&$xFD ];
+ eval qq[ \\&$xFB ]; # take a ref since I don't want to call it
+ is($@, "", "251 character & sigil ident ok");
+ eval qq[ \\&$xFC ];
like($@, qr/Identifier too long/, "too long id in & sigil ctx");
eval qq[ *$xFC ];
@@ -341,6 +348,12 @@ like($@, qr/BEGIN failed--compilation aborted/, 'BEGIN 7' );
is(defined &zlonk, '', 'but no body defined');
}
+# [perl #113016] CORE::print::foo
+sub CORE'print'foo { 43 } # apostrophes intentional; do not tempt fate
+sub CORE'foo'bar { 43 }
+is CORE::print::foo, 43, 'CORE::print::foo is not CORE::print ::foo';
+is scalar eval "CORE::foo'bar", 43, "CORE::foo'bar is not an error";
+
# bug #71748
eval q{
$_ = "";
@@ -353,7 +366,99 @@ eval q{
};
is($@, "", "multiline whitespace inside substitute expression");
-# Add new tests HERE:
+eval '@A =~ s/a/b/; # compilation error
+ sub tahi {}
+ sub rua;
+ sub toru ($);
+ sub wha :lvalue;
+ sub rima ($%&*$&*\$%\*&$%*&) :method;
+ sub ono :lvalue { die }
+ sub whitu (_) { die }
+ sub waru ($;) :method { die }
+ sub iwa { die }
+ BEGIN { }';
+is $::{tahi}, undef, 'empty sub decl ignored after compilation error';
+is $::{rua}, undef, 'stub decl ignored after compilation error';
+is $::{toru}, undef, 'stub+proto decl ignored after compilation error';
+is $::{wha}, undef, 'stub+attr decl ignored after compilation error';
+is $::{rima}, undef, 'stub+proto+attr ignored after compilation error';
+is $::{ono}, undef, 'sub decl with attr ignored after compilation error';
+is $::{whitu}, undef, 'sub decl w proto ignored after compilation error';
+is $::{waru}, undef, 'sub w attr+proto ignored after compilation error';
+is $::{iwa}, undef, 'non-empty sub decl ignored after compilation error';
+is *BEGIN{CODE}, undef, 'BEGIN leaves no stub after compilation error';
+
+$test = $test + 1;
+"ok $test - format inside re-eval" =~ /(?{
+ format =
+@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+$_
+.
+write
+}).*/;
+
+eval '
+"${;
+
+=pod
+
+=cut
+
+}";
+';
+is $@, "", 'pod inside string in string eval';
+"${;
+
+=pod
+
+=cut
+
+}";
+print "ok ", ++$test, " - pod inside string outside of string eval\n";
+
+like "blah blah blah\n", qr/${\ <<END
+blah blah blah
+END
+ }/, 'here docs in multiline quoted construct';
+like "blah blah blah\n", eval q|qr/${\ <<END
+blah blah blah
+END
+ }/|, 'here docs in multiline quoted construct in string eval';
+
+# Unterminated here-docs in subst in eval; used to crash
+eval 's/${<<END}//';
+eval 's//${<<END}/';
+print "ok ", ++$test, " - unterminated here-docs in s/// in string eval\n";
+
+sub 'Hello'_he_said (_);
+is prototype "Hello::_he_said", '_', 'initial tick in sub declaration';
+
+{
+ my @x = 'string';
+ is(eval q{ "$x[0]->strung" }, 'string->strung',
+ 'literal -> after an array subscript within ""');
+ @x = ['string'];
+ # this used to give "string"
+ like("$x[0]-> [0]", qr/^ARRAY\([^)]*\)-> \[0]\z/,
+ 'literal -> [0] after an array subscript within ""');
+}
+
+eval 'no if $] >= 5.17.4 warnings => "deprecated"';
+is 1,1, ' no crash for "no ... syntax error"';
+
+for my $pkg(()){}
+$pkg = 3;
+is $pkg, 3, '[perl #114942] for my $foo()){} $foo';
+
+eval 'Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo'
+ .'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo'
+ .'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo'
+ .'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo'
+ .'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo'
+ .'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo';
+like $@, "^Identifier too long at ", 'ident buffer overflow';
+
+# Add new tests HERE (above this line)
# bug #74022: Loop on characters in \p{OtherIDContinue}
# This test hangs if it fails.
@@ -437,15 +542,16 @@ eval <<'EOSTANZA'; die $@ if $@;
check(qr/^Great hail!.*no more\.$/, 61, "Overflow both small buffer checks");
EOSTANZA
-{
- my @x = 'string';
- is(eval q{ "$x[0]->strung" }, 'string->strung',
- 'literal -> after an array subscript within ""');
- @x = ['string'];
- # this used to give "string"
- like("$x[0]-> [0]", qr/^ARRAY\([^)]*\)-> \[0]\z/,
- 'literal -> [0] after an array subscript within ""');
-}
+#line 531 parser.t
+<<EOU; check('parser\.t', 531, 'on same line as heredoc');
+EOU
+s//<<EOV/e if 0;
+EOV
+check('parser\.t', 535, 'after here-doc in quotes');
+<<EOW;
+${check('parser\.t', 537, 'first line of interp in here-doc');;
+ check('parser\.t', 538, 'second line of interp in here-doc');}
+EOW
__END__
# Don't add new tests HERE. See note above
diff --git a/gnu/usr.bin/perl/t/comp/uproto.t b/gnu/usr.bin/perl/t/comp/uproto.t
index d3ad19f849e..f81e31411c6 100644
--- a/gnu/usr.bin/perl/t/comp/uproto.t
+++ b/gnu/usr.bin/perl/t/comp/uproto.t
@@ -72,7 +72,11 @@ eval q{ f(1,2,3,4) };
like( $@, qr/Too many arguments for main::f at/ );
{
+ # We have not tested require/use/no yet, so we must avoid this:
+ # no warnings 'deprecated';
+ BEGIN { $SIG{__WARN__} = sub {} }
my $_ = "quarante-deux";
+ BEGIN { $SIG{__WARN__} = undef }
$foo = "FOO";
$bar = "BAR";
f("FOO quarante-deux", $foo);
@@ -97,7 +101,9 @@ $_ = $expected;
g();
g;
undef $expected; &g; # $_ not passed
+BEGIN { $SIG{__WARN__} = sub {} }
{ $expected = my $_ = "bar"; g() }
+BEGIN { $SIG{__WARN__} = undef }
eval q{ sub wrong1 (_$); wrong1(1,2) };
like( $@, qr/Malformed prototype for main::wrong1/, 'wrong1' );
@@ -142,7 +148,9 @@ $_ = 21;
double();
is( $_, 42, '$_ is modifiable' );
{
+ BEGIN { $SIG{__WARN__} = sub {} }
my $_ = 22;
+ BEGIN { $SIG{__WARN__} = undef }
double();
is( $_, 44, 'my $_ is modifiable' );
}
diff --git a/gnu/usr.bin/perl/t/io/crlf.t b/gnu/usr.bin/perl/t/io/crlf.t
index ff0f2085546..1e93ee02a82 100644
--- a/gnu/usr.bin/perl/t/io/crlf.t
+++ b/gnu/usr.bin/perl/t/io/crlf.t
@@ -12,8 +12,10 @@ use Config;
my $file = tempfile();
+my $ungetc_count = 8200; # Somewhat over the likely buffer size
+
{
- plan(tests => 16);
+ plan(tests => 16 + 2 * $ungetc_count);
ok(open(FOO,">:crlf",$file));
ok(print FOO 'a'.((('a' x 14).qq{\n}) x 2000) || close(FOO));
ok(open(FOO,"<:crlf",$file));
@@ -42,6 +44,16 @@ my $file = tempfile();
$/ = "\n";
$s = <$fh>.<$fh>;
is($s, "\nxxy\n");
+
+ for my $i (0 .. $ungetc_count - 1) {
+ my $j = $i % 256;
+ is($fh->ungetc($j), $j, "ungetc of $j returns itself");
+ }
+
+ for (my $i = $ungetc_count - 1; $i >= 0; $i--) {
+ my $j = $i % 256;
+ is(ord($fh->getc()), $j, "getc gets back $j");
+ }
}
ok(close(FOO));
diff --git a/gnu/usr.bin/perl/t/io/eintr.t b/gnu/usr.bin/perl/t/io/eintr.t
index 966922bbe7b..9ea9cc7879d 100644
--- a/gnu/usr.bin/perl/t/io/eintr.t
+++ b/gnu/usr.bin/perl/t/io/eintr.t
@@ -49,9 +49,11 @@ if (exists $ENV{PERLIO} && $ENV{PERLIO} =~ /stdio/ ) {
# Also skip on release builds, to avoid other possibly problematic
# platforms
-if ($^O eq 'VMS' || $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O =~ /freebsd/ ||
- ($^O eq 'solaris' && $Config{osvers} eq '2.8')
- || ((int($]*1000) & 1) == 0)
+my ($osmajmin) = $Config{osvers} =~ /^(\d+\.\d+)/;
+if ($^O eq 'VMS' || $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O =~ /freebsd/ || $^O eq 'midnightbsd' ||
+ ($^O eq 'solaris' && $Config{osvers} eq '2.8') || $^O eq 'nto' ||
+ ($^O eq 'darwin' && $osmajmin < 9) ||
+ ((int($]*1000) & 1) == 0)
) {
skip_all('various portability issues');
exit 0;
diff --git a/gnu/usr.bin/perl/t/io/errno.t b/gnu/usr.bin/perl/t/io/errno.t
index dadc4e04fca..e9a6c097629 100755
--- a/gnu/usr.bin/perl/t/io/errno.t
+++ b/gnu/usr.bin/perl/t/io/errno.t
@@ -34,8 +34,6 @@ SKIP:
for my $rs_code ('', '$/=undef', '$/=\2', '$/=\1024') {
TODO:
{
- local $::TODO = "We get RMS\$_IOP at EOF on VMS when \$/ is undef"
- if $^O eq 'VMS' && $rs_code eq '$/=undef';
is( runperl( prog => "$rs_code; $test_prog",
stdin => $test_in, stderr => 1),
$test_in,
diff --git a/gnu/usr.bin/perl/t/io/shm.t b/gnu/usr.bin/perl/t/io/shm.t
index 0ba566b1d4c..4a8941ec753 100644
--- a/gnu/usr.bin/perl/t/io/shm.t
+++ b/gnu/usr.bin/perl/t/io/shm.t
@@ -55,7 +55,7 @@ if (not defined $key) {
}
}
else {
- plan(tests => 13);
+ plan(tests => 15);
pass('acquired shared mem');
}
@@ -80,3 +80,13 @@ shmwrite $key, $int, 0, 1;
shmread $key, $number, 0, 1;
is("$number", $int, qq{"\$id" eq "$int"});
cmp_ok($number + 0, '==', $int, "\$id + 0 == $int");
+
+my ($fetch, $store) = (0, 0);
+{ package Counted;
+ sub TIESCALAR { bless [undef] }
+ sub FETCH { ++$fetch; $_[0][0] }
+ sub STORE { ++$store; $_[0][0] = $_[1] } }
+tie $ct, 'Counted';
+shmread $key, $ct, 0, 1;
+is($fetch, 1, "shmread FETCH once");
+is($store, 1, "shmread STORE once");
diff --git a/gnu/usr.bin/perl/t/io/utf8.t b/gnu/usr.bin/perl/t/io/utf8.t
index 4b017479431..29beba20202 100644
--- a/gnu/usr.bin/perl/t/io/utf8.t
+++ b/gnu/usr.bin/perl/t/io/utf8.t
@@ -10,7 +10,7 @@ BEGIN {
no utf8; # needed for use utf8 not griping about the raw octets
-plan(tests => 55);
+plan(tests => 61);
$| = 1;
@@ -348,3 +348,41 @@ is($failed, undef);
"<:utf8 rcatline must warn about bad utf8");
close F;
}
+
+{
+ # fixed record reads
+ open F, ">:utf8", $a_file;
+ print F "foo\xE4";
+ print F "bar\xFE";
+ print F "\xC0\xC8\xCC\xD2";
+ print F "a\xE4ab";
+ print F "a\xE4a";
+ close F;
+ open F, "<:utf8", $a_file;
+ local $/ = \4;
+ my $line = <F>;
+ is($line, "foo\xE4", "readline with \$/ = \\4");
+ $line .= <F>;
+ is($line, "foo\xE4bar\xFE", "rcatline with \$/ = \\4");
+ $line = <F>;
+ is($line, "\xC0\xC8\xCC\xD2", "readline with several encoded characters");
+ $line = <F>;
+ is($line, "a\xE4ab", "readline with another boundary condition");
+ $line = <F>;
+ is($line, "a\xE4a", "readline with boundary condition");
+ close F;
+
+ # badly encoded at EOF
+ open F, ">:raw", $a_file;
+ print F "foo\xEF\xAC"; # truncated \x{FB04} small ligature ffl
+ close F;
+
+ use warnings 'utf8';
+ open F, "<:utf8", $a_file;
+ undef $@;
+ local $SIG{__WARN__} = sub { $@ = shift };
+ $line = <F>;
+
+ like( $@, qr/utf8 "\\xEF" does not map to Unicode .+ <F> chunk 1/,
+ "<:utf8 readline (fixed) must warn about bad utf8");
+}
diff --git a/gnu/usr.bin/perl/t/lib/1_compile.t b/gnu/usr.bin/perl/t/lib/1_compile.t
index a4dea830544..2802ae2ad64 100644
--- a/gnu/usr.bin/perl/t/lib/1_compile.t
+++ b/gnu/usr.bin/perl/t/lib/1_compile.t
@@ -7,9 +7,9 @@
BEGIN {
chdir 't';
@INC = '../lib';
+ require './test.pl';
}
-use strict;
use warnings;
use File::Spec::Functions;
@@ -27,28 +27,22 @@ if (eval { require Socket }) {
@Core_Modules = sort @Core_Modules;
-print "1..".(1+@Core_Modules)."\n";
+plan tests => 1+@Core_Modules;
-my $message
- = "ok 1 - All modules should have tests # TODO Make Schwern Poorer\n";
-if (@Core_Modules) {
- print "not $message";
-} else {
- print $message;
-}
-print <<'EOREWARD';
-# http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2001-04/msg01223.html
-# 20010421230349.P2946@blackrider.blackstar.co.uk
-EOREWARD
-
-my $test_num = 2;
+cmp_ok(@Core_Modules, '>', 0, "All modules should have tests");
+note("http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2001-04/msg01223.html");
+note("20010421230349.P2946\@blackrider.blackstar.co.uk");
foreach my $module (@Core_Modules) {
- my $todo = '';
- $todo = "# TODO $module needs porting on $^O" if $module eq 'ByteLoader' && $^O eq 'VMS';
- print "# $module compile failed\nnot " unless compile_module($module);
- print "ok $test_num $todo\n";
- $test_num++;
+ if ($module eq 'ByteLoader' && $^O eq 'VMS') {
+ TODO: {
+ local $TODO = "$module needs porting on $^O";
+ ok(compile_module($module), "compile $module");
+ }
+ }
+ else {
+ ok(compile_module($module), "compile $module");
+ }
}
# We do this as a separate process else we'll blow the hell
@@ -60,7 +54,6 @@ sub compile_module {
my $lib = '-I' . catdir(updir(), 'lib');
my $out = scalar `$^X $lib $compmod $module`;
- print "# $out";
return $out =~ /^ok/;
}
diff --git a/gnu/usr.bin/perl/t/lib/Count.pm b/gnu/usr.bin/perl/t/lib/Count.pm
new file mode 100644
index 00000000000..635b5de6910
--- /dev/null
+++ b/gnu/usr.bin/perl/t/lib/Count.pm
@@ -0,0 +1,8 @@
+# zero! ha ha ha
+package Count;
+"ha!";
+__DATA__
+one! ha ha ha
+two! ha ha ha
+three! ha ha ha
+four! ha ha ha
diff --git a/gnu/usr.bin/perl/t/lib/Devel/nodb.pm b/gnu/usr.bin/perl/t/lib/Devel/nodb.pm
new file mode 100644
index 00000000000..069380f5364
--- /dev/null
+++ b/gnu/usr.bin/perl/t/lib/Devel/nodb.pm
@@ -0,0 +1,3 @@
+package Devel::nodb;
+*DB::DB = sub { } if 0;
+1;
diff --git a/gnu/usr.bin/perl/t/lib/charnames/alias b/gnu/usr.bin/perl/t/lib/charnames/alias
index 75280be7b37..b8786db30c2 100644
--- a/gnu/usr.bin/perl/t/lib/charnames/alias
+++ b/gnu/usr.bin/perl/t/lib/charnames/alias
@@ -12,7 +12,8 @@ unsupported special ':scoobydoo' in charnames at
print "Here: \N{DIGIT ONE}\n";
charnames::vianame("DIGIT TWO");
EXPECT
-Undefined subroutine &charnames::vianame called at - line 2.
+OPTIONS regex
+Undefined subroutine &charnames::vianame called at - line \d+.
Here: 1
########
# NAME autoload doesn't get viacode
@@ -20,7 +21,7 @@ print "Here: \N{DIGIT THREE}\n";
charnames::viacode(0x34);
EXPECT
OPTIONS regex
-Undefined subroutine &charnames::viacode called at - line 2.
+Undefined subroutine &charnames::viacode called at - line \d+.
Here: 3
########
# NAME autoload doesn't get string_vianame
@@ -28,7 +29,7 @@ print "Here: \N{DIGIT FOUR}\n";
charnames::string_vianame("DIGIT FIVE");
EXPECT
OPTIONS regex
-Undefined subroutine &charnames::string_vianame called at - line 2.
+Undefined subroutine &charnames::string_vianame called at - line \d+.
Here: 4
########
# NAME wrong type of alias (missing colon)
@@ -36,8 +37,8 @@ no warnings;
use charnames "alias";
"Here: \N{e_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname 'e_ACUTE' at
+OPTIONS regex fatal
+Unknown charname 'e_ACUTE' at - line \d+, within string
########
# NAME alias without an argument
use warnings;
@@ -55,22 +56,14 @@ EXPECT
OPTIONS regex
:alias cannot use existing pragma :full \(reversed order\?\) at
########
-# NAME alias with hashref but no :full
-use warnings;
-use charnames ":alias" => { e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE" };
-"Here: \N{e_ACUTE}!\n";
-EXPECT
-OPTIONS regex
-Unknown charname 'LATIN SMALL LETTER E WITH ACUTE' at
-########
# NAME alias with hashref but with :short
use warnings;
no warnings 'void';
use charnames ":short", ":alias" => { e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE" };
"Here: \N{e_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname 'LATIN SMALL LETTER E WITH ACUTE' at
+OPTIONS regex fatal
+Unknown charname 'e_ACUTE' at - line \d+, within string
########
# NAME alias with hashref to :full OK
use warnings;
@@ -96,8 +89,8 @@ no warnings 'void';
use charnames ":loose", ":alias" => { e_ACUTE => "latin SMALL LETTER E WITH ACUTE" };
"Here: \N{e_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname 'latin SMALL LETTER E WITH ACUTE' at
+OPTIONS regex fatal
+Unknown charname 'e_ACUTE' at - line \d+, within string
########
# NAME alias with hashref to :short but using :full
use warnings;
@@ -105,8 +98,8 @@ no warnings 'void';
use charnames ":full", ":alias" => { e_ACUTE => "LATIN:e WITH ACUTE" };
"Here: \N{e_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname 'LATIN:e WITH ACUTE' at
+OPTIONS regex fatal
+Unknown charname 'e_ACUTE' at - line \d+, within string
########
# NAME alias with hashref to :short OK
use warnings;
@@ -152,8 +145,8 @@ use charnames ":short", ":alias" => {
};
"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname '' at
+OPTIONS regex fatal
+Unknown charname 'a_ACUTE' at - line \d+, within string
########
# NAME alias with hashref two aliases
use warnings;
@@ -175,8 +168,8 @@ use charnames ":short", ":alias" => {
};
"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname 'LATIN SMALL LETTER A WITH ACUT' at
+OPTIONS regex fatal
+Unknown charname 'a_ACUTE' at - line \d+, within string
########
# NAME alias with hashref using mixed aliases
use warnings;
@@ -186,8 +179,8 @@ use charnames ":short", ":alias" => {
};
"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname 'LATIN SMALL LETTER A WITH ACUTE' at
+OPTIONS regex fatal
+Unknown charname 'a_ACUTE' at - line \d+, within string
########
# NAME alias with hashref using mixed aliases
use warnings;
@@ -198,8 +191,8 @@ use charnames ":full", ":alias" => {
};
"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname 'LATIN:e WITH ACUTE' at
+OPTIONS regex fatal
+Unknown charname 'e_ACUTE' at - line \d+, within string
########
# NAME alias with nonexisting file
use warnings;
@@ -217,7 +210,7 @@ use charnames ":full", ":alias" => "xy 7-";
"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
EXPECT
OPTIONS regex
-Charnames alias files can only have identifier characters at
+Charnames alias file names can only have identifier characters at
########
# NAME alias with non_absolute (existing) file name (which it should /not/ use)
use warnings;
@@ -228,7 +221,7 @@ EXPECT
OPTIONS regex
unicore/perl_alias.pl cannot be used as alias file for charnames at
########
-# alias with bad file
+# NAME alias with bad file
--FILE-- ../../lib/unicore/xyzzy_alias.pl
#!perl
0;
@@ -241,7 +234,7 @@ EXPECT
OPTIONS regex
unicore/xyzzy_alias.pl did not return a \(valid\) list of alias pairs at
########
-# alias with file with empty list
+# NAME alias with file with empty list
--FILE-- ../../lib/unicore/xyzzy_alias.pl
#!perl
();
@@ -251,10 +244,10 @@ no warnings 'void';
use charnames ":full", ":alias" => "xyzzy";
"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname 'e_ACUTE' at
+OPTIONS regex fatal
+Unknown charname 'e_ACUTE' at - line \d+, within string
########
-# alias with file OK but file has :short aliases
+# NAME alias with file OK but file has :short aliases
--FILE-- ../../lib/unicore/xyzzy_alias.pl
#!perl
( e_ACUTE => "LATIN:e WITH ACUTE",
@@ -266,10 +259,10 @@ no warnings 'void';
use charnames ":full", ":alias" => "xyzzy";
"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname 'LATIN:e WITH ACUTE' at
+OPTIONS regex fatal
+Unknown charname 'e_ACUTE' at - line \d+, within string
########
-# alias with :short and file OK
+# NAME alias with :short and file OK
--FILE-- ../../lib/unicore/xyzzy_alias.pl
#!perl
( e_ACUTE => "LATIN:e WITH ACUTE",
@@ -284,7 +277,7 @@ EXPECT
OPTIONS regex
$
########
-# alias with :short and file OK has :long aliases
+# NAME alias with :short and file OK has :long aliases
--FILE-- ../../lib/unicore/xyzzy_alias.pl
#!perl
( e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE",
@@ -296,10 +289,10 @@ no warnings 'void';
use charnames ":short", ":alias" => "xyzzy";
"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname 'LATIN SMALL LETTER E WITH ACUTE' at
+OPTIONS regex fatal
+Unknown charname 'e_ACUTE' at - line \d+, within string
########
-# alias with file implicit :full but file has :short aliases
+# NAME alias with file implicit :full but file has :short aliases
--FILE-- ../../lib/unicore/xyzzy_alias.pl
#!perl
( e_ACUTE => "LATIN:e WITH ACUTE",
@@ -311,10 +304,10 @@ no warnings 'void';
use charnames ":alias" => ":xyzzy";
"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
EXPECT
-OPTIONS regex
-Unknown charname 'LATIN:e WITH ACUTE' at
+OPTIONS regex fatal
+Unknown charname 'e_ACUTE' at - line \d+, within string
########
-# alias with file implicit :full and file has :long aliases
+# NAME alias with file implicit :full and file has :long aliases
--FILE-- ../../lib/unicore/xyzzy_alias.pl
#!perl
( e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE",
@@ -346,3 +339,68 @@ print charnames::viacode(0x80), "\n";
EXPECT
OPTIONS regex
PADDING CHARACTER
+########
+# NAME various wrong characters in :alias are errors
+# Below, one of the EXPECT regexes matches both the UTF-8 and non-UTF-8 form.
+# This is because under some circumstances the message gets output as UTF-8.
+use charnames ":full", ":alias" => {
+ "4e_ACUTE" => "LATIN SMALL LETTER E WITH ACUTE",
+ "e_A,CUTE" => "LATIN SMALL LETTER E WITH ACUTE",
+ "e_ACUT\x{d7}E" => "LATIN SMALL LETTER E WITH ACUTE",
+ };
+EXPECT
+OPTIONS regex
+Invalid character in charnames alias definition; marked by <-- HERE in '4<-- HERE e_ACUTE'
+Invalid character in charnames alias definition; marked by <-- HERE in 'e_A,<-- HERE CUTE'
+Invalid character in charnames alias definition; marked by <-- HERE in 'e_ACUT(?:\x{d7}|\x{C3}\x{97})<-- HERE E'
+########
+# RT#73022
+# NAME \N{...} interprets ... as octets rather than UTF-8
+use utf8;
+use open qw( :utf8 :std );
+use charnames ":full", ":alias" => { "自転車ã«ä¹—る人" => "BICYCLIST" };
+print "ok\n" if "\N{自転車ã«ä¹—る人}" eq "\x{1F6B4}";
+EXPECT
+ok
+########
+# NAME Misspelled \N{} UTF-8 names are errors
+use utf8;
+use open qw( :utf8 :std );
+use charnames ":full", ":alias" => { "自転車ã«ä¹—る人" => "BICYCLIST" };
+print "ok\n" if "\N{転車ã«ä¹—る人}" eq "\x{1F6B4}";
+EXPECT
+OPTIONS regex
+Unknown charname '転車ã«ä¹—る人' at - line \d+, within string
+########
+# NAME various wrong UTF-8 characters in :alias are errors
+# First has a punctuation, KATAKANA MIDDLE DOT, in it; second begins with a
+# digit: ARABIC-INDIC DIGIT FOUR
+use utf8;
+use open qw( :utf8 :std );
+use charnames ":full", ":alias" => { "自転車・ã«ä¹—る人" => "BICYCLIST",
+ "٤転車ã«ä¹—る人" => "BICYCLIST",
+ };
+print "ok\n" if "\N{自転車・ã«ä¹—る人}" eq "\x{1F6B4}";
+print "ok\n" if "\N{٤転車ã«ä¹—る人}" eq "\x{1F6B4}";
+EXPECT
+OPTIONS regex
+Invalid character in charnames alias definition; marked by <-- HERE in 'Ù¤<-- HERE 転車ã«ä¹—る人'
+Invalid character in charnames alias definition; marked by <-- HERE in '自転車・<-- HERE ã«ä¹—る人' at - line \d+
+########
+# NAME trailing and sequences of multiple spaces in :alias names are deprectated
+use charnames ":alias" => { "TOO MANY SPACES" => "NO ENTRY SIGN",
+ "TRAILING SPACE " => "FACE WITH NO GOOD GESTURE"
+ };
+print "ok\n" if "\N{TOO MANY SPACES}" eq "\x{1F6AB}";
+print "ok\n" if "\N{TRAILING SPACE }" eq "\x{1F645}";
+no warnings 'deprecated';
+print "ok\n" if "\N{TOO MANY SPACES}" eq "\x{1F6AB}";
+print "ok\n" if "\N{TRAILING SPACE }" eq "\x{1F645}";
+EXPECT
+OPTIONS regex
+A sequence of multiple spaces in a charnames alias definition is deprecated; marked by <-- HERE in 'TOO <-- HERE MANY SPACES' at - line \d+.
+Trailing white-space in a charnames alias definition is deprecated; marked by <-- HERE in 'TRAILING SPACE <-- HERE ' at - line \d+.
+ok
+ok
+ok
+ok
diff --git a/gnu/usr.bin/perl/t/lib/common.pl b/gnu/usr.bin/perl/t/lib/common.pl
index e6a33b20242..beb59a021d4 100644
--- a/gnu/usr.bin/perl/t/lib/common.pl
+++ b/gnu/usr.bin/perl/t/lib/common.pl
@@ -54,11 +54,11 @@ foreach my $file (@w_files) {
}
$^X = rel2abs($^X);
+@INC = map { rel2abs($_) } @INC;
my $tempdir = tempfile;
mkdir $tempdir, 0700 or die "Can't mkdir '$tempdir': $!";
chdir $tempdir or die die "Can't chdir '$tempdir': $!";
-unshift @INC, '../../lib';
my $cleanup = 1;
END {
diff --git a/gnu/usr.bin/perl/t/lib/commonsense.t b/gnu/usr.bin/perl/t/lib/commonsense.t
index 27fd302fb19..9f0f13f634c 100644
--- a/gnu/usr.bin/perl/t/lib/commonsense.t
+++ b/gnu/usr.bin/perl/t/lib/commonsense.t
@@ -1,21 +1,26 @@
#!./perl
-chdir 't' if -d 't';
-@INC = '../lib';
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
+}
+
+plan( tests => 1);
+
require Config; import Config;
+
if (($Config{'extensions'} !~ /\bFcntl\b/) ){
- print "Bail out! Perl configured without Fcntl module\n";
- exit 0;
+ BAIL_OUT("Perl configured without Fcntl module");
}
-if (($Config{'extensions'} !~ /\bIO\b/) ){
- print "Bail out! Perl configured without IO module\n";
- exit 0;
+##Finds IO submodules when using \b
+if (($Config{'extensions'} !~ /\bIO\s/) ){
+ BAIL_OUT("Perl configured without IO module");
}
# hey, DOS users do not need this kind of common sense ;-)
if ($^O ne 'dos' && ($Config{'extensions'} !~ /\bFile\/Glob\b/) ){
- print "Bail out! Perl configured without File::Glob module\n";
- exit 0;
+ BAIL_OUT("Perl configured without File::Glob module");
}
-print "1..1\nok 1\n";
+pass('common sense');
diff --git a/gnu/usr.bin/perl/t/lib/croak/op b/gnu/usr.bin/perl/t/lib/croak/op
index eb5974ffc43..22f1e7621b5 100644
--- a/gnu/usr.bin/perl/t/lib/croak/op
+++ b/gnu/usr.bin/perl/t/lib/croak/op
@@ -5,14 +5,6 @@ EXPECT
Can't use global $! in "my" at - line 1, near "my $!"
Execution of - aborted due to compilation errors.
########
-# NAME my $<special_unicode>
-use utf8;
-BEGIN { binmode STDERR, ":utf8" }
-my $â™ ;
-EXPECT
-Can't use global $â™  in "my" at - line 3, near "my $â™ "
-Execution of - aborted due to compilation errors.
-########
# NAME OP_HELEM fields
package Foo;
use fields qw(a b);
@@ -37,11 +29,6 @@ my Foo $f = Foo->new;
EXPECT
No such class field "c" in variable $f of type Foo at - line 8.
########
-# NAME my sub
-my sub foo { }
-EXPECT
-"my sub" not yet implemented at - line 1.
-########
# NAME delete BAD
delete $x;
EXPECT
diff --git a/gnu/usr.bin/perl/t/lib/croak/pp_ctl b/gnu/usr.bin/perl/t/lib/croak/pp_ctl
index 0f075cd783e..ee1edbaffab 100644
--- a/gnu/usr.bin/perl/t/lib/croak/pp_ctl
+++ b/gnu/usr.bin/perl/t/lib/croak/pp_ctl
@@ -1,6 +1,12 @@
__END__
+# NAME dump with computed label
+my $label = "foo";
+dump $label;
+EXPECT
+Can't find label foo at - line 2.
+########
# NAME when outside given
-use 5.01;
+use 5.01; no warnings 'experimental::smartmatch';
when(undef){}
EXPECT
Can't "when" outside a topicalizer at - line 2.
diff --git a/gnu/usr.bin/perl/t/lib/croak/pp_hot b/gnu/usr.bin/perl/t/lib/croak/pp_hot
new file mode 100644
index 00000000000..bc00a484c6d
--- /dev/null
+++ b/gnu/usr.bin/perl/t/lib/croak/pp_hot
@@ -0,0 +1,60 @@
+__END__
+# NAME local %$ref on last line of lvalue sub in lv cx
+ sub foo :lvalue { local %{\%foo} }
+ (foo) = 3;
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME local @$ref on last line of lvalue sub in lv cx
+ sub foo :lvalue { local @{\@foo} }
+ (foo) = 3;
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME local %$ref on last line of lvalue sub in non-lv cx
+ sub foo :lvalue { local %{\%foo} }
+ foo;
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME local @$ref on last line of lvalue sub in non-lv cx
+ sub foo :lvalue { local @{\@foo} }
+ foo;
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME \local %$ref
+ \local %{\%hash}
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME \local @$ref
+ \local @{\@hash}
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME calling undef sub belonging to undef GV
+ my $foosub = \&foo;
+ undef *foo;
+ &$foosub;
+EXPECT
+Undefined subroutine &main::foo called at - line 3.
+########
+# NAME calling undef sub resident in its GV
+ my $foosub = \&foo;
+ &$foosub;
+EXPECT
+Undefined subroutine &main::foo called at - line 2.
+########
+# NAME calling undef scalar
+ &{+undef};
+EXPECT
+Can't use an undefined value as a subroutine reference at - line 1.
+########
+# NAME calling undef magical scalar
+ sub TIESCALAR {bless[]}
+ sub FETCH {}
+ tie $tied, "";
+ &$tied;
+EXPECT
+Can't use an undefined value as a subroutine reference at - line 4.
diff --git a/gnu/usr.bin/perl/t/lib/croak/toke b/gnu/usr.bin/perl/t/lib/croak/toke
new file mode 100644
index 00000000000..8e4b0338a30
--- /dev/null
+++ b/gnu/usr.bin/perl/t/lib/croak/toke
@@ -0,0 +1,130 @@
+__END__
+# NAME Unterminated here-doc in string eval
+eval "<<foo"; die $@
+EXPECT
+Can't find string terminator "foo" anywhere before EOF at (eval 1) line 1.
+########
+# NAME Unterminated here-doc in s/// string eval
+eval "s//<<foo/e"; die $@
+EXPECT
+Can't find string terminator "foo" anywhere before EOF at (eval 1) line 1.
+########
+# NAME Missing name in "my sub"
+use feature 'lexical_subs'; my sub;
+EXPECT
+The lexical_subs feature is experimental at - line 1.
+Missing name in "my sub" at - line 1.
+########
+# NAME Missing name in "our sub"
+use feature 'lexical_subs'; our sub;
+EXPECT
+The lexical_subs feature is experimental at - line 1.
+Missing name in "our sub" at - line 1.
+########
+# NAME Missing name in "state sub"
+use 5.01; use feature 'lexical_subs';
+state sub;
+EXPECT
+The lexical_subs feature is experimental at - line 2.
+Missing name in "state sub" at - line 2.
+########
+# NAME Integer constant overloading returning undef
+use overload;
+BEGIN { overload::constant integer => sub {}; undef *^H }
+1
+EXPECT
+Constant(1) unknown at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME Float constant overloading returning undef
+use overload;
+BEGIN { overload::constant float => sub {}; undef *^H }
+1.1
+EXPECT
+Constant(1.1) unknown at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME Binary constant overloading returning undef
+use overload;
+BEGIN { overload::constant binary => sub {}; undef *^H }
+0x1
+EXPECT
+Constant(0x1) unknown at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME String constant overloading returning undef
+use overload;
+BEGIN { overload::constant q => sub {}; undef *^H }
+'1', "1$_", tr"a"", s""a"
+EXPECT
+Constant(q) unknown at - line 3, near "'1'"
+Constant(qq) unknown at - line 3, within string
+Constant(tr) unknown at - line 3, within string
+Constant(s) unknown at - line 3, within string
+Execution of - aborted due to compilation errors.
+########
+# NAME Regexp constant overloading when *^H is undefined
+use overload;
+BEGIN { overload::constant qr => sub {}; undef *^H }
+/a/, m'a'
+EXPECT
+Constant(qq) unknown at - line 3, within pattern
+Constant(q) unknown at - line 3, within pattern
+Execution of - aborted due to compilation errors.
+########
+# NAME \N{...} when charnames fails to load but without an error
+# SKIP ? exists $ENV{PERL_UNICODE} ? "Unreliable under some PERL_UNICODE settings" : 0
+BEGIN { ++$_ for @INC{"charnames.pm","_charnames.pm"} }
+"\N{a}"
+EXPECT
+Constant(\N{a}) unknown at - line 2, within string
+Execution of - aborted due to compilation errors.
+########
+# NAME Integer constant overloading returning undef
+use overload;
+BEGIN { overload::constant integer => sub {} }
+1
+EXPECT
+Constant(1): Call to &{$^H{integer}} did not return a defined value at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME Float constant overloading returning undef
+use overload;
+BEGIN { overload::constant float => sub {} }
+1.1
+EXPECT
+Constant(1.1): Call to &{$^H{float}} did not return a defined value at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME Binary constant overloading returning undef
+use overload;
+BEGIN { overload::constant binary => sub {} }
+0x1
+EXPECT
+Constant(0x1): Call to &{$^H{binary}} did not return a defined value at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME String constant overloading returning undef
+use overload;
+BEGIN { overload::constant q => sub {} }
+'1', "1$_", tr"a"", s""a"
+EXPECT
+Constant(q): Call to &{$^H{q}} did not return a defined value at - line 3, near "'1'"
+Constant(qq): Call to &{$^H{q}} did not return a defined value at - line 3, within string
+Constant(tr): Call to &{$^H{q}} did not return a defined value at - line 3, within string
+Constant(s): Call to &{$^H{q}} did not return a defined value at - line 3, within string
+Execution of - aborted due to compilation errors.
+########
+# NAME Regexp constant overloading returning undef
+use overload;
+BEGIN { overload::constant qr => sub {} }
+/a/, m'a'
+EXPECT
+Constant(qq): Call to &{$^H{qr}} did not return a defined value at - line 3, within pattern
+Constant(q): Call to &{$^H{qr}} did not return a defined value at - line 3, within pattern
+Execution of - aborted due to compilation errors.
+########
+# NAME Unterminated delimiter for here document
+<<"foo
+EXPECT
+Unterminated delimiter for here document at - line 1.
diff --git a/gnu/usr.bin/perl/t/lib/feature/switch b/gnu/usr.bin/perl/t/lib/feature/switch
index 5da635b6d51..0dee7f51cf9 100644
--- a/gnu/usr.bin/perl/t/lib/feature/switch
+++ b/gnu/usr.bin/perl/t/lib/feature/switch
@@ -3,28 +3,28 @@ Check the lexical scoping of the switch keywords.
__END__
# No switch; given should be a bareword.
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
print STDOUT given;
EXPECT
Unquoted string "given" may clash with future reserved word at - line 3.
given
########
# No switch; when should be a bareword.
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
print STDOUT when;
EXPECT
Unquoted string "when" may clash with future reserved word at - line 3.
when
########
# No switch; default should be a bareword.
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
print STDOUT default;
EXPECT
Unquoted string "default" may clash with future reserved word at - line 3.
default
########
# No switch; break should be a bareword.
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
print STDOUT break;
EXPECT
Unquoted string "break" may clash with future reserved word at - line 3.
@@ -36,19 +36,19 @@ EXPECT
Can't "continue" outside a when block at - line 2.
########
# Use switch; so given is a keyword
-use feature 'switch';
+use feature 'switch'; no warnings 'experimental::smartmatch';
given("okay\n") { print }
EXPECT
okay
########
# Use switch; so when is a keyword
-use feature 'switch';
+use feature 'switch'; no warnings 'experimental::smartmatch';
given(1) { when(1) { print "okay" } }
EXPECT
okay
########
# Use switch; so default is a keyword
-use feature 'switch';
+use feature 'switch'; no warnings 'experimental::smartmatch';
given(1) { default { print "okay" } }
EXPECT
okay
@@ -60,7 +60,7 @@ EXPECT
Can't "break" outside a given block at - line 3.
########
# switch out of scope; given should be a bareword.
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
{ use feature 'switch';
given (1) {print "Okay here\n";}
}
@@ -71,7 +71,7 @@ Okay here
given
########
# switch out of scope; when should be a bareword.
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
{ use feature 'switch';
given (1) { when(1) {print "Okay here\n";} }
}
@@ -82,7 +82,7 @@ Okay here
when
########
# switch out of scope; default should be a bareword.
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
{ use feature 'switch';
given (1) { default {print "Okay here\n";} }
}
@@ -93,7 +93,7 @@ Okay here
default
########
# switch out of scope; break should be a bareword.
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
{ use feature 'switch';
given (1) { break }
}
@@ -103,7 +103,7 @@ Unquoted string "break" may clash with future reserved word at - line 6.
break
########
# C<no feature 'switch'> should work
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
use feature 'switch';
given (1) { when(1) {print "Okay here\n";} }
no feature 'switch';
@@ -114,7 +114,7 @@ Okay here
when
########
# C<no feature> should work too
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
use feature 'switch';
given (1) { when(1) {print "Okay here\n";} }
no feature;
@@ -125,14 +125,14 @@ Okay here
when
########
# Without the feature, no 'Unambiguous use of' warning:
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
@break = ($break = "break");
print ${break}, ${break[0]};
EXPECT
breakbreak
########
# With the feature, we get an 'Unambiguous use of' warning:
-use warnings;
+use warnings; no warnings 'experimental::smartmatch';
use feature 'switch';
@break = ($break = "break");
print ${break}, ${break[0]};
diff --git a/gnu/usr.bin/perl/t/lib/strict/refs b/gnu/usr.bin/perl/t/lib/strict/refs
index d9bff7cd840..e74851220e7 100644
--- a/gnu/usr.bin/perl/t/lib/strict/refs
+++ b/gnu/usr.bin/perl/t/lib/strict/refs
@@ -27,6 +27,29 @@ Can't use string ("A::Really::Big::Package::Name::T"...) as a HASH ref while "st
# strict refs - error
use strict ;
+"A::Really::Big::Package::Name::To::Use" =~ /(.*)/;
+${$1};
+EXPECT
+Can't use string ("A::Really::Big::Package::Name::T"...) as a SCALAR ref while "strict refs" in use at - line 5.
+########
+
+# strict refs - error
+use strict ;
+*{"A::Really::Big::Package::Name::To::Use"; }
+EXPECT
+Can't use string ("A::Really::Big::Package::Name::T"...) as a symbol ref while "strict refs" in use at - line 4.
+########
+
+# strict refs - error
+use strict ;
+"A::Really::Big::Package::Name::To::Use" =~ /(.*)/;
+*{$1}
+EXPECT
+Can't use string ("A::Really::Big::Package::Name::T"...) as a symbol ref while "strict refs" in use at - line 5.
+########
+
+# strict refs - error
+use strict ;
my $fred ;
my $a = ${"fred"} ;
EXPECT
@@ -308,7 +331,7 @@ Can't use string ("Fred") as a SCALAR ref while "strict refs" in use at - line 8
use strict 'refs';
/(?{${"foo"}++})/;
EXPECT
-Can't use string ("foo") as a SCALAR ref while "strict refs" in use at (re_eval 1) line 1.
+Can't use string ("foo") as a SCALAR ref while "strict refs" in use at - line 3.
########
# [perl #37886] strict 'refs' doesn't apply inside defined
use strict 'refs';
diff --git a/gnu/usr.bin/perl/t/lib/strict/subs b/gnu/usr.bin/perl/t/lib/strict/subs
index 57327cca0bb..5fd0b03de7f 100644
--- a/gnu/usr.bin/perl/t/lib/strict/subs
+++ b/gnu/usr.bin/perl/t/lib/strict/subs
@@ -378,8 +378,8 @@ Execution of - aborted due to compilation errors.
use strict 'subs';
qr/(?{my $x=foo})/;
EXPECT
-Bareword "foo" not allowed while "strict subs" in use at (re_eval 1) line 1.
-Compilation failed in regexp at - line 3.
+Bareword "foo" not allowed while "strict subs" in use at - line 3.
+Execution of - aborted due to compilation errors.
########
# Regexp compilation errors weren't UTF-8 clean
use strict 'subs';
@@ -387,8 +387,8 @@ use utf8;
use open qw( :utf8 :std );
qr/(?{my $x=fòò})/;
EXPECT
-Bareword "fòò" not allowed while "strict subs" in use at (re_eval 1) line 1.
-Compilation failed in regexp at - line 5.
+Bareword "fòò" not allowed while "strict subs" in use at - line 5.
+Execution of - aborted due to compilation errors.
########
# [perl #27628] strict 'subs' didn't warn on bareword array index
use strict 'subs';
@@ -451,3 +451,10 @@ sub foo {
EXPECT
Bareword "FOO" not allowed while "strict subs" in use at - line 5.
Execution of - aborted due to compilation errors.
+########
+# make sure checks are done within (?{})
+use strict 'subs';
+/(?{FOO})/
+EXPECT
+Bareword "FOO" not allowed while "strict subs" in use at - line 3.
+Execution of - aborted due to compilation errors.
diff --git a/gnu/usr.bin/perl/t/lib/strict/vars b/gnu/usr.bin/perl/t/lib/strict/vars
index 87e5a773309..c6cb0679396 100644
--- a/gnu/usr.bin/perl/t/lib/strict/vars
+++ b/gnu/usr.bin/perl/t/lib/strict/vars
@@ -518,8 +518,8 @@ Execution of - aborted due to compilation errors.
use strict 'vars';
qr/(?{$foo++})/;
EXPECT
-Global symbol "$foo" requires explicit package name at (re_eval 1) line 1.
-Compilation failed in regexp at - line 3.
+Global symbol "$foo" requires explicit package name at - line 3.
+Execution of - aborted due to compilation errors.
########
# Regex compilation errors weren't UTF-8 clean.
use strict 'vars';
@@ -527,8 +527,8 @@ use utf8;
use open qw( :utf8 :std );
qr/(?{$fòò++})/;
EXPECT
-Global symbol "$fòò" requires explicit package name at (re_eval 1) line 1.
-Compilation failed in regexp at - line 5.
+Global symbol "$fòò" requires explicit package name at - line 5.
+Execution of - aborted due to compilation errors.
########
# [perl #73712] 'Variable is not imported' should be suppressible
$dweck;
diff --git a/gnu/usr.bin/perl/t/lib/test_require.pm b/gnu/usr.bin/perl/t/lib/test_require.pm
new file mode 100644
index 00000000000..381e068c854
--- /dev/null
+++ b/gnu/usr.bin/perl/t/lib/test_require.pm
@@ -0,0 +1,6 @@
+#!perl -w
+# Don't use strict because this is for testing require
+
+package test_require;
+
+++$test_require::loaded;
diff --git a/gnu/usr.bin/perl/t/lib/universal.t b/gnu/usr.bin/perl/t/lib/universal.t
index a52e01972fe..71223b4faef 100644
--- a/gnu/usr.bin/perl/t/lib/universal.t
+++ b/gnu/usr.bin/perl/t/lib/universal.t
@@ -15,12 +15,10 @@ sub tryit { eval shift or warn \$@ }
tryit "&Internals::SvREADONLY($arg)";
tryit "&Internals::SvREFCNT($arg)";
tryit "&Internals::hv_clear_placeholders($arg)";
-tryit "&Internals::HvREHASH($arg)";
----
Usage: Internals::SvREADONLY(SCALAR[, ON]) at (eval 1) line 1.
Usage: Internals::SvREFCNT(SCALAR[, REFCOUNT]) at (eval 2) line 1.
Usage: Internals::hv_clear_placeholders(hv) at (eval 3) line 1.
-Internals::HvREHASH $hashref at (eval 4) line 1.
====
}
diff --git a/gnu/usr.bin/perl/t/lib/warnings/2use b/gnu/usr.bin/perl/t/lib/warnings/2use
index e5a8103b810..c0d203a399d 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/2use
+++ b/gnu/usr.bin/perl/t/lib/warnings/2use
@@ -358,3 +358,22 @@ $a =+ 1 ;
EXPECT
Reversed += operator at - line 6.
Use of uninitialized value $c in scalar chop at - line 9.
+########
+
+# Check that deprecation warnings are not implicitly disabled by use
+$*;
+use warnings "void";
+$#;
+EXPECT
+$* is no longer supported at - line 3.
+$# is no longer supported at - line 5.
+Useless use of a variable in void context at - line 5.
+########
+
+# Check that deprecation warnings are not implicitly disabled by no
+$*;
+no warnings "void";
+$#;
+EXPECT
+$* is no longer supported at - line 3.
+$# is no longer supported at - line 5.
diff --git a/gnu/usr.bin/perl/t/lib/warnings/9uninit b/gnu/usr.bin/perl/t/lib/warnings/9uninit
index 37e24e73859..829e2de8386 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/9uninit
+++ b/gnu/usr.bin/perl/t/lib/warnings/9uninit
@@ -820,6 +820,7 @@ undef $g1;
$m1 = '$g1';
$foo =~ s//$m1/ee;
EXPECT
+Use of my $_ is experimental at - line 16.
Use of uninitialized value $_ in pattern match (m//) at - line 5.
Use of uninitialized value $m1 in regexp compilation at - line 6.
Use of uninitialized value $_ in pattern match (m//) at - line 6.
@@ -830,9 +831,8 @@ Use of uninitialized value $m1 in regexp compilation at - line 10.
Use of uninitialized value $_ in substitution (s///) at - line 10.
Use of uninitialized value $_ in substitution (s///) at - line 10.
Use of uninitialized value $_ in substitution (s///) at - line 11.
-Use of uninitialized value $g1 in substitution (s///) at - line 11.
Use of uninitialized value $_ in substitution (s///) at - line 11.
-Use of uninitialized value $g1 in substitution (s///) at - line 11.
+Use of uninitialized value $g1 in substitution iterator at - line 11.
Use of uninitialized value $m1 in regexp compilation at - line 12.
Use of uninitialized value $_ in substitution (s///) at - line 12.
Use of uninitialized value $_ in substitution (s///) at - line 12.
@@ -849,9 +849,8 @@ Use of uninitialized value $m1 in regexp compilation at - line 21.
Use of uninitialized value $_ in substitution (s///) at - line 21.
Use of uninitialized value $_ in substitution (s///) at - line 21.
Use of uninitialized value $_ in substitution (s///) at - line 22.
-Use of uninitialized value $g1 in substitution (s///) at - line 22.
Use of uninitialized value $_ in substitution (s///) at - line 22.
-Use of uninitialized value $g1 in substitution (s///) at - line 22.
+Use of uninitialized value $g1 in substitution iterator at - line 22.
Use of uninitialized value $m1 in regexp compilation at - line 23.
Use of uninitialized value $_ in substitution (s///) at - line 23.
Use of uninitialized value $_ in substitution (s///) at - line 23.
@@ -868,9 +867,8 @@ Use of uninitialized value $m1 in regexp compilation at - line 31.
Use of uninitialized value $g2 in substitution (s///) at - line 31.
Use of uninitialized value $g2 in substitution (s///) at - line 31.
Use of uninitialized value $g2 in substitution (s///) at - line 32.
-Use of uninitialized value $g1 in substitution (s///) at - line 32.
Use of uninitialized value $g2 in substitution (s///) at - line 32.
-Use of uninitialized value $g1 in substitution (s///) at - line 32.
+Use of uninitialized value $g1 in substitution iterator at - line 32.
Use of uninitialized value $m1 in regexp compilation at - line 33.
Use of uninitialized value $g2 in substitution (s///) at - line 33.
Use of uninitialized value $g2 in substitution (s///) at - line 33.
@@ -880,10 +878,10 @@ Use of uninitialized value in transliteration (tr///) at - line 35.
Use of uninitialized value $m1 in regexp compilation at - line 38.
Use of uninitialized value $g1 in regexp compilation at - line 39.
Use of uninitialized value $m1 in regexp compilation at - line 41.
-Use of uninitialized value $g1 in substitution (s///) at - line 42.
+Use of uninitialized value $g1 in substitution iterator at - line 42.
Use of uninitialized value $m1 in regexp compilation at - line 43.
Use of uninitialized value $g1 in substitution iterator at - line 43.
-Use of uninitialized value $m1 in substitution iterator at - line 44.
+Use of uninitialized value $m1 in substitution (s///) at - line 44.
Use of uninitialized value in substitution iterator at - line 47.
########
use warnings 'uninitialized';
@@ -1035,7 +1033,6 @@ Use of uninitialized value $g1 in vec at - line 11.
Use of uninitialized value $m1 in vec at - line 11.
Use of uninitialized value $m2 in vec at - line 12.
Use of uninitialized value $g1 in vec at - line 12.
-Use of uninitialized value $m1 in vec at - line 12.
Use of uninitialized value $m1 in index at - line 14.
Use of uninitialized value $m2 in index at - line 14.
Use of uninitialized value $g1 in index at - line 15.
@@ -1144,8 +1141,8 @@ our @foo3=(1,undef); chop @foo3;
my @foo4=(1,undef); chop @foo4;
our @foo5=(1,undef); $v = sprintf "%s%s",@foo5;
my @foo6=(1,undef); $v = sprintf "%s%s",@foo6;
-our %foo7=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s",%foo7;
-my %foo8=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s",%foo8;
+our %foo7=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s%s%s",%foo7;
+my %foo8=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s%s%s",%foo8;
our @foo9 =(1,undef); $v = sprintf "%s%s%s%s",$m1,@foo9, $ma[2];
my @foo10=(1,undef); $v = sprintf "%s%s%s%s",$m2,@foo10,$ma[2];
our %foo11=('foo'=>'bar','baz'=>undef); $v = join '', %foo11;
@@ -1226,8 +1223,6 @@ Use of uninitialized value $m1 in splice at - line 10.
Use of uninitialized value $g1 in splice at - line 10.
Use of uninitialized value in addition (+) at - line 10.
Use of uninitialized value $m1 in method lookup at - line 13.
-Use of uninitialized value in subroutine entry at - line 15.
-Use of uninitialized value in subroutine entry at - line 16.
Use of uninitialized value $m1 in warn at - line 18.
Use of uninitialized value $g1 in warn at - line 18.
foo at - line 18.
@@ -1962,7 +1957,7 @@ $v = 1 + prototype $fn;
EXPECT
Use of uninitialized value in addition (+) at - line 4.
########
-use warnings 'uninitialized';
+use warnings 'uninitialized'; no warnings 'experimental::smartmatch';
my $v;
my $fn = sub {};
$v = 1 + (1 ~~ $fn);
@@ -2037,3 +2032,58 @@ use warnings 'uninitialized';
"@{[ $x ]}";
EXPECT
Use of uninitialized value in join or string at - line 3.
+########
+# inside formats
+use warnings 'uninitialized';
+my $x;
+format =
+@
+"$x";
+.
+write;
+EXPECT
+Use of uninitialized value $x in string at - line 6.
+########
+# NAME off-by-one error in hash bucket walk in key detection logic
+use warnings 'uninitialized';
+
+for ( 0 .. 20 ) { # we assume that this means we test keys for every bucket
+ my %h= ( $_ => undef );
+ my $s= sprintf "%s", $h{$_};
+}
+EXPECT
+Use of uninitialized value $h{"0"} in sprintf at - line 5.
+Use of uninitialized value $h{"1"} in sprintf at - line 5.
+Use of uninitialized value $h{"2"} in sprintf at - line 5.
+Use of uninitialized value $h{"3"} in sprintf at - line 5.
+Use of uninitialized value $h{"4"} in sprintf at - line 5.
+Use of uninitialized value $h{"5"} in sprintf at - line 5.
+Use of uninitialized value $h{"6"} in sprintf at - line 5.
+Use of uninitialized value $h{"7"} in sprintf at - line 5.
+Use of uninitialized value $h{"8"} in sprintf at - line 5.
+Use of uninitialized value $h{"9"} in sprintf at - line 5.
+Use of uninitialized value $h{"10"} in sprintf at - line 5.
+Use of uninitialized value $h{"11"} in sprintf at - line 5.
+Use of uninitialized value $h{"12"} in sprintf at - line 5.
+Use of uninitialized value $h{"13"} in sprintf at - line 5.
+Use of uninitialized value $h{"14"} in sprintf at - line 5.
+Use of uninitialized value $h{"15"} in sprintf at - line 5.
+Use of uninitialized value $h{"16"} in sprintf at - line 5.
+Use of uninitialized value $h{"17"} in sprintf at - line 5.
+Use of uninitialized value $h{"18"} in sprintf at - line 5.
+Use of uninitialized value $h{"19"} in sprintf at - line 5.
+Use of uninitialized value $h{"20"} in sprintf at - line 5.
+########
+# NAME SvPOK && SvLEN==0 should not produce uninit warning
+use warnings 'uninitialized';
+
+$v = int(${qr||}); # sv_2iv on a regexp
+$v = 1.1 * ${qr||}; # sv_2nv on a regexp
+$v = ${qr||} << 2; # sv_2uv on a regexp
+
+sub TIESCALAR{bless[]}
+sub FETCH {${qr||}}
+tie $t, "";
+$v = 1.1 * $t; # sv_2nv on a tied regexp
+
+EXPECT
diff --git a/gnu/usr.bin/perl/t/lib/warnings/doio b/gnu/usr.bin/perl/t/lib/warnings/doio
index 732f66d3184..37b55e3e770 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/doio
+++ b/gnu/usr.bin/perl/t/lib/warnings/doio
@@ -159,10 +159,16 @@ Unsuccessful stat on filename containing newline at - line 4.
# doio.c [Perl_my_stat]
use warnings 'io';
-l STDIN;
+-l $fh;
+open $fh, $0 or die "# $!";
+-l $fh;
no warnings 'io';
-l STDIN;
+-l $fh;
+close $fh;
EXPECT
Use of -l on filehandle STDIN at - line 3.
+Use of -l on filehandle $fh at - line 6.
########
# doio.c [Perl_my_stat]
use utf8;
diff --git a/gnu/usr.bin/perl/t/lib/warnings/gv b/gnu/usr.bin/perl/t/lib/warnings/gv
index 6101f691320..6b022e1294c 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/gv
+++ b/gnu/usr.bin/perl/t/lib/warnings/gv
@@ -63,6 +63,56 @@ $# is no longer supported at - line 2.
$* is no longer supported at - line 3.
########
# gv.c
+$a = ${#};
+$a = ${*};
+no warnings 'deprecated' ;
+$a = ${#};
+$a = ${*};
+EXPECT
+$# is no longer supported at - line 2.
+$* is no longer supported at - line 3.
+########
+# gv.c
+$a = $#;
+$a = $*;
+$# = $a;
+$* = $a;
+$a = \$#;
+$a = \$*;
+no warnings 'deprecated' ;
+$a = $#;
+$a = $*;
+$# = $a;
+$* = $a;
+$a = \$#;
+$a = \$*;
+EXPECT
+$# is no longer supported at - line 2.
+$* is no longer supported at - line 3.
+$# is no longer supported at - line 4.
+$* is no longer supported at - line 5.
+$# is no longer supported at - line 6.
+$* is no longer supported at - line 7.
+########
+# gv.c
+@a = @#;
+@a = @*;
+$a = $#;
+$a = $*;
+EXPECT
+$# is no longer supported at - line 4.
+$* is no longer supported at - line 5.
+########
+# gv.c
+$a = $#;
+$a = $*;
+@a = @#;
+@a = @*;
+EXPECT
+$# is no longer supported at - line 2.
+$* is no longer supported at - line 3.
+########
+# gv.c
use warnings 'syntax' ;
use utf8;
use open qw( :utf8 :std );
diff --git a/gnu/usr.bin/perl/t/lib/warnings/op b/gnu/usr.bin/perl/t/lib/warnings/op
index de74d2e3604..83d3705f560 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/op
+++ b/gnu/usr.bin/perl/t/lib/warnings/op
@@ -1,5 +1,8 @@
op.c AOK
+ Use of my $_ is experimental
+ my $_ ;
+
Found = in conditional, should be ==
1 if $a = 1 ;
@@ -73,6 +76,8 @@
(Maybe you should just omit the defined()?)
my %h ; defined %h ;
+ "my %s" used in sort comparison
+
$[ used in comparison (did you mean $] ?)
length() used on @array (did you mean "scalar(@array)"?)
@@ -97,18 +102,33 @@
sub fred() ;
sub fred($) {}
- Runaway prototype [newSUB] TODO
oops: oopsAV [oopsAV] TODO
oops: oopsHV [oopsHV] TODO
__END__
# op.c
+use warnings 'experimental::lexical_topic' ;
+my $_;
+CORE::state $_;
+no warnings 'experimental::lexical_topic' ;
+my $_;
+CORE::state $_;
+EXPECT
+Use of my $_ is experimental at - line 3.
+Use of state $_ is experimental at - line 4.
+########
+# op.c
use warnings 'syntax' ;
1 if $a = 1 ;
+1 if $a
+ = 1 ;
no warnings 'syntax' ;
1 if $a = 1 ;
+1 if $a
+ = 1 ;
EXPECT
Found = in conditional, should be == at - line 3.
+Found = in conditional, should be == at - line 4.
########
# op.c
use warnings 'syntax' ;
@@ -148,8 +168,10 @@ Using an array as a reference is deprecated at - line 9.
Using an array as a reference is deprecated at - line 10.
########
# op.c
-use warnings 'void' ; close STDIN ;
-1 x 3 ; # OP_REPEAT
+use warnings 'void' ; no warnings 'experimental::smartmatch'; close STDIN ;
+#line 2
+1 x 3 ; # OP_REPEAT (folded)
+(1) x 3 ; # OP_REPEAT
# OP_GVSV
wantarray ; # OP_WANTARRAY
# OP_GV
@@ -206,6 +228,7 @@ $a <=> $b; # OP_NCMP
use 5.015;
__SUB__ # OP_RUNCV
EXPECT
+Useless use of a constant ("111") in void context at - line 2.
Useless use of repeat (x) in void context at - line 3.
Useless use of wantarray in void context at - line 5.
Useless use of reference-type operator in void context at - line 12.
@@ -660,28 +683,43 @@ Bareword found in conditional at - line 3.
use warnings 'misc' ;
open FH, "<abc" ;
$x = 1 if $x = <FH> ;
+$x = 1 if $x
+ = <FH> ;
no warnings 'misc' ;
$x = 1 if $x = <FH> ;
+$x = 1 if $x
+ = <FH> ;
EXPECT
Value of <HANDLE> construct can be "0"; test with defined() at - line 4.
+Value of <HANDLE> construct can be "0"; test with defined() at - line 5.
########
# op.c
use warnings 'misc' ;
opendir FH, "." ;
$x = 1 if $x = readdir FH ;
+$x = 1 if $x
+ = readdir FH ;
no warnings 'misc' ;
$x = 1 if $x = readdir FH ;
+$x = 1 if $x
+ = readdir FH ;
closedir FH ;
EXPECT
Value of readdir() operator can be "0"; test with defined() at - line 4.
+Value of readdir() operator can be "0"; test with defined() at - line 5.
########
# op.c
use warnings 'misc' ;
$x = 1 if $x = <*> ;
+$x = 1 if $x
+ = <*> ;
no warnings 'misc' ;
$x = 1 if $x = <*> ;
+$x = 1 if $x
+ = <*> ;
EXPECT
Value of glob construct can be "0"; test with defined() at - line 3.
+Value of glob construct can be "0"; test with defined() at - line 4.
########
# op.c
use warnings 'misc' ;
@@ -722,10 +760,15 @@ EXPECT
use warnings 'redefine' ;
sub fred {}
sub fred {}
+sub fred { # warning should be for this line
+}
no warnings 'redefine' ;
sub fred {}
+sub fred {
+}
EXPECT
Subroutine fred redefined at - line 4.
+Subroutine fred redefined at - line 5.
########
# op.c
use warnings 'redefine' ;
@@ -749,6 +792,28 @@ EXPECT
Constant subroutine main::fred redefined at - line 3.
########
# op.c
+use feature "lexical_subs", "state";
+my sub fred () { 1 }
+sub fred { 2 };
+my sub george { 1 }
+sub george () { 2 } # should *not* produce redef warnings by default
+state sub phred () { 1 }
+sub phred { 2 };
+state sub jorge { 1 }
+sub jorge () { 2 } # should *not* produce redef warnings by default
+EXPECT
+The lexical_subs feature is experimental at - line 3.
+Prototype mismatch: sub fred () vs none at - line 4.
+Constant subroutine fred redefined at - line 4.
+The lexical_subs feature is experimental at - line 5.
+Prototype mismatch: sub george: none vs () at - line 6.
+The lexical_subs feature is experimental at - line 7.
+Prototype mismatch: sub phred () vs none at - line 8.
+Constant subroutine phred redefined at - line 8.
+The lexical_subs feature is experimental at - line 9.
+Prototype mismatch: sub jorge: none vs () at - line 10.
+########
+# op.c
no warnings 'redefine' ;
sub fred () { 1 }
sub fred () { 2 }
@@ -840,8 +905,13 @@ EXPECT
# op.c
sub fred();
sub fred($) {}
+use constant foo=>bar; sub foo(@);
+use constant bav=>bar; sub bav(); # no warning
+sub btu; sub btu();
EXPECT
Prototype mismatch: sub main::fred () vs ($) at - line 3.
+Prototype mismatch: sub foo () vs (@) at - line 4.
+Prototype mismatch: sub btu: none vs () at - line 6.
########
# op.c
use utf8;
@@ -926,6 +996,116 @@ Prototype mismatch: sub main::fred () vs ($) at - line 4.
Prototype mismatch: sub main::freD () vs ($) at - line 11.
Prototype mismatch: sub main::FRED () vs ($) at - line 14.
########
+# op.c [S_simplify_sort]
+# [perl #86136]
+my @tests = split /^/, '
+ sort {$a <=> $b} @a;
+ sort {$a cmp $b} @a;
+ { use integer; sort {$a <=> $b} @a}
+ sort {$b <=> $a} @a;
+ sort {$b cmp $a} @a;
+ { use integer; sort {$b <=> $a} @a}
+';
+for my $pragma ('use warnings "syntax";', '') {
+ for my $vars ('', 'my $a;', 'my $b;', 'my ($a,$b);') {
+ for my $inner_stmt ('', 'print;', 'func();') {
+ eval "#line " . ++$line . "01 -\n$pragma\n$vars"
+ . join "", map s/sort \{\K/$inner_stmt/r, @tests;
+ $@ and die;
+ }
+ }
+}
+sub func{}
+use warnings 'syntax';
+my $a;
+# These used to be errors!
+sort { ; } $a <=> $b;
+sort { ; } $a, "<=>";
+sort { ; } $a, $cmp;
+sort $a, $b if $cmpany_name;
+sort if $a + $cmp;
+sort @t; $a + $cmp;
+EXPECT
+"my $a" used in sort comparison at - line 403.
+"my $a" used in sort comparison at - line 404.
+"my $a" used in sort comparison at - line 405.
+"my $a" used in sort comparison at - line 406.
+"my $a" used in sort comparison at - line 407.
+"my $a" used in sort comparison at - line 408.
+"my $a" used in sort comparison at - line 503.
+"my $a" used in sort comparison at - line 504.
+"my $a" used in sort comparison at - line 505.
+"my $a" used in sort comparison at - line 506.
+"my $a" used in sort comparison at - line 507.
+"my $a" used in sort comparison at - line 508.
+"my $a" used in sort comparison at - line 603.
+"my $a" used in sort comparison at - line 604.
+"my $a" used in sort comparison at - line 605.
+"my $a" used in sort comparison at - line 606.
+"my $a" used in sort comparison at - line 607.
+"my $a" used in sort comparison at - line 608.
+"my $b" used in sort comparison at - line 703.
+"my $b" used in sort comparison at - line 704.
+"my $b" used in sort comparison at - line 705.
+"my $b" used in sort comparison at - line 706.
+"my $b" used in sort comparison at - line 707.
+"my $b" used in sort comparison at - line 708.
+"my $b" used in sort comparison at - line 803.
+"my $b" used in sort comparison at - line 804.
+"my $b" used in sort comparison at - line 805.
+"my $b" used in sort comparison at - line 806.
+"my $b" used in sort comparison at - line 807.
+"my $b" used in sort comparison at - line 808.
+"my $b" used in sort comparison at - line 903.
+"my $b" used in sort comparison at - line 904.
+"my $b" used in sort comparison at - line 905.
+"my $b" used in sort comparison at - line 906.
+"my $b" used in sort comparison at - line 907.
+"my $b" used in sort comparison at - line 908.
+"my $a" used in sort comparison at - line 1003.
+"my $b" used in sort comparison at - line 1003.
+"my $a" used in sort comparison at - line 1004.
+"my $b" used in sort comparison at - line 1004.
+"my $a" used in sort comparison at - line 1005.
+"my $b" used in sort comparison at - line 1005.
+"my $b" used in sort comparison at - line 1006.
+"my $a" used in sort comparison at - line 1006.
+"my $b" used in sort comparison at - line 1007.
+"my $a" used in sort comparison at - line 1007.
+"my $b" used in sort comparison at - line 1008.
+"my $a" used in sort comparison at - line 1008.
+"my $a" used in sort comparison at - line 1103.
+"my $b" used in sort comparison at - line 1103.
+"my $a" used in sort comparison at - line 1104.
+"my $b" used in sort comparison at - line 1104.
+"my $a" used in sort comparison at - line 1105.
+"my $b" used in sort comparison at - line 1105.
+"my $b" used in sort comparison at - line 1106.
+"my $a" used in sort comparison at - line 1106.
+"my $b" used in sort comparison at - line 1107.
+"my $a" used in sort comparison at - line 1107.
+"my $b" used in sort comparison at - line 1108.
+"my $a" used in sort comparison at - line 1108.
+"my $a" used in sort comparison at - line 1203.
+"my $b" used in sort comparison at - line 1203.
+"my $a" used in sort comparison at - line 1204.
+"my $b" used in sort comparison at - line 1204.
+"my $a" used in sort comparison at - line 1205.
+"my $b" used in sort comparison at - line 1205.
+"my $b" used in sort comparison at - line 1206.
+"my $a" used in sort comparison at - line 1206.
+"my $b" used in sort comparison at - line 1207.
+"my $a" used in sort comparison at - line 1207.
+"my $b" used in sort comparison at - line 1208.
+"my $a" used in sort comparison at - line 1208.
+########
+# op.c [S_simplify_sort]
+use warnings 'syntax'; use 5.01;
+state $a;
+sort { $a <=> $b } ();
+EXPECT
+"state $a" used in sort comparison at - line 4.
+########
# op.c [Perl_ck_cmp]
use warnings 'syntax' ;
no warnings 'deprecated';
@@ -1360,3 +1540,24 @@ sub ᚠርƊ () { 1 }
EXPECT
Constant subroutine main::ᚠርƊ redefined at - line 5.
########
+# OPTION regex
+sub DynaLoader::dl_error {};
+use warnings;
+# We're testing that the warnings report the same line number:
+eval <<'EOC' or die $@;
+{
+ DynaLoader::boot_DynaLoader("DynaLoader");
+}
+EOC
+eval <<'EOC' or die $@;
+BEGIN {
+ DynaLoader::boot_DynaLoader("DynaLoader");
+}
+1
+EOC
+EXPECT
+OPTION regex
+\ASubroutine DynaLoader::dl_error redefined at \(eval 1\) line 2\.
+?(?s).*
+Subroutine DynaLoader::dl_error redefined at \(eval 2\) line 2\.
+########
diff --git a/gnu/usr.bin/perl/t/lib/warnings/pad b/gnu/usr.bin/perl/t/lib/warnings/pad
index b226239ab1b..03c4ddb7c06 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/pad
+++ b/gnu/usr.bin/perl/t/lib/warnings/pad
@@ -173,7 +173,7 @@ sub {
}->();
f();
EXPECT
-Variable "$x" is not available at (eval 1) line 2.
+Variable "$x" is not available at (eval 1) line 1.
########
# pad.c
use warnings 'closure' ;
@@ -195,7 +195,7 @@ sub f {
}
f()->();
EXPECT
-Variable "$x" is not available at (eval 1) line 2.
+Variable "$x" is not available at (eval 1) line 1.
########
use warnings 'closure' ;
{
@@ -205,7 +205,7 @@ use warnings 'closure' ;
}
f2();
EXPECT
-Variable "$x" is not available at (eval 1) line 2.
+Variable "$x" is not available at (eval 1) line 1.
########
use warnings 'closure' ;
for my $x (1,2,3) {
@@ -214,7 +214,7 @@ for my $x (1,2,3) {
}
f();
EXPECT
-Variable "$x" is not available at (eval 4) line 2.
+Variable "$x" is not available at (eval 4) line 1.
########
# pad.c
no warnings 'closure' ;
@@ -433,7 +433,7 @@ sub {
}->();
f();
EXPECT
-Variable "$ã«" is not available at (eval 1) line 2.
+Variable "$ã«" is not available at (eval 1) line 1.
########
# pad.c
# see bugid 1754
@@ -446,7 +446,7 @@ sub f {
}
f()->();
EXPECT
-Variable "$ã«" is not available at (eval 1) line 2.
+Variable "$ã«" is not available at (eval 1) line 1.
########
use warnings 'closure' ;
BEGIN { binmode STDERR, 'utf8'; }
@@ -458,7 +458,7 @@ BEGIN { binmode STDERR, 'utf8'; }
}
f2();
EXPECT
-Variable "$ã«" is not available at (eval 1) line 2.
+Variable "$ã«" is not available at (eval 1) line 1.
########
use warnings 'closure' ;
BEGIN { binmode STDERR, 'utf8'; }
@@ -469,7 +469,7 @@ for my $ã« (1,2,3) {
}
f();
EXPECT
-Variable "$ã«" is not available at (eval 4) line 2.
+Variable "$ã«" is not available at (eval 4) line 1.
########
# pad.c
use warnings 'closure' ;
@@ -534,7 +534,7 @@ sub {
}->();
f();
EXPECT
-Variable "$è" is not available at (eval 1) line 2.
+Variable "$è" is not available at (eval 1) line 1.
########
# pad.c
# see bugid 1754
@@ -547,7 +547,7 @@ sub f {
}
f()->();
EXPECT
-Variable "$è" is not available at (eval 1) line 2.
+Variable "$è" is not available at (eval 1) line 1.
########
use warnings 'closure' ;
BEGIN { binmode STDERR, 'utf8'; }
@@ -559,7 +559,7 @@ BEGIN { binmode STDERR, 'utf8'; }
}
f2();
EXPECT
-Variable "$è" is not available at (eval 1) line 2.
+Variable "$è" is not available at (eval 1) line 1.
########
use warnings 'closure' ;
BEGIN { binmode STDERR, 'utf8'; }
@@ -570,5 +570,5 @@ for my $è (1,2,3) {
}
f();
EXPECT
-Variable "$è" is not available at (eval 4) line 2.
+Variable "$è" is not available at (eval 4) line 1.
########
diff --git a/gnu/usr.bin/perl/t/lib/warnings/perl b/gnu/usr.bin/perl/t/lib/warnings/perl
index f619cc6a249..a00ed62b395 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/perl
+++ b/gnu/usr.bin/perl/t/lib/warnings/perl
@@ -223,3 +223,9 @@ BEGIN { $^W = 1 }
$Å· = 3 ;
EXPECT
Name "ɕლȃṢȿ::ŷ" used only once: possible typo at - line 9.
+########
+
+use warnings 'once';
+$foo++; BEGIN { eval q|@a =~ s///; sub foo;| }
+EXPECT
+Name "main::foo" used only once: possible typo at - line 3.
diff --git a/gnu/usr.bin/perl/t/lib/warnings/perly b/gnu/usr.bin/perl/t/lib/warnings/perly
index d2b95607c00..c912c0ea3c3 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/perly
+++ b/gnu/usr.bin/perl/t/lib/warnings/perly
@@ -8,23 +8,6 @@
sub fred {} $a = "fred" ; do $a()
sub fred {} $a = "fred" ; do $a(1)
- Use of qw(...) as parentheses is deprecated
-
- if qw(a) {}
- unless qw(a) {}
- if (0) {} elsif qw(a) {}
- given qw(a) {}
- when qw(a) {}
- while qw(a) {}
- until qw(a) {}
- foreach $x qw(a b c) {}
- foreach my $x qw(a b c) {}
- $obj->meth qw(a b c)
- do foo qw(a b c)
- do $subref qw(a b c)
- &foo qw(a b c)
- $a[0] qw(a b c)
-
__END__
# perly.y
use warnings 'deprecated' ;
@@ -45,222 +28,3 @@ Use of "do" to call subroutines is deprecated at - line 4.
Use of "do" to call subroutines is deprecated at - line 5.
Use of "do" to call subroutines is deprecated at - line 7.
Use of "do" to call subroutines is deprecated at - line 8.
-########
-use warnings qw(deprecated void);
-if qw(a) { print "x0\n"; } else { }
-if qw(0) { print "x1\n"; } else { }
-if qw(z a) { print "x2\n"; } else { }
-if qw(z 0) { print "x3\n"; } else { }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-Use of qw(...) as parentheses is deprecated at - line 4.
-Useless use of a constant ("z") in void context at - line 4.
-Use of qw(...) as parentheses is deprecated at - line 5.
-Useless use of a constant ("z") in void context at - line 5.
-x0
-x2
-########
-if qw() { print "x0\n"; } else { }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 1.
-syntax error at - line 1, near "if qw()"
-Execution of - aborted due to compilation errors.
-########
-use warnings qw(deprecated void);
-unless qw(a) { print "x0\n"; } else { }
-unless qw(0) { print "x1\n"; } else { }
-unless qw(z a) { print "x2\n"; } else { }
-unless qw(z 0) { print "x3\n"; } else { }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-Use of qw(...) as parentheses is deprecated at - line 4.
-Useless use of a constant ("z") in void context at - line 4.
-Use of qw(...) as parentheses is deprecated at - line 5.
-Useless use of a constant ("z") in void context at - line 5.
-x1
-x3
-########
-unless qw() { print "x0\n"; } else { }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 1.
-syntax error at - line 1, near "unless qw()"
-Execution of - aborted due to compilation errors.
-########
-use warnings qw(deprecated void);
-if(0) { print "eek\n"; } elsif qw(a) { print "x0\n"; } else { }
-if(0) { print "eek\n"; } elsif qw(0) { print "x1\n"; } else { }
-if(0) { print "eek\n"; } elsif qw(z a) { print "x2\n"; } else { }
-if(0) { print "eek\n"; } elsif qw(z 0) { print "x3\n"; } else { }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-Use of qw(...) as parentheses is deprecated at - line 4.
-Useless use of a constant ("z") in void context at - line 4.
-Use of qw(...) as parentheses is deprecated at - line 5.
-Useless use of a constant ("z") in void context at - line 5.
-x0
-x2
-########
-if(0) { print "eek\n"; } elsif qw() { print "x0\n"; } else { }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 1.
-syntax error at - line 1, near "elsif qw()"
-Execution of - aborted due to compilation errors.
-########
-use warnings qw(deprecated void); use feature "switch";
-given qw(a) { print "x0 $_\n"; }
-given qw(z a) { print "x1 $_\n"; }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-Useless use of a constant ("z") in void context at - line 3.
-x0 a
-x1 a
-########
-use feature "switch";
-given qw() { print "x0\n"; }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-syntax error at - line 2, near "given qw()"
-Execution of - aborted due to compilation errors.
-########
-use warnings qw(deprecated void); use feature "switch";
-given("a") { when qw(a) { print "x0\n"; } }
-given("a") { when qw(b) { print "x1\n"; } }
-given("a") { when qw(z a) { print "x2\n"; } }
-given("a") { when qw(z b) { print "x3\n"; } }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-Use of qw(...) as parentheses is deprecated at - line 4.
-Useless use of a constant ("z") in void context at - line 4.
-Use of qw(...) as parentheses is deprecated at - line 5.
-Useless use of a constant ("z") in void context at - line 5.
-x0
-x2
-########
-use feature "switch";
-given("a") { when qw() { print "x0\n"; } }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-syntax error at - line 2, near "when qw()"
-syntax error at - line 2, near "} }"
-Execution of - aborted due to compilation errors.
-########
-use warnings qw(deprecated void);
-while qw(a) { print "x0\n"; last; } {;}
-while qw(0) { print "x1\n"; last; } {;}
-while qw(z a) { print "x2\n"; last; } {;}
-while qw(z 0) { print "x3\n"; last; } {;}
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-Use of qw(...) as parentheses is deprecated at - line 4.
-Useless use of a constant ("z") in void context at - line 4.
-Use of qw(...) as parentheses is deprecated at - line 5.
-Useless use of a constant ("z") in void context at - line 5.
-x0
-x2
-########
-while qw() { print "x0\n"; last; }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 1.
-x0
-########
-use warnings qw(deprecated void);
-until qw(a) { print "x0\n"; last; } {;}
-until qw(0) { print "x1\n"; last; } {;}
-until qw(z a) { print "x2\n"; last; } {;}
-until qw(z 0) { print "x3\n"; last; } {;}
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-Use of qw(...) as parentheses is deprecated at - line 4.
-Useless use of a constant ("z") in void context at - line 4.
-Use of qw(...) as parentheses is deprecated at - line 5.
-Useless use of a constant ("z") in void context at - line 5.
-x1
-x3
-########
-until qw() { print "x0\n"; } else { }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 1.
-syntax error at - line 1, near "until qw()"
-Execution of - aborted due to compilation errors.
-########
-foreach $x qw(a b c) { print $x, "\n"; }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 1.
-a
-b
-c
-########
-foreach $x qw() { print $x, "\n"; }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 1.
-syntax error at - line 1, near "$x qw()"
-Execution of - aborted due to compilation errors.
-########
-foreach my $x qw(a b c) { print $x, "\n"; }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 1.
-a
-b
-c
-########
-foreach my $x qw() { print $x, "\n"; }
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 1.
-syntax error at - line 1, near "$x qw()"
-Execution of - aborted due to compilation errors.
-########
-sub a5c85eef3bf30129e20989e96b099d13::foo { print "+", join(":", @_), "\n"; }
-"a5c85eef3bf30129e20989e96b099d13"->foo qw(); {;}
-"a5c85eef3bf30129e20989e96b099d13"->foo qw(a b c); {;}
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-+a5c85eef3bf30129e20989e96b099d13
-+a5c85eef3bf30129e20989e96b099d13:a:b:c
-########
-sub fd4de2af1449cec72693c36842d41862 { print "+", join(":", @_), "\n"; }
-do fd4de2af1449cec72693c36842d41862 qw(); {;}
-do fd4de2af1449cec72693c36842d41862 qw(a b c); {;}
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of "do" to call subroutines is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-Use of "do" to call subroutines is deprecated at - line 3.
-+
-+a:b:c
-########
-$subref = sub { print "+", join(":", @_), "\n"; };
-do $subref qw();
-do $subref qw(a b c);
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of "do" to call subroutines is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-Use of "do" to call subroutines is deprecated at - line 3.
-+
-+a:b:c
-########
-sub e293a8f7cb38880a48867fcb336448e5 { print "+", join(":", @_), "\n"; }
-&e293a8f7cb38880a48867fcb336448e5 qw();
-&e293a8f7cb38880a48867fcb336448e5 qw(a b c);
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-+
-+a:b:c
-########
-my @a = (sub { print "+", join(":", @_), "\n"; });
-$a[0] qw();
-$a[0] qw(a b c);
-EXPECT
-Use of qw(...) as parentheses is deprecated at - line 2.
-Use of qw(...) as parentheses is deprecated at - line 3.
-+
-+a:b:c
diff --git a/gnu/usr.bin/perl/t/lib/warnings/pp b/gnu/usr.bin/perl/t/lib/warnings/pp
index 89ebcbcbc47..ab8f9516518 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/pp
+++ b/gnu/usr.bin/perl/t/lib/warnings/pp
@@ -37,10 +37,16 @@ use warnings 'substr' ;
$a = "ab" ;
$b = \$a ;
substr($b, 1,1) = "ab" ;
+$b = \$a;
+substr($b, 1,1) = "\x{100}" ;
no warnings 'substr' ;
+$b = \$a;
substr($b, 1,1) = "ab" ;
+$b = \$a;
+substr($b, 1,1) = "\x{100}" ;
EXPECT
Attempt to use reference as lvalue in substr at - line 5.
+Attempt to use reference as lvalue in substr at - line 7.
########
# pp.c
use warnings 'misc' ;
diff --git a/gnu/usr.bin/perl/t/lib/warnings/pp_hot b/gnu/usr.bin/perl/t/lib/warnings/pp_hot
index 9ef68e01eba..ad63d2a935f 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/pp_hot
+++ b/gnu/usr.bin/perl/t/lib/warnings/pp_hot
@@ -61,6 +61,15 @@ EXPECT
print() on unopened filehandle abc at - line 4.
########
# pp_hot.c [pp_print]
+use warnings 'unopened' ;
+$SIG{__WARN__} = sub { warn $_[0] =~ s/\0/\\0/rug; };
+print {"a\0b"} "anc";
+print {"\0b"} "anc";
+EXPECT
+print() on unopened filehandle a\0b at - line 4.
+print() on unopened filehandle \0b at - line 5.
+########
+# pp_hot.c [pp_print]
use warnings 'io' ;
# There is no guarantee that STDOUT is output only, or STDIN input only.
# Certainly on some BSDs (at least FreeBSD, Darwin, BSDi) file descriptors
@@ -90,6 +99,24 @@ Filehandle FH opened only for input at - line 19.
Filehandle FOO opened only for input at - line 20.
########
# pp_hot.c [pp_print]
+$SIG{__WARN__} = sub { warn $_[0] =~ s/\0/\\0/rug; };
+use warnings 'io' ;
+my $file = "./xcv" ; unlink $file ;
+open (FH, ">$file") or die $! ;
+close FH or die $! ;
+die "There is no file $file" unless -f $file ;
+open ("a\0b", "<$file") or die $! ;
+print {"a\0b"} "anc" ;
+open ("\0b", "<$file") or die $! ;
+print {"\0b"} "anc" ;
+close "a\0b" or die $! ;
+close "\0b" or die $! ;
+unlink $file ;
+EXPECT
+Filehandle a\0b opened only for input at - line 9.
+Filehandle \0b opened only for input at - line 11.
+########
+# pp_hot.c [pp_print]
use warnings 'closed' ;
close STDIN ;
print STDIN "anc";
diff --git a/gnu/usr.bin/perl/t/lib/warnings/regcomp b/gnu/usr.bin/perl/t/lib/warnings/regcomp
index b435d2a1da6..19b6b06f6f4 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/regcomp
+++ b/gnu/usr.bin/perl/t/lib/warnings/regcomp
@@ -1,266 +1,3 @@
- regcomp.c AOK
-
- Quantifier unexpected on zero-length expression [S_study_chunk]
-
- Useless (%s%c) - %suse /%c modifier [S_reg]
- Useless (%sc) - %suse /gc modifier [S_reg]
-
-
-
- Strange *+?{} on zero-length expression [S_study_chunk]
- /(?=a)?/
-
- %.*s matches null string many times [S_regpiece]
- $a = "ABC123" ; $a =~ /(?=a)*/'
-
- /%.127s/: Unrecognized escape \\%c passed through [S_regatom]
- $x = '\m' ; /$x/
-
- POSIX syntax [%c %c] belongs inside character classes [S_checkposixcc]
-
-
- Character class [:%.*s:] unknown [S_regpposixcc]
-
- Character class syntax [%c %c] belongs inside character classes [S_checkposixcc]
-
- /%.127s/: false [] range \"%*.*s\" in regexp [S_regclass]
-
- /%.127s/: false [] range \"%*.*s\" in regexp [S_regclassutf8]
-
- /%.127s/: Unrecognized escape \\%c in character class passed through" [S_regclass]
-
- /%.127s/: Unrecognized escape \\%c in character class passed through" [S_regclassutf8]
-
- False [] range \"%*.*s\" [S_regclass]
+ regcomp.c These tests have been moved to t/re/reg_mesg.t
__END__
-# regcomp.c [S_regpiece]
-use warnings 'regexp' ;
-my $a = "ABC123" ;
-$a =~ /(?=a)*/ ;
-no warnings 'regexp' ;
-$a =~ /(?=a)*/ ;
-EXPECT
-(?=a)* matches null string many times in regex; marked by <-- HERE in m/(?=a)* <-- HERE / at - line 4.
-########
-# regcomp.c [S_regatom]
-$x = '\m' ;
-use warnings 'regexp' ;
-$a =~ /a$x/ ;
-no warnings 'regexp' ;
-$a =~ /a$x/ ;
-EXPECT
-Unrecognized escape \m passed through in regex; marked by <-- HERE in m/a\m <-- HERE / at - line 4.
-########
-# regcomp.c [S_regatom]
-# The \q should warn, the \_ should NOT warn.
-use warnings 'regexp';
-"foo" =~ /\q/;
-"foo" =~ /\q{/;
-"foo" =~ /a\b{cde/;
-"foo" =~ /a\B{cde/;
-"bar" =~ /\_/;
-no warnings 'regexp';
-"foo" =~ /\q/;
-"foo" =~ /\q{/;
-"foo" =~ /a\b{cde/;
-"foo" =~ /a\B{cde/;
-"bar" =~ /\_/;
-EXPECT
-Unrecognized escape \q passed through in regex; marked by <-- HERE in m/\q <-- HERE / at - line 4.
-Unrecognized escape \q{ passed through in regex; marked by <-- HERE in m/\q{ <-- HERE / at - line 5.
-"\b{" is deprecated; use "\b\{" instead in regex; marked by <-- HERE in m/a\ <-- HERE b{cde/ at - line 6.
-"\B{" is deprecated; use "\B\{" instead in regex; marked by <-- HERE in m/a\ <-- HERE B{cde/ at - line 7.
-########
-# regcomp.c [S_regpposixcc S_checkposixcc]
-#
-use warnings 'regexp' ;
-$_ = "" ;
-/[:alpha:]/;
-/[:zog:]/;
-no warnings 'regexp' ;
-/[:alpha:]/;
-/[:zog:]/;
-EXPECT
-POSIX syntax [: :] belongs inside character classes in regex; marked by <-- HERE in m/[:alpha:] <-- HERE / at - line 5.
-POSIX syntax [: :] belongs inside character classes in regex; marked by <-- HERE in m/[:zog:] <-- HERE / at - line 6.
-########
-# regcomp.c [S_checkposixcc]
-#
-use warnings 'regexp' ;
-$_ = "" ;
-/[.zog.]/;
-no warnings 'regexp' ;
-/[.zog.]/;
-EXPECT
-POSIX syntax [. .] belongs inside character classes in regex; marked by <-- HERE in m/[.zog.] <-- HERE / at - line 5.
-POSIX syntax [. .] is reserved for future extensions in regex; marked by <-- HERE in m/[.zog.] <-- HERE / at - line 5.
-########
-# regcomp.c [S_regclass]
-$_ = "";
-use warnings 'regexp' ;
-/[a-b]/;
-/[a-\d]/;
-/[\d-b]/;
-/[\s-\d]/;
-/[\d-\s]/;
-/[a-[:digit:]]/;
-/[[:digit:]-b]/;
-/[[:alpha:]-[:digit:]]/;
-/[[:digit:]-[:alpha:]]/;
-no warnings 'regexp' ;
-/[a-b]/;
-/[a-\d]/;
-/[\d-b]/;
-/[\s-\d]/;
-/[\d-\s]/;
-/[a-[:digit:]]/;
-/[[:digit:]-b]/;
-/[[:alpha:]-[:digit:]]/;
-/[[:digit:]-[:alpha:]]/;
-EXPECT
-False [] range "a-\d" in regex; marked by <-- HERE in m/[a-\d <-- HERE ]/ at - line 5.
-False [] range "\d-" in regex; marked by <-- HERE in m/[\d- <-- HERE b]/ at - line 6.
-False [] range "\s-" in regex; marked by <-- HERE in m/[\s- <-- HERE \d]/ at - line 7.
-False [] range "\d-" in regex; marked by <-- HERE in m/[\d- <-- HERE \s]/ at - line 8.
-False [] range "a-[:digit:]" in regex; marked by <-- HERE in m/[a-[:digit:] <-- HERE ]/ at - line 9.
-False [] range "[:digit:]-" in regex; marked by <-- HERE in m/[[:digit:]- <-- HERE b]/ at - line 10.
-False [] range "[:alpha:]-" in regex; marked by <-- HERE in m/[[:alpha:]- <-- HERE [:digit:]]/ at - line 11.
-False [] range "[:digit:]-" in regex; marked by <-- HERE in m/[[:digit:]- <-- HERE [:alpha:]]/ at - line 12.
-########
-# regcomp.c [S_regclassutf8]
-BEGIN {
- if (ord("\t") == 5) {
- print "SKIPPED\n# ebcdic regular expression ranges differ.";
- exit 0;
- }
-}
-use utf8;
-$_ = "";
-use warnings 'regexp' ;
-/[a-b]/;
-/[a-\d]/;
-/[\d-b]/;
-/[\s-\d]/;
-/[\d-\s]/;
-/[a-[:digit:]]/;
-/[[:digit:]-b]/;
-/[[:alpha:]-[:digit:]]/;
-/[[:digit:]-[:alpha:]]/;
-no warnings 'regexp' ;
-/[a-b]/;
-/[a-\d]/;
-/[\d-b]/;
-/[\s-\d]/;
-/[\d-\s]/;
-/[a-[:digit:]]/;
-/[[:digit:]-b]/;
-/[[:alpha:]-[:digit:]]/;
-/[[:digit:]-[:alpha:]]/;
-EXPECT
-False [] range "a-\d" in regex; marked by <-- HERE in m/[a-\d <-- HERE ]/ at - line 12.
-False [] range "\d-" in regex; marked by <-- HERE in m/[\d- <-- HERE b]/ at - line 13.
-False [] range "\s-" in regex; marked by <-- HERE in m/[\s- <-- HERE \d]/ at - line 14.
-False [] range "\d-" in regex; marked by <-- HERE in m/[\d- <-- HERE \s]/ at - line 15.
-False [] range "a-[:digit:]" in regex; marked by <-- HERE in m/[a-[:digit:] <-- HERE ]/ at - line 16.
-False [] range "[:digit:]-" in regex; marked by <-- HERE in m/[[:digit:]- <-- HERE b]/ at - line 17.
-False [] range "[:alpha:]-" in regex; marked by <-- HERE in m/[[:alpha:]- <-- HERE [:digit:]]/ at - line 18.
-False [] range "[:digit:]-" in regex; marked by <-- HERE in m/[[:digit:]- <-- HERE [:alpha:]]/ at - line 19.
-########
-# regcomp.c [S_regclass S_regclassutf8]
-use warnings 'regexp' ;
-$a =~ /[a\zb]/ ;
-no warnings 'regexp' ;
-$a =~ /[a\zb]/ ;
-EXPECT
-Unrecognized escape \z in character class passed through in regex; marked by <-- HERE in m/[a\z <-- HERE b]/ at - line 3.
-
-########
-# regcomp.c [S_reg]
-use warnings 'regexp' ;
-$a = qr/(?c)/;
-$a = qr/(?-c)/;
-$a = qr/(?g)/;
-$a = qr/(?-g)/;
-$a = qr/(?o)/;
-$a = qr/(?-o)/;
-$a = qr/(?g-o)/;
-$a = qr/(?g-c)/;
-$a = qr/(?o-cg)/; # (?c) means (?g) error won't be thrown
-$a = qr/(?ogc)/;
-no warnings 'regexp' ;
-$a = qr/(?c)/;
-$a = qr/(?-c)/;
-$a = qr/(?g)/;
-$a = qr/(?-g)/;
-$a = qr/(?o)/;
-$a = qr/(?-o)/;
-$a = qr/(?g-o)/;
-$a = qr/(?g-c)/;
-$a = qr/(?o-cg)/; # (?c) means (?g) error won't be thrown
-$a = qr/(?ogc)/;
-#EXPECT
-EXPECT
-Useless (?c) - use /gc modifier in regex; marked by <-- HERE in m/(?c <-- HERE )/ at - line 3.
-Useless (?-c) - don't use /gc modifier in regex; marked by <-- HERE in m/(?-c <-- HERE )/ at - line 4.
-Useless (?g) - use /g modifier in regex; marked by <-- HERE in m/(?g <-- HERE )/ at - line 5.
-Useless (?-g) - don't use /g modifier in regex; marked by <-- HERE in m/(?-g <-- HERE )/ at - line 6.
-Useless (?o) - use /o modifier in regex; marked by <-- HERE in m/(?o <-- HERE )/ at - line 7.
-Useless (?-o) - don't use /o modifier in regex; marked by <-- HERE in m/(?-o <-- HERE )/ at - line 8.
-Useless (?g) - use /g modifier in regex; marked by <-- HERE in m/(?g <-- HERE -o)/ at - line 9.
-Useless (?-o) - don't use /o modifier in regex; marked by <-- HERE in m/(?g-o <-- HERE )/ at - line 9.
-Useless (?g) - use /g modifier in regex; marked by <-- HERE in m/(?g <-- HERE -c)/ at - line 10.
-Useless (?-c) - don't use /gc modifier in regex; marked by <-- HERE in m/(?g-c <-- HERE )/ at - line 10.
-Useless (?o) - use /o modifier in regex; marked by <-- HERE in m/(?o <-- HERE -cg)/ at - line 11.
-Useless (?-c) - don't use /gc modifier in regex; marked by <-- HERE in m/(?o-c <-- HERE g)/ at - line 11.
-Useless (?o) - use /o modifier in regex; marked by <-- HERE in m/(?o <-- HERE gc)/ at - line 12.
-Useless (?g) - use /g modifier in regex; marked by <-- HERE in m/(?og <-- HERE c)/ at - line 12.
-Useless (?c) - use /gc modifier in regex; marked by <-- HERE in m/(?ogc <-- HERE )/ at - line 12.
-########
-# regcomp.c [S_regatom]
-$a = qr/\o{/;
-EXPECT
-Missing right brace on \o{ in regex; marked by <-- HERE in m/\o{ <-- HERE / at - line 2.
-########
-# regcomp.c [S_regatom]
-$a = qr/\o/;
-EXPECT
-Missing braces on \o{} in regex; marked by <-- HERE in m/\o <-- HERE / at - line 2.
-########
-# regcomp.c [S_regatom]
-$a = qr/\o{}/;
-EXPECT
-Number with no digits in regex; marked by <-- HERE in m/\o{} <-- HERE / at - line 2.
-########
-# regcomp.c [S_regclass]
-$a = qr/[\o{]/;
-EXPECT
-Missing right brace on \o{ in regex; marked by <-- HERE in m/[\o{ <-- HERE ]/ at - line 2.
-########
-# regcomp.c [S_regclass]
-$a = qr/[\o]/;
-EXPECT
-Missing braces on \o{} in regex; marked by <-- HERE in m/[\o <-- HERE ]/ at - line 2.
-########
-# regcomp.c [S_regclass]
-$a = qr/[\o{}]/;
-EXPECT
-Number with no digits in regex; marked by <-- HERE in m/[\o{} <-- HERE ]/ at - line 2.
-########
-# regcomp.c [S_regclass]
-use warnings 'regexp' ;
-$a = qr/[\8\9]/;
-$a = qr/[\_\0]/; # Should have no warnings on this and the remainder of this test
-$a = qr/[\07]/;
-$a = qr/[\006]/;
-$a = qr/[\0005]/;
-no warnings 'regexp' ;
-$a = qr/[\8\9]/;
-EXPECT
-Unrecognized escape \8 in character class passed through in regex; marked by <-- HERE in m/[\8 <-- HERE \9]/ at - line 3.
-Unrecognized escape \9 in character class passed through in regex; marked by <-- HERE in m/[\8\9 <-- HERE ]/ at - line 3.
-########
-# regcomp.c [Perl_re_compile]
-$a = qr/(?^-i:foo)/;
-EXPECT
-Sequence (?^-...) not recognized in regex; marked by <-- HERE in m/(?^- <-- HERE i:foo)/ at - line 2.
diff --git a/gnu/usr.bin/perl/t/lib/warnings/toke b/gnu/usr.bin/perl/t/lib/warnings/toke
index dd8dc3d517a..5ee3ad52109 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/toke
+++ b/gnu/usr.bin/perl/t/lib/warnings/toke
@@ -143,19 +143,39 @@ Use of comma-less variable list is deprecated at - line 4.
Use of comma-less variable list is deprecated at - line 4.
########
# toke.c
-$a =~ m/$foo/sand $bar;
-$a =~ s/$foo/fool/sand $bar;
$a = <<;
no warnings 'deprecated' ;
-$a =~ m/$foo/sand $bar;
-$a =~ s/$foo/fool/sand $bar;
$a = <<;
EXPECT
-Having no space between pattern and following word is deprecated at - line 2.
-Having no space between pattern and following word is deprecated at - line 3.
-Use of bare << to mean <<"" is deprecated at - line 4.
+Use of bare << to mean <<"" is deprecated at - line 2.
+########
+# toke.c
+$a =~ m/$foo/eq;
+$a =~ s/$foo/fool/seq;
+
+EXPECT
+OPTION fatal
+Unknown regexp modifier "/e" at - line 2, near "=~ "
+Unknown regexp modifier "/q" at - line 2, near "=~ "
+Unknown regexp modifier "/q" at - line 3, near "=~ "
+Execution of - aborted due to compilation errors.
+########
+# toke.c
+use utf8;
+use open qw( :utf8 :std );
+$a =~ m/$foo/eãƒq;
+$a =~ s/$foo/fool/seãƒq;
+
+EXPECT
+OPTION fatal
+Unknown regexp modifier "/e" at - line 4, near "=~ "
+Unknown regexp modifier "/ãƒ" at - line 4, near "=~ "
+Unknown regexp modifier "/q" at - line 4, near "=~ "
+Unknown regexp modifier "/ãƒ" at - line 5, near "=~ "
+Unknown regexp modifier "/q" at - line 5, near "=~ "
+Execution of - aborted due to compilation errors.
########
# toke.c
use warnings 'syntax' ;
@@ -662,6 +682,8 @@ yelp at foo line 30.
########
# toke.c
my $a = rand + 4 ;
+$a = rand *^H ;
+$a = rand $^H ;
EXPECT
Warning: Use of "rand" without parentheses is ambiguous at - line 2.
########
@@ -696,6 +718,8 @@ EXPECT
# toke.c
sub fred {};
-fred ;
+sub hank : lvalue {$_}
+--hank; # This should *not* warn [perl #77240]
EXPECT
Ambiguous use of -fred resolved as -&fred() at - line 3.
########
@@ -1063,7 +1087,7 @@ Number found where operator expected at (eval 1) line 1, near "5 6"
(Missing operator before 6?)
########
# toke.c
-use warnings "syntax";
+use warnings "syntax"; no warnings "deprecated";
$_ = $a = 1;
$a !=~ /1/;
$a !=~ m#1#;
@@ -1111,7 +1135,7 @@ Use of :locked is deprecated at - line 4.
Use of :locked is deprecated at - line 6.
########
# toke.c
-use warnings "syntax";
+use warnings "syntax"; use feature 'lexical_subs';
sub proto_after_array(@$);
sub proto_after_arref(\@$);
sub proto_after_arref2(\[@$]);
@@ -1123,6 +1147,14 @@ sub underscore_last_pos($_);
sub underscore2($_;$);
sub underscore_fail($_$);
sub underscore_after_at(@_);
+our sub hour (@$);
+my sub migh (@$);
+use feature 'state';
+state sub estate (@$);
+package other;
+sub hour (@$);
+sub migh (@$);
+sub estate (@$);
no warnings "syntax";
sub proto_after_array(@$);
sub proto_after_hash(%$);
@@ -1132,6 +1164,15 @@ Prototype after '@' for main::proto_after_array : @$ at - line 3.
Prototype after '%' for main::proto_after_hash : %$ at - line 7.
Illegal character after '_' in prototype for main::underscore_fail : $_$ at - line 12.
Prototype after '@' for main::underscore_after_at : @_ at - line 13.
+The lexical_subs feature is experimental at - line 14.
+Prototype after '@' for hour : @$ at - line 14.
+The lexical_subs feature is experimental at - line 15.
+Prototype after '@' for migh : @$ at - line 15.
+The lexical_subs feature is experimental at - line 17.
+Prototype after '@' for estate : @$ at - line 17.
+Prototype after '@' for hour : @$ at - line 19.
+Prototype after '@' for migh : @$ at - line 20.
+Prototype after '@' for estate : @$ at - line 21.
########
# toke.c
use warnings "ambiguous";
@@ -1250,3 +1291,45 @@ use warnings;
CORE::ë ;
EXPECT
CORE::ë  is not a keyword at - line 5.
+########
+# toke.c
+# [perl #16249]
+print '';
+eval this_method_is_fake ();
+EXPECT
+Undefined subroutine &main::this_method_is_fake called at - line 4.
+########
+# toke.c
+# [perl #107002] Erroneous ambiguity warnings
+sub { # do not actually call require
+ require a::b . 1; # These used to produce erroneous
+ require a::b + 1; # ambiguity warnings.
+}
+EXPECT
+########
+# toke.c
+# [perl #113094]
+print "aa" =~ m{^a\{1,2\}$}, "\n";
+print "aa" =~ m{^a\x\{61\}$}, "\n";
+print "aa" =~ m{^a{1,2}$}, "\n";
+print "aq" =~ m[^a\[a-z\]$], "\n";
+print "aq" =~ m(^a\(q\)$), "\n";
+no warnings 'deprecated';
+print "aa" =~ m{^a\{1,2\}$}, "\n";
+print "aa" =~ m{^a\x\{61\}$}, "\n";
+print "aq" =~ m[^a\[a-z\]$], "\n";
+print "aq" =~ m(^a\(q\)$), "\n";
+EXPECT
+Useless use of '\'; doesn't escape metacharacter '{' at - line 3.
+Useless use of '\'; doesn't escape metacharacter '{' at - line 4.
+Useless use of '\'; doesn't escape metacharacter '[' at - line 6.
+Useless use of '\'; doesn't escape metacharacter '(' at - line 7.
+1
+1
+1
+1
+q
+1
+1
+1
+q
diff --git a/gnu/usr.bin/perl/t/lib/warnings/utf8 b/gnu/usr.bin/perl/t/lib/warnings/utf8
index 603cfa0faf4..1274cf9f2f7 100644
--- a/gnu/usr.bin/perl/t/lib/warnings/utf8
+++ b/gnu/usr.bin/perl/t/lib/warnings/utf8
@@ -170,7 +170,283 @@ chr(0x10000) =~ /\p{Any}/;
chr(0x100000) =~ /\p{Any}/;
chr(0x10FFFE) =~ /\p{Any}/;
chr(0x10FFFF) =~ /\p{Any}/;
-chr(0x110000) =~ /\p{Any}/;
+chr(0x110000) =~ /[\w\p{Any}]/;
+chr(0x110010) =~ /[\w\p{PosixWord}]/;
+chr(0x110011) =~ /[\w\P{PosixWord}]/;
+chr(0x110012) =~ /[\w\p{XPosixWord}]/;
+chr(0x110013) =~ /[\w\P{XPosixWord}]/;
+chr(0x110014) =~ /[\w\p{PosixAlnum}]/;
+chr(0x110015) =~ /[\w\P{PosixAlnum}]/;
+chr(0x110016) =~ /[\w\p{XPosixAlnum}]/;
+chr(0x110017) =~ /[\w\P{XPosixAlnum}]/;
+chr(0x110018) =~ /[\w\p{PosixSpace}]/;
+chr(0x110019) =~ /[\w\P{PosixSpace}]/;
+chr(0x11001A) =~ /[\w\p{XPosixSpace}]/;
+chr(0x11001B) =~ /[\w\P{XPosixSpace}]/;
+chr(0x11001C) =~ /[\w\p{PosixDigit}]/;
+chr(0x11001D) =~ /[\w\P{PosixDigit}]/;
+chr(0x11001E) =~ /[\w\p{XPosixDigit}]/;
+chr(0x11001F) =~ /[\w\P{XPosixDigit}]/;
+chr(0x110020) =~ /[\w\p{PosixAlpha}]/;
+chr(0x110021) =~ /[\w\P{PosixAlpha}]/;
+chr(0x110022) =~ /[\w\p{XPosixAlpha}]/;
+chr(0x110023) =~ /[\w\P{XPosixAlpha}]/;
+chr(0x110024) =~ /[\w\p{Ascii}]/;
+chr(0x110025) =~ /[\w\P{Ascii}]/;
+chr(0x110026) =~ /[\w\p{PosixCntrl}]/;
+chr(0x110027) =~ /[\w\P{PosixCntrl}]/;
+chr(0x110028) =~ /[\w\p{XPosixCntrl}]/;
+chr(0x110029) =~ /[\w\P{XPosixCntrl}]/;
+chr(0x11002A) =~ /[\w\p{PosixGraph}]/;
+chr(0x11002B) =~ /[\w\P{PosixGraph}]/;
+chr(0x11002C) =~ /[\w\p{XPosixGraph}]/;
+chr(0x11002D) =~ /[\w\P{XPosixGraph}]/;
+chr(0x11002E) =~ /[\w\p{PosixLower}]/;
+chr(0x11002F) =~ /[\w\P{PosixLower}]/;
+chr(0x110030) =~ /[\w\p{XPosixLower}]/;
+chr(0x110031) =~ /[\w\P{XPosixLower}]/;
+chr(0x110032) =~ /[\w\p{PosixPrint}]/;
+chr(0x110033) =~ /[\w\P{PosixPrint}]/;
+chr(0x110034) =~ /[\w\p{XPosixPrint}]/;
+chr(0x110035) =~ /[\w\P{XPosixPrint}]/;
+chr(0x110036) =~ /[\w\p{PosixPunct}]/;
+chr(0x110037) =~ /[\w\P{PosixPunct}]/;
+chr(0x110038) =~ /[\w\p{XPosixPunct}]/;
+chr(0x110039) =~ /[\w\P{XPosixPunct}]/;
+chr(0x11003A) =~ /[\w\p{PosixUpper}]/;
+chr(0x11003B) =~ /[\w\P{PosixUpper}]/;
+chr(0x11003C) =~ /[\w\p{XPosixUpper}]/;
+chr(0x11003D) =~ /[\w\P{XPosixUpper}]/;
+chr(0x11003E) =~ /[\w\p{PosixXdigit}]/;
+chr(0x11003F) =~ /[\w\P{PosixXdigit}]/;
+chr(0x110040) =~ /[\w\p{XPosixXdigit}]/;
+chr(0x110041) =~ /[\w\P{XPosixXdigit}]/;
+chr(0x110042) =~ /[\w\p{PerlSpace}]/;
+chr(0x110043) =~ /[\w\P{PerlSpace}]/;
+chr(0x110044) =~ /[\w\p{XPerlSpace}]/;
+chr(0x110045) =~ /[\w\P{XPerlSpace}]/;
+chr(0x110046) =~ /[\w\p{PosixBlank}]/;
+chr(0x110047) =~ /[\w\P{PosixBlank}]/;
+chr(0x110048) =~ /[\w\p{XPosixBlank}]/;
+chr(0x110049) =~ /[\w\P{XPosixBlank}]/;
+# Currently some warnings from the above are output twice
+# Only Unicode properties give non-Unicode warnings, and not when something
+# else in the class matches above Unicode. Below we test three ways where
+# something outside the property may match non-Unicode: a code point above it,
+# a class \S that we know at compile time doesn't, and a class \W whose values
+# aren't (at the time of this writing) specified at compile time, but which
+# wouldn't match
+chr(0x110050) =~ /\w/;
+chr(0x110051) =~ /\W/;
+chr(0x110052) =~ /\d/;
+chr(0x110053) =~ /\D/;
+chr(0x110054) =~ /\s/;
+chr(0x110055) =~ /\S/;
+chr(0x110056) =~ /[[:word:]]/;
+chr(0x110057) =~ /[[:^word:]]/;
+chr(0x110058) =~ /[[:alnum:]]/;
+chr(0x110059) =~ /[[:^alnum:]]/;
+chr(0x11005A) =~ /[[:space:]]/;
+chr(0x11005B) =~ /[[:^space:]]/;
+chr(0x11005C) =~ /[[:digit:]]/;
+chr(0x11005D) =~ /[[:^digit:]]/;
+chr(0x11005E) =~ /[[:alpha:]]/;
+chr(0x11005F) =~ /[[:^alpha:]]/;
+chr(0x110060) =~ /[[:ascii:]]/;
+chr(0x110061) =~ /[[:^ascii:]]/;
+chr(0x110062) =~ /[[:cntrl:]]/;
+chr(0x110063) =~ /[[:^cntrl:]]/;
+chr(0x110064) =~ /[[:graph:]]/;
+chr(0x110065) =~ /[[:^graph:]]/;
+chr(0x110066) =~ /[[:lower:]]/;
+chr(0x110067) =~ /[[:^lower:]]/;
+chr(0x110068) =~ /[[:print:]]/;
+chr(0x110069) =~ /[[:^print:]]/;
+chr(0x11006A) =~ /[[:punct:]]/;
+chr(0x11006B) =~ /[[:^punct:]]/;
+chr(0x11006C) =~ /[[:upper:]]/;
+chr(0x11006D) =~ /[[:^upper:]]/;
+chr(0x11006E) =~ /[[:xdigit:]]/;
+chr(0x11006F) =~ /[[:^xdigit:]]/;
+chr(0x110070) =~ /[[:blank:]]/;
+chr(0x110071) =~ /[[:^blank:]]/;
+chr(0x111000) =~ /[\W\p{Any}]/;
+chr(0x111010) =~ /[\W\p{PosixWord}]/;
+chr(0x111011) =~ /[\W\P{PosixWord}]/;
+chr(0x111012) =~ /[\W\p{XPosixWord}]/;
+chr(0x111013) =~ /[\W\P{XPosixWord}]/;
+chr(0x111014) =~ /[\W\p{PosixAlnum}]/;
+chr(0x111015) =~ /[\W\P{PosixAlnum}]/;
+chr(0x111016) =~ /[\W\p{XPosixAlnum}]/;
+chr(0x111017) =~ /[\W\P{XPosixAlnum}]/;
+chr(0x111018) =~ /[\W\p{PosixSpace}]/;
+chr(0x111019) =~ /[\W\P{PosixSpace}]/;
+chr(0x11101A) =~ /[\W\p{XPosixSpace}]/;
+chr(0x11101B) =~ /[\W\P{XPosixSpace}]/;
+chr(0x11101C) =~ /[\W\p{PosixDigit}]/;
+chr(0x11101D) =~ /[\W\P{PosixDigit}]/;
+chr(0x11101E) =~ /[\W\p{XPosixDigit}]/;
+chr(0x11101F) =~ /[\W\P{XPosixDigit}]/;
+chr(0x111020) =~ /[\W\p{PosixAlpha}]/;
+chr(0x111021) =~ /[\W\P{PosixAlpha}]/;
+chr(0x111022) =~ /[\W\p{XPosixAlpha}]/;
+chr(0x111023) =~ /[\W\P{XPosixAlpha}]/;
+chr(0x111024) =~ /[\W\p{Ascii}]/;
+chr(0x111025) =~ /[\W\P{Ascii}]/;
+chr(0x111026) =~ /[\W\p{PosixCntrl}]/;
+chr(0x111027) =~ /[\W\P{PosixCntrl}]/;
+chr(0x111028) =~ /[\W\p{XPosixCntrl}]/;
+chr(0x111029) =~ /[\W\P{XPosixCntrl}]/;
+chr(0x11102A) =~ /[\W\p{PosixGraph}]/;
+chr(0x11102B) =~ /[\W\P{PosixGraph}]/;
+chr(0x11102C) =~ /[\W\p{XPosixGraph}]/;
+chr(0x11102D) =~ /[\W\P{XPosixGraph}]/;
+chr(0x11102E) =~ /[\W\p{PosixLower}]/;
+chr(0x11102F) =~ /[\W\P{PosixLower}]/;
+chr(0x111030) =~ /[\W\p{XPosixLower}]/;
+chr(0x111031) =~ /[\W\P{XPosixLower}]/;
+chr(0x111032) =~ /[\W\p{PosixPrint}]/;
+chr(0x111033) =~ /[\W\P{PosixPrint}]/;
+chr(0x111034) =~ /[\W\p{XPosixPrint}]/;
+chr(0x111035) =~ /[\W\P{XPosixPrint}]/;
+chr(0x111036) =~ /[\W\p{PosixPunct}]/;
+chr(0x111037) =~ /[\W\P{PosixPunct}]/;
+chr(0x111038) =~ /[\W\p{XPosixPunct}]/;
+chr(0x111039) =~ /[\W\P{XPosixPunct}]/;
+chr(0x11103A) =~ /[\W\p{PosixUpper}]/;
+chr(0x11103B) =~ /[\W\P{PosixUpper}]/;
+chr(0x11103C) =~ /[\W\p{XPosixUpper}]/;
+chr(0x11103D) =~ /[\W\P{XPosixUpper}]/;
+chr(0x11103E) =~ /[\W\p{PosixXdigit}]/;
+chr(0x11103F) =~ /[\W\P{PosixXdigit}]/;
+chr(0x111040) =~ /[\W\p{XPosixXdigit}]/;
+chr(0x111041) =~ /[\W\P{XPosixXdigit}]/;
+chr(0x111042) =~ /[\W\p{PerlSpace}]/;
+chr(0x111043) =~ /[\W\P{PerlSpace}]/;
+chr(0x111044) =~ /[\W\p{XPerlSpace}]/;
+chr(0x111045) =~ /[\W\P{XPerlSpace}]/;
+chr(0x111046) =~ /[\W\p{PosixBlank}]/;
+chr(0x111047) =~ /[\W\P{PosixBlank}]/;
+chr(0x111048) =~ /[\W\p{XPosixBlank}]/;
+chr(0x111049) =~ /[\W\P{XPosixBlank}]/;
+chr(0x112000) =~ /[\S\p{Any}]/;
+chr(0x112010) =~ /[\S\p{PosixWord}]/;
+chr(0x112011) =~ /[\S\P{PosixWord}]/;
+chr(0x112012) =~ /[\S\p{XPosixWord}]/;
+chr(0x112013) =~ /[\S\P{XPosixWord}]/;
+chr(0x112014) =~ /[\S\p{PosixAlnum}]/;
+chr(0x112015) =~ /[\S\P{PosixAlnum}]/;
+chr(0x112016) =~ /[\S\p{XPosixAlnum}]/;
+chr(0x112017) =~ /[\S\P{XPosixAlnum}]/;
+chr(0x112018) =~ /[\S\p{PosixSpace}]/;
+chr(0x112019) =~ /[\S\P{PosixSpace}]/;
+chr(0x11201A) =~ /[\S\p{XPosixSpace}]/;
+chr(0x11201B) =~ /[\S\P{XPosixSpace}]/;
+chr(0x11201C) =~ /[\S\p{PosixDigit}]/;
+chr(0x11201D) =~ /[\S\P{PosixDigit}]/;
+chr(0x11201E) =~ /[\S\p{XPosixDigit}]/;
+chr(0x11201F) =~ /[\S\P{XPosixDigit}]/;
+chr(0x112020) =~ /[\S\p{PosixAlpha}]/;
+chr(0x112021) =~ /[\S\P{PosixAlpha}]/;
+chr(0x112022) =~ /[\S\p{XPosixAlpha}]/;
+chr(0x112023) =~ /[\S\P{XPosixAlpha}]/;
+chr(0x112024) =~ /[\S\p{Ascii}]/;
+chr(0x112025) =~ /[\S\P{Ascii}]/;
+chr(0x112026) =~ /[\S\p{PosixCntrl}]/;
+chr(0x112027) =~ /[\S\P{PosixCntrl}]/;
+chr(0x112028) =~ /[\S\p{XPosixCntrl}]/;
+chr(0x112029) =~ /[\S\P{XPosixCntrl}]/;
+chr(0x11202A) =~ /[\S\p{PosixGraph}]/;
+chr(0x11202B) =~ /[\S\P{PosixGraph}]/;
+chr(0x11202C) =~ /[\S\p{XPosixGraph}]/;
+chr(0x11202D) =~ /[\S\P{XPosixGraph}]/;
+chr(0x11202E) =~ /[\S\p{PosixLower}]/;
+chr(0x11202F) =~ /[\S\P{PosixLower}]/;
+chr(0x112030) =~ /[\S\p{XPosixLower}]/;
+chr(0x112031) =~ /[\S\P{XPosixLower}]/;
+chr(0x112032) =~ /[\S\p{PosixPrint}]/;
+chr(0x112033) =~ /[\S\P{PosixPrint}]/;
+chr(0x112034) =~ /[\S\p{XPosixPrint}]/;
+chr(0x112035) =~ /[\S\P{XPosixPrint}]/;
+chr(0x112036) =~ /[\S\p{PosixPunct}]/;
+chr(0x112037) =~ /[\S\P{PosixPunct}]/;
+chr(0x112038) =~ /[\S\p{XPosixPunct}]/;
+chr(0x112039) =~ /[\S\P{XPosixPunct}]/;
+chr(0x11203A) =~ /[\S\p{PosixUpper}]/;
+chr(0x11203B) =~ /[\S\P{PosixUpper}]/;
+chr(0x11203C) =~ /[\S\p{XPosixUpper}]/;
+chr(0x11203D) =~ /[\S\P{XPosixUpper}]/;
+chr(0x11203E) =~ /[\S\p{PosixXdigit}]/;
+chr(0x11203F) =~ /[\S\P{PosixXdigit}]/;
+chr(0x112040) =~ /[\S\p{XPosixXdigit}]/;
+chr(0x112041) =~ /[\S\P{XPosixXdigit}]/;
+chr(0x112042) =~ /[\S\p{PerlSpace}]/;
+chr(0x112043) =~ /[\S\P{PerlSpace}]/;
+chr(0x112044) =~ /[\S\p{XPerlSpace}]/;
+chr(0x112045) =~ /[\S\P{XPerlSpace}]/;
+chr(0x112046) =~ /[\S\p{PosixBlank}]/;
+chr(0x112047) =~ /[\S\P{PosixBlank}]/;
+chr(0x112048) =~ /[\S\p{XPosixBlank}]/;
+chr(0x112049) =~ /[\S\P{XPosixBlank}]/;
+chr(0x113000) =~ /[\x{110000}\p{Any}]/;
+chr(0x113010) =~ /[\x{110000}\p{PosixWord}]/;
+chr(0x113011) =~ /[\x{110000}\P{PosixWord}]/;
+chr(0x113012) =~ /[\x{110000}\p{XPosixWord}]/;
+chr(0x113013) =~ /[\x{110000}\P{XPosixWord}]/;
+chr(0x113014) =~ /[\x{110000}\p{PosixAlnum}]/;
+chr(0x113015) =~ /[\x{110000}\P{PosixAlnum}]/;
+chr(0x113016) =~ /[\x{110000}\p{XPosixAlnum}]/;
+chr(0x113017) =~ /[\x{110000}\P{XPosixAlnum}]/;
+chr(0x113018) =~ /[\x{110000}\p{PosixSpace}]/;
+chr(0x113019) =~ /[\x{110000}\P{PosixSpace}]/;
+chr(0x11301A) =~ /[\x{110000}\p{XPosixSpace}]/;
+chr(0x11301B) =~ /[\x{110000}\P{XPosixSpace}]/;
+chr(0x11301C) =~ /[\x{110000}\p{PosixDigit}]/;
+chr(0x11301D) =~ /[\x{110000}\P{PosixDigit}]/;
+chr(0x11301E) =~ /[\x{110000}\p{XPosixDigit}]/;
+chr(0x11301F) =~ /[\x{110000}\P{XPosixDigit}]/;
+chr(0x113020) =~ /[\x{110000}\p{PosixAlpha}]/;
+chr(0x113021) =~ /[\x{110000}\P{PosixAlpha}]/;
+chr(0x113022) =~ /[\x{110000}\p{XPosixAlpha}]/;
+chr(0x113023) =~ /[\x{110000}\P{XPosixAlpha}]/;
+chr(0x113024) =~ /[\x{110000}\p{Ascii}]/;
+chr(0x113025) =~ /[\x{110000}\P{Ascii}]/;
+chr(0x113026) =~ /[\x{110000}\p{PosixCntrl}]/;
+chr(0x113027) =~ /[\x{110000}\P{PosixCntrl}]/;
+chr(0x113028) =~ /[\x{110000}\p{XPosixCntrl}]/;
+chr(0x113029) =~ /[\x{110000}\P{XPosixCntrl}]/;
+chr(0x11302A) =~ /[\x{110000}\p{PosixGraph}]/;
+chr(0x11302B) =~ /[\x{110000}\P{PosixGraph}]/;
+chr(0x11302C) =~ /[\x{110000}\p{XPosixGraph}]/;
+chr(0x11302D) =~ /[\x{110000}\P{XPosixGraph}]/;
+chr(0x11302E) =~ /[\x{110000}\p{PosixLower}]/;
+chr(0x11302F) =~ /[\x{110000}\P{PosixLower}]/;
+chr(0x113030) =~ /[\x{110000}\p{XPosixLower}]/;
+chr(0x113031) =~ /[\x{110000}\P{XPosixLower}]/;
+chr(0x113032) =~ /[\x{110000}\p{PosixPrint}]/;
+chr(0x113033) =~ /[\x{110000}\P{PosixPrint}]/;
+chr(0x113034) =~ /[\x{110000}\p{XPosixPrint}]/;
+chr(0x113035) =~ /[\x{110000}\P{XPosixPrint}]/;
+chr(0x113036) =~ /[\x{110000}\p{PosixPunct}]/;
+chr(0x113037) =~ /[\x{110000}\P{PosixPunct}]/;
+chr(0x113038) =~ /[\x{110000}\p{XPosixPunct}]/;
+chr(0x113039) =~ /[\x{110000}\P{XPosixPunct}]/;
+chr(0x11303A) =~ /[\x{110000}\p{PosixUpper}]/;
+chr(0x11303B) =~ /[\x{110000}\P{PosixUpper}]/;
+chr(0x11303C) =~ /[\x{110000}\p{XPosixUpper}]/;
+chr(0x11303D) =~ /[\x{110000}\P{XPosixUpper}]/;
+chr(0x11303E) =~ /[\x{110000}\p{PosixXdigit}]/;
+chr(0x11303F) =~ /[\x{110000}\P{PosixXdigit}]/;
+chr(0x113040) =~ /[\x{110000}\p{XPosixXdigit}]/;
+chr(0x113041) =~ /[\x{110000}\P{XPosixXdigit}]/;
+chr(0x113042) =~ /[\x{110000}\p{PerlSpace}]/;
+chr(0x113043) =~ /[\x{110000}\P{PerlSpace}]/;
+chr(0x113044) =~ /[\x{110000}\p{XPerlSpace}]/;
+chr(0x113045) =~ /[\x{110000}\P{XPerlSpace}]/;
+chr(0x113046) =~ /[\x{110000}\p{PosixBlank}]/;
+chr(0x113047) =~ /[\x{110000}\P{PosixBlank}]/;
+chr(0x113048) =~ /[\x{110000}\p{XPosixBlank}]/;
+chr(0x113049) =~ /[\x{110000}\P{XPosixBlank}]/;
no warnings 'utf8';
chr(0xD7FF) =~ /\p{Any}/;
chr(0xD800) =~ /\p{Any}/;
@@ -185,8 +461,187 @@ chr(0x100000) =~ /\p{Any}/;
chr(0x10FFFE) =~ /\p{Any}/;
chr(0x10FFFF) =~ /\p{Any}/;
chr(0x110000) =~ /\p{Any}/;
+chr(0x110010) =~ /\p{PosixWord}/;
+chr(0x110011) =~ /\P{PosixWord}/;
+chr(0x110012) =~ /\p{XPosixWord}/;
+chr(0x110013) =~ /\P{XPosixWord}/;
+chr(0x110014) =~ /\p{PosixAlnum}/;
+chr(0x110015) =~ /\P{PosixAlnum}/;
+chr(0x110016) =~ /\p{XPosixAlnum}/;
+chr(0x110017) =~ /\P{XPosixAlnum}/;
+chr(0x110018) =~ /\p{PosixSpace}/;
+chr(0x110019) =~ /\P{PosixSpace}/;
+chr(0x11001A) =~ /\p{XPosixSpace}/;
+chr(0x11001B) =~ /\P{XPosixSpace}/;
+chr(0x11001C) =~ /\p{PosixDigit}/;
+chr(0x11001D) =~ /\P{PosixDigit}/;
+chr(0x11001E) =~ /\p{XPosixDigit}/;
+chr(0x11001F) =~ /\P{XPosixDigit}/;
+chr(0x110020) =~ /\p{PosixAlpha}/;
+chr(0x110021) =~ /\P{PosixAlpha}/;
+chr(0x110022) =~ /\p{XPosixAlpha}/;
+chr(0x110023) =~ /\P{XPosixAlpha}/;
+chr(0x110024) =~ /\p{Ascii}/;
+chr(0x110025) =~ /\P{Ascii}/;
+chr(0x110026) =~ /\p{PosixCntrl}/;
+chr(0x110027) =~ /\P{PosixCntrl}/;
+chr(0x110028) =~ /\p{XPosixCntrl}/;
+chr(0x110029) =~ /\P{XPosixCntrl}/;
+chr(0x11002A) =~ /\p{PosixGraph}/;
+chr(0x11002B) =~ /\P{PosixGraph}/;
+chr(0x11002C) =~ /\p{XPosixGraph}/;
+chr(0x11002D) =~ /\P{XPosixGraph}/;
+chr(0x11002E) =~ /\p{PosixLower}/;
+chr(0x11002F) =~ /\P{PosixLower}/;
+chr(0x110030) =~ /\p{XPosixLower}/;
+chr(0x110031) =~ /\P{XPosixLower}/;
+chr(0x110032) =~ /\p{PosixPrint}/;
+chr(0x110033) =~ /\P{PosixPrint}/;
+chr(0x110034) =~ /\p{XPosixPrint}/;
+chr(0x110035) =~ /\P{XPosixPrint}/;
+chr(0x110036) =~ /\p{PosixPunct}/;
+chr(0x110037) =~ /\P{PosixPunct}/;
+chr(0x110038) =~ /\p{XPosixPunct}/;
+chr(0x110039) =~ /\P{XPosixPunct}/;
+chr(0x11003A) =~ /\p{PosixUpper}/;
+chr(0x11003B) =~ /\P{PosixUpper}/;
+chr(0x11003C) =~ /\p{XPosixUpper}/;
+chr(0x11003D) =~ /\P{XPosixUpper}/;
+chr(0x11003E) =~ /\p{PosixXdigit}/;
+chr(0x11003F) =~ /\P{PosixXdigit}/;
+chr(0x110040) =~ /\p{XPosixXdigit}/;
+chr(0x110041) =~ /\P{XPosixXdigit}/;
+chr(0x110042) =~ /\p{PerlSpace}/;
+chr(0x110043) =~ /\P{PerlSpace}/;
+chr(0x110044) =~ /\p{XPerlSpace}/;
+chr(0x110045) =~ /\P{XPerlSpace}/;
+chr(0x110046) =~ /\p{PosixBlank}/;
+chr(0x110047) =~ /\P{PosixBlank}/;
+chr(0x110048) =~ /\p{XPosixBlank}/;
+chr(0x110049) =~ /\P{XPosixBlank}/;
+chr(0x110050) =~ /\w/;
+chr(0x110051) =~ /\W/;
+chr(0x110052) =~ /\d/;
+chr(0x110053) =~ /\D/;
+chr(0x110054) =~ /\s/;
+chr(0x110055) =~ /\S/;
+chr(0x110056) =~ /[[:word:]]/;
+chr(0x110057) =~ /[[:^word:]]/;
+chr(0x110058) =~ /[[:alnum:]]/;
+chr(0x110059) =~ /[[:^alnum:]]/;
+chr(0x11005A) =~ /[[:space:]]/;
+chr(0x11005B) =~ /[[:^space:]]/;
+chr(0x11005C) =~ /[[:digit:]]/;
+chr(0x11005D) =~ /[[:^digit:]]/;
+chr(0x11005E) =~ /[[:alpha:]]/;
+chr(0x11005F) =~ /[[:^alpha:]]/;
+chr(0x110060) =~ /[[:ascii:]]/;
+chr(0x110061) =~ /[[:^ascii:]]/;
+chr(0x110062) =~ /[[:cntrl:]]/;
+chr(0x110063) =~ /[[:^cntrl:]]/;
+chr(0x110064) =~ /[[:graph:]]/;
+chr(0x110065) =~ /[[:^graph:]]/;
+chr(0x110066) =~ /[[:lower:]]/;
+chr(0x110067) =~ /[[:^lower:]]/;
+chr(0x110068) =~ /[[:print:]]/;
+chr(0x110069) =~ /[[:^print:]]/;
+chr(0x11006A) =~ /[[:punct:]]/;
+chr(0x11006B) =~ /[[:^punct:]]/;
+chr(0x11006C) =~ /[[:upper:]]/;
+chr(0x11006D) =~ /[[:^upper:]]/;
+chr(0x11006E) =~ /[[:xdigit:]]/;
+chr(0x11006F) =~ /[[:^xdigit:]]/;
+chr(0x110070) =~ /[[:blank:]]/;
+chr(0x110071) =~ /[[:^blank:]]/;
EXPECT
Code point 0x110000 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 14.
+Code point 0x110010 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 15.
+Code point 0x110011 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 16.
+Code point 0x110011 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 16.
+Code point 0x110012 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 17.
+Code point 0x110013 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 18.
+Code point 0x110013 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 18.
+Code point 0x110014 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 19.
+Code point 0x110015 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 20.
+Code point 0x110015 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 20.
+Code point 0x110016 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 21.
+Code point 0x110017 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 22.
+Code point 0x110017 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 22.
+Code point 0x110018 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 23.
+Code point 0x110019 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 24.
+Code point 0x110019 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 24.
+Code point 0x11001A is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 25.
+Code point 0x11001B is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 26.
+Code point 0x11001B is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 26.
+Code point 0x11001C is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 27.
+Code point 0x11001D is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 28.
+Code point 0x11001D is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 28.
+Code point 0x11001E is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 29.
+Code point 0x11001F is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 30.
+Code point 0x11001F is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 30.
+Code point 0x110020 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 31.
+Code point 0x110021 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 32.
+Code point 0x110021 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 32.
+Code point 0x110022 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 33.
+Code point 0x110023 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 34.
+Code point 0x110023 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 34.
+Code point 0x110024 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 35.
+Code point 0x110025 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 36.
+Code point 0x110025 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 36.
+Code point 0x110026 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 37.
+Code point 0x110027 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 38.
+Code point 0x110027 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 38.
+Code point 0x110028 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 39.
+Code point 0x110029 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 40.
+Code point 0x110029 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 40.
+Code point 0x11002A is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 41.
+Code point 0x11002B is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 42.
+Code point 0x11002B is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 42.
+Code point 0x11002C is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 43.
+Code point 0x11002D is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 44.
+Code point 0x11002D is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 44.
+Code point 0x11002E is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 45.
+Code point 0x11002F is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 46.
+Code point 0x11002F is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 46.
+Code point 0x110030 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 47.
+Code point 0x110031 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 48.
+Code point 0x110031 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 48.
+Code point 0x110032 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 49.
+Code point 0x110033 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 50.
+Code point 0x110033 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 50.
+Code point 0x110034 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 51.
+Code point 0x110035 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 52.
+Code point 0x110035 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 52.
+Code point 0x110036 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 53.
+Code point 0x110037 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 54.
+Code point 0x110037 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 54.
+Code point 0x110038 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 55.
+Code point 0x110039 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 56.
+Code point 0x110039 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 56.
+Code point 0x11003A is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 57.
+Code point 0x11003B is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 58.
+Code point 0x11003B is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 58.
+Code point 0x11003C is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 59.
+Code point 0x11003D is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 60.
+Code point 0x11003D is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 60.
+Code point 0x11003E is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 61.
+Code point 0x11003F is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 62.
+Code point 0x11003F is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 62.
+Code point 0x110040 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 63.
+Code point 0x110041 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 64.
+Code point 0x110041 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 64.
+Code point 0x110042 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 65.
+Code point 0x110043 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 66.
+Code point 0x110043 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 66.
+Code point 0x110044 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 67.
+Code point 0x110045 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 68.
+Code point 0x110045 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 68.
+Code point 0x110046 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 69.
+Code point 0x110047 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 70.
+Code point 0x110047 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 70.
+Code point 0x110048 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 71.
+Code point 0x110049 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 72.
+Code point 0x110049 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 72.
########
use warnings 'utf8';
chr(0x110000) =~ /\p{Any}/;
@@ -195,6 +650,14 @@ chr(0x110000) =~ /\p{Any}/;
EXPECT
Code point 0x110000 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 2.
########
+# TODO optimized regnode should still give warnings
+use warnings 'utf8';
+chr(0x110000) =~ /lb=cr/;
+no warnings 'non_unicode';
+chr(0x110000) =~ /lb=cr/;
+EXPECT
+Code point 0x110000 is not Unicode, all \p{} matches fail; all \P{} matches succeed at - line 2.
+########
require "../test.pl";
use warnings 'utf8';
sub Is_Super { return '!utf8::Any' }
diff --git a/gnu/usr.bin/perl/t/mro/basic.t b/gnu/usr.bin/perl/t/mro/basic.t
index 9955b813b64..be49f9ab1fe 100644
--- a/gnu/usr.bin/perl/t/mro/basic.t
+++ b/gnu/usr.bin/perl/t/mro/basic.t
@@ -3,7 +3,7 @@
use strict;
use warnings;
-BEGIN { require q(./test.pl); } plan(tests => 52);
+BEGIN { require q(./test.pl); } plan(tests => 60);
require mro;
@@ -328,3 +328,59 @@ is(eval { MRO_N->testfunc() }, 123);
undef %Thwit::;
ok !Thrext->isa('Sile'), 'undef %package:: updates subclasses';
}
+
+{
+ # Obliterating @ISA via glob assignment
+ # Broken in 5.14.0; fixed in 5.17.2
+ @Gwythaint::ISA = "Fantastic::Creature";
+ undef *This_glob_haD_better_not_exist; # paranoia; must have no array
+ *Gwythaint::ISA = *This_glob_haD_better_not_exist;
+ ok !Gwythaint->isa("Fantastic::Creature"),
+ 'obliterating @ISA via glob assignment';
+}
+
+{
+ # Autovivifying @ISA via @{*ISA}
+ no warnings;
+ undef *fednu::ISA;
+ @{*fednu::ISA} = "pyfg";
+ ok +fednu->isa("pyfg"), 'autovivifying @ISA via *{@ISA}';
+}
+
+{
+ sub Detached::method;
+ my $h = delete $::{"Detached::"};
+ eval { local *Detached::method };
+ is $@, "", 'localising gv-with-cv belonging to detached package';
+}
+
+{
+ # *ISA localisation
+ @il::ISA = "ilsuper";
+ sub ilsuper::can { "puree" }
+ sub il::tomatoes;
+ {
+ local *il::ISA;
+ is +il->can("tomatoes"), \&il::tomatoes, 'local *ISA';
+ }
+ is "il"->can("tomatoes"), "puree", 'local *ISA unwinding';
+ {
+ local *il::ISA = [];
+ is +il->can("tomatoes"), \&il::tomatoes, 'local *ISA = []';
+ }
+ is "il"->can("tomatoes"), "puree", 'local *ISA=[] unwinding';
+}
+
+# Changes to UNIVERSAL::DESTROY should not leave stale DESTROY caches
+# (part of #114864)
+our $destroy_output;
+sub UNIVERSAL::DESTROY { $destroy_output = "old" }
+my $x = bless[];
+undef $x; # cache the DESTROY method
+undef *UNIVERSAL::DESTROY;
+*UNIVERSAL::DESTROY = sub { $destroy_output = "new" };
+$x = bless[];
+undef $x; # should use the new DESTROY
+is $destroy_output, "new",
+ 'Changes to UNIVERSAL::DESTROY invalidate DESTROY caches';
+undef *UNIVERSAL::DESTROY;
diff --git a/gnu/usr.bin/perl/t/mro/isa_aliases.t b/gnu/usr.bin/perl/t/mro/isa_aliases.t
index abdedce1208..2073e5ebe5f 100644
--- a/gnu/usr.bin/perl/t/mro/isa_aliases.t
+++ b/gnu/usr.bin/perl/t/mro/isa_aliases.t
@@ -2,7 +2,7 @@
BEGIN { chdir 't'; @INC = '../lib'; require './test.pl' }
-plan 12;
+plan 13;
@Foogh::ISA = "Bar";
*Phoogh::ISA = *Foogh::ISA;
@@ -41,3 +41,11 @@ ok !Foo->isa("Bar"),
'!isa when another stash has claimed the @ISA via ref-to-glob assignment';
ok !Phoo->isa("Bar"),
'!isa on the stash that claimed the @ISA via ref-to-glob assignment';
+
+*Fooo::ISA = *Baro::ISA;
+@Fooo::ISA = "Bazo";
+sub Bazo::ook { "Baz" }
+sub L::ook { "See" }
+Baro->ook;
+local *Fooo::ISA = ["L"];
+is 'Baro'->ook, 'See', 'localised *ISA=$ref assignment';
diff --git a/gnu/usr.bin/perl/t/mro/method_caching.t b/gnu/usr.bin/perl/t/mro/method_caching.t
index 733193ae1be..3f21b1b6b34 100644
--- a/gnu/usr.bin/perl/t/mro/method_caching.t
+++ b/gnu/usr.bin/perl/t/mro/method_caching.t
@@ -1,6 +1,7 @@
#!./perl
use strict;
+no strict 'refs'; # we do a lot of this
use warnings;
no warnings 'redefine'; # we do a lot of this
no warnings 'prototype'; # we do a lot of this
@@ -10,10 +11,9 @@ BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
}
+ require './test.pl';
}
-require './test.pl';
-
{
package MCTest::Base;
sub foo { return $_[1]+1 };
@@ -35,6 +35,15 @@ my @testsubs = (
sub { is(MCTest::Derived->foo(0), 5); },
sub { sub FFF { $_[1]+7 }; local *MCTest::Base::foo = *FFF; is(MCTest::Derived->foo(0), 7); },
sub { is(MCTest::Derived->foo(0), 5); },
+ sub { { local *MCTest::Base::can = sub { "tomatoes" };
+ MCTest::Derived->can(0); }
+ is(MCTest::Derived->can("isa"), \&UNIVERSAL::isa,
+ 'removing method when unwinding local *method=sub{}'); },
+ sub { sub peas { "peas" }
+ { local *MCTest::Base::can = *peas;
+ MCTest::Derived->can(0); }
+ is(MCTest::Derived->can("isa"), \&UNIVERSAL::isa,
+ 'removing method when unwinding local *method=*other'); },
sub { sub DDD { $_[1]+8 }; *MCTest::Base::foo = *DDD; is(MCTest::Derived->foo(0), 8); },
sub { *ASDF::asdf = sub { $_[1]+9 }; *MCTest::Base::foo = \&ASDF::asdf; is(MCTest::Derived->foo(0), 9); },
sub { undef *MCTest::Base::foo; eval { MCTest::Derived->foo(0) }; like($@, qr/locate object method/); },
@@ -57,6 +66,39 @@ my @testsubs = (
sub { *{MCTest::Base::} = *{Foo::}; eval { MCTest::Derived->foo(0) }; like($@, qr/locate object method/); },
sub { *MCTest::Derived::foo = \&MCTest::Base::foo; eval { MCTest::Derived::foo(0,0) }; ok(!$@); undef *MCTest::Derived::foo },
sub { eval 'package MCTest::Base; sub foo { $_[1]+18 }'; is(MCTest::Derived->foo(0), 18); },
+
+ # Redefining through a glob alias
+ sub { *A = *{'MCTest::Base::foo'}; eval 'sub A { $_[1]+19 }';
+ is(MCTest::Derived->foo(0), 19,
+ 'redefining sub through glob alias via decl'); },
+ sub { SKIP: {
+ skip_if_miniperl("no XS");
+ eval { require XS::APItest; }
+ or skip "XS::APItest not available", 1;
+ *A = *{'MCTest::Base::foo'};
+ XS::APItest::newCONSTSUB(\%main::, "A", 0, 20);
+ is (MCTest::Derived->foo(0), 20,
+ 'redefining sub through glob alias via newXS');
+ } },
+ sub { undef *{'MCTest::Base::foo'}; *A = *{'MCTest::Base::foo'};
+ eval { no warnings 'once'; local *UNIVERSAL::foo = sub {96};
+ MCTest::Derived->foo };
+ ()=\&A;
+ eval { MCTest::Derived->foo };
+ like($@, qr/Undefined subroutine/,
+ 'redefining sub through glob alias via stub vivification'); },
+ sub { *A = *{'MCTest::Base::foo'};
+ local *A = sub { 21 };
+ is(MCTest::Derived->foo, 21,
+ 'redef sub through glob alias via local cv-to-glob assign'); },
+ sub { *A = *{'MCTest::Base::foo'};
+ eval 'sub MCTest::Base::foo { 22 }';
+ { local *A = sub { 23 }; MCTest::Derived->foo }
+ is(MCTest::Derived->foo, 22,
+ 'redef sub through glob alias via localisation unwinding'); },
+ sub { *A = *{'MCTest::Base::foo'}; *A = sub { 24 };
+ is(MCTest::Derived->foo(0), 24,
+ 'redefining sub through glob alias via cv-to-glob assign'); },
);
plan(tests => scalar(@testsubs));
diff --git a/gnu/usr.bin/perl/t/mro/package_aliases.t b/gnu/usr.bin/perl/t/mro/package_aliases.t
index 3bc3c8fa741..34aa2d68b9b 100755
--- a/gnu/usr.bin/perl/t/mro/package_aliases.t
+++ b/gnu/usr.bin/perl/t/mro/package_aliases.t
@@ -10,7 +10,7 @@ BEGIN {
use strict;
use warnings;
-plan(tests => 52);
+plan(tests => 53);
{
package New;
@@ -399,4 +399,12 @@ bless [], "O:";
'isa(foo) when inheriting from "class:" after string-to-glob assignment';
}
-
+@Bazo::ISA = "Fooo::bar";
+sub Fooo::bar::ber { 'baz' }
+sub UNIVERSAL::ber { "black sheep" }
+Bazo->ber;
+local *Fooo:: = \%Baro::;
+{
+ no warnings;
+ is 'Bazo'->ber, 'black sheep', 'localised *glob=$stashref assignment';
+}
diff --git a/gnu/usr.bin/perl/t/op/anonsub.t b/gnu/usr.bin/perl/t/op/anonsub.t
index b83e4afe6d9..6b8745f4e43 100644
--- a/gnu/usr.bin/perl/t/op/anonsub.t
+++ b/gnu/usr.bin/perl/t/op/anonsub.t
@@ -86,7 +86,8 @@ EXPECT
ok 1
########
# [perl #71154] undef &$code makes $code->() die with: Not a CODE reference
+sub __ANON__ { print "42\n" }
undef &{$x=sub{}};
$x->();
EXPECT
-Undefined subroutine called at - line 3.
+Undefined subroutine called at - line 4.
diff --git a/gnu/usr.bin/perl/t/op/args.t b/gnu/usr.bin/perl/t/op/args.t
index 02d63521e09..bfa015ee90b 100644
--- a/gnu/usr.bin/perl/t/op/args.t
+++ b/gnu/usr.bin/perl/t/op/args.t
@@ -14,32 +14,32 @@ sub new1 { bless \@_ }
{
my $x = new1("x");
my $y = new1("y");
- is("@$y","y");
- is("@$x","x");
+ is("@$y","y", 'bless');
+ is("@$x","x", 'bless');
}
sub new2 { splice @_, 0, 0, "a", "b", "c"; return \@_ }
{
my $x = new2("x");
my $y = new2("y");
- is("@$x","a b c x");
- is("@$y","a b c y");
+ is("@$x","a b c x", 'splice');
+ is("@$y","a b c y", 'splice');
}
sub new3 { goto &new1 }
{
my $x = new3("x");
my $y = new3("y");
- is("@$y","y");
- is("@$x","x");
+ is("@$y","y", 'goto: single element');
+ is("@$x","x", 'goto: single element');
}
sub new4 { goto &new2 }
{
my $x = new4("x");
my $y = new4("y");
- is("@$x","a b c x");
- is("@$y","a b c y");
+ is("@$x","a b c x", 'goto: multiple elements');
+ is("@$y","a b c y", 'goto: multiple elements');
}
# see if POPSUB gets to see the right pad across a dounwind() with
@@ -54,24 +54,27 @@ sub method {
&methimpl;
}
+my $failcount = 0;
sub try {
eval { method('foo', 'bar'); };
print "# $@" if $@;
+ $failcount++;
}
for (1..5) { try() }
-pass();
+is($failcount, 5,
+ 'POPSUB sees right pad across a dounwind() with reified @_');
# bug #21542 local $_[0] causes reify problems and coredumps
sub local1 { local $_[0] }
my $foo = 'foo'; local1($foo); local1($foo);
-print "got [$foo], expected [foo]\nnot " if $foo ne 'foo';
-pass();
+is($foo, 'foo',
+ "got 'foo' as expected rather than '\$foo': RT \#21542");
sub local2 { local $_[0]; last L }
L: { local2 }
-pass();
+pass("last to label");
# the following test for local(@_) used to be in t/op/nothr5005.t (because it
# failed with 5005threads)
@@ -82,9 +85,9 @@ sub foo { local(@_) = ('p', 'q', 'r'); }
sub bar { unshift @_, 'D'; @_ }
sub baz { push @_, 'E'; return @_ }
for (1..3) {
- is(join('',foo('a', 'b', 'c')),'pqr');
- is(join('',bar('d')),'Dd');
- is(join('',baz('e')),'eE');
+ is(join('',foo('a', 'b', 'c')),'pqr', 'local @_');
+ is(join('',bar('d')),'Dd', 'unshift @_');
+ is(join('',baz('e')),'eE', 'push @_');
}
# [perl #28032] delete $_[0] was freeing things too early
diff --git a/gnu/usr.bin/perl/t/op/attrs.t b/gnu/usr.bin/perl/t/op/attrs.t
index 79ef3614fb9..d4c8b69bedb 100644
--- a/gnu/usr.bin/perl/t/op/attrs.t
+++ b/gnu/usr.bin/perl/t/op/attrs.t
@@ -313,6 +313,16 @@ foreach my $test (@tests) {
'Calling closure proto with no @_ that returns a lexical';
}
+# Referencing closure prototypes
+{
+ package buckbuck;
+ my @proto;
+ sub MODIFY_CODE_ATTRIBUTES { push @proto, $_[1], \&{$_[1]}; _: }
+ my $id;
+ () = sub :buck {$id};
+ &::is(@proto, 'referencing closure prototype');
+}
+
# [perl #68658] Attributes on stately variables
{
package thwext;
diff --git a/gnu/usr.bin/perl/t/op/blocks.t b/gnu/usr.bin/perl/t/op/blocks.t
index e6c53d7bb95..d07e844df87 100644
--- a/gnu/usr.bin/perl/t/op/blocks.t
+++ b/gnu/usr.bin/perl/t/op/blocks.t
@@ -13,13 +13,13 @@ b1
b2
b3
b4
-b6
-u5
+b6-c
b7
u6
+u5-c
u1
c3
-c2
+c2-c
c1
i1
i2
@@ -27,6 +27,8 @@ b5
u2
u3
u4
+b6-r
+u5-r
e2
e1
);
@@ -45,9 +47,18 @@ UNITCHECK {print ":u1"}
eval 'BEGIN {print ":b5"}';
eval 'UNITCHECK {print ":u2"}';
eval 'UNITCHECK {print ":u3"; UNITCHECK {print ":u4"}}';
-"a" =~ /(?{UNITCHECK {print ":u5"};
- CHECK {print ":c2"};
- BEGIN {print ":b6"}})/x;
+"a" =~ /(?{UNITCHECK {print ":u5-c"};
+ CHECK {print ":c2-c"};
+ BEGIN {print ":b6-c"}})/x;
+{
+ use re 'eval';
+ my $runtime = q{
+ (?{UNITCHECK {print ":u5-r"};
+ CHECK {print ":c2-r"};
+ BEGIN {print ":b6-r"}})/
+ };
+ "a" =~ /$runtime/x;
+}
eval {BEGIN {print ":b7"}};
eval {UNITCHECK {print ":u6"}};
eval {INIT {print ":i2"}};
diff --git a/gnu/usr.bin/perl/t/op/caller.t b/gnu/usr.bin/perl/t/op/caller.t
index af732420c3d..efce8dfd5c8 100644
--- a/gnu/usr.bin/perl/t/op/caller.t
+++ b/gnu/usr.bin/perl/t/op/caller.t
@@ -5,7 +5,7 @@ BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
require './test.pl';
- plan( tests => 85 );
+ plan( tests => 91 );
}
my @c;
@@ -19,7 +19,7 @@ eval { @c = caller(0) };
is( $c[3], "(eval)", "subroutine name in an eval {}" );
ok( !$c[4], "hasargs false in an eval {}" );
-eval q{ @c = (Caller(0))[3] };
+eval q{ @c = caller(0) };
is( $c[3], "(eval)", "subroutine name in an eval ''" );
ok( !$c[4], "hasargs false in an eval ''" );
@@ -111,8 +111,8 @@ sub testwarn {
# The repetition number must be set to the value of $BYTES in
# lib/warnings.pm
- BEGIN { check_bits( ${^WARNING_BITS}, "\0" x 13, 'all bits off via "no warnings"' ) }
- testwarn("\0" x 13, 'no bits');
+ BEGIN { check_bits( ${^WARNING_BITS}, "\0" x 14, 'all bits off via "no warnings"' ) }
+ testwarn("\0" x 14, 'no bits');
use warnings;
BEGIN { check_bits( ${^WARNING_BITS}, $default,
@@ -250,6 +250,53 @@ eval { sub { () = caller 0; } ->(1..3) };
untie @args;
package main;
+# [perl #113486]
+fresh_perl_is <<'END', "ok\n", {},
+ { package foo; sub bar { main::bar() } }
+ sub bar {
+ delete $::{"foo::"};
+ my $x = \($1+2);
+ my $y = \($1+2); # this is the one that reuses the mem addr, but
+ my $z = \($1+2); # try the others just in case
+ s/2// for $$x, $$y, $$z; # now SvOOK
+ $x = caller;
+ print "ok\n";
+};
+foo::bar
+END
+ "No crash when freed stash is reused for PV with offset hack";
+
+is eval "(caller 0)[6]", "(caller 0)[6]",
+ 'eval text returned by caller does not include \n;';
+
+# PL_linestr should not be modifiable
+eval '"${;BEGIN{ ${\(caller 2)[6]} = *foo }}"';
+pass "no assertion failure after modifying eval text via caller";
+
+is eval "<<END;\nfoo\nEND\n(caller 0)[6]",
+ "<<END;\nfoo\nEND\n(caller 0)[6]",
+ 'here-docs do not gut eval text';
+is eval "s//<<END/e;\nfoo\nEND\n(caller 0)[6]",
+ "s//<<END/e;\nfoo\nEND\n(caller 0)[6]",
+ 'here-docs in quote-like ops do not gut eval text';
+
+# The bitmask should be assignable to ${^WARNING_BITS} without resulting in
+# different warnings settings.
+{
+ my $ bits = sub { (caller 0)[9] }->();
+ my $w;
+ local $SIG{__WARN__} = sub { $w++ };
+ eval '
+ use warnings;
+ BEGIN { ${^WARNING_BITS} = $bits }
+ local $^W = 1;
+ () = 1 + undef;
+ $^W = 0;
+ () = 1 + undef;
+ ';
+ is $w, 1, 'value from (caller 0)[9] (bitmask) works in ${^WARNING_BITS}';
+}
+
$::testing_caller = 1;
do './op/caller.pl' or die $@;
diff --git a/gnu/usr.bin/perl/t/op/chars.t b/gnu/usr.bin/perl/t/op/chars.t
index efdea027bb4..d26a632b176 100644
--- a/gnu/usr.bin/perl/t/op/chars.t
+++ b/gnu/usr.bin/perl/t/op/chars.t
@@ -1,74 +1,82 @@
#!./perl
-print "1..33\n";
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
+}
+
+plan tests => 34;
# because of ebcdic.c these should be the same on asciiish
# and ebcdic machines.
# Peter Prymmer <pvhp@best.com>.
my $c = "\c@";
-print +((ord($c) == 0) ? "" : "not "),"ok 1\n";
+is (ord($c), 0, '\c@');
$c = "\cA";
-print +((ord($c) == 1) ? "" : "not "),"ok 2\n";
+is (ord($c), 1, '\cA');
$c = "\cB";
-print +((ord($c) == 2) ? "" : "not "),"ok 3\n";
+is (ord($c), 2, '\cB');
$c = "\cC";
-print +((ord($c) == 3) ? "" : "not "),"ok 4\n";
+is (ord($c), 3, '\cC');
$c = "\cD";
-print +((ord($c) == 4) ? "" : "not "),"ok 5\n";
+is (ord($c), 4, '\cD');
$c = "\cE";
-print +((ord($c) == 5) ? "" : "not "),"ok 6\n";
+is (ord($c), 5, '\cE');
$c = "\cF";
-print +((ord($c) == 6) ? "" : "not "),"ok 7\n";
+is (ord($c), 6, '\cF');
$c = "\cG";
-print +((ord($c) == 7) ? "" : "not "),"ok 8\n";
+is (ord($c), 7, '\cG');
$c = "\cH";
-print +((ord($c) == 8) ? "" : "not "),"ok 9\n";
+is (ord($c), 8, '\cH');
$c = "\cI";
-print +((ord($c) == 9) ? "" : "not "),"ok 10\n";
+is (ord($c), 9, '\cI');
$c = "\cJ";
-print +((ord($c) == 10) ? "" : "not "),"ok 11\n";
+is (ord($c), 10, '\cJ');
$c = "\cK";
-print +((ord($c) == 11) ? "" : "not "),"ok 12\n";
+is (ord($c), 11, '\cK');
$c = "\cL";
-print +((ord($c) == 12) ? "" : "not "),"ok 13\n";
+is (ord($c), 12, '\cL');
$c = "\cM";
-print +((ord($c) == 13) ? "" : "not "),"ok 14\n";
+is (ord($c), 13, '\cM');
$c = "\cN";
-print +((ord($c) == 14) ? "" : "not "),"ok 15\n";
+is (ord($c), 14, '\cN');
$c = "\cO";
-print +((ord($c) == 15) ? "" : "not "),"ok 16\n";
+is (ord($c), 15, '\cO');
$c = "\cP";
-print +((ord($c) == 16) ? "" : "not "),"ok 17\n";
+is (ord($c), 16, '\cP');
$c = "\cQ";
-print +((ord($c) == 17) ? "" : "not "),"ok 18\n";
+is (ord($c), 17, '\cQ');
$c = "\cR";
-print +((ord($c) == 18) ? "" : "not "),"ok 19\n";
+is (ord($c), 18, '\cR');
$c = "\cS";
-print +((ord($c) == 19) ? "" : "not "),"ok 20\n";
+is (ord($c), 19, '\cS');
$c = "\cT";
-print +((ord($c) == 20) ? "" : "not "),"ok 21\n";
+is (ord($c), 20, '\cT');
$c = "\cU";
-print +((ord($c) == 21) ? "" : "not "),"ok 22\n";
+is (ord($c), 21, '\cU');
$c = "\cV";
-print +((ord($c) == 22) ? "" : "not "),"ok 23\n";
+is (ord($c), 22, '\cV');
$c = "\cW";
-print +((ord($c) == 23) ? "" : "not "),"ok 24\n";
+is (ord($c), 23, '\cW');
$c = "\cX";
-print +((ord($c) == 24) ? "" : "not "),"ok 25\n";
+is (ord($c), 24, '\cX');
$c = "\cY";
-print +((ord($c) == 25) ? "" : "not "),"ok 26\n";
+is (ord($c), 25, '\cY');
$c = "\cZ";
-print +((ord($c) == 26) ? "" : "not "),"ok 27\n";
+is (ord($c), 26, '\cZ');
$c = "\c[";
-print +((ord($c) == 27) ? "" : "not "),"ok 28\n";
+is (ord($c), 27, '\c[');
$c = "\c\\";
-print +((ord($c) == 28) ? "" : "not "),"ok 29\n";
+is (ord($c), 28, '\c\\');
$c = "\c]";
-print +((ord($c) == 29) ? "" : "not "),"ok 30\n";
+is (ord($c), 29, '\c]');
$c = "\c^";
-print +((ord($c) == 30) ? "" : "not "),"ok 31\n";
+is (ord($c), 30, '\c^');
$c = "\c_";
-print +((ord($c) == 31) ? "" : "not "),"ok 32\n";
+is (ord($c), 31, '\c_');
$c = "\c?";
-print +((ord($c) == 127) ? "" : "not "),"ok 33\n";
+is (ord($c), 127, '\c?');
+$c = '';
+is (ord($c), 0, 'ord("") is 0');
diff --git a/gnu/usr.bin/perl/t/op/chr.t b/gnu/usr.bin/perl/t/op/chr.t
index 5ac453f4279..57b4adeb2c6 100755
--- a/gnu/usr.bin/perl/t/op/chr.t
+++ b/gnu/usr.bin/perl/t/op/chr.t
@@ -6,7 +6,7 @@ BEGIN {
require "test.pl";
}
-plan tests => 34;
+plan tests => 42;
# Note that t/op/ord.t already tests for chr() <-> ord() rountripping.
@@ -31,6 +31,22 @@ is(chr(-3.0), "\x{FFFD}");
is(chr(-3.0), "\xFD");
}
+# Make sure -1 is treated the same way when coming from a tied variable
+sub TIESCALAR {bless[]}
+sub STORE { $_[0][0] = $_[1] }
+sub FETCH { $_[0][0] }
+tie $t, "";
+$t = -1; is chr $t, chr -1, 'chr $tied when $tied is -1';
+$t = -2; is chr $t, chr -2, 'chr $tied when $tied is -2';
+$t = -1.1; is chr $t, chr -1.1, 'chr $tied when $tied is -1.1';
+$t = -2.2; is chr $t, chr -2.2, 'chr $tied when $tied is -2.2';
+
+# And that stringy scalars are treated likewise
+is chr "-1", chr -1, 'chr "-1" eq chr -1';
+is chr "-2", chr -2, 'chr "-2" eq chr -2';
+is chr "-1.1", chr -1.1, 'chr "-1.1" eq chr -1.1';
+is chr "-2.2", chr -2.2, 'chr "-2.2" eq chr -2.2';
+
# Check UTF-8 (not UTF-EBCDIC).
SKIP: {
skip "no UTF-8 on EBCDIC", 21 if chr(193) eq 'A';
@@ -63,3 +79,4 @@ sub hexes {
is(hexes(0x1FFFFF), "f7 bf bf bf"); # last four byte encoding
is(hexes(0x200000), "f8 88 80 80 80");
}
+
diff --git a/gnu/usr.bin/perl/t/op/closure_test.pl b/gnu/usr.bin/perl/t/op/closure_test.pl
new file mode 100644
index 00000000000..c06250d975f
--- /dev/null
+++ b/gnu/usr.bin/perl/t/op/closure_test.pl
@@ -0,0 +1,10 @@
+# This file exists to test closure prototypes with no CvOUTSIDE. Only
+# by putting this in a separate file can we get a sub (this file’s
+# main CV) with no CvOUTSIDE. When the outer sub is freed, the inner
+# subs also get CvOUTSIDE set to null.
+
+ my $x;
+ $closure_test::s2 = sub {
+ $x;
+ sub { $x; '10 cubes' };
+ };
diff --git a/gnu/usr.bin/perl/t/op/concat2.t b/gnu/usr.bin/perl/t/op/concat2.t
index 2a66c3c07b3..cc6a5415e83 100644
--- a/gnu/usr.bin/perl/t/op/concat2.t
+++ b/gnu/usr.bin/perl/t/op/concat2.t
@@ -9,14 +9,48 @@ BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
require './test.pl';
- skip_all_if_miniperl("no dynamic loading on miniperl, no Encode");
}
-plan 1;
+plan 3;
+SKIP: {
+skip_if_miniperl("no dynamic loading on miniperl, no Encode", 1);
+skip('encoding pragma is deprecated', 1) if $] >= 5.017009;
fresh_perl_is <<'end', "ok\n", {},
use encoding 'utf8';
map { "a" . $a } ((1)x5000);
print "ok\n";
end
"concat does not lose its stack pointer after utf8 upgrade [perl #78674]";
+}
+
+# This test is in the file because overload.pm uses concatenation.
+{ package o; use overload '""' => sub { $_[0][0] } }
+$x = bless[chr 256],o::;
+"$x";
+$x->[0] = "\xff";
+$x.= chr 257;
+$x.= chr 257;
+is $x, "\xff\x{101}\x{101}", '.= is not confused by changing utf8ness';
+
+# Ops should not share the same TARG between recursion levels. This may
+# affect other ops, too, but concat seems more susceptible to this than
+# others, since it can call itself recursively. (Where else would I put
+# this test, anyway?)
+fresh_perl_is <<'end', "tmp\ntmp\n", {},
+ sub canonpath {
+ my ($path) = @_;
+ my $node = '';
+ $path =~ s|/\z||;
+ return "$node$path";
+ }
+
+ {
+ package Path::Class::Dir;
+ use overload q[""] => sub { ::canonpath("tmp") };
+ }
+
+ print canonpath("tmp"), "\n";
+ print canonpath(bless {},"Path::Class::Dir"), "\n";
+end
+ "recursive concat does not share TARGs";
diff --git a/gnu/usr.bin/perl/t/op/coreamp.t b/gnu/usr.bin/perl/t/op/coreamp.t
index 78ced663040..c1f7181fe79 100644
--- a/gnu/usr.bin/perl/t/op/coreamp.t
+++ b/gnu/usr.bin/perl/t/op/coreamp.t
@@ -14,6 +14,8 @@ BEGIN {
$^P |= 0x100;
}
+no warnings 'experimental::smartmatch';
+
sub lis($$;$) {
&is(map(@$_ ? "[@{[map $_//'~~u~~', @$_]}]" : 'nought', @_[0,1]), $_[2]);
}
@@ -28,10 +30,13 @@ package sov {
my %op_desc = (
evalbytes=> 'eval "string"',
join => 'join or string',
+ pos => 'match position',
+ prototype=> 'subroutine prototype',
readline => '<HANDLE>',
readpipe => 'quoted execution (``, qx)',
reset => 'symbol reset',
ref => 'reference-type operator',
+ undef => 'undef operator',
);
sub op_desc($) {
return $op_desc{$_[0]} || $_[0];
@@ -56,7 +61,7 @@ sub test_proto {
like $@, qr/^Too many arguments for $o at /, "&$o with too many args";
}
- elsif ($p eq '_') {
+ elsif ($p =~ /^_;?\z/) {
$tests ++;
eval " &CORE::$o(1,2) ";
@@ -83,6 +88,7 @@ sub test_proto {
# works in all cases.
undef $_;
{
+ no warnings 'experimental::lexical_topic';
my $_ = $in;
is &{"CORE::$o"}(), $out, "&$o with no args uses lexical \$_";
}
@@ -90,6 +96,7 @@ sub test_proto {
my $r;
$r = sub {
if($_[0]) {
+ no warnings 'experimental::lexical_topic';
my $_ = $in;
is &{"CORE::$o"}(), $out,
"&$o with no args uses the right lexical \$_ under recursion";
@@ -99,6 +106,7 @@ sub test_proto {
}
};
&$r(0);
+ no warnings 'experimental::lexical_topic';
my $_ = $in;
eval {
is "CORE::$o"->(), $out, "&$o with the right lexical \$_ in an eval"
@@ -187,47 +195,74 @@ sub test_proto {
like $@, qr/^Type of arg 1 to &CORE::$o must be hash reference at /,
"&$o with non-hash arg with hash overload (which does not count)";
}
- elsif ($p =~ /^\\\[(\$\@%&?\*)](\$\@)?\z/) {
- $tests += 4;
+ elsif ($p =~ /^(;)?\\\[(\$\@%&?\*)](\$\@)?\z/) {
+ $tests += 3;
- unless ($2) {
+ unless ($3) {
$tests ++;
eval " &CORE::$o(1,2) ";
- like $@, qr/^Too many arguments for $o at /,
+ like $@, qr/^Too many arguments for ${\op_desc($o)} at /,
"&$o with too many args";
}
- eval { &{"CORE::$o"}($2 ? 1 : ()) };
- like $@, qr/^Not enough arguments for $o at /,
+ unless ($1) {
+ $tests ++;
+ eval { &{"CORE::$o"}($3 ? 1 : ()) };
+ like $@, qr/^Not enough arguments for $o at /,
"&$o with too few args";
- my $more_args = $2 ? ',1' : '';
+ }
+ my $more_args = $3 ? ',1' : '';
eval " &CORE::$o(2$more_args) ";
like $@, qr/^Type of arg 1 to &CORE::$o must be reference to one of(?x:
- ) \[\Q$1\E] at /,
+ ) \[\Q$2\E] at /,
"&$o with non-ref arg";
eval " &CORE::$o(*STDOUT{IO}$more_args) ";
like $@, qr/^Type of arg 1 to &CORE::$o must be reference to one of(?x:
- ) \[\Q$1\E] at /,
+ ) \[\Q$2\E] at /,
"&$o with ioref arg";
my $class = ref *DATA{IO};
eval " &CORE::$o(bless(*DATA{IO}, 'hov')$more_args) ";
like $@, qr/^Type of arg 1 to &CORE::$o must be reference to one of(?x:
- ) \[\Q$1\E] at /,
+ ) \[\Q$2\E] at /,
"&$o with ioref arg with hash overload (which does not count)";
bless *DATA{IO}, $class;
- if (do {$1 !~ /&/}) {
+ if (do {$2 !~ /&/}) {
$tests++;
eval " &CORE::$o(\\&scriggle$more_args) ";
like $@, qr/^Type of arg 1 to &CORE::$o must be reference to one (?x:
- )of \[\Q$1\E] at /,
+ )of \[\Q$2\E] at /,
"&$o with coderef arg";
}
}
+ elsif ($p eq ';\[$*]') {
+ $tests += 4;
+
+ my $desc = quotemeta op_desc($o);
+ eval " &CORE::$o(1,2) ";
+ like $@, qr/^Too many arguments for $desc at /,
+ "&$o with too many args";
+ eval " &CORE::$o([]) ";
+ like $@, qr/^Type of arg 1 to &CORE::$o must be scalar reference at /,
+ "&$o with array ref arg";
+ eval " &CORE::$o(1) ";
+ like $@, qr/^Type of arg 1 to &CORE::$o must be scalar reference at /,
+ "&$o with scalar arg";
+ eval " &CORE::$o(bless([], 'sov')) ";
+ like $@, qr/^Type of arg 1 to &CORE::$o must be scalar reference at /,
+ "&$o with non-scalar arg w/scalar overload (which does not count)";
+ }
else {
die "Please add tests for the $p prototype";
}
}
+# Test that &CORE::foo calls without parentheses (no new @_) can handle the
+# total absence of any @_ without crashing.
+undef *_;
+&CORE::wantarray;
+$tests++;
+pass('no crash with &CORE::foo when *_{ARRAY} is undef');
+
test_proto '__FILE__';
test_proto '__LINE__';
test_proto '__PACKAGE__';
@@ -480,6 +515,20 @@ test_proto "get$_" for qw '
pwent pwnam pwuid servbyname servbyport servent sockname sockopt
';
+# Make sure the following tests test what we think they are testing.
+ok ! $CORE::{glob}, '*CORE::glob not autovivified yet'; $tests ++;
+{
+ # Make sure ck_glob does not respect the override when &CORE::glob is
+ # autovivified (by test_proto).
+ local *CORE::GLOBAL::glob = sub {};
+ test_proto 'glob';
+}
+$_ = "t/*.t";
+@_ = &myglob($_);
+is join($", &myglob()), "@_", '&glob without arguments';
+is join($", &myglob("t/*.t")), "@_", '&glob with an arg';
+$tests += 2;
+
test_proto 'gmtime';
&CORE::gmtime;
pass '&gmtime without args does not crash'; ++$tests;
@@ -564,13 +613,33 @@ is &mypack("H*", '5065726c'), 'Perl', '&pack';
lis [&mypack("H*", '5065726c')], ['Perl'], '&pack in list context';
test_proto 'pipe';
+
+test_proto 'pos';
+$tests += 4;
+$_ = "hello";
+pos = 3;
+is &mypos, 3, 'reading &pos without args';
+&mypos = 4;
+is pos, 4, 'writing to &pos without args';
+{
+ my $x = "gubai";
+ pos $x = 3;
+ is &mypos(\$x), 3, 'reading &pos without args';
+ &mypos(\$x) = 4;
+ is pos $x, 4, 'writing to &pos without args';
+}
+
+test_proto 'prototype';
+$tests++;
+is &myprototype(\&myprototype), prototype("CORE::prototype"), '&prototype';
+
test_proto 'quotemeta', '$', '\$';
test_proto 'rand';
$tests += 3;
-like &CORE::rand, qr/^0[.\d]*\z/, '&rand';
+like &CORE::rand, qr/^0[.\d+-e]*\z/, '&rand';
unlike join(" ", &CORE::rand), qr/ /, '&rand in list context';
-&cmp_ok(&CORE::rand(78), qw '< 78', '&rand with 2 args');
+&cmp_ok(&CORE::rand(78), qw '< 78', '&rand with 1 arg');
test_proto 'read';
{
@@ -637,12 +706,12 @@ $tests += 2;
my $oncer = sub { "a" =~ m?a? };
&$oncer;
&myreset;
-ok &$oncer, '&reset with one arg';
+ok &$oncer, '&reset with no args';
package resettest {
$b = "c";
$banana = "cream";
&::myreset('b');
- ::lis [$b,$banana],[(undef)x2], '2-arg &reset';
+ ::lis [$b,$banana],[(undef)x2], '1-arg &reset';
}
test_proto 'reverse';
@@ -661,6 +730,11 @@ is &myrindex("foffooo","o"),6,'&rindex with 2 args';
test_proto 'rmdir';
+test_proto 'scalar';
+$tests += 2;
+is &myscalar(3), 3, '&scalar';
+lis [&myscalar(3)], [3], '&scalar in list cx';
+
test_proto 'seek';
{
last if is_miniperl;
@@ -733,8 +807,11 @@ test_proto 'sqrt', 4, 2;
test_proto 'srand';
$tests ++;
&CORE::srand;
+() = &CORE::srand;
pass '&srand with no args does not crash';
+test_proto 'study';
+
test_proto 'substr';
$tests += 5;
$_ = "abc";
@@ -808,6 +885,34 @@ test_proto 'umask';
$tests ++;
is &myumask, umask, '&umask with no args';
+test_proto 'undef';
+$tests += 12;
+is &myundef(), undef, '&undef returns undef';
+lis [&myundef()], [undef], '&undef returns undef in list cx';
+lis [&myundef(\$_)], [undef], '&undef(...) returns undef in list cx';
+is \&myundef(), \undef, '&undef returns the right undef';
+$_ = 'anserine questions';
+&myundef(\$_);
+is $_, undef, '&undef(\$_) undefines $_';
+@_ = 1..3;
+&myundef(\@_);
+is @_, 0, '&undef(\@_) undefines @_';
+%_ = 1..4;
+&myundef(\%_);
+ok !%_, '&undef(\%_) undefines %_';
+&myundef(\&utf8::valid); # nobody should be using this :-)
+ok !defined &utf8::valid, '&undef(\&foo) undefines &foo';
+@_ = \*_;
+&myundef;
+is *_{ARRAY}, undef, '@_=\*_, &undef undefines *_';
+@_ = \*_;
+&myundef(\*_);
+is *_{ARRAY}, undef, '&undef(\*_) undefines *_';
+(&myundef(), @_) = 1..10;
+lis \@_, [2..10], 'list assignment to &undef()';
+ok !defined undef, 'list assignment to &undef() does not affect undef';
+undef @_;
+
test_proto 'unpack';
$tests += 2;
$_ = 'abcd';
@@ -875,10 +980,17 @@ like $@, qr'^Undefined format "STDOUT" called',
open my $kh, $keywords_file
or die "$0 cannot open $keywords_file: $!";
while(<$kh>) {
- if (m?__END__?..${\0} and /^[-](.*)/) {
+ if (m?__END__?..${\0} and /^[-+](.*)/) {
my $word = $1;
next if
- $word =~ /^(?:CORE|and|cmp|dump|eq|ge|gt|le|lt|ne|or|x|xor)\z/;
+ $word =~ /^(?:s(?:tate|ort|ay|ub)?|d(?:ef
+ ault|ump|o)|p(?:rintf?|ackag
+ e)|e(?:ls(?:if|e)|val|q)|g(?:[et]|iven|oto
+ |rep)|u(?:n(?:less|til)|se)|l(?:(?:as)?t|ocal|e)|re
+ (?:quire|turn|do)|__(?:DATA|END)__|for(?:each|mat)?|(?:
+ AUTOLOA|EN)D|n(?:e(?:xt)?|o)|C(?:HECK|ORE)|wh(?:ile|en)
+ |(?:ou?|t)r|m(?:ap|y)?|UNITCHECK|q[qrwx]?|x(?:or)?|DEST
+ ROY|BEGIN|INIT|and|cmp|if|y)\z/x;
$tests ++;
ok exists &{"my$word"}
|| (eval{&{"CORE::$word"}}, $@ =~ /cannot be called directly/),
@@ -906,6 +1018,7 @@ like $@, qr'^Undefined format "STDOUT" called',
my $warnings;
local $SIG{__WARN__} = sub { ++$warnings };
+ no warnings 'experimental::lexical_topic';
my $_ = 'Phoo';
ok &mymkdir(), '&mkdir';
like <*>, qr/^phoo(.DIR)?\z/i, 'mkdir works with implicit $_';
diff --git a/gnu/usr.bin/perl/t/op/coresubs.t b/gnu/usr.bin/perl/t/op/coresubs.t
index 85084bb5313..86118bca18b 100644
--- a/gnu/usr.bin/perl/t/op/coresubs.t
+++ b/gnu/usr.bin/perl/t/op/coresubs.t
@@ -15,11 +15,22 @@ BEGIN {
use B::Deparse;
my $bd = new B::Deparse '-p';
-my %unsupported = map +($_=>1), qw (CORE and cmp dump eq ge gt le
- lt ne or x xor);
+my %unsupported = map +($_=>1), qw (
+ __DATA__ __END__ AUTOLOAD BEGIN UNITCHECK CORE DESTROY END INIT CHECK and
+ cmp default do dump else elsif eq eval for foreach
+ format ge given goto grep gt if last le local lt m map my ne next
+ no or our package print printf q qq qr qw qx redo require
+ return s say sort state sub tr unless until use
+ when while x xor y
+);
my %args_for = (
dbmopen => '%1,$2,$3',
dbmclose => '%1',
+ delete => '$1[2]',
+ exists => '$1[2]',
+);
+my %desc = (
+ pos => 'match position',
);
use File::Spec::Functions;
@@ -29,7 +40,7 @@ open my $kh, $keywords_file
while(<$kh>) {
if (m?__END__?..${\0} and /^[+-]/) {
chomp(my $word = $');
- if($& eq '+' || $unsupported{$word}) {
+ if($unsupported{$word}) {
$tests ++;
ok !defined &{"CORE::$word"}, "no CORE::$word";
}
@@ -44,7 +55,8 @@ while(<$kh>) {
CORE::state $protochar = qr/([^\\]|\\(?:[^[]|\[[^]]+\]))/;
my $numargs =
- () = $proto =~ s/;.*//r =~ /\G$protochar/g;
+ $word eq 'delete' || $word eq 'exists' ? 1 :
+ (() = $proto =~ s/;.*//r =~ /\G$protochar/g);
my $code =
"#line 1 This-line-makes-__FILE__-easier-to-test.
sub { () = (my$word("
@@ -83,7 +95,8 @@ while(<$kh>) {
next if ($proto =~ /\@/);
# These ops currently accept any number of args, despite their
# prototypes, if they have any:
- next if $word =~ /^(?:chom?p|exec|keys|each|not|read(?:lin|pip)e
+ next if $word =~ /^(?:chom?p|exec|keys|each|not
+ |(?:prototyp|read(?:lin|pip))e
|reset|system|values|l?stat)|evalbytes/x;
$tests ++;
@@ -100,7 +113,8 @@ while(<$kh>) {
)
. "))}";
eval $code;
- like $@, qr/^Too many arguments for $word/,
+ my $desc = $desc{$word} || $word;
+ like $@, qr/^Too many arguments for $desc/,
"inlined CORE::$word with too many args"
or warn $code;
@@ -121,6 +135,12 @@ is runperl(prog => 'print CORE->lc, qq-\n-'), "core\n",
is runperl(prog => '@ISA=CORE; print main->uc, qq-\n-'), "MAIN\n",
'inherted method calls autovivify coresubs';
+{ # RT #117607
+ $tests++;
+ like runperl(prog => '$foo/; \&CORE::lc', stderr => 1),
+ qr/^syntax error/, "RT #117607: \\&CORE::foo doesn't crash in error context";
+}
+
$tests++;
ok eval { *CORE::exit = \42 },
'[rt.cpan.org #74289] *CORE::foo is not accidentally made read-only';
diff --git a/gnu/usr.bin/perl/t/op/cproto.t b/gnu/usr.bin/perl/t/op/cproto.t
index 8870df8d083..85b86db4195 100644
--- a/gnu/usr.bin/perl/t/op/cproto.t
+++ b/gnu/usr.bin/perl/t/op/cproto.t
@@ -7,7 +7,7 @@ BEGIN {
}
BEGIN { require './test.pl'; }
-plan tests => 248;
+plan tests => 254;
while (<DATA>) {
chomp;
@@ -20,7 +20,10 @@ while (<DATA>) {
like( $@, qr/Can't find an opnumber for/, $keyword );
}
else {
- is( "(".prototype("CORE::".$keyword).")", $proto, $keyword );
+ is(
+ "(".(prototype("CORE::".$keyword) // 'undef').")", $proto,
+ $keyword
+ );
}
}
@@ -33,7 +36,13 @@ __PACKAGE__ ()
__DATA__ undef
__END__ undef
__SUB__ ()
+AUTOLOAD undef
+BEGIN undef
CORE unknown
+DESTROY undef
+END undef
+INIT undef
+CHECK undef
abs (_)
accept (**)
alarm (_)
@@ -120,7 +129,7 @@ getservent ()
getsockname (*)
getsockopt (*$$)
given undef
-glob undef
+glob (_;)
gmtime (;$)
goto undef
grep undef
@@ -168,10 +177,10 @@ pack ($@)
package undef
pipe (**)
pop (;+)
-pos undef
+pos (;\[$*])
print undef
printf undef
-prototype undef
+prototype ($)
push (+@)
q undef
qq undef
@@ -198,7 +207,7 @@ rindex ($$;$)
rmdir (_)
s undef
say undef
-scalar undef
+scalar ($)
seek (*$$)
seekdir (*$)
select undef
@@ -233,7 +242,7 @@ sqrt (_)
srand (;$)
stat (;*)
state undef
-study undef
+study (_)
sub undef
substr ($$;$$)
symlink ($$)
@@ -254,7 +263,7 @@ truncate ($$)
uc (_)
ucfirst (_)
umask (;$)
-undef undef
+undef (;\[$@%&*])
unless undef
unlink (@)
unpack ($_)
diff --git a/gnu/usr.bin/perl/t/op/current_sub.t b/gnu/usr.bin/perl/t/op/current_sub.t
index e72a0c5cde8..8c82d112d6e 100644
--- a/gnu/usr.bin/perl/t/op/current_sub.t
+++ b/gnu/usr.bin/perl/t/op/current_sub.t
@@ -4,7 +4,7 @@ BEGIN {
chdir 't';
@INC = qw(../lib);
require './test.pl';
- plan (tests => 13);
+ plan (tests => 17);
}
is __SUB__, "__SUB__", '__SUB__ is a bareword outside of use feature';
@@ -45,3 +45,33 @@ BEGIN {
return "begin 2" if @_;
is &CORE::__SUB__->(0), "begin 2", 'in BEGIN block via & (unoptimised)'
}
+
+sub bar;
+sub bar {
+ () = sort {
+ is CORE::__SUB__, \&bar, 'in sort block in sub with forw decl'
+ } 1,2;
+}
+bar();
+sub bur;
+sub bur {
+ () = sort {
+ is &CORE::__SUB__, \&bur, '& in sort block in sub with forw decl'
+ } 1,2;
+}
+bur();
+
+sub squog;
+sub squog {
+ grep { is CORE::__SUB__, \&squog,
+ 'in grep block in sub with forw decl'
+ } 1;
+}
+squog();
+sub squag;
+sub squag {
+ grep { is &CORE::__SUB__, \&squag,
+ '& in grep block in sub with forw decl'
+ } 1;
+}
+squag();
diff --git a/gnu/usr.bin/perl/t/op/defined.t b/gnu/usr.bin/perl/t/op/defined.t
new file mode 100644
index 00000000000..7129e47a882
--- /dev/null
+++ b/gnu/usr.bin/perl/t/op/defined.t
@@ -0,0 +1,20 @@
+#!perl
+BEGIN {
+ chdir 't';
+ require './test.pl';
+}
+
+plan 5;
+
+sub notdef { undef }
+
+# [perl #97466]
+# These should actually call the sub, instead of testing the sub itself
+ok !defined do { &notdef }, 'defined do { &sub }';
+ok !defined(scalar(42,&notdef)), 'defined(scalar(42,&sub))';
+ok !defined do{();&notdef}, '!defined do{();&sub}';
+
+# Likewise, these should evaluate @array in scalar context
+no warnings "deprecated";
+ok defined($false ? $scalar : @array), 'defined( ... ? ... : @array)';
+ok defined(scalar @array), 'defined(scalar @array)';
diff --git a/gnu/usr.bin/perl/t/op/defins.t b/gnu/usr.bin/perl/t/op/defins.t
index 80127b444d8..54d31507e62 100644
--- a/gnu/usr.bin/perl/t/op/defins.t
+++ b/gnu/usr.bin/perl/t/op/defins.t
@@ -10,7 +10,7 @@ BEGIN {
$SIG{__WARN__} = sub { $warns++; warn $_[0] };
}
require 'test.pl';
-plan( tests => 19 );
+plan( tests => 27 );
my $unix_mode = 1;
@@ -33,14 +33,23 @@ if ($^O eq 'VMS') {
$unix_mode = 1 if $drop_dot && unix_rpt;
}
+# $wanted_filename should be 0 for readdir() and glob() tests.
+# This is because it is the only valid filename that is false in a boolean test.
+
+# $filename = '0';
+# print "hi\n" if $filename; # doesn't print
+
+# In the case of VMS, '0' isn't always the filename that you get.
+# Which makes those particular tests pointless.
+
$wanted_filename = $unix_mode ? '0' : '0.';
$saved_filename = './0';
cmp_ok($warns,'==',0,'no warns at start');
ok(open(FILE,">$saved_filename"),'created work file');
+print FILE "0\n";
print FILE "1\n";
-print FILE "0";
close(FILE);
open(FILE,"<$saved_filename");
@@ -49,6 +58,7 @@ my $seen = 0;
my $dummy;
while (my $name = <FILE>)
{
+ chomp($name);
$seen++ if $name eq '0';
}
cmp_ok($seen,'==',1,'seen in while()');
@@ -58,6 +68,7 @@ $seen = 0;
my $line = '';
do
{
+ chomp($line);
$seen++ if $line eq '0';
} while ($line = <FILE>);
cmp_ok($seen,'==',1,'seen in do/while');
@@ -66,15 +77,17 @@ seek(FILE,0,0);
$seen = 0;
while (($seen ? $dummy : $name) = <FILE> )
{
+ chomp($name);
$seen++ if $name eq '0';
}
-cmp_ok($seen,'==',1,'seen in while() ternary');
+cmp_ok($seen,'==',2,'seen in while() ternary');
seek(FILE,0,0);
$seen = 0;
my %where;
while ($where{$seen} = <FILE>)
{
+ chomp($where{$seen});
$seen++ if $where{$seen} eq '0';
}
cmp_ok($seen,'==',1,'seen in hash while()');
@@ -106,6 +119,31 @@ while ($where{$seen} = readdir(DIR))
}
cmp_ok($seen,'==',1,'saw file in hash while()');
+rewinddir(DIR);
+$seen = 0;
+$_ = 'not 0';
+while (readdir(DIR))
+ {
+ $seen++ if $_ eq $wanted_filename;
+ }
+cmp_ok($seen,'==',1,'saw file in bare while(readdir){...}');
+
+rewinddir(DIR);
+$seen = 0;
+$_ = 'not 0';
+
+$_ eq $wanted_filename && $seen++ while readdir(DIR);
+cmp_ok($seen,'==',1,'saw file in bare "... while readdir"');
+
+rewinddir(DIR);
+$seen = 0;
+$_ = ""; # suppress uninit warning
+do
+ {
+ $seen++ if $_ eq $wanted_filename;
+ } while (readdir(DIR));
+cmp_ok($seen,'==',1,'saw file in bare do{...}while(readdir)');
+
$seen = 0;
while (my $name = glob('*'))
{
@@ -132,12 +170,17 @@ unlink($saved_filename);
ok(!(-f $saved_filename),'work file unlinked');
my %hash = (0 => 1, 1 => 2);
+my @array = 1;
+my $neg_sum= 0;
$seen = 0;
+
while (my $name = each %hash)
{
+ $neg_sum = $name - $neg_sum;
$seen++ if $name eq '0';
}
+cmp_ok(abs($neg_sum),'==',1,'abs(neg_sum) should equal 1');
cmp_ok($seen,'==',1,'seen in each');
$seen = 0;
@@ -146,7 +189,7 @@ while (($seen ? $dummy : $name) = each %hash)
{
$seen++ if $name eq '0';
}
-cmp_ok($seen,'==',1,'seen in each ternary');
+cmp_ok($seen,'==',$neg_sum < 0 ? 1 : 2,'seen in each ternary');
$seen = 0;
while ($where{$seen} = each %hash)
@@ -155,4 +198,30 @@ while ($where{$seen} = each %hash)
}
cmp_ok($seen,'==',1,'seen in each hash');
+$seen = 0;
+undef $_;
+while (each %hash)
+ {
+ $seen++ if $_ eq '0';
+ }
+cmp_ok($seen,'==',1,'0 seen in $_ in while(each %hash)');
+
+$seen = 0;
+undef $_;
+while (each @array)
+ {
+ $seen++ if $_ eq '0';
+ }
+cmp_ok($seen,'==',1,'0 seen in $_ in while(each @array)');
+
+$seen = 0;
+undef $_;
+$_ eq '0' and $seen++ while each %hash;
+cmp_ok($seen,'==',1,'0 seen in $_ in while(each %hash) as stm mod');
+
+$seen = 0;
+undef $_;
+$_ eq '0' and $seen++ while each @array;
+cmp_ok($seen,'==',1,'0 seen in $_ in while(each @array) as stm mod');
+
cmp_ok($warns,'==',0,'no warns at finish');
diff --git a/gnu/usr.bin/perl/t/op/die.t b/gnu/usr.bin/perl/t/op/die.t
index a51333f9ebf..8faef6a33c7 100644
--- a/gnu/usr.bin/perl/t/op/die.t
+++ b/gnu/usr.bin/perl/t/op/die.t
@@ -1,74 +1,97 @@
#!./perl
-print "1..15\n";
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
+}
-$SIG{__DIE__} = sub { print ref($_[0]) ? ("ok ",$_[0]->[0]++,"\n") : @_ } ;
+plan tests => 19;
-$err = "#[\000]\nok 1\n";
eval {
- die $err;
+ eval {
+ die "Horribly\n";
+ };
+ die if $@;
};
-print "not " unless $@ eq $err;
-print "ok 2\n";
+like($@, '^Horribly', 'die with no args propagates $@');
+like($@, 'propagated', '... and appends a phrase');
-$x = [3];
-eval { die $x; };
+{
+ local $SIG{__DIE__} = sub { is( $_[0], "[\000]\n", 'Embedded null passed to signal handler' )};
-print "not " unless $x->[0] == 4;
-print "ok 4\n";
+ $err = "[\000]\n";
+ eval {
+ die $err;
+ };
+ is( $@, $err, 'Embedded null passed back into $@' );
+}
+
+{
+ local $SIG{__DIE__} = sub {
+ isa_ok( $_[0], 'ARRAY', 'pass an array ref as an argument' );
+ $_[0]->[0]++;
+ };
+ $x = [3];
+ eval { die $x; };
+
+ is( $x->[0], 4, 'actual array, not a copy, passed to signal handler' );
-eval {
eval {
- die [ 5 ];
+ eval {
+ die [ 5 ];
+ };
+ die if $@;
};
- die if $@;
-};
-eval {
+ is($@->[0], 7, 'die with no arguments propagates $@, but leaves references alone');
+
eval {
- die bless [ 7 ], "Error";
+ eval {
+ die bless [ 7 ], "Error";
+ };
+ isa_ok( $@, 'Error', '$@ is an Error object' );
+ die if $@;
};
- die if $@;
-};
-print "not " unless ref($@) eq "Out";
-print "ok 10\n";
+ isa_ok( $@, 'Out', 'returning a different object than what was passed in, via PROPAGATE' );
+ is($@->[0], 9, 'reference returned correctly');
+}
{
package Error;
sub PROPAGATE {
- print "ok ",$_[0]->[0]++,"\n";
bless [$_[0]->[0]], "Out";
}
}
+
{
# die/warn and utf8
use utf8;
local $SIG{__DIE__};
my $msg = "ce ºtii tu, bã ?\n";
- eval { die $msg }; print "not " unless $@ eq $msg;
- print "ok 11\n";
+ eval { die $msg };
+ is( $@, $msg, "Literal passed to die" );
our $err;
local $SIG{__WARN__} = $SIG{__DIE__} = sub { $err = shift };
- eval { die $msg }; print "not " unless $err eq $msg;
- print "ok 12\n";
- eval { warn $msg }; print "not " unless $err eq $msg;
- print "ok 13\n";
+ eval { die $msg };
+ is( $err, $msg, 'die handler with utf8' );
+ eval { warn $msg };
+ is( $err, $msg, 'warn handler with utf8' );
eval qq/ use strict; \$\x{3b1} /;
- print "not " unless $@ =~ /Global symbol "\$\x{3b1}"/;
- print "ok 14\n";
+ like( $@, qr/Global symbol "\$\x{3b1}"/, 'utf8 symbol names show up in $@' );
}
# [perl #36470] got uninit warning if $@ was undef
{
+ use warnings "uninitialized";
my $ok = 1;
local $SIG{__DIE__};
local $SIG{__WARN__} = sub { $ok = 0 };
eval { undef $@; die };
- print "not " unless $ok;
- print "ok 15\n";
+ is( $ok, 1, 'no warnings if $@ is undef' );
}
diff --git a/gnu/usr.bin/perl/t/op/die_except.t b/gnu/usr.bin/perl/t/op/die_except.t
index 679a23fe8c3..a65bf4aa8d8 100644
--- a/gnu/usr.bin/perl/t/op/die_except.t
+++ b/gnu/usr.bin/perl/t/op/die_except.t
@@ -19,8 +19,8 @@ $val = eval {
$@ = "t1\n";
1;
}; $err = $@;
-is($val, 1);
-is($err, "");
+is($val, 1, "true return value from successful eval block");
+is($err, "", "no exception after successful eval block");
$@ = "t0\n";
$val = eval {
@@ -30,8 +30,8 @@ $val = eval {
};
1;
}; $err = $@;
-is($val, undef);
-is($err, "t3\n");
+is($val, undef, "undefined return value from eval block with 'die'");
+is($err, "t3\n", "exception after eval block with 'die'");
$@ = "t0\n";
$val = eval {
@@ -39,8 +39,8 @@ $val = eval {
local $@ = "t2\n";
1;
}; $err = $@;
-is($val, 1);
-is($err, "");
+is($val, 1, "true return value from successful eval block with localized \$@");
+is($err, "", "no exception after successful eval block with localized \$@");
$@ = "t0\n";
$val = eval {
@@ -51,8 +51,10 @@ $val = eval {
};
1;
}; $err = $@;
-is($val, undef);
-is($err, "t3\n");
+is($val, undef,
+ "undefined return value from eval block with 'die' and localized \$@");
+is($err, "t3\n",
+ "exception after eval block with 'die' and localized \$@");
$@ = "t0\n";
$val = eval {
@@ -60,8 +62,8 @@ $val = eval {
my $c = end { $@ = "t2\n"; };
1;
}; $err = $@;
-is($val, 1);
-is($err, "");
+is($val, 1, "true return value from eval block with 'end'");
+is($err, "", "no exception after eval block with 'end'");
$@ = "t0\n";
$val = eval {
@@ -72,7 +74,7 @@ $val = eval {
};
1;
}; $err = $@;
-is($val, undef);
-is($err, "t3\n");
+is($val, undef, "undefined return value from eval block with 'end' and 'die'");
+is($err, "t3\n", "exception after eval block with 'end' and 'die'");
done_testing();
diff --git a/gnu/usr.bin/perl/t/op/die_exit.t b/gnu/usr.bin/perl/t/op/die_exit.t
index 390e0c58312..bd9ac285989 100644
--- a/gnu/usr.bin/perl/t/op/die_exit.t
+++ b/gnu/usr.bin/perl/t/op/die_exit.t
@@ -13,8 +13,6 @@ BEGIN {
use strict;
-skip_all('broken on MPE/iX') if $^O eq 'mpeix';
-
$| = 1;
my @tests = (
diff --git a/gnu/usr.bin/perl/t/op/die_keeperr.t b/gnu/usr.bin/perl/t/op/die_keeperr.t
index 9b41cb59358..083bd5d1215 100644
--- a/gnu/usr.bin/perl/t/op/die_keeperr.t
+++ b/gnu/usr.bin/perl/t/op/die_keeperr.t
@@ -3,7 +3,7 @@
BEGIN {
chdir 't' if -d 't';
require 'test.pl';
- plan(20);
+ plan(24);
}
sub End::DESTROY { $_[0]->() }
@@ -31,14 +31,45 @@ foreach my $inx ("", "aabbcc\n", [qw(aa bb cc)]) {
no warnings "misc";
my $warn = "";
local $SIG{__WARN__} = sub { $warn .= $_[0] };
- { my $e = end { die "aa\n"; }; }
+ { my $e = end { no warnings "misc"; die "aa\n"; }; }
is $warn, "";
}
{
+ no warnings "misc";
+ my $warn = "";
+ local $SIG{__WARN__} = sub { $warn .= $_[0] };
+ { my $e = end { use warnings "misc"; die "aa\n"; }; }
+ is $warn, "\t(in cleanup) aa\n";
+}
+
+{
my $warn = "";
local $SIG{__WARN__} = sub { $warn .= $_[0] };
{ my $e = end { no warnings "misc"; die "aa\n"; }; }
+ is $warn, "";
+}
+
+{
+ my $warn = "";
+ local $SIG{__WARN__} = sub { $warn .= $_[0] };
+ { my $e = end { use warnings "misc"; die "aa\n"; }; }
+ is $warn, "\t(in cleanup) aa\n";
+}
+
+{
+ use warnings "misc";
+ my $warn = "";
+ local $SIG{__WARN__} = sub { $warn .= $_[0] };
+ { my $e = end { no warnings "misc"; die "aa\n"; }; }
+ is $warn, "";
+}
+
+{
+ use warnings "misc";
+ my $warn = "";
+ local $SIG{__WARN__} = sub { $warn .= $_[0] };
+ { my $e = end { use warnings "misc"; die "aa\n"; }; }
is $warn, "\t(in cleanup) aa\n";
}
diff --git a/gnu/usr.bin/perl/t/op/die_unwind.t b/gnu/usr.bin/perl/t/op/die_unwind.t
index 2dc5042668d..29fa6e6b7f5 100644
--- a/gnu/usr.bin/perl/t/op/die_unwind.t
+++ b/gnu/usr.bin/perl/t/op/die_unwind.t
@@ -5,7 +5,7 @@ use strict;
#
# This test checks for $@ being set early during an exceptional
-# unwinding, and that this early setting doesn't affect the late
+# unwinding, and that this early setting does not affect the late
# setting used to emit the exception from eval{}. The early setting is
# a backward-compatibility hack to satisfy modules that were relying on
# the historical early setting in order to detect exceptional unwinding.
@@ -29,9 +29,9 @@ $val = eval {
my $c = end { $uerr = $@; $@ = "t2\n"; };
1;
}; $err = $@;
-is($uerr, "");
-is($val, 1);
-is($err, "");
+is($uerr, "", "\$@ false at start of 'end' block inside 'eval' block");
+is($val, 1, "successful return from 'eval' block");
+is($err, "", "\$@ still false after 'end' block inside 'eval' block");
$@ = "t0\n";
$val = eval {
@@ -39,9 +39,9 @@ $val = eval {
my $c = end { $uerr = $@; $@ = "t2\n"; };
1;
}; $err = $@;
-is($uerr, "t1\n");
-is($val, 1);
-is($err, "");
+is($uerr, "t1\n", "true value assigned to \$@ before 'end' block inside 'eval' block");
+is($val, 1, "successful return from 'eval' block");
+is($err, "", "\$@ still false after 'end' block inside 'eval' block");
$@ = "";
$val = eval {
@@ -52,7 +52,7 @@ $val = eval {
1;
}; $err = $@;
is($uerr, "t3\n");
-is($val, undef);
+is($val, undef, "undefined return value from 'eval' block with 'die'");
is($err, "t3\n");
$@ = "t0\n";
@@ -65,7 +65,7 @@ $val = eval {
1;
}; $err = $@;
is($uerr, "t3\n");
-is($val, undef);
+is($val, undef, "undefined return value from 'eval' block with 'die'");
is($err, "t3\n");
done_testing();
diff --git a/gnu/usr.bin/perl/t/op/dor.t b/gnu/usr.bin/perl/t/op/dor.t
index 9f280503ea0..e2385f1a7b1 100644
--- a/gnu/usr.bin/perl/t/op/dor.t
+++ b/gnu/usr.bin/perl/t/op/dor.t
@@ -56,15 +56,18 @@ for (qw(getc pos readline readlink undef umask <> <FOO> <$foo> -f)) {
# Test for some ambiguous syntaxes
eval q# sub f ($) { } f $x / 2; #;
-is( $@, '' );
+is( $@, '', "'/' correctly parsed as arithmetic operator" );
eval q# sub f ($):lvalue { $y } f $x /= 2; #;
-is( $@, '' );
+is( $@, '', "'/=' correctly parsed as assigment operator" );
eval q# sub f ($) { } f $x /2; #;
-like( $@, qr/^Search pattern not terminated/ );
+like( $@, qr/^Search pattern not terminated/,
+ "Caught unterminated search pattern error message: empty subroutine" );
eval q# sub { print $fh / 2 } #;
-is( $@, '' );
+is( $@, '',
+ "'/' correctly parsed as arithmetic operator in sub with built-in function" );
eval q# sub { print $fh /2 } #;
-like( $@, qr/^Search pattern not terminated/ );
+like( $@, qr/^Search pattern not terminated/,
+ "Caught unterminated search pattern error message: sub with built-in function" );
# [perl #28123] Perl optimizes // away incorrectly
diff --git a/gnu/usr.bin/perl/t/op/each_array.t b/gnu/usr.bin/perl/t/op/each_array.t
index 95710e259e3..1055d6c88a4 100755
--- a/gnu/usr.bin/perl/t/op/each_array.t
+++ b/gnu/usr.bin/perl/t/op/each_array.t
@@ -9,94 +9,107 @@ use strict;
use warnings;
use vars qw(@array @r $k $v $c);
-plan tests => 57;
+plan tests => 63;
@array = qw(crunch zam bloop);
(@r) = each @array;
-is (scalar @r, 2);
-is ($r[0], 0);
-is ($r[1], 'crunch');
+is (scalar @r, 2, "'each' on array returns index and value of next element");
+is ($r[0], 0, "got expected index");
+is ($r[1], 'crunch', "got expected value");
($k, $v) = each @array;
-is ($k, 1);
-is ($v, 'zam');
+is ($k, 1, "got expected index of next element");
+is ($v, 'zam', "got expected value of next element");
($k, $v) = each @array;
-is ($k, 2);
-is ($v, 'bloop');
+is ($k, 2, "got expected index of remaining element");
+is ($v, 'bloop', "got expected value of remaining element");
(@r) = each @array;
-is (scalar @r, 0);
+is (scalar @r, 0,
+ "no elements remaining to be iterated over in original array");
(@r) = each @array;
-is (scalar @r, 2);
-is ($r[0], 0);
-is ($r[1], 'crunch');
+is (scalar @r, 2, "start second iteration over original array");
+is ($r[0], 0, "got expected index");
+is ($r[1], 'crunch', "got expected value");
($k) = each @array;
-is ($k, 1);
+is ($k, 1, "got index when only index was assigned to variable");
my @lex_array = qw(PLOP SKLIZZORCH RATTLE);
(@r) = each @lex_array;
-is (scalar @r, 2);
-is ($r[0], 0);
-is ($r[1], 'PLOP');
+is (scalar @r, 2, "'each' on array returns index and value of next element");
+is ($r[0], 0, "got expected index");
+is ($r[1], 'PLOP', "got expected value");
($k, $v) = each @lex_array;
-is ($k, 1);
-is ($v, 'SKLIZZORCH');
+is ($k, 1, "got expected index of next element");
+is ($v, 'SKLIZZORCH', "got expected value of next element");
($k) = each @lex_array;
-is ($k, 2);
+is ($k, 2, "got expected index of remaining element");
(@r) = each @lex_array;
-is (scalar @r, 0);
+is (scalar @r, 0,
+ "no elements remaining to be iterated over in original array");
my $ar = ['bacon'];
(@r) = each @$ar;
-is (scalar @r, 2);
-is ($r[0], 0);
-is ($r[1], 'bacon');
+is (scalar @r, 2,
+ "'each' on array inside reference returns index and value of next element");
+is ($r[0], 0, "got expected index");
+is ($r[1], 'bacon', "got expected value of array element inside reference");
(@r) = each @$ar;
-is (scalar @r, 0);
+is (scalar @r, 0,
+ "no elements remaining to be iterated over in array inside reference");
-is (each @$ar, 0);
-is (scalar each @$ar, undef);
+is (each @$ar, 0, "scalar context 'each' on array returns expected index");
+is (scalar each @$ar, undef,
+ "no elements remaining to be iterated over; array reference case");
my @keys;
@keys = keys @array;
-is ("@keys", "0 1 2");
+is ("@keys", "0 1 2",
+ "'keys' on array in list context returns list of indices");
@keys = keys @lex_array;
-is ("@keys", "0 1 2");
+is ("@keys", "0 1 2",
+ "'keys' on another array in list context returns list of indices");
($k, $v) = each @array;
-is ($k, 0);
-is ($v, 'crunch');
+is ($k, 0, "got expected index");
+is ($v, 'crunch', "got expected value");
@keys = keys @array;
-is ("@keys", "0 1 2");
+is ("@keys", "0 1 2",
+ "'keys' on array in list context returns list of indices");
($k, $v) = each @array;
-is ($k, 0);
-is ($v, 'crunch');
+is ($k, 0, "following 'keys', got expected index");
+is ($v, 'crunch', "following 'keys', got expected value");
my @values;
@values = values @array;
-is ("@values", "@array");
+is ("@values", "@array",
+ "'values' on array returns list of values");
@values = values @lex_array;
-is ("@values", "@lex_array");
+is ("@values", "@lex_array",
+ "'values' on another array returns list of values");
($k, $v) = each @array;
-is ($k, 0);
-is ($v, 'crunch');
+is ($k, 0, "following 'values', got expected index");
+is ($v, 'crunch', "following 'values', got expected index");
@values = values @array;
-is ("@values", "@array");
+is ("@values", "@array",
+ "following 'values' and 'each', 'values' continues to return expected list of values");
($k, $v) = each @array;
-is ($k, 0);
-is ($v, 'crunch');
+is ($k, 0,
+ "following 'values', 'each' and 'values', 'each' continues to return expected index");
+is ($v, 'crunch',
+ "following 'values', 'each' and 'values', 'each' continues to return expected value");
# reset
while (each @array) { }
@@ -104,8 +117,9 @@ while (each @array) { }
# each(ARRAY) in the conditional loop
$c = 0;
while (($k, $v) = each @array) {
- is ($k, $c);
- is ($v, $array[$k]);
+ is ($k, $c, "'each' on array in loop returns expected index '$c'");
+ is ($v, $array[$k],
+ "'each' on array in loop returns expected value '$array[$k]'");
$c++;
}
@@ -116,15 +130,18 @@ $c = 0;
$k = 0;
$v = 0;
while ($k = each @array) {
- is ($k, $v);
+ is ($k, $v,
+ "'each' on array in scalar context in loop returns expected index '$v'");
$v++;
}
# each(ARRAY) in the conditional loop
$c = 0;
for (; ($k, $v) = each @array ;) {
- is ($k, $c);
- is ($v, $array[$k]);
+ is ($k, $c,
+ "'each' on array in list context in loop returns expected index '$c'");
+ is ($v, $array[$k],
+ "'each' on array in list context in loop returns expected value '$array[$k]'");
$c++;
}
@@ -134,6 +151,39 @@ $c = 0;
$k = 0;
$v = 0;
for (; $k = each(@array) ;) {
- is ($k, $v);
+ is ($k, $v,
+ "'each' on array in scalar context in loop returns expected index '$v'");
$v++;
}
+
+# Reset the iterator when the array is cleared [RT #75596]
+{
+ my @a = 'a' .. 'c';
+ my ($i, $v) = each @a;
+ is ("$i-$v", '0-a', "got expected index and value");
+ @a = 'A' .. 'C';
+ ($i, $v) = each @a;
+ is ("$i-$v", '0-A',
+ "got expected new index and value after array gets new content");
+}
+
+# Check that the iterator is reset when localization ends
+{
+ @array = 'a' .. 'c';
+ my ($i, $v) = each @array;
+ is ("$i-$v", '0-a', "got expected index and value");
+ {
+ local @array = 'A' .. 'C';
+ my ($i, $v) = each @array;
+ is ("$i-$v", '0-A',
+ "got expected new index and value after array is localized and gets new content");
+ ($i, $v) = each @array;
+ is ("$i-$v", '1-B',
+ "got expected next index and value after array is localized and gets new content");
+ }
+ ($i, $v) = each @array;
+ is ("$i-$v", '1-b',
+ "got expected next index and value upon return to pre-localized array");
+ # Explicit reset
+ while (each @array) { }
+}
diff --git a/gnu/usr.bin/perl/t/op/exists_sub.t b/gnu/usr.bin/perl/t/op/exists_sub.t
index 012ea331e70..a08e0f5422d 100644
--- a/gnu/usr.bin/perl/t/op/exists_sub.t
+++ b/gnu/usr.bin/perl/t/op/exists_sub.t
@@ -3,10 +3,9 @@
BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
+ require './test.pl';
}
-print "1..9\n";
-
sub t1;
sub t2 : lvalue;
sub t3 ();
@@ -19,28 +18,66 @@ sub t5 {1;}
@ISA = 'P1';
}
-print "not " unless exists &t1 && not defined &t1;
-print "ok 1\n";
-print "not " unless exists &t2 && not defined &t2;
-print "ok 2\n";
-print "not " unless exists &t3 && not defined &t3;
-print "ok 3\n";
-print "not " unless exists &t4 && not defined &t4;
-print "ok 4\n";
-print "not " unless exists &t5 && defined &t5;
-print "ok 5\n";
-P2::->tmc;
-print "not " unless not exists &P2::tmc && not defined &P2::tmc;
-print "ok 6\n";
+my $has_t1 = ok( exists &t1, 't1 sub declared' );
+SKIP: {
+ skip 't1 sub was not declared', 1 if ! $has_t1;
+ ok( ! defined &t1, 't1 not defined' );
+}
+
+my $has_t2 = ok( exists &t2, 't2 sub declared' );
+SKIP: {
+ skip 't2 sub was not declared', 1 if ! $has_t2;
+ ok( ! defined &t2, 't2 not defined' );
+}
+
+my $has_t3 = ok( exists &t3, 't3 sub declared' );
+SKIP: {
+ skip 't3 sub was not declared', 1 if ! $has_t3;
+ ok( ! defined &t3, 't3 not defined' );
+}
+
+my $has_t4 = ok( exists &t4, 't4 sub declared' );
+SKIP: {
+ skip 't4 sub was not declared', 1 if ! $has_t4;
+ ok( ! defined &t4, 't4 not defined' );
+}
+
+my $has_t5 = ok( exists &t5, 't5 sub declared' );
+SKIP: {
+ skip 't5 sub was not declared', 1 if ! $has_t5;
+ ok( defined &t5, , 't5 defined' );
+}
+
+my $has_p2_tmc = ok(! exists &P2::tmc, 'P2::tmc not declared, it was inherited');
+SKIP: {
+ skip 'P2::tmc sub was not declared', 1 if ! $has_t5;
+ ok( ! defined &P2::tmc, 'P2::tmc not defined' );
+}
+
my $ref;
$ref->{A}[0] = \&t4;
-print "not " unless exists &{$ref->{A}[0]} && not defined &{$ref->{A}[0]};
-print "ok 7\n";
+my $ref_exists = ok( exists &{$ref->{A}[0]}, 'references to subroutines exist');
+SKIP: {
+ skip 1, 'Reference sub is not considered declared', 1 if ! $ref_exists;
+ ok( ! defined &{$ref->{A}[0]}, 'Reference to a sub is not defined' );
+}
+
+my $p1_tmc_exists = ok( exists &P1::tmc, 'test setup check');
+SKIP: {
+ skip 'Setup P1::tmc sub is not considered declared', 1 if ! $p1_tmc_exists;
+ ok( defined P1::tmc, 'Setup sub is defined' );
+}
+
undef &P1::tmc;
-print "not " unless exists &P1::tmc && not defined &P1::tmc;
-print "ok 8\n";
+$p1_tmc_exists = ok( exists &P1::tmc, 'P1::tmc was once defined, and continues to be after being undeffed');
+SKIP: {
+ skip( 'Sub P1::tmc still exists after having undef called on it', 1) if ! $p1_tmc_exists;
+ ok( ! defined &P1::tmc, 'P1::tmc is not longer defined after undef was called on it' );
+}
+
eval 'exists &t5()';
-print "not " unless $@;
-print "ok 9\n";
+like( $@, qr/not a subroutine name/, 'exists takes subroutine names with no argument list');
+
+done_testing();
exit 0;
diff --git a/gnu/usr.bin/perl/t/op/fh.t b/gnu/usr.bin/perl/t/op/fh.t
index 16ba186a91e..afca57bf7bb 100644
--- a/gnu/usr.bin/perl/t/op/fh.t
+++ b/gnu/usr.bin/perl/t/op/fh.t
@@ -12,18 +12,18 @@ plan tests => 8;
$|=1;
my $a = "SYM000";
-ok(!defined(fileno($a)));
-ok(!defined *{$a});
+ok(!defined(fileno($a)), 'initial file handle is undefined');
+ok(!defined *{$a}, 'initial typeglob of file handle is undefined');
select select $a;
-ok(defined *{$a});
+ok(defined *{$a}, 'typeglob of file handle defined after select');
$a++;
-ok(!close $a);
-ok(!defined *{$a});
+ok(!close $a, 'close does not succeed with incremented file handle');
+ok(!defined *{$a}, 'typeglob of file handle not defined after increment');
-ok(open($a, ">&STDOUT"));
-ok(defined *{$a});
+ok(open($a, ">&STDOUT"), 'file handle used with open of standard output');
+ok(defined *{$a}, 'typeglob of file handle defined after opening standard output');
-ok(close $a);
+ok(close $a, 'close standard output via file handle;');
diff --git a/gnu/usr.bin/perl/t/op/filehandle.t b/gnu/usr.bin/perl/t/op/filehandle.t
index ca29069609c..a7621db59aa 100755
--- a/gnu/usr.bin/perl/t/op/filehandle.t
+++ b/gnu/usr.bin/perl/t/op/filehandle.t
@@ -1,8 +1,5 @@
#!./perl
-# There are few filetest operators that are portable enough to test.
-# See pod/perlport.pod for details.
-
BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
@@ -15,12 +12,12 @@ use FileHandle;
my $str = "foo";
open my $fh, "<", \$str;
-is <$fh>, "foo";
+is <$fh>, "foo", "open fh to reference to string: got expected content";
eval {
$fh->seek(0, 0);
- is $fh->tell, 0;
- is <$fh>, "foo";
+ is $fh->tell, 0, "after 'seek' and 'tell', got expected current fh position in bytes";
+ is <$fh>, "foo", "after 'seek' and 'tell', still got expected content";
};
-is $@, '';
+is $@, '', "no errors after 'seek' or 'tell'";
diff --git a/gnu/usr.bin/perl/t/op/filetest.t b/gnu/usr.bin/perl/t/op/filetest.t
index c47a857c2e5..8878400d9a6 100644
--- a/gnu/usr.bin/perl/t/op/filetest.t
+++ b/gnu/usr.bin/perl/t/op/filetest.t
@@ -9,85 +9,79 @@ BEGIN {
require './test.pl';
}
-use Config;
-plan(tests => 47 + 27*14);
+plan(tests => 50 + 27*14);
-ok( -d 'op' );
-ok( -f 'TEST' );
-ok( !-f 'op' );
-ok( !-d 'TEST' );
-ok( -r 'TEST' );
+# Tests presume we are in t/op directory and that file 'TEST' is found
+# therein.
+is(-d 'op', 1, "-d: directory correctly identified");
+is(-f 'TEST', 1, "-f: plain file correctly identified");
+isnt(-f 'op', 1, "-f: directory is not a plain file");
+isnt(-d 'TEST', 1, "-d: plain file is not a directory");
+is(-r 'TEST', 1, "-r: file readable by effective uid/gid not found");
-# Make a read only file
-my $ro_file = tempfile();
+# Make a read only file. This happens to be empty, so we also use it later.
+my $ro_empty_file = tempfile();
{
- open my $fh, '>', $ro_file or die "open $fh: $!";
+ open my $fh, '>', $ro_empty_file or die "open $fh: $!";
close $fh or die "close $fh: $!";
}
-chmod 0555, $ro_file or die "chmod 0555, '$ro_file' failed: $!";
-
-$oldeuid = $>; # root can read and write anything
-eval '$> = 1'; # so switch uid (may not be implemented)
-
-print "# oldeuid = $oldeuid, euid = $>\n";
+chmod 0555, $ro_empty_file or die "chmod 0555, '$ro_empty_file' failed: $!";
SKIP: {
- if (!$Config{d_seteuid}) {
- skip('no seteuid');
- }
- else {
- ok( !-w $ro_file );
+ my $restore_root;
+ if ($> == 0) {
+ # root can read and write anything, so switch uid (may not be
+ # implemented)
+ eval '$> = 1';
+
+ skip("Can't drop root privs to test read-only files") if $> == 0;
+ note("Dropped root privs to test read-only files. \$> == $>");
+ ++$restore_root;
}
-}
-# Scripts are not -x everywhere so cannot test that.
-
-eval '$> = $oldeuid'; # switch uid back (may not be implemented)
-
-# this would fail for the euid 1
-# (unless we have unpacked the source code as uid 1...)
-ok( -r 'op' );
+ isnt(-w $ro_empty_file, 1, "-w: file writable by effective uid/gid");
-# this would fail for the euid 1
-# (unless we have unpacked the source code as uid 1...)
-SKIP: {
- if ($Config{d_seteuid}) {
- ok( -w 'op' );
- } else {
- skip('no seteuid');
+ if ($restore_root) {
+ # If the previous assignment to $> worked, so should this:
+ $> = 0;
+ note("Restored root privs after testing read-only files. \$> == $>");
}
}
-ok( -x 'op' ); # Hohum. Are directories -x everywhere?
+# these would fail for the euid 1
+# (unless we have unpacked the source code as uid 1...)
+is(-r 'op', 1, "-r: directory readable by effective uid/gid");
+is(-w 'op', 1, "-w: directory writable by effective uid/gid");
+is(-x 'op', 1, "-x: executable by effective uid/gid"); # Hohum. Are directories -x everywhere?
-is( "@{[grep -r, qw(foo io noo op zoo)]}", "io op" );
+is( "@{[grep -r, qw(foo io noo op zoo)]}", "io op",
+ "-r: found directories readable by effective uid/gid" );
# Test stackability of filetest operators
-ok( defined( -f -d 'TEST' ) && ! -f -d _ );
-ok( !defined( -e 'zoo' ) );
-ok( !defined( -e -d 'zoo' ) );
-ok( !defined( -f -e 'zoo' ) );
-ok( -f -e 'TEST' );
-ok( -e -f 'TEST' );
-ok( defined(-d -e 'TEST') );
-ok( defined(-e -d 'TEST') );
-ok( ! -f -d 'op' );
-ok( -x -d -x 'op' );
-ok( (-s -f 'TEST' > 1), "-s returns real size" );
-ok( -f -s 'TEST' == 1 );
+is(defined( -f -d 'TEST' ), 1, "-f and -d stackable: plain file found");
+isnt(-f -d _, 1, "-f and -d stackable: no plain file found");
+isnt(defined( -e 'zoo' ), 1, "-e: file does not exist");
+isnt(defined( -e -d 'zoo' ), 1, "-e and -d: neither file nor directory exists");
+isnt(defined( -f -e 'zoo' ), 1, "-f and -e: not a plain file and does not exist");
+is(-f -e 'TEST', 1, "-f and -e: plain file and exists");
+is(-e -f 'TEST', 1, "-e and -f: exists and is plain file");
+is(defined(-d -e 'TEST'), 1, "-d and -e: file at least exists");
+is(defined(-e -d 'TEST'), 1, "-e and -d: file at least exists");
+isnt( -f -d 'op', 1, "-f and -d: directory found but is not a plain file");
+is(-x -d -x 'op', 1, "-x, -d and -x again: directory exists and is executable");
+my ($size) = (stat 'TEST')[7];
+cmp_ok($size, '>', 1, 'TEST is longer than 1 byte');
+is( (-s -f 'TEST'), $size, "-s returns real size" );
+is(-f -s 'TEST', 1, "-f and -s: plain file with non-zero size");
# now with an empty file
-my $tempfile = tempfile();
-open my $fh, ">", $tempfile;
-close $fh;
-ok( -f $tempfile );
-is( -s $tempfile, 0 );
-is( -f -s $tempfile, 0 );
-is( -s -f $tempfile, 0 );
-unlink_all $tempfile;
+is(-f $ro_empty_file, 1, "-f: plain file found");
+is(-s $ro_empty_file, 0, "-s: file has 0 bytes");
+is(-f -s $ro_empty_file, 0, "-f and -s: plain file with 0 bytes");
+is(-s -f $ro_empty_file, 0, "-s and -f: file with 0 bytes is plain file");
# stacked -l
eval { -l -e "TEST" };
@@ -101,32 +95,35 @@ like $@, qr/^The stat preceding -l _ wasn't an lstat at /,
}
# Make sure -l is using the previous stat buffer, and not using the previ-
# ous op’s return value as a file name.
+# t/TEST can be a symlink under -Dmksymlinks, so use our temporary file.
SKIP: {
use Perl::OSType 'os_type';
- if (os_type ne 'Unix') { skip "Not Unix", 2 }
- if (-l "TEST") { skip "TEST is a symlink", 2 }
+ if (os_type ne 'Unix') { skip "Not Unix", 3 }
chomp(my $ln = `which ln`);
- if ( ! -e $ln ) { skip "No ln" , 2 }
- lstat "TEST";
- `ln -s TEST 1`;
- ok ! -l -e _, 'stacked -l uses previous stat, not previous retval';
+ if ( ! -e $ln ) { skip "No ln" , 3 }
+ lstat $ro_empty_file;
+ `ln -s $ro_empty_file 1`;
+ isnt(-l -e _, 1, 'stacked -l uses previous stat, not previous retval');
unlink 1;
# Since we already have our skip block set up, we might as well put this
# test here, too:
# -l always treats a non-bareword argument as a file name
- system qw "ln -s TEST", \*foo;
+ system 'ln', '-s', $ro_empty_file, \*foo;
local $^W = 1;
- ok -l \*foo, '-l \*foo is a file name';
+ my @warnings;
+ local $SIG{__WARN__} = sub { push @warnings, @_ };
+ is(-l \*foo, 1, '-l \*foo is a file name');
+ ok($warnings[0] =~ /-l on filehandle foo/, 'warning for -l $handle');
unlink \*foo;
}
# test that _ is a bareword after filetest operators
-f 'TEST';
-ok( -f _ );
+is(-f _, 1, "_ is bareword after filetest operator");
sub _ { "this is not a file name" }
-ok( -f _ );
+is(-f _, 1, "_ is bareword after filetest operator");
my $over;
{
@@ -181,7 +178,8 @@ eval { require Fcntl } or $fcntl_not_available = 1;
for my $op (split //, "rwxoRWXOezsfdlpSbctugkTMBAC") {
$over = [];
- ok( my $rv = eval "-$op \$ft", "overloaded -$op succeeds" )
+ my $rv = eval "-$op \$ft";
+ isnt( $rv, undef, "overloaded -$op succeeds" )
or diag( $@ );
is( $over->[0], $ftstr, "correct object for overloaded -$op" );
is( $over->[1], $op, "correct op for overloaded -$op" );
@@ -200,8 +198,7 @@ for my $op (split //, "rwxoRWXOezsfdlpSbctugkTMBAC") {
$over = 0;
$rv = eval "-$op \$str";
- ok( !$@, "-$op succeeds with string overloading" )
- or diag( $@ );
+ is($@, "", "-$op succeeds with string overloading");
is( $rv, eval "-$op 'TEST'", "correct -$op on string overload" );
is( $over, $exp, "string overload $is called for -$op" );
@@ -223,8 +220,7 @@ for my $op (split //, "rwxoRWXOezsfdlpSbctugkTMBAC") {
is( $rv, "-$op", "correct -$op on string/-X overload" );
$rv = eval "-$op \$neither";
- ok( !$@, "-$op succeeds with random overloading" )
- or diag( $@ );
+ is($@, "", "-$op succeeds with random overloading");
is( $rv, eval "-$op \$nstr", "correct -$op with random overloading" );
is( eval "-r -$op \$ft", "-r", "stacked overloaded -$op" );
@@ -240,8 +236,8 @@ for my $op (split //, "rwxoRWXOezsfdlpSbctugkTMBAC") {
# -l and fatal warnings
stat "test.pl";
eval { use warnings FATAL => io; -l cradd };
-ok !stat _,
- 'fatal warnings do not prevent -l HANDLE from setting stat status';
+isnt(stat _, 1,
+ 'fatal warnings do not prevent -l HANDLE from setting stat status');
# File test ops should not call get-magic on the topmost SV on the stack if
# it belongs to another op.
@@ -288,17 +284,17 @@ SKIP: {
open my $fh, 'test.pl';
stat $Perl; # a binary file
stat *$fh{IO};
- ok -T _, '-T _ works after stat $ioref';
+ is(-T _, 1, '-T _ works after stat $ioref');
# and after -r $ioref
-r *$fh{IO};
- ok -T _, '-T _ works after -r $ioref';
+ is(-T _, 1, '-T _ works after -r $ioref');
# -T _ on closed filehandle should still reset stat info
stat $fh;
close $fh;
-T _;
- ok !stat _, '-T _ on closed filehandle resets stat info';
+ isnt(stat _, 1, '-T _ on closed filehandle resets stat info');
lstat "test.pl";
-T $fh; # closed
@@ -325,7 +321,7 @@ SKIP: {
if (-e $rand_file_name) { skip "File $rand_file_name exists", 1 }
stat 'test.pl';
-T $rand_file_name;
- ok !stat _, '-T "nonexistent" resets stat success status';
+ isnt(stat _, 1, '-T "nonexistent" resets stat success status');
}
# Unsuccessful filetests on filehandles should leave stat buffers in the
diff --git a/gnu/usr.bin/perl/t/op/for.t b/gnu/usr.bin/perl/t/op/for.t
new file mode 100644
index 00000000000..0571380300a
--- /dev/null
+++ b/gnu/usr.bin/perl/t/op/for.t
@@ -0,0 +1,564 @@
+#!./perl
+
+BEGIN {
+ require "test.pl";
+}
+
+plan(104);
+
+# A lot of tests to check that reversed for works.
+
+@array = ('A', 'B', 'C');
+for (@array) {
+ $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for array');
+$r = '';
+for (1,2,3) {
+ $r .= $_;
+}
+is ($r, '123', 'Forwards for list');
+$r = '';
+for (map {$_} @array) {
+ $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for array via map');
+$r = '';
+for (map {$_} 1,2,3) {
+ $r .= $_;
+}
+is ($r, '123', 'Forwards for list via map');
+$r = '';
+for (1 .. 3) {
+ $r .= $_;
+}
+is ($r, '123', 'Forwards for list via ..');
+$r = '';
+for ('A' .. 'C') {
+ $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for list via ..');
+
+$r = '';
+for (reverse @array) {
+ $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for array');
+$r = '';
+for (reverse 1,2,3) {
+ $r .= $_;
+}
+is ($r, '321', 'Reverse for list');
+$r = '';
+for (reverse map {$_} @array) {
+ $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for array via map');
+$r = '';
+for (reverse map {$_} 1,2,3) {
+ $r .= $_;
+}
+is ($r, '321', 'Reverse for list via map');
+$r = '';
+for (reverse 1 .. 3) {
+ $r .= $_;
+}
+is ($r, '321', 'Reverse for list via ..');
+$r = '';
+for (reverse 'A' .. 'C') {
+ $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for list via ..');
+
+$r = '';
+for my $i (@array) {
+ $r .= $i;
+}
+is ($r, 'ABC', 'Forwards for array with var');
+$r = '';
+for my $i (1,2,3) {
+ $r .= $i;
+}
+is ($r, '123', 'Forwards for list with var');
+$r = '';
+for my $i (map {$_} @array) {
+ $r .= $i;
+}
+is ($r, 'ABC', 'Forwards for array via map with var');
+$r = '';
+for my $i (map {$_} 1,2,3) {
+ $r .= $i;
+}
+is ($r, '123', 'Forwards for list via map with var');
+$r = '';
+for my $i (1 .. 3) {
+ $r .= $i;
+}
+is ($r, '123', 'Forwards for list via .. with var');
+$r = '';
+for my $i ('A' .. 'C') {
+ $r .= $i;
+}
+is ($r, 'ABC', 'Forwards for list via .. with var');
+
+$r = '';
+for my $i (reverse @array) {
+ $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for array with var');
+$r = '';
+for my $i (reverse 1,2,3) {
+ $r .= $i;
+}
+is ($r, '321', 'Reverse for list with var');
+$r = '';
+for my $i (reverse map {$_} @array) {
+ $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for array via map with var');
+$r = '';
+for my $i (reverse map {$_} 1,2,3) {
+ $r .= $i;
+}
+is ($r, '321', 'Reverse for list via map with var');
+$r = '';
+for my $i (reverse 1 .. 3) {
+ $r .= $i;
+}
+is ($r, '321', 'Reverse for list via .. with var');
+$r = '';
+for my $i (reverse 'A' .. 'C') {
+ $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for list via .. with var');
+
+# For some reason the generate optree is different when $_ is implicit.
+$r = '';
+for $_ (@array) {
+ $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for array with explicit $_');
+$r = '';
+for $_ (1,2,3) {
+ $r .= $_;
+}
+is ($r, '123', 'Forwards for list with explicit $_');
+$r = '';
+for $_ (map {$_} @array) {
+ $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for array via map with explicit $_');
+$r = '';
+for $_ (map {$_} 1,2,3) {
+ $r .= $_;
+}
+is ($r, '123', 'Forwards for list via map with explicit $_');
+$r = '';
+for $_ (1 .. 3) {
+ $r .= $_;
+}
+is ($r, '123', 'Forwards for list via .. with var with explicit $_');
+$r = '';
+for $_ ('A' .. 'C') {
+ $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for list via .. with var with explicit $_');
+
+$r = '';
+for $_ (reverse @array) {
+ $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for array with explicit $_');
+$r = '';
+for $_ (reverse 1,2,3) {
+ $r .= $_;
+}
+is ($r, '321', 'Reverse for list with explicit $_');
+$r = '';
+for $_ (reverse map {$_} @array) {
+ $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for array via map with explicit $_');
+$r = '';
+for $_ (reverse map {$_} 1,2,3) {
+ $r .= $_;
+}
+is ($r, '321', 'Reverse for list via map with explicit $_');
+$r = '';
+for $_ (reverse 1 .. 3) {
+ $r .= $_;
+}
+is ($r, '321', 'Reverse for list via .. with var with explicit $_');
+$r = '';
+for $_ (reverse 'A' .. 'C') {
+ $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for list via .. with var with explicit $_');
+
+# I don't think that my is that different from our in the optree. But test a
+# few:
+$r = '';
+for our $i (reverse @array) {
+ $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for array with our var');
+$r = '';
+for our $i (reverse 1,2,3) {
+ $r .= $i;
+}
+is ($r, '321', 'Reverse for list with our var');
+$r = '';
+for our $i (reverse map {$_} @array) {
+ $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for array via map with our var');
+$r = '';
+for our $i (reverse map {$_} 1,2,3) {
+ $r .= $i;
+}
+is ($r, '321', 'Reverse for list via map with our var');
+$r = '';
+for our $i (reverse 1 .. 3) {
+ $r .= $i;
+}
+is ($r, '321', 'Reverse for list via .. with our var');
+$r = '';
+for our $i (reverse 'A' .. 'C') {
+ $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for list via .. with our var');
+
+
+$r = '';
+for (1, reverse @array) {
+ $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array with leading value');
+$r = '';
+for ('A', reverse 1,2,3) {
+ $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list with leading value');
+$r = '';
+for (1, reverse map {$_} @array) {
+ $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array via map with leading value');
+$r = '';
+for ('A', reverse map {$_} 1,2,3) {
+ $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list via map with leading value');
+$r = '';
+for ('A', reverse 1 .. 3) {
+ $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list via .. with leading value');
+$r = '';
+for (1, reverse 'A' .. 'C') {
+ $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for list via .. with leading value');
+
+$r = '';
+for (reverse (@array), 1) {
+ $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for array with trailing value');
+$r = '';
+for (reverse (1,2,3), 'A') {
+ $r .= $_;
+}
+is ($r, '321A', 'Reverse for list with trailing value');
+$r = '';
+for (reverse (map {$_} @array), 1) {
+ $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for array via map with trailing value');
+$r = '';
+for (reverse (map {$_} 1,2,3), 'A') {
+ $r .= $_;
+}
+is ($r, '321A', 'Reverse for list via map with trailing value');
+$r = '';
+for (reverse (1 .. 3), 'A') {
+ $r .= $_;
+}
+is ($r, '321A', 'Reverse for list via .. with trailing value');
+$r = '';
+for (reverse ('A' .. 'C'), 1) {
+ $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for list via .. with trailing value');
+
+
+$r = '';
+for $_ (1, reverse @array) {
+ $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array with leading value with explicit $_');
+$r = '';
+for $_ ('A', reverse 1,2,3) {
+ $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list with leading value with explicit $_');
+$r = '';
+for $_ (1, reverse map {$_} @array) {
+ $r .= $_;
+}
+is ($r, '1CBA',
+ 'Reverse for array via map with leading value with explicit $_');
+$r = '';
+for $_ ('A', reverse map {$_} 1,2,3) {
+ $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list via map with leading value with explicit $_');
+$r = '';
+for $_ ('A', reverse 1 .. 3) {
+ $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list via .. with leading value with explicit $_');
+$r = '';
+for $_ (1, reverse 'A' .. 'C') {
+ $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for list via .. with leading value with explicit $_');
+
+$r = '';
+for $_ (reverse (@array), 1) {
+ $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for array with trailing value with explicit $_');
+$r = '';
+for $_ (reverse (1,2,3), 'A') {
+ $r .= $_;
+}
+is ($r, '321A', 'Reverse for list with trailing value with explicit $_');
+$r = '';
+for $_ (reverse (map {$_} @array), 1) {
+ $r .= $_;
+}
+is ($r, 'CBA1',
+ 'Reverse for array via map with trailing value with explicit $_');
+$r = '';
+for $_ (reverse (map {$_} 1,2,3), 'A') {
+ $r .= $_;
+}
+is ($r, '321A',
+ 'Reverse for list via map with trailing value with explicit $_');
+$r = '';
+for $_ (reverse (1 .. 3), 'A') {
+ $r .= $_;
+}
+is ($r, '321A', 'Reverse for list via .. with trailing value with explicit $_');
+$r = '';
+for $_ (reverse ('A' .. 'C'), 1) {
+ $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for list via .. with trailing value with explicit $_');
+
+$r = '';
+for my $i (1, reverse @array) {
+ $r .= $i;
+}
+is ($r, '1CBA', 'Reverse for array with leading value and var');
+$r = '';
+for my $i ('A', reverse 1,2,3) {
+ $r .= $i;
+}
+is ($r, 'A321', 'Reverse for list with leading value and var');
+$r = '';
+for my $i (1, reverse map {$_} @array) {
+ $r .= $i;
+}
+is ($r, '1CBA', 'Reverse for array via map with leading value and var');
+$r = '';
+for my $i ('A', reverse map {$_} 1,2,3) {
+ $r .= $i;
+}
+is ($r, 'A321', 'Reverse for list via map with leading value and var');
+$r = '';
+for my $i ('A', reverse 1 .. 3) {
+ $r .= $i;
+}
+is ($r, 'A321', 'Reverse for list via .. with leading value and var');
+$r = '';
+for my $i (1, reverse 'A' .. 'C') {
+ $r .= $i;
+}
+is ($r, '1CBA', 'Reverse for list via .. with leading value and var');
+
+$r = '';
+for my $i (reverse (@array), 1) {
+ $r .= $i;
+}
+is ($r, 'CBA1', 'Reverse for array with trailing value and var');
+$r = '';
+for my $i (reverse (1,2,3), 'A') {
+ $r .= $i;
+}
+is ($r, '321A', 'Reverse for list with trailing value and var');
+$r = '';
+for my $i (reverse (map {$_} @array), 1) {
+ $r .= $i;
+}
+is ($r, 'CBA1', 'Reverse for array via map with trailing value and var');
+$r = '';
+for my $i (reverse (map {$_} 1,2,3), 'A') {
+ $r .= $i;
+}
+is ($r, '321A', 'Reverse for list via map with trailing value and var');
+$r = '';
+for my $i (reverse (1 .. 3), 'A') {
+ $r .= $i;
+}
+is ($r, '321A', 'Reverse for list via .. with trailing value and var');
+$r = '';
+for my $i (reverse ('A' .. 'C'), 1) {
+ $r .= $i;
+}
+is ($r, 'CBA1', 'Reverse for list via .. with trailing value and var');
+
+
+$r = '';
+for (reverse 1, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for value and array');
+$r = '';
+for (reverse map {$_} 1, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for value and array via map');
+$r = '';
+for (reverse 1 .. 3, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array');
+$r = '';
+for (reverse 'X' .. 'Z', @array) {
+ $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array');
+$r = '';
+for (reverse map {$_} 1 .. 3, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array via map');
+$r = '';
+for (reverse map {$_} 'X' .. 'Z', @array) {
+ $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array via map');
+
+$r = '';
+for (reverse (@array, 1)) {
+ $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array and value');
+$r = '';
+for (reverse (map {$_} @array, 1)) {
+ $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array and value via map');
+
+$r = '';
+for $_ (reverse 1, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for value and array with explicit $_');
+$r = '';
+for $_ (reverse map {$_} 1, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for value and array via map with explicit $_');
+$r = '';
+for $_ (reverse 1 .. 3, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array with explicit $_');
+$r = '';
+for $_ (reverse 'X' .. 'Z', @array) {
+ $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array with explicit $_');
+$r = '';
+for $_ (reverse map {$_} 1 .. 3, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array via map with explicit $_');
+$r = '';
+for $_ (reverse map {$_} 'X' .. 'Z', @array) {
+ $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array via map with explicit $_');
+
+$r = '';
+for $_ (reverse (@array, 1)) {
+ $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array and value with explicit $_');
+$r = '';
+for $_ (reverse (map {$_} @array, 1)) {
+ $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array and value via map with explicit $_');
+
+
+$r = '';
+for my $i (reverse 1, @array) {
+ $r .= $i;
+}
+is ($r, 'CBA1', 'Reverse for value and array with var');
+$r = '';
+for my $i (reverse map {$_} 1, @array) {
+ $r .= $i;
+}
+is ($r, 'CBA1', 'Reverse for value and array via map with var');
+$r = '';
+for my $i (reverse 1 .. 3, @array) {
+ $r .= $i;
+}
+is ($r, 'CBA321', 'Reverse for .. and array with var');
+$r = '';
+for my $i (reverse 'X' .. 'Z', @array) {
+ $r .= $i;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array with var');
+$r = '';
+for my $i (reverse map {$_} 1 .. 3, @array) {
+ $r .= $i;
+}
+is ($r, 'CBA321', 'Reverse for .. and array via map with var');
+$r = '';
+for my $i (reverse map {$_} 'X' .. 'Z', @array) {
+ $r .= $i;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array via map with var');
+
+$r = '';
+for my $i (reverse (@array, 1)) {
+ $r .= $i;
+}
+is ($r, '1CBA', 'Reverse for array and value with var');
+$r = '';
+for my $i (reverse (map {$_} @array, 1)) {
+ $r .= $i;
+}
+is ($r, '1CBA', 'Reverse for array and value via map with var');
+
+TODO: {
+ if (do {17; foreach (1, 2) { 1; } } != 17) {
+ #print "not ";
+ todo_skip("RT #1085: what should be output of perl -we 'print do { foreach (1, 2) { 1; } }'");
+ }
+}
+
+TODO: {
+ local $TODO = "RT #2166: foreach spuriously autovivifies";
+ my %h;
+ foreach (@h{a, b}) {}
+ if(keys(%h)) {
+ todo_skip("RT #2166: foreach spuriously autovivifies");
+ }
+}
diff --git a/gnu/usr.bin/perl/t/op/getpid.t b/gnu/usr.bin/perl/t/op/getpid.t
index 7688240182d..ac1f8bb7225 100644
--- a/gnu/usr.bin/perl/t/op/getpid.t
+++ b/gnu/usr.bin/perl/t/op/getpid.t
@@ -33,10 +33,15 @@ new threads( sub { ($pid2, $ppid2) = ($$, getppid()); } ) -> join();
# If this breaks you're either running under LinuxThreads (and we
# haven't detected it) or your system doesn't have POSIX thread
# semantics.
+# Newer linuxthreads from gnukfreebsd (0.11) does have POSIX thread
+# semantics, so include a version check
+# <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=675606>
+my $thread_version = qx[getconf GNU_LIBPTHREAD_VERSION 2>&1];
+chomp $thread_version;
if ($^O =~ /^(?:gnukfreebsd|linux)$/ and
- (my $linuxthreads = qx[getconf GNU_LIBPTHREAD_VERSION 2>&1]) =~ /linuxthreads/) {
- chomp $linuxthreads;
- diag "We're running under $^O with linuxthreads <$linuxthreads>";
+ $thread_version =~ /linuxthreads/ and
+ !($thread_version =~ /linuxthreads-(.*)/ && $1 >= 0.11)) {
+ diag "We're running under $^O with linuxthreads <$thread_version>";
isnt($pid, $pid2, "getpid() in a thread is different from the parent on this non-POSIX system");
isnt($ppid, $ppid2, "getppid() in a thread is different from the parent on this non-POSIX system");
} else {
diff --git a/gnu/usr.bin/perl/t/op/getppid.t b/gnu/usr.bin/perl/t/op/getppid.t
index a63161014a4..a8d0f2cb3b8 100755
--- a/gnu/usr.bin/perl/t/op/getppid.t
+++ b/gnu/usr.bin/perl/t/op/getppid.t
@@ -20,6 +20,9 @@ BEGIN {
plan (8);
}
+# No, we don't want any zombies. kill 0, $ppid spots zombies :-(
+$SIG{CHLD} = 'IGNORE';
+
sub fork_and_retrieve {
my $which = shift;
pipe my ($r, $w) or die "pipe: $!\n";
@@ -27,13 +30,16 @@ sub fork_and_retrieve {
if ($pid) {
# parent
- close $w;
+ close $w or die "close: $!\n";
$_ = <$r>;
chomp;
die "Garbled output '$_'"
- unless my ($first, $second) = /^(\d+),(\d+)\z/;
+ unless my ($how, $first, $second) = /^([a-z]+),(\d+),(\d+)\z/;
cmp_ok ($first, '>=', 1, "Parent of $which grandchild");
- cmp_ok ($second, '>=', 1, "New parent of orphaned $which grandchild");
+ my $message = "grandchild waited until '$how'";
+ cmp_ok ($second, '>=', 1, "New parent of orphaned $which grandchild")
+ ? note ($message) : diag ($message);
+
SKIP: {
skip("Orphan processes are not reparented on QNX", 1)
if $^O eq 'nto';
@@ -46,20 +52,55 @@ sub fork_and_retrieve {
# child
# Prevent test.pl from thinking that we failed to run any tests.
$::NO_ENDING = 1;
- close $r;
+ close $r or die "close: $!\n";
+ pipe my ($r2, $w2) or die "pipe: $!\n";
+ pipe my ($r3, $w3) or die "pipe: $!\n";
my $pid2 = fork; defined $pid2 or die "fork: $!\n";
if ($pid2) {
- close $w;
- sleep 1;
+ close $w or die "close: $!\n";
+ close $w2 or die "close: $!\n";
+ close $r3 or die "close: $!\n";
+ # Wait for our child to signal that it's read our PID:
+ <$r2>;
+ # Implicit close of $w3:
+ exit 0;
}
else {
# grandchild
+ close $r2 or die "close: $!\n";
+ close $w3 or die "close: $!\n";
my $ppid1 = getppid();
- # Wait for immediate parent to exit
- sleep 2;
+ # kill 0 isn't portable:
+ my $can_kill0 = eval {
+ kill 0, $ppid1;
+ };
+ my $how = $can_kill0 ? 'undead' : 'sleep';
+
+ # Tell immediate parent to exit:
+ close $w2 or die "close: $!\n";
+ # Wait for it to (start to) exit:
+ <$r3>;
+ # Which sadly isn't enough to be sure that it has exited - often we
+ # get switched in during its shutdown, after $w3 closes but before
+ # it exits and we get reparented.
+ if ($can_kill0) {
+ # use kill 0 where possible. Try 10 times, then give up:
+ for (0..9) {
+ my $got = kill 0, $ppid1;
+ die "kill: $!" unless defined $got;
+ if (!$got) {
+ $how = 'kill';
+ last;
+ }
+ sleep 1;
+ }
+ } else {
+ # Fudge it by waiting a bit more:
+ sleep 2;
+ }
my $ppid2 = getppid();
- print $w "$ppid1,$ppid2\n";
+ print $w "$how,$ppid1,$ppid2\n";
}
exit 0;
}
diff --git a/gnu/usr.bin/perl/t/op/grent.t b/gnu/usr.bin/perl/t/op/grent.t
index 3611c1b890e..3b28619605e 100644
--- a/gnu/usr.bin/perl/t/op/grent.t
+++ b/gnu/usr.bin/perl/t/op/grent.t
@@ -28,11 +28,11 @@ if (not defined $where) { # Try NIS.
{
print "# `ypcat group` worked\n";
- # Check to make sure we're really using NIS.
+ # Check to make sure we are really using NIS.
if( open(NSSW, "/etc/nsswitch.conf" ) ) {
my($group) = grep /^\s*group:/, <NSSW>;
- # If there's no group line, assume it default to compat.
+ # If there is no group line, assume it default to compat.
if( !$group || $group !~ /(nis|compat)/ ) {
print "# Doesn't look like you're using NIS in ".
"/etc/nsswitch.conf\n";
@@ -91,7 +91,7 @@ ok( setgrent(), 'setgrent' ) || print "# $!\n";
while (<GR>) {
chomp;
- # LIMIT -1 so that groups with no users don't fall off
+ # LIMIT -1 so that groups with no users do not fall off
my @s = split /:/, $_, -1;
my ($name_s,$passwd_s,$gid_s,$members_s) = @s;
if (@s) {
@@ -158,7 +158,7 @@ EOEX
fail();
print "#\t (not necessarily serious: run t/op/grent.t by itself)\n";
} else {
- pass();
+ pass("getgrgid and getgrnam performed as expected");
}
# Test both the scalar and list contexts.
@@ -183,6 +183,6 @@ for (1..$max) {
}
endgrent();
-is("@gr1", "@gr2");
+is("@gr1", "@gr2", "getgrent gave same results in scalar and list contexts");
close(GR);
diff --git a/gnu/usr.bin/perl/t/op/hashassign.t b/gnu/usr.bin/perl/t/op/hashassign.t
index 37a7674bb17..57a625cb2e4 100644
--- a/gnu/usr.bin/perl/t/op/hashassign.t
+++ b/gnu/usr.bin/perl/t/op/hashassign.t
@@ -8,7 +8,7 @@ BEGIN {
# use strict;
-plan tests => 218;
+plan tests => 309;
my @comma = ("key", "value");
@@ -280,9 +280,9 @@ foreach my $chr (60, 200, 600, 6000, 60000) {
'hash assignment in list context removes duplicates' );
is( (join ':', %h = qw(a 1 a 2 b 3 c 4 d 5 d 6)), 'a:2:b:3:c:4:d:6',
'hash assignment in list context removes duplicates 2' );
- is( scalar( %h = (1,2,1,3,1,4,1,5) ), 2,
+ is( scalar( %h = (1,2,1,3,1,4,1,5) ), 8,
'hash assignment in scalar context' );
- is( scalar( ($x,%h) = (0,1,2,1,3,1,4,1,5) ), 3,
+ is( scalar( ($x,%h) = (0,1,2,1,3,1,4,1,5) ), 9,
'scalar + hash assignment in scalar context' );
$ar = [ %h = (1,2,1,3,1,4,1,5) ];
is( $#$ar, 1, 'hash assignment in list context' );
@@ -320,3 +320,217 @@ SKIP: {
undef %tb;
is $p, \%tb, "hash undef should not zap weak refs";
}
+
+# test odd hash assignment warnings
+{
+ my ($s, %h);
+ warning_like(sub {%h = (1..3)}, qr/^Odd number of elements in hash assignment/);
+ warning_like(sub {%h = ({})}, qr/^Reference found where even-sized list expected/);
+
+ warning_like(sub { ($s, %h) = (1..4)}, qr/^Odd number of elements in hash assignment/);
+ warning_like(sub { ($s, %h) = (1, {})}, qr/^Reference found where even-sized list expected/);
+}
+
+# hash assignment in scalar and list context with odd number of elements
+{
+ no warnings 'misc', 'uninitialized';
+ my %h; my $x;
+ is( join( ':', %h = (1..3)), '1:2:3:',
+ 'odd hash assignment in list context' );
+ ok( eq_hash( \%h, {1 => 2, 3 => undef} ), "correct value stored" );
+ is( scalar( %h = (1..3) ), 3,
+ 'odd hash assignment in scalar context' );
+ ok( eq_hash( \%h, {1 => 2, 3 => undef} ), "correct value stored" );
+ is( join(':', ($x,%h) = (0,1,2,3) ), '0:1:2:3:',
+ 'scalar + odd hash assignment in list context' );
+ ok( eq_hash( \%h, {1 => 2, 3 => undef} ), "correct value stored" );
+ is( scalar( ($x,%h) = (0,1,2,3) ), 4,
+ 'scalar + odd hash assignment in scalar context' );
+ ok( eq_hash( \%h, {1 => 2, 3 => undef} ), "correct value stored" );
+}
+
+# hash assignment in scalar and list context with odd number of elements
+# and duplicates
+{
+ no warnings 'misc', 'uninitialized';
+ my %h; my $x;
+ is( (join ':', %h = (1,1,1)), '1:',
+ 'odd hash assignment in list context with duplicates' );
+ ok( eq_hash( \%h, {1 => undef} ), "correct value stored" );
+ is( scalar(%h = (1,1,1)), 3,
+ 'odd hash assignment in scalar context with duplicates' );
+ ok( eq_hash( \%h, {1 => undef} ), "correct value stored" );
+ is( join(':', ($x,%h) = (0,1,1,1) ), '0:1:',
+ 'scalar + odd hash assignment in list context with duplicates' );
+ ok( eq_hash( \%h, {1 => undef} ), "correct value stored" );
+ is( scalar( ($x,%h) = (0,1,1,1) ), 4,
+ 'scalar + odd hash assignment in scalar context with duplicates' );
+ ok( eq_hash( \%h, {1 => undef} ), "correct value stored" );
+}
+
+# hash followed by more elements on LHS of list assignment
+# (%h, ...) = ...;
+{
+ my (%h, %x, @x, $x);
+ is( scalar( (%h,$x) = (1,2,3,4)), 4,
+ 'hash+scalar assignment in scalar context' );
+ ok( eq_hash( \%h, {1 => 2, 3 => 4} ), "correct hash" );
+ is( $x, undef, "correct scalar" );
+ # this arguable, but this is how it works
+ is( join(':', (%h,$x) = (1,2,3,4)), '1:2:3:4',
+ 'hash+scalar assignment in list context' );
+ ok( eq_hash( \%h, {1 => 2, 3 => 4} ), "correct hash" );
+ is( $x, undef, "correct scalar" );
+
+ is( scalar( (%h,%x) = (1,2,3,4)), 4,
+ 'hash+hash assignment in scalar context' );
+ ok( eq_hash( \%h, {1 => 2, 3 => 4} ), "correct hash" );
+ ok( eq_hash( \%x, {} ), "correct hash" );
+ is( join(':', (%h,%x) = (1,2,3,4)), '1:2:3:4',
+ 'hash+hash assignment in list context' );
+ ok( eq_hash( \%h, {1 => 2, 3 => 4} ), "correct hash" );
+ ok( eq_hash( \%x, {} ), "correct hash" );
+
+ is( scalar( (%h,@x) = (1,2,3,4)), 4,
+ 'hash+array assignment in scalar context' );
+ ok( eq_hash( \%h, {1 => 2, 3 => 4} ), "correct hash" );
+ ok( eq_array( \@x, [] ), "correct array" );
+ is( join(':', (%h,@x) = (1,2,3,4)), '1:2:3:4',
+ 'hash+hash assignment in list context' );
+ ok( eq_hash( \%h, {1 => 2, 3 => 4} ), "correct hash" );
+ ok( eq_array( \@x, [] ), "correct array" );
+}
+
+# hash followed by more elements on LHS of list assignment
+# and duplicates on RHS
+# (%h, ...) = (1)x10;
+{
+ my (%h, %x, @x, $x);
+ is( scalar( (%h,$x) = (1,2,1,4)), 4,
+ 'hash+scalar assignment in scalar context' );
+ ok( eq_hash( \%h, {1 => 4} ), "correct hash" );
+ is( $x, undef, "correct scalar" );
+ # this arguable, but this is how it works
+ is( join(':', (%h,$x) = (1,2,1,4)), '1:4',
+ 'hash+scalar assignment in list context' );
+ ok( eq_hash( \%h, {1 => 4} ), "correct hash" );
+ is( $x, undef, "correct scalar" );
+
+ is( scalar( (%h,%x) = (1,2,1,4)), 4,
+ 'hash+hash assignment in scalar context' );
+ ok( eq_hash( \%h, {1 => 4} ), "correct hash" );
+ ok( eq_hash( \%x, {} ), "correct hash" );
+ is( join(':', (%h,%x) = (1,2,1,4)), '1:4',
+ 'hash+hash assignment in list context' );
+ ok( eq_hash( \%h, {1 => 4} ), "correct hash" );
+ ok( eq_hash( \%x, {} ), "correct hash" );
+
+ is( scalar( (%h,@x) = (1,2,1,4)), 4,
+ 'hash+array assignment in scalar context' );
+ ok( eq_hash( \%h, {1 => 4} ), "correct hash" );
+ ok( eq_array( \@x, [] ), "correct array" );
+ is( join(':', (%h,@x) = (1,2,1,4)), '1:4',
+ 'hash+hash assignment in list context' );
+ ok( eq_hash( \%h, {1 => 4} ), "correct hash" );
+ ok( eq_array( \@x, [] ), "correct array" );
+}
+
+# hash followed by more elements on LHS of list assignment
+# and duplicates with odd number of elements on RHS
+# (%h, ...) = (1,2,3,4,1);
+{
+ no warnings 'misc'; # suppress oddball warnings
+ my (%h, %x, @x, $x);
+ is( scalar( (%h,$x) = (1,2,3,4,1)), 5,
+ 'hash+scalar assignment in scalar context' );
+ ok( eq_hash( \%h, {1 => undef, 3 => 4} ), "correct hash" );
+ is( $x, undef, "correct scalar" );
+ # this arguable, but this is how it works
+ is( join(':', map $_//'undef', (%h,$x) = (1,2,3,4,1)), '1:undef:3:4',
+ 'hash+scalar assignment in list context' );
+ ok( eq_hash( \%h, {1 => undef, 3 => 4} ), "correct hash" );
+ is( $x, undef, "correct scalar" );
+
+ is( scalar( (%h,%x) = (1,2,3,4,1)), 5,
+ 'hash+hash assignment in scalar context' );
+ ok( eq_hash( \%h, {1 => undef, 3 => 4} ), "correct hash" );
+ ok( eq_hash( \%x, {} ), "correct hash" );
+ is( join(':', map $_//'undef', (%h,%x) = (1,2,3,4,1)), '1:undef:3:4',
+ 'hash+hash assignment in list context' );
+ ok( eq_hash( \%h, {1 => undef, 3 => 4} ), "correct hash" );
+ ok( eq_hash( \%x, {} ), "correct hash" );
+
+ is( scalar( (%h,@x) = (1,2,3,4,1)), 5,
+ 'hash+array assignment in scalar context' );
+ ok( eq_hash( \%h, {1 => undef, 3 => 4} ), "correct hash" );
+ ok( eq_array( \@x, [] ), "correct array" );
+ is( join(':', map $_//'undef', (%h,@x) = (1,2,3,4,1)), '1:undef:3:4',
+ 'hash+hash assignment in list context' );
+ ok( eq_hash( \%h, {1 => undef, 3 => 4} ), "correct hash" );
+ ok( eq_array( \@x, [] ), "correct array" );
+}
+
+
+# not enough elements on rhs
+# ($x,$y,$z,...) = (1);
+{
+ my ($x,$y,$z,@a,%h);
+ is( join(':', ($x, $y, %h) = (1)), '1',
+ 'only assigned elements are returned in list context');
+ is( join(':', ($x, $y, %h) = (1,1)), '1:1',
+ 'only assigned elements are returned in list context');
+ no warnings 'misc'; # suppress oddball warnings
+ is( join(':', map $_//'undef', ($x, $y, %h) = (1,1,1)), '1:1:1:undef',
+ 'only assigned elements are returned in list context');
+ is( join(':', ($x, $y, %h) = (1,1,1,1)), '1:1:1:1',
+ 'only assigned elements are returned in list context');
+ is( join(':', map $_//'undef', ($x, %h, $y) = (1,2,3,4)),
+ '1:2:3:4:undef',
+ 'only assigned elements are returned in list context');
+ is( join(':', ($x, $y, @h) = (1)), '1',
+ 'only assigned elements are returned in list context');
+ is( join(':', ($x, @h, $y) = (1,2,3,4)), '1:2:3:4',
+ 'only assigned elements are returned in list context');
+}
+
+# lvaluedness of list context
+{
+ my %h; my ($x, $y, $z);
+ $_++ foreach %h = (1,2,3,4);
+ ok( eq_hash( \%h, {1 => 3, 3 => 5} ), "aassign in list context returns lvalues" );
+
+ $_++ foreach %h = (1,2,1,4);
+ ok( eq_hash( \%h, {1 => 5} ), "the same for assignment with duplicates" );
+
+ $_++ foreach ($x, %h) = (0,1,2,3,4);
+ is( $x, 1, "... and leading scalar" );
+ ok( eq_hash( \%h, {1 => 3, 3 => 5} ), "... scalar followed by hash" );
+
+ {
+ no warnings 'misc';
+ $_++ foreach %h = (1,2,3);
+ ok( eq_hash( \%h, {1 => 3, 3 => 1} ), "odd elements also lvalued" );
+ }
+
+ $x = 0;
+ $_++ foreach %h = ($x,$x);
+ is($x, 0, "returned values are not aliased to RHS of the assignment operation");
+
+ %h = ();
+ $x = 0;
+ $_++ foreach sub :lvalue { %h = ($x,$x) }->();
+ is($x, 0,
+ "returned values are not aliased to RHS of assignment in lvalue sub");
+
+ $_++ foreach ($x,$y,%h,$z) = (0);
+ ok( eq_array([$x,$y,%h,$z], [1,undef,undef]), "only assigned values are returned" );
+
+ $_++ foreach ($x,$y,%h,$z) = (0,1);
+ ok( eq_array([$x,$y,%h,$z], [1,2,undef]), "only assigned values are returned" );
+
+ no warnings 'misc'; # suppress oddball warnings
+ $_++ foreach ($x,$y,%h,$z) = (0,1,2);
+ ok( eq_array([$x,$y,%h,$z], [1,2,2,1,undef]), "only assigned values are returned" );
+}
+
+
diff --git a/gnu/usr.bin/perl/t/op/heredoc.t b/gnu/usr.bin/perl/t/op/heredoc.t
new file mode 100644
index 00000000000..08b0af2c2d0
--- /dev/null
+++ b/gnu/usr.bin/perl/t/op/heredoc.t
@@ -0,0 +1,85 @@
+# tests for heredocs besides what is tested in base/lex.t
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
+}
+
+use strict;
+plan(tests => 9);
+
+
+# heredoc without newline (#65838)
+{
+ my $string = <<'HEREDOC';
+testing for 65838
+HEREDOC
+
+ my $code = "<<'HEREDOC';\n${string}HEREDOC"; # HD w/o newline, in eval-string
+ my $hd = eval $code or warn "$@ ---";
+ is($hd, $string, "no terminating newline in string-eval");
+}
+
+
+# here-doc edge cases
+{
+ my $string = "testing for 65838";
+
+ fresh_perl_is(
+ "print <<'HEREDOC';\n${string}\nHEREDOC",
+ $string,
+ {},
+ "heredoc at EOF without trailing newline"
+ );
+
+ fresh_perl_is(
+ "print <<;\n$string\n",
+ $string,
+ { switches => ['-X'] },
+ "blank-terminated heredoc at EOF"
+ );
+ fresh_perl_is(
+ "print <<\n$string\n",
+ $string,
+ { switches => ['-X'] },
+ "blank-terminated heredoc at EOF and no semicolon"
+ );
+ fresh_perl_is(
+ "print <<foo\r\nick and queasy\r\nfoo\r\n",
+ 'ick and queasy',
+ { switches => ['-X'] },
+ "crlf-terminated heredoc"
+ );
+ fresh_perl_is(
+ "print qq|\${\\<<foo}|\nick and queasy\nfoo\n",
+ 'ick and queasy',
+ { switches => ['-w'], stderr => 1 },
+ 'no warning for qq|${\<<foo}| in file'
+ );
+}
+
+
+# here-doc parse failures
+{
+ fresh_perl_like(
+ "print <<HEREDOC;\nwibble\n HEREDOC",
+ qr/find string terminator/,
+ {},
+ "string terminator must start at newline"
+ );
+
+ fresh_perl_like(
+ "print <<;\nno more newlines",
+ qr/find string terminator/,
+ { switches => ['-X'] },
+ "empty string terminator still needs a newline"
+ );
+
+ fresh_perl_like(
+ "print <<ThisTerminatorIsLongerThanTheData;\nno more newlines",
+ qr/find string terminator/,
+ {},
+ "long terminator fails correctly"
+ );
+}
diff --git a/gnu/usr.bin/perl/t/op/inccode.t b/gnu/usr.bin/perl/t/op/inccode.t
index 938a4e0665d..d34e735c39d 100644
--- a/gnu/usr.bin/perl/t/op/inccode.t
+++ b/gnu/usr.bin/perl/t/op/inccode.t
@@ -21,7 +21,7 @@ unless (is_miniperl()) {
use strict;
-plan(tests => 49 + !is_miniperl() * (3 + 14 * $can_fork));
+plan(tests => 60 + !is_miniperl() * (3 + 14 * $can_fork));
sub get_temp_fh {
my $f = tempfile();
@@ -194,12 +194,27 @@ $ret ||= do 'abc.pl';
is( $ret, 'abc', 'do "abc.pl" sees return value' );
{
- my $filename = './Foo.pm';
+ my $got;
#local @INC; # local fails on tied @INC
my @old_INC = @INC; # because local doesn't work on tied arrays
- @INC = sub { $filename = 'seen'; return undef; };
- eval { require $filename; };
- is( $filename, 'seen', 'the coderef sees fully-qualified pathnames' );
+ @INC = ('lib', 'lib/Devel', sub { $got = $_[1]; return undef; });
+ foreach my $filename ('/test_require.pm', './test_require.pm',
+ '../test_require.pm') {
+ local %INC;
+ undef $got;
+ undef $test_require::loaded;
+ eval { require $filename; };
+ is($got, $filename, "the coderef sees the pathname $filename");
+ is($test_require::loaded, undef, 'no module is loaded' );
+ }
+
+ local %INC;
+ undef $got;
+ undef $test_require::loaded;
+
+ eval { require 'test_require.pm'; };
+ is($got, undef, 'the directory is scanned for test_require.pm');
+ is($test_require::loaded, 1, 'the module is loaded');
@INC = @old_INC;
}
@@ -226,6 +241,26 @@ eval 'use foo';
ok( 1, 'returning PVBM ref doesn\'t segfault use' );
shift @INC;
+# [perl #92252]
+{
+ my $die = sub { die };
+ my $data = [];
+ unshift @INC, sub { $die, $data };
+
+ my $initial_sub_refcnt = &Internals::SvREFCNT($die);
+ my $initial_data_refcnt = &Internals::SvREFCNT($data);
+
+ do "foo";
+ is(&Internals::SvREFCNT($die), $initial_sub_refcnt, "no leaks");
+ is(&Internals::SvREFCNT($data), $initial_data_refcnt, "no leaks");
+
+ do "bar";
+ is(&Internals::SvREFCNT($die), $initial_sub_refcnt, "no leaks");
+ is(&Internals::SvREFCNT($data), $initial_data_refcnt, "no leaks");
+
+ shift @INC;
+}
+
exit if is_miniperl();
SKIP: {
diff --git a/gnu/usr.bin/perl/t/op/incfilter.t b/gnu/usr.bin/perl/t/op/incfilter.t
index 582b691d827..6227c4ac371 100644
--- a/gnu/usr.bin/perl/t/op/incfilter.t
+++ b/gnu/usr.bin/perl/t/op/incfilter.t
@@ -13,7 +13,7 @@ use strict;
use Config;
use Filter::Util::Call;
-plan(tests => 144);
+plan(tests => 145);
unshift @INC, sub {
no warnings 'uninitialized';
@@ -216,6 +216,11 @@ do [\'pa', \&generator_with_state,
"pass('And return multiple lines');\n",
]] or die;
+@origlines = keys %{{ "1\n+\n2\n" => 1 }};
+@lines = @origlines;
+do \&generator or die;
+is $origlines[0], "1\n+\n2\n", 'ink filters do not mangle cow buffers';
+
# d8723a6a74b2c12e wasn't perfect, as the char * returned by SvPV*() can be
# a temporary, freed at the next FREETMPS. And there is a FREETMPS in
# pp_require
diff --git a/gnu/usr.bin/perl/t/op/length.t b/gnu/usr.bin/perl/t/op/length.t
index 55260d32b83..b144b097466 100644
--- a/gnu/usr.bin/perl/t/op/length.t
+++ b/gnu/usr.bin/perl/t/op/length.t
@@ -6,7 +6,7 @@ BEGIN {
@INC = '../lib';
}
-plan (tests => 38);
+plan (tests => 41);
print "not " unless length("") == 0;
print "ok 1\n";
@@ -191,7 +191,12 @@ is($u, undef);
my $uo = bless [], 'U';
-is(length($uo), undef, "Length of overloaded reference");
+{
+ my $w;
+ local $SIG{__WARN__} = sub { $w = shift };
+ is(length($uo), 0, "Length of overloaded reference");
+ like $w, qr/uninitialized/, 'uninit warning for stringifying as undef';
+}
my $ul = 3;
is(($ul = length(undef)), undef,
@@ -204,11 +209,14 @@ is(($ul = length($u)), undef,
is($ul, undef, "Assigned length of tied undef with result in TARG");
$ul = 3;
-is(($ul = length($uo)), undef,
+{
+ my $w;
+ local $SIG{__WARN__} = sub { $w = shift };
+ is(($ul = length($uo)), 0,
"Returned length of overloaded undef with result in TARG");
-is($ul, undef, "Assigned length of overloaded undef with result in TARG");
-
-# ok(!defined $uo); Turns you can't test this. FIXME for pp_defined?
+ like $w, qr/uninitialized/, 'uninit warning for stringifying as undef';
+}
+is($ul, 0, "Assigned length of overloaded undef with result in TARG");
{
my $y = "\x{100}BC";
@@ -231,4 +239,10 @@ is($ul, undef, "Assigned length of overloaded undef with result in TARG");
eval ' sub { length my @forecasts } ';
}
+# length could be fooled by UTF8ness of non-magical variables changing with
+# stringification.
+my $ref = [];
+bless $ref, "\x{100}";
+is length $ref, length "$ref", 'length on reference blessed to utf8 class';
+
is($warnings, 0, "There were no other warnings");
diff --git a/gnu/usr.bin/perl/t/op/lex.t b/gnu/usr.bin/perl/t/op/lex.t
index 0789077b5c9..43b4107b992 100755
--- a/gnu/usr.bin/perl/t/op/lex.t
+++ b/gnu/usr.bin/perl/t/op/lex.t
@@ -4,7 +4,7 @@ use warnings;
require './test.pl';
-plan(tests => 4);
+plan(tests => 7);
{
no warnings 'deprecated';
@@ -45,3 +45,31 @@ curr_test(3);
}
+{
+ delete local $ENV{PERL_UNICODE};
+ fresh_perl_is(
+ 'BEGIN{ ++$_ for @INC{"charnames.pm","_charnames.pm"} } "\N{a}"',
+ 'Constant(\N{a}) unknown at - line 1, within string' . "\n"
+ ."Execution of - aborted due to compilation errors.\n",
+ { stderr => 1 },
+ 'correct output (and no crash) when charnames cannot load for \N{...}'
+ );
+}
+fresh_perl_is(
+ 'BEGIN{ ++$_ for @INC{"charnames.pm","_charnames.pm"};
+ $^H{charnames} = "foo" } "\N{a}"',
+ "Undefined subroutine &main::foo called at - line 2.\n"
+ ."Propagated at - line 2, within string\n"
+ ."Execution of - aborted due to compilation errors.\n",
+ { stderr => 1 },
+ 'no crash when charnames cannot load and %^H holds string'
+);
+fresh_perl_is(
+ 'BEGIN{ ++$_ for @INC{"charnames.pm","_charnames.pm"};
+ $^H{charnames} = \"foo" } "\N{a}"',
+ "Not a CODE reference at - line 2.\n"
+ ."Propagated at - line 2, within string\n"
+ ."Execution of - aborted due to compilation errors.\n",
+ { stderr => 1 },
+ 'no crash when charnames cannot load and %^H holds string reference'
+);
diff --git a/gnu/usr.bin/perl/t/op/lex_assign.t b/gnu/usr.bin/perl/t/op/lex_assign.t
index 330bf4eca25..290023cd216 100644
--- a/gnu/usr.bin/perl/t/op/lex_assign.t
+++ b/gnu/usr.bin/perl/t/op/lex_assign.t
@@ -3,6 +3,7 @@
BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
+ require './test.pl';
}
$| = 1;
@@ -24,17 +25,13 @@ sub subb {"in s"}
@INPUT = <DATA>;
@simple_input = grep /^\s*\w+\s*\$\w+\s*[#\n]/, @INPUT;
-print "1..", (11 + @INPUT + @simple_input), "\n";
-$ord = 0;
sub wrn {"@_"}
# Check correct optimization of ucfirst etc
-$ord++;
my $a = "AB";
my $b = "\u\L$a";
-print "not " unless $b eq 'Ab';
-print "ok $ord\n";
+is( $b, 'Ab', 'Check correct optimization of ucfirst, etc');
# Check correct destruction of objects:
my $dc = 0;
@@ -43,23 +40,18 @@ $a=8;
my $b;
{ my $c = 6; $b = bless \$c, "A"}
-$ord++;
-print "not " unless $dc == 0;
-print "ok $ord\n";
+is($dc, 0, 'No destruction yet');
$b = $a+5;
-$ord++;
-print "not " unless $dc == 1;
-print "ok $ord\n";
+is($dc, 1, 'object descruction via reassignment to variable');
-$ord++;
my $xxx = 'b';
$xxx = 'c' . ($xxx || 'e');
-print "not " unless $xxx eq 'cb';
-print "ok $ord\n";
+is( $xxx, 'cb', 'variables can be read before being overwritten');
{ # Check calling STORE
+ note('Tied variables, calling STORE');
my $sc = 0;
sub B::TIESCALAR {bless [11], 'B'}
sub B::FETCH { -(shift->[0]) }
@@ -69,30 +61,18 @@ print "ok $ord\n";
tie $m, 'B';
$m = 100;
- $ord++;
- print "not " unless $sc == 1;
- print "ok $ord\n";
+ is( $sc, 1, 'STORE called when assigning scalar to tied variable' );
my $t = 11;
$m = $t + 89;
- $ord++;
- print "not " unless $sc == 2;
- print "ok $ord\n";
-
- $ord++;
- print "# $m\nnot " unless $m == -117;
- print "ok $ord\n";
+ is( $sc, 2, 'and again' );
+ is( $m, -117, 'checking the tied variable result' );
$m += $t;
- $ord++;
- print "not " unless $sc == 3;
- print "ok $ord\n";
-
- $ord++;
- print "# $m\nnot " unless $m == 89;
- print "ok $ord\n";
+ is( $sc, 3, 'called on self-increment' );
+ is( $m, 89, 'checking the tied variable result' );
}
@@ -102,14 +82,14 @@ my ($l1, $l2, $l3, $l4);
my $zzzz = 12;
$zzz1 = $l1 = $l2 = $zzz2 = $l3 = $l4 = 1 + $zzzz;
-$ord++;
-print "# $zzz1 = $l1 = $l2 = $zzz2 = $l3 = $l4 = 13\nnot "
- unless $zzz1 == 13 and $zzz2 == 13 and $l1 == 13
- and $l2 == 13 and $l3 == 13 and $l4 == 13;
-print "ok $ord\n";
+is($zzz1, 13, 'chain assignment, part1');
+is($zzz2, 13, 'chain assignment, part2');
+is($l1, 13, 'chain assignment, part3');
+is($l2, 13, 'chain assignment, part4');
+is($l3, 13, 'chain assignment, part5');
+is($l4, 13, 'chain assignment, part6');
for (@INPUT) {
- $ord++;
($op, undef, $comment) = /^([^\#]+)(\#\s+(.*))?/;
$comment = $op unless defined $comment;
chomp;
@@ -119,7 +99,13 @@ for (@INPUT) {
$skip = ($op =~ /^'\?\?\?'/ or $comment =~ /skip\(.*\Q$^O\E.*\)/i)
? "skip" : "# '$_'\nnot";
$integer = ($comment =~ /^i_/) ? "use integer" : '' ;
- (print "#skipping $comment:\nok $ord\n"), next if $skip eq 'skip';
+ if ($skip eq 'skip') {
+ SKIP: {
+ skip $comment, 1;
+ pass();
+ }
+ next;
+ }
eval <<EOE;
local \$SIG{__WARN__} = \\&wrn;
@@ -128,23 +114,28 @@ for (@INPUT) {
\$a = $op;
\$b = $expectop;
if (\$a ne \$b) {
- print "# \$comment: got '\$a', expected '\$b'\n";
- print "\$skip " if \$a ne \$b or \$skip eq 'skip';
+ SKIP: {
+ skip "\$comment: got '\$a', expected '\$b'", 1;
+ pass("")
+ }
}
- print "ok \$ord\\n";
+ pass();
EOE
if ($@) {
+ $warning = $@;
+ chomp $warning;
if ($@ =~ /is unimplemented/) {
- print "# skipping $comment: unimplemented:\nok $ord\n";
+ SKIP: {
+ skip $warning, 1;
+ pass($comment);
+ }
} else {
- warn $@;
- print "# '$_'\nnot ok $ord\n";
+ fail($_ . ' ' . $warning);
}
}
}
for (@simple_input) {
- $ord++;
($op, undef, $comment) = /^([^\#]+)(\#\s+(.*))?/;
$comment = $op unless defined $comment;
chomp;
@@ -155,23 +146,28 @@ for (@simple_input) {
\$$variable = $operator \$$variable;
\$toself = \$$variable;
\$direct = $operator "Ac# Ca\\nxxx";
- print "# \\\$$variable = $operator \\\$$variable\\nnot "
- unless \$toself eq \$direct;
- print "ok \$ord\\n";
+ is(\$toself, \$direct);
EOE
if ($@) {
+ $warning = $@;
+ chomp $warning;
if ($@ =~ /is unimplemented/) {
- print "# skipping $comment: unimplemented:\nok $ord\n";
+ SKIP: {
+ skip $warning, 1;
+ pass($comment);
+ }
} elsif ($@ =~ /Can't (modify|take log of 0)/) {
- print "# skipping $comment: syntax not good for selfassign:\nok $ord\n";
+ SKIP: {
+ skip $warning . ' ' . $comment . ' syntax not good for selfassign', 1;
+ pass();
+ }
} else {
- warn $@;
- print "# '$_'\nnot ok $ord\n";
+ ##Something bad happened
+ fail($_ . ' ' . $warning);
}
}
}
-$ord++;
eval {
sub PVBM () { 'foo' }
index 'foo', PVBM;
@@ -183,11 +179,9 @@ eval {
1;
};
-if ($@) {
- warn "# $@";
- print 'not ';
-}
-print "ok $ord\n";
+is($@, '', 'ex-PVBM assert'.$@);
+
+done_testing();
__END__
ref $xref # ref
diff --git a/gnu/usr.bin/perl/t/op/lexsub.t b/gnu/usr.bin/perl/t/op/lexsub.t
new file mode 100644
index 00000000000..0141399020c
--- /dev/null
+++ b/gnu/usr.bin/perl/t/op/lexsub.t
@@ -0,0 +1,713 @@
+#!perl
+
+BEGIN {
+ chdir 't';
+ @INC = '../lib';
+ require './test.pl';
+ *bar::is = *is;
+ *bar::like = *like;
+}
+no warnings 'deprecated';
+plan 136;
+
+# -------------------- Errors with feature disabled -------------------- #
+
+eval "#line 8 foo\nmy sub foo";
+is $@, qq 'Experimental "my" subs not enabled at foo line 8.\n',
+ 'my sub unexperimental error';
+eval "#line 8 foo\nCORE::state sub foo";
+is $@, qq 'Experimental "state" subs not enabled at foo line 8.\n',
+ 'state sub unexperimental error';
+eval "#line 8 foo\nour sub foo";
+is $@, qq 'Experimental "our" subs not enabled at foo line 8.\n',
+ 'our sub unexperimental error';
+
+# -------------------- our -------------------- #
+
+no warnings "experimental::lexical_subs";
+use feature 'lexical_subs';
+{
+ our sub foo { 42 }
+ is foo, 42, 'calling our sub from same package';
+ is &foo, 42, 'calling our sub from same package (amper)';
+ is do foo(), 42, 'calling our sub from same package (do)';
+ package bar;
+ sub bar::foo { 43 }
+ is foo, 42, 'calling our sub from another package';
+ is &foo, 42, 'calling our sub from another package (amper)';
+ is do foo(), 42, 'calling our sub from another package (do)';
+}
+package bar;
+is foo, 43, 'our sub falling out of scope';
+is &foo, 43, 'our sub falling out of scope (called via amper)';
+is do foo(), 43, 'our sub falling out of scope (called via amper)';
+package main;
+{
+ sub bar::a { 43 }
+ our sub a {
+ if (shift) {
+ package bar;
+ is a, 43, 'our sub invisible inside itself';
+ is &a, 43, 'our sub invisible inside itself (called via amper)';
+ is do a(), 43, 'our sub invisible inside itself (called via do)';
+ }
+ 42
+ }
+ a(1);
+ sub bar::b { 43 }
+ our sub b;
+ our sub b {
+ if (shift) {
+ package bar;
+ is b, 42, 'our sub visible inside itself after decl';
+ is &b, 42, 'our sub visible inside itself after decl (amper)';
+ is do b(), 42, 'our sub visible inside itself after decl (do)';
+ }
+ 42
+ }
+ b(1)
+}
+sub c { 42 }
+sub bar::c { 43 }
+{
+ our sub c;
+ package bar;
+ is c, 42, 'our sub foo; makes lex alias for existing sub';
+ is &c, 42, 'our sub foo; makes lex alias for existing sub (amper)';
+ is do c(), 42, 'our sub foo; makes lex alias for existing sub (do)';
+}
+{
+ our sub d;
+ sub bar::d { 'd43' }
+ package bar;
+ sub d { 'd42' }
+ is eval ::d, 'd42', 'our sub foo; applies to subsequent sub foo {}';
+}
+{
+ our sub e ($);
+ is prototype "::e", '$', 'our sub with proto';
+}
+{
+ our sub if() { 42 }
+ my $x = if if if;
+ is $x, 42, 'lexical subs (even our) override all keywords';
+ package bar;
+ my $y = if if if;
+ is $y, 42, 'our subs from other packages override all keywords';
+}
+
+# -------------------- state -------------------- #
+
+use feature 'state'; # state
+{
+ state sub foo { 44 }
+ isnt \&::foo, \&foo, 'state sub is not stored in the package';
+ is eval foo, 44, 'calling state sub from same package';
+ is eval &foo, 44, 'calling state sub from same package (amper)';
+ is eval do foo(), 44, 'calling state sub from same package (do)';
+ package bar;
+ is eval foo, 44, 'calling state sub from another package';
+ is eval &foo, 44, 'calling state sub from another package (amper)';
+ is eval do foo(), 44, 'calling state sub from another package (do)';
+}
+package bar;
+is foo, 43, 'state sub falling out of scope';
+is &foo, 43, 'state sub falling out of scope (called via amper)';
+is do foo(), 43, 'state sub falling out of scope (called via amper)';
+{
+ sub sa { 43 }
+ state sub sa {
+ if (shift) {
+ is sa, 43, 'state sub invisible inside itself';
+ is &sa, 43, 'state sub invisible inside itself (called via amper)';
+ is do sa(), 43, 'state sub invisible inside itself (called via do)';
+ }
+ 44
+ }
+ sa(1);
+ sub sb { 43 }
+ state sub sb;
+ state sub sb {
+ if (shift) {
+ # ‘state sub foo{}’ creates a new pad entry, not reusing the forward
+ # declaration. Being invisible inside itself, it sees the stub.
+ eval{sb};
+ like $@, qr/^Undefined subroutine &sb called at /,
+ 'state sub foo {} after forward declaration';
+ eval{&sb};
+ like $@, qr/^Undefined subroutine &sb called at /,
+ 'state sub foo {} after forward declaration (amper)';
+ eval{do sb()};
+ like $@, qr/^Undefined subroutine &sb called at /,
+ 'state sub foo {} after forward declaration (do)';
+ }
+ 44
+ }
+ sb(1);
+ sub sb2 { 43 }
+ state sub sb2;
+ sub sb2 {
+ if (shift) {
+ package bar;
+ is sb2, 44, 'state sub visible inside itself after decl';
+ is &sb2, 44, 'state sub visible inside itself after decl (amper)';
+ is do sb2(), 44, 'state sub visible inside itself after decl (do)';
+ }
+ 44
+ }
+ sb2(1);
+ state sub sb3;
+ {
+ state sub sb3 { # new pad entry
+ # The sub containing this comment is invisible inside itself.
+ # So this one here will assign to the outer pad entry:
+ sub sb3 { 47 }
+ }
+ }
+ is eval{sb3}, 47,
+ 'sub foo{} applying to "state sub foo;" even inside state sub foo{}';
+ # Same test again, but inside an anonymous sub
+ sub {
+ state sub sb4;
+ {
+ state sub sb4 {
+ sub sb4 { 47 }
+ }
+ }
+ is sb4, 47,
+ 'sub foo{} applying to "state sub foo;" even inside state sub foo{}';
+ }->();
+}
+sub sc { 43 }
+{
+ state sub sc;
+ eval{sc};
+ like $@, qr/^Undefined subroutine &sc called at /,
+ 'state sub foo; makes no lex alias for existing sub';
+ eval{&sc};
+ like $@, qr/^Undefined subroutine &sc called at /,
+ 'state sub foo; makes no lex alias for existing sub (amper)';
+ eval{do sc()};
+ like $@, qr/^Undefined subroutine &sc called at /,
+ 'state sub foo; makes no lex alias for existing sub (do)';
+}
+package main;
+{
+ state sub se ($);
+ is prototype eval{\&se}, '$', 'state sub with proto';
+ is prototype "se", undef, 'prototype "..." ignores state subs';
+}
+{
+ state sub if() { 44 }
+ my $x = if if if;
+ is $x, 44, 'state subs override all keywords';
+ package bar;
+ my $y = if if if;
+ is $y, 44, 'state subs from other packages override all keywords';
+}
+{
+ use warnings; no warnings "experimental::lexical_subs";
+ state $w ;
+ local $SIG{__WARN__} = sub { $w .= shift };
+ eval '#line 87 squidges
+ state sub foo;
+ state sub foo {};
+ ';
+ is $w,
+ '"state" subroutine &foo masks earlier declaration in same scope at '
+ . "squidges line 88.\n",
+ 'warning for state sub masking earlier declaration';
+}
+# Since state vars inside anonymous subs are cloned at the same time as the
+# anonymous subs containing them, the same should happen for state subs.
+sub make_closure {
+ my $x = shift;
+ sub {
+ state sub foo { $x }
+ foo
+ }
+}
+$sub1 = make_closure 48;
+$sub2 = make_closure 49;
+is &$sub1, 48, 'state sub in closure (1)';
+is &$sub2, 49, 'state sub in closure (2)';
+# But we need to test that state subs actually do persist from one invoca-
+# tion of a named sub to another (i.e., that they are not my subs).
+{
+ use warnings; no warnings "experimental::lexical_subs";
+ state $w;
+ local $SIG{__WARN__} = sub { $w .= shift };
+ eval '#line 65 teetet
+ sub foom {
+ my $x = shift;
+ state sub poom { $x }
+ eval{\&poom}
+ }
+ ';
+ is $w, "Variable \"\$x\" will not stay shared at teetet line 67.\n",
+ 'state subs get "Variable will not stay shared" messages';
+ my $poom = foom(27);
+ my $poom2 = foom(678);
+ is eval{$poom->()}, eval {$poom2->()},
+ 'state subs close over the first outer my var, like pkg subs';
+ my $x = 43;
+ for $x (765) {
+ state sub etetetet { $x }
+ is eval{etetetet}, 43, 'state sub ignores for() localisation';
+ }
+}
+# And we also need to test that multiple state subs can close over each
+# other’s entries in the parent subs pad, and that cv_clone is not con-
+# fused by that.
+sub make_anon_with_state_sub{
+ sub {
+ state sub s1;
+ state sub s2 { \&s1 }
+ sub s1 { \&s2 }
+ if (@_) { return \&s1 }
+ is s1,\&s2, 'state sub in anon closure closing over sibling state sub';
+ is s2,\&s1, 'state sub in anon closure closing over sibling state sub';
+ }
+}
+{
+ my $s = make_anon_with_state_sub;
+ &$s;
+
+ # And make sure the state subs were actually cloned.
+ isnt make_anon_with_state_sub->(0), &$s(0),
+ 'state subs in anon subs are cloned';
+ is &$s(0), &$s(0), 'but only when the anon sub is cloned';
+}
+{
+ state sub BEGIN { exit };
+ pass 'state subs are never special blocks';
+ state sub END { shift }
+ is eval{END('jkqeudth')}, jkqeudth,
+ 'state sub END {shift} implies @_, not @ARGV';
+}
+{
+ state sub redef {}
+ use warnings; no warnings "experimental::lexical_subs";
+ state $w;
+ local $SIG{__WARN__} = sub { $w .= shift };
+ eval "#line 56 pygpyf\nsub redef {}";
+ is $w, "Subroutine redef redefined at pygpyf line 56.\n",
+ "sub redefinition warnings from state subs";
+}
+{
+ state sub p (\@) {
+ is ref $_[0], 'ARRAY', 'state sub with proto';
+ }
+ p(my @a);
+ p my @b;
+ state sub q () { 45 }
+ is q(), 45, 'state constant called with parens';
+}
+{
+ state sub x;
+ eval 'sub x {3}';
+ is x, 3, 'state sub defined inside eval';
+
+ sub r {
+ state sub foo { 3 };
+ if (@_) { # outer call
+ r();
+ is foo(), 42,
+ 'state sub run-time redefinition applies to all recursion levels';
+ }
+ else { # inner call
+ eval 'sub foo { 42 }';
+ }
+ }
+ r(1);
+}
+like runperl(
+ switches => [ '-Mfeature=:all' ],
+ prog => 'state sub a { foo ref } a()',
+ stderr => 1
+ ),
+ qr/syntax error/,
+ 'referencing a state sub after a syntax error does not crash';
+
+# -------------------- my -------------------- #
+
+{
+ my sub foo { 44 }
+ isnt \&::foo, \&foo, 'my sub is not stored in the package';
+ is foo, 44, 'calling my sub from same package';
+ is &foo, 44, 'calling my sub from same package (amper)';
+ is do foo(), 44, 'calling my sub from same package (do)';
+ package bar;
+ is foo, 44, 'calling my sub from another package';
+ is &foo, 44, 'calling my sub from another package (amper)';
+ is do foo(), 44, 'calling my sub from another package (do)';
+}
+package bar;
+is foo, 43, 'my sub falling out of scope';
+is &foo, 43, 'my sub falling out of scope (called via amper)';
+is do foo(), 43, 'my sub falling out of scope (called via amper)';
+{
+ sub ma { 43 }
+ my sub ma {
+ if (shift) {
+ is ma, 43, 'my sub invisible inside itself';
+ is &ma, 43, 'my sub invisible inside itself (called via amper)';
+ is do ma(), 43, 'my sub invisible inside itself (called via do)';
+ }
+ 44
+ }
+ ma(1);
+ sub mb { 43 }
+ my sub mb;
+ my sub mb {
+ if (shift) {
+ # ‘my sub foo{}’ creates a new pad entry, not reusing the forward
+ # declaration. Being invisible inside itself, it sees the stub.
+ eval{mb};
+ like $@, qr/^Undefined subroutine &mb called at /,
+ 'my sub foo {} after forward declaration';
+ eval{&mb};
+ like $@, qr/^Undefined subroutine &mb called at /,
+ 'my sub foo {} after forward declaration (amper)';
+ eval{do mb()};
+ like $@, qr/^Undefined subroutine &mb called at /,
+ 'my sub foo {} after forward declaration (do)';
+ }
+ 44
+ }
+ mb(1);
+ sub mb2 { 43 }
+ my sub sb2;
+ sub mb2 {
+ if (shift) {
+ package bar;
+ is mb2, 44, 'my sub visible inside itself after decl';
+ is &mb2, 44, 'my sub visible inside itself after decl (amper)';
+ is do mb2(), 44, 'my sub visible inside itself after decl (do)';
+ }
+ 44
+ }
+ mb2(1);
+ my sub mb3;
+ {
+ my sub mb3 { # new pad entry
+ # The sub containing this comment is invisible inside itself.
+ # So this one here will assign to the outer pad entry:
+ sub mb3 { 47 }
+ }
+ }
+ is eval{mb3}, 47,
+ 'sub foo{} applying to "my sub foo;" even inside my sub foo{}';
+ # Same test again, but inside an anonymous sub
+ sub {
+ my sub mb4;
+ {
+ my sub mb4 {
+ sub mb4 { 47 }
+ }
+ }
+ is mb4, 47,
+ 'sub foo{} applying to "my sub foo;" even inside my sub foo{}';
+ }->();
+}
+sub mc { 43 }
+{
+ my sub mc;
+ eval{mc};
+ like $@, qr/^Undefined subroutine &mc called at /,
+ 'my sub foo; makes no lex alias for existing sub';
+ eval{&mc};
+ like $@, qr/^Undefined subroutine &mc called at /,
+ 'my sub foo; makes no lex alias for existing sub (amper)';
+ eval{do mc()};
+ like $@, qr/^Undefined subroutine &mc called at /,
+ 'my sub foo; makes no lex alias for existing sub (do)';
+}
+package main;
+{
+ my sub me ($);
+ is prototype eval{\&me}, '$', 'my sub with proto';
+ is prototype "me", undef, 'prototype "..." ignores my subs';
+}
+{
+ my sub if() { 44 }
+ my $x = if if if;
+ is $x, 44, 'my subs override all keywords';
+ package bar;
+ my $y = if if if;
+ is $y, 44, 'my subs from other packages override all keywords';
+}
+{
+ use warnings; no warnings "experimental::lexical_subs";
+ my $w ;
+ local $SIG{__WARN__} = sub { $w .= shift };
+ eval '#line 87 squidges
+ my sub foo;
+ my sub foo {};
+ ';
+ is $w,
+ '"my" subroutine &foo masks earlier declaration in same scope at '
+ . "squidges line 88.\n",
+ 'warning for my sub masking earlier declaration';
+}
+# Test that my subs are cloned inside anonymous subs.
+sub mmake_closure {
+ my $x = shift;
+ sub {
+ my sub foo { $x }
+ foo
+ }
+}
+$sub1 = mmake_closure 48;
+$sub2 = mmake_closure 49;
+is &$sub1, 48, 'my sub in closure (1)';
+is &$sub2, 49, 'my sub in closure (2)';
+# Test that they are cloned in named subs.
+{
+ use warnings; no warnings "experimental::lexical_subs";
+ my $w;
+ local $SIG{__WARN__} = sub { $w .= shift };
+ eval '#line 65 teetet
+ sub mfoom {
+ my $x = shift;
+ my sub poom { $x }
+ \&poom
+ }
+ ';
+ is $w, undef, 'my subs get no "Variable will not stay shared" messages';
+ my $poom = mfoom(27);
+ my $poom2 = mfoom(678);
+ is $poom->(), 27, 'my subs closing over outer my var (1)';
+ is $poom2->(), 678, 'my subs closing over outer my var (2)';
+ my $x = 43;
+ my sub aoeu;
+ for $x (765) {
+ my sub etetetet { $x }
+ sub aoeu { $x }
+ is etetetet, 765, 'my sub respects for() localisation';
+ is aoeu, 43, 'unless it is declared outside the for loop';
+ }
+}
+# And we also need to test that multiple my subs can close over each
+# other’s entries in the parent subs pad, and that cv_clone is not con-
+# fused by that.
+sub make_anon_with_my_sub{
+ sub {
+ my sub s1;
+ my sub s2 { \&s1 }
+ sub s1 { \&s2 }
+ if (@_) { return eval { \&s1 } }
+ is eval{s1},eval{\&s2}, 'my sub in anon closure closing over sibling my sub';
+ is eval{s2},eval{\&s1}, 'my sub in anon closure closing over sibling my sub';
+ }
+}
+
+# Test my subs inside predeclared my subs
+{
+ my sub s2;
+ sub s2 {
+ my $x = 3;
+ my sub s3 { eval '$x' }
+ s3;
+ }
+ is s2, 3, 'my sub inside predeclared my sub';
+}
+
+{
+ my $s = make_anon_with_my_sub;
+ &$s;
+
+ # And make sure the my subs were actually cloned.
+ isnt make_anon_with_my_sub->(0), &$s(0),
+ 'my subs in anon subs are cloned';
+ isnt &$s(0), &$s(0), 'at each invocation of the enclosing sub';
+}
+{
+ my sub BEGIN { exit };
+ pass 'my subs are never special blocks';
+ my sub END { shift }
+ is END('jkqeudth'), jkqeudth,
+ 'my sub END {shift} implies @_, not @ARGV';
+}
+{
+ my sub redef {}
+ use warnings; no warnings "experimental::lexical_subs";
+ my $w;
+ local $SIG{__WARN__} = sub { $w .= shift };
+ eval "#line 56 pygpyf\nsub redef {}";
+ is $w, "Subroutine redef redefined at pygpyf line 56.\n",
+ "sub redefinition warnings from my subs";
+
+ undef $w;
+ sub {
+ my sub x {};
+ sub { eval "#line 87 khaki\n\\&x" }
+ }->()();
+ is $w, "Subroutine \"&x\" is not available at khaki line 87.\n",
+ "unavailability warning during compilation of eval in closure";
+
+ undef $w;
+ no warnings 'void';
+ eval <<'->()();';
+#line 87 khaki
+ sub {
+ my sub x{}
+ sub not_lexical8 {
+ \&x
+ }
+ }
+->()();
+ is $w, "Subroutine \"&x\" is not available at khaki line 90.\n",
+ "unavailability warning during compilation of named sub in anon";
+
+ undef $w;
+ sub not_lexical9 {
+ my sub x {};
+ format =
+@
+&x
+.
+ }
+ eval { write };
+ my($f,$l) = (__FILE__,__LINE__ - 1);
+ is $w, "Subroutine \"&x\" is not available at $f line $l.\n",
+ 'unavailability warning during cloning';
+ $l -= 3;
+ is $@, "Undefined subroutine &x called at $f line $l.\n",
+ 'Vivified sub is correctly named';
+}
+sub not_lexical10 {
+ my sub foo;
+ foo();
+ sub not_lexical11 {
+ my sub bar {
+ my $x = 'khaki car keys for the khaki car';
+ not_lexical10();
+ sub foo {
+ is $x, 'khaki car keys for the khaki car',
+ 'mysubs in inner clonables use the running clone of their CvOUTSIDE'
+ }
+ }
+ bar()
+ }
+}
+not_lexical11();
+{
+ my sub p (\@) {
+ is ref $_[0], 'ARRAY', 'my sub with proto';
+ }
+ p(my @a);
+ p @a;
+ my sub q () { 46 }
+ is q(), 46, 'my constant called with parens';
+}
+{
+ my sub x;
+ my $count;
+ sub x { x() if $count++ < 10 }
+ x();
+ is $count, 11, 'my recursive subs';
+}
+{
+ my sub x;
+ eval 'sub x {3}';
+ is x, 3, 'my sub defined inside eval';
+}
+
+{
+ state $w;
+ local $SIG{__WARN__} = sub { $w .= shift };
+ eval q{ my sub george () { 2 } };
+ is $w, undef, 'no double free from constant my subs';
+}
+like runperl(
+ switches => [ '-Mfeature=:all' ],
+ prog => 'my sub a { foo ref } a()',
+ stderr => 1
+ ),
+ qr/syntax error/,
+ 'referencing a my sub after a syntax error does not crash';
+
+# -------------------- Interactions (and misc tests) -------------------- #
+
+is sub {
+ my sub s1;
+ my sub s2 { 3 };
+ sub s1 { state sub foo { \&s2 } foo }
+ s1
+ }->()(), 3, 'state sub inside my sub closing over my sub uncle';
+
+{
+ my sub s2 { 3 };
+ sub not_lexical { state sub foo { \&s2 } foo }
+ is not_lexical->(), 3, 'state subs that reference my sub from outside';
+}
+
+# Test my subs inside predeclared package subs
+# This test also checks that CvOUTSIDE pointers are not mangled when the
+# inner sub’s CvOUTSIDE points to another sub.
+sub not_lexical2;
+sub not_lexical2 {
+ my $x = 23;
+ my sub bar;
+ sub not_lexical3 {
+ not_lexical2();
+ sub bar { $x }
+ };
+ bar
+}
+is not_lexical3, 23, 'my subs inside predeclared package subs';
+
+# Test my subs inside predeclared package sub, where the lexical sub is
+# declared outside the package sub.
+# This checks that CvOUTSIDE pointers are fixed up even when the sub is
+# not declared inside the sub that its CvOUTSIDE points to.
+sub not_lexical5 {
+ my sub foo;
+ sub not_lexical4;
+ sub not_lexical4 {
+ my $x = 234;
+ not_lexical5();
+ sub foo { $x }
+ }
+ foo
+}
+is not_lexical4, 234,
+ 'my sub defined in predeclared pkg sub but declared outside';
+
+undef *not_lexical6;
+{
+ my sub foo;
+ sub not_lexical6 { sub foo { } }
+ pass 'no crash when cloning a mysub declared inside an undef pack sub';
+}
+
+undef &not_lexical7;
+eval 'sub not_lexical7 { my @x }';
+{
+ my sub foo;
+ foo();
+ sub not_lexical7 {
+ state $x;
+ sub foo {
+ is ref \$x, 'SCALAR',
+ "redeffing a mysub's outside does not make it use the wrong pad"
+ }
+ }
+}
+
+like runperl(
+ switches => [ '-Mfeature=:all', '-Mwarnings=FATAL,all', '-M-warnings=experimental::lexical_subs' ],
+ prog => 'my sub foo; sub foo { foo } foo',
+ stderr => 1
+ ),
+ qr/Deep recursion on subroutine "foo"/,
+ 'deep recursion warnings for lexical subs do not crash';
+
+like runperl(
+ switches => [ '-Mfeature=:all', '-Mwarnings=FATAL,all', '-M-warnings=experimental::lexical_subs' ],
+ prog => 'my sub foo() { 42 } undef &foo',
+ stderr => 1
+ ),
+ qr/Constant subroutine foo undefined at /,
+ 'constant undefinition warnings for lexical subs do not crash';
diff --git a/gnu/usr.bin/perl/t/op/loopctl.t b/gnu/usr.bin/perl/t/op/loopctl.t
index 3a8fc9a9ba7..fcb12378467 100644
--- a/gnu/usr.bin/perl/t/op/loopctl.t
+++ b/gnu/usr.bin/perl/t/op/loopctl.t
@@ -36,7 +36,7 @@ BEGIN {
}
require "test.pl";
-plan( tests => 55 );
+plan( tests => 64 );
my $ok;
@@ -1006,3 +1006,101 @@ cmp_ok($ok,'==',1,'dynamically scoped');
}
ok(!$fail, "perl 112316: Labels with the same prefix don't get mixed up.");
}
+
+# [perl #73618]
+{
+ sub foo_73618_0 {
+ while (0) { }
+ }
+ sub bar_73618_0 {
+ my $i = 0;
+ while ($i) { }
+ }
+ sub foo_73618_undef {
+ while (undef) { }
+ }
+ sub bar_73618_undef {
+ my $i = undef;
+ while ($i) { }
+ }
+ sub foo_73618_emptystring {
+ while ("") { }
+ }
+ sub bar_73618_emptystring {
+ my $i = "";
+ while ($i) { }
+ }
+ sub foo_73618_0float {
+ while (0.0) { }
+ }
+ sub bar_73618_0float {
+ my $i = 0.0;
+ while ($i) { }
+ }
+ sub foo_73618_0string {
+ while ("0") { }
+ }
+ sub bar_73618_0string {
+ my $i = "0";
+ while ($i) { }
+ }
+ sub foo_73618_until {
+ until (1) { }
+ }
+ sub bar_73618_until {
+ my $i = 1;
+ until ($i) { }
+ }
+
+ is(scalar(foo_73618_0()), scalar(bar_73618_0()),
+ "constant optimization doesn't change return value");
+ is(scalar(foo_73618_undef()), scalar(bar_73618_undef()),
+ "constant optimization doesn't change return value");
+ is(scalar(foo_73618_emptystring()), scalar(bar_73618_emptystring()),
+ "constant optimization doesn't change return value");
+ is(scalar(foo_73618_0float()), scalar(bar_73618_0float()),
+ "constant optimization doesn't change return value");
+ is(scalar(foo_73618_0string()), scalar(bar_73618_0string()),
+ "constant optimization doesn't change return value");
+ { local $TODO = "until is still wrongly optimized";
+ is(scalar(foo_73618_until()), scalar(bar_73618_until()),
+ "constant optimization doesn't change return value");
+ }
+}
+
+# [perl #113684]
+last_113684:
+{
+ label1:
+ {
+ my $label = "label1";
+ eval { last $label };
+ fail("last with non-constant label");
+ last last_113684;
+ }
+ pass("last with non-constant label");
+}
+next_113684:
+{
+ label2:
+ {
+ my $label = "label2";
+ eval { next $label };
+ fail("next with non-constant label");
+ next next_113684;
+ }
+ pass("next with non-constant label");
+}
+redo_113684:
+{
+ my $count;
+ label3:
+ {
+ if ($count++) {
+ pass("redo with non-constant label"); last redo_113684
+ }
+ my $label = "label3";
+ eval { redo $label };
+ fail("redo with non-constant label");
+ }
+}
diff --git a/gnu/usr.bin/perl/t/op/lop.t b/gnu/usr.bin/perl/t/op/lop.t
index 2c2d2a65e8d..bc4eb85f7e9 100644
--- a/gnu/usr.bin/perl/t/op/lop.t
+++ b/gnu/usr.bin/perl/t/op/lop.t
@@ -7,11 +7,11 @@
BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
+ require './test.pl';
}
-print "1..11\n";
+plan tests => 17;
-my $test = 0;
for my $i (undef, 0 .. 2, "", "0 but true") {
my $true = 1;
my $false = 0;
@@ -29,37 +29,30 @@ for my $i (undef, 0 .. 2, "", "0 but true") {
and (($i || !$j) != (!$i && $j))
);
}
- if (not $true) {
- print "not ";
- } elsif ($false) {
- print "not ";
- }
- print "ok ", ++$test, "\n";
+ my $m = ! defined $i ? 'undef'
+ : $i eq '' ? 'empty string'
+ : $i;
+ ok( $true, "true: $m");
+ ok( ! $false, "false: $m");
}
-# $test == 6
my $i = 0;
(($i ||= 1) &&= 3) += 4;
-print "not " unless $i == 7;
-print "ok ", ++$test, "\n";
+is( $i, 7, '||=, &&=');
my ($x, $y) = (1, 8);
$i = !$x || $y;
-print "not " unless $i == 8;
-print "ok ", ++$test, "\n";
+is( $i, 8, 'negation precedence with ||' );
++$y;
$i = !$x || !$x || !$x || $y;
-print "not " unless $i == 9;
-print "ok ", ++$test, "\n";
+is( $i, 9, 'negation precedence with ||, multiple operands' );
$x = 0;
++$y;
$i = !$x && $y;
-print "not " unless $i == 10;
-print "ok ", ++$test, "\n";
+is( $i, 10, 'negation precedence with &&' );
++$y;
$i = !$x && !$x && !$x && $y;
-print "not " unless $i == 11;
-print "ok ", ++$test, "\n";
+is( $i, 11, 'negation precedence with &&, multiple operands' );
diff --git a/gnu/usr.bin/perl/t/op/mydef.t b/gnu/usr.bin/perl/t/op/mydef.t
index 335033bfe64..b993f1b607c 100644
--- a/gnu/usr.bin/perl/t/op/mydef.t
+++ b/gnu/usr.bin/perl/t/op/mydef.t
@@ -7,7 +7,7 @@ BEGIN {
}
use strict;
-no warnings 'misc';
+no warnings 'misc', 'experimental::lexical_topic';
$_ = 'global';
is($_, 'global', '$_ initial value');
diff --git a/gnu/usr.bin/perl/t/op/negate.t b/gnu/usr.bin/perl/t/op/negate.t
index 8a0ef2b59cc..3b02e35f20a 100755
--- a/gnu/usr.bin/perl/t/op/negate.t
+++ b/gnu/usr.bin/perl/t/op/negate.t
@@ -6,7 +6,7 @@ BEGIN {
require './test.pl';
}
-plan tests => 16;
+plan tests => 46;
# Some of these will cause warnings if left on. Here we're checking the
# functionality, not the warnings.
@@ -19,7 +19,11 @@ is(-"10", -10, "Negation of a positive string to negative");
is(-"10.0", -10, "Negation of a positive decimal sting to negative");
is(-"10foo", -10, "Negation of a numeric-lead string returns negation of numeric");
is(-"-10", 10, 'Negation of string starting with "-" returns a positive number - integer');
+"-10" =~ /(.*)/;
+is(-$1, 10, 'Negation of magical string starting with "-" - integer');
is(-"-10.0", 10.0, 'Negation of string starting with "-" returns a positive number - decimal');
+"-10.0" =~ /(.*)/;
+is(-$1, 10.0, 'Negation of magical string starting with "-" - decimal');
is(-"-10foo", "+10foo", 'Negation of string starting with "-" returns a string starting with "+" - non-numeric');
is(-"xyz", "-xyz", 'Negation of a negative string adds "-" to the front');
is(-"-xyz", "+xyz", "Negation of a negative string to positive");
@@ -28,4 +32,80 @@ is(-bareword, "-bareword", "Negation of bareword treated like a string");
is(- -bareword, "+bareword", "Negation of -bareword returns string +bareword");
is(-" -10", 10, "Negation of a whitespace-lead numeric string");
is(-" -10.0", 10, "Negation of a whitespace-lead decimal string");
-is(-" -10foo", 10, "Negation of a whitespace-lead sting starting with a numeric")
+is(-" -10foo", 10,
+ "Negation of a whitespace-lead sting starting with a numeric");
+
+$x = "dogs";
+()=0+$x;
+is -$x, '-dogs', 'cached numeric value does not sabotage string negation';
+
+is(-"97656250000000000", -97656250000000000, '-bigint vs -"bigint"');
+"9765625000000000" =~ /(\d+)/;
+is -$1, -"$1", '-$1 vs -"$1" with big int';
+
+$a = "%apples";
+chop($au = "%apples\x{100}");
+is(-$au, -$a, 'utf8 flag makes no difference for string negation');
+is -"\x{100}", 0, '-(non-ASCII) is equivalent to -(punct)';
+
+sub TIESCALAR { bless[] }
+sub STORE { $_[0][0] = $_[1] }
+sub FETCH { $_[0][0] }
+
+tie $t, "";
+$a = "97656250000000000";
+() = 0+$a;
+$t = $a;
+is -$t, -97656250000000000, 'magic str+int dualvar';
+
+{ # Repeat most of the tests under use integer
+ use integer;
+ is(- 10, -10, "Simple numeric negation to negative");
+ is(- -10, 10, "Simple numeric negation to positive");
+ is(-"10", -10, "Negation of a positive string to negative");
+ is(-"10.0", -10, "Negation of a positive decimal sting to negative");
+ is(-"10foo", -10,
+ "Negation of a numeric-lead string returns negation of numeric");
+ is(-"-10", 10,
+ 'Negation of string starting with "-" returns a positive number -'
+ .' integer');
+ "-10" =~ /(.*)/;
+ is(-$1, 10, 'Negation of magical string starting with "-" - integer');
+ is(-"-10.0", 10,
+ 'Negation of string starting with "-" returns a positive number - '
+ .'decimal');
+ "-10.0" =~ /(.*)/;
+ is(-$1, 10, 'Negation of magical string starting with "-" - decimal');
+ is(-"-10foo", "+10foo",
+ 'Negation of string starting with "-" returns a string starting '
+ .'with "+" - non-numeric');
+ is(-"xyz", "-xyz",
+ 'Negation of a negative string adds "-" to the front');
+ is(-"-xyz", "+xyz", "Negation of a negative string to positive");
+ is(-"+xyz", "-xyz", "Negation of a positive string to negative");
+ is(-bareword, "-bareword",
+ "Negation of bareword treated like a string");
+ is(- -bareword, "+bareword",
+ "Negation of -bareword returns string +bareword");
+ is(-" -10", 10, "Negation of a whitespace-lead numeric string");
+ is(-" -10.0", 10, "Negation of a whitespace-lead decimal string");
+ is(-" -10foo", 10,
+ "Negation of a whitespace-lead sting starting with a numeric");
+
+ $x = "dogs";
+ ()=0+$x;
+ is -$x, '-dogs',
+ 'cached numeric value does not sabotage string negation';
+
+ $a = "%apples";
+ chop($au = "%apples\x{100}");
+ is(-$au, -$a, 'utf8 flag makes no difference for string negation');
+ is -"\x{100}", 0, '-(non-ASCII) is equivalent to -(punct)';
+}
+
+# [perl #120288] use integer should not stop barewords from being quoted
+{
+ use strict;
+ use integer;
+ is eval "return -a"||$@, "-a", '-bareword under strict+integer';
+}
diff --git a/gnu/usr.bin/perl/t/op/not.t b/gnu/usr.bin/perl/t/op/not.t
index 3d07797daa8..8df5774af46 100755
--- a/gnu/usr.bin/perl/t/op/not.t
+++ b/gnu/usr.bin/perl/t/op/not.t
@@ -6,17 +6,22 @@ BEGIN {
require './test.pl';
}
-plan tests => 16;
+plan tests => 19;
# not() tests
-pass() if not();
-is(not(), 1);
-is(not(), not(0));
+pass("logical negation of empty list") if not();
+is(not(), 1, "logical negation of empty list in numeric comparison");
+is(not(), not(0),
+ "logical negation of empty list compared with logical negation of false value");
# test not(..) and !
-is(! 1, not 1);
-is(! 0, not 0);
-is(! (0, 0), not(0, 0));
+note("parens needed around second argument in next two tests\nto preserve list context inside function call");
+is(! 1, (not 1),
+ "high- and low-precedence logical negation of true value");
+is(! 0, (not 0),
+ "high- and low-precedence logical negation of false value");
+is(! (0, 0), not(0, 0),
+ "high- and low-precedence logical negation of lists");
# test the return of !
{
@@ -24,13 +29,18 @@ is(! (0, 0), not(0, 0));
my $not1 = ! 1;
no warnings;
- ok($not1 == undef);
- ok($not1 == ());
+ ok($not1 == undef,
+ "logical negation (high-precedence) of true value is numerically equal to undefined value");
+ ok($not1 == (),
+ "logical negation (high-precedence) of true value is numerically equal to empty list");
use warnings;
- ok($not1 eq '');
- ok($not1 == 0);
- ok($not0 == 1);
+ ok($not1 eq '',
+ "logical negation (high-precedence) of true value in string context is equal to empty string");
+ ok($not1 == 0,
+ "logical negation (high-precedence) of true value is false in numeric context");
+ ok($not0 == 1,
+ "logical negation (high-precedence) of false value is true in numeric context");
}
# test the return of not
@@ -39,11 +49,30 @@ is(! (0, 0), not(0, 0));
my $not1 = not 1;
no warnings;
- ok($not1 == undef);
- ok($not1 == ());
+ ok($not1 == undef,
+ "logical negation (low-precedence) of true value is numerically equal to undefined value");
+ ok($not1 == (),
+ "logical negation (low-precedence) of true value is numerically equal to empty list");
use warnings;
- ok($not1 eq '');
- ok($not1 == 0);
- ok($not0 == 1);
+ ok($not1 eq '',
+ "logical negation (low-precedence) of true value in string context is equal to empty string");
+ ok($not1 == 0,
+ "logical negation (low-precedence) of true value is false in numeric context");
+ ok($not0 == 1,
+ "logical negation (low-precedence) of false value is true in numeric context");
+}
+
+# test truth of dualvars
+SKIP:
+{
+ my $got_dualvar;
+ eval 'use Scalar::Util "dualvar"; $got_dualvar++';
+ skip "No Scalar::Util::dualvar", 3 unless $got_dualvar;
+ my $a = Scalar::Util::dualvar(3, "");
+ is not($a), 1, 'not(dualvar) ignores int when string is false';
+ my $b = Scalar::Util::dualvar(3.3,"");
+ is not($b), 1, 'not(dualvar) ignores float when string is false';
+ my $c = Scalar::Util::dualvar(0,"1");
+ is not($c), "", 'not(dualvar) ignores false int when string is true';
}
diff --git a/gnu/usr.bin/perl/t/op/or.t b/gnu/usr.bin/perl/t/op/or.t
index 1f40d61ed5b..5260780509d 100644
--- a/gnu/usr.bin/perl/t/op/or.t
+++ b/gnu/usr.bin/perl/t/op/or.t
@@ -37,20 +37,20 @@ my $a_num = sprintf "%d", $a;
$c = $a || $b;
-is($c, $a_str);
-is($c+0, $a_num); # force numeric context.
+is($c, $a_str, "comparison of string equality");
+is($c+0, $a_num, "comparison of numeric equality"); # force numeric context.
$a =~ /./g or die "Match failed for some reason"; # Make $a magic
$c = $a || $b;
-is($c, $a_str);
-is($c+0, $a_num); # force numeric context.
+is($c, $a_str, "comparison of string equality");
+is($c+0, $a_num, "comparison of numeric equality"); # force numeric context.
my $val = 3;
$c = $val || $b;
-is($c, 3);
+is($c, 3, "|| short-circuited as expected");
tie $a, 'Countdown', $val;
diff --git a/gnu/usr.bin/perl/t/op/overload_integer.t b/gnu/usr.bin/perl/t/op/overload_integer.t
index 073ac2a55c1..2375ab94c4e 100644
--- a/gnu/usr.bin/perl/t/op/overload_integer.t
+++ b/gnu/usr.bin/perl/t/op/overload_integer.t
@@ -1,9 +1,15 @@
#!./perl
+BEGIN {
+ chdir 't' if -d 't';
+ push @INC, '../lib';
+ require './test.pl';
+}
+
use strict;
use warnings;
-print "1..2\n";
+plan tests => 2;
package Foo;
@@ -11,7 +17,7 @@ use overload;
sub import
{
- overload::constant 'integer' => sub { return shift; };
+ overload::constant 'integer' => sub { return shift };
}
package main;
@@ -21,35 +27,9 @@ BEGIN { $INC{'Foo.pm'} = "/lib/Foo.pm" }
use Foo;
my $result = eval "5+6";
-
my $error = $@;
+$result //= '';
-my $label = "No exception was thrown with an overload::constant 'integer' inside an eval.";
-# TEST
-if ($error eq "")
-{
- print "ok 1 - $label\n"
-}
-else
-{
- print "not ok 1 - $label\n";
- print "# Error is $error\n";
-}
-
-$label = "Correct solution";
-
-if (!defined($result))
-{
- $result = "";
-}
-# TEST
-if ($result eq 11)
-{
- print "ok 2 - $label\n";
-}
-else
-{
- print "not ok 2 - $label\n";
- print "# Result is $result\n";
-}
+is ($error, '', "No exception was thrown with an overload::constant 'integer' inside an eval.");
+is ($result, 11, "Correct solution");
diff --git a/gnu/usr.bin/perl/t/op/override.t b/gnu/usr.bin/perl/t/op/override.t
index b38c3938a18..a3cb14a30fb 100644
--- a/gnu/usr.bin/perl/t/op/override.t
+++ b/gnu/usr.bin/perl/t/op/override.t
@@ -49,7 +49,6 @@ is( $r, "Foo.pm" );
eval "use Foo::Bar";
is( $r, join($dirsep, "Foo", "Bar.pm") );
-# use VERSION also loads feature.pm.
{
my @r;
local *CORE::GLOBAL::require = sub { push @r, shift; 1; };
@@ -64,6 +63,11 @@ is( $r, join($dirsep, "Foo", "Bar.pm") );
}
{
+ BEGIN {
+ # Can’t do ‘no warnings’ with CORE::GLOBAL::require overridden. :-)
+ CORE::require warnings;
+ unimport warnings 'experimental::lexical_topic';
+ }
my $_ = 'bar.pm';
require;
is( $r, 'bar.pm' );
diff --git a/gnu/usr.bin/perl/t/op/pos.t b/gnu/usr.bin/perl/t/op/pos.t
index 56a8d28bb06..4c50aa92b67 100644
--- a/gnu/usr.bin/perl/t/op/pos.t
+++ b/gnu/usr.bin/perl/t/op/pos.t
@@ -6,35 +6,35 @@ BEGIN {
require './test.pl';
}
-plan tests => 8;
+plan tests => 12;
$x='banana';
$x=~/.a/g;
-is(pos($x), 2);
+is(pos($x), 2, "matching, pos() leaves off at offset 2");
$x=~/.z/gc;
-is(pos($x), 2);
+is(pos($x), 2, "not matching, pos() remains at offset 2");
sub f { my $p=$_[0]; return $p }
$x=~/.a/g;
-is(f(pos($x)), 4);
+is(f(pos($x)), 4, "matching again, pos() next leaves off at offset 4");
# Is pos() set inside //g? (bug id 19990615.008)
$x = "test string?"; $x =~ s/\w/pos($x)/eg;
-is($x, "0123 5678910?");
+is($x, "0123 5678910?", "pos() set inside //g");
$x = "123 56"; $x =~ / /g;
-is(pos($x), 4);
+is(pos($x), 4, "matching, pos() leaves off at offset 4");
{ local $x }
-is(pos($x), 4);
+is(pos($x), 4, "value of pos() unaffected by intermediate localization");
# Explicit test that triggers the utf8_mg_len_cache_update() code path in
# Perl_sv_pos_b2u().
$x = "\x{100}BC";
$x =~ m/.*/g;
-is(pos $x, 3);
+is(pos $x, 3, "utf8_mg_len_cache_update() test");
my $destroyed;
@@ -47,3 +47,19 @@ $destroyed = 0;
$x = bless({}, 'Class');
}
is($destroyed, 1, 'Timely scalar destruction with lvalue pos');
+
+eval 'pos @a = 1';
+like $@, qr/^Can't modify array dereference in match position at /,
+ 'pos refuses @arrays';
+eval 'pos %a = 1';
+like $@, qr/^Can't modify hash dereference in match position at /,
+ 'pos refuses %hashes';
+eval 'pos *a = 1';
+is eval 'pos *a', 1, 'pos *glob works';
+
+# Test that UTF8-ness of $1 changing does not confuse pos
+"f" =~ /(f)/; "$1"; # first make sure UTF8-ness is off
+"\x{100}a" =~ /(..)/; # give PL_curpm a UTF8 string; $1 does not know yet
+pos($1) = 2; # set pos; was ignoring UTF8-ness
+"$1"; # turn on UTF8 flag
+is pos($1), 2, 'pos is not confused about changing UTF8-ness';
diff --git a/gnu/usr.bin/perl/t/op/pow.t b/gnu/usr.bin/perl/t/op/pow.t
index c6a7ad6385b..4cfeed1e631 100644
--- a/gnu/usr.bin/perl/t/op/pow.t
+++ b/gnu/usr.bin/perl/t/op/pow.t
@@ -37,11 +37,11 @@ is(3**1, 3, "positive ** 1 = self");
is(3**2, 9, "positive ** 2 = positive");
is(3**3, 27, "(positive int) ** (odd power) is positive");
-# And test order of operations while we're at it
-is(-3**0, -1);
-is(-3**1, -3);
-is(-3**2, -9);
-is(-3**3, -27);
+# And test order of operations while we are at it
+is(-3**0, -1, "positive ** 0, then negated, = -1");
+is(-3**1, -3, "positive ** 1, then negated, = negative of self");
+is(-3**2, -9, "positive ** 2, then negated, = negative of square");
+is(-3**3, -27, "(positive int) ** (odd power), then negated, is negative");
# Ought to be 32, 64, 36 or something like that.
diff --git a/gnu/usr.bin/perl/t/op/pwent.t b/gnu/usr.bin/perl/t/op/pwent.t
index 970f4e9c589..7562bc07984 100644
--- a/gnu/usr.bin/perl/t/op/pwent.t
+++ b/gnu/usr.bin/perl/t/op/pwent.t
@@ -96,6 +96,8 @@ if (!defined $where && $Config::Config{useperlio}) {
}
}
if (@rec) {
+ # see above
+ no warnings 'uninitialized';
push @lines, join (':', @rec) . "\n";
}
my $data = join '', @lines;
@@ -215,7 +217,7 @@ SKIP: {
EOEX
}
- cmp_ok(keys %perfect, '>', 0)
+ cmp_ok(keys %perfect, '>', 0, "pwent test satisfactory")
or note("(not necessarily serious: run t/op/pwent.t by itself)");
}
@@ -241,6 +243,7 @@ for (1..$max) {
}
endpwent();
-is("@pw1", "@pw2");
+is("@pw1", "@pw2",
+ "getpwent() produced identical results in list and scalar contexts");
close(PW);
diff --git a/gnu/usr.bin/perl/t/op/qr.t b/gnu/usr.bin/perl/t/op/qr.t
index 90535d059c2..ac017eb2083 100644
--- a/gnu/usr.bin/perl/t/op/qr.t
+++ b/gnu/usr.bin/perl/t/op/qr.t
@@ -2,9 +2,12 @@
use strict;
-require './test.pl';
+BEGIN {
+ chdir 't';
+ require './test.pl';
+}
-plan(tests => 18);
+plan(tests => 32);
sub r {
return qr/Good/;
@@ -56,3 +59,54 @@ $$e = 'Fake!';
is($$e, 'Fake!');
object_ok($e, 'Stew');
like("$e", qr/\Stew=SCALAR\(0x[0-9a-f]+\)\z/);
+
+# [perl #96230] qr// should not have the reuse-last-pattern magic
+"foo" =~ /foo/;
+like "bar",qr//,'[perl #96230] =~ qr// does not reuse last successful pat';
+"foo" =~ /foo/;
+$_ = "bar";
+$_ =~ s/${qr||}/baz/;
+is $_, "bazbar", '[perl #96230] s/$qr// does not reuse last pat';
+
+{
+ my $x = 1.1; $x = ${qr//};
+ pass 'no assertion failure when upgrading NV to regexp';
+}
+
+sub TIESCALAR{bless[]}
+sub STORE { is ref\pop, "REGEXP", "stored regexp" }
+tie my $t, "";
+$t = ${qr||};
+ok tied $t, 'tied var is still tied after regexp assignment';
+
+bless \my $t2;
+$t2 = ${qr||};
+is ref \$t2, 'main', 'regexp assignment is not maledictory';
+
+{
+ my $w;
+ local $SIG{__WARN__}=sub{$w=$_[0]};
+ $_ = 1.1;
+ $_ = ${qr//};
+ is 0+$_, 0, 'double upgraded to regexp';
+ like $w, 'numeric', 'produces non-numeric warning';
+ undef $w;
+ $_ = 1;
+ $_ = ${qr//};
+ is 0+$_, 0, 'int upgraded to regexp';
+ like $w, 'numeric', 'likewise produces non-numeric warning';
+}
+
+sub {
+ $_[0] = ${qr=crumpets=};
+ is ref\$_[0], 'REGEXP', 'PVLVs';
+ # Don’t use like() here, as we would no longer be testing a PVLV.
+ ok " crumpets " =~ $_[0], 'using a regexpvlv as regexp';
+ my $x = $_[0];
+ is ref\$x, 'REGEXP', 'copying a regexpvlv';
+ $_[0] = ${qr//};
+ my $str = "".qr//;
+ $_[0] .= " ";
+ is $_[0], "$str ", 'stringifying regexpvlv in place';
+}
+ ->((\my%hash)->{key});
diff --git a/gnu/usr.bin/perl/t/op/require_errors.t b/gnu/usr.bin/perl/t/op/require_errors.t
index 23df8b1676b..e3239486bec 100644
--- a/gnu/usr.bin/perl/t/op/require_errors.t
+++ b/gnu/usr.bin/perl/t/op/require_errors.t
@@ -3,20 +3,32 @@ use strict;
use warnings;
BEGIN {
+ chdir 't';
require './test.pl';
}
-plan(tests => 3);
+plan(tests => 11);
my $nonfile = tempfile();
@INC = qw(Perl Rules);
-eval {
- require $nonfile;
-};
+# The tests for ' ' and '.h' never did fail, but previously the error reporting
+# code would read memory before the start of the SV's buffer
-like $@, qr/^Can't locate $nonfile in \@INC \(\@INC contains: @INC\) at/;
+for my $file ($nonfile, ' ') {
+ eval {
+ require $file;
+ };
+
+ like $@, qr/^Can't locate $file in \@INC \(\@INC contains: @INC\) at/,
+ "correct error message for require '$file'";
+}
+
+eval "require $nonfile";
+
+like $@, qr/^Can't locate $nonfile\.pm in \@INC \(you may need to install the $nonfile module\) \(\@INC contains: @INC\) at/,
+ "correct error message for require $nonfile";
eval {
require "$nonfile.ph";
@@ -24,11 +36,77 @@ eval {
like $@, qr/^Can't locate $nonfile\.ph in \@INC \(did you run h2ph\?\) \(\@INC contains: @INC\) at/;
-eval {
- require "$nonfile.h";
-};
+for my $file ("$nonfile.h", ".h") {
+ eval {
+ require $file
+ };
+
+ like $@, qr/^Can't locate \Q$file\E in \@INC \(change \.h to \.ph maybe\?\) \(did you run h2ph\?\) \(\@INC contains: @INC\) at/,
+ "correct error message for require '$file'";
+}
+
+for my $file ("$nonfile.ph", ".ph") {
+ eval {
+ require $file
+ };
+
+ like $@, qr/^Can't locate \Q$file\E in \@INC \(did you run h2ph\?\) \(\@INC contains: @INC\) at/,
+ "correct error message for require '$file'";
+}
+
+eval 'require <foom>';
+like $@, qr/^<> should be quotes at /, 'require <> error';
+
+my $module = tempfile();
+my $mod_file = "$module.pm";
+
+open my $module_fh, ">", $mod_file or die $!;
+print { $module_fh } "print 1; 1;\n";
+close $module_fh;
+
+chmod 0333, $mod_file;
+
+SKIP: {
+ skip_if_miniperl("these modules may not be available to miniperl", 2);
+
+ push @INC, '../lib';
+ require Cwd;
+ require File::Spec::Functions;
+ if ($^O eq 'cygwin') {
+ require Win32;
+ }
+
+ # Going to try to switch away from root. Might not work.
+ # (stolen from t/op/stat.t)
+ my $olduid = $>;
+ eval { $> = 1; };
+ skip "Can't test permissions meaningfully if you're superuser", 2
+ if ($^O eq 'cygwin' ? Win32::IsAdminUser() : $> == 0);
+
+ local @INC = ".";
+ eval "use $module";
+ like $@,
+ qr<^\QCan't locate $mod_file:>,
+ "special error message if the file exists but can't be opened";
+
+ SKIP: {
+ skip "Can't make the path absolute", 1
+ if !defined(Cwd::getcwd());
+
+ my $file = File::Spec::Functions::catfile(Cwd::getcwd(), $mod_file);
+ eval {
+ require($file);
+ };
+ like $@,
+ qr<^\QCan't locate $file:>,
+ "...even if we use a full path";
+ }
+
+ # switch uid back (may not be implemented)
+ eval { $> = $olduid; };
+}
-like $@, qr/^Can't locate $nonfile\.h in \@INC \(change \.h to \.ph maybe\?\) \(did you run h2ph\?\) \(\@INC contains: @INC\) at/;
+1 while unlink $mod_file;
# I can't see how to test the EMFILE case
# I can't see how to test the case of not displaying @INC in the message.
diff --git a/gnu/usr.bin/perl/t/op/reset.t b/gnu/usr.bin/perl/t/op/reset.t
index 3094979a678..291bc393ade 100644
--- a/gnu/usr.bin/perl/t/op/reset.t
+++ b/gnu/usr.bin/perl/t/op/reset.t
@@ -7,8 +7,7 @@ BEGIN {
}
use strict;
-# Currently only testing the reset of patterns.
-plan tests => 24;
+plan tests => 30;
package aiieee;
@@ -62,6 +61,65 @@ CLINK::reset_ZZIP();
is(CLINK::ZZIP("ZZIP"), 1, "match matches after reset");
is(CLINK::ZZIP(""), 0, "mismatch doesn't match");
+sub match_foo{
+ "foo" =~ m?foo?;
+}
+match_foo();
+reset "";
+ok !match_foo(), 'reset "" leaves patterns alone [perl #97958]';
+
+$scratch::a = "foo";
+$scratch::a2 = "bar";
+$scratch::b = "baz";
+package scratch { reset "a" }
+is join("-", $scratch::a//'u', $scratch::a2//'u', $scratch::b//'u'),
+ "u-u-baz",
+ 'reset "char"';
+
+$scratch::a = "foo";
+$scratch::a2 = "bar";
+$scratch::b = "baz";
+$scratch::c = "sea";
+package scratch { reset "bc" }
+is join("-", $scratch::a//'u', $scratch::a2//'u', $scratch::b//'u',
+ $scratch::c//'u'),
+ "foo-bar-u-u",
+ 'reset "chars"';
+
+$scratch::a = "foo";
+$scratch::a2 = "bar";
+$scratch::b = "baz";
+$scratch::c = "sea";
+package scratch { reset "a-b" }
+is join("-", $scratch::a//'u', $scratch::a2//'u', $scratch::b//'u',
+ $scratch::c//'u'),
+ "u-u-u-sea",
+ 'reset "range"';
+
+{ no strict; ${"scratch::\0foo"} = "bar" }
+$scratch::a = "foo";
+package scratch { reset "\0a" }
+is join("-", $scratch::a//'u', do { no strict; ${"scratch::\0foo"} }//'u'),
+ "u-u",
+ 'reset "\0char"';
+
+# This used to crash under threaded builds, because pmops were remembering
+# their stashes by name, rather than by pointer.
+fresh_perl_is( # it crashes more reliably with a smaller script
+ 'package bar;
+ sub foo {
+ m??;
+ BEGIN { *baz:: = *bar::; *bar:: = *foo:: }
+ # The name "bar" no langer refers to the same package
+ }
+ undef &foo; # so freeing the op does not remove it from the stash’s list
+ $_ = "";
+ push @_, ($_) x 10000; # and its memory is scribbled over
+ reset; # so reset on the original package tries to reset an invalid op
+ print "ok\n";',
+ "ok\n", {},
+ "no crash if package is effectively renamed before op is freed");
+
undef $/;
my $prog = <DATA>;
diff --git a/gnu/usr.bin/perl/t/op/reverse.t b/gnu/usr.bin/perl/t/op/reverse.t
index 916724c0df7..0796614ffbf 100644
--- a/gnu/usr.bin/perl/t/op/reverse.t
+++ b/gnu/usr.bin/perl/t/op/reverse.t
@@ -8,46 +8,46 @@ BEGIN {
plan tests => 26;
-is(reverse("abc"), "cba");
+is(reverse("abc"), "cba", 'simple reverse');
$_ = "foobar";
-is(reverse(), "raboof");
+is(reverse(), "raboof", 'reverse of the default variable');
{
my @a = ("foo", "bar");
my @b = reverse @a;
- is($b[0], $a[1]);
- is($b[1], $a[0]);
+ is($b[0], $a[1], 'array reversal moved second element to first');
+ is($b[1], $a[0], 'array reversal moved first element to second');
}
{
my @a = (1, 2, 3, 4);
@a = reverse @a;
- is("@a", "4 3 2 1");
+ is("@a", "4 3 2 1", 'four element array reversed');
delete $a[1];
@a = reverse @a;
- ok(!exists $a[2]);
- is($a[0] . $a[1] . $a[3], '124');
+ ok(!exists $a[2], 'array reversed with deleted second element');
+ is($a[0] . $a[1] . $a[3], '124', 'remaining elements ok after delete and reverse');
@a = (5, 6, 7, 8, 9);
@a = reverse @a;
- is("@a", "9 8 7 6 5");
+ is("@a", "9 8 7 6 5", 'five element array reversed');
delete $a[3];
@a = reverse @a;
- ok(!exists $a[1]);
- is($a[0] . $a[2] . $a[3] . $a[4], '5789');
+ ok(!exists $a[1], 'five element array reversed with deleted fourth element');
+ is($a[0] . $a[2] . $a[3] . $a[4], '5789', 'remaining elements ok after delete and reverse');
delete $a[2];
@a = reverse @a;
- ok(!exists $a[2] && !exists $a[3]);
- is($a[0] . $a[1] . $a[4], '985');
+ ok(!exists $a[2] && !exists $a[3], 'test position of two deleted elements after reversal');
+ is($a[0] . $a[1] . $a[4], '985', 'check value of remaining elements');
my @empty;
@empty = reverse @empty;
- is("@empty", "");
+ is("@empty", "", 'reversed empty array is still empty');
}
use Tie::Array;
@@ -57,30 +57,30 @@ use Tie::Array;
@a = (1, 2, 3, 4);
@a = reverse @a;
- is("@a", "4 3 2 1");
+ is("@a", "4 3 2 1", 'tie array reversal');
delete $a[1];
@a = reverse @a;
- ok(!exists $a[2]);
- is($a[0] . $a[1] . $a[3], '124');
+ ok(!exists $a[2], 'deleted element position ok after reversal of tie array');
+ is($a[0] . $a[1] . $a[3], '124', 'remaining elements ok after delete and reversal for tie array');
@a = (5, 6, 7, 8, 9);
@a = reverse @a;
- is("@a", "9 8 7 6 5");
+ is("@a", "9 8 7 6 5", 'five element tie array reversal');
delete $a[3];
@a = reverse @a;
- ok(!exists $a[1]);
- is($a[0] . $a[2] . $a[3] . $a[4], '5789');
+ ok(!exists $a[1], 'deleted element position ok after tie array reversal');
+ is($a[0] . $a[2] . $a[3] . $a[4], '5789', 'remaining elements ok after tie array delete and reversal');
delete $a[2];
@a = reverse @a;
- ok(!exists $a[2] && !exists $a[3]);
- is($a[0] . $a[1] . $a[4], '985');
+ ok(!exists $a[2] && !exists $a[3], 'two deleted element positions ok after tie array reversal');
+ is($a[0] . $a[1] . $a[4], '985', 'remaining elements ok after two deletes and reversals');
tie my @empty, "Tie::StdArray";
@empty = reverse @empty;
- is(scalar(@empty), 0);
+ is(scalar(@empty), 0, 'reversed tie array still empty after reversal');
}
{
@@ -89,17 +89,18 @@ use Tie::Array;
my $a = "\x{263A}\x{263A}x\x{263A}y\x{263A}";
my $b = scalar reverse($a);
my $c = scalar reverse($b);
- is($a, $c);
+ is($a, $c, 'Unicode string double reversal matches original');
}
{
# Lexical $_.
+ no warnings 'experimental::lexical_topic';
sub blurp { my $_ = shift; reverse }
- is(blurp("foo"), "oof");
- is(sub { my $_ = shift; reverse }->("bar"), "rab");
+ is(blurp("foo"), "oof", 'reversal of default variable in function');
+ is(sub { my $_ = shift; reverse }->("bar"), "rab", 'reversal of default variable in anonymous function');
{
local $_ = "XXX";
- is(blurp("paz"), "zap");
+ is(blurp("paz"), "zap", 'reversal of default variable with local value set' );
}
}
diff --git a/gnu/usr.bin/perl/t/op/sigdispatch.t b/gnu/usr.bin/perl/t/op/sigdispatch.t
index 8161a7192dc..1ce047d9b45 100644
--- a/gnu/usr.bin/perl/t/op/sigdispatch.t
+++ b/gnu/usr.bin/perl/t/op/sigdispatch.t
@@ -9,7 +9,8 @@ BEGIN {
use strict;
use Config;
-plan tests => 26;
+plan tests => 29;
+$| = 1;
watchdog(15);
@@ -147,3 +148,16 @@ like $@, qr/No such hook: __DIE__\\0whoops at/;
$SIG{"KILL\0"} = sub { 1 };
like $w, qr/No such signal: SIGKILL\\0 at/, 'Arbitrary signal lookup through %SIG is clean';
}
+
+# [perl #45173]
+{
+ my $int_called;
+ local $SIG{INT} = sub { $int_called = 1; };
+ $@ = "died";
+ is($@, "died");
+ kill 'INT', $$;
+ # this is needed to ensure signal delivery on MSWin32
+ sleep(1);
+ is($int_called, 1);
+ is($@, "died");
+}
diff --git a/gnu/usr.bin/perl/t/op/sigsystem.t b/gnu/usr.bin/perl/t/op/sigsystem.t
index 197ecb28732..ddfebf969b2 100644
--- a/gnu/usr.bin/perl/t/op/sigsystem.t
+++ b/gnu/usr.bin/perl/t/op/sigsystem.t
@@ -17,6 +17,13 @@ SKIP: {
require POSIX;
require Time::HiRes;
+ my @pids;
+ $SIG{CHLD} = sub {
+ while ((my $child = waitpid(-1, POSIX::WNOHANG())) > 0) {
+ note "Reaped: $child";
+ push @pids, $child;
+ }
+ };
my $pid = fork // die "Can't fork: $!";
unless ($pid) {
note("Child PID: $$");
@@ -26,14 +33,6 @@ SKIP: {
test_system('without reaper');
- my @pids;
- $SIG{CHLD} = sub {
- while ((my $child = waitpid(-1, POSIX::WNOHANG())) > 0) {
- note "Reaped: $child";
- push @pids, $child;
- }
- };
-
test_system('with reaper');
note("Waiting briefly for SIGCHLD...");
diff --git a/gnu/usr.bin/perl/t/op/smartkve.t b/gnu/usr.bin/perl/t/op/smartkve.t
index ad56e6a9c4e..3cd5b492d05 100644
--- a/gnu/usr.bin/perl/t/op/smartkve.t
+++ b/gnu/usr.bin/perl/t/op/smartkve.t
@@ -14,12 +14,31 @@ plan 'no_plan';
sub j { join(":",@_) }
+# NOTE
+#
+# Hash insertion is currently unstable, in that
+# %hash= %otherhash will not necessarily result in
+# the same internal ordering of the data in the hash.
+# For instance when keys collide the copy may not
+# match the inserted order. So we declare one hash
+# and then make all our copies from that, which should
+# mean all the copies have the same internal structure.
+#
+# And these days, even if all that weren't true, we now
+# per-hash randomize keys/values. So, we cant expect two
+# hashes with the same internal structure to return the
+# same thing at all. All we *can* expect is that keys()
+# and values() use the same ordering.
+our %base_hash;
+
BEGIN { # in BEGIN for "use constant ..." later
+ # values match keys here so we can easily check that keys(%hash) == values(%hash)
+ %base_hash= ( pi => 'pi', e => 'e', i => 'i' );
$array = [ qw(pi e i) ];
- $values = [ 3.14, 2.72, -1 ];
- $hash = { pi => 3.14, e => 2.72, i => -1 } ;
+ $values = [ qw(pi e i) ];
+ $hash = { %base_hash } ;
$data = {
- hash => { %$hash },
+ hash => { %base_hash },
array => [ @$array ],
};
}
@@ -27,7 +46,7 @@ BEGIN { # in BEGIN for "use constant ..." later
package Foo;
sub new {
my $self = {
- hash => {%{$main::hash} },
+ hash => { %base_hash },
array => [@{$main::array}]
};
bless $self, shift;
@@ -58,10 +77,10 @@ use overload '@{}' => sub { $main::array }, fallback => 1;
package main;
-use constant CONST_HASH => { %$hash };
+use constant CONST_HASH => { %base_hash };
use constant CONST_ARRAY => [ @$array ];
-my %a_hash = %$hash;
+my %a_hash = %base_hash;
my @an_array = @$array;
sub hash_sub { return \%a_hash; }
sub array_sub { return \@an_array; }
@@ -106,16 +125,25 @@ is(keys $obj->array ,3, 'Scalar: keys $obj->array');
# Keys -- list
-$h_expect = j(keys %$hash);
+$h_expect = j(sort keys %base_hash);
$a_expect = j(keys @$array);
-is(j(keys $hash) ,$h_expect, 'List: keys $hash');
-is(j(keys $data->{hash}) ,$h_expect, 'List: keys $data->{hash}');
-is(j(keys CONST_HASH) ,$h_expect, 'List: keys CONST_HASH');
-is(j(keys CONST_HASH()) ,$h_expect, 'List: keys CONST_HASH()');
-is(j(keys hash_sub) ,$h_expect, 'List: keys hash_sub');
-is(j(keys hash_sub()) ,$h_expect, 'List: keys hash_sub()');
-is(j(keys $obj->hash) ,$h_expect, 'List: keys $obj->hash');
+is(j(sort keys $hash) ,$h_expect, 'List: sort keys $hash');
+is(j(sort keys $data->{hash}) ,$h_expect, 'List: sort keys $data->{hash}');
+is(j(sort keys CONST_HASH) ,$h_expect, 'List: sort keys CONST_HASH');
+is(j(sort keys CONST_HASH()) ,$h_expect, 'List: sort keys CONST_HASH()');
+is(j(sort keys hash_sub) ,$h_expect, 'List: sort keys hash_sub');
+is(j(sort keys hash_sub()) ,$h_expect, 'List: sort keys hash_sub()');
+is(j(sort keys $obj->hash) ,$h_expect, 'List: sort keys $obj->hash');
+
+is(j(keys $hash) ,j(values $hash), 'List: keys $hash == values $hash');
+is(j(keys $data->{hash}) ,j(values $data->{hash}), 'List: keys $data->{hash} == values $data->{hash}');
+is(j(keys CONST_HASH) ,j(values CONST_HASH), 'List: keys CONST_HASH == values CONST_HASH');
+is(j(keys CONST_HASH()) ,j(values CONST_HASH()), 'List: keys CONST_HASH() == values CONST_HASH()');
+is(j(keys hash_sub) ,j(values hash_sub), 'List: keys hash_sub == values hash_sub');
+is(j(keys hash_sub()) ,j(values hash_sub()), 'List: keys hash_sub() == values hash_sub()');
+is(j(keys $obj->hash) ,j(values $obj->hash), 'List: keys $obj->hash == values obj->hash');
+
is(j(keys $array) ,$a_expect, 'List: keys $array');
is(j(keys $data->{array}) ,$a_expect, 'List: keys $data->{array}');
is(j(keys CONST_ARRAY) ,$a_expect, 'List: keys CONST_ARRAY');
@@ -168,7 +196,7 @@ ok($@ =~ $errpat,
'Errors: keys qr/foo/ throws error'
);
-eval "keys $hash qw/fo bar/";
+eval q"keys $hash qw/fo bar/";
ok($@ =~ qr/syntax error/,
'Errors: keys $hash, @stuff throws error'
) or print "# Got: $@";
@@ -209,16 +237,25 @@ is(values $obj->array ,3, 'Scalar: values $obj->array');
# Values -- list
-$h_expect = j(values %$hash);
+$h_expect = j(sort values %base_hash);
$a_expect = j(values @$array);
-is(j(values $hash) ,$h_expect, 'List: values $hash');
-is(j(values $data->{hash}) ,$h_expect, 'List: values $data->{hash}');
-is(j(values CONST_HASH) ,$h_expect, 'List: values CONST_HASH');
-is(j(values CONST_HASH()) ,$h_expect, 'List: values CONST_HASH()');
-is(j(values hash_sub) ,$h_expect, 'List: values hash_sub');
-is(j(values hash_sub()) ,$h_expect, 'List: values hash_sub()');
-is(j(values $obj->hash) ,$h_expect, 'List: values $obj->hash');
+is(j(sort values $hash) ,$h_expect, 'List: sort values $hash');
+is(j(sort values $data->{hash}) ,$h_expect, 'List: sort values $data->{hash}');
+is(j(sort values CONST_HASH) ,$h_expect, 'List: sort values CONST_HASH');
+is(j(sort values CONST_HASH()) ,$h_expect, 'List: sort values CONST_HASH()');
+is(j(sort values hash_sub) ,$h_expect, 'List: sort values hash_sub');
+is(j(sort values hash_sub()) ,$h_expect, 'List: sort values hash_sub()');
+is(j(sort values $obj->hash) ,$h_expect, 'List: sort values $obj->hash');
+
+is(j(values $hash) ,j(keys $hash), 'List: values $hash == keys $hash');
+is(j(values $data->{hash}) ,j(keys $data->{hash}), 'List: values $data->{hash} == keys $data->{hash}');
+is(j(values CONST_HASH) ,j(keys CONST_HASH), 'List: values CONST_HASH == keys CONST_HASH');
+is(j(values CONST_HASH()) ,j(keys CONST_HASH()), 'List: values CONST_HASH() == keys CONST_HASH()');
+is(j(values hash_sub) ,j(keys hash_sub), 'List: values hash_sub == keys hash_sub');
+is(j(values hash_sub()) ,j(keys hash_sub()), 'List: values hash_sub() == keys hash_sub()');
+is(j(values $obj->hash) ,j(keys $obj->hash), 'List: values $obj->hash == keys $obj->hash');
+
is(j(values $array) ,$a_expect, 'List: values $array');
is(j(values $data->{array}) ,$a_expect, 'List: values $data->{array}');
is(j(values CONST_ARRAY) ,$a_expect, 'List: values CONST_ARRAY');
@@ -263,7 +300,7 @@ ok($@ =~ $errpat,
'Errors: values qr/foo/ throws error'
);
-eval "values $hash qw/fo bar/";
+eval q"values $hash qw/fo bar/";
ok($@ =~ qr/syntax error/,
'Errors: values $hash, @stuff throws error'
) or print "# Got: $@";
@@ -372,7 +409,7 @@ ok($@ =~ $errpat,
'Errors: each qr/foo/ throws error'
);
-eval "each $hash qw/foo bar/";
+eval q"each $hash qw/foo bar/";
ok($@ =~ qr/syntax error/,
'Errors: each $hash, @stuff throws error'
) or print "# Got: $@";
diff --git a/gnu/usr.bin/perl/t/op/smartmatch.t b/gnu/usr.bin/perl/t/op/smartmatch.t
index 79c9847fbf3..ed4b3ec88dc 100644
--- a/gnu/usr.bin/perl/t/op/smartmatch.t
+++ b/gnu/usr.bin/perl/t/op/smartmatch.t
@@ -8,6 +8,7 @@ BEGIN {
use strict;
use warnings;
no warnings 'uninitialized';
+no warnings 'experimental::smartmatch';
use Tie::Array;
use Tie::Hash;
diff --git a/gnu/usr.bin/perl/t/op/splice.t b/gnu/usr.bin/perl/t/op/splice.t
index bc6fb402722..d462f0c1671 100644
--- a/gnu/usr.bin/perl/t/op/splice.t
+++ b/gnu/usr.bin/perl/t/op/splice.t
@@ -1,41 +1,47 @@
#!./perl
-print "1..21\n";
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
+}
+
+$| = 1;
@a = (1..10);
sub j { join(":",@_) }
-print "not " unless j(splice(@a,@a,0,11,12)) eq "" && j(@a) eq j(1..12);
-print "ok 1\n";
+is( j(splice(@a,@a,0,11,12)), '', 'return value of splice when nothing is removed, only added');
+is( j(@a), j(1..12), '... added two elements');
-print "not " unless j(splice(@a,-1)) eq "12" && j(@a) eq j(1..11);
-print "ok 2\n";
+is( j(splice(@a,-1)), "12", 'remove last element, return value');
+is( j(@a), j(1..11), '... removed last element');
-print "not " unless j(splice(@a,0,1)) eq "1" && j(@a) eq j(2..11);
-print "ok 3\n";
+is( j(splice(@a,0,1)), "1", 'remove first element, return value');
+is( j(@a), j(2..11), '... first element removed');
-print "not " unless j(splice(@a,0,0,0,1)) eq "" && j(@a) eq j(0..11);
-print "ok 4\n";
+is( j(splice(@a,0,0,0,1)), "", 'emulate shift, return value is empty');
+is( j(@a), j(0..11), '... added two elements to beginning of the list');
-print "not " unless j(splice(@a,5,1,5)) eq "5" && j(@a) eq j(0..11);
-print "ok 5\n";
+is( j(splice(@a,5,1,5)), "5", 'remove and replace an element to the end of the list, return value is the element');
+is( j(@a), j(0..11), '... list remains the same');
-print "not " unless j(splice(@a, @a, 0, 12, 13)) eq "" && j(@a) eq j(0..13);
-print "ok 6\n";
+is( j(splice(@a, @a, 0, 12, 13)), "", 'push two elements onto the end of the list, return value is empty');
+is( j(@a), j(0..13), '... added two elements to the end of the list');
-print "not " unless j(splice(@a, -@a, @a, 1, 2, 3)) eq j(0..13) && j(@a) eq j(1..3);
-print "ok 7\n";
+is( j(splice(@a, -@a, @a, 1, 2, 3)), j(0..13), 'splice the whole list out, add 3 elements, return value is @a');
+is( j(@a), j(1..3), '... array only contains new elements');
-print "not " unless j(splice(@a, 1, -1, 7, 7)) eq "2" && j(@a) eq j(1,7,7,3);
-print "ok 8\n";
+is( j(splice(@a, 1, -1, 7, 7)), "2", 'replace middle element with two elements, negative offset, return value is the element' );
+is( j(@a), j(1,7,7,3), '... array 1,7,7,3');
-print "not " unless j(splice(@a,-3,-2,2)) eq j(7) && j(@a) eq j(1,2,7,3);
-print "ok 9\n";
+is( j(splice(@a,-3,-2,2)), j(7), 'replace first 7 with a 2, negative offset, negative length, return value is 7');
+is( j(@a), j(1,2,7,3), '... array has 1,2,7,3');
# Bug 20000223.001 - no test for splice(@array). Destructive test!
-print "not " unless j(splice(@a)) eq j(1,2,7,3) && j(@a) eq '';
-print "ok 10\n";
+is( j(splice(@a)), j(1,2,7,3), 'bare splice empties the array, return value is the array');
+is( j(@a), '', 'array is empty');
# Tests 11 and 12:
# [ID 20010711.005] in Tie::Array, SPLICE ignores context, breaking SHIFT
@@ -44,56 +50,46 @@ my $foo;
@a = ('red', 'green', 'blue');
$foo = splice @a, 1, 2;
-print "not " unless $foo eq 'blue';
-print "ok 11\n";
+is( $foo, 'blue', 'remove a single element in scalar context');
@a = ('red', 'green', 'blue');
$foo = shift @a;
-print "not " unless $foo eq 'red';
-print "ok 12\n";
+is( $foo, 'red', 'do the same with shift');
# Bug [perl #30568] - insertions of deleted elements
@a = (1, 2, 3);
splice( @a, 0, 3, $a[1], $a[0] );
-print "not " unless j(@a) eq j(2,1);
-print "ok 13\n";
+is( j(@a), j(2,1), 'splice and replace with indexes 1, 0');
@a = (1, 2, 3);
splice( @a, 0, 3 ,$a[0], $a[1] );
-print "not " unless j(@a) eq j(1,2);
-print "ok 14\n";
+is( j(@a), j(1,2), 'splice and replace with indexes 0, 1');
@a = (1, 2, 3);
splice( @a, 0, 3 ,$a[2], $a[1], $a[0] );
-print "not " unless j(@a) eq j(3,2,1);
-print "ok 15\n";
+is( j(@a), j(3,2,1), 'splice and replace with indexes 2, 1, 0');
@a = (1, 2, 3);
splice( @a, 0, 3, $a[0], $a[1], $a[2], $a[0], $a[1], $a[2] );
-print "not " unless j(@a) eq j(1,2,3,1,2,3);
-print "ok 16\n";
+is( j(@a), j(1,2,3,1,2,3), 'splice and replace with a whole bunch');
@a = (1, 2, 3);
splice( @a, 1, 2, $a[2], $a[1] );
-print "not " unless j(@a) eq j(1,3,2);
-print "ok 17\n";
+is( j(@a), j(1,3,2), 'swap last two elements');
@a = (1, 2, 3);
splice( @a, 1, 2, $a[1], $a[1] );
-print "not " unless j(@a) eq j(1,2,2);
-print "ok 18\n";
+is( j(@a), j(1,2,2), 'duplicate middle element on the end');
# splice should invoke get magic
-print "not " if Foo->isa('Bar');
-print "ok 19\n";
+ok( ! Foo->isa('Bar'), 'Foo is not a Bar');
splice @Foo::ISA, 0, 0, 'Bar';
-
-print "not " if !Foo->isa('Bar');
-print "ok 20\n";
+ok( !oo->isa('Bar'), 'splice @ISA and make Foo a Bar');
# Test undef first arg
eval { splice( $new_arrayref, 0, 0, 1, 2, 3 ) };
-print "not " unless $@ && $@ =~ /Not an ARRAY/;
-print "ok 21\n";
+like($@, qr/Not an ARRAY/, 'undefined first argument to splice');
+
+done_testing;
diff --git a/gnu/usr.bin/perl/t/op/split_unicode.t b/gnu/usr.bin/perl/t/op/split_unicode.t
index 85ba4d3a5d2..887adcc11f7 100644
--- a/gnu/usr.bin/perl/t/op/split_unicode.t
+++ b/gnu/usr.bin/perl/t/op/split_unicode.t
@@ -3,7 +3,7 @@
BEGIN {
require './test.pl';
skip_all_if_miniperl("no dynamic loading on miniperl, no File::Spec (used by charnames)");
- plan(tests => 150);
+ plan(tests => 151);
}
{
@@ -61,4 +61,18 @@ BEGIN {
ok(@r3 == 3 && join('-', @r3) eq "-:A:-:B", "$msg - /\\s+/ No.2");
is($c3, scalar(@r3), "$msg - /\\s+/ No.2 (count)");
}
+
+ { # RT #114808
+ warning_is(
+ sub {
+ $p=chr(0x100);
+ for (".","ab\x{101}def") {
+ @q = split /$p/
+ }
+ },
+ undef,
+ 'no warnings when part of split cant match non-utf8'
+ );
+ }
+
}
diff --git a/gnu/usr.bin/perl/t/op/srand.t b/gnu/usr.bin/perl/t/op/srand.t
index 3d49126268c..5321cde6568 100644
--- a/gnu/usr.bin/perl/t/op/srand.t
+++ b/gnu/usr.bin/perl/t/op/srand.t
@@ -10,7 +10,7 @@ BEGIN {
use strict;
require "test.pl";
-plan(tests => 9);
+plan(tests => 10);
# Generate a load of random numbers.
# int() avoids possible floating point error.
@@ -79,3 +79,12 @@ cmp_ok( $seed, '==', 0, "numeric 0 return value for srand(0)");
is( $b, 0, "Quacks like a zero");
is( "@warnings", "", "Does not warn");
}
+
+# [perl #40605]
+{
+ use warnings;
+ my $w = '';
+ local $SIG{__WARN__} = sub { $w .= $_[0] };
+ srand(2**100);
+ like($w, qr/^Integer overflow in srand at /, "got a warning");
+}
diff --git a/gnu/usr.bin/perl/t/op/stash.t b/gnu/usr.bin/perl/t/op/stash.t
index 3c315255c60..fd5450e40bd 100644
--- a/gnu/usr.bin/perl/t/op/stash.t
+++ b/gnu/usr.bin/perl/t/op/stash.t
@@ -7,7 +7,7 @@ BEGIN {
BEGIN { require "./test.pl"; }
-plan( tests => 57 );
+plan( tests => 58 );
# Used to segfault (bug #15479)
fresh_perl_like(
@@ -63,6 +63,13 @@ package main;
'',
'',
);
+ # Variant of the above which creates an object that persists until global
+ # destruction.
+ fresh_perl_is(
+ 'use Exporter; package A; sub a { // }; %::=""',
+ '',
+ '',
+ );
}
# now tests in eval
@@ -280,11 +287,8 @@ fresh_perl_is(
'ref() returns the same thing when an object’s stash is moved';
::like "$obj", qr "^rile=ARRAY\(0x[\da-f]+\)\z",
'objects stringify the same way when their stashes are moved';
- {
- local $::TODO = $Config{useithreads} ? "fails under threads" : undef;
- ::is eval '__PACKAGE__', 'rile',
+ ::is eval '__PACKAGE__', 'rile',
'__PACKAGE__ returns the same when the current stash is moved';
- }
# Now detach it completely from the symtab, making it effect-
# ively anonymous
@@ -297,11 +301,8 @@ fresh_perl_is(
'ref() returns the same thing when an object’s stash is detached';
::like "$obj", qr "^rile=ARRAY\(0x[\da-f]+\)\z",
'objects stringify the same way when their stashes are detached';
- {
- local $::TODO = $Config{useithreads} ? "fails under threads" : undef;
- ::is eval '__PACKAGE__', 'rile',
+ ::is eval '__PACKAGE__', 'rile',
'__PACKAGE__ returns the same when the current stash is detached';
- }
}
# Setting the name during undef %stash:: should have no effect.
diff --git a/gnu/usr.bin/perl/t/op/state.t b/gnu/usr.bin/perl/t/op/state.t
index 65f368b0a15..ad51d8be672 100644
--- a/gnu/usr.bin/perl/t/op/state.t
+++ b/gnu/usr.bin/perl/t/op/state.t
@@ -9,7 +9,7 @@ BEGIN {
use strict;
-plan tests => 131;
+plan tests => 132;
# Before loading feature.pm, test it with CORE::
ok eval 'CORE::state $x = 1;', 'CORE::state outside of feature.pm scope';
@@ -211,6 +211,7 @@ my $first = $stones [0];
my $First = ucfirst $first;
$_ = "bambam";
foreach my $flint (@stones) {
+ no warnings 'experimental::lexical_topic';
state $_ = $flint;
is $_, $first, 'state $_';
ok /$first/, '/.../ binds to $_';
@@ -311,6 +312,7 @@ foreach my $x (0 .. 4) {
#
my @spam = qw [spam ham bacon beans];
foreach my $spam (@spam) {
+ no warnings 'experimental::smartmatch';
given (state $spam = $spam) {
when ($spam [0]) {ok 1, "given"}
default {ok 0, "given"}
@@ -404,6 +406,17 @@ foreach my $forbidden (<DATA>) {
}
+# [perl #117095] state var initialisation getting skipped
+# the 'if 0' code below causes a call to op_free at compile-time,
+# which used to inadvertently mark the state var as initialised.
+
+{
+ state $f = 1;
+ foo($f) if 0; # this calls op_free on padmy($f)
+ ok(defined $f, 'state init not skipped');
+}
+
+
__DATA__
state ($a) = 1;
(state $a) = 1;
diff --git a/gnu/usr.bin/perl/t/op/sub.t b/gnu/usr.bin/perl/t/op/sub.t
index b8e514dd88d..c4121dfda14 100644
--- a/gnu/usr.bin/perl/t/op/sub.t
+++ b/gnu/usr.bin/perl/t/op/sub.t
@@ -6,7 +6,7 @@ BEGIN {
require './test.pl';
}
-plan( tests => 14 );
+plan( tests => 16 );
sub empty_sub {}
@@ -64,3 +64,24 @@ is(scalar(@test), 0, 'Didnt return anything');
isnt \sub { ()=\@_; return shift }->($x), \$x,
'result of shift is copied when explicitly returned';
}
+
+fresh_perl_is
+ <<'end', "main::foo\n", {}, 'sub redefinition sets CvGV';
+*foo = \&baz;
+*bar = *foo;
+eval 'sub bar { print +(caller 0)[3], "\n" }';
+bar();
+end
+
+fresh_perl_is
+ <<'end', "main::foo\nok\n", {}, 'no double free redefining anon stub';
+my $sub = sub { 4 };
+*foo = $sub;
+*bar = *foo;
+undef &$sub;
+eval 'sub bar { print +(caller 0)[3], "\n" }';
+&$sub;
+undef *foo;
+undef *bar;
+print "ok\n";
+end
diff --git a/gnu/usr.bin/perl/t/op/sub_lval.t b/gnu/usr.bin/perl/t/op/sub_lval.t
index b2f56e3374a..9be3164bcdc 100644
--- a/gnu/usr.bin/perl/t/op/sub_lval.t
+++ b/gnu/usr.bin/perl/t/op/sub_lval.t
@@ -3,7 +3,7 @@ BEGIN {
@INC = '../lib';
require './test.pl';
}
-plan tests=>191;
+plan tests=>192;
sub a : lvalue { my $a = 34; ${\(bless \$a)} } # Return a temporary
sub b : lvalue { ${\shift} }
@@ -962,3 +962,8 @@ sub ucfr : lvalue {
}
}
ucfr();
+
+# [perl #117947] XSUBs should not be treated as lvalues at run time
+eval { &{\&utf8::is_utf8}("") = 3 };
+like $@, qr/^Can't modify non-lvalue subroutine call at /,
+ 'XSUB not seen at compile time dies in lvalue context';
diff --git a/gnu/usr.bin/perl/t/op/svleak.pl b/gnu/usr.bin/perl/t/op/svleak.pl
new file mode 100644
index 00000000000..9e1352e9266
--- /dev/null
+++ b/gnu/usr.bin/perl/t/op/svleak.pl
@@ -0,0 +1 @@
+<<END
diff --git a/gnu/usr.bin/perl/t/op/svleak.t b/gnu/usr.bin/perl/t/op/svleak.t
index df10953b111..71bfbb734e5 100644
--- a/gnu/usr.bin/perl/t/op/svleak.t
+++ b/gnu/usr.bin/perl/t/op/svleak.t
@@ -13,7 +13,9 @@ BEGIN {
or skip_all("XS::APItest not available");
}
-plan tests => 21;
+use Config;
+
+plan tests => 124;
# run some code N times. If the number of SVs at the end of loop N is
# greater than (N-1)*delta at the end of loop 1, we've got a leak
@@ -30,6 +32,15 @@ sub leak {
cmp_ok($sv1-$sv0, '<=', ($n-1)*$delta, @rest);
}
+# Like leak, but run a string eval instead.
+# The code is used instead of the test name
+# if the name is absent.
+sub eleak {
+ my ($n,$delta,$code,@rest) = @_;
+ leak $n, $delta, sub { eval $code },
+ @rest ? @rest : $code
+}
+
# run some expression N times. The expr is concatenated N times and then
# evaled, ensuring that that there are no scope exits between executions.
# If the number of SVs at the end of expr N is greater than (N-1)*delta at
@@ -58,6 +69,53 @@ leak(5, 0, sub {}, "basic check 1 of leak test infrastructure");
leak(5, 0, sub {push @a,1;pop @a}, "basic check 2 of leak test infrastructure");
leak(5, 1, sub {push @a,1;}, "basic check 3 of leak test infrastructure");
+# Fatal warnings
+my $f = "use warnings FATAL =>";
+my $all = "$f 'all';";
+eleak(2, 0, "$f 'deprecated'; qq|\\c\{|", 'qq|\c{| with fatal warnings');
+eleak(2, 0, "$f 'syntax'; qq|\\c`|", 'qq|\c`| with fatal warnings');
+eleak(2, 0, "$all /\$\\ /", '/$\ / with fatal warnings');
+eleak(2, 0, "$all s//\\1/", 's//\1/ with fatal warnings');
+eleak(2, 0, "$all qq|\\i|", 'qq|\i| with fatal warnings');
+eleak(2, 0, "$f 'digit'; qq|\\o{9}|", 'qq|\o{9}| with fatal warnings');
+eleak(2, 0, "$f 'misc'; sub foo{} sub foo:lvalue",
+ 'ignored :lvalue with fatal warnings');
+eleak(2, 0, "no warnings; use feature ':all'; $f 'misc';
+ my sub foo{} sub foo:lvalue",
+ 'ignored mysub :lvalue with fatal warnings');
+eleak(2, 0, "no warnings; use feature ':all'; $all
+ my sub foo{} sub foo:lvalue{}",
+ 'fatal mysub redef warning');
+eleak(2, 0, "$all sub foo{} sub foo{}", 'fatal sub redef warning');
+eleak(2, 0, "$all *x=sub {}",
+ 'fatal sub redef warning with sub-to-glob assignment');
+eleak(2, 0, "$all *x=sub() {1}",
+ 'fatal const sub redef warning with sub-to-glob assignment');
+eleak(2, 0, "$all XS::APItest::newCONSTSUB(\\%main::=>name=>0=>1)",
+ 'newCONSTSUB sub redefinition with fatal warnings');
+eleak(2, 0, "$f 'misc'; my\$a,my\$a", 'double my with fatal warnings');
+eleak(2, 0, "$f 'misc'; our\$a,our\$a", 'double our with fatal warnings');
+eleak(2, 0, "$f 'closure';
+ sub foo { my \$x; format=\n\@\n\$x\n.\n} write; ",
+ 'format closing over unavailable var with fatal warnings');
+eleak(2, 0, "$all /(?{})?/ ", '(?{})? with fatal warnings');
+eleak(2, 0, "$all /(?{})+/ ", '(?{})+ with fatal warnings');
+eleak(2, 0, "$all /[\\i]/ ", 'invalid charclass escape with fatal warns');
+eleak(2, 0, "$all /[:foo:]/ ", '/[:foo:]/ with fatal warnings');
+eleak(2, 0, "$all /[a-\\d]/ ", '[a-\d] char class with fatal warnings');
+eleak(2, 0, "$all v111111111111111111111111111111111111111111111111",
+ 'vstring num overflow with fatal warnings');
+
+eleak(2, 0, 'sub{<*>}');
+# Use a random number of ops, so that the glob op does not reuse the same
+# address each time, giving us false passes.
+leak(2, 0, sub { eval '$x+'x(1 + rand() * 100) . '<*>'; },
+ 'freeing partly iterated glob');
+
+eleak(2, 0, 'goto sub {}', 'goto &sub in eval');
+eleak(2, 0, '() = sort { goto sub {} } 1,2', 'goto &sub in sort');
+eleak(2, 0, '/(?{ goto sub {} })/', 'goto &sub in regexp');
+
sub TIEARRAY { bless [], $_[0] }
sub FETCH { $_[0]->[$_[1]] }
sub STORE { $_[0]->[$_[1]] = $_[2] }
@@ -68,6 +126,19 @@ sub STORE { $_[0]->[$_[1]] = $_[2] }
leak(5, 0, sub {local $a[0]}, "local \$tied[0]");
}
+# Overloading
+require overload;
+eleak(2, 0, "BEGIN{overload::constant integer=>sub{}} 1,1,1,1,1,1,1,1,1,1",
+ '"too many errors" from constant overloading returning undef');
+# getting this one to leak was complicated; we have to unset LOCALIZE_HH:
+eleak(2, 0, 'BEGIN{overload::constant integer=>sub{}; $^H &= ~ 0x00020000}
+ 1,1,1,1,1,1,1,1,1,1',
+ '"too many errors" from constant overloading with $^H sabotaged');
+eleak(2, 0, "BEGIN{overload::constant integer=>sub{}; undef %^H}
+ 1,1,1,1,1,1,1,1,1,1",
+ '"too many errors" from constant overloading with %^H undefined');
+
+
# [perl #74484] repeated tries leaked SVs on the tmps stack
leak_expr(5, 0, q{"YYYYYa" =~ /.+?(a(.+?)|b)/ }, "trie leak");
@@ -129,6 +200,9 @@ SKIP:
ok(!$weak, "hash referenced weakened SV released");
}
+# prototype() errors
+leak(2,0, sub { eval { prototype "CORE::fu" } }, 'prototype errors');
+
# RT #72246: rcatline memory leak on bad $/
leak(2, 0,
@@ -159,4 +233,220 @@ leak(2, 0,
}, "named regexp captures");
}
+eleak(2,0,'/[:]/');
+eleak(2,0,'/[\xdf]/i');
+eleak(2,0,'s![^/]!!');
+eleak(2,0,'/[pp]/');
+eleak(2,0,'/[[:ascii:]]/');
+eleak(2,0,'/[[.zog.]]/');
+eleak(2,0,'/[.zog.]/');
+eleak(2,0,'no warnings; /(?[])/');
+eleak(2,0,'no warnings; /(?[[a]+[b]])/');
+eleak(2,0,'no warnings; /(?[[a]-[b]])/');
+eleak(2,0,'no warnings; /(?[[a]&[b]])/');
+eleak(2,0,'no warnings; /(?[[a]|[b]])/');
+eleak(2,0,'no warnings; /(?[[a]^[b]])/');
+eleak(2,0,'no warnings; /(?[![a]])/');
+eleak(2,0,'no warnings; /(?[\p{Word}])/');
+eleak(2,0,'no warnings; /(?[[a]+)])/');
+eleak(2,0,'no warnings; /(?[\d\d)])/');
+
+# These can generate one ref count, but just once.
+eleak(4,1,'chr(0x100) =~ /[[:punct:]]/');
+eleak(4,1,'chr(0x100) =~ /[[:^punct:]]/');
+eleak(4,1,'chr(0x100) =~ /[[:word:]]/');
+eleak(4,1,'chr(0x100) =~ /[[:^word:]]/');
+
+eleak(2,0,'chr(0x100) =~ /\P{Assigned}/');
+leak(2,0,sub { /(??{})/ }, '/(??{})/');
+
leak(2,0,sub { !$^V }, '[perl #109762] version object in boolean context');
+
+
+# [perl #114356] run-time rexexp with unchanging pattern got
+# inflated refcounts
+eleak(2, 0, q{ my $x = "x"; "abc" =~ /$x/ for 1..5 }, '#114356');
+
+eleak(2, 0, 'sub', '"sub" with nothing following');
+eleak(2, 0, '+sub:a{}', 'anon subs with invalid attributes');
+eleak(2, 0, 'no warnings; sub a{1 1}', 'sub with syntax error');
+eleak(2, 0, 'no warnings; sub {1 1}', 'anon sub with syntax error');
+eleak(2, 0, 'no warnings; use feature ":all"; my sub a{1 1}',
+ 'my sub with syntax error');
+
+# Reification (or lack thereof)
+leak(2, 0, sub { sub { local $_[0]; shift }->(1) },
+ 'local $_[0] on surreal @_, followed by shift');
+leak(2, 0, sub { sub { local $_[0]; \@_ }->(1) },
+ 'local $_[0] on surreal @_, followed by reification');
+
+# Syntax errors
+eleak(2, 0, '"${<<END}"
+ ', 'unterminated here-doc in quotes in multiline eval');
+eleak(2, 0, '"${<<END
+ }"', 'unterminated here-doc in multiline quotes in eval');
+leak(2, 0, sub { eval { do './op/svleak.pl' } },
+ 'unterminated here-doc in file');
+eleak(2, 0, 'tr/9-0//');
+eleak(2, 0, 'tr/a-z-0//');
+eleak(2, 0, 'no warnings; nonexistent_function 33838',
+ 'bareword followed by number');
+eleak(2, 0, '//dd;'x20, '"too many errors" when parsing m// flags');
+eleak(2, 0, 's///dd;'x20, '"too many errors" when parsing s/// flags');
+eleak(2, 0, 'no warnings; 2 2;BEGIN{}',
+ 'BEGIN block after syntax error');
+{
+ local %INC; # in case Errno is already loaded
+ eleak(2, 0, 'no warnings; 2@!{',
+ 'implicit "use Errno" after syntax error');
+}
+eleak(2, 0, "\"\$\0\356\"", 'qq containing $ <null> something');
+eleak(2, 0, 'END OF TERMS AND CONDITIONS', 'END followed by words');
+eleak(2, 0, "+ + +;qq|\\N{a}|"x10,'qq"\N{a}" after errors');
+eleak(2, 0, "qq|\\N{%}|", 'qq"\N{%}" (invalid charname)');
+eleak(2, 0, "qq|\\N{au}|;", 'qq"\N{invalid}"');
+eleak(2, 0, "qq|\\c|;"x10, '"too many errors" from qq"\c"');
+eleak(2, 0, "qq|\\o|;"x10, '"too many errors" from qq"\o"');
+eleak(2, 0, "qq|\\x{|;"x10, '"too many errors" from qq"\x{"');
+eleak(2, 0, "qq|\\N|;"x10, '"too many errors" from qq"\N"');
+eleak(2, 0, "qq|\\N{|;"x10, '"too many errors" from qq"\N{"');
+eleak(2, 0, "qq|\\N{U+GETG}|;"x10,'"too many errors" from qq"\N{U+JUNK}"');
+
+
+# [perl #114764] Attributes leak scalars
+leak(2, 0, sub { eval 'my $x : shared' }, 'my $x :shared used to leak');
+
+eleak(2, 0, 'ref: 1', 'labels');
+
+# Tied hash iteration was leaking if the hash was freed before itera-
+# tion was over.
+package t {
+ sub TIEHASH { bless [] }
+ sub FIRSTKEY { 0 }
+}
+leak(2, 0, sub {
+ my $h = {};
+ tie %$h, t;
+ each %$h;
+ undef $h;
+}, 'tied hash iteration does not leak');
+
+package explosive_scalar {
+ sub TIESCALAR { my $self = shift; bless [undef, {@_}], $self }
+ sub FETCH { die 'FETCH' if $_[0][1]{FETCH}; $_[0][0] }
+ sub STORE { die 'STORE' if $_[0][1]{STORE}; $_[0][0] = $_[1] }
+}
+tie my $die_on_fetch, 'explosive_scalar', FETCH => 1;
+
+# List assignment was leaking when assigning explosive scalars to
+# aggregates.
+leak(2, 0, sub {
+ eval {%a = ($die_on_fetch, 0)}; # key
+ eval {%a = (0, $die_on_fetch)}; # value
+ eval {%a = ($die_on_fetch, $die_on_fetch)}; # both
+ eval {%a = ($die_on_fetch)}; # key, odd elements
+}, 'hash assignment does not leak');
+leak(2, 0, sub {
+ eval {@a = ($die_on_fetch)};
+ eval {($die_on_fetch, $b) = ($b, $die_on_fetch)};
+ # restore
+ tie $die_on_fetch, 'explosive_scalar', FETCH => 1;
+}, 'array assignment does not leak');
+
+# [perl #107000]
+package hhtie {
+ sub TIEHASH { bless [] }
+ sub STORE { $_[0][0]{$_[1]} = $_[2] }
+ sub FETCH { die if $explosive; $_[0][0]{$_[1]} }
+ sub FIRSTKEY { keys %{$_[0][0]}; each %{$_[0][0]} }
+ sub NEXTKEY { each %{$_[0][0]} }
+}
+leak(2, 0, sub {
+ eval q`
+ BEGIN {
+ $hhtie::explosive = 0;
+ tie %^H, hhtie;
+ $^H{foo} = bar;
+ $hhtie::explosive = 1;
+ }
+ { 1; }
+ `;
+}, 'hint-hash copying does not leak');
+
+package explosive_array {
+ sub TIEARRAY { bless [[], {}], $_[0] }
+ sub FETCH { die if $_[0]->[1]{FETCH}; $_[0]->[0][$_[1]] }
+ sub FETCHSIZE { die if $_[0]->[1]{FETCHSIZE}; scalar @{ $_[0]->[0] } }
+ sub STORE { die if $_[0]->[1]{STORE}; $_[0]->[0][$_[1]] = $_[2] }
+ sub CLEAR { die if $_[0]->[1]{CLEAR}; @{$_[0]->[0]} = () }
+ sub EXTEND { die if $_[0]->[1]{EXTEND}; return }
+ sub explode { my $self = shift; $self->[1] = {@_} }
+}
+
+leak(2, 0, sub {
+ tie my @a, 'explosive_array';
+ tied(@a)->explode( STORE => 1 );
+ my $x = 0;
+ eval { @a = ($x) };
+}, 'explosive array assignment does not leak');
+
+leak(2, 0, sub {
+ my ($a, $b);
+ eval { warn $die_on_fetch };
+}, 'explosive warn argument');
+
+leak(2, 0, sub {
+ my $foo = sub { return $die_on_fetch };
+ my $res = eval { $foo->() };
+ my @res = eval { $foo->() };
+}, 'function returning explosive does not leak');
+
+leak(2, 0, sub {
+ my $res = eval { {$die_on_fetch, 0} };
+ $res = eval { {0, $die_on_fetch} };
+}, 'building anon hash with explosives does not leak');
+
+leak(2, 0, sub {
+ my $res = eval { [$die_on_fetch] };
+}, 'building anon array with explosives does not leak');
+
+leak(2, 0, sub {
+ my @a;
+ eval { push @a, $die_on_fetch };
+}, 'pushing exploding scalar does not leak');
+
+leak(2, 0, sub {
+ eval { push @-, '' };
+}, 'pushing onto read-only array does not leak');
+
+
+# Run-time regexp code blocks
+{
+ use re 'eval';
+ my @tests = ('[(?{})]','(?{})');
+ for my $t (@tests) {
+ leak(2, 0, sub {
+ / $t/;
+ }, "/ \$x/ where \$x is $t does not leak");
+ leak(2, 0, sub {
+ /(?{})$t/;
+ }, "/(?{})\$x/ where \$x is $t does not leak");
+ }
+}
+
+
+{
+ use warnings FATAL => 'all';
+ leak(2, 0, sub {
+ no warnings 'once';
+ eval { printf uNopened 42 };
+ }, 'printfing to bad handle under fatal warnings does not leak');
+ open my $fh, ">", \my $buf;
+ leak(2, 0, sub {
+ eval { printf $fh chr 2455 };
+ }, 'wide fatal warning does not make printf leak');
+ close $fh or die $!;
+}
+
+
+leak(2,0,sub{eval{require untohunothu}}, 'requiring nonexistent module');
diff --git a/gnu/usr.bin/perl/t/op/switch.t b/gnu/usr.bin/perl/t/op/switch.t
index 420c6aecfa6..204a57a999e 100644
--- a/gnu/usr.bin/perl/t/op/switch.t
+++ b/gnu/usr.bin/perl/t/op/switch.t
@@ -8,6 +8,7 @@ BEGIN {
use strict;
use warnings;
+no warnings 'experimental::smartmatch';
plan tests => 201;
@@ -52,9 +53,10 @@ given(my $x = "foo") {
$_ = "outside";
given("inside") { check_outside1() }
-sub check_outside1 { is($_, "outside", "\$_ lexically scoped") }
+sub check_outside1 { is($_, "inside", "\$_ is not lexically scoped") }
{
+ no warnings 'experimental::lexical_topic';
my $_ = "outside";
given("inside") { check_outside2() }
sub check_outside2 {
@@ -397,6 +399,7 @@ sub check_outside1 { is($_, "outside", "\$_ lexically scoped") }
# Make sure it still works with a lexical $_:
{
+ no warnings 'experimental::lexical_topic';
my $_;
my $test = "explicit comparison with lexical \$_";
my $twenty_five = 25;
@@ -598,7 +601,7 @@ sub notfoo {"bar"}
my $f = tie my $v, "FetchCounter";
-{ my $test_name = "Only one FETCH (in given)";
+{ my $test_name = "Multiple FETCHes in given, due to aliasing";
my $ok;
given($v = 23) {
when(undef) {}
@@ -609,7 +612,7 @@ my $f = tie my $v, "FetchCounter";
when(/24/) {$ok = 0}
}
is($ok, 1, "precheck: $test_name");
- is($f->count(), 1, $test_name);
+ is($f->count(), 4, $test_name);
}
{ my $test_name = "Only one FETCH (numeric when)";
@@ -697,6 +700,7 @@ my $f = tie my $v, "FetchCounter";
{
my $first = 1;
+ no warnings 'experimental::lexical_topic';
my $_;
for (1, "two") {
when ("two") {
@@ -715,6 +719,7 @@ my $f = tie my $v, "FetchCounter";
{
my $first = 1;
+ no warnings 'experimental::lexical_topic';
my $_;
for $_ (1, "two") {
when ("two") {
@@ -733,6 +738,7 @@ my $f = tie my $v, "FetchCounter";
{
my $first = 1;
+ no warnings 'experimental::lexical_topic';
for my $_ (1, "two") {
when ("two") {
is($first, 0, "Lexical loop: second");
@@ -1366,6 +1372,8 @@ unreified_check(undef,"");
{
sub f1 {
+ no warnings 'experimental::lexical_topic';
+ my $_;
given(3) {
return sub { $_ } # close over lexical $_
}
@@ -1378,6 +1386,7 @@ unreified_check(undef,"");
sub DESTROY { $d++ };
sub f2 {
+ no warnings 'experimental::lexical_topic';
my $_ = 5;
given(bless [7]) {
::is($_->[0], 7, "is [7]");
diff --git a/gnu/usr.bin/perl/t/op/tie_fetch_count.t b/gnu/usr.bin/perl/t/op/tie_fetch_count.t
index 8eae578042a..c3ed030cfd7 100644
--- a/gnu/usr.bin/perl/t/op/tie_fetch_count.t
+++ b/gnu/usr.bin/perl/t/op/tie_fetch_count.t
@@ -7,7 +7,7 @@ BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
require './test.pl';
- plan (tests => 299);
+ plan (tests => 312);
}
use strict;
@@ -151,7 +151,10 @@ $dummy = -e -e -e $var ; check_count '-e -e';
$_ = "foo";
$dummy = $var =~ m/ / ; check_count 'm//';
$dummy = $var =~ s/ //; check_count 's///';
-$dummy = $var ~~ 1 ; check_count '~~';
+{
+ no warnings 'experimental::smartmatch';
+ $dummy = $var ~~ 1 ; check_count '~~';
+}
$dummy = $var =~ y/ //; check_count 'y///';
$var = \1;
$dummy = $var =~y/ /-/; check_count '$ref =~ y///';
@@ -172,7 +175,7 @@ $dummy = %$var3 ; check_count '%{}';
$dummy = keys $var3 ; check_count 'keys hashref';
{
no strict 'refs';
- tie my $var4 => 'main', **;
+ tie my $var4 => 'main', *];
$dummy = *$var4 ; check_count '*{}';
}
@@ -248,6 +251,35 @@ for ([chdir=>''],[chmod=>'0,'],[chown=>'0,0,'],[utime=>'0,0,'],
; check_count 'select $tied_undef, ...';
}
+chop(my $u = "\xff\x{100}");
+tie $var, "main", $u;
+$dummy = pack "u", $var; check_count 'pack "u", $utf8';
+
+tie $var, "main", "\x{100}";
+pos$var = 0 ; check_count 'lvalue pos $utf8';
+$dummy=sprintf"%1s",$var; check_count 'sprintf "%1s", $utf8';
+$dummy=sprintf"%.1s",$var; check_count 'sprintf "%.1s", $utf8';
+$dummy = substr$var,0,1; check_count 'substr $utf8';
+my $l =\substr$var,0,1;
+$dummy = $$l ; check_count 'reading lvalue substr($utf8)';
+$$l = 0 ; check_count 'setting lvalue substr($utf8)';
+tie $var, "main", "a";
+$$l = "\x{100}" ; check_count 'assigning $utf8 to lvalue substr';
+tie $var1, "main", "a";
+substr$var1,0,0,"\x{100}"; check_count '4-arg substr with utf8 replacement';
+
+{
+ local $SIG{__WARN__} = sub {};
+ $dummy = warn $var ; check_count 'warn $tied';
+ tie $@, => 'main', 1;
+ $dummy = warn ; check_count 'warn() with $@ tied (num)';
+ tie $@, => 'main', \1;
+ $dummy = warn ; check_count 'warn() with $@ tied (ref)';
+ tie $@, => 'main', "foo\n";
+ $dummy = warn ; check_count 'warn() with $@ tied (str)';
+ untie $@;
+}
+
###############################################
# Tests for $foo binop $foo #
###############################################
diff --git a/gnu/usr.bin/perl/t/op/tr.t b/gnu/usr.bin/perl/t/op/tr.t
index 61f570cab68..53530f2f046 100644
--- a/gnu/usr.bin/perl/t/op/tr.t
+++ b/gnu/usr.bin/perl/t/op/tr.t
@@ -8,7 +8,7 @@ BEGIN {
require './test.pl';
}
-plan tests => 131;
+plan tests => 132;
my $Is_EBCDIC = (ord('i') == 0x89 & ord('J') == 0xd1);
@@ -486,11 +486,11 @@ is($s, "AxBC", "utf8, DELETE");
($s) = keys %{{pie => 3}};
SKIP: {
- if (!eval { require B }) { skip "no B", 1 }
- my $wasro = B::svref_2object(\$s)->FLAGS & &B::SVf_READONLY;
- $wasro or local $TODO = "didn't have a COW";
+ if (!eval { require XS::APItest }) { skip "no XS::APItest", 2 }
+ my $wasro = XS::APItest::SvIsCOW($s);
+ ok $wasro, "have a COW";
$s =~ tr/i//;
- ok( B::svref_2object(\$s)->FLAGS & &B::SVf_READONLY,
+ ok( XS::APItest::SvIsCOW($s),
"count-only tr doesn't deCOW COWs" );
}
@@ -512,6 +512,7 @@ SKIP: {
eval q{ $a ~= tr/a/b/; };
ok 1;
SKIP: {
+ no warnings "deprecated";
skip "no encoding", 1 unless eval { require encoding; 1 };
eval q{ use encoding "utf8"; $a ~= tr/a/b/; };
ok 1;
diff --git a/gnu/usr.bin/perl/t/op/utf8cache.t b/gnu/usr.bin/perl/t/op/utf8cache.t
index 7ac0011a79c..65254b1b478 100755
--- a/gnu/usr.bin/perl/t/op/utf8cache.t
+++ b/gnu/usr.bin/perl/t/op/utf8cache.t
@@ -5,12 +5,14 @@ BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
require './test.pl';
- skip_all_without_dynamic_extension('Devel::Peek');
}
use strict;
-plan(tests => 1);
+plan(tests => 15);
+
+SKIP: {
+skip_without_dynamic_extension("Devel::Peek");
my $pid = open CHILD, '-|';
die "kablam: $!\n" unless defined $pid;
@@ -35,3 +37,127 @@ my $utf8magic = qr{ ^ \s+ MAGIC \s = .* \n
\s+ MG_LEN \s = .* \n }xm;
unlike($_, qr{ $utf8magic $utf8magic }x);
+
+} # SKIP
+
+# With bad caching, this code used to go quadratic and take 10s of minutes.
+# The 'test' in this case is simply that it doesn't hang.
+
+{
+ local ${^UTF8CACHE} = 1; # enable cache, disable debugging
+ my $x = "\x{100}" x 1000000;
+ while ($x =~ /./g) {
+ my $p = pos($x);
+ }
+ pass("quadratic pos");
+}
+
+# Get-magic can reallocate the PV. Check that the cache is reset in
+# such cases.
+
+# Regexp vars
+"\x{100}" =~ /(.+)/;
+() = substr $1, 0, 1;
+"a\x{100}" =~ /(.+)/;
+is ord substr($1, 1, 1), 0x100, 'get-magic resets utf8cache on match vars';
+
+# Substr lvalues
+my $x = "a\x{100}";
+my $l = \substr $x, 0;
+() = substr $$l, 1, 1;
+substr $x, 0, 1, = "\x{100}";
+is ord substr($$l, 1, 1), 0x100, 'get-magic resets utf8cache on LVALUEs';
+
+# defelem magic
+my %h;
+sub {
+ $_[0] = "a\x{100}";
+ () = ord substr $_[0], 1, 1;
+ $h{k} = "\x{100}"x2;
+ is ord substr($_[0], 1, 1), 0x100,
+ 'get-magic resets uf8cache on defelems';
+}->($h{k});
+
+
+# Overloading can also reallocate the PV.
+
+package UTF8Toggle {
+ use overload '""' => 'stringify', fallback => 1;
+
+ sub new {
+ my $class = shift;
+ my $value = shift;
+ my $state = shift||0;
+ return bless [$value, $state], $class;
+ }
+
+ sub stringify {
+ my $self = shift;
+ $self->[1] = ! $self->[1];
+ if ($self->[1]) {
+ utf8::downgrade($self->[0]);
+ } else {
+ utf8::upgrade($self->[0]);
+ }
+ $self->[0];
+ }
+}
+my $u = UTF8Toggle->new(" \x{c2}7 ");
+
+pos $u = 2;
+is pos $u, 2, 'pos on overloaded utf8 toggler';
+() = "$u"; # flip flag
+pos $u = 2;
+is pos $u, 2, 'pos on overloaded utf8 toggler (again)';
+
+() = ord ${\substr $u, 1};
+is ord ${\substr($u, 1)}, 0xc2,
+ 'utf8 cache + overloading does not confuse substr lvalues';
+() = "$u"; # flip flag
+() = ord substr $u, 1;
+is ord substr($u, 1), 0xc2,
+ 'utf8 cache + overloading does not confuse substr lvalues (again)';
+
+$u = UTF8Toggle->new(" \x{c2}7 ");
+() = ord ${\substr $u, 2};
+{ no warnings; ${\substr($u, 2, 1)} = 0; }
+is $u, " \x{c2}0 ",
+ 'utf8 cache + overloading does not confuse substr lvalue assignment';
+$u = UTF8Toggle->new(" \x{c2}7 ");
+() = "$u"; # flip flag
+() = ord ${\substr $u, 2};
+{ no warnings; ${\substr($u, 2, 1)} = 0; }
+is $u, " \x{c2}0 ",
+ 'utf8 cache + overload does not confuse substr lv assignment (again)';
+
+
+# Typeglobs and references should not get a cache
+use utf8;
+
+#substr
+my $globref = \*αabcdefg_::_;
+() = substr($$globref, 2, 3);
+*_abcdefgα:: = \%αabcdefg_::;
+undef %αabcdefg_::;
+{ no strict; () = *{"_abcdefgα::_"} }
+is substr($$globref, 2, 3), "abc", 'no utf8 pos cache on globs';
+
+my $ref = bless [], "αabcd_";
+() = substr($ref, 1, 3);
+bless $ref, "_abcdα";
+is substr($ref, 1, 3), "abc", 'no utf8 pos cache on references';
+
+#length
+$globref = \*αabcdefg_::_;
+() = "$$globref"; # turn utf8 flag on
+() = length($$globref);
+*_abcdefgα:: = \%αabcdefg_::;
+undef %αabcdefg_::;
+{ no strict; () = *{"_abcdefgα::_"} }
+is length($$globref), length("$$globref"), 'no utf8 length cache on globs';
+
+$ref = bless [], "αabcd_";
+() = "$ref"; # turn utf8 flag on
+() = length $ref;
+bless $ref, "α";
+is length $ref, length "$ref", 'no utf8 length cache on references';
diff --git a/gnu/usr.bin/perl/t/op/utf8magic.t b/gnu/usr.bin/perl/t/op/utf8magic.t
index 3d942c0cea4..55e921d6ac8 100755
--- a/gnu/usr.bin/perl/t/op/utf8magic.t
+++ b/gnu/usr.bin/perl/t/op/utf8magic.t
@@ -6,7 +6,7 @@ BEGIN {
require './test.pl';
}
-plan tests => 4;
+plan tests => 6;
use strict;
@@ -23,3 +23,16 @@ $str =~ /(.)/;
ok !utf8::is_utf8($1), "is_utf8(bytes)";
scalar "$1"; # invoke SvGETMAGIC
ok !utf8::is_utf8($1), "is_utf8(bytes)";
+
+sub TIESCALAR { bless [pop] }
+sub FETCH { $_[0][0] }
+sub STORE { $::stored = pop }
+
+tie my $str2, "", "a";
+$str2 = "b";
+utf8::encode $str2;
+is $::stored, "a", 'utf8::encode respects get-magic on POK scalars';
+
+tie $str2, "", "\xc4\x80";
+utf8::decode $str2;
+is $::stored, "\x{100}", 'utf8::decode respects set-magic';
diff --git a/gnu/usr.bin/perl/t/op/ver.t b/gnu/usr.bin/perl/t/op/ver.t
index fa94d5ed783..5fca6267a58 100644
--- a/gnu/usr.bin/perl/t/op/ver.t
+++ b/gnu/usr.bin/perl/t/op/ver.t
@@ -11,7 +11,7 @@ $DOWARN = 1; # enable run-time warnings now
use Config;
-plan( tests => 55 );
+plan( tests => 57 );
eval 'use v5.5.640';
is( $@, '', "use v5.5.640; $@");
@@ -270,6 +270,11 @@ ok( exists $h{chr(65).chr(66).chr(67)}, "v-stringness is engaged for X.Y.Z" );
is $|, 1, 'clobbering vstrings does not clobber all magic';
}
+$a = v102; $a =~ s/f/f/;
+is ref \$a, 'SCALAR',
+ 's/// flattens vstrings even when the subst results in the same value';
+$a = v102; $a =~ y/f/g/;
+is ref \$a, 'SCALAR', 'y/// flattens vstrings';
# The following tests whether v-strings are correctly
# interpreted by the tokeniser when it's in a XTERMORDORDOR
diff --git a/gnu/usr.bin/perl/t/op/warn.t b/gnu/usr.bin/perl/t/op/warn.t
index 4a927e2311b..71de5e2cca0 100644
--- a/gnu/usr.bin/perl/t/op/warn.t
+++ b/gnu/usr.bin/perl/t/op/warn.t
@@ -7,7 +7,7 @@ BEGIN {
require './test.pl';
}
-plan 22;
+plan 30;
my @warnings;
my $wa = []; my $ea = [];
@@ -148,4 +148,48 @@ fresh_perl_like(
'warn stringifies in the absence of $SIG{__WARN__}'
);
+use Tie::Scalar;
+tie $@, "Tie::StdScalar";
+
+$@ = "foo\n";
+@warnings = ();
+warn;
+is @warnings, 1;
+like $warnings[0], qr/^foo\n\t\.\.\.caught at warn\.t /,
+ '...caught is appended to tied $@';
+
+$@ = \$_;
+@warnings = ();
+{
+ local *{ref(tied $@) . "::STORE"} = sub {};
+ undef $@;
+}
+warn;
+is @warnings, 1;
+is $warnings[0], \$_, '!SvOK tied $@ that returns ref is used';
+
+untie $@;
+
+@warnings = ();
+{
+ package o;
+ use overload '""' => sub { "" };
+}
+tie $t, Tie::StdScalar;
+$t = bless [], o;
+{
+ local *{ref(tied $t) . "::STORE"} = sub {};
+ undef $t;
+}
+warn $t;
+is @warnings, 1;
+object_ok $warnings[0], 'o',
+ 'warn $tie_returning_object_that_stringifes_emptily';
+
+@warnings = ();
+eval "#line 42 Cholmondeley\n \$\@ = '3'; warn";
+eval "#line 42 Cholmondeley\n \$\@ = 3; warn";
+is @warnings, 2;
+is $warnings[1], $warnings[0], 'warn treats $@=3 and $@="3" the same way';
+
1;
diff --git a/gnu/usr.bin/perl/t/op/while.t b/gnu/usr.bin/perl/t/op/while.t
new file mode 100644
index 00000000000..5d2af711a5d
--- /dev/null
+++ b/gnu/usr.bin/perl/t/op/while.t
@@ -0,0 +1,215 @@
+#!./perl
+
+BEGIN {
+ chdir 't';
+ require "test.pl";
+}
+
+plan(25);
+
+my $tmpfile = tempfile();
+open (tmp,'>', $tmpfile) || die "Can't create Cmd_while.tmp.";
+print tmp "tvi925\n";
+print tmp "tvi920\n";
+print tmp "vt100\n";
+print tmp "Amiga\n";
+print tmp "paper\n";
+close tmp or die "Could not close: $!";
+
+# test "last" command
+
+open(fh, $tmpfile) || die "Can't open Cmd_while.tmp.";
+while (<fh>) {
+ last if /vt100/;
+}
+ok(!eof && /vt100/);
+
+# test "next" command
+
+$bad = '';
+open(fh, $tmpfile) || die "Can't open Cmd_while.tmp.";
+while (<fh>) {
+ next if /vt100/;
+ $bad = 1 if /vt100/;
+}
+ok(eof && !/vt100/ && !$bad);
+
+# test "redo" command
+
+$bad = '';
+open(fh,$tmpfile) || die "Can't open Cmd_while.tmp.";
+while (<fh>) {
+ if (s/vt100/VT100/g) {
+ s/VT100/Vt100/g;
+ redo;
+ }
+ $bad = 1 if /vt100/;
+ $bad = 1 if /VT100/;
+}
+ok(eof && !$bad);
+
+# now do the same with a label and a continue block
+
+# test "last" command
+
+$badcont = '';
+open(fh,$tmpfile) || die "Can't open Cmd_while.tmp.";
+line: while (<fh>) {
+ if (/vt100/) {last line;}
+} continue {
+ $badcont = 1 if /vt100/;
+}
+ok(!eof && /vt100/);
+ok(!$badcont);
+
+# test "next" command
+
+$bad = '';
+$badcont = 1;
+open(fh,$tmpfile) || die "Can't open Cmd_while.tmp.";
+entry: while (<fh>) {
+ next entry if /vt100/;
+ $bad = 1 if /vt100/;
+} continue {
+ $badcont = '' if /vt100/;
+}
+ok(eof && !/vt100/ && !$bad);
+ok(!$badcont);
+
+# test "redo" command
+
+$bad = '';
+$badcont = '';
+open(fh,$tmpfile) || die "Can't open Cmd_while.tmp.";
+loop: while (<fh>) {
+ if (s/vt100/VT100/g) {
+ s/VT100/Vt100/g;
+ redo loop;
+ }
+ $bad = 1 if /vt100/;
+ $bad = 1 if /VT100/;
+} continue {
+ $badcont = 1 if /vt100/;
+}
+ok(eof && !$bad);
+ok(!$badcont);
+
+close(fh) || die "Can't close Cmd_while.tmp.";
+
+$i = 9;
+{
+ $i++;
+}
+is($i, 10);
+
+# Check curpm is reset when jumping out of a scope
+$i = 0;
+'abc' =~ /b/;
+WHILE:
+while (1) {
+ $i++;
+ is($` . $& . $', "abc");
+ { # Localize changes to $` and friends
+ 'end' =~ /end/;
+ redo WHILE if $i == 1;
+ next WHILE if $i == 2;
+ # 3 do a normal loop
+ last WHILE if $i == 4;
+ }
+}
+is($` . $& . $', "abc");
+
+# check that scope cleanup happens right when there's a continue block
+{
+ my $var = 16;
+ my (@got_var, @got_i);
+ while (my $i = ++$var) {
+ next if $i == 17;
+ last if $i > 17;
+ my $i = 0;
+ }
+ continue {
+ ($got_var, $got_i) = ($var, $i);
+ }
+ is($got_var, 17);
+ is($got_i, 17);
+}
+
+{
+ my $got_l;
+ local $l = 18;
+ {
+ local $l = 0
+ }
+ continue {
+ $got_l = $l;
+ }
+ is($got_l, 18);
+}
+
+{
+ my $got_l;
+ local $l = 19;
+ my $x = 0;
+ while (!$x++) {
+ local $l = 0
+ }
+ continue {
+ $got_l = $l;
+ }
+ is($got_l, $l);
+}
+
+{
+ my $ok = 1;
+ $i = 20;
+ while (1) {
+ my $x;
+ $ok = 0 if defined $x;
+ if ($i == 21) {
+ next;
+ }
+ last;
+ }
+ continue {
+ ++$i;
+ }
+ ok($ok);
+}
+
+sub save_context { $_[0] = wantarray; $_[1] }
+
+{
+ my $context = -1;
+ my $p = sub {
+ my $x = 1;
+ while ($x--) {
+ save_context($context, "foo");
+ }
+ };
+ is(scalar($p->()), 0);
+ is($context, undef, "last statement in while block has 'void' context");
+}
+
+{
+ my $context = -1;
+ my $p = sub {
+ my $x = 1;
+ {
+ save_context($context, "foo");
+ }
+ };
+ is(scalar($p->()), "foo");
+ is($context, "", "last statement in block has 'scalar' context");
+}
+
+{
+ # test scope is cleaned
+ my $i = 0;
+ my @a;
+ while ($i++ < 2) {
+ my $x;
+ push @a, \$x;
+ }
+ ok($a[0] ne $a[1]);
+}
diff --git a/gnu/usr.bin/perl/t/opbasic/arith.t b/gnu/usr.bin/perl/t/opbasic/arith.t
new file mode 100644
index 00000000000..d85a9ba2142
--- /dev/null
+++ b/gnu/usr.bin/perl/t/opbasic/arith.t
@@ -0,0 +1,458 @@
+#!./perl -w
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+
+# This file has been placed in t/opbasic to indicate that it should not use
+# functions imported from t/test.pl or Test::More, as those programs/libraries
+# use operators which are what is being tested in this file.
+
+print "1..167\n";
+
+sub try ($$$) {
+ print +($_[1] ? "ok" : "not ok"), " $_[0] - $_[2]\n";
+}
+sub tryeq ($$$$) {
+ if ($_[1] == $_[2]) {
+ print "ok $_[0]";
+ } else {
+ print "not ok $_[0] # $_[1] != $_[2]";
+ }
+ print " - $_[3]\n";
+}
+sub tryeq_sloppy ($$$$) {
+ if ($_[1] == $_[2]) {
+ print "ok $_[0]";
+ } else {
+ my $error = abs (($_[1] - $_[2]) / $_[1]);
+ if ($error < 1e-9) {
+ print "ok $_[0] # $_[1] is close to $_[2], \$^O eq $^O";
+ } else {
+ print "not ok $_[0] # $_[1] != $_[2]";
+ }
+ }
+ print " - $_[3]\n";
+}
+
+my $T = 1;
+tryeq $T++, 13 % 4, 1, 'modulo: positive positive';
+tryeq $T++, -13 % 4, 3, 'modulo: negative positive';
+tryeq $T++, 13 % -4, -3, 'modulo: positive negative';
+tryeq $T++, -13 % -4, -1, 'modulo: negative negative';
+
+# Give abs() a good work-out before using it in anger
+tryeq $T++, abs(0), 0, 'abs(): 0 0';
+tryeq $T++, abs(1), 1, 'abs(): 1 1';
+tryeq $T++, abs(-1), 1, 'abs(): -1 1';
+tryeq $T++, abs(2147483647), 2147483647, 'abs(): 2**31-1: pos pos';
+tryeq $T++, abs(-2147483647), 2147483647, 'abs(): 2**31-1: neg pos';
+tryeq $T++, abs(4294967295), 4294967295, 'abs(): 2**32-1: pos pos';
+tryeq $T++, abs(-4294967295), 4294967295, 'abs(): 2**32-1: neg pos';
+tryeq $T++, abs(9223372036854775807), 9223372036854775807,
+ 'abs(): 2**63-1: pos pos';
+tryeq $T++, abs(-9223372036854775807), 9223372036854775807,
+ 'abs(): 2**63-1: neg pos';
+# Assume no change whatever; no slop needed
+tryeq $T++, abs(1e50), 1e50, 'abs(): 1e50: pos pos';
+# Assume only sign bit flipped
+tryeq $T++, abs(-1e50), 1e50, 'abs(): 1e50: neg pos';
+
+my $limit = 1e6;
+
+# Division (and modulo) of floating point numbers
+# seem to be rather sloppy in Cray.
+$limit = 1e8 if $^O eq 'unicos';
+
+try $T++, abs( 13e21 % 4e21 - 1e21) < $limit, 'abs() for floating point';
+try $T++, abs(-13e21 % 4e21 - 3e21) < $limit, 'abs() for floating point';
+try $T++, abs( 13e21 % -4e21 - -3e21) < $limit, 'abs() for floating point';
+try $T++, abs(-13e21 % -4e21 - -1e21) < $limit, 'abs() for floating point';
+
+tryeq $T++, 4063328477 % 65535, 27407, 'UV behaves properly: modulo';
+tryeq $T++, 4063328477 % 4063328476, 1, 'UV behaves properly: modulo';
+tryeq $T++, 4063328477 % 2031664238, 1, 'UV behaves properly: modulo';
+tryeq $T++, 2031664238 % 4063328477, 2031664238,
+ 'UV behaves properly: modulo';
+
+tryeq $T++, 2147483647 + 0, 2147483647,
+ 'trigger wrapping on 32 bit IVs and UVs';
+
+tryeq $T++, 2147483647 + 1, 2147483648, 'IV + IV promotes to UV';
+tryeq $T++, 2147483640 + 10, 2147483650, 'IV + IV promotes to UV';
+tryeq $T++, 2147483647 + 2147483647, 4294967294, 'IV + IV promotes to UV';
+tryeq $T++, 2147483647 + 2147483649, 4294967296, 'IV + UV promotes to NV';
+tryeq $T++, 4294967294 + 2, 4294967296, 'UV + IV promotes to NV';
+tryeq $T++, 4294967295 + 4294967295, 8589934590, 'UV + UV promotes to NV';
+
+tryeq $T++, 2147483648 + -1, 2147483647, 'UV + IV promotes to IV';
+tryeq $T++, 2147483650 + -10, 2147483640, 'UV + IV promotes to IV';
+tryeq $T++, -1 + 2147483648, 2147483647, 'IV + UV promotes to IV';
+tryeq $T++, -10 + 4294967294, 4294967284, 'IV + UV promotes to IV';
+tryeq $T++, -2147483648 + -2147483648, -4294967296, 'IV + IV promotes to NV';
+tryeq $T++, -2147483640 + -10, -2147483650, 'IV + IV promotes to NV';
+
+# Hmm. Do not forget the simple stuff
+# addition
+tryeq $T++, 1 + 1, 2, 'addition of 2 positive integers';
+tryeq $T++, 4 + -2, 2, 'addition of positive and negative integer';
+tryeq $T++, -10 + 100, 90, 'addition of negative and positive integer';
+tryeq $T++, -7 + -9, -16, 'addition of 2 negative integers';
+tryeq $T++, -63 + +2, -61, 'addition of signed negative and positive integers';
+tryeq $T++, 4 + -1, 3, 'addition of positive and negative integer';
+tryeq $T++, -1 + 1, 0, 'addition which sums to 0';
+tryeq $T++, +29 + -29, 0, 'addition which sums to 0';
+tryeq $T++, -1 + 4, 3, 'addition of signed negative and positive integers';
+tryeq $T++, +4 + -17, -13, 'addition of signed positive and negative integers';
+
+# subtraction
+tryeq $T++, 3 - 1, 2, 'subtraction of two positive integers';
+tryeq $T++, 3 - 15, -12,
+ 'subtraction of two positive integers: minuend smaller';
+tryeq $T++, 3 - -7, 10, 'subtraction of positive and negative integer';
+tryeq $T++, -156 - 5, -161, 'subtraction of negative and positive integer';
+tryeq $T++, -156 - -5, -151, 'subtraction of two negative integers';
+tryeq $T++, -5 - -12, 7,
+ 'subtraction of two negative integers: minuend smaller';
+tryeq $T++, -3 - -3, 0, 'subtraction of two negative integers with result of 0';
+tryeq $T++, 15 - 15, 0, 'subtraction of two positive integers with result of 0';
+tryeq $T++, 2147483647 - 0, 2147483647, 'subtraction from large integer';
+tryeq $T++, 2147483648 - 0, 2147483648, 'subtraction from large integer';
+tryeq $T++, -2147483648 - 0, -2147483648,
+ 'subtraction from large negative integer';
+tryeq $T++, 0 - -2147483647, 2147483647,
+ 'subtraction of large negative integer from 0';
+tryeq $T++, -1 - -2147483648, 2147483647,
+ 'subtraction of large negative integer from negative integer';
+tryeq $T++, 2 - -2147483648, 2147483650,
+ 'subtraction of large negative integer from positive integer';
+tryeq $T++, 4294967294 - 3, 4294967291, 'subtraction from large integer';
+tryeq $T++, -2147483648 - -1, -2147483647,
+ 'subtraction from large negative integer';
+tryeq $T++, 2147483647 - -1, 2147483648, 'IV - IV promote to UV';
+tryeq $T++, 2147483647 - -2147483648, 4294967295, 'IV - IV promote to UV';
+tryeq $T++, 4294967294 - -3, 4294967297, 'UV - IV promote to NV';
+tryeq $T++, -2147483648 - +1, -2147483649, 'IV - IV promote to NV';
+tryeq $T++, 2147483648 - 2147483650, -2, 'UV - UV promote to IV';
+tryeq $T++, 2000000000 - 4000000000, -2000000000, 'IV - UV promote to IV';
+
+# No warnings should appear;
+my $a;
+$a += 1;
+tryeq $T++, $a, 1, '+= with positive';
+undef $a;
+$a += -1;
+tryeq $T++, $a, -1, '+= with negative';
+undef $a;
+$a += 4294967290;
+tryeq $T++, $a, 4294967290, '+= with positive';
+undef $a;
+$a += -4294967290;
+tryeq $T++, $a, -4294967290, '+= with negative';
+undef $a;
+$a += 4294967297;
+tryeq $T++, $a, 4294967297, '+= with positive';
+undef $a;
+$a += -4294967297;
+tryeq $T++, $a, -4294967297, '+= with negative';
+
+my $s;
+$s -= 1;
+tryeq $T++, $s, -1, '-= with positive';
+undef $s;
+$s -= -1;
+tryeq $T++, $s, +1, '-= with negative';
+undef $s;
+$s -= -4294967290;
+tryeq $T++, $s, +4294967290, '-= with negative';
+undef $s;
+$s -= 4294967290;
+tryeq $T++, $s, -4294967290, '-= with negative';
+undef $s;
+$s -= 4294967297;
+tryeq $T++, $s, -4294967297, '-= with positive';
+undef $s;
+$s -= -4294967297;
+tryeq $T++, $s, +4294967297, '-= with positive';
+
+# multiplication
+tryeq $T++, 1 * 3, 3, 'multiplication of two positive integers';
+tryeq $T++, -2 * 3, -6, 'multiplication of negative and positive integer';
+tryeq $T++, 3 * -3, -9, 'multiplication of positive and negative integer';
+tryeq $T++, -4 * -3, 12, 'multiplication of two negative integers';
+
+# check with 0xFFFF and 0xFFFF
+tryeq $T++, 65535 * 65535, 4294836225,
+ 'multiplication: 0xFFFF and 0xFFFF: pos pos';
+tryeq $T++, 65535 * -65535, -4294836225,
+ 'multiplication: 0xFFFF and 0xFFFF: pos neg';
+tryeq $T++, -65535 * 65535, -4294836225,
+ 'multiplication: 0xFFFF and 0xFFFF: pos neg';
+tryeq $T++, -65535 * -65535, 4294836225,
+ 'multiplication: 0xFFFF and 0xFFFF: neg neg';
+
+# check with 0xFFFF and 0x10001
+tryeq $T++, 65535 * 65537, 4294967295,
+ 'multiplication: 0xFFFF and 0x10001: pos pos';
+tryeq $T++, 65535 * -65537, -4294967295,
+ 'multiplication: 0xFFFF and 0x10001: pos neg';
+tryeq $T++, -65535 * 65537, -4294967295,
+ 'multiplication: 0xFFFF and 0x10001: neg pos';
+tryeq $T++, -65535 * -65537, 4294967295,
+ 'multiplication: 0xFFFF and 0x10001: neg neg';
+
+# check with 0x10001 and 0xFFFF
+tryeq $T++, 65537 * 65535, 4294967295,
+ 'multiplication: 0x10001 and 0xFFFF: pos pos';
+tryeq $T++, 65537 * -65535, -4294967295,
+ 'multiplication: 0x10001 and 0xFFFF: pos neg';
+tryeq $T++, -65537 * 65535, -4294967295,
+ 'multiplication: 0x10001 and 0xFFFF: neg pos';
+tryeq $T++, -65537 * -65535, 4294967295,
+ 'multiplication: 0x10001 and 0xFFFF: neg neg';
+
+# These should all be dones as NVs
+tryeq $T++, 65537 * 65537, 4295098369, 'multiplication: NV: pos pos';
+tryeq $T++, 65537 * -65537, -4295098369, 'multiplication: NV: pos neg';
+tryeq $T++, -65537 * 65537, -4295098369, 'multiplication: NV: neg pos';
+tryeq $T++, -65537 * -65537, 4295098369, 'multiplication: NV: neg neg';
+
+# will overflow an IV (in 32-bit)
+tryeq $T++, 46340 * 46342, 0x80001218,
+ 'multiplication: overflow an IV in 32-bit: pos pos';
+tryeq $T++, 46340 * -46342, -0x80001218,
+ 'multiplication: overflow an IV in 32-bit: pos neg';
+tryeq $T++, -46340 * 46342, -0x80001218,
+ 'multiplication: overflow an IV in 32-bit: neg pos';
+tryeq $T++, -46340 * -46342, 0x80001218,
+ 'multiplication: overflow an IV in 32-bit: neg neg';
+
+tryeq $T++, 46342 * 46340, 0x80001218,
+ 'multiplication: overflow an IV in 32-bit: pos pos';
+tryeq $T++, 46342 * -46340, -0x80001218,
+ 'multiplication: overflow an IV in 32-bit: pos neg';
+tryeq $T++, -46342 * 46340, -0x80001218,
+ 'multiplication: overflow an IV in 32-bit: neg pos';
+tryeq $T++, -46342 * -46340, 0x80001218,
+ 'multiplication: overflow an IV in 32-bit: neg neg';
+
+# will overflow a positive IV (in 32-bit)
+tryeq $T++, 65536 * 32768, 0x80000000,
+ 'multiplication: overflow a positive IV in 32-bit: pos pos';
+tryeq $T++, 65536 * -32768, -0x80000000,
+ 'multiplication: overflow a positive IV in 32-bit: pos neg';
+tryeq $T++, -65536 * 32768, -0x80000000,
+ 'multiplication: overflow a positive IV in 32-bit: neg pos';
+tryeq $T++, -65536 * -32768, 0x80000000,
+ 'multiplication: overflow a positive IV in 32-bit: neg neg';
+
+tryeq $T++, 32768 * 65536, 0x80000000,
+ 'multiplication: overflow a positive IV in 32-bit: pos pos';
+tryeq $T++, 32768 * -65536, -0x80000000,
+ 'multiplication: overflow a positive IV in 32-bit: pos neg';
+tryeq $T++, -32768 * 65536, -0x80000000,
+ 'multiplication: overflow a positive IV in 32-bit: neg pos';
+tryeq $T++, -32768 * -65536, 0x80000000,
+ 'multiplication: overflow a positive IV in 32-bit: neg neg';
+
+# 2147483647 is prime. bah.
+
+tryeq $T++, 46339 * 46341, 0x7ffea80f,
+ 'multiplication: hex product: pos pos';
+tryeq $T++, 46339 * -46341, -0x7ffea80f,
+ 'multiplication: hex product: pos neg';
+tryeq $T++, -46339 * 46341, -0x7ffea80f,
+ 'multiplication: hex product: neg pos';
+tryeq $T++, -46339 * -46341, 0x7ffea80f,
+ 'multiplication: hex product: neg neg';
+
+# leading space should be ignored
+
+tryeq $T++, 1 + " 1", 2, 'ignore leading space: addition';
+tryeq $T++, 3 + " -1", 2, 'ignore leading space: subtraction';
+tryeq $T++, 1.2, " 1.2", 'floating point and string equivalent: positive';
+tryeq $T++, -1.2, " -1.2", 'floating point and string equivalent: negative';
+
+# division
+tryeq $T++, 28/14, 2, 'division of two positive integers';
+tryeq $T++, 28/-7, -4, 'division of positive integer by negative';
+tryeq $T++, -28/4, -7, 'division of negative integer by positive';
+tryeq $T++, -28/-2, 14, 'division of negative integer by negative';
+
+tryeq $T++, 0x80000000/1, 0x80000000,
+ 'division of positive hex by positive integer';
+tryeq $T++, 0x80000000/-1, -0x80000000,
+ 'division of positive hex by negative integer';
+tryeq $T++, -0x80000000/1, -0x80000000,
+ 'division of negative hex by negative integer';
+tryeq $T++, -0x80000000/-1, 0x80000000,
+ 'division of negative hex by positive integer';
+
+# The example for sloppy divide, rigged to avoid the peephole optimiser.
+tryeq_sloppy $T++, "20." / "5.", 4, 'division of floating point without fractional part';
+
+tryeq $T++, 2.5 / 2, 1.25,
+ 'division of positive floating point by positive integer';
+tryeq $T++, 3.5 / -2, -1.75,
+ 'division of positive floating point by negative integer';
+tryeq $T++, -4.5 / 2, -2.25,
+ 'division of negative floating point by positive integer';
+tryeq $T++, -5.5 / -2, 2.75,
+ 'division of negative floating point by negative integer';
+
+# Bluuurg if your floating point can not accurately cope with powers of 2
+# [I suspect this is parsing string->float problems, not actual arith]
+tryeq_sloppy $T++, 18446744073709551616/1, 18446744073709551616,
+ 'division of very large number by 1'; # Bluuurg
+tryeq_sloppy $T++, 18446744073709551616/2, 9223372036854775808,
+ 'division of very large number by 2';
+tryeq_sloppy $T++, 18446744073709551616/4294967296, 4294967296,
+ 'division of two very large numbers';
+tryeq_sloppy $T++, 18446744073709551616/9223372036854775808, 2,
+ 'division of two very large numbers';
+
+{
+ # The peephole optimiser is wrong to think that it can substitute intops
+ # in place of regular ops, because i_multiply can overflow.
+ # Bug reported by "Sisyphus" <kalinabears@hdc.com.au>
+ my $n = 1127;
+
+ my $float = ($n % 1000) * 167772160.0;
+ tryeq_sloppy $T++, $float, 21307064320, 'integer times floating point';
+
+ # On a 32 bit machine, if the i_multiply op is used, you will probably get
+ # -167772160. It is actually undefined behaviour, so anything may happen.
+ my $int = ($n % 1000) * 167772160;
+ tryeq $T++, $int, 21307064320, 'integer times integer';
+
+ my $float2 = ($n % 1000 + 0.0) * 167772160;
+ tryeq $T++, $float2, 21307064320, 'floating point times integer';
+
+ my $int2 = ($n % 1000 + 0) * 167772160;
+ tryeq $T++, $int2, 21307064320, 'integer plus zero times integer';
+
+ # zero, but in a way that ought to be able to defeat any future optimizer:
+ my $zero = $$ - $$;
+ my $int3 = ($n % 1000 + $zero) * 167772160;
+ tryeq $T++, $int3, 21307064320, 'defeat any future optimizer';
+
+ my $t = time;
+ my $t1000 = time() * 1000;
+ try $T++, abs($t1000 -1000 * $t) <= 2000, 'absolute value';
+}
+
+{
+ # 64 bit variants
+ my $n = 1127;
+
+ my $float = ($n % 1000) * 720575940379279360.0;
+ tryeq_sloppy $T++, $float, 9.15131444281685e+19,
+ '64 bit: integer times floating point';
+
+ my $int = ($n % 1000) * 720575940379279360;
+ tryeq_sloppy $T++, $int, 9.15131444281685e+19,
+ '64 bit: integer times integer';
+
+ my $float2 = ($n % 1000 + 0.0) * 720575940379279360;
+ tryeq_sloppy $T++, $float2, 9.15131444281685e+19,
+ '64 bit: floating point times integer';
+
+ my $int2 = ($n % 1000 + 0) * 720575940379279360;
+ tryeq_sloppy $T++, $int2, 9.15131444281685e+19,
+ '64 bit: integer plus zero times integer';
+
+ # zero, but in a way that ought to be able to defeat any future optimizer:
+ my $zero = $$ - $$;
+ my $int3 = ($n % 1000 + $zero) * 720575940379279360;
+ tryeq_sloppy $T++, $int3, 9.15131444281685e+19,
+ '64 bit: defeat any future optimizer';
+}
+
+# [perl #109542] $1 and "$1" should be treated the same way
+"976562500000000" =~ /(\d+)/;
+$a = ($1 * 1024);
+$b = ("$1" * 1024);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" * something\n';
+$a = (1024 * $1);
+$b = (1024 * "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something * \$1 vs "\$1"\n';
+$a = ($1 + 102400000000000);
+$b = ("$1" + 102400000000000);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" + something\n';
+$a = (102400000000000 + $1);
+$b = (102400000000000 + "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something + \$1 vs "\$1"\n';
+$a = ($1 - 10240000000000000);
+$b = ("$1" - 10240000000000000);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" - something\n';
+$a = (10240000000000000 - $1);
+$b = (10240000000000000 - "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something - \$1 vs "\$1"\n';
+"976562500" =~ /(\d+)/;
+$a = ($1 ** 2);
+$b = ("$1" ** 2);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" ** something\n';
+"32" =~ /(\d+)/;
+$a = (3 ** $1);
+$b = (3 ** "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something ** \$1 vs "\$1"\n';
+"97656250000000000" =~ /(\d+)/;
+$a = ($1 / 10);
+$b = ("$1" / 10);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" / something\n';
+"10" =~ /(\d+)/;
+$a = (97656250000000000 / $1);
+$b = (97656250000000000 / "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something / \$1 vs "\$1"\n';
+"97656250000000000" =~ /(\d+)/;
+$a = ($1 <=> 97656250000000001);
+$b = ("$1" <=> 97656250000000001);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" <=> something\n';
+$a = (97656250000000001 <=> $1);
+$b = (97656250000000001 <=> "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something <=> \$1 vs "\$1"\n';
+"97656250000000001" =~ /(\d+)/;
+$a = ($1 % 97656250000000002);
+$b = ("$1" % 97656250000000002);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" % something\n';
+$a = (97656250000000000 % $1);
+$b = (97656250000000000 % "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something % \$1 vs "\$1"\n';
+
+my $vms_no_ieee;
+if ($^O eq 'VMS') {
+ use vars '%Config';
+ eval {require Config; import Config};
+ $vms_no_ieee = 1 unless defined($Config{useieee});
+}
+
+if ($^O eq 'vos') {
+ print "not ok ", $T++, " # TODO VOS raises SIGFPE instead of producing infinity.\n";
+}
+elsif ($vms_no_ieee) {
+ print $T++, " # SKIP -- the IEEE infinity model is unavailable in this configuration.\n"
+}
+elsif ($^O eq 'ultrix') {
+ print "not ok ", $T++, " # TODO Ultrix enters deep nirvana instead of producing infinity.\n";
+}
+else {
+ # The computation of $v should overflow and produce "infinity"
+ # on any system whose max exponent is less than 10**1506.
+ # The exact string used to represent infinity varies by OS,
+ # so we don't test for it; all we care is that we don't die.
+ #
+ # Perl considers it to be an error if SIGFPE is raised.
+ # Chances are the interpreter will die, since it doesn't set
+ # up a handler for SIGFPE. That's why this test is last; to
+ # minimize the number of test failures. --PG
+
+ my $n = 5000;
+ my $v = 2;
+ while (--$n)
+ {
+ $v *= 2;
+ }
+ print "ok ", $T++, " - infinity\n";
+}
+
diff --git a/gnu/usr.bin/perl/t/opbasic/cmp.t b/gnu/usr.bin/perl/t/opbasic/cmp.t
new file mode 100644
index 00000000000..43e434590a6
--- /dev/null
+++ b/gnu/usr.bin/perl/t/opbasic/cmp.t
@@ -0,0 +1,322 @@
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+
+# This file has been placed in t/opbasic to indicate that it should not use
+# functions imported from t/test.pl or Test::More, as those programs/libraries
+# use operators which are what is being tested in this file.
+
+# 2s complement assumption. Will not break test, just makes the internals of
+# the SVs less interesting if were not on 2s complement system.
+my $uv_max = ~0;
+my $uv_maxm1 = ~0 ^ 1;
+my $uv_big = $uv_max;
+$uv_big = ($uv_big - 20000) | 1;
+my ($iv0, $iv1, $ivm1, $iv_min, $iv_max, $iv_big, $iv_small);
+$iv_max = $uv_max; # Do copy, *then* divide
+$iv_max /= 2;
+$iv_min = $iv_max;
+{
+ use integer;
+ $iv0 = 2 - 2;
+ $iv1 = 3 - 2;
+ $ivm1 = 2 - 3;
+ $iv_max -= 1;
+ $iv_min += 0;
+ $iv_big = $iv_max - 3;
+ $iv_small = $iv_min + 2;
+}
+my $uv_bigi = $iv_big;
+$uv_bigi |= 0x0;
+
+my @array = qw(perl rules);
+
+my @raw, @upgraded, @utf8;
+foreach ("\x{1F4A9}", chr(163), 'N') {
+ push @raw, $_;
+ my $temp = $_ . chr 256;
+ chop $temp;
+ push @upgraded, $temp;
+ my $utf8 = $_;
+ next if utf8::upgrade($utf8) == length $_;
+ utf8::encode($utf8);
+ push @utf8, $utf8;
+}
+
+# Seems one needs to perform the maths on 'Inf' to get the NV correctly primed.
+@FOO = ('s', 'N/A', 'a', 'NaN', -1, undef, 0, 1, 3.14, 1e37, 0.632120558, -.5,
+ 'Inf'+1, '-Inf'-1, 0x0, 0x1, 0x5, 0xFFFFFFFF, $uv_max, $uv_maxm1,
+ $uv_big, $uv_bigi, $iv0, $iv1, $ivm1, $iv_min, $iv_max, $iv_big,
+ $iv_small, \$array[0], \$array[0], \$array[1], \$^X, @raw, @upgraded,
+ @utf8);
+
+$expect = 7 * ($#FOO+2) * ($#FOO+1) + 6 * @raw + 6 * @utf8;
+print "1..$expect\n";
+
+my $bad_NaN = 0;
+
+{
+ # gcc -ffast-math option may stop NaNs working correctly
+ use Config;
+ my $ccflags = $Config{ccflags} // '';
+ $bad_NaN = 1 if $ccflags =~ /-ffast-math\b/;
+}
+
+sub nok ($$$$$$$$) {
+ my ($test, $left, $threeway, $right, $result, $i, $j, $boolean) = @_;
+ $result = defined $result ? "'$result'" : 'undef';
+ if ($bad_NaN && ($left eq 'NaN' || $right eq 'NaN')) {
+ print "ok $test # skipping failed NaN test under -ffast-math\n";
+ }
+ else {
+ print "not ok $test # ($left $threeway $right) gives: $result \$i=$i \$j=$j, $boolean disagrees\n";
+ }
+}
+
+my $ok = 0;
+for my $i (0..$#FOO) {
+ for my $j ($i..$#FOO) {
+ $ok++;
+ # Comparison routines may convert these internally, which would change
+ # what is used to determine the comparison on later runs. Hence copy
+ my ($i1, $i2, $i3, $i4, $i5, $i6, $i7, $i8, $i9, $i10,
+ $i11, $i12, $i13, $i14, $i15, $i16, $i17) =
+ ($FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i],
+ $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i],
+ $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i]);
+ my ($j1, $j2, $j3, $j4, $j5, $j6, $j7, $j8, $j9, $j10,
+ $j11, $j12, $j13, $j14, $j15, $j16, $j17) =
+ ($FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j],
+ $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j],
+ $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j]);
+ my $cmp = $i1 <=> $j1;
+ if (!defined($cmp) ? !($i2 < $j2)
+ : ($cmp == -1 && $i2 < $j2 ||
+ $cmp == 0 && !($i2 < $j2) ||
+ $cmp == 1 && !($i2 < $j2)))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '<');
+ }
+ $ok++;
+ if (!defined($cmp) ? !($i4 == $j4)
+ : ($cmp == -1 && !($i4 == $j4) ||
+ $cmp == 0 && $i4 == $j4 ||
+ $cmp == 1 && !($i4 == $j4)))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '==');
+ }
+ $ok++;
+ if (!defined($cmp) ? !($i5 > $j5)
+ : ($cmp == -1 && !($i5 > $j5) ||
+ $cmp == 0 && !($i5 > $j5) ||
+ $cmp == 1 && ($i5 > $j5)))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '>');
+ }
+ $ok++;
+ if (!defined($cmp) ? !($i6 >= $j6)
+ : ($cmp == -1 && !($i6 >= $j6) ||
+ $cmp == 0 && $i6 >= $j6 ||
+ $cmp == 1 && $i6 >= $j6))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '>=');
+ }
+ $ok++;
+ # OK, so the docs are wrong it seems. NaN != NaN
+ if (!defined($cmp) ? ($i7 != $j7)
+ : ($cmp == -1 && $i7 != $j7 ||
+ $cmp == 0 && !($i7 != $j7) ||
+ $cmp == 1 && $i7 != $j7))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '!=');
+ }
+ $ok++;
+ if (!defined($cmp) ? !($i8 <= $j8)
+ : ($cmp == -1 && $i8 <= $j8 ||
+ $cmp == 0 && $i8 <= $j8 ||
+ $cmp == 1 && !($i8 <= $j8)))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '<=');
+ }
+ $ok++;
+ my $pmc = $j16 <=> $i16; # cmp it in reverse
+ # Should give -ve of other answer, or undef for NaNs
+ # a + -a should be zero. not zero is truth. which avoids using ==
+ if (defined($cmp) ? !($cmp + $pmc) : !defined $pmc)
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '<=> transposed');
+ }
+
+
+ # String comparisons
+ $ok++;
+ $cmp = $i9 cmp $j9;
+ if ($cmp == -1 && $i10 lt $j10 ||
+ $cmp == 0 && !($i10 lt $j10) ||
+ $cmp == 1 && !($i10 lt $j10))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'lt');
+ }
+ $ok++;
+ if ($cmp == -1 && !($i11 eq $j11) ||
+ $cmp == 0 && ($i11 eq $j11) ||
+ $cmp == 1 && !($i11 eq $j11))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'eq');
+ }
+ $ok++;
+ if ($cmp == -1 && !($i12 gt $j12) ||
+ $cmp == 0 && !($i12 gt $j12) ||
+ $cmp == 1 && ($i12 gt $j12))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'gt');
+ }
+ $ok++;
+ if ($cmp == -1 && $i13 le $j13 ||
+ $cmp == 0 && ($i13 le $j13) ||
+ $cmp == 1 && !($i13 le $j13))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'le');
+ }
+ $ok++;
+ if ($cmp == -1 && ($i14 ne $j14) ||
+ $cmp == 0 && !($i14 ne $j14) ||
+ $cmp == 1 && ($i14 ne $j14))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'ne');
+ }
+ $ok++;
+ if ($cmp == -1 && !($i15 ge $j15) ||
+ $cmp == 0 && ($i15 ge $j15) ||
+ $cmp == 1 && ($i15 ge $j15))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'ge');
+ }
+ $ok++;
+ $pmc = $j17 cmp $i17; # cmp it in reverse
+ # Should give -ve of other answer
+ # a + -a should be zero. not zero is truth. which avoids using ==
+ if (!($cmp + $pmc))
+ {
+ print "ok $ok\n";
+ }
+ else {
+ nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'cmp transposed');
+ }
+ }
+}
+
+# We know the answers for these. We can rely on the consistency checks above
+# to test the other string comparisons.
+
+while (my ($i, $v) = each @raw) {
+ # Copy, to avoid any inadvertent conversion
+ my ($raw, $cooked, $not);
+ $raw = $v;
+ $cooked = $upgraded[$i];
+ $not = $raw eq $cooked ? '' : 'not ';
+ printf "%sok %d # eq, chr %d\n", $not, ++$ok, ord $raw;
+
+ $raw = $v;
+ $cooked = $upgraded[$i];
+ $not = $raw ne $cooked ? 'not ' : '';
+ printf "%sok %d # ne, chr %d\n", $not, ++$ok, ord $raw;
+
+ $raw = $v;
+ $cooked = $upgraded[$i];
+ $not = (($raw cmp $cooked) == 0) ? '' : 'not ';
+ printf "%sok %d # cmp, chr %d\n", $not, ++$ok, ord $raw;
+
+ # And now, transposed.
+ $raw = $v;
+ $cooked = $upgraded[$i];
+ $not = $cooked eq $raw ? '' : 'not ';
+ printf "%sok %d # eq, chr %d\n", $not, ++$ok, ord $raw;
+
+ $raw = $v;
+ $cooked = $upgraded[$i];
+ $not = $cooked ne $raw ? 'not ' : '';
+ printf "%sok %d # ne, chr %d\n", $not, ++$ok, ord $raw;
+
+ $raw = $v;
+ $cooked = $upgraded[$i];
+ $not = (($cooked cmp $raw) == 0) ? '' : 'not ';
+ printf "%sok %d # cmp, chr %d\n", $not, ++$ok, ord $raw;
+}
+
+while (my ($i, $v) = each @utf8) {
+ # Copy, to avoid any inadvertent conversion
+ my ($raw, $cooked, $not);
+ $raw = $raw[$i];
+ $cooked = $v;
+ $not = $raw eq $cooked ? 'not ' : '';
+ printf "%sok %d # eq vs octets, chr %d\n", $not, ++$ok, ord $raw;
+
+ $raw = $raw[$i];
+ $cooked = $v;
+ $not = $raw ne $cooked ? '' : 'not ';
+ printf "%sok %d # ne vs octets, chr %d\n", $not, ++$ok, ord $raw;
+
+ $raw = $raw[$i];
+ $cooked = $v;
+ $not = (($raw cmp $cooked) == 0) ? 'not ' : '';
+ printf "%sok %d # cmp vs octects, chr %d\n", $not, ++$ok, ord $raw;
+
+ # And now, transposed.
+ $raw = $raw[$i];
+ $cooked = $v;
+ $not = $cooked eq $raw ? 'not ' : '';
+ printf "%sok %d # eq vs octets, chr %d\n", $not, ++$ok, ord $raw;
+
+ $raw = $raw[$i];
+ $cooked = $v;
+ $not = $cooked ne $raw? '' : 'not ';
+ printf "%sok %d # ne vs octets, chr %d\n", $not, ++$ok, ord $raw;
+
+ $raw = $raw[$i];
+ $cooked = $v;
+ $not = (($cooked cmp $raw) == 0) ? 'not ' : '';
+ printf "%sok %d # cmp vs octects, chr %d\n", $not, ++$ok, ord $raw;
+}
diff --git a/gnu/usr.bin/perl/t/opbasic/concat.t b/gnu/usr.bin/perl/t/opbasic/concat.t
new file mode 100644
index 00000000000..f020992ac8a
--- /dev/null
+++ b/gnu/usr.bin/perl/t/opbasic/concat.t
@@ -0,0 +1,165 @@
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+
+# ok() functions from other sources (e.g., t/test.pl) may use concatenation,
+# but that is what is being tested in this file. Hence, we place this file
+# in the directory where do not use t/test.pl, and we write an ok() function
+# specially written to avoid any concatenation.
+
+my $test = 1;
+sub ok {
+ my($ok, $name) = @_;
+
+ printf "%sok %d - %s\n", ($ok ? "" : "not "), $test, $name;
+
+ printf "# Failed test at line %d\n", (caller)[2] unless $ok;
+
+ $test++;
+ return $ok;
+}
+
+print "1..30\n";
+
+($a, $b, $c) = qw(foo bar);
+
+ok("$a" eq "foo", "verifying assign");
+ok("$a$b" eq "foobar", "basic concatenation");
+ok("$c$a$c" eq "foo", "concatenate undef, fore and aft");
+
+# Okay, so that wasn't very challenging. Let's go Unicode.
+
+{
+ # bug id 20000819.004
+
+ $_ = $dx = "\x{10f2}";
+ s/($dx)/$dx$1/;
+ {
+ ok($_ eq "$dx$dx","bug id 20000819.004, back");
+ }
+
+ $_ = $dx = "\x{10f2}";
+ s/($dx)/$1$dx/;
+ {
+ ok($_ eq "$dx$dx","bug id 20000819.004, front");
+ }
+
+ $dx = "\x{10f2}";
+ $_ = "\x{10f2}\x{10f2}";
+ s/($dx)($dx)/$1$2/;
+ {
+ ok($_ eq "$dx$dx","bug id 20000819.004, front and back");
+ }
+}
+
+{
+ # bug id 20000901.092
+ # test that undef left and right of utf8 results in a valid string
+
+ my $a;
+ $a .= "\x{1ff}";
+ ok($a eq "\x{1ff}", "bug id 20000901.092, undef left");
+ $a .= undef;
+ ok($a eq "\x{1ff}", "bug id 20000901.092, undef right");
+}
+
+{
+ # ID 20001020.006
+
+ "x" =~ /(.)/; # unset $2
+
+ # Without the fix this 5.7.0 would croak:
+ # Modification of a read-only value attempted at ...
+ eval {"$2\x{1234}"};
+ ok(!$@, "bug id 20001020.006, left");
+
+ # For symmetry with the above.
+ eval {"\x{1234}$2"};
+ ok(!$@, "bug id 20001020.006, right");
+
+ *pi = \undef;
+ # This bug existed earlier than the $2 bug, but is fixed with the same
+ # patch. Without the fix this 5.7.0 would also croak:
+ # Modification of a read-only value attempted at ...
+ eval{"$pi\x{1234}"};
+ ok(!$@, "bug id 20001020.006, constant left");
+
+ # For symmetry with the above.
+ eval{"\x{1234}$pi"};
+ ok(!$@, "bug id 20001020.006, constant right");
+}
+
+sub beq { use bytes; $_[0] eq $_[1]; }
+
+{
+ # concat should not upgrade its arguments.
+ my($l, $r, $c);
+
+ ($l, $r, $c) = ("\x{101}", "\x{fe}", "\x{101}\x{fe}");
+ ok(beq($l.$r, $c), "concat utf8 and byte");
+ ok(beq($l, "\x{101}"), "right not changed after concat u+b");
+ ok(beq($r, "\x{fe}"), "left not changed after concat u+b");
+
+ ($l, $r, $c) = ("\x{fe}", "\x{101}", "\x{fe}\x{101}");
+ ok(beq($l.$r, $c), "concat byte and utf8");
+ ok(beq($l, "\x{fe}"), "right not changed after concat b+u");
+ ok(beq($r, "\x{101}"), "left not changed after concat b+u");
+}
+
+{
+ my $a; ($a .= 5) . 6;
+ ok($a == 5, '($a .= 5) . 6 - present since 5.000');
+}
+
+{
+ # [perl #24508] optree construction bug
+ sub strfoo { "x" }
+ my ($x, $y);
+ $y = ($x = '' . strfoo()) . "y";
+ ok( "$x,$y" eq "x,xy", 'figures out correct target' );
+}
+
+{
+ # [perl #26905] "use bytes" doesn't apply byte semantics to concatenation
+
+ my $p = "\xB6"; # PILCROW SIGN (ASCII/EBCDIC), 2bytes in UTF-X
+ my $u = "\x{100}";
+ my $b = pack 'a*', "\x{100}";
+ my $pu = "\xB6\x{100}";
+ my $up = "\x{100}\xB6";
+ my $x1 = $p;
+ my $y1 = $u;
+
+ use bytes;
+ ok(beq($p.$u, $p.$b), "perl #26905, left eq bytes");
+ ok(beq($u.$p, $b.$p), "perl #26905, right eq bytes");
+ ok(!beq($p.$u, $pu), "perl #26905, left ne unicode");
+ ok(!beq($u.$p, $up), "perl #26905, right ne unicode");
+
+ $x1 .= $u;
+ $x2 = $p . $u;
+ $y1 .= $p;
+ $y2 = $u . $p;
+
+ no bytes;
+ ok(beq($x1, $x2), "perl #26905, left, .= vs = . in bytes");
+ ok(beq($y1, $y2), "perl #26905, right, .= vs = . in bytes");
+ ok(($x1 eq $x2), "perl #26905, left, .= vs = . in chars");
+ ok(($y1 eq $y2), "perl #26905, right, .= vs = . in chars");
+}
+
+{
+ # Concatenation needs to preserve UTF8ness of left oper.
+ my $x = eval"qr/\x{fff}/";
+ ok( ord chop($x .= "\303\277") == 191, "UTF8ness preserved" );
+}
+
+{
+ my $x;
+ $x = "a" . "b";
+ $x .= "-append-";
+ ok($x eq "ab-append-", "Appending to something initialized using constant folding");
+}
diff --git a/gnu/usr.bin/perl/t/opbasic/magic_phase.t b/gnu/usr.bin/perl/t/opbasic/magic_phase.t
new file mode 100644
index 00000000000..d7217058575
--- /dev/null
+++ b/gnu/usr.bin/perl/t/opbasic/magic_phase.t
@@ -0,0 +1,49 @@
+#!./perl
+
+use strict;
+use warnings;
+
+# Test ${^GLOBAL_PHASE}
+#
+# Test::More, t/test.pl, etc., assert plans in END, which happens before global
+# destruction. We do not want to use those programs/libraries here, so we
+# place this file in directory t/opbasic.
+
+BEGIN { print "1..7\n" }
+
+sub ok ($$) {
+ print "not " if !$_[0];
+ print "ok";
+ print " - $_[1]" if defined $_[1];
+ print "\n";
+}
+
+BEGIN {
+ ok ${^GLOBAL_PHASE} eq 'START', 'START';
+}
+
+CHECK {
+ ok ${^GLOBAL_PHASE} eq 'CHECK', 'CHECK';
+}
+
+INIT {
+ ok ${^GLOBAL_PHASE} eq 'INIT', 'INIT';
+}
+
+ok ${^GLOBAL_PHASE} eq 'RUN', 'RUN';
+
+sub Moo::DESTROY {
+ ok ${^GLOBAL_PHASE} eq 'RUN', 'DESTROY is run-time too, usually';
+}
+
+my $tiger = bless {}, Moo::;
+
+sub Kooh::DESTROY {
+ ok ${^GLOBAL_PHASE} eq 'DESTRUCT', 'DESTRUCT';
+}
+
+our $affe = bless {}, Kooh::;
+
+END {
+ ok ${^GLOBAL_PHASE} eq 'END', 'END';
+}
diff --git a/gnu/usr.bin/perl/t/opbasic/qq.t b/gnu/usr.bin/perl/t/opbasic/qq.t
new file mode 100644
index 00000000000..8dac6ec1778
--- /dev/null
+++ b/gnu/usr.bin/perl/t/opbasic/qq.t
@@ -0,0 +1,76 @@
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+
+# This file uses a specially crafted is() function rather than that found in
+# t/test.pl or Test::More. Hence, we place this file in directory t/opbasic.
+
+print q(1..28
+);
+
+# This is() function is written to avoid ""
+my $test = 1;
+sub is {
+ my($left, $right) = @_;
+
+ if ($left eq $right) {
+ printf 'ok %d
+', $test++;
+ return 1;
+ }
+ foreach ($left, $right) {
+ # Comment out these regexps to map non-printables to ord if the perl under
+ # test is so broken that it is not helping
+ s/([^-+A-Za-z_0-9])/sprintf q{'.chr(%d).'}, ord $1/ge;
+ $_ = sprintf q('%s'), $_;
+ s/^''\.//;
+ s/\.''$//;
+ }
+ printf q(not ok %d - got %s expected %s
+), $test++, $left, $right;
+
+ printf q(# Failed test at line %d
+), (caller)[2];
+
+ return 0;
+}
+
+is ("\x53", chr 83);
+is ("\x4EE", chr (78) . 'E');
+is ("\x4i", chr (4) . 'i'); # This will warn
+is ("\xh", chr (0) . 'h'); # This will warn
+is ("\xx", chr (0) . 'x'); # This will warn
+is ("\xx9", chr (0) . 'x9'); # This will warn. \x9 is tab in EBCDIC too?
+is ("\x9_E", chr (9) . '_E'); # This will warn
+
+is ("\x{4E}", chr 78);
+is ("\x{6_9}", chr 105);
+is ("\x{_6_3}", chr 99);
+is ("\x{_6B}", chr 107);
+
+is ("\x{9__0}", chr 9); # multiple underscores not allowed.
+is ("\x{77_}", chr 119); # trailing underscore warns.
+is ("\x{6FQ}z", chr (111) . 'z');
+
+is ("\x{0x4E}", chr 0);
+is ("\x{x4E}", chr 0);
+
+is ("\x{0065}", chr 101);
+is ("\x{000000000000000000000000000000000000000000000000000000000000000072}",
+ chr 114);
+is ("\x{0_06_5}", chr 101);
+is ("\x{1234}", chr 4660);
+is ("\x{10FFFD}", chr 1114109);
+is ("\400", chr 0x100);
+is ("\600", chr 0x180);
+is ("\777", chr 0x1FF);
+is ("a\o{120}b", "a" . chr(0x50) . "b");
+is ("a\o{400}b", "a" . chr(0x100) . "b");
+is ("a\o{1000}b", "a" . chr(0x200) . "b");
+
+# This caused a memory fault
+no warnings "utf8";
+is ("abc", eval qq[qq\x{8000_0000}abc\x{8000_0000}])
diff --git a/gnu/usr.bin/perl/t/porting/args_assert.t b/gnu/usr.bin/perl/t/porting/args_assert.t
index e1a2fa5d8e5..27e9bf27fd9 100755
--- a/gnu/usr.bin/perl/t/porting/args_assert.t
+++ b/gnu/usr.bin/perl/t/porting/args_assert.t
@@ -39,6 +39,8 @@ if (!@ARGV) {
# *.c or */*.c
push @ARGV, $prefix . $1 if m!^((?:[^/]+/)?[^/]+\.c)\t!;
}
+ push @ARGV, $prefix . 'inline.h'; # Special case this '.h' which acts like
+ # a '.c'
}
while (<>) {
diff --git a/gnu/usr.bin/perl/t/porting/authors.t b/gnu/usr.bin/perl/t/porting/authors.t
index 9b9ba7c80d1..bc69e3a2a15 100644
--- a/gnu/usr.bin/perl/t/porting/authors.t
+++ b/gnu/usr.bin/perl/t/porting/authors.t
@@ -4,7 +4,7 @@
BEGIN {
@INC = '..' if -f '../TestInit.pm';
}
-use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
+use TestInit qw(T); # T is chdir to the top level
use strict;
require 't/test.pl';
diff --git a/gnu/usr.bin/perl/t/porting/checkcase.t b/gnu/usr.bin/perl/t/porting/checkcase.t
index 4ae44ca0ee1..3c05e22760f 100755
--- a/gnu/usr.bin/perl/t/porting/checkcase.t
+++ b/gnu/usr.bin/perl/t/porting/checkcase.t
@@ -1,6 +1,11 @@
#!/usr/bin/perl
-# Finds the files that have the same name, case insensitively,
-# in the current directory and its subdirectories
+# Finds the files that have the same name, case insensitively in the build tree
+
+BEGIN {
+ @INC = '..' if -f '../TestInit.pm';
+ require './test.pl';
+}
+use TestInit qw(T); # T is chdir to the top level
use warnings;
use strict;
@@ -9,29 +14,31 @@ use File::Find;
my %files;
my $test_count = 0;
-find(sub {
- # We only care about directories to the extent they
- # result in an actual file collision, so skip dirs
- return if -d $File::Find::name;
+find({no_chdir => 1, wanted => sub {
+ my $name = $File::Find::name;
+ # Assumes that the path separator is exactly one character.
+ $name =~ s/^\..//;
- my $name = $File::Find::name;
- # Assumes that the path separator is exactly one character.
- $name =~ s/^\.\..//;
+ # Special exemption for Makefile, makefile
+ return if $name =~ m!\A(?:x2p/)?[Mm]akefile\z!;
- # Special exemption for Makefile, makefile
- return if $name =~ m!\A(?:x2p/)?[Mm]akefile\z!;
+ if ($name eq '.git') {
+ # Don't scan the .git directory, as its contents are outside
+ # our control. In particular, as fetch doesn't default to
+ # --prune, # someone pushing a branch upstream with a name
+ # which case-conflicts with a previously deleted branch will
+ # cause action-at-a-distance failures, because locally
+ # .git/logs/refs/remotes will contain both.
+ ++$File::Find::prune;
+ return;
+ }
- push @{$files{lc $name}}, $name;
- }, '..');
+ push @{$files{lc $name}}, $name;
+ }}, '.');
foreach (sort values %files) {
- if (@$_ > 1) {
- print "not ok ".++$test_count. " - ". join(", ", @$_), "\n";
- print STDERR "# $_\n" foreach @$_;
- } else {
- print "ok ".++$test_count. " - ". join(", ", @$_), "\n";
- }
+ is( @$_, 1, join(", ", @$_) ) or
+ do{ note($_) foreach @$_; };
}
-print "1..".$test_count."\n";
-# vim: ts=4 sts=4 sw=4 et:
+done_testing();
diff --git a/gnu/usr.bin/perl/t/porting/cmp_version.t b/gnu/usr.bin/perl/t/porting/cmp_version.t
index 6204c576120..e7627e4b3d7 100644
--- a/gnu/usr.bin/perl/t/porting/cmp_version.t
+++ b/gnu/usr.bin/perl/t/porting/cmp_version.t
@@ -12,6 +12,7 @@ use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
use strict;
require 't/test.pl';
-find_git_or_skip('all');
+my $source = find_git_or_skip('all');
+chdir $source or die "Can't chdir to $source: $!";
system "$^X Porting/cmpVERSION.pl --exclude --tap";
diff --git a/gnu/usr.bin/perl/t/porting/customized.dat b/gnu/usr.bin/perl/t/porting/customized.dat
index f9620442ee4..bdb8eb21306 100644
--- a/gnu/usr.bin/perl/t/porting/customized.dat
+++ b/gnu/usr.bin/perl/t/porting/customized.dat
@@ -1,13 +1,16 @@
+Text::Balanced cpan/Text-Balanced/t/01_compile.t 1598cf491a48fa546260a2ec41142abe84da533d
+Text::Balanced cpan/Text-Balanced/t/02_extbrk.t 6ba1b64a4604e822dc2260b8ffcea6b406339ee8
+Text::Balanced cpan/Text-Balanced/t/03_extcbk.t 3307c980af28963414cab799c427b359ef3b8657
+Text::Balanced cpan/Text-Balanced/t/04_extdel.t be993c5c295b125b4be0ed55f866a249599f5835
+Text::Balanced cpan/Text-Balanced/t/05_extmul.t 4d1bc60add35ac203873f5371d8c6fcc9c8b6d80
+Text::Balanced cpan/Text-Balanced/t/06_extqlk.t 81a5804d392013393a338325b197cea52c4c44e0
+Text::Balanced cpan/Text-Balanced/t/07_exttag.t 5a209ed156387d4614d3003292e5fc412b8541e5
+Text::Balanced cpan/Text-Balanced/t/08_extvar.t 0776ef2cbdad5b1fbefb300541d079212cc24d92
+Text::Balanced cpan/Text-Balanced/t/09_gentag.t 42361b5dfb3bb728bce20f4fb0d92ccfb27c2ba7
Module::Build cpan/Module-Build/lib/Module/Build/ConfigData.pm 2f3f07fd889077ebd51791ad6e195d9164b4baf3
-Test::Harness cpan/Test-Harness/t/source.t 61738913dac9ba6c4504756d355c23c25c47d31e
-Test::Harness cpan/Test-Harness/t/testargs.t 79c91b2ea73f7cbfb9bae45dec4a62db74cb8dbf
-Module::Pluggable cpan/Module-Pluggable/Makefile.PL 72062c1a01ed7c62d16c55122c163b2d89f0d739
-autodie cpan/autodie/t/open.t cb493da4305f591ca0344d09e8a840a3147c5579
-libnet cpan/libnet/Makefile.PL 5554b71464b45f5cc002e55f2464f7ff4abd05b6
-podlators cpan/podlators/scripts/pod2man.PL 8fb484dc560adb00889f504760ca0a4defa9dc40
-podlators cpan/podlators/scripts/pod2text.PL 53ccba9264368c3f9acd2a36d1d354797d2a88f6
-podlators pod/perlpodstyle.pod 4f1ba65eddc5576267954b948556e16a9686c411
+Test::Harness cpan/Test-Harness/t/source.t 884890970fb850874213159df263ba483bac62e9
CPANPLUS cpan/CPANPLUS/Makefile.PL 5d533f6722af6aae73204755beb8d6c008fc0d4a
-Text-Tabs+Wrap cpan/Text-Tabs/t/fill.t a960d2c4f66b7e30557b5479e0da2da1bf7a7f45
-Text-Tabs+Wrap cpan/Text-Tabs/t/tabs.t 63a67b3a319c858d7e66306b8a653de1951153dc
-Sys::Syslog cpan/Sys-Syslog/t/syslog.t 647571fc90918883b871ff7e005ed7ab8a223784
+libnet cpan/libnet/Makefile.PL 5554b71464b45f5cc002e55f2464f7ff4abd05b6
+podlators cpan/podlators/scripts/pod2man.PL f81acf53f3ff46cdcc5ebdd661c5d13eb35d20d6
+podlators cpan/podlators/scripts/pod2text.PL b4693fcfe4a0a1b38a215cfb8985a65d5d025d69
+Module::Pluggable cpan/Module-Pluggable/Makefile.PL 72062c1a01ed7c62d16c55122c163b2d89f0d739
diff --git a/gnu/usr.bin/perl/t/porting/customized.t b/gnu/usr.bin/perl/t/porting/customized.t
index 76053bcc07d..631c1bcfb82 100644
--- a/gnu/usr.bin/perl/t/porting/customized.t
+++ b/gnu/usr.bin/perl/t/porting/customized.t
@@ -10,7 +10,8 @@ BEGIN {
# XXX that should be fixed
chdir '..' unless -d 't';
- @INC = qw(lib Porting);
+ @INC = qw(lib Porting t);
+ require 'test.pl';
}
use strict;
@@ -99,21 +100,16 @@ foreach my $module ( keys %Modules ) {
next;
}
my $should_be = $customised{ $module }->{ $file };
- if ( $id ne $should_be ) {
- print "not ok ".++$TestCounter." - SHA for $file does not match stashed SHA\n";
- }
- else {
- print "ok ".++$TestCounter." - SHA for $file matched\n";
- }
+ is( $id, $should_be, "SHA for $file matches stashed SHA" );
}
}
if ( $regen ) {
- print "ok ".++$TestCounter." - regenerated data file\n";
+ pass( "regenerated data file" );
close $data_fh;
}
-print "1..".$TestCounter."\n";
+done_testing();
=pod
diff --git a/gnu/usr.bin/perl/t/porting/diag.t b/gnu/usr.bin/perl/t/porting/diag.t
index 58bed957a65..bcf853e5c98 100755
--- a/gnu/usr.bin/perl/t/porting/diag.t
+++ b/gnu/usr.bin/perl/t/porting/diag.t
@@ -2,8 +2,10 @@
use warnings;
use strict;
-chdir 't';
-require './test.pl';
+BEGIN {
+ chdir 't';
+ require './test.pl';
+}
plan('no_plan');
@@ -49,21 +51,28 @@ while (<$func_fh>) {
close $func_fh;
+my $regcomp_re = "(?<routine>(?:ckWARN(?:\\d+)?reg\\w*|vWARN\\d+))";
my $function_re = join '|', @functions;
-my $source_msg_re = '(?<routine>\bDIE\b|$function_re)';
+my $regcomp_fail_re = '\b(?:(?:Simple_)?v)?FAIL[2-4]?\b';
+my $source_msg_re =
+ "(?<routine>\\bDIE\\b|$function_re|$regcomp_fail_re)";
my $text_re = '"(?<text>(?:\\\\"|[^"]|"\s*[A-Z_]+\s*")*)"';
my $source_msg_call_re = qr/$source_msg_re(?:_nocontext)? \s*
\(aTHX_ \s*
(?:packWARN\d*\((?<category>.*?)\),)? \s*
$text_re /x;
my $bad_version_re = qr{BADVERSION\([^"]*$text_re};
+ $regcomp_fail_re = qr/$regcomp_fail_re\([^"]*$text_re/;
+my $regcomp_call_re = qr/$regcomp_re.*?$text_re/;
my %entries;
# Get the ignores that are compiled into this file
+my $reading_categorical_exceptions;
while (<DATA>) {
chomp;
- $entries{$_}{todo}=1;
+ $entries{$_}{$reading_categorical_exceptions ? 'cattodo' : 'todo'}=1;
+ /__CATEGORIES__/ and ++$reading_categorical_exceptions;
}
my $pod = "pod/perldiag.pod";
@@ -71,14 +80,27 @@ my $cur_entry;
open my $diagfh, "<", $pod
or die "Can't open $pod: $!";
-my $category_re = qr/ [a-z0-9_]+?/; # Note: requires an initial space
+my $category_re = qr/ [a-z0-9_:]+?/; # Note: requires an initial space
my $severity_re = qr/ . (?: \| . )* /x; # A severity is a single char, but can
# be of the form 'S|P|W'
+my @same_descr;
while (<$diagfh>) {
if (m/^=item (.*)/) {
$cur_entry = $1;
- if (exists $entries{$cur_entry}) {
+ # Allow multi-line headers
+ while (<$diagfh>) {
+ if (/^\s*$/) {
+ last;
+ }
+
+ $cur_entry .= $_;
+ }
+
+ $cur_entry =~ s/\n/ /gs; # Fix multi-line headers if they have \n's
+ $cur_entry =~ s/\s+\z//;
+
+ if (exists $entries{$cur_entry} && $entries{$cur_entry}{todo}) {
TODO: {
local $::TODO = "Remove the TODO entry \"$cur_entry\" from DATA as it is already in $pod near line $.";
ok($cur_entry);
@@ -88,7 +110,6 @@ while (<$diagfh>) {
# overwrites one in DATA.
$entries{$cur_entry}{todo} = 0;
$entries{$cur_entry}{line_number} = $.;
- next;
}
next if ! defined $cur_entry;
@@ -97,10 +118,16 @@ while (<$diagfh>) {
if (/^ \( ( $severity_re )
# Can have multiple categories separated by commas
- (?: ( $category_re ) (?: , $category_re)* )? \) /x)
+ ( $category_re (?: , $category_re)* )? \) /x)
{
$entries{$cur_entry}{severity} = $1;
- $entries{$cur_entry}{category} = $2;
+ $entries{$cur_entry}{category} =
+ $2 && join ", ", sort split " ", $2 =~ y/,//dr;
+
+ # Record it also for other messages sharing the same description
+ @$_{qw<severity category>} =
+ @{$entries{$cur_entry}}{qw<severity category>}
+ for @same_descr;
}
elsif (! $entries{$cur_entry}{first_line} && $_ =~ /\S/) {
@@ -108,6 +135,12 @@ while (<$diagfh>) {
# that can later examine it to determine if that is ok or not
$entries{$cur_entry}{first_line} = $_;
}
+ if (/\S/) {
+ @same_descr = ();
+ }
+ else {
+ push @same_descr, $entries{$cur_entry};
+ }
}
}
@@ -158,19 +191,17 @@ my $specialformats =
join '|', sort { length $b cmp length $a } keys %specialformats;
my $specialformats_re = qr/%$format_modifiers"\s*($specialformats)(\s*")?/;
-# Recursively descend looking for source files.
-my @todo = sort <*>;
-while (@todo) {
- my $todo = shift @todo;
- next if $todo ~~ ['t', 'lib', 'ext', 'dist', 'cpan'];
- # opmini.c is just a copy of op.c, so there's no need to check again.
- next if $todo eq 'opmini.c';
- if (-d $todo) {
- unshift @todo, sort glob "$todo/*";
- } elsif ($todo =~ m/\.[ch]$/) {
- check_file($todo);
- }
+open my $fh, '<', 'MANIFEST' or die "Can't open MANIFEST: $!";
+while (my $file = <$fh>) {
+ chomp $file;
+ $file =~ s/\s+.*//;
+ next unless $file =~ /\.(?:c|cpp|h|xs|y)\z/ or $file =~ /^perly\./;
+ # OS/2 extensions have never been migrated to ext/, hence the special case:
+ next if $file =~ m!\A(?:ext|dist|cpan|lib|t|os2/OS2)/!
+ && $file !~ m!\Aext/DynaLoader/!;
+ check_file($file);
}
+close $fh or die $!;
# Standardize messages with variants into the form that appears
# in perldiag.pod -- useful for things without a diag_listed_as annotation
@@ -210,16 +241,15 @@ sub check_file {
$sub = $_;
}
next if $sub =~ m/^XS/;
- if (m</\* diag_listed_as: (.*) \*/>) {
+ if (m</\*\s*diag_listed_as: (.*?)\s*\*/>) {
$listed_as = $1;
$listed_as_line = $.+1;
}
next if /^#/;
- next if /^ +/;
my $multiline = 0;
# Loop to accumulate the message text all on one line.
- if (m/$source_msg_re(?:_nocontext)?\s*\(/) {
+ if (m/(?:$source_msg_re(?:_nocontext)?|$regcomp_re)\s*\(/) {
while (not m/\);$/) {
my $nextline = <$codefh>;
# Means we fell off the end of the file. Not terribly surprising;
@@ -250,24 +280,55 @@ sub check_file {
# The %"foo" thing needs to happen *before* this regex.
# diag($_);
# DIE is just return Perl_die
- my ($name, $category);
+ my ($name, $category, $routine);
if (/$source_msg_call_re/) {
- ($name, $category) = ($+{'text'}, $+{'category'});
+ ($name, $category, $routine) = ($+{'text'}, $+{'category'}, $+{'routine'});
+ # Sometimes the regexp will pick up too much for the category
+ # e.g., WARN_UNINITIALIZED), PL_warn_uninit_sv ... up to the next )
+ $category && $category =~ s/\).*//s;
}
elsif (/$bad_version_re/) {
($name, $category) = ($+{'text'}, undef);
}
+ elsif (/$regcomp_fail_re/) {
+ # FAIL("foo") -> "foo in regex m/%s/"
+ # vFAIL("foo") -> "foo in regex; marked by <-- HERE in m/%s/"
+ ($name, $category) = ($+{'text'}, undef);
+ $name .=
+ " in regex" . ("; marked by <-- HERE in" x /vFAIL/) . " m/%s/";
+ }
+ elsif (/$regcomp_call_re/) {
+ # vWARN/ckWARNreg("foo") -> "foo in regex; marked by <-- HERE in m/%s/
+ ($name, $category, $routine) = ($+{'text'}, undef, $+{'routine'});
+ $name .= " in regex; marked by <-- HERE in m/%s/";
+ $category = 'WARN_REGEXP';
+ if ($routine =~ /dep/) {
+ $category .= ',WARN_DEPRECATED';
+ }
+ }
else {
next;
}
- my $severity = {croak => [qw/P F/],
- die => [qw/P F/],
- warn => [qw/W D S/],
- }->{$+{'routine'}||'die'};
- my @categories;
+ # Try to guess what the severity should be. In the case of
+ # Perl_ck_warner and other _ck_ functions, we can tell whether it is
+ # a severe/default warning or no by the _d suffix. In the case of
+ # other warn functions we cannot tell, because Perl_warner may be pre-
+ # ceded by if(ckWARN) or if(ckWARN_d).
+ my $severity = !$routine ? '[PFX]'
+ : $routine =~ /warn.*_d\z/ ? '[DS]'
+ : $routine =~ /ck_warn/ ? 'W'
+ : $routine =~ /warn/ ? '[WDS]'
+ : $routine =~ /ckWARN.*dep/ ? 'D'
+ : $routine =~ /ckWARN\d*reg/ ? 'W'
+ : $routine =~ /vWARN\d/ ? '[WDS]'
+ : '[PFX]';
+ my $categories;
if (defined $category) {
- @categories = map {s/^WARN_//; lc $_} split /\s*[|,]\s*/, $category;
+ $category =~ s/__/::/g;
+ $categories =
+ join ", ",
+ sort map {s/^WARN_//; lc $_} split /\s*[|,]\s*/, $category;
}
if ($listed_as and $listed_as_line == $. - $multiline) {
$name = $listed_as;
@@ -298,25 +359,39 @@ sub check_file {
# inside an #if 0 block.
next if $name eq 'SKIPME';
- check_message(standardize($name),$codefn);
+ next if $name=~/\[TESTING\]/; # ignore these as they are works in progress
+
+ check_message(standardize($name),$codefn,$severity,$categories);
}
}
sub check_message {
- my($name,$codefn,$partial) = @_;
+ my($name,$codefn,$severity,$categories,$partial) = @_;
my $key = $name =~ y/\n/ /r;
my $ret;
+ # Try to reduce printf() formats to simplest forms
+ # Really this should be matching %s, etc like diagnostics.pm does
+
+ # Kill flags
+ $key =~ s/%[#0\-+]/%/g;
+
+ # Kill width
+ $key =~ s/\%(\d+|\*)/%/g;
+
+ # Kill precision
+ $key =~ s/\%\.(\d+|\*)/%/g;
+
if (exists $entries{$key}) {
$ret = 1;
if ( $entries{$key}{seen}++ ) {
# no need to repeat entries we've tested
- } elsif ($entries{$name}{todo}) {
+ } elsif ($entries{$key}{todo}) {
TODO: {
no warnings 'once';
local $::TODO = 'in DATA';
# There is no listing, but it is in the list of exceptions. TODO FAIL.
- fail($name);
+ fail($key);
diag(
" Message '$name'\n from $codefn line $. is not listed in $pod\n".
" (but it wasn't documented in 5.10 either, so marking it TODO)."
@@ -325,6 +400,25 @@ sub check_message {
} else {
# We found an actual valid entry in perldiag.pod for this error.
pass($key);
+
+ # Now check the category and severity
+
+ # Cache our severity qr thingies
+ use 5.01;
+ state %qrs;
+ my $qr = $qrs{$severity} ||= qr/$severity/;
+
+ return $ret
+ if $entries{$key}{cattodo};
+
+ like $entries{$key}{severity}, $qr,
+ $severity =~ /\[/
+ ? "severity is one of $severity for $key"
+ : "severity is $severity for $key";
+
+ is $entries{$key}{category}, $categories,
+ ($categories ? "categories are [$categories]" : "no category")
+ . " for $key";
}
# Later, should start checking that the severity is correct, too.
} elsif ($partial) {
@@ -333,7 +427,8 @@ sub check_message {
my $ok;
if ($name =~ /\n/) {
$ok = 1;
- check_message($_,$codefn,1) or $ok = 0, last for split /\n/, $name;
+ check_message($_,$codefn,$severity,$categories,1) or $ok = 0, last
+ for split /\n/, $name;
}
if ($ok) {
# noop
@@ -364,19 +459,28 @@ sub check_message {
# PLEASE DO NOT ADD TO THIS LIST. Instead, write an entry in
# pod/perldiag.pod for your new (warning|error).
+# Entries after __CATEGORIES__ are those that are in perldiag but fail the
+# severity/category test.
+
# Also FIXME this test, as the first entry in TODO *is* covered by the
# description: Malformed UTF-8 character (%s)
__DATA__
Malformed UTF-8 character (unexpected non-continuation byte 0x%x, immediately after start byte 0x%x)
-%s (%d) does not match %s (%d),
-%s (%d) smaller than %s (%d),
+'%c' allowed only after types %s in %s
bad top format reference
+Cannot apply "%s" in non-PerlIO perl
+Can't %s big-endian %ss on this
+Can't call mro_isa_changed_in() on anonymous symbol table
+Can't call mro_method_changed_in() on anonymous symbol table
Can't coerce readonly %s to string
Can't coerce readonly %s to string in %s
+Can't find string terminator %c%s%c anywhere before EOF
Can't fix broken locale name "%s"
Can't get short module name from a handle
Can't locate object method "%s" via package "%s" (perhaps you forgot to load "%s"?)
+Can't pipe "%s": %s
+Can't spawn: %s
Can't spawn "%s": %s
Can't %s script `%s' with ARGV[0] being `%s'
Can't %s "%s": %s
@@ -384,28 +488,43 @@ Can't %s `%s' with ARGV[0] being `%s' (looking for executables only, not found)
Can't use string ("%s"%s) as a subroutine ref while "strict refs" in use
\%c better written as $%c
Character(s) in '%c' format wrapped in %s
+chown not implemented!
+clear %s
Code missing after '/' in pack
Code missing after '/' in unpack
-Corrupted regexp opcode %d > %d
'%c' outside of string in pack
Debug leaking scalars child failed%s with errno %d: %s
+'/' does not take a repeat count in %s
+Don't know how to get file name
Don't know how to handle magic of type \%o
-Dp not implemented on this platform
Error reading "%s": %s
+execl not implemented!
+EVAL without pos change exceeded limit in regex
Filehandle opened only for %sput
Filehandle %s opened only for %sput
Filehandle STD%s reopened as %s only for input
+filter_del can only delete in reverse order (currently)
YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET! FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!
+fork() not implemented!
+free %s
Free to wrong pool %p not %p
get %s %p %p %p
+gethostent not implemented!
+getpwnam returned invalid UIC %o for user "%s"
glob failed (can't start child: %s)
glob failed (child exited with status %d%s)
Goto undefined subroutine
Goto undefined subroutine &%s
+Got signal %d
+()-group starts with a count in %s
+Illegal binary digit '%c' ignored
Illegal character %sin prototype for %s : %s
-Integer overflow in version %d
+Illegal hexadecimal digit '%c' ignored
+Illegal octal digit '%c' ignored
+Infinite recursion in regex
internal %<num>p might conflict with future printf extensions
-invalid control request: '\%o'
+Invalid argument to sv_cat_decode
Invalid range "%c-%c" in transliteration operator
Invalid separator character %c%c%c in PerlIO layer specification %s
Invalid TOKEN object ignored
@@ -413,24 +532,46 @@ Invalid type '%c' in pack
Invalid type '%c' in %s
Invalid type '%c' in unpack
Invalid type ',' in %s
+ioctlsocket not implemented!
'j' not supported on this platform
'J' not supported on this platform
+killpg not implemented!
+length() used on %s (did you mean "scalar(%s)"?)
+length() used on %hash (did you mean "scalar(keys %hash)"?)
+length() used on @array (did you mean "scalar(@array)"?)
+List form of pipe open not implemented
+Malformed integer in [] in %s
Malformed UTF-8 character (fatal)
Missing (suid) fd script name
More than one argument to open
More than one argument to open(,':%s')
mprotect for %p %u failed with %d
mprotect RW for %p %u failed with %d
+No %s allowed while running setgid
+No %s allowed with (suid) fdscript
+No such class field "%s"
Not an XSUB reference
Operator or semicolon missing before %c%s
+Pattern subroutine nesting without pos change exceeded limit in regex
Perl %s required--this is only %s, stopped
+PerlApp::TextQuery: no arguments, please
+POSIX syntax [%c %c] is reserved for future extensions in regex; marked by <-- HERE in m/%s/
ptr wrong %p != %p fl=%x nl=%p e=%p for %d
Recompile perl with -DDEBUGGING to use -D switch (did you mean -d ?)
+Regexp modifier "%c" may appear a maximum of twice in regex; marked by <-- HERE in m/%s/
+Regexp modifier "%c" may not appear twice in regex; marked by <-- HERE in m/%s/
+Regexp modifiers "%c" and "%c" are mutually exclusive in regex; marked by <-- HERE in m/%s/
+Regexp *+ operand could be empty in regex; marked by <-- HERE in m/%s/
+Repeated format line will never terminate (~~ and @#)
Reversed %c= operator
-Runaway prototype
%s(%f) failed
-%sCompilation failed in regexp
%sCompilation failed in require
+Sequence (?%c...) not implemented in regex; marked by <-- HERE in m/%s/
+Sequence (%s...) not recognized in regex; marked by <-- HERE in m/%s/
+Sequence %s... not terminated in regex; marked by <-- HERE in m/%s/
+Sequence (?%c... not terminated in regex; marked by <-- HERE in m/%s/
+Sequence (?(%c... not terminated in regex; marked by <-- HERE in m/%s/
+Sequence (?R) not terminated in regex m/%s/
set %s %p %p %p
%s free() ignored (RMAGIC, PERL_CORE)
%s has too many errors.
@@ -438,15 +579,20 @@ SIG%s handler "%s" not defined.
%s in %s
Size magic not implemented
%s number > %s non-portable
-%s object version %s does not match %s %s
%srealloc() %signored
-%s has too many errors.
+%s in regex m/%s/
%s on %s %s
-%s on %s %s %s
+socketpair not implemented!
Starting Full Screen process with flag=%d, mytype=%d
Starting PM process with flag=%d, mytype=%d
+sv_2iv assumed (U_V(fabs((double)SvNVX(sv))) < (UV)IV_MAX) but SvNVX(sv)=%f U_V is 0x%x, IV_MAX is 0x%x
SWASHNEW didn't return an HV ref
+switching effective gid is not implemented
+switching effective uid is not implemented
+System V IPC is not implemented on this machine
-T and -B not implemented on filehandles
+Terminating on signal SIG%s(%d)
+The crypt() function is not implemented on NetWare
The flock() function is not implemented on NetWare
The rewinddir() function is not implemented on NetWare
The seekdir() function is not implemented on NetWare
@@ -454,22 +600,49 @@ The telldir() function is not implemented on NetWare
Too deeply nested ()-groups in %s
Too many args on %s line of "%s"
U0 mode on a byte string
-Undefined top format called
+unable to find VMSPIPE.COM for i/o piping
+Unknown Unicode option value %d
+Unrecognized character %s; marked by <-- HERE after %s<-- HERE near column %d
Unstable directory path, current directory changed unexpectedly
Unterminated compressed integer in unpack
+Unterminated \g... pattern in regex; marked by <-- HERE in m/%s/
Usage: CODE(0x%x)(%s)
Usage: %s(%s)
Usage: %s::%s(%s)
+Usage: File::Copy::rmscopy(from,to[,date_flag])
+Usage: VMS::Filespec::candelete(spec)
+Usage: VMS::Filespec::fileify(spec)
+Usage: VMS::Filespec::pathify(spec)
+Usage: VMS::Filespec::rmsexpand(spec[,defspec])
+Usage: VMS::Filespec::unixify(spec)
+Usage: VMS::Filespec::unixpath(spec)
Usage: VMS::Filespec::unixrealpath(spec)
+Usage: VMS::Filespec::vmsify(spec)
+Usage: VMS::Filespec::vmspath(spec)
Usage: VMS::Filespec::vmsrealpath(spec)
Use of inherited AUTOLOAD for non-method %s::%s() is deprecated
utf8 "\x%X" does not map to Unicode
Value of logical "%s" too long. Truncating to %i bytes
-value of node is %d in Offset macro
-Variable "%c%s" is not imported
+waitpid: process %x is not a child of process %x
Wide character
Wide character in $/
-Wide character in print
+Within []-length '*' not allowed in %s
Within []-length '%c' not allowed in %s
Wrong syntax (suid) fd script name "%s"
+'X' outside of string in %s
'X' outside of string in unpack
+
+__CATEGORIES__
+Code point 0x%X is not Unicode, all \p{} matches fail; all \P{} matches succeed
+Code point 0x%X is not Unicode, may not be portable
+Illegal character \%o (carriage return)
+Missing argument in %s
+Unicode non-character U+%X is illegal for open interchange
+Operation "%s" returns its argument for non-Unicode code point 0x%X
+Operation "%s" returns its argument for UTF-16 surrogate U+%X
+Unicode surrogate U+%X is illegal in UTF-8
+UTF-16 surrogate U+%X
+False [] range "%s" in regex; marked by <-- HERE in m/%s/
+\N{} in character class restricted to one character in regex; marked by <-- HERE in m/%s/
+Zero length \N{} in regex; marked by <-- HERE in m/%s/
+Expecting '(?flags:(?[...' in regex; marked by <-- HERE in m/%s/
diff --git a/gnu/usr.bin/perl/t/porting/exec-bit.t b/gnu/usr.bin/perl/t/porting/exec-bit.t
index 718c81dabcf..1deb376c379 100644
--- a/gnu/usr.bin/perl/t/porting/exec-bit.t
+++ b/gnu/usr.bin/perl/t/porting/exec-bit.t
@@ -5,6 +5,16 @@ use strict;
# This test checks that anything with an executable bit is
# identified in Porting/exec-bit.txt to makerel will set
# the exe bit in the release tarball
+# and that anything with an executable bit also has a shebang
+
+sub has_shebang {
+ my $fname = shift;
+ open my $fh, '<', $fname or die "Can't open '$fname': $!";
+ my $line = <$fh>;
+ close $fh;
+
+ return $line =~ /^\#!\s*([A-Za-z0-9_\-\/\.])+\s?/ ? 1 : 0;
+}
require './test.pl';
if ( $^O eq "MSWin32" ) {
@@ -22,9 +32,6 @@ if ( $^O eq "vos" ) {
plan('no_plan');
use ExtUtils::Manifest qw(maniread);
-use File::Basename;
-use File::Find;
-use File::Spec::Functions;
# Copied from Porting/makerel - these will get +x in the tarball
# XXX refactor? -- dagolden, 2010-07-23
@@ -43,6 +50,8 @@ my @manifest = sort keys %{ maniread("../MANIFEST") };
for my $f ( map { "../$_" } @manifest ) {
next unless -x $f;
+ ok( has_shebang($f), "File $f has shebang" );
+
ok( $exe_list{$f}, "tarball will chmod +x $f" )
or diag( "Remove the exec bit or add '$f' to Porting/exec-bit.txt" );
@@ -51,4 +60,3 @@ for my $f ( map { "../$_" } @manifest ) {
ok( ! %exe_list, "Everything in Porting/exec-bit.txt has +x in repo" )
or diag( "Files missing exec bit:\n " . join("\n ", sort keys %exe_list) . "\n");
-
diff --git a/gnu/usr.bin/perl/t/porting/extrefs.t b/gnu/usr.bin/perl/t/porting/extrefs.t
new file mode 100644
index 00000000000..9d4a1d3d143
--- /dev/null
+++ b/gnu/usr.bin/perl/t/porting/extrefs.t
@@ -0,0 +1,128 @@
+#!./perl -w
+
+# What does this test?
+# Test that changes to perl header files don't cause external
+# references by simplying #including them. This breaks library probe
+# code on CPAN, and can break cflags.SH.
+#
+# Why do we test this?
+# See https://rt.perl.org/rt3/Ticket/Display.html?id=116989
+#
+# It's broken - how do I fix it?
+# You added an initializer or static function to a header file that
+# references some symbol you didn't define, you need to remove it.
+
+BEGIN {
+ require "./test.pl";
+ unshift @INC, ".." if -f "../TestInit.pm";
+}
+
+use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
+use strict;
+use warnings;
+use Config;
+use File::Path 'rmtree';
+use Cwd;
+
+plan(tests => 1);
+
+my $VERBOSE = grep {$_ eq '-v'} @ARGV;
+
+ok(try_compile_and_link(<<'CODE'));
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+int main(int argc, char **argv) {
+ return 0;
+}
+CODE
+
+
+# from Time::HiRes's Makefile.PL with minor modifications
+sub try_compile_and_link {
+ my ($c, %args) = @_;
+
+ my $ld_exeext = ($^O eq 'cygwin' || $^O eq 'MSWin32' ||
+ $^O eq 'os2' && $Config{ldflags} =~ /-Zexe\b/) ? '.exe' :
+ (($^O eq 'vos') ? $Config{exe_ext} : '');
+
+ my ($ok) = 0;
+ my $tempdir = tempfile();
+ my $cwd = getcwd();
+ mkdir $tempdir;
+ chdir $tempdir;
+ my ($tmp) = "temp";
+
+ my $obj_ext = $Config{obj_ext} || ".o";
+
+ if (open(my $tmpc, ">$tmp.c")) {
+ print $tmpc $c;
+ unless (close($tmpc)) {
+ chdir($cwd);
+ rmtree($tempdir);
+ warn "Failing closing code file: $!\n" if $VERBOSE;
+ return 0;
+ }
+
+ my $COREincdir = File::Spec->catdir(File::Spec->updir);
+
+ my $ccflags = $Config{'ccflags'} . ' ' . "-I$COREincdir"
+ . ' -DPERL_NO_INLINE_FUNCTIONS';
+
+ if ($^O eq "MSWin32") {
+ $ccflags .= " -I../win32 -I../win32/include";
+ }
+
+ my $libs = '';
+
+ # Include libs to be sure of linking against bufferoverflowU.lib for
+ # the SDK2003 compiler on Windows. See win32/Makefile for more details.
+ if ($^O eq "MSWin32" && $Config{cc} =~ /\bcl\b/i) {
+ $libs = " /link $Config{'libs'}";
+ }
+
+ my $null = File::Spec->devnull;
+
+ my $errornull = $VERBOSE ? '' : ">$null 2>$null";
+
+ # Darwin g++ 4.2.1 is fussy and demands a space.
+ # FreeBSD g++ 4.2.1 does not.
+ # We do not know the reaction of either to the presence of brown M&Ms.
+ my $out_opt = "-o ";
+ if ($^O eq "MSWin32" && $Config{cc} =~ /\bcl\b/i) {
+ $out_opt = "/Fe";
+ }
+
+ my $tmp_exe = "$tmp$ld_exeext";
+
+ my $cccmd = "$Config{'cc'} $out_opt$tmp_exe $ccflags $tmp.c $libs $errornull";
+
+ if ($^O eq 'VMS') {
+ $cccmd = "$Config{'cc'} /include=($COREincdir) $tmp.c";
+ }
+
+ if ($^O eq 'VMS') {
+ open( my $cmdfile, ">$tmp.com" );
+ print $cmdfile "\$ SET MESSAGE/NOFACILITY/NOSEVERITY/NOIDENT/NOTEXT\n";
+ print $cmdfile "\$ $cccmd\n";
+ print $cmdfile "\$ IF \$SEVERITY .NE. 1 THEN EXIT 44\n"; # escalate
+ close $cmdfile;
+ system("\@ $tmp.com");
+ $ok = $?==0;
+ chdir($cwd);
+ rmtree($tempdir);
+ }
+ else
+ {
+ printf "cccmd = $cccmd\n" if $VERBOSE;
+ my $res = system($cccmd);
+ $ok = defined($res) && $res == 0 && -s $tmp_exe && -x _;
+
+ chdir($cwd);
+ rmtree($tempdir);
+ }
+ }
+
+ return $ok;
+}
diff --git a/gnu/usr.bin/perl/t/porting/filenames.t b/gnu/usr.bin/perl/t/porting/filenames.t
index 268dd1c8c51..b65ab8e2c9e 100644
--- a/gnu/usr.bin/perl/t/porting/filenames.t
+++ b/gnu/usr.bin/perl/t/porting/filenames.t
@@ -27,12 +27,11 @@ BEGIN {
}
use strict;
-use File::Spec;
use File::Basename;
require './test.pl';
-my $manifest = File::Spec->catfile(File::Spec->updir(), 'MANIFEST');
+my $manifest = '../MANIFEST';
open my $m, '<', $manifest or die "Can't open '$manifest': $!";
my @files;
@@ -46,59 +45,38 @@ close $m or die $!;
plan(scalar @files);
-for my $file (@files) {
- validate_file_name($file);
-}
-exit 0;
-
-
-sub validate_file_name {
- my $path = shift;
- my $filename = basename $path;
-
- note("testing $path");
-
- my @path_components = split('/',$path);
- pop @path_components; # throw away the filename
+PATHNAME: for my $pathname (@files) {
+ my @path_components = split('/',$pathname);
+ my $filename = pop @path_components;
for my $component (@path_components) {
- if ($component =~ /\./) {
- fail("no directory components containing '.'");
- return;
- }
- if (length $component > 32) {
- fail("no directory with a name over 32 characters (VOS requirement)");
- return;
- }
+ if ($component =~ /\./) {
+ fail("$pathname has directory components containing '.'");
+ next PATHNAME;
+ }
+ if (length $component > 32) {
+ fail("$pathname has a name over 32 characters (VOS requirement)");
+ next PATHNAME;
+ }
}
if ($filename =~ /^\-/) {
- fail("filename does not start with -");
- return;
+ fail("$pathname starts with -");
+ next PATHNAME;
}
my($before, $after) = split /\./, $filename;
if (length $before > 39) {
- fail("filename has 39 or fewer characters before the dot");
- return;
- }
- if ($after) {
- if (length $after > 39) {
- fail("filename has 39 or fewer characters after the dot");
- return;
- }
- }
-
- if ($filename =~ /^(?:CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])\./i) {
- fail("filename has a reserved name");
- return;
- }
-
- if ($filename =~ /\s|\(|\&/) {
- fail("filename has a reserved character");
- return;
+ fail("$pathname has more than 39 characters before the dot");
+ } elsif ($after && length $after > 39) {
+ fail("$pathname has more than 39 characters after the dot");
+ } elsif ($filename =~ /^(?:CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])\./i) {
+ fail("$pathname has a reserved name");
+ } elsif ($filename =~ /\s|\(|\&/) {
+ fail("$pathname has a reserved character");
+ } else {
+ pass("$pathname ok");
}
- pass("filename ok");
}
# EOF
diff --git a/gnu/usr.bin/perl/t/porting/globvar.t b/gnu/usr.bin/perl/t/porting/globvar.t
index 795673b49a7..fd169c74420 100644
--- a/gnu/usr.bin/perl/t/porting/globvar.t
+++ b/gnu/usr.bin/perl/t/porting/globvar.t
@@ -18,6 +18,9 @@ my %skip = map { ("PL_$_", 1) }
watchaddr watchok warn_uninit_sv
);
+$skip{PL_hash_rand_bits}= $skip{PL_hash_rand_bits_enabled}= 1; # we can be compiled without these, so skip testing them
+
+
my $trial = "nm globals$Config{_o} 2>&1";
my $yes = `$trial`;
@@ -57,13 +60,17 @@ foreach my $file (map {$_ . $Config{_o}} qw(globals regcomp)) {
close $fh or die "Problem running nm $file";
}
-fail("Attempting to export '$_' which is never defined")
- foreach sort keys %exported;
+foreach (sort keys %exported) {
+ SKIP: {
+ skip("We dont't export '$_' (Perl not built with this enabled?)",1) if $skip{$_};
+ fail("Attempting to export '$_' which is never defined");
+ }
+}
foreach (sort keys %unexported) {
SKIP: {
- skip("We don't export $_", 1) if $skip{$_};
- fail("$_ is defined, but we do not export it");
+ skip("We don't export '$_'", 1) if $skip{$_};
+ fail("'$_' is defined, but we do not export it");
}
}
diff --git a/gnu/usr.bin/perl/t/porting/known_pod_issues.dat b/gnu/usr.bin/perl/t/porting/known_pod_issues.dat
index d08d202fd71..53e5797210c 100644
--- a/gnu/usr.bin/perl/t/porting/known_pod_issues.dat
+++ b/gnu/usr.bin/perl/t/porting/known_pod_issues.dat
@@ -18,10 +18,14 @@ Apache::MP3
Array::Base
Attribute::Constant
basename(1)
+Benchmark::Perl::Formance
ByteLoader
bzip2(1)
+Carp::Always
Carp::Assert
+Carp::Clan
chcp(1)
+Class::Accessor
Class::C3
Class::ISA
Class::PseudoHash
@@ -36,7 +40,9 @@ Date::Pcalc
DateTime
DB_File(3)
DBIx::Profile
+Devel::Callsite
Devel::DProf
+Devel::DTrace::Provider
Devel::NYTProf
Devel::PPPort
Devel::SawAmpersand
@@ -57,6 +63,7 @@ getpriority(2)
HTTP::Lite
inetd(8)
IPC::Run
+IPC::Signal
kill(3)
langinfo(3)
Lingua::KO::Hangul::Util
@@ -76,17 +83,21 @@ Module::CPANTS::Analyse
Module::Find
Module::Info
Module::Starter
+Moo
+Moose
MRO::Compat
nl_langinfo(3)
Number::Format
+Object::InsideOut
+Object::Tiny
open(2)
OS2::Proc
OS2::WinObject
PadWalker
passwd(1)
perl(1)
-Perl::Unsafe::Signals
Perl4::CoreLibs
+Perl::Unsafe::Signals
perlbug(1)
PerlIO::locale
PerlIO::Util
@@ -94,6 +105,8 @@ PerlIO::via::Base64
PerlIO::via::StripHTML
perllexwarn(1)
perlthanks
+pod/perldiag.pod Verbatim line length including indents exceeds 79 by 1
+pod/perlrun.pod Verbatim line length including indents exceeds 79 by 3
POD2::FR
POD2::IT
pod2ipf(1)
@@ -108,7 +121,9 @@ pstruct
ptar(1)
ptargrep(1)
pwd_mkdb(8)
+Readonly
recvmsg(3)
+Role::Tiny
s2p
Scalar::Readonly
Semi::Semicolons
@@ -143,6 +158,7 @@ Unicode::Regex::Set
Unicode::Semantics
Unicode::Unihan
unzip(1)
+Version::Requirements
wait(2)
waitpid(3)
wget(1)
@@ -150,29 +166,19 @@ Win32::Locale
YAML
YAML::Syck
YAML::Tiny
-dist/bignum/lib/bigint.pm Apparent broken link 1
-dist/bignum/lib/bignum.pm Apparent broken link 1
-dist/bignum/lib/bigrat.pm Apparent broken link 1
-dist/carp/lib/carp.pm Apparent broken link 2
-dist/constant/lib/constant.pm Apparent broken link 2
dist/cwd/lib/file/spec/vms.pm Verbatim line length including indents exceeds 79 by 1
dist/cwd/lib/file/spec/win32.pm Verbatim line length including indents exceeds 79 by 1
dist/data-dumper/dumper.pm ? Should you be using L<...> instead of 1
dist/extutils-parsexs/lib/perlxs.pod Verbatim line length including indents exceeds 79 by 1
dist/extutils-parsexs/lib/perlxstut.pod Verbatim line length including indents exceeds 79 by 10
dist/filter-simple/lib/filter/simple.pm Verbatim paragraph in NAME section 1
-dist/locale-maketext/lib/locale/maketext.pod No items in =over / =back list 1
dist/locale-maketext/lib/locale/maketext/tpj13.pod No items in =over / =back list 3
-dist/math-bigint/lib/math/bigfloat.pm Apparent broken link 1
-dist/math-bigint/lib/math/bigint.pm Apparent broken link 1
dist/math-bigint/lib/math/bigint.pm Verbatim line length including indents exceeds 79 by 77
-dist/math-bigint/lib/math/bigint/calcemu.pm Apparent broken link 1
dist/math-bigint/lib/math/bigint/calcemu.pm empty section in previous paragraph 3
-dist/math-bigrat/lib/math/bigrat.pm Apparent broken link 3
-dist/math-bigrat/lib/math/bigrat.pm Apparent internal link is missing its forward slash 1
dist/math-bigrat/lib/math/bigrat.pm Verbatim line length including indents exceeds 79 by 7
-dist/module-corelist/blib/script/corelist Verbatim line length including indents exceeds 79 by 1
+dist/math-bigrat/lib/math/bigrat.pm unresolved internal link 1
dist/module-corelist/lib/module/corelist.pod Verbatim line length including indents exceeds 79 by 4
+dist/module-corelist/lib/module/corelist/utils.pm Verbatim line length including indents exceeds 79 by 2
dist/net-ping/lib/net/ping.pm Verbatim line length including indents exceeds 79 by 2
dist/safe/safe.pm Verbatim line length including indents exceeds 79 by 1
dist/safe/safe.pm empty section in previous paragraph 1
@@ -181,7 +187,6 @@ dist/storable/storable.pm Verbatim line length including indents exceeds 79 by 4
dist/thread-queue/lib/thread/queue.pm Verbatim line length including indents exceeds 79 by 4
dist/threads/lib/threads.pm Verbatim line length including indents exceeds 79 by 3
dist/tie-file/lib/tie/file.pm Verbatim line length including indents exceeds 79 by 3
-dist/tie-file/lib/tie/file.pm unresolved internal link 1
ext/b/b/concise.pm Verbatim line length including indents exceeds 79 by 1
ext/devel-peek/peek.pm ? Should you be using L<...> instead of 2
ext/devel-peek/peek.pm Verbatim line length including indents exceeds 79 by 2
@@ -189,28 +194,24 @@ ext/dynaloader/dynaloader.pm Verbatim line length including indents exceeds 79 b
ext/file-glob/glob.pm Verbatim line length including indents exceeds 79 by 15
ext/hash-util-fieldhash/lib/hash/util/fieldhash.pm Verbatim line length including indents exceeds 79 by 2
ext/i18n-langinfo/langinfo.pm Verbatim line length including indents exceeds 79 by 1
-ext/opcode/opcode.pm Verbatim line length including indents exceeds 79 by 10
ext/pod-html/bin/pod2html Pod NAME already used 1
ext/pod-html/testdir/perlpodspec-copy.pod Verbatim line length including indents exceeds 79 by 8
ext/pod-html/testdir/perlvar-copy.pod ? Should you be using L<...> instead of 3
-ext/pod-html/testdir/perlvar-copy.pod Apparent broken link 2
ext/pod-html/testdir/perlvar-copy.pod Verbatim line length including indents exceeds 79 by 6
-ext/posix/lib/posix.pod Verbatim line length including indents exceeds 79 by 29
-ext/re/re.pm Verbatim line length including indents exceeds 79 by 6
+ext/posix/lib/posix.pod Verbatim line length including indents exceeds 79 by 13
ext/vms-dclsym/dclsym.pm ? Should you be using L<...> instead of 1
ext/vms-dclsym/dclsym.pm Verbatim line length including indents exceeds 79 by 1
ext/vms-stdio/stdio.pm Verbatim line length including indents exceeds 79 by 1
ext/xs-apitest/apitest.pm Verbatim line length including indents exceeds 79 by 1
install ? Should you be using F<...> or maybe L<...> instead of 1
-install Verbatim line length including indents exceeds 79 by 11
installhtml Verbatim line length including indents exceeds 79 by 3
os2/os2/os2-extattr/extattr.pm ? Should you be using F<...> or maybe L<...> instead of 1
os2/os2/os2-process/process.pm Verbatim line length including indents exceeds 79 by 27
os2/os2/os2-rexx/dll/dll.pm Verbatim line length including indents exceeds 79 by 2
os2/os2/os2-rexx/rexx.pm Verbatim line length including indents exceeds 79 by 1
-pod/perl.pod Verbatim line length including indents exceeds 79 by 9
+pod/perl.pod Verbatim line length including indents exceeds 79 by 8
pod/perlaix.pod Verbatim line length including indents exceeds 79 by 11
-pod/perlapi.pod ? Should you be using L<...> instead of 85
+pod/perlapi.pod ? Should you be using L<...> instead of 76
pod/perlapi.pod Verbatim line length including indents exceeds 79 by 6
pod/perlapi.pod unresolved internal link 3
pod/perlapio.pod Verbatim line length including indents exceeds 79 by 5
@@ -220,48 +221,38 @@ pod/perlce.pod Verbatim line length including indents exceeds 79 by 2
pod/perlclib.pod Verbatim line length including indents exceeds 79 by 3
pod/perlcygwin.pod Verbatim line length including indents exceeds 79 by 25
pod/perldbmfilter.pod Verbatim line length including indents exceeds 79 by 1
-pod/perldebguts.pod Verbatim line length including indents exceeds 79 by 68
+pod/perldebguts.pod Verbatim line length including indents exceeds 79 by 34
pod/perldebtut.pod Verbatim line length including indents exceeds 79 by 22
pod/perldebug.pod Verbatim line length including indents exceeds 79 by 3
pod/perldiag.pod =item type mismatch 1
-pod/perldiag.pod Apparent broken link 1
+pod/perldiag.pod Verbatim line length including indents exceeds 79 by 1
pod/perldsc.pod Verbatim line length including indents exceeds 79 by 4
-pod/perldtrace.pod Verbatim line length including indents exceeds 79 by 22
-pod/perlebcdic.pod Verbatim line length including indents exceeds 79 by 273
+pod/perldtrace.pod Verbatim line length including indents exceeds 79 by 26
+pod/perlebcdic.pod Verbatim line length including indents exceeds 79 by 13
pod/perlembed.pod Verbatim line length including indents exceeds 79 by 27
pod/perlfunc.pod There is more than one target 1
-pod/perlfunc.pod Verbatim line length including indents exceeds 79 by 167
-pod/perlgit.pod Verbatim line length including indents exceeds 79 by 11
+pod/perlgit.pod Verbatim line length including indents exceeds 79 by 12
pod/perlgpl.pod Verbatim line length including indents exceeds 79 by 50
pod/perlguts.pod ? Should you be using F<...> or maybe L<...> instead of 2
pod/perlguts.pod ? Should you be using L<...> instead of 1
pod/perlhack.pod ? Should you be using L<...> instead of 1
-pod/perlhack.pod Verbatim line length including indents exceeds 79 by 1
-pod/perlhacktips.pod Verbatim line length including indents exceeds 79 by 1
-pod/perlhist.pod Verbatim line length including indents exceeds 79 by 2
-pod/perlhpux.pod Verbatim line length including indents exceeds 79 by 3
+pod/perlhist.pod Verbatim line length including indents exceeds 79 by 1
+pod/perlhpux.pod Verbatim line length including indents exceeds 79 by 5
pod/perlhurd.pod Verbatim line length including indents exceeds 79 by 2
pod/perlintern.pod ? Should you be using L<...> instead of 5
pod/perlinterp.pod ? Should you be using L<...> instead of 1
-pod/perlinterp.pod Verbatim line length including indents exceeds 79 by 1
-pod/perlintro.pod Verbatim line length including indents exceeds 79 by 11
pod/perliol.pod Verbatim line length including indents exceeds 79 by 8
-pod/perlipc.pod Apparent broken link 1
pod/perlipc.pod Verbatim line length including indents exceeds 79 by 19
pod/perlirix.pod Verbatim line length including indents exceeds 79 by 4
pod/perllol.pod Verbatim line length including indents exceeds 79 by 4
-pod/perlmacosx.pod Verbatim line length including indents exceeds 79 by 3
+pod/perlmacosx.pod Verbatim line length including indents exceeds 79 by 4
pod/perlmod.pod Verbatim line length including indents exceeds 79 by 2
pod/perlmodlib.pod Verbatim line length including indents exceeds 79 by 3
pod/perlmodstyle.pod Verbatim line length including indents exceeds 79 by 2
-pod/perlmpeix.pod Verbatim line length including indents exceeds 79 by 2
pod/perlmroapi.pod ? Should you be using L<...> instead of 1
pod/perlnetware.pod Verbatim line length including indents exceeds 79 by 4
pod/perlnewmod.pod Verbatim line length including indents exceeds 79 by 1
-pod/perlobj.pod Apparent broken link 1
pod/perlootut.pod ? Should you be using F<...> or maybe L<...> instead of 1
-pod/perlootut.pod Apparent internal link is missing its forward slash 16
-pod/perlop.pod Verbatim line length including indents exceeds 79 by 29
pod/perlos2.pod ? Should you be using L<...> instead of 2
pod/perlos2.pod Verbatim line length including indents exceeds 79 by 22
pod/perlos390.pod Verbatim line length including indents exceeds 79 by 11
@@ -269,14 +260,10 @@ pod/perlpacktut.pod Verbatim line length including indents exceeds 79 by 6
pod/perlperf.pod Verbatim line length including indents exceeds 79 by 154
pod/perlpodspec.pod Verbatim line length including indents exceeds 79 by 9
pod/perlpodstyle.pod Verbatim line length including indents exceeds 79 by 1
-pod/perlreapi.pod Verbatim line length including indents exceeds 79 by 17
-pod/perlrebackslash.pod Verbatim line length including indents exceeds 79 by 1
pod/perlref.pod Verbatim line length including indents exceeds 79 by 1
-pod/perlreguts.pod Verbatim line length including indents exceeds 79 by 17
pod/perlrequick.pod Verbatim line length including indents exceeds 79 by 3
pod/perlretut.pod Verbatim line length including indents exceeds 79 by 13
-pod/perlrun.pod Verbatim line length including indents exceeds 79 by 2
-pod/perlsec.pod Verbatim line length including indents exceeds 79 by 1
+pod/perlrun.pod Verbatim line length including indents exceeds 79 by 3
pod/perlsolaris.pod Verbatim line length including indents exceeds 79 by 14
pod/perlsource.pod ? Should you be using F<...> or maybe L<...> instead of 1
pod/perlsub.pod ? Should you be using F<...> or maybe L<...> instead of 3
@@ -285,7 +272,6 @@ pod/perlsymbian.pod Verbatim line length including indents exceeds 79 by 20
pod/perlthrtut.pod Verbatim line length including indents exceeds 79 by 5
pod/perltie.pod Verbatim line length including indents exceeds 79 by 13
pod/perltrap.pod ? Should you be using F<...> or maybe L<...> instead of 1
-pod/perltrap.pod Verbatim line length including indents exceeds 79 by 15
pod/perltru64.pod ? Should you be using F<...> or maybe L<...> instead of 1
pod/perltru64.pod Verbatim line length including indents exceeds 79 by 4
pod/perlunifaq.pod empty section in previous paragraph 1
@@ -300,11 +286,9 @@ porting/how_to_write_a_perldelta.pod Verbatim line length including indents exce
porting/pumpkin.pod Verbatim line length including indents exceeds 79 by 9
porting/release_managers_guide.pod Verbatim line length including indents exceeds 79 by 7
porting/release_schedule.pod There is no NAME 1
-porting/todo.pod Apparent broken link 1
porting/todo.pod Verbatim line length including indents exceeds 79 by 7
symbian/perlutil.pod Verbatim line length including indents exceeds 79 by 4
utils/c2ph Verbatim line length including indents exceeds 79 by 44
-utils/libnetcfg Apparent broken link 1
utils/pod2html Pod NAME already used 1
vms/ext/filespec.pm Verbatim line length including indents exceeds 79 by 1
x2p/a2p.pod empty section in previous paragraph 2
@@ -312,9 +296,6 @@ lib/benchmark.pm Verbatim line length including indents exceeds 79 by 4
lib/class/struct.pm Verbatim line length including indents exceeds 79 by 7
lib/config.pod ? Should you be using L<...> instead of -1
lib/config.pod nested commands F<...F<...>...> 3
-lib/cpan/debug.pm There is no NAME 1
-lib/cpan/handleconfig.pm =head2 without preceding higher level 1
-lib/cpan/handleconfig.pm There is no NAME 1
lib/db.pm Verbatim line length including indents exceeds 79 by 2
lib/dbm_filter.pm Verbatim line length including indents exceeds 79 by 1
lib/dbm_filter/compress.pm Verbatim line length including indents exceeds 79 by 1
@@ -324,7 +305,6 @@ lib/dbm_filter/null.pm Verbatim line length including indents exceeds 79 by 1
lib/dbm_filter/utf8.pm Verbatim line length including indents exceeds 79 by 1
lib/deprecate.pm Verbatim line length including indents exceeds 79 by 2
lib/english.pm Verbatim line length including indents exceeds 79 by 1
-lib/exporter.pm Verbatim line length including indents exceeds 79 by 2
lib/extutils/embed.pm Verbatim line length including indents exceeds 79 by 2
lib/extutils/xssymset.pm Verbatim line length including indents exceeds 79 by 1
lib/file/basename.pm Verbatim line length including indents exceeds 79 by 2
diff --git a/gnu/usr.bin/perl/t/porting/maintainers.t b/gnu/usr.bin/perl/t/porting/maintainers.t
index f5edaa86938..3744081cd93 100755
--- a/gnu/usr.bin/perl/t/porting/maintainers.t
+++ b/gnu/usr.bin/perl/t/porting/maintainers.t
@@ -11,6 +11,7 @@ BEGIN {
chdir '..' unless -d 't';
@INC = qw(lib Porting);
+ require './t/test.pl';
}
use strict;
@@ -18,8 +19,7 @@ use warnings;
use Maintainers qw(show_results process_options finish_tap_output);
if ($^O eq 'VMS') {
- print "1..0 # Skip: home-grown glob doesn't handle fancy patterns\n";
- exit 0;
+ skip_all "home-grown glob doesn't handle fancy patterns";
}
{
diff --git a/gnu/usr.bin/perl/t/porting/manifest.t b/gnu/usr.bin/perl/t/porting/manifest.t
index 068540c983c..ea4fe832d79 100755
--- a/gnu/usr.bin/perl/t/porting/manifest.t
+++ b/gnu/usr.bin/perl/t/porting/manifest.t
@@ -5,7 +5,7 @@
BEGIN {
@INC = '..' if -f '../TestInit.pm';
}
-use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
+use TestInit qw(T); # T is chdir to the top level
require 't/test.pl';
diff --git a/gnu/usr.bin/perl/t/porting/pending-author.t b/gnu/usr.bin/perl/t/porting/pending-author.t
index 6bc392b35c6..0cb40545294 100644
--- a/gnu/usr.bin/perl/t/porting/pending-author.t
+++ b/gnu/usr.bin/perl/t/porting/pending-author.t
@@ -23,7 +23,7 @@
BEGIN {
@INC = '..' if -f '../TestInit.pm';
}
-use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
+use TestInit qw(T); # T is chdir to the top level
use strict;
require 't/test.pl';
@@ -43,9 +43,7 @@ sub get {
my $key = shift;
my $value = `git config --get user.$key`;
unless (defined $value && $value =~ /\S/) {
- plan(1);
- like($value, qr/\S/, "git config --get user.$key returned a value");
- exit 1;
+ skip_all("git config --get user.$key returned nought");
}
chomp $value;
return $value;
diff --git a/gnu/usr.bin/perl/t/porting/podcheck.t b/gnu/usr.bin/perl/t/porting/podcheck.t
index def6615338a..9864af621c3 100755
--- a/gnu/usr.bin/perl/t/porting/podcheck.t
+++ b/gnu/usr.bin/perl/t/porting/podcheck.t
@@ -399,6 +399,8 @@ my $non_pods = qr/ (?: \.
| $lib_ext # object libraries
| $lib_so # shared libraries
| $dl_ext # dynamic libraries
+ | gif # GIF images (example files from CGI.pm)
+ | eg # examples from libnet
)
$
) | ~$ | \ \(Autosaved\)\.txt$ # Other editor droppings
@@ -456,7 +458,8 @@ sub suppressed {
sub plan {
my %plan = @_;
- $planned = $plan{tests};
+ $planned = $plan{tests} + 1; # +1 for final test that files haven't
+ # been removed
print "1..$planned\n";
return;
}
@@ -470,7 +473,7 @@ sub suppressed {
$current_test++;
print "not " unless $success;
print "ok $current_test - $message\n";
- return;
+ return $success;
}
sub skip {
@@ -1034,6 +1037,27 @@ package My::Pod::Checker { # Extend Pod::Checker
delete $problems{$self->get_filename};
return;
}
+
+ sub parse_from_file {
+ # This overrides the super class method so that if an open fails on a
+ # transitory file, it doesn't croak. It returns 1 if it did find the
+ # file, 0 if it didn't
+
+ my $self = shift;
+ my $filename = shift;
+ # ignores 2nd param, which is output file. Always uses undef
+
+ if (open my $in_fh, '<:bytes', $filename) {
+ $self->SUPER::parse_from_filehandle($in_fh, undef);
+ close $in_fh;
+ return 1;
+ }
+
+ # If couldn't open file, perhaps it was transitory, and hence not an error
+ return 0 unless -e $filename;
+
+ die "Can't open '$filename': $!\n";
+ }
}
package Tie_Array_to_FH { # So printing actually goes to an array
@@ -1227,7 +1251,8 @@ sub my_safer_print { # print, with error checking for outputting to db
}
}
-sub extract_pod { # Extracts just the pod from a file
+sub extract_pod { # Extracts just the pod from a file; returns undef if file
+ # doesn't exist
my $filename = shift;
my @pod;
@@ -1235,30 +1260,33 @@ sub extract_pod { # Extracts just the pod from a file
# Arrange for the output of Pod::Parser to be collected in an array we can
# look at instead of being printed
tie *ALREADY_FH, 'Tie_Array_to_FH', \@pod;
- open my $in_fh, '<:bytes', $filename
+ if (open my $in_fh, '<:bytes', $filename) {
+ my $parser = Pod::Parser->new();
+ $parser->parse_from_filehandle($in_fh, *ALREADY_FH);
+ close $in_fh;
- # The file should already have been opened once to get here, so if
- # fails, just die. It's possible that a transitory file containing a
- # pod would get here, but not bothering to add code for that very
- # unlikely event.
- or die "Can't open '$filename': $!\n";
-
- my $parser = Pod::Parser->new();
- $parser->parse_from_filehandle($in_fh, *ALREADY_FH);
- close $in_fh;
+ return join "", @pod
+ }
- return join "", @pod
+ # The file should already have been opened once to get here, so if that
+ # fails, something is wrong. It's possible that a transitory file
+ # containing a pod would get here, so if the file no longer exists just
+ # return undef.
+ return unless -e $filename;
+ die "Can't open '$filename': $!\n";
}
my $digest = Digest->new($digest_type);
+# This is used as a callback from File::Find::find(), which always constructs
+# pathnames using Unix separators
sub is_pod_file {
# If $_ is a pod file, add it to the lists and do other prep work.
if (-d) {
# Don't look at files in directories that are for tests, nor those
# beginning with a dot
- if ($_ eq 't' || $_ =~ /^\../) {
+ if (m!/t\z! || m!/\.!) {
$File::Find::prune = 1;
}
return;
@@ -1268,8 +1296,9 @@ sub is_pod_file {
# check if 0 length
return unless -f || -l; # Weird file types won't be pods
- if ($_ =~ /^\./ # No hidden Unix files
- || $_ =~ $non_pods) {
+ my ($leaf) = m!([^/]+)\z!;
+ if (m!/\.! # No hidden Unix files
+ || $leaf =~ $non_pods) {
note("Not considering $_") if DEBUG;
return;
}
@@ -1277,8 +1306,7 @@ sub is_pod_file {
my $filename = $File::Find::name;
# $filename is relative, like './path'. Strip that initial part away.
- # Assumes that the path separator is exactly one character.
- $filename =~ s/^\..//;
+ $filename =~ s!^\./!! or die 'Unexpected pathname "$filename"';
return if $excluded_files{canonicalize($filename)};
@@ -1393,7 +1421,7 @@ else { # No input files -- go find all the possibilities.
chdir File::Spec->updir;
# And look in this directory and all its subdirectories
- find( \&is_pod_file, '.');
+ find( {wanted => \&is_pod_file, no_chdir => 1}, '.');
# Add ourselves to the test
push @files, "t/porting/podcheck.t";
@@ -1448,6 +1476,7 @@ plan (tests => scalar @files) if ! $regen;
@files;
# Now go through all the files and parse them
+FILE:
foreach my $filename (@files) {
my $parsed = 0;
note("parsing $filename") if DEBUG;
@@ -1464,8 +1493,12 @@ foreach my $filename (@files) {
# We have set the name in the checker object if there is a possibility
# that no further parsing is necessary, but otherwise do the parsing now.
if (! $checker->name) {
+ if (! $checker->parse_from_file($filename, undef)) {
+ $checker->set_skip("$filename is transitory");
+ next FILE;
+ }
$parsed = 1;
- $checker->parse_from_file($filename, undef);
+
}
if ($checker->num_errors() < 0) { # Returns negative if not a pod
@@ -1484,7 +1517,12 @@ foreach my $filename (@files) {
}
else {
my $digest = Digest->new($digest_type);
- $digest->add(extract_pod($filename));
+ my $contents = extract_pod($filename);
+
+ # If the return is undef, it means that $filename was a transitory
+ # file; skip it.
+ next FILE unless defined $contents;
+ $digest->add($contents);
$id = $digest->digest;
}
@@ -1510,7 +1548,28 @@ foreach my $filename (@files) {
# reason, but the pods they contain are identical. Extract the
# pods and do the comparisons on just those.
if (! $same && $name) {
- $same = extract_pod($prior_filename) eq extract_pod($filename);
+ my $contents = extract_pod($filename);
+
+ # If return is <undef>, it means that $filename no longer
+ # exists. This means it was a transitory file, and should not
+ # be tested.
+ next FILE unless defined $contents;
+
+ my $prior_contents = extract_pod($prior_filename);
+
+ # If return is <undef>, it means that $prior_filename no
+ # longer exists. This means it was a transitory file, and
+ # should not have been tested, but we already did process it.
+ # What we should do now is to back-out its records, and
+ # process $filename in its stead. But backing out is not so
+ # simple, and so I'm (khw) skipping that unless and until
+ # experience shows that it is needed. We do go process
+ # $filename, and there are potential false positive conflicts
+ # with the transitory $prior_contents, and rerunning the test
+ # should cause it to succeed.
+ goto process_this_pod unless defined $prior_contents;
+
+ $same = $prior_contents eq $contents;
}
if ($same) {
@@ -1544,9 +1603,11 @@ foreach my $filename (@files) {
# In any event, don't process this pod that has the same name as
# another.
- next;
+ next FILE;
}
+ process_this_pod:
+
# A unique pod.
$id_to_checker{$id} = $checker;
@@ -1557,8 +1618,10 @@ foreach my $filename (@files) {
if ($filename =~ /^cpan/) {
$checker->set_skip("CPAN is upstream for $filename");
}
- elsif ($filename =~ /perl\d+delta/ && ! $do_deltas) {
- $checker->set_skip("$filename is a stable perldelta");
+ elsif ($filename =~ /perl\d+delta/) {
+ if (! $do_deltas) {
+ $checker->set_skip("$filename is a stable perldelta");
+ }
}
elsif ($filename =~ /perltoc/) {
$checker->set_skip("$filename dependent on component pods");
@@ -1578,7 +1641,7 @@ foreach my $filename (@files) {
$checker->poderror( { -msg => $no_name,
-line => '???'
});
- next;
+ next FILE;
}
# For skipped files, just get its NAME
@@ -1587,14 +1650,17 @@ foreach my $filename (@files) {
{
$checker->node($name) if $name;
}
- else {
- $checker->parse_from_file($filename, undef) if ! $parsed;
+ elsif (! $parsed) {
+ if (! $checker->parse_from_file($filename, undef)) {
+ $checker->set_skip("$filename is transitory");
+ next FILE;
+ }
}
# Go through everything in the file that could be an anchor that
# could be a link target. Count how many there are of the same name.
foreach my $node ($checker->linkable_nodes) {
- next if ! $node; # Can be empty is like '=item *'
+ next FILE if ! $node; # Can be empty is like '=item *'
if (exists $nodes{$name}{$node}) {
$nodes{$name}{$node}++;
}
@@ -1738,9 +1804,10 @@ foreach my $filename (@files) {
# subtract back this number we previously added in.
$total_known -= $problem_count;
- $diagnostic .= $indent . $message;
+ $diagnostic .= $indent . qq{"$message"};
if ($problem_count > 2) {
- $diagnostic .= " ($problem_count occurrences)";
+ $diagnostic .= " ($problem_count occurrences,"
+ . " expected $known_problems{$canonical}{$message})";
}
foreach my $problem (@{$problems{$filename}{$message}}) {
$diagnostic .= " " if $problem_count == 1;
@@ -1776,9 +1843,21 @@ foreach my $filename (@files) {
note(join "", @diagnostics,
"See end of this test output for your options on silencing this");
}
+
+ delete $known_problems{$canonical};
}
}
+if (! $regen
+ && ! ok (keys %known_problems == 0, "The known problems data base includes no references to non-existent files"))
+{
+ note("The following files were not found: "
+ . join ", ", keys %known_problems);
+ note("They will automatically be removed from the db the next time");
+ note(" cd t; ./perl -I../lib porting/podcheck.t --regen");
+ note("is run");
+}
+
my $how_to = <<EOF;
run this test script by hand, using the following formula (on
Un*x-like machines):
diff --git a/gnu/usr.bin/perl/t/porting/regen.t b/gnu/usr.bin/perl/t/porting/regen.t
index 8595fb05f2f..e127eb0d460 100644
--- a/gnu/usr.bin/perl/t/porting/regen.t
+++ b/gnu/usr.bin/perl/t/porting/regen.t
@@ -16,11 +16,11 @@ if ( $^O eq "VMS" ) {
skip_all( "- regen.pl needs porting." );
}
-my $in_regen_pl = 22; # I can't see a clean way to calculate this automatically.
+my $in_regen_pl = 23; # I can't see a clean way to calculate this automatically.
my @files = qw(perly.act perly.h perly.tab keywords.c keywords.h uconfig.h);
-my @progs = qw(Porting/makemeta regen/regcharclass.pl regen/mk_PL_charclass.pl);
+my @progs = qw(regen/regcharclass.pl regen/mk_PL_charclass.pl);
-plan (tests => $in_regen_pl + @files + @progs);
+plan (tests => $in_regen_pl + @files + @progs + 2);
OUTER: foreach my $file (@files) {
open my $fh, '<', $file or die "Can't open $file: $!";
@@ -47,3 +47,7 @@ OUTER: foreach my $file (@files) {
foreach (@progs, 'regen.pl') {
system "$^X $_ --tap";
}
+
+foreach ( '-y', '-j' ) {
+ system "$^X Porting/makemeta --tap $_";
+}
diff --git a/gnu/usr.bin/perl/t/porting/test_bootstrap.t b/gnu/usr.bin/perl/t/porting/test_bootstrap.t
index d07e659dad6..654eaac9990 100755
--- a/gnu/usr.bin/perl/t/porting/test_bootstrap.t
+++ b/gnu/usr.bin/perl/t/porting/test_bootstrap.t
@@ -7,7 +7,10 @@ use strict;
# This regression tests ensures that the rules aren't accidentally overlooked.
-require './test.pl';
+BEGIN {
+ chdir 't';
+ require './test.pl';
+}
plan('no_plan');
@@ -46,7 +49,17 @@ while (my $file = <$fh>) {
unless $file eq 'comp/require.t'
}
-# There are regression tests using test.pl that don't want PL_sawampersand set
+# There are regression tests using test.pl that don't want PL_sawampersand
+# set. Or at least that was the case until PL_sawampersand was disabled
+# and replaced with copy-on-write.
+
+# We still allow PL_sawampersand to be enabled with
+# -Accflags=-DPERL_SAWAMPERSAND, so when that is defined we can still run
+# these tests. When it is not enabled, PL_sawampersand makes no observable
+# difference so the tests fail.
+
+require Config;
+exit unless "@{[Config::bincompat_options()]}" =~ /\bPERL_SAWAMPERSAND\b/;
# This very much relies on a bug in the regexp implementation, but for now it's
# the best way to work out whether PL_sawampersand is true.
diff --git a/gnu/usr.bin/perl/t/porting/utils.t b/gnu/usr.bin/perl/t/porting/utils.t
index 30c02b78930..13a164950b9 100644
--- a/gnu/usr.bin/perl/t/porting/utils.t
+++ b/gnu/usr.bin/perl/t/porting/utils.t
@@ -51,6 +51,7 @@ my @victims = (qw(installman installperl regen_perly.pl));
my %excuses = (
'Porting/git-deltatool' => 'Git::Wrapper',
'Porting/podtidy' => 'Pod::Tidy',
+ 'Porting/leakfinder.pl' => 'XS::APItest',
);
foreach (@maybe) {
diff --git a/gnu/usr.bin/perl/t/re/charset.t b/gnu/usr.bin/perl/t/re/charset.t
index 8d981258a21..a1e3be19ffa 100644
--- a/gnu/usr.bin/perl/t/re/charset.t
+++ b/gnu/usr.bin/perl/t/re/charset.t
@@ -8,6 +8,7 @@ BEGIN {
use strict;
use warnings;
+use Config;
plan('no_plan');
@@ -35,19 +36,24 @@ $testcases{'[:space:]'} = $testcases{'\s'};
$testcases{'[:word:]'} = $testcases{'\w'};
my @charsets = qw(a d u aa);
-if (! is_miniperl()) {
+if (! is_miniperl() && $Config{d_setlocale}) {
require POSIX;
my $current_locale = POSIX::setlocale( &POSIX::LC_ALL, "C") // "";
if ($current_locale eq 'C') {
- use locale;
- # Some locale implementations don't have the 128-255 characters all
- # mean nothing. Skip the locale tests in that situation
+ # test for d_setlocale is repeated here because this one is compile
+ # time, and the one above is run time
+ use if $Config{d_setlocale}, 'locale';
+
+ # Some implementations don't have the 128-255 range characters all
+ # mean nothing under the C locale (an example being VMS). This is
+ # legal, but since we don't know what the right answers should be,
+ # skip the locale tests in that situation.
for my $i (128 .. 255) {
- goto bad_locale if chr($i) =~ /[[:print:]]/;
+ goto untestable_locale if chr($i) =~ /[[:print:]]/;
}
push @charsets, 'l';
- bad_locale:
+ untestable_locale:
}
}
diff --git a/gnu/usr.bin/perl/t/re/fold_grind.t b/gnu/usr.bin/perl/t/re/fold_grind.t
index e2153e3186f..bb45a699ad6 100644
--- a/gnu/usr.bin/perl/t/re/fold_grind.t
+++ b/gnu/usr.bin/perl/t/re/fold_grind.t
@@ -6,6 +6,7 @@ BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
require './test.pl';
+ require Config; import Config;
skip_all_if_miniperl("no dynamic loading on miniperl, no Encode nor POSIX");
}
@@ -74,6 +75,9 @@ sub numerically {
return $a <=> $b
}
+my $list_all_tests = $ENV{PERL_DEBUG_FULL_TEST} || $DEBUG;
+$| = 1 if $list_all_tests;
+
# Significant time is saved by not outputting each test but grouping the
# output into subtests
my $okays; # Number of ok's in current subtest
@@ -86,7 +90,7 @@ sub run_test($$$) {
$debug = "" unless $DEBUG;
my $res = eval $test;
- if (!$res || $ENV{PERL_DEBUG_FULL_TEST}) {
+ if (!$res || $list_all_tests) {
# Failed or debug; output the result
$count++;
ok($res, "$test; $debug");
@@ -235,28 +239,61 @@ sub add_test($@) {
push @{$tests{$ord_smallest_from}}, map { ord $_ } @from;
}
-# Read the Unicode rules file and construct inverse mappings from it
+# Get the Unicode rules and construct inverse mappings from them
+use Unicode::UCD;
my $file="../lib/unicore/CaseFolding.txt";
-open my $fh, "<", $file or die "Failed to read '$file': $!";
-
-while (<$fh>) {
- chomp;
-
- # Lines look like (though without the initial '#')
- #0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
-
- # Get rid of comments, ignore blank or comment-only lines
- my $line = $_ =~ s/ (?: \s* \# .* )? $ //rx;
- next unless length $line;
- my ($hex_from, $fold_type, @hex_folded) = split /[\s;]+/, $line;
- next if $fold_type eq 'T'; # Perl doesn't do Turkish folding
- next if $fold_type eq 'S'; # If Unicode's tables are correct, the F
- # should be a superset of S
-
- my $folded_str = pack ("U0U*", map { hex $_ } @hex_folded);
- push @{$inverse_folds{$folded_str}}, chr hex $hex_from;
+# Use the Unicode data file if we are on an ASCII platform (which its data is
+# for), and it is in the modern format (starting in Unicode 3.1.0) and it is
+# available. This avoids being affected by potential bugs introduced by other
+# layers of Perl
+if (ord('A') == 65
+ && pack("C*", split /\./, Unicode::UCD::UnicodeVersion()) ge v3.1.0
+ && open my $fh, "<", $file)
+{
+ while (<$fh>) {
+ chomp;
+
+ # Lines look like (though without the initial '#')
+ #0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+ # Get rid of comments, ignore blank or comment-only lines
+ my $line = $_ =~ s/ (?: \s* \# .* )? $ //rx;
+ next unless length $line;
+ my ($hex_from, $fold_type, @hex_folded) = split /[\s;]+/, $line;
+
+ next if $fold_type =~ / ^ [IT] $/x; # Perl doesn't do Turkish folding
+ next if $fold_type eq 'S'; # If Unicode's tables are correct, the F
+ # should be a superset of S
+
+ my $folded_str = pack ("U0U*", map { hex $_ } @hex_folded);
+ push @{$inverse_folds{$folded_str}}, chr hex $hex_from;
+ }
+}
+else { # Here, can't use the .txt file: read the Unicode rules file and
+ # construct inverse mappings from it
+
+ my ($invlist_ref, $invmap_ref, undef, $default)
+ = Unicode::UCD::prop_invmap('Case_Folding');
+ for my $i (0 .. @$invlist_ref - 1 - 1) {
+ next if $invmap_ref->[$i] == $default;
+
+ # Make into an array if not so already, so can treat uniformly below
+ $invmap_ref->[$i] = [ $invmap_ref->[$i] ] if ! ref $invmap_ref->[$i];
+
+ # Each subsequent element of the range requires adjustment of +1 from
+ # the previous element
+ my $adjust = -1;
+ for my $j ($invlist_ref->[$i] .. $invlist_ref->[$i+1] -1) {
+ $adjust++;
+ my $folded_str
+ = pack "U0U*", map { $_ + $adjust } @{$invmap_ref->[$i]};
+ #note (sprintf "%d: %04X: %s", __LINE__, $j, join " ",
+ # map { sprintf "%04X", $_ + $adjust } @{$invmap_ref->[$i]});
+ push @{$inverse_folds{$folded_str}}, chr $j;
+ }
+ }
}
# Analyze the data and generate tests to get adequate test coverage. We sort
@@ -265,7 +302,8 @@ TO:
foreach my $to (sort { (length $a == length $b)
? $a cmp $b
: length $a <=> length $b
- } keys %inverse_folds) {
+ } keys %inverse_folds)
+{
# Within each fold, sort so that the smallest code points are done first
@{$inverse_folds{$to}} = sort { $a cmp $b } @{$inverse_folds{$to}};
@@ -363,23 +401,27 @@ sub prefix {
# It doesn't return pairs like (a, a), (b, b). Change the slice to an array
# to do that. This was just to have fewer tests.
sub pairs (@) {
- #print __LINE__, ": ", join(" XXX ", @_), "\n";
+ #print __LINE__, ": ", join(" XXX ", map { sprintf "%04X", $_ } @_), "\n";
map { prefix $_[$_], @_[0..$_-1, $_+1..$#_] } 0..$#_
}
my @charsets = qw(d u a aa);
-my $current_locale = POSIX::setlocale( &POSIX::LC_ALL, "C") // "";
-if ($current_locale eq 'C') {
- use locale;
-
- # Some locale implementations don't have the range 128-255 characters all
- # mean nothing. Skip the locale tests in that situation.
- for my $i (128 .. 255) {
- my $char = chr($i);
- goto bad_locale if uc($char) ne $char || lc($char) ne $char;
+if($Config{d_setlocale}) {
+ my $current_locale = POSIX::setlocale( &POSIX::LC_ALL, "C") // "";
+ if ($current_locale eq 'C') {
+ require locale; import locale;
+
+ # Some implementations don't have the 128-255 range characters all
+ # mean nothing under the C locale (an example being VMS). This is
+ # legal, but since we don't know what the right answers should be,
+ # skip the locale tests in that situation.
+ for my $i (128 .. 255) {
+ my $char = chr($i);
+ goto untestable_locale if uc($char) ne $char || lc($char) ne $char;
+ }
+ push @charsets, 'l';
+ untestable_locale:
}
- push @charsets, 'l';
-bad_locale:
}
# Finally ready to do the tests
@@ -600,9 +642,32 @@ foreach my $test (sort { numerically } keys %tests) {
$eval = "my \$c = \"$lhs\"; my \$p = qr/$rhs|xyz/i$charset;$upgrade_target$upgrade_pattern \$c $op \$p";
run_test($eval, "", "");
+ # Check that works when the folded character follows something that
+ # is quantified. This test knows the regex code internals to the
+ # extent that it knows this is a potential problem, and that there
+ # are three different types of quantifiers generated: 1) The thing
+ # being quantified matches a single character; 2) it matches more
+ # than one character, but is fixed width; 3) it can match a variable
+ # number of characters. (It doesn't know that case 3 shouldn't
+ # matter, since it doesn't do anything special for the character
+ # following the quantifier; nor that some of the different
+ # quantifiers execute the same underlying code, as these tests are
+ # quick, and this insulates these tests from changes in the
+ # implementation.)
+ for my $quantifier ('?', '??', '*', '*?', '+', '+?', '{1,2}', '{1,2}?') {
+ $eval = "my \$c = \"_$lhs\"; my \$p = qr/(?$charset:.$quantifier$rhs)/i;$upgrade_target$upgrade_pattern \$c $op \$p";
+ run_test($eval, "", "");
+ $eval = "my \$c = \"__$lhs\"; my \$p = qr/(?$charset:(?:..)$quantifier$rhs)/i;$upgrade_target$upgrade_pattern \$c $op \$p";
+ run_test($eval, "", "");
+ $eval = "my \$c = \"__$lhs\"; my \$p = qr/(?$charset:(?:.|\\R)$quantifier$rhs)/i;$upgrade_target$upgrade_pattern \$c $op \$p";
+ run_test($eval, "", "");
+ }
+
foreach my $bracketed (0, 1) { # Put rhs in [...], or not
next if $bracketed && @pattern != 1; # bracketed makes these
# or's instead of a sequence
+ foreach my $optimize_bracketed (0, 1) {
+ next if $optimize_bracketed && ! $bracketed;
foreach my $inverted (0,1) {
next if $inverted && ! $bracketed; # inversion only valid in [^...]
next if $inverted && @target != 1; # [perl #89750] multi-char
@@ -624,8 +689,9 @@ foreach my $test (sort { numerically } keys %tests) {
$rhs .= $rhs_char;
# Add a character to the class, so class doesn't get
- # optimized out
- $rhs .= '_]' if $bracketed;
+ # optimized out, unless we are testing that optimization
+ $rhs .= '_' if $optimize_bracketed;
+ $rhs .= ']' if $bracketed;
}
# Add one of: no capturing parens
@@ -732,7 +798,7 @@ foreach my $test (sort { numerically } keys %tests) {
utf8::upgrade($p) if length($upgrade_pattern);
my $res = $op ? ($c =~ $p): ($c !~ $p);
- if (!$res || $ENV{PERL_DEBUG_FULL_TEST}) {
+ if (!$res || $list_all_tests) {
# Failed or debug; output the result
$count++;
ok($res, "test $count - $desc");
@@ -749,9 +815,10 @@ foreach my $test (sort { numerically } keys %tests) {
}
}
}
+ }
}
}
- unless($ENV{PERL_DEBUG_FULL_TEST}) {
+ unless($list_all_tests) {
$count++;
is $okays, $this_iteration, "$okays subtests ok for"
. " /$charset,"
diff --git a/gnu/usr.bin/perl/t/re/no_utf8_pm.t b/gnu/usr.bin/perl/t/re/no_utf8_pm.t
index 8d49751f315..6595a248b34 100644
--- a/gnu/usr.bin/perl/t/re/no_utf8_pm.t
+++ b/gnu/usr.bin/perl/t/re/no_utf8_pm.t
@@ -1,6 +1,12 @@
#!./perl
-print "1..1\n";
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
+}
+
+plan tests => 1;
# Make sure that case-insensitive matching of any Latin1 chars don't load
# utf8.pm. We assume that NULL won't force loading utf8.pm, and since it
@@ -8,5 +14,4 @@ print "1..1\n";
# a swash if it thought there was one.
"\0" =~ /[\001-\xFF]/i;
-print "not" if exists $INC{"utf8.pm"};
-print "ok 1\n";
+ok(! exists $INC{"utf8.pm"}, 'case insensitive matching of any Latin1 chars does not load utf8.pm');
diff --git a/gnu/usr.bin/perl/t/re/overload.t b/gnu/usr.bin/perl/t/re/overload.t
index 4e99bd3ec66..dba0357a4fa 100644
--- a/gnu/usr.bin/perl/t/re/overload.t
+++ b/gnu/usr.bin/perl/t/re/overload.t
@@ -33,4 +33,234 @@ no warnings 'syntax';
is $1, $TAG, "void context //g against overloaded object";
}
+{
+ # an overloaded stringify returning itself shouldn't loop indefinitely
+
+
+ {
+ package Self;
+ use overload q{""} => sub {
+ return shift;
+ },
+ fallback => 1;
+ }
+
+ my $obj = bless [], 'Self';
+ my $r = qr/$obj/;
+ pass("self object, 1 arg");
+ $r = qr/foo$obj/;
+ pass("self object, 2 args");
+}
+
+{
+ # [perl #116823]
+ # when overloading regex string constants, a different code path
+ # was taken if the regex was compile-time, leading to overloaded
+ # regex constant string segments not being handled correctly.
+ # They were just treated as OP_CONST strings to be concatted together.
+ # In particular, if the overload returned a regex object, it would
+ # just be stringified rather than having any code blocks processed.
+
+ BEGIN {
+ overload::constant qr => sub {
+ my ($raw, $cooked, $type) = @_;
+ return $cooked unless defined $::CONST_QR_CLASS;
+ if ($type =~ /qq?/) {
+ return bless \$cooked, $::CONST_QR_CLASS;
+ } else {
+ return $cooked;
+ }
+ };
+ }
+
+ {
+ # returns a qr// object
+
+ package OL_QR;
+ use overload q{""} => sub {
+ my $re = shift;
+ return qr/(?{ $OL_QR::count++ })$$re/;
+ },
+ fallback => 1;
+
+ }
+
+ {
+ # returns a string
+
+ package OL_STR;
+ use overload q{""} => sub {
+ my $re = shift;
+ return qq/(?{ \$OL_STR::count++ })$$re/;
+ },
+ fallback => 1;
+
+ }
+
+ {
+ # returns chr(str)
+
+ package OL_CHR;
+ use overload q{""} => sub {
+ my $chr = shift;
+ return chr($$chr);
+ },
+ fallback => 1;
+
+ }
+
+
+ my $qr;
+
+ $::CONST_QR_CLASS = 'OL_QR';
+
+ $OL_QR::count = 0;
+ $qr = eval q{ qr/^foo$/; };
+ ok("foo" =~ $qr, "compile-time, OL_QR, single constant segment");
+ is($OL_QR::count, 1, "flag");
+
+ $OL_QR::count = 0;
+ $qr = eval q{ qr/^foo$(?{ $OL_QR::count++ })/; };
+ ok("foo" =~ $qr, "compile-time, OL_QR, multiple constant segments");
+ is($OL_QR::count, 2, "qr2 flag");
+
+
+ # test /foo.../ when foo is given string overloading,
+ # for various permutations of '...'
+
+ $::CONST_QR_CLASS = 'OL_STR';
+
+ for my $has_re_eval (0, 1) {
+ for my $has_qr (0, 1) {
+ for my $has_code (0, 1) {
+ for my $has_runtime (0, 1) {
+ for my $has_runtime_code (0, 1) {
+ if ($has_runtime_code) {
+ next unless $has_runtime;
+ }
+ note( "re_eval=$has_re_eval "
+ . "qr=$has_qr "
+ . "code=$has_code "
+ . "runtime=$has_runtime "
+ . "runtime_code=$has_runtime_code");
+ my $eval = '';
+ $eval .= q{use re 'eval'; } if $has_re_eval;
+ $eval .= q{$match = $str =~ };
+ $eval .= q{qr} if $has_qr;
+ $eval .= q{/^abc};
+ $eval .= q{(?{$blocks++})} if $has_code;
+ $eval .= q{$runtime} if $has_runtime;
+ $eval .= q{/; 1;};
+
+ my $runtime = q{def};
+ $runtime .= q{(?{$run_blocks++})} if $has_runtime_code;
+
+ my $blocks = 0;
+ my $run_blocks = 0;
+ my $match;
+ my $str = "abc";
+ $str .= "def" if $runtime;
+
+ my $result = eval $eval;
+ my $err = $@;
+ $result = $result ? 1 : 0;
+
+ if (!$has_re_eval) {
+ is($result, 0, "EVAL: $eval");
+ like($err, qr/Eval-group not allowed at runtime/,
+ "\$\@: $eval");
+ next;
+ }
+
+ is($result, 1, "EVAL: $eval");
+ diag("\$@=[$err]") unless $result;
+
+ is($match, 1, "MATCH: $eval");
+ is($blocks, $has_code, "blocks");
+ is($run_blocks, $has_runtime_code, "run_blocks");
+
+ }
+ }
+ }
+ }
+ }
+
+ # if the pattern gets (undetectably in advance) upgraded to utf8
+ # while being concatenated, it could mess up the alignment of the code
+ # blocks, giving rise to 'Eval-group not allowed at runtime' errs.
+
+ $::CONST_QR_CLASS = 'OL_CHR';
+
+ {
+ my $count = 0;
+ is(eval q{ "\x80\x{100}" =~ /128(?{ $count++ })256/ }, 1,
+ "OL_CHR eval + match");
+ is($count, 1, "OL_CHR count");
+ }
+
+ undef $::CONST_QR_CLASS;
+}
+
+
+{
+ # [perl #115004]
+ # array interpolation within patterns should handle qr overloading
+ # (like it does for scalar vars)
+
+ {
+ package P115004;
+ use overload 'qr' => sub { return qr/a/ };
+ }
+
+ my $o = bless [], 'P115004';
+ my @a = ($o);
+
+ ok("a" =~ /^$o$/, "qr overloading with scalar var interpolation");
+ ok("a" =~ /^@a$/, "qr overloading with array var interpolation");
+
+}
+
+{
+
+ # if the pattern gets silently re-parsed, ensure that any eval'ed
+ # code blocks get the correct lexical scope. The overloading of
+ # concat, along with the modification of the text of the code block,
+ # ensures that it has to be re-compiled.
+
+ {
+ package OL_MOD;
+ use overload
+ q{""} => sub { my ($pat) = @_; $pat->[0] },
+ q{.} => sub {
+ my ($a1, $a2) = @_;
+ $a1 = $a1->[0] if ref $a1;
+ $a2 = $a2->[0] if ref $a2;
+ my $s = "$a1$a2";
+ $s =~ s/x_var/y_var/;
+ bless [ $s ];
+ },
+ ;
+ }
+
+
+ BEGIN {
+ overload::constant qr => sub { bless [ $_[0] ], 'OL_MOD' };
+ }
+
+ $::x_var = # duplicate to avoid 'only used once' warning
+ $::x_var = "ABC";
+ my $x_var = "abc";
+
+ $::y_var = # duplicate to avoid 'only used once' warning
+ $::y_var = "XYZ";
+ my $y_var = "xyz";
+
+ use re 'eval';
+ my $a = 'a';
+ ok("xyz" =~ m{^(??{ $x_var })$}, "OL_MOD");
+ ok("xyza" =~ m{^(??{ $x_var })$a$}, "OL_MOD runtime");
+}
+
+
+
done_testing();
diff --git a/gnu/usr.bin/perl/t/re/pat_advanced.t b/gnu/usr.bin/perl/t/re/pat_advanced.t
index d82fcf12912..48a37c2c1a2 100755
--- a/gnu/usr.bin/perl/t/re/pat_advanced.t
+++ b/gnu/usr.bin/perl/t/re/pat_advanced.t
@@ -789,6 +789,12 @@ sub run_tests {
}
{
+ # The second half of RT #114808
+ warning_is(sub {'aa' =~ /.+\x{100}/}, undef,
+ 'utf8-only floating substr, non-utf8 target, no warning');
+ }
+
+ {
my $message = "qr /.../x";
my $R = qr / A B C # D E/x;
ok("ABCDE" =~ $R && $& eq "ABC", $message);
@@ -829,15 +835,6 @@ sub run_tests {
}
{
- # XXX DAPM 13-Apr-06. Recursive split is still broken. It's only luck it
- # hasn't been crashing. Disable this test until it is fixed properly.
- # XXX also check what it returns rather than just doing ok(1,...)
- # split /(?{ split "" })/, "abc";
- local $::TODO = "Recursive split is still broken";
- ok 0, 'cache_re & "(?{": it dumps core in 5.6.1 & 5.8.0';
- }
-
- {
ok "\x{100}\n" =~ /\x{100}\n$/, "UTF-8 length cache and fbm_compile";
}
@@ -882,16 +879,16 @@ sub run_tests {
}
{
- for (120 .. 130) {
+ for (120 .. 130, 240 .. 260) {
my $head = 'x' x $_;
my $message = q [Don't misparse \x{...} in regexp ] .
- q [near 127 char EXACT limit];
+ q [near EXACT char count limit];
for my $tail ('\x{0061}', '\x{1234}', '\x61') {
eval qq{like("$head$tail", qr/$head$tail/, \$message)};
is($@, '', $message);
}
$message = q [Don't misparse \N{...} in regexp ] .
- q [near 127 char EXACT limit];
+ q [near EXACT char count limit];
for my $tail ('\N{SNOWFLAKE}') {
eval qq {use charnames ':full';
like("$head$tail", qr/$head$tail/, \$message)};
@@ -980,13 +977,16 @@ sub run_tests {
use Cname;
ok 'fooB' =~ /\N{foo}[\N{B}\N{b}]/, "Passthrough charname";
+ my $name = "foo\xDF";
+ my $result = eval "'A${name}B' =~ /^A\\N{$name}B\$/";
+ ok !$@ && $result, "Passthrough charname of non-ASCII, Latin1";
#
# Why doesn't must_warn work here?
#
my $w;
local $SIG {__WARN__} = sub {$w .= "@_"};
eval 'q(xxWxx) =~ /[\N{WARN}]/';
- ok $w && $w =~ /Using just the first character returned by \\N{} in character class/,
+ ok $w && $w =~ /Using just the first character returned by \\N\{} in character class/,
"single character in [\\N{}] warning";
undef $w;
@@ -994,6 +994,16 @@ sub run_tests {
"Zerolength charname in charclass doesn't match \\\\0"];
ok $w && $w =~ /Ignoring zero length/,
'Ignoring zero length \N{} in character class warning';
+ undef $w;
+ eval q [ok 'xy' =~ /x[\N{EMPTY-STR} y]/x,
+ 'Empty string charname in [] is ignored; finds a following character'];
+ ok $w && $w =~ /Ignoring zero length/,
+ 'Ignoring zero length \N{} in character class warning';
+ undef $w;
+ eval q [ok 'x ' =~ /x[\N{EMPTY-STR} y]/,
+ 'Empty string charname in [] is ignored; finds a following blank under /x'];
+ ok $w && $w =~ /Ignoring zero length/,
+ 'Ignoring zero length \N{} in character class warning';
ok 'AB' =~ /(\N{EVIL})/ && $1 eq 'A', 'Charname caching $1';
ok 'ABC' =~ /(\N{EVIL})/, 'Charname caching $1';
@@ -1004,27 +1014,82 @@ sub run_tests {
ok "\N{LONG-STR}" =~ /^\N{LONG-STR}$/, 'Verify that long string works';
ok "\N{LONG-STR}" =~ /^\N{LONG-STR}$/i, 'Verify under folding that long string works';
+ eval '/(?[[\N{EMPTY-STR}]])/';
+ ok $@ && $@ =~ /Zero length \\N\{}/;
+
+ undef $w;
+ eval q [is("\N{TOO MANY SPACES}", "TOO MANY SPACES", "Multiple spaces in character name works")];
+ like ($w, qr/A sequence of multiple spaces in a charnames alias definition is deprecated/, "... but returns a deprecation warning");
+ eval q [use utf8; is("\N{TOO MANY SPACES}", "TOO MANY SPACES", "Same under 'use utf8': they work")];
+ like ($w, qr/A sequence of multiple spaces in a charnames alias definition is deprecated/, "... but return a deprecation warning");
+ {
+ no warnings 'deprecated';
+ undef $w;
+ eval q ["\N{TOO MANY SPACES}"];
+ ok (! defined $w, "... and no warning if warnings are off");
+ eval q [use utf8; "\N{TOO MANY SPACES}"];
+ ok (! defined $w, "... same under 'use utf8'");
+ }
+
+ undef $w;
+ eval q [is("\N{TRAILING SPACE }", "TRAILING SPACE ", "Trailing space in character name works")];
+ like ($w, qr/Trailing white-space in a charnames alias definition is deprecated/, "... but returns a deprecation warning");
+ eval q [use utf8; is("\N{TRAILING SPACE }", "TRAILING SPACE ", "Same under 'use utf8': they work")];
+ like ($w, qr/Trailing white-space in a charnames alias definition is deprecated/, "... but returns a deprecation warning");
+ {
+ no warnings 'deprecated';
+ undef $w;
+ eval q ["\N{TRAILING SPACE }"];
+ ok (! defined $w, "... and no warning if warnings are off");
+ eval q [use utf8; "\N{TRAILING SPACE }"];
+ ok (! defined $w, "... same under 'use utf8'");
+ }
+
# If remove the limitation in regcomp code these should work
# differently
undef $w;
eval q [ok "\N{TOO-LONG-STR}" =~ /^\N{TOO-LONG-STR}$/, 'Verify that what once was too long a string works'];
eval 'q(syntax error) =~ /\N{MALFORMED}/';
ok $@ && $@ =~ /Malformed/, 'Verify that malformed utf8 gives an error';
- undef $w;
eval 'q() =~ /\N{4F}/';
- ok $w && $w =~ /Deprecated/, 'Verify that leading digit in name gives warning';
- undef $w;
+ ok $@ && $@ =~ /Invalid character/, 'Verify that leading digit in name gives error';
eval 'q() =~ /\N{COM,MA}/';
- ok $w && $w =~ /Deprecated/, 'Verify that comma in name gives warning';
- undef $w;
- my $name = "A\x{D7}O";
+ ok $@ && $@ =~ /Invalid character/, 'Verify that comma in name gives error';
+ $name = "A\x{D7}O";
eval "q(W) =~ /\\N{$name}/";
- ok $w && $w =~ /Deprecated/, 'Verify that latin1 symbol in name gives warning';
+ ok $@ && $@ =~ /Invalid character/, 'Verify that latin1 symbol in name gives error';
+ my $utf8_name = "7 CITIES OF GOLD";
+ utf8::upgrade($utf8_name);
+ eval "use utf8; q(W) =~ /\\N{$utf8_name}/";
+ ok $@ && $@ =~ /Invalid character/, 'Verify that leading digit in utf8 name gives error';
+ $utf8_name = "SHARP #";
+ utf8::upgrade($utf8_name);
+ eval "use utf8; q(W) =~ /\\N{$utf8_name}/";
+ ok $@ && $@ =~ /Invalid character/, 'Verify that ASCII symbol in utf8 name gives error';
+ $utf8_name = "A HOUSE \xF7 AGAINST ITSELF";
+ utf8::upgrade($utf8_name);
+ eval "use utf8; q(W) =~ /\\N{$utf8_name}/";
+ ok $@ && $@ =~ /Invalid character/, 'Verify that latin1 symbol in utf8 name gives error';
+ $utf8_name = "\x{664} HORSEMEN}";
+ eval "use utf8; q(W) =~ /\\N{$utf8_name}/";
+ ok $@ && $@ =~ /Invalid character/, 'Verify that leading above Latin1 digit in utf8 name gives error';
+ $utf8_name = "A \x{1F4A9} WOULD SMELL AS SWEET}";
+ eval "use utf8; q(W) =~ /\\N{$utf8_name}/";
+ ok $@ && $@ =~ /Invalid character/, 'Verify that above Latin1 symbol in utf8 name gives error';
+
undef $w;
$name = "A\x{D1}O";
eval "q(W) =~ /\\N{$name}/";
ok ! $w, 'Verify that latin1 letter in name doesnt give warning';
+ # This tests the code path that restarts the parse when the recursive
+ # call to S_reg() from within S_grok_bslash_N() discovers that the
+ # pattern needs to be recalculated as UTF-8. use eval to avoid
+ # needing literal Unicode in this source file:
+ my $r = eval "qr/\\N{\x{100}\x{100}}/";
+ isnt $r, undef, "Generated regex for multi-char UTF-8 charname"
+ or diag($@);
+ ok "\x{100}\x{100}" =~ $r, "which matches";
}
{
@@ -1588,7 +1653,7 @@ sub run_tests {
{
# Test for keys in %+ and %-
my $message = 'Test keys in %+ and %-';
- no warnings 'uninitialized';
+ no warnings 'uninitialized', 'deprecated', 'experimental::lexical_topic';
my $_ = "abcdef";
/(?<foo>a)|(?<foo>b)/;
is((join ",", sort keys %+), "foo", $message);
@@ -1609,6 +1674,7 @@ sub run_tests {
{
# length() on captures, the numbered ones end up in Perl_magic_len
+ no warnings 'deprecated', 'experimental::lexical_topic';
my $_ = "aoeu \xe6var ook";
/^ \w+ \s (?<eek>\S+)/x;
@@ -1658,7 +1724,6 @@ $x='123';
print ">$1<\n";
EOP
- local $::TODO = 'RT #86042';
fresh_perl_is(<<'EOP', ">abc<\n", {}, 'no mention of $&');
my $x;
($x='abc')=~/(abc)/g;
@@ -1747,6 +1812,7 @@ EOP
'IsPunct disagrees with [:punct:] outside ASCII');
my @isPunctLatin1 = eval q {
+ no warnings 'deprecated';
use encoding 'latin1';
grep {/[[:punct:]]/ != /\p{IsPunct}/} map {chr} 0x80 .. 0xff;
};
@@ -2072,6 +2138,55 @@ EOP
ok "x" =~ /\A(?>(?:(?:)A|B|C?x))\z/,
"Check TRIE does not overwrite EXACT following NOTHING at start - RT #111842";
+ {
+ my $single = ":";
+ my $upper = "\x{390}"; # Fold is 3 chars.
+ my $multi = CORE::fc($upper);
+
+ my $failed = 0;
+
+ # Try forcing a node to be split, with a multi-char fold at the
+ # boundary
+ for my $repeat (1 .. 300) {
+ my $string = $single x $repeat;
+ my $lhs = $string . $upper;
+ if ($lhs !~ m/$string$multi/i) {
+ $failed = $repeat;
+ last;
+ }
+ }
+ ok(! $failed, "Matched multi-char fold across EXACTFish node boundaries; if failed, was at count $failed");
+
+ $failed = 0;
+ for my $repeat (1 .. 300) {
+ my $string = $single x $repeat;
+ my $lhs = $string . "\N{LATIN SMALL LIGATURE FFI}";
+ if ($lhs !~ m/${string}ff\N{LATIN SMALL LETTER I}/i) {
+ $failed = $repeat;
+ last;
+ }
+ }
+ ok(! $failed, "Matched multi-char fold across EXACTFish node boundaries; if failed, was at count $failed");
+
+ $failed = 0;
+ for my $repeat (1 .. 300) {
+ my $string = $single x $repeat;
+ my $lhs = $string . "\N{LATIN SMALL LIGATURE FFL}";
+ if ($lhs !~ m/${string}ff\N{U+6c}/i) {
+ $failed = $repeat;
+ last;
+ }
+ }
+ ok(! $failed, "Matched multi-char fold across EXACTFish node boundaries; if failed, was at count $failed");
+ }
+
+ {
+ fresh_perl_is('print eval "\"\x{101}\" =~ /[[:lower:]]/", "\n"; print eval "\"\x{100}\" =~ /[[:lower:]]/i", "\n";',
+ "1\n1", # Both re's should match
+ "",
+ "get [:lower:] swash in first eval; test under /i in second");
+ }
+
#
# Keep the following tests last -- they may crash perl
#
@@ -2134,6 +2249,11 @@ EOP
"chr(0xFFFF_FFFE) can match a Unicode property");
ok(chr(0xFFFF_FFFF) =~ /\p{Is_32_Bit_Super}/,
"chr(0xFFFF_FFFF) can match a Unicode property");
+ my $p = qr/^[\x{FFFF_FFFF}]$/;
+ ok(chr(0xFFFF_FFFF) =~ $p,
+ "chr(0xFFFF_FFFF) can match itself in a [class]");
+ ok(chr(0xFFFF_FFFF) =~ $p, # Tests any caching
+ "chr(0xFFFF_FFFF) can match itself in a [class] subsequently");
}
else {
no warnings 'overflow';
@@ -2142,6 +2262,12 @@ EOP
ok(chr(0xFFFF_FFFF_FFFF_FFFF) =~ qr/^\p{Is_Portable_Super}$/,
"chr(0xFFFF_FFFF_FFFF_FFFF) can match a Unicode property");
+ my $p = qr/^[\x{FFFF_FFFF_FFFF_FFFF}]$/;
+ ok(chr(0xFFFF_FFFF_FFFF_FFFF) =~ $p,
+ "chr(0xFFFF_FFFF_FFFF_FFFF) can match itself in a [class]");
+ ok(chr(0xFFFF_FFFF_FFFF_FFFF) =~ $p, # Tests any caching
+ "chr(0xFFFF_FFFF_FFFF_FFFF) can match itself in a [class] subsequently");
+
# This test is because something was declared as 32 bits, but
# should have been cast to 64; only a problem where
# sizeof(STRLEN) != sizeof(UV)
@@ -2155,6 +2281,14 @@ EOP
"Overlapping ranges in user-defined properties");
}
+ { # Regexp:Grammars was broken:
+ # http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-06/msg01290.html
+ fresh_perl_like('use warnings; "abc" =~ qr{(?&foo){0}abc(?<foo>)}',
+ 'Quantifier unexpected on zero-length expression',
+ "",
+ 'No segfault on qr{(?&foo){0}abc(?<foo>)}');
+ }
+
# !!! NOTE that tests that aren't at all likely to crash perl should go
# a ways above, above these last ones.
diff --git a/gnu/usr.bin/perl/t/re/pat_psycho.t b/gnu/usr.bin/perl/t/re/pat_psycho.t
index c5073a5537b..04337603ae1 100755
--- a/gnu/usr.bin/perl/t/re/pat_psycho.t
+++ b/gnu/usr.bin/perl/t/re/pat_psycho.t
@@ -3,6 +3,9 @@
# This is a home for regular expression tests that don't fit into
# the format supported by re/regexp.t. If you want to add a test
# that does fit that format, add it to re/re_tests, not here.
+#
+# this file includes test that my burn a lot of CPU or otherwise be heavy
+# on resources. Set env var $PERL_SKIP_PSYCHO_TEST to skip this file
use strict;
use warnings;
@@ -21,7 +24,8 @@ BEGIN {
}
-plan tests => 11; # Update this when adding/deleting tests.
+skip_all('$PERL_SKIP_PSYCHO_TEST set') if $ENV{PERL_SKIP_PSYCHO_TEST};
+plan tests => 15; # Update this when adding/deleting tests.
run_tests() unless caller;
@@ -29,16 +33,17 @@ run_tests() unless caller;
# Tests start here.
#
sub run_tests {
+ print "# Set PERL_SKIP_PSYCHO_TEST to skip these tests\n";
- SKIP:
{
- print "# Set PERL_SKIP_PSYCHO_TEST to skip this test\n";
- my @normal = qw [the are some normal words];
- skip "Skipped Psycho", 2 * @normal if $ENV {PERL_SKIP_PSYCHO_TEST};
+ # stress test tries
+
+ my @normal = qw [the are some normal words];
local $" = "|";
+ note "setting up trie psycho vars ...";
my @psycho = (@normal, map chr $_, 255 .. 20000);
my $psycho1 = "@psycho";
for (my $i = @psycho; -- $i;) {
@@ -48,13 +53,12 @@ sub run_tests {
my $psycho2 = "@psycho";
foreach my $word (@normal) {
- ok $word =~ /($psycho1)/ && $1 eq $word, 'Psycho';
- ok $word =~ /($psycho2)/ && $1 eq $word, 'Psycho';
+ ok $word =~ /($psycho1)/ && $1 eq $word, qq{"$word" =~ /\$psycho1/};
+ ok $word =~ /($psycho2)/ && $1 eq $word, qq{"$word" =~ /\$psycho1/};
}
}
- SKIP:
{
# stress test CURLYX/WHILEM.
#
@@ -63,8 +67,6 @@ sub run_tests {
# CURLYX and WHILEM blocks, except those related to LONGJMP, the
# super-linear cache and warnings. It executes about 0.5M regexes
- skip "No psycho tests" if $ENV {PERL_SKIP_PSYCHO_TEST};
- print "# Set PERL_SKIP_PSYCHO_TEST to skip this test\n";
my $r = qr/^
(?:
( (?:a|z+)+ )
@@ -158,6 +160,49 @@ sub run_tests {
}
ok($ok, $msg);
}
+
+
+ {
+ # these bits of test code used to run quadratically. If we break
+ # anything, they'll start to take minutes to run, rather than
+ # seconds. We don't actually measure times or set alarms, since
+ # that tends to be very fragile and prone to false positives.
+ # Instead, just hope that if someone is messing with
+ # performance-related code, they'll re-run the test suite and
+ # notice it suddenly takes a lot longer.
+
+ my $x;
+
+ $x = 'x' x 1_000_000;
+ 1 while $x =~ /(.)/g;
+ pass "ascii =~ /(.)/";
+
+ {
+ local ${^UTF8CACHE} = 1; # defeat debugging
+ $x = "\x{100}" x 1_000_000;
+ 1 while $x =~ /(.)/g;
+ pass "utf8 =~ /(.)/";
+ }
+
+ # run these in separate processes, since they set $&
+
+ fresh_perl_is(<<'EOF', "ok\n", {}, 'ascii =~ /(.)/, mention $&');
+$&;
+$x = 'x' x 1_000_000;
+1 while $x =~ /(.)/g;
+print "ok\n";
+EOF
+
+ fresh_perl_is(<<'EOF', "ok\n", {}, 'utf8 =~ /(.)/, mention $&');
+$&;
+local ${^UTF8CACHE} = 1; # defeat debugging
+$x = "\x{100}" x 1_000_000;
+1 while $x =~ /(.)/g;
+print "ok\n";
+EOF
+
+
+ }
} # End of sub run_tests
1;
diff --git a/gnu/usr.bin/perl/t/re/pat_re_eval.t b/gnu/usr.bin/perl/t/re/pat_re_eval.t
index 20bc7b32d3b..e47aaf34849 100755
--- a/gnu/usr.bin/perl/t/re/pat_re_eval.t
+++ b/gnu/usr.bin/perl/t/re/pat_re_eval.t
@@ -6,6 +6,7 @@
use strict;
use warnings;
+use Config;
use 5.010;
@@ -22,10 +23,16 @@ BEGIN {
}
-plan tests => 123; # Update this when adding/deleting tests.
+plan tests => 519; # Update this when adding/deleting tests.
run_tests() unless caller;
+# test that runtime code without 'use re eval' is trapped
+
+sub norun {
+ like($@, qr/Eval-group not allowed at runtime/, @_);
+}
+
#
# Tests start here.
#
@@ -42,11 +49,16 @@ sub run_tests {
undef $@;
eval {/$c/};
- like($@, qr/not allowed at runtime/, $message);
+ norun("$message norun 1");
- use re "eval";
- /$a$c$a/;
- is($b, '14', $message);
+
+ {
+ eval {/$a$c$a/};
+ norun("$message norun 2");
+ use re "eval";
+ /$a$c$a/;
+ is($b, '14', $message);
+ }
our $lex_a = 43;
our $lex_b = 17;
@@ -57,9 +69,9 @@ sub run_tests {
is($lex_a, 44, $message);
is($lex_c, 43, $message);
- no re "eval";
undef $@;
- my $match = eval { /$a$c$a/ };
+ my $d = '(?{1})';
+ my $match = eval { /$a$c$a$d/ };
ok($@ && $@ =~ /Eval-group not allowed/ && !$match, $message);
is($b, '14', $message);
@@ -92,7 +104,6 @@ sub run_tests {
is(length qr /##/x, 9, "## in qr // doesn't corrupt memory; Bug 17776");
{
- use re 'eval';
ok "$x$x" =~ /^$x(??{$x})\z/,
"Postponed UTF-8 string in UTF-8 re matches UTF-8";
ok "$y$x" =~ /^$y(??{$x})\z/,
@@ -116,8 +127,7 @@ sub run_tests {
{
- use re 'eval';
- # Test if $^N and $+ work in (?{{})
+ # Test if $^N and $+ work in (?{})
our @ctl_n = ();
our @plus = ();
our $nested_tags;
@@ -170,9 +180,6 @@ sub run_tests {
}
{
- use re 'eval';
-
-
our $f;
local $f;
$f = sub {
@@ -312,11 +319,8 @@ sub run_tests {
is("@plus", $test->[3], "plus $c; Bug 56194");
is($str, $test->[4], "str $c; Bug 56194");
}
- SKIP: {
- if ($] le '5.010') {
- skip "test segfaults on perl < 5.10", 4;
- }
+ {
@ctl_n = ();
@plus = ();
@@ -342,6 +346,837 @@ sub run_tests {
}
}
+ {
+ # re evals within \U, \Q etc shouldn't be seen by the lexer
+ local our $a = "i";
+ local our $B = "J";
+ ok('(?{1})' =~ /^\Q(?{1})\E$/, '\Q(?{1})\E');
+ ok('(?{1})' =~ /^\Q(?{\E1\}\)$/, '\Q(?{\E1\}\)');
+ eval {/^\U(??{"$a\Ea"})$/ }; norun('^\U(??{"$a\Ea"})$ norun');
+ eval {/^\L(??{"$B\Ea"})$/ }; norun('^\L(??{"$B\Ea"})$ norun');
+ use re 'eval';
+ ok('Ia' =~ /^\U(??{"$a\Ea"})$/, '^\U(??{"$a\Ea"})$');
+ ok('ja' =~ /^\L(??{"$B\Ea"})$/, '^\L(??{"$B\Ea"})$');
+ }
+
+ {
+ # Comprehensive (hopefully) tests of closure behaviour:
+ # i.e. when do (?{}) blocks get (re)compiled, and what instances
+ # of lexical vars do they close over?
+
+ # if the pattern string gets utf8 upgraded while concatenating,
+ # make sure a literal code block is still detected (by still
+ # compiling in the absence of use re 'eval')
+
+ {
+ my $s1 = "\x{80}";
+ my $s2 = "\x{100}";
+ ok("\x{80}\x{100}" =~ /^$s1(?{1})$s2$/, "utf8 upgrade");
+ }
+
+ my ($cr1, $cr2, $cr3, $cr4);
+
+ for my $x (qw(a b c)) {
+ my $bc = ($x ne 'a');
+ my $c80 = chr(0x80);
+
+ # the most basic: literal code should be in same scope
+ # as the parent
+
+ ok("A$x" =~ /^A(??{$x})$/, "[$x] literal code");
+ ok("\x{100}$x" =~ /^\x{100}(??{$x})$/, "[$x] literal code UTF8");
+
+ # the "don't recompile if pattern unchanged" mechanism
+ # shouldn't apply to code blocks - recompile every time
+ # to pick up new instances of variables
+
+ my $code1 = 'B(??{$x})';
+ my $code1u = $c80 . "\x{100}" . '(??{$x})';
+
+ eval {/^A$code1$/};
+ norun("[$x] unvarying runtime code AA norun");
+ eval {/^A$code1u$/};
+ norun("[$x] unvarying runtime code AU norun");
+ eval {/^$c80\x{100}$code1$/};
+ norun("[$x] unvarying runtime code UA norun");
+ eval {/^$c80\x{101}$code1u$/};
+ norun("[$x] unvarying runtime code UU norun");
+
+ {
+ use re 'eval';
+ ok("AB$x" =~ /^A$code1$/, "[$x] unvarying runtime code AA");
+ ok("A$c80\x{100}$x" =~ /^A$code1u$/,
+ "[$x] unvarying runtime code AU");
+ ok("$c80\x{100}B$x" =~ /^$c80\x{100}$code1$/,
+ "[$x] unvarying runtime code UA");
+ ok("$c80\x{101}$c80\x{100}$x" =~ /^$c80\x{101}$code1u$/,
+ "[$x] unvarying runtime code UU");
+ }
+
+ # mixed literal and run-time code blocks
+
+ my $code2 = 'B(??{$x})';
+ my $code2u = $c80 . "\x{100}" . '(??{$x})';
+
+ eval {/^A(??{$x})-$code2$/};
+ norun("[$x] literal+runtime AA norun");
+ eval {/^A(??{$x})-$code2u$/};
+ norun("[$x] literal+runtime AU norun");
+ eval {/^$c80\x{100}(??{$x})-$code2$/};
+ norun("[$x] literal+runtime UA norun");
+ eval {/^$c80\x{101}(??{$x})-$code2u$/};
+ norun("[$x] literal+runtime UU norun");
+
+ {
+ use re 'eval';
+ ok("A$x-B$x" =~ /^A(??{$x})-$code2$/,
+ "[$x] literal+runtime AA");
+ ok("A$x-$c80\x{100}$x" =~ /^A(??{$x})-$code2u$/,
+ "[$x] literal+runtime AU");
+ ok("$c80\x{100}$x-B$x" =~ /^$c80\x{100}(??{$x})-$code2$/,
+ "[$x] literal+runtime UA");
+ ok("$c80\x{101}$x-$c80\x{100}$x"
+ =~ /^$c80\x{101}(??{$x})-$code2u$/,
+ "[$x] literal+runtime UU");
+ }
+
+ # literal qr code only created once, naked
+
+ $cr1 //= qr/^A(??{$x})$/;
+ ok("Aa" =~ $cr1, "[$x] literal qr once naked");
+
+ # literal qr code only created once, embedded with text
+
+ $cr2 //= qr/B(??{$x})$/;
+ ok("ABa" =~ /^A$cr2/, "[$x] literal qr once embedded text");
+
+ # literal qr code only created once, embedded with text + lit code
+
+ $cr3 //= qr/C(??{$x})$/;
+ ok("A$x-BCa" =~ /^A(??{$x})-B$cr3/,
+ "[$x] literal qr once embedded text + lit code");
+
+ # literal qr code only created once, embedded with text + run code
+
+ $cr4 //= qr/C(??{$x})$/;
+ my $code3 = 'A(??{$x})';
+
+ eval {/^$code3-B$cr4/};
+ norun("[$x] literal qr once embedded text + run code norun");
+ {
+ use re 'eval';
+ ok("A$x-BCa" =~ /^$code3-B$cr4/,
+ "[$x] literal qr once embedded text + run code");
+ }
+
+ # literal qr code, naked
+
+ my $r1 = qr/^A(??{$x})$/;
+ ok("A$x" =~ $r1, "[$x] literal qr naked");
+
+ # literal qr code, embedded with text
+
+ my $r2 = qr/B(??{$x})$/;
+ ok("AB$x" =~ /^A$r2/, "[$x] literal qr embedded text");
+
+ # literal qr code, embedded with text + lit code
+
+ my $r3 = qr/C(??{$x})$/;
+ ok("A$x-BC$x" =~ /^A(??{$x})-B$r3/,
+ "[$x] literal qr embedded text + lit code");
+
+ # literal qr code, embedded with text + run code
+
+ my $r4 = qr/C(??{$x})$/;
+ my $code4 = '(??{$x})';
+
+ eval {/^A$code4-B$r4/};
+ norun("[$x] literal qr embedded text + run code");
+ {
+ use re 'eval';
+ ok("A$x-BC$x" =~ /^A$code4-B$r4/,
+ "[$x] literal qr embedded text + run code");
+ }
+
+ # nested qr in different scopes
+
+ my $code5 = '(??{$x})';
+ my $r5 = qr/C(??{$x})/;
+
+ my $r6;
+ eval {qr/$code5-C(??{$x})/}; norun("r6 norun");
+ {
+ use re 'eval';
+ $r6 = qr/$code5-C(??{$x})/;
+ }
+
+ my @rr5;
+ my @rr6;
+
+ for my $y (qw(d e f)) {
+
+ my $rr5 = qr/^A(??{"$x$y"})-$r5/;
+ push @rr5, $rr5;
+ ok("A$x$y-C$x" =~ $rr5,
+ "[$x-$y] literal qr + r5");
+
+ my $rr6 = qr/^A(??{"$x$y"})-$r6/;
+ push @rr6, $rr6;
+ ok("A$x$y-$x-C$x" =~ $rr6,
+ "[$x-$y] literal qr + r6");
+ }
+
+ for my $i (0,1,2) {
+ my $y = 'Y';
+ my $yy = (qw(d e f))[$i];
+ my $rr5 = $rr5[$i];
+ ok("A$x$yy-C$x" =~ $rr5, "[$x-$yy] literal qr + r5, outside");
+ ok("A$x$yy-C$x-D$x" =~ /$rr5-D(??{$x})$/,
+ "[$x-$yy] literal qr + r5 + lit, outside");
+
+
+ my $rr6 = $rr6[$i];
+ push @rr6, $rr6;
+ ok("A$x$yy-$x-C$x" =~ $rr6,
+ "[$x-$yy] literal qr + r6, outside");
+ ok("A$x$yy-$x-C$x-D$x" =~ /$rr6-D(??{$x})/,
+ "[$x-$yy] literal qr + r6 +lit, outside");
+ }
+ }
+
+ # recursive subs should get lexical from the correct pad depth
+
+ sub recurse {
+ my ($n) = @_;
+ return if $n > 2;
+ ok("A$n" =~ /^A(??{$n})$/, "recurse($n)");
+ recurse($n+1);
+ }
+ recurse(0);
+
+ # for qr// containing run-time elements but with a compile-time
+ # code block, make sure the run-time bits are executed in the same
+ # pad they were compiled in
+ {
+ my $a = 'a'; # ensure outer and inner pads don't align
+ my $b = 'b';
+ my $c = 'c';
+ my $d = 'd';
+ my $r = qr/^$b(??{$c})$d$/;
+ ok("bcd" =~ $r, "qr with run-time elements and code block");
+ }
+
+ # check that cascaded embedded regexes all see their own lexical
+ # environment
+
+ {
+ my ($r1, $r2, $r3, $r4);
+ my ($x1, $x2, $x3, $x4) = (5,6,7,8);
+ { my $x1 = 1; $r1 = qr/A(??{$x1})/; }
+ { my $x2 = 2; $r2 = qr/$r1(??{$x2})/; }
+ { my $x3 = 3; $r3 = qr/$r2(??{$x3})/; }
+ { my $x4 = 4; $r4 = qr/$r3(??{$x4})/; }
+ ok("A1234" =~ /^$r4$/, "cascaded qr");
+ }
+
+ # and again, but in a loop, with no external references
+ # being maintained to the qr's
+
+ {
+ my $r = 'A';
+ for my $x (1..4) {
+ $r = qr/$r(??{$x})/;
+ }
+ my $x = 5;
+ ok("A1234" =~ /^$r$/, "cascaded qr loop");
+ }
+
+
+ # and again, but compiling the qrs in an eval so there
+ # aren't even refs to the qrs from any ops
+
+ {
+ my $r = 'A';
+ for my $x (1..4) {
+ $r = eval q[ qr/$r(??{$x})/; ];
+ }
+ my $x = 5;
+ ok("A1234" =~ /^$r$/, "cascaded qr loop");
+ }
+
+ # have qrs with either literal code blocks or only embedded
+ # code blocks, but not both
+
+ {
+ my ($r1, $r2, $r3, $r4);
+ my ($x1, $x3) = (7,8);
+ { my $x1 = 1; $r1 = qr/A(??{$x1})/; }
+ { $r2 = qr/${r1}2/; }
+ { my $x3 = 3; $r3 = qr/$r2(??{$x3})/; }
+ { $r4 = qr/${r3}4/; }
+ ok("A1234" =~ /^$r4$/, "cascaded qr mix 1");
+ ok("A12345" =~ /^${r4}5$/, "cascaded qr mix 2");
+ ok("A1234" =~ qr/^$r4$/ , "cascaded qr mix 3");
+ ok("A12345" =~ qr/^${r4}5$/, "cascaded qr mix 4");
+ }
+
+ # and make sure things are freed at the right time
+
+ SKIP: {
+ if ($Config{mad}) {
+ skip "MAD doesn't free eval CVs", 3;
+ }
+
+ {
+ sub Foo99::DESTROY { $Foo99::d++ }
+ $Foo99::d = 0;
+ my $r1;
+ {
+ my $x = bless [1], 'Foo99';
+ $r1 = eval 'qr/(??{$x->[0]})/';
+ }
+ my $r2 = eval 'qr/a$r1/';
+ my $x = 2;
+ ok(eval '"a1" =~ qr/^$r2$/', "match while in scope");
+ # make sure PL_reg_curpm isn't holding on to anything
+ "a" =~ /a(?{1})/;
+ is($Foo99::d, 0, "before scope exit");
+ }
+ ::is($Foo99::d, 1, "after scope exit");
+ }
+
+ # forward declared subs should Do The Right Thing with any anon CVs
+ # within them (i.e. pad_fixup_inner_anons() should work)
+
+ sub forward;
+ sub forward {
+ my $x = "a";
+ my $A = "A";
+ ok("Aa" =~ qr/^A(??{$x})$/, "forward qr compiletime");
+ ok("Aa" =~ qr/^$A(??{$x})$/, "forward qr runtime");
+ }
+ forward;
+ }
+
+ # test that run-time embedded code, when re-fed into toker,
+ # does all the right escapes
+
+ {
+ my $enc = eval 'use Encode; find_encoding("ascii")';
+
+ my $x = 0;
+ my $y = 'bad';
+
+ # note that most of the strings below are single-quoted, and the
+ # things within them, like '$y', *aren't* intended to interpolate
+
+ my $s1 =
+ 'a\\$y(?# (??{BEGIN{$x=1} "X1"})b(?# \Ux2\E)c\'d\\\\e\\\\Uf\\\\E';
+
+ ok(q{a$ybc'd\e\Uf\E} =~ /^$s1$/, "reparse");
+ is($x, 0, "reparse no BEGIN");
+
+ my $s2 = 'g\\$y# (??{{BEGIN{$x=2} "X3"}) \Ux3\E' . "\nh";
+
+ ok(q{a$ybc'd\\e\\Uf\\Eg$yh} =~ /^$s1$s2$/x, "reparse /x");
+ is($x, 0, "reparse /x no BEGIN");
+
+ my $b = '\\';
+ my $q = '\'';
+
+ # non-ascii in string as "<0xNNN>"
+ sub esc_str {
+ my $s = shift;
+ $s =~ s{(.)}{
+ my $c = ord($1);
+ ($c< 32 || $c > 127) ? sprintf("<0x%x>", $c) : $1;
+ }ge;
+ $s;
+ }
+ sub fmt { sprintf "hairy backslashes %s [%s] =~ /^%s/",
+ $_[0], esc_str($_[1]), esc_str($_[2]);
+ }
+
+
+ for my $u (
+ [ '', '', 'blank ' ],
+ [ "\x{100}", '\x{100}', 'single' ],
+ [ "\x{100}", "\x{100}", 'double' ])
+ {
+ for my $pair (
+ [ "$b", "$b$b" ],
+ [ "$q", "$q" ],
+ [ "$b$q", "$b$b$b$q" ],
+ [ "$b$b$q", "$b$b$b$b$q" ],
+ [ "$b$b$b$q", "$b$b$b$b$b$b$q" ],
+ [ "$b$b$b$b$q","$b$b$b$b$b$b$b$b$q" ],
+ ) {
+ my ($s, $r) = @$pair;
+ $s = "9$s";
+ my $ss = "$u->[0]$s";
+
+ my $c = '9' . $r;
+ my $cc = "$u->[1]$c";
+
+ ok($ss =~ /^$cc/, fmt("plain $u->[2]", $ss, $cc));
+
+ no strict;
+ my $chr41 = "\x41";
+ $ss = "$u->[0]\t${q}$chr41${b}x42$s";
+ $nine = $nine = "bad";
+ for my $use_qr ('', 'qr') {
+ $c = qq[(??{my \$z='{';]
+ . qq[$use_qr"$b${b}t$b$q$b${b}x41$b$b$b${b}x42"]
+ . qq[. \$nine})];
+ # (??{ qr/str/ }) goes through one less interpolation
+ # stage than (??{ qq/str/ })
+ $c =~ s{\\\\}{\\}g if ($use_qr eq 'qr');
+ $c .= $r;
+ $cc = "$u->[1]$c";
+ my $nine = 9;
+
+ eval {/^$cc/}; norun(fmt("code norun $u->[2]", $ss, $cc));
+ {
+ use re 'eval';
+ ok($ss =~ /^$cc/, fmt("code $u->[2]", $ss, $cc));
+ }
+
+ {
+ # Poor man's "use encoding 'ascii'".
+ # This causes a different code path in S_const_str()
+ # to be used
+ local ${^ENCODING} = $enc;
+ use re 'eval';
+ ok($ss =~ /^$cc/, fmt("encode $u->[2]", $ss, $cc));
+ }
+ }
+ }
+ }
+
+ my $code1u = "(??{qw(\x{100})})";
+ eval {/^$code1u$/}; norun("reparse embeded unicode norun");
+ {
+ use re 'eval';
+ ok("\x{100}" =~ /^$code1u$/, "reparse embeded unicode");
+ }
+ }
+
+ # a non-pattern literal won't get code blocks parsed at compile time;
+ # but they must get parsed later on if 'use re eval' is in scope
+ # also check that unbalanced {}'s are parsed ok
+
+ {
+ eval q["a{" =~ '^(??{"a{"})$'];
+ norun("non-pattern literal code norun");
+ eval {/^${\'(??{"a{"})'}$/};
+ norun("runtime code with unbalanced {} norun");
+
+ use re 'eval';
+ ok("a{" =~ '^a(??{"{"})$', "non-pattern literal code");
+ ok("a{" =~ /^a${\'(??{"{"})'}$/, "runtime code with unbalanced {}");
+ }
+
+ # make sure warnings come from the right place
+
+ {
+ use warnings;
+ my ($s, $t, $w);
+ local $SIG{__WARN__} = sub { $w .= "@_" };
+
+ $w = ''; $s = 's';
+ my $r = qr/(?{$t=$s+1})/;
+ "a" =~ /a$r/;
+ like($w, qr/pat_re_eval/, "warning main file");
+
+ # do it in an eval to get predictable line numbers
+ eval q[
+
+ $r = qr/(?{$t=$s+1})/;
+ ];
+ $w = ''; $s = 's';
+ "a" =~ /a$r/;
+ like($w, qr/ at \(eval \d+\) line 3/, "warning eval A");
+
+ $w = ''; $s = 's';
+ eval q[
+ use re 'eval';
+ my $c = '(?{$t=$s+1})';
+ "a" =~ /a$c/;
+ 1;
+ ];
+ like($w, qr/ at \(eval \d+\) line 1/, "warning eval B");
+ }
+
+ # jumbo test for:
+ # * recursion;
+ # * mixing all the different types of blocks (literal, qr/literal/,
+ # runtime);
+ # * backtracking (the Z+ alternation ensures CURLYX and full
+ # scope popping on backtracking)
+
+ {
+ sub recurse2 {
+ my ($depth)= @_;
+ return unless $depth;
+ my $s1 = '3-LMN';
+ my $r1 = qr/(??{"$s1-$depth"})/;
+
+ my $s2 = '4-PQR';
+ my $c1 = '(??{"$s2-$depth"})';
+ use re 'eval';
+ ok( "<12345-ABC-$depth-123-LMN-$depth-1234-PQR-$depth>"
+ . "<12345-ABC-$depth-123-LMN-$depth-1234-PQR-$depth>"
+ =~
+ /^<(\d|Z+)+(??{"45-ABC-$depth-"})(\d|Z+)+$r1-\d+$c1>
+ <(\d|Z+)+(??{"45-ABC-$depth-"})(\d|Z+)+$r1-\d+$c1>$/x,
+ "recurse2($depth)");
+ recurse2($depth-1);
+ }
+ recurse2(5);
+ }
+
+ # nested (??{}) called from various levels of a recursive function
+
+ {
+ sub recurse3 {
+ my ($n) = @_;
+ return if $n > 3;
+ ok("A$n" =~ m{^A(??{ "0123" =~ /((??{$n}))/; $1 })$},
+ "recurse3($n)");
+ ok("A$n" !~ m{^A(??{ "0123" =~ /((??{$n}))/; "X" })$},
+ "recurse3($n) nomatch");
+ recurse3($n+1);
+ }
+ recurse3(0);
+ }
+
+ # nested (??{}) being invoked recursively via a function
+
+ {
+ my $s = '';
+ our $recurse4;
+ my @alpha = qw(A B C D E);
+ $recurse4 = sub {
+ my ($n) = @_;
+ $s .= "(n=$n:";
+ if ($n < 4) {
+ my $m = ("$alpha[$n]" . substr("0123", 0, $n+1)) =~
+ m{^([A-Z])
+ (??{
+ $s .= "1=$1:";
+ "$n-0123" =~ m{^(\d)-(((??{$recurse4->($n+1)})))};
+ $s .= "i1=$1:<=[$2]";
+ $3; # NB - not stringified
+ })
+ $
+ }x;
+ $s .= "1a=$1:";
+ $s .= $m ? 'M' : '!M';
+ }
+ my $ret = '.*?' . ($n-1);
+ $s .= "<=[$ret])";
+ return $ret;
+ };
+ $recurse4->(0);
+ my $exp = '(n=0:1=A:(n=1:1=B:(n=2:1=C:(n=3:1=D:(n=4:<=[.*?3])'
+ . 'i1=3:<=[0123]1a=D:M<=[.*?2])i1=2:<=[012]1a=C:M<=[.*?1])'
+ . 'i1=1:<=[01]1a=B:M<=[.*?0])i1=0:<=[0]1a=A:M<=[.*?-1])';
+ is($s, $exp, 'recurse4');
+ }
+
+ # single (??{}) being invoked recursively via a function
+
+ {
+ my $s = '';
+ our $recurse5;
+ my @alpha = qw(A B C D E);
+ $recurse5 = sub {
+ my ($n) = @_;
+ $s .= "(n=$n:";
+ if ($n < 4) {
+ my $m = ("$alpha[$n]" . substr("0123", 0, $n+1)) =~
+ m{^([A-Z])
+ ((??{
+ $s .= "1=$1:";
+ $recurse5->($n+1);
+ }))
+ $
+ }x;
+ $s .= "1a=$1:2=$2:";
+ $s .= $m ? 'M' : '!M';
+ }
+ my $ret = '.*?' . ($n-1);
+ $s .= "<=[$ret])";
+ return $ret;
+ };
+ $recurse5->(0);
+ my $exp = '(n=0:1=A:(n=1:1=B:(n=2:1=C:(n=3:1=D:(n=4:<=[.*?3])'
+ . '1a=D:2=0123:M<=[.*?2])1a=C:2=012:M<=[.*?1])'
+ . '1a=B:2=01:M<=[.*?0])1a=A:2=0:M<=[.*?-1])';
+ is($s, $exp, 'recurse5');
+ }
+
+
+ # make sure that errors during compiling run-time code get trapped
+
+ {
+ use re 'eval';
+
+ my $code = '(?{$x=})';
+ eval { "a" =~ /^a$code/ };
+ like($@, qr/syntax error at \(eval \d+\) line \d+/, 'syntax error');
+
+ $code = '(?{BEGIN{die})';
+ eval { "a" =~ /^a$code/ };
+ like($@,
+ qr/BEGIN failed--compilation aborted at \(eval \d+\) line \d+/,
+ 'syntax error');
+ }
+
+ # make sure that 'use re eval' is propagated into compiling the
+ # pattern returned by (??{})
+
+ {
+ use re 'eval';
+ my $pat = 'B(??{1})C';
+ my $A = 'A';
+ # compile-time outer code-block
+ ok("AB1CD" =~ /^A(??{$pat})D$/, "re eval propagated compile-time");
+ # run-time outer code-block
+ ok("AB1CD" =~ /^$A(??{$pat})D$/, "re eval propagated run-time");
+ }
+
+ # returning a ref to something that had set magic but wasn't
+ # PERL_MAGIC_qr triggered a false positive assertion failure
+ # The test is not so much concerned with it not matching,
+ # as with not failing the assertion
+
+ {
+ ok("a" !~ /^(a)(??{ \$1 })/, '(??{ ref })');
+ }
+
+ # make sure the uninit warning from returning an undef var
+ # sees the right var
+
+ {
+ my ($u1, $u2);
+ my $warn = '';
+ local $SIG{__WARN__} = sub { $warn .= $_[0] };
+ $u1 =~ /(??{$u2})/ or die;
+ like($warn, qr/value \$u1 in pattern match.*\n.*value at/, 'uninit');
+ }
+
+ # test that code blocks are called in scalar context
+
+ {
+ my @a = (0);
+ ok("" =~ /^(?{@a})$/, '(?{}) in scalar context');
+ is($^R, 1, '(?{}) in scalar context: $^R');
+ ok("1" =~ /^(??{@a})$/, '(??{}) in scalar context');
+ ok("foo" =~ /^(?(?{@a})foo|bar)$/, '(?(?{})|) in scalar context');
+ }
+
+ # BEGIN in compiled blocks shouldn't mess with $1 et al
+
+ {
+ use re 'eval';
+ my $code1 = '(B)(??{ BEGIN { "X" =~ /X/ } $1})(C)';
+ ok("ABBCA" =~ /^(.)(??{$code1})\1$/, '(?{}) BEGIN and $1');
+ my $code2 = '(B)(??{ BEGIN { "X" =~ /X/ } $1 =~ /(.)/ ? $1 : ""})(C)';
+ ok("ABBCA" =~ /^(.)(??{$code2})\1$/, '(?{}) BEGIN and $1 mark 2');
+ }
+
+ # check that the optimiser is applied to code blocks: see if aelem has
+ # been converted to aelemfast
+
+ {
+ my $out;
+ for my $prog (
+ '/(?{$a[0]})/',
+ 'q() =~ qr/(?{$a[0]})/',
+ 'use re q(eval); q() =~ q{(?{$a[0]})}',
+ 'use re q(eval); $c = q{(?{$a[0]})}; /$c/',
+ 'use re q(eval); $c = q{(?{$a[0]})}; /(?{1;})$c/',
+ ) {
+ $out = runperl(switches => ["-Dt"], prog => $prog, stderr => 1);
+ like($out, qr/aelemfast|Recompile perl with -DDEBUGGING/,
+ "optimise: '$prog'");
+ }
+ }
+
+ # [perl #115080]
+ # Ensure that ?pat? matches exactly once, even when the run-time
+ # pattern changes, and even when the presence of run-time (?{}) affects
+ # how and when patterns are recompiled
+
+ {
+ my $m;
+
+ $m = '';
+ for (qw(a a a)) {
+ $m .= $_ if m?$_?;
+ }
+ is($m, 'a', '?pat? with a,a,a');
+
+ $m = '';
+ for (qw(a b c)) {
+ $m .= $_ if m?$_?;
+ }
+ is($m, 'a', '?pat? with a,b,c');
+
+ use re 'eval';
+
+ $m = '';
+ for (qw(a a a)) {
+ my $e = qq[(??{"$_"})];
+ $m .= $_ if m?$e?;
+ }
+ is($m, 'a', '?pat? with (??{a,a,a})');
+
+ $m = '';
+ for (qw(a b c)) {
+ my $e = qq[(??{"$_"})];
+ $m .= $_ if m?$e?;
+ }
+ is($m, 'a', '?pat? with (??{a,b,c})');
+ }
+
+ {
+ # this code won't actually fail, but it used to fail valgrind,
+ # so its here just to make sure valgrind doesn't fail again
+ # While examining the ops of the secret anon sub wrapped around
+ # the qr//, the pad of the sub was in scope, so cSVOPo_sv
+ # got the const from the wrong pad. By having lots of $s's
+ # (aka gvsv(*s), this forces the targs of the consts which have
+ # been moved to the pad, to have high indices.
+
+ sub {
+ local our $s = "abc";
+ my $qr = qr/^(?{1})$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s$s/;
+ }->();
+ pass("cSVOPo_sv");
+ }
+
+ # [perl #115004]
+ # code blocks in qr objects that are interpolated in arrays need
+ # handling the same as if they were interpolated from scalar vars
+ # (before this code would need 'use re "eval"')
+
+ {
+ use Tie::Array;
+
+ use vars '@global';
+ local @global;
+ my @array;
+ my @refs = (0, \@array, 2);
+ my @tied;
+ tie @tied, 'Tie::StdArray';
+ {
+ my $bb = 'B';
+ my $dd = 'D';
+ @array = ('A', qr/(??{$bb})/, 'C', qr/(??{$dd})/, 'E');
+ @tied = @array;
+ @global = @array;
+ }
+ my $bb = 'X';
+ my $dd = 'Y';
+ ok("A B C D E=" =~ /@array/, 'bare interpolated array match');
+ ok("A B C D E=" =~ qr/@array/, 'qr bare interpolated array match');
+ ok("A B C D E=" =~ /@global/, 'bare interpolated global array match');
+ ok("A B C D E=" =~ qr/@global/,
+ 'qr bare interpolated global array match');
+ ok("A B C D E=" =~ /@{$refs[1]}/, 'bare interpolated ref array match');
+ ok("A B C D E=" =~ qr/@{$refs[1]}/,
+ 'qr bare interpolated ref array match');
+ ok("A B C D E=" =~ /@tied/, 'bare interpolated tied array match');
+ ok("A B C D E=" =~ qr/@tied/, 'qr bare interpolated tied array match');
+ ok("aA B C D E=" =~ /^a@array=$/, 'interpolated array match');
+ ok("aA B C D E=" =~ qr/^a@array=$/, 'qr interpolated array match');
+ ok("aA B C D E=" =~ /^a@global=$/, 'interpolated global array match');
+ ok("aA B C D E=" =~ qr/^a@global=$/,
+ 'qr interpolated global array match');
+ ok("aA B C D E=" =~ /^a@{$refs[1]}=$/, 'interpolated ref array match');
+ ok("aA B C D E=" =~ qr/^a@{$refs[1]}=$/,
+ 'qr interpolated ref array match');
+ ok("aA B C D E=" =~ /^a@tied=$/, 'interpolated tied array match');
+ ok("aA B C D E=" =~ qr/^a@tied=$/, 'qr interpolated tied array match');
+
+ {
+ local $" = '-';
+ ok("aA-B-C-D-E=" =~ /^a@{array}=$/,
+ 'interpolated array match with local sep');
+ ok("aA-B-C-D-E=" =~ qr/^a@{array}=$/,
+ 'qr interpolated array match with local sep');
+ ok("aA-B-C-D-E=" =~ /^a@{global}=$/,
+ 'interpolated global array match with local sep');
+ ok("aA-B-C-D-E=" =~ qr/^a@{global}=$/,
+ 'qr interpolated global array match with local sep');
+ ok("aA-B-C-D-E=" =~ /^a@{tied}=$/,
+ 'interpolated tied array match with local sep');
+ ok("aA-B-C-D-E=" =~ qr/^a@{tied}=$/,
+ 'qr interpolated tied array match with local sep');
+ }
+
+ # but don't handle the array ourselves in the presence of \Q etc
+
+ @array = ('A', '(?{})');
+ @global = @array;
+ @tied = @array;
+ ok("aA (?{})=" =~ /^a\Q@{array}\E=$/,
+ 'interpolated array match with \Q');
+ ok("aA (?{})=" =~ qr/^a\Q@{array}\E=$/,
+ 'qr interpolated array match with \Q');
+ ok("aA (?{})=" =~ /^a\Q@{global}\E=$/,
+ 'interpolated global array match with \Q');
+ ok("aA (?{})=" =~ qr/^a\Q@{global}\E=$/,
+ 'qr interpolated global array match with \Q');
+ ok("aA (?{})=" =~ /^a\Q@{$refs[1]}\E=$/,
+ 'interpolated ref array match with \Q');
+ ok("aA (?{})=" =~ qr/^a\Q@{$refs[1]}\E=$/,
+ 'qr interpolated ref array match with \Q');
+ ok("aA (?{})=" =~ /^a\Q@{tied}\E=$/,
+ 'interpolated tied array match with \Q');
+ ok("aA (?{})=" =~ qr/^a\Q@{tied}\E=$/,
+ 'qr interpolated tied array match with \Q');
+
+ # and check it works with an empty array
+
+ @array = ();
+ @global = ();
+ @tied = ();
+ ok("a=" =~ /^a@array=$/, 'empty array match');
+ ok("a=" =~ qr/^a@array=$/, 'qr empty array match');
+ ok("a=" =~ /^a@global=$/, 'empty global array match');
+ ok("a=" =~ qr/^a@global=$/, 'qr empty global array match');
+ ok("a=" =~ /^a@tied=$/, 'empty tied array match');
+ ok("a=" =~ qr/^a@tied=$/, 'qr empty tied array match');
+ ok("a=" =~ /^a\Q@{array}\E=$/, 'empty array match with \Q');
+ ok("a=" =~ /^a\Q@{array}\E=$/, 'empty array match with \Q');
+ ok("a=" =~ qr/^a\Q@{global}\E=$/,
+ 'qr empty global array match with \Q');
+ ok("a=" =~ /^a\Q@{tied}\E=$/, 'empty tied array match with \Q');
+ ok("a=" =~ qr/^a\Q@{tied}\E=$/, 'qr empty tied array match with \Q');
+
+ # NB: these below are empty patterns, so they happen to use the
+ # successful match from the line above
+
+ ok("a=" =~ /@array/, 'empty array pattern');
+ ok("a=" =~ qr/@array/, 'qr empty array pattern');
+ ok("a=" =~ /@global/, 'empty global array pattern');
+ ok("a=" =~ qr/@global/, 'qr empty global array pattern');
+ ok("a=" =~ /@tied/, 'empty tied pattern');
+ ok("a=" =~ qr/@tied/, 'qr empty tied pattern');
+ ok("a=" =~ /\Q@array\E/, 'empty array pattern with \Q');
+ ok("a=" =~ qr/\Q@array\E/, 'qr empty array pattern with \Q');
+ ok("a=" =~ /\Q@global\E/, 'empty global array pattern with \Q');
+ ok("a=" =~ qr/\Q@global\E/, 'qr empty global array pattern with \Q');
+ ok("a=" =~ /\Q@tied\E/, 'empty tied pattern with \Q');
+ ok("a=" =~ qr/\Q@tied\E/, 'qr empty tied pattern with \Q');
+ ok("a=" =~ //, 'completely empty pattern');
+ ok("a=" =~ qr//, 'qr completely empty pattern');
+ }
+
+
} # End of sub run_tests
1;
diff --git a/gnu/usr.bin/perl/t/re/pat_rt_report.t b/gnu/usr.bin/perl/t/re/pat_rt_report.t
index 781a6da615c..9a9b5f50049 100755
--- a/gnu/usr.bin/perl/t/re/pat_rt_report.t
+++ b/gnu/usr.bin/perl/t/re/pat_rt_report.t
@@ -22,7 +22,7 @@ BEGIN {
}
-plan tests => 2521; # Update this when adding/deleting tests.
+plan tests => 2532; # Update this when adding/deleting tests.
run_tests() unless caller;
@@ -384,14 +384,7 @@ sub run_tests {
is("@_", "a|b|c", $message);
}
- {
- # XXX DAPM 13-Apr-06. Recursive split is still broken. It's only luck it
- # hasn't been crashing. Disable this test until it is fixed properly.
- # XXX also check what it returns rather than just doing ok(1,...)
- # split /(?{ split "" })/, "abc";
- local $::TODO = "Recursive split is still broken";
- ok 0, 'cache_re & "(?{": it dumps core in 5.6.1 & 5.8.0';
- }
+ is(join('-', split /(?{ split "" })/, "abc"), 'a-b-c', 'nested split');
{
$_ = "code: 'x' { '...' }\n"; study;
@@ -922,12 +915,17 @@ sub run_tests {
{
my $message = '$REGMARK in replacement; Bug 49190';
our $REGMARK;
+ no warnings 'experimental::lexical_topic';
my $_ = "A";
ok(s/(*:B)A/$REGMARK/, $message);
is($_, "B", $message);
$_ = "CCCCBAA";
ok(s/(*:X)A+|(*:Y)B+|(*:Z)C+/$REGMARK/g, $message);
is($_, "ZYX", $message);
+ # Use a longer name to force reallocation of $REGMARK.
+ $_ = "CCCCBAA";
+ ok(s/(*:X)A+|(*:YYYYYYYYYYYYYYYY)B+|(*:Z)C+/$REGMARK/g, $message);
+ is($_, "ZYYYYYYYYYYYYYYYYX", $message);
}
{
@@ -1135,6 +1133,46 @@ $t =~ s/([^a])//ge;
EOP
}
+ {
+ # pattern must be compiled late or we can break the test file
+ my $message = '[perl #115050] repeated nothings in a trie can cause panic';
+ my $pattern;
+ $pattern = '[xyz]|||';
+ ok("blah blah" =~ /$pattern/, $message);
+ ok("blah blah" =~ /(?:$pattern)h/, $message);
+ $pattern = '|||[xyz]';
+ ok("blah blah" =~ /$pattern/, $message);
+ ok("blah blah" =~ /(?:$pattern)h/, $message);
+ }
+
+ {
+ # [perl #4289] First mention $& after a match
+ local $::TODO = "these tests fail without Copy-on-Write enabled";
+ fresh_perl_is(
+ '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$&|, "\n"',
+ "b\n", {}, '$& first mentioned after match');
+ fresh_perl_is(
+ '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$`|, "\n"',
+ "a\n", {}, '$` first mentioned after match');
+ fresh_perl_is(
+ '$_ = "abc"; /b/g; $_ = "hello"; print eval q|$\'|,"\n"',
+ "c\n", {}, '$\' first mentioned after match');
+ }
+
+ {
+ # [perl #118175] threaded perl-5.18.0 fails pat_rt_report_thr.t
+ # this tests some related failures
+ #
+ # The tests in the block *only* fail when run on 32-bit systems
+ # with a malloc that allocates above the 2GB line. On the system
+ # in the report above that only happened in a thread.
+ my $s = "\x{1ff}" . "f" x 32;
+ ok($s =~ /\x{1ff}[[:alpha:]]+/gca, "POSIXA pointer wrap");
+
+ # this one segfaulted under the conditions above
+ # of course, CANY is evil, maybe it should crash
+ ok($s =~ /.\C+/, "CANY pointer wrap");
+ }
} # End of sub run_tests
1;
diff --git a/gnu/usr.bin/perl/t/re/pos.t b/gnu/usr.bin/perl/t/re/pos.t
new file mode 100644
index 00000000000..14cc1fa1588
--- /dev/null
+++ b/gnu/usr.bin/perl/t/re/pos.t
@@ -0,0 +1,68 @@
+#!./perl
+
+# Make sure pos / resetting pos on failed match works
+
+use strict;
+use warnings;
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
+}
+
+plan tests => 8;
+
+## Early bailout of pp_match because matchlen > stringlen
+
+# With a var
+{
+ my $str = "bird";
+
+ $str =~ /i/g;
+
+ is(pos($str), 2, 'pos correct');
+
+ $str =~ /toolongtomatch/g;
+
+ is(pos($str), undef, 'pos undef after failed match');
+}
+
+# With $_
+{
+ $_ = "bird";
+
+ m/i/g;
+
+ is(pos, 2, 'pos correct');
+
+ m/toolongtomatch/g;
+
+ is(pos, undef, 'pos undef after failed match');
+}
+
+## Early bail out of pp_match because ?? already matched
+
+# With a var
+{
+ my $str = "bird";
+
+ for (1..2) {
+ if ($str =~ m?bird?g) {
+ is(pos($str), 4, 'pos correct');
+ } else {
+ is(pos($str), undef, 'pos undef after failed match');
+ }
+ }
+}
+
+# With $_
+{
+ for (1..2) {
+ if (m?\d?g) {
+ is(pos, 1, 'pos correct');
+ } else {
+ is(pos, undef, 'pos undef after failed match');
+ }
+ }
+}
diff --git a/gnu/usr.bin/perl/t/re/qr.t b/gnu/usr.bin/perl/t/re/qr.t
index 137877283c9..811f5c577d5 100755
--- a/gnu/usr.bin/perl/t/re/qr.t
+++ b/gnu/usr.bin/perl/t/re/qr.t
@@ -33,6 +33,7 @@ is(ref $rx, "Regexp", "qr// blessed into 'Regexp' by default");
is $output, "5\n1: 5\n2: 5\n", '$a_match_var =~ /$qr/';
}
+no warnings 'experimental::lexical_topic';
for my $_($'){
my $output = '';
my $rx = qr/o/;
diff --git a/gnu/usr.bin/perl/t/re/re_tests b/gnu/usr.bin/perl/t/re/re_tests
index cfc813f0a36..0af345ae3e8 100644
--- a/gnu/usr.bin/perl/t/re/re_tests
+++ b/gnu/usr.bin/perl/t/re/re_tests
@@ -2,7 +2,8 @@
# run this file via a shell glob. The full format of this file is given
# in regexp.t
# Prior to the implementation of autoloading of \N{}, tests that used \N{name}
-# could not go in this file, and were farmed out to other .t's.
+# could not go in this file, and were farmed out to other .t's, where they
+# remain
#
# pat string y/n/etc expr expected-expr skip-reason
__END__
@@ -107,7 +108,7 @@ a[b-d]e ace y $& ace
a[b-d] aac y $& ac
a[-b] a- y $& a-
a[b-] a- y $& a-
-a[b-a] - c - Invalid [] range \"b-a\"
+a[b-a] - c - Invalid [] range
a[]b - c - Unmatched [
a[ - c - Unmatched [
a] a] y $& a]
@@ -162,6 +163,7 @@ ab|cd abcd y $& ab
()ef def y $&-$1 ef-
()ef def y $-[0] 1
()ef def y $+[0] 3
+()\x{100}\x{1000} d\x{100}\x{1000} y $+[0] 3
()ef def y $-[1] 1
()ef def y $+[1] 1
*a - c - Quantifier follows nothing
@@ -350,7 +352,7 @@ a[-]?c ac y $& ac
'a[b-d]'i AAC y $& AC
'a[-b]'i A- y $& A-
'a[b-]'i A- y $& A-
-'a[b-a]'i - c - Invalid [] range \"b-a\"
+'a[b-a]'i - c - Invalid [] range
'a[]b'i - c - Unmatched [
'a['i - c - Unmatched [
'a]'i A] y $& A]
@@ -480,7 +482,7 @@ a(?:b|(c|e){1,2}?|d)+?(.) ace y $1$2 ce
(?<!c)b cb n - -
(?<!c)b b y - -
(?<!c)b b y $& b
-(?<%)b - c - Sequence (?<%...) not recognized
+(?<%)b - c - Group name must start with a non-digit word character
(?:..)*a aba y $& aba
(?:..)*?a aba y $& a
^(?:b|a(?=(.)))*\1 abc y $& ab
@@ -534,12 +536,12 @@ a(?:b|(c|e){1,2}?|d)+?(.) ace y $1$2 ce
'(ab)\d\1'i ab4Ab y $1 ab
foo\w*\d{4}baz foobar1234baz y $& foobar1234baz
a(?{})b cabd y $& ab
-a(?{)b - c - Sequence (?{...}) not terminated or not {}-balanced
-a(?{{})b - c - Sequence (?{...}) not terminated or not {}-balanced
+a(?{f()+ - c - Missing right curly or square bracket
+a(?{{1}+ - c - Missing right curly or square bracket
a(?{}})b - c -
-a(?{"{"})b - c - Sequence (?{...}) not terminated or not {}-balanced
+a(?{"{"})b ab y - -
a(?{"\{"})b cabd y $& ab
-a(?{"{"}})b - c - Unmatched right curly bracket
+a(?{"{"}})b - c - Sequence (?{...}) not terminated with ')'
a(?{$::bl="\{"}).b caxbd y $::bl {
x(~~)*(?:(?:F)?)? x~~ y - -
^a(?#xxx){3}c aaac y $& aaac
@@ -580,8 +582,8 @@ x(~~)*(?:(?:F)?)? x~~ y - -
^(\(+)?blah(?(1)(\)))$ blah y ($2) ()
^(\(+)?blah(?(1)(\)))$ blah) n - -
^(\(+)?blah(?(1)(\)))$ (blah n - -
-(?(1?)a|b) a c - Switch condition not recognized
-(?(1)a|b|c) a c - Switch (?(condition)... contains too many branches
+(?(1?)a|b) - c - Switch condition not recognized
+(?(1)a|b|c) - c - Switch (?(condition)... contains too many branches
(?(?{0})a|b) a n - -
(?(?{0})b|a) a y $& a
(?(?{1})b|a) a n - -
@@ -590,6 +592,10 @@ x(~~)*(?:(?:F)?)? x~~ y - -
(?(?!a)b|a) a y $& a
(?(?=a)b|a) a n - -
(?(?=a)a|b) a y $& a
+(?(?!\x{100})\x{100}|b) \x{100} n - -
+(?(?!\x{100})b|\x{100}) \x{100} y $& \x{100}
+(?(?=\x{100})b|\x{100}) \x{100} n - -
+(?(?=\x{100})\x{100}|b) \x{100} y $& \x{100}
(?=(a+?))(\1ab) aaab y $2 aab
^(?=(a+?))\1ab aaab n - -
(\w+:)+ one: y $1 one:
@@ -615,8 +621,7 @@ $(?<=^(a)) a y $1 a
[a[:xyz: - c - Unmatched [
[a[:xyz:] - c - POSIX class [:xyz:] unknown
[a[:]b[:c] abc y $& abc
-([a[:xyz:]b]+) pbaq c - POSIX class [:xyz:] unknown
-[a[:]b[:c] abc y $& abc
+([a[:xyz:]b]+) - c - POSIX class [:xyz:] unknown
([[:alpha:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 ABcd
([[:alnum:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 ABcd01Xy
([[:ascii:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 ABcd01Xy__-- ${nulnul}
@@ -633,6 +638,7 @@ $(?<=^(a)) a y $1 a
([[:^alpha:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 01
((?a)[[:^alnum:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 __-- ${nulnul}${ffff}
([[:^ascii:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 ${ffff}
+([:[:^ascii:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 ${ffff} RT #120799
([[:^cntrl:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 ABcd01Xy__--
([[:^digit:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 ABcd
([[:^lower:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 AB
@@ -648,8 +654,7 @@ $(?<=^(a)) a y $1 a
(?>(a+))b aaab y $1 aaa
((?>[^()]+)|\([^()]*\))+ ((abc(ade)ufh()()x y $& abc(ade)ufh()()x
(?<=x+)y - c - Variable length lookbehind not implemented
-a{37,17} - c - Can't do {n,m} with n > m
-a{37,0} - c - Can't do {n,m} with n > m
+((def){37,17})?ABC ABC y $& ABC
\Z a\nb\n y $-[0] 3
\z a\nb\n y $-[0] 4
$ a\nb\n y $-[0] 3
@@ -848,6 +853,7 @@ abb$ b\nca n - -
'abb\Z'm b\nca n - -
'abb\z'm b\nca n - -
'abb$'m b\nca n - -
+'\Aa$'m a\n\n y $& a
(^|x)(c) ca y $2 c
a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz x n - -
a(?{$a=2;$b=3;($b)=$a})b yabz y $b 2
@@ -875,12 +881,18 @@ foo.bart foo.bart y - -
.[X](.+)+[X][X] bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa n - -
.[X][X](.+)+[X] bbbbXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa n - -
tt+$ xxxtt y - -
-([a-\d]+) za-9z y $1 a-9
-([\d-z]+) a0-za y $1 0-z
-([\d-\s]+) a0- z y $1 0-
-([a-[:digit:]]+) za-9z y $1 a-9
-([[:digit:]-z]+) =0-z= y $1 0-z
-([[:digit:]-[:alpha:]]+) =0-z= y $1 0-z
+([a-\d]+) za-9z Sy $1 a-9
+([a-\d]+) - sc - False [] range
+([\d-z]+) a0-za Sy $1 0-z
+([\d-z]+) - sc $1 False [] range
+([\d-\s]+) a0- z Sy $1 0-
+([\d-\s]+) - sc $1 False [] range
+([a-[:digit:]]+) za-9z Sy $1 a-9
+([a-[:digit:]]+) - sc - False [] range
+([[:digit:]-z]+) =0-z= Sy $1 0-z
+([[:digit:]-z]+) - sc c False [] range
+([[:digit:]-[:alpha:]]+) =0-z= Sy $1 0-z
+([[:digit:]-[:alpha:]]+) - sc - False [] range
\GX.*X aaaXbX n - -
(\d+\.\d+) 3.1415926 y $1 3.1415926
(\ba.{0,10}br) have a web browser y $1 a web br
@@ -995,8 +1007,8 @@ a(b)?? abc y <$1> <> # undef [perl #16773]
^.{2,3}?((?:b|a|r)+?)\1\z foobarbar y $1 bar
^(?:f|o|b){2,3}?((?:b|a|r)+?)\1\z foobarbar y $1 bar
.*a(?!(b|cd)*e).*f ......abef n - - # [perl #23030]
-x(?# x c - Sequence (?#... not terminated
-:x(?#: x c - Sequence (?#... not terminated
+x(?# - c - Sequence (?#... not terminated
+:x(?#: - c - Sequence (?#... not terminated
(WORDS|WORD)S WORDS y $1 WORD
(X.|WORDS|X.|WORD)S WORDS y $1 WORD
(WORDS|WORLD|WORD)S WORDS y $1 WORD
@@ -1081,9 +1093,9 @@ X(?<=foo.)[YZ] ..XfooXY.. y pos 8
(?P<n>foo|bar|baz)(?P<m>[ew]+) snofooewa yM $+{m} ew miniperl cannot load Tie::Hash::NamedCapture
(?P<n>foo)|(?P<n>bar)|(?P<n>baz) snofooewa yM $+{n} foo miniperl cannot load Tie::Hash::NamedCapture
(?P<n>foo)(??{ $+{n} }) snofooefoofoowaa yM $+{n} foo miniperl cannot load Tie::Hash::NamedCapture
-(?P<=n>foo|bar|baz) snofooewa c - Sequence (?P<=...) not recognized
-(?P<!n>foo|bar|baz) snofooewa c - Sequence (?P<!...) not recognized
-(?PX<n>foo|bar|baz) snofooewa c - Sequence (?PX<...) not recognized
+(?P<=n>foo|bar|baz) - c - Group name must start with a non-digit word character
+(?P<!n>foo|bar|baz) - c - Group name must start with a non-digit word character
+(?PX<n>foo|bar|baz) - c - Sequence (?PX<...) not recognized
/(?'n'foo|bar|baz)/ snofooewa y $1 foo
/(?'n'foo|bar|baz)/ snofooewa yM $+{n} foo miniperl cannot load Tie::Hash::NamedCapture
/(?'n'foo|bar|baz)(?'m'[ew]+)/ snofooewa yM $+{n} foo miniperl cannot load Tie::Hash::NamedCapture
@@ -1261,30 +1273,30 @@ a*(*F) aaaab n - -
/(?<_>foo) \k<_>/ ..foo foo.. yM $+{_} foo miniperl cannot load Tie::Hash::NamedCapture
/(?'_0_'foo) \k'_0_'/ ..foo foo.. yM $+{_0_} foo miniperl cannot load Tie::Hash::NamedCapture
/(?<_0_>foo) \k<_0_>/ ..foo foo.. yM $+{_0_} foo miniperl cannot load Tie::Hash::NamedCapture
-/(?'0'foo) bar/ ..foo bar.. c - Sequence (?'
-/(?<0>foo) bar/ ..foo bar.. c - Sequence (?<
-/(?'12'foo) bar/ ..foo bar.. c - Sequence (?'
-/(?<12>foo) bar/ ..foo bar.. c - Sequence (?<
-/(?'1a'foo) bar/ ..foo bar.. c - Sequence (?'
-/(?<1a>foo) bar/ ..foo bar.. c - Sequence (?<
-/(?''foo) bar/ ..foo bar.. c - Sequence (?''
-/(?<>foo) bar/ ..foo bar.. c - Sequence (?<>
-/foo \k'n'/ foo foo c - Reference to nonexistent named group
-/foo \k<n>/ foo foo c - Reference to nonexistent named group
-/foo \k'a1'/ foo foo c - Reference to nonexistent named group
-/foo \k<a1>/ foo foo c - Reference to nonexistent named group
-/foo \k'_'/ foo foo c - Reference to nonexistent named group
-/foo \k<_>/ foo foo c - Reference to nonexistent named group
-/foo \k'_0_'/ foo foo c - Reference to nonexistent named group
-/foo \k<_0_>/ foo foo c - Reference to nonexistent named group
-/foo \k'0'/ foo foo c - Sequence \\k'
-/foo \k<0>/ foo foo c - Sequence \\k<
-/foo \k'12'/ foo foo c - Sequence \\k'
-/foo \k<12>/ foo foo c - Sequence \\k<
-/foo \k'1a'/ foo foo c - Sequence \\k'
-/foo \k<1a>/ foo foo c - Sequence \\k<
-/foo \k''/ foo foo c - Sequence \\k'
-/foo \k<>/ foo foo c - Sequence \\k<
+/(?'0'foo) bar/ - c - Group name must start with a non-digit word character
+/(?<0>foo) bar/ - c - Group name must start with a non-digit word character
+/(?'12'foo) bar/ - c - Group name must start with a non-digit word character
+/(?<12>foo) bar/ - c - Group name must start with a non-digit word character
+/(?'1a'foo) bar/ - c - Group name must start with a non-digit word character
+/(?<1a>foo) bar/ - c - Group name must start with a non-digit word character
+/(?''foo) bar/ - c - Group name must start with a non-digit word character
+/(?<>foo) bar/ - c - Group name must start with a non-digit word character
+/foo \k'n'/ - c - Reference to nonexistent named group
+/foo \k<n>/ - c - Reference to nonexistent named group
+/foo \k'a1'/ - c - Reference to nonexistent named group
+/foo \k<a1>/ - c - Reference to nonexistent named group
+/foo \k'_'/ - c - Reference to nonexistent named group
+/foo \k<_>/ - c - Reference to nonexistent named group
+/foo \k'_0_'/ - c - Reference to nonexistent named group
+/foo \k<_0_>/ - c - Reference to nonexistent named group
+/foo \k'0'/ - c - Group name must start with a non-digit word character
+/foo \k<0>/ - c - Group name must start with a non-digit word character
+/foo \k'12'/ - c - Group name must start with a non-digit word character
+/foo \k<12>/ - c - Group name must start with a non-digit word character
+/foo \k'1a'/ - c - Group name must start with a non-digit word character
+/foo \k<1a>/ - c - Group name must start with a non-digit word character
+/foo \k''/ - c - Group name must start with a non-digit word character
+/foo \k<>/ - c - Group name must start with a non-digit word character
/(?<as>as) (\w+) \k<as> (\w+)/ as easy as pie y $1-$2-$3 as-easy-pie
# \g{...} with a name as the argument
@@ -1433,7 +1445,8 @@ abc\N abc\n n
# and bypasses the lexer.
/\N{U+}/ - c - Invalid hexadecimal number
# Below currently gives a misleading message
-/[\N{U+}]/ - c - Unmatched
+/[\N{U+}]/ - Sc - Unmatched
+/[\N{U+}]/ - sc - Syntax error in (?[...])
/abc\N{def/ - c - Missing right brace
/\N{U+4AG3}/ - c - Illegal hexadecimal digit
/[\N{U+4AG3}]/ - c - Illegal hexadecimal digit
@@ -1442,7 +1455,7 @@ abc\N abc\n n
# figures it out.
\N{U+} - c - Invalid hexadecimal number
[\N{U+}] - c - Invalid hexadecimal number
-\N{U+4AG3} - c - Illegal hexadecimal digit
+\N{U+4AG3} - c - Invalid hexadecimal number
[\N{U+4AG3}] - c - Invalid hexadecimal number
abc\N{def - c - \\N{NAME} must be resolved by the lexer
@@ -1456,7 +1469,7 @@ abc\N{def - c - \\N{NAME} must be resolved by the lexer
# Verify works in single quotish context; regex compiler delivers slightly different msg
# \N{U+BEEF.BEAD} succeeds here, because can't completely hide it from the outside.
-\N{U+0xBEEF} - c - Illegal hexadecimal digit
+\N{U+0xBEEF} - c - Invalid hexadecimal number
\c` - c - \"\\c`\" is more clearly written simply as \"\\ \"
\c1 - c - \"\\c1\" is more clearly written simply as \"q\"
\cA \001 y $& \1
@@ -1474,15 +1487,25 @@ abc\N{def - c - \\N{NAME} must be resolved by the lexer
[a\o{400}] \x{100} y $& \x{100}
[a\o{1000}] \x{200} y $& \x{200}
+# The below were inserting a NULL
+\87 87 y $& 87
+a\87 a87 y $& a87
+a\97 a97 y $& a97
+
+
# The below was inserting a NULL into the character class.
-[\8\9] \000 n - -
-[\8\9] 8 y $& 8
-[\8\9] 9 y $& 9
+[\8\9] \000 Sn - -
+[\8\9] - sc $& Unrecognized escape \\8 in character class
+[\8\9] 8 Sy $& 8
+[\8\9] 9 Sy $& 9
# Verify that reads 1-3 octal digits, and that \_ works in char class
-[\0] \000 y $& \000
-[\07] \007 y $& \007
-[\07] 7\000 n - -
+[\0] \000 Sy $& \000
+[\0] - sc - Need exactly 3 octal digits
+[\07] \007 Sy $& \007
+[\07] - sc - Need exactly 3 octal digits
+[\07] 7\000 Sn - -
+[\07] - sc - Need exactly 3 octal digits
[\006] \006 y $& \006
[\006] 6\000 n - -
[\0005] \0005 y $& \000
@@ -1524,7 +1547,7 @@ abc\N{def - c - \\N{NAME} must be resolved by the lexer
# Normally 1E9E generates a multi-char fold, but not in inverted class;
# See [perl #89750]. This makes sure that the simple fold gets generated
# in that case, to DF.
-/[^\x{1E9E}]/i \x{DF} n - -
+/[^\x{1E9E}]/i \x{DF} Sn - -
# RT #96354
/^.*\d\H/ X1 n - -
@@ -1536,7 +1559,8 @@ abc\N{def - c - \\N{NAME} must be resolved by the lexer
/^\p{L}/ \x{3400} y $& \x{3400}
# RT #89774
-/[s\xDF]/ui \xDFs ybT $& \xDFs
+/[s\xDF]a/ui ssa Sy $& ssa
+/[s\xDF]a/ui sa y $& sa
# RT #99928
/^\R\x0A$/ \x0D\x0A n - -
@@ -1545,6 +1569,20 @@ abc\N{def - c - \\N{NAME} must be resolved by the lexer
/ff/i \x{FB01}\x{FB00} y $& \x{FB00}
/fi/i \x{FB01}\x{FB00} y $& \x{FB01}
/fi/i \x{FB00}\x{FB01} y $& \x{FB01}
+#
+# Make sure we don't see code blocks where there aren't, and vice-versa
+(?#( (?{1+)a a y - -
+'a# (?{1+'x a y - -
+ab[(?{1] ab1 y - -
+ab[(?{1\](?{2] ab2 y - -
+ab(?{"["})cd abcd y - -
+ab(??{"[x]"})cd abxcd y - -
+ab\[(??{1})c ab[1c y - -
+ab\\[(??{1;})]c ab\\;c y - -
+ab\\\[(??{1})c ab\\[1c y - -
+ab[c\](??{"]d abcd y - -
+ab[c\\](??{"[x]"})d ab\\xd y - -
+ab[c\\\](??{"x"})]{3}d ab\\](d y - -
# These test that doesn't cut-off matching too soon in the string for
# multi-char folds
@@ -1595,11 +1633,120 @@ abc\N{def - c - \\N{NAME} must be resolved by the lexer
/[[:word:]]/ \x{2c1} y - -
/[[:word:]]/ \x{2c2} n - -
+# [perl #113400]
+/syntax OK\s+\z/si t/bin/good.pl syntax OK\n y - -
+
+/^(.*?)\s*\|\s*(?:\/\s*|)'(.+)'$/ text|'sec' y <$1><$2> <text><sec>
+/^(foo|)bar$/ bar y <$&> <bar>
+/^(foo||baz)bar$/ bar y <$&> <bar>
+/^(foo||baz)bar$/ bazbar y <$1> <baz>
+/^(foo||baz)bar$/ foobar y <$1> <foo>
+
+/^(?:foo|)bar$/ bar y <$&> <bar>
+/^(?:foo||baz)bar$/ bar y <$&> <bar>
+/^(?:foo||baz)bar$/ bazbar y <$&> <bazbar>
+/^(?:foo||baz)bar$/ foobar y <$&> <foobar>
+
+/^(?i:foo|)bar$/ bar y <$&> <bar>
+/^(?i:foo||baz)bar$/ bar y <$&> <bar>
+/^(?i:foo||baz)bar$/ bazbar y <$&> <bazbar>
+/^(?i:foo||baz)bar$/ foobar y <$&> <foobar>
+
+# $^N, $+ on backtrackracking
+# BRANCH
+^(.)(?:(..)|B)[CX] ABCDE y $^N-$+ A-A -
+# TRIE
+^(.)(?:BC(.)|B)[CX] ABCDE y $^N-$+ A-A -
+# CURLYX
+^(.)(?:(.)+)*[BX] ABCDE y $^N-$+ A-A -
+# CURLYM
+^(.)(BC)* ABCDE y $^N-$+ BC-BC -
+^(.)(BC)*[BX] ABCDE y $^N-$+ A-A -
+# CURLYN
+^(.)(B)*.[DX] ABCDE y $^N-$+ B-B -
+^(.)(B)*.[CX] ABCDE y $^N-$+ A-A -
+
+# using 'return' in code blocks
+^(A)(?{"xyz"})B$ AB y $1-$^R A-xyz -
+^(A)(?{return "xyz"})B$ AB y $1-$^R A-xyz -
+^(A)((??{"xyz"}))$ Axyz y $1-$2 A-xyz -
+^(A)((??{return "xyz"}))$ Axyz y $1-$2 A-xyz -
+^(A)((?(?{1})abc|xyz))$ Aabc y $1-$2 A-abc -
+^(A)((?(?{0})abc|xyz))$ Axyz y $1-$2 A-xyz -
+^(A)((?(?{return 1})abc|xyz))$ Aabc y $1-$2 A-abc -
+^(A)((?(?{return 0})abc|xyz))$ Axyz y $1-$2 A-xyz -
+
+# pattern modifier flags should propagate into returned (??{}) pattern
+# p,d,l not tested
+
+/^(a)((??{"b"}))$/i AB y $1-$2 A-B -
+/^(A)((??{'B$'}))(\nC)$/m AB\nC y $1-$2-$3 A-B-\nC -
+/^(A)((??{'.'}))(B)$/s A\nB y $1-$2-$3 A-\n-B -
+/^(A) ((??{' .'}))(B)$/x A B y $1-$2-$3 A- -B -
+/^((??{'\d'}))$/a \x{660} n - -
+/^(??{"s"})$/i \x{17F} y - -
+/^(??{"s"})$/ia \x{17F} y - -
+/^(??{"s"})$/iaa \x{17F} n - -
+/^(??{'\w'})$/u \x{AA} y - -
+
+# #113670 ensure any captures to the right are invalidated when CURLY
+# and CURLYM backtrack
+
+^(?:(X)?(\d)|(X)?(\d\d))$ X12 y $1-$2-$3-$4 --X-12
+^(?:(XX)?(\d)|(XX)?(\d\d))$ XX12 y $1-$2-$3-$4 --XX-12
+
+# rt 113770
+\A(?>\[(?:(?:)(?:R){1}|T|V?|A)\])\z [A] y $& [A]
+# rt 114068
+/( [^z] $ [^z]+)/xm aa\nbb\ncc\n y $1 a\nbb\ncc\n
+
# [perl #114220]
/[\h]/ \x{A0} y $& \xA0
/[\H]/ \x{BF} y $& \xBF
/[\H]/ \x{A0} n - -
/[\H]/ \x{A1} y $& \xA1
+[^\n]+ \nb y $& b
+[^\n]+ a\n y $& a
+
+# /a has no effect on properties
+(?a:\p{Any}) \x{100} y $& \x{100}
+(?aa:\p{Any}) \x{100} y $& \x{100}
+
+\w \x{200C} y $& \x{200C}
+\W \x{200C} n - -
+\w \x{200D} y $& \x{200D}
+\W \x{200D} n - -
+
+/^(?d:\xdf|_)*_/i \x{17f}\x{17f}_ y $& \x{17f}\x{17f}_
+#
+# check that @-, @+ count chars, not bytes; especially if beginning of
+# string is not copied
+
+(\x{100}) \x{2000}\x{2000}\x{2000}\x{100} y $-[0]:$-[1]:$+[0]:$+[1] 3:3:4:4
+
+^\R{2}$ \r\n\r\n y $& \r\n\r\n
+
+/^\D{11}/a \x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF} n - -
+/^\S{11}/a \x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF} n - -
+/^\W{11}/a \x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF}\x{10FFFF} n - -
+
+# [ perl #114272]
+\Vn \xFFn/ y $& \xFFn
+
+/(?l:a?\w)/ b y $& b
+m?^xy\?$? xy? y $& xy?
# vim: softtabstop=0 noexpandtab
+/[#]/ a#b y $& #
+/[#]b/ a#b y $& #b
+/[#]/x a#b y $& #
+/[#]b/x a#b y $& #b
+/[#](?{})/x a#b y $& #
+/[#](??{'b'})/x a#b y $& #b
+/(?#)(?{})b/ a#b y $& b
+/(?#)(??{'b'})/ a#b y $& b
+/[(?#](?{})b/ a#b y $& #b
+/[(?#](??{'b'})/ a#b y $& #b
+/(?#)(?{})b/x a#b y $& b
+/(?#)(??{'b'})/x a#b y $& b
diff --git a/gnu/usr.bin/perl/t/re/recompile.t b/gnu/usr.bin/perl/t/re/recompile.t
new file mode 100644
index 00000000000..63a70684be3
--- /dev/null
+++ b/gnu/usr.bin/perl/t/re/recompile.t
@@ -0,0 +1,195 @@
+#!./perl
+
+# Check that we don't recompile runtime patterns when the pattern hasn't
+# changed
+#
+# Works by checking the debugging output of 'use re debug' and, if
+# available, -Dr. We use both to check that the different code paths
+# with Perl_foo() verses the my_foo() under ext/re/ don't cause any
+# changes.
+
+use strict;
+use warnings;
+
+$| = 1;
+
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = ('../lib','.');
+ require './test.pl';
+ skip_all_if_miniperl("no dynamic loading on miniperl, no re");
+}
+
+
+plan tests => 38;
+
+my $results = runperl(
+ switches => [ '-Dr' ],
+ prog => '1',
+ stderr => 1,
+ );
+my $has_Dr = $results !~ /Recompile perl with -DDEBUGGING/;
+
+my $tmpfile = tempfile();
+
+
+# Check that a pattern triggers a regex compilation exactly N times,
+# using either -Dr or 'use re debug'
+# This is partially based on _fresh_perl() in test.pl
+
+sub _comp_n {
+ my ($use_Dr, $n, $prog, $desc) = @_;
+ open my $tf, ">$tmpfile" or die "Cannot open $tmpfile: $!";
+
+ my $switches = [];
+ if ($use_Dr) {
+ push @$switches, '-Dr';
+ }
+ else {
+ $prog = qq{use re qw(debug);\n$prog};
+ }
+
+ print $tf $prog;
+ close $tf or die "Cannot close $tmpfile: $!";
+ my $results = runperl(
+ switches => $switches,
+ progfile => $tmpfile,
+ stderr => 1,
+ );
+
+ my $status = $?;
+
+ my $count = () = $results =~ /Final program:/g;
+ if ($count == $n && !$status) {
+ pass($desc);
+ }
+ else {
+ fail($desc);
+ _diag "# COUNT: $count EXPECTED $n\n";
+ _diag "# STATUS: $status\n";
+ _diag "# SWITCHES: @$switches\n";
+ _diag "# PROG: \n$prog\n";
+ # this is verbose; uncomment for debugging
+ #_diag "# OUTPUT:\n------------------\n $results-------------------\n";
+ }
+}
+
+# Check that a pattern triggers a regex compilation exactly N times,
+
+sub comp_n {
+ my ($n, $prog, $desc) = @_;
+ if ($has_Dr) {
+ _comp_n(1, $n, $prog, "$desc -Dr");
+ }
+ else {
+ SKIP: {
+ skip("-Dr not compiled in");
+ }
+ }
+ _comp_n(0, @_);
+}
+
+# Check that a pattern triggers a regex compilation exactly once.
+
+sub comp_1 {
+ comp_n(1, @_);
+}
+
+
+comp_1(<<'CODE', 'simple');
+"a" =~ /$_/ for qw(a a a);
+CODE
+
+comp_1(<<'CODE', 'simple qr');
+"a" =~ qr/$_/ for qw(a a a);
+CODE
+
+comp_1(<<'CODE', 'literal utf8');
+"a" =~ /$_/ for "\x{100}", "\x{100}", "\x{100}";
+CODE
+
+comp_1(<<'CODE', 'literal utf8 qr');
+"a" =~ qr/$_/ for "\x{100}", "\x{100}", "\x{100}";
+CODE
+
+comp_1(<<'CODE', 'longjmp literal utf8');
+my $x = chr(0x80);
+"a" =~ /$x$_/ for "\x{100}", "\x{100}", "\x{100}";
+CODE
+
+comp_1(<<'CODE', 'longjmp literal utf8 qr');
+my $x = chr(0x80);
+"a" =~ qr/$x$_/ for "\x{100}", "\x{100}", "\x{100}";
+CODE
+
+comp_1(<<'CODE', 'utf8');
+"a" =~ /$_/ for '\x{100}', '\x{100}', '\x{100}';
+CODE
+
+comp_1(<<'CODE', 'utf8 qr');
+"a" =~ qr/$_/ for '\x{100}', '\x{100}', '\x{100}';
+CODE
+
+comp_1(<<'CODE', 'longjmp utf8');
+my $x = chr(0x80);
+"a" =~ /$x$_/ for '\x{100}', '\x{100}', '\x{100}';
+CODE
+
+comp_1(<<'CODE', 'longjmp utf8');
+my $x = chr(0x80);
+"a" =~ qr/$x$_/ for '\x{100}', '\x{100}', '\x{100}';
+CODE
+
+comp_n(3, <<'CODE', 'mixed utf8');
+"a" =~ /$_/ for "\x{c4}\x{80}", "\x{100}", "\x{c4}\x{80}";
+CODE
+
+comp_n(3, <<'CODE', 'mixed utf8 qr');
+"a" =~ qr/$_/ for "\x{c4}\x{80}", "\x{100}", "\x{c4}\x{80}";
+CODE
+
+# note that that for runtime code, each pattern is compiled twice; the
+# second time to allow the parser to see the code.
+
+comp_n(6, <<'CODE', 'runtime code');
+my $x = '(?{1})';
+BEGIN { $^H |= 0x00200000 } # lightweight "use re 'eval'"
+"a" =~ /a$_/ for $x, $x, $x;
+CODE
+
+comp_n(6, <<'CODE', 'runtime code qr');
+my $x = '(?{1})';
+BEGIN { $^H |= 0x00200000 } # lightweight "use re 'eval'"
+"a" =~ qr/a$_/ for $x, $x, $x;
+CODE
+
+comp_n(4, <<'CODE', 'embedded code');
+my $x = qr/(?{1})/;
+"a" =~ /a$_/ for $x, $x, $x;
+CODE
+
+comp_n(4, <<'CODE', 'embedded code qr');
+my $x = qr/(?{1})/;
+"a" =~ qr/a$_/ for $x, $x, $x;
+CODE
+
+comp_n(7, <<'CODE', 'mixed code');
+my $x = qr/(?{1})/;
+my $y = '(?{1})';
+BEGIN { $^H |= 0x00200000 } # lightweight "use re 'eval'"
+"a" =~ /a$x$_/ for $y, $y, $y;
+CODE
+
+comp_n(7, <<'CODE', 'mixed code qr');
+my $x = qr/(?{1})/;
+my $y = '(?{1})';
+BEGIN { $^H |= 0x00200000 } # lightweight "use re 'eval'"
+"a" =~ qr/a$x$_/ for $y, $y, $y;
+CODE
+
+comp_n(6, <<'CODE', 'embedded code qr');
+my $x = qr/a/i;
+my $y = qr/a/;
+"a" =~ qr/a$_/ for $x, $y, $x, $y;
+CODE
diff --git a/gnu/usr.bin/perl/t/re/reg_eval_scope.t b/gnu/usr.bin/perl/t/re/reg_eval_scope.t
index 00e7d99feca..7eddf87ed33 100644
--- a/gnu/usr.bin/perl/t/re/reg_eval_scope.t
+++ b/gnu/usr.bin/perl/t/re/reg_eval_scope.t
@@ -9,13 +9,7 @@ BEGIN {
skip_all_if_miniperl("no dynamic loading on miniperl, no re");
}
-plan 18;
-
-# Functions for turning to-do-ness on and off (as there are so many
-# to-do tests)
-sub on { $::TODO = "(?{}) implementation is screwy" }
-sub off { undef $::TODO }
-
+plan 48;
fresh_perl_is <<'CODE', '781745', {}, '(?{}) has its own lexical scope';
my $x = 7; my $a = 4; my $b = 5;
@@ -23,8 +17,6 @@ fresh_perl_is <<'CODE', '781745', {}, '(?{}) has its own lexical scope';
print $x,$a,$b;
CODE
-on;
-
fresh_perl_is <<'CODE',
for my $x("a".."c") {
$y = 1;
@@ -44,8 +36,6 @@ CODE
{},
'multiple (?{})s in loop with lexicals';
-off;
-
fresh_perl_is <<'CODE', '781745', {}, 'run-time re-eval has its own scope';
use re qw(eval);
my $x = 7; my $a = 4; my $b = 5;
@@ -88,32 +78,26 @@ fresh_perl_is <<'CODE', '178279371047857967101745', {},
CODE
'multiple (?{})s in "foo" =~ /$string/x';
-on;
-
fresh_perl_is <<'CODE', '123123', {},
for my $x(1..3) {
- push @regexps = qr/(?{ print $x })a/;
+ push @regexps, qr/(?{ print $x })a/;
}
"a" =~ $_ for @regexps;
"ba" =~ /b$_/ for @regexps;
CODE
'qr/(?{})/ is a closure';
-off;
-
"a" =~ do { package foo; qr/(?{ $::pack = __PACKAGE__ })a/ };
is $pack, 'foo', 'qr// inherits package';
"a" =~ do { use re "/x"; qr/(?{ $::re = qr-- })a/ };
is $re, '(?^x:)', 'qr// inherits pragmata';
-on;
-
+$::pack = '';
"ba" =~ /b${\do { package baz; qr|(?{ $::pack = __PACKAGE__ })a| }}/;
is $pack, 'baz', '/text$qr/ inherits package';
"ba" =~ m+b${\do { use re "/i"; qr|(?{ $::re = qr-- })a| }}+;
is $re, '(?^i:)', '/text$qr/ inherits pragmata';
-off;
{
use re 'eval';
package bar;
@@ -126,38 +110,261 @@ is $pack, 'bar', '/$text/ containing (?{}) inherits package';
}
is $re, '(?^m:)', '/$text/ containing (?{}) inherits pragmata';
-on;
-
fresh_perl_is <<'CODE', '45', { stderr => 1 }, '(?{die})';
- eval { my $a=4; my $b=5; "a" =~ /(?{die})a/ }; print $a,$b"
+my $a=4; my $b=5; eval { "a" =~ /(?{die})a/ }; print $a,$b;
+CODE
+
+fresh_perl_is <<'CODE', 'Y45', { stderr => 1 }, '(?{eval{die}})';
+my $a=4; my $b=5;
+"a" =~ /(?{eval { die; print "X" }; print "Y"; })a/; print $a,$b;
+CODE
+
+fresh_perl_is <<'CODE',
+ my $a=4; my $b=5;
+ sub f { "a" =~ /(?{print((caller(0))[3], "\n");})a/ };
+ f();
+ print $a,$b;
+CODE
+ "main::f\n45",
+ { stderr => 1 }, 'sub f {(?{caller})}';
+
+
+fresh_perl_is <<'CODE',
+ my $a=4; my $b=5;
+ sub f { print ((caller(0))[3], "-", (caller(1))[3], "-\n") };
+ "a" =~ /(?{f()})a/;
+ print $a,$b;
+CODE
+ "main::f--\n45",
+ { stderr => 1 }, 'sub f {caller} /(?{f()})/';
+
+
+fresh_perl_is <<'CODE',
+ my $a=4; my $b=5;
+ sub f {
+ "a" =~ /(?{print "X"; return; print "Y"; })a/;
+ print "Z";
+ };
+ f();
+ print $a,$b;
+CODE
+ "XZ45",
+ { stderr => 1 }, 'sub f {(?{return})}';
+
+
+fresh_perl_is <<'CODE',
+my $a=4; my $b=5; "a" =~ /(?{last})a/; print $a,$b
+CODE
+ q{Can't "last" outside a loop block at - line 1.},
+ { stderr => 1 }, '(?{last})';
+
+
+fresh_perl_is <<'CODE',
+my $a=4; my $b=5; "a" =~ /(?{for (1..4) {last}})a/; print $a,$b
+CODE
+ '45',
+ { stderr => 1 }, '(?{for {last}})';
+
+
+fresh_perl_is <<'CODE',
+for (1) { my $a=4; my $b=5; "a" =~ /(?{last})a/ }; print $a,$b
+CODE
+ q{Can't "last" outside a loop block at - line 1.},
+ { stderr => 1 }, 'for (1) {(?{last})}';
+
+
+fresh_perl_is <<'CODE',
+my $a=4; my $b=5; eval { "a" =~ /(?{last})a/ }; print $a,$b
+CODE
+ '45',
+ { stderr => 1 }, 'eval {(?{last})}';
+
+
+fresh_perl_is <<'CODE',
+my $a=4; my $b=5; "a" =~ /(?{next})a/; print $a,$b
+CODE
+ q{Can't "next" outside a loop block at - line 1.},
+ { stderr => 1 }, '(?{next})';
+
+
+fresh_perl_is <<'CODE',
+my $a=4; my $b=5; "a" =~ /(?{for (1,2,3) { next} })a/; print $a,$b
CODE
+ '45',
+ { stderr => 1 }, '(?{for {next}})';
-SKIP: {
- # The remaining TODO tests crash, which will display an error dialog
- # on Windows that has to be manually dismissed. We don't want this
- # to happen for release builds: 5.14.x, 5.16.x etc.
- # On UNIX, they produce ugly 'Aborted' shell output mixed in with the
- # test harness output, so skip on all platforms.
- skip "Don't run crashing TODO test on release build", 3
- if $::TODO && (int($]*1000) & 1) == 0;
- fresh_perl_is <<'CODE', '45', { stderr => 1 }, '(?{last})';
- { my $a=4; my $b=5; "a" =~ /(?{last})a/ }; print $a,$b
+fresh_perl_is <<'CODE',
+for (1) { my $a=4; my $b=5; "a" =~ /(?{next})a/ }; print $a,$b
+CODE
+ q{Can't "next" outside a loop block at - line 1.},
+ { stderr => 1 }, 'for (1) {(?{next})}';
+
+
+fresh_perl_is <<'CODE',
+my $a=4; my $b=5; eval { "a" =~ /(?{next})a/ }; print $a,$b
CODE
- fresh_perl_is <<'CODE', '45', { stderr => 1 }, '(?{next})';
- { my $a=4; my $b=5; "a" =~ /(?{last})a/ }; print $a,$b
+ '45',
+ { stderr => 1 }, 'eval {(?{next})}';
+
+
+fresh_perl_is <<'CODE',
+my $a=4; my $b=5;
+"a" =~ /(?{ goto FOO; print "X"; })a/;
+print "Y";
+FOO:
+print $a,$b
CODE
- fresh_perl_is <<'CODE', '45', { stderr => 1 }, '(?{return})';
- print sub { my $a=4; my $b=5; "a" =~ /(?{return $a.$b})a/ }->();
+ q{Can't "goto" out of a pseudo block at - line 2.},
+ { stderr => 1 }, '{(?{goto})}';
+
+
+{
+ local $::TODO = "goto doesn't yet work in pseduo blocks";
+fresh_perl_is <<'CODE',
+my $a=4; my $b=5;
+"a" =~ /(?{ goto FOO; print "X"; FOO: print "Y"; })a/;
+print "Z";
+FOO;
+print $a,$b
CODE
+ "YZ45",
+ { stderr => 1 }, '{(?{goto FOO; FOO:})}';
}
-fresh_perl_is <<'CODE', '45', { stderr => 1 }, '(?{goto})';
- my $a=4; my $b=5; "a" =~ /(?{goto _})a/; die; _: print $a,$b
+# [perl #3590]
+fresh_perl_is <<'CODE', '', { stderr => 1 }, '(?{eval{die}})';
+"$_$_$_"; my $foo; # these consume pad entries and ensure a SEGV on opd perls
+"" =~ m{(?{exit(0)})};
CODE
-off;
# [perl #92256]
{ my $y = "a"; $y =~ /a(?{ undef *_ })/ }
pass "undef *_ in a re-eval does not cause a double free";
+
+# make sure regexp warnings are reported on the right line
+# (we don't care what warning; the 32768 limit is just one
+# that was easy to reproduce) */
+{
+ use warnings;
+ my $w;
+ local $SIG{__WARN__} = sub { $w = "@_" };
+ my $qr = qr/(??{'a'})/;
+ my $filler = 1;
+ ("a" x 40_000) =~ /^$qr(ab*)+/; my $line = __LINE__;
+ like($w, qr/recursion limit.* line $line\b/, "warning on right line");
+}
+
+# on immediate exit from pattern with code blocks, make sure PL_curcop is
+# restored
+
+{
+ use re 'eval';
+
+ my $c = '(?{"1"})';
+ my $w = '';
+ my $l;
+
+ local $SIG{__WARN__} = sub { $w .= "@_" };
+ $l = __LINE__; "1" =~ /^1$c/x and warn "foo";
+ like($w, qr/foo.+line $l/, 'curcop 1');
+
+ $w = '';
+ $l = __LINE__; "4" =~ /^1$c/x or warn "foo";
+ like($w, qr/foo.+line $l/, 'curcop 2');
+
+ $c = '(??{"1"})';
+ $l = __LINE__; "1" =~ /^$c/x and warn "foo";
+ like($w, qr/foo.+line $l/, 'curcop 3');
+
+ $w = '';
+ $l = __LINE__; "4" =~ /^$c/x or warn "foo";
+ like($w, qr/foo.+line $l/, 'curcop 4');
+}
+
+# [perl #113928] caller behaving unexpectedly in re-evals
+#
+# /(?{...})/ should be in the same caller scope as the surrounding code;
+# qr/(?{...})/ should be in an anon sub
+
+{
+
+ my $l;
+
+ sub callers {
+ my @c;
+ my $stack = '';
+ my $i = 1;
+ while (@c = caller($i++)) {
+ $stack .= "($c[3]:" . ($c[2] - $l) . ')';
+ }
+ $stack;
+ }
+
+ $l = __LINE__;
+ my $c;
+ is (callers(), '', 'callers() null');
+ "" =~ /(?{ $c = callers() })/;
+ is ($c, '', 'callers() //');
+
+ $l = __LINE__;
+ sub m1 { "" =~ /(?{ $c = callers() })/; }
+ m1();
+ is ($c, '(main::m1:2)', 'callers() m1');
+
+ $l = __LINE__;
+ my $r1 = qr/(?{ $c = callers() })/;
+ "" =~ /$r1/;
+ is ($c, '(main::__ANON__:2)', 'callers() r1');
+
+ $l = __LINE__;
+ sub r1 { "" =~ /$r1/; }
+ r1();
+ is ($c, '(main::__ANON__:1)(main::r1:2)', 'callers() r1/r1');
+
+ $l = __LINE__;
+ sub c2 { $c = callers() }
+ my $r2 = qr/(?{ c2 })/;
+ "" =~ /$r2/;
+ is ($c, '(main::c2:2)(main::__ANON__:3)', 'callers() r2/c2');
+ sub r2 { "" =~ /$r2/; }
+ r2();
+ is ($c, '(main::c2:2)(main::__ANON__:5)(main::r2:6)', 'callers() r2/r2/c2');
+
+ $l = __LINE__;
+ sub c3 { $c = callers() }
+ my $r3 = qr/(?{ c3 })/;
+ my $c1;
+ "ABC" =~ /A(?{ $c1 = callers() })B${r3}C/;
+ is ($c, '(main::c3:2)(main::__ANON__:4)', 'callers() r3/c3');
+ is ($c1,'', 'callers() r3/c3 part 2');
+ sub r3 { "ABC" =~ /A(?{ $c1 = callers() })B${r3}C/; }
+ r3();
+ is ($c, '(main::c3:2)(main::__ANON__:7)(main::r3:8)', 'callers() r3/r3/c3');
+ is ($c1,'(main::r3:8)', 'callers() r3/r3/c3 part 2');
+
+}
+
+# [perl #113928] caller behaving unexpectedly in re-evals
+#
+# make sure __SUB__ within a code block returns something safe.
+# NB waht it actually returns is subject to change
+
+{
+
+ my $s;
+
+ sub f1 { /(?{ $s = CORE::__SUB__; })/ }
+ f1();
+ is ($s, \&f1, '__SUB__ direct');
+
+ my $r = qr/(?{ $s = CORE::__SUB__; })/;
+ sub f2 { "" =~ $r }
+ f2();
+ is ($s, \&f2, '__SUB__ qr');
+
+ sub f3 { "AB" =~ /A${r}B/ }
+ f3();
+ is ($s, \&f3, '__SUB__ qr multi');
+}
diff --git a/gnu/usr.bin/perl/t/re/reg_fold.t b/gnu/usr.bin/perl/t/re/reg_fold.t
index a4fe6fa63bc..9e97ddd2f91 100755
--- a/gnu/usr.bin/perl/t/re/reg_fold.t
+++ b/gnu/usr.bin/perl/t/re/reg_fold.t
@@ -12,10 +12,50 @@ use warnings;
my @tests;
my $file="../lib/unicore/CaseFolding.txt";
-open my $fh,"<",$file or die "Failed to read '$file': $!";
-while (<$fh>) {
+my @folds;
+use Unicode::UCD;
+
+# Use the Unicode data file if we are on an ASCII platform (which its data is
+# for), and it is in the modern format (starting in Unicode 3.1.0) and it is
+# available. This avoids being affected by potential bugs introduced by other
+# layers of Perl
+if (ord('A') == 65
+ && pack("C*", split /\./, Unicode::UCD::UnicodeVersion()) ge v3.1.0
+ && open my $fh, "<", $file)
+{
+ @folds = <$fh>;
+}
+else {
+ my ($invlist_ref, $invmap_ref, undef, $default)
+ = Unicode::UCD::prop_invmap('Case_Folding');
+ for my $i (0 .. @$invlist_ref - 1 - 1) {
+ next if $invmap_ref->[$i] == $default;
+ my $adjust = -1;
+ for my $j ($invlist_ref->[$i] .. $invlist_ref->[$i+1] -1) {
+ $adjust++;
+
+ # Single-code point maps go to a 'C' type
+ if (! ref $invmap_ref->[$i]) {
+ push @folds, sprintf("%04X; C; %04X\n",
+ $j,
+ $invmap_ref->[$i] + $adjust);
+ }
+ else { # Multi-code point maps go to 'F'. prop_invmap()
+ # guarantees that no adjustment is needed for these,
+ # as the range will contain just one element
+ push @folds, sprintf("%04X; F; %s\n",
+ $j,
+ join " ", map { sprintf "%04X", $_ }
+ @{$invmap_ref->[$i]});
+ }
+ }
+ }
+}
+
+for (@folds) {
chomp;
my ($line,$comment)= split/\s+#\s+/, $_;
+ $comment = "" unless defined $comment;
my ($cp,$type,@folded)=split/[\s;]+/,$line||'';
next unless $type and ($type eq 'F' or $type eq 'C');
my $fold_above_latin1 = grep { hex("0x$_") > 255 } @folded;
@@ -36,7 +76,11 @@ while (<$fh>) {
$lhs = $chr;
$rhs = "";
foreach my $rhs_char (@folded) {
- $rhs .= '[' if $charclass;
+
+ # The colon is an unrelated character to the rest of the
+ # class, and makes sure no optimization into an EXACTish
+ # node occurs.
+ $rhs .= '[:' if $charclass;
$rhs .= $rhs_char;
$rhs .= ']' if $charclass;
}
@@ -111,11 +155,12 @@ for my $i (0 .. 255) {
push @tests, qq[like chr(0x0430), qr/[=\x{0410}-\x{0411}]/i, 'Bug #71752 Unicode /i char in a range'];
push @tests, qq[like 'a', qr/\\p{Upper}/i, "'a' =~ /\\\\p{Upper}/i"];
-push @tests, q[my $c = "\x{212A}"; my $p = qr/(?:^[\x{004B}_]+$)/i; utf8::upgrade($p); like $c, $p, 'Bug #78994: my $c = "\x{212A}"; my $p = qr/(?:^[\x{004B}_]+$)/i; utf8::upgrade($p); $c =~ $p'];
+push @tests, q[my $c = "\x{212A}"; my $p = qr/(?:^[K_]+$)/i; utf8::upgrade($p); like $c, $p, 'Bug #78994: my $c = "\x{212A}"; my $p = qr/(?:^[K_]+$)/i; utf8::upgrade($p); $c =~ $p'];
use charnames ":full";
-push @tests, q[my $re1 = "\N{WHITE SMILING FACE}";like "\xE8", qr/[\w$re1]/, 'my $re = "\N{WHITE SMILING FACE}"; "\xE8" =~ qr/[\w$re]/'];
-push @tests, q[my $re2 = "\N{WHITE SMILING FACE}";like "\xE8", qr/\w|$re2/, 'my $re = "\N{WHITE SMILING FACE}"; "\xE8" =~ qr/\w|$re/'];
+my $e_grave = latin1_to_native("\xE8");
+push @tests, q[my $re1 = "\N{WHITE SMILING FACE}";like $e_grave, qr/[\w$re1]/, 'my $re = "\N{WHITE SMILING FACE}"; $e_grave =~ qr/[\w$re]/'];
+push @tests, q[my $re2 = "\N{WHITE SMILING FACE}";like $e_grave, qr/\w|$re2/, 'my $re = "\N{WHITE SMILING FACE}"; $e_grave =~ qr/\w|$re/'];
eval join ";\n","plan tests=>". (scalar @tests), @tests, "1"
or die $@;
diff --git a/gnu/usr.bin/perl/t/re/reg_mesg.t b/gnu/usr.bin/perl/t/re/reg_mesg.t
index d6b343b1c3a..2e936b7aa6f 100755
--- a/gnu/usr.bin/perl/t/re/reg_mesg.t
+++ b/gnu/usr.bin/perl/t/re/reg_mesg.t
@@ -15,12 +15,29 @@ use strict;
## arrays below. The {#} is a meta-marker -- it marks where the marker should
## go.
##
+## Returns empty string if that is what is expected. Otherwise, handles
+## either a scalar, turning it into a single element array; or a ref to an
+## array, adjusting each element. If called in array context, returns an
+## array, otherwise the join of all elements
+
sub fixup_expect {
- my $expect = shift;
- $expect =~ s/{\#}/<-- HERE/;
- $expect =~ s/{\#}/ <-- HERE /;
- $expect .= " at ";
- return $expect;
+ my $expect_ref = shift;
+ return if $expect_ref eq "";
+
+ my @expect;
+ if (ref $expect_ref) {
+ @expect = @$expect_ref;
+ }
+ else {
+ @expect = $expect_ref;
+ }
+
+ foreach my $element (@expect) {
+ $element =~ s/{\#}/in regex; marked by <-- HERE in/;
+ $element =~ s/{\#}/ <-- HERE /;
+ $element .= " at ";
+ }
+ return wantarray ? @expect : join "", @expect;
}
my $inf_m1 = ($Config::Config{reg_infty} || 32767) - 1;
@@ -31,119 +48,272 @@ my $inf_p1 = $inf_m1 + 2;
##
my @death =
(
- '/[[=foo=]]/' => 'POSIX syntax [= =] is reserved for future extensions in regex; marked by {#} in m/[[=foo=]{#}]/',
+ '/[[=foo=]]/' => 'POSIX syntax [= =] is reserved for future extensions {#} m/[[=foo=]{#}]/',
'/(?<= .*)/' => 'Variable length lookbehind not implemented in regex m/(?<= .*)/',
'/(?<= x{1000})/' => 'Lookbehind longer than 255 not implemented in regex m/(?<= x{1000})/',
- '/(?@)/' => 'Sequence (?@...) not implemented in regex; marked by {#} in m/(?@{#})/',
-
- '/(?{ 1/' => 'Sequence (?{...}) not terminated or not {}-balanced in regex; marked by {#} in m/(?{{#} 1/',
+ '/(?@)/' => 'Sequence (?@...) not implemented {#} m/(?@{#})/',
- '/(?(1x))/' => 'Switch condition not recognized in regex; marked by {#} in m/(?(1x{#}))/',
+ '/(?{ 1/' => 'Missing right curly or square bracket',
- '/(?(1)x|y|z)/' => 'Switch (?(condition)... contains too many branches in regex; marked by {#} in m/(?(1)x|y|{#}z)/',
+ '/(?(1x))/' => 'Switch condition not recognized {#} m/(?(1x{#}))/',
- '/(?(x)y|x)/' => 'Unknown switch condition (?(x) in regex; marked by {#} in m/(?({#}x)y|x)/',
+ '/(?(1)x|y|z)/' => 'Switch (?(condition)... contains too many branches {#} m/(?(1)x|y|{#}z)/',
- '/(?/' => 'Sequence (? incomplete in regex; marked by {#} in m/(?{#}/',
+ '/(?(x)y|x)/' => 'Unknown switch condition (?(x) {#} m/(?({#}x)y|x)/',
- '/(?;x/' => 'Sequence (?;...) not recognized in regex; marked by {#} in m/(?;{#}x/',
- '/(?<;x/' => 'Sequence (?<;...) not recognized in regex; marked by {#} in m/(?<;{#}x/',
+ '/(?/' => 'Sequence (? incomplete {#} m/(?{#}/',
- '/(?\ix/' => 'Sequence (?\...) not recognized in regex; marked by {#} in m/(?\{#}ix/',
- '/(?\mx/' => 'Sequence (?\...) not recognized in regex; marked by {#} in m/(?\{#}mx/',
- '/(?\:x/' => 'Sequence (?\...) not recognized in regex; marked by {#} in m/(?\{#}:x/',
- '/(?\=x/' => 'Sequence (?\...) not recognized in regex; marked by {#} in m/(?\{#}=x/',
- '/(?\!x/' => 'Sequence (?\...) not recognized in regex; marked by {#} in m/(?\{#}!x/',
- '/(?\<=x/' => 'Sequence (?\...) not recognized in regex; marked by {#} in m/(?\{#}<=x/',
- '/(?\<!x/' => 'Sequence (?\...) not recognized in regex; marked by {#} in m/(?\{#}<!x/',
- '/(?\>x/' => 'Sequence (?\...) not recognized in regex; marked by {#} in m/(?\{#}>x/',
- '/(?^-i:foo)/' => 'Sequence (?^-...) not recognized in regex; marked by {#} in m/(?^-{#}i:foo)/',
- '/(?^-i)foo/' => 'Sequence (?^-...) not recognized in regex; marked by {#} in m/(?^-{#}i)foo/',
- '/(?^d:foo)/' => 'Sequence (?^d...) not recognized in regex; marked by {#} in m/(?^d{#}:foo)/',
- '/(?^d)foo/' => 'Sequence (?^d...) not recognized in regex; marked by {#} in m/(?^d{#})foo/',
- '/(?^lu:foo)/' => 'Regexp modifiers "l" and "u" are mutually exclusive in regex; marked by {#} in m/(?^lu{#}:foo)/',
- '/(?^lu)foo/' => 'Regexp modifiers "l" and "u" are mutually exclusive in regex; marked by {#} in m/(?^lu{#})foo/',
-'/(?da:foo)/' => 'Regexp modifiers "d" and "a" are mutually exclusive in regex; marked by {#} in m/(?da{#}:foo)/',
-'/(?lil:foo)/' => 'Regexp modifier "l" may not appear twice in regex; marked by {#} in m/(?lil{#}:foo)/',
-'/(?aaia:foo)/' => 'Regexp modifier "a" may appear a maximum of twice in regex; marked by {#} in m/(?aaia{#}:foo)/',
-'/(?i-l:foo)/' => 'Regexp modifier "l" may not appear after the "-" in regex; marked by {#} in m/(?i-l{#}:foo)/',
+ '/(?;x/' => 'Sequence (?;...) not recognized {#} m/(?;{#}x/',
+ '/(?<;x/' => 'Group name must start with a non-digit word character {#} m/(?<;{#}x/',
+ '/(?\ix/' => 'Sequence (?\...) not recognized {#} m/(?\{#}ix/',
+ '/(?\mx/' => 'Sequence (?\...) not recognized {#} m/(?\{#}mx/',
+ '/(?\:x/' => 'Sequence (?\...) not recognized {#} m/(?\{#}:x/',
+ '/(?\=x/' => 'Sequence (?\...) not recognized {#} m/(?\{#}=x/',
+ '/(?\!x/' => 'Sequence (?\...) not recognized {#} m/(?\{#}!x/',
+ '/(?\<=x/' => 'Sequence (?\...) not recognized {#} m/(?\{#}<=x/',
+ '/(?\<!x/' => 'Sequence (?\...) not recognized {#} m/(?\{#}<!x/',
+ '/(?\>x/' => 'Sequence (?\...) not recognized {#} m/(?\{#}>x/',
+ '/(?^-i:foo)/' => 'Sequence (?^-...) not recognized {#} m/(?^-{#}i:foo)/',
+ '/(?^-i)foo/' => 'Sequence (?^-...) not recognized {#} m/(?^-{#}i)foo/',
+ '/(?^d:foo)/' => 'Sequence (?^d...) not recognized {#} m/(?^d{#}:foo)/',
+ '/(?^d)foo/' => 'Sequence (?^d...) not recognized {#} m/(?^d{#})foo/',
+ '/(?^lu:foo)/' => 'Regexp modifiers "l" and "u" are mutually exclusive {#} m/(?^lu{#}:foo)/',
+ '/(?^lu)foo/' => 'Regexp modifiers "l" and "u" are mutually exclusive {#} m/(?^lu{#})foo/',
+'/(?da:foo)/' => 'Regexp modifiers "d" and "a" are mutually exclusive {#} m/(?da{#}:foo)/',
+'/(?lil:foo)/' => 'Regexp modifier "l" may not appear twice {#} m/(?lil{#}:foo)/',
+'/(?aaia:foo)/' => 'Regexp modifier "a" may appear a maximum of twice {#} m/(?aaia{#}:foo)/',
+'/(?i-l:foo)/' => 'Regexp modifier "l" may not appear after the "-" {#} m/(?i-l{#}:foo)/',
- '/((x)/' => 'Unmatched ( in regex; marked by {#} in m/({#}(x)/',
+ '/((x)/' => 'Unmatched ( {#} m/({#}(x)/',
- "/x{$inf_p1}/" => "Quantifier in {,} bigger than $inf_m1 in regex; marked by {#} in m/x{{#}$inf_p1}/",
+ "/x{$inf_p1}/" => "Quantifier in {,} bigger than $inf_m1 {#} m/x{{#}$inf_p1}/",
- '/x{3,1}/' => 'Can\'t do {n,m} with n > m in regex; marked by {#} in m/x{3,1}{#}/',
- '/x**/' => 'Nested quantifiers in regex; marked by {#} in m/x**{#}/',
+ '/x**/' => 'Nested quantifiers {#} m/x**{#}/',
- '/x[/' => 'Unmatched [ in regex; marked by {#} in m/x[{#}/',
+ '/x[/' => 'Unmatched [ {#} m/x[{#}/',
- '/*/', => 'Quantifier follows nothing in regex; marked by {#} in m/*{#}/',
+ '/*/', => 'Quantifier follows nothing {#} m/*{#}/',
- '/\p{x/' => 'Missing right brace on \p{} in regex; marked by {#} in m/\p{{#}x/',
+ '/\p{x/' => 'Missing right brace on \p{} {#} m/\p{{#}x/',
- '/[\p{x]/' => 'Missing right brace on \p{} in regex; marked by {#} in m/[\p{{#}x]/',
+ '/[\p{x]/' => 'Missing right brace on \p{} {#} m/[\p{{#}x]/',
- '/(x)\2/' => 'Reference to nonexistent group in regex; marked by {#} in m/(x)\2{#}/',
+ '/(x)\2/' => 'Reference to nonexistent group {#} m/(x)\2{#}/',
'my $m = "\\\"; $m =~ $m', => 'Trailing \ in regex m/\/',
- '/\x{1/' => 'Missing right brace on \x{} in regex; marked by {#} in m/\x{{#}1/',
-
- '/[\x{X]/' => 'Missing right brace on \x{} in regex; marked by {#} in m/[\x{{#}X]/',
-
- '/[[:barf:]]/' => 'POSIX class [:barf:] unknown in regex; marked by {#} in m/[[:barf:]{#}]/',
-
- '/[[=barf=]]/' => 'POSIX syntax [= =] is reserved for future extensions in regex; marked by {#} in m/[[=barf=]{#}]/',
-
- '/[[.barf.]]/' => 'POSIX syntax [. .] is reserved for future extensions in regex; marked by {#} in m/[[.barf.]{#}]/',
-
- '/[z-a]/' => 'Invalid [] range "z-a" in regex; marked by {#} in m/[z-a{#}]/',
-
- '/\p/' => 'Empty \p{} in regex; marked by {#} in m/\p{#}/',
-
- '/\P{}/' => 'Empty \P{} in regex; marked by {#} in m/\P{{#}}/',
+ '/\x{1/' => 'Missing right brace on \x{} {#} m/\x{1{#}/',
+ '/\x{X/' => 'Missing right brace on \x{} {#} m/\x{{#}X/',
+
+ '/[\x{X]/' => 'Missing right brace on \x{} {#} m/[\x{{#}X]/',
+ '/[\x{A]/' => 'Missing right brace on \x{} {#} m/[\x{A{#}]/',
+
+ '/\o{1/' => 'Missing right brace on \o{ {#} m/\o{1{#}/',
+ '/\o{X/' => 'Missing right brace on \o{ {#} m/\o{{#}X/',
+
+ '/[\o{X]/' => 'Missing right brace on \o{ {#} m/[\o{{#}X]/',
+ '/[\o{7]/' => 'Missing right brace on \o{ {#} m/[\o{7{#}]/',
+
+ '/[[:barf:]]/' => 'POSIX class [:barf:] unknown {#} m/[[:barf:]{#}]/',
+
+ '/[[=barf=]]/' => 'POSIX syntax [= =] is reserved for future extensions {#} m/[[=barf=]{#}]/',
+
+ '/[[.barf.]]/' => 'POSIX syntax [. .] is reserved for future extensions {#} m/[[.barf.]{#}]/',
+
+ '/[z-a]/' => 'Invalid [] range "z-a" {#} m/[z-a{#}]/',
+
+ '/\p/' => 'Empty \p{} {#} m/\p{#}/',
+
+ '/\P{}/' => 'Empty \P{} {#} m/\P{{#}}/',
+ '/(?[[[:word]]])/' => "Unmatched ':' in POSIX class {#} m/(?[[[:word{#}]]])/",
+ '/(?[[:word]])/' => "Unmatched ':' in POSIX class {#} m/(?[[:word{#}]])/",
+ '/(?[[[:digit: ])/' => "Unmatched '[' in POSIX class {#} m/(?[[[:digit:{#} ])/",
+ '/(?[[:digit: ])/' => "Unmatched '[' in POSIX class {#} m/(?[[:digit:{#} ])/",
+ '/(?[[[::]]])/' => "POSIX class [::] unknown {#} m/(?[[[::]{#}]])/",
+ '/(?[[[:w:]]])/' => "POSIX class [:w:] unknown {#} m/(?[[[:w:]{#}]])/",
+ '/(?[[:w:]])/' => "POSIX class [:w:] unknown {#} m/(?[[:w:]{#}])/",
+ '/(?[a])/' => 'Unexpected character {#} m/(?[a{#}])/',
+ '/(?[\t])/l' => '(?[...]) not valid in locale {#} m/(?[{#}\t])/',
+ '/(?[ + \t ])/' => 'Unexpected binary operator \'+\' with no preceding operand {#} m/(?[ +{#} \t ])/',
+ '/(?[ \cK - ( + \t ) ])/' => 'Unexpected binary operator \'+\' with no preceding operand {#} m/(?[ \cK - ( +{#} \t ) ])/',
+ '/(?[ \cK ( \t ) ])/' => 'Unexpected \'(\' with no preceding operator {#} m/(?[ \cK ({#} \t ) ])/',
+ '/(?[ \cK \t ])/' => 'Operand with no preceding operator {#} m/(?[ \cK \t{#} ])/',
+ '/(?[ \0004 ])/' => 'Need exactly 3 octal digits {#} m/(?[ \0004 {#}])/',
+ '/(?[ \05 ])/' => 'Need exactly 3 octal digits {#} m/(?[ \05 {#}])/',
+ '/(?[ \o{1038} ])/' => 'Non-octal character {#} m/(?[ \o{1038{#}} ])/',
+ '/(?[ \o{} ])/' => 'Number with no digits {#} m/(?[ \o{}{#} ])/',
+ '/(?[ \x{defg} ])/' => 'Non-hex character {#} m/(?[ \x{defg{#}} ])/',
+ '/(?[ \xabcdef ])/' => 'Use \\x{...} for more than two hex characters {#} m/(?[ \xabc{#}def ])/',
+ '/(?[ \x{} ])/' => 'Number with no digits {#} m/(?[ \x{}{#} ])/',
+ '/(?[ \cK + ) ])/' => 'Unexpected \')\' {#} m/(?[ \cK + ){#} ])/',
+ '/(?[ \cK + ])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[ \cK + {#}])/',
+ '/(?[ \p{foo} ])/' => 'Property \'foo\' is unknown {#} m/(?[ \p{foo}{#} ])/',
+ '/(?[ \p{ foo = bar } ])/' => 'Property \'foo = bar\' is unknown {#} m/(?[ \p{ foo = bar }{#} ])/',
+ '/(?[ \8 ])/' => 'Unrecognized escape \8 in character class {#} m/(?[ \8{#} ])/',
+ '/(?[ \t ]/' => 'Syntax error in (?[...]) in regex m/(?[ \t ]/',
+ '/(?[ [ \t ]/' => 'Syntax error in (?[...]) in regex m/(?[ [ \t ]/',
+ '/(?[ \t ] ]/' => 'Syntax error in (?[...]) in regex m/(?[ \t ] ]/',
+ '/(?[ [ ] ]/' => 'Syntax error in (?[...]) in regex m/(?[ [ ] ]/',
+ '/(?[ \t + \e # This was supposed to be a comment ])/' => 'Syntax error in (?[...]) in regex m/(?[ \t + \e # This was supposed to be a comment ])/',
+ '/(?[ ])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[ {#}])/',
+ 'm/(?[[a-\d]])/' => 'False [] range "a-\d" {#} m/(?[[a-\d{#}]])/',
+ 'm/(?[[\w-x]])/' => 'False [] range "\w-" {#} m/(?[[\w-{#}x]])/',
+ 'm/(?[[a-\pM]])/' => 'False [] range "a-\pM" {#} m/(?[[a-\pM{#}]])/',
+ 'm/(?[[\pM-x]])/' => 'False [] range "\pM-" {#} m/(?[[\pM-{#}x]])/',
+ 'm/(?[[\N{LATIN CAPITAL LETTER A WITH MACRON AND GRAVE}]])/' => '\N{} in character class restricted to one character {#} m/(?[[\N{U+100.300{#}}]])/',
+ 'm/(?[ \p{Digit} & (?(?[ \p{Thai} | \p{Lao} ]))])/' => 'Sequence (?(...) not recognized {#} m/(?[ \p{Digit} & (?({#}?[ \p{Thai} | \p{Lao} ]))])/',
+ 'm/(?[ \p{Digit} & (?:(?[ \p{Thai} | \p{Lao} ]))])/' => 'Expecting \'(?flags:(?[...\' {#} m/(?[ \p{Digit} & (?{#}:(?[ \p{Thai} | \p{Lao} ]))])/',
+ 'm/\o{/' => 'Missing right brace on \o{ {#} m/\o{{#}/',
+ 'm/\o/' => 'Missing braces on \o{} {#} m/\o{#}/',
+ 'm/\o{}/' => 'Number with no digits {#} m/\o{}{#}/',
+ 'm/[\o{]/' => 'Missing right brace on \o{ {#} m/[\o{{#}]/',
+ 'm/[\o]/' => 'Missing braces on \o{} {#} m/[\o{#}]/',
+ 'm/[\o{}]/' => 'Number with no digits {#} m/[\o{}{#}]/',
+ 'm/(?^-i:foo)/' => 'Sequence (?^-...) not recognized {#} m/(?^-{#}i:foo)/',
);
+# Tests involving a user-defined charnames translator are in pat_advanced.t
+
+# In the following arrays of warnings, the value can be an array of things to
+# expect. If the empty string, it means no warning should be raised.
##
-## Key-value pairs of code/error of code that should have non-fatal warnings.
+## Key-value pairs of code/error of code that should have non-fatal regexp warnings.
##
my @warning = (
- 'm/\b*/' => '\b* matches null string many times in regex; marked by {#} in m/\b*{#}/',
-
- 'm/[:blank:]/' => 'POSIX syntax [: :] belongs inside character classes in regex; marked by {#} in m/[:blank:]{#}/',
+ 'm/\b*/' => '\b* matches null string many times {#} m/\b*{#}/',
+
+ 'm/[:blank:]/' => 'POSIX syntax [: :] belongs inside character classes {#} m/[:blank:]{#}/',
+
+ "m'[\\y]'" => 'Unrecognized escape \y in character class passed through {#} m/[\y{#}]/',
+
+ 'm/[a-\d]/' => 'False [] range "a-\d" {#} m/[a-\d{#}]/',
+ 'm/[\w-x]/' => 'False [] range "\w-" {#} m/[\w-{#}x]/',
+ 'm/[a-\pM]/' => 'False [] range "a-\pM" {#} m/[a-\pM{#}]/',
+ 'm/[\pM-x]/' => 'False [] range "\pM-" {#} m/[\pM-{#}x]/',
+ "m'\\y'" => 'Unrecognized escape \y passed through {#} m/\y{#}/',
+ '/x{3,1}/' => 'Quantifier {n,m} with n > m can\'t match {#} m/x{3,1}{#}/',
+ '/\08/' => '\'\08\' resolved to \'\o{0}8\' {#} m/\08{#}/',
+ '/\018/' => '\'\018\' resolved to \'\o{1}8\' {#} m/\018{#}/',
+ '/[\08]/' => '\'\08\' resolved to \'\o{0}8\' {#} m/[\08{#}]/',
+ '/[\018]/' => '\'\018\' resolved to \'\o{1}8\' {#} m/[\018{#}]/',
+ '/\87/' => 'Unrecognized escape \8 passed through {#} m/\8{#}7/',
+ '/a\87/' => 'Unrecognized escape \8 passed through {#} m/a\8{#}7/',
+ '/a\97/' => 'Unrecognized escape \9 passed through {#} m/a\9{#}7/',
+ '/(?=a)*/' => '(?=a)* matches null string many times {#} m/(?=a)*{#}/',
+ 'my $x = \'\m\'; qr/a$x/' => 'Unrecognized escape \m passed through {#} m/a\m{#}/',
+ '/\q/' => 'Unrecognized escape \q passed through {#} m/\q{#}/',
+ '/\q{/' => 'Unrecognized escape \q{ passed through {#} m/\q{{#}/',
+ '/(?=a){1,3}/' => 'Quantifier unexpected on zero-length expression {#} m/(?=a){1,3}{#}/',
+ '/\_/' => "",
+ '/[\_\0]/' => "",
+ '/[\07]/' => "",
+ '/[\006]/' => "",
+ '/[\0005]/' => "",
+ '/[\8\9]/' => ['Unrecognized escape \8 in character class passed through {#} m/[\8{#}\9]/',
+ 'Unrecognized escape \9 in character class passed through {#} m/[\8\9{#}]/',
+ ],
+ '/[:alpha:]/' => 'POSIX syntax [: :] belongs inside character classes {#} m/[:alpha:]{#}/',
+ '/[:zog:]/' => 'POSIX syntax [: :] belongs inside character classes {#} m/[:zog:]{#}/',
+ '/[.zog.]/' => 'POSIX syntax [. .] belongs inside character classes {#} m/[.zog.]{#}/',
+ '/[a-b]/' => "",
+ '/[a-\d]/' => 'False [] range "a-\d" {#} m/[a-\d{#}]/',
+ '/[\d-b]/' => 'False [] range "\d-" {#} m/[\d-{#}b]/',
+ '/[\s-\d]/' => 'False [] range "\s-" {#} m/[\s-{#}\d]/',
+ '/[\d-\s]/' => 'False [] range "\d-" {#} m/[\d-{#}\s]/',
+ '/[a-[:digit:]]/' => 'False [] range "a-[:digit:]" {#} m/[a-[:digit:]{#}]/',
+ '/[[:digit:]-b]/' => 'False [] range "[:digit:]-" {#} m/[[:digit:]-{#}b]/',
+ '/[[:alpha:]-[:digit:]]/' => 'False [] range "[:alpha:]-" {#} m/[[:alpha:]-{#}[:digit:]]/',
+ '/[[:digit:]-[:alpha:]]/' => 'False [] range "[:digit:]-" {#} m/[[:digit:]-{#}[:alpha:]]/',
+ '/[a\zb]/' => 'Unrecognized escape \z in character class passed through {#} m/[a\z{#}b]/',
+ '/(?c)/' => 'Useless (?c) - use /gc modifier {#} m/(?c{#})/',
+ '/(?-c)/' => 'Useless (?-c) - don\'t use /gc modifier {#} m/(?-c{#})/',
+ '/(?g)/' => 'Useless (?g) - use /g modifier {#} m/(?g{#})/',
+ '/(?-g)/' => 'Useless (?-g) - don\'t use /g modifier {#} m/(?-g{#})/',
+ '/(?o)/' => 'Useless (?o) - use /o modifier {#} m/(?o{#})/',
+ '/(?-o)/' => 'Useless (?-o) - don\'t use /o modifier {#} m/(?-o{#})/',
+ '/(?g-o)/' => [ 'Useless (?g) - use /g modifier {#} m/(?g{#}-o)/',
+ 'Useless (?-o) - don\'t use /o modifier {#} m/(?g-o{#})/',
+ ],
+ '/(?g-c)/' => [ 'Useless (?g) - use /g modifier {#} m/(?g{#}-c)/',
+ 'Useless (?-c) - don\'t use /gc modifier {#} m/(?g-c{#})/',
+ ],
+ # (?c) means (?g) error won't be thrown
+ '/(?o-cg)/' => [ 'Useless (?o) - use /o modifier {#} m/(?o{#}-cg)/',
+ 'Useless (?-c) - don\'t use /gc modifier {#} m/(?o-c{#}g)/',
+ ],
+ '/(?ogc)/' => [ 'Useless (?o) - use /o modifier {#} m/(?o{#}gc)/',
+ 'Useless (?g) - use /g modifier {#} m/(?og{#}c)/',
+ 'Useless (?c) - use /gc modifier {#} m/(?ogc{#})/',
+ ],
+);
- "m'[\\y]'" => 'Unrecognized escape \y in character class passed through in regex; marked by {#} in m/[\y{#}]/',
+my @experimental_regex_sets = (
+ '/(?[ \t ])/' => 'The regex_sets feature is experimental {#} m/(?[{#} \t ])/',
+);
- 'm/[a-\d]/' => 'False [] range "a-\d" in regex; marked by {#} in m/[a-\d{#}]/',
- 'm/[\w-x]/' => 'False [] range "\w-" in regex; marked by {#} in m/[\w-{#}x]/',
- 'm/[a-\pM]/' => 'False [] range "a-\pM" in regex; marked by {#} in m/[a-\pM{#}]/',
- 'm/[\pM-x]/' => 'False [] range "\pM-" in regex; marked by {#} in m/[\pM-{#}x]/',
- "m'\\y'" => 'Unrecognized escape \y passed through in regex; marked by {#} in m/\y{#}/',
+my @deprecated = (
+ '/a\b{cde/' => '"\b{" is deprecated; use "\b\{" or "\b[{]" instead {#} m/a\{#}b{cde/',
+ '/a\B{cde/' => '"\B{" is deprecated; use "\B\{" or "\B[{]" instead {#} m/a\{#}B{cde/',
+ 'use utf8; /(?x)\Â…Â…\Â…/' => 'Escape literal pattern white space under /x {#} m/(?x)\Â…Â…{#}\Â…/',
+ '/((?# This is a comment in the middle of a token)?:foo)/' => 'In \'(?...)\', splitting the initial \'(?\' is deprecated {#} m/((?# This is a comment in the middle of a token)?{#}:foo)/',
+ '/((?# This is a comment in the middle of a token)*FAIL)/' => 'In \'(*VERB...)\', splitting the initial \'(*\' is deprecated {#} m/((?# This is a comment in the middle of a token)*{#}FAIL)/',
);
while (my ($regex, $expect) = splice @death, 0, 2) {
my $expect = fixup_expect($expect);
+ no warnings 'experimental::regex_sets';
# skip the utf8 test on EBCDIC since they do not die
next if $::IS_EBCDIC && $regex =~ /utf8/;
warning_is(sub {
$_ = "x";
eval $regex;
- like($@, qr/\Q$expect/);
- }, undef, "$regex died without any other warnings");
+ like($@, qr/\Q$expect/, $regex);
+ }, undef, "... and died without any other warnings");
}
-while (my ($regex, $expect) = splice @warning, 0, 2) {
- my $expect = fixup_expect($expect);
- warning_like(sub {
- $_ = "x";
- eval $regex;
- is($@, '', "$regex did not die");
- }, qr/\Q$expect/);
+foreach my $ref (\@warning, \@experimental_regex_sets, \@deprecated) {
+ my $warning_type = ($ref == \@warning)
+ ? 'regexp'
+ : ($ref == \@deprecated)
+ ? 'regexp, deprecated'
+ : 'experimental::regex_sets';
+ while (my ($regex, $expect) = splice @$ref, 0, 2) {
+ my @expect = fixup_expect($expect);
+ {
+ $_ = "x";
+ no warnings;
+ eval $regex;
+ }
+ if (is($@, "", "$regex did not die")) {
+ my @got = capture_warnings(sub {
+ $_ = "x";
+ eval $regex });
+ my $count = @expect;
+ if (! is(scalar @got, scalar @expect, "... and gave expected number ($count) of warnings")) {
+ if (@got < @expect) {
+ $count = @got;
+ note "Expected warnings not gotten:\n\t" . join "\n\t", @expect[$count .. $#expect];
+ }
+ else {
+ note "Unexpected warnings gotten:\n\t" . join("\n\t", @got[$count .. $#got]);
+ }
+ }
+ foreach my $i (0 .. $count - 1) {
+ if (like($got[$i], qr/\Q$expect[$i]/, "... and gave expected warning[$i]")) {
+ ok (0 == capture_warnings(sub {
+ $_ = "x";
+ eval "no warnings '$warning_type'; $regex;" }
+ ),
+ "... and turning off '$warning_type' warnings suppressed it");
+ }
+ }
+ }
+ }
}
done_testing();
diff --git a/gnu/usr.bin/perl/t/re/reg_pmod.t b/gnu/usr.bin/perl/t/re/reg_pmod.t
index 301aeefc6df..106c0dcf3ef 100755
--- a/gnu/usr.bin/perl/t/re/reg_pmod.t
+++ b/gnu/usr.bin/perl/t/re/reg_pmod.t
@@ -11,39 +11,71 @@ use warnings;
our @tests = (
# /p Pattern PRE MATCH POST
- [ '/p', "456", "123-", "456", "-789"],
- [ '(?p)', "456", "123-", "456", "-789"],
- [ '', "(456)", "123-", "456", "-789"],
- [ '', "456", undef, undef, undef ],
+ [ '/p', "345", "012-", "345", "-6789"],
+ # these not supported under 5.18.x
+ #[ '/$r/p',"345", "012-", "345", "-6789"],
+ [ '(?p)', "345", "012-", "345", "-6789"],
+ [ '(?p:)',"345", "012-", "345", "-6789"],
+ [ '', "(345)", undef, undef, undef ],
+ [ '', "345", undef, undef, undef ],
);
-plan tests => 4 * @tests + 2;
+plan tests => 14 * @tests + 4;
my $W = "";
$SIG{__WARN__} = sub { $W.=join("",@_); };
sub _u($$) { "$_[0] is ".(defined $_[1] ? "'$_[1]'" : "undef") }
-$_ = '123-456-789';
foreach my $test (@tests) {
my ($p, $pat,$l,$m,$r) = @$test;
- my $test_name = $p eq '/p' ? "/$pat/p"
- : $p eq '(?p)' ? "/(?p)$pat/"
- : "/$pat/";
-
- #
- # Cannot use if/else due to the scope invalidating ${^MATCH} and friends.
- #
- my $ok = ok $p eq '/p' ? /$pat/p
- : $p eq '(?p)' ? /(?p)$pat/
- : /$pat/
- => $test_name;
- SKIP: {
- skip "/$pat/$p failed to match", 3
- unless $ok;
- is(${^PREMATCH}, $l,_u "$test_name: ^PREMATCH",$l);
- is(${^MATCH}, $m,_u "$test_name: ^MATCH",$m );
- is(${^POSTMATCH}, $r,_u "$test_name: ^POSTMATCH",$r );
+ my $qr = qr/$pat/;
+ for my $sub (0,1) {
+ my $test_name = $p eq '/p' ? "/$pat/p"
+ : $p eq '/$r/p'? $p
+ : $p eq '(?p)' ? "/(?p)$pat/"
+ : $p eq '(?p:)'? "/(?p:$pat)/"
+ : "/$pat/";
+ $test_name = "s$test_name" if $sub;
+
+ #
+ # Cannot use if/else due to the scope invalidating ${^MATCH} and friends.
+ #
+ $_ = '012-345-6789';
+ my $ok =
+ $sub ?
+ ( $p eq '/p' ? s/$pat/abc/p
+ : $p eq '/$r/p'? s/$qr/abc/p
+ : $p eq '(?p)' ? s/(?p)$pat/abc/
+ : $p eq '(?p:)'? s/(?p:$pat)/abc/
+ : s/$pat/abc/
+ )
+ :
+ ( $p eq '/p' ? /$pat/p
+ : $p eq '/$r/p'? /$qr/p
+ : $p eq '(?p)' ? /(?p)$pat/
+ : $p eq '(?p:)'? /(?p:$pat)/
+ : /$pat/
+ );
+ ok $ok, $test_name;
+ SKIP: {
+ skip "/$pat/$p failed to match", 6
+ unless $ok;
+ is(${^PREMATCH}, $l,_u "$test_name: ^PREMATCH",$l);
+ is(${^MATCH}, $m,_u "$test_name: ^MATCH",$m );
+ is(${^POSTMATCH}, $r,_u "$test_name: ^POSTMATCH",$r );
+ is(length ${^PREMATCH}, length $l, "$test_name: ^PREMATCH length");
+ is(length ${^MATCH}, length $m, "$test_name: ^MATCH length");
+ is(length ${^POSTMATCH},length $r, "$test_name: ^POSTMATCH length");
+ }
}
}
is($W,"","No warnings should be produced");
ok(!defined ${^MATCH}, "No /p in scope so ^MATCH is undef");
+
+#RT 117135
+
+{
+ my $m;
+ ok("a"=~ /(?p:a(?{ $m = ${^MATCH} }))/, '(?{})');
+ is($m, 'a', '(?{}) ^MATCH');
+}
diff --git a/gnu/usr.bin/perl/t/re/regex_sets.t b/gnu/usr.bin/perl/t/re/regex_sets.t
new file mode 100644
index 00000000000..b70e7ec0c2d
--- /dev/null
+++ b/gnu/usr.bin/perl/t/re/regex_sets.t
@@ -0,0 +1,90 @@
+#!./perl
+
+# This tests (?[...]). XXX These are just basic tests, as full ones would be
+# best done with an infrastructure change to allow getting out the inversion
+# list of the constructed set and then comparing it character by character
+# with the expected result.
+
+use strict;
+use warnings;
+
+$| = 1;
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = ('../lib','.');
+ require './test.pl';
+}
+
+use utf8;
+no warnings 'experimental::regex_sets';
+
+like("a", qr/(?[ [a] # This is a comment
+ ])/, 'Can ignore a comment');
+like("a", qr/(?[ [a] # [[:notaclass:]]
+ ])/, 'A comment isn\'t parsed');
+unlike("\x85", qr/(?[ \tÂ… ])/, 'NEL is white space');
+unlike("\x85", qr/(?[ [\tÂ…] ])/, '... including within nested []');
+like("\x85", qr/(?[ \t + \Â… ])/, 'can escape NEL to match');
+like("\x85", qr/(?[ [\Â…] ])/, '... including within nested []');
+like("\t", qr/(?[ \t + \Â… ])/, 'can do basic union');
+like("\cK", qr/(?[ \s ])/, '\s matches \cK');
+unlike("\cK", qr/(?[ \s - \cK ])/, 'can do basic subtraction');
+like(" ", qr/(?[ \s - \cK ])/, 'can do basic subtraction');
+like(":", qr/(?[ [:] ])/, '[:] is not a posix class');
+unlike("\t", qr/(?[ ! \t ])/, 'can do basic complement');
+like("\t", qr/(?[ ! [ ^ \t ] ])/, 'can do basic complement');
+unlike("\r", qr/(?[ \t ])/, '\r doesn\'t match \t ');
+like("\r", qr/(?[ ! \t ])/, 'can do basic complement');
+like("0", qr/(?[ [:word:] & [:digit:] ])/, 'can do basic intersection');
+unlike("A", qr/(?[ [:word:] & [:digit:] ])/, 'can do basic intersection');
+like("0", qr/(?[[:word:]&[:digit:]])/, 'spaces around internal [] aren\'t required');
+
+like("a", qr/(?[ [a] | [b] ])/, '| means union');
+like("b", qr/(?[ [a] | [b] ])/, '| means union');
+unlike("c", qr/(?[ [a] | [b] ])/, '| means union');
+
+like("a", qr/(?[ [ab] ^ [bc] ])/, 'basic symmetric difference works');
+unlike("b", qr/(?[ [ab] ^ [bc] ])/, 'basic symmetric difference works');
+like("c", qr/(?[ [ab] ^ [bc] ])/, 'basic symmetric difference works');
+
+like("2", qr/(?[ ( ( \pN & ( [a] + [2] ) ) ) ])/, 'Nesting parens and grouping');
+unlike("a", qr/(?[ ( ( \pN & ( [a] + [2] ) ) ) ])/, 'Nesting parens and grouping');
+
+unlike("\x{17f}", qr/(?[ [k] + \p{Blk=ASCII} ])/i, '/i doesn\'t affect \p{}');
+like("\N{KELVIN SIGN}", qr/(?[ [k] + \p{Blk=ASCII} ])/i, '/i does affect literals');
+
+my $thai_or_lao = qr/(?[ \p{Thai} + \p{Lao} ])/;
+my $thai_or_lao_digit = qr/(?[ \p{Digit} & $thai_or_lao ])/;
+like("\N{THAI DIGIT ZERO}", $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+unlike(chr(ord("\N{THAI DIGIT ZERO}") - 1), $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+like("\N{THAI DIGIT NINE}", $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+unlike(chr(ord("\N{THAI DIGIT NINE}") + 1), $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+like("\N{LAO DIGIT ZERO}", $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+unlike(chr(ord("\N{LAO DIGIT ZERO}") - 1), $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+like("\N{LAO DIGIT NINE}", $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+unlike(chr(ord("\N{LAO DIGIT NINE}") + 1), $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+
+my $ascii_word = qr/(?[ \w ])/a;
+my $ascii_digits_plus_all_of_arabic = qr/(?[ \p{Digit} & $ascii_word + \p{Arabic} ])/;
+like("9", $ascii_digits_plus_all_of_arabic, "/a, then interpolating and intersection works for ASCII in the set");
+unlike("A", $ascii_digits_plus_all_of_arabic, "/a, then interpolating and intersection works for ASCII not in the set");
+unlike("\N{BENGALI DIGIT ZERO}", $ascii_digits_plus_all_of_arabic, "/a, then interpolating and intersection works for non-ASCII not in either set");
+unlike("\N{BENGALI LETTER A}", $ascii_digits_plus_all_of_arabic, "/a, then interpolating and intersection works for non-ASCII in one set");
+like("\N{ARABIC LETTER HAMZA}", $ascii_digits_plus_all_of_arabic, "interpolation and intersection is left-associative");
+like("\N{EXTENDED ARABIC-INDIC DIGIT ZERO}", $ascii_digits_plus_all_of_arabic, "interpolation and intersection is left-associative");
+
+my $kelvin = qr/(?[ \N{KELVIN SIGN} ])/;
+my $fold = qr/(?[ $kelvin ])/i;
+like("\N{KELVIN SIGN}", $kelvin, '"\N{KELVIN SIGN}" matches compiled qr/(?[ \N{KELVIN SIGN} ])/');
+unlike("K", $fold, "/i on outer (?[ ]) doesn't leak to interpolated one");
+unlike("k", $fold, "/i on outer (?[ ]) doesn't leak to interpolated one");
+
+my $kelvin_fold = qr/(?[ \N{KELVIN SIGN} ])/i;
+my $still_fold = qr/(?[ $kelvin_fold ])/;
+like("K", $still_fold, "/i on interpolated (?[ ]) is retained in outer without /i");
+like("k", $still_fold, "/i on interpolated (?[ ]) is retained in outer without /i");
+
+done_testing();
+
+1;
diff --git a/gnu/usr.bin/perl/t/re/regex_sets_compat.t b/gnu/usr.bin/perl/t/re/regex_sets_compat.t
new file mode 100644
index 00000000000..27eb309af0d
--- /dev/null
+++ b/gnu/usr.bin/perl/t/re/regex_sets_compat.t
@@ -0,0 +1,15 @@
+#!./perl
+
+# This tests that the (?[...]) feature doesn't introduce unexpected
+# differences from regular bracketed character classes. It just sets a flag
+# and calls regexp.t which will run through its test suite, modifiying the
+# tests to use (?[...]) instead wherever the test uses [].
+
+BEGIN { $regex_sets = 1; }
+for $file ('./re/regexp.t', './t/re/regexp.t', ':re:regexp.t') {
+ if (-r $file) {
+ do $file or die $@;
+ exit;
+ }
+}
+die "Cannot find ./re/regexp.t or ./t/re/regexp.t\n";
diff --git a/gnu/usr.bin/perl/t/re/regexp.t b/gnu/usr.bin/perl/t/re/regexp.t
index 5a08863dc8b..21cae1d46f0 100755
--- a/gnu/usr.bin/perl/t/re/regexp.t
+++ b/gnu/usr.bin/perl/t/re/regexp.t
@@ -18,6 +18,8 @@
# B test exposes a known bug in Perl, should be skipped
# b test exposes a known bug in Perl, should be skipped if noamp
# t test exposes a bug with threading, TODO if qr_embed_thr
+# s test should only be run for regex_sets_compat.t
+# S test should not be run for regex_sets_compat.t
#
# Columns 4 and 5 are used only if column 3 contains C<y> or C<c>.
#
@@ -67,7 +69,8 @@ sub _comment {
use strict;
use warnings FATAL=>"all";
use vars qw($bang $ffff $nulnul); # used by the tests
-use vars qw($qr $skip_amp $qr_embed $qr_embed_thr); # set by our callers
+use vars qw($qr $skip_amp $qr_embed $qr_embed_thr $regex_sets); # set by our callers
+
if (!defined $file) {
@@ -96,24 +99,210 @@ foreach (@tests) {
next;
}
chomp;
- s/\\n/\n/g;
+ s/\\n/\n/g unless $regex_sets;
my ($pat, $subject, $result, $repl, $expect, $reason) = split(/\t/,$_,6);
$reason = '' unless defined $reason;
my $input = join(':',$pat,$subject,$result,$repl,$expect);
# the double '' below keeps simple syntax highlighters from going crazy
$pat = "'$pat'" unless $pat =~ /^[:''\/]/;
$pat =~ s/(\$\{\w+\})/$1/eeg;
- $pat =~ s/\\n/\n/g;
+ $pat =~ s/\\n/\n/g unless $regex_sets;
$subject = eval qq("$subject"); die $@ if $@;
$expect = eval qq("$expect"); die $@ if $@;
$expect = $repl = '-' if $skip_amp and $input =~ /\$[&\`\']/;
my $todo_qr = $qr_embed_thr && ($result =~ s/t//);
my $skip = ($skip_amp ? ($result =~ s/B//i) : ($result =~ s/B//));
++$skip if $result =~ s/M// && !defined &DynaLoader::boot_DynaLoader;
+ if ($result =~ s/ ( [Ss] ) //x) {
+ if (($1 eq 'S' && $regex_sets) || ($1 eq 's' && ! $regex_sets)) {
+ $skip++;
+ $reason = "Test not valid for $0";
+ }
+ }
$reason = 'skipping $&' if $reason eq '' && $skip_amp;
$result =~ s/B//i unless $skip;
my $todo= $result =~ s/T// ? " # TODO" : "";
-
+ if (! $skip && $regex_sets) {
+
+ # If testing regex sets, change the [bracketed] classes into
+ # (?[bracketed]).
+
+ if ($pat !~ / \[ /x) {
+
+ $skip++;
+ $reason = "Pattern doesn't contain [brackets]";
+ }
+ else { # Use non-regex features of Perl to accomplish this.
+ my $modified = "";
+ my $in_brackets = 0;
+
+ # Go through the pattern character-by-character. We also add
+ # blanks around each token to test the /x parts of (?[ ])
+ my $pat_len = length($pat);
+ CHAR: for (my $i = 0; $i < $pat_len; $i++) {
+ my $curchar = substr($pat, $i, 1);
+ if ($curchar eq '\\') {
+ $modified .= " " if $in_brackets;
+ $modified .= $curchar;
+ $i++;
+
+ # Get the character the backslash is escaping
+ $curchar = substr($pat, $i, 1);
+ $modified .= $curchar;
+
+ # If the character following that is a '{}', treat the
+ # entire amount as a single token
+ if ($i < $pat_len -1 && substr($pat, $i+1, 1) eq '{') {
+ my $j = index($pat, '}', $i+2);
+ if ($j < 0) {
+ last unless $in_brackets;
+ if ($result eq 'c') {
+ $skip++;
+ $reason = "Can't handle compilation errors with unmatched '{'";
+ }
+ else {
+ print "not ok $test # Problem in $0; original = '$pat'; mod = '$modified'\n";
+ next TEST;
+ }
+ }
+ $modified .= substr($pat, $i+1, $j - $i);
+ $i = $j;
+ }
+ elsif ($curchar eq 'x') {
+
+ # \x without brackets is supposed to be followed by 2
+ # hex digits. Take up to 2, and then add a blank
+ # after the last one. This avoids getting errors from
+ # (?[ ]) for run-ons, like \xabc
+ my $j = $i + 1;
+ for (; $j < $i + 3 && $j < $pat_len; $j++) {
+ my $curord = ord(substr($pat, $j, 1));
+ if (!(($curord >= ord("A") && $curord <= ord("F"))
+ || ($curord >= ord("a") && $curord <= ord("f"))
+ || ($curord >= ord("0") && $curord <= ord("9"))))
+ {
+ $j++;
+ last;
+ }
+ }
+ $j--;
+ $modified .= substr($pat, $i + 1, $j - $i) . " ";
+ $i = $j;
+ }
+ elsif (ord($curchar) >= ord('0')
+ && (ord($curchar) <= ord('7')))
+ {
+ # Similarly, octal constants have up to 3 digits.
+ my $j = $i + 1;
+ for (; $j < $i + 3 && $j < $pat_len; $j++) {
+ my $curord = ord(substr($pat, $j, 1));
+ if (! ($curord >= ord("0") && $curord <= ord("7"))) {
+ $j++;
+ last;
+ }
+ }
+ $j--;
+ $modified .= substr($pat, $i + 1, $j - $i);
+ $i = $j;
+ }
+
+ next;
+ } # End of processing a backslash sequence
+
+ if (! $in_brackets # Skip (?{ })
+ && $curchar eq '('
+ && $i < $pat_len - 2
+ && substr($pat, $i+1, 1) eq '?'
+ && substr($pat, $i+2, 1) eq '{')
+ {
+ $skip++;
+ $reason = "Pattern contains '(?{'";
+ last;
+ }
+
+ # Closing ']'
+ if ($curchar eq ']' && $in_brackets) {
+ $modified .= " ] ])";
+ $in_brackets = 0;
+ next;
+ }
+
+ # A regular character.
+ if ($curchar ne '[') {
+ if (! $in_brackets) {
+ $modified .= $curchar;
+ }
+ else {
+ $modified .= " $curchar ";
+ }
+ next;
+ }
+
+ # Here is a '['; If not in a bracketed class, treat as the
+ # beginning of one.
+ if (! $in_brackets) {
+ $in_brackets = 1;
+ $modified .= "(?[ [ ";
+
+ # An immediately following ']' or '^]' is not the ending
+ # of the class, but is to be treated literally.
+ if ($i < $pat_len - 1
+ && substr($pat, $i+1, 1) eq ']')
+ {
+ $i ++;
+ $modified .= " ] ";
+ }
+ elsif ($i < $pat_len - 2
+ && substr($pat, $i+1, 1) eq '^'
+ && substr($pat, $i+2, 1) eq ']')
+ {
+ $i += 2;
+ $modified .= " ^ ] ";
+ }
+ next;
+ }
+
+ # Here is a plain '[' within [ ]. Could mean wants to
+ # match a '[', or it could be a posix class that has a
+ # corresponding ']'. Absorb either
+
+ $modified .= ' [';
+ last if $i >= $pat_len - 1;
+
+ $i++;
+ $curchar = substr($pat, $i, 1);
+ if ($curchar =~ /[:=.]/) {
+ for (my $j = $i + 1; $j < $pat_len; $j++) {
+ next unless substr($pat, $j, 1) eq ']';
+ last if $j - $i < 2;
+ if (substr($pat, $j - 1, 1) eq $curchar) {
+ # Here, is a posix class
+ $modified .= substr($pat, $i, $j - $i + 1) . " ";
+ $i = $j;
+ next CHAR;
+ }
+ }
+ }
+
+ # Here wasn't a posix class, just process normally
+ $modified .= " $curchar ";
+ }
+
+ if ($in_brackets && ! $skip) {
+ if ($result eq 'c') {
+ $skip++;
+ $reason = "Can't figure out where to put the (?[ and ]) since is a compilation error";
+ }
+ else {
+ print "not ok $test # Problem in $0; original = '$pat'; mod = '$modified'\n";
+ next TEST;
+ }
+ }
+
+ # Use our modified pattern instead of the original
+ $pat = $modified;
+ }
+ }
for my $study ('', 'study $subject', 'utf8::upgrade($subject)',
'utf8::upgrade($subject); study $subject') {
@@ -155,6 +344,7 @@ EOFCODE
\$got = "$repl";
EOFCODE
}
+ $code = "no warnings 'experimental::regex_sets';$code" if $regex_sets;
#$code.=qq[\n\$expect="$expect";\n];
#use Devel::Peek;
#die Dump($code) if $pat=~/\\h/ and $subject=~/\x{A0}/;
@@ -166,14 +356,14 @@ EOFCODE
eval $code;
}
chomp( my $err = $@ );
- if ($result eq 'c') {
+ if ( $skip ) {
+ print "ok $test # skipped", length($reason) ? ". $reason" : '', "\n";
+ next TEST;
+ }
+ elsif ($result eq 'c') {
if ($err !~ m!^\Q$expect!) { print "not ok $test$todo (compile) $input => '$err'\n"; next TEST }
last; # no need to study a syntax error
}
- elsif ( $skip ) {
- print "ok $test # skipped", length($reason) ? " $reason" : '', "\n";
- next TEST;
- }
elsif ( $todo_qr ) {
print "not ok $test # TODO", length($reason) ? " - $reason" : '', "\n";
next TEST;
@@ -187,6 +377,7 @@ EOFCODE
else {
if (!$match || $got ne $expect) {
eval { require Data::Dumper };
+ no warnings "utf8"; # But handle should be utf8
if ($@ || !defined &DynaLoader::boot_DynaLoader) {
# Data::Dumper will load on miniperl, but fail when used in
# anger as it tries to load B. I'd prefer to keep the
diff --git a/gnu/usr.bin/perl/t/re/regexp_unicode_prop.t b/gnu/usr.bin/perl/t/re/regexp_unicode_prop.t
index 3e08afcc4ce..fb1b154bff9 100755
--- a/gnu/usr.bin/perl/t/re/regexp_unicode_prop.t
+++ b/gnu/usr.bin/perl/t/re/regexp_unicode_prop.t
@@ -188,19 +188,17 @@ sub match {
my ($str, $name);
- given ($char) {
- when (/^\\/) {
- $str = eval qq ["$char"];
- $name = qq ["$char"];
- }
- when (/^0x([0-9A-Fa-f]+)$/) {
- $str = chr hex $1;
- $name = "chr ($char)";
- }
- default {
- $str = $char;
- $name = qq ["$char"];
- }
+ if ($char =~ /^\\/) {
+ $str = eval qq ["$char"];
+ $name = qq ["$char"];
+ }
+ elsif ($char =~ /^0x([0-9A-Fa-f]+)$/) {
+ $str = chr hex $1;
+ $name = "chr ($char)";
+ }
+ else {
+ $str = $char;
+ $name = qq ["$char"];
}
undef $@;
diff --git a/gnu/usr.bin/perl/t/re/rxcode.t b/gnu/usr.bin/perl/t/re/rxcode.t
index eb144f9807c..16bc4b7dc18 100755
--- a/gnu/usr.bin/perl/t/re/rxcode.t
+++ b/gnu/usr.bin/perl/t/re/rxcode.t
@@ -6,7 +6,7 @@ BEGIN {
require './test.pl';
}
-plan tests => 38;
+plan tests => 39;
$^R = undef;
like( 'a', qr/^a(?{1})(?:b(?{2}))?/, 'a =~ ab?' );
@@ -84,3 +84,10 @@ cmp_ok( scalar(@var), '==', 0, '..still nothing pushed (package)' );
ok( 'abbb' =~ /^a(?{36})(?:b(?{37})|c(?{38}))+/, 'abbbb =~ a(?:b|c)+' );
ok( $^R == 37, '$^R == 37' ) or print "# \$^R=$^R\n";
}
+
+# Broken temporarily by the jumbo re-eval rewrite in 5.17.1; fixed in .6
+{
+ use re 'eval';
+ $x = "(?{})";
+ is eval { "a" =~ /a++(?{})+$x/x } || $@, '1', '/a++(?{})+$code_block/'
+}
diff --git a/gnu/usr.bin/perl/t/re/subst.t b/gnu/usr.bin/perl/t/re/subst.t
index 8fa649dee26..8acd54f7d32 100755
--- a/gnu/usr.bin/perl/t/re/subst.t
+++ b/gnu/usr.bin/perl/t/re/subst.t
@@ -4,10 +4,10 @@ BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
require Config; import Config;
+ require './test.pl';
}
-require './test.pl';
-plan( tests => 189 );
+plan( tests => 206 );
$_ = 'david';
$a = s/david/rules/r;
@@ -746,6 +746,8 @@ fresh_perl_is( '$_="abcef"; s/bc|(.)\G(.)/$1 ? "[$1-$2]" : "XX"/ge; print' => 'a
# when substituted with a UTF8 replacement string, due to
# magic getting called multiple times, and pointers now pointing
# to stale/freed strings
+ # The original fix for this caused infinite loops for non- or cow-
+ # strings, so we test those, too.
package FOO;
my $fc;
sub TIESCALAR { bless [ "abcdefgh" ] }
@@ -757,6 +759,35 @@ fresh_perl_is( '$_="abcef"; s/bc|(.)\G(.)/$1 ? "[$1-$2]" : "XX"/ge; print' => 'a
$s =~ s/..../\x{101}/;
::is($fc, 1, "tied UTF8 stuff FETCH count");
::is("$s", "\x{101}efgh", "tied UTF8 stuff");
+
+ ::watchdog(300);
+ $fc = 0;
+ $s = *foo;
+ $s =~ s/..../\x{101}/;
+ ::is($fc, 1, '$tied_glob =~ s/non-utf8/utf8/ fetch count');
+ ::is("$s", "\x{101}::foo", '$tied_glob =~ s/non-utf8/utf8/ result');
+ $fc = 0;
+ $s = *foo;
+ $s =~ s/(....)/\x{101}/g;
+ ::is($fc, 1, '$tied_glob =~ s/(non-utf8)/utf8/g fetch count');
+ ::is("$s", "\x{101}\x{101}o",
+ '$tied_glob =~ s/(non-utf8)/utf8/g result');
+ $fc = 0;
+ $s = "\xff\xff\xff\xff\xff";
+ $s =~ s/..../\x{101}/;
+ ::is($fc, 1, '$tied_latin1 =~ s/non-utf8/utf8/ fetch count');
+ ::is("$s", "\x{101}\xff", '$tied_latin1 =~ s/non-utf8/utf8/ result');
+ $fc = 0;
+ { package package_name; tied($s)->[0] = __PACKAGE__ };
+ $s =~ s/..../\x{101}/;
+ ::is($fc, 1, '$tied_cow =~ s/non-utf8/utf8/ fetch count');
+ ::is("$s", "\x{101}age_name", '$tied_cow =~ s/non-utf8/utf8/ result');
+ $fc = 0;
+ $s = \1;
+ $s =~ s/..../\x{101}/;
+ ::is($fc, 1, '$tied_ref =~ s/non-utf8/utf8/ fetch count');
+ ::like("$s", qr/^\x{101}AR\(0x.*\)\z/,
+ '$tied_ref =~ s/non-utf8/utf8/ result');
}
# RT #97954
@@ -798,4 +829,60 @@ is(*bam =~ s/\*//rg, 'main::bam', 'Can s///rg a tyepglob');
tie my $kror, cowBug =>;
$kror =~ s/(?:)/""/e;
}
-pass("s/// on tied var returning a cow")
+pass("s/// on tied var returning a cow");
+
+# a test for 6502e08109cd003b2cdf39bc94ef35e52203240b
+# previously this would segfault
+
+{
+ my $s = "abc";
+ eval { $s =~ s/(.)/die/e; };
+ like($@, qr/Died at/, "s//die/e");
+}
+
+
+# Test problems with constant replacement optimisation
+# [perl #26986] logop in repl resulting in incorrect optimisation
+"g" =~ /(.)/;
+@l{'a'..'z'} = 'A'..':';
+$_ = "hello";
+{ s/(.)/$l{my $a||$1}/g }
+is $_, "HELLO",
+ 'logop in s/// repl does not result in "constant" repl optimisation';
+# Aliases to match vars
+"g" =~ /(.)/;
+$_ = "hello";
+{
+ local *a = *1;
+ s/(.)\1/$a/g;
+}
+is $_, 'helo', 's/pat/$alias_to_match_var/';
+"g" =~ /(.)/;
+$_ = "hello";
+{
+ local *a = *1;
+ s/e(.)\1/a$a/g;
+}
+is $_, 'halo', 's/pat/$alias_to_match_var/';
+# Last-used pattern containing re-evals that modify "constant" rhs
+{
+ local *a;
+ $x = "hello";
+ $x =~ /(?{*a = \"a"})./;
+ undef *a;
+ $x =~ s//$a/g;
+ is $x, 'aaaaa',
+ 'last-used pattern disables constant repl optimisation';
+}
+
+
+$_ = "\xc4\x80";
+$a = "";
+utf8::upgrade $a;
+$_ =~ s/$/$a/;
+is $_, "\xc4\x80", "empty utf8 repl does not result in mangled utf8";
+
+$@ = "\x{30cb}eval 18";
+$@ =~ s/eval \d+/eval 11/;
+is $@, "\x{30cb}eval 11",
+ 'loading utf8 tables does not interfere with matches against $@';
diff --git a/gnu/usr.bin/perl/t/run/dtrace.pl b/gnu/usr.bin/perl/t/run/dtrace.pl
new file mode 100644
index 00000000000..d81cc0710eb
--- /dev/null
+++ b/gnu/usr.bin/perl/t/run/dtrace.pl
@@ -0,0 +1 @@
+42
diff --git a/gnu/usr.bin/perl/t/run/dtrace.t b/gnu/usr.bin/perl/t/run/dtrace.t
index 625e4039077..49bda6643ab 100644
--- a/gnu/usr.bin/perl/t/run/dtrace.t
+++ b/gnu/usr.bin/perl/t/run/dtrace.t
@@ -24,7 +24,7 @@ use strict;
use warnings;
use IPC::Open2;
-plan(tests => 5);
+plan(tests => 9);
dtrace_like(
'1',
@@ -62,7 +62,7 @@ dtrace_like(
'phase changes of a simple script',
);
-# this code taken from t/op/magic_phase.t which tests all of the
+# this code taken from t/opbasic/magic_phase.t which tests all of the
# transitions of ${^GLOBAL_PHASE}. instead of printing (which will
# interact nondeterministically with the DTrace output), we increment
# an unused variable for side effects
@@ -117,6 +117,40 @@ PHASES
'make sure sub-entry and phase-change interact well',
);
+dtrace_like(<< 'PERL_SCRIPT',
+ my $tmp = "foo";
+ $tmp =~ s/f/b/;
+ chop $tmp;
+PERL_SCRIPT
+ << 'D_SCRIPT',
+ op-entry { printf("op-entry <%s>\n", copyinstr(arg0)) }
+D_SCRIPT
+ [
+ qr/op-entry <subst>/,
+ qr/op-entry <schop>/,
+ ],
+ 'basic op probe',
+);
+
+dtrace_like(<< 'PERL_SCRIPT',
+ use strict;
+ require HTTP::Tiny;
+ do "run/dtrace.pl";
+PERL_SCRIPT
+ << 'D_SCRIPT',
+ loading-file { printf("loading-file <%s>\n", copyinstr(arg0)) }
+ loaded-file { printf("loaded-file <%s>\n", copyinstr(arg0)) }
+D_SCRIPT
+ [
+ # the original test made sure that each file generated a loading-file then a loaded-file,
+ # but that had a race condition when the kernel would push the perl process onto a different
+ # CPU, so the DTrace output would appear out of order
+ qr{loading-file <strict\.pm>.*loading-file <HTTP/Tiny\.pm>.*loading-file <run/dtrace\.pl>}s,
+ qr{loaded-file <strict\.pm>.*loaded-file <HTTP/Tiny\.pm>.*loaded-file <run/dtrace\.pl>}s,
+ ],
+ 'loading-file, loaded-file probes',
+);
+
sub dtrace_like {
my $perl = shift;
my $probes = shift;
@@ -152,6 +186,11 @@ sub dtrace_like {
die "Unexpected error from DTrace: $result"
if $child_exit_status != 0;
- like($result, $expected, $name);
+ if (ref($expected) eq 'ARRAY') {
+ like($result, $_, $name) for @$expected;
+ }
+ else {
+ like($result, $expected, $name);
+ }
}
diff --git a/gnu/usr.bin/perl/t/run/flib/broken.pm b/gnu/usr.bin/perl/t/run/flib/broken.pm
new file mode 100644
index 00000000000..18f4d45bd78
--- /dev/null
+++ b/gnu/usr.bin/perl/t/run/flib/broken.pm
@@ -0,0 +1,8 @@
+package broken;
+
+use strict;
+use warnings;
+
+$x = 1;
+
+1;
diff --git a/gnu/usr.bin/perl/t/run/fresh_perl.t b/gnu/usr.bin/perl/t/run/fresh_perl.t
index 9c76a64f468..376ceafc48f 100644
--- a/gnu/usr.bin/perl/t/run/fresh_perl.t
+++ b/gnu/usr.bin/perl/t/run/fresh_perl.t
@@ -81,7 +81,7 @@ $array[128]=1
########
$x=0x0eabcd; print $x->ref;
EXPECT
-Can't call method "ref" without a package or object reference at - line 1.
+Can't locate object method "ref" via package "961485" (perhaps you forgot to load "961485"?) at - line 1.
########
chop ($str .= <DATA>);
########
@@ -349,15 +349,12 @@ sub foo { local $_ = shift; @_ = split; @_ }
@x = foo(' x y z ');
print "you die joe!\n" unless "@x" eq 'x y z';
########
-/(?{"{"})/ # Check it outside of eval too
+"A" =~ /(?{"{"})/ # Check it outside of eval too
EXPECT
-Sequence (?{...}) not terminated or not {}-balanced in regex; marked by <-- HERE in m/(?{ <-- HERE "{"})/ at - line 1.
########
/(?{"{"}})/ # Check it outside of eval too
EXPECT
-Unmatched right curly bracket at (re_eval 1) line 1, at end of line
-syntax error at (re_eval 1) line 1, near ""{"}"
-Compilation failed in regexp at - line 1.
+Sequence (?{...}) not terminated with ')' at - line 1.
########
BEGIN { @ARGV = qw(a b c d e) }
BEGIN { print "argv <@ARGV>\nbegin <",shift,">\n" }
@@ -825,3 +822,55 @@ eval {
print "If you get here, you didn't crash\n";
EXPECT
If you get here, you didn't crash
+######## [perl #112312] crash on syntax error
+# SKIP: !defined &DynaLoader::boot_DynaLoader # miniperl
+#!/usr/bin/perl
+use strict;
+use warnings;
+sub meow (&);
+my %h;
+my $k;
+meow {
+ my $t : need_this;
+ $t = {
+ size => $h{$k}{size};
+ used => $h{$k}(used}
+ };
+};
+EXPECT
+syntax error at - line 12, near "used"
+syntax error at - line 12, near "used}"
+Unmatched right curly bracket at - line 14, at end of line
+Execution of - aborted due to compilation errors.
+######## [perl #112312] crash on syntax error - another test
+# SKIP: !defined &DynaLoader::boot_DynaLoader # miniperl
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+sub meow (&);
+
+my %h;
+my $k;
+
+meow {
+ my $t : need_this;
+ $t = {
+ size => $h{$k}{size};
+ used => $h{$k}(used}
+ };
+};
+
+sub testo {
+ my $value = shift;
+ print;
+ print;
+ print;
+ 1;
+}
+
+EXPECT
+syntax error at - line 15, near "used"
+syntax error at - line 15, near "used}"
+Unmatched right curly bracket at - line 17, at end of line
+Execution of - aborted due to compilation errors.
diff --git a/gnu/usr.bin/perl/t/run/locale.t b/gnu/usr.bin/perl/t/run/locale.t
index 7bbb0a9d39c..d01e3bca98b 100644
--- a/gnu/usr.bin/perl/t/run/locale.t
+++ b/gnu/usr.bin/perl/t/run/locale.t
@@ -64,7 +64,11 @@ my $original_locale = setlocale(LC_NUMERIC);
my ($base, $different, $difference);
for ("C", @locales) { # prefer C for the base if available
- use locale;
+ BEGIN {
+ if($Config{d_setlocale}) {
+ require locale; import locale;
+ }
+ }
setlocale(LC_NUMERIC, $_) or next;
my $in = 4.2; # avoid any constant folding bugs
if ((my $s = sprintf("%g", $in)) eq "4.2") {
@@ -113,14 +117,15 @@ format STDOUT =
@.#
4.179
.
-{ use locale; write; }
+{ require locale; import locale; write; }
EOF
"too late to look at the locale at write() time");
}
{
fresh_perl_is(<<'EOF', $difference, {},
-use locale; format STDOUT =
+use locale;
+format STDOUT =
@.#
4.179
.
@@ -134,7 +139,11 @@ EOF
# do not let "use 5.000" affect the locale!
# this test is to prevent regression of [rt.perl.org #105784]
fresh_perl_is(<<"EOF",
- use locale;
+ BEGIN {
+ if($Config{d_setlocale}) {
+ require locale; import locale;
+ }
+ }
use POSIX;
my \$i = 0.123;
POSIX::setlocale(POSIX::LC_NUMERIC(),"$different");
@@ -163,7 +172,7 @@ EOF
local $ENV{LC_NUMERIC} = $_;
local $ENV{LC_ALL}; # so it never overrides LC_NUMERIC
fresh_perl_is(<<'EOF', "$difference "x4, {},
- use locale;
+ use locale;
use POSIX qw(locale_h);
setlocale(LC_NUMERIC, "");
my $in = 4.2;
diff --git a/gnu/usr.bin/perl/t/run/mad.t b/gnu/usr.bin/perl/t/run/mad.t
new file mode 100644
index 00000000000..83023c53ef0
--- /dev/null
+++ b/gnu/usr.bin/perl/t/run/mad.t
@@ -0,0 +1,46 @@
+#!./perl
+#
+# Tests for Perl mad environment
+#
+# $PERL_XMLDUMP
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require Config; import Config;
+ require './test.pl';
+ skip_all_without_config('mad');
+}
+
+use File::Path;
+use File::Spec;
+
+my $tempdir = tempfile;
+
+mkdir $tempdir, 0700 or die "Can't mkdir '$tempdir': $!";
+unshift @INC, '../../lib';
+my $cleanup = 1;
+
+END {
+ if ($cleanup) {
+ rmtree($tempdir);
+ }
+}
+
+plan tests => 4;
+
+{
+ delete local $ENV{$_} for keys %ENV;
+ my $fn = File::Spec->catfile(File::Spec->curdir(), "withoutT.xml");
+ $ENV{PERL_XMLDUMP} = $fn;
+ fresh_perl_is('print q/hello/', '', {}, 'mad without -T');
+ ok(-f $fn, "xml file created without -T as expected");
+}
+
+{
+ delete local $ENV{$_} for keys %ENV;
+ my $fn = File::Spec->catfile(File::Spec->curdir(), "withT.xml");
+ fresh_perl_is('print q/hello/', 'hello', { switches => [ "-T" ] },
+ 'mad with -T');
+ ok(!-e $fn, "no xml file created with -T as expected");
+}
diff --git a/gnu/usr.bin/perl/t/run/noswitch.t b/gnu/usr.bin/perl/t/run/noswitch.t
index a902c1fff7d..ff562534cdb 100644
--- a/gnu/usr.bin/perl/t/run/noswitch.t
+++ b/gnu/usr.bin/perl/t/run/noswitch.t
@@ -1,12 +1,16 @@
#!./perl
BEGIN {
- print "1..3\n";
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
*ARGV = *DATA;
+ plan(tests => 3);
}
-print "ok 1\n";
-print <>;
-print "ok 3\n";
+
+pass("first test");
+is( scalar <>, "ok 2\n", "read from aliased DATA filehandle");
+pass("last test");
__DATA__
-ok 2 - read from aliased DATA filehandle
+ok 2
diff --git a/gnu/usr.bin/perl/t/run/runenv.t b/gnu/usr.bin/perl/t/run/runenv.t
index cea25904148..b3df796dd1e 100644
--- a/gnu/usr.bin/perl/t/run/runenv.t
+++ b/gnu/usr.bin/perl/t/run/runenv.t
@@ -12,7 +12,7 @@ BEGIN {
skip_all_without_config('d_fork');
}
-plan tests => 84;
+plan tests => 104;
my $STDOUT = tempfile();
my $STDERR = tempfile();
@@ -53,7 +53,7 @@ sub runperl_and_capture {
}
open STDOUT, '>', $STDOUT or exit $FAILURE_CODE;
open STDERR, '>', $STDERR and do { exec $PERL, @$args };
- # it didn't_work:
+ # it did not work:
print STDOUT "IWHCWJIHCI\cNHJWCJQWKJQJWCQW\n";
exit $FAILURE_CODE;
}
@@ -63,8 +63,21 @@ sub try {
my ($env, $args, $stdout, $stderr) = @_;
my ($actual_stdout, $actual_stderr) = runperl_and_capture($env, $args);
local $::Level = $::Level + 1;
- is ($stdout, $actual_stdout);
- is ($stderr, $actual_stderr);
+ my @envpairs = ();
+ for my $k (sort keys %$env) {
+ push @envpairs, "$k => $env->{$k}";
+ }
+ my $label = join(',' => (@envpairs, @$args));
+ if (ref $stdout) {
+ ok ( $actual_stdout =~/$stdout/, $label . ' stdout' );
+ } else {
+ is ( $actual_stdout, $stdout, $label . ' stdout' );
+ }
+ if (ref $stderr) {
+ ok ( $actual_stderr =~/$stderr/, $label . ' stderr' );
+ } else {
+ is ( $actual_stderr, $stderr, $label . ' stderr' );
+ }
}
# PERL5OPT Command-line options (switches). Switches in
@@ -191,6 +204,77 @@ try({PERL5LIB => "foo",
'',
'');
+try({PERL_HASH_SEED_DEBUG => 1},
+ ['-e','1'],
+ '',
+ qr/HASH_FUNCTION =/);
+
+try({PERL_HASH_SEED_DEBUG => 1},
+ ['-e','1'],
+ '',
+ qr/HASH_SEED =/);
+
+# special case, seed "0" implies disabled hash key traversal randomization
+try({PERL_HASH_SEED_DEBUG => 1, PERL_HASH_SEED => "0"},
+ ['-e','1'],
+ '',
+ qr/PERTURB_KEYS = 0/);
+
+# check that setting it to a different value with the same logical value
+# triggers the normal "deterministic mode".
+try({PERL_HASH_SEED_DEBUG => 1, PERL_HASH_SEED => "0x0"},
+ ['-e','1'],
+ '',
+ qr/PERTURB_KEYS = 2/);
+
+try({PERL_HASH_SEED_DEBUG => 1, PERL_PERTURB_KEYS => "0"},
+ ['-e','1'],
+ '',
+ qr/PERTURB_KEYS = 0/);
+
+try({PERL_HASH_SEED_DEBUG => 1, PERL_PERTURB_KEYS => "1"},
+ ['-e','1'],
+ '',
+ qr/PERTURB_KEYS = 1/);
+
+try({PERL_HASH_SEED_DEBUG => 1, PERL_PERTURB_KEYS => "2"},
+ ['-e','1'],
+ '',
+ qr/PERTURB_KEYS = 2/);
+
+try({PERL_HASH_SEED_DEBUG => 1, PERL_HASH_SEED => "12345678"},
+ ['-e','1'],
+ '',
+ qr/HASH_SEED = 0x12345678/);
+
+try({PERL_HASH_SEED_DEBUG => 1, PERL_HASH_SEED => "12"},
+ ['-e','1'],
+ '',
+ qr/HASH_SEED = 0x12000000/);
+
+try({PERL_HASH_SEED_DEBUG => 1, PERL_HASH_SEED => "123456789"},
+ ['-e','1'],
+ '',
+ qr/HASH_SEED = 0x12345678/);
+
+# Test that PERL_PERTURB_KEYS works as expected. We check that we get the same
+# results if we use PERL_PERTURB_KEYS = 0 or 2 and we reuse the seed from previous run.
+my @print_keys = ( '-e', '@_{"A".."Z"}=(); print keys %_');
+for my $mode ( 0,1, 2 ) { # disabled and deterministic respectively
+ my %base_opts = ( PERL_PERTURB_KEYS => $mode, PERL_HASH_SEED_DEBUG => 1 ),
+ my ($out, $err) = runperl_and_capture( { %base_opts }, [ @print_keys ]);
+ if ($err=~/HASH_SEED = (0x[a-f0-9]+)/) {
+ my $seed = $1;
+ my($out2, $err2) = runperl_and_capture( { %base_opts, PERL_HASH_SEED => $seed }, [ @print_keys ]);
+ if ( $mode == 1 ) {
+ isnt ($out,$out2,"PERL_PERTURB_KEYS = $mode results in different key order with the same key");
+ } else {
+ is ($out,$out2,"PERL_PERTURB_KEYS = $mode allows one to recreate a random hash");
+ }
+ is ($err,$err2,"Got the same debug output when we set PERL_HASH_SEED and PERL_PERTURB_KEYS");
+ }
+}
+
# Tests for S_incpush_use_sep():
my @dump_inc = ('-e', 'print "$_\n" foreach @INC');
diff --git a/gnu/usr.bin/perl/t/run/script.t b/gnu/usr.bin/perl/t/run/script.t
index 83d733abd23..2553e0045bc 100755
--- a/gnu/usr.bin/perl/t/run/script.t
+++ b/gnu/usr.bin/perl/t/run/script.t
@@ -4,17 +4,16 @@ BEGIN {
chdir 't';
@INC = '../lib';
require './test.pl'; # for which_perl() etc
+ plan(3);
}
my $Perl = which_perl();
my $filename = tempfile();
-print "1..3\n";
-
$x = `$Perl -le "print 'ok';"`;
-if ($x eq "ok\n") {print "ok 1\n";} else {print "not ok 1\n";}
+is($x, "ok\n", "Got expected 'perl -le' output");
open(try,">$filename") || (die "Can't open temp file.");
print try 'print "ok\n";'; print try "\n";
@@ -22,8 +21,8 @@ close try or die "Could not close: $!";
$x = `$Perl $filename`;
-if ($x eq "ok\n") {print "ok 2\n";} else {print "not ok 2\n";}
+is($x, "ok\n", "Got expected output of command from script");
$x = `$Perl <$filename`;
-if ($x eq "ok\n") {print "ok 3\n";} else {print "not ok 3\n";}
+is($x, "ok\n", "Got expected output of command read from script");
diff --git a/gnu/usr.bin/perl/t/run/switch0.t b/gnu/usr.bin/perl/t/run/switch0.t
index 9919e1231a2..94d5bd2df7a 100644
--- a/gnu/usr.bin/perl/t/run/switch0.t
+++ b/gnu/usr.bin/perl/t/run/switch0.t
@@ -1,3 +1,11 @@
#!./perl -0
-print "1..1\n";
-print ord $/ == 0 ? "ok 1\n" : "not ok 1\n";
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
+}
+
+plan tests => 1;
+
+is(ord $/, 0, '$/ set to 0 via switch');
diff --git a/gnu/usr.bin/perl/t/run/switchF.t b/gnu/usr.bin/perl/t/run/switchF.t
index a6e9031d0c8..dcf44094dd8 100644
--- a/gnu/usr.bin/perl/t/run/switchF.t
+++ b/gnu/usr.bin/perl/t/run/switchF.t
@@ -1,11 +1,16 @@
#!./perl -anFx+
BEGIN {
- print "1..2\n";
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
*ARGV = *DATA;
+ plan(tests => 2);
}
-print "@F";
+my $index = $F[-1];
+chomp $index;
+is($index, $., "line $.");
__DATA__
okx1
-okxxx2
+okx3xx2
diff --git a/gnu/usr.bin/perl/t/run/switchF1.t b/gnu/usr.bin/perl/t/run/switchF1.t
index f94c159544a..70fe638acbd 100755
--- a/gnu/usr.bin/perl/t/run/switchF1.t
+++ b/gnu/usr.bin/perl/t/run/switchF1.t
@@ -1,4 +1,8 @@
#!perl -w
+
+# This test file does not use test.pl because of the involved way in which it
+# generates its TAP output.
+
print "1..5\n";
my $file = "Run_switchF1.pl";
@@ -14,10 +18,10 @@ BEGIN {
print "@F";
__DATA__
-okx1
-okq2
-ok\3
-ok'4
+okx1x- use of alternate delimiter (lower case letter) in -F
+okq2q- use of alternate delimiter (lower case letter) in -F
+ok\3\- use of alternate delimiter (backslash) in -F
+ok'4'- use of alternate delimiter (apostrophe) in -F
EOT
# 2 of the characters toke.c used to use to quote the split parameter:
@@ -26,6 +30,8 @@ $prog =~ s/QQ/\x01\x80/;
print F $prog;
close F or die "Close $file: $!";
-print system ($^X, $file) ? "not ok 5\n" : "ok 5\n";
+$count = 5;
+$result = "ok $count - complete test of alternate delimiters in -F\n";
+print system ($^X, $file) ? "not $result" : $result;
unlink $file or die "Unlink $file: $!";
diff --git a/gnu/usr.bin/perl/t/run/switchI.t b/gnu/usr.bin/perl/t/run/switchI.t
index 27f78a60779..7fb222bb219 100644
--- a/gnu/usr.bin/perl/t/run/switchI.t
+++ b/gnu/usr.bin/perl/t/run/switchI.t
@@ -11,11 +11,12 @@ my $Is_VMS = $^O eq 'VMS';
my $lib;
$lib = 'Bla';
-ok(grep { $_ eq $lib } @INC[0..($#INC-1)]);
+ok do { grep { $_ eq $lib } @INC[0..($#INC-1)] }, 'Identified entry in @INC';
SKIP: {
skip 'Double colons not allowed in dir spec', 1 if $Is_VMS;
$lib = 'Foo::Bar';
- ok(grep { $_ eq $lib } @INC[0..($#INC-1)]);
+ ok do { grep { $_ eq $lib } @INC[0..($#INC-1)] },
+ 'Identified entry in @INC with double colons';
}
$lib = 'Bla2';
diff --git a/gnu/usr.bin/perl/t/run/switchM.t b/gnu/usr.bin/perl/t/run/switchM.t
new file mode 100644
index 00000000000..72e8908b01b
--- /dev/null
+++ b/gnu/usr.bin/perl/t/run/switchM.t
@@ -0,0 +1,19 @@
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+use strict;
+
+require './test.pl';
+
+plan(2);
+
+like(runperl(switches => ['-Irun/flib', '-Mbroken'], stderr => 1),
+ qr/^Global symbol "\$x" requires explicit package name at run\/flib\/broken.pm line 6\./,
+ "Ensure -Irun/flib produces correct filename in warnings");
+
+like(runperl(switches => ['-Irun/flib/', '-Mbroken'], stderr => 1),
+ qr/^Global symbol "\$x" requires explicit package name at run\/flib\/broken.pm line 6\./,
+ "Ensure -Irun/flib/ produces correct filename in warnings");
diff --git a/gnu/usr.bin/perl/t/run/switcha.t b/gnu/usr.bin/perl/t/run/switcha.t
index ec2f0ccc066..16c7917b0ee 100644
--- a/gnu/usr.bin/perl/t/run/switcha.t
+++ b/gnu/usr.bin/perl/t/run/switcha.t
@@ -1,11 +1,14 @@
#!./perl -na
BEGIN {
- print "1..2\n";
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
*ARGV = *DATA;
- $i = 0;
+ plan(tests => 2);
}
-print "$F[1] ",++$i,"\n";
+chomp;
+is($F[1], 'ok', "testing split of string '$_'");
__DATA__
not ok
diff --git a/gnu/usr.bin/perl/t/run/switchd.t b/gnu/usr.bin/perl/t/run/switchd.t
index eadcd94053d..4334262616e 100644
--- a/gnu/usr.bin/perl/t/run/switchd.t
+++ b/gnu/usr.bin/perl/t/run/switchd.t
@@ -9,7 +9,7 @@ BEGIN { require "./test.pl"; }
# This test depends on t/lib/Devel/switchd*.pm.
-plan(tests => 7);
+plan(tests => 10);
my $r;
@@ -35,19 +35,25 @@ __SWDTEST__
progfile => $filename,
args => ['3'],
);
- like($r, qr/^sub<Devel::switchd::import>;import<Devel::switchd>;DB<main,$::tempfile_regexp,9>;sub<Foo::foo>;DB<Foo,$::tempfile_regexp,5>;DB<Foo,$::tempfile_regexp,6>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;$/);
+ like($r,
+qr/^sub<Devel::switchd::import>;import<Devel::switchd>;DB<main,$::tempfile_regexp,9>;sub<Foo::foo>;DB<Foo,$::tempfile_regexp,5>;DB<Foo,$::tempfile_regexp,6>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;$/,
+ 'Got debugging output: 1');
$r = runperl(
switches => [ '-Ilib', '-f', '-d:switchd=a,42' ],
progfile => $filename,
args => ['4'],
);
- like($r, qr/^sub<Devel::switchd::import>;import<Devel::switchd a 42>;DB<main,$::tempfile_regexp,9>;sub<Foo::foo>;DB<Foo,$::tempfile_regexp,5>;DB<Foo,$::tempfile_regexp,6>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;$/);
+ like($r,
+qr/^sub<Devel::switchd::import>;import<Devel::switchd a 42>;DB<main,$::tempfile_regexp,9>;sub<Foo::foo>;DB<Foo,$::tempfile_regexp,5>;DB<Foo,$::tempfile_regexp,6>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;$/,
+ 'Got debugging output: 2');
$r = runperl(
switches => [ '-Ilib', '-f', '-d:-switchd=a,42' ],
progfile => $filename,
args => ['4'],
);
- like($r, qr/^sub<Devel::switchd::unimport>;unimport<Devel::switchd a 42>;DB<main,$::tempfile_regexp,9>;sub<Foo::foo>;DB<Foo,$::tempfile_regexp,5>;DB<Foo,$::tempfile_regexp,6>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;$/);
+ like($r,
+qr/^sub<Devel::switchd::unimport>;unimport<Devel::switchd a 42>;DB<main,$::tempfile_regexp,9>;sub<Foo::foo>;DB<Foo,$::tempfile_regexp,5>;DB<Foo,$::tempfile_regexp,6>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;sub<Bar::bar>;DB<Bar,$::tempfile_regexp,2>;$/,
+ 'Got debugging output: 3');
}
# [perl #71806]
@@ -110,3 +116,50 @@ like(
qr "ok\r?\n",
'No crash when calling orphaned subroutine via goto &',
);
+
+# test when DB::DB is seen but not defined [perl #114990]
+like(
+ runperl(
+ switches => [ '-Ilib', '-d:nodb' ],
+ prog => [ '1' ],
+ stderr => 1,
+ ),
+ qr/^No DB::DB routine defined/,
+ "No crash when *DB::DB exists but not &DB::DB",
+);
+like(
+ runperl(
+ switches => [ '-Ilib' ],
+ prog => 'sub DB::DB; BEGIN { $^P = 0x22; } for(0..9){ warn }',
+ stderr => 1,
+ ),
+ qr/^No DB::DB routine defined/,
+ "No crash when &DB::DB exists but isn't actually defined",
+);
+
+# [perl #115742] Recursive DB::DB clobbering its own pad
+like(
+ runperl(
+ switches => [ '-Ilib' ],
+ progs => [ split "\n", <<'='
+ BEGIN {
+ $^P = 0x22;
+ }
+ package DB;
+ sub DB {
+ my $x = 42;
+ return if $__++;
+ $^D |= 1 << 30; # allow recursive calls
+ main::foo();
+ print $x//q-u-, qq-\n-;
+ }
+ package main;
+ chop;
+ sub foo { chop; }
+=
+ ],
+ stderr => 1,
+ ),
+ qr/42/,
+ "Recursive DB::DB does not clobber its own pad",
+);
diff --git a/gnu/usr.bin/perl/t/run/switches.t b/gnu/usr.bin/perl/t/run/switches.t
index 57ae32474d7..f1b923461d9 100644
--- a/gnu/usr.bin/perl/t/run/switches.t
+++ b/gnu/usr.bin/perl/t/run/switches.t
@@ -11,9 +11,11 @@ BEGIN {
BEGIN { require "./test.pl"; }
-plan(tests => 112);
+plan(tests => 115);
use Config;
+use Errno qw(EACCES EISDIR);
+use POSIX qw(setlocale LC_ALL);
# due to a bug in VMS's piping which makes it impossible for runperl()
# to emulate echo -n (ie. stdin always winds up with a newline), these
@@ -107,6 +109,25 @@ SWTEST
);
}
+{
+ my $tempdir = tempfile;
+ mkdir $tempdir, 0700 or die "Can't mkdir '$tempdir': $!";
+
+ local $ENV{'LC_ALL'} = 'C'; # Keep the test simple: expect English
+ local $ENV{LANGUAGE} = 'C';
+ setlocale(LC_ALL, "C");
+
+ # Win32 won't let us open the directory, so we never get to die with
+ # EISDIR, which happens after open.
+ my $error = do { local $! = $^O eq 'MSWin32' ? EACCES : EISDIR; "$!" };
+ like(
+ runperl( switches => [ '-c' ], args => [ $tempdir ], stderr => 1),
+ qr/Can't open perl script.*$tempdir.*\Q$error/s,
+ "RT \#61362: Cannot syntax-check a directory"
+ );
+ rmdir $tempdir or die "Can't rmdir '$tempdir': $!";
+}
+
# Tests for -l
$r = runperl(
@@ -350,6 +371,26 @@ __EOF__
is(join(":", @bak),
"foo yada dada:bada foo bing:king kong foo",
"-i backup file");
+
+ my $out1 = runperl(
+ switches => ['-i.bak -p'],
+ prog => 'exit',
+ stderr => 1,
+ stdin => "1\n",
+ );
+ is(
+ $out1,
+ "-i used with no filenames on the command line, reading from STDIN.\n",
+ "warning when no files given"
+ );
+ my $out2 = runperl(
+ switches => ['-i.bak -p'],
+ prog => 'exit',
+ stderr => 1,
+ stdin => "1\n",
+ args => ['file'],
+ );
+ is($out2, "", "no warning when files given");
}
# Tests for -E
@@ -363,12 +404,12 @@ is( $r, "Hello, world!\n", "-E say" );
$r = runperl(
- switches => [ '-E', '"undef ~~ undef and say q(Hello, world!)"']
+ switches => [ '-E', '"no warnings q{experimental::smartmatch}; undef ~~ undef and say q(Hello, world!)"']
);
is( $r, "Hello, world!\n", "-E ~~" );
$r = runperl(
- switches => [ '-E', '"given(undef) {when(undef) { say q(Hello, world!)"}}']
+ switches => [ '-E', '"no warnings q{experimental::smartmatch}; given(undef) {when(undef) { say q(Hello, world!)"}}']
);
is( $r, "Hello, world!\n", "-E given" );
diff --git a/gnu/usr.bin/perl/t/run/switchn.t b/gnu/usr.bin/perl/t/run/switchn.t
index bca9a66e76c..6ad4a7265f0 100644
--- a/gnu/usr.bin/perl/t/run/switchn.t
+++ b/gnu/usr.bin/perl/t/run/switchn.t
@@ -1,15 +1,19 @@
#!./perl -n
BEGIN {
- print "1..3\n";
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
*ARGV = *DATA;
+ plan(tests => 3);
}
END {
- print "ok 3\n";
+ pass("Final test");
}
-print;
+chomp;
+is("ok ".$., $_, "Checking line $.");
s/^/not /;
diff --git a/gnu/usr.bin/perl/t/run/switchp.t b/gnu/usr.bin/perl/t/run/switchp.t
index 1d1fe1485f5..ab1ae902854 100644
--- a/gnu/usr.bin/perl/t/run/switchp.t
+++ b/gnu/usr.bin/perl/t/run/switchp.t
@@ -1,16 +1,19 @@
#!./perl -p
+# This test file does not use test.pl because of the involved way in which it
+# generates its TAP output.
+
BEGIN {
print "1..3\n";
*ARGV = *DATA;
}
END {
- print "ok 3\n";
+ print "ok 3 - -p switch tested\n";
}
s/^not //;
__DATA__
-not ok 1
-not ok 2
+not ok 1 - -p switch first iteration
+not ok 2 - -p switch second iteration
diff --git a/gnu/usr.bin/perl/t/run/switchx.aux b/gnu/usr.bin/perl/t/run/switchx.aux
index 0db6103ee26..b59df4a0ed8 100644
--- a/gnu/usr.bin/perl/t/run/switchx.aux
+++ b/gnu/usr.bin/perl/t/run/switchx.aux
@@ -19,9 +19,9 @@ still not perl
print "1..7";
if (-f 'run/switchx.aux') {
- print "ok 1";
+ print "ok 1 - Test file exists";
}
-print "ok 2";
+print "ok 2 - Test file utilized";
# other tests are in switchx2.aux
__END__
diff --git a/gnu/usr.bin/perl/t/run/switchx2.aux b/gnu/usr.bin/perl/t/run/switchx2.aux
index c1fb6ee65dc..6d54a2d202c 100644
--- a/gnu/usr.bin/perl/t/run/switchx2.aux
+++ b/gnu/usr.bin/perl/t/run/switchx2.aux
@@ -21,10 +21,10 @@ if [[ -z $FOO ]]; then echo 'not ok 1'; fi
# These lines get executed
my $test = $ARGV[0];
if (-f 'switchx.t') {
- print("ok $test");
+ print("ok $test - perl -l option tested");
}
$test++;
-print "ok $test";
+print "ok $test - Second test file utilized";
__END__
diff --git a/gnu/usr.bin/perl/t/test.pl b/gnu/usr.bin/perl/t/test.pl
index b33c634fef2..e141b9174f1 100644
--- a/gnu/usr.bin/perl/t/test.pl
+++ b/gnu/usr.bin/perl/t/test.pl
@@ -109,6 +109,16 @@ sub _comment {
map { split /\n/ } @_;
}
+sub _have_dynamic_extension {
+ my $extension = shift;
+ unless (eval {require Config; 1}) {
+ warn "test.pl had problems loading Config: $@";
+ return 1;
+ }
+ $extension =~ s!::!/!g;
+ return 1 if ($Config::Config{extensions} =~ /\b$extension\b/);
+}
+
sub skip_all {
if (@_) {
_print "1..0 # Skip @_\n";
@@ -123,14 +133,9 @@ sub skip_all_if_miniperl {
}
sub skip_all_without_dynamic_extension {
- my $extension = shift;
+ my ($extension) = @_;
skip_all("no dynamic loading on miniperl, no $extension") if is_miniperl();
- unless (eval {require Config; 1}) {
- warn "test.pl had problems loading Config: $@";
- return;
- }
- $extension =~ s!::!/!g;
- return if ($Config::Config{extensions} =~ /\b$extension\b/);
+ return if &_have_dynamic_extension;
skip_all("$extension was not built");
}
@@ -153,9 +158,9 @@ sub skip_all_without_config {
}
sub find_git_or_skip {
- my ($found_dir, $reason);
+ my ($source_dir, $reason);
if (-d '.git') {
- $found_dir = 1;
+ $source_dir = '.';
} elsif (-l 'MANIFEST' && -l 'AUTHORS') {
my $where = readlink 'MANIFEST';
die "Can't readling MANIFEST: $!" unless defined $where;
@@ -163,16 +168,20 @@ sub find_git_or_skip {
unless $where =~ s!/MANIFEST\z!!;
if (-d "$where/.git") {
# Looks like we are in a symlink tree
- chdir $where or die "Can't chdir '$where': $!";
- note("Found source tree at $where");
- $found_dir = 1;
+ if (exists $ENV{GIT_DIR}) {
+ diag("Found source tree at $where, but \$ENV{GIT_DIR} is $ENV{GIT_DIR}. Not changing it");
+ } else {
+ note("Found source tree at $where, setting \$ENV{GIT_DIR}");
+ $ENV{GIT_DIR} = "$where/.git";
+ }
+ $source_dir = $where;
}
}
- if ($found_dir) {
+ if ($source_dir) {
my $version_string = `git --version`;
if (defined $version_string
&& $version_string =~ /\Agit version (\d+\.\d+\.\d+)(.*)/) {
- return if eval "v$1 ge v1.5.0";
+ return $source_dir if eval "v$1 ge v1.5.0";
# If you have earlier than 1.5.0 and it works, change this test
$reason = "in git checkout, but git version '$1$2' too old";
} else {
@@ -185,6 +194,12 @@ sub find_git_or_skip {
skip($reason, @_);
}
+sub BAIL_OUT {
+ my ($reason) = @_;
+ _print("Bail out! $reason\n");
+ exit 255;
+}
+
sub _ok {
my ($pass, $where, $name, @mess) = @_;
# Do not try to microoptimize by factoring out the "not ".
@@ -444,6 +459,13 @@ sub skip_if_miniperl {
skip(@_) if is_miniperl();
}
+sub skip_without_dynamic_extension {
+ my ($extension) = @_;
+ skip("no dynamic loading on miniperl, no $extension") if is_miniperl();
+ return if &_have_dynamic_extension;
+ skip("$extension was not built");
+}
+
sub todo_skip {
my $why = shift;
my $n = @_ ? shift : 1;
@@ -475,7 +497,10 @@ sub eq_hash {
# Force a hash recompute if this perl's internals can cache the hash key.
$key = "" . $key;
if (exists $orig->{$key}) {
- if ($orig->{$key} ne $value) {
+ if (
+ defined $orig->{$key} != defined $value
+ || (defined $value && $orig->{$key} ne $value)
+ ) {
_print "# key ", _qq($key), " was ", _qq($orig->{$key}),
" now ", _qq($value), "\n";
$fail = 1;
@@ -740,6 +765,44 @@ sub unlink_all {
$count;
}
+# _num_to_alpha - Returns a string of letters representing a positive integer.
+# Arguments :
+# number to convert
+# maximum number of letters
+
+# returns undef if the number is negative
+# returns undef if the number of letters is greater than the maximum wanted
+
+# _num_to_alpha( 0) eq 'A';
+# _num_to_alpha( 1) eq 'B';
+# _num_to_alpha(25) eq 'Z';
+# _num_to_alpha(26) eq 'AA';
+# _num_to_alpha(27) eq 'AB';
+
+my @letters = qw(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z);
+
+# Avoid ++ -- ranges split negative numbers
+sub _num_to_alpha{
+ my($num,$max_char) = @_;
+ return unless $num >= 0;
+ my $alpha = '';
+ my $char_count = 0;
+ $max_char = 0 if $max_char < 0;
+
+ while( 1 ){
+ $alpha = $letters[ $num % 26 ] . $alpha;
+ $num = int( $num / 26 );
+ last if $num == 0;
+ $num = $num - 1;
+
+ # char limit
+ next unless $max_char;
+ $char_count = $char_count + 1;
+ return if $char_count == $max_char;
+ }
+ return $alpha;
+}
+
my %tmpfiles;
END { unlink_all keys %tmpfiles }
@@ -747,25 +810,23 @@ END { unlink_all keys %tmpfiles }
$::tempfile_regexp = 'tmp\d+[A-Z][A-Z]?';
# Avoid ++, avoid ranges, avoid split //
-my @letters = qw(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z);
+my $tempfile_count = 0;
sub tempfile {
- my $count = 0;
- do {
- my $temp = $count;
+ while(1){
my $try = "tmp$$";
- do {
- $try = $try . $letters[$temp % 26];
- $temp = int ($temp / 26);
- } while $temp;
+ my $alpha = _num_to_alpha($tempfile_count,2);
+ last unless defined $alpha;
+ $try = $try . $alpha;
+ $tempfile_count = $tempfile_count + 1;
+
# Need to note all the file names we allocated, as a second request may
# come before the first is created.
- if (!-e $try && !$tmpfiles{$try}) {
+ if (!$tmpfiles{$try} && !-e $try) {
# We have a winner
$tmpfiles{$try} = 1;
return $try;
}
- $count = $count + 1;
- } while $count < 26 * 26;
+ }
die "Can't find temporary file name starting 'tmp$$'";
}
@@ -783,8 +844,8 @@ sub _fresh_perl {
# it feels like the least-worse thing is to assume that auto-vivification
# works. At least, this is only going to be a run-time failure, so won't
# affect tests using this file but not this function.
- $runperl_args->{progfile} = $tmpfile;
- $runperl_args->{stderr} = 1;
+ $runperl_args->{progfile} ||= $tmpfile;
+ $runperl_args->{stderr} = 1 unless exists $runperl_args->{stderr};
open TEST, ">$tmpfile" or die "Cannot open $tmpfile: $!";
@@ -883,7 +944,8 @@ sub fresh_perl_like {
# Each program is source code to run followed by an "EXPECT" line, followed
# by the expected output.
#
-# The code to run may contain (note the '# ' on each):
+# The code to run may begin with a command line switch such as -w or -0777
+# (alphanumerics only), and may contain (note the '# ' on each):
# # TODO reason for todo
# # SKIP reason for skip
# # SKIP ?code to test if this should be skipped
@@ -892,9 +954,6 @@ sub fresh_perl_like {
# The expected output may contain:
# OPTION list of options
# OPTIONS list of options
-# PREFIX
-# indicates that the supplied output is only a prefix to the
-# expected output
#
# The possible options for OPTION may be:
# regex - the expected output is a regular expression
@@ -904,6 +963,9 @@ sub fresh_perl_like {
# If the actual output contains a line "SKIPPED" the test will be
# skipped.
#
+# If the actual output contains a line "PREFIX", any output starting with that
+# line will be ignored when comparing with the expected output
+#
# If the global variable $FATAL is true then OPTION fatal is the
# default.
@@ -923,6 +985,7 @@ sub run_multiple_progs {
my $tmpfile = tempfile();
+ PROGRAM:
for (@prgs){
unless (/\n/) {
print "# From $_\n";
@@ -949,13 +1012,22 @@ sub run_multiple_progs {
$reason{$what} = $temp;
}
}
+
my $name = '';
if ($prog =~ s/^#\s*NAME\s+(.+)\n//m) {
$name = $1;
}
+ if ($reason{skip}) {
+ SKIP:
+ {
+ skip($name ? "$name - $reason{skip}" : $reason{skip}, 1);
+ }
+ next PROGRAM;
+ }
+
if ($prog =~ /--FILE--/) {
- my @files = split(/\n--FILE--\s*([^\s\n]*)\s*\n/, $prog) ;
+ my @files = split(/\n?--FILE--\s*([^\s\n]*)\s*\n/, $prog) ;
shift @files ;
die "Internal error: test $_ didn't split into pairs, got " .
scalar(@files) . "[" . join("%%%%", @files) ."]\n"
diff --git a/gnu/usr.bin/perl/t/test_pl/_num_to_alpha.t b/gnu/usr.bin/perl/t/test_pl/_num_to_alpha.t
new file mode 100644
index 00000000000..01aed339481
--- /dev/null
+++ b/gnu/usr.bin/perl/t/test_pl/_num_to_alpha.t
@@ -0,0 +1,44 @@
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ require './test.pl';
+}
+
+is( _num_to_alpha(-1), undef, 'Returns undef for negative numbers');
+is( _num_to_alpha( 0), 'A', "Starts at 'A'");
+is( _num_to_alpha( 1), 'B');
+
+is( _num_to_alpha(26 - 1), 'Z', 'Last single letter return value');
+is( _num_to_alpha(26 ), 'AA', 'First double letter return value');
+is( _num_to_alpha(26 + 1), 'AB');
+
+is( _num_to_alpha(26 + 26 - 2), 'AY');
+is( _num_to_alpha(26 + 26 - 1), 'AZ');
+is( _num_to_alpha(26 + 26 ), 'BA');
+is( _num_to_alpha(26 + 26 + 1), 'BB');
+
+is( _num_to_alpha(26 ** 2 - 1), 'YZ');
+is( _num_to_alpha(26 ** 2 ), 'ZA');
+is( _num_to_alpha(26 ** 2 + 1), 'ZB');
+
+is( _num_to_alpha(26 ** 2 + 26 - 1), 'ZZ', 'Last double letter return value');
+is( _num_to_alpha(26 ** 2 + 26 ), 'AAA', 'First triple letter return value');
+is( _num_to_alpha(26 ** 2 + 26 + 1), 'AAB');
+
+is( _num_to_alpha(26 ** 3 + 26 ** 2 + 26 - 1 ), 'ZZZ', 'Last triple letter return value');
+is( _num_to_alpha(26 ** 3 + 26 ** 2 + 26 ), 'AAAA', 'First quadruple letter return value');
+is( _num_to_alpha(26 ** 3 + 26 ** 2 + 26 + 1 ), 'AAAB');
+
+note('Testing limit capabilities');
+
+is( _num_to_alpha(26 - 1 , 1), 'Z', 'Largest return value for one letter');
+is( _num_to_alpha(26 , 1), undef); # AA
+
+is( _num_to_alpha(26 ** 2 + 26 - 1 , 2 ), 'ZZ', 'Largest return value for two letters');
+is( _num_to_alpha(26 ** 2 + 26 , 2 ), undef); # AAA
+
+is( _num_to_alpha(26 ** 3 + 26 ** 2 + 26 - 1 , 3 ), 'ZZZ', 'Largest return value for three letters');
+is( _num_to_alpha(26 ** 3 + 26 ** 2 + 26 , 3 ), undef); # AAAA
+
+done_testing();
diff --git a/gnu/usr.bin/perl/t/test_pl/tempfile.t b/gnu/usr.bin/perl/t/test_pl/tempfile.t
new file mode 100644
index 00000000000..51937c4ad6d
--- /dev/null
+++ b/gnu/usr.bin/perl/t/test_pl/tempfile.t
@@ -0,0 +1,60 @@
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ require './test.pl';
+}
+use strict;
+
+my $prefix = 'tmp'.$$;
+
+sub skip_files{
+ my($skip,$to,$next) = @_;
+ my($last,$check);
+ my $cmp = $prefix . $to;
+
+ for( 1..$skip ){
+ $check = tempfile();
+ $last = $_;
+ if( $check eq $cmp && $_ != $skip ){
+ # let the next test pass
+ last;
+ }
+ }
+
+ my $common_mess = "skip $skip filenames to $to so that the next one will end with $next";
+ if( $last == $skip ){
+ if( $check eq $cmp ){
+ pass( $common_mess );
+ }else{
+ my($alpha) = $check =~ /\Atmp\d+([A-Z][A-Z]?)\Z/;
+ fail( $common_mess, "only skipped to $alpha" )
+ }
+ }else{
+ fail( $common_mess, "only skipped $last files" );
+ }
+}
+
+note("skipping the first filename because it is taken for use by _fresh_perl()");
+
+is( tempfile(), "${prefix}B");
+is( tempfile(), "${prefix}C");
+
+skip_files(22,'Y','Z');
+
+is( tempfile(), "${prefix}Z", 'Last single letter filename');
+is( tempfile(), "${prefix}AA", 'First double letter filename');
+
+skip_files(24,'AY','AZ');
+
+is( tempfile(), "${prefix}AZ");
+is( tempfile(), "${prefix}BA");
+
+skip_files(26 * 24 + 24,'ZY','ZZ');
+
+is( tempfile(), "${prefix}ZZ", 'Last available filename');
+ok( !eval{tempfile()}, 'Should bail after Last available filename' );
+my $err = "$@";
+like( $err, qr{^Can't find temporary file name starting}, 'check error string' );
+
+done_testing();
diff --git a/gnu/usr.bin/perl/t/uni/case.pl b/gnu/usr.bin/perl/t/uni/case.pl
index 8bd115b4792..08df6706db9 100644
--- a/gnu/usr.bin/perl/t/uni/case.pl
+++ b/gnu/usr.bin/perl/t/uni/case.pl
@@ -1,11 +1,16 @@
require "test.pl";
+use strict;
+use warnings;
sub unidump {
join " ", map { sprintf "%04X", $_ } unpack "U*", $_[0];
}
sub casetest {
- my ($already_run, $base, $spec, @funcs) = @_;
+ my ($already_run, $base, @funcs) = @_;
+
+ my %spec;
+
# For each provided function run it, and run a version with some extra
# characters afterwards. Use a recycling symbol, as it doesn't change case.
# $already_run is the number of extra tests the caller has run before this
@@ -20,18 +25,33 @@ sub casetest {
},
)} @funcs;
- my $file = "../lib/unicore/To/$base.pl";
- my $simple = do $file or die $@;
+ use Unicode::UCD 'prop_invmap';
+
+ # Get the case mappings
+ my ($invlist_ref, $invmap_ref, undef, $default) = prop_invmap($base);
my %simple;
- for my $i (split(/\n/, $simple)) {
- my ($k, $v) = split(' ', $i);
-
- # Add the simple mapping to the simples test list, except the input
- # may include code points that the specials override, so don't add
- # those to the test list. The specials keys are the code points,
- # encoded in utf8,, but without the utf8 flag on, so pack with C0.
- $simple{$k} = $v unless exists $spec->{pack("C0U", hex $k)};
+
+ for my $i (0 .. @$invlist_ref - 1 - 1) {
+ next if $invmap_ref->[$i] == $default;
+
+ # Add simple mappings to the simples test list
+ if (! ref $invmap_ref->[$i]) {
+
+ # The returned map needs to have adjustments made. Each
+ # subsequent element of the range requires adjustment of +1 from
+ # the previous element
+ my $adjust = 0;
+ for my $k ($invlist_ref->[$i] .. $invlist_ref->[$i+1] - 1) {
+ $simple{$k} = $invmap_ref->[$i] + $adjust++;
+ }
+ }
+ else { # The return is a list of the characters mapped-to.
+ # prop_invmap() guarantees a single element in the range in
+ # this case, so no adjustments are needed.
+ $spec{$invlist_ref->[$i]} = pack "U0U*" , @{$invmap_ref->[$i]};
+ }
}
+
my %seen;
for my $i (sort keys %simple) {
@@ -39,17 +59,12 @@ sub casetest {
}
print "# ", scalar keys %simple, " simple mappings\n";
- my $both;
-
- for my $i (sort keys %$spec) {
+ for my $i (sort keys %spec) {
if (++$seen{$i} == 2) {
warn sprintf "$base: $i seen twice\n";
- $both++;
}
}
- print "# ", scalar keys %$spec, " special mappings\n";
-
- exit(1) if $both;
+ print "# ", scalar keys %spec, " special mappings\n";
my %none;
for my $i (map { ord } split //,
@@ -62,101 +77,43 @@ sub casetest {
my $tests =
$already_run +
((scalar keys %simple) +
- (scalar keys %$spec) +
+ (scalar keys %spec) +
(scalar keys %none)) * @funcs;
my $test = $already_run + 1;
for my $i (sort keys %simple) {
my $w = $simple{$i};
- my $c = pack "U0U", hex $i;
+ my $c = pack "U0U", $i;
foreach my $func (@funcs) {
my $d = $func->($c);
my $e = unidump($d);
- print $d eq pack("U0U", hex $simple{$i}) ?
- "ok $test # $i -> $w\n" : "not ok $test # $i -> $e ($w)\n";
- $test++;
+ is( $d, pack("U0U", $simple{$i}), "$i -> $e ($w)" );
}
}
- for my $i (sort keys %$spec) {
- my $w = unidump($spec->{$i});
- if (ord('A') == 193 && $i eq "\x8A\x73") {
- $w = '0178'; # It's a Latin small Y with diaeresis and not a Latin small letter sharp 's'.
- }
- my $u = unpack "C0U", $i;
- my $h = sprintf "%04X", $u;
- my $c = chr($u); $c .= chr(0x100); chop $c;
+ for my $i (sort keys %spec) {
+ my $w = unidump($spec{$i});
+ my $h = sprintf "%04X", $i;
+ my $c = chr($i); $c .= chr(0x100); chop $c;
foreach my $func (@funcs) {
my $d = $func->($c);
my $e = unidump($d);
- if (ord "A" == 193) { # EBCDIC
- # We need to a little bit of remapping.
- #
- # For example, in titlecase (ucfirst) mapping
- # of U+0149 the Unicode mapping is U+02BC U+004E.
- # The 4E is N, which in EBCDIC is 2B--
- # and the ucfirst() does that right.
- # The problem is that our reference
- # data is in Unicode code points.
- #
- # The Right Way here would be to use, say,
- # Encode, to remap the less-than 0x100 code points,
- # but let's try to be Encode-independent here.
- #
- # These are the titlecase exceptions:
- #
- # Unicode Unicode+EBCDIC
- #
- # 0149 -> 02BC 004E (02BC 002B)
- # 01F0 -> 004A 030C (00A2 030C)
- # 1E96 -> 0048 0331 (00E7 0331)
- # 1E97 -> 0054 0308 (00E8 0308)
- # 1E98 -> 0057 030A (00EF 030A)
- # 1E99 -> 0059 030A (00DF 030A)
- # 1E9A -> 0041 02BE (00A0 02BE)
- #
- # The uppercase exceptions are identical.
- #
- # The lowercase has one more:
- #
- # Unicode Unicode+EBCDIC
- #
- # 0130 -> 0069 0307 (00D1 0307)
- #
- if ($h =~ /^(0130|0149|01F0|1E96|1E97|1E98|1E99|1E9A)$/) {
- $e =~ s/004E/002B/; # N
- $e =~ s/004A/00A2/; # J
- $e =~ s/0048/00E7/; # H
- $e =~ s/0054/00E8/; # T
- $e =~ s/0057/00EF/; # W
- $e =~ s/0059/00DF/; # Y
- $e =~ s/0041/00A0/; # A
- $e =~ s/0069/00D1/; # i
- }
- # We have to map the output, not the input, because
- # pack/unpack U has been EBCDICified, too, it would
- # just undo our remapping.
- }
- print $w eq $e ?
- "ok $test # $i -> $w\n" : "not ok $test # $h -> $e ($w)\n";
- $test++;
+ is( $w, $e, "$h -> $e ($w)" );
}
}
for my $i (sort { $a <=> $b } keys %none) {
+ my $c = pack "U0U", $i;
my $w = $i = sprintf "%04X", $i;
- my $c = pack "U0U", hex $i;
foreach my $func (@funcs) {
my $d = $func->($c);
my $e = unidump($d);
- print $d eq $c ?
- "ok $test # $i -> $w\n" : "not ok $test # $i -> $e ($w)\n";
- $test++;
+ is( $d, $c, "$i -> $e ($w)" );
}
}
- print "1..$tests\n";
+ done_testing();
}
1;
diff --git a/gnu/usr.bin/perl/t/uni/chr.t b/gnu/usr.bin/perl/t/uni/chr.t
index 33283e779a8..9445d32a7ba 100644
--- a/gnu/usr.bin/perl/t/uni/chr.t
+++ b/gnu/usr.bin/perl/t/uni/chr.t
@@ -8,7 +8,8 @@ BEGIN {
}
use strict;
-plan (tests => 6);
+plan (tests => 8);
+no warnings 'deprecated';
use encoding 'johab';
ok(chr(0x7f) eq "\x7f");
@@ -19,4 +20,13 @@ for my $i (127, 128, 255) {
ok(chr($i) eq pack('C', $i));
}
+# [perl #83048]
+{
+ my $w;
+ local $SIG{__WARN__} = sub { $w .= $_[0] };
+ my $chr = chr(-1);
+ is($chr, "\x{fffd}", "invalid values become REPLACEMENT CHARACTER");
+ like($w, qr/^Invalid negative number \(-1\) in chr at /, "with a warning");
+}
+
__END__
diff --git a/gnu/usr.bin/perl/t/uni/greek.t b/gnu/usr.bin/perl/t/uni/greek.t
index 1737a679fa4..5326ab94ad7 100644
--- a/gnu/usr.bin/perl/t/uni/greek.t
+++ b/gnu/usr.bin/perl/t/uni/greek.t
@@ -9,6 +9,7 @@ BEGIN {
plan tests => 72;
+no warnings 'deprecated';
use encoding "greek"; # iso 8859-7
# U+0391, \xC1, \301, GREEK CAPITAL LETTER ALPHA
diff --git a/gnu/usr.bin/perl/t/uni/labels.t b/gnu/usr.bin/perl/t/uni/labels.t
index 3d7d476ae95..3fa9d38c216 100644
--- a/gnu/usr.bin/perl/t/uni/labels.t
+++ b/gnu/usr.bin/perl/t/uni/labels.t
@@ -15,7 +15,7 @@ use feature qw 'unicode_strings evalbytes';
use charnames qw( :full );
-plan(9);
+plan(10);
LABEL: {
pass("Sanity check, UTF-8 labels don't throw a syntax error.");
@@ -54,11 +54,13 @@ SKIP: {
like $@, qr/Label not found for "next ï¼¥" at/u, "next's error is UTF-8 clean";
}
-my $d = 4;
+my $d = 2;
LÃBEL: {
+ my $e = $@;
my $prog = "redo L\N{LATIN CAPITAL LETTER A WITH ACUTE}BEL";
- if ($d % 2) {
+ if ($d == 1) {
+ is $e, '', "redo UTF8 works";
utf8::downgrade($prog);
}
if ($d--) {
@@ -68,8 +70,8 @@ LÃBEL: {
}
}
-is $@, '', "redo to downgradeable labels works";
-is $d, -1, "Latin-1 labels reachable regardless of UTF-8ness";
+like $@, qr/Unrecognized character/, "redo to downgradeable labels";
+is $d, 0, "Latin-1 labels are reachable";
{
no warnings;
diff --git a/gnu/usr.bin/perl/t/uni/latin2.t b/gnu/usr.bin/perl/t/uni/latin2.t
index 152747139ed..6e7d980aec3 100644
--- a/gnu/usr.bin/perl/t/uni/latin2.t
+++ b/gnu/usr.bin/perl/t/uni/latin2.t
@@ -9,6 +9,7 @@ BEGIN {
plan tests => 94;
+no warnings 'deprecated';
use encoding "latin2"; # iso 8859-2
# U+00C1, \xC1, \301, LATIN CAPITAL LETTER A WITH ACUTE
diff --git a/gnu/usr.bin/perl/t/uni/lower.t b/gnu/usr.bin/perl/t/uni/lower.t
index 5ab4cdd74e1..5b706af0d84 100644
--- a/gnu/usr.bin/perl/t/uni/lower.t
+++ b/gnu/usr.bin/perl/t/uni/lower.t
@@ -5,6 +5,6 @@ BEGIN {
}
casetest(0, # No extra tests run here,
- "Lower", \%utf8::ToSpecLower,
+ "Lowercase_Mapping",
sub { lc $_[0] }, sub { my $a = ""; lc ($_[0] . $a) },
sub { lcfirst $_[0] }, sub { my $a = ""; lcfirst ($_[0] . $a) });
diff --git a/gnu/usr.bin/perl/t/uni/parser.t b/gnu/usr.bin/perl/t/uni/parser.t
index 79e4612c65d..009ad357386 100644
--- a/gnu/usr.bin/perl/t/uni/parser.t
+++ b/gnu/usr.bin/perl/t/uni/parser.t
@@ -7,7 +7,7 @@ BEGIN {
require './test.pl';
}
-plan (tests => 47);
+plan (tests => 48);
use utf8;
use open qw( :utf8 :std );
@@ -145,3 +145,10 @@ eval q{ Fï½ï½::$bar };
like( $@, qr/Bad name after Fï½ï½::/, 'Bad name after Fï½ï½::' );
eval q{ Fï½ï½''bar };
like( $@, qr/Bad name after Fï½ï½'/, 'Bad name after Fï½ï½\'' );
+
+{
+ no warnings 'utf8';
+ my $malformed_to_be = "\x{c0}\x{a0}"; # Overlong sequence
+ CORE::evalbytes "use charnames ':full'; use utf8; my \$x = \"\\N{abc$malformed_to_be}\"";
+ like( $@, qr/Malformed UTF-8 character immediately after '\\N\{abc' at .* within string/, 'Malformed UTF-8 input to \N{}');
+}
diff --git a/gnu/usr.bin/perl/t/uni/readline.t b/gnu/usr.bin/perl/t/uni/readline.t
index ef2106dfd21..495172ca98c 100644
--- a/gnu/usr.bin/perl/t/uni/readline.t
+++ b/gnu/usr.bin/perl/t/uni/readline.t
@@ -21,7 +21,7 @@ like($@, 'Modification of a read-only value attempted', '[perl #19566]');
my $file = tempfile();
open Ạ,'+>',$file; $a = 3;
is($a .= <Ạ>, 3, '#21628 - $a .= <A> , A eof');
- close A; $a = 4;
+ close Ạ; $a = 4;
is($a .= <Ạ>, 4, '#21628 - $a .= <A> , A closed');
}
diff --git a/gnu/usr.bin/perl/t/uni/stash.t b/gnu/usr.bin/perl/t/uni/stash.t
index 168b93c8742..7d24e5178a2 100644
--- a/gnu/usr.bin/perl/t/uni/stash.t
+++ b/gnu/usr.bin/perl/t/uni/stash.t
@@ -266,11 +266,8 @@ plan( tests => 58 );
'ref() returns the same thing when an object’s stash is moved';
::like "$obj", qr "^rìle=ARRAY\(0x[\da-f]+\)\z",
'objects stringify the same way when their stashes are moved';
- {
- local $::TODO = $Config{useithreads} ? "fails under threads" : undef;
- ::is eval '__PACKAGE__', 'rìle',
+ ::is eval '__PACKAGE__', 'rìle',
'__PACKAGE__ returns the same when the current stash is moved';
- }
# Now detach it completely from the symtab, making it effect-
# ively anonymous
@@ -283,11 +280,8 @@ plan( tests => 58 );
'ref() returns the same thing when an object’s stash is detached';
::like "$obj", qr "^rìle=ARRAY\(0x[\da-f]+\)\z",
'objects stringify the same way when their stashes are detached';
- {
- local $::TODO = $Config{useithreads} ? "fails under threads" : undef;
- ::is eval '__PACKAGE__', 'rìle',
+ ::is eval '__PACKAGE__', 'rìle',
'__PACKAGE__ returns the same when the current stash is detached';
- }
}
# Setting the name during undef %stash:: should have no effect.
diff --git a/gnu/usr.bin/perl/t/uni/title.t b/gnu/usr.bin/perl/t/uni/title.t
index 3d2eb3e2519..2d6dcb77ef3 100644
--- a/gnu/usr.bin/perl/t/uni/title.t
+++ b/gnu/usr.bin/perl/t/uni/title.t
@@ -5,5 +5,5 @@ BEGIN {
}
casetest(0, # No extra tests run here,
- "Title", \%utf8::ToSpecTitle, sub { ucfirst $_[0] },
+ "Titlecase_Mapping", sub { ucfirst $_[0] },
sub { my $a = ""; ucfirst ($_[0] . $a) });
diff --git a/gnu/usr.bin/perl/t/uni/universal.t b/gnu/usr.bin/perl/t/uni/universal.t
index 8f158e90b81..626c30f8576 100644
--- a/gnu/usr.bin/perl/t/uni/universal.t
+++ b/gnu/usr.bin/perl/t/uni/universal.t
@@ -119,6 +119,7 @@ ok $a->can("slèèp");
{
package Pìckùp;
+ no warnings "deprecated";
use UNIVERSAL qw( isa can VERSION );
::ok isa "Pìckùp", UNIVERSAL;
diff --git a/gnu/usr.bin/perl/t/uni/upper.t b/gnu/usr.bin/perl/t/uni/upper.t
index b343a1fc20a..315680c11b6 100644
--- a/gnu/usr.bin/perl/t/uni/upper.t
+++ b/gnu/usr.bin/perl/t/uni/upper.t
@@ -7,6 +7,6 @@ BEGIN {
is(uc("\x{3B1}\x{345}\x{301}"), "\x{391}\x{301}\x{399}", 'Verify moves YPOGEGRAMMENI');
casetest( 1, # extra tests already run
- "Upper", \%utf8::ToSpecUpper,
+ "Uppercase_Mapping",
sub { uc $_[0] },
sub { my $a = ""; uc ($_[0] . $a) });
diff --git a/gnu/usr.bin/perl/t/uni/variables.t b/gnu/usr.bin/perl/t/uni/variables.t
new file mode 100644
index 00000000000..cee681fd08a
--- /dev/null
+++ b/gnu/usr.bin/perl/t/uni/variables.t
@@ -0,0 +1,229 @@
+#!./perl
+
+# Checks if the parser behaves correctly in edge case
+# (including weird syntax errors)
+
+BEGIN {
+ require './test.pl';
+}
+
+use 5.016;
+use utf8;
+use open qw( :utf8 :std );
+no warnings qw(misc reserved);
+
+plan (tests => 65869);
+
+# ${single:colon} should not be valid syntax
+{
+ no strict;
+
+ local $@;
+ eval "\${\x{30cd}single:\x{30cd}colon} = 1";
+ like($@,
+ qr/syntax error .* near "\x{30cd}single:/,
+ '${\x{30cd}single:\x{30cd}colon} should not be valid syntax'
+ );
+
+ local $@;
+ no utf8;
+ evalbytes '${single:colon} = 1';
+ like($@,
+ qr/syntax error .* near "single:/,
+ '...same with ${single:colon}'
+ );
+}
+
+# ${yadda'etc} and ${yadda::etc} should both work under strict
+{
+ local $@;
+ eval q<use strict; ${flark::fleem}>;
+ is($@, '', q<${package::var} works>);
+
+ local $@;
+ eval q<use strict; ${fleem'flark}>;
+ is($@, '', q<...as does ${package'var}>);
+}
+
+# The first character in ${...} should respect the rules
+{
+ local $@;
+ use utf8;
+ eval '${☭asd} = 1';
+ like($@, qr/\QUnrecognized character/, q(the first character in ${...} isn't special))
+}
+
+# Checking that at least some of the special variables work
+for my $v (qw( ^V ; < > ( ) {^GLOBAL_PHASE} ^W _ 1 4 0 [ ] ! @ / \ = )) {
+ local $@;
+ evalbytes "\$$v;";
+ is $@, '', "No syntax error for \$$v";
+
+ local $@;
+ eval "use utf8; \$$v;";
+ is $@, '', "No syntax error for \$$v under use utf8";
+}
+
+# Checking if the Latin-1 range behaves as expected, and that the behavior is the
+# same whenever under strict or not.
+for ( 0x80..0xff ) {
+ no warnings 'closure';
+ my $chr = chr;
+ my $esc = sprintf("%X", ord $chr);
+ utf8::downgrade($chr);
+ if ($chr !~ /\p{XIDS}/u) {
+ is evalbytes "no strict; \$$chr = 10",
+ 10,
+ sprintf("\\x%02x, part of the latin-1 range, is legal as a length-1 variable", $_);
+
+ utf8::upgrade($chr);
+ local $@;
+ eval "no strict; use utf8; \$$chr = 1";
+ like $@,
+ qr/\QUnrecognized character \x{\E\L$esc/,
+ sprintf("..but is illegal as a length-1 variable under use utf8", $_);
+ }
+ else {
+ {
+ no utf8;
+ local $@;
+ evalbytes "no strict; \$$chr = 1";
+ is($@, '', sprintf("\\x%02x, =~ \\p{XIDS}, latin-1, no utf8, no strict, is a valid length-1 variable", $_));
+
+ local $@;
+ evalbytes "use strict; \$$chr = 1";
+ is($@,
+ '',
+ sprintf("\\x%02x under no utf8 does not have to be required under strict, even though it matches XIDS", $_)
+ );
+
+ local $@;
+ evalbytes "\$a$chr = 1";
+ like($@,
+ qr/Unrecognized character /,
+ sprintf("...but under no utf8, it's not allowed in two-or-more character variables")
+ );
+
+ local $@;
+ evalbytes "\$a$chr = 1";
+ like($@,
+ qr/Unrecognized character /,
+ sprintf("...but under no utf8, it's not allowed in two-or-more character variables")
+ );
+ }
+ {
+ use utf8;
+ my $u = $chr;
+ utf8::upgrade($u);
+ local $@;
+ eval "no strict; \$$u = 1";
+ is($@, '', sprintf("\\x%02x, =~ \\p{XIDS}, UTF-8, use utf8, no strict, is a valid length-1 variable", $_));
+
+ local $@;
+ eval "use strict; \$$u = 1";
+ like($@,
+ qr/Global symbol "\$$u" requires explicit package name/,
+ sprintf("\\x%02x under utf8 has to be required under strict", $_)
+ );
+ }
+ }
+}
+
+{
+ use utf8;
+ my $ret = eval "my \$c\x{327} = 100; \$c\x{327}"; # c + cedilla
+ is($@, '', "ASCII character + combining character works as a variable name");
+ is($ret, 100, "...and returns the correct value");
+}
+
+# From Tom Christiansen's 'highly illegal variable names are now accidentally legal' mail
+for my $chr (
+ "\N{EM DASH}", "\x{F8FF}", "\N{POUND SIGN}", "\N{SOFT HYPHEN}",
+ "\N{THIN SPACE}", "\x{11_1111}", "\x{DC00}", "\N{COMBINING DIAERESIS}",
+ "\N{COMBINING ENCLOSING CIRCLE BACKSLASH}",
+ )
+{
+ no warnings 'non_unicode';
+ my $esc = sprintf("%x", ord $chr);
+ local $@;
+ eval "\$$chr = 1; \$$chr";
+ like($@,
+ qr/\QUnrecognized character \x{$esc};/,
+ "\\x{$esc} is illegal for a length-one identifier"
+ );
+}
+
+for my $i (0x100..0xffff) {
+ my $chr = chr($i);
+ my $esc = sprintf("%x", $i);
+ local $@;
+ eval "my \$$chr = q<test>; \$$chr;";
+ if ( $chr =~ /^\p{_Perl_IDStart}$/ ) {
+ is($@, '', sprintf("\\x{%04x} is XIDS, works as a length-1 variable", $i));
+ }
+ else {
+ like($@,
+ qr/\QUnrecognized character \x{$esc};/,
+ "\\x{$esc} isn't XIDS, illegal as a length-1 variable",
+ )
+ }
+}
+
+{
+ # Bleadperl v5.17.9-109-g3283393 breaks ZEFRAM/Module-Runtime-0.013.tar.gz
+ # https://rt.perl.org/rt3/Public/Bug/Display.html?id=117101
+ no strict;
+
+ local $@;
+ eval <<'EOP';
+ q{$} =~ /(.)/;
+ is($$1, $$, q{$$1 parses as ${$1}});
+
+ $doof = "test";
+ $test = "Got here";
+ $::{+$$} = *doof;
+
+ is( $$$$1, $test, q{$$$$1 parses as ${${${$1}}}} );
+EOP
+ is($@, '', q{$$1 parses correctly});
+
+ for my $chr ( q{@}, "\N{U+FF10}", "\N{U+0300}" ) {
+ my $esc = sprintf("\\x{%x}", ord $chr);
+ local $@;
+ eval <<" EOP";
+ \$$chr = q{\$};
+ \$\$$chr;
+ EOP
+
+ like($@,
+ qr/syntax error|Unrecognized character/,
+ qq{\$\$$esc is a syntax error}
+ );
+ }
+}
+
+{
+ # bleadperl v5.17.9-109-g3283393 breaks JEREMY/File-Signature-1.009.tar.gz
+ # https://rt.perl.org/rt3/Ticket/Display.html?id=117145
+ local $@;
+ my $var = 10;
+ eval ' ${ var }';
+
+ is(
+ $@,
+ '',
+ '${ var } works under strict'
+ );
+
+ {
+ no strict;
+ for my $var ( '$', "\7LOBAL_PHASE", "^GLOBAL_PHASE", "^V" ) {
+ eval "\${ $var}";
+ is($@, '', "\${ $var} works" );
+ eval "\${$var }";
+ is($@, '', "\${$var } works" );
+ eval "\${ $var }";
+ is($@, '', "\${ $var } works" );
+ }
+ }
+}
diff --git a/gnu/usr.bin/perl/t/win32/fs.t b/gnu/usr.bin/perl/t/win32/fs.t
new file mode 100644
index 00000000000..35d3617edcc
--- /dev/null
+++ b/gnu/usr.bin/perl/t/win32/fs.t
@@ -0,0 +1,28 @@
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require "./test.pl";
+ eval 'use Errno';
+ die $@ if $@ and !is_miniperl();
+}
+
+plan tests => 4;
+
+my $tmpfile1 = tempfile();
+my $tmpfile2 = tempfile();
+
+# RT #112272
+ok(!link($tmpfile1, $tmpfile2),
+ "Cannot link to unknown file");
+is(0+$!, &Errno::ENOENT, "check errno is ENOENT");
+open my $fh, ">", $tmpfile1
+ or skip("Cannot create test link src", 2);
+close $fh;
+open my $fh, ">", $tmpfile2
+ or skip("Cannot create test link target", 2);
+close $fh;
+ok(!link($tmpfile1, $tmpfile2),
+ "Cannot link to existing file");
+is(0+$!, &Errno::EEXIST, "check for EEXIST");
diff --git a/gnu/usr.bin/perl/t/win32/runenv.t b/gnu/usr.bin/perl/t/win32/runenv.t
index a833c1a0f68..b2d78959b0a 100644
--- a/gnu/usr.bin/perl/t/win32/runenv.t
+++ b/gnu/usr.bin/perl/t/win32/runenv.t
@@ -73,8 +73,8 @@ sub try {
my ($env, $args, $stdout, $stderr) = @_;
my ($actual_stdout, $actual_stderr) = runperl_and_capture($env, $args);
local $::Level = $::Level + 1;
- is ($stdout, $actual_stdout);
- is ($stderr, $actual_stderr);
+ is $actual_stdout, $stdout;
+ is $actual_stderr, $stderr;
}
# PERL5OPT Command-line options (switches). Switches in
diff --git a/gnu/usr.bin/perl/t/x2p/s2p.t b/gnu/usr.bin/perl/t/x2p/s2p.t
index 9707a8b3672..0a0716da0c2 100644
--- a/gnu/usr.bin/perl/t/x2p/s2p.t
+++ b/gnu/usr.bin/perl/t/x2p/s2p.t
@@ -627,6 +627,19 @@ s/a\{3\}/a rep 3/
[TheEnd]
},
+### s2 ### RT #115156
+'s2' => {
+ todo => 'RT #115156',
+ script => 's/1*$/x/g',
+ input => 'bins',
+ expect => <<'[TheEnd]',
+0x
+x
+1000x
+1000x
+[TheEnd]
+},
+
### t ###
't' => {
script => join( "\n",
@@ -815,6 +828,8 @@ my $indat = '';
for my $tc ( sort keys %testcase ){
my( $psedres, $s2pres );
+ local $TODO = $testcase{$tc}{todo};
+
# 1st test: run psed
# prepare the script
open( SED, ">$script" ) || goto FAIL_BOTH;
diff --git a/gnu/usr.bin/perl/thread.h b/gnu/usr.bin/perl/thread.h
index 3b84f369f74..03965c8b52f 100644
--- a/gnu/usr.bin/perl/thread.h
+++ b/gnu/usr.bin/perl/thread.h
@@ -40,9 +40,6 @@
# define NEED_PTHREAD_INIT
# define PTHREAD_CREATE_JOINABLE (1)
# endif
-# ifdef __OPEN_VM
-# define pthread_addr_t void *
-# endif
# ifdef OEMVS
# define pthread_addr_t void *
# define pthread_create(t,a,s,d) pthread_create(t,&(a),s,d)
@@ -65,7 +62,7 @@
# define pthread_mutexattr_init(a) pthread_mutexattr_create(a)
# define pthread_mutexattr_settype(a,t) pthread_mutexattr_setkind_np(a,t)
# endif
-# if defined(DJGPP) || defined(__OPEN_VM) || defined(OEMVS)
+# if defined(DJGPP) || defined(OEMVS)
# define PTHREAD_ATTR_SETDETACHSTATE(a,s) pthread_attr_setdetachstate(a,&(s))
# define YIELD pthread_yield(NULL)
# endif
@@ -441,8 +438,8 @@
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/time64.c b/gnu/usr.bin/perl/time64.c
index 9faab1046ee..8cbfa7c1700 100644
--- a/gnu/usr.bin/perl/time64.c
+++ b/gnu/usr.bin/perl/time64.c
@@ -269,41 +269,40 @@ static int S_safe_year(Year year)
static void S_copy_little_tm_to_big_TM(const struct tm *src, struct TM *dest) {
- if( src == NULL ) {
- memset(dest, 0, sizeof(*dest));
- }
- else {
-# ifdef USE_TM64
- dest->tm_sec = src->tm_sec;
- dest->tm_min = src->tm_min;
- dest->tm_hour = src->tm_hour;
- dest->tm_mday = src->tm_mday;
- dest->tm_mon = src->tm_mon;
- dest->tm_year = (Year)src->tm_year;
- dest->tm_wday = src->tm_wday;
- dest->tm_yday = src->tm_yday;
- dest->tm_isdst = src->tm_isdst;
-
-# ifdef HAS_TM_TM_GMTOFF
- dest->tm_gmtoff = src->tm_gmtoff;
-# endif
-
-# ifdef HAS_TM_TM_ZONE
- dest->tm_zone = src->tm_zone;
-# endif
-
-# else
- /* They're the same type */
- memcpy(dest, src, sizeof(*dest));
-# endif
- }
+ assert(src);
+ assert(dest);
+#ifdef USE_TM64
+ dest->tm_sec = src->tm_sec;
+ dest->tm_min = src->tm_min;
+ dest->tm_hour = src->tm_hour;
+ dest->tm_mday = src->tm_mday;
+ dest->tm_mon = src->tm_mon;
+ dest->tm_year = (Year)src->tm_year;
+ dest->tm_wday = src->tm_wday;
+ dest->tm_yday = src->tm_yday;
+ dest->tm_isdst = src->tm_isdst;
+
+# ifdef HAS_TM_TM_GMTOFF
+ dest->tm_gmtoff = src->tm_gmtoff;
+# endif
+
+# ifdef HAS_TM_TM_ZONE
+ dest->tm_zone = src->tm_zone;
+# endif
+
+#else
+ /* They're the same type */
+ memcpy(dest, src, sizeof(*dest));
+#endif
}
#ifndef HAS_LOCALTIME_R
/* Simulate localtime_r() to the best of our ability */
static struct tm * S_localtime_r(const time_t *clock, struct tm *result) {
+#ifdef VMS
dTHX; /* in case the following is defined as Perl_my_localtime(aTHX_ ...) */
+#endif
const struct tm *static_result = localtime(clock);
assert(result != NULL);
diff --git a/gnu/usr.bin/perl/unicode_constants.h b/gnu/usr.bin/perl/unicode_constants.h
new file mode 100644
index 00000000000..19f3acd33f9
--- /dev/null
+++ b/gnu/usr.bin/perl/unicode_constants.h
@@ -0,0 +1,44 @@
+/* -*- buffer-read-only: t -*-
+ * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+ * This file is built by regen/unicode_constants.pl from Unicode data.
+ * Any changes made here will be lost!
+ */
+
+
+#ifndef H_UNICODE_CONSTANTS /* Guard against nested #includes */
+#define H_UNICODE_CONSTANTS 1
+
+/* This file contains #defines for various Unicode code points. The values
+ * the macros expand to are the native Unicode code point, or all or portions
+ * of the UTF-8 encoding for the code point. In the former case, the macro
+ * name has the suffix "_NATIVE"; otherwise, the suffix "_UTF8".
+ *
+ * The macros that have the suffix "_UTF8" may have further suffixes, as
+ * follows:
+ * "_FIRST_BYTE" if the value is just the first byte of the UTF-8
+ * representation; the value will be a numeric constant.
+ * "_TAIL" if instead it represents all but the first byte. This, and
+ * with no additional suffix are both string constants */
+
+
+#define COMBINING_GRAVE_ACCENT_UTF8 "\xCC\x80" /* U+0300 */
+#define COMBINING_ACUTE_ACCENT_UTF8 "\xCC\x81" /* U+0301 */
+#define COMBINING_DIAERESIS_UTF8 "\xCC\x88" /* U+0308 */
+
+#define GREEK_SMALL_LETTER_IOTA_UTF8 "\xCE\xB9" /* U+03B9 */
+
+#define GREEK_SMALL_LETTER_UPSILON_UTF8 "\xCF\x85" /* U+03C5 */
+
+#define HYPHEN_UTF8 "\xE2\x80\x90" /* U+2010 */
+#define FIRST_SURROGATE_UTF8_FIRST_BYTE 0xED /* U+D800 */
+
+#define DEL_NATIVE 0x7F /* U+007F */
+#define LATIN_SMALL_LETTER_SHARP_S_NATIVE 0xDF /* U+00DF */
+#define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE_NATIVE 0xE5 /* U+00E5 */
+#define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE_NATIVE 0xC5 /* U+00C5 */
+#define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE 0xFF /* U+00FF */
+#define MICRO_SIGN_NATIVE 0xB5 /* U+00B5 */
+
+#endif /* H_UNICODE_CONSTANTS */
+
+/* ex: set ro: */
diff --git a/gnu/usr.bin/perl/utf8.c b/gnu/usr.bin/perl/utf8.c
index 83d239735e2..2228778d2b9 100644
--- a/gnu/usr.bin/perl/utf8.c
+++ b/gnu/usr.bin/perl/utf8.c
@@ -31,11 +31,13 @@
#include "EXTERN.h"
#define PERL_IN_UTF8_C
#include "perl.h"
+#include "inline_invlist.c"
#ifndef EBCDIC
/* Separate prototypes needed because in ASCII systems these are
* usually macros but they still are compiled as code, too. */
PERL_CALLCONV UV Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags);
+PERL_CALLCONV UV Perl_valid_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen);
PERL_CALLCONV U8* Perl_uvchr_to_utf8(pTHX_ U8 *d, UV uv);
#endif
@@ -88,7 +90,7 @@ Perl_is_ascii_string(const U8 *s, STRLEN len)
/*
=for apidoc uvuni_to_utf8_flags
-Adds the UTF-8 representation of the code point C<uv> to the end
+Adds the UTF-8 representation of the Unicode code point C<uv> to the end
of the string C<d>; C<d> should have at least C<UTF8_MAXBYTES+1> free
bytes available. The return value is the pointer to the byte after the
end of the new character. In other words,
@@ -107,6 +109,10 @@ This is the recommended Unicode-aware way of saying
*(d++) = uv;
+where uv is a code point expressed in Latin-1 or above, not the platform's
+native character set. B<Almost all code should instead use L</uvchr_to_utf8>
+or L</uvchr_to_utf8_flags>>.
+
This function will convert to UTF-8 (and not warn) even code points that aren't
legal Unicode or are problematic, unless C<flags> contains one or more of the
following flags:
@@ -117,8 +123,9 @@ UNICODE_DISALLOW_SURROGATE is set, the function will fail and return NULL.
If both flags are set, the function will both warn and return NULL.
The UNICODE_WARN_NONCHAR and UNICODE_DISALLOW_NONCHAR flags correspondingly
-affect how the function handles a Unicode non-character. And, likewise for the
-UNICODE_WARN_SUPER and UNICODE_DISALLOW_SUPER flags, and code points that are
+affect how the function handles a Unicode non-character. And likewise, the
+UNICODE_WARN_SUPER and UNICODE_DISALLOW_SUPER flags, affect the handling of
+code points that are
above the Unicode maximum of 0x10FFFF. Code points above 0x7FFF_FFFF (which are
even less portable) can be warned and/or disallowed even if other above-Unicode
code points are accepted by the UNICODE_WARN_FE_FF and UNICODE_DISALLOW_FE_FF
@@ -137,7 +144,10 @@ Perl_uvuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags)
{
PERL_ARGS_ASSERT_UVUNI_TO_UTF8_FLAGS;
- if (ckWARN4_d(WARN_UTF8, WARN_SURROGATE, WARN_NON_UNICODE, WARN_NONCHAR)) {
+ /* The first problematic code point is the first surrogate */
+ if (uv >= UNICODE_SURROGATE_FIRST
+ && ckWARN4_d(WARN_UTF8, WARN_SURROGATE, WARN_NON_UNICODE, WARN_NONCHAR))
+ {
if (UNICODE_IS_SURROGATE(uv)) {
if (flags & UNICODE_WARN_SURROGATE) {
Perl_ck_warner_d(aTHX_ packWARN(WARN_SURROGATE),
@@ -253,7 +263,7 @@ Perl_uvuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags)
return d;
}
#endif
-#endif /* Loop style */
+#endif /* Non loop style */
}
/*
@@ -270,11 +280,11 @@ or less you should use the IS_UTF8_CHAR(), for lengths of five or more
you should use the _slow(). In practice this means that the _slow()
will be used very rarely, since the maximum Unicode code point (as of
Unicode 4.1) is U+10FFFF, which encodes in UTF-8 to four bytes. Only
-the "Perl extended UTF-8" (the infamous 'v-strings') will encode into
+the "Perl extended UTF-8" (e.g, the infamous 'v-strings') will encode into
five bytes or more.
=cut */
-STATIC STRLEN
+PERL_STATIC_INLINE STRLEN
S_is_utf8_char_slow(const U8 *s, const STRLEN len)
{
dTHX; /* The function called below requires thread context */
@@ -378,8 +388,6 @@ Perl_is_utf8_string(const U8 *s, STRLEN len)
if (UTF8_IS_INVARIANT(*x)) {
x++;
}
- else if (!UTF8_IS_START(*x))
- return FALSE;
else {
/* ... and call is_utf8_char() only if really needed. */
const STRLEN c = UTF8SKIP(x);
@@ -442,8 +450,6 @@ Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el)
/* Inline the easy bits of is_utf8_char() here for speed... */
if (UTF8_IS_INVARIANT(*x))
next_char_ptr = x + 1;
- else if (!UTF8_IS_START(*x))
- goto out;
else {
/* ... and call is_utf8_char() only if really needed. */
c = UTF8SKIP(x);
@@ -502,7 +508,13 @@ determinable reasonable value.
The UTF8_CHECK_ONLY flag overrides the behavior when a non-allowed (by other
flags) malformation is found. If this flag is set, the routine assumes that
the caller will raise a warning, and this function will silently just set
-C<retlen> to C<-1> and return zero.
+C<retlen> to C<-1> (cast to C<STRLEN>) and return zero.
+
+Note that this API requires disambiguation between successful decoding a NUL
+character, and an error return (unless the UTF8_CHECK_ONLY flag is set), as
+in both cases, 0 is returned. To disambiguate, upon a zero return, see if the
+first byte of C<s> is 0 as well. If so, the input was a NUL; if not, the input
+had an error.
Certain code points are considered problematic. These are Unicode surrogates,
Unicode non-characters, and code points above the Unicode maximum of 0x10FFFF.
@@ -587,7 +599,7 @@ Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
* sequence and process the rest, inappropriately */
/* Zero length strings, if allowed, of necessity are zero */
- if (curlen == 0) {
+ if (UNLIKELY(curlen == 0)) {
if (retlen) {
*retlen = 0;
}
@@ -617,7 +629,7 @@ Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
}
/* A continuation character can't start a valid sequence */
- if (UTF8_IS_CONTINUATION(uv)) {
+ if (UNLIKELY(UTF8_IS_CONTINUATION(uv))) {
if (flags & UTF8_ALLOW_CONTINUATION) {
if (retlen) {
*retlen = 1;
@@ -650,7 +662,7 @@ Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
send = (U8*) s0 + ((expectlen <= curlen) ? expectlen : curlen);
for (s = s0 + 1; s < send; s++) {
- if (UTF8_IS_CONTINUATION(*s)) {
+ if (LIKELY(UTF8_IS_CONTINUATION(*s))) {
#ifndef EBCDIC /* Can't overflow in EBCDIC */
if (uv & UTF_ACCUMULATION_OVERFLOW_MASK) {
@@ -695,7 +707,7 @@ Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
* ones are present. I don't know of any real reason to prefer one over
* the other, except that it seems to me that multiple-byte errors trumps
* errors from a single byte */
- if (unexpected_non_continuation) {
+ if (UNLIKELY(unexpected_non_continuation)) {
if (!(flags & UTF8_ALLOW_NON_CONTINUATION)) {
if (! (flags & UTF8_CHECK_ONLY)) {
if (curlen == 1) {
@@ -716,7 +728,7 @@ Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
*retlen = curlen;
}
}
- else if (curlen < expectlen) {
+ else if (UNLIKELY(curlen < expectlen)) {
if (! (flags & UTF8_ALLOW_SHORT)) {
if (! (flags & UTF8_CHECK_ONLY)) {
sv = sv_2mortal(Perl_newSVpvf(aTHX_ "%s (%d byte%s, need %d, after start byte 0x%02x)", malformed_text, (int)curlen, curlen == 1 ? "" : "s", (int)expectlen, *s0));
@@ -739,6 +751,10 @@ Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
if ((flags & (UTF8_WARN_FE_FF|UTF8_CHECK_ONLY)) == UTF8_WARN_FE_FF
&& ckWARN_d(WARN_UTF8))
{
+ /* This message is deliberately not of the same syntax as the other
+ * messages for malformations, for backwards compatibility in the
+ * unlikely event that code is relying on its precise earlier text
+ */
sv = sv_2mortal(Perl_newSVpvf(aTHX_ "%s Code point beginning with byte 0x%02X is not Unicode, and not portable", malformed_text, *s0));
pack_warn = packWARN(WARN_UTF8);
}
@@ -746,7 +762,7 @@ Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
goto malformed;
}
}
- if (overflowed) {
+ if (UNLIKELY(overflowed)) {
/* If the first byte is FF, it will overflow a 32-bit word. If the
* first byte is FE, it will overflow a signed 32-bit word. The
@@ -788,17 +804,6 @@ Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
goto disallowed;
}
}
- else if (UNICODE_IS_NONCHAR(uv)) {
- if ((flags & (UTF8_WARN_NONCHAR|UTF8_CHECK_ONLY)) == UTF8_WARN_NONCHAR
- && ckWARN2_d(WARN_UTF8, WARN_NONCHAR))
- {
- sv = sv_2mortal(Perl_newSVpvf(aTHX_ "Unicode non-character U+%04"UVXf" is illegal for open interchange", uv));
- pack_warn = packWARN2(WARN_UTF8, WARN_NONCHAR);
- }
- if (flags & UTF8_DISALLOW_NONCHAR) {
- goto disallowed;
- }
- }
else if ((uv > PERL_UNICODE_MAX)) {
if ((flags & (UTF8_WARN_SUPER|UTF8_CHECK_ONLY)) == UTF8_WARN_SUPER
&& ckWARN2_d(WARN_UTF8, WARN_NON_UNICODE))
@@ -810,6 +815,17 @@ Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
goto disallowed;
}
}
+ else if (UNICODE_IS_NONCHAR(uv)) {
+ if ((flags & (UTF8_WARN_NONCHAR|UTF8_CHECK_ONLY)) == UTF8_WARN_NONCHAR
+ && ckWARN2_d(WARN_UTF8, WARN_NONCHAR))
+ {
+ sv = sv_2mortal(Perl_newSVpvf(aTHX_ "Unicode non-character U+%04"UVXf" is illegal for open interchange", uv));
+ pack_warn = packWARN2(WARN_UTF8, WARN_NONCHAR);
+ }
+ if (flags & UTF8_DISALLOW_NONCHAR) {
+ goto disallowed;
+ }
+ }
if (sv) {
outlier_ret = uv;
@@ -890,11 +906,12 @@ C<*retlen> will be set to the length, in bytes, of that character.
If C<s> does not point to a well-formed UTF-8 character and UTF8 warnings are
enabled, zero is returned and C<*retlen> is set (if C<retlen> isn't
-NULL) to -1. If those warnings are off, the computed value if well-defined (or
-the Unicode REPLACEMENT CHARACTER, if not) is silently returned, and C<*retlen>
-is set (if C<retlen> isn't NULL) so that (S<C<s> + C<*retlen>>) is the
-next possible position in C<s> that could begin a non-malformed character.
-See L</utf8n_to_uvuni> for details on when the REPLACEMENT CHARACTER is returned.
+NULL) to -1. If those warnings are off, the computed value, if well-defined
+(or the Unicode REPLACEMENT CHARACTER if not), is silently returned, and
+C<*retlen> is set (if C<retlen> isn't NULL) so that (S<C<s> + C<*retlen>>) is
+the next possible position in C<s> that could begin a non-malformed character.
+See L</utf8n_to_uvuni> for details on when the REPLACEMENT CHARACTER is
+returned.
=cut
*/
@@ -912,16 +929,18 @@ Perl_utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
}
/* Like L</utf8_to_uvchr_buf>(), but should only be called when it is known that
- * there are no malformations in the input UTF-8 string C<s>. Currently, some
- * malformations are checked for, but this checking likely will be removed in
- * the future */
+ * there are no malformations in the input UTF-8 string C<s>. surrogates,
+ * non-character code points, and non-Unicode code points are allowed. A macro
+ * in utf8.h is used to normally avoid this function wrapper */
UV
Perl_valid_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen)
{
+ const UV uv = valid_utf8_to_uvuni(s, retlen);
+
PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR;
- return utf8_to_uvchr_buf(s, s + UTF8_MAXBYTES, retlen);
+ return UNI_TO_NATIVE(uv);
}
/*
@@ -953,7 +972,7 @@ Perl_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen)
{
PERL_ARGS_ASSERT_UTF8_TO_UVCHR;
- return valid_utf8_to_uvchr(s, retlen);
+ return utf8_to_uvchr_buf(s, s + UTF8_MAXBYTES, retlen);
}
/*
@@ -990,16 +1009,39 @@ Perl_utf8_to_uvuni_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
}
/* Like L</utf8_to_uvuni_buf>(), but should only be called when it is known that
- * there are no malformations in the input UTF-8 string C<s>. Currently, some
- * malformations are checked for, but this checking likely will be removed in
- * the future */
+ * there are no malformations in the input UTF-8 string C<s>. Surrogates,
+ * non-character code points, and non-Unicode code points are allowed */
UV
Perl_valid_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
{
+ UV expectlen = UTF8SKIP(s);
+ const U8* send = s + expectlen;
+ UV uv = NATIVE_TO_UTF(*s);
+
PERL_ARGS_ASSERT_VALID_UTF8_TO_UVUNI;
- return utf8_to_uvuni_buf(s, s + UTF8_MAXBYTES, retlen);
+ if (retlen) {
+ *retlen = expectlen;
+ }
+
+ /* An invariant is trivially returned */
+ if (expectlen == 1) {
+ return uv;
+ }
+
+ /* Remove the leading bits that indicate the number of bytes, leaving just
+ * the bits that are part of the value */
+ uv &= UTF_START_MASK(expectlen);
+
+ /* Now, loop through the remaining bytes, accumulating each into the
+ * working total as we go. (I khw tried unrolling the loop for up to 4
+ * bytes, but there was no performance improvement) */
+ for (++s; s < send; s++) {
+ uv = UTF8_ACCUMULATE(uv, *s);
+ }
+
+ return uv;
}
/*
@@ -1062,10 +1104,7 @@ Perl_utf8_length(pTHX_ const U8 *s, const U8 *e)
if (e < s)
goto warn_and_return;
while (s < e) {
- if (!UTF8_IS_INVARIANT(*s))
- s += UTF8SKIP(s);
- else
- s++;
+ s += UTF8SKIP(s);
len++;
}
@@ -1445,6 +1484,14 @@ Perl_utf16_to_utf8_reversed(pTHX_ U8* p, U8* d, I32 bytelen, I32 *newlen)
return utf16_to_utf8(p, d, bytelen, newlen);
}
+bool
+Perl__is_uni_FOO(pTHX_ const U8 classnum, const UV c)
+{
+ U8 tmpbuf[UTF8_MAXBYTES+1];
+ uvchr_to_utf8(tmpbuf, c);
+ return _is_utf8_FOO(classnum, tmpbuf);
+}
+
/* for now these are all defined (inefficiently) in terms of the utf8 versions.
* Note that the macros in handy.h that call these short-circuit calling them
* for Latin-1 range inputs */
@@ -1454,7 +1501,29 @@ Perl_is_uni_alnum(pTHX_ UV c)
{
U8 tmpbuf[UTF8_MAXBYTES+1];
uvchr_to_utf8(tmpbuf, c);
- return is_utf8_alnum(tmpbuf);
+ return _is_utf8_FOO(_CC_WORDCHAR, tmpbuf);
+}
+
+bool
+Perl_is_uni_alnumc(pTHX_ UV c)
+{
+ U8 tmpbuf[UTF8_MAXBYTES+1];
+ uvchr_to_utf8(tmpbuf, c);
+ return _is_utf8_FOO(_CC_ALPHANUMERIC, tmpbuf);
+}
+
+/* Internal function so we can deprecate the external one, and call
+ this one from other deprecated functions in this file */
+
+PERL_STATIC_INLINE bool
+S_is_utf8_idfirst(pTHX_ const U8 *p)
+{
+ dVAR;
+
+ if (*p == '_')
+ return TRUE;
+ /* is_utf8_idstart would be more logical. */
+ return is_utf8_common(p, &PL_utf8_idstart, "IdStart");
}
bool
@@ -1462,7 +1531,23 @@ Perl_is_uni_idfirst(pTHX_ UV c)
{
U8 tmpbuf[UTF8_MAXBYTES+1];
uvchr_to_utf8(tmpbuf, c);
- return is_utf8_idfirst(tmpbuf);
+ return S_is_utf8_idfirst(aTHX_ tmpbuf);
+}
+
+bool
+Perl__is_uni_perl_idcont(pTHX_ UV c)
+{
+ U8 tmpbuf[UTF8_MAXBYTES+1];
+ uvchr_to_utf8(tmpbuf, c);
+ return _is_utf8_perl_idcont(tmpbuf);
+}
+
+bool
+Perl__is_uni_perl_idstart(pTHX_ UV c)
+{
+ U8 tmpbuf[UTF8_MAXBYTES+1];
+ uvchr_to_utf8(tmpbuf, c);
+ return _is_utf8_perl_idstart(tmpbuf);
}
bool
@@ -1470,7 +1555,7 @@ Perl_is_uni_alpha(pTHX_ UV c)
{
U8 tmpbuf[UTF8_MAXBYTES+1];
uvchr_to_utf8(tmpbuf, c);
- return is_utf8_alpha(tmpbuf);
+ return _is_utf8_FOO(_CC_ALPHA, tmpbuf);
}
bool
@@ -1480,11 +1565,15 @@ Perl_is_uni_ascii(pTHX_ UV c)
}
bool
+Perl_is_uni_blank(pTHX_ UV c)
+{
+ return isBLANK_uni(c);
+}
+
+bool
Perl_is_uni_space(pTHX_ UV c)
{
- U8 tmpbuf[UTF8_MAXBYTES+1];
- uvchr_to_utf8(tmpbuf, c);
- return is_utf8_space(tmpbuf);
+ return isSPACE_uni(c);
}
bool
@@ -1492,7 +1581,7 @@ Perl_is_uni_digit(pTHX_ UV c)
{
U8 tmpbuf[UTF8_MAXBYTES+1];
uvchr_to_utf8(tmpbuf, c);
- return is_utf8_digit(tmpbuf);
+ return _is_utf8_FOO(_CC_DIGIT, tmpbuf);
}
bool
@@ -1500,7 +1589,7 @@ Perl_is_uni_upper(pTHX_ UV c)
{
U8 tmpbuf[UTF8_MAXBYTES+1];
uvchr_to_utf8(tmpbuf, c);
- return is_utf8_upper(tmpbuf);
+ return _is_utf8_FOO(_CC_UPPER, tmpbuf);
}
bool
@@ -1508,7 +1597,7 @@ Perl_is_uni_lower(pTHX_ UV c)
{
U8 tmpbuf[UTF8_MAXBYTES+1];
uvchr_to_utf8(tmpbuf, c);
- return is_utf8_lower(tmpbuf);
+ return _is_utf8_FOO(_CC_LOWER, tmpbuf);
}
bool
@@ -1522,7 +1611,7 @@ Perl_is_uni_graph(pTHX_ UV c)
{
U8 tmpbuf[UTF8_MAXBYTES+1];
uvchr_to_utf8(tmpbuf, c);
- return is_utf8_graph(tmpbuf);
+ return _is_utf8_FOO(_CC_GRAPH, tmpbuf);
}
bool
@@ -1530,7 +1619,7 @@ Perl_is_uni_print(pTHX_ UV c)
{
U8 tmpbuf[UTF8_MAXBYTES+1];
uvchr_to_utf8(tmpbuf, c);
- return is_utf8_print(tmpbuf);
+ return _is_utf8_FOO(_CC_PRINT, tmpbuf);
}
bool
@@ -1538,15 +1627,13 @@ Perl_is_uni_punct(pTHX_ UV c)
{
U8 tmpbuf[UTF8_MAXBYTES+1];
uvchr_to_utf8(tmpbuf, c);
- return is_utf8_punct(tmpbuf);
+ return _is_utf8_FOO(_CC_PUNCT, tmpbuf);
}
bool
Perl_is_uni_xdigit(pTHX_ UV c)
{
- U8 tmpbuf[UTF8_MAXBYTES_CASE+1];
- uvchr_to_utf8(tmpbuf, c);
- return is_utf8_xdigit(tmpbuf);
+ return isXDIGIT_uni(c);
}
UV
@@ -1589,7 +1676,7 @@ Perl__to_upper_title_latin1(pTHX_ const U8 c, U8* p, STRLEN *lenp, const char S_
return 'S';
default:
Perl_croak(aTHX_ "panic: to_upper_title_latin1 did not expect '%c' to map to '%c'", c, LATIN_SMALL_LETTER_Y_WITH_DIAERESIS);
- /* NOTREACHED */
+ assert(0); /* NOTREACHED */
}
}
@@ -1731,102 +1818,179 @@ Perl__to_fold_latin1(pTHX_ const U8 c, U8* p, STRLEN *lenp, const bool flags)
}
UV
-Perl__to_uni_fold_flags(pTHX_ UV c, U8* p, STRLEN *lenp, const bool flags)
+Perl__to_uni_fold_flags(pTHX_ UV c, U8* p, STRLEN *lenp, const U8 flags)
{
- /* Not currently externally documented, and subject to change, <flags> is
- * TRUE iff full folding is to be used */
+ /* Not currently externally documented, and subject to change
+ * <flags> bits meanings:
+ * FOLD_FLAGS_FULL iff full folding is to be used;
+ * FOLD_FLAGS_LOCALE iff in locale
+ * FOLD_FLAGS_NOMIX_ASCII iff non-ASCII to ASCII folds are prohibited
+ */
PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS;
if (c < 256) {
- return _to_fold_latin1((U8) c, p, lenp, flags);
+ UV result = _to_fold_latin1((U8) c, p, lenp,
+ cBOOL(((flags & FOLD_FLAGS_FULL)
+ /* If ASCII-safe, don't allow full folding,
+ * as that could include SHARP S => ss;
+ * otherwise there is no crossing of
+ * ascii/non-ascii in the latin1 range */
+ && ! (flags & FOLD_FLAGS_NOMIX_ASCII))));
+ /* It is illegal for the fold to cross the 255/256 boundary under
+ * locale; in this case return the original */
+ return (result > 256 && flags & FOLD_FLAGS_LOCALE)
+ ? c
+ : result;
}
- uvchr_to_utf8(p, c);
- return CALL_FOLD_CASE(p, p, lenp, flags);
+ /* If no special needs, just use the macro */
+ if ( ! (flags & (FOLD_FLAGS_LOCALE|FOLD_FLAGS_NOMIX_ASCII))) {
+ uvchr_to_utf8(p, c);
+ return CALL_FOLD_CASE(p, p, lenp, flags & FOLD_FLAGS_FULL);
+ }
+ else { /* Otherwise, _to_utf8_fold_flags has the intelligence to deal with
+ the special flags. */
+ U8 utf8_c[UTF8_MAXBYTES + 1];
+ uvchr_to_utf8(utf8_c, c);
+ return _to_utf8_fold_flags(utf8_c, p, lenp, flags, NULL);
+ }
}
-/* for now these all assume no locale info available for Unicode > 255; and
- * the corresponding macros in handy.h (like isALNUM_LC_uvchr) should have been
- * called instead, so that these don't get called for < 255 */
-
bool
Perl_is_uni_alnum_lc(pTHX_ UV c)
{
- return is_uni_alnum(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isALNUM_LC(UNI_TO_NATIVE(c));
+ }
+ return _is_uni_FOO(_CC_WORDCHAR, c);
+}
+
+bool
+Perl_is_uni_alnumc_lc(pTHX_ UV c)
+{
+ if (c < 256) {
+ return isALPHANUMERIC_LC(UNI_TO_NATIVE(c));
+ }
+ return _is_uni_FOO(_CC_ALPHANUMERIC, c);
}
bool
Perl_is_uni_idfirst_lc(pTHX_ UV c)
{
- return is_uni_idfirst(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isIDFIRST_LC(UNI_TO_NATIVE(c));
+ }
+ return _is_uni_perl_idstart(c);
}
bool
Perl_is_uni_alpha_lc(pTHX_ UV c)
{
- return is_uni_alpha(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isALPHA_LC(UNI_TO_NATIVE(c));
+ }
+ return _is_uni_FOO(_CC_ALPHA, c);
}
bool
Perl_is_uni_ascii_lc(pTHX_ UV c)
{
- return is_uni_ascii(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isASCII_LC(UNI_TO_NATIVE(c));
+ }
+ return 0;
+}
+
+bool
+Perl_is_uni_blank_lc(pTHX_ UV c)
+{
+ if (c < 256) {
+ return isBLANK_LC(UNI_TO_NATIVE(c));
+ }
+ return isBLANK_uni(c);
}
bool
Perl_is_uni_space_lc(pTHX_ UV c)
{
- return is_uni_space(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isSPACE_LC(UNI_TO_NATIVE(c));
+ }
+ return isSPACE_uni(c);
}
bool
Perl_is_uni_digit_lc(pTHX_ UV c)
{
- return is_uni_digit(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isDIGIT_LC(UNI_TO_NATIVE(c));
+ }
+ return _is_uni_FOO(_CC_DIGIT, c);
}
bool
Perl_is_uni_upper_lc(pTHX_ UV c)
{
- return is_uni_upper(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isUPPER_LC(UNI_TO_NATIVE(c));
+ }
+ return _is_uni_FOO(_CC_UPPER, c);
}
bool
Perl_is_uni_lower_lc(pTHX_ UV c)
{
- return is_uni_lower(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isLOWER_LC(UNI_TO_NATIVE(c));
+ }
+ return _is_uni_FOO(_CC_LOWER, c);
}
bool
Perl_is_uni_cntrl_lc(pTHX_ UV c)
{
- return is_uni_cntrl(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isCNTRL_LC(UNI_TO_NATIVE(c));
+ }
+ return 0;
}
bool
Perl_is_uni_graph_lc(pTHX_ UV c)
{
- return is_uni_graph(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isGRAPH_LC(UNI_TO_NATIVE(c));
+ }
+ return _is_uni_FOO(_CC_GRAPH, c);
}
bool
Perl_is_uni_print_lc(pTHX_ UV c)
{
- return is_uni_print(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isPRINT_LC(UNI_TO_NATIVE(c));
+ }
+ return _is_uni_FOO(_CC_PRINT, c);
}
bool
Perl_is_uni_punct_lc(pTHX_ UV c)
{
- return is_uni_punct(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isPUNCT_LC(UNI_TO_NATIVE(c));
+ }
+ return _is_uni_FOO(_CC_PUNCT, c);
}
bool
Perl_is_uni_xdigit_lc(pTHX_ UV c)
{
- return is_uni_xdigit(c); /* XXX no locale support yet */
+ if (c < 256) {
+ return isXDIGIT_LC(UNI_TO_NATIVE(c));
+ }
+ return isXDIGIT_uni(c);
}
U32
@@ -1859,7 +2023,7 @@ Perl_to_uni_lower_lc(pTHX_ U32 c)
return (U32)to_uni_lower(c, tmpbuf, &len);
}
-static bool
+PERL_STATIC_INLINE bool
S_is_utf8_common(pTHX_ const U8 *const p, SV **swash,
const char *const swashname)
{
@@ -1879,18 +2043,42 @@ S_is_utf8_common(pTHX_ const U8 *const p, SV **swash,
PERL_ARGS_ASSERT_IS_UTF8_COMMON;
/* The API should have included a length for the UTF-8 character in <p>,
- * but it doesn't. We therefor assume that p has been validated at least
+ * but it doesn't. We therefore assume that p has been validated at least
* as far as there being enough bytes available in it to accommodate the
* character without reading beyond the end, and pass that number on to the
* validating routine */
- if (!is_utf8_char_buf(p, p + UTF8SKIP(p)))
- return FALSE;
- if (!*swash)
- *swash = swash_init("utf8", swashname, &PL_sv_undef, 1, 0);
+ if (! is_utf8_char_buf(p, p + UTF8SKIP(p))) {
+ if (ckWARN_d(WARN_UTF8)) {
+ Perl_warner(aTHX_ packWARN2(WARN_DEPRECATED,WARN_UTF8),
+ "Passing malformed UTF-8 to \"%s\" is deprecated", swashname);
+ if (ckWARN(WARN_UTF8)) { /* This will output details as to the
+ what the malformation is */
+ utf8_to_uvchr_buf(p, p + UTF8SKIP(p), NULL);
+ }
+ }
+ return FALSE;
+ }
+ if (!*swash) {
+ U8 flags = _CORE_SWASH_INIT_ACCEPT_INVLIST;
+ *swash = _core_swash_init("utf8", swashname, &PL_sv_undef, 1, 0, NULL, &flags);
+ }
+
return swash_fetch(*swash, p, TRUE) != 0;
}
bool
+Perl__is_utf8_FOO(pTHX_ const U8 classnum, const U8 *p)
+{
+ dVAR;
+
+ PERL_ARGS_ASSERT__IS_UTF8_FOO;
+
+ assert(classnum < _FIRST_NON_SWASH_CC);
+
+ return is_utf8_common(p, &PL_utf8_swash_ptrs[classnum], swash_property_names[classnum]);
+}
+
+bool
Perl_is_utf8_alnum(pTHX_ const U8 *p)
{
dVAR;
@@ -1900,7 +2088,17 @@ Perl_is_utf8_alnum(pTHX_ const U8 *p)
/* NOTE: "IsWord", not "IsAlnum", since Alnum is a true
* descendant of isalnum(3), in other words, it doesn't
* contain the '_'. --jhi */
- return is_utf8_common(p, &PL_utf8_alnum, "IsWord");
+ return is_utf8_common(p, &PL_utf8_swash_ptrs[_CC_WORDCHAR], "IsWord");
+}
+
+bool
+Perl_is_utf8_alnumc(pTHX_ const U8 *p)
+{
+ dVAR;
+
+ PERL_ARGS_ASSERT_IS_UTF8_ALNUMC;
+
+ return is_utf8_common(p, &PL_utf8_swash_ptrs[_CC_ALPHANUMERIC], "IsAlnum");
}
bool
@@ -1910,10 +2108,7 @@ Perl_is_utf8_idfirst(pTHX_ const U8 *p) /* The naming is historical. */
PERL_ARGS_ASSERT_IS_UTF8_IDFIRST;
- if (*p == '_')
- return TRUE;
- /* is_utf8_idstart would be more logical. */
- return is_utf8_common(p, &PL_utf8_idstart, "IdStart");
+ return S_is_utf8_idfirst(aTHX_ p);
}
bool
@@ -1930,16 +2125,27 @@ Perl_is_utf8_xidfirst(pTHX_ const U8 *p) /* The naming is historical. */
}
bool
-Perl__is_utf8__perl_idstart(pTHX_ const U8 *p)
+Perl__is_utf8_perl_idstart(pTHX_ const U8 *p)
{
dVAR;
- PERL_ARGS_ASSERT__IS_UTF8__PERL_IDSTART;
+ PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART;
return is_utf8_common(p, &PL_utf8_perl_idstart, "_Perl_IDStart");
}
bool
+Perl__is_utf8_perl_idcont(pTHX_ const U8 *p)
+{
+ dVAR;
+
+ PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT;
+
+ return is_utf8_common(p, &PL_utf8_perl_idcont, "_Perl_IDCont");
+}
+
+
+bool
Perl_is_utf8_idcont(pTHX_ const U8 *p)
{
dVAR;
@@ -1966,7 +2172,7 @@ Perl_is_utf8_alpha(pTHX_ const U8 *p)
PERL_ARGS_ASSERT_IS_UTF8_ALPHA;
- return is_utf8_common(p, &PL_utf8_alpha, "IsAlpha");
+ return is_utf8_common(p, &PL_utf8_swash_ptrs[_CC_ALPHA], "IsAlpha");
}
bool
@@ -1982,13 +2188,23 @@ Perl_is_utf8_ascii(pTHX_ const U8 *p)
}
bool
+Perl_is_utf8_blank(pTHX_ const U8 *p)
+{
+ dVAR;
+
+ PERL_ARGS_ASSERT_IS_UTF8_BLANK;
+
+ return isBLANK_utf8(p);
+}
+
+bool
Perl_is_utf8_space(pTHX_ const U8 *p)
{
dVAR;
PERL_ARGS_ASSERT_IS_UTF8_SPACE;
- return is_utf8_common(p, &PL_utf8_space, "IsXPerlSpace");
+ return isSPACE_utf8(p);
}
bool
@@ -2022,7 +2238,7 @@ Perl_is_utf8_digit(pTHX_ const U8 *p)
PERL_ARGS_ASSERT_IS_UTF8_DIGIT;
- return is_utf8_common(p, &PL_utf8_digit, "IsDigit");
+ return is_utf8_common(p, &PL_utf8_swash_ptrs[_CC_DIGIT], "IsDigit");
}
bool
@@ -2044,7 +2260,7 @@ Perl_is_utf8_upper(pTHX_ const U8 *p)
PERL_ARGS_ASSERT_IS_UTF8_UPPER;
- return is_utf8_common(p, &PL_utf8_upper, "IsUppercase");
+ return is_utf8_common(p, &PL_utf8_swash_ptrs[_CC_UPPER], "IsUppercase");
}
bool
@@ -2054,7 +2270,7 @@ Perl_is_utf8_lower(pTHX_ const U8 *p)
PERL_ARGS_ASSERT_IS_UTF8_LOWER;
- return is_utf8_common(p, &PL_utf8_lower, "IsLowercase");
+ return is_utf8_common(p, &PL_utf8_swash_ptrs[_CC_LOWER], "IsLowercase");
}
bool
@@ -2064,15 +2280,7 @@ Perl_is_utf8_cntrl(pTHX_ const U8 *p)
PERL_ARGS_ASSERT_IS_UTF8_CNTRL;
- if (isASCII(*p)) {
- return isCNTRL_A(*p);
- }
-
- /* All controls are in Latin1 */
- if (! UTF8_IS_DOWNGRADEABLE_START(*p)) {
- return 0;
- }
- return isCNTRL_L1(TWO_BYTE_UTF8_TO_UNI(*p, *(p+1)));
+ return isCNTRL_utf8(p);
}
bool
@@ -2082,7 +2290,7 @@ Perl_is_utf8_graph(pTHX_ const U8 *p)
PERL_ARGS_ASSERT_IS_UTF8_GRAPH;
- return is_utf8_common(p, &PL_utf8_graph, "IsGraph");
+ return is_utf8_common(p, &PL_utf8_swash_ptrs[_CC_GRAPH], "IsGraph");
}
bool
@@ -2092,7 +2300,7 @@ Perl_is_utf8_print(pTHX_ const U8 *p)
PERL_ARGS_ASSERT_IS_UTF8_PRINT;
- return is_utf8_common(p, &PL_utf8_print, "IsPrint");
+ return is_utf8_common(p, &PL_utf8_swash_ptrs[_CC_PRINT], "IsPrint");
}
bool
@@ -2102,7 +2310,7 @@ Perl_is_utf8_punct(pTHX_ const U8 *p)
PERL_ARGS_ASSERT_IS_UTF8_PUNCT;
- return is_utf8_common(p, &PL_utf8_punct, "IsPunct");
+ return is_utf8_common(p, &PL_utf8_swash_ptrs[_CC_PUNCT], "IsPunct");
}
bool
@@ -2112,129 +2320,28 @@ Perl_is_utf8_xdigit(pTHX_ const U8 *p)
PERL_ARGS_ASSERT_IS_UTF8_XDIGIT;
- return is_utf8_common(p, &PL_utf8_xdigit, "IsXDigit");
+ return is_XDIGIT_utf8(p);
}
bool
-Perl_is_utf8_mark(pTHX_ const U8 *p)
+Perl__is_utf8_mark(pTHX_ const U8 *p)
{
dVAR;
- PERL_ARGS_ASSERT_IS_UTF8_MARK;
+ PERL_ARGS_ASSERT__IS_UTF8_MARK;
return is_utf8_common(p, &PL_utf8_mark, "IsM");
}
-bool
-Perl_is_utf8_X_begin(pTHX_ const U8 *p)
-{
- dVAR;
-
- PERL_ARGS_ASSERT_IS_UTF8_X_BEGIN;
-
- return is_utf8_common(p, &PL_utf8_X_begin, "_X_Begin");
-}
-
-bool
-Perl_is_utf8_X_extend(pTHX_ const U8 *p)
-{
- dVAR;
-
- PERL_ARGS_ASSERT_IS_UTF8_X_EXTEND;
-
- return is_utf8_common(p, &PL_utf8_X_extend, "_X_Extend");
-}
-
-bool
-Perl_is_utf8_X_prepend(pTHX_ const U8 *p)
-{
- dVAR;
-
- PERL_ARGS_ASSERT_IS_UTF8_X_PREPEND;
-
- return is_utf8_common(p, &PL_utf8_X_prepend, "GCB=Prepend");
-}
-
-bool
-Perl_is_utf8_X_non_hangul(pTHX_ const U8 *p)
-{
- dVAR;
-
- PERL_ARGS_ASSERT_IS_UTF8_X_NON_HANGUL;
-
- return is_utf8_common(p, &PL_utf8_X_non_hangul, "HST=Not_Applicable");
-}
-
-bool
-Perl_is_utf8_X_L(pTHX_ const U8 *p)
-{
- dVAR;
-
- PERL_ARGS_ASSERT_IS_UTF8_X_L;
-
- return is_utf8_common(p, &PL_utf8_X_L, "GCB=L");
-}
-
-bool
-Perl_is_utf8_X_LV(pTHX_ const U8 *p)
-{
- dVAR;
-
- PERL_ARGS_ASSERT_IS_UTF8_X_LV;
-
- return is_utf8_common(p, &PL_utf8_X_LV, "GCB=LV");
-}
-
-bool
-Perl_is_utf8_X_LVT(pTHX_ const U8 *p)
-{
- dVAR;
-
- PERL_ARGS_ASSERT_IS_UTF8_X_LVT;
-
- return is_utf8_common(p, &PL_utf8_X_LVT, "GCB=LVT");
-}
-
-bool
-Perl_is_utf8_X_T(pTHX_ const U8 *p)
-{
- dVAR;
-
- PERL_ARGS_ASSERT_IS_UTF8_X_T;
-
- return is_utf8_common(p, &PL_utf8_X_T, "GCB=T");
-}
-
-bool
-Perl_is_utf8_X_V(pTHX_ const U8 *p)
-{
- dVAR;
-
- PERL_ARGS_ASSERT_IS_UTF8_X_V;
-
- return is_utf8_common(p, &PL_utf8_X_V, "GCB=V");
-}
-
-bool
-Perl_is_utf8_X_LV_LVT_V(pTHX_ const U8 *p)
-{
- dVAR;
-
- PERL_ARGS_ASSERT_IS_UTF8_X_LV_LVT_V;
-
- return is_utf8_common(p, &PL_utf8_X_LV_LVT_V, "_X_LV_LVT_V");
-}
bool
-Perl__is_utf8_quotemeta(pTHX_ const U8 *p)
+Perl_is_utf8_mark(pTHX_ const U8 *p)
{
- /* For exclusive use of pp_quotemeta() */
-
dVAR;
- PERL_ARGS_ASSERT__IS_UTF8_QUOTEMETA;
+ PERL_ARGS_ASSERT_IS_UTF8_MARK;
- return is_utf8_common(p, &PL_utf8_quotemeta, "_Perl_Quotemeta");
+ return _is_utf8_mark(p);
}
/*
@@ -2303,7 +2410,7 @@ Perl_to_utf8_case(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp,
uvuni_to_utf8(tmpbuf, uv1);
if (!*swashp) /* load on-demand */
- *swashp = swash_init("utf8", normal, &PL_sv_undef, 4, 0);
+ *swashp = _core_swash_init("utf8", normal, &PL_sv_undef, 4, 0, NULL, NULL);
if (special) {
/* It might be "special" (sometimes, but not always,
@@ -2356,7 +2463,7 @@ Perl_to_utf8_case(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp,
}
if (!len && *swashp) {
- const UV uv2 = swash_fetch(*swashp, tmpbuf, TRUE);
+ const UV uv2 = swash_fetch(*swashp, tmpbuf, TRUE /* => is utf8 */);
if (uv2) {
/* It was "normal" (a single character mapping). */
@@ -2365,14 +2472,25 @@ Perl_to_utf8_case(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp,
}
}
- if (!len) /* Neither: just copy. In other words, there was no mapping
- defined, which means that the code point maps to itself */
- len = uvchr_to_utf8(ustrp, uv0) - ustrp;
+ if (len) {
+ if (lenp) {
+ *lenp = len;
+ }
+ return valid_utf8_to_uvchr(ustrp, 0);
+ }
+
+ /* Here, there was no mapping defined, which means that the code point maps
+ * to itself. Return the inputs */
+ len = UTF8SKIP(p);
+ if (p != ustrp) { /* Don't copy onto itself */
+ Copy(p, ustrp, len, U8);
+ }
if (lenp)
*lenp = len;
- return len ? valid_utf8_to_uvchr(ustrp, 0) : 0;
+ return uv0;
+
}
STATIC UV
@@ -2665,6 +2783,8 @@ The character at C<p> is assumed by this routine to be well-formed.
* POSIX, lowercase is used instead
* bit FOLD_FLAGS_FULL is set iff full case folds are to be used;
* otherwise simple folds
+ * bit FOLD_FLAGS_NOMIX_ASCII is set iff folds of non-ASCII to ASCII are
+ * prohibited
* <tainted_ptr> if non-null, *tainted_ptr will be set TRUE iff locale rules
* were used in the calculation; otherwise unchanged. */
@@ -2677,6 +2797,11 @@ Perl__to_utf8_fold_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, U8 flags, b
PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS;
+ /* These are mutually exclusive */
+ assert (! ((flags & FOLD_FLAGS_LOCALE) && (flags & FOLD_FLAGS_NOMIX_ASCII)));
+
+ assert(p != ustrp); /* Otherwise overwrites */
+
if (UTF8_IS_INVARIANT(*p)) {
if (flags & FOLD_FLAGS_LOCALE) {
result = toLOWER_LC(*p);
@@ -2692,17 +2817,49 @@ Perl__to_utf8_fold_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, U8 flags, b
}
else {
return _to_fold_latin1(TWO_BYTE_UTF8_TO_UNI(*p, *(p+1)),
- ustrp, lenp, cBOOL(flags & FOLD_FLAGS_FULL));
+ ustrp, lenp,
+ cBOOL((flags & FOLD_FLAGS_FULL
+ /* If ASCII safe, don't allow full
+ * folding, as that could include SHARP
+ * S => ss; otherwise there is no
+ * crossing of ascii/non-ascii in the
+ * latin1 range */
+ && ! (flags & FOLD_FLAGS_NOMIX_ASCII))));
}
}
else { /* utf8, ord above 255 */
- result = CALL_FOLD_CASE(p, ustrp, lenp, flags);
+ result = CALL_FOLD_CASE(p, ustrp, lenp, flags & FOLD_FLAGS_FULL);
if ((flags & FOLD_FLAGS_LOCALE)) {
- result = check_locale_boundary_crossing(p, result, ustrp, lenp);
+ return check_locale_boundary_crossing(p, result, ustrp, lenp);
+ }
+ else if (! (flags & FOLD_FLAGS_NOMIX_ASCII)) {
+ return result;
}
+ else {
+ /* This is called when changing the case of a utf8-encoded
+ * character above the Latin1 range, and the result should not
+ * contain an ASCII character. */
+
+ UV original; /* To store the first code point of <p> */
+
+ /* Look at every character in the result; if any cross the
+ * boundary, the whole thing is disallowed */
+ U8* s = ustrp;
+ U8* e = ustrp + *lenp;
+ while (s < e) {
+ if (isASCII(*s)) {
+ /* Crossed, have to return the original */
+ original = valid_utf8_to_uvchr(p, lenp);
+ Copy(p, ustrp, *lenp, char);
+ return original;
+ }
+ s += UTF8SKIP(s);
+ }
- return result;
+ /* Here, no characters crossed, result is ok as-is */
+ return result;
+ }
}
/* Here, used locale rules. Convert back to utf8 */
@@ -2737,14 +2894,18 @@ Perl_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 minbits
* public interface, and returning a copy prevents others from doing
* mischief on the original */
- return newSVsv(_core_swash_init(pkg, name, listsv, minbits, none, FALSE, NULL, FALSE));
+ return newSVsv(_core_swash_init(pkg, name, listsv, minbits, none, NULL, NULL));
}
SV*
-Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 minbits, I32 none, bool return_if_undef, SV* invlist, bool passed_in_invlist_has_user_defined_property)
+Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 minbits, I32 none, SV* invlist, U8* const flags_p)
{
/* Initialize and return a swash, creating it if necessary. It does this
- * by calling utf8_heavy.pl in the general case.
+ * by calling utf8_heavy.pl in the general case. The returned value may be
+ * the swash's inversion list instead if the input parameters allow it.
+ * Which is returned should be immaterial to callers, as the only
+ * operations permitted on a swash, swash_fetch(), _get_swash_invlist(),
+ * and swash_to_invlist() handle both these transparently.
*
* This interface should only be used by functions that won't destroy or
* adversely change the swash, as doing so affects all other uses of the
@@ -2760,11 +2921,19 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m
* minbits is the number of bits required to represent each data element.
* It is '1' for binary properties.
* none I (khw) do not understand this one, but it is used only in tr///.
- * return_if_undef is TRUE if the routine shouldn't croak if it can't find
- * the requested property
* invlist is an inversion list to initialize the swash with (or NULL)
- * has_user_defined_property is TRUE if <invlist> has some component that
- * came from a user-defined property
+ * flags_p if non-NULL is the address of various input and output flag bits
+ * to the routine, as follows: ('I' means is input to the routine;
+ * 'O' means output from the routine. Only flags marked O are
+ * meaningful on return.)
+ * _CORE_SWASH_INIT_USER_DEFINED_PROPERTY indicates if the swash
+ * came from a user-defined property. (I O)
+ * _CORE_SWASH_INIT_RETURN_IF_UNDEF indicates that instead of croaking
+ * when the swash cannot be located, to simply return NULL. (I)
+ * _CORE_SWASH_INIT_ACCEPT_INVLIST indicates that the caller will accept a
+ * return of an inversion list instead of a swash hash if this routine
+ * thinks that would result in faster execution of swash_fetch() later
+ * on. (I)
*
* Thus there are three possible inputs to find the swash: <name>,
* <listsv>, and <invlist>. At least one must be specified. The result
@@ -2775,6 +2944,12 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m
dVAR;
SV* retval = &PL_sv_undef;
+ HV* swash_hv = NULL;
+ const int invlist_swash_boundary =
+ (flags_p && *flags_p & _CORE_SWASH_INIT_ACCEPT_INVLIST)
+ ? 512 /* Based on some benchmarking, but not extensive, see commit
+ message */
+ : -1; /* Never return just an inversion list */
assert(listsv != &PL_sv_undef || strNE(name, "") || invlist);
assert(! invlist || minbits == 1);
@@ -2795,25 +2970,38 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m
ENTER;
SAVEHINTS();
save_re_context();
+ /* We might get here via a subroutine signature which uses a utf8
+ * parameter name, at which point PL_subname will have been set
+ * but not yet used. */
+ save_item(PL_subname);
if (PL_parser && PL_parser->error_count)
SAVEI8(PL_parser->error_count), PL_parser->error_count = 0;
method = gv_fetchmeth(stash, "SWASHNEW", 8, -1);
if (!method) { /* demand load utf8 */
ENTER;
- errsv_save = newSVsv(ERRSV);
+ if ((errsv_save = GvSV(PL_errgv))) SAVEFREESV(errsv_save);
+ GvSV(PL_errgv) = NULL;
/* It is assumed that callers of this routine are not passing in
* any user derived data. */
/* Need to do this after save_re_context() as it will set
* PL_tainted to 1 while saving $1 etc (see the code after getrx:
* in Perl_magic_get). Even line to create errsv_save can turn on
* PL_tainted. */
- SAVEBOOL(PL_tainted);
- PL_tainted = 0;
+#ifndef NO_TAINT_SUPPORT
+ SAVEBOOL(TAINT_get);
+ TAINT_NOT;
+#endif
Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, newSVpvn(pkg,pkg_len),
NULL);
- if (!SvTRUE(ERRSV))
- sv_setsv(ERRSV, errsv_save);
- SvREFCNT_dec(errsv_save);
+ {
+ /* Not ERRSV, as there is no need to vivify a scalar we are
+ about to discard. */
+ SV * const errsv = GvSV(PL_errgv);
+ if (!SvTRUE(errsv)) {
+ GvSV(PL_errgv) = SvREFCNT_inc_simple(errsv_save);
+ SvREFCNT_dec(errsv);
+ }
+ }
LEAVE;
}
SPAGAIN;
@@ -2825,18 +3013,25 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m
mPUSHi(minbits);
mPUSHi(none);
PUTBACK;
- errsv_save = newSVsv(ERRSV);
+ if ((errsv_save = GvSV(PL_errgv))) SAVEFREESV(errsv_save);
+ GvSV(PL_errgv) = NULL;
/* If we already have a pointer to the method, no need to use
* call_method() to repeat the lookup. */
- if (method ? call_sv(MUTABLE_SV(method), G_SCALAR)
+ if (method
+ ? call_sv(MUTABLE_SV(method), G_SCALAR)
: call_sv(newSVpvs_flags("SWASHNEW", SVs_TEMP), G_SCALAR | G_METHOD))
{
retval = *PL_stack_sp--;
SvREFCNT_inc(retval);
}
- if (!SvTRUE(ERRSV))
- sv_setsv(ERRSV, errsv_save);
- SvREFCNT_dec(errsv_save);
+ {
+ /* Not ERRSV. See above. */
+ SV * const errsv = GvSV(PL_errgv);
+ if (!SvTRUE(errsv)) {
+ GvSV(PL_errgv) = SvREFCNT_inc_simple(errsv_save);
+ SvREFCNT_dec(errsv);
+ }
+ }
LEAVE;
POPSTACK;
if (IN_PERL_COMPILETIME) {
@@ -2846,7 +3041,7 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m
if (SvPOK(retval))
/* If caller wants to handle missing properties, let them */
- if (return_if_undef) {
+ if (flags_p && *flags_p & _CORE_SWASH_INIT_RETURN_IF_UNDEF) {
return NULL;
}
Perl_croak(aTHX_
@@ -2856,25 +3051,45 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m
}
} /* End of calling the module to find the swash */
+ /* If this operation fetched a swash, and we will need it later, get it */
+ if (retval != &PL_sv_undef
+ && (minbits == 1 || (flags_p
+ && ! (*flags_p
+ & _CORE_SWASH_INIT_USER_DEFINED_PROPERTY))))
+ {
+ swash_hv = MUTABLE_HV(SvRV(retval));
+
+ /* If we don't already know that there is a user-defined component to
+ * this swash, and the user has indicated they wish to know if there is
+ * one (by passing <flags_p>), find out */
+ if (flags_p && ! (*flags_p & _CORE_SWASH_INIT_USER_DEFINED_PROPERTY)) {
+ SV** user_defined = hv_fetchs(swash_hv, "USER_DEFINED", FALSE);
+ if (user_defined && SvUV(*user_defined)) {
+ *flags_p |= _CORE_SWASH_INIT_USER_DEFINED_PROPERTY;
+ }
+ }
+ }
+
/* Make sure there is an inversion list for binary properties */
if (minbits == 1) {
SV** swash_invlistsvp = NULL;
SV* swash_invlist = NULL;
bool invlist_in_swash_is_valid = FALSE;
- HV* swash_hv = NULL;
+ bool swash_invlist_unclaimed = FALSE; /* whether swash_invlist has
+ an unclaimed reference count */
/* If this operation fetched a swash, get its already existing
- * inversion list or create one for it */
- if (retval != &PL_sv_undef) {
- swash_hv = MUTABLE_HV(SvRV(retval));
+ * inversion list, or create one for it */
- swash_invlistsvp = hv_fetchs(swash_hv, "INVLIST", FALSE);
+ if (swash_hv) {
+ swash_invlistsvp = hv_fetchs(swash_hv, "V", FALSE);
if (swash_invlistsvp) {
swash_invlist = *swash_invlistsvp;
invlist_in_swash_is_valid = TRUE;
}
else {
swash_invlist = _swash_to_invlist(retval);
+ swash_invlist_unclaimed = TRUE;
}
}
@@ -2893,28 +3108,38 @@ Perl__core_swash_init(pTHX_ const char* pkg, const char* name, SV *listsv, I32 m
}
else {
- /* Here, there is no swash already. Set up a minimal one */
- swash_hv = newHV();
- retval = newRV_inc(MUTABLE_SV(swash_hv));
+ /* Here, there is no swash already. Set up a minimal one, if
+ * we are going to return a swash */
+ if ((int) _invlist_len(invlist) > invlist_swash_boundary) {
+ swash_hv = newHV();
+ retval = newRV_noinc(MUTABLE_SV(swash_hv));
+ }
swash_invlist = invlist;
}
-
- if (passed_in_invlist_has_user_defined_property) {
- if (! hv_stores(swash_hv, "USER_DEFINED", newSVuv(1))) {
- Perl_croak(aTHX_ "panic: hv_store() unexpectedly failed");
- }
- }
}
/* Here, we have computed the union of all the passed-in data. It may
* be that there was an inversion list in the swash which didn't get
* touched; otherwise save the one computed one */
- if (! invlist_in_swash_is_valid) {
- if (! hv_stores(MUTABLE_HV(SvRV(retval)), "INVLIST", swash_invlist))
+ if (! invlist_in_swash_is_valid
+ && (int) _invlist_len(swash_invlist) > invlist_swash_boundary)
+ {
+ if (! hv_stores(MUTABLE_HV(SvRV(retval)), "V", swash_invlist))
{
Perl_croak(aTHX_ "panic: hv_store() unexpectedly failed");
}
+ /* We just stole a reference count. */
+ if (swash_invlist_unclaimed) swash_invlist_unclaimed = FALSE;
+ else SvREFCNT_inc_simple_void_NN(swash_invlist);
}
+
+ /* Use the inversion list stand-alone if small enough */
+ if ((int) _invlist_len(swash_invlist) <= invlist_swash_boundary) {
+ SvREFCNT_dec(retval);
+ if (!swash_invlist_unclaimed)
+ SvREFCNT_inc_simple_void_NN(swash_invlist);
+ retval = newRV_noinc(swash_invlist);
+ }
}
return retval;
@@ -2980,6 +3205,15 @@ Perl_swash_fetch(pTHX_ SV *swash, const U8 *ptr, bool do_utf8)
PERL_ARGS_ASSERT_SWASH_FETCH;
+ /* If it really isn't a hash, it isn't really swash; must be an inversion
+ * list */
+ if (SvTYPE(hv) != SVt_PVHV) {
+ return _invlist_contains_cp((SV*)hv,
+ (do_utf8)
+ ? valid_utf8_to_uvchr(ptr, NULL)
+ : c);
+ }
+
/* Convert to utf8 if not already */
if (!do_utf8 && !UNI_IS_INVARIANT(c)) {
tmputf8[0] = (U8)UTF8_EIGHT_BIT_HI(c);
@@ -3063,24 +3297,6 @@ Perl_swash_fetch(pTHX_ SV *swash, const U8 *ptr, bool do_utf8)
Copy(ptr, PL_last_swash_key, klen, U8);
}
- if (UTF8_IS_SUPER(ptr) && ckWARN_d(WARN_NON_UNICODE)) {
- SV** const bitssvp = hv_fetchs(hv, "BITS", FALSE);
-
- /* This outputs warnings for binary properties only, assuming that
- * to_utf8_case() will output any for non-binary. Also, surrogates
- * aren't checked for, as that would warn on things like /\p{Gc=Cs}/ */
-
- if (! bitssvp || SvUV(*bitssvp) == 1) {
- /* User-defined properties can silently match above-Unicode */
- SV** const user_defined_svp = hv_fetchs(hv, "USER_DEFINED", FALSE);
- if (! user_defined_svp || ! SvUV(*user_defined_svp)) {
- const UV code_point = utf8n_to_uvuni(ptr, UTF8_MAXBYTES, 0, 0);
- Perl_warner(aTHX_ packWARN(WARN_NON_UNICODE),
- "Code point 0x%04"UVXf" is not Unicode, all \\p{} matches fail; all \\P{} matches succeed", code_point);
- }
- }
- }
-
switch ((int)((slen << 3) / needents)) {
case 1:
bit = 1 << (off & 7);
@@ -3230,7 +3446,7 @@ S_swatch_get(pTHX_ SV* swash, UV start, UV span)
U8 *l, *lend, *x, *xend, *s, *send;
STRLEN lcur, xcur, scur;
HV *const hv = MUTABLE_HV(SvRV(swash));
- SV** const invlistsvp = hv_fetchs(hv, "INVLIST", FALSE);
+ SV** const invlistsvp = hv_fetchs(hv, "V", FALSE);
SV** listsvp = NULL; /* The string containing the main body of the table */
SV** extssvp = NULL;
@@ -3535,7 +3751,7 @@ HV*
Perl__swash_inversion_hash(pTHX_ SV* const swash)
{
- /* Subject to change or removal. For use only in one place in regcomp.c.
+ /* Subject to change or removal. For use only in regcomp.c and regexec.c
* Can't be used on a property that is subject to user override, as it
* relies on the value of SPECIALS in the swash which would be set by
* utf8_heavy.pl to the hash in the non-overriden file, and hence is not set
@@ -3576,7 +3792,8 @@ Perl__swash_inversion_hash(pTHX_ SV* const swash)
STRLEN lcur;
HV *const hv = MUTABLE_HV(SvRV(swash));
- /* The string containing the main body of the table */
+ /* The string containing the main body of the table. This will have its
+ * assertion fail if the swash has been converted to its inversion list */
SV** const listsvp = hv_fetchs(hv, "LIST", FALSE);
SV** const typesvp = hv_fetchs(hv, "TYPE", FALSE);
@@ -3703,7 +3920,7 @@ Perl__swash_inversion_hash(pTHX_ SV* const swash)
(U8*) SvPVX(*entryp),
(U8*) SvPVX(*entryp) + SvCUR(*entryp),
0)));
- /*DEBUG_U(PerlIO_printf(Perl_debug_log, "Adding %"UVXf" to list for %"UVXf"\n", valid_utf8_to_uvchr((U8*) SvPVX(*entryp), 0), u));*/
+ /*DEBUG_U(PerlIO_printf(Perl_debug_log, "%s: %d: Adding %"UVXf" to list for %"UVXf"\n", __FILE__, __LINE__, valid_utf8_to_uvchr((U8*) SvPVX(*entryp), 0), u));*/
}
}
}
@@ -3776,14 +3993,14 @@ Perl__swash_inversion_hash(pTHX_ SV* const swash)
/* Make sure there is a mapping to itself on the list */
if (! found_key) {
av_push(list, newSVuv(val));
- /*DEBUG_U(PerlIO_printf(Perl_debug_log, "Adding %"UVXf" to list for %"UVXf"\n", val, val));*/
+ /*DEBUG_U(PerlIO_printf(Perl_debug_log, "%s: %d: Adding %"UVXf" to list for %"UVXf"\n", __FILE__, __LINE__, val, val));*/
}
/* Simply add the value to the list */
if (! found_inverse) {
av_push(list, newSVuv(inverse));
- /*DEBUG_U(PerlIO_printf(Perl_debug_log, "Adding %"UVXf" to list for %"UVXf"\n", inverse, val));*/
+ /*DEBUG_U(PerlIO_printf(Perl_debug_log, "%s: %d: Adding %"UVXf" to list for %"UVXf"\n", __FILE__, __LINE__, inverse, val));*/
}
/* swatch_get() increments the value of val for each element in the
@@ -3807,7 +4024,8 @@ SV*
Perl__swash_to_invlist(pTHX_ SV* const swash)
{
- /* Subject to change or removal. For use only in one place in regcomp.c */
+ /* Subject to change or removal. For use only in one place in regcomp.c.
+ * Ownership is given to one reference count in the returned SV* */
U8 *l, *lend;
char *loc;
@@ -3815,17 +4033,15 @@ Perl__swash_to_invlist(pTHX_ SV* const swash)
HV *const hv = MUTABLE_HV(SvRV(swash));
UV elements = 0; /* Number of elements in the inversion list */
U8 empty[] = "";
+ SV** listsvp;
+ SV** typesvp;
+ SV** bitssvp;
+ SV** extssvp;
+ SV** invert_it_svp;
- /* The string containing the main body of the table */
- SV** const listsvp = hv_fetchs(hv, "LIST", FALSE);
- SV** const typesvp = hv_fetchs(hv, "TYPE", FALSE);
- SV** const bitssvp = hv_fetchs(hv, "BITS", FALSE);
- SV** const extssvp = hv_fetchs(hv, "EXTRAS", FALSE);
- SV** const invert_it_svp = hv_fetchs(hv, "INVERT_IT", FALSE);
-
- const U8* const typestr = (U8*)SvPV_nolen(*typesvp);
- const STRLEN bits = SvUV(*bitssvp);
- const STRLEN octets = bits >> 3; /* if bits == 1, then octets == 0 */
+ U8* typestr;
+ STRLEN bits;
+ STRLEN octets; /* if bits == 1, then octets == 0 */
U8 *x, *xend;
STRLEN xcur;
@@ -3833,6 +4049,22 @@ Perl__swash_to_invlist(pTHX_ SV* const swash)
PERL_ARGS_ASSERT__SWASH_TO_INVLIST;
+ /* If not a hash, it must be the swash's inversion list instead */
+ if (SvTYPE(hv) != SVt_PVHV) {
+ return SvREFCNT_inc_simple_NN((SV*) hv);
+ }
+
+ /* The string containing the main body of the table */
+ listsvp = hv_fetchs(hv, "LIST", FALSE);
+ typesvp = hv_fetchs(hv, "TYPE", FALSE);
+ bitssvp = hv_fetchs(hv, "BITS", FALSE);
+ extssvp = hv_fetchs(hv, "EXTRAS", FALSE);
+ invert_it_svp = hv_fetchs(hv, "INVERT_IT", FALSE);
+
+ typestr = (U8*)SvPV_nolen(*typesvp);
+ bits = SvUV(*bitssvp);
+ octets = bits >> 3; /* if bits == 1, then octets == 0 */
+
/* read $swash->{LIST} */
if (SvPOK(*listsvp)) {
l = (U8*)SvPV(*listsvp, lcur);
@@ -3946,8 +4178,7 @@ Perl__swash_to_invlist(pTHX_ SV* const swash)
_invlist_union(invlist, other, &invlist);
break;
case '!':
- _invlist_invert(other);
- _invlist_union(invlist, other, &invlist);
+ _invlist_union_maybe_complement_2nd(invlist, other, TRUE, &invlist);
break;
case '-':
_invlist_subtract(invlist, other, &invlist);
@@ -3964,6 +4195,31 @@ Perl__swash_to_invlist(pTHX_ SV* const swash)
return invlist;
}
+SV*
+Perl__get_swash_invlist(pTHX_ SV* const swash)
+{
+ SV** ptr;
+
+ PERL_ARGS_ASSERT__GET_SWASH_INVLIST;
+
+ if (! SvROK(swash)) {
+ return NULL;
+ }
+
+ /* If it really isn't a hash, it isn't really swash; must be an inversion
+ * list */
+ if (SvTYPE(SvRV(swash)) != SVt_PVHV) {
+ return SvRV(swash);
+ }
+
+ ptr = hv_fetchs(MUTABLE_HV(SvRV(swash)), "V", FALSE);
+ if (! ptr) {
+ return NULL;
+ }
+
+ return *ptr;
+}
+
/*
=for apidoc uvchr_to_utf8
@@ -4027,7 +4283,7 @@ U32 flags)
}
bool
-Perl_check_utf8_print(pTHX_ register const U8* s, const STRLEN len)
+Perl_check_utf8_print(pTHX_ const U8* s, const STRLEN len)
{
/* May change: warns if surrogates, non-character code points, or
* non-Unicode code points are in s which has length len bytes. Returns
@@ -4174,9 +4430,12 @@ The pointer to the PV of the C<dsv> is returned.
char *
Perl_sv_uni_display(pTHX_ SV *dsv, SV *ssv, STRLEN pvlim, UV flags)
{
+ const char * const ptr =
+ isREGEXP(ssv) ? RX_WRAPPED((REGEXP*)ssv) : SvPVX_const(ssv);
+
PERL_ARGS_ASSERT_SV_UNI_DISPLAY;
- return Perl_pv_uni_display(aTHX_ dsv, (const U8*)SvPVX_const(ssv),
+ return Perl_pv_uni_display(aTHX_ dsv, (const U8*)ptr,
SvCUR(ssv), pvlim, flags);
}
@@ -4198,9 +4457,11 @@ scanning won't continue past that goal. Correspondingly for C<l2> with respect
C<s2>.
If C<pe1> is non-NULL and the pointer it points to is not NULL, that pointer is
-considered an end pointer beyond which scanning of C<s1> will not continue under
-any circumstances. This means that if both C<l1> and C<pe1> are specified, and
-C<pe1>
+considered an end pointer to the position 1 byte past the maximum point
+in C<s1> beyond which scanning will not continue under any circumstances.
+(This routine assumes that UTF-8 encoded input strings are not malformed;
+malformed input can cause it to read past C<pe1>).
+This means that if both C<l1> and C<pe1> are specified, and C<pe1>
is less than C<s1>+C<l1>, the match will never be successful because it can
never
get as far as its goal (and in fact is asserted against). Correspondingly for
@@ -4236,17 +4497,17 @@ L<http://www.unicode.org/unicode/reports/tr21/> (Case Mappings).
* FOLDEQ_S2_ALREADY_FOLDED Similarly.
*/
I32
-Perl_foldEQ_utf8_flags(pTHX_ const char *s1, char **pe1, register UV l1, bool u1, const char *s2, char **pe2, register UV l2, bool u2, U32 flags)
+Perl_foldEQ_utf8_flags(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2, U32 flags)
{
dVAR;
- register const U8 *p1 = (const U8*)s1; /* Point to current char */
- register const U8 *p2 = (const U8*)s2;
- register const U8 *g1 = NULL; /* goal for s1 */
- register const U8 *g2 = NULL;
- register const U8 *e1 = NULL; /* Don't scan s1 past this */
- register U8 *f1 = NULL; /* Point to current folded */
- register const U8 *e2 = NULL;
- register U8 *f2 = NULL;
+ const U8 *p1 = (const U8*)s1; /* Point to current char */
+ const U8 *p2 = (const U8*)s2;
+ const U8 *g1 = NULL; /* goal for s1 */
+ const U8 *g2 = NULL;
+ const U8 *e1 = NULL; /* Don't scan s1 past this */
+ U8 *f1 = NULL; /* Point to current folded */
+ const U8 *e2 = NULL;
+ U8 *f2 = NULL;
STRLEN n1 = 0, n2 = 0; /* Number of bytes in current char */
U8 foldbuf1[UTF8_MAXBYTES_CASE+1];
U8 foldbuf2[UTF8_MAXBYTES_CASE+1];
@@ -4314,7 +4575,6 @@ Perl_foldEQ_utf8_flags(pTHX_ const char *s1, char **pe1, register UV l1, bool u1
f1 = (U8 *) p1;
n1 = UTF8SKIP(f1);
}
-
else {
/* If in locale matching, we use two sets of rules, depending
* on if the code point is above or below 255. Here, we test
@@ -4464,8 +4724,8 @@ Perl_foldEQ_utf8_flags(pTHX_ const char *s1, char **pe1, register UV l1, bool u1
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/utf8.h b/gnu/usr.bin/perl/utf8.h
index 8b5700dd619..01d8f5fa204 100644
--- a/gnu/usr.bin/perl/utf8.h
+++ b/gnu/usr.bin/perl/utf8.h
@@ -1,5 +1,11 @@
/* utf8.h
*
+ * This file contains definitions for use with the UTF-8 encoding. It
+ * actually also works with the variant UTF-8 encoding called UTF-EBCDIC, and
+ * hides almost all of the differences between these from the caller. In other
+ * words, someone should #include this file, and if the code is being compiled
+ * on an EBCDIC platform, things should mostly just work.
+ *
* Copyright (C) 2000, 2001, 2002, 2005, 2006, 2007, 2009,
* 2010, 2011 by Larry Wall and others
*
@@ -8,6 +14,9 @@
*
*/
+#ifndef H_UTF8 /* Guard against recursive inclusion */
+#define H_UTF8 1
+
/* Use UTF-8 as the default script encoding?
* Turning this on will break scripts having non-UTF-8 binary
* data (such as Latin-1) in string literals. */
@@ -20,8 +29,14 @@
/* For to_utf8_fold_flags, q.v. */
#define FOLD_FLAGS_LOCALE 0x1
#define FOLD_FLAGS_FULL 0x2
+#define FOLD_FLAGS_NOMIX_ASCII 0x4
-#define to_uni_fold(c, p, lenp) _to_uni_fold_flags(c, p, lenp, 1)
+/* For _core_swash_init(), internal core use only */
+#define _CORE_SWASH_INIT_USER_DEFINED_PROPERTY 0x1
+#define _CORE_SWASH_INIT_RETURN_IF_UNDEF 0x2
+#define _CORE_SWASH_INIT_ACCEPT_INVLIST 0x4
+
+#define to_uni_fold(c, p, lenp) _to_uni_fold_flags(c, p, lenp, FOLD_FLAGS_FULL)
#define to_utf8_fold(c, p, lenp) _to_utf8_fold_flags(c, p, lenp, \
FOLD_FLAGS_FULL, NULL)
#define to_utf8_lower(a,b,c) _to_utf8_lower_flags(a,b,c,0, NULL)
@@ -61,16 +76,25 @@ START_EXTERN_C
#ifdef DOINIT
EXTCONST unsigned char PL_utf8skip[] = {
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus */
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus */
-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, /* scripts */
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6, /* cjk etc. */
-7,13, /* Perl extended (not official UTF-8). Up to 72bit allowed (64-bit +
- reserved). */
+/* 0x00 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
+/* 0x10 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
+/* 0x20 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
+/* 0x30 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
+/* 0x40 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
+/* 0x50 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
+/* 0x60 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
+/* 0x70 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
+/* 0x80 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus: continuation byte */
+/* 0x90 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus: continuation byte */
+/* 0xA0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus: continuation byte */
+/* 0xB0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus: continuation byte */
+/* 0xC0 */ 2,2, /* overlong */
+/* 0xC2 */ 2,2,2,2,2,2,2,2,2,2,2,2,2,2, /* U+0080 to U+03FF */
+/* 0xD0 */ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, /* U+0400 to U+07FF */
+/* 0xE0 */ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, /* U+0800 to U+FFFF */
+/* 0xF0 */ 4,4,4,4,4,4,4,4,5,5,5,5,6,6, /* above BMP to 2**31 - 1 */
+/* 0xFE */ 7,13, /* Perl extended (never was official UTF-8). Up to 72bit
+ allowed (64-bit + reserved). */
};
#else
EXTCONST unsigned char PL_utf8skip[];
@@ -78,12 +102,17 @@ EXTCONST unsigned char PL_utf8skip[];
END_EXTERN_C
+#include "regcharclass.h"
+#include "unicode_constants.h"
+
/* Native character to iso-8859-1 */
#define NATIVE_TO_ASCII(ch) (ch)
#define ASCII_TO_NATIVE(ch) (ch)
/* Transform after encoding */
#define NATIVE_TO_UTF(ch) (ch)
+#define NATIVE_TO_I8(ch) NATIVE_TO_UTF(ch) /* a clearer synonym */
#define UTF_TO_NATIVE(ch) (ch)
+#define I8_TO_NATIVE(ch) UTF_TO_NATIVE(ch)
/* Transforms in wide UV chars */
#define UNI_TO_NATIVE(ch) (ch)
#define NATIVE_TO_UNI(ch) (ch)
@@ -93,6 +122,7 @@ END_EXTERN_C
/* As there are no translations, avoid the function wrapper */
#define utf8n_to_uvchr utf8n_to_uvuni
+#define valid_utf8_to_uvchr valid_utf8_to_uvuni
#define uvchr_to_utf8 uvuni_to_utf8
/*
@@ -106,29 +136,33 @@ END_EXTERN_C
U+0800..U+0FFF E0 * A0..BF 80..BF
U+1000..U+CFFF E1..EC 80..BF 80..BF
U+D000..U+D7FF ED 80..9F 80..BF
- U+D800..U+DFFF +++++++ utf16 surrogates, not legal utf8 +++++++
+ U+D800..U+DFFF ED A0..BF 80..BF (surrogates)
U+E000..U+FFFF EE..EF 80..BF 80..BF
U+10000..U+3FFFF F0 * 90..BF 80..BF 80..BF
U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF
U+100000..U+10FFFF F4 80..8F 80..BF 80..BF
+ Below are non-Unicode code points
+ U+110000..U+13FFFF F4 90..BF 80..BF 80..BF
+ U+110000..U+1FFFFF F5..F7 80..BF 80..BF 80..BF
+ U+200000..: F8.. * 88..BF 80..BF 80..BF 80..BF
Note the gaps before several of the byte entries above marked by '*'. These are
caused by legal UTF-8 avoiding non-shortest encodings: it is technically
possible to UTF-8-encode a single code point in different ways, but that is
explicitly forbidden, and the shortest possible encoding should always be used
-(and that is what Perl does).
+(and that is what Perl does). The non-shortest ones are called 'overlongs'.
*/
/*
Another way to look at it, as bits:
- Code Points 1st Byte 2nd Byte 3rd Byte 4th Byte
+ Code Points 1st Byte 2nd Byte 3rd Byte 4th Byte
- 0aaaaaaa 0aaaaaaa
- 00000bbbbbaaaaaa 110bbbbb 10aaaaaa
- ccccbbbbbbaaaaaa 1110cccc 10bbbbbb 10aaaaaa
- 00000dddccccccbbbbbbaaaaaa 11110ddd 10cccccc 10bbbbbb 10aaaaaa
+ 0aaa aaaa 0aaa aaaa
+ 0000 0bbb bbaa aaaa 110b bbbb 10aa aaaa
+ cccc bbbb bbaa aaaa 1110 cccc 10bb bbbb 10aa aaaa
+ 00 000d ddcc cccc bbbb bbaa aaaa 1111 0ddd 10cc cccc 10bb bbbb 10aa aaaa
As you can see, the continuation bytes all begin with C<10>, and the
leading bits of the start byte tell how many bytes there are in the
@@ -138,26 +172,62 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
*/
+/* Is the representation of the Unicode code point 'c' the same regardless of
+ * being encoded in UTF-8 or not? */
#define UNI_IS_INVARIANT(c) (((UV)c) < 0x80)
-#define UTF8_IS_START(c) (((U8)c) >= 0xc2)
-#define UTF8_IS_CONTINUATION(c) (((U8)c) >= 0x80 && (((U8)c) <= 0xbf))
+
+/* Is the UTF8-encoded byte 'c' part of a variant sequence in UTF-8? This is
+ * the inverse of UTF8_IS_INVARIANT */
#define UTF8_IS_CONTINUED(c) (((U8)c) & 0x80)
-/* Masking with 0xfe allows low bit to be 0 or 1; thus this matches 0xc[23] */
-#define UTF8_IS_DOWNGRADEABLE_START(c) (((U8)c & 0xfe) == 0xc2)
+/* Is the byte 'c' the first byte of a multi-byte UTF8-8 encoded sequence?
+ * This doesn't catch invariants (they are single-byte). It also excludes the
+ * illegal overlong sequences that begin with C0 and C1. */
+#define UTF8_IS_START(c) (((U8)c) >= 0xc2)
+
+/* Is the byte 'c' part of a multi-byte UTF8-8 encoded sequence, and not the
+ * first byte thereof? */
+#define UTF8_IS_CONTINUATION(c) ((((U8)c) & 0xC0) == 0x80)
+
+/* Is the UTF8-encoded byte 'c' the first byte of a two byte sequence? Use
+ * UTF8_IS_NEXT_CHAR_DOWNGRADEABLE() instead if the input isn't known to
+ * be well-formed. Masking with 0xfe allows the low bit to be 0 or 1; thus
+ * this matches 0xc[23]. */
+#define UTF8_IS_DOWNGRADEABLE_START(c) (((U8)(c) & 0xfe) == 0xc2)
+/* Is the UTF8-encoded byte 'c' the first byte of a sequence of bytes that
+ * represent a code point > 255? */
+#define UTF8_IS_ABOVE_LATIN1(c) ((U8)(c) >= 0xc4)
+
+/* This defines the 1-bits that are to be in the first byte of a multi-byte
+ * UTF-8 encoded character that give the number of bytes that comprise the
+ * character.
+ * */
#define UTF_START_MARK(len) (((len) > 7) ? 0xFF : (0xFE << (7-(len))))
+
+/* Masks out the initial one bits in a start byte, leaving the real data ones.
+ * Doesn't work on an invariant byte */
#define UTF_START_MASK(len) (((len) >= 7) ? 0x00 : (0x1F >> ((len)-2)))
+/* This defines the bits that are to be in the continuation bytes of a multi-byte
+ * UTF-8 encoded character that indicate it is a continuation byte. */
#define UTF_CONTINUATION_MARK 0x80
+
+/* This is the number of low-order bits a continuation byte in a UTF-8 encoded
+ * sequence contributes to the specification of the code point. In the bit
+ * maps above, you see that the first 2 bits are a constant '10', leaving 6 of
+ * real information */
#define UTF_ACCUMULATION_SHIFT 6
+
+/* 2**UTF_ACCUMULATION_SHIFT - 1 */
#define UTF_CONTINUATION_MASK ((U8)0x3f)
-/* This sets the UTF_CONTINUATION_MASK in the upper bits of a word. If a value
- * is anded with it, and the result is non-zero, then using the original value
- * in UTF8_ACCUMULATE will overflow, shifting bits off the left */
+/* If a value is anded with this, and the result is non-zero, then using the
+ * original value in UTF8_ACCUMULATE will overflow, shifting bits off the left
+ * */
#define UTF_ACCUMULATION_OVERFLOW_MASK \
- (((UV) UTF_CONTINUATION_MASK) << ((sizeof(UV) * CHARBITS) - UTF_ACCUMULATION_SHIFT))
+ (((UV) UTF_CONTINUATION_MASK) << ((sizeof(UV) * CHARBITS) \
+ - UTF_ACCUMULATION_SHIFT))
#ifdef HAS_QUAD
#define UNISKIP(uv) ( (uv) < 0x80 ? 1 : \
@@ -177,6 +247,25 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
(uv) < 0x80000000 ? 6 : 7 )
#endif
+/* How wide can a single UTF-8 encoded character become in bytes. */
+/* NOTE: Strictly speaking Perl's UTF-8 should not be called UTF-8 since UTF-8
+ * is an encoding of Unicode, and Unicode's upper limit, 0x10FFFF, can be
+ * expressed with 4 bytes. However, Perl thinks of UTF-8 as a way to encode
+ * non-negative integers in a binary format, even those above Unicode */
+#define UTF8_MAXBYTES 13
+
+/* The maximum number of UTF-8 bytes a single Unicode character can
+ * uppercase/lowercase/fold into. Unicode guarantees that the maximum
+ * expansion is 3 characters. On ASCIIish platforms, the highest Unicode
+ * character occupies 4 bytes, therefore this number would be 12, but this is
+ * smaller than the maximum width a single above-Unicode character can occupy,
+ * so use that instead */
+#if UTF8_MAXBYTES < 12
+#error UTF8_MAXBYTES must be at least 12
+#endif
+
+#define UTF8_MAXBYTES_CASE UTF8_MAXBYTES
+
#endif /* EBCDIC vs ASCII */
/* Rest of these are attributes of Unicode and perl's internals rather than the
@@ -186,7 +275,16 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
#define NATIVE8_TO_UNI(ch) NATIVE_TO_ASCII(ch) /* a clearer synonym */
-#define UTF8_ACCUMULATE(old, new) (((old) << UTF_ACCUMULATION_SHIFT) | (((U8)new) & UTF_CONTINUATION_MASK))
+/* Adds a UTF8 continuation byte 'new' of information to a running total code
+ * point 'old' of all the continuation bytes so far. This is designed to be
+ * used in a loop to convert from UTF-8 to the code point represented */
+#define UTF8_ACCUMULATE(old, new) (((old) << UTF_ACCUMULATION_SHIFT) \
+ | (((U8)new) & UTF_CONTINUATION_MASK))
+
+/* This works in the face of malformed UTF-8. */
+#define UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(s, e) (UTF8_IS_DOWNGRADEABLE_START(*s) \
+ && ( (e) - (s) > 1) \
+ && UTF8_IS_CONTINUATION(*((s)+1)))
/* Convert a two (not one) byte utf8 character to a unicode code point value.
* Needs just one iteration of accumulate. Should not be used unless it is
@@ -197,9 +295,16 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
UTF8_ACCUMULATE((NATIVE_TO_UTF(HI) & UTF_START_MASK(2)), \
NATIVE_TO_UTF(LO))
+/* How many bytes in the UTF-8 encoded character whose first (perhaps only)
+ * byte is pointed to by 's' */
#define UTF8SKIP(s) PL_utf8skip[*(const U8*)(s)]
+/* Is the byte 'c' the same character when encoded in UTF-8 as when not. This
+ * works on both UTF-8 encoded strings and non-encoded, as it returns TRUE in
+ * each for the exact same set of bit patterns. (And it works on any byte in a
+ * UTF-8 encoded string) */
#define UTF8_IS_INVARIANT(c) UNI_IS_INVARIANT(NATIVE_TO_UTF(c))
+
#define NATIVE_IS_INVARIANT(c) UNI_IS_INVARIANT(NATIVE8_TO_UNI(c))
#define MAX_PORTABLE_UTF8_TWO_BYTE 0x3FF /* constrained by EBCDIC */
@@ -208,8 +313,10 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
* bytes from an ordinal that is known to fit into two bytes; it must be less
* than 0x3FF to work across both encodings. */
/* Nocast allows these to be used in the case label of a switch statement */
-#define UTF8_TWO_BYTE_HI_nocast(c) UTF_TO_NATIVE(((c) >> UTF_ACCUMULATION_SHIFT) | (0xFF & UTF_START_MARK(2)))
-#define UTF8_TWO_BYTE_LO_nocast(c) UTF_TO_NATIVE(((c) & UTF_CONTINUATION_MASK) | UTF_CONTINUATION_MARK)
+#define UTF8_TWO_BYTE_HI_nocast(c) NATIVE_TO_I8(((c) \
+ >> UTF_ACCUMULATION_SHIFT) | (0xFF & UTF_START_MARK(2)))
+#define UTF8_TWO_BYTE_LO_nocast(c) NATIVE_TO_I8(((c) & UTF_CONTINUATION_MASK) \
+ | UTF_CONTINUATION_MARK)
#define UTF8_TWO_BYTE_HI(c) ((U8) (UTF8_TWO_BYTE_HI_nocast(c)))
#define UTF8_TWO_BYTE_LO(c) ((U8) (UTF8_TWO_BYTE_LO_nocast(c)))
@@ -228,30 +335,13 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
#define isIDFIRST_lazy_if(p,UTF) ((IN_BYTES || !UTF ) \
? isIDFIRST(*(p)) \
: isIDFIRST_utf8((const U8*)p))
-#define isALNUM_lazy_if(p,UTF) ((IN_BYTES || (!UTF )) \
- ? isALNUM(*(p)) \
- : isALNUM_utf8((const U8*)p))
-
-#define isIDFIRST_lazy(p) isIDFIRST_lazy_if(p,1)
-#define isALNUM_lazy(p) isALNUM_lazy_if(p,1)
+#define isWORDCHAR_lazy_if(p,UTF) ((IN_BYTES || (!UTF )) \
+ ? isWORDCHAR(*(p)) \
+ : isWORDCHAR_utf8((const U8*)p))
+#define isALNUM_lazy_if(p,UTF) isWORDCHAR_lazy_if(p,UTF)
-#define UTF8_MAXBYTES 13
-/* How wide can a single UTF-8 encoded character become in bytes.
- * NOTE: Strictly speaking Perl's UTF-8 should not be called UTF-8
- * since UTF-8 is an encoding of Unicode and given Unicode's current
- * upper limit only four bytes is possible. Perl thinks of UTF-8
- * as a way to encode non-negative integers in a binary format. */
#define UTF8_MAXLEN UTF8_MAXBYTES
-/* The maximum number of UTF-8 bytes a single Unicode character can
- * uppercase/lowercase/fold into; this number depends on the Unicode
- * version. An example of maximal expansion is the U+03B0 which
- * uppercases to U+03C5 U+0308 U+0301. The Unicode databases that
- * tell these things are UnicodeData.txt, CaseFolding.txt, and
- * SpecialCasing.txt. The value is 6 for strict Unicode characters, but it has
- * to be as big as Perl allows for a single character */
-#define UTF8_MAXBYTES_CASE UTF8_MAXBYTES
-
/* A Unicode character can fold to up to 3 characters */
#define UTF8_MAX_FOLD_CHAR_EXPAND 3
@@ -313,24 +403,11 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
* problematic in some contexts. This allows code that needs to check for
* those to to quickly exclude the vast majority of code points it will
* encounter */
-#ifdef EBCDIC
-# define UTF8_FIRST_PROBLEMATIC_CODE_POINT_FIRST_BYTE UTF_TO_NATIVE(0xF1)
-#else
-# define UTF8_FIRST_PROBLEMATIC_CODE_POINT_FIRST_BYTE 0xED
-#endif
+#define UTF8_FIRST_PROBLEMATIC_CODE_POINT_FIRST_BYTE \
+ FIRST_SURROGATE_UTF8_FIRST_BYTE
-/* ASCII EBCDIC I8
- * U+D7FF: \xED\x9F\xBF \xF1\xB5\xBF\xBF last before surrogates
- * U+D800: \xED\xA0\x80 \xF1\xB6\xA0\xA0 1st surrogate
- * U+DFFF: \xED\xBF\xBF \xF1\xB7\xBF\xBF final surrogate
- * U+E000: \xEE\x80\x80 \xF1\xB8\xA0\xA0 next after surrogates
- */
-#ifdef EBCDIC /* Both versions assume well-formed UTF8 */
-# define UTF8_IS_SURROGATE(s) (*(s) == UTF_TO_NATIVE(0xF1) \
- && ((*((s) +1) == UTF_TO_NATIVE(0xB6)) || *((s) + 1) == UTF_TO_NATIVE(0xB7)))
-#else
-# define UTF8_IS_SURROGATE(s) (*(s) == 0xED && *((s) + 1) >= 0xA0)
-#endif
+#define UTF8_IS_SURROGATE(s) cBOOL(is_SURROGATE_utf8(s))
+#define UTF8_IS_REPLACEMENT(s, send) cBOOL(is_REPLACEMENT_utf8_safe(s,send))
/* ASCII EBCDIC I8
* U+10FFFF: \xF4\x8F\xBF\xBF \xF9\xA1\xBF\xBF\xBF max legal Unicode
@@ -338,67 +415,20 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
* U+110001: \xF4\x90\x80\x81 \xF9\xA2\xA0\xA0\xA1
*/
#ifdef EBCDIC /* Both versions assume well-formed UTF8 */
-# define UTF8_IS_SUPER(s) (*(s) >= UTF_TO_NATIVE(0xF9) \
- && (*(s) > UTF_TO_NATIVE(0xF9) || (*((s) + 1) >= UTF_TO_NATIVE(0xA2))))
+# define UTF8_IS_SUPER(s) (NATIVE_TO_I8(* (U8*) (s)) >= 0xF9 \
+ && (NATIVE_TO_I8(* (U8*) (s)) > 0xF9 \
+ || (NATIVE_TO_I8(* (U8*) ((s)) + 1 >= 0xA2))))
#else
-# define UTF8_IS_SUPER(s) (*(s) >= 0xF4 \
- && (*(s) > 0xF4 || (*((s) + 1) >= 0x90)))
+# define UTF8_IS_SUPER(s) (*(U8*) (s) >= 0xF4 \
+ && (*(U8*) (s) > 0xF4 || (*((U8*) (s) + 1) >= 0x90)))
#endif
-/* ASCII EBCDIC I8
- * U+FDCF: \xEF\xB7\x8F \xF1\xBF\xAE\xAF last before non-char block
- * U+FDD0: \xEF\xB7\x90 \xF1\xBF\xAE\xB0 first non-char in block
- * U+FDEF: \xEF\xB7\xAF \xF1\xBF\xAF\xAF last non-char in block
- * U+FDF0: \xEF\xB7\xB0 \xF1\xBF\xAF\xB0 first after non-char block
- * U+FFFF: \xEF\xBF\xBF \xF1\xBF\xBF\xBF
- * U+1FFFF: \xF0\x9F\xBF\xBF \xF3\xBF\xBF\xBF
- * U+2FFFF: \xF0\xAF\xBF\xBF \xF5\xBF\xBF\xBF
- * U+3FFFF: \xF0\xBF\xBF\xBF \xF7\xBF\xBF\xBF
- * U+4FFFF: \xF1\x8F\xBF\xBF \xF8\xA9\xBF\xBF\xBF
- * U+5FFFF: \xF1\x9F\xBF\xBF \xF8\xAB\xBF\xBF\xBF
- * U+6FFFF: \xF1\xAF\xBF\xBF \xF8\xAD\xBF\xBF\xBF
- * U+7FFFF: \xF1\xBF\xBF\xBF \xF8\xAF\xBF\xBF\xBF
- * U+8FFFF: \xF2\x8F\xBF\xBF \xF8\xB1\xBF\xBF\xBF
- * U+9FFFF: \xF2\x9F\xBF\xBF \xF8\xB3\xBF\xBF\xBF
- * U+AFFFF: \xF2\xAF\xBF\xBF \xF8\xB5\xBF\xBF\xBF
- * U+BFFFF: \xF2\xBF\xBF\xBF \xF8\xB7\xBF\xBF\xBF
- * U+CFFFF: \xF3\x8F\xBF\xBF \xF8\xB9\xBF\xBF\xBF
- * U+DFFFF: \xF3\x9F\xBF\xBF \xF8\xBB\xBF\xBF\xBF
- * U+EFFFF: \xF3\xAF\xBF\xBF \xF8\xBD\xBF\xBF\xBF
- * U+FFFFF: \xF3\xBF\xBF\xBF \xF8\xBF\xBF\xBF\xBF
- * U+10FFFF: \xF4\x8F\xBF\xBF \xF9\xA1\xBF\xBF\xBF
- */
-#define UTF8_IS_NONCHAR_(s) ( \
- *(s) >= UTF8_FIRST_PROBLEMATIC_CODE_POINT_FIRST_BYTE \
- && ! UTF8_IS_SUPER(s) \
- && UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_FIRST_PROBLEMATIC(s) \
-
-#ifdef EBCDIC /* Both versions assume well-formed UTF8 */
-# define UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s) \
- ((*(s) == UTF_TO_NATIVE(0xF1) \
- && (*((s) + 1) == UTF_TO_NATIVE(0xBF) \
- && ((*((s) + 2) == UTF_TO_NATIVE(0xAE) \
- && *((s) + 3) >= UTF_TO_NATIVE(0xB0)) \
- || (*((s) + 2) == UTF_TO_NATIVE(0xAF) \
- && *((s) + 3) <= UTF_TO_NATIVE(0xAF))))) \
- || (UTF8SKIP(*(s)) > 3 \
- /* (These were all derived by inspection and experimentation with an */ \
- /* editor) The next line checks the next to final byte in the char */ \
- && *((s) + UTF8SKIP(*(s)) - 2) == UTF_TO_NATIVE(0xBF) \
- && *((s) + UTF8SKIP(*(s)) - 3) == UTF_TO_NATIVE(0xBF) \
- && (NATIVE_TO_UTF(*((s) + UTF8SKIP(*(s)) - 4)) & 0x81) == 0x81 \
- && (NATIVE_TO_UTF(*((s) + UTF8SKIP(*(s)) - 1)) & 0xBE) == 0XBE))
-#else
-# define UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s) \
- ((*(s) == 0xEF \
- && ((*((s) + 1) == 0xB7 && (*((s) + 2) >= 0x90 && (*((s) + 2) <= 0xAF)))\
- /* Gets U+FFF[EF] */ \
- || (*((s) + 1) == 0xBF && ((*((s) + 2) & 0xBE) == 0xBE)))) \
- || ((*((s) + 2) == 0xBF \
- && (*((s) + 3) & 0xBE) == 0xBE \
- /* Excludes things like U+10FFE = \xF0\x90\xBF\xBE */ \
- && (*((s) + 1) & 0x8F) == 0x8F)))
-#endif
+/* These are now machine generated, and the 'given' clause is no longer
+ * applicable */
+#define UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s) \
+ cBOOL(is_NONCHAR_utf8(s))
+#define UTF8_IS_NONCHAR_(s) \
+ UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s)
#define UNICODE_SURROGATE_FIRST 0xD800
#define UNICODE_SURROGATE_LAST 0xDFFF
@@ -417,10 +447,10 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
#define UNICODE_DISALLOW_NONCHAR 0x0020
#define UNICODE_DISALLOW_SUPER 0x0040
#define UNICODE_DISALLOW_FE_FF 0x0080
-#define UNICODE_WARN_ILLEGAL_INTERCHANGE \
- (UNICODE_WARN_SURROGATE|UNICODE_WARN_NONCHAR|UNICODE_WARN_SUPER)
-#define UNICODE_DISALLOW_ILLEGAL_INTERCHANGE \
- (UNICODE_DISALLOW_SURROGATE|UNICODE_DISALLOW_NONCHAR|UNICODE_DISALLOW_SUPER)
+#define UNICODE_WARN_ILLEGAL_INTERCHANGE \
+ (UNICODE_WARN_SURROGATE|UNICODE_WARN_NONCHAR|UNICODE_WARN_SUPER)
+#define UNICODE_DISALLOW_ILLEGAL_INTERCHANGE \
+ (UNICODE_DISALLOW_SURROGATE|UNICODE_DISALLOW_NONCHAR|UNICODE_DISALLOW_SUPER)
/* For backward source compatibility, as are now the default */
#define UNICODE_ALLOW_SURROGATE 0
@@ -445,6 +475,14 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
# define UTF8_QUAD_MAX UINT64_C(0x1000000000)
#endif
+#define LATIN_SMALL_LETTER_SHARP_S LATIN_SMALL_LETTER_SHARP_S_NATIVE
+#define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS \
+ LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE
+#define MICRO_SIGN MICRO_SIGN_NATIVE
+#define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE \
+ LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE_NATIVE
+#define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE \
+ LATIN_SMALL_LETTER_A_WITH_RING_ABOVE_NATIVE
#define UNICODE_GREEK_CAPITAL_LETTER_SIGMA 0x03A3
#define UNICODE_GREEK_SMALL_LETTER_FINAL_SIGMA 0x03C2
#define UNICODE_GREEK_SMALL_LETTER_SIGMA 0x03C3
@@ -452,20 +490,15 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
#define GREEK_CAPITAL_LETTER_MU 0x039C /* Upper and title case of MICRON */
#define LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS 0x0178 /* Also is title case */
#define LATIN_CAPITAL_LETTER_SHARP_S 0x1E9E
+#define LATIN_SMALL_LETTER_LONG_S 0x017F
+#define KELVIN_SIGN 0x212A
+#define ANGSTROM_SIGN 0x212B
#define UNI_DISPLAY_ISPRINT 0x0001
#define UNI_DISPLAY_BACKSLASH 0x0002
#define UNI_DISPLAY_QQ (UNI_DISPLAY_ISPRINT|UNI_DISPLAY_BACKSLASH)
#define UNI_DISPLAY_REGEX (UNI_DISPLAY_ISPRINT|UNI_DISPLAY_BACKSLASH)
-#ifndef EBCDIC
-# define LATIN_SMALL_LETTER_SHARP_S 0x00DF
-# define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS 0x00FF
-# define MICRO_SIGN 0x00B5
-# define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE 0x00C5
-# define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE 0x00E5
-#endif
-
#define ANYOF_FOLD_SHARP_S(node, input, end) \
(ANYOF_BITMAP_TEST(node, LATIN_SMALL_LETTER_SHARP_S) && \
(ANYOF_NONBITMAP(node)) && \
@@ -475,138 +508,71 @@ Perl's extended UTF-8 means we can have start bytes up to FF.
toLOWER((input)[1]) == 's')
#define SHARP_S_SKIP 2
+/* If you want to exclude surrogates, and beyond legal Unicode, see the blame
+ * log for earlier versions which gave details for these */
+
#ifndef EBCDIC
-# define IS_UTF8_CHAR_1(p) \
- ((p)[0] <= 0x7F)
-# define IS_UTF8_CHAR_2(p) \
- ((p)[0] >= 0xC2 && (p)[0] <= 0xDF && \
- (p)[1] >= 0x80 && (p)[1] <= 0xBF)
-# define IS_UTF8_CHAR_3a(p) \
- ((p)[0] == 0xE0 && \
- (p)[1] >= 0xA0 && (p)[1] <= 0xBF && \
- (p)[2] >= 0x80 && (p)[2] <= 0xBF)
-# define IS_UTF8_CHAR_3b(p) \
- ((p)[0] >= 0xE1 && (p)[0] <= 0xEC && \
- (p)[1] >= 0x80 && (p)[1] <= 0xBF && \
- (p)[2] >= 0x80 && (p)[2] <= 0xBF)
-# define IS_UTF8_CHAR_3c(p) \
- ((p)[0] == 0xED && \
- (p)[1] >= 0x80 && (p)[1] <= 0xBF && \
- (p)[2] >= 0x80 && (p)[2] <= 0xBF)
- /* In IS_UTF8_CHAR_3c(p) one could use
- * (p)[1] >= 0x80 && (p)[1] <= 0x9F
- * if one wanted to exclude surrogates. */
-# define IS_UTF8_CHAR_3d(p) \
- ((p)[0] >= 0xEE && (p)[0] <= 0xEF && \
- (p)[1] >= 0x80 && (p)[1] <= 0xBF && \
- (p)[2] >= 0x80 && (p)[2] <= 0xBF)
-# define IS_UTF8_CHAR_4a(p) \
- ((p)[0] == 0xF0 && \
- (p)[1] >= 0x90 && (p)[1] <= 0xBF && \
- (p)[2] >= 0x80 && (p)[2] <= 0xBF && \
- (p)[3] >= 0x80 && (p)[3] <= 0xBF)
-# define IS_UTF8_CHAR_4b(p) \
- ((p)[0] >= 0xF1 && (p)[0] <= 0xF3 && \
- (p)[1] >= 0x80 && (p)[1] <= 0xBF && \
- (p)[2] >= 0x80 && (p)[2] <= 0xBF && \
- (p)[3] >= 0x80 && (p)[3] <= 0xBF)
-/* In IS_UTF8_CHAR_4c(p) one could use
- * (p)[0] == 0xF4
- * if one wanted to stop at the Unicode limit U+10FFFF.
- * The 0xF7 allows us to go to 0x1fffff (0x200000 would
- * require five bytes). Not doing any further code points
- * since that is not needed (and that would not be strict
- * UTF-8, anyway). The "slow path" in Perl_is_utf8_char()
- * will take care of the "extended UTF-8". */
-# define IS_UTF8_CHAR_4c(p) \
- ((p)[0] >= 0xF4 && (p)[0] <= 0xF7 && \
- (p)[1] >= 0x80 && (p)[1] <= 0xBF && \
- (p)[2] >= 0x80 && (p)[2] <= 0xBF && \
- (p)[3] >= 0x80 && (p)[3] <= 0xBF)
-
-# define IS_UTF8_CHAR_3(p) \
- (IS_UTF8_CHAR_3a(p) || \
- IS_UTF8_CHAR_3b(p) || \
- IS_UTF8_CHAR_3c(p) || \
- IS_UTF8_CHAR_3d(p))
-# define IS_UTF8_CHAR_4(p) \
- (IS_UTF8_CHAR_4a(p) || \
- IS_UTF8_CHAR_4b(p) || \
- IS_UTF8_CHAR_4c(p))
+/* This was generated by regen/regcharclass.pl, and then moved here. The lines
+ * that generated it were then commented out. This was done solely because it
+ * takes on the order of 10 minutes to generate, and is never going to change.
+ * The EBCDIC equivalent hasn't been commented out in regcharclass.pl, so it
+ * should generate and run the correct stuff */
+/*
+ UTF8_CHAR: Matches utf8 from 1 to 4 bytes
+
+ 0x0 - 0x1FFFFF
+*/
+/*** GENERATED CODE ***/
+#define is_UTF8_CHAR_utf8_safe(s,e) \
+( ((e)-(s) > 3) ? \
+ ( ( ( ((U8*)s)[0] & 0x80 ) == 0x00 ) ? 1 \
+ : ( 0xC2 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xDF ) ? \
+ ( ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) ? 2 : 0 ) \
+ : ( 0xE0 == ((U8*)s)[0] ) ? \
+ ( ( ( ( ((U8*)s)[1] & 0xE0 ) == 0xA0 ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+ : ( 0xE1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xEF ) ? \
+ ( ( ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+ : ( 0xF0 == ((U8*)s)[0] ) ? \
+ ( ( ( ( 0x90 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0xBF ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\
+ : ( ( ( ( 0xF1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xF7 ) && ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\
+: ((e)-(s) > 2) ? \
+ ( ( ( ((U8*)s)[0] & 0x80 ) == 0x00 ) ? 1 \
+ : ( 0xC2 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xDF ) ? \
+ ( ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) ? 2 : 0 ) \
+ : ( 0xE0 == ((U8*)s)[0] ) ? \
+ ( ( ( ( ((U8*)s)[1] & 0xE0 ) == 0xA0 ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+ : ( ( ( 0xE1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xEF ) && ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\
+: ((e)-(s) > 1) ? \
+ ( ( ( ((U8*)s)[0] & 0x80 ) == 0x00 ) ? 1 \
+ : ( ( 0xC2 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xDF ) && ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) ) ? 2 : 0 )\
+: ((e)-(s) > 0) ? \
+ ( ( ((U8*)s)[0] & 0x80 ) == 0x00 ) \
+: 0 )
+#endif
/* IS_UTF8_CHAR(p) is strictly speaking wrong (not UTF-8) because it
* (1) allows UTF-8 encoded UTF-16 surrogates
* (2) it allows code points past U+10FFFF.
* The Perl_is_utf8_char() full "slow" code will handle the Perl
* "extended UTF-8". */
-# define IS_UTF8_CHAR(p, n) \
- ((n) == 1 ? IS_UTF8_CHAR_1(p) : \
- (n) == 2 ? IS_UTF8_CHAR_2(p) : \
- (n) == 3 ? IS_UTF8_CHAR_3(p) : \
- (n) == 4 ? IS_UTF8_CHAR_4(p) : 0)
-
-# define IS_UTF8_CHAR_FAST(n) ((n) <= 4)
-
-#else /* EBCDIC */
-
-/* This is an attempt to port IS_UTF8_CHAR to EBCDIC based on eyeballing.
- * untested. If want to exclude surrogates and above-Unicode, see the
- * definitions for UTF8_IS_SURROGATE and UTF8_IS_SUPER */
-# define IS_UTF8_CHAR_1(p) \
- (NATIVE_TO_ASCII((p)[0]) <= 0x9F)
-# define IS_UTF8_CHAR_2(p) \
- (NATIVE_TO_I8((p)[0]) >= 0xC5 && NATIVE_TO_I8((p)[0]) <= 0xDF && \
- NATIVE_TO_I8((p)[1]) >= 0xA0 && NATIVE_TO_I8((p)[1]) <= 0xBF)
-# define IS_UTF8_CHAR_3(p) \
- (NATIVE_TO_I8((p)[0]) == 0xE1 && NATIVE_TO_I8((p)[1]) <= 0xEF && \
- NATIVE_TO_I8((p)[1]) >= 0xA0 && NATIVE_TO_I8((p)[1]) <= 0xBF && \
- NATIVE_TO_I8((p)[2]) >= 0xA0 && NATIVE_TO_I8((p)[2]) <= 0xBF)
-# define IS_UTF8_CHAR_4a(p) \
- (NATIVE_TO_I8((p)[0]) == 0xF0 && \
- NATIVE_TO_I8((p)[1]) >= 0xB0 && NATIVE_TO_I8((p)[1]) <= 0xBF && \
- NATIVE_TO_I8((p)[2]) >= 0xA0 && NATIVE_TO_I8((p)[2]) <= 0xBF && \
- NATIVE_TO_I8((p)[3]) >= 0xA0 && NATIVE_TO_I8((p)[3]) <= 0xBF)
-# define IS_UTF8_CHAR_4b(p) \
- (NATIVE_TO_I8((p)[0]) >= 0xF1 && NATIVE_TO_I8((p)[0]) <= 0xF7 && \
- NATIVE_TO_I8((p)[1]) >= 0xA0 && NATIVE_TO_I8((p)[1]) <= 0xBF && \
- NATIVE_TO_I8((p)[2]) >= 0xA0 && NATIVE_TO_I8((p)[2]) <= 0xBF && \
- NATIVE_TO_I8((p)[3]) >= 0xA0 && NATIVE_TO_I8((p)[3]) <= 0xBF)
-# define IS_UTF8_CHAR_5a(p) \
- (NATIVE_TO_I8((p)[0]) == 0xF8 && \
- NATIVE_TO_I8((p)[1]) >= 0xA8 && NATIVE_TO_I8((p)[1]) <= 0xBF && \
- NATIVE_TO_I8((p)[1]) >= 0xA0 && NATIVE_TO_I8((p)[1]) <= 0xBF && \
- NATIVE_TO_I8((p)[2]) >= 0xA0 && NATIVE_TO_I8((p)[2]) <= 0xBF && \
- NATIVE_TO_I8((p)[3]) >= 0xA0 && NATIVE_TO_I8((p)[3]) <= 0xBF)
-# define IS_UTF8_CHAR_5b(p) \
- (NATIVE_TO_I8((p)[0]) >= 0xF9 && NATIVE_TO_I8((p)[1]) <= 0xFB && \
- NATIVE_TO_I8((p)[1]) >= 0xA0 && NATIVE_TO_I8((p)[1]) <= 0xBF && \
- NATIVE_TO_I8((p)[1]) >= 0xA0 && NATIVE_TO_I8((p)[1]) <= 0xBF && \
- NATIVE_TO_I8((p)[2]) >= 0xA0 && NATIVE_TO_I8((p)[2]) <= 0xBF && \
- NATIVE_TO_I8((p)[3]) >= 0xA0 && NATIVE_TO_I8((p)[3]) <= 0xBF)
-
-# define IS_UTF8_CHAR_4(p) \
- (IS_UTF8_CHAR_4a(p) || \
- IS_UTF8_CHAR_4b(p))
-# define IS_UTF8_CHAR_5(p) \
- (IS_UTF8_CHAR_5a(p) || \
- IS_UTF8_CHAR_5b(p))
-# define IS_UTF8_CHAR(p, n) \
- ((n) == 1 ? IS_UTF8_CHAR_1(p) : \
- (n) == 2 ? IS_UTF8_CHAR_2(p) : \
- (n) == 3 ? IS_UTF8_CHAR_3(p) : \
- (n) == 4 ? IS_UTF8_CHAR_4(p) : \
- (n) == 5 ? IS_UTF8_CHAR_5(p) : 0)
+#define IS_UTF8_CHAR(p, n) (is_UTF8_CHAR_utf8_safe(p, (p) + (n)) == n)
+/* regen/regcharclass.pl generates is_UTF8_CHAR_utf8_safe() macros for up to
+ * these number of bytes. So this has to be coordinated with it */
+#ifdef EBCDIC
# define IS_UTF8_CHAR_FAST(n) ((n) <= 5)
+#else
+# define IS_UTF8_CHAR_FAST(n) ((n) <= 4)
+#endif
-#endif /* IS_UTF8_CHAR() for UTF-8 */
+#endif /* H_UTF8 */
/*
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/utfebcdic.h b/gnu/usr.bin/perl/utfebcdic.h
index eff444e7fde..e7f5f32c69f 100644
--- a/gnu/usr.bin/perl/utfebcdic.h
+++ b/gnu/usr.bin/perl/utfebcdic.h
@@ -152,7 +152,7 @@ unsigned char PL_utf8skip[] = {
* remains 'A' */
#if '^' == 95 /* if defined(__MVS__) || defined(??) (VM/ESA?) 1047 */
-EXTCONST unsigned char PL_utf2e[] = { /* I8 to EBCDIC (IBM-1047) */
+EXTCONST unsigned char PL_utf2e[] = { /* I8 to UTFEBCDIC (IBM-1047) */
0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F, 0x16, 0x05, 0x15, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x3C, 0x3D, 0x32, 0x26, 0x18, 0x19, 0x3F, 0x27, 0x1C, 0x1D, 0x1E, 0x1F,
0x40, 0x5A, 0x7F, 0x7B, 0x5B, 0x6C, 0x50, 0x7D, 0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61,
@@ -171,7 +171,7 @@ EXTCONST unsigned char PL_utf2e[] = { /* I8 to EBCDIC (IBM-1047) */
0xDC, 0xDD, 0xDE, 0xDF, 0xE1, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE
};
-EXTCONST unsigned char PL_e2utf[] = { /* EBCDIC (IBM-1047) to I8 */
+EXTCONST unsigned char PL_e2utf[] = { /* UTFEBCDIC (IBM-1047) to I8 */
0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x9D, 0x0A, 0x08, 0x87, 0x18, 0x19, 0x92, 0x8F, 0x1C, 0x1D, 0x1E, 0x1F,
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1B, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x05, 0x06, 0x07,
@@ -192,7 +192,7 @@ EXTCONST unsigned char PL_e2utf[] = { /* EBCDIC (IBM-1047) to I8 */
#endif /* 1047 */
#if '^' == 106 /* if defined(_OSD_POSIX) POSIX-BC */
-unsigned char PL_utf2e[] = { /* I8 to EBCDIC (POSIX-BC) */
+unsigned char PL_utf2e[] = { /* I8 to UTFEBCDIC (POSIX-BC) */
0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F, 0x16, 0x05, 0x15, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x3C, 0x3D, 0x32, 0x26, 0x18, 0x19, 0x3F, 0x27, 0x1C, 0x1D, 0x1E, 0x1F,
0x40, 0x5A, 0x7F, 0x7B, 0x5B, 0x6C, 0x50, 0x7D, 0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61,
@@ -211,7 +211,7 @@ unsigned char PL_utf2e[] = { /* I8 to EBCDIC (POSIX-BC) */
0xDC, 0xC0, 0xDE, 0xDF, 0xE1, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xFA, 0xDD, 0xFC, 0xE0, 0xFE
};
-unsigned char PL_e2utf[] = { /* EBCDIC (POSIX-BC) to I8 */
+unsigned char PL_e2utf[] = { /* UTFEBCDIC (POSIX-BC) to I8 */
0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x9D, 0x0A, 0x08, 0x87, 0x18, 0x19, 0x92, 0x8F, 0x1C, 0x1D, 0x1E, 0x1F,
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1B, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x05, 0x06, 0x07,
@@ -232,7 +232,7 @@ unsigned char PL_e2utf[] = { /* EBCDIC (POSIX-BC) to I8 */
#endif /* POSIX-BC */
#if '^' == 176 /* if defined(??) (OS/400?) 037 */
-unsigned char PL_utf2e[] = { /* I8 to EBCDIC (IBM-037) */
+unsigned char PL_utf2e[] = { /* I8 to UTFEBCDIC (IBM-037) */
0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F, 0x16, 0x05, 0x25, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x3C, 0x3D, 0x32, 0x26, 0x18, 0x19, 0x3F, 0x27, 0x1C, 0x1D, 0x1E, 0x1F,
0x40, 0x5A, 0x7F, 0x7B, 0x5B, 0x6C, 0x50, 0x7D, 0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61,
@@ -251,7 +251,7 @@ unsigned char PL_utf2e[] = { /* I8 to EBCDIC (IBM-037) */
0xDC, 0xDD, 0xDE, 0xDF, 0xE1, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE
};
-unsigned char PL_e2utf[] = { /* EBCDIC (IBM-037) to I8 */
+unsigned char PL_e2utf[] = { /* UTFEBCDIC (IBM-037) to I8 */
0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x9D, 0x85, 0x08, 0x87, 0x18, 0x19, 0x92, 0x8F, 0x1C, 0x1D, 0x1E, 0x1F,
0x80, 0x81, 0x82, 0x83, 0x84, 0x0A, 0x17, 0x1B, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x05, 0x06, 0x07,
@@ -295,12 +295,6 @@ EXTCONST unsigned char PL_a2e[] = { /* ASCII (iso-8859-1) to EBCDIC (IBM-1047) *
0x8C, 0x49, 0xCD, 0xCE, 0xCB, 0xCF, 0xCC, 0xE1, 0x70, 0xDD, 0xDE, 0xDB, 0xDC, 0x8D, 0x8E, 0xDF
};
-#define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS 0xDF
-#define LATIN_SMALL_LETTER_SHARP_S 0x59
-#define MICRO_SIGN 0xA0
-#define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE 0x0067
-#define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE 0x0047
-
EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (IBM-1047) to ASCII (iso-8859-1) */
0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x9D, 0x0A, 0x08, 0x87, 0x18, 0x19, 0x92, 0x8F, 0x1C, 0x1D, 0x1E, 0x1F,
@@ -377,12 +371,6 @@ EXTCONST unsigned char PL_a2e[] = { /* ASCII (ISO8859-1) to EBCDIC (POSIX-BC) */
0x8C, 0x49, 0xCD, 0xCE, 0xCB, 0xCF, 0xCC, 0xE1, 0x70, 0xC0, 0xDE, 0xDB, 0xDC, 0x8D, 0x8E, 0xDF
};
-#define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS 0xDF
-#define LATIN_SMALL_LETTER_SHARP_S 0x59
-#define MICRO_SIGN 0xA0
-#define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE 0x0067
-#define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE 0x0047
-
EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (POSIX-BC) to ASCII (ISO8859-1) */
0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x9D, 0x0A, 0x08, 0x87, 0x18, 0x19, 0x92, 0x8F, 0x1C, 0x1D, 0x1E, 0x1F,
@@ -459,13 +447,6 @@ EXTCONST unsigned char PL_a2e[] = { /* ASCII (ISO8859-1) to EBCDIC (IBM-037) */
0x8C, 0x49, 0xCD, 0xCE, 0xCB, 0xCF, 0xCC, 0xE1, 0x70, 0xDD, 0xDE, 0xDB, 0xDC, 0x8D, 0x8E, 0xDF
};
-
-#define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS 0xDF
-#define LATIN_SMALL_LETTER_SHARP_S 0x59
-#define MICRO_SIGN 0xA0
-#define LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE 0x0067
-#define LATIN_SMALL_LETTER_A_WITH_RING_ABOVE 0x0047
-
EXTCONST unsigned char PL_e2a[] = { /* EBCDIC (IBM-037) to ASCII (ISO8859-1) */
0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x9D, 0x85, 0x08, 0x87, 0x18, 0x19, 0x92, 0x8F, 0x1C, 0x1D, 0x1E, 0x1F,
@@ -522,6 +503,10 @@ EXTCONST unsigned char PL_fold[] = { /* fast EBCDIC case folding table, 'A' =>
};
#endif /* 037 */
+/* Since the EBCDIC code pages are isomorphic to Latin1, that table is merely a
+ * duplicate */
+EXTCONST unsigned char * PL_fold_latin1 = PL_fold;
+
#else
EXTCONST unsigned char PL_utf8skip[];
EXTCONST unsigned char PL_e2utf[];
@@ -529,12 +514,9 @@ EXTCONST unsigned char PL_utf2e[];
EXTCONST unsigned char PL_e2a[];
EXTCONST unsigned char PL_a2e[];
EXTCONST unsigned char PL_fold[];
+EXTCONST unsigned char * PL_fold_latin1;
#endif
-/* Since the EBCDIC code pages are isomorphic to Latin1, that table is merely a
- * duplicate */
-EXTCONST unsigned char * PL_fold_latin1 = PL_fold;
-
END_EXTERN_C
/* EBCDIC-happy ways of converting native code to UTF-8 */
@@ -560,8 +542,6 @@ END_EXTERN_C
Unicode Bit pattern 1st Byte 2nd Byte 3rd Byte 4th Byte 5th Byte 6th Byte 7th byte
U+0000..U+007F 000000000xxxxxxx 0xxxxxxx
U+0080..U+009F 00000000100xxxxx 100xxxxx
- U+00A0..U+00FF 00000000yyyxxxxx 11000yyy 101xxxxx
-
U+00A0..U+03FF 000000yyyyyxxxxx 110yyyyy 101xxxxx
U+0400..U+3FFF 00zzzzyyyyyxxxxx 1110zzzz 101yyyyy 101xxxxx
U+4000..U+3FFFF 0wwwzzzzzyyyyyxxxxx 11110www 101zzzzz 101yyyyy 101xxxxx
@@ -581,14 +561,17 @@ END_EXTERN_C
(uv) < 0x400000 ? 5 : \
(uv) < 0x4000000 ? 6 : 7 )
-
#define UNI_IS_INVARIANT(c) ((c) < 0xA0)
-/* UTF-EBCDIC semantic macros - transform back into I8 and then compare */
+
+/* UTF-EBCDIC semantic macros - transform back into I8 and then compare
+ * Comments as to the meaning of each are given at their corresponding utf8.h
+ * definitions */
#define UTF8_IS_START(c) (NATIVE_TO_UTF(c) >= 0xC5 && NATIVE_TO_UTF(c) != 0xE0)
#define UTF8_IS_CONTINUATION(c) ((NATIVE_TO_UTF(c) & 0xE0) == 0xA0)
#define UTF8_IS_CONTINUED(c) (NATIVE_TO_UTF(c) >= 0xA0)
#define UTF8_IS_DOWNGRADEABLE_START(c) (NATIVE_TO_UTF(c) >= 0xC5 && NATIVE_TO_UTF(c) <= 0xC7)
+#define UTF8_IS_ABOVE_LATIN1(c) (NATIVE_TO_I8(c) >= 0xC8)
#define UTF_START_MARK(len) (((len) > 7) ? 0xFF : ((U8)(0xFE << (7-(len)))))
#define UTF_START_MASK(len) (((len) >= 6) ? 0x01 : (0x1F >> ((len)-2)))
@@ -596,12 +579,25 @@ END_EXTERN_C
#define UTF_CONTINUATION_MASK ((U8)0x1f)
#define UTF_ACCUMULATION_SHIFT 5
+/* How wide can a single UTF-8 encoded character become in bytes. */
+/* NOTE: Strictly speaking Perl's UTF-8 should not be called UTF-8 since UTF-8
+ * is an encoding of Unicode, and Unicode's upper limit, 0x10FFFF, can be
+ * expressed with 5 bytes. However, Perl thinks of UTF-8 as a way to encode
+ * non-negative integers in a binary format, even those above Unicode */
+#define UTF8_MAXBYTES 7
+
+/* The maximum number of UTF-8 bytes a single Unicode character can
+ * uppercase/lowercase/fold into. Unicode guarantees that the maximum
+ * expansion is 3 characters. On EBCDIC platforms, the highest Unicode
+ * character occupies 5 bytes, therefore this number is 15 */
+#define UTF8_MAXBYTES_CASE 15
+
/*
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
- * indent-tabs-mode: t
+ * indent-tabs-mode: nil
* End:
*
- * ex: set ts=8 sts=4 sw=4 noet:
+ * ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/gnu/usr.bin/perl/vms/descrip_mms.template b/gnu/usr.bin/perl/vms/descrip_mms.template
index f88d1d3ccbd..dc6f62d5a4f 100644
--- a/gnu/usr.bin/perl/vms/descrip_mms.template
+++ b/gnu/usr.bin/perl/vms/descrip_mms.template
@@ -326,10 +326,10 @@ x2p : [.x2p]$(DBG)a2p$(E) [.x2p]s2p.com [.x2p]find2perl.com
extra.pods : miniperl
@ @extra_pods.com
-PERLDELTA_CURRENT = [.pod]perl5163delta.pod
+PERLDELTA_CURRENT = [.pod]perl5182delta.pod
$(PERLDELTA_CURRENT) : [.pod]perldelta.pod
- Copy/NoConfirm/Log $(MMS$SOURCE) $(MMS$TARGET)
+ Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
[.pod]perlapi.pod : embed.fnc autodoc.pl $(MINIPERL_EXE)
$(MINIPERL) autodoc.pl
@@ -417,8 +417,8 @@ generate_uudmap$(O) : generate_uudmap.c mg_raw.h
# The song and dance with gen_shrfls.opt accommodates DCL's line length limit.
$(DBG)perlshr_xtras.ts : perl.h config.h vmsish.h proto.h [.vms]gen_shrfls.pl $(MINIPERL_EXE) $(MAKEFILE) $(CRTL)
@ $(MINIPERL) makedef.pl "PLATFORM=vms" > makedef.lis
- @ $(MINIPERL) -e "print join('|',@ARGV),'|';" "$(CC)$(CFLAGS)" >gen_shrfls.opt
- @ $(MINIPERL) -e "print join('|',@ARGV);" "$(O)" "$(DBG)" "$(OLB)" "$(EXT)" "$(CRTL)" >>gen_shrfls.opt
+ @ $(MINIPERLQ) -e "print join('|',@ARGV),'|';" "$(CC)$(CFLAGS)" >gen_shrfls.opt
+ @ $(MINIPERLQ) -e "print join('|',@ARGV);" "$(O)" "$(DBG)" "$(OLB)" "$(EXT)" "$(CRTL)" >>gen_shrfls.opt
$(MINIPERL) [.vms]gen_shrfls.pl -f gen_shrfls.opt
@ Delete/NoLog/NoConfirm gen_shrfls.opt;
@ If F$Search("$(DBG)perlshr_xtras.ts").nes."" Then Delete/NoLog/NoConfirm $(DBG)perlshr_xtras.ts;*
@@ -559,7 +559,7 @@ nonxsext : $(LIBPREREQ) preplibrary $(MINIPERL_EXE) [.pod]perlfunc.pod
# search in same dir as source file
[.x2p]a2p$(O) : [.x2p]a2p.c [.x2p]a2py.c [.x2p]INTERN.h [.x2p]a2p.h [.x2p]hash.h [.x2p]str.h config.h handy.h vmsish.h $(MINIPERL_EXE)
$(MINIPERL) -pe "s/^#line\s+(\d+)\s+\Q""y.tab.c""/#line $1 ""y_tab.c""/;" $(MMS$SOURCE) >$(MMS$TARGET_NAME)_vms.c
- $(CC) $(X2PCFLAGS) /Object=$(MMS$TARGET)/Include=([.x2p],[]) $(MMS$TARGET_NAME)_vms.c
+ $(CC) $(X2PCFLAGS) /Object=$(MMS$TARGET)/Include=([.x2p],[],"./x2p") $(MMS$TARGET_NAME)_vms.c
Delete/Log/NoConfirm $(MMS$TARGET_NAME)_vms.c;
# gcc cpp broken -- doesn't look in directory of source file for #include ""
@@ -615,8 +615,10 @@ regen_headers :
perly$(O) : perly.c, perly.h, $(h)
.endif
-[.t.lib]vmsfspec.t : [.vms.ext]filespec.t
- Copy/NoConfirm/Log $(MMS$SOURCE) $(MMS$TARGET)
+VMSFSPEC_T = [.t.lib]vmsfspec.t
+
+$(VMSFSPEC_T) : [.vms.ext]filespec.t
+ Copy/NoConfirm/Log $(MMS$SOURCE) $(VMSFSPEC_T)
check : test
@ Continue
diff --git a/gnu/usr.bin/perl/warnings.h b/gnu/usr.bin/perl/warnings.h
index 39ebe6a78c1..5c40d5c398b 100644
--- a/gnu/usr.bin/perl/warnings.h
+++ b/gnu/usr.bin/perl/warnings.h
@@ -29,67 +29,75 @@
/* Warnings Categories added in Perl 5.008 */
-#define WARN_ALL 0
-#define WARN_CLOSURE 1
-#define WARN_DEPRECATED 2
-#define WARN_EXITING 3
-#define WARN_GLOB 4
-#define WARN_IO 5
-#define WARN_CLOSED 6
-#define WARN_EXEC 7
-#define WARN_LAYER 8
-#define WARN_NEWLINE 9
-#define WARN_PIPE 10
-#define WARN_UNOPENED 11
-#define WARN_MISC 12
-#define WARN_NUMERIC 13
-#define WARN_ONCE 14
-#define WARN_OVERFLOW 15
-#define WARN_PACK 16
-#define WARN_PORTABLE 17
-#define WARN_RECURSION 18
-#define WARN_REDEFINE 19
-#define WARN_REGEXP 20
-#define WARN_SEVERE 21
-#define WARN_DEBUGGING 22
-#define WARN_INPLACE 23
-#define WARN_INTERNAL 24
-#define WARN_MALLOC 25
-#define WARN_SIGNAL 26
-#define WARN_SUBSTR 27
-#define WARN_SYNTAX 28
-#define WARN_AMBIGUOUS 29
-#define WARN_BAREWORD 30
-#define WARN_DIGIT 31
-#define WARN_PARENTHESIS 32
-#define WARN_PRECEDENCE 33
-#define WARN_PRINTF 34
-#define WARN_PROTOTYPE 35
-#define WARN_QW 36
-#define WARN_RESERVED 37
-#define WARN_SEMICOLON 38
-#define WARN_TAINT 39
-#define WARN_THREADS 40
-#define WARN_UNINITIALIZED 41
-#define WARN_UNPACK 42
-#define WARN_UNTIE 43
-#define WARN_UTF8 44
-#define WARN_VOID 45
+#define WARN_ALL 0
+#define WARN_CLOSURE 1
+#define WARN_DEPRECATED 2
+#define WARN_EXITING 3
+#define WARN_GLOB 4
+#define WARN_IO 5
+#define WARN_CLOSED 6
+#define WARN_EXEC 7
+#define WARN_LAYER 8
+#define WARN_NEWLINE 9
+#define WARN_PIPE 10
+#define WARN_UNOPENED 11
+#define WARN_MISC 12
+#define WARN_NUMERIC 13
+#define WARN_ONCE 14
+#define WARN_OVERFLOW 15
+#define WARN_PACK 16
+#define WARN_PORTABLE 17
+#define WARN_RECURSION 18
+#define WARN_REDEFINE 19
+#define WARN_REGEXP 20
+#define WARN_SEVERE 21
+#define WARN_DEBUGGING 22
+#define WARN_INPLACE 23
+#define WARN_INTERNAL 24
+#define WARN_MALLOC 25
+#define WARN_SIGNAL 26
+#define WARN_SUBSTR 27
+#define WARN_SYNTAX 28
+#define WARN_AMBIGUOUS 29
+#define WARN_BAREWORD 30
+#define WARN_DIGIT 31
+#define WARN_PARENTHESIS 32
+#define WARN_PRECEDENCE 33
+#define WARN_PRINTF 34
+#define WARN_PROTOTYPE 35
+#define WARN_QW 36
+#define WARN_RESERVED 37
+#define WARN_SEMICOLON 38
+#define WARN_TAINT 39
+#define WARN_THREADS 40
+#define WARN_UNINITIALIZED 41
+#define WARN_UNPACK 42
+#define WARN_UNTIE 43
+#define WARN_UTF8 44
+#define WARN_VOID 45
/* Warnings Categories added in Perl 5.011 */
-#define WARN_IMPRECISION 46
-#define WARN_ILLEGALPROTO 47
+#define WARN_IMPRECISION 46
+#define WARN_ILLEGALPROTO 47
/* Warnings Categories added in Perl 5.013 */
-#define WARN_NON_UNICODE 48
-#define WARN_NONCHAR 49
-#define WARN_SURROGATE 50
+#define WARN_NON_UNICODE 48
+#define WARN_NONCHAR 49
+#define WARN_SURROGATE 50
-#define WARNsize 13
-#define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125\125"
-#define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0\0"
+/* Warnings Categories added in Perl 5.017 */
+
+#define WARN_EXPERIMENTAL 51
+#define WARN_EXPERIMENTAL__LEXICAL_SUBS 52
+#define WARN_EXPERIMENTAL__LEXICAL_TOPIC 53
+#define WARN_EXPERIMENTAL__REGEX_SETS 54
+#define WARN_EXPERIMENTAL__SMARTMATCH 55
+
+#define WARNsize 14
+#define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125\125\125"
+#define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
#define isLEXWARN_on (PL_curcop->cop_warnings != pWARN_STD)
#define isLEXWARN_off (PL_curcop->cop_warnings == pWARN_STD)
diff --git a/gnu/usr.bin/perl/win32/Makefile.ce b/gnu/usr.bin/perl/win32/Makefile.ce
index 77ec3ea713c..b94c47a666d 100644
--- a/gnu/usr.bin/perl/win32/Makefile.ce
+++ b/gnu/usr.bin/perl/win32/Makefile.ce
@@ -5,8 +5,7 @@
#
SRCDIR = ..
-PV = 59
-INST_VER = 5.16.3
+PV = 517
# INSTALL_ROOT specifies a path where this perl will be installed on CE device
INSTALL_ROOT=/netzwerk/sprache/perl
@@ -82,6 +81,7 @@ MACHINE=wince-arm-hpc-wce300
#MACHINE=wince-mips-palm-wce211
#MACHINE=wince-sh3-palm-wce211
#MACHINE=wince-x86em-palm-wce211
+#MACHINE=wince-x86-hpc-wce300
!endif
# set this to your email address
@@ -336,6 +336,24 @@ STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
$(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif
+!if "$(MACHINE)" == "wince-x86-hpc-wce300"
+CC = cl.exe
+ARCH = X86EM
+CPU = X86
+TARGETCPU = X86
+CEVersion = 400
+OSVERSION = WCE400
+PLATFORM = MS Pocket PC
+MCFLAGS = -DX86 -D_X86_ -Dx86 -DPROCESSOR_X86 -D _MT -D _DLL \
+ -DPALM_SIZE -DPOCKET_SIZE -I $(CELIBDLLDIR)\inc
+MACH = -machine:IX86
+SUBSYS = -subsystem:windowsce,2.0
+CELIBPATH = $(CELIBDLLDIR)\wince-x86-hpc-wce300-release
+LDLIBPATH = -libpath:$(CELIBPATH)
+STARTOBJS = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
+ $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
+!endif
+
######################################################################
# common section
@@ -363,6 +381,9 @@ RCDEFS = /l 0x407 /r /d "UNICODE" /d UNDER_CE=$(CEVersion) \
PATH=$(CEPATH);$(PATH)
+# attention, for eVC 4, these paths are not generated correctly since the
+# WinCE SDK is organized differently from eVC 3, replace the next 2 macros
+# with absolute paths to the correct directories on your system
INCLUDE=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\include
LIB=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(ARCH)
@@ -472,8 +493,9 @@ CELIB = celib.lib
CELIB = celib.lib
!endif
+#use ws2.lib instead of winsock.lib for WSAGetLastError
CELIBS = -nodefaultlib \
- winsock.lib $(CELIB) coredll.lib
+ ws2.lib $(CELIB) coredll.lib
!if $(CEVersion) > 200
CELIBS = $(CELIBS) corelibc.lib
@@ -488,10 +510,10 @@ LIBFILES = $(LIBBASEFILES) $(LIBC)
CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
$(PCHFLAGS) $(OPTIMIZE)
-LINK_FLAGS = -nologo -machine:$(PROCESSOR_ARCHITECTURE)
+LINK_FLAGS = -nologo -opt:ref,icf -machine:$(PROCESSOR_ARCHITECTURE)
!if "$(CFG)" == "DEBUG"
-LINK_FLAGS = $(LINK_FLAGS) -debug:full -pdb:none
+LINK_FLAGS = $(LINK_FLAGS) -debug
!else
LINK_FLAGS = $(LINK_FLAGS) -release
!endif
@@ -512,6 +534,9 @@ o = .obj
.c$(o):
$(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
+.c.i:
+ $(CC) -c -I$(<D) $(CFLAGS_O) -P $(OBJOUT_FLAG)$@ $<
+
.y.c:
$(NOOP)
@@ -535,12 +560,18 @@ CONFIGPM = ..\xlib\$(CROSS_NAME)\Config.pm
MINIMOD = ..\lib\ExtUtils\Miniperl.pm
# Unicode data files generated by mktables
+FIRSTUNIFILE = ..\lib\unicore\Decomposition.pl
UNIDATAFILES = ..\lib\unicore\Decomposition.pl \
..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
..\lib\unicore\Heavy.pl ..\lib\unicore\mktables.lst \
..\lib\unicore\UCD.pl ..\lib\unicore\Name.pm \
..\lib\unicore\TestProp.pl
+PERLEXE_MANIFEST= .\perlexe.manifest
+PERLEXE_ICO = .\perlexe.ico
+PERLEXE_RES = .\perlexe.res
+PERLDLL_RES =
+
# Directories of Unicode data files generated by mktables
UNIDATADIR1 = ..\lib\unicore\To
UNIDATADIR2 = ..\lib\unicore\lib
@@ -556,12 +587,6 @@ MAKE = nmake -nologo
CFGSH_TMPL = config.ce
CFGH_TMPL = config_H.ce
-#
-# filenames given to xsubpp must have forward slashes (since it puts
-# full pathnames in #line strings)
-XSUBPP = $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) ..\$(EXTUTILSDIR)\xsubpp \
- -C++ -prototypes
-
MICROCORE_SRC = \
..\av.c \
..\deb.c \
@@ -572,8 +597,11 @@ MICROCORE_SRC = \
..\gv.c \
..\mro.c \
..\hv.c \
+ ..\locale.c \
..\keywords.c \
+ ..\mathoms.c \
..\mg.c \
+ ..\numeric.c \
..\op.c \
..\pad.c \
..\perl.c \
@@ -614,8 +642,6 @@ WIN32_SRC = \
WIN32_SRC = $(WIN32_SRC) .\$(CRYPT_SRC)
!ENDIF
-DLL_SRC = $(DYNALOADER).c
-
CORE_NOCFG_H = \
..\av.h \
..\cop.h \
@@ -626,6 +652,7 @@ CORE_NOCFG_H = \
..\gv.h \
..\handy.h \
..\hv.h \
+ ..\hv_func.h \
..\iperlsys.h \
..\mg.h \
..\nostdio.h \
@@ -670,7 +697,6 @@ EXTENSION_PM = \
$(ERRNO_PM)
CFG_VARS = \
- "INST_DRV=$(INST_DRV)" \
"INST_TOP=$(INST_TOP)" \
"INST_VER=$(INST_VER)" \
"INST_ARCH=$(INST_ARCH)" \
@@ -696,6 +722,16 @@ CFG_VARS = \
"LINK_FLAGS=$(LDLIBPATH) $(LINK_FLAGS) $(SUBSYS)" \
"optimize=$(OPTIMIZE)"
+ICWD = -I..\dist\Cwd -I..\dist\Cwd\lib
+ICWD1 = -I..\..\dist\Cwd -I..\..\dist\Cwd\lib
+
+#
+# filenames given to xsubpp must have forward slashes (since it puts
+# full pathnames in #line strings)
+XSUBPP = $(HPERL) -I..\..\lib $(ICWD1) -MCross=$(CROSS_NAME) ..\$(EXTUTILSDIR)\xsubpp \
+ -C++ -prototypes
+
+
#
# Top targets
#
@@ -704,8 +740,8 @@ all: hostminiperl $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) MakePPPort E
$(DYNALOADER)$(o) : $(DYNALOADER).c xconfig.h $(EXTDIR)\DynaLoader\dlutils.c
-$(CONFIGPM) : $(HPERL) ..\config.sh .\xconfig.h config_h.PL ..\minimod.pl
- cd .. && $(HPERL) configpm --cross=$(CROSS_NAME) --no-glossary
+$(CONFIGPM) : $(HPERL) ..\Cross\config-$(MACHINE).sh config_h.PL ..\minimod.pl
+ cd .. && $(HPERL) -Ilib configpm --cross=$(CROSS_NAME) --no-glossary
-mkdir $(XCOREDIR)
$(XCOPY) ..\*.h $(XCOREDIR)\*.*
$(XCOPY) ..\*.inc $(XCOREDIR)\*.*
@@ -716,30 +752,15 @@ $(CONFIGPM) : $(HPERL) ..\config.sh .\xconfig.h config_h.PL ..\minimod.pl
.\xconfig.h:
-del /f xconfig.h
-mkdir $(XCOREDIR)
- -$(HPERL) -I..\lib -MCross=$(CROSS_NAME) config_h.PL "INST_VER=$(INST_VER)" "CORE_DIR=$(XCOREDIR)" "CONFIG_H=xconfig.h"
+ -$(HPERL) -I..\lib $(ICWD) -MCross=$(CROSS_NAME) config_h.PL "INST_VER=$(INST_VER)" "CORE_DIR=$(XCOREDIR)" "CONFIG_H=xconfig.h"
$(XCOPY) xconfig.h $(XCOREDIR)\config.h
-..\config.sh: config.ce config_sh.PL
- $(HPERL) -I..\lib -I. config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
+..\Cross\config-$(MACHINE).sh: config.ce config_sh.PL
+ $(HPERL) -I..\lib -I. config_sh.PL $(CFG_VARS) config.ce > ..\Cross\config-$(MACHINE).sh
$(MINIMOD) : ..\minimod.pl
cd .. && $(HPERL) minimod.pl > lib\ExtUtils\Miniperl.pm
-$(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
- if not exist $(AUTODIR) mkdir $(AUTODIR)
- cd $(EXTDIR)\$(*B)
- $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) $(*B)_pm.PL
- $(HPERL) -I..\..\lib -MCross=$(CROSS_NAME) XSLoader_pm.PL
- cd ..\..\win32
- $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
- $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
- cd $(EXTDIR)\$(*B)
- $(XSUBPP) dl_win32.xs > $(*B).c
- cd ..\..\win32
-
-$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
- $(COPY) dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
-
MakePPPort: $(MINIPERL) $(CONFIGPM)
$(HPERL) -I..\lib -MCross=$(CROSS_NAME) ..\mkppport
@@ -764,8 +785,8 @@ Extensions_clean:
#----------------------------------------------------------------------------------
-$(PERLEXE_RES): perl.rc perl.ico
- rc $(RCDEFS) perl.rc
+$(PERLEXE_RES): perlexe.rc perl.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
+ rc $(RCDEFS) perlexe.rc
clean:
-rm -f $(MACHINE)/dll/*
@@ -773,7 +794,7 @@ clean:
-rm -f $(MACHINE)/*.exe
-rm -f $(MACHINE)/*.dll
-rm -f $(MACHINE)/*.lib
- -rm -f ../config.sh ../lib/Config.pm
+ -rm -f ..\Cross\config-$(MACHINE).sh ../lib/Config.pm
-rm -f config.h xconfig.h perl.res
-rm -f ../t/test_state
@@ -788,6 +809,7 @@ $(DLLDIR)\gv.obj \
$(DLLDIR)\mro.obj \
$(DLLDIR)\hv.obj \
$(DLLDIR)\locale.obj \
+$(DLLDIR)\keywords.obj \
$(DLLDIR)\mathoms.obj \
$(DLLDIR)\mg.obj \
$(DLLDIR)\numeric.obj \
@@ -846,13 +868,13 @@ $(DLLDIR)\perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h
rem (frustrated) mv perllib.obj $(DLLDIR)
!ENDIF
-perldll.def : $(HPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl
- $(HPERL) -MCross -I..\lib create_perllibst_h.pl
- $(HPERL) -MCross -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
+perldll.def : $(HPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl .\xconfig.h
+ $(HPERL) -I..\lib -MCross create_perllibst_h.pl
+ $(HPERL) -I..\lib -MCross -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
CCTYPE=$(CCTYPE) -DPERL_DLL=$(PERLDLL) TARG_DIR=..\ > perldll.def
$(PERLDLL) : $(DLLDIR) perldll.def $(XDLLOBJS) $(PERLDLL_RES)
- $(LINK32) -dll -def:perldll.def -out:$@ \
+ $(LINK32) -dll -def:perldll.def -base:0x28000000 -out:$@ \
$(SUBSYS) $(LDLIBPATH) \
$(LINK_FLAGS) $(LIBFILES) \
$(XDLLOBJS) $(PERLDLL_RES)
@@ -915,7 +937,7 @@ install: all
$(UNIDATAFILES) : $(HPERL) $(CONFIGPM) ..\lib\unicore\mktables
cd ..\lib\unicore && \
- $(HPERL) -I.. mktables -P ..\..\pod -maketest -makelist -p
+ $(HPERL) -I.. -I..\..\lib $(ICWD1) -MCross=$(CROSS_NAME) mktables -P ..\..\pod -maketest -makelist -p -check $@ $(FIRSTUNIFILE)
dist: all
$(HPERL) -I..\lib -MCross=$(CROSS_NAME) ce-helpers\makedist.pl --distdir=dist-$(CROSS_NAME) --cross-name=$(CROSS_NAME)
diff --git a/gnu/usr.bin/perl/win32/config.ce b/gnu/usr.bin/perl/win32/config.ce
index c963e827dbf..29071d5cd79 100644
--- a/gnu/usr.bin/perl/win32/config.ce
+++ b/gnu/usr.bin/perl/win32/config.ce
@@ -35,6 +35,7 @@ bash=''
bin='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
binexp='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
bison=''
+bootstrap_charset='undef'
byacc='byacc'
byteorder='1234'
c=''
@@ -271,7 +272,10 @@ d_inetaton='undef'
d_inetntop='undef'
d_inetpton='undef'
d_int64_t='undef'
+d_ip_mreq='undef'
+d_ip_mreq_source='undef'
d_ipv6_mreq='undef'
+d_ipv6_mreq_source='undef'
d_isascii='define'
d_isblank='undef'
d_isfinite='undef'
@@ -833,7 +837,7 @@ plibpth=''
pmake=''
pr=''
prefix='~INST_TOP~'
-prefixexp='~INST_DRV~'
+prefixexp='~INST_TOP~'
privlib='~INST_TOP~~INST_VER~\lib'
privlibexp='~INST_TOP~~INST_VER~\lib'
procselfexe=''
@@ -940,7 +944,7 @@ stdio_stream_array=''
strerror_r_proto='0'
strings='/usr/include/string.h'
submit=''
-subversion='~SUBVERSION~'
+subversion='~PERL_SUBVERSION~'
sysman='/usr/man/man1'
tail=''
tar=''
@@ -1019,7 +1023,7 @@ vendorlib_stem=''
vendorlibexp=''
vendorprefix=''
vendorprefixexp=''
-version='~VERSION~'
+version=''
versiononly='undef'
vi=''
voidflags='15'
diff --git a/gnu/usr.bin/perl/win32/config.gc b/gnu/usr.bin/perl/win32/config.gc
index 3cc0ed7de22..12b4296c815 100644
--- a/gnu/usr.bin/perl/win32/config.gc
+++ b/gnu/usr.bin/perl/win32/config.gc
@@ -1,5 +1,5 @@
## Configured by: ~cf_email~
-## Target system: WIN32
+## Target system: WIN32
Author=''
Date='$Date'
Header=''
@@ -22,7 +22,7 @@ api_revision='~PERL_API_REVISION~'
api_subversion='~PERL_API_SUBVERSION~'
api_version='~PERL_API_VERSION~'
api_versionstring='~PERL_API_REVISION~.~PERL_API_VERSION~.~PERL_API_SUBVERSION~'
-ar='ar'
+ar='~ARCHPREFIX~ar'
archlib='~INST_TOP~~INST_VER~\lib~INST_ARCH~'
archlibexp='~INST_TOP~~INST_VER~\lib~INST_ARCH~'
archname64=''
@@ -35,12 +35,13 @@ bash=''
bin='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
binexp='~INST_TOP~~INST_VER~\bin~INST_ARCH~'
bison=''
+bootstrap_charset='undef'
byacc='byacc'
byteorder='1234'
c=''
castflags='0'
cat='type'
-cc='gcc'
+cc='~ARCHPREFIX~gcc'
cccdlflags=' '
ccdlflags=' '
ccflags='-MD -DWIN32'
@@ -271,7 +272,10 @@ d_inetaton='undef'
d_inetntop='undef'
d_inetpton='undef'
d_int64_t='undef'
+d_ip_mreq='undef'
+d_ip_mreq_source='undef'
d_ipv6_mreq='undef'
+d_ipv6_mreq_source='undef'
d_isascii='define'
d_isblank='undef'
d_isfinite='undef'
@@ -289,7 +293,7 @@ d_localtime_r_needs_tzset='undef'
d_locconv='define'
d_lockf='undef'
d_longdbl='define'
-d_longlong='undef'
+d_longlong='define'
d_lseekproto='define'
d_lstat='undef'
d_madvise='undef'
@@ -538,6 +542,7 @@ db_version_patch='0'
defvoidused='15'
direntrytype='struct direct'
dlext='dll'
+dlltool='~ARCHPREFIX~dlltool'
dlsrc='dl_win32.xs'
doublesize='8'
drand01='(rand()/(double)((unsigned)1<<RANDBITS))'
@@ -755,7 +760,7 @@ ivsize='4'
ivtype='long'
known_extensions='~static_ext~ ~dynamic_ext~ ~nonxs_ext~'
ksh=''
-ld='g++'
+ld='~ARCHPREFIX~g++'
lddlflags='-mdll ~LINK_FLAGS~'
ldflags='~LINK_FLAGS~'
ldflags_uselargefiles=''
@@ -823,7 +828,7 @@ netdb_hlen_type='int'
netdb_host_type='char *'
netdb_name_type='char *'
netdb_net_type='long'
-nm='nm'
+nm='~ARCHPREFIX~nm'
nm_opt=''
nm_so_opt=''
nonxs_ext='Errno'
@@ -982,7 +987,7 @@ stdio_stream_array=''
strerror_r_proto='0'
strings='/usr/include/string.h'
submit=''
-subversion='~SUBVERSION~'
+subversion='~PERL_SUBVERSION~'
sysman='/usr/man/man1'
tail=''
tar=''
@@ -1072,7 +1077,7 @@ vendorprefix=''
vendorprefixexp=''
vendorscript=''
vendorscriptexp=''
-version='~VERSION~'
+version=''
version_patchlevel_string=''
versiononly='undef'
vi=''
diff --git a/gnu/usr.bin/perl/win32/config_H.ce b/gnu/usr.bin/perl/win32/config_H.ce
index b417ea6ca51..b67a0b03624 100644
--- a/gnu/usr.bin/perl/win32/config_H.ce
+++ b/gnu/usr.bin/perl/win32/config_H.ce
@@ -1050,6 +1050,12 @@
#define BYTEORDER 0x1234 /* large digits for MSB */
#endif /* NeXT */
+/* CHARBITS:
+ * This symbol contains the size of a char, so that the C preprocessor
+ * can make decisions based on it.
+ */
+#define CHARBITS 8 /**/
+
/* CAT2:
* This macro concatenates 2 tokens together.
*/
@@ -1889,9 +1895,16 @@
/* LOCALTIME_R_NEEDS_TZSET:
* Many libc's localtime_r implementations do not call tzset,
* making them differ from localtime(), and making timezone
- * changes using $ENV{TZ} without explicitly calling tzset
+ * changes using \undef{TZ} without explicitly calling tzset
* impossible. This symbol makes us call tzset before localtime_r
*/
+/*#define LOCALTIME_R_NEEDS_TZSET /**/
+#ifdef LOCALTIME_R_NEEDS_TZSET
+#define L_R_TZSET tzset(),
+#else
+#define L_R_TZSET
+#endif
+
/* LOCALTIME_R_PROTO:
* This symbol encodes the prototype of localtime_r.
* It is zero if d_localtime_r is undef, and one of the
@@ -1899,7 +1912,6 @@
* is defined.
*/
/*#define HAS_LOCALTIME_R /**/
-/*#define LOCALTIME_R_NEEDS_TZSET /**/
#define LOCALTIME_R_PROTO 0 /**/
/* HAS_LONG_DOUBLE:
@@ -4420,5 +4432,25 @@
*/
/*#define HAS_TTYNAME_R /**/
#define TTYNAME_R_PROTO 0 /**/
+/* GMTIME_MAX:
+ * This symbol contains the maximum value for the time_t offset that
+ * the system function gmtime () accepts, and defaults to 0
+ */
+/* GMTIME_MIN:
+ * This symbol contains the minimum value for the time_t offset that
+ * the system function gmtime () accepts, and defaults to 0
+ */
+/* LOCALTIME_MAX:
+ * This symbol contains the maximum value for the time_t offset that
+ * the system function localtime () accepts, and defaults to 0
+ */
+/* LOCALTIME_MIN:
+ * This symbol contains the minimum value for the time_t offset that
+ * the system function localtime () accepts, and defaults to 0
+ */
+#define GMTIME_MAX 2147483647 /**/
+#define GMTIME_MIN 0 /**/
+#define LOCALTIME_MAX 2147483647 /**/
+#define LOCALTIME_MIN 0 /**/
#endif
diff --git a/gnu/usr.bin/perl/win32/fcrypt.c b/gnu/usr.bin/perl/win32/fcrypt.c
index 4c9f2733f60..ec689e57dfc 100644
--- a/gnu/usr.bin/perl/win32/fcrypt.c
+++ b/gnu/usr.bin/perl/win32/fcrypt.c
@@ -336,10 +336,10 @@ static int body(
static int
des_set_key(des_cblock *key, des_key_schedule schedule)
{
- register unsigned long c,d,t,s;
- register unsigned char *in;
- register unsigned long *k;
- register int i;
+ unsigned long c,d,t,s;
+ unsigned char *in;
+ unsigned long *k;
+ int i;
k=(unsigned long *)schedule;
in=(unsigned char *)key;
@@ -533,13 +533,13 @@ body( unsigned long *out0,
unsigned long Eswap0,
unsigned long Eswap1)
{
- register unsigned long l,r,t,u,v;
+ unsigned long l,r,t,u,v;
#ifdef ALT_ECB
- register unsigned char *des_SP=(unsigned char *)SPtrans;
+ unsigned char *des_SP=(unsigned char *)SPtrans;
#endif
- register unsigned long *s;
- register int i,j;
- register unsigned long E0,E1;
+ unsigned long *s;
+ int i,j;
+ unsigned long E0,E1;
l=0;
r=0;
diff --git a/gnu/usr.bin/perl/win32/perlhost.h b/gnu/usr.bin/perl/win32/perlhost.h
index e8f5fb4928e..265328b69b7 100644
--- a/gnu/usr.bin/perl/win32/perlhost.h
+++ b/gnu/usr.bin/perl/win32/perlhost.h
@@ -26,11 +26,10 @@
#endif
START_EXTERN_C
-extern char * g_win32_get_privlib(const char *pl, STRLEN *const len);
-extern char * g_win32_get_sitelib(const char *pl, STRLEN *const len);
-extern char * g_win32_get_vendorlib(const char *pl,
- STRLEN *const len);
-extern char * g_getlogin(void);
+extern char * g_win32_get_privlib(const char *pl, STRLEN *const len);
+extern char * g_win32_get_sitelib(const char *pl, STRLEN *const len);
+extern char * g_win32_get_vendorlib(const char *pl, STRLEN *const len);
+extern char * g_getlogin(void);
END_EXTERN_C
class CPerlHost
@@ -1279,8 +1278,7 @@ PerlSockGethostbyname(struct IPerlSock* piPerl, const char* name)
struct hostent*
PerlSockGethostent(struct IPerlSock* piPerl)
{
- dTHX;
- Perl_croak(aTHX_ "gethostent not implemented!\n");
+ win32_croak_not_implemented("gethostent");
return NULL;
}
@@ -1535,13 +1533,13 @@ PerlProcCrypt(struct IPerlProc* piPerl, const char* clear, const char* salt)
return win32_crypt(clear, salt);
}
-void
+PERL_CALLCONV_NO_RET void
PerlProcExit(struct IPerlProc* piPerl, int status)
{
exit(status);
}
-void
+PERL_CALLCONV_NO_RET void
PerlProc_Exit(struct IPerlProc* piPerl, int status)
{
_exit(status);
@@ -1809,8 +1807,8 @@ restart:
int
PerlProcFork(struct IPerlProc* piPerl)
{
- dTHX;
#ifdef USE_ITHREADS
+ dTHX;
DWORD id;
HANDLE handle;
CPerlHost *h;
@@ -1862,7 +1860,7 @@ PerlProcFork(struct IPerlProc* piPerl)
# endif
return -(int)id;
#else
- Perl_croak(aTHX_ "fork() not implemented!\n");
+ win32_croak_not_implemented("fork()");
return -1;
#endif /* USE_ITHREADS */
}
@@ -1894,6 +1892,8 @@ PerlProcSpawnvp(struct IPerlProc* piPerl, int mode, const char *cmdname, const c
int
PerlProcLastHost(struct IPerlProc* piPerl)
{
+ /* this dTHX is unused in an optimized build since CPerlHost::num_hosts
+ is a static */
dTHX;
CPerlHost *h = (CPerlHost*)w32_internal_host;
return h->LastHost();
@@ -2178,7 +2178,6 @@ compare(const void *arg1, const void *arg2)
void
CPerlHost::Add(LPCSTR lpStr)
{
- dTHX;
char szBuffer[1024];
LPSTR *lpPtr;
int index, length = strlen(lpStr)+1;
@@ -2225,14 +2224,12 @@ CPerlHost::CalculateEnvironmentSpace(void)
void
CPerlHost::FreeLocalEnvironmentStrings(LPSTR lpStr)
{
- dTHX;
Safefree(lpStr);
}
char*
CPerlHost::GetChildDir(void)
{
- dTHX;
char* ptr;
size_t length;
@@ -2249,20 +2246,18 @@ CPerlHost::GetChildDir(void)
void
CPerlHost::FreeChildDir(char* pStr)
{
- dTHX;
Safefree(pStr);
}
LPSTR
CPerlHost::CreateLocalEnvironmentStrings(VDir &vDir)
{
- dTHX;
LPSTR lpStr, lpPtr, lpEnvPtr, lpTmp, lpLocalEnv, lpAllocPtr;
DWORD dwSize, dwEnvIndex;
int nLength, compVal;
// get the process environment strings
- lpAllocPtr = lpTmp = (LPSTR)GetEnvironmentStrings();
+ lpAllocPtr = lpTmp = (LPSTR)win32_getenvironmentstrings();
// step over current directory stuff
while(*lpTmp == '=')
@@ -2338,7 +2333,7 @@ CPerlHost::CreateLocalEnvironmentStrings(VDir &vDir)
}
// release the process environment strings
- FreeEnvironmentStrings(lpAllocPtr);
+ win32_freeenvironmentstrings(lpAllocPtr);
return lpPtr;
}
@@ -2346,7 +2341,6 @@ CPerlHost::CreateLocalEnvironmentStrings(VDir &vDir)
void
CPerlHost::Reset(void)
{
- dTHX;
if(m_lppEnvList != NULL) {
for(DWORD index = 0; index < m_dwEnvCount; ++index) {
Free(m_lppEnvList[index]);
@@ -2361,7 +2355,6 @@ CPerlHost::Reset(void)
void
CPerlHost::Clearenv(void)
{
- dTHX;
char ch;
LPSTR lpPtr, lpStr, lpEnvPtr;
if (m_lppEnvList != NULL) {
@@ -2375,7 +2368,7 @@ CPerlHost::Clearenv(void)
}
/* get the process environment strings */
- lpStr = lpEnvPtr = (LPSTR)GetEnvironmentStrings();
+ lpStr = lpEnvPtr = (LPSTR)win32_getenvironmentstrings();
/* step over current directory stuff */
while(*lpStr == '=')
@@ -2394,14 +2387,13 @@ CPerlHost::Clearenv(void)
lpStr += strlen(lpStr) + 1;
}
- FreeEnvironmentStrings(lpEnvPtr);
+ win32_freeenvironmentstrings(lpEnvPtr);
}
char*
CPerlHost::Getenv(const char *varname)
{
- dTHX;
if (!m_bTopLevel) {
char *pEnv = Find(varname);
if (pEnv && *pEnv)
@@ -2413,7 +2405,6 @@ CPerlHost::Getenv(const char *varname)
int
CPerlHost::Putenv(const char *envstring)
{
- dTHX;
Add(envstring);
if (m_bTopLevel)
return win32_putenv(envstring);
@@ -2424,7 +2415,6 @@ CPerlHost::Putenv(const char *envstring)
int
CPerlHost::Chdir(const char *dirname)
{
- dTHX;
int ret;
if (!dirname) {
errno = ENOENT;
diff --git a/gnu/usr.bin/perl/win32/vmem.h b/gnu/usr.bin/perl/win32/vmem.h
index 460f55793a8..d691635db59 100644
--- a/gnu/usr.bin/perl/win32/vmem.h
+++ b/gnu/usr.bin/perl/win32/vmem.h
@@ -9,8 +9,8 @@
* Options:
*
* Defining _USE_MSVCRT_MEM_ALLOC will cause all memory allocations
- * to be forwarded to MSVCRT.DLL. Defining _USE_LINKED_LIST as well will
- * track all allocations in a doubly linked list, so that the host can
+ * to be forwarded to the compiler's MSVCR*.DLL. Defining _USE_LINKED_LIST as
+ * well will track all allocations in a doubly linked list, so that the host can
* free all memory allocated when it goes away.
* If _USE_MSVCRT_MEM_ALLOC is not defined then Knuth's boundary tag algorithm
* is used; defining _USE_BUDDY_BLOCKS will use Knuth's algorithm R
@@ -65,13 +65,10 @@ inline void MEMODSlx(char *str, long x)
#endif
/*
- * Pass all memory requests throught to msvcrt.dll
- * optionaly track by using a doubly linked header
+ * Pass all memory requests through to the compiler's msvcr*.dll.
+ * Optionaly track by using a doubly linked header.
*/
-typedef void (*LPFREE)(void *block);
-typedef void* (*LPMALLOC)(size_t size);
-typedef void* (*LPREALLOC)(void *block, size_t size);
#ifdef _USE_LINKED_LIST
class VMem;
typedef struct _MemoryBlockHeader* PMEMORY_BLOCK_HEADER;
@@ -87,14 +84,14 @@ class VMem
public:
VMem();
~VMem();
- virtual void* Malloc(size_t size);
- virtual void* Realloc(void* pMem, size_t size);
- virtual void Free(void* pMem);
- virtual void GetLock(void);
- virtual void FreeLock(void);
- virtual int IsLocked(void);
- virtual long Release(void);
- virtual long AddRef(void);
+ void* Malloc(size_t size);
+ void* Realloc(void* pMem, size_t size);
+ void Free(void* pMem);
+ void GetLock(void);
+ void FreeLock(void);
+ int IsLocked(void);
+ long Release(void);
+ long AddRef(void);
inline BOOL CreateOk(void)
{
@@ -121,30 +118,20 @@ protected:
}
MEMORY_BLOCK_HEADER m_Dummy;
+ CRITICAL_SECTION m_cs; // access lock
#endif
long m_lRefCount; // number of current users
- CRITICAL_SECTION m_cs; // access lock
- HINSTANCE m_hLib;
- LPFREE m_pfree;
- LPMALLOC m_pmalloc;
- LPREALLOC m_prealloc;
};
VMem::VMem()
{
m_lRefCount = 1;
- InitializeCriticalSection(&m_cs);
#ifdef _USE_LINKED_LIST
+ InitializeCriticalSection(&m_cs);
m_Dummy.pNext = m_Dummy.pPrev = &m_Dummy;
m_Dummy.owner = this;
#endif
- m_hLib = LoadLibrary("msvcrt.dll");
- if (m_hLib) {
- m_pfree = (LPFREE)GetProcAddress(m_hLib, "free");
- m_pmalloc = (LPMALLOC)GetProcAddress(m_hLib, "malloc");
- m_prealloc = (LPREALLOC)GetProcAddress(m_hLib, "realloc");
- }
}
VMem::~VMem(void)
@@ -153,17 +140,15 @@ VMem::~VMem(void)
while (m_Dummy.pNext != &m_Dummy) {
Free(m_Dummy.pNext+1);
}
-#endif
- if (m_hLib)
- FreeLibrary(m_hLib);
DeleteCriticalSection(&m_cs);
+#endif
}
void* VMem::Malloc(size_t size)
{
#ifdef _USE_LINKED_LIST
GetLock();
- PMEMORY_BLOCK_HEADER ptr = (PMEMORY_BLOCK_HEADER)m_pmalloc(size+sizeof(MEMORY_BLOCK_HEADER));
+ PMEMORY_BLOCK_HEADER ptr = (PMEMORY_BLOCK_HEADER)malloc(size+sizeof(MEMORY_BLOCK_HEADER));
if (!ptr) {
FreeLock();
return NULL;
@@ -172,7 +157,7 @@ void* VMem::Malloc(size_t size)
FreeLock();
return (ptr+1);
#else
- return m_pmalloc(size);
+ return malloc(size);
#endif
}
@@ -190,7 +175,7 @@ void* VMem::Realloc(void* pMem, size_t size)
GetLock();
PMEMORY_BLOCK_HEADER ptr = (PMEMORY_BLOCK_HEADER)(((char*)pMem)-sizeof(MEMORY_BLOCK_HEADER));
UnlinkBlock(ptr);
- ptr = (PMEMORY_BLOCK_HEADER)m_prealloc(ptr, size+sizeof(MEMORY_BLOCK_HEADER));
+ ptr = (PMEMORY_BLOCK_HEADER)realloc(ptr, size+sizeof(MEMORY_BLOCK_HEADER));
if (!ptr) {
FreeLock();
return NULL;
@@ -200,7 +185,7 @@ void* VMem::Realloc(void* pMem, size_t size)
return (ptr+1);
#else
- return m_prealloc(pMem, size);
+ return realloc(pMem, size);
#endif
}
@@ -212,9 +197,8 @@ void VMem::Free(void* pMem)
if (ptr->owner != this) {
if (ptr->owner) {
#if 1
- dTHX;
int *nowhere = NULL;
- Perl_warn(aTHX_ "Free to wrong pool %p not %p",this,ptr->owner);
+ Perl_warn_nocontext("Free to wrong pool %p not %p",this,ptr->owner);
*nowhere = 0; /* this segfault is deliberate,
so you can see the stack trace */
#else
@@ -226,22 +210,26 @@ void VMem::Free(void* pMem)
GetLock();
UnlinkBlock(ptr);
ptr->owner = NULL;
- m_pfree(ptr);
+ free(ptr);
FreeLock();
}
-#else
- m_pfree(pMem);
+#else /*_USE_LINKED_LIST*/
+ free(pMem);
#endif
}
void VMem::GetLock(void)
{
+#ifdef _USE_LINKED_LIST
EnterCriticalSection(&m_cs);
+#endif
}
void VMem::FreeLock(void)
{
+#ifdef _USE_LINKED_LIST
LeaveCriticalSection(&m_cs);
+#endif
}
int VMem::IsLocked(void)
@@ -413,14 +401,14 @@ class VMem
public:
VMem();
~VMem();
- virtual void* Malloc(size_t size);
- virtual void* Realloc(void* pMem, size_t size);
- virtual void Free(void* pMem);
- virtual void GetLock(void);
- virtual void FreeLock(void);
- virtual int IsLocked(void);
- virtual long Release(void);
- virtual long AddRef(void);
+ void* Malloc(size_t size);
+ void* Realloc(void* pMem, size_t size);
+ void Free(void* pMem);
+ void GetLock(void);
+ void FreeLock(void);
+ int IsLocked(void);
+ long Release(void);
+ long AddRef(void);
inline BOOL CreateOk(void)
{
diff --git a/gnu/usr.bin/perl/win32/win32iop-o.h b/gnu/usr.bin/perl/win32/win32iop-o.h
index 6633f7a76ba..2b766dc5540 100644
--- a/gnu/usr.bin/perl/win32/win32iop-o.h
+++ b/gnu/usr.bin/perl/win32/win32iop-o.h
@@ -16,11 +16,7 @@
#endif
#ifndef UNDER_CE
-#if defined(_MSC_VER) || defined(__MINGW32__)
-# include <sys/utime.h>
-#else
-# include <utime.h>
-#endif
+#include <sys/utime.h>
#endif
/*
diff --git a/gnu/usr.bin/perl/win32/wince.c b/gnu/usr.bin/perl/win32/wince.c
index 8a8721951bb..a1e810d82aa 100644
--- a/gnu/usr.bin/perl/win32/wince.c
+++ b/gnu/usr.bin/perl/win32/wince.c
@@ -73,14 +73,14 @@ static BOOL filetime_from_time(PFILETIME ft, time_t t);
static char * get_emd_part(SV **leading, STRLEN *const len,
char *trailing, ...);
static void remove_dead_process(long deceased);
-static long find_pid(int pid);
+static long find_pid(pTHX_ int pid);
static char * qualified_path(const char *cmd);
static char * win32_get_xlib(const char *pl, const char *xlib,
const char *libname, STRLEN *const len);
#ifdef USE_ITHREADS
static void remove_dead_pseudo_process(long child);
-static long find_pseudo_pid(int pid);
+static long find_pseudo_pid(pTHX_ int pid);
#endif
int _fmode = O_TEXT; /* celib do not provide _fmode, so we define it here */
@@ -261,8 +261,6 @@ win32_get_xlib(const char *pl, const char *xlib, const char *libname,
dTHX;
char regstr[40];
char pathstr[MAX_PATH+1];
- DWORD datalen;
- int len, newsize;
SV *sv1 = NULL;
SV *sv2 = NULL;
@@ -417,8 +415,8 @@ tokenize(const char *str, char **dest, char ***destv)
if (str) {
dTHX;
int slen = strlen(str);
- register char *ret;
- register char **retv;
+ char *ret;
+ char **retv;
Newx(ret, slen+2, char);
Newx(retv, (slen+3)/2, char*);
@@ -893,6 +891,52 @@ win32_longpath(char *path)
return path;
}
+static void
+out_of_memory(void)
+{
+ if (PL_curinterp) {
+ dTHX;
+ /* Can't use PerlIO to write as it allocates memory */
+ PerlLIO_write(PerlIO_fileno(Perl_error_log),
+ PL_no_mem, strlen(PL_no_mem));
+ my_exit(1);
+ }
+ exit(1);
+}
+
+/* The win32_ansipath() function takes a Unicode filename and converts it
+ * into the current Windows codepage. If some characters cannot be mapped,
+ * then it will convert the short name instead.
+ *
+ * The buffer to the ansi pathname must be freed with win32_free() when it
+ * it no longer needed.
+ *
+ * The argument to win32_ansipath() must exist before this function is
+ * called; otherwise there is no way to determine the short path name.
+ *
+ * Ideas for future refinement:
+ * - Only convert those segments of the path that are not in the current
+ * codepage, but leave the other segments in their long form.
+ * - If the resulting name is longer than MAX_PATH, start converting
+ * additional path segments into short names until the full name
+ * is shorter than MAX_PATH. Shorten the filename part last!
+ */
+DllExport char *
+win32_ansipath(const WCHAR *widename)
+{
+ char *name;
+ size_t widelen = wcslen(widename)+1;
+ int len = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, widename, widelen,
+ NULL, 0, NULL, NULL);
+ name = win32_malloc(len);
+ if (!name)
+ out_of_memory();
+
+ WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, widename, widelen,
+ name, len, NULL, NULL);
+ return name;
+}
+
DllExport char *
win32_getenv(const char *name)
{
@@ -2734,12 +2778,6 @@ getcwd(char *buf, size_t size)
return xcegetcwd(buf, size);
}
-int
-isnan(double d)
-{
- return _isnan(d);
-}
-
DllExport PerlIO*
win32_popenlist(const char *mode, IV narg, SV **args)